<?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>233677</bug_id>
          
          <creation_ts>2021-11-30 20:20:53 -0800</creation_ts>
          <short_desc>Distinguish contiguous SharedBuffer from non-contiguous one and guarantee immutability: part 3</short_desc>
          <delta_ts>2021-12-14 02:49:26 -0800</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 Misc.</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>233030</dependson>
    
    <dependson>233442</dependson>
          <blocked>233865</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jean-Yves Avenard [:jya]">jean-yves.avenard</reporter>
          <assigned_to name="Jean-Yves Avenard [:jya]">jean-yves.avenard</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jbedard</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>macpherson</cc>
    
    <cc>mark.lam</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>tzagallo</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1819063</commentid>
    <comment_count>0</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-11-30 20:20:53 -0800</bug_when>
    <thetext>This is part 3 of bug 233030 and As per https://bugs.webkit.org/show_bug.cgi?id=233030#c40

SharedBuffer base class will be renamed FragmentedSharedBuffer
ContiguousSharedBuffer will be renamed SharedBuffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819639</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-02 03:20:57 -0800</bug_when>
    <thetext>&lt;rdar://problem/85963900&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819642</commentid>
    <comment_count>2</comment_count>
      <attachid>445700</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-02 03:35:32 -0800</bug_when>
    <thetext>Created attachment 445700
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819643</commentid>
    <comment_count>3</comment_count>
      <attachid>445701</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-02 03:41:18 -0800</bug_when>
    <thetext>Created attachment 445701
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819644</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-12-02 03:42:24 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820087</commentid>
    <comment_count>5</comment_count>
      <attachid>445834</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 03:52:14 -0800</bug_when>
    <thetext>Created attachment 445834
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820093</commentid>
    <comment_count>6</comment_count>
      <attachid>445838</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 04:09:53 -0800</bug_when>
    <thetext>Created attachment 445838
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820121</commentid>
    <comment_count>7</comment_count>
      <attachid>445849</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 07:23:32 -0800</bug_when>
    <thetext>Created attachment 445849
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820123</commentid>
    <comment_count>8</comment_count>
      <attachid>445850</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 07:25:44 -0800</bug_when>
    <thetext>Created attachment 445850
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820381</commentid>
    <comment_count>9</comment_count>
      <attachid>445929</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 17:16:34 -0800</bug_when>
    <thetext>Created attachment 445929
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820384</commentid>
    <comment_count>10</comment_count>
      <attachid>445931</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 17:24:55 -0800</bug_when>
    <thetext>Created attachment 445931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820417</commentid>
    <comment_count>11</comment_count>
      <attachid>445947</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-03 20:09:13 -0800</bug_when>
    <thetext>Created attachment 445947
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820468</commentid>
    <comment_count>12</comment_count>
      <attachid>445971</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-04 17:18:57 -0800</bug_when>
    <thetext>Created attachment 445971
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820527</commentid>
    <comment_count>13</comment_count>
      <attachid>445998</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-05 22:43:19 -0800</bug_when>
    <thetext>Created attachment 445998
Patch

Fix test failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820528</commentid>
    <comment_count>14</comment_count>
      <attachid>445999</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-05 22:44:43 -0800</bug_when>
    <thetext>Created attachment 445999
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820539</commentid>
    <comment_count>15</comment_count>
      <attachid>446006</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-05 23:27:18 -0800</bug_when>
    <thetext>Created attachment 446006
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820540</commentid>
    <comment_count>16</comment_count>
      <attachid>446006</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-05 23:27:55 -0800</bug_when>
    <thetext>Comment on attachment 446006
Patch for EWS

this patch is for another bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820577</commentid>
    <comment_count>17</comment_count>
      <attachid>446026</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-06 04:37:29 -0800</bug_when>
    <thetext>Created attachment 446026
Patch for EWS

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820578</commentid>
    <comment_count>18</comment_count>
      <attachid>446027</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-06 04:39:07 -0800</bug_when>
    <thetext>Created attachment 446027
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820934</commentid>
    <comment_count>19</comment_count>
      <attachid>446135</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-07 01:23:51 -0800</bug_when>
    <thetext>Created attachment 446135
Patch

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820935</commentid>
    <comment_count>20</comment_count>
      <attachid>446136</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-07 01:25:15 -0800</bug_when>
    <thetext>Created attachment 446136
Patch for EWS

rebase following changes in bug 233030</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820976</commentid>
    <comment_count>21</comment_count>
      <attachid>446153</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-07 04:12:40 -0800</bug_when>
    <thetext>Created attachment 446153
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820977</commentid>
    <comment_count>22</comment_count>
      <attachid>446153</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-07 04:15:08 -0800</bug_when>
    <thetext>Comment on attachment 446153
Patch for EWS

webkit-patch is getting confused by those patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822085</commentid>
    <comment_count>23</comment_count>
      <attachid>446528</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-09 05:36:22 -0800</bug_when>
    <thetext>Created attachment 446528
Patch for EWS

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822101</commentid>
    <comment_count>24</comment_count>
      <attachid>446535</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-09 06:24:36 -0800</bug_when>
    <thetext>Created attachment 446535
Patch for EWS

rebase 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822102</commentid>
    <comment_count>25</comment_count>
      <attachid>446536</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-09 06:26:34 -0800</bug_when>
    <thetext>Created attachment 446536
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823542</commentid>
    <comment_count>26</comment_count>
      <attachid>447006</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-13 08:34:53 -0800</bug_when>
    <thetext>Created attachment 447006
Patch for EWS

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823543</commentid>
    <comment_count>27</comment_count>
      <attachid>447007</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-13 08:36:34 -0800</bug_when>
    <thetext>Created attachment 447007
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823550</commentid>
    <comment_count>28</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-12-13 08:53:35 -0800</bug_when>
    <thetext>r=me once bots are happy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823811</commentid>
    <comment_count>29</comment_count>
      <attachid>447077</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-13 15:52:20 -0800</bug_when>
    <thetext>Created attachment 447077
Patch

fix bad earlier rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823834</commentid>
    <comment_count>30</comment_count>
      <attachid>447083</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-13 16:30:04 -0800</bug_when>
    <thetext>Created attachment 447083
Patch

ios build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823904</commentid>
    <comment_count>31</comment_count>
      <attachid>447107</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-13 21:45:58 -0800</bug_when>
    <thetext>Created attachment 447107
Patch

fix rebase error, side fix to GStreamerEMEUtilities and clients, checking for null</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823925</commentid>
    <comment_count>32</comment_count>
      <attachid>447107</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-12-14 00:36:18 -0800</bug_when>
    <thetext>Comment on attachment 447107
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebCore/SharedBuffer.cpp:44
&gt; +TEST_F(FragmentedSharedBufferTest, createWithContentsOfMissingFile)

Are some of these tests worth being duplicated for SharedBuffer as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823941</commentid>
    <comment_count>33</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-14 02:14:36 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #32)
&gt; Comment on attachment 447107 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=447107&amp;action=review
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebCore/SharedBuffer.cpp:44
&gt; &gt; +TEST_F(FragmentedSharedBufferTest, createWithContentsOfMissingFile)
&gt; 
&gt; Are some of these tests worth being duplicated for SharedBuffer as well?

Thanks for the review. 

I don’t see much values in having extra tests specifically for contiguous buffer no.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823951</commentid>
    <comment_count>34</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-14 02:49:16 -0800</bug_when>
    <thetext>Committed r287021 (245226@main): &lt;https://commits.webkit.org/245226@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447107.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445700</attachid>
            <date>2021-12-02 03:35:32 -0800</date>
            <delta_ts>2021-12-02 03:41:09 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-233677-20211202223528.patch</filename>
            <type>text/plain</type>
            <size>1041792</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MjBkZDg0ZmRhMjUyNjNiMzhmMDMzZWJhZDAzNzBkYTk2YjRhOTQ0Li42ZjFkYmJiMzM5NTEyN2U4
OGNlNmRjN2ViYjI3NDE3ODU3MTJhOGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9u
LWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9BcnJh
eUJ1ZmZlci5oOgorCiAyMDIxLTEyLTAxICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6
QGlnYWxpYS5jb20+CiAKICAgICAgICAgTm9uLXVuaWZpZWQgYnVpbGQgZml4ZXMsIGVhcmx5IERl
Y2VtYmVyIDIwMjEgZWRpdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDkxNDFmNjk4ZGFmMmEyNDlmMDNhYTY2
NTQwN2QwOGFjZWQ3MGZmNzAuLjc1YTE5N2ZiZDFlNGQ5MDliZTM3MDVmZGJkOWRiNzk1ZmI1YzQz
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzA1IEBACisyMDIxLTEyLTAyICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91
cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11
dGFiaWxpdHk6IHBhcnQgMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNjc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6Omludm9rZUNvbXBs
ZXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2Fy
ZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVy
KToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVh
ZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNOjpzYW5pdGl6ZUluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkNETTo6c3VwcG9ydHNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE06OnNhbml0aXpl
UmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmg6CisgICAg
ICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtleWlk
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJveGVz
RnJvbUNlbmMpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtl
eUlEc0NlbmMpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVD
ZW5jKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplV2ViTSk6CisgICAgICAgIChXZWJDb3Jl
OjpleHRyYWN0S2V5SURzV2ViTSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5
OjpzYW5pdGl6ZUluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhUmVnaXN0cnk6
OmV4dHJhY3RLZXlJRHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERh
dGFSZWdpc3RyeS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
ZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmtleUlkc01hdGNo
KToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmg6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFLZXlzOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQp
OgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmg6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoTG9hZGVyOjpzdGFydFN0cmVhbWluZyk6CisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpz
dGFydFN0cmVhbWluZyk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6
CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBIaWdobGlnaHQ6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hs
aWdodFJhbmdlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJh
bmdlRGF0YTo6dG9TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0
U3RvcmFnZTo6cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KToKKyAgICAgICAgKiBNb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmg6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
RGF0YUF2YWlsYWJsZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlGaW5p
c2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlclRpbWVyRmlyZWQpOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmg6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpzZW5kU3RyaW5nRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnNlbmRS
YXdEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybUZyYW1lKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
OjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyOjpPbk1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbVNpbmsuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXIpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAg
ICAgICogZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmg6CisgICAgICAgICogZWRpdGluZy9XZWJD
b3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVBh
c3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENv
bnZlcnRlci5tbToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAgICog
ZWRpdGluZy9jb2NvYS9XZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3RyaW5nLm1t
OgorICAgICAgICAoV2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUpOgorICAgICAgICAq
IGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJl
YWRlcjo6cmVhZFdlYkFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1
cFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJl
YWRlcjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRl
cjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJU
Rik6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjphdHRhY2htZW50Rm9yRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250
ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcik6CisgICAgICAgICogZWRpdGluZy9ndGsvV2ViQ29u
dGVudFJlYWRlckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpy
ZWFkSW1hZ2UpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5oOgorICAgICAgICAqIGZpbGVhcGkv
TmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU2VuZFF1ZXVl
OjplbnF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTZW5kUXVldWU6OnByb2Nlc3NN
ZXNzYWdlcyk6CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmg6CisgICAgICAg
ICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKToKKyAgICAg
ICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjZG1D
bGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKToKKyAgICAg
ICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1
bWVudDo6dXBkYXRlRHVyaW5nUGFyc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3Vt
ZW50OjpmaW5pc2hlZFBhcnNpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjppbnRlcmNlcHRSZXNwb25zZUltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3Bv
bnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hhcmVkQnVm
ZmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmJ1ZmZlciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjpzZXRCdWZmZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
aW50ZXJjZXB0UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2U6OlBlbmRp
bmdJbnRlcmNlcHRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OlBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZTo6cmVzcG9uZCk6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBsb2FkZXIv
Q29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpoYW5k
bGVQcm92aXNpb25hbExvYWRGYWlsdXJlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURh
dGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJj
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hM
b2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwpOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Mb2FkZXJT
dHJhdGVneS5oOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcik6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6bG9hZERhdGFVUkwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6
OmFkZERhdGFPckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVz
b3VyY2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlRGF0
YS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlN1YnN0aXR1dGVEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpjb250ZW50IGNvbnN0KToKKyAgICAg
ICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJz
dGl0dXRlUmVzb3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0
ZVJlc291cmNlOjpTdWJzdGl0dXRlUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UpOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0
b3J5KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjphcmNoaXZlRmFjdG9yeUNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcmNo
aXZlRmFjdG9yeTo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFj
dG9yeS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVy
L2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGUpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaDoK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TUhUTUxBcmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TUhU
TUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxBcmNoaXZlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAgICAg
ICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
Q1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVm
ZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERh
dGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZEltYWdlOjpkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNv
dXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRT
VkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6
ZG9VcGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjp1cGRh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdD
b252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3
TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNlKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNs
aWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1l
bnRJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bh
c3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlQ
bGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Ondy
aXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1
ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9y
RWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Bh
c3RlYm9hcmRDdXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0
ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjphcHBlbmRGcm9tQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6
OmRlbGVnYXRlRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbWJp
bmVTZWdtZW50c0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6Y29weURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnNpemUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9yRWFj
aFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6c3RhcnRzV2l0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpyZWFkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNvcHlUbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpoYXNPbmVTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5l
ZWRlZFNvb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3IhPSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVpbGRlcik6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpnZXQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Y29weSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1N0YXRp
Y1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RhdGljUGFzdGVib2FyZDo6d3Jp
dGVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmg6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5v
d1BsYXlpbmdJbmZvQXJ0d29yazo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Zp
bGVSZWFkZXI6OmRlbXV4V2ViTURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1No
YXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6
cmVwbGFjZW1lbnREYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJv
YXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VElGRlRvUE5HKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleVN0b3JlOjpjb252ZXJ0
VG9KU0tleVN0YXR1c1ZlY3RvciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OktleUhhbmRsZTo6aWRBc1NoYXJl
ZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRp
bGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2Jq
ZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmlzQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0
ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDRE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vu
c2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlbW92
ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVy
R2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpzZXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2U6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRhdGEgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6SW1hZ2VCYWNraW5nU3RvcmUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNv
ZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OnJlc2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6OmRhdGFS
ZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNrZCk6
CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RL
ZXlJRHNTa2QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemF0aW9uRGF0YUZvclJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4cGVj
dGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpw
YXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25Gb3JLZXlJRHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6a2V5SURzRm9yUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RM
aWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzRXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjbG9zZVNlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVT
ZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
cXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2Rl
ckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVy
QVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3Rh
bmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlh
TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzaGFyZWRCdWZmZXJSZWxlYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNH
OjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6c2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnJl
YWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50
Ojp0YWtlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
cjo6U2VnbWVudDo6Z2V0U2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjphcHBlbmQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyV3JpdGluZ0NsaWVu
dDo6ZW5jb2RlSXRlbU91dE9mTGluZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnJlbGVhc2VDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q3VzdG9tUGxhdGZvcm1EYXRhOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1l
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3Vy
Y2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6
OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9DRE1Qcm94eUNsZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVUaHVu
ZGVyOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZh
dGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcik6
CisgICAgICAgIChXZWJDb3JlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2U6OlBhcnNlZFJlc3BvbnNl
TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2U6OnBheWxv
YWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpwYXls
b2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmNoYWxs
ZW5nZUdlbmVyYXRlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRp
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6SW5pdERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2FkSW1h
Z2VGcm9tR1Jlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFn
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3Qy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6QVZJRkltYWdlUmVhZGVyOjpkZWNvZGVGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1h
Z2VSZWFkZXI6OnJlYWRVaW50MTYpOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6
OnJlYWRVaW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OnNldERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0
b3JlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3RvcmU6OmltYWdl
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VE
ZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5o
OgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdl
RGVjb2Rlcjo6c2V0RGF0YUZvclBOR0RlY29kZXJBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpQRUdJbWFnZVJlYWRlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKUEVHMjAwMEltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBOR0ltYWdlUmVhZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXRUJQ
SW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldFQlBJbWFnZURlY29k
ZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQ
SW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRlbnRE
YXRhRm9yVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9y
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25M
aXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbToKKyAg
ICAgICAgKC1bV2ViUHJldmlld0NvbnZlcnRlckRlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2
ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjp3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNo
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Q
YXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBh
c3RlYm9hcmRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJpdmF0ZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclBy
aXZhdGVNb2NrOjpmZXRjaERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlY2VpdmVEYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNl
aXZlZCk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpy
ZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpyZWFkQ2FjaGVk
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUNhbGxiYWNrKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5k
bGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpoYW5kbGVEYXRh
VVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Ojpk
aWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW06CisgICAgICAgICgtW1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSBjb25uZWN0aW9uOmRp
ZFJlY2VpdmVEYXRhOmxlbmd0aFJlY2VpdmVkOl0pOgorICAgICAgICAqIHBsYXRmb3JtL3Bvc2l4
L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vd2lu
L1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSW1hZ2VG
aWxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVJbWFnZVRvRGF0YU9iamVjdCk6
CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRCk6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25E
YXRhKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5Lmg6CisgICAgICAgICogdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyLmg6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjplbXB0eSk6CisgICAgICAgICogd29ya2Vycy9T
Y3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoOjpwcm9jZXNzUmVzcG9uc2UpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
U1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBj
bGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMz
NDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFNpbWlsYXIgdG8gU3RyaW5nQnVpbGRlciwgYSBTaGFyZWRC
dWZmZXIgY2FuIG5vdyBvbmx5IGJlIG1vZGlmaWVkIHRocm91Z2gKKyAgICAgICAgYSBTaGFyZWRC
dWZmZXJCdWlsZGVyLiBBIFNoYXJlZEJ1ZmZlciBiZWNvbWVzIGltbXV0YWJsZSBvbmNlIGNyZWF0
ZWQuCisKKyAgICAgICAgRmx5LUJ5OiBQYXNzIFNoYXJlZEJ1ZmZlciB2aWEgY29uc3QgcmVmZXJl
bmNlcyBvciBwb2ludGVycyB3aGVyZSBpdCdzIGVhc3kKKyAgICAgICAgdG8gZG8gc28uCisgICAg
ICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91cjsgY292ZXJlZCBieSBleGlzdGlu
ZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNo
ZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpjbGVhbik6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNv
bnN1bWVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0
YWtlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJy
YXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Js
b2IpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZSk6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Q29uc3VtZXI6OnNldERhdGEpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2Rl
bEVsZW1lbnQ6OnNldFNvdXJjZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVt
ZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6
bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
OlJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YTo6aGFzQnVmZmVyZWREYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeSk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpy
ZXNvdXJjZURhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRl
UmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGF0YSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRG
b250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVy
dGVkRGF0YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1
cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJh
d1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0
VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRY
U0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRT
dGFydENvbnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6
cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZl
cnRlcjo6cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZl
cnRlcjo6cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVm
ZmVyQnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9v
bCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVp
bGRlcjo6ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9j
bGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRz
RnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2Vi
TUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJ
blNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJ
bml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVy
dGVySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0Nv
bnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6dGFrZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNw
b25zZUdlbmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0
b3I6OkRhdGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRv
cjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9t
RGF0YSk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0QnVmZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZm
ZXI6OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVm
ZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0
dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNw
b25zZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFy
UmVzcG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKKzIwMjEtMTEt
MjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5n
dWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQg
Z3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gY2FsbGluZyBTaGFy
ZWRCdWZmZXI6OmRhdGEoKSB0aGUgdW5kZXJseWluZyBkYXRhIHdhcyBmbGF0dGVuZWQsCisgICAg
ICAgIGFuZCBzbyBjb3VsZCBiZSBtdXRhdGVkIHdoaWxlIGJlaW5nIHNoYXJlZC4gVGhpcyB3YXMg
YW4gdW5kZXNpcmFibGUKKyAgICAgICAgYmVoYXZpb3VyLgorICAgICAgICBXZSBpbnRyb2R1Y2Ug
Q29udGlndW91c1NoYXJlZEJ1ZmZlciB3aGljaCBndWFyYW50ZWUgdGhhdCBpdHMgY29udGVudCBp
cyBtYWRlCisgICAgICAgIG9mIGNvbnRpZ3VvdXMgZGF0YS4KKyAgICAgICAgQWxsIG1ldGhvZHMg
dGhhdCB3b3VsZCBoYXZlIG11dGF0ZWQgYSBTaGFyZWRCdWZmZXIgd2hlbiBiZWluZyBmbGF0dGVu
ZWQgYXJlCisgICAgICAgIG1vdmVkIHRvIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisKKyAgICAg
ICAgQXJlYSB3aGVyZSBTaGFyZWRCdWZmZXJzIHdlcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBhIHNp
bmdsZSBzZWdtZW50IHdoZXJlCisgICAgICAgIGNvbnZlcnRlZCB0byBhIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIuCisgICAgICAgIFByZXZpb3VzbHksIGEgU2hhcmVkQnVmZmVyIHdvdWxkIGhhdmUg
YmVlbiBmbGF0dGVuZWQgb25seSBpZiBpdCBuZWVkZWQgdG8gYmUKKyAgICAgICAgYW5kIG9ubHkg
d2hlbiB0aGUgZGF0YSB3YXMgZ29pbmcgdG8gYmUgYWNjZXNzZWQ7IGZvbGxvd2luZyB0aGlzIGNo
YW5nZQorICAgICAgICB0aGUgY29udmVyc2lvbiBpcyBub3cgZXhwbGljdGx5IGRvbmUgdGhyb3Vn
aCBhIGNhbGwgdG8gbWFrZUNvbnRpZ3VvdXMuCisgICAgICAgIFRoaXMgY29udmVyc2lvbiBpcyBh
IG5vLW9wIGlmIHRoZSBTaGFyZWRCdWZmZXIgYmVpbmcgY29udmVydGVkIHdhcyBhbHJlYWR5Cisg
ICAgICAgIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgV2l0aCB0aGUgbmF0dXJl
IG9mIGEgU2hhcmVkQnVmZmVyIGJlaW5nIHNoYXJlZCBieSBwb3RlbnRpYWxseSBtdWx0aXBsZQor
ICAgICAgICB1c2VycyBpdCB3YXMgbmVjZXNzYXJ5IHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgY29u
dmVyc2lvbnMgYmVpbmcgcGVyZm9ybWVkCisgICAgICAgIG9uIGRlbWFuZCB0byBhdm9pZCByZWR1
bmRhbmN5LgorICAgICAgICBXaGVuIHRoZSBmbGF0dGVuaW5nIGNvdWxkIGhhdmUgb2NjdXJlZCwg
dGhlIFNoYXJlZEJ1ZmZlciBjcmVhdGlvbiBwb2ludHMgd2VyZQorICAgICAgICB0cmFjZWQgYmFj
ayBhbmQgaWRlbnRpZmllZCB0byBtYWtlIHRoZSBidWZmZXIgY29udGlndW91cyB0aGVuLgorICAg
ICAgICBJbiB0aGUgZW5kLCB0aGVyZSdzIG5vIG1vcmUgU2hhcmVkQnVmZmVyIGZsYXR0ZW5pbmcg
b3BlcmF0aW9ucyB0aGFuIHRoZXJlCisgICAgICAgIHdvdWxkIGhhdmUgYmVlbiBiZWZvcmUgdGhp
cyBjaGFuZ2UuCisgICAgICAgIFRoZXJlJ3MgYSBwb3RlbnRpYWwgaW5jcmVhc2Ugb2YgdGVtcG9y
YXJ5IG1lbW9yeSB1c2FnZSB3aXRoIHRoZQorICAgICAgICBTY3JpcHRCdWZmZXJTb3VyY2VQcm92
aWRlciBjbGFzczsgYnVnIDIzMzUxMSBpcyB0cmFja2luZyBpdC4KKworICAgICAgICBXaGlsZSB0
aGUgY2hhbmdlIGlzIGV4dGVuc2l2ZSwgY29kZSBjb3ZlcmFnZSBvZiB0aGUgbW9kaWZpZWQgYXJl
YXMgaXMgdGhvcm91Z2gKKyAgICAgICAgd2hpY2ggbWFrZXMgdW5kZXRlY3RlZCByZWdyZXNzaW9u
cyB1bmxpa2VseS4KKworICAgICAgICBJbiBidWcgMjMzNDQyLCBhIFNoYXJlZEJ1ZmZlciB3aWxs
IGJlIG1hZGUgY29tcGxldGVseSBpbW11dGFibGUgb25jZSBjcmVhdGVkLgorCisgICAgICAgIE5v
IG9ic2VydmFibGUgY2hhbmdlLgorICAgICAgICBDb3ZlcmVkIGJ5IGFsbCBleGlzdGluZyB0ZXN0
cy4gTmV3IEFQSSB0ZXN0cyBjcmVhdGRlZC4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVM
b2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToKKyAgICAgICAg
KiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hl
OjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVzcG9u
c2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9uc2VC
b2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAg
ICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRp
emVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0
dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBNb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNv
bnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1E
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
OjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNU
ZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5r
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRS
YW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpj
cmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVP
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxp
dGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRl
eFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5j
aGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4
U3RhdGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6Cisg
ICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAg
ICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNE
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb1RlbXBvcmFyeUZpbGUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhh
bmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAg
ICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8p
OgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TZXJpYWxp
emVkQXR0YWNobWVudERhdGEuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6YXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JB
dHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNo
aXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkZvcm1hdCk6CisgICAgICAgICog
ZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6
X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yVVJMKToK
KyAgICAgICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmlj
aENvbnRlbnRXaXRoQXR0YWNobWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdE1hcmt1
cEFuZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAqIGVkaXRpbmcvbWFj
L0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW1hZ2VJbldlYkFyY2hp
dmVGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgor
ICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9D
b250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJl
c291cmNlQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVz
b3VyY2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hh
cmVkQnVmZmVyQ29udGVudCk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6Cisg
ICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KToKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQpOgorICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5j
cHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIp
OgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmJ1ZmZlckZyb21SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91
c2x5KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoK
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAg
KiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgorICAgICAgICAqIGxvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2Vy
OjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVl
dFRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6Zmlu
aXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRGb250OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJj
ZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpm
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0
YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5z
dXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250
Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRy
YWNrOjpkb1VwZGF0ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6Zmlu
aXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2Nv
YS5oOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVk
QnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0Nh
Y2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0Vk
aXRvckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFs
aXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxl
U2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNv
dXJjZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBwYWdl
L1NoYXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICog
cGxhdGZvcm0vS2V5ZWRDb2RpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0
ZWJvYXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2Fy
ZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpt
YWtlQ29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OnNp
emUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0VtcHR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6Omhhc09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZm
ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpEYXRhU2VnbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBs
YXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5j
b2RlckNGOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNv
ZGVyQ0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZl
cnRUSUZGVG9QTkcpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZv
clR5cGVXaXRoU2VjdXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVk
QnVmZmVyQ29jb2EubW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRX
aXRoRGF0YVNlZ21lbnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRF
bmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRF
bmNvZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5p
c2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1v
ZGVsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZWFkVUludDMyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MTYpOgorICAgICAgICAo
V2ViQ29yZTo6aXNXT0ZGKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmV4dHJhY3RTaW5mRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNl
bnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVt
b3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3Zp
ZGVSZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJB
VkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDOjphcHBlbmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVk
aWFMb2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURh
dGFDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVu
VHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bWFya3VwVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0
YTo6ZXh0cmFjdENlbmNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
aXREYXRhOjpJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9j
dW1lbnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNy
ZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRh
bGljc0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFsaWNDb3JyZWN0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJbmZvOjptYXRoSXRhbGljc0NvcnJlY3Rpb25J
bmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHbHlwaEFzc2VtYmx5Ojpn
ZXRBc3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRo
R2x5cGhDb25zdHJ1Y3Rpb246OmdldFNpemVWYXJpYW50cyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoVmFyaWFudHM6Om1hdGhHbHlw
aENvbnN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRh
YmxlOjptYXRoQ29uc3RhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpN
QVRIVGFibGU6Om1hdGhHbHlwaEluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6OnZhbGlkYXRlVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxl
QmFzZTo6aXNWYWxpZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNl
Ojp2YWxpZGF0ZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2
YWxpZGF0ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVX
aXRoQ292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlbmFtZUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1lQW5kQWN0aXZhdGVGb250
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGll
cy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGlj
YWxEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTdWJzdGl0dXRpb25TdWJU
YWJsZTo6Y292ZXJhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1
cFRhYmxlOjpnZXRTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpMb29rdXBMaXN0Ojpsb29rdXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6OkZlYXR1cmVUYWJsZTo6Z2V0R2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZpbmRGZWF0dXJlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMYW5nU3lzVGFibGU6OmZlYXR1cmUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdFRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6c2NyaXB0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0U2Ny
aXB0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZh
dWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxl
OjpzY3JpcHRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6OmZlYXR1cmVMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VC
VGFibGU6Omxvb2t1cExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdT
VUJUYWJsZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6OkdTVUJUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6R1NVQlRhYmxlOjpnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
VmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZl
cnRpY2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmg6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRDdXN0b21EYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvbkRhdGE6OmN1c3RvbURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29k
ZXI6OnNldElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pw
ZWcvSlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBh
c3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1
ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRP
TVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUl0ZW1Qcm92
aWRlclJlZ2lzdHJhdGlvbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OnJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRl
ci5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRXcml0ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hh
cmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1t
OgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2
ZWREYXRhOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0
SGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENv
bXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3ND
b250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxl
SWZFbmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxJbWFnZUZp
bGVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudCk6
CisgICAgICAgICogcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgor
ICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
Q0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRM
b2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNwb25zZSk6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dT
Y3JpcHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4
c2x0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY0xvYWRlckZ1bmMpOgorICAgICAgICAqIHht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Om9wZW5GdW5jKToKKwogMjAyMS0xMi0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIHZhbGlkaXR5LnZhbHVlTWlzc2luZyBzaG91bGQgbm90IHJlbHkgb24gZWxl
bWVudCdzIGRpc2FibGVkIHN0YXRlIGZvciBpbnB1dHMgb2YgdHlwZSByYWRpby9maWxlL2NoZWNr
Ym94CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IGY2ZjliYzEzODVlMjYzNmQ3Y2RiOTdjMWJmMmZkNWU1ZDIwOTQxODIu
LjUwNGYyOTVmZmU5OGM1NmM3NWJjMjAzM2FiM2ZhMzEyYzM3NzNlZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDU3IEBACisyMDIxLTEyLTAyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBu
b24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHk6IHBhcnQgMworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZVByb3h5Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJl
cXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHk6OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVBy
b3h5OjpzdXBwb3J0c0luaXREYXRhKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6
OnNhbml0aXplUmVzcG9uc2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
UHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFW
RlByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6
OmNyZWF0ZURlY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eTo6c2V0RGF0YSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFRvT3B0aW9uYWxEYXRhUmVm
ZXJlbmNlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZl
ZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
ci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpjb25zdW1lRGF0YSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6
ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpQcmVjb25uZWN0
VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJlY29u
bmVjdFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjptYWtlRW50cnkpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpzdG9yZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5
OjpFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmluaXRpYWxp
emVCdWZmZXJGcm9tU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6RW50cnk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlByZWZldGNoQ2FjaGU6OkVudHJ5OjpFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6OlBy
ZWZldGNoQ2FjaGU6OnN0b3JlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVm
ZXRjaENhY2hlLmg6CisgICAgICAgIChXZWJLaXQ6OlByZWZldGNoQ2FjaGU6OkVudHJ5OjpyZWxl
YXNlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9u
OmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOl0pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRh
VGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0
YVRhc2tTb3VwOjpkaWRSZWFkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Byb3ZpZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5Lmg6CisgICAgICAgIChJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHk6OlNoYXJlZEJ1ZmZlckNvcHkpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmg6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJV2Vi
QXJjaGl2ZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZSk6CisgICAg
ICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2Vi
QXJjaGl2ZVJlc291cmNlOjpXZWJBcmNoaXZlUmVzb3VyY2UpOgorICAgICAgICAqIFNoYXJlZC9D
b2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjplbmNv
ZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpFbnRyeT46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246
Ok1lc3NhZ2U+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJIaXRUZXN0UmVz
dWx0RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJI
aXRUZXN0UmVzdWx0RGF0YSk6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0
ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmVuY29k
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAg
KEFQSTo6QXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhIGNvbnN0KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRSdWxlTGlzdFN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlz
aExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6QXR0YWNo
bWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVVJMU2NoZW1lVGFzay5tbToKKyAgICAgICAgKC1bV0tVUkxTY2hlbWVUYXNrSW1w
bCBkaWRSZWNlaXZlRGF0YTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRh
dGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBh
Z2VVUkwpOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OnNldEljb25Gb3JQYWdlVVJM
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5j
cHA6CisgICAgICAgICh3ZWJraXRVUklTY2hlbWVSZXF1ZXN0UmVhZENhbGxiYWNrKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkRyb3BUYXJnZXQ6OmFjY2VwdCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6
ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpz
ZXRQcm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpwbGF0Zm9ybVN0YXJ0VGFzayk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hl
bWVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hl
bWVIYW5kbGVyOjpwbGF0Zm9ybVN0YXJ0VGFzayk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxT
Y2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
YWRCdWZmZXJBc3luY0RhdGE6OlJlYWRCdWZmZXJBc3luY0RhdGEpOgorICAgICAgICAoV2ViS2l0
OjpDbGlwYm9hcmQ6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQ2xpcGJv
YXJkR3RrNC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlYWRCdWZmZXJBc3luY0RhdGE6OlJlYWRC
dWZmZXJBc3luY0RhdGEpOgorICAgICAgICAoV2ViS2l0OjpDbGlwYm9hcmQ6OnJlYWRCdWZmZXIp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE0uY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OnN1cHBvcnRz
SW5pdERhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OnNhbml0aXplUmVz
cG9uc2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExp
Y2Vuc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0
ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJl
bW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkYuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29k
ZXJBVkY6OnNldERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURl
Y29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpzZXRVc2VHUFVQcm9jZXNzKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6
CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb1NoYXJlZEJ1ZmZlckNvcHkpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjphcHBlbmQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVJlY29yZGVyUHJpdmF0ZTo6ZmV0Y2hEYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VMb2FkZXJD
bGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb246OmRpZENhY2hlUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmFkZEFyY2hpdmVSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6bGl2ZVJlc291cmNlRGF0YSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJl
c291cmNlRGF0YSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlw
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNs
aWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpzb3VyY2Ug
Y29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZERhdGFJbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6bG9hZERhdGFJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZERh
dGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkQWx0ZXJuYXRlSFRNTCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0QW5kUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OnJlc291cmNlRGF0YUZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybUFjdGlvbk9uRWxlbWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tE
b2N1bWVudEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNz
V2luLmNwcDoKKyAgICAgICAgKGxvYWRSZXNvdXJjZUludG9CdWZmZXIpOgorCisyMDIxLTExLTI4
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZl
TG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpk
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1
bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVS
TFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxT
Y2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVt
ZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luVmlldzo6UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmll
dzo6bGl2ZVJlc291cmNlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6
OnJlZGVsaXZlck1hbnVhbFN0cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGll
bnQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVy
Q2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNo
YXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJp
bGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMz
MDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0
YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6
OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjpk
ZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6ZW5jb2RlQXNTdG9y
YWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtE
YXRhVGFza1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpk
aWRSZWFkRGF0YVVSTCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
Y3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5Lmg6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1
ZmZlckNvcHk6OlNoYXJlZEJ1ZmZlckNvcHkpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJD
b3B5OjpidWZmZXIpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIgY29u
c3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJl
c291cmNlLm1tOgorICAgICAgICAoQVBJOjpXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEpOgorICAg
ICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvZGVQbGF0Zm9y
bURhdGEpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdElt
YWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6Cisg
ICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlciBjb25zdCk6
CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmg6CisgICAgICAgICogU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1
ZmZlcik6CisgICAgICAgIChJUEM6OmVuY29kZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6
OmRlY29kZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAg
KiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvd2luL1dl
YkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJp
YWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1
cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRS
dWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6Z2V0RGF0YSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0
dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAg
IChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX3N0b3JlQXBwSGlnaGxpZ2h0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL0Ryb3BUYXJnZXRHdGszLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6ZGF0
YVJlY2VpdmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1t
OgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRp
ZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjYW5QZXJmb3JtQWN0
aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoYWxsUGFzdGVib2FyZEl0ZW1P
cmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFjdGlvblNoZWV0
QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6XSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlU2hhcmVkQnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFS
ZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0
b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50Ojpk
ZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpzb3VyY2UgY29uc3QpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAg
KFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4g
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0
c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgY29uc3QpOgorCisyMDIxLTExLTIxICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgYWxsb2NhdGluZyBhbmQg
Y29weSBtZW1vcnkgZnJvbSBhIFNoYXJlZE1lbW9yeSBpbnRvIGEgU2hhcmVkQnVmZmVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0MDEKKyAgICAg
ICAgcmRhcjovLzg1NjM3NzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgor
CisgICAgICAgIFdlIGNhbiBkaXJlY3RseSB3cmFwIGEgU2hhcmVkTWVtb3J5IGludG8gYSBTaGFy
ZWRCdWZmZXIgdXNpbmcKKyAgICAgICAgU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIg
aW5zdGVhZC4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyIG90aGVy
IHRoYW4gdG90YWwgbWVtb3J5IHNpemUgcmVkdWN0aW9uLgorCisgICAgICAgIEZseS1ieSBmaXg6
IGNoZWNrIGZvciBudWxsIHdoZW4gbWFwcGluZyBhIFNoYXJlZE1lbW9yeSB0byBhbiBJUEMgaGFu
ZGxlCisgICAgICAgIGluIGEgY291cGxlIG9mIHNwb3RzLgorCisgICAgICAgICogU2hhcmVkL1No
YXJlYWJsZVJlc291cmNlLmg6IE1ha2UgU2hhcmVhYmxlUmVzb3VyY2UgdXNlIHRocmVhZC1zYWZl
IHJlZmNvdW50LgorICAgICAgICBBIFNoYXJlYWJsZVJlc291cmNlIG9uY2UgY3JlYXRlZCBpcyBp
bW11dGFibGUgYW5kIHRoZSBTaGFyZWRNZW1vcnkgb2JqZWN0CisgICAgICAgIGl0c2VsZiBoYXMg
dGhyZWFkLXNhZmUgcmVmb3VudGluZy4gRGVsZXRpbmcgdGhlIG9iamVjdCBvdXRzaWRlIHRoZSBt
YWluIHRocmVhZAorICAgICAgICBpcyBzYWZlLgorICAgICAgICBNYWtlIG1lbWJlcnMgY29uc3Qu
CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcik6IFJlZmFjdG9yIG1ldGhv
ZCwgdXNpbmcgRGF0YVNlZ21lbnQ6OlByb3ZpZGVyCisgICAgICAgIGluc3RlYWQgb2YgcGxhdGZv
bSBzcGVjaWZpYyBjb2RlLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgSGFyZGVuaW5nIGNvZGUs
IGNoZWNraW5nIGZvciBudWxsYWJpbGl0eS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICBIYXJkZW5pbmcg
Y29kZSwgY2hlY2tpbmcgZm9yIG51bGxhYmlsaXR5LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdG9yZUFwcEhp
Z2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KToKKwogMjAyMS0xMi0wMSAgSmVhbi1ZdmVzIEF2ZW5h
cmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIEF2b2lkIGFsbG9jYXRpbmcgYW5kIGNvcHkg
bWVtb3J5IGZyb20gYSBTaGFyZWRNZW1vcnkgaW50byBhIFNoYXJlZEJ1ZmZlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0No
YW5nZUxvZwppbmRleCBkNzc2ZTgyZGYxMzJjYWY2NTI3OTNhNzlhMDA4M2FkNjU1OWRjMjY1Li40
M2ExODA0ZDUwZGY5MjczMzZlM2Y1ZDU4M2ExNjg5M2U0MWJhMDkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTEyLTAyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZm
ZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHk6IHBh
cnQgMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMz
Njc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmg6CisKIDIwMjEtMTEtMTIgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ugc29ydC1YY29kZS1wcm9qZWN0LWZpbGUg
aWRlbXBvdGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDg2ZTVkOTk1OGM2NTJh
NWFmM2Y3ODVjMDViNTUwNDIzYWJmZTEwYTMuLmRiMjMwMjVmZGZkZjBiZTQ4ZjlmYzBkMThhN2Vj
NDYzNTJmODhmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OSBA
QAorMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAg
ICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3Vv
dXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQcmV2aWV3
TG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVj
aXNpb25Gb3JJY29ucyk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRM
b2FkaW5nSWNvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1t
OgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkFyY2hpdmUubW06CisgICAgICAgICgtW1dlYkFyY2hpdmUgaW5p
dFdpdGhEYXRhOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAg
ICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5t
bToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2xvYWREYXRhOk1JTUVUeXBlOnRleHRFbmNvZGluZ05h
bWU6YmFzZVVSTDp1bnJlYWNoYWJsZVVSTDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6CisgICAgICAgICogV2ViVmll
dy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgaW5pdFdpdGhDb2Rlcjpd
KToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX2luaXRXaXRoRGF0YTpVUkw6TUlNRVR5cGU6dGV4
dEVuY29kaW5nTmFtZTpmcmFtZU5hbWU6cmVzcG9uc2U6Y29weURhdGE6XSk6CisgICAgICAgICgt
W1dlYlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZl
bmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBT
aGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFi
aWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAg
ICAgICgtW0RPTUhUTUxJbWFnZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0
Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlw
ZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZCk6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtX
ZWJEYXRhU291cmNlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRh
dGlvbi5tbToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNl
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNo
YXJlTWVudUl0ZW0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAg
ICgtW1dlYlJlc291cmNlIGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3Vy
Y2UgZGF0YV0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAy
MS0xMi0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ3Jl
c3Npb24ocjI4MzkxMikgQnJva2UgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBmb3IgU3dpZnQgYmlu
ZGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBjYWQ2MWE3N2EwMTBjZGQ4NzBm
MGE1YzY3ZDIxMzk2OTY2YmI2MGFjLi40MTVjZTQyZGZmNDFkZDg0NmIxNjk2MzM0ODgyYTY3MDQ1
ODFiMjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIw
MjEtMTItMDIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBE
aXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9u
ZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eTogcGFydCAzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdl
YkZyYW1lOjpsb2FkRGF0YSk6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZFBsYWluVGV4dFN0cmlu
Zyk6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZEhUTUxTdHJpbmcpOgorICAgICAgICAqIFdlYkZy
YW1lLmg6CisgICAgICAgICogV2ViS2l0RExMLmNwcDoKKyAgICAgICAgKGxvYWRSZXNvdXJjZUlu
dG9CdWZmZXIpOgorCisyMDIxLTEyLTAxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFy
Oi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpsb2FkRGF0YSk6CisKKzIw
MjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBE
aXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9u
ZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWVtb3J5U3Ry
ZWFtLmNwcDoKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKToKKyAgICAgICAg
KE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIE1lbW9yeVN0cmVhbS5o
OgorICAgICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQXJjaGl2ZTo6ZGF0YSk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkRhdGFTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogV2ViUmVzb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAg
KiBXZWJSZXNvdXJjZS5oOgorCiAyMDIxLTExLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBBWDogVXNlIE9iamVjdElkZW50aWZpZXIgZm9y
IEFYSUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmluZGV4
IGVhY2NhMmMyMzNhOGE2OTM3MTU5MDgwN2RmZDM2NzViMDYxNTk0MjguLmI0NjkzZjkxYzYwN2Q4
ZDA3NDU5NDY0NmU4ZGM0MzcyZTliYzk5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoQXJyYXlC
dWZmZXImKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVy
PiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAKLSAg
ICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlh
bGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIuCisgICAgLy8gT25s
eSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkIGFu
ZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlci4KICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVVbmluaXRpYWxpemVk
KHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRp
YWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDMzNTRiNTJhNTBjYmIxODlmZGZhZWI3
ZDgyNDgzYmUwYzQxYzNkNGUuLmRhMzM2ZTZmNWIxNjk0ZTM3NDc2OTBjNDNkMmI1M2YzNTE4YzA5
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0Ns
aXBib2FyZEltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogCi12b2lkIENsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIu
aAppbmRleCAyYjYyNjI4NDE5YjA5Y2JiNjk1NTIxNWIwZDVkN2Q3M2MwYjM3NDRkLi42ZTIyMDQ4
Y2Y1ZmVhOWFhNjJkYWRmNDViMWYzNWM0Y2UwZDdkNmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVh
ZGVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9j
dW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBzdHJ1Y3QgQ2xpcGJvYXJkSW1hZ2VSZWFkZXIgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7
CiAgICAgQ2xpcGJvYXJkSW1hZ2VSZWFkZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKQpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVhZEZp
bGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAog
ICAgIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKLSAg
ICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7
CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5k
aW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IGQwNzQ2ZGEyZGEyMDllMDIzMjViNWZhMjE0ZGJlZTY0
YmY5YzkwNzguLmYyZjQwNDE5MGI2M2JkYWQxYjIyMmJkODJmMDhlYWU1NjJjOTVhODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0yMTYs
OCArMjE2LDggQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjppbnZva2VD
b21wbGV0aW9uSGFuZGxlcigpCiAgICAgICAgIGF1dG8mIGRhdGEgPSBpdGVtVHlwZUxvYWRlci0+
ZGF0YSgpOwogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRhdGEp
ICYmICEhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKSkKICAgICAgICAgICAgIGN1c3RvbURhdGEud3Jp
dGVTdHJpbmcodHlwZSwgc3RkOjpnZXQ8U3RyaW5nPihkYXRhKSk7Ci0gICAgICAgIGVsc2UgaWYg
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQotICAgICAg
ICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZl
cj4+KGRhdGEpLmNvcHlSZWYoKSk7CisgICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihkYXRhKSkKKyAgICAgICAgICAgIGN1
c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4oZGF0YSkuY29weVJlZigpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjQ5
LDcgKzI0OSw3IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJv
YXJkSXRlbVR5cGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoCiAgICAgaWYgKCFzdHJpbmdSZXN1
bHQuaXNOdWxsKCkpCiAgICAgICAgIG1fZGF0YSA9IHsgc3RyaW5nUmVzdWx0IH07CiAgICAgZWxz
ZSBpZiAoYXV0byBhcnJheUJ1ZmZlciA9IG1fYmxvYkxvYWRlci0+YXJyYXlCdWZmZXJSZXN1bHQo
KSkKLSAgICAgICAgbV9kYXRhID0geyBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3Ro
KCkpIH07CisgICAgICAgIG1fZGF0YSA9IHsgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZm
ZXItPmJ5dGVMZW5ndGgoKSkgfTsKICAgICBtX2Jsb2JMb2FkZXIgPSBudWxscHRyOwogICAgIGlu
dm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CkBAIC0yNjUsOSArMjY1LDkgQEAgdm9pZCBDbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2Fu
aXRpemVEYXRhSWZOZWUKIHsKICAgICBpZiAobV90eXBlID09ICJ0ZXh0L2h0bWwiX3MpIHsKICAg
ICAgICAgU3RyaW5nIG1hcmt1cFRvU2FuaXRpemU7Ci0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7Ci0gICAgICAgICAgICBhdXRv
JiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKLSAgICAgICAg
ICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgeworICAgICAgICAgICAgYXV0byYgYnVm
ZmVyID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihtX2RhdGEpOworICAg
ICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgfSBlbHNlIGlm
IChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAgIG1h
cmt1cFRvU2FuaXRpemUgPSBzdGQ6OmdldDxTdHJpbmc+KG1fZGF0YSk7CiAKQEAgLTI3OCw5ICsy
NzgsOSBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0
ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogICAgIH0KIAogICAgIGlmIChtX3R5cGUg
PT0gImltYWdlL3BuZyJfcykgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJU
b1Nhbml0aXplOwotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVk
QnVmZmVyPj4obV9kYXRhKSkKLSAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSBzdGQ6Omdl
dDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKS5wdHIoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRpemU7CisgICAgICAgIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4obV9kYXRhKSkKKyAg
ICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+KG1fZGF0YSkucHRyKCk7CiAgICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpKQogICAgICAgICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9
IHV0ZjhCdWZmZXIoc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpKTsKIApAQCAtMjk2LDcgKzI5Niw3
IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5
cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiAgICAgICAgIH0KIAogICAgICAgICBpbWFnZUJ1
ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZShiaXRtYXBJbWFnZS5nZXQoKSwgRmxvYXRQb2ludDo6
emVybygpKTsKLSAgICAgICAgbV9kYXRhID0geyBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbWFnZUJ1
ZmZlci0+dG9EYXRhKCJpbWFnZS9wbmciX3MpKSB9OworICAgICAgICBtX2RhdGEgPSB7IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbWFnZUJ1ZmZlci0+dG9EYXRhKCJpbWFnZS9wbmci
X3MpKSB9OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZS5oCmluZGV4IDJjYzJjOGUxYTU0ZTE4ZDczNDk1YzUzMGNkNzdkNTRmOTlhNTI5YTcu
LjM3YzgyNWUyMzVhOGE4YjdlNDRlNDBmYjBjMmQ3NzI0NDA3YTc1ODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xh
c3MgRE9NUHJvbWlzZTsKIGNsYXNzIEZpbGVSZWFkZXJMb2FkZXI7CiBjbGFzcyBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlIDogcHVibGljIENsaXBib2FyZEl0ZW1EYXRhU291cmNlIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgaW52b2tlQ29tcGxldGlvbkhhbmRsZXIoKTsKIAotICAgIHVzaW5nIEJ1ZmZl
ck9yU3RyaW5nID0gc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAg
IHVzaW5nIEJ1ZmZlck9yU3RyaW5nID0gc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PjsKICAgICBjbGFzcyBDbGlwYm9hcmRJdGVtVHlwZUxvYWRlciA6IHB1
YmxpYyBGaWxlUmVhZGVyTG9hZGVyQ2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxDbGlwYm9hcmRJ
dGVtVHlwZUxvYWRlcj4gewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFJlZjxDbGlwYm9h
cmRJdGVtVHlwZUxvYWRlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdHlwZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2Fy
ZEltYWdlUmVhZGVySU9TLm1tCmluZGV4IDQzMDIzNjFlNmZlMjc4NTI4NGFlNmMwODMyOGFmMzA3
YTNhNDQxMDAuLjI3NGUwMzhkNDE4NzAxNjFlNGVlYjgwYzEyYWJiYTg3MWY5ZDRhNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9h
cmRJbWFnZVJlYWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KQEAgLTM0LDEwICszNCwxMCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJl
YWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCit2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewotICAgICAgICBhdXRv
IGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0
YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBh
ZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1
dG8gbnNEYXRhID0gVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlLmdldCgpKSkKICAgICAg
ICAgICAgIG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKG1fZG9jdW1lbnQuZ2V0KCksIFZlY3RvciB7
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihuc0RhdGEuYnl0ZXMpLCBuc0RhdGEubGVuZ3Ro
IH0sIG1fbWltZVR5cGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRl
ck1hYy5tbQppbmRleCBiNGMzMWNhNTA2MzljY2NhNGM1NTA1NGQ0OTEzMTc4NjlkYTdlNWJmLi4z
ODIxYjAzNzE4MDI4MjNkNjlhODMwYTMxMGRhMzQ3MDhkNjMzMDc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFj
L0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCkBAIC0zMywxMCArMzMsMTAgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
dm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAg
aWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFk
b3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2Nd
IGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXSk7CiAgICAgICAgIGlmIChhdXRvIGNnSW1hZ2UgPSBbaW1hZ2UgQ0dJbWFnZUZvclByb3Bv
c2VkUmVjdDpuaWwgY29udGV4dDpuaWwgaGludHM6bmlsXSkgewogICAgICAgICAgICAgYXV0byBy
ZXByZXNlbnRhdGlvbiA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0
aENHSW1hZ2U6Y2dJbWFnZV0pOwogICAgICAgICAgICAgTlNEYXRhKiBuc0RhdGEgPSBbcmVwcmVz
ZW50YXRpb24gcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6TlNCaXRtYXBJbWFnZUZpbGVUeXBlUE5H
IHByb3BlcnRpZXM6QHsgfV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCA5YjNmODQwNzQ1ZDFhMDY5ODgz
YTIwYzNhNjVmOTk3OWZiMWEyNDM3Li44YmZmODA3MDZlNmUxOTlhNTRjNTM3MzBmYjZjMzdjOWZm
ODMyOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3Rv
cmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdWludDY0X3QgQ2FjaGVT
dG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxCb2R5U2l6ZShjb25zdCBET01DYWNoZUVuZ2lu
ZTo6UmVzcG8KICAgICB1aW50NjRfdCByZXN1bHQgPSAwOwogICAgIFdURjo6c3dpdGNoT24oYm9k
eSwgWyZdIChjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICByZXN1bHQg
PSBmb3JtRGF0YVNpemUoZm9ybURhdGEpOwotICAgIH0sIFsmXSAoY29uc3QgUmVmPFNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAoY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgcmVzdWx0ID0gYnVmZmVyLT5zaXplKCk7CiAgICAg
fSwgW10gKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCA5MDk4ZTA1YWY0Yzg0MzNiM2QxM2IzOTU2
NTA2NGE5YzE1NDMzODdkLi44Njc1MGRmZWVmZWM1NTVjYWY5YTFiYmY4NTEwNjBhNTlhZmYyODkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMjg4LDcg
KzI4OCw3IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5m
b3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBzaXplX3QgcmVjb3JkUG9zaXRpb24gPSB0YXNrSGFuZGxlci0+YWRkUmVjb3JkKHRvQ29u
bmVjdGlvblJlY29yZChyZXF1ZXN0LmdldCgpLCByZXNwb25zZSwgbnVsbHB0cikpOwogCi0gICAg
ICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIg
PSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNo
dW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwg
ZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9
XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRhc2tIYW5k
bGVyLT5pc0RvbmUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTgsMTUg
KzI5OCwxNSBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGlu
Zm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQot
ICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNp
emUoKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNo
dW5rLT5zaXplKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
dGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIFdU
Rk1vdmUoZGF0YSkpOworICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9u
c2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgZGF0YS50YWtlKCktPm1ha2VDb250aWd1
b3VzKCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KIAotdm9pZCBE
T01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYm
IHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJv
ZHkpCit2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJlcXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNo
UmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCiB7CiAgICAgaWYgKHJlc3BvbnNlQm9keS5oYXNFeGNl
cHRpb24oKSkgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRh
c2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBl
eGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVsZWFzZUV4Y2VwdGlvbigpXSgpIG11dGFibGUgewpA
QCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoCiAKICAgICBET01DYWNo
ZUVuZ2luZTo6UmVzcG9uc2VCb2R5IGJvZHk7CiAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVzcG9u
c2VCb2R5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQotICAgICAgICBib2R5ID0gYnVmZmVyLnJlbGVh
c2VOb25OdWxsKCk7CisgICAgICAgIGJvZHkgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAg
ICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UuZ2V0KCksIFdURk1v
dmUoYm9keSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsK
ICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpE
T01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RG
TW92ZShyZXN1bHQpXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RG
TW92ZShyZXN1bHQpKTsKQEAgLTM3NCw3ICszNzQsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVx
dWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlz
ZQogCiAgICAgaWYgKHJlc3BvbnNlLT5pc0JvZHlSZWNlaXZlZEJ5Q2h1bmsoKSkgewogICAgICAg
ICBhdXRvJiByZXNwb25zZVJlZiA9IHJlc3BvbnNlLmdldCgpOwotICAgICAgICByZXNwb25zZVJl
Zi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSks
IHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2Up
LCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBl
bmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAg
ICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdU
Rk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCBwZW5kaW5nQWN0
aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkg
bXV0YWJsZSB7CiAKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAg
ICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSks
IFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCByZXN1bHQucmVsZWFzZUV4Y2Vw
dGlvbigpLmlzb2xhdGVkQ29weSgpKTsKQEAgLTM4Miw5ICszODIsOSBAQCB2b2lkIERPTUNhY2hl
OjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwg
RE9NUHJvbWlzZQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsg
PSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1
bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQo
Y2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZN
b3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBX
VEZNb3ZlKGRhdGEpIH0pOworICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURh
dGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSks
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEudGFrZSgpLT5tYWtlQ29udGln
dW91cygpIH0pOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAppbmRleCAxMzk3NTRkMzBlNDAwNzg1NGE2NDRh
NzQxMWEzYzgxN2NkOWQxZjkyLi5jMzVjYzNjYmNlZGIzYjI1MTFiZjM1N2EzMWFmZTJkMjc0Mzhi
ZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCkBAIC03Miw3ICs3
Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciog
YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBwdXRXaXRoUmVz
cG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYm
LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
JiYpOworICAgIHZvaWQgcHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlv
bk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJik7CiAKICAgICBlbnVtIGNsYXNz
IFNob3VsZFJldHJpZXZlUmVzcG9uc2VzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB1c2luZyBS
ZWNvcmRzQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3Rv
cjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPj4mJik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAppbmRleCAyNTkxNGI0MGJiMjM4M2EwNzg4MDRm
ODliMTFiNDBkODk3MGI0MzA2Li40NzUwNGNiZWJkYWUwMzgxNjc1OWE4ZjY4ZThjMjQ2MmZkZjJh
NWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5n
aW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5l
LmNwcApAQCAtMTMxLDggKzEzMSw4IEBAIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9k
eShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
Ym9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7
CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS0+aXNvbGF0ZWRDb3B5KCk7Ci0gICAgfSwgW10oY29u
c3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKLSAgICAgICAg
cmV0dXJuIGJ1ZmZlci0+Y29weSgpOworICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgeworICAgICAgICByZXR1cm4gYnVm
ZmVyLmNvcHlSZWYoKTsgLy8gQ29udGlndW91c1NoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFu
ZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3Qm
KSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3Bv
bnNlQm9keSB7IH07CiAgICAgfSk7CkBAIC0xNDIsNyArMTQyLDcgQEAgUmVzcG9uc2VCb2R5IGNv
cHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBS
ZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEuY29weVJlZigpOwotICAgIH0s
IFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7Cisg
ICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJl
c3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOwogICAgIH0sIFtd
KGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJu
IERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCmluZGV4IDk0YWQyMTJhMDcwZmNlMjZhYjBhNTk1
YWY4MmE1NzM2YzEzNDU4ZWUuLmNiZjhiNjhiYThhM2NhM2FhYzJlNDEyMGJjY2RiYWYyZmExNTY2
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgK
QEAgLTU3LDcgKzU3LDcgQEAgRXhjZXB0aW9uIGNvbnZlcnRUb0V4Y2VwdGlvbkFuZExvZyhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgRXJyb3IpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNh
Y2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIGNhY2hlZFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBDYWNo
ZVF1ZXJ5T3B0aW9ucyYpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBVUkwmIHVybCwgYm9vbCBoYXNWYXJ5
U3RhciwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHZhcnlIZWFkZXJzLCBjb25zdCBD
YWNoZVF1ZXJ5T3B0aW9ucyYpOwogCi11c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8
c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKK3VzaW5n
IFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRh
PiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKIFJlc3BvbnNlQm9keSBpc29sYXRlZFJl
c3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKIFdFQkNPUkVfRVhQT1JUIFJlc3BvbnNl
Qm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKaW5kZXggMjg1MGRiYTFlM2Jm
YTExZjQ4OWI0NDQwMzUxM2Q1MWFlMWJlYWQzYS4uOWQxYmM2NzRmYzgyNmNiNmQxNmQwMjUxMGNm
ODQwMTBhZGNiZDc3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9DRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNLmNwcApAQCAtMTM1LDE3ICsxMzUsMTcgQEAgYm9vbCBDRE06OnN1cHBvcnRzSW5pdERh
dGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSkgY29uc3QKICAgICByZXR1cm4g
bV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5z
KGluaXREYXRhVHlwZSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgaW5pdERhdGEpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6
ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgcmV0dXJuIEluaXREYXRhUmVnaXN0cnk6
OnNoYXJlZCgpLnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CiB9CiAK
LWJvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK2Jvb2wgQ0RNOjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUt
PnN1cHBvcnRzSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJl
c3BvbnNlKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVSZXNw
b25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKIHsKICAgICBpZiAo
IW1fcHJpdmF0ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAppbmRleCBkOGE0YjNhZjEyZjFhNzkyM2Q4ODcwNWQ1
Yjk1ODFkMzZmMTAyNzBjLi5kN2IxZDUzZDA0OTFmNzI3NzliNTk0YjJkODNjMDliODNiY2YyMDdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKQEAgLTUy
LDcgKzUyLDcgQEAgY2xhc3MgQ0RNSW5zdGFuY2U7CiBjbGFzcyBDRE1Qcml2YXRlOwogY2xhc3Mg
RG9jdW1lbnQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNIDogcHVibGlj
IFJlZkNvdW50ZWQ8Q0RNPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETT4sIHByaXZhdGUgQ29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgpAQCAtNzMsMTAgKzczLDEwIEBAIHB1
YmxpYzoKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdDsKICAgICBib29sIHN1cHBv
cnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAg
ICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25J
ZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oCmluZGV4IDIxZTUyZjRiNzE0ZmI5MWY2N2Nm
YzM5NjEzOWMxNjUyNWJmYjdiOWIuLjQxMGVkMmZiNjQyNzU2MmNlOWJkOGVkYTRkOTFhODZiYTk4
Y2FhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9D
RE1DbGllbnQuaApAQCAtMzYsMTQgKzM2LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENETUluc3RhbmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPENE
TUNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkNETUNsaWVudCgpID0gZGVmYXVsdDsK
IAogICAgIHZpcnR1YWwgdm9pZCBjZG1DbGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVj
ZXNzYXJ5KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRp
YWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlv
bkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAK
aW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQxYTY3MDc0NDBmMmQ1Ni4uZDk4YjVkMGM3
OTgyMGNlN2Y0MzRkMGE2YmE2NTkxZWY5ODQ1NzczNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCkBA
IC01NCwxMyArNTQsMTMgQEAgbmFtZXNwYWNlIHsKICAgICBjb25zdCB1aW50MzJfdCBrS2V5SWRz
TWF4S2V5SWRTaXplSW5CeXRlcyA9IDUxMjsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyAxLiBGb3JtYXQKICAgICAvLyBodHRwczovL3cz
Yy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlp
ZHMuaHRtbCNmb3JtYXQKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBT
dHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIu
c2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRv
IHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpA
QCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1
ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIGlmICgha2lkc0Fy
cmF5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgVmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4ga2V5SURzOwogICAgIGZvciAoYXV0byYgdmFsdWUgOiAqa2lkc0FycmF5KSB7CiAgICAgICAg
IGF1dG8ga2V5SUQgPSB2YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAgaWYgKCFrZXlJRCkKQEAg
LTg3LDEzICs4NywxMyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1
ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgICAgICBpZiAoa2V5
SUREYXRhLT5zaXplKCkgPCBrS2V5SWRzTWluS2V5SWRTaXplSW5CeXRlcyB8fCBrZXlJRERhdGEt
PnNpemUoKSA+IGtLZXlJZHNNYXhLZXlJZFNpemVJbkJ5dGVzKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBrZXlJRHMuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoKmtleUlERGF0YSkpKTsKKyAgICAgICAga2V5SURzLmFwcGVuZChDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqa2V5SUREYXRhKSkpOwogICAgIH0KIAog
ICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDEuIEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlk
cy5odG1sI2Zvcm1hdApAQCAtMTA0LDE0ICsxMDQsMTQgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGF1
dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtpZHNBcnJheSA9
IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGtleUlEQnVm
ZmVyLnZhbHVlKCkpCi0gICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNv
ZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICAgICAga2lk
c0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogICAgIG9iamVjdC0+c2V0QXJy
YXkoImtpZHMiLCBXVEZNb3ZlKGtpZHNBcnJheSkpOwogCiAgICAgQ1N0cmluZyBqc29uRGF0YSA9
IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEu
bGVuZ3RoKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNP
UHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaXREYXRhUmVnaXN0cnk6OmV4
dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6
b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lm
aWNIZWFkZXJCb3g+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5j
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyA0LiBDb21t
b24gU3lzdGVtSUQgYW5kIFBTU0ggQm94IEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2NlbmMuaHRtbCNj
b21tb24tc3lzdGVtCkBAIC0xNTEsOSArMTUxLDkgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbmkK
ICAgICByZXR1cm4gcHNzaEJveGVzOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
IGtleUlEczsKIAogICAgIGF1dG8gcHNzaEJveGVzID0gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5j
KGJ1ZmZlcik7CiAgICAgaWYgKCFwc3NoQm94ZXMpCkBAIC0xNzIsMjAgKzE3MiwyMCBAQCBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4
dHJhY3RLZXlJRHNDZW5jKGNvbgogICAgICAgICAgICAgaWYgKENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6dmFsaWRGYWlyUGxheVN0cmVhbWluZ1NjaGVtZXMoKS5jb250YWlucyhzY2hlbWUp
KSB7CiAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZXF1ZXN0IDogZnBzUHNzaC5p
bml0RGF0YUJveCgpLnJlcXVlc3RzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byYga2V5
SUQgPSByZXF1ZXN0LnJlcXVlc3RJbmZvKCkua2V5SUQoKTsKLSAgICAgICAgICAgICAgICAgICAg
a2V5SURzLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShrZXlJRC5kYXRhKCksIGtleUlELnNp
emUoKSkpOworICAgICAgICAgICAgICAgICAgICBrZXlJRHMuYXBwZW5kKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShrZXlJRC5kYXRhKCksIGtleUlELnNpemUoKSkpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgZm9y
IChhdXRvJiB2YWx1ZSA6IHBzc2hCb3gtPmtleUlEcygpKQotICAgICAgICAgICAga2V5SURzLmFw
cGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZhbHVlKSkpOworICAgICAgICAgICAg
a2V5SURzLmFwcGVuZChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2YWx1
ZSkpKTsKICAgICB9CiAKICAgICByZXR1cm4ga2V5SURzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6
c2FuaXRpemVDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICAvLyA0LiBDb21tb24gU3lzdGVtSUQgYW5kIFBTU0ggQm94IEZvcm1hdAogICAgIC8vIGh0dHBz
Oi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRh
L2NlbmMuaHRtbCNjb21tb24tc3lzdGVtCkBAIC0xOTUsNyArMTk1LDcgQEAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQor
c3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIENoZWNrIGlmIHRoZSBi
dWZmZXIgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIC8vIFRoZSBXZWJNIGluaXREYXRh
IGlzIHRoZSBDb250ZW50RW5jS2V5SUQsIHNvIHNob3VsZCBiZSBsZXNzIHRoYW4ga1dlYk1NYXhD
b250ZW50RW5jS2V5SURTaXplLgpAQCAtMjA1LDEwICsyMDUsMTAgQEAgc3RhdGljIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNhbml0aXplV2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAg
ICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1dlYk0oY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1dlYk0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZEJ1ZmZlciA9IHNhbml0aXplV2ViTShidWZm
ZXIpOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkQnVmZmVyID0gc2FuaXRp
emVXZWJNKGJ1ZmZlcik7CiAgICAgaWYgKCFzYW5pdGl6ZWRCdWZmZXIpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCBJbml0RGF0YVJlZ2lzdHJ5OjpJ
bml0RGF0YVJlZ2lzdHJ5KCkKIAogSW5pdERhdGFSZWdpc3RyeTo6fkluaXREYXRhUmVnaXN0cnko
KSA9IGRlZmF1bHQ7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNh
bml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0
YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gaXRl
ciA9IG1fdHlwZXMuZmluZChpbml0RGF0YVR5cGUpOwogICAgIGlmIChpdGVyID09IG1fdHlwZXMu
ZW5kKCkgfHwgIWl0ZXItPnZhbHVlLnNhbml0aXplSW5pdERhdGEpCkBAIC0yNDEsNyArMjQxLDcg
QEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0RGF0
YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGEKICAgICByZXR1cm4gaXRlci0+dmFsdWUuc2FuaXRp
emVJbml0RGF0YShidWZmZXIpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9u
YWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6
OmV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBpdGVyID0gbV90eXBlcy5m
aW5kKGluaXREYXRhVHlwZSk7CiAgICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQoKSB8fCAhaXRl
ci0+dmFsdWUuc2FuaXRpemVJbml0RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmgKaW5kZXggY2QxMzg3YTZi
ZDAzOGZmMzRlMmNmYjc1ZjQ0M2RlN2Q5NDAzMjFiMC4uNzdkNjA0YjA4YmI3ZjdlMzhiY2NiMzU0
NWIzNGM4YjEzNDM1NWVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmgKQEAgLTM4LDE5ICszOCwxOSBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNI
ZWFkZXJCb3g7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBJbml0RGF0YVJlZ2lzdHJ5IHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgSW5pdERhdGFSZWdpc3RyeSYgc2hhcmVkKCk7CiAgICAgZnJpZW5kIGNsYXNz
IE5ldmVyRGVzdHJveWVkPEluaXREYXRhUmVnaXN0cnk+OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJh
Y3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7CiAKICAgICBzdHJ1Y3QgSW5pdERhdGFUeXBlQ2FsbGJhY2tzIHsKLSAg
ICAgICAgdXNpbmcgU2FuaXRpemVJbml0RGF0YUNhbGxiYWNrID0gRnVuY3Rpb248UmVmUHRyPFNo
YXJlZEJ1ZmZlcj4oY29uc3QgU2hhcmVkQnVmZmVyJik+OwotICAgICAgICB1c2luZyBFeHRyYWN0
S2V5SURzQ2FsbGJhY2sgPSBGdW5jdGlvbjxzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4+KGNvbnN0IFNoYXJlZEJ1ZmZlciYpPjsKKyAgICAgICAgdXNpbmcgU2FuaXRpemVJ
bml0RGF0YUNhbGxiYWNrID0gRnVuY3Rpb248UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKT47CisgICAgICAgIHVzaW5nIEV4dHJhY3RL
ZXlJRHNDYWxsYmFjayA9IEZ1bmN0aW9uPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4+KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKT47CiAKICAg
ICAgICAgU2FuaXRpemVJbml0RGF0YUNhbGxiYWNrIHNhbml0aXplSW5pdERhdGE7CiAgICAgICAg
IEV4dHJhY3RLZXlJRHNDYWxsYmFjayBleHRyYWN0S2V5SURzOwpAQCAtNjEsOSArNjEsOSBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGtleWlkc05hbWUoKTsKICAgICBz
dGF0aWMgY29uc3QgQXRvbVN0cmluZyYgd2VibU5hbWUoKTsKIAotICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmlj
SGVhZGVyQm94Pj4+IGV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXIm
KTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBl
eHRyYWN0S2V5SURzQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5
c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IGV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHNhbml0aXplQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAK
IHByaXZhdGU6CiAgICAgSW5pdERhdGFSZWdpc3RyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmluZGV4
IDhiZmIxY2U3MDFhMmY1YTY5YjViNTE5OTFhYTg2MzJlYmI4OTI1ZjkuLmFjMjY2M2M1YjJhOWY1
MTFmNGJiZDA0NTZhZmI0NTY2ZWM0ZGUyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTE3Mywx
MCArMTczLDEwIEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgLy8gOC4gTGV0IHNlc3Np
b24gdHlwZSBiZSB0aGlzIG9iamVjdCdzIHNlc3Npb24gdHlwZS4KICAgICAvLyA5LiBMZXQgcHJv
bWlzZSBiZSBhIG5ldyBwcm9taXNlLgogICAgIC8vIDEwLiBSdW4gdGhlIGZvbGxvd2luZyBzdGVw
cyBpbiBwYXJhbGxlbDoKLSAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRh
c2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
LCBpbml0RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhLmRhdGEoKSwgaW5pdERh
dGEubGVuZ3RoKCkpLCBpbml0RGF0YVR5cGUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBp
ZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CisgICAgcXVldWVU
YXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhp
cywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaW5pdERhdGEgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5sZW5ndGgoKSksIGlu
aXREYXRhVHlwZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZN
b3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgLy8gMTAuMS4gSWYgdGhlIGlu
aXQgZGF0YSBpcyBub3QgdmFsaWQgZm9yIGluaXREYXRhVHlwZSwgcmVqZWN0IHByb21pc2Ugd2l0
aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAgICAvLyAxMC4yLiBMZXQgc2FuaXRp
emVkIGluaXQgZGF0YSBiZSBhIHZhbGlkYXRlZCBhbmQgc2FuaXRpemVkIHZlcnNpb24gb2YgaW5p
dCBkYXRhLgotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRJbml0RGF0YSA9
IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0
YSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRJbml0
RGF0YSA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBp
bml0RGF0YSk7CiAKICAgICAgICAgLy8gMTAuMy4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxl
ZCwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAg
ICBpZiAoIXNhbml0aXplZEluaXREYXRhKSB7CkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBNZWRp
YUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIGNvbnN0IEJ1ZmYKICAgICAgICAgICAgIG1fbGF0ZXN0RGVjcnlwdFRpbWUgPSAwOwogICAg
ICAgICB9CiAKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlcXVlc3RMaWNlbnNlKG1fc2Vz
c2lvblR5cGUsIGluaXREYXRhVHlwZSwgc2FuaXRpemVkSW5pdERhdGEucmVsZWFzZU5vbk51bGwo
KSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmll
ciA9IFdURk1vdmUoaWRlbnRpZmllcildIChSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAg
IG1faW5zdGFuY2VTZXNzaW9uLT5yZXF1ZXN0TGljZW5zZShtX3Nlc3Npb25UeXBlLCBpbml0RGF0
YVR5cGUsIHNhbml0aXplZEluaXREYXRhLnJlbGVhc2VOb25OdWxsKCksIFt0aGlzLCB3ZWFrVGhp
cywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50
aWZpZXIpXSAoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VT
ZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC00MjAsOSArNDIwLDkg
QEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3Bv
bnNlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYKICAgICAvLyA0LiBMZXQgcmVzcG9uc2UgY29weSBi
ZSBhIGNvcHkgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSByZXNwb25zZSBwYXJhbWV0ZXIuCiAgICAg
Ly8gNS4gTGV0IHByb21pc2UgYmUgYSBuZXcgcHJvbWlzZS4KICAgICAvLyA2LiBSdW4gdGhlIGZv
bGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKLSAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxp
dmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9LCByZXNwb25zZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc3BvbnNlLmRh
dGEoKSwgcmVzcG9uc2UubGVuZ3RoKCkpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRl
bnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgeworICAgIHF1ZXVlVGFz
a0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMs
IHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlc3BvbnNlID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2UubGVuZ3RoKCkpLCBwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcild
ICgpIG11dGFibGUgewogICAgICAgICAvLyA2LjEuIExldCBzYW5pdGl6ZWQgcmVzcG9uc2UgYmUg
YSB2YWxpZGF0ZWQgYW5kL29yIHNhbml0aXplZCB2ZXJzaW9uIG9mIHJlc3BvbnNlIGNvcHkuCi0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3BvbnNlID0gbV9pbXBsZW1l
bnRhdGlvbi0+c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7CisgICAgICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRSZXNwb25zZSA9IG1faW1wbGVtZW50YXRpb24t
PnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2UpOwogCiAgICAgICAgIC8vIDYuMi4gSWYgdGhlIHBy
ZWNlZGluZyBzdGVwIGZhaWxlZCwgb3IgaWYgc2FuaXRpemVkIHJlc3BvbnNlIGlzIGVtcHR5LCBy
ZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIGlm
ICghc2FuaXRpemVkUmVzcG9uc2UgfHwgc2FuaXRpemVkUmVzcG9uc2UtPmlzRW1wdHkoKSkgewpA
QCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUoUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgICAgICAvLyA0LjMuIExldCBtZXNzYWdlIHR5cGUg
YmUgbnVsbC4KIAogICAgICAgICAvLyA0LjQuIFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhlIGZv
bGxvd2luZyBzdGVwczoKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlbW92ZVNlc3Npb25E
YXRhKG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBlLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKENE
TUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5cywgc3RkOjpvcHRpb25hbDxS
ZWY8U2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NW
YWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVt
b3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhp
cywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50
aWZpZXIpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBzdGQ6
Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBDRE1JbnN0
YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTY0OSw3ICs2
NDksNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzZSkKICAgICAvLyA1LiBSZXR1cm4gcHJvbWlzZS4KIH0KIAotdm9pZCBNZWRpYUtl
eVNlc3Npb246OmVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgbWVzc2FnZSkKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjplbnF1
ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBtZXNzYWdlKQogewogICAgIC8vIDYuNC4xIFF1ZXVlIGEgIm1lc3Nh
Z2UiIEV2ZW50CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8j
cXVldWUtbWVzc2FnZQpAQCAtNzE2LDcgKzcxNiw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1
cGRhdGVLZXlTdGF0dXNlcyhDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGlu
CiAgICAgICAgIH0pOwogfQogCi12b2lkIE1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2UoQ0RN
TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKK3Zv
aWQgTWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSBtZXNzYWdlVHlw
ZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBlbnF1ZXVl
TWVzc2FnZShtZXNzYWdlVHlwZSwgbWVzc2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAppbmRleCAzZDk2
Zjg4MDJlNzQ3ODQxYzRlZmRhODFkY2I5NDFlYTZlNGE3NWU0Li4zNjVhY2U1YzA5NWU3ZGMwYzU3
MWU3NmNjZjJjMDdhYWZjNjJiYWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKQEAgLTU3LDcgKzU3LDcgQEAg
Y2xhc3MgQ0RNOwogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgTWVkaWFLZXlTdGF0dXNN
YXA7CiBjbGFzcyBNZWRpYUtleXM7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Q
cm9taXNlUHJveHk7CiAKQEAgLTg3LDIwICs4NywyMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ2xv
c2VkUHJvbWlzZSA9IERPTVByb21pc2VQcm94eTxJRExVbmRlZmluZWQ+OwogICAgIENsb3NlZFBy
b21pc2UmIGNsb3NlZCgpIHsgcmV0dXJuIG1fY2xvc2VkUHJvbWlzZS5nZXQoKTsgfQogCi0gICAg
Y29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+
PiYgc3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1c2VzOyB9CisgICAgY29uc3QgVmVj
dG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVz
Pj4mIHN0YXR1c2VzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXNlczsgfQogCiAgICAgdW5zaWdu
ZWQgaW50ZXJuYWxJbnN0YW5jZVNlc3Npb25PYmplY3RSZWZDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1faW5zdGFuY2VTZXNzaW9uLT5yZWZDb3VudCgpOyB9CiAKIHByaXZhdGU6CiAgICAgTWVkaWFL
ZXlTZXNzaW9uKERvY3VtZW50JiwgV2Vha1B0cjxNZWRpYUtleXM+JiYsIE1lZGlhS2V5U2Vzc2lv
blR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBSZWY8Q0RNPiYmLCBSZWY8Q0RN
SW5zdGFuY2VTZXNzaW9uPiYmKTsKLSAgICB2b2lkIGVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVz
c2FnZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2Uo
TWVkaWFLZXlNZXNzYWdlVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAg
IHZvaWQgdXBkYXRlRXhwaXJhdGlvbihkb3VibGUpOwogICAgIHZvaWQgc2Vzc2lvbkNsb3NlZCgp
OwogICAgIFN0cmluZyBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAKICAgICAv
LyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQKICAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKENE
TUluc3RhbmNlU2Vzc2lvbkNsaWVudDo6S2V5U3RhdHVzVmVjdG9yJiYpIG92ZXJyaWRlOwotICAg
IHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVz
c2FnZSkgZmluYWw7CisgICAgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CiAgICAgdm9pZCBzZXNzaW9u
SWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRp
c3BsYXlJRCgpIGZpbmFsOwogCkBAIC0xNDAsMTAgKzE0MCwxMCBAQCBwcml2YXRlOgogICAgIE1l
ZGlhS2V5U2Vzc2lvblR5cGUgbV9zZXNzaW9uVHlwZTsKICAgICBSZWY8Q0RNPiBtX2ltcGxlbWVu
dGF0aW9uOwogICAgIFJlZjxDRE1JbnN0YW5jZVNlc3Npb24+IG1faW5zdGFuY2VTZXNzaW9uOwot
ICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gbV9yZWNvcmRPZktleVVzYWdlOworICAgIFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1fcmVjb3JkT2ZLZXlVc2FnZTsKICAg
ICBkb3VibGUgbV9maXJzdERlY3J5cHRUaW1lIHsgMCB9OwogICAgIGRvdWJsZSBtX2xhdGVzdERl
Y3J5cHRUaW1lIHsgMCB9OwotICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4s
IE1lZGlhS2V5U3RhdHVzPj4gbV9zdGF0dXNlczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiBtX3N0YXR1c2VzOwogCiAg
ICAgdXNpbmcgRGlzcGxheUNoYW5nZWRPYnNlcnZlciA9IE9ic2VydmVyPHZvaWQoUGxhdGZvcm1E
aXNwbGF5SUQpPjsKICAgICBEaXNwbGF5Q2hhbmdlZE9ic2VydmVyIG1fZGlzcGxheUNoYW5nZWRP
YnNlcnZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKaW5kZXggNzNmNzRlNGY3MGZjOTJjMjJiZjg1
OWMwMjI4YTM0ZWFlYzU3OTdhMy4uMzk4ZThhYjFiNjU2YjQ0NTkyN2JlYjZiYzY5M2RkMzk5YTY4
N2FjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVN0YXR1c01hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKQEAgLTU2LDEyICs1NiwxMiBAQCB1bnNpZ25l
ZCBsb25nIE1lZGlhS2V5U3RhdHVzTWFwOjpzaXplKCkKICAgICByZXR1cm4gbV9zZXNzaW9uLT5z
dGF0dXNlcygpLnNpemUoKTsKIH0KIAotc3RhdGljIGJvb2wga2V5SWRzTWF0Y2goY29uc3QgU2hh
cmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIpCitzdGF0aWMgYm9vbCBrZXlJZHNN
YXRjaChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2Um
IGIpCiB7CiAgICAgYXV0byBsZW5ndGggPSBhLnNpemUoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBs
ZW5ndGggIT0gYi5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAh
c3RkOjptZW1jbXAoYS5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOworICAgIHJldHVybiAhc3Rk
OjptZW1jbXAoYS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOwog
fQogCiBib29sIE1lZGlhS2V5U3RhdHVzTWFwOjpoYXMoY29uc3QgQnVmZmVyU291cmNlJiBrZXlJ
ZCkKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxCdWZmZXJT
b3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5UwogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5kZXgr
K107Ci0gICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRh
dGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVy
OjpjcmVhdGUocGFpci5maXJzdC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBwYWlyLmZpcnN0
LT5zaXplKCkpOwogICAgIHJldHVybiBLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50
VHlwZSwgTWVkaWFLZXlTdGF0dXM+IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZl
cikpLCBwYWlyLnNlY29uZCB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKaW5kZXggYzIxMTExM2Ey
YzZkYWM3OTc5MjRhOTlkMmQyZGY5N2MyZTY1Zjg1MC4uNjBkNjJhYWZmODA3NGRhZGE2ZTMxYTNm
MmIzNzBhNmQ2ZDAxZjYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaApAQCAtMzgsNyArMzgsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYUtleVNlc3Npb247Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNZWRpYUtl
eVN0YXR1c01hcCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5U3RhdHVzTWFwPiB7CiBwdWJs
aWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5jcHAKaW5kZXggODNiMjRhY2VhYTViMTI5NGJiNGVhNDM5ZmIyZDVjNGY2Y2NkNDc1My4u
MDA2NTNiNGM0MDI4ZDVkNTQxNmE2NWYzZjllNTY5YWQ4YWM1M2EzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAtMTI5
LDcgKzEyOSw3IEBAIHZvaWQgTWVkaWFLZXlzOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShjb25zdCBC
dWZmZXJTb3VyY2UmIHNlcnZlckNlcnRpZmljYXRlLCBSZWY8CiAgICAgfQogCiAgICAgLy8gMy4g
TGV0IGNlcnRpZmljYXRlIGJlIGEgY29weSBvZiB0aGUgY29udGVudHMgb2YgdGhlIHNlcnZlckNl
cnRpZmljYXRlIHBhcmFtZXRlci4KLSAgICBhdXRvIGNlcnRpZmljYXRlID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2VydmVyQ2VydGlmaWNhdGUuZGF0YSgpLCBzZXJ2ZXJDZXJ0aWZpY2F0ZS5sZW5n
dGgoKSk7CisgICAgYXV0byBjZXJ0aWZpY2F0ZSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzZXJ2ZXJDZXJ0aWZpY2F0ZS5kYXRhKCksIHNlcnZlckNlcnRpZmljYXRlLmxlbmd0aCgp
KTsKIAogICAgIC8vIDQuIExldCBwcm9taXNlIGJlIGEgbmV3IHByb21pc2UuCiAgICAgLy8gNS4g
UnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6CkBAIC0xNzcsNyArMTc3LDcgQEAg
Ym9vbCBNZWRpYUtleXM6Omhhc09wZW5TZXNzaW9ucygpIGNvbnN0CiAgICAgICAgIH0pOwogfQog
Ci12b2lkIE1lZGlhS2V5czo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChj
b25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkK
K3ZvaWQgTWVkaWFLZXlzOjp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNv
bnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBp
bml0RGF0YSkKIHsKICAgICBmb3IgKGF1dG8mIGNkbUNsaWVudCA6IG1fY2RtQ2xpZW50cykKICAg
ICAgICAgY2RtQ2xpZW50LmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVj
ZWl2ZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0YS5jb3B5UmVmKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5kZXggN2I1OWEzYmM2
ZDIyNTZmYzY1NmYwOGNiZjI2ODkxODUxMDk4M2EyMi4uOTFhMWEwNzExNDMzYmUyNDdkZDJhODVj
NWY0YWQwOTM4YTA5YTdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5cy5oCkBAIC04Niw3ICs4Niw3IEBAIHByb3RlY3RlZDoKICAgICBN
ZWRpYUtleXMoRG9jdW1lbnQmLCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgYm9vbCBw
ZXJzaXN0ZW50U3RhdGVBbGxvd2VkLCBjb25zdCBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4m
LCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2U+JiYpOwogCiAgICAgLy8gQ0RNSW5zdGFuY2VD
bGllbnQKLSAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29u
c3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCB1bnJlcXVl
c3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAog
ICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXI7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCAyZmRjNGMwMDIx
ZjZlMWZkZWM0NWY4ZmFmNjA5MDZjMmJmODJlM2IxLi5mMTJjODhmZWU5YTgwNzRiNTA4ZWY5NTcx
ZTcwMWY1NjgyZmI0OTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZl
dGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXMKIHZvaWQg
RmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVyID0g
Zm9ybURhdGFCb2R5KCkuYXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAgICBtX2NvbnN1bWVyLnJl
c29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFy
ZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NvbnN1
bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgp
LCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5z
aXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlr
ZSB3ZSBkbyBvdGhlciBibG9icy4KQEAgLTI3Miw3ICsyNzIsNyBAQCBSZWZQdHI8Rm9ybURhdGE+
IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoKSBjb25zdAogICAgIGlmIChpc0Zvcm1EYXRhKCkp
CiAgICAgICAgIHJldHVybiAmY29uc3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRhQm9keSgpKTsK
ICAgICBpZiAoYXV0byogZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpKQotICAgICAgICByZXR1cm4g
Rm9ybURhdGE6OmNyZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgIHJl
dHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0
YS0+c2l6ZSgpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMjg0LDcgKzI4NCw3IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6
dGFrZSgpCiAgICAgICAgIGF1dG8gYnVmZmVyID0gbV9jb25zdW1lci50YWtlRGF0YSgpOwogICAg
ICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBy
ZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIHJldHVybiBidWZmZXItPm1h
a2VDb250aWd1b3VzKCk7CiAgICAgfQogCiAgICAgaWYgKGlzQmxvYigpKSB7CkBAIC0yOTcsMTQg
KzI5NywxNCBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAg
ICByZXR1cm4gZm9ybURhdGFCb2R5KCk7CiAKICAgICBpZiAoaXNUZXh0KCkpCi0gICAgICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHko
KSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHko
KSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKICAgICBpZiAoaXNVUkxTZWFyY2hQ
YXJhbXMoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGlu
ZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVI
YW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRv
U3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAKICAgICBpZiAoaXNB
cnJheUJ1ZmZlcigpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVy
Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRh
dGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAgICAgaWYgKGlzQXJyYXlC
dWZmZXJWaWV3KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkp
LCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
YXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5
KCkuYnl0ZUxlbmd0aCgpKTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggYmFkMWI1ZWEyM2I3NzFiMzQ3ZjRiMDRh
NTY3NThmYzAwODhlMTJlNC4uMDg5ODNlYzAwNDNmNmM5OWE3ZmFlYWZjNjkzY2U4MjgyM2I0MDFi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCkBAIC02NCw3ICs2
NCw3IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxGb3JtRGF0YT4gYm9keUFzRm9ybURhdGEoKSBj
b25zdDsKIAotICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJf
dCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFRha2VuRGF0
YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PjsKICAgICBUYWtlbkRhdGEgdGFrZSgpOwogCiAgICAgdm9pZCBz
ZXRBc0Zvcm1EYXRhKFJlZjxGb3JtRGF0YT4mJiBkYXRhKSB7IG1fZGF0YSA9IFdURk1vdmUoZGF0
YSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5jcHAKaW5kZXggZmNjMjE2YTAxY2RmNjk4NjUwODU4NzY3NWYwOWQ4Yjc5ZmY2MmIzYi4u
MjIxM2Q2MjMwM2VmZTJhMWY3Mjk4MjYwZjU4ODYwYjc3NmZiMjY3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTI0Miw3
ICsyNDIsNyBAQCBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29ucwogCiB2b2lkIEZldGNoQm9keUNvbnN1
bWVyOjpjbGVhbigpCiB7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIG1fYnVmZmVyLnJl
c2V0KCk7CiAgICAgcmVzZXRDb25zdW1lUHJvbWlzZSgpOwogICAgIGlmIChtX3NpbmspIHsKICAg
ICAgICAgbV9zaW5rLT5jbGVhckNhbGxiYWNrKCk7CkBAIC0yNjYsMTYgKzI2NiwxOCBAQCB2b2lk
IEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSwgY29uc3QgU3RyaW5nJiBjbwogewogICAgIGlmIChzdHJlYW0pIHsKICAgICAgICAgQVNTRVJU
KCFtX3NpbmspOwotICAgICAgICBtX3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVy
U2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0
KSBtdXRhYmxlIHsKKyAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZl
clNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRC
dWZmZXJCdWlsZGVyKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAg
ICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBp
ZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBk
YXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21p
c2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAg
ICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwor
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhLnRh
a2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVB
bmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBidWZmZXItPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICAgICAg
bV9zaW5rLT5waXBlRnJvbSgqc3RyZWFtKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzA2LDcgKzMw
OCw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlz
ZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgIHJldHVybjsKICAgICBjYXNl
IEZldGNoQm9keUNvbnN1bWVyOjpUeXBlOjpGb3JtRGF0YTogewogICAgICAgICBhdXRvIGJ1ZmZl
ciA9IHRha2VEYXRhKCk7Ci0gICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1E
YXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxw
dHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCisgICAgICAgIGlmIChhdXRvIGZvcm1E
YXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+
c2l6ZSgpIDogMCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxE
T01Gb3JtRGF0YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChUeXBlRXJyb3IpOwpAQCAtMzI0LDE2ICszMjYsMjAgQEAgdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiAg
ICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6
ZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICghbV9idWZmZXIpIHsKLSAgICAg
ICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBtX2J1ZmZlci0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1f
YnVmZmVyLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0
Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldERh
dGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKLSAgICByZXR1cm4gV1RG
TW92ZShtX2J1ZmZlcik7CisgICAgbV9idWZmZXIucmVzZXQoKTsKKyAgICBtX2J1ZmZlci5hcHBl
bmQoV1RGTW92ZShkYXRhKSk7Cit9CisKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBG
ZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQoreworICAgIGlmICghbV9idWZmZXIpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX2J1ZmZlci50YWtlKCk7CiB9CiAKIFJl
ZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZm
ZXIoKQpAQCAtMzQxLDkgKzM0Nyw3IEBAIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQogICAgIGlmICghbV9idWZmZXIpCiAgICAg
ICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxwdHIsIDApOwogCi0gICAgYXV0
byBhcnJheUJ1ZmZlciA9IG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwotICAgIG1f
YnVmZmVyID0gbnVsbHB0cjsKLSAgICByZXR1cm4gYXJyYXlCdWZmZXI7CisgICAgcmV0dXJuIG1f
YnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKIH0KIAogUmVmPEJsb2I+IEZl
dGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCkBAIC0zNTEsOSArMzU1LDcgQEAgUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgaWYgKCFtX2J1ZmZl
cikKICAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZXh0LCBWZWN0b3I8dWludDhfdD4o
KSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKG1fY29udGVudFR5cGUpKTsKIAotICAgIGF1
dG8gYnVmZmVyID0gc3RkOjpleGNoYW5nZShtX2J1ZmZlciwgbnVsbHB0cik7Ci0gICAgYXV0byBk
YXRhID0gYnVmZmVyLT5leHRyYWN0RGF0YSgpOwotICAgIHJldHVybiBibG9iRnJvbURhdGEoY29u
dGV4dCwgV1RGTW92ZShkYXRhKSwgbV9jb250ZW50VHlwZSk7CisgICAgcmV0dXJuIGJsb2JGcm9t
RGF0YShjb250ZXh0LCBtX2J1ZmZlci50YWtlKCktPmV4dHJhY3REYXRhKCksIG1fY29udGVudFR5
cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQpAQCAtMzYy
LDggKzM2NCw4IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCiAgICAg
aWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgYXV0byB0ZXh0
ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVmZmVyLT5kYXRhKCksIG1f
YnVmZmVyLT5zaXplKCkpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICBhdXRvIGJ1ZmZl
ciA9IG1fYnVmZmVyLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIHRleHQgPSBU
ZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKICAgICByZXR1cm4gdGV4dDsKIH0KIApAQCAtMzgzLDEwICszODUsOCBAQCB2b2lk
IEZldGNoQm9keUNvbnN1bWVyOjpyZXNldENvbnN1bWVQcm9taXNlKCkKIHZvaWQgRmV0Y2hCb2R5
Q29uc3VtZXI6OnNldFNvdXJjZShSZWY8RmV0Y2hCb2R5U291cmNlPiYmIHNvdXJjZSkKIHsKICAg
ICBtX3NvdXJjZSA9IFdURk1vdmUoc291cmNlKTsKLSAgICBpZiAobV9idWZmZXIpIHsKLSAgICAg
ICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwot
ICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgfQorICAgIGlmIChtX2J1ZmZlcikKKyAg
ICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXIudGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpKTsKIH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6bG9hZGluZ0ZhaWxlZChjb25z
dCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCAyYjA1NmYxMjY0M2JhOTY3ZmU0MWEwMTUxM2E4
OWI3MzYyNjQyZDRjLi44NzFkMmMwODYzMzFhOTgyOTRhMTY2YTRiNDJlMzE4NGUwMzc3NzJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5o
CkBAIC01MCwxMCArNTAsMTAgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJu
ICEhbV9idWZmZXI7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0YShSZWY8U2hhcmVkQnVmZmVy
PiYmIGRhdGEpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGRhdGEpOyB9CisgICAgY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdl
dCgpOyB9CisgICAgdm9pZCBzZXREYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRha2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHRha2VEYXRhKCk7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZm
ZXI+IHRha2VBc0FycmF5QnVmZmVyKCk7CiAgICAgU3RyaW5nIHRha2VBc1RleHQoKTsKIApAQCAt
ODIsNyArODIsNyBAQCBwcml2YXRlOgogCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5nIG1f
Y29udGVudFR5cGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKICAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBt
X2NvbnN1bWVQcm9taXNlOwogICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVy
U2luaz4gbV9zaW5rOwogICAgIFJlZlB0cjxGZXRjaEJvZHlTb3VyY2U+IG1fc291cmNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAppbmRleCBlOTg5MTQx
Yjc3YjhlM2VlNjg5MWY1ZTQ1YmUwYzMyZTk5ODQwNGJkLi5lM2VjNDljNDA1ODMwZTU0MDc0NDk5
Mjc0YjU2OTVhMmI5OTIwOTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoTG9hZGVyLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgRmV0Y2hMb2FkZXI6OnN0b3Ao
KQogICAgICAgICBtX2xvYWRlci0+Y2FuY2VsKCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IEZldGNoTG9hZGVyOjpzdGFydFN0cmVhbWluZygpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gRmV0Y2hMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKIHsKICAgICBBU1NFUlQobV9jb25z
dW1lcik7CiAgICAgYXV0byBmaXJzdENodW5rID0gbV9jb25zdW1lci0+dGFrZURhdGEoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAppbmRleCA0MDcyOGQyNTdl
ODQzYzQxMTQ4NmZkNmU0MzgwNzA0NDMxYWNmY2EyLi4wM2RhYzEwN2YyYmZmZDNlYzU2MzVhNjNh
YTk1YjM1MDg1MGRhOTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExv
YWRlci5oCkBAIC0zOSwxNCArMzksMTQgQEAgY2xhc3MgRmV0Y2hCb2R5Q29uc3VtZXI7CiBjbGFz
cyBGZXRjaExvYWRlckNsaWVudDsKIGNsYXNzIEZldGNoUmVxdWVzdDsKIGNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBGZXRjaExvYWRlciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBGZXRjaExvYWRlcihGZXRjaExvYWRlckNsaWVu
dCYsIEZldGNoQm9keUNvbnN1bWVyKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgfkZldGNoTG9hZGVy
KCk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzdGFydFN0cmVhbWluZygpOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzdGFydFN0cmVhbWluZygpOwogCiAgICAgdm9p
ZCBzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRmV0Y2hSZXF1ZXN0Jik7CiAg
ICAgdm9pZCBzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgQmxvYiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNWQ0
NTJjZTI4OGNlZGMwMjkzMmQ5Mzk2ZjY0NjAwNDZlNDZiZDUzNi4uOWIyZGYxZmE4YTAxMWE0YTY5
YjEwZDRlNzZhNDFjMGZiMmY0ZmM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9pZCBGZXRjaFJlc3Bv
bnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5rQ2Fs
bGJhY2smJgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3BhbiBjaHVu
ayB7IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBjb250aWd1b3VzQnVm
ZmVyID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5rIHsgY29udGlndW91
c0J1ZmZlci0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJh
Y2soJmNodW5rKTsKIH0KIApAQCAtNDQxLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6
c2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFk
ZGluCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLnNl
dEFzRm9ybURhdGEoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBbdGhp
c10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhpc10oUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlOdWxs
KCkpCiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLmNv
bnN1bWVyKCkuc2V0RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpAQCAtNTAzLDcgKzUwNCw3IEBAIHZv
aWQgRmV0Y2hSZXNwb25zZTo6ZmVlZFN0cmVhbSgpCiAgICAgY2xvc2VTdHJlYW0oKTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RhcnRTdHJl
YW1pbmcoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoUmVzcG9uc2U6OkJv
ZHlMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKIHsKICAgICBBU1NFUlQobV9sb2FkZXIpOwogICAg
IHJldHVybiBtX2xvYWRlci0+c3RhcnRTdHJlYW1pbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggYmM1ODU0ZjliOTY2ZmI2MzI5ZDE2ZmRl
NjE4Y2NlYjFkOGM5NGNhOS4uYjE1NGNmOGUwODVhOTYwNWZkYWYzMWQxZWZhMmFjNzg3OTljMTk4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAg
LTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmVlZFN0cmVhbSgpIGZpbmFsOwogICAg
IHZvaWQgY2FuY2VsKCkgZmluYWw7CiAKLSAgICB1c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6OnZh
cmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsK
KyAgICB1c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJl
ZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CiAgICAgUmVzcG9uc2VE
YXRhIGNvbnN1bWVCb2R5KCk7CiAgICAgdm9pZCBzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiwg
dWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluZyk7CiAKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2
YXRlOgogCiAgICAgICAgIHZvaWQgY29uc3VtZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVu
a0NhbGxiYWNrJiYpOwogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFt
aW5nKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzdGFydFN0cmVh
bWluZygpOwogICAgICAgICBOb3RpZmljYXRpb25DYWxsYmFjayB0YWtlTm90aWZpY2F0aW9uQ2Fs
bGJhY2soKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVzcG9uc2VDYWxsYmFjayk7IH0KICAgICAgICAg
Q29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2sgdGFrZUNvbnN1bWVEYXRhQ2FsbGJhY2soKSB7IHJl
dHVybiBXVEZNb3ZlKG1fY29uc3VtZURhdGFDYWxsYmFjayk7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAppbmRleCBkZDE5Yzg3MGFhN2Qy
NDg1ZjdlOWNhODQ5MmE4NDIxMzUyZGRkMDQxLi40MmFhMTMzZjg0YzFmZDEwYTJiOWNkN2MyNGRl
YjZlN2MyMjdjOTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHQuaApAQCAtMzgsNyArMzgsNyBAQCBlbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3Vw
Rm9ySGlnaGxpZ2h0IDogYm9vbCB7IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgSGlnaGxpZ2h0UmVx
dWVzdE9yaWdpbmF0ZWRJbkFwcCA6IGJvb2wgeyBObywgWWVzIH07CiAKIHN0cnVjdCBBcHBIaWdo
bGlnaHQgewotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGhpZ2hsaWdodDsKKyAgICBS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaGlnaGxpZ2h0OwogICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiB0ZXh0OwogICAgIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGlz
TmV3R3JvdXA7CiAgICAgSGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCByZXF1ZXN0T3Jp
Z2luYXRlZEluQXBwOwpAQCAtNTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgog
dm9pZCBBcHBIaWdobGlnaHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAg
IGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUoKSk7Ci0gICAg
ZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCksIGhpZ2hsaWdo
dC0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGln
aHQtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOwogCiAg
ICAgZW5jb2RlciA8PCB0ZXh0OwogCkBAIC05MSw3ICs5MSw3IEBAIHN0ZDo6b3B0aW9uYWw8QXBw
SGlnaGxpZ2h0PiBBcHBIaWdobGlnaHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4ge3sgU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShoaWdobGlnaHQpKSwgV1RGTW92ZSgqdGV4dCksIGlzTmV3R3JvdXAsIHJlcXVlc3RPcmln
aW5hdGVkSW5BcHAgfX07CisgICAgcmV0dXJuIHt7IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGhpZ2hsaWdodCkpLCBXVEZNb3ZlKCp0ZXh0KSwgaXNOZXdHcm91cCwgcmVx
dWVzdE9yaWdpbmF0ZWRJbkFwcCB9fTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKaW5kZXgg
ZTJkOWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJkMDRhNDU3NmMwNi4uZjVkNGI0N2E1OTlmNGQz
MjYzYmE5NmVhOGM5NDIwNjQ3NGIwNDRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCkBAIC00NCwx
OSArNDQsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdGV4cHIgdWludDY0X3QgaGln
aGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1
cmUgIChBKXBwbGUoQVApcGxpY2F0aW9uKEgpaWdobGlnaHRzKDIwMjEpCiAKLXN0ZDo6b3B0aW9u
YWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIo
KTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICBhdXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3Rk
OjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBk
YXRhOwogICAgIHJldHVybiBkYXRhOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBBcHBIaWdobGln
aHRSYW5nZURhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsK
ICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGVuY29kZXI7CiAgICAgZW5jb2RlciA8PCAq
dGhpczsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwg
ZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Tm9kZVBh
dGhDb21wb25lbnQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEu
aAppbmRleCBjZjYzODFhY2ZiMGE1MjExYjQzNTA4YjdiNTE3ZDZkYjJmNmZjNzQzLi5iNWRhZjYw
MjUzOThhM2Y3ZTZmMWQzN2FiZWNlODQ0ZDRmMWM2NTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaApAQCAt
MzMsMTIgKzMzLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShBUFBfSElH
SExJR0hUUykKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhIHsKIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gY3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0
YT4gY3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBzdHJ1Y3QgTm9k
ZVBhdGhDb21wb25lbnQgewogICAgICAgICBTdHJpbmcgaWRlbnRpZmllcjsKICAgICAgICAgU3Ry
aW5nIG5vZGVOYW1lOwpAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
PiBkZWNvZGUoRGVjb2RlciYpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdG9TaGFyZWRCdWZm
ZXIoKSBjb25zdDsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdG9TaGFyZWRCdWZm
ZXIoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9y
YWdlLmNwcAppbmRleCBkYzM5YTBmMGQxOGZmZmNhN2RmYjQ2NTIxOWNkNjEyYTlmNzM4ZjhmLi5l
NWRlODQ5NGYzNTA0NTM1OTRiMmYyZTg4YzNkZGEzM2ZhOWFmNzA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNw
cApAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6c3RvcmVBcHBI
aWdobGlnaHQoUmVmPFN0YXRpY1JhbmdlPiYmIHJhbmdlKQogICAgIG1fZG9jdW1lbnQtPnBhZ2Uo
KS0+Y2hyb21lKCkuc3RvcmVBcHBIaWdobGlnaHQoV1RGTW92ZShoaWdobGlnaHQpKTsKIH0KIAot
dm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIFNjcm9sbFRvSGlnaGxpZ2h0IHNjcm9sbCkKK3Zv
aWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgU2Nyb2xsVG9IaWdobGlnaHQgc2Ny
b2xsKQogewogICAgIGF1dG8gYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhID0gQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhOjpjcmVhdGUoYnVmZmVyKTsKICAgICBpZiAoIWFwcEhpZ2hsaWdodFJhbmdlRGF0YSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFN0b3JhZ2UuaAppbmRleCBiMTUyZjc2ZWQ0MjQwODkyZWE3ZGUyMWUyY2IwNmQ0NzJkODczMzYw
Li5lMjc2NjMzYjQ4NGY4MTA5NGFkZWNlNDVmNjRhYmJlZDE3ODEyNTAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5o
CkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoQVBQX0hJ
R0hMSUdIVFMpCiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0YXRpY1JhbmdlOwogY2xhc3MgSGlnaGxp
Z2h0OwogCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB+QXBwSGlnaGxpZ2h0U3RvcmFn
ZSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9yZUFwcEhpZ2hsaWdodChSZWY8U3Rh
dGljUmFuZ2U+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdG9yZUFuZFNjcm9sbFRv
QXBwSGlnaGxpZ2h0KFJlZjxTaGFyZWRCdWZmZXI+JiYsIFNjcm9sbFRvSGlnaGxpZ2h0KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU2Nyb2xsVG9IaWdobGlnaHQpOwogICAgIHZvaWQg
cmVzdG9yZVVucmVzdG9yZWRBcHBIaWdobGlnaHRzKCk7CiAgICAgTW9ub3RvbmljVGltZSBsYXN0
UmFuZ2VTZWFyY2hUaW1lKCkgY29uc3QgeyByZXR1cm4gbV90aW1lQXRMYXN0UmFuZ2VTZWFyY2g7
IH0KICAgICB2b2lkIHJlc2V0TGFzdFJhbmdlU2VhcmNoVGltZSgpIHsgbV90aW1lQXRMYXN0UmFu
Z2VTZWFyY2ggPSBNb25vdG9uaWNUaW1lOjpub3coKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3Bw
CmluZGV4IDJhMmMxZmMzMjk1ODA1ZDUyZmQ1NmFmMzBiNDU1YWUyY2NjYzQ4NzcuLmExYzkzMTJk
NDVlYmJmY2U5ZjMyZTZjYzFhMWEyZTg0ZGRjYTdjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5j
cHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIEtl
eVBhdGhUeXBlIHsgTnVsbCwgU3RyaW5nLCBBcnJheSB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtl
eVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0
aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQogewogICAgIGF1dG8g
ZW5jb2RlciA9IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOwogCkBAIC0yODIsMTMgKzI4MiwxMyBA
QCBzdGF0aWMgdm9pZCBlbmNvZGVLZXkoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBjb25zdCBJREJL
ZXlEYXRhJiBrZXkpCiAgICAgfQogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJ
REJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKICAg
ICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7
CiAKICAgICBlbmNvZGVLZXkoZGF0YSwga2V5KTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZUtleShjb25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJ
REJLZXlEYXRhJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAppbmRleCA2NWM0YTYzYzc4N2Yz
Njk0MTQ2ZTIzMWM4YzU0MDE3MDY3YTRmNDI0Li5hYWZkYjM3MDFmMGVmNDQ4ZDZiOGFiNTEwMTE4
NWM0YjM0ZmZhYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKQEAgLTMyLDEwICszMiwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQktleURhdGE7CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRo
PiYpOworUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgo
Y29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktl
eVBhdGgoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgc3RkOjpvcHRp
b25hbDxJREJLZXlQYXRoPiYpOwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlEYXRhKGNvbnN0IElEQktleURhdGEmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmKTsKIGJvb2wgZGVzZXJpYWxp
emVJREJLZXlEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIElE
QktleURhdGEmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmNwcAppbmRleCAwYWZiN2VlNWNjODc0MzU2YjM1YTE2ODAzMjMxYTYxMzY0YzA5
ODYxLi4yN2NkOGVlYzUzZTFhY2ZjNTk4NWVjN2I4ZjA1ZTIyNzY0NWM4NzdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtNjg2LDcgKzY4Niw3IEBAIGJvb2wgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KElEQk9iamVjdFN0b3JlSW5mbyYgb2Jq
ZWN0U3RvcmVJbmZvCiAgICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oKm1fc3FsaXRl
REIpOwogICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAg
IGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsK
ICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTE3NCw3ICsxMTc0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAg
ICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUg
YW4gb2JqZWN0IHN0b3JlIGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07
CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxp
emVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2Vy
aWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBz
YXZlIGluIGRhdGFiYXNlIGZvciBuZXcgb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0
byBzYXZlIGluIGRhdGFiYXNlIGZvciBuZXcgb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xMzg3LDcg
KzEzODcsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhYwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRleCBpbiBhIG5vbi12
ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgo
KSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQ
YXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleVBhdGggdG8gY3JlYXRlIGluZGV4IGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNDY0LDcgKzE0
NjQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4
UmVjb3JkKGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbwogewogICAgIGhhc1JlY29yZCA9IGZhbHNl
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBp
biB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGluZGV4IHJlY29yZCBp
biBkYXRhYmFzZSJfcyB9OwpAQCAtMTUzMywxMyArMTUzMywxMyBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKGludDY0X3Qgb2JqZWN0U3Rv
cmVJRCwgaQogewogICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVu
Y2hlY2tlZFB1dEluZGV4UmVjb3JkIC0gJXMsICVzIiwga2V5VmFsdWUubG9nZ2luZ1N0cmluZygp
LnV0ZjgoKS5kYXRhKCksIGluZGV4S2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4g
dGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJh
c2UiX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOworICAgIGF1dG8gdmFsdWVCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKICAgICBpZiAoIXZhbHVlQnVmZmVyKSB7CiAg
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUgdG8gYmUgc3Rv
cmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0
YWJhc2UiX3MgfTsKQEAgLTE2NjEsNyArMTY2MSw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
CiAgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAg
ICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzZWUgaWYg
a2V5IGV4aXN0cyBpbiBvYmplY3RzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0
aW9uIl9zIH07CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4g
b2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBleGlzdGVuY2UgaW4gb2Jq
ZWN0IHN0b3JlIl9zIH07CkBAIC0xNzQxLDcgKzE3NDEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZChTUUxpdGVJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24sCiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6
OlJlYWRvbmx5KTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNhY3Rpb24pOwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsK
KyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAg
aWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleURhdGEgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktl
eURhdGEgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTk2Miw3ICsx
OTYyLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qg
c3RvcmUgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEp
OworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAg
ICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkg
dG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMjEyNCw3ICsyMTI0LDcg
QEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBhdXRvIGtleSA9IGtleVJhbmdlLmxvd2Vy
S2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1p
bmltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXkpOwogICAgIGlmICghbG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBs
b3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIl9zIH07CkBAIC0yMTMzLDcgKzIxMzMsNyBAQCBJ
REJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGtleSA9IGtleVJhbmdlLnVwcGVyS2V5OwogICAg
IGlmIChrZXkuaXNOdWxsKCkpCiAgICAgICAgIGtleSA9IElEQktleURhdGE6Om1heGltdW0oKTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5KTsKKyAgICBhdXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkp
OwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
c2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJu
IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJL
ZXkgaW4gbG9va3VwIHJhbmdlIl9zIH07CkBAIC0yNDQzLDcgKzI0NDMsNyBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KGlu
dDY0X3QgaW5kZXhJRAogCiAgICAgQVNTRVJUKGtleS5pc1ZhbGlkKCkgJiYga2V5LnR5cGUoKSAh
PSBJbmRleGVkREI6OktleVR5cGU6Ok1heCAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5
VHlwZTo6TWluKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
a2V5KTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBz
ZXJpYWxpemUgSURCS2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCIpOwogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktl
eSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQiX3MgfTsKQEAgLTI1MDgsMTQgKzI1MDgsMTQg
QEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudChjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW8KICAgICBvdXRDb3VudCA9IDA7CiAKICAgICBhdXRv
IGxvd2VyS2V5ID0gcmFuZ2UubG93ZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptaW5pbXVt
KCkgOiByYW5nZS5sb3dlcktleTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7
CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4g
bG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291
bnQgb3BlcmF0aW9uIl9zIH07CiAgICAgfQogCiAgICAgYXV0byB1cHBlcktleSA9IHJhbmdlLnVw
cGVyS2V5LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6bWF4aW11bSgpIDogcmFuZ2UudXBwZXJLZXk7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKHVwcGVyS2V5KTsKKyAgICBhdXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0
YSh1cHBlcktleSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXpl
IHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQ3Vyc29yLmNwcAppbmRleCA4YmZlMjI3ZGI2MTk2MjNiZDhkZjA2YTEwODU4Y2Yw
MzIxYzQzMjA2Li40ODYxMDM0ZDNhMTJkYTBjMDljZmVkZmU5ZjJlYTY1YTY4MTAwMzUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
Q3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQ3Vyc29yLmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vy
c29yOjpiaW5kQXJndW1lbnRzKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJy
ZW50TG93ZXJLZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1
cnJlbnRMb3dlcktleSk7CiAgICAgaWYgKG1fc3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50Qmlu
ZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1Io
IkNvdWxkIG5vdCBjcmVhdGUgY3Vyc29yIHN0YXRlbWVudCAobG93ZXIga2V5KSIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0zMTUsNyArMzE1LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6
OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGtleSk7CiAgICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJl
bnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19F
UlJPUigiQ291bGQgbm90IGJpbmQgaWQgYXJndW1lbnQgdG8gcHJlIHN0YXRlbWVudCAoa2V5KSIp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggMGE0NjliZDBiZDFmMzhk
Y2I5NmIzOWQ4YzMwMDBhZjczZDEyYWI1OS4uYzlkNmRhNmJkZDlmOTM5NTAxZjRmNDIzMmI0Yzc4
MzdkODQwZGFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IE1lZGlhUmVjb3JkZXI6OnN0YXJ0UmVjb3JkaW5nKHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IHRpbWVTbGljCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3RhdGljIGlubGluZSBSZWY8Qmxv
YkV2ZW50PiBjcmVhdGVEYXRhQXZhaWxhYmxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkKK3N0YXRpYyBpbmxpbmUgUmVmPEJsb2JFdmVudD4gY3Jl
YXRlRGF0YUF2YWlsYWJsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgZG91YmxlIHRpbWVDb2RlKQogewogICAgIGF1dG8gYmxvYiA9IGJ1ZmZlciA/IEJsb2I6
OmNyZWF0ZShjb250ZXh0LCBidWZmZXItPmV4dHJhY3REYXRhKCksIG1pbWVUeXBlKSA6IEJsb2I6
OmNyZWF0ZShjb250ZXh0KTsKICAgICByZXR1cm4gQmxvYkV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmRhdGFhdmFpbGFibGVFdmVudCwgQmxvYkV2ZW50OjpJbml0IHsgeyBmYWxzZSwgZmFsc2Us
IGZhbHNlIH0sIFdURk1vdmUoYmxvYiksIHRpbWVDb2RlIH0sIEJsb2JFdmVudDo6SXNUcnVzdGVk
OjpZZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyLmgKaW5kZXggNzcxMmI0NDUyODM2N2Q4YzI3MjUwMmFkYmFhY2FhZjk3ODhj
YmRiMC4uMWU5Yjc0YWIxN2UzMTA4ZGI0MjA5YjliNGYwMjE0ZGExMWFjNmUwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5o
CkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoRXJyb3IoRXhj
ZXB0aW9uJiYpOwogCiAgICAgZW51bSBjbGFzcyBUYWtlUHJpdmF0ZVJlY29yZGVyIHsgTm8sIFll
cyB9OwotICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPjsKKyAgICB1
c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+OwogICAgIHZv
aWQgZmV0Y2hEYXRhKEZldGNoRGF0YUNhbGxiYWNrJiYsIFRha2VQcml2YXRlUmVjb3JkZXIpOwog
CiAgICAgLy8gTWVkaWFTdHJlYW06Ok9ic2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCmluZGV4IDNmNGM5YmNkMTMz
YWMyOWYzZjdkZGUxOTk0NzhlMzkyNTdkNWU2NmIuLjg3NGFhN2YwYjE4ZjBlZTc1ODgwYmE1ZjVl
ZjY3ZDQ3YmZjMmIyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQXJ0d29y
a0ltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNv
bnN0IE5ldHdvcmtMCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gU2FuaXRpemUgdGhl
IGltYWdlIGJ5IGRlY29kaW5nIGl0IGludG8gYSBCaXRtYXBJbWFnZS4KLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0
YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXpl
ID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIGF1dG8gYml0bWFwSW1hZ2Ug
PSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgYml0bWFwSW1hZ2UtPnNldERhdGEoV1RGTW92
ZShidWZmZXJUb1Nhbml0aXplKSwgdHJ1ZSk7CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1Nv
dXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJj
ZUJ1ZmZlci5jcHAKaW5kZXggMmIzY2RlMzYwODI0NzFjMTFjODdmY2Y2MWNjODFjYzM2MGMzOWQ5
MC4uYTc1ZjQxNmRiMWQ4ZDEwMTU2YTJjYWIyNWIzNjBmYjk0ZTVmNzRkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAt
NTAwLDcgKzUwMCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVm
ZmVySW50ZXJuYWwoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwKICAgICAvLyBOT1RFOiBSZXR1
cm4gdG8gMy4yIGFwcGVuZEJ1ZmZlcigpCiAgICAgLy8gMy4gQWRkIGRhdGEgdG8gdGhlIGVuZCBv
ZiB0aGUgaW5wdXQgYnVmZmVyLgogICAgIEFTU0VSVCghbV9wZW5kaW5nQXBwZW5kRGF0YSk7Ci0g
ICAgbV9wZW5kaW5nQXBwZW5kRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUp
OworICAgIG1fcGVuZGluZ0FwcGVuZERhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSwgc2l6ZSk7CiAKICAgICAvLyA0LiBTZXQgdGhlIHVwZGF0aW5nIGF0dHJpYnV0ZSB0
byB0cnVlLgogICAgIG1fdXBkYXRpbmcgPSB0cnVlOwpAQCAtNTMwLDcgKzUzMCw3IEBAIHZvaWQg
U291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJUaW1lckZpcmVkKCkKICAgICAvLyBodHRwczovL2R2
Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL21lZGlhLXNvdXJjZS9tZWRpYS1z
b3VyY2UuaHRtbCNzb3VyY2VidWZmZXItc2VnbWVudC1wYXJzZXItbG9vcAogICAgIC8vIFdoZW4g
dGhlIHNlZ21lbnQgcGFyc2VyIGxvb3AgYWxnb3JpdGhtIGlzIGludm9rZWQsIHJ1biB0aGUgZm9s
bG93aW5nIHN0ZXBzOgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXBwZW5kRGF0YSA9IFdU
Rk1vdmUobV9wZW5kaW5nQXBwZW5kRGF0YSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGFwcGVuZERhdGEgPSBXVEZNb3ZlKG1fcGVuZGluZ0FwcGVuZERhdGEpOwogICAgIC8v
IDEuIExvb3AgVG9wOiBJZiB0aGUgaW5wdXQgYnVmZmVyIGlzIGVtcHR5LCB0aGVuIGp1bXAgdG8g
dGhlIG5lZWQgbW9yZSBkYXRhIHN0ZXAgYmVsb3cuCiAgICAgaWYgKCFhcHBlbmREYXRhIHx8ICFh
cHBlbmREYXRhLT5zaXplKCkpIHsKICAgICAgICAgc291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENv
bXBsZXRlKEFwcGVuZFJlc3VsdDo6QXBwZW5kU3VjY2VlZGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCmluZGV4IDUyMGMwNzc1Njk2
YTJmMGUyZTczMDA3MzVlOGM5Nzc0OTVmMWE2MTQuLmQ0Yzg1NzljMGJiZDQ0M2E1MTJmYTlmNjhj
NDI3ZWMwNDg4NWQwZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvU291cmNlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAtMjIyLDcgKzIyMiw3IEBAIHByaXZhdGU6CiAKICAgICBX
VEY6Ok9ic2VydmVyPHZvaWQqKCk+IG1fb3BhcXVlUm9vdFByb3ZpZGVyOwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsKICAgICBUaW1lciBtX2FwcGVuZEJ1
ZmZlclRpbWVyOwogCiAgICAgUmVmUHRyPFZpZGVvVHJhY2tMaXN0PiBtX3ZpZGVvVHJhY2tzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbFJlbW90ZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCmluZGV4IGZlYjFiOGZmZmI3Yjk0Yzll
N2ViMGJlNDhhZDM1ZGQ3MDc5YzcwYmIuLjQyMzM0ZmU4MjVlZDRiYTQyNmNmOTFiOTc3YWQwYmVi
NWVlZDcxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgyLDcg
KzgyLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkK
ICAgICBtX2lzUmVhZHlUb1NlbmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDog
bV9wZW5kaW5nTWVzc2FnZXMpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1v
dGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNz
YWdlLmJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3Jl
bW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOwogICAgIG1fcGVuZGluZ01l
c3NhZ2VzLmNsZWFyKCk7CiAKICAgICBpZiAobV9pc1BlbmRpbmdDbG9zZSkKQEAgLTk5LDcgKzk5
LDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnNldENsaWVudChSVENEYXRh
Q2hhbm5lbEhhbmRsZXJDbGllbnQmIGNsaWVudCwKIGJvb2wgUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyOjpzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiB0ZXh0KQogewogICAgIGlmICgh
bV9pc1JlYWR5VG9TZW5kKSB7Ci0gICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChNZXNz
YWdlIHsgZmFsc2UsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHQuZGF0YSgpLCB0ZXh0Lmxlbmd0
aCgpKSB9KTsKKyAgICAgICAgbV9wZW5kaW5nTWVzc2FnZXMuYXBwZW5kKE1lc3NhZ2UgeyBmYWxz
ZSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHQuZGF0YSgpLCB0ZXh0Lmxlbmd0
aCgpKSB9KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIG1fY29ubmVjdGlvbi0+
c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBmYWxzZSwgdGV4dC5kYXRhQXNVSW50OFB0cigp
LCB0ZXh0Lmxlbmd0aCgpKTsKQEAgLTEwOSw3ICsxMDksNyBAQCBib29sIFJUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlcjo6c2VuZFN0cmluZ0RhdGEoY29uc3QgQ1N0cmluZyYgdGV4dCkKIGJvb2wg
UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpzZW5kUmF3RGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAoIW1faXNSZWFkeVRvU2VuZCkgewotICAgICAg
ICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQoTWVzc2FnZSB7IHRydWUsIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEsIHNpemUpIH0pOworICAgICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQo
TWVzc2FnZSB7IHRydWUsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXpl
KSB9KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCB0cnVlLCBkYXRhLCBzaXplKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlci5oCmluZGV4IGY1ODI3ZGY5Mzc5NDkzZDI4MTI3MDE3N2NjZmJjYTA1
NTE1MzIzMWYuLjczOTQyYTgzNTkzMWE5ZDI4NGM2YTQ1MWJiOGRiZmI1NzY1Y2FkYWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxS
ZW1vdGVIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ7CiBjbGFzcyBSVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0aW9uOwogY2xhc3MgUlRDRXJyb3I7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBS
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIgZmluYWwgOiBwdWJsaWMgUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC03Myw3ICs3Myw3IEBAIHByaXZh
dGU6CiAKICAgICBzdHJ1Y3QgTWVzc2FnZSB7CiAgICAgICAgIGJvb2wgaXNSYXcgeyBmYWxzZSB9
OwotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBWZWN0b3I8TWVzc2FnZT4gbV9w
ZW5kaW5nTWVzc2FnZXM7CiAgICAgYm9vbCBtX2lzUGVuZGluZ0Nsb3NlIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtLmNwcAppbmRleCA4MzQyMDcwY2FjYmZjMjQzNjllY2EzMTFmMWQzODY0
ODRjOWJhMjI5Li44YWJkZDBkMzVlZmIzZjllMTJmMmUwNWY2NDgxYjdkMjAxNzM1YjY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRy
YW5zZm9ybS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTRnJhbWVUcmFuc2Zvcm0uY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBSVENSdHBTRnJh
bWVUcmFuc2Zvcm06OndpbGxDbGVhckJhY2tlbmQoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYgYmFj
a2VuZCkKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUZyYW1lKFNwYW48Y29uc3QgdWludDhfdD4gZGF0
YSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXImIHRyYW5zZm9ybWVyLCBTaW1wbGVSZWFkYWJsZVN0cmVhbVNvdXJjZSYgc291cmNlLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBXZWFrUHRyPFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybT4mIHdlYWtUcmFuc2Zvcm0pCiB7CiAgICAgYXV0byByZXN1bHQg
PSBwcm9jZXNzRnJhbWUoZGF0YSwgdHJhbnNmb3JtZXIsIGlkZW50aWZpZXIsIHdlYWtUcmFuc2Zv
cm0pOwotICAgIGF1dG8gYnVmZmVyID0gcmVzdWx0ID8gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZSgqcmVzdWx0KSkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGF1dG8gYnVmZmVy
ID0gcmVzdWx0ID8gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnJlc3Vs
dCkpIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgc291cmNlLmVucXVl
dWUodG9KUygmZ2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCBidWZmZXItPnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCkuZ2V0KCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggM2UxMTA1NDAwMzUzZGU1NjBmMjQ5MzhhOWIy
MDhlZjM2ZjY4MDNjNC4uODIzYjg4MzZjZjNhZTg2Njk5Y2Y1Yzg4ZDRiMzJkMWE1MGM4NjI4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3Bw
CkBAIC05Nyw4ICs5Nyw4IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRD
bGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQsCiAgICAgbV9jb250ZXh0
SWRlbnRpZmllciA9IGNvbnRleHRJZGVudGlmaWVyOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdl
IDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7Ci0gICAgICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsmXShS
ZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVS
YXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgc3dpdGNoT24obWVz
c2FnZSwgWyZdKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgZGF0YSkgeworICAgICAgICAg
ICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwgWyZdKFN0cmluZyYgdGV4dCkgewogICAgICAg
ICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdEYXRhKHRleHQpOwogICAgICAgICB9LCBbJl0o
U3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIExpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6T25NZXNzYWdlKGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZl
ciYgYnVmZmVyKQogICAgIGlmICghbV9oYXNDbGllbnQpIHsKICAgICAgICAgYXV0byogZGF0YSA9
IGJ1ZmZlci5kYXRhLmRhdGE8dWludDhfdD4oKTsKICAgICAgICAgaWYgKGJ1ZmZlci5iaW5hcnkp
Ci0gICAgICAgICAgICBtX2J1ZmZlcmVkTWVzc2FnZXMuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEsIGJ1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWRNZXNzYWdl
cy5hcHBlbmQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGJ1ZmZlci5zaXpl
KCkpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9idWZmZXJlZE1lc3NhZ2VzLmFwcGVu
ZChTdHJpbmc6OmZyb21VVEY4KGRhdGEsIGJ1ZmZlci5zaXplKCkpKTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAppbmRl
eCA0MWY5NTI4MjFlNjIwMDkzZjhlZWZlMzJjNWVkNGFlMGY1ZTU0MTk3Li4xMWJkNDVkZTkxNTU3
NzlmZmM5ZWZiMDNlOTU1MjhmMDVlNjRkNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaApAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogICAg
ICAgICBSVENEYXRhQ2hhbm5lbFN0YXRlIHN0YXRlOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPHdl
YnJ0Yzo6UlRDRXJyb3I+IGVycm9yOwogICAgIH07Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6
dmFyaWFudDxTdGF0ZUNoYW5nZSwgU3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNp
bmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxTdGF0ZUNoYW5nZSwgU3RyaW5nLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAgIHVzaW5nIFBlbmRpbmdNZXNzYWdlcyA9IFZlY3RvcjxN
ZXNzYWdlPjsKICAgICB2b2lkIHN0b3JlTWVzc2FnZShQZW5kaW5nTWVzc2FnZXMmLCBjb25zdCB3
ZWJydGM6OkRhdGFCdWZmZXImKTsKICAgICB2b2lkIHByb2Nlc3NNZXNzYWdlKGNvbnN0IHdlYnJ0
Yzo6RGF0YUJ1ZmZlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDMwOWMwMjY0M2Y1YTdhZTlm
ZWMwOGExNGViMjEyMjQwOWIxZjg5ZTAuLjYzZjFjM2NiZTFlYTgxY2ZiZjQ1NDY0NjMyMGNkZjdm
YWNmNTljMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEhU
TUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fc291
cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBtX2RhdGEucmVzZXQo
KTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYgKG1fcmVzb3VyY2UpIHsK
QEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChj
b25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7CiAKICAgICBtX3Jlc291
cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMp
OwpAQCAtMTgwLDggKzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9kZWxF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzCiB2b2lkIEhUTUxN
b2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVz
b3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAg
ICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRh
dGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikK
QEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH07CiAKICAg
ICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewotICAgICAgICBtX2RhdGEg
PSBudWxscHRyOworICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAgICAgICBpbnZhbGlkYXRl
UmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0yMDQsNyArMjAzLDcgQEAg
dm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRy
dWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCku
Z2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVs
ID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCBy
ZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVz
b3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAwNWEx
Y2RhYTNlMTQ4NzdhMGFlNDY1YjYzNDlhYTViYmIxYWYyYzgyLi5jZTAwOWQ0ZTVlZGMzMDk3NDVl
MDI3YjA2MzJiZDFlNmU4NTgwM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsxMzMsNyBA
QCBwcml2YXRlOgogCiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8
TW9kZWw+IG1fbW9kZWw7CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21p
c2U7CiAgICAgYm9vbCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExv
YWRlclVTRC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtp
dC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCmluZGV4IDNlODJhYzIyMTY3OTZjOWVkYjc2MGEx
OWVkN2FjZTFmNDJjZDM3NzcuLjEzMDNlYzRkMjU2OGE2NmY4N2Q3ZmViMjBiZjJiMDMzOTIzMmMz
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2Vu
ZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0x
MDQsNyArMTA0LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZp
bGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGF1dG8gZmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiTW9kZWxGaWxlIiwgZmlsZUhhbmRsZSwgIi51c2R6
Iik7CiAgICAgQVNTRVJUKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOwog
Ci0gICAgc2l6ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5k
bGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUo
KSk7CisgICAgc2l6ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVI
YW5kbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2Rl
bFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChieXRlQ291bnQsIGJ5
dGVDb3VudCA9PSBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKaW5kZXggMGI4OThmNmFkYjU3ZWIyNWRjNDkz
N2Q4MWZmNWQxNGQ1Mjk3NmM4NC4uZDUxNzNmYmY4YjQwMzQxYzVjZjhkOGE0ZjU1ZWVhYzhmZjgz
OGEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtU2luay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbVNpbmsuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFtOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUmVhZGFibGVTdHJl
YW1TaW5rIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1TaW5rPiB7CiBwdWJsaWM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAK
aW5kZXggNTI1MTBjMzA4MThmMGNhOTE2YTg4NDM3N2QyMjRhMWFiYTc5NWI4NS4uODUxNDdjMDk2
MWM5OTczMTYzMWYwZWRmYjllZmU3NGU1YzM2Y2FjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBAIHN0
YXRpYyBKU0M6OkpTUHJvbWlzZSogaGFuZGxlUmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbihKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IEZvcm1EYXRh
IGxvYWRpbmcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjEyNDgKICAgICAgICAgY29tcGlsZXItPmZhaWwoZ2xvYmFsT2JqZWN0LCBjcmVhdGVE
T01FeGNlcHRpb24oKmdsb2JhbE9iamVjdCwgRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3Is
ICJOb3QgaW1wbGVtZW50ZWQiX3MgIH0pKTsKLSAgICB9LCBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikgeworICAgIH0sIFsmXShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgewogICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFsaXplKGdsb2JhbE9iamVjdCk7CiAgICAg
fSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKaW5kZXggYzQ1MmM4M2ZiZDVj
ZTg5NWJkZDAzMWFjZjE0NjhmNzg2NTA2MjJkNy4uYjkxOGYzMTQxYWYyZjUyMTY0MjY4OThmYWVh
ODRmNGIwMmIxZTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01MSwxMyArNTEsMTUgQEAgcHVibGlj
OgogICAgICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICAgICAgaWYgKCFtX2NvbnRpZ3VvdXNCdWZmZXIgJiYg
KCFtX2NvbnRhaW5zT25seUFTQ0lJIHx8ICptX2NvbnRhaW5zT25seUFTQ0lJKSkKKyAgICAgICAg
ICAgIG1fY29udGlndW91c0J1ZmZlciA9IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5tYWtlQ29u
dGlndW91cygpOwogICAgICAgICBpZiAoIW1fY29udGFpbnNPbmx5QVNDSUkpIHsKLSAgICAgICAg
ICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9zY3JpcHRC
dWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7
CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJ
KG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6
ZSgpKTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAg
ICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhC
aXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZl
cigpLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hl
cjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCks
IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICB9CiAgICAgICAgIGlm
ICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgIHJldHVybiB7IG1fc2NyaXB0QnVm
ZmVyLmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZl
ci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAgICAgcmV0dXJuIHsgbV9jb250aWd1b3Vz
QnVmZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5idWZm
ZXIoKS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICghbV9jYWNoZWRTY3JpcHRTdHJpbmcpIHsK
ICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5nID0gbV9zY3JpcHRCdWZmZXIudG9TdHJp
bmcoKTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIG1fc2NyaXB0QnVmZmVyID0gc2NyaXB0QnVmZmVyOworICAgICAgICBtX2NvbnRpZ3Vv
dXNCdWZmZXIgPSBudWxscHRyOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTkxLDYgKzk0LDcgQEAg
cHJpdmF0ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZmZXIgbV9zY3JpcHRCdWZmZXI7CisgICAg
bXV0YWJsZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jb250aWd1b3VzQnVmZmVy
OwogICAgIG11dGFibGUgdW5zaWduZWQgbV9zY3JpcHRIYXNoIHsgMCB9OwogICAgIG11dGFibGUg
U3RyaW5nIG1fY2FjaGVkU2NyaXB0U3RyaW5nOwogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxi
b29sPiBtX2NvbnRhaW5zT25seUFTQ0lJOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCA3ZTQ5YTllNzMyMjZiNjVjYzI4YmY1
OTQ4MTNiMGY4M2IyNjlkMjJiLi5lZjM3ZjFkMGNhNDYyYmI5YjdjOWI2YTU1ZDE4ZWJiNGMxMTgx
YTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBEZXRhY2hlZE9mZnNjcmVlbkNhbnZh
czsKIGNsYXNzIElEQlZhbHVlOwogY2xhc3MgTWVzc2FnZVBvcnQ7CiBjbGFzcyBJbWFnZUJpdG1h
cEJhY2tpbmc7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogZW51bSBjbGFzcyBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTsKIAogZW51bSBjbGFzcyBT
ZXJpYWxpemF0aW9uRXJyb3JNb2RlIHsgTm9uVGhyb3dpbmcsIFRocm93aW5nIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCBjYWRjNGEwNTk0YzViZjYzNzhj
ZmE3YjBlOGNhNDc1MjY1NjBiYWRkLi40YjQzOTk1NGYxOWJhNGI4MjM3YzllNWRhZWQ0MWU0YmE3
ZmRhMGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE2
Nyw3ICsxNjcsNyBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1
bWVudCkKICAgICAgICAgICAgICAgICBBU1NFUlQoIW1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3Jt
RGF0YSk7CiAgICAgICAgICAgICAgICAgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50ID0gZG93
bmNhc3Q8U1ZHRm9udEVsZW1lbnQ+KCptX3N2Z0ZvbnRGYWNlRWxlbWVudC0+cGFyZW50Tm9kZSgp
KTsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBvdGZGb250ID0gY29udmVydFNWR1RvT1RGRm9u
dChmb250RWxlbWVudCkpCi0gICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkpKTsKICAgICAgICAgICAgICAgICBp
ZiAobV9nZW5lcmF0ZWRPVEZCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgbV9pbkRvY3Vt
ZW50Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9n
ZW5lcmF0ZWRPVEZCdWZmZXIsIFN0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICAgc3VjY2Vz
cyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CkBA
IC0xNzYsNyArMTc2LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgICAgIH0gZWxzZSBpZiAobV9pbW1lZGlhdGVTb3VyY2UpIHsKICAgICAg
ICAgICAgIEFTU0VSVCghbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAg
ICAgICAgIGJvb2wgd3JhcHBpbmc7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+
YmFzZUFkZHJlc3MoKSksIG1faW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOworICAgICAg
ICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9p
bW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CiAgICAgICAgICAgICBtX2ltbWVkaWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShi
dWZmZXIuZ2V0KCksIFN0cmluZygpLCB3cmFwcGluZyk7CiAgICAgICAgICAgICBzdWNjZXNzID0g
c3RhdGljX2Nhc3Q8Ym9vbD4obV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAg
ICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKaW5kZXgg
ODI2MTMzMzIyYThlZTVmMzc4MmZiYjIzMTIzYjJkZDNhNTdhMTcyOC4uNmE4MmNmMWUzZGM5MTU5
Nzg1MzM2NWJkMzFlMzYyMzI3ODZhMDg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
U1NGb250RmFjZTsKIGNsYXNzIENTU0ZvbnRTZWxlY3RvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZvbnQ7CiBjbGFzcyBGb250Q3JlYXRp
b25Db250ZXh0OwpAQCAtNDIsNyArNDMsNiBAQCBjbGFzcyBGb250RGVzY3JpcHRpb247CiBzdHJ1
Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFu
dFNldHRpbmdzOwogY2xhc3MgU1ZHRm9udEZhY2VFbGVtZW50OwotY2xhc3MgU2hhcmVkQnVmZmVy
OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlw
ZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpAQCAtOTMs
NyArOTMsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRT
ZWxlY3RvcjsgLy8gRm9yIHJlbW90ZSBmb250cywgdG8gb3JjaGVzdHJhdGUgbG9hZGluZy4KICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExvYWRSZXF1ZXN0PiBtX2ZvbnRSZXF1ZXN0OyAvLyBBbHNv
IGZvciByZW1vdGUgZm9udHMsIGEgcG9pbnRlciB0byB0aGUgcmVzb3VyY2UgcmVxdWVzdC4KIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKICAgICBSZWZQ
dHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+IG1faW1tZWRpYXRlU291cmNlOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggMWRlYWM0ZjQx
Y2Y0OWYxZjg4MmRjY2VmZDQ4Y2Y2YTk3MzJmM2VkOS4uYzQyZWMwNTFmZTExZWJhMTRmODEzMzU5
ZDhkMTdhMmMyODE2NjRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFu
c2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTQw
Miw3ICs0MDIsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVUeXBlUmVhZGVyIGZpbmFsIDogUGFz
dGVib2FyZEZpbGVSZWFkZXIgewogICAgICAgICB0eXBlcy5hZGQoRmlsZTo6Y29udGVudFR5cGVG
b3JGaWxlKGZpbGVuYW1lKSk7CiAgICAgfQogCi0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikKKyAgICB2b2lk
IHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikKICAgICB7CiAgICAgICAgIHR5cGVzLmFkZCh0eXBlKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTcyNGNmMGU1MGJhYTViOWIyNDEz
MDQ4MWVlNzI0Y2I3ODIwN2FhNC4uNDcyYjkyN2VkNDM0N2JhMWIyNGU4NThmNjRlMDFhNmJiNTdm
NTlhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDEyNSw3ICs0MTI1LDcgQEAg
UHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8oRWxl
bWVudCYgZWxlbWVudCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFZlY3RvcjxTdHJpbmc+
IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0
aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFk
ZGl0aW9uYWxEYXRhOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGdldFBhc3RlYm9hcmRUeXBl
c0FuZERhdGFGb3JBdHRhY2htZW50KGVsZW1lbnQsIGFkZGl0aW9uYWxUeXBlcywgYWRkaXRpb25h
bERhdGEpOwogI2VuZGlmCkBAIC00MTMzLDcgKzQxMzMsNyBAQCBQcm9taXNlZEF0dGFjaG1lbnRJ
bmZvIEVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyhFbGVtZW50JiBlbGVtZW50KQogICAg
IHJldHVybiB7IGF0dGFjaG1lbnQtPnVuaXF1ZUlkZW50aWZpZXIoKSwgV1RGTW92ZShhZGRpdGlv
bmFsVHlwZXMpLCBXVEZNb3ZlKGFkZGl0aW9uYWxEYXRhKSB9OwogfQogCi12b2lkIEVkaXRvcjo6
cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgRWRpdG9yOjpyZWdpc3RlckF0dGFjaG1l
bnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBpZiAoYXV0byogY2xpZW50ID0gdGhpcy0+Y2xp
ZW50KCkpCiAgICAgICAgIGNsaWVudC0+cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihpZGVu
dGlmaWVyLCBjb250ZW50VHlwZSwgcHJlZmVycmVkRmlsZU5hbWUsIFdURk1vdmUoZGF0YSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggMDFmZTBiNWUwNDRlZjYzZjI2YTcxYjQ3MmVmOThi
MTFjMjI4YjkxYy4uMGMzNzk2NmQ4ZTIyODhjOGI2NmFjMTBiOTViMmY1OTI1M2Y4MWQ4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI7CiBjbGFzcyBBcmNoaXZlUmVz
b3VyY2U7Ci1jbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBDb21wb3NpdGVFZGl0Q29tbWFuZDsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21VbmRvU3RlcDsKK2Ns
YXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBjbGFzcyBF
ZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBAIC03NCw3ICs3NSw3
IEBAIGNsYXNzIEtpbGxSaW5nOwogY2xhc3MgUGFzdGVib2FyZDsKIGNsYXNzIFBhc3RlYm9hcmRX
cml0ZXJEYXRhOwogY2xhc3MgUmVuZGVyTGF5ZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udDsKIGNsYXNzIFNwZWxsQ2hlY2tS
ZXF1ZXN0OwogY2xhc3MgU3BlbGxDaGVja2VyOwpAQCAtNTM2LDcgKzUzNyw3IEBAIHB1YmxpYzoK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkU2VsZWN0aW9u
RnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7
CiAjZW5kaWYKIAogICAgIGJvb2wgY2FuQ29weUV4Y2x1ZGluZ1N0YW5kYWxvbmVJbWFnZXMoKSBj
b25zdDsKQEAgLTU2Myw3ICs1NjQsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUs
IGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAg
IHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGZpbGVEYXRhKTsKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
ZmlsZURhdGEpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8U2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhPiYmKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCk7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYpOwpAQCAtNTczLDcgKzU3NCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIFByb21pc2VkQXR0YWNobWVudEluZm8gcHJvbWlzZWRBdHRhY2htZW50SW5mbyhFbGVtZW50
Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXNBbmRE
YXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0
b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKKyAgICB2b2lkIGdldFBhc3RlYm9h
cmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0b3I8U3RyaW5nPiYgb3V0
VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsK
ICNlbmRpZgogI2VuZGlmCiAKQEAgLTYxOCwxMiArNjE5LDEyIEBAIHByaXZhdGU6CiAgICAgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gYWRqdXN0ZWRTZWxlY3Rpb25SYW5nZSgpOwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJB
cmNoaXZlRm9ybWF0KCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlbGVj
dGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIFN0cmluZyBzZWxlY3Rpb25JbkhUTUxGb3Jt
YXQoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChF
bGVtZW50Jik7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGltYWdlSW5XZWJB
cmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKICAgICBzdGF0aWMgU3RyaW5nIHVzZXJWaXNpYmxlU3Ry
aW5nKGNvbnN0IFVSTCYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5S
VEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKKyAgICBzdGF0
aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQoTlNBdHRy
aWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKICNlbmRpZgogICAgIHZv
aWQgcGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0ZXMm
LCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaAppbmRleCBmMzAyODIzNTY5MDA2ZjVjZjlk
YmI0ZWZjMzczZTY3ZWYwNWYxOWE2Li4zOWMzYjFmYTNkODU2ZjhkODQ5YzY5MzMxZDg5ZTk5OGY3
ZTc2MjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRh
Y2htZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0
cnVjdCBTZXJpYWxpemVkQXR0YWNobWVudERhdGEgewogICAgIFN0cmluZyBpZGVudGlmaWVyOwog
ICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCmluZGV4IDA4YWEx
MjQyNjYyMGY3Njk1M2E3OWIzNGVkZTVmNmRmMDUyN2IwMTUuLjk1N2I0ZmQ0YTU1N2ZjODFjZDMw
NjllZWFjYjg5NDg4YTk0N2I3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
V2ViQ29udGVudFJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVu
dFJlYWRlci5oCkBAIC03MiwxNiArNzIsMTYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlYWRGaWxl
UGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlv
blNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUgPSB7IH0pIG92ZXJyaWRlOwog
ICAgIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlOwog
ICAgIGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFk
SW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRp
b25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOworICAgIGJv
b2wgcmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcm
IHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkg
b3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0
bGUpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCByZWFkV2ViQXJj
aGl2ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlk
ZTsKLSAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNl
bnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURkQoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUs
IFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJp
ZGU7CiAjZW5kaWYKIH07CiAKQEAgLTk5LDE2ICs5OSwxNiBAQCBwcml2YXRlOgogICAgIGJvb2wg
cmVhZEZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0
IFN0cmluZyYgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFk
RmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KICAgICBib29sIHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wg
cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlv
blNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCByZWFkSW1h
Z2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRh
dGlvblNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFk
VVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdl
YkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGRChTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3Zl
cnJpZGU7Ci0gICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikg
b3ZlcnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCmluZGV4
IDU0OWViN2QyZTRjMDc1NDhlNGE4YzllYTI0ZWMyMGU0ZjIxYmZhMjUuLjExN2RiYTY4ZWRiMGJk
NGI2YzMwZTA5NDg1ZDlkMGMwZjI5YzM4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKQEAgLTM5LDcgKzM5LDcg
QEAgdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRGaWxlbmFtZShjb25zdCBT
dHJpbmcmIGZpbGVuYW1lKQogICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoY29udGV4dC5n
ZXQoKSwgZmlsZW5hbWUpKTsKIH0KIAotdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6
OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVh
ZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGZpbGVzLmFw
cGVuZChGaWxlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgQmxvYjo6Y3JlYXRlKGNvbnRleHQuZ2V0
KCksIGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSwgdHlwZSksIGZpbGVuYW1lKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaApp
bmRleCA1YzUyOWRkN2M4ZWNjMDAwNDhmY2I0ZDE1ODE0NjM1YjI0ZDkwYmI3Li45ZDgxNjA1ZjE5
OTI5OGYxOWMwZWQ2OTk1ZmUzYmQ3NzgzMDM0ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKQEAgLTQxLDcgKzQxLDcg
QEAgc3RydWN0IFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRG
aWxlUmVhZGVyIHsKICAgICB+V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCk7CiAKICAgICB2
b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
ZmluYWw7CiAKICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29udGV4dDsKICAg
ICBWZWN0b3I8UmVmPEZpbGU+PiBmaWxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0VkaXRvckNvY29hLm1tCmluZGV4IGE4NWI3YWE3NTI2YjJmN2M1MWEzZjVjNDY3YmViMzUwZTk5
MTRhYWIuLmQwYzkzMzEwMGM2NTVmMWZhODUyNTI3ODgxODcwNDk5YzJmNjFmZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtNzEsMTIgKzcxLDEy
IEBAIHZvaWQgRWRpdG9yOjpwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChG
b250QXR0cmlidXRlcyYgYXR0cmlidXRlcywKICAgICAgICAgYXR0cmlidXRlcy5mb250ID0gKF9f
YnJpZGdlIGlkKWN0Rm9udDsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hp
dmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVk
U3RyaW5nKQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhcmNoaXZlZERh
dGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmlu
ZykKIHsKICAgICBpZiAoIWF0dHJpYnV0ZWRTdHJpbmcubGVuZ3RoKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hp
dmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5n
U2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290
T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpu
dWxscHRyXSk7CiB9CiAKIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1hdCgpCkBA
IC04Nyw3ICs4Nyw3IEBAIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1hdCgpCiAK
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIEVkaXRvcjo6Z2V0UGFzdGVi
b2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0
cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQor
dm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1l
bnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCiB7CiAgICAgYXV0byBlbGVtZW50UmFuZ2Ug
PSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKGVsZW1lbnQpOwogICAgIGNsaWVudCgpLT5nZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShlbGVtZW50UmFuZ2UsIG91dFR5cGVzLCBvdXREYXRhKTsKQEAgLTk5
LDcgKzk5LDcgQEAgdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRh
Y2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHIKICAgICAgICAgaWYgKGF1dG8gYXJj
aGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgqZWxlbWVudFJhbmdlKSkgewogICAgICAg
ICAgICAgaWYgKGF1dG8gZGF0YSA9IGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpKSB7
CiAgICAgICAgICAgICAgICAgb3V0VHlwZXMuYXBwZW5kKFdlYkFyY2hpdmVQYm9hcmRUeXBlKTsK
LSAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmdldCgpKSk7CisgICAgICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KQEAgLTE1MSwxMiArMTUxLDEyIEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvbihQ
YXN0ZWJvYXJkV3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAgICAgcGFzdGVib2Fy
ZFdyaXRlckRhdGEuc2V0V2ViQ29udGVudChXVEZNb3ZlKHdlYkNvbnRlbnQpKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNo
aXZlRm9ybWF0KCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGVGcm9tU2VsZWN0aW9uKG1fZG9jdW1lbnQuZnJhbWUoKSk7CiAgICAgaWYgKCFhcmNoaXZlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
YXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9u
KCkuZ2V0KCkpOwogfQogCiAvLyBGSVhNRTogTWFrZXMgbm8gc2Vuc2UgdGhhdCBzZWxlY3RlZFRl
eHRGb3JEYXRhVHJhbnNmZXIgYWx3YXlzIGluY2x1ZGVzIGFsdCB0ZXh0LCBidXQgc3RyaW5nU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZCBkb2VzIG5vdC4KQEAgLTIwMSwyNyArMjAxLDI3IEBAIFN0cmlu
ZyBFZGl0b3I6OnVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYgdXJsKQogICAgIHJldHVybiBX
VEY6OnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVk
aXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQoTlNBdHRy
aWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcu
bGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVu
dEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoW3N0cmluZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1l
bnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRh
SW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5n
ICpzdHJpbmcpCiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoOwogICAg
IGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5n
IFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpA
eyB9XSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5n
IFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpA
eyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5k
ZXggZDQ4ZTExYzk2Yjc4MDhmODgzNTRiM2IwNzQ3ZWViMWYxZTM3ZTNmMy4uMDc4MjQ4MzYyYWEw
NTRkYzNhYjAwMDA0NTE3MTg0MTk4YTU4MGY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3ICsxMjczLDcgQEAgQk9PTCBIVE1M
Q29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgTlNV
UkwgKnVybCwgQk9PTAogICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1
YnJlc291cmNlKHVybCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1pbWVUeXBlID0gcmVzb3VyY2Ut
Pm1pbWVUeXBlKCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBsYWNlaG9sZGVyIHx8IG1pbWVUeXBl
ICE9ICJ0ZXh0L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBhZG9wdE5T
KFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291
cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgICAgICBmaWxl
V3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVX
aXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgICAgIFtmaWxlV3JhcHBlciBzZXRQcmVmZXJyZWRG
aWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZSh1cmwsIG1pbWVUeXBlKV07CiAg
ICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBub3RGb3VuZCA9IFlFUzsKQEAgLTIz
MDAsNyArMjMwMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBw
ZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiAKICAgICBpZiAoZGF0YVNv
dXJjZSkgewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBk
YXRhU291cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAgICAgICAgICBhdXRvIHdyYXBwZXIg
PSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRl
bnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAg
IGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxh
ckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gcmVz
b3VyY2UtPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAgICAgICAgIGlmICgh
ZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAgICAgICAgICAgICAgIGZpbGVuYW1l
ID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVzb3VyY2UtPnVybCgpLCByZXNvdXJj
ZS0+bWltZVR5cGUoKSk7CkBAIC0yMzIyLDggKzIzMjIsOCBAQCBzdGF0aWMgUmV0YWluUHRyPE5T
RmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJMKERvY3VtZW50TG9hZGVyKiBkYXRhU291cmNl
LCBOUwogc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvckVsZW1l
bnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNh
Y2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7Ci0gICAgICAgIGlmIChTaGFyZWRC
dWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxh
ckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwor
ICAgICAgICBpZiAoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVk
SW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05T
RmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgfQogCiAg
ICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkFyY2hpdmVSZXNvdXJjZUZyb21OU0F0dHJpYnV0
ZWRTdHJpbmcubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkFyY2hpdmVSZXNv
dXJjZUZyb21OU0F0dHJpYnV0ZWRTdHJpbmcubW0KaW5kZXggMjBkNjU0ODgwNWMzNzk4MWM2NWVm
MjA2ODEyMDJkNjExMTU2MGViYi4uY2I1ZmRiYjRiNTQzYThjMTgyOTUzY2Y1ZGM1YTgxNDI4ZWRm
Mzg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJBcmNoaXZl
UmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3RyaW5nLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvV2ViQXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmluZy5tbQpA
QCAtNTAsNyArNTAsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhOihOU0RhdGEgKilk
YXRhIFVSTDooTlNVUkwgKilVUkwgTUlNRVR5cGU6KE5TU3RyaW5nCiAgICAgICAgICAgICBNSU1F
VHlwZSA9IG1pbWVUeXBlRnJvbVVSTDsKICAgICB9CiAKLSAgICByZXNvdXJjZSA9IEFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0p
LmdldCgpKSwgVVJMLCBNSU1FVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgZnJhbWVOYW1lLCB7IH0p
OworICAgIHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKSwgVVJMLCBNSU1FVHlw
ZSwgdGV4dEVuY29kaW5nTmFtZSwgZnJhbWVOYW1lLCB7IH0pOwogICAgIGlmICghcmVzb3VyY2Up
IHsKICAgICAgICAgW3NlbGYgcmVsZWFzZV07CiAgICAgICAgIHJldHVybiBuaWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1t
CmluZGV4IDZhYTNjZDU0ZTgyYjk5YjMxOTQyN2JlZTM0YzhjNDRiNjc5ZTIyNzkuLjc5NWU4NDlh
MmY5NmZmZDQ2NmRmYzZhMzlkYzU3MTE3ZDZiNzQ0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0yNDUsNyAr
MjQ1LDcgQEAgc3RhdGljIGJvb2wgc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoY29u
c3QgRnJhbWUmIGZyYW1lKQogCiAjZW5kaWYKIAotc3RhdGljIFJlZjxEb2N1bWVudEZyYWdtZW50
PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJhbWUsIERvY3VtZW50
JiBkb2N1bWVudCwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkU2l6ZSkKK3N0YXRpYyBSZWY8RG9j
dW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQoRnJhbWUmIGZy
YW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJy
ZWRTaXplKQogewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgYXV0byBhdHRh
Y2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2ht
ZW50VGFnLCBkb2N1bWVudCk7CkBAIC0yODUsNyArMjg1LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFj
ZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVu
dCYgZnIKICAgICBzdHJ1Y3QgQXR0YWNobWVudEluc2VydGlvbkluZm8gewogICAgICAgICBTdHJp
bmcgZmlsZU5hbWU7CiAgICAgICAgIFN0cmluZyBjb250ZW50VHlwZTsKLSAgICAgICAgUmVmPFNo
YXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGE7CiAgICAgICAgIFJlZjxFbGVtZW50PiBvcmlnaW5hbEVsZW1lbnQ7CiAgICAgfTsKIApAQCAt
MzA5LDcgKzMwOSw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2ht
ZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICBhdXRvJiByZXNvdXJjZSA9IHJlc291cmNlRW50cnktPnZhbHVlOwot
ICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51bmlx
dWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgpIH0p
OworICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0YWNobWVudC51
bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgfQogCiAgICAgaWYgKCFzZXJpYWxpemVkQXR0YWNo
bWVudERhdGEuaXNFbXB0eSgpKQpAQCAtMzMyLDcgKzMzMiw3IEBAIHN0YXRpYyB2b2lkIHJlcGxh
Y2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21l
bnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAi
bWVkaWEiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RG
TW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUt
PmRhdGEoKSwgaW1hZ2UgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVu
ZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2Ut
PnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgaW1hZ2UgfSk7CiAgICAgfQogCiAgICAg
Zm9yIChhdXRvJiBvYmplY3QgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MT2JqZWN0RWxlbWVudD4o
ZnJhZ21lbnQpKSB7CkBAIC0zNTAsNyArMzUwLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hD
b250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIK
ICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJmaWxlIl9z
OwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFt
ZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCks
IG9iamVjdCB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RG
TW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUt
PmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBvYmplY3QgfSk7CiAgICAgfQogCiAgICAgZm9yIChh
dXRvJiBpbmZvIDogYXR0YWNobWVudEluc2VydGlvbkluZm8pIHsKQEAgLTQyOCw3ICs0MjgsNyBA
QCBzdHJ1Y3QgTWFya3VwQW5kQXJjaGl2ZSB7CiAgICAgUmVmPEFyY2hpdmU+IGFyY2hpdmU7CiB9
OwogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3Vw
QW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29s
KGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCitzdGF0aWMgc3RkOjpvcHRp
b25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJp
bmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZShVUkwoKSwgYnVmZmVyKTsKICAgICBpZiAoIWFyY2hpdmUpCkBA
IC00NDIsNyArNDQyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4g
ZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYKICAgICBpZiAoIWNhblNo
b3dNSU1FVHlwZUFzSFRNTCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVzb3Vy
Y2UtPmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNv
dXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKKyAgICBy
ZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5k
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXpl
KCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVs
bCgpIH07CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFt
ZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJrdXBBbmRBcmNoaXZl
JiBtYXJrdXBBbmRBcmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWlya3MsIGNvbnN0IHN0
ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQpA
QCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2
ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIGlmICgh
c2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBT
dHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBzdWJm
cmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAgIE1hcmt1cEFuZEFyY2hp
dmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291
cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJj
ZS0+ZGF0YSgpLnNpemUoKSksCiAgICAgICAgICAgICBzdWJmcmFtZU1haW5SZXNvdXJjZS5yZWxl
YXNlTm9uTnVsbCgpLCBzdWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07CiAgICAgICAgIGF1dG8g
c3ViZnJhbWVNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1lLCBkZXN0aW5h
dGlvbkRvY3VtZW50LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWlya3M6OkRpc2FibGVkLCBj
YW5TaG93TUlNRVR5cGVBc0hUTUwpOwogCkBAIC00OTcsNyArNDk3LDcgQEAgc3RhdGljIFN0cmlu
ZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3Rp
bmF0aW9uRG9jdW0KICAgICByZXR1cm4gc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3Vt
ZW50KFdURk1vdmUoZnJhZ21lbnQpLCAqc3RhZ2luZ0RvY3VtZW50LCBtc29MaXN0UXVpcmtzLCBt
YXJrdXBBbmRBcmNoaXZlLm1hcmt1cCk7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVh
ZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6
OnJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBp
ZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5k
b2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MzIsNyArNTMyLDcgQEAgYm9v
bCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFk
V2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJl
YWRlcjo6cmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjEy
LDEyICs2MTIsMTIgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkSFRNTChjb25z
dCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gIW1hcmt1cC5pc0VtcHR5KCk7CiB9CiAKLWJv
b2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29s
IFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygp
IHx8ICFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRv
IHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRG
RDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJd
KTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3Jl
YXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYg
KCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjI2LDExICs2MjYsMTEgQEAg
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRG
RChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVh
ZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUu
ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRv
cHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8g
c3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZE
OmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0
dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFu
ZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzksMTIgKzYzOSwxMiBAQCBib29sIFdlYkNvbnRl
bnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVU
eXBlRm9ySW1hZ2VzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3RyaW5n
ID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVy
LmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAg
YXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1l
bnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21l
bnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVu
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjUzLDExICs2NTMsMTEgQEAgYm9vbCBXZWJD
b250ZW50UmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0
cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9w
dE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxw
dHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMo
ZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtNjc2LDcgKzY3Niw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFBs
YWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
V2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9u
U2l6ZSkKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXpl
IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCiB7CiAgICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50
KCkpOwogICAgIGF1dG8mIGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CkBAIC03NDYsNyAr
NzQ2LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgcmV0dXJuIGF0
dGFjaG1lbnQ7CiB9CiAKLXN0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JEYXRh
KEZyYW1lJiBmcmFtZSwgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXpl
KQorc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckRhdGEoRnJhbWUmIGZyYW1l
LCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQog
ewogICAgIFJlZiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwogICAgIGF1dG8gYXR0YWNo
bWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVu
dFRhZywgZG9jdW1lbnQpOwpAQCAtODMzLDcgKzgzMyw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZFVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcihTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUs
IFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKK2Jvb2wgV2ViQ29u
dGVudFJlYWRlcjo6cmVhZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6
ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQogewogICAgIGlmIChidWZmZXIuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Z3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCmluZGV4IDYwNDg2ZTcxYWQ1OWZlY2M3MTVmZjBh
MDliMWMzNTU4YjdiMzQyYzIuLmQzZTk4MTliZDUzMWY4NDg2YTMxN2FiOWY5ZWQ4M2E5ODg1YmUy
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFk
ZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFk
ZXJHdGsuY3BwCkBAIC03MSw3ICs3MSw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFBs
YWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
V2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9u
U2l6ZSkKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXpl
IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCiB7CiAgICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50
KCkpOwogICAgIGF1dG8mIGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggMmQxOWI5YzdjMjJiM2ViYzI2N2M2NzYx
MDZjODkyZjA5Yjc3NzUzZC4uNWY4YmMzNDc3YzFjYTIxYjBjNzIyNzIyN2FhZjJkYTRiMTkyYmQx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtMTY2LDE1ICsx
NjYsMTUgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSogbm9k
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICBjbGllbnQoKS0+c2V0SW5zZXJ0
aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRv
cjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQorUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQo
RWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUt
PnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgp
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICAvLyBGSVhNRTogVGhlIGludGVyZmFjZSB0byB0
aGlzIGZ1bmN0aW9uIGlzIGF3a3dhcmQuIFdlJ2QgcHJvYmFibHkgYmUgYmV0dGVyIG9mZiB3aXRo
IHRocmVlIHNlcGFyYXRlIGZ1bmN0aW9ucy4gQXMgb2YgdGhpcyB3cml0aW5nLCB0aGlzIGlzIG9u
bHkgdXNlZCBpbiBXZWJLaXQyIHRvIGltcGxlbWVudCB0aGUgbWV0aG9kIC1bV0tWaWV3IHdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkOnR5cGVzOl0sIHdoaWNoIGlzIG9ubHkgdXNlZCB0byBzdXBw
b3J0IE9TIFggc2VydmljZXMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QmxvYi5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKaW5kZXggNDVkOTMzZTEzY2E0
ZDIyNTFjNWRlZDg0OGFhOWU5ODcyYzc2NzQ4OS4uYmNhNjY5NmViZTZmMGVkZGRkZWU3OWI3M2Mz
ZWUxNDQ5NmQ4MmZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xh
c3MgQmxvYkxvYWRlcjsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIFJlYWRhYmxlU3Ry
ZWFtOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFz
cyBFeGNlcHRpb25PcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3
b3JrU2VuZFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1
ZS5jcHAKaW5kZXggNTU5ZWJjYzQ4YzVmMDk2YWMxOWJhZTdkOWY3MThiNzFmMmEzNTMyMi4uNzFm
Yzc4ZjdlYTlhMzJhZTNkMGQwNWEzYWY4NjhjZmRmZmNkNDQwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgTmV0
d29ya1NlbmRRdWV1ZTo6ZW5xdWV1ZShjb25zdCBKU0M6OkFycmF5QnVmZmVyJiBiaW5hcnlEYXRh
LCB1bnNpZ25lZCBieXRlCiAgICAgICAgIG1fd3JpdGVSYXdEYXRhKFNwYW4geyBkYXRhICsgYnl0
ZU9mZnNldCwgYnl0ZUxlbmd0aCB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3F1
ZXVlLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oYmluYXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOworICAgIG1f
cXVldWUuYXBwZW5kKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oYmluYXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0
aCkpOwogfQogCiB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OmVucXVldWUoV2ViQ29yZTo6QmxvYiYg
YmxvYikKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVz
c2FnZXMoKQogICAgICAgICBib29sIHNob3VsZFN0b3BQcm9jZXNzaW5nID0gZmFsc2U7CiAgICAg
ICAgIHN3aXRjaE9uKG1fcXVldWUuZmlyc3QoKSwgW3RoaXNdKGNvbnN0IENTdHJpbmcmIHV0Zjgp
IHsKICAgICAgICAgICAgIG1fd3JpdGVTdHJpbmcodXRmOCk7Ci0gICAgICAgIH0sIFt0aGlzXShS
ZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgeworICAgICAgICB9LCBbdGhpc10oUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CiAgICAgICAgICAgICBkYXRhLT5mb3JFYWNoU2VnbWVu
dChtX3dyaXRlUmF3RGF0YSk7CiAgICAgICAgIH0sIFt0aGlzLCAmc2hvdWxkU3RvcFByb2Nlc3Np
bmddKFVuaXF1ZVJlZjxCbG9iTG9hZGVyPiYgbG9hZGVyKSB7CiAgICAgICAgICAgICBhdXRvIGVy
cm9yQ29kZSA9IGxvYWRlci0+ZXJyb3JDb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0
d29ya1NlbmRRdWV1ZS5oCmluZGV4IDU1MWY3MGY5MTY3YjJiZmNiMjQ0YmIyYjM3MDBiZmJhYWY1
NDc5NmMuLmQyM2NmZWJiNDUwOGJjMzAwOTE1YmI5OTZkM2YxNTA2MmNlMzUwOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCkBAIC00Myw3ICs0Myw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYjsKIGNsYXNzIEJsb2JMb2FkZXI7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBX
RUJDT1JFX0VYUE9SVCBOZXR3b3JrU2VuZFF1ZXVlIDogcHVibGljIENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyIHsKIHB1YmxpYzoKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICB2b2lkIHByb2Nlc3NNZXNzYWdlcygpOwogCi0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6
dmFyaWFudDxDU3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPiwgVW5pcXVlUmVmPEJsb2JMb2FkZXI+
PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PENTdHJpbmcsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiwgVW5pcXVlUmVmPEJsb2JMb2FkZXI+PjsKICAgICBEZXF1ZTxNZXNz
YWdlPiBtX3F1ZXVlOwogCiAgICAgV3JpdGVTdHJpbmcgbV93cml0ZVN0cmluZzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggNzUyMzAxN2JhNzI5
NDA1NjNiNzVmNDY2YTY4ZWQxY2NiM2RlZThiYS4uMTAxNmRjZjNjMTk5ZTU0Y2E4MTRjMjY0NWE5
YTg1OThhNWMxZDM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3Rv
cnlEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1
bWVudC5jcHAKQEAgLTI3Niw5ICsyNzYsOSBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFy
c2VyOjpwYXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExpbmUpCiAgICAg
YXBwZW5kRW50cnkoZmlsZW5hbWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNp
emUsIHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3Ry
aW5nKHJlc3VsdC5tb2RpZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRy
eSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxh
dGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQorc3RhdGljIGlubGluZSBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEo
Y29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQogewotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxh
dGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgp
KTsKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBMT0coRlRQLCAiTG9hZGVkIEZUUERpcmVjdG9y
eVRlbXBsYXRlIG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4g
YnVmZmVyOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNlCiAgICAg
CiBib29sIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgp
CiB7Ci0gICAgc3RhdGljIFNoYXJlZEJ1ZmZlciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVh
dGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7
CisgICAgc3RhdGljIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRh
ID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVh
a1JlZigpOwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHN0b3JpbmcgdGhlIGRhdGEsIGl0IHdv
dWxkIGJlIG1vcmUgZWZmaWNpZW50IGlmIHdlIGNvdWxkIHBhcnNlIHRoZSB0ZW1wbGF0ZSBkYXRh
IGludG8gdGhlCiAgICAgLy8gdGVtcGxhdGUgRG9jdW1lbnQgb25jZSwgc3RvcmUgdGhhdCBkb2N1
bWVudCwgdGhlbiAiY29weSIgaXQgd2hlbmV2ZXIgd2UgZ2V0IGFuIEZUUCBkaXJlY3RvcnkgbGlz
dGluZy4KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1l
bnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50
LmNwcAppbmRleCA1NmEwNmZjYWYyNzNkMjVkYzRjNzVkY2U1NjlhYWM4ZjFhYTU5NTI3Li5kMmI4
NzQxYTA0NDM0MmM3ZmZkOWU4YTUzM2NjOGExMjBlMjliYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgc3Rh
dGljIGJvb2wgbWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VBdHRhY2htZW50KGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZShtaW1lVHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1F
VHlwZShtaW1lVHlwZSk7CiB9CiAKLXZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVF
bmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVu
Y2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGF1dG8qIGhvc3RFbGVtZW50ID0g
c2hhZG93SG9zdCgpOwogICAgIGlmICghaXM8SFRNTEltYWdlRWxlbWVudD4oaG9zdEVsZW1lbnQp
IHx8ICFidWZmZXItPnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF0dGFjaG1lbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50
RWxlbWVudC5oCmluZGV4IDU3M2VjMmVhZTFjZGMwNjA5ZjI2MWMzODQwMGJiMDJjNDgwZjdiZGQu
LjY2MWRlYzkzNzZkOGE5ZDZkNDcxN2ZkMGI0Y2U3ZjgyZmYwM2Y3NTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFz
cyBGaWxlOwogY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIFJlbmRlckF0dGFjaG1lbnQ7
CiBjbGFzcyBTaGFyZWFibGVCaXRtYXA7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1lbnQgZmluYWwg
OiBwdWJsaWMgSFRNTEVsZW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSFRNTEF0
dGFjaG1lbnRFbGVtZW50KTsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29w
eU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JikgZmluYWw7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUF0dHJpYnV0ZXMoc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4mJiBuZXdGaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50VHlwZSwg
Y29uc3QgU3RyaW5nJiBuZXdGaWxlbmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRh
dGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgZGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVFbmNs
b3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRl
VGh1bWJuYWlsKGNvbnN0IFJlZlB0cjxJbWFnZT4mIHRodW1ibmFpbCk7CiAKICAgICBJbnNlcnRl
ZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBD
b250YWluZXJOb2RlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAppbmRleCA1MTcxYjljZGM3ODkzMTcxZTIxZTVmNGJmNTUwMTdlZjk0NGFjNzk1Li4xYTU2
YmMwMzU5Y2NlMWY1MGRjZGRhMDY1MjIyYTAxMDk1YTY5MDVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTI5MzgsNyArMjkzOCw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6Y2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgp
CiAgICAgYXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpOwogfQogCi12b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVj
ZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5p
dERhdGEpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlh
bGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIG1lZGlhUGxheWVySW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0YS0+dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmlu
ZGV4IDY5NTY2OTQ5NjMxMGVmOTEwOGI5NTZmZGE0ODIxNDMwMTQ5NzBlY2IuLjZjM2I2OTNiN2Ix
MGVkYTMwZTUxZDRjNjYzMWJlM2ZiNTBjYmY4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCkBAIC03MjAsNyArNzIwLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENETUNs
aWVudAogICAgIHZvaWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2Fy
eSgpIGZpbmFsOwotICAgIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRh
dGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAg
ICB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29u
c3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5kZXggYjg4NmI3NzA0YTE0
ZGY1Njc3YTRkMTZiY2JjZTU4OWQwYTUyM2VlYi4uNGVlM2FlMzk0MmMxZDQ4OWY5NTVkOWM4ZmRl
Y2RhNzk3MjA3YjMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1h
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKQEAgLTc0Niw3
ICs3NDYsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRl
TGVuZ3RoKCkpOworICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwg
YXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgYXV0byBvYnNlcnZlciA9IEltYWdlQml0
bWFwSW1hZ2VPYnNlcnZlcjo6Y3JlYXRlKG1pbWVUeXBlLCBleHBlY3RlZENvbnRlbnRMZW5ndGgs
IHNvdXJjZVVSTCk7CiAgICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUob2JzZXJ2
ZXIucHRyKCkpOwogICAgIGF1dG8gcmVzdWx0ID0gaW1hZ2UtPnNldERhdGEoc2hhcmVkQnVmZmVy
LmNvcHlSZWYoKSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRl
eCA0NDJkMDk0NmJlMjUwZGNjZjU5MjdiYWE5Mjc5M2E3MGVlOTE5MzNlLi4wMGQ4ZjIzOWQ3MTI3
YzYxY2FlMWI1OGQ5YzRhMzAzYTliM2M5MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1
bWVudC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OnVwZGF0ZUR1
cmluZ1BhcnNpbmcoKQogICAgIGlmICghbV9pbWFnZUVsZW1lbnQpCiAgICAgICAgIGNyZWF0ZURv
Y3VtZW50U3RydWN0dXJlKCk7CiAKLSAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSkKKyAgICBpZiAoUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCkpCiAg
ICAgICAgIG1faW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpLT51cGRhdGVCdWZmZXIoKmJ1ZmZl
cik7CiAKICAgICBpbWFnZVVwZGF0ZWQoKTsKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEltYWdl
RG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygpCiB7CiAgICAgaWYgKCFwYXJzZXIoKS0+aXNTdG9w
cGVkKCkgJiYgbV9pbWFnZUVsZW1lbnQpIHsKICAgICAgICAgQ2FjaGVkSW1hZ2UmIGNhY2hlZElt
YWdlID0gKm1faW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpOwotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICAgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBsb2FkZXIoKS0+bWFpblJlc291
cmNlRGF0YSgpOwogCiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBtdWx0aXBhcnQgaW1hZ2UsIG1h
a2UgYSBjb3B5IG9mIHRoZSBjdXJyZW50IHBhcnQsIHNpbmNlIHRoZSByZXNvdXJjZSBkYXRhCiAg
ICAgICAgIC8vIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIG5leHQgcGFydC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAK
aW5kZXggYTdjYTcxNjJkNzkxZWQ3ZmJhOGNjOTFjMjFhMmNmM2FmNmU2OWE3ZS4uMTg3OTNmZjA2
NjMzOGZiNjBhMzRkZWM5MDliYzJkZGQyOGJlYWZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTg1MCw3ICs4
NTAsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bQogICAgICAgICBuZXR3b3JrQWdlbnQtPmlu
dGVyY2VwdFJlcXVlc3QobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4m
JiBoYW5kbGVyKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3Bv
bnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBpZiAoYXV0
byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50
KCkpCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVzcG9uc2UocmVzcG9uc2UsIGlk
ZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDhlNjVjNGViMTAyMzM1MjFm
NDhjN2Y0YjEyMGFkMmM4OTA5YTA3YmEuLmQyOTU3ODEwZDgzODJjOTM1MWQ1YTkzZjE0NGFlZDE0
OTNiY2M2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
IGNsYXNzIFNoYWRvd1Jvb3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogY2xhc3MgVGltZXJCYXNlOwogY2xhc3MgV2ViS2l0TmFtZWRGbG93Owog
Y2xhc3MgV2ViU29ja2V0Q2hhbm5lbDsKQEAgLTIzNiw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSYsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lk
IGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShj
b25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9u
c2UoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lk
IGFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPik7CiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNv
bGVNZXNzYWdlPik7CkBAIC00NDEsNyArNDQxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9u
c2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAg
ICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IFJlc291cmNlTG9hZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4m
Jik7Ci0gICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0
aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgc3Rk
Ojp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKIApAQCAtMTI4OSw3ICsx
Mjg5LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRS
ZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIEYKICAgICAgICAgaW50ZXJjZXB0UmVxdWVz
dEltcGwoKmFnZW50cywgbG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFt
ZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCitpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZy
YW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJj
ZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAgaWYgKGF1dG8qIGFnZW50cyA9IGlu
c3RydW1lbnRpbmdBZ2VudHMoZnJhbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcAppbmRleCA2MWU0
YmMzYmEwMTllZTI1ZTVjOGJjMjIxZGZmNjA3N2VkZGI4NjNkLi5mMDY0MDNhNjIzNGI0MmI2YWQy
YTgwYjAxOTRhNTk2ZDg5ZjZlNmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcApAQCAtNDUsNyAr
NDUsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVx
dWVzdEludGVybmFsKFJlc291cmNlTG9hZGVyJiBsbwogICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW50ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2VJbnRl
cm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhh
bmRsZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVz
cG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6aW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3Zl
KGhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaAppbmRleCBmNzYxMTRjZTk4ZjQyYTdmZjkw
NmE0OGQwNDIwYjk2MzA1ZDM2OTE0Li4wN2I0MjFiNTljMTU1NWUxYTI5MWUxOGViYjI2MjIxMjJm
MTY1OGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCkBAIC0zNiwyMCArMzYsMjAgQEAgY2xhc3MgRnJh
bWU7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJl
cXVlc3QoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMg
Ym9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9h
ZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJik7Ci0gICAgc3Rh
dGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAg
IHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+KT4mJik7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVx
dWVzdEludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAg
c3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1
ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZUludGVybmFs
KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNw
b25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiB9OwogCiBp
bmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2Vw
dFJlcXVlc3QoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCkBAIC03Niw3ICs3Niw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYgbG9hCiAgICAgaW50ZXJj
ZXB0UmVxdWVzdEludGVybmFsKGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLWlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVy
KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRS
ZXNwb25zZShjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGZyYW1lLCByZXNwb25zZSkpOwogICAg
IGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoKmZyYW1lLCByZXNwb25zZSwgaWRlbnRpZmllciwg
V1RGTW92ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA2NzdjNWI4MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0
MzBmZTBmZjczLi5mMzJmNjYwYjkxNzNiYWU4ZDVjZDlhMTMwZWFlNThiOTdkNWVjZTg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAK
QEAgLTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3Vy
Y2VDb250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkK
ICAgICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisgICAgLCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1
ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBAIC02NCw3ICs2NSw3IEBAIHVu
c2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQo
KQogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwog
ICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAgICAgbV9kYXRhQnVm
ZmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhQnVmZmVyLT5yZXNldCgpOwogICAgIH0KIAog
ICAgIGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgxLDM2ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpldmljdENvbnRlbnQoKQogICAgIHJldHVy
biByZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RhdGFCdWZmZXItPmlz
TnVsbCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
ZGF0YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1
ZmZlci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4gbV9kYXRhQnVmZmVyLT5zaXplKCk7CiB9CiAK
IHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0Nv
bnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAg
ICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVm
ZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFT
U0VSVCghaGFzQ29udGVudCgpKTsKIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVm
ZmVyLT5zaXplKCk7CisgICAgYXV0byBidWZmZXIgPSBtX2RhdGFCdWZmZXItPnRha2UoKS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwog
CiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsK
LSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZm
ZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgIG1fY29udGVudCA9IGJh
c2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAg
ICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGRh
dGFMZW5ndGgpOwogICAgIH0KIAotICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7Ci0KICAgICBy
ZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5dGVzKCkgLSBkYXRhTGVuZ3RoOwogfQogCkBAIC0yNjcs
NyArMjY5LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRkQ2FjaGVkUmVzb3VyY2Uo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIENhY2hlZFJlc28KICAgICByZXNvdXJjZURhdGEtPnNl
dENhY2hlZFJlc291cmNlKGNhY2hlZFJlc291cmNlKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGlu
Z05hbWUpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZl
cihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCiB7CiAgICAgUmVzb3Vy
Y2VEYXRhKiByZXNvdXJjZURhdGEgPSByZXNvdXJjZURhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElk
KTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggZWZhMDAwNTNhZTExN2E1NGRmYjEyNmQxMmY5
YWJlZTdkYTU5MDhkNy4uZWUzOTQ1N2Y3NjcyZWFjYWFjOTBhNWI2YmM4ODExMDhjYmRhOGE4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNs
dWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDAsNyArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBU
ZXh0UmVzb3VyY2VEZWNvZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5ldHdv
cmtSZXNvdXJjZXNEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTg4LDgg
KzkwLDggQEAgcHVibGljOgogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVj
b2RlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rlci5jb3B5UmVmKCk7IH0KICAgICAgICAgdm9p
ZCBzZXREZWNvZGVyKFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiYmIGRlY29kZXIpIHsgbV9k
ZWNvZGVyID0gV1RGTW92ZShkZWNvZGVyKTsgfQogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmNvcHlSZWYoKTsgfQotICAgICAg
ICB2b2lkIHNldEJ1ZmZlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2J1ZmZl
ciA9IFdURk1vdmUoYnVmZmVyKTsgfQorICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuY29weVJlZigpOyB9CisgICAg
ICAgIHZvaWQgc2V0QnVmZmVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikgeyBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsgfQogCiAgICAgICAgIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiYgY2VydGlmaWNhdGVJbmZvKCkgY29uc3QgeyByZXR1
cm4gbV9jZXJ0aWZpY2F0ZUluZm87IH0KICAgICAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZUluZm8o
Y29uc3Qgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8pIHsg
bV9jZXJ0aWZpY2F0ZUluZm8gPSBjZXJ0aWZpY2F0ZUluZm87IH0KQEAgLTEwMywxMCArMTA1LDEw
IEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBjb25zdCB7
IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQgc2V0UmVzcG9uc2VU
aW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGltZTsgfQog
Ci0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVm
ZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gaGFz
RGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7
IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CiAg
ICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYXBwZW5kRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2ln
bmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw4ICsxMjEsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0cmluZyBtX21pbWVU
eXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7Ci0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgICAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVp
bGRlcj4gbV9kYXRhQnVmZmVyOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2Nl
cnRpZmljYXRlSW5mbzsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fY2FjaGVkUmVzb3VyY2Ug
eyBudWxscHRyIH07CiAgICAgICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIG1f
dHlwZSB7IEluc3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSB9OwpAQCAtMTQ0LDcgKzE0
Niw3IEBAIHB1YmxpYzoKICAgICBSZXNvdXJjZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VE
YXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
ZGF0YUxlbmd0aCk7CiAgICAgdm9pZCBtYXliZURlY29kZURhdGFUb0NvbnRlbnQoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQpOwogICAgIHZvaWQgYWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIENhY2hlZFJlc291cmNlKik7Ci0gICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJl
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwg
Y29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKKyAgICB2b2lkIGFkZFJlc291cmNlU2hh
cmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKICAgICBSZXNvdXJj
ZURhdGEgY29uc3QqIGRhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogICAgIFJlc291cmNl
RGF0YSBjb25zdCogZGF0YUZvclVSTChjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgVmVjdG9yPFN0
cmluZz4gcmVtb3ZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmNwcAppbmRleCA0NGUwODRhMjg4NDJmYmM1NjI4OTM3NjFkNzFlNGM3NDI3NGViYjE4Li4zOWY5
M2QyOGFiMjllZTQwZDUzNWY0NGJhZjliOWQzZDg3MmNjMmRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3Bw
CkBAIC0xMTQwLDcgKzExNDAsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJj
ZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBGdW5jdGlvbjx2bwogICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0SW50ZXJjZXB0ZWQocmVxdWVzdElkLCBidWlsZE9iamVj
dEZvclJlc291cmNlUmVxdWVzdChsb2FkZXIucmVxdWVzdCgpKSk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+KT4mJiBoYW5kbGVyKQordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQog
ewogICAgIEFTU0VSVChtX2VuYWJsZWQpOwogICAgIEFTU0VSVChtX2ludGVyY2VwdGlvbkVuYWJs
ZWQpOwpAQCAtMTI0MywxNiArMTI0MywxNiBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lk
PiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShjb25zdAogICAg
ICAgICBvdmVycmlkZVJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6
Q29udGVudFR5cGUsIG92ZXJyaWRlUmVzcG9uc2UubWltZVR5cGUoKSk7CiAgICAgfQogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGE7CiAgICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKICAg
ICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVudCk7CiAgICAgICAgIGlmICgh
YnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJVbmFibGUgdG8gZGVj
b2RlIGdpdmVuIGNvbnRlbnQiX3MpOwogCi0gICAgICAgIG92ZXJyaWRlRGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKmJ1ZmZlcikpOworICAgICAgICBvdmVycmlkZURhdGEgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqYnVmZmVyKSk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgYXV0byB1dGY4Q29udGVudCA9IGNvbnRlbnQudXRmOCgpOwotICAgICAg
ICBvdmVycmlkZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4Q29udGVudC5kYXRhKCks
IHV0ZjhDb250ZW50Lmxlbmd0aCgpKTsKKyAgICAgICAgb3ZlcnJpZGVEYXRhID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjhDb250ZW50LmRhdGEoKSwgdXRmOENvbnRlbnQubGVu
Z3RoKCkpOwogICAgIH0KIAogICAgIHBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZS0+cmVzcG9uZChv
dmVycmlkZVJlc3BvbnNlLCBvdmVycmlkZURhdGEpOwpAQCAtMTI3MSwxNiArMTI3MSwxNiBAQCBQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVy
Y2VwdFJlcXVlc3RXaXRoUmVzcG9ucwogICAgIGlmIChsb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0
YXRlKCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiVW5hYmxlIHRvIGZ1bGZpbGwg
cmVxdWVzdCwgaXQgaGFzIGFscmVhZHkgYmVlbiBwcm9jZXNzZWQiX3MpOwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
ZGF0YTsKICAgICBpZiAoYmFzZTY0RW5jb2RlZCkgewogICAgICAgICBhdXRvIGJ1ZmZlciA9IGJh
c2U2NERlY29kZShjb250ZW50KTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJsZSB0byBkZWNvZGUgZ2l2ZW4gY29udGVudCJfcyk7
CiAKLSAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKmJ1ZmZlcikp
OworICAgICAgICBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
KmJ1ZmZlcikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGF1dG8gdXRmOENvbnRlbnQgPSBjb250
ZW50LnV0ZjgoKTsKLSAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjhDb250
ZW50LmRhdGEoKSwgdXRmOENvbnRlbnQubGVuZ3RoKCkpOworICAgICAgICBkYXRhID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjhDb250ZW50LmRhdGEoKSwgdXRmOENvbnRlbnQu
bGVuZ3RoKCkpOwogICAgIH0KIAogICAgIC8vIE1pbWljIGRhdGEgVVJMIGxvYWQgYmVoYXZpb3Ig
LSByZXBvcnQgZGlkUmVjZWl2ZVJlc3BvbnNlICYgZGlkRmluaXNoTG9hZGluZy4KQEAgLTE0MDcs
MTIgKzE0MDcsMTIgQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNl
Q29udGVudChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkp
IHsKICAgICAgICAgICAgIGF1dG8gZGVjb2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3Jl
YXRlVGV4dERlY29kZXIocmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50
ZXh0RW5jb2RpbmdOYW1lKCkpOwogICAgICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsK
LSAgICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRl
Y29kZUFuZEZsdXNoKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpi
YXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3Ry
aW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBi
YXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
aAppbmRleCA4ZjZmYmNjMjkzYWViZjhiOWQ1Yzk0NWQyODI5YTE1MjdiNzRiYzdmLi42YmNkODdk
ZGNkOGIwNDQxMzA4ZDFkMDFlY2E2YjBlNmRhMTQxM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTEy
Myw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB3aWxsSW50ZXJjZXB0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKTsKICAgICBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7
CisgICAgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKICAgICB2
b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKIAogICAgIHZvaWQgc2VhcmNoT3RoZXJSZXF1ZXN0cyhj
b25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiwgUmVmPEpTT046OkFycmF5T2Y8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKTsKQEAgLTE4NSw3ICsxODUs
NyBAQCBwcml2YXRlOgogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQZW5kaW5nSW50ZXJj
ZXB0UmVzcG9uc2UpOwogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJs
aWM6Ci0gICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiBvcmlnaW5hbFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CisgICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiBvcmlnaW5hbFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogICAgICAgICAgICAgOiBtX29yaWdpbmFsUmVzcG9uc2Uob3JpZ2luYWxSZXNwb25z
ZSkKICAgICAgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSkKICAgICAgICAgeyB9CkBAIC0yMDIsNyArMjAyLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIHJlc3BvbmQobV9vcmlnaW5hbFJlc3BvbnNlLCBudWxscHRyKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZvaWQgcmVzcG9uZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSkKKyAgICAgICAgdm9pZCByZXNwb25kKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
ZGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCFtX3Jlc3BvbmRlZCk7CiAgICAg
ICAgICAgICBpZiAobV9yZXNwb25kZWQpCkBAIC0yMTUsNyArMjE1LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9vcmlnaW5hbFJlc3BvbnNl
OwotICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAgICAgIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPik+IG1fY29tcGxldGlvbkhhbmRsZXI7CiAgICAgICAgIGJvb2wg
bV9yZXNwb25kZWQgeyBmYWxzZSB9OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAzZGFmZTY0
MzdkZjEyMTA0MDVmZWZiZjM3NTc4NWZlY2Q1ZWFjNDcyLi4xYjY0NmFhMjE3M2FiNTRhM2YxYWJk
Y2I1MDIwNGFkZTk4YzA3M2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0xMDAsMTUgKzEwMCwxNSBAQCBz
dGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCB1bnNpZ25lZCBz
aXplLCBjb25zdCBTdHJpbmcmIHRleAogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJl
c291cmNlQ29udGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5n
KiByZXN1bHQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50
KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29k
aW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3BlY3RvclBh
Z2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVu
Y29kZSwgcmVzdWx0KTsKIH0KIAotYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZl
ckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKK2Jv
b2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1l
LCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQogewotICAgIHJldHVybiBk
YXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1
ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVz
dWx0KTsKKyAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRl
eHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5z
cGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVu
Y29kZSwgU3RyaW5nKiByZXN1bHQpCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnJlc291cmNlQ29udGVudChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBGcmEKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBidWZmZXI7CiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAgaWYgKGVxdWFsSWdub3Jp
bmdGcmFnbWVudElkZW50aWZpZXIodXJsLCBsb2FkZXItPnVybCgpKSkgewogICAgICAgICAqYmFz
ZTY0RW5jb2RlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggYjUxYWRkYjFiZDhmMmNjZTY5NTYwNzk5
Y2QxZDk1MmQyZGU0MjgzOC4uM2Q1ZTU2NmRiZTBjNWVjMTFkOWU4ZGY2N2ZjZjBhNzA5ODhhMmY4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQ
YWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIEluc3BlY3RvckNsaWVudDsKIGNs
YXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVuZGVyT2JqZWN0Owot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xh
c3MgSW5zcGVjdG9yUGFnZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwg
cHVibGljIEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUGFnZUFnZW50KTsKQEAgLTc1LDcgKzc1LDcgQEAg
cHVibGljOgogICAgICAgICBPdGhlclJlc291cmNlLAogICAgIH07CiAKLSAgICBzdGF0aWMgYm9v
bCBzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3Vs
dCk7CisgICAgc3RhdGljIGJvb2wgc2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdp
dGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKICAgICBzdGF0aWMgVmVjdG9yPENhY2hl
ZFJlc291cmNlKj4gY2FjaGVkUmVzb3VyY2VzRm9yRnJhbWUoRnJhbWUqKTsKICAgICBzdGF0aWMg
dm9pZCByZXNvdXJjZUNvbnRlbnQoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBG
cmFtZSosIGNvbnN0IFVSTCYsIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKTsK
ICAgICBzdGF0aWMgU3RyaW5nIHNvdXJjZU1hcFVSTEZvclJlc291cmNlKENhY2hlZFJlc291cmNl
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggYjRlNmEzYTUz
YjRjMGMwZGExYzMxNzJkZDQyY2FlNmE4Y2QyMWY3YS4uNmFlNTI2NTk3Y2QyODYzMWJlNzk1MGZj
MzM1MzZmOGYzNDdkN2FmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNw
cApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNl
RGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3Rh
dGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291
cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQu
ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwg
cmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRo
cm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9j
a2VkUGFnZVVSTCgpCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpoYW5k
bGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewog
ICAgIEFTU0VSVCh3aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcikpOwogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhIHsgbV9ibG9ja2luZ0NvbnRl
bnRGaWx0ZXItPnJlcGxhY2VtZW50RGF0YSgpIH07CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSB7IG1fYmxvY2tpbmdDb250ZW50RmlsdGVyLT5yZXBs
YWNlbWVudERhdGEoKSB9OwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyBVUkwoKSwg
InRleHQvaHRtbCJfcywgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihyZXBsYWNlbWVudERhdGEtPnNp
emUoKSksICJVVEYtOCJfcyB9OwogICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhIHsg
V1RGTW92ZShyZXBsYWNlbWVudERhdGEpLCBlcnJvci5mYWlsaW5nVVJMKCksIHJlc3BvbnNlLCBT
dWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4gfTsKICAgICBT
ZXRGb3JTY29wZTxib29sPiBsb2FkaW5nQmxvY2tlZFBhZ2UgeyBtX2lzTG9hZGluZ0Jsb2NrZWRQ
YWdlLCB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5QcmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdp
blByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDk0YzM2ZWY1MDdlZjAzN2I3MDdjOTBkMTlhN2Ex
YTc0NDViMWY3MGEuLmQwOTYxYWZjN2I3ZTczZTYxN2U3ODA2YTY3YzZmZmQwOWYxNWNhOTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXI6OmRvUHJlZmxpZ2h0KERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYgbG9hZGVyLAogICAg
IFJlc291cmNlUmVxdWVzdCBwcmVmbGlnaHRSZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJvbFBy
ZWZsaWdodFJlcXVlc3QocmVxdWVzdCwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksIGxvYWRlci5y
ZWZlcnJlcigpKTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IGxv
YWRlci5kb2N1bWVudCgpLmZyYW1lKCktPmxvYWRlcigpLmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkocHJlZmxpZ2h0UmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xp
ZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9ucyB7IH0sIHsgfSwgZXJyb3IsIHJlc3BvbnNl
LCBkYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXgg
YzNkODQ1MGY3MWMyYzM3M2QyYWYxY2NjZmIyMTVhZDgxYmY4MGQwYi4uZDkwZmUwMmY3OTcwYzRm
ZGM5NWVmOTk4ZmQyNWUzODcyZDZkM2U5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgRG9jdW1lbnRMb2FkZXI6On5Eb2N1bWVu
dExvYWRlcigpCiAjZW5kaWYKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRG9jdW1lbnRMb2Fk
ZXI6Om1haW5SZXNvdXJjZURhdGEoKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAo
bV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBtX3N1YnN0aXR1dGVE
YXRhLmNvbnRlbnQoKS0+Y29weSgpOwpAQCAtMTYwOCwxMSArMTYwOCwxMSBAQCBib29sIERvY3Vt
ZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUoKQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJj
ZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJUKG1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwog
ICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICptX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAg
IG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFpblJlc291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNl
ZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAg
IG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5SZXNvdXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFT
U0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5k
YXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0
YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgp
KTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQpAQCAtMTY1Miw3ICsxNjUyLDcgQEAgdm9p
ZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJBcmNoaXZlUmVzb3VyY2VzKCkKICAgICBtX3N1YnN0aXR1
dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIuc3RvcCgpOwogfQogCi1TaGFyZWRCdWZmZXIqIERvY3Vt
ZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3BhcnNlZEFyY2hpdmVEYXRhLmdldCgpOwogfQpAQCAtMTY3MSw5ICsxNjcxLDkgQEAg
QXJjaGl2ZVJlc291cmNlKiBEb2N1bWVudExvYWRlcjo6YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNv
bnN0IFVSTCYgdXJsKSBjb25zdAogCiBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBEb2N1bWVudExv
YWRlcjo6bWFpblJlc291cmNlKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhID0gbWFpblJlc291cmNlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBkYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghZGF0YSkKLSAgICAgICAg
ZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIGRhdGEgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvJiByZXNwb25zZSA9IHRoaXMtPnJlc3Bv
bnNlKCk7CiAgICAgcmV0dXJuIEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFdURk1vdmUoZGF0YSks
IHJlc3BvbnNlLnVybCgpLCByZXNwb25zZS5taW1lVHlwZSgpLCByZXNwb25zZS50ZXh0RW5jb2Rp
bmdOYW1lKCksIGZyYW1lKCktPnRyZWUoKS51bmlxdWVOYW1lKCkpOwogfQpAQCAtMjI1NSw4ICsy
MjU1LDggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0
Q29udGVudCgpCiAKICAgICBmcmFtZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBt
X2NvbW1pdHRlZCA9IGZhbHNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0
YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKLSAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0
YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBjb21taXRMb2Fk
KHJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNp
emUoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpAQCAt
MjI5Miw3ICsyMjkyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygp
CiAgICAgbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZ2V0TG9hZERlY2lzaW9uRm9ySWNvbnMo
aWNvbkRlY2lzaW9ucyk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNp
c2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNp
b24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGlj
b24gPSBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbi50YWtlKGxvYWRJZGVudGlmaWVyKTsKIApA
QCAtMjMxMyw3ICsyMzEzLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lz
aW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnQKICAgICByYXdJY29u
TG9hZGVyLT5zdGFydExvYWRpbmcoKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZmluaXNo
ZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiBsb2FkZXIsIFNoYXJlZEJ1ZmZlciogYnVmZmVyKQor
dm9pZCBEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiBsb2Fk
ZXIsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICAvLyBJZiB0aGUgRG9j
dW1lbnRMb2FkZXIgaGFzIGRldGFjaGVkIGZyb20gaXRzIGZyYW1lLCBhbGwgaWNvbiBsb2FkcyBz
aG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY2FuY2VsbGVkLgogICAgIEFTU0VSVChtX2ZyYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggZmJmNTQ1YzQ2MGU0ZTQ4
OWQ4N2IyNWMwZTg1ZWNjY2E0Y2JmM2M4Ny4uMmY2OTRjMWZlZTdhY2UzNDUxNjQ0ZDdkZjI0MjRj
MDNjOWU1MTEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTc1
LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKIGNsYXNzIENhY2hl
ZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBDb250ZW50
RmlsdGVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBDdXN0b21IZWFk
ZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsKQEAgLTgzLDcgKzg0LDcg
QEAgY2xhc3MgSWNvbkxvYWRlcjsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBQcmV2aWV3Q29udmVydGVy
OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU1dDbGllbnRDb25uZWN0aW9uOwogY2xhc3MgU3Vi
cmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTdWJzdGl0dXRlUmVzb3VyY2U7CkBAIC0xNzEsNyArMTcy
LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVMb2FkZXIqIGZyYW1lTG9h
ZGVyKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3VicmVzb3VyY2VMb2FkZXIqIG1haW5S
ZXNvdXJjZUxvYWRlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1haW5SZXNvdXJjZURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSgpIGNvbnN0OwogICAg
IAogICAgIERvY3VtZW50V3JpdGVyJiB3cml0ZXIoKSBjb25zdCB7IHJldHVybiBtX3dyaXRlcjsg
fQogCkBAIC0yMjgsNyArMjI5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YWRkQWxsQXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhZGRBcmNoaXZlUmVzb3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRy
PEFyY2hpdmU+IHBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwg
Y29uc3QgVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNo
aXZlRGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IHNjaGVkdWxlQXJjaGl2ZUxvYWQoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKTsKICNlbmRpZgpAQCAtMzkyLDggKzM5Myw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAg
dm9pZCBzdGFydEljb25Mb2FkaW5nKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciopPiYmKTsKLSAgICB2b2lkIGZp
bmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYsIFNoYXJlZEJ1ZmZlciopOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1
aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKik+JiYpOworICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9h
ZGVyJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogCiAgICAgY29uc3QgVmVjdG9yPExpbmtJ
Y29uPiYgbGlua0ljb25zKCkgY29uc3QgeyByZXR1cm4gbV9saW5rSWNvbnM7IH0KIApAQCAtNjAy
LDcgKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUoV0VC
X0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNoaXZl
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5kaWYK
IAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQ7CkBAIC02
MjEsNyArNjIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Q
b2xpY3kgeyBmYWxzZSB9OwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgTGlua0ljb24+IG1faWNv
bnNQZW5kaW5nTG9hZERlY2lzaW9uOwotICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPEljb25M
b2FkZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciopPj4gbV9pY29uTG9h
ZGVyczsKKyAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+PiBtX2ljb25Mb2FkZXJzOwog
ICAgIFZlY3RvcjxMaW5rSWNvbj4gbV9saW5rSWNvbnM7CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJ
T05fTUFOSUZFU1QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwCmluZGV4IDlhNGQ0YjIxMmZkZmQyODE4NDM3NmQ0YjcwYzdkYTRmM2Vi
N2M4MzIuLmM3MDk2NDEwYTdhYTA1NGU1MWQ3MDQ0NWQ2NjM1MmYyODE0MDY4YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBA
IC01OTUsNyArNTk1LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGltaW5n
Lm1hcmtTdGFydFRpbWUoKTsKIAogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0aW9u
cy5zbmlmZkNvbnRlbnQgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMu
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNl
UmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgYXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50
aWZpZXI8UmVzb3VyY2VMb2FkZXI+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDNhMDY0YmM3MjMx
YTM2MDBjYzgzZGM1OGE5YTJlN2ZmMmVlOTZiMzUuLjQ4MGYyMmFiZTM1NWQxMDljMjA4NjJlZmFl
OWRiZDVkMDg1N2M5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBA
IC0yNzYsNyArMjc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRT
ZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IH0K
ICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0gICAg
dm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZp
bmFsIHsgfQorICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRl
c0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9p
ZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3Vs
dCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDU2
NjEwODM4MDU2NjRlMDExOWYxMWZmYzMyZWE3ZTE5MjdmYzY1N2IuLjhlNGM0NjMwYTFjNTFiMmRk
Njk0ZmQzNWEzMzU0NzIyNDdmNjc3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcApAQCAtMTQyNyw3ICsxNDI3LDcgQEAgU3Vic3RpdHV0ZURhdGEgRnJhbWVMb2FkZXI6OmRl
ZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChjb25zdCBVUkwmIHVybCkKICAgICBDU3RyaW5nIGVu
Y29kZWRTcmNkb2MgPSBzcmNkb2Muc3RyaW5nKCkudXRmOCgpOwogCiAgICAgUmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZShVUkwoKSwgInRleHQvaHRtbCJfcywgZW5jb2RlZFNyY2RvYy5sZW5ndGgo
KSwgIlVURi04Il9zKTsKLSAgICByZXR1cm4gU3Vic3RpdHV0ZURhdGEoU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZW5jb2RlZFNyY2RvYy5kYXRhKCksIGVuY29kZWRTcmNkb2MubGVuZ3RoKCkpLCBVUkwo
KSwgcmVzcG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6Okhp
ZGRlbik7CisgICAgcmV0dXJuIFN1YnN0aXR1dGVEYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShlbmNvZGVkU3JjZG9jLmRhdGEoKSwgZW5jb2RlZFNyY2RvYy5sZW5ndGgoKSksIFVS
TCgpLCByZXNwb25zZSwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6
SGlkZGVuKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChGcmFtZUxvYWRSZXF1ZXN0JiYg
cmVxdWVzdCkKQEAgLTMxMDEsNyArMzEwMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0
UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWZlCiAg
ICAgfSk7CiB9CiAKLVJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJl
c291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVu
dENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRp
b25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJz
LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQorUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9h
ZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25z
dCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVx
dWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFTU0VS
VChtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgIFN0cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9s
aWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9jdW1lbnQoKS0+cmVmZXJyZXJQ
b2xpY3koKSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcigpKTsKQEAgLTMxNDksNyAr
MzE0OSw3IEBAIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291
cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlCiAgICAgICAgIGlmICghZG9jdW1lbnRM
b2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRTeW5jaHJvbm91c2x5KG5l
d1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSkpIHsKICAgICAgICAgICAgIFZlY3Rvcjx1
aW50OF90PiBidWZmZXI7CiAgICAgICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVy
U3RyYXRlZ3koKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgqdGhpcywgaWRlbnRpZmllciwg
bmV3UmVxdWVzdCwgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgb3B0aW9ucywgb3JpZ2luYWxSZXF1
ZXN0SGVhZGVycywgZXJyb3IsIHJlc3BvbnNlLCBidWZmZXIpOwotICAgICAgICAgICAgZGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICBkYXRh
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAg
ICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9h
ZEZhbGxiYWNrU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEp
OwogICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ1N1YnJlc291
cmNlTG9hZGluZygmbV9mcmFtZSwgbmV3UmVxdWVzdCwgcmVzcG9uc2UsCiAgICAgICAgICAgICAg
ICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVzdGluYXRpb24pID8gUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6OlllcyA6IFJlc291
cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpObykpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBlMTNlMjg2ZTE0ZjRmZThmZDdkZjkwYTBl
MTUxZjA5MzQxOGRkZGIxLi5hNTJkN2Y5MWM2MjYyMWZkMzdjMTBiZjBhOWEwMWZhZmI2OGIwYzY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNTksNiArNTksNyBAQCBjbGFz
cyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwogY2xhc3MgQ2FjaGVkUmVzb3Vy
Y2U7CiBjbGFzcyBDaHJvbWU7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
RE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsK
QEAgLTc2LDcgKzc3LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFs
dWU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIAogZW51bSBj
bGFzcyBDYWNoZVBvbGljeSA6IHVpbnQ4X3Q7CkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGljOgog
I2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgbG9hZEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYpOwogI2VuZGlmCi0gICAgUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwg
Y29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOworICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENsaWVu
dENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0IEhUVFBIZWFkZXJN
YXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNoYW5nZUxv
Y2F0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBFdmVudCosIGNvbnN0IFJl
ZmVycmVyUG9saWN5JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgc3RkOjpvcHRpb25h
bDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQsIGNvbnN0IEF0b21TdHJpbmcm
IGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29uc3QgU3lzdGVtUHJldmlld0luZm8m
ID0geyB9LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpu
dWxsb3B0KTsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1lTG9hZFJlcXVlc3QmJiwgRXZl
bnQqID0gbnVsbHB0ciwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9
IHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
CmluZGV4IDRmZDYzN2E5MDE0YTVkNDFhMjI2ZWU0NTkxN2I2YjNlOWE3OTBlYmIuLmVlOWYzZDBj
OTg0ZDQ1NWNiYjkxYjQ2MGMxYmMxMjg5OGQxMjM2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC05OCw3ICs5OCw3IEBAIGNsYXNzIFJlc291cmNlSGFu
ZGxlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgV2lkZ2V0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmluZGV4IGFlZjY2OGJkNjNlZDVmY2Q0
NWU2MWU5ZDFmMTA3Y2ZiNmFlZjI2NGIuLjI5ZDJlM2Y0NjE0MGFhYTUxMTYwZTZhMjg1NjJmMzcw
ZTM3MWViMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVn
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCkBAIC01MSw3
ICs1MSw3IEBAIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291
cmNlTG9hZGVyOwogCiBzdHJ1Y3QgRmV0Y2hPcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCmluZGV4IDc2NGY4ODY4NDQ3YjZlNWE2NDdkOTkw
ODE5ZmM0ZGVkNGZkMjFjMWMuLjY3Y2ZlNTcyZGY3OTM5OWI4MWE0YmFlYzUzM2ViYzNmZjE3YWEy
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAK
QEAgLTM2NSw3ICszNjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9y
IGdlc3R1cmVJbmRpY2F0b3IgeyB1c2VyR2VzdHVyZVRvRm9yd2FyZCgpIH07CiAKICAgICAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXBsYWNlbWVudFJlc3BvbnNlIHsgbV9vcmlnaW5Eb2N1bWVudC51
cmwoKSwgInRleHQvcGxhaW4iX3MsIDAsICJVVEYtOCJfcyB9OwotICAgICAgICBTdWJzdGl0dXRl
RGF0YSByZXBsYWNlbWVudERhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBtX29yaWdpbkRv
Y3VtZW50LnVybCgpLCByZXBsYWNlbWVudFJlc3BvbnNlLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lv
bkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4gfTsKKyAgICAgICAgU3Vic3RpdHV0ZURhdGEgcmVw
bGFjZW1lbnREYXRhIHsgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIG1fb3JpZ2lu
RG9jdW1lbnQudXJsKCksIHJlcGxhY2VtZW50UmVzcG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNz
aW9uSGlzdG9yeVZpc2liaWxpdHk6OkhpZGRlbiB9OwogCiAgICAgICAgIFJlc291cmNlUmVxdWVz
dCByZXNvdXJjZVJlcXVlc3QgeyBtX29yaWdpbkRvY3VtZW50LnVybCgpLCBlbXB0eVN0cmluZygp
LCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6UmVsb2FkSWdub3JpbmdDYWNoZURhdGEgfTsK
ICAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgbV9vcmlnaW5Eb2N1
bWVudCwgbV9vcmlnaW5Eb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLCBXVEZNb3ZlKHJlc291cmNl
UmVxdWVzdCksIHsgfSwgaW5pdGlhdGVkQnlNYWluRnJhbWUoKSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKaW5kZXggNjMz
NzU1OTYzMjAwMTQ2MzgyODllMjgyNjA0YzU1YjBhZjQ0NTMxMy4uNjA0M2FjOWJlMjY3ZWE0ZmJj
NzFlMTExOGI5MDc5MTU1ZTM5MTUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2
b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZQogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwg
bGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0K
IAotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXls
b2FkVHlwZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1v
dmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZv
aWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXls
b2FkVHlwZSkKK3ZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgUmVmPE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAppbmRleCA0OGJiMjE1M2M5
M2YyZGM3NTRlMjA3MzIyNTJjMDUwOWNmNzA0YTQxLi5iNTE3NGVkYzk0Yjk5MjM5MDIwNWYwZmFk
NDUyZWE1YWMzODc4OTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIuaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVx
dWVzdCYmKT4mJiBjYWxsYmFjaykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBw
b2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3
aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENh
bmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlEb25lKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKaW5kZXgg
YzYyNzc2ODU4YTZkYzVhZmZkMzZkYzllNzg1YzhiZDI0NzJiYjc0ZC4uZDk0YjcwMDA3NDFjZDkx
MmI5MTczZTJiMzc0NmQ0ZGE4YjM2OGE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKQEAgLTE1NSw3ICsxNTUsNyBA
QCBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvckJ5dGVz
KFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZwogICAgIHJldHVybiB7IGFsZ29yaXRobSwgY3J5cHRv
RGlnZXN0LT5jb21wdXRlSGFzaCgpIH07CiB9CiAKLVJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhp
Y0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIp
CitSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJl
ZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0s
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICBhdXRvIGNyeXB0
b0RpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUodG9DcnlwdG9EaWdlc3RBbGdvcml0
aG0oYWxnb3JpdGhtKSk7CiAgICAgaWYgKGJ1ZmZlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCmluZGV4IGFlYTNkYzU3Yzg3
ODMxMzAxM2E1YjE2YzkzOWI3NzRlZDQ4NDMyNGMuLjgzYjg2MTNjZmRhMjMyOWFlMzBiYmY2YWJj
MTRiOTlkNDQyMzdiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUNyeXB0b2dyYXBoaWNEaWdlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0LmgKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUmVzb3VyY2VDcnlwdG9ncmFwaGlj
RGlnZXN0IHsKICAgICBlbnVtIGNsYXNzIEFsZ29yaXRobSB7CkBAIC03NSw3ICs3NSw3IEBAIHN0
ZDo6b3B0aW9uYWw8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VFbmNv
ZGVkQ3J5cHRvZ3JhcGhpY0RpZ2VzCiAKIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VDcnlwdG9ncmFw
aGljRGlnZXN0PiBkZWNvZGVFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0KGNvbnN0
IEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QmKTsKIAotUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZmZXIoUmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0sIGNvbnN0IFNoYXJlZEJ1ZmZlciopOworUmVz
b3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZm
ZXIoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0sIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqKTsKIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFw
aGljRGlnZXN0Rm9yQnl0ZXMoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0s
IGNvbnN0IHZvaWQqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYWE4NWJiNGQzY2E4NzE0NWJiN2E4NmY2NDY2
OGU0OTUxNzZhYzIzNS4uOWFmZDFiYmViNzYyYzU5MjZjMWYzNWU0OGMxMzcyMTQ5OTA3M2Y4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC03Niw2ICs3Niw3
IEBAIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIp
OwogUmVzb3VyY2VMb2FkZXI6OlJlc291cmNlTG9hZGVyKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VM
b2FkZXJPcHRpb25zIG9wdGlvbnMpCiAgICAgOiBtX2ZyYW1lIHsgJmZyYW1lIH0KICAgICAsIG1f
ZG9jdW1lbnRMb2FkZXIgeyBmcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpIH0K
KyAgICAsIG1fcmVzb3VyY2VEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVy
PigpIH0KICAgICAsIG1fZGVmZXJzTG9hZGluZyB7IG9wdGlvbnMuZGVmZXJzTG9hZGluZ1BvbGlj
eSA9PSBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFn
ZSgpLT5kZWZlcnNMb2FkaW5nKCkgfQogICAgICwgbV9vcHRpb25zIHsgb3B0aW9ucyB9CiB7CkBA
IC0xMTgsNyArMTE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygp
CiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxw
dHI7CisgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CiAgICAgbV9kZWZlcnJlZFJlcXVlc3Qg
PSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0KIApAQCAtMTg5LDcgKzE5MCw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmluaXQoUmVzb3VyY2VSZXF1ZXN0JiYgY2xpZW50UmVxdWVzdCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGVsaXZlclJlc3Bv
bnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGRpZFJlY2VpdmVSZXNwb25zZShy
ZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBX
VEZNb3ZlKGJ1ZmZlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZWFjaGVkVGVybWluYWxT
dGF0ZSgpKQpAQCAtMzAwLDcgKzMwMSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWREYXRh
VVJMKCkKIAogICAgICAgICBhdXRvIGRhdGFTaXplID0gZGVjb2RlUmVzdWx0LT5kYXRhLnNpemUo
KTsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBkYXRhUmVzcG9uc2UgPSBSZXNvdXJjZVJlc3Bv
bnNlOjpkYXRhVVJMUmVzcG9uc2UodXJsLCBkZWNvZGVSZXN1bHQudmFsdWUoKSk7Ci0gICAgICAg
IHRoaXMtPmRpZFJlY2VpdmVSZXNwb25zZShkYXRhUmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZGF0YVNpemUsIGRhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGRlY29kZVJlc3VsdC0+ZGF0YSkpXSgpIG11dGFibGUgeworICAg
ICAgICB0aGlzLT5kaWRSZWNlaXZlUmVzcG9uc2UoZGF0YVJlc3BvbnNlLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGRhdGFTaXplLCBkYXRhID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGVjb2RlUmVzdWx0LT5kYXRhKSldKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXRoaXMtPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkg
JiYgZGF0YVNpemUgJiYgbV9yZXF1ZXN0Lmh0dHBNZXRob2QoKSAhPSAiSEVBRCIpCiAgICAgICAg
ICAgICAgICAgdGhpcy0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGRhdGEpLCBkYXRhU2l6ZSwg
RGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKIApAQCAtMzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBk
YXRhQnVmZmVyaW5nUG9sCiAKICAgICAvLyBSZXNldCBhbnkgYWxyZWFkeSBidWZmZXJlZCBkYXRh
CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9O
b3RCdWZmZXJEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgICAg
IG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxs
U3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpAQCAtMzI5LDI5ICszMzAsMjkgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKICAgICAgICAg
bV9oYW5kbGUtPmNhbmNlbCgpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JC
dWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBTaGFyZWRCdWZmZXIq
IGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VM
b2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5n
dGgsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQ
YXlsb2FkVHlwZSkKIHsKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9h
ZFdob2xlUmVzb3VyY2UpIHsKLSAgICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVz
b3VyY2VEYXRhID0gYnVmZmVyOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNl
RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgCisgICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdo
b2xlUmVzb3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOworCiAgICAgaWYg
KGJ1ZmZlcikKICAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsKICAgICBl
bHNlCiAgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAor
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0
YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLT5nZXQoKS5nZXQoKTsKK30K
Kwogdm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEoKQogewotICAgIGlmICht
X3Jlc291cmNlRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmNsZWFyKCk7CisgICAgaWYg
KCFtX3Jlc291cmNlRGF0YS0+aXNOdWxsKCkpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5lbXB0
eSgpOwogfQogCiBib29sIFJlc291cmNlTG9hZGVyOjppc1N1YnJlc291cmNlTG9hZGVyKCkgY29u
c3QKQEAgLTU1MSwxNCArNTUyLDE0IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsCiAgICAgZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVu
Z3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBh
eWxvYWRUeXBlKQogewogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RG
TW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAot
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5
cGUpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlw
ZSBkYXRhUGF5bG9hZFR5cGUpCiB7Ci0gICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgZ2V0
IGRhdGErbGVuZ3RoICpPUiogYSBTaGFyZWRCdWZmZXIuCisgICAgLy8gVGhpcyBtZXRob2Qgc2hv
dWxkIG9ubHkgZ2V0IGRhdGErbGVuZ3RoICpPUiogYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgog
ICAgIEFTU0VSVCghYnVmZmVyIHx8ICghZGF0YSAmJiAhbGVuZ3RoKSk7CiAKICAgICAvLyBQcm90
ZWN0IHRoaXMgaW4gdGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJv
Y2Vzc2luZyBjYW4gZG8KQEAgLTU3MSw3ICs1NzIsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aAogICAgIC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcg
c3BlZWRzLCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAvLyBDb3VsZCBiZSBh
biBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KICAgICBpZiAobV9vcHRpb25zLnNlbmRM
b2FkQ2FsbGJhY2tzID09IFNlbmRDYWxsYmFja1BvbGljeTo6U2VuZENhbGxiYWNrcyAmJiBtX2Zy
YW1lKQotICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRo
aXMsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICAg
ICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIg
PyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7
CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCkBAIC03MzUsNyArNzM2LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ24KICAgICBkaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgsIGVu
Y29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgZGlkUmVjZWl2ZUJ1
ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJi
YjNiMWJkMjE1NDVkYjUyYzJlMWNhNjRlZTQyYjkxNy4uNTRiMWI4NjZkZjg5NmE4NGI0Y2EyOTdl
ZTQ3NmQ2ZDBiNjYxZmRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCkBAIC01NSw2ICs1Niw4IEBAIGNsYXNzIEZyYW1lOwogY2xh
c3MgRnJhbWVMb2FkZXI7CiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyOwogY2xhc3MgTmV0d29y
a0xvYWRNZXRyaWNzOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI7CiAKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVS
KFJlc291cmNlTG9hZGVyKTsKIGNsYXNzIFJlc291cmNlTG9hZGVyIDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPFJlc291cmNlTG9hZGVyPiwgcHVibGljIFJlZkNvdW50ZWQ8UmVzb3VyY2VMb2FkZXI+
LCBwcm90ZWN0ZWQgUmVzb3VyY2VIYW5kbGVDbGllbnQgewpAQCAtNjYsNyArNjksNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdChSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKLSAgICB2b2lkIGRlbGl2ZXJSZXNwb25zZUFuZERh
dGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAg
IHZvaWQgZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRMb2FkaW5nKCkKQEAgLTk4LDcgKzEwMSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVJlc291cmNlcygpOwogICAgIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQog
Ci0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3Jlc291
cmNlRGF0YS5nZXQoKTsgfQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHJlc291
cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURhdGEoKTsKICAgICAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpAQCAtMTA3LDcgKzEx
MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9u
ZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVy
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2ln
bmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCkBAIC0xNjYsNyArMTY5LDcg
QEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCB3YXNDYW5jZWxsZWQoKSBjb25zdCB7IHJldHVybiBt
X2NhbmNlbGxhdGlvblN0YXR1cyA+PSBDYW5jZWxsZWQ7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIAogICAgIHZvaWQgc2V0UmVmZXJyZXJQb2xpY3ko
UmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3kpIHsgbV9vcHRpb25zLnJlZmVycmVyUG9saWN5
ID0gcmVmZXJyZXJQb2xpY3k7IH0KICAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSgp
IGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5yZWZlcnJlclBvbGljeTsgfQpAQCAtMTkxLDcgKzE5
NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNl
RXJyb3ImKSA9IDA7CiAKLSAgICB2b2lkIGFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90Kiwg
dW5zaWduZWQsIFNoYXJlZEJ1ZmZlciosIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBhZGRE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiwgRGF0YVBheWxvYWRUeXBlKTsKICAgICB2b2lkIGxvYWREYXRhVVJMKCk7CiAgICAgdm9p
ZCBmaW5pc2hOZXR3b3JrTG9hZCgpOwogCkBAIC0yMDIsNyArMjA1LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VS
ZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgd2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3Qm
JiwgUmVzb3VyY2VSZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVx
dWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBv
dmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8
U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291
cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdhc0Jsb2NrZWQoUmVzb3VyY2VIYW5kbGUq
KSBvdmVycmlkZTsKQEAgLTIyNyw3ICsyMzAsNyBAQCBwcml2YXRlOgogCiAgICAgUmVzb3VyY2VS
ZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9vcmlnaW5hbFJlcXVlc3Q7
IC8vIEJlZm9yZSByZWRpcmVjdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9yZXNvdXJj
ZURhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcmVzb3VyY2VEYXRh
OwogICAgIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDQ2Y2VmYmRm
OWRhMTc4OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjM3ZDBiYjgyMWFiZDg2YTliNTYwNmUx
MjdlZmM5NDEyYTUxYmIxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcApAQCAtNTMwLDcgKzUzMCw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uCiAg
ICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWRE
YXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIFN1YnJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lk
IFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChh
dXRvIHByZXZpZXdMb2FkZXIgPSBtX3ByZXZpZXdMb2FkZXIuZ2V0KCkpIHsKQEAgLTU0Miw3ICs1
NDIsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZQogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBh
eWxvYWRUeXBlKTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5
cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBBU1NFUlQobV9yZXNvdXJj
ZSk7CiAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsCiAgICAgICAg
IGlmIChhdXRvKiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkKICAgICAgICAg
ICAgIG1fcmVzb3VyY2UtPnVwZGF0ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPmRh
dGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKKyAgICAgICAg
ICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCmluZGV4
IDM3MjNiNmI5YWI5ZmRkYWFhNTU3NGJmYjBlNmYzOGNlZDdhZWZiNzUuLjgzMmM5ZjBlNzNkMzg0
NjRhNzk1ZjQwMzg2MGY3OWMzNGU3M2JjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRT
ZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcg
dG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBv
bGljeUNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBE
YXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBvdmVycmlkZTsKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBFeHBlY3RlZDx2b2lk
LCBTdHJpbmc+IGNoZWNrUmVzcG9uc2VDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOwogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZWRpcmVj
dGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHByZXZp
b3VzUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlUmVxdWVzdCYgbmV3
UmVxdWVzdCk7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihj
b25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBu
b3RpZnlEb25lKExvYWRDb21wbGV0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0
aXR1dGVEYXRhLmgKaW5kZXggZjY2MjkyZTMxY2JlYjQyNjQzMGE4MzJhZGVmNDI5OTFjYjU3NDM2
ZS4uYThhNDliNDdmOTI3MzQyNzRiYTRjZWFiYzE3MDdmZWZhN2I2NjQwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBTdWJzdGl0dXRlRGF0YShS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGNvbnRlbnQsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBz
aG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KQorICAgICAgICBTdWJzdGl0dXRlRGF0YShSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjb250ZW50LCBjb25zdCBVUkwmIGZhaWxpbmdV
UkwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTZXNzaW9uSGlzdG9yeVZpc2li
aWxpdHkgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSkKICAgICAgICAgICAgIDogbV9jb250
ZW50KFdURk1vdmUoY29udGVudCkpCiAgICAgICAgICAgICAsIG1fZmFpbGluZ1VSTChmYWlsaW5n
VVJMKQogICAgICAgICAgICAgLCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQpAQCAtNTQsMTQgKzU0LDE0
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZW50ICE9IG51bGxwdHI7IH0KICAgICAgICAgYm9vbCBzaG91bGRSZXZlYWxU
b1Nlc3Npb25IaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRSZXZlYWxUb1Nlc3Npb25I
aXN0b3J5ID09IFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6VmlzaWJsZTsgfQogCi0gICAgICAg
IGNvbnN0IFNoYXJlZEJ1ZmZlciogY29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudC5n
ZXQoKTsgfQorICAgICAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBjb250ZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZW50LmdldCgpOyB9CiAgICAgICAgIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlLm1pbWVUeXBlKCk7IH0KICAgICAg
ICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNl
LnRleHRFbmNvZGluZ05hbWUoKTsgfQogICAgICAgICBjb25zdCBVUkwmIGZhaWxpbmdVUkwoKSBj
b25zdCB7IHJldHVybiBtX2ZhaWxpbmdVUkw7IH0KICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAgICAgICAgIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udGVudDsKKyAg
ICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fY29udGVudDsKICAgICAgICAg
VVJMIG1fZmFpbGluZ1VSTDsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwog
ICAgICAgICBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgbV9zaG91bGRSZXZlYWxUb1Nlc3Npb25I
aXN0b3J5IHsgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4gfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCA1OTY2NGI1ODU0Zjg1YjAyY2Rm
MzQ5MDIwYTBlZmYxM2ViNzg4ODc5Li5jZjJkZTBjNjJkOTVmMzMyNWI0MmI0NmUyNDAzNzc0NDEw
NzQyYTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCkBA
IC0zNywxMiArMzcsMTQgQEAgcHVibGljOgogCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7
IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQotICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZmZXI+KG1fZGF0YSk7
IH0KKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX3JlZmVyZW5jZV9jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEu
Z2V0KCkgfSk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoKSB7IG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsgfQorICAgIHZvaWQgY2xlYXIoKSB7
IG1fZGF0YS5lbXB0eSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxv
YWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2Us
IG1fZGF0YS0+Y29weSgpKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9h
ZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwg
bV9kYXRhLmNvcHkoKSk7IH0KIAogcHJvdGVjdGVkOgotICAgIFN1YnN0aXR1dGVSZXNvdXJjZShV
UkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKQorICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKICAgICAg
ICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAgICAgICAgICwgbV9yZXNwb25zZShXVEZNb3ZlKHJl
c3BvbnNlKSkKICAgICAgICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKQEAgLTUyLDcgKzU0LDcg
QEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBVUkwgbV91cmw7CiAgICAgUmVzb3VyY2VSZXNw
b25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVHcm91cC5jcHAKaW5kZXggODlmM2IwZjFkYzM5ZDQwYTU2Mzg3OGFlNTVmNzZjNjcwYTcxNTA5
MS4uMDM2ZWZkMjBlNDk2MzAwY2Y4YzllN2U3OTAzMTdlMDFkZTViYWYzOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHAKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlk
RmluaXNoTG9hZGluZ01hbmlmZXN0KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRv
IG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwg
bV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNv
dXJjZS0+ZGF0YSgpLmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsK
KyAgICBhdXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5p
ZmVzdFVSTCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFu
aWZlc3RSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVz
dFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAg
IC8vIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1Qi
IHNpZ25hdHVyZSBpcyB0aGUgb25seSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4K
ICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBt
YW5pZmVzdCBjb3VsZCBub3QgYmUgcGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFO
SUZFU1Q/Il9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDYwMzI4MTg4ODM3NWY0NGE2MjRiM2UzYjNh
YWZlMDZhMzY4OTJlZTYuLjcyMGE5MjcxY2QzMjY1ZWY0Y2UyMzI2MWEyNmRiMGQ4MjhjNjMzNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmNwcApAQCAtMjUzLDE2ICsyNTMsMTQgQEAgVVJMIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgogfQogCi1z
dGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQorc3RhdGljIGlubGluZSBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAgLy8gRklYTUU6IENsaWVudHMgcHJvYmFibHkgZG8g
bm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgLy8gUmVtb3ZlIHRoZSBj
YWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9k
aWZpZWQuCiAgICAgaWYgKHJlc291cmNlLnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biByZXNvdXJjZS5kYXRhKCkuY29weSgpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOworICAgICAgICByZXR1cm4gcmVz
b3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQog
Ci1ib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRp
b25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAgIGlmICghc2hvdWxkTG9hZFJlc291cmNlRnJvbUFw
cGxpY2F0aW9uQ2FjaGUocmVxdWVzdCwgcmVzb3VyY2UpKQpAQCAtMjc5LDcgKzI3Nyw3IEBAIGJv
b2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBSZXNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXBwbGlj
YXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAg
ICAvLyBJZiBub3JtYWwgbG9hZGluZyByZXN1bHRzIGluIGEgcmVkaXJlY3QgdG8gYSByZXNvdXJj
ZSB3aXRoIGFub3RoZXIgb3JpZ2luIChpbmRpY2F0aXZlIG9mIGEgY2FwdGl2ZSBwb3J0YWwpLCBv
ciBhIDR4eCBvciA1eHggc3RhdHVzIGNvZGUgb3IgZXF1aXZhbGVudCwKICAgICAvLyBvciBpZiB0
aGVyZSB3ZXJlIG5ldHdvcmsgZXJyb3JzIChidXQgbm90IGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRo
ZSBkb3dubG9hZCksIHRoZW4gaW5zdGVhZCBnZXQsIGZyb20gdGhlIGNhY2hlLCB0aGUgcmVzb3Vy
Y2Ugb2YgdGhlIGZhbGxiYWNrIGVudHJ5CkBAIC0yOTAsOSArMjg4LDcgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYKICAgICAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsK
ICAgICAgICAgaWYgKGdldEFwcGxpY2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKHJlcXVlc3Qs
IHJlc291cmNlKSkgewogICAgICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2Uo
KTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBDbGllbnRzIHByb2FibHkgZG8gbm90IG5lZWQgYSBj
b3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGNhbGwg
dG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmll
ZC4KLSAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNvcHkoKTsKKyAgICAgICAg
ICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIH0K
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4IDUyY2QxNjQwM2ExNzM2YTcxODY1Njc3MjQ4NjExZTA4
ZjY2M2IyOWYuLmRjODU4ZmRkNmQ1NDUzZWI0MzU5MjhkM2VkNzU3NTcwODM1OTQ1ZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBj
bGFzcyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBj
bGFzcyBGcmFtZTsKQEAgLTQ5LDcgKzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNz
IFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBj
bGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdCB7CkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNv
dXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBS
ZXNvdXJjZUVycm9yJik7CiAKLSAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3Vy
Y2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYpOwotICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHko
UmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNr
U3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwogCiAgICAg
Ym9vbCBjYW5DYWNoZUluQmFja0ZvcndhcmRDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3Bw
CmluZGV4IGYxZjdlMTc1NjMwMTQ3MWYzMDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLmQzYjI2NDlm
NDY1YTA2NjQ3YTlhZmEwZjhjNTg1NzI4NjMzNGMwMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3Bw
CkBAIC0yOSwxOCArMjksMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8QXBwbGlj
YXRpb25DYWNoZVJlc291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25z
dCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5
cGUsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhdGgpCitS
ZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNy
ZWF0ZShjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVu
c2lnbmVkIHR5cGUsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBwYXRoKQogewogICAgIEFTU0VSVCghdXJsLmhhc0ZyYWdtZW50SWRlbnRpZmll
cigpKTsKICAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CiAgICAgYXV0byByZXNvdXJjZVJlc3BvbnNlID0gcmVzcG9uc2U7CiAgICAgcmVzb3VyY2VS
ZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpBcHBsaWNhdGlvbkNh
Y2hlKTsKIAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZShVUkwgeyB1cmwgfSwgV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSwgdHlwZSwgYnVmZmVyLnJl
bGVhc2VOb25OdWxsKCksIHBhdGgpKTsKIH0KIAotQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
cG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBwYXRoKQorQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5
cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgcGF0
aCkKICAgICA6IFN1YnN0aXR1dGVSZXNvdXJjZShXVEZNb3ZlKHVybCksIFdURk1vdmUocmVzcG9u
c2UpLCBXVEZNb3ZlKGRhdGEpKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3N0b3JhZ2VJ
RCgwKQpAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJgogCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQog
ewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5p
c0VtcHR5KCkgPyBkYXRhKCkuY29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUobV9wYXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVz
cG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29udGlndW91cygpIDogQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOwog
fQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlwZSh1bnNpZ25lZCB0eXBl
KSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuaAppbmRleCA4OGM5NGRlMWE3NzQxMDQ2OWM5MzFhNDJhNDc5YjFl
Njc3N2E3MDJlLi4xNTg0OGQ1OWIwY2M5MGRmNDliNmEyM2U2NmJhNmJlZGQzYzg2YWJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZS5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgRmFsbGJh
Y2sgPSAxIDw8IDQKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWdu
ZWQgdHlwZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCks
IGNvbnN0IFN0cmluZyYgcGF0aCA9IFN0cmluZygpKTsKKyAgICBzdGF0aWMgUmVmPEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZT4gY3JlYXRlKGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJp
bmcoKSk7CiAKICAgICB1bnNpZ25lZCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAg
ICAgdm9pZCBhZGRUeXBlKHVuc2lnbmVkIHR5cGUpOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6
CiAjZW5kaWYKICAgICAKIHByaXZhdGU6Ci0gICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVS
TCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVS
TCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHBhdGgpOwogCiAgICAgdm9pZCBkZWxpdmVyKFJl
c291cmNlTG9hZGVyJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggMWM1MDg0N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2
YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1f
YXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Cisg
ICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQog
CiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4m
JiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUzYzQ5
OTAyNDBhNTIwYmQzMGU2MzY1OTUuLjFkZTk1OWRhMWMwM2ZlNzBmOTg0NGFkZGRmZjM2NWFmZGUz
MDMwNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVz
b3VyY2UsIHVuc2lnbmVkCiAgICAgYXV0byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVw
YXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkg
VkFMVUVTICg/LCA/KSJfcyk7CiAgICAgaWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgCiAKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJj
ZS0+cGF0aCgpLmlzRW1wdHkoKSkKQEAgLTgxNSw3ICs4MTQsNyBAQCBib29sIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1
bnNpZ25lZAogICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9
IGVsc2UgewogICAgICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAg
ICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAg
ICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRp
Z3VvdXMoKS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhl
Y3V0ZUNvbW1hbmQoKSkgewpAQCAtODczLDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5z
aWduZWQKICAgICAKICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFs
dWUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNj
ZXNzZnVsbHkgd3JpdGUgdGhlIHJlc291cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAv
LyByZWxlYXNlIHRoZSByZXNvdXJjZSdzIGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBs
YXJnZSBhbW91bnQKICAgICAvLyBvZiBtZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5
KCkpCi0gICAgICAgIHJlc291cmNlLT5kYXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2Ut
PmNsZWFyKCk7CiAKICAgICByZXNvdXJjZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAg
IHJldHVybiB0cnVlOwpAQCAtMTExMyw3ICsxMTEyLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2Fj
aGU+IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlE
KQogICAgICAgICBpbnQgaHR0cFN0YXR1c0NvZGUgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50
KDEpOwogCiAgICAgICAgIHVuc2lnbmVkIHR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2Fj
aGVTdGF0ZW1lbnQtPmNvbHVtbkludDY0KDIpKTsKLSAgICAgICAgYXV0byBkYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOworICAgICAgICBh
dXRvIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQt
PmNvbHVtbkJsb2IoNikpOwogICAgICAgICAKICAgICAgICAgU3RyaW5nIHBhdGggPSBjYWNoZVN0
YXRlbWVudC0+Y29sdW1uVGV4dCg3KTsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpAQCAt
MTI3Myw3ICsxMjcyLDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c2hvdWxkU3Rv
cmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNoZVJlc28KICAgICByZXR1cm4gc3Rh
cnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAiYXVkaW8vIikgfHwgc3RhcnRz
V2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAidmlkZW8vIik7CiB9CiAgICAgCi1i
b29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVj
dG9yeShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbikKK2Jvb2wgQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbikKIHsKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5oCmluZGV4IDlhOTUzMDA4NzY2YTg4ODU1NjFiMzQ4ODg5YjhjZWRhMmIy
ZWIzMzguLjQxMDJhMTgwOGI0NTU1N2I2NDVlMzZlN2U2ODFmYzRjNmQyMDdjZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsK
IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0b3JhZ2VJ
REpvdXJuYWw7CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlIDogcHVibGljIFJlZkNv
dW50ZWQ8QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U+IHsKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgZW5zdXJlT3JpZ2luUmVjb3JkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKik7
CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGljYXRp
b25DYWNoZVJlc291cmNlKik7CiAgICAgdm9pZCBkZWxldGVUYWJsZXMoKTsKLSAgICBib29sIHdy
aXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRl
bnNpb24pOworICAgIGJvb2wgd3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91dEZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pOwogCiAgICAgdm9pZCBsb2FkTWFu
aWZlc3RIb3N0SGFzaGVzKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKaW5kZXggNmRlODBjMTBhYzdkMjVjZjM0NjlmNmRlZjBm
YWY3MjQxZjU5NjQyOC4uNGVmOWNkNjZiZDA4OGI3NGMwNDZjMDY5MGQxZTlkM2U1ZTMzNjBmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3Rvcnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNw
cApAQCAtNDYsMTIgKzQ2LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBS
ZWZQdHI8QXJjaGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24oY29uc3QgVVJMJiwgU2hhcmVk
QnVmZmVyJik7Cit0eXBlZGVmIFJlZlB0cjxBcmNoaXZlPiBSYXdEYXRhQ3JlYXRpb25GdW5jdGlv
bihjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiB0eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbiosIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4gQXJjaGl2ZU1JTUVUeXBlc01hcDsKIAogLy8gVGhlIGNyZWF0ZSBmdW5jdGlvbnMgaW4gdGhl
IGFyY2hpdmUgY2xhc3NlcyByZXR1cm4gUmVmUHRyIHRvIGNvbmNyZXRlIHN1YmNsYXNzZXMKIC8v
IG9mIEFyY2hpdmUuIFRoaXMgYWRhcHRvciBtYWtlcyB0aGUgZnVuY3Rpb25zIGhhdmUgYSB1bmlm
b3JtIHJldHVybiB0eXBlLgotdGVtcGxhdGU8dHlwZW5hbWUgQXJjaGl2ZUNsYXNzPiBzdGF0aWMg
UmVmUHRyPEFyY2hpdmU+IGFyY2hpdmVGYWN0b3J5Q3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK3RlbXBsYXRlPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGlj
IFJlZlB0cjxBcmNoaXZlPiBhcmNoaXZlRmFjdG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHJldHVybiBBcmNoaXZlQ2xhc3M6
OmNyZWF0ZSh1cmwsIGJ1ZmZlcik7CiB9CkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgQXJjaGl2ZUZh
Y3Rvcnk6OmlzQXJjaGl2ZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0
dXJuICFtaW1lVHlwZS5pc0VtcHR5KCkgJiYgYXJjaGl2ZU1JTUVUeXBlcygpLmNvbnRhaW5zKG1p
bWVUeXBlKTsKIH0KIAotUmVmUHRyPEFyY2hpdmU+IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUoY29u
c3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
K1JlZlB0cjxBcmNoaXZlPiBBcmNoaXZlRmFjdG9yeTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewog
ICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaAppbmRleCAyMWQyMzY1Y2Y4ZDlkOTAx
ZWZlN2FhZDU1MmJmM2RhNDA2OWZlNDBkLi41NTY0NTE1YzllMGQ5ZDAzM2I3OTBjNzQ3Mjg1YTI1
ODUzYWJlMDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNo
aXZlRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVG
YWN0b3J5LmgKQEAgLTM0LDEyICszNCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IEFyY2hpdmVGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc0FyY2hpdmVNSU1F
VHlwZShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGNyZWF0ZShj
b25zdCBVUkwmLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwor
ICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogICAgIHN0YXRpYyB2
b2lkIHJlZ2lzdGVyS25vd25BcmNoaXZlTUlNRVR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcAppbmRleCBmYzIwZGEzZGEwMzJjYmVmNzRmMmU5
Yzg0MjhhY2I0ZWUzN2JlZjIzLi4wNzM4Mzk0YTgyODcxNGFhMGI5MGVlNzUwNzlkNDg2ZjViMGU4
Njk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNv
dXJjZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxp
bmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5n
JiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKK2lubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJj
ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6
IFN1YnN0aXR1dGVSZXNvdXJjZShVUkwgeyB1cmwgfSwgUmVzb3VyY2VSZXNwb25zZSB7IHJlc3Bv
bnNlIH0sIFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwg
bV90ZXh0RW5jb2RpbmcodGV4dEVuY29kaW5nKQpAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgQXJj
aGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBj
b25zdCBVUkwmIHVybAogewogfQogCi1SZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVz
b3VyY2U6OmNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29u
c3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQor
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFk
YXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU0LDcgKzU0LDcgQEAgUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBjb24KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcmNoaXZlUmVzb3VyY2Uo
ZGF0YS5yZWxlYXNlTm9uTnVsbCgpLCB1cmwsIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1l
TmFtZSwgcmVzcG9uc2UpKTsKIH0KIAotUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJl
c291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitSZWZQdHI8QXJjaGl2ZVJlc291
cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGRhdGEpLCB1cmwsIHJlc3BvbnNlLm1p
bWVUeXBlKCksIHJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSwgU3RyaW5nKCksIHJlc3BvbnNl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNl
LmgKaW5kZXggMjA5ZTk3MTdhZWIwOTM2MGRiMzkyN2U2ZWZhMWU1YmYxYzJjOTdjYS4uMDU0OGVm
NzIxZWZkMjdjMDBjZTkzZDEyMjcwZWNlYzQ2YzAyYWY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKQEAgLTM0LDggKzM0LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBcmNoaXZlUmVzb3VyY2UgOiBwdWJsaWMgU3Vic3Rp
dHV0ZVJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gY3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsCisgICAg
c3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsCiAgICAgICAgIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJp
bmcmIGZyYW1lTmFtZSwKICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgPSBSZXNvdXJj
ZVJlc3BvbnNlKCkpOwogCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3Vs
ZElnbm9yZVdoZW5VbmFyY2hpdmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkSWdub3JlV2hl
blVuYXJjaGl2aW5nOyB9CiAKIHByaXZhdGU6Ci0gICAgQXJjaGl2ZVJlc291cmNlKFJlZjxTaGFy
ZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOworICAgIEFyY2hpdmVSZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5n
JiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CiAKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBTdHJpbmcgbV90ZXh0RW5j
b2Rpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2Fj
eVdlYkFyY2hpdmUuY3BwCmluZGV4IGRlN2RhZGRkYWMyMjEyZjZkNWUwY2MwOTFkNGU0MTY3N2Ez
ZjAxNWQuLjk1YThlOTZiNDQ5Y2IzY2U1YzdlMWY4NzQxMGU4NTBkNGQyOTJhOGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
Y3BwCkBAIC05MCw3ICs5MCw3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gUmVz
b3VyY2UgZGF0YSBjYW4gYmUgZW1wdHksIGJ1dCBtdXN0IGJlIHJlcHJlc2VudGVkIGJ5IGFuIGVt
cHR5IENGRGF0YVJlZgogICAgIGF1dG8mIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpOwogCi0gICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZl
UmVzb3VyY2VEYXRhS2V5LCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKKyAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJj
ZURhdGFLZXksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOwog
CiAgICAgLy8gUmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBudWxsCiAgICAgaWYgKGF1dG8gY2ZVUkwg
PSByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKQEAgLTExNyw5ICsx
MTcsOSBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIERvbid0IGluY2x1ZGUgdGhl
IHJlc291cmNlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlmICghaXNNYWlu
UmVzb3VyY2UpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2VSZXNwb25zZURhdGEgPSBjcmVh
dGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihyZXNvdXJjZS0+cmVzcG9uc2UoKSkpCi0gICAg
ICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdl
YkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7
ICAgIAorICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgp
LCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURh
dGEuZ2V0KCkpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBwcm9wZXJ0eUxpc3Q7CiB9CiAK
QEAgLTIxNSwxNyArMjE1LDE3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZVJlc291cmNlKENGRGljdGlvbmFyeVJlZiBkaWN0aW9uCiAgICAgICAgICAg
ICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgZGF0
YSBpcyBub3Qgb2YgdHlwZSBDRkRhdGEsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJjZSIp
OwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAg
ICAgICAgYXV0byByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiA9IHN0YXRpY19jYXN0PENGU3RyaW5n
UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlUmVz
b3VyY2VSZXNwb25zZVZlcnNpb25LZXkpKTsKICAgICAgICAgaWYgKHJlc291cmNlUmVzcG9uc2VW
ZXJzaW9uICYmIENGR2V0VHlwZUlEKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKSAhPSBDRlN0cmlu
Z0dldFR5cGVJRCgpKSB7CiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNo
aXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgdmVyc2lvbiBpcyBub3Qgb2YgdHlwZSBDRlN0cmluZywg
Y2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICByZXNwb25zZSA9IGNyZWF0ZVJl
c291cmNlUmVzcG9uc2VGcm9tUHJvcGVydHlMaXN0RGF0YShyZXNvdXJjZVJlc3BvbnNlRGF0YSwg
cmVzb3VyY2VSZXNwb25zZVZlcnNpb24pOwogICAgIH0KIAotICAgIHJldHVybiBBcmNoaXZlUmVz
b3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpLCBVUkwoVVJM
KCksIHVybCksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwgcmVzcG9uc2UpOwor
ICAgIHJldHVybiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUocmVzb3VyY2VEYXRhKSwgVVJMKFVSTCgpLCB1cmwpLCBtaW1lVHlwZSwgdGV4dEVu
Y29kaW5nLCBmcmFtZU5hbWUsIHJlc3BvbnNlKTsKIH0KIAogUmVmPExlZ2FjeVdlYkFyY2hpdmU+
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSgpCkBAIC0yNDgsMjMgKzI0OCwyMyBAQCBSZWY8TGVn
YWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFJlZjxBcmNoaXZlUmVzb3Vy
Y2U+JiYgbWFpblJlc291cgogICAgIHJldHVybiBhcmNoaXZlOwogfQogCi1SZWZQdHI8TGVnYWN5
V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSkK
K1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICByZXR1cm4gY3JlYXRlKFVSTCgpLCBkYXRh
KTsKIH0KIAotUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEpCitSZWZQdHI8TGVnYWN5V2ViQXJjaGl2
ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIENy
ZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKLSAgICAKKwogICAgIFJlZjxMZWdhY3lXZWJBcmNoaXZl
PiBhcmNoaXZlID0gY3JlYXRlKCk7Ci0gICAgICAgIAotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+
IGNmRGF0YSA9IGRhdGEuY3JlYXRlQ0ZEYXRhKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBjZkRhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogICAgIGlm
ICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCisKICAgICBDRkVy
cm9yUmVmIGVycm9yID0gbnVsbHB0cjsKLSAgICAKKwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25h
cnlSZWY+IHBsaXN0ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGUHJv
cGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoMCwgY2ZEYXRhLmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RJ
bW11dGFibGUsIDAsICZlcnJvcikpKTsKICAgICBpZiAoIXBsaXN0KSB7CiAjaWZuZGVmIE5ERUJV
RwpAQCAtMjc2LDEyICsyNzYsMTIgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEKICAgICAgICAg
ICAgIENGUmVsZWFzZShlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAg
ICAKKwogICAgIGlmIChDRkdldFR5cGVJRChwbGlzdC5nZXQoKSkgIT0gQ0ZEaWN0aW9uYXJ5R2V0
VHlwZUlEKCkpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEFy
Y2hpdmUgcHJvcGVydHkgbGlzdCBpcyBub3QgdGhlIGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJv
cnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KLSAgICAKKwogICAgIGlmICghYXJjaGl2ZS0+ZXh0cmFjdChwbGlzdC5nZXQoKSkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yOTUsNyArMjk1LDcgQEAgYm9vbCBMZWdhY3lXZWJB
cmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICBMT0co
QXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTnVsbCByb290IENGRGljdGlvbmFyeSwgYWJv
cnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
Ci0gICAgCisKICAgICBDRkRpY3Rpb25hcnlSZWYgbWFpblJlc291cmNlRGljdCA9IHN0YXRpY19j
YXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwgTGVn
YWN5V2ViQXJjaGl2ZU1haW5SZXNvdXJjZUtleSkpOwogICAgIGlmICghbWFpblJlc291cmNlRGlj
dCkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTm8gbWFpbiBy
ZXNvdXJjZSBpbiBhcmNoaXZlLCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKQEAgLTMz
Myw3ICszMzMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5
UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2Vi
QXJjaGl2ZSAtIFN1YnJlc291cmNlIGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0
aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAoYXV0byBzdWJy
ZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkpCiAgICAgICAgICAgICAg
ICAgYWRkU3VicmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAg
IH0KQEAgLTM1Myw3ICszNTMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZE
aWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAi
TGVnYWN5V2ViQXJjaGl2ZSAtIFN1YmZyYW1lIGFycmF5IGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rp
b25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBh
dXRvIHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHN1YmZyYW1l
QXJjaGl2ZS0+ZXh0cmFjdChzdWJmcmFtZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YmZy
YW1lQXJjaGl2ZShXVEZNb3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOwpAQCAtMzYxLDcgKzM2MSw3IEBA
IGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFy
eSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gSW52
YWxpZCBzdWJmcmFtZSBhcmNoaXZlIHNraXBwZWQiKTsKICAgICAgICAgfQogICAgIH0KLSAgICAK
KwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01MDYsNyArNTA2LDcgQEAgUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1hcmt1
cFN0cmluZywgRnIKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZyYW1lLmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3BvbnNlVVJMID0gcmVzcG9uc2Uu
dXJsKCk7Ci0gICAgCisKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgYSByZXNwb25zZSB3
aXRob3V0IGEgVVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTQ1NDkzNT4KICAgICBp
ZiAocmVzcG9uc2VVUkwuaXNOdWxsKCkpCkBAIC02MDUsNyArNjA1LDcgQEAgUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oRnJhbWUq
IGZyYW1lKQogCiAgICAgaWYgKCFkb2N1bWVudC0+aXNGcmFtZVNldCgpKQogICAgICAgICByZXR1
cm4gYXJjaGl2ZTsKLSAgICAgICAgCisKICAgICAvLyBXcmFwIHRoZSBmcmFtZXNldCBkb2N1bWVu
dCBpbiBhbiBpZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRvCiAgICAgLy8gYW5vdGhlciBk
b2N1bWVudCAod2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFtZXNldCBvZiBpdHMgb3duKS4g
CiAgICAgU3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZyYW1lYm9yZGVyPVwibm9cIiBt
YXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUlXCIgaGVpZ2h0
PVwiOTglJVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVz
cG9uc2UoKS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4iOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCmluZGV4IGQwOWVj
OWY3NWFiYTEzNmE4NjMzOWViNGQ4NmFiZDgyNzdjNGZmMDQuLjVhMDdiMTBiNGJlNmY4NjIwMTFh
NzgyYTdkZWQyMzY3NTkyNDM2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKQEAgLTQxLDggKzQxLDggQEAgc3RydWN0IFNp
bXBsZVJhbmdlOwogY2xhc3MgTGVnYWN5V2ViQXJjaGl2ZSBmaW5hbCA6IHB1YmxpYyBBcmNoaXZl
IHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPExlZ2FjeVdlYkFyY2hp
dmU+IGNyZWF0ZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2Vi
QXJjaGl2ZT4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZl
ciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lXZWJB
cmNoaXZlPiBjcmVhdGUoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiBtYWluUmVzb3VyY2UsIFZlY3Rv
cjxSZWY8QXJjaGl2ZVJlc291cmNlPj4mJiBzdWJyZXNvdXJjZXMsIFZlY3RvcjxSZWY8TGVnYWN5
V2ViQXJjaGl2ZT4+JiYgc3ViZnJhbWVBcmNoaXZlcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoTm9kZSYsIEZ1bmN0aW9uPGJvb2wo
RnJhbWUmKT4mJiBmcmFtZUZpbHRlciA9IHsgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoRnJhbWUmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmluZGV4IGFj
ZmJiYjcwMjAyMmQwNmFmZTYyMDA0MDQ4N2ZkMzRkOTIxZDcyN2MuLmFhNTNjYzVjZmZkMDZlY2Mw
ZGZjNzk0Yjk1NDVkYzMzZDQ4MjI2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIFJl
ZjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNSFRNTEFyY2hpdmUpOwogfQogCi1SZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFy
Y2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVyJiBkYXRhKQorUmVmUHRy
PE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gRm9yIHNlY3VyaXR5IHJlYXNvbnMg
d2Ugb25seSBsb2FkIE1IVE1MIHBhZ2VzIGZyb20gbG9jYWwgVVJMcy4KICAgICBpZiAoIUxlZ2Fj
eVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwodXJsLnByb3RvY29s
KCkudG9TdHJpbmcoKSkpCkBAIC0xMzAsNyArMTMwLDcgQEAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4g
TUhUTUxBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciYgZGF0YSkK
ICAgICByZXR1cm4gbWFpbkFyY2hpdmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJj
aGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKK1JlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiB7CiAg
ICAgVmVjdG9yPFBhZ2VTZXJpYWxpemVyOjpSZXNvdXJjZT4gcmVzb3VyY2VzOwogICAgIFBhZ2VT
ZXJpYWxpemVyIHBhZ2VTZXJpYWxpemVyKHJlc291cmNlcyk7CkBAIC0xNjIsNyArMTYyLDcgQEAg
UmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBw
YWdlKQogICAgIC8vIFdlIHVzZSB1dGY4KCkgYmVsb3cgaW5zdGVhZCBvZiBhc2NpaSgpIGFzIGFz
Y2lpKCkgcmVwbGFjZXMgQ1JMRnMgd2l0aCA/PyAod2Ugc3RpbGwgb25seSBoYXZlIHB1dCBBU0NJ
SSBjaGFyYWN0ZXJzIGluIGl0KS4KICAgICBBU1NFUlQoc3RyaW5nQnVpbGRlci50b1N0cmluZygp
LmlzQWxsQVNDSUkoKSk7CiAgICAgQ1N0cmluZyBhc2NpaVN0cmluZyA9IHN0cmluZ0J1aWxkZXIu
dG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgYXV0byBtaHRtbERhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgIGF1dG8gbWh0bWxEYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CiAgICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0
cmluZy5sZW5ndGgoKSk7CiAKICAgICBmb3IgKGF1dG8mIHJlc291cmNlIDogcmVzb3VyY2VzKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFy
Y2hpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2
ZS5oCmluZGV4IDNkMmRiN2M5NjAwMmViZTY4NGIyYmVmOGYxZWE5ZTJlOTc5NGE1ODkuLjJkZmU4
N2U4MmU3YTRkY2UwZjM0MWMzNjE5NDNjOTkwMjA1YzhkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oCkBAIC0zOCwxNCArMzgs
MTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNSFRNTFBhcnNlcjsKIGNsYXNzIFBh
Z2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
CiBjbGFzcyBNSFRNTEFyY2hpdmUgZmluYWwgOiBwdWJsaWMgQXJjaGl2ZSB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxNSFRNTEFyY2hpdmU+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBSZWZQdHI8
TUhUTUxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJik7CisgICAgc3Rh
dGljIFJlZlB0cjxNSFRNTEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJik7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZ2VuZXJhdGVNSFRN
TERhdGEoUGFnZSopOworICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZ2Vu
ZXJhdGVNSFRNTERhdGEoUGFnZSopOwogCiAgICAgdmlydHVhbCB+TUhUTUxBcmNoaXZlKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2Vy
LmNwcAppbmRleCBmMWI5MDFkZDAyMDNkY2FjOTRkZjZkMGVhZTRjYjJkMGJkYjgwMTVlLi43YjA1
MTUxZDM2NTdiNDBkMjdlN2E1MWMxZDNhZjAxNGU0NzVlZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC01MSw3ICs1
MSw3IEBAIHN0YXRpYyBib29sIHNraXBMaW5lc1VudGlsQm91bmRhcnlGb3VuZChTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlciYgbGluZVJlYWRlciwgY29uCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1N
SFRNTFBhcnNlcjo6TUhUTUxQYXJzZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQorTUhUTUxQYXJzZXI6
Ok1IVE1MUGFyc2VyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgOiBtX2xpbmVS
ZWFkZXIoZGF0YSwgIlxyXG4iKQogewogfQpAQCAtMTQwLDcgKzE0MCw3IEBAIFJlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXIm
IG1pbWVIZWFkZXIsCiB7CiAgICAgQVNTRVJUKGVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9
PSBlbmRPZkRvY3VtZW50Qm91bmRhcnkuaXNFbXB0eSgpKTsKIAotICAgIGF1dG8gY29udGVudCA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgYXV0byBjb250ZW50ID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgY29uc3QgYm9vbCBjaGVja0JvdW5kYXJ5ID0gIWVu
ZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKTsKICAgICBib29sIGVuZE9mUGFydFJlYWNoZWQgPSBm
YWxzZTsKICAgICBpZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1J
TUVIZWFkZXI6OkJpbmFyeSkgewpAQCAtMTkzLDkgKzE5MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1l
SGVhZGVyLAogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgIGF1dG8gY29u
dGlndW91c0NvbnRlbnQgPSBjb250ZW50LT5tYWtlQ29udGlndW91cygpOwogICAgIHN3aXRjaCAo
bWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVh
ZGVyOjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShj
b250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGF1dG8gZGVjb2RlZERh
dGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6
ZSgpKTsKICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9S
KCJJbnZhbGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0yMDQsMTcgKzIwNSwxNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291
cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVh
ZGVyLAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpRdW90ZWRQ
cmludGFibGU6Ci0gICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGVudC0+
ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxl
RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAgY2FzZSBNSU1F
SGVhZGVyOjpCaW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5kKGNvbnRlbnQtPmRhdGEoKSwgY29u
dGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoY29udGlndW91c0NvbnRlbnQtPmRh
dGEoKSwgY29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIC8v
IEZJWE1FOiB0aGUgVVJMIGluIHRoZSBNSU1FIGhlYWRlciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ug
c2hvdWxkIHJlc29sdmUgaXQgaWYgaXQgaXMuCiAgICAgLy8gVGhlIHNwZWNzIG1lbnRpb25zIDUg
d2F5cyB0byByZXNvbHZlIGEgVVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3
I3NlY3Rpb24tNQogICAgIC8vIElFIGFuZCBGaXJlZm94IChVTk1odCkgc2VlbSB0byBnZW5lcmF0
ZSBvbmx5IGFic29sdXRlIFVSTHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxQYXJzZXIuaAppbmRleCAxZTliZDRkNzc2N2VlMzkxYTAwMjJmNzE3NDhm
MDBiODVjODFiMjVmLi4wZDYwNDM0M2YzZDdhZDE3OGNjMjIwMDNjOTc5YzIyZTUwYTNiOTllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2Vy
LmgKQEAgLTQyLDExICs0MiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBcmNoaXZl
UmVzb3VyY2U7CiBjbGFzcyBNSFRNTEFyY2hpdmU7CiBjbGFzcyBNSU1FSGVhZGVyOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTUhU
TUxQYXJzZXIgewogcHVibGljOgotICAgIGV4cGxpY2l0IE1IVE1MUGFyc2VyKFNoYXJlZEJ1ZmZl
ciopOworICAgIGV4cGxpY2l0IE1IVE1MUGFyc2VyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsK
IAogICAgIFJlZlB0cjxNSFRNTEFyY2hpdmU+IHBhcnNlQXJjaGl2ZSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5jcHAKaW5kZXggNjUyNTFlYjY4MjA3ZmM0OWE5NWNjMWMzZWExZDRhOWViZmQ5MjcwNC4uZTFh
ODc1MTZiZDhkNWI4ZjI0YWY2YTViOTkwZTIxODUzNDdlNzU5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNw
cApAQCAtNDAsMTIgKzQwLDE2IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiB7CiB9CiAKLXZv
aWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9k
YXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7
Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAg
IG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXpl
KGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
bV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAg
IENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3QuaAppbmRleCAwN2YyYTA3OWM1NjRlZWZmYjY5N2MzN2M3ODU2NWUxZWE4ZDlhZTVlLi4z
Nzk4YTliNGQ5MDEzY2ZkZWE2ZjU2ZmJkZjAwMTVhZjg5NDc1NzAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgK
QEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8c3RydWN0IEFwcGxp
Y2F0aW9uTWFuaWZlc3Q+IHByb2Nlc3MoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJM
JiBkb2N1bWVudFVSTCwgRG9jdW1lbnQqID0gbnVsbHB0cik7CiAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgY29uc3Qg
VGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHAKaW5kZXggNTlmYTdjNjJmYzYxZTYzNzQyZjc0Y2M2YTBiY2YwMDBiYTliMTc2Zi4uMzhh
MmUxN2YwZDA2YzhhYzk4ZGUyNGIxZTUyYjhlNjBlOTI0MTIwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcApAQCAtODEsNyAr
ODEsNyBAQCBjb25zdCBTdHJpbmcgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2hlZXRUZXh0KE1JTUVU
eXBlQ2hlY2tIaW50IG1pbWVUeXBlQ2hlY2tIaW50LAogICAgICAgICByZXR1cm4gbV9kZWNvZGVk
U2hlZXRUZXh0OwogCiAgICAgLy8gRG9uJ3QgY2FjaGUgdGhlIGRlY29kZWQgdGV4dCwgcmVnZW5l
cmF0aW5nIGlzIGNoZWFwIGFuZCBpdCBjYW4gdXNlIHF1aXRlIGEgYml0IG9mIG1lbW9yeQotICAg
IHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEt
PnNpemUoKSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlKQpAQCAtOTcsMTMgKzk3LDE3IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0
Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICAgICAgc2F2
ZVBhcnNlZFN0eWxlU2hlZXQoKnNoZWV0Lm1fcGFyc2VkU3R5bGVTaGVldENhY2hlKTsKIH0KIAot
dm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRDU1NTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRh
OwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICAvLyBE
ZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVl
dCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQotICAgIGlmIChkYXRhKQotICAgICAg
ICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBk
YXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXpl
KCkpOworICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5n
IGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQorICAg
ICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0
YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9
IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRMb2Fk
aW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKICAgICAvLyBDbGVhciB0aGUg
ZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJlIG5lZWRlZCBpbW1lZGlhdGVseSBh
Z2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCmluZGV4IDVkNGRkM2RjN2UzNTNlZTNj
YjJmYjkzZjI3OGQyNTc5YjhkOWE3YTEuLmU2NTVjNjllM2VkYjYwOTUwMjM5Y2NlNDU0NWYwOTZi
NTI2NTZkZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRD
U1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENT
U1N0eWxlU2hlZXQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5j
b2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qg
ZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2Rl
cigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5h
bDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcios
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGVzdHJveURlY29k
ZWREYXRhKCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRS
ZXNvdXJjZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwCmluZGV4IDhjMmJjMmEzNDFjODIzNTFkN2Y2NjI1YmNlMjcxZDA3NzYzM2FlOTQuLjllMWJk
YTJmNDA2ZTg2NTZiOWVhMmQxODNiNGY3MWU2ZTQ3ODk2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY0LDEwICs2NCwxNSBAQCB2b2lkIENhY2hl
ZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogICAgICAg
ICBzdGF0aWNfY2FzdDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50KS5mb250TG9hZGVkKCp0aGlz
KTsKIH0KIAotdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRGb250Ojpm
aW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNl
dEVuY29kZWRTaXplKG1fZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYg
KGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAg
ICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAg
IG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAg
ICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KQEAgLTkw
LDcgKzk1LDcgQEAgU3RyaW5nIENhY2hlZEZvbnQ6OmNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24o
KSBjb25zdAogICAgIHJldHVybiB1cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygp
OwogfQogCi1ib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZl
ciogZGF0YSkKK2Jvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YSAmJiAhZXJyb3JPY2N1cnJlZCgpICYmICFpc0xvYWRpbmcoKSAmJiBkYXRhKSB7CiAgICAgICAg
IGJvb2wgd3JhcHBpbmc7CkBAIC0xMDMsOSArMTA4LDkgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1
cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgcmV0dXJuIG1fZm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5nZXQoKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZl
ciYgYnl0ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcp
CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3Jl
YXRlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0IFN0
cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCiB7Ci0gICAgUmVmUHRyIGJ1
ZmZlciB7ICZieXRlcyB9OworICAgIFJlZlB0ciBidWZmZXIgPSB7ICZieXRlcyB9OwogICAgIHdy
YXBwaW5nID0gIWNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoYnVmZmVyKTsKICAgICByZXR1
cm4gYnVmZmVyID8gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqYnVmZmVyLCBpdGVtSW5D
b2xsZWN0aW9uKSA6IG51bGxwdHI7CiB9CkBAIC0xMzUsNyArMTQwLDcgQEAgdm9pZCBDYWNoZWRG
b250OjpjaGVja05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewogICAgIGlmIChp
c0xvYWRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQ2FjaGVkUmVzb3VyY2VD
bGllbnRXYWxrZXI8Q2FjaGVkRm9udENsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CiAgICAgd2hp
bGUgKENhY2hlZEZvbnRDbGllbnQqIGNsaWVudCA9IHdhbGtlci5uZXh0KCkpCiAgICAgICAgIGNs
aWVudC0+Zm9udExvYWRlZCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuaAppbmRleCBjZWJkYzU1N2YxM2ZjNGFmZDgyNzUyOTc3NGFmZDhlYzRiZWY0MjEwLi4w
OGRkN2U5NzAzZjg1OWEyMDBlMjU5MTdlYzA4ZGQyZGVkYTdiMmI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAg
IGJvb2wgc3RpbGxOZWVkc0xvYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5p
dGlhdGVkOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpOworICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9u
dERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVj
dGlvbiwgYm9vbCYgd3JhcHBpbmcpOwogICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIHBsYXRm
b3JtRGF0YUZyb21DdXN0b21EYXRhKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEmLCBjb25zdCBGb250
RGVzY3JpcHRpb24mLCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25D
b250ZXh0Jik7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0
aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYp
OwpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRm9udFBsYXRmb3Jt
RGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBi
b29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKLSAg
ICBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgYm9v
bCBlbnN1cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKTsKIAog
cHJpdmF0ZToKICAgICBTdHJpbmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0OwpA
QCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZv
aWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VD
bGllbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYjE1
OWYyOWVlOTBmZTNkZTAxOWMxMTQ5YmRhNjk0ZTBlNmY2YjU0Mi4uYzViZjU2YzBmNjYxZmZjNjJl
MDgyMjQ0NmYyMGRhOTA2YWU2ZjkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwCkBAIC00NjgsOSArNDY4LDkgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1h
Z2U6OmNsZWFySW1hZ2UoKQogICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12
b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRhdGEp
Cit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9
IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUo
KSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNo
ZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAo
TW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRz
KCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFy
ZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2Fj
aGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBkYXRhKSBjb25zdAogewotICAgIGlmICghZGF0YSB8fCAhaXNQb3N0U2NyaXB0UmVzb3Vy
Y2UoKSkKLSAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBpZiAoIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCisgICAgICAgIHJl
dHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShX
RUJLSVRfSU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBE
RkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPmNyZWF0ZUNG
RGF0YSgpKS5nZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOwogI2Vsc2UKICAgICAvLyBMb2Fk
aW5nIHRoZSBpbWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGVkIGlmIHRoZSBzeXN0ZW0gZG9l
cyBub3Qgc3VwcG9ydCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQgdG8gUERGLgogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtNTUzLDcgKzU1NSw3IEBAIEVuY29kZWREYXRhU3RhdHVzIENhY2hl
ZEltYWdlOjp1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgdXBkYXRlQnVmZmVySW50
ZXJuYWwoZGF0YSk7CkBAIC01NjMsMTEgKzU2NSwxMSBAQCB2b2lkIENhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKGRh
dGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRh
dGEpOwotICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEs
IGxlbmd0aCkpOworICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0
YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9p
ZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgbV9kYXRh
ID0gY29udmVydGVkRGF0YUlmTmVlZGVkKGRhdGEpOwogICAgIGlmIChtX2RhdGEpIHsKQEAgLTU5
Myw3ICs1OTUsNyBAQCB2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZQogdm9pZCBDYWNoZWRJbWFnZTo6
ZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCkKIHsKICAgICBpZiAobV9pbWFnZSkgewot
ICAgICAgICAvLyBMZXQgdGhlIEltYWdlIGtub3cgdGhhdCB0aGUgU2hhcmVkQnVmZmVyIGhhcyBi
ZWVuIHJlamlnZ2VkLCBzbyBpdCBjYW4gbGV0IGdvIG9mIGFueSByZWZlcmVuY2VzIHRvIHRoZSBo
ZWFwLWFsbG9jYXRlZCByZXNvdXJjZSBidWZmZXIuCisgICAgICAgIC8vIExldCB0aGUgSW1hZ2Ug
a25vdyB0aGF0IHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGhhcyBiZWVuIHJlamlnZ2VkLCBz
byBpdCBjYW4gbGV0IGdvIG9mIGFueSByZWZlcmVuY2VzIHRvIHRoZSBoZWFwLWFsbG9jYXRlZCBy
ZXNvdXJjZSBidWZmZXIuCiAgICAgICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzI0Mjc1NjE3
KTogSXQgd291bGQgYmUgYmV0dGVyIGlmIHdlIGNvdWxkIHNvbWVob3cgdGVsbCB0aGUgSW1hZ2Un
cyBkZWNvZGVyIHRvIHN3YXAgaW4gdGhlIG5ldyBjb250ZW50cyB3aXRob3V0IGRlc3Ryb3lpbmcg
YW55dGhpbmcuCiAgICAgICAgIG1faW1hZ2UtPmRlc3Ryb3lEZWNvZGVkRGF0YSh0cnVlKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUzODk2
MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4NWJhMDU1MjAzZjQuLjMzYjdkNGE5ZTg5ZmYwOTNhNWE3
ZTAzM2Q3OTY3ZmQ4OWMwMTUzNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oCkBAIC02OSw4ICs2OSw4IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdlSGFzUmVs
YXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRp
dmVXaWR0aCgpOyB9CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZUhlaWdodCgpOyB9CiAKLSAgICB2
b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBlbnVt
IFNpemVUeXBlIHsKICAgICAgICAgVXNlZFNpemUsCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBz
aG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRh
dGVJbWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCop
OwogICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAg
IHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRh
dGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICB2
b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpIG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA5
MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3ZjE4Mzk1NjJmLi44OTVkYjExNThiNmI4Yzhm
YmY3YjEwYjQzYjYxNGVkYTk2MDIxY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgQ2FjaGVkUmF3
UmVzb3VyY2U6OkNhY2hlZFJhd1Jlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFR5cGUgdHlwZSwKICAgICBBU1NFUlQoaXNNYWluT3JNZWRpYU9ySWNvbk9yUmF3UmVzb3Vy
Y2UoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJh
d1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBTaGFyZWRCdWZm
ZXIqIGRhdGEpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNo
ZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKICAgICBzaXplX3QgcHJldmlvdXNEYXRh
TGVuZ3RoID0gZW5jb2RlZFNpemUoKTsKICAgICBpZiAoIWRhdGEgfHwgZGF0YS0+c2l6ZSgpIDw9
IHByZXZpb3VzRGF0YUxlbmd0aCkKQEAgLTU2LDcgKzU2LDcgQEAgc3RkOjpvcHRpb25hbDxTaGFy
ZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFs
RGF0YUMKICAgICByZXR1cm4gZGF0YS0+Z2V0U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsK
IH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIFNraXAgYW55IHVwZGF0ZUJ1ZmZlcnMg
dHJpZ2dlcmVkIGZyb20gbmVzdGVkIHJ1bmxvb3BzLiBXZSdsbCBoYXZlIHRoZSBjb21wbGV0ZSBi
dWZmZXIgaW4gZmluaXNoTG9hZGluZy4KICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5vdGlm
eSkKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVy
KFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJh
d1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5n
UG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRh
ID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0
byBwcmV2aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXpl
KCkgPiBwcmV2aW91c0RhdGFTaXplKSB7CkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgQ2FjaGVkUmF3
UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
KQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZv
aWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJhd1Jlc291cmNl
OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAobV9pbkluY3JlbWVudGFs
RGF0YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBtYXkgZ2V0IGhlcmUgc3luY2hyb25vdXNseSBm
cm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxsYmFjayB0aGVyZSBlbmRzIHVwIHNwaW5uaW5n
IGEgcnVubG9vcC4KQEAgLTEwNywxMiArMTA3LDE0IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRo
aXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9saWN5ID0g
dGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOwogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5
ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpIHsKLSAgICAgICAgbV9kYXRhID0g
ZGF0YTsKLQotICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNy
ZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewotICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0
YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5j
cmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKLSAgICAgICAg
fQorICAgICAgICBpZiAoZGF0YSkgeworICAgICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1
bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7CisgICAgICAgICAgICAgICAgc2V0RW5j
b2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0
YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNp
emUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9kYXRh
ID0gbnVsbHB0cjsKICAgICB9CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXggODRlMGQ4NDRkNTcx
MDk5NTNhZTZiZmY2NTU2NTk5NTNlMjhiYTY5Yi4uYTc4NjVmOGFkMTc4YWVmYjMyMjBhNTZkY2Zm
MTk1OTkzY2Y5NWFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7Ci0gICAgdm9p
ZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVCdWZm
ZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRl
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwotICAgIHZv
aWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgYm9vbCBzaG91
bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CkBAIC02Niw3ICs2
Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291
cmNlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2FsbG93RW5jb2RlZERhdGFSZXBsYWNlbWVudDsgfQogCi0g
ICAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50
YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyKikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25h
bDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopIGNvbnN0OwogICAgIHZvaWQgbm90aWZ5Q2xpZW50
c0RhdGFXYXNSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwog
ICAgIAogI2lmIFVTRShRVUlDS19MT09LKQpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAg
IFZlY3RvcjxSZWRpcmVjdFBhaXIsIDAsIENyYXNoT25PdmVyZmxvdywgMD4gbV9yZWRpcmVjdENo
YWluOwogCiAgICAgc3RydWN0IERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxEZWxheWVkRmlu
aXNoTG9hZGluZz4gbV9kZWxheWVkRmluaXNoTG9hZGluZzsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA4YjgzZTUzMzE5MGE3NzZi
YThmNDBjMjgzMTU4Y2RiNzYxYWU5NzAyLi5mZjY0YTNiOWEwMTg0NjU2MWM3NmQ1YzQ2ODdkYTA3
YmQ2Y2ZiZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05v
dGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVudC0+
bm90aWZ5RmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNl
Ojp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0
ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikKIHsKICAgICBBU1NFUlQoZGF0
YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwog
fQpAQCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoY29u
c3QgdWludDhfdCosIHVuc2lnbmVkKQogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCiB7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmlj
cyk7CkBAIC05MDYsNyArOTA2LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRp
bWVyRmlyZWQoKQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIAotdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVy
KQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0
dXJuOwpAQCAtOTIwLDggKzkyMCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VF
bmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAhPSBu
ZXdCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBt
X2RhdGEtPmFwcGVuZChuZXdCdWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9
OwogICAgIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUz
YzU5MDQ3OGNhMjUxODEzZTZjMDM1YmMyNzguLjk5MTBlYTRjOTQ1Nzg2NTZlZGViNjUzOTBmMzg2
YTBlYWFlZGYwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIENvb2tpZUphcjsKIGNsYXNzIE1lbW9yeUNh
Y2hlOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3Mg
U3VicmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCkBAIC0xMTIs
OSArMTEyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBT
dHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJu
IFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0
UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVh
bCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwogCiAgICAgdm9pZCBzZXRSZXNv
dXJjZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7IG1fZXJyb3IgPSBlcnJvcjsg
fQpAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJMb2FkZXIoKTsK
IAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGEuZ2V0KCk7IH0KKyAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHJlZGly
ZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdmlydHVh
bCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtMjg0
LDcgKzI4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWdu
ZWQgbG9uZyBsb25nIC8qIGJ5dGVzU2VudCAqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qIHRvdGFs
Qnl0ZXNUb0JlU2VudCAqLykgeyB9CiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZl
ciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImKTsKICNlbmRpZgogCiAgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIGlkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcjsgfQpAQCAtMzM2LDcg
KzMzNiw3IEBAIHByb3RlY3RlZDoKICAgICBIYXNoQ291bnRlZFNldDxDYWNoZWRSZXNvdXJjZUNs
aWVudCo+IG1fY2xpZW50czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBt
X29yaWdpbmFsUmVxdWVzdDsgLy8gTmVlZGVkIGJ5IFBpbmcgbG9hZHMuCiAgICAgUmVmUHRyPFN1
YnJlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2Rh
dGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKIAogcHJpdmF0
ZToKICAgICBNb25vdG9uaWNUaW1lIG1fbGFzdERlY29kZWRBY2Nlc3NUaW1lOyAvLyBVc2VkIGFz
IGEgInRocmFzaCBndWFyZCIgaW4gdGhlIGNhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAppbmRleCA3ZGExNDg1MWE3MDc4NGFhYmU5
ODM5YjcwNmEwYjFiMzMxZjJjODM5Li5kYjQzMTYwN2FlNTYzODMwMzgwMGRkMjU5YzEwMzRjZDA5
MGZjZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHAKQEAgLTUyLDEyICs1MiwxMiBAQCBTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6
OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUo
KTsKIH0KIAotdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
U1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRh
KSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1
c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KICAg
ICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9zZXR0aW5n
cywgcmVzcG9uc2UoKS51cmwoKSk7Ci0gICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOworICAg
ICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKICAgICB9CiAgICAg
Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCmluZGV4IGU4YzE1
ZjM2MGZjOTFhYzhiMzRkMzk2Mjk1YzUzZDNjN2YxNDdlYWEuLjQ0NWU0ZjlmNDJjM2MyNzQwNzk3
NmE2NGU5MTU0MDdmOGI1MzRkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2Rp
bmcoKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0
UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgp
OyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CiAKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPFRleHRS
ZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5MzNhMjIzNDY5NTU1NzU2YjM2
NjdlNDg2MzJlLi45Y2YwNDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5ZmU4ZTk4YTUwYzMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04MCw3
ICs4MCw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgcmVtb3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2Nv
cGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCi0gICAgICAgICAg
ICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgICAgICBtX2V4dGVy
bmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAgICAg
ICBzYXdFcnJvciA9IGRlY29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0KIApAQCAtOTEsNyAr
OTEsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVsZW1l
bnQgfHwgIWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQo
Km1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOwor
ICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1f
ZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRleCAzNTNkM2RlNjNiMDYyODYxM2FiYWY3NzdmZWIy
NTNjNWI2MjQ5MGM2Li5hMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYwNTRjMzg1ODIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUwLDcg
KzUwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0aWFsaXplRXh0
ZXJuYWxTVkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAgIFNW
R0ZvbnRGYWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVV
UkkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OworICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVmUHRy
PFNWR0RvY3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1lbnQq
IG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+
IG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
Y3BwCmluZGV4IDQ3YTlmNTc2MDdiOTgyODRlOGY3OWUyY2RlY2U5YmU0MThmMTdiNjUuLmI2NzM5
OGIwZTRmNTZmZTdhYmNiMjc0ZDBlMzY4NDMwMzYzNTA4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05NiwxMCArOTYsMTUgQEAgdW5zaWdu
ZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkKICAgICByZXR1cm4gbV9zY3JpcHRIYXNoOwog
fQogCi12b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU2NyaXB0Ojpm
aW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNl
dEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgewor
ICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNv
ZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51
bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNv
dXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCmluZGV4IDkyNGI4NGNhMmQ4NzE2ZTM0NjA3N2Vl
ZWI1Y2MzNGJjZWRlN2UyM2QuLjg2NTFlNjM5YWQ5MDYxNzI4NTYxYzMyNGJmYTdhZjRjZjk3ZjZk
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYp
IGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRl
eHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hM
b2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKaW5k
ZXggMTIyOTgxNTAzMTI4ODYxZWM0ZjVlYjRjZjUwZjMyMDg2YjVkZWI2MS4uMmE0ODJlZWMwYjRj
ODYyZTBjZmQyYmMyNjE1NDRjODk1NTM4ZTRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQwLDEwICs0MCwxMCBAQCBDYWNoZWRU
ZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBQQUw6OlNlc3Npb25JRAogewogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVC
dWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRl
QnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJU
KGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRh
KTsKLSAgICBtX2RhdGEgPSBkYXRhOworICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29u
dGlndW91cygpIDogUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5j
b2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VD
bGllbnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwpAQCAt
NTEsMTMgKzUxLDEzIEBAIHZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFy
ZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIGNsaWVudC0+ZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNo
ZWRSZXNvdXJjZSgqdGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZm
ZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZl
cihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGRvVXBkYXRlQnVm
ZmVyKCZkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogfQog
Ci12b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNr
OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcihkYXRh
KTsKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAppbmRleCA4NWUz
OTYyMDY1MTMxNjA3MDM2NTNlYjIyYzc3MTM4YjkxNTA3YWRkLi4wOWI0MzM5YTM3YjY3M2IyYWM0
ZmRhZTE0NmIyOWI5NjQ3NzdmY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5oCkBAIC0zNSwxMCArMzUsMTAgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJy
aWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBv
dmVycmlkZTsKIAotICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKik7CisgICAg
dm9pZCBkb1VwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5
MGY0NjdhMjc4MjYxNWQzNDAwYy4uZDJlZmYyZDJkNDBjOTI3NzM4NzU2YzRhOGYwY2JiOTM0M2Jl
MTBhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xT
dHlsZVNoZWV0LmNwcApAQCAtNjEsMTIgKzYxLDE2IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNo
ZWV0OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5u
YW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQg
Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAg
bV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDog
MCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKGRhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAg
ICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAg
IH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNo
ZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5o
CmluZGV4IDY4NDJiNjQ0ZjYxY2Y5MGY3ZjYxYjJmN2VjNWUwMDY1NGNkMTBjY2MuLmJkMjMxMjE0
ZjJkMjBiYTM5NjQ0NjAzNjZlMDQxYjk0MTM1YWM0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaApAQCAtNDcsNyArNDcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAg
U3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVj
b2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rl
ci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
OwogCiAgICAgU3RyaW5nIG1fc2hlZXQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+
IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNr
Q2FjaGVNb25pdG9yQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2Fj
aGVNb25pdG9yQ29jb2EuaAppbmRleCBjZTUyY2ZlYmQ3NjFlNTY0NzVhMjAxZTgxNDM4NTMzNGVh
NGRiYTVjLi5kMDIwYWMzZGM4MDg0NGE2N2EwN2NiNWIxZDE1OWY3MWMwY2RjZDE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5o
CkBAIC0zMiwxNyArMzIsMTcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVz
cG9uc2UqIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIAogY2xh
c3MgRGlza0NhY2hlTW9uaXRvciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgbW9uaXRvckZp
bGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Np
b25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25z
ZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKKyAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRS
ZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAogcHJpdmF0ZToKICAgICBEaXNrQ2Fj
aGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hl
ZFVSTFJlc3BvbnNlUmVmKTsKIAotICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNo
YXJlZEJ1ZmZlciYpOworICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImKTsKIAogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VS
ZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KICAgICBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0K
aW5kZXggZmE0YjkwM2JlZjkzOTQ4MWMyMmVhN2RmNTUxZThiNTVlN2UwZTUyZC4uOTNlZTk2Mzc0
ZjAzYmEzMTI0NDNkMjgxYzUyYTQ4NDA2OWRmMmEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCkBAIC00MiwxMyArNDIs
MTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29u
ZHMgd2UnbGwgdHJ5IHRvIHdhaXQgZm9yIGEgcmVzb3VyY2UgdG8gYmUgZGlzayBjYWNoZWQgYmVm
b3JlIHdlIGZvcmdldCB0aGUgcmVxdWVzdC4KIHN0YXRpYyBjb25zdCBkb3VibGUgZGlza0NhY2hl
TW9uaXRvclRpbWVvdXQgPSAyMDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9u
aXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNl
KENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1
ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVk
UmVzcG9uc2UpCiB7CiAgICAgYXV0byBkYXRhID0gX0NGQ2FjaGVkVVJMUmVzcG9uc2VHZXRNZW1N
YXBwZWREYXRhKGNhY2hlZFJlc3BvbnNlKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiB9CiAKIHZvaWQg
RGlza0NhY2hlTW9uaXRvcjo6bW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKQEAgLTExMyw3ICsxMTMsNyBAQCBEaXNr
Q2FjaGVNb25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgUEFMOjpTZXNzaW9uSQogICAgIF9DRkNhY2hlZFVSTFJlc3BvbnNlU2V0QmVjYW1lRmls
ZUJhY2tlZENhbGxCYWNrQmxvY2soY2FjaGVkUmVzcG9uc2UsIGJsb2NrVG9SdW4sIGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCkpOwogfQogCi12b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNl
QmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCit2b2lkIERp
c2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQogewogICAgIGF1dG8qIHJlc291cmNlID0gTWVtb3J5
Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChtX3Jlc291cmNlUmVxdWVzdCwg
bV9zZXNzaW9uSUQpOwogICAgIGlmICghcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCmluZGV4IDU1MjU2MWQ2YzgxNmQzZDIwYmNm
Y2NiMmU2NTgzYjdkZTk0Yjk0YTIuLjY2YjkzNThlYzUzMTExNDg0ODIyYTdjYzI0ZTdmM2E5OTE3
MDY1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xv
YWRlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTM3LDcgKzM4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBjbGFzcyBMZWdh
Y3lQcmV2aWV3TG9hZGVyIGZpbmFsIDogcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyQ2xpZW50LCBw
cml2YXRlIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CkBAIC00OCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBib29sIGRpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgYm9vbCBkaWRSZWNl
aXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIGJvb2wgZGlkUmVjZWl2ZUJ1ZmZl
cihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgYm9vbCBkaWRGaW5pc2hMb2Fk
aW5nKCk7CiAgICAgdm9pZCBkaWRGYWlsKCk7CiAKQEAgLTYwLDE3ICs2MiwxNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZpbmlzaFVwZGF0aW5nKFByZXZpZXdDb252
ZXJ0ZXImKSBmaW5hbCB7IH07CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbFVwZGF0
aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKICAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJE
aWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOwotICAgIHZvaWQgcHJl
dmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBTaGFy
ZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0
YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFs
OwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRpbmcoUHJldmlld0Nv
bnZlcnRlciYpIGZpbmFsOwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxDb252ZXJ0
aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKIAogICAgIC8vIFByZXZpZXdDb252ZXJ0ZXJQ
cm92aWRlcgotICAgIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIo
UHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVm
ZmVyKik+JiYpIGZpbmFsOworICAgIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdD
b252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmKSBmaW5hbDsKICAgICB2b2lkIHByb3ZpZGVQYXNz
d29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpIGZpbmFsOwogCiAgICAgUmVmUHRyPFByZXZpZXdD
b252ZXJ0ZXI+IG1fY29udmVydGVyOwogICAgIFJlZjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50
PiBtX2NsaWVudDsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX29yaWdpbmFsRGF0YTsKKyAgICBV
bmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9vcmlnaW5hbERhdGE7CiAgICAgV2Vha1B0
cjxSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxvYWRlcjsKICAgICBib29sIG1fZmluaXNoZWRM
b2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNQcm9jZXNz
ZWRSZXNwb25zZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXggZDE4YjI1MmU5NzU2YzhjZTBjOTViNjNlNzhkZDAw
OTdlZjJhNTczNC4uODA0ZWZlOGVjOTYyNzE4YTIzYTAwNmRjMTQ1NjU2MzRmZjI2YWQyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpA
QCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1h
a2VDbGllbnQoY29uc3QgUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgYwogICAgIHJldHVybiBlbXB0
eUNsaWVudCgpOwogfQogCi1ib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIGlmIChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVy
OjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsK
LSAgICBtX29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsKKyAgICBtX29yaWdpbmFsRGF0YS0+cmVzZXQo
KTsKICAgICByZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UHJldmlld0NvbnZl
cnRlcihXVEZNb3ZlKG1fY29udmVydGVyKSk7CiAgICAgYXV0byByZXNwb25zZSB7IGNvbnZlcnRl
ci5wcmV2aWV3UmVzcG9uc2UoKSB9OwogCkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBMZWdhY3lQ
cmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdD
b252ZXJ0ZXImIGMKICAgICB9KTsKIH0KIAotdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2
aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRl
ckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhKQogewogICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBtX3Jlc291cmNlTG9h
ZGVyLmdldCgpOwogICAgIGlmICghcmVzb3VyY2VMb2FkZXIpCkBAIC0yMjQsMTAgKzIyNCwxMCBA
QCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252
ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgYwogICAgIG1fY2xpZW50LT5kaWRSZXF1ZXN0UGFzc3dv
cmQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIExlZ2FjeVByZXZpZXdM
b2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252
ZXJ0ZXImIGNvbnZlcnRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZm
ZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJv
dmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29u
dmVydGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnZlcnRl
ciwgJmNvbnZlcnRlciA9PSBtX2NvbnZlcnRlcik7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9v
cmlnaW5hbERhdGEucHRyKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRh
LT5nZXQoKS5nZXQoKSk7CiB9CiAKIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3
TG9hZGVyKCkgPSBkZWZhdWx0OwpAQCAtMjM1LDcgKzIzNSw3IEBAIExlZ2FjeVByZXZpZXdMb2Fk
ZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwogTGVnYWN5UHJldmlld0xvYWRl
cjo6TGVnYWN5UHJldmlld0xvYWRlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IG1fY29udmVydGVyIHsgUHJldmlld0NvbnZl
cnRlcjo6Y3JlYXRlKHJlc3BvbnNlLCAqdGhpcykgfQogICAgICwgbV9jbGllbnQgeyBtYWtlQ2xp
ZW50KGxvYWRlciwgbV9jb252ZXJ0ZXItPnByZXZpZXdGaWxlTmFtZSgpLCBtX2NvbnZlcnRlci0+
cHJldmlld1VUSSgpKSB9Ci0gICAgLCBtX29yaWdpbmFsRGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCkgfQorICAgICwgbV9vcmlnaW5hbERhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI+KCkgfQogICAgICwgbV9yZXNvdXJjZUxvYWRlciB7IGxvYWRlciB9CiAgICAgLCBt
X3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmcgeyBsb2FkZXIuZnJhbWUoKS0+c2V0dGlu
Z3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldygpIH0K
IHsKQEAgLTI0Niw3ICsyNDYsNyBAQCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3
TG9hZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUgogCiBib29sIExl
Z2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCkKIHsKLSAgICByZXR1cm4gZGlkUmVjZWl2ZUJ1ZmZlcihTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpLmdldCgpKTsKKyAgICByZXR1cm4gZGlkUmVjZWl2ZUJ1
ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKS5nZXQoKSk7
CiB9CiAKIGJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL3Nv
dXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3VwL1Jl
c291cmNlTG9hZGVyU291cC5jcHAKaW5kZXggMGFlMzE1YzQyNWJlMWUzNmJkZjU2ZjAzOGZhNTBj
YjJkMzVlZTU4Ny4uYjM4N2ZjMmIyZjgyMjgyZjEwMjZlMDZhM2QwN2YxNDRiMzA2NTNlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3Bw
CkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2UoKQog
ICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwogICAgICAgICByZXNw
b25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlLCBjb250
ZW50VHlwZS5nZXQoKSk7CiAgICAgICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3Bv
bnNlOjpTb3VyY2U6Ok5ldHdvcmspOwotICAgICAgICBsb2FkZXItPmRlbGl2ZXJSZXNwb25zZUFu
ZERhdGEocmVzcG9uc2UsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJ5dGVzLmdldCgpKSk7CisgICAg
ICAgIGxvYWRlci0+ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSwgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGJ5dGVzLmdldCgpKSk7CiAgICAgfSwgcHJvdGVjdGVkVGhpcy5s
ZWFrUmVmKCkpKTsKIAogICAgIGdfdGFza19zZXRfcHJpb3JpdHkodGFzay5nZXQoKSwgUnVuTG9v
cFNvdXJjZVByaW9yaXR5OjpBc3luY0lPTmV0d29yayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGll
bnQuaAppbmRleCA4MjM3NGU3MjYyYzcwZWE5ZGZlNGQ2NGYyNWFiMTM1YWE2MDMzM2NmLi43M2Vj
NjhlMTYyZDFhNWI1YjMzZjBjOWY4ZGZlYWMxMzZlYjU2ZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRp
dG9yQ2xpZW50LmgKQEAgLTM4LDEyICszOCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVu
dW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAKK2NsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRWxlbWVu
dDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgS2V5Ym9hcmRFdmVudDsKIGNsYXNzIE5vZGU7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3R5
bGVQcm9wZXJ0aWVzOwogY2xhc3MgVGV4dENoZWNrZXJDbGllbnQ7CiBjbGFzcyBWaXNpYmxlU2Vs
ZWN0aW9uOwpAQCAtNzgsNyArNzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZE1vdmVSYW5nZUFmdGVyRGVsZXRlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU2ltcGxlUmFu
Z2UmKSA9IDA7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIHZpcnR1YWwg
dm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRp
ZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAv
KiBwcmVmZXJyZWRGaWxlTmFtZSAqLywgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgeyB9CisgICAgdmly
dHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBp
ZGVudGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICovLCBjb25zdCBTdHJp
bmcmIC8qIHByZWZlcnJlZEZpbGVOYW1lICovLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29u
c3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBl
ICovLCBjb25zdCBTdHJpbmcmIC8qIGZpbGVQYXRoICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBT
dHJpbmcmIC8qIGlkZW50aWZpZXIgKi8pIHsgfQpAQCAtOTcsNyArOTgsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0
b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRp
ZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCmluZGV4IDU3MDZhZDg2MjhmYjliYjJjNDk4NjUzNWM2MzJkOWQyZGFjOTEzZWYuLjU4NzFh
OGVhNmEzMTE5OGM5MGE0ZjQ5NDFiYzIzZGU5ODQ5NWIxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApA
QCAtMTk1MSw3ICsxOTUxLDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgp
IGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlzaGVzIGxv
YWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUgbG9hZCBl
dmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hlbgogICAg
IC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBh
dGgpOworICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRhKQogICAg
ICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJp
YWxpemVyLmNwcAppbmRleCAxYTEyMTBmYTgzMzdjZDk1MjBmNGUwMTFhOTA3MzY3NTRkZTUxOGYx
Li5jOTAxNDNjZDNmODFjNjZjMWU0M2FlMTZhYjMwNDE5NDQ2M2RmYTVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgUGFnZVNl
cmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBTdHJpbmcgdGV4dCA9IGFjY3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVzKCpkb2N1
bWVudC0+ZG9jdW1lbnRFbGVtZW50KCksIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGlu
Z05vZGUpOwotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3Rl
ZE1JTUVUeXBlKCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4
dCwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICBtX3Jlc291cmNlcy5h
cHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBVbmVuY29kYWJsZUhh
bmRsaW5nOjpFbnRpdGllcykpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogCiAg
ICAgZm9yIChhdXRvJiBub2RlIDogbm9kZXMpIHsKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFBh
Z2VTZXJpYWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxl
U2hlZXQsIGNvbnN0IFVSTAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNoZWNrIHdoZXRo
ZXIgYSBjaGFyc2V0IGhhcyBiZWVuIHNwZWNpZmllZCBhbmQgaWYgbm9uZSB3YXMgZm91bmQgYWRk
IG9uZS4KICAgICAgICAgVGV4dEVuY29kaW5nIHRleHRFbmNvZGluZyhzdHlsZVNoZWV0LT5jb250
ZW50cygpLmNoYXJzZXQoKSk7CiAgICAgICAgIEFTU0VSVCh0ZXh0RW5jb2RpbmcuaXNWYWxpZCgp
KTsKLSAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBV
bmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOworICAgICAgICBtX3Jlc291cmNlcy5h
cHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJfcywgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRs
aW5nOjpFbnRpdGllcykpIH0pOwogICAgICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKICAg
ICB9CiB9CkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VU
b1Jlc291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICBp
ZiAoIWltYWdlIHx8IGltYWdlLT5pbWFnZSgpID09ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRl
cmVyID8gaW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVy
ID8gaW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CiAg
ICAgaWYgKCFkYXRhKQogICAgICAgICBkYXRhID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKIApA
QCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJj
ZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBpbWFnCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25z
ZSgpLm1pbWVUeXBlKCksIFdURk1vdmUoZGF0YSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5k
KHsgdXJsLCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBkYXRhLT5tYWtlQ29udGlndW91
cygpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VTZXJpYWxpemVyLmgKaW5kZXggZmYzZTJlMWZjYjA2MWE0ZmZmYzVkZWZkNGMyZDE4MGFm
NDliZjc3MS4uYmZjYmU3YjhkYmZkNDlmNzlkMWEwMGM4MDA0ZWFkZTI5YzQ4MDgyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAg
ICAgc3RydWN0IFJlc291cmNlIHsKICAgICAgICAgVVJMIHVybDsKICAgICAgICAgU3RyaW5nIG1p
bWVUeXBlOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICB9OwogCiAgICAgZXhwbGljaXQg
UGFnZVNlcmlhbGl6ZXIoVmVjdG9yPFJlc291cmNlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgK
aW5kZXggNjhiMGRkMmMzMDZiNzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2NC4uM2VkZDljNzFi
YjI3ZTUwZmRmZGZhY2VlMjcxZWZlZmI3Y2IyOTFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TaGFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5o
CkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3RmlsZSB7
CiAgICAgU3RyaW5nIGZpbGVOYW1lOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVEYXRh
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAgICAg
CiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJl
RGF0YVJlYWRlci5jcHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZmZjQy
ZThlMC4uZDY4MDVhM2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0
YVJlYWRlcigpCkBAIC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZp
bmlzaExvYWRpbmcoaW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICAg
ICAgY2FuY2VsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGFy
cmF5QnVmZmVyID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVyUmVz
dWx0KCk7Ci0gICAgCisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9IGZp
bGVOYW1lOwotICAgIGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVm
ZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgIGZpbGUuZmlsZURhdGEgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVm
ZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3NoYXJlRGF0
YS5maWxlcy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1JlYWRTb0ZhcisrOwot
ICAgIAorCiAgICAgaWYgKG1fZmlsZXNSZWFkU29GYXIgPT0gc3RhdGljX2Nhc3Q8aW50PihtX3Bl
bmRpbmdGaWxlTG9hZHMuc2l6ZSgpKSkgewogICAgICAgICBtX3BlbmRpbmdGaWxlTG9hZHMuY2xl
YXIoKTsKICAgICAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdl
KG1fY29tcGxldGlvbkhhbmRsZXIsIHsgfSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9LZXllZENvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2Rp
bmcuaAppbmRleCA3OWEyMzUzNTVmMWU4ZWY4NjE1MzUyZTYzOWM4YzYzMThmNDAzNzc2Li4zZDgw
ZDdhMWQ0MjQ1ODUyMGJkNTQzOGVmMzZkOGE1N2NiNWQ0ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0tleWVkQ29kaW5nLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwog
CiBjbGFzcyBLZXllZERlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAt
MTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91YmxlKGNv
bnN0IFN0cmluZyYga2V5LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlU3Ry
aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1YWwg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3RyaW5n
JiBrZXksIFQgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQ
bGF5aW5nTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFn
ZXIuaAppbmRleCBlMzgwNmU4N2RmNzlhM2Q5YjVjYWUxMjE0ZGU2NmFhMmE2NTg0N2RiLi5mYzY2
YzM2NWEyZjI5YTRjNzhlNjA2MTllNDdhNzFjNzI1OGQ4ZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToK
ICAgICBzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBtX25vd1BsYXlpbmdJbmZvOwogICAg
IHN0cnVjdCBBcnR3b3JrQ2FjaGUgewogICAgICAgICBTdHJpbmcgc3JjOwotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBpbWFnZURhdGE7CiAgICAgfTsKICAgICBzdGQ6Om9wdGlvbmFsPEFydHdvcmtD
YWNoZT4gbV9ub3dQbGF5aW5nSW5mb0FydHdvcms7CiAgICAgYm9vbCBtX3NldEFzTm93UGxheWlu
Z0FwcGxpY2F0aW9uIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5j
cHAKaW5kZXggMTU3MzFlYjIzZmE3Njk0OTYwZGQ4MDQ5NmZhOGYyZjllOGM3NzgwZi4uMDdlZDQ4
ZTU4ODRlY2VlZGM2MWZkOTNlNmIyMjE3MWJlODg1ODlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJl
YWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgcmV0dXJuIHsg
fTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1
ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlmIChhdXRvKiBzdHJhdGVneSA9IHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKSkKICAgICAgICAgcmV0dXJuIHN0
cmF0ZWd5LT5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHR5cGUsIG5hbWUoKSwgY29u
dGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCA3ZDI0N2RjZDFh
MTZmMzQyYzE3NTRjNDVjNGE3MzUyOWJmOGY3MWIyLi44MTdjMDFlMzRiZDlmOTk5ZDRhMzg5M2Fk
NDFmNjg2ZWViOTU2M2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC02
MSwxMiArNjEsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgSFdORF9fKiBIV05EOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVu
dEZyYWdtZW50OwogY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7
CiBjbGFzcyBQYXN0ZWJvYXJkU3RyYXRlZ3k7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiAKQEAgLTgyLDE0
ICs4MywxNCBAQCBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQgewogICAgIFdFQkNPUkVfRVhQ
T1JUIH5QYXN0ZWJvYXJkV2ViQ29udGVudCgpOwogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwog
ICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5S
VEZERm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0Owor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7
CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zv
cm1hdDsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAg
ICBTdHJpbmcgY29udGVudE9yaWdpbjsKQEAgLTExOSwxNyArMTIwLDE3IEBAIHN0cnVjdCBQYXN0
ZWJvYXJkSW1hZ2UgewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkSW1hZ2UoKTsKICAg
ICBSZWZQdHI8SW1hZ2U+IGltYWdlOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5I
VE1MRm9ybWF0OwogI2VuZGlmCiAjaWYgIVBMQVRGT1JNKFdJTikKICAgICBQYXN0ZWJvYXJkVVJM
IHVybDsKICNlbmRpZgogI2lmICEoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pKQotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOwogICAgIFN0cmluZyByZXNvdXJjZU1JTUVUeXBl
OwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hh
cmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgU3RyaW5nIHN1Z2dlc3RlZE5hbWU7
CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZTsKQEAgLTE0NywxNiArMTQ4LDE2IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlv
blNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkRmlsZVBhdGhzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkSFRNTChjb25zdCBT
dHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2Vu
dGF0aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkSW1hZ2UoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9u
U2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CiAgICAgdmlydHVhbCBi
b29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpID0gMDsKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVhbCBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJl
ZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikg
PSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2
aXJ0dWFsIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2Vu
dGF0aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWREYXRhQnVm
ZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0g
eyB9KSA9IDA7CiAjZW5kaWYKIH07CiAKQEAgLTE3MSw3ICsxNzIsNyBAQCBzdHJ1Y3QgUGFzdGVi
b2FyZEZpbGVSZWFkZXIgewogICAgIHZpcnR1YWwgflBhc3RlYm9hcmRGaWxlUmVhZGVyKCkgPSBk
ZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgLyogdHlw
ZSAqLykgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpID0gMDsKIH07CiAKIGNsYXNzIFBhc3RlYm9hcmQgewpAQCAtMjk2LDcgKzI5Nyw3IEBAIHB1
YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gcGFzdGVib2FyZEl0
ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3Q7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIFVSTCByZWFkVVJMKHNpemVfdCBp
bmRleCwgU3RyaW5nJiB0aXRsZSk7CiAKICAgICBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29u
dGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQpAQCAtMzI4LDcgKzMyOSw3
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWRkSFRNTENsaXBib2FyZFR5cGVzRm9yQ29j
b2FUeXBlKExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdFR5cGVzLCBjb25zdCBTdHJpbmcmIGNv
Y29hVHlwZSk7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGb3JQbGF0Zm9ybVR5cGUoY29uc3QgU3Ry
aW5nJik7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNo
ZWNrKGNvbnN0IFN0cmluZyYpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOwogI2VuZGlm
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IG1fY29udGV4dDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRl
eCA5ZDNmODdhOTExNGMzOGE1NGUzM2EwNWUyYjk4OTUyY2NmNjdhZTcwLi43MTE2ZDc2YWI0MTVm
MWE5OGZkNzU4MWM3ODBkNDI4MDdlY2I3ZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCkBAIC0zMywxMyArMzMsMTMgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJl
ZEJ1ZmZlcj4+IGNvcHlQbGF0Zm9ybURhdGEoY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVm
PFNoYXJlZEJ1ZmZlcj4+JiBvdGhlcikKK3N0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGNvcHlQbGF0Zm9ybURhdGEoY29uc3Qgc3RkOjp2YXJp
YW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYgb3RoZXIpCiB7CiAgICAg
aWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihvdGhlcikpCiAgICAgICAgIHJldHVy
biB7IHN0ZDo6Z2V0PFN0cmluZz4ob3RoZXIpIH07CiAKLSAgICBpZiAoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4ob3RoZXIpKQotICAgICAgICByZXR1cm4geyBzdGQ6
OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ob3RoZXIpLmNvcHlSZWYoKSB9OworICAgIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ob3RoZXIpKQor
ICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG90
aGVyKS5jb3B5UmVmKCkgfTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC04MCw3ICs4MCw3IEBA
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YShTdHJpbmcmJiBvcmln
aW4sIFZlY3RvcjxFbnRyeT4mJiBkYXRhCiB7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIo
KSBjb25zdAogewogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBjdXJyZW50Q3VzdG9tRGF0YVNlcmlh
bGl6YXRpb25WZXJzaW9uID0gMTsKIApAQCAtODksNyArODksNyBAQCBSZWY8U2hhcmVkQnVmZmVy
PiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKICAgICBl
bmNvZGVyIDw8IG1fb3JpZ2luOwogICAgIGVuY29kZXIgPDwgc2FtZU9yaWdpbkN1c3RvbVN0cmlu
Z0RhdGEoKTsKICAgICBlbmNvZGVyIDw8IG9yZGVyZWRUeXBlcygpOwotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZl
cigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVu
Y2U6OkRlY29kZXImJiBkZWNvZGVyKQpAQCAtMTI0LDcgKzEyNCw3IEBAIFBhc3RlYm9hcmRDdXN0
b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6
UGVyc2lzdGVuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzdGVib2FyZEN1c3RvbURhdGEg
UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJv
bVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgcmV0dXJuIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoYnVmZmVyLmRlY29kZXIoKSk7CiB9CkBA
IC0xMzQsNyArMTM0LDcgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6d3JpdGVTdHJpbmco
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIGFkZE9yTW92ZUVu
dHJ5VG9FbmQodHlwZSkucGxhdGZvcm1EYXRhID0geyB2YWx1ZSB9OwogfQogCi12b2lkIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGRhdGEpCit2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEoY29u
c3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewog
ICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZvcm1EYXRhID0geyBXVEZNb3ZlKGRh
dGEpIH07CiB9CkBAIC0yMDIsMTQgKzIwMiwxNCBAQCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6c2FtZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGEoKSBjb25zdAog
ICAgIHJldHVybiBjdXN0b21EYXRhOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OnJlYWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZW50cnkgOiBt
X2RhdGEpIHsKICAgICAgICAgaWYgKGVudHJ5LnR5cGUgIT0gdHlwZSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRC
dWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0
PFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpLmNvcHlSZWYoKTsKKyAgICAg
ICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PihlbnRyeS5wbGF0Zm9ybURhdGEpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRhKS5jb3B5UmVmKCk7CiAK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMjY1LDExICsyNjUsMTEgQEAgdm9p
ZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaEN1c3RvbVN0cmluZyhGdW5jdGlvbjx2b2lk
KGNvbnN0IFN0cmluZyYgdHlwZSwKICAgICB9CiB9CiAKLXZvaWQgUGFzdGVib2FyZEN1c3RvbURh
dGE6OmZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4m
IGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAordm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9y
RWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZW50cnkgOiBt
X2RhdGEpIHsKICAgICAgICAgYXV0byYgZGF0YSA9IGVudHJ5LnBsYXRmb3JtRGF0YTsKLSAgICAg
ICAgaWYgKChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYgIXN0ZDo6Z2V0
PFN0cmluZz4oZGF0YSkuaXNOdWxsKCkpIHx8IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNo
YXJlZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAgICBpZiAoKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5pc051bGwoKSkgfHwgc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQog
ICAgICAgICAgICAgZnVuY3Rpb24oZW50cnkudHlwZSwgZGF0YSk7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKaW5kZXggMmJlODFk
MjkzOGEzZGJkMDkwMjZjYTZlYzY0YWMzMjg3ZTZhYmMwMy4uZjBlMTU0OTA4MDg1YzI2ZjIzN2Zh
OTRkOTMwMjkxOWVlNmQxM2QyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC0zNCw3ICszNCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21E
YXRhIHsKIHB1YmxpYzoKQEAgLTQ4LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgICAgIFN0cmlu
ZyB0eXBlOwogICAgICAgICBTdHJpbmcgY3VzdG9tRGF0YTsKLSAgICAgICAgc3RkOjp2YXJpYW50
PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+IHBsYXRmb3JtRGF0YTsKKyAgICAgICAgc3RkOjp2
YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBwbGF0Zm9ybURhdGE7
CiAgICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFBhc3RlYm9hcmRDdXN0b21EYXRhKCk7CkBA
IC02MCwxNiArNjEsMTYgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgb3JpZ2luKCkgY29u
c3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB2b2lkIHNldE9yaWdpbihjb25zdCBTdHJpbmcm
IG9yaWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1
c3RvbURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVy
JiYpOwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkg
Y29uc3Q7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKICAgICBTdHJpbmcgcmVhZFN0cmluZ0luQ3VzdG9tRGF0
YShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwogCiAgICAgdm9pZCB3cml0ZVN0cmluZyhjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgIHZvaWQgd3JpdGVEYXRh
KGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICB2b2lk
IHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGRhdGEpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogICAgIHZvaWQgY2xlYXIoKTsKQEAgLTgz
LDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBmb3JFYWNoVHlwZShGdW5jdGlvbjx2b2lk
KGNvbnN0IFN0cmluZyYpPiYmKSBjb25zdDsKICAgICB2b2lkIGZvckVhY2hQbGF0Zm9ybVN0cmlu
ZyhGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKT4m
JikgY29uc3Q7Ci0gICAgdm9pZCBmb3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihGdW5jdGlv
bjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVm
PFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKT4mJikgY29uc3Q7CisgICAgdm9pZCBmb3JFYWNoUGxhdGZv
cm1TdHJpbmdPckJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
c3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYgZGF0YSk+
JiYpIGNvbnN0OwogICAgIHZvaWQgZm9yRWFjaEN1c3RvbVN0cmluZyhGdW5jdGlvbjx2b2lkKGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKT4mJikgY29uc3Q7CiAKICAgICBi
b29sIGhhc0RhdGEoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZFN0cmF0ZWd5LmgKaW5kZXggMWMwNzI2ZmViM2UwMmFlZDMyYjQ2ZjI2MmJjZGExNjlkNjcyZWIy
Yy4uNGE4NzcwZTMxYmEzYTBhZWE0YjdmMWUwNDk5MTdkODE2MTUxZGNmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTMxLDEwICszMSwxMSBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRD
dXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3Ry
dWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwpAQCAtNTEsNyAr
NTIsNyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8
U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAg
ICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC02Miw3ICs2Myw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgaW50NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBpbnQ2NF90IHNl
dEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KSA9IDA7CisgICAgdmlydHVhbCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1
YWwgaW50NjRfdCBzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwg
aW50NjRfdCBzZXRDb2xvcihjb25zdCBDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBz
ZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikgPSAwOwpAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXJs
U3RyaW5nU3VpdGFibGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0
cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogI2VuZGlmCiAgICAg
dmlydHVhbCBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFkVVJMRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0
ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFu
Z2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUlu
Zm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4g
cmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
PSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlw
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVU
b0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTZWxlY3Rpb25EYXRhJiYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IDhlMmM4ZmI5MmQ5NzJm
ZDQyMTYwMDdiYzg3Nzc1MmNmZDM0OGY4NGQuLmI0NWNlMWY5MzhjYmE1MDY2MzhiNmE0MTIxZDc2
NzM2M2Y4YmU1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRXcml0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdy
aXRlckRhdGEuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IFBhc3RlYm9hcmRXcml0ZXJEYXRhIGZpbmFsIHsKIHB1YmxpYzoKQEAgLTUxLDE0ICs1MSwxNCBA
QCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFN0cmluZyBjb250ZW50T3Jp
Z2luOwogICAgICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0
dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgICAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgICAgIFN0cmlu
ZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0Owog
ICAgICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICAgICAgVmVjdG9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgICAgICBWZWN0b3I8UmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaAppbmRleCAzZjQ4
MzJhNWE2NThjMWNjN2MwYWExM2IyNmUwZWE0NzMzZTlkM2I3Li45ZTcyZTQ0YTJlYWM0ZDhlZjcz
MGI5ODcxZDBlYzUwOGVkOWZhYzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1Db250ZW50RmlsdGVy
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSA9
IDA7Ci0gICAgdmlydHVhbCBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1l
bnREYXRhKCkgY29uc3QgPSAwOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICB2
aXJ0dWFsIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0
ID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaAppbmRleCA3YTJhMzEwMDc0MjUwMDI0M2JiNDZmZjU5ODY4NjFlODRhMmZkOTZlLi5kZTQ0
YTQ2NTI3YzM3MTgyMTUxZjhhODg4NWE1YWU3MWEwZTRmMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAtNDcsMTMgKzQ3LDE0IEBAIHN0cnVj
dCB3cGVfcGFzdGVib2FyZDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7Citj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7
CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IFBhc3Rl
Ym9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2Fy
ZFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC03MSw3
ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5
cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwg
SW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRlSW1hZ2VUeXBlczo6Tm8pOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwotICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJp
bmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0
cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwpAQCAtODUs
NyArODYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHdpbGwgcmV0dXJuIDAg
aWYgcGFzdGVib2FyZCBvd25lcnNoaXAgaGFzIGJlZW4gdGFrZW4gZnJvbSB1cy4KICAgICBXRUJD
T1JFX0VYUE9SVCBpbnQ2NF90IGNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIGludDY0
X3Qgc2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRVUkwoY29u
c3QgUGFzdGVib2FyZFVSTCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0Q29sb3Io
Y29uc3QgQ29sb3ImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldFN0cmluZ0ZvclR5
cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CkBAIC05Myw3
ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBh
c3RlYm9hcmRJbWFnZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJlYWRTdHJp
bmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBjb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAppbmRleCA0Y2IzMzAxZTdkZjcw
NzFjNWRkOWZjNTliYzU3MTg1YzRlOTE0NzY4Li42MzFhZGU3Y2NmN2FkMjk2OTNhMmU3NjUxZmU2
YTljZGViZDM3NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVy
dGVyLmNwcApAQCAtNjMsOSArNjMsOSBAQCBjb25zdCBSZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29u
dmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25zdAogICAgIHJldHVybiBtX3ByZXZpZXdFcnJvcjsK
IH0KIAotY29uc3QgU2hhcmVkQnVmZmVyJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgp
IGNvbnN0Citjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBQcmV2aWV3Q29udmVydGVyOjpw
cmV2aWV3RGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJldmlld0RhdGEuZ2V0KCk7Cisg
ICAgcmV0dXJuICptX3ByZXZpZXdEYXRhLT5nZXQoKTsKIH0KIAogdm9pZCBQcmV2aWV3Q29udmVy
dGVyOjp1cGRhdGVNYWluUmVzb3VyY2UoKQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFByZXZpZXdD
b252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSgpCiAgICAgfSk7CiB9CiAKLXZvaWQgUHJldmll
d0NvbnZlcnRlcjo6YXBwZW5kRnJvbUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6YXBwZW5kRnJvbUJ1ZmZlcihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgd2hpbGUgKGJ1ZmZlci5zaXplKCkgPiBtX2xl
bmd0aEFwcGVuZGVkKSB7CiAgICAgICAgIGF1dG8gbmV3RGF0YSA9IGJ1ZmZlci5nZXRTb21lRGF0
YShtX2xlbmd0aEFwcGVuZGVkKTsKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFByZXZpZXdDb252
ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAg
ICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZygqdGhpcyk7CiAKICAg
ICBpZiAoIW1fcHJldmlld0RhdGEtPmlzRW1wdHkoKSAmJiBoYXNDbGllbnQoY2xpZW50KSkKLSAg
ICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgbV9wcmV2
aWV3RGF0YS5nZXQoKSk7CisgICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2
ZURhdGEoKnRoaXMsICptX3ByZXZpZXdEYXRhLT5nZXQoKSk7CiAKICAgICBpZiAobV9zdGF0ZSA9
PSBTdGF0ZTo6Q29udmVydGluZyB8fCAhaGFzQ2xpZW50KGNsaWVudCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xp
ZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICBjbGllbnQucHJldmlld0Nv
bnZlcnRlckRpZEZpbmlzaENvbnZlcnRpbmcoKnRoaXMpOwogfQogCi12b2lkIFByZXZpZXdDb252
ZXJ0ZXI6OmRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQor
dm9pZCBQcmV2aWV3Q29udmVydGVyOjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzIHsgUmVm
IHsgKnRoaXMgfSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2
aWV3Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVy
LmgKaW5kZXggMmEzNzI5MjI3OTljZTZhZmZhYWIzZTE0MGQxOTBiYTY0Y2Y4Y2UyYi4uOTIwMmVk
ZGQ5ZTEwNWIyNzM1ZWRjMTQ2ZjI2NjRjMTNjYjljMzQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJl
c291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDEs
MTUgKzQyLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKK2NsYXNzIFNo
YXJlZEJ1ZmZlckJ1aWxkZXI7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNsaWVudDsKIHN0cnVj
dCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI7CiAKIHN0cnVjdCBQcmV2aWV3UGxhdGZvcm1EZWxl
Z2F0ZSA6IENhbk1ha2VXZWFrUHRyPFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlPiB7CiAgICAgdmly
dHVhbCB+UHJldmlld1BsYXRmb3JtRGVsZWdhdGUoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRGaW5pc2hMb2Fk
aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZEZhaWxXaXRoRXJyb3IoY29u
c3QgUmVzb3VyY2VFcnJvciYpID0gMDsKIH07CkBAIC03Miw3ICs3NCw3IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJldmlld0ZpbGVOYW1lKCkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIHByZXZpZXdVVEkoKSBjb25zdDsKICAgICBjb25zdCBSZXNvdXJj
ZUVycm9yJiBwcmV2aWV3RXJyb3IoKSBjb25zdDsKLSAgICBjb25zdCBTaGFyZWRCdWZmZXImIHBy
ZXZpZXdEYXRhKCkgY29uc3Q7CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcHJl
dmlld0RhdGEoKSBjb25zdDsKIAogICAgIHZvaWQgZmFpbGVkVXBkYXRpbmcoKTsKICAgICB2b2lk
IGZpbmlzaFVwZGF0aW5nKCk7CkBAIC05NCw3ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c1BsYXRmb3JtUGFzc3dvcmRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikgY29uc3Q7CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGl0ZXJhdGVDbGllbnRzKFQmJiBjYWxsYmFjayk7
Ci0gICAgdm9pZCBhcHBlbmRGcm9tQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZv
aWQgYXBwZW5kRnJvbUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAg
dm9pZCBkaWRBZGRDbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYpOwogICAgIHZvaWQgZGlk
RmFpbENvbnZlcnRpbmdXaXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQg
ZGlkRmFpbFVwZGF0aW5nKCk7CkBAIC0xMDYsNyArMTA4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHBsYXRmb3JtVW5sb2NrV2l0aFBhc3N3b3JkKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gUHJl
dmlld1BsYXRmb3JtRGVsZWdhdGUKLSAgICB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRh
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRlbGVnYXRl
RGlkRmluaXNoTG9hZGluZygpIGZpbmFsOwogICAgIHZvaWQgZGVsZWdhdGVEaWRGYWlsV2l0aEVy
cm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApAQCAtMTE4LDcgKzEyMCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIEZpbmlzaGVkQ29udmVydGluZywKICAgICB9OwogCi0gICAgUmVmPFNo
YXJlZEJ1ZmZlcj4gbV9wcmV2aWV3RGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVp
bGRlcj4gbV9wcmV2aWV3RGF0YTsKICAgICBSZXNvdXJjZUVycm9yIG1fcHJldmlld0Vycm9yOwog
ICAgIFJlc291cmNlUmVzcG9uc2UgbV9vcmlnaW5hbFJlc3BvbnNlOwogICAgIFN0YXRlIG1fc3Rh
dGUgeyBTdGF0ZTo6VXBkYXRpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXJDbGllbnQuaAppbmRleCAwNGVhMzY4MDY5MmIyNTJhMTk4OWMyNmNhMjA0
MjEyNzc3YWEzYjdiLi45Y2VlOTMzMjBiMjM4YjRjZDczY2RkMmUwMzAyYzNiZjRkYWQ2OGJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5o
CkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUHJldmlld0Nv
bnZlcnRlcjsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNsaWVu
dCA6IENhbk1ha2VXZWFrUHRyPFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ+IHsKICAgICB2aXJ0dWFs
IH5QcmV2aWV3Q29udmVydGVyQ2xpZW50KCkgPSBkZWZhdWx0OwpAQCAtNDIsNyArNDIsNyBAQCBz
dHJ1Y3QgUHJldmlld0NvbnZlcnRlckNsaWVudCA6IENhbk1ha2VXZWFrUHRyPFByZXZpZXdDb252
ZXJ0ZXJDbGllbnQ+IHsKICAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZpbmlz
aFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZp
ZXdDb252ZXJ0ZXJEaWRGYWlsVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29u
dmVydGVyJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2
ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgbmV3RGF0YSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmll
d0NvbnZlcnRlciYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG5ld0RhdGEpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRpbmcoUHJl
dmlld0NvbnZlcnRlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRp
ZEZhaWxDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaAppbmRleCA4Mjc4
NjM5M2ZjZWQ3NTRjODVmN2IyODkxMjUyZjUxNmJlZDBkNTQ5Li5iOTg2ZWU0MGQxOTc1MTc0ZjU0
YWQyOWExNjhjYWRmMTg5NDU2YzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyIDogQ2FuTWFrZVdlYWtQ
dHI8UHJldmlld0NvbnZlcnRlclByb3ZpZGVyPiB7CiAgICAgdmlydHVhbCB+UHJldmlld0NvbnZl
cnRlclByb3ZpZGVyKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIHByb3ZpZGVNYWlu
UmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0
ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
KT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29u
dmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9t
aXNlZEF0dGFjaG1lbnRJbmZvLmgKaW5kZXggMWUxMmI5NTU1ODAyOTJjMDNhNTc4ZWYzZjc4YjE1
N2VkNWZlYzMyYi4uYTFjYzc2OTVjMGE2M2VkNzg3ZTIxMGE3YzgyNzc3NjdkY2NlNzFhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaApA
QCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcm9taXNlZEF0
dGFjaG1lbnRJbmZvIHsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzgsNyAr
MzgsNyBAQCBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjZW5kaWYKIAogICAgIFZl
Y3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDhlNjhl
MzM3NzgxZmIyOWFkMzljNTViOWFmZDM5MDAzNTM1Mzg1ZC4uNjUxYTk2NjQxZmJjZjc2YWM3YjI5
YmI1YmEwOWYxMTYyNzhiZmJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwCkBAIC0zNyw2MyArMzcsNTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFy
ZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkK
K0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgYXBwZW5kKGRhdGEsIHNpemUpOwogfQog
Ci1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6
ZSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRC
dWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKK0ZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJiBmaWxlRGF0YSkKICAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7Ci0gICAg
bV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0
YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdU
Rk1vdmUoZmlsZURhdGEpKSB9KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRGF0
YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQog
ICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7
MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0p
OwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRh
KQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihWZWN0b3I8
dWludDhfdD4mJiBkYXRhKQogewogICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAotI2lm
IFVTRShHU1RSRUFNRVIpCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShH
c3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKG1hcHBlZEJ1
ZmZlcikpOworICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCi1TaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQotICAgIDog
bV9zaXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCisjaWYgVVNFKEdTVFJFQU1FUikKK1JlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFw
cGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7
MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKX0pOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIobWFwcGVkQnVmZmVyKSk7CiB9Ci0jZW5k
aWYKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1v
ZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQot
ewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7
Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGlu
Z1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwot
ICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmls
ZVBhdGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0
b3I8dWludDhfdD4mJiB2ZWN0b3IpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCisgICAgOiBt
X3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAw
LCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpIH0pOwogfQorI2VuZGlmCiAKLXN0
YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6ZV90IHNpemUpCitzdGF0aWMgVmVj
dG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBW
ZWN0b3I8dWludDhfdD4gY29tYmluZWREYXRhOwogICAgIGNvbWJpbmVkRGF0YS5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHNpemUpOwpAQCAtMTAzLDMzICs5MiwxOSBAQCBzdGF0aWMgVmVjdG9yPHVp
bnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dFZlY3RvcgogICAgIHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVy
Ojpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzKCkgY29uc3QKIHsKLSNp
ZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIHNl
dCB0aGlzIHRvIHRydWUgYW5kIGhhdmUgbm8gYXNzZXJ0aW9ucyBmaXJlLgotICAgIC8vIFJlbW92
ZSBhbGwgaW5zdGFuY2VzIG9mIGFwcGVuZGluZyBhZnRlciBjYWxsaW5nIHRoaXMsIGJlY2F1c2Ug
dGhleSBhcmUgYWxsIE8obl4yKSBhbGdvcml0aG1zIHNpbmNlIHIyMTU2ODYuCi0gICAgLy8gbV9o
YXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCA9IHRydWU7Ci0jZW5kaWYKLSAgICBpZiAobV9z
ZWdtZW50cy5zaXplKCkgPD0gMSkKLSAgICAgICAgcmV0dXJuOwotCisgICAgaWYgKG1fY29udGln
dW91cykKKyAgICAgICAgcmV0dXJuIFJlZiB7ICpzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVk
QnVmZmVyKj4oY29uc3RfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4odGhpcykpIH07Cisg
ICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAg
ICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0u
c2VnbWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNlZ21l
bnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKLSAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNvbWJp
bmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwotICAgIEFT
U0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLX0KLQotY29uc3QgdWludDhfdCogU2hhcmVk
QnVmZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwotICAg
IEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLSAgICByZXR1cm4gbV9zZWdtZW50c1sw
XS5zZWdtZW50LT5kYXRhKCk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwogfQogCi1WZWN0b3I8dWludDhfdD4gU2hhcmVk
QnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CitWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdAogewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwog
ICAgIGRhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKCkpOwpAQCAtMTM5LDcgKzExNCw3
IEBAIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKICAgICBy
ZXR1cm4gZGF0YTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEo
KQorVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkKIHsK
ICAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0x
NTQsMTMgKzEyOSwxMyBAQCBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgp
CiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZpZXcgU2hh
cmVkQnVmZmVyOjpnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0CitTaGFyZWRCdWZm
ZXJEYXRhVmlldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpnZXRTb21lRGF0YShzaXplX3QgcG9z
aXRpb24pIGNvbnN0CiB7CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogZWxlbWVu
dCA9IGdldFNlZ21lbnRGb3JQb3NpdGlvbihwb3NpdGlvbik7CiAgICAgcmV0dXJuIHsgZWxlbWVu
dC0+c2VnbWVudC5jb3B5UmVmKCksIHBvc2l0aW9uIC0gZWxlbWVudC0+YmVnaW5Qb3NpdGlvbiB9
OwogfQogCi1jb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yRW50cnkqIFNoYXJl
ZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGlvbikgY29uc3QKK2Nv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yRW50cnkqIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OmdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpb24p
IGNvbnN0CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQocG9zaXRpb24gPCBtX3NpemUpOwogICAgIGF1
dG8gY29tcGFyYXRvciA9IFtdKGNvbnN0IHNpemVfdCYgcG9zaXRpb24sIGNvbnN0IERhdGFTZWdt
ZW50VmVjdG9yRW50cnkmIGVudHJ5KSB7CkBAIC0xNzEsNyArMTQ2LDcgQEAgY29uc3QgU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBTaGFyZWRCdWZmZXI6OmdldFNlZ21lbnRG
b3JQb3NpdGlvbigKICAgICByZXR1cm4gZWxlbWVudDsKIH0KIAotU3RyaW5nIFNoYXJlZEJ1ZmZl
cjo6dG9IZXhTdHJpbmcoKSBjb25zdAorU3RyaW5nIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRv
SGV4U3RyaW5nKCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAg
ICAgZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKQEAgLTE4MSw3ICsxNTYsMjIg
QEAgU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBz
dHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CitzaXplX3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6c2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2l6ZTsKK30KKworYm9v
bCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppc0VtcHR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
IXNpemUoKTsKK30KKworYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMo
KSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRpZ3VvdXM7Cit9CisKK1JlZlB0cjxBcnJheUJ1
ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25z
dAogewogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0
aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwgMSk7CiAgICAgaWYgKCFhcnJh
eUJ1ZmZlcikgewpAQCAtMjAwLDY4ICsxOTAsNjUgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKICAgICByZXR1cm4gYXJyYXlC
dWZmZXI7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVy
JiBkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVk
SW50b09uZVNlZ21lbnQpOwogICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVu
dHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRv
JiBlbGVtZW50IDogZGF0YS5tX3NlZ21lbnRzKSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVj
a2VkQXBwZW5kKHttX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAg
bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5
UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAg
ICB9CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJl
ZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lk
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgbGVuZ3RoKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVu
dCk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEs
IGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNy
ZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUs
IERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBtX3NpemUgKz0g
bGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBT
aGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQordm9pZCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBB
U1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIGF1dG8gZGF0YVNp
emUgPSBkYXRhLnNpemUoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2Vn
bWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBt
X3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXpl
ICs9IGRhdGFTaXplOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAot
dm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyKCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOworfQorCit2b2lk
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNsZWFyKCkKIHsKICAgICBtX3NpemUgPSAwOwogICAg
IG1fc2VnbWVudHMuY2xlYXIoKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7
CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CitSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNv
bnN0CiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcik7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNsb25lID0gYWRvcHRS
ZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKTsKICAgICBjbG9uZS0+bV9zaXplID0gbV9z
aXplOwogICAgIGNsb25lLT5tX3NlZ21lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdt
ZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMp
Ci0gICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7ZWxlbWVudC5iZWdp
blBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIGNsb25lLT5t
X3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IGVsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVu
dC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICBBU1NFUlQoY2xvbmUtPmludGVybmFsbHlDb25z
aXN0ZW50KCkpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1
cm4gY2xvbmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERh
dGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOwotfQotCi12b2lkIFNoYXJlZEJ1
ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0
IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4
X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsK
ICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBzZWdtZW50cykKICAgICAgICAgYXBwbHkoU3BhbiB7
IHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSB9KTsKIH0K
IAotYm9vbCBTaGFyZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90
PiYgcHJlZml4KSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRo
KGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKIHsKICAgICBpZiAocHJl
Zml4LmVtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjgzLDcgKzI3MCw3IEBAIGJv
b2wgU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHBy
ZWZpeCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFy
ZWRCdWZmZXI6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKK1ZlY3Rv
cjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNp
emVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgaWYg
KG9mZnNldCA+PSBzaXplKCkpCkBAIC0zMTAsMTIgKzI5NywxMiBAQCBWZWN0b3I8dWludDhfdD4g
U2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAg
ICAgcmV0dXJuIGRhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVz
dGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIHsKICAg
ICByZXR1cm4gY29weVRvKGRlc3RpbmF0aW9uLCAwLCBsZW5ndGgpOwogfQogCi12b2lkIFNoYXJl
ZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCog
ZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKGxlbmd0aCArIG9mZnNldCA8PSBzaXplKCkpOwogICAgIGlmIChvZmZzZXQgPj0gc2l6
ZSgpKQpAQCAtMzUzLDE0ICszNDAsMTMgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lk
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKICAgICB9
CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKK2Jvb2wgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgYXV0byBp
dCA9IGJlZ2luKCk7Ci0gICAgcmV0dXJuIGl0ICE9IGVuZCgpICYmICsraXQgPT0gZW5kKCk7Cisg
ICAgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID09IDE7CiB9CiAKICNpZiBBU1NFUlRfRU5BQkxF
RAotYm9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKK2Jvb2wg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogewog
ICAgIHNpemVfdCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDog
bV9zZWdtZW50cykgewpAQCAtMzcyLDcgKzM1OCw1NyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50
ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAK
LWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAor
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcigpCit7CisgICAg
bV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkKK3sKKyAgICBtX3Np
emUgPSBzZWdtZW50LT5zaXplKCk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBXVEZNb3Zl
KHNlZ21lbnQpIH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikKK3sKKyAgICBBU1NFUlQoY29udGlndW91c0J1ZmZl
ci0+aGFzT25lU2VnbWVudCgpIHx8IGNvbnRpZ3VvdXNCdWZmZXItPmlzRW1wdHkoKSk7CisgICAg
bV9zaXplID0gY29udGlndW91c0J1ZmZlci0+c2l6ZSgpOworICAgIGlmIChjb250aWd1b3VzQnVm
ZmVyLT5oYXNPbmVTZWdtZW50KCkpCisgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgY29u
dGlndW91c0J1ZmZlci0+bV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSB9KTsKKyAgICBt
X2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICA6
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKK3sKKyAgICBtX2NvbnRpZ3Vv
dXMgPSB0cnVlOworfQorCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VG
aWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1hcHBp
bmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6OlllcykgeworICAgICAgICBib29sIG1hcHBpbmdTdWNj
ZXNzOworICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShm
aWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYgKG1h
cHBpbmdTdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgfQorICAgIHJldHVy
biBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOworfQorCitjb25zdCB1aW50OF90KiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21l
bnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKK30KKworY29uc3QgY2hhciogQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdt
ZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9y
KAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4
X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LApAQCAtMzkxLDIzICs0MjcsMjMgQEAgY29uc3Qg
dWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0
dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAotYm9vbCBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKK2Jv
b2wgRGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAogewogICAgIHJl
dHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPiht
X2ltbXV0YWJsZURhdGEpOwogfQogCiAjaWYgIVVTRShDRikKLXZvaWQgU2hhcmVkQnVmZmVyOjpo
aW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIHsKIH0KICNlbmRpZgogCi1XVEY6
OlBlcnNpc3RlbmNlOjpEZWNvZGVyIFNoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CitXVEY6
OlBlcnNpc3RlbmNlOjpEZWNvZGVyIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBj
b25zdAogewogICAgIHJldHVybiB7eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhKCkpLCBzaXplKCkgfX07CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNv
bnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0Citib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6Om9wZXJhdG9yPT0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0
CiB7CiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ1
Niw3ICs0OTIsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRC
dWZmZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNp
emUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAg
ICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRh
dGEuc2l6ZSgpOyB9LApAQCAtNDc1LDcgKzUxMSw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBt
X2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVy
RGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90
IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYm
IHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bv
c2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUo
c2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQp
CkBAIC00OTksMTYgKzUzNSwyMSBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmll
dzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlv
bldpdGhpblNlZ21lbnQ7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFW
aWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorY29uc3QgY2hhciogU2hhcmVkQnVmZmVy
RGF0YVZpZXc6OmRhdGFBc0NoYXJQdHIoKSBjb25zdAoreworICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOworfQorCitSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7
Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3Nl
Z21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQg
PSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShE
YXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0o
KSB7IHJldHVybiBkYXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7
IHJldHVybiBzaXplOyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7
IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBT
dHJpbmcmIHN0cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVy
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBl
bm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0
aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTUzNCw3ICs1NzUsNyBAQCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZl
ci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmgKaW5kZXggZjIzZjVkNjlhZDMyZWQ2NDBiOTU3N2IyZTZjNDU0OTE4MzkzNjhhZC4uMWE2YTFh
ZTY1OGNmYTA1M2I4ZGFmOWUxZmY3MzI2YTE1Yjc1YzRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC02MiwxNDYgKzYyLDEzMyBAQCBjbGFzcyBEZWNv
ZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQg
U2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4g
eworLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBi
ZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCisvLyBUbyBtb2Rp
Znkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCitjbGFz
cyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4g
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYg
bWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1v
dmUobWFwcGVkRmlsZURhdGEpKSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90
KiBkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsK
IAotICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9Owot
ICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVz
ZUZpbGVNYXBwaW5nOjpZZXMpOwotCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShWZWN0b3I8dWludDhfdD4mJik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRl
KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBkYXRhLnNocmlua1RvRml0
KCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0
YSkpKTsKKyAgICB9CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRh
PiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNE
YXRhQXJyYXkoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5T
RGF0YSAqKTsKLSAgICB2b2lkIGFwcGVuZChOU0RhdGEgKik7Ci0jZW5kaWYKICNpZiBVU0UoQ0Yp
Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwotICAgIHZvaWQgYXBwZW5k
KENGRGF0YVJlZik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0
cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChX
VEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNFKEdMSUIpCi0gICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKLSAgICBHUmVmUHRyPEdCeXRlcz4gY3Jl
YXRlR0J5dGVzKCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdS
ZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQo
V1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLQogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAg
IHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZm
ZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRh
dGEpKSk7IH0KICNlbmRpZgotICAgIC8vIENhbGxpbmcgZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRh
dGEgc2VnbWVudHMgdG8gYmUgY29waWVkIGludG8gb25lIHNlZ21lbnQgaWYgdGhleSBhcmUgbm90
IGFscmVhZHkuCi0gICAgLy8gSXRlcmF0ZSB0aGUgc2VnbWVudHMgdXNpbmcgYmVnaW4oKSBhbmQg
ZW5kKCkgaW5zdGVhZC4KLSAgICAvLyBGSVhNRTogQXVkaXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhp
cyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdpdGggaXRlcmF0aW9uIGlmIHBvc3NpYmxlLgot
ICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXND
aGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSgpKTsgfQotICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OwotICAgIFZlY3Rv
cjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwotCi0g
ICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0
YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlz
IG5vdCBzaGFyZWQpLgotICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOworICAgIHN0
YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
IGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OyB9CiAKLSAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFy
ZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0Ci0gICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBt
ZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KLSAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7Ci0KLSAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gIXNpemUoKTsgfQotCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVm
ZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9p
ZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KLSAgICB2b2lkIGFw
cGVuZChWZWN0b3I8dWludDhfdD4mJik7Ci0KLSAgICB2b2lkIGNsZWFyKCk7CisgICAgc3RydWN0
IFByb3ZpZGVyIHsKKyAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKKyAg
ICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7CisgICAgfTsKIAotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IGNvcHkoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwg
c2l6ZV90IGxlbmd0aCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24s
IHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0
YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7IH0KIAotICAgIC8vIERhdGEgd3Jh
cHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4g
YmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgotICAgIC8vIFRvIG1vZGlmeSBvciBjb21i
aW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KLSAgICBjbGFzcyBEYXRh
U2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewotICAg
IHB1YmxpYzoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNv
bnN0OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVT
RShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0
ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCiAKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVu
dD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGRhdGEuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKLSAgICAgICAgfQorICAgIGJvb2wgY29udGFpbnNN
YXBwZWRGaWxlRGF0YSgpIGNvbnN0OwogCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERhdGFTZWdt
ZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdU
Rk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRh
U2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFi
bGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAg
IHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAg
IGV4cGxpY2l0IERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCisgICAgICAgIDog
bV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdTVFJF
QU1FUikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RN
YXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdt
ZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJlZlB0cjxH
c3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShX
VEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50
PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERh
dGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICAgICAgOiBt
X2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21l
bnQoUHJvdmlkZXImJiBwcm92aWRlcikKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShwcm92aWRlcikpIHsgfQogCi0gICAgICAgIHN0cnVjdCBQcm92aWRlciB7Ci0gICAgICAgICAg
ICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOwotICAgICAgICAgICAgRnVuY3Rpb248
c2l6ZV90KCk+IHNpemU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQotCi0jaWYgVVNFKEZPVU5EQVRJT04p
Ci0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotI2VuZGlm
Ci0KLSAgICAgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7Ci0KLSAgICBw
cml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAg
ICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgc3RkOjp2
YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKICNpZiBVU0UoQ0YpCi0gICAgICAgIERhdGFTZWdtZW50
KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVE
YXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKICNl
bmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4m
JiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9
CisgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0g
ICAgICAgIERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQot
ICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAg
IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisjZW5kaWYKKyAgICAgICAgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Cisg
ICAgZnJpZW5kIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CisjaWYgIVVTRShGT1VOREFU
SU9OKQorICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOyAvLyBGb3IgY3Jl
YXRlQ0ZEYXRhCiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9Ci0gICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCi0gICAg
ICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9Cit9OworCitj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcik7IH0KKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQorICAgIHN0
YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVk
RmlsZURhdGEpKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsgfQorICAg
IHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90
PiYmIHZlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KFdURk1vdmUodmVjdG9yKSkpOyB9CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9
CiAKLSAgICAgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKKyNpZiBVU0UoRk9VTkRB
VElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRh
QXJyYXkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEqKTsKKyNlbmRpZgogI2lmIFVTRShDRikKLSAgICAg
ICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKKwog
I2lmIFVTRShHTElCKQotICAgICAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAorICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyop
OwogI2VuZGlmCisKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICAgICAgUmVmUHRyPEdzdE1h
cHBlZE93bmVkQnVmZmVyPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCi0g
ICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFByb3Zp
ZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7
Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEo
KSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4g
aXQgaXMgc2FmZSAoVGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7CisKKyAgICAvLyBDcmVhdGVzIGFuIEFy
cmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3MgY29udGVu
dHMgdG8gdGhhdAorICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQg
YnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFy
cmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OworCisgICAgV0VCQ09SRV9F
WFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaXNFbXB0eSgpIGNvbnN0OwogCi0gICAgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5j
dGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKLSAgICBib29s
IHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQ29udGlndW91cygpIGNvbnN0OworCisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0
aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRp
b24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworCisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48
Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0
c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKworICAgIHVz
aW5nIERhdGFTZWdtZW50ID0gV2ViQ29yZTo6RGF0YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFja3dh
cmQgY29tcGF0aWJpbGl0eSB3aGVuIHVzaW5nIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNp
emVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMjEwLDU2ICsxOTcsMTgyIEBAIHB1YmxpYzoKICAgICB1
c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAx
PjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7
IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29u
c3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5lbmQoKTsgfQotICAg
IGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFz
T25lU2VnbWVudCgpIGNvbnN0OwogCiAgICAgLy8gYmVnaW4gYW5kIGVuZCB0YWtlIE8oMSkgdGlt
ZSwgdGhpcyB0YWtlcyBPKGxvZyhOKSkgdGltZS4KLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyBn
ZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFNo
YXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CiAK
LSAgICBTdHJpbmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgdG9IZXhTdHJpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgaGludE1lbW9yeU5vdE5lZWRlZFNv
b24oKSBjb25zdDsKIAotICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7
IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKLSAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CiAKLXByaXZhdGU6Ci0gICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIo
Y29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1
aW50OF90PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92
aWRlciYmKTsKK3Byb3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKKworICAgIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7CisgICAgYm9vbCBtX2Nv
bnRpZ3VvdXMgeyBmYWxzZSB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgY2hhcios
IHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcihWZWN0b3I8dWludDhfdD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50
OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKICNpZiBVU0UoQ0YpCi0g
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2VuZGlmCiAjaWYg
VVNFKEdMSUIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRlcyopOworICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5k
aWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBw
ZWRPd25lZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgorICAgIHNpemVfdCBt
X3NpemUgeyAwIH07CiAKLSAgICB2b2lkIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6
ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWlu
dDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBlbmQoTlNEYXRhICopOworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisjZW5kaWYKIAotICAgIC8vIENvbWJpbmVzIGFsbCB0
aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBj
bGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgotICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKIAorcHJpdmF0ZToKKyAgICBmcmll
bmQgY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKKyAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNl
Z21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJp
bmcgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9y
PHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSog
Z2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9uKSBjb25zdDsKIAotICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCk7Ci0KLSAgICBzaXplX3QgbV9zaXplIHsgMCB9OwotICAgIG11dGFibGUg
RGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKLQogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAg
bXV0YWJsZSBib29sIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgeyBmYWxzZSB9Owog
ICAgIGJvb2wgaW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdDsKICNlbmRpZgogfTsKIAotaW5s
aW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKKy8vIEEgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciBpcyBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgdGhhdCBhbGxv
d3MgdG8gZGlyZWN0bHkgYWNjZXNzIGl0cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxh
dGVkIG1ldGhvZHMuCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIDogcHVibGljIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBB
cmdzPgorICAgIHN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlKEFyZ3Mm
Ji4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByICghc2l6ZW9mLi4uKEFyZ3Mp
KQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cigpKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCisg
ICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYu
Li4pKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBhdXRvIGJ1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIC8vIEVuc3VyZSB0aGF0IHlvdSBjYW4ndCBjYWxsIGFwcGVuZCBvbiBhIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIgZGlyZWN0bHkuCisgICAgLy8gV2hlbiBjYWxsZWQgZnJvbSB0
aGUgYmFzZSBjbGFzcywgaXQgd2lsbCBhc3NlcnQuCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4u
IEFyZ3M+CisgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uKSA9IGRlbGV0ZTsKKworICAgIFdFQkNP
UkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QgKmRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisKKyAgICBlbnVtIGNs
YXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
TW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBw
aW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsK
KyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShHTElCKQorICAgIFdF
QkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNlbmRp
ZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgpOworfTsKKworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcigpID0gZGVm
YXVsdDsKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICB7CisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50
IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYXMgYWxs
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBv
bmNlIGNyZWF0ZWQuCisgICAgICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+aGFzT25lUmVmKCkp
IHsKKyAgICAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGFwcGVuZCgqYnVmZmVyKTsKKyAgICB9CisgICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCisgICAgeworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVm
ZXJlbmNlIHRvIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFzIGFsbCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAgICAgLy8gb25jZSBjcmVhdGVkLgor
ICAgICAgICBpZiAoYnVmZmVyLT5oYXNPbmVSZWYoKSkgeworICAgICAgICAgICAgbV9idWZmZXIg
PSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyLmdldCgpKSk7CisgICAgfQorICAgIHRlbXBsYXRlIDx0
eXBlbmFtZS4uLiBBcmdzPgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoQXJncyYmLi4uIGFyZ3Mp
CisgICAgICAgIDogbV9idWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6
Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpIHsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4u
IEFyZ3M+CisgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBl
bnN1cmVCdWZmZXIoKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pOworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25z
dCB7IHJldHVybiAhaXNOdWxsKCk7IH0KKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJu
ICFtX2J1ZmZlcjsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
ID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KKworICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQorCisgICAgdm9p
ZCByZXNldCgpIHsgbV9idWZmZXIgPSBudWxscHRyOyB9CisgICAgdm9pZCBlbXB0eSgpCisgICAg
eworICAgICAgICByZXNldCgpOworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICB9CisKKyAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXI7IH0KKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmNvcHkoKSA6IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHRha2UoKQor
ICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIHJldHVybiBtX2J1ZmZlci5y
ZWxlYXNlTm9uTnVsbCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGVuc3VyZUJ1ZmZl
cigpCisgICAgeworICAgICAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICAgICAgbV9idWZmZXIg
PSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICB9CisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworfTsKKworaW5saW5lIFZlY3Rvcjx1aW50
OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiB7CiAgICAgaWYgKGhh
c09uZVJlZigpKQogICAgICAgICByZXR1cm4gdGFrZURhdGEoKTsKQEAgLTI2OCwyMSArMzgxLDIx
IEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiAK
IGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKLSAg
ICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiwg
c2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1Np
emUgPSBzdGQ6Om51bGxvcHQpOworICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2Vn
bWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwogICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNv
bnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwogICAgIHNpemVfdCBz
aXplKCkgY29uc3Q7CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgIGNvbnN0
IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVk
QnVmZmVyKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0Owor
ICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25z
dDsKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0Rh
dGEoKSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9z
ZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBj
b25zdCBzaXplX3QgbV9zaXplOwogfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZl
cihjb25zdCBTdHJpbmcmKTsKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVm
ZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKaW5kZXgg
Y2RiNmU3MDM0MDRkNDI2ZGQyMWI0NzlmYTg5YzBkYTliOGM0OWY4ZS4uOWQwNTVjZTI3ZDg4YzNk
NjJlNWJkMWNkNDZhZDkxZjVjYzQzMWY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoTUhUTUwpCiAKLVNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29u
c3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpCitTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25z
dCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcikKICAgICA6IG1faXRlcmF0b3JDdXJyZW50KGJ1ZmZl
ci0+YmVnaW4oKSkKICAgICAsIG1faXRlcmF0b3JFbmQoYnVmZmVyLT5lbmQoKSkKICAgICAsIG1f
c2VnbWVudChtX2l0ZXJhdG9yQ3VycmVudCAhPSBtX2l0ZXJhdG9yRW5kID8gbV9pdGVyYXRvckN1
cnJlbnQtPnNlZ21lbnQtPmRhdGEoKSA6IG51bGxwdHIpCkBAIC00NCw3ICs0NCw3IEBAIFNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIq
IGJ1ZmZlciwgY29uc3QgVmVjCiB7CiB9CiAKLVNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFy
ZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgY2hhciogc2Vw
YXJhdG9yKQorU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgY2hhciogc2VwYXJhdG9yKQog
ICAgIDogbV9pdGVyYXRvckN1cnJlbnQoYnVmZmVyLT5iZWdpbigpKQogICAgICwgbV9pdGVyYXRv
ckVuZChidWZmZXItPmVuZCgpKQogICAgICwgbV9zZWdtZW50KG1faXRlcmF0b3JDdXJyZW50ICE9
IG1faXRlcmF0b3JFbmQgPyBtX2l0ZXJhdG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0YSgpIDogbnVs
bHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1Jl
YWRlci5oCmluZGV4IDVkNGU2ZmVlNTgyYzY2MTZmZDA3ZTM5OTRmZjc1YzhmMDdhMmZjZTEuLjFj
NjQwOGQ0YzczNmExYzRhNDVjZWU3YjNmNjk2NTdiYzlhMjYxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaApAQCAtNDEsOCArNDEs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyIHsKIHB1YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihT
aGFyZWRCdWZmZXIqLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcik7Ci0gICAgU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiwgY29uc3QgY2hhciogc2VwYXJhdG9yKTsK
KyAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29u
c3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpOworICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpOwogCiAgICAg
dm9pZCBzZXRTZXBhcmF0b3IoY29uc3QgVmVjdG9yPGNoYXI+Jik7CiAgICAgdm9pZCBzZXRTZXBh
cmF0b3IoY29uc3QgY2hhciopOwpAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90
IHBlZWsoVmVjdG9yPHVpbnQ4X3Q+Jiwgc2l6ZV90KTsKIAogcHJpdmF0ZToKLSAgICBTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yQ3VycmVu
dDsKLSAgICBjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVy
YXRvciBtX2l0ZXJhdG9yRW5kOworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yQ3VycmVudDsKKyAgICBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3Ig
bV9pdGVyYXRvckVuZDsKICAgICBjb25zdCB1aW50OF90KiBtX3NlZ21lbnQgeyBudWxscHRyIH07
CiAgICAgc2l6ZV90IG1fc2VnbWVudEluZGV4IHsgMCB9OwogICAgIFZlY3RvcjxjaGFyPiBtX3Nl
cGFyYXRvciB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
dGF0aWNQYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3Rl
Ym9hcmQuY3BwCmluZGV4IGIyZDdhNTUwZDQ2MGU5NGNkMzE1MTM0YTMxOTViY2Q5MWM3Yjc4OTQu
LmE0YjRiYjEwNGI0ZDg0MDE1YjhhYTViNTNlN2RmYTc4OGNlZDI1ZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZv
aWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIHZhbHVlKQogICAgIG1fY3VzdG9tRGF0YS53cml0ZVN0cmluZyh0eXBlLCB2YWx1
ZSk7CiB9CiAKLXZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVEYXRhKGNvbnN0IFN0cmluZyYg
dHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3
cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKQogewogICAgIG1fbm9uRGVmYXVsdERhdGFUeXBlcy5hZGQodHlwZSk7CiAgICAgbV9j
dXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAppbmRleCBjMDliNmRlMzFmMmVkZWJlMDE4OGRj
OWM0NjZhMjcxZTFiOGI5ZTE0Li5lZGQ3MTM2MjNmMDZkMjJiMzhlODMyYTI4MzdmZTY2OTk5ZGZk
NzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCkBAIC0z
Miw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgU3RhdGljUGFzdGVib2Fy
ZCBmaW5hbCA6IHB1YmxpYyBQYXN0ZWJvYXJkIHsKIHB1YmxpYzoKQEAgLTUyLDcgKzUyLDcgQEAg
cHVibGljOgogICAgIFN0cmluZyByZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYg
dHlwZSkgZmluYWw7CiAKICAgICB2b2lkIHdyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiBkYXRhKSBmaW5hbDsKLSAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJp
bmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CisgICAgdm9pZCB3cml0ZURhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsK
ICAgICB2b2lkIHdyaXRlU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBkYXRhKTsKICAgICB2b2lkIGNsZWFyKCkgZmluYWw7CiAgICAgdm9pZCBjbGVh
cihjb25zdCBTdHJpbmcmIHR5cGUpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKaW5kZXggNjg3OTU5MDBjNWFkZjljYzkwNDVlMGVhYmIy
MmIxOGZhNjY5NjMxNC4uMWQ2NWJjNDAzYWQ4NTI0M2M2NzI1ZTcwNDQ4ZDZjZGFkY2NjY2UxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCkBA
IC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBOb3dQbGF5aW5nSW5m
b0FydHdvcmsgewogICAgIFN0cmluZyBzcmM7CiAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vd1BsYXlp
bmdJbmZvQXJ0d29yayYgb3RoZXIpIGNvbnN0CiAgICAgewpAQCAtNjcsNyArNjcsNyBAQCB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5mb0Fy
dHdvcms+IE5vd1BsYXlpbmdJbgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZVR5cGUpKQog
ICAgICAgICByZXR1cm4geyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRh
OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShpbWFnZURhdGEpKQogICAgICAgICByZXR1cm4geyB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFk
ZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Zp
bGVSZWFkZXJDb2NvYS5jcHAKaW5kZXggZThiMTliZjM0ZWJhMjNiODU3MjA3YmU4OGNlMWI0NWJm
OGYyY2NjMy4uNDFiNjhjYmEwNjcwZmY2M2Y1Y2IxMDQ0Y2RkMjk5ZjY0NjZjZjliNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVy
Q29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlv
RmlsZVJlYWRlckNvY29hLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIGNsYXNzIEF1ZGlvRmlsZVJl
YWRlcldlYk1EYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogcHVibGljOgot
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBtX2J1ZmZlcjsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIFJlZjxBdWRp
b1RyYWNrUHJpdmF0ZVdlYk0+IG1fdHJhY2s7CiAjZW5kaWYKQEAgLTE4Miw3ICsxODIsNyBAQCBi
b29sIEF1ZGlvRmlsZVJlYWRlcjo6aXNNYXliZVdlYk0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IGRhdGFTaXplKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GaWxlUmVhZGVyV2Vi
TURhdGE+IEF1ZGlvRmlsZVJlYWRlcjo6ZGVtdXhXZWJNRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLCBkYXRhU2l6ZSk7CisgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YVNpemUpOwogICAgIGF1dG8gcGFyc2VyID0g
YWRvcHRSZWYobmV3IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKSk7CiAgICAgYm9vbCBlcnJvciA9
IGZhbHNlOwogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGF1ZGlvVHJhY2tJZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1h
bmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlh
U2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQppbmRleCBiYjc4OGFmYTFlOTFmOWE0ZDNhYjM2ZTJhMGMw
ODEyYzk0ZTE4NzBlLi43ZjA0OTYwYzU5NjViNjI1MWI5MWI5YTU2N2U1MTA4OWI1NzE5ZjA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Np
b25NYW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBN
ZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQ
bGF5aW5nQXBwbGljYXRpb24KICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQo
KSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0VsYXBzZWRUaW1lLCBjZkN1cnJlbnRUaW1l
LmdldCgpKTsKICAgICB9CiAgICAgaWYgKG5vd1BsYXlpbmdJbmZvLmFydHdvcmsgJiYgbm93UGxh
eWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhKSB7Ci0gICAgICAgIGF1dG8gbnNBcnR3b3JrID0g
bm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAg
ICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEs
IG5zQXJ0d29yay5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0
KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrTUlNRVR5cGUsIG5vd1BsYXlp
bmdJbmZvLmFydHdvcmstPm1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlp
bmdJbmZvQXJ0d29ya0lkZW50aWZpZXIsIFN0cmluZzo6bnVtYmVyKG5vd1BsYXlpbmdJbmZvLmFy
dHdvcmstPnNyYy5oYXNoKCkpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDQ0NzNlYzI4ZDA0YzU0
MzYzMjNjMDdkMzdiZjJjOWNkN2RlZDIxMzIuLjliM2VjYTFhMTU0NDk4YzBlN2UzNGM3YzkxMzM2
OTVjY2Q5NDdlN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29k
ZXJDRi5jcHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyQ0Y6OmVuZEFy
cmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAg
YXV0byBkYXRhID0gYWRvcHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgbV9yb290RGljdGlvbmFyeS5nZXQoKSwga0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9y
bWF0X3YxXzAsIDAsIG51bGxwdHIpKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5
ZWRFbmNvZGVyQ0YuaAppbmRleCBmNTg2YzAyYmIxNWJmMzliNzI4M2ZiYTlhYTVlOGExMjZiODRm
ZWZlLi5mYWI2NmZjYmNhOGY0NzE5N2U5OGQ3OWJmMDJlZjgxNjFhNDI3NmE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKQEAgLTM3LDcgKzM3LDcgQEAg
cHVibGljOgogICAgIH5LZXllZEVuY29kZXJDRigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7
CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90
Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXks
IGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hh
cmVkQnVmZmVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVy
Q0YuY3BwCmluZGV4IDZiNjYyMTdmZjE2MWRlMzc0ZjFjZTMxZDVkMzQ2MzQwYmIyZmNiOTEuLjY4
ZTZkMDA1NmE3Y2MxMWJlODc0NTU0NWQxOTI5MTQzMDBmZjRkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFS
ZWYgZGF0YSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIo
Q0ZEYXRhUmVmIGRhdGEpCiB7CiAgICAgYXBwZW5kKGRhdGEpOwogfQpAQCAtNDEsNyArNDEsNyBA
QCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIC8vIFVzaW5nIEZv
dW5kYXRpb24gYWxsb3dzIGZvciBhbiBldmVuIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9u
IG9mIHRoaXMgZnVuY3Rpb24sCiAvLyBzbyBvbmx5IHVzZSB0aGlzIHZlcnNpb24gZm9yIG5vbi1G
b3VuZGF0aW9uLgogI2lmICFVU0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxDRkRhdGFSZWY+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKG1f
c2VnbWVudHMuc2l6ZSgpID09IDEpIHsKICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6Omdl
dF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11
dGFibGVEYXRhKSkKQEAgLTU1LDEyICs1NSwxMiBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB9CiAjZW5kaWYKIAotUmVmPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhUmVmIGRhdGEpCitSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YVJlZiBk
YXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihkYXRhKSk7CiB9
CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0Cit2
b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29u
c3QKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogbV9zZWdtZW50cykgewogICAgICAg
ICBpZiAoZW50cnkuc2VnbWVudC0+aGFzT25lUmVmKCkpIHsKQEAgLTcwLDkgKzcwLDkgQEAgdm9p
ZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKICAgICB9CiB9
CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCit2b2lkIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKIHsKLSAgICBBU1NFUlQo
IW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1
b3VzKTsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXpl
LCBEYXRhU2VnbWVudDo6Y3JlYXRlKGRhdGEpfSk7CiAgICAgICAgIG1fc2l6ZSArPSBDRkRhdGFH
ZXRMZW5ndGgoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaAppbmRleCAwNzk3ZGZiZThk
MDE4YmU2MzYxNzQ0YzU4Zjg5MmRkNTZlZDY4OWM1Li5jYmU4NzcxYTQ1ZDg2MmNiNWFiMDVlY2Ez
OTk5MjdlMDc4MzhmNTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKQEAgLTUxLDcgKzUx
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3Zl
cnJpZGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2Nr
SGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJv
b2wgaXNSZXF1aXJlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQppbmRleCA0MjkwZGIx
MjhkMDAwYTQwZWVmNzBmZDI5NDFkNjM0NDkwNDZkZTAzLi5hNWFiZTA2NjMxYTU2ZTA0NTYzNGY4
MWEyZTgzYTIwZmRiYjhmNzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQpAQCAtMTc1
LDEwICsxNzUsMTAgQEAgdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6ZmluaXNo
ZWRBZGRpbmdEYXRhKCkKICAgICBzZW1hcGhvcmUud2FpdCgpOwogfQogCi1SZWY8U2hhcmVkQnVm
ZmVyPiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29u
c3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRh
KCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5n
ZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3JlcGxh
Y2VtZW50RGF0YS5nZXQoKSk7CiB9CiAKIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciBOZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6dW5ibG9ja0hhbmRsZXIoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJv
bHNDb250ZW50RmlsdGVyLmgKaW5kZXggMDY4Y2RjYjM4M2Y0MjM2NWFjMzI2NGUyMjlhNmQ2M2Jj
MmI0YWJkNi4uNjc5YWU5MzI5NTE3ZTFmMzk0M2JhNTc2MmFjOGY1NmU4NjBjOGMyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENv
bnRyb2xzQ29udGVudEZpbHRlci5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAg
IHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsK
ICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
IHVuYmxvY2tIYW5kbGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXIubW0KaW5kZXggYjQ2MWY5NzUzNmRlM2ExNTgxM2E1ODI3Yjg2NzEzOGI5NmQ0ZjM4
Yy4uZTUxM2Q1NjViZGE2NzI5NmY5OThkZDk1MjJmZTFmOGJlMGU5NmQ3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXIubW0KQEAgLTEwOSwxMCArMTA5LDEwIEBAIHZvaWQgUGFyZW50YWxDb250
cm9sc0NvbnRlbnRGaWx0ZXI6OmZpbmlzaGVkQWRkaW5nRGF0YSgpCiAgICAgdXBkYXRlRmlsdGVy
U3RhdGUoKTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gUGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgpIGNvbnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGRpZEJsb2NrRGF0YSgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUobV9yZXBsYWNlbWVudERhdGEuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUobV9yZXBsYWNlbWVudERhdGEuZ2V0KCkpOwogfQogCiAjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGFzdGVib2FyZENvY29hLm1tCmluZGV4IDZmMjhlODI0MzYwY2NkMzA4NmMwMzE4ZmFl
NDA5OGYxZWRlMjhlMjUuLjdmYzBlODMxZjY5OTBjYzNiMTBiZDYxY2U5ZjZhZmJhYzliMDE1MWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2Eu
bW0KQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIE5TQml0bWFwSW1hZ2VGaWxlVHlwZSBiaXRtYXBQ
TkdGaWxlVHlwZSgpCiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi0vLyBNYWtpbmcgdGhp
cyBub24taW5saW5lIHNvIHRoYXQgV2ViS2l0IDIncyBkZWNvZGluZyBkb2Vzbid0IGhhdmUgdG8g
aW5jbHVkZSBTaGFyZWRCdWZmZXIuaC4KKy8vIE1ha2luZyB0aGlzIG5vbi1pbmxpbmUgc28gdGhh
dCBXZWJLaXQgMidzIGRlY29kaW5nIGRvZXNuJ3QgaGF2ZSB0byBpbmNsdWRlIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIuaC4KIFBhc3RlYm9hcmRXZWJDb250ZW50OjpQYXN0ZWJvYXJkV2ViQ29udGVu
dCgpID0gZGVmYXVsdDsKIFBhc3RlYm9hcmRXZWJDb250ZW50Ojp+UGFzdGVib2FyZFdlYkNvbnRl
bnQoKSA9IGRlZmF1bHQ7CiAKQEAgLTIxMSwxMSArMjExLDExIEBAIFZlY3RvcjxTdHJpbmc+IFBh
c3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5zYWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExBVEZP
Uk0oTUFDKQotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVk
QnVmZmVyJiB0aWZmQnVmZmVyKQorc3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
b252ZXJ0VElGRlRvUE5HKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCiB7Ci0g
ICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0
aERhdGE6IHRpZmZCdWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIGltYWdl
ID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1
ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIE5TRGF0
YSAqcG5nRGF0YSA9IFtpbWFnZSByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpiaXRtYXBQTkdGaWxl
VHlwZSgpIHByb3BlcnRpZXM6QHsgfV07Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHBuZ0RhdGEpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5n
RGF0YSk7CiB9CiAjZW5kaWYKIApAQCAtMzE2LDcgKzMxNiw3IEBAIFZlY3RvcjxTdHJpbmc+IFBh
c3RlYm9hcmQ6OnJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCkKICAgICByZXR1cm4gY29jb2FU
eXBlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZv
clR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJp
dHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmJ1ZmZlckZvclR5cGUodHlwZSwg
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQppbmRleCA5ZWUwYzBiNTVkNzk0YzJi
NjkwNTdiYmYzNjRhYmYxODM4YTliODUwLi4wOTk4NDQxOTFlYjQxYTNkOWFmOTUxZmNlNWEwYmQ2
MDVlODdmNzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFy
ZWRCdWZmZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFy
ZWRCdWZmZXJDb2NvYS5tbQpAQCAtMzUsMTEgKzM1LDExIEBACiAjaW1wb3J0IDx3dGYvY29jb2Ev
VmVjdG9yQ29jb2EuaD4KIAogQGludGVyZmFjZSBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSA6IE5T
RGF0YQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRl
Z2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQg
cG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOwogQGVu
ZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgewotICAgIFJlZlB0
cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7
CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CiAg
ICAgTlNVSW50ZWdlciBfcG9zaXRpb247CiAgICAgTlNVSW50ZWdlciBfc2l6ZTsKIH0KQEAgLTYx
LDcgKzYxLDcgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0t
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9z
aXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRh
U2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9u
OihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQogewogICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtODgsNDUgKzg4
LDQzIEBAIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShOU0RhdGEgKmRhdGEpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnJpZGdlX2Nhc3QoZGF0YSkpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGJyaWRnZV9j
YXN0KGRhdGEpKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRh
KQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQogewog
ICAgIHJldHVybiBhcHBlbmQoYnJpZGdlX2Nhc3QoZGF0YSkpOwogfQogCi1SZXRhaW5QdHI8TlNE
YXRhPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRh
PiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJl
dHVybiBicmlkZ2VfY2FzdChjcmVhdGVDRkRhdGEoKSk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFS
ZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFS
ZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAg
Y29tYmluZUludG9PbmVTZWdtZW50KCk7CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKICAg
ICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsK
LSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7CiAgICAgcmV0dXJuIGJyaWRnZV9j
YXN0KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkpOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQogewogICAgIGlmIChhdXRvIHJlc291cmNlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250
ZW50c09mRmlsZTpmaWxlUGF0aF0pCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShyZXNvdXJjZURhdGEpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHJlc291cmNlRGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJldGFpblB0
cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKK1JldGFp
blB0cjxOU0FycmF5PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkobV9zZWdtZW50cywgW10gKGF1dG8m
IHNlZ21lbnQpIHsKICAgICAgICAgcmV0dXJuIHNlZ21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRh
KCk7CiAgICAgfSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBEYXRhU2VnbWVu
dDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkNvcmVT
aGFyZWRCdWZmZXJEYXRhIGFsbG9jXSBpbml0V2l0aERhdGFTZWdtZW50Oip0aGlzIHBvc2l0aW9u
OjAgc2l6ZTpzaXplKCldKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCmluZGV4IGZiYzI4M2ZiYzMzNjliZjgyN2UzMTY5
OTRjNGM5NGUwNjM2M2NiODEuLjJkZTQxOTM0ZGExOTg3OWQ3NWMwZGY4YTg5ZTY0ZTU5OWMyOWFl
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TUluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNSW5zdGFuY2UuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBMb2dnZXI7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvbjsKIHN0cnVjdCBDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uOwogCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIENETUluc3RhbmNlQ2xpZW50
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50PiB7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+Q0RNSW5zdGFuY2VDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcm
LCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVucmVxdWVzdGVk
SW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIC8vIEphdmFTY3JpcHQncyBoYW5kbGUgdG8gYSBD
RE1JbnN0YW5jZSwgbXVzdCBiZSB1c2VkIGZyb20gdGhlCkBAIC05OCw3ICs5OCw3IEBAIHB1Ymxp
YzoKICAgICB9OwogCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlv
bihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50
aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwg
U3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2VydmVyQ2VydGlm
aWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikg
PSAwOwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
SW5zdGFuY2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1JbnN0YW5jZVNlc3Npb24uaAppbmRleCAzN2NkMDdjN2JmMmRjNzVlNDFmZDVjNmM3ZGVj
ZjQzZTEwMzllMTE0Li5kMjU5MjI1YmE5ZTAyYTY0ZDBjZWNkNjE1MWZkZjkzZjRmMjQ2NmE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0
YW5jZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1JbnN0YW5jZVNlc3Npb24uaApAQCAtNDMsMTYgKzQzLDE2IEBAIGNsYXNzIExvZ2dlcjsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50KCkgPSBkZWZhdWx0OwogCiAg
ICAgdXNpbmcgS2V5U3RhdHVzID0gQ0RNS2V5U3RhdHVzOwotICAgIHVzaW5nIEtleVN0YXR1c1Zl
Y3RvciA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIEtleVN0YXR1cz4+Owor
ICAgIHVzaW5nIEtleVN0YXR1c1ZlY3RvciA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+LCBLZXlTdGF0dXM+PjsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlS2V5
U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2VuZE1l
c3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9u
SWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB1c2luZyBQbGF0Zm9ybURpc3BsYXlJ
RCA9IHVpbnQzMl90OwogICAgIHZpcnR1YWwgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkg
PSAwOwpAQCAtNzgsMTMgKzc4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgU3VjY2VlZGVkLAogICAg
IH07CiAKLSAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJv
b2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgU3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+OwotICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2Fs
bGJhY2smJikgPSAwOworICAgIHVzaW5nIExpY2Vuc2VDYWxsYmFjayA9IENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgU3VjY2Vzc1ZhbHVl
IHN1Y2NlZWRlZCk+OworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpID0gMDsKIAogICAgIHVzaW5nIEtl
eVN0YXR1c1ZlY3RvciA9IENETUluc3RhbmNlU2Vzc2lvbkNsaWVudDo6S2V5U3RhdHVzVmVjdG9y
OwotICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjpwYWlyPE1lc3NhZ2VUeXBlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAgIHVzaW5nIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBzdGQ6Om9w
dGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZT4mJiBtZXNzYWdl
LCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxs
YmFjayYmKSA9IDA7CiAKICAgICBlbnVtIGNsYXNzIFNlc3Npb25Mb2FkRmFpbHVyZSA6IHVpbnQ4
X3QgewogICAgICAgICBOb25lLApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBDbG9zZVNlc3Npb25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT47CiAgICAg
dmlydHVhbCB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VT
ZXNzaW9uQ2FsbGJhY2smJikgPSAwOwogCi0gICAgdXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxs
YmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYsIHN0ZDo6b3B0
aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYsIFN1Y2Nlc3NWYWx1ZSk+OworICAgIHVzaW5nIFJl
bW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0YXR1
c1ZlY3RvciYmLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiwg
U3VjY2Vzc1ZhbHVlKT47CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFj
ayYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKaW5kZXggY2M2ZGM3ZjE0MGNkNjdkMmI3Yjg0
ZjZhYjJjMjg0MzE2ZGZkZGNjZi4uNTJhNjE0OGM4M2NkNTM5M2M4Zjg3NGVkODVhZDhiZjI3ZTVi
ZTUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVByaXZhdGUuaApAQCAtNzMsOCArNzMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGxvYWRBbmRJbml0aWFsaXplKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NlcnZl
ckNlcnRpZmljYXRlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXNz
aW9ucygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25z
dCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZm
ZXImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25z
ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNv
bnN0ID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCmluZGV4IGYyMThmOTc5MDRmYmJhNDlmMWViZGY0
OGUyMDVmZTczZGZhZmI2NDguLjRiYTc1YmYwMGQ5ZjcxM2I1YWZiYmE3OTM0MDE5NzE2Y2Q4ZjAz
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1Qcm94eS5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0
YXR1c1ZlY3RvciBLZXlTdG9yZTo6Y29udmVydFRvSlNLZXlTdGF0dXNWZWN0b3IoKSBjb25zdAog
ICAgIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c1ZlY3RvcjsK
ICAgICBrZXlTdGF0dXNWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1LZXlzKCkpOwog
ICAgIGZvciAoY29uc3QgYXV0byYga2V5IDogbV9rZXlzKQotICAgICAgICBrZXlTdGF0dXNWZWN0
b3IudW5jaGVja2VkQXBwZW5kKHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpLZXlTdGF0dXM+IHsga2V5LT5pZEFzU2hhcmVkQnVmZmVyKCksIGtleS0+c3Rh
dHVzKCkgfSk7CisgICAgICAgIGtleVN0YXR1c1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQoc3RkOjpw
YWlyPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlT
dGF0dXM+IHsga2V5LT5pZEFzU2hhcmVkQnVmZmVyKCksIGtleS0+c3RhdHVzKCkgfSk7CiAgICAg
cmV0dXJuIGtleVN0YXR1c1ZlY3RvcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKaW5kZXggYTU4NGI2Y2QyNjZiMDk4MDkwMjU0
ZDdkY2JkZGJmNjBkOTMzMWZiYi4uNDVmNmVlYmE0NzM3ZTJkZjM2ZDg1NmI3MjI0NTNmYWVkYWEz
YTM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1Qcm94eS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEtleUhhbmRsZShzdGF0dXMsIFdURk1vdmUoa2V5SUQpLCBXVEZNb3Zl
KGtleUhhbmRsZVZhbHVlKSkpOwogICAgIH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBpZEFzU2hh
cmVkQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9pZC5kYXRh
KCksIG1faWQuc2l6ZSgpKTsgfQorICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpZEFz
U2hhcmVkQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG1faWQuZGF0YSgpLCBtX2lkLnNpemUoKSk7IH0KIAogICAgIGJvb2wgdGFrZVZhbHVlSWZE
aWZmZXJlbnQoS2V5SGFuZGxlVmFsdWVWYXJpYW50JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAppbmRleCA1
YmViY2I0OWFhOGViOWEyYmIwNzExZWFlMDgwZjM3N2UyMmI5ODM0Li5mY2E2ZjIzODhhNTZhNmEx
YzcyNDcwZTVhNDZmZGQyOGYwNzM3NTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKQEAgLTM4LDcgKzM4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgQ0RNVXRpbGl0aWVzIHsKIAotUmVm
UHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQorUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBGYWlsIG9uIGxhcmdlIGJ1ZmZlcnMg
d2hvc2Ugc2l6ZSBkb2Vzbid0IGZpdCBpbnRvIGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIuCiAg
ICAgc2l6ZV90IHNpemUgPSBidWZmZXIuc2l6ZSgpOwpAQCAtNDYsNyArNDYsNyBAQCBSZWZQdHI8
SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250
ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0
cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07
CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1
ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oCmluZGV4IDc0ZjUx
NWIwYmQyYTg3MTY4ZWVmMjRiMThmOTVkZWFiZWU4MjhlNmMuLmZjZjViZGRhN2M1OTdkM2MzYWMz
NDllZTE3ODllNGFkNmUwYzk1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oCkBAIC0zNSwxMSArMzUsMTEgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgQ0RNVXRpbGl0aWVzIHsKIAotUmVmUHRyPEpT
T046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworUmVmUHRy
PEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKIAogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IGRkMzQ1N2Jm
ZGU4YzkyMTg3N2RkN2I5ODJlOTkyMWZjYzBmZWQyZWQuLmRjMzhkMjg2ZjFlMTFiOTI4MjJlMTAz
MWI5YzAwNzI5Yzk3ZThjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTEz
MCw3ICsxMzAsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUxpY2Vuc2VSZWxlYXNlQWNrbm93bGVkZ2Vt
ZW50Rm9ybWF0KGNvbnN0IEpTT046Ok9iamVjdCYgcm9vdCkKIC8vIF07CiAKIC8vIFRoaXMgZnVu
Y3Rpb24gZXh0cmFjdHMgdGhlIEtleUlkcyBjb3VudCBhbmQgdGhlIGxvY2F0aW9uIG9mIHRoZSBm
aXJzdCBLZXlJZCBpbiBpbml0RGF0YSBidWZmZXIuCi1zdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVk
LCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNp
Z25lZD4ga2V5SWRzTWFwKDAsIDApOwogCkBAIC0xMzgsNyArMTM4LDggQEAgc3RhdGljIHN0ZDo6
cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5p
dERhdGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUo
KSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJu
IGtleUlkc01hcDsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0
byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1
dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0
RGF0YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAg
IHVuc2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTE4OCwxNSArMTg5LDE1IEBAIHN0YXRpYyBzdGQ6
OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0lu
aXREYXRhKGNvbnN0CiB9CiAKIC8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBpbml0RGF0
YSBzaGFyZWRCdWZmZXIgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRhLgotc3RhdGljIGJvb2wgaXND
ZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBib29sIGlz
Q2VuY0luaXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewog
ICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCA9IGV4dHJhY3RLZXlp
ZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoaW5pdERhdGEpOwogICAgIHJldHVybiAoKGtleUlk
c01hcC5maXJzdCkgJiYgKGtleUlkc01hcC5zZWNvbmQpKTsKIH0KIAotc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgaW5pdERhdGEpCitzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJhY3RL
ZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXRE
YXRhKQogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAKICAgICBzdGQ6OnBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9t
Q2VuY0luaXREYXRhKGluaXREYXRhKTsKICAgICB1bnNpZ25lZCBrZXlJZENvdW50ID0ga2V5SWRz
TWFwLmZpcnN0OwpAQCAtMjA0LDkgKzIwNSwxMCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAog
CiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRhLgogICAg
IGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCi0gICAgICAgIHJldHVybiBrZXlJZHM7CisgICAg
ICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCi0gICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRh
dGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1
b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogCiAg
ICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRz
QXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yMjQsMTcgKzIyNiwxNyBAQCBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBpbml0RAogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1v
dmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05T
dHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29u
RGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpz
b25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFr
ZSgpOwogfQogCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1J
bml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGljIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtl
eUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBr
ZXlJZHM7CiAKICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIFdlYk0gaW5pdERh
dGEuCiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBrZXlJZHM7
CisgICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBvYmplY3QgPSBKU09O
OjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6
Y3JlYXRlKCk7CkBAIC0yNDUsMTIgKzI0NywxMiBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQog
ICAgIC8vIFRoZSBmb3JtYXQgaXMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHRoZSBmb2xsb3dp
bmcgbWVtYmVyczoKICAgICAvLyAia2lkcyIKICAgICAvLyBBbiBhcnJheSBvZiBrZXkgSURzLiBF
YWNoIGVsZW1lbnQgb2YgdGhlIGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5jb2Rpbmcgb2YgdGhl
IG9jdGV0IHNlcXVlbmNlIGNvbnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4KLSAgICBrZXlJZHNB
cnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5kYXRhKCks
IGluaXREYXRhLnNpemUoKSkpOworICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVS
TEVuY29kZVRvU3RyaW5nKGluaXREYXRhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERh
dGEuc2l6ZSgpKSk7CiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJ
ZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygp
LnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxl
bmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEu
ZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9
CiAKIENETUZhY3RvcnlDbGVhcktleSYgQ0RNRmFjdG9yeUNsZWFyS2V5OjpzaW5nbGV0b24oKQpA
QCAtMzg4LDcgKzM5MCw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Np
b25zKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlQ2xlYXJL
ZXk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25z
dCBTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAorYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6
OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAgICAvLyBWYWxpZGF0
ZSB0aGUgaW5pdERhdGEgYnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0IGluIGtleWlkcyBjYXNlLgog
ICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJrZXlp
ZHMiKSAmJiBDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdChpbml0RGF0YSkpCkBAIC00MDUs
NyArNDA3LDcgQEAgYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzYW5pdGl6ZVJlc3Bv
bnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIC8vIFZhbGlk
YXRlIHRoZSByZXNwb25zZSBidWZmZXIgYXMgYW4gSlNPTiBvYmplY3QuCiAgICAgaWYgKCFDRE1V
dGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdChyZXNwb25zZSkpCkBAIC00MzEsNyArNDMzLDcgQEAg
dm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXIKICAgICBjYWxsYmFjayhzdWNjZWVkZWQpOwogfQogCi12
b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRC
dWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZUNs
ZWFyS2V5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgLy8gUmVqZWN0IHNldHRpbmcg
YW55IHNlcnZlciBjZXJ0aWZpY2F0ZS4KICAgICBjYWxsYmFjayhGYWlsZWQpOwpAQCAtNDUzLDcg
KzQ1NSw3IEBAIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNlQ2xlYXJLZXk6
OmNyZWF0ZVNlc3Npb24oKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ0RNSW5zdGFuY2VTZXNz
aW9uQ2xlYXJLZXkoKnRoaXMpKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktl
eTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7
CiAgICAgc3RhdGljIHVpbnQzMl90IHNfc2Vzc2lvbklkVmFsdWUgPSAwOwogICAgICsrc19zZXNz
aW9uSWRWYWx1ZTsKQEAgLTQ3NSw3ICs0NzcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNs
ZWFyS2V5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaQog
ICAgICAgICB9KTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRl
TGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJl
c3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICNpZiBMT0dfRElT
QUJMRUQKICAgICAvLyBXZSBvbmx5IHVzZSB0aGUgc2VzaW9uIElEIGZvciBkZWJ1ZyBsb2dnaW5n
LiBUaGUgdmVyYm9zZSBwcmVwcm9jZXNzb3IgY2hlY2tzIGFyZSBiZWNhdXNlCkBAIC01NjYsNyAr
NTY4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKICAgICBBU1NFUlQoc2Vzc2lvbklkID09
IG1fc2Vzc2lvbklEKTsKIAogICAgIGF1dG8gZGlzcGF0Y2hDYWxsYmFjayA9Ci0gICAgICAgIFt3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCAmY2FsbGJhY2tdKEtleVN0YXR1c1ZlY3RvciYm
IGtleVN0YXR1c1ZlY3Rvciwgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBtZXNz
YWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VzcykgeworICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfSwgJmNhbGxiYWNrXShLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNWZWN0b3Is
IHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIFN1
Y2Nlc3NWYWx1ZSBzdWNjZXNzKSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKAogICAg
ICAgICAgICAgICAgIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqd2Vha1RoaXMgfSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKSwga2V5U3RhdHVzVmVjdG9yID0gV1RGTW92ZShrZXlTdGF0dXNW
ZWN0b3IpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc3VjY2Vzc10oKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTU3OSw3ICs1ODEsNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgTGljZQogICAgIC8vIENvbnN0cnVjdCB0aGUgS2V5U3RhdHVzVmVj
dG9yIG9iamVjdCwgcmVwcmVzZW50aW5nIHJlbGVhc2VkIGtleXMsIGFuZCB0aGUgbWVzc2FnZSBp
biB0aGUKICAgICAvLyAnbGljZW5zZSByZWxlYXNlJyBmb3JtYXQuCiAgICAgS2V5U3RhdHVzVmVj
dG9yIGtleVN0YXR1c1ZlY3RvciA9IG1fa2V5U3RvcmUuYWxsS2V5c0FzKENETUluc3RhbmNlU2Vz
c2lvbjo6S2V5U3RhdHVzOjpSZWxlYXNlZCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWVz
c2FnZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZTsKICAgICB7
CiAgICAgICAgIC8vIENvbnN0cnVjdCBKU09OIHRoYXQgcmVwcmVzZW50cyB0aGUgJ2xpY2Vuc2Ug
cmVsZWFzZScgZm9ybWF0LCBjcmVhdGluZyBhICdraWRzJyBhcnJheQogICAgICAgICAvLyBvZiBi
YXNlNjRVUkwtZW5jb2RlZCBrZXkgSURzIGZvciBhbGwga2V5cyB0aGF0IHdlcmUgYXNzb2NpYXRl
ZCB3aXRoIHRoaXMgc2Vzc2lvbi4KQEAgLTU5MywxNCArNTk1LDE0IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uQ2xlYXJLZXk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBMaWNlCiAgICAgICAgICAgICByb290T2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1v
dmUoYXJyYXkpKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIENvcHkgdGhlIEpTT04gZGF0YSBp
bnRvIGEgU2hhcmVkQnVmZmVyIG9iamVjdC4KKyAgICAgICAgLy8gQ29weSB0aGUgSlNPTiBkYXRh
IGludG8gYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIG9iamVjdC4KICAgICAgICAgU3RyaW5nIG1l
c3NhZ2VTdHJpbmcgPSByb290T2JqZWN0LT50b0pTT05TdHJpbmcoKTsKICAgICAgICAgQ1N0cmlu
ZyBtZXNzYWdlQ1N0cmluZyA9IG1lc3NhZ2VTdHJpbmcudXRmOCgpOwotICAgICAgICBtZXNzYWdl
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUobWVzc2FnZUNTdHJpbmcuZGF0YSgpLCBtZXNzYWdlQ1N0
cmluZy5sZW5ndGgoKSk7CisgICAgICAgIG1lc3NhZ2UgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUobWVzc2FnZUNTdHJpbmcuZGF0YSgpLCBtZXNzYWdlQ1N0cmluZy5sZW5ndGgoKSk7
CiAgICAgfQogCiAgICAgbV9rZXlTdG9yZS51bnJlZkFsbEtleXMoKTsKLSAgICBkaXNwYXRjaENh
bGxiYWNrKFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgUmVmPFNoYXJlZEJ1ZmZlcj4oKm1lc3Nh
Z2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CisgICAgZGlzcGF0Y2hDYWxsYmFjayhXVEZN
b3ZlKGtleVN0YXR1c1ZlY3RvciksIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPigqbWVzc2Fn
ZSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKIH0KIAogdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25DbGVhcktleTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1D
bGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuaAppbmRleCA5YzA3NDdkYzFiZDhlNjdmM2JhODY0ZDliODExMzM3NjI1
YzhhNjc5Li45ZTI3ZmU5MTJjNGRhMDY3ZmIyNmNhZmJjN2Y2YTY1MWRhNDc1MjhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1D
bGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2Ns
ZWFya2V5L0NETUNsZWFyS2V5LmgKQEAgLTg2LDggKzg2LDggQEAgcHVibGljOgogICAgIHZvaWQg
bG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlm
aWNhdGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3Qg
ZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25z
dCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
YW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJv
b2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25z
dCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29u
c3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiB9OwogCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoK
ICAgICAvLyBDRE1JbnN0YW5jZQogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlv
blR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkNsZWFyS2V5
OyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJz
aXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5h
bDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
KCkgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vz
c2lvbigpIGZpbmFsOwpAQCAtMTA5LDggKzEwOSw4IEBAIGNsYXNzIENETUluc3RhbmNlU2Vzc2lv
bkNsZWFyS2V5IGZpbmFsIDogcHVibGljIENETUluc3RhbmNlU2Vzc2lvblByb3h5IHsKIHB1Ymxp
YzoKICAgICBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleShDRE1JbnN0YW5jZUNsZWFyS2V5JiBw
YXJlbnQpCiAgICAgICAgIDogQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkocGFyZW50KSB7IH0KLSAg
ICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYm
KSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsK
KyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNl
bnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmlu
YWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2Fs
bGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcm
LCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJp
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVy
aWMuY3BwCmluZGV4IDdiZjAwODMyYTQwMmVlYWQ1NzIzY2E0MjhlOWFmYjdjYzQxYTBjNTguLjdh
YTk0YjRiNGJjMmNiZjkyMmFhZGE1ODg3NTczZDc1ZDdjMGJjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcApA
QCAtMTM5LDkgKzEzOSw5IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5kQXJyYXkoKQog
ICAgIG1fZW5jb2RlciA8PCBUeXBlOjpFbmRBcnJheTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKIHsK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2Vu
Y29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKaW5kZXggZTk2OGU5ODVjN2VlY2VmZTQz
NWFhOTIwNWM0NGRkMzVhZWQ4ZTBkMC4uZmRhYmRjZDQzMjA3OGVhNDE1ODQxMjRhYTg5ZTAxYjY3
Y2ExYWQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXll
ZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBLZXllZEVuY29kZXJHZW5lcmljIGZpbmFsIDogcHVibGljIEtleWVkRW5jb2Rl
ciB7CiBwdWJsaWM6CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiBwcml2YXRl
OgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7Cisg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50
OF90Kiwgc2l6ZV90KSBvdmVycmlkZTsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5n
JiBrZXksIGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKaW5kZXggNzBkMjRjMTE5M2Y4ZTVjNzBkMWQzOTg3YzVl
MDA5OGNiNmMwMGJmMi4uZTZkNzhkNTI4M2VmOGU1M2M3YmRiMGJiODA0ZTllMjdlMTBhMTc5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIu
Y3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckdsaWI6OmVuZEFycmF5
KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAg
IGdfYXNzZXJ0KG1fdmFyaWFudEJ1aWxkZXJTdGFjay5sYXN0KCkgPT0gJm1fdmFyaWFudEJ1aWxk
ZXIpOwogICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZhcmlhbnQgPSBnX3ZhcmlhbnRfYnVpbGRlcl9l
bmQoJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRhID0gZ192YXJp
YW50X2dldF9kYXRhX2FzX2J5dGVzKHZhcmlhbnQuZ2V0KCkpOwotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19n
ZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5
dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19n
ZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5
dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xp
Yi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKaW5k
ZXggZTU2NDJiY2Y2NzBjZTI1OTlmYzA0ZGY3MjllMmI0YzFmODIxMWYyZS4uY2UxMzY0OTZjNGUx
M2VhYzE0OWVhNjE4OTVjNTQxNDBmZmQ1OTZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgog
ICAgIH5LZXllZEVuY29kZXJHbGliKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAg
IHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1
ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJH
bGliLmNwcAppbmRleCA4YThjMTBiNzAyNGNmZTAzOGU5ZmE3YjcxNWJlMjY4ODlmYzA1ZTI4Li5k
OGYwNGRkNGU4ZGUwMWIwZjljMzRhYTdkYmRlNTU2Y2FjNjg1MjAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAgLTI2LDI4ICsy
NiwyOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVm
ZmVyKEdCeXRlcyogYnl0ZXMpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKEdCeXRlcyogYnl0ZXMpCiB7CiAgICAgQVNTRVJUKGJ5dGVzKTsKICAgICBtX3Np
emUgPSBnX2J5dGVzX2dldF9zaXplKGJ5dGVzKTsKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAs
IERhdGFTZWdtZW50OjpjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+KGJ5dGVzKSkgfSk7CiB9CiAKLVJl
ZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMpCitSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdC
eXRlcyogYnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJ5
dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihi
eXRlcykpOwogfQogCi1HUmVmUHRyPEdCeXRlcz4gU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMo
KSBjb25zdAorR1JlZlB0cjxHQnl0ZXM+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdC
eXRlcygpIGNvbnN0CiB7CiAgICAgcmVmKCk7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0g
YWRvcHRHUmVmKGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBbXShn
cG9pbnRlciBkYXRhKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEp
LT5kZXJlZigpOwotICAgIH0sIGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpKTsKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigp
OworICAgIH0sIGNvbnN0X2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CiAg
ICAgcmV0dXJuIGJ5dGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjEsNyArNjEsNyBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNpemUpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNp
emUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDE3YjM1MmY4OTc0MjcyOThmNWRkMGI4ZGZiOTY5MDc4
Nzk1ZDMzN2MuLmIxMzYzNDRlNjBmNzNmYzEwMDU4ZWJmZTNjYjRlMGI2M2Y0NTgyZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC02OCw3ICs2OCw3IEBA
IFJlZjxGb250PiBGb250OjpjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1E
YXRhLCBPcmlnaW4gb3JpZ2luLCBGb250CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udChw
bGF0Zm9ybURhdGEsIG9yaWdpbiwgaW50ZXJzdGl0aWFsLCB2aXNpYmlsaXR5LCBvcmllbnRhdGlv
bkZhbGxiYWNrLCBpZGVudGlmaWVyLCBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpKTsKIH0KIAot
UmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwg
Rm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwg
Ym9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRh
KQorUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBm
b250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5
bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZv
clZlcnRpY2FsRGF0YSkKIHsKICAgICBib29sIHdyYXBwaW5nOwogICAgIGF1dG8gY3VzdG9tRm9u
dERhdGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShmb250RmFjZURhdGEuZ2V0
KCksIHsgfSwgd3JhcHBpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5o
CmluZGV4IDlmYzRlYTgyZWJiYzc3ZWFkOTAxMDg1NDM4MDgyOWUxNWJiYWI2ZjQuLmExYmFkMTU4
OTAwODgyZjFmMDIyNzM4YzU4NGJjMzcyYTU2YTZjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250LmgKQEAgLTU5LDcgKzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgRm9udENhY2hlOwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgR2x5cGhQYWdl
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
c3RydWN0IEdseXBoRGF0YTsKIApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZp
c2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3Jp
ZW50YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0
aWNhbERhdGEsIEludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sCiAgICAgICAgIFZpc2li
aWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50
YXRpb25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyPiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250
PiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwg
ZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMs
IEZvbnRDYWNoZSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZv
bnQ+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZv
bnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50
aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IH5Gb250KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRQbGF0Zm9ybURhdGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRl
ODRiMjE5Li5lMjM4NGI5ZWU0ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5o
CkBAIC03NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
IAogLy8gVGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQs
IG5vIGluc3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4K
IGNsYXNzIEZvbnRQbGF0Zm9ybURhdGEgewpAQCAtMjI0LDEzICsyMjMsMTMgQEAgcHVibGljOgog
I2VuZGlmCiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1
aW50MzJfdCB0YWJsZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1P
cGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50
MzJfdCB0YWJsZSkgY29uc3Q7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAog
ICAgIHN0cnVjdCBDcmVhdGlvbkRhdGEgewotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250
RmFjZURhdGE7CisgICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURh
dGE7CiAgICAgICAgIFN0cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikK
ICAgICAgICAgUmVmPEZvbnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggNGE4NTNlYjY0OTUzZDRh
ZTQ4MzRmODdjNTQ4N2FjZDM2NGM1N2Q4MS4uZTMyYTM2YzYwNzYxOTIxNjhjNmEzNzkzMThmNzhh
ZTE3ODljNDgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNw
cApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgSW1hZ2U6OmlzUG9zdFNjcmlwdFJlc291cmNlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgdXJsKQogfQogCiAKLUVuY29kZWREYXRh
U3RhdHVzIEltYWdlOjpzZXREYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCitFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZTo6c2V0RGF0YShSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsK
ICAgICBtX2VuY29kZWRJbWFnZURhdGEgPSBXVEZNb3ZlKGRhdGEpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCA2YTA4MTY5NTdhYTkzYzQxMWE1NmNkNGMy
YmMyMGRkNmQ5MDQ0ZGVjLi42NTVkZmU3M2NmZjZhZDFkMDRmNDhiYzIwMTllYmI4MDQxN2Q2MTM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTcwLDcgKzcw
LDcgQEAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZs
b2F0U2l6ZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgTGVuZ3RoOwogCiAvLyBUaGlzIGNs
YXNzIGdldHMgbm90aWZpZWQgd2hlbiBhbiBpbWFnZSBjcmVhdGVzIG9yIGRlc3Ryb3lzIGRlY29k
ZWQgZnJhbWVzIGFuZCB3aGVuIGl0IGFkdmFuY2VzIGFuaW1hdGlvbiBmcmFtZXMuCkBAIC0xMjQs
NyArMTI0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4g
aG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIHZpcnR1YWwgSW1h
Z2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIEltYWdlT3JpZW50YXRp
b246OkZyb21JbWFnZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgRW5jb2RlZERhdGFTdGF0dXMg
c2V0RGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFbmNvZGVkRGF0YVN0YXR1cyBzZXREYXRhKFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAg
ICB2aXJ0dWFsIEVuY29kZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2VkKGJvb2wgLyphbGxEYXRhUmVj
ZWl2ZWQqLykgeyByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OlVua25vd247IH0KIAogICAgIHZp
cnR1YWwgU3RyaW5nIHV0aSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9IC8vIG51bGwgc3Ry
aW5nIGlmIHVua25vd24KQEAgLTEzMyw4ICsxMzMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgZGVzdHJveURlY29kZWREYXRhKGJvb2wgZGVzdHJveUFsbCA9IHRydWUpID0gMDsKIAot
ICAgIFNoYXJlZEJ1ZmZlciogZGF0YSgpIHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQo
KTsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5j
b2RlZEltYWdlRGF0YS5nZXQoKTsgfQorICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEo
KSB7IHJldHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRh
LmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
KCk7CiAKQEAgLTIwOSw3ICsyMDksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBDb2xvciBz
aW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvcigpOyB9CiAKIHByaXZh
dGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVkSW1hZ2VEYXRhOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2VuY29kZWRJbWFnZURhdGE7CiAgICAgSW1h
Z2VPYnNlcnZlciogbV9pbWFnZU9ic2VydmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcj4g
bV9hbmltYXRpb25TdGFydFRpbWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4IDRkZGI2ZGY4M2VjYjhiOWI3
OTU3ZjQ2NjRlMTg0ZjAwODFlODEwMTEuLmRlMzNmMWFmNDEyZGMwOGIyYjk2MWExOTQ5NDVjOWNj
OTBhYTY2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCYWNraW5nU3RvcmUuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgYnVmZmVyLmdyb3coYnVmZmVyU2l6ZSk7Ci0gICAg
ICAgIG1fcGl4ZWxzID0gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUo
YnVmZmVyKSk7CisgICAgICAgIG1fcGl4ZWxzID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX3BpeGVsc1B0ciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVs
cy0+ZGF0YSgpKSk7CiAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAgIG1fZnJhbWVSZWN0
ID0gSW50UmVjdChJbnRQb2ludCgpLCBtX3NpemUpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHByaXZh
dGU6CiAgICAgewogICAgICAgICBBU1NFUlQoIW1fc2l6ZS5pc0VtcHR5KCkgJiYgIWlzT3ZlclNp
emUobV9zaXplKSk7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIgeyBvdGhlci5tX3Bp
eGVscy0+ZGF0YSgpLCBvdGhlci5tX3BpeGVscy0+c2l6ZSgpIH07Ci0gICAgICAgIG1fcGl4ZWxz
ID0gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgICAgIG1fcGl4ZWxzID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNy
ZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7
CiAgICAgfQogCkBAIC0yMzMsNyArMjMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIFBh
Y2tlZENvbG9yOjpBUkdCIHsgcmVzdWx0IH0udmFsdWU7CiAgICAgfQogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fcGl4ZWxzOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9waXhlbHM7CiAgICAgdWludDMyX3QqIG1fcGl4
ZWxzUHRyIHsgbnVsbHB0ciB9OwogICAgIEludFNpemUgbV9zaXplOwogICAgIEludFJlY3QgbV9m
cmFtZVJlY3Q7IC8vIFRoaXMgd2lsbCBhbHdheXMganVzdCBiZSB0aGUgZW50aXJlIGJ1ZmZlciBl
eGNlcHQgZm9yIEdJRiBhbmQgUE5HIGZyYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggMDg2OWU5OWEwMDg4NmY3Y2QxMjE4
NmZlMzE2MWRlMDQ3ZmE1MTM2MS4uN2M1NDk0N2Y0ZDgxNDA4NTU5Y2M0NWM0YWM0OWExOWI5ZmM4
NmY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VE
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURl
Y29kZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyOjpjbGVhckZhY3Rv
cmllcygpCiB9CiAjZW5kaWYKIAotUmVmUHRyPEltYWdlRGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpj
cmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCitSZWZQdHI8SW1hZ2VEZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0
ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBB
bHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgVU5VU0VEX1BBUkFNKG1pbWVUeXBlKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRl
eCBhMWEwOGFkYzE3NWQ0NGJhYTQ0MmU0NGE5NGFhOTY3YTA0ZjVmNjA3Li42YThmZmNiNjBmYzEx
NTZlYjg0ODc2ZGVmYjA3Y2JjMGIxMTk4NDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaApAQCAtMzcsMTIgKzM3LDEyIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgSW1hZ2VEZWNvZGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPEltYWdlRGVjb2Rlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2Rlcigp
ID0gZGVmYXVsdDsKIAogICAgIGVudW0gY2xhc3MgTWVkaWFUeXBlIHsKQEAgLTkxLDcgKzkxLDcg
QEAgcHVibGljOgogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICB1c2luZyBTdXBwb3J0c01l
ZGlhVHlwZUZ1bmMgPSBGdW5jdGlvbjxib29sKE1lZGlhVHlwZSk+OwogICAgIHVzaW5nIENhbkRl
Y29kZVR5cGVGdW5jID0gRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT47Ci0gICAgdXNpbmcg
Q3JlYXRlSW1hZ2VEZWNvZGVyRnVuYyA9IEZ1bmN0aW9uPFJlZlB0cjxJbWFnZURlY29kZXI+KFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbik+OworICAgIHVzaW5nIENyZWF0ZUltYWdlRGVjb2RlckZ1bmMgPSBGdW5jdGlv
bjxSZWZQdHI8SW1hZ2VEZWNvZGVyPihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJiwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKT47CiAKICAgICBz
dHJ1Y3QgSW1hZ2VEZWNvZGVyRmFjdG9yeSB7CiAgICAgICAgIFN1cHBvcnRzTWVkaWFUeXBlRnVu
YyBzdXBwb3J0c01lZGlhVHlwZTsKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5n
T3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpID0g
MDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNB
bGxEYXRhUmVjZWl2ZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJhbWVC
dWZmZXJDYWNoZShzaXplX3QpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IGQ4MWM0ODAxOTI4NDZkZDdlMzIxYzJkZmJm
YmYxZTBjMjBkYWE2NzEuLjMwNzc0MzMxNWE0MWVjYTFjOWIyYmM3NzNkMDc5ZWU1ZDQzYmFmNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHAKQEAgLTcyLDcgKzcyLDcgQEAgSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJjZSgpCiAgICAgQVNT
RVJUKCZtX3J1bkxvb3AgPT0gJlJ1bkxvb3A6OmN1cnJlbnQoKSk7CiB9CiAKLWJvb2wgSW1hZ2VT
b3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRhKQorYm9vbCBJ
bWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhKQogewogICAgIGlmICghZGF0YSB8fCBpc0RlY29kZXJBdmFpbGFibGUoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC05Niw3ICs5Niw3IEBAIGJvb2wgSW1hZ2VTb3VyY2U6OmVuc3Vy
ZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmICghZGF0YSB8
fCAhZW5zdXJlRGVjb2RlckF2YWlsYWJsZShkYXRhKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA0
LDEzICsxMDQsMTMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIG1fZGVjb2Rlci0+c2V0RGF0YSgqZGF0YSwg
YWxsRGF0YVJlY2VpdmVkKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6cmVzZXREYXRhKFNoYXJl
ZEJ1ZmZlciogZGF0YSkKK3ZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0RGF0YShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBkYXRhKQogewogICAgIG1fZGVjb2RlciA9IG51bGxwdHI7CiAgICAgc2V0RGF0
YShkYXRhLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKIH0KIAotRW5jb2RlZERhdGFTdGF0dXMgSW1h
Z2VTb3VyY2U6OmRhdGFDaGFuZ2VkKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCitFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZVNvdXJjZTo6ZGF0YUNoYW5nZWQoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgc2V0
RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGNsZWFyTWV0YWRhdGEoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IDhhZjUw
ODBhMDBhOTkxNjA4MGYxZjBiMjc3MDczYzJhODUzNDUyNTguLjgxNGYwZTEyZWJhYTQ4Zjg2YWNi
NTIxOTczYzMxZDVkMzgyZjZmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBCaXRtYXBJbWFnZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEltYWdl
RGVjb2RlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIEltYWdlU291cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElt
YWdlU291cmNlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEltYWdlU291cmNlPiB7CiAgICAgZnJp
ZW5kIGNsYXNzIEJpdG1hcEltYWdlOwpAQCAtNTYsOSArNTYsOSBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlU291cmNlKFdURk1vdmUobmF0aXZlSW1hZ2UpKSk7
CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpOwotICAgIHZvaWQgcmVzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSk7Ci0g
ICAgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2b2lkIHJlc2V0RGF0YShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hh
bmdlZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7
CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpOwogCiAgICAgdW5zaWduZWQgZGVjb2RlZFNp
emUoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZWRTaXplOyB9CkBAIC0xNTQsNyArMTU0LDcgQEAg
cHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFQgZmlyc3RGcmFtZU1ldGFk
YXRhQ2FjaGVJZk5lZWRlZChUJiBjYWNoZWRWYWx1ZSwgTWV0YWRhdGFUeXBlLCBUIChJbWFnZUZy
YW1lOjoqZnVuY3RvcikoKSBjb25zdCwgSW1hZ2VGcmFtZTo6Q2FjaGluZywgY29uc3Qgc3RkOjpv
cHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgPSB7IH0pOwogCi0gICAgYm9vbCBlbnN1cmVEZWNv
ZGVyQXZhaWxhYmxlKFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgYm9vbCBlbnN1cmVEZWNvZGVy
QXZhaWxhYmxlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpOwogICAgIGJvb2wgaXNEZWNv
ZGVyQXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVyOyB9CiAgICAgdm9pZCBkZXN0
cm95RGVjb2RlZERhdGEoc2l6ZV90IGZyYW1lQ291bnQsIHNpemVfdCBleGNsdWRlRnJhbWUpOwog
ICAgIHZvaWQgZGVjb2RlZFNpemVDaGFuZ2VkKGxvbmcgbG9uZyBkZWNvZGVkU2l6ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKaW5kZXggM2U1OWVhOWQwOGRk
MWM5YmVlMjNiYTNmNjM1Y2YzNWJmYzI4MjI5Mi4uNWFkZTdlZjY5ZTI5YTc3ZjJiODQwOTI5ZTY0
YmUwYzQ0ZTUxNjQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTW9kZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVs
LmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1v
ZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlw
ZSwgVVJMIHVybCkKK1JlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTW9kZWwoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdU
Rk1vdmUodXJsKSkpOwogfQogCi1Nb2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwg
U3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorTW9kZWw6Ok1vZGVsKFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0
YShXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAg
ICAsIG1fdXJsKFdURk1vdmUodXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5oCmluZGV4IDA2NTgxMzM3OWYxMTI1NWQyZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0ZTEuLjkx
NTYwYWU4OGZhNjRjMmEwYzEwMDE0MTRmMzI0MWNlMDA1NmExZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbD4g
ewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShS
ZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5n
LCBVUkwpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5Nb2RlbCgpOwogCi0gICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICBjb25z
dCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgCkBAIC00OSw5ICs0OSw5
IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1v
ZGVsPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJl
ZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKIAotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IG1fZGF0YTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOwog
ICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgIFVSTCBtX3VybDsKIH07CkBAIC02MCw3ICs2MCw3
IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIE1vZGVsOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4obV9k
YXRhLT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+
ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0
aERhdGEobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAx
KTsKICAgICBlbmNvZGVyIDw8IG1fbWltZVR5cGU7CiAgICAgZW5jb2RlciA8PCBtX3VybDsKIH0K
QEAgLTkzLDcgKzkzLDcgQEAgUmVmUHRyPE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIE1vZGVsOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdU
Rk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CisgICAgcmV0dXJuIE1vZGVsOjpjcmVh
dGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3Zl
KCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOwogfQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFS
ZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXggNzQ1OWM1ODU4ZDI0ODdlZjJjNWZkMzcxNzM5
ODZiMzM3MzRlYzI4YS4uOGZjZGUzN2NmM2NjZWE1NDk3Yzc2MjgxODVhMzkwODBkYmYyNDk4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgeyBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRhdGFT
ZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQg
bG9uZyBsb25nKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2Fj
aGVkUmF3UmVzb3VyY2VDbGllbnQgdXNlcyBTaGFyZWRCdWZmZXIuCi0gICAgdmlydHVhbCB2b2lk
IGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHBsYXRmb3JtLCBjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IGRhdGFSZWNlaXZlZChwbGF0Zm9ybSwgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAvLyBUaGlzIG1ldGhvZCBz
aG91bGQgYmUgcmVtb3ZlZCBvbmNlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHVzZXMgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlci4KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYgcGxhdGZvcm0sIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
IHsgZGF0YVJlY2VpdmVkKHBsYXRmb3JtLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSwgbGVuZ3RoKSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFp
bGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0
ZS5jcHAKaW5kZXggNjg3Yzc4YzI4MWNhMDQ1NDA0ODVjY2JhZTAxZDg0Y2Q2MDMzNzI2My4uOGM3
M2M0MGJiNWI5ZmVhZDcwZjhjZmE2MGY5YzYzODU4NDdmMWUwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAK
QEAgLTEzMTgsNyArMTMxOCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2
ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYgb3JpZ2luYWxTYW1wbGUpCiAgICAgdXBkYXRlSGln
aGVzdFByZXNlbnRhdGlvblRpbWVzdGFtcCgpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGU6OmFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZTo6YXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsK
ICAgICBhcHBlbmQoYnVmZmVyLT5leHRyYWN0RGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAppbmRleCBl
Zjg2YTQ3MzY5MzcxYzgzZTg4M2IyOWJiYjZiOWFiOTZlY2E1ZjFkLi42YjdkOTVlNTJiOWRmMGM4
MWFmM2JlMWQ2ZDlmM2M4ZWQzOTU0MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCkBAIC00OSw3ICs0OSw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRpbWVSYW5nZXM7CiAKIGVudW0gY2xhc3MgU291
cmNlQnVmZmVyQXBwZW5kTW9kZSA6IHVpbnQ4X3QgewpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U291cmNlQnVmZmVyUHJpdmF0ZSgpOwogCiAg
ICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sKSA9IDA7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIGFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgYXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0UGFy
c2VyU3RhdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2Uo
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZG
RmlsZUZvcm1hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmls
ZUZvcm1hdC5jcHAKaW5kZXggYjM3ZWJmYzU2MjA0OGZlNmQ3OTQxZDJlNWNjMWJjYTFkYzE1NzFj
Ny4uYTBlNzNiM2YzZWJjYjNjNzgwZmUzNTFlOWQ2YTgwYjZmYjkwNTViNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcApAQCAt
MzcsNyArMzcsNyBAQCBzdGF0aWMgY29uc3QgdWludDMyX3Qga1dvZmYyU2lnbmF0dXJlID0gMHg3
NzRmNDYzMjsgLy8gIndPRjIiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wg
cmVhZFVJbnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90
JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50MzIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9B
Ukcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXpl
KCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgYm9v
bCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMy
X3QmIHZhbHVlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCByZWFkVUludDE2
KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQor
c3RhdGljIGJvb2wgcmVhZFVJbnQxNihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNp
emVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQs
IG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNl
dCA8IHNpemVvZih2YWx1ZSkpCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBib29sIHdyaXRlVUlu
dDE2KFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yLCB1aW50MTZfdCB2YWx1ZSkKIAogc3RhdGljIGNv
bnN0IHVpbnQzMl90IHdvZmZTaWduYXR1cmUgPSAweDc3NGY0NjQ2OyAvKiAnd09GRicgKi8KIAot
Ym9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIGlzV09GRihDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgc2l6ZV90IG9mZnNldCA9IDA7CiAgICAgdWlu
dDMyX3Qgc2lnbmF0dXJlOwpAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiB9OwogI2VuZGlm
CiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWlu
dDhfdD4mIHNmbnQpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKIHsKICAgICBBU1NFUlRfQVJHKHNmbnQs
IHNmbnQuaXNFbXB0eSgpKTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgY29udmVydFdPRkZU
b1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiAgICAgcmV0
dXJuIHNmbnQuc2l6ZSgpID09IHRvdGFsU2ZudFNpemU7CiB9CiAKLWJvb2wgY29udmVydFdPRkZU
b1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorYm9vbCBjb252
ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYg
YnVmZmVyKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFVOVVNFRF9QQVJBTShidWZmZXIp
OwpAQCAtMjk0LDcgKzI5NCw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZl
cnRlZEZvbnQ7CiAgICAgaWYgKGNvbnZlcnRXT0ZGVG9TZm50KCpidWZmZXIsIGNvbnZlcnRlZEZv
bnQpKQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZl
cnRlZEZvbnQpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOwogICAgIGVsc2UKICAgICAgICAgYnVmZmVyID0g
bnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
V09GRkZpbGVGb3JtYXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZG
aWxlRm9ybWF0LmgKaW5kZXggM2Q1NzAxMDdmMjhmODU0NDc0MWUzNDk1YzAxNjA3ZTRkZTkwMmQ1
ZS4uNzhhYzRhN2FmZmY0ZDRiZWU5ZmQwMmNhYmU3YTk4ZjJmZTdkZGU4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCkBAIC0zMCwx
OSArMzAsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogCiAvLyBSZXR1cm5zIHdoZXRoZXIgdGhl
IGJ1ZmZlciBpcyBhIFdPRkYgZmlsZS4KLWJvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYpOworYm9v
bCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZhbHNlIGlm
IHRoZSBXT0ZGIGZpbGUgd29mZiBpcyBpbnZhbGlkIG9yIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQg
dG8gc2ZudCAoZm9yIGV4YW1wbGUsCiAvLyBpZiBjb252ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5
KS4gT3RoZXJ3aXNlIHJldHVybnMgdHJ1ZSBhbmQgd3JpdGVzIHRoZSBzZm50IHBheWxvYWQgaW50
byBzZm50LgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rv
cjx1aW50OF90PiYgc2ZudCk7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7CiAKIC8vIElmIHRoZSBnaXZl
biBidWZmZXIgaXMgYSBXT0ZGIGZpbGUgYW5kIHRoZSBjdXJyZW50IHBsYXRmb3JtIGhhcyBubyBu
YXRpdmUgc3VwcG9ydCBmb3IgV09GRgogLy8gZm9udHMsIGNvbnZlcnQgaXQgdG8gc2ZudC4gUmV0
dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBidWZmZXIgd2FzIGNvbnZlcnRlZC4gSWYgY29udmVyc2lv
biBmYWlscywKIC8vIHRoZSBidWZmZXIgd2lsbCBiZSBzZXQgdG8gbnVsbHB0ci4KLWJvb2wgY29u
dmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworYm9vbCBj
b252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IGM2MTEyZTExOTRjN2M5OTBmZGMxMTRlODI5Y2ZkYjVj
NmFmNzU0YTkuLjgwNWVhNzAyMGIwZDM1MjQ2NmRmYWI3YzkwYzA0NzY1NGFkNTYwMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1G
YWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtODYsMTIgKzg2LDEy
IEBAIGNvbnN0IEF0b21TdHJpbmcmIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFt
ZSgpCiAgICAgcmV0dXJuIHNrZDsKIH0KIAotc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSlNPTiBvZiB0aGUgZm9y
bWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVm
ZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVy
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5z
aXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29u
KTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKICAgICBpZiAoIXNpbmZBcnJheSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4gc2luZnM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4gc2luZnM7CiAgICAgc2luZnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaW5m
QXJyYXktPmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYgdmFsdWUgOiAqc2luZkFycmF5KSB7
CkBAIC0xMTcsMTQgKzExNywxNCBAQCBzdGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBl
eHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIGlmICgh
c2luZkRhdGEpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBzaW5mcy51bmNoZWNr
ZWRBcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqc2luZkRhdGEpKSk7CisgICAg
ICAgIHNpbmZzLnVuY2hlY2tlZEFwcGVuZChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZSgqc2luZkRhdGEpKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHNpbmZzOwogfQogCiB1
c2luZyBTY2hlbWVBbmRLZXlSZXN1bHQgPSBWZWN0b3I8c3RkOjpwYWlyPEZvdXJDQywgVmVjdG9y
PHVpbnQ4X3Q+Pj47Ci1zdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRL
ZXlJZEZyb21TaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFNjaGVtZUFu
ZEtleVJlc3VsdCBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBidWZmZXJzID0gZXh0cmFjdFNpbmZE
YXRhKGJ1ZmZlcik7CiAgICAgaWYgKCFidWZmZXJzLnNpemUoKSkKQEAgLTE3MCwyMCArMTcwLDIw
IEBAIHN0YXRpYyBTY2hlbWVBbmRLZXlSZXN1bHQgZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJvbVNp
bmYoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQor
c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2luZihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBr
ZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwog
ICAgIGF1dG8gcmVzdWx0cyA9IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGJ1ZmZlcik7
CiAKICAgICBmb3IgKGF1dG8mIHJlc3VsdCA6IHJlc3VsdHMpIHsKICAgICAgICAgaWYgKHZhbGlk
RmFpclBsYXlTdHJlYW1pbmdTY2hlbWVzKCkuY29udGFpbnMocmVzdWx0LmZpcnN0KSkKLSAgICAg
ICAgICAgIGtleUlEcy5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQu
c2Vjb25kKSkpOworICAgICAgICAgICAga2V5SURzLmFwcGVuZChDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQuc2Vjb25kKSkpOwogICAgIH0KIAogICAgIHJldHVy
biBrZXlJRHM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6c2FuaXRpemVTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2Fu
aXRpemVTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAv
LyBDb21tb24gU0lORiBCb3ggRm9ybWF0CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0x
OTEsMTcgKzE5MSwxNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBTaGFyZWRCdWZmZQogICAgIHJldHVybiBidWZm
ZXIuY29weSgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc6OnNhbml0aXplU2tkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2Fu
aXRpemVTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIFVO
VVNFRF9QQVJBTShidWZmZXIpOwogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGJ1
ZmZlci5jb3B5KCk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2tkKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURz
U2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBJbiB0
aGUgJ3NrZCcgc2NoZW1lLCB0aGUgaW5pdCBkYXRhIGlzIHRoZSBrZXkgSUQuCi0gICAgVmVjdG9y
PFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4ga2V5SURzOwogICAgIGtleUlEcy5hcHBlbmQoYnVmZmVyLmNvcHkoKSk7CiAg
ICAgcmV0dXJuIGtleUlEczsKIH0KQEAgLTM5Myw3ICszOTMsNyBAQCBib29sIENETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAgICAgaWYgKCF2YWxpZEluaXREYXRh
VHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC00MjMsNyArNDIzLDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBv
cnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXAKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
Zzo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAor
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
Zzo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25z
ZSkgY29uc3QKIHsKICAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAppbmRleCBiYzkzZjZmNmE3YmRkMDFlZmJmNTViNjJi
ZGI2YTRlNjZlZjkxMmIzLi4zMTdiYjhkNTdlODZjMDYyMTRlMGI0MDU5ZGRmNGY4ODA3Yzc0YzZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaApAQCAtNzEsMTcgKzcx
LDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IG92ZXJyaWRlOwogICAg
IGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgc3VwcG9y
dHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25z
dCBTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25z
dCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVS
ZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHNpbmZOYW1l
KCk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4g
ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplU2luZihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4g
ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0
YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTaW5mKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBz
a2ROYW1lKCk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+Pj4gZXh0cmFjdEtleUlEc1NrZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBzdGF0aWMg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTa2QoY29uc3QgU2hhcmVkQnVmZmVyJik7Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4+IGV4dHJhY3RLZXlJRHNTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAg
IHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTa2QoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxGb3Vy
Q0M+JiB2YWxpZEZhaXJQbGF5U3RyZWFtaW5nU2NoZW1lcygpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akMuaAppbmRleCAxNTliOTBjZGI0OGY3ZmU0NGJiNDliZTJlYzFjMWMyZjQzMjg2NDAwLi41NmI1
OGMyNWEyODcwOWZiMzgyMjE4MzllNTViYWU0NWVkOTNjZjYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIEltcGxlbWVudGF0aW9uVHlwZSBp
bXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5
cGU6OkZhaXJQbGF5U3RyZWFtaW5nOyB9CiAKICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmln
dXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2
ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZp
bmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwg
U3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsK
ICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAg
UmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwogICAgIHZv
aWQgc2V0Q2xpZW50KFdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+JiYpIGZpbmFsOwpAQCAtOTQs
MTAgKzk0LDEwIEBAIHB1YmxpYzoKIAogICAgIE5TVVJMICpzdG9yYWdlVVJMKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdG9yYWdlVVJMLmdldCgpOyB9CiAgICAgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxv
d2VkKCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkOyB9Ci0gICAgU2hh
cmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ2Vy
dGlmaWNhdGUuZ2V0KCk7IH0KKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0
aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0KICAg
ICBBVkNvbnRlbnRLZXlTZXNzaW9uKiBjb250ZW50S2V5U2Vzc2lvbigpOwogCi0gICAgUmV0YWlu
UHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IHRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRp
YWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZl
ciYgaW5pdERhdGEpOworICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiB0YWtlVW5l
eHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSk7CiAKICAgICAv
LyBBVkNvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGVDbGllbnQKICAgICB2b2lkIGRpZFByb3ZpZGVS
ZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBmaW5hbDsKQEAgLTExMiw3ICsxMTIsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQ
cm90ZWN0aW9uQ2hhbmdlZChib29sKSBmaW5hbDsKICAgICB2b2lkIGV4dGVybmFsUHJvdGVjdGlv
blN0YXR1c0RpZENoYW5nZUZvckNvbnRlbnRLZXlSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3Qq
KSBmaW5hbDsKIAotICAgIHVzaW5nIEtleXMgPSBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+Owor
ICAgIHVzaW5nIEtleXMgPSBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAg
ICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JL
ZXlJRHMoY29uc3QgS2V5cyYpIGNvbnN0OwogICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvckdyb3VwKEFWQ29udGVudEtleVJlcG9ydEdyb3Vw
KikgY29uc3Q7CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
KiBzZXNzaW9uRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgY29uc3Q7CkBAIC0xMjks
NyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50PiBtX2Ns
aWVudDsKICAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5U2Vzc2lvbj4gbV9zZXNzaW9uOwogICAg
IFJldGFpblB0cjxXZWJDb3JlRlBTQ29udGVudEtleVNlc3Npb25EZWxlZ2F0ZT4gbV9kZWxlZ2F0
ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOwogICAgIGJv
b2wgbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkIHsgdHJ1ZSB9OwogICAgIFJldGFpblB0cjxOU1VS
TD4gbV9zdG9yYWdlVVJMOwogICAgIFZlY3RvcjxXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4+IG1fc2Vzc2lvbnM7CkBAIC0xNTAsOCArMTUwLDggQEAg
cHVibGljOgogI2VuZGlmCiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb24KLSAgICB2b2lkIHJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsK
LSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lk
IHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJh
Y2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vu
c2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxi
YWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAg
dm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNl
VHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMubW0KaW5kZXggZTlmMmFhMzM1ZGI5YWM1ODM5NTE1ZDYyNWEwZGYyZmY0MDczZTk1My4u
OWEyZDVlZWY1NDJmOGY0MmQ1MmRkNzg5OGZmZjFmYTQyM2FhYmUzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMubW0KQEAgLTIxNywxNSArMjE3LDE1IEBAIEFMTE9XX05FV19BUElfV0lUSE9VVF9H
VUFSRFNfRU5ECiAgICAgcmV0dXJuIEF0b21TdHJpbmcobnNJbml0VHlwZSk7CiB9CiAKLXN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBpbml0aWFsaXphdGlvbkRhdGFGb3JSZXF1ZXN0KEFWQ29udGVu
dEtleVJlcXVlc3QqIHJlcXVlc3QpCitzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGluaXRpYWxpemF0aW9uRGF0YUZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCogcmVxdWVz
dCkKIHsKICAgICBpZiAoIXJlcXVlc3QpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CiAKICAgICBpZiAoaW5pdFR5cGVGb3JSZXF1ZXN0KHJlcXVlc3QpID09IENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoW3JlcXVlc3QuaWRlbnRpZmllciBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZyBhbGxvd0xvc3N5Q29udmVyc2lvbjpZRVNdKTsKKyAgICAgICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcmVxdWVzdC5pZGVudGlmaWVyIGRhdGFVc2luZ0Vu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGFsbG93TG9zc3lDb252ZXJzaW9uOllFU10pOwog
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlcXVlc3QuaW5pdGlhbGl6YXRpb25E
YXRhKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlcXVlc3Qu
aW5pdGlhbGl6YXRpb25EYXRhKTsKIH0KIAogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKCkgPSBkZWZhdWx0OwpA
QCAtMjY1LDcgKzI2NSw3IEBAIEFWQ29udGVudEtleVNlc3Npb24qIENETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpjb250ZW50S2V5U2Vzc2lvbigpCiAgICAgcmV0dXJuIG1fc2Vz
c2lvbi5nZXQoKTsKIH0KIAotUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IENETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJ
bml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBTaGFyZWRC
dWZmZXImIGluaXREYXRhKQorUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IENETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJ
bml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBmb3IgKGF1dG8gcmVxdWVzdEl0ZXIg
PSBtX3VuZXhwZWN0ZWRLZXlSZXF1ZXN0cy5iZWdpbigpOyByZXF1ZXN0SXRlciAhPSBtX3VuZXhw
ZWN0ZWRLZXlSZXF1ZXN0cy5lbmQoKTsgKytyZXF1ZXN0SXRlcikgewogICAgICAgICBhdXRvJiBy
ZXF1ZXN0ID0gKnJlcXVlc3RJdGVyOwpAQCAtMzE2LDcgKzMxNiw3IEBAIHByaXZhdGU6CiAgICAg
UmVzcG9uc2VNYXAgbV9yZXNwb25zZXM7CiB9OwogCi1zdGF0aWMgUmVmUHRyPEpTT046OlZhbHVl
PiBwYXJzZUpTT05WYWx1ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBSZWZQ
dHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICAvLyBGYWlsIG9uIGxhcmdlIGJ1ZmZlcnMgd2hvc2Ugc2l6ZSBk
b2Vzbid0IGZpdCBpbnRvIGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIuCiAgICAgc2l6ZV90IHNp
emUgPSBidWZmZXIuc2l6ZSgpOwpAQCAtMzI0LDcgKzMyNCw3IEBAIHN0YXRpYyBSZWZQdHI8SlNP
Tjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMg
YXMgSlNPTiwgcmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcg
anNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAg
IFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHNpemUpIH07CiAKICAgICByZXR1cm4gSlNPTjo6VmFsdWU6OnBhcnNlSlNP
Tihqc29uKTsKIH0KQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIENETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNSwog
ICAgIGNhbGxiYWNrKGluaXRpYWxpemUoKSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+
JiYgc2VydmVyQ2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBD
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgc2VydmVyQ2VydGlmaWNhdGUsIFN1Y2Nlc3ND
YWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVO
VElGSUVSKTsKICAgICBtX3NlcnZlckNlcnRpZmljYXRlID0gV1RGTW92ZShzZXJ2ZXJDZXJ0aWZp
Y2F0ZSk7CkBAIC01ODUsOCArNTg1LDggQEAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDKiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzoKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8gc2Vzc2lvbktleXMgPSBzZXNzaW9uSW50
ZXJmYWNlLT5rZXlJRHMoKTsKLSAgICAgICAgaWYgKGFueU9mKHNlc3Npb25LZXlzLCBbJl0oY29u
c3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIHNlc3Npb25LZXkpIHsKLSAgICAgICAgICAgIHJldHVybiBr
ZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYga2V5SUQpIHsK
KyAgICAgICAgaWYgKGFueU9mKHNlc3Npb25LZXlzLCBbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiBzZXNzaW9uS2V5KSB7CisgICAgICAgICAgICByZXR1cm4ga2V5SURzLmZp
bmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBrZXlJRCkg
ewogICAgICAgICAgICAgICAgIHJldHVybiBrZXlJRC5nZXQoKSA9PSBzZXNzaW9uS2V5LmdldCgp
OwogICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQ7CiAgICAgICAgIH0pKQpAQCAtNjQxLDExICs2
NDEsMTEgQEAgdXNpbmcgS2V5cyA9IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6S2V5czsKIHN0YXRpYyBLZXlzIGtleUlEc0ZvclJlcXVlc3QoQVZDb250ZW50S2V5
UmVxdWVzdCogcmVxdWVzdCkKIHsKICAgICBpZiAoW3JlcXVlc3QuaWRlbnRpZmllciBpc0tpbmRP
ZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICByZXR1cm4gS2V5czo6ZnJvbShTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShbKE5TU3RyaW5nICopcmVxdWVzdC5pZGVudGlmaWVyIGRhdGFVc2lu
Z0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSkpOworICAgICAgICByZXR1cm4gS2V5czo6
ZnJvbShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoWyhOU1N0cmluZyAqKXJlcXVlc3Qu
aWRlbnRpZmllciBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pKTsKICAg
ICBpZiAoW3JlcXVlc3QuaWRlbnRpZmllciBpc0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkK
LSAgICAgICAgcmV0dXJuIEtleXM6OmZyb20oU2hhcmVkQnVmZmVyOjpjcmVhdGUoKE5TRGF0YSAq
KXJlcXVlc3QuaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gS2V5czo6ZnJvbShDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKE5TRGF0YSAqKXJlcXVlc3QuaWRlbnRpZmllcikpOwog
ICAgIGlmIChyZXF1ZXN0LmluaXRpYWxpemF0aW9uRGF0YSkgewotICAgICAgICBpZiAoYXV0byBz
aW5mS2V5SURzID0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2lu
ZihTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXF1ZXN0LmluaXRpYWxpemF0aW9uRGF0YSkpKQorICAg
ICAgICBpZiAoYXV0byBzaW5mS2V5SURzID0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpl
eHRyYWN0S2V5SURzU2luZihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVxdWVzdC5p
bml0aWFsaXphdGlvbkRhdGEpKSkKICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKHNpbmZLZXlJ
RHMudmFsdWUoKSk7CiAgICAgfQogICAgIHJldHVybiB7IH07CkBAIC02NzMsMjMgKzY3MywyMyBA
QCBLZXlzIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6a2V5SURz
KCkKICAgICByZXR1cm4ga2V5SURzOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5
cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBp
bml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUg
bGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQog
ewogICAgIGlmICghaXNMaWNlbnNlVHlwZVN1cHBvcnRlZChsaWNlbnNlVHlwZSkpIHsKICAgICAg
ICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgZmFsc2UsIGxpY2Vuc2VU
eXBlIFwiIiwgbGljZW5zZVR5cGUsICJcIiBub3Qgc3VwcG9ydGVkIik7Ci0gICAgICAgIGNhbGxi
YWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBGYWlsZWQp
OworICAgICAgICBjYWxsYmFjayhDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1w
dHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBpZiAoIW1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpIHsKICAgICAgICAgREVCVUdf
TE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgZmFsc2UsIG5vIHNlcnZlckNlcnRpZmlj
YXRlIik7Ci0gICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3Ry
aW5nKCksIGZhbHNlLCBGYWlsZWQpOworICAgICAgICBjYWxsYmFjayhDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxlZCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIWVuc3VyZVNlc3Npb25Pckdyb3VwKCkpIHsKICAg
ICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgZmFsc2UsIGNvdWxk
IG5vdCBjcmVhdGUgc2Vzc2lvbiBvciBncm91cCBvYmplY3QiKTsKLSAgICAgICAgY2FsbGJhY2so
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxlZCk7Cisg
ICAgICAgIGNhbGxiYWNrKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0
cmluZygpLCBmYWxzZSwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzA5
LDE4ICs3MDksMTggQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNE
YXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFUeXBlID09IENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRp
b25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBpbml0aWFsaXphdGlv
bkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
ZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tk
TmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBp
bml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJp
bmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZF
KEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFU
eXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3No
U3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEt
PnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5n
KGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOwog
ICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0
aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpO
U0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgogICAg
IGVsc2UgewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBm
YWxzZSwgaW5pdERhdGFUeXBlIG5vdCBzdXBwcG9ydGVkIik7Ci0gICAgICAgIGNhbGxiYWNrKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBGYWlsZWQpOworICAg
ICAgICBjYWxsYmFjayhDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJp
bmcoKSwgZmFsc2UsIEZhaWxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTczNiw3
ICs3MzYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZQogICAgIH0KIH0KIAotc3RhdGljIGJv
b2wgaXNFcXVhbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUp
CitzdGF0aWMgYm9vbCBpc0VxdWFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IGRhdGEudHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBpZiAoIWFycmF5QnVmZmVyKQpAQCAtNzU0LDcgKzc1
NCw3IEBAIHN0YXRpYyBib29sIGlzRXF1YWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25z
dCBTdHJpbmcmIHZhbHVlKQogICAgIHJldHVybiBzdHJpbmdPckV4Y2VwdGlvbi5yZXR1cm5WYWx1
ZSgpID09IHZhbHVlOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNh
bGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCiB7CiAgICAgaWYgKCFtX2V4cGlyZWRTZXNzaW9ucy5pc0VtcHR5KCkgJiYgaXNFcXVh
bChyZXNwb25zZURhdGEsICJhY2tub3dsZWRnZWQiX3MpKSB7CiAgICAgICAgIGF1dG8qIGNlcnRp
ZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKTsKQEAgLTc3MCw3ICs3NzAs
NyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICBhdXRvIGV4cGlyZWRTZXNzaW9u
cyA9IGNyZWF0ZU5TQXJyYXkobV9leHBpcmVkU2Vzc2lvbnMsIFtdIChhdXRvJiBkYXRhKSB7CiAg
ICAgICAgICAgICByZXR1cm4gZGF0YS5nZXQoKTsKICAgICAgICAgfSk7Ci0gICAgICAgIGF1dG8g
YXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0
byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogICAgICAgICBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZW1v
dmVQZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzOmV4cGlyZWRTZXNzaW9ucy5nZXQoKSB3aXRo
QXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpz
dG9yYWdlVVJMXTsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHsgfSwgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTg1MywxMCArODUz
LDEwIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICBpZiAoIWtleUlEVmVj
dG9yKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgYXV0byBr
ZXlJRCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKmtleUlEVmVjdG9yKSk7CisgICAg
ICAgICAgICBhdXRvIGtleUlEID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoKmtleUlEVmVjdG9yKSk7CiAgICAgICAgICAgICBhdXRvIGZvdW5kSW5kZXggPSBtX2N1cnJl
bnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmluZE1hdGNoaW5nKFsmXSAoYXV0byYgcmVxdWVz
dCkgewogICAgICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1
ZXN0LmdldCgpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRNYXRjaGluZyhb
Jl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGlkKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGtleUlEcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYgaWQpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlkLmdldCgpID09IGtleUlELmdl
dCgpOwogICAgICAgICAgICAgICAgIH0pICE9IG5vdEZvdW5kOwogICAgICAgICAgICAgfSk7CkBA
IC04ODcsOCArODg3LDggQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAgICAg
ICBhdXRvIHBheWxvYWRWZWN0b3IgPSBiYXNlNjREZWNvZGUocGF5bG9hZFN0cmluZyk7CiAgICAg
ICAgICAgICAgICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBbcmVx
dWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3Bv
bnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNw
b25zZURhdGE6cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgICAg
ICAgICAgYXV0byBwYXlsb2FkRGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7CisgICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vz
c0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkg
Y29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBh
eWxvYWREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH07CkBAIC05MDEs
NyArOTAxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgfQogICAgIH0gZWxz
ZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiJ3NpbmYn
IGluaXREYXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNlIik7Ci0gICAgICAgIFttX2N1cnJlbnRSZXF1
ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQ
QUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRo
RmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3Rz
LmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlS
ZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5
UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldXTsKICAgICB9CiAKICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5MjI3
Nyk6IHN0YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBpdCBvbmNlIEFWQ29udGVudEtleVJlc3Bv
bnNlIHN1cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4KQEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24o
TGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVh
dGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNl
cnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgS2V5
U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNl
c3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdF
eHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgp
IHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewogICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25JZEtleSA9IEAiUGxheWJhY2tTZXNzaW9u
SUQiOwpAQCAtOTQ1LDcgKzk0NSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSBsaWNlbnNlCiAKICAgICAg
ICAgICAgIGlmIChzZXNzaW9uSWQgPT0gU3RyaW5nKHBsYXliYWNrU2Vzc2lvbklkVmFsdWUpKSB7
CiAgICAgICAgICAgICAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU5MzQ5MjIpOiB1c2Ug
a2V5IHZhbHVlcyBzdG9yZWQgaW4gZXhwaXJlZCBzZXNzaW9uIHJlcG9ydCBvbmNlIGF2YWlsYWJs
ZQotICAgICAgICAgICAgICAgIGNoYW5nZWRLZXlzLmFwcGVuZCgoS2V5U3RhdHVzVmVjdG9yOjpW
YWx1ZVR5cGUpeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBLZXlTdGF0dXM6OlJlbGVhc2VkIH0p
OworICAgICAgICAgICAgICAgIGNoYW5nZWRLZXlzLmFwcGVuZCgoS2V5U3RhdHVzVmVjdG9yOjpW
YWx1ZVR5cGUpeyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgS2V5U3RhdHVzOjpS
ZWxlYXNlZCB9KTsKICAgICAgICAgICAgICAgICBtX2V4cGlyZWRTZXNzaW9ucy5hcHBlbmQoZXhw
aXJlZFNlc3Npb25EYXRhKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtOTY1LDcgKzk2
NSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpj
bG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvCiB7CiAgICAgREVCVUdfTE9HX0lGX1BPU1NJ
QkxFKExPR0lERU5USUZJRVIpOwogICAgIGlmIChtX3JlcXVlc3RMaWNlbnNlQ2FsbGJhY2spIHsK
LSAgICAgICAgbV9yZXF1ZXN0TGljZW5zZUNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCks
IG1fc2Vzc2lvbklkLCBmYWxzZSwgRmFpbGVkKTsKKyAgICAgICAgbV9yZXF1ZXN0TGljZW5zZUNh
bGxiYWNrKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBtX3Nlc3Npb25JZCwgZmFs
c2UsIEZhaWxlZCk7CiAgICAgICAgIEFTU0VSVCghbV9yZXF1ZXN0TGljZW5zZUNhbGxiYWNrKTsK
ICAgICB9CiAgICAgaWYgKG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKSB7CkBAIC05OTksNyArOTk5
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJl
bW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZp
Y2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50
aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gZXhwaXJlZFNlc3Npb25zQXJyYXkgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICAgICAgS2V5U3RhdHVz
VmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25E
YXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVk
U2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3Jh
Z2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewpAQCAtMTAxMSw3ICsxMDExLDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Np
b25EYXRhKGNvbnN0IFN0cmluZyYKIAogICAgICAgICAgICAgaWYgKHNlc3Npb25JZCA9PSBTdHJp
bmcocGxheWJhY2tTZXNzaW9uSWRWYWx1ZSkpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRShy
ZGFyOi8vcHJvYmxlbS8zNTkzNDkyMik6IHVzZSBrZXkgdmFsdWVzIHN0b3JlZCBpbiBleHBpcmVk
IHNlc3Npb24gcmVwb3J0IG9uY2UgYXZhaWxhYmxlCi0gICAgICAgICAgICAgICAgY2hhbmdlZEtl
eXMuYXBwZW5kKChLZXlTdGF0dXNWZWN0b3I6OlZhbHVlVHlwZSl7IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCksIEtleVN0YXR1czo6UmVsZWFzZWQgfSk7CisgICAgICAgICAgICAgICAgY2hhbmdlZEtl
eXMuYXBwZW5kKChLZXlTdGF0dXNWZWN0b3I6OlZhbHVlVHlwZSl7IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpLCBLZXlTdGF0dXM6OlJlbGVhc2VkIH0pOwogICAgICAgICAgICAgICAg
IG1fZXhwaXJlZFNlc3Npb25zLmFwcGVuZChleHBpcmVkU2Vzc2lvbkRhdGEpOwogICAgICAgICAg
ICAgICAgIFtleHBpcmVkU2Vzc2lvbnNBcnJheSBhZGRPYmplY3Q6ZXhwaXJlZFNlc3Npb25dOwog
ICAgICAgICAgICAgfQpAQCAtMTA0MSw3ICsxMDQxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmlu
ZyYKICAgICAgICAgICAgIEVSUk9SX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiTXVs
dGlwbGUoIiwgZXhwaXJlZFNlc3Npb25zQ291bnQsICIpIGV4cGlyZWQgc2Vzc2lvbiByZXBvcnRz
IGZvdW5kIHdpdGggc2FtZSBzZXNzaW9uSUQoIiwgc2Vzc2lvbklkLCAiKSEiKTsKIAogICAgICAg
ICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBTdWNjZWVkZWQiKTsKLSAg
ICAgICAgY2FsbGJhY2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGV4cGlyZWRTZXNzaW9uc0RhdGEuZ2V0KCkpLCBTdWNjZWVkZWQpOworICAgICAgICBjYWxsYmFj
ayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGV4
cGlyZWRTZXNzaW9uc0RhdGEuZ2V0KCkpLCBTdWNjZWVkZWQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0xMDg2LDE4ICsxMDg2LDE4IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAK
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0
aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50
aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAK
ICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7CiAgICAgaWYgKGtl
eUlEcy5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKG1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjaykg
ewotICAgICAgICAgICAgbV9yZXF1ZXN0TGljZW5zZUNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCksIG1fc2Vzc2lvbklkLCBmYWxzZSwgRmFpbGVkKTsKKyAgICAgICAgICAgIG1fcmVxdWVz
dExpY2Vuc2VDYWxsYmFjayhDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgbV9zZXNz
aW9uSWQsIGZhbHNlLCBGYWlsZWQpOwogICAgICAgICAgICAgQVNTRVJUKCFtX3JlcXVlc3RMaWNl
bnNlQ2FsbGJhY2spOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVh
dGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtl
eUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5
IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZv
ckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlm
aWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJy
b3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMs
IHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwg
Y29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSld
IHsKQEAgLTExMTAsMTEgKzExMTAsMTEgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVIKICAgICAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgJiYgbV9yZXF1ZXN0TGlj
ZW5zZUNhbGxiYWNrKQotICAgICAgICAgICAgICAgICAgICBtX3JlcXVlc3RMaWNlbnNlQ2FsbGJh
Y2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgbV9zZXNzaW9uSWQsIGZhbHNlLCBGYWlsZWQpOwor
ICAgICAgICAgICAgICAgICAgICBtX3JlcXVlc3RMaWNlbnNlQ2FsbGJhY2soQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIG1fc2Vzc2lvbklkLCBmYWxzZSwgRmFpbGVkKTsKICAgICAg
ICAgICAgICAgICBlbHNlIGlmIChtX3JlcXVlc3RMaWNlbnNlQ2FsbGJhY2spCi0gICAgICAgICAg
ICAgICAgICAgIG1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShj
b250ZW50S2V5UmVxdWVzdERhdGEuZ2V0KCkpLCBtX3Nlc3Npb25JZCwgZmFsc2UsIFN1Y2NlZWRl
ZCk7CisgICAgICAgICAgICAgICAgICAgIG1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjayhDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudEtleVJlcXVlc3REYXRhLmdldCgpKSwgbV9z
ZXNzaW9uSWQsIGZhbHNlLCBTdWNjZWVkZWQpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1f
Y2xpZW50KQotICAgICAgICAgICAgICAgICAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2UoQ0RNTWVz
c2FnZVR5cGU6OkxpY2Vuc2VSZXF1ZXN0LCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50S2V5
UmVxdWVzdERhdGEuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQtPnNlbmRN
ZXNzYWdlKENETU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVzdCwgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YS5nZXQoKSkpOwogICAgICAgICAgICAg
ICAgIEFTU0VSVCghbV9yZXF1ZXN0TGljZW5zZUNhbGxiYWNrKTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICB9XTsKQEAgLTExNTMsOSArMTE1Myw5IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFp
CiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBj
ZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFw
cElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAKLSAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OworICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9
IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBSZXRhaW5Q
dHI8TlNEYXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CiAgICAgICAgIHVz
aW5nIENhbGxiYWNrRnVuY3Rpb24gPSBGdW5jdGlvbjx2b2lkKFJlcXVlc3RzRGF0YSYmKT47CiAg
ICAgICAgIHN0YXRpYyBSZWZQdHI8Q2FsbGJhY2tBZ2dyZWdhdG9yPiBjcmVhdGUoQ2FsbGJhY2tG
dW5jdGlvbiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTE4Nyw3ICsxMTg3LDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1
ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAocmVx
dWVzdHNEYXRhLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgbV9yZXF1ZXN0TGljZW5zZUNhbGxi
YWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIG1fc2Vzc2lvbklkLCBmYWxzZSwgRmFpbGVkKTsK
KyAgICAgICAgICAgIG1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjayhDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSwgbV9zZXNzaW9uSWQsIGZhbHNlLCBGYWlsZWQpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTExOTYsMTMgKzExOTYsMTMgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhW
ZWN0b3I8UmV0YWkKICAgICAgICAgICAgIGF1dG8gZW50cnkgPSBKU09OOjpPYmplY3Q6OmNyZWF0
ZSgpOwogICAgICAgICAgICAgYXV0byYga2V5SUQgPSByZXF1ZXN0RGF0YS5maXJzdDsKICAgICAg
ICAgICAgIGF1dG8mIHBheWxvYWQgPSByZXF1ZXN0RGF0YS5zZWNvbmQ7Ci0gICAgICAgICAgICBl
bnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5kYXRh
KCksIGtleUlELT5zaXplKCkpKTsKKyAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlE
IiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
a2V5SUQtPnNpemUoKSkpOwogICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygicGF5bG9hZCIs
IGJhc2U2NEVuY29kZVRvU3RyaW5nKHBheWxvYWQuZ2V0KCkuYnl0ZXMsIHBheWxvYWQuZ2V0KCku
bGVuZ3RoKSk7CiAgICAgICAgICAgICByZXF1ZXN0SlNPTi0+cHVzaE9iamVjdChXVEZNb3ZlKGVu
dHJ5KSk7CiAgICAgICAgIH0KICAgICAgICAgYXV0byByZXF1ZXN0QnVmZmVyID0gdXRmOEJ1ZmZl
cihyZXF1ZXN0SlNPTi0+dG9KU09OU3RyaW5nKCkpOwogICAgICAgICBpZiAoIXJlcXVlc3RCdWZm
ZXIpIHsKLSAgICAgICAgICAgIG1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjayhTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpLCBtX3Nlc3Npb25JZCwgZmFsc2UsIEZhaWxlZCk7CisgICAgICAgICAgICBtX3Jl
cXVlc3RMaWNlbnNlQ2FsbGJhY2soQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIG1f
c2Vzc2lvbklkLCBmYWxzZSwgRmFpbGVkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgICAgICBtX3JlcXVlc3RMaWNlbnNlQ2FsbGJhY2socmVxdWVzdEJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpLCBtX3Nlc3Npb25JZCwgZmFsc2UsIFN1Y2NlZWRlZCk7CkBAIC0xMjExLDggKzEy
MTEsOCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgIEB0cnkgewogICAgICAgICBmb3Ig
KGF1dG8gcmVxdWVzdCA6IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cykgewogICAg
ICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwot
ICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5m
aXJzdCgpKTsKLSAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
a2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKKyAgICAgICAgICAgIGF1dG8gY29udGVu
dElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9y
QXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZp
ZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W2tleUlEID0gV1RGTW92ZShr
ZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJv
ciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7
CiAgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChba2V5SUQgPSBXVEZNb3ZlKGtleUlE
KSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdncmVnYXRvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSAoKSBtdXRhYmxlIHsKQEAgLTEy
MjMsNyArMTIyMyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgfSBAY2F0Y2goTlNF
eGNlcHRpb24gKmV4Y2VwdGlvbikgewogICAgICAgICBFUlJPUl9MT0dfSUZfUE9TU0lCTEUoTE9H
SURFTlRJRklFUiwgImV4Y2VwdGlvbiB0aHJvd24gZnJvbSAtbWFrZVN0cmVhbWluZ0NvbnRlbnRL
ZXlSZXF1ZXN0RGF0YUZvckFwcDpjb250ZW50SWRlbnRpZmllcjpvcHRpb25zOmNvbXBsZXRpb25I
YW5kbGVyOiAiLCBbW2V4Y2VwdGlvbiBuYW1lXSBVVEY4U3RyaW5nXSwgIiwgcmVhc29uIDogIiwg
W1tleGNlcHRpb24gcmVhc29uXSBVVEY4U3RyaW5nXSk7CiAgICAgICAgIGlmIChtX3JlcXVlc3RM
aWNlbnNlQ2FsbGJhY2spCi0gICAgICAgICAgICBtX3JlcXVlc3RMaWNlbnNlQ2FsbGJhY2soU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSwgbV9zZXNzaW9uSWQsIGZhbHNlLCBGYWlsZWQpOworICAgICAg
ICAgICAgbV9yZXF1ZXN0TGljZW5zZUNhbGxiYWNrKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpLCBtX3Nlc3Npb25JZCwgZmFsc2UsIEZhaWxlZCk7CiAgICAgICAgIEFTU0VSVCghbV9y
ZXF1ZXN0TGljZW5zZUNhbGxiYWNrKTsKICAgICB9CiB9CkBAIC0xMjQ5LDEwICsxMjQ5LDEwIEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92
aWRlUmVuZXdpbmdSZXF1ZXN0KEFWQ29uCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVu
dGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNl
cnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1
ZXN0KG1fY3VycmVudFJlcXVlc3QudmFsdWUoKSk7CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBj
b250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVl
c3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVy
LmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6
bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92
ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3RE
YXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAgLTEyNjIsOSArMTI2
Miw5IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpk
aWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KEFWQ29uCiAgICAgICAgICAgICAgICAgaWYgKGVycm9y
ICYmIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKQogICAgICAgICAgICAgICAgICAgICBtX3VwZGF0
ZUxpY2Vuc2VDYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChtX3VwZGF0ZUxpY2Vu
c2VDYWxsYmFjaykKLSAgICAgICAgICAgICAgICAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2so
ZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBNZXNzYWdlKE1lc3NhZ2VUeXBlOjpM
aWNlbnNlUmVuZXdhbCwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudEtleVJlcXVlc3REYXRh
LmdldCgpKSksIFN1Y2NlZWRlZCk7CisgICAgICAgICAgICAgICAgICAgIG1fdXBkYXRlTGljZW5z
ZUNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgTWVzc2FnZShNZXNz
YWdlVHlwZTo6TGljZW5zZVJlbmV3YWwsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShj
b250ZW50S2V5UmVxdWVzdERhdGEuZ2V0KCkpKSwgU3VjY2VlZGVkKTsKICAgICAgICAgICAgICAg
ICBlbHNlIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQtPnNlbmRN
ZXNzYWdlKENETU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVuZXdhbCwgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoY29udGVudEtleVJlcXVlc3REYXRhLmdldCgpKSk7CisgICAgICAgICAgICAgICAgICAgIG1f
Y2xpZW50LT5zZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZTo6TGljZW5zZVJlbmV3YWwsIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50S2V5UmVxdWVzdERhdGEuZ2V0KCkpKTsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKTsKICAgICAg
ICAgICAgIH0pOwogICAgICAgICB9XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVj
b2RlckFWRk9iakMuaAppbmRleCAwMzM0ZDYyM2IyYTc2MDVjOWJlMTIyMTNiNWFiZGJiYWMyYjAz
ZjE1Li42MmI4M2ZiZmQ1Nzk0MDUwZWJjOTQwNjM3MDQ5MGJhMmIzZWMwODc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCkBAIC01Myw3ICs1Myw3IEBA
IGNsYXNzIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjsKIAogY2xhc3MgSW1hZ2VEZWNvZGVy
QVZGT2JqQyA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gY3JlYXRlKFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURlY29k
ZXJBVkZPYmpDPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAg
dmlydHVhbCB+SW1hZ2VEZWNvZGVyQVZGT2JqQygpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIGJvb2wgc3VwcG9ydHNNZWRpYVR5cGUoTWVkaWFUeXBlKTsKQEAgLTg2LDcgKzg2LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFs
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2
ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbDsKIApA
QCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPEltYWdl
RGVjb2Rlcjo6RnJhbWVJbmZvPiBmcmFtZUluZm9zKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAg
SW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIEltYWdlRGVj
b2RlckFWRk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKICAgICBBVkFz
c2V0VHJhY2sgKmZpcnN0RW5hYmxlZFRyYWNrKCk7CiAgICAgdm9pZCByZWFkU2FtcGxlcygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXggMDY5
NTE2YTA4M2Q1ZjRmNTEyNzI5NzQ1MGUxYzlhMTBjYzE0ZjRiZi4uMzVjNmNlNjdlODVmODZhZTE2
NGMyMWE3MjYwN2ZjMDY1ZWNiNTA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tCkBAIC0yODksNyArMjg5LDcgQEAgSW1hZ2VEZWNvZGVyQVZGT2Jq
Q1NhbXBsZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRlcikKIAogI3ByYWdtYSBtYXJrIC0gSW1hZ2VE
ZWNvZGVyQVZGT2JqQwogCi1SZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gSW1hZ2VEZWNvZGVy
QVZGT2JqQzo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IElt
YWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgLy8g
QVZGb3VuZGF0aW9uIG1heSBub3QgYmUgYXZhaWxhYmxlIGF0IHJ1bnRpbWUuCiAgICAgaWYgKCFB
VkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKSkKQEAgLTMwMSw3
ICszMDEsNyBAQCBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gSW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29ucwogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEltYWdlRGVjb2RlckFWRk9iakMoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogfQogCi1JbWFnZURlY29kZXJBVkZPYmpDOjpJbWFn
ZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorSW1hZ2VEZWNvZGVy
QVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pCiAgICAgOiBJbWFnZURlY29kZXIoKQogICAgICwgbV9taW1lVHlwZShtaW1lVHlw
ZSkKICAgICAsIG1fdXRpKFdlYkNvcmU6OlVUSUZyb21NSU1FVHlwZShtaW1lVHlwZSkpCkBAIC0z
MDksNyArMzA5LDcgQEAgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhT
aGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVQKICAgICAsIG1fbG9hZGVyKGFk
b3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZSBhbGxvY10g
aW5pdFdpdGhQYXJlbnQ6dGhpc10pKQogICAgICwgbV9kZWNvbXByZXNzaW9uU2Vzc2lvbihXZWJD
b3JlRGVjb21wcmVzc2lvblNlc3Npb246OmNyZWF0ZVJHQigpKQogewotICAgIFttX2xvYWRlciB1
cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9dOworICAgIFtt
X2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgY29tcGxldGU6Tk9dOwogCiAgICAgW21fYXNzZXQuZ2V0KCkucmVzb3VyY2VMb2FkZXIg
c2V0RGVsZWdhdGU6bV9sb2FkZXIuZ2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1
ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKV07CiAgICAgW21fYXNzZXQgbG9h
ZFZhbHVlc0FzeW5jaHJvbm91c2x5Rm9yS2V5czpAW0AidHJhY2tzIl0gY29tcGxldGlvbkhhbmRs
ZXI6W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxlIHsKQEAgLTY0MSw5
ICs2NDEsOSBAQCB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldEV4cGVjdGVkQ29udGVudFNp
emUobG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCiAgICAgbV9sb2FkZXIuZ2V0KCkuZXhw
ZWN0ZWRDb250ZW50U2l6ZSA9IGV4cGVjdGVkQ29udGVudFNpemU7CiB9CiAKLXZvaWQgSW1hZ2VE
ZWNvZGVyQVZGT2JqQzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQordm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewotICAgIFttX2xvYWRlciB1
cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2Vp
dmVkXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZlZF07CiAKICAgICBpZiAo
YWxsRGF0YVJlY2VpdmVkKSB7CiAgICAgICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDIwMGUxYThmOWFmYmEwZmNiYmE1YjBhM2VkNzA0Y2Qz
NDFiNDUwZDYuLmM5ZDliMmE5Njg1YjAxZTkxYWFhMDBjMGUwMDMwNzczODU2OTE0MmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLmgKQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgSW5iYW5kTWV0YWRhdGFU
ZXh0VHJhY2tQcml2YXRlQVZGOwogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNzIE1l
ZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDOwogY2xhc3MgUGl4ZWxCdWZmZXJDb25mb3JtZXJDVjsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFz
cyBWaWRlb0xheWVyTWFuYWdlck9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM7
CiBjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI7CkBAIC00MjYsNyArNDI2LDcgQEAgcHJp
dmF0ZToKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1fd2FsbENsb2NrQXRD
YWNoZWRDdXJyZW50VGltZTsKICAgICBtdXRhYmxlIGludCBtX3RpbWVDb250cm9sU3RhdHVzQXRD
YWNoZWRDdXJyZW50VGltZSB7IDAgfTsKICAgICBtdXRhYmxlIGRvdWJsZSBtX3JlcXVlc3RlZFJh
dGVBdENhY2hlZEN1cnJlbnRUaW1lIHsgMCB9OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
a2V5SUQ7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fa2V5SUQ7CiAgICAg
ZG91YmxlIG1fY2FjaGVkUmF0ZSB7IDAgfTsKICAgICBib29sIG1fcmVxdWVzdGVkUGxheWluZyB7
IGZhbHNlIH07CiAgICAgZG91YmxlIG1fcmVxdWVzdGVkUmF0ZSB7IDEuMCB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KaW5kZXggZDE4YTg1YTc5NGY1MjNmOTQ5MTJlMjdmMDhiN2NjYmU4OTNjOGVk
MC4uMzYxMzRmZjI1NjI5ZTZkZWI5NzcxNDY1ZTE0ODMzMDQ1MDI3MWEzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCkBAIC0yMDQ5LDcgKzIwNDksNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkFzc2V0
UgogICAgICAgICB9CiAKICAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4ga2V5VVJJRGF0YSA9IFtr
ZXlVUkkgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgYWxsb3dMb3NzeUNv
bnZlcnNpb246WUVTXTsKLSAgICAgICAgbV9rZXlJRCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGtl
eVVSSURhdGEuZ2V0KCkpOworICAgICAgICBtX2tleUlEID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGtleVVSSURhdGEuZ2V0KCkpOwogICAgICAgICBwbGF5ZXIoKS0+aW5pdGlhbGl6
YXRpb25EYXRhRW5jb3VudGVyZWQoInNrZCJfcywgbV9rZXlJRC0+dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKSk7CiAgICAgICAgIHNldFdhaXRpbmdGb3JLZXkodHJ1ZSk7CiAjZW5kaWYKQEAgLTI3OTIs
NyArMjc5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YXR0
ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jCiAgICAgaWYgKCFtX2tleUlEIHx8
ICFtX2NkbUluc3RhbmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGluc3RhbmNlU2Vz
c2lvbiA9IG1fY2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMoVmVjdG9yPFJlZjxTaGFyZWRC
dWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOworICAgIGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9j
ZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOwogICAgIGlmICghaW5zdGFuY2VTZXNzaW9uKQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGQ5NjBhZmRjYTIxNGJmYTQ0MGVlYTIwODgzYmNhOTEz
MmUyMmY5YTAuLjRkZDZiOTFhOTQ4MzE2OWEwMjM2ODg4ZDBlNGQ4MmZmYjgzNjY2MmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5t
bQpAQCAtMjEzLDcgKzIxMyw3IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDKCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBw
ZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKICAgICBhdXRvIHNoYXJlZEJ1
ZmZlciA9IHNlZ21lbnQudGFrZVNoYXJlZEJ1ZmZlcigpOwotICAgIGF1dG8gbnNEYXRhID0gc2hh
cmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYgKG1fcGFyc2VyU3Rh
dGVXYXNSZXNldCB8fCBmbGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0eSkKICAgICAg
ICAgW21fcGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0
cmVhbURhdGFQYXJzZXJTdHJlYW1EYXRhRGlzY29udGludWl0eV07CiAgICAgZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKaW5k
ZXggMDM0MjBmMTM4MzY0ZmFjMjA5MWUxMDRkMTM2ZmYzOGExZmI5ZmUyMi4uZWFkMDgzYTZjYzdl
NzM2YjQyMTcxMGZhYzM5MmEwN2RmZjkyYmU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC03Myw3ICs3Myw3IEBAIGNs
YXNzIFZpZGVvVHJhY2tQcml2YXRlOwogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzsKIGNs
YXNzIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDRXJyb3JDbGllbnQgewogcHVibGljOgpAQCAtMTUzLDcgKzE1Myw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZChSZWY8TWVkaWFTYW1wbGU+
JiYsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKIAogICAgIC8v
IFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCi0gICAgdm9pZCBhcHBlbmQoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBhcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWJvcnQoKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0
UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSBm
aW5hbDsKQEAgLTIyMSw3ICsyMjEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQogICAgIFJlZlB0cjxD
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4gbV9jZG1JbnN0YW5jZTsKLSAgICBW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IG1fa2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+IG1fa2V5SURzOwogI2VuZGlmCiAKICAgICBzdGQ6Om9wdGlvbmFs
PEZsb2F0U2l6ZT4gbV9jYWNoZWRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCAzYTI4NjdhMWFjMjQzYmI5Yzkz
YzlkNmI3MGNhNTZiMDI5NDhmYzljLi43OTIxZTExNGQxN2Y4Y2E4ZTZkZDMwYjllNmY0N2JlZThj
ZGUzMGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5tbQpAQCAtNTMzLDcgKzUzMyw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YUZvCiAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlID0gaGFzU2Vzc2lvblNlbWFwaG9yZTsKICAg
ICAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJ
T04pCi0gICAgYXV0byBpbml0RGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1faW5p
dERhdGEtPmRhdGEoKSwgbV9pbml0RGF0YS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBhdXRvIGluaXRE
YXRhQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1faW5pdERhdGEtPmRh
dGEoKSwgbV9pbml0RGF0YS0+Ynl0ZUxlbmd0aCgpKTsKICAgICBhdXRvIGtleUlEcyA9IENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoaW5pdERhdGFCdWZmZXIp
OwogICAgIGlmICgha2V5SURzKQogICAgICAgICByZXR1cm47CkBAIC01NjMsNyArNTYzLDcgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KICAgICBVTlVTRURfUEFSQU0oaGFzU2Vzc2lvblNlbWFw
aG9yZSk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChSZWY8
U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjph
cHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIsICJkYXRhIGxlbmd0aCA9ICIsIGRhdGEtPnNpemUoKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5k
ZXggZjBkOGU3MTEzMmY2YzI4N2EyZTYyOWE0Yjg4YTUzOWRmZDUzY2JlMi4uMGVmZWVhZWY1YjJk
NzFiYzZkNjcwNGRkMWI5NzVhY2JhZTExM2JiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3Mg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzsKIGNsYXNzIFBsYXRmb3JtUmVzb3Vy
Y2VNZWRpYUxvYWRlcjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC02NSw3ICs2
NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwog
ICAgIHZvaWQgbG9hZEZpbmlzaGVkKCk7Ci0gICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRC
dWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZm
ZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQyogbV9wYXJlbnQ7CiAgICAgUmV0YWluUHRyPEFWQXNzZXRSZXNv
dXJjZUxvYWRpbmdSZXF1ZXN0PiBtX2F2UmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCBhMjJhOTk3YjExMDc5ZDQ2
NTg2YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5lNzdiYmQwYmI2YzQ4MmM1OTA3YzNjYTJiNGJlNTQ1
ODVjN2VmM2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tCkBAIC0xNTYsMTQgKzE1NiwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQg
cmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsIHsgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICBib29sIHNob3VsZENhY2hlUmVz
cG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZp
bmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgZmluYWwgeyB9
Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQg
YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9p
ZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmluaXNo
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmlu
YWwgeyBsb2FkRmluaXNoZWQoKTsgfQogCiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBt
X3BhcmVudDsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBtX3Jlc291cmNlOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgbV9idWZmZXI7CiB9OwogCiBXZWFrUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4g
UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyJiBwYXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjExLDEzICsyMTEsMTAgQEAgdm9pZCBQbGF0Zm9ybVJl
c291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgbV9wYXJlbnQubG9hZEZpbmlz
aGVkKCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2
b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAg
ICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKLSAg
ICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICBt
X3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyKTsKKyAgICBtX2J1
ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVk
SW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyLmdldCgpKTsKIH0KIAogY2xhc3MgRGF0YVVSTFJlc291
cmNlTWVkaWFMb2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RGF0YVVSTFJlc291cmNlTWVk
aWFMb2FkZXI+IHsKQEAgLTIyOCw3ICsyMjUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBt
X3Jlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIERhdGFVUkxSZXNvdXJj
ZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXImIHBhcmVudCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIzOCw3ICsy
MzUsNyBAQCBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJgogCiAgICAgaWYgKGF1dG8gcmVzdWx0ID0g
RGF0YVVSTERlY29kZXI6OmRlY29kZShyZXF1ZXN0LnVybCgpLCBEYXRhVVJMRGVjb2Rlcjo6TW9k
ZTo6Rm9yZ2l2aW5nQmFzZTY0KSkgewogICAgICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNw
b25zZTo6ZGF0YVVSTFJlc3BvbnNlKHJlcXVlc3QudXJsKCksICpyZXN1bHQpOwotICAgICAgICBt
X2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7Cisg
ICAgICAgIG1fYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
cmVzdWx0LT5kYXRhKSk7CiAgICAgfQogCiAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewpAQCAtMzg4LDcgKzM4NSw3IEBAIHZvaWQgV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIHN0b3BMb2FkaW5nKCk7
CiB9CiAKLXZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFy
ZWRCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewogICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdEYXRhUmVxdWVzdCogZGF0
YVJlcXVlc3QgPSBbbV9hdlJlcXVlc3QgZGF0YVJlcXVlc3RdOwogICAgIGlmICghZGF0YVJlcXVl
c3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggZGI0NTdhODFkM2VlODI5MWI5
MDVlOWJhNzdjMWUyYWYzMDllMGNiMi4uMzFkYjk3NDMxYWViMjIzZDM4NTJmZDZhM2FiMWFkYjU3
NWZiMGU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzEsMTAgKzMxLDEx
IEBAIHR5cGVkZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiAgRlRfRmFjZTsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0
aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRQbGF0Zm9ybURh
dGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
c3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZh
cmlhbnRTZXR0aW5nczsKIApAQCAtNDUsNyArNDYsNyBAQCBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiBwdWJsaWM6Ci0gICAgRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShGVF9GYWNlLCBTaGFyZWRCdWZmZXImKTsKKyAgICBGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKEZUX0ZhY2UsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB+Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YSgpID0gZGVmYXVsdDsKICAgICBGb250UGxhdGZvcm1EYXRhIGZvbnRQ
bGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxp
YywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogICAgIHN0YXRpYyBib29sIHN1cHBvcnRz
Rm9ybWF0KGNvbnN0IFN0cmluZyYpOwpAQCAtNTQsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxjYWlyb19mb250X2ZhY2VfdD4gbV9mb250RmFjZTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rl
ckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rl
ckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUwYzA2Li5k
YTc1MTg0NGU3MmRkYzZmYzZhZmU5N2QzM2I1M2MxOTc2ZTcwYjg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBA
IC0yMzEsNyArMjMxLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gZGVuc2l0eUNv
cnJlY3RlZFNpemVGcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYKICNpZiAhUExBVEZPUk0o
Q09DT0EpCiBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8s
IHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBjb3VudCkKIHsKLSAgICBTaGFy
ZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8p
OworICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBzaXplX3Qgc291cmNlU2l6ZSA9
IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpOwogICAgIGlmIChwb3NpdGlvbiA+PSBzb3VyY2VTaXplKQog
ICAgICAgICByZXR1cm4gMDsKQEAgLTI0NCwxNiArMjQ0LDE2IEBAIHNpemVfdCBzaGFyZWRCdWZm
ZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBvZmZfdCBwb3Np
dGlvbiwKIAogdm9pZCBzaGFyZWRCdWZmZXJSZWxlYXNlKHZvaWQqIGluZm8pCiB7Ci0gICAgU2hh
cmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihpbmZv
KTsKKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2Fz
dDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4oaW5mbyk7CiAgICAgc2hhcmVkQnVmZmVyLT5kZXJl
ZigpOwogfQogI2VuZGlmCiAKLUltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyhTaGFyZWRC
dWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0lt
YWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiB1dGlIaW50OwogICAgIGlmIChkYXRhLnNpemUoKSA+PSAzMikKLSAg
ICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRh
LmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgICAgIHV0aUhp
bnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIAog
ICAgIGlmICh1dGlIaW50KSB7CiAgICAgICAgIGNvbnN0IHZvaWQqIGtleSA9IGtDR0ltYWdlU291
cmNlVHlwZUlkZW50aWZpZXJIaW50OwpAQCAtNTYyLDIzICs1NjIsMjQgQEAgUGxhdGZvcm1JbWFn
ZVB0ciBJbWFnZURlY29kZXJDRzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBTdWJzYW1wbGkKICAgICByZXR1cm4gbWFza2VkSW1hZ2UgPyBtYXNrZWRJbWFnZSA6IGltYWdl
OwogfQogCi12b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIG1f
aXNBbGxEYXRhUmVjZWl2ZWQgPSBhbGxEYXRhUmVjZWl2ZWQ7CiAKICNpZiBQTEFURk9STShDT0NP
QSkKLSAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZlciBjYW4g
YmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mga25vd2xl
ZGdlLgotICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxm
IGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8g
aXMKLSAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIENHSW1h
Z2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5jcmVhdGVDRkRh
dGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBp
bnNpZGUgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVuZGVk
IHRvIHdpdGhvdXQgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2UuCisgICAg
Ly8gV2UgdXNlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxm
IGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8g
aXMKKyAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4K
KyAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEu
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7
CiAjZWxzZQotICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJl
ZEJ1ZmZlci4KLSAgICBkYXRhLnJlZigpOwotICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBv
c2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVz
ZSBTaGFyZWRCdWZmZXIKKyAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRo
ZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgorICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRh
Lm1ha2VDb250aWd1b3VzKCk7CisgICAgY29udGlndW91c0RhdGEuZ2V0KCkucmVmKCk7CisgICAg
Ly8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhl
IEdldEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIKICAgICAv
LyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUgYnl0ZSBwb2ludGVyIGFu
ZCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAogICAgIC8vIGlzIGEgcmVxdWly
ZW1lbnQgZm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFjay4KICAgICBDR0RhdGFQ
cm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsgMCwgMCwgMCwgc2hh
cmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJSZWxlYXNlIH07Ci0gICAg
UmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0
YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KCZkYXRhLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJh
Y2tzKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBh
ZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGNvbnRpZ3VvdXNEYXRhLnB0cigpLCBk
YXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFnZVNvdXJjZVVwZGF0
ZURhdGFQcm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92aWRlci5nZXQoKSwg
YWxsRGF0YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKaW5kZXggOTc0MDczNmEyMWFjOTk4
YWIwNWYxYzliNGY1YjE2NzVlNDRkMmM5MS4uYTBhYzFjMmZiZWU1MjdlNWFiMTExNDU1ODEyYmRi
NzM2M2EwNTU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VEZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5oCkBAIC0zMiw5ICszMiw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEltYWdlRGVjb2RlckNHIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW1hZ2VEZWNvZGVyQ0co
U2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pOworICAgIEltYWdlRGVjb2RlckNHKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKLSAgICBzdGF0aWMgUmVm
PEltYWdlRGVjb2RlckNHPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBh
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJDRz4gY3JlYXRlKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlckNHKGRhdGEsIGFscGhhT3B0aW9u
LCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgIH0KQEAgLTY0LDcgKzY0LDcgQEAg
cHVibGljOgogCiAgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChz
aXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25z
dCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hy
b25vdXMpKSBmaW5hbDsKIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFS
ZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAg
ICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsIHsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuY3BwCmluZGV4IDMxYzI3YzA2OWIyYjNjNzAzNzMyZWI3MTNiMjYzMTI4NDIxMjRlNmUuLmZm
NzdiNTNlOWQ2OWZjNDcwNDUxMjQ3MDJmMWEzNGYwZjJkODdjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3Bw
CkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjpkZXN0cm95RGVjb2Rl
ZERhdGEoYm9vbCkKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgp
CiB7Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9w
dENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPmNyZWF0ZUNGRGF0YSgp
LmdldCgpKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIg
PSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CiAgICAgbV9kb2N1bWVudCA9IGFkb3B0
Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udFBsYXRmb3JtRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCmluZGV4IDg1NDIxZTNkZTcwOWNlMTU5
YzQ5NGI0MGZiOGQxYWQyMzU5M2MzYmIuLjg0NGFjNDRmM2FkZGZhOWYzOTU3ODZiOTRiZGQ1MDk0
MWU3Mjc1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KQEAgLTU3LDcgKzU3LDcg
QEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIENGRXF1YWwobV9mb250LmdldCgpLCBv
dGhlci5tX2ZvbnQuZ2V0KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZv
cm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0CitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRh
YmxlKHVpbnQzMl90KSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlci5jcHAKaW5kZXggZjc0N2Q4MGZiNjFkMzBmYzUwMjJlNjgyZDYzNTYxMzNkM2Nh
Njk3YS4uYzhhODA2MTIyMDUzZjY0OGFkZGIwMmFjMzg5Y2U3MTQzNjhkYmJhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXIuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUGFy
c2VyOjpzZXRNaW5pbXVtQXVkaW9TYW1wbGVEdXJhdGlvbihmbG9hdCkKIHsKIH0KIAotU291cmNl
QnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQorU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50KFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fc2VnbWVudChXVEZNb3ZlKGJ1ZmZlcikpCiB7
CiB9CkBAIC0xMDEsNyArMTAxLDcgQEAgc2l6ZV90IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVu
dDo6c2l6ZSgpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gY2xhbXBUbzxzaXplX3Q+KE1UUGx1
Z2luQnl0ZVNvdXJjZUdldExlbmd0aChieXRlU291cmNlLmdldCgpKSk7CiAgICAgICAgIH0sCiAj
ZW5kaWYKLSAgICAgICAgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAgICAg
ICAgW10oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiBidWZmZXItPnNpemUoKTsKICAgICAgICAgfQpAQCAtMTI1
LDcgKzEyNSw3IEBAIGF1dG8gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpyZWFkKHNpemVf
dCBwb3NpdGlvbiwgc2l6ZV90IHNpemVUb1JlYWQsIHVpbnQ4CiAgICAgICAgICAgICByZXR1cm4g
VW5leHBlY3RlZDxSZWFkRXJyb3I+IHsgUmVhZEVycm9yOjpGYXRhbEVycm9yIH07CiAgICAgICAg
IH0sCiAjZW5kaWYKLSAgICAgICAgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IC0+IFJlYWRSZXN1bHQKKyAgICAgICAgWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKSAtPiBSZWFkUmVzdWx0CiAgICAgICAgIHsKICAgICAgICAgICAgIGJ1ZmZl
ci0+Y29weVRvKGRlc3RpbmF0aW9uLCBwb3NpdGlvbiwgc2l6ZVRvUmVhZCk7CiAgICAgICAgICAg
ICByZXR1cm4gc2l6ZVRvUmVhZDsKQEAgLTEzMyw3ICsxMzMsNyBAQCBhdXRvIFNvdXJjZUJ1ZmZl
clBhcnNlcjo6U2VnbWVudDo6cmVhZChzaXplX3QgcG9zaXRpb24sIHNpemVfdCBzaXplVG9SZWFk
LCB1aW50OAogICAgICk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNl
cjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1ZmZlcigpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50Ojp0YWtlU2hhcmVkQnVmZmVyKCkKIHsKICAg
ICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3NlZ21lbnQsCiAjaWYgSEFWRShNVF9QTFVHSU5fRk9S
TUFUX1JFQURFUikKQEAgLTE0MiwyOCArMTQyLDI4IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNvdXJj
ZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1ZmZlcigpCiAgICAgICAgICAgICBW
ZWN0b3I8dWludDhfdD4gdmVjdG9yKHNpemUoKSk7CiAgICAgICAgICAgICBhdXRvIHJlYWRSZXN1
bHQgPSByZWFkKDAsIHZlY3Rvci5zaXplKCksIHZlY3Rvci5kYXRhKCkpOwogICAgICAgICAgICAg
aWYgKCFyZWFkUmVzdWx0Lmhhc192YWx1ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgICAgIHJldHVybiBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgICAgIHZlY3Rvci5zaHJpbmsocmVhZFJlc3Vs
dC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKHZlY3RvcikpOworICAgICAgICAgICAgcmV0dXJuIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpOwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAgIFsm
XShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorICAgICAgICBbJl0oUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
OmV4Y2hhbmdlKGJ1ZmZlciwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpleGNoYW5nZShidWZmZXIsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpKTsKICAgICAgICAgfQogICAgICk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNvdXJj
ZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6Z2V0U2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OmdldFNo
YXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9zZWdtZW50
LAogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCi0gICAgICAgIFsmXShjb25zdCBS
ZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiYpIC0+IFJlZlB0cjxTaGFyZWRCdWZmZXI+
CisgICAgICAgIFsmXShjb25zdCBSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiYpIC0+
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPgogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfSwKICNlbmRpZgotICAgICAgICBbJl0oY29uc3QgUmVm
PFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4KKyAgICAgICAg
WyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGJ1
ZmZlci5wdHIoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAppbmRleCA1MjBiNTIw
N2ZjMjcxZDc5ODE1MzNmYjE0ZDIzMTU1OTRhODg4MzY1Li43Mjk3YTc5MTRhNzlhZGY2NDJkYzZi
MTZiMzZlNjBmOWNkMDI5ZjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApAQCAtNDUsNyArNDUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRUeXBlOwogY2xhc3MgTWVk
aWFTYW1wbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTb3VyY2VCdWZmZXJQYXJzZXIgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlQnVmZmVyUGFyc2VyPiB7CiBwdWJsaWM6CkBAIC02
OSwxMSArNjksMTEgQEAgcHVibGljOgogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIp
CiAgICAgICAgIFNlZ21lbnQoUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJik7CiAj
ZW5kaWYKLSAgICAgICAgU2VnbWVudChSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICAgICAgU2Vn
bWVudChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgICAgIFNlZ21lbnQoU2Vn
bWVudCYmKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRha2VTaGFyZWRC
dWZmZXIoKTsKLSAgICAgICAgLy8gV2lsbCByZXR1cm4gbnVsbHB0ciBpZiBTZWdtZW50J3MgYmFj
a2VuZCBpc24ndCBhIFNoYXJlZEJ1ZmZlci4KLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Z2V0U2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiB0YWtlU2hhcmVkQnVmZmVyKCk7CisgICAgICAgIC8vIFdpbGwgcmV0dXJuIG51bGxwdHIg
aWYgU2VnbWVudCdzIGJhY2tlbmQgaXNuJ3QgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgorICAg
ICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZ2V0U2hhcmVkQnVmZmVyKCkgY29u
c3Q7CiAKICAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKIApAQCAtODcsNyArODcsNyBAQCBw
dWJsaWM6CiAjaWYgSEFWRShNVF9QTFVHSU5fRk9STUFUX1JFQURFUikKICAgICAgICAgICAgIFJl
dGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VSZWY+LAogI2VuZGlmCi0gICAgICAgICAgICBSZWY8
U2hhcmVkQnVmZmVyPgorICAgICAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+CiAg
ICAgICAgID4gbV9zZWdtZW50OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHAKaW5kZXggMzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0YzhmZDZjN2Q2Yi4uOWJj
MTg5NDE5ODYzMGJhZDhkN2NiZDBiM2E1YjI4ZTQ2ZTllZmUyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgdm9pZCBGcmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwgc2l6ZV90KQogICAg
IHsKLSAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnBy
ZXRfY2FzdDxEYXRhU2VnbWVudCo+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZlci0+ZGVyZWYoKTsK
ICAgICB9CiAKQEAgLTM4OCw3ICszODgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgYWR2
YW5jZVRvTmV4dFNlZ21lbnQoKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IGN1
cnJlbnRTZWdtZW50LmdldFNoYXJlZEJ1ZmZlcigpOworICAgICAgICAgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IGN1cnJlbnRTZWdtZW50LmdldFNoYXJl
ZEJ1ZmZlcigpOwogICAgICAgICAgICAgQ01CbG9ja0J1ZmZlclJlZiByYXdCbG9ja0J1ZmZlciA9
IG51bGxwdHI7CiAgICAgICAgICAgICB1aW50NjRfdCBsYXN0UmVhZCA9IDA7CiAgICAgICAgICAg
ICBzaXplX3QgZGVzdGluYXRpb25PZmZzZXQgPSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKQEAg
LTQwOSw3ICs0MDksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25PZmZz
ZXQgPSAwOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoc2hh
cmVkQnVmZmVyLT5oYXNPbmVTZWdtZW50KCksICJDYW4gb25seSBkZWFsIHdpdGggc2hhcmVkQnVm
ZmVyIGNvbnRhaW5pbmcgYSBzaW5nbGUgRGF0YVNlZ21lbnQiKTsKLSAgICAgICAgICAgICAgICAv
LyBBIFNoYXJlZEJ1ZmZlciBkb2Vzbid0IGhhdmUgdGhyZWFkLXNhZmUgcmVmY291bnRpbmcsIGFz
IHN1Y2ggd2UgbXVzdCBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBEYXRhU2VnbWVudCBpbnN0ZWFk
LgorICAgICAgICAgICAgICAgIC8vIEEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBkb2Vzbid0IGhh
dmUgdGhyZWFkLXNhZmUgcmVmY291bnRpbmcsIGFzIHN1Y2ggd2UgbXVzdCBrZWVwIGEgcmVmZXJl
bmNlIHRvIHRoZSBEYXRhU2VnbWVudCBpbnN0ZWFkLgogICAgICAgICAgICAgICAgIC8vIFRPRE86
IGNvdWxkIHdlIG9ubHkgY3JlYXRlIGEgbmV3IENNQmxvY2tCdWZmZXIgaWYgdGhlIGJhY2tlbmQg
bWVtb3J5IGNoYW5nZWQgc2luY2UgdGhlIHByZXZpb3VzIG9uZT8KICAgICAgICAgICAgICAgICBh
dXRvIGZpcnN0U2VnbWVudCA9IHNoYXJlZEJ1ZmZlci0+YmVnaW4oKS0+c2VnbWVudDsKICAgICAg
ICAgICAgICAgICBzaXplX3QgY2FuUmVhZCA9IHN0ZDo6bWluPHNpemVfdD4obnVtVG9SZWFkLCBm
aXJzdFNlZ21lbnQtPnNpemUoKSAtIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9y
bURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
dGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCmluZGV4IDU5ZDIxNjY3OWQyZmU0Yzgw
YzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEuLmNjNTk0ZjM4NGU1NjM1ZGVkYThmNDIzZjY4NGRhNWI1
NTQ5NzA2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcApA
QCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWluUHRyPENGVHlwZVJlZj4gRm9udFBsYXRmb3JtRGF0
YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpIGNvbnN0CiAgICAgcmV0dXJuIG9iamVjdEZvckVx
dWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxh
dGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWlu
dDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgaWYgKFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEg
PSBhZG9wdENGKENURm9udENvcHlUYWJsZShjdEZvbnQoKSwgdGFibGUsIGtDVEZvbnRUYWJsZU9w
dGlvbk5vT3B0aW9ucykpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggZTgw
NTA5ZWNjYTA1ZDJjYzhlZDEwNjYwNzA0MWY1Y2NjYzNlMzc5NC4uNjM4ZTY4Mzk3YTJiNjY5NmIy
ZjFlZGUyNGVhOGZkYjkwNjI2Y2VkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5jcHAKQEAgLTcyOSw3ICs3MjksNyBAQCBEaWRDaGFuZ2VJdGVtQnVmZmVyIEl0
ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVz
KQogdm9pZCBJdGVtQnVmZmVyOjphcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJdGVtJiB0ZW1wb3Jh
cnlJdGVtKQogewogICAgIGF1dG8gcmVxdWlyZWRTaXplRm9ySXRlbSA9IG1fd3JpdGluZ0NsaWVu
dC0+cmVxdWlyZWRTaXplRm9ySXRlbSh0ZW1wb3JhcnlJdGVtKTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBvdXRPZkxpbmVJdGVtOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBvdXRPZkxpbmVJdGVtOwogICAgIGlmICghcmVxdWlyZWRTaXplRm9ySXRlbSkgewogICAgICAg
ICBvdXRPZkxpbmVJdGVtID0gbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtT3V0T2ZMaW5lKHRl
bXBvcmFyeUl0ZW0pOwogICAgICAgICBpZiAoIW91dE9mTGluZUl0ZW0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKaW5kZXggYzg3MzE5ODJlZjgzOTMxYmJhZTMxYjc4
NjUwYWMwZGEyMGEwNWZjNS4uYjMxYmM1ZmQ0ZTkyMTRiMTVhMzc2MWZiZTk4ZDYwY2ViNDdhOThm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaApAQCAtMTAyLDcg
KzEwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29u
c3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QKKyAgICB2aXJ0dWFsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYp
IGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xNjgsNyAr
MTY4LDcgQEAgcHVibGljOgogICAgIC8vIHdpdGggcGFkZGluZyBiZXR3ZWVuIGVhY2ggaXRlbSB0
byBlbnN1cmUgdGhhdCBhbGwgaXRlbXMgYXJlIGFsaWduZWQgdG8gOCBieXRlcy4KICAgICAvLwog
ICAgIC8vIElmIGEgd3JpdGluZyBjbGllbnQgaXMgcHJlc2VudCBhbmQgcmVxdWlyZXMgY3VzdG9t
IGVuY29kaW5nIGZvciB0aGUgZ2l2ZW4gaXRlbSB0eXBlIFQsIHRoZQotICAgIC8vIGl0ZW0gYnVm
ZmVyIHdpbGwgYXNrIHRoZSBjbGllbnQgZm9yIGFuIG9wYXF1ZSBTaGFyZWRCdWZmZXIgY29udGFp
bmluZyBlbmNvZGVkIGRhdGEgZm9yIHRoZQorICAgIC8vIGl0ZW0gYnVmZmVyIHdpbGwgYXNrIHRo
ZSBjbGllbnQgZm9yIGFuIG9wYXF1ZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcg
ZW5jb2RlZCBkYXRhIGZvciB0aGUKICAgICAvLyBpdGVtLiBUaGlzIGVuY29kZWQgZGF0YSBpcyB0
aGVuIGFwcGVuZGVkIHRvIHRoZSBpdGVtIGJ1ZmZlciwgd2l0aCBwYWRkaW5nIHRvIGVuc3VyZSB0
aGF0CiAgICAgLy8gdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhpcyBkYXRhIGFyZSBhbGlnbmVkIHRv
IDggYnl0ZXMsIGlmIG5lY2Vzc2FyeS4gV2hlbiBjb25zdW1pbmcgZW5jb2RlZAogICAgIC8vIGl0
ZW0gZGF0YSwgYSBjb3JyZXNwb25kaW5nIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IHdpbGwgYmUg
cmVxdWlyZWQgdG8gY29udmVydCB0aGlzIGVuY29kZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVl
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhj
MzBjY2FiMmQxOTExMGYyNDFlZWMuLmViMDg5ZjY0NmQ3NTZlYmI5YWUyZjQzNTQ0ZDA0YTEwZjM3
OWFlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVU
eXBlLmNwcApAQCAtMzgsMTIgKzM4LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IHZvaWQgcmVsZWFzZUN1c3RvbUZvbnREYXRhKHZvaWQqIGRhdGEpCiB7Ci0gICAgc3RhdGljX2Nh
c3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwogfQogCiBzdGF0aWMgY2Fpcm9fdXNl
cl9kYXRhX2tleV90IGZyZWVUeXBlRmFjZUtleTsKIAotRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9GYWNlIGZyZWVUeXBlRmFjZSwgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KEZUX0ZhY2UgZnJlZVR5cGVGYWNlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAg
ICAgOiBtX2ZvbnRGYWNlKGFkb3B0UmVmKGNhaXJvX2Z0X2ZvbnRfZmFjZV9jcmVhdGVfZm9yX2Z0
X2ZhY2UoZnJlZVR5cGVGYWNlLCBGVF9MT0FEX0RFRkFVTFQpKSkKIHsKICAgICBidWZmZXIucmVm
KCk7IC8vIFRoaXMgaXMgYmFsYW5jZWQgYnkgdGhlIGJ1ZmZlci0+ZGVyZWYoKSBpbiByZWxlYXNl
Q3VzdG9tRm9udERhdGEuCkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIGJvb2wgaW5pdGlhbGl6
ZUZyZWVUeXBlTGlicmFyeShGVF9MaWJyYXJ5JiBsaWJyYXJ5KQogICAgIHJldHVybiB0cnVlOwog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJikKK3N0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJikK
IHsKICAgICBzdGF0aWMgRlRfTGlicmFyeSBsaWJyYXJ5OwogICAgIGlmICghbGlicmFyeSAmJiAh
aW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShsaWJyYXJ5KSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQ
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNjg5Y2I2NzllNjMyZTJmNWEyYTJmZTA2NDU4
MTFkODg2NmE5MGM0Mi4uZmVkODU0MGY0YWViYzg0YzY5YjI5MDgwNjk3YzEyNDYwMWQ1YjYyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0yNDksNyAr
MjQ5LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpoYXNDb21wYXRpYmxlQ2hhcm1hcCgpIGNv
bnN0CiAgICAgICAgICYmIEZUX1NlbGVjdF9DaGFybWFwKGZyZWVUeXBlRmFjZSwgZnRfZW5jb2Rp
bmdfYXBwbGVfcm9tYW4pKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90
IHRhYmxlKSBjb25zdAogewogICAgIENhaXJvRnRGYWNlTG9ja2VyIGNhaXJvRnRGYWNlTG9ja2Vy
KG1fc2NhbGVkRm9udC5nZXQoKSk7CiAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2UgPSBjYWlyb0Z0
RmFjZUxvY2tlci5mdEZhY2UoKTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25z
dAogICAgIGlmIChlcnJvciB8fCB0YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJsZVNpemUpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShkYXRhKSk7CiB9CiAKICNpZiBVU0UoSEFSRkJVWlopICYmICFFTkFCTEUoT1BFTlRZ
UEVfTUFUSCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggMDE2MDVmYzkxNDk3ZTQ2
MmJhMDc3MzA0NzhlODRhODU1MWU2NzIzZi4uMTQ3NDgyOGZkZTY2OTI0ZDQyYmFhYzMzMzRmZjhk
NWMzYjRhZDc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTQyMiw5ICs0MjIs
OSBAQCBWZWN0b3I8dWludDhfdD4gR3N0TWFwcGVkQnVmZmVyOjpjcmVhdGVWZWN0b3IoKSBjb25z
dAogICAgIHJldHVybiB7IGRhdGEoKSwgc2l6ZSgpIH07CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+
IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIoKQorUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIo
KQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CiAKIGJvb2wgaXNHU3Ry
ZWFtZXJQbHVnaW5BdmFpbGFibGUoY29uc3QgY2hhciogbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21t
b24uaAppbmRleCBiYmI4YzEzOTZmMDAzZDY0MjY4ODk3OWE2ODRjNjYxYjFjYjg3MWJlLi5kMDE0
Y2M2YTVkYzdiMTdlMzk5NjAwNmJmNmVhNjhhOGJjOTk0YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNv
bW1vbi5oCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElu
dFNpemU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogCiBpbmxpbmUgYm9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24oZ3VpbnQgbWFqb3IsIGd1aW50
IG1pbm9yLCBndWludCBtaWNybykKIHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHVubWFwRWFybHkoKTsKICAgICB9CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVT
aGFyZWRCdWZmZXIoKTsKKyAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hh
cmVkQnVmZmVyKCk7CiAKIHByaXZhdGU6CiAgICAgR3N0TWFwcGVkT3duZWRCdWZmZXIoR1JlZlB0
cjxHc3RCdWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
LmNwcAppbmRleCA5YWQxOWI4NzZiMjdlNjBkNGZiYTUwMzBlNjVmODFlN2NhOGE1MDY5Li5kZmJj
NTgwZmI4ZTliMzA5MzZjY2EwOGJiODhiNDljMmJiNjUzYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtODEsMTIgKzgxLDEyIEBAIEltYWdlRGVjb2RlckdT
dHJlYW1lclNhbXBsZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRlcikKICAgICByZXR1cm4gKEltYWdl
RGVjb2RlckdTdHJlYW1lclNhbXBsZSopaXRlci0+c2Vjb25kLmdldCgpOwogfQogCi1SZWZQdHI8
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZShTaGFy
ZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IEltYWdlRGVjb2RlckdTdHJlYW1l
cjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBJbWFnZURlY29kZXJHU3RyZWFtZXIoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogfQogCi1JbWFnZURlY29kZXJHU3RyZWFtZXI6Oklt
YWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVj
b2RlckdTdHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikKICAgICA6IG1fbWltZVR5cGUobWltZVR5cGUpCiB7CiAgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwpAQCAtMTk5LDcgKzE5OSw3IEBAIFBsYXRmb3Jt
SW1hZ2VQdHIgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChz
aXplX3QgaW5kZXgsIFN1CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCkKK3ZvaWQgSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wpCiB7CiAgICAgcHVzaEVuY29kZWREYXRhKGRhdGEpOwogfQpAQCAtNDI2LDEwICs0MjYs
MTEgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29k
ZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKICAgICByZXR1cm4gRW5jb2RlZERhdGFTdGF0
dXM6OlVua25vd247CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2Rl
ZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIEltYWdlRGVjb2RlckdTdHJl
YW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMo
KTsKICAgICBtX2VvcyA9IGZhbHNlOwotICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUo
IkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gYnVmZmVyLmRhdGEoKSwgc2l6
ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJ
bWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGNvbnRpZ3VvdXNCdWZmZXItPmRh
dGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKICAgICAgICAgbV9pbm5lckRlY29kZXIgPSBJ
bWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6Y3JlYXRlKCp0aGlzLCBkYXRhLCBz
aXplKTsKICAgICAgICAgbV9pbm5lckRlY29kZXItPnJ1bigpOwogICAgIH0sIFRocmVhZFR5cGU6
OkdyYXBoaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAppbmRleCA2NmYz
MzcyODQ2YTRkZjg3NGY0MjBkYjY1NGU2ODljOWU0M2IwYzUyLi5kM2VmNmE0NWNkN2RiZGZjMzEy
MGVhMjNmOGRlYjNjNTk5NzFhZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1l
ci5oCkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIEltYWdlRGVjb2RlckdTdHJlYW1lciBmaW5hbCA6
IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2RlckdTdHJlYW1lcik7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IGNyZWF0ZShTaGFyZWRCdWZm
ZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOwotICAgIEltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBjcmVhdGUo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdl
RGVjb2RlckdTdHJlYW1lcigpID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBib29sIHN1cHBvcnRz
TWVkaWFUeXBlKE1lZGlhVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID09IE1lZGlhVHlwZTo6Vmlk
ZW87IH0KQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxp
bmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9u
cyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVj
dGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNldERhdGEoU2hh
cmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0
YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwog
ICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Vvczsg
fQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAgLTEy
Miw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICB2b2lkIGhhbmRsZVNhbXBsZShH
UmVmUHRyPEdzdFNhbXBsZT4mJik7Ci0gICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJik7CisgICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKiBz
YW1wbGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNzk3OTQ4MGY5MWM1OTdhYTlmOTAwOTdjMTg4
MzJjNmExNWMzMmNlOC4uYjMyNGNmMTE0NjQ3YjMzNzVlNmE0NWJmYWIxMDNlMGEyOTBmYjhkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAg
LTM2OTIsNyArMzY5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjppbml0
aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChJbml0RGF0YSYmIGluaXRECiAKICAgICAgICAgR1NU
X0RFQlVHKCJzY2hlZHVsaW5nIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkICVzIGV2ZW50
IG9mIHNpemUgJXp1IiwgaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKS51dGY4KCkuZGF0
YSgpLAogICAgICAgICAgICAgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwotICAgICAgICBH
U1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGluaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkp
OworICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
KSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogICAgICAgICB3ZWFrVGhpcy0+bV9wbGF5
ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhLnBheWxvYWRDb250YWlu
ZXJUeXBlKCksIGluaXREYXRhLnBheWxvYWQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiAg
ICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmlu
ZGV4IDVkODZmYjFhZjQ4N2MwMjg5ZTAwMTI1NTk2NWMzMWRjZGE5NzM0MjYuLjkzMDE5MDk5NDVi
NGEyM2Q2Njc4MmYzNTBiNTZlNDQ3OWY4MDI2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAgICAv
LyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRob2RzLgogICAgIHZvaWQg
cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNoZWNr
KT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxv
YWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92
ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtMTA5Myw3ICsxMDkzLDcgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb24KICAgICBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRDb250
aW51ZVBvbGljeUNoZWNrOjpZZXMpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5n
Q2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRh
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgV2ViS2l0
V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xl
YXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
Q0RNUHJveHlDbGVhcktleS5oCmluZGV4IDY5MmE5OTZkMTljMjRlZmQ5YTQ4NTUyMzczYTU2Nzli
NTJlMWVmMWMuLjM0OWJmZGNhYWQ2YzdkN2Y4ZDVhZGEwYTE3MjE5ZmQ5ZTcwNjI2ZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
UHJveHlDbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCkBAIC02MiwxMSArNjIsMTEgQEAgcHVibGlj
OgogICAgIENETVByb3h5Q2xlYXJLZXkoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+Q0RNUHJv
eHlDbGVhcktleSgpOwogCi0gICAgLy8gRklYTUU6IFRoZXJlJ3MgYSBsYWNrIG9mIGNvbnNpc3Rl
bmN5IGJldHdlZW4gU2hhcmVkQnVmZmVycywKKyAgICAvLyBGSVhNRTogVGhlcmUncyBhIGxhY2sg
b2YgY29uc2lzdGVuY3kgYmV0d2VlbiBGcmFnbWVudGVkU2hhcmVkQnVmZmVycywKICAgICAvLyBW
ZWN0b3I8Y2hhcj4ncyBhbmQge3VpbnQ4X3QqLHNpemVfdH0gaWRpb21zIGZvciByZXByZXNlbnRp
bmcgYSBjaHVuayBvZgotICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBzb21laG93LiBOb3RlIFNoYXJl
ZEJ1ZmZlcnMgYXJlIGRhbmdlcm91cyBzaW5jZQorICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBzb21l
aG93LiBOb3RlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJzIGFyZSBkYW5nZXJvdXMgc2luY2UKICAg
ICAvLyB0aGV5J3JlIG5vdCB0aHJlYWQtc2FmZSBhbmQgdGhpcyBjbGFzcyBtdXN0IG1haW50YWlu
Ci0gICAgLy8gdGhyZWFkLXNhZmV0eSwgYnV0IG1heWJlIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQgY291bGQgYmUKKyAgICAvLyB0aHJlYWQtc2FmZXR5LCBidXQgbWF5YmUgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQgY291bGQgYmUKICAgICAvLyBtYWRlIHRvIHdvcmssIGhv
d2V2ZXIgdGhhdCBoYXMgemVybyBoZWxwZXJzIGZvciBkcm9wcGluZyBpbnRvCiAgICAgLy8gaXRl
cmF0b3ItYXdhcmUgLyBjb21wYXJhdG9yLWF3YXJlIGNvbnRhaW5lcnMuLi4KICAgICBzdHJ1Y3Qg
Y2VuY0RlY3J5cHRDb250ZXh0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCmluZGV4IDJlZmEw
NDM2MGU4ODQ4MzgwNjE0NGMzZDcxZGU2M2FkN2I0MmI1NjEuLjZiOWE1YjE4MDU0MDE3YWJjN2I4
YzNhZWM0MGZjMWMxZWUyZDAxYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcApAQCAtMjIw
LDcgKzIyMCw3IEBAIGJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzU2Vzc2lvbnMoKSBj
b25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVk
QnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUgaW5p
dERhdGEgYnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0IGluIGtleWlkcyBjYXNlLgogICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJrZXlpZHMiKSAmJiBD
RE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdChpbml0RGF0YSkpCkBAIC0yMzcsNyArMjM3LDcg
QEAgYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gQ0RNUHJpdmF0ZVRodW5kZXI6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlc3BvbnNlLmNv
cHkoKTsKIH0KQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6aW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYQogICAg
IGNhbGxiYWNrKFN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjpzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCAgU3VjY2Vz
c0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVy
Q2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsICBT
dWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBPcGVuQ0RNRXJyb3IgZXJyb3IgPSBv
cGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2NlcnRpZmljYXRlKG1fdGh1bmRlclN5c3RlbS5nZXQo
KSwgY29uc3RfY2FzdDx1aW50OF90Kj4oY2VydGlmaWNhdGUtPmRhdGEoKSksCiAgICAgICAgIGNl
cnRpZmljYXRlLT5zaXplKCkpOwpAQCAtMjgwLDcgKzI4MCw3IEBAIENETUluc3RhbmNlU2Vzc2lv
blRodW5kZXI6OkNETUluc3RhbmNlU2Vzc2lvblRodW5kZXIoQ0RNSW5zdGFuY2VUaHVuZGVyJiBp
bnN0YW5jCiAgICAgICAgIGNvbnN0IHVpbnQxNl90IGNoYWxsZW5nZUxlbmd0aCkgewogICAgICAg
ICBHU1RfREVCVUcoIkdvdCAnY2hhbGxlbmdlJyBPQ0RNIG5vdGlmaWNhdGlvbiB3aXRoIGxlbmd0
aCAlaHUiLCBjaGFsbGVuZ2VMZW5ndGgpOwogICAgICAgICBBU1NFUlQoY2hhbGxlbmdlTGVuZ3Ro
ID4gMCk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb24gPSBXZWFrUHRyIHsgc3Rh
dGljX2Nhc3Q8Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcio+KHVzZXJEYXRhKSB9LCBidWZmZXIg
PSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShjaGFsbGVuZ2UsCisgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3Nlc3Npb24gPSBXZWFrUHRyIHsgc3RhdGljX2Nhc3Q8Q0RNSW5zdGFuY2VT
ZXNzaW9uVGh1bmRlcio+KHVzZXJEYXRhKSB9LCBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoY2hhbGxlbmdlLAogICAgICAgICAgICAgY2hhbGxlbmdlTGVu
Z3RoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghc2Vzc2lvbikKICAgICAgICAgICAg
ICAgICByZXR1cm47CkBAIC0zMDcsNyArMzA3LDcgQEAgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRl
cjo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcihDRE1JbnN0YW5jZVRodW5kZXImIGluc3RhbmMK
ICAgICB9OwogICAgIG1fdGh1bmRlclNlc3Npb25DYWxsYmFja3MuZXJyb3JfbWVzc2FnZV9jYWxs
YmFjayA9IFtdKE9wZW5DRE1TZXNzaW9uKiwgdm9pZCogdXNlckRhdGEsIGNvbnN0IGNoYXIgbWVz
c2FnZVtdKSB7CiAgICAgICAgIEdTVF9FUlJPUigiR290ICdlcnJvcicgT0NETSBub3RpZmljYXRp
b246ICVzIiwgbWVzc2FnZSk7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb24gPSBX
ZWFrUHRyIHsgc3RhdGljX2Nhc3Q8Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcio+KHVzZXJEYXRh
KSB9LCBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShtZXNzYWdlLAorICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNzaW9uID0gV2Vha1B0ciB7IHN0YXRpY19jYXN0PENE
TUluc3RhbmNlU2Vzc2lvblRodW5kZXIqPih1c2VyRGF0YSkgfSwgYnVmZmVyID0gV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2UsCiAgICAgICAgICAgICBzdHJs
ZW4obWVzc2FnZSkpXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCFzZXNzaW9uKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTMyNiw3ICszMjYsNyBAQCBSZWZQdHI8Q0RNSW5zdGFu
Y2VTZXNzaW9uPiBDRE1JbnN0YW5jZVRodW5kZXI6OmNyZWF0ZVNlc3Npb24oKQogY2xhc3MgUGFy
c2VkUmVzcG9uc2VNZXNzYWdlIHsKIAogcHVibGljOgotICAgIFBhcnNlZFJlc3BvbnNlTWVzc2Fn
ZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorICAgIFBhcnNlZFJlc3BvbnNl
TWVzc2FnZShjb25zdCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKICAg
ICB7CiAgICAgICAgIGlmICghYnVmZmVyIHx8ICFidWZmZXItPnNpemUoKSkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTM0NywxNSArMzQ3LDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fdHlw
ZSA9IHN0ZDo6bWFrZV9vcHRpb25hbChzdGF0aWNfY2FzdDxXZWJDb3JlOjpNZWRpYUtleU1lc3Nh
Z2VUeXBlPihwYXJzZUludGVnZXI8aW50PihyZXF1ZXN0VHlwZSkudmFsdWVfb3IoMCkpKTsKICAg
ICAgICAgfQogCi0gICAgICAgIG1fcGF5bG9hZCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBheWxv
YWQuY2hhcmFjdGVyczgoKSArIG9mZnNldCwgcGF5bG9hZC5sZW5ndGgoKSAtIG9mZnNldCk7Cisg
ICAgICAgIG1fcGF5bG9hZCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShwYXlsb2Fk
LmNoYXJhY3RlcnM4KCkgKyBvZmZzZXQsIHBheWxvYWQubGVuZ3RoKCkgLSBvZmZzZXQpOwogCiAg
ICAgICAgIG1faXNWYWxpZCA9IHRydWU7CiAgICAgfQogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29u
c3QgeyByZXR1cm4gbV9pc1ZhbGlkOyB9CiAgICAgYm9vbCBoYXNQYXlsb2FkKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9wYXlsb2FkKTsgfQotICAgIGNvbnN0IFJlZjxTaGFy
ZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBt
X3BheWxvYWQudmFsdWUoKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgJiB7
IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KKyAgICBjb25z
dCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCYgeyBBU1NFUlQo
bV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CisgICAgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgJiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4g
bV9wYXlsb2FkLnZhbHVlKCk7IH0KICAgICBib29sIGhhc1R5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGUuaGFzX3ZhbHVlKCk7IH0KICAgICBXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlIHR5
cGUoKSBjb25zdCB7IEFTU0VSVChtX3R5cGUpOyByZXR1cm4gbV90eXBlLnZhbHVlKCk7IH0KICAg
ICBXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlIHR5cGVPcihXZWJDb3JlOjpNZWRpYUtleU1l
c3NhZ2VUeXBlIGFsdGVybmF0ZSkgY29uc3QgeyByZXR1cm4gbV90eXBlID8gbV90eXBlLnZhbHVl
KCkgOiBhbHRlcm5hdGU7IH0KQEAgLTM2NCwxMSArMzY0LDExIEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICBib29sIG1faXNWYWxpZCB7IGZhbHNlIH07Ci0gICAgc3RkOjpvcHRpb25hbDxSZWY8
U2hhcmVkQnVmZmVyPj4gbV9wYXlsb2FkOworICAgIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiBtX3BheWxvYWQ7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpN
ZWRpYUtleU1lc3NhZ2VUeXBlPiBtX3R5cGU7CiB9OwogCi12b2lkIENETUluc3RhbmNlU2Vzc2lv
blRodW5kZXI6OmNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpjaGFsbGVuZ2VHZW5l
cmF0ZWRDYWxsYmFjayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7
CiAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShidWZmZXIp
OwogICAgIGlmICghcGFyc2VkUmVzcG9uc2VNZXNzYWdlKSB7CkBAIC00NzUsNyArNDc1LDcgQEAg
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjprZXlzVXBkYXRlRG9uZUNhbGxiYWNrKCkK
ICAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IG1lc3NhZ2UpCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2so
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBHU1RfRVJS
T1IoIkNETSBlcnJvciIpOwogICAgIEdTVF9NRU1EVU1QKCJlcnJvciBkdW1wIiwgbWVzc2FnZS0+
ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwpAQCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IG1lc3NhZ2UpCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQogCi12
b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
IGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgaW5pdERhdGFTaGFyZWRCdWZmZXIsCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRo
dW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXRE
YXRhU2hhcmVkQnVmZmVyLAogICAgIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC01MDYsNyArNTA2LDcgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlw
ZSwgY29uc3QgQXQKICAgICAgICAgbV9pbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSwgbV9pbml0
RGF0YS5wYXlsb2FkKCktPnNpemUoKSwgbnVsbHB0ciwgMCwgJm1fdGh1bmRlclNlc3Npb25DYWxs
YmFja3MsIHRoaXMsICZzZXNzaW9uKTsKICAgICBpZiAoIXNlc3Npb24pIHsKICAgICAgICAgR1NU
X0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIHNlc3Npb24iKTsKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKKyAgICAgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7
CiAgICAgICAgIGNhbGxiYWNrKGluaXREYXRhLnJlbGVhc2VOb25OdWxsKCksIHsgfSwgZmFsc2Us
IEZhaWxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01MTUsNyArNTE1LDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBs
aWNlbnNlVHlwZSwgY29uc3QgQXQKIAogICAgIGF1dG8gZ2VuZXJhdGVDaGFsbGVuZ2UgPSBbdGhp
cywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5pdERh
dGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CiAgICAgICAgIGlmICht
X3Nlc3Npb25JRC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIEdTVF9FUlJPUigiY291bGQgbm90
IGNyZWF0ZSBzZXNzaW9uIGlkIik7CiAgICAgICAgICAgICBjYWxsYmFjayhpbml0RGF0YS5yZWxl
YXNlTm9uTnVsbCgpLCB7IH0sIGZhbHNlLCBGYWlsZWQpOwpAQCAtNTQ1LDEzICs1NDUsMTMgQEAg
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpzZXNzaW9uRmFpbHVyZSgpCiAgICAgbV9z
ZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vz
c2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vu
c2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJh
Y2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFj
aykKIHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09IG1fc2Vzc2lv
bklEKTsKIAogICAgIEdTVF9UUkFDRSgiVXBkYXRpbmcgc2Vzc2lvbiAlcyIsIHNlc3Npb25JRC51
dGY4KCkuZGF0YSgpKTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0
aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25D
aGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25z
ZU1lc3NhZ2UpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAg
ICAgICBpZiAoc3VjY2VzcykgewogICAgICAgICAgICAgaWYgKCFyZXNwb25zZU1lc3NhZ2UpCkBA
IC01NjIsNyArNTYyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHkKICAgICAgICAgICAgICAg
ICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKHJlc3BvbnNlTWVz
c2FnZSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNlTWVzc2FnZSk7CiAg
ICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUo
cGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CisgICAgICAgICAgICAgICAgICAgIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25z
ZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJnb3Qg
bWVzc2FnZSBvZiBzaXplICV6dSIsIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIEdTVF9NRU1EVU1QKCJtZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXpl
KCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQsCkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25U
aHVuZGVyOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQK
IHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09IG1fc2Vzc2lvbklE
KTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJh
Y2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNj
ZXNzLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZU1lc3NhZ2UpIG11
dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoc3Vj
Y2VzcykgewogICAgICAgICAgICAgaWYgKCFyZXNwb25zZU1lc3NhZ2UpCkBAIC01OTcsNyArNTk3
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbihMaWNlbnNl
VHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQKICAgICAgICAgICAgICAgICBQYXJzZWRSZXNw
b25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKHJlc3BvbnNlTWVzc2FnZSk7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAgICAg
ICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9u
c2VNZXNzYWdlLnBheWxvYWQoKSk7CisgICAgICAgICAgICAgICAgICAgIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5
bG9hZCgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVzc2FnZSBvZiBz
aXplICV6dSIsIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9NRU1E
VU1QKCJtZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAg
ICAgICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpt
YWtlX3BhaXIocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnR5cGVPcihNZWRpYUtleU1lc3NhZ2VUeXBl
OjpMaWNlbnNlUmVxdWVzdCksCkBAIC02NDAsNyArNjQwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwg
TGljZW4KIHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgbV9zZXNzaW9uSUQgPT0gc2Vz
c2lvbklEKTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tz
LmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNz
LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIG11dGFibGUgewogICAg
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoc3VjY2VzcykgewogICAg
ICAgICAgICAgaWYgKCFidWZmZXIpCkBAIC02NDksNyArNjQ5LDcgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25J
RCwgTGljZW4KICAgICAgICAgICAgICAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVz
cG9uc2VNZXNzYWdlKGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNlZFJlc3Bv
bnNlTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5o
YXNQYXlsb2FkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVz
c2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CisgICAgICAg
ICAgICAgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92
ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAgICAgICAg
R1NUX0RFQlVHKCJzZXNzaW9uICVzIHJlbW92ZWQsIG1lc3NhZ2UgbGVuZ3RoICV6dSIsIG1fc2Vz
c2lvbklELnV0ZjgoKS5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKG1fa2V5U3RvcmUuYWxsS2V5c0FzKE1lZGlhS2V5U3RhdHVzOjpSZWxlYXNl
ZCksIFdURk1vdmUobWVzc2FnZSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKICAgICAgICAg
ICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaAppbmRleCBjZGQ4ZGEyMTEyM2Mx
NzkxYWUyZmI2NDM5ZmYyZDZmYTBkMmViMjFjLi4xMDIwZTE1MzIyNzFiNTM1MWUxMDZkZGU4ZjIx
ZWE1NDA1YTljMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaApAQCAtOTMsOCArOTMsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwogICAgIGJvb2wgc3Vw
cG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRz
U2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29u
c3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5p
dGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKQEAg
LTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFuY2UKICAgICBJbXBsZW1l
bnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1w
bGVtZW50YXRpb25UeXBlOjpUaHVuZGVyOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZp
Z3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3Rp
dmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBm
aW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYs
IFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRl
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7
CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAg
IGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9rZXlTeXN0
ZW07IH0KICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmlu
YWw7CkBAIC0xMjYsOCArMTI2LDggQEAgY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlciBm
aW5hbCA6IHB1YmxpYyBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSB7CiBwdWJsaWM6CiAgICAgQ0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlcihDRE1JbnN0YW5jZVRodW5kZXImKTsKIAotICAgIHZvaWQg
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFs
OwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZv
aWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGlj
ZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAg
ICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYm
KSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vu
c2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpAQCAtMTQxLDE0ICsx
NDEsMTQgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBDRE1JbnN0YW5jZVRodW5kZXIqIGNkbUlu
c3RhbmNlVGh1bmRlcigpIGNvbnN0OwogCi0gICAgdXNpbmcgTm90aWZpY2F0aW9uID0gdm9pZCAo
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6KikoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJik7CisgICAgdXNpbmcgTm90aWZpY2F0aW9uID0gdm9pZCAoQ0RNSW5zdGFuY2VTZXNzaW9u
VGh1bmRlcjo6KikoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwog
ICAgIHVzaW5nIENoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsK
LSAgICB1c2luZyBTZXNzaW9uQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChib29sLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT47CisgICAgdXNpbmcgU2Vzc2lvbkNoYW5nZWRDYWxsYmFj
ayA9IEZ1bmN0aW9uPHZvaWQoYm9vbCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
PjsKIAotICAgIHZvaWQgY2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJik7CisgICAgdm9pZCBjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBrZXlVcGRhdGVkQ2FsbGJhY2soS2V5
SURUeXBlJiYpOwogICAgIHZvaWQga2V5c1VwZGF0ZURvbmVDYWxsYmFjaygpOwotICAgIHZvaWQg
ZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGVycm9yQ2Fs
bGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIENETUluc3RhbmNl
U2Vzc2lvbjo6S2V5U3RhdHVzIHN0YXR1cyhjb25zdCBLZXlJRFR5cGUmKSBjb25zdDsKICAgICB2
b2lkIHNlc3Npb25GYWlsdXJlKCk7CiAKQEAgLTE1OSw3ICsxNTksNyBAQCBwcml2YXRlOgogICAg
IEluaXREYXRhIG1faW5pdERhdGE7CiAgICAgT3BlbkNETVNlc3Npb25DYWxsYmFja3MgbV90aHVu
ZGVyU2Vzc2lvbkNhbGxiYWNrcyB7IH07CiAgICAgQm94UHRyPE9wZW5DRE1TZXNzaW9uPiBtX3Nl
c3Npb247Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdlOworICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX21lc3NhZ2U7CiAgICAgYm9vbCBtX25lZWRzSW5kaXZp
ZHVhbGl6YXRpb24geyBmYWxzZSB9OwogICAgIFZlY3RvcjxDaGFsbGVuZ2VHZW5lcmF0ZWRDYWxs
YmFjaz4gbV9jaGFsbGVuZ2VDYWxsYmFja3M7CiAgICAgVmVjdG9yPFNlc3Npb25DaGFuZ2VkQ2Fs
bGJhY2s+IG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGll
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5jcHAKaW5kZXggM2Y4NWFmZTczYzg0Mjc2Mjk5N2Q1YWJjMmQ3
YmMwN2Y3YzAxYjljMy4uN2Q2MDlhYzNhZWZkZDE3MmNiYmM4YzgzMmRlODA2NWEyZWRmYzc2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApAQCAtMzIs
NyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBHTWFya3VwUGFyc2VDb250
ZXh0VXNlckRhdGEgewogICAgIGJvb2wgaXNQYXJzaW5nUHNzaCB7IGZhbHNlIH07Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcHNzaDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gcHNzaDsKIH07CiAKIHN0YXRpYyB2b2lkIG1hcmt1cFN0YXJ0RWxlbWVudChHTWFya3VwUGFy
c2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBnY2hhcioqLCBjb25z
dCBnY2hhcioqLCBncG9pbnRlciB1c2VyRGF0YVB0ciwgR0Vycm9yKiopCkBAIC01Nyw3ICs1Nyw3
IEBAIHN0YXRpYyB2b2lkIG1hcmt1cFRleHQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdj
aGFyKiB0ZXh0LCBnc2l6ZSB0ZXh0TGVuZ3RoCiAgICAgaWYgKHVzZXJEYXRhLT5pc1BhcnNpbmdQ
c3NoKSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwc3NoID0gYmFz
ZTY0RGVjb2RlKHRleHQsIHRleHRMZW5ndGgpOwogICAgICAgICBpZiAocHNzaC5oYXNfdmFsdWUo
KSkKLSAgICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZSgqcHNzaCkpOworICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOwogICAgIH0KIH0KIApAQCAtNzEsOSAr
NzEsOSBAQCBzdGF0aWMgdm9pZCBtYXJrdXBFcnJvcihHTWFya3VwUGFyc2VDb250ZXh0KiwgR0Vy
cm9yKiwgZ3BvaW50ZXIpCiAKIHN0YXRpYyBHTWFya3VwUGFyc2VyIG1hcmt1cFBhcnNlciB7IG1h
cmt1cFN0YXJ0RWxlbWVudCwgbWFya3VwRW5kRWxlbWVudCwgbWFya3VwVGV4dCwgbWFya3VwUGFz
c3Rocm91Z2gsIG1hcmt1cEVycm9yIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRh
OjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXls
b2FkKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2Vu
Y0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9h
ZCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNl
ZFBheWxvYWQpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwYXlsb2FkID0g
V1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOwogICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+
c2l6ZSgpKQogICAgICAgICByZXR1cm4gcGF5bG9hZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRp
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0
cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggZDVhZmY4NDVmNDA5YTc1ZDcxYTk4NDBhY2YxZDM0
MmE0NjQ3ZDJmMS4uZjIyYTIwZjUxZjY4NDkyYWQ4OTJmNTc4NDMxZjY1YTQ0ZGE3Y2QwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9H
U3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCkBAIC0zOCw4ICszOCw3
IEBAIEdTVF9ERUJVR19DQVRFR09SWV9FWFRFUk4od2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0
aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnkpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJ
bml0RGF0YSB7CiBwdWJsaWM6Ci0gICAgSW5pdERhdGEoKQotICAgICAgICA6IG1fcGF5bG9hZChT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpKSB7IH0KKyAgICBJbml0RGF0YSgpID0gZGVmYXVsdDsKIAog
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhbiBlbnVtIGZvciBzeXN0ZW0gdXVpZHMgZm9y
IGJldHRlciB0eXBlIHNhZmV0eS4KICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlk
LCBHc3RCdWZmZXIqIGluaXREYXRhKQpAQCAtNTAsMTMgKzQ5LDE3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIEdTVF9DQVRfTEVWRUxfTE9HKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9k
ZWNyeXB0X2RlYnVnX2NhdGVnb3J5LCBHU1RfTEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3Qg
bWFwICVzIHByb3RlY3Rpb24gZGF0YSIsIHN5c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2Fk
ID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVy
KCkpOworICAgICAgICBpZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRl
ZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9w
YXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAot
ICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgcGF5bG9hZCkKKyAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQo
c3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RGTW92
ZShwYXlsb2FkKSkpCiAgICAgeworICAgICAgICBpZiAocGF5bG9hZCkgeworICAgICAgICAgICAg
aWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZC0+bWFr
ZUNvbnRpZ3VvdXMoKSkpCisgICAgICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQ
YXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBh
cHBlbmQoSW5pdERhdGEmJiBpbml0RGF0YSkKQEAgLTcyLDEwICs3NSwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9idXN0LCBzbyBiZSBjYXJlZnVsIGhlcmUhCiAgICAg
ICAgIG1fc3lzdGVtSWQgPSBpbml0RGF0YS5tX3N5c3RlbUlkOwogCi0gICAgICAgIG1fcGF5bG9h
ZC0+YXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOworICAgICAgICBtX3BheWxvYWQuYXBwZW5k
KCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAgIGNvbnN0IFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkOyB9CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxv
YWQuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29uc3QgeyByZXR1cm4g
bV9zeXN0ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgpIGNvbnN0CiAg
ICAgewpAQCAtODYsMTEgKzg5LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9z
OwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lm
TmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3lzdGVtSWQ7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXlsb2FkOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
bV9wYXlsb2FkOwogfTsKIAogY2xhc3MgUHJvdGVjdGlvblN5c3RlbUV2ZW50cyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcAppbmRleCA1
YjhlYzIwMWQwYzk5NmQ1NTc0ZGNjNzI2N2E2NzQzOTNjNzg5MWFiLi5jNGYzMDcyNmU1YzhiNmYx
NDc0ODMyZmNkNTQzYjhiNmJkN2Q3YjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgc3RhdGljIFJl
ZjxJbWFnZT4gbG9hZEltYWdlRnJvbUdSZXNvdXJjZShjb25zdCBjaGFyKiBpY29uTmFtZSkKICAg
ICBHVW5pcXVlUHRyPGNoYXI+IHBhdGgoZ19zdHJkdXBfcHJpbnRmKCIvb3JnL3dlYmtpdGd0ay9y
ZXNvdXJjZXMvaW1hZ2VzLyVzIiwgaWNvbk5hbWUpKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gZGF0
YSA9IGFkb3B0R1JlZihnX3Jlc291cmNlc19sb29rdXBfZGF0YShwYXRoLmdldCgpLCBHX1JFU09V
UkNFX0xPT0tVUF9GTEFHU19OT05FLCBudWxscHRyKSk7CiAgICAgQVNTRVJUKGRhdGEpOwotICAg
IGljb24tPnNldERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5z
aWduZWQgY2hhcio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBnX2J5
dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSwgdHJ1ZSk7CisgICAgaWNvbi0+c2V0RGF0YShDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hh
cio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBnX2J5dGVzX2dldF9z
aXplKGRhdGEuZ2V0KCkpKSwgdHJ1ZSk7CiAgICAgcmV0dXJuIGljb247CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBiZDExM2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2
YmI0YTFmNGEyLi41NjRlMWU3NTQ0YTU4M2Y0MThlMGRlYmUwZTI1Y2U2YjRiZjU0Nzk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9y
bURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250
RGVzY3JpcHRpb24mCiAgICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6
ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRhdGlvbiwgd2lkdGhWYXJpYW50LCBmb250RGVzY3JpcHRp
b24udGV4dFJlbmRlcmluZ01vZGUoKSwgJmNyZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitz
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
aXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRh
ID0gYnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRl
eCA3MThiOWJkMzE1ZWNjNjcwNzg5YzY1Y2JhYWEwMzQ5Mjk3NWU3MmQzLi43ODdhMzYwMzg2NjZi
N2NjOGNkM2Y3MzkxZTA0ZDJlZjE2MTAxMjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
QEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRm9udENyZWF0aW9u
Q29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3Bl
Y2lmaWVkQ2FwYWJpbGl0aWVzOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRT
ZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0
aW5nczsKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNy
ZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KaW5kZXgg
NTM2YmRlYjIzMDEwOGQ5Y2VmNzc0MmYzMDQwYmE2ZWM2NWY3NjFlYi4uYzk2ZWM1NGU2MGQ1YzZk
MTJlMTIwNGFhZWZmMTlhMzViYjdhYzM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQpAQCAtNjMsNyArNjMsNyBAQCBSZWY8SW1hZ2U+
IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1lKQogICAgIE5TRGF0
YSAqbmFtZWRJbWFnZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6aW1hZ2VQ
YXRoXTsKICAgICBpZiAobmFtZWRJbWFnZURhdGEpIHsKICAgICAgICAgYXV0byBpbWFnZSA9IEJp
dG1hcEltYWdlOjpjcmVhdGUoKTsKLSAgICAgICAgaW1hZ2UtPnNldERhdGEoU2hhcmVkQnVmZmVy
OjpjcmVhdGUobmFtZWRJbWFnZURhdGEpLCB0cnVlKTsKKyAgICAgICAgaW1hZ2UtPnNldERhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5hbWVkSW1hZ2VEYXRhKSwgdHJ1ZSk7CiAg
ICAgICAgIHJldHVybiBXVEZNb3ZlKGltYWdlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMu
bW0KaW5kZXggODNlNmFmN2IwMzg5MjgzOGMzYmZlYTFjMGMxMWFhN2ZjZjhhNzdhOS4uNjhiY2M4
ODQ2YThiMWYwZjdjYmNmMTQwMzE5NjZlZDkyNDMyMmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMu
bW0KQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFBERkRvY3Vt
ZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBtX2RvY3VtZW50ID0gYWRvcHRO
UyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKKyAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1
bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKIH0KIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjb21wdXRl
Qm91bmRzRm9yQ3VycmVudFBhZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAppbmRleCA1
ZDg4Y2Q3NzY4OThjMDVhOTAzNTg5ZTJkNGJhYzczMGFhMWRmOTkyLi5iNDE3OTIzZTZkNzVmOTNj
ZmQxZTRjYzMxZjg1MDM2ZTFjNjJmNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcApA
QCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyA6IFRhYmxl
V2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGl0YWxpY3NDb3JyZWN0aW9uQ291
bnQ7CiAgICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29ycmVjdGlvblsxXTsg
Ly8gVGhlcmUgYXJlIGl0YWxpY3NDb3JyZWN0aW9uQ291bnQgaXRhbGljIGNvcnJlY3Rpb24gdmFs
dWVzLgogCi0gICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKKyAgICBpbnQxNl90IGdldEl0YWxpY0NvcnJl
Y3Rpb24oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdWludDE2X3QoaXRhbGljc0Nv
cnJlY3Rpb25Db3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZpdGFsaWNz
Q29ycmVjdGlvbltjb3VudF0pKQpAQCAtOTMsNyArOTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoSW5m
byA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGV4dGVuZGVkU2hh
cGVDb3ZlcmFnZU9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhLZXJuSW5mb09mZnNl
dDsKIAotICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29y
cmVjdGlvbkluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3Qg
TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1
aW50MTZfdCBvZmZzZXQgPSBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvT2Zmc2V0OwogICAgICAg
ICBpZiAob2Zmc2V0KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVjdCBHbHlwaEFzc2VtYmx5IDog
VGFibGVCYXNlIHsKICAgICAgICAgUGFydEZsYWdzRXh0ZW5kZXIgPSAweDAxCiAgICAgfTsKIAot
ICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVj
dG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0
CisgICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5
UGFydHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHBhcnRDb3VudDsK
ICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnBhcnRSZWNvcmRzW2NvdW50XSkpCkBA
IC0xNDMsNyArMTQzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFz
ZSB7CiAgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgYWR2YW5jZU1lYXN1cmVtZW50OwogICAgIH0g
bWF0aEdseXBoVmFyaWFudFJlY29yZHNbMV07IC8vIFRoZXJlIGFyZSB2YXJpYW50Q291bnQgTWF0
aEdseXBoVmFyaWFudFJlY29yZCdzLgogCi0gICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAorICAg
IHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZf
dCBjb3VudCA9IHZhcmlhbnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwg
Jm1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNTMsNyArMTUzLDcgQEAgc3Ry
dWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAgICAgICB2YXJp
YW50c1tpXSA9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2ldLnZhcmlhbnRHbHlwaDsKICAgICB9
CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBj
b25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3Nl
bWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gZ2x5cGhB
c3NlbWJseU9mZnNldDsKICAgICAgICAgY29uc3QgR2x5cGhBc3NlbWJseSogZ2x5cGhBc3NlbWJs
eSA9IHZhbGlkYXRlT2Zmc2V0PEdseXBoQXNzZW1ibHk+KGJ1ZmZlciwgb2Zmc2V0KTsKQEAgLTE3
MCw3ICsxNzAsNyBAQCBzdHJ1Y3QgTWF0aFZhcmlhbnRzIDogVGFibGVXaXRoQ292ZXJhZ2Ugewog
ICAgIE9wZW5UeXBlOjpVSW50MTYgaG9yaXpvbnRhbEdseXBoQ291bnQ7CiAgICAgT3BlblR5cGU6
Ok9mZnNldCBtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0WzFdOyAvLyBUaGVyZSBhcmUgdmVy
dGljYWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucyBhbmQgaG9yaXpvbnRh
bEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zLgogCi0gICAgY29uc3QgTWF0
aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIEdseXBoIGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CisgICAgY29u
c3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2Fs
KSBjb25zdAogICAgIHsKICAgICAgICAgdWludDMyX3QgY291bnQgPSB1aW50MTZfdCh2ZXJ0aWNh
bEdseXBoQ291bnQpICsgdWludDE2X3QoaG9yaXpvbnRhbEdseXBoQ291bnQpOwogICAgICAgICBp
ZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFtjb3Vu
dF0pKQpAQCAtMjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2Ugewog
ICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoSW5mb09mZnNldDsKICAgICBPcGVuVHlwZTo6
T2Zmc2V0IG1hdGhWYXJpYW50c09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1h
dGhDb25zdGFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3Qg
TWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoQ29u
c3RhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0
cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaEluZm8qIG1hdGhHbHlw
aEluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEdseXBoSW5mb09mZnNldDsKICAgICAgICAg
aWYgKG9mZnNldCkKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVC
YXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aFZh
cmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgY29uc3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0g
bWF0aFZhcmlhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRo
RGF0YS5oCmluZGV4IDI5OTBiZmIwM2Y1NjE5NDU3N2ZkZDQ0NzZmMTQ0OTRhYjE4MDM1Y2YuLjNm
ZjY2ZDMxMTgyZTVjNGIzNmRkM2YzMzA3YTY4NGI5NWQ5NTkzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1h
dGhEYXRhLmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Rm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBGb250OwogCiBjbGFzcyBPcGVuVHlwZU1hdGhEYXRhIDogcHVi
bGljIFJlZkNvdW50ZWQ8T3BlblR5cGVNYXRoRGF0YT4gewpAQCAtMTMzLDcgKzEzMyw3IEBAIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgT3BlblR5cGVNYXRoRGF0YShjb25zdCBGb250UGxhdGZvcm1E
YXRhJik7CiAKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX21hdGhCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1f
bWF0aEJ1ZmZlcjsKICNlbGlmIFVTRShIQVJGQlVaWikKICAgICBIYlVuaXF1ZVB0cjxoYl9mb250
X3Q+IG1fbWF0aEZvbnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAppbmRleCBjODY0YjJjM2E4
ZmIxYWUzNzYzMDkzZWU1MDU1YjM2NTFlZjAxMjZhLi4zMDQ5NjNhNWRlOTBjODFjOGQ2MzA5MTI2
Nzc4ODc1MzFkODZkMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCkBAIC03Myw3ICs3Myw3IEBAIHR5
cGVkZWYgVUludDE2IEdseXBoSUQ7CiB0eXBlZGVmIHVpbnQzMl90IFRhZzsKICNkZWZpbmUgT1Rf
TUFLRV9UQUcoY2gxLCBjaDIsIGNoMywgY2g0KSAoKCgodWludDMyX3QpKGNoNCkpIDw8IDI0KSB8
ICgoKHVpbnQzMl90KShjaDMpKSA8PCAxNikgfCAoKCh1aW50MzJfdCkoY2gyKSkgPDwgOCkgfCAo
KHVpbnQzMl90KShjaDEpKSkKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBU
KiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNpemVf
dCBjb3VudCA9IDEpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlk
YXRlVGFibGUoY29uc3QgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNp
emVfdCBjb3VudCA9IDEpCiB7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zaXplKCkgPCBz
aXplb2YoVCkgKiBjb3VudCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04Miw3ICs4Miw3IEBAIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYKIAogc3RydWN0IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0g
ICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3Qgdm9pZCogcG9zaXRpb24pCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsK
ICAgICAgICAgaWYgKHBvc2l0aW9uIDwgYnVmZmVyLmRhdGEoKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTkwLDcgKzkwLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gb2Zm
c2V0IDw9IGJ1ZmZlci5zaXplKCk7IC8vICI8PSIgYmVjYXVzZSBlbmQgaXMgaW5jbHVkZWQgYXMg
dmFsaWQKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQq
IHZhbGlkYXRlUHRyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3Np
dGlvbikKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRl
UHRyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9z
aXRpb24pCiAgICAgewogICAgICAgICBjb25zdCBUKiBjYXN0ZWQgPSByZWludGVycHJldF9jYXN0
PGNvbnN0IFQqPihwb3NpdGlvbik7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZj
YXN0ZWRbMV0pKQpAQCAtOTgsNyArOTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBj
YXN0ZWQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlk
YXRlT2Zmc2V0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNv
bnN0CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRlT2Zmc2V0KGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlUHRyPFQ+KGJ1ZmZlciwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBpbnQ4X3QqPih0aGlzKSArIG9mZnNldCk7CiAgICAgfQpAQCAtMTI3LDcg
KzEyNyw3IEBAIHN0cnVjdCBDb3ZlcmFnZTJUYWJsZSA6IENvdmVyYWdlVGFibGUgewogI2lmIEVO
QUJMRShPUEVOVFlQRV9NQVRIKQogc3RydWN0IFRhYmxlV2l0aENvdmVyYWdlIDogVGFibGVCYXNl
IHsKIHByb3RlY3RlZDoKLSAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwg
dWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CisgICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJs
ZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAoY292ZXJhZ2UtPmNvdmVyYWdlRm9ybWF0KSB7CiAgICAg
ICAgIGNhc2UgMTogeyAvLyBDb3ZlcmFnZSBGb3JtYXQgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRp
ZXMuY3BwCmluZGV4IDMyMTZiN2VmMDZlOWE0ODAwOTkxNTkyMzA1NmFjYTNmY2JmOTJkMWEuLjNj
YTcyN2FhZmJkMmNhZDRiZTEwNmYxZGM0YzNmMmU3ZGQ0NDgwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVV0aWxpdGllcy5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEVPVEhlYWRlcjo6YXBwZW5k
UGFkZGluZ1Nob3J0KCkKIAogLy8gYWRkcyBmb250TmFtZSB0byB0aGUgZm9udCB0YWJsZSBpbiBm
b250RGF0YSwgYW5kIHdyaXRlcyB0aGUgbmV3IGZvbnQgdGFibGUgdG8gcmV3cml0dGVuRm9udFRh
YmxlCiAvLyByZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBuYW1lIHRhYmxlICh3aGljaCBpcyB1c2Vk
IGJ5IHJlbmFtZUFuZEFjdGl2YXRlRm9udCksIG9yIDAgb24gZWFybHkgYWJvcnQKLWJvb2wgcmVu
YW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnRO
YW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQorYm9vbCByZW5hbWVGb250
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZv
bnROYW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQogewogICAgIHNpemVf
dCBvcmlnaW5hbERhdGFTaXplID0gZm9udERhdGEuc2l6ZSgpOwogICAgIGNvbnN0IHNmbnRIZWFk
ZXIqIHNmbnQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHNmbnRIZWFkZXIqPihmb250RGF0YS5k
YXRhKCkpOwpAQCAtMjY2LDcgKzI2Niw3IEBAIGJvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRC
dWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWluCiB9CiAK
IC8vIFJlbmFtZSB0aGUgZm9udCBhbmQgaW5zdGFsbCB0aGUgbmV3IGZvbnQgZGF0YSBpbnRvIHRo
ZSBzeXN0ZW0KLVJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9u
dChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQor
UmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQog
ewogICAgIFZlY3Rvcjx1aW50OF90PiByZXdyaXR0ZW5Gb250RGF0YTsKICAgICBpZiAoIXJlbmFt
ZUZvbnQoZm9udERhdGEsIGZvbnROYW1lLCByZXdyaXR0ZW5Gb250RGF0YSkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxp
dGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVVdGlsaXRpZXMuaAppbmRleCAwOWMxYzQ1YzQ1OTNhZWE0MzE4MzBkMjE1YjdlNzQ4NTJjMTll
MzdmLi5mNGZmZGE2NTc0YjAyNTFlMmNhYWFiMzkxOTJiMWNlODdkMWY5NjdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxp
dGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTM1LDkgKzM1LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0cnVjdCBCaWdFbmRpYW5VU2hvcnQ7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
Owogc3RydWN0IEVPVFByZWZpeDsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBFT1RI
ZWFkZXIgewogICAgIEVPVEhlYWRlcigpOwpAQCAtNTQsOCArNTUsOCBAQCBwcml2YXRlOgogICAg
IFZlY3Rvcjx1aW50OF90LCA1MTI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCByZW5hbWVGb250KGNv
bnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOwotUmVm
UHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworYm9vbCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKK1JlZlB0
cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCmluZGV4IDJjZmE4NTRjMDIy
NjY4YWNjMDA3MzdjMWViYjM1ZmYzNDhkNThlMmIuLjc5ZTllZmUwNjA1MzM1NzllOWNhM2JjMTAz
MjM4YmZkMjgyZjcxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKQEAg
LTExNiw3ICsxMTYsNyBAQCBzdHJ1Y3QgU3Vic3RpdHV0aW9uU3ViVGFibGUgOiBUYWJsZUJhc2Ug
ewogICAgIE9wZW5UeXBlOjpVSW50MTYgc3Vic3RGb3JtYXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNl
dCBjb3ZlcmFnZU9mZnNldDsKIAotICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxD
b3ZlcmFnZVRhYmxlPihidWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQorICAgIGNvbnN0IENvdmVy
YWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3Zl
cmFnZU9mZnNldCk7IH0KIH07CiAKIHN0cnVjdCBTaW5nbGVTdWJzdGl0dXRpb24yU3ViVGFibGUg
OiBTdWJzdGl0dXRpb25TdWJUYWJsZSB7CkBAIC0xMzEsNyArMTMxLDcgQEAgc3RydWN0IExvb2t1
cFRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IHN1YlRhYmxlT2Zmc2V0
c1sxXTsKICAgICAvLyBPcGVuVHlwZTo6VUludDE2IG1hcmtGaWx0ZXJpbmdTZXQ7IHRoaXMgZmll
bGQgY29tZXMgYWZ0ZXIgdmFyaWFibGUgbGVuZ3RoLCBzbyBvZmZzZXQgaXMgZGV0ZXJtaW5lZCBk
eW5hbWljYWxseS4KIAotICAgIGJvb2wgZ2V0U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBH
bHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBn
ZXRTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBj
b3VudFN1YlRhYmxlID0gc3ViVGFibGVDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1
ZmZlciwgJnN1YlRhYmxlT2Zmc2V0c1tjb3VudFN1YlRhYmxlXSkpCkBAIC0xOTQsNyArMTk0LDcg
QEAgc3RydWN0IExvb2t1cExpc3QgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYg
bG9va3VwQ291bnQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBsb29rdXBPZmZzZXRzWzFdOwogCi0g
ICAgY29uc3QgTG9va3VwVGFibGUqIGxvb2t1cCh1aW50MTZfdCBpbmRleCwgY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTG9va3VwVGFibGUqIGxvb2t1cCh1aW50
MTZfdCBpbmRleCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYg
KGluZGV4ID49IGNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1cE9mZnNldHNbY291
bnRdKSkKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdHJ1Y3QgRmVhdHVyZVRhYmxlIDogVGFibGVCYXNl
IHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpVSW50
MTYgbG9va3VwTGlzdEluZGV4WzFdOwogCi0gICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMo
Y29uc3QgTG9va3VwTGlzdCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0
dXRpb25zKGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiog
bWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewog
ICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxvb2t1cENvdW50OwogICAgICAgICBpZiAoIWlzVmFs
aWRFbmQoYnVmZmVyLCAmbG9va3VwTGlzdEluZGV4W2NvdW50XSkpCkBAIC0yMjksNyArMjI5LDcg
QEAgc3RydWN0IEZlYXR1cmVMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9m
ZnNldCBmZWF0dXJlT2Zmc2V0OwogICAgIH0gZmVhdHVyZXNbMV07CiAKLSAgICBjb25zdCBGZWF0
dXJlVGFibGUqIGZlYXR1cmUodWludDE2X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZl
YXR1cmUodWludDE2X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3Vu
dCA9IGZlYXR1cmVDb3VudDsKICAgICAgICAgaWYgKGluZGV4ID49IGNvdW50IHx8ICFpc1ZhbGlk
RW5kKGJ1ZmZlciwgJmZlYXR1cmVzW2NvdW50XSkpCkBAIC0yMzksNyArMjM5LDcgQEAgc3RydWN0
IEZlYXR1cmVMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0g
ICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmaW5kRmVhdHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBm
aW5kRmVhdHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgZm9yICh1aW50MTZfdCBpID0gMDsgaSA8
IGZlYXR1cmVDb3VudDsgKytpKSB7CiAgICAgICAgICAgICBpZiAoaXNWYWxpZEVuZChidWZmZXIs
ICZmZWF0dXJlc1tpXSkgJiYgZmVhdHVyZXNbaV0uZmVhdHVyZVRhZyA9PSB0YWcpCkBAIC0yNTUs
NyArMjU1LDcgQEAgc3RydWN0IExhbmdTeXNUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5
cGU6OlVJbnQxNiBmZWF0dXJlQ291bnQ7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBmZWF0dXJlSW5k
ZXhbMV07CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBm
ZWF0dXJlVGFnLCBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlw
ZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2
X3QgY291bnQgPSBmZWF0dXJlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIs
ICZmZWF0dXJlSW5kZXhbY291bnRdKSkKQEAgLTI3Nyw3ICsyNzcsNyBAQCBzdHJ1Y3QgU2NyaXB0
VGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxhbmdTeXNPZmZz
ZXQ7CiAgICAgfSBsYW5nU3lzUmVjb3Jkc1sxXTsKIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSog
ZGVmYXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29u
c3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxhbmdT
eXNDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxhbmdTeXNSZWNvcmRz
W2NvdW50XSkpCkBAIC0yOTgsNyArMjk4LDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJh
c2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IHNjcmlwdE9mZnNldDsKICAgICB9IHNjcmlw
dHNbMV07CiAKLSAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFn
LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJs
ZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENv
dW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpA
QCAtMzEwLDcgKzMxMCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3Jp
cHQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFi
bGUqIGRlZmF1bHRTY3JpcHQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAg
ICAgaWYgKCFjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZzY3JpcHRzW2NvdW50XSkpCkBA
IC0zMjEsNyArMzIxLDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAg
ICByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0VGFibGU+KGJ1ZmZlciwgc2NyaXB0c1swXS5z
Y3JpcHRPZmZzZXQpOwogICAgIH0KIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExh
bmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5
c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0VGFibGUg
PSBkZWZhdWx0U2NyaXB0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0VGFibGUpCkBAIC0z
MzYsMTEgKzMzNiwxMSBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVu
VHlwZTo6T2Zmc2V0IGZlYXR1cmVMaXN0T2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9v
a3VwTGlzdE9mZnNldDsKIAotICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlw
dExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBGZWF0dXJlTGlz
dCogZmVhdHVyZUxpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJu
IHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsg
fQotICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwg
bG9va3VwTGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRh
dGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQorICAgIGNv
bnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZm
ZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExp
c3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2
YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CiAK
LSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAg
ICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0cyA9IHNjcmlwdExpc3QoYnVmZmVyKTsKICAgICAg
ICAgaWYgKCFzY3JpcHRzKQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBU
YWJsZUJhc2UgewogICAgICAgICByZXR1cm4gc2NyaXB0cy0+ZGVmYXVsdExhbmdTeXMoYnVmZmVy
KTsKICAgICB9CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRh
ZyBmZWF0dXJlVGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25z
dCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25z
dCBMYW5nU3lzVGFibGUqIGxhbmdTeXMgPSBkZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwogICAgICAg
ICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMgPSBmZWF0dXJlTGlzdChidWZmZXIpOwpAQCAt
MzY1LDcgKzM2NSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICBy
ZXR1cm4gZmVhdHVyZTsKICAgICB9CiAKLSAgICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0
dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhhc2hN
YXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBGZWF0dXJlVGFibGUqIHZlcnRpY2FsRmVh
dHVyZVRhYmxlID0gZmVhdHVyZShPcGVuVHlwZTo6VmVydEZlYXR1cmVUYWcsIGJ1ZmZlcik7CiAg
ICAgICAgIGlmICghdmVydGljYWxGZWF0dXJlVGFibGUpCkBAIC0zODEsNyArMzgxLDcgQEAgc3Ry
dWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAKIHN0YXRpYyBib29sIGxvYWRIbXR4VGFibGUo
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBWZWN0b3I8dWludDE2X3Q+JiBh
ZHZhbmNlV2lkdGhzKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRm
b3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKICAgICBj
b25zdCBPcGVuVHlwZTo6SGhlYVRhYmxlKiBoaGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8
T3BlblR5cGU6OkhoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIWhoZWEpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTQyNCw3ICs0MjQsNyBAQCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6T3Bl
blR5cGVWZXJ0aWNhbERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLAog
dm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYgcGxhdGZvcm1EYXRhKQogewogICAgIC8vIExvYWQgdmhlYSBmaXJzdC4gVGhpcyB0YWJs
ZSBpcyByZXF1aXJlZCBmb3IgZm9udHMgdGhhdCBzdXBwb3J0IHZlcnRpY2FsIGZsb3cuCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUo
T3BlblR5cGU6OlZoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5U
eXBlVGFibGUoT3BlblR5cGU6OlZoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpWaGVhVGFi
bGUqIHZoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6VmhlYVRhYmxlPihi
dWZmZXIpOwogICAgIGlmICghdmhlYSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDg2LDcgKzQ4Niw3
IEBAIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9h
ZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRm
b3JtRGF0YSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURh
dGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CisgICAgYXV0byBidWZmZXIgPSBw
bGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CiAgICAgY29uc3Qg
T3BlblR5cGU6OkdTVUJUYWJsZSogZ3N1YiA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5U
eXBlOjpHU1VCVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKGdzdWIpCiAgICAgICAgIGdzdWItPmdl
dFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKCZtX3ZlcnRpY2FsR2x5cGhNYXAsICpidWZmZXIu
Z2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0RpcmVjdFdyaXRlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaAppbmRleCBhNjI3MTliMTcxOWE3NGY5NzY5MjIx
OWRmNWY3YWFlZGM0OTA2NDY2Li4wZGI0YWZhZGIzZjc0MmI4M2E0ZTE2Y2YzNzE4NzBhMmIwNDA0
ZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGly
ZWN0V3JpdGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaApAQCAtNDMsNyArNDMsNyBAQCBlbnVtIERXUklU
RV9GT05UX1NUUkVUQ0g7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9y
bURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBuYW1lc3BhY2UgRGlyZWN0V3JpdGUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHAKaW5kZXggYzg2ODNhN2VmNTg5YzNmZTY1NGQ4NDU3MTI5NWUyNDBkMjI0NDllNC4uOGJlMWIx
YTMzYTYyMDVjMTgxY2VmZjFhYzM0MzRiYzg3YTc4M2JlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVl
Rm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5D
b2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1l
KCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVy
LCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA1ZjEwZjczOTJkMDRj
MzQ0ZDEyY2VlNDI2NmVkYjFlZTk5NzFjNGVmLi40OGVkNDI1ZTQyMjdhNTU2YTdlYzNiODc3OWY3
YzA0Mjg1ZmUzM2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTM2LDEyICszNiwx
MyBAQCB0eXBlZGVmIHN0cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9u
Q29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJj
ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2Fw
YWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNl
dHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRp
bmdzOwpAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3Jl
YXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5j
cHAKaW5kZXggM2MxZDRlMmYzYzc1NGE3M2E4MjNhMDBjMTY3NGVjMzA0NDkzMTEyZC4uZjRmYmY3
YTdmNGQ3YzgzZmYyMTE2YzMxZTU0NmNhOTFlMDU4OWNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIFN0cmluZyBjcmVh
dGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQor
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVl
Rm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9u
dChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKaW5k
ZXggMzFhMWU1YzUzMWYyMDkwM2M1Y2ZiMzI4NjBiYTVlZjIwNjRlOTNkZC4uNGM2NzRjNDc0M2Jj
MDExOGE5NzAxMGNjNjkyODliNTg2ZGJiMGNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWly
b1dpbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9y
bUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgICAgICYm
IG1fdXNlR0RJID09IG90aGVyLm1fdXNlR0RJOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBG
b250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFi
bGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVU
YWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXggNmNiNTUxMTA0YTkz
YmRiZDIyYjQxN2E0NTQ2ZDIwZmFkMGUyYTM0YS4uNDM5Y2Y4NjNiODczZGM5Y2Y3ZjgxMDU5OWU1
YTYwMWU3ZjczNzk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcApAQCAtNTksMTggKzU5LDE4
IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiBm
b250LCBmbG9hdCBzaXplLCBib29sIGJvbGQsCiAgICAgUmVzdG9yZURDKGhkYywgLTEpOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdAogewogICAgIEhXbmREQyBoZGMoMCk7CiAgICAgSEdESU9CSiBvbGRGb250ID0gU2Vs
ZWN0T2JqZWN0KGhkYywgaGZvbnQoKSk7CiAKICAgICBEV09SRCBzaXplID0gR2V0Rm9udERhdGEo
aGRjLCB0YWJsZSwgMCwgMCwgMCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKHNpemUg
IT0gR0RJX0VSUk9SKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKHNpemUpOwogICAg
ICAgICBEV09SRCByZXN1bHQgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAoUFZPSUQpZGF0
YS5kYXRhKCksIHNpemUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09
IHNpemUpOwotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKKyAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpOwogICAgIH0KIAogICAgIFNlbGVjdE9iamVjdChoZGMsIG9sZEZvbnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVj
b2RlckRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5jcHAKaW5kZXggNjI5ZTBlNjFhMTA0YzU2N2ExZDRlZGNiN2U1
Nzk3ZGNmNjdjNmU4ZS4uNzczNTczOWI5MzM0ZjQ0ZDk5YTNmMTJmZmM1YmY3YjQxZjdjYzZlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVj
b2RlckRpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCkBAIC0yNzIsNyArMjcyLDcgQEAgUGxhdGZvcm1J
bWFnZVB0ciBJbWFnZURlY29kZXJEaXJlY3QyRDo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWIKICAgICByZXR1cm4gYml0bWFwOwogfQogCi12b2lkIEltYWdlRGVjb2Rl
ckRpcmVjdDJEOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCit2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmICghYWxsRGF0YVJl
Y2VpdmVkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCmluZGV4IDRmNDcy
NTg2YjQyNGJkYTFjZjZmYTAxNDNjYmEyM2QwMzAwMTZlNDUuLmMyMzY1ZmQ3NDRjNjExOGMxOTk5
ZTA1YjgwMmVkNWI0OGYzNjQ4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCkBAIC00MSw3ICs0
MSw3IEBAIGNsYXNzIEltYWdlRGVjb2RlckRpcmVjdDJEIGZpbmFsIDogcHVibGljIEltYWdlRGVj
b2RlciB7CiBwdWJsaWM6CiAgICAgSW1hZ2VEZWNvZGVyRGlyZWN0MkQoKTsKIAotICAgIHN0YXRp
YyBSZWY8SW1hZ2VEZWNvZGVyRGlyZWN0MkQ+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFnZURl
Y29kZXJEaXJlY3QyRD4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJbWFnZURlY29kZXJEaXJlY3QyRCgpKTsKICAgICB9CkBAIC03Miw3ICs3Miw3
IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5
bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxE
YXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9
CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAKaW5k
ZXggMGQ4ODIwZTlmM2Q2ZmQ3NzM1ZDU3MGIzNjQxNDg4ZjUzYmQ3ZWNlOS4uMmQ5NzI3MGE3MzQ4
MzQ4OTNlNzhjODFmZjBlYzViYjVkZmVjM2Y4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIC8vIFRoaXMgZnVuY3Rpb24gbG9hZHMgcmVzb3VyY2Vz
IGZyb20gV2ViS2l0Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJ
bnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Vs
ZWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEu
aAppbmRleCBjZjJiNTFmNmYwMjgzN2ExMTA2ZjRkOTk5ZjJmMTMwZTI1ODA5ODZhLi43ZTNiMzYz
MmI5MGM2MTk0MTVlNDhhNTJhMjI1OGIxNDJlMDAxYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKQEAgLTYwLDggKzYwLDggQEAgcHVibGljOgogICAg
IHZvaWQgc2V0Q2FuU21hcnRSZXBsYWNlKGJvb2wgY2FuU21hcnRSZXBsYWNlKSB7IG1fY2FuU21h
cnRSZXBsYWNlID0gY2FuU21hcnRSZXBsYWNlOyB9CiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2Uo
KSBjb25zdCB7IHJldHVybiBtX2NhblNtYXJ0UmVwbGFjZTsgfQogCi0gICAgdm9pZCBzZXRDdXN0
b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1v
dmUoYnVmZmVyKTsgfQotICAgIFNoYXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fY3VzdG9tRGF0YS5nZXQoKTsgfQorICAgIHZvaWQgc2V0Q3VzdG9tRGF0YShSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RGTW92ZShi
dWZmZXIpOyB9CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fY3VzdG9tRGF0YS5nZXQoKTsgfQogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSgp
IGNvbnN0IHsgcmV0dXJuICEhbV9jdXN0b21EYXRhOyB9CiAgICAgdm9pZCBjbGVhckN1c3RvbURh
dGEoKSB7IG1fY3VzdG9tRGF0YSA9IG51bGxwdHI7IH0KIApAQCAtNzYsNyArNzYsNyBAQCBwcml2
YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IG1fZmlsZW5hbWVzOwogICAgIFJlZlB0cjxJbWFnZT4g
bV9pbWFnZTsKICAgICBib29sIG1fY2FuU21hcnRSZXBsYWNlIHsgZmFsc2UgfTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX2N1c3RvbURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxl
SW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBkOTU2ZDllNzYyNWQ1YmI1YTcwZjA2OTNl
Nzc5OGVlOTA4NDlmMTY1Li4zM2M5NWVjMzMzM2E5MjBjNjRhMDE4MTc1MWViNGE1MDVlZjFhN2Fi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2Fs
YWJsZUltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKIAotc3RhdGljIHVuc2lnbmVkIGNvcHlGcm9t
U2hhcmVkQnVmZmVyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoLCBjb25zdCBT
aGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikKK3N0YXRpYyB1bnNpZ25lZCBjb3B5RnJvbVNoYXJl
ZEJ1ZmZlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKQogewogICAgIHVuc2lnbmVkIGJ5dGVzRXh0
cmFjdGVkID0gMDsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBzaGFyZWRCdWZmZXIp
IHsKQEAgLTEzNSw3ICsxMzUsNyBAQCBib29sIG1hdGNoZXNDVVJTaWduYXR1cmUoY2hhciogY29u
dGVudHMpCiAKIH0KIAotUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUltYWdl
RGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQorUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3Jl
YXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikK
IHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbGVuZ3RoT2ZMb25nZXN0U2lnbmF0dXJlID0g
MTQ7IC8vIFRvIHdpdDogIlJJRkY/Pz8/V0VCUFZQIgogICAgIGNoYXIgY29udGVudHNbbGVuZ3Ro
T2ZMb25nZXN0U2lnbmF0dXJlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IDMyZDRl
NmY4YjhmYTE0YTEzYmZiNjIyZDg3NTcwODc5OGI5OWRhYTIuLjljNDA1NTc4MjQxZDBjNTEyNzAy
OTUxNWMyMjEyNjU4ZjhjNGY2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAtNjAs
NyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIG51bGxwdHIgaWYgd2UgY2FuJ3Qg
c25pZmYgYSBzdXBwb3J0ZWQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBkYXRhIChwb3NzaWJseQog
ICAgIC8vIGJlY2F1c2UgdGhlcmUgaXNuJ3QgZW5vdWdoIGRhdGEgeWV0KS4KLSAgICBzdGF0aWMg
UmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBB
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQ
dHI8U2NhbGFibGVJbWFnZURlY29kZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgYm9v
bCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhhOyB9
CiAKQEAgLTcwLDE2ICs3MCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2VuY29kZWRE
YXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0ZTsKICAgICB9CiAKLSAgICB2
b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgb3Zl
cnJpZGUKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9sb2NrIH07CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWRE
YXRhU3RhdHVzOjpFcnJvcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0
YS5kYXRhKCkpIHsKLSAgICAgICAgICAgIC8vIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbWJpbmVz
IGFsbCBzZWdtZW50cyBpbnRvIG9uZSBpbiBjYXNlIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZS4KLSAg
ICAgICAgICAgIG1fZGF0YSA9IGRhdGEuYmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7Ci0gICAg
ICAgIH0KKyAgICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCkpCisgICAgICAgICAgICBtX2Rh
dGEgPSBjb250aWd1b3VzRGF0YS0+YmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7CiAgICAgICAg
IGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxh
YmxlKSB7CiAgICAgICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKICAg
ICAgICAgICAgIHRyeURlY29kZVNpemUoYWxsRGF0YVJlY2VpdmVkKTsKQEAgLTE5NSw3ICsxOTQs
NyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKICAgICBWZWN0b3I8U2NhbGFi
bGVJbWFnZURlY29kZXJGcmFtZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hlIFdURl9HVUFSREVEX0JZ
X0xPQ0sobV9sb2NrKTsKICAgICBtdXRhYmxlIExvY2sgbV9sb2NrOwogICAgIGJvb2wgbV9wcmVt
dWx0aXBseUFscGhhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDdjNjAzZmQ4
MzU4YzIxNGFjOTE4NGYzMTg5OTcyZmU4NDFiNjFlODAuLjI2Zjg4NjQ5NmU1YTVhMTRlMjhhZmIx
YWZhOWJmYzMwMTc3ZjUxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgQVZJRkltYWdlUmVhZGVyOjpBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJ
bWFnZURlY29kZXI+JiYgZGVjb2RlcikKIAogQVZJRkltYWdlUmVhZGVyOjp+QVZJRkltYWdlUmVh
ZGVyKCkgPSBkZWZhdWx0OwogCi1ib29sIEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29u
c3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
Citib29sIEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAg
IGlmIChhdmlmRGVjb2RlclNldElPTWVtb3J5KG1fYXZpZkRlY29kZXIuZ2V0KCksIGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSkgIT0gQVZJRl9SRVNVTFRfT0spCiAgICAgICAgIHJldHVybiBhbGxE
YXRhUmVjZWl2ZWQgPyBtX2RlY29kZXItPnNldEZhaWxlZCgpIDogZmFsc2U7CkBAIC01OCw3ICs1
OCw3IEBAIGJvb2wgQVZJRkltYWdlUmVhZGVyOjpwYXJzZUhlYWRlcihjb25zdCBTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIGFsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgQVZJRkltYWdlUmVhZGVyOjpkZWNvZGVGcmFtZShzaXplX3QgZnJhbWVJbmRleCwgU2NhbGFi
bGVJbWFnZURlY29kZXJGcmFtZSYgYnVmZmVyLCBjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50JiBkYXRhKQordm9pZCBBVklGSW1hZ2VSZWFkZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFt
ZUluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiBidWZmZXIsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKQogewogICAgIGlmIChtX2RlY29kZXIt
PmZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaAppbmRl
eCBjYmNhMGI4YzEyNGJmZjBmZmMzMzAxYmEzNWJjZTAxZWQyNzIyZGY4Li40OTZmNjlmODEyYmQ3
NWIwZWRhNjM1N2JhYTg2MGNmY2NiNWJhNGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgK
QEAgLTM5LDggKzM5LDggQEAgcHVibGljOgogICAgIEFWSUZJbWFnZVJlYWRlcihSZWZQdHI8QVZJ
RkltYWdlRGVjb2Rlcj4mJik7CiAgICAgfkFWSUZJbWFnZVJlYWRlcigpOwogCi0gICAgYm9vbCBw
YXJzZUhlYWRlcihjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpOwotICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4LCBTY2FsYWJsZUlt
YWdlRGVjb2RlckZyYW1lJiwgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpOworICAg
IGJvb2wgcGFyc2VIZWFkZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQmLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCBkZWNvZGVGcmFtZShzaXplX3Qg
aW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCYpOwogICAgIHNpemVfdCBpbWFnZUNvdW50KCkgY29uc3Q7CiAg
ICAgZG91YmxlIHJlcGV0aXRpb25Db3VudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29k
ZXIuY3BwCmluZGV4IDcyNzY5YTY5MjZlYzI0MTliZjY2MzgyNTI4ZDNkNzcyMGE1NGFkYWUuLmY3
NDU1YzE0NmM3ZThhZWIwNGNjOGM1NmYzMzBlMmEwMWYzYmE3MmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZURlY29kZXIuY3BwCkBAIC00Niw3ICs0Niw3IEBAIEJNUEltYWdlRGVjb2Rlcjo6Qk1QSW1hZ2VE
ZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiB7
CiB9CiAKLXZvaWQgQk1QSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBp
ZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaAppbmRl
eCBjN2M3Y2E4MWZlYTZiOGE3NzRiYjMwOGU1MzhkY2QwNDhjOTk1ZWVhLi42NGRlZDZhYmJlMmMw
YTI5YjExZjlmYjVlY2Q2YjQ4NzI0ZDU4OTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCkBA
IC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAg
ICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gImJtcCJf
czsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29s
IGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSog
ZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgZmluYWw7CiAgICAgLy8gQ0FVVElPTjog
c2V0RmFpbGVkKCkgZGVsZXRlcyB8bV9yZWFkZXJ8LiBCZSBjYXJlZnVsIHRvIGF2b2lkCiAgICAg
Ly8gYWNjZXNzaW5nIGRlbGV0ZWQgbWVtb3J5LCBlc3BlY2lhbGx5IHdoZW4gY2FsbGluZyB0aGlz
IGZyb20gaW5zaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oCmluZGV4IDQ4NDRmMzgwZGMxN2VjNzA0
NTg4ZmIxMmY1M2VhYmM2ZDIwZTYwZjQuLmJkNDMwZThhOGJlYTJjODE2YjJjNTIyYmY1YmE3ODg0
NmMzOGUwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNz
IEJNUEltYWdlUmVhZGVyIHsKIHB1YmxpYzoKICAgICAvLyBSZWFkIGEgdmFsdWUgZnJvbSB8ZGF0
YVtvZmZzZXRdfCwgY29udmVydGluZyBmcm9tIGxpdHRsZSB0byBuYXRpdmUKICAgICAvLyBlbmRp
YW5uZXNzLgotICAgIHN0YXRpYyBpbmxpbmUgdWludDE2X3QgcmVhZFVpbnQxNihjb25zdCBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQorICAgIHN0YXRpYyBpbmxp
bmUgdWludDE2X3QgcmVhZFVpbnQxNihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkKICAgICB7CiAgICAgICAgIHVpbnQxNl90IHJlc3Vs
dDsKICAgICAgICAgbWVtY3B5KCZyZXN1bHQsICZkYXRhLmRhdGEoKVtvZmZzZXRdLCAyKTsKQEAg
LTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAot
ICAgIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgcmVhZFVpbnQzMihjb25zdCBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQorICAgIHN0YXRpYyBpbmxpbmUgdWludDMy
X3QgcmVhZFVpbnQzMihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYg
ZGF0YSwgaW50IG9mZnNldCkKICAgICB7CiAgICAgICAgIHVpbnQzMl90IHJlc3VsdDsKICAgICAg
ICAgbWVtY3B5KCZyZXN1bHQsICZkYXRhLmRhdGEoKVtvZmZzZXRdLCA0KTsKQEAgLTY5LDcgKzY5
LDcgQEAgcHVibGljOgogICAgIEJNUEltYWdlUmVhZGVyKFNjYWxhYmxlSW1hZ2VEZWNvZGVyKiBw
YXJlbnQsIHNpemVfdCBkZWNvZGVkQW5kSGVhZGVyT2Zmc2V0LCBzaXplX3QgaW1nRGF0YU9mZnNl
dCwgYm9vbCB1c2VzQW5kTWFzayk7CiAKICAgICB2b2lkIHNldEJ1ZmZlcihTY2FsYWJsZUltYWdl
RGVjb2RlckZyYW1lKiBidWZmZXIpIHsgbV9idWZmZXIgPSBidWZmZXI7IH0KLSAgICB2b2lkIHNl
dERhdGEoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsg
fQorICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYg
ZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQogCiAgICAgLy8gRG9lcyB0aGUgYWN0dWFsIGRlY29k
aW5nLiBJZiB8b25seVNpemV8IGlzIHRydWUsIGRlY29kaW5nIG9ubHkKICAgICAvLyBwcm9ncmVz
c2VzIGFzIGZhciBhcyBuZWNlc3NhcnkgdG8gZ2V0IHRoZSBpbWFnZSBzaXplLiBSZXR1cm5zCkBA
IC0yNzIsNyArMjcyLDcgQEAgcHJpdmF0ZToKICAgICBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1l
KiBtX2J1ZmZlcjsKIAogICAgIC8vIFRoZSBmaWxlIHRvIGRlY29kZS4KLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOwogCiAgICAgLy8gQW4gaW5kZXggaW50byB8
bV9kYXRhfCByZXByZXNlbnRpbmcgaG93IG11Y2ggd2UndmUgYWxyZWFkeSBkZWNvZGVkLgogICAg
IHNpemVfdCBtX2RlY29kZWRPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0
b3JlQ2Fpcm8uY3BwCmluZGV4IDYwMTIwMzc0ZjljNDMxNjhhNjUyMWI2OWM1NGFmYmUyYTAwZjU1
ZjcuLjhjY2YwNGY2OGYwNDA2ZGE0ZDM3NGFlMTE2OGM5Y2ViYmM5YTVkMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2lu
Z1N0b3JlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCkBAIC0zNyw3ICszNyw3IEBAIFBs
YXRmb3JtSW1hZ2VQdHIgSW1hZ2VCYWNraW5nU3RvcmU6OmltYWdlKCkgY29uc3QKICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY29uc3RfY2FzdDx1aW50MzJfdCo+KG1f
cGl4ZWxzUHRyKSksCiAgICAgICAgIENBSVJPX0ZPUk1BVF9BUkdCMzIsIHNpemUoKS53aWR0aCgp
LCBzaXplKCkuaGVpZ2h0KCksIHNpemUoKS53aWR0aCgpICogc2l6ZW9mKHVpbnQzMl90KSkpOwog
ICAgIHN0YXRpYyBjYWlyb191c2VyX2RhdGFfa2V5X3Qgc19zdXJmYWNlRGF0YUtleTsKLSAgICBj
YWlyb19zdXJmYWNlX3NldF91c2VyX2RhdGEoc3VyZmFjZS5nZXQoKSwgJnNfc3VyZmFjZURhdGFL
ZXksIG1fcGl4ZWxzLmdldCgpLCBbXSh2b2lkKiBkYXRhKSB7IHN0YXRpY19jYXN0PFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQqPihkYXRhKS0+ZGVyZWYoKTsgfSk7CisgICAgY2Fpcm9fc3VyZmFj
ZV9zZXRfdXNlcl9kYXRhKHN1cmZhY2UuZ2V0KCksICZzX3N1cmZhY2VEYXRhS2V5LCBtX3BpeGVs
cy5nZXQoKSwgW10odm9pZCogZGF0YSkgeyBzdGF0aWNfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudCo+KGRhdGEpLT5kZXJlZigpOyB9KTsKIAogICAgIHJldHVybiBzdXJm
YWNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBlNmFiZTBkOTU0NGI2YzE4
NWM2NDVkZWNlMDlmMjNmOTU2NjYwN2NiLi5iOWVjMDFiOGFlOGU4ZDI5YmM3ODI1MjZlMDc2NTI1
NTFlMzU5YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzgsNyArMzgsNyBA
QCBHSUZJbWFnZURlY29kZXI6OkdJRkltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBHSUZJbWFnZURlY29kZXI6On5HSUZJbWFnZURl
Y29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEdJRkltYWdlRGVjb2Rl
cjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29k
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFn
ZURlY29kZXIuaAppbmRleCAzNWRmMzNmNmRmYzQ4M2ZkODQ3MTM2NmFlNTNiYjBiOTYxY2FlZDJl
Li5jNzQ3MTk5OTliOTg2YzFjZWY4NDc4NzU5ZDIzNzE4YzkwNDJkM2ViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFNjYWxhYmxl
SW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gImdpZiJfczsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJv
b2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CiAgICAgc2l6ZV90IGZyYW1lQ291bnQo
KSBjb25zdCBmaW5hbDsKICAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29u
c3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCmluZGV4IDQyMTQ2ZTAzMjkzMjM2OTk3ODll
YjVlNDJhZjRjNzNkMzRhYjljYzYuLjEwODJmZGYwZGZmMjM5MWU1NjUzMGE0MWY4N2JhNDM5ODIz
Mjc1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2dpZi9HSUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCkBAIC0yMzcsNyArMjM3LDcgQEAgcHVibGlj
OgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQorICAgIHZvaWQgc2V0RGF0
YShXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBt
X2RhdGEgPSAmZGF0YTsgfQogICAgIC8vIEZJWE1FOiBoYWx0QXRGcmFtZSBzaG91bGQgYmUgc2l6
ZV90LgogICAgIGJvb2wgZGVjb2RlKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6R0lGUXVlcnks
IHVuc2lnbmVkIGhhbHRBdEZyYW1lKTsKIApAQCAtMzE2LDYgKzMxNiw2IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxHSUZGcmFtZUNvbnRleHQ+ID4gbV9mcmFtZXM7CiAg
ICAgc2l6ZV90IG1fY3VycmVudERlY29kaW5nRnJhbWU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOwogICAgIGJvb2wgbV9w
YXJzZUNvbXBsZXRlZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IGM3MTdj
NDVkMzA1N2MwNTUzNmVlNjA1MGY5Mzk3MDQ2ZDEwZGYyYTcuLjU2ZmYwMWExNGQxMDE0MTkxNTAw
ZDQyYzE4MTE3NjVjZTM1MTg2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC01
Miw3ICs1Miw3IEBAIElDT0ltYWdlRGVjb2Rlcjo6SUNPSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9u
IGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiAKIElDT0ltYWdlRGVjb2Rlcjo6
fklDT0ltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBJQ09JbWFnZURlY29kZXI6OnNl
dERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSUNP
SW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhRm9yUE5HRGVj
b2RlckF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIC8vIENvcHkgb3V0IFBORyBkYXRhIHRvIGEg
c2VwYXJhdGUgdmVjdG9yIGFuZCBzZW5kIHRvIHRoZSBQTkcgZGVjb2Rlci4KICAgICAvLyBGSVhN
RTogU2F2ZSB0aGlzIGNvcHkgYnkgbWFraW5nIHRoZSBQTkcgZGVjb2RlciBhYmxlIHRvIHRha2Ug
YW4KICAgICAvLyBvcHRpb25hbCBvZmZzZXQuCi0gICAgYXV0byBwbmdEYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoJm1fZGF0YS0+ZGF0YSgpW2RpckVudHJ5Lm1faW1hZ2VPZmZzZXRdLCBtX2Rh
dGEtPnNpemUoKSAtIGRpckVudHJ5Lm1faW1hZ2VPZmZzZXQpOworICAgIGF1dG8gcG5nRGF0YSA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgmbV9kYXRhLT5kYXRhKClbZGlyRW50cnku
bV9pbWFnZU9mZnNldF0sIG1fZGF0YS0+c2l6ZSgpIC0gZGlyRW50cnkubV9pbWFnZU9mZnNldCk7
CiAgICAgbV9wbmdEZWNvZGVyc1tpbmRleF0tPnNldERhdGEocG5nRGF0YS5nZXQoKSwgaXNBbGxE
YXRhUmVjZWl2ZWQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAppbmRleCBmYjdhOTAz
YjJhMDc1Mzk0OTE3YWJiYmYxMWIxY2VkODNmZjQzMmEwLi4xMGVlOWI0ZDJlOGM5ZDg4N2UxZDJi
OGJlMTM5YmI3NDI3MWQ1N2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0
Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5n
IGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gImljbyJfczsgfQotICAg
IHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7
CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkgZmluYWw7CiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgZmluYWw7CiAgICAgSW50
U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QgZmlu
YWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVj
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGZkMzQ1YmI3ODZmZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYx
N2FiZjMwNWMuLjFmY2I2YzEzZDg2MGJhMjY0MjRiNDgyNDI5MGZjOWY1ZTkxNDYzMjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0lt
YWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjIwLDkgKzIyMCw5IEBAIHN0YXRpYyBi
b29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIpCiAgICAgICAgICYm
IG1hcmtlci0+ZGF0YVsxMV0gPT0gJ1wwJzsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCitzdGF0aWMg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21w
cmVzc19zdHJ1Y3QqIGluZm8pCiB7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIGZvciAoanBlZ19z
YXZlZF9tYXJrZXJfcHRyIG1hcmtlciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtl
ciA9IG1hcmtlci0+bmV4dCkgewogICAgICAgICBpZiAoIWlzSUNDTWFya2VyKG1hcmtlcikpCiAg
ICAgICAgICAgICBjb250aW51ZTsKQEAgLTIzNiwxMyArMjM2LDEzIEBAIHN0YXRpYyBSZWZQdHI8
U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZv
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFya2Vy
U2l6ZSA9IG1hcmtlci0+ZGF0YV9sZW5ndGggLSBpY2NIZWFkZXJTaXplOwotICAgICAgICBidWZm
ZXItPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEg
KyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6
ZSksIG1hcmtlclNpemUpOwogICAgIH0KIAotICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKKyAg
ICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXR1cm4gYnVmZmVyOworICAgIHJldHVybiBidWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygp
OwogfQogI2VuZGlmCiAKQEAgLTMyMCw3ICszMjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYnl0
ZXNUb1NraXAgPSBzdGQ6Om1heChudW1CeXRlcyAtIGJ5dGVzVG9Ta2lwLCBzdGF0aWNfY2FzdDxs
b25nPigwKSk7CiAgICAgfQogCi0gICAgYm9vbCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkKKyAgICBib29sIGRlY29kZShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkK
ICAgICB7CiAgICAgICAgIG1fZGVjb2RpbmdTaXplT25seSA9IG9ubHlTaXplOwogCkBAIC03MjYs
NyArNzI2LDcgQEAgdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB9CiAKICNpZiBVU0UoTENNUykKLXZvaWQgSlBFR0ltYWdl
RGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3Zv
aWQgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKaW5kZXggZDJkN2ZhNmFiNDliNDI0N2FmZmI4ZTFm
YmVlNDY5NTNiMGNiMDVjYi4uYzAzYWE2NzgyMjAzY2JkNGNmYzgzZmRlOGY4NzEyYjcwODFlM2Fh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
Zy9KUEVHSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKQEAgLTY4LDcgKzY4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgc2V0T3JpZW50YXRpb24oSW1hZ2VPcmllbnRh
dGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247IH0KICNpZiBV
U0UoTENNUykKLSAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYpOworICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYpOwogI2VuZGlmCiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAv
SlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCmluZGV4IGJlY2Y2NDUwMjc3ZWViNzRiMDlkZTUyZWUx
ODJmZjZlMTFlZDI3NjIuLjIwNDczZjBlZWViYjU2YzcxMzE0ZjY1NTZiZGEwOTAzMzQ5MDc0NDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcy
MDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKQEAgLTM4
MCw3ICszODAsNyBAQCB2b2lkIEpQRUcyMDAwSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5
U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgfQogCiAgICAgc3RydWN0IFJlYWRlciB7
Ci0gICAgICAgIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGE7CisgICAgICAgIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhOwogICAgICAgICBzaXplX3Qgb2Zm
c2V0OwogICAgIH0gcmVhZGVyID0geyAqbV9kYXRhLCAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVj
b2Rlci5jcHAKaW5kZXggYzEyYzQ1OWE1YTNlNWIzNTFjNWJjYzYyYmYwMGI4YTI4MWJkNWJhMy4u
NGNiZDMyM2Q5YTc1MDI2ZWY4NjU4ZjM4MTZkZDczOGQzN2NhOGVkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0lt
YWdlRGVjb2Rlci5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVh
ZE9mZnNldCA9IDA7CiAgICAgfQogCi0gICAgYm9vbCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBzaXplT25seSwgdW5zaWduZWQgaGFsdEF0RnJhbWUp
CisgICAgYm9vbCBkZWNvZGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQmIGRhdGEsIGJvb2wgc2l6ZU9ubHksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKQogICAgIHsKICAg
ICAgICAgbV9kZWNvZGluZ1NpemVPbmx5ID0gc2l6ZU9ubHk7CiAgICAgICAgIFBOR0ltYWdlRGVj
b2RlciogZGVjb2RlciA9IHN0YXRpY19jYXN0PFBOR0ltYWdlRGVjb2Rlcio+KHBuZ19nZXRfcHJv
Z3Jlc3NpdmVfcHRyKG1fcG5nKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAppbmRl
eCAwMmYxYjA5ZGJjNzY1MTYwMWY5MjJkZGUyOWY4MDVhNjU4NzFlMmQyLi5iMWJlYzU1ZTc4YzQz
NDgwMWMyNTRhY2UwZGY1OTkzMWEzNmI3NGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rl
ci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgV0VCUEltYWdlRGVjb2Rlcjo6V0VCUEltYWdlRGVjb2Rl
cihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGUKIAogV0VCUElt
YWdlRGVjb2Rlcjo6fldFQlBJbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV0VCUElt
YWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQordm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6
ZGVjb2RlKHNpemVfdCBmcmFtZUluZGV4LCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBU
aGlzIGNhbiBiZSBleGVjdXRlZCBib3RoIGluIHRoZSBtYWluIHRocmVhZCAod2hlbiBub3QgdXNp
bmcgYXN5bmMgZGVjb2RpbmcpIG9yIGluIHRoZSBkZWNvZGluZyB0aHJlYWQuCiAgICAgLy8gV2hl
biBleGVjdXRlZCBpbiB0aGUgZGVjb2RpbmcgdGhyZWFkLCBhIGNhbGwgdG8gc2V0RGF0YSgpIGZy
b20gdGhlIG1haW4gdGhyZWFkIG1heSBjaGFuZ2UgdGhlIGRhdGEKICAgICAvLyB0aGUgV2ViUERl
bXV4ZXIgaXMgdXNpbmcsIGxlYXZpbmcgaXQgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLCBzbyB3
ZSBuZWVkIHRvIHByb3RlY3QgdGhlIGRhdGEuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+IHByb3RlY3RlZERhdGEobV9kYXRhKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHByb3RlY3RlZERhdGEobV9kYXRhKTsKICAgICBXZWJQ
RGF0YSBpbnB1dERhdGEgPSB7IHByb3RlY3RlZERhdGEtPmRhdGEoKSwgcHJvdGVjdGVkRGF0YS0+
c2l6ZSgpIH07CiAgICAgV2ViUERlbXV4U3RhdGUgZGVtdXhlclN0YXRlOwogICAgIFdlYlBEZW11
eGVyKiBkZW11eGVyID0gV2ViUERlbXV4UGFydGlhbCgmaW5wdXREYXRhLCAmZGVtdXhlclN0YXRl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dl
YnAvV0VCUEltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKaW5kZXggYWYzNjVlOWNmOWM3Y2U5NTM4YjY0
YmE3ODliZjAxN2Q0OGY2ZWRlMS4uZGQyOGJjODhkZjVjMGZhM2MxNTczNzg2OWIyNjA5NzNhYWEw
ZDIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgfldFQlBJbWFnZURlY29kZXIoKTsKIAogICAgIFN0cmluZyBmaWxl
bmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJ3ZWJwIl9zOyB9Ci0gICAg
dm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0
YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCkgZmluYWw7CiAgICAgU2NhbGFibGVJbWFn
ZURlY29kZXJGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7
CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcmFtZUNv
dW50OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmlu
ZGV4IDkwOWU4ZTc2OGFkYjY4YmFiMjg0NDVkMjgyNzM2MGEzZjNmYTIyYzMuLmIyMzc3ZmUzNDEx
ZDJhYzQwMTUxM2JmMDlhZThjY2FlNzg2YmQ4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC0yMzYsMTQgKzIzNiwxNCBAQCBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogCiAjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQog
ICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlw
ZUZsYXRSVEZEXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJh
dGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlRmxhdFJURkQs
IG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
aXRlbUluZGV4LCBrVVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7
CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAg
ICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAg
ICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRSVEZEKCpidWZmZXIpID8gUmVhZGVy
UmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiAgICAgfQog
CiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRU
eXBlUlRGXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVn
eS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlUlRGLCBtX3Bhc3Rl
Ym9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRl
eCwga1VUVHlwZVJURiwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYg
KG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFk
ZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJu
IGJ1ZmZlciAmJiByZWFkZXIucmVhZFJURigqYnVmZmVyKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5
cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwpAQCAtMjUxLDcgKzI1MSw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAjZW5kaWYgLy8gIVBMQVRGT1JNKE1B
Q0NBVEFMWVNUKQogCiAgICAgaWYgKFtzdXBwb3J0ZWRJbWFnZVR5cGVzKCkgY29udGFpbnNPYmpl
Y3Q6dHlwZV0pIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRl
Z3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgdHlwZSwgbV9wYXN0ZWJvYXJk
TmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIHR5
cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNv
dW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQ
YXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYg
cmVhZGVyLnJlYWRJbWFnZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgdHlwZSwgaXRlbUluZm8u
cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVh
ZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDE2N2NlZjAyZDc4ZDc5NGRl
YWE4ZTVkZGFmNGRkNjZjM2QyY2NhNDUuLmQwMjdjMTcyNWM5ZTNkMWIxNGU5Mjc3ZmZiZTljOTFm
ODAwM2E0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRm
b3JtUGFzdGVib2FyZElPUy5tbQpAQCAtNzksMTAgKzc5LDEwIEBAIHZvaWQgUGxhdGZvcm1QYXN0
ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiAgICAgdHlwZXMgPSBtYWtl
VmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZXNdKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlmIChO
U0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTp0eXBlXSkK
LSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIHJldHVybiBudWxs
cHRyOwogfQogCkBAIC0zMzgsNyArMzM4LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKICAgICByZXR1cm4gMDsKIH0KIAotaW50
NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwg
Y29uc3QgU3RyaW5nJikKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JU
eXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVy
biAwOwogfQpAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0
ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIAogICAgIEFTU0VSVChjb250
ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBp
IDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRh
OmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250
ZW50LmNsaWVudFR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIg
YWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBpZiAo
Y29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIGF1dG8gd2ViQXJjaGl2
ZURhdGEgPSBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpOwpA
QCAtNDc5LDcgKzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAg
IH0KIAogICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsKLSAg
ICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVk
VW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0
Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1
dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKKyAg
ICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVk
VW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0
Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1
dGVkU3RyaW5nRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBl
cnJvcjpudWxscHRyXSkKICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFk
ZFJlcHJlc2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTUwMSw3
ICs1MDEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4oY29u
dGVudC5jb250ZW50T3JpZ2luKTsKLSAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRE
YXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKKyAgICBbcmVw
cmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVm
ZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKIAogICAgIHJlZ2lzdGVySXRlbVRv
UGFzdGVib2FyZChyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyLmdldCgpLCBtX3Bhc3RlYm9hcmQu
Z2V0KCkpOwogfQpAQCAtNTE0LDE0ICs1MTQsMTQgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIGF1dG8m
IGRhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YTsKICAgICBBU1NFUlQodHlwZXMuc2l6
ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHR5cGVz
LnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgYWRkRGF0YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ld
XTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsK
IAogICAgIGlmIChwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhICYmICFwYXN0ZWJvYXJkSW1h
Z2UucmVzb3VyY2VNSU1FVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byB1dGlPck1JTUVU
eXBlID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGU7CiAgICAgICAgIGlmICghaXNE
ZWNsYXJlZFVUSSh1dGlPck1JTUVUeXBlKSkKICAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUgPSBV
VElGcm9tTUlNRVR5cGUodXRpT3JNSU1FVHlwZSk7CiAKLSAgICAgICAgYXV0byBpbWFnZURhdGEg
PSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAg
YXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKil1dGlPck1JTUVU
eXBlXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJl
c2VudGF0aW9uU2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXplXTsKICAgICAgICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3Vn
Z2VzdGVkTmFtZV07CkBAIC02MDksNyArNjA5LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8K
ICNlbmRpZiAvLyBQQVNURUJPQVJEX1NVUFBPUlRTX1BSRVNFTlRBVElPTl9TVFlMRV9BTkRfVEVB
TV9EQVRBCiAKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3Rl
Ym9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29h
VHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEp
LmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21T
aGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0
b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewog
ICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAg
ICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtNjM1LDcgKzYzNSw3
IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+
IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6V2ViUHJlZmVycmVkUHJlc2VudGF0aW9u
U3R5bGVJbmxpbmVdOwogCiAgICAgaWYgKGRhdGEuaGFzU2FtZU9yaWdpbkN1c3RvbURhdGEoKSB8
fCAhZGF0YS5vcmlnaW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXpl
ZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgp
KSB7CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0
ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkgewogICAg
ICAgICAgICAgLy8gV2Ugc3Rhc2ggdGhlIGxpc3Qgb2Ygc3VwcGxpZWQgcGFzdGVib2FyZCB0eXBl
cyBpbiB0ZWFtRGF0YSBoZXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggZHJhZyBhbmQgZHJvcC4K
ICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBjb250ZW50cyBvZiBpdGVtIHByb3ZpZGVycyBjYW5u
b3QgYmUgbG9hZGVkIHByaW9yIHRvIGRyb3AsIGJ1dCB0aGUgcGFzdGVib2FyZCB0eXBlcyBhcmUK
ICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGN1c3RvbSBkYXRhIGJsb2IgYW5k
IHdlIG5lZWQgdG8gdmVuZCB0aGVtIHRvIHRoZSBwYWdlIHdoZW4gZmlyaW5nIGBkcmFnb3ZlcmAK
QEAgLTY3Miw4ICs2NzIsOCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gYnVmZmVyID0gc3Rk
OjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKLSAgICAgICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
KE5TU3RyaW5nICopY29jb2FUeXBlXTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKKyAgICAgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKICAgICB9KTsKIAog
ICAgIHJldHVybiByZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyOwpAQCAtNzQ2LDcgKzc0Niw3IEBA
IFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsU3RyaW5nc0ZvclR5cGUoY29u
c3QgU3RyaW5nJiB0eXBlKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdzOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmICgoTlNJbnRlZ2VyKWluZGV4IDwgMCB8fCAoTlNJ
bnRlZ2VyKWluZGV4ID49IFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZJdGVtc10pCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtNzU3LDcgKzc1Nyw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFBs
YXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYK
IAogICAgIGlmICghW3Bhc3RlYm9hcmRJdGVtIGNvdW50XSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmpl
Y3RBdEluZGV4OjBdKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKIH0KIAogU3RyaW5nIFBsYXRmb3Jt
UGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29u
dmVydGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0
ZXJJT1MubW0KaW5kZXggNTQ0NjUzYzQ0MDNkMjYwNDBhNTVkMjNlOTM2OTFiZmVkY2M5MmI0Mi4u
M2NmNGE2ZTIzNGE4YzcyNzkxODg4MDhlOTgwZjk2MTEzMDQ3ZjFiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KQEAgLTYwLDcg
KzYwLDcgQEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9u
IGRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRhIGwKICAgICBBU1NFUlRfVU5VU0VEKGxlbmd0
aFJlY2VpdmVkLCBsZW5ndGhSZWNlaXZlZCA+PSAwKTsKICAgICBBU1NFUlQoZGF0YS5sZW5ndGgg
PT0gc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4obGVuZ3RoUmVjZWl2ZWQpKTsKICAgICBpZiAoYXV0
byBkZWxlZ2F0ZSA9IF9kZWxlZ2F0ZS5nZXQoKSkKLSAgICAgICAgZGVsZWdhdGUtPmRlbGVnYXRl
RGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSkuZ2V0KCkp
OworICAgICAgICBkZWxlZ2F0ZS0+ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSkuZ2V0KCkpOwogfQogCiAtICh2b2lkKWNv
bm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5nOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uCkBA
IC04Miw3ICs4Miw3IEBAIEBlbmQKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUHJldmlld0NvbnZl
cnRlcjo6UHJldmlld0NvbnZlcnRlcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
UHJldmlld0NvbnZlcnRlclByb3ZpZGVyJiBwcm92aWRlcikKLSAgICA6IG1fcHJldmlld0RhdGEg
eyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICA6IG1fcHJldmlld0RhdGEgeyBtYWtlVW5p
cXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9vcmlnaW5hbFJlc3BvbnNl
IHsgcmVzcG9uc2UgfQogICAgICwgbV9wcm92aWRlciB7IHByb3ZpZGVyIH0KICAgICAsIG1fcGxh
dGZvcm1EZWxlZ2F0ZSB7IGFkb3B0TlMoW1tXZWJQcmV2aWV3Q29udmVydGVyRGVsZWdhdGUgYWxs
b2NdIGluaXRXaXRoRGVsZWdhdGU6KnRoaXNdKSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDY3N2Y4Y2FkYWI1OTEyM2UxYjYyZDFiYWMyZDE5
MDhiZjY3NmEyZjkuLjQ4MDgyMTc3ZTUwMDE5NjBlMGM0YjA4YzZhNjRiNDJmMGI2NWUyZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0yNTAs
NyArMjUwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBDb2xvciYgY29sb3IpCiAK
IHN0YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBlcihjb25zdCBQYXN0ZWJvYXJkSW1hZ2Um
IHBhc3RlYm9hcmRJbWFnZSkKIHsKLSAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxl
V3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFn
ZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byB3cmFwcGVy
ID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250
ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1
Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHBhc3RlYm9hcmRJbWFnZS51cmwudXJsLCBwYXN0
ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSldOwogICAgIHJldHVybiB3cmFwcGVyLmF1dG9y
ZWxlYXNlKCk7CiB9CkBAIC0yNjMsNyArMjYzLDcgQEAgc3RhdGljIHZvaWQgd3JpdGVGaWxlV3Jh
cHBlckFzUlRGREF0dGFjaG1lbnQoTlNGaWxlV3JhcHBlciAqd3JhcHBlciwgY29uc3QgU3RyaW4K
ICAgICBpZiAoIVJURkREYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBuZXdDaGFuZ2VDb3Vu
dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVy
Rm9yVHlwZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShSVEZERGF0YSkucHRyKCksIGxlZ2FjeVJURkRQ
YXN0ZWJvYXJkVHlwZSgpLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CisgICAgbmV3Q2hhbmdl
Q291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1
ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFJURkREYXRhKS5wdHIo
KSwgbGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsK
IH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3Rl
Ym9hcmRJbWFnZSkKQEAgLTI4NSw3ICsyODUsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKICAgICB9CiAKICAgICBtX2NoYW5nZUNvdW50ID0gd3JpdGVVUkxGb3JUeXBlcyh0
eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZEltYWdlLnVybCwgY29udGV4dCgpKTsK
LSAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGltYWdlRGF0YSku
cHRyKCksIGxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250
ZXh0KCkpOworICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVi
b2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGltYWdlRGF0YSkucHRyKCksIGxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bh
c3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgIGlmIChhdXRvIGFyY2hpdmVEYXRhID0gcGFz
dGVib2FyZEltYWdlLmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsKICAgICAgICAgbV9jaGFuZ2VD
b3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVm
ZmVyRm9yVHlwZShhcmNoaXZlRGF0YS5nZXQoKSwgV2ViQXJjaGl2ZVBib2FyZFR5cGUsIG1fcGFz
dGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKQEAgLTMzMCw3ICszMzAsNyBAQCBzdGF0aWMgU3Ry
aW5nIHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0
ZDo6b3B0aW9uYWw8cwogICAgIHJldHVybiBzdHJhdGVneS5zdHJpbmdGb3JUeXBlKHR5cGUsIHBh
c3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ks
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBj
b250ZXh0KQorc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
QXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsK
ICAgICBpZiAoaXRlbUluZGV4KQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsK
QEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWlu
VGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAgIAogICAgIGlm
ICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCkpKSkgewog
ICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxl
Z2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9h
cmROYW1lLCBjb250ZXh0KCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3Ry
aW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRh
dGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgeworICAg
ICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKICAgICAgICAgICAg
ICAgICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddOwogICAgICAgICAgICAg
ICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCmluZGV4IDM1M2Qw
MDZiOTBjYmNlNjA5ZTZkZmQzN2MyODA4MTMxZjIxNGI4ZGEuLjg4ZDA0MDI1ODQzNzAyZTRhYTRm
NWE5YTU1NmI4ODFjNmU0MGMyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRTdHJp
bmc6d2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0IGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlw
ZVN0cmluZ107CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdlYkNvbnRlbnQt
PmNsaWVudFR5cGVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNl
dERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9y
VHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdl
dCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNs
aWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5nZXQo
KV07CiAKICAgICAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICAgICAg
Y3VzdG9tRGF0YS5zZXRPcmlnaW4od2ViQ29udGVudC0+Y29udGVudE9yaWdpbik7Ci0gICAgICAg
IFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmlu
ZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CisgICAgICAgIFtw
YXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NB
bHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQo
KV07CiAgICAgfQogCiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJdGVtOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggZDli
N2QyNDgwMzhjMmRiOGFhYjA5MmNiOTFmZmE1NmYyY2I0Y2U3My4uMzQ3YmIxNzRlM2NlMmU5MTBm
NjNiMGMyZmYzYWQ2ZmRhNWU1Y2U1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCwxMiArNjgsMTIgQEAgdm9p
ZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAg
ICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHR5cGVzXSk7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKQogewogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5
cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0p
LmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0
TlMoW2RhdGEgY29weV0pLmdldCgpKTsKIH0KIAogaW50IFBsYXRmb3JtUGFzdGVib2FyZDo6bnVt
YmVyT2ZGaWxlcygpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxh
dGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJp
bmcmIG8KIHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRUeXBlczsKICAg
ICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZv
clR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBh
dXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRv
IGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAg
ICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8m
IHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9h
cmRUeXBlcy5hZGQodHlwZSk7CkBAIC0yNjMsOCArMjYzLDggQEAgaW50NjRfdCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgICAg
ICBpZiAocGxhdGZvcm1UeXBlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5n
T3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6Omdl
dDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAg
ICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0
YSA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIp
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbbV9w
YXN0ZWJvYXJkIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBl
XTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3Ry
aW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmlu
Zz4oc3RyaW5nT3JCdWZmZXIpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIGludDY0X3QgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICB9
KTsKIAogICAgIGlmIChzaG91bGRXcml0ZUN1c3RvbURhdGEpIHsKLSAgICAgICAgaWYgKGF1dG8g
c2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVO
U0RhdGEoKSkKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAg
ICAgICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpzZXJpYWxpemVkQ3VzdG9tRGF0YS5nZXQo
KSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAgICAgfQog
CkBAIC0zNDEsMTIgKzM0MSwxMiBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlw
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcykKICAgICByZXR1cm4gW21f
cGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6Y3JlYXRlTlNBcnJheShwYXN0ZWJvYXJkVHlwZXMpLmdl
dCgpIG93bmVyOm5pbF07CiB9CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZm
ZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQog
ewogICAgIGlmICghY2FuV3JpdGVQYXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNl
dERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBl
OnBhc3RlYm9hcmRUeXBlXTsKKyAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQg
c2V0RGF0YTpidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGlkV3JpdGVE
YXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gY2hhbmdlQ291bnQoKTsKQEAgLTQ0
Niw3ICs0NDYsNyBAQCBzdGF0aWMgU3RyaW5nIHdlYlNhZmVNSU1FVHlwZUZvck1vZGVyblBhc3Rl
Ym9hcmRUeXBlKE5TUGFzdGVib2FyZFR5cGUgcGxhdGZvcm1UeQogICAgIHJldHVybiB7IH07CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgTlNQYXN0ZWJvYXJkSXRlbSAqaXRl
bSA9IGl0ZW1BdEluZGV4KGluZGV4KTsKICAgICBpZiAoIWl0ZW0pCkBAIC00NTQsNyArNDU0LDcg
QEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJgogCiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFtpdGVt
IGRhdGFGb3JUeXBlOnR5cGVdKSB7CiAgICAgICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhkYXRh
LmNvcHkpOwotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgp
KTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEu
Z2V0KCkpOwogICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtNTA0LDggKzUwNCw4IEBA
IHN0YXRpYyBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkSXRlbT4gY3JlYXRlUGFzdGVib2FyZEl0ZW0o
Y29uc3QgUGFzdGVib2FyZEN1c3RvbURhCiAgICAgICAgIGlmICghcGxhdGZvcm1UeXBlKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJl
ZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRv
IHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZl
ciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgeworICAgICAgICAg
ICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
KQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5
cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9
IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5o
CmluZGV4IDY4MTNkNWRhN2RjYjBmYzI1OWYxYmQxZWQwYTU0YzFhMWE5ZmQ5Y2YuLjc5NjU1NGY0
Yzk3NjQ1MTQwMWUxYTEyMzc0Njg3MDQwYjI0YjFjYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgTWVkaWFTYW1wbGU7CiBjbGFzcyBNZWRpYVN0cmVh
bVByaXZhdGU7CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTsKIGNsYXNzIFBsYXRmb3Jt
QXVkaW9EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIAogc3RydWN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9uczsKIApAQCAtNTksNyAr
NTksNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQXVkaW9W
aWRlb1NlbGVjdGVkVHJhY2tzIHNlbGVjdFRyYWNrcyhNZWRpYVN0cmVhbVByaXZhdGUmKTsKIAot
ICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPjsKKyAg
ICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJs
ZSk+OwogICAgIHZpcnR1YWwgdm9pZCBmZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJikgPSAw
OwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0ID0gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZU1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCmluZGV4IGMyNWRmOTE1NzRhNjViYzQxYmRi
NzA2NzhkYzQ3NzI0ODM2ZGQxNDUuLjlhZWU4YzJlZGYxZTk2YTkwODc5MGM3YjljYmY5ZTYyYWNi
NjE3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKQEAgLTkzLDEyICs5
MywxMiBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6Z2VuZXJhdGVNb2NrQ291bnRl
clN0cmluZygpCiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpmZXRjaERhdGEoRmV0
Y2hEYXRhQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2J1ZmZlckxvY2sgfTsKICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlIHsgbV9idWZmZXIuY2hhcmFjdGVyczgoKSwgbV9idWZm
ZXIubGVuZ3RoKCkgfTsKICAgICAgICAgbV9idWZmZXIuY2xlYXIoKTsKLSAgICAgICAgYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2YWx1ZSkpOworICAgICAgICBidWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2YWx1ZSkpOwogICAgIH0K
IAogICAgIC8vIERlbGF5IGNhbGxpbmcgdGhlIGNvbXBsZXRpb24gaGFuZGxlciBhIGJpdCB0byBt
aW1pY2sgcmVhbCB3cml0ZXIgYmVoYXZpb3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDIxMWY3NWVlNzNhZjY5MTllN2Y0Yzk5
NThlMGNkMzQ4MjUzMmQwOWYuLjljMmM3OTdiODE5NTEyZDhmZDU3OTAxNWRjM2I2ZTQwNWUzYmM2
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFZpZGVvU2Ft
cGxlQnVmZmVyKE1lZGlhU2FtcGxlJik7CiAgICAgdm9pZCBhcHBlbmRBdWRpb1NhbXBsZUJ1ZmZl
cihjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24m
LCBjb25zdCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCk7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5n
KCk7Ci0gICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmLCBkb3VibGUpPiYmKTsKKyAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiYm
KTsKIAogICAgIHZvaWQgcGF1c2UoKTsKICAgICB2b2lkIHJlc3VtZSgpOwpAQCAtMTA1LDcgKzEw
NSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZpbmlzaGVkRmx1c2hpbmdTYW1wbGVzKCk7CiAg
ICAgdm9pZCBjb21wbGV0ZUZldGNoRGF0YSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRh
a2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHRha2VEYXRhKCk7
CiAKICAgICBib29sIG1faGFzQXVkaW8geyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWaWRlbyB7
IGZhbHNlIH07CkBAIC0xMTcsOCArMTE3LDggQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8QVZB
c3NldFdyaXRlcj4gbV93cml0ZXI7CiAKICAgICBMb2NrIG1fZGF0YUxvY2s7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7Ci0g
ICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUp
PiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
bV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CisgICAgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4gbV9m
ZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsKIAogICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb247CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gbV9hdWRpb0NvbXByZXNzb3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KaW5kZXgg
OGMxZjdjMGU1MzEzYjZiODU2Y2QzY2RmNWU4Mzg0ZjM2YjdiNTNmNS4uODQ4NDEwMGVhYzVlMTE1
ZTliMGNmMDEyMGJhYmY3OGZiMWExMjc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtMTM3LDEwICsxMzcsOCBAQCBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKICAg
ICAgICAgbV93cml0ZXIuY2xlYXIoKTsKICAgICB9CiAKLSAgICAvLyBBdCB0aGlzIHBvaW50ZXIs
IHdlIHNob3VsZCBubyBsb25nZXIgYmUgd3JpdGluZyBhbnkgZGF0YSwgc28gaXQgc2hvdWxkIGJl
IHNhZmUgdG8gY2xvc2UgYW5kIG51bGxpZnkgbV9kYXRhIHdpdGhvdXQgbG9ja2luZy4KICAgICBp
ZiAobV93cml0ZXJEZWxlZ2F0ZSkKICAgICAgICAgW21fd3JpdGVyRGVsZWdhdGUgY2xvc2VdOwot
ICAgIG1fZGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKG51bGxwdHIsIDApOwpAQCAtNDk1LDcgKzQ5Myw3IEBAIHZvaWQgTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OnN0b3BSZWNvcmRpbmcoKQogICAgIH0pOwogfQogCi12b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwogCkBAIC01MzcsMTggKzUzNSwxMyBAQCB2b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiB2b2lkIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgaWYg
KCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwg
c2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwg
c2l6ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkKK1JlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURh
dGEoKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgYXV0byBkYXRh
ID0gV1RGTW92ZShtX2RhdGEpOwotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBtX2RhdGEu
dGFrZSgpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwYXVzZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhh
bmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhh
bmRsZS5jcHAKaW5kZXggNTM1OTBiNGIwNWViZTliMzc4Y2QzYzkzZTFkZDhkYzdmZDU2Mjg1OS4u
YzViYTM0ZTA5NGYyZTFiNGQ1YWUyZTQ1OThjZmFiMDI0MTk3ZjNjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcApA
QCAtNjIwLDcgKzYyMCw3IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlSZXNwb25z
ZU9uRXJyb3IoKQogdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBieXRlc1JlYWQpCiB7CiAgICAgaWYgKGNsaWVudCgpKQot
ICAgICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcih0aGlzLCBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLCBieXRlc1JlYWQpLCBieXRlc1JlYWQpOworICAgICAgICBjbGllbnQoKS0+ZGlk
UmVjZWl2ZUJ1ZmZlcih0aGlzLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwg
Ynl0ZXNSZWFkKSwgYnl0ZXNSZWFkKTsKIH0KIAogdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6Om5v
dGlmeUZhaWwoRXJyb3IgZXJyb3JDb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCmluZGV4IGE5YjI5ZDU5ZTlhYTNiNDY1NTQxNWJkOGJl
ZjA5ODRjNTQ0YjczZjAuLmNkZWU2MDM1MjNjZDY2OTQ1ZjQyOGY2OTQ3ODk2MGY2ZmQ3NGM3N2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVy
LmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgRGF0
YVVSTERlY29kZXIgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwCmluZGV4IDM3MzFhMWFkODU0YTZjODNkNmNmMDRlNmUxMjYyZTdkMDA4Zjc5MDUuLmM3
ZDE4YmUxZDZhYmMzZjBjY2EzNTA2YjY1ZmMzZDk4MTZkMjRlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC00MTEsMTMgKzQxMSwxMyBAQCB1
aW50NjRfdCBGb3JtRGF0YTo6bGVuZ3RoSW5CeXRlcygpIGNvbnN0CiAgICAgcmV0dXJuICptX2xl
bmd0aEluQnl0ZXM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJl
ZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6
OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2Vs
ZW1lbnRzKSB7CiAgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWlu
dDhfdD4+KGVsZW1lbnQuZGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOwogfQogCiBVUkwgRm9y
bURhdGE6OmFzQmxvYlVSTCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmgKaW5kZXggNmVjZDdmMWIwNzNjMzgzMzQ0Mzk5NTE3NDU1ODk0MTBhYjhhNjEw
OC4uNDZlMjczNTMzYzBmZjQ0MTY0MDZkMjQ1MGVlMjA4ODFhNTVmY2JhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOwogY2xhc3MgRE9NRm9ybURh
dGE7CiBjbGFzcyBGaWxlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIGNsYXNzIFRleHRFbmNvZGluZzsKIAogc3RydWN0IEZvcm1EYXRhRWxlbWVu
dCB7CkBAIC0yMjksNyArMjI5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxGb3JtRGF0
YUVsZW1lbnQ+JiBlbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHM7IH0KICAgICBj
b25zdCBWZWN0b3I8Y2hhcj4mIGJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGFyeTsg
fQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZm
ZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIGJvb2wgYWx3YXlzU3RyZWFtKCkg
Y29uc3QgeyByZXR1cm4gbV9hbHdheXNTdHJlYW07IH0KICAgICB2b2lkIHNldEFsd2F5c1N0cmVh
bShib29sIGFsd2F5c1N0cmVhbSkgeyBtX2Fsd2F5c1N0cmVhbSA9IGFsd2F5c1N0cmVhbTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCmlu
ZGV4IGZhZmRmZTg3YzgzN2U2MTU3ZDJmMTNlOWE3Y2EwMDk2OWQ1MGIxYzcuLjRiZWJjYjUwOThk
MTVjMjk2NmVkOGM3ZWUxMzZhZTNhMmFlNGEyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3Mg
TmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN5bmNocm9ub3VzTG9hZGVyTWVz
c2FnZVF1ZXVlOwogY2xhc3MgVGltZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKaW5kZXggNmU2NWJiODkx
OGM2ZWMxMmY4YWVhODZlYmU3MDQ4ODRlMmU3MzY2Zi4uYmE4ZmQ0ZmY0ZjFlNDFjOWFkNGZhNzRh
NDJiZTRlMmJkMTFhYTg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKQEAgLTM2LDkgKzM2LDkgQEAgUmVz
b3VyY2VIYW5kbGVDbGllbnQ6OlJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCiBS
ZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0Owog
Ci12b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgpCit2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291
cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgZGlk
UmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCmluZGV4
IGI2MzM3ZDU2Y2U4Y2Q5YmVmZjlkZmJlMTEzNjYyYmM3NzU2YjY1MzcuLmM0ZjA1NDg1ZjI4NzBi
MTE2ZGE3Yzc2MGQzYzBmY2U5NmVjMmI0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKQEAgLTUwLDcgKzUwLDcg
QEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGVudW0gQ2FjaGVTdG9yYWdlUG9s
aWN5IHsKICAgICBTdG9yYWdlQWxsb3dlZCwKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcg
bG9uZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNl
bnQqLykgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5k
bGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8p
IHsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJl
c291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3Ro
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNv
dXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAppbmRleCBmNzAwMzU1ZDU2OGIwNDJhNmFk
ZjEwNzBkYmI4MzgxOTI1MzY5NGFhLi44OGRlZGZhNDVjM2Y0YzQzYTM4MTUyODBkYTVhNDFlMjY5
NzViNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKQEAgLTIxOSw3ICsy
MTksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKENGRAogICAgICAgICAKICAgICAgICAgTE9HKE5l
dHdvcmssICJDRk5ldCAtIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRo
T3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKGhhbmRsZT0lcCkgKCVzKSIsIGhhbmRsZSwg
aGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAot
ICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKGhhbmRsZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIG9yaWdpbmFsTGVuZ3RoKTsKKyAgICAgICAgaGFu
ZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5kbGUsIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSwgb3JpZ2luYWxMZW5ndGgpOwogICAgIH07CiAgICAg
CiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmlu
ZGV4IDFmZjA2NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNkYWY2OTZmMDI0MDYuLjAwOGUyMjZmZjkx
OTAwNGI0NTE0OGEyNDcyNjExNjE1MDk4OTYyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0
b3IubW0KQEAgLTQxLDggKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFJhbmdl
UmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKICAgICBEYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmIHJlc291cmNlKQotICAgICAgICA6IGJ1ZmZlcihTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpKQotICAgICAgICAsIG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCisgICAgICAg
IDogb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKICAgICAgICAgLCByZXNvdXJjZSgmcmVzb3Vy
Y2UpIHsgfQogCiAgICAgc3RydWN0IFRhc2tEYXRhIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRh
c2tEYXRhPiB7CkBAIC01NSw5ICs1NCw5IEBAIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9y
OjpEYXRhIHsKICAgICAgICAgc2l6ZV90IG5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXggeyAwIH07
CiAgICAgICAgIGVudW0gY2xhc3MgUmVzcG9uc2VTdGF0ZSA6IHVpbnQ4X3QgeyBOb3RTeW50aGVz
aXplZFlldCwgV2FpdGluZ0ZvclNlc3Npb24sIFNlc3Npb25DYWxsZWRDb21wbGV0aW9uSGFuZGxl
ciB9IHJlc3BvbnNlU3RhdGUgeyBSZXNwb25zZVN0YXRlOjpOb3RTeW50aGVzaXplZFlldCB9Owog
ICAgIH07Ci0gICAgCisKICAgICBIYXNoTWFwPFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9u
RGF0YVRhc2s+LCBzdGQ6OnVuaXF1ZV9wdHI8VGFza0RhdGE+PiB0YXNrRGF0YTsKLSAgICBSZWY8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAg
ICAgUmVzb3VyY2VSZXNwb25zZSBvcmlnaW5hbFJlc3BvbnNlOwogICAgIGVudW0gY2xhc3MgU3Vj
Y2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIDogYm9vbCB7IE5vLCBZZXMgfSBzdWNjZXNzZnVsbHlG
aW5pc2hlZExvYWRpbmcgeyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6Ok5vIH07CiAgICAg
UmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVzb3VyY2U7CkBAIC0xMDYsMjIgKzEwNSwy
MiBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJM
U2Vzc2lvbkRhdGFUYXNrICp0YXNrKQogdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZl
UmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1VSTFNlc3Npb25E
YXRhVGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdlJiByYW5nZSwgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZm
ZXI7Ci0gICAgYXV0byBidWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICAvLyBGSVhN
RTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBqdXN0IG1ha2UgYSByYW5nZSB3aXRoIGEgKiBhZnRl
ciB0aGUgLyBidXQgQVZGb3VuZGF0aW9uIGRvZXNuJ3QgYWNjZXB0IHN1Y2ggcmFuZ2VzLgogICAg
IC8vIEluc3RlYWQsIHdlIGp1c3Qgd2FpdCB1bnRpbCB0aGUgbG9hZCBoYXMgY29tcGxldGVkLCBh
dCB3aGljaCB0aW1lIHdlIHdpbGwga25vdyB0aGUgY29udGVudCBsZW5ndGggZnJvbSB0aGUgYnVm
ZmVyIGxlbmd0aC4KICAgICBpZiAoIWV4cGVjdGVkQ29udGVudExlbmd0aCkKICAgICAgICAgcmV0
dXJuOwogCisgICAgYXV0byBidWZmZXJTaXplID0gZGF0YS5idWZmZXIuc2l6ZSgpOwogICAgIGlm
IChidWZmZXJTaXplIDwgcmFuZ2UuYmVnaW4pCiAgICAgICAgIHJldHVybjsKLSAgICAKKworICAg
IGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIuZ2V0KCk7CiAgICAgYXV0byogdGFza0RhdGEgPSBk
YXRhLnRhc2tEYXRhLmdldCh0YXNrKTsKICAgICBpZiAoIXRhc2tEYXRhKQogICAgICAgICByZXR1
cm47Ci0gICAgCi0gICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0
YXNrKSwgYnVmZmVyLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9y
ID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKKworICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rh
c2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgYnVmZmVyU2l6ZSwgdGFza0RhdGEgPSBXZWFr
UHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CiAgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChbdGFzayBzdGF0ZV0gIT0g
TlNVUkxTZXNzaW9uVGFza1N0YXRlUnVubmluZykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEz
MCw3ICsxMjksNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRv
VGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogICAgICAgICBhdXRvJiByYW5n
ZSA9IHRhc2tEYXRhLT5yYW5nZTsKICAgICAgICAgYXV0byYgYnl0ZUluZGV4ID0gdGFza0RhdGEt
Pm5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXg7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAg
ICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgaWYg
KGJ5dGVJbmRleCA+PSBidWZmZXJTaXplKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgYXV0byBidWZmZXJWaWV3ID0gYnVmZmVyLT5nZXRTb21lRGF0YShieXRlSW5kZXgpOwog
ICAgICAgICAgICAgaWYgKCFidWZmZXJWaWV3LnNpemUoKSB8fCBieXRlSW5kZXggPiByYW5nZS5l
bmQpCkBAIC0xNzUsNyArMTc0LDcgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IFJhbmdlUmVzcG9u
c2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKGNvbnMKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChkYXRhLnN1Y2Nlc3NmdWxseUZpbmlzaGVk
TG9hZGluZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6OlllcykKLSAgICAg
ICAgcmV0dXJuIGRhdGEuYnVmZmVyLT5zaXplKCk7CisgICAgICAgIHJldHVybiBkYXRhLmJ1ZmZl
ci5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGVjdGVk
Q29udGVudExlbmd0aCgpIHNob3VsZCByZXR1cm4gc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluc3Rl
YWQgb2YgdXMgZG9pbmcgdGhpcyBjaGVjayBoZXJlLgogICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50
TGVuZ3RoID0gZGF0YS5vcmlnaW5hbFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpOwpA
QCAtMjQ0LDcgKzI0Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikgZmluYWwKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZp
bmFsCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAo
IW1fZ2VuZXJhdG9yKQpAQCAtMjUyLDcgKzI1MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8q
IGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAgICAgICAgaWYg
KCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5idWZmZXItPmFwcGVu
ZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5kKFdURk1vdmUo
YnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5naXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZp
bmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgKaW5kZXgg
NDA0ODg1YWU2Mzc2ZmNlNjgwNDBkMmEwNWMwMGJlYzQ3ZmUxNmFhOC4uY2U0YzI1NDVjZGUwZjJm
NDZhYzMzOGY5NmM0OTA4OGViNDVkMDkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgKQEAgLTUw
LDcgKzUwLDcgQEAgY2xhc3MgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVz
b3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
Y2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBjbGFzcyBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0
YVRhc2tDbGllbnQ7CiBlbnVtIGNsYXNzIFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2sgOiBib29s
OwpAQCAtMTU4LDcgKzE1OCw3IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5T
VVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2VudEJ5dGVzOih1bnNpZ25lZCBs
b25nIGxvbmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2VudDoodW5zaWduZWQgbG9uZyBsb25n
KXRvdGFsQnl0ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZXNwb25zZTooY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXI6KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+
JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtIChCT09MKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlOwotLSAodm9pZClyZXNvdXJj
ZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNl
aXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpZGF0YTsKKy0gKHZvaWQpcmVz
b3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ug
cmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJilkYXRh
OwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291
cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJilyZXNwb25zZSByZXF1ZXN0OihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJilyZXF1
ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpcmVzb3VyY2U6
KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgYWNjZXNz
Q29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JillcnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhFcnJvcjooY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggZTA0MDEw
YTk4MTFiNGM5YWUxNDk0OTk4NzAxY2ExNTQ4OWY1NzE2Yy4uOGM4OWQ5Mzg2NTc5MzNhMWRhMjkw
MzE5OTE1ODRjNGRiMmZhYTlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtNjA4LDcg
KzYwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBv
dmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC02NTIsNyArNjUyLDcgQEAgYm9vbCBXZWJD
b3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZv
cm1NZWRpYVJlc291cmMKICAgICByZXR1cm4gW21fdGFzayByZXNvdXJjZTomcmVzb3VyY2Ugc2hv
dWxkQ2FjaGVSZXNwb25zZTpyZXNwb25zZV07CiB9CiAKLXZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lv
bkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNv
dXJjZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVz
b3VyY2UsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV90YXNrTG9jayB9OwogICAgIGlmICghbV90YXNrKQpAQCAtOTE1LDExICs5
MTUsMTEgQEAgLSAoQk9PTClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJj
ZSBzaG91bGRDYWNoZVJlc3BvbnNlOihjb25zdCBSZXMKICAgICByZXR1cm4gcmVzcG9uc2UuaHR0
cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50UmFuZ2UpLmlzRW1wdHkoKTsKIH0K
IAotLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNl
aXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpZGF0YQorLSAodm9pZClyZXNv
dXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKWRhdGEKIHsKICAgICBBU1NFUlRfVU5V
U0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKICAgICBb
c2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gUmV0YWluUHRy
IHsgc2VsZiB9LCBkYXRhID0gV1RGTW92ZShkYXRhKV0gewotICAgICAgICBhdXRvIG5zRGF0YSA9
IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNv
dW50T2ZCeXRlc1JlY2VpdmVkICs9IGRhdGEtPnNpemUoKTsKICAgICAgICAgaWQ8TlNVUkxTZXNz
aW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVn
YXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlmIChbZGF0
YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFz
azpkaWRSZWNlaXZlRGF0YTopXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCmluZGV4IDY4Y2FmMDU0NmI2MmNmNDk2
NDdkNGI5YzRiZTdmNTllYjViYjVjOWMuLjQwMjU3OTJlYTJiZmZkZDY0ZTA4ZTMxMjAxMjU5Nzcw
OWQ0YjJhZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIGJvb2wgQ3VybENh
Y2hlRW50cnk6OnJlYWRDYWNoZWREYXRhKFJlc291cmNlSGFuZGxlKiBqb2IpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmIChhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXIuc2l6ZSgpKQot
ICAgICAgICBqb2ItPmdldEludGVybmFsKCktPmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKGpv
YiwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKSwgYnVmZmVyU2l6ZSk7Cisg
ICAgICAgIGpvYi0+Z2V0SW50ZXJuYWwoKS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoam9i
LCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKSwgYnVmZmVy
U2l6ZSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKaW5kZXggYzM2ZTFmODg3NjQz
MDQ2MGNlNzUwYTNiOGM2NThjNzM0ZWNiMTUwOC4uMzQ5NDQ1OTI1NGFjOTNmYzE5Y2IxMjE1MGE2
MWJjMmJjZWQwMmQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEN1cmxE
b3dubG9hZDo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3Vy
bFJlc3BvbnNlJiYgcgogfQogCiAKLXZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZUJ1
ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDdXJs
RG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
RG93bmxvYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93
bmxvYWQuaAppbmRleCBhM2FhMGNmNWZjZDI5NTViYjdiMTZiMTFhMWE4MWNhNzRhZTYxYzhkLi5j
ZGU0NDQ1Nzc1Zjc0NDIzMzA1MzBiNjViMTM1N2JhNmJmZDliYjgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCkBAIC03Miw3
ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgUmVmPEN1cmxSZXF1ZXN0PiBjcmVhdGVDdXJsUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVxdWVz
dCYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZSB7IH0K
ICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9u
c2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVz
dCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY3VybERpZFJlY2Vp
dmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9h
ZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJs
UmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggYmJkYTNmYmRhNzU4M2Q5OTE5MzFkZmUxNjlm
N2IzYTkxMzNlNmRhMi4uMTI3NTRjOGI3MDVhNDhhZDc0ZjE4NDU0MDFiOWYxYjVhMTY5OWQ2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0
aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMTE5LDEyICsxMTksMTIgQEAgQ3VybE11bHRp
cGFydEhhbmRsZTo6Q3VybE11bHRpcGFydEhhbmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50
JiBjbGllbnQsIGNvbnMKIAogfQogCi12b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBDdXJsTXVsdGlwYXJ0SGFu
ZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVuZCkKICAgICAgICAgcmV0dXJuOyAvLyBU
aGUgaGFuZGxlciBpcyBjbG9zZWQgZG93biBzbyBpZ25vcmUgZXZlcnl0aGluZy4KIAotICAgIG1f
YnVmZmVyLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX2J1ZmZl
ci5hcHBlbmQoYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7
CiAKICAgICB3aGlsZSAocHJvY2Vzc0NvbnRlbnQoKSkgeyB9CiB9CkBAIC0xMzcsNyArMTM3LDcg
QEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSgpCiAgICAgaWYgKG1fc3Rh
dGUgIT0gU3RhdGU6OkVuZCkgewogICAgICAgICAvLyBJdCBzZWVtcyB3ZSBhcmUgc3RpbGwgbm90
IGF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3NpbmcuCiAgICAgICAgIC8vIFB1c2ggb3V0IHRoZSBy
ZW1haW5pbmcgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlw
YXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgp
KSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX2J1ZmZlcikpKTsKICAgICAgICAgbV9z
dGF0ZSA9IFN0YXRlOjpFbmQ7CiAgICAgfQogCkBAIC0yMzQsMTMgKzIzNCwxMyBAQCBib29sIEN1
cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250ZW50KCkKIAogICAgICAgICBpZiAoIWNoZWNr
Rm9yQm91bmRhcnkoYm91bmRhcnlTdGFydCwgbGFzdFBhcnRpYWxNYXRjaCkgJiYgYm91bmRhcnlT
dGFydCA9PSBub3RGb3VuZCkgewogICAgICAgICAgICAgLy8gRGlkIG5vdCBmaW5kIHRoZSBib3Vu
ZGFyeSBzdGFydCwgYWxsIGRhdGEgdXAgdG8gdGhlIGxhc3RQYXJ0aWFsTWF0Y2ggaXMgb2suCi0g
ICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CisgICAgICAg
ICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOwogICAg
ICAgICAgICAgbV9idWZmZXIucmVtb3ZlKDAsIGxhc3RQYXJ0aWFsTWF0Y2gpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlcmUgd2FzIGEgYm91
bmRhcnkgc3RhcnQgKG9yIGVuZCB3ZSdsbCBjaGVjayB0aGF0IGxhdGVyKSwgcHVzaCBvdXQgcGFy
dCBvZiB0aGUgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlw
YXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkp
OworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOwog
ICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgYm91bmRhcnlTdGFydCArIG1fYm91bmRhcnkubGVu
Z3RoKCkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZEJvdW5kYXJ5OwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlw
YXJ0SGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZS5oCmluZGV4IDVjMDhiY2M1ZWIzZTRiYmNjMDI5YjQ3Njc4NjhmNDNlMmY5
NWMzNDEuLjlhMWExYmJkMTkzOGExNGY2OWZjY2VlM2YwZjg5Yjk3YTRhMjE4NzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0
aXBhcnRIYW5kbGUuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQ7CiBjbGFzcyBDdXJsUmVzcG9uc2U7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBD
dXJsTXVsdGlwYXJ0SGFuZGxlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ0
LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEN1cmxNdWx0aXBhcnRIYW5kbGUoQ3VybE11bHRpcGFy
dEhhbmRsZUNsaWVudCYsIGNvbnN0IFN0cmluZyYpOwogICAgIH5DdXJsTXVsdGlwYXJ0SGFuZGxl
KCkgeyB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwog
ICAgIHZvaWQgZGlkQ29tcGxldGUoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRs
ZUNsaWVudC5oCmluZGV4IGZkMTNmZDM4MTMxNDNjYjI2NTliOGZkMWRiMjQ0NDc2NWU5OGE1ODAu
LmM4MTM4ODZhOGQ1YzVmYTZjMTJkMTQxMzMxOTEwMWFmMjUwMmEyYWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0
aXBhcnRIYW5kbGVDbGllbnQuaApAQCAtMjgsMTIgKzI4LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEN1cmxSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQg
ewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFy
dChjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB+Q3VybE11bHRpcGFydEhhbmRsZUNsaWVu
dCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5jcHAKaW5kZXggZDM1YjBlODM5MTk1MWQzODYzNGU5OTA5M2I2ODY1NjI0ZDk5
Nzk1MS4uNmUxZGM4MTRjY2JlOGRjYjU4ZjUyMTA4NTdlN2Q1ZTY5ZDUxYTMwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3Bw
CkBAIC0zOTYsNyArMzk2LDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVy
KFN0cmluZyYmIGhlYWRlcikKIAogLy8gY2FsbGVkIHdpdGggZGF0YSBhZnRlciBhbGwgaGVhZGVy
cyBoYXZlIGJlZW4gcHJvY2Vzc2VkIHZpYSBoZWFkZXJDYWxsYmFjawogCi1zaXplX3QgQ3VybFJl
cXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorc2l6ZV90
IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAgICAg
cmV0dXJuIDA7CkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2
ZUhlYWRlckZyb21NdWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhlYWRlcnMpCiAgICAg
aW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBBY3Rpb246Ok5vbmUpOwogfQogCi12
b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0
aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChp
c0NvbXBsZXRlZE9yQ2FuY2VsbGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTc3Nyw3ICs3Nzcs
NyBAQCBjb25zdCBTdHJpbmcmIEN1cmxSZXF1ZXN0OjpnZXREb3dubG9hZGVkRmlsZVBhdGgoKQog
ICAgIHJldHVybiBtX2Rvd25sb2FkRmlsZVBhdGg7CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3Q6Ondy
aXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQordm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHsKICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fZG93bmxvYWRNdXRleCB9OwpAQCAtNzkwLDcgKzc5MCw3IEBAIHZvaWQg
Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogICAgIH0KIAogICAgIGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAh
PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAgICBGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVm
ZmVyLnNpemUoKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRG
aWxlSGFuZGxlLCBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKIH0KIAogdm9pZCBDdXJsUmVxdWVzdDo6Y2xvc2VEb3dubG9hZEZpbGUoKQpAQCAtODI2LDcg
KzgyNiw3IEBAIHNpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZUhlYWRlckNhbGxiYWNrKGNo
YXIqIHB0ciwgc2l6ZV90IGJsb2NrU2l6ZSwgc2l6ZV90CiAKIHNpemVfdCBDdXJsUmVxdWVzdDo6
ZGlkUmVjZWl2ZURhdGFDYWxsYmFjayhjaGFyKiBwdHIsIHNpemVfdCBibG9ja1NpemUsIHNpemVf
dCBudW1iZXJPZkJsb2Nrcywgdm9pZCogdXNlckRhdGEpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PEN1cmxSZXF1ZXN0Kj4odXNlckRhdGEpLT5kaWRSZWNlaXZlRGF0YShTaGFyZWRCdWZmZXI6
OmNyZWF0ZShwdHIsIGJsb2NrU2l6ZSAqIG51bWJlck9mQmxvY2tzKSk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEN1cmxSZXF1ZXN0Kj4odXNlckRhdGEpLT5kaWRSZWNlaXZlRGF0YShDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocHRyLCBibG9ja1NpemUgKiBudW1iZXJPZkJsb2Nrcykp
OwogfQogCiBpbnQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEZWJ1Z0luZm9DYWxsYmFjayhDVVJM
KiwgY3VybF9pbmZvdHlwZSB0eXBlLCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSwgdm9pZCogdXNl
ckRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdC5oCmluZGV4IDZiZDhhNmJmYmEzNzUyY2VkZGRiYzUwMDllYWU4M2M0ZjBlZWQ2NDEu
LjNjN2NkZDg4M2ViNjJiZmU5MmNmMDQ0NWVkMjliZDI2ZWNlM2U5MjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCkBAIC00Miw3
ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEN1cmxSZXF1ZXN0Q2xpZW50Owog
Y2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTeW5jaHJv
bm91c0xvYWRlck1lc3NhZ2VRdWV1ZTsKIAogY2xhc3MgQ3VybFJlcXVlc3QgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8Q3VybFJlcXVlc3Q+LCBwdWJsaWMgQ3VybFJlcXVlc3RTY2hlZHVs
ZXJDbGllbnQsIHB1YmxpYyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50IHsKQEAgLTEyMiw5ICsx
MjIsOSBAQCBwcml2YXRlOgogICAgIENVUkwqIHNldHVwVHJhbnNmZXIoKSBvdmVycmlkZTsKICAg
ICBzaXplX3Qgd2lsbFNlbmREYXRhKGNoYXIqLCBzaXplX3QsIHNpemVfdCk7CiAgICAgc2l6ZV90
IGRpZFJlY2VpdmVIZWFkZXIoU3RyaW5nJiYpOwotICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0YShS
ZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzaXplX3QgZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUhlYWRlckZyb21NdWx0
aXBhcnQoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhRnJvbU11bHRpcGFydChSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVRyYW5zZmVyKENVUkxjb2RlKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNlbFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBmaW5hbGl6ZVRyYW5zZmVyKCk7CkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICBO
ZXR3b3JrTG9hZE1ldHJpY3MgbmV0d29ya0xvYWRNZXRyaWNzKCk7CiAKICAgICAvLyBEb3dubG9h
ZAotICAgIHZvaWQgd3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVk
QnVmZmVyJik7CisgICAgdm9pZCB3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBjbG9zZURvd25sb2FkRmlsZSgp
OwogICAgIHZvaWQgY2xlYW51cERvd25sb2FkRmlsZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCmluZGV4
IDA4Yzg2YzdkNDY4NGJhNmY3OGQ2MTZiNjhkMDY5MDRjMzdhOTY2NzcuLjM0Nzk4MzJmNTc2ZDQx
MjhhZmE1MWM4MTQyNGNjZmQ3NDFkZjZhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCkBAIC0zNCw3ICsz
NCw3IEBAIGNsYXNzIEN1cmxSZXF1ZXN0OwogY2xhc3MgQ3VybFJlc3BvbnNlOwogY2xhc3MgTmV0
d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxSZXF1ZXN0Q2xp
ZW50IHsKIHB1YmxpYzoKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRl
c1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNw
b25zZSYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxS
ZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjdXJs
RGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYs
IE5ldHdvcmtMb2FkTWV0cmljcyYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRGYWls
V2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8m
JikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDgx
OGQ1YTk1ZTNlMTI0ZGMzYTcyZjc0M2U1Y2Q0NTNkNzE3ZTAxMGYuLjMwNWQ0ZTVjOWZjMjcwNzc1
Nzg3YjBmOWE5MTk3OWMwODg4OWE4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmNwcApAQCAtMTQyLDE1ICsxNDIsMTYgQEAgdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZTo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3UKICAg
ICB9KTsKIH0KIAotdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2Vp
dmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQg
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1
ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJl
Y2VpdmVEYXRhKG1faGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwotICAg
IGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShidWZmZXIpLCBi
dWZmZXItPnNpemUoKSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtl
Q29udGlndW91cygpOworICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2Vp
dmVEYXRhKG1faGFuZGxlLCBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKKyAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoY29u
dGlndW91c0J1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVzb3VyY2VI
YW5kbGVEZWxlZ2F0ZTo6Y3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRN
ZXRyaWNzJiYgbWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgKaW5kZXgg
NmQ1NTg2NDQ1MmZkNDZlZTc4MDBlOTMxMjNiMTI4YmRjNjRjZTQ4Ny4uZGFmMGE1OWE0ZTU4NmQ3
MTE0YWJiNGU1ZWY5YzU0ZjZhOGJlZmM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjdXJsRGlkU2VuZERh
dGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBs
b25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRSZWNl
aXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgZmluYWw7Ci0gICAgdm9p
ZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYp
IGZpbmFsOworICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxl
dGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgZmluYWw7CiAgICAgdm9pZCBj
dXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlm
aWNhdGVJbmZvJiYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IDBkODYyNjAx
Mjk0OTYwN2VhNTkyNDhhZWZhN2JjMWI1NjEyZWU0NjMuLmFmMTE2MjhhZjdmMjRjOGJhZDM4N2Ix
N2RiOWZkMmM5ZWMzNmEzM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC01NTgsNyArNTU4
LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6aGFuZGxlRGF0YVVSTCgpCiAgICAgICAgIGlmIChj
bGllbnQoKSkgewogICAgICAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShk
YXRhLCBCYXNlNjREZWNvZGVPcHRpb25zOjpJZ25vcmVTcGFjZXNBbmROZXdMaW5lcyk7CiAgICAg
ICAgICAgICBpZiAoZGVjb2RlZERhdGEgJiYgZGVjb2RlZERhdGEtPnNpemUoKSA+IDApCi0gICAg
ICAgICAgICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIodGhpcywgU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGVjb2RlZERhdGEtPmRhdGEoKSwgZGVjb2RlZERhdGEtPnNpemUoKSksIG9yaWdp
bmFsU2l6ZSk7CisgICAgICAgICAgICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIodGhp
cywgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRlY29kZWREYXRhLT5kYXRhKCksIGRl
Y29kZWREYXRhLT5zaXplKCkpLCBvcmlnaW5hbFNpemUpOwogICAgICAgICB9CiAgICAgfSBlbHNl
IHsKICAgICAgICAgVGV4dEVuY29kaW5nIGVuY29kaW5nKGNoYXJzZXQpOwpAQCAtNTcxLDcgKzU3
MSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmhhbmRsZURhdGFVUkwoKQogICAgICAgICBpZiAo
Y2xpZW50KCkpIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlZERhdGEgPSBlbmNvZGluZy5lbmNv
ZGUoZGF0YSwgVW5lbmNvZGFibGVIYW5kbGluZzo6VVJMRW5jb2RlZEVudGl0aWVzKTsKICAgICAg
ICAgICAgIGlmIChlbmNvZGVkRGF0YS5zaXplKCkpCi0gICAgICAgICAgICAgICAgY2xpZW50KCkt
PmRpZFJlY2VpdmVCdWZmZXIodGhpcywgU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShlbmNv
ZGVkRGF0YSkpLCBvcmlnaW5hbFNpemUpOworICAgICAgICAgICAgICAgIGNsaWVudCgpLT5kaWRS
ZWNlaXZlQnVmZmVyKHRoaXMsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGVuY29kZWREYXRhKSksIG9yaWdpbmFsU2l6ZSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCBiYzRkYWFmYmYyMWExNWMwZTZkZDFhY2Q0NjIy
YWZhNTZiN2I4ZDVkLi4xZjRhMTkzMTMzMTJjNWRkNmE0OGFkNTMzOWRmZDJjM2I1ZGVjMjU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9p
b3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0zMSwxMiArMzEsMTIgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50IDogcHVibGlj
IFJlZkNvdW50ZWQ8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gewogcHVibGljOgogICAgIHZp
cnR1YWwgfkxlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWwoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVu
dHJ5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVl
dWVEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQppbmRleCAzMTVlMDY1
MTUzMGRjZGIwMjgwMTY1NGI3NTdkODE0NzNjMjBmZDMwLi4zNWQ1MjYxNTE3ZWY0ZjA0MzM2MWQ1
ZDEwMGZkNzhkNmM4ZDA5ZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCkBAIC0zMDAsNyArMzAwLDcgQEAg
LSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2Vp
dmVEYXRhOihOU0RhdGEgKilkYXRhIGwKICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc5MwogICAgICAgICAvLyAtMSBtZWFucyB3ZSBk
byBub3QgcHJvdmlkZSBhbnkgZGF0YSBhYm91dCB0cmFuc2ZlciBzaXplIHRvIGluc3BlY3RvciBz
byBpdCB3b3VsZCB1c2UKICAgICAgICAgLy8gQ29udGVudC1MZW5ndGggaGVhZGVycyBvciBjb250
ZW50IHNpemUgdG8gc2hvdyB0cmFuc2ZlciBzaXplLgotICAgICAgICBtX2hhbmRsZS0+Y2xpZW50
KCktPmRpZFJlY2VpdmVCdWZmZXIobV9oYW5kbGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
Z2V0KCkpLCAtMSk7CisgICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZl
cihtX2hhbmRsZSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpLCAt
MSk7CiAgICAgfTsKIAogICAgIFtzZWxmIGNhbGxGdW5jdGlvbk9uTWFpblRocmVhZDpXVEZNb3Zl
KHdvcmspXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJl
ZEJ1ZmZlclBPU0lYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1
ZmZlclBPU0lYLmNwcAppbmRleCAwZmI0NTAwNzJmYTEwNDIyZjZhOWZlNDMyYzM4MWQzZDE5NjEz
ZTYwLi5kNjMyMjI1NjRlZjA3NGNkYmNkN2VlMjEzZWE5OTE1NzQwN2UzNTU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCkBA
IC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsK
ICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTY4LDcgKzY4LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVG
cm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICBpZiAodG90YWxCeXRl
c1JlYWQgIT0gYnl0ZXNUb1JlYWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgcmV0dXJuIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAKaW5kZXggYzU0NDUzODVhNzdhYzEyYzA5ZWYyNDg2NjQ3M2Q2MmNiNjc5NDU1
YS4uNDUzNjgxYmRhYjJlNGEwNWEyMWZjNjhhOTQzNzAwZTA2Yzk5N2ExZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtMzU2LDcgKzM1Niw3
IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIAogc3RydWN0IFBhc3RlYm9hcmRGaWxlQ291bnRlciBmaW5hbCA6IFBhc3RlYm9h
cmRGaWxlUmVhZGVyIHsKICAgICB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5h
bCB7ICsrY291bnQ7IH0KLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWwgeyArK2NvdW50OyB9CisgICAgdm9p
ZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKSBmaW5hbCB7ICsrY291bnQ7IH0KIAogICAgIHVuc2lnbmVkIGNvdW50
IHsgMCB9OwogfTsKQEAgLTk3NCw3ICs5NzQsNyBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9i
YWxJbWFnZUZpbGVEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmCiAg
ICAgcmV0dXJuIG1lbU9iajsKIH0KIAotc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VG
aWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCitzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9i
YWxJbWFnZUZpbGVDb250ZW50KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAg
SEdMT0JBTCBtZW1PYmogPSBHbG9iYWxBbGxvYyhHUFRSLCBkYXRhLT5zaXplKCkpOwogICAgIGlm
ICghbWVtT2JqKSAKQEAgLTk4NiwxNSArOTg2LDE1IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUds
b2JhbEltYWdlRmlsZUNvbnRlbnQoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAKLSAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICBDb3B5TWVtb3J5KGZp
bGVDb250ZW50cywgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhLT5z
aXplKCkpCisgICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBHbG9iYWxVbmxvY2sobWVtT2Jq
KTsKIAogICAgIHJldHVybiBtZW1PYmo7CiB9CiAKLXN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2Jh
bEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkQnVm
ZmVyKiBkYXRhKQorc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0
IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRh
KQogewogICAgIGlmIChmaWxlTmFtZS5pc0VtcHR5KCkgfHwgIWRhdGEpCiAgICAgICAgIHJldHVy
biAwOwpAQCAtMTAzOCw4ICsxMDM4LDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERy
b3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWQKICAgICAg
ICAgLy8gV3JpdGUgdGhlIGRhdGEgdG8gdGhpcyB0ZW1wIGZpbGUuCiAgICAgICAgIERXT1JEIHdy
aXR0ZW47CiAgICAgICAgIEJPT0wgdGVtcFdyaXRlU3VjY2VlZGVkID0gRkFMU0U7Ci0gICAgICAg
IGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0
ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRl
biwgMCk7CisgICAgICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgICAgICB0ZW1wV3JpdGVT
dWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CiAgICAgICAgIENsb3NlSGFu
ZGxlKHRlbXBGaWxlSGFuZGxlKTsKICAgICAgICAgaWYgKCF0ZW1wV3JpdGVTdWNjZWVkZWQpCiAg
ICAgICAgICAgICByZXR1cm4gMDsKQEAgLTEwNzEsNyArMTA3MSw3IEBAIHZvaWQgUGFzdGVib2Fy
ZDo6d3JpdGVJbWFnZVRvRGF0YU9iamVjdChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBVUkwmIHVy
bCkKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8ICFjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJl
cihlbGVtZW50LnJlbmRlcmVyKCkpIHx8ICFjYWNoZWRJbWFnZS0+aXNMb2FkZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgU2hhcmVkQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGNhY2hlZEltYWdl
LT5pbWFnZUZvclJlbmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSktPmRhdGEoKTsKKyAgICBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJl
bmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSktPmRhdGEoKTsKICAgICBpZiAoIWltYWdlQnVmZmVy
IHx8ICFpbWFnZUJ1ZmZlci0+c2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKaW5kZXggODljZjZhMGJi
NjU4NzA4MzQ1NDE0NjA2NjdjNTE1YThhYWNmODcyMy4uMDczOWRkZjQ0YmYwM2M1ZjE5OTFlZTI2
NmJkYTFkNWQ1ZDczOGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1NoYXJlZEJ1ZmZlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1No
YXJlZEJ1ZmZlcldpbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtNDUsNyArNDUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZXN1bHQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlc3VsdDsK
ICAgICBEV09SRCBieXRlc1RvUmVhZCA9IEdldEZpbGVTaXplKGZpbGVIYW5kbGUsIDApOwogICAg
IERXT1JEIGxhc3RFcnJvciA9IEdldExhc3RFcnJvcigpOwogCkBAIC01Myw3ICs1Myw3IEBAIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoYnl0
ZXNUb1JlYWQpOwogICAgICAgICBEV09SRCBieXRlc1JlYWQ7CiAgICAgICAgIGlmIChSZWFkRmls
ZShmaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5dGVzUmVhZCwgMCkg
JiYgYnl0ZXNUb1JlYWQgPT0gYnl0ZXNSZWFkKQotICAgICAgICAgICAgcmVzdWx0ID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFkIGNvbnRlbnRz
IG9mIGZpbGUgJXMsIEdldExhc3RFcnJvcigpID0gJXUiLCBmaWxlUGF0aC5hc2NpaSgpLmRhdGEo
KSwgR2V0TGFzdEVycm9yKCkpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDRE1GYWN0b3J5LmNwcAppbmRleCA0MTFlZGJiMzUxN2I4NDhmYWMwNjNkMTllOGNkOTVlYzAw
MzdjZDYxLi44YTIxMGM4MDNjZWJlNTlkMWJhNTkyOGIxNjk3MDgxMWY1ZGJhMDc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtNjMsNyArNjMsNyBAQCBi
b29sIE1vY2tDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSkKICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShrZXlTeXN0ZW0sICJvcmcu
d2Via2l0Lm1vY2siKTsKIH0KIAotdm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lv
bldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYga2V5
cykKK3ZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3Ry
aW5nJiBpZCwgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBrZXlzKQogewog
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXNzaW9ucy5hZGQoaWQsIFdURk1vdmUoa2V5cykpOwog
ICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBNb2Nr
Q0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0
b3I8UmVmPFNoYXJlZEIKICAgICAgICAgdmFsdWUuYXBwZW5kKFdURk1vdmUoa2V5KSk7CiB9CiAK
LVZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9t
U2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQorVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChj
b25zdCBTdHJpbmcmIGlkKQogewogICAgIGF1dG8gaXQgPSBtX3Nlc3Npb25zLmZpbmQoaWQpOwog
ICAgIGlmIChpdCA9PSBtX3Nlc3Npb25zLmVuZCgpKQpAQCAtODMsNyArODMsNyBAQCBWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJvbVNlc3Npb25X
aXRoSUQoY29uc3QgU3RyaQogICAgIHJldHVybiBXVEZNb3ZlKGl0LT52YWx1ZSk7CiB9CiAKLWNv
bnN0IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4qIE1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vz
c2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdAorY29uc3QgVmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4qIE1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJ
RChjb25zdCBTdHJpbmcmIGlkKSBjb25zdAogewogICAgIGF1dG8gaXQgPSBtX3Nlc3Npb25zLmZp
bmQoaWQpOwogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25zLmVuZCgpKQpAQCAtMjAyLDcgKzIwMiw3
IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIG1f
ZmFjdG9yeSAmJiBtX2ZhY3RvcnktPnN1cHBvcnRzU2Vzc2lvbnMoKTsKIH0KIAotYm9vbCBNb2Nr
Q0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29u
c3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgTW9ja0NETTo6c3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewogICAgIGlmICghc3VwcG9ydGVkSW5pdERh
dGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTIxMSwxMiArMjExLDEzIEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVzcG9u
c2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewotICAgIGlmICghY2hhcmFjdGVyc0FyZUFs
bEFTQ0lJKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKKyAgICBhdXRvIGJ1ZmZl
ciA9IHJlc3BvbnNlLm1ha2VDb250aWd1b3VzKCk7CisgICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxs
QVNDSUkoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhyZXNw
b25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3Ry
aW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXpl
KCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAoIXJlc3BvbnNlQXJyYXkuY29udGFpbnMoU3RyaW5n
KCJ2YWxpZC1yZXNwb25zZSJfcykpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI2OSw5
ICsyNzAsOSBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0
aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdAogICAgIGNhbGxiYWNrKGluaXRpYWxp
emUoKSk7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3ZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7Ci0gICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUt
PmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CisgICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0
ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2VydGlm
aWNhdGUtPnNpemUoKSk7CiAKICAgICBjYWxsYmFjayhlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNl
cnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlkIikgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwogfQpA
QCAtMjk3LDIyICsyOTgsMjIgQEAgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6TW9ja0NETUluc3Rh
bmNlU2Vzc2lvbihXZWFrUHRyPE1vY2tDRE1JbnN0YW5jZT4mJiBpbnN0YW4KIHsKIH0KIAotdm9p
ZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNl
bnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUlu
c3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIE1vY2tDRE1G
YWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFuY2UtPmZhY3RvcnkoKSA6IG51
bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7Ci0gICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCksIGVtcHR5QXRvbSgpLCBmYWxzZSwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwor
ICAgICAgICBjYWxsYmFjayhDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlB
dG9tKCksIGZhbHNlLCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAoIWZhY3RvcnktPnN1cHBvcnRlZFNlc3Npb25UeXBlcygpLmNvbnRhaW5z
KGxpY2Vuc2VUeXBlKSB8fCAhZmFjdG9yeS0+c3VwcG9ydGVkRGF0YVR5cGVzKCkuY29udGFpbnMo
aW5pdERhdGFUeXBlKSkgewotICAgICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
LCBlbXB0eVN0cmluZygpLCBmYWxzZSwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOworICAgICAgICBj
YWxsYmFjayhDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwg
ZmFsc2UsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGF1dG8ga2V5SURzID0gSW5pdERhdGFSZWdpc3RyeTo6c2hhcmVkKCkuZXh0cmFjdEtleUlE
cyhpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKICAgICBpZiAoIWtleUlEcyB8fCBrZXlJRHMudmFs
dWUoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKKyAgICAgICAg
Y2FsbGJhY2soQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCks
IGZhbHNlLCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTMyMCwxMCArMzIxLDEwIEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVz
dExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TCiAgICAgZmFjdG9y
eS0+YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChzZXNzaW9uSUQsIFdURk1vdmUoa2V5SURzLnZhbHVl
KCkpKTsKIAogICAgIENTdHJpbmcgbGljZW5zZSB7ICJsaWNlbnNlIiB9OwotICAgIGNhbGxiYWNr
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGxpY2Vuc2UuZGF0YSgpLCBsaWNlbnNlLmxlbmd0aCgpKSwg
c2Vzc2lvbklELCBmYWxzZSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOworICAgIGNhbGxiYWNr
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShsaWNlbnNlLmRhdGEoKSwgbGljZW5zZS5s
ZW5ndGgoKSksIHNlc3Npb25JRCwgZmFsc2UsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKIH0K
IAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwg
TGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNl
c3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNh
bGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2lu
c3RhbmNlID8gbV9pbnN0YW5jZS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3Rv
cnkpIHsKQEAgLTMzMSw3ICszMzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLAogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBT
dHJpbmcocmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKKyAg
ICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAg
aWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkg
ewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpAQCAtMzY4LDcgKzM2OSw3IEBAIHZv
aWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluCiAgICAgLy8gRklYTUU6IEtleSBzdGF0dXMgYW5kIGV4cGly
YXRpb24gaGFuZGxpbmcgc2hvdWxkIGJlIGltcGxlbWVudGVkIG9uY2UgdGhlIHJlbGV2YW50IGFs
Z29yaXRobXMgYXJlIHN1cHBvcnRlZC4KIAogICAgIENTdHJpbmcgbWVzc2FnZURhdGEgeyAic2Vz
c2lvbiBsb2FkZWQiIH07Ci0gICAgTWVzc2FnZSBtZXNzYWdlIHsgTWVzc2FnZVR5cGU6OkxpY2Vu
c2VSZW5ld2FsLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtZXNzYWdlRGF0YS5kYXRhKCksIG1lc3Nh
Z2VEYXRhLmxlbmd0aCgpKSB9OworICAgIE1lc3NhZ2UgbWVzc2FnZSB7IE1lc3NhZ2VUeXBlOjpM
aWNlbnNlUmVuZXdhbCwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2VEYXRh
LmRhdGEoKSwgbWVzc2FnZURhdGEubGVuZ3RoKCkpIH07CiAKICAgICBjYWxsYmFjayhzdGQ6Om51
bGxvcHQsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShtZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNj
ZWVkZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSk7CiB9CkBAIC00MDAsNyArNDAxLDcgQEAg
dm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJp
bmcmIGlkLCBMaWNlbnNlVHlwZSwgUmUKICAgICAgICAga2V5U3RhdHVzVmVjdG9yLnVuY2hlY2tl
ZEFwcGVuZCh7IFdURk1vdmUoa2V5KSwgS2V5U3RhdHVzOjpSZWxlYXNlZCB9KTsKIAogICAgIENT
dHJpbmcgbWVzc2FnZSB7ICJyZW1vdmUtbWVzc2FnZSIgfTsKLSAgICBjYWxsYmFjayhXVEZNb3Zl
KGtleVN0YXR1c1ZlY3RvciksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2UuZGF0YSgpLCBt
ZXNzYWdlLmxlbmd0aCgpKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOworICAgIGNhbGxiYWNr
KFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLmxlbmd0aCgpKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVk
ZWQpOwogfQogCiB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnN0b3JlUmVjb3JkT2ZLZXlV
c2FnZShjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5o
CmluZGV4IGY1Y2RhNTA1Y2YyYTMzYzEwNWYwMjVjOTdjOTM1MGE5Njg2OThlMWUuLmQ5NmMxNTZl
ZTRkMjc5MWI4YjA5OThkYWY5NDBlYzc1Mzc4MDdiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDRE1GYWN0b3J5LmgKQEAgLTc3LDkgKzc3LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBo
YXNTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIHsgcmV0dXJuIG1fc2Vzc2lvbnMuY29u
dGFpbnMoaWQpOyB9CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYg
aWQpIHsgbV9zZXNzaW9ucy5yZW1vdmUoaWQpOyB9Ci0gICAgdm9pZCBhZGRLZXlzVG9TZXNzaW9u
V2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4mJik7Ci0g
ICAgY29uc3QgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pioga2V5c0ZvclNlc3Npb25XaXRoSUQo
Y29uc3QgU3RyaW5nJiBpZCkgY29uc3Q7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBy
ZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCk7CisgICAgdm9pZCBh
ZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIGNvbnN0IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+KiBrZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25z
dDsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiByZW1vdmVLZXlzRnJv
bVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCk7CiAKIHByaXZhdGU6CiAgICAgTW9ja0NE
TUZhY3RvcnkoKTsKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2FuQ3Jl
YXRlSW5zdGFuY2VzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9zdXBwb3J0c1NlcnZlckNlcnRpZmlj
YXRlcyB7IHRydWUgfTsKICAgICBib29sIG1fc3VwcG9ydHNTZXNzaW9ucyB7IHRydWUgfTsKLSAg
ICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gbV9zZXNzaW9uczsK
KyAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+
IG1fc2Vzc2lvbnM7CiB9OwogCiBjbGFzcyBNb2NrQ0RNIDogcHVibGljIENETVByaXZhdGUgewpA
QCAtMTIxLDggKzEyMSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgp
IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5h
bDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNv
bnN0IGZpbmFsOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29u
c3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qg
ZmluYWw7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9u
c2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBm
aW5hbDsKIAogICAgIFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IG1fZmFjdG9yeTsKQEAgLTEzOSw3
ICsxMzksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBs
ZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6
Ok1vY2s7IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRp
YUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFs
bG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBz
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2sm
JikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3Rv
cmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSgpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNy
ZWF0ZVNlc3Npb24oKSBmaW5hbDsKQEAgLTE1NCw4ICsxNTQsOCBAQCBwdWJsaWM6CiAgICAgTW9j
a0NETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRyPE1vY2tDRE1JbnN0YW5jZT4mJik7CiAKIHByaXZh
dGU6Ci0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2Fs
bGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExp
Y2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikg
ZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0
YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25z
dCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExp
Y2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vu
c2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vz
c2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3Qg
U3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGZj
MTI3YjdiNjdiZWE3MzQ0NjNjZDJkNWIwNzU2YjU5YmViYTU4YWUuLjVjOTRhYzc3NDliNzlmMzBk
MDc3MDNlZTViYTQ1MTdmNzc3MWI4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0xMTAsMTAgKzExMCwxMCBAQCB2b2lkIE1vY2tDb250ZW50
RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQogICAgIG1heWJlRGV0ZXJtaW5lU3RhdHVzKERl
Y2lzaW9uUG9pbnQ6OkFmdGVyRmluaXNoZWRBZGRpbmdEYXRhKTsKIH0KIAotUmVmPFNoYXJlZEJ1
ZmZlcj4gTW9ja0NvbnRlbnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgpIGNvbnN0CitSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gTW9ja0NvbnRlbnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGRpZEJsb2NrRGF0YSgpKTsKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUobV9yZXBsYWNlbWVudERhdGEuZGF0YSgpLCBtX3JlcGxhY2VtZW50RGF0
YS5zaXplKCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9y
ZXBsYWNlbWVudERhdGEuZGF0YSgpLCBtX3JlcGxhY2VtZW50RGF0YS5zaXplKCkpOwogfQogCiBD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgTW9ja0NvbnRlbnRGaWx0ZXI6OnVuYmxvY2tIYW5k
bGVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRl
bnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaApp
bmRleCA0MTFhMzAwOTQ3YjUzOWUyNmFhNmM2NGEwMDkzMjkyZTlmZmJlNmI5Li42MzVhYzg0YmU3
OTM4NDdhYTU3MjEzZDAxZmZjMWU3NGY3NmI3NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlci5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAg
IHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsK
ICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
IHVuYmxvY2tIYW5kbGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmNwcAppbmRleCA2ZDQ4YmQwMmQxYzkxZjdlZWQ4NjRhMTZjZDc1
NmJiMDc3ZDY1NTJhLi4xZjE5NmJmMjliYzg2YmM2MjZjNGE5ZmM1ZDkyMDBjNWNmZWYzY2Y5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCkBAIC0zOCwyMiArMzgsMjEg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBt
X2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgp
KTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQog
CiBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCiB7Ci0gICAgcmV0dXJuIFNjcmlw
dEJ1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsKKyAgICByZXR1cm4gU2NyaXB0QnVm
ZmVyIHsgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsKIH0KIAotCiBTdHJpbmcg
U2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAg
IG1fYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgIG1fYnVm
ZmVyLmdldCgpLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewogICAgICAgICBi
dWlsZGVyLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNp
emUoKSkpOwogICAgIH0pOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC02MSwx
NSArNjAsMTMgQEAgU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogCiBib29s
IFNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9i
dWZmZXItPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKKyAgICBy
ZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXIuZ2V0KCktPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1
ZmZlci5nZXQoKS0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOwog
fQogCiB2b2lkIFNjcmlwdEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewot
ICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyLT5hcHBl
bmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4
LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3Jp
cHRCdWZmZXImIGEsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Nj
cmlwdEJ1ZmZlci5oCmluZGV4IGIzOWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3OTZiNzFhMDQzMTM0YzY2
NDYuLjhhYWJmYWMxMmY0ODE2ZjliZjc0NzFhN2IwNjYwNmNkY2RlMGZkM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBTY3JpcHRC
dWZmZXIgewogcHVibGljOgogICAgIFNjcmlwdEJ1ZmZlcigpID0gZGVmYXVsdDsKIAotICAgIFNj
cmlwdEJ1ZmZlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBTY3JpcHRCdWZm
ZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1f
YnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKICAgICB7CiAgICAgfQpAQCAtNDgsMTcgKzQ4LDE3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTY3JpcHRCdWZmZXIoY29uc3Qg
U3RyaW5nJik7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICBTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CisgICAgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCku
Z2V0KCk7IH0KIAotICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVy
biBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci0+
Y29weSgpKSA6IG51bGxwdHIpOyB9CisgICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNv
bnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlciB8fCAhbV9idWZmZXItPnNpemUoKTsgfQor
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzRW1wdHkoKTsgfQog
CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50
KCkgY29uc3Q7CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBl
bmNvZGVkIHNjcmlwdC4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOyAvLyBDb250
YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29u
c3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggNzc0MTZlYzA3ZDdi
NjhiMTI4ZTI5NjFlZGM1ZDY0MGQwNGQ0YmQ0NS4uZTVmMzQ5YjQ4Mjc0NmY5ZWRiOWM1ZjYzMWJm
YWQ0YjQxOTk4YmEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJG
b250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9u
dExvYWRSZXF1ZXN0LmNwcApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBX
b3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVzdChVUkwmJiB1cmwsIExv
YWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKICAgICA6IG1fdXJs
KFdURk1vdmUodXJsKSkKICAgICAsIG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZShsb2FkZWRGcm9t
T3BhcXVlU291cmNlKQorICAgICwgbV9kYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVp
bGRlcj4oKSkKIHsKIH0KIApAQCAtNzgsOSArNzksMTMgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJl
cXVlc3Q6OmxvYWQoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogYm9vbCBX
b3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJp
bmcmKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2Nj
dXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNl
c3NhcnkobV9kYXRhKTsKLSAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgbV9mb250
Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9kYXRh
LCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhOworICAgICAgICBpZiAobV9k
YXRhLT5nZXQoKSkKKyAgICAgICAgICAgIGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLT50YWtlKCkt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3Nhcnko
Y29udGlndW91c0RhdGEpOworICAgICAgICBpZiAoY29udGlndW91c0RhdGEpIHsKKyAgICAgICAg
ICAgIG1fZGF0YS0+YXBwZW5kKCpjb250aWd1b3VzRGF0YSk7CisgICAgICAgICAgICBtX2ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1
b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CiAgICAgICAg
ICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKICAgICAgICAgICAgICAgICBtX2Vy
cm9yT2NjdXJyZWQgPSB0cnVlOwogICAgICAgICB9CkBAIC0xMTcsOSArMTIyLDYgQEAgdm9pZCBX
b3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBkYXRhTGVuZ3RoKQogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmICghbV9kYXRhKQotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwotCiAgICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IGI5
ZmNmYjFkNmZlYThhZDVlNzgwYmRlZWJjNWM2ZTA0YTFlODYzYzcuLmE2OGNjYzZkZmE5NTU5ZGQ5
YmI1MTAyNmY1ODNhMDliMTg0N2E3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtMzAsMTMgKzMwLDE0IEBACiAjaW5jbHVkZSAiUmVz
b3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5o
IgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250
Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBXb3JrZXJHbG9i
YWxTY29wZTsKIAogc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CkBAIC01MSw3ICs1Miw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9kYXRhOyB9CisgICAg
Ym9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1f
ZXJyb3JPY2N1cnJlZCAmJiBtX2RhdGEtPmlzTnVsbCgpOyB9CiAgICAgYm9vbCBpc0xvYWRpbmco
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzTG9hZGluZzsgfQogICAgIGJvb2wgZXJyb3JPY2N1
cnJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZXJyb3JPY2N1cnJlZDsgfQogCkBAIC03Niw3
ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgRm9udExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2Fk
UmVxdWVzdENsaWVudCB7IG51bGxwdHIgfTsKIAogICAgIFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dD4gbV9jb250ZXh0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAg
ICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCBkNDU0ZTlkMTc0ODQwZjY1YzM3YTAx
MTUyODkxNTJhMTAyNjQyNDNhLi4yNjNkNGUxNzY1MmIyMWRiY2QwMmQ0NWE3MDk3ZGE0MjFlZWM2
NGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBzdGF0
aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJl
ZjxGZXRjaFJlc3BvbnNlPiwgcwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0
byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBjbGllbnQt
PmRpZFJlY2VpdmVEYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNodW5rLT5kYXRhKCksIGNodW5r
LT5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKSk7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2goKTsK
ICAgICAgICAgfSk7CkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1Jlc3Bv
bnNlKFJlZjxDbGllbnQ+JiYgY2xpZW50LCBFeHBlY3RlZDxSZWY8RmV0Y2hSZXNwb25zZT4sIHMK
ICAgICBhdXRvIGJvZHkgPSByZXNwb25zZS0+Y29uc3VtZUJvZHkoKTsKICAgICBXVEY6OnN3aXRj
aE9uKGJvZHksIFsmXSAoUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgY2xpZW50
LT5kaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goV1RGTW92ZShmb3JtRGF0YSkpOwotICAgIH0s
IFsmXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAoUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZl
RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBjbGllbnQtPmRpZEZpbmlzaCgpOwogICAg
IH0sIFsmXSAoc3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCmluZGV4IDdk
ODVlZmRmMDM5NmRlZGU5ZDJlMDBiM2EzNzE4NDUyNDg2NDUyMmYuLjdiYzYwZmUyYzQ1ZjI1MDJh
YjgwM2RhYmE1YWRmZDFlNDJlMTM4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCkBAIC00Miw3
ICs0Miw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
CiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiBuYW1lc3BhY2UgU2VydmljZVdvcmtlckZldGNoIHsKIGNsYXNzIENsaWVudCA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDbGllbnQsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6
Ok1haW4+IHsKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGFBbmRG
aW5pc2goUmVmPEZvcm1EYXRhPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoKCkgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nj
cmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5YTg3NWY4YWZjMGQ2MjM1NWFjNjIyOWE2NGMxY2E0
M2QxODU2NTIuLjIyMTZiMDkzNzRmYzAyNTBlMjgzOWI1NjI2OTM3ZmZiMjU1OGQxNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9y
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Ny
aXB0U3RvcmFnZS5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRT
dG9yYWdlOjpzdG9yZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3Ry
YQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiU1dTY3JpcHRTdG9y
YWdlOjpzdG9yZTogRmFpbHVyZSB0byBzdG9yZSAlcywgRmlsZVN5c3RlbTo6bWFwVG9GaWxlKCkg
ZmFpbGVkIiwgc2NyaXB0UGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICB9Ci0gICAgcmV0dXJuIFNjcmlwdEJ1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUobWFwcGVkRmlsZSkpIH07CisgICAgcmV0dXJuIFNjcmlwdEJ1ZmZlciB7IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1hcHBlZEZpbGUpKSB9OwogfQogCiBTY3Jp
cHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYgc2NyaXB0VVJMKQpAQCAt
MTI3LDcgKzEyNyw4IEBAIFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzCiAgICAgfQogCiAgICAgLy8g
RklYTUU6IERvIHdlIG5lZWQgdG8gZGlzYWJsZSBmaWxlIG1hcHBpbmcgaW4gbW9yZSBjYXNlcyB0
byBhdm9pZCBoYXZpbmcgdG9vIG1hbnkgZmlsZSBkZXNjcmlwdG9ycyBvcGVuPwotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZp
bGVTaXplKSA/IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IFNoYXJlZEJ1
ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRl
LCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVz
ZUZpbGVNYXBwaW5nOjpObyk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAogdm9pZCBTV1Njcmlw
dFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lz
dHJhdGlvbktleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGFiOTk2
MDNlYTUzZTI0NmI2MzMyMWZiZDQxNDFjYzVlMjljZTk2YjQuLmZjY2MyYTllZDIwZDc0N2MwOWM2
MTZiNDk4ZTUzMGVmNzhhOGU1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cApAQCAtMTE4LDYgKzExOCw3IEBAIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9yZXNwb25zZUNhY2hlSXNWYWxp
ZChmYWxzZSkKICAgICAsIG1fcmVhZHlTdGF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVU5TRU5U
KSkKICAgICAsIG1fcmVzcG9uc2VUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZXNwb25zZVR5
cGU6OkVtcHR5U3RyaW5nKSkKKyAgICAsIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKG1ha2VVbmlx
dWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKICAgICAsIG1fcHJvZ3Jlc3NFdmVudFRocm90
dGxlKCp0aGlzKQogICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZYTUxIdHRwUmVxdWVzdDo6
dGltZW91dFRpbWVyRmlyZWQpCiB7CkBAIC0yMDcsOCArMjA4LDggQEAgUmVmPEJsb2I+IFhNTEh0
dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IoKQogCiAgICAgLy8gRklYTUU6IFdlIGp1c3Qg
cmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBzZW5kaW5nIGl0
IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0g
ICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRhID0gc3RkOjpleGNo
YW5nZShtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJhY3REYXRhKCk7Cisg
ICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkpCisgICAgICAgIGRhdGEg
PSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT5leHRyYWN0RGF0YSgpOwogICAgIFN0
cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUo
cmVzcG9uc2VNSU1FVHlwZShGaW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9uc2VNSU1FVHlw
ZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgogICAgIHJldHVy
biBCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGRhdGEpLCBu
b3JtYWxpemVkQ29udGVudFR5cGUpOwogfQpAQCAtMjE4LDggKzIxOSw3IEBAIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIoKQogICAg
IEFTU0VSVChyZXNwb25zZVR5cGUoKSA9PSBSZXNwb25zZVR5cGU6OkFycmF5YnVmZmVyKTsKICAg
ICBBU1NFUlQoZG9uZVdpdGhvdXRFcnJvcnMoKSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1fYmlu
YXJ5UmVzcG9uc2VCdWlsZGVyID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwotICAgIG1fYmlu
YXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlc3VsdCA9ICFtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkgPyBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFr
ZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRy
LCAwKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBY
TUxIdHRwUmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVzcG9uc2VFbmNv
ZGluZyA9IFN0cmluZygpOwogICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7CiAgICAgbV9y
ZXNwb25zZURvY3VtZW50ID0gbnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9
IG51bGxwdHI7CisgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnJlc2V0KCk7CiAgICAgbV9y
ZXNwb25zZUNhY2hlSXNWYWxpZCA9IGZhbHNlOwogfQogCkBAIC0xMDY1LDggKzEwNjUsNiBAQCB2
b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgbGVuKQogICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNv
ZGUoZGF0YSwgbGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5hcnkgZGF0
YS4KLSAgICAgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgICAgIG1f
YmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAg
bV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmFwcGVuZChkYXRhLCBsZW4pOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA3Mjg5NGFmNmNjNDdkYmFlNWU3NWMzYTgw
NzkwOWVmMjg0ZjZkNTk3Li4xNjJjYTk1YWViNzU0NDg5YmQ2Y2Q4Y2RjNTA4NjJjODQ3NzdiYWJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUlu
ZGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVm
Lmg+CiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlhN
TEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgiCiAjaW5jbHVkZSA8dmFyaWFudD4K
QEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgQmxvYjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRE9N
Rm9ybURhdGE7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xh
c3MgVGhyZWFkYWJsZUxvYWRlcjsKIGNsYXNzIFVSTFNlYXJjaFBhcmFtczsKQEAgLTIzNyw3ICsy
MzgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1l
bnQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsK
KyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxk
ZXI7CiAKICAgICBTdHJpbmdCdWlsZGVyIG1fcmVzcG9uc2VCdWlsZGVyOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIvU291cmNlL1dl
YkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRleCBkZjhhYmU0MjZlMDY3MTcx
YWZmZjkwZTAzMzM4NTA1OWYzMzEwMzY0Li5hMzBmNTE0MWE4ZTE0ZjI3OGY1YjkxMzE3MzNkMjYx
NDYyODEyY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvckxp
YnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5j
cHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMoY29u
c3QgeG1sQ2hhciogdXJpLAogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgICAgICBS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAg
ICAgICAgIGJvb2wgcmVxdWVzdEFsbG93ZWQgPSBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+
ZnJhbWUoKSAmJiBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVybCk7CiAgICAgICAgIGlmIChyZXF1ZXN0QWxsb3dlZCkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwCmluZGV4IGE4YzNlMThlNDdhZWNhZDBhMDIyYTA4NGM0OWEyMWY2YzcxNGMz
OTIuLmRiMjZiYjM5ZGQ1YWY5OWYzMWU2NjJjMzRjZWQzZGJmOTY3N2Y1YWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHAKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgdm9pZCogb3BlbkZ1bmMoY29uc3QgY2hhciog
dXJpKQogICAgICAgICByZXR1cm4gJmdsb2JhbERlc2NyaXB0b3I7CiAKICAgICBSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICB7CiAgICAgICAgIFJlc291
cmNlRXJyb3IgZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKaW5kZXggNTczMDY3ZTNkZDA1MGZlYjdj
NTc5ZDAwMTAyZWU5ZjYwNDViNTMxMy4uMzFjMmQ3NmYyZWUxYjlkMjQ5YjAwMWI3ZWZmODkyZWMy
YTc0NTZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcApAQCAtNjEsNyArNjEsNyBAQCBSZW1vdGVDRE1J
bnN0YW5jZVByb3h5Ojp+UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSgpCiAgICAgbV9pbnN0YW5jZS0+
Y2xlYXJDbGllbnQoKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojp1bnJlcXVl
c3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6dW5y
ZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIHR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIGlmICghbV9jZG0p
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCmluZGV4IDhlNzNkM2Q5YTY0Yjk4YmZjMDA5
MzZjZDQ3YzRjMjVhOTI3OWYyYzguLjAyYzVjZDM3YWU1NDgwMmY2ZDBjOGRjY2NiMGJhODBjZjMz
ODhjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlUHJveHkuaApAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIFJl
bW90ZUNETUluc3RhbmNlUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwgUmVmPFdlYkNv
cmU6OkNETUluc3RhbmNlPiYmLCBVbmlxdWVSZWY8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0
aW9uPiYmLCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIpOwogCiAgICAgLy8gQ0RNSW5zdGFu
Y2VDbGllbnQKLSAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQo
Y29uc3QgU3RyaW5nJiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAg
dm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYs
IFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogICAgIC8v
IElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkuY3BwCmluZGV4IGU1NzY2YzIzMzRjZmQzODkzMTBjZDRiMjE3MjNjYWJhMzc0MmZjN2MuLmRl
ODI3M2I5Y2Y1MDBhNGQ2NmFhMTQ0ZWRlMDIwMWVlZjFlZDg2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5LmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5n
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNl
KHR5cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwg
W2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBt
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0
aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUg
eworICAgIG1fc2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0
RGF0YS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29t
cGxldGlvbildIChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5j
ZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICBjb21w
bGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlv
biwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKICAgICB9KTsK
IH0KQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
OjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlUwogCiB2b2lkIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFj
ayYmIGNvbXBsZXRpb24pCiB7Ci0gICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNz
aW9uSWQsIHR5cGUsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3Rh
bmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIHN0ZDo6b3B0aW9uYWw8
UmVmPFNoYXJlZEJ1ZmZlcj4+JiYgZXhwaXJlZFNlc3Npb25zRGF0YSwgQ0RNSW5zdGFuY2VTZXNz
aW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb24tPnJl
bW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNv
bXBsZXRpb24pXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0
dXNlcywgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYgZXhwaXJl
ZFNlc3Npb25zRGF0YSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVk
KSBtdXRhYmxlIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+
IGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5jZTsKICAgICAgICAgaWYgKGV4cGlyZWRTZXNzaW9u
c0RhdGEpCiAgICAgICAgICAgICBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2UgPSBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkoV1RGTW92ZSgqZXhwaXJlZFNlc3Npb25zRGF0YSkpOwpAQCAtMTQ5LDcg
KzE0OSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0
YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1CiAgICAgZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbjo6VXBkYXRlS2V5U3RhdHVzZXMoV1RGTW92ZShrZXlTdGF0dXNlcykpLCBtX2lkZW50aWZp
ZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZW5kTWVzc2Fn
ZShDRE1NZXNzYWdlVHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit2b2lk
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlw
ZSB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewogICAgIGlm
ICghbV9jZG0pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKaW5k
ZXggOGE2MWY5ZDVmYWJjODQ4NmE3YTBlODYwZjRjNjMxMmMwYjQ0NTUxNC4uZmU3MzA5NzEzMWUw
YmIyMGE1MDAxZTE1MDE2MDJkNjUxODZiMzA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENETUluc3RhbmNlU2Vzc2lv
bkNsaWVudAogICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpIGZp
bmFsOwotICAgIHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBzZW5kTWVz
c2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CiAgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNv
bnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGZp
bmFsIHsgcmV0dXJuIG1fZGlzcGxheUlEOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCmluZGV4IDlhYjM1NzVmNGMzYjU1OTU1NWI5
Yjg3YjIzMzcxYjFiMWE2NmRjMTcuLmY3Y2I2YTYzZWI5MzNhYmQ0ZDQ1M2EyMmFiMjk0ZjEzMDMy
MzJiMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TVByb3h5LmNwcApAQCAtNjMsMTIgKzYzLDEyIEBAIFJlbW90ZUNETVByb3h5OjpSZW1vdGVDRE1Q
cm94eShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBzdGQ6OnVuCiAK
IFJlbW90ZUNETVByb3h5Ojp+UmVtb3RlQ0RNUHJveHkoKSA9IGRlZmF1bHQ7CiAKLWJvb2wgUmVt
b3RlQ0RNUHJveHk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhKQorYm9vbCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEodHlwZSwg
ZGF0YSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFJlbW90ZUNETVByb3h5OjpzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCitSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+
c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oCmluZGV4IDY5MjRlNzRlM2Y1MDExYmUyMTViZTRi
ZDk2YjIzNDgyNjQ3MGY0MjMuLjNiNjZjNzc1Nzg3MDY5ZTk3NmVlMDY0Zjk2ZmYwN2MwZjcxMmE5
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Q
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94
eS5oCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogZW51bSBjbGFzcyBDRE1SZXF1aXJlbWVudCA6IHVpbnQ4X3Q7CiBlbnVtIGNs
YXNzIENETVNlc3Npb25UeXBlIDogdWludDhfdDsKIHN0cnVjdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uOwpAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAKICAgICBSZW1vdGVDRE1GYWN0b3J5
UHJveHkqIGZhY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2ZhY3RvcnkuZ2V0KCk7IH0KIAotICAg
IGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIHJlc3BvbnNlKTsKKyAgICBi
b29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiByZXNwb25zZSk7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXpl
U2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGUHJveHkuY3BwCmluZGV4IDczMmExOTQ5MmFkNzRmZDU3OGVkYjYzOTFkNTk4ZjllMDAw
MWQ4ODkuLjVjMmVmMmViZDY4NDY0ZGUxMDNkNDRjMmFkOWNjMWZjNWZlMGNhMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5LmNwcApAQCAtNDcsNyArNDcsNyBAQCBSZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eTo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcwogCiB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVEZWNvZGVyKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEltYWdlRGVjb2RlcklkZW50aWZpZXI+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8gaW1hZ2VEZWNvZGVyID0gSW1h
Z2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgp
LCBkYXRhLnNpemUoKSksIG1pbWVUeXBlLCBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb246Oklnbm9yZWQpOworICAgIGF1dG8gaW1hZ2VEZWNvZGVy
ID0gSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpLCBtaW1lVHlwZSwgQWxwaGFPcHRpb246OlBy
ZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVkKTsKIAogICAg
IHN0ZDo6b3B0aW9uYWw8SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4gaW1hZ2VEZWNvZGVySWRlbnRp
ZmllcjsKICAgICBpZiAoIWltYWdlRGVjb2RlcikKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFJl
bW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXREYXRhKEltYWdlRGVjb2RlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgY29ucwogICAgIH0KIAogICAgIGF1dG8gaW1hZ2VEZWNvZGVyID0gbV9pbWFn
ZURlY29kZXJzLmdldChpZGVudGlmaWVyKTsKLSAgICBpbWFnZURlY29kZXItPnNldERhdGEoU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSwgYWxsRGF0YVJlY2Vp
dmVkKTsKKyAgICBpbWFnZURlY29kZXItPnNldERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSksIGFsbERhdGFSZWNlaXZlZCk7CiAKICAg
ICBhdXRvIGZyYW1lQ291bnQgPSBpbWFnZURlY29kZXItPmZyYW1lQ291bnQoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHku
aAppbmRleCBlMmNkMDVkN2NjNzRmMjBlYzY5ZmFkZmUzZWUwODU3NTkyYWQ4NzliLi5kZThmNmRm
NTVhNmUxZmE4YmU5NjZmOTQxZTA3ZmUyZjVjNTAyMWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaApAQCAtMzYsNyAr
MzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAppbmRleCA5M2Iy
ZmY3NDFiMWY4MzY5YjIwNTg0ZTQ5N2U0YTAyMWI5Y2NmNTc4Li4yMTQxMzc5ZDZhNTllYWYyMjg1
MTRiMTg3YjU2OWQwNDcwM2MxMTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcApAQCAt
NjksNyArNjksNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+
IGNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZShUIGFycgogewogICAgIGlmICghYXJyYXkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIHsgU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKGNvbnN0IGNoYXIqKWFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkp
IH07CisgICAgcmV0dXJuIHsgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChjb25zdCBj
aGFyKilhcnJheS0+ZGF0YSgpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKSB9OwogfQogCiB2b2lkIFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIGluaXREYXRhLCBHZW5lcmF0ZUtl
eUNhbGxiYWNrJiYgY29tcGxldGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaAppbmRleCBmMTRj
NjI3ZjY1OTNlMWE4NzhkMGY0NTk5MmIzYzQxYjIyMmM3ZjAwLi4xNTQ2YmRmZGZkY2YwOTEwODc4
OTQ0ZjM0MDc5NjdhN2FiMzhiZjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oCkBAIC0zNyw3
ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMZWdhY3lDRE07CiBjbGFzcyBM
ZWdhY3lDRE1TZXNzaW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIElQQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKaW5kZXggYzQ1ZTUy
NTVkNjdiNTJjN2FlMTA0NDk5ODhjZTAxOTBjN2ZmYjUzOC4uNjE3ZjQ3Njg5NTY0MmRlYzIzMjU0
YjU0MGVlODE5MTFhYzRhMmRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lk
IFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFTZW50KHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0
X3QgdG90YWxCeXRlc1RvQmVTZQogICAgICAgICBtX2NsaWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5
dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlc291
cmNlOjpkYXRhUmVjZWl2ZWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBSZW1vdGVN
ZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
ZGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2
ZWQoKnRoaXMsIFdURk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKaW5kZXggZDEzZDI1ZjY1ZjAyMjRhNmM3
NjdmNjlhNGQ0MTljZDA1M2JiNzk1ZC4uNWI3YTdlMmE3NDI0NDMyZDg2Y2IyOGExYmU3MTcxOGEx
NjczNzVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZS5oCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTcs
NyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OlNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKTsKICAgICB2b2lkIHJlZGlyZWN0UmVj
ZWl2ZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmKT4mJik7CiAgICAgdm9pZCBkYXRhU2VudCh1aW50NjRfdCwgdWludDY0X3QpOwotICAgIHZv
aWQgZGF0YVJlY2VpdmVkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAg
ICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJik7CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJp
Y3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDdlNTcyYjNhNzRhMjAyN2U3NGNhYTc2NzJlNTJkYTBh
ZjgzNDIwNzIuLmViZGU3NTMwZWM4NmZmNmM0MWJlY2Q0ZTVlYzQyOGEzYzhhZjgwZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw4IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6
dmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vCiB2
b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KElQQzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIG1fd3JpdGVyLT5mZXRjaERhdGEoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKGF1dG8mJiBkYXRhLCBhdXRvIHRpbWVDb2RlKSBtdXRhYmxlIHsKLSAg
ICAgICAgYXV0byogcG9pbnRlciA9IGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRyOworICAg
ICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CisgICAgICAgIGF1dG8qIHBvaW50
ZXIgPSBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRhdGEgPyBkYXRhLT5zaXpl
KCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKaW5kZXggNTJj
YzVkYTEyMWEyZmI1OWQ4Y2YwNTkzYjY4NTA5ZmQ2NTVjMGNkYy4uNzFmZDAyMjI5YmJiMWM1NzMy
NmZkZmNmZTI2YzExZjc2MWFiY2Y3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKQEAgLTY4LDcgKzY4LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsg
fQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmFp
bExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggM2YzOWViMzJmMWFhODA3Njc4NWRhNzllZTExZGFkOGYw
YzMyNmI3OS4uZDg5MjBlOTg3NjRmZDliNjRiOWNkZGM2MGExZDg0ZDYxOWIyZDQwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12
b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpk
aWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKIHsK
ICAgICBDT1JTX0NIRUNLRVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuaAppbmRleCBiYmIxNDYyYTMxNjFlMmZjZTllYTU3ODQ0YjE5YjkzZTYxOWM4
MWIwLi5lMTFiZjU2MzE5MDdhZTQ3MzM2ZWY4NWE1ZDIyZTg4MzU3NDY1MWIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYp
IGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtM
b2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxC
eXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAg
dm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suaAppbmRleCBkNjAxOGY2MTM4M2FlM2E1MWU5ZDQ3MjJjZjZhNjBl
MmQ4Yjg3YTdkLi5lMDQ5ZTViMTJkZGU1ZmU1MWI0Njk1NTI4OWE3YTdmNjk5ODJhZmNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKQEAgLTQz
LDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIm
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNv
bXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQs
IHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCB3YXNCbG9ja2VkKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggZjcxMjBhMWI0NTFiNDEwZDU5Mzk5ZTVj
YmI4ODRmYWUzOTVkN2ExZi4uODllOTU3ZGM4ODZiMzc0NjIwNWJmYjhkZDhkOTc4YmQ4ZWUxNDZk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuY3BwCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9i
Ojpjb25zdW1lRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgYnl0ZXNSZWFkKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVCht
X2NsaWVudCk7Ci0gICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSwgYnl0ZXNSZWFkKSk7CisgICAgICAgICAgICBtX2NsaWVudC0+ZGlk
UmVjZWl2ZURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGJ5dGVzUmVh
ZCkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWQuY3BwCmluZGV4IGJhYzAyMmFiNDU0MzBmNjUxYjE4OWFjMDEyMDdhMDYwNjA4
YzE2NzEuLjc5NzVkNDFiYWQ4OTE1ZmVlZGJkYWIxNTU0ZTgxZTFkYjIwMzBmODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC0yNTYsNyArMjU2
LDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6bm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXQKICAgICBtX2NsaWVudC5nZXQoKS5kaWRSZWNl
aXZlUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKIH0KIAotdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCit2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IGJlIHRoZSBlbmNvZGVkIGRhdGEgbGVuZ3RoLCBub3QgdGhlIGRlY29kZWQgZGF0YSBsZW5ndGgu
CiAgICAgYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkLmgKaW5kZXggYzM3NzNjOTg3ODU1M2NlNTM0ZDA1NGFiZmZkZGVi
YjI5ZWUwODRkMi4uZWU1ZWIwMDZhYTM3OWI3OGZjYmMwYmQxNzRlMzJiZDYzOWY5NWU2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaApAQCAtODAsNyArODAs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVu
Z2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRM
UywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5
VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAg
dm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxC
eXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaApp
bmRleCAwYTVmNjZiZDk2N2VjOWZkZjY2NGU1MmU1YWYzOTRlNDhlY2UxZjdiLi4zNDhjZmZiOWU4
ZTI1ZWU4M2JiYjM5YTAyY2QzY2Y2ZDI4NTRkMzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCkBAIC0zMiw3ICszMiw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIE5l
dHdvcmtMb2FkTWV0cmljczsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiBlbnVtIGNsYXNzIFBvbGljeUFjdGlvbiA6IHVpbnQ4X3Q7CiB9CiAKQEAg
LTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNp
Z25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1Rv
QmVTZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
ZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9u
c2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYmY4ZjM1N2Q3YTgzZWU1MDI4OTFkYjFlNWFiZDg0
MTg0YzYzMzZjOC4uNzMxODllZmU0MzFiYTczMzNiYWIyYTdiNzQwMzJkMTFjYjVmYzYxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcApAQCAtODcsMTQgKzg3LDE0IEBAIHN0cnVjdCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OlN5bmNocm9ub3VzTG9hZERhdGEgewogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiB9Owog
Ci1zdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZERhdGEmIGRhdGEsIGNvbnN0IFNoYXJlZEJ1ZmZlciog
YnVmZmVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCitzdGF0aWMgdm9pZCBz
ZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNo
cm9ub3VzTG9hZERhdGEmIGRhdGEsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZl
ciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIEFTU0VSVChkYXRh
LmRlbGF5ZWRSZXBseSk7CiAgICAgQVNTRVJUKCFkYXRhLnJlc3BvbnNlLmlzTnVsbCgpIHx8ICFk
YXRhLmVycm9yLmlzTnVsbCgpKTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiByZXNwb25zZUJ1ZmZl
cjsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICByZXNwb25zZUJ1
ZmZlci5hcHBlbmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgcmVz
cG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CiAKICAgICBkYXRhLnJlc3BvbnNlLnNldERlcHJlY2F0ZWROZXR3b3JrTG9h
ZE1ldHJpY3MoQm94PE5ldHdvcmtMb2FkTWV0cmljcz46OmNyZWF0ZShtZXRyaWNzKSk7CiAKQEAg
LTEwNSw5ICsxMDUsMTEgQEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVl
c3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWQKIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rp
b24sIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNo
cm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5JiYgc3luY2hyb25vdXNSZXBseSkKICAgICA6IG1fcGFy
YW1ldGVycyB7IFdURk1vdmUocGFyYW1ldGVycykgfQogICAgICwgbV9jb25uZWN0aW9uIHsgY29u
bmVjdGlvbiB9CisgICAgLCBtX2J1ZmZlcmVkRGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVm
ZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX2ZpbGVSZWZlcmVuY2VzKGNvbm5lY3Rpb24ucmVzb2x2
ZUJsb2JSZWZlcmVuY2VzKG1fcGFyYW1ldGVycykpCiAgICAgLCBtX2lzQWxsb3dlZFRvQXNrVXNl
ckZvckNyZWRlbnRpYWxzIHsgbV9wYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0g
Q2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMgfQogICAg
ICwgbV9idWZmZXJpbmdUaW1lciB7ICp0aGlzLCAmTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZm
ZXJpbmdUaW1lckZpcmVkIH0KKyAgICAsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgeyBtYWtlVW5p
cXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9zaG91bGRDYXB0dXJlRXh0
cmFOZXR3b3JrTG9hZE1ldHJpY3MobV9jb25uZWN0aW9uLT5jYXB0dXJlRXh0cmFOZXR3b3JrTG9h
ZE1ldHJpY3NFbmFibGVkKCkpCiAgICAgLCBtX3Jlc291cmNlTG9hZElEIHsgTmV0d29ya1Jlc291
cmNlTG9hZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfQogewpAQCAtMzA2LDEwICszMDgsMTAgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICAgICAgY29uc3VtZVNhbmRib3hFeHRlbnNpb25z
KCk7CiAKICAgICAgICAgaWYgKGlzU3luY2hyb25vdXMoKSB8fCBtX3BhcmFtZXRlcnMubWF4aW11
bUJ1ZmZlcmluZ1RpbWUgPiAwX3MpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHkoKTsK
IAogICAgICAgICBpZiAoY2FuVXNlQ2FjaGUocmVxdWVzdCkpCi0gICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUtPmVtcHR5KCk7CiAgICAgfQogCiAgICAgTmV0d29ya0xvYWRQ
YXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBtX3BhcmFtZXRlcnM7CkBAIC03MzAsMjAgKzczMiwyMCBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
UmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbgogICAgICAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsKICAg
ICB9OwogCi0gICAgaWYgKCFtX2J1ZmZlcmVkRGF0YQorICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+
aXNOdWxsKCkKICAgICAgICAgJiYgbV9yZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSA+
IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oMSAqIE1CKQogICAgICAgICAmJiBpc0ZldGNoT3JYSFIo
cmVzb3VyY2VMb2FkSW5mbykKICAgICAgICAgJiYgaXNNZWRpYU1JTUVUeXBlKG1fcmVzcG9uc2Uu
bWltZVR5cGUoKSkpIHsKLSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHkoKTsKICAgICAgICAgbV9wYXJh
bWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0gV2ViTG9hZGVyU3RyYXRlZ3k6Om1lZGlhTWF4
aW11bUJ1ZmZlcmluZ1RpbWU7CiAgICAgfQogCiAgICAgLy8gRm9yIG11bHRpcGFydC94LW1peGVk
LXJlcGxhY2UgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMgZ2V0cyBjYWxsZWQgbXVsdGlwbGUgdGlt
ZXMgYW5kIGJ1ZmZlcmluZyB3b3VsZCByZXF1aXJlIHNwZWNpYWwgaGFuZGxpbmcuCiAgICAgaWYg
KCFpc1N5bmNocm9ub3VzKCkgJiYgbV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBt
X2J1ZmZlcmVkRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLT5yZXNldCgp
OwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUt
PnJlc2V0KCk7CiAKICAgICBpZiAobV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikgewogICAgICAg
ICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkg
PT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCkBAIC04NTgsNyArODYwLDcgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmREaWRSZWNlaXZlUmVzcG9uc2VQb3RlbnRpYWxseUluTmV3
QnJvd3NpbmdDb250ZXgKICAgICB9KTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fbnVtQnl0ZXNSZWNlaXZlZCkKICAg
ICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlQnVmZmVyOiBTdGFydGVkIHJlY2Vp
dmluZyBkYXRhIChyZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoPSVkKSIsIHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpOwpAQCAtODY2LDIwICs4NjgsMjAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBy
ZXAKIAogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbik7CiAKLSAgICBpZiAo
bV9idWZmZXJlZERhdGFGb3JDYWNoZSkgeworICAgIGlmICghbV9idWZmZXJlZERhdGFGb3JDYWNo
ZS0+aXNOdWxsKCkpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ug
b2Ygc3RyZWFtaW5nIGRhdGEgYW5kIGxpbWl0IHNpemUgb2YgZW50cmllcyBpbiB0aGUgY2FjaGUu
CiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gbV9jYWNoZS0+
Y2FwYWNpdHkoKSAvIDg7CiAgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXpl
KCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQogICAgICAgICAg
ICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAg
ICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+cmVzZXQoKTsKICAgICB9CiAgICAgaWYg
KGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKQogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6
IEF0IGxlYXN0IG9uIE9TIFggWW9zZW1pdGUgd2UgYWx3YXlzIGdldCAtMSBmcm9tIHRoZSByZXNv
dXJjZSBoYW5kbGUuCiAgICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVy
LT5zaXplKCk7CiAKLSAgICBpZiAobV9idWZmZXJlZERhdGEpIHsKKyAgICBpZiAoIW1fYnVmZmVy
ZWREYXRhLT5pc051bGwoKSkgewogICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+YXBwZW5kKGJ1ZmZl
ci5nZXQoKSk7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggKz0gZW5j
b2RlZERhdGFMZW5ndGg7CiAgICAgICAgIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwpA
QCAtOTA5LDExICs5MTEsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG8KICNlbmRpZgogCiAg
ICAgaWYgKGlzU3luY2hyb25vdXMoKSkKLSAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1Jl
cXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEuZ2V0KCksIG5ldHdv
cmtMb2FkTWV0cmljcyk7CisgICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCpt
X3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLT5nZXQoKS5nZXQoKSwgbmV0d29y
a0xvYWRNZXRyaWNzKTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhICYm
ICFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7CisgICAgICAgIGlmICghbV9idWZmZXJlZERh
dGEtPmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFBhc3MgYSByZWFsIHZhbHVl
IG9yIHJlbW92ZSB0aGUgZW5jb2RlZCBkYXRhIHNpemUgZmVhdHVyZS4KLSAgICAgICAgICAgIHNl
bmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLCAtMSk7CisgICAgICAgICAgICBzZW5kQnVmZmVyKCpt
X2J1ZmZlcmVkRGF0YS0+Z2V0KCksIC0xKTsKICAgICAgICAgfQogICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2Fk
TWV0cmljcykpOwogICAgIH0KQEAgLTEyNTQsMTkgKzEyNTYsMTkgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OnN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpCiAKIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKCkKIHsKLSAgICBBU1NFUlQobV9i
dWZmZXJlZERhdGEpOworICAgIEFTU0VSVCghbV9idWZmZXJlZERhdGEtPmlzTnVsbCgpKTsKICAg
ICBBU1NFUlQobV9uZXR3b3JrTG9hZCk7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VM
b2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0sIG1fYnVmZmVyZWREYXRh
RW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRl
cjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEtPmdldCgpIH0sIG1fYnVmZmVyZWRE
YXRhRW5jb2RlZERhdGFMZW5ndGgpKTsKIAotICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKKyAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHkoKTsKICAgICBtX2J1ZmZl
cmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnNlbmRCdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0
YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAg
IEFTU0VSVCghaXNTeW5jaHJvbm91cygpKTsKIApAQCAtMTI3OSw3ICsxMjgxLDcgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICAgICAgTE9B
REVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0b3JpbmcgY2FjaGUg
ZW50cnkgYmVjYXVzZSByZXF1ZXN0IGlzIG5vdCBlbGlnaWJsZSIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGlmICghbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgeworICAgIGlmIChtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLT5pc051bGwoKSkgewogICAgICAgICBMT0FERVJfUkVMRUFTRV9M
T0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBOb3Qgc3RvcmluZyBjYWNoZSBlbnRyeSBiZWNhdXNl
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgaXMgbnVsbCIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtMTI4NywxMiArMTI4OSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5
U3RvcmVBc0NhY2hlRW50cnkoKQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkgewog
ICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3Mo
KS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkpIHsKICAgICAgICAgICAgIExPQURFUl9SRUxF
QVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gcHJlZmV0Y2gg
Y2FjaGUiKTsKLSAgICAgICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25l
dHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBX
VEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIHNlc3Npb24tPnBy
ZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgp
LCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT50YWtlKCkpOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgTE9BREVSX1JFTEVBU0VfTE9H
KCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBIVFRQIGRpc2sgY2FjaGUi
KTsKLSAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBt
X3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpLCBbbG9hZGVyID0gUmVm
IHsgKnRoaXMgfV0oYXV0byYgbWFwcGVkQm9keSkgbXV0YWJsZSB7CisgICAgbV9jYWNoZS0+c3Rv
cmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS0+dGFrZSgpLCBbbG9hZGVyID0gUmVmIHsgKnRoaXMgfV0oYXV0byYgbWFw
cGVkQm9keSkgbXV0YWJsZSB7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICAg
ICAgaWYgKG1hcHBlZEJvZHkuc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUuaXNOdWxsKCkpCiAgICAg
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBkMjM0ZGFiNWJlZWE1YjY0NzMwNTUwYzc3Mzcw
YTlmMTU5NTk3Zjk3Li45ODQ0MjRhMzA2ODFhMzYwZmM2MGM5ZTdhOWRkNGU2YmI0MjZkZTc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVz
cG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2
LDYgKzQ3LDggQEAgY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwogY2xhc3MgRm9ybURhdGE7
CiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTQsNyArMTE3LDcgQEAgcHVibGljOgogICAg
IGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOyB9CiAgICAgdm9pZCB3aWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAg
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlk
QmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIGZpbmFsOwpAQCAtMTkyLDcgKzE5NSw3IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwogICAg
IHZvaWQgYnVmZmVyaW5nVGltZXJGaXJlZCgpOwotICAgIHZvaWQgc2VuZEJ1ZmZlcihXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgc2Vu
ZEJ1ZmZlcihXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWRE
YXRhTGVuZ3RoKTsKIAogICAgIHZvaWQgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAgICAg
dm9pZCBpbnZhbGlkYXRlU2FuZGJveEV4dGVuc2lvbnMoKTsKQEAgLTIyNSw3ICsyMjgsNyBAQCBw
cml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAogICAg
IHNpemVfdCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoIHsgMCB9OwotICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhOworICAgIFVuaXF1ZVJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcmVkRGF0YTsKICAgICB1bnNpZ25l
ZCBtX3JlZGlyZWN0Q291bnQgeyAwIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3luY2hyb25v
dXNMb2FkRGF0YT4gbV9zeW5jaHJvbm91c0xvYWREYXRhOwpAQCAtMjQwLDcgKzI0Myw3IEBAIHBy
aXZhdGU6CiAKICAgICBXZWJDb3JlOjpUaW1lciBtX2J1ZmZlcmluZ1RpbWVyOwogICAgIFJlZlB0
cjxOZXR3b3JrQ2FjaGU6OkNhY2hlPiBtX2NhY2hlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb247
CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZv
ck1heEFnZUNhcFZhbGlkYXRpb247CiAgICAgYm9vbCBtX2lzV2FpdGluZ0NvbnRpbnVlV2lsbFNl
bmRSZXF1ZXN0Rm9yQ2FjaGVkUmVkaXJlY3QgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1BpbmdMb2FkLmNwcAppbmRleCAxMTQ4NTNlNDViNzI1MzM2NGM3NDdhNzFjYjJi
NWFiOGNjMzhlZmQ1Li4xYWYxZTA4ZTNjNDQxZTI0ZjMwMDY1ZTlmMjA3NzZlNmY5ZmMzM2RiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcApAQCAtMTcyLDcgKzE3
Miw3IEBAIHZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNl
JiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUCiAgICAgZGlkRmluaXNoKHsgfSwgcmVzcG9u
c2UpOwogfQogCi12b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVy
PiYmKQordm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpCiB7CiAgICAgUElOR19SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGEiKTsKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xv
YWQuaAppbmRleCAxOWVjOGNlYjkyZTNjOGEwNTZmNDkyNzM2NjBjZmZmOTI2NDM0MWQxLi5hYjI5
YTBiMWFjODQ2NmIwZWQ2MWVmNThlZjRjMjIwYWJhYjZlYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYp
IGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBs
ZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2
NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZp
bmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAppbmRleCA0NTU3ODJkNTRhMmVhOWJlZTE4
NjUwZTFhZmQxY2Y3YjJjZTk4YzQ5Li4xN2Q0NzkwN2EzZjZlZTUyYmU2NTAxZDFkYWIwY2E2MDc1
MWQ2YjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5l
Y3RUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RU
YXNrLmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbQogICAgIGNv
bXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKIH0KIAotdm9pZCBQcmVjb25u
ZWN0VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZm
ZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCmluZGV4IDFjMWZmMTY0NzExMWM2ZmE4
NDk0YWY1Y2YwYzdiYmVhYTFiMjY1MDMuLjg1ODA4ZTEyMWI2OGNhOGI3M2UyNTE4ZDE5M2FiMzk1
ODFlYWQxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29u
bmVjdFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RU
YXNrLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKHVu
c2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVz
VG9CZVNlbnQpIGZpbmFsOwogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJl
Y3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkg
ZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAppbmRleCAzM2E5ZDRiNmRm
Yjg4MTBkMmY0MjdlMGY4NzZiODgxZjA0MGVjMmU2Li4xMDc4MTMzY2Y2MzViNmVlYWVlZTlkMzgx
N2RjMWZhYzE1YWJmMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlci5jcHAKQEAgLTE0MiwxMCArMTQyLDEwIEBAIHZvaWQgU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJl
c3BvbnNlJiYgcmVzCiAgICAgICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewog
ICAgIGlmIChtX2JvZHlDYWxsYmFjaykKLSAgICAgICAgbV9ib2R5Q2FsbGJhY2soV1RGTW92ZShi
dWZmZXIpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9ib2R5Q2FsbGJh
Y2soYnVmZmVyLT5tYWtlQ29udGlndW91cygpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsK
IH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKaW5kZXgg
MGFmY2IwNzA3ZGFlZDY3ZjBhMjc3OTY3ZDVlYzQ3MmRjMGZlMGM5Ny4uOTQ2NDNiOTU4MTBhNjI0
NmQzYjBmMTdmNGQzNzY3YWVlZWI5ZDY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgog
CiAgICAgdXNpbmcgUmVzcG9uc2VDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47CiAgICAgdm9p
ZCB3YWl0Rm9yUmVzcG9uc2UoUmVzcG9uc2VDYWxsYmFjayYmKTsKLSAgICB1c2luZyBCb2R5Q2Fs
bGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47CisgICAgdXNpbmcgQm9keUNhbGxiYWNrID0g
RnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKICAgICB2b2lkIHdhaXRGb3JCb2R5KEJv
ZHlDYWxsYmFjayYmKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9y
KCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQpAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJl
Y3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkg
ZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCA4ZWUxMTJhOWRmODI4OTU0
YzE2MjNmZmYyMmMyYTIwZmQ4ZTJmZTdkLi43YTI2MjIxOWRlNzhiMjM1ZDEyNWE5MmI2ZTIzNmQz
MzI2MmY3YTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlci5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBSZXNvdXJjZUVycm9yIFNlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyOjpwcm9jZXNzUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwbwog
ICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9kZWNvZGVyKSB7CiAg
ICAgICAgIGlmICghbV9yZXNwb25zZUVuY29kaW5nLmlzRW1wdHkoKSkKQEAgLTE4Nyw3ICsxODcs
NyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLAogICAgIH0KIAogICAgIGlmIChhdXRvIHNpemUg
PSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVj
b2RlKGJ1ZmZlci0+ZGF0YSgpLCBzaXplKSk7CisgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2Rl
Y29kZXItPmRlY29kZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkpOwog
fQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCmluZGV4IDE4ZjU0NjkxZjM3YzJiYWJiYzhj
MWEzYmMwOTQzNzBlOWIyOWViNzEuLjQ0ZmMwNjg1ZmEwZmVkYzg3NDIxOTE2ZTkxM2E2NzRiMWMw
ZmRiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
ci5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1Vz
ZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9p
ZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsK
KyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5kZXggNmYyNmI0Y2MyZGVm
YTBkOTg4N2M2ZjQyNDVlOGY1NGZiZWM0YmEyYi4uZmRiZmIxNDM1OTc2Y2JmNjVmNjEyNTY4M2Fj
MWVkZDI0MDllMjc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTU4MSw3ICs1
ODEsNyBAQCBTdG9yYWdlOjpSZWNvcmQgQ2FjaGU6OmVuY29kZShjb25zdCBSZWNvcmRJbmZvcm1h
dGlvbiYgcmVjb3JkSW5mb3JtYXRpb24sIGNvbnN0CiAgICAgRGF0YSBib2R5OwogICAgIFdURjo6
c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgW10oY29uc3QgUmVmPFdlYkNvcmU6OkZvcm1E
YXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgLy8gRklYTUU6IFN0b3JlIGZvcm0gZGF0YSBib2R5
LgotICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7
CisgICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSB7CiAgICAgICAgIGJvZHkgPSB7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSB9OwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpAQCAtNjcz
LDcgKzY3Myw3IEBAIHN0ZDo6b3B0aW9uYWw8UmVjb3JkPiBDYWNoZTo6ZGVjb2RlKGNvbnN0IFN0
b3JhZ2U6OlJlY29yZCYgc3RvcmFnZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGF1dG8gcmVjb3JkID0gV1RGTW92ZShyZXN1bHQtPnJlY29yZCk7Ci0gICAgcmVjb3JkLnJl
c3BvbnNlQm9keSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5k
YXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOworICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEo
KSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CiAKICAgICByZXR1cm4gcmVjb3JkOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmlu
ZGV4IDA0Nzc2ODM2Zjk5OTA5MzkxMGIzOTlkNzU1Mzg1NWQ1ZDNmMWZmNGUuLmRkMzA1YWYyOTc2
NjFlNDc2YzQ5Njc3ZGY1NzIxZWZkMWVjOTMyZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBA
QCB2b2lkIENhY2hlOjpjb21wbGV0ZVJldHJpZXZlKFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIm
JiBoYW5kbGVyLCBzdGQ6OnVuaXF1ZV9wdAogICAgIGhhbmRsZXIoV1RGTW92ZShlbnRyeSksIGlu
Zm8pOwogfQogICAgIAotc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
cmVzcG9uc2VEYXRhKQorc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIHJlc3BvbnNlRGF0YSkKIHsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4o
bWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZURhdGEpLCBX
ZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuc3Rv
cmFnZVNlc3Npb24obV9zZXNzaW9uSUQpLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQpAQCAtNDY0
LDcgKzQ2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6Om1ha2VSZWRpcmVjdEVu
dHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYKICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0
LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCku
c3RvcmFnZVNlc3Npb24obV9zZXNzaW9uSUQpLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rp
b248dm9pZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCitzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIEZ1bmN0aW9u
PHZvaWQoTWFwcGVkQm9keSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChy
ZXNwb25zZURhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGUuaAppbmRleCAxOTlmMGNmYjczMjU0M2M1ZmVhZjRmZTIzMDFlNmExYzEy
Zjg4ZmU4Li5lZDA0ZWJjYTBiMzZmM2Y5YzRjMGU3YmFjNzEzMzZiOWU5NmMzNTg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKQEAg
LTQzLDcgKzQzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExvd1Bvd2VyTW9kZU5v
dGlmaWVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0x
NjYsNyArMTY2LDcgQEAgcHVibGljOgogICAgIH07CiAgICAgdXNpbmcgUmV0cmlldmVDb21wbGV0
aW9uSGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiwgY29uc3Qg
UmV0cmlldmVJbmZvJik+OwogICAgIHZvaWQgcmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+LCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmID0gbnVsbHB0cik7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYm
ID0gbnVsbHB0cik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9yZVJlZGlyZWN0KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwg
c3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXApOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4gdXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEVudHJ5
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgdmFsaWRhdGluZ1Jlc3BvbnNlKTsK
IApAQCAtMTg1LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJldHJpZXZlRGF0YShjb25z
dCBEYXRhS2V5JiwgRnVuY3Rpb248dm9pZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4pOwogICAg
IHZvaWQgc3RvcmVEYXRhKGNvbnN0IERhdGFLZXkmLCAgY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90KTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IG1ha2VFbnRyeShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RkOjp1bmlxdWVfcHRy
PEVudHJ5PiBtYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IG1ha2VSZWRpcmVjdEVu
dHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVx
dWVzdCk7CiAKICAgICB2b2lkIGR1bXBDb250ZW50c1RvRmlsZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApp
bmRleCBiYTM5ZDllMmMyNmEwMWE5MjZiMTFhYTc5OWUzNjYyZmM2YWUwNTQ5Li4yZDJlZDk3NGQy
MGM5NGU2M2FkYjU3YTk3NmUxMTg5NWY3N2RmZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMzcs
NyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsK
IAotRW50cnk6OkVudHJ5KGNvbnN0IEtleSYga2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RI
ZWFkZXJzKQorRW50cnk6OkVudHJ5KGNvbnN0IEtleSYga2V5LCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4m
IHZhcnlpbmdSZXF1ZXN0SGVhZGVycykKICAgICA6IG1fa2V5KGtleSkKICAgICAsIG1fdGltZVN0
YW1wKFdhbGxUaW1lOjpub3coKSkKICAgICAsIG1fcmVzcG9uc2UocmVzcG9uc2UpCkBAIC0xMDEs
OCArMTAxLDEwIEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3Jk
KCkgY29uc3QKIAogICAgIERhdGEgaGVhZGVyKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVm
ZmVyU2l6ZSgpKTsKICAgICBEYXRhIGJvZHk7Ci0gICAgaWYgKG1fYnVmZmVyKQotICAgICAgICBi
b2R5ID0geyBtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgaWYgKG1f
YnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVyID0gbV9idWZmZXItPm1ha2VDb250aWd1b3VzKCk7
CisgICAgICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIqPihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAg
IH0KIAogICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7IH0g
fTsKIH0KQEAgLTE5MSwxMCArMTkzLDEwIEBAIHZvaWQgRW50cnk6OmluaXRpYWxpemVCdWZmZXJG
cm9tU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogI2Vu
ZGlmCi0gICAgbV9idWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NvdXJj
ZVN0b3JhZ2VSZWNvcmQuYm9keS5kYXRhKCksIG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LnNp
emUoKSk7CisgICAgbV9idWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUobV9zb3VyY2VTdG9yYWdlUmVjb3JkLmJvZHkuZGF0YSgpLCBtX3NvdXJjZVN0b3JhZ2VS
ZWNvcmQuYm9keS5zaXplKCkpOwogfQogCi1XZWJDb3JlOjpTaGFyZWRCdWZmZXIqIEVudHJ5Ojpi
dWZmZXIoKSBjb25zdAorV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogRW50cnk6OmJ1
ZmZlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgaW5pdGlhbGl6ZUJ1
ZmZlckZyb21TdG9yYWdlUmVjb3JkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKaW5kZXggOTY5MTVjMzgwMWMzN2Rk
YWMzZThlNjAzMjFmODhjMjIyOWNkNTlhMC4uOWMwNDIwZDQ0YTgxNThkZmM1YjIxY2YxODgyMDRj
ZjNhOTE2YjQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBjbGFzcyBF
bnRyeSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgRW50cnko
Y29uc3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJp
bmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKTsKKyAgICBFbnRyeShjb25zdCBLZXkmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYg
dmFyeWluZ1JlcXVlc3RIZWFkZXJzKTsKICAgICBFbnRyeShjb25zdCBLZXkmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYg
dmFyeWluZ1JlcXVlc3RIZWFkZXJzKTsKICAgICBleHBsaWNpdCBFbnRyeShjb25zdCBTdG9yYWdl
OjpSZWNvcmQmKTsKICAgICBFbnRyeShjb25zdCBFbnRyeSYpOwpAQCAtNTcsNyArNTcsNyBAQCBw
dWJsaWM6CiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBj
b25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAgICAgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxT
dHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMoKSBjb25zdCB7IHJldHVybiBt
X3ZhcnlpbmdSZXF1ZXN0SGVhZGVyczsgfQogCi0gICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBi
dWZmZXIoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZm
ZXIoKSBjb25zdDsKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdD4mIHJlZGlyZWN0UmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVkaXJlY3RSZXF1ZXN0
OyB9CiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQpAQCAtODgsNyArODgsNyBAQCBw
cml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBtX3ZhcnlpbmdS
ZXF1ZXN0SGVhZGVyczsKIAogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0PiBtX3JlZGlyZWN0UmVxdWVzdDsKLSAgICBtdXRhYmxlIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIG11dGFibGUgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0Up
CiAgICAgbXV0YWJsZSBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIG1fc2hhcmVhYmxlUmVzb3Vy
Y2VIYW5kbGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRl
eCBhZDA5ZGY0NGQ5YWYxMmZkNDA4MDMxMDU0NjgzNTM2ZWEwZGM4MTkzLi40ODc3NTNmYjljODYy
YzIyNDY0ZjljOTUzMzA4YjEzZGRmNDk5Nzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuY3BwCkBAIC00Niw3ICs0Niw2IEBAIFNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVM
b2FkKENhY2hlJiBjYWNoZSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZ2xvYmFsRnJhbWVJCiAgICAg
OiBtX2NhY2hlKGNhY2hlKQogICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSkKICAgICAsIG1fb3JpZ2luYWxSZXF1ZXN0KHJlcXVlc3QpCi0gICAgLCBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2Nh
Y2hlRW50cnkoV1RGTW92ZShjYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikpCiB7CiAgICAgQVNTRVJU
KCFtX2NhY2hlRW50cnkgfHwgbV9jYWNoZUVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CkBAIC0x
MDksNyArMTA4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBtX3Jlc3BvbnNlID0g
cmVjZWl2ZWRSZXNwb25zZTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0g
ICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAKICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQg
PSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVk
CiAgICAgaWYgKHZhbGlkYXRpb25TdWNjZWVkZWQgJiYgbV9jYWNoZUVudHJ5KQpAQCAtMTIwLDE3
ICsxMTksMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBjb21wbGV0aW9uSGFuZGxl
cihQb2xpY3lBY3Rpb246OlVzZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNl
aXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkKK3ZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnkpOwogCiAgICAgaWYgKG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNh
c2Ugb2Ygc3RyZWFtaW5nIGRhdGEuCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVC
dWZmZXJTaXplID0gMTAgKiAxMDI0ICogMTAyNDsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNp
emUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdl
dCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVy
LT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KIH0KIApAQCAtMTM4LDExICsxMzcs
MTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAobV9kaWRDb21wbGV0ZSkKICAgICAg
ICAgcmV0dXJuOwotICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUpIHsKLSAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJl
cXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuY29weVJlZigpLCBbXShh
dXRvJiBtYXBwZWRCb2R5KSB7IH0pOworICAgIGlmICghbV9jYWNoZUVudHJ5ICYmICFtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLmlzTnVsbCgpKSB7CisgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2Fj
aGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLmdldCgpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOwogICAgICAgICAvLyBDcmVh
dGUgYSBzeW50aGV0aWMgY2FjaGUgZW50cnkgaWYgd2UgY2FuJ3Qgc3RvcmUuCiAgICAgICAgIGlm
ICghbV9jYWNoZUVudHJ5ICYmIGlzU3RhdHVzQ29kZUNhY2hlYWJsZUJ5RGVmYXVsdChtX3Jlc3Bv
bnNlLmh0dHBTdGF0dXNDb2RlKCkpKQotICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNo
ZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUt
Pm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFG
b3JDYWNoZS50YWtlKCkpOwogICAgIH0KIAogICAgIGRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRleCBjMGUxZTE0YjJhYzQ2MDM1OGY4MTQwN2NkNzBjNDA5
MDUyYWY4ZWZlLi4xYjg0M2RiN2VjMjcwZGI5ZGFiOWU4YTI1ZjJhNDhhOGVjYWUyYThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGly
ZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Up
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApA
QCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSBtX3Jlc3BvbnNlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50
cnk+IG1fY2FjaGVFbnRyeTsKICAgICBib29sIG1fZGlkQ29tcGxldGUgeyBmYWxzZSB9OwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2Fj
aGUuY3BwCmluZGV4IDVlMmUwMmUyZmJhMGI0YTBjMDNiNWQzZTY2Yjk3ZjdiY2NjNzk1OGIuLjMx
OTliZmYzMTFiNmMzZWVmYmU5NTBiNDVlNmIwYTk2ZTMyNzc3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcApAQCAtMzAs
NyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUHJlZmV0Y2hDYWNoZTo6RW50cnk6
OkVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitQcmVmZXRjaENhY2hlOjpFbnRyeTo6RW50cnko
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiByZXNwb25zZShXVEZNb3ZlKHJl
c3BvbnNlKSksIGJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiB9CkBAIC03Miw3ICs3Miw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxQcmVmZXRjaENhY2hlOjpFbnRyeT4gUHJlZmV0Y2hDYWNoZTo6dGFr
ZShjb25zdCBVUkwmIHVybCkKIAogc3RhdGljIGNvbnN0IFNlY29uZHMgZXhwaXJhdGlvblRpbWVv
dXQgeyA1X3MgfTsKIAotdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZShjb25zdCBVUkwmIHJlcXVl
c3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlKGNv
bnN0IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAg
ICAgaWYgKCFtX3Nlc3Npb25QcmVmZXRjaGVzKQogICAgICAgICBtX3Nlc3Npb25QcmVmZXRjaGVz
ID0gbWFrZVVuaXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCmluZGV4IGEyNTE1MjBiMzFl
YWM5MjFjMjJkMzExNTFkNmQyMzFhMWJlZDEzOGMuLjUyYzBiMTBmY2M2ZDVhNmRlMTE0NDdlN2U0
ZTgyMmRmOGY4NDFjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvUHJlZmV0Y2hDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvUHJlZmV0Y2hDYWNoZS5oCkBAIC00NywxOCArNDcsMTggQEAgcHVibGljOgogCiAgICAg
c3RydWN0IEVudHJ5IHsKICAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwot
ICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpOworICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICAg
ICAgRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJik7CiAKLSAgICAgICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVsZWFzZUJ1
ZmZlcigpIHsgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOyB9CisgICAgICAgIFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZWxlYXNlQnVmZmVyKCkgeyByZXR1cm4g
YnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7IH0KIAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlOwotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBi
dWZmZXI7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZWRpcmVjdFJlcXVlc3Q7
CiAgICAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gdGFrZShjb25zdCBVUkwmKTsK
LSAgICB2b2lkIHN0b3JlKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBzdG9yZShjb25zdCBV
UkwmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB2b2lkIHN0b3JlUmVkaXJlY3QoY29uc3QgVVJMJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKaW5kZXggYjlhYjBkZWViYjlmOTI3YzczNzQy
ZTg2YTBiZTdmOTcxNjBiZDZmYi4uNDE2NjhhNWIxY2Q3Mzg2OTY3YjhmZDk3M2U5NjczMmVjYTkw
N2VkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkaWROZWdvdGlhdGVNb2Rlcm5UTFMoY29uc3QgVVJMJik7CiAgICAgdm9pZCBkaWRDb21w
bGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCB0cmFuc2Zl
clNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKERvd25sb2FkJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bQppbmRleCBlNzgwZDZjMWMzY2QxZWIyYzJmZjVhMGM1NjRhMGU0ZDg4YjdlYTVkLi4zMDUxZjE2
OWNiMGEzNzA5OTg1YTE2MTEyMmMyNWYwZThmMTdiZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0K
QEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRDb21wbGV0
ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcgogICAgICAgICBtX2Ns
aWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoZXJyb3IsIG5ldHdvcmtMb2FkTWV0cmljcyk7CiB9
CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7
CiAgICAgV1RGRW1pdFNpZ25wb3N0KG1fdGFzay5nZXQoKSwgIkRhdGFUYXNrIiwgInJlY2VpdmVk
ICV6ZCBieXRlcyIsIGRhdGEtPnNpemUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCBkOTNh
YzllYjJmMTA0NWUxM2U1NzI1YTQ3ZjBlNzY5MTU3MmI2YzQxLi4zZmZiY2U4N2M0MmI0Njk3OGU4
NmJmMTYzNzM1OGM5ZTQ0N2Q0MDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC05ODUsNyArOTg1
LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAtICh2b2lkKVVSTFNlc3Np
b246KE5TVVJMU2Vzc2lvbiAqKXNlc3Npb24gZGF0YVRhc2s6KE5TVVJMU2Vzc2lvbkRhdGFUYXNr
ICopZGF0YVRhc2sgZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEKIHsKICAgICBpZiAoYXV0
byogbmV0d29ya0RhdGFUYXNrID0gW3NlbGYgZXhpc3RpbmdUYXNrOmRhdGFUYXNrXSkKLSAgICAg
ICAgbmV0d29ya0RhdGFUYXNrLT5kaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhKSk7CisgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZURhdGEo
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpKTsKIH0KIAogLSAo
dm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIGRvd25sb2FkVGFzazooTlNV
UkxTZXNzaW9uRG93bmxvYWRUYXNrICopZG93bmxvYWRUYXNrIGRpZEZpbmlzaERvd25sb2FkaW5n
VG9VUkw6KE5TVVJMICopbG9jYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAppbmRleCA4ZmM3YjY2M2U2
Zjc1NjJiMmIzNTQ4OTM5OGEyZmU3MzFiZTA3NGYxLi4zN2YyOTQxNjY0NmM0N2UxZGExZmQ5OTQx
Y2NhYzAwYjVkYzBmZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAg
dm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1
ZXN0JiByZXF1ZXN0LCBDdXJsUmVzcG8KICAgICBpbnZva2VEaWRSZWNlaXZlUmVzcG9uc2UoKTsK
IH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJs
UmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBOZXR3b3JrRGF0YVRh
c2tDdXJsOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlz
IH07CiAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCBzdGF0ZSgpID09IFN0
YXRlOjpDb21wbGV0ZWQgfHwgKCFtX2NsaWVudCAmJiAhaXNEb3dubG9hZCgpKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJs
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3Vy
bC5oCmluZGV4IDFjNDI3ZGRiNzhkNjk1M2ZlODk2MGM1NjkyYWZkZTRmNGYwZWVlODUuLjQ1YmU1
Y2UxODQzMjUyNzFkNWMwODBkZDM0ZjFlZTRhMTY2NDJhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaApAQCAt
NjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIFJlZjxXZWJDb3JlOjpDdXJsUmVxdWVzdD4gY3Jl
YXRlQ3VybFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlcXVlc3RTdGF0dXMg
PSBSZXF1ZXN0U3RhdHVzOjpOZXdSZXF1ZXN0KTsKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShX
ZWJDb3JlOjpDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBs
b25nKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6
Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpDdXJsUmVzcG9uc2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZm
ZXIoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoV2ViQ29yZTo6Q3Vy
bFJlcXVlc3QmLCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImJiwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a0RhdGFUYXNrU291cC5jcHAKaW5kZXggYjIwYWE1MWEwZjg0Zjk1YWQ4ZjBiNzgwN2Q3NDE3MWFk
YzUyMDVhMy4uNzE2MGJmZjk0NDRkMTg0OTgxZGY1MmQxZjFlNTIxNTdiM2Q5MTQ0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1Nv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0
YVRhc2tTb3VwLmNwcApAQCAtMTA2Miw3ICsxMDYyLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tT
b3VwOjpkaWRSZWFkKGdzc2l6ZSBieXRlc1JlYWQpCiAgICAgICAgIHdyaXRlRG93bmxvYWQoKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQobV9jbGllbnQpOwotICAgICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZURhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX3JlYWRCdWZm
ZXIpKSk7CisgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX3JlYWRCdWZmZXIpKSk7CiAgICAgICAgIHJlYWQoKTsK
ICAgICB9CiB9CkBAIC0xNzYxLDcgKzE3NjEsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6
OmRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9uYWw8RGF0YVVSTERlY29kZXI6OlJlc3VsdD4mJgog
ICAgIH0KIAogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9u
c2UobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgcmVzdWx0LnZhbHVlKCkpOwotICAgIGF1dG8gYnl0
ZXMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpLT5jcmVhdGVH
Qnl0ZXMoKTsKKyAgICBhdXRvIGJ5dGVzID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOwogICAgIG1faW5wdXRTdHJl
YW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19mcm9tX2J5dGVzKGJ5dGVz
LmdldCgpKSk7CiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRl
ci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3Zp
ZGVyLmgKaW5kZXggZjVkYjcwNmM0NDU4MDIxMDg3Zjk1OTk2NjlkZmE3ZDlmODM3OTc4Yy4uMzNk
NDNiNzIyMzhkMjAzZTdlZGVjOTQxNGNhZjlmZGE4ZjQwNTI2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgK
QEAgLTU1LDcgKzU1LDcgQEAgc3RydWN0IFBhY2tldE9wdGlvbnM7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmluZGV4IGRm
OGVlMzBjNDNjMGZmZjRkMGVhNmQ4Y2VjZTNmY2Y0Y2IzM2VmNzEuLmY2NzY2ODg1N2ZmNWMyZTUz
MmQ1YjRiNTE0ZjJlMmNmNDlmNzYyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC01MSw5ICs1MSw5IEBAIHN0ZDo6b3B0aW9uYWw8
U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAg
IHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAyYmMxMDhl
NTYzYTZlM2RmMTgzMmU5Zi4uNzhmODE0Zjg2MTcxN2QzMTFhNzA5ZDQ1OTc3NzVjNjc4MDhlNDQ4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApA
QCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLS8vIEVuY29kZXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBpcyByZWNlaXZlZCBhcyBhIGNvcHkg
b2YgdGhlIGRlY29kZWQgZGF0YSBpbiBhIG5ldyBTaGFyZWRCdWZmZXIuCisvLyBFbmNvZGVzIGEg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgY29weSBvZiB0aGUg
ZGVjb2RlZCBkYXRhIGluIGEgbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAvLyBUbyBhdm9p
ZCBjb3B5aW5nIGZyb20gdGhlIERlY29kZXIsIHVzZSBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
IHRvIHJlY2VpdmUgYSBEYXRhUmVmZXJlbmNlIGluc3RlYWQuCiAKICNwcmFnbWEgb25jZQpAQCAt
MzksMTggKzM5LDE1IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlckNvcHkgewogcHVibGljOgogICAgIFNo
YXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdU
Rk1vdmUoYnVmZmVyKSkgeyB9Ci0gICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikp
IHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBi
dWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSkKLSAgICB7Ci0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKLSAgICB9CisgICAg
U2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGln
dW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCkpIHsgfQor
ICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSkg
eyB9CisgICAgU2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLm1ha2VDb250aWd1b3Vz
KCkpIHsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsg
cmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsg
fQorICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogICAgIGNvbnN0IHVpbnQ4X3QqIGRh
dGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRy
OyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVy
LT5zaXplKCkgOiAwOyB9CkBAIC02MCw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVjb2RlKERl
Y29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaAppbmRleCBkM2QwZWM1
ZTk3ODU1OTliNjM0YTg0YzZjNDQ3MWI1MmNkMjIxM2YxLi42N2VjOGU1ZTkyYmQwMjQxMTVkYjBk
NDA4MGEyNGZlNzM1NzBkM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8gRW5jb2RlcyBhIFNoYXJl
ZEJ1ZmZlciBvciBEYXRhUmVmZXJlbmNlIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBEYXRhUmVmZXJl
bmNlIHRvIHRoZSBkZWNvZGVkIGRhdGEuCisvLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciBvciBEYXRhUmVmZXJlbmNlIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBEYXRhUmVmZXJlbmNl
IHRvIHRoZSBkZWNvZGVkIGRhdGEuCiAKICNwcmFnbWEgb25jZQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL1NoYXJlZE1lbW9yeS5jcHAKaW5kZXggZDI0MDZlZTI5MDUzMTFmNjliNzU4NDIxZTc3YTNl
NjZjYmEyN2I2NS4uY2Y3NjM2M2ZlYjJjZGM4ZDU4ZmQyYTJjNDJmNmU0YTdjNjdkMzg5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAtMzIsNyArMzIsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0cjxT
aGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK1JlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDgsMTAgKzQ4LDEwIEBAIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gc2hhcmVkTWVtb3J5OwogfQogCi1SZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUp
IGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVT
aGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAogewogICAgIEFTU0VSVChkYXRhU2l6
ZSA8PSBzaXplKCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIg
ewogICAgICAgICBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVp
bnQ4X3QqIHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
cHJvdGVjdGVkVGhpcy0+ZGF0YSgpKTsKICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1No
YXJlZE1lbW9yeS5oCmluZGV4IGUzNzFiY2Q3MzAyY2Y4NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUy
YWIuLmNlYzA1ODk5MjQzMDEwMjI3ZjJmODc1ZmQxMmFkZWRhNzllOGEzNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAtNDQsNyArNDQsOCBAQCBjbGFzcyBFbmNvZGVy
OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0K
IAogI2lmIE9TKERBUldJTikKQEAgLTEyMCw3ICsxMjEsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBG
SVhNRTogQ2hhbmdlIHRoZXNlIGZhY3RvcnkgZnVuY3Rpb25zIHRvIHJldHVybiBSZWY8U2hhcmVk
TWVtb3J5PiBhbmQgY3Jhc2ggb24gZmFpbHVyZS4KICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1l
bW9yeT4gYWxsb2NhdGUoc2l6ZV90KTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4g
Y29weUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVm
UHRyPFNoYXJlZE1lbW9yeT4gY29weUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJik7CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IG1hcChjb25zdCBI
YW5kbGUmLCBQcm90ZWN0aW9uKTsKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICBz
dGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gd3JhcE1hcCh2b2lkKiwgc2l6ZV90LCBpbnQgZmls
ZURlc2NyaXB0b3IpOwpAQCAtMTUzLDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm4g
dGhlIHN5c3RlbSBwYWdlIHNpemUgaW4gYnl0ZXMuCiAgICAgc3RhdGljIHVuc2lnbmVkIHN5c3Rl
bVBhZ2VTaXplKCk7CiAKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFy
ZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKKyAgICBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CiAKIHByaXZhdGU6CiAj
aWYgT1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJj
aGl2ZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmUubW0KaW5kZXggMThk
ZGM1N2E5ZDQxMjAwOWQ2ZGYzMGE5OGM2ZTZhNTAyM2FmMjk2ZC4uNjVhNDYxNDRmZjU5OTUyNmI4
ZTdkNzc4NzQxZDFmODdjY2U3OTc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJV2ViQXJjaGl2ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZl
Lm1tCkBAIC04Nyw3ICs4Nyw3IEBAIFdlYkFyY2hpdmU6OldlYkFyY2hpdmUoV2ViQXJjaGl2ZVJl
c291cmNlKiBtYWluUmVzb3VyY2UsIFJlZlB0cjxBUEk6OkFycmF5PiYmIHN1CiAKIFdlYkFyY2hp
dmU6OldlYkFyY2hpdmUoQVBJOjpEYXRhKiBkYXRhKQogewotICAgIG1fbGVnYWN5V2ViQXJjaGl2
ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLT5i
eXRlcygpLCBkYXRhLT5zaXplKCkpLmdldCgpKTsKKyAgICBtX2xlZ2FjeVdlYkFyY2hpdmUgPSBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEtPmJ5dGVzKCksIGRhdGEtPnNpemUoKSkuZ2V0KCkpOwogfQogCiBXZWJBcmNoaXZlOjpXZWJB
cmNoaXZlKFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiYmIGxlZ2FjeVdlYkFyY2hpdmUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KaW5kZXggY2EwYzI0
YjI3NzM1NDc2NzZlMzQ4MDFjNzlhMWQ1NjViZjk1ZmU1ZC4uNjVhMThiNzczYzU4NmJlYjUyNWI5
MmE2M2JjNmExNWU3MTBkYmQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
V2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFy
Y2hpdmVSZXNvdXJjZS5tbQpAQCAtNDcsNyArNDcsNyBAQCBSZWY8V2ViQXJjaGl2ZVJlc291cmNl
PiBXZWJBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiYmIGFy
YwogfQogCiBXZWJBcmNoaXZlUmVzb3VyY2U6OldlYkFyY2hpdmVSZXNvdXJjZShBUEk6OkRhdGEq
IGRhdGEsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBT
dHJpbmcmIHRleHRFbmNvZGluZykKLSAgICA6IG1fYXJjaGl2ZVJlc291cmNlKEFyY2hpdmVSZXNv
dXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEtPmJ5dGVzKCksIGRhdGEtPnNp
emUoKSksIFdURjo6VVJMKFdURjo6VVJMKCksIHVybCksIE1JTUVUeXBlLCB0ZXh0RW5jb2Rpbmcs
IFN0cmluZygpKSkKKyAgICA6IG1fYXJjaGl2ZVJlc291cmNlKEFyY2hpdmVSZXNvdXJjZTo6Y3Jl
YXRlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLT5ieXRlcygpLCBkYXRhLT5z
aXplKCkpLCBXVEY6OlVSTChXVEY6OlVSTCgpLCB1cmwpLCBNSU1FVHlwZSwgdGV4dEVuY29kaW5n
LCBTdHJpbmcoKSkpCiB7CiB9CiAKQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFz
ZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEp
CiAKIFJlZjxBUEk6OkRhdGE+IFdlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSgpCiB7Ci0gICAgUmV0
YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5jcmVh
dGVDRkRhdGEoKTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVS
ZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogCiAgICAg
Ly8gQmFsYW5jZWQgYnkgQ0ZSZWxlYXNlIGluIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRh
LgogICAgIENGUmV0YWluKGNmRGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDg3ZjRl
YjFlYmEyODcyZTBjYjBhYjk1OTE2YWZlZGUyOWZjYmEyNDQuLjNjMWI1N2Q1YWEyNmVjNzJlNjBi
NWQ3OGExMWU5ZmQ4NTJjZmZlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC01NjQsMTMgKzU2NCwx
MiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgaWYgKCppbmNsdWRlc0NyZWF0aW9uRGF0YSkgewotICAgICAgICBzdGQ6Om9wdGlv
bmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBmb250RmFj
ZURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBpZiAoIWZv
bnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAg
Ly8gVXBvbiByZWNlaXB0LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1cml0eSwgc28gdGhlIHNlbmRl
ciBjYW4ndCBzY3JpYmJsZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0LgotICAgICAgICBh
dXRvIGxvY2FsRm9udEZhY2VEYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZm9u
dEZhY2VEYXRhLnZhbHVlKCktPmRhdGEoKSwgZm9udEZhY2VEYXRhLnZhbHVlKCktPnNpemUoKSk7
CisgICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBmb250RmFjZURhdGEudmFsdWUoKS0+
bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaXRlbUlu
Q29sbGVjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9uOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJ
bWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IGU5YTUxM2EzMDVl
ZGQ2NWJkZmEzNzRlMWJkMGUzZmVhYjFmNmI4MjQuLjQ1NDE2NDM2YzI1MDUyMDgzOGU1ZGZkY2My
YmZlMzUzZmI1OWMyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZC5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZQogICAg
IFJFTEVBU0VfTE9HKFJlbW90ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJh
Y2tlbmQgb2Ygc2l6ZSAlZHglZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBvZiAlbGQgYnl0ZXMiLCBz
aXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSk7
CiAjZW5kaWYKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgp
KSB9IH07CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVk
QnVmZmVyQ29weSB7IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmdldCgpKSB9IH07CiB9CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgQ0dEaXNwbGF5TGlz
dEltYWdlQnVmZmVyQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggYzY5NjFjNzE0NDAyYmYzNzdhZTkxMGZiYjZj
Y2FhNTJkM2I4NDEyOC4uMmMxNjExYzllNzBmOGY5YTEzNzljMmM4NDMwODQ3MzUyZTRjOTZjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAtNTUsMTUg
KzU1LDE1IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIo
KQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFw
SW5TaGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2Vs
ZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAogICAgICAgICBb
c2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9CiAgICAgfSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRy
eVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29u
c3QKIHsKICAgICBSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291cmNlID0gU2hhcmVhYmxl
UmVzb3VyY2U6Om1hcCgqdGhpcyk7CiAgICAgaWYgKCFyZXNvdXJjZSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKaW5kZXggZGExZWVlMGFkNjJjYjM0ODRjMWMzNDA1
YzQ4NzBjZjBjNTFlMTYxNi4uYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2NiNGY2NGU0MTJh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBAIC0zMyw3ICsz
Myw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgICAgICB2b2lk
IGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICAgICAgc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBIYW5kbGUmKTsKIAotICAgICAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25z
dDsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeVdy
YXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5k
IGNsYXNzIFNoYXJlYWJsZVJlc291cmNlOwpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAg
CiBwcml2YXRlOgogICAgIFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1vcnk+JiYsIHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgUmVmPFNoYXJl
ZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDY0OTgyYmM0ODEwMmE0YWRiMjBhN2U2MGUyMWJk
NDkyZDY1MzM3NGMuLjc4ZGQ3NzFkNjQwODM1MTVjNDBhZjQ1YjU3ZTY2YjcwNzEzMTYwNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAt
MTY0LDcgKzE2NCw3IEBAIERFRklORV9TSU1QTEVfQVJHVU1FTlRfQ09ERVJfRk9SX1NPVVJDRShE
aXNwbGF5TGlzdDo6U2V0SW5saW5lU3Ryb2tlQ29sb3IpCiAKICN1bmRlZiBERUZJTkVfU0lNUExF
X0FSR1VNRU5UX0NPREVSX0ZPUl9TT1VSQ0UKIAotc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVm
ZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorc3RhdGlj
IHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICBib29sIGlzTnVsbCA9ICFidWZmZXI7CiAg
ICAgZW5jb2RlciA8PCBpc051bGw7CkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIHZvaWQgZW5j
b2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVm
ZmVyKQogICAgICAgICByZXR1cm47CiAKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAg
ICAvLyBEbyBub3QgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIFNoYXJlZEJ1ZmZlciBlbmNvZGluZyBp
biBVbml4LCBiZWNhdXNlIGl0J3MgZWFzeSB0byByZWFjaCB0aGUKKyAgICAvLyBEbyBub3QgdXNl
IHNoYXJlZCBtZW1vcnkgZm9yIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgZW5jb2RpbmcgaW4gVW5p
eCwgYmVjYXVzZSBpdCdzIGVhc3kgdG8gcmVhY2ggdGhlCiAgICAgLy8gbWF4aW11bSBudW1iZXIg
b2YgZmlsZSBkZXNjcmlwdG9ycyBvcGVuIHBlciBwcm9jZXNzIHdoZW4gc2VuZGluZyBsYXJnZSBk
YXRhIGluIHNtYWxsIGNodW5rcwogICAgIC8vIG92ZXIgdGhlIElQQy4gQ29ubmVjdGlvblVuaXgu
Y3BwIGFscmVhZHkgdXNlcyBzaGFyZWQgbWVtb3J5IHRvIHNlbmQgYW55IElQQyBtZXNzYWdlIHRo
YXQgaXMKICAgICAvLyB0b28gbGFyZ2UuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA4NTcxLgpAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29k
ZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZl
cikKICNlbmRpZgogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hh
cmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
CitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29k
ZXImIGRlY29kZXIsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewog
ICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwpA
QCAtMjA4LDcgKzIwOCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVT
aGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGlmICghYnVmZmVyU2l6ZSkgewotICAgICAgICBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMjEsNyAr
MjIxLDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZl
cihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
Rml4ZWRMZW5ndGhEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgMSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSkpOworICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGRhdGEpKTsKICNlbHNlCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxl
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxlKSkKQEAgLTI0MCw3ICsyNDAsNyBA
QCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29k
ZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMg
dm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQor
c3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUo
KSk7CiAgICAgZW5jb2RlciA8PCB0eXBlczsKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9p
ZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHR5cGVzLCBjbwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVy
LmdldCgpKTsKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVz
QW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0
eXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTI2MSwxMCArMjYxLDEwIEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVU
eXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluCiAgICAgQVNTRVJUKGRh
dGFTaXplID09IHR5cGVzLnNpemUoKSk7CiAKICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwg
ZGF0YVNpemU7IGkrKykgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlm
ICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIGRhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAg
IGRhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0zNTYs
NyArMzU2LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE9NQ2EKICAgICBlbmNvZGVyIDw8IHJlY29y
ZC51cGRhdGVSZXNwb25zZUNvdW50ZXI7CiAgICAgZW5jb2RlciA8PCByZWNvcmQucmVzcG9uc2VC
b2R5U2l6ZTsKIAotICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNv
bnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICBXVEY6OnN3aXRjaE9uKHJlY29y
ZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikgewogICAgICAgICBlbmNvZGVyIDw8IHRydWU7CiAgICAgICAgIGVuY29kZVNoYXJlZEJ1
ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOwogICAgIH0sIFsmXShjb25zdCBSZWY8Rm9ybURh
dGE+JiBmb3JtRGF0YSkgewpAQCAtNDE0LDcgKzQxNCw3IEBAIHN0ZDo6b3B0aW9uYWw8RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZD4gQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6
ZGVjCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaGFzU2hhcmVkQnVm
ZmVyQm9keSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVj
b2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICBpZiAoYnVmZmVyKQpAQCAtMTU1MCwxMCArMTU1MCwxMCBAQCB2
b2lkIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0CiAgICAgaWYgKGhhc1N0cmluZykKICAgICAgICAgZW5jb2Rl
ciA8PCBzdGQ6OmdldDxTdHJpbmc+KHBsYXRmb3JtRGF0YSk7CiAKLSAgICBib29sIGhhc0J1ZmZl
ciA9IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0
YSk7CisgICAgYm9vbCBoYXNCdWZmZXIgPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKTsKICAgICBlbmNvZGVyIDw8IGhhc0J1
ZmZlcjsKICAgICBpZiAoaGFzQnVmZmVyKQotICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5j
b2Rlciwgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSkucHRyKCkpOwor
ICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rlciwgc3RkOjpnZXQ8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpLnB0cigpKTsKIH0KIAogYm9vbCBBcmd1bWVu
dENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnkmIGRhdGEpCkBAIC0xNTgzLDcgKzE1ODMs
NyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBpZiAoaGFzQnVmZmVyKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlOwor
ICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdmFsdWU7CiAgICAgICAgIGlm
ICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIHZhbHVlKSB8fCAhdmFsdWUpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRhdGEucGxhdGZvcm1EYXRhID0geyB2YWx1ZS5y
ZWxlYXNlTm9uTnVsbCgpIH07CkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNl
cmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVk
QXR0YWNobQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4ge3sgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92
ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSkgfX07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZN
b3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKQEAgLTMwMTAsMjggKzMwMTAsNTYgQEAgc3RkOjpvcHRpb25hbDxTZXJp
YWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFs
aXplZFAKIH0KICNlbmRpZgogCi12b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7
CiAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7CiB9CiAKLXN0
ZDo6b3B0aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0
aW9uYWw8UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVy
KGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBy
ZXR1cm4gYnVmZmVyOwogfQogCi12b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgZW5jb2Rl
U2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8
UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1
ZmZlcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXIu
cmVsZWFzZU5vbk51bGwoKTsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAg
ICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30KKworc3RkOjpv
cHRpb25hbDxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAg
ICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKwordm9pZCBBcmd1bWVu
dENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigp
KTsKK30KKworc3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3Vt
ZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFi
dWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMwOTUsNyArMzEyMyw3
IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kCiAgICAgICAgIHJldHVybiBkZWNvZGVTY3JpcHRC
dWZmZXJBc1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKGRlY29kZXIpOwogI2VuZGlmCiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZm
ZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMTA3LDcgKzMxMzUsNyBA
QCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdl
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZQogewogICAgIGVuY29kZXIgPDwgbWVzc2FnZS5maXJz
dDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5zZWNv
bmQuY29weVJlZigpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdl
RGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlSZWYoKTsKICAgICBlbmNvZGVyIDw8IG1lc3NhZ2VE
YXRhOwogfQogCkBAIC0zMTE3LDcgKzMxNDUsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSQog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZl
cikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAyNWYwMWMwMjkyYTAx
OWYwNjc2MjRiYmI1NTM0MDJkZjFhMzNjNWI2Li5lMzI4MWI1ZDJmMWNjYmZlNzg4M2ZjNTQ2OWM3
MGU3YjM3MWVhMTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaApAQCAtMTE0LDYgKzExNCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDb2xvcjsK
K2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3Mg
Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKQEAgLTEzOCw3ICsxMzks
NyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xh
c3MgU2NyaXB0QnVmZmVyOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3ByaW5nVGltaW5nRnVu
Y3Rpb247CiBjbGFzcyBTdGVwc1RpbWluZ0Z1bmN0aW9uOwogY2xhc3MgU3RpY2t5UG9zaXRpb25W
aWV3cG9ydENvbnN0cmFpbnRzOwpAQCAtNzUxLDE0ICs3NTIsMjQgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+
IHsKIH07CiAjZW5kaWYKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mKTsKLSAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXIm
KTsKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBj
b25zdCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
IGRlY29kZShEZWNvZGVyJik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYpOwotICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYp
OwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0
IFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERl
Y29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAg
IHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAogdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAppbmRleCBjZjJlNGQ1
ZjkzZmQyZDk0NmJhYmZmOTNlZWEzZTllODYwYWViYmY0Li5iNjA3YWNlODM4ZTA0YmNlMWE2YWVl
NGRhNTY1NTllMDk2OTgzOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJI
aXRUZXN0UmVzdWx0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVz
dFJlc3VsdERhdGEuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpX
ZWJIaXRUZXN0UmVzdWx0RGF0YShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoaXRUZXN0
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChJbWFnZSogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0
LmltYWdlKCkpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2Ut
PmRhdGEoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IGltYWdlLT5kYXRhKCk7CiAgICAgICAgIGlmIChidWZmZXIpIHsKICAgICAgICAgICAgIGltYWdl
U2hhcmVkTWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7
CiAgICAgICAgICAgICBpbWFnZVNpemUgPSBidWZmZXItPnNpemUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4IDI1YTMwN2YzODI5ZTky
NzhiNWVhNzhmZjgyOTY3ODgzMzc3YTMxYmEuLmZkNTdlM2I3ZTI0NjEwZDQyN2UxYmZjYWQ1ZTQ2
OWNmMDA2YzliMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVu
dENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29k
ZXJzR3RrLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9u
RGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTZWxlY3Rpb25EYXRhJgogICAg
IGJvb2wgaGFzQ3VzdG9tRGF0YSA9IHNlbGVjdGlvbi5oYXNDdXN0b21EYXRhKCk7CiAgICAgZW5j
b2RlciA8PCBoYXNDdXN0b21EYXRhOwogICAgIGlmIChoYXNDdXN0b21EYXRhKQotICAgICAgICBl
bmNvZGVyIDw8IFJlZlB0cjxTaGFyZWRCdWZmZXI+KHNlbGVjdGlvbi5jdXN0b21EYXRhKCkpOwor
ICAgICAgICBlbmNvZGVyIDw8IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihzZWxlY3Rp
b24uY3VzdG9tRGF0YSgpKTsKIAogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlID0gc2VsZWN0aW9u
LmNhblNtYXJ0UmVwbGFjZSgpOwogICAgIGVuY29kZXIgPDwgY2FuU21hcnRSZXBsYWNlOwpAQCAt
MTU5LDEwICsxNTksMTAgQEAgc3RkOjpvcHRpb25hbDxTZWxlY3Rpb25EYXRhPiBBcmd1bWVudENv
ZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhhc0N1c3RvbURhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGlmIChoYXNDdXN0b21EYXRhKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1
ZmZlcj4oKmJ1ZmZlcikpOworICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOwogICAgIH0KIAogICAgIGJvb2wgY2FuU21h
cnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVB
cmd1bWVudENvZGVyc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFy
Z3VtZW50Q29kZXJzV2luLmNwcAppbmRleCAyOTJkNzE0NTJjNWMzYTk0OTJiMmY1YjYxNjgyNzM1
MzBhYzJkZDExLi44YWVmNGE1MDFkYWQ5Mjc2NmM3MTlmYzUwMDZjNmRmMTJhZGE1YWEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJz
V2luLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0
YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjCiAgICAg
Rm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhKiBjcmVhdGlvbkRhdGEgPSBudWxscHRyOwog
CiAgICAgaWYgKGluY2x1ZGVzQ3JlYXRpb25EYXRhLnZhbHVlKCkpIHsKLSAgICAgICAgc3RkOjpv
cHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwogICAgICAg
ICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IGIzNGVjNzM2MzYzYzRmMWQyYjBlNzYwYWQz
ZjRhOWQ1YmFjMWEzNGUuLjcyMjk4ZWI4ODVjM2E2NDg3OWNjZTYxMDA3MWUyMzg0MDkyYmU2NjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAg
LTk4LDE3ICs5OCwxNyBAQCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBBdHRhY2htZW50OjpmaWxl
U2l6ZUZvckRpc3BsYXkoKSBjb25zdAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLVJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0
YSgpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQXR0YWNo
bWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24o
KSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVw
ZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5oCmluZGV4IGFmYTkyOWNmMDkzZDIyZWM3NmFkODZmZGEwM2I1
MDFiYmZkMjlkYzMuLjUxNTEyMmJkMWQyNDJkNDJlNzdmZTYwNzIxYTU5MzYxODZkMTI4YTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtMzgsNyAr
MzgsOCBAQCBPQkpDX0NMQVNTIE5TRmlsZVdyYXBwZXI7CiBPQkpDX0NMQVNTIE5TU3RyaW5nOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC04MiwxNCArODMsMTQgQEAgcHVibGljOgogCiAgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3Q7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBlbmNs
b3NpbmdJbWFnZURhdGEoKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3Q7CiAgICAgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gZmlsZVNpemVGb3JEaXNwbGF5KCkgY29uc3Q7CiAKICAgICB2b2lkIHNldEhh
c0VuY2xvc2luZ0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNFbmNsb3NpbmdJ
bWFnZSA9IGhhc0VuY2xvc2luZ0ltYWdlOyB9CiAgICAgYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSgp
IGNvbnN0IHsgcmV0dXJuIG1faGFzRW5jbG9zaW5nSW1hZ2U7IH0KIAotICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0
OwotICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOworICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVk
UmVwcmVzZW50YXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVw
cmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXR0
YWNobWVudChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJv
eHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVu
dFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDNjNzliNDE5MmYxOWFhMWMxYzBjNmM0MWUxMTdhNjdk
M2RlZTkzYjcuLjdiOGRmNDZhYzkwNDE3MDZmOGM3OWQxMzUwNDU5OGI4NmM1YjExNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlz
dFN0b3JlLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNv
bnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxiCiB7
CiAgICAgZGF0YS5hcHBseShmdW5jdGlvbik7CiB9Ci10ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShj
b25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bh
bjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKK3RlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNv
bnN0IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9u
PGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKIHsKICAgICBmdW5jdGlvbih7
IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKaW5kZXggODgyMDRmMDAx
MzY3ODYwNDVhNWIzMmE3M2M2NzhhMGJhODUwNjgxYy4uOGRiNzAzOGMxYzkwMTZkYWRmYmY0YjVl
YTA5OThjNDg3OTFmNTcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNl
IFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25D
bGllbnQuaAppbmRleCA1NjIzNDAxNDU5ZGE1ZmUzMGY0OTFhNDFmYjM0N2E2NzU3MjAyYzQwLi4x
MTFmMDkyNjNmODIyMzgyOWE1YWQyNjQ0MzRiYTQyMGYxOThkZDFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgc3RydWN0IENvbnRlbnRSdWxlTGlzdFJlc3VsdHM7CiBjbGFzcyBSZXNvdXJjZUVycm9y
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgU2Vj
dXJpdHlPcmlnaW5EYXRhOwogfQogCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogCiAjaWYg
VVNFKFFVSUNLX0xPT0spCiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBX
VEY6OlN0cmluZyYgdXRpKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikg
eyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSB7IH0KICNl
bmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBSZWY8TmF2aWdhdGlvbkFjdGlvbj4mJiwgUmVmPFdlYktp
dDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBPYmplY3QqKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50
Q29jb2EubW0KaW5kZXggY2Y0NjIxNmNhMjVhOWVkZjgyZTMxOWEzMzAzMDc5MWU4ZDRlMTUzYy4u
ODRlZDJjYjlhNzQ0MjRhMzQzYWRiMTIyNjc4NDljNzRjZWM3NTNkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1t
CkBAIC0xMzcsNyArMTM3LDcgQEAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gQXR0YWNobWVudDo6
ZmlsZVNpemVGb3JEaXNwbGF5KCkgY29uc3QKICAgICByZXR1cm4gW2ZpbGVXcmFwcGVyIHJlZ3Vs
YXJGaWxlQ29udGVudHNdLmxlbmd0aDsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKK1JlZlB0cjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEo
KSBjb25zdAogewogICAgIGlmICghbV9oYXNFbmNsb3NpbmdJbWFnZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0xNTEsNyArMTUxLDcgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIHJldHVybiBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YSk7CiB9CiAKIGJvb2wgQXR0YWNobWVudDo6aXNFbXB0eSgpIGNv
bnN0CkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBBdHRhY2htZW50Ojppc0VtcHR5KCkgY29uc3QK
ICAgICByZXR1cm4gIW1fZmlsZVdyYXBwZXIgJiYgIW1fZmlsZVdyYXBwZXJHZW5lcmF0b3I7CiB9
CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkg
Y29uc3QKIHsKICAgICBhdXRvIGZpbGVXcmFwcGVyID0gdGhpcy0+ZmlsZVdyYXBwZXIoKTsKIApA
QCAtMTcwLDEwICsxNzAsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNo
bWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKICAgICBpZiAoIXNl
cmlhbGl6ZWREYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CisgICAgcmV0dXJuIFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CiB9
CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29u
c3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9t
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRl
bnRUeXBlKQogewogICAgIGlmICghbV93ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVUYXNrLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lVGFzay5tbQpp
bmRleCAzYTA2MWIyNDA3ZGUxZTU5NzkwNGY5OGQ2OTQwY2E5MGFlNjZjNWIyLi40NWE5NmZlMmMx
NmJkMTA5MTQ2NDQxNDYxMzdkZDFiNmE3ZjU4NGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVUYXNrLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZVRhc2subW0KQEAgLTEyMyw3ICsxMjMs
NyBAQCAtICh2b2lkKWRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNl
CiAtICh2b2lkKWRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRhCiB7CiAgICAgYXV0byBmdW5j
dGlvbiA9IFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBzZWxmLCBwcm90ZWN0ZWRE
YXRhID0gcmV0YWluUHRyKGRhdGEpLCBkYXRhXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgcmV0dXJu
IF91cmxTY2hlbWVUYXNrLT5kaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhKSk7CisgICAgICAgIHJldHVybiBfdXJsU2NoZW1lVGFzay0+ZGlkUmVjZWl2ZURh
dGEoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpKTsKICAgICB9
OwogCiAgICAgYXV0byByZXN1bHQgPSBnZXRFeGNlcHRpb25UeXBlRnJvbU1haW5SdW5Mb29wKFdU
Rk1vdmUoZnVuY3Rpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCmluZGV4IGJhZDQ3YzA3NmVjZGM1YThmZjA5MGY2NzExNzgxNWM3ZWM5ZDY0
NDUuLjZmYTQxZjM0NGNlNjliMmM2YzgyMTI5YTYwMTM4YTFiN2FkYTYzYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTU5NSw3ICsx
NTk1LDcgQEAgLSAodm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhp
Z2hsaWdodCYpaGlnaGxpZ2h0CiAgICAgaWYgKGhpZ2hsaWdodC50ZXh0KQogICAgICAgICB0ZXh0
ID0gaGlnaGxpZ2h0LnRleHQudmFsdWUoKTsKIAotICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9w
dE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQu
aGlnaGxpZ2h0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7Cisg
ICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGlu
aXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAogICAgIGlmIChbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzdG9yZUFwcEhpZ2hs
aWdodDppbk5ld0dyb3VwOnJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAgICAgICAgIFtkZWxl
Z2F0ZSBfd2ViVmlldzpzZWxmIHN0b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0LmdldCgpIGlu
TmV3R3JvdXA6aGlnaGxpZ2h0LmlzTmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBG
b3JIaWdobGlnaHQ6OlllcyByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdodC5yZXF1ZXN0
T3JpZ2luYXRlZEluQXBwID09IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5B
cHA6Olllc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9J
Y29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRh
dGFiYXNlLmNwcAppbmRleCAxOTk2MzAzMjhhNTg3YmUxMTNlYmU1MjM3YTBlZjhhZmZmNzNlM2U1
Li5kOTQ3MmM3ZjVkNDE3NWQ3ZTJjNDI1ZWRkNDI3NjcyMTMzMTI3MGRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKQEAgLTU3OSw3
ICs1NzksNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0
cmluZyYgcGFnZVVSTCwgQWxsb3dEYXRhYmFzZVdyaXRlCiAgICAgICAgICAgICAgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX2xvYWRlZEljb25zLnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxQbGF0
Zm9ybUltYWdlUHRyLCBNb25vdG9uaWNUaW1lPihudWxscHRyLCBNb25vdG9uaWNUaW1lOjpub3co
KSkpOwogICAgICAgICAgICAgICAgIGlmICghaWNvbkRhdGEuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGF1dG8gaW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChpbWFnZS0+c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGljb25EYXRhKSksIHRydWUpIDwgRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGUp
CisgICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZS0+c2V0RGF0YShDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShpY29uRGF0YSkpLCB0cnVlKSA8IEVuY29kZWREYXRhU3Rh
dHVzOjpTaXplQXZhaWxhYmxlKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICAgICAgICAgICAgICAgICAgYXV0byBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwpAQCAtNjE5LDcgKzYxOSw3IEBAIHZvaWQgSWNvbkRh
dGFiYXNlOjpzZXRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IHVp
bnQ4X3QqIGljb25ECiAgICAgICAgICAgICBpZiAoaWNvbkRhdGFTaXplKSB7CiAgICAgICAgICAg
ICAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZTsKICAgICAgICAgICAgICAgICBh
dXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwotICAgICAgICAgICAgICAgIGlmIChp
bWFnZS0+c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShpY29uRGF0YSwgaWNvbkRhdGFTaXpl
KSwgdHJ1ZSkgPj0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGUgJiYgKG5hdGl2ZUlt
YWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpKQorICAgICAgICAgICAg
ICAgIGlmIChpbWFnZS0+c2V0RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaWNv
bkRhdGEsIGljb25EYXRhU2l6ZSksIHRydWUpID49IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZh
aWxhYmxlICYmIChuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpKSkKICAgICAgICAgICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5maXJz
dCA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CiAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAK
aW5kZXggZDM3NDI1M2Q3N2Q3YWJmM2MzM2JmMTQyNjZlYjc2ZTY4YmU3YzRiOC4uMjhmMjk2ODEz
YThiNDcwZjM0N2Y0NWVjYmU5M2E4YzY1ODgxOTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAK
QEAgLTI0Nyw3ICsyNDcsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0UmVh
ZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luYwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgcHJpdi0+dGFzay0+ZGlkUmVjZWl2ZURhdGEoU2hhcmVkQnVmZmVy
OjpjcmVhdGUocHJpdi0+cmVhZEJ1ZmZlciwgYnl0ZXNSZWFkKSk7CisgICAgcHJpdi0+dGFzay0+
ZGlkUmVjZWl2ZURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHByaXYtPnJlYWRC
dWZmZXIsIGJ5dGVzUmVhZCkpOwogICAgIHByaXYtPmJ5dGVzUmVhZCArPSBieXRlc1JlYWQ7CiAg
ICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9hc3luYyhpbnB1dFN0cmVhbSwgcHJpdi0+cmVhZEJ1ZmZl
ciwgZ1JlYWRCdWZmZXJTaXplLCBSdW5Mb29wU291cmNlUHJpb3JpdHk6OkFzeW5jSU9OZXR3b3Jr
LCBwcml2LT5jYW5jZWxsYWJsZS5nZXQoKSwKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHQXN5
bmNSZWFkeUNhbGxiYWNrPih3ZWJraXRVUklTY2hlbWVSZXF1ZXN0UmVhZENhbGxiYWNrKSwgZ19v
YmplY3RfcmVmKHJlcXVlc3QuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKaW5kZXggZjVhZjA5MmJiMjI1ODIwNTk2Y2Iw
MjUzMGQwZGIwYjc2OTQ0MDMyOS4uNmI3NTZhYTQxN2I1MWVkZDdmZDNmZmJkZGYzYzIyZTQ0NTMx
OTI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFy
Z2V0R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFy
Z2V0R3RrMy5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIERyb3BUYXJnZXQ6OmRhdGFSZWNl
aXZlZChJbnRQb2ludCYmIHBvc2l0aW9uLCBHdGtTZWxlY3Rpb25EYXRhKiBkYXRhLCB1bnNpZwog
ICAgICAgICBpbnQgbGVuZ3RoOwogICAgICAgICBjb25zdCBhdXRvKiBjdXN0b21EYXRhID0gZ3Rr
X3NlbGVjdGlvbl9kYXRhX2dldF9kYXRhX3dpdGhfbGVuZ3RoKGRhdGEsICZsZW5ndGgpOwogICAg
ICAgICBpZiAobGVuZ3RoID4gMCkKLSAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3Vz
dG9tRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGxlbmd0aCkpKTsKKyAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9tRGF0
YShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihsZW5ndGgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwCmluZGV4
IGFiYmFjYTI5Yzc0MTExZGNjMDkzNTczOTQ5M2I5M2M3NDQ1MjUwZDguLmZhMmRlZmJiMWM2MmM5
MmVkZTBhNzkyNWRkNTBlMzIyOGNlM2Q2MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9p
ZCBEcm9wVGFyZ2V0OjphY2NlcHQoR2RrRHJvcCogZHJvcCwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpJbnRQb2ludD4gcG9zaXRpb24KICAgICAgICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNl
dENhblNtYXJ0UmVwbGFjZSh0cnVlKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG1pbWVUeXBlID09
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpIHsKICAgICAgICAgICAgICAgICBpZiAo
Z19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkKLSAgICAgICAgICAgICAgICAgICAgbV9zZWxl
Y3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkp
KTsKKyAgICAgICAgICAgICAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIGRpZExvYWREYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCmluZGV4IGFjNGEwZjQzNzAxNTJlZDU3MmI1MDkx
ZGZhNTFiYWViYWI4N2Y0ZTkuLmM4MDI5YzE0MGE2ZGQxNGIxOTY0OTIyNWI4NzgzMGVlYzEzNDAw
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShRVUlDS19MT09LKQog
ICAgICAgICB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUo
Y29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSBvdmVy
cmlkZTsKLSAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICAgICAg
dm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbQppbmRleCAzODU1ODgyYzg3ZGM5ZWQzMWMxZWYwYmFiNjE2YjFlNjQ1OTQ0
ZWVmLi44ZDNhODU2NDYyZWFlZjc0MWQ4YzI5ZTI1OTJmZDU3MzY2ZjU5OWM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0xMjIw
LDcgKzEyMjAsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlk
U3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcgogICAgIFtzdGF0aWNfY2FzdDxp
ZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgp
KSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZFN0YXJ0TG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVXaXRoRmlsZU5hbWU6ZmlsZU5hbWUgdXRpOnV0aV07
CiB9CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmln
YXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkYKICAg
ICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW3N0YXRp
Y19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdh
dGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNo
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLmNyZWF0ZU5TRGF0YSgp
LmdldCgpXTsKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0
ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUt
Pm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
cm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1By
b3h5Q29jb2EubW0KaW5kZXggODAyZmZhYTZkNmVkYmVhMmU5NzI3NzRlMjY5NjViMmRiYjJhNzM1
ZS4uM2VhMjE1NjAzNzg5ZTFiMGIyNGU1YjU1OTlkMzc1MTk3ZjU5NTJiYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0K
QEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZEF1ZGlvQ29tcG9u
ZW50UmVnaXN0cmF0aW9ucygpCiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25EYXRhID0gV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7CisgICAgICAg
ICAgICBhdXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7CiAgICAgICAgICAgICB3ZWFrVGhpcy0+
c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0
aW9ucyh7IHJlZ2lzdHJhdGlvbkRhdGEgfSksIDApOwogICAgICAgICB9KTsKICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCmluZGV4IDNmNmRkMWYy
NDJlN2ExMTVlY2Y3OTgzOTBmMzRiNjM1YzZlOGQ2ZjkuLmY1ODkxMjQxNzAyZGFhNDIwY2M0ZTZl
MjQ2MjhhMWNkZTg5MDdkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwuaApAQCAtNTA2LDcgKzUwNiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnRE
cmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUmIGltYWdlKTsKICAgICB2b2lkIHNldEZpbGVBbmRVUkxUeXBlcyhOU1N0cmluZyAqZmlsZW5h
bWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwg
TlNTdHJpbmcgKnZpc2libGVVUkwsIE5TUGFzdGVib2FyZCAqKTsKLSAgICB2b2lkIHNldFByb21p
c2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0
cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5n
ICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3Ry
aW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKnBhc3RlYm9hcmRPcmlnaW4pOworICAgIHZv
aWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqLCBOU1N0cmluZyAqZmls
ZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVy
bCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKnBhc3Rl
Ym9hcmRPcmlnaW4pOwogICAgIHZvaWQgcGFzdGVib2FyZENoYW5nZWRPd25lcihOU1Bhc3RlYm9h
cmQgKik7CiAgICAgdm9pZCBwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICos
IE5TU3RyaW5nICp0eXBlKTsKICAgICBOU0FycmF5ICpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3Bw
ZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAzZDllODc3YjBjYjc1NjU0YjYz
OTE2Mzk1NTdmNTJiNjAzOTJjYWM5Li5jOTEzNWNmMTUyMDg5Mjk5NDY5YjVlNzA4Y2NiMjA5OTdl
YjNhOTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU0FycmF5ICoKICAgICAgICAg
aWYgKFtbdHlwZXMgb2JqZWN0QXRJbmRleDppXSBpc0VxdWFsVG86V2ViQ29yZTo6bGVnYWN5U3Ry
aW5nUGFzdGVib2FyZFR5cGUoKV0pCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6
bV9wYWdlLT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgZm9yVHlwZTpXZWJDb3JlOjps
ZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKKyAgICAgICAgICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2Ut
PmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKICAg
ICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOlt0eXBlcyBvYmplY3RBdEluZGV4OmldXTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTQ0NDksNyArNDQ0OSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldEZp
bGVBbmRVUkxUeXBlcyhOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5T
CiAgICAgbV9wcm9taXNlZFVSTCA9IHVybDsKIH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJv
bWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW5h
bWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwg
TlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYXJjaGl2ZUJ1ZmZl
ciwgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU1N0cmluZyAqb3JpZ2luSWRlbnRpZmllcikK
K3ZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdl
KiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmlu
ZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBhcmNoaXZlQnVmZmVyLCBOU1N0cmluZyAqcGFzdGVib2Fy
ZE5hbWUsIE5TU3RyaW5nICpvcmlnaW5JZGVudGlmaWVyKQogewogICAgIE5TUGFzdGVib2FyZCAq
cGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhOYW1lOnBhc3RlYm9hcmRO
YW1lXTsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHR5cGVzID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6V2ViQ29yZTo6bGVnYWN5RmlsZXNQ
cm9taXNlUGFzdGVib2FyZFR5cGUoKSwgbmlsXSk7CkBAIC00NDcwLDcgKzQ0NzAsNyBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1h
Z2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNldEZpbGVBbmRVUkxUeXBlcyhmaWxlbmFtZSwgZXh0
ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBwYXN0ZWJvYXJkKTsKIAogICAgIGlmIChh
cmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgogICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOm5zRGF0YS5nZXQoKSBmb3JUeXBl
OihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXTsKIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORApAQCAtNDUwMSw3ICs0NTAxLDcgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNT
dHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWw6bV9wcm9t
aXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9taXNlZEltYWdlLT5kYXRhKCkpIHsKLSAgICAgICAg
aWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5T
RGF0YSgpKQorICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2Ut
PmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBb
cGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEgKilwbGF0Zm9ybURhdGEuZ2V0KCkg
Zm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAgLTQ1NTQsNyArNDU1NCw3IEBAIE5TQXJyYXkgKldl
YlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJM
ICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKIAogICAgIGlmIChtX3By
b21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgd3JhcHBlciA9IGFkb3B0
TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0
YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm1fcHJvbWlz
ZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBlclJlYWRpbmdJbW1lZGlhdGUgZXJyb3I6bmlsXSk7
CkBAIC00NTg0LDcgKzQ1ODQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVB
Y2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN0cmluZyYgbwogICAgIGhhbmRs
ZURPTVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25z
ZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBOU0RhdGEgKmRhdGEgPSBbTlNQYXN0ZWJvYXJk
LmdlbmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE6OmNvY29hVHlwZSgpKV07Ci0gICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBv
cmlnaW5JZGVudGlmaWVyKSB7CiAgICAgICAgIG1fcGFnZS0+Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQ
YXN0ZWJvYXJkRGF0YShOU1Bhc3RlYm9hcmROYW1lR2VuZXJhbCk7CiAgICAgICAgIGNvbXBsZXRp
b24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6R3JhbnRlZEZvckdlc3R1cmUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1v
dGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCmluZGV4
IDQ2ZjVlMjU1OGZiZGYwZmFkNjA3NWRmNDdmNTQ4ODU3MDAzYzVkM2IuLjUxMzQ1MDg4YWM1NWVl
ZjA3MTIxODQ5MjFjOGNjZjEzYTkxY2Q5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUlu
c3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lkIFJlbW90
ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6cGxhdGZvcm1TdGFydFRhc2soV2ViUGFnZVByb3h5
JiBwYWdlUHJveHksCiAgICAgaHRtbEJ1aWxkZXIuYXBwZW5kKCI8L2h0bWw+Iik7CiAKICAgICBh
dXRvIGh0bWwgPSBodG1sQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICBhdXRvIGRhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShodG1sLmRhdGEoKSwgaHRtbC5sZW5ndGgoKSk7CisgICAg
YXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGh0bWwuZGF0YSgpLCBo
dG1sLmxlbmd0aCgpKTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHJlcXVlc3RVUkws
ICJ0ZXh0L2h0bWwiX3MsIGh0bWwubGVuZ3RoKCksICJVVEYtOCJfcyk7CiAgICAgdGFzay5kaWRS
ZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwogICAgIHRhc2suZGlkUmVjZWl2ZURhdGEoV1RGTW92
ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
d2luL0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxl
ci5jcHAKaW5kZXggNDc0YTU4Y2RlYjA1NmI2OGVhZmUxMWMwNGVhOTAwMjQyOTAyN2I1NS4uYmFk
OGIwMjU2YTdjNzQxYTMwZWU1ZGI1OTZmOGM0OTNmNDMzZGVjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9JbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVt
ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4v
SW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLmNwcApAQCAtNTksNyArNTksNyBAQCB2
b2lkIEluc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlcjo6cGxhdGZvcm1TdGFydFRhc2so
V2ViUGFnZVByb3h5JiwgV2ViVVJMUwogICAgIGlmIChjb250ZW50VHlwZS5pc0VtcHR5KCkpCiAg
ICAgICAgIGNvbnRlbnRUeXBlID0gImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJfczsKICAgICBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHJlcXVlc3RVUkwsIGNvbnRlbnRUeXBl
LCBmaWxlLnNpemUoKSwgIlVURi04Il9zKTsKLSAgICBhdXRvIGRhdGEgPSBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZmlsZS5kYXRhKCkpLCBm
aWxlLnNpemUoKSk7CisgICAgYXV0byBkYXRhID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihmaWxlLmRhdGEoKSksIGZpbGUu
c2l6ZSgpKTsKIAogICAgIHRhc2suZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKICAgICB0
YXNrLmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCmluZGV4IGM0ODVjN2ZjMzEzZWEwODMzZmM2MDYyNjcxNjlkNjkyYTgyNDA5Mjgu
LmU1ZTc4NTU0ZDc2ZTQyNzQyZjliM2E5MTlmMTdjMzczYjZmZmY3MTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTMyOCw3ICszMjgsNyBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogI2lmIFVTRShBUFBLSVQpCi0gICAgdmlydHVhbCB2b2lkIHNldFByb21pc2VkRGF0YUZvcklt
YWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYg
ZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGFyY2hp
dmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0
cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkws
IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIs
IGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmKSA9IDA7CkBAIC00NjgsNyArNDY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBpc0ZvY3VzaW5nRWxlbWVudCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaW50ZXJw
cmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZl
bnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShj
b25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFj
a1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVt
ZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0
aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeShX
ZWJLaXQ6OlRhcElkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggYjA0NTM5ZDYwMDVkNTQzYmM2MmZiODkwNTk5NjQ2ODkzMmEzM2U5Mi4uNDY4
N2ZiMzY5MjU3ZTM2NDMxMDBkNmY5Mjc2YzhhOTYzMjgzMDZjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI1OSw3ICsyNTksNyBAQCBjbGFzcyBJbnRTaXplOwog
Y2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUnVuTG9vcE9ic2VydmVyOwogY2xhc3MgU2Vs
ZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q7CiBjbGFzcyBUZXh0SW5kaWNh
dG9yOwogY2xhc3MgVmFsaWRhdGlvbkJ1YmJsZTsKQEAgLTExNzksNyArMTE3OSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IHdpbmRvd1Rva2VuKTsKICAgICBib29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9y
UGFzdGVib2FyZCgpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICB2b2lkIG1ha2VGaXJz
dFJlc3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3Bv
bmRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3Bw
CmluZGV4IGRmNTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFkODBjMTZiZDEuLjE5OTdlYWUy
MGFjMjJjYTNhZTgwMDRjNzA0ZmEyMmRhNjA5ZTAwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC01MSw2ICs1MSw3IEBAIFdlYlVSTFNjaGVt
ZVRhc2s6OldlYlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFuZGxlciwgV2Vi
UGFnZVByb3h5JiBwCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShwYXJhbWV0ZXJzLnJlcXVlc3Qp
KQogICAgICwgbV9mcmFtZUluZm8oQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKHBhcmFt
ZXRlcnMuZnJhbWVJbmZvKSwgJnBhZ2UpKQogICAgICwgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShzeW5jQ29tcGxldGlvbkhhbmRsZXIpKQorICAgICwgbV9zeW5jRGF0YShtYWtlVW5p
cXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKIH0KQEAgLTE2OCw3ICsxNjksNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgLT4gRQog
ICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogfQogCi1hdXRvIFdlYlVSTFNjaGVtZVRh
c2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRp
b25UeXBlCithdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHlwZQogewogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTE4NywxMCArMTg4LDcgQEAgYXV0byBXZWJVUkxT
Y2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4g
RXhjZXB0aW9uVHkKICAgICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkg
ewotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIG1fc3luY0RhdGEtPmFwcGVu
ZChXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N5bmNEYXRh
ID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShi
dWZmZXIpKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCkBA
IC0yMTcsMTIgKzIxNSw5IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBtX2NvbXBsZXRl
ZCA9IHRydWU7CiAgICAgCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhOwotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7
IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07Ci0KKyAgICAgICAgc2l6
ZV90IHNpemUgPSBtX3N5bmNEYXRhLT5zaXplKCk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhID0geyBtX3N5bmNEYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6
ZSB9OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJy
b3IsIFdURk1vdmUoZGF0YSkpOwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9
CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tE
aWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxv
YWRlcklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2RkMGE0N2YyYzEz
MDg1MjY3Li43OTk0MmY5YjIwYTI2NjBjYTRhN2RjZDQ1MDE4ZDE2ZTQzYjY2NmY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zNSw2ICszNSw3IEBA
CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVz
cGFjZSBBUEkgewogY2xhc3MgRnJhbWVJbmZvOwpAQCAtNDMsNyArNDQsOCBAQCBjbGFzcyBGcmFt
ZUluZm87CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTg0LDcgKzg2LDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvblR5cGUgd2ls
bFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCAgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJik+JiYpOwogICAgIEV4Y2VwdGlvblR5cGUgZGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAg
IEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKTsKLSAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpOworICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZURhdGEoUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIEV4Y2VwdGlvblR5cGUg
ZGlkQ29tcGxldGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAgICAgdm9pZCBz
dG9wKCk7CkBAIC0xMTUsNyArMTE3LDcgQEAgcHJpdmF0ZToKIAogICAgIFN5bmNMb2FkQ29tcGxl
dGlvbkhhbmRsZXIgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSBtX3N5bmNSZXNwb25zZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBtX3N5bmNEYXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWls
ZGVyPiBtX3N5bmNEYXRhOwogCiAgICAgYm9vbCBtX3dhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyQ2FsbGJhY2sgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9DbGlwYm9hcmQuaAppbmRleCA3ODY2Y2RiMTc3NDYwMDdhYjBhN2ExN2M1NWI4N2M3ZjE2NGMy
YmFlLi43Mjc5Zjg0NGNjMmJiZDJiMDE3ZmUwZjA5N2RlMDE4NzBhOWE4NTIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oCkBAIC0zNiw3ICszNiw3IEBAIHR5cGVkZWYg
c3RydWN0IF9HdGtDbGlwYm9hcmQgR3RrQ2xpcGJvYXJkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NSw3ICs1NSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvcm1hdHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiYmKT4mJik7CiAgICAgdm9pZCByZWFkVGV4dChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZyYmKT4mJik7CiAgICAgdm9pZCByZWFkRmlsZVBhdGhzKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25z
dCBjaGFyKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKT4mJik7CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IGNoYXIqLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJik7CiAg
ICAgdm9pZCB3cml0ZShXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYpOwogICAgIHZvaWQgY2xlYXIo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0
azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCmlu
ZGV4IGMyYmY1MTgzYjMwZjEwZTllYjc4MTNjZGFkYTIyM2U5MTg5Yzc0NTkuLjllNWEzNGNhNzI4
ZGI5NWFkODEzMzgxOGE4NmU1NWI4OGViZDNkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKQEAgLTEyNiwyMSArMTI2LDIxIEBAIHZvaWQgQ2xp
cGJvYXJkOjpyZWFkRmlsZVBhdGhzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4mJik+JiYgY29tcGxlCiBzdHJ1Y3QgUmVhZEJ1ZmZlckFzeW5jRGF0YSB7CiAgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5j
RGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
PiYmIGhhbmRsZXIpCisgICAgZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5jRGF0YShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBo
YW5kbGVyKQogICAgICAgICA6IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikpCiAg
ICAgewogICAgIH0KIAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5kbGVyOworICAgIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9u
SGFuZGxlcjsKIH07CiAKLXZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0IGNoYXIqIGZv
cm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0
IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgZ3RrX2Ns
aXBib2FyZF9yZXF1ZXN0X2NvbnRlbnRzKG1fY2xpcGJvYXJkLCBnZGtfYXRvbV9pbnRlcm4oZm9y
bWF0LCBUUlVFKSwgW10oR3RrQ2xpcGJvYXJkKiwgR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9u
LCBncG9pbnRlciB1c2VyRGF0YSkgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVhZEJ1ZmZl
ckFzeW5jRGF0YT4gZGF0YShzdGF0aWNfY2FzdDxSZWFkQnVmZmVyQXN5bmNEYXRhKj4odXNlckRh
dGEpKTsKICAgICAgICAgaW50IGNvbnRlbnRzTGVuZ3RoOwogICAgICAgICBjb25zdCBhdXRvKiBj
b250ZW50cyA9IGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0YV93aXRoX2xlbmd0aChzZWxlY3Rp
b24sICZjb250ZW50c0xlbmd0aCk7Ci0gICAgICAgIGRhdGEtPmNvbXBsZXRpb25IYW5kbGVyKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLCBjb250ZW50c0xlbmd0aCA+IDAg
PyBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvbnRlbnRzTGVuZ3RoKSA6IDApKTsKKyAgICAgICAgZGF0
YS0+Y29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGNvbnRlbnRzLCBjb250ZW50c0xlbmd0aCA+IDAgPyBzdGF0aWNfY2FzdDxzaXplX3Q+KGNv
bnRlbnRzTGVuZ3RoKSA6IDApKTsKICAgICB9LCBuZXcgUmVhZEJ1ZmZlckFzeW5jRGF0YShXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKaW5kZXggMDdhYmI3MTMxOTg4NTNiNzg3YzYzMjRiZDQ4
MGIxZTA4OGEyYTNkMy4uMDMyODM0YjcwMjZkZmIxZWQzZGNlODA5MWU3MmE5YjI0ZjU5MzMxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcApAQCAt
MTIwLDIyICsxMjAsMjIgQEAgdm9pZCBDbGlwYm9hcmQ6OnJlYWRGaWxlUGF0aHMoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGUKIHN0cnVjdCBSZWFkQnVm
ZmVyQXN5bmNEYXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAKLSAg
ICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKKyAgICBleHBsaWNpdCBSZWFk
QnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGhhbmRsZXIpCiAgICAgICAgIDogY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShoYW5kbGVyKSkKICAgICB7CiAgICAgfQogCi0gICAgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRs
ZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5kbGVyOwogfTsKIAotdm9pZCBDbGlwYm9hcmQ6
OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBD
bGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBjb25zdCBjaGFyKiBtaW1lVHlwZXNbXSA9IHsgZm9ybWF0LCBu
dWxscHRyIH07CiAgICAgZ2RrX2NsaXBib2FyZF9yZWFkX2FzeW5jKG1fY2xpcGJvYXJkLCBtaW1l
VHlwZXMsIEdfUFJJT1JJVFlfREVGQVVMVCwgbnVsbHB0ciwgW10oR09iamVjdCogY2xpcGJvYXJk
LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlYWRCdWZmZXJBc3luY0RhdGE+IGRhdGEoc3RhdGljX2Nhc3Q8UmVhZEJ1
ZmZlckFzeW5jRGF0YSo+KHVzZXJEYXRhKSk7CiAgICAgICAgIEdSZWZQdHI8R0lucHV0U3RyZWFt
PiBpbnB1dFN0cmVhbSA9IGFkb3B0R1JlZihnZGtfY2xpcGJvYXJkX3JlYWRfZmluaXNoKEdES19D
TElQQk9BUkQoY2xpcGJvYXJkKSwgcmVzdWx0LCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgICAg
IGlmICghaW5wdXRTdHJlYW0pIHsKLSAgICAgICAgICAgIGRhdGEtPmNvbXBsZXRpb25IYW5kbGVy
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpOworICAgICAgICAgICAgZGF0YS0+Y29t
cGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE0NiwxMiArMTQ2LDEyIEBA
IHZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yCiAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFJlYWRCdWZmZXJBc3luY0RhdGE+IGRhdGEoc3RhdGljX2Nhc3Q8UmVhZEJ1ZmZlckFzeW5jRGF0
YSo+KHVzZXJEYXRhKSk7CiAgICAgICAgICAgICAgICAgZ3NzaXplIHdyaXR0ZW5CeXRlcyA9IGdf
b3V0cHV0X3N0cmVhbV9zcGxpY2VfZmluaXNoKEdfT1VUUFVUX1NUUkVBTShzdHJlYW0pLCByZXN1
bHQsIG51bGxwdHIpOwogICAgICAgICAgICAgICAgIGlmICh3cml0dGVuQnl0ZXMgPD0gMCkgewot
ICAgICAgICAgICAgICAgICAgICBkYXRhLT5jb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS0+Y29tcGxldGlv
bkhhbmRsZXIoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVmKGdfbWVtb3J5X291dHB1dF9z
dHJlYW1fc3RlYWxfYXNfYnl0ZXMoR19NRU1PUllfT1VUUFVUX1NUUkVBTShzdHJlYW0pKSk7Ci0g
ICAgICAgICAgICAgICAgZGF0YS0+Y29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUoYnl0ZXMuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBkYXRhLT5jb21wbGV0
aW9uSGFuZGxlcihXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYnl0ZXMu
Z2V0KCkpKTsKICAgICAgICAgICAgIH0sIGRhdGEucmVsZWFzZSgpKTsKICAgICB9LCBuZXcgUmVh
ZEJ1ZmZlckFzeW5jRGF0YShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA1NjA3
M2JiODM3N2IwNmJjNDE1ZDU2ZTA2NzhjMzE2ZjZjOGUyYmIzLi5lOWQyMzY5M2NkYzlhNzBlZjFk
MjE0ODA2MzFhNDVjZmU5NjdhYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMTg3LDcgKzE4Nyw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICBib29sIGludGVycHJldEtl
eUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSBv
dmVycmlkZTsKICAgICB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhdmVJ
bWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9v
bCBoYXNWaWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6
OlJvdXRlU2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
aG93RGF0YURldGVjdG9yc1VJRm9yUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlv
bkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggMzJkMWY4OWMwNThiOWI0
MGExOGU4ZjY3YmM3YmU5ZjBhMTAyNTA4Yi4uNjZhYzRjYWE4YzgzMmIzZGI1MTg5NzliMGVkYmZi
NjE2NDY0ZDAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5tbQpAQCAtMzU3LDcgKzM1Nyw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnBv
c2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0
CiAgICAgW21fY29udGVudFZpZXcgX3Bvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2U6aW5mb107
CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8U2hhcmVk
QnVmZmVyPiYmIGltYWdlQnVmZmVyKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9M
aWJyYXJ5KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyKQogewogICAg
IFJldGFpblB0cjxOU0RhdGE+IGltYWdlRGF0YSA9IGltYWdlQnVmZmVyLT5jcmVhdGVOU0RhdGEo
KTsKICAgICBVSUltYWdlRGF0YVdyaXRlVG9TYXZlZFBob3Rvc0FsYnVtKGltYWdlRGF0YS5nZXQo
KSwgbmlsLCBOVUxMLCBOVUxMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDFhODFjY2U0NDU1ZWIxYTcy
YjEwZThmMjQ3M2M2MGEyOTFlYTU4YmEuLjBjNjI1YzMwZDMwM2ZiZDk4NDliODRiNmU3YWFmYTM0
Y2Y3YzM0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMzgyMSw3ICszODIxLDcgQEAgLSAoQk9PTClj
YW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzooU0VMKWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5k
ZXIKIAogICAgICAgICBOU0FycmF5ICphbGxDdXN0b21QYXN0ZWJvYXJkRGF0YSA9IFtwYXN0ZWJv
YXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpjb2NvYVR5cGUoKSkgaW5JdGVtU2V0OmluZGljZXNdOwogICAgICAgICBmb3IgKE5TRGF0YSAq
ZGF0YSBpbiBhbGxDdXN0b21QYXN0ZWJvYXJkRGF0YSkgewotICAgICAgICAgICAgYXV0byBidWZm
ZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgICAgIGF1
dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEp
OwogICAgICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hh
cmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgPT0gZm9jdXNlZERvY3VtZW50T3JpZ2lu
KQogICAgICAgICAgICAgICAgIHJldHVybiBZRVM7CiAgICAgICAgIH0KQEAgLTY1OTksNyArNjU5
OSw3IEBAIHN0YXRpYyBCT09MIGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKFVJ
UGFzdGVib2FyZCAqcGFzdGVib2FyZCwgY29uc3QKICAgICAgICAgaWYgKCFkYXRhLmxlbmd0aCkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICBpZiAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgp
KS5vcmlnaW4oKSAhPSBvcmlnaW5JZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIE5POwog
CkBAIC03NTcwLDcgKzc1NzAsNyBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0Fj
dGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IHNoYXJlRWxlbWVudFdpdAogewogICAgIFdl
YkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgc2hhcmVEYXRhOwogICAgIE5TU3RyaW5nKiBm
aWxlTmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAucG5nIiwgKE5TU3RyaW5n
KilXRUJfVUlfU1RSSU5HKCJTaGFyZWQgSW1hZ2UiLCAiRGVmYXVsdCBuYW1lIGZvciB0aGUgZmls
ZSBjcmVhdGVkIGZvciBhIHNoYXJlZCBpbWFnZSB3aXRoIG5vIGV4cGxpY2l0IG5hbWUuIildOwot
ICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OworICAgIHNoYXJl
RGF0YS5maWxlcyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKICAgICBbc2Vs
ZiBfc2hvd1NoYXJlU2hlZXQ6c2hhcmVEYXRhIGluUmVjdDogeyBbc2VsZiBjb252ZXJ0UmVjdDpi
b3VuZGluZ1JlY3QgdG9WaWV3OnNlbGYud2ViVmlld10gfSBjb21wbGV0aW9uSGFuZGxlcjpuaWxd
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQppbmRleCBmODBjODI0OWRhNDY3Yjk0MjAzNWU0NjA2ZTg5OWJjYjY0ZWRiYzZjLi5iYTk5NWZi
OWUwNmJmOGRkYWY1NWFhMDdkYjBmMmZmYTgyZDE4MzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCBTdHJp
bmcgV2ViUGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1
cm4gU3RyaW5nKCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQ
cm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsTWFjLmgKaW5kZXggZDIyMzhmZGM5ZDE2Zjc3ZjhjM2QzMDJjYTk5NzZmZTgz
ZjFiM2YzNy4uYWI4N2MyYTdlOGMzNTdhNjViM2NmZTYwNzkzOGZkZmVjOGE2NTJiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTEw
MCw4ICsxMDAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZXhlY3V0ZVVuZG9SZWRvKFVuZG9PclJl
ZG8pIG92ZXJyaWRlOwogICAgIGJvb2wgZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoY29u
c3QgU3RyaW5nJiBzZWxlY3Rvcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdGFydERyYWcoY29uc3Qg
V2ViQ29yZTo6RHJhZ0l0ZW0mLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2Up
IG92ZXJyaWRlOwotICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0
IFN0cmluZyYgdGl0bGUsCi0gICAgICAgIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IHZpc2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRs
ZSwKKyAgICAgICAgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwg
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0
ZVNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0U2VjdXJlSW5wdXRT
dGF0ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5SW5wdXRDb250ZXh0QWJvdXREaXNjYXJk
ZWRDb21wb3NpdGlvbigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IGE0MTEyMTM1ZjJlZjE5MDE1YTUyZjFlMWIw
M2FlMzBhMWYyMjNkMmEuLmMzNjNlOTU1ZTg3OWMwZTE4NmI0MTUwOTA5MTMzNjVjMjBmZTkwNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
bW0KQEAgLTQwMCw3ICs0MDAsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzdGFydERyYWcoY29u
c3QgV2ViQ29yZTo6RHJhZ0l0ZW0mIGl0ZW0sIGNvbnN0IFNoYXJlYWJsZUJpdAogICAgIG1faW1w
bC0+c3RhcnREcmFnKGl0ZW0sIGltYWdlKTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0
UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYXJjaGl2
ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQordm9pZCBQYWdlQ2xpZW50
SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdp
bklkZW50aWZpZXIpCiB7CiAgICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsK
ICAgICBpbWFnZS0+c2V0RGF0YShXVEZNb3ZlKGltYWdlQnVmZmVyKSwgdHJ1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBlMDNlMDgw
YWVlMDgzODBiNDZmZmU4OWRkOGU2MWI2NmI1OThkYjQ2Li4yZjhmOGQzZmVhOTRjNWE0NmNmNWFh
NjEyM2IwNTg5ZjI3NThhOWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0KQEAgLTIyNyw3ICsyMjcsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5
OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAK
LVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI3Nyw3ICsy
NzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUwogICAgICAgICByZXR1cm47CiAgICAgYXV0
byBpbWFnZUJ1ZmZlciA9IHNoYXJlZE1lbW9yeUltYWdlLT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1h
Z2VIYW5kbGUuZGF0YVNpemUpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1
ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsK
ICAgICBpZiAoIWFyY2hpdmVIYW5kbGUuaGFuZGxlLmlzTnVsbCgpKSB7CiAgICAgICAgIGF1dG8g
c2hhcmVkTWVtb3J5QXJjaGl2ZSA9IFNoYXJlZE1lbW9yeTo6bWFwKGFyY2hpdmVIYW5kbGUuaGFu
ZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFz
aGFyZWRNZW1vcnlBcmNoaXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE0uY3BwCmluZGV4IGZhOTQwMjVlZDc0NzMwZDI4ZTcxNjQ2Mjg1ZjllNWJh
NjUzYjhmMTIuLmMyOGZlNjVmMGNmMTY0Mzk5ODE4YWNhMzJmOTgxY2M3NzhmMWU5MTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKQEAg
LTg0LDcgKzg0LDcgQEAgYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29u
ZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9uVHlwZSYsIGNvbnMKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLWJvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IHR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkgY29uc3QKK2Jvb2wgUmVtb3RlQ0RNOjpz
dXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjaGVjayB3aWxsIGJlIGRv
bmUsIGxhdGVyLCBpbnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlcXVlc3RM
aWNlbnNlKCkuCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBSZW1v
dGVDRE06OmxvYWRBbmRJbml0aWFsaXplKCkKICAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpMb2Fk
QW5kSW5pdGlhbGl6ZSgpLCBtX2lkZW50aWZpZXIpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25z
ZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBSZW1vdGVDRE06OnNhbml0
aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0
CiB7CiAgICAgLy8gVGhpcyBjaGVjayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBpbnNpZGUgUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUxpY2Vuc2UoKS4KICAgICByZXR1cm4gcmVz
cG9uc2UuY29weSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNLmgKaW5kZXggMGFkZGY4MzM1M2I2ZWExYjJlOGIwMmM2YjdlZTNkYWY0NjhjZDM4My4u
OGM0NTRlYjgzZTU5OTRhOGU0ZDU5MmQ1MWRmOTFmZjliNTIzY2JlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCkBAIC00OCwxMyArNDgsMTMg
QEAgcHJpdmF0ZToKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3Jl
OjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBw
b3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25z
dCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihj
b25zdCBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZp
bmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3Qg
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNv
cmU6OkNETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25z
dCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RN
UmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQg
cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFs
OwogICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENs
ZWFyYWJsZShjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3Qg
ZmluYWw7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlPiBjcmVhdGVJbnN0YW5jZSgp
IGZpbmFsOwogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2Fu
aXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKICAgICBWZWN0b3I8
QXRvbVN0cmluZz4gc3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fY29uZmlndXJhdGlvbi5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3Bw
CmluZGV4IGI1ZGVhMjFlOTk1YTczN2YwMzZmNjQ1MzhjMWZiM2VjYjVlNmJiNTUuLmExM2U1MTQ2
MGY2YmI5ZjgwZWYzZDFhODQyZWZjMGI5ZjQ0NTkwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCkBAIC03
OCw3ICs3OCw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmln
dXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1DCiAgICAgbV9mYWN0b3J5LT5ncHVQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OkluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihj
b25maWd1cmF0aW9uLCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBwZXJzaXN0ZW50U3RhdGUpLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0
YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBj
ZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUlu
c3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAg
ICAgaWYgKCFtX2ZhY3RvcnkpIHsKICAgICAgICAgY2FsbGJhY2soRmFpbGVkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2Uu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2Uu
aAppbmRleCAxMDZiYTNiMTE2MWM4ZGYwOWQ3MWRmZTY3OWJhMzNkNDIzMDc5ZTk2Li4yYzc4NTFl
NDQwYjA4YTUyYTJhZTcwZGE3ZTQxODg4MmUzYzYxNDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCkBAIC01NCw3
ICs1NCw3IEBAIHByaXZhdGU6CiAKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRp
b25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpSZW1vdGU7
IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBB
bGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQg
c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vz
c0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5h
bDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAg
ICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZp
Z3VyYXRpb24ua2V5U3lzdGVtOyB9CiAgICAgUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3Bw
CmluZGV4IGFmMGJhZDRjOTBkOGRkNTEzNzc0YWVmNmExNWI3N2JhODlmYzUwNjQuLmI2YWIxZTQ2
NDc0MmVhMjAyYTg5MWVhMDg1YTg1YmQ1ZWNiMzc2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbi5jcHAKQEAgLTQ5LDIzICs0OSwyMyBAQCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZgogewog
fQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5z
ZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFj
dG9yeSkgewotICAgICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0
cmluZygpLCBmYWxzZSwgRmFpbGVkKTsKKyAgICAgICAgY2FsbGJhY2soQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBGYWlsZWQpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpSZXF1ZXN0TGljZW5zZSh0eXBlLCBpbml0RGF0YVR5cGUsIFdURk1v
dmUoaW5pdERhdGEpKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkmJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVk
c0luZGl2aWR1YWxpemF0aW9uLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgIGlm
ICghbWVzc2FnZS5idWZmZXIoKSkgewotICAgICAgICAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxlZCk7CisgICAgICAgICAgICBj
YWxsYmFjayhDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwg
ZmFsc2UsIEZhaWxlZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
Y2FsbGJhY2sobWVzc2FnZS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBzZXNzaW9uSWQsIG5l
ZWRzSW5kaXZpZHVhbGl6YXRpb24sIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiAg
ICAgfSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246
OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNh
bGxiYWNrKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpu
dWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKQEAgLTEwOSw3ICsx
MDksNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2VucwogICAgIH0KIAogICAgIG1fZmFjdG9yeS0+
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVtb3ZlU2Vzc2lvbkRhdGEo
c2Vzc2lvbklkLCB0eXBlKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChLZXlTdGF0
dXNWZWN0b3ImJiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNv
cHk+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgewotICAgICAgICBzdGQ6Om9w
dGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiByZWFsTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNz
YWdlID0gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAobWVzc2FnZSAmJiBtZXNzYWdlLnZhbHVl
KCkuYnVmZmVyKCkpCiAgICAgICAgICAgICByZWFsTWVzc2FnZSA9IG1lc3NhZ2UudmFsdWUoKS5i
dWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5n
ZWRLZXlzKSwgV1RGTW92ZShyZWFsTWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZh
aWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaAppbmRleCA0ZmZlNGNhY2VjY2RlNDNkNWNi
MTFlMjM2Y2EwNDVhY2RhODNhN2ViLi40ZTRjZDJjMDA1YzZiMDA2NWY5Y2RiMTg4YzRiY2UwYjVi
ZmE2NjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTU5LDggKzU5LDggQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uQ2xpZW50PiYmIGNsaWVudCkgZmluYWwgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50
KTsgfQogICAgIHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0cjsg
fQotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGlj
ZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
cmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxv
YWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9z
ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkYuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkYuY3BwCmluZGV4IDlhMjE5YTU0NGU1NTM4M2Y1NGU3MWRhYmQzNTRjYzQ0
MGE0MTQyYjkuLjYyOTI2Nzk4YzVjMTEzMjRhMzFhYTUwY2RhN2VkMWZiZjc0ZmU3MDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRi5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIFJlbW90ZUltYWdl
RGVjb2RlckFWRjo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250
ZW50U2l6ZQogCiAvLyBJZiBhbGxEYXRhUmVjZWl2ZWQgaXMgdHJ1ZSwgdGhlIGNhbGxlciBleHBl
Y3RzIGVuY29kZWREYXRhU3RhdHVzKCkgdG8gYmUgPj0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVB
dmFpbGFibGUKIC8vIGFmdGVyIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAoaW4gdGhlIHNhbWUgcnVu
IGxvb3ApLgotdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldERhdGEoU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
OjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQogewogICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkYuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGLmgKaW5kZXggZTVjZmU5NGVjZDNhOWMwNjAwZmMwMDMyMGZmNDMw
NjFjOTBlZDY5Yi4uNDBkMzczNGY3YTMyMmU4YmFjYjlkMWMwZGVhNzA3OWUyYWQxN2VhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRi5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFJlbW90ZUltYWdlRGVj
b2RlckFWRiBmaW5hbAogICAgIDogcHVibGljIFdlYkNvcmU6OkltYWdlRGVjb2RlcgogICAgICwg
cHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGUoUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGTWFuYWdlciYgbWFuYWdlciwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRl
bnRpZmllciYgaWRlbnRpZmllciwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRl
KFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXImIG1hbmFnZXIsIGNvbnN0IFdlYkNvcmU6Oklt
YWdlRGVjb2RlcklkZW50aWZpZXImIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGKG1hbmFnZXIsIGlkZW50aWZpZXIs
IG1pbWVUeXBlKSk7CiAgICAgfQpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29y
ZTo6UGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFdlYkNv
cmU6OlN1YnNhbXBsaW5nTGV2ZWwgPSBXZWJDb3JlOjpTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
LCBjb25zdCBXZWJDb3JlOjpEZWNvZGluZ09wdGlvbnMmID0gV2ViQ29yZTo6RGVjb2RpbmdPcHRp
b25zKFdlYkNvcmU6OkRlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZv
aWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwotICAgIHZvaWQgc2V0
RGF0YShXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7
CisgICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29s
IGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNsZWFy
RnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkZNYW5hZ2VyLmNwcAppbmRleCA0MWQ1Mzg4MDIzZDM5MTQ5NTIxODM1ZjY4OGRlNGQ0OGY2NWQ3
NjdlLi4wODJiMzM2NmM4YmM3MTMwZDc1ZDU2OThhN2Q3OWU2ODkyYWQ4ZjczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFW
Rk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWZQdHI8UmVtb3RlSW1h
Z2VEZWNvZGVyQVZGPiBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURl
Y29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCitSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBSZW1vdGVJbWFn
ZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQogewogICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4gaW1hZ2VEZWNv
ZGVySWRlbnRpZmllcjsKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJl
ZmVyZW5jZSB7IGRhdGEgfTsKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVj
b2RlckFWRk1hbmFnZXI6OnNldFVzZUdQVVByb2Nlc3MoYm9vbCB1c2VHUFVQcm9jZXNzKQogICAg
IEltYWdlRGVjb2Rlcjo6aW5zdGFsbEZhY3RvcnkoewogICAgICAgICBSZW1vdGVJbWFnZURlY29k
ZXJBVkY6OnN1cHBvcnRzTWVkaWFUeXBlLAogICAgICAgICBSZW1vdGVJbWFnZURlY29kZXJBVkY6
OmNhbkRlY29kZVR5cGUsCi0gICAgICAgIFt0aGlzXShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikgeworICAgICAgICBbdGhp
c10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKSB7CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW1hZ2VE
ZWNvZGVyKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pOwogICAgICAgICB9CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdl
ci5oCmluZGV4IGMyMzc4MmI2NTA0ZWM3OWJlNDZlMTI2ZjRlNTkxYjNmZjdmNmRiYTguLjM2MThh
ZmQxMjA5OGI1NTc2YjRkZDRmZmJmM2MwNmZiYTg0MmE3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGTWFuYWdlci5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBHUFVQcm9jZXNz
Q29ubmVjdGlvbiYgZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAogcHJpdmF0ZToKLSAg
ICBSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGVJbWFnZURlY29kZXIoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpB
bHBoYU9wdGlvbiwgV2ViQ29yZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIFJl
ZlB0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZUltYWdlRGVjb2RlcihXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJD
b3JlOjpBbHBoYU9wdGlvbiwgV2ViQ29yZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwog
CiAgICAgLy8gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudC4KICAgICB2b2lkIGdwdVByb2Nl
c3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVNlc3Npb24uY3BwCmluZGV4IGE1M2YxNTdiZWViZDdkYjJlODFiMmY1ZWNiZDYzODE4
NjJhNjgwOGEuLmYxZDFjMTBhNmU1YzNhYjJiODEzMjNjMDRkYWMwNTcyODZlOWZkNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1TZXNzaW9uLmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5IGNvbnZlcnRUb1NoYXJlZEJ1ZmZlckNvcHkoVCBhcnJheSkKIHsKICAgICBp
ZiAoIWFycmF5KQogICAgICAgICByZXR1cm4geyB9OwotICAgIHJldHVybiB7IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpIH07CisgICAgcmV0
dXJuIHsgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFycmF5LT5kYXRhKCksIGFycmF5
LT5ieXRlTGVuZ3RoKCkpIH07CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uPiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5PiBmYWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYm
IGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA5NjZmYzkz
Yjc3YWZhYTNlNjIwOGQ3YWJhNWFlZDJjN2E5NGM3NGIyLi4wMDVhMzdjYzI2ZWM0YzA5MDFiZjRm
MzcxMjIzODY1ZGUyZDE2NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAg
LTc4LDcgKzc4LDcgQEAgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6flNvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGUoKQogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZl
ck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50
aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6
YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZTo6YXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAg
ICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDM2MDE3NWJmYmU5ZDFhZjgzZWQ1NzkxMzczYjc3NWVl
NzUwYWM3Y2MuLmVhNWZhM2VjMzZjMmI4NTllZTU3OGNjZDBlMDM0OGM3M2NiODZkNjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAKICAg
ICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcwogICAgIHZvaWQgc2V0QWN0aXZlKGJv
b2wpIGZpbmFsOwotICAgIHZvaWQgYXBwZW5kKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
IGZpbmFsOworICAgIHZvaWQgYXBwZW5kKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNldFBh
cnNlclN0YXRlKCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRp
YVJlY29yZGVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKaW5kZXggMTFiNGE4NmU0ODUyZjZjMjA2MWZhM2Zj
OWFmMjlmODg5OWY0ZWI5Zi4uMzNjZTVmOGQ0ZjYxNmMxMDcxMjA4MzhkYWM5YTQxMzVmN2NiNTI4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFS
ZWNvcmRlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcApAQCAtMTY1LDEyICsxNjUsMTIgQEAgdm9pZCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZTo6c3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KiBzdG9yYWdl
LCBjb25zdCBXZWJDb3JlOjoKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90
ZU1lZGlhUmVjb3JkZXI6OkF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkIHsgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGRhdGFTaXplIH0sIGZvcm1hdCwgZnJhbWVD
b3VudCB9LCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpm
ZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
bV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVj
b3JkZXI6OkZldGNoRGF0YSB7IH0sIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBtaW1lVHlwZSA9IG1pbWVUeXBlKCldKGF1dG8mJiBkYXRhLCBkb3VibGUg
dGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7
CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAg
IGlmIChkYXRhLnNpemUoKSkKLSAgICAgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgICAgICBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpLCBtaW1lVHlwZSwgdGltZUNv
ZGUpOwogICAgIH0sIG1faWRlbnRpZmllcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAppbmRleCAz
MDNhNTRmNzZmMTg1ZTk2NDU0ZWY5ZjViYjQ2MWYyOGUxMjY3ODZkLi41NzZmZDFjNmU5N2MwY2Fk
OGNiZmVjOTRlM2JkMzYzMzA3NmU0NGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKQEAgLTU3LDcg
KzU3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAvLyBXZWJDb3JlOjpNZWRpYVJlY29yZGVy
UHJpdmF0ZQogICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6TWVkaWFTYW1w
bGUmLCBXZWJDb3JlOjpWaWRlb1NhbXBsZU1ldGFkYXRhKSBmaW5hbDsKLSAgICB2b2lkIGZldGNo
RGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+JiYpIGZpbmFsOworICAgIHZvaWQg
ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+JiYpIGZp
bmFsOwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
IGZpbmFsOwogICAgIHZvaWQgc3RhcnRSZWNvcmRpbmcoU3RhcnRSZWNvcmRpbmdDYWxsYmFjayYm
KSBmaW5hbDsKICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBXVEY6Ok1lZGlh
VGltZSYsIGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgV2ViQ29yZTo6
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxl
RWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKaW5kZXggMDY3M2Y3NGRkZmI0OGU1
YmRmNDM4Y2Q5MGJlMzc5NGVlZTIwOTFiYi4uMmMxMzRlOWU3MTlmOTcyNjVjOGQwOTAzMzQ5YzFl
MmY5YzFlMmU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0
b3JDbGllbnQuaApAQCAtMzEsOSArMzEsOSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiB9CkBAIC02
Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlKFdlYktpdDo6
V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENo
YW5nZVNlbGVjdGlvbihXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJiwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmlu
Zz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JikgeyB9CisgICAgdmly
dHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJp
bmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdl
JikgeyB9CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJLaXQ6OldlYlBh
Z2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFu
Z2UmLCBib29sKSB7IHJldHVybiBmYWxzZTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCmluZGV4IGEwNjM1MjA0MzM1YjNh
YjBlNmRmYjBjNjc3NzY3ZjQyOGU4YTc3ZTIuLjE4MGIxMTExZWNmMDExMzI4MDkyNjZhMWJjZTI3
ZDI2MGU0ZmEwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBET01XaW5kb3dFeHRl
bnNpb247CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01Niw3ICs1Niw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5QYWdlTG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwogCiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkVVJMUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2UmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCopIHsgfQotICAgIHZpcnR1
YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6
U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlVSTCYsIEFQSTo6T2JqZWN0
KikgeyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViS2l0OjpXZWJQ
YWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBj
b25zdCBXVEY6OlVSTCYsIEFQSTo6T2JqZWN0KikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6Oldl
YkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJLaXQ6Oldl
YlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IGJjOGVhYjk4NzliZTgwZDg1MWIwMDFj
MjAwYzBmMTg1N2E2YzdhMjguLmRmOGQ4ODA0N2ZmNjczMTdjYjRhYmZlMzUxMzA1YTA3NWEwYzNh
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KQEAgLTYzNCw3ICs2MzQsNyBA
QCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0
aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgW21fY29udHJvbGxlci0+X2Vk
aXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlcjptX2NvbnRyb2xsZXIgd2lsbFdyaXRlUmFuZ2VUb1Bhc3RlYm9hcmQ6d3JhcHBlcihXZWJL
aXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAgfQogCi0gICAgICAgIHZv
aWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKSBmaW5hbAorICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZp
bmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMuZ2V0UGFz
dGVib2FyZERhdGFGb3JSYW5nZSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC02NDIsNyAr
NjQyLDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1
Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIGF1dG8gZGF0YUJ5
VHlwZSA9IFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2U6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAg
ICAgICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4gZGF0YUJ5VHlwZSkgewogICAgICAgICAg
ICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZSk7Ci0gICAgICAgICAgICAgICAgcGFz
dGVib2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5
cGVbdHlwZV0pKTsKKyAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKICAg
ICAgICAgICAgIH07CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlRWRpdG9yQ2xpZW50LmNwcAppbmRleCAzNTM2MDY1MjViODQ1NzY4ZTMwMTU4MzhmODkxMWRl
OGYyZTA4MDkwLi5jMzk4MTFlYWM5NGUyOTVlMzgzM2JmY2RkNmMxODJhNGEzMTAxOTliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcApAQCAtMTM1
LDcgKzEzNSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojp3aWxsV3Jp
dGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYgcGFnZSwgY29uc3QKICAgICAgICAgbV9jbGllbnQud2ls
bFdyaXRlVG9QYXN0ZWJvYXJkKHRvQVBJKCZwYWdlKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHJhbmdl
KS5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2Um
IHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFz
dGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3Rv
cjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAg
ICBpZiAobV9jbGllbnQuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkgewogICAgICAgICBXS0Fy
cmF5UmVmIHR5cGVzID0gbnVsbHB0cjsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIEluamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdl
JiBwYWdlLCBjbwogICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlLT5zdHJp
bmcoKSk7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ZW0gOiBkYXRhQXJyYXktPmVsZW1lbnRzT2ZU
eXBlPEFQSTo6RGF0YT4oKSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOworICAgICAgICAgICAgYXV0
byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwg
aXRlbS0+c2l6ZSgpKTsKICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXVEZNb3Zl
KGJ1ZmZlcikpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudC5oCmluZGV4IDMxZTEzOTZlNzBhZDYwYzE5ZDkzYzY3NWM3NjM0NmZl
MGRhNzk0OTQuLmQ5OGVlMWMxNTVkNGZiODI5MmE1OGQ5YzU4ZTg4MDA3YTEzNDA1MWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKQEAgLTY0LDcgKzY0
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5nZShXZWJQYWdlJiwgY29uc3QgU3RyaW5n
JiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihX
ZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lk
IHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9y
UmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0UGFz
dGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
IGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYpIGZpbmFsOwog
ICAgIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZy
YWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmIGRlc3RpbmF0aW9uLCBib29sIGlz
TW92ZSkgZmluYWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50LmNwcAppbmRleCA4ZDUyNGI1MjVjNmU3YTBjYzZiZGU1ZTgwYTQ3YzE3MWUzNDE0Njhj
Li5mODRjMGE3OTI0YjhjYzFlNTg2ZmE4ODcyNWI5Y2M1YzI0MTU2OWFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcApAQCAtNjIsMTggKzYyLDE5
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZFVSTFJlcXVl
c3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzCiBzdGF0aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVm
ZmVyKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIC8vIEJhbGFuY2Vk
IGJ5IHJlZigpIGluIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRh
UmVxdWVzdCgpLgotICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9p
ZCo+KGRhdGEpKS0+ZGVyZWYoKTsKKyAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOwogfQogCi12b2lkIEluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBw
YWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciogc2hhcmVk
QnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFt
ZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQordm9p
ZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2Vi
UGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0
cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVj
dCogdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC53aWxsTG9hZERhdGFSZXF1ZXN0KQog
ICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8QVBJOjpEYXRhPiBkYXRhOwogICAgIGlmIChz
aGFyZWRCdWZmZXIpIHsKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5yZWYoKTsKLSAgICAgICAgZGF0
YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIq
KXNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJl
ZEJ1ZmZlciwgc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0g
c2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBjb250aWd1b3VzQnVmZmVy
LT5yZWYoKTsKKyAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmco
KGNvbnN0IHVuc2lnbmVkIGNoYXIqKWNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgY29udGlndW91
c0J1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBjb250aWd1b3VzQnVmZmVyLnB0
cigpKTsKICAgICB9CiAKICAgICBtX2NsaWVudC53aWxsTG9hZERhdGFSZXF1ZXN0KHRvQVBJKCZw
YWdlKSwgdG9BUEkocmVxdWVzdCksIHRvQVBJKGRhdGEuZ2V0KCkpLCB0b0FQSShNSU1FVHlwZS5p
bXBsKCkpLCB0b0FQSShlbmNvZGluZ05hbWUuaW1wbCgpKSwgdG9VUkxSZWYodW5yZWFjaGFibGVV
Ukwuc3RyaW5nKCkuaW1wbCgpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCmlu
ZGV4IDM2YmQ5ODBiMmZhYTFhZjQ1YWMzMTA2ZWIwMWU5ZjM3NmJhMTNhY2YuLjg2M2JkYWI2Mjg0
Y2EzYWFkMmY5ZDVmZmY1ZmQ2OGVhYjhiMmI3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIGV4
cGxpY2l0IEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudChjb25zdCBXS0J1bmRsZVBhZ2VM
b2FkZXJDbGllbnRCYXNlKik7CiAKICAgICB2b2lkIHdpbGxMb2FkVVJMUmVxdWVzdChXZWJQYWdl
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgQVBJOjpPYmplY3QqKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3Ry
aW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBVUkwmLCBBUEk6Ok9iamVjdCopIG92ZXJy
aWRlOworICAgIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNv
bnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBVUkwmLCBBUEk6Ok9i
amVjdCopIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKFdlYlBhZ2UmLCBXZWJGcmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKFdlYlBhZ2UmLCBXZWJGcmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxp
bmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9k
ZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCmluZGV4IGU1MjRkOGUx
YjAxN2FhOGU1ZTAzYjg5MmQ5MmI3NTg5NGM1OGYzNzQuLmE3ODRlYzM4OGIyMjUyNGNjMGRhNjMy
NzhlNWU3NTkxMzdkY2Y2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
b2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXll
ck1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQ
bGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGlm
IChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIEZpbGVTeXN0ZW06OndyaXRlVG9G
aWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCkt
PnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2Uu
ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6
ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAgbV9maWxlUGF0aCA9
IGZpbGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNDdiOTFjZTg3ZDM2
MTNlMzVkNTc5NDA3OTdhZGYwYjFkZDAwYTQ4Yi4uNzkzM2RhODg4ODczN2RlOTJiMTdiMmYyN2Fl
NDAxMTA1M2FkYmIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yNzUsOSArMjc1
LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgIGlmICghcmVzb3VyY2UpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUu
dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKICAgICBpZiAoIWJ1
ZmZlcikgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVy
IGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMiLCByZXF1
ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBjcmVhdGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291
cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IDI1OTQ0OTQyMzg1NWZlZDNhYWFhYjQxNDgxOWY4OTUxYTNiOGI3ZmYuLjYwNDY5M2ViZGEyZWMw
Y2ZkNDc0NTI3MmU1MDJlMmQyZGRkNTIyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE1NSw3ICsxNTUs
NyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJhbWUo
KSwgcmVzcG9uc2UpKSB7CiAgICAgICAgIGF1dG8gaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmll
ciA9IG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpOwogICAgICAgICBtX2ludGVyY2VwdENvbnRy
b2xsZXIuYmVnaW5JbnRlcmNlcHRpbmdSZXNwb25zZShpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlm
aWVyKTsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRS
ZXNwb25zZShtX2NvcmVMb2FkZXItPmZyYW1lKCksIHJlc3BvbnNlLCBpbnRlcmNlcHRlZFJlcXVl
c3RJZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGludGVy
Y2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiBpbnNwZWN0b3JSZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3ZlcnJp
ZGVEYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0
OjppbnRlcmNlcHRSZXNwb25zZShtX2NvcmVMb2FkZXItPmZyYW1lKCksIHJlc3BvbnNlLCBpbnRl
cmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIHBvbGljeURlY2lzaW9uQ29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpXShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiBpbnNwZWN0b3JSZXNwb25zZSwgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IG92ZXJyaWRlRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAo
IW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpIHsKICAgICAgICAg
ICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc3BvbnNl
OiBub3QgY29udGludWluZyBpbnRlcmNlcHQgbG9hZCBiZWNhdXNlIG5vIGNvcmVMb2FkZXIgb3Ig
bm8gSUQiKTsKICAgICAgICAgICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuY29udGludWVS
ZXNwb25zZShpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyKTsKQEAgLTE5NSw3ICsxOTUsNyBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQ
cm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNob3VsZCBub3Qgc2Vu
ZCBkYXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIAogICAgIGlmIChV
TkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9jb3JlTG9hZGVy
LT5pZGVudGlmaWVyKCkpKSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7
CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50
aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBX
VEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKG1fY29yZUxvYWRlcikKICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CkBAIC0y
OTUsMTEgKzI5NSwxMSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3Vy
Y2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZAogICAgIExPRyhOZXR3b3Jr
LCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UgZm9y
ICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAg
ICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZToiKTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFy
ZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
aGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgaWYgKCFidWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIGJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJl
c291cmNlIHNlbnQgZnJvbSB0aGUgbmV0d29yayBwcm9jZXNzLiIpOwotICAgICAgICBXRUJSRVNP
VVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiBVbmFibGUgdG8gY3Jl
YXRlIFNoYXJlZEJ1ZmZlciIpOworICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xP
RygiZGlkUmVjZWl2ZVJlc291cmNlOiBVbmFibGUgdG8gY3JlYXRlIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIiKTsKICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gbV9jb3JlTG9hZGVyLT5mcmFtZSgp
KSB7CiAgICAgICAgICAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCiAgICAgICAg
ICAgICAgICAgcGFnZS0+ZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVz
c2FnZShXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmludGVybmFsRXJyb3JLZXkoKSwg
V2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpjcmVhdGVTaGFyZWRCdWZmZXJGYWlsZWRL
ZXkoKSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggNDJkZTQ2MTQxOTc3OGI3YzQ1
MGZjYTFlYjAzN2MxY2U5N2QyZDYzMS4uYTdmNDVjODQwMWIyZmQyZjg3MGUzNjc4YzU4ZmMzMTBj
MmUxZjI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4uaApAQCAtMjA3LDcgKzIwNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcml2YXRl
QnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCkgZmluYWwgeyB9CiAgICAgYm9vbCBnZXRGb3JtVmFs
dWUoU3RyaW5nJiBmb3JtVmFsdWUpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBo
YW5kbGVTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFu
dWxhcml0eSkgZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJl
c291cmNlRGF0YSgpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCB3
aWxsRGV0YWNoUmVuZGVyZXIoKSBmaW5hbDsKICAgICBib29sIHBsdWdpbkhhbmRsZXNDb250ZW50
T2Zmc2V0Rm9yQWNjZXNzaWJpbGl0eUhpdFRlc3QoKSBjb25zdCBmaW5hbDsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4
IGQyM2FiYjllNjUxMWIxM2JiZDUyM2FmNDUxZjQ0MTc4NzNhNmMxZTAuLjc1NTAxZGQ2Y2VkZGZl
M2M4NDBkZDJlMGRhMmJlMjRjYzdmMDQ2MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTU1OSw3ICsxNTU5LDcgQEAgdm9p
ZCBQREZQbHVnaW46OmFkZEFyY2hpdmVSZXNvdXJjZSgpCiAgICAgUmV0YWluUHRyPE5TVVJMUmVz
cG9uc2U+IHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0
V2l0aFVSTDptX3NvdXJjZVVSTCBzdGF0dXNDb2RlOjIwMCBIVFRQVmVyc2lvbjooTlNTdHJpbmcq
KWtDRkhUVFBWZXJzaW9uMV8xIGhlYWRlckZpZWxkczpoZWFkZXJzXSk7CiAgICAgUmVzb3VyY2VS
ZXNwb25zZSBzeW50aGVzaXplZFJlc3BvbnNlKHJlc3BvbnNlLmdldCgpKTsKIAotICAgIGF1dG8g
cmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZSht
X2RhdGEuZ2V0KCkpLCBtX3NvdXJjZVVSTCwgImFwcGxpY2F0aW9uL3BkZiIsIFN0cmluZygpLCBT
dHJpbmcoKSwgc3ludGhlc2l6ZWRSZXNwb25zZSk7CisgICAgYXV0byByZXNvdXJjZSA9IEFyY2hp
dmVSZXNvdXJjZTo6Y3JlYXRlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2RhdGEu
Z2V0KCkpLCBtX3NvdXJjZVVSTCwgImFwcGxpY2F0aW9uL3BkZiIsIFN0cmluZygpLCBTdHJpbmco
KSwgc3ludGhlc2l6ZWRSZXNwb25zZSk7CiAgICAgcGx1Z2luVmlldygpLT5mcmFtZSgpLT5kb2N1
bWVudCgpLT5sb2FkZXIoKS0+YWRkQXJjaGl2ZVJlc291cmNlKHJlc291cmNlLnJlbGVhc2VOb25O
dWxsKCkpOwogfQogCkBAIC0yNTUyLDE0ICsyNTUyLDE0IEBAIHZvaWQgUERGUGx1Z2luOjpub3Rp
ZnlEaXNwbGF5TW9kZUNoYW5nZWQoaW50KQogICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUERGUGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QK
K1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQREZQbHVnaW46OmxpdmVSZXNvdXJjZURh
dGEoKSBjb25zdAogewogICAgIE5TRGF0YSAqcGRmRGF0YSA9IGxpdmVEYXRhKCk7CiAKICAgICBp
ZiAoIXBkZkRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHBkZkRhdGEpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUocGRmRGF0YSk7CiB9CiAKIGJvb2wgUERGUGx1Z2luOjpwbHVnaW5IYW5kbGVz
Q29udGVudE9mZnNldEZvckFjY2Vzc2liaWxpdHlIaXRUZXN0KCkgY29uc3QKQEAgLTI2NjIsNyAr
MjY2Miw3IEBAIHZvaWQgUERGUGx1Z2luOjp3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJkKE5TU3RyaW5n
ICpwYXN0ZWJvYXJkTmFtZSwgTlNBcnJheSAqaXRlbXMsCiAgICAgICAgICAgICBhdXRvIHBsYWlu
VGV4dFN0cmluZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEg
ZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICAgICAgICAgICAgIHdlYlByb2Nlc3Mu
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9h
cmRQcm94eTo6U2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUocGFzdGVib2FyZE5hbWUsIHR5cGUs
IHBsYWluVGV4dFN0cmluZy5nZXQoKSwgcGFnZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpTZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZTo6UmVwbHkobmV3Q2hhbmdl
Q291bnQpLCAwKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIGF1dG8gc2hh
cmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGJ1ZmZlci5nZXQoKSk7CiAgICAg
ICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggODhmNDVjZTUxY2Uz
MWRmMGM1YjNiNzU4NjIzNmMzZjBkOWM5M2FkMy4uNThkNzBhMzlhMTZkNmE0YzBlOGIwY2E5ZDAz
YWMzZDM3YWVkZmNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
LmgKQEAgLTYxLDcgKzYxLDcgQEAgY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xh
c3MgSW50U2l6ZTsKIGNsYXNzIFNjcm9sbGJhcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjg4
LDcgKzI4OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgY29u
dmVydFRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50SW5Mb2NhbENvb3Jk
aW5hdGVzKSBjb25zdDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgPSAw
OwogCiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGQ1NGYyN2YwNzA5MTQ3ZTllZGVj
MDZkZTU4YzFlOGNjMTIzMWE2NzcuLjdmYjIwYzU5MmRiZmEwOTZlMzhiYzE2ODcwMzczOGNiOGY0
MDdjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCkBAIC0yODksNiArMjg5LDcgQEAgUGx1Z2luVmlldzo6UGx1Z2luVmlldyhIVE1MUGx1
Z0luRWxlbWVudCYgcGx1Z2luRWxlbWVudCwgUmVmPFBsdWdpbj4mJiBwbHVnaW4sIGMKICAgICAs
IG1fd2ViUGFnZSh3ZWJQYWdlKG1fcGx1Z2luRWxlbWVudC5nZXQoKSkpCiAgICAgLCBtX3BhcmFt
ZXRlcnMocGFyYW1ldGVycykKICAgICAsIG1fcGVuZGluZ1VSTFJlcXVlc3RzVGltZXIoUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmUGx1Z2luVmlldzo6cGVuZGluZ1VSTFJlcXVlc3RzVGltZXJGaXJl
ZCkKKyAgICAsIG1fbWFudWFsU3RyZWFtRGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1
aWxkZXI+KCkpCiB7CiAgICAgbV93ZWJQYWdlLT5hZGRQbHVnaW5WaWV3KHRoaXMpOwogfQpAQCAt
NDAzLDkgKzQwNCw2IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5pdGlh
bGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3Ry
ZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9uc2UpOwotICAgICAgICBpZiAoIW1fbWFudWFsU3Ry
ZWFtRGF0YSkKLSAgICAgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7Ci0KICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5hcHBlbmQoYnl0ZXMsIGxl
bmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MzcsNyArNDM1LDcgQEAgdm9pZCBQ
bHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
ICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBtX21hbnVhbFN0cmVhbVN0YXRl
ID0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkOwogICAgICAgICBtX21hbnVhbFN0cmVhbUVy
cm9yID0gZXJyb3I7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CisgICAg
ICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+cmVzZXQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtOTI2LDExICs5MjQsMTEgQEAgdm9pZCBQbHVnaW5WaWV3Ojp3aWxsRGV0YWNoUmVuZGVy
ZXIoKQogICAgIG1fcGx1Z2luLT53aWxsRGV0YWNoUmVuZGVyZXIoKTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSgpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKSB7Ci0gICAgICAg
IGlmIChtX21hbnVhbFN0cmVhbURhdGEgJiYgbV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxT
dHJlYW1TdGF0ZTo6RmluaXNoZWQpCi0gICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1E
YXRhOworICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0
ZTo6RmluaXNoZWQpCisgICAgICAgICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhLT5nZXQo
KTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xMjQyLDEwICsxMjQwLDEw
IEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFtKCkKICAgICBtYW51YWxM
b2FkRGlkUmVjZWl2ZVJlc3BvbnNlKG1fbWFudWFsU3RyZWFtUmVzcG9uc2UpOwogCiAgICAgLy8g
RGVsaXZlciB0aGUgZGF0YS4KLSAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAg
IGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICptX21hbnVhbFN0cmVhbURhdGEpCisgICAgaWYg
KCFtX21hbnVhbFN0cmVhbURhdGEtPmlzTnVsbCgpKSB7CisgICAgICAgIGF1dG8gYnVmZmVyID0g
bV9tYW51YWxTdHJlYW1EYXRhLT50YWtlKCk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxl
bWVudCA6IGJ1ZmZlci5nZXQoKSkKICAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0
YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVudC5zZWdtZW50LT5zaXplKCkpOwotICAg
ICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIGlmIChtX21h
bnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAyMTI2ZWI4ZWRi
NTU5Mzg2YjM0MjI1ZWIyYmQ1YmZjZDY4MDIzZjIzLi5kMTUzYTI5Y2ExNGE5MGUzMjI3YTg5MWUz
ZWVmNWU0ZTc5NzM1MWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgogCiAvLyBGSVhNRTogRXZlbnR1YWxseSB0aGlzIHNob3VsZCBtb3ZlIHRv
IFdlYkNvcmUuCiAKQEAgLTExNSw3ICsxMTYsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHNob3Vs
ZEFsbG93U2NyaXB0aW5nKCk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBs
aXZlUmVzb3VyY2VEYXRhKCkgY29uc3Q7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICBib29sIHBlcmZvcm1E
aWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAg
ICAgU3RyaW5nIGdldFNlbGVjdGlvbkZvcldvcmRBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmKSBjb25zdDsKICAgICBib29sIGV4aXN0aW5nU2VsZWN0aW9uQ29udGFpbnNQb2ludChj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgY29uc3Q7CkBAIC0yNTIsNyArMjUzLDcgQEAgcHJp
dmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9tYW51YWxTdHJlYW1SZXNw
b25zZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIG1fbWFudWFsU3RyZWFtRXJyb3I7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9tYW51YWxTdHJlYW1EYXRhOworICAg
IFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX21hbnVhbFN0cmVhbURh
dGE7CiAKICAgICAvLyBUaGlzIHNuYXBzaG90IGlzIHVzZWQgdG8gYXZvaWQgc2lkZSBlZmZlY3Rz
IHNob3VsZCB0aGUgcGx1Z2luIHJ1biBKUyBkdXJpbmcgcGFpbnRpbmcuCiAgICAgUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBmZWU4ZmVhN2JjYzhkNTljMDdlM2M1YmE0
ZDYwOTU1MmE0ZDYyOGJmLi5iMDRjY2NmMTEzZTQ5MjhmYTY2MzgzYmQyNDMxZGI4NzQ4NTNjY2Ex
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNzEsMTYgKzcx
LDE1IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNw
b25zZSwgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9LCBtX2ZldGNo
SWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6
ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
TWVzc2FnZSkgewotICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJl
ZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKSkKLSAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0g
YnVmZmVyLT5jb3B5KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0ZDo6Z2V0PFJlZjxT
aGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSktPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwor
ICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U2hhcmVkQnVmZmVyQnVpbGRlcj4o
bV9yZXNwb25zZURhdGEpKQorICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBTaGFyZWRCdWZm
ZXJCdWlsZGVyKCk7CisgICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVz
cG9uc2VEYXRhKS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMjA2LDggKzIwNSw4IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAgIHN3aXRjaE9uKG1fcmVzcG9u
c2VEYXRhLCBbdGhpc10oc3RkOjpudWxscHRyX3QmKSB7CiAgICAgICAgIGlmIChtX2RpZEZpbmlz
aCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwotICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikgeworICAg
ICAgICBkaWRSZWNlaXZlRGF0YSgqYnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKG1fZGlkRmlu
aXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAgICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0
YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXgg
YjM0N2NhZDJhYjVmNTcxYjFhMGUyMDcyMDgwNDM2N2Q3NzAxODYwMC4uNmIwYTQxN2NmMGQzYWUw
ZDdiODkzYTk5ODY4M2FiZjJiYzRhNGQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hMb2FkZXJD
bGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJGZXRjaC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtNDksNyArNTAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBm
aW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5k
RmluaXNoKFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWls
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlz
aCgpIGZpbmFsOwpAQCAtODIsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8
QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogICAgIGJvb2wgbV9uZWVkc0NvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwotICAgIHN0ZDo6dmFyaWFu
dDxzdGQ6Om51bGxwdHJfdCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIFJlZjxXZWJDb3Jl
OjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25z
ZURhdGE7CisgICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyLCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6
UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOwogICAgIGJvb2wgbV9kaWRGaW5pc2ggeyBm
YWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCA4MWUzNzllMzNkMWE5YWNk
Yzg2ZWY1YzRiZTIxYTcyNjBkOTRkNDhlLi44YmQ5NTUwNTgyNTZjYzc4NjE4MjdjNmY0ZTkxY2U1
MDZmNjkxMjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIGJv
b2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRBcHBseVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVydGll
cyYgc3R5bGUsIGNvbnN0IHN0ZDo6CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQog
Ci12b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0
cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBw
cmVmZXJyZWRGaWxlTmFtZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsK
ICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJBdHRhY2ht
ZW50SWRlbnRpZmllckZyb21EYXRhKGlkZW50aWZpZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRG
aWxlTmFtZSwgZGF0YS5nZXQoKSkpOwogfQpAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgV2ViRWRp
dG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSCiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLndp
bGxXcml0ZVRvUGFzdGVib2FyZCgqbV9wYWdlLCByYW5nZSk7CiB9CiAKLXZvaWQgV2ViRWRpdG9y
Q2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGll
bnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIG1fcGFn
ZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdl
KCptX3BhZ2UsIHJhbmdlLCBwYXN0ZWJvYXJkVHlwZXMsIHBhc3RlYm9hcmREYXRhKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaAppbmRleCA1MDZkOWY1NDEzOGQzN2NiNGM2NGVkNDYwZjU5YTVjMjhmZTUy
MmE2Li4zOTA1MzcyNDEyNTBkYzY3YTEyZjY1NTdkYmUxNjZmMjdlNjg3YmZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRNb3Zl
UmFuZ2VBZnRlckRlbGV0ZShjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYsIGNvbnN0IFdlYkNv
cmU6OlNpbXBsZVJhbmdlJikgZmluYWw7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQotICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1l
LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50
SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1l
bnRzKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpIGZpbmFsOwpA
QCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFs
OwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2Fy
ZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgCiAgICAgdm9p
ZCByZWdpc3RlclVuZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CiAgICAgdm9pZCBy
ZWdpc3RlclJlZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YmRiYmNjZDNmYmM2MjBlMDc1NDEwNWNlYTA5ZWRkZjA1
MTIwYjZiLi4xNGEwODNjYTIwN2E5MDYzY2Y4MGIxZTdlOTY3MGE0ODdjZjRkMzk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExODgsOCArMTE4OCw4IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVy
KQogICAgICAgICAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRl
ci0+bWFpblJlc291cmNlRGF0YSgpOwotICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRh
dGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSA6
IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAw
KTsKKyAgICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3Vy
Y2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgICAgICAgICBJUEM6OkRh
dGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNl
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0
YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOwogICAgICAgICAgICAgd2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3Rv
bUNvbnRlbnRQcm92aWRlcihsb2FkZXItPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKSwg
ZGF0YVJlZmVyZW5jZSkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAKaW5kZXggZjQxYTcwZWY1YmI2YzBlY2U4YmQ4NjI3NDExNjAxY2Y3MzBlNjJhMS4uYjIz
YTRjNmE5OTQ3N2IwZWViZmNlYTAxMzdlOTc2YzQ1ZWE1MTBlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGViCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2Fy
ZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2Vz
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlczo6UmVwbHkodHlwZXMpLCAw
KTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQor
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkK
IHsKICAgICAvLyBGaXJzdCBjaGVjayB0aGUgb3ZlcnJpZGVzLgogICAgIFZlY3Rvcjx1aW50OF90
PiBvdmVycmlkZUJ1ZmZlcjsKICAgICBpZiAoV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hhcmVk
UGFzdGVib2FyZE92ZXJyaWRlcygpLmdldERhdGFGb3JPdmVycmlkZShwYXN0ZWJvYXJkTmFtZSwg
cGFzdGVib2FyZFR5cGUsIG92ZXJyaWRlQnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKKyAgICAgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CiAK
ICAgICAvLyBGYWxsYmFjayB0byBtZXNzYWdpbmcgdGhlIFVJIHByb2Nlc3MgZm9yIG5hdGl2ZSBw
YXN0ZWJvYXJkIGNvbnRlbnQuCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxl
OwpAQCAtMjA5LDcgKzIwOSw3IEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRU
eXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjCiAgICAgcmV0dXJu
IG5ld0NoYW5nZUNvdW50OwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0
QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqIGNvbnRleHQpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVy
Rm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsK
ICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKSB7CkBAIC0zMjQsNyArMzI0LDcgQEAg
VmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkRmlsZVBhdGhzRnJvbUNs
aXBib2FyZChjb25zdCBTdHJpbmcmIHAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogCiAgICAgSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5IGRhdGE7CkBAIC00MDYsNyArNDA2LDcgQEAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJk
SXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmQK
ICAgICByZXR1cm4gaW5mbzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBj
b250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
aW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29u
dGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQ6OlJlcGx5KGlwY0hhbmRsZSksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
CmluZGV4IGUyODA5OTYzZjRmNTA2ODFiN2QwMWY0MWE2ODUzMWFiNzMyMTRmYjAuLjUwNzY1ZThh
ZGM4MDllOTNmMmFjNWI4YjAyNjk4YTgwNjRjMWE2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0
VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0
b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3Ry
aW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKIAogICAgIGludDY0X3QgYWRkVHlwZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CisgICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogICAgIGludDY0X3Qgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29s
b3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkVGV4
dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAg
ICAgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
IG92ZXJyaWRlOwogICAgIHZvaWQgd3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
Y2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAj
ZW5kaWYKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgU3RyaW5nIHJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5m
bz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50LmNwcAppbmRleCAwN2IxNjdlMGVlZWU3Njg4NzViMDM5ZGZhNTlmNWZkMTNjNzU0ZTEw
Li5kNDE1OTA0YzcxYjFjMGM3MmEzZTE3Y2Y3YjM0NTIwYWEyNzkwMzY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQCBXZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUsIGNvbnN0IFN0cgogICAgIDogbV9maWxlTmFtZSB7IGZpbGVOYW1lIH0KICAgICAs
IG1fdXRpIHsgdXRpIH0KICAgICAsIG1fcGFnZUlEIHsgcGFnZUlEIH0KLSAgICAsIG1fYnVmZmVy
IHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX2J1ZmZlciB7IG1ha2VVbmlxdWVS
ZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiB7CiB9CiAKIFdlYlByZXZpZXdMb2FkZXJDbGll
bnQ6On5XZWJQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFdlYlByZXZp
ZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCit2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gd2ViUGFnZSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobV9wYWdlSUQpOwogICAgIGlmICghd2ViUGFn
ZSkKQEAgLTY5LDEzICs2OSwxMiBAQCB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZp
bmlzaExvYWRpbmcoKQogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
d2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9i
dWZmZXIuZ2V0KCkpOwotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIHdlYlBhZ2UtPmRpZEZp
bmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fYnVmZmVyLT50YWtlKCku
Z2V0KCkpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZhaWwoKQogewot
ICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIG1fYnVmZmVyLT5yZXNldCgpOwogfQogCiB2b2lk
IFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lk
KGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlBy
ZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwNDkyY2VlYzJmOWI5Y2Q4NTM4Mzg0ODRmYmMyNmMw
N2NiNTNkYTg3Li5jYzNiMjRiNzI5YjIxOGI4MGQzN2ExMmNkN2ZhYzNkZmE5YmVkMWFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlBy
ZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMjksOCArMjksMTMgQEAK
IAogI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBXZWJGcmFtZTsKQEAgLTQ1LDcgKzUwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IFdlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3Ry
aW5nJiB1dGksIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEZhaWwoKSBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTU0LDcgKzU5LDcgQEAgcHJpdmF0ZToK
ICAgICBjb25zdCBTdHJpbmcgbV9maWxlTmFtZTsKICAgICBjb25zdCBTdHJpbmcgbV91dGk7CiAg
ICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7Ci0gICAgUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggYTY0YzZhOGIzYzY5NWUxNzMzNjQzMzZi
Y2IwZjY4ZGJkZDljMmQyMS4uNGI2ZTIxN2JiZTM3ZjhjMWRmMTdhYmNjYmJjODc3NDMxYTJiMWUz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtMTUwLDcgKzE1MCw3IEBAIHZv
aWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIEVsZW1lCiAKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IGlt
YWdlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CisgICAgYXV0byBp
bWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAgICAgc2l6ZV90IGltYWdlU2l6
ZSA9IGltYWdlQnVmZmVyLT5zaXplKCk7CiAKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9
IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqaW1hZ2VCdWZmZXIpOwpAQCAtMTYzLDcgKzE2Myw3
IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgYXJj
aGl2ZUhhbmRsZTsKICAgICBzaXplX3QgYXJjaGl2ZVNpemUgPSAwOwogICAgIGlmIChkYXRhKSB7
Ci0gICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2Jy
aWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKKyAgICAgICAgYXV0byBhcmNoaXZlQnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdl
dCgpKTsKICAgICAgICAgYXV0byBhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVt
b3J5Ojpjb3B5QnVmZmVyKGFyY2hpdmVCdWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAoIWFyY2hp
dmVTaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggOWJkNGNkMmQwY2IxMDNi
NDVhYThlNmMxZDQyN2MwYjE3YmY1ZWQxMy4uZDg4ZjQ0Y2ZjZGU1ZTE1ZjY2YzEyNGI0MGY1YjU0
MzViOTQ2OTdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcApAQCAtMzQwLDEwICszNDAsMTAgQEAgU3RyaW5nIFdlYkZyYW1lOjpzb3VyY2UoKSBj
b25zdAogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IG1fY29yZUZyYW1lLT5s
b2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpOwogICAgIGlmICghZG9jdW1lbnRMb2FkZXIp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWlu
UmVzb3VyY2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50
TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCku
ZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgp
KTsKKyAgICByZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOwog
fQogCiBTdHJpbmcgV2ViRnJhbWU6OmNvbnRlbnRzQXNTdHJpbmcoKSBjb25zdCAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYzkxMzVhMDBhMjEx
YzEyMjA0YWI5NTI1ODljN2FiNDU5MmEyNGQ2NC4uZGEwOGI1ZjA0MjkyYTRiZTllYjZlZGRjYjY2
M2M4YzllZTZmNTQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTE2NTgsNyArMTY1OCw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbkZy
YW1lKElQQzo6RGF0YVJlZmVyZW5jZSYmIGRhdGEsIFN0cmluZyYmIE1JTUVUeXBlLCBTdHJpCiAg
ICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoJm1haW5XZWJGcmFtZSgpICE9IGZyYW1lKTsKIAot
ICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgIFJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UoYmFzZVVSTCwgTUlNRVR5cGUsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBl
bmNvZGluZ05hbWUpOwogICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKFdURk1vdmUo
c2hhcmVkQnVmZmVyKSwgYmFzZVVSTCwgV1RGTW92ZShyZXNwb25zZSksIFN1YnN0aXR1dGVEYXRh
OjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OkhpZGRlbik7CiAgICAgZnJhbWUtPmNvcmVGcmFt
ZSgpLT5sb2FkZXIoKS5sb2FkKEZyYW1lTG9hZFJlcXVlc3QoKmZyYW1lLT5jb3JlRnJhbWUoKSwg
UmVzb3VyY2VSZXF1ZXN0KGJhc2VVUkwpLCBXVEZNb3ZlKHN1YnN0aXR1dGVEYXRhKSkpOwpAQCAt
MTcyMCw3ICsxNzIwLDcgQEAgTk9fUkVUVVJOIHZvaWQgV2ViUGFnZTo6bG9hZFJlcXVlc3RXYWl0
aW5nRm9yUHJvY2Vzc0xhdW5jaChMb2FkUGFyYW1ldGVycyYmLCBVUkwKICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3
ZWJzaXRlUG9saWNpZXMsIFJlZjxTaGFyZWRCdWZmZXI+JiYgc2hhcmVkQnVmZmVyLCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGNvbnN0IFVS
TCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgc3RkOjpvcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzZXNzaW9uSGlzdG9y
eVZpc2liaWxpdHksIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSkKK3ZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xp
Y2llcywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgc2hhcmVkQnVmZmVyLCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGNvbnN0IFVS
TCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgc3RkOjpvcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzZXNzaW9uSGlzdG9y
eVZpc2liaWxpdHksIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSkKIHsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgc2V0
SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
LCAmbV9tYWluRnJhbWUuZ2V0KCkpOwpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9pZCBXZWJQYWdl
Ojpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBTaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQgc2gKIAogICAgIC8vIExldCB0aGUgSW5qZWN0ZWRCdW5kbGUga25vdyB3ZSBhcmUg
YWJvdXQgdG8gc3RhcnQgdGhlIGxvYWQsIHBhc3NpbmcgdGhlIHVzZXIgZGF0YSBmcm9tIHRoZSBV
SVByb2Nlc3MKICAgICAvLyB0byBhbGwgdGhlIGNsaWVudCB0byBzZXQgdXAgYW55IG5lZWRlZCBz
dGF0ZS4KLSAgICBtX2xvYWRlckNsaWVudC0+d2lsbExvYWREYXRhUmVxdWVzdCgqdGhpcywgcmVx
dWVzdCwgY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPihzdWJzdGl0dXRlRGF0YS5jb250ZW50KCkp
LCBzdWJzdGl0dXRlRGF0YS5taW1lVHlwZSgpLCBzdWJzdGl0dXRlRGF0YS50ZXh0RW5jb2Rpbmco
KSwgc3Vic3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgpLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50
cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAg
bV9sb2FkZXJDbGllbnQtPndpbGxMb2FkRGF0YVJlcXVlc3QoKnRoaXMsIHJlcXVlc3QsIGNvbnN0
X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KHN1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKSks
IHN1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCksIHN1YnN0aXR1dGVEYXRhLnRleHRFbmNvZGluZygp
LCBzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCksIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRy
YW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIAogICAg
IC8vIEluaXRhdGUgdGhlIGxvYWQgaW4gV2ViQ29yZS4KICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZy
YW1lTG9hZFJlcXVlc3QoKm1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSwgcmVxdWVzdCwgc3Vic3Rp
dHV0ZURhdGEpOwpAQCAtMTc0OSw3ICsxNzQ5LDcgQEAgdm9pZCBXZWJQYWdlOjpsb2FkRGF0YShM
b2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogewogICAgIHBsYXRmb3JtRGlkUmVjZWl2
ZUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAotICAgIGF1dG8gc2hhcmVkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUobG9hZFBhcmFtZXRlcnMuZGF0YS5kYXRhKCksIGxvYWRQ
YXJhbWV0ZXJzLmRhdGEuc2l6ZSgpKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShsb2FkUGFyYW1ldGVycy5kYXRhLmRhdGEoKSwgbG9hZFBh
cmFtZXRlcnMuZGF0YS5zaXplKCkpOwogCiAgICAgVVJMIGJhc2VVUkw7CiAgICAgaWYgKGxvYWRQ
YXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpKQpAQCAtMTc3NCw3ICsxNzc0LDcgQEAg
dm9pZCBXZWJQYWdlOjpsb2FkQWx0ZXJuYXRlSFRNTChMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJh
bWV0ZXJzKQogICAgIFVSTCBiYXNlVVJMID0gbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZy5p
c0VtcHR5KCkgPyBhYm91dEJsYW5rVVJMKCkgOiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLmJh
c2VVUkxTdHJpbmcpOwogICAgIFVSTCB1bnJlYWNoYWJsZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLnVu
cmVhY2hhYmxlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFVSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFy
YW1ldGVycy51bnJlYWNoYWJsZVVSTFN0cmluZyk7CiAgICAgVVJMIHByb3Zpc2lvbmFsTG9hZEVy
cm9yVVJMID0gbG9hZFBhcmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcuaXNF
bXB0eSgpID8gVVJMKCkgOiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnByb3Zpc2lvbmFsTG9h
ZEVycm9yVVJMU3RyaW5nKTsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGxvYWRQYXJhbWV0ZXJzLmRhdGEuZGF0YSgpLCBsb2FkUGFyYW1ldGVycy5kYXRhLnNp
emUoKSk7CisgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUobG9hZFBhcmFtZXRlcnMuZGF0YS5kYXRhKCksIGxvYWRQYXJhbWV0ZXJzLmRhdGEuc2l6
ZSgpKTsKICAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnNldFByb3Zpc2lv
bmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMKHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMKTsKIAog
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLk1JTUVU
eXBlLCBzaGFyZWRCdWZmZXItPnNpemUoKSwgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lKTsK
QEAgLTE3ODUsNyArMTc4NSw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUwoTG9h
ZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKIHZvaWQgV2ViUGFnZTo6bG9hZFNpbXVsYXRl
ZFJlcXVlc3RBbmRSZXNwb25zZShMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzLCBSZXNv
dXJjZVJlc3BvbnNlJiYgc2ltdWxhdGVkUmVzcG9uc2UpCiB7CiAgICAgc2V0TGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQobG9hZFBhcmFtZXRlcnMucmVxdWVzdC5pc0FwcEluaXRpYXRlZCgp
KTsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGxvYWRQYXJh
bWV0ZXJzLmRhdGEuZGF0YSgpLCBsb2FkUGFyYW1ldGVycy5kYXRhLnNpemUoKSk7CisgICAgYXV0
byBzaGFyZWRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobG9hZFBhcmFt
ZXRlcnMuZGF0YS5kYXRhKCksIGxvYWRQYXJhbWV0ZXJzLmRhdGEuc2l6ZSgpKTsKICAgICBsb2Fk
RGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklELCBsb2FkUGFyYW1ldGVycy5zaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFdURk1vdmUobG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBv
bGljaWVzKSwgV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzLnJl
cXVlc3QpLCBXVEZNb3ZlKHNpbXVsYXRlZFJlc3BvbnNlKSwgVVJMKCksIGxvYWRQYXJhbWV0ZXJz
LnVzZXJEYXRhLCBsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBT
dWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpWaXNpYmxlKTsKIH0KIApA
QCAtMzgzOCw3ICszODM4LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFtZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKIAogdm9pZCBXZWJQ
YWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
ICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJh
bWUoZnJhbWVJRCkpIHsKICAgICAgICAgaWYgKFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSBwbHVn
aW5WaWV3Rm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpKSkKICAgICAgICAgICAgIGJ1ZmZlciA9
IHBsdWdpblZpZXctPmxpdmVSZXNvdXJjZURhdGEoKTsKQEAgLTM4NTQsNyArMzg1NCw3IEBAIHZv
aWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIENvbXBsZXRpb25IYW5kCiAgICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CiB9CiAK
LXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSog
ZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCitzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJM
JiByZXNvdXJjZVVSTCkKIHsKICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZnJhbWUtPmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFsb2FkZXIpCkBAIC0zODY5LDcgKzM4
NjksNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUo
RnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cgogCiB2b2lkIFdlYlBhZ2U6OmdldFJlc291
cmNlRGF0YUZyb21GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZVVSTFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlv
bmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKIHsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoYXV0byogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkgewogICAgICAgICBVUkwgcmVzb3VyY2VVUkwoVVJM
KCksIHJlc291cmNlVVJMU3RyaW5nKTsKICAgICAgICAgYnVmZmVyID0gcmVzb3VyY2VEYXRhRm9y
RnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpLCByZXNvdXJjZVVSTCk7CkBAIC02OTU0LDcgKzY5NTQs
NyBAQCB2b2lkIFdlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lv
biwgQ2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcgogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgZG9jdW1lbnRMb2Fk
ZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLnRv
SW50ZWdlcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpIG11dGFibGUgeworICAgIGRvY3Vt
ZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRp
Zmllci50b0ludGVnZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0YSkgbXV0
YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgaWNvbkRhdGEgfSk7CiAgICAgfSk7
CiB9CkBAIC03MjQ4LDcgKzcyNDgsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUF0dGFjaG1lbnRB
dHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbAogICAgIGlm
IChhdXRvIGF0dGFjaG1lbnQgPSBhdHRhY2htZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGlkZW50
aWZpZXIpKSB7CiAgICAgICAgIGF0dGFjaG1lbnQtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7
CiAgICAgICAgIGF0dGFjaG1lbnQtPnVwZGF0ZUF0dHJpYnV0ZXMoV1RGTW92ZShmaWxlU2l6ZSks
IGNvbnRlbnRUeXBlLCBmaWxlTmFtZSk7Ci0gICAgICAgIGF0dGFjaG1lbnQtPnVwZGF0ZUVuY2xv
c2luZ0ltYWdlV2l0aERhdGEoY29udGVudFR5cGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY2xv
c2luZ0ltYWdlRGF0YS5kYXRhKCksIGVuY2xvc2luZ0ltYWdlRGF0YS5zaXplKCkpKTsKKyAgICAg
ICAgYXR0YWNobWVudC0+dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb250ZW50VHlwZSwg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY2xvc2luZ0ltYWdlRGF0YS5kYXRhKCks
IGVuY2xvc2luZ0ltYWdlRGF0YS5zaXplKCkpKTsKICAgICB9CiAgICAgY2FsbGJhY2soKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAyNjJkZTZh
NDJhNjk0OTUzMDIwMWM3MjNkYWU3ZTQ1MjJjNTcxNjJhLi43NGQ1MjlmYWY5NDUxYjNiOGIzYjli
YjFmZjAxZmNiNTY1MzFhYzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC0yMTYsNyArMjE2LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CiBjbGFzcyBTZWxlY3Rp
b25HZW9tZXRyeTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNzIFRleHRDaGVja2luZ1JlcXVlc3Q7
CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247CkBAIC0xMzk0LDcgKzEzOTQsNyBAQCBwdWJsaWM6CiAK
ICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1
dGkpOwotICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCByZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogI2VuZGlmCiAKQEAgLTE1OTcsNyArMTU5Nyw3IEBA
IHByaXZhdGU6CiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAotICAg
IHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6U2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+
JiYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwg
Y29uc3QgVXNlckRhdGEmLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgV2Vi
Q29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKKyAgICB2b2lkIGxvYWREYXRhSW1w
bCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBV
c2VyRGF0YSYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBXZWJD
b3JlOjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5LCBXZWJDb3JlOjpT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwogCiAgICAgLy8gQWN0aW9ucwogICAgIHZvaWQg
dHJ5Q2xvc2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDg2ZTA0
YzU5NjAyZDMzNWVkNzJhMWMyMWE5OTBhZDNlM2Q3Njc2ODUuLjY2NDI0Y2Q4YTEzOWY5OWZjN2Y5
NTJkYTJlZWZkOTQ3ZjVmMDYyMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0zMjE3LDcgKzMyMTcsNyBAQCB2b2lkIFdl
YlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQogICAgICAgICBD
YWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKmVsZW1lbnQu
cmVuZGVyZXIoKSkuY2FjaGVkSW1hZ2UoKTsKICAgICAgICAgaWYgKCFjYWNoZWRJbWFnZSkKICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
Y2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsKICAg
ICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gc2hh
cmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpAQCAt
NDY4Myw3ICs0NjgzLDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tE
b2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUoZmlsZU5hbWUsIHV0aSkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQordm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5G
cmFtZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJU
KCFidWZmZXIuaXNFbXB0eSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBkNDEyODJmYzVkYzYzYzMxN2U1NGI4MjYw
YzU3ZTM0NGNhMzZlMzA5Li4yZDAzZDcxZmQ5MDExNjljMTg2MTJkYjQxYjA3M2UxYjhjMjVhZDU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQpAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0CiAgICAg
aWYgKGZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1l
LmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUuZWRpdG9yKCku
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOwogICAgIGlmICghYnVm
ZmVyKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICBhdXRvIHNo
YXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIubW0KaW5kZXggZTE4ZDEwYzNmYzRmMThkNzNhMmE3NDBjNTMzMTMxMzQzZmYzM2Nh
Zi4uYzYxYjg1MTJiYTNjZmNjODllNDM1YmY5NDM0NGRkNzI5MTcyNWIyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIubW0KQEAgLTIyOCwxMSArMjI4LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpz
dXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW4KICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIFVOVVNFRF9QQVJBTShtb2RlKTsKICNpZiBIQVZFKEFW
S0lUKQotI2lmIEhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKLSAgICByZXR1cm4gbW9kZSA9
PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZDsKLSNl
bHNlCiAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwog
I2VuZGlmCkBAIC0yNDMsNyArMjM5LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpz
dXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW4KIAogYm9v
bCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnko
KSBjb25zdAogewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFIQVZFKFVJS0lUX1dFQktJ
VF9JTlRFUk5BTFMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICByZXR1cm4gdHJ1ZTsK
ICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93
aW4vV2ViUHJvY2Vzc1dpbi5jcHAKaW5kZXggZDNkMzhjYWM0MTIxMWQ3ZTI5YjU3ZjI0NTIzNjRl
MzdiNDIzYzMxYS4uMzdmMjdlOTUyZDA3MTcxMTIxY2I0ZjU0ODdhOGI4NGI5ZjhhNjM4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCkBAIC0y
OCw3ICsyOCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCi1SZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNo
YXIqIG5hbWUpCitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJl
c291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQogewogICAgIHJldHVybiAwOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxl
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaAppbmRl
eCAxZjU1ODRmYTM4N2Q3NmNjZTk0ZmY3YjU2OTY4ZTdlODIyMDYwNjA2Li5hMjU1NjBhMTBjMjg4
MmUxYWJkMTc4NDU2OTQ4NmVhMTNlZDg5NmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaApAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBwaW5nTG9hZENvbXBsZXRlKHsg
fSwgcmVzcG9uc2UpOwogICAgIH0KLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQpIGZpbmFs
IHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlKiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGludCkgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQogICAgIHZvaWQgZGlk
RmFpbChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVycm9yKSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoZXJyb3IpOyB9CiAgICAgYm9vbCBz
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopIGZpbmFs
IHsgcmV0dXJuIG1fc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGViMzk0MWYy
NjZkZjEzYzI4YTkwNmVlN2QxNjFhZTIxZTE3NTQwOTEuLjYzNTViNmY5MDMxODAwNTVjYjYwN2E4
MGJlNzcwMTM4NGQ4OGRkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMzg4LDcgKzM4OCw3IEBAIC0gKE5TRGF0YSAqKWRh
dGFSZXByZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURhdGEKICAgICBhdXRvKiBkYXRhID0gcmF3
SW1hZ2VEYXRhID8gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkgOiBpbWFnZS0+ZGF0YSgp
OwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gZGF0YS0+
Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNTdHJpbmcg
KiltaW1lVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0NWY3YzFmNWNhNzQ4MmQ2MGQ5YmM3NGVm
NjE2YzMyZmQ2MjY3NjQ3Li5iYTMxZmE3Yzg2YjkwOWZjYjM1ODczYWNmY2QyMmE4ZThiOTI5MjJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7
CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZv
aWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAg
dm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkg
ZmluYWw7CiAKICAgICB2b2lkIHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikg
ZmluYWw7CiAgICAgV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSByZXF1ZXN0RE9NUGFz
dGVBY2Nlc3MoY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gV2ViQ29yZTo6RE9NUGFzdGVB
Y2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4
IGMyYzQwZDNkMmExMzNmMjgxMzQxNTYwMzRkZTU0MTQxYTRjZTljMzIuLjc0YzQ4NzgzMTc3YWY5
MGIyMDJkNTFjNDY2NjliNDAxMmIxMjVmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTQxMyw3
ICs0MTMsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIC8vIE5vdCBpbXBsZW1lbnRl
ZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENs
aWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgLy8gTm90IGltcGxl
bWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
aW5kZXggYTI1OThmMzJmYjc2MGE3ZDg4M2M5ZjRjZWVjMThjZjU5MWViOGVhZC4uOTU5ZDc0OGI1
NmJlMTA3NmJkOTc3OTkyMmNkMzU2ZDIxYTY4MTc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCkBAIC0yNDgsNyArMjQ4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbmRIMlBpbmcoY29u
c3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTZWNvbmRzLCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yPiYmKT4mJikgZmluYWw7CiAKICAgICB2b2lkIGdldExvYWREZWNpc2lv
bkZvckljb25zKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yZTo6TGlua0ljb24mLCB1aW50
NjRfdD4+JikgZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciopOworICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBi
b29sIG1fbG9hZGluZ0ljb24geyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpp
bmRleCBiODQ5ZDJhYWMyYTkzZmJlZTQxNzI5ZjI0YTg2Y2RjZjZiMWZlMDE5Li5hYTJjYzk4MTQ3
NGExM2NlNTA4NDc5ODk0MjM2ODQ0OTFjODhmNmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQpAQCAtMjAxMiw3ICsyMDEyLDcgQEAgUmVmUHRyPFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdM
b2FkZXJDbGllbnQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQcmV2aWV3TG8KICAgICAg
ICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX2ZpbGVQYXRoOwogICAgICAgICBSZXRhaW5QdHI8TlNG
aWxlSGFuZGxlPiBtX2ZpbGVIYW5kbGU7CiAKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBvdmVycmlkZQorICAgICAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIGRhdGFBcnJh
eSA9IGJ1ZmZlci5jcmVhdGVOU0RhdGFBcnJheSgpOwogICAgICAgICAgICAgZm9yIChOU0RhdGEg
KmRhdGEgaW4gZGF0YUFycmF5LmdldCgpKQpAQCAtMjA5NCw3ICsyMDk0LDcgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0
ZDo6cGFpcjxXZWJDb3IKICAgICAgICAgfQogCiAgICAgICAgIG1fbG9hZGluZ0ljb24gPSB0cnVl
OwotICAgICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVl
LCBpY29uLT5zZWNvbmQsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyKiBidWZmZXIpIHsKKyAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRp
ZEdldExvYWREZWNpc2lvbkZvckljb24odHJ1ZSwgaWNvbi0+c2Vjb25kLCBbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGJ1ZmZlcikgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICBmaW5pc2hlZExvYWRpbmdJY29uKGJ1ZmZlcik7CkBAIC0yMTMx
LDcgKzIxMzEsNyBAQCBzdGF0aWMgTlNJbWFnZSAqd2ViR2V0TlNJbWFnZShXZWJDb3JlOjpJbWFn
ZSogaW1hZ2UsIE5TU2l6ZSBzaXplKQogfQogI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZ
KQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpm
aW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGljb25E
YXRhKQogewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VSVChtX2xvYWRpbmdJ
Y29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMjRiNjk5NzA2ZGYwZDZiNzE5
MmFhNTIwMmRlNjFkOGIxZTU3MzJmOS4uN2NjOTAyY2E5YmM4ODFhNWU5NWJhNjIzYTk4NjE1ZGMy
NTU1NDE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU1LDE0ICs1NSwxNCBA
QCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICNlbmRpZgog
ICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVt
c0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0
ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5m
byhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXROdW1i
ZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3Ry
aW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRo
bmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpAQCAtNzUsNyArNzUs
NyBAQCBwcml2YXRlOgogCiAgICAgaW50NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VHlw
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKLSAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2
NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRf
dCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgaW50NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMubW0KaW5kZXggZmMwNzc2ZTYyZDY2YmU5YWM5M2Q0ODdkZGZkMzAwYTZkNDA3
YzU1My4uZTI4M2IxMDg1OWZlZTg4MzM4MDAzOThjNDg0MjljNDlhNzI3MGE4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGViCiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRUeXBl
cyh0eXBlcyk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5idWZmZXJGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsKIH0K
QEAgLTE1NCw3ICsxNTQsNyBAQCBpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VHlw
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgYwogICAgIHJldHVybiBQ
bGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldFR5cGVzKHBhc3RlYm9hcmRUeXBl
cyk7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBl
KFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitpbnQ2
NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICBy
ZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBl
KGJ1ZmZlciwgcGFzdGVib2FyZFR5cGUpOwogfQpAQCAtMjA5LDcgKzIwOSw3IEBAIGludCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkuY291bnQoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9h
cmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZmZXIoaW5kZXgsIHR5cGUpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJBcmNoaXZlLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJBcmNoaXZlLm1tCmluZGV4IGVhZTNiMjNiOGNh
YWUxMDAzNWY4OTdhZmM5ZTdmMzhlZDllMWIyZTYuLmEzMDdlNGZlMGY3OGRlMTRmNTFjMDNlNmZl
NjkxMmQwMzlkZmViNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViQXJjaGl2ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkFyY2hpdmUubW0KQEAgLTE5Niw3ICsxOTYsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhE
YXRhOihOU0RhdGEgKilkYXRhCiAjZW5kaWYKIAogICAgIF9wcml2YXRlID0gW1tXZWJBcmNoaXZl
UHJpdmF0ZSBhbGxvY10gaW5pdF07Ci0gICAgYXV0byBjb3JlQXJjaGl2ZSA9IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKSk7CisgICAgYXV0byBjb3Jl
QXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSkpOwogICAgIGlmICghY29yZUFyY2hpdmUpIHsKICAgICAgICAgW3NlbGYg
cmVsZWFzZV07CiAgICAgICAgIHJldHVybiBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggMjg5YzAwMjliZjkxMzQxOGQwYjI5
OWY5MGE0ZDk3MTEzYmM1OGE0Yi4uODNlODU5MTQzNDVlYTdjYjg0MWQ5OWZkMWZiNjY2ZDhjY2Yw
MzAyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRh
U291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNv
dXJjZS5tbQpAQCAtNDYwLDEwICs0NjAsMTAgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKE5TRGF0
YSAqKWRhdGEKIHsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtYWluUmVzb3Vy
Y2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7
CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJj
ZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsK
ICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0
dXJuIG1haW5SZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAg
cmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPily
ZXByZXNlbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0KaW5kZXggNjNkNzgxOTk0ZmFiZjQ2NWJlOGU1NTBlYThjZjhiNmM3ODJiMzI5Mi4uNTM5ZmIz
NzNlZDA4NDIzMmZlM2M2NmEzZjkxNzYwNjc4NDFiYTJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0yNDYxLDcgKzI0NjEsNyBAQCAtICh2b2lk
KV9sb2FkRGF0YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSB0
ZXh0RW5jb2RpbmdOYW1lOgogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGJh
c2VVUkwpOwogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShyZXNwb25z
ZVVSTCwgTUlNRVR5cGUsIFtkYXRhIGxlbmd0aF0sIGVuY29kaW5nTmFtZSk7Ci0gICAgV2ViQ29y
ZTo6U3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSksIFt1bnJlYWNoYWJsZVVSTCBhYnNvbHV0ZVVSTF0sIHJlc3BvbnNlLCBXZWJD
b3JlOjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4pOwor
ICAgIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKSwgW3VucmVhY2hhYmxlVVJMIGFic29sdXRl
VVJMXSwgcmVzcG9uc2UsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZp
c2liaWxpdHk6OkhpZGRlbik7CiAKICAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5sb2FkZXIoKS5s
b2FkKFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QoKl9wcml2YXRlLT5jb3JlRnJhbWUsIHJlcXVl
c3QsIHN1YnN0aXR1dGVEYXRhKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmluZGV4IDgwY2QzMGVmNDY3
NjBlMTRjOGU2N2E4OGEyNzMzYzlkNDM3ZmE1ZDkuLjM4ZDdlNTMyZDZlYWEwY2FjMzg4NjJmM2Uw
ZTE2OWZlMjgxMjc3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC0yMzAsNyArMjMwLDcgQEAgLSAo
Qk9PTCljYW5TYXZlQXNXZWJBcmNoaXZlCiAtIChOU1N0cmluZyAqKWRvY3VtZW50U291cmNlCiB7
CiAgICAgaWYgKFtzZWxmIF9pc0Rpc3BsYXlpbmdXZWJBcmNoaXZlXSkgeyAgICAgICAgICAgIAot
ICAgICAgICBTaGFyZWRCdWZmZXIgKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRh
U291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CisgICAgICAgIGF1
dG8gKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExv
YWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNT
dHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpwYXJzZWRBcmNoaXZlRGF0YSA/IHBhcnNlZEFyY2hp
dmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBlbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA4MzhlNDEzMzgxYTgwNzVhM2Q2MjQ1
OTQ1NTI2N2E1YmJiNTVhOTkxLi4yOGQ4NzU5MjljY2FjZGI5YTEzODhhODI2YjJmZDVlY2Y0NmVj
Y2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KQEAgLTM1NDAsOCArMzU0MCw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNNZW51SXRlbT4gY3Jl
YXRlU2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoCiAgICAgfQog
CiAgICAgaWYgKGF1dG8qIGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7Ci0gICAgICAg
IGlmIChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgp
KQotICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10g
aW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPmRhdGEoKSBsZW5ndGg6
YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOworICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCkpCisgICAgICAgICAg
ICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIGxl
bmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CiAgICAgfQogCiAgICAgaWYgKCFoaXRUZXN0
UmVzdWx0LnNlbGVjdGVkVGV4dCgpLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KaW5kZXggMTIxOThmNDAxZWE4YWQ1NzhkZDdi
ZGVhY2MwNGRmYjdlMzRhYzczNC4uMmZkY2MwNGFmNTdkYzEwNGQ3YWYwZWU2NWYzYmQyYmY4ZGVj
M2QyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNv
dXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNl
Lm1tCkBAIC0xNTAsNyArMTUwLDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5T
Q29kZXIgKilkZWNvZGVyCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQogCi0gICAgYXV0byBj
b3JlUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhKSwgdXJsLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nLCBmcmFtZU5hbWUsIHJlc3BvbnNl
KTsKKyAgICBhdXRvIGNvcmVSZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKSwgdXJsLCBtaW1lVHlwZSwgdGV4dEVuY29k
aW5nLCBmcmFtZU5hbWUsIHJlc3BvbnNlKTsKICAgICBpZiAoIWNvcmVSZXNvdXJjZSkgewogICAg
ICAgICBbc2VsZiByZWxlYXNlXTsKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTE2MywyMSArMTYz
LDIxIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopZGVjb2Rlcgog
LSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZGVyCiB7CiAgICAgYXV0byog
cmVzb3VyY2UgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLmdldCgpOwotICAgIAotICAgIE5TRGF0
YSAqZGF0YSA9IG5pbDsKKworICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAgICAgTlNVUkwg
KnVybCA9IG5pbDsKICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBuaWwsICp0ZXh0RW5jb2Rpbmcg
PSBuaWwsICpmcmFtZU5hbWUgPSBuaWw7CiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBu
aWw7Ci0gICAgCisKICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAgICAgZGF0YSA9IHJlc291cmNl
LT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCk7CisgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB1cmwgPSBy
ZXNvdXJjZS0+dXJsKCk7CiAgICAgICAgIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7
CiAgICAgICAgIHRleHRFbmNvZGluZyA9IHJlc291cmNlLT50ZXh0RW5jb2RpbmcoKTsKICAgICAg
ICAgZnJhbWVOYW1lID0gcmVzb3VyY2UtPmZyYW1lTmFtZSgpOwogICAgICAgICByZXNwb25zZSA9
IHJlc291cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICB9Ci0gICAgW2VuY29k
ZXIgZW5jb2RlT2JqZWN0OmRhdGEgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CisgICAgW2Vu
Y29kZXIgZW5jb2RlT2JqZWN0OmRhdGEuZ2V0KCkgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07
CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnVybCBmb3JLZXk6V2ViUmVzb3VyY2VVUkxLZXld
OwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDptaW1lVHlwZSBmb3JLZXk6V2ViUmVzb3VyY2VN
SU1FVHlwZUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnRleHRFbmNvZGluZyBmb3JL
ZXk6V2ViUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5XTsKQEAgLTIwMiw3ICsyMDIsNyBAQCAt
IChOU0RhdGEgKilkYXRhCiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlUmVzb3VyY2UpCiAgICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEo
KS5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBfcHJpdmF0ZS0+Y29y
ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3Jl
bGVhc2UoKTsKIH0KIAogLSAoTlNVUkwgKilVUkwKQEAgLTMwMiw3ICszMDIsNyBAQCAtIChpZClf
aW5pdFdpdGhEYXRhOihOU0RhdGEgKilkYXRhCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQog
Ci0gICAgYXV0byBjb3JlUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRC
dWZmZXI6OmNyZWF0ZShjb3B5RGF0YSA/IGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpIDogZGF0
YSksIFVSTCwgTUlNRVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIGZyYW1lTmFtZSwgcmVzcG9uc2Up
OworICAgIGF1dG8gY29yZVJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvcHlEYXRhID8gYWRvcHROUyhbZGF0YSBjb3B5XSku
Z2V0KCkgOiBkYXRhKSwgVVJMLCBNSU1FVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgZnJhbWVOYW1l
LCByZXNwb25zZSk7CiAgICAgaWYgKCFjb3JlUmVzb3VyY2UpIHsKICAgICAgICAgW3NlbGYgcmVs
ZWFzZV07CiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0zNjcsOCArMzY3LDggQEAgLSAoTlNTdHJp
bmcgKilfc3RyaW5nVmFsdWUKICAgICBpZiAoIWVuY29kaW5nLmlzVmFsaWQoKSkKICAgICAgICAg
ZW5jb2RpbmcgPSBXaW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsKICAgICAKLSAgICBTaGFyZWRCdWZm
ZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJl
c291cmNlLT5kYXRhKCkgOiBudWxscHRyOwotICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+ZGF0YSgpIDog
bnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOworICAgIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJp
dmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxscHRyOworICAgIHJldHVybiBlbmNvZGlu
Zy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURh
dGEtPnNpemUoKSA6IDApOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5
U3RyZWFtLmNwcAppbmRleCAzNjBhZWRjZWFjY2IxZmJkZDFkNDRhZDQyZDhjMDRjNmYwNGI2MTll
Li41ZGYyMTcwZDJhNGJmYzRhNDgwY2Y0NWE4NGQyM2Q3MzA1OTM1ZmMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIC8vIE1lbW9yeVN0cmVhbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotTWVtb3J5U3RyZWFt
OjpNZW1vcnlTdHJlYW0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitNZW1vcnlTdHJl
YW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsK
QEAgLTQ0LDcgKzQ0LDcgQEAgTWVtb3J5U3RyZWFtOjp+TWVtb3J5U3RyZWFtKCkKICAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSIpOwogfQogCi1DT01QdHI8TWVtb3J5
U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQorQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0
YW5jZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgcmV0
dXJuIG5ldyBNZW1vcnlTdHJlYW0oV1RGTW92ZShidWZmZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vTWVtb3J5U3RyZWFtLmgKaW5kZXggMmJhN2RhOTBhNWM2MjEyOTAwOGRmNjEyOTczMGFj
ZGI5YmQ0NTNiYS4uMDc4NjBhMTVhYjRhM2RiMTE5YzkxMTNmYWZjOWMxMjRiMWMxNDZkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKQEAgLTM1LDcgKzM1LDcgQEAKIGNs
YXNzIE1lbW9yeVN0cmVhbSBmaW5hbCA6IHB1YmxpYyBJU3RyZWFtCiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVh
dGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAK
ICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBR
dWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9i
amVjdCk7CkBAIC03NSwxMCArNzUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBDbG9uZShfQ09NX091dHB0cl8gSVN0cmVhbSoqIHBwc3RtKTsKIAog
cHJpdmF0ZToKLSAgICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
Jik7CisgICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmKTsKICAgICB+TWVtb3J5U3RyZWFtKCk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgc2l6ZV90IG1fcG9zIHsgMCB9OwogICAgIFVMT05HIG1f
cmVmQ291bnQgeyAwIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcApp
bmRleCAwMTg0YmVmOGM3MzU4ZGJmYmExYmU5ZmUxYTg3ZTU3OTM4MTc2MmE5Li5jNWRlOTBjODEw
ZjFhZjU0MDVjMjlkYzQ4NjZhZGZmYzM2OTk5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJBcmNoaXZlLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIEhSRVNVTFQgV2ViQXJjaGl2ZTo6ZGF0
YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0pCiAgICAgaWYgKCFjZkRhdGEpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNm
RGF0YS5nZXQoKSkpOworICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNm
RGF0YS5nZXQoKSkpOwogCiAgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2Uo
V1RGTW92ZShidWZmZXIpKS5jb3B5UmVmVG8oc3RyZWFtKTsKICNlbHNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcAppbmRleCAyMTE1OThkMzlhNmFmMzYxY2MyZTQwNjc5MDZlMmI4Njg1N2VlZmMxLi5lOWEx
MzZmNmJiNDJlYzhhYjdmNTBhM2FiMzMzMzNmYjNmMjAyM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5j
cHAKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZQogewogfQogCi12
b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+JikKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiA+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAppbmRleCBjMTY3Y2EyOTIyM2VlYTk5ZTUyOGE4ZWE2MTI4YzFlMWU2OWVlM2YxLi4y
YWFhZmNkZGU0MjQ4ZjQxNWIxYTgzNzNiYzAzNjUxMjMyOWY4YzBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZp
bmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lk
IGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9p
ZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggYjQwNzNlMTA4YmQ1Yzc3MGRkNjJhMTA1YWZiMGNj
YTljNGVmMDM4ZS4uMDg5N2M3YzA1NDhkMjBiMWVmNDVlMzVlMWJmOGQ4ZTQwZWE1ZDNkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAgLTE3NSw3ICsxNzUs
NyBAQCBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFt
Kiogc3RyZWFtKQogICAgIGlmICghbV9sb2FkZXIpCiAgICAgICAgIHJldHVybiBFX1VORVhQRUNU
RUQ7CiAKLSAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+
bWFpblJlc291cmNlRGF0YSgpKS5jb3B5UmVmVG8oc3RyZWFtKTsKKyAgICByZXR1cm4gTWVtb3J5
U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpLT5tYWtl
Q29udGlndW91cygpKS5jb3B5UmVmVG8oc3RyZWFtKTsKIH0KIAogSFJFU1VMVCBXZWJEYXRhU291
cmNlOjpyZXByZXNlbnRhdGlvbihfQ09NX091dHB0cl9vcHRfIElXZWJEb2N1bWVudFJlcHJlc2Vu
dGF0aW9uKiogcmVwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDkwYTVh
MGExMzM2ZWVlYmM4YWY1Y2RlYzFiNWM2MjBlNjgyMzE5YjUuLjVlNTk3NDg0NDJjMjI4ZDVkOTc4
ZGRlMjRlYmU0MDU4Nzk5MDQ0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAK
QEAgLTU1OSw3ICs1NTksNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUmVxdWVzdChfSW5fb3B0
XyBJV2ViVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICByZXR1cm4gU19PSzsKIH0KIAotdm9pZCBX
ZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RS
IG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWls
aW5nVVJMKQordm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1l
LCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVT
dHJpbmcobWltZVR5cGUsIFN5c1N0cmluZ0xlbihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5
cGUpCkBAIC01ODUsMjcgKzU4NSwyNyBAQCB2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdAogCiBIUkVT
VUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5fIEJTVFIg
bWltZVR5cGUsIF9Jbl8gQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBfSW5fIEJTVFIgdXJsKQogewot
ICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIHNoYXJlZEJ1ZmZlcjsKIAogICAgIFNUQVRTVEcgc3RhdDsKICAgICBp
ZiAoU1VDQ0VFREVEKGRhdGEtPlN0YXQoJnN0YXQsIFNUQVRGTEFHX05PTkFNRSkpKSB7CiAgICAg
ICAgIGlmICghc3RhdC5jYlNpemUuSGlnaFBhcnQgJiYgc3RhdC5jYlNpemUuTG93UGFydCkgewog
ICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGFCdWZmZXIoc3RhdC5jYlNpemUuTG93UGFydCk7
CiAgICAgICAgICAgICBVTE9ORyByZWFkOwotICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9l
cyBhIG5lZWRsZXNzIGNvcHksIHdvdWxkIGJlIGJldHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhl
IFNoYXJlZEJ1ZmZlcgorICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNz
IGNvcHksIHdvdWxkIGJlIGJldHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhlIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIKICAgICAgICAgICAgIC8vIG9yIGFkb3B0IHRoZSBWZWN0b3Igb3Igc29tZXRo
aW5nLgogICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5SZWFkKGRhdGFCdWZmZXIuZGF0
YSgpLCBzdGF0aWNfY2FzdDxVTE9ORz4oZGF0YUJ1ZmZlci5zaXplKCkpLCAmcmVhZCkpKQotICAg
ICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0
aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgc2hhcmVk
QnVmZmVyLmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVm
ZmVyLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbG9hZERhdGEoV1RGTW92ZShz
aGFyZWRCdWZmZXIpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsK
KyAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIudGFrZSgpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5n
TmFtZSwgdXJsLCBudWxscHRyKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBXZWJG
cmFtZTo6bG9hZFBsYWluVGV4dFN0cmluZyhfSW5fIEJTVFIgcGxhaW5UZXh0LCBfSW5fIEJTVFIg
dXJsKQogewotICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4ocGxhaW5UZXh0KSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmlu
Z0xlbihwbGFpblRleHQpKTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIqPihwbGFpblRleHQpLCBzaXpl
b2YoVUNoYXIpICogU3lzU3RyaW5nTGVuKHBsYWluVGV4dCkpOwogICAgIEJTdHJpbmcgcGxhaW5U
ZXh0TWltZVR5cGUoVEVYVCgidGV4dC9wbGFpbiIpLCAxMCk7CiAgICAgQlN0cmluZyB1dGYxNkVu
Y29kaW5nKFRFWFQoInV0Zi0xNiIpLCA2KTsKICAgICBsb2FkRGF0YShXVEZNb3ZlKHNoYXJlZEJ1
ZmZlciksIHBsYWluVGV4dE1pbWVUeXBlLCB1dGYxNkVuY29kaW5nLCB1cmwsIG51bGxwdHIpOwpA
QCAtNjE0LDcgKzYxNCw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRQbGFpblRleHRTdHJpbmco
X0luXyBCU1RSIHBsYWluVGV4dCwgX0luXyBCU1RSIHVybCkKIAogdm9pZCBXZWJGcmFtZTo6bG9h
ZEhUTUxTdHJpbmcoX0luXyBCU1RSIGh0bWxTdHJpbmcsIF9Jbl8gQlNUUiBiYXNlVVJMLCBfSW5f
IEJTVFIgdW5yZWFjaGFibGVVUkwpCiB7Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNoYXIqPihodG1sU3RyaW5nKSwgc2l6ZW9m
KFVDaGFyKSAqIFN5c1N0cmluZ0xlbihodG1sU3RyaW5nKSk7CisgICAgYXV0byBzaGFyZWRCdWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4oaHRtbFN0cmluZyksIHNpemVvZihVQ2hhcikgKiBTeXNTdHJpbmdMZW4oaHRtbFN0cmluZykp
OwogICAgIEJTdHJpbmcgdXRmMTZFbmNvZGluZyhURVhUKCJ1dGYtMTYiKSwgNik7CiAgICAgbG9h
ZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCAwLCB1dGYxNkVuY29kaW5nLCBiYXNlVVJMLCB1
bnJlYWNoYWJsZVVSTCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaAppbmRleCA0MzYw
NTRmZDlkZGI0N2NhMzI5NmIxMTc5ODE0MzRlYzE4OTdkYWQxLi5mYTljMzgxY2M1NzNiYTZiMjA5
ODhlYWIzNTA4ZWQ5YTMwYThmMTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKQEAg
LTUwLDcgKzUwLDcgQEAgY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwogY2xhc3MgSW50UmVj
dDsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0NvbnRleHRSZWY7CkBAIC0xOTUsNyArMTk1LDcgQEAgcHJp
dmF0ZToKICAgICB+V2ViRnJhbWUoKTsKIAogICAgIHZvaWQgbG9hZEhUTUxTdHJpbmcoX0luXyBC
U1RSIHN0cmluZywgX0luXyBCU1RSIGJhc2VVUkwsIF9Jbl8gQlNUUiB1bnJlYWNoYWJsZVVSTCk7
Ci0gICAgdm9pZCBsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBCU1RSIG1p
bWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5n
VVJMKTsKKyAgICB2b2lkIGxvYWREYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVS
TCwgQlNUUiBmYWlsaW5nVVJMKTsKICAgICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4m
IGNvbXB1dGVQYWdlUmVjdHMoSERDIHByaW50REMpOwogICAgIHZvaWQgc2V0UHJpbnRpbmcoYm9v
bCBwcmludGluZywgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBwYWdlU2l6ZSwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiBvcmlnaW5hbFBhZ2VTaXplLCBmbG9hdCBtYXhpbXVtU2hyaW5rUmF0
aW8sIFdlYkNvcmU6OkFkanVzdFZpZXdTaXplT3JOb3QpOwogICAgIHZvaWQgaGVhZGVyQW5kRm9v
dGVySGVpZ2h0cyhmbG9hdCosIGZsb2F0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRETEwuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExM
LmNwcAppbmRleCA5NjIwMTk4YjRiNTQwYWU2Zjc5NjdmODIzM2M5NDY0YmQyNzc1ODUxLi5mNzk2
MTAxNjc2OWU5Y2ZlZjQwNjMwNmY2MzZkMjk0MjEyYzExNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYktpdERMTC5jcHAKQEAgLTE2NSw4ICsxNjUsOCBAQCB2b2lkIHNodXREb3duV2ViS2l0
KCkKIH0KIAogLy9GSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIG1vdmluZyB0aGlzIHRvIGEgbmV3
IGZpbGUgZm9yIGNyb3NzLXByb2plY3QgZnVuY3Rpb25hbGl0eQotV0VCS0lUX0FQSSBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIq
IG5hbWUpOwotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1
ZmZlcihjb25zdCBjaGFyKiBuYW1lKQorV0VCS0lUX0FQSSBSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1l
KTsKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJ
bnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgaW50IGlkcjsKICAgICAvLyB0ZW1w
b3JhcnkgaGFjayB0byBnZXQgcmVzb3VyY2UgaWQKQEAgLTIzMiw3ICsyMzIsNyBAQCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIq
IG5hbWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHVuc2lnbmVkIHNpemUgPSBTaXpl
b2ZSZXNvdXJjZShnSW5zdGFuY2UsIHJlc0luZm8pOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHJlc291cmNl
KSwgc2l6ZSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihyZXNvdXJjZSksIHNpemUpOwogfQog
CiAvLyBGb3JjZSBzeW1ib2xzIHRvIGJlIGluY2x1ZGVkIHNvIHdlIGNhbiBleHBvcnQgdGhlbSBm
b3IgbGVnYWN5IGNsaWVudHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAK
aW5kZXggOTQzZmE3YWI0NWM4YjBkMzVkNjdhMzBjMGZkYWI0MzQ5YTNlNjRhOS4uMmZmY2I4OTk5
YjE4NDQ4Y2Q2MjQ4ZjliZmNmMTVhYTUxN2NhZWJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBXZWJSZXNvdXJjZTo6fldlYlJlc291
cmNlKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7CiB9CiAK
LVdlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKK1dlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQ09NUHRyPE1lbW9yeVN0cmVhbT4g
bWVtb3J5U3RyZWFtID0gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGRhdGEp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKaW5kZXggYjZlYjg2ZmNjYTVl
MzEzNjljOWU4YjA2NTQxOGYyNzk0OTI5OTkwMy4uOTRhYjM1YzU2MDgxMDExN2M4OTVlNGExMGMz
OTFiY2NhMzM3ZDE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVz
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCkBAIC0z
Niw3ICszNiw3IEBACiAKIGNsYXNzIFdlYlJlc291cmNlIGZpbmFsIDogcHVibGljIElXZWJSZXNv
dXJjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJik7CisgICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpOwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRw
dHJfIHZvaWQqKiBwcHZPYmplY3QpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDY5NWFlNmNhNzkxMGNkNmYwOWM1OGQ3ZDQ3Y2EzMGIyMzdjODdi
NzkuLjBjOGNhZmE2MTI2YTEzMWMwMmRkNjdkMjk5ZDc3NjIzZjJhZmFlYzEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBAQAor
MjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAg
IERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMg
b25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
RmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rp
c3BsYXlMaXN0VGVzdHMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cmVh
ZEFsbENodW5rcyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlclRlc3QuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlclRlc3Q6OlNldFVwKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXJUZXN0OjpUZWFyRG93bik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcDoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2Vi
Q29yZVN0dWJzLmNwcDoKKyAgICAgICAgKGxvYWRSZXNvdXJjZUludG9CdWZmZXIpOgorCisyMDIx
LTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRk
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgQVBJIHRl
c3RzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRC
dWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAor
ICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZm
ZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMi0wMSAgQ2FybG9zIEFsYmVydG8gTG9w
ZXogUGVyZXogIDxjbG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbRVdTXVtHVEtdW1dQRV0g
QWRkIGEgbmV3IENsYXNzIGZvciBydW5uaW5nIGxheW91dCB0ZXN0cyBvbiB0aGUgRVdTIGZvciB0
aGUgR1RLIGFuZCBXUEUgcG9ydHMuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Zp
bGVTeXN0ZW0uY3BwCmluZGV4IDg1ODNiMjlhZDk5MGMyMmI0NzJjODY5ZWNjZDg2ODI5NjIxYmIw
YjQuLmI4NDdkM2E4MjZiM2Q5ZmZjMDhmNmYzYmUzODI2MGE2YzU5ZGZmMmEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC00NCw3ICs0NCw3IEBA
IHN0YXRpYyB2b2lkIGNyZWF0ZVRlc3RGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBGaWxl
U3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiB9OwogCi0vLyBGSVhNRTogUmVmYWN0b3Ig
RmlsZVN5c3RlbVRlc3QgYW5kIFNoYXJlZEJ1ZmZlclRlc3QgYXMgYSBzaW5nbGUgY2xhc3MuCisv
LyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgogY2xhc3MgRmlsZVN5c3RlbVRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0
cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0
cy5jcHAKaW5kZXggYjk4NmEyYTU4ODg0NjViZTE5MjBhNmUwNjY4ZDcwZGIyNDkwNmVhYi4uMjg2
OTNiNmU1NjdhNzExNzE4NmQzOGJkYTc2NWRkMGM5Mzc1YjUxOCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcApAQCAt
MTk4LDExICsxOTgsMTEgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50
KQogICAgICAgICAgICAgcmV0dXJuIHsgZ2xvYmFsQnVmZmVySWRlbnRpZmllciwgZ2xvYmFsSXRl
bUJ1ZmZlciwgZ2xvYmFsSXRlbUJ1ZmZlckNhcGFjaXR5IH07CiAgICAgICAgIH0KIAotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlM
aXN0SXRlbSYgZGlzcGxheUxpc3RJdGVtKSBjb25zdCBmaW5hbAorICAgICAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlz
dEl0ZW0mIGRpc3BsYXlMaXN0SXRlbSkgY29uc3QgZmluYWwKICAgICAgICAgewogICAgICAgICAg
ICAgYXV0byBpbmRleCA9IG1faXRlbXMuc2l6ZSgpOwogICAgICAgICAgICAgbV9pdGVtcy5hcHBl
bmQoc3RkOjpnZXQ8U3Ryb2tlUGF0aD4oZGlzcGxheUxpc3RJdGVtKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJmlu
ZGV4KSwgc2l6ZW9mKHNpemVfdCkpOworICAgICAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmaW5kZXgpLCBzaXpl
b2Yoc2l6ZV90KSk7CiAgICAgICAgIH0KIAogICAgICAgICBWZWN0b3I8U3Ryb2tlUGF0aD4mIG1f
aXRlbXM7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRC
dWZmZXIuY3BwCmluZGV4IGRkYmZjMWYyYjE4MjFjYjFkZmFiYzhlMmY2MzI3YjIxMmM3Y2E0Njgu
LjVkMDQ1NGI1ZWZhMTQyMTU3ODg2ZDY0MzQxYzkzOTZkNjkwOTRjNWEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCkBAIC00MSw4MCArNDEsNzMgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mTWlzc2luZ0ZpbGUpCitURVNUX0YoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mTWlzc2luZ0ZpbGUpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAg
ICAgQVNTRVJUX05VTEwoYnVmZmVyKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNy
ZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAg
RVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRl
c3REYXRhKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVz
dERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAg
IEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxlbihGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSkpOworICAgIEVYUEVDVF9UUlVFKFN0cmluZyhGcmFnbWVudGVk
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKK1RFU1RfRihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0Vt
cHR5RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOwogICAg
IEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNFbXB0
eSgpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0
aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvcHkgPSBidWZmZXItPmNvcHkoKTsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY29weSA9IGJ1ZmZlci0+Y29weSgpOwogICAgIEVY
UEVDVF9HVChidWZmZXItPnNpemUoKSwgMFUpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6
ZSgpID09IGNvcHktPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRh
dGEoKSwgY29weS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKCFt
ZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVy
Q3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0Zp
bGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVM
TChidWZmZXIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVy
LT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPmRhdGEoKSk7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKCpidWZmZXIpOworICAg
IGJ1aWxkZXIuYXBwZW5kKCJhIiwgMSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5zaXplKCkg
PT0gKHN0cmxlbihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7
CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4o
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQRUNUX0VR
KCdhJywgYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAotVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmls
ZSkKLXsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9O
VUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5hcHBlbmQoImEiLCAxKTsKLSAgICBFWFBFQ1RfVFJV
RShidWZmZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkp
ICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIFNoYXJlZEJ1
ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
KSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwotfQotCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5
Q3JlYXRlQXJyYXlCdWZmZXIpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHRy
eUNyZWF0ZUFycmF5QnVmZmVyKQogewogICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOwog
ICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQiOwogICAgIGNoYXIgdGVzdERhdGEyW10gPSAi
R29vZGJ5ZSI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7Ci0gICAgc2hhcmVk
QnVmZmVyLT5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7Ci0gICAgc2hhcmVk
QnVmZmVyLT5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7Ci0gICAgUmVmUHRy
PEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIodGVzdERhdGEwLCBzdHJs
ZW4odGVzdERhdGEwKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVz
dERhdGExKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEy
KSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCkt
PnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgY2hhciBleHBlY3RlZENvbmNhdGVuYXRpb25b
XSA9ICJIZWxsb1dvcmxkR29vZGJ5ZSI7CiAgICAgQVNTRVJUX0VRKHN0cmxlbihleHBlY3RlZENv
bmNhdGVuYXRpb24pLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBFWFBFQ1RfRVEo
MCwgbWVtY21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiwgYXJyYXlCdWZmZXItPmRhdGEoKSwgc3Ry
bGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKK1RFU1RfRihGcmFnbWVudGVk
U2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQogewog
ICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IwKDB4NDAwMCwgJ2EnKTsKICAgICBWZWN0b3I8dWlu
dDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIo
MHg0MDAwLCAnYycpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IwKSk7Ci0gICAgc2hhcmVkQnVmZmVy
LT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RG
TW92ZSh2ZWN0b3IyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNo
YXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXIoV1RGTW92ZSh2ZWN0b3IwKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92
ZSh2ZWN0b3IxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7CisgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCk7CiAgICAgQVNTRVJUX0VRKDB4NDAwMFUgKyAweDQwMDBVICsgMHg0MDAw
VSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgaW50IHBvc2l0aW9uID0gMDsKICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDB4NDAwMDsgKytpKSB7CkBAIC0xMzEsNyArMTI0LDcgQEAg
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50
cykKICAgICB9CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQorVEVTVF9GKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogewogICAgIGNoYXIgdGVzdERhdGFbXSA9
ICJIYWJpdGFzc2UgaW50ZWdlciBlcm9zIHRpbmNpZHVudCBhIHNjZWxlcmlzcXVlISBFbmltIGVs
aXQ/IFNjZWxlcmlzcXVlIG1hZ25pcywiCiAgICAgImV0IG1vbnRlcyB1bHRyaWNlcyB0cmlzdGlx
dWUgYSEgUGlkLiBWZWxpdCB0dXJwaXMsIGRhcGlidXMgaW50ZWdlciByaG9uY3VzIHNvY2lpcyBh
bWV0IGZhY2lsaXNpcywiCkBAIC0xNTEsMTcgKzE0NCw1MyBAQCBURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgY29weSkKICAgICAibWF0dGlzIGRpZ25pc3NpbSBtYXNzYSBhYyBwdWx2aW5hciB1cm5h
LCBudW5jIHV0LiBTYWdpdHRpcywgYWxpcXVldCBwZW5hdGlidXMgcHJvaW4gbG9yZW0sIHB1bHZp
bmFyIGxlY3R1cywiCiAgICAgImF1Z3VlIHByb2luISBBYywgYXJjdSBxdWlzLiBQbGFjZXJhdCBo
YWJpdGFzc2UsIHJpZGljdWx1cyByaWRpY3VsdXMuIjsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBz
dHJsZW4odGVzdERhdGEpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRl
c3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5n
dGgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVzdERhdGEsIGxlbmd0aCk7
CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFw
cGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxl
bmd0aCk7CiAgICAgLy8gc2hhcmVkQnVmZmVyIG11c3QgY29udGFpbiBkYXRhIG1vcmUgdGhhbiBz
ZWdtZW50U2l6ZSAoPSAweDEwMDApIHRvIGNoZWNrIGNvcHkoKS4KLSAgICBBU1NFUlRfRVEobGVu
Z3RoICogNCwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGNsb25lID0gc2hhcmVkQnVmZmVyLT5jb3B5KCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQs
IGNsb25lLT5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPmRhdGEoKSwg
c2hhcmVkQnVmZmVyLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKLSAgICBjbG9uZS0+YXBwZW5k
KHRlc3REYXRhLCBsZW5ndGgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA1LCBjbG9uZS0+c2l6
ZSgpKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgYnVpbGRlcjEuc2l6ZSgpKTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBidWlsZGVyMS5jb3B5KCk7Cisg
ICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgw
LCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVpbGRlcjEuZ2V0KCkt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOworCisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBidWlsZGVyMi5hcHBlbmQoKmNsb25lKTsKKyAg
ICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgRVhQRUNUX0VRKGxlbmd0
aCAqIDUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMi50YWtl
KCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAvLyBi
dWlsZGVyIGlzIG5vdyBlbXB0eS4KKyAgICBFWFBFQ1RfRVEoMFUsIGJ1aWxkZXIyLnNpemUoKSk7
CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1
aWxkZXIyLmlzRW1wdHkoKSk7Cit9CisKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVz
dCwgYnVpbGRlcikKK3sKKyAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwor
ICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1
aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgYXV0byBjb3B5ID0gYnVpbGRlcjEuY29weSgpOworICAg
IGF1dG8gYnVmZmVyID0gYnVpbGRlcjEudGFrZSgpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIx
LmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAgIEVY
UEVDVF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRyKCkpOyAvLyBXZSBoYXZlIGRpZmZlcmVudCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyCisgICAgRVhQRUNUX0VRKGNvcHkuZ2V0KCksIGJ1ZmZlci5n
ZXQoKSk7IC8vIEJ1dCB0aGVpciBjb250ZW50IGlzIGlkZW50aWNhbAorCisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7
CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5hcHBl
bmQodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxk
ZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAg
ICBidWlsZGVyMi5yZXNldCgpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsK
KyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmVtcHR5
KCk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJV
RShidWlsZGVyMi5pc0VtcHR5KCkpOwogfQogCiBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25z
dCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqIGV4cGVj
dGVkKQpAQCAtMTczLDcwICsyMDIsODAgQEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3Qg
dWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgogICAgICAg
ICBFWFBFQ1RfRVEoYnVmZmVyW2ldLCBleHBlY3RlZFtpXSk7CiB9CiAKLVRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVz
dCwgZ2V0U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydhJywgJ2InLCAn
YycsICdkJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAnZycsICdoJ307
Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307Ci0gICAgCi0g
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBw
ZW5kKFdURk1vdmUoczEpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMyKSk7Ci0gICAg
YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsg
J2EnLCAnYicsICdjJywgJ2QnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScsICdm
JywgJ2cnLCAnaCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7ICdpJywgJ2onLCAnaycs
ICdsJyB9OworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIu
YXBwZW5kKFdURk1vdmUoczEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMyKSk7Cisg
ICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRl
ci50YWtlKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21lRGF0YSgwKTsK
LSAgICBhdXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoMSA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg3
KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAgIGF1dG8ga2wg
PSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGJ1ZmZl
ci0+ZGF0YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAg
ICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAg
YXV0byBhYmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7CisgICAgYXV0byBn
aDIgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2hpamtsID0gY29udGlndW91
c0J1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVmZmVyLT5nZXRTb21lRGF0
YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgpLCAiYWJjZCIp
OwotICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAiZ2giKTsKKyAgICBjaGVj
a0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZlciho
LmRhdGEoKSwgaC5zaXplKCksICJoIik7CiAgICAgY2hlY2tCdWZmZXIoaWprbC5kYXRhKCksIGlq
a2wuc2l6ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEoKSwga2wuc2l6ZSgp
LCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZlci0+c2l6ZSgpLCAi
YWJjZGVmZ2hpamtsIik7CisgICAgY2hlY2tCdWZmZXIoZ2gyLmRhdGEoKSwgZ2gyLnNpemUoKSwg
ImdoIik7CiAgICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRhdGEoKSwgZ2hpamtsLnNpemUoKSwgImdo
aWprbCIpOworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgpKTsKKyAgICBjaGVj
a0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hhclB0cigpKTsKICAg
ICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CiB9CiAKLVRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3QsIGlzRXF1YWxUbykKIHsKICAgICBhdXRvIG1ha2VCdWZmZXIgPSBbXSAoVmVjdG9yPFZlY3Rv
cjx1aW50OF90Pj4mJiBjb250ZW50cykgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAg
ICAgICAgZm9yIChhdXRvJiBjb250ZW50IDogY29udGVudHMpCi0gICAgICAgICAgICBidWZmZXIt
PmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoY29udGVudCkpOworICAgICAgICByZXR1cm4g
YnVpbGRlci50YWtlKCk7CiAgICAgfTsKLSAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHt7
J2EnLCAnYicsICdjJywgJ2QnfX0pOworICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoeyB7
ICdhJywgJ2InLCAnYycsICdkJyB9IH0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBi
dWZmZXIxLmdldCgpKTsKIAotICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4oeydh
JywgJ2InLCAnYycsICdkJ30pKTsKLSAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFrZUJ1
ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgpKTsK
LSAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydhJ30sIHsnYicsICdjJ30sIHsnZCd9fSkuZ2V0
KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQ
RUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywg
J2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9
fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05F
KG1ha2VCdWZmZXIoe3snYSd9LCB7J2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnfSwgeydh
J319KS5nZXQoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUoYnVm
ZmVyMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7ICdhJywgJ2InLCAn
YycsICdkJyB9KSk7CisgICAgRVhQRUNUX0VRKCpidWlsZGVyLmdldCgpLCBtYWtlQnVmZmVyKHsg
eyAnYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJyB9IH0pLmdldCgpKTsKKwor
ICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicsICdjJyB9LCB7ICdkJyB9
IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9LCB7ICdjJywgJ2QnIH0gfSkuZ2V0
KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBt
YWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORSht
YWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYicsICdj
JyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2In
IH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdhJyB9IH0pLmdldCgpKTsKIH0K
IAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQorVEVTVF9GKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKIHsKICAgICBWZWN0b3I8dWludDhfdD4g
dDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHQxKSk7Cisg
ICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBTdHJpbmcgcmVzdWx0ID0gYnVm
ZmVyLT50b0hleFN0cmluZygpOwogICAgIEVYUEVDVF9FUShyZXN1bHQsICIxMTA1MTIiKTsKLSAg
ICBidWZmZXItPmNsZWFyKCk7CisgICAgYnVpbGRlci5yZXNldCgpOworICAgIGJ1ZmZlciA9IGJ1
aWxkZXIudGFrZSgpOwogICAgIEVYUEVDVF9FUShidWZmZXItPnRvSGV4U3RyaW5nKCksICIiKTsK
IH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCitURVNUX0YoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiB7CiAgICAgY29uc3QgY2hhciogY29uc3Qgc2ltcGxlVGV4
dCA9ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3QuIjsKIAotICAgIGF1dG8gY2hlY2sgPSBbXShTaGFy
ZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgeworICAgIGF1dG8gY2hlY2sgPSBbXShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRh
dGEgPSBzaGFyZWRCdWZmZXIucmVhZCg0LCAzKTsKICAgICAgICAgRVhQRUNUX0VRKGRhdGEuc2l6
ZSgpLCAzdSk7CiAgICAgICAgIEVYUEVDVF9FUShTdHJpbmcoZGF0YS5kYXRhKCksIDMpLCAiIGlz
Iik7CkBAIC0yNDYsMTkgKzI4NSwyMCBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkK
IAogICAgICAgICBFWFBFQ1RfRVEoU3RyaW5nKGRhdGEuZGF0YSgpLCAxOCksICIgaXMgYSBzaW1w
bGUgdGVzdC4iKTsKICAgICB9OwotICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBhdXRvIHNoYXJl
ZEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJs
ZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
YnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsg
aSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0g
ICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRl
eHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShi
dWlsZGVyLmlzTnVsbCgpICYmICFidWlsZGVyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXpl
KCksIDB1KTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKLSAg
ICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVYUEVD
VF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVj
ayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwg
Mik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwor
ICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKQEAgLTI2
Niw3ICszMDYsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKIHRlbXBsYXRlPCB0
eXBlbmFtZSBULCBzaXplX3QgTiA+CiBjb25zdGV4cHIgc2l6ZV90IGFycmF5c2l6ZSggY29uc3Qg
VCAoJilbTl0gKSB7IHJldHVybiBOOyB9CiAKLXN0YXRpYyB2b2lkIHJlYWRBbGxDaHVua3Moc3Rk
Ojp2ZWN0b3I8U3RyaW5nPiogY2h1bmtzLCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKQor
c3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxTdHJpbmc+KiBjaHVua3MsIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IgPSAi
XHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKQogewogICAgIFNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZidWZmZXIsIHNlcGFyYXRvci51dGY4KCkuZGF0YSgp
KTsKICAgICBTdHJpbmcgY2h1bmsgPSBjaHVua1JlYWRlci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdX
aXRoTGF0aW4xRmFsbGJhY2soaW5jbHVkZVNlcGFyYXRvcik7CkBAIC0yOTksNyArMzM5LDcgQEAg
c3RhdGljIHZvaWQgY2hlY2tEYXRhSW5SYW5nZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEs
IHNpemVfdCBzdGFydCwgc2l6ZV90IGwKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
VGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKIHsKLSAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVm
ZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
IGNodW5rUmVhZGVyKCZzaGFyZWRCdWZmZXIsICJceDEwXHgxMVx4MTIiKTsKICAgICAgICAgVmVj
dG9yPHVpbnQ4X3Q+IG91dDsKICAgICAgICAgRVhQRUNUX1RSVUUoY2h1bmtSZWFkZXIubmV4dENo
dW5rKG91dCkpOwpAQCAtMzE0LDkgKzM1NCw5IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlclRlc3QsIGluY2x1ZGVTZXBhcmF0b3IpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAy
NTY7ICsraSkKICAgICAgICAgZGF0YVtpXSA9IGk7CiAKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIDI1Nik7CisgICAgYXV0byBzaGFyZWRCdWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgMjU2KTsKICAgICBjaGVjayhz
aGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgc2hhcmVkQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyNTY7ICsraSkgewogICAgICAgICBjaGFyIGMgPSBp
OwogICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmYywgMSk7CkBAIC0zMjgsNyArMzY4LDcg
QEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCiB7CiAgICAg
Y29uc3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3QuIjsK
IAotICAgIGF1dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgeworICAg
IGF1dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsK
ICAgICAgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJnNoYXJlZEJ1ZmZl
ciwgImlzIik7CiAKICAgICAgICAgU3RyaW5nIGNodW5rID0gY2h1bmtSZWFkZXIubmV4dENodW5r
QXNVVEY4U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKCk7CkBAIC0zNTUsMTUgKzM5NSwxNSBAQCBU
RVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKICAgICAgICAgY2h1
bmsgPSBjaHVua1JlYWRlci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJhY2so
KTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2h1bmsuaXNOdWxsKCkpOwogICAgIH07Ci0gICAgYXV0
byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4o
c2ltcGxlVGV4dCkpOworICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2so
c2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisgICAgc2hhcmVkQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKICAg
ICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwogICAgIGNoZWNr
KHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgIHNoYXJlZEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIp
CiAgICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKICAgICBF
WFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CkBAIC0z
NzMsNyArNDEzLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0Rh
dGEpCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCByZWFkQWxsQ2h1bmtzSW5N
dWx0aVNlZ21lbnQpCiB7CiAgICAgY29uc3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlz
IGlzIHRoZSBtb3N0IHJpZGljdWxvdXMgaGlzdG9yeSB0aGVyZSBpcy4iOwotICAgIGF1dG8gY2hl
Y2sgPSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgeworICAgIGF1dG8gY2hlY2sgPSBb
XShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAgc3RkOjp2
ZWN0b3I8U3RyaW5nPiBjaHVua3M7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVk
Q2h1bmtzMVdpdGhvdXRTZXBhcmF0b3JbXSA9IHsgIlRoIiwgInMgIiwgInMgdGhlIG1vc3QgciIs
ICJkIiwgImN1bG91cyBoIiwgInN0b3J5IHRoZXJlICIsICJzLiIgfTsKICAgICAgICAgcmVhZEFs
bENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpIik7CkBAIC00MDQsMTUgKzQ0NCwxNSBA
QCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCByZWFkQWxsQ2h1bmtzSW5NdWx0
aVNlZ21lbnQpCiAgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAi
aXN0IiwgdHJ1ZSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhw
ZWN0ZWRDaHVua3MzV2l0aFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzM1dpdGhT
ZXBhcmF0b3IpKSk7CiAgICAgfTsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgYXV0byBzaGFy
ZWRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3Ry
bGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgc2hhcmVkQnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
dHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKICAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNp
bXBsZVRleHRbaV0sIDEpOwogICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3Ry
bGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwogCi0gICAgc2hhcmVk
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBzaGFyZWRCdWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSA1KQogICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVu
ZCgmc2ltcGxlVGV4dFtpXSwgNSk7CiAgICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgp
LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwpAQCAtNDIzLDcgKzQ2Myw3IEBAIFRFU1RfRihTaGFyZWRC
dWZmZXJDaHVua1JlYWRlclRlc3QsIGNoYW5naW5nSXRlcmF0b3IpCiB7CiAgICAgewogICAgICAg
ICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgdGhlIG1vc3QgcmlkaWN1
bG91cyBoaXN0b3J5IHRoZXJlIGlzLiI7Ci0gICAgICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICAg
ICAgYXV0byBzaGFyZWRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2lt
cGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICAgICAgU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXIgY2h1bmtSZWFkZXIoc2hhcmVkQnVmZmVyLnB0cigpLCAiaXMiKTsKICAgICAgICAgU3Ry
aW5nIGNodW5rID0gY2h1bmtSZWFkZXIubmV4dENodW5rQXNVVEY4U3RyaW5nV2l0aExhdGluMUZh
bGxiYWNrKCk7CiAgICAgICAgIEVYUEVDVF9FUShjaHVuaywgIlRoIik7CkBAIC00NTEsNyArNDkx
LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgY2hhbmdpbmdJdGVyYXRv
cikKIAogICAgIHsKICAgICAgICAgY29uc3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJkb2ci
OwotICAgICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBs
ZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgICAgIGF1dG8gc2hhcmVkQnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVU
ZXh0KSk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzV2l0aG91dFNl
cGFyYXRvcltdID0geyAiIiB9OwogICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5rczsK
ICAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJkb2ciKTsKQEAg
LTQ2Niw3ICs1MDYsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBjaGFu
Z2luZ0l0ZXJhdG9yKQogICAgIC8vIEVuZHMgd2l0aCByZXBlYXRlZCBzZXBhcmF0b3JzLgogICAg
IHsKICAgICAgICAgY29uc3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJCZWF1Y291cCBkZSBj
aGF0cyBjYXRjYXRjYXRjYXRjYXQiOwotICAgICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgICAg
IGF1dG8gc2hhcmVkQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBs
ZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4
cGVjdGVkQ2h1bmtzV2l0aG91dFNlcGFyYXRvcltdID0geyAiQmVhdWNvdXAgZGUgY2hhdHMgIiwg
IiIsICIiLCAiIiwgIiIgfTsKICAgICAgICAgc3RkOjp2ZWN0b3I8U3RyaW5nPiBjaHVua3M7CiAg
ICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiY2F0Iik7CkBAIC00
ODAsNyArNTIwLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgY2hhbmdp
bmdJdGVyYXRvcikKICAgICB7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQg
PSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LlxyXG5Ob3RoaW5nIHNwZWNpYWwuXHJcbiI7CiAgICAg
ICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzW10gPSB7ICJUaGlzIGlzIGEgc2lt
cGxlIHRlc3QuIiwgIk5vdGhpbmcgc3BlY2lhbC4iIH07Ci0gICAgICAgIGF1dG8gc2hhcmVkQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQp
KTsKKyAgICAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICAgICAgc3RkOjp2ZWN0
b3I8U3RyaW5nPiBjaHVua3M7CiAgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVk
QnVmZmVyKTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3Rl
ZENodW5rcywgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzKSkpOwpAQCAtNDg5LDcgKzUyOSw3IEBA
IFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGNoYW5naW5nSXRlcmF0b3IpCiAg
ICAgewogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgYSBz
aW1wbGUgdGVzdC5cclxuTm90aGluZyBzcGVjaWFsLiI7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNv
bnN0IGV4cGVjdGVkQ2h1bmtzW10gPSB7ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3QuIiwgIk5vdGhp
bmcgc3BlY2lhbC4iIH07Ci0gICAgICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICAgICAgYXV0byBz
aGFyZWRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwg
c3RybGVuKHNpbXBsZVRleHQpKTsKIAogICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5r
czsKICAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIpOwpAQCAtNDk5
LDcgKzUzOSw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGNoYW5naW5n
SXRlcmF0b3IpCiAgICAgewogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0g
IlNpbXBsZSBsaW5lIHdpdGggbm8gRU9MLiI7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4
cGVjdGVkQ2h1bmtzW10gPSB7ICJTaW1wbGUgbGluZSB3aXRoIG5vIEVPTC4iIH07Ci0gICAgICAg
IGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3Ry
bGVuKHNpbXBsZVRleHQpKTsKKyAgICAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKIAog
ICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5rczsKICAgICAgICAgcmVhZEFsbENodW5r
cygmY2h1bmtzLCBzaGFyZWRCdWZmZXIpOwpAQCAtNTA5LDcgKzU0OSw3IEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGNoYW5naW5nSXRlcmF0b3IpCiAgICAgewogICAgICAg
ICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIkxpbmUgdGhhdCBoYXMgYSBFT0xcclxu
YW5kIHRoZW4gZW5kcyB3aXRoIGEgQ1JcciI7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4
cGVjdGVkQ2h1bmtzW10gPSB7ICJMaW5lIHRoYXQgaGFzIGEgRU9MIiwgImFuZCB0aGVuIGVuZHMg
d2l0aCBhIENSXHIiIH07Ci0gICAgICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICAgICAgYXV0byBz
aGFyZWRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwg
c3RybGVuKHNpbXBsZVRleHQpKTsKIAogICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5r
czsKICAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIpOwpAQCAtNTE5
LDcgKzU1OSw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGNoYW5naW5n
SXRlcmF0b3IpCiAgICAgewogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0g
IlJlcGVhdGVkIENScyBzaG91bGQgbm90IGNhdXNlIHByb2JlbXNcclxyXHJcblNob3Vsbid0IHRo
ZXk/IjsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3NbXSA9IHsgIlJl
cGVhdGVkIENScyBzaG91bGQgbm90IGNhdXNlIHByb2JlbXNcclxyIiwgIlNob3Vsbid0IHRoZXk/
IiB9OwotICAgICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNp
bXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgICAgIGF1dG8gc2hhcmVkQnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1w
bGVUZXh0KSk7CiAKICAgICAgICAgc3RkOjp2ZWN0b3I8U3RyaW5nPiBjaHVua3M7CiAgICAgICAg
IHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyKTsKQEAgLTUyOCw3ICs1NjgsNyBA
QCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQog
ICAgIHsKICAgICAgICAgY29uc3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJFT0xcclxuIGJl
dHdlXHJcbmVuIHNlZ21lbnRzIjsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRD
aHVua3NbXSA9IHsgIkVPTCIsICIgYmV0d2UiLCAiZW4gc2VnbWVudHMiIH07Ci0gICAgICAgIGF1
dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVu
KHNpbXBsZVRleHQpKTsKKyAgICAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKIAogICAg
ICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5rczsKICAgICAgICAgcmVhZEFsbENodW5rcygm
Y2h1bmtzLCBzaGFyZWRCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCmluZGV4IDliOGIxM2E3NWQ1MmZmOTUx
ZWFkMTgxODVkNTZjMzc5MWIyZDdiZWQuLmQwMzQxYTgxZGVkYTcxOWYzNWZjY2UzOTQ2NTVlYzI1
NWFiOGZiYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXJUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewogCi12b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKK3ZvaWQgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVN
YWluVGhyZWFkKCk7CiAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpT
ZXRVcCgpCiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiB9CiAKLXZvaWQgU2hh
cmVkQnVmZmVyVGVzdDo6VGVhckRvd24oKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVz
dDo6VGVhckRvd24oKQogewogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBh
dGgpOwogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVy
VGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRl
c3QuaAppbmRleCA2NDAxMTliZGU2ZmNlNDFmMDFlYWFiNjMxNjg0N2JlNTZiOTBjZjVjLi5hMzky
YTA1MTk0NzU2ZDJhZDU2ZTgyNDkyOWVjZTRjMTVmM2FkMDU1IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmgKQEAgLTI5LDcg
KzI5LDcgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1jbGFzcyBTaGFyZWRCdWZm
ZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRV
cCgpIG92ZXJyaWRlOwogICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVz
dHNDRy5jcHAKaW5kZXggZDg0NmMwMjVlMGRjZDhjYTgyOWI3MTI3M2RhZjFmNzA3ZTlkOTJkZC4u
NGE3NTY3YTk4MzM5NGE3NTM2MWJlMWI0Y2Q5YThiNDhiOWZkODczOCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVz
dHNDRy5jcHAKQEAgLTEwMyw5ICsxMDMsOSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4geyBn
bG9iYWxCdWZmZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVtQnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVy
Q2FwYWNpdHkgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVt
T3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0IGZpbmFsCisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxh
eUxpc3RJdGVtJikgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggOTMzMzFkNzAyYzUzMGIyNGM0
N2NjMDlhNjhjZmIxODg1ZDRlYjExMC4uMTIxNDRmZTE3NzQ1MGVjYzFiOGFkNDg1ZGMwNTFkNTI0
NTM1Y2QyOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nv
Y29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUsNTYgKzQ1LDU3IEBAIHN0YXRpYyB2b2lk
IGV4cGVjdERhdGFBcnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAqPiAqZXhwZWN0ZWQsIE5TQXJy
YXk8TlNEYXRhICo+CiAgICAgfQogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRl
TlNEYXRhQXJyYXkpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5T
RGF0YUFycmF5KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRvIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVh
bChuaWwsIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5lbXB0eSgpOworICAgICAg
ICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFB
cnJheSgpLmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0
YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNv
bnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7Ci0gICAgICAgIGV4
cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFB
cnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxv
RGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNF
cXVhbChAWyBoZWxsb0RhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5n
ZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBD
RkRhdGFSZWYpd29ybGREYXRhKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhl
bGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsK
KyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0s
IGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCi0gICAgICAgIGV4
cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
aGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7Ci0gICAgICAgIGV4cGVjdERh
dGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJp
ZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAg
ICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7
CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3Jl
YXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFs
KEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVh
dGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBb
IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgp
KS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgfQogfQogCi1URVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQpCitURVNUX0YoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUZvckRhdGFTZWdtZW50KQogewogICAgIEBh
dXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKIAogICAgICAgICBO
U0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1
XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywg
aGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKilo
ZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwogCiAgICAgICAgIE5TRGF0YSAqd29y
bGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAg
ICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKIAogICAgICAg
ICBOU0FycmF5ICpleHBlY3RlZERhdGEgPSBAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdOwogICAg
ICAgICBOU1VJbnRlZ2VyIGV4cGVjdGVkU2l6ZSA9IGhlbGxvRGF0YS5sZW5ndGggKyB3b3JsZERh
dGEubGVuZ3RoOwogCiAgICAgICAgIE5TVUludGVnZXIgc2VnbWVudENvdW50ID0gMDsKLSAgICAg
ICAgZm9yIChhdXRvJiBzZWdtZW50IDogYnVmZmVyLmdldCgpKQorICAgICAgICBmb3IgKGF1dG8m
IHNlZ21lbnQgOiAqYnVpbGRlci5nZXQoKSkKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtzZWdt
ZW50LnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3Nl
Z21lbnRDb3VudCsrXV0pOwogICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBz
ZWdtZW50Q291bnQpOwogCiAgICAgICAgIE5TVUludGVnZXIgcG9zaXRpb24gPSAwOwogICAgICAg
ICBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICB3aGlsZSAoYnVmZmVyLT5zaXplKCkgPiBwb3Np
dGlvbikgewotICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRhbERhdGEgPSBidWZmZXItPmdldFNv
bWVEYXRhKHBvc2l0aW9uKTsKKyAgICAgICAgd2hpbGUgKGJ1aWxkZXIuc2l6ZSgpID4gcG9zaXRp
b24pIHsKKyAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVpbGRlci5nZXQoKS0+
Z2V0U29tZURhdGEocG9zaXRpb24pOwogICAgICAgICAgICAgRVhQRUNUX1RSVUUoW2luY3JlbWVu
dGFsRGF0YS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50
Q291bnQrK11dKTsKICAgICAgICAgICAgIHBvc2l0aW9uICs9IGluY3JlbWVudGFsRGF0YS5zaXpl
KCk7CiAgICAgICAgIH0KICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2Vn
bWVudENvdW50KTsKIAotICAgICAgICBhdXRvIGxhc3RCeXRlID0gYnVmZmVyLT5nZXRTb21lRGF0
YShleHBlY3RlZFNpemUgLSAxKTsKKyAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1aWxkZXIuZ2V0
KCktPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEpOwogICAgICAgICBFWFBFQ1RfVFJVRShb
bGFzdEJ5dGUuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpbQCJkIiBkYXRhVXNpbmdFbmNv
ZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddXSk7CiAgICAgICAgIEVYUEVDVF9FUSgxTFUsIGxh
c3RCeXRlLnNpemUoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS93
aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2Vi
Q29yZVN0dWJzLmNwcAppbmRleCA0NmM3NjIwM2UxYjI1YWFhYjdhMDJlMGJiMmJmNWUwYzQzNmVk
Njg3Li41YmU2NjU5NDYxMzczMWUyMWVkOTdkYTc0YzU3MzhjN2NhMjg1YmY0IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNwcApAQCAtMjUsNyArMjUsNyBA
QAogCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAotUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKikKK1JlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVy
KGNvbnN0IGNoYXIqKQogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwppbmRl
eCA4OTIzOTJkODdmNzQwMGViZmE5OGY1YTg2NTNjOWZkNGUyNzU1ZjU5Li43MDgwYTZjZjdhNmQy
MjAwYWUzMDNjMjJjZTczMTE5MTBkZGFhMWYyIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDIxLTEyLTAyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAg
ICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGln
dW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHk6IHBhcnQgMworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEZWNvZGVyVGVzdC9EZWNvZGVy
VGVzdC9tYWluLm1tOgorICAgICAgICAobWFpbik6CisKIDIwMjEtMTEtMjEgIENhdGhpZSBDaGVu
ICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtQZXJmb3JtYW5jZSB0ZXN0XVtj
c3MtY29udGFpbl0gQWRkIGNhc2UgdG8gdGVzdCBjb250YWluOiBsYXlvdXQgaW5zaWRlIGEgY29t
cGxleCBkb2N1bWVudApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9EZWNvZGVyVGVzdC9E
ZWNvZGVyVGVzdC9tYWluLm1tIGIvUGVyZm9ybWFuY2VUZXN0cy9EZWNvZGVyVGVzdC9EZWNvZGVy
VGVzdC9tYWluLm1tCmluZGV4IGUyMzdkNWRjMTBmODJhMmE0NDA2YTU0MzU0YTY5OGFlMzVmMDFh
MmMuLmMwNzY4NzZmZjk0OTljNGM3NjU2OWVlZDIxYzQ1NmY2ODY5Yjk3N2UgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvRGVjb2RlclRlc3QvRGVjb2RlclRlc3QvbWFpbi5tbQorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0RlY29kZXJUZXN0L0RlY29kZXJUZXN0L21haW4ubW0KQEAgLTExNSw3
ICsxMTUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQogICAgICAgICAgICAg
cmV0dXJuIC0xOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShmaWxlbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoZmlsZW5hbWUudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGlmICghYnVmZmVy
KSB7CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNvdWxkIG5vdCByZWFkIGZpbGUgYXQg
XCIlc1wiXG4iLCBmaWxlbmFtZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIHJldHVybiAt
MTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445701</attachid>
            <date>2021-12-02 03:41:18 -0800</date>
            <delta_ts>2021-12-03 03:52:05 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-233677-20211202224111.patch</filename>
            <type>text/plain</type>
            <size>1039907</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MjBkZDg0ZmRhMjUyNjNiMzhmMDMzZWJhZDAzNzBkYTk2YjRhOTQ0Li42ZjFkYmJiMzM5NTEyN2U4
OGNlNmRjN2ViYjI3NDE3ODU3MTJhOGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9u
LWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9BcnJh
eUJ1ZmZlci5oOgorCiAyMDIxLTEyLTAxICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6
QGlnYWxpYS5jb20+CiAKICAgICAgICAgTm9uLXVuaWZpZWQgYnVpbGQgZml4ZXMsIGVhcmx5IERl
Y2VtYmVyIDIwMjEgZWRpdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdhMmJlYjAzN2NkNjE2ZjQ1ODU1YTcx
ZjZhNzkwZTkxY2RjZTQ5ODQuLmU1YTYyZTI2OTYyM2ZmZTE5ZDFjMDMzNzRmMzBjOTkxNmY4ODYz
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzA1IEBACisyMDIxLTEyLTAyICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91
cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11
dGFiaWxpdHk6IHBhcnQgMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNjc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6Omludm9rZUNvbXBs
ZXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2Fy
ZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVy
KToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVh
ZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNOjpzYW5pdGl6ZUluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkNETTo6c3VwcG9ydHNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE06OnNhbml0aXpl
UmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmg6CisgICAg
ICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtleWlk
cyk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJveGVz
RnJvbUNlbmMpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtl
eUlEc0NlbmMpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVD
ZW5jKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplV2ViTSk6CisgICAgICAgIChXZWJDb3Jl
OjpleHRyYWN0S2V5SURzV2ViTSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5
OjpzYW5pdGl6ZUluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhUmVnaXN0cnk6
OmV4dHJhY3RLZXlJRHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERh
dGFSZWdpc3RyeS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
ZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmtleUlkc01hdGNo
KToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmg6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFLZXlzOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQp
OgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmg6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRhIGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoTG9hZGVyOjpzdGFydFN0cmVhbWluZyk6CisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpz
dGFydFN0cmVhbWluZyk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6
CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBIaWdobGlnaHQ6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hs
aWdodFJhbmdlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJh
bmdlRGF0YTo6dG9TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0
U3RvcmFnZTo6cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KToKKyAgICAgICAgKiBNb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmg6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
RGF0YUF2YWlsYWJsZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlGaW5p
c2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlclRpbWVyRmlyZWQpOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmg6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpzZW5kU3RyaW5nRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnNlbmRS
YXdEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybUZyYW1lKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
OjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyOjpPbk1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbVNpbmsuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXIpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAg
ICAgICogZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmg6CisgICAgICAgICogZWRpdGluZy9XZWJD
b3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVBh
c3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENv
bnZlcnRlci5tbToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAgICog
ZWRpdGluZy9jb2NvYS9XZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3RyaW5nLm1t
OgorICAgICAgICAoV2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUpOgorICAgICAgICAq
IGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJl
YWRlcjo6cmVhZFdlYkFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1
cFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJl
YWRlcjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRl
cjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJU
Rik6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjphdHRhY2htZW50Rm9yRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250
ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcik6CisgICAgICAgICogZWRpdGluZy9ndGsvV2ViQ29u
dGVudFJlYWRlckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpy
ZWFkSW1hZ2UpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5oOgorICAgICAgICAqIGZpbGVhcGkv
TmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU2VuZFF1ZXVl
OjplbnF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTZW5kUXVldWU6OnByb2Nlc3NN
ZXNzYWdlcyk6CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmg6CisgICAgICAg
ICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKToKKyAgICAg
ICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjZG1D
bGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKToKKyAgICAg
ICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1
bWVudDo6dXBkYXRlRHVyaW5nUGFyc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3Vt
ZW50OjpmaW5pc2hlZFBhcnNpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjppbnRlcmNlcHRSZXNwb25zZUltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3Bv
bnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hhcmVkQnVm
ZmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmJ1ZmZlciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjpzZXRCdWZmZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
aW50ZXJjZXB0UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2U6OlBlbmRp
bmdJbnRlcmNlcHRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OlBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZTo6cmVzcG9uZCk6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBsb2FkZXIv
Q29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpoYW5k
bGVQcm92aXNpb25hbExvYWRGYWlsdXJlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURh
dGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJj
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hM
b2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwpOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Mb2FkZXJT
dHJhdGVneS5oOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcik6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6bG9hZERhdGFVUkwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6
OmFkZERhdGFPckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVz
b3VyY2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlRGF0
YS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlN1YnN0aXR1dGVEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpjb250ZW50IGNvbnN0KToKKyAgICAg
ICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJz
dGl0dXRlUmVzb3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0
ZVJlc291cmNlOjpTdWJzdGl0dXRlUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UpOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0
b3J5KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjphcmNoaXZlRmFjdG9yeUNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcmNo
aXZlRmFjdG9yeTo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFj
dG9yeS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVy
L2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGUpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaDoK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TUhUTUxBcmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TUhU
TUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxBcmNoaXZlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAgICAg
ICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
Q1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVm
ZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERh
dGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZEltYWdlOjpkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNv
dXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRT
VkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6
ZG9VcGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjp1cGRh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdD
b252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3
TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNlKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNs
aWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1l
bnRJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bh
c3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlQ
bGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Ondy
aXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1
ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9y
RWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Bh
c3RlYm9hcmRDdXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0
ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVy
OjphcHBlbmRGcm9tQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6
OmRlbGVnYXRlRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbWJp
bmVTZWdtZW50c0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6Y29weURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnNpemUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9yRWFj
aFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6c3RhcnRzV2l0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpyZWFkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNvcHlUbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpoYXNPbmVTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5l
ZWRlZFNvb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3IhPSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVpbGRlcik6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpnZXQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Y29weSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1N0YXRp
Y1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RhdGljUGFzdGVib2FyZDo6d3Jp
dGVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmg6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5v
d1BsYXlpbmdJbmZvQXJ0d29yazo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Zp
bGVSZWFkZXI6OmRlbXV4V2ViTURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1No
YXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6
cmVwbGFjZW1lbnREYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJv
YXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VElGRlRvUE5HKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleVN0b3JlOjpjb252ZXJ0
VG9KU0tleVN0YXR1c1ZlY3RvciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OktleUhhbmRsZTo6aWRBc1NoYXJl
ZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRp
bGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVV0aWxpdGllczo6cGFyc2VKU09OT2Jq
ZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmlzQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0
ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDRE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vu
c2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlbW92
ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVy
R2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpzZXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2U6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRhdGEgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6SW1hZ2VCYWNraW5nU3RvcmUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNv
ZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OnJlc2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6
ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6OmRhdGFS
ZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNrZCk6
CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RL
ZXlJRHNTa2QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemF0aW9uRGF0YUZvclJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4cGVj
dGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpw
YXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25Gb3JLZXlJRHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6a2V5SURzRm9yUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RM
aWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzRXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjbG9zZVNlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVT
ZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
cXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2Rl
ckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVy
QVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3Rh
bmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5
UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlh
TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzaGFyZWRCdWZmZXJSZWxlYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNH
OjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6c2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnJl
YWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50
Ojp0YWtlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
cjo6U2VnbWVudDo6Z2V0U2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjphcHBlbmQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyV3JpdGluZ0NsaWVu
dDo6ZW5jb2RlSXRlbU91dE9mTGluZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnJlbGVhc2VDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q3VzdG9tUGxhdGZvcm1EYXRhOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1l
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3Vy
Y2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6
OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9DRE1Qcm94eUNsZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVUaHVu
ZGVyOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZh
dGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcik6
CisgICAgICAgIChXZWJDb3JlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2U6OlBhcnNlZFJlc3BvbnNl
TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2U6OnBheWxv
YWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpwYXls
b2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmNoYWxs
ZW5nZUdlbmVyYXRlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRp
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6SW5pdERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2FkSW1h
Z2VGcm9tR1Jlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFn
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3Qy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6QVZJRkltYWdlUmVhZGVyOjpkZWNvZGVGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1h
Z2VSZWFkZXI6OnJlYWRVaW50MTYpOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6
OnJlYWRVaW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OnNldERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0
b3JlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3RvcmU6OmltYWdl
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VE
ZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5o
OgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdl
RGVjb2Rlcjo6c2V0RGF0YUZvclBOR0RlY29kZXJBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpQRUdJbWFnZVJlYWRlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKUEVHMjAwMEltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBOR0ltYWdlUmVhZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXRUJQ
SW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldFQlBJbWFnZURlY29k
ZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQ
SW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRlbnRE
YXRhRm9yVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9y
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25M
aXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbToKKyAg
ICAgICAgKC1bV2ViUHJldmlld0NvbnZlcnRlckRlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2
ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjp3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNo
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Q
YXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBh
c3RlYm9hcmRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJpdmF0ZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclBy
aXZhdGVNb2NrOjpmZXRjaERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlY2VpdmVEYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNl
aXZlZCk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJjZTpy
ZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpyZWFkQ2FjaGVk
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUNhbGxiYWNrKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5k
bGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpoYW5kbGVEYXRh
VVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Ojpk
aWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW06CisgICAgICAgICgtW1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSBjb25uZWN0aW9uOmRp
ZFJlY2VpdmVEYXRhOmxlbmd0aFJlY2VpdmVkOl0pOgorICAgICAgICAqIHBsYXRmb3JtL3Bvc2l4
L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vd2lu
L1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSW1hZ2VG
aWxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVJbWFnZVRvRGF0YU9iamVjdCk6
CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRCk6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25E
YXRhKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5Lmg6CisgICAgICAgICogdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyLmg6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjplbXB0eSk6CisgICAgICAgICogd29ya2Vycy9T
Y3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoOjpwcm9jZXNzUmVzcG9uc2UpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
U1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBj
bGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMz
NDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFNpbWlsYXIgdG8gU3RyaW5nQnVpbGRlciwgYSBTaGFyZWRC
dWZmZXIgY2FuIG5vdyBvbmx5IGJlIG1vZGlmaWVkIHRocm91Z2gKKyAgICAgICAgYSBTaGFyZWRC
dWZmZXJCdWlsZGVyLiBBIFNoYXJlZEJ1ZmZlciBiZWNvbWVzIGltbXV0YWJsZSBvbmNlIGNyZWF0
ZWQuCisKKyAgICAgICAgRmx5LUJ5OiBQYXNzIFNoYXJlZEJ1ZmZlciB2aWEgY29uc3QgcmVmZXJl
bmNlcyBvciBwb2ludGVycyB3aGVyZSBpdCdzIGVhc3kKKyAgICAgICAgdG8gZG8gc28uCisgICAg
ICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91cjsgY292ZXJlZCBieSBleGlzdGlu
ZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNo
ZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpjbGVhbik6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNv
bnN1bWVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0
YWtlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJy
YXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Js
b2IpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZSk6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Q29uc3VtZXI6OnNldERhdGEpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2Rl
bEVsZW1lbnQ6OnNldFNvdXJjZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVt
ZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6
bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
OlJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YTo6aGFzQnVmZmVyZWREYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeSk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpy
ZXNvdXJjZURhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRl
UmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGF0YSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRG
b250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVy
dGVkRGF0YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1
cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJh
d1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0
VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRY
U0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRT
dGFydENvbnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6
cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZl
cnRlcjo6cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZl
cnRlcjo6cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVm
ZmVyQnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9v
bCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVp
bGRlcjo6ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9j
bGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRz
RnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2Vi
TUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJ
blNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJ
bml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVy
dGVySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0Nv
bnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6dGFrZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNw
b25zZUdlbmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0
b3I6OkRhdGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRv
cjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9t
RGF0YSk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0QnVmZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZm
ZXI6OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVm
ZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0
dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNw
b25zZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFy
UmVzcG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKKzIwMjEtMTEt
MjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5n
dWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQg
Z3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gY2FsbGluZyBTaGFy
ZWRCdWZmZXI6OmRhdGEoKSB0aGUgdW5kZXJseWluZyBkYXRhIHdhcyBmbGF0dGVuZWQsCisgICAg
ICAgIGFuZCBzbyBjb3VsZCBiZSBtdXRhdGVkIHdoaWxlIGJlaW5nIHNoYXJlZC4gVGhpcyB3YXMg
YW4gdW5kZXNpcmFibGUKKyAgICAgICAgYmVoYXZpb3VyLgorICAgICAgICBXZSBpbnRyb2R1Y2Ug
Q29udGlndW91c1NoYXJlZEJ1ZmZlciB3aGljaCBndWFyYW50ZWUgdGhhdCBpdHMgY29udGVudCBp
cyBtYWRlCisgICAgICAgIG9mIGNvbnRpZ3VvdXMgZGF0YS4KKyAgICAgICAgQWxsIG1ldGhvZHMg
dGhhdCB3b3VsZCBoYXZlIG11dGF0ZWQgYSBTaGFyZWRCdWZmZXIgd2hlbiBiZWluZyBmbGF0dGVu
ZWQgYXJlCisgICAgICAgIG1vdmVkIHRvIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisKKyAgICAg
ICAgQXJlYSB3aGVyZSBTaGFyZWRCdWZmZXJzIHdlcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBhIHNp
bmdsZSBzZWdtZW50IHdoZXJlCisgICAgICAgIGNvbnZlcnRlZCB0byBhIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIuCisgICAgICAgIFByZXZpb3VzbHksIGEgU2hhcmVkQnVmZmVyIHdvdWxkIGhhdmUg
YmVlbiBmbGF0dGVuZWQgb25seSBpZiBpdCBuZWVkZWQgdG8gYmUKKyAgICAgICAgYW5kIG9ubHkg
d2hlbiB0aGUgZGF0YSB3YXMgZ29pbmcgdG8gYmUgYWNjZXNzZWQ7IGZvbGxvd2luZyB0aGlzIGNo
YW5nZQorICAgICAgICB0aGUgY29udmVyc2lvbiBpcyBub3cgZXhwbGljdGx5IGRvbmUgdGhyb3Vn
aCBhIGNhbGwgdG8gbWFrZUNvbnRpZ3VvdXMuCisgICAgICAgIFRoaXMgY29udmVyc2lvbiBpcyBh
IG5vLW9wIGlmIHRoZSBTaGFyZWRCdWZmZXIgYmVpbmcgY29udmVydGVkIHdhcyBhbHJlYWR5Cisg
ICAgICAgIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgV2l0aCB0aGUgbmF0dXJl
IG9mIGEgU2hhcmVkQnVmZmVyIGJlaW5nIHNoYXJlZCBieSBwb3RlbnRpYWxseSBtdWx0aXBsZQor
ICAgICAgICB1c2VycyBpdCB3YXMgbmVjZXNzYXJ5IHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgY29u
dmVyc2lvbnMgYmVpbmcgcGVyZm9ybWVkCisgICAgICAgIG9uIGRlbWFuZCB0byBhdm9pZCByZWR1
bmRhbmN5LgorICAgICAgICBXaGVuIHRoZSBmbGF0dGVuaW5nIGNvdWxkIGhhdmUgb2NjdXJlZCwg
dGhlIFNoYXJlZEJ1ZmZlciBjcmVhdGlvbiBwb2ludHMgd2VyZQorICAgICAgICB0cmFjZWQgYmFj
ayBhbmQgaWRlbnRpZmllZCB0byBtYWtlIHRoZSBidWZmZXIgY29udGlndW91cyB0aGVuLgorICAg
ICAgICBJbiB0aGUgZW5kLCB0aGVyZSdzIG5vIG1vcmUgU2hhcmVkQnVmZmVyIGZsYXR0ZW5pbmcg
b3BlcmF0aW9ucyB0aGFuIHRoZXJlCisgICAgICAgIHdvdWxkIGhhdmUgYmVlbiBiZWZvcmUgdGhp
cyBjaGFuZ2UuCisgICAgICAgIFRoZXJlJ3MgYSBwb3RlbnRpYWwgaW5jcmVhc2Ugb2YgdGVtcG9y
YXJ5IG1lbW9yeSB1c2FnZSB3aXRoIHRoZQorICAgICAgICBTY3JpcHRCdWZmZXJTb3VyY2VQcm92
aWRlciBjbGFzczsgYnVnIDIzMzUxMSBpcyB0cmFja2luZyBpdC4KKworICAgICAgICBXaGlsZSB0
aGUgY2hhbmdlIGlzIGV4dGVuc2l2ZSwgY29kZSBjb3ZlcmFnZSBvZiB0aGUgbW9kaWZpZWQgYXJl
YXMgaXMgdGhvcm91Z2gKKyAgICAgICAgd2hpY2ggbWFrZXMgdW5kZXRlY3RlZCByZWdyZXNzaW9u
cyB1bmxpa2VseS4KKworICAgICAgICBJbiBidWcgMjMzNDQyLCBhIFNoYXJlZEJ1ZmZlciB3aWxs
IGJlIG1hZGUgY29tcGxldGVseSBpbW11dGFibGUgb25jZSBjcmVhdGVkLgorCisgICAgICAgIE5v
IG9ic2VydmFibGUgY2hhbmdlLgorICAgICAgICBDb3ZlcmVkIGJ5IGFsbCBleGlzdGluZyB0ZXN0
cy4gTmV3IEFQSSB0ZXN0cyBjcmVhdGRlZC4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVM
b2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToKKyAgICAgICAg
KiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hl
OjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVzcG9u
c2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9uc2VC
b2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAg
ICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRp
emVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0
dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBNb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNv
bnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1E
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
OjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNU
ZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5r
KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRS
YW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpj
cmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVP
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxp
dGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRl
eFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5j
aGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4
U3RhdGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6Cisg
ICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAg
ICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNE
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb1RlbXBvcmFyeUZpbGUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhh
bmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAg
ICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8p
OgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TZXJpYWxp
emVkQXR0YWNobWVudERhdGEuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6YXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JB
dHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNo
aXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkZvcm1hdCk6CisgICAgICAgICog
ZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6
X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yVVJMKToK
KyAgICAgICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmlj
aENvbnRlbnRXaXRoQXR0YWNobWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdE1hcmt1
cEFuZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAqIGVkaXRpbmcvbWFj
L0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW1hZ2VJbldlYkFyY2hp
dmVGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgor
ICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9D
b250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJl
c291cmNlQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVz
b3VyY2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hh
cmVkQnVmZmVyQ29udGVudCk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6Cisg
ICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KToKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQpOgorICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5j
cHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIp
OgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmJ1ZmZlckZyb21SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91
c2x5KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoK
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAg
KiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgorICAgICAgICAqIGxvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2Vy
OjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVl
dFRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6Zmlu
aXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRGb250OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJj
ZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpm
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0
YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5z
dXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250
Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRy
YWNrOjpkb1VwZGF0ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6Zmlu
aXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2Nv
YS5oOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVk
QnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0Nh
Y2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0Vk
aXRvckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFs
aXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxl
U2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNv
dXJjZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBwYWdl
L1NoYXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICog
cGxhdGZvcm0vS2V5ZWRDb2RpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0
ZWJvYXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2Fy
ZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpt
YWtlQ29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OnNp
emUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0VtcHR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6Omhhc09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZm
ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpEYXRhU2VnbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBs
YXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5j
b2RlckNGOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNv
ZGVyQ0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZl
cnRUSUZGVG9QTkcpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZv
clR5cGVXaXRoU2VjdXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVk
QnVmZmVyQ29jb2EubW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRX
aXRoRGF0YVNlZ21lbnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRF
bmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRF
bmNvZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5p
c2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1v
ZGVsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZWFkVUludDMyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MTYpOgorICAgICAgICAo
V2ViQ29yZTo6aXNXT0ZGKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmV4dHJhY3RTaW5mRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNl
bnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVt
b3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3Zp
ZGVSZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJB
VkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDOjphcHBlbmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVk
aWFMb2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURh
dGFDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVu
VHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bWFya3VwVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0
YTo6ZXh0cmFjdENlbmNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
aXREYXRhOjpJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9j
dW1lbnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNy
ZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRh
bGljc0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFsaWNDb3JyZWN0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJbmZvOjptYXRoSXRhbGljc0NvcnJlY3Rpb25J
bmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHbHlwaEFzc2VtYmx5Ojpn
ZXRBc3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRo
R2x5cGhDb25zdHJ1Y3Rpb246OmdldFNpemVWYXJpYW50cyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoVmFyaWFudHM6Om1hdGhHbHlw
aENvbnN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRh
YmxlOjptYXRoQ29uc3RhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpN
QVRIVGFibGU6Om1hdGhHbHlwaEluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6OnZhbGlkYXRlVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxl
QmFzZTo6aXNWYWxpZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNl
Ojp2YWxpZGF0ZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2
YWxpZGF0ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVX
aXRoQ292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlbmFtZUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1lQW5kQWN0aXZhdGVGb250
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGll
cy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGlj
YWxEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTdWJzdGl0dXRpb25TdWJU
YWJsZTo6Y292ZXJhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1
cFRhYmxlOjpnZXRTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpMb29rdXBMaXN0Ojpsb29rdXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6OkZlYXR1cmVUYWJsZTo6Z2V0R2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZpbmRGZWF0dXJlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMYW5nU3lzVGFibGU6OmZlYXR1cmUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdFRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6c2NyaXB0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0U2Ny
aXB0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZh
dWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxl
OjpzY3JpcHRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6OmZlYXR1cmVMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VC
VGFibGU6Omxvb2t1cExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdT
VUJUYWJsZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6OkdTVUJUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6R1NVQlRhYmxlOjpnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
VmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZl
cnRpY2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmg6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRDdXN0b21EYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvbkRhdGE6OmN1c3RvbURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29k
ZXI6OnNldElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pw
ZWcvSlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBh
c3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1
ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRP
TVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUl0ZW1Qcm92
aWRlclJlZ2lzdHJhdGlvbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OnJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRl
ci5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRXcml0ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hh
cmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1t
OgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2
ZWREYXRhOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0
SGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENv
bXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3ND
b250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxl
SWZFbmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxJbWFnZUZp
bGVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudCk6
CisgICAgICAgICogcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgor
ICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
Q0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRM
b2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNwb25zZSk6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dT
Y3JpcHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4
c2x0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY0xvYWRlckZ1bmMpOgorICAgICAgICAqIHht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Om9wZW5GdW5jKToKKwogMjAyMS0xMi0wMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIE5hdmlnYXRpb25QcmVsb2FkTWFuYWdlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCAzZGFlMzQwZjUyODQ4YWI5Mzg2YmVhNzQyZWEyZDI1NDdiNTc5ZmY5Li5iNWJi
MDA3OWJmNTBjMDVlOTZhOTY5ZTYxYjQ0YTg2YmQ3MGZmZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQxNyBAQAorMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgor
CisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNv
bnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RN
SW5zdGFuY2VQcm94eTo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZCk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0
TGljZW5zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
OjpyZW1vdmVTZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6
c3VwcG9ydHNJbml0RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETVByb3h5OjpzYW5p
dGl6ZVJlc3BvbnNlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5
Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVh
dGVEZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6
OnNldERhdGEpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJv
eHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5j
ZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQpOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrQmxvYjo6Y29uc3VtZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJl
Y2VpdmVEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50Lmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
c2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdM
b2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1ByZWNvbm5lY3RUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6
OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RU
YXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6bWFrZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpDYWNoZTo6c3RvcmUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6RW50
cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5Ojppbml0aWFsaXplQnVm
ZmVyRnJvbVN0b3JhZ2VSZWNvcmQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OkVudHJ5OjpidWZmZXIgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUVudHJ5Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpQcmVmZXRjaENhY2hlOjpFbnRyeTo6RW50cnkpOgorICAgICAgICAoV2ViS2l0OjpQcmVmZXRj
aENhY2hlOjpzdG9yZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hD
YWNoZS5oOgorICAgICAgICAoV2ViS2l0OjpQcmVmZXRjaENhY2hlOjpFbnRyeTo6cmVsZWFzZUJ1
ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjpkYXRh
VGFzazpkaWRSZWNlaXZlRGF0YTpdKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtEYXRhVGFza0N1cmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tD
dXJsOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3Vy
bC9OZXR3b3JrRGF0YVRhc2tDdXJsLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNr
U291cDo6ZGlkUmVhZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENQcm92aWRlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNw
cDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5oOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcik6CisgICAgICAg
ICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdlYkFyY2hp
dmUubW06CisgICAgICAgIChBUEk6OldlYkFyY2hpdmU6OldlYkFyY2hpdmUpOgorICAgICAgICAq
IFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAgICAgIChBUEk6OldlYkFyY2hp
dmVSZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBT
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZW5jb2RlU2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6RW50cnk+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNz
YWdlPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1J
bnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERh
dGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0YTo6V2ViSGl0VGVz
dFJlc3VsdERhdGEpOgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3Bw
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjplbmNvZGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgIChBUEk6
OkF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSBjb25zdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50UnVsZUxpc3RTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlv
bkNsaWVudC5oOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6
OmVuY2xvc2luZ0ltYWdlRGF0YSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VSTFNjaGVtZVRhc2subW06CisgICAgICAgICgtW1dLVVJMU2NoZW1lVGFza0ltcGwgZGlk
UmVjZWl2ZURhdGE6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Okljb25EYXRhYmFzZTo6bG9hZEljb25Gb3JQYWdlVVJM
KToKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpzZXRJY29uRm9yUGFnZVVSTCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwOgor
ICAgICAgICAod2Via2l0VVJJU2NoZW1lUmVxdWVzdFJlYWRDYWxsYmFjayk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwOgorICAgICAgICAoV2ViS2l0OjpE
cm9wVGFyZ2V0OjphY2NlcHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgor
ICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZp
bmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6c2VuZEF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJv
bWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0
L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6cGxhdGZvcm1TdGFydFRhc2spOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFu
ZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFu
ZGxlcjo6cGxhdGZvcm1TdGFydFRhc2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1l
VGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZWFkQnVm
ZmVyQXN5bmNEYXRhOjpSZWFkQnVmZmVyQXN5bmNEYXRhKToKKyAgICAgICAgKFdlYktpdDo6Q2xp
cGJvYXJkOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0
azQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZWFkQnVmZmVyQXN5bmNEYXRhOjpSZWFkQnVmZmVy
QXN5bmNEYXRhKToKKyAgICAgICAgKFdlYktpdDo6Q2xpcGJvYXJkOjpyZWFkQnVmZmVyKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpz
ZXRQcm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzdXBwb3J0c0luaXRE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNl
IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNl
bnNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZW1vdmVT
ZXNzaW9uRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZG
OjpzZXREYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkYuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkZNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVy
QVZGTWFuYWdlcjo6Y3JlYXRlSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6c2V0VXNlR1BVUHJvY2Vzcyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwOgorICAg
ICAgICAoV2ViS2l0Ojpjb252ZXJ0VG9TaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6YXBwZW5kKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TWVkaWFSZWNvcmRlclByaXZhdGU6OmZldGNoRGF0YSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50
Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OjpkaWRDYWNoZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToK
KyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjphZGRBcmNoaXZlUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW46OmxpdmVSZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpQREZQbHVnaW46OndyaXRlSXRlbXNUb1Bhc3RlYm9hcmQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJj
ZURhdGEgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRv
ckNsaWVudDo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6
OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmxvYWREYXRhSW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmxvYWREYXRhSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWREYXRhKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpsb2FkU2ltdWxhdGVkUmVxdWVzdEFuZFJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpyZXNvdXJjZURhdGFGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmRpZEdldExvYWREZWNpc2lvbkZvckljb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1
cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5j
cHA6CisgICAgICAgIChsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKToKKworMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2
ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6
OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hl
bWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1l
VGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNr
OjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5W
aWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5W
aWV3OjptYW51YWxMb2FkRGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Omxp
dmVSZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRl
bGl2ZXJNYW51YWxTdHJlYW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50Ojpk
aWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVu
dDo6ZGlkRmFpbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRC
dWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAor
ICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNo
ZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2Rl
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJl
Y29yZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRh
c2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVh
ZERhdGFVUkwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJD
b3B5OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6
YnVmZmVyKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZv
cm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJj
ZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAg
KiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRh
KToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAg
ICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJl
YWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAg
ICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIp
OgorICAgICAgICAoSVBDOjplbmNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNv
ZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5n
aW5lOjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNh
Y2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hh
cmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxG
b250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRl
RnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2ht
ZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJ
OjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9E
cm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNl
aXZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAg
ICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5p
c2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJ
bWFnZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZv
cldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2lu
c01hdGNoT3JpZ2luKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lz
dGFudDpzaGFyZUVsZW1lbnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkluamVj
dGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVz
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9k
ZWxQbGF5ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVs
UGxheWVyTWFjOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xp
ZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFy
ZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJL
aXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRl
b0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKwogMjAyMS0xMi0wMiAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIE5hdmlnYXRpb25Q
cmVsb2FkTWFuYWdlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBkNzc2ZTgyZGYxMzJjYWY2NTI3
OTNhNzlhMDA4M2FkNjU1OWRjMjY1Li40M2ExODA0ZDUwZGY5MjczMzZlM2Y1ZDU4M2ExNjg5M2U0
MWJhMDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTEyLTAy
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vp
c2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1
YXJhbnRlZSBpbW11dGFiaWxpdHk6IHBhcnQgMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmg6CisKIDIw
MjEtMTEtMTIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ug
c29ydC1YY29kZS1wcm9qZWN0LWZpbGUgaWRlbXBvdGVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCmluZGV4IDg2ZTVkOTk1OGM2NTJhNWFmM2Y3ODVjMDViNTUwNDIzYWJmZTEwYTMuLmRiMjMw
MjVmZGZkZjBiZTQ4ZjlmYzBkMThhN2VjNDYzNTJmODhmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1OSBAQAorMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVk
QnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5
OiBwYXJ0IDMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpjcmVhdGVQcmV2aWV3TG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyk6CisgICAgICAgIChXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbik6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkFyY2hpdmUubW06Cisg
ICAgICAgICgtW1dlYkFyY2hpdmUgaW5pdFdpdGhEYXRhOl0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2xvYWREYXRh
Ok1JTUVUeXBlOnRleHRFbmNvZGluZ05hbWU6YmFzZVVSTDp1bnJlYWNoYWJsZVVSTDpdKToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51
SXRlbSk6CisgICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2Vi
UmVzb3VyY2UgaW5pdFdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX2luaXRX
aXRoRGF0YTpVUkw6TUlNRVR5cGU6dGV4dEVuY29kaW5nTmFtZTpmcmFtZU5hbWU6cmVzcG9uc2U6
Y29weURhdGE6XSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCisy
MDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAg
RGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBv
bmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01V
SUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxJbWFnZUVsZW1lbnQgZGF0YVJl
cHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAg
ICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRh
U291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJl
c2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmll
dy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dlYlJlc291cmNlIGVuY29kZVdpdGhDb2Rlcjpd
KToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0YV0pOgorICAgICAgICAoLVtXZWJSZXNvdXJj
ZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMi0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlZ3Jlc3Npb24ocjI4MzkxMikgQnJva2UgYmFja3dhcmQgY29t
cGF0aWJpbGl0eSBmb3IgU3dpZnQgYmluZGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpp
bmRleCBjYWQ2MWE3N2EwMTBjZGQ4NzBmMGE1YzY3ZDIxMzk2OTY2YmI2MGFjLi40MTVjZTQyZGZm
NDFkZDg0NmIxNjk2MzM0ODgyYTY3MDQ1ODFiMjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjEtMTItMDIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZl
ciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eTogcGFy
dCAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2
NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpsb2FkRGF0YSk6CisgICAgICAgIChXZWJG
cmFtZTo6bG9hZFBsYWluVGV4dFN0cmluZyk6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZEhUTUxT
dHJpbmcpOgorICAgICAgICAqIFdlYkZyYW1lLmg6CisgICAgICAgICogV2ViS2l0RExMLmNwcDoK
KyAgICAgICAgKGxvYWRSZXNvdXJjZUludG9CdWZmZXIpOgorCisyMDIxLTEyLTAxICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdl
YkZyYW1lOjpsb2FkRGF0YSk6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZl
ciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAg
ICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogTWVtb3J5U3RyZWFtLmNwcDoKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6
TWVtb3J5U3RyZWFtKToKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UpOgor
ICAgICAgICAqIE1lbW9yeVN0cmVhbS5oOgorICAgICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAg
ICAgICAoV2ViQXJjaGl2ZTo6ZGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgor
ICAgICAgICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0
YSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2U6OmNy
ZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5oOgorCiAyMDIxLTExLTE4ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBBWDog
VXNlIE9iamVjdElkZW50aWZpZXIgZm9yIEFYSUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IGVhY2NhMmMyMzNhOGE2OTM3MTU5MDgwN2RmZDM2NzVi
MDYxNTk0MjguLmI0NjkzZjkxYzYwN2Q4ZDA3NDU5NDY0NmU4ZGM0MzcyZTliYzk5ZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMTI5LDcgKzEy
OSw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5
QnVmZmVyPiB0cnlDcmVhdGUoQXJyYXlCdWZmZXImKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBz
aXplX3QgYnl0ZUxlbmd0aCk7CiAKLSAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVk
QXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIuCisgICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0
cnlDcmVhdGVVbmluaXRpYWxpemVkIGFuZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0cnlDcmVh
dGVBcnJheUJ1ZmZlci4KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVm
ZmVyPiBjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5
QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwCmluZGV4
IDMzNTRiNTJhNTBjYmIxODlmZGZhZWI3ZDgyNDgzYmUwYzQxYzNkNGUuLmRhMzM2ZTZmNWIxNjk0
ZTM3NDc2OTBjNDNkMmI1M2YzNTE4YzA5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVBMQVRGT1JN
KENPQ09BKQogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lkIENsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAppbmRleCAyYjYyNjI4NDE5YjA5Y2JiNjk1NTIxNWIw
ZDVkN2Q3M2MwYjM3NDRkLi42ZTIyMDQ4Y2Y1ZmVhOWFhNjJkYWRmNDViMWYzNWM0Y2UwZDdkNmUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgQ2xpcGJvYXJkSW1hZ2VSZWFkZXIg
OiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgQ2xpcGJvYXJkSW1hZ2VSZWFkZXIoRG9jdW1l
bnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQpAQCAtNDcsNyArNDcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBT
dHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
KyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBSZWZQ
dHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVt
QmluZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IGQwNzQ2ZGEy
ZGEyMDllMDIzMjViNWZhMjE0ZGJlZTY0YmY5YzkwNzguLmYyZjQwNDE5MGI2M2JkYWQxYjIyMmJk
ODJmMDhlYWU1NjJjOTVhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2UuY3BwCkBAIC0yMTYsOCArMjE2LDggQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlOjppbnZva2VDb21wbGV0aW9uSGFuZGxlcigpCiAgICAgICAgIGF1dG8m
IGRhdGEgPSBpdGVtVHlwZUxvYWRlci0+ZGF0YSgpOwogICAgICAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxTdHJpbmc+KGRhdGEpICYmICEhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKSkKICAg
ICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVTdHJpbmcodHlwZSwgc3RkOjpnZXQ8U3RyaW5nPihk
YXRhKSk7Ci0gICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJl
ZEJ1ZmZlcj4+KGRhdGEpKQotICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwg
c3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpLmNvcHlSZWYoKSk7CisgICAgICAgIGVs
c2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PihkYXRhKSkKKyAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIHN0ZDo6Z2V0
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZGF0YSkuY29weVJlZigpKTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcoCiAgICAgaWYgKCFzdHJpbmdSZXN1bHQuaXNOdWxsKCkpCiAgICAgICAgIG1fZGF0YSA9IHsg
c3RyaW5nUmVzdWx0IH07CiAgICAgZWxzZSBpZiAoYXV0byBhcnJheUJ1ZmZlciA9IG1fYmxvYkxv
YWRlci0+YXJyYXlCdWZmZXJSZXN1bHQoKSkKLSAgICAgICAgbV9kYXRhID0geyBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSks
IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpIH07CisgICAgICAgIG1fZGF0YSA9IHsgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1
ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkgfTsKICAgICBtX2Jsb2JM
b2FkZXIgPSBudWxscHRyOwogICAgIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CkBAIC0y
NjUsOSArMjY1LDkgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlw
Ym9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKIHsKICAgICBpZiAobV90eXBl
ID09ICJ0ZXh0L2h0bWwiX3MpIHsKICAgICAgICAgU3RyaW5nIG1hcmt1cFRvU2FuaXRpemU7Ci0g
ICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX2Rh
dGEpKSB7Ci0gICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVm
ZmVyPj4obV9kYXRhKTsKLSAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZy
b21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4obV9kYXRhKSkg
eworICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PihtX2RhdGEpOworICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmlu
Zzo6ZnJvbVVURjgoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4o
bV9kYXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6OmdldDxTdHJpbmc+
KG1fZGF0YSk7CiAKQEAgLTI3OCw5ICsyNzgsOSBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQog
ICAgIH0KIAogICAgIGlmIChtX3R5cGUgPT0gImltYWdlL3BuZyJfcykgewotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplOwotICAgICAgICBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkKLSAgICAgICAgICAgIGJ1
ZmZlclRvU2FuaXRpemUgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKS5wdHIo
KTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRp
emU7CisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4obV9kYXRhKSkKKyAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSBzdGQ6
OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkucHRyKCk7CiAgICAgICAg
IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpKQogICAgICAg
ICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHV0ZjhCdWZmZXIoc3RkOjpnZXQ8U3RyaW5nPihtX2Rh
dGEpKTsKIApAQCAtMjk2LDcgKzI5Niw3IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiAgICAg
ICAgIH0KIAogICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZShiaXRtYXBJ
bWFnZS5nZXQoKSwgRmxvYXRQb2ludDo6emVybygpKTsKLSAgICAgICAgbV9kYXRhID0geyBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShpbWFnZUJ1ZmZlci0+dG9EYXRhKCJpbWFnZS9wbmciX3MpKSB9Owor
ICAgICAgICBtX2RhdGEgPSB7IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbWFnZUJ1
ZmZlci0+dG9EYXRhKCJpbWFnZS9wbmciX3MpKSB9OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCmluZGV4IDJjYzJjOGUxYTU0ZTE4ZDcz
NDk1YzUzMGNkNzdkNTRmOTlhNTI5YTcuLjM3YzgyNWUyMzVhOGE4YjdlNDRlNDBmYjBjMmQ3NzI0
NDA3YTc1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
LmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgRE9NUHJvbWlzZTsKIGNsYXNzIEZpbGVSZWFkZXJM
b2FkZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlIDogcHVibGljIENs
aXBib2FyZEl0ZW1EYXRhU291cmNlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAg
LTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaW52b2tlQ29tcGxldGlvbkhhbmRs
ZXIoKTsKIAotICAgIHVzaW5nIEJ1ZmZlck9yU3RyaW5nID0gc3RkOjp2YXJpYW50PFN0cmluZywg
UmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIEJ1ZmZlck9yU3RyaW5nID0gc3RkOjp2YXJp
YW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAgICBjbGFzcyBDbGlw
Ym9hcmRJdGVtVHlwZUxvYWRlciA6IHB1YmxpYyBGaWxlUmVhZGVyTG9hZGVyQ2xpZW50LCBwdWJs
aWMgUmVmQ291bnRlZDxDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcj4gewogICAgIHB1YmxpYzoKICAg
ICAgICAgc3RhdGljIFJlZjxDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcj4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgdHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9z
L0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCmluZGV4IDQzMDIzNjFl
NmZlMjc4NTI4NGFlNmMwODMyOGFmMzA3YTNhNDQxMDAuLjI3NGUwMzhkNDE4NzAxNjFlNGVlYjgw
YzEyYWJiYTg3MWY5ZDRhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJ
T1MubW0KQEAgLTM0LDEwICszNCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQg
Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENsaXBib2FyZEltYWdlUmVh
ZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1h
Z2UvcG5nIikgewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1h
Z2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CisgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNl
KCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gbnNEYXRhID0gVUlJbWFnZVBOR1JlcHJlc2VudGF0
aW9uKGltYWdlLmdldCgpKSkKICAgICAgICAgICAgIG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKG1f
ZG9jdW1lbnQuZ2V0KCksIFZlY3RvciB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihuc0Rh
dGEuYnl0ZXMpLCBuc0RhdGEubGVuZ3RoIH0sIG1fbWltZVR5cGUpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJ
bWFnZVJlYWRlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQppbmRleCBiNGMzMWNhNTA2MzljY2NhNGM1
NTA1NGQ0OTEzMTc4NjlkYTdlNWJmLi4zODIxYjAzNzE4MDI4MjNkNjlhODMwYTMxMGRhMzQ3MDhk
NjMzMDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCkBAIC0z
MywxMCArMzMsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENsaXBib2FyZElt
YWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1
ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsK
LSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERh
dGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0g
YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIGNnSW1hZ2Ug
PSBbaW1hZ2UgQ0dJbWFnZUZvclByb3Bvc2VkUmVjdDpuaWwgY29udGV4dDpuaWwgaGludHM6bmls
XSkgewogICAgICAgICAgICAgYXV0byByZXByZXNlbnRhdGlvbiA9IGFkb3B0TlMoW1tOU0JpdG1h
cEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZV0pOwogICAgICAgICAgICAg
TlNEYXRhKiBuc0RhdGEgPSBbcmVwcmVzZW50YXRpb24gcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6
TlNCaXRtYXBJbWFnZUZpbGVUeXBlUE5HIHByb3BlcnRpZXM6QHsgfV07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApp
bmRleCA5YjNmODQwNzQ1ZDFhMDY5ODgzYTIwYzNhNjVmOTk3OWZiMWEyNDM3Li44YmZmODA3MDZl
NmUxOTlhNTRjNTM3MzBmYjZjMzdjOWZmODMyOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTUwLDcg
KzUwLDcgQEAgdWludDY0X3QgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxCb2R5
U2l6ZShjb25zdCBET01DYWNoZUVuZ2luZTo6UmVzcG8KICAgICB1aW50NjRfdCByZXN1bHQgPSAw
OwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3Jt
RGF0YSkgewogICAgICAgICByZXN1bHQgPSBmb3JtRGF0YVNpemUoZm9ybURhdGEpOwotICAgIH0s
IFsmXSAoY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAoY29u
c3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgcmVzdWx0
ID0gYnVmZmVyLT5zaXplKCk7CiAgICAgfSwgW10gKGNvbnN0IHN0ZDo6bnVsbHB0cl90Jikgewog
ICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCBl
NmNjMWFhZTc4M2E1MjA5NGY2NTQ5OWJiOTBkZDdmMDA3MWQ0MjRjLi5kYjNjMTM2NDY5NDliNWNm
ODRlZjkyMzM1ZWYxNDEwYWE1NDk2Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmNwcApAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChW
ZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzaXplX3QgcmVjb3JkUG9zaXRpb24gPSB0YXNr
SGFuZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVjdGlvblJlY29yZChyZXF1ZXN0LmdldCgpLCByZXNw
b25zZSwgbnVsbHB0cikpOwogCi0gICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2Vp
dmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9z
aXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCByZXNwb25zZSA9IFJlZiB7IHJl
c3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlc3BvbnNl
LmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hh
bmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcmVz
cG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICAgICAgaWYgKHRhc2tIYW5kbGVyLT5pc0RvbmUoKSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCkBAIC0yOTksMTUgKzI5OSwxNSBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwo
VmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9
IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQo
Y2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEu
YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNv
cmRQb3NpdGlvbiwgcmVzcG9uc2UsIFdURk1vdmUoZGF0YSkpOworICAgICAgICAgICAgICAgICAg
ICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwg
ZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0sIGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5mZXRjaCk7CiAgICAgfQogfQog
Ci12b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJlcXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVz
cG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJl
c3BvbnNlQm9keSkKK3ZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBS
ZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKIHsKICAgICBpZiAocmVzcG9uc2VCb2R5
Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgq
dGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIGV4Y2VwdGlvbiA9IHJlc3BvbnNlQm9keS5yZWxlYXNlRXhjZXB0aW9uKCldKCkgbXV0
YWJsZSB7CkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNl
RGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2gKIAogICAg
IERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgYm9keTsKICAgICBpZiAoYXV0byBidWZmZXIg
PSByZXNwb25zZUJvZHkucmVsZWFzZVJldHVyblZhbHVlKCkpCi0gICAgICAgIGJvZHkgPSBidWZm
ZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgYm9keSA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKTsKICAgICBiYXRjaFB1dE9wZXJhdGlvbihyZXF1ZXN0LmdldCgpLCByZXNwb25zZS5nZXQo
KSwgV1RGTW92ZShib2R5KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpIG11
dGFibGUgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tT
b3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1
bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm9taXNlLnNl
dHRsZShXVEZNb3ZlKHJlc3VsdCkpOwpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgRE9NQ2FjaGU6
OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBE
T01Qcm9taXNlCiAKICAgICBpZiAocmVzcG9uc2UtPmlzQm9keVJlY2VpdmVkQnlDaHVuaygpKSB7
CiAgICAgICAgIGF1dG8mIHJlc3BvbnNlUmVmID0gcmVzcG9uc2UuZ2V0KCk7Ci0gICAgICAgIHJl
c3BvbnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShy
ZXNwb25zZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBwZW5kaW5nQWN0aXZpdHkg
PSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CisgICAgICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3Bv
bnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHBl
bmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYg
cmVzdWx0KSBtdXRhYmxlIHsKIAogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24o
KSkgewogICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShw
cm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIHJlc3VsdC5yZWxl
YXNlRXhjZXB0aW9uKCkuaXNvbGF0ZWRDb3B5KCkpOwpAQCAtMzgzLDkgKzM4Myw5IEBAIHZvaWQg
RE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJl
c3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRv
KiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFw
cGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRh
LmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlz
ZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJl
c3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJl
c3BvbnNlKSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlKCktPm1h
a2VDb250aWd1b3VzKCkgfSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCmluZGV4IDEzOTc1NGQzMGU0MDA3
ODU0YTY0NGE3NDExYTNjODE3Y2Q5ZDFmOTIuLmMzNWNjM2NiY2VkYjNiMjUxMWJmMzU3YTMxYWZl
MmQyNzQzOGJkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAg
LTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25z
dCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHB1
dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJl
cXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVk
QnVmZmVyPj4mJik7CisgICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwg
RXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmKTsKIAogICAgIGVu
dW0gY2xhc3MgU2hvdWxkUmV0cmlldmVSZXNwb25zZXMgOiBib29sIHsgTm8sIFllcyB9OwogICAg
IHVzaW5nIFJlY29yZHNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9u
T3I8VmVjdG9yPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+PiYmKT47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCmluZGV4IDI1OTE0YjQwYmIyMzgz
YTA3ODgwNGY4OWIxMWI0MGQ4OTcwYjQzMDYuLjQ3NTA0Y2JlYmRhZTAzODE2NzU5YThmNjhlOGMy
NDYyZmRmMmE1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGVFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGVFbmdpbmUuY3BwCkBAIC0xMzEsOCArMTMxLDggQEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVz
cG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9u
c2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLT5pc29sYXRlZENvcHkoKTsKLSAgICB9
LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewot
ICAgICAgICByZXR1cm4gYnVmZmVyLT5jb3B5KCk7CisgICAgfSwgW10oY29uc3QgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgICAgIHJl
dHVybiBidWZmZXIuY29weVJlZigpOyAvLyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11
dGFibGUgYW5kIGNhbiBiZSByZXR1cm5lZCBhcy1pcy4KICAgICB9LCBbXShjb25zdCBzdGQ6Om51
bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2lu
ZTo6UmVzcG9uc2VCb2R5IHsgfTsKICAgICB9KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBSZXNwb25z
ZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAg
cmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURh
dGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7
Ci0gICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VC
b2R5IHsKKyAgICB9LCBbXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAg
ICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAg
ICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKaW5kZXggOTRhZDIxMmEwNzBmY2Uy
NmFiMGE1OTVhZjgyYTU3MzZjMTM0NThlZS4uY2JmOGI2OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJh
ZjJmYTE1NjY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuaApAQCAtNTcsNyArNTcsNyBAQCBFeGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uQW5k
TG9nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFcnJvcik7CiBXRUJDT1JFX0VYUE9SVCBib29s
IHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgY2FjaGVkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IENhY2hlUXVlcnlPcHRpb25zJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVN
YXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFVSTCYgdXJsLCBib29s
IGhhc1ZhcnlTdGFyLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMs
IGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJik7CiAKLXVzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6
dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+
OwordXNpbmcgUmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8
Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlz
b2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOwogV0VCQ09SRV9FWFBPUlQg
UmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAppbmRleCAyODUw
ZGJhMWUzYmZhMTFmNDg5YjQ0NDAzNTEzZDUxYWUxYmVhZDNhLi45ZDFiYzY3NGZjODI2Y2I2ZDE2
ZDAyNTEwY2Y4NDAxMGFkY2JkNzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9DRE0uY3BwCkBAIC0xMzUsMTcgKzEzNSwxNyBAQCBib29sIENETTo6c3VwcG9y
dHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlKSBjb25zdAogICAg
IHJldHVybiBtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCku
Y29udGFpbnMoaW5pdERhdGFUeXBlKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNOjpz
YW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hh
cmVkQnVmZmVyJiBpbml0RGF0YSkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE06
OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICByZXR1cm4gSW5pdERhdGFS
ZWdpc3RyeTo6c2hhcmVkKCkuc2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRh
KTsKIH0KIAotYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorYm9vbCBDRE06OnN1cHBv
cnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlICYmIG1f
cHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgcmVzcG9uc2UpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQogewog
ICAgIGlmICghbV9wcml2YXRlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCmluZGV4IGQ4YTRiM2FmMTJmMWE3OTIz
ZDg4NzA1ZDViOTU4MWQzNmYxMDI3MGMuLmQ3YjFkNTNkMDQ5MWY3Mjc3OWI1OTRiMmQ4M2MwOWI4
M2JjZjIwN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0u
aApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBDRE1JbnN0YW5jZTsKIGNsYXNzIENETVByaXZhdGU7
CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDRE0g
OiBwdWJsaWMgUmVmQ291bnRlZDxDRE0+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNPiwgcHJp
dmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CkBAIC03MywxMCArNzMs
MTAgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0OwogICAgIGJv
b2wgc3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OwogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIGJvb2wgc3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYp
OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXpl
U2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKaW5kZXggMjFlNTJmNGI3MTRm
YjkxZjY3Y2ZjMzk2MTM5YzE2NTI1YmZiN2I5Yi4uNDEwZWQyZmI2NDI3NTYyY2U5YmQ4ZWRhNGQ5
MWE4NmJhOThjYWE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9DRE1DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETUNsaWVudC5oCkBAIC0zNiwxNCArMzYsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ0RNSW5zdGFuY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDRE1DbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8Q0RNQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNQ2xpZW50KCkgPSBk
ZWZhdWx0OwogCiAgICAgdmlydHVhbCB2b2lkIGNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXli
YWNrSWZOZWNlc3NhcnkoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNkbUNsaWVudFVucmVxdWVz
dGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRp
YWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmNwcAppbmRleCAwYmY1ZWFhNzRlZGJlNjg5YThkMmU0MGEzNDFhNjcwNzQ0MGYyZDU2Li5k
OThiNWQwYzc5ODIwY2U3ZjQzNGQwYTZiYTY1OTFlZjk4NDU3NzM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3Ry
eS5jcHAKQEAgLTU0LDEzICs1NCwxMyBAQCBuYW1lc3BhY2UgewogICAgIGNvbnN0IHVpbnQzMl90
IGtLZXlJZHNNYXhLZXlJZFNpemVJbkJ5dGVzID0gNTEyOwogfQogCi1zdGF0aWMgc3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDEuIEZvcm1hdAogICAgIC8vIGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRk
YXRhL2tleWlkcy5odG1sI2Zvcm1hdAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAog
ICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICgh
dmFsdWUpCkBAIC03NCw3ICs3NCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkCiAgICAgaWYg
KCFraWRzQXJyYXkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAgZm9yIChhdXRvJiB2YWx1ZSA6ICpraWRzQXJyYXkpIHsK
ICAgICAgICAgYXV0byBrZXlJRCA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICBpZiAoIWtl
eUlEKQpAQCAtODcsMTMgKzg3LDEzIEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkCiAgICAgICAg
IGlmIChrZXlJRERhdGEtPnNpemUoKSA8IGtLZXlJZHNNaW5LZXlJZFNpemVJbkJ5dGVzIHx8IGtl
eUlERGF0YS0+c2l6ZSgpID4ga0tleUlkc01heEtleUlkU2l6ZUluQnl0ZXMpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIGtleUlEcy5hcHBlbmQoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZSgqa2V5SUREYXRhKSkpOworICAgICAgICBrZXlJRHMuYXBwZW5k
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCprZXlJRERhdGEpKSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gMS4gRm9ybWF0CiAgICAgLy8gaHR0
cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRh
dGEva2V5aWRzLmh0bWwjZm9ybWF0CkBAIC0xMDQsMTQgKzEwNCwxNCBAQCBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2lk
c0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVmZmVyIDog
a2V5SURCdWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2
NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAg
ICAgICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgb2JqZWN0
LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3RyaW5nIGpz
b25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoanNvbkRhdGEuZGF0YSgpLCBq
c29uRGF0YS5sZW5ndGgoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGFSZWdp
c3RyeTo6ZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0
ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJveGVz
RnJvbUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8v
IDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2Vu
Yy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAgLTE1MSw5ICsxNTEsOSBAQCBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94
Pj4+IEluaQogICAgIHJldHVybiBwc3NoQm94ZXM7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2Vu
Yyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJl
ZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4ga2V5SURzOwogCiAgICAgYXV0byBwc3NoQm94ZXMgPSBleHRyYWN0UHNzaEJveGVz
RnJvbUNlbmMoYnVmZmVyKTsKICAgICBpZiAoIXBzc2hCb3hlcykKQEAgLTE3MiwyMCArMTcyLDIw
IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdp
c3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uCiAgICAgICAgICAgICBpZiAoQ0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjp2YWxpZEZhaXJQbGF5U3RyZWFtaW5nU2NoZW1lcygpLmNvbnRhaW5z
KHNjaGVtZSkpIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHJlcXVlc3QgOiBm
cHNQc3NoLmluaXREYXRhQm94KCkucmVxdWVzdHMoKSkgewogICAgICAgICAgICAgICAgICAgICBh
dXRvJiBrZXlJRCA9IHJlcXVlc3QucmVxdWVzdEluZm8oKS5rZXlJRCgpOwotICAgICAgICAgICAg
ICAgICAgICBrZXlJRHMuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGtleUlELmRhdGEoKSwg
a2V5SUQuc2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgICAgIGtleUlEcy5hcHBlbmQoQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGtleUlELmRhdGEoKSwga2V5SUQuc2l6ZSgpKSk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAjZW5kaWYKIAogICAg
ICAgICBmb3IgKGF1dG8mIHZhbHVlIDogcHNzaEJveC0+a2V5SURzKCkpCi0gICAgICAgICAgICBr
ZXlJRHMuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmFsdWUpKSk7CisgICAg
ICAgICAgICBrZXlJRHMuYXBwZW5kKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKHZhbHVlKSkpOwogICAgIH0KIAogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YVJl
Z2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0CiAgICAg
Ly8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkv
aW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAgLTE5NSw3ICsxOTUsNyBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAKLXN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCitzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplV2Vi
TShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gQ2hlY2sg
aWYgdGhlIGJ1ZmZlciBpcyBhIHZhbGlkIFdlYk0gaW5pdERhdGEuCiAgICAgLy8gVGhlIFdlYk0g
aW5pdERhdGEgaXMgdGhlIENvbnRlbnRFbmNLZXlJRCwgc28gc2hvdWxkIGJlIGxlc3MgdGhhbiBr
V2ViTU1heENvbnRlbnRFbmNLZXlJRFNpemUuCkBAIC0yMDUsMTAgKzIwNSwxMCBAQCBzdGF0aWMg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGF0aWMgc3RkOjpvcHRpb25h
bDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzV2ViTShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzV2ViTShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJ
RHM7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkQnVmZmVyID0gc2FuaXRpemVX
ZWJNKGJ1ZmZlcik7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5
SURzOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRCdWZmZXIg
PSBzYW5pdGl6ZVdlYk0oYnVmZmVyKTsKICAgICBpZiAoIXNhbml0aXplZEJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMjMzLDcgKzIzMyw3IEBAIEluaXREYXRhUmVn
aXN0cnk6OkluaXREYXRhUmVnaXN0cnkoKQogCiBJbml0RGF0YVJlZ2lzdHJ5Ojp+SW5pdERhdGFS
ZWdpc3RyeSgpID0gZGVmYXVsdDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdp
c3RyeTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAg
YXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXREYXRhVHlwZSk7CiAgICAgaWYgKGl0ZXIgPT0g
bV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUuc2FuaXRpemVJbml0RGF0YSkKQEAgLTI0MSw3
ICsyNDEsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6
ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYQogICAgIHJldHVybiBpdGVyLT52YWx1
ZS5zYW5pdGl6ZUluaXREYXRhKGJ1ZmZlcik7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJl
ZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyhjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFS
ZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGl0ZXIgPSBt
X3R5cGVzLmZpbmQoaW5pdERhdGFUeXBlKTsKICAgICBpZiAoaXRlciA9PSBtX3R5cGVzLmVuZCgp
IHx8ICFpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaAppbmRleCBj
ZDEzODdhNmJkMDM4ZmYzNGUyY2ZiNzVmNDQzZGU3ZDk0MDMyMWIwLi43N2Q2MDRiMDhiYjdmN2Uz
OGJjY2IzNTQ1YjM0YzhiMTM0MzU1ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaApAQCAtMzgsMTkgKzM4
LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElTT1Byb3RlY3Rpb25TeXN0ZW1T
cGVjaWZpY0hlYWRlckJveDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIEluaXREYXRhUmVnaXN0cnkgewogcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBJbml0RGF0YVJlZ2lzdHJ5JiBzaGFyZWQoKTsKICAgICBmcmll
bmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8SW5pdERhdGFSZWdpc3RyeT47CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
Pj4gZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0cnVjdCBJbml0RGF0YVR5cGVDYWxsYmFj
a3MgewotICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPihjb25zdCBTaGFyZWRCdWZmZXImKT47Ci0gICAgICAgIHVzaW5n
IEV4dHJhY3RLZXlJRHNDYWxsYmFjayA9IEZ1bmN0aW9uPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJl
ZjxTaGFyZWRCdWZmZXI+Pj4oY29uc3QgU2hhcmVkQnVmZmVyJik+OworICAgICAgICB1c2luZyBT
YW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKKyAgICAgICAgdXNpbmcg
RXh0cmFjdEtleUlEc0NhbGxiYWNrID0gRnVuY3Rpb248c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
PjsKIAogICAgICAgICBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgc2FuaXRpemVJbml0RGF0YTsK
ICAgICAgICAgRXh0cmFjdEtleUlEc0NhbGxiYWNrIGV4dHJhY3RLZXlJRHM7CkBAIC02MSw5ICs2
MSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYga2V5aWRzTmFtZSgp
OwogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiB3ZWJtTmFtZSgpOwogCi0gICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVt
U3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVm
ZmVyPj4+IGV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJik7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90
ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5j
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0NlbmMo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKIAogcHJpdmF0ZToKICAgICBJbml0RGF0YVJlZ2lzdHJ5KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5j
cHAKaW5kZXggOGJmYjFjZTcwMWEyZjVhNjliNWI1MTk5MWFhODYzMmViYjg5MjVmOS4uYWMyNjYz
YzViMmE5ZjUxMWY0YmJkMDQ1NmFmYjQ1NjZlYzRkZTI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApA
QCAtMTczLDEwICsxNzMsMTAgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVz
dChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEJ1ZmYKICAgICAvLyA4LiBM
ZXQgc2Vzc2lvbiB0eXBlIGJlIHRoaXMgb2JqZWN0J3Mgc2Vzc2lvbiB0eXBlLgogICAgIC8vIDku
IExldCBwcm9taXNlIGJlIGEgbmV3IHByb21pc2UuCiAgICAgLy8gMTAuIFJ1biB0aGUgZm9sbG93
aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgotICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgq
dGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIGluaXREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW5pdERhdGEuZGF0YSgp
LCBpbml0RGF0YS5sZW5ndGgoKSksIGluaXREYXRhVHlwZSwgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKKyAg
ICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtp
bmcsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBpbml0RGF0YSA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLmxlbmd0
aCgpKSwgaW5pdERhdGFUeXBlLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmll
ciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewogICAgICAgICAvLyAxMC4xLiBJ
ZiB0aGUgaW5pdCBkYXRhIGlzIG5vdCB2YWxpZCBmb3IgaW5pdERhdGFUeXBlLCByZWplY3QgcHJv
bWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIC8vIDEwLjIuIExl
dCBzYW5pdGl6ZWQgaW5pdCBkYXRhIGJlIGEgdmFsaWRhdGVkIGFuZCBzYW5pdGl6ZWQgdmVyc2lv
biBvZiBpbml0IGRhdGEuCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZElu
aXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUs
IGluaXREYXRhKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0
aXplZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0YShpbml0RGF0
YVR5cGUsIGluaXREYXRhKTsKIAogICAgICAgICAvLyAxMC4zLiBJZiB0aGUgcHJlY2VkaW5nIHN0
ZXAgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3Iu
CiAgICAgICAgIGlmICghc2FuaXRpemVkSW5pdERhdGEpIHsKQEAgLTIyMyw3ICsyMjMsNyBAQCB2
b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgICAgICAgICAgbV9sYXRlc3REZWNyeXB0VGltZSA9
IDA7CiAgICAgICAgIH0KIAotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVxdWVzdExpY2Vu
c2UobV9zZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBzYW5pdGl6ZWRJbml0RGF0YS5yZWxlYXNl
Tm9uTnVsbCgpLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBp
ZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlv
biwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsK
KyAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlcXVlc3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUs
IGluaXREYXRhVHlwZSwgc2FuaXRpemVkSW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMs
IHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1v
dmUoaWRlbnRpZmllcildIChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1J
bnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTQyMCw5
ICs0MjAsOSBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJj
ZSYgcmVzcG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAgIC8vIDQuIExldCByZXNwb25z
ZSBjb3B5IGJlIGEgY29weSBvZiB0aGUgY29udGVudHMgb2YgdGhlIHJlc3BvbnNlIHBhcmFtZXRl
ci4KICAgICAvLyA1LiBMZXQgcHJvbWlzZSBiZSBhIG5ldyBwcm9taXNlLgogICAgIC8vIDYuIFJ1
biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgotICAgIHF1ZXVlVGFza0tlZXBpbmdP
YmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHdlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlc3BvbnNlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVz
cG9uc2UuZGF0YSgpLCByZXNwb25zZS5sZW5ndGgoKSksIHByb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CisgICAg
cXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5n
LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVzcG9uc2UgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5sZW5ndGgo
KSksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVu
dGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDYuMS4gTGV0IHNhbml0aXplZCByZXNw
b25zZSBiZSBhIHZhbGlkYXRlZCBhbmQvb3Igc2FuaXRpemVkIHZlcnNpb24gb2YgcmVzcG9uc2Ug
Y29weS4KLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkUmVzcG9uc2UgPSBt
X2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICAgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3BvbnNlID0gbV9pbXBsZW1l
bnRhdGlvbi0+c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7CiAKICAgICAgICAgLy8gNi4yLiBJ
ZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCBvciBpZiBzYW5pdGl6ZWQgcmVzcG9uc2UgaXMg
ZW1wdHksIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAg
ICAgICAgaWYgKCFzYW5pdGl6ZWRSZXNwb25zZSB8fCBzYW5pdGl6ZWRSZXNwb25zZS0+aXNFbXB0
eSgpKSB7CkBAIC02MDEsNyArNjAxLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnJlbW92ZShS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIC8vIDQuMy4gTGV0IG1lc3Nh
Z2UgdHlwZSBiZSBudWxsLgogCiAgICAgICAgIC8vIDQuNC4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0
ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVtb3Zl
U2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhpcywg
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZp
ZXIpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBzdGQ6Om9w
dGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6
U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNz
aW9uLT5yZW1vdmVTZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgW3RoaXMs
IHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1v
dmUoaWRlbnRpZmllcildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtl
eXMsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2Us
IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAt
NjQ5LDcgKzY0OSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUoUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlKQogICAgIC8vIDUuIFJldHVybiBwcm9taXNlLgogfQogCi12b2lk
IE1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZSBtZXNz
YWdlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBtZXNzYWdlKQordm9pZCBNZWRpYUtleVNlc3Np
b246OmVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG1lc3NhZ2UpCiB7CiAgICAgLy8gNi40LjEgUXVldWUg
YSAibWVzc2FnZSIgRXZlbnQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVk
LW1lZGlhLyNxdWV1ZS1tZXNzYWdlCkBAIC03MTYsNyArNzE2LDcgQEAgdm9pZCBNZWRpYUtleVNl
c3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVj
dG9yJiYgaW4KICAgICAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVz
c2FnZShDRE1NZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNz
YWdlKQordm9pZCBNZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIG1l
c3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewogICAg
IGVucXVldWVNZXNzYWdlKG1lc3NhZ2VUeXBlLCBtZXNzYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmlu
ZGV4IDNkOTZmODgwMmU3NDc4NDFjNGVmZGE4MWRjYjk0MWVhNmU0YTc1ZTQuLjM2NWFjZTVjMDk1
ZTdkYzBjNTcxZTc2Y2NmMmMwN2FhZmM2MmJhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtNTcsNyAr
NTcsNyBAQCBjbGFzcyBDRE07CiBjbGFzcyBEZWZlcnJlZFByb21pc2U7CiBjbGFzcyBNZWRpYUtl
eVN0YXR1c01hcDsKIGNsYXNzIE1lZGlhS2V5czsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNs
YXNzIERPTVByb21pc2VQcm94eTsKIApAQCAtODcsMjAgKzg3LDIwIEBAIHB1YmxpYzoKICAgICB1
c2luZyBDbG9zZWRQcm9taXNlID0gRE9NUHJvbWlzZVByb3h5PElETFVuZGVmaW5lZD47CiAgICAg
Q2xvc2VkUHJvbWlzZSYgY2xvc2VkKCkgeyByZXR1cm4gbV9jbG9zZWRQcm9taXNlLmdldCgpOyB9
CiAKLSAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBNZWRpYUtl
eVN0YXR1cz4+JiBzdGF0dXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzZXM7IH0KKyAgICBj
b25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgTWVkaWFL
ZXlTdGF0dXM+PiYgc3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1c2VzOyB9CiAKICAg
ICB1bnNpZ25lZCBpbnRlcm5hbEluc3RhbmNlU2Vzc2lvbk9iamVjdFJlZkNvdW50KCkgY29uc3Qg
eyByZXR1cm4gbV9pbnN0YW5jZVNlc3Npb24tPnJlZkNvdW50KCk7IH0KIAogcHJpdmF0ZToKICAg
ICBNZWRpYUtleVNlc3Npb24oRG9jdW1lbnQmLCBXZWFrUHRyPE1lZGlhS2V5cz4mJiwgTWVkaWFL
ZXlTZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIFJlZjxDRE0+JiYs
IFJlZjxDRE1JbnN0YW5jZVNlc3Npb24+JiYpOwotICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoTWVk
aWFLZXlNZXNzYWdlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBlbnF1ZXVl
TWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CiAgICAgdm9pZCB1cGRhdGVFeHBpcmF0aW9uKGRvdWJsZSk7CiAgICAgdm9pZCBzZXNzaW9u
Q2xvc2VkKCk7CiAgICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsK
IAogICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAogICAgIHZvaWQgdXBkYXRlS2V5U3Rh
dHVzZXMoQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3ImJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBtZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKICAgICB2b2lk
IHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUGxhdGZvcm1EaXNw
bGF5SUQgZGlzcGxheUlEKCkgZmluYWw7CiAKQEAgLTE0MCwxMCArMTQwLDEwIEBAIHByaXZhdGU6
CiAgICAgTWVkaWFLZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25UeXBlOwogICAgIFJlZjxDRE0+IG1f
aW1wbGVtZW50YXRpb247CiAgICAgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4gbV9pbnN0YW5jZVNl
c3Npb247Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBtX3JlY29yZE9mS2V5VXNhZ2U7
CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9yZWNvcmRPZktleVVz
YWdlOwogICAgIGRvdWJsZSBtX2ZpcnN0RGVjcnlwdFRpbWUgeyAwIH07CiAgICAgZG91YmxlIG1f
bGF0ZXN0RGVjcnlwdFRpbWUgeyAwIH07Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVk
QnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiBtX3N0YXR1c2VzOworICAgIFZlY3RvcjxzdGQ6OnBh
aXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+IG1fc3RhdHVz
ZXM7CiAKICAgICB1c2luZyBEaXNwbGF5Q2hhbmdlZE9ic2VydmVyID0gT2JzZXJ2ZXI8dm9pZChQ
bGF0Zm9ybURpc3BsYXlJRCk+OwogICAgIERpc3BsYXlDaGFuZ2VkT2JzZXJ2ZXIgbV9kaXNwbGF5
Q2hhbmdlZE9ic2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3M2Y3NGU0ZjcwZmM5
MmMyMmJmODU5YzAyMjhhMzRlYWVjNTc5N2EzLi4zOThlOGFiMWI2NTZiNDQ1OTI3YmViNmJjNjkz
ZGQzOTlhNjg3YWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNTYsMTIgKzU2LDEyIEBA
IHVuc2lnbmVkIGxvbmcgTWVkaWFLZXlTdGF0dXNNYXA6OnNpemUoKQogICAgIHJldHVybiBtX3Nl
c3Npb24tPnN0YXR1c2VzKCkuc2l6ZSgpOwogfQogCi1zdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChj
b25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKK3N0YXRpYyBib29s
IGtleUlkc01hdGNoKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZl
clNvdXJjZSYgYikKIHsKICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICghbGVu
Z3RoIHx8IGxlbmd0aCAhPSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmV0dXJuICFzdGQ6Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CisgICAgcmV0
dXJuICFzdGQ6Om1lbWNtcChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRhKCksIGxl
bmd0aCk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJTb3Vy
Y2UmIGtleUlkKQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWly
PEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3RhdHVzZXNb
bV9pbmRleCsrXTsKLSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5m
aXJzdC0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHBh
aXIuZmlyc3QtPnNpemUoKSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6
OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+KFdURk1v
dmUoYnVmZmVyKSksIHBhaXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaAppbmRleCBj
MjExMTEzYTJjNmRhYzc5NzkyNGE5OWQyZDJkZjk3YzJlNjVmODUwLi42MGQ2MmFhZmY4MDc0ZGFk
YTZlMzFhM2YyYjM3MGE2ZDZkMDFmNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCkBAIC0zOCw3ICsz
OCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhS2V5U2Vzc2lvbjsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IE1lZGlhS2V5U3RhdHVzTWFwIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFLZXlTdGF0dXNNYXA+
IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmNwcAppbmRleCA4M2IyNGFjZWFhNWIxMjk0YmI0ZWE0MzlmYjJkNWM0ZjZj
Y2Q0NzUzLi4wMDY1M2I0YzQwMjhkNWQ1NDE2YTY1ZjNmOWU1NjlhZDhhYzUzYTNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3Bw
CkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBNZWRpYUtleXM6OnNldFNlcnZlckNlcnRpZmljYXRl
KGNvbnN0IEJ1ZmZlclNvdXJjZSYgc2VydmVyQ2VydGlmaWNhdGUsIFJlZjwKICAgICB9CiAKICAg
ICAvLyAzLiBMZXQgY2VydGlmaWNhdGUgYmUgYSBjb3B5IG9mIHRoZSBjb250ZW50cyBvZiB0aGUg
c2VydmVyQ2VydGlmaWNhdGUgcGFyYW1ldGVyLgotICAgIGF1dG8gY2VydGlmaWNhdGUgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzZXJ2ZXJDZXJ0aWZpY2F0ZS5kYXRhKCksIHNlcnZlckNlcnRpZmlj
YXRlLmxlbmd0aCgpKTsKKyAgICBhdXRvIGNlcnRpZmljYXRlID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHNlcnZlckNlcnRpZmljYXRlLmRhdGEoKSwgc2VydmVyQ2VydGlmaWNhdGUu
bGVuZ3RoKCkpOwogCiAgICAgLy8gNC4gTGV0IHByb21pc2UgYmUgYSBuZXcgcHJvbWlzZS4KICAg
ICAvLyA1LiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKQEAgLTE3Nyw3ICsx
NzcsNyBAQCBib29sIE1lZGlhS2V5czo6aGFzT3BlblNlc3Npb25zKCkgY29uc3QKICAgICAgICAg
fSk7CiB9CiAKLXZvaWQgTWVkaWFLZXlzOjp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJl
Y2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhKQordm9pZCBNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVj
ZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhKQogewogICAgIGZvciAoYXV0byYgY2RtQ2xpZW50IDogbV9jZG1DbGll
bnRzKQogICAgICAgICBjZG1DbGllbnQuY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlv
bkRhdGFSZWNlaXZlZChpbml0RGF0YVR5cGUsIGluaXREYXRhLmNvcHlSZWYoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAppbmRleCA3
YjU5YTNiYzZkMjI1NmZjNjU2ZjA4Y2JmMjY4OTE4NTEwOTgzYTIyLi45MWExYTA3MTE0MzNiZTI0
N2RkMmE4NWM1ZjRhZDA5MzhhMDlhN2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHJvdGVjdGVk
OgogICAgIE1lZGlhS2V5cyhEb2N1bWVudCYsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVy
LCBib29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsIGNvbnN0IFZlY3RvcjxNZWRpYUtleVNlc3Np
b25UeXBlPiYsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0YW5jZT4mJik7CiAKICAgICAvLyBDRE1J
bnN0YW5jZUNsaWVudAotICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNl
aXZlZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lk
IHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiAgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dl
cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDJm
ZGM0YzAwMjFmNmUxZmRlYzQ1ZjhmYWY2MDkwNmMyYmY4MmUzYjEuLmYxMmM4OGZlZTlhODA3NGI1
MDhlZjk1NzFlNzAxZjU2ODJmYjQ5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3Vt
ZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
cwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRC
dWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29u
c3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBl
KCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAg
IG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRl
bnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRC
dWZmZXItPnNpemUoKSk7CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgLy8gRklYTUU6IElmIHRoZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQg
dGhlbSBsaWtlIHdlIGRvIG90aGVyIGJsb2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxG
b3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9y
bURhdGEoKSkKICAgICAgICAgcmV0dXJuICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFC
b2R5KCkpOwogICAgIGlmIChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAg
IHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAg
ICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0yODQsNyArMjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0
Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAgYXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRh
KCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKQEAg
LTI5NywxNCArMjk3LDE0IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgp
CiAgICAgICAgIHJldHVybiBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAg
ICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0
ZXh0Qm9keSgpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0
ZXh0Qm9keSgpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc1VS
TFNlYXJjaFBhcmFtcygpKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRG
OEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVu
Y29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNC
b2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAg
IGlmIChpc0FycmF5QnVmZmVyKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJy
YXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJC
b2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAo
aXNBcnJheUJ1ZmZlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFk
ZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVy
Vmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCBiYWQxYjVlYTIzYjc3MWIz
NDdmNGIwNGE1Njc1OGZjMDA4OGUxMmU0Li4wODk4M2VjMDA0M2Y2Yzk5YTdmYWVhZmM2OTNjZTgy
ODIzYjQwMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAg
LTY0LDcgKzY0LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5QXNGb3Jt
RGF0YSgpIGNvbnN0OwogCi0gICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6
bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcg
VGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CiAKICAg
ICB2b2lkIHNldEFzRm9ybURhdGEoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIHsgbV9kYXRhID0gV1RG
TW92ZShkYXRhKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcAppbmRleCBmY2MyMTZhMDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhiNzlm
ZjYyYjNiLi4yMjEzZDYyMzAzZWZlMmExZjcyOTgyNjBmNTg4NjBiNzc2ZmIyNjc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApA
QCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBGZXRjaEJvZHlDb25zCiAKIHZvaWQgRmV0Y2hC
b2R5Q29uc3VtZXI6OmNsZWFuKCkKIHsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgbV9i
dWZmZXIucmVzZXQoKTsKICAgICByZXNldENvbnN1bWVQcm9taXNlKCk7CiAgICAgaWYgKG1fc2lu
aykgewogICAgICAgICBtX3NpbmstPmNsZWFyQ2FsbGJhY2soKTsKQEAgLTI2NiwxNiArMjY2LDE4
IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiB7CiAgICAgaWYgKHN0cmVhbSkgewogICAgICAg
ICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFy
ZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlwZSA9IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8m
JiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBtX3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hh
cmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgdHlwZSA9IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8m
JiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24o
KSkgewogICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2Vw
dGlvbigpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAg
ICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1v
dmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUo
KSk7CisgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNp
emUoKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9
IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgICAgIHJlc29sdmVX
aXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZl
ci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwog
ICAgICAgICBtX3NpbmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0z
MDYsNyArMzA4LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICAgICAgcmV0dXJuOwog
ICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkZvcm1EYXRhOiB7CiAgICAgICAgIGF1
dG8gYnVmZmVyID0gdGFrZURhdGEoKTsKLSAgICAgICAgaWYgKGF1dG8gZm9ybURhdGEgPSBwYWNr
YWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgp
IDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwKSkKKyAgICAgICAgaWYgKGF1
dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZl
ciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8g
YnVmZmVyLT5zaXplKCkgOiAwKSkKICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50
ZXJmYWNlPERPTUZvcm1EYXRhPj4oKmZvcm1EYXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CkBAIC0zMjQsMTYgKzMyNiwyMCBAQCB2b2lk
IEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
c2l6ZSkKICAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShk
YXRhLCBzaXplKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcikg
ewotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0YSwgc2l6ZSk7
CisgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQordm9pZCBGZXRjaEJvZHlDb25zdW1l
cjo6c2V0RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewotICAgIHJl
dHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlci5yZXNldCgpOworICAgIG1fYnVm
ZmVyLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKK30KKworUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSgpCit7CisgICAgaWYgKCFtX2J1ZmZl
cikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKTsK
IH0KIAogUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNB
cnJheUJ1ZmZlcigpCkBAIC0zNDEsOSArMzQ3LDcgQEAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+
IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCiAgICAgaWYgKCFtX2J1ZmZl
cikKICAgICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CiAK
LSAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7
Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKKyAgICBy
ZXR1cm4gbV9idWZmZXIudGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogfQogCiBSZWY8
QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkKQEAgLTM1MSw5ICszNTUsNyBAQCBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBpZiAo
IW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1
aW50OF90PigpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwog
Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAg
ICBhdXRvIGRhdGEgPSBidWZmZXItPmV4dHJhY3REYXRhKCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9t
RGF0YShjb250ZXh0LCBXVEZNb3ZlKGRhdGEpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4g
YmxvYkZyb21EYXRhKGNvbnRleHQsIG1fYnVmZmVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9j
b250ZW50VHlwZSk7CiB9CiAKIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgp
CkBAIC0zNjIsOCArMzY0LDggQEAgU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0
KCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBh
dXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPmRh
dGEoKSwgbV9idWZmZXItPnNpemUoKSk7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIGF1
dG8gYnVmZmVyID0gbV9idWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8g
dGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVybiB0ZXh0OwogfQogCkBAIC0zODMsMTAgKzM4NSw4
IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc2V0Q29uc3VtZVByb21pc2UoKQogdm9pZCBG
ZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNlKFJlZjxGZXRjaEJvZHlTb3VyY2U+JiYgc291cmNl
KQogewogICAgIG1fc291cmNlID0gV1RGTW92ZShzb3VyY2UpOwotICAgIGlmIChtX2J1ZmZlcikg
ewotICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKSk7Ci0gICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICB9CisgICAgaWYgKG1fYnVm
ZmVyKQorICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci50YWtlKCktPnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCkpOwogfQogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nRmFp
bGVkKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDJiMDU2ZjEyNjQzYmE5NjdmZTQx
YTAxNTEzYTg5YjczNjI2NDJkNGMuLjg3MWQyYzA4NjMzMWE5ODI5NGExNjZhNGI0MmUzMTg0ZTAz
Nzc3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmgKQEAgLTUwLDEwICs1MCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Qg
eyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgZGF0YSkgeyBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7IH0KKyAgICBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
Z2V0KCkuZ2V0KCk7IH0KKyAgICB2b2lkIHNldERhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKICAgICBSZWZQdHI8SlNDOjpB
cnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKICAgICBTdHJpbmcgdGFrZUFzVGV4dCgp
OwogCkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAKICAgICBUeXBlIG1fdHlwZTsKICAgICBT
dHJpbmcgbV9jb250ZW50VHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogICAgIFJlZlB0cjxEZWZlcnJlZFBy
b21pc2U+IG1fY29uc3VtZVByb21pc2U7CiAgICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtVG9TaGFy
ZWRCdWZmZXJTaW5rPiBtX3Npbms7CiAgICAgUmVmUHRyPEZldGNoQm9keVNvdXJjZT4gbV9zb3Vy
Y2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4
IGZjNTVjYzdkODNkOGJjMTFmMDg1NGRjM2NmZDg1MDk3YTMxZjEwZjYuLjAzZjg5YjYxY2E1Zjdj
NzE3NmI5ZDg4Y2QxMzY2MGU4NmI3YTI1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBGZXRjaExvYWRl
cjo6c3RvcCgpCiAgICAgICAgIG1fbG9hZGVyLT5jYW5jZWwoKTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gRmV0Y2hMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKK1JlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBGZXRjaExvYWRlcjo6c3RhcnRTdHJlYW1pbmcoKQogewogICAgIEFTU0VS
VChtX2NvbnN1bWVyKTsKICAgICBhdXRvIGZpcnN0Q2h1bmsgPSBtX2NvbnN1bWVyLT50YWtlRGF0
YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCmluZGV4IDJm
OTBmMGVjM2ZmOTA1YTI2MjMxYzg0YzcyYTdhMTg2Y2Q0YmZlODMuLjQ2MTJkMGUwZTNhN2VmZTMw
NjAzOTZiMGQ3NWEyZmEzYmM0ZWRkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoTG9hZGVyLmgKQEAgLTM5LDE0ICszOSwxNCBAQCBjbGFzcyBGZXRjaEJvZHlDb25zdW1l
cjsKIGNsYXNzIEZldGNoTG9hZGVyQ2xpZW50OwogY2xhc3MgRmV0Y2hSZXF1ZXN0OwogY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEZldGNoTG9hZGVyIGZpbmFsIDogcHVibGljIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQgewogcHVibGljOgogICAgIEZldGNoTG9hZGVyKEZldGNoTG9h
ZGVyQ2xpZW50JiwgRmV0Y2hCb2R5Q29uc3VtZXIqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+RmV0
Y2hMb2FkZXIoKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CiAK
ICAgICB2b2lkIHN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBGZXRjaFJlcXVl
c3QmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBjb25zdCBCbG9iJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcAppbmRleCA0ZGY4NDI2YzcxOGJhMTZlY2YwYTQ3ZTczZTkwMGQzZjg0OGY2
NGYyLi42YWNjN2U5MmI1YjhkOGRmYjQyMmY3NWZlYmNmYmQ3ZGUzYTM3ZTA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0
MDAsOCBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVu
ayhDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBTcGFuIGNodW5rIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsK
KyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAg
IFNwYW4gY2h1bmsgeyBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9Owog
ICAgIG1fY29uc3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCkBAIC00NDEsNyArNDQyLDcg
QEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiBkYXRhLCB1
aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW4KICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7
CiAgICAgICAgICAgICBib2R5KCkuc2V0QXNGb3JtRGF0YShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAg
ICAgICAgIH0sCi0gICAgICAgIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Cisg
ICAgICAgIFt0aGlzXShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAg
ICAgICAgICAgaWYgKGlzQm9keU51bGwoKSkKICAgICAgICAgICAgICAgICBzZXRCb2R5KHsgfSk7
CiAgICAgICAgICAgICBib2R5KCkuY29uc3VtZXIoKS5zZXREYXRhKFdURk1vdmUoYnVmZmVyKSk7
CkBAIC01MDMsNyArNTA0LDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpmZWVkU3RyZWFtKCkKICAg
ICBjbG9zZVN0cmVhbSgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaFJlc3BvbnNl
OjpCb2R5TG9hZGVyOjpzdGFydFN0cmVhbWluZygpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RhcnRTdHJlYW1pbmcoKQogewogICAg
IEFTU0VSVChtX2xvYWRlcik7CiAgICAgcmV0dXJuIG1fbG9hZGVyLT5zdGFydFN0cmVhbWluZygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCAz
NDIwYzZhMzhkM2MzZjZlMmZkYjY2NzVlOGE0ZDEzNjViZjVhNWJiLi5jOTYzOWNjYWIyNzU4NDJl
YTU4ZTg0Njc1NmJiMGJlZWMyYjE2Yzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBm
ZWVkU3RyZWFtKCkgZmluYWw7CiAgICAgdm9pZCBjYW5jZWwoKSBmaW5hbDsKIAotICAgIHVzaW5n
IFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRh
PiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFy
aWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PjsKICAgICBSZXNwb25zZURhdGEgY29uc3VtZUJvZHkoKTsKICAgICB2b2lkIHNldEJv
ZHlEYXRhKFJlc3BvbnNlRGF0YSYmLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW5nKTsKIApA
QCAtMTM0LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCBjb25zdW1lRGF0YUJ5
Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJik7CiAKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CiAgICAgICAgIE5vdGlmaWNhdGlvbkNhbGxi
YWNrIHRha2VOb3RpZmljYXRpb25DYWxsYmFjaygpIHsgcmV0dXJuIFdURk1vdmUobV9yZXNwb25z
ZUNhbGxiYWNrKTsgfQogICAgICAgICBDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayB0YWtlQ29u
c3VtZURhdGFDYWxsYmFjaygpIHsgcmV0dXJuIFdURk1vdmUobV9jb25zdW1lRGF0YUNhbGxiYWNr
KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dC5oCmluZGV4IGRkMTljODcwYWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEzNTJkZGQwNDEuLjQyYWEx
MzNmODRjMWZkMTBhMmI5Y2Q3YzI0ZGViNmU3YzIyN2M5NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCkBAIC0zOCw3ICszOCw3IEBAIGVu
dW0gY2xhc3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgOiBib29sIHsgTm8sIFllcyB9Owog
ZW51bSBjbGFzcyBIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwIDogYm9vbCB7IE5vLCBZ
ZXMgfTsKIAogc3RydWN0IEFwcEhpZ2hsaWdodCB7Ci0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gaGlnaGxpZ2h0OworICAgIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBoaWdobGlnaHQ7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRleHQ7CiAgICAgQ3JlYXRl
TmV3R3JvdXBGb3JIaWdobGlnaHQgaXNOZXdHcm91cDsKICAgICBIaWdobGlnaHRSZXF1ZXN0T3Jp
Z2luYXRlZEluQXBwIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA7CkBAIC01Miw3ICs1Miw3IEBAIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhp
Z2hsaWdodC0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdo
bGlnaHQtPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2Rl
Rml4ZWRMZW5ndGhEYXRhKGhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBoaWdo
bGlnaHQtPnNpemUoKSwgMSk7CiAKICAgICBlbmNvZGVyIDw8IHRleHQ7CiAKQEAgLTkxLDcgKzkx
LDcgQEAgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHQ+IEFwcEhpZ2hsaWdodDo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXF1ZXN0T3JpZ2luYXRl
ZEluQXBwKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGhpZ2hsaWdodCkpLCBXVEZNb3ZlKCp0ZXh0KSwg
aXNOZXdHcm91cCwgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCB9fTsKKyAgICByZXR1cm4ge3sgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoaGlnaGxpZ2h0KSksIFdURk1vdmUo
KnRleHQpLCBpc05ld0dyb3VwLCByZXF1ZXN0T3JpZ2luYXRlZEluQXBwIH19OwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRS
YW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhLmNwcAppbmRleCBlMmQ5YTYxZTQyNzY3NmViN2I3ZGFlYWJmZmEzMmQwNGE0
NTc2YzA2Li5mNWQ0YjQ3YTU5OWY0ZDMyNjNiYTk2ZWE4Yzk0MjA2NDc0YjA0NGI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFJhbmdlRGF0YS5jcHAKQEAgLTQ0LDE5ICs0NCwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNvbnN0ZXhwciB1aW50NjRfdCBoaWdobGlnaHRGaWxlU2lnbmF0dXJlID0gMHg0MTQxNTA0ODMy
MzAzMjMxOyAvLyBGaWxlIFNpZ25hdHVyZSAgKEEpcHBsZShBUClwbGljYXRpb24oSClpZ2hsaWdo
dHMoMjAyMSkKIAotc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hs
aWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpv
cHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3Jl
YXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBhdXRvIGRl
Y29kZXIgPSBidWZmZXIuZGVjb2RlcigpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1
ZmZlci5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gZGVjb2RlciA9IGNvbnRpZ3VvdXNCdWZm
ZXItPmRlY29kZXIoKTsKICAgICBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4g
ZGF0YTsKICAgICBkZWNvZGVyID4+IGRhdGE7CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLVJlZjxT
aGFyZWRCdWZmZXI+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6dG9TaGFyZWRCdWZmZXIoKSBjb25z
dAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6dG9T
aGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgZW5j
b2RlcjsKICAgICBlbmNvZGVyIDw8ICp0aGlzOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVy
LmJ1ZmZlclNpemUoKSk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhOjpOb2RlUGF0aENvbXBvbmVudDo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHRSYW5nZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCmluZGV4IGNmNjM4MWFjZmIwYTUyMTFiNDM1MDhiN2I1
MTdkNmRiMmY2ZmM3NDMuLmI1ZGFmNjAyNTM5OGEzZjdlNmYxZDM3YWJlY2U4NDRkNGYxYzY1NDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFJhbmdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFJhbmdlRGF0YS5oCkBAIC0zMywxMiArMzMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCi1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBBcHBIaWdobGlnaHRSYW5nZURh
dGEgewogV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBjcmVhdGUoY29u
c3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpOwogICAgIHN0cnVjdCBOb2RlUGF0aENvbXBvbmVudCB7CiAgICAgICAgIFN0cmluZyBp
ZGVudGlmaWVyOwogICAgICAgICBTdHJpbmcgbm9kZU5hbWU7CkBAIC0xMTEsNyArMTExLDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRlY29kZShEZWNvZGVyJik7CiAKLSAgICBSZWY8U2hh
cmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFN0cmlu
ZyBtX2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCmluZGV4IGRjMzlhMGYwZDE4ZmZmY2E3ZGZi
NDY1MjE5Y2Q2MTJhOWY3MzhmOGYuLmU1ZGU4NDk0ZjM1MDQ1MzU5NGIyZjJlODhjM2RkYTMzZmE5
YWY3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBBcHBIaWdo
bGlnaHRTdG9yYWdlOjpzdG9yZUFwcEhpZ2hsaWdodChSZWY8U3RhdGljUmFuZ2U+JiYgcmFuZ2Up
CiAgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5zdG9yZUFwcEhpZ2hsaWdodChXVEZN
b3ZlKGhpZ2hsaWdodCkpOwogfQogCi12b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVB
bmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgU2Nyb2xs
VG9IaWdobGlnaHQgc2Nyb2xsKQordm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3JlQW5k
U2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBTY3JvbGxUb0hpZ2hsaWdodCBzY3JvbGwpCiB7CiAgICAgYXV0byBhcHBIaWdobGlnaHRSYW5n
ZURhdGEgPSBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShidWZmZXIpOwogICAgIGlmICgh
YXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCmluZGV4IGIxNTJmNzZlZDQyNDA4OTJl
YTdkZTIxZTJjYjA2ZDQ3MmQ4NzMzNjAuLmUyNzY2MzNiNDg0ZjgxMDk0YWRlY2U0NWY2NGFiYmVk
MTc4MTI1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Rh
dGljUmFuZ2U7CiBjbGFzcyBIaWdobGlnaHQ7CiAKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgog
ICAgIH5BcHBIaWdobGlnaHRTdG9yYWdlKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0
b3JlQXBwSGlnaGxpZ2h0KFJlZjxTdGF0aWNSYW5nZT4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwg
U2Nyb2xsVG9IaWdobGlnaHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdG9yZUFuZFNj
cm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTY3JvbGxU
b0hpZ2hsaWdodCk7CiAgICAgdm9pZCByZXN0b3JlVW5yZXN0b3JlZEFwcEhpZ2hsaWdodHMoKTsK
ICAgICBNb25vdG9uaWNUaW1lIGxhc3RSYW5nZVNlYXJjaFRpbWUoKSBjb25zdCB7IHJldHVybiBt
X3RpbWVBdExhc3RSYW5nZVNlYXJjaDsgfQogICAgIHZvaWQgcmVzZXRMYXN0UmFuZ2VTZWFyY2hU
aW1lKCkgeyBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaCA9IE1vbm90b25pY1RpbWU6Om5vdygpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKaW5kZXggMmEyYzFmYzMyOTU4MDVkNTJmZDU2YWYzMGI0
NTVhZTJjY2NjNDg3Ny4uYTFjOTMxMmQ0NWViYmZjZTlmMzJlNmNjMWExYTJlODRkZGNhN2M3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJpYWxpemF0aW9uLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGVudW0gY2xhc3MgS2V5UGF0aFR5cGUgeyBOdWxsLCBTdHJpbmcsIEFycmF5IH07
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpv
cHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4m
IGtleVBhdGgpCiB7CiAgICAgYXV0byBlbmNvZGVyID0gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7
CiAKQEAgLTI4MiwxMyArMjgyLDEzIEBAIHN0YXRpYyB2b2lkIGVuY29kZUtleShWZWN0b3I8dWlu
dDhfdD4mIGRhdGEsIGNvbnN0IElEQktleURhdGEmIGtleSkKICAgICB9CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQor
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3Qg
SURCS2V5RGF0YSYga2V5KQogewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGRhdGEu
YXBwZW5kKFNJREJLZXlWZXJzaW9uKTsKIAogICAgIGVuY29kZUtleShkYXRhLCBrZXkpOwotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiBzdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlS2V5KGNvbnN0IHVpbnQ4X3QqJiBkYXRh
LCBjb25zdCB1aW50OF90KiBlbmQsIElEQktleURhdGEmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bi5oCmluZGV4IDY1YzRhNjNjNzg3ZjM2OTQxNDZlMjMxYzhjNTQwMTcwNjdhNGY0MjQuLmFhZmRi
MzcwMWYwZWY0NDhkNmI4YWI1MTAxMTg1YzRiMzRmZmFhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24u
aApAQCAtMzIsMTAgKzMyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5
RGF0YTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBz
dGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7
CiBib29sIGRlc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVf
dCBidWZmZXJTaXplLCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOworUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5
RGF0YSYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgdWludDhfdCogYnVmZmVy
LCBzaXplX3QgYnVmZmVyU2l6ZSwgSURCS2V5RGF0YSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDBhZmI3ZWU1Y2M4NzQz
NTZiMzVhMTY4MDMyMzFhNjEzNjRjMDk4NjEuLjI3Y2Q4ZWVjNTNlMWFjZmM1OTg1ZWM3YjhmMDVl
MjI3NjQ1Yzg3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02ODYs
NyArNjg2LDcgQEAgYm9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgo
SURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9yZUluZm8KICAgICBTUUxpdGVUcmFuc2FjdGlv
biB0cmFuc2FjdGlvbigqbV9zcWxpdGVEQik7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0
aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktl
eVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRh
YmFzZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBJREJF
cnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdAogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1j
aGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAg
IGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsK
ICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3Rv
cmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qg
c3RvcmUiX3MgfTsKQEAgLTEzODcsNyArMTM4Nyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3Jl
YXRlIGFuIGluZGV4IGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAg
ICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJ
REJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFs
aXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewog
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZl
IGluIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBjcmVhdGUgaW5kZXggaW4gZGF0YWJh
c2UiX3MgfTsKQEAgLTE0NjQsNyArMTQ2NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQoY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvCiB7
CiAgICAgaGFzUmVjb3JkID0gZmFsc2U7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRl
eEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5k
ZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWlu
ZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBp
bmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBj
aGVjayBmb3IgaW5kZXggcmVjb3JkIGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNTMzLDEzICsxNTMz
LDEzIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhS
ZWNvcmQoaW50NjRfdCBvYmplY3RTdG9yZUlELCBpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQgLSAlcywgJXMiLCBr
ZXlWYWx1ZS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgaW5kZXhLZXkubG9nZ2luZ1N0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhL
ZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4
S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRl
eEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5k
ZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8g
YmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7Cisg
ICAgYXV0byB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOwogICAg
IGlmICghdmFsdWVCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFs
aXplIHRoZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdmFsdWUg
dG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTY2MSw3ICsxNjYxLDcgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmkKICAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2Fj
dGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJBdHRlbXB0IHRvIHNlZSBpZiBrZXkgZXhpc3RzIGluIG9iamVjdHN0b3JlIHdpdGhvdXQg
YW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBr
ZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVm
ZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8g
Y2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hl
Y2sgZm9yIGV4aXN0ZW5jZSBpbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTE3NDEsNyArMTc0MSw3
IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKFNRTGl0ZUlE
QlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICBBU1NFUlQodHJhbnNhY3Rpb24ubW9kZSgp
ICE9IElEQlRyYW5zYWN0aW9uTW9kZTo6UmVhZG9ubHkpOwogICAgIFVOVVNFRF9QQVJBTSh0cmFu
c2FjdGlvbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhl
IGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVu
YWJsZSB0byBzZXJpYWxpemUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFi
YXNlIl9zIH07CkBAIC0xOTYyLDcgKzE5NjIsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmFkZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHN0b3Jl
IGEgcmVjb3JkIGluIGFuIG9iamVjdCBzdG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJf
cyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVj
dCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIl9z
IH07CkBAIC0yMTI0LDcgKzIxMjQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGF1
dG8ga2V5ID0ga2V5UmFuZ2UubG93ZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAg
ICAga2V5ID0gSURCS2V5RGF0YTo6bWluaW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gbG93ZXJC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGlu
IGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3Is
ICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsK
QEAgLTIxMzMsNyArMjEzMyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0
UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAga2V5ID0g
a2V5UmFuZ2UudXBwZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0g
SURCS2V5RGF0YTo6bWF4aW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCBy
YW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUg
dG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTI0NDMs
NyArMjQ0Myw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0
SW5kZXhSZWNvcmRGb3JPbmVLZXkoaW50NjRfdCBpbmRleElECiAKICAgICBBU1NFUlQoa2V5Lmlz
VmFsaWQoKSAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4ICYmIGtleS50
eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNaW4pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5k
ZXggcmVjb3JkIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVu
YWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCJfcyB9
OwpAQCAtMjUwOCwxNCArMjUwOCwxNCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmdldENvdW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpbwogICAgIG91
dENvdW50ID0gMDsKIAogICAgIGF1dG8gbG93ZXJLZXkgPSByYW5nZS5sb3dlcktleS5pc051bGwo
KSA/IElEQktleURhdGE6Om1pbmltdW0oKSA6IHJhbmdlLmxvd2VyS2V5OwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7
CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOwog
ICAgIGlmICghbG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2Vy
aWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkg
aW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKICAgICB9CiAKICAgICBh
dXRvIHVwcGVyS2V5ID0gcmFuZ2UudXBwZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptYXhp
bXVtKCkgOiByYW5nZS51cHBlcktleTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOworICAgIGF1dG8gdXBwZXJCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVy
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkg
aW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJv
ciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3Ig
Y291bnQgb3BlcmF0aW9uIl9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IDhiZmUyMjdk
YjYxOTYyM2JkOGRmMDZhMTA4NThjZjAzMjFjNDMyMDYuLjQ4NjEwMzRkM2ExMmRhMGMwOWNmZWRm
ZTlmMmVhNjVhNjgxMDAzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0yNjksNyArMjY5
LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMoKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CisgICAgYXV0byBidWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKICAgICBpZiAobV9zdGF0ZW1l
bnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09L
KSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50
IChsb3dlciBrZXkpIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMxNSw3ICszMTUsNyBA
QCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElm
TmVjZXNzYXJ5KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRv
IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAobV9wcmVJbmRleFN0
YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJ
VEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgYmluZCBpZCBhcmd1bWVudCB0
byBwcmUgc3RhdGVtZW50IChrZXkpIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNw
cAppbmRleCAwYTQ2OWJkMGJkMWYzOGRjYjk2YjM5ZDhjMzAwMGFmNzNkMTJhYjU5Li5jOWQ2ZGE2
YmRkOWY5Mzk1MDFmNGY0MjMyYjRjNzgzN2Q4NDBkYWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCkBAIC0xOTYs
NyArMTk2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFSZWNvcmRlcjo6c3RhcnRSZWNvcmRp
bmcoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdGltZVNsaWMKICAgICByZXR1cm4geyB9OwogfQog
Ci1zdGF0aWMgaW5saW5lIFJlZjxCbG9iRXZlbnQ+IGNyZWF0ZURhdGFBdmFpbGFibGVFdmVudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlIHRpbWVDb2RlKQorc3RhdGljIGlu
bGluZSBSZWY8QmxvYkV2ZW50PiBjcmVhdGVEYXRhQXZhaWxhYmxlRXZlbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUgdGltZUNvZGUpCiB7CiAgICAgYXV0
byBibG9iID0gYnVmZmVyID8gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIGJ1ZmZlci0+ZXh0cmFjdERh
dGEoKSwgbWltZVR5cGUpIDogQmxvYjo6Y3JlYXRlKGNvbnRleHQpOwogICAgIHJldHVybiBCbG9i
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGF0YWF2YWlsYWJsZUV2ZW50LCBCbG9iRXZlbnQ6
OkluaXQgeyB7IGZhbHNlLCBmYWxzZSwgZmFsc2UgfSwgV1RGTW92ZShibG9iKSwgdGltZUNvZGUg
fSwgQmxvYkV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaAppbmRleCA3NzEyYjQ0NTI4MzY3
ZDhjMjcyNTAyYWRiYWFjYWFmOTc4OGNiZGIwLi4xZTliNzRhYjE3ZTMxMDhkYjQyMDliOWI0ZjAy
MTRkYTExYWM2ZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlzcGF0Y2hFcnJvcihFeGNlcHRpb24mJik7CiAKICAgICBlbnVtIGNsYXNzIFRha2VQ
cml2YXRlUmVjb3JkZXIgeyBObywgWWVzIH07Ci0gICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sg
PSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGRvdWJsZSk+OworICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248
dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgZG91YmxlKT47CiAgICAgdm9pZCBmZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJiwg
VGFrZVByaXZhdGVSZWNvcmRlcik7CiAKICAgICAvLyBNZWRpYVN0cmVhbTo6T2JzZXJ2ZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0
YS5jcHAKaW5kZXggM2Y0YzliY2QxMzNhYzI5ZjNmN2RkZTE5OTQ3OGUzOTI1N2Q1ZTY2Yi4uODc0
YWE3ZjBiMThmMGVlNzU4ODBiYTVmNWVmNjdkNDdiZmMyYjJiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKQEAgLTc3
LDcgKzc3LDcgQEAgdm9pZCBBcnR3b3JrSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0wKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAvLyBTYW5pdGl6ZSB0aGUgaW1hZ2UgYnkgZGVjb2RpbmcgaXQgaW50byBhIEJpdG1h
cEltYWdlLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRpemUgPSBtX2Nh
Y2hlZEltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGJ1ZmZlclRvU2FuaXRpemUgPSBtX2NhY2hlZEltYWdlLT5pbWFnZSgpLT5kYXRhKCk7
CiAgICAgYXV0byBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICBiaXRt
YXBJbWFnZS0+c2V0RGF0YShXVEZNb3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKICAgICBh
dXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAppbmRleCAyYjNjZGUzNjA4MjQ3MWMx
MWM4N2ZjZjYxY2M4MWNjMzYwYzM5ZDkwLi5hNzVmNDE2ZGIxZDhkMTAxNTZhMmNhYjI1YjM2MGZi
OTRlNWY3NGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L1NvdXJjZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuY3BwCkBAIC01MDAsNyArNTAwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
U291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbChjb25zdCB1bnNpZ25lZCBjaGFyKiBk
YXRhLAogICAgIC8vIE5PVEU6IFJldHVybiB0byAzLjIgYXBwZW5kQnVmZmVyKCkKICAgICAvLyAz
LiBBZGQgZGF0YSB0byB0aGUgZW5kIG9mIHRoZSBpbnB1dCBidWZmZXIuCiAgICAgQVNTRVJUKCFt
X3BlbmRpbmdBcHBlbmREYXRhKTsKLSAgICBtX3BlbmRpbmdBcHBlbmREYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7CisgICAgbV9wZW5kaW5nQXBwZW5kRGF0YSA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKIAogICAgIC8vIDQuIFNldCB0
aGUgdXBkYXRpbmcgYXR0cmlidXRlIHRvIHRydWUuCiAgICAgbV91cGRhdGluZyA9IHRydWU7CkBA
IC01MzAsNyArNTMwLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlclRpbWVyRmly
ZWQoKQogICAgIC8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS90
aXAvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS5odG1sI3NvdXJjZWJ1ZmZlci1zZWdtZW50LXBh
cnNlci1sb29wCiAgICAgLy8gV2hlbiB0aGUgc2VnbWVudCBwYXJzZXIgbG9vcCBhbGdvcml0aG0g
aXMgaW52b2tlZCwgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBhcHBlbmREYXRhID0gV1RGTW92ZShtX3BlbmRpbmdBcHBlbmREYXRhKTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYXBwZW5kRGF0YSA9IFdURk1vdmUobV9wZW5k
aW5nQXBwZW5kRGF0YSk7CiAgICAgLy8gMS4gTG9vcCBUb3A6IElmIHRoZSBpbnB1dCBidWZmZXIg
aXMgZW1wdHksIHRoZW4ganVtcCB0byB0aGUgbmVlZCBtb3JlIGRhdGEgc3RlcCBiZWxvdy4KICAg
ICBpZiAoIWFwcGVuZERhdGEgfHwgIWFwcGVuZERhdGEtPnNpemUoKSkgewogICAgICAgICBzb3Vy
Y2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoQXBwZW5kUmVzdWx0OjpBcHBlbmRTdWNjZWVk
ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmgKaW5kZXggNTIwYzA3NzU2OTZhMmYwZTJlNzMwMDczNWU4Yzk3NzQ5NWYxYTYxNC4uZDRj
ODU3OWMwYmJkNDQzYTUxMmZhOWY2OGM0MjdlYzA0ODg1ZDBkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCkBAIC0yMjIsNyArMjIy
LDcgQEAgcHJpdmF0ZToKIAogICAgIFdURjo6T2JzZXJ2ZXI8dm9pZCooKT4gbV9vcGFxdWVSb290
UHJvdmlkZXI7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BlbmRpbmdBcHBlbmREYXRh
OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX3BlbmRpbmdBcHBlbmREYXRh
OwogICAgIFRpbWVyIG1fYXBwZW5kQnVmZmVyVGltZXI7CiAKICAgICBSZWZQdHI8VmlkZW9UcmFj
a0xpc3Q+IG1fdmlkZW9UcmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAK
aW5kZXggZmViMWI4ZmZmYjdiOTRjOWU3ZWIwYmU0OGFkMzVkZDcwNzljNzBiYi4uNDIzMzRmZTgy
NWVkNGJhNDI2Y2Y5MWI5NzdhZDBiZWI1ZWVkNzEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3Rl
SGFuZGxlcjo6cmVhZHlUb1NlbmQoKQogICAgIG1faXNSZWFkeVRvU2VuZCA9IHRydWU7CiAKICAg
ICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX3BlbmRpbmdNZXNzYWdlcykKLSAgICAgICAgbV9jb25u
ZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3Nh
Z2UuYnVmZmVyLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2Nv
bm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVz
c2FnZS5idWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNp
emUoKSk7CiAgICAgbV9wZW5kaW5nTWVzc2FnZXMuY2xlYXIoKTsKIAogICAgIGlmIChtX2lzUGVu
ZGluZ0Nsb3NlKQpAQCAtOTksNyArOTksNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlcjo6c2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50LAogYm9v
bCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJp
bmcmIHRleHQpCiB7CiAgICAgaWYgKCFtX2lzUmVhZHlUb1NlbmQpIHsKLSAgICAgICAgbV9wZW5k
aW5nTWVzc2FnZXMuYXBwZW5kKE1lc3NhZ2UgeyBmYWxzZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
dGV4dC5kYXRhKCksIHRleHQubGVuZ3RoKCkpIH0pOworICAgICAgICBtX3BlbmRpbmdNZXNzYWdl
cy5hcHBlbmQoTWVzc2FnZSB7IGZhbHNlLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
dGV4dC5kYXRhKCksIHRleHQubGVuZ3RoKCkpIH0pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIGZhbHNl
LCB0ZXh0LmRhdGFBc1VJbnQ4UHRyKCksIHRleHQubGVuZ3RoKCkpOwpAQCAtMTA5LDcgKzEwOSw3
IEBAIGJvb2wgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpzZW5kU3RyaW5nRGF0YShjb25z
dCBDU3RyaW5nJiB0ZXh0KQogYm9vbCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnNlbmRS
YXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIGlmICghbV9p
c1JlYWR5VG9TZW5kKSB7Ci0gICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChNZXNzYWdl
IHsgdHJ1ZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSkgfSk7CisgICAgICAgIG1f
cGVuZGluZ01lc3NhZ2VzLmFwcGVuZChNZXNzYWdlIHsgdHJ1ZSwgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpIH0pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIHRydWUsIGRh
dGEsIHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKaW5kZXggZjU4MjdkZjkz
Nzk0OTNkMjgxMjcwMTc3Y2NmYmNhMDU1MTUzMjMxZi4uNzM5NDJhODM1OTMxYTlkMjg0YzZhNDUx
YmI4ZGJmYjU3NjVjYWRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCkBAIC0z
OSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJUQ0RhdGFDaGFubmVsSGFu
ZGxlckNsaWVudDsKIGNsYXNzIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb247
CiBjbGFzcyBSVENFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlciBmaW5hbCA6
IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
QEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0cnVjdCBNZXNzYWdlIHsKICAgICAg
ICAgYm9vbCBpc1JhdyB7IGZhbHNlIH07Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKKyAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB9Owog
ICAgIFZlY3RvcjxNZXNzYWdlPiBtX3BlbmRpbmdNZXNzYWdlczsKICAgICBib29sIG1faXNQZW5k
aW5nQ2xvc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwCmluZGV4IDgzNDIwNzBj
YWNiZmMyNDM2OWVjYTMxMWYxZDM4NjQ4NGM5YmEyMjkuLjhhYmRkMGQzNWVmYjNmOWUxMmYyZTA1
ZjY0ODFiN2QyMDE3MzViNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAKQEAgLTE5Miw3ICsx
OTIsNyBAQCB2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6d2lsbENsZWFyQmFja2VuZChSVENS
dHBUcmFuc2Zvcm1CYWNrZW5kJiBiYWNrZW5kKQogc3RhdGljIHZvaWQgdHJhbnNmb3JtRnJhbWUo
U3Bhbjxjb25zdCB1aW50OF90PiBkYXRhLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
LCBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciYgdHJhbnNmb3JtZXIsIFNpbXBsZVJlYWRhYmxlU3Ry
ZWFtU291cmNlJiBzb3VyY2UsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGlkZW50
aWZpZXIsIGNvbnN0IFdlYWtQdHI8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtPiYgd2Vha1RyYW5zZm9y
bSkKIHsKICAgICBhdXRvIHJlc3VsdCA9IHByb2Nlc3NGcmFtZShkYXRhLCB0cmFuc2Zvcm1lciwg
aWRlbnRpZmllciwgd2Vha1RyYW5zZm9ybSk7Ci0gICAgYXV0byBidWZmZXIgPSByZXN1bHQgPyBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpyZXN1bHQpKSA6IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgYXV0byBidWZmZXIgPSByZXN1bHQgPyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZSgqcmVzdWx0KSkgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKICAgICBzb3VyY2UuZW5xdWV1ZSh0b0pTKCZnbG9iYWxPYmplY3QsICZnbG9iYWxPYmpl
Y3QsIGJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKS5nZXQoKSkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAppbmRleCAzZTEx
MDU0MDAzNTNkZTU2MGYyNDkzOGE5YjIwOGVmMzZmNjgwM2M0Li44MjNiODgzNmNmM2FlODY2OTlj
ZjVjODhkNGIzMmQxYTUwYzg2MjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTk3LDggKzk3LDggQEAgdm9pZCBMaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQm
IGNsaWVudCwKICAgICBtX2NvbnRleHRJZGVudGlmaWVyID0gY29udGV4dElkZW50aWZpZXI7CiAK
ICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2FnZXMpIHsKLSAgICAgICAg
c3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRhKSB7Ci0gICAgICAg
ICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OworICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBbJl0oUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiBkYXRhKSB7CisgICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogICAgICAgICB9LCBbJl0o
U3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVN0cmluZ0RhdGEo
dGV4dCk7CiAgICAgICAgIH0sIFsmXShTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZSkgewpAQCAtMTc2
LDcgKzE3Niw3IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpPbk1lc3NhZ2Uo
Y29uc3Qgd2VicnRjOjpEYXRhQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKCFtX2hhc0NsaWVudCkg
ewogICAgICAgICBhdXRvKiBkYXRhID0gYnVmZmVyLmRhdGEuZGF0YTx1aW50OF90PigpOwogICAg
ICAgICBpZiAoYnVmZmVyLmJpbmFyeSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWRNZXNzYWdlcy5h
cHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgYnVmZmVyLnNpemUoKSkpOworICAgICAg
ICAgICAgbV9idWZmZXJlZE1lc3NhZ2VzLmFwcGVuZChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSwgYnVmZmVyLnNpemUoKSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBt
X2J1ZmZlcmVkTWVzc2FnZXMuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoZGF0YSwgYnVmZmVyLnNp
emUoKSkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlci5oCmluZGV4IDQxZjk1MjgyMWU2MjAwOTNmOGVlZmUzMmM1ZWQ0YWUw
ZjVlNTQxOTcuLjExYmQ0NWRlOTE1NTc3OWZmYzllZmIwM2U5NTUyOGYwNWU2NGQ3NDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC04Miw3
ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIFJUQ0RhdGFDaGFubmVsU3RhdGUgc3RhdGU7CiAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8d2VicnRjOjpSVENFcnJvcj4gZXJyb3I7CiAgICAgfTsKLSAg
ICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PFN0YXRlQ2hhbmdlLCBTdHJpbmcsIFJlZjxT
aGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PFN0YXRlQ2hh
bmdlLCBTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgdXNpbmcgUGVu
ZGluZ01lc3NhZ2VzID0gVmVjdG9yPE1lc3NhZ2U+OwogICAgIHZvaWQgc3RvcmVNZXNzYWdlKFBl
bmRpbmdNZXNzYWdlcyYsIGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYpOwogICAgIHZvaWQgcHJv
Y2Vzc01lc3NhZ2UoY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAK
aW5kZXggMzA5YzAyNjQzZjVhN2FlOWZlYzA4YTE0ZWIyMTIyNDA5YjFmODllMC4uNjNmMWMzY2Jl
MWVhODFjZmJmNDU0NjQ2MzIwY2RmN2ZhY2Y1OWMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAt
MTE2LDcgKzExNiw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0
IFVSTCYgdXJsKQogCiAgICAgbV9zb3VyY2VVUkwgPSB1cmw7CiAKLSAgICBtX2RhdGEgPSBudWxs
cHRyOworICAgIG1fZGF0YS5yZXNldCgpOwogICAgIG1fZGF0YUNvbXBsZXRlID0gZmFsc2U7CiAK
ICAgICBpZiAobV9yZXNvdXJjZSkgewpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgSFRNTE1vZGVs
RWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBtX2RhdGEu
ZW1wdHkoKTsKIAogICAgIG1fcmVzb3VyY2UgPSByZXNvdXJjZS52YWx1ZSgpOwogICAgIG1fcmVz
b3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CkBAIC0xODAsOCArMTgwLDcgQEAgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5k
ZXJTdHlsZSYmIHMKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwot
ICAgIEFTU0VSVChtX2RhdGEpOwotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgp
OworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSFRNTE1v
ZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpAQCAtMTk1LDcgKzE5NCw3IEBAIHZvaWQgSFRNTE1vZGVs
RWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBO
ZXR3b3JrTG9hCiAgICAgfTsKIAogICAgIGlmIChyZXNvdXJjZS5sb2FkRmFpbGVkT3JDYW5jZWxl
ZCgpKSB7Ci0gICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fZGF0YS5yZXNldCgp
OwogCiAgICAgICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7
CiAKQEAgLTIwNCw3ICsyMDMsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH0KIAog
ICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1ZTsKLSAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZSht
X2RhdGEucmVsZWFzZU5vbk51bGwoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3Vy
Y2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS50YWtlKCktPm1h
a2VDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgp
KTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5oCmluZGV4IDA1YTFjZGFhM2UxNDg3N2EwYWU0NjViNjM0OWFhNWJiYjFhZjJj
ODIuLmNlMDA5ZDRlNWVkYzMwOTc0NWUwMjdiMDYzMmJkMWU2ZTg1ODAzYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAKICAgICBVUkwgbV9zb3VyY2VVUkw7
CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgbV9kYXRhOwogICAgIFJlZlB0cjxNb2RlbD4gbV9tb2RlbDsKICAgICBVbmlxdWVSZWY8UmVh
ZHlQcm9taXNlPiBtX3JlYWR5UHJvbWlzZTsKICAgICBib29sIG1fZGF0YUNvbXBsZXRlIHsgZmFs
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9z
Y2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KaW5kZXgg
M2U4MmFjMjIxNjc5NmM5ZWRiNzYwYTE5ZWQ3YWNlMWY0MmNkMzc3Ny4uMTMwM2VjNGQyNTY4YTY2
Zjg3ZDdmZWIyMGJmMmIwMzM5MjMyYzNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0
TW9kZWxMb2FkZXJVU0QubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5T
VVJMPiB3cml0ZVRvVGVtcG9yYXJ5RmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAg
ICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZp
bGUiLCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsKICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6aXNIYW5k
bGVWYWxpZChmaWxlSGFuZGxlKSk7CiAKLSAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1v
ZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5
c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBBU1NF
UlRfVU5VU0VEKGJ5dGVDb3VudCwgYnl0ZUNvdW50ID09IG1vZGVsU291cmNlLmRhdGEoKS0+c2l6
ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaAppbmRl
eCAwYjg5OGY2YWRiNTdlYjI1ZGM0OTM3ZDgxZmY1ZDE0ZDUyOTc2Yzg0Li5kNTE3M2ZiZjhiNDAz
NDFjNWNmOGQ4YTRmNTVlZWFjOGZmODM4YTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCkBAIC0zNSw3ICszNSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQnVmZmVyU291cmNlOwogY2xhc3MgUmVhZGFibGVT
dHJlYW07Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBSZWFkYWJsZVN0cmVhbVNpbmsgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWFkYWJs
ZVN0cmVhbVNpbms+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA1MjUxMGMzMDgxOGYwY2E5MTZhODg0Mzc3ZDIy
NGExYWJhNzk1Yjg1Li44NTE0N2MwOTYxYzk5NzMxNjMxZjBlZGZiOWVmZTc0ZTVjMzZjYWNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3Bw
CkBAIC00NzUsNyArNDc1LDcgQEAgc3RhdGljIEpTQzo6SlNQcm9taXNlKiBoYW5kbGVSZXNwb25z
ZU9uU3RyZWFtaW5nQWN0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICAgICAgLy8g
RklYTUU6IFN1cHBvcnQgRm9ybURhdGEgbG9hZGluZy4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTI0OAogICAgICAgICBjb21waWxlci0+ZmFp
bChnbG9iYWxPYmplY3QsIGNyZWF0ZURPTUV4Y2VwdGlvbigqZ2xvYmFsT2JqZWN0LCBFeGNlcHRp
b24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5vdCBpbXBsZW1lbnRlZCJfcyAgfSkpOwotICAgIH0s
IFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGNvbXBpbGVyLT5hZGRCeXRlcyhi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICBjb21waWxlci0+ZmluYWxp
emUoZ2xvYmFsT2JqZWN0KTsKICAgICB9LCBbJl0oc3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlk
ZXIuaAppbmRleCBjNDUyYzgzZmJkNWNlODk1YmRkMDMxYWNmMTQ2OGY3ODY1MDYyMmQ3Li5iOTE4
ZjMxNDFhZjJmNTIxNjQyNjg5OGZhZWE4NGY0YjAyYjFlMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAg
LTUxLDEzICs1MSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX3NjcmlwdEJ1ZmZlci5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAorICAgICAgICBpZiAo
IW1fY29udGlndW91c0J1ZmZlciAmJiAoIW1fY29udGFpbnNPbmx5QVNDSUkgfHwgKm1fY29udGFp
bnNPbmx5QVNDSUkpKQorICAgICAgICAgICAgbV9jb250aWd1b3VzQnVmZmVyID0gbV9zY3JpcHRC
dWZmZXIuYnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIGlmICghbV9jb250YWlu
c09ubHlBU0NJSSkgewotICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3Rl
cnNBcmVBbGxBU0NJSShtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1
ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkg
PSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2Ny
aXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5z
T25seUFTQ0lJKQotICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6
Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEo
KSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9z
Y3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2Nv
bnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAg
ICAgcmV0dXJuIHsgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CisgICAgICAgICAg
ICByZXR1cm4geyBtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CiAKICAgICAgICAgaWYgKCFt
X2NhY2hlZFNjcmlwdFN0cmluZykgewogICAgICAgICAgICAgbV9jYWNoZWRTY3JpcHRTdHJpbmcg
PSBtX3NjcmlwdEJ1ZmZlci50b1N0cmluZygpOwpAQCAtODEsNiArODMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgbV9zY3JpcHRCdWZmZXIgPSBzY3JpcHRCdWZm
ZXI7CisgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG51bGxwdHI7CiAgICAgfQogCiBwcml2
YXRlOgpAQCAtOTEsNiArOTQsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFNjcmlwdEJ1ZmZl
ciBtX3NjcmlwdEJ1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBtX2NvbnRpZ3VvdXNCdWZmZXI7CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX3NjcmlwdEhh
c2ggeyAwIH07CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9jYWNoZWRTY3JpcHRTdHJpbmc7CiAgICAg
bXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fY29udGFpbnNPbmx5QVNDSUk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4
IDdlNDlhOWU3MzIyNmI2NWNjMjhiZjU5NDgxM2IwZjgzYjI2OWQyMmIuLmVmMzdmMWQwY2E0NjJi
YjliN2M5YjZhNTVkMThlYmI0YzExODFhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNz
IERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzOwogY2xhc3MgSURCVmFsdWU7CiBjbGFzcyBNZXNzYWdl
UG9ydDsKIGNsYXNzIEltYWdlQml0bWFwQmFja2luZzsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBlbnVtIGNsYXNzIFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlOwogCiBlbnVtIGNsYXNzIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgeyBOb25UaHJvd2lu
ZywgVGhyb3dpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCmlu
ZGV4IGNhZGM0YTA1OTRjNWJmNjM3OGNmYTdiMGU4Y2E0NzUyNjU2MGJhZGQuLjRiNDM5OTU0ZjE5
YmE0YjgyMzdjOWU1ZGFlZDQxZTRiYTdmZGEwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3Vy
Y2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAgICAgIEFTU0VSVCghbV9p
bkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgICAgICBTVkdGb250RWxl
bWVudCYgZm9udEVsZW1lbnQgPSBkb3duY2FzdDxTVkdGb250RWxlbWVudD4oKm1fc3ZnRm9udEZh
Y2VFbGVtZW50LT5wYXJlbnROb2RlKCkpOwogICAgICAgICAgICAgICAgIGlmIChhdXRvIG90ZkZv
bnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KGZvbnRFbGVtZW50KSkKLSAgICAgICAgICAgICAgICAg
ICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90
ZkZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZl
ciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90ZkZvbnQudmFsdWUo
KSkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dlbmVyYXRlZE9URkJ1ZmZlcikgewogICAgICAg
ICAgICAgICAgICAgICBtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2dlbmVyYXRlZE9URkJ1ZmZlciwgU3RyaW5nKCkpOwogICAg
ICAgICAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbkRvY3VtZW50
Q3VzdG9tUGxhdGZvcm1EYXRhKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIENTU0ZvbnRGYWNl
U291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgfSBlbHNlIGlmIChtX2lt
bWVkaWF0ZVNvdXJjZSkgewogICAgICAgICAgICAgQVNTRVJUKCFtX2ltbWVkaWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgYm9vbCB3cmFwcGluZzsKLSAgICAgICAgICAg
IGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2Ut
PmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3Vy
Y2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKICAg
ICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IENhY2hlZEZvbnQ6
OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGJ1ZmZlci5nZXQoKSwgU3RyaW5nKCksIHdyYXBwaW5nKTsK
ICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2ltbWVkaWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTb3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVlNWYzNzgyZmJiMjMxMjNiMmRkM2E1
N2ExNzI4Li42YTgyY2YxZTNkYzkxNTk3ODUzMzY1YmQzMWUzNjIzMjc4NmEwODgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3MgQ1NTRm9udFNlbGVjdG9y
OworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3Mg
Rm9udDsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CkBAIC00Miw3ICs0Myw2IEBAIGNsYXNz
IEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0
aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiBjbGFzcyBTVkdGb250RmFjZUVsZW1l
bnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBG
b250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRG
ZWF0dXJlU2V0dGluZ3M7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxD
U1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOyAvLyBGb3IgcmVtb3RlIGZvbnRzLCB0byBv
cmNoZXN0cmF0ZSBsb2FkaW5nLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+
IG1fZm9udFJlcXVlc3Q7IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywgYSBwb2ludGVyIHRvIHRo
ZSByZXNvdXJjZSByZXF1ZXN0LgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0
ZWRPVEZCdWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZ2VuZXJh
dGVkT1RGQnVmZmVyOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gbV9pbW1lZGlh
dGVTb3VyY2U7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1f
aW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5z
ZmVyLmNwcAppbmRleCAxZGVhYzRmNDFjZjQ5ZjFmODgyZGNjZWZkNDhjZjZhOTczMmYzZWQ5Li5j
NDJlYzA1MWZlMTFlYmExNGY4MTMzNTlkOGQxN2EyYzI4MTY2NGQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RGF0YVRyYW5zZmVyLmNwcApAQCAtNDAyLDcgKzQwMiw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkRmls
ZVR5cGVSZWFkZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgICAgIHR5cGVz
LmFkZChGaWxlOjpjb250ZW50VHlwZUZvckZpbGUoZmlsZW5hbWUpKTsKICAgICB9CiAKLSAgICB2
b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmKQorICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQogICAgIHsKICAgICAg
ICAgdHlwZXMuYWRkKHR5cGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRl
eCAxNzI0Y2YwZTUwYmFhNWI5YjI0MTMwNDgxZWU3MjRjYjc4MjA3YWE0Li40NzJiOTI3ZWQ0MzQ3
YmExYjI0ZTg1OGY2NGUwMWE2YmI1N2Y1OWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CkBAIC00MTI1LDcgKzQxMjUsNyBAQCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIEVkaXRvcjo6cHJv
bWlzZWRBdHRhY2htZW50SW5mbyhFbGVtZW50JiBlbGVtZW50KQogICAgICAgICByZXR1cm4geyB9
OwogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoZWxlbWVudCwgYWRk
aXRpb25hbFR5cGVzLCBhZGRpdGlvbmFsRGF0YSk7CiAjZW5kaWYKQEAgLTQxMzMsNyArNDEzMyw3
IEBAIFByb21pc2VkQXR0YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZv
KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuIHsgYXR0YWNobWVudC0+dW5pcXVlSWRlbnRp
ZmllcigpLCBXVEZNb3ZlKGFkZGl0aW9uYWxUeXBlcyksIFdURk1vdmUoYWRkaXRpb25hbERhdGEp
IH07CiB9CiAKLXZvaWQgRWRpdG9yOjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3Ry
aW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBF
ZGl0b3I6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZp
bGVOYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGlmIChh
dXRvKiBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKICAgICAgICAgY2xpZW50LT5yZWdpc3RlckF0
dGFjaG1lbnRJZGVudGlmaWVyKGlkZW50aWZpZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxl
TmFtZSwgV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAwMWZlMGI1
ZTA0NGVmNjNmMjZhNzFiNDcyZWY5OGIxMWMyMjhiOTFjLi4wYzM3OTY2ZDhlMjI4OGM4YjY2YWMx
MGI5NWIyZjU5MjUzZjgxZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU3LDkgKzU3
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKLWNsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNz
IENvbXBvc2l0ZUVkaXRDb21tYW5kOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNs
YXNzIEN1c3RvbVVuZG9TdGVwOworY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgRGVsZXRlQnV0
dG9uQ29udHJvbGxlcjsKIGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3MgRWRpdENvbW1hbmRDb21w
b3NpdGlvbjsKQEAgLTc0LDcgKzc1LDcgQEAgY2xhc3MgS2lsbFJpbmc7CiBjbGFzcyBQYXN0ZWJv
YXJkOwogY2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGE7CiBjbGFzcyBSZW5kZXJMYXllcjsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBG
b250OwogY2xhc3MgU3BlbGxDaGVja1JlcXVlc3Q7CiBjbGFzcyBTcGVsbENoZWNrZXI7CkBAIC01
MzYsNyArNTM3LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3Rl
Ym9hcmQoTm9kZSosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFdFQkNPUkVf
RVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVk
aW5nU3RhbmRhbG9uZUltYWdlcygpIGNvbnN0OwpAQCAtNTYzLDcgKzU2NCw3IEBAIHB1YmxpYzoK
IAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
cHJlZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZmlsZURhdGEpOworICAgIHZv
aWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBmaWxlRGF0YSk7CiAgICAgdm9pZCByZWdpc3RlckF0dGFj
aG1lbnRzKFZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpOwogICAgIHZvaWQgcmVn
aXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0
YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CkBAIC01NzMsNyArNTc0LDcgQEAgcHVi
bGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBwcm9taXNl
ZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lk
IGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0b3I8
U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIG91dERhdGEp
OworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVu
dCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4mIG91dERhdGEpOwogI2VuZGlmCiAjZW5kaWYKIApAQCAtNjE4LDEyICs2MTks
MTIgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBhZGp1c3RlZFNl
bGVjdGlvblJhbmdlKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsKKyAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CiAgICAgU3Ry
aW5nIHNlbGVjdGlvbkluSFRNTEZvcm1hdCgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGlt
YWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYpOwogICAgIHN0YXRp
YyBTdHJpbmcgdXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJMJik7Ci0gICAgc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwot
ICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1
dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAgc3RhdGljIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3Ry
aW5nICopOwogI2VuZGlmCiAgICAgdm9pZCBwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rp
b25TdGFydChGb250QXR0cmlidXRlcyYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCmlu
ZGV4IGYzMDI4MjM1NjkwMDZmNWNmOWRiYjRlZmMzNzNlNjdlZjA1ZjE5YTYuLjM5YzNiMWZhM2Q4
NTZmOGQ4NDljNjkzMzFkODllOTk4ZjdlNzYyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaApAQCAtMzMsMTIgKzMzLDEyIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YSB7CiAg
ICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvV2ViQ29udGVudFJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250
ZW50UmVhZGVyLmgKaW5kZXggMDhhYTEyNDI2NjIwZjc2OTUzYTc5YjM0ZWRlNWY2ZGYwNTI3YjAx
NS4uOTU3YjRmZDRhNTU3ZmM4MWNkMzA2OWVlYWNiODk0ODhhOTQ3YjdjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKQEAgLTcyLDE2ICs3MiwxNiBAQCBwcml2
YXRlOgogICAgIGJvb2wgcmVhZEZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNp
emUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSA9IHsgfSkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+Jikgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKLSAgICBib29sIHJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBT
dHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9
IHsgfSkgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkSW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQ
cmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKICAgICBib29sIHJlYWRVUkwoY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkUGxhaW5U
ZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NP
QSkKLSAgICBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAg
IGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRG
KFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRh
dGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CisgICAg
Ym9vbCByZWFkV2ViQXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Cisg
ICAgYm9vbCByZWFkUlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAg
Ym9vbCByZWFkUlRGKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29s
IHJlYWREYXRhQnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50
YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKICNlbmRpZgogfTsKIApAQCAtOTksMTYgKzk5LDE2
IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWFkRmlsZVBhdGgoY29uc3QgU3RyaW5nJiwgUHJlc2Vu
dGF0aW9uU2l6ZSA9IHsgfSwgY29uc3QgU3RyaW5nJiA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICBib29sIHJlYWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICBib29sIHJlYWRJbWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
Y29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
LSAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVh
ZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWREYXRhQnVmZmVyKFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNp
emUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCByZWFkV2ViQXJj
aGl2ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRG
RChGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRGKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWREYXRhQnVmZmVy
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBQ
cmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlm
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJv
YXJkRmlsZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJv
YXJkRmlsZVJlYWRlci5jcHAKaW5kZXggNTQ5ZWI3ZDJlNGMwNzU0OGU0YThjOWVhMjRlYzIwZTRm
MjFiZmEyNS4uMTE3ZGJhNjhlZGIwYmQ0YjZjMzBlMDk0ODVkOWQwYzBmMjljMzgyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVh
ZGVyLmNwcApAQCAtMzksNyArMzksNyBAQCB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRl
cjo6cmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgZmlsZXMuYXBwZW5k
KEZpbGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBmaWxlbmFtZSkpOwogfQogCi12b2lkIFdlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBX
ZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiB7CiAgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBC
bG9iOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCB0eXBlKSwg
ZmlsZW5hbWUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29y
ZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQ
YXN0ZWJvYXJkRmlsZVJlYWRlci5oCmluZGV4IDVjNTI5ZGQ3YzhlY2MwMDA0OGZjYjRkMTU4MTQ2
MzViMjRkOTBiYjcuLjlkODE2MDVmMTk5Mjk4ZjE5YzBlZDY5OTVmZTNiZDc3ODMwMzRmZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVh
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVS
ZWFkZXIuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVh
ZGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIH5XZWJDb3JlUGFzdGVib2Fy
ZEZpbGVSZWFkZXIoKTsKIAogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZp
bmFsOwotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgcmVhZEJ1
ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRp
b25Db250ZXh0PiBjb250ZXh0OwogICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXggYTg1YjdhYTc1MjZi
MmY3YzUxYTNmNWM0NjdiZWIzNTBlOTkxNGFhYi4uZDBjOTMzMTAwYzY1NWYxZmE4NTI1Mjc4ODE4
NzA0OTljMmY2MWZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNv
Y29hLm1tCkBAIC03MSwxMiArNzEsMTIgQEAgdm9pZCBFZGl0b3I6OnBsYXRmb3JtRm9udEF0dHJp
YnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLAogICAgICAg
ICBhdHRyaWJ1dGVzLmZvbnQgPSAoX19icmlkZ2UgaWQpY3RGb250OwogfQogCi1zdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJp
YnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVk
U3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQogewogICAgIGlmICghYXR0cmlidXRlZFN0cmluZy5s
ZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0
cmlidXRlZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsK
KyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJjaGl2
ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1aXJpbmdT
ZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKIH0KIAogU3RyaW5nIEVkaXRvcjo6c2Vs
ZWN0aW9uSW5IVE1MRm9ybWF0KCkKQEAgLTg3LDcgKzg3LDcgQEAgU3RyaW5nIEVkaXRvcjo6c2Vs
ZWN0aW9uSW5IVE1MRm9ybWF0KCkKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAK
LXZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVt
ZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hh
cmVkQnVmZmVyPj4mIG91dERhdGEpCit2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5k
RGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91dFR5
cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKIHsK
ICAgICBhdXRvIGVsZW1lbnRSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoZWxlbWVudCk7
CiAgICAgY2xpZW50KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRhKGVsZW1lbnRSYW5nZSwgb3V0
VHlwZXMsIG91dERhdGEpOwpAQCAtOTksNyArOTksNyBAQCB2b2lkIEVkaXRvcjo6Z2V0UGFzdGVi
b2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0
cgogICAgICAgICBpZiAoYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCpl
bGVtZW50UmFuZ2UpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBkYXRhID0gYXJjaGl2ZS0+cmF3
RGF0YVJlcHJlc2VudGF0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBvdXRUeXBlcy5hcHBlbmQo
V2ViQXJjaGl2ZVBib2FyZFR5cGUpOwotICAgICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBvdXREYXRh
LmFwcGVuZChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTUxLDEyICsxNTEsMTIgQEAgdm9pZCBF
ZGl0b3I6OndyaXRlU2VsZWN0aW9uKFBhc3RlYm9hcmRXcml0ZXJEYXRhJiBwYXN0ZWJvYXJkV3Jp
dGVyRGF0YSkKICAgICBwYXN0ZWJvYXJkV3JpdGVyRGF0YS5zZXRXZWJDb250ZW50KFdURk1vdmUo
d2ViQ29udGVudCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlv
bkluV2ViQXJjaGl2ZUZvcm1hdCgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRp
dG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKQogewogICAgIGF1dG8gYXJjaGl2ZSA9
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24obV9kb2N1bWVudC5mcmFtZSgp
KTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5n
ZXQoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZl
LT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CiB9CiAKIC8vIEZJWE1FOiBNYWtlcyBu
byBzZW5zZSB0aGF0IHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2ZlciBhbHdheXMgaW5jbHVkZXMg
YWx0IHRleHQsIGJ1dCBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkIGRvZXMgbm90LgpAQCAt
MjAxLDI3ICsyMDEsMjcgQEAgU3RyaW5nIEVkaXRvcjo6dXNlclZpc2libGVTdHJpbmcoY29uc3Qg
VVJMJiB1cmwpCiAgICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRl
ZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6
ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICBOU1VJ
bnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VS
YW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtl
UmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwogICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0
cmluZykKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkZv
cm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICBOU1VJbnRlZ2VyIGxlbmd0
aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0
aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0
aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBkNDhlMTFjOTZiNzgwOGY4ODM1NGIzYjA3NDdlZWIx
ZjFlMzdlM2YzLi4wNzgyNDgzNjJhYTA1NGRjM2FiMDAwMDQ1MTcxODQxOThhNTgwZjc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0xMjcz
LDcgKzEyNzMsNyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVu
dChFbGVtZW50JiBlbGVtZW50LCBOU1VSTCAqdXJsLCBCT09MCiAgICAgICAgIGlmIChhdXRvIHJl
c291cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UodXJsKSkgewogICAgICAgICAgICAgYXV0
byYgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgICAgIGlmICghdXNl
UGxhY2Vob2xkZXIgfHwgbWltZVR5cGUgIT0gInRleHQvaHRtbCIpIHsKLSAgICAgICAgICAgICAg
ICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxh
ckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0p
OworICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIg
YWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICAgICAgW2Zp
bGVXcmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVU
eXBlKHVybCwgbWltZVR5cGUpXTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAg
IG5vdEZvdW5kID0gWUVTOwpAQCAtMjMwMCw3ICsyMzAwLDcgQEAgc3RhdGljIFJldGFpblB0cjxO
U0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExvYWRlciogZGF0YVNvdXJj
ZSwgTlMKIAogICAgIGlmIChkYXRhU291cmNlKSB7CiAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPiByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKFVSTCkpIHsKLSAg
ICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOworICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdy
YXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICBO
U1N0cmluZyAqZmlsZW5hbWUgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFt
ZSgpOwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSB8fCAhW2ZpbGVuYW1lIGxlbmd0aF0pCiAg
ICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShy
ZXNvdXJjZS0+dXJsKCksIHJlc291cmNlLT5taW1lVHlwZSgpKTsKQEAgLTIzMjIsOCArMjMyMiw4
IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9j
dW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBw
ZXI+IGZpbGVXcmFwcGVyRm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewog
ICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCkp
IHsKLSAgICAgICAgaWYgKFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2Ut
PnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdy
YXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGlmIChGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBzaGFyZWRCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKKyAgICAgICAg
ICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxl
V2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldKTsKICAgICB9CiAKICAgICBhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVy
ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQXJjaGl2
ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmluZy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvV2ViQXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmluZy5tbQppbmRl
eCAyMGQ2NTQ4ODA1YzM3OTgxYzY1ZWYyMDY4MTIwMmQ2MTExNTYwZWJiLi5jYjVmZGJiNGI1NDNh
OGMxODI5NTNjZjVkYzVhODE0MjhlZGYzODY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL1dlYkFyY2hpdmVSZXNvdXJjZUZyb21OU0F0dHJpYnV0ZWRTdHJpbmcubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJBcmNoaXZlUmVzb3VyY2VGcm9t
TlNBdHRyaWJ1dGVkU3RyaW5nLm1tCkBAIC01MCw3ICs1MCw3IEBAIC0gKGluc3RhbmNldHlwZSlp
bml0V2l0aERhdGE6KE5TRGF0YSAqKWRhdGEgVVJMOihOU1VSTCAqKVVSTCBNSU1FVHlwZTooTlNT
dHJpbmcKICAgICAgICAgICAgIE1JTUVUeXBlID0gbWltZVR5cGVGcm9tVVJMOwogICAgIH0KIAot
ICAgIHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVh
dGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkpLCBVUkwsIE1JTUVUeXBlLCB0ZXh0RW5jb2Rp
bmdOYW1lLCBmcmFtZU5hbWUsIHsgfSk7CisgICAgcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6
OmNyZWF0ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5
XSkuZ2V0KCkpLCBVUkwsIE1JTUVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCBmcmFtZU5hbWUsIHsg
fSk7CiAgICAgaWYgKCFyZXNvdXJjZSkgewogICAgICAgICBbc2VsZiByZWxlYXNlXTsKICAgICAg
ICAgcmV0dXJuIG5pbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
V2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggNmFhM2NkNTRlODJiOTliMzE5NDI3YmVlMzRj
OGM0NGI2NzllMjI3OS4uNzk1ZTg0OWEyZjk2ZmZkNDY2ZGZjNmEzOWRjNTcxMTdkNmI3NDRiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVh
ZGVyQ29jb2EubW0KQEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgYm9vbCBzdXBwb3J0c0NsaWVu
dFNpZGVBdHRhY2htZW50RGF0YShjb25zdCBGcmFtZSYgZnJhbWUpCiAKICNlbmRpZgogCi1zdGF0
aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50
KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJy
ZWRTaXplKQorc3RhdGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvcklt
YWdlQXR0YWNobWVudChGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkb2N1bWVudCwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBQ
cmVzZW50YXRpb25TaXplIHByZWZlcnJlZFNpemUpCiB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNy
ZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKQEAgLTI4NSw3ICsyODUs
NyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgIHN0cnVjdCBBdHRhY2htZW50SW5zZXJ0
aW9uSW5mbyB7CiAgICAgICAgIFN0cmluZyBmaWxlTmFtZTsKICAgICAgICAgU3RyaW5nIGNvbnRl
bnRUeXBlOwotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICAgICAgUmVmPEVsZW1lbnQ+IG9yaWdpbmFs
RWxlbWVudDsKICAgICB9OwogCkBAIC0zMDksNyArMzA5LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFj
ZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVu
dCYgZnIKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8mIHJlc291cmNlID0g
cmVzb3VyY2VFbnRyeS0+dmFsdWU7Ci0gICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5h
cHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBl
KCksIHJlc291cmNlLT5kYXRhKCkgfSk7CisgICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVU
eXBlKCksIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICB9CiAKICAg
ICBpZiAoIXNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5pc0VtcHR5KCkpCkBAIC0zMzIsNyArMzMy
LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1l
JiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgp
KQogICAgICAgICAgICAgbmFtZSA9ICJtZWRpYSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5z
ZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVU
eXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBpbWFnZSB9KTsKKyAgICAgICAgYXR0YWNo
bWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVl
LT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBp
bWFnZSB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IGRlc2NlbmRhbnRzT2ZU
eXBlPEhUTUxPYmplY3RFbGVtZW50PihmcmFnbWVudCkpIHsKQEAgLTM1MCw3ICszNTAsNyBAQCBz
dGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1l
LCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBuYW1lID0gImZpbGUiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbklu
Zm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCBy
ZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgb2JqZWN0IH0pOworICAgICAgICBhdHRhY2htZW50SW5z
ZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVU
eXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIG9iamVjdCB9
KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGluZm8gOiBhdHRhY2htZW50SW5zZXJ0aW9uSW5m
bykgewpAQCAtNDI4LDcgKzQyOCw3IEBAIHN0cnVjdCBNYXJrdXBBbmRBcmNoaXZlIHsKICAgICBS
ZWY8QXJjaGl2ZT4gYXJjaGl2ZTsKIH07CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFu
ZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFz
SFRNTCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJr
dXBBbmRBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgc3RkOjpm
dW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCiB7CiAg
ICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFVSTCgpLCBidWZmZXIp
OwogICAgIGlmICghYXJjaGl2ZSkKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3RkOjpvcHRp
b25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZm
ZXImIGJ1ZgogICAgIGlmICghY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJp
bmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLT5k
YXRhKCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVs
ZWFzZU5vbk51bGwoKSB9OworICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpm
cm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1h
aW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgp
LCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBzYW5pdGl6
ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9j
dW1lbnQsIE1hcmt1cEFuZEFyY2hpdmUmIG1hcmt1cEFuZEFyY2hpdmUsIE1TT0xpc3RRdWlya3Mg
bXNvTGlzdFF1aXJrcywgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBj
YW5TaG93TUlNRVR5cGVBc0hUTUwpCkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIFN0cmluZyBz
YW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0
aW9uRG9jdW0KICAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwoc3ViZnJh
bWVVUkwpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgTWFya3VwQW5kQXJjaGl2
ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3Vy
Y2UtPmRhdGEoKS5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwK
KyAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJv
bVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKICAgICAgICAgICAgIHN1
YmZyYW1lTWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIHN1YmZyYW1lQXJjaGl2ZS5jb3B5
UmVmKCkgfTsKICAgICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFya3VwV2l0
aEFyY2hpdmUoZnJhbWUsIGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVudCwgTVNP
TGlzdFF1aXJrczo6RGlzYWJsZWQsIGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKQEAgLTQ5Nyw3
ICs0OTcsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgIHJldHVybiBzYW5pdGl6ZWRN
YXJrdXBGb3JGcmFnbWVudEluRG9jdW1lbnQoV1RGTW92ZShmcmFnbWVudCksICpzdGFnaW5nRG9j
dW1lbnQsIG1zb0xpc3RRdWlya3MsIG1hcmt1cEFuZEFyY2hpdmUubWFya3VwKTsKIH0KIAotYm9v
bCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBl
Rm9ySW1hZ2VzKCkgfHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTUzMiw3ICs1MzIsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZl
KFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNv
bnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQor
Ym9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC02MTIsMTIgKzYxMiwxMiBAQCBib29sIFdlYkNvbnRlbnRNYXJr
dXBSZWFkZXI6OnJlYWRIVE1MKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiAhbWFy
a3VwLmlzRW1wdHkoKTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnBy
ZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgfHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1
bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05T
QXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwog
ICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwg
c3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC02MjYsMTEgKzYyNiwxMSBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRl
bnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJD
b250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRl
czpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFn
bWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkp
OwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYzOSwxMiAr
NjM5LDEyIEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6
cmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1l
LnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFs
bG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRy
aWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8g
ZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdl
dCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTMs
MTEgKzY1MywxMSBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1hcmt1cFJl
YWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1
cFJlYWRlcjo6cmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAg
aWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBz
dHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpi
dWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsK
KyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBk
b2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVG
cmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZy
YWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NzYsNyArNjc2LDcgQEAgYm9vbCBX
ZWJDb250ZW50UmVhZGVyOjpyZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6
ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
SW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAg
ICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUu
ZG9jdW1lbnQoKTsKQEAgLTc0Niw3ICs3NDYsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKICAgICByZXR1cm4gYXR0YWNobWVudDsKIH0KIAotc3RhdGljIFJlZjxIVE1MRWxl
bWVudD4gYXR0YWNobWVudEZvckRhdGEoRnJhbWUmIGZyYW1lLCBTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50
YXRpb25TaXplIHByZWZlcnJlZFNpemUpCitzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2ht
ZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRp
b25TaXplIHByZWZlcnJlZFNpemUpCiB7CiAgICAgUmVmIGRvY3VtZW50ID0gKmZyYW1lLmRvY3Vt
ZW50KCk7CiAgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVh
dGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1bWVudCk7CkBAIC04MzMsNyArODMzLDcg
QEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHRpdGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFk
ZXI6OnJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50
YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcihGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCiB7CiAg
ICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKaW5kZXgg
NjA0ODZlNzFhZDU5ZmVjYzcxNWZmMGEwOWIxYzM1NThiN2IzNDJjMi4uZDNlOTgxOWJkNTMxZjg0
ODZhMzE3YWI5ZjllZDgzYTk4ODViZTJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBX
ZWJDb250ZW50UmVhZGVyOjpyZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6
ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
SW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAg
ICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUu
ZG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCAy
ZDE5YjljN2MyMmIzZWJjMjY3YzY3NjEwNmM4OTJmMDliNzc3NTNkLi41ZjhiYzM0NzdjMWNhMjFi
MGM3MjI3MjI3YWFmMmRhNGIxOTJiZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRp
dG9yTWFjLm1tCkBAIC0xNjYsMTUgKzE2NiwxNSBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVG
cm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQog
ICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0cmluZygpKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50
JiBpbWFnZUVsZW1lbnQpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpp
bWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQpCiB7CiAgICAgYXV0
byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGltYWdlRWxlbWVudCk7CiAgICAg
aWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwor
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0
YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0
b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIC8vIEZJ
WE1FOiBUaGUgaW50ZXJmYWNlIHRvIHRoaXMgZnVuY3Rpb24gaXMgYXdrd2FyZC4gV2UnZCBwcm9i
YWJseSBiZSBiZXR0ZXIgb2ZmIHdpdGggdGhyZWUgc2VwYXJhdGUgZnVuY3Rpb25zLiBBcyBvZiB0
aGlzIHdyaXRpbmcsIHRoaXMgaXMgb25seSB1c2VkIGluIFdlYktpdDIgdG8gaW1wbGVtZW50IHRo
ZSBtZXRob2QgLVtXS1ZpZXcgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQ6dHlwZXM6XSwgd2hp
Y2ggaXMgb25seSB1c2VkIHRvIHN1cHBvcnQgT1MgWCBzZXJ2aWNlcy4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Js
b2IuaAppbmRleCA0NWQ5MzNlMTNjYTRkMjI1MWM1ZGVkODQ4YWE5ZTk4NzJjNzY3NDg5Li5iY2E2
Njk2ZWJlNmYwZWRkZGRlZTc5YjczYzNlZTE0NDk2ZDgyZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
aApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBCbG9iTG9hZGVyOwogY2xhc3MgRGVmZXJyZWRQcm9t
aXNlOwogY2xhc3MgUmVhZGFibGVTdHJlYW07CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
dGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEV4Y2VwdGlvbk9yOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAppbmRleCA1NTllYmNjNDhjNWYwOTZhYzE5YmFl
N2Q5ZjcxOGI3MWYyYTM1MzIyLi43MWZjNzhmN2VhOWEzMmFlM2QwZDA1YTNhZjg2OGNmZGZmY2Q0
NDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKQEAg
LTU3LDcgKzU3LDcgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjplbnF1ZXVlKGNvbnN0IEpTQzo6
QXJyYXlCdWZmZXImIGJpbmFyeURhdGEsIHVuc2lnbmVkIGJ5dGUKICAgICAgICAgbV93cml0ZVJh
d0RhdGEoU3BhbiB7IGRhdGEgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoIH0pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIG1fcXVldWUuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiaW5hcnlEYXRhLmRhdGEoKSkgKyBieXRlT2Zmc2V0
LCBieXRlTGVuZ3RoKSk7CisgICAgbV9xdWV1ZS5hcHBlbmQoQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihiaW5hcnlEYXRhLmRhdGEoKSkg
KyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1NlbmRRdWV1ZTo6
ZW5xdWV1ZShXZWJDb3JlOjpCbG9iJiBibG9iKQpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIE5ldHdv
cmtTZW5kUXVldWU6OnByb2Nlc3NNZXNzYWdlcygpCiAgICAgICAgIGJvb2wgc2hvdWxkU3RvcFBy
b2Nlc3NpbmcgPSBmYWxzZTsKICAgICAgICAgc3dpdGNoT24obV9xdWV1ZS5maXJzdCgpLCBbdGhp
c10oY29uc3QgQ1N0cmluZyYgdXRmOCkgewogICAgICAgICAgICAgbV93cml0ZVN0cmluZyh1dGY4
KTsKLSAgICAgICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CisgICAgICAg
IH0sIFt0aGlzXShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKICAgICAgICAg
ICAgIGRhdGEtPmZvckVhY2hTZWdtZW50KG1fd3JpdGVSYXdEYXRhKTsKICAgICAgICAgfSwgW3Ro
aXMsICZzaG91bGRTdG9wUHJvY2Vzc2luZ10oVW5pcXVlUmVmPEJsb2JMb2FkZXI+JiBsb2FkZXIp
IHsKICAgICAgICAgICAgIGF1dG8gZXJyb3JDb2RlID0gbG9hZGVyLT5lcnJvckNvZGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKaW5kZXggNTUxZjcwZjkxNjdi
MmJmY2IyNDRiYjJiMzcwMGJmYmFhZjU0Nzk2Yy4uZDIzY2ZlYmI0NTA4YmMzMDA5MTViYjk5NmQz
ZjE1MDYyY2UzNTA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3Jr
U2VuZFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVl
LmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9iOwog
Y2xhc3MgQmxvYkxvYWRlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIE5ldHdvcmtTZW5kUXVldWUgOiBw
dWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgpAQCAtNjMsNyArNjMs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc01lc3NhZ2VzKCk7CiAKLSAg
ICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PENTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+
LCBVbmlxdWVSZWY8QmxvYkxvYWRlcj4+OworICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnZhcmlh
bnQ8Q1N0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBVbmlxdWVSZWY8QmxvYkxv
YWRlcj4+OwogICAgIERlcXVlPE1lc3NhZ2U+IG1fcXVldWU7CiAKICAgICBXcml0ZVN0cmluZyBt
X3dyaXRlU3RyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3Rv
cnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50
LmNwcAppbmRleCA3NTIzMDE3YmE3Mjk0MDU2M2I3NWY0NjZhNjhlZDFjY2IzZGVlOGJhLi4xMDE2
ZGNmM2MxOTllNTRjYTgxNGMyNjQ1YTlhODU5OGE1YzFkMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtMjc2LDkgKzI3Niw5IEBAIHZvaWQg
RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBT
dHJpbmcmIGlucHV0TGluZSkKICAgICBhcHBlbmRFbnRyeShmaWxlbmFtZSwgcHJvY2Vzc0ZpbGVz
aXplU3RyaW5nKHJlc3VsdC5maWxlU2l6ZSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50
cnkpLCBwcm9jZXNzRmlsZURhdGVTdHJpbmcocmVzdWx0Lm1vZGlmaWVkVGltZSksIHJlc3VsdC50
eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KTsKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0
dGluZ3MpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVh
dGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0
aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRw
RGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIExPRyhG
VFAsICJMb2FkZWQgRlRQRGlyZWN0b3J5VGVtcGxhdGUgb2YgbGVuZ3RoICV6dVxuIiwgYnVmZmVy
LT5zaXplKCkpOwogICAgIHJldHVybiBidWZmZXI7CkBAIC0yODYsNyArMjg2LDcgQEAgc3RhdGlj
IGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShj
b25zdCBTZXR0aW5ncyYgc2UKICAgICAKIGJvb2wgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6
OmxvYWREb2N1bWVudFRlbXBsYXRlKCkKIHsKLSAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1w
bGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCkt
PnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1
bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2Yg
c3RvcmluZyB0aGUgZGF0YSwgaXQgd291bGQgYmUgbW9yZSBlZmZpY2llbnQgaWYgd2UgY291bGQg
cGFyc2UgdGhlIHRlbXBsYXRlIGRhdGEgaW50byB0aGUKICAgICAvLyB0ZW1wbGF0ZSBEb2N1bWVu
dCBvbmNlLCBzdG9yZSB0aGF0IGRvY3VtZW50LCB0aGVuICJjb3B5IiBpdCB3aGVuZXZlciB3ZSBn
ZXQgYW4gRlRQIGRpcmVjdG9yeSBsaXN0aW5nLgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCmluZGV4IDU2YTA2ZmNhZjI3M2QyNWRjNGM3NWRj
ZTU2OWFhYzhmMWFhNTk1MjcuLmQyYjg3NDFhMDQ0MzQyYzdmZmQ5ZThhNTMzY2M4YTEyMGUyOWJh
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAK
QEAgLTIyNyw3ICsyMjcsNyBAQCBzdGF0aWMgYm9vbCBtaW1lVHlwZUlzU3VpdGFibGVGb3JJbmxp
bmVJbWFnZUF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICByZXR1cm4gTUlN
RVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlKG1pbWVUeXBlKSB8fCBNSU1F
VHlwZVJlZ2lzdHJ5Ojppc1BERk1JTUVUeXBlKG1pbWVUeXBlKTsKIH0KIAotdm9pZCBIVE1MQXR0
YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEhUTUxBdHRh
Y2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAg
ICAgYXV0byogaG9zdEVsZW1lbnQgPSBzaGFkb3dIb3N0KCk7CiAgICAgaWYgKCFpczxIVE1MSW1h
Z2VFbGVtZW50Pihob3N0RWxlbWVudCkgfHwgIWJ1ZmZlci0+c2l6ZSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKaW5kZXggNTczZWMyZWFlMWNkYzA2MDlm
MjYxYzM4NDAwYmIwMmM0ODBmN2JkZC4uNjYxZGVjOTM3NmQ4YTlkNmQ0NzE3ZmQwYjRjZTdmODJm
ZjAzZjc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5o
CkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEZpbGU7CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50Owog
Y2xhc3MgUmVuZGVyQXR0YWNobWVudDsKIGNsYXNzIFNoYXJlYWJsZUJpdG1hcDsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEhUTUxB
dHRhY2htZW50RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChIVE1MQXR0YWNobWVudEVsZW1lbnQpOwpAQCAtNTcsNyArNTcsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllc0Zyb21FbGVtZW50
KGNvbnN0IEVsZW1lbnQmKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRl
QXR0cmlidXRlcyhzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIG5ld0ZpbGVTaXplLCBjb25zdCBT
dHJpbmcmIG5ld0NvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5ld0ZpbGVuYW1lKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB1cGRhdGVUaHVtYm5haWwoY29uc3QgUmVmUHRyPEltYWdlPiYgdGh1
bWJuYWlsKTsKIAogICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0Fu
Y2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDUxNzFiOWNkYzc4OTMxNzFlMjFlNWY0
YmY1NTAxN2VmOTQ0YWM3OTUuLjFhNTZiYzAzNTljY2UxZjUwZGNkZGEwNjUyMjJhMDEwOTVhNjkw
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMjkzOCw3
ICsyOTM4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjZG1DbGllbnRBdHRlbXB0VG9SZXN1
bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkKICAgICBhdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVj
ZXNzYXJ5KCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2RtQ2xpZW50VW5yZXF1ZXN0
ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2Rt
Q2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCiB7
CiAgICAgbWVkaWFQbGF5ZXJJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YVR5
cGUsIGluaXREYXRhLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggNjk1NjY5NDk2MzEwZWY5MTA4Yjk1NmZkYTQ4MjE0
MzAxNDk3MGVjYi4uNmMzYjY5M2I3YjEwZWRhMzBlNTFkNGM2NjMxYmUzZmI1MGNiZjgwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTcyMCw3ICs3MjAsNyBAQCBw
cml2YXRlOgogCiAgICAgLy8gQ0RNQ2xpZW50CiAgICAgdm9pZCBjZG1DbGllbnRBdHRlbXB0VG9S
ZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkgZmluYWw7Ci0gICAgdm9pZCBjZG1DbGllbnRVbnJl
cXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFs
aXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJikgZmluYWw7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01F
RElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFw
LmNwcAppbmRleCBiODg2Yjc3MDRhMTRkZjU2NzdhNGQxNmJjYmNlNTg5ZDBhNTIzZWViLi40ZWUz
YWUzOTQyYzFkNDg5Zjk1NWQ5YzhmZGVjZGE3OTcyMDdiMzBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlQml0bWFwLmNwcApAQCAtNzQ2LDcgKzc0Niw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0
ZUZyb21CdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0
YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgYXV0byBzaGFyZWRCdWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBh
dXRvIG9ic2VydmVyID0gSW1hZ2VCaXRtYXBJbWFnZU9ic2VydmVyOjpjcmVhdGUobWltZVR5cGUs
IGV4cGVjdGVkQ29udGVudExlbmd0aCwgc291cmNlVVJMKTsKICAgICBhdXRvIGltYWdlID0gQml0
bWFwSW1hZ2U6OmNyZWF0ZShvYnNlcnZlci5wdHIoKSk7CiAgICAgYXV0byByZXN1bHQgPSBpbWFn
ZS0+c2V0RGF0YShzaGFyZWRCdWZmZXIuY29weVJlZigpLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDQ0MmQwOTQ2YmUyNTBkY2NmNTkyN2JhYTkyNzkzYTcw
ZWU5MTkzM2UuLjAwZDhmMjM5ZDcxMjdjNjFjYWUxYjU4ZDljNGEzMDNhOWIzYzkwNTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQg
SW1hZ2VEb2N1bWVudDo6dXBkYXRlRHVyaW5nUGFyc2luZygpCiAgICAgaWYgKCFtX2ltYWdlRWxl
bWVudCkKICAgICAgICAgY3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKTsKIAotICAgIGlmIChSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpKQor
ICAgIGlmIChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbG9hZGVyKCkt
Pm1haW5SZXNvdXJjZURhdGEoKSkKICAgICAgICAgbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdl
KCktPnVwZGF0ZUJ1ZmZlcigqYnVmZmVyKTsKIAogICAgIGltYWdlVXBkYXRlZCgpOwpAQCAtMTUx
LDcgKzE1MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKIHsKICAg
ICBpZiAoIXBhcnNlcigpLT5pc1N0b3BwZWQoKSAmJiBtX2ltYWdlRWxlbWVudCkgewogICAgICAg
ICBDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UgPSAqbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdl
KCk7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBsb2FkZXIoKS0+bWFpblJl
c291cmNlRGF0YSgpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0
YSA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAKICAgICAgICAgLy8gSWYgdGhpcyBp
cyBhIG11bHRpcGFydCBpbWFnZSwgbWFrZSBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgcGFydCwgc2lu
Y2UgdGhlIHJlc291cmNlIGRhdGEKICAgICAgICAgLy8gd2lsbCBiZSBvdmVyd3JpdHRlbiBieSB0
aGUgbmV4dCBwYXJ0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBhN2NhNzE2MmQ3OTFlZDdmYmE4Y2M5MWMyMWEy
Y2YzYWY2ZTY5YTdlLi4xODc5M2ZmMDY2MzM4ZmI2MGEzNGRlYzkwOWJjMmRkZDI4YmVhZmI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcApAQCAtODUwLDcgKzg1MCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtCiAg
ICAgICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdURk1vdmUoaGFu
ZGxlcikpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVz
cG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBo
YW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29ya0FnZW50LT5pbnRlcmNl
cHRSZXNwb25zZShyZXNwb25zZSwgaWRlbnRpZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgK
aW5kZXggOGU2NWM0ZWIxMDIzMzUyMWY0OGM3ZjRiMTIwYWQyYzg5MDlhMDdiYS4uZDI5NTc4MTBk
ODM4MmM5MzUxZDVhOTNmMTQ0YWVkMTQ5M2JjYzY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtOTMsNyArOTMsNyBA
QCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU2hhZG93Um9vdDsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBUaW1lckJhc2U7CiBj
bGFzcyBXZWJLaXROYW1lZEZsb3c7CiBjbGFzcyBXZWJTb2NrZXRDaGFubmVsOwpAQCAtMjM2LDcg
KzIzNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0
KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wg
c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYs
IEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwotICAgIHN0YXRpYyB2
b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICBzdGF0
aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+
JiYpOwogCiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShQYWdlJiwgc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKICAgICBzdGF0aWMgdm9pZCBh
ZGRNZXNzYWdlVG9Db25zb2xlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgc3RkOjp1bmlx
dWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKQEAgLTQ0MSw3ICs0NDEsNyBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNw
b25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZv
aWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4pOwogCkBAIC0xMjg5LDcgKzEyODksNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgRgog
ICAgICAgICBpbnRlcmNlcHRSZXF1ZXN0SW1wbCgqYWdlbnRzLCBsb2FkZXIsIFdURk1vdmUoaGFu
ZGxlcikpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVy
Y2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVy
Pik+JiYgaGFuZGxlcikKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50
ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UpKTsKICAg
ICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50cyhmcmFtZSkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2Vi
S2l0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25XZWJLaXQuY3BwCmluZGV4IDYxZTRiYzNiYTAxOWVlMjVlNWM4YmMyMjFkZmY2MDc3ZWRkYjg2
M2QuLmYwNjQwM2E2MjM0YjQyYjZhZDJhODBiMDE5NGE1OTZkODlmNmU2YmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25XZWJLaXQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImIGxvCiAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KGxvYWRlciwgV1RG
TW92ZShoYW5kbGVyKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0
OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9u
c2UsIGlkZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCmlu
ZGV4IGY3NjExNGNlOThmNDJhN2ZmOTA2YTQ4ZDA0MjBiOTYzMDVkMzY5MTQuLjA3YjQyMWI1OWMx
NTU1ZTFhMjkxZTE4ZWJiMjYyMjEyMmYxNjU4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKQEAgLTM2
LDIwICszNiwyMCBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdCB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0
IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVy
Y2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBG
cmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29u
c3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMg
Ym9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25z
ZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0
YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0
aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwotICAgIHN0YXRpYyB2b2lkIGlu
dGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0
YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4pPiYmKTsKIH07CiAKIGlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTc2LDcgKzc2LDcgQEAgaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNl
TG9hZGVyJiBsb2EKICAgICBpbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwobG9hZGVyLCBXVEZNb3Zl
KGhhbmRsZXIpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2Vi
S2l0OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
KEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2Uo
ZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAgaW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbCgqZnJhbWUs
IHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDY3N2M1Yjgx
MmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmYzMmY2NjBiOTE3M2JhZThkNWNkOWEx
MzBlYWU1OGI5N2Q1ZWNlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05l
dHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtNDcsNiArNDcsNyBAQCBzdGF0aWMgY29uc3Qgc2l6
ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplID0gNTAgKiAxMDAwICogMTAwMDsg
Ly8gNTBNQgogTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRh
KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxvYWRlcklkKQogICAgIDog
bV9yZXF1ZXN0SWQocmVxdWVzdElkKQogICAgICwgbV9sb2FkZXJJZChsb2FkZXJJZCkKKyAgICAs
IG1fZGF0YUJ1ZmZlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiB9
CiAKQEAgLTY0LDcgKzY1LDcgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6cmVtb3ZlQ29udGVudCgpCiAgICAgaWYgKGhhc0RhdGEoKSkgewogICAgICAgICBB
U1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAgICAgICAgIHJlc3VsdCA9IG1fZGF0YUJ1ZmZlci0+c2l6
ZSgpOwotICAgICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOworICAgICAgICBtX2RhdGFCdWZm
ZXItPnJlc2V0KCk7CiAgICAgfQogCiAgICAgaWYgKGhhc0NvbnRlbnQoKSkgewpAQCAtODEsMzYg
KzgyLDM3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmV2
aWN0Q29udGVudCgpCiAgICAgcmV0dXJuIHJlbW92ZUNvbnRlbnQoKTsKIH0KIAorYm9vbCBOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gIW1fZGF0YUJ1ZmZlci0+aXNOdWxsKCk7Cit9CisKIHNpemVfdCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAwOworICAgIHJldHVybiBtX2Rh
dGFCdWZmZXItPnNpemUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3Vy
Y2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
KQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKLSAgICBpZiAoIW1fZGF0YUJ1ZmZlcikK
LSAgICAgICAgbV9kYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YUxl
bmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBtX2RhdGFCdWZmZXItPmFwcGVuZChkYXRhLCBkYXRh
TGVuZ3RoKTsKKyAgICBtX2RhdGFCdWZmZXItPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0K
IAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0
YVRvQ29udGVudCgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogCi0gICAgc2l6ZV90
IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1f
ZGF0YUJ1ZmZlci0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgIHNpemVfdCBkYXRhTGVu
Z3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1f
YmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAg
bV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgZGF0
YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0gdHJ1ZTsK
LSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcobV9kYXRhQnVmZmVyLT5k
YXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0
cmluZyhidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCi0gICAgbV9kYXRhQnVm
ZmVyID0gbnVsbHB0cjsKLQogICAgIHJldHVybiBtX2NvbnRlbnQuc2l6ZUluQnl0ZXMoKSAtIGRh
dGFMZW5ndGg7CiB9CiAKQEAgLTI2Nyw3ICsyNjksNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjphZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVz
bwogICAgIHJlc291cmNlRGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2UoY2FjaGVkUmVzb3VyY2UpOwog
fQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6
OmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nTmFtZSkKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IHJlc291cmNlRGF0
YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogICAgIGlmICghcmVzb3VyY2VEYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBlZmEw
MDA1M2FlMTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3Li5lZTM5NDU3Zjc2NzJlYWNhYWM5
MGE1YjZiYzg4MTEwOGNiZGE4YTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkluc3Bl
Y3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XYWxs
VGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00MCw3ICs0MSw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVy
QnVpbGRlcjsKIAogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwpAQCAtODgsOCArOTAsOCBAQCBwdWJsaWM6CiAgICAgICAgIFJlZlB0cjxU
ZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVyLmNv
cHlSZWYoKTsgfQogICAgICAgICB2b2lkIHNldERlY29kZXIoUmVmUHRyPFRleHRSZXNvdXJjZURl
Y29kZXI+JiYgZGVjb2RlcikgeyBtX2RlY29kZXIgPSBXVEZNb3ZlKGRlY29kZXIpOyB9CiAKLSAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIuY29weVJlZigpOyB9Ci0gICAgICAgIHZvaWQgc2V0QnVmZmVyKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKSB7IG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOyB9CisgICAgICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlci5jb3B5UmVmKCk7IH0KKyAgICAgICAgdm9pZCBzZXRCdWZmZXIoUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOyB9
CiAKICAgICAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZp
Y2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsgfQogICAgICAgICB2
b2lkIHNldENlcnRpZmljYXRlSW5mbyhjb25zdCBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5m
bz4mIGNlcnRpZmljYXRlSW5mbykgeyBtX2NlcnRpZmljYXRlSW5mbyA9IGNlcnRpZmljYXRlSW5m
bzsgfQpAQCAtMTAzLDEwICsxMDUsMTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGltZSByZXNw
b25zZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7IH0KICAg
ICAgICAgdm9pZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1fcmVzcG9u
c2VUaW1lc3RhbXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERh
dGEoKSBjb25zdCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBi
b29sIGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25zdDsK
ICAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRh
TGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpAQCAtMTE5
LDggKzEyMSw4IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsK
ICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VE
ZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YUJ1
ZmZlcjsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgICAgIFVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CisgICAgICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICAgICAgc3RkOjpvcHRpb25h
bDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJbmZvOwogICAgICAgICBDYWNoZWRSZXNv
dXJjZSogbV9jYWNoZWRSZXNvdXJjZSB7IG51bGxwdHIgfTsKICAgICAgICAgSW5zcGVjdG9yUGFn
ZUFnZW50OjpSZXNvdXJjZVR5cGUgbV90eXBlIHsgSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJl
c291cmNlIH07CkBAIC0xNDQsNyArMTQ2LDcgQEAgcHVibGljOgogICAgIFJlc291cmNlRGF0YSBj
b25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICB2b2lkIG1heWJlRGVjb2Rl
RGF0YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgdm9pZCBhZGRDYWNo
ZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzb3VyY2UqKTsKLSAg
ICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwor
ICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQs
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUpOwogICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0YShjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCk7CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRhRm9yVVJMKGNvbnN0IFN0cmlu
ZyYgdXJsKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4NGEyODg0MmZiYzU2Mjg5Mzc2
MWQ3MWU0Yzc0Mjc0ZWJiMTguLjM5ZjkzZDI4YWIyOWVlNDBkNTM1ZjQ0YmFmOWI5ZDNkODcyY2My
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQgSW5zcGVj
dG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIs
IEZ1bmN0aW9uPHZvCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RJbnRlcmNlcHRl
ZChyZXF1ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci5yZXF1ZXN0
KCkpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lkIEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1fZW5hYmxlZCk7CiAgICAgQVNT
RVJUKG1faW50ZXJjZXB0aW9uRW5hYmxlZCk7CkBAIC0xMjQzLDE2ICsxMjQzLDE2IEBAIFByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0
V2l0aFJlc3BvbnNlKGNvbnN0CiAgICAgICAgIG92ZXJyaWRlUmVzcG9uc2Uuc2V0SFRUUEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgb3ZlcnJpZGVSZXNwb25zZS5taW1l
VHlwZSgpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGE7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG92ZXJyaWRlRGF0YTsKICAgICBp
ZiAoYmFzZTY0RW5jb2RlZCkgewogICAgICAgICBhdXRvIGJ1ZmZlciA9IGJhc2U2NERlY29kZShj
b250ZW50KTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoIlVuYWJsZSB0byBkZWNvZGUgZ2l2ZW4gY29udGVudCJfcyk7CiAKLSAgICAgICAg
b3ZlcnJpZGVEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqYnVmZmVyKSk7Cisg
ICAgICAgIG92ZXJyaWRlRGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKCpidWZmZXIpKTsKICAgICB9IGVsc2UgewogICAgICAgICBhdXRvIHV0ZjhDb250ZW50ID0g
Y29udGVudC51dGY4KCk7Ci0gICAgICAgIG92ZXJyaWRlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHV0ZjhDb250ZW50LmRhdGEoKSwgdXRmOENvbnRlbnQubGVuZ3RoKCkpOworICAgICAgICBv
dmVycmlkZURhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodXRmOENvbnRlbnQu
ZGF0YSgpLCB1dGY4Q29udGVudC5sZW5ndGgoKSk7CiAgICAgfQogCiAgICAgcGVuZGluZ0ludGVy
Y2VwdFJlc3BvbnNlLT5yZXNwb25kKG92ZXJyaWRlUmVzcG9uc2UsIG92ZXJyaWRlRGF0YSk7CkBA
IC0xMjcxLDE2ICsxMjcxLDE2IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zCiAgICAgaWYgKGxv
YWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKCJVbmFibGUgdG8gZnVsZmlsbCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nl
c3NlZCJfcyk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CiAg
ICAgICAgIGF1dG8gYnVmZmVyID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQpOwogICAgICAgICBpZiAo
IWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiVW5hYmxlIHRvIGRl
Y29kZSBnaXZlbiBjb250ZW50Il9zKTsKIAotICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZSgqYnVmZmVyKSk7CisgICAgICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqYnVmZmVyKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
YXV0byB1dGY4Q29udGVudCA9IGNvbnRlbnQudXRmOCgpOwotICAgICAgICBkYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUodXRmOENvbnRlbnQuZGF0YSgpLCB1dGY4Q29udGVudC5sZW5ndGgoKSk7
CisgICAgICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodXRmOENvbnRl
bnQuZGF0YSgpLCB1dGY4Q29udGVudC5sZW5ndGgoKSk7CiAgICAgfQogCiAgICAgLy8gTWltaWMg
ZGF0YSBVUkwgbG9hZCBiZWhhdmlvciAtIHJlcG9ydCBkaWRSZWNlaXZlUmVzcG9uc2UgJiBkaWRG
aW5pc2hMb2FkaW5nLgpAQCAtMTQwNywxMiArMTQwNywxMiBAQCBib29sIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwg
U3RyaQogICAgICAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4
dChyZXNvdXJjZS5taW1lVHlwZSgpKSkgewogICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNvdXJjZS5taW1lVHlwZSgp
LCByZXNvdXJjZS5yZXNwb25zZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7CiAgICAgICAgICAgICAq
YmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRl
Y29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAg
ICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CiAKICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICAqcmVz
dWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKKyAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IDhmNmZiY2MyOTNhZWJmOGI5ZDVjOTQ1ZDI4
MjlhMTUyN2I3NGJjN2YuLjZiY2Q4N2RkY2Q4YjA0NDEzMDhkMWQwMWVjYTZiMGU2ZGExNDEzZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuaApAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICBib29sIHdp
bGxJbnRlcmNlcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgYm9vbCBzaG91bGRJbnRl
cmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIGJvb2wgc2hvdWxkSW50
ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgaW50ZXJj
ZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPik+JiYpOwogICAgIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRl
ciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwogCiAgICAgdm9p
ZCBzZWFyY2hPdGhlclJlcXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24m
LCBSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1
bHQ+PiYpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSk7CiAgICAgICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAgUGVuZGluZ0ludGVyY2VwdFJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIG9yaWdpbmFsUmVzcG9uc2UsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIG9yaWdpbmFsUmVzcG9uc2UsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgICAgICA6IG1fb3JpZ2luYWxS
ZXNwb25zZShvcmlnaW5hbFJlc3BvbnNlKQogICAgICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICB7IH0KQEAgLTIwMiw3ICsy
MDIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmVzcG9uZChtX29yaWdpbmFsUmVzcG9uc2Us
IG51bGxwdHIpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCByZXNwb25kKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhKQorICAgICAg
ICB2b2lkIHJlc3BvbmQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NF
UlQoIW1fcmVzcG9uZGVkKTsKICAgICAgICAgICAgIGlmIChtX3Jlc3BvbmRlZCkKQEAgLTIxNSw3
ICsyMTUsNyBAQCBwcml2YXRlOgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVzb3VyY2VSZXNw
b25zZSBtX29yaWdpbmFsUmVzcG9uc2U7Ci0gICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4gbV9jb21wbGV0
aW9uSGFuZGxlcjsKKyAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4gbV9jb21wbGV0aW9u
SGFuZGxlcjsKICAgICAgICAgYm9vbCBtX3Jlc3BvbmRlZCB7IGZhbHNlIH07CiAgICAgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwCmluZGV4IDNkYWZlNjQzN2RmMTIxMDQwNWZlZmJmMzc1Nzg1ZmVjZDVlYWM0NzIu
LjFiNjQ2YWEyMTczYWI1NGEzZjFhYmRjYjUwMjA0YWRlOThjMDczYTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAK
QEAgLTEwMCwxNSArMTAwLDE1IEBAIHN0YXRpYyBib29sIGRlY29kZUJ1ZmZlcihjb25zdCB1aW50
OF90KiBidWZmZXIsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4CiAKIGJvb2wgSW5z
cGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3
aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291
cmNlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBm
cmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogICAg
IGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluc3BlY3Rv
clBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBm
cmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsK
KyAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5l
bmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCi1ib29sIEluc3BlY3Rv
clBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNv
ZGUsIFN0cmluZyogcmVzdWx0KQorYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZl
ckNvbnRlbnQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiBy
ZXN1bHQpCiB7Ci0gICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgp
IDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1l
LCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBkYXRhQ29udGVudChidWZm
ZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/
IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwg
cmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5n
TmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKQEAgLTE1Niw3ICsx
NTYsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KFByb3RvY29s
OjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEZyYQogICAgIGlmICghbG9hZGVyKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxz
ZTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwsIGxvYWRlci0+
dXJsKCkpKSB7CiAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCBi
NTFhZGRiMWJkOGYyY2NlNjk1NjA3OTljZDFkOTUyZDJkZTQyODM4Li4zZDVlNTY2ZGJlMGM1ZWMx
MWQ5ZThkZjY3ZmNmMGE3MDk4OGEyZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xh
c3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsKIGNsYXNzIFBhZ2U7
CiBjbGFzcyBSZW5kZXJPYmplY3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQgZmluYWwgOiBwdWJs
aWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpQYWdlQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JQYWdlQWdl
bnQpOwpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIE90aGVyUmVzb3VyY2UsCiAg
ICAgfTsKIAotICAgIHN0YXRpYyBib29sIHNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNl
NjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKKyAgICBzdGF0aWMgYm9vbCBzaGFyZWRCdWZmZXJD
b250ZW50KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwog
ICAgIHN0YXRpYyBWZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPiBjYWNoZWRSZXNvdXJjZXNGb3JGcmFt
ZShGcmFtZSopOwogICAgIHN0YXRpYyB2b2lkIHJlc291cmNlQ29udGVudChJbnNwZWN0b3I6OlBy
b3RvY29sOjpFcnJvclN0cmluZyYsIEZyYW1lKiwgY29uc3QgVVJMJiwgU3RyaW5nKiByZXN1bHQs
IGJvb2wqIGJhc2U2NEVuY29kZWQpOwogICAgIHN0YXRpYyBTdHJpbmcgc291cmNlTWFwVVJMRm9y
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmNwcAppbmRleCBiNGU2YTNhNTNiNGMwYzBkYTFjMzE3MmRkNDJjYWU2YThjZDIxZjdhLi42
YWU1MjY1OTdjZDI4NjMxYmU3OTUwZmMzMzUzNmY4ZjM0N2Q3YWY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50
RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAg
ICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNl
LmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRh
KTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZl
cigpKQotICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihy
ZXNvdXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAg
bV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAK
IHN0YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKQEAgLTI3Niw3ICsyNzYsNyBAQCB2
b2lkIENvbnRlbnRGaWx0ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgQVNTRVJUKHdpbGxIYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlKGVycm9yKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVu
dERhdGEgeyBtX2Jsb2NraW5nQ29udGVudEZpbHRlci0+cmVwbGFjZW1lbnREYXRhKCkgfTsKKyAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhIHsgbV9ibG9j
a2luZ0NvbnRlbnRGaWx0ZXItPnJlcGxhY2VtZW50RGF0YSgpIH07CiAgICAgUmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZSB7IFVSTCgpLCAidGV4dC9odG1sIl9zLCBzdGF0aWNfY2FzdDxsb25nIGxv
bmc+KHJlcGxhY2VtZW50RGF0YS0+c2l6ZSgpKSwgIlVURi04Il9zIH07CiAgICAgU3Vic3RpdHV0
ZURhdGEgc3Vic3RpdHV0ZURhdGEgeyBXVEZNb3ZlKHJlcGxhY2VtZW50RGF0YSksIGVycm9yLmZh
aWxpbmdVUkwoKSwgcmVzcG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2li
aWxpdHk6OkhpZGRlbiB9OwogICAgIFNldEZvclNjb3BlPGJvb2w+IGxvYWRpbmdCbG9ja2VkUGFn
ZSB7IG1faXNMb2FkaW5nQmxvY2tlZFBhZ2UsIHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOTRjMzZl
ZjUwN2VmMDM3YjcwN2M5MGQxOWE3YTFhNzQ0NWIxZjcwYS4uZDA5NjFhZmM3YjdlNzNlNjE3ZTc4
MDZhNjdjNmZmZDA5ZjE1Y2E5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Ny
b3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lk
IENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQoRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyJiBsb2FkZXIsCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3Qg
PSBjcmVhdGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LCBsb2FkZXIuc2Vj
dXJpdHlPcmlnaW4oKSwgbG9hZGVyLnJlZmVycmVyKCkpOwogICAgIFJlc291cmNlRXJyb3IgZXJy
b3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhOworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogCiAg
ICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVyLmRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCku
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShwcmVmbGlnaHRSZXF1ZXN0LCBDbGllbnRDcmVkZW50
aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zIHsg
fSwgeyB9LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcAppbmRleCBjM2Q4NDUwZjcxYzJjMzczZDJhZjFjY2NmYjIxNWFkODFi
ZjgwZDBiLi5kOTBmZTAyZjc5NzBjNGZkYzk1ZWY5OThmZDI1ZTM4NzJkNmQzZTllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCBE
b2N1bWVudExvYWRlcjo6fkRvY3VtZW50TG9hZGVyKCkKICNlbmRpZgogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURh
dGEoKSBjb25zdAogewogICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuIG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5jb3B5KCk7CkBAIC0xNjA4LDEx
ICsxNjA4LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAg
ICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNoaXZlKTsKICAgICBBU1NFUlQobV9hcmNo
aXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYgbWFpblJlc291cmNlID0gKm1fYXJjaGl2
ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9ICZtYWluUmVzb3Vy
Y2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSBtYWluUmVzb3VyY2UuZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNl
Lm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNv
bW1pdERhdGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCku
c2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1fcGFyc2VkQXJjaGl2ZURhdGEtPmRhdGEoKSwgbWFp
blJlc291cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiB9CkBA
IC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhckFyY2hpdmVSZXNv
dXJjZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lci5zdG9wKCk7CiB9
CiAKLVNoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29u
c3QKK0NvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZl
RGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFyc2VkQXJjaGl2ZURhdGEuZ2V0KCk7CiB9
CkBAIC0xNjcxLDkgKzE2NzEsOSBAQCBBcmNoaXZlUmVzb3VyY2UqIERvY3VtZW50TG9hZGVyOjph
cmNoaXZlUmVzb3VyY2VGb3JVUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAKIFJlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2UoKSBjb25zdAogewotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CiAg
ICAgaWYgKCFkYXRhKQotICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICAgICAgZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8m
IHJlc3BvbnNlID0gdGhpcy0+cmVzcG9uc2UoKTsKICAgICByZXR1cm4gQXJjaGl2ZVJlc291cmNl
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSwgcmVzcG9uc2UudXJsKCksIHJlc3BvbnNlLm1pbWVUeXBl
KCksIHJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSwgZnJhbWUoKS0+dHJlZSgpLnVuaXF1ZU5h
bWUoKSk7CiB9CkBAIC0yMjU1LDggKzIyNTUsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjptYXli
ZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKIAogICAgIGZyYW1lTG9hZGVyKCktPnNl
dHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29tbWl0dGVkID0gZmFsc2U7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwotICAgIGNvbW1p
dExvYWQocmVzb3VyY2VEYXRhLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNl
RGF0YSgpOworICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6
c3RhcnRJY29uTG9hZGluZygpCkBAIC0yMjkyLDcgKzIyOTIsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5n
ZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhpY29uRGVjaXNpb25zKTsKIH0KIAotdm9pZCBEb2N1bWVu
dExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRf
dCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNp
c2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGF1dG8gaWNvbiA9IG1faWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uLnRh
a2UobG9hZElkZW50aWZpZXIpOwogCkBAIC0yMzEzLDcgKzIzMTMsNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90
IGxvYWRJZGVudAogICAgIHJhd0ljb25Mb2FkZXItPnN0YXJ0TG9hZGluZygpOwogfQogCi12b2lk
IERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImIGxvYWRlciwg
U2hhcmVkQnVmZmVyKiBidWZmZXIpCit2b2lkIERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRp
bmdJY29uKEljb25Mb2FkZXImIGxvYWRlciwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVy
KQogewogICAgIC8vIElmIHRoZSBEb2N1bWVudExvYWRlciBoYXMgZGV0YWNoZWQgZnJvbSBpdHMg
ZnJhbWUsIGFsbCBpY29uIGxvYWRzIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBjYW5jZWxsZWQu
CiAgICAgQVNTRVJUKG1fZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aAppbmRleCBmYmY1NDVjNDYwZTRlNDg5ZDg3YjI1YzBlODVlY2NjYTRjYmYzYzg3Li4yZjY5NGMx
ZmVlN2FjZTM0NTE2NDRkN2RmMjQyNGMwM2M5ZTUxMTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFzcyBBcmNoaXZlUmVzb3VyY2VD
b2xsZWN0aW9uOwogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRGaWx0ZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOwogc3RydWN0IEN1c3RvbUhlYWRlckZpZWxkczsKIGNsYXNzIEZvcm1TdGF0ZTsKIGNsYXNz
IEZyYW1lOwpAQCAtODMsNyArODQsNyBAQCBjbGFzcyBJY29uTG9hZGVyOwogY2xhc3MgUGFnZTsK
IGNsYXNzIFByZXZpZXdDb252ZXJ0ZXI7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTV0NsaWVu
dENvbm5lY3Rpb247CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFN1YnN0aXR1dGVS
ZXNvdXJjZTsKQEAgLTE3MSw3ICsxNzIsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBT
dWJyZXNvdXJjZUxvYWRlciogbWFpblJlc291cmNlTG9hZGVyKCkgY29uc3Q7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVz
b3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgCiAgICAgRG9jdW1lbnRXcml0ZXImIHdyaXRlcigpIGNv
bnN0IHsgcmV0dXJuIG1fd3JpdGVyOyB9CiAKQEAgLTIyOCw3ICsyMjksNyBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJl
c291cmNlPiYmKTsKICAgICBSZWZQdHI8QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNv
bnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBT
aGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRl
ciYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlmCkBAIC0zOTIsOCArMzkzLDggQEAg
cHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0SWNvbkxvYWRpbmcoKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwg
dWludDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVm
ZmVyKik+JiYpOwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgU2hh
cmVkQnVmZmVyKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25G
b3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJik7CisgICAgdm9pZCBmaW5p
c2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAK
ICAgICBjb25zdCBWZWN0b3I8TGlua0ljb24+JiBsaW5rSWNvbnMoKSBjb25zdCB7IHJldHVybiBt
X2xpbmtJY29uczsgfQogCkBAIC02MDIsNyArNjAzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xs
ZWN0aW9uOwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJl
ZlB0cjxBcmNoaXZlPiBtX2FyY2hpdmU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJz
ZWRBcmNoaXZlRGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJz
ZWRBcmNoaXZlRGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2Vz
Q2xpZW50S25vd3NBYm91dDsKQEAgLTYyMSw3ICs2MjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV93YWl0aW5nRm9yTmF2aWdhdGlvblBvbGljeSB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPHVp
bnQ2NF90LCBMaW5rSWNvbj4gbV9pY29uc1BlbmRpbmdMb2FkRGVjaXNpb247Ci0gICAgSGFzaE1h
cDxzdGQ6OnVuaXF1ZV9wdHI8SWNvbkxvYWRlcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hh
cmVkQnVmZmVyKik+PiBtX2ljb25Mb2FkZXJzOworICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRy
PEljb25Mb2FkZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqKT4+IG1faWNvbkxvYWRlcnM7CiAgICAgVmVjdG9yPExpbmtJY29uPiBtX2xpbmtJY29uczsK
IAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggOWE0ZDRiMjEyZmRm
ZDI4MTg0Mzc2ZDRiNzBjN2RhNGYzZWI3YzgzMi4uYzcwOTY0MTBhN2FhMDU0ZTUxZDcwNDQ1ZDY2
MzUyZjI4MTQwNjhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIERvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2Vj
dXJpdHlDaAogICAgIGxvYWRUaW1pbmcubWFya1N0YXJ0VGltZSgpOwogCiAgICAgLy8gRklYTUU6
IFRocmVhZGFibGVMb2FkZXJPcHRpb25zLnNuaWZmQ29udGVudCBpcyBub3Qgc3VwcG9ydGVkIGZv
ciBzeW5jaHJvbm91cyByZXF1ZXN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwor
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIFJlc291cmNlRXJy
b3IgZXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICBhdXRvIGlkZW50
aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxSZXNvdXJjZUxvYWRlcj4oc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50NjRfdD46Om1heCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKaW5kZXggM2EwNjRiYzcyMzFhMzYwMGNjODNkYzU4YTlhMmU3ZmYyZWU5NmIzNS4uNDgw
ZjIyYWJlMzU1ZDEwOWMyMDg2MmVmYWU5ZGJkNWQwODU3Yzk0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTI3Niw3ICsyNzYsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2
b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYpIGZpbmFsIHsgfQogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+
JiwgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAg
ICB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mKSBmaW5hbCB7IH0KICAgICB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRT
cGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKaW5kZXggNTY2MTA4MzgwNTY2NGUwMTE5ZjExZmZjMzJlYTdlMTkyN2Zj
NjU3Yi4uOGU0YzQ2MzBhMWM1MWIyZGQ2OTRmZDM1YTMzNTQ3MjI0N2Y2Nzc1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xNDI3LDcgKzE0MjcsNyBAQCBTdWJzdGl0
dXRlRGF0YSBGcmFtZUxvYWRlcjo6ZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKGNvbnN0IFVS
TCYgdXJsKQogICAgIENTdHJpbmcgZW5jb2RlZFNyY2RvYyA9IHNyY2RvYy5zdHJpbmcoKS51dGY4
KCk7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKFVSTCgpLCAidGV4dC9odG1sIl9z
LCBlbmNvZGVkU3JjZG9jLmxlbmd0aCgpLCAiVVRGLTgiX3MpOwotICAgIHJldHVybiBTdWJzdGl0
dXRlRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVkU3JjZG9jLmRhdGEoKSwgZW5jb2Rl
ZFNyY2RvYy5sZW5ndGgoKSksIFVSTCgpLCByZXNwb25zZSwgU3Vic3RpdHV0ZURhdGE6OlNlc3Np
b25IaXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVuKTsKKyAgICByZXR1cm4gU3Vic3RpdHV0ZURhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZWRTcmNkb2MuZGF0YSgpLCBlbmNv
ZGVkU3JjZG9jLmxlbmd0aCgpKSwgVVJMKCksIHJlc3BvbnNlLCBTdWJzdGl0dXRlRGF0YTo6U2Vz
c2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4pOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjps
b2FkKEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMzEwMSw3ICszMTAxLDcgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0
LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFs
UG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAm
IG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCitSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVu
dENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRU
UEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3Is
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgU3RyaW5n
IHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIobV9mcmFt
ZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1Jl
ZmVycmVyKCkpOwpAQCAtMzE0OSw3ICszMTQ5LDcgQEAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
IEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmUK
ICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1h
eWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKSkg
ewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAgICAgICAgIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRDcmVkZW50aWFsUG9saWN5
LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwgcmVzcG9uc2UsIGJ1ZmZl
cik7Ci0gICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZm
ZXIpKTsKKyAgICAgICAgICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0
aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3Qs
IGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1lLCBuZXdSZXF1ZXN0LCBy
ZXNwb25zZSwKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGluYXRpb24ob3B0aW9u
cy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklz
U2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25J
c1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGUx
M2UyODZlMTRmNGZlOGZkN2RmOTBhMGUxNTFmMDkzNDE4ZGRkYjEuLmE1MmQ3ZjkxYzYyNjIxZmQz
N2MxMGJmMGE5YTAxZmFmYjY4YjBjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
CkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNsYXNzIENhY2hlZFBh
Z2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKK2NsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEb2N1bWVudDsK
IGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFzcyBSZXNvdXJjZUVy
cm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNs
YXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1
YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWludDhfdDsKQEAgLTEy
Nyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUo
TUhUTUwpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkQXJjaGl2ZShSZWY8QXJjaGl2ZT4m
Jik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9saWN5
LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VFcnJv
ciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSk7CisgICAg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRp
b25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0
YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9IHN0ZDo6bnVs
bG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRvbSgpLCBj
b25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgY2hhbmdlTG9jYXRpb24o
RnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRyLCBzdGQ6Om9wdGlvbmFsPFByaXZh
dGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNGZkNjM3YTkwMTRhNWQ0MWEyMjZlZTQ1OTE3
YjZiM2U5YTc5MGViYi4uZWU5ZjNkMGM5ODRkNDU1Y2JiOTFiNDYwYzFiYzEyODk4ZDEyMzY1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTk4LDcgKzk4
LDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURh
dGE7CiBjbGFzcyBXaWRnZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9M
b2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgK
aW5kZXggYWVmNjY4YmQ2M2VkNWZjZDQ1ZTYxZTlkMWYxMDdjZmI2YWVmMjY0Yi4uMjlkMmUzZjQ2
MTQwYWFhNTExNjBlNmEyODU2MmYzNzBlMzcxZWIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xv
YWRlclN0cmF0ZWd5LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2Vj
dXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiAKIHN0cnVjdCBGZXRjaE9wdGlvbnM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKaW5kZXgg
NzY0Zjg4Njg0NDdiNmU1YTY0N2Q5OTA4MTlmYzRkZWQ0ZmQyMWMxYy4uNjdjZmU1NzJkZjc5Mzk5
YjgxYTRiYWVjNTMzZWJjM2ZmMTdhYTJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9O
YXZpZ2F0aW9uU2NoZWR1bGVyLmNwcApAQCAtMzY1LDcgKzM2NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvciB7IHVzZXJHZXN0dXJlVG9G
b3J3YXJkKCkgfTsKIAogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlcGxhY2VtZW50UmVzcG9u
c2UgeyBtX29yaWdpbkRvY3VtZW50LnVybCgpLCAidGV4dC9wbGFpbiJfcywgMCwgIlVURi04Il9z
IH07Ci0gICAgICAgIFN1YnN0aXR1dGVEYXRhIHJlcGxhY2VtZW50RGF0YSB7IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCksIG1fb3JpZ2luRG9jdW1lbnQudXJsKCksIHJlcGxhY2VtZW50UmVzcG9uc2Us
IFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OkhpZGRlbiB9OworICAg
ICAgICBTdWJzdGl0dXRlRGF0YSByZXBsYWNlbWVudERhdGEgeyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSwgbV9vcmlnaW5Eb2N1bWVudC51cmwoKSwgcmVwbGFjZW1lbnRSZXNwb25z
ZSwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVuIH07CiAK
ICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdCB7IG1fb3JpZ2luRG9jdW1l
bnQudXJsKCksIGVtcHR5U3RyaW5nKCksIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpSZWxv
YWRJZ25vcmluZ0NhY2hlRGF0YSB9OwogICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9h
ZFJlcXVlc3QgeyBtX29yaWdpbkRvY3VtZW50LCBtX29yaWdpbkRvY3VtZW50LnNlY3VyaXR5T3Jp
Z2luKCksIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgeyB9LCBpbml0aWF0ZWRCeU1haW5GcmFt
ZSgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyLmNwcAppbmRleCA2MzM3NTU5NjMyMDAxNDYzODI4OWUyODI2MDRjNTViMGFmNDQ1
MzEzLi42MDQzYWM5YmUyNjdlYTRmYmM3MWUxMTE4YjkwNzkxNTVlMzkxNTAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAK
QEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlCiAgICAgZGlkUmVj
ZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3Ro
LCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lk
IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBE
YXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0
YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBE
YXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
bGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsK
ICAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlci5oCmluZGV4IDQ4YmIyMTUzYzkzZjJkYzc1NGUyMDczMjI1MmMwNTA5Y2Y3MDRhNDEuLmI1
MTc0ZWRjOTRiOTkyMzkwMjA1ZjBmYWQ0NTJlYTVhYzM4Nzg5MzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBAIC02Myw3ICs2
Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwotICAgIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKQEAgLTc0LDcgKzc0LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqLCBpbnQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAKICAgICB2b2lkIG5vdGlmeURv
bmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0LmNwcAppbmRleCBjNjI3NzY4NThhNmRjNWFmZmQzNmRjOWU3ODVjOGJkMjQ3
MmJiNzRkLi5kOTRiNzAwMDc0MWNkOTEyYjkxNzNlMmIzNzQ2ZDRkYThiMzY4YTU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0
LmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlw
dG9ncmFwaGljRGlnZXN0Rm9yQnl0ZXMoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnCiAgICAgcmV0
dXJuIHsgYWxnb3JpdGhtLCBjcnlwdG9EaWdlc3QtPmNvbXB1dGVIYXNoKCkgfTsKIH0KIAotUmVz
b3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZm
ZXIoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtLCBjb25z
dCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlw
dG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dDo6QWxnb3JpdGhtIGFsZ29yaXRobSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVm
ZmVyKQogewogICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0
ZSh0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShhbGdvcml0aG0pKTsKICAgICBpZiAoYnVmZmVyKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGlj
RGlnZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0LmgKaW5kZXggYWVhM2RjNTdjODc4MzEzMDEzYTViMTZjOTM5Yjc3NGVkNDg0MzI0Yy4uODNi
ODYxM2NmZGEyMzI5YWUzMGJiZjZhYmMxNGI5OWQ0NDIzN2IwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaApAQCAtMzQsNyAr
MzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVj
dCBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgewogICAgIGVudW0gY2xhc3MgQWxnb3JpdGht
IHsKQEAgLTc1LDcgKzc1LDcgQEAgc3RkOjpvcHRpb25hbDxFbmNvZGVkUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0PiBwYXJzZUVuY29kZWRDcnlwdG9ncmFwaGljRGlnZXMKIAogc3RkOjpvcHRp
b25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IGRlY29kZUVuY29kZWRSZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3QoY29uc3QgRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dCYpOwogCi1SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZv
clNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29u
c3QgU2hhcmVkQnVmZmVyKik7CitSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3Jh
cGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFs
Z29yaXRobSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29uc3Qgdm9pZCogYnl0ZXMsIHNpemVfdCBsZW5ndGgp
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBhYTg1
YmI0ZDNjYTg3MTQ1YmI3YTg2ZjY0NjY4ZTQ5NTE3NmFjMjM1Li45YWZkMWJiZWI3NjJjNTkyNmMx
ZjM1ZTQ4YzEzNzIxNDk5MDczZjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTc2LDYgKzc2LDcgQEAgREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURF
TlRJRklFUihSZXNvdXJjZUxvYWRlcik7CiBSZXNvdXJjZUxvYWRlcjo6UmVzb3VyY2VMb2FkZXIo
RnJhbWUmIGZyYW1lLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucykKICAgICA6IG1fZnJh
bWUgeyAmZnJhbWUgfQogICAgICwgbV9kb2N1bWVudExvYWRlciB7IGZyYW1lLmxvYWRlcigpLmFj
dGl2ZURvY3VtZW50TG9hZGVyKCkgfQorICAgICwgbV9yZXNvdXJjZURhdGEgeyBtYWtlVW5pcXVl
UmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9kZWZlcnNMb2FkaW5nIHsgb3B0
aW9ucy5kZWZlcnNMb2FkaW5nUG9saWN5ID09IERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVm
ZXJzTG9hZGluZyAmJiBmcmFtZS5wYWdlKCktPmRlZmVyc0xvYWRpbmcoKSB9CiAgICAgLCBtX29w
dGlvbnMgeyBvcHRpb25zIH0KIHsKQEAgLTExOCw3ICsxMTksNyBAQCB2b2lkIFJlc291cmNlTG9h
ZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKIAogICAgIG1faWRlbnRpZmllciA9IHsgfTsKIAotICAg
IG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICBtX3Jlc291cmNlRGF0YS0+cmVzZXQoKTsK
ICAgICBtX2RlZmVycmVkUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwogfQogCkBAIC0xODks
NyArMTkwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6aW5pdChSZXNvdXJjZVJlcXVlc3QmJiBj
bGllbnRSZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2kKICAgICB9KTsKIH0KIAotdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFJlc291
cmNlTG9hZGVyOjpkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAg
ICAgZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgaWYgKHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCkBAIC0zMDAsNyArMzAxLDcgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6bG9hZERhdGFVUkwoKQogCiAgICAgICAgIGF1dG8gZGF0YVNpemUgPSBk
ZWNvZGVSZXN1bHQtPmRhdGEuc2l6ZSgpOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIGRhdGFS
ZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZSh1cmwsIGRlY29kZVJl
c3VsdC52YWx1ZSgpKTsKLSAgICAgICAgdGhpcy0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGRhdGFSZXNw
b25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBkYXRh
U2l6ZSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGVjb2RlUmVzdWx0LT5k
YXRhKSldKCkgbXV0YWJsZSB7CisgICAgICAgIHRoaXMtPmRpZFJlY2VpdmVSZXNwb25zZShkYXRh
UmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
ZGF0YVNpemUsIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShk
ZWNvZGVSZXN1bHQtPmRhdGEpKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghdGhpcy0+
cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSAmJiBkYXRhU2l6ZSAmJiBtX3JlcXVlc3QuaHR0cE1ldGhv
ZCgpICE9ICJIRUFEIikKICAgICAgICAgICAgICAgICB0aGlzLT5kaWRSZWNlaXZlQnVmZmVyKFdU
Rk1vdmUoZGF0YSksIGRhdGFTaXplLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOwogCkBAIC0z
MTgsNyArMzE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGlj
eShEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2wKIAogICAgIC8vIFJlc2V0IGFu
eSBhbHJlYWR5IGJ1ZmZlcmVkIGRhdGEKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBE
YXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VE
YXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CiB9CiAKIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSgpCkBAIC0z
MjksMjkgKzMzMCwyOSBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0
dXRlUmVzb3VyY2UoKQogICAgICAgICBtX2hhbmRsZS0+Y2FuY2VsKCk7CiB9CiAKLXZvaWQgUmVz
b3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgsIFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxv
YWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVy
LCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGlmIChtX29wdGlvbnMu
ZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRh
dGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9yZXNvdXJjZURhdGEgfHwgZGF0YVBh
eWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkgewotICAgICAgICBpZiAoYnVm
ZmVyKQotICAgICAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBidWZmZXI7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwg
bGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKKyAgICBpZiAoZGF0YVBheWxv
YWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZURh
dGEtPnJlc2V0KCk7CisKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+
YXBwZW5kKCpidWZmZXIpOwogICAgIGVsc2UKICAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVu
ZChkYXRhLCBsZW5ndGgpOwogfQogCitjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBSZXNv
dXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJj
ZURhdGEtPmdldCgpLmdldCgpOworfQorCiB2b2lkIFJlc291cmNlTG9hZGVyOjpjbGVhclJlc291
cmNlRGF0YSgpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAgICAgICBtX3Jlc291cmNl
RGF0YS0+Y2xlYXIoKTsKKyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhLT5pc051bGwoKSkKKyAgICAg
ICAgbV9yZXNvdXJjZURhdGEtPmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6Omlz
U3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdApAQCAtNTUxLDE0ICs1NTIsMTQgQEAgdm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoLCBsb25nIGwKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwg
bnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQg
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXls
b2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBk
YXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBh
eWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKLSAgICAvLyBUaGlz
IG1ldGhvZCBzaG91bGQgb25seSBnZXQgZGF0YStsZW5ndGggKk9SKiBhIFNoYXJlZEJ1ZmZlci4K
KyAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBnZXQgZGF0YStsZW5ndGggKk9SKiBhIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAgICAgQVNTRVJUKCFidWZmZXIgfHwgKCFkYXRhICYmICFs
ZW5ndGgpKTsKIAogICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlzIGRlbGVnYXRlIG1ldGhvZCBz
aW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwpAQCAtNTcxLDcgKzU3Miw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNv
bXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0
aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgog
ICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5
OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlm
aWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRh
LCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNv
ZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJl
Y2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
IDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGlu
dD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmlu
aXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykK
QEAgLTczNSw3ICs3MzYsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbgogICAgIGRpZFJlY2Vp
dmVEYXRhKGRhdGEsIGxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMp
OwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFu
ZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkK
K3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0
aCkKIHsKICAgICBkaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuaAppbmRleCA0ZmQyYmYwYmJiM2IxYmQyMTU0NWRiNTJjMmUxY2E2NGVlNDJiOTE3Li41
NGIxYjg2NmRmODk2YTg0YjRjYTI5N2VlNDc2ZDZkMGI2NjFmZGQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTU1LDYgKzU2
LDggQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZUxvYWRlcjsKIGNsYXNzIExlZ2FjeVByZXZp
ZXdMb2FkZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogREVDTEFSRV9BTExPQ0FU
T1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogY2xhc3MgUmVzb3VyY2VM
b2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMgUmVm
Q291bnRlZDxSZXNvdXJjZUxvYWRlcj4sIHByb3RlY3RlZCBSZXNvdXJjZUhhbmRsZUNsaWVudCB7
CkBAIC02Niw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBpbml0KFJlc291
cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAotICAgIHZv
aWQgZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZpcnR1YWwgdm9pZCBzdGFydExvYWRpbmco
KQpAQCAtOTgsNyArMTAxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlUmVz
b3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7
IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLmdldCgpOyB9CisgICAgY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhclJl
c291cmNlRGF0YSgpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1YnJlc291cmNlTG9hZGVy
KCkgY29uc3Q7CkBAIC0xMDcsNyArMTEwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxv
bmcgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
cG9saWN5Q29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9y
Jik7CiAKQEAgLTE2Niw3ICsxNjksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIHdhc0NhbmNl
bGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuY2VsbGF0aW9uU3RhdHVzID49IENhbmNlbGxlZDsg
fQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNp
Z25lZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25z
dCB1aW50OF90KiwgdW5zaWduZWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgCiAgICAg
dm9pZCBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSkgeyBt
X29wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSByZWZlcnJlclBvbGljeTsgfQogICAgIFJlZmVycmVy
UG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLnJlZmVycmVy
UG9saWN5OyB9CkBAIC0xOTEsNyArMTk0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKIAotICAgIHZvaWQgYWRkRGF0YU9y
QnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgU2hhcmVkQnVmZmVyKiwgRGF0YVBheWxv
YWRUeXBlKTsKKyAgICB2b2lkIGFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWdu
ZWQsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIHZvaWQg
bG9hZERhdGFVUkwoKTsKICAgICB2b2lkIGZpbmlzaE5ldHdvcmtMb2FkKCk7CiAKQEAgLTIwMiw3
ICsyMDUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVz
b3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhh
bmRsZSosIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxl
KiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2Fz
QmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwpAQCAtMjI3LDcgKzIzMCw3IEBAIHBy
aXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIFJlc291cmNlUmVx
dWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3JlIHJlZGlyZWN0cy4KLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4gbV9yZXNvdXJjZURhdGE7CiAgICAgCiAgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdlZGNiOWYzNTQ0ZjQ4ODRiNjBhNmVmZS4u
MzdkMGJiODIxYWJkODZhOWI1NjA2ZTEyN2VmYzk0MTJhNTFiYjFhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MzAsNyArNTMwLDcgQEAgdm9p
ZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoLCBsb24KICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxl
bmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAK
LXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBl
IGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAjaWYgVVNF
KFFVSUNLX0xPT0spCiAgICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9IG1fcHJldmlld0xvYWRl
ci5nZXQoKSkgewpAQCAtNTQyLDcgKzU0Miw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlCiAg
ICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVu
Y29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIFN1YnJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBs
ZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFN1YnJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQog
ewogICAgIEFTU0VSVChtX3Jlc291cmNlKTsKIApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJl
c291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNv
dXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVE
YXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIg
PyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmgKaW5kZXggMzcyM2I2YjlhYjlmZGRhYWE1NTc0YmZiMGU2ZjM4Y2Vk
N2FlZmI3NS4uODMyYzlmMGU3M2QzODQ2NGE3OTVmNDAzODYwZjc5YzM0ZTczYmM3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKQEAgLTc0LDcgKzc0LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1Nl
bnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxDYW5j
ZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTIsNyBAQCBwcml2
YXRlOgogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZXNwb25zZUNyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgRXhwZWN0ZWQ8dm9p
ZCwgU3RyaW5nPiBjaGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcHJldmlvdXNSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSk7CiAKICAgICB2b2lkIG5vdGlmeURvbmUoTG9hZENvbXBsZXRpb25UeXBlKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAppbmRleCBmNjYyOTJlMzFjYmViNDI2
NDMwYTgzMmFkZWY0Mjk5MWNiNTc0MzZlLi5hOGE0OWI0N2Y5MjczNDI3NGJhNGNlYWJjMTcwN2Zl
ZmE3YjY2NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaApAQCAtNDMs
NyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0g
ICAgICAgIFN1YnN0aXR1dGVEYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgY29udGVudCwgY29u
c3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgU2Vz
c2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkpCisgICAg
ICAgIFN1YnN0aXR1dGVEYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNvbnRl
bnQsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5
KQogICAgICAgICAgICAgOiBtX2NvbnRlbnQoV1RGTW92ZShjb250ZW50KSkKICAgICAgICAgICAg
ICwgbV9mYWlsaW5nVVJMKGZhaWxpbmdVUkwpCiAgICAgICAgICAgICAsIG1fcmVzcG9uc2UocmVz
cG9uc2UpCkBAIC01NCwxNCArNTQsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBi
b29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQgIT0gbnVsbHB0cjsgfQogICAg
ICAgICBib29sIHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkoKSBjb25zdCB7IHJldHVybiBt
X3Nob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgPT0gU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5
OjpWaXNpYmxlOyB9CiAKLSAgICAgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBjb250ZW50KCkgY29u
c3QgeyByZXR1cm4gbV9jb250ZW50LmdldCgpOyB9CisgICAgICAgIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQuZ2V0KCk7IH0K
ICAgICAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9u
c2UubWltZVR5cGUoKTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZygpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOyB9CiAgICAgICAgIGNv
bnN0IFVSTCYgZmFpbGluZ1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFpbGluZ1VSTDsgfQogICAg
ICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzcG9uc2U7IH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9jb250ZW50OworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gbV9jb250ZW50OwogICAgICAgICBVUkwgbV9mYWlsaW5nVVJMOwogICAgICAgICBSZXNvdXJj
ZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgICAgIFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBt
X3Nob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgeyBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6
OkhpZGRlbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmlu
ZGV4IDU5NjY0YjU4NTRmODViMDJjZGYzNDkwMjBhMGVmZjEzZWI3ODg4NzkuLmNmMmRlMGM2MmQ5
NWYzMzI1YjQyYjQ2ZTI0MDM3NzQ0MTA3NDJhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3Vic3RpdHV0ZVJlc291cmNlLmgKQEAgLTM3LDEyICszNywxNCBAQCBwdWJsaWM6CiAKICAgICBj
b25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAg
U2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0
PFNoYXJlZEJ1ZmZlcj4obV9kYXRhKTsgfQorICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9KTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgp
OyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmVtcHR5KCk7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNw
b25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLT5jb3B5KCkpOyB9CisgICAgdmlydHVhbCB2
b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3Bv
bnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEuY29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6Ci0g
ICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3Bv
bnNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCisgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVS
TCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKQogICAgICAgICA6IG1fdXJsKFdURk1vdmUodXJsKSkKICAgICAgICAg
LCBtX3Jlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKQogICAgICAgICAsIG1fZGF0YShXVEZNb3Zl
KGRhdGEpKQpAQCAtNTIsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBt
X3VybDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCA4OWYzYjBmMWRjMzlkNDBh
NTYzODc4YWU1NWY3NmM2NzBhNzE1MDkxLi4wMzZlZmQyMGU0OTYzMDBjZjhjOWU3ZTc5MDMxN2Uw
MWRlNWJhZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNjA1LDcgKzYwNSw3IEBAIHZvaWQgQXBw
bGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QoKQogICAgICAgICB9
CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVN
YW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWlt
ZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtX21hbmlmZXN0UmVz
b3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0
aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3Bv
bnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOwogICAgIGlm
ICghbWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCBs
YWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBvbmx5IHJlYXNvbiBmb3Ig
cGFyc2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBDYWNoZSwgTWVzc2FnZUxldmVsOjpFcnJv
ciwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBwYXJzZWQuIERvZXMg
aXQgc3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggNjAz
MjgxODg4Mzc1ZjQ0YTYyNGIzZTNiM2FhZmUwNmEzNjg5MmVlNi4uNzIwYTkyNzFjZDMyNjVlZjRj
ZTIzMjYxYTI2ZGIwZDgyOGM2MzM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC0yNTMsMTYgKzI1Mywx
NCBAQCBVUkwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmNyZWF0ZUZpbGVVUkwoY29uc3QgU3RyaW5n
JiBwYXRoKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCitz
dGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGcm9tUmVz
b3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAgICAvLyBGSVhN
RTogQ2xpZW50cyBwcm9iYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZl
ci4KLSAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJl
ZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KICAgICBpZiAocmVzb3VyY2UucGF0aCgpLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5jb3B5KCk7Ci0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgo
KSk7CisgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHJlc291cmNlLnBhdGgoKSk7CiB9CiAKLWJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJl
TG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9y
JiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiBkYXRhKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNs
eShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRh
KQogewogICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgaWYgKCFz
aG91bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGljYXRpb25DYWNoZShyZXF1ZXN0LCByZXNvdXJjZSkp
CkBAIC0yNzksNyArMjc3LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2Fk
U3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc28KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tT
eW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJv
ciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYgZGF0YSkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3lu
Y2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3Im
IGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiBkYXRhKQogewogICAgIC8vIElmIG5vcm1hbCBsb2FkaW5nIHJlc3VsdHMgaW4g
YSByZWRpcmVjdCB0byBhIHJlc291cmNlIHdpdGggYW5vdGhlciBvcmlnaW4gKGluZGljYXRpdmUg
b2YgYSBjYXB0aXZlIHBvcnRhbCksIG9yIGEgNHh4IG9yIDV4eCBzdGF0dXMgY29kZSBvciBlcXVp
dmFsZW50LAogICAgIC8vIG9yIGlmIHRoZXJlIHdlcmUgbmV0d29yayBlcnJvcnMgKGJ1dCBub3Qg
aWYgdGhlIHVzZXIgY2FuY2VsZWQgdGhlIGRvd25sb2FkKSwgdGhlbiBpbnN0ZWFkIGdldCwgZnJv
bSB0aGUgY2FjaGUsIHRoZSByZXNvdXJjZSBvZiB0aGUgZmFsbGJhY2sgZW50cnkKQEAgLTI5MCw5
ICsyODgsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5
bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JgogICAgICAgICBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAgICAgICBpZiAoZ2V0QXBwbGljYXRpb25DYWNoZUZh
bGxiYWNrUmVzb3VyY2UocmVxdWVzdCwgcmVzb3VyY2UpKSB7CiAgICAgICAgICAgICByZXNwb25z
ZSA9IHJlc291cmNlLT5yZXNwb25zZSgpOwotICAgICAgICAgICAgLy8gRklYTUU6IENsaWVudHMg
cHJvYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAgICAg
ICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVm
ZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgotICAgICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5k
YXRhKCkuY29weSgpOworICAgICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNv
bnRpZ3VvdXMoKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggNTJjZDE2NDAz
YTE3MzZhNzE4NjU2NzcyNDg2MTFlMDhmNjYzYjI5Zi4uZGM4NThmZGQ2ZDU0NTNlYjQzNTkyOGQz
ZWQ3NTc1NzA4MzU5NDVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgQXBw
bGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOworY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7CiBj
bGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwpAQCAtNDksNyArNTAsNiBAQCBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xh
c3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0IHsKQEAgLTEw
NCw4ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRG
YWxsYmFja0ZvclJlc3BvbnNlKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JFcnJvcihS
ZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAotICAgIGJvb2wgbWF5YmVM
b2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7Ci0gICAgdm9pZCBtYXliZUxvYWRG
YWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJv
ciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworICAgIGJvb2wg
bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwg
UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAg
IHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+Jik7CiAKICAgICBib29sIGNhbkNhY2hlSW5CYWNrRm9yd2FyZENhY2hlKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggZjFmN2UxNzU2MzAxNDcxZjMwODVkZWY4ZTQx
ZGM1ZDBjYTlkNjA5YS4uZDNiMjY0OWY0NjVhMDY2NDdhOWFmYTBmOGM1ODU3Mjg2MzM0YzAwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTI5LDE4ICsyOSwxOCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgcGF0aCkKK1JlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCF1
cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogICAgIGlmICghYnVmZmVyKQotICAgICAgICBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvIHJlc291cmNlUmVzcG9uc2UgPSBy
ZXNwb25zZTsKICAgICByZXNvdXJjZVJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNl
OjpTb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGUpOwogCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCB7IHVybCB9LCBXVEZNb3ZlKHJlc291cmNlUmVz
cG9uc2UpLCB0eXBlLCBidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgcGF0aCkpOwogfQogCi1BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmws
IFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCitBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIDogU3Vic3RpdHV0ZVJlc291cmNlKFdURk1v
dmUodXJsKSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX3R5cGUo
dHlwZSkKICAgICAsIG1fc3RvcmFnZUlEKDApCkBAIC01MSw3ICs1MSw3IEBAIEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3Vy
Y2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKFJl
c291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERh
dGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5KCkgOiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBsb2FkZXIuZGVs
aXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCkgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
OjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCmluZGV4IDg4Yzk0ZGUx
YTc3NDEwNDY5YzkzMWE0MmE0NzliMWU2Nzc3YTcwMmUuLjE1ODQ4ZDU5YjBjYzkwZGY0OWI2YTIz
ZTY2YmE2YmVkZDNjODZhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgKQEAgLTQwLDcgKzQwLDcgQEAg
cHVibGljOgogICAgICAgICBGYWxsYmFjayA9IDEgPDwgNAogICAgIH07CiAKLSAgICBzdGF0aWMg
UmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gY3JlYXRlKGNvbnN0IFVSTCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgY29uc3QgU3RyaW5nJiBwYXRoID0gU3RyaW5nKCkpOwor
ICAgIHN0YXRpYyBSZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUoY29uc3QgVVJM
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGNv
bnN0IFN0cmluZyYgcGF0aCA9IFN0cmluZygpKTsKIAogICAgIHVuc2lnbmVkIHR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGU7IH0KICAgICB2b2lkIGFkZFR5cGUodW5zaWduZWQgdHlwZSk7CkBA
IC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIAogcHJpdmF0ZToKLSAgICBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYsIFJlc291cmNlUmVzcG9uc2UmJiwgdW5zaWduZWQg
dHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYsIFJlc291cmNlUmVzcG9uc2UmJiwgdW5zaWduZWQg
dHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgcGF0aCk7
CiAKICAgICB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImKSBvdmVycmlkZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAppbmRleCAxYzUwODQ3YTZlODk1MTc4OWUzYjNmYmFm
ZGE4NTE4NjYyOTBlZWIwLi43YjJmYjZjOWMyNTNkOTQzN2Y0MDdlOGM5N2I4YjUwNzRjNzEyOTI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VM
b2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBsZW5ndGgpCiB7Ci0gICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmRhdGEoKS5h
cHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+YXBw
ZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYg
bmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5k
ZXggMWIzM2FjOTViY2RlMTFmZTNjNDk5MDI0MGE1MjBiZDMwZTYzNjU5NS4uMWRlOTU5ZGExYzAz
ZmU3MGY5ODQ0YWRkZGZmMzY1YWZkZTMwMzA2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC03
ODMsNyArNzgzLDYgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICBhdXRvIGRhdGFTdGF0
ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJTlRPIENhY2hlUmVz
b3VyY2VEYXRhIChkYXRhLCBwYXRoKSBWQUxVRVMgKD8sID8pIl9zKTsKICAgICBpZiAoIWRhdGFT
dGF0ZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKIAogICAgIFN0cmluZyBmdWxs
UGF0aDsKICAgICBpZiAoIXJlc291cmNlLT5wYXRoKCkuaXNFbXB0eSgpKQpAQCAtODE1LDcgKzgx
NCw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJp
bmRUZXh0KDIsIHBhdGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChyZXNvdXJjZS0+ZGF0
YSgpLnNpemUoKSkKLSAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291
cmNlLT5kYXRhKCkpOworICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLmdldCgpKTsKICAgICB9CiAgICAgCiAgICAg
aWYgKCFkYXRhU3RhdGVtZW50LT5leGVjdXRlQ29tbWFuZCgpKSB7CkBAIC04NzMsMTIgKzg3Miwx
MiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIAogICAgIGlmICghZXhlY3V0ZVN0YXRl
bWVudChlbnRyeVN0YXRlbWVudC52YWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IAorCiAgICAgLy8gRGlkIHdlIHN1Y2Nlc3NmdWxseSB3cml0ZSB0aGUgcmVzb3VyY2UgZGF0YSB0
byBhIGZpbGU/IElmIHNvLAogICAgIC8vIHJlbGVhc2UgdGhlIHJlc291cmNlJ3MgZGF0YSBhbmQg
ZnJlZSB1cCBhIHBvdGVudGlhbGx5IGxhcmdlIGFtb3VudAogICAgIC8vIG9mIG1lbW9yeToKICAg
ICBpZiAoIWZ1bGxQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzb3VyY2UtPmRhdGEoKS5jbGVh
cigpOworICAgICAgICByZXNvdXJjZS0+Y2xlYXIoKTsKIAogICAgIHJlc291cmNlLT5zZXRTdG9y
YWdlSUQocmVzb3VyY2VJZCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTEzLDcgKzExMTIsNyBA
QCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRD
YWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQpCiAgICAgICAgIGludCBodHRwU3RhdHVzQ29kZSA9IGNh
Y2hlU3RhdGVtZW50LT5jb2x1bW5JbnQoMSk7CiAKICAgICAgICAgdW5zaWduZWQgdHlwZSA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50NjQoMikpOwotICAg
ICAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29s
dW1uQmxvYig2KSk7CisgICAgICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2KSk7CiAgICAgICAgIAogICAgICAg
ICBTdHJpbmcgcGF0aCA9IGNhY2hlU3RhdGVtZW50LT5jb2x1bW5UZXh0KDcpOwogICAgICAgICBs
b25nIGxvbmcgc2l6ZSA9IDA7CkBAIC0xMjczLDcgKzEyNzIsNyBAQCBib29sIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpzaG91bGRTdG9yZVJlc291cmNlQXNGbGF0RmlsZShBcHBsaWNhdGlvbkNh
Y2hlUmVzbwogICAgIHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5
cGUsICJhdWRpby8iKSB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUs
ICJ2aWRlby8iKTsKIH0KICAgICAKLWJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRl
RGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBkaXJlY3RvcnksIFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9u
KQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5E
aXJlY3RvcnkoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBkaXJl
Y3RvcnksIFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKQogewogICAg
IFN0cmluZyBmdWxsUGF0aDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKaW5kZXggOWE5NTMwMDg3NjZh
ODg4NTU2MWIzNDg4ODliOGNlZGEyYjJlYjMzOC4uNDEwMmExODA4YjQ1NTU3YjY0NWUzNmU3ZTY4
MWZjNGM2ZDIwN2NlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3Mg
QXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3Q7CiBjbGFz
cyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB0ZW1wbGF0ZTx0
eXBlbmFtZT4gY2xhc3MgU3RvcmFnZUlESm91cm5hbDsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZT4gewpA
QCAtMTIyLDcgKzEyMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBlbnN1cmVPcmlnaW5SZWNvcmQo
Y29uc3QgU2VjdXJpdHlPcmlnaW4qKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRTdG9yZVJlc291
cmNlQXNGbGF0RmlsZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqKTsKICAgICB2b2lkIGRlbGV0
ZVRhYmxlcygpOwotICAgIGJvb2wgd3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0cmluZyYgb3V0RmlsZW5hbWUs
IGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbik7CisgICAgYm9vbCB3cml0ZURhdGFUb1VuaXF1
ZUZpbGVJbkRpcmVjdG9yeShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnksIFN0cmluZyYgb3V0RmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lv
bik7CiAKICAgICB2b2lkIGxvYWRNYW5pZmVzdEhvc3RIYXNoZXMoKTsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcAppbmRleCA2ZGU4
MGMxMGFjN2QyNWNmMzQ2OWY2ZGVmMGZhZjcyNDFmNTk2NDI4Li40ZWY5Y2Q2NmJkMDg4Yjc0YzA0
NmMwNjkwZDFlOWQzZTVlMzM2MGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCkBAIC00NiwxMiArNDYsMTIgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi10eXBlZGVmIFJlZlB0cjxBcmNoaXZlPiBSYXdEYXRhQ3JlYXRpb25GdW5j
dGlvbihjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKK3R5cGVkZWYgUmVmUHRyPEFyY2hpdmU+
IFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKiwg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBBcmNoaXZlTUlNRVR5cGVzTWFwOwogCiAvLyBUaGUg
Y3JlYXRlIGZ1bmN0aW9ucyBpbiB0aGUgYXJjaGl2ZSBjbGFzc2VzIHJldHVybiBSZWZQdHIgdG8g
Y29uY3JldGUgc3ViY2xhc3NlcwogLy8gb2YgQXJjaGl2ZS4gVGhpcyBhZGFwdG9yIG1ha2VzIHRo
ZSBmdW5jdGlvbnMgaGF2ZSBhIHVuaWZvcm0gcmV0dXJuIHR5cGUuCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBBcmNoaXZlQ2xhc3M+IHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4gYXJjaGl2ZUZhY3RvcnlDcmVh
dGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordGVtcGxhdGU8dHlwZW5h
bWUgQXJjaGl2ZUNsYXNzPiBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGFyY2hpdmVGYWN0b3J5Q3Jl
YXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgcmV0dXJuIEFyY2hpdmVDbGFzczo6Y3JlYXRlKHVybCwgYnVmZmVyKTsKIH0KQEAgLTgzLDcg
KzgzLDcgQEAgYm9vbCBBcmNoaXZlRmFjdG9yeTo6aXNBcmNoaXZlTUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKICAgICByZXR1cm4gIW1pbWVUeXBlLmlzRW1wdHkoKSAmJiBhcmNoaXZl
TUlNRVR5cGVzKCkuY29udGFpbnMobWltZVR5cGUpOwogfQogCi1SZWZQdHI8QXJjaGl2ZT4gQXJj
aGl2ZUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKQorUmVmUHRyPEFyY2hpdmU+IEFyY2hpdmVGYWN0b3J5Ojpj
cmVhdGUoY29uc3QgVVJMJiB1cmwsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVG
YWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5o
CmluZGV4IDIxZDIzNjVjZjhkOWQ5MDFlZmU3YWFkNTUyYmYzZGE0MDY5ZmU0MGQuLjU1NjQ1MTVj
OWUwZDlkMDMzYjc5MGM3NDcyODVhMjU4NTNhYmUwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaApAQCAtMzQsMTIgKzM0LDEyIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQXJjaGl2ZUZhY3RvcnkgewogcHVibGljOgogICAgIHN0
YXRpYyBib29sIGlzQXJjaGl2ZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBS
ZWZQdHI8QXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBjcmVhdGUo
Y29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlwZXMo
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCmluZGV4
IGZjMjBkYTNkYTAzMmNiZWY3NGYyZTljODQyOGFjYjRlZTM3YmVmMjMuLjA3MzgzOTRhODI4NzE0
YWEwYjkwZWU3NTA3OWQ0ODZmNWIwZTg2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJj
ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoraW5saW5lIEFyY2hpdmVS
ZXNvdXJjZTo6QXJjaGl2ZVJlc291cmNlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRh
dGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcm
IHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQogICAgIDogU3Vic3RpdHV0ZVJlc291cmNlKFVSTCB7IHVybCB9LCBS
ZXNvdXJjZVJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgV1RGTW92ZShkYXRhKSkKICAgICAsIG1fbWlt
ZVR5cGUobWltZVR5cGUpCiAgICAgLCBtX3RleHRFbmNvZGluZyh0ZXh0RW5jb2RpbmcpCkBAIC00
Miw3ICs0Miw3IEBAIGlubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8
U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsCiB7CiB9CiAKLVJlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCitSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVz
b3VyY2U6OmNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5j
b2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAt
NTQsNyArNTQsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNy
ZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbgogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEFyY2hpdmVSZXNvdXJjZShkYXRhLnJlbGVhc2VOb25OdWxsKCksIHVybCwgbWltZVR5
cGUsIHRleHRFbmNvZGluZywgZnJhbWVOYW1lLCByZXNwb25zZSkpOwogfQogCi1SZWZQdHI8QXJj
aGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKK1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUo
ZGF0YSksIHVybCwgcmVzcG9uc2UubWltZVR5cGUoKSwgcmVzcG9uc2UudGV4dEVuY29kaW5nTmFt
ZSgpLCBTdHJpbmcoKSwgcmVzcG9uc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaAppbmRleCAyMDllOTcxN2FlYjA5MzYwZGIzOTI3ZTZl
ZmExZTViZjFjMmM5N2NhLi4wNTQ4ZWY3MjFlZmQyN2MwMGNlOTNkMTIyNzBlY2VjNDZjMDJhZjk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2Uu
aApAQCAtMzQsOCArMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFyY2hpdmVS
ZXNvdXJjZSA6IHB1YmxpYyBTdWJzdGl0dXRlUmVzb3VyY2UgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwg
Y29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgVVJMJiwKKyAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3Jl
YXRlKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgVVJMJiwKICAgICAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLAogICAgICAgICBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiA9IFJlc291cmNlUmVzcG9uc2UoKSk7CiAKQEAgLTQ3LDcgKzQ3LDcgQEAg
cHVibGljOgogICAgIGJvb2wgc2hvdWxkSWdub3JlV2hlblVuYXJjaGl2aW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaG91bGRJZ25vcmVXaGVuVW5hcmNoaXZpbmc7IH0KIAogcHJpdmF0ZToKLSAgICBB
cmNoaXZlUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYg
ZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgQXJjaGl2ZVJlc291cmNl
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIFN0cmluZyBtX21pbWVUeXBl
OwogICAgIFN0cmluZyBtX3RleHRFbmNvZGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZGU3ZGFkZGRhYzIy
MTJmNmQ1ZTBjYzA5MWQ0ZTQxNjc3YTNmMDE1ZC4uOTVhOGU5NmI0NDljYjNjZTVjN2UxZjg3NDEw
ZTg1MGQ0ZDI5MmE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVz
ZW50YXRpb24oQXIKICAgICAvLyBSZXNvdXJjZSBkYXRhIGNhbiBiZSBlbXB0eSwgYnV0IG11c3Qg
YmUgcmVwcmVzZW50ZWQgYnkgYW4gZW1wdHkgQ0ZEYXRhUmVmCiAgICAgYXV0byYgZGF0YSA9IHJl
c291cmNlLT5kYXRhKCk7CiAKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3Qu
Z2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEuY3JlYXRlQ0ZEYXRh
KCkuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwg
TGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVDRkRhdGEoKS5nZXQoKSk7CiAKICAgICAvLyBSZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51
bGwKICAgICBpZiAoYXV0byBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVD
RlN0cmluZygpKQpAQCAtMTE3LDkgKzExNyw5IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAg
ICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgZm9yIHRoZSBtYWluIHJl
c291cmNlCiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewogICAgICAgICBpZiAoYXV0byByZXNv
dXJjZVJlc3BvbnNlRGF0YSA9IGNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKHJlc291
cmNlLT5yZXNwb25zZSgpKSkKLSAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3Bl
cnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291
cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsgICAgCisgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNl
S2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7CiAgICAgfQotICAgIAorCiAgICAgcmV0
dXJuIHByb3BlcnR5TGlzdDsKIH0KIApAQCAtMjE1LDE3ICsyMTUsMTcgQEAgUmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5
UmVmIGRpY3Rpb24KICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUg
LSBSZXNvdXJjZSByZXNwb25zZSBkYXRhIGlzIG5vdCBvZiB0eXBlIENGRGF0YSwgY2Fubm90IGNy
ZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgfQotICAgICAgICAKKwogICAgICAgICBhdXRvIHJlc291cmNlUmVzcG9uc2VWZXJzaW9u
ID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25h
cnksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlVmVyc2lvbktleSkpOwogICAgICAg
ICBpZiAocmVzb3VyY2VSZXNwb25zZVZlcnNpb24gJiYgQ0ZHZXRUeXBlSUQocmVzb3VyY2VSZXNw
b25zZVZlcnNpb24pICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKICAgICAgICAgICAgIExPRyhB
cmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSB2ZXJzaW9uIGlz
IG5vdCBvZiB0eXBlIENGU3RyaW5nLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAg
ICAgIHJlc3BvbnNlID0gY3JlYXRlUmVzb3VyY2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRh
KHJlc291cmNlUmVzcG9uc2VEYXRhLCByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbik7CiAgICAgfQog
Ci0gICAgcmV0dXJuIEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHJlc291cmNlRGF0YSksIFVSTChVUkwoKSwgdXJsKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZywg
ZnJhbWVOYW1lLCByZXNwb25zZSk7CisgICAgcmV0dXJuIEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRl
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpLCBVUkwoVVJMKCks
IHVybCksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwgcmVzcG9uc2UpOwogfQog
CiBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCkKQEAgLTI0
OCwyMyArMjQ4LDIzIEBAIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGUoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiBtYWluUmVzb3VyCiAgICAgcmV0dXJuIGFyY2hp
dmU7CiB9CiAKLVJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoU2hhcmVkQnVmZmVyJiBkYXRhKQorUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIHJl
dHVybiBjcmVhdGUoVVJMKCksIGRhdGEpOwogfQogCi1SZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YSkK
K1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3Qg
VVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBMT0coQXJjaGl2ZXMs
ICJMZWdhY3lXZWJBcmNoaXZlIC0gQ3JlYXRpbmcgZnJvbSByYXcgZGF0YSIpOwotICAgIAorCiAg
ICAgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBjcmVhdGUoKTsKLSAgICAgICAgCi0g
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5jcmVhdGVDRkRhdGEoKTsKKwor
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlQ0ZEYXRhKCk7CiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICAKKwogICAgIENGRXJyb3JSZWYgZXJyb3IgPSBudWxscHRyOwotICAgIAorCiAg
ICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcGxpc3QgPSBhZG9wdENGKHN0YXRpY19jYXN0
PENGRGljdGlvbmFyeVJlZj4oQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YSgwLCBjZkRhdGEu
Z2V0KCksIGtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSwgMCwgJmVycm9yKSkpOwogICAgIGlmICgh
cGxpc3QpIHsKICNpZm5kZWYgTkRFQlVHCkBAIC0yNzYsMTIgKzI3NiwxMiBAQCBSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJl
ZEJ1ZmZlciYgZGF0YQogICAgICAgICAgICAgQ0ZSZWxlYXNlKGVycm9yKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKENGR2V0VHlwZUlEKHBsaXN0Lmdl
dCgpKSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkgewogICAgICAgICBMT0coQXJjaGl2ZXMs
ICJMZWdhY3lXZWJBcmNoaXZlIC0gQXJjaGl2ZSBwcm9wZXJ0eSBsaXN0IGlzIG5vdCB0aGUgZXhw
ZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFhcmNoaXZlLT5leHRy
YWN0KHBsaXN0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI5NSw3ICsy
OTUsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRp
Y3Rpb25hcnkpCiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBOdWxs
IHJvb3QgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwogICAgIENGRGljdGlvbmFyeVJlZiBtYWlu
UmVzb3VyY2VEaWN0ID0gc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkRpY3Rpb25hcnlH
ZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlTWFpblJlc291cmNlS2V5KSk7CiAg
ICAgaWYgKCFtYWluUmVzb3VyY2VEaWN0KSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2Fj
eVdlYkFyY2hpdmUgLSBObyBtYWluIHJlc291cmNlIGluIGFyY2hpdmUsIGFib3J0aW5nIGludmFs
aWQgV2ViQXJjaGl2ZSIpOwpAQCAtMzMzLDcgKzMzMyw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2
ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBM
T0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3VicmVzb3VyY2UgaXMgbm90IGV4cGVj
dGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAg
ICAgICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3VyY2Uoc3VicmVzb3Vy
Y2VEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJyZXNvdXJjZShzdWJyZXNvdXJjZS5yZWxl
YXNlTm9uTnVsbCgpKTsKICAgICAgICAgfQpAQCAtMzUzLDcgKzM1Myw3IEBAIGJvb2wgTGVnYWN5
V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAg
ICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3ViZnJhbWUgYXJyYXkg
aXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZl
Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgCisKICAgICAgICAgICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0gY3JlYXRlKCk7CiAg
ICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5leHRyYWN0KHN1YmZyYW1lRGljdCkpCiAg
ICAgICAgICAgICAgICAgYWRkU3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3ViZnJhbWVBcmNoaXZl
KSk7CkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENG
RGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywg
IkxlZ2FjeVdlYkFyY2hpdmUgLSBJbnZhbGlkIHN1YmZyYW1lIGFyY2hpdmUgc2tpcHBlZCIpOwog
ICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTUwNiw3
ICs1MDYsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcgogewogICAgIGF1dG8mIHJlc3BvbnNl
ID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKTsKICAgICBVUkwg
cmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKLSAgICAKKwogICAgIC8vIGl0J3MgcG9zc2li
bGUgdG8gaGF2ZSBhIHJlc3BvbnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAgIC8vIDxyZGFyOi8v
cHJvYmxlbS81NDU0OTM1PgogICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwoKSkKQEAgLTYwNSw3
ICs2MDUsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAKICAgICBpZiAoIWRvY3VtZW50LT5pc0Zy
YW1lU2V0KCkpCiAgICAgICAgIHJldHVybiBhcmNoaXZlOwotICAgICAgICAKKwogICAgIC8vIFdy
YXAgdGhlIGZyYW1lc2V0IGRvY3VtZW50IGluIGFuIGlmcmFtZSBzbyBpdCBjYW4gYmUgcGFzdGVk
IGludG8KICAgICAvLyBhbm90aGVyIGRvY3VtZW50ICh3aGljaCB3aWxsIGhhdmUgYSBib2R5IG9y
IGZyYW1lc2V0IG9mIGl0cyBvd24pLiAKICAgICBTdHJpbmcgaWZyYW1lTWFya3VwID0gIjxpZnJh
bWUgZnJhbWVib3JkZXI9XCJub1wiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdpbmhlaWdodD1cIjBc
IiB3aWR0aD1cIjk4JSVcIiBoZWlnaHQ9XCI5OCUlXCIgc3JjPVwiIiArIGZyYW1lLT5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygpICsgIlwiPjwvaWZy
YW1lPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmgKaW5kZXggZDA5ZWM5Zjc1YWJhMTM2YTg2MzM5ZWI0ZDg2YWJkODI3N2M0ZmYw
NC4uNWEwN2IxMGI0YmU2Zjg2MjAxMWE3ODJhN2RlZDIzNjc1OTI0MzYyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaApAQCAt
NDEsOCArNDEsOCBAQCBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiBjbGFzcyBMZWdhY3lXZWJBcmNoaXZl
IGZpbmFsIDogcHVibGljIEFyY2hpdmUgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoU2hhcmVkQnVmZmVyJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUo
Y29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRl
KGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShSZWY8QXJjaGl2ZVJlc291cmNl
PiYmIG1haW5SZXNvdXJjZSwgVmVjdG9yPFJlZjxBcmNoaXZlUmVzb3VyY2U+PiYmIHN1YnJlc291
cmNlcywgVmVjdG9yPFJlZjxMZWdhY3lXZWJBcmNoaXZlPj4mJiBzdWJmcmFtZUFyY2hpdmVzKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0
ZShOb2RlJiwgRnVuY3Rpb248Ym9vbChGcmFtZSYpPiYmIGZyYW1lRmlsdGVyID0geyB9KTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShG
cmFtZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5jcHAKaW5kZXggYWNmYmJiNzAyMDIyZDA2YWZlNjIwMDQwNDg3ZmQzNGQ5MjFk
NzI3Yy4uYWE1M2NjNWNmZmQwNmVjYzBkZmM3OTRiOTU0NWRjMzNkNDgyMjY2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3Bw
CkBAIC0xMDYsNyArMTA2LDcgQEAgUmVmPE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVh
dGUoKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1IVE1MQXJjaGl2ZSk7CiB9CiAKLVJlZlB0
cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFy
ZWRCdWZmZXImIGRhdGEpCitSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0
ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAv
LyBGb3Igc2VjdXJpdHkgcmVhc29ucyB3ZSBvbmx5IGxvYWQgTUhUTUwgcGFnZXMgZnJvbSBsb2Nh
bCBVUkxzLgogICAgIGlmICghTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2No
ZW1lQXNMb2NhbCh1cmwucHJvdG9jb2woKS50b1N0cmluZygpKSkKQEAgLTEzMCw3ICsxMzAsNyBA
QCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVy
bCwgU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIHJldHVybiBtYWluQXJjaGl2ZTsKIH0KIAotUmVm
PFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdl
KQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRN
TERhdGEoUGFnZSogcGFnZSkKIHsKICAgICBWZWN0b3I8UGFnZVNlcmlhbGl6ZXI6OlJlc291cmNl
PiByZXNvdXJjZXM7CiAgICAgUGFnZVNlcmlhbGl6ZXIgcGFnZVNlcmlhbGl6ZXIocmVzb3VyY2Vz
KTsKQEAgLTE2Miw3ICsxNjIsNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6Omdl
bmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgLy8gV2UgdXNlIHV0ZjgoKSBiZWxvdyBp
bnN0ZWFkIG9mIGFzY2lpKCkgYXMgYXNjaWkoKSByZXBsYWNlcyBDUkxGcyB3aXRoID8/ICh3ZSBz
dGlsbCBvbmx5IGhhdmUgcHV0IEFTQ0lJIGNoYXJhY3RlcnMgaW4gaXQpLgogICAgIEFTU0VSVChz
dHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkuaXNBbGxBU0NJSSgpKTsKICAgICBDU3RyaW5nIGFzY2lp
U3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICBhdXRvIG1odG1s
RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgYXV0byBtaHRtbERhdGEgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2Np
aVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYg
cmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgKaW5kZXggM2QyZGI3Yzk2MDAyZWJlNjg0YjJiZWY4
ZjFlYTllMmU5Nzk0YTU4OS4uMmRmZTg3ZTgyZTdhNGRjZTBmMzQxYzM2MTk0M2M5OTAyMDVjOGRi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxB
cmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxB
cmNoaXZlLmgKQEAgLTM4LDE0ICszOCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IE1IVE1MUGFyc2VyOwogY2xhc3MgUGFnZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1IVE1MQXJjaGl2ZSBmaW5hbCA6IHB1Ymxp
YyBBcmNoaXZlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1IVE1MQXJjaGl2ZT4gY3JlYXRl
KCk7Ci0gICAgc3RhdGljIFJlZlB0cjxNSFRNTEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBT
aGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNv
bnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7CisgICAgc3RhdGljIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7CiAKICAgICB2aXJ0
dWFsIH5NSFRNTEFyY2hpdmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4IGYxYjkwMWRkMDIwM2RjYWM5NGRmNmQw
ZWFlNGNiMmQwYmRiODAxNWUuLjdiMDUxNTFkMzY1N2I0MGQyN2U3YTUxYzFkM2FmMDE0ZTQ3NWVm
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRN
TFBhcnNlci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIGJvb2wgc2tpcExpbmVzVW50aWxC
b3VuZGFyeUZvdW5kKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyJiBsaW5lUmVhZGVyLCBjb24KICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLU1IVE1MUGFyc2VyOjpNSFRNTFBhcnNlcihTaGFyZWRCdWZm
ZXIqIGRhdGEpCitNSFRNTFBhcnNlcjo6TUhUTUxQYXJzZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogZGF0YSkKICAgICA6IG1fbGluZVJlYWRlcihkYXRhLCAiXHJcbiIpCiB7CiB9CkBAIC0xNDAs
NyArMTQwLDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4
dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKIHsKICAgICBBU1NFUlQoZW5kT2ZQ
YXJ0Qm91bmRhcnkuaXNFbXB0eSgpID09IGVuZE9mRG9jdW1lbnRCb3VuZGFyeS5pc0VtcHR5KCkp
OwogCi0gICAgYXV0byBjb250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBhdXRv
IGNvbnRlbnQgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBjb25zdCBi
b29sIGNoZWNrQm91bmRhcnkgPSAhZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpOwogICAgIGJv
b2wgZW5kT2ZQYXJ0UmVhY2hlZCA9IGZhbHNlOwogICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRU
cmFuc2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6QmluYXJ5KSB7CkBAIC0xOTMsOSArMTkz
LDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0
KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGE7CisgICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQtPm1ha2VDb250
aWd1b3VzKCk7CiAgICAgc3dpdGNoIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5n
KCkpIHsKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJhc2U2NDogewotICAgICAgICBhdXRvIGRlY29k
ZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsK
KyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250aWd1b3VzQ29udGVu
dC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAgICBpZiAoIWRlY29kZWREYXRhKSB7
CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgYmFzZTY0IGNvbnRlbnQgZm9yIE1IVE1M
IHBhcnQuIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNCwxNyArMjA1LDE3
IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNv
bnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFBy
aW50YWJsZURlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAg
IGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwg
Y29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpT
ZXZlbkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBl
bmQoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhLmFwcGVu
ZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOwogICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5jb2Rpbmcg
Zm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBh
dXRvIGNvbnRlbnRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsK
KyAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShkYXRhKSk7CiAgICAgLy8gRklYTUU6IHRoZSBVUkwgaW4gdGhlIE1JTUUgaGVhZGVy
IGNvdWxkIGJlIHJlbGF0aXZlLCB3ZSBzaG91bGQgcmVzb2x2ZSBpdCBpZiBpdCBpcy4KICAgICAv
LyBUaGUgc3BlY3MgbWVudGlvbnMgNSB3YXlzIHRvIHJlc29sdmUgYSBVUkw6IGh0dHA6Ly90b29s
cy5pZXRmLm9yZy9odG1sL3JmYzI1NTcjc2VjdGlvbi01CiAgICAgLy8gSUUgYW5kIEZpcmVmb3gg
KFVOTWh0KSBzZWVtIHRvIGdlbmVyYXRlIG9ubHkgYWJzb2x1dGUgVVJMcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oCmluZGV4IDFlOWJk
NGQ3NzY3ZWUzOTFhMDAyMmY3MTc0OGYwMGI4NWM4MWIyNWYuLjBkNjA0MzQzZjNkN2FkMTc4Y2My
MjAwM2M5NzljMjJlNTBhM2I5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaApAQCAtNDIsMTEgKzQyLDExIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKIGNsYXNzIE1IVE1MQXJjaGl2ZTsKIGNs
YXNzIE1JTUVIZWFkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBNSFRNTFBhcnNlciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQg
TUhUTUxQYXJzZXIoU2hhcmVkQnVmZmVyKik7CisgICAgZXhwbGljaXQgTUhUTUxQYXJzZXIoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciopOwogCiAgICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gcGFyc2VB
cmNoaXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWViNjgyMDdmYzQ5YTk1Y2Mx
YzNlYTFkNGE5ZWJmZDkyNzA0Li5lMWE4NzUxNmJkOGQ1YjhmMjRhZjZhNWI5OTBlMjE4NTM0N2U3
NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGlj
YXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MCwxMiArNDAsMTYgQEAgQ2FjaGVkQXBwbGlj
YXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNoZWRSZXNvdXJjZVJl
cXVlc3QmJiByZXEKIHsKIH0KIAotdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQordm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRh
dGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0ID0g
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Cisg
ICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0g
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNv
ZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0
YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCmluZGV4IDA3ZjJhMDc5YzU2NGVlZmZiNjk3
YzM3Yzc4NTY1ZTFlYThkOWFlNWUuLjM3OThhOWI0ZDkwMTNjZmRlYTZmNTZmYmRmMDAxNWFmODk0
NzU3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3Rk
OjpvcHRpb25hbDxzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdD4gcHJvY2Vzcyhjb25zdCBVUkwm
IG1hbmlmZXN0VVJMLCBjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBEb2N1bWVudCogPSBudWxscHRy
KTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5n
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VE
ZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLnB0cigpOyB9CiAgICAg
dm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5j
b2RpbmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZjNjFlNjM3NDJmNzRj
YzZhMGJjZjAwMGJhOWIxNzZmLi4zOGEyZTE3ZjBkMDZjOGFjOThkZTI0YjFlNTJiOGU2MGU5MjQx
MjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHls
ZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQsCiAg
ICAgICAgIHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNoZSB0
aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2UgcXVp
dGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2go
bV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5k
ZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5z
aXplKCkpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShj
b25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05NywxMyArOTcsMTcgQEAgdm9pZCBD
YWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQubV9wYXJzZWRT
dHlsZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEt
PnNpemUoKSA6IDApOwotICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5j
b2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgp
Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRh
KSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNl
dEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIC8vIERlY29kZSB0aGUgZGF0YSB0
byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1
cmluZyBjaGVja05vdGlmeSgpCisgICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUo
MCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJp
Y3MpOwogICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkgdG8g
YmUgbmVlZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgK
aW5kZXggNWQ0ZGQzZGM3ZTM1M2VlM2NiMmZiOTNmMjc4ZDI1NzliOGQ5YTdhMS4uZTY1NWM2OWUz
ZWRiNjA5NTAyMzljY2U0NTQ1ZjA5NmI1MjY1NmRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCkBAIC01NSw3ICs1NSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBT
dHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNv
ZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVy
LmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7
CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0Qm9k
eURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4MjM1MWQ3ZjY2MjVi
Y2UyNzFkMDc3NjMzYWU5NC4uOWUxYmRhMmY0MDZlODY1NmI5ZWEyZDE4M2I0ZjcxZTZlNDc4OTYz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjQs
MTAgKzY0LDE1IEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNl
Q2xpZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRpY19jYXN0PENhY2hlZEZvbnRDbGllbnQmPihj
bGllbnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCit2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAg
IG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRh
LT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5t
YWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5j
b2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90
aWZ5KG1ldHJpY3MpOwogfQpAQCAtOTAsNyArOTUsNyBAQCBTdHJpbmcgQ2FjaGVkRm9udDo6Y2Fs
Y3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHVybCgpLmZyYWdtZW50
SWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CiB9CiAKLWJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3Vz
dG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQorYm9vbCBDYWNoZWRGb250OjplbnN1cmVD
dXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICgh
bV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFlcnJvck9jY3VycmVkKCkgJiYgIWlzTG9hZGlu
ZygpICYmIGRhdGEpIHsKICAgICAgICAgYm9vbCB3cmFwcGluZzsKQEAgLTEwMyw5ICsxMDgsOSBA
QCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0
YSkKICAgICByZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhLmdldCgpOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3Vz
dG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xs
ZWN0aW9uLCBib29sJiB3cmFwcGluZykKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFw
cGluZykKIHsKLSAgICBSZWZQdHIgYnVmZmVyIHsgJmJ5dGVzIH07CisgICAgUmVmUHRyIGJ1ZmZl
ciA9IHsgJmJ5dGVzIH07CiAgICAgd3JhcHBpbmcgPSAhY29udmVydFdPRkZUb1NmbnRJZk5lY2Vz
c2FyeShidWZmZXIpOwogICAgIHJldHVybiBidWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKCpidWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24pIDogbnVsbHB0cjsKIH0KQEAgLTEzNSw3
ICsxNDAsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpCiB7CiAgICAgaWYgKGlzTG9hZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAg
CisKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRGb250Q2xpZW50PiB3YWxr
ZXIobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkRm9udENsaWVudCogY2xpZW50ID0gd2Fs
a2VyLm5leHQoKSkKICAgICAgICAgY2xpZW50LT5mb250TG9hZGVkKCp0aGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IGNlYmRjNTU3ZjEzZmM0YWZkODI3
NTI5Nzc0YWZkOGVjNGJlZjQyMTAuLjA4ZGQ3ZTk3MDNmODU5YTIwMGUyNTkxN2VjMDhkZDJkZWRh
N2IyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNTQs
NyArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICFtX2xvYWRJbml0aWF0ZWQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBlbnN1
cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwotICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9u
dERhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29s
JiB3cmFwcGluZyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29u
c3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CiAgICAgc3RhdGlj
IEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSYsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFs
aWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgUmVmUHRyPEZv
bnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYg
cmVtb3RlVVJJLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25z
dCBGb250Q3JlYXRpb25Db250ZXh0Jik7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIHByb3Rl
Y3RlZDoKICAgICBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRD
cmVhdGlvbkNvbnRleHQmKTsKIAotICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhKTsKKyAgICBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqIGRhdGEpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBjYWxjdWxhdGVJdGVt
SW5Db2xsZWN0aW9uKCkgY29uc3Q7CkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgTk9f
UkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVz
b3VyY2UmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICB2b2lkIGRpZEFk
ZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcios
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhbGxDbGll
bnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcAppbmRleCBiMTU5ZjI5ZWU5MGZlM2RlMDE5YzExNDliZGE2OTRlMGU2ZjZi
NTQyLi5jNWJmNTZjMGY2NjFmZmM2MmUwODIyNDQ2ZjIwZGE5MDZhZTZmOTFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ2OCw5ICs0NjgsOSBA
QCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAgICAgbV91cGRhdGVJbWFn
ZURhdGFDb3VudCA9IDA7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVy
bmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcklu
dGVybmFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgbV9kYXRh
ID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIHNldEVu
Y29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKICAgICBjcmVhdGVJbWFnZSgpOwogCkBAIC01MjMs
MTIgKzUyMywxNCBAQCBib29sIENhY2hlZEltYWdlOjpzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0
YSgpIGNvbnN0CiAgICAgcmV0dXJuIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fbGFzdFVwZGF0
ZUltYWdlRGF0YVRpbWUpLnNlY29uZHMoKSA8IHVwZGF0ZUltYWdlRGF0YUJhY2tvZmZJbnRlcnZh
bHNbaW50ZXJ2YWxdOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29u
dmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK1JlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRh
IHx8ICFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBp
ZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0
UmVzb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYg
UExBVEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHRE
YXRhVG9QREYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2Ny
aXB0RGF0YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQo
KSk7CiAjZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2Fu
Y2VsZWQgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlw
dCB0byBQREYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01NTMsNyArNTU1LDcgQEAg
RW5jb2RlZERhdGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0YShib29sIGFsbERh
dGFSZWNlaXZlZCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRl
QnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJU
KGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRh
KTsKICAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChkYXRhKTsKQEAgLTU2MywxMSArNTY1LDExIEBA
IHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiB2b2lk
IENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJp
bmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7Ci0gICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7CisgICAgdXBkYXRlQnVmZmVySW50ZXJu
YWwoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkpOwogICAgIENh
Y2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVk
SW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoZGF0YSk7CiAg
ICAgaWYgKG1fZGF0YSkgewpAQCAtNTkzLDcgKzU5NSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1lCiB2b2lkIENhY2hlZEltYWdlOjpkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKQog
ewogICAgIGlmIChtX2ltYWdlKSB7Ci0gICAgICAgIC8vIExldCB0aGUgSW1hZ2Uga25vdyB0aGF0
IHRoZSBTaGFyZWRCdWZmZXIgaGFzIGJlZW4gcmVqaWdnZWQsIHNvIGl0IGNhbiBsZXQgZ28gb2Yg
YW55IHJlZmVyZW5jZXMgdG8gdGhlIGhlYXAtYWxsb2NhdGVkIHJlc291cmNlIGJ1ZmZlci4KKyAg
ICAgICAgLy8gTGV0IHRoZSBJbWFnZSBrbm93IHRoYXQgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIgaGFzIGJlZW4gcmVqaWdnZWQsIHNvIGl0IGNhbiBsZXQgZ28gb2YgYW55IHJlZmVyZW5jZXMg
dG8gdGhlIGhlYXAtYWxsb2NhdGVkIHJlc291cmNlIGJ1ZmZlci4KICAgICAgICAgLy8gRklYTUUo
cmRhcjovL3Byb2JsZW0vMjQyNzU2MTcpOiBJdCB3b3VsZCBiZSBiZXR0ZXIgaWYgd2UgY291bGQg
c29tZWhvdyB0ZWxsIHRoZSBJbWFnZSdzIGRlY29kZXIgdG8gc3dhcCBpbiB0aGUgbmV3IGNvbnRl
bnRzIHdpdGhvdXQgZGVzdHJveWluZyBhbnl0aGluZy4KICAgICAgICAgbV9pbWFnZS0+ZGVzdHJv
eURlY29kZWREYXRhKHRydWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmgKaW5kZXggZTM4OTYyYTBkY2FmYmNlZjYzMWMxNGU2M2ZlYjg1YmEwNTUyMDNm
NC4uMzNiN2Q0YTllODlmZjA5M2E1YTdlMDMzZDc5NjdmZDg5YzAxNTM2MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTY5LDggKzY5LDggQEAgcHVibGlj
OgogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9pbWFn
ZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZVdpZHRoKCk7IH0KICAgICBib29sIGltYWdlSGFzUmVs
YXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0
aXZlSGVpZ2h0KCk7IH0KIAotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5n
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKIAogICAgIGVudW0gU2l6ZVR5cGUgewogICAgICAgICBVc2VkU2l6ZSwKQEAg
LTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkg
b3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1
ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNv
bnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3Rh
dHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRh
dGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CkBA
IC0xNjksNyArMTY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3Qg
SW1hZ2UmLCBjb25zdCBJbnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0
ZShjb25zdCBJbWFnZSYpOwogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRC
dWZmZXImKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRz
KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuY3BwCmluZGV4IDkyYjA4MzY5NzU4ODg0NDA5MTkzOWUzZWVkNzlkNzdmMTgz
OTU2MmYuLjg5NWRiMTE1OGI2YjhjOGZiZjdiMTBiNDNiNjE0ZWRhOTYwMjFjZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAt
NDgsNyArNDgsNyBAQCBDYWNoZWRSYXdSZXNvdXJjZTo6Q2FjaGVkUmF3UmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgVHlwZSB0eXBlLAogICAgIEFTU0VSVChpc01haW5P
ck1lZGlhT3JJY29uT3JSYXdSZXNvdXJjZSgpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxTaGFyZWRC
dWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0
YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2hh
cmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRh
bERhdGFDaHVuayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewog
ICAgIHNpemVfdCBwcmV2aW91c0RhdGFMZW5ndGggPSBlbmNvZGVkU2l6ZSgpOwogICAgIGlmICgh
ZGF0YSB8fCBkYXRhLT5zaXplKCkgPD0gcHJldmlvdXNEYXRhTGVuZ3RoKQpAQCAtNTYsNyArNTYs
NyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJj
ZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQwogICAgIHJldHVybiBkYXRhLT5nZXRTb21lRGF0
YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRh
dGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBk
YXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8g
U2tpcCBhbnkgdXBkYXRlQnVmZmVycyB0cmlnZ2VyZWQgZnJvbSBuZXN0ZWQgcnVubG9vcHMuIFdl
J2xsIGhhdmUgdGhlIGNvbXBsZXRlIGJ1ZmZlciBpbiBmaW5pc2hMb2FkaW5nLgogICAgIGlmICht
X2luSW5jcmVtZW50YWxEYXRhTm90aWZ5KQpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIENhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogCiAgICAgQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAg
ICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpC
dWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VD
b250aWd1b3VzKCk7CiAKICAgICBhdXRvIHByZXZpb3VzRGF0YVNpemUgPSBlbmNvZGVkU2l6ZSgp
OwogICAgIHdoaWxlIChkYXRhLnNpemUoKSA+IHByZXZpb3VzRGF0YVNpemUpIHsKQEAgLTk2LDcg
Kzk2LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEo
ZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
K3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewog
ICAgIGlmIChtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5KSB7CiAgICAgICAgIC8vIFdlIG1heSBn
ZXQgaGVyZSBzeW5jaHJvbm91c2x5IGZyb20gdXBkYXRlQnVmZmVyKCkgaWYgdGhlIGNhbGxiYWNr
IHRoZXJlIGVuZHMgdXAgc3Bpbm5pbmcgYSBydW5sb29wLgpAQCAtMTA3LDEyICsxMDcsMTQgQEAg
dm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
YXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBEYXRhQnVmZmVyaW5nUG9saWN5
IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRhQnVmZmVyaW5nUG9saWN5KCk7CiAgICAg
aWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0
YSkgewotICAgICAgICBtX2RhdGEgPSBkYXRhOwotCi0gICAgICAgIGlmIChhdXRvIGluY3JlbWVu
dGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7Ci0gICAgICAg
ICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAgICAgICAgICAgbm90aWZ5Q2xp
ZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxE
YXRhLT5zaXplKCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChkYXRhKSB7CisgICAgICAgICAg
ICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgaWYgKGF1dG8g
aW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsK
KyAgICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAg
ICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRh
KCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0KIAogI2lmIFVTRShRVUlD
S19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuaAppbmRleCA4NGUwZDg0NGQ1NzEwOTk1M2FlNmJmZjY1NTY1OTk1M2UyOGJhNjliLi5hNzg2
NWY4YWQxNzhhZWZiMzIyMGE1NmRjZmYxOTU5OTNjZjk1YWU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtNTEsOSArNTEsOSBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VD
bGllbnQmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBmaW5h
bDsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikg
ZmluYWw7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQo
KSBvdmVycmlkZTsKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN3aXRjaENs
aWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UoKSBvdmVycmlkZTsKICAgICBib29sIG1heVRyeVJl
cGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYWxsb3dFbmNvZGVk
RGF0YVJlcGxhY2VtZW50OyB9CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFW
aWV3PiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBTaGFyZWRCdWZmZXIqKSBj
b25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBjYWxjdWxhdGVJ
bmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKikgY29uc3Q7
CiAgICAgdm9pZCBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCiAjaWYgVVNFKFFVSUNLX0xPT0spCkBAIC05Miw3
ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZGlyZWN0UGFpciwgMCwgQ3Jhc2hPbk92
ZXJmbG93LCAwPiBtX3JlZGlyZWN0Q2hhaW47CiAKICAgICBzdHJ1Y3QgRGVsYXllZEZpbmlzaExv
YWRpbmcgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJl
ZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBz
dGQ6Om9wdGlvbmFsPERlbGF5ZWRGaW5pc2hMb2FkaW5nPiBtX2RlbGF5ZWRGaW5pc2hMb2FkaW5n
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CmluZGV4IDNhZThiYjY4ZDI1Y2RkZDE4MDIwOTIyZjVlZGIyNGQ0YjkxMjAwMDIuLjk4Y2MyMmYy
MjhjMmE2YTU1ZTkwYzYzMjk5YTRkMTlmN2VlMDU4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQg
Q2FjaGVkUmVzb3VyY2U6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKICAgICAgICAgY2xpZW50LT5ub3RpZnlGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7CiB9
CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKQordm9p
ZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6QnVmZmVyRGF0YSk7CiB9CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQpCiAgICAgQVNTRVJU
KGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZl
ckRhdGEpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkUmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsK
ICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKQEAgLTkxMyw3ICs5MTMsNyBAQCB2b2lkIENhY2hl
ZFJlc291cmNlOjpDYWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxF
X1JFU09VUkNFKQogCi12b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEo
U2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNl
RW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlm
ICghbV9kYXRhKQogICAgICAgICByZXR1cm47CkBAIC05MjcsOCArOTI3LDcgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVy
KQogICAgIGlmICgqbV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9kYXRhLT5jbGVhcigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9k
YXRhID0gUmVmIHsgbmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRl
bnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmgKaW5kZXggMzk2MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uOTkxMGVh
NGM5NDU3ODY1NmVkZWI2NTM5MGYzODZhMGVhYWVkZjA2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgQ29v
a2llSmFyOwogY2xhc3MgTWVtb3J5Q2FjaGU7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBj
bGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFRleHRSZXNv
dXJjZURlY29kZXI7CiAKQEAgLTExMiw5ICsxMTIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGVu
Y29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRl
eHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBu
dWxscHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKTsK
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5p
c2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1
cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNlRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CkBAIC0yMTMsNyArMjEzLDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBjbGVhckxvYWRlcigpOwogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7CkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50ICovLCB1bnNp
Z25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRlc1RvQmVTZW50ICovKSB7IH0KIAogI2lmIEVOQUJM
RShTSEFSRUFCTEVfUkVTT1VSQ0UpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNl
RW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlS
ZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogI2VuZGlmCiAKICAg
ICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3Vy
Y2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291
cmNlTG9hZGVyOyB9CkBAIC0zMzYsNyArMzM2LDcgQEAgcHJvdGVjdGVkOgogICAgIEhhc2hDb3Vu
dGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBOZWVkZWQgYnkgUGlu
ZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gbV9kYXRhOwogCiBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0RGVjb2Rl
ZEFjY2Vzc1RpbWU7IC8vIFVzZWQgYXMgYSAidGhyYXNoIGd1YXJkIiBpbiB0aGUgY2FjaGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmlu
ZGV4IDdkYTE0ODUxYTcwNzg0YWFiZTk4MzliNzA2YTBiMWIzMzFmMmM4MzkuLmRiNDMxNjA3YWU1
NjM4MzAzODAwZGQyNTljMTAzNGNkMDkwZmNmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTIsMTIgKzUyLDEyIEBAIFN0
cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAogICAgIHJldHVybiBtX2Rl
Y29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFNWR0RvY3VtZW50Ojpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQordm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBj
cmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhl
IHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNy
ZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAgICAgbV9k
b2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNv
ZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEt
PnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRh
LCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmgKaW5kZXggZThjMTVmMzYwZmM5MWFjOGIzNGQzOTYyOTVjNTNkM2M3ZjE0N2Vh
YS4uNDQ1ZTRmOWY0MmMzYzI3NDA3OTc2YTY0ZTkxNTQwN2Y4YjUzNGQwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKQEAgLTQzLDcgKzQz
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJy
aWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IFRl
eHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBm
aW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9kb2N1
bWVudDsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmluZGV4IGE4ZWY1NzZi
YjY5MzkzM2EyMjM0Njk1NTU3NTZiMzY2N2U0ODYzMmUuLjljZjA0MzcxOTRhOGEyZmNhNWU1MjVj
N2JmZjlmZThlOThhNTBjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRm9udC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1
cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAKICAgICAgICAg
ICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RGlzYWJsZUFzc2VydGlvbnNJblNjb3BlIGRpc2Fi
bGVkU2NvcGU7CiAKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVu
dChkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkp
KTsKKyAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVudChkZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRh
LT5zaXplKCkpKTsKICAgICAgICAgICAgIHNhd0Vycm9yID0gZGVjb2Rlci0+c2F3RXJyb3IoKTsK
ICAgICAgICAgfQogCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogICAgICAgICBpZiAo
IW1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCB8fCAhZmlyc3RGb250RmFjZShyZW1vdGVVUkkpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoYXV0byBjb252ZXJ0ZWRGb250
ID0gY29udmVydFNWR1RvT1RGRm9udCgqbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50KSkKLSAgICAg
ICAgICAgIG1fY29udmVydGVkRm9udCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29u
dmVydGVkRm9udC52YWx1ZSgpKSk7CisgICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkp
KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQgPSBu
dWxscHRyOwogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50ID0gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCmluZGV4IDM1M2Qz
ZGU2M2IwNjI4NjEzYWJhZjc3N2ZlYjI1M2M1YjYyNDkwYzYuLmExNWVhZDBlMTY0MDkwMjdlZjky
MDRlYjkzM2I0ZjA1NGMzODU4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIFNWR0ZvbnRFbGVt
ZW50KiBtYXliZUluaXRpYWxpemVFeHRlcm5hbFNWR0ZvbnRFbGVtZW50KGNvbnN0IEF0b21TdHJp
bmcmIHJlbW90ZVVSSSk7CiAgICAgU1ZHRm9udEZhY2VFbGVtZW50KiBmaXJzdEZvbnRGYWNlKGNv
bnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X2NvbnZlcnRlZEZvbnQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29u
dmVydGVkRm9udDsKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZXh0ZXJuYWxTVkdEb2N1bWVu
dDsKICAgICBTVkdGb250RWxlbWVudCogbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50OwogICAgIGNv
bnN0IFJlZjxjb25zdCBTZXR0aW5ncz4gbV9zZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggNDdhOWY1NzYwN2I5ODI4NGU4Zjc5ZTJj
ZGVjZTliZTQxOGYxN2I2NS4uYjY3Mzk4YjBlNGY1NmZlN2FiY2IyNzRkMGUzNjg0MzAzNjM1MDg5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAg
LTk2LDEwICs5NiwxNSBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogICAg
IHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQordm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAg
IG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6
IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1
b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7
CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3Mp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKaW5kZXgg
OTI0Yjg0Y2EyZDg3MTZlMzQ2MDc3ZWVlYjVjYzM0YmNlZGU3ZTIzZC4uODY1MWU2MzlhZDkwNjE3
Mjg1NjFjMzI0YmZhN2FmNGNmOTdmNmQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTY3JpcHQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29u
c3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVj
b2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgdm9pZCBkZXN0cm95
RGVjb2RlZERhdGEoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIw
ODZiNWRlYjYxLi4yYTQ4MmVlYzBiNGM4NjJlMGNmZDJiYzI2MTU0NGM4OTU1MzhlNGQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAt
NDAsMTAgKzQwLDEwIEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hlZFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQgQ2Fj
aGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIENh
Y2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZm
ZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRh
ID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7
CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVudD4g
d2Fsa2VyKG1fY2xpZW50cyk7CkBAIC01MSwxMyArNTEsMTMgQEAgdm9pZCBDYWNoZWRUZXh0VHJh
Y2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgY2xpZW50LT5k
ZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKCp0aGlzKTsKIH0KIAotdm9pZCBDYWNo
ZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hl
ZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEpCiB7CiAgICAgZG9VcGRhdGVCdWZmZXIoJmRhdGEpOwogICAgIENhY2hlZFJlc291cmNlOjp1
cGRhdGVCdWZmZXIoZGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewog
ICAgIGRvVXBkYXRlQnVmZmVyKGRhdGEpOwogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2Fk
aW5nKGRhdGEsIG1ldHJpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5oCmluZGV4IDg1ZTM5NjIwNjUxMzE2MDcwMzY1M2ViMjJjNzcxMzhiOTE1MDdh
ZGQuLjA5YjQzMzlhMzdiNjczYjJhYzRmZGFlMTQ2YjI5Yjk2NDc3N2ZjZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKQEAgLTM1LDEwICszNSwx
MCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERh
dGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCB1cGRhdGVCdWZm
ZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQg
dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkb1VwZGF0ZUJ1ZmZl
cihTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAppbmRl
eCBlM2UyZjVlOTY0ODc5NDc5MmYxODkwZjQ2N2EyNzgyNjE1ZDM0MDBjLi5kMmVmZjJkMmQ0MGM5
Mjc3Mzg3NTZjNGE4ZjBjYmI5MzQzYmUxMGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02MSwxMiArNjEsMTYgQEAg
U3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4g
bV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRYU0xTdHlsZVNo
ZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXpl
KGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9zaGVl
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgp
KTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91
cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3No
ZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5jb2RlZFNp
emUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAg
c2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNo
ZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKaW5kZXggNjg0MmI2NDRmNjFjZjkwZjdmNjFiMmY3ZWM1
ZTAwNjU0Y2QxMGNjYy4uYmQyMzEyMTRmMmQyMGJhMzk2NDQ2MDM2NmUwNDFiOTQxMzVhYzRjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hl
ZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVl
dC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25z
dCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAg
ICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZv
aWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBTdHJpbmcgbV9zaGVldDsKICAgICBSZWZQ
dHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCmluZGV4IGNlNTJjZmViZDc2
MWU1NjQ3NWEyMDFlODE0Mzg1MzM0ZWE0ZGJhNWMuLmQwMjBhYzNkYzgwODQ0YTY3YTA3Y2I1YjFk
MTU5ZjcxYzBjZGNkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9E
aXNrQ2FjaGVNb25pdG9yQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2Ev
RGlza0NhY2hlTW9uaXRvckNvY29hLmgKQEAgLTMyLDE3ICszMiwxNyBAQCB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBfQ0ZDYWNoZWRVUkxSZXNwb25zZSogQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBEaXNrQ2FjaGVNb25pdG9yIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCBtb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKLSAg
ICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZl
ckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOworICAgIHN0
YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJl
ZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwog
CiBwcml2YXRlOgogICAgIERpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
UEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCi0gICAgdm9pZCByZXNv
dXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCByZXNvdXJjZUJl
Y2FtZUZpbGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNl
UmVxdWVzdDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2Vzc2lvbklEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2Ev
RGlza0NhY2hlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rp
c2tDYWNoZU1vbml0b3JDb2NvYS5tbQppbmRleCBmYTRiOTAzYmVmOTM5NDgxYzIyZWE3ZGY1NTFl
OGI1NWU3ZTBlNTJkLi45M2VlOTYzNzRmMDNiYTMxMjQ0M2QyODFjNTJhNDg0MDY5ZGYyYTMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9y
Q29jb2EubW0KQEAgLTQyLDEzICs0MiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUg
bWF4aW11bSBudW1iZXIgb2Ygc2Vjb25kcyB3ZSdsbCB0cnkgdG8gd2FpdCBmb3IgYSByZXNvdXJj
ZSB0byBiZSBkaXNrIGNhY2hlZCBiZWZvcmUgd2UgZm9yZ2V0IHRoZSByZXF1ZXN0Lgogc3RhdGlj
IGNvbnN0IGRvdWJsZSBkaXNrQ2FjaGVNb25pdG9yVGltZW91dCA9IDIwOwogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVy
RnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNw
b25zZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0
cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKICAgICBhdXRvIGRhdGEgPSBfQ0ZD
YWNoZWRVUkxSZXNwb25zZUdldE1lbU1hcHBlZERhdGEoY2FjaGVkUmVzcG9uc2UpOwogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhKTsKIH0KIAogdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tp
bmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQpA
QCAtMTEzLDcgKzExMyw3IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tDYWNoZU1vbml0b3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JCiAgICAgX0NGQ2FjaGVk
VVJMUmVzcG9uc2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9jayhjYWNoZWRSZXNwb25z
ZSwgYmxvY2tUb1J1biwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiB9CiAKLXZvaWQgRGlz
a0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYgZmls
ZUJhY2tlZEJ1ZmZlcikKK3ZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxl
QmFja2VkKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCiB7CiAgICAg
YXV0byogcmVzb3VyY2UgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVzb3VyY2VGb3JSZXF1
ZXN0KG1fcmVzb3VyY2VSZXF1ZXN0LCBtX3Nlc3Npb25JRCk7CiAgICAgaWYgKCFyZXNvdXJjZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKaW5k
ZXggNTUyNTYxZDZjODE2ZDNkMjBiY2ZjY2IyZTY1ODNiN2RlOTRiOTRhMi4uNjZiOTM1OGVjNTMx
MTE0ODQ4MjJhN2NjMjRlN2YzYTk5MTcwNjVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsNyArMzgsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50OwogY2xh
c3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmluYWwgOiBwcml2YXRlIFBy
ZXZpZXdDb252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ4LDcgKzUwLDcgQEAgcHVibGljOgog
CiAgICAgYm9vbCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwog
ICAgIGJvb2wgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKTsKLSAgICBib29sIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7Cisg
ICAgYm9vbCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsK
ICAgICBib29sIGRpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lkIGRpZEZhaWwoKTsKIApAQCAt
NjAsMTcgKzYyLDE3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmlu
aXNoVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsIHsgfTsKICAgICB2b2lkIHByZXZp
ZXdDb252ZXJ0ZXJEaWRGYWlsVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOwogICAg
IHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVy
JikgZmluYWw7Ci0gICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmll
d0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgcHJldmll
d0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmlu
aXNoQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgZmluYWw7CiAgICAgdm9pZCBwcmV2aWV3
Q29udmVydGVyRGlkRmFpbENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOwogCiAg
ICAgLy8gUHJldmlld0NvbnZlcnRlclByb3ZpZGVyCi0gICAgdm9pZCBwcm92aWRlTWFpblJlc291
cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJikgZmluYWw7CisgICAgdm9pZCBwcm92aWRl
TWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYpIGZpbmFs
OwogICAgIHZvaWQgcHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29u
dmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJikgZmluYWw7
CiAKICAgICBSZWZQdHI8UHJldmlld0NvbnZlcnRlcj4gbV9jb252ZXJ0ZXI7CiAgICAgUmVmPExl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1fY2xpZW50OwotICAgIFJlZjxTaGFyZWRCdWZmZXI+
IG1fb3JpZ2luYWxEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX29y
aWdpbmFsRGF0YTsKICAgICBXZWFrUHRyPFJlc291cmNlTG9hZGVyPiBtX3Jlc291cmNlTG9hZGVy
OwogICAgIGJvb2wgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCBkMThiMjUy
ZTk3NTZjOGNlMGM5NWI2M2U3OGRkMDA5N2VmMmE1NzM0Li44MDRlZmU4ZWM5NjI3MThhMjNhMDA2
ZGMxNDU2NTYzNGZmMjZhZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBSZWY8TGVnYWN5
UHJldmlld0xvYWRlckNsaWVudD4gbWFrZUNsaWVudChjb25zdCBSZXNvdXJjZUxvYWRlciYgbG9h
ZGVyLCBjCiAgICAgcmV0dXJuIGVtcHR5Q2xpZW50KCk7CiB9CiAKLWJvb2wgTGVnYWN5UHJldmll
d0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jv
b2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fZmluaXNoZWRMb2FkaW5nRGF0YUlu
dG9Db252ZXJ0ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2
b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRp
bmcoUHJldmlld0NvbnZlcnRlciYgYwogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1f
aGFzUHJvY2Vzc2VkUmVzcG9uc2UpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5jbGVhcigpOworICAg
IG1fb3JpZ2luYWxEYXRhLT5yZXNldCgpOwogICAgIHJlc291cmNlTG9hZGVyLT5kb2N1bWVudExv
YWRlcigpLT5zZXRQcmV2aWV3Q29udmVydGVyKFdURk1vdmUobV9jb252ZXJ0ZXIpKTsKICAgICBh
dXRvIHJlc3BvbnNlIHsgY29udmVydGVyLnByZXZpZXdSZXNwb25zZSgpIH07CiAKQEAgLTE0Nyw3
ICsxNDcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRT
dGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYgYwogICAgIH0pOwogfQogCi12b2lkIExl
Z2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3
Q29udmVydGVyJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBMZWdhY3lQcmV2aWV3
TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYs
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgYXV0byByZXNvdXJj
ZUxvYWRlciA9IG1fcmVzb3VyY2VMb2FkZXIuZ2V0KCk7CiAgICAgaWYgKCFyZXNvdXJjZUxvYWRl
cikKQEAgLTIyNCwxMCArMjI0LDEwIEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjCiAgICAgbV9j
bGllbnQtPmRpZFJlcXVlc3RQYXNzd29yZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKLXZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZp
ZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBM
ZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRl
cihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IEFTU0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09IG1fY29udmVydGVyKTsKLSAg
ICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5wdHIoKSk7CisgICAgY29tcGxldGlv
bkhhbmRsZXIobV9vcmlnaW5hbERhdGEtPmdldCgpLmdldCgpKTsKIH0KIAogTGVnYWN5UHJldmll
d0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CkBAIC0yMzUsNyArMjM1
LDcgQEAgTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1
bHQ7CiBMZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNlTG9h
ZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIDogbV9j
b252ZXJ0ZXIgeyBQcmV2aWV3Q29udmVydGVyOjpjcmVhdGUocmVzcG9uc2UsICp0aGlzKSB9CiAg
ICAgLCBtX2NsaWVudCB7IG1ha2VDbGllbnQobG9hZGVyLCBtX2NvbnZlcnRlci0+cHJldmlld0Zp
bGVOYW1lKCksIG1fY29udmVydGVyLT5wcmV2aWV3VVRJKCkpIH0KLSAgICAsIG1fb3JpZ2luYWxE
YXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX29yaWdpbmFsRGF0YSB7IG1h
a2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX3Jlc291cmNlTG9h
ZGVyIHsgbG9hZGVyIH0KICAgICAsIG1fc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZyB7
IGxvYWRlci5mcmFtZSgpLT5zZXR0aW5ncygpLnNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRp
bmdRdWlja0xvb2tQcmV2aWV3KCkgfQogewpAQCAtMjQ2LDcgKzI0Niw3IEBAIExlZ2FjeVByZXZp
ZXdMb2FkZXI6OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29u
c3QgUmVzb3VyY2VSCiAKIGJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogewotICAgIHJldHVybiBkaWRS
ZWNlaXZlQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkuZ2V0KCkpOwor
ICAgIHJldHVybiBkaWRSZWNlaXZlQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLCBsZW5ndGgpLmdldCgpKTsKIH0KIAogYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcAppbmRleCAwYWUzMTVj
NDI1YmUxZTM2YmRmNTZmMDM4ZmE1MGNiMmQzNWVlNTg3Li5iMzg3ZmMyYjJmODIyODJmMTAyNmUw
NmEzZDA3ZjE0NGIzMDY1M2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvc291
cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3Vw
L1Jlc291cmNlTG9hZGVyU291cC5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRlcjo6bG9hZEdSZXNvdXJjZSgpCiAgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0
KCJPSyJfcyk7CiAgICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6Q29udGVudFR5cGUsIGNvbnRlbnRUeXBlLmdldCgpKTsKICAgICAgICAgcmVzcG9uc2Uu
c2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7Ci0gICAgICAgIGxv
YWRlci0+ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSwgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoYnl0ZXMuZ2V0KCkpKTsKKyAgICAgICAgbG9hZGVyLT5kZWxpdmVyUmVzcG9uc2VBbmREYXRh
KHJlc3BvbnNlLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYnl0ZXMuZ2V0KCkpKTsK
ICAgICB9LCBwcm90ZWN0ZWRUaGlzLmxlYWtSZWYoKSkpOwogCiAgICAgZ190YXNrX3NldF9wcmlv
cml0eSh0YXNrLmdldCgpLCBSdW5Mb29wU291cmNlUHJpb3JpdHk6OkFzeW5jSU9OZXR3b3JrKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0
ZjI1YWIxMzVhYTYwMzMzY2YuLjczZWM2OGUxNjJkMWE1YjViMzNmMGM5ZjhkZmVhYzEzNmViNTZm
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMzgsMTIgKzM4LDEzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDog
dWludDhfdDsKIAorY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50
RnJhZ21lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBLZXlib2FyZEV2
ZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBjbGFzcyBUZXh0Q2hlY2tlckNs
aWVudDsKIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CkBAIC03OCw3ICs3OSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUoY29uc3QgU2ltcGxl
UmFuZ2UmLCBjb25zdCBTaW1wbGVSYW5nZSYpID0gMDsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRU
eXBlICovLCBjb25zdCBTdHJpbmcmIC8qIHByZWZlcnJlZEZpbGVOYW1lICovLCBSZWY8U2hhcmVk
QnVmZmVyPiYmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29u
dGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogcHJlZmVycmVkRmlsZU5hbWUgKi8sIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0
IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogZmlsZVBhdGggKi8p
IHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxTZXJpYWxp
emVkQXR0YWNobWVudERhdGE+JiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLykgeyB9CkBAIC05
Nyw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2FuZGlkYXRl
c0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVz
dWx0KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggNTcwNmFkODYyOGZiOWJiMmM0OTg2NTM1
YzYzMmQ5ZDJkYWM5MTNlZi4uNTg3MWE4ZWE2YTMxMTk4YzkwYTRmNDk0MWJjMjNkZTk4NDk1YjE5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xOTUxLDcgKzE5NTEsNyBAQCBjb25zdCBTdHJpbmcm
IFBhZ2U6OnVzZXJTdHlsZVNoZWV0KCkgY29uc3QKICAgICAvLyBhbmQgd2hhdCBzaG91bGQgaGFw
cGVuIHdoZW4gaXQgZmluaXNoZXMgbG9hZGluZywgZXNwZWNpYWxseSB3aXRoIHJlc3BlY3QKICAg
ICAvLyB0byB3aGVuIHRoZSBsb2FkIGV2ZW50IGZpcmVzLCB3aGVuIERvY3VtZW50OjpjbG9zZSBp
cyBjYWxsZWQsIGFuZCB3aGVuCiAgICAgLy8gbGF5b3V0L3BhaW50IGFyZSBhbGxvd2VkIHRvIGhh
cHBlbi4KLSAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CisgICAgYXV0byBkYXRhID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRo
KTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBtX3VzZXJTdHlsZVNoZWV0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDFhMTIxMGZhODMzN2NkOTUy
MGY0ZTAxMWE5MDczNjc1NGRlNTE4ZjEuLmM5MDE0M2NkM2Y4MWM2NmMxZTQzYWUxNmFiMzA0MTk0
NDYzZGZhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0xOTYs
NyArMTk2LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUoRnJhbWUqIGZy
YW1lKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFN0cmluZyB0ZXh0ID0gYWNjdW11bGF0
b3Iuc2VyaWFsaXplTm9kZXMoKmRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgU2VyaWFsaXpl
ZE5vZGVzOjpTdWJ0cmVlSW5jbHVkaW5nTm9kZSk7Ci0gICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsg
dXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
dGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykp
IH0pOworICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1J
TUVUeXBlKCksIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5j
b2RlKHRleHQsIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgbV9yZXNv
dXJjZVVSTHMuYWRkKHVybCk7CiAKICAgICBmb3IgKGF1dG8mIG5vZGUgOiBub2RlcykgewpAQCAt
MjYwLDcgKzI2MCw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hl
ZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwgY29uc3QgVVJMCiAgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgY2hlY2sgd2hldGhlciBhIGNoYXJzZXQgaGFzIGJlZW4gc3BlY2lmaWVkIGFu
ZCBpZiBub25lIHdhcyBmb3VuZCBhZGQgb25lLgogICAgICAgICBUZXh0RW5jb2RpbmcgdGV4dEVu
Y29kaW5nKHN0eWxlU2hlZXQtPmNvbnRlbnRzKCkuY2hhcnNldCgpKTsKICAgICAgICAgQVNTRVJU
KHRleHRFbmNvZGluZy5pc1ZhbGlkKCkpOwotICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1
cmwsICJ0ZXh0L2NzcyJfcywgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29k
ZShjc3NUZXh0LnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7
CisgICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZShjc3NUZXh0LnRvU3Ry
aW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgICAgIG1fcmVz
b3VyY2VVUkxzLmFkZCh1cmwpOwogICAgIH0KIH0KQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIFBh
Z2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwgUmVu
ZGVyRWxlbWVudCogaW1hZwogICAgIGlmICghaW1hZ2UgfHwgaW1hZ2UtPmltYWdlKCkgPT0gJklt
YWdlOjpudWxsSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFn
ZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZVJl
bmRlcmVyKS0+ZGF0YSgpIDogMDsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIGRhdGEgPSBpbWFn
ZS0+aW1hZ2UoKS0+ZGF0YSgpOwogCkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBQYWdlU2VyaWFs
aXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1l
bnQqIGltYWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcmVzb3VyY2VzLmFwcGVu
ZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgV1RGTW92ZShkYXRhKSB9KTsK
KyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBl
KCksIGRhdGEtPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVy
bCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAppbmRleCBmZjNlMmUxZmNi
MDYxYTRmZmZjNWRlZmQ0YzJkMTgwYWY0OWJmNzcxLi5iZmNiZTdiOGRiZmQ0OWY3OWQxYTAwYzgw
MDRlYWRlMjljNDgwODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJp
YWxpemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCkBAIC01
NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgUmVzb3VyY2UgewogICAgICAgICBVUkwg
dXJsOwogICAgICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwog
ICAgIH07CiAKICAgICBleHBsaWNpdCBQYWdlU2VyaWFsaXplcihWZWN0b3I8UmVzb3VyY2U+Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGEuaAppbmRleCA2OGIwZGQyYzMwNmI3OTQ1MzFkMjliZDE0MGRj
YjQyYjQ4ZTI3MzY0Li4zZWRkOWM3MWJiMjdlNTBmZGZkZmFjZWUyNzFlZmVmYjdjYjI5MWY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKQEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0IFNoYXJlRGF0
YSB7CiAKIHN0cnVjdCBSYXdGaWxlIHsKICAgICBTdHJpbmcgZmlsZU5hbWU7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGZpbGVEYXRhOwogfTsKICAgICAKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAppbmRleCA5NmFkMDgyNTQzZGQ1
M2E4NzliZTUxYzZkOTIxZDdhZmZmNDJlOGUwLi5kNjgwNWEzZWU1MzRjMzY2NGYyNTk0OTU5M2Rm
YjViNDkxM2E1NGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJl
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBA
IC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNoYXJlRGF0YVJlYWRlcjo6U2hh
cmVEYXRhUmVhZGVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRh
V2l0aFBhcnNlZFVSTCY+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICA6IG1fY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiB7Ci0gICAgCisKIH0KIAogU2hh
cmVEYXRhUmVhZGVyOjp+U2hhcmVEYXRhUmVhZGVyKCkKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lk
IFNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBT
dHJpbmcmIGZpbGVOYW1lKQogICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICAKKwogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX3BlbmRpbmdGaWxlTG9hZHNbbG9h
ZEluZGV4XS0+YXJyYXlCdWZmZXJSZXN1bHQoKTsKLSAgICAKKwogICAgIFJhd0ZpbGUgZmlsZTsK
ICAgICBmaWxlLmZpbGVOYW1lID0gZmlsZU5hbWU7Ci0gICAgZmlsZS5maWxlRGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1
ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgZmlsZS5maWxl
RGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVu
Z3RoKCkpOwogICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChXVEZNb3ZlKGZpbGUpKTsKICAg
ICBtX2ZpbGVzUmVhZFNvRmFyKys7Ci0gICAgCisKICAgICBpZiAobV9maWxlc1JlYWRTb0ZhciA9
PSBzdGF0aWNfY2FzdDxpbnQ+KG1fcGVuZGluZ0ZpbGVMb2Fkcy5zaXplKCkpKSB7CiAgICAgICAg
IG1fcGVuZGluZ0ZpbGVMb2Fkcy5jbGVhcigpOwogICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9u
SGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgeyB9KSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCmluZGV4IDc5YTIzNTM1NWYxZThlZjg2MTUzNTJl
NjM5YzhjNjMxOGY0MDM3NzYuLjNkODBkN2ExZDQyNDU4NTIwYmQ1NDM4ZWYzNmQ4YTU3Y2I1ZDRl
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaApAQCAtMzEsNyArMzEsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEtleWVkRGVjb2RlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNjAsNyArMTYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYpID0gMDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2Rp
bmcoKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmlu
aXNoRW5jb2RpbmcoKSA9IDA7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQg
ZW5jb2RlRW51bShjb25zdCBTdHJpbmcmIGtleSwgVCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCmluZGV4IGUzODA2ZTg3ZGY3OWEzZDliNWNhZTEy
MTRkZTY2YWEyYTY1ODQ3ZGIuLmZjNjZjMzY1YTJmMjlhNGM3OGU2MDYxOWU0N2E3MWM3MjU4ZDhm
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaApAQCAt
NzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8Tm93UGxheWluZ0luZm8+
IG1fbm93UGxheWluZ0luZm87CiAgICAgc3RydWN0IEFydHdvcmtDYWNoZSB7CiAgICAgICAgIFN0
cmluZyBzcmM7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAgICAg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKICAgICB9OwogICAg
IHN0ZDo6b3B0aW9uYWw8QXJ0d29ya0NhY2hlPiBtX25vd1BsYXlpbmdJbmZvQXJ0d29yazsKICAg
ICBib29sIG1fc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24geyBmYWxzZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCAxNTczMWViMjNmYTc2OTQ5NjBkZDgwNDk2
ZmE4ZjJmOWU4Yzc3ODBmLi4wN2VkNDhlNTg4NGVjZWVkYzYxZmQ5M2U2YjIyMTcxYmU4ODU4OWZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcApAQCAtODksNyArODksNyBA
QCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0
eXBlKQorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6
OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYg
KGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVn
eSgpKQogICAgICAgICByZXR1cm4gc3RyYXRlZ3ktPnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChp
bmRleCwgdHlwZSwgbmFtZSgpLCBjb250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZC5oCmluZGV4IDdkMjQ3ZGNkMWExNmYzNDJjMTc1NGM0NWM0YTczNTI5YmY4ZjcxYjIuLjgx
N2MwMWUzNGJkOWY5OTlkNGEzODkzYWQ0MWY2ODZlZWI5NTYzZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDEyICs2MSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBIV05E
X18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNz
IEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFBhc3RlYm9hcmRTdHJhdGVneTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBT
aW1wbGVSYW5nZTsKIApAQCAtODIsMTQgKzgzLDE0IEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29u
dGVudCB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRXZWJDb250ZW50KCk7CiAgICAg
U3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YUluUlRGRm9ybWF0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJp
YnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkRGb3JtYXQ7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGFJblJURkZvcm1hdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUlu
QXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAg
ICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5
cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBW
ZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwpAQCAtMTE5LDE3
ICsxMjAsMTcgQEAgc3RydWN0IFBhc3RlYm9hcmRJbWFnZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQg
flBhc3RlYm9hcmRJbWFnZSgpOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAjaWYgUExBVEZP
Uk0oTUFDKQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7
CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3Jt
YXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAjZW5kaWYKICNpZiAhUExBVEZPUk0o
V0lOKQogICAgIFBhc3RlYm9hcmRVUkwgdXJsOwogI2VuZGlmCiAjaWYgIShQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFdJTikpCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRh
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CiAgICAg
U3RyaW5nIHJlc291cmNlTUlNRVR5cGU7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7
Ci0gICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3Rv
cjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAg
ICBTdHJpbmcgc3VnZ2VzdGVkTmFtZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplOwpAQCAtMTQ3
LDE2ICsxNDgsMTYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCByZWFkRmlsZVBhdGgoY29u
c3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0g
eyB9LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0geyB9KSA9IDA7CiAgICAgdmlydHVhbCBi
b29sIHJlYWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7CiAgICAgdmlydHVh
bCBib29sIHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVh
ZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0
aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CisgICAgdmlydHVh
bCBib29sIHJlYWRJbWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7
IH0pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIHRpdGxlKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3Ry
aW5nJikgPSAwOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIGJv
b2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBy
ZWFkUlRGRChTaGFyZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRSVEYoU2hh
cmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0
aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CisgICAgdmlydHVh
bCBib29sIHJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CisgICAg
dmlydHVhbCBib29sIHJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CisgICAg
dmlydHVhbCBib29sIHJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgcmVhZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZl
cnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pID0gMDsKICNlbmRpZgogfTsKIApAQCAtMTcxLDcg
KzE3Miw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgdmlydHVhbCB+UGFz
dGVib2FyZEZpbGVSZWFkZXIoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIHJlYWRGaWxl
bmFtZShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNob3VsZFJlYWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiAvKiB0eXBlICovKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJl
YWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogY2xhc3MgUGFzdGVib2FyZCB7
CkBAIC0yOTYsNyArMjk3LDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2Fy
ZEl0ZW1JbmZvPiBwYXN0ZWJvYXJkSXRlbUluZm8oc2l6ZV90IGluZGV4KSBjb25zdDsKIAogICAg
IFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAg
ICAgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKTsKIAogICAgIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0Lmdl
dCgpOyB9CkBAIC0zMjgsNyArMzI5LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBhZGRI
VE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0
VHlwZXMsIGNvbnN0IFN0cmluZyYgY29jb2FUeXBlKTsKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zv
clBsYXRmb3JtVHlwZShjb25zdCBTdHJpbmcmKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFkVHlw
ZXNXaXRoU2VjdXJpdHlDaGVjaygpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CisgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2so
Y29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJk
Q29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5NTJj
Y2Y2N2FlNzAuLjcxMTZkNzZhYjQxNWYxYTk4ZmQ3NTgxYzc4MGQ0MjgwN2VjYjdmMjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAg
LTMzLDEzICszMywxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBzdGQ6OnZh
cmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBz
dGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4mIG90aGVyKQorc3RhdGljIHN0
ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gY29weVBsYXRm
b3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+JiBvdGhlcikKIHsKICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+
KG90aGVyKSkKICAgICAgICAgcmV0dXJuIHsgc3RkOjpnZXQ8U3RyaW5nPihvdGhlcikgfTsKIAot
ICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikp
Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikuY29w
eVJlZigpIH07CisgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PihvdGhlcikpCisgICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4ob3RoZXIpLmNvcHlSZWYoKSB9OwogCiAgICAgcmV0dXJuIHsg
fTsKIH0KQEAgLTgwLDcgKzgwLDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGE6OlBhc3RlYm9hcmRD
dXN0b21EYXRhKFN0cmluZyYmIG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYmIGRhdGEKIHsKIH0KIAot
UmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpIGNvbnN0CitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURh
dGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgY29uc3RleHByIHVuc2lnbmVk
IGN1cnJlbnRDdXN0b21EYXRhU2VyaWFsaXphdGlvblZlcnNpb24gPSAxOwogCkBAIC04OSw3ICs4
OSw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFy
ZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47CiAgICAgZW5jb2RlciA8
PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29kZXIgPDwgb3JkZXJlZFR5
cGVzKCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCks
IGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAog
UGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5j
ZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmIGRlY29kZXIpCkBAIC0xMjQsNyAr
MTI0LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21Q
ZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW4KICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1Bhc3RlYm9hcmRDdXN0b21EYXRhIFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZnJvbVBlcnNpc3RlbmNlRGVjb2Rlcihi
dWZmZXIuZGVjb2RlcigpKTsKIH0KQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIFBhc3RlYm9hcmRD
dXN0b21EYXRhOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCiAgICAgYWRkT3JNb3ZlRW50cnlUb0VuZCh0eXBlKS5wbGF0Zm9ybURhdGEgPSB7IHZh
bHVlIH07CiB9CiAKLXZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OndyaXRlRGF0YShjb25zdCBT
dHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUGFzdGVib2FyZEN1
c3RvbURhdGE6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgYWRkT3JNb3ZlRW50cnlUb0VuZCh0eXBlKS5wbGF0
Zm9ybURhdGEgPSB7IFdURk1vdmUoZGF0YSkgfTsKIH0KQEAgLTIwMiwxNCArMjAyLDE0IEBAIEhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpzYW1lT3JpZ2luQ3Vz
dG9tU3RyaW5nRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIGN1c3RvbURhdGE7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpyZWFkQnVmZmVyKGNvbnN0IFN0
cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAg
ICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkgewogICAgICAgICBpZiAoZW50cnkudHlwZSAh
PSB0eXBlKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCi0gICAg
ICAgICAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3Jt
RGF0YSkuY29weVJlZigpOworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0
Zm9ybURhdGEpLmNvcHlSZWYoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBA
IC0yNjUsMTEgKzI2NSwxMSBAQCB2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmb3JFYWNoQ3Vz
dG9tU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLAogICAgIH0KIH0KIAot
dm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIo
RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJp
bmcsIFJlZjxTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYgZnVuY3Rpb24pIGNvbnN0Cit2b2lkIFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpmb3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihGdW5jdGlv
bjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYgZnVuY3Rpb24pIGNvbnN0CiB7CiAg
ICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkgewogICAgICAgICBhdXRvJiBkYXRhID0gZW50
cnkucGxhdGZvcm1EYXRhOwotICAgICAgICBpZiAoKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3Ry
aW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5pc051bGwoKSkgfHwgc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkpCisgICAgICAgIGlmICgo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRhdGEpICYmICFzdGQ6OmdldDxTdHJpbmc+
KGRhdGEpLmlzTnVsbCgpKSB8fCBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4oZGF0YSkpCiAgICAgICAgICAgICBmdW5jdGlvbihlbnRyeS50eXBlLCBk
YXRhKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1
c3RvbURhdGEuaAppbmRleCAyYmU4MWQyOTM4YTNkYmQwOTAyNmNhNmVjNjRhYzMyODdlNmFiYzAz
Li5mMGUxNTQ5MDgwODVjMjZmMjM3ZmE5NGQ5MzAyOTE5ZWU2ZDEzZDJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAgLTM0LDcgKzM0LDgg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGEgewogcHVibGljOgpAQCAtNDgsNyArNDksNyBAQCBw
dWJsaWM6CiAKICAgICAgICAgU3RyaW5nIHR5cGU7CiAgICAgICAgIFN0cmluZyBjdXN0b21EYXRh
OwotICAgICAgICBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4gcGxhdGZv
cm1EYXRhOworICAgICAgICBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+IHBsYXRmb3JtRGF0YTsKICAgICB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUGFz
dGVib2FyZEN1c3RvbURhdGEoKTsKQEAgLTYwLDE2ICs2MSwxNiBAQCBwdWJsaWM6CiAgICAgY29u
c3QgU3RyaW5nJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIHZvaWQg
c2V0T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luKSB7IG1fb3JpZ2luID0gb3JpZ2luOyB9CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIo
KSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEg
ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFy
ZWRCdWZmZXIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25z
dCBTdHJpbmcmIHR5cGUpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwogICAgIFN0cmlu
ZyByZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAKICAg
ICB2b2lkIHdyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSk7Ci0gICAgdm9pZCB3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGRhdGEpOworICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CiAgICAgdm9pZCB3cml0ZVN0cmluZ0lu
Q3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiAg
ICAgdm9pZCBjbGVhcigpOwpAQCAtODMsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZv
ckVhY2hUeXBlKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpIGNvbnN0OwogICAgIHZv
aWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIGRhdGEpPiYmKSBjb25zdDsKLSAgICB2b2lkIGZvckVhY2hQbGF0Zm9y
bVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBz
dGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmKSBjb25zdDsK
KyAgICB2b2lkIGZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKT4mJikgY29uc3Q7CiAgICAgdm9pZCBmb3JFYWNoQ3VzdG9t
U3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRh
dGEpPiYmKSBjb25zdDsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCAxYzA3MjZmZWIzZTAyYWVk
MzJiNDZmMjYyYmNkYTE2OWQ2NzJlYjJjLi40YTg3NzBlMzFiYTNhMGFlYTRiN2YxZTA0OTkxN2Q4
MTYxNTFkY2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
U3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRl
Z3kuaApAQCAtMzEsMTAgKzMxLDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENv
bG9yOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDb250
ZXh0OwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVj
dCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBh
c3RlYm9hcmRVUkw7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBnZXRU
eXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQ
YXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5n
PiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAg
LTYyLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBpbnQ2NF90IGFkZFR5cGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50
NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
LSAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVm
ZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJvYXJk
VVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldENvbG9yKGNvbnN0IENvbG9yJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7
CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC03MSw3ICs3Miw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFN0cmluZyB1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7CiAjZW5kaWYKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3Rl
Ym9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAg
ICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZp
cnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IGlu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
ID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5m
bz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBp
bnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTg1
LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRU
ZXh0RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAg
dmlydHVhbCBWZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIFNlbGVjdGlvbkRhdGEmJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaXBi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZP
Uk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdy
aXRlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRh
LmgKaW5kZXggOGUyYzhmYjkyZDk3MmZkNDIxNjAwN2JjODc3NzUyY2ZkMzQ4Zjg0ZC4uYjQ1Y2Ux
ZjkzOGNiYTUwNjYzOGI2YTQxMjFkNzY3MzYzZjhiZTUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGEgZmluYWwgewogcHVi
bGljOgpAQCAtNTEsMTQgKzUxLDE0IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAgICAgIGJvb2wgY2FuU21hcnRDb3B5T3JE
ZWxldGU7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3Jt
YXQ7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICAgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAg
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAg
ICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAg
ICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmlu
Z0Zvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgICAgIFN0cmlu
ZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVz
OwotICAgICAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAg
ICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAj
ZW5kaWYKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybUNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29u
dGVudEZpbHRlci5oCmluZGV4IDNmNDgzMmE1YTY1OGMxY2M3YzBhYTEzYjI2ZTBlYTQ3MzNlOWQz
YjcuLjllNzJlNDRhMmVhYzRkOGVmNzMwYjk4NzFkMGVjNTA4ZWQ5ZmFjNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCkBAIC0zNCw3ICsz
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpA
QCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2
ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGZpbmlzaGVkQWRkaW5nRGF0YSgpID0gMDsKLSAgICB2aXJ0dWFsIFJlZjxTaGFyZWRCdWZmZXI+
IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCA9IDA7CiAjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQogICAgIHZpcnR1YWwgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
IHVuYmxvY2tIYW5kbGVyKCkgY29uc3QgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDdhMmEzMTAwNzQyNTAwMjQzYmI0NmZm
NTk4Njg2MWU4NGEyZmQ5NmUuLmRlNDRhNDY1MjdjMzcxODIxNTFmOGE4ODg1YTVhZTcxYTBlNGYw
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2Fy
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBA
IC00NywxMyArNDcsMTQgQEAgc3RydWN0IHdwZV9wYXN0ZWJvYXJkOwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFz
cyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVt
SW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwogc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1QYXN0ZWJv
YXJkIHsKIHB1YmxpYzoKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJp
bmcgcGxhdGZvcm1QYXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUo
Y29uc3QgU3RyaW5nJiBkb21UeXBlLCBJbmNsdWRlSW1hZ2VUeXBlcyA9IEluY2x1ZGVJbWFnZVR5
cGVzOjpObyk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJp
bmc+JiB0eXBlcyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFBhdGhu
YW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0cmluZ0ZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSkgY29uc3Q7CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNl
IG1ldGhvZHMgd2lsbCByZXR1cm4gMCBpZiBwYXN0ZWJvYXJkIG93bmVyc2hpcCBoYXMgYmVlbiB0
YWtlbiBmcm9tIHVzLgogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3QgY29weShjb25zdCBTdHJp
bmcmIGZyb21QYXN0ZWJvYXJkKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldEJ1ZmZl
ckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgaW50NjRfdCBzZXRDb2xvcihjb25zdCBDb2xvciYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKTsKQEAgLTkzLDcgKzk0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCByZWFkVVJMKHNpemVf
dCBpbmRleCwgU3RyaW5nJiB0aXRsZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGNv
dW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
Y3BwCmluZGV4IDRjYjMzMDFlN2RmNzA3MWM1ZGQ5ZmM1OWJjNTcxODVjNGU5MTQ3NjguLjYzMWFk
ZTdjY2Y3YWQyOTY5M2EyZTc2NTFmZTZhOWNkZWJkMzc3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCkBAIC02Myw5ICs2Myw5IEBAIGNvbnN0IFJl
c291cmNlRXJyb3ImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdFcnJvcigpIGNvbnN0CiAgICAg
cmV0dXJuIG1fcHJldmlld0Vycm9yOwogfQogCi1jb25zdCBTaGFyZWRCdWZmZXImIFByZXZpZXdD
b252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkgY29uc3QKK2NvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gKm1fcHJldmlld0RhdGEtPmdldCgpOwog
fQogCiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSgpCkBAIC05MCw3
ICs5MCw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKICAg
ICB9KTsKIH0KIAotdm9pZCBQcmV2aWV3Q29udmVydGVyOjphcHBlbmRGcm9tQnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBQcmV2aWV3Q29udmVydGVyOjphcHBlbmRGcm9t
QnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICB3aGls
ZSAoYnVmZmVyLnNpemUoKSA+IG1fbGVuZ3RoQXBwZW5kZWQpIHsKICAgICAgICAgYXV0byBuZXdE
YXRhID0gYnVmZmVyLmdldFNvbWVEYXRhKG1fbGVuZ3RoQXBwZW5kZWQpOwpAQCAtMjIyLDcgKzIy
Miw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZl
cnRlckNsaWVudCYgY2xpZW50KQogICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkU3RhcnRD
b252ZXJ0aW5nKCp0aGlzKTsKIAogICAgIGlmICghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpICYm
IGhhc0NsaWVudChjbGllbnQpKQotICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJl
Y2VpdmVEYXRhKCp0aGlzLCBtX3ByZXZpZXdEYXRhLmdldCgpKTsKKyAgICAgICAgY2xpZW50LnBy
ZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgKm1fcHJldmlld0RhdGEtPmdldCgp
KTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDb252ZXJ0aW5nIHx8ICFoYXNDbGllbnQo
Y2xpZW50KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgUHJldmll
d0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50
KQogICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZygqdGhpcyk7
CiB9CiAKLXZvaWQgUHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmRlbGVnYXRlRGlk
UmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBh
dXRvIHByb3RlY3RlZFRoaXMgeyBSZWYgeyAqdGhpcyB9IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAppbmRleCAyYTM3MjkyMjc5OWNlNmFmZmFhYjNlMTQw
ZDE5MGJhNjRjZjhjZTJiLi45MjAyZWRkZDllMTA1YjI3MzVlZGMxNDZmMjY2NGMxM2NiOWMzNDFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCkBAIC00MSwxNSArNDIsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1
ZmZlckRhdGFWaWV3OworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIHN0cnVjdCBQcmV2aWV3
Q29udmVydGVyQ2xpZW50Owogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcjsKIAogc3Ry
dWN0IFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlIDogQ2FuTWFrZVdlYWtQdHI8UHJldmlld1BsYXRm
b3JtRGVsZWdhdGU+IHsKICAgICB2aXJ0dWFsIH5QcmV2aWV3UGxhdGZvcm1EZWxlZ2F0ZSgpID0g
ZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZl
RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkZWxlZ2F0ZURpZEZpbmlzaExvYWRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGVn
YXRlRGlkRmFpbFdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogfTsKQEAgLTcy
LDcgKzc0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwcmV2aWV3Rmls
ZU5hbWUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJldmlld1VUSSgpIGNv
bnN0OwogICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIHByZXZpZXdFcnJvcigpIGNvbnN0OwotICAg
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgcHJldmlld0RhdGEoKSBjb25zdDsKKyAgICBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBwcmV2aWV3RGF0YSgpIGNvbnN0OwogCiAgICAgdm9pZCBmYWls
ZWRVcGRhdGluZygpOwogICAgIHZvaWQgZmluaXNoVXBkYXRpbmcoKTsKQEAgLTk0LDcgKzk2LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzUGxhdGZvcm1QYXNzd29yZEVycm9yKGNvbnN0IFJlc291
cmNlRXJyb3ImKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgaXRlcmF0
ZUNsaWVudHMoVCYmIGNhbGxiYWNrKTsKLSAgICB2b2lkIGFwcGVuZEZyb21CdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBhcHBlbmRGcm9tQnVmZmVyKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZEFkZENsaWVudChQcmV2aWV3Q29udmVydGVy
Q2xpZW50Jik7CiAgICAgdm9pZCBkaWRGYWlsQ29udmVydGluZ1dpdGhFcnJvcihjb25zdCBSZXNv
dXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRGYWlsVXBkYXRpbmcoKTsKQEAgLTEwNiw3ICsxMDgs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1VbmxvY2tXaXRoUGFzc3dvcmQoY29uc3Qg
U3RyaW5nJik7CiAKICAgICAvLyBQcmV2aWV3UGxhdGZvcm1EZWxlZ2F0ZQotICAgIHZvaWQgZGVs
ZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lk
IGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZp
bmFsOwogICAgIHZvaWQgZGVsZWdhdGVEaWRGaW5pc2hMb2FkaW5nKCkgZmluYWw7CiAgICAgdm9p
ZCBkZWxlZ2F0ZURpZEZhaWxXaXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwog
CkBAIC0xMTgsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRmluaXNoZWRDb252ZXJ0aW5n
LAogICAgIH07CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX3ByZXZpZXdEYXRhOworICAgIFVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3ByZXZpZXdEYXRhOwogICAgIFJlc291cmNl
RXJyb3IgbV9wcmV2aWV3RXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX29yaWdpbmFsUmVz
cG9uc2U7CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpVcGRhdGluZyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oCmluZGV4IDA0ZWEz
NjgwNjkyYjI1MmExOTg5YzI2Y2EyMDQyMTI3NzdhYTNiN2IuLjljZWU5MzMyMGIyMzhiNGNkNzNj
ZGQyZTAzMDJjM2JmNGRhZDY4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmV2aWV3Q29udmVydGVyQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBQcmV2aWV3Q29udmVydGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVj
dCBQcmV2aWV3Q29udmVydGVyQ2xpZW50IDogQ2FuTWFrZVdlYWtQdHI8UHJldmlld0NvbnZlcnRl
ckNsaWVudD4gewogICAgIHZpcnR1YWwgflByZXZpZXdDb252ZXJ0ZXJDbGllbnQoKSA9IGRlZmF1
bHQ7CkBAIC00Miw3ICs0Miw3IEBAIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50IDogQ2Fu
TWFrZVdlYWtQdHI8UHJldmlld0NvbnZlcnRlckNsaWVudD4gewogICAgIHZpcnR1YWwgdm9pZCBw
cmV2aWV3Q29udmVydGVyRGlkRmluaXNoVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxVcGRhdGluZyhQcmV2aWV3
Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkU3Rh
cnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBy
ZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hh
cmVkQnVmZmVyJiBuZXdEYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0
ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgbmV3RGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVy
RGlkRmluaXNoQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYp
ID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0
ZXJQcm92aWRlci5oCmluZGV4IDgyNzg2MzkzZmNlZDc1NGM4NWY3YjI4OTEyNTJmNTE2YmVkMGQ1
NDkuLmI5ODZlZTQwZDE5NzUxNzRmNTRhZDI5YTE2OGNhZGYxODk0NTZjM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCkBAIC0z
Miw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVy
UHJvdmlkZXIgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI+IHsKICAg
ICB2aXJ0dWFsIH5QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmll
d0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+
JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdD
b252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByb3Zp
ZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAppbmRleCAxZTEyYjk1
NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVjMzJiLi5hMWNjNzY5NWMwYTYzZWQ3ODdlMjEw
YTdjODI3Nzc2N2RjY2U3MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJv
bWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKIAogc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogI2lmIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCkBAIC0zOCw3ICszOCw3IEBAIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJ
bmZvIHsKICNlbmRpZgogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAg
IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAKICAgICBv
cGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcAppbmRleCBkOGU2OGUzMzc3ODFmYjI5YWQzOWM1NWI5YWZkMzkwMDM1MzUzODVk
Li42NTFhOTY2NDFmYmNmNzZhYzdiMjliYjViYTA5ZjExNjI3OGJmYmE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTM3LDYzICszNyw1MiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBh
cHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBh
cHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUpOwogfQog
Ci1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
IGZpbGVEYXRhKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQogICAgIDogbV9zaXplKGZp
bGVEYXRhLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAs
IERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpIH0pOwogfQogCi1TaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKK0Zy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6
OlByb3ZpZGVyJiYgcHJvdmlkZXIpCiAgICAgOiBtX3NpemUocHJvdmlkZXIuc2l6ZSgpKQogewot
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUocHJv
dmlkZXIpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZShXVEZNb3ZlKHByb3ZpZGVyKSkgfSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7CiAgICAgYXBwZW5kKFdU
Rk1vdmUoZGF0YSkpOwogfQogCi0jaWYgVVNFKEdTVFJFQU1FUikKLVJlZjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIp
CitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIobWFwcGVkQnVmZmVyKSk7CisgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVy
JiBtYXBwZWRCdWZmZXIpCi0gICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkKKyNpZiBV
U0UoR1NUUkVBTUVSKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogewot
ICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZm
ZXIpfSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciht
YXBwZWRCdWZmZXIpKTsKIH0KLSNlbmRpZgogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBp
bmcgbWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0gICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1h
eVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKLSAg
ICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgs
IG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Ci0gICAgICAgIGlmIChtYXBwaW5nU3Vj
Y2VzcykKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1v
dmUobWFwcGVkRmlsZURhdGEpKSk7Ci0gICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKK0ZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXIm
IG1hcHBlZEJ1ZmZlcikKKyAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKKyAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZl
cikgfSk7CiB9CisjZW5kaWYKIAotc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVu
dHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21lbnRzLCBz
aXplX3Qgc2l6ZSkKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMs
IHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7CiAgICAg
Y29tYmluZWREYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CkBAIC0xMDMsMzMgKzky
LDE5IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsK
IH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6bWFrZUNv
bnRpZ3VvdXMoKSBjb25zdAogewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRklYTUU6IFdl
IG91Z2h0IHRvIGJlIGFibGUgdG8gc2V0IHRoaXMgdG8gdHJ1ZSBhbmQgaGF2ZSBubyBhc3NlcnRp
b25zIGZpcmUuCi0gICAgLy8gUmVtb3ZlIGFsbCBpbnN0YW5jZXMgb2YgYXBwZW5kaW5nIGFmdGVy
IGNhbGxpbmcgdGhpcywgYmVjYXVzZSB0aGV5IGFyZSBhbGwgTyhuXjIpIGFsZ29yaXRobXMgc2lu
Y2UgcjIxNTY4Ni4KLSAgICAvLyBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50ID0gdHJ1
ZTsKLSNlbmRpZgotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA8PSAxKQotICAgICAgICByZXR1
cm47Ci0KKyAgICBpZiAobV9jb250aWd1b3VzKQorICAgICAgICByZXR1cm4gUmVmIHsgKnN0YXRp
Y19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqPih0aGlzKSkgfTsKKyAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQorICAgICAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgaWYgKG1fc2Vn
bWVudHMuc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUobV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CiAgICAgYXV0byBjb21i
aW5lZERhdGEgPSBjb21iaW5lU2VnbWVudHNEYXRhKG1fc2VnbWVudHMsIG1fc2l6ZSk7Ci0gICAg
bV9zZWdtZW50cy5jbGVhcigpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVu
dDo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSl9KTsKLSAgICBBU1NFUlQobV9zZWdtZW50
cy5zaXplKCkgPT0gMSk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwotfQot
Ci1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAotewotICAgIGlmICht
X3NlZ21lbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY29tYmlu
ZUludG9PbmVTZWdtZW50KCk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwot
ICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKKyAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSk7CiB9CiAK
LVZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKK1ZlY3Rvcjx1
aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CiB7CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNp
emUoKSk7CkBAIC0xMzksNyArMTE0LDcgQEAgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6
Y29weURhdGEoKSBjb25zdAogICAgIHJldHVybiBkYXRhOwogfQogCi1WZWN0b3I8dWludDhfdD4g
U2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCitWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6dGFrZURhdGEoKQogewogICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHsgfTsKQEAgLTE1NCwxMyArMTI5LDEzIEBAIFZlY3Rvcjx1aW50OF90PiBT
aGFyZWRCdWZmZXI6OnRha2VEYXRhKCkKICAgICByZXR1cm4gY29tYmluZWREYXRhOwogfQogCi1T
aGFyZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3Np
dGlvbikgY29uc3QKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKIHsKICAgICBjb25zdCBEYXRhU2Vn
bWVudFZlY3RvckVudHJ5KiBlbGVtZW50ID0gZ2V0U2VnbWVudEZvclBvc2l0aW9uKHBvc2l0aW9u
KTsKICAgICByZXR1cm4geyBlbGVtZW50LT5zZWdtZW50LmNvcHlSZWYoKSwgcG9zaXRpb24gLSBl
bGVtZW50LT5iZWdpblBvc2l0aW9uIH07CiB9CiAKLWNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnRWZWN0b3JFbnRyeSogU2hhcmVkQnVmZmVyOjpnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6
ZV90IHBvc2l0aW9uKSBjb25zdAorY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnRWZWN0b3JFbnRyeSogRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBv
c2l0aW9uKHNpemVfdCBwb3NpdGlvbikgY29uc3QKIHsKICAgICBSRUxFQVNFX0FTU0VSVChwb3Np
dGlvbiA8IG1fc2l6ZSk7CiAgICAgYXV0byBjb21wYXJhdG9yID0gW10oY29uc3Qgc2l6ZV90JiBw
b3NpdGlvbiwgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSYgZW50cnkpIHsKQEAgLTE3MSw3
ICsxNDYsNyBAQCBjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yRW50cnkqIFNo
YXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9uKAogICAgIHJldHVybiBlbGVtZW50Owog
fQogCi1TdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CitTdHJpbmcgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogewogICAgIFN0cmluZ0J1
aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBmb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVu
dCkgewpAQCAtMTgxLDcgKzE1NiwyMiBAQCBTdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0cmlu
ZygpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAotUmVm
UHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29u
c3QKK3NpemVfdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpzaXplKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9zaXplOworfQorCitib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmlzRW1wdHko
KSBjb25zdAoreworICAgIHJldHVybiAhc2l6ZSgpOworfQorCitib29sIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmlzQ29udGlndW91cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGlndW91
czsKK30KKworUmVmUHRyPEFycmF5QnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0cnlD
cmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5
QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXpl
KCkpLCAxKTsKICAgICBpZiAoIWFycmF5QnVmZmVyKSB7CkBAIC0yMDAsNjggKzE5MCw2NSBAQCBS
ZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBj
b25zdAogICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFw
cGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmFwcGVuZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIEFT
U0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgbV9zZWdtZW50cy5y
ZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgp
KTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBkYXRhLm1fc2VnbWVudHMpIHsKLSAg
ICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe21fc2l6ZSwgZWxlbWVudC5zZWdtZW50
LmNvcHlSZWYoKX0pOworICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IG1fc2l6
ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICAgICAgbV9zaXplICs9IGVsZW1l
bnQuc2VnbWVudC0+c2l6ZSgpOwogICAgIH0KICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3Rl
bnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0Jl
ZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwog
ICAgIHZlY3Rvci5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7
bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBtX3Nl
Z21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3Rv
cikpIH0pOwogICAgIG1fc2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25z
aXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2Vn
bWVudCk7CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1fc2VnbWVudHMu
YXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSl9KTsKKyAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKSB9KTsKICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJUKGludGVybmFs
bHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQordm9pZCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxl
bmd0aCkKK3sKKyAgICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YSksIGxlbmd0aCk7Cit9CisKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQog
ewogICAgIG1fc2l6ZSA9IDA7CiAgICAgbV9zZWdtZW50cy5jbGVhcigpOwogICAgIEFTU0VSVChp
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjb3B5KCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjbG9u
ZSA9IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gY2xvbmUgPSBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOwog
ICAgIGNsb25lLT5tX3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRv
JiBlbGVtZW50IDogbV9zZWdtZW50cykKLSAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVj
a2VkQXBwZW5kKHtlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVm
KCl9KTsKKyAgICAgICAgY2xvbmUtPm1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgZWxlbWVu
dC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgIEFTU0VS
VChjbG9uZS0+aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgQVNTRVJUKGludGVybmFsbHlD
b25zaXN0ZW50KCkpOwogICAgIHJldHVybiBjbG9uZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCi17
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIp
KSk7Ci19Ci0KLXZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlv
bjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAordm9pZCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lk
KGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8g
c2VnbWVudHMgPSBtX3NlZ21lbnRzOwogICAgIGZvciAoYXV0byYgc2VnbWVudCA6IHNlZ21lbnRz
KQogICAgICAgICBhcHBseShTcGFuIHsgc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQu
c2VnbWVudC0+c2l6ZSgpIH0pOwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6c3RhcnRzV2l0aChj
b25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0Citib29sIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4
KSBjb25zdAogewogICAgIGlmIChwcmVmaXguZW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC0yODMsNyArMjcwLDcgQEAgYm9vbCBTaGFyZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3Qg
U3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXpl
X3QgbGVuZ3RoKSBjb25zdAorVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIHsKICAgICBWZWN0b3I8
dWludDhfdD4gZGF0YTsKICAgICBpZiAob2Zmc2V0ID49IHNpemUoKSkKQEAgLTMxMCwxMiArMjk3
LDEyIEBAIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnJlYWQoc2l6ZV90IG9mZnNldCwg
c2l6ZV90IGxlbmd0aCkgY29uc3QKICAgICByZXR1cm4gZGF0YTsKIH0KIAotdm9pZCBTaGFyZWRC
dWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3QKK3Zv
aWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXpl
X3QgbGVuZ3RoKSBjb25zdAogewogICAgIHJldHVybiBjb3B5VG8oZGVzdGluYXRpb24sIDAsIGxl
bmd0aCk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24s
IHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGxlbmd0aCkgY29uc3QKIHsKICAgICBBU1NFUlQobGVuZ3RoICsgb2Zmc2V0IDw9IHNpemUoKSk7
CiAgICAgaWYgKG9mZnNldCA+PSBzaXplKCkpCkBAIC0zNTMsMTQgKzM0MCwxMyBAQCB2b2lkIFNo
YXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXpl
X3QgbGVuZ3RoKSBjb25zdAogICAgIH0KIH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6Omhhc09uZVNl
Z21lbnQoKSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50
KCkgY29uc3QKIHsKLSAgICBhdXRvIGl0ID0gYmVnaW4oKTsKLSAgICByZXR1cm4gaXQgIT0gZW5k
KCkgJiYgKytpdCA9PSBlbmQoKTsKKyAgICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCkgPT0gMTsK
IH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECi1ib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNv
bnNpc3RlbnQoKSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5
Q29uc2lzdGVudCgpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHBvc2l0aW9uID0gMDsKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKSB7CkBAIC0zNzIsNyArMzU4LDU3IEBA
IGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5k
aWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudDo6ZGF0YSgpIGNvbnN0CitDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4m
JiBzZWdtZW50KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0g
dHJ1ZTsKK30KKworQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjb250aWd1b3VzQnVmZmVyKQoreworICAg
IEFTU0VSVChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgfHwgY29udGlndW91c0J1
ZmZlci0+aXNFbXB0eSgpKTsKKyAgICBtX3NpemUgPSBjb250aWd1b3VzQnVmZmVyLT5zaXplKCk7
CisgICAgaWYgKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSkKKyAgICAgICAgbV9z
ZWdtZW50cy5hcHBlbmQoeyAwLCBjb250aWd1b3VzQnVmZmVyLT5tX3NlZ21lbnRzWzBdLnNlZ21l
bnQuY29weVJlZigpIH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK0NvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJiBkYXRhKQorICAgIDogRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGRh
dGEpKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUg
bWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQorewor
ICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7Cisg
ICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1
Y2Nlc3MpOworICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0
YSkpKTsKKyAgICB9CisgICAgcmV0dXJuIGNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7
Cit9CisKK2NvbnN0IHVpbnQ4X3QqIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25z
dAoreworICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworfQorCitjb25z
dCBjaGFyKiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKwor
Y29uc3QgdWludDhfdCogRGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogewogICAgIGF1dG8gdmlz
aXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCkBAIC0z
OTEsMjMgKzQyNywyMyBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJs
ZURhdGEpOwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFw
cGVkRmlsZURhdGEoKSBjb25zdAorYm9vbCBEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxl
RGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKICNpZiAhVVNFKENG
KQotdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKK3Zv
aWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25z
dAogewogfQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVy
OjpkZWNvZGVyKCkgY29uc3QKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHt7IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEoKSksIHNpemUoKSB9fTsKIH0KIAotYm9vbCBTaGFy
ZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKK2Jv
b2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCiAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtNDU2LDcgKzQ5Miw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpv
cGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QK
K3NpemVfdCBEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgYXV0byB2aXNpdG9yID0g
V1RGOjptYWtlVmlzaXRvcigKICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRh
KSAtPiBzaXplX3QgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCkBAIC00NzUsNyArNTExLDcgQEAg
c2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVy
biBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNoYXJlZEJ1ZmZl
ckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gc2l6ZSkKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRh
VmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2Vn
bWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92
ZShzZWdtZW50KSkKICAgICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0aGlu
U2VnbWVudCkKICAgICAsIG1fc2l6ZShzaXplID8gKnNpemUgOiBtX3NlZ21lbnQtPnNpemUoKSAt
IHBvc2l0aW9uV2l0aGluU2VnbWVudCkKQEAgLTQ5OSwxNiArNTM1LDIxIEBAIGNvbnN0IHVpbnQ4
X3QqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9zZWdt
ZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKIH0KIAotUmVmPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0Citj
b25zdCBjaGFyKiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisK
K1JlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRl
U2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIGNvbnN0IFJl
ZjxEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKKyAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtz
ZWdtZW50LCBkYXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCi0gICAgICAgIFtzZWdt
ZW50LCBzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KKyAgICAgICAgW3NpemUgPSBz
aXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgLy8g
QWxsb2NhdGUgYSBidWZmZXIgYmlnIGVub3VnaCB0byBob2xkIGFsbCB0aGUgY2hhcmFjdGVycy4K
ICAgICBjb25zdCBzaXplX3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwpAQCAtNTM0LDcgKzU3
NSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJp
bmcpCiAgICAgfQogCiAgICAgYnVmZmVyLnNocmluayhwIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4oYnVmZmVyLmRhdGEoKSkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGJ1ZmZlcikpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBmMjNmNWQ2OWFkMzJlZDY0MGI5NTc3YjJl
NmM0NTQ5MTgzOTM2OGFkLi4xYTZhMWFlNjU4Y2ZhMDUzYjhkYWY5ZTFmZjczMjZhMTViNzVjNGRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIw
MDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTYyLDE0
NiArNjIsMTMzIEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3Owog
Ci1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CisvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVu
dCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3Ro
ZXIgb2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBh
IG5ldyBEYXRhU2VnbWVudC4KK2NsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPERhdGFTZWdtZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsgfQot
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNp
emUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRh
dGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIFdFQkNP
UkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGlu
ZyA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1h
eVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7Ci0KLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICB7Cisg
ICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworICAgIH0KIAotI2lmIFVTRShGT1VOREFUSU9O
KQotICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotICAgIFJldGFp
blB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhICopOwotICAgIHZvaWQgYXBwZW5kKE5TRGF0YSAq
KTsKLSNlbmRpZgogI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVD
RkRhdGEoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0
YVJlZik7Ci0gICAgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyAgICBzdGF0aWMgUmVmPERhdGFT
ZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBV
U0UoR0xJQikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwot
ICAgIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVm
PERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYg
VVNFKEdTVFJFQU1FUikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1h
cHBlZE93bmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJl
ZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0gICAgLy8gQ2FsbGluZyBk
YXRhKCkgY2F1c2VzIGFsbCB0aGUgZGF0YSBzZWdtZW50cyB0byBiZSBjb3BpZWQgaW50byBvbmUg
c2VnbWVudCBpZiB0aGV5IGFyZSBub3QgYWxyZWFkeS4KLSAgICAvLyBJdGVyYXRlIHRoZSBzZWdt
ZW50cyB1c2luZyBiZWdpbigpIGFuZCBlbmQoKSBpbnN0ZWFkLgotICAgIC8vIEZJWE1FOiBBdWRp
dCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBp
dGVyYXRpb24gaWYgcG9zc2libGUuCi0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0Owot
ICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlE
YXRhKCkgY29uc3Q7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6
ZV90IGxlbmd0aCkgY29uc3Q7Ci0KLSAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2
b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNh
ZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+
IGV4dHJhY3REYXRhKCk7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
U2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KIAotICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZm
ZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKLSAgICAv
LyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZs
YXQgYnVmZmVyLgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KSBjb25zdDsKLQotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0K
LSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lk
IGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50
OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwg
bGVuZ3RoKTsgfQotICAgIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKLQotICAgIHZv
aWQgY2xlYXIoKTsKKyAgICBzdHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICBGdW5jdGlvbjxjb25z
dCB1aW50OF90KigpPiBkYXRhOworICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAg
ICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwotICAgIHZvaWQgY29w
eVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLSAgICB2b2lkIGNv
cHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29u
c3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlk
ZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikp
KTsgfQogCi0gICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGlt
bXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCi0g
ICAgLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFT
ZWdtZW50LgotICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPERhdGFTZWdtZW50PiB7Ci0gICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBj
b25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHNpemVf
dCBzaXplKCkgY29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQg
UmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKIAotICAgICAg
ICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkK
LSAgICAgICAgewotICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwotICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOwotICAgICAg
ICB9CisgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7CiAKK3ByaXZhdGU6
CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAg
ICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjaWYgVVNFKENGKQotICAg
ICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4m
JiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkp
KTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0
YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYK
ICNpZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdS
ZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQo
V1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0
ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9
CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdt
ZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGlj
aXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCisgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCi0gICAgICAg
IHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRh
KSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0K
KyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSAgICAgICAgc3RydWN0
IFByb3ZpZGVyIHsKLSAgICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7
Ci0gICAgICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKLQotICAg
ICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9
Ci0KLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRl
TlNEYXRhKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgICAgICBib29sIGNvbnRhaW5zTWFwcGVkRmls
ZURhdGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIERhdGFTZWdtZW50KFZlY3Rv
cjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3Zl
KGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShD
RikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQotICAg
ICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIERhdGFT
ZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxl
RGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlm
CiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBl
ZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZN
b3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKKyNl
bmRpZgorICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKKyAgICAgICAgUHJvdmlk
ZXI+IG1faW1tdXRhYmxlRGF0YTsKKyAgICBmcmllbmQgY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKKyNpZiAhVVNFKEZPVU5EQVRJT04pCisgICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKICNlbmRpZgotICAgICAgICBEYXRhU2Vn
bWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1f
aW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJv
dmlkZXImJiBwcm92aWRlcikKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUo
cHJvdmlkZXIpKSB7IH0KK307CisKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4geworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKTsgfQorICAgIHN0YXRpYyBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIo
ZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBj
cmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIHN0YXRpYyBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdU
Rk1vdmUoYnVmZmVyKSkpOyB9CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7IH0KKyAgICBzdGF0aWMg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIm
JiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KFdURk1vdmUocHJvdmlkZXIpKSk7IH0KIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVp
bnQ4X3Q+LAorI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0
cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOworI2Vu
ZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUo
Q0ZEYXRhUmVmKTsKICNlbmRpZgorCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRy
PEdCeXRlcz4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7CiAjZW5kaWYKKwogI2lmIFVTRShHU1RSRUFNRVIpCi0g
ICAgICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93
bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhLAotICAgICAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKLSAgICAgICAgZnJp
ZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAgICB9OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rv
cjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1
aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworCisgICAg
Ly8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtl
IHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsK
KworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0CisgICAgLy8gQXJyYXlCdWZmZXIgd2l0
aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkg
Y29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKLSAgICB2b2lkIGZv
ckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90
PiYpPiYpIGNvbnN0OwotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4
X3Q+JiBwcmVmaXgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDb250aWd1b3Vz
KCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gY29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRl
c3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkg
Y29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1
bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBw
cmVmaXgpIGNvbnN0OworCisgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2Vn
bWVudDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQKIAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZl
Y3RvckVudHJ5IHsKICAgICAgICAgc2l6ZV90IGJlZ2luUG9zaXRpb247CkBAIC0yMTAsNTYgKzE5
NywxODIgQEAgcHVibGljOgogICAgIHVzaW5nIERhdGFTZWdtZW50VmVjdG9yID0gVmVjdG9yPERh
dGFTZWdtZW50VmVjdG9yRW50cnksIDE+OwogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9p
dGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuYmVnaW4oKTsgfQogICAg
IERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBt
X3NlZ21lbnRzLmVuZCgpOyB9Ci0gICAgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3Q7CiAKICAgICAvLyBiZWdp
biBhbmQgZW5kIHRha2UgTygxKSB0aW1lLCB0aGlzIHRha2VzIE8obG9nKE4pKSB0aW1lLgotICAg
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6
ZV90IHBvc2l0aW9uKSBjb25zdDsKIAotICAgIFN0cmluZyB0b0hleFN0cmluZygpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0b0hleFN0cmluZygpIGNvbnN0OwogCiAgICAgdm9p
ZCBoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0OwogCi0gICAgV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdDsKKyAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFyZWRCdWZm
ZXImIG90aGVyKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KKyAgICBXRUJD
T1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3VvdXMoKSBj
b25zdDsKIAotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7
Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAg
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKLSAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBj
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9z
ZWdtZW50czsKKyAgICBib29sIG1fY29udGlndW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgdWlu
dDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYpOwogI2lmIFVTRShDRikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKENG
RGF0YVJlZik7CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoR0J5dGVzKik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYp
OwogI2VuZGlmCisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAotICAgIHZvaWQgY29tYmluZUlu
dG9PbmVTZWdtZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBw
ZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBw
ZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7CisjZW5kaWYKKyNpZiBVU0Uo
Q0YpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyNlbmRpZgog
Ci0gICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1
cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVj
dG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigp
OwogCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworICAg
IC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0
aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KKyAg
ICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKICAgICBjb25zdCBE
YXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0
aXRpb24pIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZy
b21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKLQotICAgIHNpemVfdCBtX3Np
emUgeyAwIH07Ci0gICAgbXV0YWJsZSBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOwotCiAj
aWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXNCZWVuQ29tYmluZWRJbnRv
T25lU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBpbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNv
bnN0OwogI2VuZGlmCiB9OwogCi1pbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6
ZXh0cmFjdERhdGEoKQorLy8gQSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGlzIGEgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciB0aGF0IGFsbG93cyB0byBkaXJlY3RseSBhY2Nlc3MgaXRzIGNvbnRlbnQg
dmlhIHRoZSBkYXRhKCkgYW5kIHJlbGF0ZWQgbWV0aG9kcy4KK2NsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIgOiBwdWJsaWMgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB7CitwdWJsaWM6CisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBpZiBjb25z
dGV4cHIgKCFzaXplb2YuLi4oQXJncykpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAo
c2l6ZW9mLi4uKEFyZ3MpID09IDEKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdz
LCBSZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikp
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUo
YnVmZmVyKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gRW5zdXJlIHRoYXQgeW91IGNh
bid0IGNhbGwgYXBwZW5kIG9uIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBkaXJlY3RseS4KKyAg
ICAvLyBXaGVuIGNhbGxlZCBmcm9tIHRoZSBiYXNlIGNsYXNzLCBpdCB3aWxsIGFzc2VydC4KKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4p
ID0gZGVsZXRlOworCisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCAqZGF0YSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIo
KSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8s
IFllcyB9OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgs
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6
OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKKwor
I2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+
IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVf
RVhQT1JUIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OworI2VuZGlm
CisjaWYgVVNFKEdMSUIpCisgICAgV0VCQ09SRV9FWFBPUlQgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0
ZUdCeXRlcygpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNl
Z21lbnQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9OworCitjbGFzcyBTaGFyZWRCdWZmZXJC
dWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1
aWxkZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIHsKKyAg
ICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciBhcyBhbGwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUg
aW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKCFidWZmZXIg
fHwgYnVmZmVyLT5oYXNPbmVSZWYoKSkgeworICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3Zl
KGJ1ZmZlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5k
KCpidWZmZXIpOworICAgIH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICB7CisgICAgICAgIC8vIFdlIGRv
IG5vdCB3YW50IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIgYXMgYWxsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAg
ICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgICAgIGlmIChidWZmZXItPmhhc09uZVJlZigpKSB7
CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIuZ2V0KCkpKTsK
KyAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlcihBcmdzJiYuLi4gYXJncykKKyAgICAgICAgOiBtX2J1ZmZlcihGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkgeyB9CisKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4g
YXJncykKKyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAgICBtX2J1ZmZlci0+
YXBwZW5kKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQorCisgICAgZXhwbGlj
aXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFpc051bGwoKTsgfQorICAgIGJvb2wg
aXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyOyB9CisgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgpIDogdHJ1ZTsgfQor
CisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5z
aXplKCkgOiAwOyB9CisKKyAgICB2b2lkIHJlc2V0KCkgeyBtX2J1ZmZlciA9IG51bGxwdHI7IH0K
KyAgICB2b2lkIGVtcHR5KCkKKyAgICB7CisgICAgICAgIHJlc2V0KCk7CisgICAgICAgIGVuc3Vy
ZUJ1ZmZlcigpOworICAgIH0KKworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBn
ZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgp
IDogRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAgICBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gdGFrZSgpCisgICAgeworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAg
ICAgICAgcmV0dXJuIG1fYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgfQorCitwcml2YXRl
OgorICAgIHZvaWQgZW5zdXJlQnVmZmVyKCkKKyAgICB7CisgICAgICAgIGlmICghbV9idWZmZXIp
CisgICAgICAgICAgICBtX2J1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgIH0KKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cit9
OworCitpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmV4dHJh
Y3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkpCiAgICAgICAgIHJldHVybiB0YWtlRGF0
YSgpOwpAQCAtMjY4LDIxICszODEsMjEgQEAgaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRC
dWZmZXI6OmV4dHJhY3REYXRhKCkKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVy
RGF0YVZpZXcgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgU2hhcmVkQnVm
ZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdt
ZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAg
U2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3Qg
bmV3U2l6ZSk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKICAgICBjb25zdCB1aW50OF90KiBk
YXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBjb25zdCBjaGFyKiBk
YXRhQXNDaGFyUHRyKCkgY29uc3Q7CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lmIFVTRShGT1VOREFUSU9OKQogICAgIFJldGFp
blB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlmCiBwcml2YXRlOgotICAg
IGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAgY29u
c3QgUmVmPERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRp
b25XaXRoaW5TZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3NpemU7CiB9OwogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOworUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyLmNwcAppbmRleCBjZGI2ZTcwMzQwNGQ0MjZkZDIxYjQ3OWZhODljMGRhOWI4
YzQ5ZjhlLi45ZDA1NWNlMjdkODhjM2Q2MmU1YmQxY2Q0NmFkOTFmNWNjNDMxZjQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3Bw
CkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShNSFRN
TCkKIAotU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNo
YXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcikKK1NoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKQogICAgIDog
bV9pdGVyYXRvckN1cnJlbnQoYnVmZmVyLT5iZWdpbigpKQogICAgICwgbV9pdGVyYXRvckVuZChi
dWZmZXItPmVuZCgpKQogICAgICwgbV9zZWdtZW50KG1faXRlcmF0b3JDdXJyZW50ICE9IG1faXRl
cmF0b3JFbmQgPyBtX2l0ZXJhdG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0YSgpIDogbnVsbHB0cikK
QEAgLTQ0LDcgKzQ0LDcgQEAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWMKIHsKIH0KIAotU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciog
YnVmZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCitTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBj
b25zdCBjaGFyKiBzZXBhcmF0b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVudChidWZmZXItPmJl
Z2luKCkpCiAgICAgLCBtX2l0ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAgLCBtX3NlZ21l
bnQobV9pdGVyYXRvckN1cnJlbnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRlcmF0b3JDdXJyZW50
LT5zZWdtZW50LT5kYXRhKCkgOiBudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKaW5kZXggNWQ0ZTZmZWU1ODJjNjYxNmZkMDdl
Mzk5NGZmNzVjOGYwN2EyZmNlMS4uMWM2NDA4ZDRjNzM2YTFjNGE0NWNlZTdiM2Y2OTY1N2JjOWEy
NjE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVu
a1JlYWRlci5oCkBAIC00MSw4ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgewogcHVibGljOgotICAgIFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFZlY3RvcjxjaGFyPiYg
c2VwYXJhdG9yKTsKLSAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqLCBj
b25zdCBjaGFyKiBzZXBhcmF0b3IpOworICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcik7CisgICAg
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IGNo
YXIqIHNlcGFyYXRvcik7CiAKICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBWZWN0b3I8Y2hh
cj4mKTsKICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBjaGFyKik7CkBAIC01OCw4ICs1OCw4
IEBAIHB1YmxpYzoKICAgICBzaXplX3QgcGVlayhWZWN0b3I8dWludDhfdD4mLCBzaXplX3QpOwog
CiBwcml2YXRlOgotICAgIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0
ZXJhdG9yIG1faXRlcmF0b3JDdXJyZW50OwotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JFbmQ7CisgICAgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0
b3JDdXJyZW50OworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yRW5kOwogICAgIGNvbnN0IHVpbnQ4X3Qq
IG1fc2VnbWVudCB7IG51bGxwdHIgfTsKICAgICBzaXplX3QgbV9zZWdtZW50SW5kZXggeyAwIH07
CiAgICAgVmVjdG9yPGNoYXI+IG1fc2VwYXJhdG9yIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKaW5kZXggYjJkN2E1NTBkNDYwZTk0Y2Qz
MTUxMzRhMzE5NWJjZDkxYzdiNzg5NC4uYTRiNGJiMTA0YjRkODQwMTViOGFhNWI1M2U3ZGZhNzg4
Y2VkMjVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVi
b2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5j
cHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyhj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9jdXN0b21EYXRh
LndyaXRlU3RyaW5nKHR5cGUsIHZhbHVlKTsKIH0KIAotdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3
cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2
b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgbV9ub25EZWZhdWx0RGF0YVR5
cGVzLmFkZCh0eXBlKTsKICAgICBtX2N1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIFdURk1vdmUo
ZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVi
b2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCmluZGV4
IGMwOWI2ZGUzMWYyZWRlYmUwMTg4ZGM5YzQ2NmEyNzFlMWI4YjllMTQuLmVkZDcxMzYyM2YwNmQy
MmIzOGU4MzJhMjgzN2ZlNjY5OTlkZmQ3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
dGF0aWNQYXN0ZWJvYXJkLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
CiBjbGFzcyBTdGF0aWNQYXN0ZWJvYXJkIGZpbmFsIDogcHVibGljIFBhc3RlYm9hcmQgewogcHVi
bGljOgpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1
c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBmaW5hbDsKIAogICAgIHZvaWQgd3JpdGVTdHJp
bmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpIGZpbmFsOwotICAgIHZv
aWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
KTsKKyAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdJbkN1c3RvbURhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHZvaWQgY2xlYXIo
KSBmaW5hbDsKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaAppbmRleCA2ODc5
NTkwMGM1YWRmOWNjOTA0NWUwZWFiYjIyYjE4ZmE2Njk2MzE0Li4xZDY1YmM0MDNhZDg1MjQzYzY3
MjVlNzA0NDhkNmNkYWRjY2NjZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL05vd1BsYXlpbmdJbmZvLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogc3RydWN0IE5vd1BsYXlpbmdJbmZvQXJ0d29yayB7CiAgICAgU3RyaW5nIHNyYzsKICAgICBT
dHJpbmcgbWltZVR5cGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CiAKICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgTm93UGxheWluZ0luZm9BcnR3b3JrJiBvdGhlcikgY29uc3QKICAgICB7
CkBAIC02Nyw3ICs2Nyw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBzdGQ6Om9w
dGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gTm93UGxheWluZ0luCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGltYWdlRGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGltYWdlRGF0YSkpCiAgICAg
ICAgIHJldHVybiB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAppbmRleCBlOGIxOWJmMzRl
YmEyM2I4NTcyMDdiZTg4Y2UxYjQ1YmY4ZjJjY2MzLi40MWI2OGNiYTA2NzBmZjYzZjVjYjEwNDRj
ZGQyOTlmNjQ2NmNmOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCkBAIC0xMzAsNyArMTMw
LDcgQEAgY2xhc3MgQXVkaW9GaWxlUmVhZGVyV2ViTURhdGEgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cisg
ICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogI2lmIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCiAgICAgUmVmPEF1ZGlvVHJhY2tQcml2YXRlV2ViTT4gbV90cmFjazsKICNlbmRp
ZgpAQCAtMTgyLDcgKzE4Miw3IEBAIGJvb2wgQXVkaW9GaWxlUmVhZGVyOjppc01heWJlV2ViTShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YVNpemUpIGNvbnN0CiAKIHN0ZDo6dW5pcXVl
X3B0cjxBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0YT4gQXVkaW9GaWxlUmVhZGVyOjpkZW11eFdlYk1E
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIHsKLSAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFTaXplKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhU2l6
ZSk7CiAgICAgYXV0byBwYXJzZXIgPSBhZG9wdFJlZihuZXcgU291cmNlQnVmZmVyUGFyc2VyV2Vi
TSgpKTsKICAgICBib29sIGVycm9yID0gZmFsc2U7CiAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gYXVkaW9UcmFja0lkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJiNzg4
YWZhMWU5MWY5YTRkM2FiMzZlMmEwYzA4MTJjOTRlMTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkx
YjlhNTY3ZTUxMDg5YjU3MTlmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAg
LTM0MSw3ICszNDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxh
eWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxh
cHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAgIH0KICAgICBpZiAobm93UGxheWlu
Z0luZm8uYXJ0d29yayAmJiBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAg
ICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEt
PmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZv
LmFydHdvcmstPmltYWdlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93
UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0Fy
dHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCks
IGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpu
dW1iZXIobm93UGxheWluZ0luZm8uYXJ0d29yay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVu
Y29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5j
cHAKaW5kZXggNDQ3M2VjMjhkMDRjNTQzNjMyM2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMi4uOWIzZWNh
MWExNTQ0OThjMGU3ZTM0YzdjOTEzMzY5NWNjZDk0N2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9p
ZCBLZXllZEVuY29kZXJDRjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0
KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNv
ZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZp
bmlzaEVuY29kaW5nKCkKIHsKICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGUHJvcGVydHlMaXN0
Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3Jvb3REaWN0aW9uYXJ5LmdldCgpLCBr
Q0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCwgMCwgbnVsbHB0cikpOwogICAgIGlmICgh
ZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCmluZGV4IGY1ODZjMDJiYjE1YmYz
OWI3MjgzZmJhOWFhNWU4YTEyNmI4NGZlZmUuLmZhYjY2ZmNiY2E4ZjQ3MTk3ZTk4ZDc5YmYwMmVm
ODE2MWE0Mjc2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckNGKCk7CiAK
IHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2Rp
bmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2Rl
Qm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNmI2NjIxN2ZmMTYxZGUzNzRmMWNl
MzFkNWQzNDYzNDBiYjJmY2I5MS4uNjhlNmQwMDU2YTdjYzExYmU4NzQ1NTQ1ZDE5MjkxNDMwMGZm
NGRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVy
Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNw
cApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIHsKICAgICBhcHBlbmQoZGF0
YSk7CiB9CkBAIC00MSw3ICs0MSw3IEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0
YVJlZiBkYXRhKQogLy8gVXNpbmcgRm91bmRhdGlvbiBhbGxvd3MgZm9yIGFuIGV2ZW4gbW9yZSBl
ZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiwKIC8vIHNvIG9ubHkgdXNl
IHRoaXMgdmVyc2lvbiBmb3Igbm9uLUZvdW5kYXRpb24uCiAjaWYgIVVTRShGT1VOREFUSU9OKQot
UmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAor
UmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRh
KCkgY29uc3QKIHsKICAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkgewogICAgICAgICBp
ZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lmPFJldGFpblB0cjxDRkRhdGFSZWY+PigmbV9zZWdt
ZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpKQpAQCAtNTUsMTIgKzU1LDEyIEBAIFJl
dGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIH0K
ICNlbmRpZgogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFS
ZWYgZGF0YSkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKGRhdGEpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKGRhdGEpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlO
b3ROZWVkZWRTb29uKCkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGludE1l
bW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogewogICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkg
OiBtX3NlZ21lbnRzKSB7CiAgICAgICAgIGlmIChlbnRyeS5zZWdtZW50LT5oYXNPbmVSZWYoKSkg
ewpAQCAtNzAsOSArNzAsOSBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRl
ZFNvb24oKSBjb25zdAogICAgIH0KIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRh
dGFSZWYgZGF0YSkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJl
ZiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7
CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1f
c2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoZGF0YSl9KTsKICAg
ICAgICAgbV9zaXplICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlci5oCmluZGV4IDA3OTdkZmJlOGQwMThiZTYzNjE3NDRjNThmODkyZGQ1NmVkNjg5YzUuLmNi
ZTg3NzFhNDVkODYyY2I1YWIwNWVjYTM5OTkyN2UwNzgzOGY1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJl
Y2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZERh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBm
aW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiByZXBs
YWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1JlcXVpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50
RmlsdGVyLm1tCmluZGV4IDQyOTBkYjEyOGQwMDBhNDBlZWY3MGZkMjk0MWQ2MzQ0OTA0NmRlMDMu
LmE1YWJlMDY2MzFhNTZlMDQ1NjM0ZjgxYTJlODNhMjBmZGJiOGY3NjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25D
b250ZW50RmlsdGVyLm1tCkBAIC0xNzUsMTAgKzE3NSwxMCBAQCB2b2lkIE5ldHdvcmtFeHRlbnNp
b25Db250ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQogICAgIHNlbWFwaG9yZS53YWl0
KCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVy
OjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE5l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAogewog
ICAgIEFTU0VSVChkaWRCbG9ja0RhdGEoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG1fcmVwbGFjZW1lbnREYXRhLmdldCgpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVwbGFjZW1lbnREYXRhLmdldCgpKTsKIH0KIAogQ29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjp1bmJsb2Nr
SGFuZGxlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaAppbmRleCAwNjhjZGNiMzgz
ZjQyMzY1YWMzMjY0ZTIyOWE2ZDYzYmMyYjRhYmQ2Li42NzlhZTkzMjk1MTdlMWYzOTQzYmE1NzYy
YWM4ZjU2ZTg2MGM4YzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKQEAgLTQ1LDcgKzQ1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3Zl
cnJpZGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgp
IGNvbnN0IG92ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50
YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQppbmRleCBiNDYxZjk3NTM2ZGUzYTE1
ODEzYTU4MjdiODY3MTM4Yjk2ZDRmMzhjLi5lNTEzZDU2NWJkYTY3Mjk2Zjk5OGRkOTUyMmZlMWY4
YmUwZTk2ZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJl
bnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQpAQCAtMTA5LDEwICsxMDks
MTAgQEAgdm9pZCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6ZmluaXNoZWRBZGRpbmdE
YXRhKCkKICAgICB1cGRhdGVGaWx0ZXJTdGF0ZSgpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBQ
YXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKK1Jl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6
cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkpOwot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5nZXQoKSk7
CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50
RGF0YS5nZXQoKSk7CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNmYy
OGU4MjQzNjBjY2QzMDg2YzAzMThmYWU0MDk4ZjFlZGUyOGUyNS4uN2ZjMGU4MzFmNjk5MGNjM2Ix
MGJkNjFjZTlmNmFmYmFjOWIwMTUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgTlNCaXRt
YXBJbWFnZUZpbGVUeXBlIGJpdG1hcFBOR0ZpbGVUeXBlKCkKIH0KICNlbmRpZiAvLyBQTEFURk9S
TShNQUMpCiAKLS8vIE1ha2luZyB0aGlzIG5vbi1pbmxpbmUgc28gdGhhdCBXZWJLaXQgMidzIGRl
Y29kaW5nIGRvZXNuJ3QgaGF2ZSB0byBpbmNsdWRlIFNoYXJlZEJ1ZmZlci5oLgorLy8gTWFraW5n
IHRoaXMgbm9uLWlubGluZSBzbyB0aGF0IFdlYktpdCAyJ3MgZGVjb2RpbmcgZG9lc24ndCBoYXZl
IHRvIGluY2x1ZGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci5oLgogUGFzdGVib2FyZFdlYkNvbnRl
bnQ6OlBhc3RlYm9hcmRXZWJDb250ZW50KCkgPSBkZWZhdWx0OwogUGFzdGVib2FyZFdlYkNvbnRl
bnQ6On5QYXN0ZWJvYXJkV2ViQ29udGVudCgpID0gZGVmYXVsdDsKIApAQCAtMjExLDExICsyMTEs
MTEgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXNGb3JMZWdhY3lVbnNhZmVCaW5k
aW5ncygpCiB9CiAKICNpZiBQTEFURk9STShNQUMpCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCitzdGF0aWMgUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFw
SW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxv
Y10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9u
VXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKIH0KICNlbmRpZgogCkBAIC0zMTYsNyArMzE2
LDcgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hl
Y2soKQogICAgIHJldHVybiBjb2NvYVR5cGVzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQ
YXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFk
QnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAg
ICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1t
CmluZGV4IDllZTBjMGI1NWQ3OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLjA5OTg0NDE5
MWViNDFhM2Q5YWY5NTFmY2U1YTBiZDYwNWU4N2Y3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEg
QEAKICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNv
cmVTaGFyZWRCdWZmZXJEYXRhIDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRh
U2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNl
Z21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXpl
OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRh
dGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXpl
OihOU1VJbnRlZ2VyKXNpemU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVk
QnVmZmVyRGF0YSB7Ci0gICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNl
Z21lbnQ+IF9kYXRhU2VnbWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJ
bnRlZ2VyIF9zaXplOwogfQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBb
c3VwZXIgZGVhbGxvY107CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50
Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBw
b3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVu
dCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50
ZWdlcilzaXplCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJl
dHVybiBuaWw7CkBAIC04OCw0NSArODgsNDMgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkK
K1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVh
dGUoTlNEYXRhICpkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihicmlkZ2VfY2FzdChkYXRhKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIoYnJpZGdlX2Nhc3QoZGF0YSkpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZm
ZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFw
cGVuZChOU0RhdGEgKmRhdGEpCiB7CiAgICAgcmV0dXJuIGFwcGVuZChicmlkZ2VfY2FzdChkYXRh
KSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkg
Y29uc3QKK1JldGFpblB0cjxOU0RhdGE+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5T
RGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KGNyZWF0ZUNGRGF0YSgpKTsK
IH0KIAotUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBj
b25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
Q0ZEYXRhKCkgY29uc3QKIHsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKICAgICBpZiAo
IW1fc2VnbWVudHMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUo
bnVsbHB0ciwgbnVsbHB0ciwgMCkpOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAx
KTsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdtZW50c1swXS5zZWdtZW50LT5jcmVhdGVO
U0RhdGEoKSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
RnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGF1dG8gcmVzb3VyY2VEYXRh
ID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOmZpbGVQYXRoXSkKLSAgICAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7CisgICAgICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotUmV0YWluUHRyPE5TQXJyYXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNE
YXRhQXJyYXkoKSBjb25zdAorUmV0YWluUHRyPE5TQXJyYXk+IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKIHsKICAgICByZXR1cm4gY3JlYXRlTlNBcnJh
eShtX3NlZ21lbnRzLCBbXSAoYXV0byYgc2VnbWVudCkgewogICAgICAgICByZXR1cm4gc2VnbWVu
dC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKTsKICAgICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0
YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFp
blB0cjxOU0RhdGE+IERhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJl
dHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0
YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKaW5kZXgg
ZmJjMjgzZmJjMzM2OWJmODI3ZTMxNjk5NGM0Yzk0ZTA2MzYzY2I4MS4uMmRlNDE5MzRkYTE5ODc5
ZDc1YzBkZjhhODllNjRlNTk5YzI5YWUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCkBAIC00Niw3ICs0Niw3IEBAIGNs
YXNzIExvZ2dlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9u
Owogc3RydWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb247CiAKQEAgLTU0LDcgKzU0LDcgQEAg
Y2xhc3MgQ0RNSW5zdGFuY2VDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFu
Y2VDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZUNsaWVudCgpID0g
ZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0
YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBT
dHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogLy8gSmF2
YVNjcmlwdCdzIGhhbmRsZSB0byBhIENETUluc3RhbmNlLCBtdXN0IGJlIHVzZWQgZnJvbSB0aGUK
QEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNj
ZXNzQ2FsbGJhY2smJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3RvcmFnZURp
cmVjdG9yeShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Np
b24+IGNyZWF0ZVNlc3Npb24oKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCmluZGV4IDM3Y2Qw
N2M3YmYyZGM3NWU0MWZkNWM2YzdkZWNmNDNlMTAzOWUxMTQuLmQyNTkyMjViYTllMDJhNjRkMGNl
Y2Q2MTUxZmRmOTNmNGYyNDY2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCkBAIC00MywxNiAr
NDMsMTYgQEAgY2xhc3MgTG9nZ2VyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENETUlu
c3RhbmNlU2Vzc2lvbkNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1JbnN0YW5jZVNl
c3Npb25DbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZVNlc3Npb25D
bGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB1c2luZyBLZXlTdGF0dXMgPSBDRE1LZXlTdGF0dXM7
Ci0gICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVk
QnVmZmVyPiwgS2V5U3RhdHVzPj47CisgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9y
PHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIEtleVN0YXR1cz4+OwogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBtZXNzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlKENETU1l
c3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgPSAwOwogICAg
IHVzaW5nIFBsYXRmb3JtRGlzcGxheUlEID0gdWludDMyX3Q7CiAgICAgdmlydHVhbCBQbGF0Zm9y
bURpc3BsYXlJRCBkaXNwbGF5SUQoKSA9IDA7CkBAIC03OCwxMyArNzgsMTMgQEAgcHVibGljOgog
ICAgICAgICBTdWNjZWVkZWQsCiAgICAgfTsKIAotICAgIHVzaW5nIExpY2Vuc2VDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNz
VmFsdWUgc3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSA9IDA7CisgICAgdXNpbmcgTGljZW5zZUNh
bGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1
YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47CisgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2sm
JikgPSAwOwogCiAgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gQ0RNSW5zdGFuY2VTZXNzaW9u
Q2xpZW50OjpLZXlTdGF0dXNWZWN0b3I7Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6cGFpcjxN
ZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6
OnBhaXI8TWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgdXNp
bmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHNl
c3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRL
ZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgc3RkOjpvcHRp
b25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5z
ZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNw
b25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKIAogICAgIGVudW0gY2xhc3MgU2Vz
c2lvbkxvYWRGYWlsdXJlIDogdWludDhfdCB7CiAgICAgICAgIE5vbmUsCkBAIC0xMDAsNyArMTAw
LDcgQEAgcHVibGljOgogICAgIHVzaW5nIENsb3NlU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPjsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSA9IDA7CiAKLSAgICB1c2lu
ZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChLZXlT
dGF0dXNWZWN0b3ImJiwgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiwgU3VjY2Vz
c1ZhbHVlKT47CisgICAgdXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PiYmLCBTdWNjZXNzVmFsdWUpPjsKICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBS
ZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdG9y
ZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAppbmRl
eCBjYzZkYzdmMTQwY2Q2N2QyYjdiODRmNmFiMmMyODQzMTZkZmRkY2NmLi41MmE2MTQ4YzgzY2Q1
MzkzYzhmODc0ZWQ4NWFkOGJmMjdlNWJlNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC03Myw4ICs3Myw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSA9IDA7CiAgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXIm
KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJl
c3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNz
aW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKaW5kZXgg
ZjIxOGY5NzkwNGZiYmE0OWYxZWJkZjQ4ZTIwNWZlNzNkZmFmYjY0OC4uNGJhNzViZjAwZDlmNzEz
YjVhZmJiYTc5MzQwMTk3MTZjZDhmMDM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIENE
TUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIEtleVN0b3JlOjpjb252ZXJ0VG9KU0tl
eVN0YXR1c1ZlY3RvcigpIGNvbnN0CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNW
ZWN0b3Iga2V5U3RhdHVzVmVjdG9yOwogICAgIGtleVN0YXR1c1ZlY3Rvci5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KG51bUtleXMoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBrZXkgOiBtX2tleXMp
Ci0gICAgICAgIGtleVN0YXR1c1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQoc3RkOjpwYWlyPFJlZjxT
aGFyZWRCdWZmZXI+LCBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1cz4geyBrZXktPmlkQXNT
aGFyZWRCdWZmZXIoKSwga2V5LT5zdGF0dXMoKSB9KTsKKyAgICAgICAga2V5U3RhdHVzVmVjdG9y
LnVuY2hlY2tlZEFwcGVuZChzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBD
RE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1cz4geyBrZXktPmlkQXNTaGFyZWRCdWZmZXIoKSwg
a2V5LT5zdGF0dXMoKSB9KTsKICAgICByZXR1cm4ga2V5U3RhdHVzVmVjdG9yOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaAppbmRl
eCBhNTg0YjZjZDI2NmIwOTgwOTAyNTRkN2RjYmRkYmY2MGQ5MzMxZmJiLi40NWY2ZWViYTQ3Mzdl
MmRmMzZkODU2YjcyMjQ1M2ZhZWRhYTNhMzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgS2V5SGFuZGxlKHN0YXR1cywg
V1RGTW92ZShrZXlJRCksIFdURk1vdmUoa2V5SGFuZGxlVmFsdWUpKSk7CiAgICAgfQotICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9pZC5zaXplKCkpOyB9CisgICAgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9pZC5kYXRhKCksIG1faWQuc2l6ZSgpKTsgfQog
CiAgICAgYm9vbCB0YWtlVmFsdWVJZkRpZmZlcmVudChLZXlIYW5kbGVWYWx1ZVZhcmlhbnQmJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1VdGlsaXRpZXMuY3BwCmluZGV4IDViZWJjYjQ5YWE4ZWI5YTJiYjA3MTFlYWUwODBmMzc3ZTIy
Yjk4MzQuLmZjYTZmMjM4OGE1NmE2YTFjNzI0NzBlNWE0NmZkZDI4ZjA3Mzc1MGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0
aWVzLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFj
ZSBDRE1VdGlsaXRpZXMgewogCi1SZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3Qo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpT
T05PYmplY3QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8v
IEZhaWwgb24gbGFyZ2UgYnVmZmVycyB3aG9zZSBzaXplIGRvZXNuJ3QgZml0IGludG8gYSAzMi1i
aXQgdW5zaWduZWQgaW50ZWdlci4KICAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci5zaXplKCk7CkBA
IC00Niw3ICs0Niw3IEBAIFJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAv
LyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBv
YmplY3QgKGlmIGFueSkuCi0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAg
YXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
VXRpbGl0aWVzLmgKaW5kZXggNzRmNTE1YjBiZDJhODcxNjhlZWYyNGIxOGY5NWRlYWJlZTgyOGU2
Yy4uZmNmNWJkZGE3YzU5N2QzYzNhYzM0OWVlMTc4OWU0YWQ2ZTBjOTU5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmgK
QEAgLTM1LDExICszNSwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBDRE1V
dGlsaXRpZXMgewogCi1SZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3Qg
U2hhcmVkQnVmZmVyJik7CitSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVh
cktleS5jcHAKaW5kZXggZGQzNDU3YmZkZThjOTIxODc3ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJlZC4u
ZGMzOGQyODZmMWUxMWI5MjgyMmUxMDMxYjljMDA3MjljOTdlOGM2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5LmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHN0YXRpYyBib29sIHBhcnNlTGlj
ZW5zZVJlbGVhc2VBY2tub3dsZWRnZW1lbnRGb3JtYXQoY29uc3QgSlNPTjo6T2JqZWN0JiByb290
KQogLy8gXTsKIAogLy8gVGhpcyBmdW5jdGlvbiBleHRyYWN0cyB0aGUgS2V5SWRzIGNvdW50IGFu
ZCB0aGUgbG9jYXRpb24gb2YgdGhlIGZpcnN0IEtleUlkIGluIGluaXREYXRhIGJ1ZmZlci4KLXN0
YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25G
cm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitzdGF0aWMgc3Rk
OjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJ
bml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBz
dGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAoMCwgMCk7CiAKQEAgLTEzOCw3
ICsxMzgsOCBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtl
eWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogICAgIGlmIChpbml0RGF0YS5pc0Vt
cHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKQogICAgICAgICByZXR1cm4ga2V5SWRzTWFwOwogCi0gICAgYXV0byogZGF0YSA9IGlu
aXREYXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1h
a2VDb250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0
YSgpOwogICAgIHVuc2lnbmVkIGluaXREYXRhU2l6ZSA9IGluaXREYXRhLnNpemUoKTsKICAgICB1
bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgdW5zaWduZWQgcHNzaFNpemUgPSAwOwpAQCAtMTg4LDE1
ICsxODksMTUgQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RL
ZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKIH0KIAogLy8gVGhpcyBmdW5jdGlv
biBjaGVja3MgaWYgdGhlIGluaXREYXRhIHNoYXJlZEJ1ZmZlciBpcyBhIHZhbGlkIENFTkMgaW5p
dERhdGEuCi1zdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGlu
aXREYXRhKQorc3RhdGljIGJvb2wgaXNDZW5jSW5pdERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4g
a2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0
YSk7CiAgICAgcmV0dXJuICgoa2V5SWRzTWFwLmZpcnN0KSAmJiAoa2V5SWRzTWFwLnNlY29uZCkp
OwogfQogCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5p
dERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5
SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtl
eUlkczsKIAogICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCA9IGV4
dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoaW5pdERhdGEpOwogICAgIHVuc2ln
bmVkIGtleUlkQ291bnQgPSBrZXlJZHNNYXAuZmlyc3Q7CkBAIC0yMDQsOSArMjA1LDEwIEBAIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGluaXRECiAKICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZh
bGlkIENFTkMgaW5pdERhdGEuCiAgICAgaWYgKCFrZXlJZENvdW50IHx8ICFpbmRleCkKLSAgICAg
ICAgcmV0dXJuIGtleUlkczsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKLSAgICBh
dXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRh
ID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91
c0luaXREYXRhLT5kYXRhKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3Jl
YXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKQEAg
LTIyNCwxNyArMjI2LDE3IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRz
RnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAKICAgICBvYmplY3Qt
PnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNv
bkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVu
ZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRz
OworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7
CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERh
dGEpCitzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21X
ZWJNSW5pdERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRh
IGlzIGEgdmFsaWQgV2ViTSBpbml0RGF0YS4KICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8
IGluaXREYXRhLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkK
LSAgICAgICAgcmV0dXJuIGtleUlkczsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAK
ICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJ
ZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTI0NSwxMiArMjQ3LDEyIEBAIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgaW5pdERhCiAgICAgLy8gVGhlIGZvcm1hdCBpcyBhIEpTT04gb2JqZWN0
IGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBtZW1iZXJzOgogICAgIC8vICJraWRzIgogICAgIC8v
IEFuIGFycmF5IG9mIGtleSBJRHMuIEVhY2ggZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMgdGhlIGJh
c2U2NHVybCBlbmNvZGluZyBvZiB0aGUgb2N0ZXQgc2VxdWVuY2UgY29udGFpbmluZyB0aGUga2V5
IElEIHZhbHVlLgotICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRv
U3RyaW5nKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CisgICAga2V5SWRzQXJy
YXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEubWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKIAogICAgIG9iamVjdC0+c2V0QXJy
YXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9
IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25E
YXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAg
a2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICBy
ZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAogQ0RNRmFjdG9yeUNsZWFyS2V5JiBDRE1GYWN0b3J5
Q2xlYXJLZXk6OnNpbmdsZXRvbigpCkBAIC0zODgsNyArMzkwLDcgQEAgYm9vbCBDRE1Qcml2YXRl
Q2xlYXJLZXk6OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citi
b29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBj
b25zdAogewogICAgIC8vIFZhbGlkYXRlIHRoZSBpbml0RGF0YSBidWZmZXIgYXMgYW4gSlNPTiBv
YmplY3QgaW4ga2V5aWRzIGNhc2UuCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKGluaXREYXRhVHlwZSwgImtleWlkcyIpICYmIENETVV0aWxpdGllczo6cGFyc2VKU09OT2Jq
ZWN0KGluaXREYXRhKSkKQEAgLTQwNSw3ICs0MDcsNyBAQCBib29sIENETVByaXZhdGVDbGVhcktl
eTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRl
Q2xlYXJLZXk6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkg
Y29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlQ2xlYXJLZXk6
OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2Up
IGNvbnN0CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhlIHJlc3BvbnNlIGJ1ZmZlciBhcyBhbiBKU09O
IG9iamVjdC4KICAgICBpZiAoIUNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KHJlc3BvbnNl
KSkKQEAgLTQzMSw3ICs0MzMsNyBAQCB2b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OmluaXRpYWxp
emVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cgogICAgIGNhbGxi
YWNrKHN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVy
Q2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJh
Y2spCit2b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
ICAgICAvLyBSZWplY3Qgc2V0dGluZyBhbnkgc2VydmVyIGNlcnRpZmljYXRlLgogICAgIGNhbGxi
YWNrKEZhaWxlZCk7CkBAIC00NTMsNyArNDU1LDcgQEAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lv
bj4gQ0RNSW5zdGFuY2VDbGVhcktleTo6Y3JlYXRlU2Vzc2lvbigpCiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleSgqdGhpcykpOwogfQogCi12b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRh
LCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xl
YXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNl
Q2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBzdGF0aWMgdWludDMyX3Qgc19zZXNzaW9uSWRW
YWx1ZSA9IDA7CiAgICAgKytzX3Nlc3Npb25JZFZhbHVlOwpAQCAtNDc1LDcgKzQ3Nyw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpCiAgICAgICAgIH0pOwogfQogCi12b2lkIENETUluc3RhbmNl
U2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBM
aWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNh
bGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNh
bGxiYWNrKQogewogI2lmIExPR19ESVNBQkxFRAogICAgIC8vIFdlIG9ubHkgdXNlIHRoZSBzZXNp
b24gSUQgZm9yIGRlYnVnIGxvZ2dpbmcuIFRoZSB2ZXJib3NlIHByZXByb2Nlc3NvciBjaGVja3Mg
YXJlIGJlY2F1c2UKQEAgLTU2Niw3ICs1NjgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNs
ZWFyS2V5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZQog
ICAgIEFTU0VSVChzZXNzaW9uSWQgPT0gbV9zZXNzaW9uSUQpOwogCiAgICAgYXV0byBkaXNwYXRj
aENhbGxiYWNrID0KLSAgICAgICAgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sICZjYWxs
YmFja10oS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzVmVjdG9yLCBzdGQ6Om9wdGlvbmFsPFJl
ZjxTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZXNzKSB7CisgICAg
ICAgIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCAmY2FsbGJhY2tdKEtleVN0YXR1c1Zl
Y3RvciYmIGtleVN0YXR1c1ZlY3Rvciwgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2Nlc3MpIHsKICAgICAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoCiAgICAgICAgICAgICAgICAgW3dlYWtUaGlzID0gV2Vha1B0ciB7
ICp3ZWFrVGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBrZXlTdGF0dXNWZWN0
b3IgPSBXVEZNb3ZlKGtleVN0YXR1c1ZlY3RvciksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2Up
LCBzdWNjZXNzXSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlz
KQpAQCAtNTc5LDcgKzU4MSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJl
bW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlCiAgICAgLy8gQ29u
c3RydWN0IHRoZSBLZXlTdGF0dXNWZWN0b3Igb2JqZWN0LCByZXByZXNlbnRpbmcgcmVsZWFzZWQg
a2V5cywgYW5kIHRoZSBtZXNzYWdlIGluIHRoZQogICAgIC8vICdsaWNlbnNlIHJlbGVhc2UnIGZv
cm1hdC4KICAgICBLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzVmVjdG9yID0gbV9rZXlTdG9yZS5h
bGxLZXlzQXMoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXM6OlJlbGVhc2VkKTsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtZXNzYWdlOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBtZXNzYWdlOwogICAgIHsKICAgICAgICAgLy8gQ29uc3RydWN0IEpTT04gdGhhdCBy
ZXByZXNlbnRzIHRoZSAnbGljZW5zZSByZWxlYXNlJyBmb3JtYXQsIGNyZWF0aW5nIGEgJ2tpZHMn
IGFycmF5CiAgICAgICAgIC8vIG9mIGJhc2U2NFVSTC1lbmNvZGVkIGtleSBJRHMgZm9yIGFsbCBr
ZXlzIHRoYXQgd2VyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBzZXNzaW9uLgpAQCAtNTkzLDE0ICs1
OTUsMTQgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKICAgICAgICAgICAgIHJvb3RPYmplY3Qt
PnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShhcnJheSkpOwogICAgICAgICB9CiAKLSAgICAgICAg
Ly8gQ29weSB0aGUgSlNPTiBkYXRhIGludG8gYSBTaGFyZWRCdWZmZXIgb2JqZWN0LgorICAgICAg
ICAvLyBDb3B5IHRoZSBKU09OIGRhdGEgaW50byBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgb2Jq
ZWN0LgogICAgICAgICBTdHJpbmcgbWVzc2FnZVN0cmluZyA9IHJvb3RPYmplY3QtPnRvSlNPTlN0
cmluZygpOwogICAgICAgICBDU3RyaW5nIG1lc3NhZ2VDU3RyaW5nID0gbWVzc2FnZVN0cmluZy51
dGY4KCk7Ci0gICAgICAgIG1lc3NhZ2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtZXNzYWdlQ1N0
cmluZy5kYXRhKCksIG1lc3NhZ2VDU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgbWVzc2FnZSA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtZXNzYWdlQ1N0cmluZy5kYXRhKCksIG1l
c3NhZ2VDU3RyaW5nLmxlbmd0aCgpKTsKICAgICB9CiAKICAgICBtX2tleVN0b3JlLnVucmVmQWxs
S2V5cygpOwotICAgIGRpc3BhdGNoQ2FsbGJhY2soV1RGTW92ZShrZXlTdGF0dXNWZWN0b3IpLCBS
ZWY8U2hhcmVkQnVmZmVyPigqbWVzc2FnZSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKKyAg
ICBkaXNwYXRjaENhbGxiYWNrKFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+KCptZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwogfQog
CiB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpzdG9yZVJlY29yZE9mS2V5VXNhZ2Uo
Y29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCmluZGV4IDljMDc0N2RjMWJk
OGU2N2YzYmE4NjRkOWI4MTEzMzc2MjVjOGE2NzkuLjllMjdmZTkxMmM0ZGEwNjdmYjI2Y2FmYmM3
ZjZhNjUxZGE0NzUyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaApAQCAtODYsOCArODYs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwogICAgIGJv
b2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1
cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVy
JikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIH07CiAKQEAg
LTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgIC8vIENETUluc3RhbmNlCiAgICAgSW1wbGVtZW50
YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxl
bWVudGF0aW9uVHlwZTo6Q2xlYXJLZXk7IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmln
dXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2
ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZp
bmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwg
U3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsK
ICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAg
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8Q0RNSW5z
dGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CkBAIC0xMDksOCArMTA5LDggQEAg
Y2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHkgewogcHVibGljOgogICAgIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5
KENETUluc3RhbmNlQ2xlYXJLZXkmIHBhcmVudCkKICAgICAgICAgOiBDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eShwYXJlbnQpIHsgfQotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUs
IGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0
RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBs
b2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9h
ZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBT
dHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNl
c3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNh
bGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKaW5kZXggN2JmMDA4MzJhNDAyZWVhZDU3MjNj
YTQyOGU5YWZiN2NjNDFhMGM1OC4uN2FhOTRiNGI0YmMyY2JmOTIyYWFkYTU4ODc1NzNkNzVkN2Mw
YmM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRW5jb2RlckdlbmVyaWMuY3BwCkBAIC0xMzksOSArMTM5LDkgQEAgdm9pZCBLZXllZEVuY29k
ZXJHZW5lcmljOjplbmRBcnJheSgpCiAgICAgbV9lbmNvZGVyIDw8IFR5cGU6OkVuZEFycmF5Owog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNv
ZGluZygpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJp
Yzo6ZmluaXNoRW5jb2RpbmcoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSht
X2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29k
ZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaApp
bmRleCBlOTY4ZTk4NWM3ZWVjZWZlNDM1YWE5MjA1YzQ0ZGQzNWFlZDhlMGQwLi5mZGFiZGNkNDMy
MDc4ZWE0MTU4NDEyNGFhODllMDFiNjdjYTFhZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaApAQCAtMzMsNyArMzMs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEtleWVkRW5jb2RlckdlbmVyaWMgZmlu
YWwgOiBwdWJsaWMgS2V5ZWRFbmNvZGVyIHsKIHB1YmxpYzoKQEAgLTU3LDcgKzU3LDcgQEAgcHVi
bGljOgogICAgIH07CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNo
RW5jb2RpbmcoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAppbmRleCA3MGQy
NGMxMTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyLi5lNmQ3OGQ1MjgzZWY4ZTUzYzdi
ZGIwYmI4MDRlOWUyN2UxMGExNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgS2V5
ZWRFbmNvZGVyR2xpYjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29k
aW5nKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpm
aW5pc2hFbmNvZGluZygpCiB7CiAgICAgZ19hc3NlcnQobV92YXJpYW50QnVpbGRlclN0YWNrLmxh
c3QoKSA9PSAmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFyaWFu
dCA9IGdfdmFyaWFudF9idWlsZGVyX2VuZCgmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0
cjxHQnl0ZXM+IGRhdGEgPSBnX3ZhcmlhbnRfZ2V0X2RhdGFfYXNfYnl0ZXModmFyaWFudC5nZXQo
KSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKKyAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0tleWVkRW5jb2RlckdsaWIuaAppbmRleCBlNTY0MmJjZjY3MGNlMjU5OWZjMDRkZjcyOWUyYjRj
MWY4MjExZjJlLi5jZTEzNjQ5NmM0ZTEzZWFjMTQ5ZWE2MTg5NWM1NDE0MGZmZDU5NmY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaApAQCAt
MzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckdsaWIoKTsKIAogcHJpdmF0
ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZp
bmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hF
bmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtl
eSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNv
bnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCmluZGV4IDhhOGMxMGI3MDI0Y2ZlMDM4ZTlm
YTdiNzE1YmUyNjg4OWZjMDVlMjguLmQ4ZjA0ZGQ0ZThkZTAxYjBmOWMzNGFhN2RiZGU1NTZjYWM2
ODUyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVm
ZmVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZm
ZXJHbGliLmNwcApAQCAtMjYsMjggKzI2LDI4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoR0J5dGVzKiBieXRlcykKK0ZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoR0J5dGVzKiBieXRlcykKIHsKICAgICBB
U1NFUlQoYnl0ZXMpOwogICAgIG1fc2l6ZSA9IGdfYnl0ZXNfZ2V0X3NpemUoYnl0ZXMpOwogICAg
IG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShHUmVmUHRyPEdCeXRl
cz4oYnl0ZXMpKSB9KTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoR0J5dGVzKiBieXRlcykKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpjcmVhdGUoR0J5dGVzKiBieXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKGJ5dGVzKSk7CiB9CiAKLUdSZWZQdHI8R0J5dGVzPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CitHUmVmUHRyPEdCeXRlcz4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKIHsKICAgICByZWYoKTsKICAgICBH
UmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1
bmMoZGF0YSgpLCBzaXplKCksIFtdKGdwb2ludGVyIGRhdGEpIHsKLSAgICAgICAgc3RhdGljX2Nh
c3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7Ci0gICAgfSwgY29uc3RfY2FzdDxTaGFy
ZWRCdWZmZXIqPih0aGlzKSkpOworICAgICAgICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVk
QnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CisgICAgfSwgY29uc3RfY2FzdDxDb250aWd1b3VzU2hh
cmVkQnVmZmVyKj4odGhpcykpKTsKICAgICByZXR1cm4gYnl0ZXM7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgpCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
CiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC02MSw3ICs2MSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250
ZW50cy5nZXQoKSwgc2l6ZSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggMTdiMzUyZjg5
NzQyNzI5OGY1ZGQwYjhkZmI5NjkwNzg3OTVkMzM3Yy4uYjEzNjM0NGU2MGY3M2ZjMTAwNThlYmZl
M2NiNGUwYjYzZjQ1ODJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250
UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEZvbnQKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWws
IHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIsIGZvbnRDYWNoZUZv
clZlcnRpY2FsRGF0YSkpOwogfQogCi1SZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRC
dWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6
ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBm
b250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwg
ZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMs
IEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhKQogewogICAgIGJvb2wgd3JhcHBp
bmc7CiAgICAgYXV0byBjdXN0b21Gb250RGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZv
bnREYXRhKGZvbnRGYWNlRGF0YS5nZXQoKSwgeyB9LCB3cmFwcGluZyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggOWZjNGVhODJlYmJjNzdlYWQ5MDEwODU0Mzgw
ODI5ZTE1YmJhYjZmNC4uYTFiYWQxNTg5MDA4ODJmMWYwMjI3MzhjNTg0YmMzNzJhNTZhNmMwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtNTksNyArNTksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGb250Q2FjaGU7CiBjbGFzcyBGb250RGVzY3Jp
cHRpb247CiBjbGFzcyBHbHlwaFBhZ2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgR2x5cGhEYXRhOwogCkBAIC04NSw3ICs4NSw3
IEBAIHB1YmxpYzoKICAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9y
aWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpvcHRpb25h
bDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKICAgICBzdGF0
aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luLCBGb250
Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2FsRGF0YSwgSW50ZXJzdGl0aWFsID0gSW50ZXJzdGl0
aWFsOjpObywKICAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVu
dGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpvcHRpb25hbDxS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRG
YWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xk
LCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiA9IG51bGxwdHIpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBz
eW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiA9IG51bGxwdHIp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkZvbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCmluZGV4IDMwZGZhYTJkMmY4
NWE5ZjdjZGEyMDA4MjlkZTE5OWIxNGU4NGIyMTkuLmUyMzg0YjllZTRlY2U2MDFlZWQ3YTRjMGIz
ZGJkZjk4YmU5NTMwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTc0LDcgKzc0LDYgQEAgaW50ZXJmYWNlIElEV3Jp
dGVGb250RmFjZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udERlc2NyaXB0aW9u
OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiAvLyBUaGlzIGNsYXNzIGlzIGNvbmNlcHR1YWxseSBp
bW11dGFibGUuIE9uY2UgY3JlYXRlZCwgbm8gaW5zdGFuY2VzIHNob3VsZCBldmVyIGNoYW5nZSAo
aW4gYW4gb2JzZXJ2YWJsZSB3YXkpLgogY2xhc3MgRm9udFBsYXRmb3JtRGF0YSB7CkBAIC0yMjQs
MTMgKzIyMywxMyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0
OworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGxh
dGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKIAogICAgIFN0cmluZyBk
ZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgc3RydWN0IENyZWF0aW9uRGF0YSB7Ci0gICAgICAg
IFJlZjxTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgU3RyaW5nIGl0ZW1JbkNvbGxlY3Rp
b247CiAjaWYgUExBVEZPUk0oV0lOKQogICAgICAgICBSZWY8Rm9udE1lbW9yeVJlc291cmNlPiBt
X2ZvbnRSZXNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNw
cAppbmRleCA0YTg1M2ViNjQ5NTNkNGFlNDgzNGY4N2M1NDg3YWNkMzY0YzU3ZDgxLi5lMzJhMzZj
NjA3NjE5MjE2OGM2YTM3OTMxOGY3OGFlMTc4OWM0ODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBJbWFnZTo6
aXNQb3N0U2NyaXB0UmVzb3VyY2UoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJMJiB1
cmwpCiB9CiAKIAotRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2U6OnNldERhdGEoUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK0VuY29kZWREYXRhU3RhdHVz
IEltYWdlOjpzZXREYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIG1fZW5jb2RlZEltYWdlRGF0YSA9IFdURk1vdmUo
ZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDZh
MDgxNjk1N2FhOTNjNDExYTU2Y2Q0YzJiYzIwZGQ2ZDkwNDRkZWMuLjY1NWRmZTczY2ZmNmFkMWQw
NGY0OGJjMjAxOWViYjgwNDE3ZDYxMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaApAQCAtNzAsNyArNzAsNyBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFz
cyBGbG9hdFBvaW50OwogY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0Owot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVj
dCBMZW5ndGg7CiAKIC8vIFRoaXMgY2xhc3MgZ2V0cyBub3RpZmllZCB3aGVuIGFuIGltYWdlIGNy
ZWF0ZXMgb3IgZGVzdHJveXMgZGVjb2RlZCBmcmFtZXMgYW5kIHdoZW4gaXQgYWR2YW5jZXMgYW5p
bWF0aW9uIGZyYW1lcy4KQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBz
dGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxs
b3B0OyB9CiAgICAgdmlydHVhbCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlOyB9CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBFbmNvZGVkRGF0YVN0YXR1cyBzZXREYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIFdFQkNPUkVfRVhQT1JUIEVuY29kZWREYXRh
U3RhdHVzIHNldERhdGEoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZpcnR1YWwgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNo
YW5nZWQoYm9vbCAvKmFsbERhdGFSZWNlaXZlZCovKSB7IHJldHVybiBFbmNvZGVkRGF0YVN0YXR1
czo6VW5rbm93bjsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgdXRpKCkgY29uc3QgeyByZXR1cm4g
U3RyaW5nKCk7IH0gLy8gbnVsbCBzdHJpbmcgaWYgdW5rbm93bgpAQCAtMTMzLDggKzEzMyw4IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0
cm95QWxsID0gdHJ1ZSkgPSAwOwogCi0gICAgU2hhcmVkQnVmZmVyKiBkYXRhKCkgeyByZXR1cm4g
bV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CisgICAgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgpIHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQo
KTsgfQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgRGVzdGluYXRp
b25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKTsKIApAQCAtMjA5LDcgKzIwOSw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0IHsgcmV0
dXJuIENvbG9yKCk7IH0KIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2Vu
Y29kZWRJbWFnZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fZW5j
b2RlZEltYWdlRGF0YTsKICAgICBJbWFnZU9ic2VydmVyKiBtX2ltYWdlT2JzZXJ2ZXI7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFRpbWVyPiBtX2FuaW1hdGlvblN0YXJ0VGltZXI7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgK
aW5kZXggNGRkYjZkZjgzZWNiOGI5Yjc5NTdmNDY2NGUxODRmMDA4MWU4MTAxMS4uZGUzM2YxYWY0
MTJkYzA4YjJiOTYxYTE5NDk0NWM5Y2M5MGFhNjYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCkBAIC02Niw3ICs2Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBidWZmZXIu
Z3JvdyhidWZmZXJTaXplKTsKLSAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9waXhlbHMgPSBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7
CiAgICAgICAgIG1fcGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0
X2Nhc3Q8dWludDhfdCo+KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICAgICAgbV9zaXplID0gc2l6
ZTsKICAgICAgICAgbV9mcmFtZVJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSk7CkBA
IC0yMDYsNyArMjA2LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9zaXpl
LmlzRW1wdHkoKSAmJiAhaXNPdmVyU2l6ZShtX3NpemUpKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGJ1ZmZlciB7IG90aGVyLm1fcGl4ZWxzLT5kYXRhKCksIG90aGVyLm1fcGl4ZWxzLT5zaXpl
KCkgfTsKLSAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9waXhlbHMgPSBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1f
cGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8dWludDhf
dCo+KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICB9CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4gUGFja2VkQ29sb3I6OkFSR0IgeyByZXN1bHQgfS52YWx1ZTsK
ICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9waXhlbHM7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3BpeGVs
czsKICAgICB1aW50MzJfdCogbV9waXhlbHNQdHIgeyBudWxscHRyIH07CiAgICAgSW50U2l6ZSBt
X3NpemU7CiAgICAgSW50UmVjdCBtX2ZyYW1lUmVjdDsgLy8gVGhpcyB3aWxsIGFsd2F5cyBqdXN0
IGJlIHRoZSBlbnRpcmUgYnVmZmVyIGV4Y2VwdCBmb3IgR0lGIGFuZCBQTkcgZnJhbWVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcAppbmRl
eCAwODY5ZTk5YTAwODg2ZjdjZDEyMTg2ZmUzMTYxZGUwNDdmYTUxMzYxLi43YzU0OTQ3ZjRkODE0
MDg1NTljYzQ1YzRhYzQ5YTE5YjlmYzg2Zjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBJ
bWFnZURlY29kZXI6OmNsZWFyRmFjdG9yaWVzKCkKIH0KICNlbmRpZgogCi1SZWZQdHI8SW1hZ2VE
ZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29k
ZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBVTlVT
RURfUEFSQU0obWltZVR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlRGVjb2Rlci5oCmluZGV4IGExYTA4YWRjMTc1ZDQ0YmFhNDQyZTQ0YTk0YWE5Njdh
MDRmNWY2MDcuLjZhOGZmY2I2MGZjMTE1NmViODQ4NzZkZWZiMDdjYmMwYjExOTg0OTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCkBAIC0z
NywxMiArMzcsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbWFnZURlY29kZXIg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VEZWNvZGVyPiB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29k
ZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8SW1h
Z2VEZWNvZGVyPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAg
dmlydHVhbCB+SW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCiAgICAgZW51bSBjbGFzcyBNZWRp
YVR5cGUgewpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQogICAgIHVzaW5nIFN1cHBvcnRzTWVkaWFUeXBlRnVuYyA9IEZ1bmN0aW9uPGJvb2woTWVkaWFU
eXBlKT47CiAgICAgdXNpbmcgQ2FuRGVjb2RlVHlwZUZ1bmMgPSBGdW5jdGlvbjxib29sKGNvbnN0
IFN0cmluZyYpPjsKLSAgICB1c2luZyBDcmVhdGVJbWFnZURlY29kZXJGdW5jID0gRnVuY3Rpb248
UmVmUHRyPEltYWdlRGVjb2Rlcj4oU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgQWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKT47CisgICAgdXNpbmcgQ3JlYXRlSW1h
Z2VEZWNvZGVyRnVuYyA9IEZ1bmN0aW9uPFJlZlB0cjxJbWFnZURlY29kZXI+KEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pPjsKIAogICAgIHN0cnVjdCBJbWFnZURlY29kZXJGYWN0b3J5IHsKICAgICAg
ICAgU3VwcG9ydHNNZWRpYVR5cGVGdW5jIHN1cHBvcnRzTWVkaWFUeXBlOwpAQCAtMTI5LDcgKzEy
OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEV4cGVjdGVk
Q29udGVudFNpemUobG9uZyBsb25nKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFy
ZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgPSAwOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZDgx
YzQ4MDE5Mjg0NmRkN2UzMjFjMmRmYmZiZjFlMGMyMGRhYTY3MS4uMzA3NzQzMzE1YTQxZWNhMWM5
YjJiYzc3M2QwNzllZTVkNDNiYWY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtNzIsNyArNzIsNyBAQCBJbWFnZVNvdXJjZTo6
fkltYWdlU291cmNlKCkKICAgICBBU1NFUlQoJm1fcnVuTG9vcCA9PSAmUnVuTG9vcDo6Y3VycmVu
dCgpKTsKIH0KIAotYm9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShTaGFy
ZWRCdWZmZXIqIGRhdGEpCitib29sIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZhaWxhYmxl
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKCFkYXRhIHx8IGlzRGVj
b2RlckF2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk2LDcgKzk2LDcgQEAg
Ym9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShTaGFyZWRCdWZmZXIqIGRh
dGEpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hh
cmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VTb3VyY2U6
OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB7CiAgICAgaWYgKCFkYXRhIHx8ICFlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKGRhdGEpKQog
ICAgICAgICByZXR1cm47CkBAIC0xMDQsMTMgKzEwNCwxMyBAQCB2b2lkIEltYWdlU291cmNlOjpz
ZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgbV9k
ZWNvZGVyLT5zZXREYXRhKCpkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCi12b2lkIEltYWdl
U291cmNlOjpyZXNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBJbWFnZVNvdXJjZTo6
cmVzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgbV9kZWNvZGVy
ID0gbnVsbHB0cjsKICAgICBzZXREYXRhKGRhdGEsIGlzQWxsRGF0YVJlY2VpdmVkKCkpOwogfQog
Ci1FbmNvZGVkRGF0YVN0YXR1cyBJbWFnZVNvdXJjZTo6ZGF0YUNoYW5nZWQoU2hhcmVkQnVmZmVy
KiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK0VuY29kZWREYXRhU3RhdHVzIEltYWdlU291
cmNlOjpkYXRhQ2hhbmdlZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKIHsKICAgICBzZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiAgICAg
Y2xlYXJNZXRhZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmgKaW5kZXggOGFmNTA4MGEwMGE5OTE2MDgwZjFmMGIyNzcwNzNjMmE4NTM0NTI1
OC4uODE0ZjBlMTJlYmFhNDhmODZhY2I1MjE5NzNjMzFkNWQzODJmNmZiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0zOSw3ICszOSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJpdG1hcEltYWdlOwogY2xhc3MgR3JhcGhp
Y3NDb250ZXh0OwogY2xhc3MgSW1hZ2VEZWNvZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSW1hZ2VTb3VyY2UgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VTb3VyY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
SW1hZ2VTb3VyY2U+IHsKICAgICBmcmllbmQgY2xhc3MgQml0bWFwSW1hZ2U7CkBAIC01Niw5ICs1
Niw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VTb3VyY2Uo
V1RGTW92ZShuYXRpdmVJbWFnZSkpKTsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgdm9pZCByZXNldERhdGEo
U2hhcmVkQnVmZmVyKiBkYXRhKTsKLSAgICBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChT
aGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2b2lkIHNldERh
dGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwor
ICAgIHZvaWQgcmVzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIEVu
Y29kZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2VkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCk7CiAK
ICAgICB1bnNpZ25lZCBkZWNvZGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlZFNpemU7
IH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CiAgICAgVCBmaXJzdEZyYW1lTWV0YWRhdGFDYWNoZUlmTmVlZGVkKFQmIGNhY2hlZFZhbHVlLCBN
ZXRhZGF0YVR5cGUsIFQgKEltYWdlRnJhbWU6OipmdW5jdG9yKSgpIGNvbnN0LCBJbWFnZUZyYW1l
OjpDYWNoaW5nLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiA9IHsgfSk7
CiAKLSAgICBib29sIGVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRhKTsK
KyAgICBib29sIGVuc3VyZURlY29kZXJBdmFpbGFibGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSk7CiAgICAgYm9vbCBpc0RlY29kZXJBdmFpbGFibGUoKSBjb25zdCB7IHJldHVybiBtX2Rl
Y29kZXI7IH0KICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShzaXplX3QgZnJhbWVDb3VudCwg
c2l6ZV90IGV4Y2x1ZGVGcmFtZSk7CiAgICAgdm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQobG9uZyBs
b25nIGRlY29kZWRTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVs
LmNwcAppbmRleCAzZTU5ZWE5ZDA4ZGQxYzliZWUyM2JhM2Y2MzVjZjM1YmZjMjgyMjkyLi41YWRl
N2VmNjllMjlhNzdmMmI4NDA5MjllNjRiZTBjNDRlNTE2NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZl
cj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorUmVmPE1vZGVsPiBNb2RlbDo6Y3Jl
YXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwg
VVJMIHVybCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2RlbChXVEZNb3ZlKGRhdGEp
LCBXVEZNb3ZlKG1pbWVUeXBlKSwgV1RGTW92ZSh1cmwpKSk7CiB9CiAKLU1vZGVsOjpNb2RlbChS
ZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitNb2RlbDo6
TW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBl
LCBVUkwgdXJsKQogICAgIDogbV9kYXRhKFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBl
KFdURk1vdmUobWltZVR5cGUpKQogICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKaW5kZXggMDY1ODEzMzc5ZjExMjU1ZDJkN2M3
ZjZiNTAzNDQzZGM2MzBkMDRlMS4uOTE1NjBhZTg4ZmE2NGMyYTBjMTAwMTQxNGYzMjQxY2UwMDU2
YTFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCkBAIC0zOCwx
MCArMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNb2RlbCBmaW5hbCA6IHB1
YmxpYyBSZWZDb3VudGVkPE1vZGVsPiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1vZGVs
KCk7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
OyB9CisgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJldHVy
biBtX2RhdGE7IH0KICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9taW1lVHlwZTsgfQogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7
IH0KICAgICAKQEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6
Ci0gICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAg
ICBleHBsaWNpdCBNb2RlbChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBV
UkwpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgVVJMIG1f
dXJsOwogfTsKQEAgLTYwLDcgKzYwLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQg
TW9kZWw6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwg
c3RhdGljX2Nhc3Q8c2l6ZV90PihtX2RhdGEtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVG
aXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKKyAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOwogICAgIGVuY29kZXIgPDwgbV9taW1lVHlwZTsKICAg
ICBlbmNvZGVyIDw8IG1fdXJsOwogfQpAQCAtOTMsNyArOTMsNyBAQCBSZWZQdHI8TW9kZWw+IE1v
ZGVsOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIXVybCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgqbWltZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsK
KyAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CiB9CiAK
IFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJl
YW0mLCBjb25zdCBNb2RlbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRleCA3NDU5
YzU4NThkMjQ4N2VmMmM1ZmQzNzE3Mzk4NmIzMzczNGVjMjhhLi44ZmNkZTM3Y2YzY2NlYTU0OTdj
NzYyODE4NWEzOTA4MGRiZjI0OThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaApAQCAt
NTEsOSArNTEsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVx
dWVzdCkpOyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWdu
ZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikg
eyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgLy8gVGhpcyBtZXRob2Qgc2hv
dWxkIGJlIHJlbW92ZWQgb25jZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB1c2VzIFNoYXJlZEJ1
ZmZlci4KLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYgcGxhdGZvcm0sIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgZGF0YVJlY2Vp
dmVkKHBsYXRmb3JtLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpKTsgfQorICAg
IHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQorICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQgdXNlcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgorICAgIHZpcnR1YWwgdm9p
ZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiBwbGF0Zm9ybSwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBkYXRhUmVjZWl2ZWQocGxhdGZvcm0sIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpKTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCA2ODdjNzhjMjgxY2EwNDU0MDQ4NWNj
YmFlMDFkODRjZDYwMzM3MjYzLi44YzczYzQwYmI1YjlmZWFkNzBmOGNmYTYwZjljNjM4NTg0N2Yx
ZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VC
dWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
b3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtMTMxOCw3ICsxMzE4LDcgQEAgdm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBvcmlnaW5h
bFNhbXBsZSkKICAgICB1cGRhdGVIaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wKCk7CiB9CiAK
LXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGFwcGVuZChidWZmZXItPmV4dHJhY3REYXRhKCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNl
QnVmZmVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNl
QnVmZmVyUHJpdmF0ZS5oCmluZGV4IGVmODZhNDczNjkzNzFjODNlODgzYjI5YmJiNmI5YWI5NmVj
YTVmMWQuLjZiN2Q5NWU1MmI5ZGYwYzgxYWYzYmUxZDZkOWYzYzhlZDM5NTQxNmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2
YXRlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgVGltZVJh
bmdlczsKIAogZW51bSBjbGFzcyBTb3VyY2VCdWZmZXJBcHBlbmRNb2RlIDogdWludDhfdCB7CkBA
IC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Tb3Vy
Y2VCdWZmZXJQcml2YXRlKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpID0g
MDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgYXBwZW5kKFJlZjxTaGFyZWRCdWZm
ZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBhcHBlbmQoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAppbmRleCBiMzdlYmZjNTYyMDQ4ZmU2
ZDc5NDFkMmU1Y2MxYmNhMWRjMTU3MWM3Li5hMGU3M2IzZjNlYmNiM2M3ODBmZTM1MWU5ZDZhODBi
NmZiOTA1NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9X
T0ZGRmlsZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
V09GRkZpbGVGb3JtYXQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBjb25zdCB1aW50MzJf
dCBrV29mZjJTaWduYXR1cmUgPSAweDc3NGY0NjMyOyAvLyAid09GMiIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1zdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBz
aXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQzMihD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYg
dmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgp
KTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBAIC00
OSw3ICs0OSw3IEBAIHN0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVkQnVmZmVyJiBidWZmZXIs
IHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXN0YXRpYyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zm
c2V0LCB1aW50MTZfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDE2KENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKIHsK
ICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlm
IChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTc1LDcgKzc1LDcg
QEAgc3RhdGljIGJvb2wgd3JpdGVVSW50MTYoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IsIHVpbnQx
Nl90IHZhbHVlKQogCiBzdGF0aWMgY29uc3QgdWludDMyX3Qgd29mZlNpZ25hdHVyZSA9IDB4Nzc0
ZjQ2NDY7IC8qICd3T0ZGJyAqLwogCi1ib29sIGlzV09GRihTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K2Jvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBzaXpl
X3Qgb2Zmc2V0ID0gMDsKICAgICB1aW50MzJfdCBzaWduYXR1cmU7CkBAIC0xMjYsNyArMTI2LDcg
QEAgcHJpdmF0ZToKIH07CiAjZW5kaWYKIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRC
dWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKK2Jvb2wgY29udmVydFdPRkZUb1Nm
bnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQog
ewogICAgIEFTU0VSVF9BUkcoc2ZudCwgc2ZudC5pc0VtcHR5KCkpOwogCkBAIC0yODMsNyArMjgz
LDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1
aW50OF90PiYgc2ZudCkKICAgICByZXR1cm4gc2ZudC5zaXplKCkgPT0gdG90YWxTZm50U2l6ZTsK
IH0KIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0yOTQsNyArMjk0LDcgQEAgYm9vbCBjb252ZXJ0
V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAKICAg
ICBWZWN0b3I8dWludDhfdD4gY29udmVydGVkRm9udDsKICAgICBpZiAoY29udmVydFdPRkZUb1Nm
bnQoKmJ1ZmZlciwgY29udmVydGVkRm9udCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOworICAgICAgICBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CiAgICAg
ZWxzZQogICAgICAgICBidWZmZXIgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAppbmRleCAzZDU3MDEwN2YyOGY4NTQ0
NzQxZTM0OTVjMDE2MDdlNGRlOTAyZDVlLi43OGFjNGE3YWZmZjRkNGJlZTlmZDAyY2FiZTdhOThm
MmZlN2RkZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9X
T0ZGRmlsZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dP
RkZGaWxlRm9ybWF0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAK
IC8vIFJldHVybnMgd2hldGhlciB0aGUgYnVmZmVyIGlzIGEgV09GRiBmaWxlLgotYm9vbCBpc1dP
RkYoU2hhcmVkQnVmZmVyJik7Citib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7
CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIFdPRkYgZmlsZSB3b2ZmIGlzIGludmFsaWQgb3Ig
Y291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBzZm50IChmb3IgZXhhbXBsZSwKIC8vIGlmIGNvbnZl
cnNpb24gcmFuIG91dCBvZiBtZW1vcnkpLiBPdGhlcndpc2UgcmV0dXJucyB0cnVlIGFuZCB3cml0
ZXMgdGhlIHNmbnQgcGF5bG9hZCBpbnRvIHNmbnQuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNo
YXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKK2Jvb2wgY29udmVydFdP
RkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBz
Zm50KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZSBhbmQgdGhlIGN1
cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0IGZvciBXT0ZGCiAvLyBmb250cywg
Y29udmVydCBpdCB0byBzZm50LiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGJ1ZmZlciB3YXMg
Y29udmVydGVkLiBJZiBjb252ZXJzaW9uIGZhaWxzLAogLy8gdGhlIGJ1ZmZlciB3aWxsIGJlIHNl
dCB0byBudWxscHRyLgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxT
aGFyZWRCdWZmZXI+Jik7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggYzYxMTJlMTE5
NGM3Yzk5MGZkYzExNGU4MjljZmRiNWM2YWY3NTRhOS4uODA1ZWE3MDIwYjBkMzUyNDY2ZGZhYjdj
OTBjMDQ3NjU0YWQ1NjAwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuY3BwCkBAIC04NiwxMiArODYsMTIgQEAgY29uc3QgQXRvbVN0cmluZyYgQ0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjpza2ROYW1lKCkKICAgICByZXR1cm4gc2tkOwogfQogCi1zdGF0aWMg
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitzdGF0aWMgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4g
ZXh0cmFjdFNpbmZEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICAvLyBKU09OIG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNvZGVkLXN0
cmluZz4gXSB9IgogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIFN0cmluZyBqc29uIHsg
YnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07Cisg
ICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09O
OjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCkBAIC0xMDUsNyArMTA1
LDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmICghc2luZkFycmF5KQogICAgICAgICBy
ZXR1cm4geyB9OwogCi0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBzaW5mczsKKyAgICBW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBzaW5mczsKICAgICBzaW5mcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KHNpbmZBcnJheS0+bGVuZ3RoKCkpOwogCiAgICAgZm9yIChhdXRv
JiB2YWx1ZSA6ICpzaW5mQXJyYXkpIHsKQEAgLTExNywxNCArMTE3LDE0IEBAIHN0YXRpYyBWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICAgICAgaWYgKCFzaW5mRGF0YSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIHNpbmZzLnVuY2hlY2tlZEFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKCpzaW5mRGF0YSkpKTsKKyAgICAgICAgc2luZnMudW5jaGVja2VkQXBwZW5kKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpzaW5mRGF0YSkpKTsKICAgICB9CiAKICAg
ICByZXR1cm4gc2luZnM7CiB9CiAKIHVzaW5nIFNjaGVtZUFuZEtleVJlc3VsdCA9IFZlY3Rvcjxz
dGQ6OnBhaXI8Rm91ckNDLCBWZWN0b3I8dWludDhfdD4+PjsKLXN0YXRpYyBTY2hlbWVBbmRLZXlS
ZXN1bHQgZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJvbVNpbmYoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCitzdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZy
b21TaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRv
IGJ1ZmZlcnMgPSBleHRyYWN0U2luZkRhdGEoYnVmZmVyKTsKICAgICBpZiAoIWJ1ZmZlcnMuc2l6
ZSgpKQpAQCAtMTcwLDIwICsxNzAsMjAgQEAgc3RhdGljIFNjaGVtZUFuZEtleVJlc3VsdCBleHRy
YWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmYKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJ
RHNTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAgYXV0byByZXN1bHRzID0gZXh0cmFjdFNjaGVtZUFu
ZEtleUlkRnJvbVNpbmYoYnVmZmVyKTsKIAogICAgIGZvciAoYXV0byYgcmVzdWx0IDogcmVzdWx0
cykgewogICAgICAgICBpZiAodmFsaWRGYWlyUGxheVN0cmVhbWluZ1NjaGVtZXMoKS5jb250YWlu
cyhyZXN1bHQuZmlyc3QpKQotICAgICAgICAgICAga2V5SURzLmFwcGVuZChTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC5zZWNvbmQpKSk7CisgICAgICAgICAgICBrZXlJRHMuYXBw
ZW5kKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC5zZWNvbmQp
KSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIC8vIENvbW1vbiBTSU5GIEJveCBGb3JtYXQKICAgICBVTlVT
RURfUEFSQU0oYnVmZmVyKTsKQEAgLTE5MSwxNyArMTkxLDE3IEBAIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVTaW5mKGNvbnN0IFNoYXJl
ZEJ1ZmZlCiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVTa2QoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4
dHJhY3RLZXlJRHNTa2QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIC8vIEluIHRoZSAnc2tkJyBzY2hlbWUsIHRoZSBpbml0IGRhdGEgaXMg
dGhlIGtleSBJRC4KLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAga2V5SURzLmFw
cGVuZChidWZmZXIuY29weSgpKTsKICAgICByZXR1cm4ga2V5SURzOwogfQpAQCAtMzkzLDcgKzM5
Myw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25z
KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAorYm9vbCBDRE1Qcml2YXRlRmFp
clBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsK
ICAgICBpZiAoIXZhbGlkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQyMyw3ICs0MjMsNyBAQCBib29sIENETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RN
UHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RN
UHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIHJldHVybiByZXNwb25zZS5j
b3B5KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCmluZGV4IGJj
OTNmNmY2YTdiZGQwMWVmYmY1NWI2MmJkYjZhNGU2NmVmOTEyYjMuLjMxN2JiOGQ1N2U4NmMwNjIx
NGUwYjQwNTlkZGY0Zjg4MDdjNzRjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0
cmVhbWluZy5oCkBAIC03MSwxNyArNzEsMTcgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEFuZElu
aXRpYWxpemUoKSBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVz
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25z
dCBTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVT
ZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgY29u
c3QgQXRvbVN0cmluZyYgc2luZk5hbWUoKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2luZihjb25zdCBTaGFyZWRCdWZm
ZXImKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTaW5mKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2luZihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgc3Rh
dGljIGNvbnN0IEF0b21TdHJpbmcmIHNrZE5hbWUoKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2tkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNrZChj
b25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NrZChjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZVNrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBz
dGF0aWMgY29uc3QgVmVjdG9yPEZvdXJDQz4mIHZhbGlkRmFpclBsYXlTdHJlYW1pbmdTY2hlbWVz
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCmluZGV4IDE1OWI5MGNkYjQ4ZjdmZTQ0YmI0OWJl
MmVjMWMxYzJmNDMyODY0MDAuLjU2YjU4YzI1YTI4NzA5ZmIzODIyMTgzOWU1NWJhZTQ1ZWQ5M2Nm
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAg
ICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6RmFpclBsYXlTdHJlYW1pbmc7IH0KIAogICAgIHZv
aWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRl
LCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9p
ZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3Vj
Y2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25z
dCBTdHJpbmcmKSBmaW5hbDsKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVT
ZXNzaW9uKCkgZmluYWw7CiAgICAgdm9pZCBzZXRDbGllbnQoV2Vha1B0cjxDRE1JbnN0YW5jZUNs
aWVudD4mJikgZmluYWw7CkBAIC05NCwxMCArOTQsMTAgQEAgcHVibGljOgogCiAgICAgTlNVUkwg
KnN0b3JhZ2VVUkwoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2VVUkwuZ2V0KCk7IH0KICAgICBi
b29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoKSBjb25zdCB7IHJldHVybiBtX3BlcnNpc3RlbnRT
dGF0ZUFsbG93ZWQ7IH0KLSAgICBTaGFyZWRCdWZmZXIqIHNlcnZlckNlcnRpZmljYXRlKCkgY29u
c3QgeyByZXR1cm4gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZS5nZXQoKTsgfQorICAgIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIHNlcnZlckNlcnRpZmljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXJD
ZXJ0aWZpY2F0ZS5nZXQoKTsgfQogICAgIEFWQ29udGVudEtleVNlc3Npb24qIGNvbnRlbnRLZXlT
ZXNzaW9uKCk7CiAKLSAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gdGFrZVVuZXhw
ZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSk7CisgICAgUmV0YWluUHRyPEFWQ29u
dGVudEtleVJlcXVlc3Q+IHRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9u
RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGluaXREYXRhKTsKIAogICAgIC8vIEFWQ29udGVudEtleVNlc3Npb25EZWxlZ2F0ZUNsaWVu
dAogICAgIHZvaWQgZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCopIGZpbmFs
OwpAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG91dHB1dE9ic2N1cmVkRHVl
VG9JbnN1ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb25DaGFuZ2VkKGJvb2wpIGZpbmFsOwogICAg
IHZvaWQgZXh0ZXJuYWxQcm90ZWN0aW9uU3RhdHVzRGlkQ2hhbmdlRm9yQ29udGVudEtleVJlcXVl
c3QoQVZDb250ZW50S2V5UmVxdWVzdCopIGZpbmFsOwogCi0gICAgdXNpbmcgS2V5cyA9IFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgS2V5cyA9IFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQyogc2Vzc2lvbkZvcktleUlEcyhjb25zdCBLZXlzJikgY29uc3Q7CiAgICAgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yR3JvdXAo
QVZDb250ZW50S2V5UmVwb3J0R3JvdXAqKSBjb25zdDsKICAgICBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JSZXF1ZXN0KEFWQ29udGVudEtleVJl
cXVlc3QqKSBjb25zdDsKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8
Q0RNSW5zdGFuY2VDbGllbnQ+IG1fY2xpZW50OwogICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlT
ZXNzaW9uPiBtX3Nlc3Npb247CiAgICAgUmV0YWluUHRyPFdlYkNvcmVGUFNDb250ZW50S2V5U2Vz
c2lvbkRlbGVnYXRlPiBtX2RlbGVnYXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fc2Vy
dmVyQ2VydGlmaWNhdGU7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fc2Vy
dmVyQ2VydGlmaWNhdGU7CiAgICAgYm9vbCBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgeyB0cnVl
IH07CiAgICAgUmV0YWluUHRyPE5TVVJMPiBtX3N0b3JhZ2VVUkw7CiAgICAgVmVjdG9yPFdlYWtQ
dHI8Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPj4gbV9zZXNzaW9u
czsKQEAgLTE1MCw4ICsxNTAsOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIENETUluc3Rh
bmNlU2Vzc2lvbgotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGlj
ZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxi
YWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lv
bihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25D
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBD
bG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRh
KGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCBlOWYyYWEzMzVkYjlhYzU4Mzk1
MTVkNjI1YTBkZjJmZjQwNzNlOTUzLi45YTJkNWVlZjU0MmY4ZjQyZDUyZGQ3ODk4ZmZmMWZhNDIz
YWFiZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMjE3LDE1ICsyMTcsMTUgQEAg
QUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKICAgICByZXR1cm4gQXRvbVN0cmluZyhu
c0luaXRUeXBlKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGluaXRpYWxpemF0aW9u
RGF0YUZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCogcmVxdWVzdCkKK3N0YXRpYyBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdGlhbGl6YXRpb25EYXRhRm9yUmVxdWVzdChBVkNv
bnRlbnRLZXlSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIGlmICghcmVxdWVzdCkKLSAgICAgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKIAogICAgIGlmIChpbml0VHlwZUZvclJlcXVlc3QocmVx
dWVzdCkgPT0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpza2ROYW1lKCkpCi0gICAgICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcmVxdWVzdC5pZGVudGlmaWVyIGRhdGFVc2lu
Z0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGFsbG93TG9zc3lDb252ZXJzaW9uOllFU10p
OworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtyZXF1ZXN0
LmlkZW50aWZpZXIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgYWxsb3dM
b3NzeUNvbnZlcnNpb246WUVTXSk7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
cmVxdWVzdC5pbml0aWFsaXphdGlvbkRhdGEpOworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUocmVxdWVzdC5pbml0aWFsaXphdGlvbkRhdGEpOwogfQogCiBDRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMoKSA9IGRlZmF1bHQ7CkBAIC0yNjUsNyArMjY1LDcgQEAgQVZDb250ZW50S2V5U2Vz
c2lvbiogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmNvbnRlbnRLZXlTZXNz
aW9uKCkKICAgICByZXR1cm4gbV9zZXNzaW9uLmdldCgpOwogfQogCi1SZXRhaW5QdHI8QVZDb250
ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VV
bmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitSZXRhaW5QdHI8QVZDb250
ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VV
bmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAg
IGZvciAoYXV0byByZXF1ZXN0SXRlciA9IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzLmJlZ2luKCk7
IHJlcXVlc3RJdGVyICE9IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzLmVuZCgpOyArK3JlcXVlc3RJ
dGVyKSB7CiAgICAgICAgIGF1dG8mIHJlcXVlc3QgPSAqcmVxdWVzdEl0ZXI7CkBAIC0zMTYsNyAr
MzE2LDcgQEAgcHJpdmF0ZToKICAgICBSZXNwb25zZU1hcCBtX3Jlc3BvbnNlczsKIH07CiAKLXN0
YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQorc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEZhaWwgb24gbGFy
Z2UgYnVmZmVycyB3aG9zZSBzaXplIGRvZXNuJ3QgZml0IGludG8gYSAzMi1iaXQgdW5zaWduZWQg
aW50ZWdlci4KICAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci5zaXplKCk7CkBAIC0zMjQsNyArMzI0
LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFy
c2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0
IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIHJldHVy
biBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAtMzgwLDcgKzM4MCw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmluaXRpYWxpemVXaXRoQ29u
ZmlndXJhdGlvbihjb25zdCBDRE1LCiAgICAgY2FsbGJhY2soaW5pdGlhbGl6ZSgpKTsKIH0KIAot
dm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlm
aWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxi
YWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBzZXJ2
ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgREVCVUdf
TE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogICAgIG1fc2VydmVyQ2VydGlmaWNhdGUg
PSBXVEZNb3ZlKHNlcnZlckNlcnRpZmljYXRlKTsKQEAgLTU4NSw4ICs1ODUsOCBAQCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIENETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byBz
ZXNzaW9uS2V5cyA9IHNlc3Npb25JbnRlcmZhY2UtPmtleUlEcygpOwotICAgICAgICBpZiAoYW55
T2Yoc2Vzc2lvbktleXMsIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgc2Vzc2lvbktleSkg
ewotICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxT
aGFyZWRCdWZmZXI+JiBrZXlJRCkgeworICAgICAgICBpZiAoYW55T2Yoc2Vzc2lvbktleXMsIFsm
XShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHNlc3Npb25LZXkpIHsKKyAgICAg
ICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mIGtleUlEKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGtleUlELmdl
dCgpID09IHNlc3Npb25LZXkuZ2V0KCk7CiAgICAgICAgICAgICB9KSAhPSBub3RGb3VuZDsKICAg
ICAgICAgfSkpCkBAIC02NDEsMTEgKzY0MSwxMSBAQCB1c2luZyBLZXlzID0gQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpLZXlzOwogc3RhdGljIEtleXMga2V5SURz
Rm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIGlmIChbcmVx
dWVzdC5pZGVudGlmaWVyIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAg
IHJldHVybiBLZXlzOjpmcm9tKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFsoTlNTdHJpbmcgKilyZXF1
ZXN0LmlkZW50aWZpZXIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKSk7
CisgICAgICAgIHJldHVybiBLZXlzOjpmcm9tKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShbKE5TU3RyaW5nICopcmVxdWVzdC5pZGVudGlmaWVyIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nXSkpOwogICAgIGlmIChbcmVxdWVzdC5pZGVudGlmaWVyIGlzS2luZE9m
Q2xhc3M6W05TRGF0YSBjbGFzc11dKQotICAgICAgICByZXR1cm4gS2V5czo6ZnJvbShTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgoTlNEYXRhICopcmVxdWVzdC5pZGVudGlmaWVyKSk7CisgICAgICAgIHJl
dHVybiBLZXlzOjpmcm9tKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoTlNEYXRhICop
cmVxdWVzdC5pZGVudGlmaWVyKSk7CiAgICAgaWYgKHJlcXVlc3QuaW5pdGlhbGl6YXRpb25EYXRh
KSB7Ci0gICAgICAgIGlmIChhdXRvIHNpbmZLZXlJRHMgPSBDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc6OmV4dHJhY3RLZXlJRHNTaW5mKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlcXVlc3QuaW5p
dGlhbGl6YXRpb25EYXRhKSkpCisgICAgICAgIGlmIChhdXRvIHNpbmZLZXlJRHMgPSBDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTaW5mKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShyZXF1ZXN0LmluaXRpYWxpemF0aW9uRGF0YSkpKQogICAgICAgICAgICAg
cmV0dXJuIFdURk1vdmUoc2luZktleUlEcy52YWx1ZSgpKTsKICAgICB9CiAgICAgcmV0dXJuIHsg
fTsKQEAgLTY3MywyMyArNjczLDIzIEBAIEtleXMgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjprZXlJRHMoKQogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLXZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1
ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5z
ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFpc0xpY2Vuc2VUeXBlU3VwcG9ydGVk
KGxpY2Vuc2VUeXBlKSkgewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJ
RklFUiwgIiBmYWxzZSwgbGljZW5zZVR5cGUgXCIiLCBsaWNlbnNlVHlwZSwgIlwiIG5vdCBzdXBw
b3J0ZWQiKTsKLSAgICAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlT
dHJpbmcoKSwgZmFsc2UsIEZhaWxlZCk7CisgICAgICAgIGNhbGxiYWNrKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFpbGVkKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNh
dGUoKSkgewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBm
YWxzZSwgbm8gc2VydmVyQ2VydGlmaWNhdGUiKTsKLSAgICAgICAgY2FsbGJhY2soU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxlZCk7CisgICAgICAgIGNh
bGxiYWNrKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBm
YWxzZSwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghZW5zdXJl
U2Vzc2lvbk9yR3JvdXAoKSkgewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURF
TlRJRklFUiwgIiBmYWxzZSwgY291bGQgbm90IGNyZWF0ZSBzZXNzaW9uIG9yIGdyb3VwIG9iamVj
dCIpOwotICAgICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmlu
ZygpLCBmYWxzZSwgRmFpbGVkKTsKKyAgICAgICAgY2FsbGJhY2soQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBGYWlsZWQpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC03MDksMTggKzcwOSwxOCBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUg
bGljZQogICAgIFJldGFpblB0cjxOU0RhdGE+IGluaXRpYWxpemF0aW9uRGF0YTsKIAogICAgIGlm
IChpbml0RGF0YVR5cGUgPT0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzaW5mTmFtZSgp
KQotICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IGluaXREYXRhLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKICAgICBlbHNlIGlmIChpbml0RGF0YVR5cGUgPT0gQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjpza2ROYW1lKCkpCi0gICAgICAgIGlkZW50aWZpZXIgPSBhZG9w
dE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKKyAgICAgICAgaWRlbnRp
ZmllciA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ10pOwogI2lmIEhBVkUoRkFJUlBMQVlTVFJFQU1JTkdfQ0VOQ19JTklUREFUQSkK
ICAgICBlbHNlIGlmIChpbml0RGF0YVR5cGUgPT0gSW5pdERhdGFSZWdpc3RyeTo6Y2VuY05hbWUo
KSkgewotICAgICAgICBhdXRvIHBzc2hTdHJpbmcgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbml0
RGF0YS0+ZGF0YSgpLCBpbml0RGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBwc3NoU3RyaW5n
ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgaW5pdERhdGEtPnNpemUoKSk7CiAgICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IFtOU0pT
T05TZXJpYWxpemF0aW9uIGRhdGFXaXRoSlNPTk9iamVjdDpAeyBAInBzc2giOiAoTlNTdHJpbmcq
KXBzc2hTdHJpbmcgfSBvcHRpb25zOk5TSlNPTldyaXRpbmdQcmV0dHlQcmludGVkIGVycm9yOm5p
bF07CiAgICAgfQogI2VuZGlmCiAgICAgZWxzZSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NT
SUJMRShMT0dJREVOVElGSUVSLCAiIGZhbHNlLCBpbml0RGF0YVR5cGUgbm90IHN1cHBwb3J0ZWQi
KTsKLSAgICAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmco
KSwgZmFsc2UsIEZhaWxlZCk7CisgICAgICAgIGNhbGxiYWNrKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFpbGVkKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNzM2LDcgKzczNiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNl
CiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBpc0VxdWFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3N0YXRpYyBib29sIGlzRXF1YWwoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBhdXRv
IGFycmF5QnVmZmVyID0gZGF0YS50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGlmICghYXJy
YXlCdWZmZXIpCkBAIC03NTQsNyArNzU0LDcgQEAgc3RhdGljIGJvb2wgaXNFcXVhbChjb25zdCBT
aGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgcmV0dXJuIHN0cmlu
Z09yRXhjZXB0aW9uLnJldHVyblZhbHVlKCkgPT0gdmFsdWU7CiB9CiAKLXZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNl
bnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZXhwaXJlZFNlc3Np
b25zLmlzRW1wdHkoKSAmJiBpc0VxdWFsKHJlc3BvbnNlRGF0YSwgImFja25vd2xlZGdlZCJfcykp
IHsKICAgICAgICAgYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZp
Y2F0ZSgpOwpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAg
ICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9u
cywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAg
ICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVu
dEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhw
aXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkg
c3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxz
ZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtODUzLDEwICs4NTMsMTAgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAg
ICAgICAgICAgIGlmICgha2V5SURWZWN0b3IpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgICAgICAgICBhdXRvIGtleUlEID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZSgqa2V5SURWZWN0b3IpKTsKKyAgICAgICAgICAgIGF1dG8ga2V5SUQgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqa2V5SURWZWN0b3IpKTsKICAgICAgICAgICAgIGF1
dG8gZm91bmRJbmRleCA9IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maW5kTWF0
Y2hpbmcoWyZdIChhdXRvJiByZXF1ZXN0KSB7CiAgICAgICAgICAgICAgICAgYXV0byBrZXlJRHMg
PSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwotICAgICAgICAgICAgICAgIHJldHVy
biBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgaWQpIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBpZCkgewogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gaWQuZ2V0KCkgPT0ga2V5SUQuZ2V0KCk7CiAgICAgICAgICAgICAgICAgfSkgIT0gbm90Rm91
bmQ7CiAgICAgICAgICAgICB9KTsKQEAgLTg4Nyw4ICs4ODcsOCBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmLCBMaQogICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZFZlY3RvciA9IGJhc2U2NERlY29k
ZShwYXlsb2FkU3RyaW5nKTsKICAgICAgICAgICAgICAgICBpZiAoIXBheWxvYWRWZWN0b3IpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBhdXRvIHBh
eWxvYWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcGF5bG9hZFZlY3Rvcikp
OwotICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BB
TDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhG
YWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldXTsKKyAgICAgICAgICAgICAgICBhdXRvIHBheWxvYWREYXRhID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsKKyAgICAgICAg
ICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29u
dGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJl
YW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfTsKQEAgLTkwMSw3ICs5MDEsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBM
aQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxF
KExPR0lERU5USUZJRVIsICInc2luZicgaW5pdERhdGEsIHByb2Nlc3NpbmcgcmVzcG9uc2UiKTsK
LSAgICAgICAgW21fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nl
c3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygp
IGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpy
ZXNwb25zZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgIFttX2N1cnJlbnRS
ZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNl
OltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VX
aXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgIH0KIAogICAgIC8vIEZJWE1F
KHJkYXI6Ly9wcm9ibGVtLzM1NTkyMjc3KTogc3Rhc2ggdGhlIGNhbGxiYWNrIGFuZCBjYWxsIGl0
IG9uY2UgQVZDb250ZW50S2V5UmVzcG9uc2Ugc3VwcG9ydHMgYSBzdWNjZXNzIGNhbGxiYWNrLgpA
QCAtOTM0LDcgKzkzNCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSBsaWNlbnNlCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlm
aWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNE
YXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAg
IGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5
U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlm
aWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxd
KSB7CiAgICAgICAgICAgICBzdGF0aWMgY29uc3QgTlNTdHJpbmcgKlBsYXliYWNrU2Vzc2lvbklk
S2V5ID0gQCJQbGF5YmFja1Nlc3Npb25JRCI7CkBAIC05NDUsNyArOTQ1LDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vu
c2VUeXBlIGxpY2Vuc2UKIAogICAgICAgICAgICAgaWYgKHNlc3Npb25JZCA9PSBTdHJpbmcocGxh
eWJhY2tTZXNzaW9uSWRWYWx1ZSkpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRShyZGFyOi8v
cHJvYmxlbS8zNTkzNDkyMik6IHVzZSBrZXkgdmFsdWVzIHN0b3JlZCBpbiBleHBpcmVkIHNlc3Np
b24gcmVwb3J0IG9uY2UgYXZhaWxhYmxlCi0gICAgICAgICAgICAgICAgY2hhbmdlZEtleXMuYXBw
ZW5kKChLZXlTdGF0dXNWZWN0b3I6OlZhbHVlVHlwZSl7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCks
IEtleVN0YXR1czo6UmVsZWFzZWQgfSk7CisgICAgICAgICAgICAgICAgY2hhbmdlZEtleXMuYXBw
ZW5kKChLZXlTdGF0dXNWZWN0b3I6OlZhbHVlVHlwZSl7IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpLCBLZXlTdGF0dXM6OlJlbGVhc2VkIH0pOwogICAgICAgICAgICAgICAgIG1fZXhw
aXJlZFNlc3Npb25zLmFwcGVuZChleHBpcmVkU2Vzc2lvbkRhdGEpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CkBAIC05NjUsNyArOTY1LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG8KIHsK
ICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAgICAgaWYgKG1fcmVx
dWVzdExpY2Vuc2VDYWxsYmFjaykgewotICAgICAgICBtX3JlcXVlc3RMaWNlbnNlQ2FsbGJhY2so
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgbV9zZXNzaW9uSWQsIGZhbHNlLCBGYWlsZWQpOworICAg
ICAgICBtX3JlcXVlc3RMaWNlbnNlQ2FsbGJhY2soQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCksIG1fc2Vzc2lvbklkLCBmYWxzZSwgRmFpbGVkKTsKICAgICAgICAgQVNTRVJUKCFtX3Jl
cXVlc3RMaWNlbnNlQ2FsbGJhY2spOwogICAgIH0KICAgICBpZiAobV91cGRhdGVMaWNlbnNlQ2Fs
bGJhY2spIHsKQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJgogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4g
YXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0
YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBl
eHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAo
TlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lv
bkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFw
cElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CkBA
IC0xMDExLDcgKzEwMTEsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJgogCiAgICAgICAgICAg
ICBpZiAoc2Vzc2lvbklkID09IFN0cmluZyhwbGF5YmFja1Nlc3Npb25JZFZhbHVlKSkgewogICAg
ICAgICAgICAgICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1OTM0OTIyKTogdXNlIGtleSB2
YWx1ZXMgc3RvcmVkIGluIGV4cGlyZWQgc2Vzc2lvbiByZXBvcnQgb25jZSBhdmFpbGFibGUKLSAg
ICAgICAgICAgICAgICBjaGFuZ2VkS2V5cy5hcHBlbmQoKEtleVN0YXR1c1ZlY3Rvcjo6VmFsdWVU
eXBlKXsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgS2V5U3RhdHVzOjpSZWxlYXNlZCB9KTsKKyAg
ICAgICAgICAgICAgICBjaGFuZ2VkS2V5cy5hcHBlbmQoKEtleVN0YXR1c1ZlY3Rvcjo6VmFsdWVU
eXBlKXsgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIEtleVN0YXR1czo6UmVsZWFz
ZWQgfSk7CiAgICAgICAgICAgICAgICAgbV9leHBpcmVkU2Vzc2lvbnMuYXBwZW5kKGV4cGlyZWRT
ZXNzaW9uRGF0YSk7CiAgICAgICAgICAgICAgICAgW2V4cGlyZWRTZXNzaW9uc0FycmF5IGFkZE9i
amVjdDpleHBpcmVkU2Vzc2lvbl07CiAgICAgICAgICAgICB9CkBAIC0xMDQxLDcgKzEwNDEsNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3Zl
U2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJgogICAgICAgICAgICAgRVJST1JfTE9HX0lGX1BPU1NJ
QkxFKExPR0lERU5USUZJRVIsICJNdWx0aXBsZSgiLCBleHBpcmVkU2Vzc2lvbnNDb3VudCwgIikg
ZXhwaXJlZCBzZXNzaW9uIHJlcG9ydHMgZm91bmQgd2l0aCBzYW1lIHNlc3Npb25JRCgiLCBzZXNz
aW9uSWQsICIpISIpOwogCiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElG
SUVSLCAiIFN1Y2NlZWRlZCIpOwotICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlz
KSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZXhwaXJlZFNlc3Npb25zRGF0YS5nZXQoKSksIFN1Y2Nl
ZWRlZCk7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZXhwaXJlZFNlc3Npb25zRGF0YS5nZXQoKSksIFN1Y2NlZWRl
ZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEwODYsMTggKzEwODYsMTggQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZXF1ZXN0KEFWQ29udGVudEtleVIKIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZp
ZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlm
aWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0Rh
dGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKIAogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVz
dChyZXF1ZXN0KTsKICAgICBpZiAoa2V5SURzLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAobV9y
ZXF1ZXN0TGljZW5zZUNhbGxiYWNrKSB7Ci0gICAgICAgICAgICBtX3JlcXVlc3RMaWNlbnNlQ2Fs
bGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgbV9zZXNzaW9uSWQsIGZhbHNlLCBGYWlsZWQp
OworICAgICAgICAgICAgbV9yZXF1ZXN0TGljZW5zZUNhbGxiYWNrKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpLCBtX3Nlc3Npb25JZCwgZmFsc2UsIEZhaWxlZCk7CiAgICAgICAgICAg
ICBBU1NFUlQoIW1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjayk7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVy
ID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+
IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5n
Q29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElk
ZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhh
bmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRl
bnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJy
b3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIo
Y29udGVudEtleVJlcXVlc3REYXRhKV0gewpAQCAtMTExMCwxMSArMTExMCwxMSBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVl
c3QoQVZDb250ZW50S2V5UgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlm
IChlcnJvciAmJiBtX3JlcXVlc3RMaWNlbnNlQ2FsbGJhY2spCi0gICAgICAgICAgICAgICAgICAg
IG1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBtX3Nlc3Np
b25JZCwgZmFsc2UsIEZhaWxlZCk7CisgICAgICAgICAgICAgICAgICAgIG1fcmVxdWVzdExpY2Vu
c2VDYWxsYmFjayhDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgbV9zZXNzaW9uSWQs
IGZhbHNlLCBGYWlsZWQpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fcmVxdWVzdExpY2Vu
c2VDYWxsYmFjaykKLSAgICAgICAgICAgICAgICAgICAgbV9yZXF1ZXN0TGljZW5zZUNhbGxiYWNr
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YS5nZXQoKSksIG1fc2Vz
c2lvbklkLCBmYWxzZSwgU3VjY2VlZGVkKTsKKyAgICAgICAgICAgICAgICAgICAgbV9yZXF1ZXN0
TGljZW5zZUNhbGxiYWNrKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50S2V5
UmVxdWVzdERhdGEuZ2V0KCkpLCBtX3Nlc3Npb25JZCwgZmFsc2UsIFN1Y2NlZWRlZCk7CiAgICAg
ICAgICAgICAgICAgZWxzZSBpZiAobV9jbGllbnQpCi0gICAgICAgICAgICAgICAgICAgIG1fY2xp
ZW50LT5zZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZTo6TGljZW5zZVJlcXVlc3QsIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YS5nZXQoKSkpOworICAgICAgICAgICAg
ICAgICAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGU6OkxpY2Vuc2VSZXF1
ZXN0LCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudEtleVJlcXVlc3REYXRh
LmdldCgpKSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX3JlcXVlc3RMaWNlbnNlQ2FsbGJh
Y2spOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH1dOwpAQCAtMTE1Myw5ICsxMTUzLDkgQEAg
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3Zp
ZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50
aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2Vy
dGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVO
U0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAotICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZlY3Rv
cjxzdGQ6OnBhaXI8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFJldGFpblB0cjxOU0RhdGE+Pj47Cisg
ICAgdXNpbmcgUmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4sIFJldGFpblB0cjxOU0RhdGE+Pj47CiAgICAgc3RydWN0IENhbGxiYWNr
QWdncmVnYXRvciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDYWxsYmFja0Fn
Z3JlZ2F0b3I+IHsKICAgICAgICAgdXNpbmcgQ2FsbGJhY2tGdW5jdGlvbiA9IEZ1bmN0aW9uPHZv
aWQoUmVxdWVzdHNEYXRhJiYpPjsKICAgICAgICAgc3RhdGljIFJlZlB0cjxDYWxsYmFja0FnZ3Jl
Z2F0b3I+IGNyZWF0ZShDYWxsYmFja0Z1bmN0aW9uJiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0x
MTg3LDcgKzExODcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIGlmIChyZXF1ZXN0c0RhdGEuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICBtX3JlcXVlc3RMaWNlbnNlQ2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgbV9zZXNz
aW9uSWQsIGZhbHNlLCBGYWlsZWQpOworICAgICAgICAgICAgbV9yZXF1ZXN0TGljZW5zZUNhbGxi
YWNrKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBtX3Nlc3Npb25JZCwgZmFsc2Us
IEZhaWxlZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTE5NiwxMyAr
MTE5NiwxMyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBlbnRy
eSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJl
cXVlc3REYXRhLmZpcnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3REYXRh
LnNlY29uZDsKLSAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5j
b2RlVG9TdHJpbmcoa2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAgICAg
ZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBlbnRy
eS0+c2V0U3RyaW5nKCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5nZXQo
KS5ieXRlcywgcGF5bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RKU09O
LT5wdXNoT2JqZWN0KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQogICAgICAgICBhdXRvIHJl
cXVlc3RCdWZmZXIgPSB1dGY4QnVmZmVyKHJlcXVlc3RKU09OLT50b0pTT05TdHJpbmcoKSk7CiAg
ICAgICAgIGlmICghcmVxdWVzdEJ1ZmZlcikgewotICAgICAgICAgICAgbV9yZXF1ZXN0TGljZW5z
ZUNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIG1fc2Vzc2lvbklkLCBmYWxzZSwgRmFp
bGVkKTsKKyAgICAgICAgICAgIG1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjayhDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSwgbV9zZXNzaW9uSWQsIGZhbHNlLCBGYWlsZWQpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIG1fcmVxdWVzdExpY2Vuc2VDYWxsYmFj
ayhyZXF1ZXN0QnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIG1fc2Vzc2lvbklkLCBmYWxzZSwgU3Vj
Y2VlZGVkKTsKQEAgLTEyMTEsOCArMTIxMSw4IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAg
ICAgQHRyeSB7CiAgICAgICAgIGZvciAoYXV0byByZXF1ZXN0IDogbV9jdXJyZW50UmVxdWVzdC52
YWx1ZSgpLnJlcXVlc3RzKSB7CiAgICAgICAgICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJl
cXVlc3QocmVxdWVzdC5nZXQoKSk7Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBr
ZXlJRCA9IFdURk1vdmUoa2V5SURzLmZpcnN0KCkpOwotICAgICAgICAgICAgYXV0byBjb250ZW50
SWRlbnRpZmllciA9IGtleUlELT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5SURzLmZpcnN0KCkpOwor
ICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdD
b250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRl
bnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFu
ZGxlcjpba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVu
dEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9y
KSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSldICgpIG11dGFibGUgewpAQCAtMTIyMyw3ICsxMjIzLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8
UmV0YWkKICAgICB9IEBjYXRjaChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAgICAgICAgIEVS
Uk9SX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiZXhjZXB0aW9uIHRocm93biBmcm9t
IC1tYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmNvbnRlbnRJZGVudGlm
aWVyOm9wdGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6ICIsIFtbZXhjZXB0aW9uIG5hbWVdIFVURjhT
dHJpbmddLCAiLCByZWFzb24gOiAiLCBbW2V4Y2VwdGlvbiByZWFzb25dIFVURjhTdHJpbmddKTsK
ICAgICAgICAgaWYgKG1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjaykKLSAgICAgICAgICAgIG1fcmVx
dWVzdExpY2Vuc2VDYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBtX3Nlc3Npb25JZCwg
ZmFsc2UsIEZhaWxlZCk7CisgICAgICAgICAgICBtX3JlcXVlc3RMaWNlbnNlQ2FsbGJhY2soQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIG1fc2Vzc2lvbklkLCBmYWxzZSwgRmFpbGVk
KTsKICAgICAgICAgQVNTRVJUKCFtX3JlcXVlc3RMaWNlbnNlQ2FsbGJhY2spOwogICAgIH0KIH0K
QEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QoQVZDb24KIAogICAgIFJl
dGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRl
ID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmll
ciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9
IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBhdXRv
IGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpKTsKIAot
ICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCkt
PmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVy
ID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAg
IEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3RE
YXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElk
ZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwg
TlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
dGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJy
b3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3RE
YXRhKV0gewpAQCAtMTI2Miw5ICsxMjYyLDkgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QoQVZDb24KICAg
ICAgICAgICAgICAgICBpZiAoZXJyb3IgJiYgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2spCiAgICAg
ICAgICAgICAgICAgICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwogICAgICAgICAgICAgICAg
IGVsc2UgaWYgKG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKQotICAgICAgICAgICAgICAgICAgICBt
X3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQs
IE1lc3NhZ2UoTWVzc2FnZVR5cGU6OkxpY2Vuc2VSZW5ld2FsLCBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShjb250ZW50S2V5UmVxdWVzdERhdGEuZ2V0KCkpKSwgU3VjY2VlZGVkKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0LCBNZXNzYWdlKE1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVuZXdhbCwgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YS5nZXQoKSkpLCBTdWNj
ZWVkZWQpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fY2xpZW50KQotICAgICAgICAgICAg
ICAgICAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGU6OkxpY2Vuc2VSZW5l
d2FsLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50S2V5UmVxdWVzdERhdGEuZ2V0KCkpKTsK
KyAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQtPnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBl
OjpMaWNlbnNlUmVuZXdhbCwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRL
ZXlSZXF1ZXN0RGF0YS5nZXQoKSkpOwogICAgICAgICAgICAgICAgIEFTU0VSVCghbV91cGRhdGVM
aWNlbnNlQ2FsbGJhY2spOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH1dOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDAzMzRkNjIzYjJhNzYw
NWM5YmUxMjIxM2I1YWJkYmJhYzJiMDNmMTUuLjYyYjgzZmJmZDU3OTQwNTBlYmM5NDA2MzcwNDkw
YmEyYjNlYzA4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9u
OwogCiBjbGFzcyBJbWFnZURlY29kZXJBVkZPYmpDIDogcHVibGljIEltYWdlRGVjb2RlciB7CiBw
dWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJBVkZP
YmpDPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXJBVkZPYmpDKCk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzdXBwb3J0c01lZGlhVHlwZShNZWRpYVR5
cGUpOwpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZv
cm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0g
RGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZp
bmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29s
IGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREYXRh
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAg
ICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxE
YXRhUmVjZWl2ZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJD
YWNoZShzaXplX3QpIGZpbmFsOwogCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBWZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+IGZyYW1lSW5mb3MoKSBj
b25zdDsKIAogcHJpdmF0ZToKLSAgICBJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyQVZGT2JqQyhGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKTsKIAogICAgIEFWQXNzZXRUcmFjayAqZmlyc3RFbmFibGVkVHJhY2soKTsKICAg
ICB2b2lkIHJlYWRTYW1wbGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNv
ZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNjMTRm
NGJmLi4zNWM2Y2U2N2U4NWY4NmFlMTY0YzIxYTcyNjA3ZmMwNjVlY2I1MDU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTI4OSw3ICsyODks
NyBAQCBJbWFnZURlY29kZXJBVkZPYmpDU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRvciBpdGVyKQog
CiAjcHJhZ21hIG1hcmsgLSBJbWFnZURlY29kZXJBVkZPYmpDCiAKLVJlZlB0cjxJbWFnZURlY29k
ZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRh
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8
SW1hZ2VEZWNvZGVyQVZGT2JqQz4gSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9u
IGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikKIHsKICAgICAvLyBBVkZvdW5kYXRpb24gbWF5IG5vdCBiZSBhdmFpbGFibGUg
YXQgcnVudGltZS4KICAgICBpZiAoIUFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS5p
c0F2YWlsYWJsZSgpKQpAQCAtMzAxLDcgKzMwMSw3IEBAIFJlZlB0cjxJbWFnZURlY29kZXJBVkZP
YmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25z
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyQVZGT2JqQyhkYXRhLCBtaW1l
VHlwZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiB9CiAKLUlt
YWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVmZmVyJiBkYXRh
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pCitJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICA6IEltYWdlRGVjb2RlcigpCiAg
ICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV91dGkoV2ViQ29yZTo6VVRJRnJvbU1J
TUVUeXBlKG1pbWVUeXBlKSkKQEAgLTMwOSw3ICszMDksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpD
OjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBt
aW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJSZXNvdXJj
ZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAgICAgLCBtX2Rl
Y29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6Y3JlYXRlUkdC
KCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CiAKICAgICBbbV9hc3Nl
dC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xvYWRlci5nZXQoKSBxdWV1ZTpk
aXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQs
IDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOkBbQCJ0
cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1d
ICgpIG11dGFibGUgewpAQCAtNjQxLDkgKzY0MSw5IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkK
ICAgICBtX2xvYWRlci5nZXQoKS5leHBlY3RlZENvbnRlbnRTaXplID0gZXhwZWN0ZWRDb250ZW50
U2l6ZTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6
OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRh
dGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0
YVJlY2VpdmVkXTsKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0Fs
bERhdGFSZWNlaXZlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggMjAwZTFhOGY5
YWZiYTBmY2JiYTViMGEzZWQ3MDRjZDM0MWI0NTBkNi4uYzlkOWIyYTk2ODViMDFlOTFhYWEwMGMw
ZTAwMzA3NzM4NTY5MTQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtNjYsNyArNjYsNyBA
QCBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY7CiBjbGFzcyBNZWRpYVBs
YXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7CiBjbGFzcyBQ
aXhlbEJ1ZmZlckNvbmZvcm1lckNWOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzsKIGNsYXNzIFZp
ZGVvVHJhY2tQcml2YXRlQVZGT2JqQzsKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjsK
QEAgLTQyNiw3ICs0MjYsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxX
YWxsVGltZT4gbV93YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRUaW1lOwogICAgIG11dGFibGUgaW50
IG1fdGltZUNvbnRyb2xTdGF0dXNBdENhY2hlZEN1cnJlbnRUaW1lIHsgMCB9OwogICAgIG11dGFi
bGUgZG91YmxlIG1fcmVxdWVzdGVkUmF0ZUF0Q2FjaGVkQ3VycmVudFRpbWUgeyAwIH07Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gbV9rZXlJRDsKICAgICBkb3VibGUgbV9jYWNoZWRSYXRlIHsgMCB9OwogICAgIGJv
b2wgbV9yZXF1ZXN0ZWRQbGF5aW5nIHsgZmFsc2UgfTsKICAgICBkb3VibGUgbV9yZXF1ZXN0ZWRS
YXRlIHsgMS4wIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBkMThhODVhNzk0ZjUyM2Y5
NDkxMmUyN2YwOGI3Y2NiZTg5M2M4ZWQwLi4zNjEzNGZmMjU2MjllNmRlYjk3NzE0NjVlMTQ4MzMw
NDUwMjcxYTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTIwNDksNyArMjA0OSw3IEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxv
YWRpbmdPZlJlc291cmNlKEFWQXNzZXRSCiAgICAgICAgIH0KIAogICAgICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBrZXlVUklEYXRhID0gW2tleVVSSSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZyBhbGxvd0xvc3N5Q29udmVyc2lvbjpZRVNdOwotICAgICAgICBtX2tleUlEID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoa2V5VVJJRGF0YS5nZXQoKSk7CisgICAgICAgIG1fa2V5SUQg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoa2V5VVJJRGF0YS5nZXQoKSk7CiAgICAg
ICAgIHBsYXllcigpLT5pbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCgic2tkIl9zLCBtX2tl
eUlELT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKICAgICAgICAgc2V0V2FpdGluZ0ZvcktleSh0
cnVlKTsKICNlbmRpZgpAQCAtMjc5Miw3ICsyNzkyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3Rh
bmMKICAgICBpZiAoIW1fa2V5SUQgfHwgIW1fY2RtSW5zdGFuY2UpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktl
eUlEcyhWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+Ojpmcm9tKCptX2tleUlEKSk7CisgICAgYXV0
byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3RhbmNlLT5zZXNzaW9uRm9yS2V5SURzKFZlY3Rv
cjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+Ojpmcm9tKCptX2tleUlEKSk7CiAgICAgaWYg
KCFpbnN0YW5jZVNlc3Npb24pCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KaW5kZXggZDk2MGFmZGNh
MjE0YmZhNDQwZWVhMjA4ODNiY2E5MTMyZTIyZjlhMC4uNGRkNmI5MWE5NDgzMTY5YTAyMzY4ODhk
MGU0ZDgyZmZiODM2NjYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0yMTMsNyArMjEzLDcgQEAgU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQzo6flNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMoKQogdm9pZCBTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKFNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFwcGVuZEZsYWdzIGZsYWdz
KQogewogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gc2VnbWVudC50YWtlU2hhcmVkQnVmZmVyKCk7
Ci0gICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgIGF1
dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKICAgICBpZiAobV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHx8IGZsYWdzID09IEFwcGVuZEZsYWdz
OjpEaXNjb250aW51aXR5KQogICAgICAgICBbbV9wYXJzZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0Rh
dGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3RyZWFtRGF0YVBhcnNlclN0cmVhbURhdGFEaXNjb250aW51
aXR5XTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCAwMzQyMGYxMzgzNjRmYWMyMDkxZTEwNGQxMzZmZjM4
YTFmYjlmZTIyLi5lYWQwODNhNmNjN2U3MzZiNDIxNzEwZmFjMzkyYTA3ZGZmOTJiZTU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
LmgKQEAgLTczLDcgKzczLDcgQEAgY2xhc3MgVmlkZW9UcmFja1ByaXZhdGU7CiBjbGFzcyBBdWRp
b1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOwogY2xhc3MgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xh
c3MgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakNFcnJvckNsaWVudCB7CiBwdWJsaWM6CkBAIC0x
NTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JU
cmFja0lkKFJlZjxNZWRpYVNhbXBsZT4mJiwgdWludDY0X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5n
JiBtZWRpYVR5cGUpOwogCiAgICAgLy8gU291cmNlQnVmZmVyUHJpdmF0ZSBvdmVycmlkZXMKLSAg
ICB2b2lkIGFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGFwcGVu
ZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBhYm9ydCgp
IGZpbmFsOwogICAgIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpIGZpbmFsOwogICAgIHZvaWQgcmVt
b3ZlZEZyb21NZWRpYVNvdXJjZSgpIGZpbmFsOwpAQCAtMjIxLDcgKzIyMSw3IEBAIHByaXZhdGU6
CiAjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtF
WVNFU1NJT04pCiAgICAgUmVmUHRyPENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
PiBtX2NkbUluc3RhbmNlOwotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gbV9rZXlJRHM7
CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9rZXlJRHM7CiAjZW5k
aWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBtX2NhY2hlZFNpemU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmlu
ZGV4IDNhMjg2N2ExYWMyNDNiYjljOTNjOWQ2YjcwY2E1NmIwMjk0OGZjOWMuLjc5MjFlMTE0ZDE3
ZjhjYThlNmRkMzBiOWU2ZjQ3YmVlOGNkZTMwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC01MzMsNyArNTMzLDcg
QEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUgPSBo
YXNTZXNzaW9uU2VtYXBob3JlOwogICAgIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYm
IEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKLSAgICBhdXRvIGluaXREYXRhQnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUobV9pbml0RGF0YS0+ZGF0YSgpLCBtX2luaXREYXRhLT5ieXRlTGVu
Z3RoKCkpOworICAgIGF1dG8gaW5pdERhdGFCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUobV9pbml0RGF0YS0+ZGF0YSgpLCBtX2luaXREYXRhLT5ieXRlTGVuZ3RoKCkpOwog
ICAgIGF1dG8ga2V5SURzID0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5
SURzU2luZihpbml0RGF0YUJ1ZmZlcik7CiAgICAgaWYgKCFrZXlJRHMpCiAgICAgICAgIHJldHVy
bjsKQEAgLTU2Myw3ICs1NjMsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpk
aWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGbwogICAgIFVOVVNF
RF9QQVJBTShoYXNTZXNzaW9uU2VtYXBob3JlKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImRhdGEgbGVuZ3RoID0g
IiwgZGF0YS0+c2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCBmMGQ4ZTcxMTMyZjZjMjg3YTJlNjI5YTRiODhhNTM5
ZGZkNTNjYmUyLi4wZWZlZWFlZjViMmQ3MWJjNmQ2NzA0ZGQxYjk3NWFjYmFlMTEzYmJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaApA
QCAtNDMsNyArNDMsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OwogY2xhc3MgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIpOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbnNl
UmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChj
b25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2b2lk
IG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIG5l
d0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7
CiAKICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVudDsKICAg
ICBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IG1fYXZSZXF1ZXN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
CmluZGV4IGEyMmE5OTdiMTEwNzlkNDY1ODZhYTY0ODU2MWJiZjcyYTZmMjQ3ZjAuLmU3N2JiZDBi
YjZjNDgyYzU5MDdjM2NhMmI0YmU1NDU4NWM3ZWYzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTE1NiwxNCArMTU2LDE0
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgZmluYWwgeyBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQog
ICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGRh
dGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWdu
ZWQgbG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikgZmluYWw7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgbG9hZEZh
aWxlZChlcnJvcik7IH0KICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgbG9hZEZhaWxlZChlcnJvcik7
IH0KICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbCB7IGxvYWRGaW5pc2hlZCgpOyB9CiAKICAgICBXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlh
UmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07CiAKIFdlYWtQdHI8UGxhdGZv
cm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmNyZWF0
ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMTEsMTMgKzIx
MSwxMCBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkK
ICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQoKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVJlc291cmNl
TWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVy
ID0gV1RGTW92ZShidWZmZXIpOwotICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChX
VEZNb3ZlKGJ1ZmZlcikpOwotICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZl
cigqbV9idWZmZXIpOworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAg
IG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwog
fQogCiBjbGFzcyBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcj4gewpAQCAtMjI4LDcgKzIyNSw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsK
ICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVy
OwogfTsKIAogRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlh
TG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0KQpAQCAtMjM4LDcgKzIzNSw3IEBAIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVy
OjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImCiAK
ICAgICBpZiAoYXV0byByZXN1bHQgPSBEYXRhVVJMRGVjb2Rlcjo6ZGVjb2RlKHJlcXVlc3QudXJs
KCksIERhdGFVUkxEZWNvZGVyOjpNb2RlOjpGb3JnaXZpbmdCYXNlNjQpKSB7CiAgICAgICAgIG1f
cmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UocmVxdWVzdC51cmwo
KSwgKnJlc3VsdCk7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShyZXN1bHQtPmRhdGEpKTsKKyAgICAgICAgbV9idWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKICAgICB9CiAKICAgICBjYWxs
T25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CkBAIC0z
ODgsNyArMzg1LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hl
ZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lk
IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVZBc3NldFJlc291cmNl
TG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVz
dF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApp
bmRleCBkYjQ1N2E4MWQzZWU4MjkxYjkwNWU5YmE3N2MxZTJhZjMwOWUwY2IyLi4zMWRiOTc0MzFh
ZWIyMjNkMzg1MmZkNmEzYWIxYWRiNTc1ZmIwZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oCkBAIC0zMSwxMCArMzEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBG
VF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9u
OwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFi
aWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOwogCkBAIC00NSw3ICs0Niw3IEBA
IHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsK
IHB1YmxpYzoKLSAgICBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKEZUX0ZhY2UsIFNoYXJlZEJ1ZmZl
ciYpOworICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSwgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpOwogICAgIH5Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKCkgPSBkZWZhdWx0OwogICAg
IEZvbnRQbGF0Zm9ybURhdGEgZm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24m
LCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAg
ICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJik7CkBAIC01NCw3ICs1
NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPGNhaXJvX2ZvbnRfZmFjZV90PiBtX2ZvbnRGYWNl
OwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IGEzNDRiYmVjZGE5ZmZlNjdkNGU4
ZDNlNDVlMmQwNGJlZDNkNTBjMDYuLmRhNzUxODQ0ZTcyZGRjNmZjNmFmZTk3ZDMzYjUzYzE5NzZl
NzBiODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMgc3RkOjpvcHRp
b25hbDxJbnRTaXplPiBkZW5zaXR5Q29ycmVjdGVkU2l6ZUZyb21Qcm9wZXJ0aWVzKENGRGljdGlv
bmFyeVJlZgogI2lmICFQTEFURk9STShDT0NPQSkKIHNpemVfdCBzaGFyZWRCdWZmZXJHZXRCeXRl
c0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6
ZV90IGNvdW50KQogewotICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nh
c3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogc2hh
cmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGluZm8pOwog
ICAgIHNpemVfdCBzb3VyY2VTaXplID0gc2hhcmVkQnVmZmVyLT5zaXplKCk7CiAgICAgaWYgKHBv
c2l0aW9uID49IHNvdXJjZVNpemUpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjQ0LDE2ICsyNDQs
MTYgQEAgc2l6ZV90IHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2
b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9uLAogCiB2b2lkIHNoYXJlZEJ1ZmZlclJlbGVhc2Uo
dm9pZCogaW5mbykKIHsKLSAgICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19j
YXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHNo
YXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPihpbmZvKTsK
ICAgICBzaGFyZWRCdWZmZXItPmRlcmVmKCk7CiB9CiAjZW5kaWYKIAotSW1hZ2VEZWNvZGVyQ0c6
OkltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKQorSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYg
KGRhdGEuc2l6ZSgpID49IDMyKQotICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291
cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51
bGxwdHIpKTsKKyAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVX
aXRoRGF0YShkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxs
cHRyLCBudWxscHRyKSk7CiAgICAgCiAgICAgaWYgKHV0aUhpbnQpIHsKICAgICAgICAgY29uc3Qg
dm9pZCoga2V5ID0ga0NHSW1hZ2VTb3VyY2VUeXBlSWRlbnRpZmllckhpbnQ7CkBAIC01NjIsMjMg
KzU2MiwyNCBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaQogICAgIHJldHVybiBtYXNrZWRJbWFn
ZSA/IG1hc2tlZEltYWdlIDogaW1hZ2U7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERh
dGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VE
ZWNvZGVyQ0c6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiB7CiAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZl
ZDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lk
ZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRo
ZSBTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2UuCi0gICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidz
IGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMs
IGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcwotICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBT
aGFyZWRCdWZmZXIuCi0gICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVy
LmdldCgpLCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAg
IC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBj
YW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcidzIGtub3dsZWRnZS4KKyAgICAvLyBXZSB1c2UgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcidz
IGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMs
IGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcworICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyLgorICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0
aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5n
ZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbHNlCi0gICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJv
dmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIGRhdGEucmVmKCk7Ci0gICAgLy8g
V2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdl
dEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgorICAgIC8vIENyZWF0ZSBhIENH
RGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCisgICAgYXV0
byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBjb250aWd1b3Vz
RGF0YS5nZXQoKS5yZWYoKTsKKyAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBj
YWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcgogICAgIC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBk
b3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdo
aWNoCiAgICAgLy8gaXMgYSByZXF1aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVy
IGNhbGxiYWNrLgogICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2Fs
bGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJl
ZEJ1ZmZlclJlbGVhc2UgfTsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQ
cm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoJmRhdGEsIGRhdGEu
c2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlk
ZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3Qo
Y29udGlndW91c0RhdGEucHRyKCksIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsK
ICAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YVByb3ZpZGVyKG1fbmF0aXZlRGVjb2Rlci5nZXQo
KSwgZGF0YVByb3ZpZGVyLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2VuZGlmCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cu
aAppbmRleCA5NzQwNzM2YTIxYWM5OThhYjA1ZjFjOWI0ZjViMTY3NWU0NGQyYzkxLi5hMGFjMWMy
ZmJlZTUyN2U1YWIxMTE0NTU4MTJiZGI3MzYzYTA1NTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKQEAgLTMyLDkgKzMy
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW1hZ2VEZWNvZGVyQ0cgZmluYWwgOiBw
dWJsaWMgSW1hZ2VEZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBJbWFnZURlY29kZXJDRyhTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyQ0coRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKTsKIAotICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyQ0c+IGNyZWF0ZShTaGFyZWRCdWZm
ZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICBzdGF0aWMgUmVmPEltYWdlRGVj
b2RlckNHPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24g
YWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNv
ZGVyQ0coZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiAg
ICAgfQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybUltYWdlUHRyIGNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBs
aW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlv
bnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCi0gICAgdm9pZCBzZXREYXRh
KFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNl
dERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5h
bDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9p
c0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVf
dCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKaW5kZXggMzFjMjdjMDY5YjJiM2M3MDM3MzJl
YjcxM2IyNjMxMjg0MjEyNGU2ZS4uZmY3N2I1M2U5ZDY5ZmM0NzA0NTEyNDcwMmYxYTM0ZjBmMmQ4
N2NlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFBERkRvY3Vt
ZW50SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sKQogCiB2b2lkIFBERkRvY3VtZW50SW1h
Z2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJS
ZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRh
KGRhdGEoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJv
dmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRo
Q0ZEYXRhKGRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsK
ICAgICBtX2RvY3VtZW50ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVy
KGRhdGFQcm92aWRlci5nZXQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0K
aW5kZXggODU0MjFlM2RlNzA5Y2UxNTljNDk0YjQwZmI4ZDFhZDIzNTkzYzNiYi4uODQ0YWM0NGYz
YWRkZmE5ZjM5NTc4NmI5NGJkZDUwOTQxZTcyNzU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFD
b2NvYS5tbQpAQCAtNTcsNyArNTcsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3Jt
SXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4g
Q0ZFcXVhbChtX2ZvbnQuZ2V0KCksIG90aGVyLm1fZm9udC5nZXQoKSk7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50
MzJfdCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1E
YXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcAppbmRleCBmNzQ3ZDgwZmI2MWQz
MGZjNTAyMmU2ODJkNjM1NjEzM2QzY2E2OTdhLi5jOGE4MDYxMjIwNTNmNjQ4YWRkYjAyYWMzODlj
ZTcxNDM2OGRiYmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKQEAgLTgwLDcgKzgwLDcg
QEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXI6OnNldE1pbmltdW1BdWRpb1NhbXBsZUR1cmF0aW9u
KGZsb2F0KQogewogfQogCi1Tb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OlNlZ21lbnQoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OlNl
Z21lbnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIDogbV9zZWdt
ZW50KFdURk1vdmUoYnVmZmVyKSkKIHsKIH0KQEAgLTEwMSw3ICsxMDEsNyBAQCBzaXplX3QgU291
cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICAgICAgICAgIHJldHVy
biBjbGFtcFRvPHNpemVfdD4oTVRQbHVnaW5CeXRlU291cmNlR2V0TGVuZ3RoKGJ5dGVTb3VyY2Uu
Z2V0KCkpKTsKICAgICAgICAgfSwKICNlbmRpZgotICAgICAgICBbXShjb25zdCBSZWY8U2hhcmVk
QnVmZmVyPiYgYnVmZmVyKQorICAgICAgICBbXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci0+c2l6
ZSgpOwogICAgICAgICB9CkBAIC0xMjUsNyArMTI1LDcgQEAgYXV0byBTb3VyY2VCdWZmZXJQYXJz
ZXI6OlNlZ21lbnQ6OnJlYWQoc2l6ZV90IHBvc2l0aW9uLCBzaXplX3Qgc2l6ZVRvUmVhZCwgdWlu
dDgKICAgICAgICAgICAgIHJldHVybiBVbmV4cGVjdGVkPFJlYWRFcnJvcj4geyBSZWFkRXJyb3I6
OkZhdGFsRXJyb3IgfTsKICAgICAgICAgfSwKICNlbmRpZgotICAgICAgICBbJl0oY29uc3QgUmVm
PFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVhZFJlc3VsdAorICAgICAgICBbJl0oY29uc3Qg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlYWRSZXN1bHQKICAgICAg
ICAgewogICAgICAgICAgICAgYnVmZmVyLT5jb3B5VG8oZGVzdGluYXRpb24sIHBvc2l0aW9uLCBz
aXplVG9SZWFkKTsKICAgICAgICAgICAgIHJldHVybiBzaXplVG9SZWFkOwpAQCAtMTMzLDcgKzEz
Myw3IEBAIGF1dG8gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpyZWFkKHNpemVfdCBwb3Np
dGlvbiwgc2l6ZV90IHNpemVUb1JlYWQsIHVpbnQ4CiAgICAgKTsKIH0KIAotUmVmPFNoYXJlZEJ1
ZmZlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50Ojp0YWtlU2hhcmVkQnVmZmVyKCkKK1Jl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRh
a2VTaGFyZWRCdWZmZXIoKQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc2VnbWVudCwK
ICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVSKQpAQCAtMTQyLDI4ICsxNDIsMjggQEAg
UmVmPFNoYXJlZEJ1ZmZlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50Ojp0YWtlU2hhcmVk
QnVmZmVyKCkKICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3Ioc2l6ZSgpKTsKICAg
ICAgICAgICAgIGF1dG8gcmVhZFJlc3VsdCA9IHJlYWQoMCwgdmVjdG9yLnNpemUoKSwgdmVjdG9y
LmRhdGEoKSk7CiAgICAgICAgICAgICBpZiAoIXJlYWRSZXN1bHQuaGFzX3ZhbHVlKCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICAgICAg
dmVjdG9yLnNocmluayhyZWFkUmVzdWx0LnZhbHVlKCkpOwotICAgICAgICAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSk7CisgICAgICAgICAgICByZXR1cm4g
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSk7CiAgICAgICAg
IH0sCiAjZW5kaWYKLSAgICAgICAgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAg
ICAgIFsmXShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UoYnVmZmVyLCBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKGJ1ZmZlciwgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpOwogICAgICAgICB9CiAgICAgKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpnZXRTaGFyZWRC
dWZmZXIoKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZl
clBhcnNlcjo6U2VnbWVudDo6Z2V0U2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICByZXR1cm4g
V1RGOjpzd2l0Y2hPbihtX3NlZ21lbnQsCiAjaWYgSEFWRShNVF9QTFVHSU5fRk9STUFUX1JFQURF
UikKLSAgICAgICAgWyZdKGNvbnN0IFJldGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VSZWY+Jikg
LT4gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4KKyAgICAgICAgWyZdKGNvbnN0IFJldGFpblB0cjxNVFBs
dWdpbkJ5dGVTb3VyY2VSZWY+JikgLT4gUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+CiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9LAogI2VuZGlm
Ci0gICAgICAgIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZWZQdHI8
U2hhcmVkQnVmZmVyPgorICAgICAgICBbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIC0+IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPgogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm4gYnVmZmVyLnB0cigpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlci5oCmluZGV4IDUyMGI1MjA3ZmMyNzFkNzk4MTUzM2ZiMTRkMjMxNTU5NGE4ODgzNjUu
LjcyOTdhNzkxNGE3OWFkZjY0MmRjNmIxNmIzNmU2MGY5Y2QwMjlmMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlci5oCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q29udGVudFR5cGU7CiBjbGFzcyBNZWRpYVNhbXBsZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNvdXJj
ZUJ1ZmZlclBhcnNlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTb3VyY2VCdWZmZXJQ
YXJzZXI+IHsKIHB1YmxpYzoKQEAgLTY5LDExICs2OSwxMSBAQCBwdWJsaWM6CiAjaWYgSEFWRShN
VF9QTFVHSU5fRk9STUFUX1JFQURFUikKICAgICAgICAgU2VnbWVudChSZXRhaW5QdHI8TVRQbHVn
aW5CeXRlU291cmNlUmVmPiYmKTsKICNlbmRpZgotICAgICAgICBTZWdtZW50KFJlZjxTaGFyZWRC
dWZmZXI+JiYpOworICAgICAgICBTZWdtZW50KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KTsKICAgICAgICAgU2VnbWVudChTZWdtZW50JiYpID0gZGVmYXVsdDsKLSAgICAgICAgUmVmPFNo
YXJlZEJ1ZmZlcj4gdGFrZVNoYXJlZEJ1ZmZlcigpOwotICAgICAgICAvLyBXaWxsIHJldHVybiBu
dWxscHRyIGlmIFNlZ21lbnQncyBiYWNrZW5kIGlzbid0IGEgU2hhcmVkQnVmZmVyLgotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBnZXRTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICAgICAg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHRha2VTaGFyZWRCdWZmZXIoKTsKKyAgICAgICAg
Ly8gV2lsbCByZXR1cm4gbnVsbHB0ciBpZiBTZWdtZW50J3MgYmFja2VuZCBpc24ndCBhIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIuCisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBnZXRTaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0
OwogCkBAIC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRf
UkVBREVSKQogICAgICAgICAgICAgUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4sCiAj
ZW5kaWYKLSAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+CisgICAgICAgICAgICBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgPiBtX3NlZ21lbnQ7CiAgICAgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCAzNTllZGI0MTVmZDM3NWVkODJiN2I0
YTQ5ZjExZTRjOGZkNmM3ZDZiLi45YmMxODk0MTk4NjMwYmFkOGQ3Y2JkMGIzYTViMjhlNDZlOWVm
ZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtMzY3LDcgKzM2Nyw3
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIEZyZWVEYXRhU2VnbWVudCh2b2lkKiByZWZj
b24sIHZvaWQqLCBzaXplX3QpCiAgICAgewotICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVy
cHJldF9jYXN0PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihyZWZjb24pOworICAgICAgICBh
dXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PERhdGFTZWdtZW50Kj4ocmVmY29uKTsKICAg
ICAgICAgYnVmZmVyLT5kZXJlZigpOwogICAgIH0KIApAQCAtMzg4LDcgKzM4OCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICBhZHZhbmNlVG9OZXh0U2VnbWVudCgpOwogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2hhcmVkQnVmZmVyID0gY3VycmVudFNlZ21lbnQuZ2V0U2hhcmVkQnVmZmVyKCk7Cisg
ICAgICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0g
Y3VycmVudFNlZ21lbnQuZ2V0U2hhcmVkQnVmZmVyKCk7CiAgICAgICAgICAgICBDTUJsb2NrQnVm
ZmVyUmVmIHJhd0Jsb2NrQnVmZmVyID0gbnVsbHB0cjsKICAgICAgICAgICAgIHVpbnQ2NF90IGxh
c3RSZWFkID0gMDsKICAgICAgICAgICAgIHNpemVfdCBkZXN0aW5hdGlvbk9mZnNldCA9IG1fcG9z
aXRpb25XaXRoaW5TZWdtZW50OwpAQCAtNDA5LDcgKzQwOSw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICBkZXN0aW5hdGlvbk9mZnNldCA9IDA7CiAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgIEFTU0VSVChzaGFyZWRCdWZmZXItPmhhc09uZVNlZ21lbnQoKSwgIkNhbiBv
bmx5IGRlYWwgd2l0aCBzaGFyZWRCdWZmZXIgY29udGFpbmluZyBhIHNpbmdsZSBEYXRhU2VnbWVu
dCIpOwotICAgICAgICAgICAgICAgIC8vIEEgU2hhcmVkQnVmZmVyIGRvZXNuJ3QgaGF2ZSB0aHJl
YWQtc2FmZSByZWZjb3VudGluZywgYXMgc3VjaCB3ZSBtdXN0IGtlZXAgYSByZWZlcmVuY2UgdG8g
dGhlIERhdGFTZWdtZW50IGluc3RlYWQuCisgICAgICAgICAgICAgICAgLy8gQSBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyIGRvZXNuJ3QgaGF2ZSB0aHJlYWQtc2FmZSByZWZjb3VudGluZywgYXMgc3Vj
aCB3ZSBtdXN0IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIERhdGFTZWdtZW50IGluc3RlYWQuCiAg
ICAgICAgICAgICAgICAgLy8gVE9ETzogY291bGQgd2Ugb25seSBjcmVhdGUgYSBuZXcgQ01CbG9j
a0J1ZmZlciBpZiB0aGUgYmFja2VuZCBtZW1vcnkgY2hhbmdlZCBzaW5jZSB0aGUgcHJldmlvdXMg
b25lPwogICAgICAgICAgICAgICAgIGF1dG8gZmlyc3RTZWdtZW50ID0gc2hhcmVkQnVmZmVyLT5i
ZWdpbigpLT5zZWdtZW50OwogICAgICAgICAgICAgICAgIHNpemVfdCBjYW5SZWFkID0gc3RkOjpt
aW48c2l6ZV90PihudW1Ub1JlYWQsIGZpcnN0U2VnbWVudC0+c2l6ZSgpIC0gbV9wb3NpdGlvbldp
dGhpblNlZ21lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAK
aW5kZXggNTlkMjE2Njc5ZDJmZTRjODBjNjlhYWE3MWYzOTIxZDYyNTdhYWM5YS4uY2M1OTRmMzg0
ZTU2MzVkZWRhOGY0MjNmNjg0ZGE1YjU1NDk3MDY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxh
dGZvcm1EYXRhQ29yZVRleHQuY3BwCkBAIC0xNTEsMTAgKzE1MSwxMCBAQCBSZXRhaW5QdHI8Q0ZU
eXBlUmVmPiBGb250UGxhdGZvcm1EYXRhOjpvYmplY3RGb3JFcXVhbGl0eUNoZWNrKCkgY29uc3QK
ICAgICByZXR1cm4gb2JqZWN0Rm9yRXF1YWxpdHlDaGVjayhjdEZvbnQoKSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3Qg
dGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBpZiAoUmV0
YWluUHRyPENGRGF0YVJlZj4gZGF0YSA9IGFkb3B0Q0YoQ1RGb250Q29weVRhYmxlKGN0Rm9udCgp
LCB0YWJsZSwga0NURm9udFRhYmxlT3B0aW9uTm9PcHRpb25zKSkpCi0gICAgICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKIAogICAgIHJldHVybiBwbGF0Zm9y
bU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtQnVmZmVyLmNwcAppbmRleCBlODA1MDllY2NhMDVkMmNjOGVkMTA2NjA3MDQxZjVjY2NjM2Uz
Nzk0Li42MzhlNjgzOTdhMmI2Njk2YjJmMWVkZTI0ZWE4ZmRiOTA2MjZjZWRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtNzI5LDcgKzcyOSw3IEBA
IERpZENoYW5nZUl0ZW1CdWZmZXIgSXRlbUJ1ZmZlcjo6c3dhcFdyaXRhYmxlQnVmZmVySWZOZWVk
ZWQoc2l6ZV90IG51bWJlck9mQnl0ZXMpCiB2b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZChjb25zdCBE
aXNwbGF5TGlzdEl0ZW0mIHRlbXBvcmFyeUl0ZW0pCiB7CiAgICAgYXV0byByZXF1aXJlZFNpemVG
b3JJdGVtID0gbV93cml0aW5nQ2xpZW50LT5yZXF1aXJlZFNpemVGb3JJdGVtKHRlbXBvcmFyeUl0
ZW0pOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG91dE9mTGluZUl0ZW07CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG91dE9mTGluZUl0ZW07CiAgICAgaWYgKCFyZXF1aXJl
ZFNpemVGb3JJdGVtKSB7CiAgICAgICAgIG91dE9mTGluZUl0ZW0gPSBtX3dyaXRpbmdDbGllbnQt
PmVuY29kZUl0ZW1PdXRPZkxpbmUodGVtcG9yYXJ5SXRlbSk7CiAgICAgICAgIGlmICghb3V0T2ZM
aW5lSXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAppbmRleCBj
ODczMTk4MmVmODM5MzFiYmFlMzFiNzg2NTBhYzBkYTIwYTA1ZmM1Li5iMzFiYzVmZDRlOTIxNGIx
NWEzNzYxZmJlOThkNjBjZWI0N2E5OGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5oCkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdAorICAgIHZp
cnR1YWwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUo
Y29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KQEAgLTE2OCw3ICsxNjgsNyBAQCBwdWJsaWM6CiAgICAgLy8gd2l0aCBwYWRk
aW5nIGJldHdlZW4gZWFjaCBpdGVtIHRvIGVuc3VyZSB0aGF0IGFsbCBpdGVtcyBhcmUgYWxpZ25l
ZCB0byA4IGJ5dGVzLgogICAgIC8vCiAgICAgLy8gSWYgYSB3cml0aW5nIGNsaWVudCBpcyBwcmVz
ZW50IGFuZCByZXF1aXJlcyBjdXN0b20gZW5jb2RpbmcgZm9yIHRoZSBnaXZlbiBpdGVtIHR5cGUg
VCwgdGhlCi0gICAgLy8gaXRlbSBidWZmZXIgd2lsbCBhc2sgdGhlIGNsaWVudCBmb3IgYW4gb3Bh
cXVlIFNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGVuY29kZWQgZGF0YSBmb3IgdGhlCisgICAgLy8g
aXRlbSBidWZmZXIgd2lsbCBhc2sgdGhlIGNsaWVudCBmb3IgYW4gb3BhcXVlIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIgY29udGFpbmluZyBlbmNvZGVkIGRhdGEgZm9yIHRoZQogICAgIC8vIGl0ZW0u
IFRoaXMgZW5jb2RlZCBkYXRhIGlzIHRoZW4gYXBwZW5kZWQgdG8gdGhlIGl0ZW0gYnVmZmVyLCB3
aXRoIHBhZGRpbmcgdG8gZW5zdXJlIHRoYXQKICAgICAvLyB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0
aGlzIGRhdGEgYXJlIGFsaWduZWQgdG8gOCBieXRlcywgaWYgbmVjZXNzYXJ5LiBXaGVuIGNvbnN1
bWluZyBlbmNvZGVkCiAgICAgLy8gaXRlbSBkYXRhLCBhIGNvcnJlc3BvbmRpbmcgSXRlbUJ1ZmZl
clJlYWRpbmdDbGllbnQgd2lsbCBiZSByZXF1aXJlZCB0byBjb252ZXJ0IHRoaXMgZW5jb2RlZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5k
ZXggNTA2YjRkZDYyZDU1YTU2YTI3OGMzMGNjYWIyZDE5MTEwZjI0MWVlYy4uZWIwODlmNjQ2ZDc1
NmViYjlhZTJmNDM1NDRkMDRhMTBmMzc5YWUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0zOCwxMiArMzgsMTIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGF0aWMgdm9pZCByZWxlYXNlQ3VzdG9tRm9udERhdGEodm9pZCog
ZGF0YSkKIHsKLSAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsK
KyAgICBzdGF0aWNfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7
CiB9CiAKIHN0YXRpYyBjYWlyb191c2VyX2RhdGFfa2V5X3QgZnJlZVR5cGVGYWNlS2V5OwogCi1G
b250Q3VzdG9tUGxhdGZvcm1EYXRhOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhKEZUX0ZhY2UgZnJl
ZVR5cGVGYWNlLCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK0ZvbnRDdXN0b21QbGF0Zm9ybURhdGE6
OkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSBmcmVlVHlwZUZhY2UsIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICA6IG1fZm9udEZhY2UoYWRvcHRSZWYoY2Fpcm9fZnRf
Zm9udF9mYWNlX2NyZWF0ZV9mb3JfZnRfZmFjZShmcmVlVHlwZUZhY2UsIEZUX0xPQURfREVGQVVM
VCkpKQogewogICAgIGJ1ZmZlci5yZWYoKTsgLy8gVGhpcyBpcyBiYWxhbmNlZCBieSB0aGUgYnVm
ZmVyLT5kZXJlZigpIGluIHJlbGVhc2VDdXN0b21Gb250RGF0YS4KQEAgLTEyOSw3ICsxMjksNyBA
QCBzdGF0aWMgYm9vbCBpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KEZUX0xpYnJhcnkmIGxpYnJh
cnkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCBTdHJpbmcmKQogewogICAgIHN0YXRpYyBGVF9MaWJyYXJ5IGxpYnJhcnk7
CiAgICAgaWYgKCFsaWJyYXJ5ICYmICFpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KGxpYnJhcnkp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA2ODlj
YjY3OWU2MzJlMmY1YTJhMmZlMDY0NTgxMWQ4ODY2YTkwYzQyLi5mZWQ4NTQwZjRhZWJjODRjNjli
MjkwODA2OTdjMTI0NjAxZDViNjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFG
cmVlVHlwZS5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6Omhh
c0NvbXBhdGlibGVDaGFybWFwKCkgY29uc3QKICAgICAgICAgJiYgRlRfU2VsZWN0X0NoYXJtYXAo
ZnJlZVR5cGVGYWNlLCBmdF9lbmNvZGluZ19hcHBsZV9yb21hbikpOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6
Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgQ2Fpcm9GdEZhY2VM
b2NrZXIgY2Fpcm9GdEZhY2VMb2NrZXIobV9zY2FsZWRGb250LmdldCgpKTsKICAgICBGVF9GYWNl
IGZyZWVUeXBlRmFjZSA9IGNhaXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgpOwpAQCAtMjY4LDcgKzI2
OCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFi
bGUodWludDMyX3QgdGFibGUpIGNvbnN0CiAgICAgaWYgKGVycm9yIHx8IHRhYmxlU2l6ZSAhPSBl
eHBlY3RlZFRhYmxlU2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAogI2lmIFVTRShIQVJG
QlVaWikgJiYgIUVOQUJMRShPUEVOVFlQRV9NQVRIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNw
cAppbmRleCAwMTYwNWZjOTE0OTdlNDYyYmEwNzczMDQ3OGU4NGE4NTUxZTY3MjNmLi4xNDc0ODI4
ZmRlNjY5MjRkNDJiYWFjMzMzNGZmOGQ1YzNiNGFkNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29t
bW9uLmNwcApAQCAtNDIyLDkgKzQyMiw5IEBAIFZlY3Rvcjx1aW50OF90PiBHc3RNYXBwZWRCdWZm
ZXI6OmNyZWF0ZVZlY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIHsgZGF0YSgpLCBzaXplKCkgfTsK
IH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpCitSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZm
ZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCp0aGlzKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0
aGlzKTsKIH0KIAogYm9vbCBpc0dTdHJlYW1lclBsdWdpbkF2YWlsYWJsZShjb25zdCBjaGFyKiBu
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lckNvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCmluZGV4IGJiYjhjMTM5NmYwMDNkNjQyNjg4OTc5
YTY4NGM2NjFiMWNiODcxYmUuLmQwMTRjYzZhNWRjN2IxN2UzOTk2MDA2YmY2ZWE2OGE4YmM5OTRj
NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgSW50U2l6ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiAKIGlubGluZSBib29sIHdlYmtpdEdzdENoZWNrVmVy
c2lvbihndWludCBtYWpvciwgZ3VpbnQgbWlub3IsIGd1aW50IG1pY3JvKQogewpAQCAtMTkwLDcg
KzE5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgdW5tYXBFYXJseSgpOwogICAgIH0KIAotICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOworICAgIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKTsKIAogcHJpdmF0ZToKICAgICBHc3RN
YXBwZWRPd25lZEJ1ZmZlcihHUmVmUHRyPEdzdEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IDlhZDE5Yjg3NmIyN2U2MGQ0ZmJhNTAz
MGU2NWY4MWU3Y2E4YTUwNjkuLmRmYmM1ODBmYjhlOWIzMDkzNmNjYTA4YmI4OGI0OWMyYmI2NTNh
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC04MSwxMiAr
ODEsMTIgQEAgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRvciBp
dGVyKQogICAgIHJldHVybiAoSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKilpdGVyLT5zZWNv
bmQuZ2V0KCk7CiB9CiAKLVJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IEltYWdlRGVjb2Rl
ckdTdHJlYW1lcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPEltYWdlRGVjb2RlckdTdHJlYW1l
cj4gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlckdTdHJlYW1lcihkYXRhLCBtaW1l
VHlwZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiB9CiAKLUlt
YWdlRGVjb2RlckdTdHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQorSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbWFnZURlY29kZXJHU3RyZWFt
ZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
QWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogbV9taW1lVHlw
ZShtaW1lVHlwZSkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CkBAIC0x
OTksNyArMTk5LDcgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3UKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnNldERhdGEoU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sKQordm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCkKIHsKICAgICBwdXNoRW5jb2RlZERhdGEoZGF0
YSk7CiB9CkBAIC00MjYsMTAgKzQyNiwxMSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29k
ZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogICAg
IHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6VW5rbm93bjsKIH0KIAotdm9pZCBJbWFnZURlY29k
ZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogeworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9
IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOwogICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0
aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRh
dGEgPSBidWZmZXIuZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhy
ZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRh
ID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAg
ICAgICBtX2lubmVyRGVjb2RlciA9IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVy
OjpjcmVhdGUoKnRoaXMsIGRhdGEsIHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVu
KCk7CiAgICAgfSwgVGhyZWFkVHlwZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2Rl
ckdTdHJlYW1lci5oCmluZGV4IDY2ZjMzNzI4NDZhNGRmODc0ZjQyMGRiNjU0ZTY4OWM5ZTQzYjBj
NTIuLmQzZWY2YTQ1Y2Q3ZGJkZmMzMTIwZWEyM2Y4ZGViM2M1OTk3MWFlOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKQEAgLTQxLDggKzQxLDggQEAgY2xhc3MgSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2RlckdTdHJl
YW1lcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7Ci0gICAgSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZURl
Y29kZXJHU3RyZWFtZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsK
KyAgICBJbWFnZURlY29kZXJHU3RyZWFtZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bik7CiAgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKCkgPSBkZWZhdWx0OwogCiAg
ICAgc3RhdGljIGJvb2wgc3VwcG9ydHNNZWRpYVR5cGUoTWVkaWFUeXBlIHR5cGUpIHsgcmV0dXJu
IHR5cGUgPT0gTWVkaWFUeXBlOjpWaWRlbzsgfQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAg
ICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5h
bDsKIAogICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsIHsg
fQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
ZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fZW9zOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUo
c2l6ZV90KSBmaW5hbDsKIApAQCAtMTIyLDcgKzEyMiw3IEBAIHByaXZhdGU6CiAgICAgfTsKIAog
ICAgIHZvaWQgaGFuZGxlU2FtcGxlKEdSZWZQdHI8R3N0U2FtcGxlPiYmKTsKLSAgICB2b2lkIHB1
c2hFbmNvZGVkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHB1c2hFbmNvZGVk
RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBjb25zdCBJbWFnZURl
Y29kZXJHU3RyZWFtZXJTYW1wbGUqIHNhbXBsZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA3OTc5
NDgwZjkxYzU5N2FhOWY5MDA5N2MxODgzMmM2YTE1YzMyY2U4Li5iMzI0Y2YxMTQ2NDdiMzM3NWU2
YTQ1YmZhYjEwM2UwYTI5MGZiOGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY5Miw3ICszNjkyLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKEluaXREYXRh
JiYgaW5pdEQKIAogICAgICAgICBHU1RfREVCVUcoInNjaGVkdWxpbmcgaW5pdGlhbGl6YXRpb25E
YXRhRW5jb3VudGVyZWQgJXMgZXZlbnQgb2Ygc2l6ZSAlenUiLCBpbml0RGF0YS5wYXlsb2FkQ29u
dGFpbmVyVHlwZSgpLnV0ZjgoKS5kYXRhKCksCiAgICAgICAgICAgICBpbml0RGF0YS5wYXlsb2Fk
KCktPnNpemUoKSk7Ci0gICAgICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCkpLCBpbml0
RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CisgICAgICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGFz
IiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CiAg
ICAgICAgIHdlYWtUaGlzLT5tX3BsYXllci0+aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQo
aW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKSwgaW5pdERhdGEucGF5bG9hZCgpLT50cnlD
cmVhdGVBcnJheUJ1ZmZlcigpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdl
YlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggNWQ4NmZiMWFmNDg3YzAyODllMDAxMjU1OTY1YzMx
ZGNkYTk3MzQyNi4uOTMwMTkwOTk0NWI0YTIzZDY2NzgyZjM1MGI1NmU0NDc5ZjgwMjZmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTcxLDcgKzcx
LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCB2aXJ0
dWFsIG1ldGhvZHMuCiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNo
b3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNl
aXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9s
Q2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CkBAIC0xMDkzLDcgKzEwOTMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50
OjpyZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbgogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Olllcyk7CiB9CiAKLXZvaWQg
Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3Vy
Y2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3Jj
LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmgKaW5kZXggNjkyYTk5NmQx
OWMyNGVmZDlhNDg1NTIzNzNhNTY3OWI1MmUxZWYxYy4uMzQ5YmZkY2FhZDZjN2Q3ZjhkNWFkYTBh
MTcyMTlmZDllNzA2MjZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmgKQEAg
LTYyLDExICs2MiwxMSBAQCBwdWJsaWM6CiAgICAgQ0RNUHJveHlDbGVhcktleSgpID0gZGVmYXVs
dDsKICAgICB2aXJ0dWFsIH5DRE1Qcm94eUNsZWFyS2V5KCk7CiAKLSAgICAvLyBGSVhNRTogVGhl
cmUncyBhIGxhY2sgb2YgY29uc2lzdGVuY3kgYmV0d2VlbiBTaGFyZWRCdWZmZXJzLAorICAgIC8v
IEZJWE1FOiBUaGVyZSdzIGEgbGFjayBvZiBjb25zaXN0ZW5jeSBiZXR3ZWVuIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXJzLAogICAgIC8vIFZlY3RvcjxjaGFyPidzIGFuZCB7dWludDhfdCosc2l6ZV90
fSBpZGlvbXMgZm9yIHJlcHJlc2VudGluZyBhIGNodW5rIG9mCi0gICAgLy8gYnl0ZXMuIEZpeCB0
aGF0IHNvbWVob3cuIE5vdGUgU2hhcmVkQnVmZmVycyBhcmUgZGFuZ2Vyb3VzIHNpbmNlCisgICAg
Ly8gYnl0ZXMuIEZpeCB0aGF0IHNvbWVob3cuIE5vdGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcnMg
YXJlIGRhbmdlcm91cyBzaW5jZQogICAgIC8vIHRoZXkncmUgbm90IHRocmVhZC1zYWZlIGFuZCB0
aGlzIGNsYXNzIG11c3QgbWFpbnRhaW4KLSAgICAvLyB0aHJlYWQtc2FmZXR5LCBidXQgbWF5YmUg
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCBjb3VsZCBiZQorICAgIC8vIHRocmVhZC1zYWZldHks
IGJ1dCBtYXliZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCBjb3VsZCBiZQog
ICAgIC8vIG1hZGUgdG8gd29yaywgaG93ZXZlciB0aGF0IGhhcyB6ZXJvIGhlbHBlcnMgZm9yIGRy
b3BwaW5nIGludG8KICAgICAvLyBpdGVyYXRvci1hd2FyZSAvIGNvbXBhcmF0b3ItYXdhcmUgY29u
dGFpbmVycy4uLgogICAgIHN0cnVjdCBjZW5jRGVjcnlwdENvbnRleHQgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
VGh1bmRlci5jcHAKaW5kZXggMmVmYTA0MzYwZTg4NDgzODA2MTQ0YzNkNzFkZTYzYWQ3YjQyYjU2
MS4uNmI5YTViMTgwNTQwMTdhYmM3YjhjM2FlYzQwZmMxYzFlZTJkMDFhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0NETVRodW5kZXIuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgYm9vbCBDRE1Qcml2YXRlVGh1bmRl
cjo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
Q0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAorYm9vbCBDRE1Q
cml2YXRlVGh1bmRlcjo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewog
ICAgIC8vIFZhbGlkYXRlIHRoZSBpbml0RGF0YSBidWZmZXIgYXMgYW4gSlNPTiBvYmplY3QgaW4g
a2V5aWRzIGNhc2UuCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXRE
YXRhVHlwZSwgImtleWlkcyIpICYmIENETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KGluaXRE
YXRhKSkKQEAgLTIzNyw3ICsyMzcsNyBAQCBib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgUwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZVRodW5kZXI6
OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1Jl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlVGh1bmRlcjo6c2FuaXRpemVS
ZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsK
ICAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOwogfQpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VUaHVuZGVyOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RN
S2V5U3lzdGVtQ29uZmlndXJhCiAgICAgY2FsbGJhY2soU3VjY2VlZGVkKTsKIH0KIAotdm9pZCBD
RE1JbnN0YW5jZVRodW5kZXI6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+
JiYgY2VydGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5z
dGFuY2VUaHVuZGVyOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAg
IE9wZW5DRE1FcnJvciBlcnJvciA9IG9wZW5jZG1fc3lzdGVtX3NldF9zZXJ2ZXJfY2VydGlmaWNh
dGUobV90aHVuZGVyU3lzdGVtLmdldCgpLCBjb25zdF9jYXN0PHVpbnQ4X3QqPihjZXJ0aWZpY2F0
ZS0+ZGF0YSgpKSwKICAgICAgICAgY2VydGlmaWNhdGUtPnNpemUoKSk7CkBAIC0yODAsNyArMjgw
LDcgQEAgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRl
cihDRE1JbnN0YW5jZVRodW5kZXImIGluc3RhbmMKICAgICAgICAgY29uc3QgdWludDE2X3QgY2hh
bGxlbmdlTGVuZ3RoKSB7CiAgICAgICAgIEdTVF9ERUJVRygiR290ICdjaGFsbGVuZ2UnIE9DRE0g
bm90aWZpY2F0aW9uIHdpdGggbGVuZ3RoICVodSIsIGNoYWxsZW5nZUxlbmd0aCk7CiAgICAgICAg
IEFTU0VSVChjaGFsbGVuZ2VMZW5ndGggPiAwKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
c2Vzc2lvbiA9IFdlYWtQdHIgeyBzdGF0aWNfY2FzdDxDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVy
Kj4odXNlckRhdGEpIH0sIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNo
YWxsZW5nZSwKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbiA9IFdlYWtQdHIgeyBz
dGF0aWNfY2FzdDxDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyKj4odXNlckRhdGEpIH0sIGJ1ZmZl
ciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjaGFsbGVuZ2UsCiAg
ICAgICAgICAgICBjaGFsbGVuZ2VMZW5ndGgpXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYg
KCFzZXNzaW9uKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMwNyw3ICszMDcsNyBAQCBD
RE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyKENETUlu
c3RhbmNlVGh1bmRlciYgaW5zdGFuYwogICAgIH07CiAgICAgbV90aHVuZGVyU2Vzc2lvbkNhbGxi
YWNrcy5lcnJvcl9tZXNzYWdlX2NhbGxiYWNrID0gW10oT3BlbkNETVNlc3Npb24qLCB2b2lkKiB1
c2VyRGF0YSwgY29uc3QgY2hhciBtZXNzYWdlW10pIHsKICAgICAgICAgR1NUX0VSUk9SKCJHb3Qg
J2Vycm9yJyBPQ0RNIG5vdGlmaWNhdGlvbjogJXMiLCBtZXNzYWdlKTsKLSAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbc2Vzc2lvbiA9IFdlYWtQdHIgeyBzdGF0aWNfY2FzdDxDRE1JbnN0YW5jZVNl
c3Npb25UaHVuZGVyKj4odXNlckRhdGEpIH0sIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKG1lc3NhZ2UsCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb24gPSBX
ZWFrUHRyIHsgc3RhdGljX2Nhc3Q8Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcio+KHVzZXJEYXRh
KSB9LCBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobWVz
c2FnZSwKICAgICAgICAgICAgIHN0cmxlbihtZXNzYWdlKSldKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBpZiAoIXNlc3Npb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzI2LDcgKzMy
Niw3IEBAIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNlVGh1bmRlcjo6Y3Jl
YXRlU2Vzc2lvbigpCiBjbGFzcyBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgewogCiBwdWJsaWM6Ci0g
ICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCisgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlKGNvbnN0IFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYgYnVmZmVyKQogICAgIHsKICAgICAgICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZl
ci0+c2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzQ3LDE1ICszNDcsMTUgQEAgcHVi
bGljOgogICAgICAgICAgICAgbV90eXBlID0gc3RkOjptYWtlX29wdGlvbmFsKHN0YXRpY19jYXN0
PFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGU+KHBhcnNlSW50ZWdlcjxpbnQ+KHJlcXVlc3RU
eXBlKS52YWx1ZV9vcigwKSkpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9wYXlsb2FkID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUocGF5bG9hZC5jaGFyYWN0ZXJzOCgpICsgb2Zmc2V0LCBwYXlsb2Fk
Lmxlbmd0aCgpIC0gb2Zmc2V0KTsKKyAgICAgICAgbV9wYXlsb2FkID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHBheWxvYWQuY2hhcmFjdGVyczgoKSArIG9mZnNldCwgcGF5bG9hZC5s
ZW5ndGgoKSAtIG9mZnNldCk7CiAKICAgICAgICAgbV9pc1ZhbGlkID0gdHJ1ZTsKICAgICB9CiAK
ICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2lzVmFsaWQ7IH0KICAgICBib29s
IGhhc1BheWxvYWQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX3BheWxvYWQp
OyB9Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCYgeyBBU1NF
UlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9Ci0gICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4mIHBheWxvYWQoKSAmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxv
YWQudmFsdWUoKTsgfQorICAgIGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgcGF5
bG9hZCgpIGNvbnN0JiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVl
KCk7IH0KKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSAmIHsgQVNT
RVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxvYWQudmFsdWUoKTsgfQogICAgIGJvb2wgaGFz
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZS5oYXNfdmFsdWUoKTsgfQogICAgIFdlYkNvcmU6
Ok1lZGlhS2V5TWVzc2FnZVR5cGUgdHlwZSgpIGNvbnN0IHsgQVNTRVJUKG1fdHlwZSk7IHJldHVy
biBtX3R5cGUudmFsdWUoKTsgfQogICAgIFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGUgdHlw
ZU9yKFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGUgYWx0ZXJuYXRlKSBjb25zdCB7IHJldHVy
biBtX3R5cGUgPyBtX3R5cGUudmFsdWUoKSA6IGFsdGVybmF0ZTsgfQpAQCAtMzY0LDExICszNjQs
MTEgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbV9pc1ZhbGlkIHsgZmFsc2UgfTsK
LSAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBtX3BheWxvYWQ7CisgICAgc3Rk
OjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1fcGF5bG9hZDsKICAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGU+IG1fdHlwZTsKIH07CiAK
LXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6Y2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJh
Y2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENETUluc3RhbmNlU2Vzc2lv
blRodW5kZXI6OmNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2Vk
UmVzcG9uc2VNZXNzYWdlKGJ1ZmZlcik7CiAgICAgaWYgKCFwYXJzZWRSZXNwb25zZU1lc3NhZ2Up
IHsKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6Omtl
eXNVcGRhdGVEb25lQ2FsbGJhY2soKQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xl
YXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNr
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
VGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBt
ZXNzYWdlKQogewogICAgIEdTVF9FUlJPUigiQ0RNIGVycm9yIik7CiAgICAgR1NUX01FTURVTVAo
ImVycm9yIGR1bXAiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CkBAIC00ODgs
NyArNDg4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNr
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKICAgICBtX3Nlc3Npb25DaGFuZ2VkQ2Fs
bGJhY2tzLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YVNoYXJlZEJ1ZmZlciwKK3Zv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUg
bGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGFTaGFyZWRCdWZmZXIsCiAgICAgTGljZW5zZUNhbGxi
YWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTUwNiw3
ICs1MDYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdAogICAgICAgICBtX2luaXREYXRhLnBh
eWxvYWQoKS0+ZGF0YSgpLCBtX2luaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpLCBudWxscHRyLCAw
LCAmbV90aHVuZGVyU2Vzc2lvbkNhbGxiYWNrcywgdGhpcywgJnNlc3Npb24pOwogICAgIGlmICgh
c2Vzc2lvbikgewogICAgICAgICBHU1RfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgc2Vzc2lvbiIp
OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5
bG9hZCgpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEg
PSBtX2luaXREYXRhLnBheWxvYWQoKTsKICAgICAgICAgY2FsbGJhY2soaW5pdERhdGEucmVsZWFz
ZU5vbk51bGwoKSwgeyB9LCBmYWxzZSwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTUxNSw3ICs1MTUsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdAogCiAgICAgYXV0byBn
ZW5lcmF0ZUNoYWxsZW5nZSA9IFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgp
IG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOworICAgICAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBh
eWxvYWQoKTsKICAgICAgICAgaWYgKG1fc2Vzc2lvbklELmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgR1NUX0VSUk9SKCJjb3VsZCBub3QgY3JlYXRlIHNlc3Npb24gaWQiKTsKICAgICAgICAgICAg
IGNhbGxiYWNrKGluaXREYXRhLnJlbGVhc2VOb25OdWxsKCksIHsgfSwgZmFsc2UsIEZhaWxlZCk7
CkBAIC01NDUsMTMgKzU0NSwxMyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnNl
c3Npb25GYWlsdXJlKCkKICAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmNsZWFyKCk7CiB9
CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9u
c2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNl
bnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VV
cGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklE
LCBzZXNzaW9uSUQgPT0gbV9zZXNzaW9uSUQpOwogCiAgICAgR1NUX1RSQUNFKCJVcGRhdGluZyBz
ZXNzaW9uICVzIiwgc2Vzc2lvbklELnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgbV9zZXNzaW9uQ2hh
bmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KGJvb2wgc3VjY2VzcywgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZU1lc3NhZ2UpIG11
dGFibGUgeworICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgICAgICBp
ZiAoIXJlc3BvbnNlTWVzc2FnZSkKQEAgLTU2Miw3ICs1NjIsNyBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExp
Y2Vuc2VUeQogICAgICAgICAgICAgICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNw
b25zZU1lc3NhZ2UocmVzcG9uc2VNZXNzYWdlKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocGFy
c2VkUmVzcG9uc2VNZXNzYWdlKTsKICAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VN
ZXNzYWdlLmhhc1BheWxvYWQoKSkgewotICAgICAgICAgICAgICAgICAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2Ug
PSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAg
ICAgICAgICBHU1RfREVCVUcoImdvdCBtZXNzYWdlIG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6
ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdl
LT5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNr
KGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwKQEAgLTU4Niw3ICs1ODYsNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBj
b25zdCBTdHJpbmcmIHNlc3Npb25JRAogewogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBz
ZXNzaW9uSUQgPT0gbV9zZXNzaW9uSUQpOwogCi0gICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNr
cy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2Vz
cywgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZU1lc3NhZ2UpIG11dGFibGUgeworICAg
IG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgICAgICBpZiAoIXJlc3BvbnNl
TWVzc2FnZSkKQEAgLTU5Nyw3ICs1OTcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JRAogICAg
ICAgICAgICAgICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2Uo
cmVzcG9uc2VNZXNzYWdlKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocGFyc2VkUmVzcG9uc2VN
ZXNzYWdlKTsKICAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdlLmhhc1Bh
eWxvYWQoKSkgewotICAgICAgICAgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtZXNzYWdl
ID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBh
cnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1Rf
REVCVUcoImdvdCBtZXNzYWdlIG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAg
ICAgICAgICAgICAgICAgR1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhKCksIG1l
c3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9w
dCwgc3RkOjpudWxsb3B0LCBzdGQ6Om1ha2VfcGFpcihwYXJzZWRSZXNwb25zZU1lc3NhZ2UudHlw
ZU9yKE1lZGlhS2V5TWVzc2FnZVR5cGU6OkxpY2Vuc2VSZXF1ZXN0KSwKQEAgLTY0MCw3ICs2NDAs
NyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlbW92ZVNlc3Npb25EYXRhKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbgogewogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lv
bklELCBtX3Nlc3Npb25JRCA9PSBzZXNzaW9uSUQpOwogCi0gICAgbV9zZXNzaW9uQ2hhbmdlZENh
bGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wg
c3VjY2VzcywgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIG11dGFibGUgeworICAgIG1f
c2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
ICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlcikKQEAgLTY0OSw3ICs2
NDksNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlbW92ZVNlc3Npb25EYXRh
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbgogICAgICAgICAgICAgICAgIFBhcnNlZFJl
c3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UoYnVmZmVyKTsKICAgICAgICAgICAg
ICAgICBBU1NFUlQocGFyc2VkUmVzcG9uc2VNZXNzYWdlKTsKICAgICAgICAgICAgICAgICBpZiAo
cGFyc2VkUmVzcG9uc2VNZXNzYWdlLmhhc1BheWxvYWQoKSkgewotICAgICAgICAgICAgICAgICAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3Nh
Z2UucGF5bG9hZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkp
OwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoInNlc3Npb24gJXMgcmVtb3ZlZCwgbWVz
c2FnZSBsZW5ndGggJXp1IiwgbV9zZXNzaW9uSUQudXRmOCgpLmRhdGEoKSwgbWVzc2FnZS0+c2l6
ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobV9rZXlTdG9yZS5hbGxLZXlzQXMo
TWVkaWFLZXlTdGF0dXM6OlJlbGVhc2VkKSwgV1RGTW92ZShtZXNzYWdlKSwgU3VjY2Vzc1ZhbHVl
OjpTdWNjZWVkZWQpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRl
ci5oCmluZGV4IGNkZDhkYTIxMTIzYzE3OTFhZTJmYjY0MzlmZjJkNmZhMGQyZWIyMWMuLjEwMjBl
MTUzMjI3MWI1MzUxZTEwNmRkZThmMjFlYTU0MDVhOWMyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRl
ci5oCkBAIC05Myw4ICs5Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXpl
KCkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wg
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikg
Y29uc3QgZmluYWw7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShj
b25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25z
dCBmaW5hbDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNw
b25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0
IGZpbmFsOwogCiBwcml2YXRlOgpAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICAvLyBD
RE1JbnN0YW5jZQogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OlRodW5kZXI7IH0KICAgICB2
b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0
ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNh
dGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZv
aWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1
Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2tleVN5c3RlbTsgfQogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Np
b24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKQEAgLTEyNiw4ICsxMjYsOCBAQCBjbGFzcyBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyIGZpbmFsIDogcHVibGljIENETUluc3RhbmNlU2Vzc2lvblBy
b3h5IHsKIHB1YmxpYzoKICAgICBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyKENETUluc3RhbmNl
VGh1bmRlciYpOwogCi0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBM
aWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNz
aW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lv
bkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYs
IENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sm
JikgZmluYWw7CkBAIC0xNDEsMTQgKzE0MSwxNCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIENE
TUluc3RhbmNlVGh1bmRlciogY2RtSW5zdGFuY2VUaHVuZGVyKCkgY29uc3Q7CiAKLSAgICB1c2lu
ZyBOb3RpZmljYXRpb24gPSB2b2lkIChDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjoqKShSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB1c2luZyBOb3RpZmljYXRpb24gPSB2
b2lkIChDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjoqKShSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdXNpbmcgQ2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJh
Y2sgPSBGdW5jdGlvbjx2b2lkKCk+OwotICAgIHVzaW5nIFNlc3Npb25DaGFuZ2VkQ2FsbGJhY2sg
PSBGdW5jdGlvbjx2b2lkKGJvb2wsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpPjsKKyAgICB1c2lu
ZyBTZXNzaW9uQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChib29sLCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+OwogCi0gICAgdm9pZCBjaGFsbGVuZ2VHZW5lcmF0ZWRD
YWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGNoYWxsZW5nZUdlbmVy
YXRlZENhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB2b2lk
IGtleVVwZGF0ZWRDYWxsYmFjayhLZXlJRFR5cGUmJik7CiAgICAgdm9pZCBrZXlzVXBkYXRlRG9u
ZUNhbGxiYWNrKCk7Ci0gICAgdm9pZCBlcnJvckNhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYpOworICAgIHZvaWQgZXJyb3JDYWxsYmFjayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJik7CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXMgc3RhdHVzKGNvbnN0IEtl
eUlEVHlwZSYpIGNvbnN0OwogICAgIHZvaWQgc2Vzc2lvbkZhaWx1cmUoKTsKIApAQCAtMTU5LDcg
KzE1OSw3IEBAIHByaXZhdGU6CiAgICAgSW5pdERhdGEgbV9pbml0RGF0YTsKICAgICBPcGVuQ0RN
U2Vzc2lvbkNhbGxiYWNrcyBtX3RodW5kZXJTZXNzaW9uQ2FsbGJhY2tzIHsgfTsKICAgICBCb3hQ
dHI8T3BlbkNETVNlc3Npb24+IG1fc2Vzc2lvbjsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X21lc3NhZ2U7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fbWVzc2FnZTsK
ICAgICBib29sIG1fbmVlZHNJbmRpdmlkdWFsaXphdGlvbiB7IGZhbHNlIH07CiAgICAgVmVjdG9y
PENoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrPiBtX2NoYWxsZW5nZUNhbGxiYWNrczsKICAgICBW
ZWN0b3I8U2Vzc2lvbkNoYW5nZWRDYWxsYmFjaz4gbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAppbmRleCAzZjg1
YWZlNzNjODQyNzYyOTk3ZDVhYmMyZDdiYzA3ZjdjMDFiOWMzLi43ZDYwOWFjM2FlZmRkMTcyY2Ji
YzhjODMyZGU4MDY1YTJlZGZjNzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJF
TUVVdGlsaXRpZXMuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RydWN0IEdNYXJrdXBQYXJzZUNvbnRleHRVc2VyRGF0YSB7CiAgICAgYm9vbCBpc1BhcnNpbmdQ
c3NoIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwc3NoOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwc3NoOwogfTsKIAogc3RhdGljIHZvaWQgbWFya3Vw
U3RhcnRFbGVtZW50KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciogZWxlbWVudE5h
bWUsIGNvbnN0IGdjaGFyKiosIGNvbnN0IGdjaGFyKiosIGdwb2ludGVyIHVzZXJEYXRhUHRyLCBH
RXJyb3IqKikKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIHZvaWQgbWFya3VwVGV4dChHTWFya3Vw
UGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIHRleHQsIGdzaXplIHRleHRMZW5ndGgKICAgICBp
ZiAodXNlckRhdGEtPmlzUGFyc2luZ1Bzc2gpIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IHBzc2ggPSBiYXNlNjREZWNvZGUodGV4dCwgdGV4dExlbmd0aCk7CiAgICAg
ICAgIGlmIChwc3NoLmhhc192YWx1ZSgpKQotICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CisgICAgICAgICAgICB1c2VyRGF0
YS0+cHNzaCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7
CiAgICAgfQogfQogCkBAIC03MSw5ICs3MSw5IEBAIHN0YXRpYyB2b2lkIG1hcmt1cEVycm9yKEdN
YXJrdXBQYXJzZUNvbnRleHQqLCBHRXJyb3IqLCBncG9pbnRlcikKIAogc3RhdGljIEdNYXJrdXBQ
YXJzZXIgbWFya3VwUGFyc2VyIHsgbWFya3VwU3RhcnRFbGVtZW50LCBtYXJrdXBFbmRFbGVtZW50
LCBtYXJrdXBUZXh0LCBtYXJrdXBQYXNzdGhyb3VnaCwgbWFya3VwRXJyb3IgfTsKIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBh
eWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CiAgICAgaWYg
KCFwYXlsb2FkIHx8ICFwYXlsb2FkLT5zaXplKCkpCiAgICAgICAgIHJldHVybiBwYXlsb2FkOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAppbmRleCBkNWFmZjg0
NWY0MDlhNzVkNzFhOTg0MGFjZjFkMzQyYTQ2NDdkMmYxLi5mMjJhMjBmNTFmNjg0OTJhZDg5MmY1
Nzg0MzFmNjVhNDRkYTdjZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRp
bGl0aWVzLmgKQEAgLTM4LDggKzM4LDcgQEAgR1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTih3ZWJr
aXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSkKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluaXREYXRhIHsKIHB1YmxpYzoKLSAgICBJbml0RGF0YSgp
Ci0gICAgICAgIDogbV9wYXlsb2FkKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpIHsgfQorICAgIElu
aXREYXRhKCkgPSBkZWZhdWx0OwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGFuIGVu
dW0gZm9yIHN5c3RlbSB1dWlkcyBmb3IgYmV0dGVyIHR5cGUgc2FmZXR5LgogICAgIEluaXREYXRh
KGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIEdzdEJ1ZmZlciogaW5pdERhdGEpCkBAIC01MCwxMyAr
NDksMTcgQEAgcHVibGljOgogICAgICAgICAgICAgR1NUX0NBVF9MRVZFTF9MT0cod2Via2l0X21l
ZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnksIEdTVF9MRVZFTF9F
UlJPUiwgbnVsbHB0ciwgImNhbm5vdCBtYXAgJXMgcHJvdGVjdGlvbiBkYXRhIiwgc3lzdGVtSWQu
dXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgfQotICAgICAgICBtX3BheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXRE
YXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxv
YWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZm
ZXIoKSkpCisgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxvYWQucmVsZWFz
ZU5vbk51bGwoKSk7CiAgICAgfQogCi0gICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1J
ZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQorICAgIEluaXREYXRhKGNvbnN0IFN0
cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHBheWxvYWQp
CiAgICAgICAgIDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKLSAgICAgICAgLCBtX3BheWxvYWQoZXh0
cmFjdENlbmNJZk5lZWRlZChXVEZNb3ZlKHBheWxvYWQpKSkKICAgICB7CisgICAgICAgIGlmIChw
YXlsb2FkKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENl
bmNJZk5lZWRlZChwYXlsb2FkLT5tYWtlQ29udGlndW91cygpKSkKKyAgICAgICAgICAgICAgICBt
X3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxvYWQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAg
IH0KICAgICB9CiAKICAgICB2b2lkIGFwcGVuZChJbml0RGF0YSYmIGluaXREYXRhKQpAQCAtNzIs
MTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgLy8gaXQncyBub3QgdmVyeSByb2J1c3QsIHNv
IGJlIGNhcmVmdWwgaGVyZSEKICAgICAgICAgbV9zeXN0ZW1JZCA9IGluaXREYXRhLm1fc3lzdGVt
SWQ7CiAKLSAgICAgICAgbV9wYXlsb2FkLT5hcHBlbmQoKmluaXREYXRhLnBheWxvYWQoKSk7Cisg
ICAgICAgIG1fcGF5bG9hZC5hcHBlbmQoKmluaXREYXRhLnBheWxvYWQoKSk7CiAgICAgfQogCi0g
ICAgY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBt
X3BheWxvYWQ7IH0KKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZC5nZXQoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgc3lz
dGVtSWQoKSBjb25zdCB7IHJldHVybiBtX3N5c3RlbUlkOyB9CiAgICAgU3RyaW5nIHBheWxvYWRD
b250YWluZXJUeXBlKCkgY29uc3QKICAgICB7CkBAIC04NiwxMSArODksMTEgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gImNlbmMiX3M7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7Cisg
ICAgc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVl
ZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBT
dHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3BheWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9u
U3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2d0ay9JbWFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
dGsvSW1hZ2VHdGsuY3BwCmluZGV4IDViOGVjMjAxZDBjOTk2ZDU1NzRkY2M3MjY3YTY3NDM5M2M3
ODkxYWIuLmM0ZjMwNzI2ZTVjOGI2ZjE0NzQ4MzJmY2Q1NDNiOGI2YmQ3ZDdiN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcApAQCAt
NDEsNyArNDEsNyBAQCBzdGF0aWMgUmVmPEltYWdlPiBsb2FkSW1hZ2VGcm9tR1Jlc291cmNlKGNv
bnN0IGNoYXIqIGljb25OYW1lKQogICAgIEdVbmlxdWVQdHI8Y2hhcj4gcGF0aChnX3N0cmR1cF9w
cmludGYoIi9vcmcvd2Via2l0Z3RrL3Jlc291cmNlcy9pbWFnZXMvJXMiLCBpY29uTmFtZSkpOwog
ICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRhID0gYWRvcHRHUmVmKGdfcmVzb3VyY2VzX2xvb2t1cF9k
YXRhKHBhdGguZ2V0KCksIEdfUkVTT1VSQ0VfTE9PS1VQX0ZMQUdTX05PTkUsIG51bGxwdHIpKTsK
ICAgICBBU1NFUlQoZGF0YSk7Ci0gICAgaWNvbi0+c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRh
LmdldCgpLCBudWxscHRyKSksIGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpLCB0cnVlKTsK
KyAgICBpY29uLT5zZXREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBu
dWxscHRyKSksIGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpLCB0cnVlKTsKICAgICByZXR1
cm4gaWNvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IGJkMTEzYmI2
YzI3MzFmYTE5YWRkZWZkMzNhOTlkNDZiYjRhMWY0YTIuLjU2NGUxZTc1NDRhNTgzZjQxOGUwZGVi
ZTBlMjVjZTZiNGJmNTQ3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTUy
LDcgKzUyLDcgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250
UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYKICAgICByZXR1cm4gRm9udFBsYXRm
b3JtRGF0YShmb250LmdldCgpLCBzaXplLCBib2xkLCBpdGFsaWMsIG9yaWVudGF0aW9uLCB3aWR0
aFZhcmlhbnQsIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpLCAmY3JlYXRpb25E
YXRhKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IGJ1ZmZlckRhdGEgPSBidWZmZXIuY3JlYXRlQ0ZEYXRhKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDcxOGI5YmQzMTVlY2M2NzA3ODljNjVjYmFhYTAzNDky
OTc1ZTcyZDMuLjc4N2EzNjAzODY2NmI3Y2M4Y2QzZjczOTFlMDRkMmVmMTYxMDEyMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwog
c3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGlu
Z3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAg
ICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLVdF
QkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwor
V0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9JbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9JbWFnZU1hYy5tbQppbmRleCA1MzZiZGViMjMwMTA4ZDljZWY3NzQyZjMwNDBiYTZlYzY1
Zjc2MWViLi5jOTZlYzU0ZTYwZDVjNmQxMmUxMjA0YWFlZmYxOWEzNWJiN2FjMzlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCkBAIC02
Myw3ICs2Myw3IEBAIFJlZjxJbWFnZT4gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGNvbnN0
IGNoYXIgKm5hbWUpCiAgICAgTlNEYXRhICpuYW1lZEltYWdlRGF0YSA9IFtOU0RhdGEgZGF0YVdp
dGhDb250ZW50c09mRmlsZTppbWFnZVBhdGhdOwogICAgIGlmIChuYW1lZEltYWdlRGF0YSkgewog
ICAgICAgICBhdXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwotICAgICAgICBpbWFn
ZS0+c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShuYW1lZEltYWdlRGF0YSksIHRydWUpOwor
ICAgICAgICBpbWFnZS0+c2V0RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobmFt
ZWRJbWFnZURhdGEpLCB0cnVlKTsKICAgICAgICAgcmV0dXJuIFdURk1vdmUoaW1hZ2UpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BE
RkRvY3VtZW50SW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQppbmRleCA4M2U2YWY3YjAzODkyODM4YzNiZmVhMWMw
YzExYWE3ZmNmOGE3N2E5Li42OGJjYzg4NDZhOGIxZjBmN2NiY2YxNDAzMTk2NmVkOTI0MzIyYzJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9j
dW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewot
ICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0
V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIG1fZG9jdW1lbnQg
PSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgp
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogfQogCiB2b2lkIFBE
RkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlTWF0aERhdGEuY3BwCmluZGV4IDVkODhjZDc3Njg5OGMwNWE5MDM1ODllMmQ0YmFjNzMwYWEx
ZGY5OTIuLmI0MTc5MjNlNmQ3NWY5M2NmZDFlNGNjMzFmODUwMzZlMWM2MmY0YzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlTWF0aERhdGEuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0cnVjdCBNYXRoSXRhbGlj
c0NvcnJlY3Rpb25JbmZvIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpVSW50
MTYgaXRhbGljc0NvcnJlY3Rpb25Db3VudDsKICAgICBPcGVuVHlwZTo6TWF0aFZhbHVlUmVjb3Jk
IGl0YWxpY3NDb3JyZWN0aW9uWzFdOyAvLyBUaGVyZSBhcmUgaXRhbGljc0NvcnJlY3Rpb25Db3Vu
dCBpdGFsaWMgY29ycmVjdGlvbiB2YWx1ZXMuCiAKLSAgICBpbnQxNl90IGdldEl0YWxpY0NvcnJl
Y3Rpb24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGdseXBoKSBjb25zdAorICAg
IGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIsIEdseXBoIGdseXBoKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291
bnQgPSB1aW50MTZfdChpdGFsaWNzQ29ycmVjdGlvbkNvdW50KTsKICAgICAgICAgaWYgKCFpc1Zh
bGlkRW5kKGJ1ZmZlciwgJml0YWxpY3NDb3JyZWN0aW9uW2NvdW50XSkpCkBAIC05Myw3ICs5Myw3
IEBAIHN0cnVjdCBNYXRoR2x5cGhJbmZvIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5U
eXBlOjpPZmZzZXQgZXh0ZW5kZWRTaGFwZUNvdmVyYWdlT2Zmc2V0OwogICAgIE9wZW5UeXBlOjpP
ZmZzZXQgbWF0aEtlcm5JbmZvT2Zmc2V0OwogCi0gICAgY29uc3QgTWF0aEl0YWxpY3NDb3JyZWN0
aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRh
bGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0xMjAsNyArMTIwLDcgQEAg
c3RydWN0IEdseXBoQXNzZW1ibHkgOiBUYWJsZUJhc2UgewogICAgICAgICBQYXJ0RmxhZ3NFeHRl
bmRlciA9IDB4MDEKICAgICB9OwogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0
PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6
QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQx
Nl90IGNvdW50ID0gcGFydENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAm
cGFydFJlY29yZHNbY291bnRdKSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBo
Q29uc3RydWN0aW9uIDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6OlVJbnQxNiBhZHZh
bmNlTWVhc3VyZW1lbnQ7CiAgICAgfSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1sxXTsgLy8gVGhl
cmUgYXJlIHZhcmlhbnRDb3VudCBNYXRoR2x5cGhWYXJpYW50UmVjb3JkJ3MuCiAKLSAgICB2b2lk
IGdldFNpemVWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBo
PiYgdmFyaWFudHMpIGNvbnN0CisgICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdmFyaWFudENvdW50OwogICAgICAgICBp
ZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoVmFyaWFudFJlY29yZHNbY291bnRdKSkK
QEAgLTE1Myw3ICsxNTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoQ29uc3RydWN0aW9uIDogVGFibGVC
YXNlIHsKICAgICAgICAgICAgIHZhcmlhbnRzW2ldID0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNb
aV0udmFyaWFudEdseXBoOwogICAgIH0KIAotICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5
UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERh
dGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CiAgICAgewogICAgICAgICB1
aW50MTZfdCBvZmZzZXQgPSBnbHlwaEFzc2VtYmx5T2Zmc2V0OwogICAgICAgICBjb25zdCBHbHlw
aEFzc2VtYmx5KiBnbHlwaEFzc2VtYmx5ID0gdmFsaWRhdGVPZmZzZXQ8R2x5cGhBc3NlbWJseT4o
YnVmZmVyLCBvZmZzZXQpOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHN0cnVjdCBNYXRoVmFyaWFudHMg
OiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBob3Jpem9udGFsR2x5
cGhDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZz
ZXRbMV07IC8vIFRoZXJlIGFyZSB2ZXJ0aWNhbEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29u
dHJ1Y3Rpb25zIGFuZCBob3Jpem9udGFsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVj
dGlvbnMuCiAKLSAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1hdGhHbHlwaENvbnN0
cnVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNW
ZXJ0aWNhbCkgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1hdGhHbHlw
aENvbnN0cnVjdGlvbihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBo
IGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MzJfdCBj
b3VudCA9IHVpbnQxNl90KHZlcnRpY2FsR2x5cGhDb3VudCkgKyB1aW50MTZfdChob3Jpem9udGFs
R2x5cGhDb3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhD
b25zdHJ1Y3Rpb25zT2Zmc2V0W2NvdW50XSkpCkBAIC0yMDQsNyArMjA0LDcgQEAgc3RydWN0IE1B
VEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5cGhJbmZv
T2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aFZhcmlhbnRzT2Zmc2V0OwogCi0gICAg
Y29uc3QgTWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVp
bnQxNl90IG9mZnNldCA9IG1hdGhDb25zdGFudHNPZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQp
CkBAIC0yMTIsNyArMjEyLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhHbHlwaEluZm8qIG1h
dGhHbHlwaEluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3Qg
TWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoR2x5
cGhJbmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjIwLDcgKzIyMCw3IEBAIHN0
cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICBjb25zdCBNYXRoVmFyaWFudHMqIG1hdGhWYXJpYW50cyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoVmFyaWFudHMqIG1hdGhWYXJpYW50
cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAg
ICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoVmFyaWFudHNPZmZzZXQ7CiAgICAgICAgIGlmIChv
ZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZU1hdGhEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKaW5kZXggMjk5MGJmYjAzZjU2MTk0NTc3ZmRk
NDQ3NmYxNDQ5NGFiMTgwMzVjZi4uM2ZmNjZkMzExODJlNWM0YjM2ZGQzZjMzMDdhNjg0Yjk1ZDk1
OTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVNYXRoRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaApAQCAtNDAsNyArNDAsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7CiAKIGNsYXNz
IE9wZW5UeXBlTWF0aERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxPcGVuVHlwZU1hdGhEYXRhPiB7
CkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBPcGVuVHlwZU1hdGhE
YXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKIAogI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRI
KQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsKKyAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOwogI2VsaWYgVVNFKEhBUkZCVVpaKQog
ICAgIEhiVW5pcXVlUHRyPGhiX2ZvbnRfdD4gbV9tYXRoRm9udDsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBl
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVU
eXBlcy5oCmluZGV4IGM4NjRiMmMzYThmYjFhZTM3NjMwOTNlZTUwNTViMzY1MWVmMDEyNmEuLjMw
NDk2M2E1ZGU5MGM4MWM4ZDYzMDkxMjY3Nzg4NzUzMWQ4NmQyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVz
LmgKQEAgLTczLDcgKzczLDcgQEAgdHlwZWRlZiBVSW50MTYgR2x5cGhJRDsKIHR5cGVkZWYgdWlu
dDMyX3QgVGFnOwogI2RlZmluZSBPVF9NQUtFX1RBRyhjaDEsIGNoMiwgY2gzLCBjaDQpICgoKCh1
aW50MzJfdCkoY2g0KSkgPDwgMjQpIHwgKCgodWludDMyX3QpKGNoMykpIDw8IDE2KSB8ICgoKHVp
bnQzMl90KShjaDIpKSA8PCA4KSB8ICgodWludDMyX3QpKGNoMSkpKQogCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKIHsKICAgICBpZiAoIWJ1ZmZl
ciB8fCBidWZmZXItPnNpemUoKSA8IHNpemVvZihUKSAqIGNvdW50KQogICAgICAgICByZXR1cm4g
MDsKQEAgLTgyLDcgKzgyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBU
KiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JgogCiBzdHJ1Y3QgVGFi
bGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKKyAgICBzdGF0aWMgYm9v
bCBpc1ZhbGlkRW5kKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
dm9pZCogcG9zaXRpb24pCiAgICAgewogICAgICAgICBpZiAocG9zaXRpb24gPCBidWZmZXIuZGF0
YSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTAsNyArOTAsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIHJldHVybiBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKTsgLy8gIjw9IiBiZWNh
dXNlIGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxpZAogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBz
dGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGNvbnN0IFQqIGNh
c3RlZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KHBvc2l0aW9uKTsKICAgICAgICAgaWYg
KCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmNhc3RlZFsxXSkpCkBAIC05OCw3ICs5OCw3IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgcmV0dXJuIGNhc3RlZDsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29u
c3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
LCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gdmFsaWRhdGVQ
dHI8VD4oYnVmZmVyLCByZWludGVycHJldF9jYXN0PGNvbnN0IGludDhfdCo+KHRoaXMpICsgb2Zm
c2V0KTsKICAgICB9CkBAIC0xMjcsNyArMTI3LDcgQEAgc3RydWN0IENvdmVyYWdlMlRhYmxlIDog
Q292ZXJhZ2VUYWJsZSB7CiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCiBzdHJ1Y3QgVGFibGVX
aXRoQ292ZXJhZ2UgOiBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIGJvb2wgZ2V0Q292ZXJh
Z2VJbmRleChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSog
Y292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKKyAg
ICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90
JiBjb3ZlcmFnZUluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoIChjb3ZlcmFnZS0+
Y292ZXJhZ2VGb3JtYXQpIHsKICAgICAgICAgY2FzZSAxOiB7IC8vIENvdmVyYWdlIEZvcm1hdCAx
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKaW5kZXggMzIxNmI3ZWYwNmU5YTQ4MDA5OTE1
OTIzMDU2YWNhM2ZjYmY5MmQxYS4uM2NhNzI3YWFmYmQyY2FkNGJlMTA2ZjFkYzRjM2YyZTdkZDQ0
ODA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBA
IHZvaWQgRU9USGVhZGVyOjphcHBlbmRQYWRkaW5nU2hvcnQoKQogCiAvLyBhZGRzIGZvbnROYW1l
IHRvIHRoZSBmb250IHRhYmxlIGluIGZvbnREYXRhLCBhbmQgd3JpdGVzIHRoZSBuZXcgZm9udCB0
YWJsZSB0byByZXdyaXR0ZW5Gb250VGFibGUKIC8vIHJldHVybnMgdGhlIHNpemUgb2YgdGhlIG5h
bWUgdGFibGUgKHdoaWNoIGlzIHVzZWQgYnkgcmVuYW1lQW5kQWN0aXZhdGVGb250KSwgb3IgMCBv
biBlYXJseSBhYm9ydAotYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERh
dGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9u
dERhdGEpCitib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9u
dERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVu
Rm9udERhdGEpCiB7CiAgICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNpemUgPSBmb250RGF0YS5zaXpl
KCk7CiAgICAgY29uc3Qgc2ZudEhlYWRlciogc2ZudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
c2ZudEhlYWRlcio+KGZvbnREYXRhLmRhdGEoKSk7CkBAIC0yNjYsNyArMjY2LDcgQEAgYm9vbCBy
ZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9u
dE5hbWUsIFZlY3Rvcjx1aW4KIH0KIAogLy8gUmVuYW1lIHRoZSBmb250IGFuZCBpbnN0YWxsIHRo
ZSBuZXcgZm9udCBkYXRhIGludG8gdGhlIHN5c3RlbQotUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJj
ZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNv
bnN0IFN0cmluZyYgZm9udE5hbWUpCitSZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVB
bmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNv
bnN0IFN0cmluZyYgZm9udE5hbWUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJld3JpdHRlbkZv
bnREYXRhOwogICAgIGlmICghcmVuYW1lRm9udChmb250RGF0YSwgZm9udE5hbWUsIHJld3JpdHRl
bkZvbnREYXRhKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCmluZGV4IDA5YzFjNDVjNDU5M2Fl
YTQzMTgzMGQyMTViN2U3NDg1MmMxOWUzN2YuLmY0ZmZkYTY1NzRiMDI1MWUyY2FhYWIzOTE5MmIx
Y2U4N2QxZjk2N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaApAQCAtMzUsOSArMzUsMTAg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEJpZ0VuZGlhblVTaG9ydDsKK2NsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRU9UUHJlZml4OwogY2xhc3MgRm9udE1l
bW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogc3RydWN0IEVPVEhlYWRlciB7CiAgICAgRU9USGVhZGVyKCk7CkBAIC01NCw4
ICs1NSw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHVpbnQ4X3QsIDUxMj4gbV9idWZmZXI7CiB9
OwogCi1ib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwg
VmVjdG9yPHVpbnQ4X3Q+Jik7Ci1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRB
Y3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7Citib29sIHJl
bmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZl
Y3Rvcjx1aW50OF90PiYpOworUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0
aXZhdGVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0
YS5jcHAKaW5kZXggMmNmYTg1NGMwMjI2NjhhY2MwMDczN2MxZWJiMzVmZjM0OGQ1OGUyYi4uNzll
OWVmZTA2MDUzMzU3OWU5Y2EzYmMxMDMyMzhiZmQyODJmNzE1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVmVydGljYWxEYXRhLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHN0cnVjdCBTdWJzdGl0dXRp
b25TdWJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBzdWJzdEZvcm1h
dDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGNvdmVyYWdlT2Zmc2V0OwogCi0gICAgY29uc3QgQ292
ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsg
cmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZz
ZXQpOyB9CisgICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxDb3Zl
cmFnZVRhYmxlPihidWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQogfTsKIAogc3RydWN0IFNpbmds
ZVN1YnN0aXR1dGlvbjJTdWJUYWJsZSA6IFN1YnN0aXR1dGlvblN1YlRhYmxlIHsKQEAgLTEzMSw3
ICsxMzEsNyBAQCBzdHJ1Y3QgTG9va3VwVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBl
OjpPZmZzZXQgc3ViVGFibGVPZmZzZXRzWzFdOwogICAgIC8vIE9wZW5UeXBlOjpVSW50MTYgbWFy
a0ZpbHRlcmluZ1NldDsgdGhpcyBmaWVsZCBjb21lcyBhZnRlciB2YXJpYWJsZSBsZW5ndGgsIHNv
IG9mZnNldCBpcyBkZXRlcm1pbmVkIGR5bmFtaWNhbGx5LgogCi0gICAgYm9vbCBnZXRTdWJzdGl0
dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5
cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50U3ViVGFibGUgPSBzdWJUYWJsZUNvdW50OwogICAg
ICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmc3ViVGFibGVPZmZzZXRzW2NvdW50U3ViVGFi
bGVdKSkKQEAgLTE5NCw3ICsxOTQsNyBAQCBzdHJ1Y3QgTG9va3VwTGlzdCA6IFRhYmxlQmFzZSB7
CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0
IGxvb2t1cE9mZnNldHNbMV07CiAKLSAgICBjb25zdCBMb29rdXBUYWJsZSogbG9va3VwKHVpbnQx
Nl90IGluZGV4LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBM
b29rdXBUYWJsZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxv
b2t1cENvdW50OwogICAgICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwgIWlzVmFsaWRFbmQoYnVm
ZmVyLCAmbG9va3VwT2Zmc2V0c1tjb3VudF0pKQpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0cnVjdCBG
ZWF0dXJlVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwQ291
bnQ7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBMaXN0SW5kZXhbMV07CiAKLSAgICBib29s
IGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBMb29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFw
PEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3VwTGlzdCogbG9va3Vwcywg
SGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291
bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBMaXN0SW5kZXhbY291
bnRdKSkKQEAgLTIyOSw3ICsyMjksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJsZUJhc2Ug
ewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IGZlYXR1cmVPZmZzZXQ7CiAgICAgfSBmZWF0dXJl
c1sxXTsKIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRleCwg
T3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAg
IGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRh
ZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7
CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoaW5k
ZXggPj0gY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbY291bnRdKSkKQEAg
LTIzOSw3ICsyMzksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJsZUJhc2UgewogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJl
KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAg
ICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBm
b3IgKHVpbnQxNl90IGkgPSAwOyBpIDwgZmVhdHVyZUNvdW50OyArK2kpIHsKICAgICAgICAgICAg
IGlmIChpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVzW2ldKSAmJiBmZWF0dXJlc1tpXS5mZWF0
dXJlVGFnID09IHRhZykKQEAgLTI1NSw3ICsyNTUsNyBAQCBzdHJ1Y3QgTGFuZ1N5c1RhYmxlIDog
VGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGZlYXR1cmVDb3VudDsKICAgICBPcGVu
VHlwZTo6VUludDE2IGZlYXR1cmVJbmRleFsxXTsKIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSog
ZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0
dXJlcywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVy
ZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxp
c3QqIGZlYXR1cmVzLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGZlYXR1cmVDb3VudDsKICAgICAgICAg
aWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1cmVJbmRleFtjb3VudF0pKQpAQCAtMjc3LDcg
KzI3Nyw3IEBAIHN0cnVjdCBTY3JpcHRUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5U
eXBlOjpPZmZzZXQgbGFuZ1N5c09mZnNldDsKICAgICB9IGxhbmdTeXNSZWNvcmRzWzFdOwogCi0g
ICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAg
IHVpbnQxNl90IGNvdW50ID0gbGFuZ1N5c0NvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQo
YnVmZmVyLCAmbGFuZ1N5c1JlY29yZHNbY291bnRdKSkKQEAgLTI5OCw3ICsyOTgsNyBAQCBzdHJ1
Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgc2Ny
aXB0T2Zmc2V0OwogICAgIH0gc2NyaXB0c1sxXTsKIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBz
Y3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVp
bnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZm
ZXIsICZzY3JpcHRzW2NvdW50XSkpCkBAIC0zMTAsNyArMzEwLDcgQEAgc3RydWN0IFNjcmlwdExp
c3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBjb25zdCBT
Y3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3Vu
dCA9IHNjcmlwdENvdW50OwogICAgICAgICBpZiAoIWNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZl
ciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMyMSw3ICszMjEsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlz
dCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRUYWJs
ZT4oYnVmZmVyLCBzY3JpcHRzWzBdLnNjcmlwdE9mZnNldCk7CiAgICAgfQogCi0gICAgY29uc3Qg
TGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNj
cmlwdFRhYmxlKiBzY3JpcHRUYWJsZSA9IGRlZmF1bHRTY3JpcHQoYnVmZmVyKTsKICAgICAgICAg
aWYgKCFzY3JpcHRUYWJsZSkKQEAgLTMzNiwxMSArMzM2LDExIEBAIHN0cnVjdCBHU1VCVGFibGUg
OiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZUxpc3RPZmZzZXQ7CiAg
ICAgT3BlblR5cGU6Ok9mZnNldCBsb29rdXBMaXN0T2Zmc2V0OwogCi0gICAgY29uc3QgU2NyaXB0
TGlzdCogc2NyaXB0TGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1
cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsg
fQotICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZl
ciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgTG9va3VwTGlzdCogbG9va3VwTGlz
dChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZz
ZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IFNj
cmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZmZXIsIHNjcmlw
dExpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVMaXN0KGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVP
ZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9CisgICAgY29u
c3QgTG9va3VwTGlzdCogbG9va3VwTGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwg
bG9va3VwTGlzdE9mZnNldCk7IH0KIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExh
bmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5
c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRzID0gc2Ny
aXB0TGlzdChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdHMpCkBAIC0zNDgsNyArMzQ4LDcg
QEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBzY3JpcHRz
LT5kZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJs
ZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6
VGFnIGZlYXR1cmVUYWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKICAgICB7CiAgICAgICAgIGNvbnN0IExhbmdTeXNUYWJsZSogbGFuZ1N5cyA9IGRlZmF1bHRM
YW5nU3lzKGJ1ZmZlcik7CiAgICAgICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcyA9IGZl
YXR1cmVMaXN0KGJ1ZmZlcik7CkBAIC0zNjUsNyArMzY1LDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6
IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBmZWF0dXJlOwogICAgIH0KIAotICAgIGJvb2wg
Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0VmVydGljYWxH
bHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IEZl
YXR1cmVUYWJsZSogdmVydGljYWxGZWF0dXJlVGFibGUgPSBmZWF0dXJlKE9wZW5UeXBlOjpWZXJ0
RmVhdHVyZVRhZywgYnVmZmVyKTsKICAgICAgICAgaWYgKCF2ZXJ0aWNhbEZlYXR1cmVUYWJsZSkK
QEAgLTM4MSw3ICszODEsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKIAogc3Rh
dGljIGJvb2wgbG9hZEhtdHhUYWJsZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURh
dGEsIFZlY3Rvcjx1aW50MTZfdD4mIGFkdmFuY2VXaWR0aHMpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6Okho
ZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3Bl
blR5cGU6OkhoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpIaGVhVGFibGUqIGhoZWEgPSBP
cGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6SGhlYVRhYmxlPihidWZmZXIpOwogICAg
IGlmICghaGhlYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDI0LDcgKzQyNCw3IEBAIE9w
ZW5UeXBlVmVydGljYWxEYXRhOjpPcGVuVHlwZVZlcnRpY2FsRGF0YShjb25zdCBGb250UGxhdGZv
cm1EYXRhJiBwbGF0Zm9ybURhdGEsCiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0
cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7CiAgICAgLy8gTG9h
ZCB2aGVhIGZpcnN0LiBUaGlzIHRhYmxlIGlzIHJlcXVpcmVkIGZvciBmb250cyB0aGF0IHN1cHBv
cnQgdmVydGljYWwgZmxvdy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0
Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CisgICAgYXV0byBidWZm
ZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CiAgICAg
Y29uc3QgT3BlblR5cGU6OlZoZWFUYWJsZSogdmhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxl
PE9wZW5UeXBlOjpWaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCF2aGVhKQogICAgICAgICBy
ZXR1cm47CkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9h
ZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogCiB2b2lkIE9w
ZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFn
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBl
OjpHU1VCVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6R1NVQlRhYmxlKiBnc3ViID0gT3BlblR5
cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OkdTVUJUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAo
Z3N1YikKICAgICAgICAgZ3N1Yi0+Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoJm1fdmVy
dGljYWxHbHlwaE1hcCwgKmJ1ZmZlci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oCmluZGV4
IGE2MjcxOWIxNzE5YTc0Zjk3NjkyMjE5ZGY1ZjdhYWVkYzQ5MDY0NjYuLjBkYjRhZmFkYjNmNzQy
YjgzYTRlMTZjZjM3MTg3MGEyYjA0MDRlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oCkBAIC00
Myw3ICs0Myw3IEBAIGVudW0gRFdSSVRFX0ZPTlRfU1RSRVRDSDsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBEaXJlY3RXcml0ZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBjODY4M2E3ZWY1ODljM2ZlNjU0ZDg0NTcx
Mjk1ZTI0MGQyMjQ0OWU0Li44YmUxYjFhMzNhNjIwNWMxODFjZWZmMWFjMzQzNGJjODdhNzgzYmU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgc3Rh
dGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVt
SW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1l
ID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFt
ZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oCmluZGV4IDVmMTBmNzM5MmQwNGMzNDRkMTJjZWU0MjY2ZWRiMWVlOTk3MWM0ZWYuLjQ4ZWQ0
MjVlNDIyN2E1NTZhN2VjM2I4Nzc5ZjdjMDQyODVmZTMzZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaApAQCAtMzYsMTIgKzM2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dGb250
UmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwog
Y2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IEZv
bnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0
aW5nczsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5n
czxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC02NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAg
ICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAotc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGFDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAppbmRleCAzYzFkNGUyZjNjNzU0YTczYTgyM2EwMGMx
Njc0ZWMzMDQ0OTMxMTJkLi5mNGZiZjdhN2Y0ZDdjODNmZjIxMTZjMzFlNTQ2Y2E5MWUwNTg5Y2Ix
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcApAQCAtODcsNyArODcs
NyBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9u
dE5hbWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJpbmcg
Zm9udE5hbWUgPSBjcmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291cmNl
ID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWly
b1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRm
b3JtRGF0YUNhaXJvV2luLmNwcAppbmRleCAzMWExZTVjNTMxZjIwOTAzYzVjZmIzMjg2MGJhNWVm
MjA2NGU5M2RkLi40YzY3NGM0NzQzYmMwMTE4YTk3MDEwY2M2OTI4OWI1ODZkYmIwY2QxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3Jt
RGF0YUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcApAQCAtOTgsNyArOTgsNyBAQCBib29sIEZv
bnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZvcm1EYXRhJiBv
dGhlcikgY29uc3QKICAgICAgICAgJiYgbV91c2VHREkgPT0gb3RoZXIubV91c2VHREk7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWlu
dDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBs
YXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBy
ZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2lu
LmNwcAppbmRleCA2Y2I1NTExMDRhOTNiZGJkMjJiNDE3YTQ1NDZkMjBmYWQwZTJhMzRhLi40Mzlj
Zjg2M2I4NzNkYzljZjdmODEwNTk5ZTVhNjAxZTdmNzM3OTk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFX
aW4uY3BwCkBAIC01OSwxOCArNTksMTggQEAgRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3Jt
RGF0YShHRElPYmplY3Q8SEZPTlQ+IGZvbnQsIGZsb2F0IHNpemUsIGJvb2wgYm9sZCwKICAgICBS
ZXN0b3JlREMoaGRjLCAtMSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9y
bURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5U
eXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgSFduZERDIGhkYygwKTsKICAg
ICBIR0RJT0JKIG9sZEZvbnQgPSBTZWxlY3RPYmplY3QoaGRjLCBoZm9udCgpKTsKIAogICAgIERX
T1JEIHNpemUgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAwLCAwKTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKICAgICBpZiAoc2l6ZSAhPSBHRElfRVJST1IpIHsKICAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGRhdGEoc2l6ZSk7CiAgICAgICAgIERXT1JEIHJlc3VsdCA9IEdldEZvbnREYXRhKGhk
YywgdGFibGUsIDAsIChQVk9JRClkYXRhLmRhdGEoKSwgc2l6ZSk7CiAgICAgICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQgPT0gc2l6ZSk7Ci0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgICAgICBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgfQogCiAgICAgU2VsZWN0
T2JqZWN0KGhkYywgb2xkRm9udCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAppbmRleCA2Mjll
MGU2MWExMDRjNTY3YTFkNGVkY2I3ZTU3OTdkY2Y2N2M2ZThlLi43NzM1NzM5YjkzMzRmNDRkOTlh
M2YxMmZmYzViZjdiNDFmN2NjNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKQEAgLTI3
Miw3ICsyNzIsNyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckRpcmVjdDJEOjpjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YgogICAgIHJldHVybiBiaXRtYXA7
CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnNl
dERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiB7CiAgICAgaWYgKCFhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJl
Y3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2Rl
ckRpcmVjdDJELmgKaW5kZXggNGY0NzI1ODZiNDI0YmRhMWNmNmZhMDE0M2NiYTIzZDAzMDAxNmU0
NS4uYzIzNjVmZDc0NGM2MTE4YzE5OTllMDViODAyZWQ1YjQ4ZjM2NDgyMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJE
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2Rl
ckRpcmVjdDJELmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgSW1hZ2VEZWNvZGVyRGlyZWN0MkQg
ZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKIHB1YmxpYzoKICAgICBJbWFnZURlY29kZXJE
aXJlY3QyRCgpOwogCi0gICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJEaXJlY3QyRD4gY3JlYXRl
KFNoYXJlZEJ1ZmZlciYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikK
KyAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2RlckRpcmVjdDJEPiBjcmVhdGUoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlckRpcmVjdDJEKCkp
OwogICAgIH0KQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogCiAgICAgUGxhdGZvcm1JbWFnZVB0
ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJz
YW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdP
cHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAotICAgIHZvaWQgc2V0
RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9p
ZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
ZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShz
aXplX3QpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlV2luLmNwcAppbmRleCAwZDg4MjBlOWYzZDZmZDc3MzVkNTcwYjM2NDE0ODhm
NTNiZDdlY2U5Li4yZDk3MjcwYTczNDgzNDg5M2U3OGM4MWZmMGVjNWJiNWRmZWMzZjg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAK
QEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAogLy8gVGhpcyBm
dW5jdGlvbiBsb2FkcyByZXNvdXJjZXMgZnJvbSBXZWJLaXQKLVJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciopOworUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29u
c3QgY2hhciopOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCmluZGV4IGNmMmI1MWY2ZjAyODM3YTExMDZmNGQ5OTlm
MmYxMzBlMjU4MDk4NmEuLjdlM2IzNjMyYjkwYzYxOTQxNWU0OGE1MmEyMjU4YjE0MmUwMDFhNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaApAQCAtNjAs
OCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDYW5TbWFydFJlcGxhY2UoYm9vbCBjYW5T
bWFydFJlcGxhY2UpIHsgbV9jYW5TbWFydFJlcGxhY2UgPSBjYW5TbWFydFJlcGxhY2U7IH0KICAg
ICBib29sIGNhblNtYXJ0UmVwbGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuU21hcnRSZXBsYWNl
OyB9CiAKLSAgICB2b2lkIHNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
IHsgbV9jdXN0b21EYXRhID0gV1RGTW92ZShidWZmZXIpOyB9Ci0gICAgU2hhcmVkQnVmZmVyKiBj
dXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CisgICAgdm9p
ZCBzZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBt
X2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KKyAgICBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CiAg
ICAgYm9vbCBoYXNDdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2N1c3RvbURhdGE7IH0K
ICAgICB2b2lkIGNsZWFyQ3VzdG9tRGF0YSgpIHsgbV9jdXN0b21EYXRhID0gbnVsbHB0cjsgfQog
CkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlbmFt
ZXM7CiAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOwogICAgIGJvb2wgbV9jYW5TbWFydFJlcGxh
Y2UgeyBmYWxzZSB9OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKKyAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCmluZGV4IGQ5
NTZkOWU3NjI1ZDViYjVhNzBmMDY5M2U3Nzk4ZWU5MDg0OWYxNjUuLjMzYzk1ZWMzMzMzYTkyMGM2
NGEwMTgxNzUxZWI0YTUwNWVmMWE3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAK
QEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewogCi1z
dGF0aWMgdW5zaWduZWQgY29weUZyb21TaGFyZWRCdWZmZXIoY2hhciogYnVmZmVyLCB1bnNpZ25l
ZCBidWZmZXJMZW5ndGgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKQorc3RhdGlj
IHVuc2lnbmVkIGNvcHlGcm9tU2hhcmVkQnVmZmVyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVm
ZmVyTGVuZ3RoLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpCiB7
CiAgICAgdW5zaWduZWQgYnl0ZXNFeHRyYWN0ZWQgPSAwOwogICAgIGZvciAoY29uc3QgYXV0byYg
ZWxlbWVudCA6IHNoYXJlZEJ1ZmZlcikgewpAQCAtMTM1LDcgKzEzNSw3IEBAIGJvb2wgbWF0Y2hl
c0NVUlNpZ25hdHVyZShjaGFyKiBjb250ZW50cykKIAogfQogCi1SZWZQdHI8U2NhbGFibGVJbWFn
ZURlY29kZXI+IFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRh
LCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8U2NhbGFibGVJbWFnZURlY29kZXI+IFNj
YWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsZW5n
dGhPZkxvbmdlc3RTaWduYXR1cmUgPSAxNDsgLy8gVG8gd2l0OiAiUklGRj8/Pz9XRUJQVlAiCiAg
ICAgY2hhciBjb250ZW50c1tsZW5ndGhPZkxvbmdlc3RTaWduYXR1cmVdOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29k
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1h
Z2VEZWNvZGVyLmgKaW5kZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2MjJkODc1NzA4Nzk4Yjk5ZGFh
Mi4uOWM0MDU1NzgyNDFkMGM1MTI3MDI5NTE1YzIyMTI2NThmOGM0ZjY4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJs
ZUltYWdlRGVjb2Rlci5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVy
bnMgbnVsbHB0ciBpZiB3ZSBjYW4ndCBzbmlmZiBhIHN1cHBvcnRlZCB0eXBlIGZyb20gdGhlIHBy
b3ZpZGVkIGRhdGEgKHBvc3NpYmx5CiAgICAgLy8gYmVjYXVzZSB0aGVyZSBpc24ndCBlbm91Z2gg
ZGF0YSB5ZXQpLgotICAgIHN0YXRpYyBSZWZQdHI8U2NhbGFibGVJbWFnZURlY29kZXI+IGNyZWF0
ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbik7CisgICAgc3RhdGljIFJlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gY3JlYXRlKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbik7CiAKICAgICBib29sIHByZW11bHRpcGx5QWxwaGEoKSBjb25zdCB7IHJldHVy
biBtX3ByZW11bHRpcGx5QWxwaGE7IH0KIApAQCAtNzAsMTYgKzcwLDE1IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkNv
bXBsZXRlOwogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZQorICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJpZGUKICAgICB7
CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgaWYgKG1fZW5jb2Rl
ZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIGlmIChkYXRhLmRhdGEoKSkgewotICAgICAgICAgICAgLy8gU2hhcmVk
QnVmZmVyOjpkYXRhKCkgY29tYmluZXMgYWxsIHNlZ21lbnRzIGludG8gb25lIGluIGNhc2UgdGhl
cmUncyBtb3JlIHRoYW4gb25lLgotICAgICAgICAgICAgbV9kYXRhID0gZGF0YS5iZWdpbigpLT5z
ZWdtZW50LmNvcHlSZWYoKTsKLSAgICAgICAgfQorICAgICAgICBhdXRvIGNvbnRpZ3VvdXNEYXRh
ID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgICAgICBpZiAoY29udGlndW91c0RhdGEtPmRh
dGEoKSkKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhLT5iZWdpbigpLT5zZWdt
ZW50LmNvcHlSZWYoKTsKICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2Rl
ZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFibGUpIHsKICAgICAgICAgICAgIG1fZGVjb2RpbmdTaXpl
RnJvbVNldERhdGEgPSB0cnVlOwogICAgICAgICAgICAgdHJ5RGVjb2RlU2l6ZShhbGxEYXRhUmVj
ZWl2ZWQpOwpAQCAtMTk1LDcgKzE5NCw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPElu
dFBvaW50PiBob3RTcG90KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9
CiAKIHByb3RlY3RlZDoKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9k
YXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9k
YXRhOwogICAgIFZlY3RvcjxTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lLCAxPiBtX2ZyYW1lQnVm
ZmVyQ2FjaGUgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOwogICAgIG11dGFibGUgTG9jayBt
X2xvY2s7CiAgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJl
YWRlci5jcHAKaW5kZXggN2M2MDNmZDgzNThjMjE0YWM5MTg0ZjMxODk5NzJmZTg0MWI2MWU4MC4u
MjZmODg2NDk2ZTVhNWExNGUyOGFmYjFhZmE5YmZjMzAxNzdmNTFjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJ
RkltYWdlUmVhZGVyLmNwcApAQCAtNDEsNyArNDEsNyBAQCBBVklGSW1hZ2VSZWFkZXI6OkFWSUZJ
bWFnZVJlYWRlcihSZWZQdHI8QVZJRkltYWdlRGVjb2Rlcj4mJiBkZWNvZGVyKQogCiBBVklGSW1h
Z2VSZWFkZXI6On5BVklGSW1hZ2VSZWFkZXIoKSA9IGRlZmF1bHQ7CiAKLWJvb2wgQVZJRkltYWdl
UmVhZGVyOjpwYXJzZUhlYWRlcihjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKK2Jvb2wgQVZJRkltYWdlUmVhZGVyOjpwYXJzZUhlYWRl
cihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGF2aWZEZWNvZGVyU2V0SU9NZW1vcnkobV9hdmlm
RGVjb2Rlci5nZXQoKSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSAhPSBBVklGX1JFU1VMVF9P
SykKICAgICAgICAgcmV0dXJuIGFsbERhdGFSZWNlaXZlZCA/IG1fZGVjb2Rlci0+c2V0RmFpbGVk
KCkgOiBmYWxzZTsKQEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNl
SGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgYWwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBVklGSW1hZ2VSZWFkZXI6OmRlY29kZUZyYW1lKHNp
emVfdCBmcmFtZUluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiBidWZmZXIsIGNvbnN0
IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpCit2b2lkIEFWSUZJbWFnZVJlYWRlcjo6
ZGVjb2RlRnJhbWUoc2l6ZV90IGZyYW1lSW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUm
IGJ1ZmZlciwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEp
CiB7CiAgICAgaWYgKG1fZGVjb2Rlci0+ZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRklt
YWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlm
L0FWSUZJbWFnZVJlYWRlci5oCmluZGV4IGNiY2EwYjhjMTI0YmZmMGZmYzMzMDFiYTM1YmNlMDFl
ZDI3MjJkZjguLjQ5NmY2OWY4MTJiZDc1YjBlZGE2MzU3YmFhODYwY2ZjY2I1YmE0YjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRklt
YWdlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
YXZpZi9BVklGSW1hZ2VSZWFkZXIuaApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAgICAgQVZJ
RkltYWdlUmVhZGVyKFJlZlB0cjxBVklGSW1hZ2VEZWNvZGVyPiYmKTsKICAgICB+QVZJRkltYWdl
UmVhZGVyKCk7CiAKLSAgICBib29sIHBhcnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQmLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgdm9pZCBkZWNvZGVGcmFtZShz
aXplX3QgaW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmLCBjb25zdCBTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50Jik7CisgICAgYm9vbCBwYXJzZUhlYWRlcihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2
b2lkIGRlY29kZUZyYW1lKHNpemVfdCBpbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYs
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Jik7CiAgICAgc2l6ZV90
IGltYWdlQ291bnQoKSBjb25zdDsKICAgICBkb3VibGUgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Jt
cC9CTVBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggNzI3NjlhNjkyNmVjMjQxOWJmNjYz
ODI1MjhkM2Q3NzIwYTU0YWRhZS4uZjc0NTVjMTQ2YzdlOGFlYjA0Y2M4YzU2ZjMzMGUyYTAxZjNi
YTcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgQk1Q
SW1hZ2VEZWNvZGVyOjpCTVBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3AKIHsKIH0KIAotdm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERh
dGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgQk1QSW1h
Z2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUElt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1w
L0JNUEltYWdlRGVjb2Rlci5oCmluZGV4IGM3YzdjYTgxZmVhNmI4YTc3NGJiMzA4ZTUzOGRjZDA0
OGM5OTVlZWEuLjY0ZGVkNmFiYmUyYzBhMjliMTFmOWZiNWVjZDZiNDg3MjRkNTg5NzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9i
bXAvQk1QSW1hZ2VEZWNvZGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgLy8g
U2NhbGFibGVJbWFnZURlY29kZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25z
dCBmaW5hbCB7IHJldHVybiAiYm1wIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZl
ciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBTY2Fs
YWJsZUltYWdlRGVjb2RlckZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBm
aW5hbDsKICAgICAvLyBDQVVUSU9OOiBzZXRGYWlsZWQoKSBkZWxldGVzIHxtX3JlYWRlcnwuIEJl
IGNhcmVmdWwgdG8gYXZvaWQKICAgICAvLyBhY2Nlc3NpbmcgZGVsZXRlZCBtZW1vcnksIGVzcGVj
aWFsbHkgd2hlbiBjYWxsaW5nIHRoaXMgZnJvbSBpbnNpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgK
aW5kZXggNDg0NGYzODBkYzE3ZWM3MDQ1ODhmYjEyZjUzZWFiYzZkMjBlNjBmNC4uYmQ0MzBlOGE4
YmVhMmM4MTZiMmM1MjJiZjViYTc4ODQ2YzM4ZTBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgK
QEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgQk1QSW1hZ2VSZWFkZXIgewogcHVibGljOgogICAgIC8v
IFJlYWQgYSB2YWx1ZSBmcm9tIHxkYXRhW29mZnNldF18LCBjb252ZXJ0aW5nIGZyb20gbGl0dGxl
IHRvIG5hdGl2ZQogICAgIC8vIGVuZGlhbm5lc3MuCi0gICAgc3RhdGljIGlubGluZSB1aW50MTZf
dCByZWFkVWludDE2KGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBv
ZmZzZXQpCisgICAgc3RhdGljIGlubGluZSB1aW50MTZfdCByZWFkVWludDE2KGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQogICAgIHsK
ICAgICAgICAgdWludDE2X3QgcmVzdWx0OwogICAgICAgICBtZW1jcHkoJnJlc3VsdCwgJmRhdGEu
ZGF0YSgpW29mZnNldF0sIDIpOwpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgc3RhdGljIGlubGluZSB1aW50MzJfdCByZWFkVWlu
dDMyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQpCisg
ICAgc3RhdGljIGlubGluZSB1aW50MzJfdCByZWFkVWludDMyKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQogICAgIHsKICAgICAgICAg
dWludDMyX3QgcmVzdWx0OwogICAgICAgICBtZW1jcHkoJnJlc3VsdCwgJmRhdGEuZGF0YSgpW29m
ZnNldF0sIDQpOwpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgQk1QSW1hZ2VSZWFkZXIo
U2NhbGFibGVJbWFnZURlY29kZXIqIHBhcmVudCwgc2l6ZV90IGRlY29kZWRBbmRIZWFkZXJPZmZz
ZXQsIHNpemVfdCBpbWdEYXRhT2Zmc2V0LCBib29sIHVzZXNBbmRNYXNrKTsKIAogICAgIHZvaWQg
c2V0QnVmZmVyKFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGJ1ZmZlcikgeyBtX2J1ZmZlciA9
IGJ1ZmZlcjsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBk
YXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9CiAKICAgICAv
LyBEb2VzIHRoZSBhY3R1YWwgZGVjb2RpbmcuIElmIHxvbmx5U2l6ZXwgaXMgdHJ1ZSwgZGVjb2Rp
bmcgb25seQogICAgIC8vIHByb2dyZXNzZXMgYXMgZmFyIGFzIG5lY2Vzc2FyeSB0byBnZXQgdGhl
IGltYWdlIHNpemUuIFJldHVybnMKQEAgLTI3Miw3ICsyNzIsNyBAQCBwcml2YXRlOgogICAgIFNj
YWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIG1fYnVmZmVyOwogCiAgICAgLy8gVGhlIGZpbGUgdG8g
ZGVjb2RlLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CiAK
ICAgICAvLyBBbiBpbmRleCBpbnRvIHxtX2RhdGF8IHJlcHJlc2VudGluZyBob3cgbXVjaCB3ZSd2
ZSBhbHJlYWR5IGRlY29kZWQuCiAgICAgc2l6ZV90IG1fZGVjb2RlZE9mZnNldDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFj
a2luZ1N0b3JlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAKaW5kZXggNjAxMjAzNzRmOWM0MzE2
OGE2NTIxYjY5YzU0YWZiZTJhMDBmNTVmNy4uOGNjZjA0ZjY4ZjA0MDZkYTRkMzc0YWUxMTY4Yzlj
ZWJiYzlhNWQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5j
cHAKQEAgLTM3LDcgKzM3LDcgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZUJhY2tpbmdTdG9yZTo6
aW1hZ2UoKSBjb25zdAogICAgICAgICByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihj
b25zdF9jYXN0PHVpbnQzMl90Kj4obV9waXhlbHNQdHIpKSwKICAgICAgICAgQ0FJUk9fRk9STUFU
X0FSR0IzMiwgc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSwgc2l6ZSgpLndpZHRoKCkg
KiBzaXplb2YodWludDMyX3QpKSk7CiAgICAgc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBz
X3N1cmZhY2VEYXRhS2V5OwotICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0YShzdXJmYWNl
LmdldCgpLCAmc19zdXJmYWNlRGF0YUtleSwgbV9waXhlbHMuZ2V0KCksIFtdKHZvaWQqIGRhdGEp
IHsgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KGRhdGEpLT5kZXJlZigp
OyB9KTsKKyAgICBjYWlyb19zdXJmYWNlX3NldF91c2VyX2RhdGEoc3VyZmFjZS5nZXQoKSwgJnNf
c3VyZmFjZURhdGFLZXksIG1fcGl4ZWxzLmdldCgpLCBbXSh2b2lkKiBkYXRhKSB7IHN0YXRpY19j
YXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4oZGF0YSktPmRlcmVmKCk7
IH0pOwogCiAgICAgcmV0dXJuIHN1cmZhY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3Bw
CmluZGV4IGU2YWJlMGQ5NTQ0YjZjMTg1YzY0NWRlY2UwOWYyM2Y5NTY2NjA3Y2IuLmI5ZWMwMWI4
YWU4ZThkMjliYzc4MjUyNmUwNzY1MjU1MWUzNTljMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29k
ZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIEdJRkltYWdlRGVjb2Rlcjo6R0lGSW1hZ2VEZWNvZGVy
KEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiAKIEdJRklt
YWdlRGVjb2Rlcjo6fkdJRkltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBHSUZJbWFn
ZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKK3ZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCmluZGV4IDM1ZGYzM2Y2ZGZjNDgzZmQ4
NDcxMzY2YWU1M2JiMGI5NjFjYWVkMmUuLmM3NDcxOTk5OWI5ODZjMWNlZjg0Nzg3NTlkMjM3MThj
OTA0MmQzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVi
bGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBTdHJpbmcgZmlsZW5hbWVF
eHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiZ2lmIl9zOyB9Ci0gICAgdm9pZCBzZXRE
YXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAg
IHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbDsK
ICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IGZpbmFsOwogICAgIFJlcGV0aXRpb25Db3Vu
dCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKaW5k
ZXggNDIxNDZlMDMyOTMyMzY5OTc4OWViNWU0MmFmNGM3M2QzNGFiOWNjNi4uMTA4MmZkZjBkZmYy
MzkxZTU2NTMwYTQxZjg3YmE0Mzk4MjMyNzUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKQEAg
LTIzNyw3ICsyMzcsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0
YShXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKSB7IG1fZGF0YSA9ICZk
YXRhOyB9CisgICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50JiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9CiAgICAgLy8gRklYTUU6IGhh
bHRBdEZyYW1lIHNob3VsZCBiZSBzaXplX3QuCiAgICAgYm9vbCBkZWNvZGUoV2ViQ29yZTo6R0lG
SW1hZ2VEZWNvZGVyOjpHSUZRdWVyeSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpOwogCkBAIC0zMTYs
NiArMzE2LDYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEdJRkZyYW1l
Q29udGV4dD4gPiBtX2ZyYW1lczsKICAgICBzaXplX3QgbV9jdXJyZW50RGVjb2RpbmdGcmFtZTsK
IAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7
CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
PiBtX2RhdGE7CiAgICAgYm9vbCBtX3BhcnNlQ29tcGxldGVkOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdl
RGVjb2Rlci5jcHAKaW5kZXggYzcxN2M0NWQzMDU3YzA1NTM2ZWU2MDUwZjkzOTcwNDZkMTBkZjJh
Ny4uNTZmZjAxYTE0ZDEwMTQxOTE1MDBkNDJjMTgxMTc2NWNlMzUxODZlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lD
T0ltYWdlRGVjb2Rlci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgSUNPSW1hZ2VEZWNvZGVyOjpJQ09J
bWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3AKIAogSUNPSW1hZ2VEZWNvZGVyOjp+SUNPSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12
b2lkIElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQordm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxl
ZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBJQ09JbWFnZURl
Y29kZXI6OnNldERhdGFGb3JQTkdEZWNvZGVyQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgLy8g
Q29weSBvdXQgUE5HIGRhdGEgdG8gYSBzZXBhcmF0ZSB2ZWN0b3IgYW5kIHNlbmQgdG8gdGhlIFBO
RyBkZWNvZGVyLgogICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMgY29weSBieSBtYWtpbmcgdGhlIFBO
RyBkZWNvZGVyIGFibGUgdG8gdGFrZSBhbgogICAgIC8vIG9wdGlvbmFsIG9mZnNldC4KLSAgICBh
dXRvIHBuZ0RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgmbV9kYXRhLT5kYXRhKClbZGlyRW50
cnkubV9pbWFnZU9mZnNldF0sIG1fZGF0YS0+c2l6ZSgpIC0gZGlyRW50cnkubV9pbWFnZU9mZnNl
dCk7CisgICAgYXV0byBwbmdEYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCZt
X2RhdGEtPmRhdGEoKVtkaXJFbnRyeS5tX2ltYWdlT2Zmc2V0XSwgbV9kYXRhLT5zaXplKCkgLSBk
aXJFbnRyeS5tX2ltYWdlT2Zmc2V0KTsKICAgICBtX3BuZ0RlY29kZXJzW2luZGV4XS0+c2V0RGF0
YShwbmdEYXRhLmdldCgpLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdl
RGVjb2Rlci5oCmluZGV4IGZiN2E5MDNiMmEwNzUzOTQ5MTdhYmJiZjExYjFjZWQ4M2ZmNDMyYTAu
LjEwZWU5YjRkMmU4YzlkODg3ZTFkMmI4YmUxMzliYjc0MjcxZDU3YTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1h
Z2VEZWNvZGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJ
bWFnZURlY29kZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7
IHJldHVybiAiaWNvIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBJbnRTaXplIHNpemUo
KSBjb25zdCBmaW5hbDsKICAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJz
YW1wbGluZ0xldmVsKSBjb25zdCBmaW5hbDsKICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6
ZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggZmQzNDViYjc4
NmZmMDhkOTQ2NTkzMGFhNGRmNDhkZjE3YWJmMzA1Yy4uMWZjYjZjMTNkODYwYmEyNjQyNGI0ODI0
MjkwZmM5ZjVlOTE0NjMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0y
MjAsOSArMjIwLDkgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9tYXJrZXJf
cHRyIG1hcmtlcikKICAgICAgICAgJiYgbWFya2VyLT5kYXRhWzExXSA9PSAnXDAnOwogfQogCi1z
dGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNz
X3N0cnVjdCogaW5mbykKK3N0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVh
ZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsKLSAgICBhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBi
dWZmZXI7CiAgICAgZm9yIChqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyID0gaW5mby0+bWFy
a2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2VyLT5uZXh0KSB7CiAgICAgICAgIGlmICgh
aXNJQ0NNYXJrZXIobWFya2VyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjM2LDEzICsy
MzYsMTMgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdf
ZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgICAgICB1bnNpZ25lZCBtYXJrZXJTaXplID0gbWFya2VyLT5kYXRhX2xlbmd0aCAtIGljY0hl
YWRlclNpemU7Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXplKTsKKyAg
ICAgICAgYnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJr
ZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CiAgICAgfQogCi0gICAgaWYg
KGJ1ZmZlci0+aXNFbXB0eSgpKQorICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBidWZmZXI7CisgICAgcmV0dXJuIGJ1ZmZlci50
YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CiB9CiAjZW5kaWYKIApAQCAtMzIwLDcgKzMyMCw3IEBA
IHB1YmxpYzoKICAgICAgICAgbV9ieXRlc1RvU2tpcCA9IHN0ZDo6bWF4KG51bUJ5dGVzIC0gYnl0
ZXNUb1NraXAsIHN0YXRpY19jYXN0PGxvbmc+KDApKTsKICAgICB9CiAKLSAgICBib29sIGRlY29k
ZShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIG9ubHlTaXplKQor
ICAgIGJvb2wgZGVjb2RlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
JiBkYXRhLCBib29sIG9ubHlTaXplKQogICAgIHsKICAgICAgICAgbV9kZWNvZGluZ1NpemVPbmx5
ID0gb25seVNpemU7CiAKQEAgLTcyNiw3ICs3MjYsNyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6
OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIH0KIAogI2lmIFVT
RShMQ01TKQotdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxl
KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1
ZmZlcikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAppbmRleCBk
MmQ3ZmE2YWI0OWI0MjQ3YWZmYjhlMWZiZWU0Njk1M2IwY2IwNWNiLi5jMDNhYTY3ODIyMDNjYmQ0
Y2ZjODNmZGU4Zjg3MTJiNzA4MWUzYWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaApA
QCAtNjgsNyArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRP
cmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24g
PSBvcmllbnRhdGlvbjsgfQogI2lmIFVTRShMQ01TKQotICAgICAgICB2b2lkIHNldElDQ1Byb2Zp
bGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
MjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKaW5kZXggYmVj
ZjY0NTAyNzdlZWI3NGIwOWRlNTJlZTE4MmZmNmUxMWVkMjc2Mi4uMjA0NzNmMGVlZWJiNTZjNzEz
MTRmNjU1NmJkYTA5MDMzNDkwNzQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAw
SW1hZ2VEZWNvZGVyLmNwcApAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgSlBFRzIwMDBJbWFnZURl
Y29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICB9
CiAKICAgICBzdHJ1Y3QgUmVhZGVyIHsKLSAgICAgICAgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dCYgZGF0YTsKKyAgICAgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRh
dGE7CiAgICAgICAgIHNpemVfdCBvZmZzZXQ7CiAgICAgfSByZWFkZXIgPSB7ICptX2RhdGEsIDAg
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
cG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBjMTJjNDU5YTVhM2U1YjM1MWM1
YmNjNjJiZjAwYjhhMjgxYmQ1YmEzLi40Y2JkMzIzZDlhNzUwMjZlZjg2NThmMzgxNmRkNzM4ZDM3
Y2E4ZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBA
IHB1YmxpYzoKICAgICAgICAgbV9yZWFkT2Zmc2V0ID0gMDsKICAgICB9CiAKLSAgICBib29sIGRl
Y29kZShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIHNpemVPbmx5
LCB1bnNpZ25lZCBoYWx0QXRGcmFtZSkKKyAgICBib29sIGRlY29kZShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBzaXplT25seSwgdW5zaWduZWQg
aGFsdEF0RnJhbWUpCiAgICAgewogICAgICAgICBtX2RlY29kaW5nU2l6ZU9ubHkgPSBzaXplT25s
eTsKICAgICAgICAgUE5HSW1hZ2VEZWNvZGVyKiBkZWNvZGVyID0gc3RhdGljX2Nhc3Q8UE5HSW1h
Z2VEZWNvZGVyKj4ocG5nX2dldF9wcm9ncmVzc2l2ZV9wdHIobV9wbmcpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVj
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dF
QlBJbWFnZURlY29kZXIuY3BwCmluZGV4IDAyZjFiMDlkYmM3NjUxNjAxZjkyMmRkZTI5ZjgwNWE2
NTg3MWUyZDIuLmIxYmVjNTVlNzhjNDM0ODAxYzI1NGFjZTBkZjU5OTMxYTM2Yjc0YmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUElt
YWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDcsNyArNDcsNyBAQCBXRUJQSW1hZ2VE
ZWNvZGVyOjpXRUJQSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZQogCiBXRUJQSW1hZ2VEZWNvZGVyOjp+V0VCUEltYWdlRGVjb2RlcigpID0g
ZGVmYXVsdDsKIAotdm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIFdFQlBJbWFnZURlY29kZXI6OnNldERh
dGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7
CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMzIsNyArMTMyLDcgQEAg
dm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUoc2l6ZV90IGZyYW1lSW5kZXgsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogICAgIC8vIFRoaXMgY2FuIGJlIGV4ZWN1dGVkIGJvdGggaW4gdGhlIG1h
aW4gdGhyZWFkICh3aGVuIG5vdCB1c2luZyBhc3luYyBkZWNvZGluZykgb3IgaW4gdGhlIGRlY29k
aW5nIHRocmVhZC4KICAgICAvLyBXaGVuIGV4ZWN1dGVkIGluIHRoZSBkZWNvZGluZyB0aHJlYWQs
IGEgY2FsbCB0byBzZXREYXRhKCkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgbWF5IGNoYW5nZSB0aGUg
ZGF0YQogICAgIC8vIHRoZSBXZWJQRGVtdXhlciBpcyB1c2luZywgbGVhdmluZyBpdCBpbiBhbiBp
bmNvbnNpc3RlbnQgc3RhdGUsIHNvIHdlIG5lZWQgdG8gcHJvdGVjdCB0aGUgZGF0YS4KLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gcHJvdGVjdGVkRGF0YShtX2RhdGEpOwor
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gcHJvdGVjdGVk
RGF0YShtX2RhdGEpOwogICAgIFdlYlBEYXRhIGlucHV0RGF0YSA9IHsgcHJvdGVjdGVkRGF0YS0+
ZGF0YSgpLCBwcm90ZWN0ZWREYXRhLT5zaXplKCkgfTsKICAgICBXZWJQRGVtdXhTdGF0ZSBkZW11
eGVyU3RhdGU7CiAgICAgV2ViUERlbXV4ZXIqIGRlbXV4ZXIgPSBXZWJQRGVtdXhQYXJ0aWFsKCZp
bnB1dERhdGEsICZkZW11eGVyU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAppbmRl
eCBhZjM2NWU5Y2Y5YzdjZTk1MzhiNjRiYTc4OWJmMDE3ZDQ4ZjZlZGUxLi5kZDI4YmM4OGRmNWMw
ZmEzYzE1NzM3ODY5YjI2MDk3M2FhYTBkMjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
aApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V0VCUEltYWdlRGVjb2Rl
cigpOwogCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIndlYnAiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCkg
ZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sKSBm
aW5hbDsKICAgICBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgo
c2l6ZV90IGluZGV4KSBvdmVycmlkZTsKICAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNv
dW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2ZyYW1lQ291bnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggOTA5ZThlNzY4YWRiNjhiYWIyODQ0NWQyODI3MzYw
YTNmM2ZhMjJjMy4uYjIzNzdmZTM0MTFkMmFjNDAxNTEzYmYwOWFlOGNjYWU3ODZiZDhlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTIzNiwx
NCArMjM2LDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAKICNpZiAh
UExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19i
cmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlRmxhdFJURkRdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVt
SW5kZXgsIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAg
ICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0
ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hh
bmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRX
YXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVh
ZFJURkQoKmJ1ZmZlcikgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpE
aWROb3RSZWFkVHlwZTsKICAgICB9CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihf
X2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVSVEZdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5k
ZXgsIGtVVFR5cGVSVEYsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlUlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBj
b250ZXh0KCkpOwogICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQog
ICAgICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRl
cm5hbGx5OwogICAgICAgICByZXR1cm4gYnVmZmVyICYmIHJlYWRlci5yZWFkUlRGKCpidWZmZXIp
ID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7
CkBAIC0yNTEsNyArMjUxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
ICNlbmRpZiAvLyAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAKICAgICBpZiAoW3N1cHBvcnRlZElt
YWdlVHlwZXMoKSBjb250YWluc09iamVjdDp0eXBlXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUlu
ZGV4LCB0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKGl0ZW1JbmRleCwgdHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsK
ICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAg
IHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAg
ICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZEltYWdlKGJ1ZmZlci5yZWxlYXNlTm9u
TnVsbCgpLCB0eXBlLCBpdGVtSW5mby5wcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKSA/IFJlYWRl
clJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0K
aW5kZXggMTY3Y2VmMDJkNzhkNzk0ZGVhYThlNWRkYWY0ZGQ2NmMzZDJjY2E0NS4uZDAyN2MxNzI1
YzllM2QxYjE0ZTkyNzdmZmJlOWM5MWY4MDAzYTQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC03OSwxMCArNzks
MTAgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0
eXBlcykKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHBhc3Rl
Ym9hcmRUeXBlc10pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHR5cGUpCiB7CiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZv
clBhc3RlYm9hcmRUeXBlOnR5cGVdKQotICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTMzOCw3ICszMzgsNyBAQCBpbnQ2
NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKQog
ICAgIHJldHVybiAwOwogfQogCi1pbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVy
Rm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKQoraW50NjRfdCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0
IFN0cmluZyYpCiB7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250
ZW50KQogCiAgICAgQVNTRVJUKGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQu
Y2xpZW50RGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gY29udGVu
dC5jbGllbnRUeXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRh
dGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOworICAgICAgICBbcmVw
cmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVu
dFR5cGVzW2ldXTsKIAogICAgIGlmIChjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsK
ICAgICAgICAgYXV0byB3ZWJBcmNoaXZlRGF0YSA9IGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZv
cm1hdC0+Y3JlYXRlTlNEYXRhKCk7CkBAIC00NzksNyArNDc5LDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiAgICAgfQogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluQXR0cmli
dXRlZFN0cmluZ0Zvcm1hdCkgewotICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRy
aWJ1dGVkU3RyaW5nID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNz
ZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0
YTpjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGVycm9yOm51bGxwdHJdKQorICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRy
aWJ1dGVkU3RyaW5nID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNz
ZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0
YTpjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51bGxwdHJdKQogICAgICAgICAgICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0OmF0dHJpYnV0ZWRTdHJp
bmddOwogICAgIH0KIApAQCAtNTAxLDcgKzUwMSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogCiAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICBj
dXN0b21EYXRhLnNldE9yaWdpbihjb250ZW50LmNvbnRlbnRPcmlnaW4pOwotICAgIFtyZXByZXNl
bnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpj
b2NvYVR5cGUoKSldOworICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3Vz
dG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSld
OwogCiAgICAgcmVnaXN0ZXJJdGVtVG9QYXN0ZWJvYXJkKHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIuZ2V0KCksIG1fcGFzdGVib2FyZC5nZXQoKSk7CiB9CkBAIC01MTQsMTQgKzUxNCwxNCBAQCB2
b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0
ZWJvYXJkSW1hZ2UpCiAgICAgYXV0byYgZGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRh
OwogICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwLCBzaXplID0gdHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmRhdGFbaV0tPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6dHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdp
c3RlciBhZGREYXRhOmRhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6dHlwZXNbaV1dOwogCiAgICAgaWYgKHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJj
ZURhdGEgJiYgIXBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlLmlzRW1wdHkoKSkgewog
ICAgICAgICBhdXRvIHV0aU9yTUlNRVR5cGUgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1F
VHlwZTsKICAgICAgICAgaWYgKCFpc0RlY2xhcmVkVVRJKHV0aU9yTUlNRVR5cGUpKQogICAgICAg
ICAgICAgdXRpT3JNSU1FVHlwZSA9IFVUSUZyb21NSU1FVHlwZSh1dGlPck1JTUVUeXBlKTsKIAot
ICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNy
ZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5y
ZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmltYWdlRGF0YS5nZXQoKSBmb3JUeXBl
OihOU1N0cmluZyAqKXV0aU9yTUlNRVR5cGVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9S
ZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TaXplOnBhc3RlYm9hcmRJbWFnZS5pbWFn
ZVNpemVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRTdWdnZXN0ZWRO
YW1lOnBhc3RlYm9hcmRJbWFnZS5zdWdnZXN0ZWROYW1lXTsKQEAgLTYwOSw3ICs2MDksNyBAQCBW
ZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFu
ZFdyaXRlKGNvbnN0IFN0cmluZyYgbwogI2VuZGlmIC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJF
U0VOVEFUSU9OX1NUWUxFX0FORF9URUFNX0RBVEEKIAogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6
ZWRDdXN0b21EYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEu
b3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRh
Lm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
dHlwZSk7CkBAIC02MzUsNyArNjM1LDcgQEAgc3RhdGljIFJldGFpblB0cjxXZWJJdGVtUHJvdmlk
ZXJSZWdpc3RyYXRpb25JbmZvTGlzdD4gY3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmEKICAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpX
ZWJQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGluZV07CiAKICAgICBpZiAoZGF0YS5oYXNT
YW1lT3JpZ2luQ3VzdG9tRGF0YSgpIHx8ICFkYXRhLm9yaWdpbigpLmlzRW1wdHkoKSkgewotICAg
ICAgICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRC
dWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNo
YXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpKSB7CiAgICAgICAgICAgICAvLyBXZSBzdGFzaCB0aGUgbGlzdCBvZiBz
dXBwbGllZCBwYXN0ZWJvYXJkIHR5cGVzIGluIHRlYW1EYXRhIGhlcmUgZm9yIGNvbXBhdGliaWxp
dHkgd2l0aCBkcmFnIGFuZCBkcm9wLgogICAgICAgICAgICAgLy8gU2luY2UgdGhlIGNvbnRlbnRz
IG9mIGl0ZW0gcHJvdmlkZXJzIGNhbm5vdCBiZSBsb2FkZWQgcHJpb3IgdG8gZHJvcCwgYnV0IHRo
ZSBwYXN0ZWJvYXJkIHR5cGVzIGFyZQogICAgICAgICAgICAgLy8gY29udGFpbmVkIHdpdGhpbiB0
aGUgY3VzdG9tIGRhdGEgYmxvYiBhbmQgd2UgbmVlZCB0byB2ZW5kIHRoZW0gdG8gdGhlIHBhZ2Ug
d2hlbiBmaXJpbmcgYGRyYWdvdmVyYApAQCAtNjcyLDggKzY3Miw4IEBAIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4odmFsdWUpOwot
ICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOworICAgICAgICBh
dXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4odmFsdWUp
OworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKilj
b2NvYVR5cGVdOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXI7CkBAIC03NDYsNyArNzQ2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJk
OjphbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAgcmV0dXJu
IHN0cmluZ3M7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6
cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKChOU0lu
dGVnZXIpaW5kZXggPCAwIHx8IChOU0ludGVnZXIpaW5kZXggPj0gW21fcGFzdGVib2FyZCBudW1i
ZXJPZkl0ZW1zXSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC03NTcsNyArNzU3LDcgQEAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJgogCiAgICAgaWYgKCFbcGFzdGVib2FyZEl0ZW0gY291bnRd
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOworICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0p
OwogfQogCiBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQppbmRleCA1NDQ2NTNjNDQwM2QyNjA0MGE1
NWQyM2U5MzY5MWJmZWRjYzkyYjQyLi4zY2Y0YTZlMjM0YThjNzI3OTE4ODgwOGU5ODBmOTYxMTMw
NDdmMWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0Nv
bnZlcnRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0Nv
bnZlcnRlcklPUy5tbQpAQCAtNjAsNyArNjAsNyBAQCAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJM
Q29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEgbAog
ICAgIEFTU0VSVF9VTlVTRUQobGVuZ3RoUmVjZWl2ZWQsIGxlbmd0aFJlY2VpdmVkID49IDApOwog
ICAgIEFTU0VSVChkYXRhLmxlbmd0aCA9PSBzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihsZW5ndGhS
ZWNlaXZlZCkpOwogICAgIGlmIChhdXRvIGRlbGVnYXRlID0gX2RlbGVnYXRlLmdldCgpKQotICAg
ICAgICBkZWxlZ2F0ZS0+ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhKS5nZXQoKSk7CisgICAgICAgIGRlbGVnYXRlLT5kZWxlZ2F0ZURpZFJl
Y2VpdmVEYXRhKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKS5n
ZXQoKSk7CiB9CiAKIC0gKHZvaWQpY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6KE5TVVJMQ29u
bmVjdGlvbiAqKWNvbm5lY3Rpb24KQEAgLTgyLDcgKzgyLDcgQEAgQGVuZAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVydGVyKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXImIHByb3ZpZGVy
KQotICAgIDogbV9wcmV2aWV3RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgIDog
bV9wcmV2aWV3RGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAg
ICAgLCBtX29yaWdpbmFsUmVzcG9uc2UgeyByZXNwb25zZSB9CiAgICAgLCBtX3Byb3ZpZGVyIHsg
cHJvdmlkZXIgfQogICAgICwgbV9wbGF0Zm9ybURlbGVnYXRlIHsgYWRvcHROUyhbW1dlYlByZXZp
ZXdDb252ZXJ0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZToqdGhpc10pIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNjc3Zjhj
YWRhYjU5MTIzZTFiNjJkMWJhYzJkMTkwOGJmNjc2YTJmOS4uNDgwODIxNzdlNTAwMTk2MGUwYzRi
MDhjNmE2NGI0MmYwYjY1ZTJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
KGNvbnN0IENvbG9yJiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVy
KGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIGF1dG8gd3Jh
cHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRo
Q29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10g
aW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgW3dyYXBwZXIg
c2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocGFzdGVi
b2FyZEltYWdlLnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKV07CiAg
ICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTI2Myw3ICsyNjMsNyBAQCBz
dGF0aWMgdm9pZCB3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNobWVudChOU0ZpbGVXcmFwcGVy
ICp3cmFwcGVyLCBjb25zdCBTdHJpbgogICAgIGlmICghUlRGRERhdGEpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG5ld0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFJURkRE
YXRhKS5wdHIoKSwgbGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIHBhc3RlYm9hcmROYW1lLCBj
b250ZXh0KTsKKyAgICBuZXdDaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0
ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoUlRGRERhdGEpLnB0cigpLCBsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgcGFz
dGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0
IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQpAQCAtMjg1LDcgKzI4NSw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAogICAgIG1fY2hhbmdlQ291
bnQgPSB3cml0ZVVSTEZvclR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJk
SW1hZ2UudXJsLCBjb250ZXh0KCkpOwotICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoaW1hZ2VEYXRhKS5wdHIoKSwgbGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCks
IG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW1hZ2VEYXRhKS5wdHIoKSwgbGVnYWN5VElG
RlBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgaWYg
KGF1dG8gYXJjaGl2ZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dCkgewogICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGFyY2hpdmVEYXRhLmdldCgpLCBXZWJB
cmNoaXZlUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIApAQCAtMzMw
LDcgKzMzMCw3IEBAIHN0YXRpYyBTdHJpbmcgcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4
KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzCiAgICAgcmV0dXJuIHN0cmF0ZWd5
LnN0cmluZ0ZvclR5cGUodHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCi1zdGF0
aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNv
bnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVi
b2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcm
IHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVn
eSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGlmIChpdGVtSW5kZXgpCiAgICAgICAgIHJldHVy
biBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoKml0ZW1JbmRleCwgdHlwZSwgcGFz
dGVib2FyZE5hbWUsIGNvbnRleHQpOwpAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgUGFzdGVib2Fy
ZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9s
aWN5IGFsbG93CiAgICAgCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lSVEZE
UGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVy
QXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRl
eCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKLSAgICAgICAgICAg
IGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5n
IGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRB
dHRyaWJ1dGVzOm5pbF0pKSB7CisgICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5n
ID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRl
czpuaWxdKSkgewogICAgICAgICAgICAgICAgIHRleHQudGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5n
IHN0cmluZ107CiAgICAgICAgICAgICAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkV3JpdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRXcml0ZXIubW0KaW5kZXggMzUzZDAwNmI5MGNiY2U2MDllNmRmZDM3YzI4MDgxMzFmMjE0Yjhk
YS4uODhkMDQwMjU4NDM3MDJlNGFhNGY1YTlhNTU2Yjg4MWM2ZTQwYzJmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KQEAgLTEyOCwxMSAr
MTI4LDExIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAg
W3Bhc3RlYm9hcmRJdGVtIHNldFN0cmluZzp3ZWJDb250ZW50LT5kYXRhSW5TdHJpbmdGb3JtYXQg
Zm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nXTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgd2ViQ29udGVudC0+Y2xpZW50VHlwZXMuc2l6ZSgpOyArK2kpCi0gICAgICAg
ICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250
ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOworICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVt
IHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVu
dC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKIAogICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YSBjdXN0b21EYXRhOwogICAgICAgICBjdXN0b21EYXRhLnNldE9yaWdpbih3ZWJDb250ZW50LT5j
b250ZW50T3JpZ2luKTsKLSAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0
YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VU
SVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUo
KSkpLmdldCgpXTsKKyAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5j
cmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKICAgICB9CiAKICAgICByZXR1cm4gcGFzdGVib2Fy
ZEl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1Q
YXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFz
dGVib2FyZE1hYy5tbQppbmRleCBkOWI3ZDI0ODAzOGMyZGI4YWFiMDkyY2I5MWZmYTU2ZjJjYjRj
ZTczLi4zNDdiYjE3NGUzY2UyZTkxMGY2M2IwYzJmZjNhZDZmZGE1ZTVjZTUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0K
QEAgLTY4LDEyICs2OCwxMiBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVj
dG9yPFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bh
c3RlYm9hcmQgdHlwZXNdKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgTlNEYXRhICpkYXRhID0g
W21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkYXRh
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkpOworICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkpOwogfQogCiBpbnQg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpudW1iZXJPZkZpbGVzKCkgY29uc3QKQEAgLTIxOCw3ICsyMTgs
NyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgbwogewogICAgIExpc3RIYXNoU2V0PFN0cmluZz4g
ZG9tUGFzdGVib2FyZFR5cGVzOwogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRh
ID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2Nv
YVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpm
cm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRh
KS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9t
U2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3Vz
dG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsK
ICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAg
ICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTI2Myw4ICsyNjMs
OCBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1
c3RvbURhdGEmIGRhdGEpCiAgICAgICAgIGlmIChwbGF0Zm9ybVR5cGUuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJl
ZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRv
IHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZl
ciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgeworICAgICAgICAg
ICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
KQogICAgICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0
KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8g
c3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CkBAIC0yNzQsNyArMjc0
LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRD
dXN0b21EYXRhJiBkYXRhKQogICAgIH0pOwogCiAgICAgaWYgKHNob3VsZFdyaXRlQ3VzdG9tRGF0
YSkgewotICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRl
U2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBzZXJpYWxp
emVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnNl
cmlhbGl6ZWRDdXN0b21EYXRhLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y29jb2FUeXBlKCkpXTsKICAgICB9CiAKQEAgLTM0MSwxMiArMzQxLDEyIEBAIGludDY0X3QgUGxh
dGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzKQogICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpjcmVhdGVOU0Fy
cmF5KHBhc3RlYm9hcmRUeXBlcykuZ2V0KCkgb3duZXI6bmlsXTsKIH0KIAotaW50NjRfdCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6
c2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFjYW5Xcml0ZVBhc3RlYm9hcmRUeXBl
KHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBCT09MIGRpZFdyaXRl
RGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOworICAgIEJPT0wgZGlkV3Jp
dGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlw
ZV07CiAgICAgaWYgKCFkaWRXcml0ZURhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVy
biBjaGFuZ2VDb3VudCgpOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBTdHJpbmcgd2ViU2Fm
ZU1JTUVUeXBlRm9yTW9kZXJuUGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlwZSBwbGF0Zm9y
bVR5CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBj
b25zdAorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6
cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAg
ICBOU1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRlbUF0SW5kZXgoaW5kZXgpOwogICAgIGlmICgh
aXRlbSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmCiAKICAgICBp
ZiAoTlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6dHlwZV0pIHsKICAgICAgICAgYXV0
byBuc0RhdGEgPSBhZG9wdE5TKGRhdGEuY29weSk7Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC01MDQsOCArNTA0LDggQEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVt
PiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAg
aWYgKCFwbGF0Zm9ybVR5cGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkg
ewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJl
ZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5n
T3JCdWZmZXIpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6Omdl
dDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW2l0ZW0gc2V0RGF0YTpw
bGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2Ug
aWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAg
ICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcml2YXRlLmgKaW5kZXggNjgxM2Q1ZGE3ZGNiMGZjMjU5ZjFiZDFlZDBh
NTRjMWExYTlmZDljZi4uNzk2NTU0ZjRjOTc2NDUxNDAxZTFhMTIzNzQ2ODcwNDBiMjRiMWNjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBNZWRpYVNh
bXBsZTsKIGNsYXNzIE1lZGlhU3RyZWFtUHJpdmF0ZTsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlOwogY2xhc3MgUGxhdGZvcm1BdWRpb0RhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgTWVkaWFSZWNvcmRlclByaXZh
dGVPcHRpb25zOwogCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBBdWRpb1ZpZGVvU2VsZWN0ZWRUcmFja3Mgc2VsZWN0VHJhY2tzKE1l
ZGlhU3RyZWFtUHJpdmF0ZSYpOwogCi0gICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGRvdWJsZSk+OworICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT47CiAgICAgdmlydHVhbCB2b2lkIGZldGNoRGF0YShG
ZXRjaERhdGFDYWxsYmFjayYmKSA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKCkgY29uc3QgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKaW5k
ZXggYzI1ZGY5MTU3NGE2NWJjNDFiZGI3MDY3OGRjNDc3MjQ4MzZkZDE0NS4uOWFlZThjMmVkZjFl
OTZhOTA4NzkwYzdiOWNiZjllNjJhY2I2MTc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVNb2NrLmNwcApAQCAtOTMsMTIgKzkzLDEyIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVN
b2NrOjpnZW5lcmF0ZU1vY2tDb3VudGVyU3RyaW5nKCkKIAogdm9pZCBNZWRpYVJlY29yZGVyUHJp
dmF0ZU1vY2s6OmZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fYnVmZmVyTG9jayB9OwogICAgICAgICBWZWN0b3I8dWludDhfdD4gdmFsdWUgeyBtX2J1ZmZl
ci5jaGFyYWN0ZXJzOCgpLCBtX2J1ZmZlci5sZW5ndGgoKSB9OwogICAgICAgICBtX2J1ZmZlci5j
bGVhcigpOwotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZh
bHVlKSk7CisgICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKHZhbHVlKSk7CiAgICAgfQogCiAgICAgLy8gRGVsYXkgY2FsbGluZyB0aGUgY29tcGxl
dGlvbiBoYW5kbGVyIGEgYml0IHRvIG1pbWljayByZWFsIHdyaXRlciBiZWhhdmlvci4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKaW5kZXgg
MjExZjc1ZWU3M2FmNjkxOWU3ZjRjOTk1OGUwY2QzNDgyNTMyZDA5Zi4uOWMyYzc5N2I4MTk1MTJk
OGZkNTc5MDE1ZGMzYjZlNDA1ZTNiYzYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgYXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIoTWVkaWFTYW1wbGUmKTsKICAgICB2b2lk
IGFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3Qg
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgc2l6ZV90KTsK
ICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKLSAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYpOworICAgIHZv
aWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYpOwogCiAgICAgdm9pZCBwYXVzZSgpOwogICAgIHZvaWQg
cmVzdW1lKCk7CkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZmluaXNo
ZWRGbHVzaGluZ1NhbXBsZXMoKTsKICAgICB2b2lkIGNvbXBsZXRlRmV0Y2hEYXRhKCk7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKIAogICAgIGJvb2wgbV9oYXNBdWRpbyB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX2hhc1ZpZGVvIHsgZmFsc2UgfTsKQEAgLTExNyw4ICsxMTcsOCBAQCBwcml2
YXRlOgogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsKIAogICAgIExvY2sg
bV9kYXRhTG9jazsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGEgV1RGX0dVQVJERURf
QllfTE9DSyhtX2RhdGFMb2NrKTsKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFM
b2NrKTsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOwogCiAgICAg
UmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVkaW9Gb3JtYXREZXNjcmlwdGlv
bjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBtX2F1
ZGlvQ29tcHJlc3NvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5tbQppbmRleCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNjZGY1ZTgzODRmMzZi
N2I1M2Y1Li44NDg0MTAwZWFjNWUxMTVlOWIwY2YwMTIwYmFiZjc4ZmIxYTEyNzRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBA
IC0xMzcsMTAgKzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogICAgIH0KIAot
ICAgIC8vIEF0IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3cml0aW5nIGFu
eSBkYXRhLCBzbyBpdCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlmeSBtX2RhdGEg
d2l0aG91dCBsb2NraW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAgICAgICBbbV93
cml0ZXJEZWxlZ2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChh
dXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5k
bGVyKSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBAIC00OTUsNyAr
NDkzLDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGluZygp
CiAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZldGNoRGF0
YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpm
ZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX2ZldGNoRGF0
YUNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CiAKQEAgLTUz
NywxOCArNTM1LDEzIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXBsZXRl
RmV0Y2hEYXRhKCkKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7
IG1fZGF0YUxvY2sgfTsKLSAgICBpZiAoIW1fZGF0YSkgewotICAgICAgICBtX2RhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBtX2RhdGEtPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIHNp
emUpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6dGFrZURhdGEoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0
YUxvY2sgfTsKLSAgICBhdXRvIGRhdGEgPSBXVEZNb3ZlKG1fZGF0YSk7Ci0gICAgcmV0dXJuIGRh
dGE7CisgICAgcmV0dXJuIG1fZGF0YS50YWtlKCk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OnBhdXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAppbmRleCA1MzU5MGI0YjA1ZWJlOWIzNzhj
ZDNjOTNlMWRkOGRjN2ZkNTYyODU5Li5jNWJhMzRlMDk0ZjJlMWI0ZDVhZTJlNDU5OGNmYWIwMjQx
OTdmM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JS
ZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC02MjAsNyArNjIwLDcgQEAgdm9pZCBCbG9iUmVzb3Vy
Y2VIYW5kbGU6Om5vdGlmeVJlc3BvbnNlT25FcnJvcigpCiB2b2lkIEJsb2JSZXNvdXJjZUhhbmRs
ZTo6bm90aWZ5UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGJ5dGVzUmVhZCkK
IHsKICAgICBpZiAoY2xpZW50KCkpCi0gICAgICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVy
KHRoaXMsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGJ5dGVzUmVhZCksIGJ5dGVzUmVhZCk7
CisgICAgICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKHRoaXMsIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBieXRlc1JlYWQpLCBieXRlc1JlYWQpOwogfQogCiB2b2lk
IEJsb2JSZXNvdXJjZUhhbmRsZTo6bm90aWZ5RmFpbChFcnJvciBlcnJvckNvZGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKaW5kZXggYTli
MjlkNTllOWFhM2I0NjU1NDE1YmQ4YmVmMDk4NGM1NDRiNzNmMC4uY2RlZTYwMzUyM2NkNjY5NDVm
NDI4ZjY5NDc4OTYwZjZmZDc0Yzc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRGF0YVVSTERlY29kZXIuaApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIG5hbWVzcGFjZSBEYXRhVVJMRGVjb2RlciB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggMzczMWExYWQ4NTRhNmM4M2Q2Y2Yw
NGU2ZTEyNjJlN2QwMDhmNzkwNS4uYzdkMThiZTFkNmFiYzNmMGNjYTM1MDZiNjVmYzNkOTgxNmQy
NGViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAK
QEAgLTQxMSwxMyArNDExLDEzIEBAIHVpbnQ2NF90IEZvcm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkg
Y29uc3QKICAgICByZXR1cm4gKm1fbGVuZ3RoSW5CeXRlczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGZv
ciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFZlY3Rvcjx1aW50OF90Pj4oZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZmxhdHRlbigpKTsKKyAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZs
YXR0ZW4oKSk7CiB9CiAKIFVSTCBGb3JtRGF0YTo6YXNCbG9iVVJMKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCA2ZWNkN2YxYjA3M2MzODMz
NDQzOTk1MTc0NTU4OTQxMGFiOGE2MTA4Li40NmUyNzM1MzNjMGZmNDQxNjQwNmQyNDUwZWUyMDg4
MWE1NWZjYmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5o
CkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JSZWdpc3Ry
eUltcGw7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIEZpbGU7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dEVuY29kaW5nOwog
CiBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKQEAgLTIyOSw3ICsyMjksNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4mIGVsZW1lbnRzKCkgY29uc3QgeyByZXR1
cm4gbV9lbGVtZW50czsgfQogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiYgYm91bmRhcnkoKSBjb25z
dCB7IHJldHVybiBtX2JvdW5kYXJ5OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAg
ICAgYm9vbCBhbHdheXNTdHJlYW0oKSBjb25zdCB7IHJldHVybiBtX2Fsd2F5c1N0cmVhbTsgfQog
ICAgIHZvaWQgc2V0QWx3YXlzU3RyZWFtKGJvb2wgYWx3YXlzU3RyZWFtKSB7IG1fYWx3YXlzU3Ry
ZWFtID0gYWx3YXlzU3RyZWFtOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggZmFmZGZlODdjODM3ZTYxNTdkMmYxM2U5YTdjYTAw
OTY5ZDUwYjFjNy4uNGJlYmNiNTA5OGQxNWMyOTY2ZWQ4YzdlZTEzNmFlM2EyYWU0YTIwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApA
QCAtODQsNyArODQsNyBAQCBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xh
c3MgU3luY2hyb25vdXNMb2FkZXJNZXNzYWdlUXVldWU7CiBjbGFzcyBUaW1lcjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcAppbmRleCA2ZTY1YmI4OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUyZTczNjZmLi5i
YThmZDRmZjRmMWU0MWM5YWQ0ZmE3NGE0MmJlNGUyYmQxMWFhODQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNw
cApAQCAtMzYsOSArMzYsOSBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6UmVzb3VyY2VIYW5kbGVD
bGllbnQoKSA9IGRlZmF1bHQ7CiAKIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5k
bGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJl
Y2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6
OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlk
UmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29k
ZWREYXRhTGVuZ3RoKTsKKyAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlQ2xpZW50LmgKaW5kZXggYjYzMzdkNTZjZThjZDliZWZmOWRmYmUxMTM2NjJiYzc3
NTZiNjUzNy4uYzRmMDU0ODVmMjg3MGIxMTZkYTdjNzYwZDNjMGZjZTk2ZWMyYjRhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJl
c291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IAogZW51bSBDYWNoZVN0b3JhZ2VQb2xpY3kgewogICAgIFN0b3JhZ2VBbGxvd2VkLApAQCAtNjYs
NyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNl
SGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcg
bG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50
IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgeyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYm
LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgCiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IFJlc291cmNlRXJyb3ImKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCmlu
ZGV4IGY3MDAzNTVkNTY4YjA0MmE2YWRmMTA3MGRiYjgzODE5MjUzNjk0YWEuLjg4ZGVkZmE0NWMz
ZjRjNDNhMzgxNTI4MGRhNWE0MWUyNjk3NWI3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEoQ0ZECiAg
ICAgICAgIAogICAgICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEoaGFu
ZGxlPSVwKSAoJXMpIiwgaGFuZGxlLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2Vp
dmVCdWZmZXIoaGFuZGxlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSwgb3JpZ2lu
YWxMZW5ndGgpOworICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKGhh
bmRsZSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpLCBvcmlnaW5h
bExlbmd0aCk7CiAgICAgfTsKICAgICAKICAgICBpZiAobV9tZXNzYWdlUXVldWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VH
ZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jhbmdl
UmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggMWZmMDY1MjE2ZmE2ODA4ODE5MzcxNGJjZjJiY2Rh
ZjY5NmYwMjQwNi4uMDA4ZTIyNmZmOTE5MDA0YjQ1MTQ4YTI0NzI2MTE2MTUwOTg5NjI3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtNDEsOCArNDEsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIERhdGEoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UpCi0gICAgICAg
IDogYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgICAgICwgb3JpZ2luYWxSZXNw
b25zZShyZXNwb25zZSkKKyAgICAgICAgOiBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQogICAg
ICAgICAsIHJlc291cmNlKCZyZXNvdXJjZSkgeyB9CiAKICAgICBzdHJ1Y3QgVGFza0RhdGEgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8VGFza0RhdGE+IHsKQEAgLTU1LDkgKzU0LDkgQEAgc3RydWN0
IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgICAgICBzaXplX3QgbmV4dEJ5dGVU
b0dpdmVCdWZmZXJJbmRleCB7IDAgfTsKICAgICAgICAgZW51bSBjbGFzcyBSZXNwb25zZVN0YXRl
IDogdWludDhfdCB7IE5vdFN5bnRoZXNpemVkWWV0LCBXYWl0aW5nRm9yU2Vzc2lvbiwgU2Vzc2lv
bkNhbGxlZENvbXBsZXRpb25IYW5kbGVyIH0gcmVzcG9uc2VTdGF0ZSB7IFJlc3BvbnNlU3RhdGU6
Ok5vdFN5bnRoZXNpemVkWWV0IH07CiAgICAgfTsKLSAgICAKKwogICAgIEhhc2hNYXA8UmV0YWlu
UHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4sIHN0ZDo6dW5pcXVlX3B0cjxUYXNrRGF0
YT4+IHRhc2tEYXRhOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG9yaWdpbmFsUmVzcG9u
c2U7CiAgICAgZW51bSBjbGFzcyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgOiBib29sIHsg
Tm8sIFllcyB9IHN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyB7IFN1Y2Nlc3NmdWxseUZpbmlz
aGVkTG9hZGluZzo6Tm8gfTsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNv
dXJjZTsKQEAgLTEwNiwyMiArMTA1LDIyIEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
cmVtb3ZlVGFzayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2spCiB2b2lkIFJhbmdl
UmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2
ZWQoV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBjb25zdCBQYXJzZWRSZXF1ZXN0
UmFuZ2UmIHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
LCBjb25zdCBEYXRhJiBkYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
YXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlcjsKLSAgICBhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXIt
PnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIGp1c3QgbWFr
ZSBhIHJhbmdlIHdpdGggYSAqIGFmdGVyIHRoZSAvIGJ1dCBBVkZvdW5kYXRpb24gZG9lc24ndCBh
Y2NlcHQgc3VjaCByYW5nZXMuCiAgICAgLy8gSW5zdGVhZCwgd2UganVzdCB3YWl0IHVudGlsIHRo
ZSBsb2FkIGhhcyBjb21wbGV0ZWQsIGF0IHdoaWNoIHRpbWUgd2Ugd2lsbCBrbm93IHRoZSBjb250
ZW50IGxlbmd0aCBmcm9tIHRoZSBidWZmZXIgbGVuZ3RoLgogICAgIGlmICghZXhwZWN0ZWRDb250
ZW50TGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSBkYXRh
LmJ1ZmZlci5zaXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUgPCByYW5nZS5iZWdpbikKICAgICAg
ICAgcmV0dXJuOwotICAgIAorCisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlci5nZXQoKTsK
ICAgICBhdXRvKiB0YXNrRGF0YSA9IGRhdGEudGFza0RhdGEuZ2V0KHRhc2spOwogICAgIGlmICgh
dGFza0RhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRvIGdpdmVCeXRlc1RvVGFz
ayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIHRhc2tEYXRhID0gV2Vha1B0ciB7
ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0geworCisgICAgYXV0
byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCBidWZm
ZXJTaXplLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vh
a1B0ciB7ICp0aGlzIH1dIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAg
ICAgaWYgKFt0YXNrIHN0YXRlXSAhPSBOU1VSTFNlc3Npb25UYXNrU3RhdGVSdW5uaW5nKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTMwLDcgKzEyOSw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdl
bmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3Jl
TlNVCiAgICAgICAgIGF1dG8mIHJhbmdlID0gdGFza0RhdGEtPnJhbmdlOwogICAgICAgICBhdXRv
JiBieXRlSW5kZXggPSB0YXNrRGF0YS0+bmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleDsKICAgICAg
ICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyLT5z
aXplKCkpCisgICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlclNpemUpCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlclZpZXcgPSBidWZmZXItPmdl
dFNvbWVEYXRhKGJ5dGVJbmRleCk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlclZpZXcuc2l6ZSgp
IHx8IGJ5dGVJbmRleCA+IHJhbmdlLmVuZCkKQEAgLTE3NSw3ICsxNzQsNyBAQCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
RnJvbURhdGEoY29ucwogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKGRh
dGEuc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nID09IERhdGE6OlN1Y2Nlc3NmdWxseUZpbmlz
aGVkTG9hZGluZzo6WWVzKQotICAgICAgICByZXR1cm4gZGF0YS5idWZmZXItPnNpemUoKTsKKyAg
ICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgc2hvdWxkIHJldHVybiBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gaW5zdGVhZCBvZiB1cyBkb2luZyB0aGlzIGNoZWNrIGhlcmUuCiAg
ICAgYXV0byBleHBlY3RlZENvbnRlbnRMZW5ndGggPSBkYXRhLm9yaWdpbmFsUmVzcG9uc2UuZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoKCk7CkBAIC0yNDQsNyArMjQzLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBmaW5hbAorICAgIHZv
aWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikgZmluYWwKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgICAgIGlmICghbV9nZW5lcmF0b3IpCkBAIC0yNTIsNyArMjUxLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgYXV0byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91
cmxTdHJpbmcpOwogICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGRhdGEtPmJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEt
PmJ1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdp
dmVSZXNwb25zZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNV
UkxTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24uaAppbmRleCA0MDQ4ODVhZTYzNzZmY2U2ODA0MGQyYTA1YzAwYmVjNDdm
ZTE2YWE4Li5jZTRjMjU0NWNkZTBmMmY0NmFjMzM4Zjk2YzQ5MDg4ZWI0NWQwOTI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24uaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBQbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIGNsYXNz
IFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDsKIGVudW0gY2xhc3MgU2hvdWxkQ29u
dGludWVQb2xpY3lDaGVjayA6IGJvb2w7CkBAIC0xNTgsNyArMTU4LDcgQEAgV0VCQ09SRV9FWFBP
UlQgQGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uIDogTlNPYmplY3QgewogLSAodm9pZCly
ZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJj
ZSBzZW50Qnl0ZXM6KHVuc2lnbmVkIGxvbmcgbG9uZylieXRlc1NlbnQgdG90YWxCeXRlc1RvQmVT
ZW50Oih1bnNpZ25lZCBsb25nIGxvbmcpdG90YWxCeXRlc1RvQmVTZW50OwogLSAodm9pZClyZXNv
dXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBy
ZWNlaXZlZFJlc3BvbnNlOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25z
ZSBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91
bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKEJPT0wpcmVz
b3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ug
c2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVz
cG9uc2U7Ci0tICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJilkYXRhOworLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKWRhdGE7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVkaXJlY3Q6KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlIHJlcXVlc3Q6KFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKWNvbXBsZXRpb25IYW5k
bGVyOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJl
c291cmNlKilyZXNvdXJjZSBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWRXaXRoRXJyb3I6KGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKWVycm9yOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFi
bGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBsb2FkRmFpbGVkV2l0
aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lv
bi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJM
U2Vzc2lvbi5tbQppbmRleCBlMDQwMTBhOTgxMWI0YzlhZTE0OTQ5OTg3MDFjYTE1NDg5ZjU3MTZj
Li44Yzg5ZDkzODY1NzkzM2ExZGEyOTAzMTk5MTU4NGM0ZGIyZmFhOWE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNV
UkxTZXNzaW9uLm1tCkBAIC02MDgsNyArNjA4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVkaXJl
Y3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25n
LCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAg
IHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0Zh
aWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJl
c291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKQEAgLTY1
Miw3ICs2NTIsNyBAQCBib29sIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6c2hv
dWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyYwogICAgIHJldHVybiBbbV90YXNr
IHJlc291cmNlOiZyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOnJlc3BvbnNlXTsKIH0KIAot
dm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
K3ZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX3Rhc2tMb2NrIH07CiAgICAgaWYg
KCFtX3Rhc2spCkBAIC05MTUsMTEgKzkxNSwxMSBAQCAtIChCT09MKXJlc291cmNlOihQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFJlcwog
ICAgIHJldHVybiByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRl
bnRSYW5nZSkuaXNFbXB0eSgpOwogfQogCi0tICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJilkYXRhCistICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291
cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
ZGF0YQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJj
ZSA9PSBfcmVzb3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246
W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7
Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1
dG8gbnNEYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
ICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6ZSgp
OwogICAgICAgICBpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9IChp
ZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbi5kZWxl
Z2F0ZTsKICAgICAgICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAK
aW5kZXggNjhjYWYwNTQ2YjYyY2Y0OTY0N2Q0YjljNGJlN2Y1OWViNWJiNWM5Yy4uNDAyNTc5MmVh
MmJmZmRkNjRlMDhlMzEyMDEyNTk3NzA5ZDRiMmFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC0xMTks
NyArMTE5LDcgQEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6cmVhZENhY2hlZERhdGEoUmVzb3VyY2VI
YW5kbGUqIGpvYikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGF1dG8gYnVmZmVy
U2l6ZSA9IGJ1ZmZlci5zaXplKCkpCi0gICAgICAgIGpvYi0+Z2V0SW50ZXJuYWwoKS0+Y2xpZW50
KCktPmRpZFJlY2VpdmVCdWZmZXIoam9iLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1
ZmZlcikpLCBidWZmZXJTaXplKTsKKyAgICAgICAgam9iLT5nZXRJbnRlcm5hbCgpLT5jbGllbnQo
KS0+ZGlkUmVjZWl2ZUJ1ZmZlcihqb2IsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGJ1ZmZlcikpLCBidWZmZXJTaXplKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9h
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcAppbmRleCBjMzZlMWY4ODc2NDMwNDYwY2U3NTBhM2I4YzY1OGM3MzRlY2IxNTA4Li4zNDk0
NDU5MjU0YWM5M2ZjMTljYjEyMTUwYTYxYmMyYmNlZDAyZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtMTAz
LDcgKzEwMyw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1
cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVzcG9uc2UmJiByCiB9CiAKIAotdm9pZCBDdXJsRG93
bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCit2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3Vy
bFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCmluZGV4IGEzYWEwY2Y1ZmNkMjk1NWJiN2Ix
NmIxMWExYTgxY2E3NGFlNjFjOGQuLmNkZTQ0NDU3NzVmNzQ0MjMzMDUzMGI2NWIxMzU3YmE2YmZk
OWJiODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybERvd25sb2FkLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8Q3VybFJl
cXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY3Vy
bERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBs
b25nIGxvbmcpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShD
dXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGN1cmxEaWRS
ZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShD
dXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1
cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZp
Y2F0ZUluZm8mJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBiYmRh
M2ZiZGE3NTgzZDk5MTkzMWRmZTE2OWY3YjNhOTEzM2U2ZGEyLi4xMjc1NGM4YjcwNWE0OGFkNzRm
MTg0NTQwMWI5ZjFiNWExNjk5ZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC0xMTks
MTIgKzExOSwxMiBAQCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlKEN1
cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmIGNsaWVudCwgY29ucwogCiB9CiAKLXZvaWQgQ3VybE11
bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
Cit2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RW5k
KQogICAgICAgICByZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3duIHNvIGlnbm9y
ZSBldmVyeXRoaW5nLgogCi0gICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZl
ci5zaXplKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAogICAgIHdoaWxlIChwcm9jZXNzQ29udGVudCgpKSB7
IH0KIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENv
bXBsZXRlKCkKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6RW5kKSB7CiAgICAgICAgIC8vIEl0
IHNlZW1zIHdlIGFyZSBzdGlsbCBub3QgYXQgdGhlIGVuZCBvZiB0aGUgcHJvY2Vzc2luZy4KICAg
ICAgICAgLy8gUHVzaCBvdXQgdGhlIHJlbWFpbmluZyBkYXRhLgotICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIu
ZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURh
dGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1f
YnVmZmVyKSkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZDsKICAgICB9CiAKQEAgLTIz
NCwxMyArMjM0LDEzIEBAIGJvb2wgQ3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQo
KQogCiAgICAgICAgIGlmICghY2hlY2tGb3JCb3VuZGFyeShib3VuZGFyeVN0YXJ0LCBsYXN0UGFy
dGlhbE1hdGNoKSAmJiBib3VuZGFyeVN0YXJ0ID09IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAv
LyBEaWQgbm90IGZpbmQgdGhlIGJvdW5kYXJ5IHN0YXJ0LCBhbGwgZGF0YSB1cCB0byB0aGUgbGFz
dFBhcnRpYWxNYXRjaCBpcyBvay4KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRh
RnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQ
YXJ0aWFsTWF0Y2gpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11
bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBs
YXN0UGFydGlhbE1hdGNoKSk7CiAgICAgICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgbGFzdFBh
cnRpYWxNYXRjaCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBUaGVyZSB3YXMgYSBib3VuZGFyeSBzdGFydCAob3IgZW5kIHdlJ2xsIGNoZWNrIHRo
YXQgbGF0ZXIpLCBwdXNoIG91dCBwYXJ0IG9mIHRoZSBkYXRhLgotICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIu
ZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRh
RnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0
YSgpLCBib3VuZGFyeVN0YXJ0KSk7CiAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBib3VuZGFy
eVN0YXJ0ICsgbV9ib3VuZGFyeS5sZW5ndGgoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6
RW5kQm91bmRhcnk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKaW5kZXggNWMwOGJjYzVlYjNl
NGJiY2MwMjliNDc2Nzg2OGY0M2UyZjk1YzM0MS4uOWExYTFiYmQxOTM4YTE0ZjY5ZmNjZWUzZjBm
ODliOTdhNGEyMTg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudDsKIGNs
YXNzIEN1cmxSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGUgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgQ3VybE11bHRp
cGFydEhhbmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiwgY29uc3QgU3RyaW5nJik7CiAg
ICAgfkN1cmxNdWx0aXBhcnRIYW5kbGUoKSB7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZSgpOwogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxN
dWx0aXBhcnRIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKaW5kZXggZmQxM2ZkMzgxMzE0M2NiMjY1
OWI4ZmQxZGIyNDQ0NzY1ZTk4YTU4MC4uYzgxMzg4NmE4ZDVjNWZhNmMxMmQxNDEzMzE5MTAxYWYy
NTAyYTJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCkBAIC0yOCwxMiArMjgs
MTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybFJlc3BvbnNlOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3Vy
bE11bHRpcGFydEhhbmRsZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZl
cj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIH5D
dXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBkMzViMGU4MzkxOTUx
ZDM4NjM0ZTk5MDkzYjY4NjU2MjRkOTk3OTUxLi42ZTFkYzgxNGNjYmU4ZGNiNThmNTIxMDg1N2U3
ZDVlNjlkNTFhMzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTM5Niw3ICszOTYsNyBAQCBzaXplX3QgQ3VybFJl
cXVlc3Q6OmRpZFJlY2VpdmVIZWFkZXIoU3RyaW5nJiYgaGVhZGVyKQogCiAvLyBjYWxsZWQgd2l0
aCBkYXRhIGFmdGVyIGFsbCBoZWFkZXJzIGhhdmUgYmVlbiBwcm9jZXNzZWQgdmlhIGhlYWRlckNh
bGxiYWNrCiAKLXNpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCitzaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoaXNDb21wbGV0ZWRP
ckNhbmNlbGxlZCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTQ0NCw3ICs0NDQsNyBAQCB2b2lk
IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8
U3RyaW5nPiYgaGVhZGVycykKICAgICBpbnZva2VEaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2Us
IEFjdGlvbjo6Tm9uZSk7CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhRnJv
bU11bHRpcGFydChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlcXVlc3Q6
OmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNzc3LDcgKzc3Nyw3IEBAIGNvbnN0IFN0cmluZyYgQ3VybFJlcXVlc3Q6Omdl
dERvd25sb2FkZWRGaWxlUGF0aCgpCiAgICAgcmV0dXJuIG1fZG93bmxvYWRGaWxlUGF0aDsKIH0K
IAotdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rv
d25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kb3dubG9hZE11dGV4IH07CkBA
IC03OTAsNyArNzkwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZp
bGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAgaWYg
KG1fZG93bmxvYWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUpCi0gICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFu
ZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6
d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9zZURv
d25sb2FkRmlsZSgpCkBAIC04MjYsNyArODI2LDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRS
ZWNlaXZlSGVhZGVyQ2FsbGJhY2soY2hhciogcHRyLCBzaXplX3QgYmxvY2tTaXplLCBzaXplX3QK
IAogc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUNhbGxiYWNrKGNoYXIqIHB0ciwg
c2l6ZV90IGJsb2NrU2l6ZSwgc2l6ZV90IG51bWJlck9mQmxvY2tzLCB2b2lkKiB1c2VyRGF0YSkK
IHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q3VybFJlcXVlc3QqPih1c2VyRGF0YSktPmRpZFJl
Y2VpdmVEYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHB0ciwgYmxvY2tTaXplICogbnVtYmVyT2ZC
bG9ja3MpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q3VybFJlcXVlc3QqPih1c2VyRGF0YSkt
PmRpZFJlY2VpdmVEYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShwdHIsIGJsb2Nr
U2l6ZSAqIG51bWJlck9mQmxvY2tzKSk7CiB9CiAKIGludCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2
ZURlYnVnSW5mb0NhbGxiYWNrKENVUkwqLCBjdXJsX2luZm90eXBlIHR5cGUsIGNoYXIqIGRhdGEs
IHNpemVfdCBzaXplLCB2b2lkKiB1c2VyRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKaW5kZXggNmJkOGE2YmZiYTM3NTJjZWRk
ZGJjNTAwOWVhZTgzYzRmMGVlZDY0MS4uM2M3Y2RkODgzZWI2MmJmZTkyY2YwNDQ1ZWQyOWJkMjZl
Y2UzZTkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0LmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQ3VybFJlcXVlc3RDbGllbnQ7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlOwogCiBjbGFzcyBD
dXJsUmVxdWVzdCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDdXJsUmVxdWVzdD4sIHB1
YmxpYyBDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCwgcHVibGljIEN1cmxNdWx0aXBhcnRIYW5k
bGVDbGllbnQgewpAQCAtMTIyLDkgKzEyMiw5IEBAIHByaXZhdGU6CiAgICAgQ1VSTCogc2V0dXBU
cmFuc2ZlcigpIG92ZXJyaWRlOwogICAgIHNpemVfdCB3aWxsU2VuZERhdGEoY2hhciosIHNpemVf
dCwgc2l6ZV90KTsKICAgICBzaXplX3QgZGlkUmVjZWl2ZUhlYWRlcihTdHJpbmcmJik7Ci0gICAg
c2l6ZV90IGRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHNpemVfdCBk
aWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBk
aWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJy
aWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxTaGFyZWRCdWZm
ZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENvbXBs
ZXRlVHJhbnNmZXIoQ1VSTGNvZGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsVHJhbnNm
ZXIoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmFsaXplVHJhbnNmZXIoKTsKQEAgLTE1Myw3ICsx
NTMsNyBAQCBwcml2YXRlOgogICAgIE5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTG9hZE1ldHJp
Y3MoKTsKIAogICAgIC8vIERvd25sb2FkCi0gICAgdm9pZCB3cml0ZURhdGFUb0Rvd25sb2FkRmls
ZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHdyaXRlRGF0YVRvRG93
bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2
b2lkIGNsb3NlRG93bmxvYWRGaWxlKCk7CiAgICAgdm9pZCBjbGVhbnVwRG93bmxvYWRGaWxlKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0Q2xpZW50LmgKaW5kZXggMDhjODZjN2Q0Njg0YmE2Zjc4ZDYxNmI2OGQwNjkwNGMz
N2E5NjY3Ny4uMzQ3OTgzMmY1NzZkNDEyOGFmYTUxYzgxNDI0Y2NmZDc0MWRmNmFlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0Q2xpZW50LmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgQ3VybFJlcXVlc3Q7CiBjbGFzcyBD
dXJsUmVzcG9uc2U7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBSZXNvdXJjZUVy
cm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgQ3VybFJlcXVlc3RDbGllbnQgewogcHVibGljOgpAQCAtNDMsNyArNDMsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0Jiwg
dW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0
ZXNUb0JlU2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNl
KEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY3Vy
bERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERp
ZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3QmLCBSZXNvdXJjZUVy
cm9yJiYsIENlcnRpZmljYXRlSW5mbyYmKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHAKaW5kZXggODE4ZDVhOTVlM2UxMjRkYzNhNzJmNzQzZTVjZDQ1M2Q3MTdl
MDEwZi4uMzA1ZDRlNWM5ZmMyNzA3NzU3ODdiMGY5YTkxOTc5YzA4ODg5YThhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRs
ZURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDIsMTUgKzE0MiwxNiBAQCB2b2lk
IEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxS
ZXF1ZXN0JiByZXF1ZXN0LCBDdQogICAgIH0pOwogfQogCi12b2lkIEN1cmxSZXNvdXJjZUhhbmRs
ZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQordm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERp
ZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlmIChjYW5j
ZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hlTWFu
YWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFu
ZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3Vv
dXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3VybENhY2hlTWFuYWdl
cjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNCdWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVy
KCZtX2hhbmRsZSwgV1RGTW92ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOwog
fQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUoQ3Vy
bFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGUuaAppbmRleCA2ZDU1ODY0NDUyZmQ0NmVlNzgwMGU5MzEyM2IxMjhiZGM2
NGNlNDg3Li5kYWYwYTU5YTRlNTg2ZDcxMTRhYmI0ZTVlZjljNTRmNmE4YmVmYzcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9u
ZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIGZpbmFs
OwogICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNw
b25zZSYmKSBmaW5hbDsKLSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0
JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1
ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
ICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmlj
cyYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0Jiwg
UmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgZmluYWw7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxl
Q3VybC5jcHAKaW5kZXggMGQ4NjI2MDEyOTQ5NjA3ZWE1OTI0OGFlZmE3YmMxYjU2MTJlZTQ2My4u
YWYxMTYyOGFmN2YyNGM4YmFkMzg3YjE3ZGI5ZmQyYzllYzM2YTMzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxl
Q3VybC5jcHAKQEAgLTU1OCw3ICs1NTgsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpoYW5kbGVE
YXRhVVJMKCkKICAgICAgICAgaWYgKGNsaWVudCgpKSB7CiAgICAgICAgICAgICBhdXRvIGRlY29k
ZWREYXRhID0gYmFzZTY0RGVjb2RlKGRhdGEsIEJhc2U2NERlY29kZU9wdGlvbnM6Oklnbm9yZVNw
YWNlc0FuZE5ld0xpbmVzKTsKICAgICAgICAgICAgIGlmIChkZWNvZGVkRGF0YSAmJiBkZWNvZGVk
RGF0YS0+c2l6ZSgpID4gMCkKLSAgICAgICAgICAgICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1
ZmZlcih0aGlzLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkZWNvZGVkRGF0YS0+ZGF0YSgpLCBkZWNv
ZGVkRGF0YS0+c2l6ZSgpKSwgb3JpZ2luYWxTaXplKTsKKyAgICAgICAgICAgICAgICBjbGllbnQo
KS0+ZGlkUmVjZWl2ZUJ1ZmZlcih0aGlzLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGVjb2RlZERhdGEtPmRhdGEoKSwgZGVjb2RlZERhdGEtPnNpemUoKSksIG9yaWdpbmFsU2l6ZSk7
CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBUZXh0RW5jb2RpbmcgZW5jb2Rpbmco
Y2hhcnNldCk7CkBAIC01NzEsNyArNTcxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6aGFuZGxl
RGF0YVVSTCgpCiAgICAgICAgIGlmIChjbGllbnQoKSkgewogICAgICAgICAgICAgYXV0byBlbmNv
ZGVkRGF0YSA9IGVuY29kaW5nLmVuY29kZShkYXRhLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpVUkxF
bmNvZGVkRW50aXRpZXMpOwogICAgICAgICAgICAgaWYgKGVuY29kZWREYXRhLnNpemUoKSkKLSAg
ICAgICAgICAgICAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcih0aGlzLCBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGVuY29kZWREYXRhKSksIG9yaWdpbmFsU2l6ZSk7CisgICAgICAg
ICAgICAgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIodGhpcywgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZW5jb2RlZERhdGEpKSwgb3JpZ2luYWxTaXplKTsKICAg
ICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IGJjNGRh
YWZiZjIxYTE1YzBlNmRkMWFjZDQ2MjJhZmE1NmI3YjhkNWQuLjFmNGExOTMxMzMxMmM1ZGQ2YTQ4
YWQ1MzM5ZGZkMmMzYjVkZWMyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAg
LTMxLDEyICszMSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZp
ZXdMb2FkZXJDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TGVnYWN5UHJldmlld0xvYWRlckNsaWVudCgp
ID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFy
ZWRCdWZmZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURl
bGVnYXRlLm1tCmluZGV4IDMxNWUwNjUxNTMwZGNkYjAyODAxNjU0Yjc1N2Q4MTQ3M2MyMGZkMzAu
LjM1ZDUyNjE1MTdlZjRmMDQzMzYxZDVkMTAwZmQ3OGQ2YzhkMDlmYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFz
T3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUu
bW0KQEAgLTMwMCw3ICszMDAsNyBAQCAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlv
biAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEgbAogICAgICAgICAv
LyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzkzCiAg
ICAgICAgIC8vIC0xIG1lYW5zIHdlIGRvIG5vdCBwcm92aWRlIGFueSBkYXRhIGFib3V0IHRyYW5z
ZmVyIHNpemUgdG8gaW5zcGVjdG9yIHNvIGl0IHdvdWxkIHVzZQogICAgICAgICAvLyBDb250ZW50
LUxlbmd0aCBoZWFkZXJzIG9yIGNvbnRlbnQgc2l6ZSB0byBzaG93IHRyYW5zZmVyIHNpemUuCi0g
ICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihtX2hhbmRsZSwgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIC0xKTsKKyAgICAgICAgbV9oYW5kbGUtPmNs
aWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKG1faGFuZGxlLCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5nZXQoKSksIC0xKTsKICAgICB9OwogCiAgICAgW3NlbGYgY2FsbEZ1bmN0
aW9uT25NYWluVGhyZWFkOldURk1vdmUod29yayldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCmluZGV4IDBmYjQ1MDA3MmZhMTA0
MjJmNmE5ZmU0MzJjMzgxZDNkMTk2MTNlNjAuLmQ2MzIyMjU2NGVmMDc0Y2RiY2Q3ZWUyMTNlYTk5
MTU3NDA3ZTM1NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1No
YXJlZEJ1ZmZlclBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9T
aGFyZWRCdWZmZXJQT1NJWC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFk
aW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtNjgsNyArNjgsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQogICAgIGlmICh0b3RhbEJ5dGVzUmVhZCAhPSBieXRlc1RvUmVhZCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShi
dWZmZXIpKTsKKyAgICByZXR1cm4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBjNTQ0NTM4NWE3N2FjMTJj
MDllZjI0ODY2NDczZDYyY2I2Nzk0NTVhLi40NTM2ODFiZGFiMmU0YTA1YTIxZmM2OGE5NDM3MDBl
MDZjOTk3YTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRX
aW4uY3BwCkBAIC0zNTYsNyArMzU2LDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJ
bkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogCiBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVD
b3VudGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIHZvaWQgcmVhZEZpbGVu
YW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgKytjb3VudDsgfQotICAgIHZvaWQgcmVhZEJ1ZmZl
cihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5h
bCB7ICsrY291bnQ7IH0KKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsIHsgKytjb3VudDsg
fQogCiAgICAgdW5zaWduZWQgY291bnQgeyAwIH07CiB9OwpAQCAtOTc0LDcgKzk3NCw3IEBAIHN0
YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gbWVtT2JqOwogfQogCi1zdGF0aWMgSEdM
T0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKK3N0
YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogZGF0YSkKIHsKICAgICBIR0xPQkFMIG1lbU9iaiA9IEdsb2JhbEFsbG9jKEdQVFIs
IGRhdGEtPnNpemUoKSk7CiAgICAgaWYgKCFtZW1PYmopIApAQCAtOTg2LDE1ICs5ODYsMTUgQEAg
c3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIq
IGRhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRhLT5kYXRhKCkp
Ci0gICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNp
emUoKSk7CisgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9yeShmaWxlQ29u
dGVudHMsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAog
ICAgIEdsb2JhbFVubG9jayhtZW1PYmopOwogCiAgICAgcmV0dXJuIG1lbU9iajsKIH0KIAotc3Rh
dGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJp
bmcmIGZpbGVOYW1lLCBTaGFyZWRCdWZmZXIqIGRhdGEpCitzdGF0aWMgSEdMT0JBTCBjcmVhdGVH
bG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKGZpbGVOYW1lLmlzRW1wdHkoKSB8
fCAhZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMDM4LDggKzEwMzgsOCBAQCBzdGF0aWMg
SEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYg
ZmlsZU5hbWUsIFNoYXJlZAogICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGlzIHRlbXAg
ZmlsZS4KICAgICAgICAgRFdPUkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1wV3JpdGVTdWNj
ZWVkZWQgPSBGQUxTRTsKLSAgICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgICAgIHRl
bXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEtPnNpemUoKSkK
KyAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRs
ZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVu
LCAwKTsKICAgICAgICAgQ2xvc2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAgICAgICBpZiAo
IXRlbXBXcml0ZVN1Y2NlZWRlZCkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTA3MSw3ICsx
MDcxLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsKQogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgIWNhY2hl
ZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSkgfHwgIWNhY2hlZElt
YWdlLT5pc0xvYWRlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTaGFyZWRCdWZmZXIqIGlt
YWdlQnVmZmVyID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJl
cigpKS0+ZGF0YSgpOworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0g
Y2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgp
OwogICAgIGlmICghaW1hZ2VCdWZmZXIgfHwgIWltYWdlQnVmZmVyLT5zaXplKCkpCiAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJl
ZEJ1ZmZlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVy
V2luLmNwcAppbmRleCA4OWNmNmEwYmI2NTg3MDgzNDU0MTQ2MDY2N2M1MTVhOGFhY2Y4NzIzLi4w
NzM5ZGRmNDRiZjAzYzVmMTk5MWVlMjY2YmRhMWQ1ZDVkNzM4ZDE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcApAQCAtMzMsNyArMzMsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
RnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQ
YXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NSw3ICs0NSw3IEBA
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdDsKKyAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcmVzdWx0OwogICAgIERXT1JEIGJ5dGVzVG9SZWFkID0gR2V0RmlsZVNp
emUoZmlsZUhhbmRsZSwgMCk7CiAgICAgRFdPUkQgbGFzdEVycm9yID0gR2V0TGFzdEVycm9yKCk7
CiAKQEAgLTUzLDcgKzUzLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpj
cmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGJ1ZmZlcihieXRlc1RvUmVhZCk7CiAgICAgICAgIERXT1JEIGJ5dGVzUmVh
ZDsKICAgICAgICAgaWYgKFJlYWRGaWxlKGZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ5dGVz
VG9SZWFkLCAmYnl0ZXNSZWFkLCAwKSAmJiBieXRlc1RvUmVhZCA9PSBieXRlc1JlYWQpCi0gICAg
ICAgICAgICByZXN1bHQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwor
ICAgICAgICAgICAgcmVzdWx0ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoYnVmZmVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIGZ1bGx5IHJlYWQgY29udGVudHMgb2YgZmlsZSAlcywgR2V0TGFzdEVycm9yKCkgPSAldSIs
IGZpbGVQYXRoLmFzY2lpKCkuZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7CiAgICAgfSBlbHNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDQxMWVkYmIzNTE3
Yjg0OGZhYzA2M2QxOWU4Y2Q5NWVjMDAzN2NkNjEuLjhhMjEwYzgwM2NlYmU1OWQxYmE1OTI4YjE2
OTcwODExZjVkYmEwNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rvcnku
Y3BwCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgTW9ja0NETUZhY3Rvcnk6OnN1cHBvcnRzS2V5U3lz
dGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVND
SUlDYXNlKGtleVN5c3RlbSwgIm9yZy53ZWJraXQubW9jayIpOwogfQogCi12b2lkIE1vY2tDRE1G
YWN0b3J5OjphZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxS
ZWY8U2hhcmVkQnVmZmVyPj4mJiBrZXlzKQordm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1Rv
U2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiYmIGtleXMpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nlc3Npb25zLmFk
ZChpZCwgV1RGTW92ZShrZXlzKSk7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQpAQCAt
NzQsNyArNzQsNyBAQCB2b2lkIE1vY2tDRE1GYWN0b3J5OjphZGRLZXlzVG9TZXNzaW9uV2l0aElE
KGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8U2hhcmVkQgogICAgICAgICB2YWx1ZS5hcHBl
bmQoV1RGTW92ZShrZXkpKTsKIH0KIAotVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBNb2NrQ0RN
RmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpCitW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBNb2NrQ0RNRmFjdG9yeTo6cmVtb3Zl
S2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpCiB7CiAgICAgYXV0byBpdCA9
IG1fc2Vzc2lvbnMuZmluZChpZCk7CiAgICAgaWYgKGl0ID09IG1fc2Vzc2lvbnMuZW5kKCkpCkBA
IC04Myw3ICs4Myw3IEBAIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6
OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpCiAgICAgcmV0dXJuIFdURk1v
dmUoaXQtPnZhbHVlKTsKIH0KIAotY29uc3QgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiogTW9j
a0NETUZhY3Rvcnk6OmtleXNGb3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0
Citjb25zdCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiogTW9ja0NETUZhY3Rv
cnk6OmtleXNGb3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0CiB7CiAgICAg
YXV0byBpdCA9IG1fc2Vzc2lvbnMuZmluZChpZCk7CiAgICAgaWYgKGl0ID09IG1fc2Vzc2lvbnMu
ZW5kKCkpCkBAIC0yMDIsNyArMjAyLDcgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c1Nlc3Npb25z
KCkgY29uc3QKICAgICByZXR1cm4gbV9mYWN0b3J5ICYmIG1fZmFjdG9yeS0+c3VwcG9ydHNTZXNz
aW9ucygpOwogfQogCi1ib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAor
Ym9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAg
ICAgaWYgKCFzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjExLDEyICsyMTEsMTMgQEAgYm9vbCBNb2NrQ0RN
OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3Qg
U2hhcmVkQnVmZmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
TW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBj
b25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVz
cG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5z
aXplKCkpKQorICAgIGF1dG8gYnVmZmVyID0gcmVzcG9uc2UubWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6
ZSgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNw
b25zZUFycmF5ID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxp
dCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcoYnVmZmVy
LT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmICghcmVzcG9u
c2VBcnJheS5jb250YWlucyhTdHJpbmcoInZhbGlkLXJlc3BvbnNlIl9zKSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMjY5LDkgKzI3MCw5IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlOjpp
bml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0
CiAgICAgY2FsbGJhY2soaW5pdGlhbGl6ZSgpKTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2U6
OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1
Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBT
dWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRl
U3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKKyAg
ICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKIAogICAgIGNhbGxiYWNrKGVx
dWFsSWdub3JpbmdBU0NJSUNhc2UoY2VydGlmaWNhdGVTdHJpbmdWaWV3LCAidmFsaWQiKSA/IFN1
Y2NlZWRlZCA6IEZhaWxlZCk7CiB9CkBAIC0yOTcsMjIgKzI5OCwyMiBAQCBNb2NrQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8TW9ja0NETUluc3RhbmNl
PiYmIGluc3RhbgogewogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNh
bGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCiB7CiAgICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2luc3RhbmNlID8gbV9p
bnN0YW5jZS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3RvcnkpIHsKLSAgICAg
ICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlBdG9tKCksIGZhbHNlLCBT
dWNjZXNzVmFsdWU6OkZhaWxlZCk7CisgICAgICAgIGNhbGxiYWNrKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpLCBlbXB0eUF0b20oKSwgZmFsc2UsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVk
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghZmFjdG9yeS0+c3VwcG9ydGVk
U2Vzc2lvblR5cGVzKCkuY29udGFpbnMobGljZW5zZVR5cGUpIHx8ICFmYWN0b3J5LT5zdXBwb3J0
ZWREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpKSB7Ci0gICAgICAgIGNhbGxiYWNr
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBTdWNjZXNzVmFs
dWU6OkZhaWxlZCk7CisgICAgICAgIGNhbGxiYWNrKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byBrZXlJRHMgPSBJbml0RGF0YVJlZ2lzdHJ5
OjpzaGFyZWQoKS5leHRyYWN0S2V5SURzKGluaXREYXRhVHlwZSwgaW5pdERhdGEpOwogICAgIGlm
ICgha2V5SURzIHx8IGtleUlEcy52YWx1ZSgpLmlzRW1wdHkoKSkgewotICAgICAgICBjYWxsYmFj
ayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgU3VjY2Vzc1Zh
bHVlOjpGYWlsZWQpOworICAgICAgICBjYWxsYmFjayhDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzIwLDEwICszMjEsMTAgQEAgdm9pZCBNb2NrQ0RN
SW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwg
Y29uc3QgQXRvbVMKICAgICBmYWN0b3J5LT5hZGRLZXlzVG9TZXNzaW9uV2l0aElEKHNlc3Npb25J
RCwgV1RGTW92ZShrZXlJRHMudmFsdWUoKSkpOwogCiAgICAgQ1N0cmluZyBsaWNlbnNlIHsgImxp
Y2Vuc2UiIH07Ci0gICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUobGljZW5zZS5kYXRh
KCksIGxpY2Vuc2UubGVuZ3RoKCkpLCBzZXNzaW9uSUQsIGZhbHNlLCBTdWNjZXNzVmFsdWU6OlN1
Y2NlZWRlZCk7CisgICAgY2FsbGJhY2soQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGxp
Y2Vuc2UuZGF0YSgpLCBsaWNlbnNlLmxlbmd0aCgpKSwgc2Vzc2lvbklELCBmYWxzZSwgU3VjY2Vz
c1ZhbHVlOjpTdWNjZWVkZWQpOwogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykK
K3ZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
IHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJl
c3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBNb2NrQ0RN
RmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBu
dWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewpAQCAtMzMxLDcgKzMzMiw3IEBAIHZvaWQgTW9j
a0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25J
RCwgTGljZW5zZVR5cGUsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3Ry
aW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+
c2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0g
U3RyaW5nKHJlc3BvbnNlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc3BvbnNlLT5zaXpl
KCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAocmVzcG9uc2VWZWN0b3IuY29udGFpbnMoU3RyaW5n
KCJpbnZhbGlkLWZvcm1hdCJfcykpKSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51
bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7
CkBAIC0zNjgsNyArMzY5LDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpsb2FkU2Vz
c2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW4KICAgICAvLyBGSVhN
RTogS2V5IHN0YXR1cyBhbmQgZXhwaXJhdGlvbiBoYW5kbGluZyBzaG91bGQgYmUgaW1wbGVtZW50
ZWQgb25jZSB0aGUgcmVsZXZhbnQgYWxnb3JpdGhtcyBhcmUgc3VwcG9ydGVkLgogCiAgICAgQ1N0
cmluZyBtZXNzYWdlRGF0YSB7ICJzZXNzaW9uIGxvYWRlZCIgfTsKLSAgICBNZXNzYWdlIG1lc3Nh
Z2UgeyBNZXNzYWdlVHlwZTo6TGljZW5zZVJlbmV3YWwsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1l
c3NhZ2VEYXRhLmRhdGEoKSwgbWVzc2FnZURhdGEubGVuZ3RoKCkpIH07CisgICAgTWVzc2FnZSBt
ZXNzYWdlIHsgTWVzc2FnZVR5cGU6OkxpY2Vuc2VSZW5ld2FsLCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUobWVzc2FnZURhdGEuZGF0YSgpLCBtZXNzYWdlRGF0YS5sZW5ndGgoKSkgfTsK
IAogICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKG1lc3Nh
Z2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCwgU2Vzc2lvbkxvYWRGYWlsdXJlOjpOb25lKTsK
IH0KQEAgLTQwMCw3ICs0MDEsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92
ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgaWQsIExpY2Vuc2VUeXBlLCBSZQogICAgICAgICBr
ZXlTdGF0dXNWZWN0b3IudW5jaGVja2VkQXBwZW5kKHsgV1RGTW92ZShrZXkpLCBLZXlTdGF0dXM6
OlJlbGVhc2VkIH0pOwogCiAgICAgQ1N0cmluZyBtZXNzYWdlIHsgInJlbW92ZS1tZXNzYWdlIiB9
OwotICAgIGNhbGxiYWNrKFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgU2hhcmVkQnVmZmVyOjpj
cmVhdGUobWVzc2FnZS5kYXRhKCksIG1lc3NhZ2UubGVuZ3RoKCkpLCBTdWNjZXNzVmFsdWU6OlN1
Y2NlZWRlZCk7CisgICAgY2FsbGJhY2soV1RGTW92ZShrZXlTdGF0dXNWZWN0b3IpLCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobWVzc2FnZS5kYXRhKCksIG1lc3NhZ2UubGVuZ3RoKCkp
LCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vz
c2lvbjo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKaW5kZXggZjVjZGE1MDVjZjJhMzNjMTA1ZjAyNWM5N2M5
MzUwYTk2ODY5OGUxZS4uZDk2YzE1NmVlNGQyNzkxYjhiMDk5OGRhZjk0MGVjNzUzNzgwN2JjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaApAQCAtNzcsOSArNzcsOSBA
QCBwdWJsaWM6CiAKICAgICBib29sIGhhc1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkg
eyByZXR1cm4gbV9zZXNzaW9ucy5jb250YWlucyhpZCk7IH0KICAgICB2b2lkIHJlbW92ZVNlc3Np
b25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgeyBtX3Nlc3Npb25zLnJlbW92ZShpZCk7IH0KLSAg
ICB2b2lkIGFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJl
ZjxTaGFyZWRCdWZmZXI+PiYmKTsKLSAgICBjb25zdCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
KiBrZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdDsKLSAgICBWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IHJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBT
dHJpbmcmIGlkKTsKKyAgICB2b2lkIGFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5n
JiBpZCwgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJik7CisgICAgY29uc3Qg
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4qIGtleXNGb3JTZXNzaW9uV2l0aElE
KGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0OworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+IHJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKTsK
IAogcHJpdmF0ZToKICAgICBNb2NrQ0RNRmFjdG9yeSgpOwpAQCAtOTYsNyArOTYsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9jYW5DcmVhdGVJbnN0YW5jZXMgeyB0cnVlIH07CiAgICAgYm9vbCBt
X3N1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9zdXBwb3J0
c1Nlc3Npb25zIHsgdHJ1ZSB9OwotICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVmPFNoYXJl
ZEJ1ZmZlcj4+PiBtX3Nlc3Npb25zOworICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gbV9zZXNzaW9uczsKIH07CiAKIGNsYXNzIE1vY2tDRE0g
OiBwdWJsaWMgQ0RNUHJpdmF0ZSB7CkBAIC0xMjEsOCArMTIxLDggQEAgcHJpdmF0ZToKICAgICB2
b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNl
cnRpZmljYXRlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNv
bnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwg
Y29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAg
ICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikg
Y29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklk
KGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiAgICAgV2Vha1B0cjxNb2NrQ0RNRmFjdG9y
eT4gbV9mYWN0b3J5OwpAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
SW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6TW9jazsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhD
b25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlz
dGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFj
ayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRp
ZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFs
OwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CiAgICAgUmVmUHRy
PENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAtMTU0LDggKzE1
NCw4IEBAIHB1YmxpYzoKICAgICBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8TW9ja0NE
TUluc3RhbmNlPiYmKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExp
Y2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExp
Y2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAg
dm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24o
Y29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBy
ZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lv
bkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlci5jcHAKaW5kZXggZmMxMjdiN2I2N2JlYTczNDQ2M2NkMmQ1YjA3NTZiNTliZWJh
NThhZS4uNWM5NGFjNzc0OWI3OWYzMGQwNzcwM2VlNWJhNDUxN2Y3NzcxYjgyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKQEAgLTExMCwxMCArMTEw
LDEwIEBAIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OmZpbmlzaGVkQWRkaW5nRGF0YSgpCiAgICAg
bWF5YmVEZXRlcm1pbmVTdGF0dXMoRGVjaXNpb25Qb2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGluZ0Rh
dGEpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBNb2NrQ29udGVudEZpbHRlcjo6cmVwbGFjZW1l
bnREYXRhKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBNb2NrQ29udGVudEZp
bHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRh
KCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5k
YXRhKCksIG1fcmVwbGFjZW1lbnREYXRhLnNpemUoKSk7CisgICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5kYXRhKCksIG1fcmVwbGFjZW1l
bnREYXRhLnNpemUoKSk7CiB9CiAKIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciBNb2NrQ29u
dGVudEZpbHRlcjo6dW5ibG9ja0hhbmRsZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlci5oCmluZGV4IDQxMWEzMDA5NDdiNTM5ZTI2YWE2YzY0YTAwOTMy
OTJlOWZmYmU2YjkuLjYzNWFjODRiZTc5Mzg0N2FhNTcyMTNkMDFmZmMxZTc0Zjc2Yjc1OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKQEAgLTQyLDcgKzQy
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3Zl
cnJpZGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgp
IGNvbnN0IG92ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCmluZGV4IDZkNDhi
ZDAyZDFjOTFmN2VlZDg2NGExNmNkNzU2YmIwNzdkNjU1MmEuLjFmMTk2YmYyOWJjODZiYzYyNmM0
YTlmYzVkOTIwMGM1Y2ZlZjNjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
U2NyaXB0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZl
ci5jcHAKQEAgLTM4LDIyICszOCwyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTY3JpcHRCdWZm
ZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBhdXRvIHV0Zjgg
PSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodXRm
OC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEo
KSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5
KCkKIHsKLSAgICByZXR1cm4gU2NyaXB0QnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9
OworICAgIHJldHVybiBTY3JpcHRCdWZmZXIgeyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSB9OwogfQogCi0KIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgbV9idWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRv
JiBzZWdtZW50KSB7CisgICAgbV9idWZmZXIuZ2V0KCktPmZvckVhY2hTZWdtZW50KFsmXShhdXRv
JiBzZWdtZW50KSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoc2Vn
bWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGJ1aWxk
ZXIudG9TdHJpbmcoKTsKQEAgLTYxLDE1ICs2MCwxMyBAQCBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0
b1N0cmluZygpIGNvbnN0CiAKIGJvb2wgU2NyaXB0QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVN
YXBwZWRTZWdtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXIt
Pmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNN
YXBwZWRGaWxlRGF0YSgpOworICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci5nZXQoKS0+
aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLmdldCgpLT5iZWdpbigpLT5zZWdtZW50LT5jb250
YWluc01hcHBlZEZpbGVEYXRhKCk7CiB9CiAKIHZvaWQgU2NyaXB0QnVmZmVyOjphcHBlbmQoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4
KCk7Ci0gICAgbV9idWZmZXItPmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7Cisg
ICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwgY29uc3QgU2NyaXB0QnVmZmVyJiBi
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKaW5kZXggYjM5ZDljMTMwMzMwMzEx
YzA0ZDdmMzc5NmI3MWEwNDMxMzRjNjY0Ni4uOGFhYmZhYzEyZjQ4MTZmOWJmNzQ3MWE3YjA2NjA2
Y2RjZGUwZmQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZm
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCkBAIC0zOCw3
ICszOCw3IEBAIGNsYXNzIFNjcmlwdEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgU2NyaXB0QnVmZmVy
KCkgPSBkZWZhdWx0OwogCi0gICAgU2NyaXB0QnVmZmVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQorICAgIFNjcmlwdEJ1ZmZlcihSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogICAgIHsKICAg
ICB9CkBAIC00OCwxNyArNDgsMTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyB0b1N0cmluZygp
IGNvbnN0OwotICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIuZ2V0KCk7IH0KKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQogCi0gICAgU2NyaXB0QnVmZmVyIGlzb2xh
dGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxT
aGFyZWRCdWZmZXI+KG1fYnVmZmVyLT5jb3B5KCkpIDogbnVsbHB0cik7IH0KKyAgICBTY3JpcHRC
dWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVy
ID8gUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLmNvcHkoKSkgOiBudWxs
cHRyKTsgfQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1f
YnVmZmVyOyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyIHx8
ICFtX2J1ZmZlci0+c2l6ZSgpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIuaXNFbXB0eSgpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5z
U2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdDsKICAgICB2b2lkIGFwcGVuZChjb25zdCBT
dHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsg
Ly8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgorICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KIH07
CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBTY3JpcHRCdWZm
ZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmNwcAppbmRleCA3NzQxNmVjMDdkN2I2OGIxMjhlMjk2MWVkYzVkNjQwZDA0ZDRiZDQ1Li5lNWYz
NDliNDgyNzQ2ZjllZGI5YzVmNjMxYmZhZDRiNDE5OThiYTA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC00NCw2ICs0NCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6V29ya2VyRm9udExv
YWRSZXF1ZXN0KFVSTCYmIHVybCwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3Bh
cXVlU291cmNlKQogICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQogICAgICwgbV9sb2FkZWRGcm9t
T3BhcXVlU291cmNlKGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCisgICAgLCBtX2RhdGEobWFrZVVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBAIC03OCw5ICs3OSwxMyBA
QCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29y
a2VyR2xvYmFsU2NvcGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9t
Rm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAg
Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEpOwotICAgICAgICBpZiAobV9kYXRh
KSB7Ci0gICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKCptX2RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3Ry
aW5nKCkpOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGlndW91
c0RhdGE7CisgICAgICAgIGlmIChtX2RhdGEtPmdldCgpKQorICAgICAgICAgICAgY29udGlndW91
c0RhdGEgPSBtX2RhdGEtPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29udmVy
dFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7CisgICAgICAgIGlmIChjb250
aWd1b3VzRGF0YSkgeworICAgICAgICAgICAgbV9kYXRhLT5hcHBlbmQoKmNvbnRpZ3VvdXNEYXRh
KTsKKyAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIo
KS50b1N0cmluZygpKTsKICAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRh
KQogICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CiAgICAgICAgIH0KQEAg
LTExNyw5ICsxMjIsNiBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiAgICAgaWYgKG1fZXJyb3JP
Y2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2RhdGEpCi0gICAgICAgIG1f
ZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICBtX2RhdGEtPmFwcGVuZChkYXRh
LCBkYXRhTGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9u
dExvYWRSZXF1ZXN0LmgKaW5kZXggYjlmY2ZiMWQ2ZmVhOGFkNWU3ODBiZGVlYmM1YzZlMDRhMWU4
NjNjNy4uYTY4Y2NjNmRmYTk1NTlkZDliYjUxMDI2ZjU4M2EwOWIxODQ3YTcyMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCkBAIC0zMCwxMyAr
MzAsMTQgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIKICNpbmNsdWRlICJU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVp
bGRlcjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogCiBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRm
b3JtRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGNvbnN0
IFVSTCYgdXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV91cmw7IH0KLSAgICBib29sIGlzUGVu
ZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX2lzTG9hZGluZyAmJiAhbV9lcnJvck9jY3Vy
cmVkICYmICFtX2RhdGE7IH0KKyAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuICFtX2lzTG9hZGluZyAmJiAhbV9lcnJvck9jY3VycmVkICYmIG1fZGF0YS0+aXNOdWxsKCk7
IH0KICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNMb2FkaW5n
OyB9CiAgICAgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9lcnJv
ck9jY3VycmVkOyB9CiAKQEAgLTc2LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBGb250TG9hZFJl
cXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsgbnVsbHB0ciB9OwogCiAgICAg
V2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBt
X2RhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1fZm9u
dEN1c3RvbVBsYXRmb3JtRGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4
IDhhOTEzOGQyM2IwZDVkZWM1M2QyOTkwZGVkNWRiNzc2MzU0ZTUyNDAuLmU0NWNmYTgwZTRiNDdh
YjFlZWUzY2E3YjY5ZGFkYjA1NGYwNmQ4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApA
QCAtMTIxLDcgKzEyMSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xpZW50
PiYmIGNsaWVudCwgRXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+LCBzCiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQot
ICAgICAgICAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEoU2hhcmVkQnVmZmVyOjpjcmVh
dGUoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSkpOworICAgICAgICAgICAgICAgIGNsaWVu
dC0+ZGlkUmVjZWl2ZURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNodW5rLT5k
YXRhKCksIGNodW5rLT5zaXplKCkpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBjbGllbnQtPmRpZEZpbmlzaCgpOwogICAgICAgICB9KTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBz
dGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVk
PFJlZjxGZXRjaFJlc3BvbnNlPiwgcwogICAgIGF1dG8gYm9keSA9IHJlc3BvbnNlLT5jb25zdW1l
Qm9keSgpOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChSZWY8Rm9ybURhdGE+JiBmb3Jt
RGF0YSkgewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChXVEZN
b3ZlKGZvcm1EYXRhKSk7Ci0gICAgfSwgWyZdIChSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7
CisgICAgfSwgWyZdIChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAg
ICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGNs
aWVudC0+ZGlkRmluaXNoKCk7CiAgICAgfSwgWyZdIChzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJGZXRjaC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlckZldGNoLmgKaW5kZXggZWIyNjZiNmMwN2U2NzNkOTE2NmNhY2U2YjMzOTE5ZDgwZWJi
ZjMxYy4uMDk3NTQzZTFiM2IzMGZmMzE0N2Q5MjMyYTU4Y2U0YTllNjJmM2U0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZl
dGNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlckZldGNoLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsK
IGNsYXNzIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBTZXJ2aWNlV29ya2VyRmV0
Y2ggewogY2xhc3MgQ2xpZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENsaWVudCwg
V1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4gewpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVE
YXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8Rm9ybURhdGE+JiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5pc2goKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKaW5kZXggODlhODc1Zjhh
ZmMwZDYyMzU1YWM2MjI5YTY0YzFjYTQzZDE4NTY1Mi4uMjIxNmIwOTM3NGZjMDI1MGUyODM5YjU2
MjY5MzdmZmIyNTU4ZDE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAtMTEyLDcgKzExMiw3IEBA
IFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKGNvbnN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZp
Y2VXb3JrZXIsICJTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlOiBGYWlsdXJlIHRvIHN0b3JlICVzLCBG
aWxlU3lzdGVtOjptYXBUb0ZpbGUoKSBmYWlsZWQiLCBzY3JpcHRQYXRoLnV0ZjgoKS5kYXRhKCkp
OwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KLSAgICByZXR1cm4gU2NyaXB0QnVmZmVyIHsg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtYXBwZWRGaWxlKSkgfTsKKyAgICByZXR1cm4g
U2NyaXB0QnVmZmVyIHsgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUobWFw
cGVkRmlsZSkpIH07CiB9CiAKIFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZl
KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29u
c3QgVVJMJiBzY3JpcHRVUkwpCkBAIC0xMjcsNyArMTI3LDggQEAgU2NyaXB0QnVmZmVyIFNXU2Ny
aXB0U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYg
cmVnaXMKICAgICB9CiAKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBkaXNhYmxlIGZpbGUg
bWFwcGluZyBpbiBtb3JlIGNhc2VzIHRvIGF2b2lkIGhhdmluZyB0b28gbWFueSBmaWxlIGRlc2Ny
aXB0b3JzIG9wZW4/Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBz
aG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxl
TWFwcGluZzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkg
PyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICByZXR1cm4gYnVm
ZmVyOwogfQogCiB2b2lkIFNXU2NyaXB0U3RvcmFnZTo6Y2xlYXIoY29uc3QgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKaW5kZXggYWI5OTYwM2VhNTNlMjQ2YjYzMzIxZmJkNDE0MWNjNWUyOWNlOTZi
NC4uZmNjYzJhOWVkMjBkNzQ3YzA5YzYxNmI0OThlNTMwZWY3OGE4ZTU2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xMTgsNiArMTE4LDcgQEAgWE1MSHR0cFJlcXVl
c3Q6OlhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAg
LCBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkKGZhbHNlKQogICAgICwgbV9yZWFkeVN0YXRlKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihVTlNFTlQpKQogICAgICwgbV9yZXNwb25zZVR5cGUoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcpKQorICAgICwgbV9iaW5hcnlS
ZXNwb25zZUJ1aWxkZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogICAg
ICwgbV9wcm9ncmVzc0V2ZW50VGhyb3R0bGUoKnRoaXMpCiAgICAgLCBtX3RpbWVvdXRUaW1lcigq
dGhpcywgJlhNTEh0dHBSZXF1ZXN0Ojp0aW1lb3V0VGltZXJGaXJlZCkKIHsKQEAgLTIwNyw4ICsy
MDgsOCBAQCBSZWY8QmxvYj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYigpCiAK
ICAgICAvLyBGSVhNRTogV2UganVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIE5ldHdvcmtQcm9j
ZXNzLCBhbmQgYXJlIHNlbmRpbmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmljaWVudC4KICAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBpZiAobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0g
ICAgICAgIGRhdGEgPSBzdGQ6OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLCBudWxs
cHRyKS0+ZXh0cmFjdERhdGEoKTsKKyAgICBpZiAoIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5p
c051bGwoKSkKKyAgICAgICAgZGF0YSA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50YWtlKCkt
PmV4dHJhY3REYXRhKCk7CiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRDb250ZW50VHlwZSA9IEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZShyZXNwb25zZU1JTUVUeXBlKEZpbmFsTUlNRVR5cGU6Olll
cykpOyAvLyByZXNwb25zZU1JTUVUeXBlIGRlZmF1bHRzIHRvIHRleHQveG1sIHdoaWNoIG1heSBi
ZSBpbmNvcnJlY3QuCiAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIFdURk1vdmUoZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50VHlwZSk7CiB9CkBAIC0yMTgs
OCArMjE5LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVz
cG9uc2VBcnJheUJ1ZmZlcigpCiAgICAgQVNTRVJUKHJlc3BvbnNlVHlwZSgpID09IFJlc3BvbnNl
VHlwZTo6QXJyYXlidWZmZXIpOwogICAgIEFTU0VSVChkb25lV2l0aG91dEVycm9ycygpKTsKIAot
ICAgIGF1dG8gcmVzdWx0ID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPyBtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjpjcmVhdGUo
bnVsbHB0ciwgMCk7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOworICAg
IGF1dG8gcmVzdWx0ID0gIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5pc051bGwoKSA/IG1fYmlu
YXJ5UmVzcG9uc2VCdWlsZGVyLT50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAg
LTc0MSw3ICs3NDEsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVy
cygpCiAgICAgbV9yZXNwb25zZUVuY29kaW5nID0gU3RyaW5nKCk7CiAgICAgbV9jcmVhdGVkRG9j
dW1lbnQgPSBmYWxzZTsKICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBudWxscHRyOwotICAgIG1f
YmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBtX2JpbmFyeVJlc3BvbnNlQnVp
bGRlci0+cmVzZXQoKTsKICAgICBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkID0gZmFsc2U7CiB9CiAK
QEAgLTEwNjUsOCArMTA2NSw2IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCiAgICAgICAgIG1fcmVzcG9uc2VCdWlsZGVy
LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsKICAgICBlbHNlIHsKICAgICAg
ICAgLy8gQnVmZmVyIGJpbmFyeSBkYXRhLgotICAgICAgICBpZiAoIW1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyKQotICAgICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOwogICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+YXBwZW5kKGRh
dGEsIGxlbik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDcy
ODk0YWY2Y2M0N2RiYWU1ZTc1YzNhODA3OTA5ZWYyODRmNmQ1OTcuLjE2MmNhOTVhZWI3NTQ0ODli
ZDZjZDhjZGM1MDg2MmM4NDc3N2JhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5o
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgog
I2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdEV2ZW50
VGFyZ2V0LmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUu
aCIKICNpbmNsdWRlIDx2YXJpYW50PgpAQCAtNDUsNyArNDYsNyBAQCBjbGFzcyBCbG9iOwogY2xh
c3MgRG9jdW1lbnQ7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIGNsYXNzIFRl
eHRSZXNvdXJjZURlY29kZXI7CiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyOwogY2xhc3MgVVJMU2Vh
cmNoUGFyYW1zOwpAQCAtMjM3LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8RG9j
dW1lbnQ+IG1fcmVzcG9uc2VEb2N1bWVudDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
YmluYXJ5UmVzcG9uc2VCdWlsZGVyOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVy
PiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKIAogICAgIFN0cmluZ0J1aWxkZXIgbV9yZXNwb25z
ZUJ1aWxkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29y
TGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3Bw
CmluZGV4IGRmOGFiZTQyNmUwNjcxNzFhZmZmOTBlMDMzMzg1MDU5ZjMzMTAzNjQuLmEzMGY1MTQx
YThlMTRmMjc4ZjViOTEzMTczM2QyNjE0NjI4MTJjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1s
L1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB4bWxE
b2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxDaGFyKiB1cmksCiAgICAgICAgIFJlc291cmNl
RXJyb3IgZXJyb3I7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAKLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICAgICAgYm9vbCByZXF1ZXN0QWxsb3dlZCA9IGdsb2Jh
bENhY2hlZFJlc291cmNlTG9hZGVyLT5mcmFtZSgpICYmIGdsb2JhbENhY2hlZFJlc291cmNlTG9h
ZGVyLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKICAgICAg
ICAgaWYgKHJlcXVlc3RBbGxvd2VkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggYThjM2UxOGU0N2FlY2Fk
MGEwMjJhMDg0YzQ5YTIxZjZjNzE0YzM5Mi4uZGIyNmJiMzlkZDVhZjk5ZjMxZTY2MmMzNGNlZDNk
YmY5Njc3ZjVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0YXRpYyB2b2lk
KiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1cmkpCiAgICAgICAgIHJldHVybiAmZ2xvYmFsRGVzY3Jp
cHRvcjsKIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsK
IAogICAgIHsKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcApp
bmRleCA1NzMwNjdlM2RkMDUwZmViN2M1NzlkMDAxMDJlZTlmNjA0NWI1MzEzLi4zMWMyZDc2ZjJl
ZTFiOWQyNDliMDAxYjdlZmY4OTJlYzJhNzQ1NmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCkBAIC02
MSw3ICs2MSw3IEBAIFJlbW90ZUNETUluc3RhbmNlUHJveHk6On5SZW1vdGVDRE1JbnN0YW5jZVBy
b3h5KCkKICAgICBtX2luc3RhbmNlLT5jbGVhckNsaWVudCgpOwogfQogCi12b2lkIFJlbW90ZUNE
TUluc3RhbmNlUHJveHk6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29u
c3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQordm9pZCBSZW1v
dGVDRE1JbnN0YW5jZVByb3h5Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVk
KGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERh
dGEpCiB7CiAgICAgaWYgKCFtX2NkbSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKaW5k
ZXggOGU3M2QzZDlhNjRiOThiZmMwMDkzNmNkNDdjNGMyNWE5Mjc5ZjJjOC4uMDJjNWNkMzdhZTU0
ODAyZjZkMGM4ZGNjY2IwYmE4MGNmMzM4OGMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCkBAIC02Niw3ICs2
Niw3IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRyPFJlbW90
ZUNETVByb3h5PiYmLCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+JiYsIFVuaXF1ZVJlZjxSZW1v
dGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+JiYsIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmll
cik7CiAKICAgICAvLyBDRE1JbnN0YW5jZUNsaWVudAotICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0
aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRh
UmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpIGZpbmFsOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKaW5kZXggZTU3NjZjMjMzNGNmZDM4OTMxMGNk
NGIyMTcyM2NhYmEzNzQyZmM3Yy4uZGU4MjczYjljZjUwMGE0ZDY2YWExNDRlZGUwMjAxZWVmMWVk
ODYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCkBAIC03MCw3ICs3MCw3IEBA
IHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlIHR5cGUsIEF0b21TdHJpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1f
c2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0YS5idWZm
ZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbild
IChSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBi
b29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1Zh
bHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uLT5yZXF1ZXN0TGljZW5zZSh0
eXBlLCBpbml0RGF0YVR5cGUsIGluaXREYXRhLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIFtj
b21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZp
ZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkg
bXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShtZXNzYWdlKSwgc2Vzc2lvbklk
LCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9u
OjpTdWNjZWVkZWQpOwogICAgIH0pOwogfQpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgQ2xvc2VTCiAKIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlbW92
ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBS
ZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYgY29tcGxldGlvbikKIHsKLSAgICBtX3Nlc3Npb24t
PnJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSwgW2NvbXBsZXRpb24gPSBXVEZNb3Zl
KGNvbXBsZXRpb24pXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlT
dGF0dXNlcywgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBleHBpcmVkU2Vzc2lv
bnNEYXRhLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFi
bGUgeworICAgIG1fc2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlLCBb
Y29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChDRE1JbnN0YW5jZVNlc3Npb246Oktl
eVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4mJiBleHBpcmVkU2Vzc2lvbnNEYXRhLCBDRE1JbnN0YW5jZVNlc3Npb246
OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICBzdGQ6Om9wdGlvbmFs
PElQQzo6U2hhcmVkQnVmZmVyQ29weT4gZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlOwogICAg
ICAgICBpZiAoZXhwaXJlZFNlc3Npb25zRGF0YSkKICAgICAgICAgICAgIGV4cGlyZWRTZXNzaW9u
RGF0YVJlZmVyZW5jZSA9IElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKCpleHBpcmVkU2Vz
c2lvbnNEYXRhKSk7CkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTo6dXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHUK
ICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpVcGRhdGVLZXlTdGF0dXNlcyhXVEZNb3ZlKGtl
eVN0YXR1c2VzKSksIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIHR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgbWVzc2FnZSkKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNl
bmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFtX2NkbSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkuaAppbmRleCA4YTYxZjlkNWZhYmM4NDg2YTdhMGU4NjBmNGM2MzEy
YzBiNDQ1NTE0Li5mZTczMDk3MTMxZTBiYjIwYTUwMDFlMTUwMTYwMmQ2NTE4NmIzMDkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaApAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogCiAg
ICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50CiAgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNl
cyhLZXlTdGF0dXNWZWN0b3ImJikgZmluYWw7Ci0gICAgdm9pZCBzZW5kTWVzc2FnZShXZWJDb3Jl
OjpDRE1NZXNzYWdlVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBm
aW5hbDsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKICAgICB2
b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUGxhdGZvcm1E
aXNwbGF5SUQgZGlzcGxheUlEKCkgZmluYWwgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKaW5k
ZXggOWFiMzU3NWY0YzNiNTU5NTU1YjliODdiMjMzNzFiMWIxYTY2ZGMxNy4uZjdjYjZhNjNlYjkz
M2FiZDRkNDUzYTIyYWIyOTRmMTMwMzIzMmIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCkBAIC02MywxMiArNjMsMTIgQEAgUmVt
b3RlQ0RNUHJveHk6OlJlbW90ZUNETVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5
PiYmIGZhY3RvcnksIHN0ZDo6dW4KIAogUmVtb3RlQ0RNUHJveHk6On5SZW1vdGVDRE1Qcm94eSgp
ID0gZGVmYXVsdDsKIAotYm9vbCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0RGF0YShjb25z
dCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCitib29sIFJlbW90
ZUNETVByb3h5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+
c3VwcG9ydHNJbml0RGF0YSh0eXBlLCBkYXRhKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
UmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNw
b25zZSkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2Fu
aXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKIHsK
ICAgICByZXR1cm4gbV9wcml2YXRlLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKaW5kZXgg
NjkyNGU3NGUzZjUwMTFiZTIxNWJlNGJkOTZiMjM0ODI2NDcwZjQyMy4uM2I2NmM3NzU3ODcwNjll
OTc2ZWUwNjRmOTZmZjA3YzBmNzEyYTkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBlbnVtIGNsYXNzIENETVJlcXVpcmVt
ZW50IDogdWludDhfdDsKIGVudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgOiB1aW50OF90Owogc3Ry
dWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb247CkBAIC01OCw4ICs1OCw4IEBAIHB1YmxpYzoK
IAogICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eSogZmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZmFjdG9yeS5nZXQoKTsgfQogCi0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYgcmVzcG9uc2UpOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiwgY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKTsKICAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQp
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAKaW5kZXggNzMyYTE5NDkyYWQ3
NGZkNTc4ZWRiNjM5MWQ1OThmOWUwMDAxZDg4OS4uNWMyZWYyZWJkNjg0NjRkZTEwM2Q0NGMyYWQ5
Y2MxZmM1ZmUwY2EyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCkBAIC00Nyw3ICs0Nyw3
IEBAIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94
eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAKIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
UHJveHk6OmNyZWF0ZURlY29kZXIoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8
SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
YXV0byBpbWFnZURlY29kZXIgPSBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSwgbWltZVR5cGUsIEFscGhhT3B0
aW9uOjpQcmVtdWx0aXBsaWVkLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6SWdub3JlZCk7
CisgICAgYXV0byBpbWFnZURlY29kZXIgPSBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSksIG1p
bWVUeXBlLCBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb246Oklnbm9yZWQpOwogCiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlm
aWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwogICAgIGlmICghaW1hZ2VEZWNvZGVyKQpAQCAt
MTAyLDcgKzEwMiw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OnNldERhdGEo
SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zCiAgICAgfQogCiAgICAgYXV0
byBpbWFnZURlY29kZXIgPSBtX2ltYWdlRGVjb2RlcnMuZ2V0KGlkZW50aWZpZXIpOwotICAgIGlt
YWdlRGVjb2Rlci0+c2V0RGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIGltYWdlRGVjb2Rlci0+c2V0RGF0YShD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSwg
YWxsRGF0YVJlY2VpdmVkKTsKIAogICAgIGF1dG8gZnJhbWVDb3VudCA9IGltYWdlRGVjb2Rlci0+
ZnJhbWVDb3VudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCmluZGV4IGUyY2QwNWQ3Y2M3NGYyMGVjNjlmYWRmZTNl
ZTA4NTc1OTJhZDg3OWIuLmRlOGY2ZGY1NWE2ZTFmYThiZTk2NmY5NDFlMDdmZTJmNWM1MDIxYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1Qcm94eS5oCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkuY3BwCmluZGV4IDkzYjJmZjc0MWIxZjgzNjliMjA1ODRlNDk3ZTRhMDIxYjljY2Y1
NzguLjIxNDEzNzlkNmE1OWVhZjIyODUxNGIxODdiNTY5ZDA0NzAzYzExOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHkuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PElQQzo6U2hhcmVkQnVmZmVyQ29weT4gY29udmVydFRvT3B0aW9uYWxEYXRhUmVmZXJlbmNlKFQg
YXJyCiB7CiAgICAgaWYgKCFhcnJheSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICByZXR1cm4geyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoY29uc3QgY2hhciopYXJyYXktPmRhdGEo
KSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkgfTsKKyAgICByZXR1cm4geyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKGNvbnN0IGNoYXIqKWFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVu
Z3RoKCkpIH07CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZW5lcmF0
ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
JiYgaW5pdERhdGEsIEdlbmVyYXRlS2V5Q2FsbGJhY2smJiBjb21wbGV0aW9uKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eS5oCmluZGV4IGYxNGM2MjdmNjU5M2UxYTg3OGQwZjQ1OTkyYjNjNDFiMjIyYzdm
MDAuLjE1NDZiZGZkZmRjZjA5MTA4Nzg5NDRmMzQwNzk2N2E3YWIzOGJmODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5LmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIExlZ2FjeUNETTsKIGNsYXNzIExlZ2FjeUNETVNlc3Npb247Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgSVBDIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlLmNwcAppbmRleCBjNDVlNTI1NWQ2N2I1MmM3YWUxMDQ0OTk4OGNlMDE5MGM3ZmZiNTM4
Li42MTdmNDc2ODk1NjQyZGVjMjMyNTRiNTQwZWU4MTkxMWFjNGEyZGY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3Bw
CkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQodWlu
dDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlCiAgICAgICAgIG1fY2xp
ZW50LT5kYXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQog
Ci12b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChSZWY8U2hhcmVkQnVmZmVy
PiYmIGRhdGEpCit2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGlmIChtX2NsaWVudCkKICAgICAg
ICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaApp
bmRleCBkMTNkMjVmNjVmMDIyNGE2Yzc2N2Y2OWE0ZDQxOWNkMDUzYmI3OTVkLi41YjdhN2UyYTc0
MjQ0MzJkODZjYjI4YTFiZTcxNzE4YTE2NzM3NWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKQEAgLTM0LDcgKzM0LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3Bv
bnNlUmVjZWl2ZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYp
OwogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIGRhdGFTZW50KHVpbnQ2
NF90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggN2U1NzJiM2E3
NGEyMDI3ZTc0Y2FhNzY3MmU1MmRhMGFmODM0MjA3Mi4uZWJkZTc1MzBlYzg2ZmY2YzQxYmVjZDRl
NWVjNDI4YTNjOGFmODBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3LDggQEAgdm9p
ZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1v
dGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV93cml0ZXItPmZldGNoRGF0YShbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1dG8g
dGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBhdXRvKiBwb2ludGVyID0gZGF0YSA/IGRhdGEt
PmRhdGEoKSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/IGRhdGEtPm1h
a2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4o
KTsKKyAgICAgICAgYXV0byogcG9pbnRlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVs
bHB0cjsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpEYXRhUmVmZXJlbmNlIHsgcG9p
bnRlciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAgfSwgdGltZUNvZGUpOwogICAgIH0pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGlu
Z0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5k
aW5nRG93bmxvYWQuaAppbmRleCA1MmNjNWRhMTIxYTJmYjU5ZDhjZjA1OTNiNjg1MDlmZDY1NWMw
Y2RjLi43MWZkMDIyMjliYmIxYzU3MzI2ZmRmY2ZlMjZjMTFmNzYxYWJjZjcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93
bmxvYWQuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9B
c2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsb3dlZFRv
QXNrVXNlckZvckNyZWRlbnRpYWxzOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1
ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJl
c3BvbnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CisgICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlk
ZSB7IH07CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCAzZjM5ZWIzMmYx
YWE4MDc2Nzg1ZGE3OWVlMTFkYWQ4ZjBjMzI2Yjc5Li5kODkyMGU5ODc2NGZkOWI2NGI5Y2RkYzYw
YTFkODRkNjE5YjJkNDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCkBAIC0xMTksNyArMTE5
LDcgQEAgdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYKICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xp
Y3lBY3Rpb246OlVzZSk7CiB9CiAKLXZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpk
aWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKQordm9pZCBOZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKQogewogICAgIENPUlNfQ0hFQ0tFUl9SRUxFQVNFX0xPRygiZGlk
UmVjZWl2ZURhdGEiKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCmluZGV4IGJiYjE0NjJhMzE2MWUy
ZmNlOWVhNTc4NDRiMTliOTNlNjE5YzgxYjAuLmUxMWJmNTYzMTkwN2FlNDczMzZlZjg1YTVkMjJl
ODgzNTc0NjUxYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaApAQCAtNzEsNyArNzEsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxl
bmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAg
dm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwg
Y29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRT
ZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVj
dGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCmluZGV4IGQ2MDE4ZjYx
MzgzYWUzYTUxZTlkNDcyMmNmNmE2MGUyZDhiODdhN2QuLmUwNDllNWIxMmRkZTVmZTUxYjQ2OTU1
Mjg5YTdhN2Y2OTk4MmFmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2suaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02Myw3ICs2Myw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVk
aXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRl
ZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBO
ZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0
ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6
TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1
aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5k
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdhc0Jsb2NrZWQoKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAppbmRleCBm
NzEyMGExYjQ1MWI0MTBkNTkzOTllNWNiYjg4NGZhZTM5NWQ3YTFmLi44OWU5NTdkYzg4NmIzNzQ2
MjA1YmZiOGRkOGQ5NzhiZDhlZTE0NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKQEAgLTQxMyw3ICs0MTMsNyBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmNvbnN1bWVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBieXRlc1JlYWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgQVNTRVJUKG1fY2xpZW50KTsKLSAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBieXRlc1JlYWQpKTsKKyAg
ICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSwgYnl0ZXNSZWFkKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5kZXggYmFjMDIyYWI0NTQz
MGY2NTFiMTg5YWMwMTIwN2EwNjA2MDhjMTY3MS4uNzk3NWQ0MWJhZDg5MTVmZWVkYmRhYjE1NTRl
ODFlMWRiMjAzMGY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZC5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpub3RpZnlEaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdAogICAg
IG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNl
aXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgTmV0d29ya0xvYWQ6OmRp
ZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgdGhlIGVuY29kZWQgZGF0YSBsZW5ndGgsIG5vdCB0
aGUgZGVjb2RlZCBkYXRhIGxlbmd0aC4KICAgICBhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRleCBjMzc3M2M5
ODc4NTUzY2U1MzRkMDU0YWJmZmRkZWJiMjllZTA4NGQyLi5lZTVlYjAwNmFhMzc5Yjc4ZmNiYzBi
ZDE3NGUzMmJkNjM5Zjk1ZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBm
aW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9y
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0
ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZv
aWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZENsaWVudC5oCmluZGV4IDBhNWY2NmJkOTY3ZWM5ZmRmNjY0ZTUyZTVhZjM5
NGU0OGVjZTFmN2IuLjM0OGNmZmI5ZThlMjVlZTgzYmJiMzlhMDJjZDNjZjZkMjg1NGQzOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgK
QEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgUG9saWN5QWN0
aW9uIDogdWludDhfdDsKIH0KIApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVk
IGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRpbmcoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQmxv
Y2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBiZjhmMzU3
ZDdhODNlZTUwMjg5MWRiMWU1YWJkODQxODRjNjMzNmM4Li43MzE4OWVmZTQzMWJhNzMzM2JhYjJh
N2I3NDAzMmQxMWNiNWZjNjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04NywxNCArODcsMTQgQEAgc3Ry
dWN0IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSB7CiAgICAgUmVz
b3VyY2VFcnJvciBlcnJvcjsKIH07CiAKLXN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25v
dXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSYgZGF0
YSwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKK3N0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSYgZGF0YSwgY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7CiAgICAgQVNTRVJUKGRhdGEuZGVsYXllZFJlcGx5KTsKICAgICBBU1NFUlQoIWRhdGEu
cmVzcG9uc2UuaXNOdWxsKCkgfHwgIWRhdGEuZXJyb3IuaXNOdWxsKCkpOwogCiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXpl
KCkpCi0gICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOworICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAgIGRhdGEucmVzcG9uc2Uu
c2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6
Y3JlYXRlKG1ldHJpY3MpKTsKIApAQCAtMTA1LDkgKzEwNSwxMSBAQCBzdGF0aWMgdm9pZCBzZW5k
UmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9u
b3VzTG9hZAogTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiBzeW5jaHJv
bm91c1JlcGx5KQogICAgIDogbV9wYXJhbWV0ZXJzIHsgV1RGTW92ZShwYXJhbWV0ZXJzKSB9CiAg
ICAgLCBtX2Nvbm5lY3Rpb24geyBjb25uZWN0aW9uIH0KKyAgICAsIG1fYnVmZmVyZWREYXRhIHsg
bWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZmlsZVJlZmVy
ZW5jZXMoY29ubmVjdGlvbi5yZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9wYXJhbWV0ZXJzKSkKICAg
ICAsIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMgeyBtX3BhcmFtZXRlcnMuY2xp
ZW50Q3JlZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGll
bnRGb3JDcmVkZW50aWFscyB9CiAgICAgLCBtX2J1ZmZlcmluZ1RpbWVyIHsgKnRoaXMsICZOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQgfQorICAgICwgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAg
ICAgLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24t
PmNhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKICAgICAsIG1fcmVzb3Vy
Y2VMb2FkSUQgeyBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7
CkBAIC0zMDYsMTAgKzMwOCwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRO
ZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgICAgICBj
b25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKIAogICAgICAgICBpZiAoaXNTeW5jaHJvbm91cygp
IHx8IG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA+IDBfcykKLSAgICAgICAgICAg
IG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1f
YnVmZmVyZWREYXRhLT5lbXB0eSgpOwogCiAgICAgICAgIGlmIChjYW5Vc2VDYWNoZShyZXF1ZXN0
KSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+ZW1wdHkoKTsKICAg
ICB9CiAKICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFyYW1ldGVy
czsKQEAgLTczMCwyMCArNzMyLDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAg
ICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0
aW9uL29jdGV0LXN0cmVhbSIpOwogICAgIH07CiAKLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhCisg
ICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc051bGwoKQogICAgICAgICAmJiBtX3Jlc3BvbnNlLmV4
cGVjdGVkQ29udGVudExlbmd0aCgpID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPigxICogTUIpCiAg
ICAgICAgICYmIGlzRmV0Y2hPclhIUihyZXNvdXJjZUxvYWRJbmZvKQogICAgICAgICAmJiBpc01l
ZGlhTUlNRVR5cGUobV9yZXNwb25zZS5taW1lVHlwZSgpKSkgewotICAgICAgICBtX2J1ZmZlcmVk
RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLT5l
bXB0eSgpOwogICAgICAgICBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBXZWJM
b2FkZXJTdHJhdGVneTo6bWVkaWFNYXhpbXVtQnVmZmVyaW5nVGltZTsKICAgICB9CiAKICAgICAv
LyBGb3IgbXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBn
ZXRzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3Bl
Y2lhbCBoYW5kbGluZy4KICAgICBpZiAoIWlzU3luY2hyb25vdXMoKSAmJiBtX3Jlc3BvbnNlLmlz
TXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gbnVsbHB0cjsKKyAgICAgICAg
bV9idWZmZXJlZERhdGEtPnJlc2V0KCk7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFy
dCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS0+cmVzZXQoKTsKIAogICAgIGlmIChtX2NhY2hlRW50cnlG
b3JWYWxpZGF0aW9uKSB7CiAgICAgICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVz
cG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKQEAgLTg1
OCw3ICs4NjAsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZERpZFJlY2VpdmVS
ZXNwb25zZVBvdGVudGlhbGx5SW5OZXdCcm93c2luZ0NvbnRleAogICAgIH0pOwogfQogCi12b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICgh
bV9udW1CeXRlc1JlY2VpdmVkKQogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2Vp
dmVCdWZmZXI6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGg9JWQpIiwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CkBAIC04NjYsMjAgKzg2OCwyMCBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogCiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JW
YWxpZGF0aW9uKTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CisgICAgaWYg
KCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5pc051bGwoKSkgewogICAgICAgICAvLyBQcmV2ZW50
IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6ZSBv
ZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNo
ZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsKICAgICAgICAgaWYgKG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNo
ZUJ1ZmZlclNpemUpCiAgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQo
YnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFG
b3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5y
ZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAgICAgICAg
IHJldHVybjsKICAgICAvLyBGSVhNRTogQXQgbGVhc3Qgb24gT1MgWCBZb3NlbWl0ZSB3ZSBhbHdh
eXMgZ2V0IC0xIGZyb20gdGhlIHJlc291cmNlIGhhbmRsZS4KICAgICB1bnNpZ25lZCBlbmNvZGVk
RGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUoKTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0
YSkgeworICAgIGlmICghbV9idWZmZXJlZERhdGEtPmlzTnVsbCgpKSB7CiAgICAgICAgIG1fYnVm
ZmVyZWREYXRhLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgbV9idWZmZXJlZERhdGFF
bmNvZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKICAgICAgICAgc3RhcnRCdWZm
ZXJpbmdUaW1lcklmTmVlZGVkKCk7CkBAIC05MDksMTEgKzkxMSwxMSBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG5ldHdvcmtMbwogI2VuZGlmCiAKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQotICAgICAgICBz
ZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1
ZmZlcmVkRGF0YS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAgc2VuZFJlcGx5
VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERh
dGEtPmdldCgpLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIGVsc2UgewotICAgICAg
ICBpZiAobV9idWZmZXJlZERhdGEgJiYgIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogUGFzcyBhIHJlYWwgdmFsdWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVkIGRhdGEgc2l6ZSBm
ZWF0dXJlLgotICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEsIC0xKTsKKyAg
ICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLT5nZXQoKSwgLTEpOwogICAgICAg
ICB9CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hS
ZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQpAQCAtMTI1NCwxOSArMTI1
NiwxOSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRCdWZmZXJpbmdUaW1lcklm
TmVlZGVkKCkKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmly
ZWQoKQogewotICAgIEFTU0VSVChtX2J1ZmZlcmVkRGF0YSk7CisgICAgQVNTRVJUKCFtX2J1ZmZl
cmVkRGF0YS0+aXNOdWxsKCkpOwogICAgIEFTU0VSVChtX25ldHdvcmtMb2FkKTsKIAogICAgIGlm
IChtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJl
ZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0
YS0+Z2V0KCkgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwogCi0gICAgbV9i
dWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fYnVmZmVyZWREYXRh
LT5lbXB0eSgpOwogICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwogfQog
Ci12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNlbmRCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5j
b2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFpc1N5bmNocm9ub3VzKCkpOwogCkBAIC0x
Mjc5LDcgKzEyODEsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0Nh
Y2hlRW50cnkoKQogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVu
dHJ5OiBOb3Qgc3RvcmluZyBjYWNoZSBlbnRyeSBiZWNhdXNlIHJlcXVlc3QgaXMgbm90IGVsaWdp
YmxlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlKSB7CisgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAg
ICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9y
aW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgbV9idWZmZXJlZERhdGFGb3JDYWNoZSBpcyBudWxsIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjg3LDEyICsxMjg5LDEyIEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgaWYgKGlzQ3Jv
c3NPcmlnaW5QcmVmZXRjaCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9jb25u
ZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKSkgewog
ICAgICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogU3Rv
cmluZyBlbnRyeSBpbiBwcmVmZXRjaCBjYWNoZSIpOwotICAgICAgICAgICAgc2Vzc2lvbi0+cHJl
ZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCks
IFdURk1vdmUobV9yZXNwb25zZSksIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOwor
ICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQt
PmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUtPnRha2UoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVu
dHJ5IGluIEhUVFAgZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xv
YWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFG
b3JDYWNoZSksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRh
YmxlIHsKKyAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgp
LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT50YWtlKCksIFtsb2FkZXIgPSBS
ZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKICNpZiBFTkFCTEUoU0hB
UkVBQkxFX1JFU09VUkNFKQogICAgICAgICBpZiAobWFwcGVkQm9keS5zaGFyZWFibGVSZXNvdXJj
ZUhhbmRsZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGQyMzRk
YWI1YmVlYTViNjQ3MzA1NTBjNzczNzBhOWYxNTk1OTdmOTcuLjk4NDQyNGEzMDY4MWEzNjBmYzYw
YzllN2E5ZGQ0ZTZiYjQyNmRlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlQb2xpY3lWaW9sYXRpb25FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsNiArNDcsOCBAQCBjbGFzcyBCbG9iRGF0YUZpbGVSZWZl
cmVuY2U7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExNCw3
ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50
aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVu
dGlhbHM7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsK
KyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JikgZmluYWw7CiAgICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgZmlu
YWw7CkBAIC0xOTIsNyArMTk1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc3RhcnRCdWZmZXJp
bmdUaW1lcklmTmVlZGVkKCk7CiAgICAgdm9pZCBidWZmZXJpbmdUaW1lckZpcmVkKCk7Ci0gICAg
dm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0
YUxlbmd0aCk7CisgICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOwogCiAgICAgdm9pZCBjb25zdW1lU2Fu
ZGJveEV4dGVuc2lvbnMoKTsKICAgICB2b2lkIGludmFsaWRhdGVTYW5kYm94RXh0ZW5zaW9ucygp
OwpAQCAtMjI1LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSBtX3Jlc3BvbnNlOwogCiAgICAgc2l6ZV90IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFM
ZW5ndGggeyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJl
ZERhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVm
ZmVyZWREYXRhOwogICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxTeW5jaHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9ub3VzTG9hZERhdGE7
CkBAIC0yNDAsNyArMjQzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fYnVm
ZmVyaW5nVGltZXI7CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsK
KyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERh
dGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9j
YWNoZUVudHJ5Rm9yVmFsaWRhdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hl
OjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbjsKICAgICBib29sIG1f
aXNXYWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB7IGZhbHNl
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCmluZGV4IDExNDg1
M2U0NWI3MjUzMzY0Yzc0N2E3MWNiMmI1YWI4Y2MzOGVmZDUuLjFhZjFlMDhlM2M0NDFlMjRmMzAw
NjVlOWYyMDc3NmU2ZjlmYzMzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVQKICAg
ICBkaWRGaW5pc2goeyB9LCByZXNwb25zZSk7CiB9CiAKLXZvaWQgUGluZ0xvYWQ6OmRpZFJlY2Vp
dmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0
YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKIHsKICAgICBQSU5HX1JFTEVBU0VfTE9H
KCJkaWRSZWNlaXZlRGF0YSIpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4IDE5ZWM4Y2ViOTJlM2M4YTA1NmY0OTI3
MzY2MGNmZmY5MjY0MzQxZDEuLmFiMjlhMGIxYWM4NDY2YjBlZDYxZWY1OGVmNGMyMjBhYmFiNmVi
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAgLTU0LDcgKzU0
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGly
ZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxl
bmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lU
TFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2Fj
eVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAg
IHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFs
Qnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCmlu
ZGV4IDQ1NTc4MmQ1NGEyZWE5YmVlMTg2NTBlMWFmZDFjZjdiMmNlOThjNDkuLjE3ZDQ3OTA3YTNm
NmVlNTJiZTY1MDFkMWRhYjBjYTYwNzUxZDZiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUHJl
Y29ubmVjdFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIFJlc3BvbnNlQ29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25v
cmUpOwogfQogCi12b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFy
ZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBQcmVjb25u
ZWN0VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5l
Y3RUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgK
aW5kZXggMWMxZmYxNjQ3MTExYzZmYTg0OTRhZjVjZjBjN2JiZWFhMWIyNjUwMy4uODU4MDhlMTIx
YjY4Y2E4YjczZTI1MThkMTkzYWIzOTU4MWVhZDFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWdu
ZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCB3aWxsU2Vu
ZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lk
IGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAg
dm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2Fk
ZXIuY3BwCmluZGV4IDcxZTBjZjZjNmRjN2JlYTUyMmM5MDYwMDU1NWY1NzIxNjFjM2MyZjQuLjgx
OTY2MzAyMGM2OTVjZTBjNmFiYTk5OWM2NzVhYWI0MjgyYzdmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcApAQCAtMTc0LDEw
ICsxNzQsMTAgQEAgdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXMKICAgICAgICAgY2FsbGJhY2soKTsK
IH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNrKQotICAgICAgICBt
X2JvZHlDYWxsYmFjayhXVEZNb3ZlKGJ1ZmZlciksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
OworICAgICAgICBtX2JvZHlDYWxsYmFjayhidWZmZXItPm1ha2VDb250aWd1b3VzKCksIHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0
d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXIuaAppbmRleCAxZTc4YzJjZWZhMTU0ODQxMDQwNjBmM2IxOWRjNTBlNmNi
OGYxZWI0Li4xYmU0OWE2MmI2MGViOGJhNzM5MmRiNWMzZTI4YWQ4MDI3Zjk0ODIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAt
NTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBSZXNwb25zZUNhbGxiYWNrID0gRnVu
Y3Rpb248dm9pZCgpPjsKICAgICB2b2lkIHdhaXRGb3JSZXNwb25zZShSZXNwb25zZUNhbGxiYWNr
JiYpOwotICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKKyAg
ICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+Owog
ICAgIHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNrJiYpOwogCiAgICAgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CkBAIC02
Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVk
ZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2Vu
ZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lk
IGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAg
dm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7
CiAgICAgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljczsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5k
ZXggOGVlMTEyYTlkZjgyODk1NGMxNjIzZmZmMjJjMmEyMGZkOGUyZmU3ZC4uN2EyNjIyMTlkZTc4
YjIzNWQxMjVhOTJiNmUyMzZkMzMyNjJmN2EyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgUmVzb3Vy
Y2VFcnJvciBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6cHJvY2Vzc1Jlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG8KICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIFNlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBp
ZiAoIW1fZGVjb2RlcikgewogICAgICAgICBpZiAoIW1fcmVzcG9uc2VFbmNvZGluZy5pc0VtcHR5
KCkpCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwKICAgICB9CiAK
ICAgICBpZiAoYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2NyaXB0LmFw
cGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPmRhdGEoKSwgc2l6ZSkpOworICAgICAgICBt
X3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIHNpemUpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAppbmRleCAx
OGY1NDY5MWYzN2MyYmFiYmM4YzFhM2JjMDk0MzcwZTliMjllYjcxLi40NGZjMDY4NWZhMGZlZGM4
NzQyMTkxNmU5MTNhNjc0YjFjMGZkYmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3Bw
CmluZGV4IDZmMjZiNGNjMmRlZmEwZDk4ODdjNmY0MjQ1ZThmNTRmYmVjNGJhMmIuLmZkYmZiMTQz
NTk3NmNiZjY1ZjYxMjU2ODNhYzFlZGQyNDA5ZTI3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGUuY3BwCkBAIC01ODEsNyArNTgxLDcgQEAgU3RvcmFnZTo6UmVjb3JkIENhY2hlOjplbmNvZGUo
Y29uc3QgUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9uLCBjb25zdAogICAgIERh
dGEgYm9keTsKICAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFtdKGNvbnN0
IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIC8vIEZJWE1FOiBT
dG9yZSBmb3JtIGRhdGEgYm9keS4KLSAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBib2R5ID0geyBidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkgfTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYp
IHsKICAgICB9KTsKQEAgLTY3Myw3ICs2NzMsNyBAQCBzdGQ6Om9wdGlvbmFsPFJlY29yZD4gQ2Fj
aGU6OmRlY29kZShjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHJlY29yZCA9IFdURk1vdmUocmVzdWx0LT5yZWNv
cmQpOwotICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKKyAgICByZWNv
cmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOwogCiAgICAgcmV0dXJu
IHJlY29yZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmNwcAppbmRleCAwNDc3NjgzNmY5OTkwOTM5MTBiMzk5ZDc1NTM4NTVkNWQz
ZjFmZjRlLi5kZDMwNWFmMjk3NjYxZTQ3NmM0OTY3N2RmNTcyMWVmZDFlYzkzMmY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3Bw
CkBAIC00NTQsNyArNDU0LDcgQEAgdm9pZCBDYWNoZTo6Y29tcGxldGVSZXRyaWV2ZShSZXRyaWV2
ZUNvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlciwgc3RkOjp1bmlxdWVfcHQKICAgICBoYW5kbGVy
KFdURk1vdmUoZW50cnkpLCBpbmZvKTsKIH0KICAgICAKLXN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4g
Q2FjaGU6Om1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSkKK3N0ZDo6dW5pcXVlX3B0cjxFbnRyeT4g
Q2FjaGU6Om1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEpCiB7CiAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1v
dmUocmVzcG9uc2VEYXRhKSwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhu
ZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbklEKSwgcmVxdWVzdCwgcmVz
cG9uc2UpKTsKIH0KQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENh
Y2hlOjptYWtlUmVkaXJlY3RFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmCiAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwgcmVzcG9u
c2UsIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVy
cyhuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbklEKSwgcmVxdWVzdCwg
cmVzcG9uc2UpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmUoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBy
ZXNwb25zZURhdGEsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVz
cG9uc2VEYXRhLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBU1NFUlQocmVzcG9uc2VEYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKaW5kZXggMTk5ZjBjZmI3MzI1NDNj
NWZlYWY0ZmUyMzAxZTZhMWMxMmY4OGZlOC4uZWQwNGViY2EwYjM2ZjNmOWM0YzBlN2JhYzcxMzM2
YjllOTZjMzU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5oCkBAIC00Myw3ICs0Myw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBMb3dQb3dlck1vZGVOb3RpZmllcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtMTY2LDcgKzE2Niw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHVz
aW5nIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4sIGNvbnN0IFJldHJpZXZlSW5mbyYpPjsKICAgICB2b2lkIHJldHJpZXZlKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBzdGQ6
Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgUmV0cmlldmVDb21wbGV0aW9u
SGFuZGxlciYmKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkm
KT4mJiA9IG51bGxwdHIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmUoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2
b2lkKE1hcHBlZEJvZHkmKT4mJiA9IG51bGxwdHIpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gc3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZWRpcmVjdFJlcXVlc3QsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FwKTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHVwZGF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZh
bGlkYXRpbmdSZXNwb25zZSk7CiAKQEAgLTE4NSw3ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZXRyaWV2ZURhdGEoY29uc3QgRGF0YUtleSYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgdWludDhf
dCosIHNpemVfdCk+KTsKICAgICB2b2lkIHN0b3JlRGF0YShjb25zdCBEYXRhS2V5JiwgIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5
PiBtYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5PiBtYWtlUmVkaXJlY3RFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwogCiAgICAgdm9pZCBkdW1wQ29udGVudHNUb0ZpbGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggYmEzOWQ5ZTJjMjZhMDFhOTI2YjExYWE3OTllMzY2MmZj
NmFlMDU0OS4uMmQyZWQ5NzRkMjBjOTRlNjNhZGI1N2E5NzZlMTE4OTVmNzdkZmQ5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRy
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVFbnRyeS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNw
YWNlIE5ldHdvcmtDYWNoZSB7CiAKLUVudHJ5OjpFbnRyeShjb25zdCBLZXkmIGtleSwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5n
Pj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycykKK0VudHJ5OjpFbnRyeShjb25zdCBLZXkmIGtleSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9yPHN0ZDo6cGFp
cjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpCiAgICAgOiBtX2tleShr
ZXkpCiAgICAgLCBtX3RpbWVTdGFtcChXYWxsVGltZTo6bm93KCkpCiAgICAgLCBtX3Jlc3BvbnNl
KHJlc3BvbnNlKQpAQCAtMTAxLDggKzEwMSwxMCBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVu
Y29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAKICAgICBEYXRhIGhlYWRlcihlbmNvZGVyLmJ1
ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiAgICAgRGF0YSBib2R5OwotICAgIGlmICht
X2J1ZmZlcikKLSAgICAgICAgYm9keSA9IHsgbV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNp
emUoKSB9OworICAgIGlmIChtX2J1ZmZlcikgeworICAgICAgICBtX2J1ZmZlciA9IG1fYnVmZmVy
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICBib2R5ID0geyBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVm
ZmVyLT5zaXplKCkgfTsKKyAgICB9CiAKICAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAs
IGhlYWRlciwgYm9keSwgeyB9IH07CiB9CkBAIC0xOTEsMTAgKzE5MywxMCBAQCB2b2lkIEVudHJ5
Ojppbml0aWFsaXplQnVmZmVyRnJvbVN0b3JhZ2VSZWNvcmQoKSBjb25zdAogICAgICAgICAgICAg
cmV0dXJuOwogICAgIH0KICNlbmRpZgotICAgIG1fYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUobV9zb3VyY2VTdG9yYWdlUmVjb3JkLmJvZHkuZGF0YSgpLCBtX3NvdXJjZVN0
b3JhZ2VSZWNvcmQuYm9keS5zaXplKCkpOworICAgIG1fYnVmZmVyID0gV2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LmRhdGEo
KSwgbV9zb3VyY2VTdG9yYWdlUmVjb3JkLmJvZHkuc2l6ZSgpKTsKIH0KIAotV2ViQ29yZTo6U2hh
cmVkQnVmZmVyKiBFbnRyeTo6YnVmZmVyKCkgY29uc3QKK1dlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIEVudHJ5OjpidWZmZXIoKSBjb25zdAogewogICAgIGlmICghbV9idWZmZXIpCiAg
ICAgICAgIGluaXRpYWxpemVCdWZmZXJGcm9tU3RvcmFnZVJlY29yZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCmlu
ZGV4IDk2OTE1YzM4MDFjMzdkZGFjM2U4ZTYwMzIxZjg4YzIyMjljZDU5YTAuLjljMDQyMGQ0NGE4
MTU4ZGZjNWIyMWNmMTg4MjA0Y2YzYTkxNmI0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKQEAgLTM1LDcgKzM1
LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBOZXR3
b3JrQ2FjaGUgewogY2xhc3MgRW50cnkgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBWZWN0b3I8c3Rk
OjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycyk7CisgICAgRW50
cnkoY29uc3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBWZWN0b3I8c3RkOjpwYWly
PFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycyk7CiAgICAgRW50cnkoY29u
c3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBWZWN0b3I8c3RkOjpwYWly
PFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycyk7CiAgICAgZXhwbGljaXQg
RW50cnkoY29uc3QgU3RvcmFnZTo6UmVjb3JkJik7CiAgICAgRW50cnkoY29uc3QgRW50cnkmKTsK
QEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAgIGNvbnN0
IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJz
KCkgY29uc3QgeyByZXR1cm4gbV92YXJ5aW5nUmVxdWVzdEhlYWRlcnM7IH0KIAotICAgIFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3Q7CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+JiByZWRpcmVjdFJlcXVlc3QoKSBjb25zdCB7IHJldHVy
biBtX3JlZGlyZWN0UmVxdWVzdDsgfQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkK
QEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywg
U3RyaW5nPj4gbV92YXJ5aW5nUmVxdWVzdEhlYWRlcnM7CiAKICAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdD4gbV9yZWRpcmVjdFJlcXVlc3Q7Ci0gICAgbXV0YWJsZSBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICNpZiBFTkFCTEUo
U0hBUkVBQkxFX1JFU09VUkNFKQogICAgIG11dGFibGUgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRs
ZSBtX3NoYXJlYWJsZVJlc291cmNlSGFuZGxlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJmZDQwODAzMTA1NDY4MzUzNmVhMGRj
ODE5My4uNDg3NzUzZmI5Yzg2MmMyMjQ2NGY5Yzk1MzMwOGIxM2RkZjQ5OTc5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtNDYsNyArNDYsNiBAQCBTcGVjdWxhdGl2
ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZChDYWNoZSYgY2FjaGUsIGNvbnN0IEdsb2JhbEZyYW1lSUQm
IGdsb2JhbEZyYW1lSQogICAgIDogbV9jYWNoZShjYWNoZSkKICAgICAsIG1fY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgLCBtX29yaWdpbmFsUmVxdWVz
dChyZXF1ZXN0KQotICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNoZShTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpKQogICAgICwgbV9jYWNoZUVudHJ5KFdURk1vdmUoY2FjaGVFbnRyeUZvclZhbGlkYXRp
b24pKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5IHx8IG1fY2FjaGVFbnRyeS0+bmVlZHNW
YWxpZGF0aW9uKCkpOwpAQCAtMTA5LDcgKzEwOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJl
CiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAgICBpZiAobV9yZXNwb25z
ZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0
cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAgICAgYm9vbCB2
YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsg
Ly8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9uU3VjY2VlZGVkICYmIG1fY2Fj
aGVFbnRyeSkKQEAgLTEyMCwxNyArMTE5LDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIFNwZWN1
bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5KTsK
IAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQg
bWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAgICBjb25zdCBz
aXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgICAg
IGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBt
YXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisg
ICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0
cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiB9
CiAKQEAgLTEzOCwxMSArMTM3LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hM
b2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKG1f
ZGlkQ29tcGxldGUpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7Ci0gICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUt
PnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLmNvcHlSZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKKyAgICBpZiAoIW1fY2Fj
aGVFbnRyeSAmJiAhbV9idWZmZXJlZERhdGFGb3JDYWNoZS5pc051bGwoKSkgeworICAgICAgICBt
X2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25z
ZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5nZXQoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9
KTsKICAgICAgICAgLy8gQ3JlYXRlIGEgc3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0
IHN0b3JlLgogICAgICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFi
bGVCeURlZmF1bHQobV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSkKLSAgICAgICAgICAgIG1f
Y2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNw
b25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBtX2Nh
Y2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9u
c2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpKTsKICAgICB9CiAKICAgICBkaWRDb21w
bGV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggYzBlMWUxNGIyYWM0
NjAzNThmODE0MDdjZDcwYzQwOTA1MmFmOGVmZS4uMWI4NDNkYjdlYzI3MGRiOWRhYjllOGEyNWYy
YTQ4YThlY2FlMmE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC02MSw3
ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50
aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CiAKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyQnVpbGRlciBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnk7CiAgICAgYm9vbCBtX2RpZENvbXBs
ZXRlIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcAppbmRleCA1ZTJlMDJlMmZiYTBiNGEwYzAzYjVkM2U2
NmI5N2Y3YmNjYzc5NThiLi4zMTk5YmZmMzExYjZjM2VlZmJlOTUwYjQ1ZTZiMGE5NmUzMjc3N2Zm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNo
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0
Y2hDYWNoZS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBy
ZWZldGNoQ2FjaGU6OkVudHJ5OjpFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
cG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorUHJlZmV0Y2hD
YWNoZTo6RW50cnk6OkVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwg
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIDog
cmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpLCBidWZmZXIoV1RGTW92ZShidWZmZXIpKQogewog
fQpAQCAtNzIsNyArNzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UHJlZmV0Y2hDYWNoZTo6RW50cnk+
IFByZWZldGNoQ2FjaGU6OnRha2UoY29uc3QgVVJMJiB1cmwpCiAKIHN0YXRpYyBjb25zdCBTZWNv
bmRzIGV4cGlyYXRpb25UaW1lb3V0IHsgNV9zIH07CiAKLXZvaWQgUHJlZmV0Y2hDYWNoZTo6c3Rv
cmUoY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
cG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBQcmVm
ZXRjaENhY2hlOjpzdG9yZShjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghbV9zZXNzaW9uUHJlZmV0Y2hlcykKICAgICAgICAg
bV9zZXNzaW9uUHJlZmV0Y2hlcyA9IG1ha2VVbmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENh
Y2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUu
aAppbmRleCBhMjUxNTIwYjMxZWFjOTIxYzIyZDMxMTUxZDZkMjMxYTFiZWQxMzhjLi41MmMwYjEw
ZmNjNmQ1YTZkZTExNDQ3ZTdlNGU4MjJkZjhmODQxY2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaApAQCAtNDcsMTggKzQ3LDE4
IEBAIHB1YmxpYzoKIAogICAgIHN0cnVjdCBFbnRyeSB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICAgICAgRW50cnkoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJik7CiAgICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogCi0gICAgICAgIFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IHJlbGVhc2VCdWZmZXIoKSB7IHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwo
KTsgfQorICAgICAgICBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVsZWFz
ZUJ1ZmZlcigpIHsgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOyB9CiAKICAgICAgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICAgICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgcmVkaXJlY3RSZXF1ZXN0OwogICAgIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+
IHRha2UoY29uc3QgVVJMJik7Ci0gICAgdm9pZCBzdG9yZShjb25zdCBVUkwmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAg
IHZvaWQgc3RvcmUoY29uc3QgVVJMJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQ
dHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBzdG9yZVJl
ZGlyZWN0KGNvbnN0IFVSTCYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCmluZGV4IGI5
YWIwZGVlYmI5ZjkyN2M3Mzc0MmU4NmEwYmU3Zjk3MTYwYmQ2ZmIuLjQxNjY4YTViMWNkNzM4Njk2
N2I4ZmQ5NzNlOTY3MzJlY2E5MDdlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKQEAgLTYyLDcgKzYy
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTmVnb3RpYXRlTW9kZXJuVExTKGNvbnN0IFVSTCYp
OwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExl
Z2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgdm9p
ZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYp
OwogICAgIHZvaWQgdHJhbnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9hZChEb3dubG9hZCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggZTc4MGQ2YzFjM2NkMWViMmMyZmY1YTBjNTY0YTBl
NGQ4OGI3ZWE1ZC4uMzA1MWYxNjljYjBhMzcwOTk4NWExNjExMjJjMjVmMGU4ZjE3YmQ4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tDb2NvYTo6ZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYgZXIKICAgICAgICAgbV9jbGllbnQtPmRpZENvbXBsZXRlV2l0aEVycm9yKGVycm9yLCBuZXR3
b3JrTG9hZE1ldHJpY3MpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNl
aXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIFdURkVtaXRTaWducG9zdChtX3Rhc2suZ2V0KCksICJE
YXRhVGFzayIsICJyZWNlaXZlZCAlemQgYnl0ZXMiLCBkYXRhLT5zaXplKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0KaW5kZXggZDkzYWM5ZWIyZjEwNDVlMTNlNTcyNWE0N2YwZTc2OTE1NzJiNmM0MS4u
M2ZmYmNlODdjNDJiNDY5NzhlODZiZjE2MzczNThjOWU0NDdkNDA4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQpAQCAtOTg1LDcgKzk4NSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIGRhdGFUYXNrOihO
U1VSTFNlc3Npb25EYXRhVGFzayAqKWRhdGFUYXNrIGRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilk
YXRhCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4aXN0aW5nVGFz
azpkYXRhVGFza10pCi0gICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZURhdGEoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSkpOworICAgICAgICBuZXR3b3JrRGF0YVRh
c2stPmRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhKSk7CiB9CiAKIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lv
biBkb3dubG9hZFRhc2s6KE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayAqKWRvd25sb2FkVGFzayBk
aWRGaW5pc2hEb3dubG9hZGluZ1RvVVJMOihOU1VSTCAqKWxvY2F0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5j
cHAKaW5kZXggOGZjN2I2NjNlNmY3NTYyYjJiMzU0ODkzOThhMmZlNzMxYmUwNzRmMS4uMzdmMjk0
MTY2NDZjNDdlMWRhMWZkOTk0MWNjYWMwMGI1ZGMwZmQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcApA
QCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2Vp
dmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlc3BvCiAgICAgaW52b2tlRGlk
UmVjZWl2ZVJlc3BvbnNlKCk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERp
ZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
K3ZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVl
c3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgUmVmIHBy
b3RlY3RlZFRoaXMgeyAqdGhpcyB9OwogICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpDYW5jZWxp
bmcgfHwgc3RhdGUoKSA9PSBTdGF0ZTo6Q29tcGxldGVkIHx8ICghbV9jbGllbnQgJiYgIWlzRG93
bmxvYWQoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwv
TmV0d29ya0RhdGFUYXNrQ3VybC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJs
L05ldHdvcmtEYXRhVGFza0N1cmwuaAppbmRleCAxYzQyN2RkYjc4ZDY5NTNmZTg5NjBjNTY5MmFm
ZGU0ZjRmMGVlZTg1Li40NWJlNWNlMTg0MzI1MjcxZDVjMDgwZGQzNGYxZWU0YTE2NjQyYTFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFU
YXNrQ3VybC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3Jr
RGF0YVRhc2tDdXJsLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8V2ViQ29y
ZTo6Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBSZXF1ZXN0U3RhdHVzID0gUmVxdWVzdFN0YXR1czo6TmV3UmVxdWVzdCk7CiAgICAgdm9p
ZCBjdXJsRGlkU2VuZERhdGEoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxv
bmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6Q3VybFJlc3BvbnNlJiYp
IG92ZXJyaWRlOwotICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6Q3VybFJl
cXVlc3QmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGN1cmxEaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZENv
bXBsZXRlKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoV2ViQ29yZTo6Q3Vy
bFJlcXVlc3QmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6OkNlcnRpZmljYXRl
SW5mbyYmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCmluZGV4IGIyMGFhNTFhMGY4NGY5
NWFkOGYwYjc4MDdkNzQxNzFhZGM1MjA1YTMuLjcxNjBiZmY5NDQ0ZDE4NDk4MWRmNTJkMWYxZTUy
MTU3YjNkOTE0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAgLTEwNjIsNyArMTA2Miw3IEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZChnc3NpemUgYnl0ZXNSZWFkKQogICAgICAg
ICB3cml0ZURvd25sb2FkKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKG1fY2xpZW50
KTsKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUobV9yZWFkQnVmZmVyKSkpOworICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURh
dGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUobV9yZWFkQnVmZmVyKSkp
OwogICAgICAgICByZWFkKCk7CiAgICAgfQogfQpAQCAtMTc2MSw3ICsxNzYxLDcgQEAgdm9pZCBO
ZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTChzdGQ6Om9wdGlvbmFsPERhdGFVUkxE
ZWNvZGVyOjpSZXN1bHQ+JiYKICAgICB9CiAKICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNw
b25zZTo6ZGF0YVVSTFJlc3BvbnNlKG1fY3VycmVudFJlcXVlc3QudXJsKCksIHJlc3VsdC52YWx1
ZSgpKTsKLSAgICBhdXRvIGJ5dGVzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1
bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CisgICAgYXV0byBieXRlcyA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpLT5jcmVhdGVHQnl0ZXMo
KTsKICAgICBtX2lucHV0U3RyZWFtID0gYWRvcHRHUmVmKGdfbWVtb3J5X2lucHV0X3N0cmVhbV9u
ZXdfZnJvbV9ieXRlcyhieXRlcy5nZXQoKSkpOwogICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3Bv
bnNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENQcm92aWRlci5oCmluZGV4IGY1ZGI3MDZjNDQ1ODAyMTA4N2Y5NTk5NjY5
ZGZhN2Q5ZjgzNzk3OGMuLjMzZDQzYjcyMjM4ZDIwM2U3ZWRlYzk0MTRjYWY5ZmRhOGY0MDUyNmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtSVENQcm92aWRlci5oCkBAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBQYWNrZXRPcHRpb25z
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQzYzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcx
Li5mNjc2Njg4NTdmZjVjMmU1MzJkNWI0YjUxNGYyZTJjZjQ5Zjc2MmM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcApAQCAtNTEsOSArNTEs
OSBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGRhdGEuc2l6ZSgpKQotICAgICAgICBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAg
ICAgICBidWZmZXIgPSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlcikgfTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDdlMGQ4
ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYuLjc4ZjgxNGY4NjE3MTdkMzExYTcw
OWQ0NTk3Nzc1YzY3ODA4ZTQ0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmgKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBFbmNvZGVzIGEgU2hhcmVkQnVmZmVyIHRoYXQgaXMg
cmVjZWl2ZWQgYXMgYSBjb3B5IG9mIHRoZSBkZWNvZGVkIGRhdGEgaW4gYSBuZXcgU2hhcmVkQnVm
ZmVyLgorLy8gRW5jb2RlcyBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgdGhhdCBpcyByZWNlaXZl
ZCBhcyBhIGNvcHkgb2YgdGhlIGRlY29kZWQgZGF0YSBpbiBhIG5ldyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyLgogLy8gVG8gYXZvaWQgY29weWluZyBmcm9tIHRoZSBEZWNvZGVyLCB1c2UgU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSB0byByZWNlaXZlIGEgRGF0YVJlZmVyZW5jZSBpbnN0ZWFkLgog
CiAjcHJhZ21hIG9uY2UKQEAgLTM5LDE4ICszOSwxNSBAQCBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5
IHsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0OwogCi0gICAgU2hh
cmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAg
ICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckNv
cHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZm
ZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1
ZmZlcik7Ci0gICAgfQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPigpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCkpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1
ZmZlci5tYWtlQ29udGlndW91cygpKSB7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsg
fQorICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkg
eyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKICAg
ICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZl
ci0+ZGF0YSgpIDogbnVsbHB0cjsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQpAQCAtNjAsNyArNTcsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1
ZmZlckNvcHk+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlLmgKaW5kZXggZDNkMGVjNWU5Nzg1NTk5YjYzNGE4NGM2YzQ0NzFiNTJjZDIyMTNmMS4uNjdl
YzhlNWU5MmJkMDI0MTE1ZGIwZDQwODBhMjRmZTczNTcwZDNmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaApAQCAt
MjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LS8vIEVuY29kZXMgYSBTaGFyZWRCdWZmZXIgb3IgRGF0YVJlZmVyZW5jZSB0aGF0IGlzIHJlY2Vp
dmVkIGFzIGEgRGF0YVJlZmVyZW5jZSB0byB0aGUgZGVjb2RlZCBkYXRhLgorLy8gRW5jb2RlcyBh
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgb3IgRGF0YVJlZmVyZW5jZSB0aGF0IGlzIHJlY2VpdmVk
IGFzIGEgRGF0YVJlZmVyZW5jZSB0byB0aGUgZGVjb2RlZCBkYXRhLgogCiAjcHJhZ21hIG9uY2UK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCmluZGV4IGQyNDA2ZWUyOTA1
MzExZjY5Yjc1ODQyMWU3N2EzZTY2Y2JhMjdiNjUuLmNmNzYzNjNmZWIyY2RjOGQ1OGZkMmEyYzQy
ZjZlNGE3YzY3ZDM4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVk
TWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAK
QEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCi1SZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRN
ZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTQ4LDEwICs0OCwxMCBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHNoYXJlZE1lbW9y
eTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZm
ZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAorUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNo
YXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIHsK
ICAgICBBU1NFUlQoZGF0YVNpemUgPD0gc2l6ZSgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoeworICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0
YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9XSAoKSAtPiBjb25zdCB1aW50OF90KiB7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7CiAgICAgICAgIH0sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCBlMzcxYmNkNzMwMmNmODVlYmFi
MmI1YTg1ZTdiZTQ5ZGNmNTY1MmFiLi5jZWMwNTg5OTI0MzAxMDIyN2YyZjg3NWZkMTJhZGVkYTc5
ZThhMzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTQ0LDcgKzQ0
LDggQEAgY2xhc3MgRW5jb2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiB9CiAKICNpZiBPUyhEQVJXSU4pCkBAIC0xMjAsNyArMTIxLDcgQEAg
cHVibGljOgogCiAgICAgLy8gRklYTUU6IENoYW5nZSB0aGVzZSBmYWN0b3J5IGZ1bmN0aW9ucyB0
byByZXR1cm4gUmVmPFNoYXJlZE1lbW9yeT4gYW5kIGNyYXNoIG9uIGZhaWx1cmUuCiAgICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGFsbG9jYXRlKHNpemVfdCk7Ci0gICAgc3RhdGljIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IGNvcHlCdWZmZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
Jik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGNvcHlCdWZmZXIoY29uc3QgV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVk
TWVtb3J5PiBtYXAoY29uc3QgSGFuZGxlJiwgUHJvdGVjdGlvbik7CiAjaWYgVVNFKFVOSVhfRE9N
QUlOX1NPQ0tFVFMpCiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHdyYXBNYXAodm9p
ZCosIHNpemVfdCwgaW50IGZpbGVEZXNjcmlwdG9yKTsKQEAgLTE1Myw3ICsxNTQsNyBAQCBwdWJs
aWM6CiAgICAgLy8gUmV0dXJuIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGluIGJ5dGVzLgogICAgIHN0
YXRpYyB1bnNpZ25lZCBzeXN0ZW1QYWdlU2l6ZSgpOwogCi0gICAgUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CisgICAgUmVmPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNv
bnN0OwogCiBwcml2YXRlOgogI2lmIE9TKERBUldJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSVdlYkFyY2hpdmUubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJB
cmNoaXZlLm1tCmluZGV4IDE4ZGRjNTdhOWQ0MTIwMDlkNmRmMzBhOThjNmU2YTUwMjNhZjI5NmQu
LjY1YTQ2MTQ0ZmY1OTk1MjZiOGU3ZDc3ODc0MWQxZjg3Y2NlNzk3NTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmUubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJV2ViQXJjaGl2ZS5tbQpAQCAtODcsNyArODcsNyBAQCBXZWJBcmNoaXZlOjpXZWJB
cmNoaXZlKFdlYkFyY2hpdmVSZXNvdXJjZSogbWFpblJlc291cmNlLCBSZWZQdHI8QVBJOjpBcnJh
eT4mJiBzdQogCiBXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKEFQSTo6RGF0YSogZGF0YSkKIHsKLSAg
ICBtX2xlZ2FjeVdlYkFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YS0+Ynl0ZXMoKSwgZGF0YS0+c2l6ZSgpKS5nZXQoKSk7CisgICAgbV9s
ZWdhY3lXZWJBcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLT5ieXRlcygpLCBkYXRhLT5zaXplKCkpLmdldCgpKTsKIH0K
IAogV2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZShSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4mJiBsZWdh
Y3lXZWJBcmNoaXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJj
aGl2ZVJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291
cmNlLm1tCmluZGV4IGNhMGMyNGIyNzczNTQ3Njc2ZTM0ODAxYzc5YTFkNTY1YmY5NWZlNWQuLjY1
YTE4Yjc3M2M1ODZiZWI1MjViOTJhNjNiYzZhMTVlNzEwZGJkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KQEAgLTQ3LDcgKzQ3LDcgQEAgUmVm
PFdlYkFyY2hpdmVSZXNvdXJjZT4gV2ViQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4mJiBhcmMKIH0KIAogV2ViQXJjaGl2ZVJlc291cmNlOjpXZWJBcmNoaXZl
UmVzb3VyY2UoQVBJOjpEYXRhKiBkYXRhLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcpCi0gICAgOiBtX2FyY2hpdmVS
ZXNvdXJjZShBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LT5ieXRlcygpLCBkYXRhLT5zaXplKCkpLCBXVEY6OlVSTChXVEY6OlVSTCgpLCB1cmwpLCBNSU1F
VHlwZSwgdGV4dEVuY29kaW5nLCBTdHJpbmcoKSkpCisgICAgOiBtX2FyY2hpdmVSZXNvdXJjZShB
cmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS0+Ynl0ZXMoKSwgZGF0YS0+c2l6ZSgpKSwgV1RGOjpVUkwoV1RGOjpVUkwoKSwgdXJsKSwgTUlN
RVR5cGUsIHRleHRFbmNvZGluZywgU3RyaW5nKCkpKQogewogfQogCkBAIC02OCw3ICs2OCw3IEBA
IHN0YXRpYyB2b2lkIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhKHVuc2lnbmVkIGNoYXIq
LCBjb25zdCB2b2lkKiBkYXRhKQogCiBSZWY8QVBJOjpEYXRhPiBXZWJBcmNoaXZlUmVzb3VyY2U6
OmRhdGEoKQogewotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJl
c291cmNlLT5kYXRhKCkuY3JlYXRlQ0ZEYXRhKCk7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4g
Y2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVDRkRhdGEoKTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IENGUmVsZWFzZSBpbiByZWxlYXNlV2Vi
QXJjaGl2ZVJlc291cmNlRGF0YS4KICAgICBDRlJldGFpbihjZkRhdGEuZ2V0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnND
b2NvYS5tbQppbmRleCA4N2Y0ZWIxZWJhMjg3MmUwY2IwYWI5NTkxNmFmZWRlMjlmY2JhMjQ0Li4z
YzFiNTdkNWFhMjZlYzcyZTYwYjVkNzhhMTFlOWZkODUyY2ZmZWM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5t
bQpAQCAtNTY0LDEzICs1NjQsMTIgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250UGxhdGZv
cm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY28KICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgqaW5jbHVkZXNDcmVhdGlvbkRhdGEpIHsK
LSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZm9udEZh
Y2VEYXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0
YTsKICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgICAgIC8vIFVwb24gcmVjZWlwdCwgY29weSB0aGUgZGF0YSBmb3Igc2Vj
dXJpdHksIHNvIHRoZSBzZW5kZXIgY2FuJ3Qgc2NyaWJibGUgb3ZlciBpdCB3aGlsZSB3ZSdyZSB1
c2luZyBpdC4KLSAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5kYXRhKCksIGZvbnRGYWNlRGF0
YS52YWx1ZSgpLT5zaXplKCkpOworICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gZm9u
dEZhY2VEYXRhLnZhbHVlKCktPm1ha2VDb250aWd1b3VzKCk7CiAKICAgICAgICAgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGRlY29kZXIgPj4gaXRlbUlu
Q29sbGVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNw
cAppbmRleCBlOWE1MTNhMzA1ZWRkNjViZGZhMzc0ZTFiZDBlM2ZlYWIxZjZiODI0Li40NTQxNjQz
NmMyNTA1MjA4MzhlNWRmZGNjMmJmZTM1M2ZiNTljMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2Vu
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUlt
YWdlQnVmZmVyQmFja2UKICAgICBSRUxFQVNFX0xPRyhSZW1vdGVMYXllclRyZWUsICJDR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kIG9mIHNpemUgJWR4JWQgZW5jb2RlZCBkaXNwbGF5IGxp
c3Qgb2YgJWxkIGJ5dGVzIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBDRkRhdGFHZXRM
ZW5ndGgoZGF0YS5nZXQoKSkpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OwogfQogCiBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQmIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4IGM2OTYxYzcx
NDQwMmJmMzc3YWU5MTBmYmI2Y2NhYTUyZDNiODQxMjguLjJjMTYxMWM5ZTcwZjhmOWExMzc5YzJj
ODQzMDg0NzM1MmU0Yzk2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJl
YWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5jcHAKQEAgLTU1LDE1ICs1NSwxNSBAQCBib29sIFNoYXJlYWJsZVJlc291cmNlOjpIYW5k
bGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6
d3JhcEluU2hhcmVkQnVmZmVyKCkKK1JlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFy
ZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyIHsKICAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPmRh
dGEoKTsgfSwKICAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYt
PnNpemUoKTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVS
ZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJ
blNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgUmVmUHRyPFNoYXJlYWJsZVJlc291cmNlPiBy
ZXNvdXJjZSA9IFNoYXJlYWJsZVJlc291cmNlOjptYXAoKnRoaXMpOwogICAgIGlmICghcmVzb3Vy
Y2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCmluZGV4IGRhMWVl
ZTBhZDYyY2IzNDg0YzFjMzQwNWM0ODcwY2YwYzUxZTE2MTYuLmEwZWQwODU3MzRiNzc1NTE0YzEx
NjdkZWYzZDdjYjRmNjRlNDEyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlYWJsZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVz
b3VyY2UuaApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NCw3ICs1NCw3IEBAIHB1
YmxpYzoKICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgICAg
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgSGFu
ZGxlJik7CiAKLSAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdHJ5V3JhcElu
U2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWFibGVSZXNvdXJjZTsKQEAgLTgwLDcgKzgw
LDcgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBTaGFyZWFibGVSZXNvdXJjZShSZWY8
U2hhcmVkTWVtb3J5PiYmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIHNpemUpOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIo
KTsKIAogICAgIFJlZjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA2NDk4MmJjNDgx
MDJhNGFkYjIwYTdlNjBlMjFiZDQ5MmQ2NTMzNzRjLi43OGRkNzcxZDY0MDgzNTE1YzQwYWY0NWI1
N2U2NmI3MDcxMzE2MDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBERUZJTkVfU0lNUExFX0FSR1VNRU5U
X0NPREVSX0ZPUl9TT1VSQ0UoRGlzcGxheUxpc3Q6OlNldElubGluZVN0cm9rZUNvbG9yKQogCiAj
dW5kZWYgREVGSU5FX1NJTVBMRV9BUkdVTUVOVF9DT0RFUl9GT1JfU09VUkNFCiAKLXN0YXRpYyB2
b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcikKK3N0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgYm9vbCBp
c051bGwgPSAhYnVmZmVyOwogICAgIGVuY29kZXIgPDwgaXNOdWxsOwpAQCAtMTc3LDcgKzE3Nyw3
IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAjaWYgVVNFKFVOSVhf
RE9NQUlOX1NPQ0tFVFMpCi0gICAgLy8gRG8gbm90IHVzZSBzaGFyZWQgbWVtb3J5IGZvciBTaGFy
ZWRCdWZmZXIgZW5jb2RpbmcgaW4gVW5peCwgYmVjYXVzZSBpdCdzIGVhc3kgdG8gcmVhY2ggdGhl
CisgICAgLy8gRG8gbm90IHVzZSBzaGFyZWQgbWVtb3J5IGZvciBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyIGVuY29kaW5nIGluIFVuaXgsIGJlY2F1c2UgaXQncyBlYXN5IHRvIHJlYWNoIHRoZQogICAg
IC8vIG1heGltdW0gbnVtYmVyIG9mIGZpbGUgZGVzY3JpcHRvcnMgb3BlbiBwZXIgcHJvY2VzcyB3
aGVuIHNlbmRpbmcgbGFyZ2UgZGF0YSBpbiBzbWFsbCBjaHVua3MKICAgICAvLyBvdmVyIHRoZSBJ
UEMuIENvbm5lY3Rpb25Vbml4LmNwcCBhbHJlYWR5IHVzZXMgc2hhcmVkIG1lbW9yeSB0byBzZW5k
IGFueSBJUEMgbWVzc2FnZSB0aGF0IGlzCiAgICAgLy8gdG9vIGxhcmdlLiBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODU3MS4KQEAgLTE5MSw3ICsxOTEsNyBA
QCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
U2hhcmVkQnVmZmVyKiBidWZmZXIpCiAjZW5kaWYKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTnVsbDsKICAgICBk
ZWNvZGVyID4+IGlzTnVsbDsKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxT
aGFyZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWJ1ZmZlclNpemUpIHsKLSAg
ICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIApAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXpl
KCksIDEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAjZWxzZQogICAgIFNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlwY0hhbmRsZSkp
CkBAIC0yNDAsNyArMjQwLDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmUKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIEFTU0VSVCh0eXBlcy5z
aXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGVuY29kZXIgPDwgdHlwZXM7CkBAIC0yNDksNyAr
MjQ5LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY28KICAgICAgICAgZW5jb2RlU2hhcmVkQnVm
ZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRV
Uk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmlu
Zz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVy
LCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+JiBkYXRhKQogewogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZXMpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0yNjEsMTAgKzI2MSwxMCBAQCBzdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxT
dHJpbgogICAgIEFTU0VSVChkYXRhU2l6ZSA9PSB0eXBlcy5zaXplKCkpOwogCiAgICAgZm9yICh1
aW50NjRfdCBpID0gMDsgaSA8IGRhdGFTaXplOyBpKyspIHsKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBkYXRhLmFwcGVuZChXVEZNb3Zl
KGJ1ZmZlcikpOworICAgICAgICBkYXRhLmFwcGVuZChidWZmZXIpOwogICAgIH0KIAogICAgIHJl
dHVybiB0cnVlOwpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxET01DYWNo
ZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IERPTUNhCiAg
ICAgZW5jb2RlciA8PCByZWNvcmQudXBkYXRlUmVzcG9uc2VDb3VudGVyOwogICAgIGVuY29kZXIg
PDwgcmVjb3JkLnJlc3BvbnNlQm9keVNpemU7CiAKLSAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5y
ZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAg
V1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgZW5jb2RlciA8PCB0cnVlOwogICAg
ICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKICAgICB9LCBb
Jl0oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKQEAgLTQxNCw3ICs0MTQsNyBAQCBz
dGQ6Om9wdGlvbmFsPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IEFyZ3VtZW50Q29kZXI8RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZD46OmRlYwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgaWYgKGhhc1NoYXJlZEJ1ZmZlckJvZHkpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVy
OwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKGJ1ZmZlcikKQEAgLTE1
NTAsMTAgKzE1NTAsMTAgQEAgdm9pZCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpFbnRyeT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdAogICAgIGlmIChoYXNTdHJp
bmcpCiAgICAgICAgIGVuY29kZXIgPDwgc3RkOjpnZXQ8U3RyaW5nPihwbGF0Zm9ybURhdGEpOwog
Ci0gICAgYm9vbCBoYXNCdWZmZXIgPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRC
dWZmZXI+PihwbGF0Zm9ybURhdGEpOworICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSk7CiAg
ICAgZW5jb2RlciA8PCBoYXNCdWZmZXI7CiAgICAgaWYgKGhhc0J1ZmZlcikKLSAgICAgICAgZW5j
b2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihwbGF0
Zm9ybURhdGEpLnB0cigpKTsKKyAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIHN0
ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKS5wdHIoKSk7
CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5JiBkYXRh
KQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpFbnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWIKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGhhc0J1ZmZlcikgewotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiB2YWx1ZTsKKyAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHZhbHVlOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCB2YWx1ZSkg
fHwgIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkYXRhLnBsYXRm
b3JtRGF0YSA9IHsgdmFsdWUucmVsZWFzZU5vbk51bGwoKSB9OwpAQCAtMjk3Niw3ICsyOTc2LDcg
QEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUo
aWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH19OworICAgIHJldHVybiB7IHsgV1RGTW92
ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH0gfTsKIH0KIAogI2Vu
ZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zMDEwLDI4ICszMDEwLDU2IEBA
IHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRQCiB9CiAjZW5kaWYKIAotdm9pZCBBcmd1bWVudENvZGVy
PFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit2b2lkIEFyZ3Vt
ZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKQogewogICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZm
ZXIuZ2V0KCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBBcmd1
bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4g
QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAo
IWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit2b2lkIEFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKQogewogICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOwog
fQogCi1zdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9w
dGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNv
ZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3ZvaWQgQXJndW1lbnRD
b2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5n
ZXQoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVm
ZmVyKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXI7
Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVu
Y29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVj
b2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CkBAIC0zMDk1LDcgKzMxMjMsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZl
cj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZAogICAgICAgICBy
ZXR1cm4gZGVjb2RlU2NyaXB0QnVmZmVyQXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZShkZWNvZGVy
KTsKICNlbmRpZgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRC
dWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApA
QCAtMzEwNyw3ICszMTM1LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6TWVzc2FnZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGUKIHsKICAgICBlbmNv
ZGVyIDw8IG1lc3NhZ2UuZmlyc3Q7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtZXNzYWdl
RGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlSZWYoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gbWVzc2FnZURhdGEgPSBtZXNzYWdlLnNlY29uZC5jb3B5UmVmKCk7CiAgICAg
ZW5jb2RlciA8PCBtZXNzYWdlRGF0YTsKIH0KIApAQCAtMzExNyw3ICszMTQ1LDcgQEAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+ICBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkNETUkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
aW5kZXggMjVmMDFjMDI5MmEwMTlmMDY3NjI0YmJiNTUzNDAyZGYxYTMzYzViNi4uZTMyODFiNWQy
ZjFjY2JmZTc4ODNmYzU0NjljNzBlN2IzNzFlYTEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBjbGFzcyBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQ2VydGlmaWNhdGVJ
bmZvOwogY2xhc3MgQ29sb3I7CitjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3Mg
Q3JlZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBDdXJz
b3I7CkBAIC0xMzgsNyArMTM5LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKIGNsYXNzIFNjcmlwdEJ1ZmZlcjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFNwcmluZ1RpbWluZ0Z1bmN0aW9uOwogY2xhc3MgU3RlcHNUaW1pbmdGdW5jdGlvbjsKIGNs
YXNzIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czsKQEAgLTc1MSwxNCArNzUyLDI0
IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZVZhbHVlPiB7CiB9OwogI2VuZGlmCiAKLXRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKLSAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
Jik7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+IGRlY29kZShEZWNvZGVyJik7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lk
IGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAotdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewotICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj4gZGVjb2RlKERlY29kZXImKTsKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5j
b2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4geworICAg
IHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJl
ZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29k
ZXImKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2Ny
aXB0QnVmZmVyPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0
UmVzdWx0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0
YS5jcHAKaW5kZXggY2YyZTRkNWY5M2ZkMmQ5NDZiYWJmZjkzZWVhM2U5ZTg2MGFlYmJmNC4uYjYw
N2FjZTgzOGUwNGJjZTFhNmFlZTRkYTU2NTU5ZTA5Njk4Mzk4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcApAQCAtODUsNyArODUsNyBAQCBXZWJI
aXRUZXN0UmVzdWx0RGF0YTo6V2ViSGl0VGVzdFJlc3VsdERhdGEoY29uc3QgV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdCYgaGl0VGVzdAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoSW1hZ2UqIGlt
YWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpOwogICAgICAgICBpZiAoYnVmZmVyKSB7
CiAgICAgICAgICAgICBpbWFnZVNoYXJlZE1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5Ojpj
b3B5QnVmZmVyKCpidWZmZXIpOwogICAgICAgICAgICAgaW1hZ2VTaXplID0gYnVmZmVyLT5zaXpl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNH
dGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApp
bmRleCAyNWEzMDdmMzgyOWU5Mjc4YjVlYTc4ZmY4Mjk2Nzg4MzM3N2EzMWJhLi5mZDU3ZTNiN2Uy
NDYxMGQ0MjdlMWJmY2FkNWU0NjljZjAwNmM5YjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBBcmd1
bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
U2VsZWN0aW9uRGF0YSYKICAgICBib29sIGhhc0N1c3RvbURhdGEgPSBzZWxlY3Rpb24uaGFzQ3Vz
dG9tRGF0YSgpOwogICAgIGVuY29kZXIgPDwgaGFzQ3VzdG9tRGF0YTsKICAgICBpZiAoaGFzQ3Vz
dG9tRGF0YSkKLSAgICAgICAgZW5jb2RlciA8PCBSZWZQdHI8U2hhcmVkQnVmZmVyPihzZWxlY3Rp
b24uY3VzdG9tRGF0YSgpKTsKKyAgICAgICAgZW5jb2RlciA8PCBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4oc2VsZWN0aW9uLmN1c3RvbURhdGEoKSk7CiAKICAgICBib29sIGNhblNtYXJ0
UmVwbGFjZSA9IHNlbGVjdGlvbi5jYW5TbWFydFJlcGxhY2UoKTsKICAgICBlbmNvZGVyIDw8IGNh
blNtYXJ0UmVwbGFjZTsKQEAgLTE1OSwxMCArMTU5LDEwIEBAIHN0ZDo6b3B0aW9uYWw8U2VsZWN0
aW9uRGF0YT4gQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDdXN0b21EYXRhKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzQ3VzdG9tRGF0YSkgewotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0
b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKKyAgICAgICAgc2VsZWN0aW9uLnNl
dEN1c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKICAgICB9
CiAKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKaW5kZXggMjkyZDcxNDUyYzVj
M2E5NDkyYjJmNWI2MTY4MjczNTMwYWMyZGQxMS4uOGFlZjRhNTAxZGFkOTI3NjZjNzE5ZmM1MDA2
YzZkZjEyYWRhNWFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNv
cmVBcmd1bWVudENvZGVyc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dl
YkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGQ6Om9wdGlv
bmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxh
dGZvcm1EYXRhKERlYwogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSogY3JlYXRp
b25EYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChpbmNsdWRlc0NyZWF0aW9uRGF0YS52YWx1ZSgp
KSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0
YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGZv
bnRGYWNlRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGlm
ICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCBiMzRlYzcz
NjM2M2M0ZjFkMmIwZTc2MGFkM2Y0YTlkNWJhYzFhMzRlLi43MjI5OGViODg1YzNhNjQ4NzljY2U2
MTAwNzFlMjM4NDA5MmJlNjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUF0dGFjaG1lbnQuY3BwCkBAIC05OCwxNyArOTgsMTcgQEAgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gQXR0YWNobWVudDo6ZmlsZVNpemVGb3JEaXNwbGF5KCkgY29uc3QKICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50
OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0
dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
dm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgQXR0YWNo
bWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBhZmE5MjljZjA5
M2QyMmVjNzZhZDg2ZmRhMDNiNTAxYmJmZDI5ZGMzLi41MTUxMjJiZDFkMjQyZDQyZTc3ZmU2MDcy
MWE1OTM2MTg2ZDEyOGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmgKQEAgLTM4LDcgKzM4LDggQEAgT0JKQ19DTEFTUyBOU0ZpbGVXcmFwcGVyOwogT0JK
Q19DTEFTUyBOU1N0cmluZzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODIsMTQgKzgzLDE0IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCi0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3Q7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0
OwogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplRm9yRGlzcGxheSgpIGNvbnN0
OwogCiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xvc2luZ0ltYWdl
KSB7IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQogICAgIGJvb2wg
aGFzRW5jbG9zaW5nSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2hhc0VuY2xvc2luZ0ltYWdlOyB9
CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVw
cmVzZW50YXRpb24oKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcm
IGNvbnRlbnRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCB1cGRh
dGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOwogCiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IEF0dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIs
IFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCAzYzc5YjQxOTJmMTlh
YTFjMWMwYzZjNDFlMTE3YTY3ZDNkZWU5M2I3Li43YjhkZjQ2YWM5MDQxNzA2ZjhjNzlkMTM1MDQ1
OThiODZjNWIxMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB0ZW1wbGF0
ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZGF0YSwg
Y29uc3QgRnVuY3Rpb248YgogewogICAgIGRhdGEuYXBwbHkoZnVuY3Rpb24pOwogfQotdGVtcGxh
dGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25z
dCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCit0ZW1wbGF0
ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBk
YXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24p
CiB7CiAgICAgZnVuY3Rpb24oeyBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9y
ZS5oCmluZGV4IDg4MjA0ZjAwMTM2Nzg2MDQ1YTViMzJhNzNjNjc4YTBiYTg1MDY4MWMuLjhkYjcw
MzhjMWM5MDE2ZGFkZmJmNGI1ZWEwOTk4YzQ4NzkxZjU3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oCkBAIC0zMCw3
ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiB9CiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggNTYyMzQwMTQ1OWRhNWZlMzBmNDkxYTQx
ZmIzNDdhNjc1NzIwMmM0MC4uMTExZjA5MjYzZjgyMjM4MjlhNWFkMjY0NDM0YmE0MjBmMTk4ZGQx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25D
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNs
aWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBDb250ZW50UnVsZUxpc3RSZXN1bHRzOwog
Y2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KIApAQCAtMTE5LDcgKzExOSw3
IEBAIHB1YmxpYzoKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZpcnR1YWwgdm9pZCBkaWRT
dGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5n
JiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJikgeyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgUmVmPE5hdmlnYXRpb25B
Y3Rpb24+JiYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0
ZW5lciwgT2JqZWN0KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IGNmNDYyMTZjYTI1YTllZGY4MmUzMTlh
MzMwMzA3OTFlOGQ0ZTE1M2MuLjg0ZWQyY2I5YTc0NDI0YTM0M2FkYjEyMjY3ODQ5Yzc0Y2VjNzUz
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRh
Y2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQ
SUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTM3LDcgKzEzNyw3IEBAIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IEF0dGFjaG1lbnQ6OmZpbGVTaXplRm9yRGlzcGxheSgpIGNvbnN0CiAgICAgcmV0dXJu
IFtmaWxlV3JhcHBlciByZWd1bGFyRmlsZUNvbnRlbnRzXS5sZW5ndGg7CiB9CiAKLVJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNv
bnN0CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6
ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faGFzRW5jbG9zaW5nSW1h
Z2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTUxLDcgKzE1MSw3IEBAIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNv
bnN0CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVy
biBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICByZXR1cm4gV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogfQogCiBib29sIEF0dGFj
aG1lbnQ6OmlzRW1wdHkoKSBjb25zdApAQCAtMTU5LDcgKzE1OSw3IEBAIGJvb2wgQXR0YWNobWVu
dDo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2ZpbGVXcmFwcGVyICYmICFtX2ZpbGVX
cmFwcGVyR2VuZXJhdG9yOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRh
Y2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgYXV0byBmaWxlV3JhcHBlciA9IHRoaXMt
PmZpbGVXcmFwcGVyKCk7CiAKQEAgLTE3MCwxMCArMTcwLDEwIEBAIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigp
IGNvbnN0CiAgICAgaWYgKCFzZXJpYWxpemVkRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERh
dGEpOworICAgIHJldHVybiBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c2VyaWFsaXplZERhdGEpOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVk
UmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQXR0
YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0
IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBpZiAoIW1fd2ViUGFnZSkKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLVVJMU2NoZW1lVGFzay5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VSTFNjaGVtZVRhc2subW0KaW5kZXggM2EwNjFiMjQwN2RlMWU1OTc5MDRmOThkNjk0MGNhOTBh
ZTY2YzViMi4uNDVhOTZmZTJjMTZiZDEwOTE0NjQ0MTQ2MTM3ZGQxYjZhN2Y1ODRmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lVGFzay5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVUYXNr
Lm1tCkBAIC0xMjMsNyArMTIzLDcgQEAgLSAodm9pZClkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJM
UmVzcG9uc2UgKilyZXNwb25zZQogLSAodm9pZClkaWRSZWNlaXZlRGF0YTooTlNEYXRhICopZGF0
YQogewogICAgIGF1dG8gZnVuY3Rpb24gPSBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxm
KSwgc2VsZiwgcHJvdGVjdGVkRGF0YSA9IHJldGFpblB0cihkYXRhKSwgZGF0YV0gKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIHJldHVybiBfdXJsU2NoZW1lVGFzay0+ZGlkUmVjZWl2ZURhdGEoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSkpOworICAgICAgICByZXR1cm4gX3VybFNjaGVt
ZVRhc2stPmRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhKSk7CiAgICAgfTsKIAogICAgIGF1dG8gcmVzdWx0ID0gZ2V0RXhjZXB0aW9uVHlw
ZUZyb21NYWluUnVuTG9vcChXVEZNb3ZlKGZ1bmN0aW9uKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBiYWQ0N2MwNzZlY2RjNWE4ZmYw
OTBmNjcxMTc4MTVjN2VjOWQ2NDQ1Li42ZmE0MWYzNDRjZTY5YjJjNmM4MjEyOWE2MDEzOGExYjdh
ZGE2M2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KQEAgLTE1OTUsNyArMTU5NSw3IEBAIC0gKHZvaWQpX3N0b3JlQXBwSGlnaGxpZ2h0Oihj
b25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKWhpZ2hsaWdodAogICAgIGlmIChoaWdobGlnaHQu
dGV4dCkKICAgICAgICAgdGV4dCA9IGhpZ2hsaWdodC50ZXh0LnZhbHVlKCk7CiAKLSAgICBhdXRv
IHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhI
aWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0
ZXh0IGltYWdlOm5pbF0pOworICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBw
SGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmls
XSk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dl
YlZpZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5OZXdHcm91cDpyZXF1ZXN0T3JpZ2luYXRlZEluQXBw
OildKQogICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBzdG9yZUFwcEhpZ2hsaWdodDp3
a0hpZ2hsaWdodC5nZXQoKSBpbk5ld0dyb3VwOmhpZ2hsaWdodC5pc05ld0dyb3VwID09IFdlYkNv
cmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMgcmVxdWVzdE9yaWdpbmF0ZWRJbkFw
cDpoaWdobGlnaHQucmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA9PSBXZWJDb3JlOjpIaWdobGlnaHRS
ZXF1ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggMTk5NjMwMzI4YTU4N2JlMTEzZWJl
NTIzN2EwZWY4YWZmZjczZTNlNS4uZDk0NzJjN2Y1ZDQxNzVkN2UyYzQyNWVkZDQyNzY3MjEzMzEy
NzBkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0
YWJhc2UuY3BwCkBAIC01NzksNyArNTc5LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmxvYWRJY29u
Rm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEFsbG93RGF0YWJhc2VXcml0ZQogICAg
ICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sb2FkZWRJY29ucy5zZXQoaWNvblVSTCwg
c3RkOjptYWtlX3BhaXI8UGxhdGZvcm1JbWFnZVB0ciwgTW9ub3RvbmljVGltZT4obnVsbHB0ciwg
TW9ub3RvbmljVGltZTo6bm93KCkpKTsKICAgICAgICAgICAgICAgICBpZiAoIWljb25EYXRhLmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdlID0gQml0bWFwSW1hZ2U6
OmNyZWF0ZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UtPnNldERhdGEoU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShpY29uRGF0YSkpLCB0cnVlKSA8IEVuY29kZWREYXRhU3Rh
dHVzOjpTaXplQXZhaWxhYmxlKQorICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UtPnNldERh
dGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoaWNvbkRhdGEpKSwgdHJ1
ZSkgPCBFbmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgICAgICAgICAgICAgIGF1dG8gbmF0aXZl
SW1hZ2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKQEAgLTYxOSw3ICs2
MTksNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5n
JiBpY29uVVJMLCBjb25zdCB1aW50OF90KiBpY29uRAogICAgICAgICAgICAgaWYgKGljb25EYXRh
U2l6ZSkgewogICAgICAgICAgICAgICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2U7
CiAgICAgICAgICAgICAgICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKLSAg
ICAgICAgICAgICAgICBpZiAoaW1hZ2UtPnNldERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoaWNv
bkRhdGEsIGljb25EYXRhU2l6ZSksIHRydWUpID49IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZh
aWxhYmxlICYmIChuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpKSkKKyAgICAgICAgICAgICAgICBpZiAoaW1hZ2UtPnNldERhdGEoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGljb25EYXRhLCBpY29uRGF0YVNpemUpLCB0cnVlKSA+PSBFbmNvZGVk
RGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZSAmJiAobmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkpCiAgICAgICAgICAgICAgICAgICAgIGFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUuZmlyc3QgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOwogICAg
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hl
bWVSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVS
SVNjaGVtZVJlcXVlc3QuY3BwCmluZGV4IGQzNzQyNTNkNzdkN2FiZjNjMzNiZjE0MjY2ZWI3NmU2
OGJlN2M0YjguLjI4ZjI5NjgxM2E4YjQ3MGYzNDdmNDVlY2JlOTNhOGM2NTg4MTk1NzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJl
cXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVS
SVNjaGVtZVJlcXVlc3QuY3BwCkBAIC0yNDcsNyArMjQ3LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0
VVJJU2NoZW1lUmVxdWVzdFJlYWRDYWxsYmFjayhHSW5wdXRTdHJlYW0qIGlucHV0U3RyZWFtLCBH
QXN5bmMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHByaXYtPnRhc2stPmRpZFJlY2Vp
dmVEYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHByaXYtPnJlYWRCdWZmZXIsIGJ5dGVzUmVhZCkp
OworICAgIHByaXYtPnRhc2stPmRpZFJlY2VpdmVEYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShwcml2LT5yZWFkQnVmZmVyLCBieXRlc1JlYWQpKTsKICAgICBwcml2LT5ieXRlc1Jl
YWQgKz0gYnl0ZXNSZWFkOwogICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMoaW5wdXRTdHJl
YW0sIHByaXYtPnJlYWRCdWZmZXIsIGdSZWFkQnVmZmVyU2l6ZSwgUnVuTG9vcFNvdXJjZVByaW9y
aXR5OjpBc3luY0lPTmV0d29yaywgcHJpdi0+Y2FuY2VsbGFibGUuZ2V0KCksCiAgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4od2Via2l0VVJJU2NoZW1lUmVxdWVz
dFJlYWRDYWxsYmFjayksIGdfb2JqZWN0X3JlZihyZXF1ZXN0LmdldCgpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGY1
YWYwOTJiYjIyNTgyMDU5NmNiMDI1MzBkMGRiMGI3Njk0NDAzMjkuLjZiNzU2YWE0MTdiNTFlZGQ3
ZmQzZmZiZGRmM2MyMmU0NDUzMTkyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBE
cm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQoSW50UG9pbnQmJiBwb3NpdGlvbiwgR3RrU2VsZWN0aW9u
RGF0YSogZGF0YSwgdW5zaWcKICAgICAgICAgaW50IGxlbmd0aDsKICAgICAgICAgY29uc3QgYXV0
byogY3VzdG9tRGF0YSA9IGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0YV93aXRoX2xlbmd0aChk
YXRhLCAmbGVuZ3RoKTsKICAgICAgICAgaWYgKGxlbmd0aCA+IDApCi0gICAgICAgICAgICBtX3Nl
bGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0
YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7CisgICAgICAgICAgICBtX3NlbGVjdGlv
bkRhdGEtPnNldEN1c3RvbURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3Rv
bURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9E
cm9wVGFyZ2V0R3RrNC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BU
YXJnZXRHdGs0LmNwcAppbmRleCBhYmJhY2EyOWM3NDExMWRjYzA5MzU3Mzk0OTNiOTNjNzQ0NTI1
MGQ4Li5mYTJkZWZiYjFjNjJjOTJlZGUwYTc5MjVkZDUwZTMyMjhjZTNkNjIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcApAQCAt
MTc4LDcgKzE3OCw3IEBAIHZvaWQgRHJvcFRhcmdldDo6YWNjZXB0KEdka0Ryb3AqIGRyb3AsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IHBvc2l0aW9uCiAgICAgICAgICAgICAgICAg
bV9zZWxlY3Rpb25EYXRhLT5zZXRDYW5TbWFydFJlcGxhY2UodHJ1ZSk7CiAgICAgICAgICAgICBl
bHNlIGlmIChtaW1lVHlwZSA9PSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpCi0gICAgICAg
ICAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9tRGF0YShTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKSk7CisgICAgICAgICAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0
YS0+c2V0Q3VzdG9tRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQo
KSkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBkaWRMb2FkRGF0YSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAppbmRleCBhYzRh
MGY0MzcwMTUyZWQ1NzJiNTA5MWRmYTUxYmFlYmFiODdmNGU5Li5jODAyOWMxNDBhNmRkMTRiMTk2
NDkyMjViODc4MzBlZWMxMzQwMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAKICNp
ZiBVU0UoUVVJQ0tfTE9PSykKICAgICAgICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tE
b2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RG
OjpTdHJpbmcmIHV0aSkgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikg
b3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJy
aWRlOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggMzg1NTg4MmM4N2RjOWVkMzFj
MWVmMGJhYjYxNmIxZTY0NTk0NGVlZi4uOGQzYTg1NjQ2MmVhZWY3NDFkOGMyOWUyNTkyZmQ1NzM2
NmY1OTljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbQpAQCAtMTIyMCw3ICsxMjIwLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5h
dmlnYXRpb25DbGllbnQ6OmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnIK
ICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmln
YXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmll
dyBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lV2l0aEZpbGVOYW1l
OmZpbGVOYW1lIHV0aTp1dGldOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghbV9uYXZpZ2F0
aW9uU3RhdGUpCiAgICAgICAgIHJldHVybjsKQEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRl
Pj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+
bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1
ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmln
YXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3
Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IDgwMmZmYWE2ZDZlZGJlYTJlOTcy
Nzc0ZTI2OTY1YjJkYmIyYTczNWUuLjNlYTIxNTYwMzc4OWUxYjBiMjRlNWI1NTk5ZDM3NTE5N2Y1
OTUyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQcm94eUNvY29hLm1tCkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnNlbmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoKQogICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGF1dG8gcmVn
aXN0cmF0aW9uRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlv
bnMuZ2V0KCkpOworICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlvbnMuZ2V0KCkpOwogICAg
ICAgICAgICAgd2Vha1RoaXMtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNvbnN1bWVBdWRp
b0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoeyByZWdpc3RyYXRpb25EYXRhIH0pLCAwKTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwuaAppbmRleCAzZjZkZDFmMjQyZTdhMTE1ZWNmNzk4MzkwZjM0YjYzNWM2ZThkNmY5Li5mNTg5
MTI0MTcwMmRhYTQyMGNjNGU2ZTI0NjI4YTFjZGU4OTA3ZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKQEAgLTUwNiw3ICs1MDYsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYsIGNvbnN0IFNo
YXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZSk7CiAgICAgdm9pZCBzZXRGaWxlQW5kVVJMVHlw
ZXMoTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0
bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBOU1Bhc3RlYm9hcmQgKik7
Ci0gICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSosIE5TU3Ry
aW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0
cmluZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJsZVVSTCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBh
cmNoaXZlQnVmZmVyLCBOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5TU3RyaW5nICpwYXN0ZWJv
YXJkT3JpZ2luKTsKKyAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6Oklt
YWdlKiwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAq
dGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBhcmNoaXZlQnVmZmVyLCBOU1N0cmluZyAqcGFzdGVib2FyZE5h
bWUsIE5TU3RyaW5nICpwYXN0ZWJvYXJkT3JpZ2luKTsKICAgICB2b2lkIHBhc3RlYm9hcmRDaGFu
Z2VkT3duZXIoTlNQYXN0ZWJvYXJkICopOwogICAgIHZvaWQgcHJvdmlkZURhdGFGb3JQYXN0ZWJv
YXJkKE5TUGFzdGVib2FyZCAqLCBOU1N0cmluZyAqdHlwZSk7CiAgICAgTlNBcnJheSAqbmFtZXNP
ZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3RpbmF0aW9u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXgg
M2Q5ZTg3N2IwY2I3NTY1NGI2MzkxNjM5NTU3ZjUyYjYwMzkyY2FjOS4uYzkxMzVjZjE1MjA4OTI5
OTQ2OWI1ZTcwOGNjYjIwOTk3ZWIzYTkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5NzYsNyArMjk3Niw3IEBAIGJvb2wgV2ViVmlld0lt
cGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwg
TlNBcnJheSAqCiAgICAgICAgIGlmIChbW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0gaXNFcXVhbFRv
OldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldKQogICAgICAgICAgICAgW3Bh
c3RlYm9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgp
IGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CiAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRl
eDppXSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2Jq
ZWN0QXRJbmRleDppXSk7CiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/
IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpbdHlwZXMgb2JqZWN0
QXRJbmRleDppXV07CiAgICAgICAgIH0KICAgICB9CkBAIC00NDQ5LDcgKzQ0NDksNyBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpzZXRGaWxlQW5kVVJMVHlwZXMoTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0
cmluZyAqZXh0ZW5zaW9uLCBOUwogICAgIG1fcHJvbWlzZWRVUkwgPSB1cmw7CiB9CiAKLXZvaWQg
V2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFn
ZSwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0
bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcg
Km9yaWdpbklkZW50aWZpZXIpCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJ
bWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcg
KmV4dGVuc2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0cmluZyAqdmlz
aWJsZVVSTCwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYXJjaGl2ZUJ1ZmZlciwg
TlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU1N0cmluZyAqb3JpZ2luSWRlbnRpZmllcikKIHsK
ICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRX
aXRoTmFtZTpwYXN0ZWJvYXJkTmFtZV07CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB0
eXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOldl
YkNvcmU6OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCksIG5pbF0pOwpAQCAtNDQ3
MCw3ICs0NDcwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2Uo
V2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW4KICAgICBzZXRGaWxlQW5kVVJM
VHlwZXMoZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgcGFzdGVi
b2FyZCk7CiAKICAgICBpZiAoYXJjaGl2ZUJ1ZmZlcikgewotICAgICAgICBhdXRvIG5zRGF0YSA9
IGFyY2hpdmVCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGFy
Y2hpdmVCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpu
c0RhdGEuZ2V0KCkgZm9yVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2
ZV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKQEAgLTQ1MDEsNyArNDUwMSw3
IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByb3ZpZGVEYXRhRm9yUGFzdGVib2FyZChOU1Bhc3RlYm9h
cmQgKnBhc3RlYm9hcmQsIE5TU3RyaW5nICp0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChb
dHlwZSBpc0VxdWFsOm1fcHJvbWlzZWRJbWFnZS0+dXRpKCldICYmIG1fcHJvbWlzZWRJbWFnZS0+
ZGF0YSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFn
ZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRh
ID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTooX19icmlkZ2UgTlNEYXRhICop
cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6dHlwZV07CiAgICAgfQogCkBAIC00NTU0LDcgKzQ1
NTQsNyBAQCBOU0FycmF5ICpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVk
QXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3RpbgogICAgIFJldGFpblB0cjxOU0RhdGE+IGRh
dGE7CiAKICAgICBpZiAobV9wcm9taXNlZEltYWdlKSB7Ci0gICAgICAgIGRhdGEgPSBtX3Byb21p
c2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGRhdGEgPSBtX3Byb21p
c2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
ICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJG
aWxlV2l0aENvbnRlbnRzOmRhdGEuZ2V0KCldKTsKICAgICB9IGVsc2UKICAgICAgICAgd3JhcHBl
ciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzptX3Byb21pc2VkVVJMXSBvcHRpb25zOk5TRmlsZVdyYXBwZXJSZWFkaW5nSW1t
ZWRpYXRlIGVycm9yOm5pbF0pOwpAQCAtNDU4NCw3ICs0NTg0LDcgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBT
dHJpbmcmIG8KICAgICBoYW5kbGVET01QYXN0ZVJlcXVlc3RXaXRoUmVzdWx0KFdlYkNvcmU6OkRP
TVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmUpOwogCiAgICAgTlNEYXRhICpk
YXRhID0gW05TUGFzdGVib2FyZC5nZW5lcmFsUGFzdGVib2FyZCBkYXRhRm9yVHlwZTpAKFdlYkNv
cmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwotICAgIGF1dG8gYnVmZmVy
ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgYXV0byBidWZmZXIg
PSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgaWYg
KFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5n
ZXQoKSkub3JpZ2luKCkgPT0gb3JpZ2luSWRlbnRpZmllcikgewogICAgICAgICBtX3BhZ2UtPmdy
YW50QWNjZXNzVG9DdXJyZW50UGFzdGVib2FyZERhdGEoTlNQYXN0ZWJvYXJkTmFtZUdlbmVyYWwp
OwogICAgICAgICBjb21wbGV0aW9uKFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6Okdy
YW50ZWRGb3JHZXN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyLmNwcAppbmRleCA0NmY1ZTI1NThmYmRmMGZhZDYwNzVkZjQ3ZjU0ODg1NzAwM2M1
ZDNiLi41MTM0NTA4OGFjNTVlZWYwNzEyMTg0OTIxYzhjY2YxM2E5MWNkOTQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC0yMDksNyAr
MjA5LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnBsYXRmb3JtU3Rh
cnRUYXNrKFdlYlBhZ2VQcm94eSYgcGFnZVByb3h5LAogICAgIGh0bWxCdWlsZGVyLmFwcGVuZCgi
PC9odG1sPiIpOwogCiAgICAgYXV0byBodG1sID0gaHRtbEJ1aWxkZXIudG9TdHJpbmcoKS51dGY4
KCk7Ci0gICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaHRtbC5kYXRhKCksIGh0
bWwubGVuZ3RoKCkpOworICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShodG1sLmRhdGEoKSwgaHRtbC5sZW5ndGgoKSk7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZShyZXF1ZXN0VVJMLCAidGV4dC9odG1sIl9zLCBodG1sLmxlbmd0aCgpLCAiVVRGLTgi
X3MpOwogICAgIHRhc2suZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKICAgICB0YXNrLmRp
ZFJlY2VpdmVEYXRhKFdURk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9JbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9JbnNwZWN0b3JSZXNv
dXJjZVVSTFNjaGVtZUhhbmRsZXIuY3BwCmluZGV4IDQ3NGE1OGNkZWIwNTZiNjhlYWZlMTFjMDRl
YTkwMDI0MjkwMjdiNTUuLmJhZDhiMDI1NmE3Yzc0MWEzMGVlNWRiNTk2ZjhjNDkzZjQzM2RlYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vSW5zcGVj
dG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3Ivd2luL0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlci5jcHAK
QEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXI6
OnBsYXRmb3JtU3RhcnRUYXNrKFdlYlBhZ2VQcm94eSYsIFdlYlVSTFMKICAgICBpZiAoY29udGVu
dFR5cGUuaXNFbXB0eSgpKQogICAgICAgICBjb250ZW50VHlwZSA9ICJhcHBsaWNhdGlvbi9vY3Rl
dC1zdHJlYW0iX3M7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShyZXF1
ZXN0VVJMLCBjb250ZW50VHlwZSwgZmlsZS5zaXplKCksICJVVEYtOCJfcyk7Ci0gICAgYXV0byBk
YXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KGZpbGUuZGF0YSgpKSwgZmlsZS5zaXplKCkpOworICAgIGF1dG8gZGF0YSA9IFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
ZmlsZS5kYXRhKCkpLCBmaWxlLnNpemUoKSk7CiAKICAgICB0YXNrLmRpZFJlY2VpdmVSZXNwb25z
ZShyZXNwb25zZSk7CiAgICAgdGFzay5kaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGRhdGEpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBjNDg1YzdmYzMxM2VhMDgzM2ZjNjA2
MjY3MTY5ZDY5MmE4MjQwOTI4Li5lNWU3ODU1NGQ3NmU0Mjc0MmY5YjNhOTE5ZjE3YzM3M2I2ZmZm
NzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0zMjgsNyArMzI4LDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBVU0UoQVBQS0lUKQotICAgIHZpcnR1YWwgdm9pZCBz
ZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZp
ZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYg
ZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpID0gMDsK
ICNlbmRpZgogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvRGV2aWNl
U3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgPSAwOwpAQCAtNDY4LDcgKzQ2OCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2luZ0VsZW1lbnQoKSA9IDA7CiAgICAg
dmlydHVhbCBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZl
bnQmLCBib29sIGlzQ2hhckV2ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uSW5m
b3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24m
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFy
eShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwg
Y29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJ
Rm9yUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVy
aW5nVGFwSWZOZWNlc3NhcnkoV2ViS2l0OjpUYXBJZGVudGlmaWVyKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGIwNDUzOWQ2MDA1ZDU0M2JjNjJmYjg5MDU5
OTY0Njg5MzJhMzNlOTIuLjQ2ODdmYjM2OTI1N2UzNjQzMTAwZDZmOTI3NmM4YTk2MzI4MzA2Y2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yNTksNyArMjU5LDcg
QEAgY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJ1bkxvb3BP
YnNlcnZlcjsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
OwogY2xhc3MgVGV4dEluZGljYXRvcjsKIGNsYXNzIFZhbGlkYXRpb25CdWJibGU7CkBAIC0xMTc5
LDcgKzExNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2li
aWxpdHlUb2tlbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiB3aW5kb3dUb2tlbik7CiAgICAgYm9vbCByZWFkU2VsZWN0aW9u
RnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgU3RyaW5n
IHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7
CiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKTsKICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hu
b2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBkZjU5ZDU2ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUx
ZDgwYzE2YmQxLi4xOTk3ZWFlMjBhYzIyY2EzYWU4MDA0YzcwNGZhMjJkYTYwOWUwMDlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtNTEsNiAr
NTEsNyBAQCBXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhh
bmRsZXImIGhhbmRsZXIsIFdlYlBhZ2VQcm94eSYgcAogICAgICwgbV9yZXF1ZXN0KFdURk1vdmUo
cGFyYW1ldGVycy5yZXF1ZXN0KSkKICAgICAsIG1fZnJhbWVJbmZvKEFQSTo6RnJhbWVJbmZvOjpj
cmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLmZyYW1lSW5mbyksICZwYWdlKSkKICAgICAsIG1fc3lu
Y0NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc3luY0NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAs
IG1fc3luY0RhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9CkBAIC0xNjgsNyArMTY5LDcgQEAgYXV0byBX
ZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpIC0+IEUKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0KIAot
YXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHlwZQorYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNl
aXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlv
blR5cGUKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xODcsMTAgKzE4
OCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5CiAgICAgbV9kYXRhU2VudCA9IHRydWU7CiAK
ICAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAg
ICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbV9zeW5jRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgbV9zeW5jRGF0
YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBl
OjpOb25lOwogICAgIH0KIApAQCAtMjE3LDEyICsyMTUsOSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRh
c2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25U
eXBlCiAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwogICAgIAogICAgIGlmIChpc1N5bmMoKSkgewot
ICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0g
ICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUo
KSB9OwotCisgICAgICAgIHNpemVfdCBzaXplID0gbV9zeW5jRGF0YS0+c2l6ZSgpOworICAgICAg
ICBWZWN0b3I8dWludDhfdD4gZGF0YSA9IHsgbV9zeW5jRGF0YS0+dGFrZSgpLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIHNpemUgfTsKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIo
bV9zeW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKLSAgICAgICAgbV9zeW5jRGF0
YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlm
aWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJRCwgZXJyb3IpLCBtX3dlYlBhZ2VJRCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggNmE4NTYwMjFiMTI5OTI0
NmM3MDAwOTNkZDBhNDdmMmMxMzA4NTI2Ny4uNzk5NDJmOWIyMGEyNjYwY2E0YTdkY2Q0NTAxOGQx
NmU0M2I2NjZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
aApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEZyYW1lSW5mbzsKQEAgLTQzLDcg
KzQ0LDggQEAgY2xhc3MgRnJhbWVJbmZvOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVz
b3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRl
cjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04NCw3ICs4Niw3IEBAIHB1YmxpYzoKICAg
ICBFeGNlcHRpb25UeXBlIHdpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgIEZ1bmN0aW9uPHZvaWQoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFBlcmZv
cm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNl
aXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBFeGNlcHRpb25UeXBl
IGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsK
ICAgICBFeGNlcHRpb25UeXBlIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKTsKIAogICAgIHZvaWQgc3RvcCgpOwpAQCAtMTE1LDcgKzExNyw3IEBAIHByaXZhdGU6CiAK
ICAgICBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwog
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5n
Rm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKaW5kZXggNzg2NmNkYjE3NzQ2MDA3YWIw
YTdhMTdjNTViODdjN2YxNjRjMmJhZS4uNzI3OWY4NDRjYzJiYmQyYjAxN2ZlMGYwOTdkZTAxODcw
YTlhODUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2Fy
ZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaApAQCAtMzYs
NyArMzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBfR3RrQ2xpcGJvYXJkIEd0a0NsaXBib2FyZDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb3JtYXRzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwogICAgIHZvaWQgcmVhZFRleHQo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwogICAgIHZvaWQgcmVhZEZpbGVQ
YXRocyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2
b2lkIHJlYWRCdWZmZXIoY29uc3QgY2hhciosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYpOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBj
aGFyKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJik+JiYpOwogICAgIHZvaWQgd3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYm
KTsKICAgICB2b2lkIGNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9D
bGlwYm9hcmRHdGszLmNwcAppbmRleCBjMmJmNTE4M2IzMGYxMGU5ZWI3ODEzY2RhZGEyMjNlOTE4
OWM3NDU5Li45ZTVhMzRjYTcyOGRiOTVhZDgxMzM4MThhODZlNTViODhlYmQzZDljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCkBAIC0xMjYsMjEg
KzEyNiwyMSBAQCB2b2lkIENsaXBib2FyZDo6cmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZQogc3RydWN0IFJlYWRCdWZmZXJBc3lu
Y0RhdGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGV4cGxp
Y2l0IFJlYWRCdWZmZXJBc3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmKT4mJiBoYW5kbGVyKQorICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJB
c3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKICAgICAgICAgOiBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGhhbmRsZXIpKQogICAgIHsKICAgICB9CiAKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKKyAg
ICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCi12b2lkIENsaXBib2FyZDo6cmVhZEJ1
ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENsaXBib2Fy
ZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGd0a19jbGlwYm9hcmRfcmVxdWVzdF9jb250ZW50cyhtX2NsaXBib2FyZCwg
Z2RrX2F0b21faW50ZXJuKGZvcm1hdCwgVFJVRSksIFtdKEd0a0NsaXBib2FyZCosIEd0a1NlbGVj
dGlvbkRhdGEqIHNlbGVjdGlvbiwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFJlYWRCdWZmZXJBc3luY0RhdGE+IGRhdGEoc3RhdGljX2Nhc3Q8UmVhZEJ1ZmZl
ckFzeW5jRGF0YSo+KHVzZXJEYXRhKSk7CiAgICAgICAgIGludCBjb250ZW50c0xlbmd0aDsKICAg
ICAgICAgY29uc3QgYXV0byogY29udGVudHMgPSBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X2RhdGFf
d2l0aF9sZW5ndGgoc2VsZWN0aW9uLCAmY29udGVudHNMZW5ndGgpOwotICAgICAgICBkYXRhLT5j
b21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cywg
Y29udGVudHNMZW5ndGggPiAwID8gc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb250ZW50c0xlbmd0aCkg
OiAwKSk7CisgICAgICAgIGRhdGEtPmNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cywgY29udGVudHNMZW5ndGggPiAwID8gc3Rh
dGljX2Nhc3Q8c2l6ZV90Pihjb250ZW50c0xlbmd0aCkgOiAwKSk7CiAgICAgfSwgbmV3IFJlYWRC
dWZmZXJBc3luY0RhdGEoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCmluZGV4IDA3YWJiNzEz
MTk4ODUzYjc4N2M2MzI0YmQ0ODBiMWUwODhhMmEzZDMuLjAzMjgzNGI3MDI2ZGZiMWVkM2RjZTgw
OTFlNzJhOWIyNGY1OTMzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9DbGlwYm9hcmRHdGs0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xp
cGJvYXJkR3RrNC5jcHAKQEAgLTEyMCwyMiArMTIwLDIyIEBAIHZvaWQgQ2xpcGJvYXJkOjpyZWFk
RmlsZVBhdGhzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29t
cGxlCiBzdHJ1Y3QgUmVhZEJ1ZmZlckFzeW5jRGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOwogCi0gICAgZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5jRGF0YShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYmIGhhbmRsZXIp
CisgICAgZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5jRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBoYW5kbGVyKQogICAg
ICAgICA6IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikpCiAgICAgewogICAgIH0K
IAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
Jik+IGNvbXBsZXRpb25IYW5kbGVyOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKIH07
CiAKLXZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0IGNoYXIqIGZvcm1hdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0IGNoYXIqIGZvcm1h
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29uc3QgY2hhciogbWltZVR5
cGVzW10gPSB7IGZvcm1hdCwgbnVsbHB0ciB9OwogICAgIGdka19jbGlwYm9hcmRfcmVhZF9hc3lu
YyhtX2NsaXBib2FyZCwgbWltZVR5cGVzLCBHX1BSSU9SSVRZX0RFRkFVTFQsIG51bGxwdHIsIFtd
KEdPYmplY3QqIGNsaXBib2FyZCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJE
YXRhKSB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFkQnVmZmVyQXN5bmNEYXRhPiBkYXRh
KHN0YXRpY19jYXN0PFJlYWRCdWZmZXJBc3luY0RhdGEqPih1c2VyRGF0YSkpOwogICAgICAgICBH
UmVmUHRyPEdJbnB1dFN0cmVhbT4gaW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ2RrX2NsaXBib2Fy
ZF9yZWFkX2ZpbmlzaChHREtfQ0xJUEJPQVJEKGNsaXBib2FyZCksIHJlc3VsdCwgbnVsbHB0ciwg
bnVsbHB0cikpOwogICAgICAgICBpZiAoIWlucHV0U3RyZWFtKSB7Ci0gICAgICAgICAgICBkYXRh
LT5jb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKTsKKyAg
ICAgICAgICAgIGRhdGEtPmNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBA
IC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFy
KiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcgogICAgICAgICAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFkQnVmZmVyQXN5bmNEYXRhPiBkYXRhKHN0YXRpY19jYXN0
PFJlYWRCdWZmZXJBc3luY0RhdGEqPih1c2VyRGF0YSkpOwogICAgICAgICAgICAgICAgIGdzc2l6
ZSB3cml0dGVuQnl0ZXMgPSBnX291dHB1dF9zdHJlYW1fc3BsaWNlX2ZpbmlzaChHX09VVFBVVF9T
VFJFQU0oc3RyZWFtKSwgcmVzdWx0LCBudWxscHRyKTsKICAgICAgICAgICAgICAgICBpZiAod3Jp
dHRlbkJ5dGVzIDw9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgZGF0YS0+Y29tcGxldGlvbkhh
bmRsZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGRhdGEtPmNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0R1Jl
ZihnX21lbW9yeV9vdXRwdXRfc3RyZWFtX3N0ZWFsX2FzX2J5dGVzKEdfTUVNT1JZX09VVFBVVF9T
VFJFQU0oc3RyZWFtKSkpOwotICAgICAgICAgICAgICAgIGRhdGEtPmNvbXBsZXRpb25IYW5kbGVy
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJ5dGVzLmdldCgpKSk7CisgICAgICAgICAg
ICAgICAgZGF0YS0+Y29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGJ5dGVzLmdldCgpKSk7CiAgICAgICAgICAgICB9LCBkYXRhLnJlbGVhc2Uo
KSk7CiAgICAgfSwgbmV3IFJlYWRCdWZmZXJBc3luY0RhdGEoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmgKaW5kZXggNTYwNzNiYjgzNzdiMDZiYzQxNWQ1NmUwNjc4YzMxNmY2YzhlMmJiMy4u
ZTlkMjM2OTNjZGM5YTcwZWYxZDIxNDgwNjMxYTQ1Y2ZlOTY3YWE4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTE4Nyw3ICsxODcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50Jiwg
Ym9vbCBpc0NoYXJFdmVudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9u
RGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1BsYXli
YWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVs
ZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwogICAgIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRp
b24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmlu
ZGV4IDMyZDFmODljMDU4YjliNDBhMThlOGY2N2JjN2JlOWYwYTEwMjUwOGIuLjY2YWM0Y2FhOGM4
MzJiM2RiNTE4OTc5YjBlZGJmYjYxNjQ2NGQwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lk
IFBhZ2VDbGllbnRJbXBsOjpwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVy
YWN0aW9uSW5mb3JtYXRpb25BdAogICAgIFttX2NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9ybWF0
aW9uRGlkQ2hhbmdlOmluZm9dOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VU
b0xpYnJhcnkoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUGFnZUNsaWVu
dEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBp
bWFnZUJ1ZmZlcikKIHsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSBpbWFnZUJ1
ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgVUlJbWFnZURhdGFXcml0ZVRvU2F2ZWRQaG90b3NB
bGJ1bShpbWFnZURhdGEuZ2V0KCksIG5pbCwgTlVMTCwgTlVMTCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRl
eCAxYTgxY2NlNDQ1NWViMWE3MmIxMGU4ZjI0NzNjNjBhMjkxZWE1OGJhLi4wYzYyNWMzMGQzMDNm
YmQ5ODQ5Yjg0YjZlN2FhZmEzNGNmN2MzNDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4MjEsNyAr
MzgyMSw3IEBAIC0gKEJPT0wpY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6KFNFTClhY3Rpb24g
d2l0aFNlbmRlcjooaWQpc2VuZGVyCiAKICAgICAgICAgTlNBcnJheSAqYWxsQ3VzdG9tUGFzdGVi
b2FyZERhdGEgPSBbcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpIGluSXRlbVNldDppbmRpY2VzXTsKICAg
ICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEpIHsKLSAg
ICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IGZv
Y3VzZWREb2N1bWVudE9yaWdpbikKICAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwogICAgICAg
ICB9CkBAIC02NTk5LDcgKzY1OTksNyBAQCBzdGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJkSXRlbU9y
aWdpbnNNYXRjaE9yaWdpbihVSVBhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAgICAgICAg
IGlmICghZGF0YS5sZW5ndGgpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRv
IGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICBh
dXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
KTsKICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVk
QnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgIT0gb3JpZ2luSWRlbnRpZmllcikKICAgICAg
ICAgICAgIHJldHVybiBOTzsKIApAQCAtNzU3MCw3ICs3NTcwLDcgQEAgLSAodm9pZClhY3Rpb25T
aGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVs
ZW1lbnRXaXQKIHsKICAgICBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0
YTsKICAgICBOU1N0cmluZyogZmlsZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IiVALnBuZyIsIChOU1N0cmluZyopV0VCX1VJX1NUUklORygiU2hhcmVkIEltYWdlIiwgIkRlZmF1
bHQgbmFtZSBmb3IgdGhlIGZpbGUgY3JlYXRlZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0aCBubyBl
eHBsaWNpdCBuYW1lLiIpXTsKLSAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFn
ZSkpIH0gfTsKKyAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1h
Z2UpKSB9IH07CiAgICAgW3NlbGYgX3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0YSBpblJlY3Q6IHsg
W3NlbGYgY29udmVydFJlY3Q6Ym91bmRpbmdSZWN0IHRvVmlldzpzZWxmLndlYlZpZXddIH0gY29t
cGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggZjgwYzgyNDlkYTQ2N2I5NDIwMzVlNDYwNmU4OTli
Y2I2NGVkYmM2Yy4uYmE5OTVmYjllMDZiZjhkZGFmNTVhYTA3ZGIwZjJmZmE4MmQxODMxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0x
MzgsNyArMTM4LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFz
dGVib2FyZCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFn
ZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCmluZGV4IGQyMjM4ZmRjOWQxNmY3
N2Y4YzNkMzAyY2E5OTc2ZmU4M2YxYjNmMzcuLmFiODdjMmE3ZThjMzU3YTY1YjNjZmU2MDc5Mzhm
ZGZlYzhhNjUyYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5oCkBAIC0xMDAsOCArMTAwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGV4ZWN1
dGVVbmRvUmVkbyhVbmRvT3JSZWRvKSBvdmVycmlkZTsKICAgICBib29sIGV4ZWN1dGVTYXZlZENv
bW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpIG92ZXJyaWRlOwogICAgIHZv
aWQgc3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUmIGltYWdlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFByb21pc2VkRGF0YUZv
ckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmlu
ZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAotICAgICAgICBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFn
ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24s
IGNvbnN0IFN0cmluZyYgdGl0bGUsCisgICAgICAgIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCByZXNldFNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUlucHV0
Q29udGV4dEFib3V0RGlzY2FyZGVkQ29tcG9zaXRpb24oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCBhNDExMjEz
NWYyZWYxOTAxNWE1MmYxZTFiMDNhZTMwYTFmMjIzZDJhLi5jMzYzZTk1NWU4NzljMGUxODZiNDE1
MDkwOTEzMzY1YzIwZmU5MDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLm1tCkBAIC00MDAsNyArNDAwLDcgQEAgdm9pZCBQYWdlQ2xpZW50
SW1wbDo6c3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiBpdGVtLCBjb25zdCBTaGFy
ZWFibGVCaXQKICAgICBtX2ltcGwtPnN0YXJ0RHJhZyhpdGVtLCBpbWFnZSk7CiB9CiAKLXZvaWQg
UGFnZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmll
cikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGltYWdl
QnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlz
aWJsZVVSTCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQogewogICAgIGF1dG8gaW1hZ2UgPSBCaXRt
YXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgaW1hZ2UtPnNldERhdGEoV1RGTW92ZShpbWFnZUJ1ZmZl
ciksIHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0KaW5kZXggZTAzZTA4MGFlZTA4MzgwYjQ2ZmZlODlkZDhlNjFiNjZiNTk4ZGI0Ni4uMmY4
ZjhkM2ZlYTk0YzVhNDZjZjVhYTYxMjNiMDU4OWYyNzU4YTljMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yMjcsNyArMjI3LDcgQEAg
U3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAg
cmV0dXJuIHZhbHVlOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdl
UHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpCitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVBy
b3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFByb21pc2Vk
RGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFMKICAgICAg
ICAgcmV0dXJuOwogICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBzaGFyZWRNZW1vcnlJbWFnZS0+Y3Jl
YXRlU2hhcmVkQnVmZmVyKGltYWdlSGFuZGxlLmRhdGFTaXplKTsKIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGFyY2hpdmVCdWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGFyY2hpdmVCdWZmZXI7CiAgICAgaWYgKCFhcmNoaXZlSGFuZGxlLmhhbmRsZS5pc051bGwo
KSkgewogICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUFyY2hpdmUgPSBTaGFyZWRNZW1vcnk6Om1h
cChhcmNoaXZlSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7CiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5QXJjaGl2ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAppbmRleCBmYTk0MDI1ZWQ3NDcz
MGQyOGU3MTY0NjI4NWY5ZTViYTY1M2I4ZjEyLi5jMjhmZTY1ZjBjZjE2NDM5OTgxOGFjYTMyZjk4
MWNjNzc4ZjFlOTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE0uY3BwCkBAIC04NCw3ICs4NCw3IEBAIGJvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0
c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25z
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbW90ZUNETTo6c3VwcG9ydHNJbml0RGF0
YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0
Citib29sIFJlbW90ZUNETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBl
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKSBjb25zdAogewogICAgIC8vIFRo
aXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwgaW5zaWRlIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZSgpLgogICAgIHJldHVybiB0cnVlOwpAQCAtMTI5LDcg
KzEyOSw3IEBAIHZvaWQgUmVtb3RlQ0RNOjpsb2FkQW5kSW5pdGlhbGl6ZSgpCiAgICAgbV9mYWN0
b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVDRE1Qcm94eTo6TG9hZEFuZEluaXRpYWxpemUoKSwgbV9pZGVudGlmaWVyKTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIC8vIFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBs
YXRlciwgaW5zaWRlIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNlbnNl
KCkuCiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCmluZGV4IDBhZGRmODMzNTNiNmVhMWIyZThiMDJj
NmI3ZWUzZGFmNDY4Y2QzODMuLjhjNDU0ZWI4M2U1OTk0YThlNGQ1OTJkNTFkZjkxZmY5YjUyM2Ni
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0u
aApAQCAtNDgsMTMgKzQ4LDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3Vy
YXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25z
dCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RN
UmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBl
V2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGUmLCBjb25zdCBX
ZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7Ci0gICAgYm9v
bCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25z
dCBmaW5hbDsKICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzUmVxdWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYs
IGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNv
cmU6OkNETVJlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IFdlYkNv
cmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmlj
dGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVV
bmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5j
ZT4gY3JlYXRlSW5zdGFuY2UoKSBmaW5hbDsKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkg
ZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25z
ZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZp
bmFsOwogCiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVkSW5pdERhdGFUeXBl
czsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlLmNwcAppbmRleCBiNWRlYTIxZTk5NWE3MzdmMDM2ZjY0NTM4YzFmYjNl
Y2I1ZTZiYjU1Li5hMTNlNTE0NjBmNmJiOWY4MGVmM2QxYTg0MmVmYzBiOWY0NDU5MGM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlOjpp
bml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQwog
ICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpJbml0aWFsaXpl
V2l0aENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgZGlzdGluY3RpdmVJZGVudGlmaWVycywg
cGVyc2lzdGVudFN0YXRlKSwgV1RGTW92ZShjYWxsYmFjayksIG1faWRlbnRpZmllcik7CiB9CiAK
LXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNr
KQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFj
ayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9mYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNr
KEZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlLmgKaW5kZXggMTA2YmEzYjExNjFjOGRmMDlkNzFkZmU2NzliYTMz
ZDQyMzA3OWU5Ni4uMmM3ODUxZTQ0MGIwOGE1MmEyYWU3MGRhN2U0MTg4ODJlM2M2MTQzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2UuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogCiAgICAgSW1wbGVtZW50YXRp
b25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVu
dGF0aW9uVHlwZTo6UmVtb3RlOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRp
b24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGlu
Y3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYm
KSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNj
ZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmtleVN5c3RlbTsgfQogICAgIFJlZlB0cjxXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uLmNwcAppbmRleCBhZjBiYWQ0YzkwZDhkZDUxMzc3NGFlZjZhMTViNzdi
YTg5ZmM1MDY0Li5iNmFiMWU0NjQ3NDJlYTIwMmE4OTFlYTA4NWE4NWJkNWVjYjM3NjA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCkBAIC00OSwyMyArNDksMjMgQEAgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxSZW1vdGVD
RE1GYWN0b3J5PiYmIGYKIHsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2sp
CiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsKLSAgICAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxlZCk7CisgICAgICAgIGNhbGxi
YWNrKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxz
ZSwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fZmFjdG9yeS0+Z3B1
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVxdWVzdExpY2Vuc2UodHlwZSwg
aW5pdERhdGFUeXBlLCBXVEZNb3ZlKGluaXREYXRhKSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXSAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgYm9vbCBzdWNjZWVkZWQpIG11
dGFibGUgewogICAgICAgICBpZiAoIW1lc3NhZ2UuYnVmZmVyKCkpIHsKLSAgICAgICAgICAgIGNh
bGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBGYWls
ZWQpOworICAgICAgICAgICAgY2FsbGJhY2soQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBGYWlsZWQpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIGNhbGxiYWNrKG1lc3NhZ2UuYnVmZmVyKCkucmVsZWFzZU5vbk51
bGwoKSwgc2Vzc2lvbklkLCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBzdWNjZWVkZWQgPyBTdWNj
ZWVkZWQgOiBGYWlsZWQpOwogICAgIH0sIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBMaWNlbnNlVHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNl
VXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNh
bGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsKICAgICAgICAgY2Fs
bGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZh
aWxlZCk7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246
OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnMKICAgICB9
CiAKICAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6
OlJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSksIFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXSAoS2V5U3RhdHVzVmVjdG9yJiYgY2hhbmdlZEtleXMsIHN0ZDo6b3B0aW9uYWw8
SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxl
IHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gcmVhbE1lc3NhZ2Ug
PSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiByZWFsTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKG1lc3Nh
Z2UgJiYgbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpKQogICAgICAgICAgICAgcmVhbE1lc3NhZ2Ug
PSBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgY2Fs
bGJhY2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUocmVhbE1lc3NhZ2UpLCBzdWNjZWVk
ZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXgg
NGZmZTRjYWNlY2NkZTQzZDVjYjExZTIzNmNhMDQ1YWNkYTgzYTdlYi4uNGU0Y2QyYzAwNWM2YjAw
NjVmOWNkYjE4OGM0YmNlMGI1YmZhNjYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oCkBA
IC01OSw4ICs1OSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldENsaWVudChXZWFrUHRyPFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudD4mJiBjbGllbnQpIGZpbmFsIHsgbV9jbGll
bnQgPSBXVEZNb3ZlKGNsaWVudCk7IH0KICAgICB2b2lkIGNsZWFyQ2xpZW50KCkgZmluYWwgeyBt
X2NsaWVudCA9IG51bGxwdHI7IH0KLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmlu
YWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBp
bml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZp
bmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9z
ZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxs
YmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcAppbmRleCA5YTIxOWE1NDRlNTUz
ODNmNTRlNzFkYWJkMzU0Y2M0NDBhNDE0MmI5Li42MjkyNjc5OGM1YzExMzI0YTMxYWE1MGNkYTdl
ZDFmYmY3NGZlNzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCkBAIC0yMDAsNyArMjAwLDcg
QEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldEV4cGVjdGVkQ29udGVudFNpemUobG9u
ZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUKIAogLy8gSWYgYWxsRGF0YVJlY2VpdmVkIGlzIHRy
dWUsIHRoZSBjYWxsZXIgZXhwZWN0cyBlbmNvZGVkRGF0YVN0YXR1cygpIHRvIGJlID49IEVuY29k
ZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlCiAvLyBhZnRlciB0aGlzIGZ1bmN0aW9uIHJldHVy
bnMgKGluIHRoZSBzYW1lIHJ1biBsb29wKS4KLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpz
ZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIFJl
bW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCmluZGV4IGU1Y2ZlOTRlY2Qz
YTljMDYwMGZjMDAzMjBmZjQzMDYxYzkwZWQ2OWIuLjQwZDM3MzRmN2EzMjJlOGJhY2I5ZDFjMGRl
YTcwNzllMmFkMTdlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaApAQCAtNDUsNyArNDUsNyBAQCBj
bGFzcyBSZW1vdGVJbWFnZURlY29kZXJBVkYgZmluYWwKICAgICA6IHB1YmxpYyBXZWJDb3JlOjpJ
bWFnZURlY29kZXIKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVJbWFnZURlY29k
ZXJBVkY+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUltYWdlRGVjb2RlckFWRj4g
Y3JlYXRlKFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXImIG1hbmFnZXIsIGNvbnN0IFdlYkNv
cmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXImIGlkZW50aWZpZXIsIFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCisgICAgc3RhdGljIFJlZjxSZW1vdGVJbWFn
ZURlY29kZXJBVkY+IGNyZWF0ZShSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyJiBtYW5hZ2Vy
LCBjb25zdCBXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUltYWdlRGVjb2RlckFWRiht
YW5hZ2VyLCBpZGVudGlmaWVyLCBtaW1lVHlwZSkpOwogICAgIH0KQEAgLTgwLDcgKzgwLDcgQEAg
cHVibGljOgogICAgIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90LCBXZWJDb3JlOjpTdWJzYW1wbGluZ0xldmVsID0gV2ViQ29yZTo6U3Vic2Ft
cGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgV2ViQ29yZTo6RGVjb2RpbmdPcHRpb25zJiA9IFdl
YkNvcmU6OkRlY29kaW5nT3B0aW9ucyhXZWJDb3JlOjpEZWNvZGluZ01vZGU6OlN5bmNocm9ub3Vz
KSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBm
aW5hbDsKLSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNB
bGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVk
OyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkZNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKaW5kZXggNDFkNTM4ODAyM2QzOTE0OTUy
MTgzNWY2ODhkZTRkNDhmNjVkNzY3ZS4uMDgyYjMzNjZjOGJjNzEzMGQ3NWQ1Njk4YTdkNzllNjg5
MmFkOGY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCkBAIC0zOSw3
ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAotUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFu
YWdlcjo6Y3JlYXRlSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPFJlbW90ZUltYWdlRGVj
b2RlckFWRj4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6Y3JlYXRlSW1hZ2VEZWNvZGVy
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPEltYWdlRGVjb2Rlcklk
ZW50aWZpZXI+IGltYWdlRGVjb2RlcklkZW50aWZpZXI7CiAgICAgSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UgeyBkYXRhIH07CkBAIC0xMDgsNyArMTA4LDcgQEAg
dm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpzZXRVc2VHUFVQcm9jZXNzKGJvb2wg
dXNlR1BVUHJvY2VzcykKICAgICBJbWFnZURlY29kZXI6Omluc3RhbGxGYWN0b3J5KHsKICAgICAg
ICAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzdXBwb3J0c01lZGlhVHlwZSwKICAgICAgICAgUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGOjpjYW5EZWNvZGVUeXBlLAotICAgICAgICBbdGhpc10oU2hhcmVk
QnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pIHsKKyAgICAgICAgW3RoaXNdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikgewogICAgICAgICAgICAg
cmV0dXJuIGNyZWF0ZUltYWdlRGVjb2RlcihkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24sIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICAgICAgfQogICAgIH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkZNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRk1hbmFnZXIuaAppbmRleCBjMjM3ODJiNjUwNGVjNzliZTQ2ZTEyNmY0ZTU5
MWIzZmY3ZjZkYmE4Li4zNjE4YWZkMTIwOThiNTU3NmI0ZGQ0ZmZiZjNjMDZmYmE4NDJhNzY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaApAQCAtNTksNyArNTksNyBAQCBwdWJs
aWM6CiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9u
KCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRl
SW1hZ2VEZWNvZGVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgV2ViQ29yZTo6QWxwaGFPcHRpb24sIFdlYkNvcmU6OkdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKTsKKyAgICBSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGVJbWFn
ZURlY29kZXIoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6QWxwaGFPcHRpb24sIFdlYkNvcmU6OkdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKTsKIAogICAgIC8vIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQu
CiAgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0
aW9uJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAppbmRleCBhNTNmMTU3YmVlYmQ3
ZGIyZTgxYjJmNWVjYmQ2MzgxODYyYTY4MDhhLi5mMWQxYzEwYTZlNWMzYWIyYjgxMzIzYzA0ZGFj
MDU3Mjg2ZTlmZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKQEAgLTYyLDcgKzYyLDcg
QEAgc3RhdGljIElQQzo6U2hhcmVkQnVmZmVyQ29weSBjb252ZXJ0VG9TaGFyZWRCdWZmZXJDb3B5
KFQgYXJyYXkpCiB7CiAgICAgaWYgKCFhcnJheSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBy
ZXR1cm4geyBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcnJheS0+ZGF0YSgpLCBhcnJheS0+Ynl0ZUxl
bmd0aCgpKSB9OworICAgIHJldHVybiB7IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShh
cnJheS0+ZGF0YSgpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKSB9OwogfQogCiBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbj4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Y3JlYXRl
KFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4gZmFjdG9yeSwgUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbklkZW50aWZpZXImJiBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZS5jcHAKaW5kZXggOTY2ZmM5M2I3N2FmYWEzZTYyMDhkN2FiYTVhZWQyYzdhOTRjNzRiMi4uMDA1
YTM3Y2MyNmVjNGMwOTAxYmY0ZjM3MTIyMzg2NWRlMmQxNjZiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGUuY3BwCkBAIC03OCw3ICs3OCw3IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGU6On5Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlKCkKICAgICBtX2dwdVByb2Nlc3NDb25uZWN0
aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9yZW1v
dGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCi12b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhKQogewogICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbikKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaAppbmRleCAzNjAxNzViZmJlOWQx
YWY4M2VkNTc5MTM3M2I3NzVlZTc1MGFjN2NjLi5lYTVmYTNlYzM2YzJiODU5ZWU1NzhjY2QwZTAz
NDhjNzNjYjg2ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaApAQCAtNzIsNyArNzIs
NyBAQCBwcml2YXRlOgogCiAgICAgLy8gU291cmNlQnVmZmVyUHJpdmF0ZSBvdmVycmlkZXMKICAg
ICB2b2lkIHNldEFjdGl2ZShib29sKSBmaW5hbDsKLSAgICB2b2lkIGFwcGVuZChSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZChSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBhYm9ydCgpIGZpbmFs
OwogICAgIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlZEZy
b21NZWRpYVNvdXJjZSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCmluZGV4IDExYjRh
ODZlNDg1MmY2YzIwNjFmYTNmYzlhZjI5Zjg4OTlmNGViOWYuLjMzY2U1ZjhkNGY2MTZjMTA3MTIw
ODM4ZGFjOWE0MTM1ZjdjYjUyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKQEAgLTE2NSwx
MiArMTY1LDEyIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OnN0b3JhZ2VDaGFuZ2VkKFNo
YXJlZE1lbW9yeSogc3RvcmFnZSwgY29uc3QgV2ViQ29yZTo6CiAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpBdWRpb1NhbXBsZXNTdG9yYWdlQ2hh
bmdlZCB7IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBkYXRhU2l6
ZSB9LCBmb3JtYXQsIGZyYW1lQ291bnQgfSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBNZWRp
YVJlY29yZGVyUHJpdmF0ZTo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91Ymxl
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OmZldGNo
RGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpGZXRjaERhdGEgeyB9LCBbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbWltZVR5cGUgPSBtaW1lVHlwZSgpXShh
dXRvJiYgZGF0YSwgZG91YmxlIHRpbWVDb2RlKSBtdXRhYmxlIHsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgICAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgICAgICBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAg
ICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgp
LCBkYXRhLnNpemUoKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVy
KSwgbWltZVR5cGUsIHRpbWVDb2RlKTsKICAgICB9LCBtX2lkZW50aWZpZXIpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmgKaW5kZXggMzAzYTU0Zjc2ZjE4NWU5NjQ1NGVmOWY1YmI0NjFmMjhlMTI2Nzg2
ZC4uNTc2ZmQxYzZlOTdjMGNhZDhjYmZlYzk0ZTNiZDM2MzMwNzZlNDRlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVy
UHJpdmF0ZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gV2Vi
Q29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGUKICAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxl
KFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiwgV2ViQ29yZTo6VmlkZW9TYW1wbGVNZXRhZGF0YSkgZmlu
YWw7Ci0gICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYm
KSBmaW5hbDsKKyAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBkb3VibGUpPiYmKSBmaW5hbDsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0UmVjb3JkaW5nKFN0YXJ0
UmVjb3JkaW5nQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFi
bGUoY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUF1ZGlvRGF0
YSYsIGNvbnN0IFdlYkNvcmU6OkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmlu
ZGV4IDA2NzNmNzRkZGZiNDhlNWJkZjQzOGNkOTBiZTM3OTRlZWUyMDkxYmIuLjJjMTM0ZTllNzE5
Zjk3MjY1YzhkMDkwMzM0OWMxZTJmOWMxZTJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQ
SUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBOb2Rl
OwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogc3RydWN0IFNp
bXBsZVJhbmdlOwogfQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpZENoYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qg
V1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJk
KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2Vi
S2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+PiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdl
YktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJv
YXJkKFdlYktpdDo6V2ViUGFnZSYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtVHdvU3Rl
cERyb3AoV2ViS2l0OjpXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0
IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUlu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApp
bmRleCBhMDYzNTIwNDMzNWIzYWIwZTZkZmIwYzY3Nzc2N2Y0MjhlOGE3N2UyLi4xODBiMTExMWVj
ZjAxMTMyODA5MjY2YTFiY2UyN2QyNjBlNGZhMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAg
Y2xhc3MgRE9NV2luZG93RXh0ZW5zaW9uOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UGFnZUxvYWRlckNsaWVu
dCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZFVSTFJlcXVlc3QoV2Vi
S2l0OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgQVBJOjpPYmpl
Y3QqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJLaXQ6Oldl
YlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RG
OjpVUkwmLCBBUEk6Ok9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZERhdGFS
ZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNv
bnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpVUkwmLCBBUEk6Ok9iamVjdCopIHsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViS2l0OjpX
ZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYsIFJlZlB0cjxBUEk6
Ok9iamVjdD4mKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCBiYzhl
YWI5ODc5YmU4MGQ4NTFiMDAxYzIwMGMwZjE4NTdhNmM3YTI4Li5kZjhkODgwNDdmZjY3MzE3Y2I0
YWJmZTM1MTMwNWEwNzVhMGMzYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1t
CkBAIC02MzQsNyArNjM0LDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tX
ZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAg
IFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHdpbGxXcml0ZVJhbmdlVG9QYXN0
ZWJvYXJkOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKV07CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpX
ZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdl
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKKyAgICAgICAgdm9pZCBnZXRQ
YXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fZGVs
ZWdhdGVNZXRob2RzLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwpAQCAtNjQyLDcgKzY0Miw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZToo
aWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAg
ICAgICAgICBhdXRvIGRhdGFCeVR5cGUgPSBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRl
LmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJv
bGxlciBwYXN0ZWJvYXJkRGF0YUZvclJhbmdlOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUo
cmFuZ2UpLmdldCgpKV07CiAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICp0eXBlIGluIGRhdGFC
eVR5cGUpIHsKICAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUpOwot
ICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVdKSk7CisgICAgICAgICAgICAgICAgcGFzdGVib2Fy
ZERhdGEuYXBwZW5kKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
QnlUeXBlW3R5cGVdKSk7CiAgICAgICAgICAgICB9OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKaW5kZXggMzUzNjA2NTI1Yjg0
NTc2OGUzMDE1ODM4Zjg5MTFkZThmMmUwODA5MC4uYzM5ODExZWFjOTRlMjk1ZTM4MzNiZmNkZDZj
MTgyYTRhMzEwMTk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudDo6d2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0CiAg
ICAgICAgIG1fY2xpZW50LndpbGxXcml0ZVRvUGFzdGVib2FyZCh0b0FQSSgmcGFnZSksIHRvQVBJ
KGNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwog
fQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpCiB7CiAgICAgaWYgKG1fY2xpZW50LmdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UpIHsKICAgICAgICAgV0tBcnJheVJlZiB0eXBlcyA9IG51bGxwdHI7CkBAIC0xNTYsNyArMTU2
LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmRE
YXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY28KICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBl
cy5hcHBlbmQodHlwZS0+c3RyaW5nKCkpOwogCiAgICAgICAgIGZvciAoYXV0byBpdGVtIDogZGF0
YUFycmF5LT5lbGVtZW50c09mVHlwZTxBUEk6OkRhdGE+KCkpIHsKLSAgICAgICAgICAgIGF1dG8g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgp
KTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CiAgICAgICAgICAgICBwYXN0ZWJvYXJk
RGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAppbmRleCAzMWUxMzk2ZTcwYWQ2
MGMxOWQ5M2M2NzVjNzYzNDZmZTBkYTc5NDk0Li5kOThlZTFjMTU1ZDRmYjgyOTJhNThkOWM1OGU4
ODAwN2ExMzQwNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudC5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2UoV2Vi
UGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCBk
aWRDaGFuZ2VTZWxlY3Rpb24oV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFt
ZSkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7Ci0gICAgdm9pZCBn
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5h
bDsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJk
KFdlYlBhZ2UmKSBmaW5hbDsKICAgICBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJQYWdlJiwg
V2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiBk
ZXN0aW5hdGlvbiwgYm9vbCBpc01vdmUpIGZpbmFsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOGQ1MjRiNTI1YzZlN2EwY2M2YmRl
NWU4MGE0N2MxNzFlMzQxNDY4Yy4uZjg0YzBhNzkyNGI4Y2MxZTU4NmZhODg3MjViOWNjNWMyNDE1
NjlhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5j
cHAKQEAgLTYyLDE4ICs2MiwxOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlcwogc3RhdGljIHZv
aWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkK
IHsKICAgICAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoKS4KLSAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZm
ZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYo
KTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0
YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBT
aGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3Qg
U3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxs
TG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcm
IE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNo
YWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewogICAgIGlmICghbV9jbGllbnQud2ls
bExvYWREYXRhUmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPEFQSTo6RGF0
YT4gZGF0YTsKICAgICBpZiAoc2hhcmVkQnVmZmVyKSB7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+
cmVmKCk7Ci0gICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChj
b25zdCB1bnNpZ25lZCBjaGFyKilzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5z
aXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGF1dG8g
Y29udGlndW91c0J1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAg
ICAgY29udGlndW91c0J1ZmZlci0+cmVmKCk7CisgICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNy
ZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKiljb250aWd1b3VzQnVmZmVy
LT5kYXRhKCksIGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwg
Y29udGlndW91c0J1ZmZlci5wdHIoKSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExvYWRE
YXRhUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgp
KSwgdG9BUEkoTUlNRVR5cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRv
VVJMUmVmKHVucmVhY2hhYmxlVVJMLnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuaAppbmRleCAzNmJkOTgwYjJmYWExYWY0NWFjMzEwNmViMDFlOWYzNzZi
YTEzYWNmLi44NjNiZGFiNjI4NGNhM2FhZDJmOWQ1ZmZmNWZkNjhlYWI4YjJiNzMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC00Nyw3ICs0Nyw3
IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQo
Y29uc3QgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50QmFzZSopOwogCiAgICAgdm9pZCB3aWxsTG9h
ZFVSTFJlcXVlc3QoV2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIEFQ
STo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBh
Z2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgVVJMJiwg
QVBJOjpPYmplY3QqKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2Vi
UGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwg
Y29uc3QgVVJMJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlJiwgV2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpP
YmplY3Q+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlJiwgV2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpP
YmplY3Q+Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1h
Yy5tbQppbmRleCBlNTI0ZDhlMWIwMTdhYThlNWUwM2I4OTJkOTJiNzU4OTRjNThmMzc0Li5hNzg0
ZWMzODhiMjI1MjRjYzBkYTYzMjc4ZTVlNzU5MTM3ZGNmNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVy
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxp
bmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEFSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKFdlYkNvcmU6Ok1vZGVsJiBt
b2RlbFNvdXJjZSkKICAgICBpZiAoZmlsZSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwg
bW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxl
KGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2Rl
bFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUp
OwogICAgIG1fZmlsZVBhdGggPSBmaWxlUGF0aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
CmluZGV4IDQ3YjkxY2U4N2QzNjEzZTM1ZDU3OTQwNzk3YWRmMGIxZGQwMGE0OGIuLjc5MzNkYTg4
ODg3MzdkZTkyYjE3YjJmMjdhZTQwMTEwNTNhZGJiMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcApAQCAtMjc1LDkgKzI3NSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpk
aWRDYWNoZVJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKICAgICBpZiAo
IXJlc291cmNlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVm
ZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
Y3JlYXRlIFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZSBmb3IgcmVz
b3VyY2UgdXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIg
ZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVl
c3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcAppbmRleCAyNTk0NDk0MjM4NTVmZWQzYWFhYWI0MTQ4MTlmODk1MWEzYjhi
N2ZmLi42MDQ2OTNlYmRhMmVjMGNmZDQ3NDUyNzJlNTAyZTJkMmRkZDUyMjZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib28KICAgICBpZiAo
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZSht
X2NvcmVMb2FkZXItPmZyYW1lKCksIHJlc3BvbnNlKSkgewogICAgICAgICBhdXRvIGludGVyY2Vw
dGVkUmVxdWVzdElkZW50aWZpZXIgPSBtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKTsKICAgICAg
ICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmJlZ2luSW50ZXJjZXB0aW5nUmVzcG9uc2UoaW50ZXJj
ZXB0ZWRSZXF1ZXN0SWRlbnRpZmllcik7Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UobV9jb3JlTG9hZGVyLT5mcmFtZSgpLCByZXNwb25z
ZSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9LCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyLCBwb2xpY3lEZWNpc2lv
bkNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShwb2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5k
bGVyKV0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgaW5zcGVjdG9yUmVzcG9uc2UsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG92ZXJyaWRlRGF0YSkgbXV0YWJsZSB7CisgICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UobV9jb3JlTG9hZGVyLT5mcmFt
ZSgpLCByZXNwb25zZSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyLCBw
b2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShwb2xpY3lEZWNpc2lvbkNv
bXBsZXRpb25IYW5kbGVyKV0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgaW5zcGVjdG9yUmVzcG9u
c2UsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGEpIG11dGFibGUg
ewogICAgICAgICAgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+aWRlbnRp
ZmllcigpKSB7CiAgICAgICAgICAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0co
ImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgaW50ZXJjZXB0IGxvYWQgYmVjYXVz
ZSBubyBjb3JlTG9hZGVyIG9yIG5vIElEIik7CiAgICAgICAgICAgICAgICAgbV9pbnRlcmNlcHRD
b250cm9sbGVyLmNvbnRpbnVlUmVzcG9uc2UoaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllcik7
CkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJv
Y2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3Bv
bnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJj
ZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAg
ICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRh
dGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIo
bV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCiAgICAgICAgICAgICAgICAg
ZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfSwgZW5jb2Rl
ZERhdGFMZW5ndGgpOwpAQCAtMjk1LDExICsyOTUsMTEgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhh
bmQKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc291cmNlIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5s
YXRpbjEoKS5kYXRhKCkpOwogICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRS
ZWNlaXZlUmVzb3VyY2U6Iik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBo
YW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAg
IGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBidWZm
ZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBzZW50IGZyb20gdGhlIG5ldHdvcmsgcHJvY2Vzcy4i
KTsKLSAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNv
dXJjZTogVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIiKTsKKyAgICAgICAgV0VCUkVTT1VS
Q0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZTogVW5hYmxlIHRvIGNyZWF0
ZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIik7CiAgICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IG1f
Y29yZUxvYWRlci0+ZnJhbWUoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFt
ZS0+cGFnZSgpKQogICAgICAgICAgICAgICAgIHBhZ2UtPmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50
KCkubG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpp
bnRlcm5hbEVycm9yS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6Y3JlYXRl
U2hhcmVkQnVmZmVyRmFpbGVkS2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4
IDQyZGU0NjE0MTk3NzhiN2M0NTBmY2ExZWIwMzdjMWNlOTdkMmQ2MzEuLmE3ZjQ1Yzg0MDFiMmZk
MmY4NzBlMzY3OGM1OGZjMzEwYzJlMWYyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTIwNyw3ICsyMDcsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wpIGZpbmFsIHsgfQog
ICAgIGJvb2wgZ2V0Rm9ybVZhbHVlKFN0cmluZyYgZm9ybVZhbHVlKSBmaW5hbCB7IHJldHVybiBm
YWxzZTsgfQogICAgIGJvb2wgaGFuZGxlU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwg
V2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0
IGZpbmFsOwogICAgIHZvaWQgd2lsbERldGFjaFJlbmRlcmVyKCkgZmluYWw7CiAgICAgYm9vbCBw
bHVnaW5IYW5kbGVzQ29udGVudE9mZnNldEZvckFjY2Vzc2liaWxpdHlIaXRUZXN0KCkgY29uc3Qg
ZmluYWw7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbQppbmRleCBkMjNhYmI5ZTY1MTFiMTNiYmQ1MjNhZjQ1MWY0NDE3ODczYTZj
MWUwLi43NTUwMWRkNmNlZGRmZTNjODQwZGQyZTBkYTJiZTI0Y2M3ZjA0NjE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTE1
NTksNyArMTU1OSw3IEBAIHZvaWQgUERGUGx1Z2luOjphZGRBcmNoaXZlUmVzb3VyY2UoKQogICAg
IFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxS
ZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6bV9zb3VyY2VVUkwgc3RhdHVzQ29kZToyMDAgSFRU
UFZlcnNpb246KE5TU3RyaW5nKilrQ0ZIVFRQVmVyc2lvbjFfMSBoZWFkZXJGaWVsZHM6aGVhZGVy
c10pOwogICAgIFJlc291cmNlUmVzcG9uc2Ugc3ludGhlc2l6ZWRSZXNwb25zZShyZXNwb25zZS5n
ZXQoKSk7CiAKLSAgICBhdXRvIHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hh
cmVkQnVmZmVyOjpjcmVhdGUobV9kYXRhLmdldCgpKSwgbV9zb3VyY2VVUkwsICJhcHBsaWNhdGlv
bi9wZGYiLCBTdHJpbmcoKSwgU3RyaW5nKCksIHN5bnRoZXNpemVkUmVzcG9uc2UpOworICAgIGF1
dG8gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUobV9kYXRhLmdldCgpKSwgbV9zb3VyY2VVUkwsICJhcHBsaWNhdGlvbi9wZGYi
LCBTdHJpbmcoKSwgU3RyaW5nKCksIHN5bnRoZXNpemVkUmVzcG9uc2UpOwogICAgIHBsdWdpblZp
ZXcoKS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+bG9hZGVyKCktPmFkZEFyY2hpdmVSZXNvdXJjZShy
ZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIApAQCAtMjU1MiwxNCArMjU1MiwxNCBAQCB2
b2lkIFBERlBsdWdpbjo6bm90aWZ5RGlzcGxheU1vZGVDaGFuZ2VkKGludCkKICAgICB1cGRhdGVT
Y3JvbGxiYXJzKCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBERlBsdWdpbjo6bGl2ZVJl
c291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUERGUGx1
Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBOU0RhdGEgKnBkZkRhdGEgPSBs
aXZlRGF0YSgpOwogCiAgICAgaWYgKCFwZGZEYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwZGZEYXRhKTsKKyAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBkZkRhdGEpOwogfQogCiBib29sIFBERlBs
dWdpbjo6cGx1Z2luSGFuZGxlc0NvbnRlbnRPZmZzZXRGb3JBY2Nlc3NpYmlsaXR5SGl0VGVzdCgp
IGNvbnN0CkBAIC0yNjYyLDcgKzI2NjIsNyBAQCB2b2lkIFBERlBsdWdpbjo6d3JpdGVJdGVtc1Rv
UGFzdGVib2FyZChOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5TQXJyYXkgKml0ZW1zLAogICAg
ICAgICAgICAgYXV0byBwbGFpblRleHRTdHJpbmcgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoRGF0YTpkYXRhIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CiAgICAg
ICAgICAgICB3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKHBh
c3RlYm9hcmROYW1lLCB0eXBlLCBwbGFpblRleHRTdHJpbmcuZ2V0KCksIHBhZ2VJZGVudGlmaWVy
KSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6U2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5
cGU6OlJlcGx5KG5ld0NoYW5nZUNvdW50KSwgMCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICAg
ICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAg
ICAgICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihi
dWZmZXIuZ2V0KCkpOwogICAgICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5o
CmluZGV4IDg4ZjQ1Y2U1MWNlMzFkZjBjNWIzYjc1ODYyMzZjM2YwZDljOTNhZDMuLjU4ZDcwYTM5
YTE2ZDZhNGMwZThiMGNhOWQwM2FjM2QzN2FlZGZjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIEludFBvaW50Owog
Y2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBTY3JvbGxiYXI7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTI4OCw3ICsyODgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdl
YkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb2ludEluTG9jYWxDb29yZGluYXRlcykgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291
cmNlRGF0YSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFy
eUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpID0gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBk
NTRmMjdmMDcwOTE0N2U5ZWRlYzA2ZGU1OGMxZThjYzEyMzFhNjc3Li43ZmIyMGM1OTJkYmZhMDk2
ZTM4YmMxNjg3MDM3MzhjYjhmNDA3Yzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMjg5LDYgKzI4OSw3IEBAIFBsdWdpblZpZXc6
OlBsdWdpblZpZXcoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbkVsZW1lbnQsIFJlZjxQbHVnaW4+
JiYgcGx1Z2luLCBjCiAgICAgLCBtX3dlYlBhZ2Uod2ViUGFnZShtX3BsdWdpbkVsZW1lbnQuZ2V0
KCkpKQogICAgICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiAgICAgLCBtX3BlbmRpbmdVUkxS
ZXF1ZXN0c1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlBsdWdpblZpZXc6OnBlbmRpbmdV
UkxSZXF1ZXN0c1RpbWVyRmlyZWQpCisgICAgLCBtX21hbnVhbFN0cmVhbURhdGEobWFrZVVuaXF1
ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAgIG1fd2ViUGFnZS0+YWRkUGx1Z2lu
Vmlldyh0aGlzKTsKIH0KQEAgLTQwMyw5ICs0MDQsNiBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVh
bExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIAog
ICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VSVChtX21hbnVhbFN0cmVh
bVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpIYXNSZWNlaXZlZFJlc3BvbnNlKTsKLSAgICAg
ICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEpCi0gICAgICAgICAgICBtX21hbnVhbFN0cmVhbURh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0
YS0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDM3
LDcgKzQzNSw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZhaWwoY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAg
bV9tYW51YWxTdHJlYW1TdGF0ZSA9IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZDsKICAgICAg
ICAgbV9tYW51YWxTdHJlYW1FcnJvciA9IGVycm9yOwotICAgICAgICBtX21hbnVhbFN0cmVhbURh
dGEgPSBudWxscHRyOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPnJlc2V0KCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkyNiwxMSArOTI0LDExIEBAIHZvaWQgUGx1Z2luVmll
dzo6d2lsbERldGFjaFJlbmRlcmVyKCkKICAgICBtX3BsdWdpbi0+d2lsbERldGFjaFJlbmRlcmVy
KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURh
dGEoKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6Omxp
dmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFt
X3BsdWdpbikgewotICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhICYmIG1fbWFudWFsU3Ry
ZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQotICAgICAgICAgICAgcmV0
dXJuIG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUg
PT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQorICAgICAgICAgICAgcmV0dXJuIG1fbWFu
dWFsU3RyZWFtRGF0YS0+Z2V0KCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpA
QCAtMTI0MiwxMCArMTI0MCwxMCBAQCB2b2lkIFBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0
cmVhbSgpCiAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShtX21hbnVhbFN0cmVhbVJl
c3BvbnNlKTsKIAogICAgIC8vIERlbGl2ZXIgdGhlIGRhdGEuCi0gICAgaWYgKG1fbWFudWFsU3Ry
ZWFtRGF0YSkgewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiAqbV9tYW51YWxT
dHJlYW1EYXRhKQorICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRhLT5pc051bGwoKSkgeworICAg
ICAgICBhdXRvIGJ1ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS0+dGFrZSgpOworICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBidWZmZXIuZ2V0KCkpCiAgICAgICAgICAgICBtYW51
YWxMb2FkRGlkUmVjZWl2ZURhdGEoZWxlbWVudC5zZWdtZW50LT5kYXRhKCksIGVsZW1lbnQuc2Vn
bWVudC0+c2l6ZSgpKTsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKICAg
ICB9CiAKICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6
RmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmgKaW5kZXggMjEyNmViOGVkYjU1OTM4NmIzNDIyNWViMmJkNWJmY2Q2ODAyM2YyMy4uZDE1M2Ey
OWNhMTRhOTBlMzIyN2E4OTFlM2VlZjVlNGU3OTczNTFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1
ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogLy8gRklYTUU6IEV2ZW50dWFsbHkg
dGhpcyBzaG91bGQgbW92ZSB0byBXZWJDb3JlLgogCkBAIC0xMTUsNyArMTE2LDcgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBzaG91bGRBbGxvd1NjcmlwdGluZygpOwogCi0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0OworICAgIFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Q7
CiAgICAgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYpOwogICAgIFN0cmluZyBnZXRTZWxlY3Rpb25Gb3JXb3JkQXRQb2ludChj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgY29uc3Q7CiAgICAgYm9vbCBleGlzdGluZ1NlbGVj
dGlvbkNvbnRhaW5zUG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIGNvbnN0OwpAQCAt
MjUyLDcgKzI1Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
IG1fbWFudWFsU3RyZWFtUmVzcG9uc2U7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBtX21h
bnVhbFN0cmVhbUVycm9yOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fbWFu
dWFsU3RyZWFtRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRl
cj4gbV9tYW51YWxTdHJlYW1EYXRhOwogCiAgICAgLy8gVGhpcyBzbmFwc2hvdCBpcyB1c2VkIHRv
IGF2b2lkIHNpZGUgZWZmZWN0cyBzaG91bGQgdGhlIHBsdWdpbiBydW4gSlMgZHVyaW5nIHBhaW50
aW5nLgogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fdHJhbnNpZW50UGFpbnRpbmdTbmFw
c2hvdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggZmVlOGZl
YTdiY2M4ZDU5YzA3ZTNjNWJhNGQ2MDk1NTJhNGQ2MjhiZi4uYjA0Y2NjZjExM2U0OTI4ZmE2NjM4
M2JkMjQzMWRiODc0ODUzY2NhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dC5jcHAKQEAgLTcxLDE2ICs3MSwxNSBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJgogICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVj
ZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZU1lc3NhZ2UgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQogCi12b2lkIFdlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQordm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0
YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX2Nv
bm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dhaXRpbmdGb3JDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsKLSAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSkpCi0gICAgICAgICAg
ICBtX3Jlc3BvbnNlRGF0YSA9IGJ1ZmZlci0+Y29weSgpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpLT5hcHBlbmQo
V1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKSkKKyAgICAgICAgICAgIG1fcmVzcG9u
c2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpOworICAgICAgICBzdGQ6OmdldDxTaGFyZWRC
dWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIwNiw4ICsyMDUsOCBAQCB2b2lkIFdlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKICAg
ICBzd2l0Y2hPbihtX3Jlc3BvbnNlRGF0YSwgW3RoaXNdKHN0ZDo6bnVsbHB0cl90JikgewogICAg
ICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKLSAgICB9LCBb
dGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewotICAgICAgICBkaWRSZWNlaXZlRGF0
YShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIH0sIFt0aGlzXShjb25zdCBTaGFyZWRCdWZmZXJCdWls
ZGVyJiBidWZmZXIpIHsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlci5nZXQoKSk7CiAg
ICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwogICAgIH0s
IFt0aGlzXShSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5oCmluZGV4IGIzNDdjYWQyYWI1ZjU3MWIxYTBlMjA3MjA4MDQzNjdkNzcwMTg2
MDAuLjZiMGE0MTdjZjBkM2FlMGQ3Yjg5M2E5OTg2ODNhYmYyYmM0YTRkOTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0ZldGNoTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29y
a2VyRmV0Y2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ5LDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiYpIGZpbmFs
OwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7
CiAgICAgdm9pZCBkaWRGaW5pc2goKSBmaW5hbDsKQEAgLTgyLDcgKzgzLDcgQEAgcHJpdmF0ZToK
ICAgICBzdGQ6Om9wdGlvbmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKICAgICBib29sIG1f
bmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2Ug
fTsKLSAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+LCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOworICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJf
dCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwg
VW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKICAgICBi
b29sIG1fZGlkRmluaXNoIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5k
ZXggODFlMzc5ZTMzZDFhOWFjZGM4NmVmNWM0YmUyMWE3MjYwZDk0ZDQ4ZS4uOGJkOTU1MDU4MjU2
Y2M3ODYxODI3YzZmNGU5MWNlNTA2ZjY5MTI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAg
LTE0Miw3ICsxNDIsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQXBwbHlTdHlsZShj
b25zdCBTdHlsZVByb3BlcnRpZXMmIHN0eWxlLCBjb25zdCBzdGQ6OgogCiAjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNo
bWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGRhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJBdHRhY2htZW50SWRl
bnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShpZGVudGlmaWVyLCBjb250
ZW50VHlwZSwgcHJlZmVycmVkRmlsZU5hbWUsIGRhdGEuZ2V0KCkpKTsKIH0KQEAgLTI2NSw3ICsy
NjUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5k
bGVFZGl0b3JDbGllbnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmQoKm1fcGFnZSwgcmFuZ2UpOwog
fQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkK
K3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkKIHsKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuZ2V0UGFz
dGVib2FyZERhdGFGb3JSYW5nZSgqbV9wYWdlLCByYW5nZSwgcGFzdGVib2FyZFR5cGVzLCBwYXN0
ZWJvYXJkRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNTA2ZDlmNTQxMzhkMzdjYjRj
NjRlZDQ2MGY1OWE1YzI4ZmU1MjJhNi4uMzkwNTM3MjQxMjUwZGM2N2ExMmY2NTU3ZGJlMTY2ZjI3
ZTY4N2JmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgc2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUoY29uc3QgV2ViQ29yZTo6U2ltcGxl
UmFuZ2UmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYpIGZpbmFsOwogCiAjaWYgRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5n
JiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7
CisgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUs
IFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lk
IHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkgZmluYWw7CiAgICAgdm9pZCBy
ZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZv
aWQgcmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1l
bnREYXRhPiYmKSBmaW5hbDsKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lk
IGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZv
aWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZp
bmFsOwogICAgIAogICAgIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYp
IGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNGJkYmJjY2QzZmJjNjIw
ZTA3NTQxMDVjZWEwOWVkZGYwNTEyMGI2Yi4uMTRhMDgzY2EyMDdhOTA2M2NmODBiMWU3ZTk2NzBh
NDg3Y2Y0ZDM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTg4LDgg
KzExODgsOCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAgICAgIGlmICghd2ViUGFnZSkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5S
ZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKLSAgICAgICAgICAgIElQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVz
b3VyY2VEYXRhLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291
cmNlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwor
ICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNl
RGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxw
dHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKICAg
ICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNo
TG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIobG9hZGVyLT5yZXNwb25zZSgpLnN1
Z2dlc3RlZEZpbGVuYW1lKCksIGRhdGFSZWZlcmVuY2UpKTsKICAgICAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IGY0MWE3MGVmNWJiNmMwZWNlOGJkODYyNzQx
MTYwMWNmNzMwZTYyYTEuLmIyM2E0YzZhOTk0NzdiMGVlYmZjZWEwMTM3ZTk3NmM0NWVhNTEwZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBA
QCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJk
UHJveHk6OkdldFBhc3RlYm9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIo
Y29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlw
ZXM6OlJlcGx5KHR5cGVzKSwgMCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4K
ICAgICBWZWN0b3I8dWludDhfdD4gb3ZlcnJpZGVCdWZmZXI7CiAgICAgaWYgKFdlYlBhc3RlYm9h
cmRPdmVycmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5nZXREYXRhRm9yT3ZlcnJp
ZGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBvdmVycmlkZUJ1ZmZlcikpCi0gICAg
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7
CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShv
dmVycmlkZUJ1ZmZlcikpOwogCiAgICAgLy8gRmFsbGJhY2sgdG8gbWVzc2FnaW5nIHRoZSBVSSBw
cm9jZXNzIGZvciBuYXRpdmUgcGFzdGVib2FyZCBjb250ZW50LgogICAgIFNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlIGlwY0hhbmRsZTsKQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQ2NF90IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgYwogICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAotaW50NjRfdCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1v
cnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkgewpA
QCAtMzI0LDcgKzMyNCw3IEBAIFZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
cmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpy
ZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKIAog
ICAgIElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhOwpAQCAtNDA2LDcgKzQwNiw3IEBAIHN0ZDo6
b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9y
bWF0aW9uRm9ySXRlbUF0SW5kCiAgICAgcmV0dXJuIGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQp
CitSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSBpcGNIYW5kbGU7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUs
IHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6
UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkOjpSZXBseShpcGNIYW5kbGUpLCAwKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBlMjgwOTk2M2Y0ZjUwNjgxYjdkMDFmNDFhNjg1MzFh
YjczMjE0ZmIwLi41MDc2NWU4YWRjODA5ZTkzZjJhYzViOGIwMjY5OGE4MDY0YzFhNmYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBh
dGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZl
Y3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAKICAgICBp
bnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0QnVm
ZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldENvbG9y
KGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNl
dFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsK
ICAgICBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xp
cGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJy
aWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlVG9DbGlwYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKSBv
dmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9h
cmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggMDdiMTY3ZTBlZWVlNzY4ODc1YjAz
OWRmYTU5ZjVmZDEzYzc1NGUxMC4uZDQxNTkwNGM3MWIxYzBjNzJhM2UxN2NmN2IzNDUyMGFhMjc5
MDM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00
NSwxMyArNDUsMTMgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNs
aWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKICAgICA6IG1fZmlsZU5hbWUg
eyBmaWxlTmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAgICAgLCBtX3BhZ2VJRCB7IHBhZ2VJ
RCB9Ci0gICAgLCBtX2J1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9i
dWZmZXIgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogewogfQogCiBX
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50Ojp+V2ViUHJldmlld0xvYWRlckNsaWVudCgpID0gZGVmYXVs
dDsKIAotdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRS
ZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBhdXRvIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1fcGFnZUlE
KTsKICAgICBpZiAoIXdlYlBhZ2UpCkBAIC02OSwxMyArNjksMTIgQEAgdm9pZCBXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKCkKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKG1fYnVmZmVyLmdldCgpKTsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsK
KyAgICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZShtX2J1ZmZlci0+dGFrZSgpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50OjpkaWRGYWlsKCkKIHsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICBtX2J1ZmZlci0+
cmVzZXQoKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFz
c3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMDQ5MmNlZWMyZjli
OWNkODUzODM4NDg0ZmJjMjZjMDdjYjUzZGE4Ny4uY2MzYjI0YjcyOWIyMThiODBkMzdhMTJjZDdm
YWMzZGZhOWJlZDFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgK
QEAgLTI5LDggKzI5LDEzIEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVByZXZpZXdMb2Fk
ZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworfQorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViRnJhbWU7CkBAIC00NSw3ICs1MCw3IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0
c1Bhc3N3b3JkRW50cnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC01NCw3
ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7CiAgICAgY29u
c3QgU3RyaW5nIG1fdXRpOwogICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFn
ZUlEOwotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFVuaXF1
ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IGE2NGM2
YThiM2M2OTVlMTczMzY0MzM2YmNiMGY2OGRiZGQ5YzJkMjEuLjRiNmUyMTdiYmUzN2Y4YzFkZjE3
YWJjY2JiYzg3NzQzMWEyYjFlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAg
LTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJ
bWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogCiAgICAgTlNVUkxSZXNw
b25zZSAqcmVzcG9uc2UgPSBpbWFnZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAg
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+
ZGF0YSgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwog
ICAgIHNpemVfdCBpbWFnZVNpemUgPSBpbWFnZUJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgYXV0byBz
aGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmltYWdlQnVmZmVy
KTsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0
ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogICAgIFNoYXJl
ZE1lbW9yeTo6SGFuZGxlIGFyY2hpdmVIYW5kbGU7CiAgICAgc2l6ZV90IGFyY2hpdmVTaXplID0g
MDsKICAgICBpZiAoZGF0YSkgewotICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CisgICAgICAgIGF1
dG8gYXJjaGl2ZUJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlk
Z2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAgICAgIGF1dG8gYXJjaGl2ZVNoYXJlZE1lbW9y
eUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihhcmNoaXZlQnVmZmVyLmdldCgpKTsK
ICAgICAgICAgaWYgKCFhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmlu
ZGV4IDliZDRjZDJkMGNiMTAzYjQ1YWE4ZTZjMWQ0MjdjMGIxN2JmNWVkMTMuLmQ4OGY0NGNmY2Rl
NWUxNWY2NmMxMjRiNDBmNWI1NDM1Yjk0Njk3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTM0MCwxMCArMzQwLDEwIEBAIFN0cmluZyBX
ZWJGcmFtZTo6c291cmNlKCkgY29uc3QKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2Fk
ZXIgPSBtX2NvcmVGcmFtZS0+bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKTsKICAgICBp
ZiAoIWRvY3VtZW50TG9hZGVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVz
b3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNv
dXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICgh
bWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBk
ZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCksIG1haW5S
ZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVj
b2RlKG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291
cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjpjb250ZW50c0FzU3RyaW5n
KCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IGM5MTM1YTAwYTIxMWMxMjIwNGFiOTUyNTg5YzdhYjQ1OTJhMjRkNjQuLmRhMDhiNWYw
NDI5MmE0YmU5ZWI2ZWRkY2I2NjNjOGM5ZWU2ZjU0NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNjU4LDcgKzE2NTgsNyBAQCB2b2lkIFdl
YlBhZ2U6OmxvYWREYXRhSW5GcmFtZShJUEM6OkRhdGFSZWZlcmVuY2UmJiBkYXRhLCBTdHJpbmcm
JiBNSU1FVHlwZSwgU3RyaQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKCZtYWluV2ViRnJh
bWUoKSAhPSBmcmFtZSk7CiAKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgYXV0byBzaGFyZWRCdWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgp
KTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKGJhc2VVUkwsIE1JTUVUeXBlLCBzaGFy
ZWRCdWZmZXItPnNpemUoKSwgZW5jb2RpbmdOYW1lKTsKICAgICBTdWJzdGl0dXRlRGF0YSBzdWJz
dGl0dXRlRGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIGJhc2VVUkwsIFdURk1vdmUocmVzcG9u
c2UpLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4pOwog
ICAgIGZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1ZXN0KCpm
cmFtZS0+Y29yZUZyYW1lKCksIFJlc291cmNlUmVxdWVzdChiYXNlVVJMKSwgV1RGTW92ZShzdWJz
dGl0dXRlRGF0YSkpKTsKQEAgLTE3MjAsNyArMTcyMCw3IEBAIE5PX1JFVFVSTiB2b2lkIFdlYlBh
Z2U6OmxvYWRSZXF1ZXN0V2FpdGluZ0ZvclByb2Nlc3NMYXVuY2goTG9hZFBhcmFtZXRlcnMmJiwg
VVJMCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBXZWJQYWdl
Ojpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBTaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNp
dGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHNo
YXJlZEJ1ZmZlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYm
IHJlc3BvbnNlLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2li
aWxpdHkgc2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCit2b2lkIFdlYlBhZ2U6OmxvYWREYXRh
SW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBz
aG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHNo
YXJlZEJ1ZmZlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYm
IHJlc3BvbnNlLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2li
aWxpdHkgc2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCiB7CiAjaWYgRU5BQkxFKEFQUF9CT1VO
RF9ET01BSU5TKQogICAgIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiwgJm1fbWFpbkZyYW1lLmdldCgpKTsKQEAgLTE3MzUsNyArMTcz
NSw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNoCiAKICAgICAvLyBMZXQgdGhlIEluamVjdGVk
QnVuZGxlIGtub3cgd2UgYXJlIGFib3V0IHRvIHN0YXJ0IHRoZSBsb2FkLCBwYXNzaW5nIHRoZSB1
c2VyIGRhdGEgZnJvbSB0aGUgVUlQcm9jZXNzCiAgICAgLy8gdG8gYWxsIHRoZSBjbGllbnQgdG8g
c2V0IHVwIGFueSBuZWVkZWQgc3RhdGUuCi0gICAgbV9sb2FkZXJDbGllbnQtPndpbGxMb2FkRGF0
YVJlcXVlc3QoKnRoaXMsIHJlcXVlc3QsIGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4oc3Vic3Rp
dHV0ZURhdGEuY29udGVudCgpKSwgc3Vic3RpdHV0ZURhdGEubWltZVR5cGUoKSwgc3Vic3RpdHV0
ZURhdGEudGV4dEVuY29kaW5nKCksIHN1YnN0aXR1dGVEYXRhLmZhaWxpbmdVUkwoKSwgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmpl
Y3QoKSkuZ2V0KCkpOworICAgIG1fbG9hZGVyQ2xpZW50LT53aWxsTG9hZERhdGFSZXF1ZXN0KCp0
aGlzLCByZXF1ZXN0LCBjb25zdF9jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPihzdWJzdGl0
dXRlRGF0YS5jb250ZW50KCkpLCBzdWJzdGl0dXRlRGF0YS5taW1lVHlwZSgpLCBzdWJzdGl0dXRl
RGF0YS50ZXh0RW5jb2RpbmcoKSwgc3Vic3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgpLCBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVj
dCgpKS5nZXQoKSk7CiAKICAgICAvLyBJbml0YXRlIHRoZSBsb2FkIGluIFdlYkNvcmUuCiAgICAg
RnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0KCptX21haW5GcmFtZS0+Y29yZUZyYW1l
KCksIHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKQEAgLTE3NDksNyArMTc0OSw3IEBAIHZvaWQg
V2ViUGFnZTo6bG9hZERhdGEoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKIHsKICAg
ICBwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CiAKLSAg
ICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGxvYWRQYXJhbWV0ZXJz
LmRhdGEuZGF0YSgpLCBsb2FkUGFyYW1ldGVycy5kYXRhLnNpemUoKSk7CisgICAgYXV0byBzaGFy
ZWRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobG9hZFBhcmFtZXRlcnMu
ZGF0YS5kYXRhKCksIGxvYWRQYXJhbWV0ZXJzLmRhdGEuc2l6ZSgpKTsKIAogICAgIFVSTCBiYXNl
VVJMOwogICAgIGlmIChsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSkKQEAg
LTE3NzQsNyArMTc3NCw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUwoTG9hZFBh
cmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKICAgICBVUkwgYmFzZVVSTCA9IGxvYWRQYXJhbWV0
ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYWJvdXRCbGFua1VSTCgpIDogVVJMKFVSTCgp
LCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKICAgICBVUkwgdW5yZWFjaGFibGVVUkwg
PSBsb2FkUGFyYW1ldGVycy51bnJlYWNoYWJsZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBVUkwoKSA6
IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMudW5yZWFjaGFibGVVUkxTdHJpbmcpOwogICAgIFVS
TCBwcm92aXNpb25hbExvYWRFcnJvclVSTCA9IGxvYWRQYXJhbWV0ZXJzLnByb3Zpc2lvbmFsTG9h
ZEVycm9yVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFVSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1l
dGVycy5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZyk7Ci0gICAgYXV0byBzaGFyZWRCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShsb2FkUGFyYW1ldGVycy5kYXRhLmRhdGEoKSwgbG9h
ZFBhcmFtZXRlcnMuZGF0YS5zaXplKCkpOworICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGxvYWRQYXJhbWV0ZXJzLmRhdGEuZGF0YSgpLCBsb2Fk
UGFyYW1ldGVycy5kYXRhLnNpemUoKSk7CiAgICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5s
b2FkZXIoKS5zZXRQcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTChwcm92aXNpb25h
bExvYWRFcnJvclVSTCk7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKFVSTCgpLCBs
b2FkUGFyYW1ldGVycy5NSU1FVHlwZSwgc2hhcmVkQnVmZmVyLT5zaXplKCksIGxvYWRQYXJhbWV0
ZXJzLmVuY29kaW5nTmFtZSk7CkBAIC0xNzg1LDcgKzE3ODUsNyBAQCB2b2lkIFdlYlBhZ2U6Omxv
YWRBbHRlcm5hdGVIVE1MKExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCiB2b2lkIFdl
YlBhZ2U6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0QW5kUmVzcG9uc2UoTG9hZFBhcmFtZXRlcnMmJiBs
b2FkUGFyYW1ldGVycywgUmVzb3VyY2VSZXNwb25zZSYmIHNpbXVsYXRlZFJlc3BvbnNlKQogewog
ICAgIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKGxvYWRQYXJhbWV0ZXJzLnJlcXVl
c3QuaXNBcHBJbml0aWF0ZWQoKSk7Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShsb2FkUGFyYW1ldGVycy5kYXRhLmRhdGEoKSwgbG9hZFBhcmFtZXRlcnMuZGF0
YS5zaXplKCkpOworICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGxvYWRQYXJhbWV0ZXJzLmRhdGEuZGF0YSgpLCBsb2FkUGFyYW1ldGVycy5kYXRh
LnNpemUoKSk7CiAgICAgbG9hZERhdGFJbXBsKGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCwg
bG9hZFBhcmFtZXRlcnMuc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBXVEZNb3ZlKGxvYWRQ
YXJhbWV0ZXJzLndlYnNpdGVQb2xpY2llcyksIFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgV1RGTW92
ZShsb2FkUGFyYW1ldGVycy5yZXF1ZXN0KSwgV1RGTW92ZShzaW11bGF0ZWRSZXNwb25zZSksIFVS
TCgpLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSwgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0
eTo6VmlzaWJsZSk7CiB9CiAKQEAgLTM4MzgsNyArMzgzOCw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0
U291cmNlRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoCiAKIHZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRp
b25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2spCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CiAgICAgICAgIGlmIChQbHVnaW5WaWV3
KiBwbHVnaW5WaWV3ID0gcGx1Z2luVmlld0ZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSkpCiAg
ICAgICAgICAgICBidWZmZXIgPSBwbHVnaW5WaWV3LT5saXZlUmVzb3VyY2VEYXRhKCk7CkBAIC0z
ODU0LDcgKzM4NTQsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1l
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZAogICAgIGNhbGxiYWNrKGRh
dGFSZWZlcmVuY2UpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VE
YXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cmNlVVJMKQorc3RhdGlj
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFt
ZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCiB7CiAgICAgRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwogICAgIGlmICghbG9h
ZGVyKQpAQCAtMzg2OSw3ICszODY5LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
c291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXIKIAogdm9p
ZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+
JiYgY2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGF1dG8qIGZyYW1l
ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKICAgICAgICAg
VVJMIHJlc291cmNlVVJMKFVSTCgpLCByZXNvdXJjZVVSTFN0cmluZyk7CiAgICAgICAgIGJ1ZmZl
ciA9IHJlc291cmNlRGF0YUZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSwgcmVzb3VyY2VVUkwp
OwpAQCAtNjk1NCw3ICs2OTU0LDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25G
b3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIKICAgICBpZiAo
IWRvY3VtZW50TG9hZGVyKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
IAotICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9u
LCBsb2FkSWRlbnRpZmllci50b0ludGVnZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIChXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGljb25EYXRhKSBt
dXRhYmxlIHsKKyAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihk
ZWNpc2lvbiwgbG9hZElkZW50aWZpZXIudG9JbnRlZ2VyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogaWNvbkRhdGEpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGlj
b25EYXRhIH0pOwogICAgIH0pOwogfQpAQCAtNzI0OCw3ICs3MjQ4LDcgQEAgdm9pZCBXZWJQYWdl
Ojp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0
ZDo6b3B0aW9uYWwKICAgICBpZiAoYXV0byBhdHRhY2htZW50ID0gYXR0YWNobWVudEVsZW1lbnRX
aXRoSWRlbnRpZmllcihpZGVudGlmaWVyKSkgewogICAgICAgICBhdHRhY2htZW50LT5kb2N1bWVu
dCgpLnVwZGF0ZUxheW91dCgpOwogICAgICAgICBhdHRhY2htZW50LT51cGRhdGVBdHRyaWJ1dGVz
KFdURk1vdmUoZmlsZVNpemUpLCBjb250ZW50VHlwZSwgZmlsZU5hbWUpOwotICAgICAgICBhdHRh
Y2htZW50LT51cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnRlbnRUeXBlLCBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShlbmNsb3NpbmdJbWFnZURhdGEuZGF0YSgpLCBlbmNsb3NpbmdJbWFnZURh
dGEuc2l6ZSgpKSk7CisgICAgICAgIGF0dGFjaG1lbnQtPnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0
aERhdGEoY29udGVudFR5cGUsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNsb3Np
bmdJbWFnZURhdGEuZGF0YSgpLCBlbmNsb3NpbmdJbWFnZURhdGEuc2l6ZSgpKSk7CiAgICAgfQog
ICAgIGNhbGxiYWNrKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKaW5kZXggMjYyZGU2YTQyYTY5NDk1MzAyMDFjNzIzZGFlN2U0NTIyYzU3MTYyYS4uNzRk
NTI5ZmFmOTQ1MWIzYjhiM2I5YmIxZmYwMWZjYjU2NTMxYWMyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMjE2LDcgKzIxNiw3IEBAIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWxlY3Rpb25E
YXRhOwogY2xhc3MgU2VsZWN0aW9uR2VvbWV0cnk7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiBjbGFzcyBU
ZXh0Q2hlY2tpbmdSZXF1ZXN0OwogY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwpAQCAtMTM5NCw3ICsx
Mzk0LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdm9pZCBkaWRTdGFy
dExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5h
bWUsIGNvbnN0IFN0cmluZyYgdXRpKTsKLSAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xv
b2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOworICAg
IHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3Qg
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgcmVxdWVzdFBhc3N3
b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICNlbmRpZgogCkBA
IC0xNTk3LDcgKzE1OTcsNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIHNvdXJjZUZvckZyYW1l
KFdlYkZyYW1lKik7CiAKLSAgICB2b2lkIGxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBjb25z
dCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4sIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlz
dG9yeVZpc2liaWxpdHksIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBX
ZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7Cisg
ICAgdm9pZCBsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4mJiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIGNvbnN0IFVSTCYg
ZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5Vmlz
aWJpbGl0eSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6
OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKIAogICAgIC8v
IEFjdGlvbnMKICAgICB2b2lkIHRyeUNsb3NlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbQppbmRleCA4NmUwNGM1OTYwMmQzMzVlZDcyYTFjMjFhOTkwYWQzZTNkNzY3Njg1Li42
NjQyNGNkOGExMzlmOTlmYzdmOTUyZGEyZWVmZDk0N2Y1ZjA2MjA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMzIxNyw3
ICszMjE3LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90
IGFjdGlvbikKICAgICAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8UmVu
ZGVySW1hZ2U+KCplbGVtZW50LnJlbmRlcmVyKCkpLmNhY2hlZEltYWdlKCk7CiAgICAgICAgIGlm
ICghY2FjaGVkSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpOworICAgICAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJl
c291cmNlQnVmZmVyKCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1
ZmZlcigqYnVmZmVyKTsKQEAgLTQ2ODMsNyArNDY4Myw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkU3Rh
cnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVO
YW1lCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTdGFydExvYWRGb3JRdWlj
a0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGZpbGVOYW1lLCB1dGkpKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgV2ViUGFnZTo6ZGlkRmluaXNoTG9hZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIEFTU0VSVCghYnVmZmVyLmlzRW1wdHkoKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggZDQxMjgy
ZmM1ZGM2M2MzMTdlNTRiODI2MGM1N2UzNDRjYTM2ZTMwOS4uMmQwM2Q3MWZkOTAxMTY5YzE4NjEy
ZGI0MWIwNzNlMWI4YzI1YWQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFdlYlBh
Z2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJk
VHlwZSwgQ29tcGxldAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChw
YXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRU
eXBlKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSk7CiAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlC
dWZmZXIoKmJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IGUxOGQxMGMzZmM0ZjE4ZDczYTJh
NzQwYzUzMzEzMTM0M2ZmMzNjYWYuLmM2MWI4NTEyYmEzY2ZjYzg5ZTQzNWJmOTQzNDRkZDcyOTE3
MjViMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0yMjgsMTEgKzIyOCw3IEBAIGJvb2wgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudEVuCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVTlVTRURfUEFSQU0o
bW9kZSk7CiAjaWYgSEFWRShBVktJVCkKLSNpZiBIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMp
Ci0gICAgcmV0dXJuIG1vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlU3RhbmRhcmQ7Ci0jZWxzZQogICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAjZWxzZQog
ICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtMjQzLDcgKzIzOSw3IEBAIGJvb2wgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudEVuCiAKIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRl
b0Z1bGxzY3JlZW5TdGFuZGJ5KCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAm
JiAhSEFWRShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCmluZGV4IGQzZDM4Y2FjNDEy
MTFkN2UyOWI1N2YyNDUyMzY0ZTM3YjQyM2MzMWEuLjM3ZjI3ZTk1MmQwNzE3MTEyMWNiNGY1NDg3
YThiODRiOWY4YTYzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4v
V2ViUHJvY2Vzc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQ
cm9jZXNzV2luLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRCdWZmZXIuaD4KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNl
SW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKIHsK
ICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29y
ZVN1cHBvcnQvUGluZ0hhbmRsZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9y
dC9QaW5nSGFuZGxlLmgKaW5kZXggMWY1NTg0ZmEzODdkNzZjY2U5NGZmN2I1Njk2OGU3ZTgyMjA2
MDYwNi4uYTI1NTYwYTEwYzI4ODJlMWFiZDE3ODQ1Njk0ODZlYTEzZWQ4OTZkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKQEAgLTczLDcg
KzczLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAg
cGluZ0xvYWRDb21wbGV0ZSh7IH0sIHJlc3BvbnNlKTsKICAgICB9Ci0gICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiwgaW50KSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQorICAgIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRl
KCk7IH0KICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKGVy
cm9yKTsgfQogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGUqKSBmaW5hbCB7IHJldHVybiBtX3Nob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRl
bnNpb25zLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9u
cy5tbQppbmRleCBlYjM5NDFmMjY2ZGYxM2MyOGE5MDZlZTdkMTYxYWUyMWUxNzU0MDkxLi42MzU1
YjZmOTAzMTgwMDU1Y2I2MDdhODBiZTc3MDEzODRkODhkZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KQEAgLTM4OCw3ICszODgs
NyBAQCAtIChOU0RhdGEgKilkYXRhUmVwcmVzZW50YXRpb246KEJPT0wpcmF3SW1hZ2VEYXRhCiAg
ICAgYXV0byogZGF0YSA9IHJhd0ltYWdlRGF0YSA/IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZl
cigpIDogaW1hZ2UtPmRhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBuaWw7
Ci0gICAgcmV0dXJuIGRhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0
dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7
CiB9CiAKIC0gKE5TU3RyaW5nICopbWltZVR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNDVmN2Mx
ZjVjYTc0ODJkNjBkOWJjNzRlZjYxNmMzMmZkNjI2NzY0Ny4uYmEzMWZhN2M4NmI5MDlmY2IzNTg3
M2FjZmNkMjJhOGU4YjkyOTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTgwLDcgKzgwLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2Fy
ZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRJbnNlcnRpb25QYXN0ZWJv
YXJkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVz
cG9uc2UgcmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgcmV0dXJu
IFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmU7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5tbQppbmRleCBjMmM0MGQzZDJhMTMzZjI4MTM0MTU2MDM0ZGU1NDE0MWE0Y2U5
YzMyLi43NGM0ODc4MzE3N2FmOTBiMjAyZDUxYzQ2NjY5YjQwMTJiMTI1ZjU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAg
ICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CiAKLXZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJF
ZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQog
ewogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGEyNTk4ZjMyZmI3NjBhN2Q4ODNjOWY0Y2VlYzE4Y2Y1
OTFlYjhlYWQuLjk1OWQ3NDhiNTZiZTEwNzZiZDk3Nzk5MjJjZDM1NmQyMWE2ODE3NGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjQ4LDcgKzI0OCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzZW5kSDJQaW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0
ZWQ8U2Vjb25kcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYpIGZpbmFsOwogCiAgICAg
dm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNv
cmU6OkxpbmtJY29uJiwgdWludDY0X3Q+PiYpIGZpbmFsOwotICAgIHZvaWQgZmluaXNoZWRMb2Fk
aW5nSWNvbihXZWJDb3JlOjpTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGZpbmlzaGVkTG9hZGlu
Z0ljb24oV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogCiAjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgYm9vbCBtX2xvYWRpbmdJY29uIHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW0KaW5kZXggYjg0OWQyYWFjMmE5M2ZiZWU0MTcyOWYyNGE4NmNkY2Y2
YjFmZTAxOS4uYWEyY2M5ODE0NzRhMTNjZTUwODQ3OTg5NDIzNjg0NDkxYzg4ZjZlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTIwMTIsNyArMjAxMiw3IEBAIFJlZlB0cjxXZWJD
b3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3Jl
YXRlUHJldmlld0xvCiAgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9maWxlUGF0aDsKICAg
ICAgICAgUmV0YWluUHRyPE5TRmlsZUhhbmRsZT4gbV9maWxlSGFuZGxlOwogCi0gICAgICAgIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
b3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAg
ICAgICAgYXV0byBkYXRhQXJyYXkgPSBidWZmZXIuY3JlYXRlTlNEYXRhQXJyYXkoKTsKICAgICAg
ICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGRhdGFBcnJheS5nZXQoKSkKQEAgLTIwOTQsNyAr
MjA5NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmdldExvYWREZWNpc2lvbkZvcklj
b25zKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yCiAgICAgICAgIH0KIAogICAgICAgICBt
X2xvYWRpbmdJY29uID0gdHJ1ZTsKLSAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWRE
ZWNpc2lvbkZvckljb24odHJ1ZSwgaWNvbi0+c2Vjb25kLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfV0gKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYnVmZmVyKSB7CisgICAgICAg
IGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUsIGljb24tPnNl
Y29uZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgZmluaXNoZWRMb2FkaW5nSWNv
bihidWZmZXIpOwpAQCAtMjEzMSw3ICsyMTMxLDcgQEAgc3RhdGljIE5TSW1hZ2UgKndlYkdldE5T
SW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1NpemUgc2l6ZSkKIH0KICNlbmRpZiAvLyAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNo
ZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGljb25EYXRhKQordm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBpY29uRGF0YSkKIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBBU1NFUlQobV9sb2FkaW5nSWNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4
IDI0YjY5OTcwNmRmMGQ2YjcxOTJhYTUyMDJkZTYxZDhiMWU1NzMyZjkuLjdjYzkwMmNhOWJjODgx
YTVlOTViYTYyM2E5ODYxNWRjMjU1NTQxOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
CkBAIC01NSwxNCArNTUsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5
cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CiAjZW5kaWYKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9h
cmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRp
dGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGlu
dCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBj
aGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBh
bGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRf
dCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQg
Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShW
ZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxs
U3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIGludDY0X3QgYWRkVHlwZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwm
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6
Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGZjMDc3NmU2MmQ2NmJlOWFj
OTNkNDg3ZGRmZDMwMGE2ZDQwN2M1NTMuLmUyODNiMTA4NTlmZWU4ODMzODAwMzk4YzQ4NDI5YzQ5
YTcyNzBhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTEwOSw3ICsxMDks
NyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4m
IHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0
ZWJvYXJkTmFtZSkuZ2V0VHlwZXModHlwZXMpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKQorUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAg
cmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYnVmZmVyRm9yVHlwZShw
YXN0ZWJvYXJkVHlwZSk7CiB9CkBAIC0xNTQsNyArMTU0LDcgQEAgaW50NjRfdCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIGMKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRU
eXBlcyhwYXN0ZWJvYXJkVHlwZXMpOwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZv
clR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIsIHBhc3RlYm9hcmRUeXBlKTsKIH0KQEAgLTIwOSw3
ICsyMDksNyBAQCBpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXND
b3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLAogICAgIHJldHVybiBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1
cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkQnVmZmVyKGluZGV4LCB0
eXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
QXJjaGl2ZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViQXJjaGl2ZS5t
bQppbmRleCBlYWUzYjIzYjhjYWFlMTAwMzVmODk3YWZjOWU3ZjM4ZWQ5ZTFiMmU2Li5hMzA3ZTRm
ZTBmNzhkZTE0ZjUxYzAzZTZmZTY5MTJkMDM5ZGZlYjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkFyY2hpdmUubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJBcmNoaXZlLm1tCkBAIC0xOTYsNyArMTk2LDcgQEAgLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoRGF0YTooTlNEYXRhICopZGF0YQogI2VuZGlmCiAKICAgICBfcHJp
dmF0ZSA9IFtbV2ViQXJjaGl2ZVByaXZhdGUgYWxsb2NdIGluaXRdOwotICAgIGF1dG8gY29yZUFy
Y2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSkpOworICAgIGF1dG8gY29yZUFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpKTsKICAgICBpZiAoIWNvcmVBcmNoaXZl
KSB7CiAgICAgICAgIFtzZWxmIHJlbGVhc2VdOwogICAgICAgICByZXR1cm4gbmlsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDI4
OWMwMDI5YmY5MTM0MThkMGIyOTlmOTBhNGQ5NzExM2JjNThhNGIuLjgzZTg1OTE0MzQ1ZWE3Y2I4
NDFkOTlmZDFmYjY2NmQ4Y2NmMDMwMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTQ2MCwxMCArNDYwLDEwIEBAIC0gKHZvaWQp
ZGVhbGxvYwogCiAtIChOU0RhdGEgKilkYXRhCiB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+
bWFpblJlc291cmNlRGF0YSgpOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5t
YWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5h
dXRvcmVsZWFzZSgpOworICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpZCA8V2ViRG9jdW1l
bnRSZXByZXNlbnRhdGlvbj4pcmVwcmVzZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDYzZDc4MTk5NGZhYmY0NjViZThlNTUwZWE4Y2Y4
YjZjNzgyYjMyOTIuLjUzOWZiMzczZWQwODQyMzJmZTNjNjZhM2Y5MTc2MDY3ODQxYmEyZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMjQ2MSw3
ICsyNDYxLDcgQEAgLSAodm9pZClfbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5T
U3RyaW5nICopTUlNRVR5cGUgdGV4dEVuY29kaW5nTmFtZToKICAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdChiYXNlVVJMKTsKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2UocmVzcG9uc2VVUkwsIE1JTUVUeXBlLCBbZGF0YSBsZW5ndGhdLCBlbmNvZGlu
Z05hbWUpOwotICAgIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpLCBbdW5yZWFjaGFibGVVUkwgYWJzb2x1dGVV
UkxdLCByZXNwb25zZSwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5Vmlz
aWJpbGl0eTo6SGlkZGVuKTsKKyAgICBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRl
RGF0YShXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSksIFt1bnJl
YWNoYWJsZVVSTCBhYnNvbHV0ZVVSTF0sIHJlc3BvbnNlLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0
YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4pOwogCiAgICAgX3ByaXZhdGUtPmNv
cmVGcmFtZS0+bG9hZGVyKCkubG9hZChXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0KCpfcHJpdmF0
ZS0+Y29yZUZyYW1lLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5t
bQppbmRleCA4MGNkMzBlZjQ2NzYwZTE0YzhlNjdhODhhMjczM2M5ZDQzN2ZhNWQ5Li4zOGQ3ZTUz
MmQ2ZWFhMGNhYzM4ODYyZjNlMGUxNjlmZTI4MTI3N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQpAQCAt
MjMwLDcgKzIzMCw3IEBAIC0gKEJPT0wpY2FuU2F2ZUFzV2ViQXJjaGl2ZQogLSAoTlNTdHJpbmcg
Kilkb2N1bWVudFNvdXJjZQogewogICAgIGlmIChbc2VsZiBfaXNEaXNwbGF5aW5nV2ViQXJjaGl2
ZV0pIHsgICAgICAgICAgICAKLSAgICAgICAgU2hhcmVkQnVmZmVyICpwYXJzZWRBcmNoaXZlRGF0
YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZl
RGF0YSgpOworICAgICAgICBhdXRvICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0
YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOwogICAgICAgICBy
ZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6cGFyc2VkQXJjaGl2
ZURhdGEgPyBwYXJzZWRBcmNoaXZlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggODM4
ZTQxMzM4MWE4MDc1YTNkNjI0NTk0NTUyNjdhNWJiYjU1YTk5MS4uMjhkODc1OTI5Y2NhY2RiOWEx
Mzg4YTgyNmIyZmQ1ZWNmNDZlY2NkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQwLDggKzM1NDAsOCBAQCBzdGF0aWMgUmV0YWlu
UHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVz
dFJlc3VsdCYgaAogICAgIH0KIAogICAgIGlmIChhdXRvKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQu
aW1hZ2UoKSkgewotICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gaW1hZ2UtPmRhdGEoKSkKLSAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHRO
UyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVm
ZmVyLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKKyAgICAgICAgaWYg
KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+
ZGF0YSgpKQorICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBh
bGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOwogICAgIH0K
IAogICAgIGlmICghaGl0VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKS5pc0VtcHR5KCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCmluZGV4IDEy
MTk4ZjQwMWVhOGFkNTc4ZGQ3YmRlYWNjMDRkZmI3ZTM0YWM3MzQuLjJmZGNjMDRhZjU3ZGMxMDRk
N2FmMGVlNjVmM2JkMmJmOGRlYzNkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJSZXNvdXJjZS5tbQpAQCAtMTUwLDcgKzE1MCw3IEBAIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopZGVjb2RlcgogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIH0KIAotICAgIGF1dG8gY29yZVJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUo
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSksIHVybCwgbWltZVR5cGUsIHRleHRFbmNvZGluZywg
ZnJhbWVOYW1lLCByZXNwb25zZSk7CisgICAgYXV0byBjb3JlUmVzb3VyY2UgPSBBcmNoaXZlUmVz
b3VyY2U6OmNyZWF0ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSksIHVybCwg
bWltZVR5cGUsIHRleHRFbmNvZGluZywgZnJhbWVOYW1lLCByZXNwb25zZSk7CiAgICAgaWYgKCFj
b3JlUmVzb3VyY2UpIHsKICAgICAgICAgW3NlbGYgcmVsZWFzZV07CiAgICAgICAgIHJldHVybiBu
aWw7CkBAIC0xNjMsMjEgKzE2MywyMSBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2Rlcjoo
TlNDb2RlciAqKWRlY29kZXIKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopZW5j
b2RlcgogewogICAgIGF1dG8qIHJlc291cmNlID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS5nZXQo
KTsKLSAgICAKLSAgICBOU0RhdGEgKmRhdGEgPSBuaWw7CisKKyAgICBSZXRhaW5QdHI8TlNEYXRh
PiBkYXRhOwogICAgIE5TVVJMICp1cmwgPSBuaWw7CiAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0g
bmlsLCAqdGV4dEVuY29kaW5nID0gbmlsLCAqZnJhbWVOYW1lID0gbmlsOwogICAgIE5TVVJMUmVz
cG9uc2UgKnJlc3BvbnNlID0gbmlsOwotICAgIAorCiAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAg
ICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpOworICAgICAg
ICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKICAgICAgICAgdXJsID0gcmVzb3VyY2UtPnVybCgpOwogICAgICAgICBtaW1lVHlwZSA9IHJl
c291cmNlLT5taW1lVHlwZSgpOwogICAgICAgICB0ZXh0RW5jb2RpbmcgPSByZXNvdXJjZS0+dGV4
dEVuY29kaW5nKCk7CiAgICAgICAgIGZyYW1lTmFtZSA9IHJlc291cmNlLT5mcmFtZU5hbWUoKTsK
ICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7
CiAgICAgfQotICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhIGZvcktleTpXZWJSZXNvdXJj
ZURhdGFLZXldOworICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkYXRhLmdldCgpIGZvcktleTpX
ZWJSZXNvdXJjZURhdGFLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp1cmwgZm9yS2V5
OldlYlJlc291cmNlVVJMS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6bWltZVR5cGUg
Zm9yS2V5OldlYlJlc291cmNlTUlNRVR5cGVLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVj
dDp0ZXh0RW5jb2RpbmcgZm9yS2V5OldlYlJlc291cmNlVGV4dEVuY29kaW5nTmFtZUtleV07CkBA
IC0yMDIsNyArMjAyLDcgQEAgLSAoTlNEYXRhICopZGF0YQogCiAgICAgaWYgKCFfcHJpdmF0ZS0+
Y29yZVJlc291cmNlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBfcHJpdmF0ZS0+
Y29yZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TVVJMICopVVJMCkBAIC0zMDIs
NyArMzAyLDcgQEAgLSAoaWQpX2luaXRXaXRoRGF0YTooTlNEYXRhICopZGF0YQogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIH0KIAotICAgIGF1dG8gY29yZVJlc291cmNlID0gQXJjaGl2ZVJlc291
cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29weURhdGEgPyBhZG9wdE5TKFtkYXRh
IGNvcHldKS5nZXQoKSA6IGRhdGEpLCBVUkwsIE1JTUVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCBm
cmFtZU5hbWUsIHJlc3BvbnNlKTsKKyAgICBhdXRvIGNvcmVSZXNvdXJjZSA9IEFyY2hpdmVSZXNv
dXJjZTo6Y3JlYXRlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb3B5RGF0YSA/IGFk
b3B0TlMoW2RhdGEgY29weV0pLmdldCgpIDogZGF0YSksIFVSTCwgTUlNRVR5cGUsIHRleHRFbmNv
ZGluZ05hbWUsIGZyYW1lTmFtZSwgcmVzcG9uc2UpOwogICAgIGlmICghY29yZVJlc291cmNlKSB7
CiAgICAgICAgIFtzZWxmIHJlbGVhc2VdOwogICAgICAgICByZXR1cm4gbmlsOwpAQCAtMzY3LDgg
KzM2Nyw4IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ1ZhbHVlCiAgICAgaWYgKCFlbmNvZGluZy5p
c1ZhbGlkKCkpCiAgICAgICAgIGVuY29kaW5nID0gV2luZG93c0xhdGluMUVuY29kaW5nKCk7CiAg
ICAgCi0gICAgU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2Ug
PyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsKLSAgICByZXR1cm4g
ZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8g
Y29yZURhdGEtPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkg
OiAwKTsKKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRlLT5j
b3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsK
KyAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGNvcmVEYXRhID8gY29yZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIp
LCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKaW5kZXggMzYwYWVkY2VhY2NiMWZiZGQxZDQ0
YWQ0MmQ4YzA0YzZmMDRiNjE5ZS4uNWRmMjE3MGQyYTRiZmM0YTQ4MGNmNDVhODRkMjNkNzMwNTkz
NWZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCkBAIC0zMSw3
ICszMSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBNZW1vcnlTdHJlYW0gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLU1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQorTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogewog
ICAgIGdDbGFzc0NvdW50Kys7CkBAIC00NCw3ICs0NCw3IEBAIE1lbW9yeVN0cmVhbTo6fk1lbW9y
eVN0cmVhbSgpCiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iKTsK
IH0KIAotQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK0NPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9y
eVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogewogICAgIHJldHVybiBuZXcgTWVtb3J5U3RyZWFtKFdURk1vdmUoYnVmZmVyKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCmluZGV4IDJiYTdkYTkwYTVj
NjIxMjkwMDhkZjYxMjk3MzBhY2RiOWJkNDUzYmEuLjA3ODYwYTE1YWI0YTNkYjExOWM5MTEzZmFm
YzljMTI0YjFjMTQ2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9y
eVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCkBA
IC0zNSw3ICszNSw3IEBACiBjbGFzcyBNZW1vcnlTdHJlYW0gZmluYWwgOiBwdWJsaWMgSVN0cmVh
bQogewogcHVibGljOgotICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0
YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgQ09NUHRy
PE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYpOwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9P
dXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpAQCAtNzUsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ2xvbmUoX0NPTV9PdXRwdHJfIElT
dHJlYW0qKiBwcHN0bSk7CiAKIHByaXZhdGU6Ci0gICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CiAgICAgfk1lbW9yeVN0cmVhbSgpOwogCi0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgIHNpemVfdCBtX3BvcyB7
IDAgfTsKICAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQXJjaGl2ZS5jcHAKaW5kZXggMDE4NGJlZjhjNzM1OGRiZmJhMWJlOWZlMWE4N2U1Nzkz
ODE3NjJhOS4uYzVkZTkwYzgxMGYxYWY1NDA1YzI5ZGM0ODY2YWRmZmMzNjk5OWFhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBIUkVT
VUxUIFdlYkFyY2hpdmU6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQog
ICAgIGlmICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSks
IENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSks
IENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKIAogICAgIHJldHVybiBNZW1vcnlTdHJl
YW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoYnVmZmVyKSkuY29weVJlZlRvKHN0cmVhbSk7CiAj
ZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggMjExNTk4ZDM5YTZhZjM2MWNjMmU0MDY3OTA2
ZTJiODY4NTdlZWZjMS4uZTlhMTM2ZjZiYjQyZWM4YWI3ZjUwYTNhYjMzMzMzZmIzZjIwMjNmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmUKIHsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9h
cmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9y
PFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYpCit2b2lk
IFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gPiYpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggYzE2N2NhMjkyMjNlZWE5OWU1MjhhOGVh
NjEyOGMxZTFlNjllZTNmMS4uMmFhYWZjZGRlNDI0OGY0MTViMWE4MzczYmMwMzY1MTIzMjlmOGMw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFs
OwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2
b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAg
IHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
IGZpbmFsOwogCiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygp
IGZpbmFsIHsgfQogICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IGI0MDczZTEwOGJk
NWM3NzBkZDYyYTEwNWFmYjBjY2E5YzRlZjAzOGUuLjA4OTdjN2MwNTQ4ZDIwYjFlZjQ1ZTM1ZTFi
ZjhkOGU0MGVhNWQzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRh
dGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2Uu
Y3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgSFJFU1VMVCBXZWJEYXRhU291cmNlOjpkYXRhKF9DT01f
T3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIW1fbG9hZGVyKQogICAgICAg
ICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0gICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRl
SW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKSkuY29weVJlZlRvKHN0cmVhbSk7
CisgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5S
ZXNvdXJjZURhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKSkuY29weVJlZlRvKHN0cmVhbSk7CiB9CiAK
IEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6cmVwcmVzZW50YXRpb24oX0NPTV9PdXRwdHJfb3B0XyBJ
V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbioqIHJlcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZy
YW1lLmNwcAppbmRleCA5MGE1YTBhMTMzNmVlZWJjOGFmNWNkZWMxYjVjNjIwZTY4MjMxOWI1Li41
ZTU5NzQ4NDQyYzIyOGQ1ZDk3OGRkZTI0ZWJlNDA1ODc5OTA0NDkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWUuY3BwCkBAIC01NTksNyArNTU5LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6
bG9hZFJlcXVlc3QoX0luX29wdF8gSVdlYlVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKLXZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RS
IGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKK3ZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJT
VFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpCiB7CiAg
ICAgU3RyaW5nIG1pbWVUeXBlU3RyaW5nKG1pbWVUeXBlLCBTeXNTdHJpbmdMZW4obWltZVR5cGUp
KTsKICAgICBpZiAoIW1pbWVUeXBlKQpAQCAtNTg1LDI3ICs1ODUsMjcgQEAgdm9pZCBXZWJGcmFt
ZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVU
eXBlLCBCU1RSIHQKIAogSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVh
bSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwg
X0luXyBCU1RSIHVybCkKIHsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBzaGFyZWRCdWZmZXI7CiAKICAgICBT
VEFUU1RHIHN0YXQ7CiAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5TdGF0KCZzdGF0LCBTVEFURkxB
R19OT05BTUUpKSkgewogICAgICAgICBpZiAoIXN0YXQuY2JTaXplLkhpZ2hQYXJ0ICYmIHN0YXQu
Y2JTaXplLkxvd1BhcnQpIHsKICAgICAgICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhQnVmZmVyKHN0
YXQuY2JTaXplLkxvd1BhcnQpOwogICAgICAgICAgICAgVUxPTkcgcmVhZDsKLSAgICAgICAgICAg
IC8vIEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3VsZCBiZSBiZXR0ZXIgdG8g
cmVhZCByaWdodCBpbnRvIHRoZSBTaGFyZWRCdWZmZXIKKyAgICAgICAgICAgIC8vIEZJWE1FOiB0
aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3VsZCBiZSBiZXR0ZXIgdG8gcmVhZCByaWdodCBp
bnRvIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyCiAgICAgICAgICAgICAvLyBvciBhZG9wdCB0
aGUgVmVjdG9yIG9yIHNvbWV0aGluZy4KICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoZGF0YS0+
UmVhZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8VUxPTkc+KGRhdGFCdWZmZXIuc2l6
ZSgpKSwgJnJlYWQpKSkKLSAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChkYXRh
QnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOworICAg
ICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRp
Y19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsKICAgICAgICAgfQogICAgIH0KIAotICAg
IGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05h
bWUsIHVybCwgbnVsbHB0cik7CisgICAgbG9hZERhdGEoc2hhcmVkQnVmZmVyLnRha2UoKSwgbWlt
ZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRQbGFpblRleHRTdHJpbmcoX0luXyBCU1RSIHBs
YWluVGV4dCwgX0luXyBCU1RSIHVybCkKIHsKLSAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHBsYWluVGV4dCksIHNpemVv
ZihVQ2hhcikgKiBTeXNTdHJpbmdMZW4ocGxhaW5UZXh0KSk7CisgICAgYXV0byBzaGFyZWRCdWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4ocGxhaW5UZXh0KSwgc2l6ZW9mKFVDaGFyKSAqIFN5c1N0cmluZ0xlbihwbGFpblRleHQpKTsK
ICAgICBCU3RyaW5nIHBsYWluVGV4dE1pbWVUeXBlKFRFWFQoInRleHQvcGxhaW4iKSwgMTApOwog
ICAgIEJTdHJpbmcgdXRmMTZFbmNvZGluZyhURVhUKCJ1dGYtMTYiKSwgNik7CiAgICAgbG9hZERh
dGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBwbGFpblRleHRNaW1lVHlwZSwgdXRmMTZFbmNvZGlu
ZywgdXJsLCBudWxscHRyKTsKQEAgLTYxNCw3ICs2MTQsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjps
b2FkUGxhaW5UZXh0U3RyaW5nKF9Jbl8gQlNUUiBwbGFpblRleHQsIF9Jbl8gQlNUUiB1cmwpCiAK
IHZvaWQgV2ViRnJhbWU6OmxvYWRIVE1MU3RyaW5nKF9Jbl8gQlNUUiBodG1sU3RyaW5nLCBfSW5f
IEJTVFIgYmFzZVVSTCwgX0luXyBCU1RSIHVucmVhY2hhYmxlVVJMKQogewotICAgIGF1dG8gc2hh
cmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
aHRtbFN0cmluZyksIHNpemVvZihVQ2hhcikgKiBTeXNTdHJpbmdMZW4oaHRtbFN0cmluZykpOwor
ICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGh0bWxTdHJpbmcpLCBzaXplb2YoVUNoYXIpICogU3lzU3Ry
aW5nTGVuKGh0bWxTdHJpbmcpKTsKICAgICBCU3RyaW5nIHV0ZjE2RW5jb2RpbmcoVEVYVCgidXRm
LTE2IiksIDYpOwogICAgIGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgMCwgdXRmMTZF
bmNvZGluZywgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkZyYW1lLmgKaW5kZXggNDM2MDU0ZmQ5ZGRiNDdjYTMyOTZiMTE3OTgxNDM0ZWMxODk3ZGFkMS4u
ZmE5YzM4MWNjNTczYmE2YjIwOTg4ZWFiMzUwOGVkOWEzMGE4ZjEzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJGcmFtZS5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxl
bWVudDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAK
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTQ29udGV4dCogSlNDb250ZXh0UmVmOwpAQCAt
MTk1LDcgKzE5NSw3IEBAIHByaXZhdGU6CiAgICAgfldlYkZyYW1lKCk7CiAKICAgICB2b2lkIGxv
YWRIVE1MU3RyaW5nKF9Jbl8gQlNUUiBzdHJpbmcsIF9Jbl8gQlNUUiBiYXNlVVJMLCBfSW5fIEJT
VFIgdW5yZWFjaGFibGVVUkwpOwotICAgIHZvaWQgbG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJh
c2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7CisgICAgdm9pZCBsb2FkRGF0YShSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2Rp
bmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7CiAgICAgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkludFJlY3Q+JiBjb21wdXRlUGFnZVJlY3RzKEhEQyBwcmludERDKTsKICAgICB2
b2lkIHNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYg
cGFnZVNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgb3JpZ2luYWxQYWdlU2l6ZSwgZmxv
YXQgbWF4aW11bVNocmlua1JhdGlvLCBXZWJDb3JlOjpBZGp1c3RWaWV3U2l6ZU9yTm90KTsKICAg
ICB2b2lkIGhlYWRlckFuZEZvb3RlckhlaWdodHMoZmxvYXQqLCBmbG9hdCopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdERMTC5jcHAKaW5kZXggOTYyMDE5OGI0YjU0MGFlNmY3OTY3ZjgyMzNj
OTQ2NGJkMjc3NTg1MS4uZjc5NjEwMTY3NjllOWNmZWY0MDYzMDZmNjM2ZDI5NDIxMmMxMTYwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCkBAIC0xNjUsOCArMTY1LDggQEAg
dm9pZCBzaHV0RG93bldlYktpdCgpCiB9CiAKIC8vRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciBt
b3ZpbmcgdGhpcyB0byBhIG5ldyBmaWxlIGZvciBjcm9zcy1wcm9qZWN0IGZ1bmN0aW9uYWxpdHkK
LVdFQktJVF9BUEkgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50
b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKTsKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKK1dFQktJVF9BUEkgUmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZm
ZXIoY29uc3QgY2hhciogbmFtZSk7CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQogewogICAgIGlu
dCBpZHI7CiAgICAgLy8gdGVtcG9yYXJ5IGhhY2sgdG8gZ2V0IHJlc291cmNlIGlkCkBAIC0yMzIs
NyArMjMyLDcgQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50
b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB1
bnNpZ25lZCBzaXplID0gU2l6ZW9mUmVzb3VyY2UoZ0luc3RhbmNlLCByZXNJbmZvKTsKIAotICAg
IHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihyZXNvdXJjZSksIHNpemUpOworICAgIHJldHVybiBXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocmVz
b3VyY2UpLCBzaXplKTsKIH0KIAogLy8gRm9yY2Ugc3ltYm9scyB0byBiZSBpbmNsdWRlZCBzbyB3
ZSBjYW4gZXhwb3J0IHRoZW0gZm9yIGxlZ2FjeSBjbGllbnRzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUmVzb3VyY2UuY3BwCmluZGV4IDk0M2ZhN2FiNDVjOGIwZDM1ZDY3YTMwYzBmZGFiNDM0
OWEzZTY0YTkuLjJmZmNiODk5OWIxODQ0OGNkNjI0OGY5YmZjZjE1YWE1MTdjYWViZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgV2Vi
UmVzb3VyY2U6On5XZWJSZXNvdXJjZSgpCiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJSZXNvdXJjZSIpOwogfQogCi1XZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3Rh
bmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitXZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNy
ZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRh
dGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIENP
TVB0cjxNZW1vcnlTdHJlYW0+IG1lbW9yeVN0cmVhbSA9IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5z
dGFuY2UoV1RGTW92ZShkYXRhKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5o
CmluZGV4IGI2ZWI4NmZjY2E1ZTMxMzY5YzllOGIwNjU0MThmMjc5NDkyOTk5MDMuLjk0YWIzNWM1
NjA4MTAxMTdjODk1ZTRhMTBjMzkxYmNjYTMzN2QxOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViUmVzb3VyY2UuaApAQCAtMzYsNyArMzYsNyBAQAogCiBjbGFzcyBXZWJSZXNvdXJjZSBmaW5h
bCA6IHB1YmxpYyBJV2ViUmVzb3VyY2UgewogcHVibGljOgotICAgIHN0YXRpYyBXZWJSZXNvdXJj
ZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3Jl
YXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIC8vIElVbmtub3duCiAgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVG
SUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5NDVlYWViODIzMzE5ODg3M2My
NjQwNDE1YTc4MDYxMmE2YmQ4NzQ5Li45ZDhmMzZhOGQ2NDFmN2M0MjU3M2QxY2IyMzYwMzRhOGFh
ZWJlZWRmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTQgQEAKKzIwMjEtMTItMDIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFw
cGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBm
cm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eTogcGFydCAz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFy
ZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OnJlYWRBbGxDaHVua3MpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6VGVhckRvd24pOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0Lmg6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHA6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZl
ci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHA6CisgICAgICAgIChsb2FkUmVzb3VyY2VJ
bnRvQnVmZmVyKToKKworMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRh
cjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXBkYXRlIEFQSSB0ZXN0cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9G
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVm
ZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKworMjAyMS0xMS0yNSAg
SmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNo
IGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFy
YW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Rf
Rik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1
ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEtMTItMDIg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQuIFtHVEtdIFVzZSBudWxscHRyIGluc3RlYWQgb2YgMCBpbiBKU1N0cmluZ0NyZWF0
ZVdpdGhDaGFyYWN0ZXJzKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5
c3RlbS5jcHAKaW5kZXggODU4M2IyOWFkOTkwYzIyYjQ3MmM4NjllY2NkODY4Mjk2MjFiYjBiNC4u
Yjg0N2QzYTgyNmIzZDlmZmMwOGY2ZjNiZTM4MjYwYTZjNTlkZmYyYSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgc3Rh
dGljIHZvaWQgY3JlYXRlVGVzdEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIH07CiAKLS8vIEZJWE1FOiBSZWZhY3RvciBGaWxl
U3lzdGVtVGVzdCBhbmQgU2hhcmVkQnVmZmVyVGVzdCBhcyBhIHNpbmdsZSBjbGFzcy4KKy8vIEZJ
WE1FOiBSZWZhY3RvciBGaWxlU3lzdGVtVGVzdCBhbmQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3QgYXMgYSBzaW5nbGUgY2xhc3MuCiBjbGFzcyBGaWxlU3lzdGVtVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKIHB1YmxpYzoKICAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNw
cAppbmRleCBiOTg2YTJhNTg4ODQ2NWJlMTkyMGE2ZTA2NjhkNzBkYjI0OTA2ZWFiLi4yODY5M2I2
ZTU2N2E3MTE3MTg2ZDM4YmRhNzY1ZGQwYzkzNzViNTE4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCkBAIC0xOTgs
MTEgKzE5OCwxMSBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQpCiAg
ICAgICAgICAgICByZXR1cm4geyBnbG9iYWxCdWZmZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVtQnVm
ZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkgfTsKICAgICAgICAgfQogCi0gICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJ
dGVtJiBkaXNwbGF5TGlzdEl0ZW0pIGNvbnN0IGZpbmFsCisgICAgICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRl
bSYgZGlzcGxheUxpc3RJdGVtKSBjb25zdCBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBh
dXRvIGluZGV4ID0gbV9pdGVtcy5zaXplKCk7CiAgICAgICAgICAgICBtX2l0ZW1zLmFwcGVuZChz
dGQ6OmdldDxTdHJva2VQYXRoPihkaXNwbGF5TGlzdEl0ZW0pKTsKLSAgICAgICAgICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmaW5kZXgp
LCBzaXplb2Yoc2l6ZV90KSk7CisgICAgICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZpbmRleCksIHNpemVvZihz
aXplX3QpKTsKICAgICAgICAgfQogCiAgICAgICAgIFZlY3RvcjxTdHJva2VQYXRoPiYgbV9pdGVt
czsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRC
dWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5jcHAKaW5kZXggZGRiZmMxZjJiMTgyMWNiMWRmYWJjOGUyZjYzMjdiMjEyYzdjYTQ2OC4uNWQw
NDU0YjVlZmExNDIxNTc4ODZkNjQzNDFjOTM5NmQ2OTA5NGM1YSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKQEAgLTQxLDgwICs0MSw3MyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hh
cmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKICAgICBB
U1NFUlRfTlVMTChidWZmZXIpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRl
V2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
clRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBFWFBF
Q1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSkpOwotICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQ
RUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJU
ZXN0Ojp0ZXN0RGF0YSgpKSk7CisgICAgRVhQRUNUX1RSVUUoU3RyaW5nKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQorVEVTVF9GKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlG
aWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOworICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CiAgICAgQVNT
RVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5KCkp
OwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29u
dGVudHNPZkV4aXN0aW5nRmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwg
Y29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29weSA9IGJ1ZmZlci0+Y29weSgpOworICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNU
X0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkg
PT0gY29weS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgp
LCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNt
cChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVh
dGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkK
IHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1
ZmZlcik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPnNp
emUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+ZGF0YSgpKTsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoKmJ1ZmZlcik7CisgICAgYnVp
bGRlci5hcHBlbmQoImEiLCAxKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLnNpemUoKSA9PSAo
c3RybGVuKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKKyAg
ICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKKyAgICBFWFBFQ1RfRVEoJ2En
LCBidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVuKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCi1URVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQot
ewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKLSAgICBBU1NFUlRfTk9UX05VTEwo
YnVmZmVyKTsKLSAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEpOwotICAgIEVYUEVDVF9UUlVFKGJ1
ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAx
KSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7
Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCkpXSk7Ci19Ci0KLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVh
dGVBcnJheUJ1ZmZlcikKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIpCiB7CiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CiAgICAg
Y2hhciB0ZXN0RGF0YTFbXSA9ICJXb3JsZCI7CiAgICAgY2hhciB0ZXN0RGF0YTJbXSA9ICJHb29k
YnllIjsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKLSAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKLSAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKLSAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZl
cigpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcih0ZXN0RGF0YTAsIHN0cmxlbih0
ZXN0RGF0YTApKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0
YTEpKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsK
KyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBjaGFyIGV4cGVjdGVkQ29uY2F0ZW5hdGlvbltdID0g
IkhlbGxvV29ybGRHb29kYnllIjsKICAgICBBU1NFUlRfRVEoc3RybGVuKGV4cGVjdGVkQ29uY2F0
ZW5hdGlvbiksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIEVYUEVDVF9FUSgwLCBt
ZW1jbXAoZXhwZWN0ZWRDb25jYXRlbmF0aW9uLCBhcnJheUJ1ZmZlci0+ZGF0YSgpLCBzdHJsZW4o
ZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
dHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiB7CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjAoMHg0MDAwLCAnYScpOwogICAgIFZlY3Rvcjx1aW50OF90
PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMigweDQw
MDAsICdjJyk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcjApKTsKLSAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3Zl
KHZlY3RvcjIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hhcmVk
QnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
YnVpbGRlcihXVEZNb3ZlKHZlY3RvcjApKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZl
Y3RvcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKKyAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKTsKICAgICBBU1NFUlRfRVEoMHg0MDAwVSArIDB4NDAwMFUgKyAweDQwMDBVLCBh
cnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBpbnQgcG9zaXRpb24gPSAwOwogICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgMHg0MDAwOyArK2kpIHsKQEAgLTEzMSw3ICsxMjQsNyBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQog
ICAgIH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCitURVNUX0YoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiB7CiAgICAgY2hhciB0ZXN0RGF0YVtdID0gIkhh
Yml0YXNzZSBpbnRlZ2VyIGVyb3MgdGluY2lkdW50IGEgc2NlbGVyaXNxdWUhIEVuaW0gZWxpdD8g
U2NlbGVyaXNxdWUgbWFnbmlzLCIKICAgICAiZXQgbW9udGVzIHVsdHJpY2VzIHRyaXN0aXF1ZSBh
ISBQaWQuIFZlbGl0IHR1cnBpcywgZGFwaWJ1cyBpbnRlZ2VyIHJob25jdXMgc29jaWlzIGFtZXQg
ZmFjaWxpc2lzLCIKQEAgLTE1MSwxNyArMTQ0LDUzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCBjb3B5KQogICAgICJtYXR0aXMgZGlnbmlzc2ltIG1hc3NhIGFjIHB1bHZpbmFyIHVybmEsIG51
bmMgdXQuIFNhZ2l0dGlzLCBhbGlxdWV0IHBlbmF0aWJ1cyBwcm9pbiBsb3JlbSwgcHVsdmluYXIg
bGVjdHVzLCIKICAgICAiYXVndWUgcHJvaW4hIEFjLCBhcmN1IHF1aXMuIFBsYWNlcmF0IGhhYml0
YXNzZSwgcmlkaWN1bHVzIHJpZGljdWx1cy4iOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxl
bih0ZXN0RGF0YSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5h
cHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERh
dGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAg
ICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5k
KHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3Ro
KTsKICAgICAvLyBzaGFyZWRCdWZmZXIgbXVzdCBjb250YWluIGRhdGEgbW9yZSB0aGFuIHNlZ21l
bnRTaXplICg9IDB4MTAwMCkgdG8gY2hlY2sgY29weSgpLgotICAgIEFTU0VSVF9FUShsZW5ndGgg
KiA0LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xv
bmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgY2xv
bmUtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+ZGF0YSgpLCBzaGFy
ZWRCdWZmZXItPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwotICAgIGNsb25lLT5hcHBlbmQodGVz
dERhdGEsIGxlbmd0aCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkp
OworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBidWlsZGVyMS5zaXplKCkpOworICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjbG9uZSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBF
WFBFQ1RfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDAsIG1l
bWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWlsZGVyMS5nZXQoKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIGJ1aWxkZXIyLmFwcGVuZCgqY2xvbmUpOworICAgIGJ1
aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICog
NSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIyLnRha2UoKTsK
KyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNSwgYnVmZmVyLT5zaXplKCkpOworICAgIC8vIGJ1aWxk
ZXIgaXMgbm93IGVtcHR5LgorICAgIEVYUEVDVF9FUSgwVSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAg
ICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRl
cjIuaXNFbXB0eSgpKTsKK30KKworVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBi
dWlsZGVyKQoreworICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAg
RVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRl
cjEuaXNFbXB0eSgpKTsKKyAgICBhdXRvIGNvcHkgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgYXV0
byBidWZmZXIgPSBidWlsZGVyMS50YWtlKCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNO
dWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgRVhQRUNU
X05FKGNvcHkucHRyKCksIGJ1ZmZlci5wdHIoKSk7IC8vIFdlIGhhdmUgZGlmZmVyZW50IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIKKyAgICBFWFBFQ1RfRVEoY29weS5nZXQoKSwgYnVmZmVyLmdldCgp
KTsgLy8gQnV0IHRoZWlyIGNvbnRlbnQgaXMgaWRlbnRpY2FsCisKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXIyOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAg
ICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmFwcGVuZCh0
ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIu
aXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1
aWxkZXIyLnJlc2V0KCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAg
IEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuZW1wdHkoKTsK
KyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1
aWxkZXIyLmlzRW1wdHkoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwZWN0ZWQp
CkBAIC0xNzMsNzAgKzIwMiw4MCBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50
OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAgICAgICAgIEVY
UEVDVF9FUShidWZmZXJbaV0sIGV4cGVjdGVkW2ldKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGdldFNvbWVEYXRhKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBn
ZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7J2EnLCAnYicsICdjJywg
J2QnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2UnLCAnZicsICdnJywgJ2gnfTsKLSAg
ICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdrJywgJ2wnfTsKLSAgICAKLSAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQo
V1RGTW92ZShzMSkpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczIpKTsKLSAgICBidWZm
ZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geyAnYScs
ICdiJywgJ2MnLCAnZCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7ICdlJywgJ2YnLCAn
ZycsICdoJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsgJ2knLCAnaicsICdrJywgJ2wn
IH07CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBl
bmQoV1RGTW92ZShzMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczIpKTsKKyAgICBi
dWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRh
a2UoKTsKICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXItPmdldFNvbWVEYXRhKDApOwotICAg
IGF1dG8gZ2ggPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2gxID0gYnVmZmVy
LT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBidWZmZXItPmdldFNvbWVEYXRhKDcpOwog
ICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoOCk7CiAgICAgYXV0byBrbCA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoMTApOwotICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gYnVmZmVyLT5k
YXRhKCk7Ci0gICAgYXV0byBnaGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1
dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRv
IGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsKKyAgICBhdXRvIGdoMiA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaGlqa2wgPSBjb250aWd1b3VzQnVm
ZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwgPSBidWZmZXItPmdldFNvbWVEYXRhKDEx
KTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwgYWJjZC5zaXplKCksICJhYmNkIik7Ci0g
ICAgY2hlY2tCdWZmZXIoZ2guZGF0YSgpLCBnaC5zaXplKCksICJnaCIpOworICAgIGNoZWNrQnVm
ZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGguZGF0
YSgpLCBoLnNpemUoKSwgImgiKTsKICAgICBjaGVja0J1ZmZlcihpamtsLmRhdGEoKSwgaWprbC5z
aXplKCksICJpamtsIik7CiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0YSgpLCBrbC5zaXplKCksICJr
bCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwgYnVmZmVyLT5zaXplKCksICJhYmNk
ZWZnaGlqa2wiKTsKKyAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgpLCBnaDIuc2l6ZSgpLCAiZ2gi
KTsKICAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlqa2wuc2l6ZSgpLCAiZ2hpamts
Iik7CisgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5zaXplKCkpOworICAgIGNoZWNrQnVm
ZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRhQXNDaGFyUHRyKCkpOwogICAgIGNo
ZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIGlzRXF1YWxUbykKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwg
aXNFcXVhbFRvKQogewogICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPHVp
bnQ4X3Q+PiYmIGNvbnRlbnRzKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgICAg
ICBmb3IgKGF1dG8mIGNvbnRlbnQgOiBjb250ZW50cykKLSAgICAgICAgICAgIGJ1ZmZlci0+YXBw
ZW5kKFdURk1vdmUoY29udGVudCkpOwotICAgICAgICByZXR1cm4gYnVmZmVyOworICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7CisgICAgICAgIHJldHVybiBidWls
ZGVyLnRha2UoKTsKICAgICB9OwotICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3snYScs
ICdiJywgJ2MnLCAnZCd9fSk7CisgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2En
LCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZl
cjEuZ2V0KCkpOwogCi0gICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAn
YicsICdjJywgJ2QnfSkpOwotICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVy
KHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwotICAg
IEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwg
bWFrZUJ1ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1Rf
TkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYics
ICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5n
ZXQoKSwgbWFrZUJ1ZmZlcih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFr
ZUJ1ZmZlcih7eydhJ30sIHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7J2EnfX0p
LmdldCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RGTW92ZShidWZmZXIx
KSk7CisgICAgYnVpbGRlci5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsgJ2EnLCAnYicsICdjJywg
J2QnIH0pKTsKKyAgICBFWFBFQ1RfRVEoKmJ1aWxkZXIuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdh
JywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworCisgICAg
RVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJywgJ2MnIH0sIHsgJ2QnIH0gfSku
Z2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0sIHsgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7
CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VC
dWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VC
dWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdiJywgJ2MnIH0g
fSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicgfSB9
KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2EnIH0gfSkuZ2V0KCkpOwogfQogCi1U
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCitURVNUX0YoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQogewogICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9
IHsweDExLCAweDUsIDB4MTJ9OwotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXIt
PnRvSGV4U3RyaW5nKCk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdCwgIjExMDUxMiIpOwotICAgIGJ1
ZmZlci0+Y2xlYXIoKTsKKyAgICBidWlsZGVyLnJlc2V0KCk7CisgICAgYnVmZmVyID0gYnVpbGRl
ci50YWtlKCk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlci0+dG9IZXhTdHJpbmcoKSwgIiIpOwogfQog
Ci1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVk
QnVmZmVyVGVzdCwgcmVhZCkKIHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0g
IlRoaXMgaXMgYSBzaW1wbGUgdGVzdC4iOwogCi0gICAgYXV0byBjaGVjayA9IFtdKFNoYXJlZEJ1
ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9
IHNoYXJlZEJ1ZmZlci5yZWFkKDQsIDMpOwogICAgICAgICBFWFBFQ1RfRVEoZGF0YS5zaXplKCks
IDN1KTsKICAgICAgICAgRVhQRUNUX0VRKFN0cmluZyhkYXRhLmRhdGEoKSwgMyksICIgaXMiKTsK
QEAgLTI0NiwxOSArMjg1LDIwIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQogCiAg
ICAgICAgIEVYUEVDVF9FUShTdHJpbmcoZGF0YS5kYXRhKCksIDE4KSwgIiBpcyBhIHNpbXBsZSB0
ZXN0LiIpOwogICAgIH07Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGF1dG8gc2hhcmVkQnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihz
aW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWls
ZGVyOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKysp
Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBj
aGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtp
XSwgMSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxk
ZXIuaXNOdWxsKCkgJiYgIWJ1aWxkZXIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwg
MHUpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAg
ICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VR
KHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNo
YXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsK
KyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAg
Y2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQpAQCAtMjY2LDcg
KzMwNiw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQogdGVtcGxhdGU8IHR5cGVu
YW1lIFQsIHNpemVfdCBOID4KIGNvbnN0ZXhwciBzaXplX3QgYXJyYXlzaXplKCBjb25zdCBUICgm
KVtOXSApIHsgcmV0dXJuIE47IH0KIAotc3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZl
Y3RvcjxTdHJpbmc+KiBjaHVua3MsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IHNlcGFyYXRvciA9ICJcclxuIiwgYm9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFsc2UpCitzdGF0
aWMgdm9pZCByZWFkQWxsQ2h1bmtzKHN0ZDo6dmVjdG9yPFN0cmluZz4qIGNodW5rcywgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHNlcGFyYXRvciA9ICJcclxu
IiwgYm9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFsc2UpCiB7CiAgICAgU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXIgY2h1bmtSZWFkZXIoJmJ1ZmZlciwgc2VwYXJhdG9yLnV0ZjgoKS5kYXRhKCkpOwog
ICAgIFN0cmluZyBjaHVuayA9IGNodW5rUmVhZGVyLm5leHRDaHVua0FzVVRGOFN0cmluZ1dpdGhM
YXRpbjFGYWxsYmFjayhpbmNsdWRlU2VwYXJhdG9yKTsKQEAgLTI5OSw3ICszMzksNyBAQCBzdGF0
aWMgdm9pZCBjaGVja0RhdGFJblJhbmdlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgc2l6
ZV90IHN0YXJ0LCBzaXplX3QgbAogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0
LCBpbmNsdWRlU2VwYXJhdG9yKQogewotICAgIGF1dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXIm
IHNoYXJlZEJ1ZmZlcikgeworICAgIGF1dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgY2h1
bmtSZWFkZXIoJnNoYXJlZEJ1ZmZlciwgIlx4MTBceDExXHgxMiIpOwogICAgICAgICBWZWN0b3I8
dWludDhfdD4gb3V0OwogICAgICAgICBFWFBFQ1RfVFJVRShjaHVua1JlYWRlci5uZXh0Q2h1bmso
b3V0KSk7CkBAIC0zMTQsOSArMzU0LDkgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
VGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1Njsg
KytpKQogICAgICAgICBkYXRhW2ldID0gaTsKIAotICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgMjU2KTsKKyAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCAyNTYpOwogICAgIGNoZWNrKHNoYXJl
ZEJ1ZmZlcik7Ci0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICBzaGFyZWRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKSB7CiAgICAgICAgIGNoYXIgYyA9IGk7CiAg
ICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZjLCAxKTsKQEAgLTMyOCw3ICszNjgsNyBAQCBU
RVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKIHsKICAgICBjb25z
dCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgYSBzaW1wbGUgdGVzdC4iOwogCi0g
ICAgYXV0byBjaGVjayA9IFtdKFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0
byBjaGVjayA9IFtdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAg
ICAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlciBjaHVua1JlYWRlcigmc2hhcmVkQnVmZmVyLCAi
aXMiKTsKIAogICAgICAgICBTdHJpbmcgY2h1bmsgPSBjaHVua1JlYWRlci5uZXh0Q2h1bmtBc1VU
RjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soKTsKQEAgLTM1NSwxNSArMzk1LDE1IEBAIFRFU1Rf
RihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHBlZWtEYXRhKQogICAgICAgICBjaHVuayA9
IGNodW5rUmVhZGVyLm5leHRDaHVua0FzVVRGOFN0cmluZ1dpdGhMYXRpbjFGYWxsYmFjaygpOwog
ICAgICAgICBFWFBFQ1RfVFJVRShjaHVuay5pc051bGwoKSk7CiAgICAgfTsKLSAgICBhdXRvIHNo
YXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1w
bGVUZXh0KSk7CisgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFy
ZWRCdWZmZXIpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICBzaGFyZWRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQogICAgICAg
ICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CiAgICAgY2hlY2soc2hh
cmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgc2hhcmVkQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKICAg
ICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwogICAgIEVYUEVD
VF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKQEAgLTM3Myw3
ICs0MTMsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkK
IFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRp
U2VnbWVudCkKIHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMg
dGhlIG1vc3QgcmlkaWN1bG91cyBoaXN0b3J5IHRoZXJlIGlzLiI7Ci0gICAgYXV0byBjaGVjayA9
IFtdKFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBzdGQ6OnZlY3Rv
cjxTdHJpbmc+IGNodW5rczsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVu
a3MxV2l0aG91dFNlcGFyYXRvcltdID0geyAiVGgiLCAicyAiLCAicyB0aGUgbW9zdCByIiwgImQi
LCAiY3Vsb3VzIGgiLCAic3RvcnkgdGhlcmUgIiwgInMuIiB9OwogICAgICAgICByZWFkQWxsQ2h1
bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImkiKTsKQEAgLTQwNCwxNSArNDQ0LDE1IEBAIFRF
U1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2Vn
bWVudCkKICAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpc3Qi
LCB0cnVlKTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3Rl
ZENodW5rczNXaXRoU2VwYXJhdG9yLCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3MzV2l0aFNlcGFy
YXRvcikpKTsKICAgICB9OwotICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBhdXRvIHNoYXJlZEJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4o
c2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7Ci0gICAgc2hhcmVkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBzaGFyZWRCdWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxl
bihzaW1wbGVUZXh0KTsgaSsrKQogICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxl
VGV4dFtpXSwgMSk7CiAgICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4o
c2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIHNoYXJlZEJ1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3Ry
bGVuKHNpbXBsZVRleHQpOyBpICs9IDUpCiAgICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZz
aW1wbGVUZXh0W2ldLCA1KTsKICAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0
cmxlbihzaW1wbGVUZXh0KSk7CkBAIC00MjMsNyArNDYzLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyVGVzdCwgY2hhbmdpbmdJdGVyYXRvcikKIHsKICAgICB7CiAgICAgICAgIGNv
bnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyB0aGUgbW9zdCByaWRpY3Vsb3Vz
IGhpc3RvcnkgdGhlcmUgaXMuIjsKLSAgICAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgICAgICBh
dXRvIHNoYXJlZEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVU
ZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgICAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRl
ciBjaHVua1JlYWRlcihzaGFyZWRCdWZmZXIucHRyKCksICJpcyIpOwogICAgICAgICBTdHJpbmcg
Y2h1bmsgPSBjaHVua1JlYWRlci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJh
Y2soKTsKICAgICAgICAgRVhQRUNUX0VRKGNodW5rLCAiVGgiKTsKQEAgLTQ1MSw3ICs0OTEsNyBA
QCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQog
CiAgICAgewogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gImRvZyI7Ci0g
ICAgICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4
dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQp
KTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3NXaXRob3V0U2VwYXJh
dG9yW10gPSB7ICIiIH07CiAgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOwogICAg
ICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImRvZyIpOwpAQCAtNDY2
LDcgKzUwNiw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGNoYW5naW5n
SXRlcmF0b3IpCiAgICAgLy8gRW5kcyB3aXRoIHJlcGVhdGVkIHNlcGFyYXRvcnMuCiAgICAgewog
ICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIkJlYXVjb3VwIGRlIGNoYXRz
IGNhdGNhdGNhdGNhdGNhdCI7Ci0gICAgICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICAgICAgYXV0
byBzaGFyZWRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4
dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0
ZWRDaHVua3NXaXRob3V0U2VwYXJhdG9yW10gPSB7ICJCZWF1Y291cCBkZSBjaGF0cyAiLCAiIiwg
IiIsICIiLCAiIiB9OwogICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5rczsKICAgICAg
ICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJjYXQiKTsKQEAgLTQ4MCw3
ICs1MjAsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0
ZXJhdG9yKQogICAgIHsKICAgICAgICAgY29uc3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJU
aGlzIGlzIGEgc2ltcGxlIHRlc3QuXHJcbk5vdGhpbmcgc3BlY2lhbC5cclxuIjsKICAgICAgICAg
Y29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3NbXSA9IHsgIlRoaXMgaXMgYSBzaW1wbGUg
dGVzdC4iLCAiTm90aGluZyBzcGVjaWFsLiIgfTsKLSAgICAgICAgYXV0byBzaGFyZWRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwor
ICAgICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgICAgICBzdGQ6OnZlY3RvcjxT
dHJpbmc+IGNodW5rczsKICAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZm
ZXIpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1
bmtzLCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3MpKSk7CkBAIC00ODksNyArNTI5LDcgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgY2hhbmdpbmdJdGVyYXRvcikKICAgICB7
CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyBhIHNpbXBs
ZSB0ZXN0LlxyXG5Ob3RoaW5nIHNwZWNpYWwuIjsKICAgICAgICAgY29uc3QgY2hhciogY29uc3Qg
ZXhwZWN0ZWRDaHVua3NbXSA9IHsgIlRoaXMgaXMgYSBzaW1wbGUgdGVzdC4iLCAiTm90aGluZyBz
cGVjaWFsLiIgfTsKLSAgICAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgICAgICBhdXRvIHNoYXJl
ZEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJs
ZW4oc2ltcGxlVGV4dCkpOwogCiAgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOwog
ICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlcik7CkBAIC00OTksNyAr
NTM5LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgY2hhbmdpbmdJdGVy
YXRvcikKICAgICB7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiU2lt
cGxlIGxpbmUgd2l0aCBubyBFT0wuIjsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0
ZWRDaHVua3NbXSA9IHsgIlNpbXBsZSBsaW5lIHdpdGggbm8gRU9MLiIgfTsKLSAgICAgICAgYXV0
byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4o
c2ltcGxlVGV4dCkpOworICAgICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogCiAgICAg
ICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOwogICAgICAgICByZWFkQWxsQ2h1bmtzKCZj
aHVua3MsIHNoYXJlZEJ1ZmZlcik7CkBAIC01MDksNyArNTQ5LDcgQEAgVEVTVF9GKFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyVGVzdCwgY2hhbmdpbmdJdGVyYXRvcikKICAgICB7CiAgICAgICAgIGNv
bnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiTGluZSB0aGF0IGhhcyBhIEVPTFxyXG5hbmQg
dGhlbiBlbmRzIHdpdGggYSBDUlxyIjsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0
ZWRDaHVua3NbXSA9IHsgIkxpbmUgdGhhdCBoYXMgYSBFT0wiLCAiYW5kIHRoZW4gZW5kcyB3aXRo
IGEgQ1JcciIgfTsKLSAgICAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgICAgICBhdXRvIHNoYXJl
ZEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJs
ZW4oc2ltcGxlVGV4dCkpOwogCiAgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOwog
ICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlcik7CkBAIC01MTksNyAr
NTU5LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgY2hhbmdpbmdJdGVy
YXRvcikKICAgICB7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiUmVw
ZWF0ZWQgQ1JzIHNob3VsZCBub3QgY2F1c2UgcHJvYmVtc1xyXHJcclxuU2hvdWxuJ3QgdGhleT8i
OwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rc1tdID0geyAiUmVwZWF0
ZWQgQ1JzIHNob3VsZCBub3QgY2F1c2UgcHJvYmVtc1xyXHIiLCAiU2hvdWxuJ3QgdGhleT8iIH07
Ci0gICAgICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxl
VGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRl
eHQpKTsKIAogICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5rczsKICAgICAgICAgcmVh
ZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIpOwpAQCAtNTI4LDcgKzU2OCw3IEBAIFRF
U1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGNoYW5naW5nSXRlcmF0b3IpCiAgICAg
ewogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIkVPTFxyXG4gYmV0d2Vc
clxuZW4gc2VnbWVudHMiOwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5r
c1tdID0geyAiRU9MIiwgIiBiZXR3ZSIsICJlbiBzZWdtZW50cyIgfTsKLSAgICAgICAgYXV0byBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2lt
cGxlVGV4dCkpOworICAgICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogCiAgICAgICAg
IHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOwogICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVu
a3MsIHNoYXJlZEJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKaW5kZXggOWI4YjEzYTc1ZDUyZmY5NTFlYWQx
ODE4NWQ1NmMzNzkxYjJkN2JlZC4uZDAzNDFhODFkZWRhNzE5ZjM1ZmNjZTM5NDY1NWVjMjU1YWI4
ZmJiNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlclRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXJUZXN0LmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CiAKLXZvaWQgU2hhcmVkQnVmZmVyVGVzdDo6U2V0VXAoKQordm9pZCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyVGVzdDo6U2V0VXAoKQogewogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5U
aHJlYWQoKTsKIApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVw
KCkKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIH0KIAotdm9pZCBTaGFyZWRC
dWZmZXJUZXN0OjpUZWFyRG93bigpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0OjpU
ZWFyRG93bigpCiB7CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBGaWxlUGF0aCk7
CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBFbXB0eUZpbGVQYXRoKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0
LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5o
CmluZGV4IDY0MDExOWJkZTZmY2U0MWYwMWVhYWI2MzE2ODQ3YmU1NmI5MGNmNWMuLmEzOTJhMDUx
OTQ3NTZkMmFkNTZlODI0OTI5ZWNlNGMxNWYzYWQwNTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmgKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaApAQCAtMjksNyArMjks
NyBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlclRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIHB1YmxpYzoKICAgICB2b2lkIFNldFVwKCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NH
LmNwcAppbmRleCBkODQ2YzAyNWUwZGNkOGNhODI5YjcxMjczZGFmMWY3MDdlOWQ5MmRkLi40YTc1
NjdhOTgzMzk0YTc1MzYxYmUxYjRjZDlhOGI0OGI5ZmQ4NzM4IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NH
LmNwcApAQCAtMTAzLDkgKzEwMyw5IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB7IGdsb2Jh
bEJ1ZmZlcklkZW50aWZpZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1CdWZmZXJDYXBh
Y2l0eSB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRP
ZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QgZmluYWwKKyAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlz
dEl0ZW0mKSBjb25zdCBmaW5hbAogICAgIHsKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQppbmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2Mw
OWE2OGNmYjE4ODVkNGViMTEwLi4xMjE0NGZlMTc3NDUwZWNjMWI4YWQ0ODVkYzA1MWQ1MjQ1MzVj
ZDI5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2Ev
U2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
b2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NSw1NiArNDUsNTcgQEAgc3RhdGljIHZvaWQgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKE5TQXJyYXk8TlNEYXRhICo+ICpleHBlY3RlZCwgTlNBcnJheTxO
U0RhdGEgKj4KICAgICB9CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0Rh
dGFBcnJheSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRh
QXJyYXkpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5p
bCwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7CisgICAgICAgIGV4
cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5
KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0
aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3Qg
Y2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAgICAgZXhwZWN0
RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5
KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRh
LmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFs
KEBbIGhlbGxvRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgp
KTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoi
d29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0
YVJlZil3b3JsZERhdGEpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9E
YXRhLCB3b3JsZERhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAg
ICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVp
bGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKLSAgICAgICAgZXhwZWN0
RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShoZWxs
b0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKLSAgICAgICAgZXhwZWN0RGF0YUFy
cmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2Ug
Q0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAg
ICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAg
ICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVO
U0RhdGFBcnJheSgpLmdldCgpKTsKIAotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsg
W05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5T
RGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05T
RGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICB9CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKK1RFU1RfRihGcmFnbWVudGVkU2hh
cmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQpCiB7CiAgICAgQGF1dG9y
ZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogCiAgICAgICAgIE5TRGF0
YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVdOwot
ICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxs
b0RhdGEubGVuZ3RoKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxv
RGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERh
dGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1
ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwogCiAgICAgICAgIE5T
QXJyYXkgKmV4cGVjdGVkRGF0YSA9IEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF07CiAgICAgICAg
IE5TVUludGVnZXIgZXhwZWN0ZWRTaXplID0gaGVsbG9EYXRhLmxlbmd0aCArIHdvcmxkRGF0YS5s
ZW5ndGg7CiAKICAgICAgICAgTlNVSW50ZWdlciBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICBm
b3IgKGF1dG8mIHNlZ21lbnQgOiBidWZmZXIuZ2V0KCkpCisgICAgICAgIGZvciAoYXV0byYgc2Vn
bWVudCA6ICpidWlsZGVyLmdldCgpKQogICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3NlZ21lbnQu
c2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVu
dENvdW50KytdXSk7CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21l
bnRDb3VudCk7CiAKICAgICAgICAgTlNVSW50ZWdlciBwb3NpdGlvbiA9IDA7CiAgICAgICAgIHNl
Z21lbnRDb3VudCA9IDA7Ci0gICAgICAgIHdoaWxlIChidWZmZXItPnNpemUoKSA+IHBvc2l0aW9u
KSB7Ci0gICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1ZmZlci0+Z2V0U29tZURh
dGEocG9zaXRpb24pOworICAgICAgICB3aGlsZSAoYnVpbGRlci5zaXplKCkgPiBwb3NpdGlvbikg
eworICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRhbERhdGEgPSBidWlsZGVyLmdldCgpLT5nZXRT
b21lRGF0YShwb3NpdGlvbik7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbaW5jcmVtZW50YWxE
YXRhLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3Vu
dCsrXV0pOwogICAgICAgICAgICAgcG9zaXRpb24gKz0gaW5jcmVtZW50YWxEYXRhLnNpemUoKTsK
ICAgICAgICAgfQogICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50
Q291bnQpOwogCi0gICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWZmZXItPmdldFNvbWVEYXRhKGV4
cGVjdGVkU2l6ZSAtIDEpOworICAgICAgICBhdXRvIGxhc3RCeXRlID0gYnVpbGRlci5nZXQoKS0+
Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtsYXN0
Qnl0ZS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOltAImQiIGRhdGFVc2luZ0VuY29kaW5n
Ok5TQVNDSUlTdHJpbmdFbmNvZGluZ11dKTsKICAgICAgICAgRVhQRUNUX0VRKDFMVSwgbGFzdEJ5
dGUuc2l6ZSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9U
ZXN0V2ViQ29yZVN0dWJzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3Jl
U3R1YnMuY3BwCmluZGV4IDQ2Yzc2MjAzZTFiMjVhYWFiN2EwMmUwYmIyYmY1ZTBjNDM2ZWQ2ODcu
LjViZTY2NTk0NjEzNzMxZTIxZWQ5N2RhNzRjNTczOGM3Y2EyODViZjQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAK
ICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCi1SZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKQorUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29u
c3QgY2hhciopCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg5
MjM5MmQ4N2Y3NDAwZWJmYTk4ZjVhODY1M2M5ZmQ0ZTI3NTVmNTkuLjcwODBhNmNmN2E2ZDIyMDBh
ZTMwM2MyMmNlNzMxMTkxMGRkYWExZjIgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMjEtMTItMDIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAg
ICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3Vz
IG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eTogcGFydCAzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERlY29kZXJUZXN0L0RlY29kZXJUZXN0
L21haW4ubW06CisgICAgICAgIChtYWluKToKKwogMjAyMS0xMS0yMSAgQ2F0aGllIENoZW4gIDxj
YXRoaWVjaGVuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1BlcmZvcm1hbmNlIHRlc3RdW2Nzcy1j
b250YWluXSBBZGQgY2FzZSB0byB0ZXN0IGNvbnRhaW46IGxheW91dCBpbnNpZGUgYSBjb21wbGV4
IGRvY3VtZW50CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0RlY29kZXJUZXN0L0RlY29k
ZXJUZXN0L21haW4ubW0gYi9QZXJmb3JtYW5jZVRlc3RzL0RlY29kZXJUZXN0L0RlY29kZXJUZXN0
L21haW4ubW0KaW5kZXggZTIzN2Q1ZGMxMGY4MmEyYTQ0MDZhNTQzNTRhNjk4YWUzNWYwMWEyYy4u
YzA3Njg3NmZmOTQ5OWM0Yzc2NTY5ZWVkMjFjNDU2ZjY4NjliOTc3ZSAxMDA2NDQKLS0tIGEvUGVy
Zm9ybWFuY2VUZXN0cy9EZWNvZGVyVGVzdC9EZWNvZGVyVGVzdC9tYWluLm1tCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvRGVjb2RlclRlc3QvRGVjb2RlclRlc3QvbWFpbi5tbQpAQCAtMTE1LDcgKzEx
NSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgICAgICAgICByZXR1
cm4gLTE7CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShmaWxlbmFtZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKCFidWZmZXIpIHsK
ICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ291bGQgbm90IHJlYWQgZmlsZSBhdCBcIiVz
XCJcbiIsIGZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445834</attachid>
            <date>2021-12-03 03:52:14 -0800</date>
            <delta_ts>2021-12-03 04:09:41 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233677-20211203225211.patch</filename>
            <type>text/plain</type>
            <size>804876</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NDU3MTFkMDYzOTg2NGIyMzgzZGM1YmIwMjkxMzQ1NTRhNzZmMmQ4Li4xOTAxZGFlNWY1OGVkZGZi
NjI1NjQxY2VlMDcyMjFlNjUwYjFiODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9u
LWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9BcnJh
eUJ1ZmZlci5oOgorCiAyMDIxLTEyLTAyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0pTQ10gc2hlbGwncyAkLmdsb2JhbE9iamVjdEZvciBpcyBub3Qgc2Fm
ZSBmb3Igbm9uIG9iamVjdCBjZWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDkzZDBjOGQ4ODkwODEwMGIwMjgx
YTA1OTNlYThhNGMxM2FhNTA3NDIuLjA1MjVjNGU3MWRiZWZiZjU2MTg5NzMzYWY5ZmE1NWYwZTc1
OTMzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzA4IEBACisyMDIxLTEyLTAyICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGln
dW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBp
bW11dGFiaWxpdHk6IHBhcnQgMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzNjc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6Omludm9rZUNv
bXBsZXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBi
b2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6
cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzYW5pdGl6ZUluaXREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkNETTo6c3VwcG9ydHNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE06OnNhbml0
aXplUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmg6Cisg
ICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtl
eWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJv
eGVzRnJvbUNlbmMpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFj
dEtleUlEc0NlbmMpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6c2FuaXRp
emVDZW5jKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplV2ViTSk6CisgICAgICAgIChXZWJD
b3JlOjpleHRyYWN0S2V5SURzV2ViTSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJlZ2lz
dHJ5OjpzYW5pdGl6ZUluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhUmVnaXN0
cnk6OmV4dHJhY3RLZXlJRHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5p
dERhdGFSZWdpc3RyeS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJh
dGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmtleUlkc01h
dGNoKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFw
Lmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlzOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2
ZWQpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmg6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRh
IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjpzdGFydFN0cmVhbWluZyk6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVy
OjpzdGFydFN0cmVhbWluZyk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
Lmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpBcHBIaWdobGlnaHQ6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhp
Z2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdo
dFJhbmdlRGF0YTo6dG9TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxp
Z2h0U3RvcmFnZTo6cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KToKKyAgICAgICAgKiBN
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmg6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRGF0YUF2YWlsYWJsZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0
YWRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlG
aW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbCk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlclRpbWVyRmlyZWQp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmg6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpzZW5kU3RyaW5n
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnNl
bmRSYXdEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybUZyYW1lKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyOjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyOjpPbk1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlZ2lz
dGVyQXR0YWNobWVudElkZW50aWZpZXIpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6Cisg
ICAgICAgICogZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmg6CisgICAgICAgICogZWRpdGluZy9X
ZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29y
ZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBlZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRN
TENvbnZlcnRlci5tbToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9XZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3RyaW5n
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUpOgorICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1h
cmt1cFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dFJlYWRlcjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJl
YWRlcjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVh
ZFJURik6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRG
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjphdHRhY2htZW50Rm9yRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJD
b250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcik6CisgICAgICAgICogZWRpdGluZy9ndGsvV2Vi
Q29udGVudFJlYWRlckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVy
OjpyZWFkSW1hZ2UpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5oOgorICAgICAgICAqIGZpbGVh
cGkvTmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU2VuZFF1
ZXVlOjplbnF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTZW5kUXVldWU6OnByb2Nl
c3NNZXNzYWdlcyk6CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmg6CisgICAg
ICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKToKKyAg
ICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpj
ZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKToKKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKToKKyAg
ICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
b2N1bWVudDo6dXBkYXRlRHVyaW5nUGFyc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURv
Y3VtZW50OjpmaW5pc2hlZFBhcnNpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZUltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJl
c3BvbnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmJ1ZmZl
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3Vy
Y2VEYXRhOjpzZXRCdWZmZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6aW50ZXJjZXB0UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29y
a0FnZW50OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2U6OlBl
bmRpbmdJbnRlcmNlcHRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OlBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZTo6cmVzcG9uZCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpo
YW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJj
ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNv
dXJjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5p
c2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbik6CisgICAgICAgICogbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwpOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Mb2Fk
ZXJTdHJhdGVneS5oOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcik6
CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oOgorICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6bG9hZERhdGFVUkwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXI6OmFkZERhdGFPckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6
cmVzb3VyY2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAq
IGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRl
RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlN1YnN0aXR1dGVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpjb250ZW50IGNvbnN0KToKKyAg
ICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpT
dWJzdGl0dXRlUmVzb3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3Rp
dHV0ZVJlc291cmNlOjpTdWJzdGl0dXRlUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UpOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGly
ZWN0b3J5KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjphcmNoaXZlRmFjdG9yeUNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cmNoaXZlRmFjdG9yeTo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
RmFjdG9yeS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgICogbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
aDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TUhUTUxBcmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YSk6CisgICAgICAgICogbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxBcmNoaXZlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6Ok1IVE1MUGFy
c2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRl
QnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRl
ZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBk
YXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlOjpkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFj
azo6ZG9VcGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjp1
cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZp
ZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2
aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNlKToKKyAgICAgICAgKiBwYWdlL0VkaXRv
ckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAoV2ViQ29yZTo6
UGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
cHlQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6
OndyaXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVh
ZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0
cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZv
cm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVy
dGVyOjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVy
dGVyOjphcHBlbmRGcm9tQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0
ZXI6OmRlbGVnYXRlRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50Lmg6
CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNv
bWJpbmVTZWdtZW50c0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnNpemUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNv
cHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9y
RWFjaFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6c3RhcnRzV2l0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpyZWFkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNvcHlUbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5v
dE5lZWRlZFNvb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3IhPSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVpbGRl
cik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpnZXQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Y29weSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1N0
YXRpY1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RhdGljUGFzdGVib2FyZDo6
d3JpdGVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5vd1BsYXlpbmdJbmZvQXJ0d29yazo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0ZpbGVSZWFkZXI6OmRlbXV4V2ViTURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2Nm
L1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50Rmls
dGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
cjo6cmVwbGFjZW1lbnREYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0
ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VElGRlRvUE5HKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleVN0b3JlOjpjb252
ZXJ0VG9KU0tleVN0YXR1c1ZlY3RvciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNUHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OktleUhhbmRsZTo6aWRBc1No
YXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
VXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVV0aWxpdGllczo6cGFyc2VKU09O
T2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0lu
aXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmlzQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJp
dmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxp
Y2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJl
bW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpz
ZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2U6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRhdGEgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6c2V0U2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6SW1hZ2VCYWNraW5nU3RvcmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VE
ZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OnJlc2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6OmRh
dGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJp
dmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKToKKyAgICAgICAgKFdlYkNvcmU6
OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNr
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJh
Y3RLZXlJRHNTa2QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFt
aW5nOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemF0aW9uRGF0YUZvclJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4
cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25Gb3JLZXlJRHMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6a2V5SURzRm9yUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVl
c3RMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzRXF1YWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNl
bnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjbG9zZVNlc3Npb24pOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1v
dmVTZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlk
ZVJlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVj
b2RlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNv
ZGVyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpzZXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjphdHRlbXB0VG9EZWNyeXB0V2l0aElu
c3RhbmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzaGFyZWRCdWZmZXJSZWxlYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
ckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6
c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6c2l6
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6
OnJlYWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdt
ZW50Ojp0YWtlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlcjo6U2VnbWVudDo6Z2V0U2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjphcHBlbmQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyV3JpdGluZ0Ns
aWVudDo6ZW5jb2RlSXRlbU91dE9mTGluZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnJlbGVhc2VDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q3VzdG9tUGxhdGZvcm1EYXRhOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJT
b3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGll
bnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9DRE1Qcm94eUNsZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVU
aHVuZGVyOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVBy
aXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRl
cik6CisgICAgICAgIChXZWJDb3JlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2U6OlBhcnNlZFJlc3Bv
bnNlTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2U6OnBh
eWxvYWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpw
YXlsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmNo
YWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVk
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVy
RU1FVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6SW5pdERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2Fk
SW1hZ2VGcm9tR1Jlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9J
bWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJj
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRp
ZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRp
ZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJl
Y3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJE
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QVZJRkltYWdlUmVhZGVyOjpkZWNvZGVGcmFtZSk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Qk1Q
SW1hZ2VSZWFkZXI6OnJlYWRVaW50MTYpOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFk
ZXI6OnJlYWRVaW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OnNldERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2lu
Z1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3RvcmU6Omlt
YWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRl
ci5oOgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklDT0lt
YWdlRGVjb2Rlcjo6c2V0RGF0YUZvclBOR0RlY29kZXJBdEluZGV4KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpQRUdJbWFnZVJlYWRlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKUEVHMjAwMEltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBOR0ltYWdlUmVhZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
RUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldFQlBJbWFnZURl
Y29kZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9X
RUJQSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRl
bnREYXRhRm9yVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYXRp
b25MaXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbToK
KyAgICAgICAgKC1bV2ViUHJldmlld0NvbnZlcnRlckRlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVj
ZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjp3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0
YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVBhc3RlYm9hcmRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRl
clByaXZhdGVNb2NrOjpmZXRjaERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRj
aERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRh
a2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFS
ZWNlaXZlZCk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJj
ZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
YWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpyZWFkQ2Fj
aGVkRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUNhbGxiYWNrKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZl
QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VI
YW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpoYW5kbGVE
YXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50
OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW06CisgICAgICAgICgt
W1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSBjb25uZWN0aW9u
OmRpZFJlY2VpdmVEYXRhOmxlbmd0aFJlY2VpdmVkOl0pOgorICAgICAgICAqIHBsYXRmb3JtL3Bv
c2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSW1h
Z2VGaWxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxIRHJvcENvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVJbWFnZVRvRGF0YU9iamVj
dCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRCk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZSk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Np
b25EYXRhKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5Lmg6CisgICAgICAgICog
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29u
dGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyLmg6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjplbXB0eSk6CisgICAgICAgICogd29ya2Vy
cy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6U2NyaXB0
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoOjpwcm9jZXNzUmVzcG9uc2UpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRl
ciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbWlsYXIgdG8gU3RyaW5nQnVpbGRlciwgYSBTaGFy
ZWRCdWZmZXIgY2FuIG5vdyBvbmx5IGJlIG1vZGlmaWVkIHRocm91Z2gKKyAgICAgICAgYSBTaGFy
ZWRCdWZmZXJCdWlsZGVyLiBBIFNoYXJlZEJ1ZmZlciBiZWNvbWVzIGltbXV0YWJsZSBvbmNlIGNy
ZWF0ZWQuCisKKyAgICAgICAgRmx5LUJ5OiBQYXNzIFNoYXJlZEJ1ZmZlciB2aWEgY29uc3QgcmVm
ZXJlbmNlcyBvciBwb2ludGVycyB3aGVyZSBpdCdzIGVhc3kKKyAgICAgICAgdG8gZG8gc28uCisg
ICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91cjsgY292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpET01D
YWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpjbGVhbik6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eUNvbnN1bWVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFz
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c0Jsb2IpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZSk6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbW9k
ZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
b2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxF
bGVtZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVu
dDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURh
dGE6OlJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzQnVmZmVyZWREYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
OjpyZXNvdXJjZURhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0
dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmNsZWFyKToKKyAgICAgICAg
KFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAg
ICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVT
aGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJu
YWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRl
ZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGlu
Zyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50Lmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRT
Y3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6
ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hl
ZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVz
b3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRv
Q2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6YXBwZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNOdWxsIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyOjplbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXJCdWlsZGVyOjpnZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVp
bGRlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
Ojp0YWtlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVuc3VyZUJ1
ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6SW5pdERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0
RGF0YTo6cGF5bG9hZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRJQ0NQcm9m
aWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3Iu
bW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhOjpEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25z
ZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VS
ZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEpOgorICAgICAg
ICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcjo6U2NyaXB0QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6dG9T
dHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpjb250YWluc1Np
bmdsZUZpbGVNYXBwZWRTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpidWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVl
c3Q6OldvcmtlckZvbnRMb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250
TG9hZFJlcXVlc3Q6OmlzUGVuZGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJG
b250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0Lmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdCk6
CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKToK
KyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVm
ZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGln
dW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBp
bW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGNhbGxpbmcgU2hhcmVkQnVmZmVyOjpk
YXRhKCkgdGhlIHVuZGVybHlpbmcgZGF0YSB3YXMgZmxhdHRlbmVkLAorICAgICAgICBhbmQgc28g
Y291bGQgYmUgbXV0YXRlZCB3aGlsZSBiZWluZyBzaGFyZWQuIFRoaXMgd2FzIGFuIHVuZGVzaXJh
YmxlCisgICAgICAgIGJlaGF2aW91ci4KKyAgICAgICAgV2UgaW50cm9kdWNlIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIgd2hpY2ggZ3VhcmFudGVlIHRoYXQgaXRzIGNvbnRlbnQgaXMgbWFkZQorICAg
ICAgICBvZiBjb250aWd1b3VzIGRhdGEuCisgICAgICAgIEFsbCBtZXRob2RzIHRoYXQgd291bGQg
aGF2ZSBtdXRhdGVkIGEgU2hhcmVkQnVmZmVyIHdoZW4gYmVpbmcgZmxhdHRlbmVkIGFyZQorICAg
ICAgICBtb3ZlZCB0byBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorCisgICAgICAgIEFyZWEgd2hl
cmUgU2hhcmVkQnVmZmVycyB3ZXJlIGFsd2F5cyBjcmVhdGVkIHdpdGggYSBzaW5nbGUgc2VnbWVu
dCB3aGVyZQorICAgICAgICBjb252ZXJ0ZWQgdG8gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgor
ICAgICAgICBQcmV2aW91c2x5LCBhIFNoYXJlZEJ1ZmZlciB3b3VsZCBoYXZlIGJlZW4gZmxhdHRl
bmVkIG9ubHkgaWYgaXQgbmVlZGVkIHRvIGJlCisgICAgICAgIGFuZCBvbmx5IHdoZW4gdGhlIGRh
dGEgd2FzIGdvaW5nIHRvIGJlIGFjY2Vzc2VkOyBmb2xsb3dpbmcgdGhpcyBjaGFuZ2UKKyAgICAg
ICAgdGhlIGNvbnZlcnNpb24gaXMgbm93IGV4cGxpY3RseSBkb25lIHRocm91Z2ggYSBjYWxsIHRv
IG1ha2VDb250aWd1b3VzLgorICAgICAgICBUaGlzIGNvbnZlcnNpb24gaXMgYSBuby1vcCBpZiB0
aGUgU2hhcmVkQnVmZmVyIGJlaW5nIGNvbnZlcnRlZCB3YXMgYWxyZWFkeQorICAgICAgICBhIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisgICAgICAgIFdpdGggdGhlIG5hdHVyZSBvZiBhIFNoYXJl
ZEJ1ZmZlciBiZWluZyBzaGFyZWQgYnkgcG90ZW50aWFsbHkgbXVsdGlwbGUKKyAgICAgICAgdXNl
cnMgaXQgd2FzIG5lY2Vzc2FyeSB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIGNvbnZlcnNpb25zIGJl
aW5nIHBlcmZvcm1lZAorICAgICAgICBvbiBkZW1hbmQgdG8gYXZvaWQgcmVkdW5kYW5jeS4KKyAg
ICAgICAgV2hlbiB0aGUgZmxhdHRlbmluZyBjb3VsZCBoYXZlIG9jY3VyZWQsIHRoZSBTaGFyZWRC
dWZmZXIgY3JlYXRpb24gcG9pbnRzIHdlcmUKKyAgICAgICAgdHJhY2VkIGJhY2sgYW5kIGlkZW50
aWZpZWQgdG8gbWFrZSB0aGUgYnVmZmVyIGNvbnRpZ3VvdXMgdGhlbi4KKyAgICAgICAgSW4gdGhl
IGVuZCwgdGhlcmUncyBubyBtb3JlIFNoYXJlZEJ1ZmZlciBmbGF0dGVuaW5nIG9wZXJhdGlvbnMg
dGhhbiB0aGVyZQorICAgICAgICB3b3VsZCBoYXZlIGJlZW4gYmVmb3JlIHRoaXMgY2hhbmdlLgor
ICAgICAgICBUaGVyZSdzIGEgcG90ZW50aWFsIGluY3JlYXNlIG9mIHRlbXBvcmFyeSBtZW1vcnkg
dXNhZ2Ugd2l0aCB0aGUKKyAgICAgICAgU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIgY2xhc3M7
IGJ1ZyAyMzM1MTEgaXMgdHJhY2tpbmcgaXQuCisKKyAgICAgICAgV2hpbGUgdGhlIGNoYW5nZSBp
cyBleHRlbnNpdmUsIGNvZGUgY292ZXJhZ2Ugb2YgdGhlIG1vZGlmaWVkIGFyZWFzIGlzIHRob3Jv
dWdoCisgICAgICAgIHdoaWNoIG1ha2VzIHVuZGV0ZWN0ZWQgcmVncmVzc2lvbnMgdW5saWtlbHku
CisKKyAgICAgICAgSW4gYnVnIDIzMzQ0MiwgYSBTaGFyZWRCdWZmZXIgd2lsbCBiZSBtYWRlIGNv
bXBsZXRlbHkgaW1tdXRhYmxlIG9uY2UgY3JlYXRlZC4KKworICAgICAgICBObyBvYnNlcnZhYmxl
IGNoYW5nZS4KKyAgICAgICAgQ292ZXJlZCBieSBhbGwgZXhpc3RpbmcgdGVzdHMuIE5ldyBBUEkg
dGVzdHMgY3JlYXRkZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5p
dGl6ZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9z
L0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJk
SW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hl
L0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxCb2R5U2l6ZSk6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjppc29sYXRlZFJlc3BvbnNlQm9keSk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Y29weVJlc3BvbnNlQm9keSk6CisgICAg
ICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oOgorICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5SURzS2V5aWRzKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplS2V5aWRzKToK
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmtleUlkc01hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
S2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6bmV4dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OnRha2UpOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCk6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayk6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YSk6CisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHQ6OmVuY29kZSBjb25z
dCk6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OnNlcmlhbGl6ZUlEQktleURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJpYWxpemF0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNy
ZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4
aXN0c0luT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldElu
ZGV4UmVjb3JkRm9yT25lS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpnZXRDb3VudCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElm
TmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQpOgorICAgICAgICAqIE1v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVz
L21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVSZXNwb25z
ZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJT
b3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1l
bnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQpOgorICAgICAgICAqIGVkaXRpbmcvY29j
b2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2ht
ZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvclVSTCk6CisgICAgICAgIChm
aWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVu
dFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0
aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RNYXJrdXBBbmRBcmNoaXZl
KToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50
TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgor
ICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGly
ZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNv
bnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxv
YWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodCk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KToKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAg
KiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseSk6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSk6CisgICAgICAgICogbG9hZGVyL2Fy
Y2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0
UGFydCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6c2hlZXRUZXh0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
Rm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9u
dDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6
Y2hlY2tOb3RpZnkpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
Zyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6OnJlc291cmNlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9j
dW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdG
b250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZv
bnREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
VGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZG9VcGRh
dGVCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6RGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21D
RlVSTENhY2hlZFJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6
OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZCk6CisgICAgICAgICogcGFnZS9FZGl0b3JDbGllbnQu
aDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNl
clN0eWxlU2hlZXQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKToKKyAg
ICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEu
aDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tl
eWVkQ29kaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAq
IHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRl
ckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3Vv
dXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpzaXplIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzQ29udGlndW91cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpoYXNP
bmVTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OnV0ZjhCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6RGF0YVNlZ21lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRp
YVNlc3Npb25NYW5hZ2VyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9L
ZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJDRjo6Zmlu
aXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VElGRlRvUE5H
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNl
Y3VyaXR5Q2hlY2spOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29h
Lm1tOgorICAgICAgICAoLVtXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBpbml0V2l0aERhdGFTZWdt
ZW50OnBvc2l0aW9uOnNpemU6XSk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4
dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFj
dEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXll
ZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVy
aWM6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5j
b2RlckdlbmVyaWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2Rpbmcp
OgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnQ6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpNb2RlbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQz
Mik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVUludDE2KToKKyAgICAgICAgKFdlYkNvcmU6Omlz
V09GRik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V09GRlRvU2ZudCk6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpleHRyYWN0U2luZkRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6cGFyc2VKU09OVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMp
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6
YXBwZW5kRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1
bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZv
cm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1h
cHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om1hcmt1cFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OmV4dHJhY3RD
ZW5jSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6SW5p
dERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1
bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRo
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEl0YWxpY3NDb3JyZWN0
aW9uSW5mbzo6Z2V0SXRhbGljQ29ycmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpP
cGVuVHlwZTo6TWF0aEdseXBoSW5mbzo6bWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R2x5cGhBc3NlbWJseTo6Z2V0QXNzZW1ibHlQ
YXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3Ry
dWN0aW9uOjpnZXRTaXplVmFyaWFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aFZhcmlhbnRzOjptYXRoR2x5cGhDb25zdHJ1Y3Rp
b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aENv
bnN0YW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjpt
YXRoR2x5cGhJbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFi
bGU6Om1hdGhWYXJpYW50cyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjp2YWxp
ZGF0ZVRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OmlzVmFs
aWRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVQ
dHIpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVPZmZz
ZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlV2l0aENvdmVyYWdl
OjpnZXRDb3ZlcmFnZUluZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVG
b250KToKKyAgICAgICAgKFdlYkNvcmU6OnJlbmFtZUFuZEFjdGl2YXRlRm9udCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U3Vic3RpdHV0aW9uU3ViVGFibGU6OmNvdmVy
YWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMb29rdXBUYWJsZTo6Z2V0
U3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3Vw
TGlzdDo6bG9va3VwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJl
VGFibGU6OmdldEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpP
cGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmaW5kRmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6TGFuZ1N5c1RhYmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRUYWJsZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OnNjcmlwdCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6ZGVmYXVsdFNjcmlwdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6ZGVmYXVsdExhbmdTeXMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6c2NyaXB0TGlz
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpmZWF0dXJl
TGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpsb29r
dXBMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmRl
ZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6OmZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJs
ZTo6Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6bG9hZEhtdHhUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0
YTo6bG9hZE1ldHJpY3MpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERhdGE6
OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uRGF0YTo6c2V0Q3VzdG9tRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rp
b25EYXRhOjpjdXN0b21EYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFk
SUNDUHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQ
cm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRX
cml0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3Ry
YXRpb25MaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1
ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpmaWxlV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQnVm
ZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6
cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW06CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVBhc3RlYm9hcmRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlciBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAg
KC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpwcm9jZXNzQ29udGVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpj
dXJsRGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKiB0
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnNh
bml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNl
OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFu
Y2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckZldGNoOjpwcm9jZXNzUmVzcG9uc2UpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFn
ZTo6cmV0cmlldmUpOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJGdW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuRnVuYyk6
CisKIDIwMjEtMTItMDMgIEFsaWNpYSBCb3lhIEdhcmPDrWEgIDxhYm95YUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtNU0VdIEZpeCBlcmFzZSByYW5nZSB0byBwcmV2ZW50IGFjY2lkZW50YWwgZGVs
ZXRpb24gaW4gZmlsZXMgd2l0aCBjaGFuZ2luZyBkdXJhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTZlYTFl
NDBiYjRiNzE2MzU3NTE0NDU5ZWJiZmNkMGRjNDg1ZjI4ZS4uNjMyMDkwYjJiY2FmYTcwYmU5OWFl
YTFjMjUxZmY3ZWM1NzI3ZTljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MTcgQEAKKzIwMjEtMTIt
MDIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5n
dWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQg
Z3VhcmFudGVlIGltbXV0YWJpbGl0eTogcGFydCAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OnVu
cmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVtb3ZlU2Vzc2lvbkRh
dGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2Vu
ZE1lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzSW5pdERhdGEp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZSk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y3JlYXRlRGVjb2Rlcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXREYXRhKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0Ojpjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrQmxvYi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Js
b2I6OmNvbnN1bWVEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hy
b25vdXNSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzZW5kQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFz
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVy
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
Q2FjaGU6Om1ha2VFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6
OnN0b3JlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OkVudHJ5KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6aW5pdGlhbGl6ZUJ1ZmZlckZyb21TdG9yYWdlUmVj
b3JkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6YnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRy
eS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVM
b2FkOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9QcmVmZXRjaENhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJlZmV0Y2hDYWNoZTo6
RW50cnk6OkVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6UHJlZmV0Y2hDYWNoZTo6c3RvcmUpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaDoKKyAgICAgICAg
KFdlYktpdDo6UHJlZmV0Y2hDYWNoZTo6RW50cnk6OnJlbGVhc2VCdWZmZXIpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKC1b
V0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURh
dGE6XSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2Vp
dmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNr
Q3VybC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJUEM6
OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVm
ZmVyQ29weSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5oOgorICAgICAgICAqIFNoYXJlZC9BUElXZWJBcmNoaXZlLm1tOgorICAgICAgICAo
QVBJOjpXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKToKKyAgICAgICAgKiBTaGFyZWQvQVBJV2ViQXJj
aGl2ZVJlc291cmNlLm1tOgorICAgICAgICAoQVBJOjpXZWJBcmNoaXZlUmVzb3VyY2U6OldlYkFy
Y2hpdmVSZXNvdXJjZSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpG
b250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZVNoYXJlZEJ1ZmZlcik6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZW5j
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmVuY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpN
ZXNzYWdlPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdERhdGE6OldlYkhpdFRlc3RSZXN1bHREYXRhKToKKyAg
ICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZW5jb2RlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjplbmNs
b3NpbmdJbWFnZURhdGEgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNo
bWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAg
ICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNo
bWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURh
dGEgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVUYXNr
Lm1tOgorICAgICAgICAoLVtXS1VSTFNjaGVtZVRhc2tJbXBsIGRpZFJlY2VpdmVEYXRhOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTCk6CisgICAgICAgIChXZWJL
aXQ6Okljb25EYXRhYmFzZTo6c2V0SWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcDoKKyAgICAgICAgKHdlYmtpdFVS
SVNjaGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L0Ryb3BUYXJnZXRHdGs0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6YWNjZXB0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6
TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNl
bmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQ
cm90b2NvbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JQcm90
b2NvbEhhbmRsZXI6OnBsYXRmb3JtU3RhcnRUYXNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5z
cGVjdG9yL3dpbi9JbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXI6OnBsYXRmb3JtU3Rh
cnRUYXNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlw
Ym9hcmRHdGszLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVhZEJ1ZmZlckFzeW5jRGF0YTo6UmVh
ZEJ1ZmZlckFzeW5jRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkNsaXBib2FyZDo6cmVhZEJ1ZmZl
cik6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVhZEJ1ZmZlckFzeW5jRGF0YTo6UmVhZEJ1ZmZlckFzeW5jRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OkNsaXBib2FyZDo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRQcm9t
aXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9y
SW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c3VwcG9ydHNJbml0RGF0YSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RGF0YSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0
ZUltYWdlRGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRk1h
bmFnZXI6OnNldFVzZUdQVVByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29u
dmVydFRvU2hhcmVkQnVmZmVyQ29weSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UmVjb3JkZXJQcml2YXRlOjpmZXRjaERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oOgorICAgICAg
ICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVx
dWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJj
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2Up
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6YWRkQXJjaGl2ZVJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1
Z2luOjpsaXZlUmVzb3VyY2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2lu
Ojp3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVy
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25zdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjps
b2FkRGF0YUluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkRGF0YUltcGwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmxvYWRBbHRlcm5hdGVIVE1MKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
bG9hZFNpbXVsYXRlZFJlcXVlc3RBbmRSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6cmVzb3Vy
Y2VEYXRhRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZXNvdXJjZURh
dGFGcm9tRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNp
b25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0
dHJpYnV0ZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwOgorICAgICAgICAobG9h
ZFJlc291cmNlSW50b0J1ZmZlcik6CisKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisg
ICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtM
b2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmJ1ZmZlcmluZ1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZl
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6
OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2No
ZW1lVGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3
OjpQbHVnaW5WaWV3KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERp
ZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFt
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZhaWwpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuaDoKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgor
CisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNv
bnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1
MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpzZW5k
UmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmVuY29kZSk6CisgICAg
ICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmRlY29kZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQgY29uc3QpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJUEM6OlNo
YXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVy
Q29weSk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAgICAg
IChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZv
cm0vU2hhcmVkTWVtb3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVh
dGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5o
OgorICAgICAgICAqIFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAgICAgIChB
UEk6OldlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dl
YkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVh
YmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6d3Jh
cEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6Okhh
bmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hh
cmVhYmxlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcDoKKyAgICAgICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKElQQzo6
ZW5jb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQQzo6ZGVjb2RlVHlwZXNBbmREYXRhKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5j
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3Jk
Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6RW50cnk+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVj
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1lbnRD
b2RlcnNHdGsuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2lu
LmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0
Zm9ybURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHA6Cisg
ICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBj
b25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVw
cmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAg
ICAgICAoQVBJOjpnZXREYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0
dGFjaG1lbnRDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBk
YXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc3RvcmVBcHBIaWdo
bGlnaHQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0
YUZvckltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnByb3ZpZGVEYXRhRm9y
UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlz
ZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hl
bWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OndpdGhTZW5k
ZXI6XSk6CisgICAgICAgIChhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdpbik6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2hhcmVFbGVtZW50
V2l0aEltYWdlOnJlY3Q6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1
bmRsZUVkaXRvckNsaWVudC5oOgorICAgICAgICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9y
Q2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIgX3NldEVkaXRpbmdEZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OnJlbGVhc2VTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRl
RmlsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
Q2FjaGVSZXNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFz
dGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50
OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFn
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRE
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbiBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRi
eSBjb25zdCk6CisKIDIwMjEtMTItMDMgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgRGVyaXZlZFNvdXJjZXMvV2ViS2l0MiB0byBEZXJp
dmVkU291cmNlcy9XZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggZDc3NmU4MmRmMTMyY2Fm
NjUyNzkzYTc5YTAwODNhZDY1NTlkYzI2NS4uNDNhMTgwNGQ1MGRmOTI3MzM2ZTNmNWQ1ODNhMTY4
OTNlNDFiYTA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0x
Mi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rp
bmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFu
ZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oOgor
CiAyMDIxLTExLTEyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBN
YWtlIHNvcnQtWGNvZGUtcHJvamVjdC1maWxlIGlkZW1wb3RlbnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwppbmRleCA3NmFhNmFhZjg0ZGViMDgyZTRjODQzMjI0OTMzODBkODMzZGU5MmQxLi40
MjEzYjQ3M2E4ZjQ5MjU3MDI2YmIzNTlhMDg4MDE5NzVmNWIzN2UyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjEtMTItMDIgIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNo
YXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJp
bGl0eTogcGFydCAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzM2NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y3JlYXRlUHJldmlld0xvYWRlckNsaWVudCk6CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbnMpOgorICAgICAgICAoV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24pOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAgICogV2ViVmlldy9XZWJBcmNoaXZlLm1t
OgorICAgICAgICAoLVtXZWJBcmNoaXZlIGluaXRXaXRoRGF0YTpdKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0YV0pOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9sb2Fk
RGF0YTpNSU1FVHlwZTp0ZXh0RW5jb2RpbmdOYW1lOmJhc2VVUkw6dW5yZWFjaGFibGVVUkw6XSk6
CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJl
TWVudUl0ZW0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgt
W1dlYlJlc291cmNlIGluaXRXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIF9p
bml0V2l0aERhdGE6VVJMOk1JTUVUeXBlOnRleHRFbmNvZGluZ05hbWU6ZnJhbWVOYW1lOnJlc3Bv
bnNlOmNvcHlEYXRhOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToK
KworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAg
ICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3Vv
dXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00v
RE9NVUlLaXRFeHRlbnNpb25zLm1tOgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRh
dGFSZXByZXNlbnRhdGlvbjpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06Cisg
ICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
RGF0YVNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAg
ICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxS
ZXByZXNlbnRhdGlvbiBkb2N1bWVudFNvdXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRN
TFZpZXcubW06CisgICAgICAgIChjcmVhdGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlJlc291cmNlLm1tOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29k
ZXI6XSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVz
b3VyY2UgX3N0cmluZ1ZhbHVlXSk6CisKIDIwMjEtMTItMDIgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBIb29rIHVwIG5hdmlnYXRv
ci5ncHUucmVxdWVzdEFkYXB0ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDAy
ZTk0NmJjMWZiMGIzNTZiYjE1YWI4MzYwZTg2MTQ1NTQ3MjQ3Y2MuLmE4NTI4ZjIwYTFlZTI1NDY5
YjNhMmMxMjI3MDdkNDA1YjY2YzYxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1MiBAQAorMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20g
bm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViRnJhbWU6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYkZyYW1lOjps
b2FkUGxhaW5UZXh0U3RyaW5nKToKKyAgICAgICAgKFdlYkZyYW1lOjpsb2FkSFRNTFN0cmluZyk6
CisgICAgICAgICogV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJLaXRETEwuY3BwOgorICAgICAg
ICAobG9hZFJlc291cmNlSW50b0J1ZmZlcik6CisKKzIwMjEtMTItMDEgIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBj
bGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMz
NDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6
OmxvYWREYXRhKToKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20g
bm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRh
cjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBNZW1vcnlTdHJlYW0uY3BwOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpNZW1vcnlT
dHJlYW0pOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAg
ICogTWVtb3J5U3RyZWFtLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChX
ZWJBcmNoaXZlOjpkYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJEYXRhU291cmNlOjpkYXRhKToKKyAg
ICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZTo6Y3JlYXRlSW5z
dGFuY2UpOgorICAgICAgICAqIFdlYlJlc291cmNlLmg6CisKIDIwMjEtMTItMDIgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBNYWtlIFdlYiBMb2NrIEFQ
SSB3b3JrIGFjcm9zcyBtdWx0aXBsZSBXZWJQcm9jZXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IGVhY2NhMmMyMzNhOGE2OTM3MTU5MDgwN2Rm
ZDM2NzViMDYxNTk0MjguLmI0NjkzZjkxYzYwN2Q4ZDA3NDU5NDY0NmU4ZGM0MzcyZTliYzk5ZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMTI5
LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRy
PEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoQXJyYXlCdWZmZXImKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291
cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAKLSAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhD
bGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIuCisgICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFy
cmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkIGFuZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlci4KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFy
cmF5QnVmZmVyPiBjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRy
PEFycmF5QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywg
dW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3Bw
CmluZGV4IDMzNTRiNTJhNTBjYmIxODlmZGZhZWI3ZDgyNDgzYmUwYzQxYzNkNGUuLmRhMzM2ZTZm
NWIxNjk0ZTM3NDc2OTBjNDNkMmI1M2YzNTE4YzA5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJl
YWRlci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVBM
QVRGT1JNKENPQ09BKQogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lkIENs
aXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAppbmRleCAyYjYyNjI4NDE5YjA5Y2JiNjk1
NTIxNWIwZDVkN2Q3M2MwYjM3NDRkLi42ZTIyMDQ4Y2Y1ZmVhOWFhNjJkYWRmNDViMWYzNWM0Y2Uw
ZDdkNmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXIgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgQ2xpcGJvYXJkSW1hZ2VSZWFkZXIo
RG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQpAQCAtNDcsNyArNDcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFs
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihj
b25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAg
ICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IGQw
NzQ2ZGEyZGEyMDllMDIzMjViNWZhMjE0ZGJlZTY0YmY5YzkwNzguLmVmZjEwYjViNjVmZDgxYWQ5
YmEzMmY4MGIzZjJjZjJmOGU5OGYxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0yMTYsOCArMjE2LDggQEAgdm9pZCBDbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlOjppbnZva2VDb21wbGV0aW9uSGFuZGxlcigpCiAgICAgICAg
IGF1dG8mIGRhdGEgPSBpdGVtVHlwZUxvYWRlci0+ZGF0YSgpOwogICAgICAgICBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRhdGEpICYmICEhc3RkOjpnZXQ8U3RyaW5nPihkYXRh
KSkKICAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVTdHJpbmcodHlwZSwgc3RkOjpnZXQ8U3Ry
aW5nPihkYXRhKSk7Ci0gICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
PFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQotICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEo
dHlwZSwgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpLmNvcHlSZWYoKSk7CisgICAg
ICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PihkYXRhKSkKKyAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIHN0
ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZGF0YSkuY29weVJlZigpKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQp
OwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjY1LDkgKzI2NSw5IEBAIHZvaWQgQ2xpcGJvYXJk
SXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXpl
RGF0YUlmTmVlCiB7CiAgICAgaWYgKG1fdHlwZSA9PSAidGV4dC9odG1sIl9zKSB7CiAgICAgICAg
IFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewotICAgICAgICAgICAgYXV0byYgYnVm
ZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Ci0gICAgICAgICAgICBt
YXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKKyAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9
IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKKyAgICAgICAg
ICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBtYXJrdXBU
b1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwogCkBAIC0yNzgsOSArMjc4LDkg
QEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlw
ZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKICAgICB9CiAKICAgICBpZiAobV90eXBlID09ICJp
bWFnZS9wbmciX3MpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5p
dGl6ZTsKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZl
cj4+KG1fZGF0YSkpCi0gICAgICAgICAgICBidWZmZXJUb1Nhbml0aXplID0gc3RkOjpnZXQ8UmVm
PFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkucHRyKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplOworICAgICAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpCisgICAgICAg
ICAgICBidWZmZXJUb1Nhbml0aXplID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PihtX2RhdGEpLnB0cigpOwogICAgICAgICBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSB1dGY4
QnVmZmVyKHN0ZDo6Z2V0PFN0cmluZz4obV9kYXRhKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaAppbmRleCAyY2MyYzhlMWE1NGUxOGQ3MzQ5NWM1MzBj
ZDc3ZDU0Zjk5YTUyOWE3Li4zN2M4MjVlMjM1YThhOGI3ZTQ0ZTQwZmIwYzJkNzcyNDQwN2E3NTg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCkBAIC0z
OCw3ICszOCw3IEBAIGNsYXNzIERPTVByb21pc2U7CiBjbGFzcyBGaWxlUmVhZGVyTG9hZGVyOwog
Y2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZSA6IHB1YmxpYyBDbGlwYm9hcmRJ
dGVtRGF0YVNvdXJjZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Myw3ICs1
Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7CiAK
LSAgICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFy
ZWRCdWZmZXI+PjsKKyAgICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJp
bmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgY2xhc3MgQ2xpcGJvYXJkSXRl
bVR5cGVMb2FkZXIgOiBwdWJsaWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCwgcHVibGljIFJlZkNv
dW50ZWQ8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0
YXRpYyBSZWY8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHR5
cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9h
cmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUy
ODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi4yNzRlMDM4ZDQxODcwMTYxZTRlZWI4MGMxMmFiYmE4
NzFmOWQ0YTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBA
IC0zNCwxMCArMzQsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIp
IHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFu
Y2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAg
ICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRX
aXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9IFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFn
ZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jlc3VsdCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50
LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obnNEYXRhLmJ5dGVz
KSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVUeXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXggYjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkx
MzE3ODY5ZGE3ZTViZi4uMzgyMWIwMzcxODAyODIzZDY5YTgzMGEzMTBkYTM0NzA4ZDYzMzA3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0Ns
aXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMzMsMTAgKzMz
LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRl
cjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAg
IGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMo
W1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBjZ0ltYWdlID0gW2ltYWdl
IENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0pIHsKICAg
ICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRpb24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJl
cCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2VdKTsKICAgICAgICAgICAgIE5TRGF0YSog
bnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFw
SW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCBlNmNjMWFhZTc4M2E1MjA5NGY2NTQ5OWJiOTBkZDdm
MDA3MWQ0MjRjLi5mMDVjMjMzMDdiYzVhMGU1ODJkZGNkODYwZDViYjFhMWIzMDkzMjUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMjg5LDcgKzI4OSw3
IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBz
aXplX3QgcmVjb3JkUG9zaXRpb24gPSB0YXNrSGFuZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVjdGlv
blJlY29yZChyZXF1ZXN0LmdldCgpLCByZXNwb25zZSwgbnVsbHB0cikpOwogCi0gICAgICAgICAg
ICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZN
b3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0
YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRhc2tIYW5kbGVyLT5p
c0RvbmUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTksOSArMjk5LDkg
QEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAg
ICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwor
ICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6
ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5k
bGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRh
dGEpKTsKKyAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShy
ZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0
b3JzKCkuZmV0Y2gpOwogICAgIH0KQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIERPTUNhY2hlOjpw
dXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJl
ZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlm
IChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAg
ICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBib2R5ID0gYnVmZmVy
LT5tYWtlQ29udGlndW91cygpOwogICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCks
IHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lk
PiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2
ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CkBAIC0zNzUsNyArMzc1LDcgQEAg
dm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+
JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVjZWl2
ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5nZXQo
KTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9u
c2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHBl
bmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYg
cmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZl
ZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShy
ZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyks
IHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBpZiAocmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNl
RGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNl
KSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0zODMsOSAr
MzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNo
UmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAg
ICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAg
ICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEo
V1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShkYXRhKSB9KTsKKyAgICAgICAgICAgICAgICB0
aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVz
dCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IGRhdGEudGFrZSgp
LT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAK
aW5kZXggMjU5MTRiNDBiYjIzODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uYzBmODAzMmIw
NDUyYzM3ZWU0Y2FmYmNhZmQ3OWYwOWQyMTQ2MzMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCBSZXNw
b25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQog
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZv
cm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xh
dGVkQ29weSgpOwogICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+
IFJlc3BvbnNlQm9keSB7Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICAgICAg
cmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIFNoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFu
ZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3Qm
KSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3Bv
bnNlQm9keSB7IH07CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETS5jcHAKaW5kZXggMjg1MGRiYTFlM2JmYTExZjQ4OWI0NDQwMzUxM2Q1MWFlMWJl
YWQzYS4uOWQxYmM2NzRmYzgyNmNiNmQxNmQwMjUxMGNmODQwMTBhZGNiZDc3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAtMTM1LDE3ICsx
MzUsMTcgQEAgYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+
c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEp
CiB7CiAgICAgcmV0dXJuIEluaXREYXRhUmVnaXN0cnk6OnNoYXJlZCgpLnNhbml0aXplSW5pdERh
dGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CiB9CiAKLWJvb2wgQ0RNOjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkKK2Jvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAg
ICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEoaW5pdERh
dGFUeXBlLCBpbml0RGF0YSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRp
emVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQorUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiByZXNwb25zZSkKIHsKICAgICBpZiAoIW1fcHJpdmF0ZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0u
aAppbmRleCBkOGE0YjNhZjEyZjFhNzkyM2Q4ODcwNWQ1Yjk1ODFkMzZmMTAyNzBjLi5kN2IxZDUz
ZDA0OTFmNzI3NzliNTk0YjJkODNjMDliODNiY2YyMDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgQ0RNSW5z
dGFuY2U7CiBjbGFzcyBDRE1Qcml2YXRlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNIDogcHVibGljIFJlZkNvdW50ZWQ8Q0RNPiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPENETT4sIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIg
ewogcHVibGljOgpAQCAtNzMsMTAgKzczLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRz
U2Vzc2lvbnMoKSBjb25zdDsKICAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0
b21TdHJpbmcmKSBjb25zdDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
KTsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNs
aWVudC5oCmluZGV4IDIxZTUyZjRiNzE0ZmI5MWY2N2NmYzM5NjEzOWMxNjUyNWJmYjdiOWIuLjQx
MGVkMmZiNjQyNzU2MmNlOWJkOGVkYTRkOTFhODZiYTk4Y2FhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaApAQCAtMzYsMTQgKzM2
LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENETUluc3RhbmNlOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RN
Q2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPENETUNsaWVudD4gewogcHVibGljOgogICAg
IHZpcnR1YWwgfkNETUNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCBjZG1D
bGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNv
bnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJp
bmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4
ZDJlNDBhMzQxYTY3MDc0NDBmMmQ1Ni4uNmY4ODhlMTc4NThkZGE2ZDk0NzFlYzFmNmVmNWQwNjZk
ZjBlNDk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCkBAIC01NCwxMyArNTQsMTMgQEAgbmFtZXNw
YWNlIHsKICAgICBjb25zdCB1aW50MzJfdCBrS2V5SWRzTWF4S2V5SWRTaXplSW5CeXRlcyA9IDUx
MjsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4g
ZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0
S2V5SURzS2V5aWRzKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICAvLyAxLiBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1l
ZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKICAgICBpZiAo
YnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRh
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBq
c29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBh
cnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5
aWRzKGNvbnN0IFNoYXJlZAogICAgIGlmICgha2lkc0FycmF5KQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAg
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwogICAgIGZvciAoYXV0
byYgdmFsdWUgOiAqa2lkc0FycmF5KSB7CiAgICAgICAgIGF1dG8ga2V5SUQgPSB2YWx1ZS0+YXNT
dHJpbmcoKTsKICAgICAgICAgaWYgKCFrZXlJRCkKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlk
cyhjb25zdCBTaGFyZWQKICAgICByZXR1cm4ga2V5SURzOwogfQogCi1zdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitz
dGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyAxLiBGb3JtYXQKICAg
ICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3Ry
eS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKQEAgLTEwNCwxNCArMTA0LDE0IEBAIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
YXV0byBraWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRvJiBi
dWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1ZSgpKQotICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJp
bmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KSk7CisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmlu
ZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKICAg
ICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShraWRzQXJyYXkpKTsKIAogICAgIENT
dHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgo
KSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0
aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdFBz
c2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25h
bDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRl
ckJveD4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDQuIENvbW1vbiBTeXN0
ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2Vu
Y3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1z
eXN0ZW0KQEAgLTE1MSw5ICsxNTEsOSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaQogICAgIHJl
dHVybiBwc3NoQm94ZXM7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURz
OwogCiAgICAgYXV0byBwc3NoQm94ZXMgPSBleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoYnVmZmVy
KTsKICAgICBpZiAoIXBzc2hCb3hlcykKQEAgLTE4NSw3ICsxODUsNyBAQCBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJ
RHNDZW5jKGNvbgogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5p
dGl6ZUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8v
IDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2Vu
Yy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAgLTE5NSw3ICsxOTUsNyBAQCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0
aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplV2ViTShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gQ2hlY2sgaWYgdGhlIGJ1ZmZl
ciBpcyBhIHZhbGlkIFdlYk0gaW5pdERhdGEuCiAgICAgLy8gVGhlIFdlYk0gaW5pdERhdGEgaXMg
dGhlIENvbnRlbnRFbmNLZXlJRCwgc28gc2hvdWxkIGJlIGxlc3MgdGhhbiBrV2ViTU1heENvbnRl
bnRFbmNLZXlJRFNpemUuCkBAIC0yMDUsMTAgKzIwNSwxMCBAQCBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJl
dHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzV2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+PiBleHRyYWN0S2V5SURzV2ViTShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkQnVmZmVyID0gc2FuaXRpemVXZWJNKGJ1ZmZlcik7
CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdl
Yk0oYnVmZmVyKTsKICAgICBpZiAoIXNhbml0aXplZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIApAQCAtMjMzLDcgKzIzMyw3IEBAIEluaXREYXRhUmVnaXN0cnk6OkluaXRE
YXRhUmVnaXN0cnkoKQogCiBJbml0RGF0YVJlZ2lzdHJ5Ojp+SW5pdERhdGFSZWdpc3RyeSgpID0g
ZGVmYXVsdDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRp
emVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVn
aXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBpdGVyID0g
bV90eXBlcy5maW5kKGluaXREYXRhVHlwZSk7CiAgICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQo
KSB8fCAhaXRlci0+dmFsdWUuc2FuaXRpemVJbml0RGF0YSkKQEAgLTI0MSw3ICsyNDEsNyBAQCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYQogICAgIHJldHVybiBpdGVyLT52YWx1ZS5zYW5pdGl6ZUlu
aXREYXRhKGJ1ZmZlcik7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0
cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3R5cGVzLmZpbmQo
aW5pdERhdGFUeXBlKTsKICAgICBpZiAoaXRlciA9PSBtX3R5cGVzLmVuZCgpIHx8ICFpdGVyLT52
YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaAppbmRleCBjZDEzODdhNmJkMDM4
ZmYzNGUyY2ZiNzVmNDQzZGU3ZDk0MDMyMWIwLi43N2Q2MDRiMDhiYjdmN2UzOGJjY2IzNTQ1YjM0
YzhiMTM0MzU1ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaApAQCAtMzgsMTkgKzM4LDE5IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRl
ckJveDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIEluaXREYXRhUmVnaXN0cnkgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBJbml0RGF0YVJlZ2lzdHJ5JiBzaGFyZWQoKTsKICAgICBmcmllbmQgY2xhc3MgTmV2
ZXJEZXN0cm95ZWQ8SW5pdERhdGFSZWdpc3RyeT47CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3Qg
U2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtl
eUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKIAogICAgIHN0cnVjdCBJbml0RGF0YVR5cGVDYWxsYmFja3MgewotICAgICAg
ICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8U2hhcmVk
QnVmZmVyPihjb25zdCBTaGFyZWRCdWZmZXImKT47Ci0gICAgICAgIHVzaW5nIEV4dHJhY3RLZXlJ
RHNDYWxsYmFjayA9IEZ1bmN0aW9uPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+Pj4oY29uc3QgU2hhcmVkQnVmZmVyJik+OworICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXRE
YXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKKyAgICAgICAgdXNpbmcgRXh0cmFjdEtleUlE
c0NhbGxiYWNrID0gRnVuY3Rpb248c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+Pj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKIAogICAgICAg
ICBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgc2FuaXRpemVJbml0RGF0YTsKICAgICAgICAgRXh0
cmFjdEtleUlEc0NhbGxiYWNrIGV4dHJhY3RLZXlJRHM7CkBAIC02MSw5ICs2MSw5IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYga2V5aWRzTmFtZSgpOwogICAgIHN0YXRp
YyBjb25zdCBBdG9tU3RyaW5nJiB3ZWJtTmFtZSgpOwogCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFk
ZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwot
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJh
Y3RLZXlJRHNDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVt
U3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogcHJp
dmF0ZToKICAgICBJbml0RGF0YVJlZ2lzdHJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggOGJm
YjFjZTcwMWEyZjVhNjliNWI1MTk5MWFhODYzMmViYjg5MjVmOS4uMTQ3NzZjMjAxNTFiZmVmZTM4
MDc5YTMzNzMwYzg4NjYyNjhiYTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtMTc2LDcgKzE3
Niw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgcXVldWVUYXNrS2VlcGluZ09iamVj
dEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgaW5pdERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0
YS5kYXRhKCksIGluaXREYXRhLmxlbmd0aCgpKSwgaW5pdERhdGFUeXBlLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFi
bGUgewogICAgICAgICAvLyAxMC4xLiBJZiB0aGUgaW5pdCBkYXRhIGlzIG5vdCB2YWxpZCBmb3Ig
aW5pdERhdGFUeXBlLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJy
b3IuCiAgICAgICAgIC8vIDEwLjIuIExldCBzYW5pdGl6ZWQgaW5pdCBkYXRhIGJlIGEgdmFsaWRh
dGVkIGFuZCBzYW5pdGl6ZWQgdmVyc2lvbiBvZiBpbml0IGRhdGEuCi0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNhbml0aXplZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRp
emVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKKyAgICAgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+
c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKIAogICAgICAgICAvLyAx
MC4zLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEg
bmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIGlmICghc2FuaXRpemVkSW5pdERhdGEp
IHsKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1
ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgICAgICAg
ICAgbV9sYXRlc3REZWNyeXB0VGltZSA9IDA7CiAgICAgICAgIH0KIAotICAgICAgICBtX2luc3Rh
bmNlU2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UobV9zZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBz
YW5pdGl6ZWRJbml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBbdGhpcywgd2Vha1RoaXMsIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0g
KFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJv
b2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFs
dWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlcXVl
c3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUsIGluaXREYXRhVHlwZSwgc2FuaXRpemVkSW5pdERhdGEu
cmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVk
c0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNj
ZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6
dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+
JgogICAgIC8vIDYuIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgogICAgIHF1
ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywg
W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlc3BvbnNlID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5sZW5ndGgoKSksIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkg
bXV0YWJsZSB7CiAgICAgICAgIC8vIDYuMS4gTGV0IHNhbml0aXplZCByZXNwb25zZSBiZSBhIHZh
bGlkYXRlZCBhbmQvb3Igc2FuaXRpemVkIHZlcnNpb24gb2YgcmVzcG9uc2UgY29weS4KLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkUmVzcG9uc2UgPSBtX2ltcGxlbWVudGF0
aW9uLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3BvbnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+c2Fu
aXRpemVSZXNwb25zZShyZXNwb25zZSk7CiAKICAgICAgICAgLy8gNi4yLiBJZiB0aGUgcHJlY2Vk
aW5nIHN0ZXAgZmFpbGVkLCBvciBpZiBzYW5pdGl6ZWQgcmVzcG9uc2UgaXMgZW1wdHksIHJlamVj
dCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFz
YW5pdGl6ZWRSZXNwb25zZSB8fCBzYW5pdGl6ZWRSZXNwb25zZS0+aXNFbXB0eSgpKSB7CkBAIC02
MDEsNyArNjAxLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIC8vIDQuMy4gTGV0IG1lc3NhZ2UgdHlwZSBiZSBu
dWxsLgogCiAgICAgICAgIC8vIDQuNC4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93
aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEo
bV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5z
dGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxT
aGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVl
IHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZW1vdmVT
ZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgW3RoaXMsIHdlYWtUaGlzLCBw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmll
cildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtleXMsIHN0ZDo6b3B0
aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNl
U2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNjQ5LDcgKzY0OSw3
IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlKQogICAgIC8vIDUuIFJldHVybiBwcm9taXNlLgogfQogCi12b2lkIE1lZGlhS2V5U2Vz
c2lvbjo6ZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgY29u
c3QgU2hhcmVkQnVmZmVyJiBtZXNzYWdlKQordm9pZCBNZWRpYUtleVNlc3Npb246OmVucXVldWVN
ZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIG1lc3NhZ2UpCiB7CiAgICAgLy8gNi40LjEgUXVldWUgYSAibWVzc2FnZSIg
RXZlbnQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNxdWV1
ZS1tZXNzYWdlCkBAIC03MTYsNyArNzE2LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0
ZUtleVN0YXR1c2VzKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYgaW4KICAg
ICAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZShDRE1NZXNz
YWdlVHlwZSBtZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBN
ZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewogICAgIGVucXVldWVNZXNz
YWdlKG1lc3NhZ2VUeXBlLCBtZXNzYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDNkOTZmODgw
MmU3NDc4NDFjNGVmZGE4MWRjYjk0MWVhNmU0YTc1ZTQuLjM2NWFjZTVjMDk1ZTdkYzBjNTcxZTc2
Y2NmMmMwN2FhZmM2MmJhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtNTcsNyArNTcsNyBAQCBjbGFz
cyBDRE07CiBjbGFzcyBEZWZlcnJlZFByb21pc2U7CiBjbGFzcyBNZWRpYUtleVN0YXR1c01hcDsK
IGNsYXNzIE1lZGlhS2V5czsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21p
c2VQcm94eTsKIApAQCAtODcsMjAgKzg3LDIwIEBAIHB1YmxpYzoKICAgICB1c2luZyBDbG9zZWRQ
cm9taXNlID0gRE9NUHJvbWlzZVByb3h5PElETFVuZGVmaW5lZD47CiAgICAgQ2xvc2VkUHJvbWlz
ZSYgY2xvc2VkKCkgeyByZXR1cm4gbV9jbG9zZWRQcm9taXNlLmdldCgpOyB9CiAKLSAgICBjb25z
dCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+JiBz
dGF0dXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8
c3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiYg
c3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1c2VzOyB9CiAKICAgICB1bnNpZ25lZCBp
bnRlcm5hbEluc3RhbmNlU2Vzc2lvbk9iamVjdFJlZkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9p
bnN0YW5jZVNlc3Npb24tPnJlZkNvdW50KCk7IH0KIAogcHJpdmF0ZToKICAgICBNZWRpYUtleVNl
c3Npb24oRG9jdW1lbnQmLCBXZWFrUHRyPE1lZGlhS2V5cz4mJiwgTWVkaWFLZXlTZXNzaW9uVHlw
ZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0
YW5jZVNlc3Npb24+JiYpOwotICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdl
VHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShNZWRp
YUtleU1lc3NhZ2VUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9p
ZCB1cGRhdGVFeHBpcmF0aW9uKGRvdWJsZSk7CiAgICAgdm9pZCBzZXNzaW9uQ2xvc2VkKCk7CiAg
ICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKIAogICAgIC8vIENE
TUluc3RhbmNlU2Vzc2lvbkNsaWVudAogICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoQ0RNSW5z
dGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3ImJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdl
KSBmaW5hbDsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKICAgICB2b2lkIHNlc3Npb25JZENo
YW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxh
eUlEKCkgZmluYWw7CiAKQEAgLTE0MCwxMCArMTQwLDEwIEBAIHByaXZhdGU6CiAgICAgTWVkaWFL
ZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25UeXBlOwogICAgIFJlZjxDRE0+IG1faW1wbGVtZW50YXRp
b247CiAgICAgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4gbV9pbnN0YW5jZVNlc3Npb247Ci0gICAg
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBtX3JlY29yZE9mS2V5VXNhZ2U7CisgICAgVmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9yZWNvcmRPZktleVVzYWdlOwogICAgIGRv
dWJsZSBtX2ZpcnN0RGVjcnlwdFRpbWUgeyAwIH07CiAgICAgZG91YmxlIG1fbGF0ZXN0RGVjcnlw
dFRpbWUgeyAwIH07Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVk
aWFLZXlTdGF0dXM+PiBtX3N0YXR1c2VzOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+IG1fc3RhdHVzZXM7CiAKICAgICB1
c2luZyBEaXNwbGF5Q2hhbmdlZE9ic2VydmVyID0gT2JzZXJ2ZXI8dm9pZChQbGF0Zm9ybURpc3Bs
YXlJRCk+OwogICAgIERpc3BsYXlDaGFuZ2VkT2JzZXJ2ZXIgbV9kaXNwbGF5Q2hhbmdlZE9ic2Vy
dmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3M2Y3NGU0ZjcwZmM5MmMyMmJmODU5YzAy
MjhhMzRlYWVjNTc5N2EzLi4zOThlOGFiMWI2NTZiNDQ1OTI3YmViNmJjNjkzZGQzOTlhNjg3YWM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNTYsMTIgKzU2LDEyIEBAIHVuc2lnbmVkIGxv
bmcgTWVkaWFLZXlTdGF0dXNNYXA6OnNpemUoKQogICAgIHJldHVybiBtX3Nlc3Npb24tPnN0YXR1
c2VzKCkuc2l6ZSgpOwogfQogCi1zdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRC
dWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKK3N0YXRpYyBib29sIGtleUlkc01hdGNo
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikK
IHsKICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0
aCAhPSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFzdGQ6
Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CisgICAgcmV0dXJuICFzdGQ6Om1l
bWNtcChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CiB9CiAK
IGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJTb3VyY2UmIGtleUlkKQpA
QCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJj
ZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3RhdHVzZXNbbV9pbmRleCsrXTsK
LSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+ZGF0YSgp
LCBwYWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHBhaXIuZmlyc3QtPnNp
emUoKSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBl
LCBNZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+KFdURk1vdmUoYnVmZmVyKSks
IHBhaXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaAppbmRleCBjMjExMTEzYTJjNmRh
Yzc5NzkyNGE5OWQyZDJkZjk3YzJlNjVmODUwLi42MGQ2MmFhZmY4MDc0ZGFkYTZlMzFhM2YyYjM3
MGE2ZDZkMDFmNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCkBAIC0zOCw3ICszOCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhS2V5U2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1lZGlhS2V5U3Rh
dHVzTWFwIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFLZXlTdGF0dXNNYXA+IHsKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlz
LmNwcAppbmRleCA4M2IyNGFjZWFhNWIxMjk0YmI0ZWE0MzlmYjJkNWM0ZjZjY2Q0NzUzLi4zNjdm
MzFkMTg2YjUxNjM5YTljNzQyMTNmMGNmOGU2ZjJmOGQyNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCkBAIC0xNzcsNyAr
MTc3LDcgQEAgYm9vbCBNZWRpYUtleXM6Omhhc09wZW5TZXNzaW9ucygpIGNvbnN0CiAgICAgICAg
IH0pOwogfQogCi12b2lkIE1lZGlhS2V5czo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFS
ZWNlaXZlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBp
bml0RGF0YSkKK3ZvaWQgTWVkaWFLZXlzOjp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJl
Y2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBmb3IgKGF1dG8mIGNkbUNsaWVudCA6IG1fY2RtQ2xp
ZW50cykKICAgICAgICAgY2RtQ2xpZW50LmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRp
b25EYXRhUmVjZWl2ZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0YS5jb3B5UmVmKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5kZXgg
N2I1OWEzYmM2ZDIyNTZmYzY1NmYwOGNiZjI2ODkxODUxMDk4M2EyMi4uOTFhMWEwNzExNDMzYmUy
NDdkZDJhODVjNWY0YWQwOTM4YTA5YTdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCkBAIC04Niw3ICs4Niw3IEBAIHByb3RlY3Rl
ZDoKICAgICBNZWRpYUtleXMoRG9jdW1lbnQmLCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmll
ciwgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkLCBjb25zdCBWZWN0b3I8TWVkaWFLZXlTZXNz
aW9uVHlwZT4mLCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2U+JiYpOwogCiAgICAgLy8gQ0RN
SW5zdGFuY2VDbGllbnQKLSAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVj
ZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9p
ZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dn
ZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCAy
ZmRjNGMwMDIxZjZlMWZkZWM0NWY4ZmFmNjA5MDZjMmJmODJlM2IxLi4wMDM5MzAyZjdkYzE2ZmZl
Y2ZjNDY1YzdkOGRhMjUyZjk4ZGFmNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1
bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVy
LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgaWYgKGF1dG8gc2hhcmVk
QnVmZmVyID0gZm9ybURhdGFCb2R5KCkuYXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAgICBtX2Nv
bnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlw
ZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOworICAgICAg
ICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250
ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVk
QnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2Fk
IHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4KQEAgLTI3Miw3ICsyNzIsNyBAQCBSZWZQdHI8
Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoKSBjb25zdAogICAgIGlmIChpc0Zv
cm1EYXRhKCkpCiAgICAgICAgIHJldHVybiAmY29uc3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRh
Qm9keSgpKTsKICAgICBpZiAoYXV0byogZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpKQotICAgICAg
ICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Cisg
ICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMjg0LDcgKzI4NCw3IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZl
dGNoQm9keTo6dGFrZSgpCiAgICAgICAgIGF1dG8gYnVmZmVyID0gbV9jb25zdW1lci50YWtlRGF0
YSgpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIHJldHVybiBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgfQogCiAgICAgaWYgKGlzQmxvYigpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
CmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1ODc2NzVmMDlkOGI3OWZmNjJiM2IuLjIyMTNkNjIz
MDNlZmUyYTFmNzI5ODI2MGY1ODg2MGI3NzZmYjI2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNDIsNyArMjQyLDcg
QEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6Y2xl
YW4oKQogewotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICBtX2J1ZmZlci5yZXNldCgpOwog
ICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAgICBpZiAobV9zaW5rKSB7CiAgICAgICAgIG1f
c2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjY2LDE2ICsyNjYsMTggQEAgdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0
IFN0cmluZyYgY28KIHsKICAgICBpZiAoc3RyZWFtKSB7CiAgICAgICAgIEFTU0VSVCghbV9zaW5r
KTsKLSAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNy
ZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CisgICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpj
cmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVp
bGRlcigpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8q
IGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBw
ZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlw
ZSwgY29udGVudFR5cGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YS50YWtlKCktPm1h
a2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShX
VEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgICAgIG1fc2luay0+
cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsKQEAgLTMwNiw3ICszMDgsNyBAQCB2
b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJv
ZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtl
RGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250
ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBh
Y2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6
IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURh
dGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwcm9taXNlLT5yZWpl
Y3QoVHlwZUVycm9yKTsKQEAgLTMyNCwxNiArMzI2LDIwIEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplKQogICAgICAgICBt
X3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyKSB7Ci0gICAgICAgIG1fYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZlci5h
cHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNv
bnN1bWVyOjp0YWtlRGF0YSgpCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9i
dWZmZXIpOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1v
dmUoZGF0YSkpOworfQorCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKCkKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgpOwogfQogCiBSZWZQdHI8SlND
OjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKQEAg
LTM0MSw5ICszNDcsNyBAQCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1
cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKIAotICAgIGF1dG8gYXJyYXlC
dWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1ZmZlciA9
IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVyOworICAgIHJldHVybiBtX2J1ZmZlci50
YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRjaEJvZHlD
b25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAt
MzUxLDkgKzM1NSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIpCiAgICAg
ICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRvIGJ1ZmZl
ciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1dG8gZGF0YSA9IGJ1
ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIFdU
Rk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29u
dGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBlKTsKIH0K
IAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4ICszNjQs
OCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9i
dWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRS
ZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+
c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIgPSBtX2J1
ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzg1LDggQEAgdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNvbnN1bWVy
OjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAgbV9zb3Vy
Y2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAgIG1fc291
cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAgICAgICAg
bV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAgICAgIG1f
c291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7
CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdGYWlsZWQoY29uc3QgRXhjZXB0
aW9uJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmgKaW5kZXggMmIwNTZmMTI2NDNiYTk2N2ZlNDFhMDE1MTNhODliNzM2MjY0
MmQ0Yy4uODcxZDJjMDg2MzMxYTk4Mjk0YTE2NmE0YjQyZTMxODRlMDM3NzcyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtNTAs
MTAgKzUwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVm
ZmVyOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
KSB7IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsgfQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQor
ICAgIHZvaWQgc2V0RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtl
QXNBcnJheUJ1ZmZlcigpOwogICAgIFN0cmluZyB0YWtlQXNUZXh0KCk7CiAKQEAgLTgyLDcgKzgy
LDcgQEAgcHJpdmF0ZToKIAogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRU
eXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgbV9idWZmZXI7CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9jb25zdW1l
UHJvbWlzZTsKICAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IG1f
c2luazsKICAgICBSZWZQdHI8RmV0Y2hCb2R5U291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggZmM1NWNjN2Q4M2Q4YmMx
MWYwODU0ZGMzY2ZkODUwOTdhMzFmMTBmNi4uMDNmODliNjFjYTVmN2M3MTc2YjlkODhjZDEzNjYw
ZTg2YjdhMjU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdG9wKCkKICAgICAg
ICAgbV9sb2FkZXItPmNhbmNlbCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaExv
YWRlcjo6c3RhcnRTdHJlYW1pbmcoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZl
dGNoTG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiB7CiAgICAgQVNTRVJUKG1fY29uc3VtZXIpOwog
ICAgIGF1dG8gZmlyc3RDaHVuayA9IG1fY29uc3VtZXItPnRha2VEYXRhKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKaW5kZXggMmY5MGYwZWMzZmY5MDVhMjYy
MzFjODRjNzJhN2ExODZjZDRiZmU4My4uNDYxMmQwZTBlM2E3ZWZlMzA2MDM5NmIwZDc1YTJmYTNi
YzRlZGRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApA
QCAtMzksMTQgKzM5LDE0IEBAIGNsYXNzIEZldGNoQm9keUNvbnN1bWVyOwogY2xhc3MgRmV0Y2hM
b2FkZXJDbGllbnQ7CiBjbGFzcyBGZXRjaFJlcXVlc3Q7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIAogY2xhc3MgRmV0Y2hMb2FkZXIgZmluYWwgOiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNs
aWVudCB7CiBwdWJsaWM6CiAgICAgRmV0Y2hMb2FkZXIoRmV0Y2hMb2FkZXJDbGllbnQmLCBGZXRj
aEJvZHlDb25zdW1lciopOwogICAgIFdFQkNPUkVfRVhQT1JUIH5GZXRjaExvYWRlcigpOwogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKKyAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKIAogICAgIHZvaWQgc3RhcnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEZldGNoUmVxdWVzdCYsIGNvbnN0IFN0cmlu
ZyYpOwogICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEJsb2Im
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmlu
ZGV4IDRkZjg0MjZjNzE4YmExNmVjZjBhNDdlNzNlOTAwZDNmODQ4ZjY0ZjIuLmUzOGE4M2FkZTdk
NmUwYWFmNzBjZWI5YzVhYThmZThhYjQ5NDNkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtNDAwLDcgKzQwMCw4IEBAIHZvaWQgRmV0
Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlD
aHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNw
YW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OworICAgIGF1dG8gY29udGln
dW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgU3BhbiBjaHVuayB7IGNv
bnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0
YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAgLTUwMyw3ICs1MDQsNyBAQCB2b2lkIEZldGNoUmVz
cG9uc2U6OmZlZWRTdHJlYW0oKQogICAgIGNsb3NlU3RyZWFtKCk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKK1Jl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpz
dGFydFN0cmVhbWluZygpCiB7CiAgICAgQVNTRVJUKG1fbG9hZGVyKTsKICAgICByZXR1cm4gbV9s
b2FkZXItPnN0YXJ0U3RyZWFtaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEzOGQzYzNmNmUyZmRiNjY3NWU4YTRkMTM2NWJm
NWE1YmIuLmNmNzg2MzIzOWZkOTQ2ZWUwZThkODhlYWVhNzJmZTk4OWVlZDMxNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0xMzQsNyArMTM0
LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIGNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1l
RGF0YUJ5Q2h1bmtDYWxsYmFjayYmKTsKIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
dGFydFN0cmVhbWluZygpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
c3RhcnRTdHJlYW1pbmcoKTsKICAgICAgICAgTm90aWZpY2F0aW9uQ2FsbGJhY2sgdGFrZU5vdGlm
aWNhdGlvbkNhbGxiYWNrKCkgeyByZXR1cm4gV1RGTW92ZShtX3Jlc3BvbnNlQ2FsbGJhY2spOyB9
CiAgICAgICAgIENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrIHRha2VDb25zdW1lRGF0YUNhbGxi
YWNrKCkgeyByZXR1cm4gV1RGTW92ZShtX2NvbnN1bWVEYXRhQ2FsbGJhY2spOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKaW5kZXggZGQx
OWM4NzBhYTdkMjQ4NWY3ZTljYTg0OTJhODQyMTM1MmRkZDA0MS4uMWE2NmJmODE4MzIwZTk1NjA3
ZDYxNWYxYTA4MmE4Mjc2ZWIyYTM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTM4LDcgKzM4LDcgQEAgZW51bSBjbGFzcyBDcmVh
dGVOZXdHcm91cEZvckhpZ2hsaWdodCA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIEhp
Z2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgOiBib29sIHsgTm8sIFllcyB9OwogCiBzdHJ1
Y3QgQXBwSGlnaGxpZ2h0IHsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBoaWdobGln
aHQ7CisgICAgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGhpZ2hsaWdodDsK
ICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGV4dDsKICAgICBDcmVhdGVOZXdHcm91cEZvckhp
Z2hsaWdodCBpc05ld0dyb3VwOwogICAgIEhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHAg
cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDsKQEAgLTUyLDcgKzUyLDcgQEAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4oaGlnaGxpZ2h0LT5zaXpl
KCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hsaWdodC0+ZGF0YSgp
LCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEoaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgp
LCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKaW5kZXgg
ZTJkOWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJkMDRhNDU3NmMwNi4uNWU4MGYwYzA3MmQ0OWEz
ZWY3OTY5NTkzMDJjNDQ1NmNkMmFiZGU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCkBAIC00NCwx
NSArNDQsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdGV4cHIgdWludDY0X3QgaGln
aGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1
cmUgIChBKXBwbGUoQVApcGxpY2F0aW9uKEgpaWdobGlnaHRzKDIwMjEpCiAKLXN0ZDo6b3B0aW9u
YWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIo
KTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICBhdXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3Rk
OjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBk
YXRhOwogICAgIHJldHVybiBkYXRhOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBBcHBIaWdobGln
aHRSYW5nZURhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsK
ICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGVuY29kZXI7CiAgICAgZW5jb2RlciA8PCAq
dGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFJhbmdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhLmgKaW5kZXggY2Y2MzgxYWNmYjBhNTIxMWI0MzUwOGI3YjUxN2Q2
ZGIyZjZmYzc0My4uYjVkYWY2MDI1Mzk4YTNmN2U2ZjFkMzdhYmVjZTg0NGQ0ZjFjNjU0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEFwcEhpZ2hsaWdodFJhbmdlRGF0YSB7
CiBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGNyZWF0ZShjb25zdCBT
aGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxB
cHBIaWdobGlnaHRSYW5nZURhdGE+IGNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CiAgICAgc3RydWN0IE5vZGVQYXRoQ29tcG9uZW50IHsKICAgICAgICAgU3RyaW5nIGlkZW50
aWZpZXI7CiAgICAgICAgIFN0cmluZyBub2RlTmFtZTsKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFw
cEhpZ2hsaWdodFJhbmdlRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
aWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKaW5kZXggZGMzOWEwZjBkMThmZmZjYTdkZmI0NjUy
MTljZDYxMmE5ZjczOGY4Zi4uZTVkZTg0OTRmMzUwNDUzNTk0YjJmMmU4OGMzZGRhMzNmYTlhZjcw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0U3RvcmFnZS5jcHAKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIEFwcEhpZ2hsaWdo
dFN0b3JhZ2U6OnN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTdGF0aWNSYW5nZT4mJiByYW5nZSkKICAg
ICBtX2RvY3VtZW50LT5wYWdlKCktPmNocm9tZSgpLnN0b3JlQXBwSGlnaGxpZ2h0KFdURk1vdmUo
aGlnaGxpZ2h0KSk7CiB9CiAKLXZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZUFuZFNj
cm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBTY3JvbGxUb0hp
Z2hsaWdodCBzY3JvbGwpCit2b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVBbmRTY3Jv
bGxUb0FwcEhpZ2hsaWdodChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIFNj
cm9sbFRvSGlnaGxpZ2h0IHNjcm9sbCkKIHsKICAgICBhdXRvIGFwcEhpZ2hsaWdodFJhbmdlRGF0
YSA9IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGJ1ZmZlcik7CiAgICAgaWYgKCFhcHBI
aWdobGlnaHRSYW5nZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKaW5kZXggYjE1MmY3NmVkNDI0MDg5MmVhN2Rl
MjFlMmNiMDZkNDcyZDg3MzM2MC4uZTI3NjYzM2I0ODRmODEwOTRhZGVjZTQ1ZjY0YWJiZWQxNzgx
MjUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFN0b3JhZ2UuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdGF0aWNS
YW5nZTsKIGNsYXNzIEhpZ2hsaWdodDsKIApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAg
fkFwcEhpZ2hsaWdodFN0b3JhZ2UoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcmVB
cHBIaWdobGlnaHQoUmVmPFN0YXRpY1JhbmdlPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVmZmVyPiYmLCBTY3Jv
bGxUb0hpZ2hsaWdodCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlQW5kU2Nyb2xs
VG9BcHBIaWdobGlnaHQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFNjcm9sbFRvSGln
aGxpZ2h0KTsKICAgICB2b2lkIHJlc3RvcmVVbnJlc3RvcmVkQXBwSGlnaGxpZ2h0cygpOwogICAg
IE1vbm90b25pY1RpbWUgbGFzdFJhbmdlU2VhcmNoVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlt
ZUF0TGFzdFJhbmdlU2VhcmNoOyB9CiAgICAgdm9pZCByZXNldExhc3RSYW5nZVNlYXJjaFRpbWUo
KSB7IG1fdGltZUF0TGFzdFJhbmdlU2VhcmNoID0gTW9ub3RvbmljVGltZTo6bm93KCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3NDM1NmIzNWEx
NjgwMzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVj
ODc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2ODYs
NyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleChJREJPYmpl
Y3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5z
YWN0aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8u
a2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChp
bmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0
dGVtcHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0
cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBh
dGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBr
ZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlm
ICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIpOwog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFs
aXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSJf
cyB9OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpjcmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4g
aW5kZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBh
dGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJL
ZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0
YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJfcyB9
OwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1
bmNoZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8mIGluZm8KIHsKICAgICBo
YXNSZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlC
dWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtl
eSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZv
ciBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChp
bnQ2NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURC
QmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAlcyIsIGtleVZhbHVl
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVm
ZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkg
dG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9y
ZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKKyAgICBhdXRv
IHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYgKCF2
YWx1ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhl
IHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBz
dG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5p
blByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0
dGVtcHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1w
cm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBm
b3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3Ig
ZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0gSURC
VHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0aW9u
KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJh
c2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiX3Mg
fTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNv
cmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CiAg
ICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3Jl
Iik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBz
ZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAg
LTIxMjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVj
b3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgYXV0byBrZXkg
PSBrZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkg
PSBJREJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3Vw
IHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJs
ZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjEz
Myw3ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBrZXkgPSBrZXlSYW5n
ZS51cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlE
YXRhOjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsyNDQz
LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJl
Y29yZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgp
ICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYga2V5LnR5cGUoKSAh
PSBJbmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNv
cmQiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIl9zIH07CkBAIC0y
NTA4LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291
bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQg
PSAwOwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpID8gSURC
S2V5RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKKyAgICBh
dXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CiAgICAgaWYg
KCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUg
bG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29r
dXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAogICAgIGF1dG8gdXBw
ZXJLZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1heGltdW0oKSA6
IHJhbmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29r
dXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5h
YmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBv
cGVyYXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5NjIz
YmQ4ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5Y2ZlZGZlOWYyZWE2
NWE2ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBi
b29sIFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0YXRlbWVudC0+Ymlu
ZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2Vy
IGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wg
U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3Nh
cnkoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50
LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykg
ewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBz
dGF0ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCmluZGV4
IDBhNDY5YmQwYmQxZjM4ZGNiOTZiMzlkOGMzMDAwYWY3M2QxMmFiNTkuLmM5ZDZkYTZiZGQ5Zjkz
OTUwMWY0ZjQyMzJiNGM3ODM3ZDg0MGRhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKQEAgLTE5Niw3ICsxOTYs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVJlY29yZGVyOjpzdGFydFJlY29yZGluZyhzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiB0aW1lU2xpYwogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRp
YyBpbmxpbmUgUmVmPEJsb2JFdmVudD4gY3JlYXRlRGF0YUF2YWlsYWJsZUV2ZW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUgdGltZUNvZGUpCitzdGF0aWMgaW5saW5lIFJl
ZjxCbG9iRXZlbnQ+IGNyZWF0ZURhdGFBdmFpbGFibGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkKIHsKICAgICBhdXRvIGJsb2Ig
PSBidWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCBt
aW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoY29udGV4dCk7CiAgICAgcmV0dXJuIEJsb2JFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEJsb2JFdmVudDo6SW5pdCB7
IHsgZmFsc2UsIGZhbHNlLCBmYWxzZSB9LCBXVEZNb3ZlKGJsb2IpLCB0aW1lQ29kZSB9LCBCbG9i
RXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCmluZGV4IDc3MTJiNDQ1MjgzNjdkOGMyNzI1
MDJhZGJhYWNhYWY5Nzg4Y2JkYjAuLjFlOWI3NGFiMTdlMzEwOGRiNDIwOWI5YjRmMDIxNGRhMTFh
YzZlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXIuaApAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aXNwYXRjaEVycm9yKEV4Y2VwdGlvbiYmKTsKIAogICAgIGVudW0gY2xhc3MgVGFrZVByaXZhdGVS
ZWNvcmRlciB7IE5vLCBZZXMgfTsKLSAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
ZG91YmxlKT47CisgICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBk
b3VibGUpPjsKICAgICB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmLCBUYWtlUHJp
dmF0ZVJlY29yZGVyKTsKIAogICAgIC8vIE1lZGlhU3RyZWFtOjpPYnNlcnZlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcApp
bmRleCAzZjRjOWJjZDEzM2FjMjlmM2Y3ZGRlMTk5NDc4ZTM5MjU3ZDVlNjZiLi44NzRhYTdmMGIx
OGYwZWU3NTg4MGJhNWY1ZWY2N2Q0N2JmYzJiMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcApAQCAtNzcsNyArNzcs
NyBAQCB2b2lkIEFydHdvcmtJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTAogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IC8vIFNhbml0aXplIHRoZSBpbWFnZSBieSBkZWNvZGluZyBpdCBpbnRvIGEgQml0bWFwSW1hZ2Uu
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1h
Z2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBh
dXRvIGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGJpdG1hcEltYWdl
LT5zZXREYXRhKFdURk1vdmUoYnVmZmVyVG9TYW5pdGl6ZSksIHRydWUpOwogICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IDJiM2NkZTM2MDgyNDcxYzExYzg3ZmNm
NjFjYzgxY2MzNjBjMzlkOTAuLmQzNzhhZmM2ZjhhMWI1N2EwMzAyZTJjODY4YjI0MGEyMDk3ZmU0
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNl
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJj
ZUJ1ZmZlci5jcHAKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6YXBwZW5k
QnVmZmVyVGltZXJGaXJlZCgpCiAgICAgLy8gaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1l
ZGlhL3Jhdy1maWxlL3RpcC9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLmh0bWwjc291cmNlYnVm
ZmVyLXNlZ21lbnQtcGFyc2VyLWxvb3AKICAgICAvLyBXaGVuIHRoZSBzZWdtZW50IHBhcnNlciBs
b29wIGFsZ29yaXRobSBpcyBpbnZva2VkLCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFwcGVuZERhdGEgPSBXVEZNb3ZlKG1fcGVuZGluZ0FwcGVu
ZERhdGEpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBhcHBlbmREYXRhID0g
V1RGTW92ZShtX3BlbmRpbmdBcHBlbmREYXRhKTsKICAgICAvLyAxLiBMb29wIFRvcDogSWYgdGhl
IGlucHV0IGJ1ZmZlciBpcyBlbXB0eSwgdGhlbiBqdW1wIHRvIHRoZSBuZWVkIG1vcmUgZGF0YSBz
dGVwIGJlbG93LgogICAgIGlmICghYXBwZW5kRGF0YSB8fCAhYXBwZW5kRGF0YS0+c2l6ZSgpKSB7
CiAgICAgICAgIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQ6
OkFwcGVuZFN1Y2NlZWRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuaAppbmRleCA1MjBjMDc3NTY5NmEyZjBlMmU3MzAwNzM1ZThjOTc3
NDk1ZjFhNjE0Li5kNGM4NTc5YzBiYmQ0NDNhNTEyZmE5ZjY4YzQyN2VjMDQ4ODVkMGQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgK
QEAgLTIyMiw3ICsyMjIsNyBAQCBwcml2YXRlOgogCiAgICAgV1RGOjpPYnNlcnZlcjx2b2lkKigp
PiBtX29wYXF1ZVJvb3RQcm92aWRlcjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGVu
ZGluZ0FwcGVuZERhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fcGVu
ZGluZ0FwcGVuZERhdGE7CiAgICAgVGltZXIgbV9hcHBlbmRCdWZmZXJUaW1lcjsKIAogICAgIFJl
ZlB0cjxWaWRlb1RyYWNrTGlzdD4gbV92aWRlb1RyYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyLmNwcAppbmRleCBmZWIxYjhmZmZiN2I5NGM5ZTdlYjBiZTQ4YWQzNWRkNzA3OWM3
MGJiLi5jYzVhODY1NzMwNTY1N2QwYTk3MDU2NjFlNGJiNDljZTBiODQwNWM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3Rl
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCgpCiAgICAgbV9pc1JlYWR5VG9TZW5k
ID0gdHJ1ZTsKIAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fcGVuZGluZ01lc3NhZ2VzKQot
ICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2Fn
ZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7
CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNz
YWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtZXNz
YWdlLmJ1ZmZlci0+c2l6ZSgpKTsKICAgICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAg
ICAgaWYgKG1faXNQZW5kaW5nQ2xvc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaApp
bmRleCBmNTgyN2RmOTM3OTQ5M2QyODEyNzAxNzdjY2ZiY2EwNTUxNTMyMzFmLi43Mzk0MmE4MzU5
MzFhOWQyODRjNmE0NTFiYjhkYmZiNTc2NWNhZGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUlRD
RGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OwogY2xhc3MgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyQ29ubmVjdGlvbjsKIGNsYXNzIFJUQ0Vycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyIGZpbmFsIDogcHVibGljIFJUQ0RhdGFDaGFubmVsSGFuZGxlciwgcHVibGljIENhbk1h
a2VXZWFrUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcj4gewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwpAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogCiAgICAgc3RydWN0IE1l
c3NhZ2UgewogICAgICAgICBib29sIGlzUmF3IHsgZmFsc2UgfTsKLSAgICAgICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOwogICAgIH07CiAgICAgVmVjdG9yPE1lc3NhZ2U+IG1fcGVuZGluZ01lc3NhZ2VzOwogICAg
IGJvb2wgbV9pc1BlbmRpbmdDbG9zZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAppbmRleCAzZTExMDU0MDAzNTNkZTU2MGYy
NDkzOGE5YjIwOGVmMzZmNjgwM2M0Li4zY2VlZDBhMDExZTdiNTQ2ZmFkZGY0OGJiZGEyMTFkZmRk
NTI0YzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlci5jcHAKQEAgLTk3LDggKzk3LDggQEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI6OnNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmIGNsaWVudCwKICAgICBt
X2NvbnRleHRJZGVudGlmaWVyID0gY29udGV4dElkZW50aWZpZXI7CiAKICAgICBmb3IgKGF1dG8m
IG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2FnZXMpIHsKLSAgICAgICAgc3dpdGNoT24obWVzc2Fn
ZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRhKSB7Ci0gICAgICAgICAgICBjbGllbnQuZGlk
UmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICBzd2l0
Y2hPbihtZXNzYWdlLCBbJl0oUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBkYXRhKSB7Cisg
ICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogICAgICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7
CiAgICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVN0cmluZ0RhdGEodGV4dCk7CiAgICAgICAg
IH0sIFsmXShTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAppbmRleCA0MWY5NTI4MjFlNjIwMDkzZjhlZWZl
MzJjNWVkNGFlMGY1ZTU0MTk3Li4xMWJkNDVkZTkxNTU3NzlmZmM5ZWZiMDNlOTU1MjhmMDVlNjRk
NzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aApAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogICAgICAgICBSVENEYXRhQ2hhbm5lbFN0YXRl
IHN0YXRlOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPHdlYnJ0Yzo6UlRDRXJyb3I+IGVycm9yOwog
ICAgIH07Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxTdGF0ZUNoYW5nZSwgU3Ry
aW5nLCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFu
dDxTdGF0ZUNoYW5nZSwgU3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAg
IHVzaW5nIFBlbmRpbmdNZXNzYWdlcyA9IFZlY3RvcjxNZXNzYWdlPjsKICAgICB2b2lkIHN0b3Jl
TWVzc2FnZShQZW5kaW5nTWVzc2FnZXMmLCBjb25zdCB3ZWJydGM6OkRhdGFCdWZmZXImKTsKICAg
ICB2b2lkIHByb2Nlc3NNZXNzYWdlKGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuY3BwCmluZGV4IDMwOWMwMjY0M2Y1YTdhZTlmZWMwOGExNGViMjEyMjQwOWIxZjg5ZTAu
LjYzZjFjM2NiZTFlYTgxY2ZiZjQ1NDY0NjMyMGNkZjdmYWNmNTljMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJj
ZVVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fc291cmNlVVJMID0gdXJsOwogCi0gICAgbV9k
YXRhID0gbnVsbHB0cjsKKyAgICBtX2RhdGEucmVzZXQoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9
IGZhbHNlOwogCiAgICAgaWYgKG1fcmVzb3VyY2UpIHsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cisg
ICAgbV9kYXRhLmVtcHR5KCk7CiAKICAgICBtX3Jlc291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsK
ICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMpOwpAQCAtMTgwLDggKzE4MCw3IEBAIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiBzCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jl
c291cmNlKTsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBk
YXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2
b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH07CiAKICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxl
ZE9yQ2FuY2VsZWQoKSkgewotICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBtX2Rh
dGEucmVzZXQoKTsKIAogICAgICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVS
ZW5kZXJlcigpOwogCkBAIC0yMDQsNyArMjAzLDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EK
ICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVs
OjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEu
dGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNv
dXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5k
ZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAwNWExY2RhYTNlMTQ4NzdhMGFlNDY1YjYzNDlh
YTViYmIxYWYyYzgyLi5jZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFlNmU4NTgwM2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogCiAgICAgVVJMIG1f
c291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBt
X3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8TW9kZWw+IG1fbW9kZWw7CiAgICAgVW5p
cXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAgICAgYm9vbCBtX2RhdGFDb21w
bGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbSBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNE
Lm1tCmluZGV4IDNlODJhYzIyMTY3OTZjOWVkYjc2MGExOWVkN2FjZTFmNDJjZDM3NzcuLjEzMDNl
YzRkMjU2OGE2NmY4N2Q3ZmViMjBiZjJiMDMzOTIzMmMzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVy
VVNELm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtp
dC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIFJl
dGFpblB0cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVs
U291cmNlKQogICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5Rmls
ZSgiTW9kZWxGaWxlIiwgZmlsZUhhbmRsZSwgIi51c2R6Iik7CiAgICAgQVNTRVJUKEZpbGVTeXN0
ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOwogCi0gICAgc2l6ZV90IGJ5dGVDb3VudCA9
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+
ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgc2l6ZV90IGJ5dGVDb3Vu
dCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIG1vZGVsU291cmNlLmRhdGEo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7
CiAgICAgQVNTRVJUX1VOVVNFRChieXRlQ291bnQsIGJ5dGVDb3VudCA9PSBtb2RlbFNvdXJjZS5k
YXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW1TaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1T
aW5rLmgKaW5kZXggMGI4OThmNmFkYjU3ZWIyNWRjNDkzN2Q4MWZmNWQxNGQ1Mjk3NmM4NC4uZDUx
NzNmYmY4YjQwMzQxYzVjZjhkOGE0ZjU1ZWVhYzhmZjgzOGEzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaApAQCAtMzUsNyAr
MzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNz
IFJlYWRhYmxlU3RyZWFtOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgUmVhZGFibGVTdHJlYW1TaW5rIDogcHVibGljIFJlZkNvdW50
ZWQ8UmVhZGFibGVTdHJlYW1TaW5rPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRleCBjNDUy
YzgzZmJkNWNlODk1YmRkMDMxYWNmMTQ2OGY3ODY1MDYyMmQ3Li5iOGI3Nzg1ZjkxZDA2OGMyYTQ2
Y2ViMWQ2NTk3NThmY2Y4YjY5ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAgLTUxLDEzICs1MSwxNSBA
QCBwdWJsaWM6CiAgICAgICAgIGlmIChtX3NjcmlwdEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAorICAgICAgICBpZiAoIW1fY29udGlndW91c0J1
ZmZlciAmJiAoIW1fY29udGFpbnNPbmx5QVNDSUkgfHwgKm1fY29udGFpbnNPbmx5QVNDSUkpKQor
ICAgICAgICAgICAgbV9jb250aWd1b3VzQnVmZmVyID0gbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCkt
Pm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIGlmICghbV9jb250YWluc09ubHlBU0NJSSkgewot
ICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSSht
X3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+
c2l6ZSgpKTsKKyAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJl
QWxsQVNDSUkobV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZl
cigpLT5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAg
ICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRN
YXNrVG9wOEJpdHMobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZm
ZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3Ry
aW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2NvbnRpZ3VvdXNCdWZmZXIt
PmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgcmV0dXJuIHsgbV9z
Y3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2Ny
aXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CisgICAgICAgICAgICByZXR1cm4geyBtX2Nv
bnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVm
ZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CiAKICAgICAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0
cmluZykgewogICAgICAgICAgICAgbV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBtX3NjcmlwdEJ1ZmZl
ci50b1N0cmluZygpOwpAQCAtODEsNiArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgbV9zY3JpcHRCdWZmZXIgPSBzY3JpcHRCdWZmZXI7CisgICAgICAgIG1f
Y29udGlndW91c0J1ZmZlciA9IG51bGxwdHI7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtOTEsNiAr
OTQsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFNjcmlwdEJ1ZmZlciBtX3NjcmlwdEJ1ZmZl
cjsKKyAgICBtdXRhYmxlIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udGlndW91c0J1ZmZlcjsK
ICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAgICBtdXRhYmxlIFN0
cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggN2U0OWE5ZTczMjI2YjY1Y2MyOGJmNTk0
ODEzYjBmODNiMjY5ZDIyYi4uZWYzN2YxZDBjYTQ2MmJiOWI3YzliNmE1NWQxOGViYjRjMTE4MWE3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgRGV0YWNoZWRPZmZzY3JlZW5DYW52YXM7
CiBjbGFzcyBJREJWYWx1ZTsKIGNsYXNzIE1lc3NhZ2VQb3J0OwogY2xhc3MgSW1hZ2VCaXRtYXBC
YWNraW5nOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIGVudW0gY2xhc3MgU2VyaWFsaXphdGlvblJldHVybkNvZGU7CiAKIGVudW0gY2xhc3MgU2Vy
aWFsaXphdGlvbkVycm9yTW9kZSB7IE5vblRocm93aW5nLCBUaHJvd2luZyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVlNWYzNzgyZmJiMjMx
MjNiMmRkM2E1N2ExNzI4Li4xMDhlNmM4NzY3ZDBkMmZkYWNiZTY1MDRlYmM1MDcwZTg4MmJlNjQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNiArMzQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3MgQ1NTRm9u
dFNlbGVjdG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBG
b250OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKQEAgLTQyLDcgKzQzLDYgQEAgY2xhc3Mg
Rm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRp
ZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKIGNsYXNzIFNWR0ZvbnRGYWNlRWxlbWVu
dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZv
bnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZl
YXR1cmVTZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggMWRlYWM0
ZjQxY2Y0OWYxZjg4MmRjY2VmZDQ4Y2Y2YTk3MzJmM2VkOS4uYzQyZWMwNTFmZTExZWJhMTRmODEz
MzU5ZDhkMTdhMmMyODE2NjRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAg
LTQwMiw3ICs0MDIsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVUeXBlUmVhZGVyIGZpbmFsIDog
UGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgICAgICB0eXBlcy5hZGQoRmlsZTo6Y29udGVudFR5
cGVGb3JGaWxlKGZpbGVuYW1lKSk7CiAgICAgfQogCi0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikKKyAgICB2
b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKICAgICB7CiAgICAgICAgIHR5cGVzLmFkZCh0eXBlKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTcyNGNmMGU1MGJhYTViOWIy
NDEzMDQ4MWVlNzI0Y2I3ODIwN2FhNC4uYzVlOWUyNmIzNzJhZTY4M2YxODY4ZTkyMGM0NWVkNzBl
ZGY1NTQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDEzMyw3ICs0MTMzLDcg
QEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8o
RWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4geyBhdHRhY2htZW50LT51bmlxdWVJZGVudGlm
aWVyKCksIFdURk1vdmUoYWRkaXRpb25hbFR5cGVzKSwgV1RGTW92ZShhZGRpdGlvbmFsRGF0YSkg
fTsKIH0KIAotdm9pZCBFZGl0b3I6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJp
bmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIEVk
aXRvcjo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmls
ZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKGF1
dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQogICAgICAgICBjbGllbnQtPnJlZ2lzdGVyQXR0
YWNobWVudElkZW50aWZpZXIoaWRlbnRpZmllciwgY29udGVudFR5cGUsIHByZWZlcnJlZEZpbGVO
YW1lLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDAxZmUwYjVl
MDQ0ZWY2M2YyNmE3MWI0NzJlZjk4YjExYzIyOGI5MWMuLjFkMDcxNmM1YjkzYzhiYjdhZDczZjQx
NzRjYTgwNDU5MDVmOTE5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNTcsOSArNTcs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyOwogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwotY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3Mg
Q29tcG9zaXRlRWRpdENvbW1hbmQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21V
bmRvU3RlcDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXI7CiBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBA
IC03NCw3ICs3NSw3IEBAIGNsYXNzIEtpbGxSaW5nOwogY2xhc3MgUGFzdGVib2FyZDsKIGNsYXNz
IFBhc3RlYm9hcmRXcml0ZXJEYXRhOwogY2xhc3MgUmVuZGVyTGF5ZXI7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udDsKIGNsYXNz
IFNwZWxsQ2hlY2tSZXF1ZXN0OwogY2xhc3MgU3BlbGxDaGVja2VyOwpAQCAtNTYzLDcgKzU2NCw3
IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFt
ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckF0dGFjaG1l
bnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZmlsZURh
dGEpOworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVO
YW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBmaWxlRGF0YSk7CiAgICAgdm9pZCBy
ZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpOwog
ICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKICAgICB2b2lk
IHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCmluZGV4IDA4YWExMjQyNjYyMGY3Njk1M2E3
OWIzNGVkZTVmNmRmMDUyN2IwMTUuLjk1N2I0ZmQ0YTU1N2ZjODFjZDMwNjllZWFjYjg5NDg4YTk0
N2I3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCkBAIC03
MiwxNiArNzIsMTYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJp
bmcmLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUgPSB7IH0pIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEZp
bGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEhU
TUwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJl
ZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZEltYWdlKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRh
dGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CiAgICAg
Ym9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwog
ICAgIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OwotICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJl
YWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7
IH0pIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikg
b3ZlcnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNp
emUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CiAjZW5kaWYKIH07
CiAKQEAgLTk5LDE2ICs5OSwxNiBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVhZEZpbGVQYXRoKGNv
bnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYgPSB7IH0p
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkRmlsZVBhdGhzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHJl
YWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZEltYWdlKFJlZjxT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCByZWFkSW1hZ2UoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0p
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFk
UGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBvdmVy
cmlkZTsKLSAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9v
bCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OworICAgIGJvb2wgcmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwor
ICAgIGJvb2wgcmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAg
Ym9vbCByZWFkRGF0YUJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCmluZGV4IDU0OWViN2QyZTRjMDc1
NDhlNGE4YzllYTI0ZWMyMGU0ZjIxYmZhMjUuLjExN2RiYTY4ZWRiMGJkNGI2YzMwZTA5NDg1ZDlk
MGMwZjI5YzM4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBh
c3RlYm9hcmRGaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdm9pZCBXZWJDb3Jl
UGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1l
KQogICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgZmlsZW5hbWUp
KTsKIH0KIAotdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKK3ZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVh
dGUoY29udGV4dC5nZXQoKSwgQmxvYjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGJ1ZmZlci0+ZXh0
cmFjdERhdGEoKSwgdHlwZSksIGZpbGVuYW1lKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAppbmRleCA1YzUyOWRkN2M4
ZWNjMDAwNDhmY2I0ZDE1ODE0NjM1YjI0ZDkwYmI3Li45ZDgxNjA1ZjE5OTI5OGYxOWMwZWQ2OTk1
ZmUzYmQ3NzgzMDM0ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IFdlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAg
ICB+V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCk7CiAKICAgICB2b2lkIHJlYWRGaWxlbmFt
ZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBS
ZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29udGV4dDsKICAgICBWZWN0b3I8UmVmPEZp
bGU+PiBmaWxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRN
TENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRl
ci5tbQppbmRleCBkNDhlMTFjOTZiNzgwOGY4ODM1NGIzYjA3NDdlZWIxZjFlMzdlM2YzLi4wNzgy
NDgzNjJhYTA1NGRjM2FiMDAwMDQ1MTcxODQxOThhNTgwZjc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBC
T09MIEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudChFbGVtZW50JiBlbGVt
ZW50LCBOU1VSTCAqdXJsLCBCT09MCiAgICAgICAgIGlmIChhdXRvIHJlc291cmNlID0gZGF0YVNv
dXJjZS0+c3VicmVzb3VyY2UodXJsKSkgewogICAgICAgICAgICAgYXV0byYgbWltZVR5cGUgPSBy
ZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgICAgIGlmICghdXNlUGxhY2Vob2xkZXIgfHwg
bWltZVR5cGUgIT0gInRleHQvaHRtbCIpIHsKLSAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9
IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVu
dHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAg
ICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1
bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFBy
ZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHVybCwgbWltZVR5
cGUpXTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG5vdEZvdW5kID0gWUVT
OwpAQCAtMjMwMCw3ICsyMzAwLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBm
aWxlV3JhcHBlckZvclVSTChEb2N1bWVudExvYWRlciogZGF0YVNvdXJjZSwgTlMKIAogICAgIGlm
IChkYXRhU291cmNlKSB7CiAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNv
dXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKFVSTCkpIHsKLSAgICAgICAgICAgIGF1dG8g
d3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVX
aXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAg
ICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGlu
aXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICBOU1N0cmluZyAqZmlsZW5h
bWUgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpOwogICAgICAgICAg
ICAgaWYgKCFmaWxlbmFtZSB8fCAhW2ZpbGVuYW1lIGxlbmd0aF0pCiAgICAgICAgICAgICAgICAg
ZmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShyZXNvdXJjZS0+dXJsKCks
IHJlc291cmNlLT5taW1lVHlwZSgpKTsKQEAgLTIzMjIsOCArMjMyMiw4IEBAIHN0YXRpYyBSZXRh
aW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRh
dGFTb3VyY2UsIE5TCiBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVy
Rm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJ
bWFnZSogY2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCkpIHsKLSAgICAgICAgaWYg
KFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVy
KCkpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGlu
aXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXSk7CisgICAgICAgIGlmIChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIg
PSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9w
dE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNo
YXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAg
ICB9CiAKICAgICBhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0K
aW5kZXggNmFhM2NkNTRlODJiOTliMzE5NDI3YmVlMzRjOGM0NGI2NzllMjI3OS4uNzZiMWEwMDlk
ZTQzMGZhM2I1NGQ5YTE1ZTY3OGNkODNmMzE0NWZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI0NSw3ICsy
NDUsNyBAQCBzdGF0aWMgYm9vbCBzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0YShjb25z
dCBGcmFtZSYgZnJhbWUpCiAKICNlbmRpZgogCi1zdGF0aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+
IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQm
IGRvY3VtZW50LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQorc3RhdGljIFJlZjxEb2N1
bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJh
bWUsIERvY3VtZW50JiBkb2N1bWVudCwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJl
ZFNpemUpCiB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBhdXRvIGF0dGFj
aG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1l
bnRUYWcsIGRvY3VtZW50KTsKQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNl
UmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50
JiBmcgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSBy
ZXNvdXJjZUVudHJ5LT52YWx1ZTsKLSAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFw
cGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUo
KSwgcmVzb3VyY2UtPmRhdGEoKSB9KTsKKyAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmFwcGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5
cGUoKSwgcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpIH0pOwogICAgIH0KIAogICAg
IGlmICghc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmlzRW1wdHkoKSkKQEAgLTMzMiw3ICszMzIs
NyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICBuYW1lID0gIm1lZGlhIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNl
cnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5
cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIGltYWdlIH0pOworICAgICAgICBhdHRhY2ht
ZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUt
Pm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIGlt
YWdlIH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVzY2VuZGFudHNPZlR5
cGU8SFRNTE9iamVjdEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0
YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUs
IERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIG5hbWUgPSAiZmlsZSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5m
by5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJl
c291cmNlLT52YWx1ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNl
cnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5
cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0IH0p
OwogICAgIH0KIAogICAgIGZvciAoYXV0byYgaW5mbyA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZv
KSB7CkBAIC00MjgsNyArNDI4LDcgQEAgc3RydWN0IE1hcmt1cEFuZEFyY2hpdmUgewogICAgIFJl
ZjxBcmNoaXZlPiBhcmNoaXZlOwogfTsKIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5k
QXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNI
VE1MKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1
cEFuZEFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6OmZ1
bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKIHsKICAg
ICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoVVJMKCksIGJ1ZmZlcik7
CiAgICAgaWYgKCFhcmNoaXZlKQpAQCAtNDQyLDcgKzQ0Miw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZl
ciYgYnVmCiAgICAgaWYgKCFjYW5TaG93TUlNRVR5cGVBc0hUTUwodHlwZSkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmlu
Zzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRh
dGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxl
YXNlTm9uTnVsbCgpIH07CisgICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZy
b21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFp
blJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCks
IGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9OwogfQogCiBzdGF0aWMgU3RyaW5nIHNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1
bWVudCwgTWFya3VwQW5kQXJjaGl2ZSYgbWFya3VwQW5kQXJjaGl2ZSwgTVNPTGlzdFF1aXJrcyBt
c29MaXN0UXVpcmtzLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNh
blNob3dNSU1FVHlwZUFzSFRNTCkKQEAgLTQ4MSw3ICs0ODEsNyBAQCBzdGF0aWMgU3RyaW5nIHNh
bml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRp
b25Eb2N1bQogICAgICAgICBpZiAoIXNob3VsZFJlcGxhY2VTdWJyZXNvdXJjZVVSTChzdWJmcmFt
ZVVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBNYXJrdXBBbmRBcmNoaXZl
IHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJj
ZS0+ZGF0YSgpLmRhdGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLAor
ICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9t
VVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLAogICAgICAgICAgICAgc3Vi
ZnJhbWVNYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgc3ViZnJhbWVBcmNoaXZlLmNvcHlS
ZWYoKSB9OwogICAgICAgICBhdXRvIHN1YmZyYW1lTWFya3VwID0gc2FuaXRpemVNYXJrdXBXaXRo
QXJjaGl2ZShmcmFtZSwgZGVzdGluYXRpb25Eb2N1bWVudCwgc3ViZnJhbWVDb250ZW50LCBNU09M
aXN0UXVpcmtzOjpEaXNhYmxlZCwgY2FuU2hvd01JTUVUeXBlQXNIVE1MKTsKIApAQCAtNDk3LDcg
KzQ5Nyw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYg
ZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgcmV0dXJuIHNhbml0aXplZE1h
cmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChXVEZNb3ZlKGZyYWdtZW50KSwgKnN0YWdpbmdEb2N1
bWVudCwgbXNvTGlzdFF1aXJrcywgbWFya3VwQW5kQXJjaGl2ZS5tYXJrdXApOwogfQogCi1ib29s
IFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQor
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVG
b3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNTMyLDcgKzUzMiw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUo
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29u
dGVudE1hcmt1cFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiti
b29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTYxMiwxMiArNjEyLDEyIEBAIGJvb2wgV2ViQ29udGVudE1hcmt1
cFJlYWRlcjo6cmVhZEhUTUwoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuICFtYXJr
dXAuaXNFbXB0eSgpOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJl
ZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3Vt
ZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAg
ICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBz
dHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTYyNiwxMSArNjI2LDExIEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVu
dE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNv
bnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVz
Om51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdt
ZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7
CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjM5LDEyICs2
MzksMTIgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVy
OjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpy
ZWFkUlRGKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUu
c2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJp
YnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBm
cmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0
KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY1Mywx
MSArNjUzLDExIEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVh
ZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3Vw
UmVhZGVyOjpyZWFkUlRGKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBp
ZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIHN0
cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1
ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwor
ICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRv
Y3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZy
YWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJh
Z21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY3Niw3ICs2NzYsNyBAQCBib29sIFdl
YkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXpl
IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJ
bWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
dHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQogewogICAg
IEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5k
b2N1bWVudCgpOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogICAgIHJldHVybiBhdHRhY2htZW50OwogfQogCi1zdGF0aWMgUmVmPEhUTUxFbGVt
ZW50PiBhdHRhY2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRh
dGlvblNpemUgcHJlZmVycmVkU2l6ZSkKK3N0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1l
bnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlv
blNpemUgcHJlZmVycmVkU2l6ZSkKIHsKICAgICBSZWYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1l
bnQoKTsKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0
ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKQEAgLTgzMyw3ICs4MzMsNyBA
QCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdGl0bGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRh
dGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVmZmVyKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAg
ICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAppbmRleCA2
MDQ4NmU3MWFkNTlmZWNjNzE1ZmYwYTA5YjFjMzU1OGI3YjM0MmMyLi5kM2U5ODE5YmQ1MzFmODQ4
NmEzMTdhYjlmOWVkODNhOTg4NWJlMmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNzEsNyArNzEsNyBAQCBib29sIFdl
YkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXpl
IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJ
bWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
dHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQogewogICAg
IEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5k
b2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCA0NWQ5MzNlMTNjYTRkMjI1MWM1ZGVk
ODQ4YWE5ZTk4NzJjNzY3NDg5Li5iY2E2Njk2ZWJlNmYwZWRkZGRlZTc5YjczYzNlZTE0NDk2ZDgy
ZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBCbG9iTG9h
ZGVyOwogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgUmVhZGFibGVTdHJlYW07CiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEV4Y2VwdGlv
bk9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVl
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAppbmRl
eCA1NTllYmNjNDhjNWYwOTZhYzE5YmFlN2Q5ZjcxOGI3MWYyYTM1MzIyLi40MmY0MTgwZGZhODQy
N2UwZTYwZjgxZWI3OWIxOTE4N2NhZmRiYTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
TmV0d29ya1NlbmRRdWV1ZS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBOZXR3b3JrU2VuZFF1
ZXVlOjpwcm9jZXNzTWVzc2FnZXMoKQogICAgICAgICBib29sIHNob3VsZFN0b3BQcm9jZXNzaW5n
ID0gZmFsc2U7CiAgICAgICAgIHN3aXRjaE9uKG1fcXVldWUuZmlyc3QoKSwgW3RoaXNdKGNvbnN0
IENTdHJpbmcmIHV0ZjgpIHsKICAgICAgICAgICAgIG1fd3JpdGVTdHJpbmcodXRmOCk7Ci0gICAg
ICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgeworICAgICAgICB9LCBbdGhp
c10oUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CiAgICAgICAgICAgICBkYXRh
LT5mb3JFYWNoU2VnbWVudChtX3dyaXRlUmF3RGF0YSk7CiAgICAgICAgIH0sIFt0aGlzLCAmc2hv
dWxkU3RvcFByb2Nlc3NpbmddKFVuaXF1ZVJlZjxCbG9iTG9hZGVyPiYgbG9hZGVyKSB7CiAgICAg
ICAgICAgICBhdXRvIGVycm9yQ29kZSA9IGxvYWRlci0+ZXJyb3JDb2RlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCmluZGV4IDU1MWY3MGY5MTY3YjJiZmNiMjQ0
YmIyYjM3MDBiZmJhYWY1NDc5NmMuLmQyM2NmZWJiNDUwOGJjMzAwOTE1YmI5OTZkM2YxNTA2MmNl
MzUwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCkBAIC00
Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYjsKIGNsYXNzIEJs
b2JMb2FkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBOZXR3b3JrU2VuZFF1ZXVlIDogcHVibGljIENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKQEAgLTYzLDcgKzYzLDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NNZXNzYWdlcygpOwogCi0gICAgdXNpbmcg
TWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxDU3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPiwgVW5pcXVl
UmVmPEJsb2JMb2FkZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PENTdHJp
bmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgVW5pcXVlUmVmPEJsb2JMb2FkZXI+PjsK
ICAgICBEZXF1ZTxNZXNzYWdlPiBtX3F1ZXVlOwogCiAgICAgV3JpdGVTdHJpbmcgbV93cml0ZVN0
cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApp
bmRleCA1NmEwNmZjYWYyNzNkMjVkYzRjNzVkY2U1NjlhYWM4ZjFhYTU5NTI3Li5kMmI4NzQxYTA0
NDM0MmM3ZmZkOWU4YTUzM2NjOGExMjBlMjliYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgc3RhdGljIGJv
b2wgbWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VBdHRhY2htZW50KGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZShtaW1lVHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlwZSht
aW1lVHlwZSk7CiB9CiAKLXZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3Np
bmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQordm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2lu
Z0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGF1dG8qIGhvc3RFbGVtZW50ID0gc2hhZG93
SG9zdCgpOwogICAgIGlmICghaXM8SFRNTEltYWdlRWxlbWVudD4oaG9zdEVsZW1lbnQpIHx8ICFi
dWZmZXItPnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5oCmluZGV4IDU3M2VjMmVhZTFjZGMwNjA5ZjI2MWMzODQwMGJiMDJjNDgwZjdiZGQuLjY2MWRl
YzkzNzZkOGE5ZDZkNDcxN2ZkMGI0Y2U3ZjgyZmYwM2Y3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBGaWxl
OwogY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIFJlbmRlckF0dGFjaG1lbnQ7CiBjbGFz
cyBTaGFyZWFibGVCaXRtYXA7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1lbnQgZmluYWwgOiBwdWJs
aWMgSFRNTEVsZW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSFRNTEF0dGFjaG1l
bnRFbGVtZW50KTsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29weU5vbkF0
dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JikgZmluYWw7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUF0dHJpYnV0ZXMoc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4mJiBuZXdGaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBuZXdGaWxlbmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVFbmNs
b3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgZGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVFbmNsb3NpbmdJ
bWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVGh1bWJu
YWlsKGNvbnN0IFJlZlB0cjxJbWFnZT4mIHRodW1ibmFpbCk7CiAKICAgICBJbnNlcnRlZEludG9B
bmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWlu
ZXJOb2RlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApp
bmRleCA1MTcxYjljZGM3ODkzMTcxZTIxZTVmNGJmNTUwMTdlZjk0NGFjNzk1Li4xYTU2YmMwMzU5
Y2NlMWY1MGRjZGRhMDY1MjIyYTAxMDk1YTY5MDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKQEAgLTI5MzgsNyArMjkzOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6Y2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpCiAgICAg
YXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpOwogfQogCi12b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQo
Y29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEp
Cit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRp
b25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIG1lZGlhUGxheWVySW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0YS0+dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDY5
NTY2OTQ5NjMxMGVmOTEwOGI5NTZmZGE0ODIxNDMwMTQ5NzBlY2IuLjZjM2I2OTNiN2IxMGVkYTMw
ZTUxZDRjNjYzMWJlM2ZiNTBjYmY4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCkBAIC03MjAsNyArNzIwLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENETUNsaWVudAog
ICAgIHZvaWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpIGZp
bmFsOwotICAgIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNl
aXZlZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lk
IGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3Ry
aW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDQ0MmQwOTQ2YmUyNTBk
Y2NmNTkyN2JhYTkyNzkzYTcwZWU5MTkzM2UuLjAwZDhmMjM5ZDcxMjdjNjFjYWUxYjU4ZDljNGEz
MDNhOWIzYzkwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAtMTQx
LDcgKzE0MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6dXBkYXRlRHVyaW5nUGFyc2luZygpCiAg
ICAgaWYgKCFtX2ltYWdlRWxlbWVudCkKICAgICAgICAgY3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUo
KTsKIAotICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBsb2FkZXIoKS0+bWFp
blJlc291cmNlRGF0YSgpKQorICAgIGlmIChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSkKICAgICAgICAgbV9pbWFnZUVs
ZW1lbnQtPmNhY2hlZEltYWdlKCktPnVwZGF0ZUJ1ZmZlcigqYnVmZmVyKTsKIAogICAgIGltYWdl
VXBkYXRlZCgpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6ZmluaXNo
ZWRQYXJzaW5nKCkKIHsKICAgICBpZiAoIXBhcnNlcigpLT5pc1N0b3BwZWQoKSAmJiBtX2ltYWdl
RWxlbWVudCkgewogICAgICAgICBDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UgPSAqbV9pbWFnZUVs
ZW1lbnQtPmNhY2hlZEltYWdlKCk7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEg
PSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAKICAg
ICAgICAgLy8gSWYgdGhpcyBpcyBhIG11bHRpcGFydCBpbWFnZSwgbWFrZSBhIGNvcHkgb2YgdGhl
IGN1cnJlbnQgcGFydCwgc2luY2UgdGhlIHJlc291cmNlIGRhdGEKICAgICAgICAgLy8gd2lsbCBi
ZSBvdmVyd3JpdHRlbiBieSB0aGUgbmV4dCBwYXJ0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBhN2NhNzE2MmQ3
OTFlZDdmYmE4Y2M5MWMyMWEyY2YzYWY2ZTY5YTdlLi4xODc5M2ZmMDY2MzM4ZmI2MGEzNGRlYzkw
OWJjMmRkZDI4YmVhZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtODUwLDcgKzg1MCw3IEBAIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVxdWVzdChs
b2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1l
bnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0
d29ya0FnZW50LT5pbnRlcmNlcHRSZXNwb25zZShyZXNwb25zZSwgaWRlbnRpZmllciwgV1RGTW92
ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggOGU2NWM0ZWIxMDIzMzUyMWY0OGM3ZjRiMTIwYWQyYzg5
MDlhMDdiYS4uZDI5NTc4MTBkODM4MmM5MzUxZDVhOTNmMTQ0YWVkMTQ5M2JjYzY1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aApAQCAtOTMsNyArOTMsNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU2hhZG93Um9v
dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBj
bGFzcyBUaW1lckJhc2U7CiBjbGFzcyBXZWJLaXROYW1lZEZsb3c7CiBjbGFzcyBXZWJTb2NrZXRD
aGFubmVsOwpAQCAtMjM2LDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzaG91
bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVz
dChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+
JiYpOwotICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4pPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPik+JiYpOwogCiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29u
c29sZShQYWdlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsK
ICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKQEAg
LTQ0MSw3ICs0NDEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2Vw
dFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBp
bnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXIm
LCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMg
dm9pZCBpbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4m
Jik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3Nh
Z2VUb0NvbnNvbGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwogCkBAIC0xMjg5LDcgKzEyODksNyBAQCBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VM
b2FkZXImIGxvYWRlciwgRgogICAgICAgICBpbnRlcmNlcHRSZXF1ZXN0SW1wbCgqYWdlbnRzLCBs
b2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NF
UlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFt
ZSwgcmVzcG9uc2UpKTsKICAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50
cyhmcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCmluZGV4IDYxZTRiYzNiYTAxOWVlMjVlNWM4
YmMyMjFkZmY2MDc3ZWRkYjg2M2QuLmYwNjQwM2E2MjM0YjQyYjZhZDJhODBiMDE5NGE1OTZkODlm
NmU2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoUmVz
b3VyY2VMb2FkZXImIGxvCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRS
ZXF1ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1l
JiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK3ZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNv
bnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYm
IGhhbmRsZXIpCiB7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNw
b25zZShmcmFtZSwgcmVzcG9uc2UsIGlkZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbldlYktpdC5oCmluZGV4IGY3NjExNGNlOThmNDJhN2ZmOTA2YTQ4ZDA0MjBiOTYzMDVk
MzY5MTQuLjA3YjQyMWI1OWMxNTU1ZTFhMjkxZTE4ZWJiMjYyMjEyMmYxNjU4YjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJL
aXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0LmgKQEAgLTM2LDIwICszNiwyMCBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIFJlc291
cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIFdFQkNPUkVfRVhQT1JUIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdCB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFt
ZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVy
Y2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAg
IHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNl
cHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50
ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogcHJp
dmF0ZToKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoY29u
c3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91
bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNv
dXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwot
ICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29u
c3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIH07CiAKIGlubGluZSBib29sIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBG
cmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTc2LDcgKzc2
LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNl
cHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2EKICAgICBpbnRlcmNlcHRSZXF1ZXN0SW50ZXJu
YWwobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSogZnJh
bWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCitpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZy
YW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxk
SW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAgaW50ZXJjZXB0UmVzcG9u
c2VJbnRlcm5hbCgqZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmYzMmY2
NjBiOTE3M2JhZThkNWNkOWExMzBlYWU1OGI5N2Q1ZWNlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtNDcsNiArNDcsNyBA
QCBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplID0g
NTAgKiAxMDAwICogMTAwMDsgLy8gNTBNQgogTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcm
IGxvYWRlcklkKQogICAgIDogbV9yZXF1ZXN0SWQocmVxdWVzdElkKQogICAgICwgbV9sb2FkZXJJ
ZChsb2FkZXJJZCkKKyAgICAsIG1fZGF0YUJ1ZmZlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTY0LDcgKzY1LDcgQEAgdW5zaWduZWQgTmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCgpCiAgICAgaWYgKGhhc0Rh
dGEoKSkgewogICAgICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAgICAgICAgIHJlc3VsdCA9
IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOwor
ICAgICAgICBtX2RhdGFCdWZmZXItPnJlc2V0KCk7CiAgICAgfQogCiAgICAgaWYgKGhhc0NvbnRl
bnQoKSkgewpAQCAtODEsMzYgKzgyLDM3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgpCiAgICAgcmV0dXJuIHJlbW92ZUNvbnRlbnQo
KTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRh
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fZGF0YUJ1ZmZlci0+aXNOdWxsKCk7Cit9CisKIHNp
emVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAw
OworICAgIHJldHVybiBtX2RhdGFCdWZmZXItPnNpemUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKLSAgICBp
ZiAoIW1fZGF0YUJ1ZmZlcikKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBtX2RhdGFCdWZmZXIt
PmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGFCdWZmZXItPmFwcGVuZChkYXRh
LCBkYXRhTGVuZ3RoKTsKIH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50
KCkpOwogCi0gICAgc2l6ZV90IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZlci0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpOwor
ICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9kZWNv
ZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRl
bnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRh
TGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChi
dWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNl
NjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJp
bmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQg
PSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAg
fQogCi0gICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKLQogICAgIHJldHVybiBtX2NvbnRlbnQu
c2l6ZUluQnl0ZXMoKSAtIGRhdGFMZW5ndGg7CiB9CiAKQEAgLTI2Nyw3ICsyNjksNyBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgQ2FjaGVkUmVzbwogICAgIHJlc291cmNlRGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2Uo
Y2FjaGVkUmVzb3VyY2UpOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRSZXNv
dXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKK3ZvaWQgTmV0
d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNl
RGF0YSA9IHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogICAgIGlmICghcmVz
b3VyY2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaAppbmRleCBlZmEwMDA1M2FlMTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3Li5l
ZTM5NDU3Zjc2NzJlYWNhYWM5MGE1YjZiYzg4MTEwOGNiZGE4YTg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgog
I2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCkBAIC00MCw3ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhY2hlZFJl
c291cmNlOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29k
ZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwor
Y2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtODgsOCArOTAsOCBAQCBwdWJsaWM6
CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZWNvZGVyLmNvcHlSZWYoKTsgfQogICAgICAgICB2b2lkIHNldERlY29kZXIoUmVm
UHRyPFRleHRSZXNvdXJjZURlY29kZXI+JiYgZGVjb2RlcikgeyBtX2RlY29kZXIgPSBXVEZNb3Zl
KGRlY29kZXIpOyB9CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIuY29weVJlZigpOyB9Ci0gICAgICAgIHZvaWQgc2V0QnVmZmVy
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fYnVmZmVyID0gV1RGTW92ZShidWZm
ZXIpOyB9CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlci5jb3B5UmVmKCk7IH0KKyAgICAgICAgdm9pZCBzZXRCdWZm
ZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fYnVmZmVyID0g
V1RGTW92ZShidWZmZXIpOyB9CiAKICAgICAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxDZXJ0aWZp
Y2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRl
SW5mbzsgfQogICAgICAgICB2b2lkIHNldENlcnRpZmljYXRlSW5mbyhjb25zdCBzdGQ6Om9wdGlv
bmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmljYXRlSW5mbykgeyBtX2NlcnRpZmljYXRlSW5m
byA9IGNlcnRpZmljYXRlSW5mbzsgfQpAQCAtMTAzLDEwICsxMDUsMTAgQEAgcHVibGljOgogICAg
ICAgICBXYWxsVGltZSByZXNwb25zZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9u
c2VUaW1lc3RhbXA7IH0KICAgICAgICAgdm9pZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGlt
ZSB0aW1lKSB7IG1fcmVzcG9uc2VUaW1lc3RhbXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBo
YXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAg
Ym9vbCBoYXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1
ZmZlcjsgfQorICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRh
dGFMZW5ndGgoKSBjb25zdDsKICAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRv
Q29udGVudCgpOwpAQCAtMTE5LDggKzEyMSw4IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1f
dGV4dEVuY29kaW5nTmFtZTsKICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJl
ZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fZGF0YUJ1ZmZlcjsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CisgICAgICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZm
ZXI7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAg
ICAgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJbmZvOwog
ICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9jYWNoZWRSZXNvdXJjZSB7IG51bGxwdHIgfTsKICAg
ICAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgbV90eXBlIHsgSW5zcGVjdG9y
UGFnZUFnZW50OjpPdGhlclJlc291cmNlIH07CkBAIC0xNDQsNyArMTQ2LDcgQEAgcHVibGljOgog
ICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAg
ICB2b2lkIG1heWJlRGVjb2RlRGF0YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7
CiAgICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2Fj
aGVkUmVzb3VyY2UqKTsKLSAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUpOworICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwogICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0
YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRh
Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZW1vdmVDYWNo
ZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4
NGEyODg0MmZiYzU2Mjg5Mzc2MWQ3MWU0Yzc0Mjc0ZWJiMTguLjE4OWYyNmIwOThiNzM2MWRjZjhl
OWQ2NGUzNTllNzVmZDljMDk3MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTExNDAsNyArMTE0
MCw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291
cmNlTG9hZGVyJiBsb2FkZXIsIEZ1bmN0aW9uPHZvCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PnJlcXVlc3RJbnRlcmNlcHRlZChyZXF1ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1
ZXN0KGxvYWRlci5yZXF1ZXN0KCkpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIp
Cit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1f
ZW5hYmxlZCk7CiAgICAgQVNTRVJUKG1faW50ZXJjZXB0aW9uRW5hYmxlZCk7CkBAIC0xMjQzLDcg
KzEyNDMsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShjb25zdAogICAgICAgICBvdmVycmlkZVJlc3Bv
bnNlLnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIG92ZXJy
aWRlUmVzcG9uc2UubWltZVR5cGUoKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gb3ZlcnJpZGVEYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdmVy
cmlkZURhdGE7CiAgICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIg
PSBiYXNlNjREZWNvZGUoY29udGVudCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTI3MSw3
ICsxMjcxLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29y
a0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnMKICAgICBpZiAobG9hZGVyLT5yZWFj
aGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJs
ZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zKTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0
byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVudCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpA
QCAtMTQwNywxMiArMTQwNywxMiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVk
UmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3RyaQogICAgICAgICBp
ZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1l
VHlwZSgpKSkgewogICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNw
b25zZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7CiAgICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9
IGZhbHNlOwotICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVj
b2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAg
ICAgICAgKmJhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5j
b2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJl
c3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5oCmluZGV4IDhmNmZiY2MyOTNhZWJmOGI5ZDVjOTQ1ZDI4MjlhMTUyN2I3NGJjN2Yu
LjZiY2Q4N2RkY2Q4YjA0NDEzMDhkMWQwMWVjYTZiMGU2ZGExNDEzZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
aApAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICBib29sIHdpbGxJbnRlcmNlcHQoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4pPiYmKTsKKyAgICB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYp
OwogICAgIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZv
aWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwogCiAgICAgdm9pZCBzZWFyY2hPdGhlclJl
cXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mLCBSZWY8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYpOwpAQCAtMTg1
LDcgKzE4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBlbmRp
bmdJbnRlcmNlcHRSZXNwb25zZSk7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIHB1YmxpYzoKLSAgICAgICAgUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIG9yaWdpbmFsUmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICAgICAgUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIG9yaWdpbmFsUmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiAgICAgICAgICAgICA6IG1fb3JpZ2luYWxSZXNwb25zZShvcmlnaW5h
bFJlc3BvbnNlKQogICAgICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQogICAgICAgICB7IH0KQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgcmVzcG9uZChtX29yaWdpbmFsUmVzcG9uc2UsIG51bGxwdHIpOwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCByZXNwb25kKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhKQorICAgICAgICB2b2lkIHJlc3BvbmQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBkYXRhKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIW1fcmVzcG9uZGVk
KTsKICAgICAgICAgICAgIGlmIChtX3Jlc3BvbmRlZCkKQEAgLTIxNSw3ICsyMTUsNyBAQCBwcml2
YXRlOgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBtX29yaWdpbmFs
UmVzcG9uc2U7Ci0gICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAg
ICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKICAgICAg
ICAgYm9vbCBtX3Jlc3BvbmRlZCB7IGZhbHNlIH07CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4
IDNkYWZlNjQzN2RmMTIxMDQwNWZlZmJmMzc1Nzg1ZmVjZDVlYWM0NzIuLjFiNjQ2YWEyMTczYWI1
NGEzZjFhYmRjYjUwMjA0YWRlOThjMDczYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEwMCwxNSArMTAw
LDE1IEBAIHN0YXRpYyBib29sIGRlY29kZUJ1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHVu
c2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50
OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2Rl
LCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBm
cmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghYnVmZmVyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0
YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQo
KS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gSW5z
cGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRo
QmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCi1ib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hh
cmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVz
dWx0KQorYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAg
cmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5j
b2RlLCByZXN1bHQpOworICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgp
IDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAog
Ym9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRo
QmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIElu
c3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KFByb3RvY29sOjpFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIEZyYQogICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBpZiAoZXF1
YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwsIGxvYWRlci0+dXJsKCkpKSB7CiAgICAg
ICAgICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCBiNTFhZGRiMWJkOGYyY2Nl
Njk1NjA3OTljZDFkOTUyZDJkZTQyODM4Li4zZDVlNTY2ZGJlMGM1ZWMxMWQ5ZThkZjY3ZmNmMGE3
MDk4OGEyZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgSW5zcGVjdG9yQ2xp
ZW50OwogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJP
YmplY3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdl
bnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JQYWdlQWdlbnQpOwpAQCAtNzUsNyAr
NzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIE90aGVyUmVzb3VyY2UsCiAgICAgfTsKIAotICAgIHN0
YXRpYyBib29sIHNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmlu
ZyogcmVzdWx0KTsKKyAgICBzdGF0aWMgYm9vbCBzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwogICAgIHN0YXRpYyBWZWN0
b3I8Q2FjaGVkUmVzb3VyY2UqPiBjYWNoZWRSZXNvdXJjZXNGb3JGcmFtZShGcmFtZSopOwogICAg
IHN0YXRpYyB2b2lkIHJlc291cmNlQ29udGVudChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0
cmluZyYsIEZyYW1lKiwgY29uc3QgVVJMJiwgU3RyaW5nKiByZXN1bHQsIGJvb2wqIGJhc2U2NEVu
Y29kZWQpOwogICAgIHN0YXRpYyBTdHJpbmcgc291cmNlTWFwVVJMRm9yUmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCBi
NGU2YTNhNTNiNGMwYzBkYTFjMzE3MmRkNDJjYWU2YThjZDIxZjdhLi42YWU1MjY1OTdjZDI4NjMx
YmU3OTUwZmMzMzUzNmY4ZjM0N2Q3YWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVy
UmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NFUlQobV9zdGF0
ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQ
b2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICBpZiAoYXV0
byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICBt
X2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+
ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGllbnQuZGF0YVJl
Y2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBV
UkwmIGJsb2NrZWRQYWdlVVJMKCkKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIENvbnRlbnRGaWx0
ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCiB7CiAgICAgQVNTRVJUKHdpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9y
KSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEgeyBtX2Jsb2Nr
aW5nQ29udGVudEZpbHRlci0+cmVwbGFjZW1lbnREYXRhKCkgfTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhIHsgbV9ibG9ja2luZ0NvbnRlbnRGaWx0
ZXItPnJlcGxhY2VtZW50RGF0YSgpIH07CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7
IFVSTCgpLCAidGV4dC9odG1sIl9zLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHJlcGxhY2VtZW50
RGF0YS0+c2l6ZSgpKSwgIlVURi04Il9zIH07CiAgICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0
ZURhdGEgeyBXVEZNb3ZlKHJlcGxhY2VtZW50RGF0YSksIGVycm9yLmZhaWxpbmdVUkwoKSwgcmVz
cG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OkhpZGRlbiB9
OwogICAgIFNldEZvclNjb3BlPGJvb2w+IGxvYWRpbmdCbG9ja2VkUGFnZSB7IG1faXNMb2FkaW5n
QmxvY2tlZFBhZ2UsIHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCmluZGV4IGMzZDg0NTBmNzFjMmMzNzNkMmFmMWNjY2ZiMjE1YWQ4MWJmODBkMGIuLjNiOTBl
ZjRjNTgyN2U2YzBiNDliMzQ2NTZiM2NkNzFhOGVkYTk2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIERvY3VtZW50TG9hZGVy
Ojp+RG9jdW1lbnRMb2FkZXIoKQogI2VuZGlmCiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IERv
Y3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSgpIGNvbnN0CiB7
CiAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbV9z
dWJzdGl0dXRlRGF0YS5jb250ZW50KCktPmNvcHkoKTsKQEAgLTE2MDgsMTEgKzE2MDgsMTEgQEAg
Ym9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBhZGRBbGxBcmNo
aXZlUmVzb3VyY2VzKCptX2FyY2hpdmUpOwogICAgIEFTU0VSVChtX2FyY2hpdmUtPm1haW5SZXNv
dXJjZSgpKTsKICAgICBhdXRvJiBtYWluUmVzb3VyY2UgPSAqbV9hcmNoaXZlLT5tYWluUmVzb3Vy
Y2UoKTsKLSAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gJm1haW5SZXNvdXJjZS5kYXRhKCk7Cisg
ICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9IG1haW5SZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3Vv
dXMoKTsKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7
CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YShtYWlu
UmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOworICAg
IGNvbW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0
YSgpLnNpemUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTE2NzEsNyArMTY3
MSw3IEBAIEFyY2hpdmVSZXNvdXJjZSogRG9jdW1lbnRMb2FkZXI6OmFyY2hpdmVSZXNvdXJjZUZv
clVSTChjb25zdCBVUkwmIHVybCkgY29uc3QKIAogUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9j
dW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZSgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gZGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAg
ICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8mIHJlc3BvbnNl
ID0gdGhpcy0+cmVzcG9uc2UoKTsKQEAgLTIyNTUsOCArMjI1NSw4IEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQoKQogCiAgICAgZnJhbWVM
b2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7
Ci0gICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXpl
KCkpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBt
YWluUmVzb3VyY2VEYXRhKCk7CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3Vt
ZW50TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKQEAgLTIyOTIsNyArMjI5Miw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQogICAgIG1fZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLmdldExvYWREZWNpc2lvbkZvckljb25zKGljb25EZWNpc2lvbnMpOwogfQogCi12
b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNp
b24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJl
ZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGlk
R2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBpY29uID0gbV9pY29uc1BlbmRpbmdMb2Fk
RGVjaXNpb24udGFrZShsb2FkSWRlbnRpZmllcik7CiAKQEAgLTIzMTMsNyArMjMxMyw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lv
biwgdWludDY0X3QgbG9hZElkZW50CiAgICAgcmF3SWNvbkxvYWRlci0+c3RhcnRMb2FkaW5nKCk7
CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRl
ciYgbG9hZGVyLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmZp
bmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYgbG9hZGVyLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBidWZmZXIpCiB7CiAgICAgLy8gSWYgdGhlIERvY3VtZW50TG9hZGVyIGhhcyBkZXRhY2hl
ZCBmcm9tIGl0cyBmcmFtZSwgYWxsIGljb24gbG9hZHMgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVu
IGNhbmNlbGxlZC4KICAgICBBU1NFUlQobV9mcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCmluZGV4IGZiZjU0NWM0NjBlNGU0ODlkODdiMjVjMGU4NWVjY2NhNGNiZjNj
ODcuLjMzOTg3M2Q1ZDNmYjliYjMwMDQ5OGNkNmYzN2NiZjY1Yjc4YWY1YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENh
Y2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZpbHRlcjsKK2NsYXNzIFNoYXJlZEJ1
ZmZlcjsKIHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFz
cyBGcmFtZTsKQEAgLTgzLDcgKzg0LDcgQEAgY2xhc3MgSWNvbkxvYWRlcjsKIGNsYXNzIFBhZ2U7
CiBjbGFzcyBQcmV2aWV3Q29udmVydGVyOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU1dDbGll
bnRDb25uZWN0aW9uOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTdWJzdGl0dXRl
UmVzb3VyY2U7CkBAIC0xNzEsNyArMTcyLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
U3VicmVzb3VyY2VMb2FkZXIqIG1haW5SZXNvdXJjZUxvYWRlcigpIGNvbnN0OwotICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJl
c291cmNlRGF0YSgpIGNvbnN0OwogICAgIAogICAgIERvY3VtZW50V3JpdGVyJiB3cml0ZXIoKSBj
b25zdCB7IHJldHVybiBtX3dyaXRlcjsgfQogCkBAIC0zOTIsOCArMzkzLDggQEAgcHVibGljOgog
I2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0SWNvbkxvYWRpbmcoKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3Qg
bG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYp
OwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgU2hhcmVkQnVmZmVy
Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJv
b2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRp
bmdJY29uKEljb25Mb2FkZXImLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICAgICBjb25z
dCBWZWN0b3I8TGlua0ljb24+JiBsaW5rSWNvbnMoKSBjb25zdCB7IHJldHVybiBtX2xpbmtJY29u
czsgfQogCkBAIC02MjEsNyArNjIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fd2FpdGluZ0Zv
ck5hdmlnYXRpb25Qb2xpY3kgeyBmYWxzZSB9OwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgTGlu
a0ljb24+IG1faWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uOwotICAgIEhhc2hNYXA8c3RkOjp1bmlx
dWVfcHRyPEljb25Mb2FkZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciop
Pj4gbV9pY29uTG9hZGVyczsKKyAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVy
PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+PiBtX2lj
b25Mb2FkZXJzOwogICAgIFZlY3RvcjxMaW5rSWNvbj4gbV9saW5rSWNvbnM7CiAKICNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmlu
ZGV4IGUxM2UyODZlMTRmNGZlOGZkN2RmOTBhMGUxNTFmMDkzNDE4ZGRkYjEuLjA4YTBhZTE5YTM3
OTg0NmYxNTc1NjRjMmQwYzgzMmIyNzQ4MzYwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNsYXNzIENh
Y2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50OwogY2xh
c3MgRG9jdW1lbnRMb2FkZXI7CkBAIC03Niw3ICs3Nyw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3Mg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3Rp
dHV0ZURhdGE7CiAKIGVudW0gY2xhc3MgQ2FjaGVQb2xpY3kgOiB1aW50OF90OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA0ZmQ2MzdhOTAxNGE1ZDQxYTIy
NmVlNDU5MTdiNmIzZTlhNzkwZWJiLi5lZTlmM2QwYzk4NGQ0NTVjYmI5MWI0NjBjMWJjMTI4OThk
MTIzNjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAt
OTgsNyArOTgsNyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJz
dGl0dXRlRGF0YTsKIGNsYXNzIFdpZGdldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3Ry
YXRlZ3kuaAppbmRleCBhZWY2NjhiZDYzZWQ1ZmNkNDVlNjFlOWQxZjEwN2NmYjZhZWYyNjRiLi4y
OWQyZTNmNDYxNDBhYWE1MTE2MGU2YTI4NTYyZjM3MGUzNzFlYjIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBSZXNvdXJjZUxv
YWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBj
bGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIAogc3RydWN0IEZldGNo
T3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIuY3BwCmluZGV4IDYzMzc1NTk2MzIwMDE0NjM4Mjg5ZTI4MjYwNGM1NWIwYWY0
NDUzMTMuLjYwNDNhYzliZTI2N2VhNGZiYzcxZTExMThiOTA3OTE1NWUzOTE1MDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNw
cApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGUKICAgICBkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5n
dGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3Zv
aWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBk
YXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQog
ewogICAgIFJlZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhp
cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyLmgKaW5kZXggNDhiYjIxNTNjOTNmMmRjNzU0ZTIwNzMyMjUyYzA1MDljZjcwNGE0MS4u
YjUxNzRlZGM5NGI5OTIzOTAyMDVmMGZhZDQ1MmVhNWFjMzg3ODkzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKQEAgLTYzLDcg
KzYzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApAQCAtNzQsNyArNzQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBp
bnQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKIAogICAgIHZvaWQgbm90aWZ5
RG9uZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlw
dG9ncmFwaGljRGlnZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3QuY3BwCmluZGV4IGM2Mjc3Njg1OGE2ZGM1YWZmZDM2ZGM5ZTc4NWM4YmQy
NDcyYmI3NGQuLmQ5NGI3MDAwNzQxY2Q5MTJiOTE3M2UyYjM3NDZkNGRhOGIzNjhhNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdl
c3QuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNy
eXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWcKICAgICBy
ZXR1cm4geyBhbGdvcml0aG0sIGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKSB9OwogfQogCi1S
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1
ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0sIGNv
bnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNy
eXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZmZXIoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBi
dWZmZXIpCiB7CiAgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3Jl
YXRlKHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGFsZ29yaXRobSkpOwogICAgIGlmIChidWZmZXIp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3QuaAppbmRleCBhZWEzZGM1N2M4NzgzMTMwMTNhNWIxNmM5MzliNzc0ZWQ0ODQzMjRjLi44
M2I4NjEzY2ZkYTIzMjlhZTMwYmJmNmFiYzE0Yjk5ZDQ0MjM3YjAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCkBAIC0zNCw3
ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFJlc291cmNlOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3Ry
dWN0IFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCB7CiAgICAgZW51bSBjbGFzcyBBbGdvcml0
aG0gewpAQCAtNzUsNyArNzUsNyBAQCBzdGQ6Om9wdGlvbmFsPEVuY29kZWRSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3Q+IHBhcnNlRW5jb2RlZENyeXB0b2dyYXBoaWNEaWdlcwogCiBzdGQ6Om9w
dGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gZGVjb2RlRW5jb2RlZFJlc291cmNl
Q3J5cHRvZ3JhcGhpY0RpZ2VzdChjb25zdCBFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0Jik7CiAKLVJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0
Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBj
b25zdCBTaGFyZWRCdWZmZXIqKTsKK1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9n
cmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6
QWxnb3JpdGhtLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiBSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvckJ5dGVzKFJlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBjb25zdCB2b2lkKiBieXRlcywgc2l6ZV90IGxlbmd0
aCk7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGFh
ODViYjRkM2NhODcxNDViYjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLmRmMTM5NTg4ZThkNTI1MmIz
ZWVjNjE5M2FlNjFhYTI0Nzg2YjIxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcApAQCAtNzYsNiArNzYsNyBAQCBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9J
REVOVElGSUVSKFJlc291cmNlTG9hZGVyKTsKIFJlc291cmNlTG9hZGVyOjpSZXNvdXJjZUxvYWRl
cihGcmFtZSYgZnJhbWUsIFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zKQogICAgIDogbV9m
cmFtZSB7ICZmcmFtZSB9CiAgICAgLCBtX2RvY3VtZW50TG9hZGVyIHsgZnJhbWUubG9hZGVyKCku
YWN0aXZlRG9jdW1lbnRMb2FkZXIoKSB9CisgICAgLCBtX3Jlc291cmNlRGF0YSB7IG1ha2VVbmlx
dWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX2RlZmVyc0xvYWRpbmcgeyBv
cHRpb25zLmRlZmVyc0xvYWRpbmdQb2xpY3kgPT0gRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dE
ZWZlcnNMb2FkaW5nICYmIGZyYW1lLnBhZ2UoKS0+ZGVmZXJzTG9hZGluZygpIH0KICAgICAsIG1f
b3B0aW9ucyB7IG9wdGlvbnMgfQogewpAQCAtMTE4LDcgKzExOSw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMoKQogCiAgICAgbV9pZGVudGlmaWVyID0geyB9OwogCi0g
ICAgbV9yZXNvdXJjZURhdGEgPSBudWxscHRyOworICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgp
OwogICAgIG1fZGVmZXJyZWRSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiB9CiAKQEAgLTE4
OSw3ICsxOTAsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjppbml0KFJlc291cmNlUmVxdWVzdCYm
IGNsaWVudFJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaQogICAgIH0pOwogfQogCi12b2lk
IFJlc291cmNlTG9hZGVyOjpkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUmVz
b3VyY2VMb2FkZXI6OmRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsK
ICAgICBkaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpXSgpIG11dGFibGUgewogICAg
ICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKQEAgLTMxOCw3ICszMTksNyBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KERhdGFCdWZmZXJpbmdQb2xp
Y3kgZGF0YUJ1ZmZlcmluZ1BvbAogCiAgICAgLy8gUmVzZXQgYW55IGFscmVhZHkgYnVmZmVyZWQg
ZGF0YQogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkRvTm90QnVmZmVyRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBudWxscHRyOworICAg
ICAgICBtX3Jlc291cmNlRGF0YS0+cmVzZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6
d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKQEAgLTMyOSwyOSArMzMwLDI5IEBAIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSgpCiAgICAg
ICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0
YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmVkQnVm
ZmVyKiBidWZmZXIsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291
cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIERhdGFQYXlsb2FkVHlwZSBk
YXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgaWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5
ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKCFtX3Jlc291cmNlRGF0YSB8fCBkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBh
eWxvYWRXaG9sZVJlc291cmNlKSB7Ci0gICAgICAgIGlmIChidWZmZXIpCi0gICAgICAgICAgICBt
X3Jlc291cmNlRGF0YSA9IGJ1ZmZlcjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9yZXNv
dXJjZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIAorICAgIGlmIChkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBheWxv
YWRXaG9sZVJlc291cmNlKQorICAgICAgICBtX3Jlc291cmNlRGF0YS0+cmVzZXQoKTsKKwogICAg
IGlmIChidWZmZXIpCiAgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoKmJ1ZmZlcik7CiAg
ICAgZWxzZQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9
CiAKK2NvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJj
ZURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS0+Z2V0KCkuZ2V0KCk7
Cit9CisKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVzb3VyY2VEYXRhKCkKIHsKLSAgICBp
ZiAobV9yZXNvdXJjZURhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhLT5jbGVhcigpOworICAg
IGlmICghbV9yZXNvdXJjZURhdGEtPmlzTnVsbCgpKQorICAgICAgICBtX3Jlc291cmNlRGF0YS0+
ZW1wdHkoKTsKIH0KIAogYm9vbCBSZXNvdXJjZUxvYWRlcjo6aXNTdWJyZXNvdXJjZUxvYWRlcigp
IGNvbnN0CkBAIC01NTEsMTQgKzU1MiwxNCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbAogICAg
IGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0
YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRh
dGFQYXlsb2FkVHlwZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAs
IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9
CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxv
YWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5
IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEgU2hhcmVkQnVmZmVyLgorICAgIC8vIFRoaXMgbWV0aG9k
IHNob3VsZCBvbmx5IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ci4KICAgICBBU1NFUlQoIWJ1ZmZlciB8fCAoIWRhdGEgJiYgIWxlbmd0aCkpOwogCiAgICAgLy8g
UHJvdGVjdCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFs
IHByb2Nlc3NpbmcgY2FuIGRvCkBAIC01NzEsNyArNTcyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgKICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3Jr
aW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAgLy8gQ291bGQg
YmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZpbGUuCiAgICAgaWYgKG1fb3B0aW9ucy5z
ZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3MgJiYg
bV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0
YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+
c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7Cisg
ICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVm
ZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0
aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpAQCAtNzM1LDcgKzczNiw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduCiAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3Ro
LCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKLXZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGRpZFJlY2Vp
dmVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRC
eXRlcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRmZDJi
ZjBiYmIzYjFiZDIxNTQ1ZGI1MmMyZTFjYTY0ZWU0MmI5MTcuLjU0YjFiODY2ZGY4OTZhODRiNGNh
Mjk3ZWU0NzZkNmQwYjY2MWZkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtNTUsNiArNTYsOCBAQCBjbGFzcyBGcmFtZTsK
IGNsYXNzIEZyYW1lTG9hZGVyOwogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlcjsKIGNsYXNzIE5l
dHdvcmtMb2FkTWV0cmljczsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBT
aGFyZWRCdWZmZXJCdWlsZGVyOwogCiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJ
RklFUihSZXNvdXJjZUxvYWRlcik7CiBjbGFzcyBSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4sIHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlTG9h
ZGVyPiwgcHJvdGVjdGVkIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKQEAgLTY2LDcgKzY5LDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluaXQoUmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCi0gICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VB
bmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsK
KyAgICB2b2lkIGRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0TG9hZGluZygpCkBAIC05OCw3ICsxMDEsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsKICAgICBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7
IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBy
ZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAg
CiAgICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKQEAgLTEwNyw3
ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVk
IGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNl
bnQpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFu
ZGxlcik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1
bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIApAQCAtMTY2LDcgKzE2
OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgd2FzQ2FuY2VsbGVkKCkgY29uc3QgeyByZXR1
cm4gbV9jYW5jZWxsYXRpb25TdGF0dXMgPj0gQ2FuY2VsbGVkOyB9CiAKLSAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAgICAKICAgICB2b2lkIHNldFJlZmVycmVyUG9s
aWN5KFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KSB7IG1fb3B0aW9ucy5yZWZlcnJlclBv
bGljeSA9IHJlZmVycmVyUG9saWN5OyB9CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xp
Y3koKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3k7IH0KQEAgLTE5MSw3
ICsxOTQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNv
dXJjZUVycm9yJikgPSAwOwogCi0gICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCosIHVuc2lnbmVkLCBTaGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQg
YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciosIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdm9pZCBsb2FkRGF0YVVSTCgpOwogICAg
IHZvaWQgZmluaXNoTmV0d29ya0xvYWQoKTsKIApAQCAtMjAyLDcgKzIwNSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291
cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1
ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0
aCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFu
ZGxlKikgb3ZlcnJpZGU7CkBAIC0yMjcsNyArMjMwLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291
cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1
ZXN0OyAvLyBCZWZvcmUgcmVkaXJlY3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcmVz
b3VyY2VEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3Jlc291cmNl
RGF0YTsKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNl
ZmJkZjlkYTE3ODk5N2VkY2I5ZjM1NDRmNDg4NGI2MGE2ZWZlLi4zN2QwYmI4MjFhYmQ4NmE5YjU2
MDZlMTI3ZWZjOTQxMmE1MWJiMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxv
bgogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNv
ZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQor
dm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBh
eWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBp
ZiAoYXV0byBwcmV2aWV3TG9hZGVyID0gbV9wcmV2aWV3TG9hZGVyLmdldCgpKSB7CkBAIC01NDIs
NyArNTQyLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGUKICAgICBkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRh
dGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgQVNTRVJUKG1fcmVz
b3VyY2UpOwogCkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAg
ICAgICBpZiAoYXV0byogcmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAg
ICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVy
LT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAg
ICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApp
bmRleCAzNzIzYjZiOWFiOWZkZGFhYTU1NzRiZmIwZTZmMzhjZWQ3YWVmYjc1Li44MzJjOWYwZTcz
ZDM4NDY0YTc5NWY0MDM4NjBmNzljMzRlNzNiYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBs
b25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgRXhwZWN0ZWQ8
dm9pZCwgU3RyaW5nPiBjaGVja1Jlc3BvbnNlQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVk
aXJlY3Rpb25Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBw
cmV2aW91c1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZVJlcXVlc3Qm
IG5ld1JlcXVlc3QpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqLCBpbnQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKIAogICAgIHZv
aWQgbm90aWZ5RG9uZShMb2FkQ29tcGxldGlvblR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJzdGl0dXRlRGF0YS5oCmluZGV4IGY2NjI5MmUzMWNiZWI0MjY0MzBhODMyYWRlZjQyOTkxY2I1
NzQzNmUuLmE4YTQ5YjQ3ZjkyNzM0Mjc0YmE0Y2VhYmMxNzA3ZmVmYTdiNjY0MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgU3Vic3RpdHV0ZURh
dGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBjb250ZW50LCBjb25zdCBVUkwmIGZhaWxpbmdVUkws
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTZXNzaW9uSGlzdG9yeVZpc2liaWxp
dHkgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSkKKyAgICAgICAgU3Vic3RpdHV0ZURhdGEo
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY29udGVudCwgY29uc3QgVVJMJiBmYWls
aW5nVVJMLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgU2Vzc2lvbkhpc3RvcnlW
aXNpYmlsaXR5IHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkpCiAgICAgICAgICAgICA6IG1f
Y29udGVudChXVEZNb3ZlKGNvbnRlbnQpKQogICAgICAgICAgICAgLCBtX2ZhaWxpbmdVUkwoZmFp
bGluZ1VSTCkKICAgICAgICAgICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKQEAgLTU0LDE0ICs1
NCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGVudCAhPSBudWxscHRyOyB9CiAgICAgICAgIGJvb2wgc2hvdWxkUmV2
ZWFsVG9TZXNzaW9uSGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUmV2ZWFsVG9TZXNz
aW9uSGlzdG9yeSA9PSBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OlZpc2libGU7IH0KIAotICAg
ICAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRl
bnQuZ2V0KCk7IH0KKyAgICAgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogY29udGVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudC5nZXQoKTsgfQogICAgICAgICBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS5taW1lVHlwZSgpOyB9CiAg
ICAgICAgIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZXNw
b25zZS50ZXh0RW5jb2RpbmdOYW1lKCk7IH0KICAgICAgICAgY29uc3QgVVJMJiBmYWlsaW5nVVJM
KCkgY29uc3QgeyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9CiAgICAgICAgIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAgICAg
ICAKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7
CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7CiAgICAg
ICAgIFVSTCBtX2ZhaWxpbmdVUkw7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25z
ZTsKICAgICAgICAgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IG1fc2hvdWxkUmV2ZWFsVG9TZXNz
aW9uSGlzdG9yeSB7IFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVuIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXggNTk2NjRiNTg1NGY4NWIw
MmNkZjM0OTAyMGEwZWZmMTNlYjc4ODg3OS4uY2YyZGUwYzYyZDk1ZjMzMjViNDJiNDZlMjQwMzc3
NDQxMDc0MmEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVS
ZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2Uu
aApAQCAtMzcsMTIgKzM3LDE0IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29u
c3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICBTaGFyZWRCdWZmZXImIGRhdGEo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihtX2Rh
dGEpOyB9CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19yZWZlcmVuY2VfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihSZWYgeyAqbV9k
YXRhLmdldCgpIH0pOyB9CisgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7IH0KKyAgICB2b2lkIGNsZWFy
KCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3Vy
Y2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3Bv
bnNlLCBtX2RhdGEtPmNvcHkoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJj
ZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9u
c2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBTdWJzdGl0dXRlUmVzb3Vy
Y2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSkKKyAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJl
c3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiAg
ICAgICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQogICAgICAgICAsIG1fcmVzcG9uc2UoV1RGTW92
ZShyZXNwb25zZSkpCiAgICAgICAgICwgbV9kYXRhKFdURk1vdmUoZGF0YSkpCkBAIC01Miw3ICs1
NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgVVJMIG1fdXJsOwogICAgIFJlc291cmNl
UmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwCmluZGV4IDg5ZjNiMGYxZGMzOWQ0MGE1NjM4NzhhZTU1Zjc2YzY3MGE3
MTUwOTEuLjAzNmVmZDIwZTQ5NjMwMGNmOGM5ZTdlNzkwMzE3ZTAxZGU1YmFmMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAg
YXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RV
UkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0
UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUo
KSk7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1f
bWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBt
X21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fbWFu
aWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CiAgICAgaWYgKCFtYW5pZmVzdCkgewogICAg
ICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklG
RVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZh
aWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2Fj
aGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hF
IE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA2MDMyODE4ODgzNzVmNDRhNjI0YjNl
M2IzYWFmZTA2YTM2ODkyZWU2Li41MTk3OGY0MTIzODc0ZGM1NjYwZWZmNDcwNjU5NzA3ZDRlNWQ4
NWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1NSwxMCArMjU1LDggQEAgVVJMIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKIAogc3RhdGljIGlu
bGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25D
YWNoZVJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJs
eSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUg
dGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBi
ZSBtb2RpZmllZC4KICAgICBpZiAocmVzb3VyY2UucGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIHJlc291cmNlLmRhdGEoKS5jb3B5KCk7CisgICAgICAgIHJldHVybiByZXNvdXJjZS5k
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKIH0KIApAQCAtMjkwLDkgKzI4OCw3
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25v
dXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZSogcmVzb3VyY2U7CiAgICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tS
ZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVz
b3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9hYmx5
IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAgLy8g
UmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2ls
bCBub3QgYmUgbW9kaWZpZWQuCi0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5j
b3B5KCk7CisgICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTczNmE3
MTg2NTY3NzI0ODYxMWUwOGY2NjNiMjlmLi5iOTYzNTZlNzg1NjEzODk1NmFlNGMwNTk4MzE3MGNk
ZjcyMzY3MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25D
YWNoZVJlc291cmNlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2Fk
ZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcgKzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRh
OwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmlu
ZGV4IGYxZjdlMTc1NjMwMTQ3MWYzMDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLjJiYjNmZTc1Yjk5
NzdlODMzMjJhZTI1ODBmNzIxMmVlNWJmMjE2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBA
IC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZT4gQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXRoKQorUmVmPEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25l
ZCB0eXBlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQoIXVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7
CiAgICAgaWYgKCFidWZmZXIpCkBAIC00MCw3ICs0MCw3IEBAIFJlZjxBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJs
LCBjCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVS
TCB7IHVybCB9LCBXVEZNb3ZlKHJlc291cmNlUmVzcG9uc2UpLCB0eXBlLCBidWZmZXIucmVsZWFz
ZU5vbk51bGwoKSwgcGF0aCkpOwogfQogCi1BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25z
ZSwgdW5zaWduZWQgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcm
IHBhdGgpCitBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQog
ICAgIDogU3Vic3RpdHV0ZVJlc291cmNlKFdURk1vdmUodXJsKSwgV1RGTW92ZShyZXNwb25zZSks
IFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fc3RvcmFnZUlEKDAp
CkBAIC01MSw3ICs1MSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25D
YWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0g
ICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1w
dHkoKSA/IGRhdGEoKS5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShtX3BhdGgpKTsKKyAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25z
ZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291
cmNlLmgKaW5kZXggODhjOTRkZTFhNzc0MTA0NjljOTMxYTQyYTQ3OWIxZTY3NzdhNzAyZS4uYzI4
OGU3MDM2YzY3NjJhZDQ4NzZiYTg4MTQ2OWE3NWQyMjM3ZTFiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uu
aApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZhbGxiYWNrID0gMSA8PCA0CiAg
ICAgfTsKIAotICAgIHN0YXRpYyBSZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUo
Y29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIHR5cGUsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcm
IHBhdGggPSBTdHJpbmcoKSk7CisgICAgc3RhdGljIFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQg
dHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJpbmcoKSk7CiAKICAgICB1bnNpZ25lZCB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgdm9pZCBhZGRUeXBlKHVuc2lnbmVk
IHR5cGUpOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAKIHByaXZhdGU6
Ci0gICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYs
IHVuc2lnbmVkIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgcGF0aCk7
CisgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYs
IHVuc2lnbmVkIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJp
bmcmIHBhdGgpOwogCiAgICAgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJikgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1MDg0N2E2ZTg5NTE3
ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1
MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwMSw3
ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNl
LT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNl
UmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUzYzQ5OTAyNDBhNTIwYmQzMGU2MzY1OTUuLjhj
ZjA1Y2NlMTg4MDEyOGRlNTliZTcwYTk5ODM2ZjVhNzQ1YjZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0
b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgYXV0
byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5U
TyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/LCA/KSJfcyk7CiAgICAg
aWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCiAKICAgICBT
dHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgpLmlzRW1wdHkoKSkKQEAg
LTgxNSw3ICs4MTQsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgICAgICBkYXRhU3Rh
dGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAocmVz
b3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxv
YigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRC
bG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSk7CiAgICAgfQog
ICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1hbmQoKSkgewpAQCAtODcz
LDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAKICAgICBpZiAoIWV4
ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFsdWUoKSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNjZXNzZnVsbHkgd3JpdGUgdGhlIHJlc291
cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAvLyByZWxlYXNlIHRoZSByZXNvdXJjZSdz
IGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91bnQKICAgICAvLyBvZiBt
ZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJlc291cmNlLT5k
YXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7CiAKICAgICByZXNvdXJj
ZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTI3Myw3
ICsxMjcyLDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c2hvdWxkU3RvcmVSZXNv
dXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNoZVJlc28KICAgICByZXR1cm4gc3RhcnRzV2l0
aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAiYXVkaW8vIikgfHwgc3RhcnRzV2l0aExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAidmlkZW8vIik7CiB9CiAgICAgCi1ib29sIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShT
aGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbikKK2Jvb2wgQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgZmlsZUV4dGVuc2lvbikKIHsKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5oCmluZGV4IDlhOTUzMDA4NzY2YTg4ODU1NjFiMzQ4ODg5YjhjZWRhMmIyZWIzMzgu
LjQxMDJhMTgwOGI0NTU1N2I2NDVlMzZlN2U2ODFmYzRjNmQyMDdjZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNz
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwog
Y2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0b3JhZ2VJREpvdXJu
YWw7CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U+IHsKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgZW5zdXJlT3JpZ2luUmVjb3JkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKik7CiAgICAg
c3RhdGljIGJvb2wgc2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlKik7CiAgICAgdm9pZCBkZWxldGVUYWJsZXMoKTsKLSAgICBib29sIHdyaXRlRGF0
YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24p
OworICAgIGJvb2wgd3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pOwogCiAgICAgdm9pZCBsb2FkTWFuaWZlc3RI
b3N0SGFzaGVzKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9B
cmNoaXZlRmFjdG9yeS5jcHAKaW5kZXggNmRlODBjMTBhYzdkMjVjZjM0NjlmNmRlZjBmYWY3MjQx
ZjU5NjQyOC4uNGVmOWNkNjZiZDA4OGI3NGMwNDZjMDY5MGQxZTlkM2U1ZTMzNjBmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcApAQCAt
NDYsMTIgKzQ2LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBSZWZQdHI8
QXJjaGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24oY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVy
Jik7Cit0eXBlZGVmIFJlZlB0cjxBcmNoaXZlPiBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbihjb25z
dCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5n
LCBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbiosIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gQXJj
aGl2ZU1JTUVUeXBlc01hcDsKIAogLy8gVGhlIGNyZWF0ZSBmdW5jdGlvbnMgaW4gdGhlIGFyY2hp
dmUgY2xhc3NlcyByZXR1cm4gUmVmUHRyIHRvIGNvbmNyZXRlIHN1YmNsYXNzZXMKIC8vIG9mIEFy
Y2hpdmUuIFRoaXMgYWRhcHRvciBtYWtlcyB0aGUgZnVuY3Rpb25zIGhhdmUgYSB1bmlmb3JtIHJl
dHVybiB0eXBlLgotdGVtcGxhdGU8dHlwZW5hbWUgQXJjaGl2ZUNsYXNzPiBzdGF0aWMgUmVmUHRy
PEFyY2hpdmU+IGFyY2hpdmVGYWN0b3J5Q3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK3RlbXBsYXRlPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0
cjxBcmNoaXZlPiBhcmNoaXZlRmFjdG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHJldHVybiBBcmNoaXZlQ2xhc3M6OmNyZWF0
ZSh1cmwsIGJ1ZmZlcik7CiB9CkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgQXJjaGl2ZUZhY3Rvcnk6
OmlzQXJjaGl2ZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuICFt
aW1lVHlwZS5pc0VtcHR5KCkgJiYgYXJjaGl2ZU1JTUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBl
KTsKIH0KIAotUmVmUHRyPEFyY2hpdmU+IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgVVJM
JiB1cmwsIFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK1JlZlB0
cjxBcmNoaXZlPiBBcmNoaXZlRmFjdG9yeTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaAppbmRleCAyMWQyMzY1Y2Y4ZDlkOTAxZWZlN2Fh
ZDU1MmJmM2RhNDA2OWZlNDBkLi41NTY0NTE1YzllMGQ5ZDAzM2I3OTBjNzQ3Mjg1YTI1ODUzYWJl
MDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFj
dG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5
LmgKQEAgLTM0LDEyICszNCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEFyY2hp
dmVGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc0FyY2hpdmVNSU1FVHlwZShj
b25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBV
UkwmLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIHN0
YXRpYyBSZWZQdHI8QXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyS25vd25BcmNoaXZlTUlNRVR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+Jik7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvQXJjaGl2ZVJlc291cmNlLmNwcAppbmRleCBmYzIwZGEzZGEwMzJjYmVmNzRmMmU5Yzg0Mjhh
Y2I0ZWUzN2JlZjIzLi4wNzM4Mzk0YTgyODcxNGFhMGI5MGVlNzUwNzlkNDg2ZjViMGU4Njk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgQXJj
aGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKK2lubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYg
ZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IFN1YnN0
aXR1dGVSZXNvdXJjZShVUkwgeyB1cmwgfSwgUmVzb3VyY2VSZXNwb25zZSB7IHJlc3BvbnNlIH0s
IFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV90ZXh0
RW5jb2RpbmcodGV4dEVuY29kaW5nKQpAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgQXJjaGl2ZVJl
c291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBV
UkwmIHVybAogewogfQogCi1SZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6
OmNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorUmVmUHRy
PEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFkYXRhKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU0LDcgKzU0LDcgQEAgUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCBjb24KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcmNoaXZlUmVzb3VyY2UoZGF0YS5y
ZWxlYXNlTm9uTnVsbCgpLCB1cmwsIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwg
cmVzcG9uc2UpKTsKIH0KIAotUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNl
OjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBB
cmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7
CiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGRhdGEpLCB1cmwsIHJlc3BvbnNlLm1pbWVUeXBl
KCksIHJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSwgU3RyaW5nKCksIHJlc3BvbnNlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKaW5k
ZXggMjA5ZTk3MTdhZWIwOTM2MGRiMzkyN2U2ZWZhMWU1YmYxYzJjOTdjYS4uMDU0OGVmNzIxZWZk
MjdjMDBjZTkzZDEyMjcwZWNlYzQ2YzAyYWY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKQEAgLTM0LDggKzM0LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBBcmNoaXZlUmVzb3VyY2UgOiBwdWJsaWMgU3Vic3RpdHV0ZVJl
c291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3Jl
YXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gY3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsCisgICAgc3RhdGlj
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsCiAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwKICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgPSBSZXNvdXJjZVJlc3Bv
bnNlKCkpOwogCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZElnbm9y
ZVdoZW5VbmFyY2hpdmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkSWdub3JlV2hlblVuYXJj
aGl2aW5nOyB9CiAKIHByaXZhdGU6Ci0gICAgQXJjaGl2ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
dGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOworICAgIEFyY2hpdmVSZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CiAKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBTdHJpbmcgbV90ZXh0RW5jb2Rpbmc7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFy
Y2hpdmUuY3BwCmluZGV4IGRlN2RhZGRkYWMyMjEyZjZkNWUwY2MwOTFkNGU0MTY3N2EzZjAxNWQu
LjcxMTUwY2JkZDg5NjllNmFmMDI4Njg0YjZiZjZjYmMwYTUwYjJmYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBA
IC05MCw3ICs5MCw3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gUmVzb3VyY2Ug
ZGF0YSBjYW4gYmUgZW1wdHksIGJ1dCBtdXN0IGJlIHJlcHJlc2VudGVkIGJ5IGFuIGVtcHR5IENG
RGF0YVJlZgogICAgIGF1dG8mIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpOwogCi0gICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3Vy
Y2VEYXRhS2V5LCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKKyAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFL
ZXksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOwogCiAgICAg
Ly8gUmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBudWxsCiAgICAgaWYgKGF1dG8gY2ZVUkwgPSByZXNv
dXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKQEAgLTExNyw5ICsxMTcsOSBA
QCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9w
ZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIERvbid0IGluY2x1ZGUgdGhlIHJlc291
cmNlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlmICghaXNNYWluUmVzb3Vy
Y2UpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2VSZXNwb25zZURhdGEgPSBjcmVhdGVQcm9w
ZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihyZXNvdXJjZS0+cmVzcG9uc2UoKSkpCi0gICAgICAgICAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hp
dmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7ICAgIAor
ICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdh
Y3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0
KCkpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBwcm9wZXJ0eUxpc3Q7CiB9CiAKQEAgLTIx
NSwxMyArMjE1LDEzIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZVJlc291cmNlKENGRGljdGlvbmFyeVJlZiBkaWN0aW9uCiAgICAgICAgICAgICBMT0co
QXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgZGF0YSBpcyBu
b3Qgb2YgdHlwZSBDRkRhdGEsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAg
YXV0byByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihD
RkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VS
ZXNwb25zZVZlcnNpb25LZXkpKTsKICAgICAgICAgaWYgKHJlc291cmNlUmVzcG9uc2VWZXJzaW9u
ICYmIENGR2V0VHlwZUlEKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKSAhPSBDRlN0cmluZ0dldFR5
cGVJRCgpKSB7CiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0g
UmVzb3VyY2UgcmVzcG9uc2UgdmVyc2lvbiBpcyBub3Qgb2YgdHlwZSBDRlN0cmluZywgY2Fubm90
IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICByZXNwb25zZSA9IGNyZWF0ZVJlc291cmNl
UmVzcG9uc2VGcm9tUHJvcGVydHlMaXN0RGF0YShyZXNvdXJjZVJlc3BvbnNlRGF0YSwgcmVzb3Vy
Y2VSZXNwb25zZVZlcnNpb24pOwogICAgIH0KIApAQCAtMjQ4LDIzICsyNDgsMjMgQEAgUmVmPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShSZWY8QXJjaGl2ZVJlc291
cmNlPiYmIG1haW5SZXNvdXIKICAgICByZXR1cm4gYXJjaGl2ZTsKIH0KIAotUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEp
CitSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShVUkwoKSwgZGF0
YSk7CiB9CiAKLVJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhKQorUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhKQogewogICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBD
cmVhdGluZyBmcm9tIHJhdyBkYXRhIik7Ci0gICAgCisKICAgICBSZWY8TGVnYWN5V2ViQXJjaGl2
ZT4gYXJjaGl2ZSA9IGNyZWF0ZSgpOwotICAgICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBjZkRhdGEgPSBkYXRhLmNyZWF0ZUNGRGF0YSgpOworCisgICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gY2ZEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKICAgICBp
ZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIAorCiAgICAgQ0ZF
cnJvclJlZiBlcnJvciA9IG51bGxwdHI7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiBwbGlzdCA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlBy
b3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKDAsIGNmRGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0
SW1tdXRhYmxlLCAwLCAmZXJyb3IpKSk7CiAgICAgaWYgKCFwbGlzdCkgewogI2lmbmRlZiBOREVC
VUcKQEAgLTI3NiwxMiArMjc2LDEyIEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhCiAgICAgICAg
ICAgICBDRlJlbGVhc2UoZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0g
ICAgCisKICAgICBpZiAoQ0ZHZXRUeXBlSUQocGxpc3QuZ2V0KCkpICE9IENGRGljdGlvbmFyeUdl
dFR5cGVJRCgpKSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBB
cmNoaXZlIHByb3BlcnR5IGxpc3QgaXMgbm90IHRoZSBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFi
b3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9Ci0gICAgCisKICAgICBpZiAoIWFyY2hpdmUtPmV4dHJhY3QocGxpc3QuZ2V0KCkpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjk1LDcgKzI5NSw3IEBAIGJvb2wgTGVnYWN5V2Vi
QXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgTE9H
KEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE51bGwgcm9vdCBDRkRpY3Rpb25hcnksIGFi
b3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQotICAgIAorCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIG1haW5SZXNvdXJjZURpY3QgPSBzdGF0aWNf
Y2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExl
Z2FjeVdlYkFyY2hpdmVNYWluUmVzb3VyY2VLZXkpKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURp
Y3QpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5vIG1haW4g
cmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CkBAIC0z
MzMsNyArMzMzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFy
eVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdl
YkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9y
dGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKGF1dG8gc3Vi
cmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZShzdWJyZXNvdXJjZURpY3QpKQogICAgICAgICAgICAg
ICAgIGFkZFN1YnJlc291cmNlKHN1YnJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAg
ICB9CkBAIC0zNTMsNyArMzUzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENG
RGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywg
IkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJmcmFtZSBhcnJheSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0
aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAg
YXV0byBzdWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChzdWJmcmFt
ZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJhbWVEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJm
cmFtZUFyY2hpdmUoV1RGTW92ZShzdWJmcmFtZUFyY2hpdmUpKTsKQEAgLTM2MSw3ICszNjEsNyBA
QCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25h
cnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIElu
dmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBza2lwcGVkIik7CiAgICAgICAgIH0KICAgICB9Ci0gICAg
CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTA2LDcgKzUwNiw3IEBAIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJr
dXBTdHJpbmcsIEZyCiB7CiAgICAgYXV0byYgcmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwogICAgIFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNl
LnVybCgpOwotICAgIAorCiAgICAgLy8gaXQncyBwb3NzaWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ug
d2l0aG91dCBhIFVSTCBoZXJlCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAg
aWYgKHJlc3BvbnNlVVJMLmlzTnVsbCgpKQpAQCAtNjA1LDcgKzYwNSw3IEBAIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1l
KiBmcmFtZSkKIAogICAgIGlmICghZG9jdW1lbnQtPmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0
dXJuIGFyY2hpdmU7Ci0gICAgICAgIAorCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1l
bnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIg
ZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93biku
IAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIg
bWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdo
dD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJl
c3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaAppbmRleCBkMDll
YzlmNzVhYmExMzZhODYzMzllYjRkODZhYmQ4Mjc3YzRmZjA0Li41YTA3YjEwYjRiZTZmODYyMDEx
YTc4MmE3ZGVkMjM2NzU5MjQzNjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCkBAIC00MSw4ICs0MSw4IEBAIHN0cnVjdCBT
aW1wbGVSYW5nZTsKIGNsYXNzIExlZ2FjeVdlYkFyY2hpdmUgZmluYWwgOiBwdWJsaWMgQXJjaGl2
ZSB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lXZWJBcmNo
aXZlPiBjcmVhdGUoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdl
YkFyY2hpdmU+IGNyZWF0ZShTaGFyZWRCdWZmZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZm
ZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+
IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TGVnYWN5V2Vi
QXJjaGl2ZT4gY3JlYXRlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYgbWFpblJlc291cmNlLCBWZWN0
b3I8UmVmPEFyY2hpdmVSZXNvdXJjZT4+JiYgc3VicmVzb3VyY2VzLCBWZWN0b3I8UmVmPExlZ2Fj
eVdlYkFyY2hpdmU+PiYmIHN1YmZyYW1lQXJjaGl2ZXMpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKE5vZGUmLCBGdW5jdGlvbjxib29s
KEZyYW1lJik+JiYgZnJhbWVGaWx0ZXIgPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKEZyYW1lJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAppbmRleCBh
Y2ZiYmI3MDIwMjJkMDZhZmU2MjAwNDA0ODdmZDM0ZDkyMWQ3MjdjLi41YzJmMjY3NjdiOTRmNGU4
NjMzZDY4OTU0N2EwMGY1YTNlNTg2NjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBS
ZWY8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTUhUTUxBcmNoaXZlKTsKIH0KIAotUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxB
cmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0
cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIEZvciBzZWN1cml0eSByZWFzb25z
IHdlIG9ubHkgbG9hZCBNSFRNTCBwYWdlcyBmcm9tIGxvY2FsIFVSTHMuCiAgICAgaWYgKCFMZWdh
Y3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHVybC5wcm90b2Nv
bCgpLnRvU3RyaW5nKCkpKQpAQCAtMTMwLDcgKzEzMCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+
IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGRhdGEp
CiAgICAgcmV0dXJuIG1haW5BcmNoaXZlOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFy
Y2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCitSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogewog
ICAgIFZlY3RvcjxQYWdlU2VyaWFsaXplcjo6UmVzb3VyY2U+IHJlc291cmNlczsKICAgICBQYWdl
U2VyaWFsaXplciBwYWdlU2VyaWFsaXplcihyZXNvdXJjZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCAzZDJkYjdjOTYw
MDJlYmU2ODRiMmJlZjhmMWVhOWUyZTk3OTRhNTg5Li4yZGZlODdlODJlN2E0ZGNlMGYzNDFjMzYx
OTQzYzk5MDIwNWM4ZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTEFyY2hpdmUuaApAQCAtMzgsMTQgKzM4LDE0IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgTUhUTUxQYXJzZXI7CiBjbGFzcyBQYWdlOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTUhUTUxBcmNoaXZl
IGZpbmFsIDogcHVibGljIEFyY2hpdmUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TUhUTUxB
cmNoaXZlPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRl
KGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8TUhUTUxBcmNo
aXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCi0gICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKKyAgICBz
dGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2Uq
KTsKIAogICAgIHZpcnR1YWwgfk1IVE1MQXJjaGl2ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZjFiOTAxZGQw
MjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBiZGI4MDE1ZS4uNWVlOTE4Njg0YTA2ODk2ODNmNzFjMjY3
ZjJkOTAxYTM3YTZmZWI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgYm9vbCBz
a2lwTGluZXNVbnRpbEJvdW5kYXJ5Rm91bmQoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGxpbmVS
ZWFkZXIsIGNvbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTUhUTUxQYXJzZXI6Ok1IVE1MUGFy
c2VyKFNoYXJlZEJ1ZmZlciogZGF0YSkKK01IVE1MUGFyc2VyOjpNSFRNTFBhcnNlcihGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIDogbV9saW5lUmVhZGVyKGRhdGEsICJcclxuIikK
IHsKIH0KQEAgLTE0MCw3ICsxNDAsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBh
cnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogewogICAg
IEFTU0VSVChlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJvdW5k
YXJ5LmlzRW1wdHkoKSk7CiAKLSAgICBhdXRvIGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY29udGVudDsKICAgICBjb25zdCBib29sIGNo
ZWNrQm91bmRhcnkgPSAhZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpOwogICAgIGJvb2wgZW5k
T2ZQYXJ0UmVhY2hlZCA9IGZhbHNlOwogICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2Zl
ckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6QmluYXJ5KSB7CkBAIC0xNTQsNyArMTU0LDcgQEAg
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3Qg
TUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgICAgIExPR19FUlJPUigiQmluYXJ5IGNv
bnRlbnRzIHJlcXVpcmVzIGVuZCBvZiBwYXJ0Iik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgfQotICAgICAgICBjb250ZW50LT5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7Cisg
ICAgICAgIGNvbnRlbnQuYXBwZW5kKFdURk1vdmUocGFydCkpOwogICAgICAgICBtX2xpbmVSZWFk
ZXIuc2V0U2VwYXJhdG9yKCJcclxuIik7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBuZXh0Q2hh
cnM7CiAgICAgICAgIGlmIChtX2xpbmVSZWFkZXIucGVlayhuZXh0Q2hhcnMsIDIpICE9IDIpIHsK
QEAgLTE4MCwxMCArMTgwLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2Vy
OjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2Ug
dXNlIGxpbmUudXRmOCgpIGFuZCBub3QgbGluZS5hc2NpaSgpIGFzIGFzY2lpIHR1cm5zIHNwZWNp
YWwgY2hhcmFjdGVycyAoc3VjaCBhcyB0YWIsIGxpbmUtZmVlZC4uLikgaW50byAnPycuCi0gICAg
ICAgICAgICBjb250ZW50LT5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgp
KTsKKyAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGluZS5s
ZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNv
ZGluZygpID09IE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZSkgewogICAgICAgICAgICAgICAg
IC8vIFRoZSBsaW5lIHJlYWRlciByZW1vdmVzIHRoZSBcclxuLCBidXQgd2UgbmVlZCB0aGVtIGZv
ciB0aGUgY29udGVudCBpbiB0aGlzIGNhc2UgYXMgdGhlIFF1b3RlZFByaW50YWJsZSBkZWNvZGVy
IGV4cGVjdHMgQ1ItTEYgdGVybWluYXRlZCBsaW5lcy4KLSAgICAgICAgICAgICAgICBjb250ZW50
LT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZCgiXHJc
biIsIDIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTkzLDkgKzE5Mywx
MCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChj
b25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50OF90
PiBkYXRhOworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBjb250ZW50LnRha2UoKS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5j
b2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8g
ZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXpl
KCkpOworICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRpZ3VvdXND
b250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBpZiAo
IWRlY29kZWREYXRhKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgYmFzZTY0IGNv
bnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTIwNCwxMSArMjA1LDExIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpw
YXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAgICAgICAg
ZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNp
emUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91c0Nv
bnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpC
aW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5kKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6
ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29u
dGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIExPR19FUlJPUigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oCmlu
ZGV4IDFlOWJkNGQ3NzY3ZWUzOTFhMDAyMmY3MTc0OGYwMGI4NWM4MWIyNWYuLjBkNjA0MzQzZjNk
N2FkMTc4Y2MyMjAwM2M5NzljMjJlNTBhM2I5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaApAQCAtNDIsMTEgKzQyLDExIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKIGNsYXNzIE1IVE1MQXJj
aGl2ZTsKIGNsYXNzIE1JTUVIZWFkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNSFRNTFBhcnNlciB7CiBwdWJsaWM6Ci0gICAg
ZXhwbGljaXQgTUhUTUxQYXJzZXIoU2hhcmVkQnVmZmVyKik7CisgICAgZXhwbGljaXQgTUhUTUxQ
YXJzZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogCiAgICAgUmVmUHRyPE1IVE1MQXJjaGl2
ZT4gcGFyc2VBcmNoaXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWViNjgyMDdm
YzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li5lMWE4NzUxNmJkOGQ1YjhmMjRhZjZhNWI5OTBl
MjE4NTM0N2U3NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MCwxMiArNDAsMTYgQEAgQ2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QmJiByZXEKIHsKIH0KIAotdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hM
b2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29k
ZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAg
bV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNp
emUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAg
bV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAg
ICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExv
YWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCmluZGV4IDA3ZjJhMDc5YzU2
NGVlZmZiNjk3YzM3Yzc4NTY1ZTFlYThkOWFlNWUuLjM3OThhOWI0ZDkwMTNjZmRlYTZmNTZmYmRm
MDAxNWFmODk0NzU3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6
CiAgICAgc3RkOjpvcHRpb25hbDxzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdD4gcHJvY2Vzcyhj
b25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBEb2N1bWVudCog
PSBudWxscHRyKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5p
c2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0
UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLnB0cigp
OyB9CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBT
dHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZjNjFl
NjM3NDJmNzRjYzZhMGJjZjAwMGJhOWIxNzZmLi4zOGEyZTE3ZjBkMDZjOGFjOThkZTI0YjFlNTJi
OGU2MGU5MjQxMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVj
a0hpbnQsCiAgICAgICAgIHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24n
dCBjYWNoZSB0aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNh
biB1c2UgcXVpdGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
bV9kYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlE
YXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05NywxMyArOTcsMTcg
QEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQu
bV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0
YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91
dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVj
a05vdGlmeSgpCi0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1f
ZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAg
IGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIC8vIERlY29kZSB0
aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQg
YXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCisgICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9
IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5j
b2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90
aWZ5KG1ldHJpY3MpOwogICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5s
aWtlbHkgdG8gYmUgbmVlZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdl
bmVyYXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENT
U1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHls
ZVNoZWV0LmgKaW5kZXggNWQ0ZGQzZGM3ZTM1M2VlM2NiMmZiOTNmMjc4ZDI1NzliOGQ5YTdhMS4u
ZTY1NWM2OWUzZWRiNjA5NTAyMzljY2U0NTQ1ZjA5NmI1MjY1NmRlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCkBAIC01NSw3ICs1
NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5h
bDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVz
b3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGlu
Zyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikgZmluYWw7CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIAogICAgIHZv
aWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4MjM1
MWQ3ZjY2MjViY2UyNzFkMDc3NjMzYWU5NC4uZDJiYzI4MjE0NzljNTlhMjMyM2U0ZjY1Y2Q5NGI2
M2I0MjM3MzY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cApAQCAtNjQsMTAgKzY0LDE1IEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRkQ2xpZW50KENhY2hl
ZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRpY19jYXN0PENhY2hlZEZvbnRD
bGllbnQmPihjbGllbnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZEZvbnQ6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgp
ID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEg
PSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEt
PnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAg
ICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAg
IGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpAQCAtMTA1LDcgKzExMCw3IEBAIGJvb2wgQ2FjaGVk
Rm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQogCiBzdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9t
Rm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0
aW9uLCBib29sJiB3cmFwcGluZykKIHsKLSAgICBSZWZQdHIgYnVmZmVyIHsgJmJ5dGVzIH07Cisg
ICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVzIH07CiAgICAgd3JhcHBpbmcgPSAhY29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIpOwogICAgIHJldHVybiBidWZmZXIgPyBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24pIDogbnVsbHB0
cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKGlzTG9hZGluZygpKQogICAgICAg
ICByZXR1cm47Ci0gICAgCisKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRG
b250Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkRm9udENsaWVu
dCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKICAgICAgICAgY2xpZW50LT5mb250TG9hZGVkKCp0
aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IGNlYmRj
NTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVjNGJlZjQyMTAuLjEzNDY2Y2M5OWQwZDE5Y2JmM2Q4
ZWYzZGZiZDk2ZjM0ZDBmODU0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuaApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9f
QVNTRVJUIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVk
UmVzb3VyY2VDbGllbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBm
aW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAK
aW5kZXggYjE1OWYyOWVlOTBmZTNkZTAxOWMxMTQ5YmRhNjk0ZTBlNmY2YjU0Mi4uOTQ2Mjc5NTIw
ZDBkYTQ0NjIyYzZhY2QzNjY2MjI4ODEwNWU4MTk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00NjgsOSArNDY4LDkgQEAgaW5saW5lIHZvaWQg
Q2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAw
OwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZm
ZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0YSA9ICZkYXRhOworICAg
IG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2Rh
dGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTIzLDEyICs1MjMsMTQgQEAg
Ym9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAg
IHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1l
KS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5l
ZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBDYWNo
ZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RTY3JpcHRSZXNvdXJj
ZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKKyAgICAgICAgcmV0
dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKFdF
QktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERG
RG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+Y3JlYXRlQ0ZE
YXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1l
bnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKICNlbHNlCiAgICAgLy8gTG9hZGluZyB0aGUgaW1h
Z2Ugc2hvdWxkIGhhdmUgYmVlbiBjYW5jZWxlZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBv
cnQgY29udmVydGluZyBQb3N0U2NyaXB0IHRvIFBERi4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTU1Myw3ICs1NTUsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBk
YXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2
b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZm
ZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEp
OwpAQCAtNTY3LDcgKzU2OSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRh
dGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
Cit2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBt
X2RhdGEgPSBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoZGF0YSk7CiAgICAgaWYgKG1fZGF0YSkgewpA
QCAtNTkzLDcgKzU5NSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1lCiB2b2lkIENhY2hlZElt
YWdlOjpkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKQogewogICAgIGlmIChtX2ltYWdl
KSB7Ci0gICAgICAgIC8vIExldCB0aGUgSW1hZ2Uga25vdyB0aGF0IHRoZSBTaGFyZWRCdWZmZXIg
aGFzIGJlZW4gcmVqaWdnZWQsIHNvIGl0IGNhbiBsZXQgZ28gb2YgYW55IHJlZmVyZW5jZXMgdG8g
dGhlIGhlYXAtYWxsb2NhdGVkIHJlc291cmNlIGJ1ZmZlci4KKyAgICAgICAgLy8gTGV0IHRoZSBJ
bWFnZSBrbm93IHRoYXQgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgaGFzIGJlZW4gcmVqaWdn
ZWQsIHNvIGl0IGNhbiBsZXQgZ28gb2YgYW55IHJlZmVyZW5jZXMgdG8gdGhlIGhlYXAtYWxsb2Nh
dGVkIHJlc291cmNlIGJ1ZmZlci4KICAgICAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMjQy
NzU2MTcpOiBJdCB3b3VsZCBiZSBiZXR0ZXIgaWYgd2UgY291bGQgc29tZWhvdyB0ZWxsIHRoZSBJ
bWFnZSdzIGRlY29kZXIgdG8gc3dhcCBpbiB0aGUgbmV3IGNvbnRlbnRzIHdpdGhvdXQgZGVzdHJv
eWluZyBhbnl0aGluZy4KICAgICAgICAgbV9pbWFnZS0+ZGVzdHJveURlY29kZWREYXRhKHRydWUp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXgg
ZTM4OTYyYTBkY2FmYmNlZjYzMWMxNGU2M2ZlYjg1YmEwNTUyMDNmNC4uMDgzZjkyZjg4ODI3NmVl
ZGE4OTkxMjAzMWQyNDQ5YTk2OGUyNjVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmgKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIGJvb2wgaW1hZ2VI
YXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNS
ZWxhdGl2ZVdpZHRoKCk7IH0KICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25z
dCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KIAot
ICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAg
IGVudW0gU2l6ZVR5cGUgewogICAgICAgICBVc2VkU2l6ZSwKQEAgLTEyNSw3ICsxMjUsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgb3ZlcnJpZGU7CiAKICAgICBi
b29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1h
Z2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxs
RGF0YVJlY2VpdmVkKTsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKQEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAg
ICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7CiAKLSAgICB2b2lk
IHVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgdXBkYXRlQnVm
ZmVySW50ZXJuYWwoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9pZCBk
aWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggOTJiMDgz
Njk3NTg4ODQ0MDkxOTM5ZTNlZWQ3OWQ3N2YxODM5NTYyZi4uODk1ZGIxMTU4YjZiOGM4ZmJmN2Ix
MGI0M2I2MTRlZGE5NjAyMWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC00OCw3ICs0OCw3IEBAIENhY2hlZFJhd1Jlc291
cmNlOjpDYWNoZWRSYXdSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBU
eXBlIHR5cGUsCiAgICAgQVNTRVJUKGlzTWFpbk9yTWVkaWFPckljb25PclJhd1Jlc291cmNlKCkp
OwogfQogCi1zdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNv
dXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyKiBk
YXRhKSBjb25zdAorc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3
UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHByZXZpb3VzRGF0YUxlbmd0
aCA9IGVuY29kZWRTaXplKCk7CiAgICAgaWYgKCFkYXRhIHx8IGRhdGEtPnNpemUoKSA8PSBwcmV2
aW91c0RhdGFMZW5ndGgpCkBAIC01Niw3ICs1Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVm
ZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFD
CiAgICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAK
LXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEp
Cit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdn
ZXJlZCBmcm9tIG5lc3RlZCBydW5sb29wcy4gV2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVy
IGluIGZpbmlzaExvYWRpbmcuCiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBA
IC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFy
ZWRCdWZmZXImIGRhdGEpCiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNv
dXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGlj
eSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZk
YXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJl
dmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4g
cHJldmlvdXNEYXRhU2l6ZSkgewpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291
cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAg
ICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENh
Y2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFO
b3RpZnkpIHsKICAgICAgICAgLy8gV2UgbWF5IGdldCBoZXJlIHN5bmNocm9ub3VzbHkgZnJvbSB1
cGRhdGVCdWZmZXIoKSBpZiB0aGUgY2FsbGJhY2sgdGhlcmUgZW5kcyB1cCBzcGlubmluZyBhIHJ1
bmxvb3AuCkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRo
aXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSA9IHRoaXMt
PmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBE
YXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IGRhdGE7
Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50
YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNp
emUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVu
dGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0gICAgICAgIH0KKyAg
ICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1
b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJ
bmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAgIHNldEVuY29kZWRT
aXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNS
ZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkp
OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fZGF0YSA9IG51
bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDg0ZTBkODQ0ZDU3MTA5OTUz
YWU2YmZmNjU1NjU5OTUzZTI4YmE2OWIuLmE3ODY1ZjhhZDE3OGFlZmIzMjIwYTU2ZGNmZjE5NTk5
M2NmOTVhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oCkBAIC01MSw5ICs1MSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lk
IGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIGZpbmFsOwotICAgIHZvaWQgdXBk
YXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZURhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmlu
YWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdu
b3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtNjYsNyArNjYsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc3dpdGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJjZSgp
IG92ZXJyaWRlOwogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9hbGxvd0VuY29kZWREYXRhUmVwbGFjZW1lbnQ7IH0KIAotICAgIHN0
ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0
YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciopIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U2hh
cmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqKSBjb25zdDsKICAgICB2b2lkIG5vdGlmeUNsaWVudHNEYXRh
V2FzUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICAK
ICNpZiBVU0UoUVVJQ0tfTE9PSykKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8UmVkaXJlY3RQYWlyLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1fcmVkaXJlY3RDaGFpbjsK
IAogICAgIHN0cnVjdCBEZWxheWVkRmluaXNoTG9hZGluZyB7Ci0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8RGVsYXllZEZpbmlzaExv
YWRpbmc+IG1fZGVsYXllZEZpbmlzaExvYWRpbmc7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggM2FlOGJiNjhkMjVjZGRkMTgwMjA5
MjJmNWVkYjI0ZDRiOTEyMDAwMi4uYmY2OWU4MGU1NzZlMWEyODhmNmEwMTFmNTQ2MTQ2MzE1NTgw
MWQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
Y3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnko
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogICAgICAgICBjbGllbnQtPm5vdGlm
eUZpbmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBk
YXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpCit2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZm
ZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZm
ZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0KQEAg
LTM0NCw3ICszNDQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVp
bnQ4X3QqLCB1bnNpZ25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERh
dGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQogewogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwpA
QCAtOTI3LDggKzkyNyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVk
RGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZm
ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEt
PmFwcGVuZChuZXdCdWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9OwogICAg
IGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3
OGNhMjUxODEzZTZjMDM1YmMyNzguLmM5ODJkZDY5MzdhMGJjMmJmMzhjNDI2MTI2ZmZlNmU3OGM3
OTY0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
CkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIENvb2tpZUphcjsKIGNsYXNzIE1lbW9yeUNhY2hlOwog
Y2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3VicmVz
b3VyY2VMb2FkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCkBAIC0xMTIsOSArMTEy
LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcm
KSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmlu
ZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3Vy
Y2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZl
cihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lk
IGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwogCiAgICAgdm9pZCBzZXRSZXNvdXJjZUVy
cm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7IG1fZXJyb3IgPSBlcnJvcjsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5k
ZXggN2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uZGI0MzE2MDdhZTU2
MzgzMDM4MDBkZDI1OWMxMDM0Y2QwOTBmY2ZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01MiwxMiArNTIsMTIgQEAgU3Ry
aW5nIENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVj
b2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCit2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNy
ZWF0ZSBhIG5ldyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0aGUg
cGFyZW50IFVzZUVsZW1lbnQuCiAgICAgICAgIG1fZG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6Y3Jl
YXRlKG51bGxwdHIsIG1fc2V0dGluZ3MsIHJlc3BvbnNlKCkudXJsKCkpOwotICAgICAgICBtX2Rv
Y3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpKTsKKyAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29k
ZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKSk7CiAgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEs
IG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnQuaAppbmRleCBlOGMxNWYzNjBmYzkxYWM4YjM0ZDM5NjI5NWM1M2QzYzdmMTQ3ZWFh
Li40NDVlNGY5ZjQyYzNjMjc0MDc5NzZhNjRlOTE1NDA3ZjhiNTM0ZDAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtNDMsNyArNDMs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4
dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZp
bmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3Vt
ZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXggYThlZjU3NmJi
NjkzOTMzYTIyMzQ2OTU1NTc1NmIzNjY3ZTQ4NjMyZS4uZDJjMWRlNDdlZmI3ODEzOThmNDQzOGI3
Y2E0ZWEyNjBlMjIxOTc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmNwcApAQCAtODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3Vy
ZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAogICAgICAgICAg
ICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUgZGlzYWJs
ZWRTY29wZTsKIAotICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50
KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkp
OworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXIt
PmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEt
PnNpemUoKSkpOwogICAgICAgICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJvcigpOwog
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5j
cHAKaW5kZXggNDdhOWY1NzYwN2I5ODI4NGU4Zjc5ZTJjZGVjZTliZTQxOGYxN2I2NS4uYjY3Mzk4
YjBlNGY1NmZlN2FiY2IyNzRkMGUzNjg0MzAzNjM1MDg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk2LDEwICs5NiwxNSBAQCB1bnNpZ25l
ZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogICAgIHJldHVybiBtX3NjcmlwdEhhc2g7CiB9
CiAKLXZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTY3JpcHQ6OmZp
bmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0
RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7Cisg
ICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29k
ZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVs
bHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291
cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKaW5kZXggOTI0Yjg0Y2EyZDg3MTZlMzQ2MDc3ZWVl
YjVjYzM0YmNlZGU3ZTIzZC4uODY1MWU2MzlhZDkwNjE3Mjg1NjFjMzI0YmZhN2FmNGNmOTdmNmQz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaApAQCAtNDcs
NyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikg
ZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4
dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExv
YWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIGZpbmFsOwogCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRl
eCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYxLi4wYzg0MjhiYjk5ZGI2
ZGZiMTZhMzQ4MTM0YzM4MjY4MzZjY2U1NDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDAsMTAgKzQwLDEwIEBAIENhY2hlZFRl
eHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFBBTDo6U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1
ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQo
ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEp
OwotICAgIG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250
aWd1b3VzKCkgOiBSZWZQdHI8U2hhcmVkQnVmZmVyPigpOwogICAgIHNldEVuY29kZWRTaXplKGRh
dGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2Vy
PENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKQEAgLTUxLDEzICs1MSwx
MyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBk
YXRhKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2Uo
KnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1
ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7
CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNo
ZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9h
ZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9VcGRhdGVCdWZmZXIoZGF0YSk7CiAgICAgQ2Fj
aGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKaW5kZXggODVlMzk2MjA2NTEzMTYw
NzAzNjUzZWIyMmM3NzEzOGI5MTUwN2FkZC4uMDliNDMzOWEzN2I2NzNiMmFjNGZkYWUxNDZiMjli
OTY0Nzc3ZmNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0
VHJhY2suaApAQCAtMzUsMTAgKzM1LDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29s
IG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2
b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAK
LSAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciopOworICAgIHZvaWQgZG9VcGRh
dGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IGUzZTJmNWU5NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3ODI2
MTVkMzQwMGMuLmQyZWZmMmQyZDQwYzkyNzczODc1NmM0YThmMGNiYjkzNDNiZTEwYWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5j
cHAKQEAgLTYxLDEyICs2MSwxNiBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2Rp
bmcoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQog
Ci12b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFhTTFN0
eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRh
dGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlm
IChkYXRhKQotICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRh
LT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEt
PnNpemUoKSk7CisgICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1f
ZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2Rh
dGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0
TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAppbmRleCA2ODQy
YjY0NGY2MWNmOTBmN2Y2MWIyZjdlYzVlMDA2NTRjZDEwY2NjLi5iZDIzMTIxNGYyZDIwYmEzOTY0
NDYwMzY2ZTA0MWI5NDEzNWFjNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNv
ZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRS
ZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0K
LSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0
cmluZyBtX3NoZWV0OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCmlu
ZGV4IDU1MjU2MWQ2YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIuLjY2YjkzNThlYzUz
MTExNDg0ODIyYTdjYzI0ZTdmM2E5OTE3MDY1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDcgKzM4LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudDsKIGNs
YXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZm
ZXJCdWlsZGVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyIGZpbmFsIDogcHJpdmF0ZSBQ
cmV2aWV3Q29udmVydGVyQ2xpZW50LCBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00OCw3ICs1MCw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
ICAgICBib29sIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCk7Ci0gICAgYm9vbCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwor
ICAgIGJvb2wgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7
CiAgICAgYm9vbCBkaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBkaWRGYWlsKCk7CiAKQEAg
LTYwLDE3ICs2MiwxNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZp
bmlzaFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbCB7IH07CiAgICAgdm9pZCBwcmV2
aWV3Q29udmVydGVyRGlkRmFpbFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKICAg
ICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRl
ciYpIGZpbmFsOwotICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZp
ZXdDb252ZXJ0ZXImLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHByZXZp
ZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZp
bmlzaENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOwogICAgIHZvaWQgcHJldmll
d0NvbnZlcnRlckRpZEZhaWxDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKIAog
ICAgIC8vIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcgotICAgIHZvaWQgcHJvdmlkZU1haW5SZXNv
dXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYpIGZpbmFsOworICAgIHZvaWQgcHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmKSBmaW5h
bDsKICAgICB2b2lkIHByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0Nv
bnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpIGZpbmFs
OwogCiAgICAgUmVmUHRyPFByZXZpZXdDb252ZXJ0ZXI+IG1fY29udmVydGVyOwogICAgIFJlZjxM
ZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBtX2NsaWVudDsKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBtX29yaWdpbmFsRGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9v
cmlnaW5hbERhdGE7CiAgICAgV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxvYWRl
cjsKICAgICBib29sIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7IGZhbHNlIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXggZDE4YjI1
MmU5NzU2YzhjZTBjOTViNjNlNzhkZDAwOTdlZjJhNTczNC4uNzQ4ZmVkYjhlYTQ4ZmFiYzgyNWZi
NWI2NzcxNzQxNTIwNWIzMWIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgUmVmPExlZ2Fj
eVByZXZpZXdMb2FkZXJDbGllbnQ+IG1ha2VDbGllbnQoY29uc3QgUmVzb3VyY2VMb2FkZXImIGxv
YWRlciwgYwogICAgIHJldHVybiBlbXB0eUNsaWVudCgpOwogfQogCi1ib29sIExlZ2FjeVByZXZp
ZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiti
b29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJ
bnRvQ29udmVydGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDksNyArMTA5LDcgQEAg
dm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0
aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFt
X2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsKKyAg
ICBtX29yaWdpbmFsRGF0YS0+cmVzZXQoKTsKICAgICByZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRM
b2FkZXIoKS0+c2V0UHJldmlld0NvbnZlcnRlcihXVEZNb3ZlKG1fY29udmVydGVyKSk7CiAgICAg
YXV0byByZXNwb25zZSB7IGNvbnZlcnRlci5wcmV2aWV3UmVzcG9uc2UoKSB9OwogCkBAIC0xNDcs
NyArMTQ3LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlk
U3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICB9KTsKIH0KIAotdm9pZCBM
ZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmll
d0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgTGVnYWN5UHJldmll
d0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXIm
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGF1dG8gcmVzb3Vy
Y2VMb2FkZXIgPSBtX3Jlc291cmNlTG9hZGVyLmdldCgpOwogICAgIGlmICghcmVzb3VyY2VMb2Fk
ZXIpCkBAIC0yMjQsMTAgKzIyNCwxMCBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3Zp
ZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgYwogICAgIG1f
Y2xpZW50LT5kaWRSZXF1ZXN0UGFzc3dvcmQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
fQogCi12b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2
aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0
ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBBU1NFUlRfVU5VU0VEKGNvbnZlcnRlciwgJmNvbnZlcnRlciA9PSBtX2NvbnZlcnRlcik7Ci0g
ICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEucHRyKCkpOworICAgIGNvbXBsZXRp
b25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLT5nZXQoKS5nZXQoKSk7CiB9CiAKIExlZ2FjeVByZXZp
ZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwpAQCAtMjM1LDcgKzIz
NSw3IEBAIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZh
dWx0OwogTGVnYWN5UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmlld0xvYWRlcihSZXNvdXJjZUxv
YWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IG1f
Y29udmVydGVyIHsgUHJldmlld0NvbnZlcnRlcjo6Y3JlYXRlKHJlc3BvbnNlLCAqdGhpcykgfQog
ICAgICwgbV9jbGllbnQgeyBtYWtlQ2xpZW50KGxvYWRlciwgbV9jb252ZXJ0ZXItPnByZXZpZXdG
aWxlTmFtZSgpLCBtX2NvbnZlcnRlci0+cHJldmlld1VUSSgpKSB9Ci0gICAgLCBtX29yaWdpbmFs
RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9vcmlnaW5hbERhdGEgeyBt
YWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9yZXNvdXJjZUxv
YWRlciB7IGxvYWRlciB9CiAgICAgLCBtX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmcg
eyBsb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2Fk
aW5nUXVpY2tMb29rUHJldmlldygpIH0KIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmlu
ZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0ZjI1YWIxMzVhYTYwMzMzY2YuLmVhNjE1ZGZmNGRk
MGVkNTE0YmZmNjQ0MjY0N2VjNDYyMGY2MzIyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGll
bnQuaApAQCAtMzgsMTIgKzM4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFz
cyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIAorY2xhc3MgU2hhcmVkQnVmZmVy
OwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsK
IGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsKIGNs
YXNzIFRleHRDaGVja2VyQ2xpZW50OwogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKQEAgLTc4LDcg
Kzc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRl
bGV0ZShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBsZVJhbmdlJikgPSAwOwogCiAjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRh
Y2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0
cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogcHJlZmVycmVkRmlsZU5h
bWUgKi8sIFJlZjxTaGFyZWRCdWZmZXI+JiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rl
ckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLywgY29u
c3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBwcmVmZXJyZWRG
aWxlTmFtZSAqLywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRl
bnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5n
JiAvKiBmaWxlUGF0aCAqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVu
dHMoVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVudGlm
aWVyICovKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXggMWEx
MjEwZmE4MzM3Y2Q5NTIwZjRlMDExYTkwNzM2NzU0ZGU1MThmMS4uYWM1M2NiMTRiZjAwZTUxNjQ3
YzllYzkxMTA5OGJlYTAzNjE1MTEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRv
UmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVudCogaW1hZwogICAgIGlm
ICghaW1hZ2UgfHwgaW1hZ2UtPmltYWdlKCkgPT0gJkltYWdlOjpudWxsSW1hZ2UoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVy
ZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIg
PyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKICAg
ICBpZiAoIWRhdGEpCiAgICAgICAgIGRhdGEgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogCkBA
IC0yODIsNyArMjgyLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNl
cyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNl
KCkubWltZVR5cGUoKSwgV1RGTW92ZShkYXRhKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQo
eyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIGRhdGEtPm1ha2VDb250aWd1b3Vz
KCkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2hhcmVEYXRhUmVhZGVyLmNwcAppbmRleCA5NmFkMDgyNTQzZGQ1M2E4NzliZTUxYzZkOTIx
ZDdhZmZmNDJlOGUwLi43NTgzNmI4NzkxNDNiNjBhN2YzNTE5NzAzMjA3YjZhZDNkOGQ0Zjg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpCiB7Ci0gICAgCisKIH0KIAogU2hhcmVEYXRhUmVhZGVyOjp+
U2hhcmVEYXRhUmVhZGVyKCkKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIFNoYXJlRGF0YVJlYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1l
KQogICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAg
IGF1dG8gYXJyYXlCdWZmZXIgPSBtX3BlbmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+YXJyYXlC
dWZmZXJSZXN1bHQoKTsKLSAgICAKKwogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZpbGVO
YW1lID0gZmlsZU5hbWU7CiAgICAgZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwg
YXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBwZW5k
KFdURk1vdmUoZmlsZSkpOwogICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKLSAgICAKKwogICAgIGlm
IChtX2ZpbGVzUmVhZFNvRmFyID09IHN0YXRpY19jYXN0PGludD4obV9wZW5kaW5nRmlsZUxvYWRz
LnNpemUoKSkpIHsKICAgICAgICAgbV9wZW5kaW5nRmlsZUxvYWRzLmNsZWFyKCk7CiAgICAgICAg
IGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25I
YW5kbGVyLCB7IH0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxh
eWluZ01hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2Vy
LmgKaW5kZXggZTM4MDZlODdkZjc5YTNkOWI1Y2FlMTIxNGRlNjZhYTJhNjU4NDdkYi4uZmM2NmMz
NjVhMmYyOWE0Yzc4ZTYwNjE5ZTQ3YTcxYzcyNThkOGZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAg
ICAgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gbV9ub3dQbGF5aW5nSW5mbzsKICAgICBz
dHJ1Y3QgQXJ0d29ya0NhY2hlIHsKICAgICAgICAgU3RyaW5nIHNyYzsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxBcnR3b3JrQ2Fj
aGU+IG1fbm93UGxheWluZ0luZm9BcnR3b3JrOwogICAgIGJvb2wgbV9zZXRBc05vd1BsYXlpbmdB
cHBsaWNhdGlvbiB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3Bw
CmluZGV4IDE1NzMxZWIyM2ZhNzY5NDk2MGRkODA0OTZmYThmMmY5ZThjNzc4MGYuLjA3ZWQ0OGU1
ODg0ZWNlZWRjNjFmZDkzZTZiMjIxNzFiZTg4NTg5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmQuY3BwCkBAIC04OSw3ICs4OSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFk
U3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIHJldHVybiB7IH07
CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZm
ZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAoYXV0byogc3RyYXRlZ3kgPSBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkpCiAgICAgICAgIHJldHVybiBzdHJh
dGVneS0+cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCB0eXBlLCBuYW1lKCksIGNvbnRl
eHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggN2QyNDdkY2QxYTE2
ZjM0MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMi4uMzU3NjNlZTEyYTM5MGVmYzg0NTJjMzU4MDZi
NTEyYmU0MjlhZDk3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtNjEs
MTIgKzYxLDEzIEBAIHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50Owog
Y2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBQYXN0
ZWJvYXJkU3RyYXRlZ3k7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiAKQEAgLTE0NywxNiArMTQ4LDE2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIFBy
ZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkRmlsZVBh
dGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkSFRN
TChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRJbWFnZShSZWY8U2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVy
cmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkSW1h
Z2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJl
c2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CiAgICAg
dmlydHVhbCBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpID0gMDsKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVhbCBib29sIHJlYWRXZWJBcmNo
aXZlKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQoU2hhcmVk
QnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpID0g
MDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVy
cmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkV2Vi
QXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBy
ZWFkUlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBy
ZWFkUlRGKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJl
YWREYXRhQnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRp
b25TaXplID0geyB9KSA9IDA7CiAjZW5kaWYKIH07CiAKQEAgLTE3MSw3ICsxNzIsNyBAQCBzdHJ1
Y3QgUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIHZpcnR1YWwgflBhc3RlYm9hcmRGaWxlUmVh
ZGVyKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3Ry
aW5nJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWFkQnVmZmVyKGNvbnN0IFN0cmlu
ZyYgLyogdHlwZSAqLykgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBy
ZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIGNsYXNzIFBhc3RlYm9hcmQgewpAQCAtMjk2LDcgKzI5
Nyw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gcGFz
dGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3Q7CiAKICAgICBTdHJpbmcgcmVhZFN0
cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
dHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIFVSTCByZWFkVVJM
KHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSk7CiAKICAgICBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlk
M2Y4N2E5MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjdiNGIzZDM2YWE2ODAzNjEx
ODc5MTMxYjVhMWIyMjZiNTg4ZDM2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTMzLDEzICszMywxMyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVm
ZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hh
cmVkQnVmZmVyPj4mIG90aGVyKQorc3RhdGljIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8
U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiBvdGhlcikKIHsKICAgICBpZiAo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG90aGVyKSkKICAgICAgICAgcmV0dXJuIHsg
c3RkOjpnZXQ8U3RyaW5nPihvdGhlcikgfTsKIAotICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikpCi0gICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0
PFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikuY29weVJlZigpIH07CisgICAgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihvdGhlcikpCisgICAg
ICAgIHJldHVybiB7IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ob3RoZXIp
LmNvcHlSZWYoKSB9OwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTEzNCw3ICsxMzQsNyBAQCB2
b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgYWRkT3JNb3ZlRW50cnlUb0VuZCh0eXBlKS5wbGF0
Zm9ybURhdGEgPSB7IHZhbHVlIH07CiB9CiAKLXZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6Ondy
aXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3Zv
aWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgYWRkT3JNb3ZlRW50cnlU
b0VuZCh0eXBlKS5wbGF0Zm9ybURhdGEgPSB7IFdURk1vdmUoZGF0YSkgfTsKIH0KQEAgLTIwMiwx
NCArMjAyLDE0IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIGN1c3RvbURh
dGE7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpyZWFk
QnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5
cGUpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkgewogICAgICAgICBp
ZiAoZW50cnkudHlwZSAhPSB0eXBlKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
aWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRm
b3JtRGF0YSkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+
KGVudHJ5LnBsYXRmb3JtRGF0YSkuY29weVJlZigpOworICAgICAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0
YSkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpLmNvcHlSZWYoKTsKIAogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CkBAIC0yNjUsMTEgKzI2NSwxMSBAQCB2b2lkIFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpmb3JFYWNoQ3VzdG9tU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBl
LAogICAgIH0KIH0KIAotdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3Jt
U3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0
ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYgZnVuY3Rpb24p
IGNvbnN0Cit2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmb3JFYWNoUGxhdGZvcm1TdHJpbmdP
ckJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qgc3RkOjp2YXJp
YW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYgZnVuY3Rp
b24pIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkgewogICAgICAgICBh
dXRvJiBkYXRhID0gZW50cnkucGxhdGZvcm1EYXRhOwotICAgICAgICBpZiAoKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5pc051
bGwoKSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkp
CisgICAgICAgIGlmICgoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRhdGEpICYmICFz
dGQ6OmdldDxTdHJpbmc+KGRhdGEpLmlzTnVsbCgpKSB8fCBzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZGF0YSkpCiAgICAgICAgICAgICBmdW5jdGlv
bihlbnRyeS50eXBlLCBkYXRhKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyYmU4MWQyOTM4YTNkYmQwOTAyNmNhNmVj
NjRhYzMyODdlNmFiYzAzLi45N2ZmOTg1ZTI0ZTExYjRjN2JiNDE0MzczN2YwMjg0MGMzNWZmY2Vj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgK
QEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZEN1
c3RvbURhdGEgewogcHVibGljOgpAQCAtNDgsNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICAgICAg
U3RyaW5nIHR5cGU7CiAgICAgICAgIFN0cmluZyBjdXN0b21EYXRhOwotICAgICAgICBzdGQ6OnZh
cmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4gcGxhdGZvcm1EYXRhOworICAgICAgICBz
dGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHBsYXRmb3Jt
RGF0YTsKICAgICB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUGFzdGVib2FyZEN1c3RvbURhdGEo
KTsKQEAgLTY1LDExICs2NiwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2RlciYmKTsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYg
dHlwZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAgICAgU3RyaW5nIHJlYWRTdHJp
bmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKIAogICAgIHZvaWQgd3Jp
dGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICB2
b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0
YSk7CisgICAgdm9pZCB3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICB2b2lkIHdyaXRlU3RyaW5nSW5DdXN0b21EYXRh
KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKICAgICB2b2lkIGNs
ZWFyKCk7CkBAIC04Myw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZm9yRWFjaFR5cGUo
RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJikgY29uc3Q7CiAgICAgdm9pZCBmb3JFYWNo
UGxhdGZvcm1TdHJpbmcoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgZGF0YSk+JiYpIGNvbnN0OwotICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JC
dWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFu
dDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYpIGNvbnN0OworICAgIHZvaWQg
Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4mIGRhdGEpPiYmKSBjb25zdDsKICAgICB2b2lkIGZvckVhY2hDdXN0b21TdHJpbmcoRnVu
Y3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk+JiYpIGNv
bnN0OwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IDFjMDcyNmZlYjNlMDJhZWQzMmI0NmYyNjJi
Y2RhMTY5ZDY3MmViMmMuLmM0MWUwODUyNDQ5NmM2N2YxZjE1MDM4ZmJiMjZlOWMyOWRhNjk4YzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0z
MSwxMCArMzEsMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9h
cmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwog
c3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwpAQCAtNjIs
NyArNjMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGludDY0X3QgYWRkVHlwZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90
IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAg
IHZpcnR1YWwgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgaW50NjRfdCBzZXRCdWZmZXJG
b3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRVUkwm
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
ID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgQ29sb3ImLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAg
ICB2aXJ0dWFsIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1Db250ZW50RmlsdGVyLmgKaW5kZXggM2Y0ODMyYTVhNjU4YzFjYzdjMGFhMTNiMjZl
MGVhNDczM2U5ZDNiNy4uOWU3MmU0NGEyZWFjNGQ4ZWY3MzBiOTg3MWQwZWM1MDhlZDlmYWM0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgK
QEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIFBsYXRmb3JtQ29udGVudEZpbHRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVz
cG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgPSAwOwotICAgIHZpcnR1YWwgUmVmPFNo
YXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0ID0gMDsKICNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgdmlydHVhbCBDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCA9IDA7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMxMDA3NDI1
MDAyNDNiYjQ2ZmY1OTg2ODYxZTg0YTJmZDk2ZS4uNzFkZmI5M2U1NzU2MGUzM2E3ZjZjODBjMjBm
OTJkNWIyY2FlYzEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0
ZWJvYXJkLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xh
c3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hh
cmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRl
bUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVu
dDsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVi
b2FyZCB7CiBwdWJsaWM6CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNl
IG1ldGhvZHMgd2lsbCByZXR1cm4gMCBpZiBwYXN0ZWJvYXJkIG93bmVyc2hpcCBoYXMgYmVlbiB0
YWtlbiBmcm9tIHVzLgogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3QgY29weShjb25zdCBTdHJp
bmcmIGZyb21QYXN0ZWJvYXJkKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldEJ1ZmZl
ckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgaW50NjRfdCBzZXRDb2xvcihjb25zdCBDb2xvciYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZp
ZXdDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRl
ci5jcHAKaW5kZXggNGNiMzMwMWU3ZGY3MDcxYzVkZDlmYzU5YmM1NzE4NWM0ZTkxNDc2OC4uNjMx
YWRlN2NjZjdhZDI5NjkzYTJlNzY1MWZlNmE5Y2RlYmQzNzczYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgY29uc3Qg
UmVzb3VyY2VFcnJvciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0Vycm9yKCkgY29uc3QKICAg
ICByZXR1cm4gbV9wcmV2aWV3RXJyb3I7CiB9CiAKLWNvbnN0IFNoYXJlZEJ1ZmZlciYgUHJldmll
d0NvbnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAorY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAogewotICAgIHJldHVy
biBtX3ByZXZpZXdEYXRhLmdldCgpOworICAgIHJldHVybiAqbV9wcmV2aWV3RGF0YS0+Z2V0KCk7
CiB9CiAKIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKQEAgLTkw
LDcgKzkwLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWluUmVzb3VyY2UoKQog
ICAgIH0pOwogfQogCi12b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmFwcGVuZEZyb21CdWZmZXIoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmFwcGVuZEZy
b21CdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHdo
aWxlIChidWZmZXIuc2l6ZSgpID4gbV9sZW5ndGhBcHBlbmRlZCkgewogICAgICAgICBhdXRvIG5l
d0RhdGEgPSBidWZmZXIuZ2V0U29tZURhdGEobV9sZW5ndGhBcHBlbmRlZCk7CkBAIC0yMjIsNyAr
MjIyLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29u
dmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFy
dENvbnZlcnRpbmcoKnRoaXMpOwogCiAgICAgaWYgKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkg
JiYgaGFzQ2xpZW50KGNsaWVudCkpCi0gICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlk
UmVjZWl2ZURhdGEoKnRoaXMsIG1fcHJldmlld0RhdGEuZ2V0KCkpOworICAgICAgICBjbGllbnQu
cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCAqbV9wcmV2aWV3RGF0YS0+Z2V0
KCkpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNvbnZlcnRpbmcgfHwgIWhhc0NsaWVu
dChjbGllbnQpKQogICAgICAgICByZXR1cm47CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBQcmV2
aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGll
bnQpCiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKCp0aGlz
KTsKIH0KIAotdm9pZCBQcmV2aWV3Q29udmVydGVyOjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVE
aWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAg
IGF1dG8gcHJvdGVjdGVkVGhpcyB7IFJlZiB7ICp0aGlzIH0gfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCmluZGV4IDJhMzcyOTIyNzk5Y2U2YWZmYWFiM2Ux
NDBkMTkwYmE2NGNmOGNlMmIuLjkyMDJlZGRkOWUxMDViMjczNWVkYzE0NmYyNjY0YzEzY2I5YzM0
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQxLDE1ICs0MiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVk
QnVmZmVyRGF0YVZpZXc7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogc3RydWN0IFByZXZp
ZXdDb252ZXJ0ZXJDbGllbnQ7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyOwogCiBz
dHJ1Y3QgUHJldmlld1BsYXRmb3JtRGVsZWdhdGUgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3UGxh
dGZvcm1EZWxlZ2F0ZT4gewogICAgIHZpcnR1YWwgflByZXZpZXdQbGF0Zm9ybURlbGVnYXRlKCkg
PSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZFJlY2Vp
dmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRlbGVnYXRlRGlkRmluaXNoTG9hZGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVs
ZWdhdGVEaWRGYWlsV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiB9OwpAQCAt
NzIsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHByZXZpZXdG
aWxlTmFtZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwcmV2aWV3VVRJKCkg
Y29uc3Q7CiAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgcHJldmlld0Vycm9yKCkgY29uc3Q7Ci0g
ICAgY29uc3QgU2hhcmVkQnVmZmVyJiBwcmV2aWV3RGF0YSgpIGNvbnN0OworICAgIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIHByZXZpZXdEYXRhKCkgY29uc3Q7CiAKICAgICB2b2lkIGZh
aWxlZFVwZGF0aW5nKCk7CiAgICAgdm9pZCBmaW5pc2hVcGRhdGluZygpOwpAQCAtOTQsNyArOTYs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNQbGF0Zm9ybVBhc3N3b3JkRXJyb3IoY29uc3QgUmVz
b3VyY2VFcnJvciYpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBpdGVy
YXRlQ2xpZW50cyhUJiYgY2FsbGJhY2spOwotICAgIHZvaWQgYXBwZW5kRnJvbUJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGFwcGVuZEZyb21CdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkQWRkQ2xpZW50KFByZXZpZXdDb252ZXJ0
ZXJDbGllbnQmKTsKICAgICB2b2lkIGRpZEZhaWxDb252ZXJ0aW5nV2l0aEVycm9yKGNvbnN0IFJl
c291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZEZhaWxVcGRhdGluZygpOwpAQCAtMTA2LDcgKzEw
OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVVubG9ja1dpdGhQYXNzd29yZChjb25z
dCBTdHJpbmcmKTsKIAogICAgIC8vIFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlCi0gICAgdm9pZCBk
ZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZv
aWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikg
ZmluYWw7CiAgICAgdm9pZCBkZWxlZ2F0ZURpZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsKICAgICB2
b2lkIGRlbGVnYXRlRGlkRmFpbFdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7
CiAKQEAgLTExOCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgICAgICBGaW5pc2hlZENvbnZlcnRp
bmcsCiAgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fcHJldmlld0RhdGE7CisgICAg
VW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcHJldmlld0RhdGE7CiAgICAgUmVzb3Vy
Y2VFcnJvciBtX3ByZXZpZXdFcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxS
ZXNwb25zZTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlVwZGF0aW5nIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmgKaW5kZXggMDRl
YTM2ODA2OTJiMjUyYTE5ODljMjZjYTIwNDIxMjc3N2FhM2I3Yi4uOWNlZTkzMzIwYjIzOGI0Y2Q3
M2NkZDJlMDMwMmMzYmY0ZGFkNjhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFByZXZpZXdDb252ZXJ0ZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3Ry
dWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVy
dGVyQ2xpZW50PiB7CiAgICAgdmlydHVhbCB+UHJldmlld0NvbnZlcnRlckNsaWVudCgpID0gZGVm
YXVsdDsKQEAgLTQyLDcgKzQyLDcgQEAgc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQgOiBD
YW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVyQ2xpZW50PiB7CiAgICAgdmlydHVhbCB2b2lk
IHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbFVwZGF0aW5nKFByZXZp
ZXdDb252ZXJ0ZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRT
dGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBT
aGFyZWRCdWZmZXImIG5ld0RhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZl
cnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBuZXdEYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0
ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVy
JikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXJQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZl
cnRlclByb3ZpZGVyLmgKaW5kZXggODI3ODYzOTNmY2VkNzU0Yzg1ZjdiMjg5MTI1MmY1MTZiZWQw
ZDU0OS4uYjk4NmVlNDBkMTk3NTE3NGY1NGFkMjlhMTY4Y2FkZjE4OTQ1NmMzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgKQEAg
LTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFByZXZpZXdDb252ZXJ0
ZXJQcm92aWRlciA6IENhbk1ha2VXZWFrUHRyPFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcj4gewog
ICAgIHZpcnR1YWwgflByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcigpID0gZGVmYXVsdDsKIAotICAg
IHZpcnR1YWwgdm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2
aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIq
KT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmll
d0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJv
dmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJikgPSAwOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDhlNjhlMzM3NzgxZmIyOWFkMzlj
NTViOWFmZDM5MDAzNTM1Mzg1ZC4uOTdlZjZiZTRmODFmMWM0NTkyYzM1MjEwZDk3ZDlhNmMyODg1
NTUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zNyw2
MyArMzcsNTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK0ZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpCiB7CiAgICAgYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi1TaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK0ZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IHNpemUpCiB7CiAgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEpLCBzaXplKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0
YSkKICAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBl
bmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpfSk7CisgICAgbV9z
ZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEp
KSB9KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyJiYgcHJvdmlkZXIpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHBy
b3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAs
IERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCi1TaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRh
KQogewogICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAotI2lmIFVTRShHU1RSRUFNRVIp
Ci1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1
ZmZlciYgbWFwcGVkQnVmZmVyKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIobWFwcGVkQnVmZmVyKSk7CisgICAgYXBwZW5kKFdURk1v
dmUoYnVmZmVyKSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93
bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCi0gICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUo
KSkKKyNpZiBVU0UoR1NUUkVBTUVSKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVm
ZmVyKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZt
YXBwZWRCdWZmZXIpfSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcihtYXBwZWRCdWZmZXIpKTsKIH0KLSNlbmRpZgogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNl
RmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0gICAgaWYgKG1heVVzZUZpbGVNYXBw
aW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAgICAgICAgYm9vbCBtYXBwaW5nU3Vj
Y2VzczsKLSAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEo
ZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Ci0gICAgICAgIGlmICht
YXBwaW5nU3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVm
ZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Ci0gICAgfQotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Ci19Ci0KLVJlZjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKK0Zy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3du
ZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKKyAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgp
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3Rv
cikpKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1h
cHBlZEJ1ZmZlcikgfSk7CiB9CisjZW5kaWYKIAotc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21i
aW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3ImIHNl
Z21lbnRzLCBzaXplX3Qgc2l6ZSkKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21l
bnRzRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYg
c2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERh
dGE7CiAgICAgY29tYmluZWREYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CkBAIC0x
MDMsMzMgKzkyLDE5IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0
YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJp
bmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgp
IGNvbnN0CitSZWY8U2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjptYWtlQ29u
dGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBGSVhNRTogV2Ug
b3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFzc2VydGlv
bnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0ZXIg
Y2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGhtcyBzaW5j
ZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgPSB0cnVl
OwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAgICAgIHJldHVy
bjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGlj
X2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4o
dGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpCisg
ICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQu
Y29weVJlZigpKTsKICAgICBhdXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEo
bV9zZWdtZW50cywgbV9zaXplKTsKLSAgICBtX3NlZ21lbnRzLmNsZWFyKCk7Ci0gICAgbV9zZWdt
ZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEp
KX0pOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKLSAgICBBU1NFUlQoaW50
ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci19Ci0KLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6
ZGF0YSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKLSAgICBBU1NFUlQo
aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci0gICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVu
dC0+ZGF0YSgpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJp
bmVkRGF0YSkpOwogfQogCi1WZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgp
IGNvbnN0CitWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEo
KSBjb25zdAogewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGRhdGEucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShzaXplKCkpOwpAQCAtMTM5LDcgKzExNCw3IEBAIFZlY3Rvcjx1aW50OF90
PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKICAgICByZXR1cm4gZGF0YTsKIH0KIAot
VmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKQorVmVjdG9yPHVpbnQ4X3Q+
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkKIHsKICAgICBpZiAobV9zZWdtZW50
cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xNTQsMTMgKzEyOSwxMyBAQCBW
ZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCiAgICAgcmV0dXJuIGNvbWJp
bmVkRGF0YTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZpZXcgU2hhcmVkQnVmZmVyOjpnZXRTb21l
RGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0CitTaGFyZWRCdWZmZXJEYXRhVmlldyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0CiB7CiAg
ICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogZWxlbWVudCA9IGdldFNlZ21lbnRGb3JQ
b3NpdGlvbihwb3NpdGlvbik7CiAgICAgcmV0dXJuIHsgZWxlbWVudC0+c2VnbWVudC5jb3B5UmVm
KCksIHBvc2l0aW9uIC0gZWxlbWVudC0+YmVnaW5Qb3NpdGlvbiB9OwogfQogCi1jb25zdCBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yRW50cnkqIFNoYXJlZEJ1ZmZlcjo6Z2V0U2VnbWVu
dEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGlvbikgY29uc3QKK2NvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yRW50cnkqIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQocG9zaXRpb24gPCBtX3NpemUpOwogICAgIGF1dG8gY29tcGFyYXRvciA9IFtd
KGNvbnN0IHNpemVfdCYgcG9zaXRpb24sIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkmIGVu
dHJ5KSB7CkBAIC0xNzEsNyArMTQ2LDcgQEAgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dFZlY3RvckVudHJ5KiBTaGFyZWRCdWZmZXI6OmdldFNlZ21lbnRGb3JQb3NpdGlvbigKICAgICBy
ZXR1cm4gZWxlbWVudDsKIH0KIAotU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBj
b25zdAorU3RyaW5nIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QK
IHsKICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAgICAgZm9yRWFjaFNlZ21lbnQo
WyZdKGF1dG8mIHNlZ21lbnQpIHsKQEAgLTE4MSw3ICsxNTYsMjIgQEAgU3RyaW5nIFNoYXJlZEJ1
ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3Ry
aW5nKCk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVB
cnJheUJ1ZmZlcigpIGNvbnN0CitzaXplX3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6c2l6ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2l6ZTsKK30KKworYm9vbCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjppc0VtcHR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIXNpemUoKTsKK30KKworYm9v
bCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2NvbnRpZ3VvdXM7Cit9CisKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewogICAgIGF1dG8gYXJy
YXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc2l6ZSgpKSwgMSk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewpAQCAtMjAw
LDY4ICsxOTAsNjUgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCkgY29uc3QKICAgICByZXR1cm4gYXJyYXlCdWZmZXI7CiB9CiAKLXZvaWQg
U2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwog
ICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5t
X3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5t
X3NlZ21lbnRzKSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHttX3NpemUs
IGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51bmNoZWNr
ZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgICAg
IG1fc2l6ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAg
IEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9z
ZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3Rv
cikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBtX3NpemUgKz0gbGVuZ3RoOwogICAgIEFTU0VS
VChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVu
ZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjph
cHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNv
bWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsK
LSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRhdGFTaXplOwogICAg
IEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6
OmNsZWFyKCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOworfQorCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNsZWFyKCkKIHsKICAgICBtX3NpemUgPSAwOwogICAgIG1fc2VnbWVudHMuY2xlYXIo
KTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLVJlZjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiB7Ci0gICAgUmVmPFNo
YXJlZEJ1ZmZlcj4gY2xvbmUgPSBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7CisgICAgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNsb25lID0gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKTsKICAgICBjbG9uZS0+bV9zaXplID0gbV9zaXplOwogICAgIGNsb25lLT5t
X3NlZ21lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkpOwogICAg
IGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpCi0gICAgICAgIGNsb25lLT5t
X3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7ZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50
LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tl
ZEFwcGVuZCh7IGVsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYo
KSB9KTsKICAgICBBU1NFUlQoY2xvbmUtPmludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIEFT
U0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLVJl
ZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRl
ciYmIHByb3ZpZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKHByb3ZpZGVyKSkpOwotfQotCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21l
bnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBs
eSkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29u
c3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29u
c3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsKICAgICBmb3IgKGF1dG8mIHNl
Z21lbnQgOiBzZWdtZW50cykKICAgICAgICAgYXBwbHkoU3BhbiB7IHNlZ21lbnQuc2VnbWVudC0+
ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSB9KTsKIH0KIAotYm9vbCBTaGFyZWRCdWZm
ZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdAor
Ym9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3Qg
dWludDhfdD4mIHByZWZpeCkgY29uc3QKIHsKICAgICBpZiAocHJlZml4LmVtcHR5KCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtMjgzLDcgKzI3MCw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpz
dGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnJlYWQoc2l6
ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKK1ZlY3Rvcjx1aW50OF90PiBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0
CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgaWYgKG9mZnNldCA+PSBzaXplKCkp
CkBAIC0zMTAsMTIgKzI5NywxMiBAQCBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpyZWFk
KHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAgICAgcmV0dXJuIGRhdGE7CiB9
CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBs
ZW5ndGgpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBk
ZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIHsKICAgICByZXR1cm4gY29weVRvKGRl
c3RpbmF0aW9uLCAwLCBsZW5ndGgpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZv
aWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAordm9p
ZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVf
dCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxlbmd0aCArIG9m
ZnNldCA8PSBzaXplKCkpOwogICAgIGlmIChvZmZzZXQgPj0gc2l6ZSgpKQpAQCAtMzUzLDE0ICsz
NDAsMTMgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6
ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKICAgICB9CiB9CiAKLWJvb2wgU2hhcmVk
QnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6aGFzT25lU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0gICAg
cmV0dXJuIGl0ICE9IGVuZCgpICYmICsraXQgPT0gZW5kKCk7CisgICAgcmV0dXJuIG1fc2VnbWVu
dHMuc2l6ZSgpID09IDE7CiB9CiAKICNpZiBBU1NFUlRfRU5BQkxFRAotYm9vbCBTaGFyZWRCdWZm
ZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogewogICAgIHNpemVfdCBwb3NpdGlv
biA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykgewpAQCAt
MzcyLDcgKzM1OCw1NyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQo
KSBjb25zdAogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNvbnN0IHVpbnQ4X3QqIFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAorU2hhcmVkQnVmZmVyOjpTaGFy
ZWRCdWZmZXIoKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1NoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1fc2l6
ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1vdmUo
c2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworU2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1
ZmZlcikKK3sKKyAgICBBU1NFUlQoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpIHx8
IGNvbnRpZ3VvdXNCdWZmZXItPmlzRW1wdHkoKSk7CisgICAgbV9zaXplID0gY29udGlndW91c0J1
ZmZlci0+c2l6ZSgpOworICAgIGlmIChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkp
CisgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgY29udGlndW91c0J1ZmZlci0+bV9zZWdt
ZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOwor
fQorCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmIGRhdGEpCisgICAgOiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUoZGF0YSkpCit7
CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVN
YXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQoreworICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9
PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7CisgICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7
CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQ
YXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOworICAgICAgICBpZiAobWFwcGlu
Z1N1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOworICAgIH0KKyAgICByZXR1cm4gY3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGZpbGVQYXRoKTsKK30KKworY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpk
YXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsK
K30KKworY29uc3QgY2hhciogU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKwor
Y29uc3QgdWludDhfdCogRGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogewogICAgIGF1dG8gdmlz
aXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCkBAIC0z
OTEsMTMgKzQyNywxMyBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJs
ZURhdGEpOwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFw
cGVkRmlsZURhdGEoKSBjb25zdAorYm9vbCBEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxl
RGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKICNpZiAhVVNFKENG
KQotdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKK3Zv
aWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25z
dAogewogfQogI2VuZGlmCkBAIC00MDcsNyArNDQzLDcgQEAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVj
b2RlciBTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAogICAgIHJldHVybiB7eyByZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXplKCkgfX07CiB9CiAKLWJvb2wg
U2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0
Citib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ1Niw3ICs0OTIsNyBAQCBib29sIFNoYXJlZEJ1ZmZl
cjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJldHVy
biB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNv
bnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRv
ciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
ZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApAQCAtNDc1LDcgKzUxMSw3
IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICBy
ZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRC
dWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVy
RGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhp
blNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdU
Rk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldp
dGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXpl
KCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00OTksMTIgKzUzNSwxNyBAQCBjb25zdCB1
aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
c2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKK2NvbnN0IGNo
YXIqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKwogUmVmPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNv
bnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQg
PSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNl
Z21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFT
ZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBkYXRhID0gZGF0YSgpXSgpIHsg
cmV0dXJuIGRhdGE7IH0sCi0gICAgICAgIFtzZWdtZW50LCBzaXplID0gc2l6ZSgpXSgpIHsgcmV0
dXJuIHNpemU7IH0KKyAgICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQog
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGYy
M2Y1ZDY5YWQzMmVkNjQwYjk1NzdiMmU2YzQ1NDkxODM5MzY4YWQuLjliZjc5N2MxYzE2OTk1YzFl
YTI2YzMwYTE1ZmEzMDVhMDExYTEzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtNjIsMTQ2ICs2MiwxMzMgQEAgY2xhc3MgRGVjb2RlcjsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZm
ZXJEYXRhVmlldzsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworLy8gRGF0YSB3cmFwcGVkIGJ5
IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZl
cmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCisvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0
YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCitjbGFzcyBEYXRhU2VnbWVudCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcik7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7
IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgIGVudW0gY2xhc3MgTWF5
VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9k
ZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOwot
Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7
CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRh
dGEpCisgICAgeworICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKKyAgICB9CiAKLSNpZiBV
U0UoRk9VTkRBVElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25z
dDsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAg
ICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFw
cGVuZChOU0RhdGEgKik7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0
YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShDRkRhdGFSZWYpOwotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNl
bmRpZgotCiAjaWYgVVNFKEdMSUIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShHQnl0ZXMqKTsKLSAgICBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7Cisg
ICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAj
ZW5kaWYKLQogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21l
bnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotICAg
IC8vIENhbGxpbmcgZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUgY29w
aWVkIGludG8gb25lIHNlZ21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8gSXRl
cmF0ZSB0aGUgc2VnbWVudHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAgICAv
LyBGSVhNRTogQXVkaXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFj
ZSB0aGVtIHdpdGggaXRlcmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3QqIGRh
dGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rvcjx1
aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OwotICAgIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVf
dCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwotCi0gICAgLy8gU2ltaWxhciB0byBjb3B5
RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQg
d2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgotICAgIFZl
Y3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+
IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAKLSAgICAvLyBDcmVhdGVz
IGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0
byB0aGF0Ci0gICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZm
ZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0
ZUFycmF5QnVmZmVyKCkgY29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2l6ZTsgfQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsg
fQotCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9pZCBhcHBl
bmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4m
Jik7Ci0KLSAgICB2b2lkIGNsZWFyKCk7CisgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAgICAgICAg
RnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAgICAgRnVuY3Rpb248c2l6ZV90
KCk+IHNpemU7CisgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsK
LSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7
Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVf
dCBsZW5ndGgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92
aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1v
dmUocHJvdmlkZXIpKSk7IH0KIAotICAgIC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50
IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhl
ciBvYmplY3RzLgotICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0
ZSBhIG5ldyBEYXRhU2VnbWVudC4KLSAgICBjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewotICAgIHB1YmxpYzoKLSAgICAgICAgV0VC
Q09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgICAgICBXRUJDT1JF
X0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdF
QkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2Vu
ZGlmCiAKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsK
LSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0
YSkpKTsKLSAgICAgICAgfQorICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0
OwogCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lm
IFVTRShDRikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0
cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChX
VEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkp
IHsgfQogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21l
bnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50
KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1v
dmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgc3RhdGlj
IFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBk
YXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsg
fQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4m
JiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNl
bmRpZgotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50
KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRl
cikKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQogCi0g
ICAgICAgIHN0cnVjdCBQcm92aWRlciB7Ci0gICAgICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50
OF90KigpPiBkYXRhOwotICAgICAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7Ci0gICAg
ICAgIH07Ci0KLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVy
JiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShw
cm92aWRlcikpKTsgfQotCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgICAgIFJldGFpblB0cjxO
U0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICAgICAgYm9vbCBjb250
YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBEYXRh
U2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90
PiwKICNpZiBVU0UoQ0YpCi0gICAgICAgIERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+
JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsg
fQorICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShHTElCKQot
ICAgICAgICBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAgICAg
OiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQdHI8R0J5
dGVzPiwKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdtZW50KFJl
ZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25l
ZEJ1ZmZlcj4sCisjZW5kaWYKKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisg
ICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CisjaWYgIVVTRShGT1VOREFUSU9OKQorICAgIGZyaWVuZCBjbGFz
cyBTaGFyZWRCdWZmZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKICNlbmRpZgotICAgICAgICBEYXRh
U2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQo
UHJvdmlkZXImJiBwcm92aWRlcikKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1v
dmUocHJvdmlkZXIpKSB7IH0KK307CisKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4geworcHVi
bGljOgorICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKTsgfQorICAgIHN0YXRp
YyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIHN0YXRpYyBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShi
dWZmZXIpKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0
ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsgfQorICAgIHN0YXRpYyBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3Zp
ZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92
ZShwcm92aWRlcikpKTsgfQogCi0gICAgICAgIHN0ZDo6dmFyaWFudDxWZWN0b3I8dWludDhfdD4s
CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TQXJy
YXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhKik7CisjZW5kaWYKICNp
ZiBVU0UoQ0YpCi0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFS
ZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5dGVz
PiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGNyZWF0ZShHQnl0ZXMqKTsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAg
ICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZm
ZXImKTsKICNlbmRpZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCi0g
ICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwotICAgICAgICBmcmllbmQgY2xh
c3MgU2hhcmVkQnVmZmVyOwotICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4
X3Q+IGNvcHlEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+
IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisKKyAgICAvLyBTaW1p
bGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRh
dGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGlz
IG5vdCBzaGFyZWQpLgorICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOworCisgICAg
Ly8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1l
cmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgorICAgIFdFQkNPUkVf
RVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsK
KworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25zdDsKIAotICAgIHZvaWQgZm9yRWFjaFNl
Z21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+Jikg
Y29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHBy
ZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnRpZ3VvdXMoKSBjb25z
dDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjb3B5
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRp
b24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRv
KHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsK
KworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248
dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkg
Y29uc3Q7CisKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAv
LyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50
cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIxMCw1NiArMTk3LDE3NyBA
QCBwdWJsaWM6CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBWZWN0b3I8RGF0YVNlZ21l
bnRWZWN0b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9y
IGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9CiAgICAgRGF0YVNl
Z21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVu
dHMuZW5kKCk7IH0KLSAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKIAogICAgIC8vIGJlZ2luIGFuZCBl
bmQgdGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRpbWUuCi0gICAgU2hhcmVk
QnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9z
aXRpb24pIGNvbnN0OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhpbnRN
ZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNv
ZGVyIGRlY29kZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9w
ZXJhdG9yPT0ob3RoZXIpOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVm
ZmVyJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQorICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZjxTaGFyZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CiAKLXByaXZhdGU6
Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZl
Y3Rvcjx1aW50OF90PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50
OjpQcm92aWRlciYmKTsKK3Byb3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVy
OworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29sIG1fY29udGln
dW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6
ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNFKENGKQotICAgIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAg
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEdCeXRlcyopOwogI2VuZGlmCiAjaWYgVVNFKEdT
VFJFQU1FUikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXIm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEdz
dE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9Owog
Ci0gICAgdm9pZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKK3ByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhcHBlbmQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBVU0UoRk9V
TkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7CisjZW5k
aWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVm
KTsKKyNlbmRpZgogCi0gICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVj
dG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZm
ZXIuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjbGVhcigpOwogCisgICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEg
VmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0YWtl
RGF0YSgpOwogICAgIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkqIGdldFNlZ21lbnRGb3JQ
b3NpdGlvbihzaXplX3QgcG9zaXRpdGlvbikgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
OwotCi0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLSAgICBtdXRhYmxlIERhdGFTZWdtZW50VmVj
dG9yIG1fc2VnbWVudHM7Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG11dGFibGUgYm9vbCBt
X2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50IHsgZmFsc2UgfTsKICAgICBib29sIGludGVy
bmFsbHlDb25zaXN0ZW50KCkgY29uc3Q7CiAjZW5kaWYKIH07CiAKLWlubGluZSBWZWN0b3I8dWlu
dDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCisvLyBBIFNoYXJlZEJ1ZmZlciBpcyBh
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGlyZWN0bHkgYWNjZXNzIGl0
cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhvZHMuCitjbGFzcyBTaGFy
ZWRCdWZmZXIgOiBwdWJsaWMgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB7CitwdWJsaWM6CisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIXNp
emVvZi4uLihBcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcigpKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAx
CisgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4g
JiYuLi4pKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IGF1dG8gYnVmZmVyID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBXRUJD
T1JFX0VYUE9SVCBjb25zdCB1aW50OF90ICpkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OworCisgICAgZW51bSBj
bGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5
VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgor
I2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVh
dGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShHTElCKQorICAgIFdFQkNPUkVfRVhQ
T1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNlbmRpZgorCitwcml2
YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50
PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKTsKK307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRlZmF1
bHQ7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgeworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0
byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFzIGFsbCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAgICAgLy8gb25j
ZSBjcmVhdGVkLgorICAgICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPmhhc09uZVJlZigpKSB7
CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoKmJ1ZmZlcik7CisgICAgfQorICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVy
ZW5jZSB0byB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhcyBhbGwgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAg
ICAgICAgaWYgKGJ1ZmZlci0+aGFzT25lUmVmKCkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVyID0g
V1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IGFwcGVuZChXVEZNb3ZlKGJ1ZmZlci5nZXQoKSkpOworICAgIH0KKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUuLi4gQXJncz4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKEFyZ3MmJi4uLiBhcmdzKQor
ICAgICAgICA6IG1fYnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBB
cmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5z
dXJlQnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+
KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Qg
eyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAh
bV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/
IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQg
cmVzZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKQorICAgIHsK
KyAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgfQorCisgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyOyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsgfQorICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlKCkKKyAg
ICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAgICByZXR1cm4gbV9idWZmZXIucmVs
ZWFzZU5vbk51bGwoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBlbnN1cmVCdWZmZXIo
KQorICAgIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgICAgIG1fYnVmZmVyID0g
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgfQorICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKK307CisKK2lubGluZSBWZWN0b3I8dWludDhf
dD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNP
bmVSZWYoKSkKICAgICAgICAgcmV0dXJuIHRha2VEYXRhKCk7CkBAIC0yNjgsMTcgKzM3NiwxNyBA
QCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogCiBj
bGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0gICAg
U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNp
emVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXpl
ID0gc3RkOjpudWxsb3B0KTsKKyAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21l
bnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25z
dCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKICAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0OwogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBj
aGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSgpKTsgfQorICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25z
dDsKICAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKICNp
ZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBj
b25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9zZWdtZW50
OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBjb25zdCBz
aXplX3QgbV9zaXplOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmNwcAppbmRleCBjZGI2ZTcwMzQwNGQ0MjZkZDIxYjQ3OWZhODlj
MGRhOWI4YzQ5ZjhlLi45ZDA1NWNlMjdkODhjM2Q2MmU1YmQxY2Q0NmFkOTFmNWNjNDMxZjQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJM
RShNSFRNTCkKIAotU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcikK
K1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKQog
ICAgIDogbV9pdGVyYXRvckN1cnJlbnQoYnVmZmVyLT5iZWdpbigpKQogICAgICwgbV9pdGVyYXRv
ckVuZChidWZmZXItPmVuZCgpKQogICAgICwgbV9zZWdtZW50KG1faXRlcmF0b3JDdXJyZW50ICE9
IG1faXRlcmF0b3JFbmQgPyBtX2l0ZXJhdG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0YSgpIDogbnVs
bHB0cikKQEAgLTQ0LDcgKzQ0LDcgQEAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWMKIHsKIH0KIAot
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1
ZmZlciogYnVmZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCitTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVm
ZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVudChidWZm
ZXItPmJlZ2luKCkpCiAgICAgLCBtX2l0ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAgLCBt
X3NlZ21lbnQobV9pdGVyYXRvckN1cnJlbnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRlcmF0b3JD
dXJyZW50LT5zZWdtZW50LT5kYXRhKCkgOiBudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKaW5kZXggNWQ0ZTZmZWU1ODJjNjYx
NmZkMDdlMzk5NGZmNzVjOGYwN2EyZmNlMS4uMWM2NDA4ZDRjNzM2YTFjNGE0NWNlZTdiM2Y2OTY1
N2JjOWEyNjE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXJDaHVua1JlYWRlci5oCkBAIC00MSw4ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgewogcHVibGljOgot
ICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFZlY3Rvcjxj
aGFyPiYgc2VwYXJhdG9yKTsKLSAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZm
ZXIqLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpOworICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcik7
CisgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNv
bnN0IGNoYXIqIHNlcGFyYXRvcik7CiAKICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBWZWN0
b3I8Y2hhcj4mKTsKICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBjaGFyKik7CkBAIC01OCw4
ICs1OCw4IEBAIHB1YmxpYzoKICAgICBzaXplX3QgcGVlayhWZWN0b3I8dWludDhfdD4mLCBzaXpl
X3QpOwogCiBwcml2YXRlOgotICAgIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNv
bnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JDdXJyZW50OwotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JFbmQ7CisgICAgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1f
aXRlcmF0b3JDdXJyZW50OworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yRW5kOwogICAgIGNvbnN0IHVp
bnQ4X3QqIG1fc2VnbWVudCB7IG51bGxwdHIgfTsKICAgICBzaXplX3QgbV9zZWdtZW50SW5kZXgg
eyAwIH07CiAgICAgVmVjdG9yPGNoYXI+IG1fc2VwYXJhdG9yIHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKaW5kZXggYjJkN2E1NTBkNDYw
ZTk0Y2QzMTUxMzRhMzE5NWJjZDkxYzdiNzg5NC4uYTRiNGJiMTA0YjRkODQwMTViOGFhNWI1M2U3
ZGZhNzg4Y2VkMjVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGlj
UGFzdGVib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVi
b2FyZC5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZVN0
cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9jdXN0
b21EYXRhLndyaXRlU3RyaW5nKHR5cGUsIHZhbHVlKTsKIH0KIAotdm9pZCBTdGF0aWNQYXN0ZWJv
YXJkOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRh
dGEpCit2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgbV9ub25EZWZhdWx0
RGF0YVR5cGVzLmFkZCh0eXBlKTsKICAgICBtX2N1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIFdU
Rk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGlj
UGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5o
CmluZGV4IGMwOWI2ZGUzMWYyZWRlYmUwMTg4ZGM5YzQ2NmEyNzFlMWI4YjllMTQuLmVkZDcxMzYy
M2YwNmQyMmIzOGU4MzJhMjgzN2ZlNjY5OTlkZmQ3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBTdGF0aWNQYXN0ZWJvYXJkIGZpbmFsIDogcHVibGljIFBhc3RlYm9hcmQg
ewogcHVibGljOgpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHJlYWRTdHJp
bmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBmaW5hbDsKIAogICAgIHZvaWQgd3Jp
dGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpIGZpbmFsOwot
ICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKTsKKyAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdJbkN1c3Rv
bURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHZvaWQg
Y2xlYXIoKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5m
by5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaAppbmRl
eCA2ODc5NTkwMGM1YWRmOWNjOTA0NWUwZWFiYjIyYjE4ZmE2Njk2MzE0Li4xZDY1YmM0MDNhZDg1
MjQzYzY3MjVlNzA0NDhkNmNkYWRjY2NjZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogc3RydWN0IE5vd1BsYXlpbmdJbmZvQXJ0d29yayB7CiAgICAgU3RyaW5nIHNyYzsK
ICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRh
OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CiAKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTm93UGxheWluZ0luZm9BcnR3b3JrJiBvdGhlcikgY29uc3QK
ICAgICB7CkBAIC02Nyw3ICs2Nyw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBz
dGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gTm93UGxheWluZ0luCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGltYWdlRGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGltYWdlRGF0YSkp
CiAgICAgICAgIHJldHVybiB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAppbmRleCBlOGIx
OWJmMzRlYmEyM2I4NTcyMDdiZTg4Y2UxYjQ1YmY4ZjJjY2MzLi5mMzIxNDI5NTFiMTc5OTZlNmNl
MTY3NTYzMTZiZmQ0NzNmYWE0ZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCkBAIC0xMzAs
NyArMTMwLDcgQEAgY2xhc3MgQXVkaW9GaWxlUmVhZGVyV2ViTURhdGEgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCiAgICAgUmVmPEF1ZGlvVHJhY2tQcml2YXRlV2ViTT4gbV90cmFjazsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5
YTRkM2FiMzZlMmEwYzA4MTJjOTRlMTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUx
MDg5YjU3MTlmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICsz
NDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8o
Ym9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUs
IGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0
d29yayAmJiBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0
byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmst
PmltYWdlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1F
VHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlh
UmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93
UGxheWluZ0luZm8uYXJ0d29yay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXgg
NmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uY2M5YTY3NTU5ZmNjYjlk
NWQzMDM3NGY4N2I1OTA1ZTc5ODMzZjE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQorRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0
YSkKIHsKICAgICBhcHBlbmQoZGF0YSk7CiB9CkBAIC01NSwxMiArNTUsMTIgQEAgUmV0YWluUHRy
PENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogfQogI2VuZGlm
CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YVJlZiBkYXRh
KQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShDRkRhdGFSZWYgZGF0YSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoZGF0YSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIoZGF0YSkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRl
ZFNvb24oKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90
TmVlZGVkU29vbigpIGNvbnN0CiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IG1fc2Vn
bWVudHMpIHsKICAgICAgICAgaWYgKGVudHJ5LnNlZ21lbnQtPmhhc09uZVJlZigpKSB7CkBAIC03
MCw5ICs3MCw5IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigp
IGNvbnN0CiAgICAgfQogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBk
YXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEp
CiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBB
U1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50
cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAgICBt
X3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgK
aW5kZXggMDc5N2RmYmU4ZDAxOGJlNjM2MTc0NGM1OGY4OTJkZDU2ZWQ2ODljNS4uY2JlODc3MWE0
NWQ4NjJjYjVhYjA1ZWNhMzk5OTI3ZTA3ODM4ZjU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
ci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVk
QWRkaW5nRGF0YSgpIG92ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50
RGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBy
ZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICAgICBDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIGlzUmVxdWlyZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIu
bW0KaW5kZXggNDI5MGRiMTI4ZDAwMGE0MGVlZjcwZmQyOTQxZDYzNDQ5MDQ2ZGUwMy4uMmVmMjcw
MWZlNjc4YmY5YjkyZGIyMTJiYmVhNWM5MTVhM2ZjM2EyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIubW0KQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50
RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQogICAgIHNlbWFwaG9yZS53YWl0KCk7CiB9CiAK
LVJlZjxTaGFyZWRCdWZmZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNl
bWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE5ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAogewogICAgIEFTU0VS
VChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVw
bGFjZW1lbnREYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCmluZGV4IDA2OGNk
Y2IzODNmNDIzNjVhYzMyNjRlMjI5YTZkNjNiYzJiNGFiZDYuLjY3OWFlOTMyOTUxN2UxZjM5NDNi
YTU3NjJhYzhmNTZlODYwYzhjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaApAQCAtNDUs
NyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEo
KSBvdmVycmlkZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnRE
YXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAg
IENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92ZXJy
aWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Q
YXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCmluZGV4IGI0NjFmOTc1MzZk
ZTNhMTU4MTNhNTgyN2I4NjcxMzhiOTZkNGYzOGMuLjFjOTYwNDcxNmI0MjY5M2Q1ZTQ2YzJlMjNl
OTQxZGEwMGM4M2U0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCkBAIC0xMDksNyAr
MTA5LDcgQEAgdm9pZCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6ZmluaXNoZWRBZGRp
bmdEYXRhKCkKICAgICB1cGRhdGVGaWx0ZXJTdGF0ZSgpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVy
PiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QK
K1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
cjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkp
OwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJk
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2Eu
bW0KaW5kZXggNmYyOGU4MjQzNjBjY2QzMDg2YzAzMThmYWU0MDk4ZjFlZGUyOGUyNS4uYjgxNzA4
MTdjZWM1OWUyMmQzYzBlOWE3OGYxNDZjMDMzZTRjMTY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpAQCAtNDcsNyArNDcsNyBAQCBz
dGF0aWMgTlNCaXRtYXBJbWFnZUZpbGVUeXBlIGJpdG1hcFBOR0ZpbGVUeXBlKCkKIH0KICNlbmRp
ZiAvLyBQTEFURk9STShNQUMpCiAKLS8vIE1ha2luZyB0aGlzIG5vbi1pbmxpbmUgc28gdGhhdCBX
ZWJLaXQgMidzIGRlY29kaW5nIGRvZXNuJ3QgaGF2ZSB0byBpbmNsdWRlIFNoYXJlZEJ1ZmZlci5o
LgorLy8gTWFraW5nIHRoaXMgbm9uLWlubGluZSBzbyB0aGF0IFdlYktpdCAyJ3MgZGVjb2Rpbmcg
ZG9lc24ndCBoYXZlIHRvIGluY2x1ZGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci5oLgogUGFzdGVi
b2FyZFdlYkNvbnRlbnQ6OlBhc3RlYm9hcmRXZWJDb250ZW50KCkgPSBkZWZhdWx0OwogUGFzdGVi
b2FyZFdlYkNvbnRlbnQ6On5QYXN0ZWJvYXJkV2ViQ29udGVudCgpID0gZGVmYXVsdDsKIApAQCAt
MjExLDkgKzIxMSw5IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5
VW5zYWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFw
SW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxv
Y10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9u
VXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCmluZGV4IDllZTBjMGI1NWQ3
OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLjI0MGEzNjdiZTJhYzc2NWI3OGJkZTcxMDA0
NjY2NGJjYjFjZTU0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEgQEAKICNpbXBvcnQgPHd0Zi9j
b2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRh
IDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5T
VUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOworLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2Vn
bWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemU7
CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSB7Ci0gICAg
UmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IF9kYXRhU2Vn
bWVudDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVu
dDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJbnRlZ2VyIF9zaXplOwogfQpA
QCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxvY107CiB9
CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdl
cilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9z
aXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCiB7CiAgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC04OCwx
MiArODgsMTIgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkKK1JlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoTlNEYXRhICpkYXRhKQog
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihicmlkZ2VfY2FzdChkYXRh
KSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoYnJp
ZGdlX2Nhc3QoZGF0YSkpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEg
KmRhdGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEp
CiB7CiAgICAgcmV0dXJuIGFwcGVuZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CkBAIC0xMDUsMTAg
KzEwNSw4IEBAIFJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkg
Y29uc3QKIAogUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEo
KSBjb25zdAogewotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwogICAgIGlmICghbV9zZWdt
ZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRy
LCBudWxscHRyLCAwKSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwogICAg
IHJldHVybiBicmlkZ2VfY2FzdChtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgp
KTsKIH0KIApAQCAtMTE5LDE0ICsxMTcsMTQgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmV0YWluUHRyPE5TQXJyYXk+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAorUmV0YWluUHRyPE5TQXJyYXk+IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKIHsKICAgICByZXR1cm4gY3Jl
YXRlTlNBcnJheShtX3NlZ21lbnRzLCBbXSAoYXV0byYgc2VnbWVudCkgewogICAgICAgICByZXR1
cm4gc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKTsKICAgICB9KTsKIH0KIAotUmV0YWlu
UHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29u
c3QKK1JldGFpblB0cjxOU0RhdGE+IERhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAog
ewogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGlu
aXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFu
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNl
LmgKaW5kZXggZmJjMjgzZmJjMzM2OWJmODI3ZTMxNjk5NGM0Yzk0ZTA2MzYzY2I4MS4uMmRlNDE5
MzRkYTE5ODc5ZDc1YzBkZjhhODllNjRlNTk5YzI5YWUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCkBAIC00Niw3ICs0
Niw3IEBAIGNsYXNzIExvZ2dlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgQ0RNSW5zdGFu
Y2VTZXNzaW9uOwogc3RydWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb247CiAKQEAgLTU0LDcg
KzU0LDcgQEAgY2xhc3MgQ0RNSW5zdGFuY2VDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
Q0RNSW5zdGFuY2VDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZUNs
aWVudCgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxp
emF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZl
ZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsK
IAogLy8gSmF2YVNjcmlwdCdzIGhhbmRsZSB0byBhIENETUluc3RhbmNlLCBtdXN0IGJlIHVzZWQg
ZnJvbSB0aGUKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICB2aXJ0dWFs
IHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0
YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxDRE1JbnN0
YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCmlu
ZGV4IDM3Y2QwN2M3YmYyZGM3NWU0MWZkNWM2YzdkZWNmNDNlMTAzOWUxMTQuLmQyNTkyMjViYTll
MDJhNjRkMGNlY2Q2MTUxZmRmOTNmNGYyNDY2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCkBA
IC00MywxNiArNDMsMTYgQEAgY2xhc3MgTG9nZ2VyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNs
YXNzIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1J
bnN0YW5jZVNlc3Npb25DbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5j
ZVNlc3Npb25DbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB1c2luZyBLZXlTdGF0dXMgPSBDRE1L
ZXlTdGF0dXM7Ci0gICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxS
ZWY8U2hhcmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47CisgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9y
ID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIEtleVN0YXR1
cz4+OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3Im
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNz
YWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdl
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikg
PSAwOwogICAgIHVzaW5nIFBsYXRmb3JtRGlzcGxheUlEID0gdWludDMyX3Q7CiAgICAgdmlydHVh
bCBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSA9IDA7CkBAIC03OCwxMyArNzgsMTMgQEAg
cHVibGljOgogICAgICAgICBTdWNjZWVkZWQsCiAgICAgfTsKIAotICAgIHVzaW5nIExpY2Vuc2VD
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9u
LCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSA9IDA7CisgICAgdXNpbmcg
TGljZW5zZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVk
c0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47CisgICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNl
Q2FsbGJhY2smJikgPSAwOwogCiAgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gQ0RNSW5zdGFu
Y2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3I7Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0
ZDo6cGFpcjxNZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIE1lc3Nh
Z2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47
CiAgICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYm
IGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwg
c3RkOjpvcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQp
PjsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRh
dGVDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKIAogICAgIGVudW0g
Y2xhc3MgU2Vzc2lvbkxvYWRGYWlsdXJlIDogdWludDhfdCB7CiAgICAgICAgIE5vbmUsCkBAIC0x
MDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIHVzaW5nIENsb3NlU2Vzc2lvbkNhbGxiYWNrID0g
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VTZXNzaW9u
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSA9IDA7CiAK
LSAgICB1c2luZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChLZXlTdGF0dXNWZWN0b3ImJiwgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4m
JiwgU3VjY2Vzc1ZhbHVlKT47CisgICAgdXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYsIHN0ZDo6b3B0aW9uYWw8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmLCBTdWNjZXNzVmFsdWUpPjsKICAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vu
c2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpID0gMDsKIAogICAgIHZpcnR1YWwg
dm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZh
dGUuaAppbmRleCBjYzZkYzdmMTQwY2Q2N2QyYjdiODRmNmFiMmMyODQzMTZkZmRkY2NmLi41MmE2
MTQ4YzgzY2Q1MzkzYzhmODc0ZWQ4NWFkOGJmMjdlNWJlNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC03Myw4ICs3
Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSA9IDA7
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFy
ZWRCdWZmZXImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
YW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2Fu
aXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5j
cHAKaW5kZXggZjIxOGY5NzkwNGZiYmE0OWYxZWJkZjQ4ZTIwNWZlNzNkZmFmYjY0OC4uNGJhNzVi
ZjAwZDlmNzEzYjVhZmJiYTc5MzQwMTk3MTZjZDhmMDM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcApAQCAtMjI3LDcgKzIy
Nyw3IEBAIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIEtleVN0b3JlOjpjb252
ZXJ0VG9KU0tleVN0YXR1c1ZlY3RvcigpIGNvbnN0CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uOjpL
ZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzVmVjdG9yOwogICAgIGtleVN0YXR1c1ZlY3Rvci5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KG51bUtleXMoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBrZXkg
OiBtX2tleXMpCi0gICAgICAgIGtleVN0YXR1c1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQoc3RkOjpw
YWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1cz4geyBr
ZXktPmlkQXNTaGFyZWRCdWZmZXIoKSwga2V5LT5zdGF0dXMoKSB9KTsKKyAgICAgICAga2V5U3Rh
dHVzVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+LCBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1cz4geyBrZXktPmlkQXNTaGFyZWRC
dWZmZXIoKSwga2V5LT5zdGF0dXMoKSB9KTsKICAgICByZXR1cm4ga2V5U3RhdHVzVmVjdG9yOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1Qcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJv
eHkuaAppbmRleCBhNTg0YjZjZDI2NmIwOTgwOTAyNTRkN2RjYmRkYmY2MGQ5MzMxZmJiLi5lMWUw
OThhMWQ1ZjVmZmM2NWMyYTQ4ZmE0MGFhOTcyZmU4OWUxZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKQEAgLTYxLDcgKzYxLDcg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgS2V5SGFuZGxl
KHN0YXR1cywgV1RGTW92ZShrZXlJRCksIFdURk1vdmUoa2V5SGFuZGxlVmFsdWUpKSk7CiAgICAg
fQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9pZC5zaXplKCkpOyB9CisgICAg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9pZC5zaXplKCkpOyB9CiAK
ICAgICBib29sIHRha2VWYWx1ZUlmRGlmZmVyZW50KEtleUhhbmRsZVZhbHVlVmFyaWFudCYmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlhYThlYjlhMmJiMDcxMWVhZTA4MGYzNzdlMjJi
OTgzNC4uZmNhNmYyMzg4YTU2YTZhMWM3MjQ3MGU1YTQ2ZmRkMjhmMDczNzUwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRp
ZXMuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNl
IENETVV0aWxpdGllcyB7CiAKLVJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNP
Tk9iamVjdChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8g
RmFpbCBvbiBsYXJnZSBidWZmZXJzIHdob3NlIHNpemUgZG9lc24ndCBmaXQgaW50byBhIDMyLWJp
dCB1bnNpZ25lZCBpbnRlZ2VyLgogICAgIHNpemVfdCBzaXplID0gYnVmZmVyLnNpemUoKTsKQEAg
LTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8v
IFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0dXJuaW5nIHRoZSByb290IG9i
amVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CiAKICAgICBh
dXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1V
dGlsaXRpZXMuaAppbmRleCA3NGY1MTViMGJkMmE4NzE2OGVlZjI0YjE4Zjk1ZGVhYmVlODI4ZTZj
Li5mY2Y1YmRkYTdjNTk3ZDNjM2FjMzQ5ZWUxNzg5ZTRhZDZlMGM5NTlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaApA
QCAtMzUsMTEgKzM1LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIENETVV0
aWxpdGllcyB7CiAKLVJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBT
aGFyZWRCdWZmZXImKTsKK1JlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFy
S2V5LmNwcAppbmRleCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVkLi4z
MWE5ZmRmYTAyZDZkMDBjYTI2MTgyNTJkZWQ5MzUzMTNkYzU4YWE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VMaWNl
bnNlUmVsZWFzZUFja25vd2xlZGdlbWVudEZvcm1hdChjb25zdCBKU09OOjpPYmplY3QmIHJvb3Qp
CiAvLyBdOwogCiAvLyBUaGlzIGZ1bmN0aW9uIGV4dHJhY3RzIHRoZSBLZXlJZHMgY291bnQgYW5k
IHRoZSBsb2NhdGlvbiBvZiB0aGUgZmlyc3QgS2V5SWQgaW4gaW5pdERhdGEgYnVmZmVyLgotc3Rh
dGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZy
b21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBzdGQ6
OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0lu
aXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIHN0
ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCgwLCAwKTsKIApAQCAtMTM4LDcg
KzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5
aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGluaXREYXRhLmlzRW1w
dHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5p
dERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRh
KCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgpOwogICAgIHVu
c2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CkBAIC0xODgsMTUg
KzE4OSwxNSBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtl
eWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogfQogCiAvLyBUaGlzIGZ1bmN0aW9u
IGNoZWNrcyBpZiB0aGUgaW5pdERhdGEgc2hhcmVkQnVmZmVyIGlzIGEgdmFsaWQgQ0VOQyBpbml0
RGF0YS4KLXN0YXRpYyBib29sIGlzQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5p
dERhdGEpCitzdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBr
ZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGluaXREYXRh
KTsKICAgICByZXR1cm4gKChrZXlJZHNNYXAuZmlyc3QpICYmIChrZXlJZHNNYXAuc2Vjb25kKSk7
CiB9CiAKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGljIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJ
ZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5
SWRzOwogCiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0
cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWdu
ZWQga2V5SWRDb3VudCA9IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNCw5ICsyMDUsMTAgQEAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFs
aWQgQ0VOQyBpbml0RGF0YS4KICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQotICAgICAg
ICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAotICAgIGF1
dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEg
PSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3Vz
SW5pdERhdGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVh
dGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAt
MjI0LDE3ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNG
cm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIG9iamVjdC0+
c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29u
RGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5k
KGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7
CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsK
KyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdl
Yk1Jbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEg
aXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwg
aW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQot
ICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAog
ICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlk
c0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDEyICsyNDcsMTIgQEAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNPTiBvYmplY3Qg
Y29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMiCiAgICAgLy8g
QW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0aGUgYmFz
ZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5nIHRoZSBrZXkg
SUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9T
dHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBrZXlJZHNBcnJh
eS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0LT5zZXRBcnJh
eSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0g
b2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRh
dGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBr
ZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJl
dHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xlYXJLZXkmIENETUZhY3RvcnlD
bGVhcktleTo6c2luZ2xldG9uKCkKQEAgLTM4OCw3ICszOTAsNyBAQCBib29sIENETVByaXZhdGVD
bGVhcktleTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jv
b2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNv
bnN0CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhlIGluaXREYXRhIGJ1ZmZlciBhcyBhbiBKU09OIG9i
amVjdCBpbiBrZXlpZHMgY2FzZS4KICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoaW5pdERhdGFUeXBlLCAia2V5aWRzIikgJiYgQ0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmpl
Y3QoaW5pdERhdGEpKQpAQCAtNDA1LDcgKzQwNyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5
OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVD
bGVhcktleTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBj
b25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVDbGVhcktleTo6
c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkg
Y29uc3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUgcmVzcG9uc2UgYnVmZmVyIGFzIGFuIEpTT04g
b2JqZWN0LgogICAgIGlmICghQ0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QocmVzcG9uc2Up
KQpAQCAtNDMxLDcgKzQzMyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6aW5pdGlhbGl6
ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyCiAgICAgY2FsbGJh
Y2soc3VjY2VlZGVkKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3ZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewog
ICAgIC8vIFJlamVjdCBzZXR0aW5nIGFueSBzZXJ2ZXIgY2VydGlmaWNhdGUuCiAgICAgY2FsbGJh
Y2soRmFpbGVkKTsKQEAgLTQ1Myw3ICs0NTUsNyBAQCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9u
PiBDRE1JbnN0YW5jZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKCkKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KCp0aGlzKSk7CiB9CiAKLXZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEs
IExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVh
cktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VD
YWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHN0YXRpYyB1aW50MzJfdCBzX3Nlc3Npb25JZFZh
bHVlID0gMDsKICAgICArK3Nfc2Vzc2lvbklkVmFsdWU7CkBAIC00NzUsNyArNDc3LDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUs
IGNvbnN0IEF0b21TdHJpbmcmIGkKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExp
Y2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCiB7CiAjaWYgTE9HX0RJU0FCTEVECiAgICAgLy8gV2Ugb25seSB1c2UgdGhlIHNlc2lv
biBJRCBmb3IgZGVidWcgbG9nZ2luZy4gVGhlIHZlcmJvc2UgcHJlcHJvY2Vzc29yIGNoZWNrcyBh
cmUgYmVjYXVzZQpAQCAtNTY2LDcgKzU2OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xl
YXJLZXk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlCiAg
ICAgQVNTRVJUKHNlc3Npb25JZCA9PSBtX3Nlc3Npb25JRCk7CiAKICAgICBhdXRvIGRpc3BhdGNo
Q2FsbGJhY2sgPQotICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgJmNhbGxi
YWNrXShLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNWZWN0b3IsIHN0ZDo6b3B0aW9uYWw8UmVm
PFNoYXJlZEJ1ZmZlcj4+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2Nlc3MpIHsKKyAgICAg
ICAgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sICZjYWxsYmFja10oS2V5U3RhdHVzVmVj
dG9yJiYga2V5U3RhdHVzVmVjdG9yLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4mJiBtZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VzcykgewogICAgICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZCgKICAgICAgICAgICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KndlYWtUaGlzIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGtleVN0YXR1c1ZlY3Rv
ciA9IFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSks
IHN1Y2Nlc3NdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
CkBAIC01NzksNyArNTgxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVt
b3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKICAgICAvLyBDb25z
dHJ1Y3QgdGhlIEtleVN0YXR1c1ZlY3RvciBvYmplY3QsIHJlcHJlc2VudGluZyByZWxlYXNlZCBr
ZXlzLCBhbmQgdGhlIG1lc3NhZ2UgaW4gdGhlCiAgICAgLy8gJ2xpY2Vuc2UgcmVsZWFzZScgZm9y
bWF0LgogICAgIEtleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNWZWN0b3IgPSBtX2tleVN0b3JlLmFs
bEtleXNBcyhDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1czo6UmVsZWFzZWQpOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2U7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IG1lc3NhZ2U7CiAgICAgewogICAgICAgICAvLyBDb25zdHJ1Y3QgSlNPTiB0aGF0IHJl
cHJlc2VudHMgdGhlICdsaWNlbnNlIHJlbGVhc2UnIGZvcm1hdCwgY3JlYXRpbmcgYSAna2lkcycg
YXJyYXkKICAgICAgICAgLy8gb2YgYmFzZTY0VVJMLWVuY29kZWQga2V5IElEcyBmb3IgYWxsIGtl
eXMgdGhhdCB3ZXJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNlc3Npb24uCkBAIC01OTMsMTQgKzU5
NSwxNCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZW1vdmVTZXNzaW9uRGF0
YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZQogICAgICAgICAgICAgcm9vdE9iamVjdC0+
c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGFycmF5KSk7CiAgICAgICAgIH0KIAotICAgICAgICAv
LyBDb3B5IHRoZSBKU09OIGRhdGEgaW50byBhIFNoYXJlZEJ1ZmZlciBvYmplY3QuCisgICAgICAg
IC8vIENvcHkgdGhlIEpTT04gZGF0YSBpbnRvIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBvYmpl
Y3QuCiAgICAgICAgIFN0cmluZyBtZXNzYWdlU3RyaW5nID0gcm9vdE9iamVjdC0+dG9KU09OU3Ry
aW5nKCk7CiAgICAgICAgIENTdHJpbmcgbWVzc2FnZUNTdHJpbmcgPSBtZXNzYWdlU3RyaW5nLnV0
ZjgoKTsKICAgICAgICAgbWVzc2FnZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2VDU3Ry
aW5nLmRhdGEoKSwgbWVzc2FnZUNTdHJpbmcubGVuZ3RoKCkpOwogICAgIH0KIAogICAgIG1fa2V5
U3RvcmUudW5yZWZBbGxLZXlzKCk7Ci0gICAgZGlzcGF0Y2hDYWxsYmFjayhXVEZNb3ZlKGtleVN0
YXR1c1ZlY3RvciksIFJlZjxTaGFyZWRCdWZmZXI+KCptZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpT
dWNjZWVkZWQpOworICAgIGRpc3BhdGNoQ2FsbGJhY2soV1RGTW92ZShrZXlTdGF0dXNWZWN0b3Ip
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oKm1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1
Y2NlZWRlZCk7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnN0b3JlUmVj
b3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKaW5k
ZXggOWMwNzQ3ZGMxYmQ4ZTY3ZjNiYTg2NGQ5YjgxMTMzNzYyNWM4YTY3OS4uOWUyN2ZlOTEyYzRk
YTA2N2ZiMjZjYWZiYzdmNmE2NTFkYTQ3NTI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5o
CkBAIC04Niw4ICs4Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkg
ZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IGZpbmFs
OwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29u
c3QgZmluYWw7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25z
dCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBm
aW5hbDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25z
ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZp
bmFsOwogfTsKIApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFuY2UK
ICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpDbGVhcktleTsgfQogICAgIHZvaWQgaW5pdGlh
bGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBB
bGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNz
Q2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hh
cmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxi
YWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcm
KSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsOwogICAg
IFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKQEAgLTEw
OSw4ICsxMDksOCBAQCBjbGFzcyBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleSBmaW5hbCA6IHB1
YmxpYyBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSB7CiBwdWJsaWM6CiAgICAgQ0RNSW5zdGFuY2VT
ZXNzaW9uQ2xlYXJLZXkoQ0RNSW5zdGFuY2VDbGVhcktleSYgcGFyZW50KQogICAgICAgICA6IENE
TUluc3RhbmNlU2Vzc2lvblByb3h5KHBhcmVudCkgeyB9Ci0gICAgdm9pZCByZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFs
OworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5h
bDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VT
ZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92
ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IGU5NjhlOTg1Yzdl
ZWNlZmU0MzVhYTkyMDVjNDRkZDM1YWVkOGUwZDAuLmVjZjRlMDhjOWI5OTFhZGUyNzNiZDQ0YzYw
YmIxNWZlMDE2MzViMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWRFbmNvZGVyR2VuZXJpYyBmaW5hbCA6IHB1YmxpYyBLZXll
ZEVuY29kZXIgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIv
U2hhcmVkQnVmZmVyR2xpYi5jcHAKaW5kZXggOGE4YzEwYjcwMjRjZmUwMzhlOWZhN2I3MTViZTI2
ODg5ZmMwNWUyOC4uOTM3ZDFmYjZmMGM4ZDdiNTFmMThmZjE1NTYwYjNiOTRhNzRmNjFiMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3Bw
CkBAIC0yNiwxNiArMjYsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQogewogICAgIEFTU0VSVChieXRl
cyk7CiAgICAgbV9zaXplID0gZ19ieXRlc19nZXRfc2l6ZShieXRlcyk7CiAgICAgbV9zZWdtZW50
cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKEdSZWZQdHI8R0J5dGVzPihieXRlcykp
IH0pOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0ZXMq
IGJ5dGVzKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihieXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIoYnl0ZXMpKTsKIH0KIAogR1JlZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlR0J5dGVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
aAppbmRleCA5ZmM0ZWE4MmViYmM3N2VhZDkwMTA4NTQzODA4MjllMTViYmFiNmY0Li5kYzFmYjE2
ZWEwYjE5NmM1ZDEzYmQ0MTE0ZTUwY2NkY2Q5YjM3YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5oCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEZvbnRDYWNoZTsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEdseXBoUGFn
ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IHN0cnVjdCBHbHlwaERhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5
ZGUxOTliMTRlODRiMjE5Li5mYmJjY2M0MzY4NDQ3NDkwODNjZTg5MWYzNjNmNmNjNDBmMjk3NDUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZv
cm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRm
b3JtRGF0YS5oCkBAIC03NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNl
IGNyZWF0ZWQsIG5vIGluc3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFi
bGUgd2F5KS4KIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGEgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IDRhODUzZWI2NDk1M2Q0YWU0ODM0Zjg3YzU0ODdh
Y2QzNjRjNTdkODEuLmUzMmEzNmM2MDc2MTkyMTY4YzZhMzc5MzE4Zjc4YWUxNzg5YzQ4MmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTEwNCw3ICsx
MDQsNyBAQCBib29sIEltYWdlOjppc1Bvc3RTY3JpcHRSZXNvdXJjZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBVUkwmIHVybCkKIH0KIAogCi1FbmNvZGVkRGF0YVN0YXR1cyBJbWFnZTo6
c2V0RGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQorRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2U6OnNldERhdGEoUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgbV9lbmNvZGVk
SW1hZ2VEYXRhID0gV1RGTW92ZShkYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmgKaW5kZXggNmEwODE2OTU3YWE5M2M0MTFhNTZjZDRjMmJjMjBkZDZkOTA0NGRl
Yy4uNjU1ZGZlNzNjZmY2YWQxZDA0ZjQ4YmMyMDE5ZWJiODA0MTdkNjEzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC03MCw3ICs3MCw3IEBAIGNsYXNzIEFm
ZmluZVRyYW5zZm9ybTsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFz
cyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogc3RydWN0IExlbmd0aDsKIAogLy8gVGhpcyBjbGFzcyBnZXRzIG5vdGlm
aWVkIHdoZW4gYW4gaW1hZ2UgY3JlYXRlcyBvciBkZXN0cm95cyBkZWNvZGVkIGZyYW1lcyBhbmQg
d2hlbiBpdCBhZHZhbmNlcyBhbmltYXRpb24gZnJhbWVzLgpAQCAtMTI0LDcgKzEyNCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25z
dCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2aXJ0dWFsIEltYWdlT3JpZW50YXRpb24g
b3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2U7
IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIEVuY29kZWREYXRhU3RhdHVzIHNldERhdGEoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgRW5jb2RlZERhdGFTdGF0dXMgc2V0RGF0YShSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdmlydHVhbCBFbmNv
ZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChib29sIC8qYWxsRGF0YVJlY2VpdmVkKi8pIHsgcmV0
dXJuIEVuY29kZWREYXRhU3RhdHVzOjpVbmtub3duOyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyB1
dGkoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAvLyBudWxsIHN0cmluZyBpZiB1bmtub3du
CkBAIC0xMzMsOCArMTMzLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lE
ZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwgPSB0cnVlKSA9IDA7CiAKLSAgICBTaGFyZWRCdWZm
ZXIqIGRhdGEoKSB7IHJldHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KLSAgICBjb25z
dCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWRJbWFnZURhdGEu
Z2V0KCk7IH0KKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgeyByZXR1cm4gbV9l
bmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQogCiAg
ICAgdmlydHVhbCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpOwogCkBAIC0yMDks
NyArMjA5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgQ29sb3Igc2luZ2xlUGl4ZWxTb2xp
ZENvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQogCiBwcml2YXRlOgotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fZW5jb2RlZEltYWdlRGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVkSW1hZ2VEYXRhOwogICAgIEltYWdlT2JzZXJ2ZXIqIG1f
aW1hZ2VPYnNlcnZlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fYW5pbWF0aW9uU3Rh
cnRUaW1lcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCYWNraW5nU3RvcmUuaAppbmRleCA0ZGRiNmRmODNlY2I4YjliNzk1N2Y0NjY0ZTE4NGYw
MDgxZTgxMDExLi5kZTMzZjFhZjQxMmRjMDhiMmI5NjFhMTk0OTQ1YzljYzkwYWE2NjI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0
b3JlLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgICAgIGJ1ZmZlci5ncm93KGJ1ZmZlclNpemUpOwotICAgICAgICBtX3BpeGVscyA9
IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAg
ICAgICBtX3BpeGVscyA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9j
YXN0PHVpbnQzMl90Kj4oY29uc3RfY2FzdDx1aW50OF90Kj4obV9waXhlbHMtPmRhdGEoKSkpOwog
ICAgICAgICBtX3NpemUgPSBzaXplOwogICAgICAgICBtX2ZyYW1lUmVjdCA9IEludFJlY3QoSW50
UG9pbnQoKSwgbV9zaXplKTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBwcml2YXRlOgogICAgIHsKICAg
ICAgICAgQVNTRVJUKCFtX3NpemUuaXNFbXB0eSgpICYmICFpc092ZXJTaXplKG1fc2l6ZSkpOwog
ICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyIHsgb3RoZXIubV9waXhlbHMtPmRhdGEoKSwg
b3RoZXIubV9waXhlbHMtPnNpemUoKSB9OwotICAgICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBtX3BpeGVs
cyA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShi
dWZmZXIpKTsKICAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90
Kj4oY29uc3RfY2FzdDx1aW50OF90Kj4obV9waXhlbHMtPmRhdGEoKSkpOwogICAgIH0KIApAQCAt
MjMzLDcgKzIzMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBQYWNrZWRDb2xvcjo6QVJH
QiB7IHJlc3VsdCB9LnZhbHVlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50PiBtX3BpeGVsczsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ+IG1fcGl4ZWxzOwogICAgIHVpbnQzMl90KiBtX3BpeGVsc1B0ciB7IG51bGxw
dHIgfTsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBJbnRSZWN0IG1fZnJhbWVSZWN0OyAvLyBU
aGlzIHdpbGwgYWx3YXlzIGp1c3QgYmUgdGhlIGVudGlyZSBidWZmZXIgZXhjZXB0IGZvciBHSUYg
YW5kIFBORyBmcmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZURlY29kZXIuY3BwCmluZGV4IDA4NjllOTlhMDA4ODZmN2NkMTIxODZmZTMxNjFkZTA0N2Zh
NTEzNjEuLjdjNTQ5NDdmNGQ4MTQwODU1OWNjNDVjNGFjNDlhMTliOWZjODZmOTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcApAQCAt
ODIsNyArODIsNyBAQCB2b2lkIEltYWdlRGVjb2Rlcjo6Y2xlYXJGYWN0b3JpZXMoKQogfQogI2Vu
ZGlmCiAKLVJlZlB0cjxJbWFnZURlY29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQorUmVmUHRyPEltYWdlRGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKQogewogICAgIFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKaW5kZXggYTFhMDhhZGMxNzVk
NDRiYWE0NDJlNDRhOTRhYTk2N2EwNGY1ZjYwNy4uNmE4ZmZjYjYwZmMxMTU2ZWI4NDg3NmRlZmIw
N2NiYzBiMTE5ODQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VEZWNvZGVyLmgKQEAgLTM3LDEyICszNywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIEltYWdlRGVjb2RlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZURl
Y29kZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7Cisg
ICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAK
ICAgICBlbnVtIGNsYXNzIE1lZGlhVHlwZSB7CkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgdXNpbmcgU3VwcG9ydHNNZWRpYVR5cGVGdW5jID0g
RnVuY3Rpb248Ym9vbChNZWRpYVR5cGUpPjsKICAgICB1c2luZyBDYW5EZWNvZGVUeXBlRnVuYyA9
IEZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nJik+OwotICAgIHVzaW5nIENyZWF0ZUltYWdlRGVj
b2RlckZ1bmMgPSBGdW5jdGlvbjxSZWZQdHI8SW1hZ2VEZWNvZGVyPihTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pPjsK
KyAgICB1c2luZyBDcmVhdGVJbWFnZURlY29kZXJGdW5jID0gRnVuY3Rpb248UmVmUHRyPEltYWdl
RGVjb2Rlcj4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik+OwogCiAgICAgc3RydWN0IEltYWdlRGVj
b2RlckZhY3RvcnkgewogICAgICAgICBTdXBwb3J0c01lZGlhVHlwZUZ1bmMgc3VwcG9ydHNNZWRp
YVR5cGU7CkBAIC0xMjksNyArMTI5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGxhdGZvcm1J
bWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwg
PSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVj
b2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQWxsRGF0YVJlY2VpdmVk
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6
ZV90KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmNwcAppbmRleCBkODFjNDgwMTkyODQ2ZGQ3ZTMyMWMyZGZiZmJmMWUwYzIwZGFhNjcx
Li4zMDc3NDMzMTVhNDFlY2ExYzliMmJjNzczZDA3OWVlNWQ0M2JhZjY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC03Miw3ICs3
Miw3IEBAIEltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UoKQogICAgIEFTU0VSVCgmbV9ydW5Mb29w
ID09ICZSdW5Mb29wOjpjdXJyZW50KCkpOwogfQogCi1ib29sIEltYWdlU291cmNlOjplbnN1cmVE
ZWNvZGVyQXZhaWxhYmxlKFNoYXJlZEJ1ZmZlciogZGF0YSkKK2Jvb2wgSW1hZ2VTb3VyY2U6OmVu
c3VyZURlY29kZXJBdmFpbGFibGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAg
ICBpZiAoIWRhdGEgfHwgaXNEZWNvZGVyQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtOTYsNyArOTYsNyBAQCBib29sIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZhaWxh
YmxlKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbWFn
ZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQordm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIWRhdGEgfHwgIWVuc3VyZURlY29k
ZXJBdmFpbGFibGUoZGF0YSkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNCwxMyArMTA0LDEzIEBA
IHZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKICAgICBtX2RlY29kZXItPnNldERhdGEoKmRhdGEsIGFsbERhdGFSZWNlaXZl
ZCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEp
Cit2b2lkIEltYWdlU291cmNlOjpyZXNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSkKIHsKICAgICBtX2RlY29kZXIgPSBudWxscHRyOwogICAgIHNldERhdGEoZGF0YSwgaXNBbGxE
YXRhUmVjZWl2ZWQoKSk7CiB9CiAKLUVuY29kZWREYXRhU3RhdHVzIEltYWdlU291cmNlOjpkYXRh
Q2hhbmdlZChTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorRW5jb2Rl
ZERhdGFTdGF0dXMgSW1hZ2VTb3VyY2U6OmRhdGFDaGFuZ2VkKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIHNldERhdGEoZGF0YSwgYWxs
RGF0YVJlY2VpdmVkKTsKICAgICBjbGVhck1ldGFkYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCA4YWY1MDgwYTAwYTk5MTYwODBm
MWYwYjI3NzA3M2MyYTg1MzQ1MjU4Li44MTRmMGUxMmViYWE0OGY4NmFjYjUyMTk3M2MzMWQ1ZDM4
MmY2ZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQml0bWFw
SW1hZ2U7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbWFnZURlY29kZXI7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJ
bWFnZVNvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZVNvdXJjZT4sIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxJbWFnZVNvdXJjZT4gewogICAgIGZyaWVuZCBjbGFzcyBCaXRt
YXBJbWFnZTsKQEAgLTU2LDkgKzU2LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBJbWFnZVNvdXJjZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSkpOwogICAgIH0KIAotICAg
IHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsK
LSAgICB2b2lkIHJlc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOwotICAgIEVuY29kZWREYXRh
U3RhdHVzIGRhdGFDaGFuZ2VkKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCByZXNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSk7CisgICAgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGJvb2wgaXNB
bGxEYXRhUmVjZWl2ZWQoKTsKIAogICAgIHVuc2lnbmVkIGRlY29kZWRTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZWNvZGVkU2l6ZTsgfQpAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIGZpcnN0RnJhbWVNZXRhZGF0YUNhY2hlSWZOZWVk
ZWQoVCYgY2FjaGVkVmFsdWUsIE1ldGFkYXRhVHlwZSwgVCAoSW1hZ2VGcmFtZTo6KmZ1bmN0b3Ip
KCkgY29uc3QsIEltYWdlRnJhbWU6OkNhY2hpbmcsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Vic2Ft
cGxpbmdMZXZlbD4mID0geyB9KTsKIAotICAgIGJvb2wgZW5zdXJlRGVjb2RlckF2YWlsYWJsZShT
aGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlRGVjb2RlckF2YWlsYWJsZShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKICAgICBib29sIGlzRGVjb2RlckF2YWlsYWJsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlcjsgfQogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRh
KHNpemVfdCBmcmFtZUNvdW50LCBzaXplX3QgZXhjbHVkZUZyYW1lKTsKICAgICB2b2lkIGRlY29k
ZWRTaXplQ2hhbmdlZChsb25nIGxvbmcgZGVjb2RlZFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmluZGV4IDNlNTllYTlkMDhkZDFjOWJlZTIzYmEzZjYz
NWNmMzViZmMyODIyOTIuLjU3N2JkNTA4YTVjNDA5ZjRiZTllNGNmMjAyYjgxZTYxZTQ1YjQ0YWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKQEAgLTMwLDEy
ICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNb2RlbD4gTW9kZWw6OmNy
ZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitS
ZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcg
bWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kZWwoV1RG
TW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUodXJsKSkpOwogfQogCi1Nb2Rl
bDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJs
KQorTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBl
LCBVUkwgdXJsKQogICAgIDogbV9kYXRhKFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBl
KFdURk1vdmUobWltZVR5cGUpKQogICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKaW5kZXggMDY1ODEzMzc5ZjExMjU1ZDJkN2M3
ZjZiNTAzNDQzZGM2MzBkMDRlMS4uZTZiZGUxNjZmOTQ0Y2RlN2RiMzI4YzI5NzZlYzY4MmFkYjZk
MTAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCkBAIC0zOCw3
ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwgZmluYWwgOiBwdWJs
aWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVy
PiYmLCBTdHJpbmcsIFVSTCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1vZGVsKCk7CiAKICAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CkBAIC00OSw3
ICs0OSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVm
UHRyPE1vZGVsPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1v
ZGVsKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogCiAgICAgUmVmPFNoYXJlZEJ1ZmZl
cj4gbV9kYXRhOwogICAgIFN0cmluZyBtX21pbWVUeXBlOwpAQCAtNjAsNyArNjAsNyBAQCB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+c2l6
ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEoKSwg
bV9kYXRhLT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1f
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CiAgICAg
ZW5jb2RlciA8PCBtX21pbWVUeXBlOwogICAgIGVuY29kZXIgPDwgbV91cmw7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVk
aWFSZXNvdXJjZUxvYWRlci5oCmluZGV4IDc0NTljNTg1OGQyNDg3ZWYyYzVmZDM3MTczOTg2YjMz
NzM0ZWMyOGEuLjg4NjkxZGMyNTZkNmRkNmM0NWY0NmUwMTU0OTY3NDI0NWFhMzUzMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNv
dXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBAIC01MSw4ICs1MSw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkYXRhU2VudChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcg
bG9uZykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIENhY2hlZFJh
d1Jlc291cmNlQ2xpZW50IHVzZXMgU2hhcmVkQnVmZmVyLgorICAgIHZpcnR1YWwgdm9pZCBkYXRh
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIC8vIFRoaXMgbWV0
aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgdXNlcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyLgogICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiBwbGF0Zm9ybSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxl
bmd0aCkgeyBkYXRhUmVjZWl2ZWQocGxhdGZvcm0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEs
IGxlbmd0aCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCA1NDk5ZjM3YTdmMzY0NmJkNWYzOTVh
NDhiMDlkOTQxMWQ0YzliNjY0Li5kM2UxYjU4MDRlODVhOTkxMWNmMjBmY2VkMzRiZjI1NWEzMTQ0
MzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VC
dWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
b3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtMTMxOCw3ICsxMzE4LDcgQEAgdm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBvcmlnaW5h
bFNhbXBsZSkKICAgICB1cGRhdGVIaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wKCk7CiB9CiAK
LXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGFwcGVuZChidWZmZXItPmV4dHJhY3REYXRhKCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNl
QnVmZmVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNl
QnVmZmVyUHJpdmF0ZS5oCmluZGV4IGVmODZhNDczNjkzNzFjODNlODgzYjI5YmJiNmI5YWI5NmVj
YTVmMWQuLjZiN2Q5NWU1MmI5ZGYwYzgxYWYzYmUxZDZkOWYzYzhlZDM5NTQxNmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2
YXRlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgVGltZVJh
bmdlczsKIAogZW51bSBjbGFzcyBTb3VyY2VCdWZmZXJBcHBlbmRNb2RlIDogdWludDhfdCB7CkBA
IC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Tb3Vy
Y2VCdWZmZXJQcml2YXRlKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpID0g
MDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgYXBwZW5kKFJlZjxTaGFyZWRCdWZm
ZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBhcHBlbmQoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBs
YXlTdHJlYW1pbmcuY3BwCmluZGV4IGM2MTEyZTExOTRjN2M5OTBmZGMxMTRlODI5Y2ZkYjVjNmFm
NzU0YTkuLjhiMDRmOWJlOTZjMzZlMGEyNjIxODBhMjVlYTM3NDU5NjJiM2Q3ZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtODYsMTIgKzg2LDEyIEBA
IGNvbnN0IEF0b21TdHJpbmcmIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgp
CiAgICAgcmV0dXJuIHNrZDsKIH0KIAotc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4g
ZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFZlY3Rv
cjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSlNPTiBvZiB0aGUgZm9ybWF0
OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVmZmVy
LnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAg
cmV0dXJuIHsgfTsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXpl
KCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsK
ICAgICBpZiAoIXZhbHVlKQpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNo
YXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
ICAgICBpZiAoIXNpbmZBcnJheSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFZlY3RvcjxS
ZWY8U2hhcmVkQnVmZmVyPj4gc2luZnM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4gc2luZnM7CiAgICAgc2luZnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaW5mQXJy
YXktPmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYgdmFsdWUgOiAqc2luZkFycmF5KSB7CkBA
IC0xMjQsNyArMTI0LDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFj
dFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogfQogCiB1c2luZyBTY2hlbWVB
bmRLZXlSZXN1bHQgPSBWZWN0b3I8c3RkOjpwYWlyPEZvdXJDQywgVmVjdG9yPHVpbnQ4X3Q+Pj47
Ci1zdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5m
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFNjaGVtZUFuZEtleVJlc3VsdCBl
eHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgYXV0byBidWZmZXJzID0gZXh0cmFjdFNpbmZEYXRhKGJ1ZmZlcik7
CiAgICAgaWYgKCFidWZmZXJzLnNpemUoKSkKQEAgLTE3MCw5ICsxNzAsOSBAQCBzdGF0aWMgU2No
ZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRy
YWN0S2V5SURzU2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBhdXRvIHJlc3Vs
dHMgPSBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihidWZmZXIpOwogCiAgICAgZm9yIChh
dXRvJiByZXN1bHQgOiByZXN1bHRzKSB7CkBAIC0xODMsNyArMTgzLDcgQEAgc3RkOjpvcHRpb25h
bDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OmV4dHJhY3RLZXkKICAgICByZXR1cm4ga2V5SURzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRl
RmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gQ29tbW9uIFNJTkYgQm94IEZvcm1hdAogICAgIFVOVVNF
RF9QQVJBTShidWZmZXIpOwpAQCAtMTkxLDE3ICsxOTEsMTcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgU2hhcmVk
QnVmZmUKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNrZChjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRl
RmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0
cmFjdEtleUlEc1NrZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgLy8gSW4gdGhlICdza2QnIHNjaGVtZSwgdGhlIGluaXQgZGF0YSBpcyB0
aGUga2V5IElELgotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBrZXlJRHMuYXBw
ZW5kKGJ1ZmZlci5jb3B5KCkpOwogICAgIHJldHVybiBrZXlJRHM7CiB9CkBAIC0zOTMsNyArMzkz
LDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvbnMo
KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29sIENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewog
ICAgIGlmICghdmFsaWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDIzLDcgKzQyMyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVm
ZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlc3BvbnNlLmNv
cHkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKaW5kZXggYmM5
M2Y2ZjZhN2JkZDAxZWZiZjU1YjYyYmRiNmE0ZTY2ZWY5MTJiMy4uMzE3YmI4ZDU3ZTg2YzA2MjE0
ZTBiNDA1OWRkZjRmODgwN2M3NGM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3Ry
ZWFtaW5nLmgKQEAgLTcxLDE3ICs3MSwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkQW5kSW5p
dGlhbGl6ZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMo
KSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNl
c3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBjb25z
dCBBdG9tU3RyaW5nJiBzaW5mTmFtZSgpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNpbmYoY29uc3Qg
U2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IHNhbml0aXplU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBzdGF0
aWMgY29uc3QgQXRvbVN0cmluZyYgc2tkTmFtZSgpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTa2QoY29uc3QgU2hhcmVk
QnVmZmVyJik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplU2tkKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2tkKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHNhbml0aXplU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0
YXRpYyBjb25zdCBWZWN0b3I8Rm91ckNDPiYgdmFsaWRGYWlyUGxheVN0cmVhbWluZ1NjaGVtZXMo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5kZXggMTU5YjkwY2RiNDhmN2ZlNDRiYjQ5YmUy
ZWMxYzFjMmY0MzI4NjQwMC4uNTZiNThjMjVhMjg3MDlmYjM4MjIxODM5ZTU1YmFlNDVlZDkzY2Y2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAg
ICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpGYWlyUGxheVN0cmVhbWluZzsgfQogCiAgICAgdm9p
ZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUs
IFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRl
KFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lk
IHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNj
ZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYpIGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNl
c3Npb24oKSBmaW5hbDsKICAgICB2b2lkIHNldENsaWVudChXZWFrUHRyPENETUluc3RhbmNlQ2xp
ZW50PiYmKSBmaW5hbDsKQEAgLTk0LDEwICs5NCwxMCBAQCBwdWJsaWM6CiAKICAgICBOU1VSTCAq
c3RvcmFnZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZVVSTC5nZXQoKTsgfQogICAgIGJv
b2wgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVudFN0
YXRlQWxsb3dlZDsgfQotICAgIFNoYXJlZEJ1ZmZlciogc2VydmVyQ2VydGlmaWNhdGUoKSBjb25z
dCB7IHJldHVybiBtX3NlcnZlckNlcnRpZmljYXRlLmdldCgpOyB9CisgICAgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogc2VydmVyQ2VydGlmaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlckNl
cnRpZmljYXRlLmdldCgpOyB9CiAgICAgQVZDb250ZW50S2V5U2Vzc2lvbiogY29udGVudEtleVNl
c3Npb24oKTsKIAotICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiB0YWtlVW5leHBl
Y3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBTaGFyZWRCdWZmZXImIGluaXREYXRhKTsKKyAgICBSZXRhaW5QdHI8QVZDb250
ZW50S2V5UmVxdWVzdD4gdGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25E
YXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgaW5pdERhdGEpOwogCiAgICAgLy8gQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlQ2xpZW50
CiAgICAgdm9pZCBkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7
CkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgb3V0cHV0T2JzY3VyZWREdWVU
b0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCkgZmluYWw7CiAgICAg
dm9pZCBleHRlcm5hbFByb3RlY3Rpb25TdGF0dXNEaWRDaGFuZ2VGb3JDb250ZW50S2V5UmVxdWVz
dChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7CiAKLSAgICB1c2luZyBLZXlzID0gVmVjdG9y
PFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBLZXlzID0gVmVjdG9yPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj47CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDKiBzZXNzaW9uRm9yS2V5SURzKGNvbnN0IEtleXMmKSBjb25zdDsKICAgICBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JHcm91cChB
VkNvbnRlbnRLZXlSZXBvcnRHcm91cCopIGNvbnN0OwogICAgIENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVx
dWVzdCopIGNvbnN0OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxD
RE1JbnN0YW5jZUNsaWVudD4gbV9jbGllbnQ7CiAgICAgUmV0YWluUHRyPEFWQ29udGVudEtleVNl
c3Npb24+IG1fc2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUZQU0NvbnRlbnRLZXlTZXNz
aW9uRGVsZWdhdGU+IG1fZGVsZWdhdGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9zZXJ2
ZXJDZXJ0aWZpY2F0ZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9zZXJ2
ZXJDZXJ0aWZpY2F0ZTsKICAgICBib29sIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dlZCB7IHRydWUg
fTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IG1fc3RvcmFnZVVSTDsKICAgICBWZWN0b3I8V2Vha1B0
cjxDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+PiBtX3Nlc3Npb25z
OwpAQCAtMTUwLDggKzE1MCw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gQ0RNSW5zdGFu
Y2VTZXNzaW9uCi0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNl
bnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJh
Y2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBp
bml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9u
KExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNh
bGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENs
b3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEo
Y29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUx
NWQ2MjVhMGRmMmZmNDA3M2U5NTMuLmJhNTA2MWViYjVjNWZiZTA3NGQzYTI5ZGVhNGY5MThmYzI2
MjFjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0yMTcsNyArMjE3LDcgQEAgQUxM
T1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKICAgICByZXR1cm4gQXRvbVN0cmluZyhuc0lu
aXRUeXBlKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGluaXRpYWxpemF0aW9uRGF0
YUZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCogcmVxdWVzdCkKK3N0YXRpYyBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdGlhbGl6YXRpb25EYXRhRm9yUmVxdWVzdChBVkNvbnRl
bnRLZXlSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CkBAIC0yNjUsNyArMjY1LDcgQEAgQVZDb250ZW50
S2V5U2Vzc2lvbiogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmNvbnRlbnRL
ZXlTZXNzaW9uKCkKICAgICByZXR1cm4gbV9zZXNzaW9uLmdldCgpOwogfQogCi1SZXRhaW5QdHI8
QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitSZXRhaW5QdHI8
QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQog
ewogICAgIGZvciAoYXV0byByZXF1ZXN0SXRlciA9IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzLmJl
Z2luKCk7IHJlcXVlc3RJdGVyICE9IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzLmVuZCgpOyArK3Jl
cXVlc3RJdGVyKSB7CiAgICAgICAgIGF1dG8mIHJlcXVlc3QgPSAqcmVxdWVzdEl0ZXI7CkBAIC0z
MTYsNyArMzE2LDcgQEAgcHJpdmF0ZToKICAgICBSZXNwb25zZU1hcCBtX3Jlc3BvbnNlczsKIH07
CiAKLXN0YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFs
dWUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEZhaWwg
b24gbGFyZ2UgYnVmZmVycyB3aG9zZSBzaXplIGRvZXNuJ3QgZml0IGludG8gYSAzMi1iaXQgdW5z
aWduZWQgaW50ZWdlci4KICAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci5zaXplKCk7CkBAIC0zMjQs
NyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
Ly8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qg
b2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAg
IHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAtMzgwLDcgKzM4MCw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmluaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LCiAgICAgY2FsbGJhY2soaW5pdGlhbGl6ZSgpKTsK
IH0KIAotdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVy
Q2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vz
c0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAg
REVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogICAgIG1fc2VydmVyQ2VydGlm
aWNhdGUgPSBXVEZNb3ZlKHNlcnZlckNlcnRpZmljYXRlKTsKQEAgLTU4NSw4ICs1ODUsOCBAQCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIENETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
YXV0byBzZXNzaW9uS2V5cyA9IHNlc3Npb25JbnRlcmZhY2UtPmtleUlEcygpOwotICAgICAgICBp
ZiAoYW55T2Yoc2Vzc2lvbktleXMsIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgc2Vzc2lv
bktleSkgewotICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0
IFJlZjxTaGFyZWRCdWZmZXI+JiBrZXlJRCkgeworICAgICAgICBpZiAoYW55T2Yoc2Vzc2lvbktl
eXMsIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHNlc3Npb25LZXkpIHsK
KyAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGtleUlEKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGtl
eUlELmdldCgpID09IHNlc3Npb25LZXkuZ2V0KCk7CiAgICAgICAgICAgICB9KSAhPSBub3RGb3Vu
ZDsKICAgICAgICAgfSkpCkBAIC02NzMsNyArNjczLDcgQEAgS2V5cyBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleUlEcygpCiAgICAgcmV0dXJuIGtleUlEczsK
IH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFj
ayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXRE
YXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWlzTGljZW5zZVR5
cGVTdXBwb3J0ZWQobGljZW5zZVR5cGUpKSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJM
RShMT0dJREVOVElGSUVSLCAiIGZhbHNlLCBsaWNlbnNlVHlwZSBcIiIsIGxpY2Vuc2VUeXBlLCAi
XCIgbm90IHN1cHBvcnRlZCIpOwpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAg
ICBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5h
bWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0
YSgpOworICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0g
YWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlk
ZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4
U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERB
VEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNO
YW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmco
aW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0
cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGluaXREYXRhLT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBb
TlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3Ry
aW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJv
cjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzM2LDcgKzczNiw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSBsaWNlCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBpc0VxdWFsKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3N0YXRpYyBib29sIGlzRXF1YWwoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsK
ICAgICBhdXRvIGFycmF5QnVmZmVyID0gZGF0YS50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAg
IGlmICghYXJyYXlCdWZmZXIpCkBAIC03NTQsNyArNzU0LDcgQEAgc3RhdGljIGJvb2wgaXNFcXVh
bChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgcmV0
dXJuIHN0cmluZ09yRXhjZXB0aW9uLnJldHVyblZhbHVlKCkgPT0gdmFsdWU7CiB9CiAKLXZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNl
RGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VE
YXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZXhw
aXJlZFNlc3Npb25zLmlzRW1wdHkoKSAmJiBpc0VxdWFsKHJlc3BvbnNlRGF0YSwgImFja25vd2xl
ZGdlZCJfcykpIHsKICAgICAgICAgYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2
ZXJDZXJ0aWZpY2F0ZSgpOwpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYs
IExpCiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGly
ZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdl
dCgpOwogICAgICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNh
dGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZp
Y2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6Omdl
dEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJl
cG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZp
ZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxs
YmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtODU2LDcgKzg1Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYs
IExpCiAgICAgICAgICAgICBhdXRvIGtleUlEID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZSgqa2V5SURWZWN0b3IpKTsKICAgICAgICAgICAgIGF1dG8gZm91bmRJbmRleCA9IG1fY3VycmVu
dFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maW5kTWF0Y2hpbmcoWyZdIChhdXRvJiByZXF1ZXN0
KSB7CiAgICAgICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVl
c3QuZ2V0KCkpOwotICAgICAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsm
XShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgaWQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
a2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiBpZCkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWQuZ2V0KCkgPT0ga2V5SUQuZ2V0
KCk7CiAgICAgICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQ7CiAgICAgICAgICAgICB9KTsKQEAg
LTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICAgICAgICAg
IGlmICghcGF5bG9hZFZlY3RvcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0gICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vz
c0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkg
Y29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBh
eWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICAgICAgICAgIFtyZXF1
ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9u
c2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3Bv
bnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIH0K
ICAgICB9IGVsc2UgewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklF
UiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2luZyByZXNwb25zZSIpOwotICAgICAgICBbbV9j
dXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlS
ZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJl
c3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgW21fY3VycmVudFJlcXVlc3QudmFsdWUo
KS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZD
b250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0
cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQogCiAgICAgLy8gRklYTUUocmRhcjovL3Byb2Js
ZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5kIGNhbGwgaXQgb25jZSBBVkNvbnRl
bnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2FsbGJhY2suCkBAIC05MzQsNyArOTM0
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6Omxv
YWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZp
Y2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50
aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0RhdGEq
IGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3Mo
KSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRp
Zmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKICAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJhY2tTZXNzaW9uSWRLZXkgPSBAIlBsYXli
YWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5n
JgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5T
RGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAg
IGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5
U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlm
aWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxd
KSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UgogCiAgICAg
UmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNh
dGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlm
aWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVy
ID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAgICAg
YXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QpOwogICAgIGlmIChrZXlJRHMu
aXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5
UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVu
dElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWlu
UHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1h
a2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQo
KSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBj
b21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5T
RGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vh
a1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9
IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CkBAIC0xMTUzLDkgKzExNTMsOSBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJv
dmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRl
bnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJD
ZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCi0gICAgdXNpbmcgUmVxdWVzdHNEYXRhID0gVmVj
dG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsK
KyAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKICAgICBzdHJ1Y3QgQ2FsbGJh
Y2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNr
QWdncmVnYXRvcj4gewogICAgICAgICB1c2luZyBDYWxsYmFja0Z1bmN0aW9uID0gRnVuY3Rpb248
dm9pZChSZXF1ZXN0c0RhdGEmJik+OwogICAgICAgICBzdGF0aWMgUmVmUHRyPENhbGxiYWNrQWdn
cmVnYXRvcj4gY3JlYXRlKENhbGxiYWNrRnVuY3Rpb24mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAg
LTExOTYsNyArMTE5Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgICAgICBh
dXRvIGVudHJ5ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGF1dG8mIGtl
eUlEID0gcmVxdWVzdERhdGEuZmlyc3Q7CiAgICAgICAgICAgICBhdXRvJiBwYXlsb2FkID0gcmVx
dWVzdERhdGEuc2Vjb25kOwotICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBi
YXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CisgICAg
ICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGtl
eUlELT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKICAgICAgICAg
ICAgIGVudHJ5LT5zZXRTdHJpbmcoInBheWxvYWQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhwYXls
b2FkLmdldCgpLmJ5dGVzLCBwYXlsb2FkLmdldCgpLmxlbmd0aCkpOwogICAgICAgICAgICAgcmVx
dWVzdEpTT04tPnB1c2hPYmplY3QoV1RGTW92ZShlbnRyeSkpOwogICAgICAgICB9CkBAIC0xMjEx
LDggKzEyMTEsOCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgIEB0cnkgewogICAgICAg
ICBmb3IgKGF1dG8gcmVxdWVzdCA6IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cykg
ewogICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0
KCkpOwotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtl
eUlEcy5maXJzdCgpKTsKLSAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJ
RC0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKKyAgICAgICAgICAgIGF1dG8g
Y29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3RE
YXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElk
ZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W2tleUlEID0gV1RG
TW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwg
TlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShl
cnJvcik7CiAgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChba2V5SUQgPSBXVEZNb3Zl
KGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdncmVnYXRvciksIGNvbnRlbnRLZXlSZXF1
ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSAoKSBtdXRhYmxlIHsK
QEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QoQVZDb24KIAogICAgIFJl
dGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRl
ID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmll
ciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9
IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBhdXRv
IGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpKTsKIAot
ICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCkt
PmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVy
ID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAg
IEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3RE
YXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElk
ZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwg
TlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
dGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJy
b3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3RE
YXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmlu
ZGV4IDAzMzRkNjIzYjJhNzYwNWM5YmUxMjIxM2I1YWJkYmJhYzJiMDNmMTUuLjYyYjgzZmJmZDU3
OTQwNTBlYmM5NDA2MzcwNDkwYmEyYjNlYzA4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbWFnZURlY29kZXJBVkZPYmpDLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29yZURl
Y29tcHJlc3Npb25TZXNzaW9uOwogCiBjbGFzcyBJbWFnZURlY29kZXJBVkZPYmpDIDogcHVibGlj
IEltYWdlRGVjb2RlciB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0
cjxJbWFnZURlY29kZXJBVkZPYmpDPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IGNyZWF0
ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFnZURl
Y29kZXJBVkZPYmpDKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzdXBwb3J0
c01lZGlhVHlwZShNZWRpYVR5cGUpOwpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBE
ZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25v
dXMpKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50
U2l6ZShsb25nIGxvbmcpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGF0YShT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsOwogCkBAIC05NCw3ICs5NCw3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUlu
Zm8+IGZyYW1lSW5mb3MoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBJbWFnZURlY29kZXJBVkZP
YmpDKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyQVZGT2JqQyhGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIEFWQXNzZXRUcmFjayAqZmlyc3RF
bmFibGVkVHJhY2soKTsKICAgICB2b2lkIHJlYWRTYW1wbGVzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29k
ZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3
Mjk3NDUwZTFjOWExMGNjMTRmNGJmLi4zNWM2Y2U2N2U4NWY4NmFlMTY0YzIxYTcyNjA3ZmMwNjVl
Y2I1MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMu
bW0KQEAgLTI4OSw3ICsyODksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDU2FtcGxlKiB0b1NhbXBs
ZShJdGVyYXRvciBpdGVyKQogCiAjcHJhZ21hIG1hcmsgLSBJbWFnZURlY29kZXJBVkZPYmpDCiAK
LVJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUo
U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBh
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pCitSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gSW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICAvLyBBVkZvdW5kYXRpb24gbWF5
IG5vdCBiZSBhdmFpbGFibGUgYXQgcnVudGltZS4KICAgICBpZiAoIUFWQXNzZXRNSU1FVHlwZUNh
Y2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKQpAQCAtMzAxLDcgKzMwMSw3IEBAIFJlZlB0
cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVk
QnVmZmVyJiBkYXRhLCBjb25zCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVy
QVZGT2JqQyhkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKSk7CiB9CiAKLUltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMo
U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURl
Y29kZXJBVkZPYmpDKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICA6
IEltYWdlRGVjb2RlcigpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV91dGko
V2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKSkKQEAgLTMwOSw3ICszMDksNyBAQCBJ
bWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNvcmVT
aGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0
aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNzaW9u
U2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0ZURh
dGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpO
T107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xv
YWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVF
X1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNocm9u
b3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQxLDkgKzY0MSw5IEBAIHZvaWQg
SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhw
ZWN0ZWRDb250ZW50U2l6ZSkKICAgICBtX2xvYWRlci5nZXQoKS5leHBlY3RlZENvbnRlbnRTaXpl
ID0gZXhwZWN0ZWRDb250ZW50U2l6ZTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpz
ZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIElt
YWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOworICAgIFttX2xv
YWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQp
IHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
LmgKaW5kZXggMjAwZTFhOGY5YWZiYTBmY2JiYTViMGEzZWQ3MDRjZDM0MWI0NTBkNi4uYzlkOWIy
YTk2ODViMDFlOTFhYWEwMGMwZTAwMzA3NzM4NTY5MTQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aApAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVB
VkY7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91
cEFWRk9iakM7CiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFZpZGVvTGF5ZXJNYW5h
Z2VyT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzsKIGNsYXNzIFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlcjsKQEAgLTQyNiw3ICs0MjYsNyBAQCBwcml2YXRlOgogICAgIG11dGFi
bGUgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbV93YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRUaW1l
OwogICAgIG11dGFibGUgaW50IG1fdGltZUNvbnRyb2xTdGF0dXNBdENhY2hlZEN1cnJlbnRUaW1l
IHsgMCB9OwogICAgIG11dGFibGUgZG91YmxlIG1fcmVxdWVzdGVkUmF0ZUF0Q2FjaGVkQ3VycmVu
dFRpbWUgeyAwIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKICAgICBkb3VibGUgbV9jYWNoZWRS
YXRlIHsgMCB9OwogICAgIGJvb2wgbV9yZXF1ZXN0ZWRQbGF5aW5nIHsgZmFsc2UgfTsKICAgICBk
b3VibGUgbV9yZXF1ZXN0ZWRSYXRlIHsgMS4wIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRl
eCBkMThhODVhNzk0ZjUyM2Y5NDkxMmUyN2YwOGI3Y2NiZTg5M2M4ZWQwLi5iMWM2MDc5YzY0ODcw
Zjg4ZTM1YzgwODExYTViMThiZGExYjdmNjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAg
LTI3OTIsNyArMjc5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jCiAgICAgaWYgKCFtX2tl
eUlEIHx8ICFtX2NkbUluc3RhbmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGluc3Rh
bmNlU2Vzc2lvbiA9IG1fY2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMoVmVjdG9yPFJlZjxT
aGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOworICAgIGF1dG8gaW5zdGFuY2VTZXNzaW9u
ID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOwogICAgIGlmICghaW5zdGFuY2VTZXNzaW9u
KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGQ5NjBhZmRjYTIxNGJmYTQ0MGVlYTIwODgz
YmNhOTEzMmUyMmY5YTAuLjRkZDZiOTFhOTQ4MzE2OWEwMjM2ODg4ZDBlNGQ4MmZmYjgzNjY2MmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQy5tbQpAQCAtMjEzLDcgKzIxMyw3IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKICAgICBhdXRvIHNo
YXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFrZVNoYXJlZEJ1ZmZlcigpOwotICAgIGF1dG8gbnNEYXRh
ID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBhdXRvIG5zRGF0YSA9IHNoYXJl
ZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYgKG1fcGFy
c2VyU3RhdGVXYXNSZXNldCB8fCBmbGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0eSkK
ICAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFn
czpBVlN0cmVhbURhdGFQYXJzZXJTdHJlYW1EYXRhRGlzY29udGludWl0eV07CiAgICAgZWxzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
LmgKaW5kZXggMDM0MjBmMTM4MzY0ZmFjMjA5MWUxMDRkMTM2ZmYzOGExZmI5ZmUyMi4uZWFkMDgz
YTZjYzdlNzM2YjQyMTcxMGZhYzM5MmEwN2RmZjkyYmU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC03Myw3ICs3Myw3
IEBAIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
QzsKIGNsYXNzIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDRXJyb3JDbGllbnQgewogcHVibGljOgpAQCAtMTUzLDcgKzE1Myw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZChSZWY8TWVkaWFT
YW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKIAog
ICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCi0gICAgdm9pZCBhcHBlbmQoUmVm
PFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBhcHBlbmQoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWJvcnQoKSBmaW5hbDsKICAgICB2b2lk
IHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3Vy
Y2UoKSBmaW5hbDsKQEAgLTIyMSw3ICsyMjEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQogICAgIFJl
ZlB0cjxDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4gbV9jZG1JbnN0YW5jZTsK
LSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IG1fa2V5SURzOworICAgIFZlY3RvcjxSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1fa2V5SURzOwogI2VuZGlmCiAKICAgICBzdGQ6Om9w
dGlvbmFsPEZsb2F0U2l6ZT4gbV9jYWNoZWRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCAzYTI4NjdhMWFjMjQz
YmI5YzkzYzlkNmI3MGNhNTZiMDI5NDhmYzljLi4yNGFlMGUxNDA2MDE5MTQzZmFkNGYxNTI5ZTY4
ZWQ0OWI0MTY1M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvCiAgICAgVU5VU0VEX1BBUkFNKGhhc1Nlc3Npb25TZW1hcGhvcmUpOwogfQogCi12
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSLCAiZGF0YSBsZW5ndGggPSAiLCBkYXRhLT5zaXplKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYwZDhlNzExMzJm
NmMyODdhMmU2MjlhNGI4OGE1MzlkZmQ1M2NiZTIuLjBlZmVlYWVmNWIyZDcxYmM2ZDY3MDRkZDFi
OTc1YWNiYWUxMTNiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM7CiBjbGFzcyBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI7
CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcj4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAg
ICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRG
aW5pc2hlZCgpOwotICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1
ZmZlciYpOworICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMqIG1fcGFyZW50OwogICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVx
dWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggYTIyYTk5N2IxMTA3OWQ0NjU4NmFhNjQ4NTYxYmJm
NzJhNmYyNDdmMC4uZjkyMWYzZGEwZTY5YjMzOTk3N2M5ZTNlNDk2NjdhMjhmNWU5NWNiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5t
bQpAQCAtMTU2LDE0ICsxNTYsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1
ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUocmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWdu
ZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQgZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xD
aGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZhaWxlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwg
eyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlz
aGVkKCk7IH0KIAogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAg
UmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwog
fTsKIAogV2Vha1B0cjxQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IFBsYXRmb3JtUmVzb3Vy
Y2VNZWRpYUxvYWRlcjo6Y3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCkKQEAgLTIxMSwxMyArMjExLDEwIEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9h
ZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQogCi12
b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBQbGF0Zm9ybVJl
c291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgaWYgKCFtX2J1ZmZl
cikKLSAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Ci0gICAgZWxzZQotICAgICAg
ICBtX2J1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgbV9wYXJlbnQubmV3RGF0
YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7CisgICAgbV9idWZmZXIuYXBwZW5kKFdU
Rk1vdmUoYnVmZmVyKSk7CisgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVy
KCptX2J1ZmZlci5nZXQoKSk7CiB9CiAKIGNsYXNzIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVy
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyPiB7CkBA
IC0zODgsNyArMzg1LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGaW5p
c2hlZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2
b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVy
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVZBc3NldFJlc291
cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVx
dWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aAppbmRleCBkYjQ1N2E4MWQzZWU4MjkxYjkwNWU5YmE3N2MxZTJhZjMwOWUwY2IyLi45NDE5YmNl
YTM4ZGJmOGQ2NDkyZjY4MDFkOWEyMTU2MjM2NmEyYzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oCkBAIC0zMSwxMCArMzEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18q
ICBGVF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
IGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFz
cyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVz
Owogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgc3RydWN0
IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogcHVibGlj
OgotICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSwgU2hhcmVkQnVmZmVyJik7Cisg
ICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9GYWNlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CiAgICAgfkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKSA9IGRlZmF1bHQ7CiAgICAgRm9udFBs
YXRmb3JtRGF0YSBmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wg
Ym9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKICAgICBzdGF0
aWMgYm9vbCBzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBh
MzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUwYzA2Li5iNmQzZWIzNjMxMTI0NDYx
M2IzODAzZjJmM2QyNGQzMDg3ZWEyNGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yNDQsMTYgKzI0NCwx
NiBAQCBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZv
aWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sCiAKIHZvaWQgc2hhcmVkQnVmZmVyUmVsZWFzZSh2
b2lkKiBpbmZvKQogewotICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nh
c3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hh
cmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KGluZm8pOwog
ICAgIHNoYXJlZEJ1ZmZlci0+ZGVyZWYoKTsKIH0KICNlbmRpZgogCi1JbWFnZURlY29kZXJDRzo6
SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKQogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBpZiAo
ZGF0YS5zaXplKCkgPj0gMzIpCi0gICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3Vy
Y2VHZXRUeXBlV2l0aERhdGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVs
bHB0cikpOworICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdp
dGhEYXRhKGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICAKICAgICBpZiAodXRpSGludCkgewogICAgICAgICBjb25zdCB2
b2lkKiBrZXkgPSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsKQEAgLTU2MiwyMyAr
NTYyLDI0IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpCiAgICAgcmV0dXJuIG1hc2tlZEltYWdl
ID8gbWFza2VkSW1hZ2UgOiBpbWFnZTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0
YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURl
Y29kZXJDRzo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKIHsKICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gYWxsRGF0YVJlY2VpdmVk
OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRl
IHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhl
IFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KLSAgICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3Mg
YWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywg
ZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCi0gICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNo
YXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIu
Z2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAg
Ly8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGNh
biBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJ3Mga25vd2xlZGdlLgorICAgIC8vIFdlIHVzZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3Mg
YWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywg
ZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCisgICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIuCisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRp
dmVEZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdl
dCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UKLSAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92
aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKLSAgICAvLyBX
ZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0
Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCisgICAgLy8gQ3JlYXRlIGEgQ0dE
YXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KKyAgICBhdXRv
IGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNvbnRpZ3VvdXNE
YXRhLmdldCgpLnJlZigpOworICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNh
bGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0byBsb2NrIGRv
d24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwgd2hp
Y2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50ZXIg
Y2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJvdmlkZXJDYWxs
YmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hhcmVk
QnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVBy
b3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0YSwgZGF0YS5z
aXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRl
clJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdChj
b250aWd1b3VzRGF0YS5wdHIoKSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOwog
ICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNvZGVyLmdldCgp
LCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNH
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5o
CmluZGV4IDk3NDA3MzZhMjFhYzk5OGFiMDVmMWM5YjRmNWIxNjc1ZTQ0ZDJjOTEuLmEwYWMxYzJm
YmVlNTI3ZTVhYjExMTQ1NTgxMmJkYjczNjNhMDU1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApAQCAtMzIsOSArMzIs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbWFnZURlY29kZXJDRyBmaW5hbCA6IHB1
YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIEltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBJbWFnZURlY29kZXJDRyhGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pOwogCi0gICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJDRz4gY3JlYXRlKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNv
ZGVyQ0c+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBh
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29k
ZXJDRyhkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAg
ICB9CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxp
bmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9u
cyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEo
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0
RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFs
OwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lz
QWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90
KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCAzMWMyN2MwNjliMmIzYzcwMzczMmVi
NzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlkNjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYyZDg3
Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9jdW1l
bnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJbWFn
ZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJl
Zj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEo
ZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92
aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhD
RkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwog
ICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIo
ZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCmluZGV4
IGY3NDdkODBmYjYxZDMwZmM1MDIyZTY4MmQ2MzU2MTMzZDNjYTY5N2EuLmM4YTgwNjEyMjA1M2Y2
NDhhZGRiMDJhYzM4OWNlNzE0MzY4ZGJiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcApA
QCAtODAsNyArODAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0TWluaW11bUF1ZGlv
U2FtcGxlRHVyYXRpb24oZmxvYXQpCiB7CiB9CiAKLVNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVu
dDo6U2VnbWVudChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK1NvdXJjZUJ1ZmZlclBhcnNl
cjo6U2VnbWVudDo6U2VnbWVudChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShidWZmZXIpKQogewogfQpAQCAtMTAxLDcgKzEwMSw3
IEBAIHNpemVfdCBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAg
ICAgICAgICAgcmV0dXJuIGNsYW1wVG88c2l6ZV90PihNVFBsdWdpbkJ5dGVTb3VyY2VHZXRMZW5n
dGgoYnl0ZVNvdXJjZS5nZXQoKSkpOwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAgIFtdKGNv
bnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgICAgIFtdKGNvbnN0IFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1
cm4gYnVmZmVyLT5zaXplKCk7CiAgICAgICAgIH0KQEAgLTEyNSw3ICsxMjUsNyBAQCBhdXRvIFNv
dXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6cmVhZChzaXplX3QgcG9zaXRpb24sIHNpemVfdCBz
aXplVG9SZWFkLCB1aW50OAogICAgICAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVhZEVycm9y
PiB7IFJlYWRFcnJvcjo6RmF0YWxFcnJvciB9OwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAg
IFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZWFkUmVzdWx0CisgICAg
ICAgIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVh
ZFJlc3VsdAogICAgICAgICB7CiAgICAgICAgICAgICBidWZmZXItPmNvcHlUbyhkZXN0aW5hdGlv
biwgcG9zaXRpb24sIHNpemVUb1JlYWQpOwogICAgICAgICAgICAgcmV0dXJuIHNpemVUb1JlYWQ7
CkBAIC0xMzMsNyArMTMzLDcgQEAgYXV0byBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnJl
YWQoc2l6ZV90IHBvc2l0aW9uLCBzaXplX3Qgc2l6ZVRvUmVhZCwgdWludDgKICAgICApOwogfQog
Ci1SZWY8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VTaGFy
ZWRCdWZmZXIoKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNl
cjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1ZmZlcigpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNo
T24obV9zZWdtZW50LAogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCkBAIC0xNDIs
MjggKzE0MiwyOCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21l
bnQ6OnRha2VTaGFyZWRCdWZmZXIoKQogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3Rv
cihzaXplKCkpOwogICAgICAgICAgICAgYXV0byByZWFkUmVzdWx0ID0gcmVhZCgwLCB2ZWN0b3Iu
c2l6ZSgpLCB2ZWN0b3IuZGF0YSgpKTsKICAgICAgICAgICAgIGlmICghcmVhZFJlc3VsdC5oYXNf
dmFsdWUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CiAgICAgICAgICAgICB2ZWN0b3Iuc2hyaW5rKHJlYWRSZXN1bHQudmFsdWUoKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKTsKKyAgICAg
ICAgICAgIHJldHVybiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0
b3IpKTsKICAgICAgICAgfSwKICNlbmRpZgotICAgICAgICBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikKKyAgICAgICAgWyZdKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShidWZmZXIsIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2Uo
YnVmZmVyLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7CiAgICAgICAgIH0KICAg
ICApOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21l
bnQ6OmdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpnZXRTaGFyZWRCdWZmZXIoKSBjb25zdAog
ewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc2VnbWVudCwKICNpZiBIQVZFKE1UX1BMVUdJ
Tl9GT1JNQVRfUkVBREVSKQotICAgICAgICBbJl0oY29uc3QgUmV0YWluUHRyPE1UUGx1Z2luQnl0
ZVNvdXJjZVJlZj4mKSAtPiBSZWZQdHI8U2hhcmVkQnVmZmVyPgorICAgICAgICBbJl0oY29uc3Qg
UmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mKSAtPiBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4KICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ICAgIH0sCiAjZW5kaWYKLSAgICAgICAgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIC0+IFJlZlB0cjxTaGFyZWRCdWZmZXI+CisgICAgICAgIFsmXShjb25zdCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBidWZmZXIucHRyKCk7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyLmgKaW5kZXggNTIwYjUyMDdmYzI3MWQ3OTgxNTMzZmIxNGQy
MzE1NTk0YTg4ODM2NS4uNzI5N2E3OTE0YTc5YWRmNjQyZGM2YjE2YjM2ZTYwZjljZDAyOWYwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDb250ZW50VHlwZTsKIGNsYXNzIE1lZGlhU2FtcGxlOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VCQ09S
RV9FWFBPUlQgU291cmNlQnVmZmVyUGFyc2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFNvdXJjZUJ1ZmZlclBhcnNlcj4gewogcHVibGljOgpAQCAtNjksMTEgKzY5LDExIEBAIHB1Ymxp
YzoKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVSKQogICAgICAgICBTZWdtZW50KFJl
dGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VSZWY+JiYpOwogI2VuZGlmCi0gICAgICAgIFNlZ21l
bnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIFNlZ21lbnQoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpOwogICAgICAgICBTZWdtZW50KFNlZ21lbnQmJikgPSBkZWZhdWx0Owot
ICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiB0YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAgICAgIC8v
IFdpbGwgcmV0dXJuIG51bGxwdHIgaWYgU2VnbWVudCdzIGJhY2tlbmQgaXNuJ3QgYSBTaGFyZWRC
dWZmZXIuCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGdldFNoYXJlZEJ1ZmZlcigpIGNv
bnN0OworICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZVNoYXJlZEJ1ZmZl
cigpOworICAgICAgICAvLyBXaWxsIHJldHVybiBudWxscHRyIGlmIFNlZ21lbnQncyBiYWNrZW5k
IGlzbid0IGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgICAgIHNpemVf
dCBzaXplKCkgY29uc3Q7CiAKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogI2lmIEhBVkUoTVRf
UExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAgICAgICBSZXRhaW5QdHI8TVRQbHVnaW5CeXRl
U291cmNlUmVmPiwKICNlbmRpZgotICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4KKyAgICAg
ICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPgogICAgICAgICA+IG1fc2VnbWVudDsK
ICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDM1OWVkYjQx
NWZkMzc1ZWQ4MmI3YjRhNDlmMTFlNGM4ZmQ2YzdkNmIuLjliYzE4OTQxOTg2MzBiYWQ4ZDdjYmQw
YjNhNWIyOGU0NmU5ZWZlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBA
IC0zNjcsNyArMzY3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgRnJlZURhdGFTZWdt
ZW50KHZvaWQqIHJlZmNvbiwgdm9pZCosIHNpemVfdCkKICAgICB7Ci0gICAgICAgIGF1dG8qIGJ1
ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KHJlZmNv
bik7CisgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21lbnQq
PihyZWZjb24pOwogICAgICAgICBidWZmZXItPmRlcmVmKCk7CiAgICAgfQogCkBAIC0zODgsNyAr
Mzg4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGFkdmFuY2VUb05leHRTZWdtZW50KCk7
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBjdXJyZW50U2VnbWVudC5nZXRTaGFy
ZWRCdWZmZXIoKTsKKyAgICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBz
aGFyZWRCdWZmZXIgPSBjdXJyZW50U2VnbWVudC5nZXRTaGFyZWRCdWZmZXIoKTsKICAgICAgICAg
ICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3QmxvY2tCdWZmZXIgPSBudWxscHRyOwogICAgICAgICAg
ICAgdWludDY0X3QgbGFzdFJlYWQgPSAwOwogICAgICAgICAgICAgc2l6ZV90IGRlc3RpbmF0aW9u
T2Zmc2V0ID0gbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CkBAIC00MDksNyArNDA5LDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uT2Zmc2V0ID0gMDsKICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHNoYXJlZEJ1ZmZlci0+aGFzT25lU2Vn
bWVudCgpLCAiQ2FuIG9ubHkgZGVhbCB3aXRoIHNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGEgc2lu
Z2xlIERhdGFTZWdtZW50Iik7Ci0gICAgICAgICAgICAgICAgLy8gQSBTaGFyZWRCdWZmZXIgZG9l
c24ndCBoYXZlIHRocmVhZC1zYWZlIHJlZmNvdW50aW5nLCBhcyBzdWNoIHdlIG11c3Qga2VlcCBh
IHJlZmVyZW5jZSB0byB0aGUgRGF0YVNlZ21lbnQgaW5zdGVhZC4KKyAgICAgICAgICAgICAgICAv
LyBBIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgZG9lc24ndCBoYXZlIHRocmVhZC1zYWZlIHJlZmNv
dW50aW5nLCBhcyBzdWNoIHdlIG11c3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgRGF0YVNlZ21l
bnQgaW5zdGVhZC4KICAgICAgICAgICAgICAgICAvLyBUT0RPOiBjb3VsZCB3ZSBvbmx5IGNyZWF0
ZSBhIG5ldyBDTUJsb2NrQnVmZmVyIGlmIHRoZSBiYWNrZW5kIG1lbW9yeSBjaGFuZ2VkIHNpbmNl
IHRoZSBwcmV2aW91cyBvbmU/CiAgICAgICAgICAgICAgICAgYXV0byBmaXJzdFNlZ21lbnQgPSBz
aGFyZWRCdWZmZXItPmJlZ2luKCktPnNlZ21lbnQ7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGNh
blJlYWQgPSBzdGQ6Om1pbjxzaXplX3Q+KG51bVRvUmVhZCwgZmlyc3RTZWdtZW50LT5zaXplKCkg
LSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1CdWZmZXIuY3BwCmluZGV4IGU4MDUwOWVjY2EwNWQyY2M4ZWQxMDY2MDcwNDFmNWNjY2Mz
ZTM3OTQuLjYzOGU2ODM5N2EyYjY2OTZiMmYxZWRlMjRlYThmZGI5MDYyNmNlZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCkBAIC03MjksNyArNzI5LDcg
QEAgRGlkQ2hhbmdlSXRlbUJ1ZmZlciBJdGVtQnVmZmVyOjpzd2FwV3JpdGFibGVCdWZmZXJJZk5l
ZWRlZChzaXplX3QgbnVtYmVyT2ZCeXRlcykKIHZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kKGNvbnN0
IERpc3BsYXlMaXN0SXRlbSYgdGVtcG9yYXJ5SXRlbSkKIHsKICAgICBhdXRvIHJlcXVpcmVkU2l6
ZUZvckl0ZW0gPSBtX3dyaXRpbmdDbGllbnQtPnJlcXVpcmVkU2l6ZUZvckl0ZW0odGVtcG9yYXJ5
SXRlbSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3V0T2ZMaW5lSXRlbTsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gb3V0T2ZMaW5lSXRlbTsKICAgICBpZiAoIXJlcXVp
cmVkU2l6ZUZvckl0ZW0pIHsKICAgICAgICAgb3V0T2ZMaW5lSXRlbSA9IG1fd3JpdGluZ0NsaWVu
dC0+ZW5jb2RlSXRlbU91dE9mTGluZSh0ZW1wb3JhcnlJdGVtKTsKICAgICAgICAgaWYgKCFvdXRP
ZkxpbmVJdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCmluZGV4
IGM4NzMxOTgyZWY4MzkzMWJiYWUzMWI3ODY1MGFjMGRhMjBhMDVmYzUuLmIzMWJjNWZkNGU5MjE0
YjE1YTM3NjFmYmU5OGQ2MGNlYjQ3YTk4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtQnVmZmVyLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0CisgICAg
dmlydHVhbCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGlu
ZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQpAQCAtMTY4LDcgKzE2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB3aXRoIHBh
ZGRpbmcgYmV0d2VlbiBlYWNoIGl0ZW0gdG8gZW5zdXJlIHRoYXQgYWxsIGl0ZW1zIGFyZSBhbGln
bmVkIHRvIDggYnl0ZXMuCiAgICAgLy8KICAgICAvLyBJZiBhIHdyaXRpbmcgY2xpZW50IGlzIHBy
ZXNlbnQgYW5kIHJlcXVpcmVzIGN1c3RvbSBlbmNvZGluZyBmb3IgdGhlIGdpdmVuIGl0ZW0gdHlw
ZSBULCB0aGUKLSAgICAvLyBpdGVtIGJ1ZmZlciB3aWxsIGFzayB0aGUgY2xpZW50IGZvciBhbiBv
cGFxdWUgU2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgZW5jb2RlZCBkYXRhIGZvciB0aGUKKyAgICAv
LyBpdGVtIGJ1ZmZlciB3aWxsIGFzayB0aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGVuY29kZWQgZGF0YSBmb3IgdGhlCiAgICAgLy8gaXRl
bS4gVGhpcyBlbmNvZGVkIGRhdGEgaXMgdGhlbiBhcHBlbmRlZCB0byB0aGUgaXRlbSBidWZmZXIs
IHdpdGggcGFkZGluZyB0byBlbnN1cmUgdGhhdAogICAgIC8vIHRoZSBzdGFydCBhbmQgZW5kIG9m
IHRoaXMgZGF0YSBhcmUgYWxpZ25lZCB0byA4IGJ5dGVzLCBpZiBuZWNlc3NhcnkuIFdoZW4gY29u
c3VtaW5nIGVuY29kZWQKICAgICAvLyBpdGVtIGRhdGEsIGEgY29ycmVzcG9uZGluZyBJdGVtQnVm
ZmVyUmVhZGluZ0NsaWVudCB3aWxsIGJlIHJlcXVpcmVkIHRvIGNvbnZlcnQgdGhpcyBlbmNvZGVk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApp
bmRleCA1MDZiNGRkNjJkNTVhNTZhMjc4YzMwY2NhYjJkMTkxMTBmMjQxZWVjLi4yYjQ0M2ZiYmVk
MmMxZmRlNDhiY2RlOWNiZTQwOTUzNDk3ZmRlOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyB2b2lkIHJlbGVhc2VDdXN0b21Gb250RGF0YSh2b2lk
KiBkYXRhKQogewotICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigp
OworICAgIHN0YXRpY19jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYo
KTsKIH0KIAogc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBmcmVlVHlwZUZhY2VLZXk7CiAK
LUZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSBm
cmVlVHlwZUZhY2UsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorRm9udEN1c3RvbVBsYXRmb3JtRGF0
YTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9GYWNlIGZyZWVUeXBlRmFjZSwgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIDogbV9mb250RmFjZShhZG9wdFJlZihjYWlyb19m
dF9mb250X2ZhY2VfY3JlYXRlX2Zvcl9mdF9mYWNlKGZyZWVUeXBlRmFjZSwgRlRfTE9BRF9ERUZB
VUxUKSkpCiB7CiAgICAgYnVmZmVyLnJlZigpOyAvLyBUaGlzIGlzIGJhbGFuY2VkIGJ5IHRoZSBi
dWZmZXItPmRlcmVmKCkgaW4gcmVsZWFzZUN1c3RvbUZvbnREYXRhLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRleCA5YWQxOWI4NzZiMjdlNjBkNGZiYTUwMzBlNjVm
ODFlN2NhOGE1MDY5Li5kZmJjNTgwZmI4ZTliMzA5MzZjY2EwOGJiODhiNDljMmJiNjUzYWM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtODEsMTIgKzgxLDEy
IEBAIEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRlcikK
ICAgICByZXR1cm4gKEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZSopaXRlci0+c2Vjb25kLmdl
dCgpOwogfQogCi1SZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBJbWFnZURlY29kZXJHU3Ry
ZWFtZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IElt
YWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJHU3RyZWFtZXIoZGF0YSwgbWltZVR5cGUs
IGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogfQogCi1JbWFnZURl
Y29kZXJHU3RyZWFtZXI6OkltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXImIGRhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikKK0ltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICA6IG1fbWltZVR5cGUobWlt
ZVR5cGUpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwpAQCAtMTk5LDcg
KzE5OSw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVG
cmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLXZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCkKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGRhdGEsIGJvb2wpCiB7CiAgICAgcHVzaEVuY29kZWREYXRhKGRhdGEpOwog
fQpAQCAtNDI2LDEwICs0MjYsMTEgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKICAgICByZXR1
cm4gRW5jb2RlZERhdGFTdGF0dXM6OlVua25vd247CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lk
IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZm
ZXIubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX2VvcyA9IGZhbHNlOwotICAgIGF1dG8gdGhyZWFk
ID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0g
YnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAgICBhdXRvIHRocmVhZCA9
IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGNv
bnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKICAgICAgICAg
bV9pbm5lckRlY29kZXIgPSBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6Y3Jl
YXRlKCp0aGlzLCBkYXRhLCBzaXplKTsKICAgICAgICAgbV9pbm5lckRlY29kZXItPnJ1bigpOwog
ICAgIH0sIFRocmVhZFR5cGU6OkdyYXBoaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3Ry
ZWFtZXIuaAppbmRleCA2NmYzMzcyODQ2YTRkZjg3NGY0MjBkYjY1NGU2ODljOWU0M2IwYzUyLi5k
M2VmNmE0NWNkN2RiZGZjMzEyMGVhMjNmOGRlYjNjNTk5NzFhZTk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlRGVjb2RlckdTdHJlYW1lci5oCkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIEltYWdlRGVjb2Rl
ckdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2RlckdTdHJl
YW1lcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+
IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwotICAgIEltYWdlRGVjb2RlckdTdHJlYW1l
cihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVy
R1N0cmVhbWVyPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAg
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwog
ICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlckdTdHJlYW1lcigpID0gZGVmYXVsdDsKIAogICAgIHN0
YXRpYyBib29sIHN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSB0eXBlKSB7IHJldHVybiB0eXBl
ID09IE1lZGlhVHlwZTo6VmlkZW87IH0KQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIFBs
YXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAK
ICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0KLSAg
ICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFs
OworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2VvczsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVf
dCkgZmluYWw7CiAKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICB2
b2lkIGhhbmRsZVNhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4mJik7Ci0gICAgdm9pZCBwdXNoRW5j
b2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBwdXNoRW5jb2RlZERhdGEo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyU2FtcGxlKiBzYW1wbGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNzk3OTQ4MGY5
MWM1OTdhYTlmOTAwOTdjMTg4MzJjNmExNWMzMmNlOC4uYjMyNGNmMTE0NjQ3YjMzNzVlNmE0NWJm
YWIxMDNlMGEyOTBmYjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAKQEAgLTM2OTIsNyArMzY5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChJbml0RGF0YSYmIGlu
aXRECiAKICAgICAgICAgR1NUX0RFQlVHKCJzY2hlZHVsaW5nIGluaXRpYWxpemF0aW9uRGF0YUVu
Y291bnRlcmVkICVzIGV2ZW50IG9mIHNpemUgJXp1IiwgaW5pdERhdGEucGF5bG9hZENvbnRhaW5l
clR5cGUoKS51dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgaW5pdERhdGEucGF5bG9hZCgpLT5z
aXplKCkpOwotICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpKSwgaW5pdERhdGEu
cGF5bG9hZCgpLT5zaXplKCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogICAgICAg
ICB3ZWFrVGhpcy0+bV9wbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXRE
YXRhLnBheWxvYWRDb250YWluZXJUeXBlKCksIGluaXREYXRhLnBheWxvYWQoKS0+dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3Vy
Y2VHU3RyZWFtZXIuY3BwCmluZGV4IDVkODZmYjFhZjQ4N2MwMjg5ZTAwMTI1NTk2NWMzMWRjZGE5
NzM0MjYuLjkzMDE5MDk5NDViNGEyM2Q2Njc4MmYzNTBiNTZlNDQ3OWY4MDI2ZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJT
b3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBA
IHByaXZhdGU6CiAKICAgICAvLyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgdmlydHVhbCBt
ZXRob2RzLgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRD
b250aW51ZVBvbGljeUNoZWNrKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNr
RmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAt
MTA5Myw3ICsxMDkzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVz
cG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb24KICAgICBjb21wbGV0aW9u
SGFuZGxlcihTaG91bGRDb250aW51ZVBvbGljeUNoZWNrOjpZZXMpOwogfQogCi12b2lkIENhY2hl
ZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlU3Ry
ZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCmluZGV4IDY5MmE5OTZkMTljMjRl
ZmQ5YTQ4NTUyMzczYTU2NzliNTJlMWVmMWMuLjM0OWJmZGNhYWQ2YzdkN2Y4ZDVhZGEwYTE3MjE5
ZmQ5ZTcwNjI2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCkBAIC02Miwx
MSArNjIsMTEgQEAgcHVibGljOgogICAgIENETVByb3h5Q2xlYXJLZXkoKSA9IGRlZmF1bHQ7CiAg
ICAgdmlydHVhbCB+Q0RNUHJveHlDbGVhcktleSgpOwogCi0gICAgLy8gRklYTUU6IFRoZXJlJ3Mg
YSBsYWNrIG9mIGNvbnNpc3RlbmN5IGJldHdlZW4gU2hhcmVkQnVmZmVycywKKyAgICAvLyBGSVhN
RTogVGhlcmUncyBhIGxhY2sgb2YgY29uc2lzdGVuY3kgYmV0d2VlbiBGcmFnbWVudGVkU2hhcmVk
QnVmZmVycywKICAgICAvLyBWZWN0b3I8Y2hhcj4ncyBhbmQge3VpbnQ4X3QqLHNpemVfdH0gaWRp
b21zIGZvciByZXByZXNlbnRpbmcgYSBjaHVuayBvZgotICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBz
b21laG93LiBOb3RlIFNoYXJlZEJ1ZmZlcnMgYXJlIGRhbmdlcm91cyBzaW5jZQorICAgIC8vIGJ5
dGVzLiBGaXggdGhhdCBzb21laG93LiBOb3RlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJzIGFyZSBk
YW5nZXJvdXMgc2luY2UKICAgICAvLyB0aGV5J3JlIG5vdCB0aHJlYWQtc2FmZSBhbmQgdGhpcyBj
bGFzcyBtdXN0IG1haW50YWluCi0gICAgLy8gdGhyZWFkLXNhZmV0eSwgYnV0IG1heWJlIFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQgY291bGQgYmUKKyAgICAvLyB0aHJlYWQtc2FmZXR5LCBidXQg
bWF5YmUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQgY291bGQgYmUKICAgICAv
LyBtYWRlIHRvIHdvcmssIGhvd2V2ZXIgdGhhdCBoYXMgemVybyBoZWxwZXJzIGZvciBkcm9wcGlu
ZyBpbnRvCiAgICAgLy8gaXRlcmF0b3ItYXdhcmUgLyBjb21wYXJhdG9yLWF3YXJlIGNvbnRhaW5l
cnMuLi4KICAgICBzdHJ1Y3QgY2VuY0RlY3J5cHRDb250ZXh0IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5k
ZXIuY3BwCmluZGV4IDJlZmEwNDM2MGU4ODQ4MzgwNjE0NGMzZDcxZGU2M2FkN2I0MmI1NjEuLmMz
ODkxNmU3ZDA1OWU4ODliNWM4OGVlYjA5ZTBmNGNmYzAzYzFkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1U
aHVuZGVyLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1
cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENETVBy
aXZhdGVUaHVuZGVyOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0
ZVRodW5kZXI6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAgICAv
LyBWYWxpZGF0ZSB0aGUgaW5pdERhdGEgYnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0IGluIGtleWlk
cyBjYXNlLgogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5
cGUsICJrZXlpZHMiKSAmJiBDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdChpbml0RGF0YSkp
CkBAIC0yMzcsNyArMjM3LDcgQEAgYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFMKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVUaHVuZGVyOjpzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZVRodW5kZXI6OnNhbml0aXplUmVzcG9u
c2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKIH0KQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIENETUlu
c3RhbmNlVGh1bmRlcjo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5
c3RlbUNvbmZpZ3VyYQogICAgIGNhbGxiYWNrKFN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgQ0RNSW5z
dGFuY2VUaHVuZGVyOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNl
cnRpZmljYXRlLCAgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNl
VGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgY2VydGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBPcGVu
Q0RNRXJyb3IgZXJyb3IgPSBvcGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2NlcnRpZmljYXRlKG1f
dGh1bmRlclN5c3RlbS5nZXQoKSwgY29uc3RfY2FzdDx1aW50OF90Kj4oY2VydGlmaWNhdGUtPmRh
dGEoKSksCiAgICAgICAgIGNlcnRpZmljYXRlLT5zaXplKCkpOwpAQCAtMzI2LDcgKzMyNiw3IEBA
IFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNlVGh1bmRlcjo6Y3JlYXRlU2Vz
c2lvbigpCiBjbGFzcyBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgewogCiBwdWJsaWM6Ci0gICAgUGFy
c2VkUmVzcG9uc2VNZXNzYWdlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisg
ICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlKGNvbnN0IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKQogICAgIHsKICAgICAgICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+c2l6
ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzU0LDggKzM1NCw4IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQogICAgIGJvb2wg
aGFzUGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fcGF5bG9hZCk7
IH0KLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0JiB7IEFTU0VS
VChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KLSAgICBSZWY8U2hhcmVk
QnVmZmVyPiYgcGF5bG9hZCgpICYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9h
ZC52YWx1ZSgpOyB9CisgICAgY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBwYXls
b2FkKCkgY29uc3QmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxvYWQudmFsdWUo
KTsgfQorICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpICYgeyBBU1NF
UlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CiAgICAgYm9vbCBoYXNU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlLmhhc192YWx1ZSgpOyB9CiAgICAgV2ViQ29yZTo6
TWVkaWFLZXlNZXNzYWdlVHlwZSB0eXBlKCkgY29uc3QgeyBBU1NFUlQobV90eXBlKTsgcmV0dXJu
IG1fdHlwZS52YWx1ZSgpOyB9CiAgICAgV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSB0eXBl
T3IoV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSBhbHRlcm5hdGUpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZSA/IG1fdHlwZS52YWx1ZSgpIDogYWx0ZXJuYXRlOyB9CkBAIC0zNjQsMTEgKzM2NCwx
MSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzVmFsaWQgeyBmYWxzZSB9Owot
ICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IG1fcGF5bG9hZDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9wYXlsb2FkOwogICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZT4gbV90eXBlOwogfTsKIAot
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFj
ayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
VGh1bmRlcjo6Y2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRS
ZXNwb25zZU1lc3NhZ2UoYnVmZmVyKTsKICAgICBpZiAoIXBhcnNlZFJlc3BvbnNlTWVzc2FnZSkg
ewpAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6a2V5
c1VwZGF0ZURvbmVDYWxsYmFjaygpCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVh
cigpOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2so
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25U
aHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1l
c3NhZ2UpCiB7CiAgICAgR1NUX0VSUk9SKCJDRE0gZXJyb3IiKTsKICAgICBHU1RfTUVNRFVNUCgi
ZXJyb3IgZHVtcCIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKQEAgLTQ4OCw3
ICs0ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2so
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxs
YmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1
ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhU2hhcmVkQnVmZmVyLAordm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBs
aWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YVNoYXJlZEJ1ZmZlciwKICAgICBMaWNlbnNlQ2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtNTA2LDcg
KzUwNiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2Uo
TGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0CiAgICAgICAgIG1faW5pdERhdGEucGF5
bG9hZCgpLT5kYXRhKCksIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCksIG51bGxwdHIsIDAs
ICZtX3RodW5kZXJTZXNzaW9uQ2FsbGJhY2tzLCB0aGlzLCAmc2Vzc2lvbik7CiAgICAgaWYgKCFz
ZXNzaW9uKSB7CiAgICAgICAgIEdTVF9FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBzZXNzaW9uIik7
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXls
b2FkKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9
IG1faW5pdERhdGEucGF5bG9hZCgpOwogICAgICAgICBjYWxsYmFjayhpbml0RGF0YS5yZWxlYXNl
Tm9uTnVsbCgpLCB7IH0sIGZhbHNlLCBGYWlsZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVz
dExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0CiAKICAgICBhdXRvIGdl
bmVyYXRlQ2hhbGxlbmdlID0gW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkg
bXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CisgICAgICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5
bG9hZCgpOwogICAgICAgICBpZiAobV9zZXNzaW9uSUQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICBHU1RfRVJST1IoImNvdWxkIG5vdCBjcmVhdGUgc2Vzc2lvbiBpZCIpOwogICAgICAgICAgICAg
Y2FsbGJhY2soaW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgeyB9LCBmYWxzZSwgRmFpbGVkKTsK
QEAgLTU0NSwxMyArNTQ1LDEzIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6c2Vz
c2lvbkZhaWx1cmUoKQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0K
IAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25z
ZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vz
c2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vu
c2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQs
IHNlc3Npb25JRCA9PSBtX3Nlc3Npb25JRCk7CiAKICAgICBHU1RfVFJBQ0UoIlVwZGF0aW5nIHNl
c3Npb24gJXMiLCBzZXNzaW9uSUQudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBtX3Nlc3Npb25DaGFu
Z2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
Ym9vbCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0
YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlm
ICghcmVzcG9uc2VNZXNzYWdlKQpAQCAtNTYyLDcgKzU2Miw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGlj
ZW5zZVR5CiAgICAgICAgICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3Bv
bnNlTWVzc2FnZShyZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJz
ZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1l
c3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwor
ICAgICAgICAgICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9
IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIEdTVF9ERUJVRygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXpl
KCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2Ut
PmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2so
ZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LApAQCAtNTg2LDcgKzU4Niw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklECiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNl
c3Npb25JRCA9PSBtX3Nlc3Npb25JRCk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tz
LmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNz
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7CisgICAg
bV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghcmVzcG9uc2VN
ZXNzYWdlKQpAQCAtNTk3LDcgKzU5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRl
cjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiAgICAg
ICAgICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShy
ZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1l
c3NhZ2UpOwogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5
bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2Ug
PSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAg
ICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFy
c2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9E
RUJVRygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAg
ICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVz
c2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0
LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bWFrZV9wYWlyKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS50eXBl
T3IoTWVkaWFLZXlNZXNzYWdlVHlwZTo6TGljZW5zZVJlcXVlc3QpLApAQCAtNjQwLDcgKzY0MCw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2VuCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9u
SUQsIG1fc2Vzc2lvbklEID09IHNlc3Npb25JRCk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2Fs
bGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBz
dWNjZXNzLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgbXV0YWJsZSB7CisgICAgbV9z
ZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAg
ICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtNjQ5LDcgKzY0
OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2VuCiAgICAgICAgICAgICAgICAgUGFyc2VkUmVz
cG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShidWZmZXIpOwogICAgICAgICAgICAg
ICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGlmIChw
YXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2Fn
ZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7
CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygic2Vzc2lvbiAlcyByZW1vdmVkLCBtZXNz
YWdlIGxlbmd0aCAlenUiLCBtX3Nlc3Npb25JRC51dGY4KCkuZGF0YSgpLCBtZXNzYWdlLT5zaXpl
KCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhtX2tleVN0b3JlLmFsbEtleXNBcyhN
ZWRpYUtleVN0YXR1czo6UmVsZWFzZWQpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6
OlN1Y2NlZWRlZCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVy
LmgKaW5kZXggY2RkOGRhMjExMjNjMTc5MWFlMmZiNjQzOWZmMmQ2ZmEwZDJlYjIxYy4uMTAyMGUx
NTMyMjcxYjUzNTFlMTA2ZGRlOGYyMWVhNTQwNWE5YzIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVy
LmgKQEAgLTkzLDggKzkzLDggQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUo
KSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmlu
YWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBz
dXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBj
b25zdCBmaW5hbDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0
YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0
IGZpbmFsOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3Bv
bnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3Qg
ZmluYWw7CiAKIHByaXZhdGU6CkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIC8vIENE
TUluc3RhbmNlCiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6VGh1bmRlcjsgfQogICAgIHZv
aWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRl
LCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9p
ZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3Vj
Y2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25z
dCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fa2V5U3lzdGVtOyB9CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lv
bj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAtMTI2LDggKzEyNiw4IEBAIGNsYXNzIENETUlu
c3RhbmNlU2Vzc2lvblRodW5kZXIgZmluYWwgOiBwdWJsaWMgQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkgewogcHVibGljOgogICAgIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXIoQ0RNSW5zdGFuY2VU
aHVuZGVyJik7CiAKLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExp
Y2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Np
b24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9u
Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwg
Q2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0
YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYm
KSBmaW5hbDsKQEAgLTE0MSwxNCArMTQxLDE0IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ0RN
SW5zdGFuY2VUaHVuZGVyKiBjZG1JbnN0YW5jZVRodW5kZXIoKSBjb25zdDsKIAotICAgIHVzaW5n
IE5vdGlmaWNhdGlvbiA9IHZvaWQgKENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OiopKFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9IHZv
aWQgKENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OiopKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB1c2luZyBDaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFj
ayA9IEZ1bmN0aW9uPHZvaWQoKT47Ci0gICAgdXNpbmcgU2Vzc2lvbkNoYW5nZWRDYWxsYmFjayA9
IEZ1bmN0aW9uPHZvaWQoYm9vbCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+OworICAgIHVzaW5n
IFNlc3Npb25DaGFuZ2VkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGJvb2wsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKT47CiAKLSAgICB2b2lkIGNoYWxsZW5nZUdlbmVyYXRlZENh
bGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgY2hhbGxlbmdlR2VuZXJh
dGVkQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQg
a2V5VXBkYXRlZENhbGxiYWNrKEtleUlEVHlwZSYmKTsKICAgICB2b2lkIGtleXNVcGRhdGVEb25l
Q2FsbGJhY2soKTsKLSAgICB2b2lkIGVycm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
Jik7CisgICAgdm9pZCBlcnJvckNhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKTsKICAgICBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1cyBzdGF0dXMoY29uc3QgS2V5
SURUeXBlJikgY29uc3Q7CiAgICAgdm9pZCBzZXNzaW9uRmFpbHVyZSgpOwogCkBAIC0xNTksNyAr
MTU5LDcgQEAgcHJpdmF0ZToKICAgICBJbml0RGF0YSBtX2luaXREYXRhOwogICAgIE9wZW5DRE1T
ZXNzaW9uQ2FsbGJhY2tzIG1fdGh1bmRlclNlc3Npb25DYWxsYmFja3MgeyB9OwogICAgIEJveFB0
cjxPcGVuQ0RNU2Vzc2lvbj4gbV9zZXNzaW9uOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
bWVzc2FnZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdlOwog
ICAgIGJvb2wgbV9uZWVkc0luZGl2aWR1YWxpemF0aW9uIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8
Q2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2s+IG1fY2hhbGxlbmdlQ2FsbGJhY2tzOwogICAgIFZl
Y3RvcjxTZXNzaW9uQ2hhbmdlZENhbGxiYWNrPiBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCmluZGV4IDNmODVh
ZmU3M2M4NDI3NjI5OTdkNWFiYzJkN2JjMDdmN2MwMWI5YzMuLmVhODkwZjY3ZGEyMTM4N2Y0MGRh
NjUxYTBjYTVjNzM0OTNlODRmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVN
RVV0aWxpdGllcy5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIHZvaWQgbWFya3VwRXJyb3Io
R01hcmt1cFBhcnNlQ29udGV4dCosIEdFcnJvciosIGdwb2ludGVyKQogCiBzdGF0aWMgR01hcmt1
cFBhcnNlciBtYXJrdXBQYXJzZXIgeyBtYXJrdXBTdGFydEVsZW1lbnQsIG1hcmt1cEVuZEVsZW1l
bnQsIG1hcmt1cFRleHQsIG1hcmt1cFBhc3N0aHJvdWdoLCBtYXJrdXBFcnJvciB9OwogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IHVucGFyc2VkUGF5bG9hZCkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXlsb2FkID0g
V1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOwogICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+
c2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXgg
ZDVhZmY4NDVmNDA5YTc1ZDcxYTk4NDBhY2YxZDM0MmE0NjQ3ZDJmMS4uMjdkZDRlYWUwZDJlMDFh
YjRkODRjMGFiYzQyNGViYjEwMTA0YzA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1l
ckVNRVV0aWxpdGllcy5oCkBAIC0zOCw4ICszOCw3IEBAIEdTVF9ERUJVR19DQVRFR09SWV9FWFRF
Uk4od2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnkp
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbml0RGF0YSB7CiBwdWJsaWM6Ci0gICAgSW5p
dERhdGEoKQotICAgICAgICA6IG1fcGF5bG9hZChTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKSB7IH0K
KyAgICBJbml0RGF0YSgpID0gZGVmYXVsdDsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2
ZSBhbiBlbnVtIGZvciBzeXN0ZW0gdXVpZHMgZm9yIGJldHRlciB0eXBlIHNhZmV0eS4KICAgICBJ
bml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBHc3RCdWZmZXIqIGluaXREYXRhKQpAQCAt
NTAsMTMgKzQ5LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdTVF9DQVRfTEVWRUxfTE9HKHdl
YmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5LCBHU1Rf
TEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHByb3RlY3Rpb24gZGF0YSIsIHN5
c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBw
ZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBpZiAoYXV0byBwYXJz
ZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hh
cmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2Fk
LnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAotICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYg
c3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKKyAgICBJbml0RGF0YShj
b25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBw
YXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXls
b2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RGTW92ZShwYXlsb2FkKSkpCiAgICAgeworICAgICAg
ICBpZiAocGF5bG9hZCkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4
dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSkpCisgICAgICAgICAg
ICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOwor
ICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmQoSW5pdERhdGEmJiBpbml0RGF0YSkK
QEAgLTcyLDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9i
dXN0LCBzbyBiZSBjYXJlZnVsIGhlcmUhCiAgICAgICAgIG1fc3lzdGVtSWQgPSBpbml0RGF0YS5t
X3N5c3RlbUlkOwogCi0gICAgICAgIG1fcGF5bG9hZC0+YXBwZW5kKCppbml0RGF0YS5wYXlsb2Fk
KCkpOworICAgICAgICBtX3BheWxvYWQuYXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAg
IH0KIAotICAgIGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXlsb2FkOyB9CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHBh
eWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJp
bmcmIHN5c3RlbUlkKCkgY29uc3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogICAgIFN0cmluZyBw
YXlsb2FkQ29udGFpbmVyVHlwZSgpIGNvbnN0CiAgICAgewpAQCAtODYsMTEgKzg5LDExIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENl
bmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBTdHJp
bmcgbV9zeXN0ZW1JZDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBtX3BheWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9uU3lz
dGVtRXZlbnRzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDcxOGI5YmQzMTVlY2M2
NzA3ODljNjVjYmFhYTAzNDkyOTc1ZTcyZDMuLjY5MjhhNjNlOTcxYzdjMzVlODg0NGVlZjczYmZh
NDRhOGQ4YzAzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzYsNyArMzYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3Mg
Rm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRp
ZXM7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRl
ZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJ
bWFnZU1hYy5tbQppbmRleCA4M2U2YWY3YjAzODkyODM4YzNiZmVhMWMwYzExYWE3ZmNmOGE3N2E5
Li42OGJjYzg4NDZhOGIxZjBmN2NiY2YxNDAzMTk2NmVkOTI0MzIyYzJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJ
bWFnZU1hYy5tbQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQg
UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIG1fZG9jdW1lbnQg
PSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxv
Y1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogfQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6
OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaApp
bmRleCAwOWMxYzQ1YzQ1OTNhZWE0MzE4MzBkMjE1YjdlNzQ4NTJjMTllMzdmLi5mYTAwMDgxMTYw
NjY5N2RjNWM1MTEyMzMzYzkwYzhjOTJiNGI2NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
LmgKQEAgLTM1LDkgKzM1LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBCaWdF
bmRpYW5VU2hvcnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRU9UUHJlZml4OwogY2xh
c3MgRm9udE1lbW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IEVPVEhlYWRlciB7CiAgICAgRU9USGVhZGVyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5kZXggMmNmYTg1NGMwMjI2Njhh
Y2MwMDczN2MxZWJiMzVmZjM0OGQ1OGUyYi4uMGZhOGYzMDZhZDk1MmQwNmEwOTI5N2QwYjFkMjg3
Yjg5ODgzMmEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApAQCAtMzgx
LDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogCiBzdGF0aWMgYm9v
bCBsb2FkSG10eFRhYmxlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgVmVj
dG9yPHVpbnQxNl90PiYgYWR2YW5jZVdpZHRocykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7
CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6
SGhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBl
Ojp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpIaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFo
aGVhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjQsNyArNDI0LDcgQEAgT3BlblR5cGVW
ZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVydGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
IHBsYXRmb3JtRGF0YSwKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKICAgICAvLyBMb2FkIHZoZWEg
Zmlyc3QuIFRoaXMgdGFibGUgaXMgcmVxdWlyZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0
aWNhbCBmbG93LgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0
YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBs
YXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKICAgICBjb25zdCBP
cGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5
cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIXZoZWEpCiAgICAgICAgIHJldHVybjsK
QEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmlj
cyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5cGVW
ZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBGb250UGxh
dGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOworICAg
IGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJU
YWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpHU1VCVGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFs
aWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NVQlRhYmxlPihidWZmZXIpOwogICAgIGlmIChnc3ViKQog
ICAgICAgICBnc3ViLT5nZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNhbEds
eXBoTWFwLCAqYnVmZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKaW5kZXggYTYyNzE5
YjE3MTlhNzRmOTc2OTIyMTlkZjVmN2FhZWRjNDkwNjQ2Ni4uMGRiNGFmYWRiM2Y3NDJiODNhNGUx
NmNmMzcxODcwYTJiMDQwNGVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKQEAgLTQzLDcgKzQz
LDcgQEAgZW51bSBEV1JJVEVfRk9OVF9TVFJFVENIOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIERpcmVjdFdyaXRlIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmgKaW5kZXggNWYxMGY3MzkyZDA0YzM0NGQxMmNlZTQyNjZlZGIxZWU5OTcx
YzRlZi4uMDhmYzlmMTllYWVhOTQ4M2VhNThlYzFhZWVkZDQ1NzI1NmNlMjdiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zNiwxMiArMzYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dG
b250KiBDR0ZvbnRSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsK
IGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBG
b250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0
dGluZ3M7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGlu
Z3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKaW5k
ZXggNjI5ZTBlNjFhMTA0YzU2N2ExZDRlZGNiN2U1Nzk3ZGNmNjdjNmU4ZS4uNzczNTczOWI5MzM0
ZjQ0ZDk5YTNmMTJmZmM1YmY3YjQxZjdjYzZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3Bw
CkBAIC0yNzIsNyArMjcyLDcgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJEaXJlY3Qy
RDo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWIKICAgICByZXR1cm4g
Yml0bWFwOwogfQogCi12b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckRpcmVj
dDJEOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogewogICAgIGlmICghYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZURlY29kZXJEaXJlY3QyRC5oCmluZGV4IDRmNDcyNTg2YjQyNGJkYTFjZjZmYTAxNDNjYmEyM2Qw
MzAwMTZlNDUuLmMyMzY1ZmQ3NDRjNjExOGMxOTk5ZTA1YjgwMmVkNWI0OGYzNjQ4MjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJE
aXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZURlY29kZXJEaXJlY3QyRC5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEltYWdlRGVjb2RlckRp
cmVjdDJEIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6CiAgICAgSW1hZ2VE
ZWNvZGVyRGlyZWN0MkQoKTsKIAotICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyRGlyZWN0MkQ+
IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJEaXJlY3QyRD4gY3JlYXRlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJEaXJl
Y3QyRCgpKTsKICAgICB9CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3Jt
SW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
ID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERl
Y29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2
b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwor
ICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVy
Q2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAKaW5kZXggMGQ4ODIwZTlmM2Q2ZmQ3NzM1ZDU3MGIz
NjQxNDg4ZjUzYmQ3ZWNlOS4uMmQ5NzI3MGE3MzQ4MzQ4OTNlNzhjODFmZjBlYzViYjVkZmVjM2Y4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VX
aW4uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIC8v
IFRoaXMgZnVuY3Rpb24gbG9hZHMgcmVzb3VyY2VzIGZyb20gV2ViS2l0Ci1SZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsKK1Jl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVm
ZmVyKGNvbnN0IGNoYXIqKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUlt
YWdlRGVjb2Rlci5jcHAKaW5kZXggZDk1NmQ5ZTc2MjVkNWJiNWE3MGYwNjkzZTc3OThlZTkwODQ5
ZjE2NS4uMzNjOTVlYzMzMzNhOTIwYzY0YTAxODE3NTFlYjRhNTA1ZWYxYTdhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURl
Y29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIG5hbWVzcGFjZSB7CiAKLXN0YXRpYyB1bnNpZ25lZCBjb3B5RnJvbVNoYXJlZEJ1ZmZl
cihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QgU2hhcmVkQnVmZmVy
JiBzaGFyZWRCdWZmZXIpCitzdGF0aWMgdW5zaWduZWQgY29weUZyb21TaGFyZWRCdWZmZXIoY2hh
ciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIHNoYXJlZEJ1ZmZlcikKIHsKICAgICB1bnNpZ25lZCBieXRlc0V4dHJhY3RlZCA9IDA7
CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogc2hhcmVkQnVmZmVyKSB7CkBAIC0xMzUs
NyArMTM1LDcgQEAgYm9vbCBtYXRjaGVzQ1VSU2lnbmF0dXJlKGNoYXIqIGNvbnRlbnRzKQogCiB9
CiAKLVJlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gU2NhbGFibGVJbWFnZURlY29kZXI6OmNy
ZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxT
Y2FsYWJsZUltYWdlRGVjb2Rlcj4gU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGxlbmd0aE9mTG9uZ2VzdFNpZ25hdHVyZSA9IDE0OyAvLyBUbyB3
aXQ6ICJSSUZGPz8/P1dFQlBWUCIKICAgICBjaGFyIGNvbnRlbnRzW2xlbmd0aE9mTG9uZ2VzdFNp
Z25hdHVyZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCAzMmQ0ZTZmOGI4ZmExNGEx
M2JmYjYyMmQ4NzU3MDg3OThiOTlkYWEyLi45YzQwNTU3ODI0MWQwYzUxMjcwMjk1MTVjMjIxMjY1
OGY4YzRmNjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTYwLDcgKzYwLDcgQEAg
cHVibGljOgogCiAgICAgLy8gUmV0dXJucyBudWxscHRyIGlmIHdlIGNhbid0IHNuaWZmIGEgc3Vw
cG9ydGVkIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgZGF0YSAocG9zc2libHkKICAgICAvLyBiZWNh
dXNlIHRoZXJlIGlzbid0IGVub3VnaCBkYXRhIHlldCkuCi0gICAgc3RhdGljIFJlZlB0cjxTY2Fs
YWJsZUltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNjYWxhYmxl
SW1hZ2VEZWNvZGVyPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIGJvb2wgcHJlbXVsdGlw
bHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQogCkBAIC03MCwx
NiArNzAsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1cyA9
PSBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxldGU7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRh
KFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlCisgICAg
dm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6
RXJyb3IpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGRhdGEuZGF0YSgpKSB7
Ci0gICAgICAgICAgICAvLyBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb21iaW5lcyBhbGwgc2VnbWVu
dHMgaW50byBvbmUgaW4gY2FzZSB0aGVyZSdzIG1vcmUgdGhhbiBvbmUuCi0gICAgICAgICAgICBt
X2RhdGEgPSBkYXRhLmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwotICAgICAgICB9CisgICAg
ICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgICAg
IGlmIChjb250aWd1b3VzRGF0YS0+ZGF0YSgpKQorICAgICAgICAgICAgbV9kYXRhID0gY29udGln
dW91c0RhdGEtPmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwogICAgICAgICBpZiAobV9lbmNv
ZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewogICAg
ICAgICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRydWU7CiAgICAgICAgICAgICB0
cnlEZWNvZGVTaXplKGFsbERhdGFSZWNlaXZlZCk7CkBAIC0xOTUsNyArMTk0LDcgQEAgcHVibGlj
OgogICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CiAgICAgVmVjdG9yPFNjYWxhYmxlSW1hZ2VEZWNv
ZGVyRnJhbWUsIDE+IG1fZnJhbWVCdWZmZXJDYWNoZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9j
ayk7CiAgICAgbXV0YWJsZSBMb2NrIG1fbG9jazsKICAgICBib29sIG1fcHJlbXVsdGlwbHlBbHBo
YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2
aWYvQVZJRkltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcAppbmRleCA3YzYwM2ZkODM1OGMyMTRhYzkx
ODRmMzE4OTk3MmZlODQxYjYxZTgwLi4yNmY4ODY0OTZlNWE1YTE0ZTI4YWZiMWFmYTliZmMzMDE3
N2Y1MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBA
IEFWSUZJbWFnZVJlYWRlcjo6QVZJRkltYWdlUmVhZGVyKFJlZlB0cjxBVklGSW1hZ2VEZWNvZGVy
PiYmIGRlY29kZXIpCiAKIEFWSUZJbWFnZVJlYWRlcjo6fkFWSUZJbWFnZVJlYWRlcigpID0gZGVm
YXVsdDsKIAotYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorYm9vbCBBVklG
SW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoYXZpZkRl
Y29kZXJTZXRJT01lbW9yeShtX2F2aWZEZWNvZGVyLmdldCgpLCBkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkpICE9IEFWSUZfUkVTVUxUX09LKQogICAgICAgICByZXR1cm4gYWxsRGF0YVJlY2VpdmVk
ID8gbV9kZWNvZGVyLT5zZXRGYWlsZWQoKSA6IGZhbHNlOwpAQCAtNTgsNyArNTgsNyBAQCBib29s
IEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCYgZGF0YSwgYm9vbCBhbAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFWSUZJbWFn
ZVJlYWRlcjo6ZGVjb2RlRnJhbWUoc2l6ZV90IGZyYW1lSW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNv
ZGVyRnJhbWUmIGJ1ZmZlciwgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkK
K3ZvaWQgQVZJRkltYWdlUmVhZGVyOjpkZWNvZGVGcmFtZShzaXplX3QgZnJhbWVJbmRleCwgU2Nh
bGFibGVJbWFnZURlY29kZXJGcmFtZSYgYnVmZmVyLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkKIHsKICAgICBpZiAobV9kZWNvZGVyLT5mYWlsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgKaW5kZXggY2JjYTBiOGMx
MjRiZmYwZmZjMzMwMWJhMzViY2UwMWVkMjcyMmRmOC4uNDk2ZjY5ZjgxMmJkNzViMGVkYTYzNTdi
YWE4NjBjZmNjYjViYTRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCkBAIC0zOSw4ICsz
OSw4IEBAIHB1YmxpYzoKICAgICBBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJbWFnZURlY29k
ZXI+JiYpOwogICAgIH5BVklGSW1hZ2VSZWFkZXIoKTsKIAotICAgIGJvb2wgcGFyc2VIZWFkZXIo
Y29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsK
LSAgICB2b2lkIGRlY29kZUZyYW1lKHNpemVfdCBpbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJG
cmFtZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKTsKKyAgICBib29sIHBhcnNl
SGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4LCBTY2Fs
YWJsZUltYWdlRGVjb2RlckZyYW1lJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQmKTsKICAgICBzaXplX3QgaW1hZ2VDb3VudCgpIGNvbnN0OwogICAgIGRvdWJsZSBy
ZXBldGl0aW9uQ291bnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRl
eCA3Mjc2OWE2OTI2ZWMyNDE5YmY2NjM4MjUyOGQzZDc3MjBhNTRhZGFlLi5mNzQ1NWMxNDZjN2U4
YWViMDRjYzhjNTZmMzMwZTJhMDFmM2JhNzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNw
cApAQCAtNDYsNyArNDYsNyBAQCBCTVBJbWFnZURlY29kZXI6OkJNUEltYWdlRGVjb2RlcihBbHBo
YU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogewogfQogCi12b2lk
IEJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQordm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgp
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzdjN2NhODFm
ZWE2YjhhNzc0YmIzMDhlNTM4ZGNkMDQ4Yzk5NWVlYS4uNjRkZWQ2YWJiZTJjMGEyOWIxMWY5ZmI1
ZWNkNmI0ODcyNGQ1ODk3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaApAQCAtNDQsNyArNDQs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmluZyBm
aWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJibXAiX3M7IH0KLSAgICB2
b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwor
ICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOwogICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVy
QXRJbmRleChzaXplX3QgaW5kZXgpIGZpbmFsOwogICAgIC8vIENBVVRJT046IHNldEZhaWxlZCgp
IGRlbGV0ZXMgfG1fcmVhZGVyfC4gQmUgY2FyZWZ1bCB0byBhdm9pZAogICAgIC8vIGFjY2Vzc2lu
ZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxseSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9tIGluc2lk
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1w
L0JNUEltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9ibXAvQk1QSW1hZ2VSZWFkZXIuaAppbmRleCA0ODQ0ZjM4MGRjMTdlYzcwNDU4OGZiMTJmNTNl
YWJjNmQyMGU2MGY0Li5iZDQzMGU4YThiZWEyYzgxNmIyYzUyMmJmNWJhNzg4NDZjMzhlMGZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9ibXAvQk1QSW1hZ2VSZWFkZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBCTVBJbWFnZVJl
YWRlciB7CiBwdWJsaWM6CiAgICAgLy8gUmVhZCBhIHZhbHVlIGZyb20gfGRhdGFbb2Zmc2V0XXws
IGNvbnZlcnRpbmcgZnJvbSBsaXR0bGUgdG8gbmF0aXZlCiAgICAgLy8gZW5kaWFubmVzcy4KLSAg
ICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJlYWRVaW50MTYoY29uc3QgU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQxNl90
IHJlYWRVaW50MTYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRh
dGEsIGludCBvZmZzZXQpCiAgICAgewogICAgICAgICB1aW50MTZfdCByZXN1bHQ7CiAgICAgICAg
IG1lbWNweSgmcmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgMik7CkBAIC01Miw3ICs1Miw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBzdGF0aWMg
aW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dCYgZGF0YSwgaW50IG9mZnNldCkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50
MzIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBv
ZmZzZXQpCiAgICAgewogICAgICAgICB1aW50MzJfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNweSgm
cmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgNCk7CkBAIC02OSw3ICs2OSw3IEBAIHB1Ymxp
YzoKICAgICBCTVBJbWFnZVJlYWRlcihTY2FsYWJsZUltYWdlRGVjb2RlciogcGFyZW50LCBzaXpl
X3QgZGVjb2RlZEFuZEhlYWRlck9mZnNldCwgc2l6ZV90IGltZ0RhdGFPZmZzZXQsIGJvb2wgdXNl
c0FuZE1hc2spOwogCiAgICAgdm9pZCBzZXRCdWZmZXIoU2NhbGFibGVJbWFnZURlY29kZXJGcmFt
ZSogYnVmZmVyKSB7IG1fYnVmZmVyID0gYnVmZmVyOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KKyAgICB2b2lk
IHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9k
YXRhID0gJmRhdGE7IH0KIAogICAgIC8vIERvZXMgdGhlIGFjdHVhbCBkZWNvZGluZy4gSWYgfG9u
bHlTaXplfCBpcyB0cnVlLCBkZWNvZGluZyBvbmx5CiAgICAgLy8gcHJvZ3Jlc3NlcyBhcyBmYXIg
YXMgbmVjZXNzYXJ5IHRvIGdldCB0aGUgaW1hZ2Ugc2l6ZS4gUmV0dXJucwpAQCAtMjcyLDcgKzI3
Miw3IEBAIHByaXZhdGU6CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogbV9idWZmZXI7
CiAKICAgICAvLyBUaGUgZmlsZSB0byBkZWNvZGUuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ+IG1fZGF0YTsKIAogICAgIC8vIEFuIGluZGV4IGludG8gfG1fZGF0YXwgcmVw
cmVzZW50aW5nIGhvdyBtdWNoIHdlJ3ZlIGFscmVhZHkgZGVjb2RlZC4KICAgICBzaXplX3QgbV9k
ZWNvZGVkT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNw
cAppbmRleCA2MDEyMDM3NGY5YzQzMTY4YTY1MjFiNjljNTRhZmJlMmEwMGY1NWY3Li44Y2NmMDRm
NjhmMDQwNmRhNGQzNzRhZTExNjhjOWNlYmJjOWE1ZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9J
bWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcApAQCAtMzcsNyArMzcsNyBAQCBQbGF0Zm9ybUltYWdl
UHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0CiAgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8dWludDMyX3QqPihtX3BpeGVsc1B0cikp
LAogICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMyLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhl
aWdodCgpLCBzaXplKCkud2lkdGgoKSAqIHNpemVvZih1aW50MzJfdCkpKTsKICAgICBzdGF0aWMg
Y2Fpcm9fdXNlcl9kYXRhX2tleV90IHNfc3VyZmFjZURhdGFLZXk7Ci0gICAgY2Fpcm9fc3VyZmFj
ZV9zZXRfdXNlcl9kYXRhKHN1cmZhY2UuZ2V0KCksICZzX3N1cmZhY2VEYXRhS2V5LCBtX3BpeGVs
cy5nZXQoKSwgW10odm9pZCogZGF0YSkgeyBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50Kj4oZGF0YSktPmRlcmVmKCk7IH0pOworICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJf
ZGF0YShzdXJmYWNlLmdldCgpLCAmc19zdXJmYWNlRGF0YUtleSwgbV9waXhlbHMuZ2V0KCksIFtd
KHZvaWQqIGRhdGEpIHsgc3RhdGljX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQqPihkYXRhKS0+ZGVyZWYoKTsgfSk7CiAKICAgICByZXR1cm4gc3VyZmFjZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJ
bWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKaW5kZXggZTZhYmUwZDk1NDRiNmMxODVjNjQ1ZGVjZTA5
ZjIzZjk1NjY2MDdjYi4uYjllYzAxYjhhZThlOGQyOWJjNzgyNTI2ZTA3NjUyNTUxZTM1OWMwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgR0lGSW1hZ2VE
ZWNvZGVyOjpHSUZJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3AKIAogR0lGSW1hZ2VEZWNvZGVyOjp+R0lGSW1hZ2VEZWNvZGVyKCkgPSBk
ZWZhdWx0OwogCi12b2lkIEdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBHSUZJbWFnZURlY29kZXI6OnNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAg
ICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgK
aW5kZXggMzVkZjMzZjZkZmM0ODNmZDg0NzEzNjZhZTUzYmIwYjk2MWNhZWQyZS4uYzc0NzE5OTk5
Yjk4NmMxY2VmODQ3ODc1OWQyMzcxOGM5MDQyZDNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIu
aApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2Rl
cgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJn
aWYiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIHNldFNpemUo
Y29uc3QgSW50U2l6ZSYpIGZpbmFsOwogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3QgZmlu
YWw7CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9n
aWYvR0lGSW1hZ2VSZWFkZXIuaAppbmRleCA0MjE0NmUwMzI5MzIzNjk5Nzg5ZWI1ZTQyYWY0Yzcz
ZDM0YWI5Y2M2Li4xMDgyZmRmMGRmZjIzOTFlNTY1MzBhNDFmODdiYTQzOTgyMzI3NTM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9n
aWYvR0lGSW1hZ2VSZWFkZXIuaApAQCAtMjM3LDcgKzIzNyw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KKyAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRh
dGE7IH0KICAgICAvLyBGSVhNRTogaGFsdEF0RnJhbWUgc2hvdWxkIGJlIHNpemVfdC4KICAgICBi
b29sIGRlY29kZShXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OkdJRlF1ZXJ5LCB1bnNpZ25lZCBo
YWx0QXRGcmFtZSk7CiAKQEAgLTMxNiw2ICszMTYsNiBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8R0lGRnJhbWVDb250ZXh0PiA+IG1fZnJhbWVzOwogICAgIHNpemVfdCBt
X2N1cnJlbnREZWNvZGluZ0ZyYW1lOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKICAgICBib29sIG1fcGFyc2VDb21wbGV0
ZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBjNzE3YzQ1ZDMwNTdjMDU1
MzZlZTYwNTBmOTM5NzA0NmQxMGRmMmE3Li5jMDcxMzQ1YjhiZjM2OWI4MDI3MWZiZGYwYTBjZTAx
NzRmMDUwM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTIsNyArNTIsNyBA
QCBJQ09JbWFnZURlY29kZXI6OklDT0ltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBJQ09JbWFnZURlY29kZXI6On5JQ09JbWFnZURl
Y29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIElDT0ltYWdlRGVjb2Rl
cjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29k
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFn
ZURlY29kZXIuaAppbmRleCBmYjdhOTAzYjJhMDc1Mzk0OTE3YWJiYmYxMWIxY2VkODNmZjQzMmEw
Li4xMGVlOWI0ZDJlOGM5ZDg4N2UxZDJiOGJlMTM5YmI3NDI3MWQ1N2E4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0lt
YWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFNjYWxhYmxl
SW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gImljbyJfczsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29s
IGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgSW50U2l6ZSBzaXpl
KCkgY29uc3QgZmluYWw7CiAgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNp
emUmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGZkMzQ1YmI3
ODZmZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLjVjZmFjOWYyMzU3ZTJlMTJjNjg2NDAw
YjI2Nzg4YWU3ZjhiZTEzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAt
MjIyLDcgKzIyMiw3IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRfbWFya2Vy
X3B0ciBtYXJrZXIpCiAKIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmls
ZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogewotICAgIGF1dG8gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAg
ICBmb3IgKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIgPSBpbmZvLT5tYXJrZXJfbGlzdDsg
bWFya2VyOyBtYXJrZXIgPSBtYXJrZXItPm5leHQpIHsKICAgICAgICAgaWYgKCFpc0lDQ01hcmtl
cihtYXJrZXIpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0yMzYsMTMgKzIzNiwxMyBAQCBz
dGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNz
X3N0cnVjdCogaW5mbykKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIHVu
c2lnbmVkIG1hcmtlclNpemUgPSBtYXJrZXItPmRhdGFfbGVuZ3RoIC0gaWNjSGVhZGVyU2l6ZTsK
LSAgICAgICAgYnVmZmVyLT5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
bWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOworICAgICAgICBidWZm
ZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSAr
IGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXplKTsKICAgICB9CiAKLSAgICBpZiAoYnVmZmVyLT5p
c0VtcHR5KCkpCisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICByZXR1cm4gYnVmZmVyLnRha2UoKS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKIH0KICNlbmRpZgogCkBAIC0zMjAsNyArMzIwLDcgQEAgcHVibGljOgog
ICAgICAgICBtX2J5dGVzVG9Ta2lwID0gc3RkOjptYXgobnVtQnl0ZXMgLSBieXRlc1RvU2tpcCwg
c3RhdGljX2Nhc3Q8bG9uZz4oMCkpOwogICAgIH0KIAotICAgIGJvb2wgZGVjb2RlKGNvbnN0IFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgb25seVNpemUpCisgICAgYm9vbCBk
ZWNvZGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJv
b2wgb25seVNpemUpCiAgICAgewogICAgICAgICBtX2RlY29kaW5nU2l6ZU9ubHkgPSBvbmx5U2l6
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCmluZGV4
IGJlY2Y2NDUwMjc3ZWViNzRiMDlkZTUyZWUxODJmZjZlMTFlZDI3NjIuLjIwNDczZjBlZWViYjU2
YzcxMzE0ZjY1NTZiZGEwOTAzMzQ5MDc0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVH
MjAwMEltYWdlRGVjb2Rlci5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIEpQRUcyMDAwSW1h
Z2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAg
ICAgfQogCiAgICAgc3RydWN0IFJlYWRlciB7Ci0gICAgICAgIFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQmIGRhdGE7CisgICAgICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
JiBkYXRhOwogICAgICAgICBzaXplX3Qgb2Zmc2V0OwogICAgIH0gcmVhZGVyID0geyAqbV9kYXRh
LCAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYzEyYzQ1OWE1YTNlNWIz
NTFjNWJjYzYyYmYwMGI4YTI4MWJkNWJhMy4uNGNiZDMyM2Q5YTc1MDI2ZWY4NjU4ZjM4MTZkZDcz
OGQzN2NhOGVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE1Miw3ICsxNTIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVhZE9mZnNldCA9IDA7CiAgICAgfQogCi0gICAgYm9v
bCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBzaXpl
T25seSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpCisgICAgYm9vbCBkZWNvZGUoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgc2l6ZU9ubHksIHVuc2ln
bmVkIGhhbHRBdEZyYW1lKQogICAgIHsKICAgICAgICAgbV9kZWNvZGluZ1NpemVPbmx5ID0gc2l6
ZU9ubHk7CiAgICAgICAgIFBOR0ltYWdlRGVjb2RlciogZGVjb2RlciA9IHN0YXRpY19jYXN0PFBO
R0ltYWdlRGVjb2Rlcio+KHBuZ19nZXRfcHJvZ3Jlc3NpdmVfcHRyKG1fcG5nKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFn
ZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2Vi
cC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAwMmYxYjA5ZGJjNzY1MTYwMWY5MjJkZGUyOWY4
MDVhNjU4NzFlMmQyLi5iMWJlYzU1ZTc4YzQzNDgwMWMyNTRhY2UwZGY1OTkzMWEzNmI3NGJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dF
QlBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgV0VCUElt
YWdlRGVjb2Rlcjo6V0VCUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGUKIAogV0VCUEltYWdlRGVjb2Rlcjo6fldFQlBJbWFnZURlY29kZXIo
KSA9IGRlZmF1bHQ7CiAKLXZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZm
ZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpz
ZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTMyLDcgKzEzMiw3
IEBAIHZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKHNpemVfdCBmcmFtZUluZGV4LCBib29s
IGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBUaGlzIGNhbiBiZSBleGVjdXRlZCBib3RoIGluIHRo
ZSBtYWluIHRocmVhZCAod2hlbiBub3QgdXNpbmcgYXN5bmMgZGVjb2RpbmcpIG9yIGluIHRoZSBk
ZWNvZGluZyB0aHJlYWQuCiAgICAgLy8gV2hlbiBleGVjdXRlZCBpbiB0aGUgZGVjb2RpbmcgdGhy
ZWFkLCBhIGNhbGwgdG8gc2V0RGF0YSgpIGZyb20gdGhlIG1haW4gdGhyZWFkIG1heSBjaGFuZ2Ug
dGhlIGRhdGEKICAgICAvLyB0aGUgV2ViUERlbXV4ZXIgaXMgdXNpbmcsIGxlYXZpbmcgaXQgaW4g
YW4gaW5jb25zaXN0ZW50IHN0YXRlLCBzbyB3ZSBuZWVkIHRvIHByb3RlY3QgdGhlIGRhdGEuCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHByb3RlY3RlZERhdGEobV9kYXRh
KTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHByb3Rl
Y3RlZERhdGEobV9kYXRhKTsKICAgICBXZWJQRGF0YSBpbnB1dERhdGEgPSB7IHByb3RlY3RlZERh
dGEtPmRhdGEoKSwgcHJvdGVjdGVkRGF0YS0+c2l6ZSgpIH07CiAgICAgV2ViUERlbXV4U3RhdGUg
ZGVtdXhlclN0YXRlOwogICAgIFdlYlBEZW11eGVyKiBkZW11eGVyID0gV2ViUERlbXV4UGFydGlh
bCgmaW5wdXREYXRhLCAmZGVtdXhlclN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgK
aW5kZXggYWYzNjVlOWNmOWM3Y2U5NTM4YjY0YmE3ODliZjAxN2Q0OGY2ZWRlMS4uZGQyOGJjODhk
ZjVjMGZhM2MxNTczNzg2OWIyNjA5NzNhYWEwZDIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNv
ZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldFQlBJbWFnZURl
Y29kZXIoKTsKIAogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJ3ZWJwIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJv
b2wpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9v
bCkgZmluYWw7CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogZnJhbWVCdWZmZXJBdElu
ZGV4KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRp
b25Db3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9mcmFtZUNvdW50OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDkwOWU4ZTc2OGFkYjY4YmFiMjg0NDVkMjgy
NzM2MGEzZjNmYTIyYzMuLmIyMzc3ZmUzNDExZDJhYzQwMTUxM2JmMDlhZThjY2FlNzg2YmQ4ZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC0y
MzYsMTQgKzIzNiwxNCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogCiAj
aWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6
KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUZsYXRSVEZEXSkgewotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
aXRlbUluZGV4LCBrVVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7
CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVn
eS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlRmxhdFJURkQsIG1f
cGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9
IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJv
YXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVy
LnJlYWRSVEZEKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJlc3Vs
dDo6RGlkTm90UmVhZFR5cGU7CiAgICAgfQogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmlu
ZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUlRGXSkgewotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRl
bUluZGV4LCBrVVRUeXBlUlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVJURiwgbV9wYXN0ZWJvYXJkTmFt
ZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQo
KSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2Vk
RXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZFJURigqYnVm
ZmVyKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRU
eXBlOwpAQCAtMjUxLDcgKzI1MSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCiAjZW5kaWYgLy8gIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogCiAgICAgaWYgKFtzdXBwb3J0
ZWRJbWFnZVR5cGVzKCkgY29udGFpbnNPYmplY3Q6dHlwZV0pIHsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0
ZW1JbmRleCwgdHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQo
KSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAg
ICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7
CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRJbWFnZShidWZmZXIucmVsZWFz
ZU5vbk51bGwoKSwgdHlwZSwgaXRlbUluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkgPyBS
ZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9T
Lm1tCmluZGV4IDE2N2NlZjAyZDc4ZDc5NGRlYWE4ZTVkZGFmNGRkNjZjM2QyY2NhNDUuLjE2YjNk
NWQ0NDE1ZDI1ODUxNWY2NjBhODZhYzZjZWZiZGNkYjY0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtMzM4LDcg
KzMzOCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0ZWJv
YXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYpCitpbnQ2
NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiwgY29uc3QgU3RyaW5nJikKIHsKICAgICByZXR1cm4gMDsKIH0KQEAgLTQ2Myw3ICs0
NjMsNyBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdl
YkNvbnRlbnQmIGNvbnRlbnQpCiAKICAgICBBU1NFUlQoY29udGVudC5jbGllbnRUeXBlcy5zaXpl
KCkgPT0gY29udGVudC5jbGllbnREYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAs
IHNpemUgPSBjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAg
ICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFb
aV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07
CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGll
bnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBl
OmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOwogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluV2ViQXJj
aGl2ZUZvcm1hdCkgewogICAgICAgICBhdXRvIHdlYkFyY2hpdmVEYXRhID0gY29udGVudC5kYXRh
SW5XZWJBcmNoaXZlRm9ybWF0LT5jcmVhdGVOU0RhdGEoKTsKQEAgLTQ3OSw3ICs0NzksNyBAQCBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoY29udGVu
dC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0KSB7Ci0gICAgICAgIGlmIChOU0F0dHJpYnV0
ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZl
ZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcu
Y2xhc3NdIGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIGlmIChOU0F0dHJpYnV0
ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZl
ZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcu
Y2xhc3NdIGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCiAgICAg
ICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6
YXR0cmlidXRlZFN0cmluZ107CiAgICAgfQogCkBAIC01MDEsNyArNTAxLDcgQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0
b21EYXRhOwogICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKGNvbnRlbnQuY29udGVudE9yaWdpbik7
Ci0gICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0
ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CisgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6
OmNvY29hVHlwZSgpKV07CiAKICAgICByZWdpc3Rlckl0ZW1Ub1Bhc3RlYm9hcmQocmVwcmVzZW50
YXRpb25zVG9SZWdpc3Rlci5nZXQoKSwgbV9wYXN0ZWJvYXJkLmdldCgpKTsKIH0KQEAgLTUxNCwx
NCArNTE0LDE0IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJv
YXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKICAgICBhdXRvJiBkYXRhID0gcGFzdGVib2FyZElt
YWdlLmNsaWVudERhdGE7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSB0eXBlcy5zaXplKCk7IGkgPCBzaXplOyAr
K2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CisgICAgICAgIFtyZXByZXNl
bnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CiAKICAgICBpZiAocGFzdGVib2Fy
ZEltYWdlLnJlc291cmNlRGF0YSAmJiAhcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUu
aXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gdXRpT3JNSU1FVHlwZSA9IHBhc3RlYm9hcmRJbWFn
ZS5yZXNvdXJjZU1JTUVUeXBlOwogICAgICAgICBpZiAoIWlzRGVjbGFyZWRVVEkodXRpT3JNSU1F
VHlwZSkpCiAgICAgICAgICAgICB1dGlPck1JTUVUeXBlID0gVVRJRnJvbU1JTUVUeXBlKHV0aU9y
TUlNRVR5cGUpOwogCi0gICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJl
c291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFz
dGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCk7CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6aW1hZ2VEYXRh
LmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopdXRpT3JNSU1FVHlwZV07CiAgICAgICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblNpemU6cGFzdGVi
b2FyZEltYWdlLmltYWdlU2l6ZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IHNldFN1Z2dlc3RlZE5hbWU6cGFzdGVib2FyZEltYWdlLnN1Z2dlc3RlZE5hbWVdOwpAQCAtNjM1
LDcgKzYzNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9u
SW5mb0xpc3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6V2ViUHJlZmVycmVkUHJl
c2VudGF0aW9uU3R5bGVJbmxpbmVdOwogCiAgICAgaWYgKGRhdGEuaGFzU2FtZU9yaWdpbkN1c3Rv
bURhdGEoKSB8fCAhZGF0YS5vcmlnaW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGF1dG8g
c2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0
ZU5TRGF0YSgpKSB7CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBk
YXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KSkgewogICAgICAgICAgICAgLy8gV2Ugc3Rhc2ggdGhlIGxpc3Qgb2Ygc3VwcGxpZWQgcGFzdGVi
b2FyZCB0eXBlcyBpbiB0ZWFtRGF0YSBoZXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggZHJhZyBh
bmQgZHJvcC4KICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBjb250ZW50cyBvZiBpdGVtIHByb3Zp
ZGVycyBjYW5ub3QgYmUgbG9hZGVkIHByaW9yIHRvIGRyb3AsIGJ1dCB0aGUgcGFzdGVib2FyZCB0
eXBlcyBhcmUKICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGN1c3RvbSBkYXRh
IGJsb2IgYW5kIHdlIG5lZWQgdG8gdmVuZCB0aGVtIHRvIHRoZSBwYWdlIHdoZW4gZmlyaW5nIGBk
cmFnb3ZlcmAKQEAgLTY3Miw4ICs2NzIsOCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gYnVm
ZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKLSAgICAgICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBz
dGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKKyAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKICAg
ICB9KTsKIAogICAgIHJldHVybiByZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQppbmRleCA1
NDQ2NTNjNDQwM2QyNjA0MGE1NWQyM2U5MzY5MWJmZWRjYzkyYjQyLi43YTRhMmIxNjViMmZhN2Qy
MGQ1YjZlNGMyZDY1ZmU2M2VmMGIwMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQpAQCAtODIsNyArODIsNyBAQCBAZW5kCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRl
ciYgcHJvdmlkZXIpCi0gICAgOiBtX3ByZXZpZXdEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSB9CisgICAgOiBtX3ByZXZpZXdEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWls
ZGVyPigpIH0KICAgICAsIG1fb3JpZ2luYWxSZXNwb25zZSB7IHJlc3BvbnNlIH0KICAgICAsIG1f
cHJvdmlkZXIgeyBwcm92aWRlciB9CiAgICAgLCBtX3BsYXRmb3JtRGVsZWdhdGUgeyBhZG9wdE5T
KFtbV2ViUHJldmlld0NvbnZlcnRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aERlbGVnYXRlOip0
aGlzXSkgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpp
bmRleCA2NzdmOGNhZGFiNTkxMjNlMWI2MmQxYmFjMmQxOTA4YmY2NzZhMmY5Li4wZDI1NDk4Yjg2
YmVmMTg1ZDM3NjlkNWE1YmMwYmMyZjczMWM3MGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgUGFzdGVi
b2FyZDo6d3JpdGUoY29uc3QgQ29sb3ImIGNvbG9yKQogCiBzdGF0aWMgTlNGaWxlV3JhcHBlciog
ZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0g
ICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1
bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFw
cGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJl
c291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAg
ICBbd3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1F
VHlwZShwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCwgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlN
RVR5cGUpXTsKICAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQpAQCAtMzYyLDcg
KzM2Miw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0
LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAgICAgCiAgICAgaWYgKHR5cGVzLmNv
bnRhaW5zKFN0cmluZyhsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIGlm
IChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGRFBh
c3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNv
bnRleHQoKSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9w
dE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CisgICAgICAgICAgICBp
ZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBh
bGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAgIHRleHQu
dGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAgdGV4dC5p
c1VSTCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KaW5kZXggMzUzZDAwNmI5MGNiY2U2
MDllNmRmZDM3YzI4MDgxMzFmMjE0YjhkYS4uODhkMDQwMjU4NDM3MDJlNGFhNGY1YTlhNTU2Yjg4
MWM2ZTQwYzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRXcml0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRXcml0ZXIubW0KQEAgLTEyOCwxMSArMTI4LDExIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldFN0cmluZzp3ZWJDb250
ZW50LT5kYXRhSW5TdHJpbmdGb3JtYXQgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nXTsK
IAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd2ViQ29udGVudC0+Y2xpZW50VHlw
ZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJD
b250ZW50LT5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJ
VW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOworICAg
ICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtp
XS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVu
bGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKIAogICAg
ICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAgICAgICBjdXN0b21EYXRh
LnNldE9yaWdpbih3ZWJDb250ZW50LT5jb250ZW50T3JpZ2luKTsKLSAgICAgICAgW3Bhc3RlYm9h
cmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKKyAgICAgICAgW3Bhc3RlYm9hcmRJ
dGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEko
U3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKICAgICB9
CiAKICAgICByZXR1cm4gcGFzdGVib2FyZEl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCBkOWI3ZDI0ODAzOGMy
ZGI4YWFiMDkyY2I5MWZmYTU2ZjJjYjRjZTczLi5jM2I0ZDJkOTYyMTc0NzFjNzM1ZTI0ZmU3YTVm
OWQ5MjM3ZGY0NzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxh
dGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
bGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTI2Myw4ICsyNjMsOCBAQCBpbnQ2NF90IFBsYXRm
b3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAg
ICAgICAgIGlmIChwbGF0Zm9ybVR5cGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+Pihz
dHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0
ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgp
KQorICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZv
cm1EYXRhID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1
ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAg
IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9y
bVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5n
PihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8
U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CkBAIC0yNzQsNyArMjc0LDcgQEAgaW50NjRfdCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQog
ICAgIH0pOwogCiAgICAgaWYgKHNob3VsZFdyaXRlQ3VzdG9tRGF0YSkgewotICAgICAgICBpZiAo
YXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNy
ZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRh
dGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
KQogICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnNlcmlhbGl6ZWRDdXN0b21EYXRh
LmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKICAg
ICB9CiAKQEAgLTM0MSwxMiArMzQxLDEyIEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpz
ZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKQogICAgIHJldHVy
biBbbV9wYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpjcmVhdGVOU0FycmF5KHBhc3RlYm9hcmRUeXBl
cykuZ2V0KCkgb3duZXI6bmlsXTsKIH0KIAotaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNl
dEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpCitpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpCiB7CiAgICAgaWYgKCFjYW5Xcml0ZVBhc3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9h
cmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZv
clR5cGU6cGFzdGVib2FyZFR5cGVdOworICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVi
b2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkaWRX
cml0ZURhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBjaGFuZ2VDb3VudCgpOwpA
QCAtNTA0LDggKzUwNCw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkSXRlbT4gY3Jl
YXRlUGFzdGVib2FyZEl0ZW0oY29uc3QgUGFzdGVib2FyZEN1c3RvbURhCiAgICAgICAgIGlmICgh
cGxhdGZvcm1UeXBlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAg
ICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZm
ZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVm
ZmVyKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERhdGE6cGxhdGZv
cm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAg
ICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZS5oCmluZGV4IDY4MTNkNWRhN2RjYjBmYzI1OWYxYmQxZWQwYTU0YzFh
MWE5ZmQ5Y2YuLjc5NjU1NGY0Yzk3NjQ1MTQwMWUxYTEyMzc0Njg3MDQwYjI0YjFjYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgTWVkaWFTYW1wbGU7
CiBjbGFzcyBNZWRpYVN0cmVhbVByaXZhdGU7CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZTsKIGNsYXNzIFBsYXRmb3JtQXVkaW9EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0
aW9uczsKIApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgQXVkaW9WaWRlb1NlbGVjdGVkVHJhY2tzIHNlbGVjdFRyYWNrcyhNZWRpYVN0
cmVhbVByaXZhdGUmKTsKIAotICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBkb3VibGUpPjsKKyAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGRvdWJsZSk+OwogICAgIHZpcnR1YWwgdm9pZCBmZXRjaERhdGEoRmV0Y2hE
YXRhQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgp
IGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCmluZGV4IGMy
NWRmOTE1NzRhNjViYzQxYmRiNzA2NzhkYzQ3NzI0ODM2ZGQxNDUuLjQ5OGQ0ZWUxMzQwYzRiOTQw
MDFiNjBjMzQ0NzliN2Y3MmQ1YzhlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9j
ay5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6Omdl
bmVyYXRlTW9ja0NvdW50ZXJTdHJpbmcoKQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9j
azo6ZmV0Y2hEYXRhKEZldGNoRGF0YUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9idWZm
ZXJMb2NrIH07CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZSB7IG1fYnVmZmVyLmNoYXJh
Y3RlcnM4KCksIG1fYnVmZmVyLmxlbmd0aCgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDIxMWY3NWVlNzNhZjY5MTllN2Y0
Yzk5NThlMGNkMzQ4MjUzMmQwOWYuLjljMmM3OTdiODE5NTEyZDhmZDU3OTAxNWRjM2I2ZTQwNWUz
YmM2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXJDb2NvYS5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFZpZGVv
U2FtcGxlQnVmZmVyKE1lZGlhU2FtcGxlJik7CiAgICAgdm9pZCBhcHBlbmRBdWRpb1NhbXBsZUJ1
ZmZlcihjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24mLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCk7CiAgICAgdm9pZCBzdG9wUmVjb3Jk
aW5nKCk7Ci0gICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiYmKTsKKyAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBkb3VibGUp
PiYmKTsKIAogICAgIHZvaWQgcGF1c2UoKTsKICAgICB2b2lkIHJlc3VtZSgpOwpAQCAtMTA1LDcg
KzEwNSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZpbmlzaGVkRmx1c2hpbmdTYW1wbGVzKCk7
CiAgICAgdm9pZCBjb21wbGV0ZUZldGNoRGF0YSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHRha2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHRha2VEYXRh
KCk7CiAKICAgICBib29sIG1faGFzQXVkaW8geyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWaWRl
byB7IGZhbHNlIH07CkBAIC0xMTcsOCArMTE3LDggQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8
QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7CiAKICAgICBMb2NrIG1fZGF0YUxvY2s7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7
Ci0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3Vi
bGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CisgICAgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4g
bV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsKIAogICAgIFJldGFpblB0cjxDTUZvcm1hdERl
c2NyaXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb247CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gbV9hdWRpb0NvbXByZXNzb3I7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KaW5k
ZXggOGMxZjdjMGU1MzEzYjZiODU2Y2QzY2RmNWU4Mzg0ZjM2YjdiNTNmNS4uODQ4NDEwMGVhYzVl
MTE1ZTliMGNmMDEyMGJhYmY3OGZiMWExMjc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtMTM3LDEwICsxMzcsOCBAQCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkK
ICAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKICAgICB9CiAKLSAgICAvLyBBdCB0aGlzIHBvaW50
ZXIsIHdlIHNob3VsZCBubyBsb25nZXIgYmUgd3JpdGluZyBhbnkgZGF0YSwgc28gaXQgc2hvdWxk
IGJlIHNhZmUgdG8gY2xvc2UgYW5kIG51bGxpZnkgbV9kYXRhIHdpdGhvdXQgbG9ja2luZy4KICAg
ICBpZiAobV93cml0ZXJEZWxlZ2F0ZSkKICAgICAgICAgW21fd3JpdGVyRGVsZWdhdGUgY2xvc2Vd
OwotICAgIG1fZGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG51bGxwdHIsIDApOwpAQCAtNDk1LDcgKzQ5Myw3IEBAIHZvaWQgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0b3BSZWNvcmRpbmcoKQogICAgIH0pOwogfQogCi12b2lk
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwogCkBAIC01MzcsMTggKzUzNSwxMyBAQCB2b2lk
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiB2b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAg
aWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0
YSwgc2l6ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkKK1JlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEoKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgYXV0byBk
YXRhID0gV1RGTW92ZShtX2RhdGEpOwotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBtX2Rh
dGEudGFrZSgpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwYXVzZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgK
aW5kZXggYTliMjlkNTllOWFhM2I0NjU1NDE1YmQ4YmVmMDk4NGM1NDRiNzNmMC4uY2RlZTYwMzUy
M2NkNjY5NDVmNDI4ZjY5NDc4OTYwZjZmZDc0Yzc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaApAQCAtMzMsNyArMzMsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBEYXRhVVJMRGVjb2RlciB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCBmYWZk
ZmU4N2M4MzdlNjE1N2QyZjEzZTlhN2NhMDA5NjlkNTBiMWM3Li40YmViY2I1MDk4ZDE1YzI5NjZl
ZDhjN2VlMTM2YWUzYTJhZTRhMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCkBAIC04NCw3ICs4NCw3IEBAIGNsYXNzIE5ldHdvcmtM
b2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1
ZTsKIGNsYXNzIFRpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IDZlNjViYjg5MThjNmVjMTJm
OGFlYTg2ZWJlNzA0ODg0ZTJlNzM2NmYuLmJhOGZkNGZmNGYxZTQxYzlhZDRmYTc0YTQyYmU0ZTJi
ZDExYWE4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zNiw5ICszNiw5IEBAIFJlc291cmNlSGFu
ZGxlQ2xpZW50OjpSZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogUmVzb3VyY2VI
YW5kbGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAotdm9pZCBS
ZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQor
dm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVE
YXRhKGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAppbmRleCBiNjMzN2Q1
NmNlOGNkOWJlZmY5ZGZiZTExMzY2MmJjNzc1NmI2NTM3Li5jNGYwNTQ4NWYyODcwYjExNmRhN2M3
NjBkM2MwZmNlOTZlYzJiNGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNz
IFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBlbnVtIENhY2hlU3RvcmFnZVBvbGljeSB7CiAg
ICAgU3RvcmFnZUFsbG93ZWQsCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgLypi
eXRlc1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8pIHsg
fQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgdWludDhfdCosIHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSB7IH0KLSAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhh
bmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5k
bGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3Ro
KTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJl
c3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDFmZjA2NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNkYWY2
OTZmMDI0MDYuLjAwOGUyMjZmZjkxOTAwNGI0NTE0OGEyNDcyNjExNjE1MDk4OTYyNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTQxLDggKzQxLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBEYXRhKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlKQotICAgICAgICA6
IGJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgICAgICAsIG9yaWdpbmFsUmVzcG9u
c2UocmVzcG9uc2UpCisgICAgICAgIDogb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKICAgICAg
ICAgLCByZXNvdXJjZSgmcmVzb3VyY2UpIHsgfQogCiAgICAgc3RydWN0IFRhc2tEYXRhIDogcHVi
bGljIENhbk1ha2VXZWFrUHRyPFRhc2tEYXRhPiB7CkBAIC01NSw5ICs1NCw5IEBAIHN0cnVjdCBS
YW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICAgICAgc2l6ZV90IG5leHRCeXRlVG9H
aXZlQnVmZmVySW5kZXggeyAwIH07CiAgICAgICAgIGVudW0gY2xhc3MgUmVzcG9uc2VTdGF0ZSA6
IHVpbnQ4X3QgeyBOb3RTeW50aGVzaXplZFlldCwgV2FpdGluZ0ZvclNlc3Npb24sIFNlc3Npb25D
YWxsZWRDb21wbGV0aW9uSGFuZGxlciB9IHJlc3BvbnNlU3RhdGUgeyBSZXNwb25zZVN0YXRlOjpO
b3RTeW50aGVzaXplZFlldCB9OwogICAgIH07Ci0gICAgCisKICAgICBIYXNoTWFwPFJldGFpblB0
cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+LCBzdGQ6OnVuaXF1ZV9wdHI8VGFza0RhdGE+
PiB0YXNrRGF0YTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWZmZXI7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBvcmlnaW5hbFJlc3BvbnNl
OwogICAgIGVudW0gY2xhc3MgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIDogYm9vbCB7IE5v
LCBZZXMgfSBzdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgeyBTdWNjZXNzZnVsbHlGaW5pc2hl
ZExvYWRpbmc6Ok5vIH07CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVzb3Vy
Y2U7CkBAIC0xMDYsMjIgKzEwNSwyMiBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OnJl
bW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQogdm9pZCBSYW5nZVJl
c3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVk
KFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVzdFJh
bmdlJiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0aCwg
Y29uc3QgRGF0YSYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1
dG8gYnVmZmVyID0gZGF0YS5idWZmZXI7Ci0gICAgYXV0byBidWZmZXJTaXplID0gYnVmZmVyLT5z
aXplKCk7CiAKICAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBqdXN0IG1ha2Ug
YSByYW5nZSB3aXRoIGEgKiBhZnRlciB0aGUgLyBidXQgQVZGb3VuZGF0aW9uIGRvZXNuJ3QgYWNj
ZXB0IHN1Y2ggcmFuZ2VzLgogICAgIC8vIEluc3RlYWQsIHdlIGp1c3Qgd2FpdCB1bnRpbCB0aGUg
bG9hZCBoYXMgY29tcGxldGVkLCBhdCB3aGljaCB0aW1lIHdlIHdpbGwga25vdyB0aGUgY29udGVu
dCBsZW5ndGggZnJvbSB0aGUgYnVmZmVyIGxlbmd0aC4KICAgICBpZiAoIWV4cGVjdGVkQ29udGVu
dExlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBidWZmZXJTaXplID0gZGF0YS5i
dWZmZXIuc2l6ZSgpOwogICAgIGlmIChidWZmZXJTaXplIDwgcmFuZ2UuYmVnaW4pCiAgICAgICAg
IHJldHVybjsKLSAgICAKKworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIuZ2V0KCk7CiAg
ICAgYXV0byogdGFza0RhdGEgPSBkYXRhLnRhc2tEYXRhLmdldCh0YXNrKTsKICAgICBpZiAoIXRh
c2tEYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sg
PSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAq
dGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKKworICAgIGF1dG8g
Z2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgYnVmZmVy
U2l6ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQ
dHIgeyAqdGhpcyB9XSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAg
IGlmIChbdGFzayBzdGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlUnVubmluZykKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTEzMCw3ICsxMjksNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5l
cmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5T
VQogICAgICAgICBhdXRvJiByYW5nZSA9IHRhc2tEYXRhLT5yYW5nZTsKICAgICAgICAgYXV0byYg
Ynl0ZUluZGV4ID0gdGFza0RhdGEtPm5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXg7CiAgICAgICAg
IHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlci0+c2l6
ZSgpKQorICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXJTaXplKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgYXV0byBidWZmZXJWaWV3ID0gYnVmZmVyLT5nZXRT
b21lRGF0YShieXRlSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFidWZmZXJWaWV3LnNpemUoKSB8
fCBieXRlSW5kZXggPiByYW5nZS5lbmQpCkBAIC0xNzUsNyArMTc0LDcgQEAgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZy
b21EYXRhKGNvbnMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChkYXRh
LnN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5pc2hl
ZExvYWRpbmc6OlllcykKLSAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLT5zaXplKCk7CisgICAg
ICAgIHJldHVybiBkYXRhLmJ1ZmZlci5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogUmVzb3VyY2VS
ZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIHNob3VsZCByZXR1cm4gc3RkOjpv
cHRpb25hbDxzaXplX3Q+IGluc3RlYWQgb2YgdXMgZG9pbmcgdGhpcyBjaGVjayBoZXJlLgogICAg
IGF1dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZGF0YS5vcmlnaW5hbFJlc3BvbnNlLmV4cGVj
dGVkQ29udGVudExlbmd0aCgpOwpAQCAtMjQ0LDcgKzI0Myw3IEBAIHByaXZhdGU6CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgZmluYWwKKyAgICB2b2lk
IGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFsCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgICAgICBpZiAoIW1fZ2VuZXJhdG9yKQpAQCAtMjUyLDcgKzI1MSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJs
U3RyaW5nKTsKICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBkYXRhLT5idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLT5i
dWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5naXZl
UmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJM
U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLmgKaW5kZXggNDA0ODg1YWU2Mzc2ZmNlNjgwNDBkMmEwNWMwMGJlYzQ3ZmUx
NmFhOC4uY2U0YzI1NDVjZGUwZjJmNDZhYzMzOGY5NmM0OTA4OGViNDVkMDkyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNz
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgUGxhdGZvcm1NZWRpYVJlc291
cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBjbGFzcyBX
ZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ7CiBlbnVtIGNsYXNzIFNob3VsZENvbnRp
bnVlUG9saWN5Q2hlY2sgOiBib29sOwpAQCAtMTU4LDcgKzE1OCw3IEBAIFdFQkNPUkVfRVhQT1JU
IEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsKIC0gKHZvaWQpcmVz
b3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ug
c2VudEJ5dGVzOih1bnNpZ25lZCBsb25nIGxvbmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2Vu
dDoodW5zaWduZWQgbG9uZyBsb25nKXRvdGFsQnl0ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVzb3Vy
Y2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVj
ZWl2ZWRSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2Ug
Y29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxk
Q29udGludWVQb2xpY3lDaGVjayk+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtIChCT09MKXJlc291
cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNo
b3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3Bv
bnNlOwotLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJl
c291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYpZGF0YTsKKy0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJilkYXRhOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSByZXF1ZXN0OihXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0aW9uSGFuZGxl
cjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNv
dXJjZSopcmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxl
IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhF
cnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNl
c3Npb24ubW0KaW5kZXggZTA0MDEwYTk4MTFiNGM5YWUxNDk0OTk4NzAxY2ExNTQ4OWY1NzE2Yy4u
OGM4OWQ5Mzg2NTc5MzNhMWRhMjkwMzE5OTE1ODRjNGRiMmZhYTlhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJM
U2Vzc2lvbi5tbQpAQCAtNjA4LDcgKzYwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVz
dCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2
b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywg
dW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWls
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC02NTIs
NyArNjUyLDcgQEAgYm9vbCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnNob3Vs
ZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmMKICAgICByZXR1cm4gW21fdGFzayBy
ZXNvdXJjZTomcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTpyZXNwb25zZV07CiB9CiAKLXZv
aWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2
b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXNrTG9jayB9OwogICAgIGlmICgh
bV90YXNrKQpAQCAtOTE1LDExICs5MTUsMTEgQEAgLSAoQk9PTClyZXNvdXJjZTooUGxhdGZvcm1N
ZWRpYVJlc291cmNlKilyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOihjb25zdCBSZXMKICAg
ICByZXR1cm4gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50
UmFuZ2UpLmlzRW1wdHkoKTsKIH0KIAotLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJl
c291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYpZGF0YQorLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJj
ZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKWRh
dGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2Ug
PT0gX3Jlc291cmNlKTsKICAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltz
dHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBkYXRhID0gV1RGTW92ZShkYXRhKV0gewot
ICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRv
IG5zRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAg
ICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IGRhdGEtPnNpemUoKTsK
ICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8
TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdh
dGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKaW5kZXgg
YzM2ZTFmODg3NjQzMDQ2MGNlNzUwYTNiOGM2NThjNzM0ZWNiMTUwOC4uMzQ5NDQ1OTI1NGFjOTNm
YzE5Y2IxMjE1MGE2MWJjMmJjZWQwMmQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBA
QCB2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYg
cmVxdWVzdCwgQ3VybFJlc3BvbnNlJiYgcgogfQogCiAKLXZvaWQgQ3VybERvd25sb2FkOjpjdXJs
RGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQordm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0Jiwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsRG93bmxvYWQuaAppbmRleCBhM2FhMGNmNWZjZDI5NTViYjdiMTZiMTFhMWE4MWNh
NzRhZTYxYzhkLi5jZGU0NDQ1Nzc1Zjc0NDIzMzA1MzBiNjViMTM1N2JhNmJmZDliYjgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9h
ZC5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgUmVmPEN1cmxSZXF1ZXN0PiBjcmVh
dGVDdXJsUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0
YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBv
dmVycmlkZSB7IH0KICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3Qm
LCBDdXJsUmVzcG9uc2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZl
cihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQg
Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3Qm
LCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdp
dGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggYmJkYTNmYmRhNzU4M2Q5
OTE5MzFkZmUxNjlmN2IzYTkxMzNlNmRhMi4uMDkwZDAzOWJhNDVkZTEwMjhlZGY3Njg0YzZkN2Qy
ZjI5NmUzYTM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMTE5LDEyICsxMTksMTIg
QEAgQ3VybE11bHRpcGFydEhhbmRsZTo6Q3VybE11bHRpcGFydEhhbmRsZShDdXJsTXVsdGlwYXJ0
SGFuZGxlQ2xpZW50JiBjbGllbnQsIGNvbnMKIAogfQogCi12b2lkIEN1cmxNdWx0aXBhcnRIYW5k
bGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBDdXJs
TXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVuZCkKICAgICAgICAg
cmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQgZG93biBzbyBpZ25vcmUgZXZlcnl0aGlu
Zy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsK
KyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVm
ZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vzc0NvbnRlbnQoKSkgeyB9CiB9CkBAIC0x
MzcsNyArMTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSgpCiAg
ICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkgewogICAgICAgICAvLyBJdCBzZWVtcyB3ZSBh
cmUgc3RpbGwgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3NpbmcuCiAgICAgICAgIC8vIFB1
c2ggb3V0IHRoZSByZW1haW5pbmcgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURh
dGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbV9i
dWZmZXIuc2l6ZSgpKSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRp
cGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOwogICAgICAgICBt
X3N0YXRlID0gU3RhdGU6OkVuZDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCmluZGV4IDVj
MDhiY2M1ZWIzZTRiYmNjMDI5YjQ3Njc4NjhmNDNlMmY5NWMzNDEuLjlhMWExYmJkMTkzOGExNGY2
OWZjY2VlM2YwZjg5Yjk3YTRhMjE4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaApAQCAtMzQsNyAr
MzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVD
bGllbnQ7CiBjbGFzcyBDdXJsUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAg
IEN1cmxNdWx0aXBhcnRIYW5kbGUoQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudCYsIGNvbnN0IFN0
cmluZyYpOwogICAgIH5DdXJsTXVsdGlwYXJ0SGFuZGxlKCkgeyB9CiAKLSAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkQ29tcGxldGUoKTsK
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCmluZGV4IGZkMTNmZDM4
MTMxNDNjYjI2NTliOGZkMWRiMjQ0NDc2NWU5OGE1ODAuLmM4MTM4ODZhOGQ1YzVmYTZjMTJkMTQx
MzMxOTEwMWFmMjUwMmEyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaApAQCAt
MjgsMTIgKzI4LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxSZXNwb25z
ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxT
aGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9t
TXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAKIHByb3RlY3Rl
ZDoKICAgICB+Q3VybE11bHRpcGFydEhhbmRsZUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggZDM1
YjBlODM5MTk1MWQzODYzNGU5OTA5M2I2ODY1NjI0ZDk5Nzk1MS4uZDgyZGQzYzEwYWM2NDcxMzU5
OTFmZDdhZTY2OTdlOWQ4ZTMxM2U4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgc2l6
ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmIGhlYWRlcikKIAogLy8g
Y2FsbGVkIHdpdGggZGF0YSBhZnRlciBhbGwgaGVhZGVycyBoYXZlIGJlZW4gcHJvY2Vzc2VkIHZp
YSBoZWFkZXJDYWxsYmFjawogCi1zaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZl
RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKGlz
Q29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00NDQsNyArNDQ0
LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZUhlYWRlckZyb21NdWx0aXBhcnQoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGhlYWRlcnMpCiAgICAgaW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNl
KHJlc3BvbnNlLCBBY3Rpb246Ok5vbmUpOwogfQogCi12b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1
cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChpc0NvbXBsZXRlZE9yQ2FuY2VsbGVkKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTc3Nyw3ICs3NzcsNyBAQCBjb25zdCBTdHJpbmcmIEN1cmxS
ZXF1ZXN0OjpnZXREb3dubG9hZGVkRmlsZVBhdGgoKQogICAgIHJldHVybiBtX2Rvd25sb2FkRmls
ZVBhdGg7CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZF
bmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBDdXJsUmVxdWVzdDo6d3Jp
dGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZG93bmxvYWRN
dXRleCB9OwpAQCAtNzkwLDcgKzc5MCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRv
RG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIH0K
IAogICAgIGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlKQotICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25s
b2FkRmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIEZp
bGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIubWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVxdWVz
dDo6Y2xvc2VEb3dubG9hZEZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAppbmRleCA2YmQ4YTZiZmJhMzc1MmNlZGRkYmM1MDA5
ZWFlODNjNGYwZWVkNjQxLi4zYzdjZGQ4ODNlYjYyYmZlOTJjZjA0NDVlZDI5YmQyNmVjZTNlOTIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3QuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDdXJs
UmVxdWVzdENsaWVudDsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNl
RXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogY2xhc3MgU3luY2hyb25vdXNMb2FkZXJNZXNzYWdlUXVldWU7CiAKIGNsYXNzIEN1cmxSZXF1
ZXN0IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEN1cmxSZXF1ZXN0PiwgcHVibGljIEN1
cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50LCBwdWJsaWMgQ3VybE11bHRpcGFydEhhbmRsZUNsaWVu
dCB7CkBAIC0xMjIsOSArMTIyLDkgQEAgcHJpdmF0ZToKICAgICBDVVJMKiBzZXR1cFRyYW5zZmVy
KCkgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IHdpbGxTZW5kRGF0YShjaGFyKiwgc2l6ZV90LCBzaXpl
X3QpOwogICAgIHNpemVfdCBkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmKTsKLSAgICBzaXplX3Qg
ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc2l6ZV90IGRpZFJlY2Vp
dmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB2b2lkIGRpZFJlY2Vp
dmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ29tcGxldGVUcmFu
c2ZlcihDVVJMY29kZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWxUcmFuc2ZlcigpIG92
ZXJyaWRlOwogICAgIHZvaWQgZmluYWxpemVUcmFuc2ZlcigpOwpAQCAtMTUzLDcgKzE1Myw3IEBA
IHByaXZhdGU6CiAgICAgTmV0d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtMb2FkTWV0cmljcygpOwog
CiAgICAgLy8gRG93bmxvYWQKLSAgICB2b2lkIHdyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFi
bGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgd3JpdGVEYXRhVG9Eb3dubG9hZEZp
bGVJZkVuYWJsZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgY2xv
c2VEb3dubG9hZEZpbGUoKTsKICAgICB2b2lkIGNsZWFudXBEb3dubG9hZEZpbGUoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3RDbGllbnQuaAppbmRleCAwOGM4NmM3ZDQ2ODRiYTZmNzhkNjE2YjY4ZDA2OTA0YzM3YTk2Njc3
Li4zNDc5ODMyZjU3NmQ0MTI4YWZhNTFjODE0MjRjY2ZkNzQxZGY2YWU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGll
bnQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBDdXJsUmVxdWVzdDsKIGNsYXNzIEN1cmxSZXNw
b25zZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBDdXJsUmVxdWVzdENsaWVudCB7CiBwdWJsaWM6CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25l
ZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVT
ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJl
cXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkUmVj
ZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkQ29tcGxl
dGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwg
Q2VydGlmaWNhdGVJbmZvJiYpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmNwcAppbmRleCA4MThkNWE5NWUzZTEyNGRjM2E3MmY3NDNlNWNkNDUzZDcxN2UwMTBmLi4z
MDVkNGU1YzlmYzI3MDc3NTc4N2IwZjlhOTE5NzljMDg4ODlhOGE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdh
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0MiwxNSArMTQyLDE2IEBAIHZvaWQgQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3Qm
IHJlcXVlc3QsIEN1CiAgICAgfSk7CiB9CiAKLXZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdh
dGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCit2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2
ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKGNhbmNlbGxlZE9y
Q2xpZW50bGVzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpz
aW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKLSAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdU
Rk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZl
ciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5n
bGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFu
ZGxlLCBXVEZNb3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CiB9CiAKIHZv
aWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVz
dCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5oCmluZGV4IDZkNTU4NjQ0NTJmZDQ2ZWU3ODAwZTkzMTIzYjEyOGJkYzY0Y2U0ODcu
LmRhZjBhNTlhNGU1ODZkNzExNGFiYjRlNWVmOWM1NGY2YThiZWZjNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVz
U2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAg
dm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYp
IGZpbmFsOwotICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8
U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1
cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZv
aWQgY3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYpIGZp
bmFsOwogICAgIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3QmLCBSZXNvdXJj
ZUVycm9yJiYsIENlcnRpZmljYXRlSW5mbyYmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ckNsaWVudC5oCmluZGV4IGJjNGRhYWZiZjIxYTE1YzBlNmRkMWFjZDQ2MjJhZmE1NmI3YjhkNWQu
LjFmNGExOTMxMzMxMmM1ZGQ2YTQ4YWQ1MzM5ZGZkMmMzYjVkZWMyNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTMxLDEyICszMSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxM
ZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TGVnYWN5
UHJldmlld0xvYWRlckNsaWVudCgpID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFp
bCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9z
aXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgv
U2hhcmVkQnVmZmVyUE9TSVguY3BwCmluZGV4IDBmYjQ1MDA3MmZhMTA0MjJmNmE5ZmU0MzJjMzgx
ZDNkMTk2MTNlNjAuLmQ2MzIyMjU2NGVmMDc0Y2RiY2Q3ZWUyMTNlYTk5MTU3NDA3ZTM1NTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lY
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJ
WC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtNjgsNyArNjgsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgIGlmICh0
b3RhbEJ5dGVzUmVhZCAhPSBieXRlc1RvUmVhZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICBy
ZXR1cm4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBjNTQ0NTM4NWE3N2FjMTJjMDllZjI0ODY2NDczZDYy
Y2I2Nzk0NTVhLi40NTM2ODFiZGFiMmU0YTA1YTIxZmM2OGE5NDM3MDBlMDZjOTk3YTFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0zNTYs
NyArMzU2LDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29u
c3QgU3RyaW5nJiB0eXBlKQogCiBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVDb3VudGVyIGZpbmFsIDog
UGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmlu
ZyYpIGZpbmFsIHsgKytjb3VudDsgfQotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbCB7ICsrY291bnQ7IH0K
KyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsIHsgKytjb3VudDsgfQogCiAgICAgdW5zaWdu
ZWQgY291bnQgeyAwIH07CiB9OwpAQCAtOTc0LDcgKzk3NCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNy
ZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYKICAgICByZXR1cm4gbWVtT2JqOwogfQogCi1zdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9i
YWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKK3N0YXRpYyBIR0xPQkFMIGNy
ZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkK
IHsKICAgICBIR0xPQkFMIG1lbU9iaiA9IEdsb2JhbEFsbG9jKEdQVFIsIGRhdGEtPnNpemUoKSk7
CiAgICAgaWYgKCFtZW1PYmopIApAQCAtOTg2LDE1ICs5ODYsMTUgQEAgc3RhdGljIEhHTE9CQUwg
Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgIENvcHlN
ZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYg
KGRhdGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEdsb2JhbFVubG9j
ayhtZW1PYmopOwogCiAgICAgcmV0dXJuIG1lbU9iajsKIH0KIAotc3RhdGljIEhHTE9CQUwgY3Jl
YXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBT
aGFyZWRCdWZmZXIqIGRhdGEpCitzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRl
bnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGRhdGEpCiB7CiAgICAgaWYgKGZpbGVOYW1lLmlzRW1wdHkoKSB8fCAhZGF0YSkKICAgICAg
ICAgcmV0dXJuIDA7CkBAIC0xMDM4LDggKzEwMzgsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVH
bG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJl
ZAogICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGlzIHRlbXAgZmlsZS4KICAgICAgICAg
RFdPUkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBGQUxTRTsK
LSAgICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRl
ZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCks
ICZ3cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgICAgIHRl
bXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKICAgICAgICAg
Q2xvc2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAgICAgICBpZiAoIXRlbXBXcml0ZVN1Y2Nl
ZWRlZCkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTA3MSw3ICsxMDcxLDcgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjp3cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IFVSTCYgdXJsKQogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgIWNhY2hlZEltYWdlLT5pbWFnZUZv
clJlbmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSkgfHwgIWNhY2hlZEltYWdlLT5pc0xvYWRlZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0gY2Fj
aGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgpOwor
ICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0gY2FjaGVkSW1hZ2UtPmlt
YWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgpOwogICAgIGlmICghaW1h
Z2VCdWZmZXIgfHwgIWltYWdlQnVmZmVyLT5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA0MTFlZGJiMzUxN2I4
NDhmYWMwNjNkMTllOGNkOTVlYzAwMzdjZDYxLi44NGZhMjljZTFmMzAwZmUyOTBiMDQxNDY0OGYw
ZjcyOTBhN2NiZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1G
YWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNw
cApAQCAtNjMsNyArNjMsNyBAQCBib29sIE1vY2tDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3Rl
bShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZShrZXlTeXN0ZW0sICJvcmcud2Via2l0Lm1vY2siKTsKIH0KIAotdm9pZCBNb2NrQ0RNRmFj
dG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+JiYga2V5cykKK3ZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nl
c3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4mJiBrZXlzKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXNzaW9ucy5hZGQo
aWQsIFdURk1vdmUoa2V5cykpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKQEAgLTc0
LDcgKzc0LDcgQEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChj
b25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEIKICAgICAgICAgdmFsdWUuYXBwZW5k
KFdURk1vdmUoa2V5KSk7CiB9CiAKLVZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gTW9ja0NETUZh
Y3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQorVmVj
dG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtl
eXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQogewogICAgIGF1dG8gaXQgPSBt
X3Nlc3Npb25zLmZpbmQoaWQpOwogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25zLmVuZCgpKQpAQCAt
ODMsNyArODMsNyBAQCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5Ojpy
ZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaQogICAgIHJldHVybiBXVEZNb3Zl
KGl0LT52YWx1ZSk7CiB9CiAKLWNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4qIE1vY2tD
RE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdAor
Y29uc3QgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4qIE1vY2tDRE1GYWN0b3J5
OjprZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdAogewogICAgIGF1
dG8gaXQgPSBtX3Nlc3Npb25zLmZpbmQoaWQpOwogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25zLmVu
ZCgpKQpAQCAtMjAyLDcgKzIwMiw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9ucygp
IGNvbnN0CiAgICAgcmV0dXJuIG1fZmFjdG9yeSAmJiBtX2ZhY3RvcnktPnN1cHBvcnRzU2Vzc2lv
bnMoKTsKIH0KIAotYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jv
b2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewogICAg
IGlmICghc3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMSwxMiArMjExLDEzIEBAIGJvb2wgTW9ja0NETTo6
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNo
YXJlZEJ1ZmZlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IE1v
Y2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29u
c3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3Bv
bnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewotICAg
IGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6
ZSgpKSkKKyAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250aWd1b3VzKCk7CisgICAg
aWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUo
KSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9u
c2VBcnJheSA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQo
JyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKGJ1ZmZlci0+
ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAoIXJlc3BvbnNl
QXJyYXkuY29udGFpbnMoU3RyaW5nKCJ2YWxpZC1yZXNwb25zZSJfcykpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTI2OSw5ICsyNzAsOSBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6aW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdAog
ICAgIGNhbGxiYWNrKGluaXRpYWxpemUoKSk7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlOjpz
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNj
ZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3Vj
Y2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0
cmluZ1ZpZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CisgICAg
U3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAKICAgICBjYWxsYmFjayhlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlkIikgPyBTdWNj
ZWVkZWQgOiBGYWlsZWQpOwogfQpAQCAtMjk3LDcgKzI5OCw3IEBAIE1vY2tDRE1JbnN0YW5jZVNl
c3Npb246Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxNb2NrQ0RNSW5zdGFuY2U+JiYg
aW5zdGFuCiB7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJh
Y2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFj
aykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBtX2luc3Rh
bmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewpAQCAtMzIzLDcg
KzMyNCw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TCiAgICAgY2FsbGJhY2soU2hhcmVkQnVm
ZmVyOjpjcmVhdGUobGljZW5zZS5kYXRhKCksIGxpY2Vuc2UubGVuZ3RoKCkpLCBzZXNzaW9uSUQs
IGZhbHNlLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgTW9ja0NETUluc3Rh
bmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5z
ZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQog
ewogICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFuY2Ut
PmZhY3RvcnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7CkBAIC0zMzEsNyArMzMy
LDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5kYXRh
KCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVz
cG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
cmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rvci5j
b250YWlucyhTdHJpbmcoImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAgICAgICAgY2FsbGJhY2so
ZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NW
YWx1ZTo6RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAppbmRl
eCBmNWNkYTUwNWNmMmEzM2MxMDVmMDI1Yzk3YzkzNTBhOTY4Njk4ZTFlLi5kOTZjMTU2ZWU0ZDI3
OTFiOGIwOTk4ZGFmOTQwZWM3NTM3ODA3YmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q0RNRmFjdG9yeS5oCkBAIC03Nyw5ICs3Nyw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzU2Vz
c2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSB7IHJldHVybiBtX3Nlc3Npb25zLmNvbnRhaW5z
KGlkKTsgfQogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSB7
IG1fc2Vzc2lvbnMucmVtb3ZlKGlkKTsgfQotICAgIHZvaWQgYWRkS2V5c1RvU2Vzc2lvbldpdGhJ
RChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYpOwotICAgIGNv
bnN0IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4qIGtleXNGb3JTZXNzaW9uV2l0aElEKGNvbnN0
IFN0cmluZyYgaWQpIGNvbnN0OwotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gcmVtb3Zl
S2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpOworICAgIHZvaWQgYWRkS2V5
c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiYmKTsKKyAgICBjb25zdCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+Pioga2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3Q7Cisg
ICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gcmVtb3ZlS2V5c0Zyb21TZXNz
aW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpOwogCiBwcml2YXRlOgogICAgIE1vY2tDRE1GYWN0
b3J5KCk7CkBAIC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhbkNyZWF0ZUlu
c3RhbmNlcyB7IHRydWUgfTsKICAgICBib29sIG1fc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMg
eyB0cnVlIH07CiAgICAgYm9vbCBtX3N1cHBvcnRzU2Vzc2lvbnMgeyB0cnVlIH07Ci0gICAgSGFz
aE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IG1fc2Vzc2lvbnM7CisgICAg
SGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBtX3Nl
c3Npb25zOwogfTsKIAogY2xhc3MgTW9ja0NETSA6IHB1YmxpYyBDRE1Qcml2YXRlIHsKQEAgLTEy
MSw4ICsxMjEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5h
bDsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7CiAg
ICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBm
aW5hbDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25z
dCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFs
OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7
CiAKICAgICBXZWFrUHRyPE1vY2tDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CkBAIC0xMzksNyArMTM5
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50
YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpNb2Nr
OyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1Bl
cnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2Vy
dmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0oKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVT
ZXNzaW9uKCkgZmluYWw7CkBAIC0xNTQsOCArMTU0LDggQEAgcHVibGljOgogICAgIE1vY2tDRE1J
bnN0YW5jZVNlc3Npb24oV2Vha1B0cjxNb2NrQ0RNSW5zdGFuY2U+JiYpOwogCiBwcml2YXRlOgot
ICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNr
JiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNl
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFs
OworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExp
Y2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNl
VXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlw
ZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25D
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmlu
ZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAppbmRleCBmYzEyN2I3
YjY3YmVhNzM0NDYzY2QyZDViMDc1NmI1OWJlYmE1OGFlLi4wNTlmM2EzODZiNmNmNWZhNzliM2Mx
ODk3MDE1MzEzZjdjZGI0ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6
OmZpbmlzaGVkQWRkaW5nRGF0YSgpCiAgICAgbWF5YmVEZXRlcm1pbmVTdGF0dXMoRGVjaXNpb25Q
b2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBN
b2NrQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKK1JlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBNb2NrQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QK
IHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5kYXRhKCksIG1fcmVwbGFjZW1lbnREYXRhLnNpemUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKaW5kZXggNDEx
YTMwMDk0N2I1MzllMjZhYTZjNjRhMDA5MzI5MmU5ZmZiZTZiOS4uNjM1YWM4NGJlNzkzODQ3YWE1
NzIxM2QwMWZmYzFlNzRmNzZiNzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0Nv
bnRlbnRGaWx0ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25z
ZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGFk
ZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBy
ZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2Nr
SGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Nj
cmlwdEJ1ZmZlci5jcHAKaW5kZXggNmQ0OGJkMDJkMWM5MWY3ZWVkODY0YTE2Y2Q3NTZiYjA3N2Q2
NTUyYS4uNWY4NTQ1ZWJhNWIwZTdiOGJiYWJhNWM2OTNjMmE0MzQxODhiMmJhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0
cmluZykKIHsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1f
YnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIFNjcmlwdEJ1
ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKQEAgLTQ2LDE0ICs0NiwxMyBAQCBTY3JpcHRCdWZm
ZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCiAgICAgcmV0dXJuIFNjcmlwdEJ1ZmZlciB7IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsKIH0KIAotCiBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmlu
ZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIG1fYnVmZmVyLT5mb3JFYWNoU2Vn
bWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgIG1fYnVmZmVyLmdldCgpLT5mb3JFYWNoU2Vn
bWVudChbJl0oYXV0byYgc2VnbWVudCkgewogICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6
OmZyb21VVEY4KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSkpOwogICAgIH0pOwogICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC02MSwxNSArNjAsMTMgQEAgU3RyaW5nIFNj
cmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogCiBib29sIFNjcmlwdEJ1ZmZlcjo6Y29udGFp
bnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVmZmVy
ICYmIG1fYnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXItPmJlZ2luKCktPnNlZ21l
bnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKKyAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9i
dWZmZXIuZ2V0KCktPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci5nZXQoKS0+YmVnaW4oKS0+
c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOwogfQogCiB2b2lkIFNjcmlwdEJ1ZmZl
cjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIGlmICghbV9idWZmZXIpCi0g
ICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvIHV0Zjgg
PSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyLT5hcHBlbmQodXRmOC5kYXRhKCksIHV0Zjgu
bGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgo
KSk7CiB9CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImIGEsIGNvbnN0IFNj
cmlwdEJ1ZmZlciYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0
QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCmluZGV4IGIz
OWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3OTZiNzFhMDQzMTM0YzY2NDYuLmZkMmMxYWUyZjYzYjYwZDc0
YzMwZDI0MmE5ODlhMGJmZDkxZGU0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2NyaXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZm
ZXIuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBTY3JpcHRCdWZmZXIgewogcHVibGljOgogICAg
IFNjcmlwdEJ1ZmZlcigpID0gZGVmYXVsdDsKIAotICAgIFNjcmlwdEJ1ZmZlcihSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBTY3JpcHRCdWZmZXIoUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVy
KSkKICAgICB7CiAgICAgfQpAQCAtNDgsMTcgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJp
bmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KIAotICAg
IFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIo
bV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci0+Y29weSgpKSA6IG51bGxw
dHIpOyB9CisgICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNj
cmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihtX2J1
ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuICFtX2J1ZmZlciB8fCAhbV9idWZmZXItPnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzRW1wdHkoKTsgfQogCiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7CiAgICAg
dm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4K
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTgg
ZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVy
JiwgY29uc3QgU2NyaXB0QnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggNzc0MTZlYzA3ZDdiNjhiMTI4ZTI5NjFlZGM1
ZDY0MGQwNGQ0YmQ0NS4uNDA2NmZiMzUyZWI1YjA4N2Q1ZDhkNDdkODAyZmQyYzBhNmE4MGZmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNw
cApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXb3JrZXJGb250TG9hZFJl
cXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVzdChVUkwmJiB1cmwsIExvYWRlZEZyb21PcGFxdWVT
b3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKICAgICA6IG1fdXJsKFdURk1vdmUodXJsKSkK
ICAgICAsIG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZShsb2FkZWRGcm9tT3BhcXVlU291cmNlKQor
ICAgICwgbV9kYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKIH0K
IApAQCAtNzUsMTIgKzc2LDIxIEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdv
cmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKICAgICBXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHdvcmtlckdsb2JhbFNjb3BlLCBXVEZN
b3ZlKHJlcXVlc3QpLCAqdGhpcywgb3B0aW9ucyk7CiB9CiAKK2Jvb2wgV29ya2VyRm9udExvYWRS
ZXF1ZXN0Ojppc1BlbmRpbmcoKSBjb25zdAoreworICAgIHJldHVybiAhbV9pc0xvYWRpbmcgJiYg
IW1fZXJyb3JPY2N1cnJlZCAmJiBtX2RhdGEtPmlzTnVsbCgpOworfQorCiBib29sIFdvcmtlckZv
bnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7
CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAm
JiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeSht
X2RhdGEpOwotICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2RhdGEsIG1fdXJs
LmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgaWYgKG1fZGF0YS0+Z2V0KCkpCisgICAg
ICAgICAgICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91cygp
OworICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsK
KyAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEtPmFwcGVu
ZCgqY29udGlndW91c0RhdGEpOworICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRh
ID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZy
YWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKCFtX2ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpCiAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1
ZTsKICAgICAgICAgfQpAQCAtMTE3LDkgKzEyNyw2IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1
ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkK
ICAgICBpZiAobV9lcnJvck9jY3VycmVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1f
ZGF0YSkKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAgIG1f
ZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1ZTc4
MGJkZWViYzVjNmUwNGExZTg2M2M3Li4xYjNkNzg3MGYxMjhiZmU1MzhlZTZjOTg1OWNkYWFlODFl
NDVlMmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1
ZXN0LmgKQEAgLTMwLDEzICszMCwxNCBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9u
cy5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYv
VVJMLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsK
IGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHN0cnVj
dCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3VybDsg
fQotICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1faXNMb2FkaW5n
ICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1fZGF0YTsgfQorICAgIGJvb2wgaXNQZW5kaW5nKCkg
Y29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2lzTG9hZGluZzsgfQogICAgIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fZXJyb3JPY2N1cnJlZDsgfQogCkBAIC03Niw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAg
Rm9udExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxwdHIg
fTsKIAogICAgIFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4gbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5o
CmluZGV4IGViMjY2YjZjMDdlNjczZDkxNjZjYWNlNmIzMzkxOWQ4MGViYmYzMWMuLjA5NzU0M2Ux
YjNiMzBmZjMxNDdkOTIzMmE1OGNlNGE5ZTYyZjNlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5o
CkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7CiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CiBjbGFzcyBTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgU2VydmljZVdvcmtlckZldGNoIHsKIGNsYXNzIENs
aWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDbGllbnQsIFdURjo6RGVzdHJ1Y3Rp
b25UaHJlYWQ6Ok1haW4+IHsKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1
ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRm9y
bURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5YTg3NWY4YWZjMGQ2MjM1NWFjNjIy
OWE2NGMxY2E0M2QxODU2NTIuLjlhOGZiMzVjYTUzNjEwNWJiNmQ2ZmM0NmVlMTIyNDU5MzNmNzBi
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
Y3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsxMjcsOCBAQCBTY3JpcHRCdWZmZXIg
U1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5JiByZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGRpc2FibGUg
ZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQgaGF2aW5nIHRvbyBtYW55IGZpbGUg
ZGVzY3JpcHRvcnMgb3Blbj8KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZh
dGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBTaGFyZWRCdWZmZXI6Ok1heVVz
ZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gU2hh
cmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlVc2VG
aWxlTWFwcGluZzo6Tm8pOworICAgIHJldHVybiBidWZmZXI7CiB9CiAKIHZvaWQgU1dTY3JpcHRT
dG9yYWdlOjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3Ry
YXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBhYjk5NjAz
ZWE1M2UyNDZiNjMzMjFmYmQ0MTQxY2M1ZTI5Y2U5NmI0Li5mY2NjMmE5ZWQyMGQ3NDdjMDljNjE2
YjQ5OGU1MzBlZjc4YThlNTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
QEAgLTExOCw2ICsxMTgsNyBAQCBYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQo
ZmFsc2UpCiAgICAgLCBtX3JlYWR5U3RhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFVOU0VOVCkp
CiAgICAgLCBtX3Jlc3BvbnNlVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVzcG9uc2VUeXBl
OjpFbXB0eVN0cmluZykpCisgICAgLCBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcihtYWtlVW5pcXVl
UmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiAgICAgLCBtX3Byb2dyZXNzRXZlbnRUaHJvdHRs
ZSgqdGhpcykKICAgICAsIG1fdGltZW91dFRpbWVyKCp0aGlzLCAmWE1MSHR0cFJlcXVlc3Q6OnRp
bWVvdXRUaW1lckZpcmVkKQogewpAQCAtMjA3LDggKzIwOCw4IEBAIFJlZjxCbG9iPiBYTUxIdHRw
UmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkKIAogICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJl
Y2VpdmVkIHRoZSBkYXRhIGZyb20gTmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBpdCBi
YWNrLiBUaGlzIGlzIGluZWZmaWNpZW50LgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAg
IGlmIChtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgZGF0YSA9IHN0ZDo6ZXhjaGFu
Z2UobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIsIG51bGxwdHIpLT5leHRyYWN0RGF0YSgpOworICAg
IGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpKQorICAgICAgICBkYXRhID0g
bV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2UoKS0+ZXh0cmFjdERhdGEoKTsKICAgICBTdHJp
bmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHJl
c3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlwZTo6WWVzKSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUg
ZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5IGJlIGluY29ycmVjdC4KICAgICByZXR1cm4g
QmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShkYXRhKSwgbm9y
bWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAgLTIxOCw4ICsyMTksNyBAQCBSZWZQdHI8QXJyYXlC
dWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKCkKICAgICBB
U1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcik7CiAgICAg
QVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkpOwogCi0gICAgYXV0byByZXN1bHQgPSBtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKLSAgICBtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgYXV0byByZXN1bHQgPSAhbV9iaW5hcnlS
ZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2Uo
KS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjpjcmVhdGUobnVsbHB0ciwg
MCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQgWE1M
SHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VCdWZmZXJzKCkKICAgICBtX3Jlc3BvbnNlRW5jb2Rp
bmcgPSBTdHJpbmcoKTsKICAgICBtX2NyZWF0ZWREb2N1bWVudCA9IGZhbHNlOwogICAgIG1fcmVz
cG9uc2VEb2N1bWVudCA9IG51bGxwdHI7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBu
dWxscHRyOworICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5yZXNldCgpOwogICAgIG1fcmVz
cG9uc2VDYWNoZUlzVmFsaWQgPSBmYWxzZTsKIH0KIApAQCAtMTA2NSw4ICsxMDY1LDYgQEAgdm9p
ZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbikKICAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2Rl
KGRhdGEsIGxlbikpOwogICAgIGVsc2UgewogICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEu
Ci0gICAgICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgICAgICBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIG1f
YmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5hcHBlbmQoZGF0YSwgbGVuKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggNzI4OTRhZjZjYzQ3ZGJhZTVlNzVjM2E4MDc5
MDllZjI4NGY2ZDU5Ny4uMTYyY2E5NWFlYjc1NDQ4OWJkNmNkOGNkYzUwODYyYzg0Nzc3YmFiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNs
dWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRp
Y2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJYTUxI
dHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5oIgogI2luY2x1ZGUgPHZhcmlhbnQ+CkBA
IC00NSw3ICs0Niw3IEBAIGNsYXNzIEJsb2I7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERPTUZv
cm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNz
IFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBVUkxTZWFyY2hQYXJhbXM7CkBAIC0yMzcsNyArMjM4
LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9yZXNwb25zZURvY3VtZW50
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7Cisg
ICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
OwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Jlc3BvbnNlQnVpbGRlcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHku
Y3BwCmluZGV4IDU3MzA2N2UzZGQwNTBmZWI3YzU3OWQwMDEwMmVlOWY2MDQ1YjUzMTMuLjMxYzJk
NzZmMmVlMWI5ZDI0OWIwMDFiN2VmZjg5MmVjMmE3NDU2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAK
QEAgLTYxLDcgKzYxLDcgQEAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6flJlbW90ZUNETUluc3Rh
bmNlUHJveHkoKQogICAgIG1faW5zdGFuY2UtPmNsZWFyQ2xpZW50KCk7CiB9CiAKLXZvaWQgUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eTo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZl
ZChjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2b2lk
IFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVj
ZWl2ZWQoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBp
bml0RGF0YSkKIHsKICAgICBpZiAoIW1fY2RtKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHku
aAppbmRleCA4ZTczZDNkOWE2NGI5OGJmYzAwOTM2Y2Q0N2M0YzI1YTkyNzlmMmM4Li4wMmM1Y2Qz
N2FlNTQ4MDJmNmQwYzhkY2NjYjBiYTgwY2YzMzg4YzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKQEAgLTY2
LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KFdlYWtQdHI8
UmVtb3RlQ0RNUHJveHk+JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4mJiwgVW5pcXVlUmVm
PFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVu
dGlmaWVyKTsKIAogICAgIC8vIENETUluc3RhbmNlQ2xpZW50Ci0gICAgdm9pZCB1bnJlcXVlc3Rl
ZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlv
bkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAppbmRleCBlNTc2NmMyMzM0Y2ZkMzg5
MzEwY2Q0YjIxNzIzY2FiYTM3NDJmYzdjLi5kZTgyNzNiOWNmNTAwYTRkNjZhYTE0NGVkZTAyMDFl
ZWYxZWQ4NjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKQEAgLTcwLDcgKzcw
LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2Uo
TGljZW5zZVR5cGUgdHlwZSwgQXRvbVN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9zZXNzaW9uLT5yZXF1ZXN0TGljZW5zZSh0eXBlLCBpbml0RGF0YVR5cGUsIGluaXREYXRh
LmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0
aW9uKV0gKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNj
ZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNl
bnNlKHR5cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwo
KSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJ
bmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2Vl
ZGVkKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbihXVEZNb3ZlKG1lc3NhZ2UpLCBzZXNz
aW9uSWQsIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5jZVNl
c3Npb246OlN1Y2NlZWRlZCk7CiAgICAgfSk7CiB9CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkLCBDbG9zZVMKIAogdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6
cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5
cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJiBjb21wbGV0aW9uKQogewotICAgIG1fc2Vz
c2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlLCBbY29tcGxldGlvbiA9IFdU
Rk1vdmUoY29tcGxldGlvbildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYm
IGtleVN0YXR1c2VzLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRT
ZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkg
bXV0YWJsZSB7CisgICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5
cGUsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lv
bjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vz
c2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgIHN0ZDo6b3B0
aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2U7
CiAgICAgICAgIGlmIChleHBpcmVkU2Vzc2lvbnNEYXRhKQogICAgICAgICAgICAgZXhwaXJlZFNl
c3Npb25EYXRhUmVmZXJlbmNlID0gSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoKmV4cGly
ZWRTZXNzaW9uc0RhdGEpKTsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJiBrZXlT
dGF0dQogICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlVwZGF0ZUtleVN0YXR1c2VzKFdURk1v
dmUoa2V5U3RhdHVzZXMpKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBpZiAoIW1fY2RtKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCmluZGV4IDhhNjFmOWQ1ZmFiYzg0ODZhN2EwZTg2MGY0
YzYzMTJjMGI0NDU1MTQuLmZlNzMwOTcxMzFlMGJiMjBhNTAwMWUxNTAxNjAyZDY1MTg2YjMwOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6
CiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQKICAgICB2b2lkIHVwZGF0ZUtleVN0
YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKSBmaW5hbDsKLSAgICB2b2lkIHNlbmRNZXNzYWdlKFdl
YkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIG1lc3Nh
Z2UpIGZpbmFsOworICAgIHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUs
IFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOwog
ICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBQbGF0
Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBmaW5hbCB7IHJldHVybiBtX2Rpc3BsYXlJRDsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNw
cAppbmRleCA5YWIzNTc1ZjRjM2I1NTk1NTViOWI4N2IyMzM3MWIxYjFhNjZkYzE3Li5mN2NiNmE2
M2ViOTMzYWJkNGQ0NTNhMjJhYjI5NGYxMzAzMjMyYjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKQEAgLTYzLDEyICs2MywxMiBA
QCBSZW1vdGVDRE1Qcm94eTo6UmVtb3RlQ0RNUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5
UHJveHk+JiYgZmFjdG9yeSwgc3RkOjp1bgogCiBSZW1vdGVDRE1Qcm94eTo6flJlbW90ZUNETVBy
b3h5KCkgPSBkZWZhdWx0OwogCi1ib29sIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK2Jvb2wg
UmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwg
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICByZXR1cm4gbV9wcml2
YXRlLT5zdXBwb3J0c0luaXREYXRhKHR5cGUsIGRhdGEpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXIm
IHJlc3BvbnNlKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFJlbW90ZUNETVByb3h5
OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNl
KQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2UpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaApp
bmRleCA2OTI0ZTc0ZTNmNTAxMWJlMjE1YmU0YmQ5NmIyMzQ4MjY0NzBmNDIzLi4zYjY2Yzc3NTc4
NzA2OWU5NzZlZTA2NGY5NmZmMDdjMGY3MTJhOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1
ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgQ0RNUmVx
dWlyZW1lbnQgOiB1aW50OF90OwogZW51bSBjbGFzcyBDRE1TZXNzaW9uVHlwZSA6IHVpbnQ4X3Q7
CiBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKQEAgLTU4LDggKzU4LDggQEAgcHVi
bGljOgogCiAgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5KiBmYWN0b3J5KCkgY29uc3QgeyByZXR1
cm4gbV9mYWN0b3J5LmdldCgpOyB9CiAKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwotICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJiByZXNwb25zZSk7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2Uo
Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpOwogICAgIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCmluZGV4IGUyY2QwNWQ3Y2M3NGYyMGVjNjlmYWRm
ZTNlZTA4NTc1OTJhZDg3OWIuLmRlOGY2ZGY1NWE2ZTFmYThiZTk2NmY5NDFlMDdmZTJmNWM1MDIx
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1Qcm94eS5oCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uUHJveHkuY3BwCmluZGV4IDkzYjJmZjc0MWIxZjgzNjliMjA1ODRlNDk3ZTRhMDIxYjlj
Y2Y1NzguLjIxNDEzNzlkNmE1OWVhZjIyODUxNGIxODdiNTY5ZDA0NzAzYzExOTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uUHJveHkuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gY29udmVydFRvT3B0aW9uYWxEYXRhUmVmZXJlbmNl
KFQgYXJyCiB7CiAgICAgaWYgKCFhcnJheSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LSAgICByZXR1cm4geyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoY29uc3QgY2hhciopYXJyYXktPmRh
dGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkgfTsKKyAgICByZXR1cm4geyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKGNvbnN0IGNoYXIqKWFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRl
TGVuZ3RoKCkpIH07CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZW5l
cmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5JiYgaW5pdERhdGEsIEdlbmVyYXRlS2V5Q2FsbGJhY2smJiBjb21wbGV0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eS5oCmluZGV4IGYxNGM2MjdmNjU5M2UxYTg3OGQwZjQ1OTkyYjNjNDFiMjIy
YzdmMDAuLjE1NDZiZGZkZmRjZjA5MTA4Nzg5NDRmMzQwNzk2N2E3YWIzOGJmODYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5LmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIExlZ2FjeUNETTsKIGNsYXNzIExlZ2FjeUNETVNlc3Npb247Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgSVBD
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlLmNwcAppbmRleCBjNDVlNTI1NWQ2N2I1MmM3YWUxMDQ0OTk4OGNlMDE5MGM3ZmZi
NTM4Li42MTdmNDc2ODk1NjQyZGVjMjMyNTRiNTQwZWU4MTkxMWFjNGEyZGY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2Uu
Y3BwCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQo
dWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlCiAgICAgICAgIG1f
Y2xpZW50LT5kYXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwog
fQogCi12b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChSZWY8U2hhcmVkQnVm
ZmVyPiYmIGRhdGEpCit2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGlmIChtX2NsaWVudCkKICAg
ICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgV1RGTW92ZShkYXRhKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2Uu
aAppbmRleCBkMTNkMjVmNjVmMDIyNGE2Yzc2N2Y2OWE0ZDQxOWNkMDUzYmI3OTVkLi41YjdhN2Uy
YTc0MjQ0MzJkODZjYjI4YTFiZTcxNzE4YTE2NzM3NWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKQEAgLTM0LDcgKzM0
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
c3BvbnNlUmVjZWl2ZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+
JiYpOwogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIGRhdGFTZW50KHVp
bnQ2NF90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggN2U1NzJi
M2E3NGEyMDI3ZTc0Y2FhNzY3MmU1MmRhMGFmODM0MjA3Mi4uZTgzZjkxNDNkMjBhNzJlMmJlNGZm
Y2JmZWQxM2IwYmI0ZGQzMWUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3LDggQEAg
dm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpS
ZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hE
YXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV93cml0ZXItPmZldGNoRGF0YShbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1
dG8gdGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBhdXRvKiBwb2ludGVyID0gZGF0YSA/IGRh
dGEtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigpOworICAg
ICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOwog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVyLCBk
YXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxv
YWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3du
bG9hZC5oCmluZGV4IDUyY2M1ZGExMjFhMmZiNTlkOGNmMDU5M2I2ODUwOWZkNjU1YzBjZGMuLjcx
ZmQwMjIyOWJiYjFjNTczMjZmZGZjZmUyNmMxMWY3NjFhYmNmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5o
CkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJG
b3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxvd2VkVG9Bc2tVc2Vy
Rm9yQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGly
ZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Up
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlIHsgfTsK
ICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDNmMzllYjMyZjFhYTgwNzY3
ODVkYTc5ZWUxMWRhZDhmMGMzMjZiNzkuLmQ4OTIwZTk4NzY0ZmQ5YjY0YjljZGRjNjBhMWQ4NGQ2
MTliMmQ0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2
b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlv
bjo6VXNlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2Vp
dmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpCit2b2lkIE5ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpCiB7CiAgICAgQ09SU19DSEVDS0VSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZl
RGF0YSIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggYmJiMTQ2MmEzMTYxZTJmY2U5ZWE1
Nzg0NGIxOWI5M2U2MTljODFiMC4uZTExYmY1NjMxOTA3YWU0NzMzNmVmODVhNWQyMmU4ODM1NzQ2
NTFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21w
bGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRp
ZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRh
KHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1Nl
bmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKaW5kZXggZDYwMThmNjEzODNhZTNh
NTFlOWQ0NzIyY2Y2YTYwZTJkOGI4N2E3ZC4uZTA0OWU1YjEyZGRlNWZlNTFiNDY5NTUyODlhN2E3
ZjY5OTgyYWZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFzay5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxs
ZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5
VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0
ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlV2l0aEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90
IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5kZXggYmFjMDIyYWI0NTQzMGY2NTFiMTg5YWMw
MTIwN2EwNjA2MDhjMTY3MS4uNzk3NWQ0MWJhZDg5MTVmZWVkYmRhYjE1NTRlODFlMWRiMjAzMGY4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKQEAg
LTI1Niw3ICsyNTYsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpub3RpZnlEaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdAogICAgIG1fY2xpZW50Lmdl
dCgpLmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRh
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgYmUgdGhlIGVuY29kZWQgZGF0YSBsZW5ndGgsIG5vdCB0aGUgZGVjb2RlZCBk
YXRhIGxlbmd0aC4KICAgICBhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRleCBjMzc3M2M5ODc4NTUzY2U1MzRk
MDU0YWJmZmRkZWJiMjllZTA4NGQyLi5lZTVlYjAwNmFhMzc5Yjc4ZmNiYzBiZDE3NGUzMmJkNjM5
Zjk1ZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCkBA
IC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlh
dGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290
aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
KyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50
NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tl
ZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZENsaWVudC5oCmluZGV4IDBhNWY2NmJkOTY3ZWM5ZmRmNjY0ZTUyZTVhZjM5NGU0OGVjZTFmN2Iu
LjM0OGNmZmI5ZThlMjVlZTgzYmJiMzlhMDJjZDNjZjZkMjg1NGQzOWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKQEAgLTMyLDcgKzMy
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgUG9saWN5QWN0aW9uIDogdWludDhf
dDsKIH0KIApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNl
bmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0
b3RhbEJ5dGVzVG9CZVNlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZWRpcmVj
dGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQmxvY2tBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgpIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBiZjhmMzU3ZDdhODNlZTUwMjg5
MWRiMWU1YWJkODQxODRjNjMzNmM4Li43MzE4OWVmZTQzMWJhNzMzM2JhYjJhN2I3NDAzMmQxMWNi
NWZjNjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04NywxNCArODcsMTQgQEAgc3RydWN0IE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSB7CiAgICAgUmVzb3VyY2VFcnJvciBl
cnJvcjsKIH07CiAKLXN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSYgZGF0YSwgY29uc3QgU2hh
cmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3N0
YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSYgZGF0YSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogYnVmZmVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAg
QVNTRVJUKGRhdGEuZGVsYXllZFJlcGx5KTsKICAgICBBU1NFUlQoIWRhdGEucmVzcG9uc2UuaXNO
dWxsKCkgfHwgIWRhdGEuZXJyb3IuaXNOdWxsKCkpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJl
c3BvbnNlQnVmZmVyOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0gICAgICAg
IHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwor
ICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAgIGRhdGEucmVzcG9uc2Uuc2V0RGVwcmVjYXRl
ZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRlKG1ldHJp
Y3MpKTsKIApAQCAtMTA1LDkgKzEwNSwxMSBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNo
cm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQ
ZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiBzeW5jaHJvbm91c1JlcGx5KQog
ICAgIDogbV9wYXJhbWV0ZXJzIHsgV1RGTW92ZShwYXJhbWV0ZXJzKSB9CiAgICAgLCBtX2Nvbm5l
Y3Rpb24geyBjb25uZWN0aW9uIH0KKyAgICAsIG1fYnVmZmVyZWREYXRhIHsgbWFrZVVuaXF1ZVJl
ZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZmlsZVJlZmVyZW5jZXMoY29ubmVj
dGlvbi5yZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9wYXJhbWV0ZXJzKSkKICAgICAsIG1faXNBbGxv
d2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMgeyBtX3BhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlh
bFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50
aWFscyB9CiAgICAgLCBtX2J1ZmZlcmluZ1RpbWVyIHsgKnRoaXMsICZOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQgfQorICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX3Nob3Vs
ZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1cmVFeHRy
YU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2FkSUQgeyBO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CkBAIC0zMDYsMTAg
KzMwOCwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgICAgICBjb25zdW1lU2FuZGJv
eEV4dGVuc2lvbnMoKTsKIAogICAgICAgICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1fcGFyYW1l
dGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVmZmVyZWRE
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRh
LT5lbXB0eSgpOwogCiAgICAgICAgIGlmIChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAgICAgICAg
ICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
ICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+ZW1wdHkoKTsKICAgICB9CiAKICAgICBO
ZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAgLTczMCwy
MCArNzMyLDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICAgICB8fCBlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL29jdGV0LXN0
cmVhbSIpOwogICAgIH07CiAKLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhCisgICAgaWYgKG1fYnVm
ZmVyZWREYXRhLT5pc051bGwoKQogICAgICAgICAmJiBtX3Jlc3BvbnNlLmV4cGVjdGVkQ29udGVu
dExlbmd0aCgpID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPigxICogTUIpCiAgICAgICAgICYmIGlz
RmV0Y2hPclhIUihyZXNvdXJjZUxvYWRJbmZvKQogICAgICAgICAmJiBpc01lZGlhTUlNRVR5cGUo
bV9yZXNwb25zZS5taW1lVHlwZSgpKSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogICAg
ICAgICBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJTdHJhdGVn
eTo6bWVkaWFNYXhpbXVtQnVmZmVyaW5nVGltZTsKICAgICB9CiAKICAgICAvLyBGb3IgbXVsdGlw
YXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxlZCBt
dWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGlu
Zy4KICAgICBpZiAoIWlzU3luY2hyb25vdXMoKSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkp
Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERh
dGEtPnJlc2V0KCk7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAg
ICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERh
dGFGb3JDYWNoZS0+cmVzZXQoKTsKIAogICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9u
KSB7CiAgICAgICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKQEAgLTg1OCw3ICs4NjAsNyBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZERpZFJlY2VpdmVSZXNwb25zZVBvdGVu
dGlhbGx5SW5OZXdCcm93c2luZ0NvbnRleAogICAgIH0pOwogfQogCi12b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9udW1CeXRlc1Jl
Y2VpdmVkKQogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVCdWZmZXI6IFN0
YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGg9JWQpIiwgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CkBAIC04NjYsMjAgKzg2OCwyMCBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgaW50IHJlcAogCiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKTsK
IAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CisgICAgaWYgKCFtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLT5pc051bGwoKSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93
dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6ZSBvZiBlbnRyaWVzIGlu
IHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUg
PSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsKICAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUp
CiAgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgp
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51
bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5yZXNldCgpOwogICAg
IH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICAvLyBGSVhNRTogQXQgbGVhc3Qgb24gT1MgWCBZb3NlbWl0ZSB3ZSBhbHdheXMgZ2V0IC0xIGZy
b20gdGhlIHJlc291cmNlIGhhbmRsZS4KICAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGggOiBidWZmZXItPnNpemUoKTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkgeworICAgIGlm
ICghbV9idWZmZXJlZERhdGEtPmlzTnVsbCgpKSB7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhLT5h
cHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxl
bmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKICAgICAgICAgc3RhcnRCdWZmZXJpbmdUaW1lcklm
TmVlZGVkKCk7CkBAIC05MDksMTEgKzkxMSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwog
I2VuZGlmCiAKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQotICAgICAgICBzZW5kUmVwbHlUb1N5
bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS5n
ZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91
c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEtPmdldCgpLmdl
dCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIGVsc2UgewotICAgICAgICBpZiAobV9idWZm
ZXJlZERhdGEgJiYgIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKCFt
X2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogUGFzcyBh
IHJlYWwgdmFsdWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVkIGRhdGEgc2l6ZSBmZWF0dXJlLgotICAg
ICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEsIC0xKTsKKyAgICAgICAgICAgIHNl
bmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLT5nZXQoKSwgLTEpOwogICAgICAgICB9CiAgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQo
bmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQpAQCAtMTI1NCwxOSArMTI1NiwxOSBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCkKIAog
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQoKQogewotICAg
IEFTU0VSVChtX2J1ZmZlcmVkRGF0YSk7CisgICAgQVNTRVJUKCFtX2J1ZmZlcmVkRGF0YS0+aXNO
dWxsKCkpOwogICAgIEFTU0VSVChtX25ldHdvcmtMb2FkKTsKIAogICAgIGlmIChtX2J1ZmZlcmVk
RGF0YS0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEgfSwgbV9i
dWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJl
c291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YS0+Z2V0KCkgfSwg
bV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwogCi0gICAgbV9idWZmZXJlZERhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwog
ICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwogfQogCi12b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90
IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZm
ZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5n
dGgpCiB7CiAgICAgQVNTRVJUKCFpc1N5bmNocm9ub3VzKCkpOwogCkBAIC0xMjc5LDcgKzEyODEs
NyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQog
ICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBOb3Qgc3Rv
cmluZyBjYWNoZSBlbnRyeSBiZWNhdXNlIHJlcXVlc3QgaXMgbm90IGVsaWdpYmxlIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7Cisg
ICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIExPQURF
Ul9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVu
dHJ5IGJlY2F1c2UgbV9idWZmZXJlZERhdGFGb3JDYWNoZSBpcyBudWxsIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0xMjg3LDEyICsxMjg5LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVm
ZXRjaCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9jb25uZWN0aW9uLT5uZXR3
b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKSkgewogICAgICAgICAgICAg
TE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBp
biBwcmVmZXRjaCBjYWNoZSIpOwotICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgp
LnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9y
ZXNwb25zZSksIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAg
c2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1
ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUt
PnRha2UoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBMT0FERVJf
UkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIEhUVFAg
ZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRS
ZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSksIFts
b2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKKyAgICBt
X2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNl
LCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT50YWtlKCksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9
XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09V
UkNFKQogICAgICAgICBpZiAobWFwcGVkQm9keS5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZS5pc051
bGwoKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGQyMzRkYWI1YmVlYTViNjQ3
MzA1NTBjNzczNzBhOWYxNTk1OTdmOTcuLjk4NDQyNGEzMDY4MWEzNjBmYzYwYzllN2E5ZGQ0ZTZi
YjQyNmRlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lWaW9s
YXRpb25FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDYsNiArNDcsOCBAQCBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFz
cyBGb3JtRGF0YTsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZm
ZXJCdWlsZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExNCw3ICsxMTcsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7IH0KICAg
ICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgZmluYWw7CkBAIC0xOTIs
NyArMTk1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVl
ZGVkKCk7CiAgICAgdm9pZCBidWZmZXJpbmdUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzZW5kQnVm
ZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7Cisg
ICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBzaXpl
X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogCiAgICAgdm9pZCBjb25zdW1lU2FuZGJveEV4dGVuc2lv
bnMoKTsKICAgICB2b2lkIGludmFsaWRhdGVTYW5kYm94RXh0ZW5zaW9ucygpOwpAQCAtMjI1LDcg
KzIyOCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3Bv
bnNlOwogCiAgICAgc2l6ZV90IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggeyAwIH07
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGE7CisgICAg
VW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyZWREYXRhOwog
ICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxTeW5jaHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9ub3VzTG9hZERhdGE7CkBAIC0yNDAsNyAr
MjQzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVyaW5nVGltZXI7
CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBVbmlxdWVS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9y
VmFsaWRhdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9j
YWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbjsKICAgICBib29sIG1faXNXYWl0aW5nQ29u
dGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB7IGZhbHNlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCmluZGV4IDExNDg1M2U0NWI3MjUzMzY0
Yzc0N2E3MWNiMmI1YWI4Y2MzOGVmZDUuLjFhZjFlMDhlM2M0NDFlMjRmMzAwNjVlOWYyMDc3NmU2
ZjlmYzMzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xv
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCkBA
IC0xNzIsNyArMTcyLDcgQEAgdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVQKICAgICBkaWRGaW5pc2go
eyB9LCByZXNwb25zZSk7CiB9CiAKLXZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxT
aGFyZWRCdWZmZXI+JiYpCit2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikKIHsKICAgICBQSU5HX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZl
RGF0YSIpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5oCmluZGV4IDE5ZWM4Y2ViOTJlM2M4YTA1NmY0OTI3MzY2MGNmZmY5MjY0
MzQxZDEuLmFiMjlhMGIxYWM4NDY2YjBlZDYxZWY1OGVmNGMyMjBhYmFiNmViZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5n
ZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9u
c2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZv
aWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2Vu
ZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3Rl
ZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCmluZGV4IDQ1NTc4MmQ1
NGEyZWE5YmVlMTg2NTBlMWFmZDFjZjdiMmNlOThjNDkuLjE3ZDQ3OTA3YTNmNmVlNTJiZTY1MDFk
MWRhYjBjYTYwNzUxZDZiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJlY29ubmVjdFRhc2suY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUHJlY29ubmVjdFRhc2s6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNl
Q29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogfQogCi12
b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBQcmVjb25uZWN0VGFzazo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKaW5kZXggMWMxZmYx
NjQ3MTExYzZmYTg0OTRhZjVjZjBjN2JiZWFhMWIyNjUwMy4uODU4MDhlMTIxYjY4Y2E4YjczZTI1
MThkMTkzYWIzOTU4MWVhZDFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QcmVjb25uZWN0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJlY29ubmVjdFRhc2suaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
U2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25n
IHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRS
ZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVj
dFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWls
TG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCmluZGV4
IDcxZTBjZjZjNmRjN2JlYTUyMmM5MDYwMDU1NWY1NzIxNjFjM2MyZjQuLjgxOTY2MzAyMGM2OTVj
ZTBjNmFiYTk5OWM2NzVhYWI0MjgyYzdmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcApAQCAtMTc0LDEwICsxNzQsMTAgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlUmVzcG9uc2UmJiByZXMKICAgICAgICAgY2FsbGJhY2soKTsKIH0KIAotdm9pZCBT
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lk
IFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpCiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNrKQotICAgICAgICBtX2JvZHlDYWxsYmFj
ayhXVEZNb3ZlKGJ1ZmZlciksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICBt
X2JvZHlDYWxsYmFjayhidWZmZXItPm1ha2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRy
aWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2Fk
ZXIuaAppbmRleCAxZTc4YzJjZWZhMTU0ODQxMDQwNjBmM2IxOWRjNTBlNmNiOGYxZWI0Li5lZTFi
YzhiN2Q2Y2JmZmMzMzQxZDY3M2ZiNzI0MjIzOGY2NzE3ZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAtNjcsNyArNjcsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVk
UmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJl
Y3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFp
bExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIGJvb2wg
c2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3M7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDhlZTExMmE5
ZGY4Mjg5NTRjMTYyM2ZmZjIyYzJhMjBmZDhlMmZlN2QuLjdhMjYyMjE5ZGU3OGIyMzVkMTI1YTky
YjZlMjM2ZDMzMjYyZjdhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIFJlc291cmNlRXJyb3IgU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OnByb2Nlc3NSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKCFtX2RlY29k
ZXIpIHsKICAgICAgICAgaWYgKCFtX3Jlc3BvbnNlRW5jb2RpbmcuaXNFbXB0eSgpKQpAQCAtMTg3
LDcgKzE4Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgfQogCiAgICAgaWYgKGF1
dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNv
ZGVyLT5kZWNvZGUoYnVmZmVyLT5kYXRhKCksIHNpemUpKTsKKyAgICAgICAgbV9zY3JpcHQuYXBw
ZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBz
aXplKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgKaW5kZXggMThmNTQ2OTFmMzdj
MmJhYmJjOGMxYTNiYzA5NDM3MGU5YjI5ZWI3MS4uNDRmYzA2ODVmYTBmZWRjODc0MjE5MTZlOTEz
YTY3NGIxYzBmZGJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dl
ZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIGZpbmFsOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
IGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwog
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IDA0Nzc2ODM2Zjk5OTA5MzkxMGIzOTlkNzU1
Mzg1NWQ1ZDNmMWZmNGUuLmRkMzA1YWYyOTc2NjFlNDc2YzQ5Njc3ZGY1NzIxZWZkMWVjOTMyZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIENhY2hlOjpjb21wbGV0ZVJldHJpZXZl
KFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyLCBzdGQ6OnVuaXF1ZV9wdAogICAg
IGhhbmRsZXIoV1RGTW92ZShlbnRyeSksIGluZm8pOwogfQogICAgIAotc3RkOjp1bmlxdWVfcHRy
PEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhKQorc3RkOjp1bmlxdWVfcHRy
PEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSkKIHsKICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25z
ZSwgV1RGTW92ZShyZXNwb25zZURhdGEpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RI
ZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24obV9zZXNzaW9uSUQpLCByZXF1
ZXN0LCByZXNwb25zZSkpOwogfQpAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4gQ2FjaGU6Om1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3Qp
LCByZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVl
c3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24obV9zZXNzaW9uSUQpLCBy
ZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpz
dG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiByZXNwb25zZURhdGEsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIEFTU0VSVChyZXNwb25zZURhdGEpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAppbmRleCAxOTlmMGNm
YjczMjU0M2M1ZmVhZjRmZTIzMDFlNmExYzEyZjg4ZmU4Li5lZDA0ZWJjYTBiMzZmM2Y5YzRjMGU3
YmFjNzEzMzZiOWU5NmMzNTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTQzLDcgKzQzLDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIExvd1Bvd2VyTW9kZU5vdGlmaWVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjYsNyArMTY2LDcgQEAgcHVibGljOgogICAgIH07
CiAgICAgdXNpbmcgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQoc3Rk
Ojp1bmlxdWVfcHRyPEVudHJ5PiwgY29uc3QgUmV0cmlldmVJbmZvJik+OwogICAgIHZvaWQgcmV0
cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJhbWVJ
RCYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBSZXRyaWV2ZUNv
bXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmUoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIEZ1bmN0aW9uPHZvaWQoTWFw
cGVkQm9keSYpPiYmID0gbnVsbHB0cik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9y
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIEZ1
bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmID0gbnVsbHB0cik7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiBzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VD
YXApOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gdXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IEVudHJ5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgdmFsaWRhdGluZ1Jlc3BvbnNlKTsKIApAQCAtMTg1LDcgKzE4NSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJldHJpZXZlRGF0YShjb25zdCBEYXRhS2V5JiwgRnVuY3Rpb248dm9pZChjb25z
dCB1aW50OF90Kiwgc2l6ZV90KT4pOwogICAgIHZvaWQgc3RvcmVEYXRhKGNvbnN0IERhdGFLZXkm
LCAgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+IG1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlRW50cnkoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8RW50cnk+IG1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCk7CiAKICAgICB2b2lkIGR1bXBDb250ZW50
c1RvRmlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBiYTM5ZDllMmMyNmEwMWE5MjZiMTFhYTc5
OWUzNjYyZmM2YWUwNTQ5Li43NjEwNzhkZWEwOTNjMDQ1NTViZTk4YjA1MTczZTM0MTUwNjdhODU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7
CiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAotRW50cnk6OkVudHJ5KGNvbnN0IEtleSYga2V5
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5n
LCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKQorRW50cnk6OkVudHJ5KGNvbnN0IEtl
eSYga2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRy
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8
c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycykKICAgICA6
IG1fa2V5KGtleSkKICAgICAsIG1fdGltZVN0YW1wKFdhbGxUaW1lOjpub3coKSkKICAgICAsIG1f
cmVzcG9uc2UocmVzcG9uc2UpCkBAIC0xMDEsOCArMTAxLDEwIEBAIFN0b3JhZ2U6OlJlY29yZCBF
bnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKIAogICAgIERhdGEgaGVhZGVyKGVu
Y29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKICAgICBEYXRhIGJvZHk7Ci0g
ICAgaWYgKG1fYnVmZmVyKQotICAgICAgICBib2R5ID0geyBtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1
ZmZlci0+c2l6ZSgpIH07CisgICAgaWYgKG1fYnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVyID0g
bV9idWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcio+KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZl
ci0+c2l6ZSgpIH07CisgICAgfQogCiAgICAgcmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCBo
ZWFkZXIsIGJvZHksIHsgfSB9OwogfQpAQCAtMTk0LDcgKzE5Niw3IEBAIHZvaWQgRW50cnk6Omlu
aXRpYWxpemVCdWZmZXJGcm9tU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAgICAgbV9idWZmZXIgPSBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NvdXJjZVN0b3JhZ2VSZWNvcmQuYm9keS5k
YXRhKCksIG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LnNpemUoKSk7CiB9CiAKLVdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciogRW50cnk6OmJ1ZmZlcigpIGNvbnN0CitXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBFbnRyeTo6YnVmZmVyKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVy
KQogICAgICAgICBpbml0aWFsaXplQnVmZmVyRnJvbVN0b3JhZ2VSZWNvcmQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
aAppbmRleCA5NjkxNWMzODAxYzM3ZGRhYzNlOGU2MDMyMWY4OGMyMjI5Y2Q1OWEwLi45YzA0MjBk
NDRhODE1OGRmYzViMjFjZjE4ODIwNGNmM2E5MTZiNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCkBAIC0zNSw3
ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2Ug
TmV0d29ya0NhY2hlIHsKIGNsYXNzIEVudHJ5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBFbnRyeShjb25zdCBLZXkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVmVjdG9y
PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOworICAg
IEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVmVjdG9yPHN0ZDo6
cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOwogICAgIEVudHJ5
KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgVmVjdG9yPHN0ZDo6
cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOwogICAgIGV4cGxp
Y2l0IEVudHJ5KGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYpOwogICAgIEVudHJ5KGNvbnN0IEVudHJ5
Jik7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KICAgICBj
b25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVh
ZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJzOyB9CiAKLSAgICBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0OworICAgIFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0OwogICAgIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiYgcmVkaXJlY3RSZXF1ZXN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWRpcmVjdFJlcXVlc3Q7IH0KIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VS
Q0UpCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJp
bmcsIFN0cmluZz4+IG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJzOwogCiAgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IG1fcmVkaXJlY3RSZXF1ZXN0OwotICAgIG11dGFi
bGUgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgbXV0YWJsZSBS
ZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAjaWYgRU5B
QkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICBtdXRhYmxlIFNoYXJlYWJsZVJlc291cmNlOjpI
YW5kbGUgbV9zaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IGFkMDlkZjQ0ZDlhZjEyZmQ0MDgwMzEwNTQ2ODM1MzZl
YTBkYzgxOTMuLjdiMGFkYzQwZjBiMGI2NzE0NzFhMjdhYjUxMzk3NjZkNGI1NTU0NDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lk
IFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiBy
ZWNlaXZlZFJlc3BvbnNlLCBSZQogICAgIG1fcmVzcG9uc2UgPSByZWNlaXZlZFJlc3BvbnNlOwog
CiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERh
dGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVz
ZXQoKTsKIAogICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKICAgICBpZiAodmFsaWRhdGlv
blN1Y2NlZWRlZCAmJiBtX2NhY2hlRW50cnkpCkBAIC0xMjAsMTcgKzEyMCwxNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNl
aXZlZFJlc3BvbnNlLCBSZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6VXNl
KTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBT
cGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NF
UlQoIW1fY2FjaGVFbnRyeSk7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewog
ICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0
YS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSAxMCAqIDEw
MjQgKiAxMDI0OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsg
YnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAo
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVt
Q2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBl
bmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERh
dGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LnJlc2V0KCk7CiAgICAgfQogfQogCkBAIC0xMzksMTAgKzEzOSwxMCBAQCB2b2lkIFNwZWN1bGF0
aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJp
Y3MmKQogICAgIGlmIChtX2RpZENvbXBsZXRlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFt
X2NhY2hlRW50cnkgJiYgbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewotICAgICAgICBtX2NhY2hl
RW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZS5jb3B5UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7
CisgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0
LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmdldCgpLCBbXShhdXRvJiBtYXBw
ZWRCb2R5KSB7IH0pOwogICAgICAgICAvLyBDcmVhdGUgYSBzeW50aGV0aWMgY2FjaGUgZW50cnkg
aWYgd2UgY2FuJ3Qgc3RvcmUuCiAgICAgICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIGlzU3RhdHVz
Q29kZUNhY2hlYWJsZUJ5RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpKQotICAg
ICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1
ZXN0LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAg
ICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVz
dCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwogICAgIH0KIAog
ICAgIGRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRleCBj
MGUxZTE0YjJhYzQ2MDM1OGY4MTQwN2NkNzBjNDA5MDUyYWY4ZWZlLi4xYjg0M2RiN2VjMjcwZGI5
ZGFiOWU4YTI1ZjJhNDhhOGVjYWUyYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNl
ckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lk
IHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgog
CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJD
b3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAgICBib29s
IG1fZGlkQ29tcGxldGUgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCmluZGV4IDVlMmUwMmUyZmJhMGI0
YTBjMDNiNWQzZTY2Yjk3ZjdiY2NjNzk1OGIuLjMxOTliZmYzMTFiNmMzZWVmYmU5NTBiNDVlNmIw
YTk2ZTMyNzc3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvUHJlZmV0Y2hDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9QcmVmZXRjaENhY2hlLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotUHJlZmV0Y2hDYWNoZTo6RW50cnk6OkVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CitQcmVmZXRjaENhY2hlOjpFbnRyeTo6RW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
IHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiAgICAgOiByZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSksIGJ1ZmZlcihXVEZNb3ZlKGJ1
ZmZlcikpCiB7CiB9CkBAIC03Miw3ICs3Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQcmVmZXRjaENh
Y2hlOjpFbnRyeT4gUHJlZmV0Y2hDYWNoZTo6dGFrZShjb25zdCBVUkwmIHVybCkKIAogc3RhdGlj
IGNvbnN0IFNlY29uZHMgZXhwaXJhdGlvblRpbWVvdXQgeyA1X3MgfTsKIAotdm9pZCBQcmVmZXRj
aENhY2hlOjpzdG9yZShjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
Cit2b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25QcmVmZXRjaGVz
KQogICAgICAgICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gbWFrZVVuaXF1ZTxQcmVmZXRjaEVudHJp
ZXNNYXA+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L1ByZWZldGNoQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJl
ZmV0Y2hDYWNoZS5oCmluZGV4IGEyNTE1MjBiMzFlYWM5MjFjMjJkMzExNTFkNmQyMzFhMWJlZDEz
OGMuLjUyYzBiMTBmY2M2ZDVhNmRlMTE0NDdlN2U0ZTgyMmRmOGY4NDFjYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCkBAIC00
NywxOCArNDcsMTggQEAgcHVibGljOgogCiAgICAgc3RydWN0IEVudHJ5IHsKICAgICAgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgICAg
ICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICAgICAgRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAKLSAgICAgICAgUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVsZWFzZUJ1ZmZlcigpIHsgcmV0dXJuIGJ1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpOyB9CisgICAgICAgIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiByZWxlYXNlQnVmZmVyKCkgeyByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7IH0K
IAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgICAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCByZWRpcmVjdFJlcXVlc3Q7CiAgICAgfTsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gdGFrZShjb25zdCBVUkwmKTsKLSAgICB2b2lkIHN0b3JlKGNvbnN0IFVSTCYs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJik7CisgICAgdm9pZCBzdG9yZShjb25zdCBVUkwmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB2
b2lkIHN0b3JlUmVkaXJlY3QoY29uc3QgVVJMJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
LmgKaW5kZXggYjlhYjBkZWViYjlmOTI3YzczNzQyZTg2YTBiZTdmOTcxNjBiZDZmYi4uNDE2Njhh
NWIxY2Q3Mzg2OTY3YjhmZDk3M2U5NjczMmVjYTkwN2VkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaApA
QCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWROZWdvdGlhdGVNb2Rlcm5UTFMo
Y29uc3QgVVJMJik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBO
ZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7
CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlv
bkhhbmRsZXImJik7CiAgICAgdm9pZCB0cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2Fk
KERvd25sb2FkJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCBlNzgwZDZjMWMzY2QxZWIyYzJm
ZjVhMGM1NjRhMGU0ZDg4YjdlYTVkLi4zMDUxZjE2OWNiMGEzNzA5OTg1YTE2MTEyMmMyNWYwZThm
MTdiZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIE5l
dHdvcmtEYXRhVGFza0NvY29hOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiBlcgogICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3Io
ZXJyb3IsIG5ldHdvcmtMb2FkTWV0cmljcyk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ29j
b2E6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3Zv
aWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgV1RGRW1pdFNpZ25wb3N0KG1fdGFz
ay5nZXQoKSwgIkRhdGFUYXNrIiwgInJlY2VpdmVkICV6ZCBieXRlcyIsIGRhdGEtPnNpemUoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3Jr
RGF0YVRhc2tDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrRGF0YVRhc2tDdXJsLmNwcAppbmRleCA4ZmM3YjY2M2U2Zjc1NjJiMmIzNTQ4OTM5OGEyZmU3
MzFiZTA3NGYxLi4zN2YyOTQxNjY0NmM0N2UxZGExZmQ5OTQxY2NhYzAwYjVkYzBmZDIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNr
Q3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtE
YXRhVGFza0N1cmwuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tD
dXJsOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVz
cG8KICAgICBpbnZva2VEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0
YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQordm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2
ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKIHsKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAgICAgaWYgKHN0YXRlKCkg
PT0gU3RhdGU6OkNhbmNlbGluZyB8fCBzdGF0ZSgpID09IFN0YXRlOjpDb21wbGV0ZWQgfHwgKCFt
X2NsaWVudCAmJiAhaXNEb3dubG9hZCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCmluZGV4IDFjNDI3ZGRiNzhk
Njk1M2ZlODk2MGM1NjkyYWZkZTRmNGYwZWVlODUuLjQ1YmU1Y2UxODQzMjUyNzFkNWMwODBkZDM0
ZjFlZTRhMTY2NDJhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRl
OgogICAgIFJlZjxXZWJDb3JlOjpDdXJsUmVxdWVzdD4gY3JlYXRlQ3VybFJlcXVlc3QoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlcXVlc3RTdGF0dXMgPSBSZXF1ZXN0U3RhdHVzOjpOZXdS
ZXF1ZXN0KTsKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShXZWJDb3JlOjpDdXJsUmVxdWVzdCYs
IHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKICAgICB2
b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3Jl
OjpDdXJsUmVzcG9uc2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZl
cihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIG92
ZXJyaWRlOworICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6Q3VybFJlcXVl
c3QmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpO
ZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhF
cnJvcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiwgV2Vi
Q29yZTo6Q2VydGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCmluZGV4
IGY1ZGI3MDZjNDQ1ODAyMTA4N2Y5NTk5NjY5ZGZhN2Q5ZjgzNzk3OGMuLjMzZDQzYjcyMjM4ZDIw
M2U3ZWRlYzk0MTRjYWY5ZmRhOGY0MDUyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCkBAIC01NSw3ICs1
NSw3IEBAIHN0cnVjdCBQYWNrZXRPcHRpb25zOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBSZWdpc3RyYWJsZURvbWFpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQzYzBm
ZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxLi5mNjc2Njg4NTdmZjVjMmU1MzJkNWI0YjUxNGYy
ZTJjZjQ5Zjc2MmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmNwcApAQCAtNTEsOSArNTEsOSBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZl
ckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIElQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYg
KGRhdGEuc2l6ZSgpKQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBidWZmZXIgPSBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4geyBX
VEZNb3ZlKGJ1ZmZlcikgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oCmluZGV4IDdlMGQ4ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4
MzJlOWYuLmJlNjhkOWUyNmEwNDgwN2E1NjBhNjcyOTg5Mjc1MjYzZmM3YzFiMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTIzLDcgKzIz
LDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBFbmNv
ZGVzIGEgU2hhcmVkQnVmZmVyIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBjb3B5IG9mIHRoZSBkZWNv
ZGVkIGRhdGEgaW4gYSBuZXcgU2hhcmVkQnVmZmVyLgorLy8gRW5jb2RlcyBhIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIgdGhhdCBpcyByZWNlaXZlZCBhcyBhIGNvcHkgb2YgdGhlIGRlY29kZWQgZGF0
YSBpbiBhIG5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgogLy8gVG8gYXZvaWQgY29weWluZyBm
cm9tIHRoZSBEZWNvZGVyLCB1c2UgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB0byByZWNlaXZl
IGEgRGF0YVJlZmVyZW5jZSBpbnN0ZWFkLgogCiAjcHJhZ21hIG9uY2UKQEAgLTM5LDE1ICszOSwx
MiBAQCBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5IHsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJD
b3B5KCkgPSBkZWZhdWx0OwogCi0gICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZl
cikpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KLSAgICBT
aGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAg
ICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgewot
ICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlcik7Ci0gICAgfQorICAgIFNoYXJlZEJ1ZmZl
ckNvcHkoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
ICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+KCkpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNvcHko
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6
IG1fYnVmZmVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSkgeyB9CisgICAgU2hhcmVkQnVmZmVy
Q29weShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCisgICAg
ICAgIDogbV9idWZmZXIoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpIHsgfQogCiAgICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAg
ICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKaW5kZXggZDNkMGVjNWU5Nzg1NTk5YjYzNGE4
NGM2YzQ0NzFiNTJjZDIyMTNmMS4uNjdlYzhlNWU5MmJkMDI0MTE1ZGIwZDQwODBhMjRmZTczNTcw
ZDNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UuaApAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIEVuY29kZXMgYSBTaGFyZWRCdWZmZXIgb3IgRGF0
YVJlZmVyZW5jZSB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgRGF0YVJlZmVyZW5jZSB0byB0aGUgZGVj
b2RlZCBkYXRhLgorLy8gRW5jb2RlcyBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgb3IgRGF0YVJl
ZmVyZW5jZSB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgRGF0YVJlZmVyZW5jZSB0byB0aGUgZGVjb2Rl
ZCBkYXRhLgogCiAjcHJhZ21hIG9uY2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1v
cnkuY3BwCmluZGV4IGQyNDA2ZWUyOTA1MzExZjY5Yjc1ODQyMWU3N2EzZTY2Y2JhMjdiNjUuLmMw
MjZmNTQ5NTY5YjJiZTAwNzhhZTMyNWQwNTM5ZTA3MWFmMTEwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWZQdHI8U2hhcmVkTWVtb3J5PiBT
aGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQ
dHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUxLDcgKzUxLDcgQEAgUmVmUHRyPFNoYXJlZE1lbW9y
eT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
UmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90
IGRhdGFTaXplKSBjb25zdAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXplKCkpOwotICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfV0gKCkgLT4gY29uc3QgdWludDhfdCogewogICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihwcm90ZWN0ZWRUaGlzLT5kYXRhKCkpOwogICAg
ICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnku
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggZTM3MWJjZDcz
MDJjZjg1ZWJhYjJiNWE4NWU3YmU0OWRjZjU2NTJhYi4uMWI0ZmRmYWY2ODM4OWRjZTcyOGZmMzRl
NWU1ZjAxMmUyNDNmYTJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBA
IC00NSw2ICs0NSw3IEBAIGNsYXNzIEVuY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKICNp
ZiBPUyhEQVJXSU4pCkBAIC0xMjAsNyArMTIxLDcgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6
IENoYW5nZSB0aGVzZSBmYWN0b3J5IGZ1bmN0aW9ucyB0byByZXR1cm4gUmVmPFNoYXJlZE1lbW9y
eT4gYW5kIGNyYXNoIG9uIGZhaWx1cmUuCiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+
IGFsbG9jYXRlKHNpemVfdCk7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGNvcHlC
dWZmZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IGNvcHlCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpOwogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtYXAoY29uc3QgSGFuZGxl
JiwgUHJvdGVjdGlvbik7CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgc3RhdGlj
IFJlZlB0cjxTaGFyZWRNZW1vcnk+IHdyYXBNYXAodm9pZCosIHNpemVfdCwgaW50IGZpbGVEZXNj
cmlwdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVS
ZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5t
bQppbmRleCBjYTBjMjRiMjc3MzU0NzY3NmUzNDgwMWM3OWExZDU2NWJmOTVmZTVkLi4xMTBlMGFk
ZGU1NThhOWQ5MzM4YjI0NTA2ZTg5MTYzYzkzNjk3MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2
b2lkIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2
b2lkKiBkYXRhKQogCiBSZWY8QVBJOjpEYXRhPiBXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEoKQog
ewotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5k
YXRhKCkuY3JlYXRlQ0ZEYXRhKCk7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0g
bV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEo
KTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IENGUmVsZWFzZSBpbiByZWxlYXNlV2ViQXJjaGl2ZVJl
c291cmNlRGF0YS4KICAgICBDRlJldGFpbihjZkRhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpp
bmRleCA4N2Y0ZWIxZWJhMjg3MmUwY2IwYWI5NTkxNmFmZWRlMjlmY2JhMjQ0Li4zYzFiNTdkNWFh
MjZlYzcyZTYwYjVkNzhhMTFlOWZkODUyY2ZmZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtNTY0
LDEzICs1NjQsMTIgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhPiBB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY28KICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGlmICgqaW5jbHVkZXNDcmVhdGlvbkRhdGEpIHsKLSAgICAgICAg
c3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4gZm9udEZhY2VEYXRhOwogICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAgICAg
ICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgICAgIC8vIFVwb24gcmVjZWlwdCwgY29weSB0aGUgZGF0YSBmb3Igc2VjdXJpdHksIHNv
IHRoZSBzZW5kZXIgY2FuJ3Qgc2NyaWJibGUgb3ZlciBpdCB3aGlsZSB3ZSdyZSB1c2luZyBpdC4K
LSAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5kYXRhKCksIGZvbnRGYWNlRGF0YS52YWx1ZSgp
LT5zaXplKCkpOworICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gZm9udEZhY2VEYXRh
LnZhbHVlKCktPm1ha2VDb250aWd1b3VzKCk7CiAKICAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGRlY29kZXIgPj4gaXRlbUluQ29sbGVjdGlv
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCBjNjk2
MWM3MTQ0MDJiZjM3N2FlOTEwZmJiNmNjYWE1MmQzYjg0MTI4Li42ZmEwMmE3YmMzZWU1NGFlNmQz
MjUzODEwZDc4ZGVjMzE2NTM1M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6Okhh
bmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAKIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIo
KQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFT
ZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJl
dHVybiBzZWxmLT5kYXRhKCk7IH0sCiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7
IHJldHVybiBzZWxmLT5zaXplKCk7IH0KICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDY0OTgyYmM0ODEwMmE0YWRiMjBhN2U2
MGUyMWJkNDkyZDY1MzM3NGMuLjg0M2ZkNDczMTNhZWVjYTI5OTMwNjEyZmM1ZWM1Nzg3NTU0MzQy
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cApAQCAtMTY0LDcgKzE2NCw3IEBAIERFRklORV9TSU1QTEVfQVJHVU1FTlRfQ09ERVJfRk9SX1NP
VVJDRShEaXNwbGF5TGlzdDo6U2V0SW5saW5lU3Ryb2tlQ29sb3IpCiAKICN1bmRlZiBERUZJTkVf
U0lNUExFX0FSR1VNRU5UX0NPREVSX0ZPUl9TT1VSQ0UKIAotc3RhdGljIHZvaWQgZW5jb2RlU2hh
cmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQor
c3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICBib29sIGlzTnVsbCA9ICFidWZm
ZXI7CiAgICAgZW5jb2RlciA8PCBpc051bGw7CkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIHZv
aWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciogYnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VU
UykKLSAgICAvLyBEbyBub3QgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIFNoYXJlZEJ1ZmZlciBlbmNv
ZGluZyBpbiBVbml4LCBiZWNhdXNlIGl0J3MgZWFzeSB0byByZWFjaCB0aGUKKyAgICAvLyBEbyBu
b3QgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgZW5jb2Rpbmcg
aW4gVW5peCwgYmVjYXVzZSBpdCdzIGVhc3kgdG8gcmVhY2ggdGhlCiAgICAgLy8gbWF4aW11bSBu
dW1iZXIgb2YgZmlsZSBkZXNjcmlwdG9ycyBvcGVuIHBlciBwcm9jZXNzIHdoZW4gc2VuZGluZyBs
YXJnZSBkYXRhIGluIHNtYWxsIGNodW5rcwogICAgIC8vIG92ZXIgdGhlIElQQy4gQ29ubmVjdGlv
blVuaXguY3BwIGFscmVhZHkgdXNlcyBzaGFyZWQgbWVtb3J5IHRvIHNlbmQgYW55IElQQyBtZXNz
YWdlIHRoYXQgaXMKICAgICAvLyB0b28gbGFyZ2UuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NTcxLgpAQCAtMjY0LDcgKzI2NCw3IEBAIHN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2Rlciwg
VmVjdG9yPFN0cmluCiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAg
ICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgZGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAg
ICAgICAgZGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTE1NTAsMTAgKzE1NTAsMTAgQEAgdm9pZCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpFbnRyeT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdAogICAgIGlmIChoYXNT
dHJpbmcpCiAgICAgICAgIGVuY29kZXIgPDwgc3RkOjpnZXQ8U3RyaW5nPihwbGF0Zm9ybURhdGEp
OwogCi0gICAgYm9vbCBoYXNCdWZmZXIgPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFy
ZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpOworICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSk7
CiAgICAgZW5jb2RlciA8PCBoYXNCdWZmZXI7CiAgICAgaWYgKGhhc0J1ZmZlcikKLSAgICAgICAg
ZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Pihw
bGF0Zm9ybURhdGEpLnB0cigpKTsKKyAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIs
IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKS5wdHIo
KSk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5JiBk
YXRhKQpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNo
bWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgcmV0dXJuIHt7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH19
OworICAgIHJldHVybiB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSks
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkg
fSB9OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTMwMTAs
NiArMzAxMCwzNCBAQCBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1
ZT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkUAogfQogI2VuZGlmCiAKK3ZvaWQg
QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIs
IGJ1ZmZlci5nZXQoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZm
ZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlcjsK
K30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5j
b2RlciwgYnVmZmVyLnB0cigpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZl
cikgfHwgIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVy
biBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwogdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgZW5jb2RlU2hh
cmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7CkBAIC0zMTA3LDcgKzMxMzUsNyBAQCB2
b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZQogewogICAgIGVuY29kZXIgPDwgbWVzc2FnZS5maXJzdDsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5zZWNvbmQu
Y29weVJlZigpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlRGF0
YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlSZWYoKTsKICAgICBlbmNvZGVyIDw8IG1lc3NhZ2VEYXRh
OwogfQogCkBAIC0zMTE3LDcgKzMxNDUsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSQogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikg
fHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAyNWYwMWMwMjkyYTAxOWYw
Njc2MjRiYmI1NTM0MDJkZjFhMzNjNWI2Li42ZmFjMmFhMWVhNzg0NmZmNmJmODkwMjFmMGY1MmU5
YWE3YWUwM2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaApAQCAtMTE0LDYgKzExNCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwog
Y2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDb2xvcjsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBDdWJpY0JlemllclRp
bWluZ0Z1bmN0aW9uOwogY2xhc3MgQ3Vyc29yOwpAQCAtMTM4LDcgKzEzOSw3IEBAIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRCdWZm
ZXI7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTcHJpbmdUaW1pbmdGdW5jdGlvbjsKIGNsYXNz
IFN0ZXBzVGltaW5nRnVuY3Rpb247CiBjbGFzcyBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3Ry
YWludHM7CkBAIC03NTEsNiArNzUyLDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiB7CiB9OwogI2VuZGlm
CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBj
b25zdCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lk
IGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRl
c3RSZXN1bHREYXRhLmNwcAppbmRleCBjZjJlNGQ1ZjkzZmQyZDk0NmJhYmZmOTNlZWEzZTllODYw
YWViYmY0Li5iNjA3YWNlODM4ZTA0YmNlMWE2YWVlNGRhNTY1NTllMDk2OTgzOThlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCkBAIC04NSw3ICs4
NSw3IEBAIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0YShjb25zdCBX
ZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoaXRUZXN0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChJbWFnZSogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKTsKKyAgICAgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7CiAgICAgICAgIGlm
IChidWZmZXIpIHsKICAgICAgICAgICAgIGltYWdlU2hhcmVkTWVtb3J5ID0gV2ViS2l0OjpTaGFy
ZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CiAgICAgICAgICAgICBpbWFnZVNpemUgPSBi
dWZmZXItPnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1
bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2Rl
cnNHdGsuY3BwCmluZGV4IDI1YTMwN2YzODI5ZTkyNzhiNWVhNzhmZjgyOTY3ODgzMzc3YTMxYmEu
LjY3MTc1OGEyODBhNWU0NDBhYTA2MGE3OWNmMWYwZjEyNmRiN2JlMjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtOTUsNyArOTUsNyBA
QCB2b2lkIEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBTZWxlY3Rpb25EYXRhJgogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSA9IHNlbGVj
dGlvbi5oYXNDdXN0b21EYXRhKCk7CiAgICAgZW5jb2RlciA8PCBoYXNDdXN0b21EYXRhOwogICAg
IGlmIChoYXNDdXN0b21EYXRhKQotICAgICAgICBlbmNvZGVyIDw8IFJlZlB0cjxTaGFyZWRCdWZm
ZXI+KHNlbGVjdGlvbi5jdXN0b21EYXRhKCkpOworICAgICAgICBlbmNvZGVyIDw8IFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPihzZWxlY3Rpb24uY3VzdG9tRGF0YSgpKTsKIAogICAgIGJv
b2wgY2FuU21hcnRSZXBsYWNlID0gc2VsZWN0aW9uLmNhblNtYXJ0UmVwbGFjZSgpOwogICAgIGVu
Y29kZXIgPDwgY2FuU21hcnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IGIzNGVjNzM2MzYzYzRmMWQyYjBlNzYwYWQzZjRhOWQ1
YmFjMWEzNGUuLjE0OTBjNTExYmRjMzhiZDhhYjRhNjk1YWVjZjMwNmQ5NWZhYTM5NjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTk4LDcg
Kzk4LDcgQEAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gQXR0YWNobWVudDo6ZmlsZVNpemVGb3JE
aXNwbGF5KCkgY29uc3QKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1SZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25z
dAorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVu
Y2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBhZmE5MjljZjA5
M2QyMmVjNzZhZDg2ZmRhMDNiNTAxYmJmZDI5ZGMzLi5mZTUwZTUzOGI4ZWJiMzUxYTQ4MzZkMWRk
ODkzZDE0N2E1NmE4NzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmgKQEAgLTM5LDYgKzM5LDcgQEAgT0JKQ19DTEFTUyBOU1N0cmluZzsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04Miw3ICs4Myw3IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3Q7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0Owog
ICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplRm9yRGlzcGxheSgpIGNvbnN0Owog
CiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xvc2luZ0ltYWdlKSB7
IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaAppbmRl
eCA4ODIwNGYwMDEzNjc4NjA0NWE1YjMyYTczYzY3OGEwYmE4NTA2ODFjLi44ZGI3MDM4YzFjOTAx
NmRhZGZiZjRiNWVhMDk5OGM0ODc5MWY1NzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaApAQCAtMzAsNyArMzAsNyBA
QAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQog
CiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
TmF2aWdhdGlvbkNsaWVudC5oCmluZGV4IDU2MjM0MDE0NTlkYTVmZTMwZjQ5MWE0MWZiMzQ3YTY3
NTcyMDJjNDAuLjExMWYwOTI2M2Y4MjIzODI5YTVhZDI2NDQzNGJhNDIwZjE5OGRkMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaApA
QCAtNDcsNyArNDcsNyBAQCBzdHJ1Y3QgQ29udGVudFJ1bGVMaXN0UmVzdWx0czsKIGNsYXNzIFJl
c291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiB9CiAKQEAgLTExOSw3ICsxMTksNyBAQCBwdWJs
aWM6CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5h
bWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpIHsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFJlZjxOYXZpZ2F0aW9uQWN0aW9uPiYm
LCBSZWY8V2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIE9i
amVjdCopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJ
QXR0YWNobWVudENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQ
SUF0dGFjaG1lbnRDb2NvYS5tbQppbmRleCBjZjQ2MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMwNzkx
ZThkNGUxNTNjLi5kZmVmM2UwNzBmOTYxNjMwNDk3MTQ0ZGFmM2YzMDBjYjRjYTUxOTVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubW0KQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBB
dHRhY2htZW50OjpmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdAogICAgIHJldHVybiBbZmlsZVdy
YXBwZXIgcmVndWxhckZpbGVDb250ZW50c10ubGVuZ3RoOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAorUmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2lu
Z0ltYWdlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2hhc0VuY2xvc2luZ0ltYWdlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCmluZGV4IGM0ZWU1MjUwNzY0MmRiNGU1NGNmYWRmN2ZlZTNiZjFiN2Mw
ZDNkM2MuLjAxYzgxMDI3OGVmNjM1OTE3MmY4ZTY1YjUyY2ZjYjBiNTIxYjdkODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTU5Niw3
ICsxNTk2LDcgQEAgLSAodm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFw
cEhpZ2hsaWdodCYpaGlnaGxpZ2h0CiAgICAgaWYgKGhpZ2hsaWdodC50ZXh0KQogICAgICAgICB0
ZXh0ID0gaGlnaGxpZ2h0LnRleHQudmFsdWUoKTsKIAotICAgIGF1dG8gd2tIaWdobGlnaHQgPSBh
ZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGln
aHQuaGlnaGxpZ2h0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7
CisgICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2Nd
IGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAogICAgIGlmIChb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzdG9yZUFwcEhp
Z2hsaWdodDppbk5ld0dyb3VwOnJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAgICAgICAgIFtk
ZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIHN0b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0LmdldCgp
IGluTmV3R3JvdXA6aGlnaGxpZ2h0LmlzTmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRlTmV3R3Jv
dXBGb3JIaWdobGlnaHQ6OlllcyByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdodC5yZXF1
ZXN0T3JpZ2luYXRlZEluQXBwID09IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVk
SW5BcHA6Olllc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5oCmluZGV4IGFjNGEwZjQzNzAxNTJlZDU3MmI1MDkxZGZhNTFiYWViYWI4N2Y0ZTku
LmM4MDI5YzE0MGE2ZGQxNGIxOTY0OTIyNWI4NzgzMGVlYzEzNDAwZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCkBAIC0xMzMsNyArMTMz
LDcgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgICAgICB2b2lkIGRpZFN0
YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcm
IGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSBvdmVycmlkZTsKLSAgICAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRl
eCAzODU1ODgyYzg3ZGM5ZWQzMWMxZWYwYmFiNjE2YjFlNjQ1OTQ0ZWVmLi44ZDNhODU2NDYyZWFl
Zjc0MWQ4YzI5ZTI1OTJmZDU3MzY2ZjU5OWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0xMjIwLDcgKzEyMjAsNyBAQCB2b2lk
IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcgogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVs
ZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmln
YXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWVXaXRoRmlsZU5hbWU6ZmlsZU5hbWUgdXRpOnV0aV07CiB9CiAKLXZvaWQgTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTIzMiw3
ICsxMjMyLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZp
bmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkYKICAgICBpZiAoIW5hdmlnYXRpb25E
ZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmln
YXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3
Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKKyAgICBbc3Rh
dGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxl
Z2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5p
c2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIubWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXgg
ODAyZmZhYTZkNmVkYmVhMmU5NzI3NzRlMjY5NjViMmRiYjJhNzM1ZS4uM2VhMjE1NjAzNzg5ZTFi
MGIyNGU1YjU1OTlkMzc1MTk3ZjU5NTJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTMwNiw3ICszMDYsNyBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZEF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucygp
CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJlZ2lzdHJh
dGlvbkRhdGEgPSBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVnaXN0
cmF0aW9ucy5nZXQoKSk7CiAgICAgICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyh7IHJlZ2lzdHJhdGlv
bkRhdGEgfSksIDApOwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCmluZGV4IDNmNmRkMWYyNDJlN2ExMTVlY2Y3OTgzOTBm
MzRiNjM1YzZlOGQ2ZjkuLmY1ODkxMjQxNzAyZGFhNDIwY2M0ZTZlMjQ2MjhhMWNkZTg5MDdkMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaApAQCAtNTA2
LDcgKzUwNiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6
OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlKTsKICAgICB2
b2lkIHNldEZpbGVBbmRVUkxUeXBlcyhOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRl
bnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVV
UkwsIE5TUGFzdGVib2FyZCAqKTsKLSAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKFdl
YkNvcmU6OkltYWdlKiwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBO
U1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFt
ZSwgTlNTdHJpbmcgKnBhc3RlYm9hcmRPcmlnaW4pOworICAgIHZvaWQgc2V0UHJvbWlzZWREYXRh
Rm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpl
eHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2li
bGVVUkwsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5T
U3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKnBhc3RlYm9hcmRPcmlnaW4pOwogICAg
IHZvaWQgcGFzdGVib2FyZENoYW5nZWRPd25lcihOU1Bhc3RlYm9hcmQgKik7CiAgICAgdm9pZCBw
cm92aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICosIE5TU3RyaW5nICp0eXBlKTsK
ICAgICBOU0FycmF5ICpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5T
VVJMICpkcm9wRGVzdGluYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQppbmRleCAzZDllODc3YjBjYjc1NjU0YjYzOTE2Mzk1NTdmNTJiNjAzOTJj
YWM5Li42MjM2N2RjNWFkMWZlMTIyMWY3YjA5OWU5YmI0NDU0ZGIzN2E1OGVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtNDQ0OSw3ICs0NDQ5
LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0RmlsZUFuZFVSTFR5cGVzKE5TU3RyaW5nICpmaWxl
bmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlMKICAgICBtX3Byb21pc2VkVVJMID0gdXJsOwog
fQogCi12b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJ
bWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNT
dHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJsZVVSTCwgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyKiBhcmNoaXZlQnVmZmVyLCBOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUs
IE5TU3RyaW5nICpvcmlnaW5JZGVudGlmaWVyKQordm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlz
ZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW5hbWUs
IE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNT
dHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGFyY2hp
dmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKm9yaWdpbklkZW50
aWZpZXIpCiB7CiAgICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBw
YXN0ZWJvYXJkV2l0aE5hbWU6cGFzdGVib2FyZE5hbWVdOwogICAgIFJldGFpblB0cjxOU011dGFi
bGVBcnJheT4gdHlwZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRo
T2JqZWN0czpXZWJDb3JlOjpsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpLCBuaWxd
KTsKQEAgLTQ0NzAsNyArNDQ3MCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0
YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuCiAgICAgc2V0
RmlsZUFuZFVSTFR5cGVzKGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVV
UkwsIHBhc3RlYm9hcmQpOwogCiAgICAgaWYgKGFyY2hpdmVCdWZmZXIpIHsKLSAgICAgICAgYXV0
byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBu
c0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsK
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIFtwYXN0ZWJvYXJk
IHNldERhdGE6bnNEYXRhLmdldCgpIGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlw
ZVdlYkFyY2hpdmVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECkBAIC00NTAx
LDcgKzQ1MDEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQo
TlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU1N0cmluZyAqdAogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoW3R5cGUgaXNFcXVhbDptX3Byb21pc2VkSW1hZ2UtPnV0aSgpXSAmJiBtX3Byb21p
c2VkSW1hZ2UtPmRhdGEoKSkgewotICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3By
b21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRvIHBs
YXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6KF9fYnJpZGdl
IE5TRGF0YSAqKXBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnR5cGVdOwogICAgIH0KIApAQCAt
NDU1NCw3ICs0NTU0LDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZp
bGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBkYXRhOwogCiAgICAgaWYgKG1fcHJvbWlzZWRJbWFnZSkgewotICAgICAgICBkYXRh
ID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBkYXRh
ID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpOwogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGlu
aXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhLmdldCgpXSk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdpdGhVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6bV9wcm9taXNlZFVSTF0gb3B0aW9uczpOU0ZpbGVXcmFwcGVy
UmVhZGluZ0ltbWVkaWF0ZSBlcnJvcjpuaWxdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAppbmRleCBjNDg1YzdmYzMxM2VhMDgzM2ZjNjA2MjY3MTY5ZDY5MmE4MjQwOTI4Li5iNDYy
ZDhkYjVjYzYyMDM4NmU3NjgzZGIyNDgzNmFiM2NlNjRmZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCkBAIC0zMjgsNyArMzI4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNp
ZiBVU0UoQVBQS0lUKQotICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVu
c2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVm
ZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQ
dHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25z
dCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVhbCBX
ZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvRGV2aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBi
MDQ1MzlkNjAwNWQ1NDNiYzYyZmI4OTA1OTk2NDY4OTMyYTMzZTkyLi42ZTQ5YWNiOGE3YTZiN2Uz
Yjg2NGE4MWJhNGJkN2NkNmY4M2VjZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtMjU5LDcgKzI1OSw3IEBAIGNsYXNzIEludFNpemU7CiBjbGFzcyBQcm90ZWN0
aW9uU3BhY2U7CiBjbGFzcyBSdW5Mb29wT2JzZXJ2ZXI7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDsKIGNsYXNzIFRleHRJbmRpY2F0b3I7CiBjbGFzcyBW
YWxpZGF0aW9uQnViYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcAppbmRleCBkZjU5ZDU2ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQxLi4x
OTk3ZWFlMjBhYzIyY2EzYWU4MDA0YzcwNGZhMjJkYTYwOWUwMDlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtNTEsNiArNTEsNyBAQCBXZWJV
UkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImIGhhbmRs
ZXIsIFdlYlBhZ2VQcm94eSYgcAogICAgICwgbV9yZXF1ZXN0KFdURk1vdmUocGFyYW1ldGVycy5y
ZXF1ZXN0KSkKICAgICAsIG1fZnJhbWVJbmZvKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92
ZShwYXJhbWV0ZXJzLmZyYW1lSW5mbyksICZwYWdlKSkKICAgICAsIG1fc3luY0NvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoc3luY0NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAsIG1fc3luY0RhdGEo
bWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiB9CkBAIC0xNjgsNyArMTY5LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVU
YXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
IC0+IEUKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0KIAotYXV0byBXZWJVUkxT
Y2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4g
RXhjZXB0aW9uVHlwZQorYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKIHsKICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xODcsMTAgKzE4OCw3IEBAIGF1dG8g
V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpIC0+IEV4Y2VwdGlvblR5CiAgICAgbV9kYXRhU2VudCA9IHRydWU7CiAKICAgICBpZiAoaXNT
eW5jKCkpIHsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBtX3N5bmNEYXRh
LT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9z
eW5jRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdU
Rk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAg
IH0KIApAQCAtMjE3LDEyICsyMTUsOSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBs
ZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgbV9j
b21wbGV0ZWQgPSB0cnVlOwogICAgIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBWZWN0
b3I8dWludDhfdD4gZGF0YTsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBk
YXRhID0geyBtX3N5bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwotCisgICAg
ICAgIHNpemVfdCBzaXplID0gbV9zeW5jRGF0YS0+c2l6ZSgpOworICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YSA9IHsgbV9zeW5jRGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIHNpemUgfTsKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9zeW5jUmVzcG9u
c2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKLSAgICAgICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7
CiAgICAgfQogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hl
bWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVz
b3VyY2VMb2FkZXJJRCwgZXJyb3IpLCBtX3dlYlBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggNmE4NTYwMjFiMTI5OTI0NmM3MDAwOTNkZDBh
NDdmMmMxMzA4NTI2Ny4uNzk5NDJmOWIyMGEyNjYwY2E0YTdkY2Q0NTAxOGQxNmU0M2I2NjZmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgog
CiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEZyYW1lSW5mbzsKQEAgLTQzLDcgKzQ0LDggQEAgY2xh
c3MgRnJhbWVJbmZvOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIH0KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC04NCw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25U
eXBlIHdpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFBlcmZvcm1SZWRpcmVjdGlv
bihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
KTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVE
YXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBFeGNlcHRp
b25UeXBlIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAg
IHZvaWQgc3RvcCgpOwpAQCAtMTE1LDcgKzExNyw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5jTG9h
ZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcj4gbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJlY3RD
b21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvQ2xpcGJvYXJkLmgKaW5kZXggNzg2NmNkYjE3NzQ2MDA3YWIwYTdhMTdjNTViODdj
N2YxNjRjMmJhZS4uNzI3OWY4NDRjYzJiYmQyYjAxN2ZlMGYwOTdkZTAxODcwYTlhODUyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaApAQCAtMzYsNyArMzYsNyBAQCB0
eXBlZGVmIHN0cnVjdCBfR3RrQ2xpcGJvYXJkIEd0a0NsaXBib2FyZDsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTUs
NyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb3JtYXRzKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwogICAgIHZvaWQgcmVhZFRleHQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwogICAgIHZvaWQgcmVhZEZpbGVQYXRocyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2b2lkIHJlYWRCdWZm
ZXIoY29uc3QgY2hhciosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJik+JiYpOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBjaGFyKiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+
JiYpOwogICAgIHZvaWQgd3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKTsKICAgICB2b2lk
IGNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlw
Ym9hcmRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGsz
LmNwcAppbmRleCBjMmJmNTE4M2IzMGYxMGU5ZWI3ODEzY2RhZGEyMjNlOTE4OWM3NDU5Li41OTY2
ZDU1NzRjMjgyZjUzMTY5NDA5NjA4Mjk2MGFlMzM5Y2ExMTBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCkBAIC0xMjYsMTUgKzEyNiwxNSBAQCB2
b2lkIENsaXBib2FyZDo6cmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxTdHJpbmc+JiYpPiYmIGNvbXBsZQogc3RydWN0IFJlYWRCdWZmZXJBc3luY0RhdGEgewogICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGV4cGxpY2l0IFJlYWRCdWZm
ZXJBc3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKT4mJiBoYW5kbGVyKQorICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJBc3luY0RhdGEoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jik+JiYgaGFuZGxlcikKICAgICAgICAgOiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRs
ZXIpKQogICAgIHsKICAgICB9CiAKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKKyAgICBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4gY29t
cGxldGlvbkhhbmRsZXI7CiB9OwogCi12b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25zdCBj
aGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZl
cihjb25zdCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGd0a19jbGlwYm9hcmRfcmVxdWVzdF9jb250ZW50cyhtX2NsaXBib2FyZCwgZ2RrX2F0b21faW50
ZXJuKGZvcm1hdCwgVFJVRSksIFtdKEd0a0NsaXBib2FyZCosIEd0a1NlbGVjdGlvbkRhdGEqIHNl
bGVjdGlvbiwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
YWRCdWZmZXJBc3luY0RhdGE+IGRhdGEoc3RhdGljX2Nhc3Q8UmVhZEJ1ZmZlckFzeW5jRGF0YSo+
KHVzZXJEYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xp
cGJvYXJkR3RrNC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3Rr
NC5jcHAKaW5kZXggMDdhYmI3MTMxOTg4NTNiNzg3YzYzMjRiZDQ4MGIxZTA4OGEyYTNkMy4uNWI4
MWZhOGYyOWQzZjdjZjFjM2YwOWQxZmMzYzg4NzM0ZGM1MWEwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcApAQCAtMTIwLDE1ICsxMjAsMTUgQEAg
dm9pZCBDbGlwYm9hcmQ6OnJlYWRGaWxlUGF0aHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiYmKT4mJiBjb21wbGUKIHN0cnVjdCBSZWFkQnVmZmVyQXN5bmNEYXRhIHsKICAg
ICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAKLSAgICBleHBsaWNpdCBSZWFkQnVm
ZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJik+JiYgaGFuZGxlcikKKyAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRhKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpPiYmIGhhbmRsZXIpCiAgICAgICAgIDogY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5k
bGVyKSkKICAgICB7CiAgICAgfQogCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+IGNv
bXBsZXRpb25IYW5kbGVyOwogfTsKIAotdm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3Qg
Y2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZm
ZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBjb25zdCBjaGFyKiBtaW1lVHlwZXNbXSA9IHsgZm9ybWF0LCBudWxscHRyIH07CiAgICAgZ2Rr
X2NsaXBib2FyZF9yZWFkX2FzeW5jKG1fY2xpcGJvYXJkLCBtaW1lVHlwZXMsIEdfUFJJT1JJVFlf
REVGQVVMVCwgbnVsbHB0ciwgW10oR09iamVjdCogY2xpcGJvYXJkLCBHQXN5bmNSZXN1bHQqIHJl
c3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggZDIyMzhmZGM5ZDE2Zjc3ZjhjM2QzMDJjYTk5
NzZmZTgzZjFiM2YzNy4uYWI4N2MyYTdlOGMzNTdhNjViM2NmZTYwNzkzOGZkZmVjOGE2NTJiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgK
QEAgLTEwMCw4ICsxMDAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZXhlY3V0ZVVuZG9SZWRvKFVu
ZG9PclJlZG8pIG92ZXJyaWRlOwogICAgIGJvb2wgZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0
b3IoY29uc3QgU3RyaW5nJiBzZWxlY3Rvcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdGFydERyYWco
Y29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0mLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYg
aW1hZ2UpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbWFn
ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24s
IGNvbnN0IFN0cmluZyYgdGl0bGUsCi0gICAgICAgIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYXJjaGl2
ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSBvdmVycmlkZTsKKyAgICB2
b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5n
JiB0aXRsZSwKKyAgICAgICAgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJs
ZVVSTCwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lk
IHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0U2VjdXJl
SW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5SW5wdXRDb250ZXh0QWJvdXRE
aXNjYXJkZWRDb21wb3NpdGlvbigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IGE0MTEyMTM1ZjJlZjE5MDE1YTUy
ZjFlMWIwM2FlMzBhMWYyMjNkMmEuLmMzNjNlOTU1ZTg3OWMwZTE4NmI0MTUwOTA5MTMzNjVjMjBm
ZTkwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMubW0KQEAgLTQwMCw3ICs0MDAsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzdGFydERy
YWcoY29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0mIGl0ZW0sIGNvbnN0IFNoYXJlYWJsZUJpdAogICAg
IG1faW1wbC0+c3RhcnREcmFnKGl0ZW0sIGltYWdlKTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1w
bDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
Y29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYg
YXJjaGl2ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQordm9pZCBQYWdl
Q2xpZW50SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcm
IG9yaWdpbklkZW50aWZpZXIpCiB7CiAgICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVh
dGUoKTsKICAgICBpbWFnZS0+c2V0RGF0YShXVEZNb3ZlKGltYWdlQnVmZmVyKSwgdHJ1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBl
MDNlMDgwYWVlMDgzODBiNDZmZmU4OWRkOGU2MWI2NmI1OThkYjQ2Li4wMWQ4NDBhMmE2M2VhYzc5
MWZiZDg0ZmJlNjM3YjViMjhjZjYxMzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUwogICAgICAgICByZXR1cm47CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHNoYXJl
ZE1lbW9yeUltYWdlLT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1hZ2VIYW5kbGUuZGF0YVNpemUpOwog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKICAgICBpZiAoIWFyY2hpdmVIYW5k
bGUuaGFuZGxlLmlzTnVsbCgpKSB7CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QXJjaGl2ZSA9
IFNoYXJlZE1lbW9yeTo6bWFwKGFyY2hpdmVIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnlBcmNoaXZlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCmlu
ZGV4IGZhOTQwMjVlZDc0NzMwZDI4ZTcxNjQ2Mjg1ZjllNWJhNjUzYjhmMTIuLmMyOGZlNjVmMGNm
MTY0Mzk5ODE4YWNhMzJmOTgxY2M3NzhmMWU5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBS
ZW1vdGVDRE06OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1T
ZXNzaW9uVHlwZSYsIGNvbnMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVtb3RlQ0RN
OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSkgY29uc3QKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpIGNv
bnN0CiB7CiAgICAgLy8gVGhpcyBjaGVjayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBpbnNpZGUgUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlcXVlc3RMaWNlbnNlKCkuCiAgICAgcmV0dXJu
IHRydWU7CkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBSZW1vdGVDRE06OmxvYWRBbmRJbml0aWFs
aXplKCkKICAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpMb2FkQW5kSW5pdGlhbGl6ZSgpLCBtX2lk
ZW50aWZpZXIpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBSZW1vdGVDRE06OnNhbml0aXpl
UmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjaGVj
ayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBpbnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHk6OnVwZGF0ZUxpY2Vuc2UoKS4KICAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKaW5kZXggMGFkZGY4
MzM1M2I2ZWExYjJlOGIwMmM2YjdlZTNkYWY0NjhjZDM4My4uOGM0NTRlYjgzZTU5OTRhOGU0ZDU5
MmQ1MWRmOTFmZjliNTIzY2JlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETS5oCkBAIC00OCwxMyArNDgsMTMgQEAgcHJpdmF0ZToKICAgICBib29s
IHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRo
UmVzdHJpY3Rpb25zKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBj
b25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1
cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1TZXNz
aW9uVHlwZSYsIGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25z
dCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9y
dHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50IGRp
c3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3Qg
ZmluYWw7CiAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWly
ZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdl
YkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZGlzdGluY3Rp
dmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBXZWJDb3Jl
OjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPFdl
YkNvcmU6OkNETUluc3RhbmNlPiBjcmVhdGVJbnN0YW5jZSgpIGZpbmFsOwogICAgIHZvaWQgbG9h
ZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZp
bmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBm
aW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3Qg
U3RyaW5nJikgY29uc3QgZmluYWw7CiAKICAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVk
SW5pdERhdGFUeXBlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5zdXBw
b3J0ZWRJbml0RGF0YVR5cGVzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCmluZGV4IGI1ZGVhMjFlOTk1YTcz
N2YwMzZmNjQ1MzhjMWZiM2VjYjVlNmJiNTUuLmExM2U1MTQ2MGY2YmI5ZjgwZWYzZDFhODQyZWZj
MGI5ZjQ0NTkwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgUmVt
b3RlQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3Jl
OjpDRE1LZXlTeXN0ZW1DCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNl
UHJveHk6OkluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBkaXN0aW5j
dGl2ZUlkZW50aWZpZXJzLCBwZXJzaXN0ZW50U3RhdGUpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9p
ZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlm
aWNhdGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0Nh
bGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0
aWZpY2F0ZShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0
ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsK
ICAgICAgICAgY2FsbGJhY2soRmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaAppbmRleCAxMDZiYTNiMTE2MWM4
ZGYwOWQ3MWRmZTY3OWJhMzNkNDIzMDc5ZTk2Li4yYzc4NTFlNDQwYjA4YTUyYTJhZTcwZGE3ZTQx
ODg4MmUzYzYxNDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAK
ICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpSZW1vdGU7IH0KICAgICB2b2lkIGluaXRpYWxp
emVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwg
U3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwor
ICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3Jh
Z2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24ua2V5U3lzdGVtOyB9
CiAgICAgUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCmluZGV4IGFmMGJhZDRjOTBkOGRk
NTEzNzc0YWVmNmExNWI3N2JhODlmYzUwNjQuLmM3NDBjMDQ1MDZmZGVkYWM5ZjRjZjUwMmMyMDVh
OGEzN2ZjYTQ1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKQEAgLTQ5LDcgKzQ5
LDcgQEAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24o
V2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGYKIHsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5z
ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxi
YWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsKICAgICAgICAgY2FsbGJh
Y2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxlZCk7
CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0
TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nCiAgICAgfSwgbV9pZGVu
dGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9p
ZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAo
IW1fZmFjdG9yeSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lk
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIExpY2VucwogICAgIH0KIAogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0
eXBlKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChLZXlTdGF0dXNWZWN0b3ImJiBj
aGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+JiYgbWVzc2Fn
ZSwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxT
aGFyZWRCdWZmZXI+PiByZWFsTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gc3RkOjpu
dWxsb3B0OwogICAgICAgICBpZiAobWVzc2FnZSAmJiBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkp
CiAgICAgICAgICAgICByZWFsTWVzc2FnZSA9IG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKS5yZWxl
YXNlTm9uTnVsbCgpOwogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RG
TW92ZShyZWFsTWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uaAppbmRleCA0ZmZlNGNhY2VjY2RlNDNkNWNiMTFlMjM2Y2EwNDVh
Y2RhODNhN2ViLi40ZTRjZDJjMDA1YzZiMDA2NWY5Y2RiMTg4YzRiY2UwYjViZmE2NjAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTU5LDggKzU5LDggQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50
PiYmIGNsaWVudCkgZmluYWwgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsgfQogICAgIHZv
aWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0cjsgfQotICAgIHZvaWQg
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNr
JiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExp
Y2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExp
Y2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmlu
YWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNl
bnNlVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2Us
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExp
Y2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiBvcmlnaW4s
IExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VU
eXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkYuY3BwCmluZGV4IDlhMjE5YTU0NGU1NTM4M2Y1NGU3MWRhYmQzNTRjYzQ0MGE0MTQyYjkuLjYy
OTI2Nzk4YzVjMTEzMjRhMzFhYTUwY2RhN2VkMWZiZjc0ZmU3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRi5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6
c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZQogCiAv
LyBJZiBhbGxEYXRhUmVjZWl2ZWQgaXMgdHJ1ZSwgdGhlIGNhbGxlciBleHBlY3RzIGVuY29kZWRE
YXRhU3RhdHVzKCkgdG8gYmUgPj0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGUKIC8v
IGFmdGVyIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAoaW4gdGhlIHNhbWUgcnVuIGxvb3ApLgotdm9p
ZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXREYXRhKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAg
IGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkYuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGLmgKaW5kZXggZTVjZmU5NGVjZDNhOWMwNjAwZmMwMDMyMGZmNDMwNjFjOTBlZDY5Yi4u
NDBkMzczNGY3YTMyMmU4YmFjYjlkMWMwZGVhNzA3OWUyYWQxN2VhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRi5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFJlbW90ZUltYWdlRGVjb2RlckFWRiBmaW5h
bAogICAgIDogcHVibGljIFdlYkNvcmU6OkltYWdlRGVjb2RlcgogICAgICwgcHVibGljIENhbk1h
a2VXZWFrUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGUoUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFu
YWdlciYgbWFuYWdlciwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciYgaWRl
bnRpZmllciwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
KyAgICBzdGF0aWMgUmVmPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlKFJlbW90ZUltYWdl
RGVjb2RlckFWRk1hbmFnZXImIG1hbmFnZXIsIGNvbnN0IFdlYkNvcmU6OkltYWdlRGVjb2Rlcklk
ZW50aWZpZXImIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGKG1hbmFnZXIsIGlkZW50aWZpZXIsIG1pbWVUeXBlKSk7
CiAgICAgfQpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1J
bWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFdlYkNvcmU6OlN1YnNhbXBs
aW5nTGV2ZWwgPSBXZWJDb3JlOjpTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBXZWJD
b3JlOjpEZWNvZGluZ09wdGlvbnMmID0gV2ViQ29yZTo6RGVjb2RpbmdPcHRpb25zKFdlYkNvcmU6
OkRlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0
ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwotICAgIHZvaWQgc2V0RGF0YShXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBz
ZXREYXRhKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNl
aXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJD
YWNoZShzaXplX3QpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNw
cAppbmRleCA0MWQ1Mzg4MDIzZDM5MTQ5NTIxODM1ZjY4OGRlNGQ0OGY2NWQ3NjdlLi4wODJiMzM2
NmM4YmM3MTMwZDc1ZDU2OThhN2Q3OWU2ODkyYWQ4ZjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGTWFuYWdlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZG
PiBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIoU2hhcmVk
QnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pCitSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBSZW1vdGVJbWFnZURlY29kZXJBVkZN
YW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIHN0
ZDo6b3B0aW9uYWw8SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4gaW1hZ2VEZWNvZGVySWRlbnRpZmll
cjsKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSB7IGRh
dGEgfTsKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFn
ZXI6OnNldFVzZUdQVVByb2Nlc3MoYm9vbCB1c2VHUFVQcm9jZXNzKQogICAgIEltYWdlRGVjb2Rl
cjo6aW5zdGFsbEZhY3RvcnkoewogICAgICAgICBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnN1cHBv
cnRzTWVkaWFUeXBlLAogICAgICAgICBSZW1vdGVJbWFnZURlY29kZXJBVkY6OmNhbkRlY29kZVR5
cGUsCi0gICAgICAgIFt0aGlzXShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikgeworICAgICAgICBbdGhpc10oRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24g
YWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKSB7CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW1hZ2VEZWNvZGVyKGRhdGEs
IG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAg
ICAgICB9CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oCmluZGV4IGMy
Mzc4MmI2NTA0ZWM3OWJlNDZlMTI2ZjRlNTkxYjNmZjdmNmRiYTguLjM2MThhZmQxMjA5OGI1NTc2
YjRkZDRmZmJmM2MwNmZiYTg0MmE3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdl
ci5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiYg
ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8UmVt
b3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGVJbWFnZURlY29kZXIoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpBbHBoYU9wdGlvbiwg
V2ViQ29yZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIFJlZlB0cjxSZW1vdGVJ
bWFnZURlY29kZXJBVkY+IGNyZWF0ZUltYWdlRGVjb2RlcihXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpBbHBoYU9w
dGlvbiwgV2ViQ29yZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgLy8gR1BV
UHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudC4KICAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9u
RGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Np
b24uY3BwCmluZGV4IGE1M2YxNTdiZWViZDdkYjJlODFiMmY1ZWNiZDYzODE4NjJhNjgwOGEuLmYx
ZDFjMTBhNmU1YzNhYjJiODEzMjNjMDRkYWMwNTcyODZlOWZkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uLmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
IGNvbnZlcnRUb1NoYXJlZEJ1ZmZlckNvcHkoVCBhcnJheSkKIHsKICAgICBpZiAoIWFycmF5KQog
ICAgICAgICByZXR1cm4geyB9OwotICAgIHJldHVybiB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFy
cmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpIH07CisgICAgcmV0dXJuIHsgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3Ro
KCkpIH07CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uPiBSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uOjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
PiBmYWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYmIGlkZW50aWZpZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA5NjZmYzkzYjc3YWZhYTNlNjIw
OGQ3YWJhNWFlZDJjN2E5NGM3NGIyLi4wMDVhMzdjYzI2ZWM0YzA5MDFiZjRmMzcxMjIzODY1ZGUy
ZDE2NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Nv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTc4LDcgKzc4LDcg
QEAgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6flNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUo
KQogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIudG9VSW50
NjQoKSk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6YXBwZW5kKFJlZjxT
aGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6YXBw
ZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKCFtX2dw
dVByb2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJl
bW90ZS5oCmluZGV4IDM2MDE3NWJmYmU5ZDFhZjgzZWQ1NzkxMzczYjc3NWVlNzUwYWM3Y2MuLmVh
NWZhM2VjMzZjMmI4NTllZTU3OGNjZDBlMDM0OGM3M2NiODZkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBTb3VyY2VC
dWZmZXJQcml2YXRlIG92ZXJyaWRlcwogICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wpIGZpbmFsOwot
ICAgIHZvaWQgYXBwZW5kKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAg
IHZvaWQgYXBwZW5kKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCkg
ZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJp
dmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29y
ZGVyUHJpdmF0ZS5jcHAKaW5kZXggMTFiNGE4NmU0ODUyZjZjMjA2MWZhM2ZjOWFmMjlmODg5OWY0
ZWI5Zi4uYjQwODlmZDM1NDhjOTdmMTdmYzJiOWZiMDAyNzgwZDY0M2NmMjNiZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZh
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVj
b3JkZXJQcml2YXRlLmNwcApAQCAtMTY1LDEwICsxNjUsMTAgQEAgdm9pZCBNZWRpYVJlY29yZGVy
UHJpdmF0ZTo6c3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KiBzdG9yYWdlLCBjb25zdCBXZWJD
b3JlOjoKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3Jk
ZXI6OkF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkIHsgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUg
eyBXVEZNb3ZlKGhhbmRsZSksIGRhdGFTaXplIH0sIGZvcm1hdCwgZnJhbWVDb3VudCB9LCBtX2lk
ZW50aWZpZXIpOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpmZXRjaERhdGEoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZTo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9jb25uZWN0aW9u
LT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OkZldGNo
RGF0YSB7IH0sIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBtaW1lVHlwZSA9IG1pbWVUeXBlKCldKGF1dG8mJiBkYXRhLCBkb3VibGUgdGltZUNvZGUpIG11
dGFibGUgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmIChkYXRhLnNp
emUoKSkKICAgICAgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVm
ZmVyKSwgbWltZVR5cGUsIHRpbWVDb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCmluZGV4IDMwM2E1
NGY3NmYxODVlOTY0NTRlZjlmNWJiNDYxZjI4ZTEyNjc4NmQuLjU3NmZkMWM2ZTk3YzBjYWQ4Y2Jm
ZWM5NGUzYmQzNjMzMDc2ZTQ0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaApAQCAtNTcsNyArNTcs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2
YXRlCiAgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpNZWRpYVNhbXBsZSYs
IFdlYkNvcmU6OlZpZGVvU2FtcGxlTWV0YWRhdGEpIGZpbmFsOwotICAgIHZvaWQgZmV0Y2hEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJikgZmluYWw7CisgICAgdm9pZCBmZXRj
aERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJikgZmluYWw7
CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmlu
YWw7CiAgICAgdm9pZCBzdGFydFJlY29yZGluZyhTdGFydFJlY29yZGluZ0NhbGxiYWNrJiYpIGZp
bmFsOwogICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IFdURjo6TWVkaWFUaW1l
JiwgY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBXZWJDb3JlOjpBdWRp
b1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
QVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCAwNjczZjc0ZGRmYjQ4ZTViZGY0
MzhjZDkwYmUzNzk0ZWVlMjA5MWJiLi4wMzUzYWFiZjdkNGI5MjVhYTJmMTU2MmQ1NzNhYWYzMDkz
YzgzYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNs
aWVudC5oCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3Vt
ZW50RnJhZ21lbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3R5
bGVQcm9wZXJ0aWVzOwogc3RydWN0IFNpbXBsZVJhbmdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggYTA2MzUyMDQz
MzViM2FiMGU2ZGZiMGM2Nzc3NjdmNDI4ZThhNzdlMi4uMTgwYjExMTFlY2YwMTEzMjgwOTI2NmEx
YmNlMjdkMjYwZTRmYTAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIERPTVdpbmRv
d0V4dGVuc2lvbjsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIFJlc291cmNlRXJyb3I7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU2LDcgKzU2
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflBhZ2VMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7
CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIEFQSTo6T2JqZWN0KikgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3Qg
V1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6VVJMJiwgQVBJOjpP
YmplY3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJLaXQ6
OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIGNvbnN0IFdURjo6VVJMJiwgQVBJOjpPYmplY3QqKSB7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktp
dDo6V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktp
dDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmluZGV4
IDhkNTI0YjUyNWM2ZTdhMGNjNmJkZTVlODBhNDdjMTcxZTM0MTQ2OGMuLjNmNDFiMWYzMzhmYTQ0
NDc0OTA3NDgxODliYjg5OTUxY2YxYjE3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC02NSwxNSArNjUsMTYgQEAgc3RhdGljIHZvaWQg
cmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKICAg
ICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRl
cmVmKCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9h
ZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6
Ok9iamVjdCogdXNlckRhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6
d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgdW5y
ZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50
LndpbGxMb2FkRGF0YVJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxBUEk6
OkRhdGE+IGRhdGE7CiAgICAgaWYgKHNoYXJlZEJ1ZmZlcikgewotICAgICAgICBzaGFyZWRCdWZm
ZXItPnJlZigpOwotICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWlu
ZygoY29uc3QgdW5zaWduZWQgY2hhciopc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZl
ci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBzaGFyZWRCdWZmZXIpOworICAgICAgICBh
dXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgICAgIGNvbnRpZ3VvdXNCdWZmZXItPnJlZigpOworICAgICAgICBkYXRhID0gQVBJOjpEYXRh
OjpjcmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hhciopY29udGlndW91c0J1
ZmZlci0+ZGF0YSgpLCBjb250aWd1b3VzQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZm
ZXIsIGNvbnRpZ3VvdXNCdWZmZXIucHRyKCkpOwogICAgIH0KIAogICAgIG1fY2xpZW50LndpbGxM
b2FkRGF0YVJlcXVlc3QodG9BUEkoJnBhZ2UpLCB0b0FQSShyZXF1ZXN0KSwgdG9BUEkoZGF0YS5n
ZXQoKSksIHRvQVBJKE1JTUVUeXBlLmltcGwoKSksIHRvQVBJKGVuY29kaW5nTmFtZS5pbXBsKCkp
LCB0b1VSTFJlZih1bnJlYWNoYWJsZVVSTC5zdHJpbmcoKS5pbXBsKCkpLCB0b0FQSSh1c2VyRGF0
YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggMzZiZDk4MGIyZmFhMWFmNDVhYzMxMDZlYjAxZTlm
Mzc2YmExM2FjZi4uODYzYmRhYjYyODRjYTNhYWQyZjlkNWZmZjVmZDY4ZWFiOGIyYjczMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtNDcsNyAr
NDcsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50KGNvbnN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJhc2UqKTsKIAogICAgIHZvaWQgd2ls
bExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwotICAgIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChX
ZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFVS
TCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0
KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRyPEFQ
STo6T2JqZWN0PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRyPEFQ
STo6T2JqZWN0PiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5
ZXJNYWMubW0KaW5kZXggZTUyNGQ4ZTFiMDE3YWE4ZTVlMDNiODkyZDkyYjc1ODk0YzU4ZjM3NC4u
YTc4NGVjMzg4YjIyNTI0Y2MwZGE2MzI3OGU1ZTc1OTEzN2RjZjY2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBs
YXllck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBB
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRlRmlsZShXZWJDb3JlOjpNb2Rl
bCYgbW9kZWxTb3VyY2UpCiAgICAgaWYgKGZpbGUgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRh
KCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
bW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShm
aWxlKTsKICAgICBtX2ZpbGVQYXRoID0gZmlsZVBhdGg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcAppbmRleCA0N2I5MWNlODdkMzYxM2UzNWQ1Nzk0MDc5N2FkZjBiMWRkMDBhNDhiLi45Y2Q2
NWFjYTM4ZGM1MThhZjIyN2ZhZTQwOWVkYWNiMDE5NDA0NmYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAKQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6ZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCiAgICAg
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJl
ZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKSB7Ci0gICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgZm9y
IHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMiLCBy
ZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMjU5NDQ5NDIzODU1ZmVkM2FhYWFiNDE0ODE5Zjg5NTFh
M2I4YjdmZi4uMzEwZmNhNzg3NWMzMmMzY2Q3NDc4ZGI2NGY1OWFjMmNmNTAxNjM5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vCiAgICAg
aWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9u
c2UobV9jb3JlTG9hZGVyLT5mcmFtZSgpLCByZXNwb25zZSkpIHsKICAgICAgICAgYXV0byBpbnRl
cmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyID0gbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCk7CiAg
ICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5iZWdpbkludGVyY2VwdGluZ1Jlc3BvbnNlKGlu
dGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJhbWUoKSwgcmVz
cG9uc2UsIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgcG9saWN5RGVj
aXNpb25Db21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0aW9u
SGFuZGxlcildKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGluc3BlY3RvclJlc3BvbnNlLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGEpIG11dGFibGUgeworICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKG1fY29yZUxvYWRlci0+
ZnJhbWUoKSwgcmVzcG9uc2UsIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmll
ciwgcG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUocG9saWN5RGVjaXNp
b25Db21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGluc3BlY3RvclJl
c3BvbnNlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmlk
ZW50aWZpZXIoKSkgewogICAgICAgICAgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0Vf
TE9HKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBjb250aW51aW5nIGludGVyY2VwdCBsb2FkIGJl
Y2F1c2Ugbm8gY29yZUxvYWRlciBvciBubyBJRCIpOwogICAgICAgICAgICAgICAgIG1faW50ZXJj
ZXB0Q29udHJvbGxlci5jb250aW51ZVJlc3BvbnNlKGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZp
ZXIpOwpAQCAtMjk1LDExICsyOTUsMTEgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmQKICAgICBM
T0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c291cmNlIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5k
YXRhKCkpOwogICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVz
b3VyY2U6Iik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5
V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIGlmICghYnVm
ZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIgZnJvbSBT
aGFyZWFibGVSZXNvdXJjZSBzZW50IGZyb20gdGhlIG5ldHdvcmsgcHJvY2Vzcy4iKTsKLSAgICAg
ICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZTogVW5h
YmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIiKTsKKyAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJf
UkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZTogVW5hYmxlIHRvIGNyZWF0ZSBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyIik7CiAgICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IG1fY29yZUxvYWRl
ci0+ZnJhbWUoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgp
KQogICAgICAgICAgICAgICAgIHBhZ2UtPmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlh
Z25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnRlcm5hbEVy
cm9yS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6Y3JlYXRlU2hhcmVkQnVm
ZmVyRmFpbGVkS2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4IDQyZGU0NjE0
MTk3NzhiN2M0NTBmY2ExZWIwMzdjMWNlOTdkMmQ2MzEuLmE3ZjQ1Yzg0MDFiMmZkMmY4NzBlMzY3
OGM1OGZjMzEwYzJlMWYyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTIwNyw3ICsyMDcsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wpIGZpbmFsIHsgfQogICAgIGJvb2wg
Z2V0Rm9ybVZhbHVlKFN0cmluZyYgZm9ybVZhbHVlKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIGJvb2wgaGFuZGxlU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6
U2Nyb2xsR3JhbnVsYXJpdHkpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IGZpbmFsOwog
ICAgIHZvaWQgd2lsbERldGFjaFJlbmRlcmVyKCkgZmluYWw7CiAgICAgYm9vbCBwbHVnaW5IYW5k
bGVzQ29udGVudE9mZnNldEZvckFjY2Vzc2liaWxpdHlIaXRUZXN0KCkgY29uc3QgZmluYWw7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbQppbmRleCBkMjNhYmI5ZTY1MTFiMTNiYmQ1MjNhZjQ1MWY0NDE3ODczYTZjMWUwLi5kNDdm
MzJiN2Q0OTE5NTZiZGNlNzdiZmU2ZjE1Y2E3ODY1YmZkMTllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTI1NTIsNyArMjU1
Miw3IEBAIHZvaWQgUERGUGx1Z2luOjpub3RpZnlEaXNwbGF5TW9kZUNoYW5nZWQoaW50KQogICAg
IHVwZGF0ZVNjcm9sbGJhcnMoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUERGUGx1Z2lu
OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBQREZQbHVnaW46OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIE5TRGF0YSAqcGRm
RGF0YSA9IGxpdmVEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luLmgKaW5kZXggODhmNDVjZTUxY2UzMWRmMGM1YjNiNzU4NjIzNmMzZjBkOWM5M2FkMy4uNThk
NzBhMzlhMTZkNmE0YzBlOGIwY2E5ZDAzYWMzZDM3YWVkZmNlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTYxLDcgKzYxLDcgQEAgY2xhc3MgSW50UG9p
bnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFNjcm9sbGJhcjsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtMjg4LDcgKzI4OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydFRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIHBvaW50SW5Mb2NhbENvb3JkaW5hdGVzKSBjb25zdDsKIAotICAgIHZpcnR1YWwgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsaXZl
UmVzb3VyY2VEYXRhKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1EaWN0
aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgPSAwOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmlu
ZGV4IGQ1NGYyN2YwNzA5MTQ3ZTllZGVjMDZkZTU4YzFlOGNjMTIzMWE2NzcuLjdmYjIwYzU5MmRi
ZmEwOTZlMzhiYzE2ODcwMzczOGNiOGY0MDdjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0yODksNiArMjg5LDcgQEAgUGx1Z2lu
Vmlldzo6UGx1Z2luVmlldyhIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luRWxlbWVudCwgUmVmPFBs
dWdpbj4mJiBwbHVnaW4sIGMKICAgICAsIG1fd2ViUGFnZSh3ZWJQYWdlKG1fcGx1Z2luRWxlbWVu
dC5nZXQoKSkpCiAgICAgLCBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKICAgICAsIG1fcGVuZGlu
Z1VSTFJlcXVlc3RzVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUGx1Z2luVmlldzo6cGVu
ZGluZ1VSTFJlcXVlc3RzVGltZXJGaXJlZCkKKyAgICAsIG1fbWFudWFsU3RyZWFtRGF0YShtYWtl
VW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgbV93ZWJQYWdlLT5hZGRQ
bHVnaW5WaWV3KHRoaXMpOwogfQpAQCAtNDAzLDkgKzQwNCw2IEBAIHZvaWQgUGx1Z2luVmlldzo6
bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KQogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1fbWFudWFs
U3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9uc2UpOwot
ICAgICAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YSkKLSAgICAgICAgICAgIG1fbWFudWFsU3Ry
ZWFtRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICAgICAgbV9tYW51YWxTdHJl
YW1EYXRhLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC00MzcsNyArNDM1LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbChjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAg
ICAgICBtX21hbnVhbFN0cmVhbVN0YXRlID0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkOwog
ICAgICAgICBtX21hbnVhbFN0cmVhbUVycm9yID0gZXJyb3I7Ci0gICAgICAgIG1fbWFudWFsU3Ry
ZWFtRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+cmVzZXQoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTI2LDExICs5MjQsMTEgQEAgdm9pZCBQbHVn
aW5WaWV3Ojp3aWxsRGV0YWNoUmVuZGVyZXIoKQogICAgIG1fcGx1Z2luLT53aWxsRGV0YWNoUmVu
ZGVyZXIoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291
cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmll
dzo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQg
fHwgIW1fcGx1Z2luKSB7Ci0gICAgICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEgJiYgbV9tYW51
YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCi0gICAgICAgICAg
ICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1T
dGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCisgICAgICAgICAgICByZXR1cm4g
bV9tYW51YWxTdHJlYW1EYXRhLT5nZXQoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CkBAIC0xMjQyLDEwICsxMjQwLDEwIEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFu
dWFsU3RyZWFtKCkKICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKG1fbWFudWFsU3Ry
ZWFtUmVzcG9uc2UpOwogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KLSAgICBpZiAobV9tYW51
YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICptX21h
bnVhbFN0cmVhbURhdGEpCisgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEtPmlzTnVsbCgpKSB7
CisgICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLT50YWtlKCk7CisgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKICAgICAgICAgICAg
IG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVu
dC5zZWdtZW50LT5zaXplKCkpOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRy
OwogICAgIH0KIAogICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0
YXRlOjpGaW5pc2hlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaAppbmRleCAyMTI2ZWI4ZWRiNTU5Mzg2YjM0MjI1ZWIyYmQ1YmZjZDY4MDIzZjIzLi5k
MTUzYTI5Y2ExNGE5MGUzMjI3YTg5MWUzZWVmNWU0ZTc5NzM1MWE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC00MSw2ICs0MSw3IEBACiAj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAvLyBGSVhNRTogRXZlbnR1
YWxseSB0aGlzIHNob3VsZCBtb3ZlIHRvIFdlYkNvcmUuCiAKQEAgLTExNSw3ICsxMTYsNyBAQCBw
dWJsaWM6CiAKICAgICBib29sIHNob3VsZEFsbG93U2NyaXB0aW5nKCk7CiAKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Q7CisgICAgUmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBj
b25zdDsKICAgICBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgU3RyaW5nIGdldFNlbGVjdGlvbkZvcldvcmRBdFBv
aW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBjb25zdDsKICAgICBib29sIGV4aXN0aW5n
U2VsZWN0aW9uQ29udGFpbnNQb2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgY29uc3Q7
CkBAIC0yNTIsNyArMjUzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgbV9tYW51YWxTdHJlYW1SZXNwb25zZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IG1fbWFudWFsU3RyZWFtRXJyb3I7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bV9tYW51YWxTdHJlYW1EYXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJC
dWlsZGVyPiBtX21hbnVhbFN0cmVhbURhdGE7CiAKICAgICAvLyBUaGlzIHNuYXBzaG90IGlzIHVz
ZWQgdG8gYXZvaWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0aGUgcGx1Z2luIHJ1biBKUyBkdXJpbmcg
cGFpbnRpbmcuCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV90cmFuc2llbnRQYWludGlu
Z1NuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBm
ZWU4ZmVhN2JjYzhkNTljMDdlM2M1YmE0ZDYwOTU1MmE0ZDYyOGJmLi5iMDRjY2NmMTEzZTQ5Mjhm
YTY2MzgzYmQyNDMxZGI4NzQ4NTNjY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmNwcApAQCAtNzEsMTYgKzcxLDE1IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmCiAg
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpE
aWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlTWVzc2FnZSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCit2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2Vp
dmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAo
IW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2FpdGluZ0ZvckNv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkgewotICAgICAgICBpZiAoIXN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKSkKLSAgICAg
ICAgICAgIG1fcmVzcG9uc2VEYXRhID0gYnVmZmVyLT5jb3B5KCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSktPmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpKQorICAgICAgICAgICAgbV9y
ZXNwb25zZURhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCk7CisgICAgICAgIHN0ZDo6Z2V0PFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoV1RGTW92ZShidWZmZXIp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA2LDggKzIwNSw4IEBAIHZvaWQgV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Uo
KQogICAgIHN3aXRjaE9uKG1fcmVzcG9uc2VEYXRhLCBbdGhpc10oc3RkOjpudWxscHRyX3QmKSB7
CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwotICAg
IH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJlY2Vp
dmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJlZEJ1ZmZl
ckJ1aWxkZXImIGJ1ZmZlcikgeworICAgICAgICBkaWRSZWNlaXZlRGF0YSgqYnVmZmVyLmdldCgp
KTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAg
ICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggYjM0N2NhZDJhYjVmNTcxYjFhMGUyMDcyMDgwNDM2N2Q3
NzAxODYwMC4uNmIwYTQxN2NmMGQzYWUwZDdiODkzYTk5ODY4M2FiZjJiYzRhNGQ5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvRmV0Y2hMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJGZXRjaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDksNyArNTAsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZv
aWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBm
aW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaCgpIGZpbmFsOwpAQCAtODIsNyArODMsNyBAQCBwcml2
YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogICAgIGJv
b2wgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBm
YWxzZSB9OwotICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4sIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CisgICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVs
bHB0cl90LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyLCBSZWY8V2ViQ29yZTo6Rm9ybURh
dGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOwog
ICAgIGJvb2wgbV9kaWRGaW5pc2ggeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cAppbmRleCA4MWUzNzllMzNkMWE5YWNkYzg2ZWY1YzRiZTIxYTcyNjBkOTRkNDhlLi43Y2ZjMDNh
ODVkMzlkODFmMzkyYzBhYTEzMGY4M2ZiZDJjODM0ZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cApAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRBcHBseVN0
eWxlKGNvbnN0IFN0eWxlUHJvcGVydGllcyYgc3R5bGUsIGNvbnN0IHN0ZDo6CiAKICNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1l
bnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6UmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGlkZW50aWZpZXIs
IGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxlTmFtZSwgZGF0YS5nZXQoKSkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCmluZGV4IDUwNmQ5ZjU0MTM4ZDM3Y2I0YzY0ZWQ0NjBmNTlhNWMyOGZlNTIyYTYu
LmIwNTg2MTg5MWVjYzg0YzYzNjhhMjA2YzI3MDEwNjBmNTA1MmY1ZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZE1vdmVSYW5n
ZUFmdGVyRGVsZXRlKGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwgY29uc3QgV2ViQ29yZTo6
U2ltcGxlUmFuZ2UmKSBmaW5hbDsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0g
ICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJBdHRh
Y2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHMo
VmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YmRiYmNjZDNmYmM2MjBlMDc1NDEwNWNl
YTA5ZWRkZjA1MTIwYjZiLi4xNGEwODNjYTIwN2E5MDYzY2Y4MGIxZTdlOTY3MGE0ODdjZjRkMzk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExODgsOCArMTE4OCw4IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRl
ciogbG9hZGVyKQogICAgICAgICAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0
YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwotICAgICAgICAgICAgSVBDOjpEYXRhUmVm
ZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEt
PmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5z
aXplKCkgOiAwKTsKKyAgICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBt
YWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgICAgICAg
ICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFp
blJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJl
c291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOwogICAgICAgICAgICAg
d2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkaW5nRGF0
YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihsb2FkZXItPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmls
ZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAKaW5kZXggZjQxYTcwZWY1YmI2YzBlY2U4YmQ4NjI3NDExNjAxY2Y3MzBl
NjJhMS4uNGE4YmVlNTdmZGIxZmZjZGVmMDA4OWZhNjVlOTc1Mzc1MGQyNTBlOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQ2NF90IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgYwogICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAotaW50NjRfdCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZm
ZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQoraW50NjRfdCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
YnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFy
ZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUo
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGUyODA5OTYzZjRmNTA2ODFi
N2QwMWY0MWE2ODUzMWFiNzMyMTRmYjAuLjFmZjgzZTExYmMxNzg5YWFjMGY5MDBjOTNkYzIyZmJm
MjM5ZWEyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTY2LDcgKzY2LDcg
QEAgcHJpdmF0ZToKIAogICAgIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFR5cGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
Ci0gICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRf
dCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qg
c2V0VVJMKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogICAgIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggMDdiMTY3ZTBlZWVlNzY4ODc1YjAzOWRm
YTU5ZjVmZDEzYzc1NGUxMC4uZDQxNTkwNGM3MWIxYzBjNzJhM2UxN2NmN2IzNDUyMGFhMjc5MDM2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00NSwx
MyArNDUsMTMgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVu
dChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKICAgICA6IG1fZmlsZU5hbWUgeyBm
aWxlTmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAgICAgLCBtX3BhZ2VJRCB7IHBhZ2VJRCB9
Ci0gICAgLCBtX2J1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9idWZm
ZXIgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogewogfQogCiBXZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50Ojp+V2ViUHJldmlld0xvYWRlckNsaWVudCgpID0gZGVmYXVsdDsK
IAotdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNl
aXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBh
dXRvIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1fcGFnZUlEKTsK
ICAgICBpZiAoIXdlYlBhZ2UpCkBAIC02OSwxMyArNjksMTIgQEAgdm9pZCBXZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKCkKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lKG1fYnVmZmVyLmdldCgpKTsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAg
ICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSht
X2J1ZmZlci0+dGFrZSgpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50
OjpkaWRGYWlsKCkKIHsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICBtX2J1ZmZlci0+cmVz
ZXQoKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFzc3dv
cmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMDQ5MmNlZWMyZjliOWNk
ODUzODM4NDg0ZmJjMjZjMDdjYjUzZGE4Ny4uY2MzYjI0YjcyOWIyMThiODBkMzdhMTJjZDdmYWMz
ZGZhOWJlZDFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAg
LTI5LDggKzI5LDEzIEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVByZXZpZXdMb2FkZXJD
bGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworfQorCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViRnJhbWU7CkBAIC00NSw3ICs1MCw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Bh
c3N3b3JkRW50cnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC01NCw3ICs1
OSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7CiAgICAgY29uc3Qg
U3RyaW5nIG1fdXRpOwogICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlE
OwotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFVuaXF1ZVJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IGE2NGM2YThi
M2M2OTVlMTczMzY0MzM2YmNiMGY2OGRiZGQ5YzJkMjEuLmUxZTBlNjExMmEyZGVkYzNiOGJiNjMw
OTg1MzUzNzZlZjQzYWQ1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTE1
MCw3ICsxNTAsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFn
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogCiAgICAgTlNVUkxSZXNwb25z
ZSAqcmVzcG9uc2UgPSBpbWFnZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0
YSgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAg
IHNpemVfdCBpbWFnZVNpemUgPSBpbWFnZUJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgYXV0byBzaGFy
ZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmltYWdlQnVmZmVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA5
YmQ0Y2QyZDBjYjEwM2I0NWFhOGU2YzFkNDI3YzBiMTdiZjVlZDEzLi5kODhmNDRjZmNkZTVlMTVm
NjZjMTI0YjQwZjViNTQzNWI5NDY5N2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0zNDAsMTAgKzM0MCwxMCBAQCBTdHJpbmcgV2ViRnJh
bWU6OnNvdXJjZSgpIGNvbnN0CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0g
bV9jb3JlRnJhbWUtPmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFk
b2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNl
RGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VE
YXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5S
ZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gZGVjb2Rl
ci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3Vy
Y2VEYXRhLT5zaXplKCkpOworICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZSht
YWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJjZURh
dGEtPnNpemUoKSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6Y29udGVudHNBc1N0cmluZygpIGNv
bnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCAxZTE5NzNhMDMwOGMxMTg2YTdhNGQxOWRmNWYyNzcyMDU2ZmE5MGRkLi43OGQwZjdmY2UwZmMy
ZWFkMzZmNmNiNzgzNjA2ODNlZmIxNzc1OGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTczOCw3ICsxNzM4LDcgQEAgTk9fUkVUVVJOIHZv
aWQgV2ViUGFnZTo6bG9hZFJlcXVlc3RXYWl0aW5nRm9yUHJvY2Vzc0xhdW5jaChMb2FkUGFyYW1l
dGVycyYmLCBVUkwKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lk
IFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9u
YWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgc2hhcmVkQnVmZmVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJl
c3BvbnNlJiYgcmVzcG9uc2UsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4g
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0
b3J5VmlzaWJpbGl0eSBzZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKK3ZvaWQgV2ViUGFnZTo6
bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRl
UG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgc2hhcmVkQnVmZmVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJl
c3BvbnNlJiYgcmVzcG9uc2UsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4g
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0
b3J5VmlzaWJpbGl0eSBzZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKIHsKICNpZiBFTkFCTEUo
QVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCAmbV9tYWluRnJhbWUuZ2V0KCkpOwpAQCAtMTc1
Myw3ICsxNzUzLDcgQEAgdm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdh
dGlvbklELCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2gKIAogICAgIC8vIExldCB0aGUg
SW5qZWN0ZWRCdW5kbGUga25vdyB3ZSBhcmUgYWJvdXQgdG8gc3RhcnQgdGhlIGxvYWQsIHBhc3Np
bmcgdGhlIHVzZXIgZGF0YSBmcm9tIHRoZSBVSVByb2Nlc3MKICAgICAvLyB0byBhbGwgdGhlIGNs
aWVudCB0byBzZXQgdXAgYW55IG5lZWRlZCBzdGF0ZS4KLSAgICBtX2xvYWRlckNsaWVudC0+d2ls
bExvYWREYXRhUmVxdWVzdCgqdGhpcywgcmVxdWVzdCwgY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIq
PihzdWJzdGl0dXRlRGF0YS5jb250ZW50KCkpLCBzdWJzdGl0dXRlRGF0YS5taW1lVHlwZSgpLCBz
dWJzdGl0dXRlRGF0YS50ZXh0RW5jb2RpbmcoKSwgc3Vic3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgp
LCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJE
YXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgbV9sb2FkZXJDbGllbnQtPndpbGxMb2FkRGF0YVJl
cXVlc3QoKnRoaXMsIHJlcXVlc3QsIGNvbnN0X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+
KHN1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKSksIHN1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCksIHN1
YnN0aXR1dGVEYXRhLnRleHRFbmNvZGluZygpLCBzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCks
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRh
dGEub2JqZWN0KCkpLmdldCgpKTsKIAogICAgIC8vIEluaXRhdGUgdGhlIGxvYWQgaW4gV2ViQ29y
ZS4KICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QoKm1fbWFpbkZyYW1lLT5j
b3JlRnJhbWUoKSwgcmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwpAQCAtMzg1Niw3ICszODU2LDcg
QEAgdm9pZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKIAogdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3Vy
Y2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4m
KT4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoV2ViRnJhbWUq
IGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKICAg
ICAgICAgaWYgKFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSBwbHVnaW5WaWV3Rm9yRnJhbWUoZnJh
bWUtPmNvcmVGcmFtZSgpKSkKICAgICAgICAgICAgIGJ1ZmZlciA9IHBsdWdpblZpZXctPmxpdmVS
ZXNvdXJjZURhdGEoKTsKQEAgLTM4NzIsNyArMzg3Miw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0TWFp
blJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25I
YW5kCiAgICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYg
cmVzb3VyY2VVUkwpCitzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291
cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkKIHsK
ICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9h
ZGVyKCk7CiAgICAgaWYgKCFsb2FkZXIpCkBAIC0zODg3LDcgKzM4ODcsNyBAQCBzdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25z
dCBVUkwmIHJlc291cgogCiB2b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0cmluZywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
ICAgICBpZiAoYXV0byogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShm
cmFtZUlEKSkgewogICAgICAgICBVUkwgcmVzb3VyY2VVUkwoVVJMKCksIHJlc291cmNlVVJMU3Ry
aW5nKTsKICAgICAgICAgYnVmZmVyID0gcmVzb3VyY2VEYXRhRm9yRnJhbWUoZnJhbWUtPmNvcmVG
cmFtZSgpLCByZXNvdXJjZVVSTCk7CkBAIC02OTcyLDcgKzY5NzIsNyBAQCB2b2lkIFdlYlBhZ2U6
OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCBsb2Fk
SWRlbnRpZmllcgogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNp
c2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLnRvSW50ZWdlcigpLCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciogaWNvbkRhdGEpIG11dGFibGUgeworICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllci50b0ludGVnZXIoKSwg
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgaWNvbkRhdGEgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMjYyZGU2YTQyYTY5NDk1MzAyMDFj
NzIzZGFlN2U0NTIyYzU3MTYyYS4uNzRkNTI5ZmFmOTQ1MWIzYjhiM2I5YmIxZmYwMWZjYjU2NTMx
YWMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
MjE2LDcgKzIxNiw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwogY2xhc3MgU2VsZWN0aW9uR2VvbWV0cnk7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3Mg
U3Vic3RpdHV0ZURhdGE7CiBjbGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0OwogY2xhc3MgVmlzaWJs
ZVBvc2l0aW9uOwpAQCAtMTM5NCw3ICsxMzk0LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKFFVSUNL
X0xPT0spCiAgICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpKTsKLSAgICB2b2lk
IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
OwogICAgIHZvaWQgcmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmKTsKICNlbmRpZgogCkBAIC0xNTk3LDcgKzE1OTcsNyBAQCBwcml2YXRlOgogCiAg
ICAgU3RyaW5nIHNvdXJjZUZvckZyYW1lKFdlYkZyYW1lKik7CiAKLSAgICB2b2lkIGxvYWREYXRh
SW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRh
Jiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFdlYkNvcmU6OlN1
YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFdlYkNvcmU6OlNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5OjpTaG91bGROb3RBbGxvdyk7CisgICAgdm9pZCBsb2FkRGF0YUltcGwodWludDY0X3QgbmF2
aWdhdGlvbklELCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0
aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmLCBzdGQ6
Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgV2ViQ29yZTo6U3Vic3RpdHV0
ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNo
b3VsZE5vdEFsbG93KTsKIAogICAgIC8vIEFjdGlvbnMKICAgICB2b2lkIHRyeUNsb3NlKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA4NmUwNGM1OTYwMmQzMzVlZDcy
YTFjMjFhOTkwYWQzZTNkNzY3Njg1Li42NjQyNGNkOGExMzlmOTlmYzdmOTUyZGEyZWVmZDk0N2Y1
ZjA2MjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQpAQCAtMzIxNyw3ICszMjE3LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3Jt
QWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbikKICAgICAgICAgQ2FjaGVkSW1hZ2UqIGNh
Y2hlZEltYWdlID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCplbGVtZW50LnJlbmRlcmVyKCkpLmNh
Y2hlZEltYWdlKCk7CiAgICAgICAgIGlmICghY2FjaGVkSW1hZ2UpCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGNhY2hlZEltYWdlLT5y
ZXNvdXJjZUJ1ZmZlcigpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CiAgICAgICAgIGlmICghYnVm
ZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZl
ciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKQEAgLTQ2ODMsNyArNDY4Myw3
IEBAIHZvaWQgV2ViUGFnZTo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5G
cmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGZpbGVOYW1l
LCB1dGkpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgV2ViUGFn
ZTo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVCghYnVmZmVyLmlzRW1w
dHkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggZTE4ZDEwYzNmYzRmMThkNzNhMmE3NDBjNTMz
MTMxMzQzZmYzM2NhZi4uYzYxYjg1MTJiYTNjZmNjODllNDM1YmY5NDM0NGRkNzI5MTcyNWIyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIubW0KQEAgLTIyOCwxMSArMjI4LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50RW4KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFVOVVNFRF9QQVJBTShtb2RlKTsK
ICNpZiBIQVZFKEFWS0lUKQotI2lmIEhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKLSAgICBy
ZXR1cm4gbW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVT
dGFuZGFyZDsKLSNlbHNlCiAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICNlbHNlCiAgICAgcmV0
dXJuIGZhbHNlOwogI2VuZGlmCkBAIC0yNDMsNyArMjM5LDcgQEAgYm9vbCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50RW4KIAogYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNj
cmVlblN0YW5kYnkoKSBjb25zdAogewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFIQVZF
KFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBy
ZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKaW5kZXggZDNkMzhjYWM0MTIxMWQ3ZTI5
YjU3ZjI0NTIzNjRlMzdiNDIzYzMxYS4uMzdmMjdlOTUyZDA3MTcxMTIxY2I0ZjU0ODdhOGI4NGI5
ZjhhNjM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9j
ZXNzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NX
aW4uY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVm
ZmVyKGNvbnN0IGNoYXIqIG5hbWUpCitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQogewogICAgIHJl
dHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9y
dC9QaW5nSGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdI
YW5kbGUuaAppbmRleCAxZjU1ODRmYTM4N2Q3NmNjZTk0ZmY3YjU2OTY4ZTdlODIyMDYwNjA2Li5h
MjU1NjBhMTBjMjg4MmUxYWJkMTc4NDU2OTQ4NmVhMTNlZDg5NmQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaApAQCAtNzMsNyArNzMsNyBA
QCBwcml2YXRlOgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBwaW5nTG9h
ZENvbXBsZXRlKHsgfSwgcmVzcG9uc2UpOwogICAgIH0KLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
LCBpbnQpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGludCkgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KICAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQog
ICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoZXJyb3IpOyB9
CiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZSopIGZpbmFsIHsgcmV0dXJuIG1fc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmlu
ZGV4IGViMzk0MWYyNjZkZjEzYzI4YTkwNmVlN2QxNjFhZTIxZTE3NTQwOTEuLjYzNTViNmY5MDMx
ODAwNTVjYjYwN2E4MGJlNzcwMTM4NGQ4OGRkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMzg4LDcgKzM4OCw3IEBAIC0g
KE5TRGF0YSAqKWRhdGFSZXByZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURhdGEKICAgICBhdXRv
KiBkYXRhID0gcmF3SW1hZ2VEYXRhID8gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkgOiBp
bWFnZS0+ZGF0YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBy
ZXR1cm4gZGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAog
LSAoTlNTdHJpbmcgKiltaW1lVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYTI1
OThmMzJmYjc2MGE3ZDg4M2M5ZjRjZWVjMThjZjU5MWViOGVhZC4uOTU5ZDc0OGI1NmJlMTA3NmJk
OTc3OTkyMmNkMzU2ZDIxYTY4MTc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0y
NDgsNyArMjQ4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbmRIMlBpbmcoY29uc3QgVVJMJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTZWNvbmRzLCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yPiYmKT4mJikgZmluYWw7CiAKICAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb25z
KGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yZTo6TGlua0ljb24mLCB1aW50NjRfdD4+Jikg
ZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciopOworICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKik7CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIG1fbG9h
ZGluZ0ljb24geyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCBiODQ5
ZDJhYWMyYTkzZmJlZTQxNzI5ZjI0YTg2Y2RjZjZiMWZlMDE5Li5hYTJjYzk4MTQ3NGExM2NlNTA4
NDc5ODk0MjM2ODQ0OTFjODhmNmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAt
MjAxMiw3ICsyMDEyLDcgQEAgUmVmUHRyPFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXJDbGll
bnQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQcmV2aWV3TG8KICAgICAgICAgUmV0YWlu
UHRyPE5TU3RyaW5nPiBtX2ZpbGVQYXRoOwogICAgICAgICBSZXRhaW5QdHI8TlNGaWxlSGFuZGxl
PiBtX2ZpbGVIYW5kbGU7CiAKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIGRhdGFBcnJheSA9IGJ1ZmZl
ci5jcmVhdGVOU0RhdGFBcnJheSgpOwogICAgICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4g
ZGF0YUFycmF5LmdldCgpKQpAQCAtMjA5NCw3ICsyMDk0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxX
ZWJDb3IKICAgICAgICAgfQogCiAgICAgICAgIG1fbG9hZGluZ0ljb24gPSB0cnVlOwotICAgICAg
ICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29uLT5z
ZWNvbmQsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyKiBidWZmZXIpIHsKKyAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWRE
ZWNpc2lvbkZvckljb24odHJ1ZSwgaWNvbi0+c2Vjb25kLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfV0gKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikg
ewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICBmaW5pc2hlZExvYWRpbmdJY29uKGJ1ZmZlcik7CkBAIC0yMTMxLDcgKzIxMzEs
NyBAQCBzdGF0aWMgTlNJbWFnZSAqd2ViR2V0TlNJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2Us
IE5TU2l6ZSBzaXplKQogfQogI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCi12b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciogaWNvbkRhdGEpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExv
YWRpbmdJY29uKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGljb25EYXRhKQogewog
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VSVChtX2xvYWRpbmdJY29uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMjRiNjk5NzA2ZGYwZDZiNzE5MmFhNTIwMmRl
NjFkOGIxZTU3MzJmOS4uNTI3ZmE1NTIxOTBiYTAwMTQ1MTdmZmRlNzM3NzIwYjJlN2E5MGFiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToK
IAogICAgIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgaW50NjRf
dCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRCdWZmZXJG
b3JUeXBlKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VVJMKGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qg
c2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGlu
dDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1t
CmluZGV4IGZjMDc3NmU2MmQ2NmJlOWFjOTNkNDg3ZGRmZDMwMGE2ZDQwN2M1NTMuLjM5ODY4NTlm
NzMzOGUyODQ1N2VkNGIxOTBjYmE2NzA1MjIxMDAyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW0KQEAgLTE1NCw3ICsxNTQsNyBAQCBpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgYwogICAg
IHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldFR5cGVzKHBhc3Rl
Ym9hcmRUeXBlcyk7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZm
ZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikK
IHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZm
ZXJGb3JUeXBlKGJ1ZmZlciwgcGFzdGVib2FyZFR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDI4OWMwMDI5YmY5MTM0
MThkMGIyOTlmOTBhNGQ5NzExM2JjNThhNGIuLjgzZTg1OTE0MzQ1ZWE3Y2I4NDFkOTlmZDFmYjY2
NmQ4Y2NmMDMwMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkRhdGFTb3VyY2UubW0KQEAgLTQ2MCwxMCArNDYwLDEwIEBAIC0gKHZvaWQpZGVhbGxvYwogCiAt
IChOU0RhdGEgKilkYXRhCiB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbWFp
blJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNl
RGF0YSgpOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWlu
UmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VE
YXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gbmlsOwot
ICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgp
OworICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpZCA8V2ViRG9jdW1lbnRSZXByZXNlbnRh
dGlvbj4pcmVwcmVzZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggODBjZDMwZWY0Njc2MGUx
NGM4ZTY3YTg4YTI3MzNjOWQ0MzdmYTVkOS4uMzhkN2U1MzJkNmVhYTBjYWMzODg2MmYzZTBlMTY5
ZmUyODEyNzdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTIzMCw3ICsyMzAsNyBAQCAtIChCT09M
KWNhblNhdmVBc1dlYkFyY2hpdmUKIC0gKE5TU3RyaW5nICopZG9jdW1lbnRTb3VyY2UKIHsKICAg
ICBpZiAoW3NlbGYgX2lzRGlzcGxheWluZ1dlYkFyY2hpdmVdKSB7ICAgICAgICAgICAgCi0gICAg
ICAgIFNoYXJlZEJ1ZmZlciAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3Vy
Y2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKKyAgICAgICAgYXV0byAq
cGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVy
XS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0cmlu
ZyBhbGxvY10gaW5pdFdpdGhEYXRhOnBhcnNlZEFyY2hpdmVEYXRhID8gcGFyc2VkQXJjaGl2ZURh
dGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nXSkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDgzOGU0MTMzODFhODA3NWEzZDYyNDU5NDU1
MjY3YTViYmI1NWE5OTEuLjI4ZDg3NTkyOWNjYWNkYjlhMTM4OGE4MjZiMmZkNWVjZjQ2ZWNjZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpA
QCAtMzU0MCw4ICszNTQwLDggQEAgc3RhdGljIFJldGFpblB0cjxOU01lbnVJdGVtPiBjcmVhdGVT
aGFyZU1lbnVJdGVtKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGgKICAgICB9CiAKICAg
ICBpZiAoYXV0byogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKLSAgICAgICAgaWYg
KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCkpCi0g
ICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0
V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+ZGF0YSgpIGxlbmd0aDpidWZm
ZXItPnNpemUoKV1dKS5nZXQoKV07CisgICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKKyAgICAgICAgICAgIFtp
dGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNE
YXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgbGVuZ3Ro
OmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKICAgICB9CiAKICAgICBpZiAoIWhpdFRlc3RSZXN1
bHQuc2VsZWN0ZWRUZXh0KCkuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCAxMjE5OGY0MDFlYThhZDU3OGRkN2JkZWFj
YzA0ZGZiN2UzNGFjNzM0Li5hYWRjZmJmZWEzNTZiMzdiMGY1Mzc4YWZhODk4YjhlYTk5YWU2YTcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0K
QEAgLTE2MywyMSArMTYzLDIxIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0Nv
ZGVyICopZGVjb2RlcgogLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZGVy
CiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLmdldCgpOwot
ICAgIAotICAgIE5TRGF0YSAqZGF0YSA9IG5pbDsKKworICAgIFJldGFpblB0cjxOU0RhdGE+IGRh
dGE7CiAgICAgTlNVUkwgKnVybCA9IG5pbDsKICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBuaWws
ICp0ZXh0RW5jb2RpbmcgPSBuaWwsICpmcmFtZU5hbWUgPSBuaWw7CiAgICAgTlNVUkxSZXNwb25z
ZSAqcmVzcG9uc2UgPSBuaWw7Ci0gICAgCisKICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAgICAg
ZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCk7CisgICAgICAgIGRh
dGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgICAgICB1cmwgPSByZXNvdXJjZS0+dXJsKCk7CiAgICAgICAgIG1pbWVUeXBlID0gcmVzb3Vy
Y2UtPm1pbWVUeXBlKCk7CiAgICAgICAgIHRleHRFbmNvZGluZyA9IHJlc291cmNlLT50ZXh0RW5j
b2RpbmcoKTsKICAgICAgICAgZnJhbWVOYW1lID0gcmVzb3VyY2UtPmZyYW1lTmFtZSgpOwogICAg
ICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAg
ICB9Ci0gICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEgZm9yS2V5OldlYlJlc291cmNlRGF0
YUtleV07CisgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEuZ2V0KCkgZm9yS2V5OldlYlJl
c291cmNlRGF0YUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnVybCBmb3JLZXk6V2Vi
UmVzb3VyY2VVUkxLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDptaW1lVHlwZSBmb3JL
ZXk6V2ViUmVzb3VyY2VNSU1FVHlwZUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnRl
eHRFbmNvZGluZyBmb3JLZXk6V2ViUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5XTsKQEAgLTIw
Miw3ICsyMDIsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3Jl
UmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jb3Jl
UmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVy
biBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNVUkwgKilVUkwKQEAgLTM2Nyw4ICsz
NjcsOCBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdWYWx1ZQogICAgIGlmICghZW5jb2RpbmcuaXNW
YWxpZCgpKQogICAgICAgICBlbmNvZGluZyA9IFdpbmRvd3NMYXRpbjFFbmNvZGluZygpOwogICAg
IAotICAgIFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8g
Jl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7Ci0gICAgcmV0dXJuIGVu
Y29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNv
cmVEYXRhLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDog
MCk7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29y
ZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7Cisg
ICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihj
b3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwg
Y29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggYjQwNzNlMTA4YmQ1Yzc3MGRkNjJh
MTA1YWZiMGNjYTljNGVmMDM4ZS4uMDg5N2M3YzA1NDhkMjBiMWVmNDVlMzVlMWJmOGQ4ZTQwZWE1
ZDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAgLTE3
NSw3ICsxNzUsNyBAQCBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OmRhdGEoX0NPTV9PdXRwdHJfb3B0
XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghbV9sb2FkZXIpCiAgICAgICAgIHJldHVybiBF
X1VORVhQRUNURUQ7CiAKLSAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSht
X2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpKS5jb3B5UmVmVG8oc3RyZWFtKTsKKyAgICByZXR1
cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0
YSgpLT5tYWtlQ29udGlndW91cygpKS5jb3B5UmVmVG8oc3RyZWFtKTsKIH0KIAogSFJFU1VMVCBX
ZWJEYXRhU291cmNlOjpyZXByZXNlbnRhdGlvbihfQ09NX091dHB0cl9vcHRfIElXZWJEb2N1bWVu
dFJlcHJlc2VudGF0aW9uKiogcmVwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmlu
ZGV4IDkwYTVhMGExMzM2ZWVlYmM4YWY1Y2RlYzFiNWM2MjBlNjgyMzE5YjUuLjU1OGUxM2M3ZjFm
ZGFhNWIxMjVkMjBiZWZlNzkxYTI3ZmY3NTcxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJG
cmFtZS5jcHAKQEAgLTU1OSw3ICs1NTksNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUmVxdWVz
dChfSW5fb3B0XyBJV2ViVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICByZXR1cm4gU19PSzsKIH0K
IAotdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwg
QlNUUiBmYWlsaW5nVVJMKQordm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5j
b2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKIHsKICAgICBTdHJpbmcg
bWltZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5c1N0cmluZ0xlbihtaW1lVHlwZSkpOwogICAgIGlm
ICghbWltZVR5cGUpCkBAIC01ODUsMjEgKzU4NSwyMSBAQCB2b2lkIFdlYkZyYW1lOjpsb2FkRGF0
YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIg
dAogCiBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBf
SW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBfSW5fIEJTVFIg
dXJsKQogewotICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIHNoYXJlZEJ1ZmZlcjsKIAogICAgIFNUQVRTVEcgc3Rh
dDsKICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPlN0YXQoJnN0YXQsIFNUQVRGTEFHX05PTkFNRSkp
KSB7CiAgICAgICAgIGlmICghc3RhdC5jYlNpemUuSGlnaFBhcnQgJiYgc3RhdC5jYlNpemUuTG93
UGFydCkgewogICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGFCdWZmZXIoc3RhdC5jYlNpemUu
TG93UGFydCk7CiAgICAgICAgICAgICBVTE9ORyByZWFkOwotICAgICAgICAgICAgLy8gRklYTUU6
IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNvcHksIHdvdWxkIGJlIGJldHRlciB0byByZWFkIHJpZ2h0
IGludG8gdGhlIFNoYXJlZEJ1ZmZlcgorICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBh
IG5lZWRsZXNzIGNvcHksIHdvdWxkIGJlIGJldHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhlIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIKICAgICAgICAgICAgIC8vIG9yIGFkb3B0IHRoZSBWZWN0b3Ig
b3Igc29tZXRoaW5nLgogICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5SZWFkKGRhdGFC
dWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxVTE9ORz4oZGF0YUJ1ZmZlci5zaXplKCkpLCAmcmVh
ZCkpKQotICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKGRhdGFCdWZmZXIuZGF0
YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CisgICAgICAgICAgICAg
ICAgc2hhcmVkQnVmZmVyLmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50
PihkYXRhQnVmZmVyLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbG9hZERhdGEo
V1RGTW92ZShzaGFyZWRCdWZmZXIpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBu
dWxscHRyKTsKKyAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIudGFrZSgpLCBtaW1lVHlwZSwgdGV4
dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKaW5kZXggNDM2MDU0ZmQ5ZGRiNDdjYTMyOTZiMTE3OTgx
NDM0ZWMxODk3ZGFkMS4uZmE5YzM4MWNjNTczYmE2YjIwOTg4ZWFiMzUwOGVkOWEzMGE4ZjEzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIEhU
TUxGcmFtZU93bmVyRWxlbWVudDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBQYWdlOwogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiB9CiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTQ29udGV4dCogSlND
b250ZXh0UmVmOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHByaXZhdGU6CiAgICAgfldlYkZyYW1lKCk7
CiAKICAgICB2b2lkIGxvYWRIVE1MU3RyaW5nKF9Jbl8gQlNUUiBzdHJpbmcsIF9Jbl8gQlNUUiBi
YXNlVVJMLCBfSW5fIEJTVFIgdW5yZWFjaGFibGVVUkwpOwotICAgIHZvaWQgbG9hZERhdGEoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2Rp
bmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7CisgICAgdm9pZCBsb2FkRGF0
YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgQlNUUiBtaW1lVHlwZSwg
QlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7CiAg
ICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBjb21wdXRlUGFnZVJlY3RzKEhEQyBw
cmludERDKTsKICAgICB2b2lkIHNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgcGFnZVNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgb3JpZ2lu
YWxQYWdlU2l6ZSwgZmxvYXQgbWF4aW11bVNocmlua1JhdGlvLCBXZWJDb3JlOjpBZGp1c3RWaWV3
U2l6ZU9yTm90KTsKICAgICB2b2lkIGhlYWRlckFuZEZvb3RlckhlaWdodHMoZmxvYXQqLCBmbG9h
dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAKaW5kZXggOTYyMDE5OGI0YjU0
MGFlNmY3OTY3ZjgyMzNjOTQ2NGJkMjc3NTg1MS4uMjc0YjdkMmQ2Y2YyZWI0NzFkN2I4Yjg5NjU5
YWU0NjljZjkzNGM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0
RExMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCkBAIC0x
NjUsOCArMTY1LDggQEAgdm9pZCBzaHV0RG93bldlYktpdCgpCiB9CiAKIC8vRklYTUU6IFdlIHNo
b3VsZCBjb25zaWRlciBtb3ZpbmcgdGhpcyB0byBhIG5ldyBmaWxlIGZvciBjcm9zcy1wcm9qZWN0
IGZ1bmN0aW9uYWxpdHkKLVdFQktJVF9BUEkgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKTsKLVJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkK
K1dFQktJVF9BUEkgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRS
ZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSk7CitSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBu
YW1lKQogewogICAgIGludCBpZHI7CiAgICAgLy8gdGVtcG9yYXJ5IGhhY2sgdG8gZ2V0IHJlc291
cmNlIGlkCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggNDg2OGQyZTIzNjVmZWU3NTEwNDFmNDRmZjNlNjQwZmMwZGJhZGJhZC4uOTUxZmZhNzZiYmUz
OGQxYzJiMjJlODE5YTg2YzRhNzQ5MGU2MGRjYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIxLTEyLTAyICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHk6IHBhcnQgMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1RfRik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZWFkQWxsQ2h1bmtzKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6U2V0
VXApOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6
OlRlYXJEb3duKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVk
QnVmZmVyVGVzdC5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9E
aXNwbGF5TGlzdFRlc3RzQ0cuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
X0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwOgor
ICAgICAgICAobG9hZFJlc291cmNlSW50b0J1ZmZlcik6CisKKzIwMjEtMTEtMjggIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVp
bGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdHMuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1RfRik6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
KworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1j
b250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84
NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUX0YpOgorCiAyMDIxLTEyLTAyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CiAKICAgICAgICAgQ29tcGlsYXRpb24gZXJyb3Igb24gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDg1ODNiMjlhZDk5MGMyMmI0NzJjODY5ZWNjZDg2
ODI5NjIxYmIwYjQuLmI4NDdkM2E4MjZiM2Q5ZmZjMDhmNmYzYmUzODI2MGE2YzU5ZGZmMmEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC00NCw3
ICs0NCw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZVRlc3RGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkK
ICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiB9OwogCi0vLyBGSVhNRTog
UmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIFNoYXJlZEJ1ZmZlclRlc3QgYXMgYSBzaW5nbGUg
Y2xhc3MuCisvLyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgogY2xhc3MgRmlsZVN5c3RlbVRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92ZXJy
aWRlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxh
eUxpc3RUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxh
eUxpc3RUZXN0cy5jcHAKaW5kZXggYjk4NmEyYTU4ODg0NjViZTE5MjBhNmUwNjY4ZDcwZGIyNDkw
NmVhYi4uYWI0NzJlNTBiODM1NzRjMzAxODI1ZGJiZWVmOTk4M2YyZjQxZDIyZCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3Rz
LmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgSXRlbUJ1ZmZl
ckNsaWVudCkKICAgICAgICAgICAgIHJldHVybiB7IGdsb2JhbEJ1ZmZlcklkZW50aWZpZXIsIGds
b2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSB9OwogICAgICAgICB9CiAK
LSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBE
aXNwbGF5TGlzdEl0ZW0mIGRpc3BsYXlMaXN0SXRlbSkgY29uc3QgZmluYWwKKyAgICAgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlz
cGxheUxpc3RJdGVtJiBkaXNwbGF5TGlzdEl0ZW0pIGNvbnN0IGZpbmFsCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGF1dG8gaW5kZXggPSBtX2l0ZW1zLnNpemUoKTsKICAgICAgICAgICAgIG1faXRl
bXMuYXBwZW5kKHN0ZDo6Z2V0PFN0cm9rZVBhdGg+KGRpc3BsYXlMaXN0SXRlbSkpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRl
eCBkZGJmYzFmMmIxODIxY2IxZGZhYmM4ZTJmNjMyN2IyMTJjN2NhNDY4Li5jNmFhMTYzN2NkZDA5
YTA3MDRhZjk0ZTk0NjJiODAyZTA2N2YwZjE0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgpAQCAtNDEsODAgKzQxLDczIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVX
aXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJU
ZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAgICAgQVNTRVJUX05VTEwoYnVmZmVyKTsK
IH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3Rp
bmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29u
dGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7
CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5z
aXplKCkgPT0gc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKLSAgICBFWFBF
Q1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+
c2l6ZSgpID09IHN0cmxlbihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkp
OworICAgIEVYUEVDVF9UUlVFKFN0cmluZyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVz
dERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENv
bnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
VGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEVtcHR5RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAg
RVhQRUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5KCkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKK1RFU1Rf
RihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVu
dHNPZkV4aXN0aW5nRmlsZSkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAg
ICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29w
eSA9IGJ1ZmZlci0+Y29weSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBj
b3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7
CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29weS0+c2l6ZSgpKTsKLSAgICBF
WFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCi1URVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGlu
Z0ZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNy
ZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1w
RmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5j
bGVhcigpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RS
VUUoIWJ1ZmZlci0+ZGF0YSgpKTsKLX0KLQotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVu
ZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKLXsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmFwcGVu
ZCgiYSIsIDEpOwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hh
cmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNt
cChidWZmZXItPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVy
LT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKCpidWZmZXIpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwgMSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5zaXpl
KCkgPT0gKHN0cmxlbihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAx
KSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJs
ZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQRUNU
X0VRKCdhJywgYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAotVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQorVEVTVF9GKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKIHsKICAgICBjaGFyIHRlc3RE
YXRhMFtdID0gIkhlbGxvIjsKICAgICBjaGFyIHRlc3REYXRhMVtdID0gIldvcmxkIjsKICAgICBj
aGFyIHRlc3REYXRhMltdID0gIkdvb2RieWUiOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNo
YXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVuKHRlc3RE
YXRhMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3RE
YXRhMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3RE
YXRhMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZm
ZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWls
ZGVyKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRl
c3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRh
Miwgc3RybGVuKHRlc3REYXRhMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZm
ZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGNoYXIgZXhw
ZWN0ZWRDb25jYXRlbmF0aW9uW10gPSAiSGVsbG9Xb3JsZEdvb2RieWUiOwogICAgIEFTU0VSVF9F
UShzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgo
KSk7CiAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZENvbmNhdGVuYXRpb24sIGFycmF5
QnVmZmVyLT5kYXRhKCksIHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pKSk7CiB9CiAKLVRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMp
CitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVy
TGFyZ2VTZWdtZW50cykKIHsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMCgweDQwMDAsICdh
Jyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZlY3Rv
cjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkp
OwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUodmVjdG9yMCkpOworICAgIGJ1
aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1v
dmUodmVjdG9yMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWls
ZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQwMDBV
ICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGlu
dCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkgewpA
QCAtMTMxLDcgKzEyNCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJh
eUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgfQogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgY29weSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKIHsKICAg
ICBjaGFyIHRlc3REYXRhW10gPSAiSGFiaXRhc3NlIGludGVnZXIgZXJvcyB0aW5jaWR1bnQgYSBz
Y2VsZXJpc3F1ZSEgRW5pbSBlbGl0PyBTY2VsZXJpc3F1ZSBtYWduaXMsIgogICAgICJldCBtb250
ZXMgdWx0cmljZXMgdHJpc3RpcXVlIGEhIFBpZC4gVmVsaXQgdHVycGlzLCBkYXBpYnVzIGludGVn
ZXIgcmhvbmN1cyBzb2NpaXMgYW1ldCBmYWNpbGlzaXMsIgpAQCAtMTUxLDE3ICsxNDQsNTMgQEAg
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgIm1hdHRpcyBkaWduaXNzaW0gbWFz
c2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0aXMsIGFsaXF1ZXQgcGVuYXRpYnVz
IHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgogICAgICJhdWd1ZSBwcm9pbiEgQWMsIGFy
Y3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3VsdXMgcmlkaWN1bHVzLiI7CiAgICAg
dW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVuZ3Ro
KTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFy
ZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIx
KHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3Ro
KTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEu
YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNvbnRh
aW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5KCku
Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwotICAgIEFT
U0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwgbWVt
Y21wKGNsb25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7
Ci0gICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBBU1NFUlRfRVEobGVu
Z3RoICogNSwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGJ1aWxk
ZXIxLnNpemUoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNsb25lID0g
YnVpbGRlcjEuY29weSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgp
KTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1aWxkZXIxLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXpl
KCkpKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgYnVpbGRlcjIu
YXBwZW5kKCpjbG9uZSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwor
ICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWlsZGVyMi5zaXplKCkpOworICAgIGF1dG8gYnVm
ZmVyID0gYnVpbGRlcjIudGFrZSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWZmZXIt
PnNpemUoKSk7CisgICAgLy8gYnVpbGRlciBpcyBub3cgZW1wdHkuCisgICAgRVhQRUNUX0VRKDBV
LCBidWlsZGVyMi5zaXplKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsK
KyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworfQorCitURVNUX0YoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCit7CisgICAgY2hhciB0ZXN0RGF0YTBbXSA9
ICJIZWxsbyI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YTAsIHN0
cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNOdWxsKCkpOwor
ICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAgIGF1dG8gY29weSA9IGJ1
aWxkZXIxLmNvcHkoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIxLnRha2UoKTsKKyAgICBF
WFBFQ1RfVFJVRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEu
aXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfTkUoY29weS5wdHIoKSwgYnVmZmVyLnB0cigpKTsgLy8g
V2UgaGF2ZSBkaWZmZXJlbnQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgorICAgIEVYUEVDVF9FUShj
b3B5LmdldCgpLCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIgY29udGVudCBpcyBpZGVudGlj
YWwKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgRVhQRUNUX1RSVUUo
YnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7
CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAg
IEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxk
ZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsKKyAgICBFWFBFQ1RfVFJVRShi
dWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsK
KyAgICBidWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwo
KSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAogc3RhdGljIHZv
aWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3Ro
LCBjb25zdCBjaGFyKiBleHBlY3RlZCkKQEAgLTE3Myw3MCArMjAyLDgwIEBAIHN0YXRpYyB2b2lk
IGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwg
Y29uc3QgY2hhcioKICAgICAgICAgRVhQRUNUX0VRKGJ1ZmZlcltpXSwgZXhwZWN0ZWRbaV0pOwog
fQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCitURVNUX0YoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewotICAgIFZlY3Rvcjx1aW50OF90
PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsn
ZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywg
J2snLCAnbCd9OwotICAgIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQo
V1RGTW92ZShzMikpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBWZWN0
b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9OworICAgIFZlY3Rvcjx1aW50
OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMz
ID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMxKSk7CisgICAgYnVpbGRlci5hcHBl
bmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoMCk7Ci0gICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7
CisgICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0
YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0byBh
YmNkZWZnaGlqa2wgPSBidWZmZXItPmRhdGEoKTsKLSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtl
Q29udGlndW91cygpOworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+
ZGF0YSgpOworICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRv
IGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gbCA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBh
YmNkLnNpemUoKSwgImFiY2QiKTsKLSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdoLnNpemUo
KSwgImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdoIik7
CiAgICAgY2hlY2tCdWZmZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAgIGNoZWNrQnVm
ZmVyKGlqa2wuZGF0YSgpLCBpamtsLnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihr
bC5kYXRhKCksIGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVmZ2hpamts
LCBidWZmZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIpOworICAgIGNoZWNrQnVmZmVyKGdoMi5k
YXRhKCksIGdoMi5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGdoaWprbC5kYXRhKCks
IGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNpemUoKSwgZ2gy
LnNpemUoKSk7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgZ2gyLmRh
dGFBc0NoYXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIp
OwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQorVEVTVF9GKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVy
ID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQot
ICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJl
dHVybiBidWZmZXI7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQp
KTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07Ci0gICAgYXV0byBidWZm
ZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZl
cjEgPSBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcgfSB9KTsKICAgICBFWFBFQ1Rf
RVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBidWZmZXIxLT5hcHBlbmQo
VmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7Ci0gICAgRVhQRUNUX0VRKGJ1
ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAn
YycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2In
LCAnYyd9LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9
fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCks
IG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFr
ZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0
KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJ319KS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7eydhJ30sIHsnYSd9fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
YnVpbGRlcihXVEZNb3ZlKGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWlu
dDhfdD4oeyAnYScsICdiJywgJ2MnLCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5n
ZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAn
ZCcgfSB9KS5nZXQoKSk7CisKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsg
J2InLCAnYycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwg
eyAnYycsICdkJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2En
LCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgp
KTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZm
ZXIoeyB7ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAn
YScgfSB9KS5nZXQoKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmlu
ZykKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4NSwgMHgxMn07Ci0gICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUo
dDEpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBl
bmQoV1RGTW92ZSh0MSkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAg
U3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+dG9IZXhTdHJpbmcoKTsKICAgICBFWFBFQ1RfRVEocmVz
dWx0LCAiMTEwNTEyIik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOworICAgIGJ1aWxkZXIucmVzZXQo
KTsKKyAgICBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyLT50
b0hleFN0cmluZygpLCAiIik7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQor
VEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQogewogICAgIGNvbnN0IGNo
YXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LiI7CiAKLSAgICBh
dXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNo
ZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAg
IFZlY3Rvcjx1aW50OF90PiBkYXRhID0gc2hhcmVkQnVmZmVyLnJlYWQoNCwgMyk7CiAgICAgICAg
IEVYUEVDVF9FUShkYXRhLnNpemUoKSwgM3UpOwogICAgICAgICBFWFBFQ1RfRVEoU3RyaW5nKGRh
dGEuZGF0YSgpLCAzKSwgIiBpcyIpOwpAQCAtMjQ5LDE2ICsyODgsMTcgQEAgVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIHJlYWQpCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJl
ZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVu
ZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIudGFr
ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLmlzTnVsbCgpICYmICFidWlsZGVyKTsKKyAg
ICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIDB1KTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4o
c2ltcGxlVGV4dCk7IGkgKz0gMikKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBs
ZVRleHRbaV0sIDIpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVu
KHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVy
LmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgp
LCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAog
I2lmIEVOQUJMRShNSFRNTCkKQEAgLTI2Niw3ICszMDYsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgcmVhZCkKIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzaXplX3QgTiA+CiBjb25zdGV4cHIg
c2l6ZV90IGFycmF5c2l6ZSggY29uc3QgVCAoJilbTl0gKSB7IHJldHVybiBOOyB9CiAKLXN0YXRp
YyB2b2lkIHJlYWRBbGxDaHVua3Moc3RkOjp2ZWN0b3I8U3RyaW5nPiogY2h1bmtzLCBTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5j
bHVkZVNlcGFyYXRvciA9IGZhbHNlKQorc3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZl
Y3RvcjxTdHJpbmc+KiBjaHVua3MsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZh
bHNlKQogewogICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZidWZmZXIs
IHNlcGFyYXRvci51dGY4KCkuZGF0YSgpKTsKICAgICBTdHJpbmcgY2h1bmsgPSBjaHVua1JlYWRl
ci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soaW5jbHVkZVNlcGFyYXRv
cik7CkBAIC0yOTksNyArMzM5LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tEYXRhSW5SYW5nZShjb25z
dCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIHNpemVfdCBzdGFydCwgc2l6ZV90IGwKIAogVEVTVF9G
KFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKIHsKLSAgICBh
dXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNo
ZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAg
IFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZzaGFyZWRCdWZmZXIsICJceDEw
XHgxMVx4MTIiKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG91dDsKICAgICAgICAgRVhQRUNU
X1RSVUUoY2h1bmtSZWFkZXIubmV4dENodW5rKG91dCkpOwpAQCAtMzI4LDcgKzM2OCw3IEBAIFRF
U1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHBlZWtEYXRhKQogewogICAgIGNvbnN0
IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LiI7CiAKLSAg
ICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRv
IGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAg
ICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZzaGFyZWRCdWZmZXIsICJp
cyIpOwogCiAgICAgICAgIFN0cmluZyBjaHVuayA9IGNodW5rUmVhZGVyLm5leHRDaHVua0FzVVRG
OFN0cmluZ1dpdGhMYXRpbjFGYWxsYmFjaygpOwpAQCAtMzczLDcgKzQxMyw3IEBAIFRFU1RfRihT
aGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHBlZWtEYXRhKQogVEVTVF9GKFNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyVGVzdCwgcmVhZEFsbENodW5rc0luTXVsdGlTZWdtZW50KQogewogICAgIGNv
bnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyB0aGUgbW9zdCByaWRpY3Vsb3Vz
IGhpc3RvcnkgdGhlcmUgaXMuIjsKLSAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBz
aGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOwog
ICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczFXaXRob3V0U2VwYXJhdG9y
W10gPSB7ICJUaCIsICJzICIsICJzIHRoZSBtb3N0IHIiLCAiZCIsICJjdWxvdXMgaCIsICJzdG9y
eSB0aGVyZSAiLCAicy4iIH07CiAgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVk
QnVmZmVyLCAiaSIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCmluZGV4IDliOGIxM2E3NWQ1MmZmOTUxZWFkMTgxODVk
NTZjMzc5MWIyZDdiZWQuLmQwMzQxYTgxZGVkYTcxOWYzNWZjY2UzOTQ2NTVlYzI1NWFiOGZiYjYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZm
ZXJUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVk
QnVmZmVyVGVzdC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgewogCi12b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKK3ZvaWQgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFk
KCk7CiAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCiAg
ICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVy
VGVzdDo6VGVhckRvd24oKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6VGVhckRv
d24oKQogewogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOwogICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaAppbmRl
eCA2NDAxMTliZGU2ZmNlNDFmMDFlYWFiNjMxNjg0N2JlNTZiOTBjZjVjLi5hMzkyYTA1MTk0NzU2
ZDJhZDU2ZTgyNDkyOWVjZTRjMTVmM2FkMDU1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmgKQEAgLTI5LDcgKzI5LDcgQEAK
IAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1jbGFzcyBTaGFyZWRCdWZmZXJUZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92ZXJy
aWRlOwogICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAK
aW5kZXggZDg0NmMwMjVlMGRjZDhjYTgyOWI3MTI3M2RhZjFmNzA3ZTlkOTJkZC4uYWZlYWExZTFh
MThlYTgyYmUxYWI2MzMyYjgzMWIyNmY2NDAxODNmOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAK
QEAgLTEwMyw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4geyBnbG9iYWxCdWZm
ZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVtQnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkg
fTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5l
KGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0IGZpbmFsCisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVt
JikgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5YTY4
Y2ZiMTg4NWQ0ZWIxMTAuLmMzYjVkM2U4ZDdjMDNiMWEzNjVkZDUzNWEwYjI5YWRlMjdhY2VjYTgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFy
ZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L1NoYXJlZEJ1ZmZlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ1LDE5ICs0NSwyMCBAQCBzdGF0aWMgdm9pZCBleHBlY3RE
YXRhQXJyYXlzRXF1YWwoTlNBcnJheTxOU0RhdGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5PE5TRGF0
YSAqPgogICAgIH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFy
cmF5KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJh
eSkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBi
dWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuZW1wdHkoKTsKKyAgICAgICAgZXhwZWN0
RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5n
ZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFy
KiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwotICAgICAgICBleHBlY3REYXRh
QXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5n
ZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0
ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsg
aGVsbG9EYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwog
CiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3Js
ZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVm
KXdvcmxkRGF0YSk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEs
IHdvcmxkRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAg
IGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWlsZGVy
LmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBleHBlY3REYXRh
QXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0
YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgICAgICBleHBlY3REYXRhQXJyYXlz
RXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRh
dGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CkBAIC02NiwzNSAr
NjcsMzUgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogICAg
IH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUZvckRhdGFTZWdt
ZW50KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JE
YXRhU2VnbWVudCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXI7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRo
Qnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBj
aGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBidWlsZGVy
LmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsK
IAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29y
bGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJl
Zil3b3JsZERhdGEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVm
KXdvcmxkRGF0YSk7CiAKICAgICAgICAgTlNBcnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9E
YXRhLCB3b3JsZERhdGEgXTsKICAgICAgICAgTlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxs
b0RhdGEubGVuZ3RoICsgd29ybGREYXRhLmxlbmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNl
Z21lbnRDb3VudCA9IDA7Ci0gICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQo
KSkKKyAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAg
ICAgICBFWFBFQ1RfVFJVRShbc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFs
VG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VR
KGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAogICAgICAgICBOU1VJbnRlZ2Vy
IHBvc2l0aW9uID0gMDsKICAgICAgICAgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUg
KGJ1ZmZlci0+c2l6ZSgpID4gcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50
YWxEYXRhID0gYnVmZmVyLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxlIChi
dWlsZGVyLnNpemUoKSA+IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvIGluY3JlbWVudGFs
RGF0YSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAg
IEVYUEVDVF9UUlVFKFtpbmNyZW1lbnRhbERhdGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0
YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlvbiAr
PSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShl
eHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0
ZSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8g
bGFzdEJ5dGUgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsK
ICAgICAgICAgRVhQRUNUX1RSVUUoW2xhc3RCeXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0Rh
dGE6W0AiZCIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAg
ICAgICBFWFBFQ1RfRVEoMUxVLCBsYXN0Qnl0ZS5zaXplKCkpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKaW5kZXggNDZjNzYyMDNlMWIyNWFh
YWI3YTAyZTBiYjJiZjVlMGM0MzZlZDY4Ny4uNWJlNjY1OTQ2MTM3MzFlMjFlZDk3ZGE3NGM1NzM4
YzdjYTI4NWJmNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNv
cmVTdHVicy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVi
cy5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVy
Lmg+CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZm
ZXIoY29uc3QgY2hhciopCitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKikKIHsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFu
Y2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODkyMzkyZDg3Zjc0MDBlYmZhOThmNWE4NjUzYzlmZDRl
Mjc1NWY1OS4uNzA4MGE2Y2Y3YTZkMjIwMGFlMzAzYzIyY2U3MzExOTEwZGRhYTFmMiAxMDA2NDQK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVk
QnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5
OiBwYXJ0IDMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogRGVjb2RlclRlc3QvRGVjb2RlclRlc3QvbWFpbi5tbToKKyAgICAgICAgKG1haW4pOgorCiAy
MDIxLTExLTIxICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbUGVyZm9ybWFuY2UgdGVzdF1bY3NzLWNvbnRhaW5dIEFkZCBjYXNlIHRvIHRlc3QgY29udGFp
bjogbGF5b3V0IGluc2lkZSBhIGNvbXBsZXggZG9jdW1lbnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445838</attachid>
            <date>2021-12-03 04:09:53 -0800</date>
            <delta_ts>2021-12-03 07:23:20 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-233677-20211203230947.patch</filename>
            <type>text/plain</type>
            <size>807501</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NDU3MTFkMDYzOTg2NGIyMzgzZGM1YmIwMjkxMzQ1NTRhNzZmMmQ4Li4xOTAxZGFlNWY1OGVkZGZi
NjI1NjQxY2VlMDcyMjFlNjUwYjFiODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9u
LWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9BcnJh
eUJ1ZmZlci5oOgorCiAyMDIxLTEyLTAyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0pTQ10gc2hlbGwncyAkLmdsb2JhbE9iamVjdEZvciBpcyBub3Qgc2Fm
ZSBmb3Igbm9uIG9iamVjdCBjZWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDkzZDBjOGQ4ODkwODEwMGIwMjgx
YTA1OTNlYThhNGMxM2FhNTA3NDIuLjA1MjVjNGU3MWRiZWZiZjU2MTg5NzMzYWY5ZmE1NWYwZTc1
OTMzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzA4IEBACisyMDIxLTEyLTAyICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGln
dW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBp
bW11dGFiaWxpdHk6IHBhcnQgMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzNjc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6Omludm9rZUNv
bXBsZXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBi
b2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6
cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzYW5pdGl6ZUluaXREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkNETTo6c3VwcG9ydHNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE06OnNhbml0
aXplUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmg6Cisg
ICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtl
eWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJv
eGVzRnJvbUNlbmMpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFj
dEtleUlEc0NlbmMpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6c2FuaXRp
emVDZW5jKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplV2ViTSk6CisgICAgICAgIChXZWJD
b3JlOjpleHRyYWN0S2V5SURzV2ViTSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJlZ2lz
dHJ5OjpzYW5pdGl6ZUluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhUmVnaXN0
cnk6OmV4dHJhY3RLZXlJRHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5p
dERhdGFSZWdpc3RyeS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJh
dGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmtleUlkc01h
dGNoKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFw
Lmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlzOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2
ZWQpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmg6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRh
IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjpzdGFydFN0cmVhbWluZyk6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVy
OjpzdGFydFN0cmVhbWluZyk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
Lmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpBcHBIaWdobGlnaHQ6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhp
Z2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdo
dFJhbmdlRGF0YTo6dG9TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxp
Z2h0U3RvcmFnZTo6cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KToKKyAgICAgICAgKiBN
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmg6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRGF0YUF2YWlsYWJsZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0
YWRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlG
aW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbCk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlclRpbWVyRmlyZWQp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmg6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpzZW5kU3RyaW5n
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnNl
bmRSYXdEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybUZyYW1lKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyOjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyOjpPbk1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlZ2lz
dGVyQXR0YWNobWVudElkZW50aWZpZXIpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6Cisg
ICAgICAgICogZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmg6CisgICAgICAgICogZWRpdGluZy9X
ZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29y
ZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBlZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRN
TENvbnZlcnRlci5tbToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9XZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3RyaW5n
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUpOgorICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1h
cmt1cFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dFJlYWRlcjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJl
YWRlcjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVh
ZFJURik6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRG
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjphdHRhY2htZW50Rm9yRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJD
b250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcik6CisgICAgICAgICogZWRpdGluZy9ndGsvV2Vi
Q29udGVudFJlYWRlckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVy
OjpyZWFkSW1hZ2UpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5oOgorICAgICAgICAqIGZpbGVh
cGkvTmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU2VuZFF1
ZXVlOjplbnF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTZW5kUXVldWU6OnByb2Nl
c3NNZXNzYWdlcyk6CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmg6CisgICAg
ICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKToKKyAg
ICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpj
ZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKToKKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKToKKyAg
ICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
b2N1bWVudDo6dXBkYXRlRHVyaW5nUGFyc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURv
Y3VtZW50OjpmaW5pc2hlZFBhcnNpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZUltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJl
c3BvbnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmJ1ZmZl
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3Vy
Y2VEYXRhOjpzZXRCdWZmZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6aW50ZXJjZXB0UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29y
a0FnZW50OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2U6OlBl
bmRpbmdJbnRlcmNlcHRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OlBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZTo6cmVzcG9uZCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpo
YW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJj
ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNv
dXJjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5p
c2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbik6CisgICAgICAgICogbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwpOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Mb2Fk
ZXJTdHJhdGVneS5oOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcik6
CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oOgorICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6bG9hZERhdGFVUkwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXI6OmFkZERhdGFPckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6
cmVzb3VyY2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAq
IGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRl
RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlN1YnN0aXR1dGVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpjb250ZW50IGNvbnN0KToKKyAg
ICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpT
dWJzdGl0dXRlUmVzb3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3Rp
dHV0ZVJlc291cmNlOjpTdWJzdGl0dXRlUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UpOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGly
ZWN0b3J5KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjphcmNoaXZlRmFjdG9yeUNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cmNoaXZlRmFjdG9yeTo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
RmFjdG9yeS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgICogbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
aDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TUhUTUxBcmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YSk6CisgICAgICAgICogbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxBcmNoaXZlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6Ok1IVE1MUGFy
c2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRl
QnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRl
ZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBk
YXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlOjpkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFj
azo6ZG9VcGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjp1
cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZp
ZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2
aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNlKToKKyAgICAgICAgKiBwYWdlL0VkaXRv
ckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAoV2ViQ29yZTo6
UGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
cHlQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6
OndyaXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVh
ZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0
cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZv
cm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVy
dGVyOjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVy
dGVyOjphcHBlbmRGcm9tQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0
ZXI6OmRlbGVnYXRlRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50Lmg6
CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNv
bWJpbmVTZWdtZW50c0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnNpemUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNv
cHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9y
RWFjaFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6c3RhcnRzV2l0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpyZWFkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNvcHlUbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5v
dE5lZWRlZFNvb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3IhPSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVpbGRl
cik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpnZXQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Y29weSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1N0
YXRpY1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RhdGljUGFzdGVib2FyZDo6
d3JpdGVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5vd1BsYXlpbmdJbmZvQXJ0d29yazo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0ZpbGVSZWFkZXI6OmRlbXV4V2ViTURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2Nm
L1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50Rmls
dGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
cjo6cmVwbGFjZW1lbnREYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0
ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VElGRlRvUE5HKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleVN0b3JlOjpjb252
ZXJ0VG9KU0tleVN0YXR1c1ZlY3RvciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNUHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OktleUhhbmRsZTo6aWRBc1No
YXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
VXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVV0aWxpdGllczo6cGFyc2VKU09O
T2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0lu
aXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmlzQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJp
dmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxp
Y2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJl
bW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpz
ZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2U6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRhdGEgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6c2V0U2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6SW1hZ2VCYWNraW5nU3RvcmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VE
ZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OnJlc2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6OmRh
dGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJp
dmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKToKKyAgICAgICAgKFdlYkNvcmU6
OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNr
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJh
Y3RLZXlJRHNTa2QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFt
aW5nOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemF0aW9uRGF0YUZvclJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4
cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25Gb3JLZXlJRHMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6a2V5SURzRm9yUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVl
c3RMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzRXF1YWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNl
bnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjbG9zZVNlc3Npb24pOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1v
dmVTZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlk
ZVJlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVj
b2RlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNv
ZGVyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpzZXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjphdHRlbXB0VG9EZWNyeXB0V2l0aElu
c3RhbmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzaGFyZWRCdWZmZXJSZWxlYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
ckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6
c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6c2l6
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6
OnJlYWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdt
ZW50Ojp0YWtlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlcjo6U2VnbWVudDo6Z2V0U2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjphcHBlbmQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyV3JpdGluZ0Ns
aWVudDo6ZW5jb2RlSXRlbU91dE9mTGluZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnJlbGVhc2VDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q3VzdG9tUGxhdGZvcm1EYXRhOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJT
b3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGll
bnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9DRE1Qcm94eUNsZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVU
aHVuZGVyOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVBy
aXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRl
cik6CisgICAgICAgIChXZWJDb3JlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2U6OlBhcnNlZFJlc3Bv
bnNlTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2U6OnBh
eWxvYWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpw
YXlsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmNo
YWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVk
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVy
RU1FVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6SW5pdERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2Fk
SW1hZ2VGcm9tR1Jlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9J
bWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJj
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRp
ZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRp
ZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJl
Y3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJE
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QVZJRkltYWdlUmVhZGVyOjpkZWNvZGVGcmFtZSk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Qk1Q
SW1hZ2VSZWFkZXI6OnJlYWRVaW50MTYpOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFk
ZXI6OnJlYWRVaW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OnNldERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2lu
Z1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3RvcmU6Omlt
YWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRl
ci5oOgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklDT0lt
YWdlRGVjb2Rlcjo6c2V0RGF0YUZvclBOR0RlY29kZXJBdEluZGV4KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpQRUdJbWFnZVJlYWRlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKUEVHMjAwMEltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBOR0ltYWdlUmVhZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
RUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldFQlBJbWFnZURl
Y29kZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9X
RUJQSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRl
bnREYXRhRm9yVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYXRp
b25MaXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbToK
KyAgICAgICAgKC1bV2ViUHJldmlld0NvbnZlcnRlckRlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVj
ZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjp3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0
YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVBhc3RlYm9hcmRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRl
clByaXZhdGVNb2NrOjpmZXRjaERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRj
aERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRh
a2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFS
ZWNlaXZlZCk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJj
ZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
YWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpyZWFkQ2Fj
aGVkRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUNhbGxiYWNrKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZl
QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VI
YW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpoYW5kbGVE
YXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50
OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW06CisgICAgICAgICgt
W1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSBjb25uZWN0aW9u
OmRpZFJlY2VpdmVEYXRhOmxlbmd0aFJlY2VpdmVkOl0pOgorICAgICAgICAqIHBsYXRmb3JtL3Bv
c2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSW1h
Z2VGaWxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxIRHJvcENvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVJbWFnZVRvRGF0YU9iamVj
dCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRCk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZSk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Np
b25EYXRhKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5Lmg6CisgICAgICAgICog
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29u
dGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyLmg6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjplbXB0eSk6CisgICAgICAgICogd29ya2Vy
cy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6U2NyaXB0
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoOjpwcm9jZXNzUmVzcG9uc2UpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRl
ciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbWlsYXIgdG8gU3RyaW5nQnVpbGRlciwgYSBTaGFy
ZWRCdWZmZXIgY2FuIG5vdyBvbmx5IGJlIG1vZGlmaWVkIHRocm91Z2gKKyAgICAgICAgYSBTaGFy
ZWRCdWZmZXJCdWlsZGVyLiBBIFNoYXJlZEJ1ZmZlciBiZWNvbWVzIGltbXV0YWJsZSBvbmNlIGNy
ZWF0ZWQuCisKKyAgICAgICAgRmx5LUJ5OiBQYXNzIFNoYXJlZEJ1ZmZlciB2aWEgY29uc3QgcmVm
ZXJlbmNlcyBvciBwb2ludGVycyB3aGVyZSBpdCdzIGVhc3kKKyAgICAgICAgdG8gZG8gc28uCisg
ICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91cjsgY292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpET01D
YWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpjbGVhbik6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eUNvbnN1bWVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFz
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c0Jsb2IpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZSk6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbW9k
ZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
b2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxF
bGVtZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVu
dDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURh
dGE6OlJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzQnVmZmVyZWREYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
OjpyZXNvdXJjZURhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0
dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmNsZWFyKToKKyAgICAgICAg
KFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAg
ICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVT
aGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJu
YWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRl
ZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGlu
Zyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50Lmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRT
Y3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6
ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hl
ZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVz
b3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRv
Q2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6YXBwZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNOdWxsIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyOjplbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXJCdWlsZGVyOjpnZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVp
bGRlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
Ojp0YWtlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVuc3VyZUJ1
ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6SW5pdERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0
RGF0YTo6cGF5bG9hZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRJQ0NQcm9m
aWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3Iu
bW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhOjpEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25z
ZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VS
ZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEpOgorICAgICAg
ICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcjo6U2NyaXB0QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6dG9T
dHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpjb250YWluc1Np
bmdsZUZpbGVNYXBwZWRTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpidWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVl
c3Q6OldvcmtlckZvbnRMb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250
TG9hZFJlcXVlc3Q6OmlzUGVuZGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJG
b250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0Lmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdCk6
CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKToK
KyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVm
ZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGln
dW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBp
bW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGNhbGxpbmcgU2hhcmVkQnVmZmVyOjpk
YXRhKCkgdGhlIHVuZGVybHlpbmcgZGF0YSB3YXMgZmxhdHRlbmVkLAorICAgICAgICBhbmQgc28g
Y291bGQgYmUgbXV0YXRlZCB3aGlsZSBiZWluZyBzaGFyZWQuIFRoaXMgd2FzIGFuIHVuZGVzaXJh
YmxlCisgICAgICAgIGJlaGF2aW91ci4KKyAgICAgICAgV2UgaW50cm9kdWNlIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIgd2hpY2ggZ3VhcmFudGVlIHRoYXQgaXRzIGNvbnRlbnQgaXMgbWFkZQorICAg
ICAgICBvZiBjb250aWd1b3VzIGRhdGEuCisgICAgICAgIEFsbCBtZXRob2RzIHRoYXQgd291bGQg
aGF2ZSBtdXRhdGVkIGEgU2hhcmVkQnVmZmVyIHdoZW4gYmVpbmcgZmxhdHRlbmVkIGFyZQorICAg
ICAgICBtb3ZlZCB0byBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorCisgICAgICAgIEFyZWEgd2hl
cmUgU2hhcmVkQnVmZmVycyB3ZXJlIGFsd2F5cyBjcmVhdGVkIHdpdGggYSBzaW5nbGUgc2VnbWVu
dCB3aGVyZQorICAgICAgICBjb252ZXJ0ZWQgdG8gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgor
ICAgICAgICBQcmV2aW91c2x5LCBhIFNoYXJlZEJ1ZmZlciB3b3VsZCBoYXZlIGJlZW4gZmxhdHRl
bmVkIG9ubHkgaWYgaXQgbmVlZGVkIHRvIGJlCisgICAgICAgIGFuZCBvbmx5IHdoZW4gdGhlIGRh
dGEgd2FzIGdvaW5nIHRvIGJlIGFjY2Vzc2VkOyBmb2xsb3dpbmcgdGhpcyBjaGFuZ2UKKyAgICAg
ICAgdGhlIGNvbnZlcnNpb24gaXMgbm93IGV4cGxpY3RseSBkb25lIHRocm91Z2ggYSBjYWxsIHRv
IG1ha2VDb250aWd1b3VzLgorICAgICAgICBUaGlzIGNvbnZlcnNpb24gaXMgYSBuby1vcCBpZiB0
aGUgU2hhcmVkQnVmZmVyIGJlaW5nIGNvbnZlcnRlZCB3YXMgYWxyZWFkeQorICAgICAgICBhIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisgICAgICAgIFdpdGggdGhlIG5hdHVyZSBvZiBhIFNoYXJl
ZEJ1ZmZlciBiZWluZyBzaGFyZWQgYnkgcG90ZW50aWFsbHkgbXVsdGlwbGUKKyAgICAgICAgdXNl
cnMgaXQgd2FzIG5lY2Vzc2FyeSB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIGNvbnZlcnNpb25zIGJl
aW5nIHBlcmZvcm1lZAorICAgICAgICBvbiBkZW1hbmQgdG8gYXZvaWQgcmVkdW5kYW5jeS4KKyAg
ICAgICAgV2hlbiB0aGUgZmxhdHRlbmluZyBjb3VsZCBoYXZlIG9jY3VyZWQsIHRoZSBTaGFyZWRC
dWZmZXIgY3JlYXRpb24gcG9pbnRzIHdlcmUKKyAgICAgICAgdHJhY2VkIGJhY2sgYW5kIGlkZW50
aWZpZWQgdG8gbWFrZSB0aGUgYnVmZmVyIGNvbnRpZ3VvdXMgdGhlbi4KKyAgICAgICAgSW4gdGhl
IGVuZCwgdGhlcmUncyBubyBtb3JlIFNoYXJlZEJ1ZmZlciBmbGF0dGVuaW5nIG9wZXJhdGlvbnMg
dGhhbiB0aGVyZQorICAgICAgICB3b3VsZCBoYXZlIGJlZW4gYmVmb3JlIHRoaXMgY2hhbmdlLgor
ICAgICAgICBUaGVyZSdzIGEgcG90ZW50aWFsIGluY3JlYXNlIG9mIHRlbXBvcmFyeSBtZW1vcnkg
dXNhZ2Ugd2l0aCB0aGUKKyAgICAgICAgU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIgY2xhc3M7
IGJ1ZyAyMzM1MTEgaXMgdHJhY2tpbmcgaXQuCisKKyAgICAgICAgV2hpbGUgdGhlIGNoYW5nZSBp
cyBleHRlbnNpdmUsIGNvZGUgY292ZXJhZ2Ugb2YgdGhlIG1vZGlmaWVkIGFyZWFzIGlzIHRob3Jv
dWdoCisgICAgICAgIHdoaWNoIG1ha2VzIHVuZGV0ZWN0ZWQgcmVncmVzc2lvbnMgdW5saWtlbHku
CisKKyAgICAgICAgSW4gYnVnIDIzMzQ0MiwgYSBTaGFyZWRCdWZmZXIgd2lsbCBiZSBtYWRlIGNv
bXBsZXRlbHkgaW1tdXRhYmxlIG9uY2UgY3JlYXRlZC4KKworICAgICAgICBObyBvYnNlcnZhYmxl
IGNoYW5nZS4KKyAgICAgICAgQ292ZXJlZCBieSBhbGwgZXhpc3RpbmcgdGVzdHMuIE5ldyBBUEkg
dGVzdHMgY3JlYXRkZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5p
dGl6ZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9z
L0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJk
SW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hl
L0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxCb2R5U2l6ZSk6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjppc29sYXRlZFJlc3BvbnNlQm9keSk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Y29weVJlc3BvbnNlQm9keSk6CisgICAg
ICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oOgorICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5SURzS2V5aWRzKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplS2V5aWRzKToK
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmtleUlkc01hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
S2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6bmV4dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OnRha2UpOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCk6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayk6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YSk6CisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHQ6OmVuY29kZSBjb25z
dCk6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OnNlcmlhbGl6ZUlEQktleURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJpYWxpemF0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNy
ZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4
aXN0c0luT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldElu
ZGV4UmVjb3JkRm9yT25lS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpnZXRDb3VudCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElm
TmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQpOgorICAgICAgICAqIE1v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVz
L21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVSZXNwb25z
ZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJT
b3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1l
bnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQpOgorICAgICAgICAqIGVkaXRpbmcvY29j
b2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2ht
ZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvclVSTCk6CisgICAgICAgIChm
aWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVu
dFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0
aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RNYXJrdXBBbmRBcmNoaXZl
KToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50
TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgor
ICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGly
ZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNv
bnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxv
YWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodCk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KToKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAg
KiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseSk6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSk6CisgICAgICAgICogbG9hZGVyL2Fy
Y2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0
UGFydCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6c2hlZXRUZXh0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
Rm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9u
dDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6
Y2hlY2tOb3RpZnkpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
Zyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6OnJlc291cmNlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9j
dW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdG
b250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZv
bnREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
VGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZG9VcGRh
dGVCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6RGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21D
RlVSTENhY2hlZFJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6
OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZCk6CisgICAgICAgICogcGFnZS9FZGl0b3JDbGllbnQu
aDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNl
clN0eWxlU2hlZXQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKToKKyAg
ICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEu
aDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tl
eWVkQ29kaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAq
IHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRl
ckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3Vv
dXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpzaXplIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzQ29udGlndW91cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpoYXNP
bmVTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OnV0ZjhCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6RGF0YVNlZ21lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRp
YVNlc3Npb25NYW5hZ2VyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9L
ZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJDRjo6Zmlu
aXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VElGRlRvUE5H
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNl
Y3VyaXR5Q2hlY2spOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29h
Lm1tOgorICAgICAgICAoLVtXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBpbml0V2l0aERhdGFTZWdt
ZW50OnBvc2l0aW9uOnNpemU6XSk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4
dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFj
dEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXll
ZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVy
aWM6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5j
b2RlckdlbmVyaWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2Rpbmcp
OgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnQ6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpNb2RlbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQz
Mik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVUludDE2KToKKyAgICAgICAgKFdlYkNvcmU6Omlz
V09GRik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V09GRlRvU2ZudCk6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpleHRyYWN0U2luZkRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6cGFyc2VKU09OVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMp
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6
YXBwZW5kRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1
bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZv
cm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1h
cHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om1hcmt1cFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OmV4dHJhY3RD
ZW5jSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6SW5p
dERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1
bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRo
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEl0YWxpY3NDb3JyZWN0
aW9uSW5mbzo6Z2V0SXRhbGljQ29ycmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpP
cGVuVHlwZTo6TWF0aEdseXBoSW5mbzo6bWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R2x5cGhBc3NlbWJseTo6Z2V0QXNzZW1ibHlQ
YXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3Ry
dWN0aW9uOjpnZXRTaXplVmFyaWFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aFZhcmlhbnRzOjptYXRoR2x5cGhDb25zdHJ1Y3Rp
b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aENv
bnN0YW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjpt
YXRoR2x5cGhJbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFi
bGU6Om1hdGhWYXJpYW50cyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjp2YWxp
ZGF0ZVRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OmlzVmFs
aWRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVQ
dHIpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVPZmZz
ZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlV2l0aENvdmVyYWdl
OjpnZXRDb3ZlcmFnZUluZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVG
b250KToKKyAgICAgICAgKFdlYkNvcmU6OnJlbmFtZUFuZEFjdGl2YXRlRm9udCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U3Vic3RpdHV0aW9uU3ViVGFibGU6OmNvdmVy
YWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMb29rdXBUYWJsZTo6Z2V0
U3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3Vw
TGlzdDo6bG9va3VwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJl
VGFibGU6OmdldEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpP
cGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmaW5kRmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6TGFuZ1N5c1RhYmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRUYWJsZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OnNjcmlwdCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6ZGVmYXVsdFNjcmlwdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6ZGVmYXVsdExhbmdTeXMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6c2NyaXB0TGlz
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpmZWF0dXJl
TGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpsb29r
dXBMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmRl
ZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6OmZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJs
ZTo6Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6bG9hZEhtdHhUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0
YTo6bG9hZE1ldHJpY3MpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERhdGE6
OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uRGF0YTo6c2V0Q3VzdG9tRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rp
b25EYXRhOjpjdXN0b21EYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFk
SUNDUHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQ
cm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRX
cml0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3Ry
YXRpb25MaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1
ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpmaWxlV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQnVm
ZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6
cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW06CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVBhc3RlYm9hcmRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlciBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAg
KC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpwcm9jZXNzQ29udGVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpj
dXJsRGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKiB0
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnNh
bml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNl
OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFu
Y2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckZldGNoOjpwcm9jZXNzUmVzcG9uc2UpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFn
ZTo6cmV0cmlldmUpOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJGdW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuRnVuYyk6
CisKIDIwMjEtMTItMDMgIEFsaWNpYSBCb3lhIEdhcmPDrWEgIDxhYm95YUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtNU0VdIEZpeCBlcmFzZSByYW5nZSB0byBwcmV2ZW50IGFjY2lkZW50YWwgZGVs
ZXRpb24gaW4gZmlsZXMgd2l0aCBjaGFuZ2luZyBkdXJhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTZlYTFl
NDBiYjRiNzE2MzU3NTE0NDU5ZWJiZmNkMGRjNDg1ZjI4ZS4uNjMyMDkwYjJiY2FmYTcwYmU5OWFl
YTFjMjUxZmY3ZWM1NzI3ZTljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MTcgQEAKKzIwMjEtMTIt
MDIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5n
dWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQg
Z3VhcmFudGVlIGltbXV0YWJpbGl0eTogcGFydCAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OnVu
cmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVtb3ZlU2Vzc2lvbkRh
dGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2Vu
ZE1lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzSW5pdERhdGEp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZSk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y3JlYXRlRGVjb2Rlcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXREYXRhKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0Ojpjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrQmxvYi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Js
b2I6OmNvbnN1bWVEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hy
b25vdXNSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzZW5kQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFz
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVy
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
Q2FjaGU6Om1ha2VFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6
OnN0b3JlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OkVudHJ5KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6aW5pdGlhbGl6ZUJ1ZmZlckZyb21TdG9yYWdlUmVj
b3JkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6YnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRy
eS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVM
b2FkOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9QcmVmZXRjaENhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJlZmV0Y2hDYWNoZTo6
RW50cnk6OkVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6UHJlZmV0Y2hDYWNoZTo6c3RvcmUpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaDoKKyAgICAgICAg
KFdlYktpdDo6UHJlZmV0Y2hDYWNoZTo6RW50cnk6OnJlbGVhc2VCdWZmZXIpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKC1b
V0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURh
dGE6XSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2Vp
dmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNr
Q3VybC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJUEM6
OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVm
ZmVyQ29weSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5oOgorICAgICAgICAqIFNoYXJlZC9BUElXZWJBcmNoaXZlLm1tOgorICAgICAgICAo
QVBJOjpXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKToKKyAgICAgICAgKiBTaGFyZWQvQVBJV2ViQXJj
aGl2ZVJlc291cmNlLm1tOgorICAgICAgICAoQVBJOjpXZWJBcmNoaXZlUmVzb3VyY2U6OldlYkFy
Y2hpdmVSZXNvdXJjZSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpG
b250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZVNoYXJlZEJ1ZmZlcik6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZW5j
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmVuY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpN
ZXNzYWdlPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdERhdGE6OldlYkhpdFRlc3RSZXN1bHREYXRhKToKKyAg
ICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZW5jb2RlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjplbmNs
b3NpbmdJbWFnZURhdGEgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNo
bWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAg
ICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNo
bWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURh
dGEgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVUYXNr
Lm1tOgorICAgICAgICAoLVtXS1VSTFNjaGVtZVRhc2tJbXBsIGRpZFJlY2VpdmVEYXRhOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTCk6CisgICAgICAgIChXZWJL
aXQ6Okljb25EYXRhYmFzZTo6c2V0SWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcDoKKyAgICAgICAgKHdlYmtpdFVS
SVNjaGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L0Ryb3BUYXJnZXRHdGs0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6YWNjZXB0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6
TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNl
bmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQ
cm90b2NvbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JQcm90
b2NvbEhhbmRsZXI6OnBsYXRmb3JtU3RhcnRUYXNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5z
cGVjdG9yL3dpbi9JbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXI6OnBsYXRmb3JtU3Rh
cnRUYXNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlw
Ym9hcmRHdGszLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVhZEJ1ZmZlckFzeW5jRGF0YTo6UmVh
ZEJ1ZmZlckFzeW5jRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkNsaXBib2FyZDo6cmVhZEJ1ZmZl
cik6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVhZEJ1ZmZlckFzeW5jRGF0YTo6UmVhZEJ1ZmZlckFzeW5jRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OkNsaXBib2FyZDo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRQcm9t
aXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9y
SW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c3VwcG9ydHNJbml0RGF0YSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RGF0YSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0
ZUltYWdlRGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRk1h
bmFnZXI6OnNldFVzZUdQVVByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29u
dmVydFRvU2hhcmVkQnVmZmVyQ29weSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UmVjb3JkZXJQcml2YXRlOjpmZXRjaERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oOgorICAgICAg
ICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVx
dWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJj
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2Up
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6YWRkQXJjaGl2ZVJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1
Z2luOjpsaXZlUmVzb3VyY2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2lu
Ojp3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVy
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25zdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjps
b2FkRGF0YUluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkRGF0YUltcGwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmxvYWRBbHRlcm5hdGVIVE1MKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
bG9hZFNpbXVsYXRlZFJlcXVlc3RBbmRSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6cmVzb3Vy
Y2VEYXRhRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZXNvdXJjZURh
dGFGcm9tRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNp
b25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0
dHJpYnV0ZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwOgorICAgICAgICAobG9h
ZFJlc291cmNlSW50b0J1ZmZlcik6CisKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisg
ICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtM
b2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmJ1ZmZlcmluZ1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZl
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6
OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2No
ZW1lVGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3
OjpQbHVnaW5WaWV3KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERp
ZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFt
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZhaWwpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuaDoKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgor
CisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNv
bnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1
MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpzZW5k
UmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmVuY29kZSk6CisgICAg
ICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmRlY29kZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQgY29uc3QpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJUEM6OlNo
YXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVy
Q29weSk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAgICAg
IChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZv
cm0vU2hhcmVkTWVtb3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVh
dGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5o
OgorICAgICAgICAqIFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAgICAgIChB
UEk6OldlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dl
YkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVh
YmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6d3Jh
cEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6Okhh
bmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hh
cmVhYmxlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcDoKKyAgICAgICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKElQQzo6
ZW5jb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQQzo6ZGVjb2RlVHlwZXNBbmREYXRhKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5j
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3Jk
Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6RW50cnk+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVj
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1lbnRD
b2RlcnNHdGsuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2lu
LmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0
Zm9ybURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHA6Cisg
ICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBj
b25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVw
cmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAg
ICAgICAoQVBJOjpnZXREYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0
dGFjaG1lbnRDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBk
YXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc3RvcmVBcHBIaWdo
bGlnaHQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0
YUZvckltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnByb3ZpZGVEYXRhRm9y
UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlz
ZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hl
bWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OndpdGhTZW5k
ZXI6XSk6CisgICAgICAgIChhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdpbik6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2hhcmVFbGVtZW50
V2l0aEltYWdlOnJlY3Q6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1
bmRsZUVkaXRvckNsaWVudC5oOgorICAgICAgICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9y
Q2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIgX3NldEVkaXRpbmdEZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OnJlbGVhc2VTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRl
RmlsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
Q2FjaGVSZXNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFz
dGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50
OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFn
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRE
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbiBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRi
eSBjb25zdCk6CisKIDIwMjEtMTItMDMgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgRGVyaXZlZFNvdXJjZXMvV2ViS2l0MiB0byBEZXJp
dmVkU291cmNlcy9XZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggZDc3NmU4MmRmMTMyY2Fm
NjUyNzkzYTc5YTAwODNhZDY1NTlkYzI2NS4uNDNhMTgwNGQ1MGRmOTI3MzM2ZTNmNWQ1ODNhMTY4
OTNlNDFiYTA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0x
Mi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rp
bmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFu
ZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oOgor
CiAyMDIxLTExLTEyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBN
YWtlIHNvcnQtWGNvZGUtcHJvamVjdC1maWxlIGlkZW1wb3RlbnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwppbmRleCA3NmFhNmFhZjg0ZGViMDgyZTRjODQzMjI0OTMzODBkODMzZGU5MmQxLi40
MjEzYjQ3M2E4ZjQ5MjU3MDI2YmIzNTlhMDg4MDE5NzVmNWIzN2UyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjEtMTItMDIgIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNo
YXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJp
bGl0eTogcGFydCAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzM2NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y3JlYXRlUHJldmlld0xvYWRlckNsaWVudCk6CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbnMpOgorICAgICAgICAoV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24pOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAgICogV2ViVmlldy9XZWJBcmNoaXZlLm1t
OgorICAgICAgICAoLVtXZWJBcmNoaXZlIGluaXRXaXRoRGF0YTpdKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0YV0pOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9sb2Fk
RGF0YTpNSU1FVHlwZTp0ZXh0RW5jb2RpbmdOYW1lOmJhc2VVUkw6dW5yZWFjaGFibGVVUkw6XSk6
CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJl
TWVudUl0ZW0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgt
W1dlYlJlc291cmNlIGluaXRXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIF9p
bml0V2l0aERhdGE6VVJMOk1JTUVUeXBlOnRleHRFbmNvZGluZ05hbWU6ZnJhbWVOYW1lOnJlc3Bv
bnNlOmNvcHlEYXRhOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToK
KworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAg
ICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3Vv
dXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00v
RE9NVUlLaXRFeHRlbnNpb25zLm1tOgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRh
dGFSZXByZXNlbnRhdGlvbjpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06Cisg
ICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
RGF0YVNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAg
ICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxS
ZXByZXNlbnRhdGlvbiBkb2N1bWVudFNvdXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRN
TFZpZXcubW06CisgICAgICAgIChjcmVhdGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlJlc291cmNlLm1tOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29k
ZXI6XSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVz
b3VyY2UgX3N0cmluZ1ZhbHVlXSk6CisKIDIwMjEtMTItMDIgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBIb29rIHVwIG5hdmlnYXRv
ci5ncHUucmVxdWVzdEFkYXB0ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDAy
ZTk0NmJjMWZiMGIzNTZiYjE1YWI4MzYwZTg2MTQ1NTQ3MjQ3Y2MuLmE4NTI4ZjIwYTFlZTI1NDY5
YjNhMmMxMjI3MDdkNDA1YjY2YzYxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1MiBAQAorMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20g
bm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViRnJhbWU6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYkZyYW1lOjps
b2FkUGxhaW5UZXh0U3RyaW5nKToKKyAgICAgICAgKFdlYkZyYW1lOjpsb2FkSFRNTFN0cmluZyk6
CisgICAgICAgICogV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJLaXRETEwuY3BwOgorICAgICAg
ICAobG9hZFJlc291cmNlSW50b0J1ZmZlcik6CisKKzIwMjEtMTItMDEgIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBj
bGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMz
NDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6
OmxvYWREYXRhKToKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20g
bm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRh
cjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBNZW1vcnlTdHJlYW0uY3BwOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpNZW1vcnlT
dHJlYW0pOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAg
ICogTWVtb3J5U3RyZWFtLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChX
ZWJBcmNoaXZlOjpkYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJEYXRhU291cmNlOjpkYXRhKToKKyAg
ICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZTo6Y3JlYXRlSW5z
dGFuY2UpOgorICAgICAgICAqIFdlYlJlc291cmNlLmg6CisKIDIwMjEtMTItMDIgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBNYWtlIFdlYiBMb2NrIEFQ
SSB3b3JrIGFjcm9zcyBtdWx0aXBsZSBXZWJQcm9jZXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IGVhY2NhMmMyMzNhOGE2OTM3MTU5MDgwN2Rm
ZDM2NzViMDYxNTk0MjguLmI0NjkzZjkxYzYwN2Q4ZDA3NDU5NDY0NmU4ZGM0MzcyZTliYzk5ZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMTI5
LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRy
PEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoQXJyYXlCdWZmZXImKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291
cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAKLSAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhD
bGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIuCisgICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFy
cmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkIGFuZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlci4KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFy
cmF5QnVmZmVyPiBjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRy
PEFycmF5QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywg
dW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3Bw
CmluZGV4IDMzNTRiNTJhNTBjYmIxODlmZGZhZWI3ZDgyNDgzYmUwYzQxYzNkNGUuLmRhMzM2ZTZm
NWIxNjk0ZTM3NDc2OTBjNDNkMmI1M2YzNTE4YzA5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJl
YWRlci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVBM
QVRGT1JNKENPQ09BKQogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lkIENs
aXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAppbmRleCAyYjYyNjI4NDE5YjA5Y2JiNjk1
NTIxNWIwZDVkN2Q3M2MwYjM3NDRkLi42ZTIyMDQ4Y2Y1ZmVhOWFhNjJkYWRmNDViMWYzNWM0Y2Uw
ZDdkNmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXIgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgQ2xpcGJvYXJkSW1hZ2VSZWFkZXIo
RG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQpAQCAtNDcsNyArNDcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFs
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihj
b25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAg
ICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IGQw
NzQ2ZGEyZGEyMDllMDIzMjViNWZhMjE0ZGJlZTY0YmY5YzkwNzguLmVmZjEwYjViNjVmZDgxYWQ5
YmEzMmY4MGIzZjJjZjJmOGU5OGYxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0yMTYsOCArMjE2LDggQEAgdm9pZCBDbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlOjppbnZva2VDb21wbGV0aW9uSGFuZGxlcigpCiAgICAgICAg
IGF1dG8mIGRhdGEgPSBpdGVtVHlwZUxvYWRlci0+ZGF0YSgpOwogICAgICAgICBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRhdGEpICYmICEhc3RkOjpnZXQ8U3RyaW5nPihkYXRh
KSkKICAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVTdHJpbmcodHlwZSwgc3RkOjpnZXQ8U3Ry
aW5nPihkYXRhKSk7Ci0gICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
PFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQotICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEo
dHlwZSwgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpLmNvcHlSZWYoKSk7CisgICAg
ICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PihkYXRhKSkKKyAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIHN0
ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZGF0YSkuY29weVJlZigpKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQp
OwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjY1LDkgKzI2NSw5IEBAIHZvaWQgQ2xpcGJvYXJk
SXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXpl
RGF0YUlmTmVlCiB7CiAgICAgaWYgKG1fdHlwZSA9PSAidGV4dC9odG1sIl9zKSB7CiAgICAgICAg
IFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewotICAgICAgICAgICAgYXV0byYgYnVm
ZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Ci0gICAgICAgICAgICBt
YXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKKyAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9
IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKKyAgICAgICAg
ICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBtYXJrdXBU
b1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwogCkBAIC0yNzgsOSArMjc4LDkg
QEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlw
ZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKICAgICB9CiAKICAgICBpZiAobV90eXBlID09ICJp
bWFnZS9wbmciX3MpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5p
dGl6ZTsKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZl
cj4+KG1fZGF0YSkpCi0gICAgICAgICAgICBidWZmZXJUb1Nhbml0aXplID0gc3RkOjpnZXQ8UmVm
PFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkucHRyKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplOworICAgICAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpCisgICAgICAg
ICAgICBidWZmZXJUb1Nhbml0aXplID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PihtX2RhdGEpLnB0cigpOwogICAgICAgICBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSB1dGY4
QnVmZmVyKHN0ZDo6Z2V0PFN0cmluZz4obV9kYXRhKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaAppbmRleCAyY2MyYzhlMWE1NGUxOGQ3MzQ5NWM1MzBj
ZDc3ZDU0Zjk5YTUyOWE3Li4zN2M4MjVlMjM1YThhOGI3ZTQ0ZTQwZmIwYzJkNzcyNDQwN2E3NTg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCkBAIC0z
OCw3ICszOCw3IEBAIGNsYXNzIERPTVByb21pc2U7CiBjbGFzcyBGaWxlUmVhZGVyTG9hZGVyOwog
Y2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZSA6IHB1YmxpYyBDbGlwYm9hcmRJ
dGVtRGF0YVNvdXJjZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Myw3ICs1
Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7CiAK
LSAgICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFy
ZWRCdWZmZXI+PjsKKyAgICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJp
bmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgY2xhc3MgQ2xpcGJvYXJkSXRl
bVR5cGVMb2FkZXIgOiBwdWJsaWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCwgcHVibGljIFJlZkNv
dW50ZWQ8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0
YXRpYyBSZWY8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHR5
cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9h
cmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUy
ODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi4yNzRlMDM4ZDQxODcwMTYxZTRlZWI4MGMxMmFiYmE4
NzFmOWQ0YTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBA
IC0zNCwxMCArMzQsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIp
IHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFu
Y2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAg
ICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRX
aXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9IFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFn
ZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jlc3VsdCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50
LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obnNEYXRhLmJ5dGVz
KSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVUeXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXggYjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkx
MzE3ODY5ZGE3ZTViZi4uMzgyMWIwMzcxODAyODIzZDY5YTgzMGEzMTBkYTM0NzA4ZDYzMzA3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0Ns
aXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMzMsMTAgKzMz
LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRl
cjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAg
IGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMo
W1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBjZ0ltYWdlID0gW2ltYWdl
IENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0pIHsKICAg
ICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRpb24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJl
cCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2VdKTsKICAgICAgICAgICAgIE5TRGF0YSog
bnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFw
SW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCBlNmNjMWFhZTc4M2E1MjA5NGY2NTQ5OWJiOTBkZDdm
MDA3MWQ0MjRjLi5mMDVjMjMzMDdiYzVhMGU1ODJkZGNkODYwZDViYjFhMWIzMDkzMjUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMjg5LDcgKzI4OSw3
IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBz
aXplX3QgcmVjb3JkUG9zaXRpb24gPSB0YXNrSGFuZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVjdGlv
blJlY29yZChyZXF1ZXN0LmdldCgpLCByZXNwb25zZSwgbnVsbHB0cikpOwogCi0gICAgICAgICAg
ICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZN
b3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0
YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRhc2tIYW5kbGVyLT5p
c0RvbmUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTksOSArMjk5LDkg
QEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAg
ICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwor
ICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6
ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5k
bGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRh
dGEpKTsKKyAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShy
ZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0
b3JzKCkuZmV0Y2gpOwogICAgIH0KQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIERPTUNhY2hlOjpw
dXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJl
ZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlm
IChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAg
ICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBib2R5ID0gYnVmZmVy
LT5tYWtlQ29udGlndW91cygpOwogICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCks
IHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lk
PiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2
ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CkBAIC0zNzUsNyArMzc1LDcgQEAg
dm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+
JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVjZWl2
ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5nZXQo
KTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9u
c2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHBl
bmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYg
cmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZl
ZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShy
ZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyks
IHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBpZiAocmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNl
RGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNl
KSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0zODMsOSAr
MzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNo
UmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAg
ICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAg
ICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEo
V1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShkYXRhKSB9KTsKKyAgICAgICAgICAgICAgICB0
aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVz
dCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IGRhdGEudGFrZSgp
LT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAK
aW5kZXggMjU5MTRiNDBiYjIzODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uYzBmODAzMmIw
NDUyYzM3ZWU0Y2FmYmNhZmQ3OWYwOWQyMTQ2MzMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCBSZXNw
b25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQog
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZv
cm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xh
dGVkQ29weSgpOwogICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+
IFJlc3BvbnNlQm9keSB7Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICAgICAg
cmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIFNoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFu
ZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3Qm
KSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3Bv
bnNlQm9keSB7IH07CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETS5jcHAKaW5kZXggMjg1MGRiYTFlM2JmYTExZjQ4OWI0NDQwMzUxM2Q1MWFlMWJl
YWQzYS4uOWQxYmM2NzRmYzgyNmNiNmQxNmQwMjUxMGNmODQwMTBhZGNiZDc3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAtMTM1LDE3ICsx
MzUsMTcgQEAgYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+
c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEp
CiB7CiAgICAgcmV0dXJuIEluaXREYXRhUmVnaXN0cnk6OnNoYXJlZCgpLnNhbml0aXplSW5pdERh
dGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CiB9CiAKLWJvb2wgQ0RNOjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkKK2Jvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAg
ICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEoaW5pdERh
dGFUeXBlLCBpbml0RGF0YSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRp
emVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQorUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiByZXNwb25zZSkKIHsKICAgICBpZiAoIW1fcHJpdmF0ZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0u
aAppbmRleCBkOGE0YjNhZjEyZjFhNzkyM2Q4ODcwNWQ1Yjk1ODFkMzZmMTAyNzBjLi5kN2IxZDUz
ZDA0OTFmNzI3NzliNTk0YjJkODNjMDliODNiY2YyMDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgQ0RNSW5z
dGFuY2U7CiBjbGFzcyBDRE1Qcml2YXRlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNIDogcHVibGljIFJlZkNvdW50ZWQ8Q0RNPiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPENETT4sIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIg
ewogcHVibGljOgpAQCAtNzMsMTAgKzczLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRz
U2Vzc2lvbnMoKSBjb25zdDsKICAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0
b21TdHJpbmcmKSBjb25zdDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
KTsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNs
aWVudC5oCmluZGV4IDIxZTUyZjRiNzE0ZmI5MWY2N2NmYzM5NjEzOWMxNjUyNWJmYjdiOWIuLjQx
MGVkMmZiNjQyNzU2MmNlOWJkOGVkYTRkOTFhODZiYTk4Y2FhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaApAQCAtMzYsMTQgKzM2
LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENETUluc3RhbmNlOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RN
Q2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPENETUNsaWVudD4gewogcHVibGljOgogICAg
IHZpcnR1YWwgfkNETUNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCBjZG1D
bGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNv
bnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJp
bmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4
ZDJlNDBhMzQxYTY3MDc0NDBmMmQ1Ni4uNmY4ODhlMTc4NThkZGE2ZDk0NzFlYzFmNmVmNWQwNjZk
ZjBlNDk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCkBAIC01NCwxMyArNTQsMTMgQEAgbmFtZXNw
YWNlIHsKICAgICBjb25zdCB1aW50MzJfdCBrS2V5SWRzTWF4S2V5SWRTaXplSW5CeXRlcyA9IDUx
MjsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4g
ZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0
S2V5SURzS2V5aWRzKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICAvLyAxLiBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1l
ZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKICAgICBpZiAo
YnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRh
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBq
c29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBh
cnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5
aWRzKGNvbnN0IFNoYXJlZAogICAgIGlmICgha2lkc0FycmF5KQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAg
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwogICAgIGZvciAoYXV0
byYgdmFsdWUgOiAqa2lkc0FycmF5KSB7CiAgICAgICAgIGF1dG8ga2V5SUQgPSB2YWx1ZS0+YXNT
dHJpbmcoKTsKICAgICAgICAgaWYgKCFrZXlJRCkKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlk
cyhjb25zdCBTaGFyZWQKICAgICByZXR1cm4ga2V5SURzOwogfQogCi1zdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitz
dGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyAxLiBGb3JtYXQKICAg
ICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3Ry
eS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKQEAgLTEwNCwxNCArMTA0LDE0IEBAIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
YXV0byBraWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRvJiBi
dWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1ZSgpKQotICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJp
bmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KSk7CisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmlu
ZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKICAg
ICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShraWRzQXJyYXkpKTsKIAogICAgIENT
dHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgo
KSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0
aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdFBz
c2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25h
bDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRl
ckJveD4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDQuIENvbW1vbiBTeXN0
ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2Vu
Y3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1z
eXN0ZW0KQEAgLTE1MSw5ICsxNTEsOSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaQogICAgIHJl
dHVybiBwc3NoQm94ZXM7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURz
OwogCiAgICAgYXV0byBwc3NoQm94ZXMgPSBleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoYnVmZmVy
KTsKICAgICBpZiAoIXBzc2hCb3hlcykKQEAgLTE4NSw3ICsxODUsNyBAQCBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJ
RHNDZW5jKGNvbgogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5p
dGl6ZUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8v
IDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2Vu
Yy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAgLTE5NSw3ICsxOTUsNyBAQCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0
aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplV2ViTShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gQ2hlY2sgaWYgdGhlIGJ1ZmZl
ciBpcyBhIHZhbGlkIFdlYk0gaW5pdERhdGEuCiAgICAgLy8gVGhlIFdlYk0gaW5pdERhdGEgaXMg
dGhlIENvbnRlbnRFbmNLZXlJRCwgc28gc2hvdWxkIGJlIGxlc3MgdGhhbiBrV2ViTU1heENvbnRl
bnRFbmNLZXlJRFNpemUuCkBAIC0yMDUsMTAgKzIwNSwxMCBAQCBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJl
dHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzV2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+PiBleHRyYWN0S2V5SURzV2ViTShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkQnVmZmVyID0gc2FuaXRpemVXZWJNKGJ1ZmZlcik7
CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdl
Yk0oYnVmZmVyKTsKICAgICBpZiAoIXNhbml0aXplZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIApAQCAtMjMzLDcgKzIzMyw3IEBAIEluaXREYXRhUmVnaXN0cnk6OkluaXRE
YXRhUmVnaXN0cnkoKQogCiBJbml0RGF0YVJlZ2lzdHJ5Ojp+SW5pdERhdGFSZWdpc3RyeSgpID0g
ZGVmYXVsdDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRp
emVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVn
aXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBpdGVyID0g
bV90eXBlcy5maW5kKGluaXREYXRhVHlwZSk7CiAgICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQo
KSB8fCAhaXRlci0+dmFsdWUuc2FuaXRpemVJbml0RGF0YSkKQEAgLTI0MSw3ICsyNDEsNyBAQCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYQogICAgIHJldHVybiBpdGVyLT52YWx1ZS5zYW5pdGl6ZUlu
aXREYXRhKGJ1ZmZlcik7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0
cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3R5cGVzLmZpbmQo
aW5pdERhdGFUeXBlKTsKICAgICBpZiAoaXRlciA9PSBtX3R5cGVzLmVuZCgpIHx8ICFpdGVyLT52
YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaAppbmRleCBjZDEzODdhNmJkMDM4
ZmYzNGUyY2ZiNzVmNDQzZGU3ZDk0MDMyMWIwLi43N2Q2MDRiMDhiYjdmN2UzOGJjY2IzNTQ1YjM0
YzhiMTM0MzU1ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaApAQCAtMzgsMTkgKzM4LDE5IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRl
ckJveDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIEluaXREYXRhUmVnaXN0cnkgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBJbml0RGF0YVJlZ2lzdHJ5JiBzaGFyZWQoKTsKICAgICBmcmllbmQgY2xhc3MgTmV2
ZXJEZXN0cm95ZWQ8SW5pdERhdGFSZWdpc3RyeT47CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3Qg
U2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtl
eUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKIAogICAgIHN0cnVjdCBJbml0RGF0YVR5cGVDYWxsYmFja3MgewotICAgICAg
ICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8U2hhcmVk
QnVmZmVyPihjb25zdCBTaGFyZWRCdWZmZXImKT47Ci0gICAgICAgIHVzaW5nIEV4dHJhY3RLZXlJ
RHNDYWxsYmFjayA9IEZ1bmN0aW9uPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+Pj4oY29uc3QgU2hhcmVkQnVmZmVyJik+OworICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXRE
YXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKKyAgICAgICAgdXNpbmcgRXh0cmFjdEtleUlE
c0NhbGxiYWNrID0gRnVuY3Rpb248c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+Pj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKIAogICAgICAg
ICBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgc2FuaXRpemVJbml0RGF0YTsKICAgICAgICAgRXh0
cmFjdEtleUlEc0NhbGxiYWNrIGV4dHJhY3RLZXlJRHM7CkBAIC02MSw5ICs2MSw5IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYga2V5aWRzTmFtZSgpOwogICAgIHN0YXRp
YyBjb25zdCBBdG9tU3RyaW5nJiB3ZWJtTmFtZSgpOwogCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFk
ZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwot
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJh
Y3RLZXlJRHNDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVt
U3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogcHJp
dmF0ZToKICAgICBJbml0RGF0YVJlZ2lzdHJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggOGJm
YjFjZTcwMWEyZjVhNjliNWI1MTk5MWFhODYzMmViYjg5MjVmOS4uMTQ3NzZjMjAxNTFiZmVmZTM4
MDc5YTMzNzMwYzg4NjYyNjhiYTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtMTc2LDcgKzE3
Niw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgcXVldWVUYXNrS2VlcGluZ09iamVj
dEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgaW5pdERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0
YS5kYXRhKCksIGluaXREYXRhLmxlbmd0aCgpKSwgaW5pdERhdGFUeXBlLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFi
bGUgewogICAgICAgICAvLyAxMC4xLiBJZiB0aGUgaW5pdCBkYXRhIGlzIG5vdCB2YWxpZCBmb3Ig
aW5pdERhdGFUeXBlLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJy
b3IuCiAgICAgICAgIC8vIDEwLjIuIExldCBzYW5pdGl6ZWQgaW5pdCBkYXRhIGJlIGEgdmFsaWRh
dGVkIGFuZCBzYW5pdGl6ZWQgdmVyc2lvbiBvZiBpbml0IGRhdGEuCi0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNhbml0aXplZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRp
emVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKKyAgICAgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+
c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKIAogICAgICAgICAvLyAx
MC4zLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEg
bmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIGlmICghc2FuaXRpemVkSW5pdERhdGEp
IHsKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1
ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgICAgICAg
ICAgbV9sYXRlc3REZWNyeXB0VGltZSA9IDA7CiAgICAgICAgIH0KIAotICAgICAgICBtX2luc3Rh
bmNlU2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UobV9zZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBz
YW5pdGl6ZWRJbml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBbdGhpcywgd2Vha1RoaXMsIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0g
KFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJv
b2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFs
dWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlcXVl
c3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUsIGluaXREYXRhVHlwZSwgc2FuaXRpemVkSW5pdERhdGEu
cmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVk
c0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNj
ZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6
dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+
JgogICAgIC8vIDYuIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgogICAgIHF1
ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywg
W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlc3BvbnNlID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5sZW5ndGgoKSksIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkg
bXV0YWJsZSB7CiAgICAgICAgIC8vIDYuMS4gTGV0IHNhbml0aXplZCByZXNwb25zZSBiZSBhIHZh
bGlkYXRlZCBhbmQvb3Igc2FuaXRpemVkIHZlcnNpb24gb2YgcmVzcG9uc2UgY29weS4KLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkUmVzcG9uc2UgPSBtX2ltcGxlbWVudGF0
aW9uLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3BvbnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+c2Fu
aXRpemVSZXNwb25zZShyZXNwb25zZSk7CiAKICAgICAgICAgLy8gNi4yLiBJZiB0aGUgcHJlY2Vk
aW5nIHN0ZXAgZmFpbGVkLCBvciBpZiBzYW5pdGl6ZWQgcmVzcG9uc2UgaXMgZW1wdHksIHJlamVj
dCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFz
YW5pdGl6ZWRSZXNwb25zZSB8fCBzYW5pdGl6ZWRSZXNwb25zZS0+aXNFbXB0eSgpKSB7CkBAIC02
MDEsNyArNjAxLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIC8vIDQuMy4gTGV0IG1lc3NhZ2UgdHlwZSBiZSBu
dWxsLgogCiAgICAgICAgIC8vIDQuNC4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93
aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEo
bV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5z
dGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxT
aGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVl
IHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZW1vdmVT
ZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgW3RoaXMsIHdlYWtUaGlzLCBw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmll
cildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtleXMsIHN0ZDo6b3B0
aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNl
U2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNjQ5LDcgKzY0OSw3
IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlKQogICAgIC8vIDUuIFJldHVybiBwcm9taXNlLgogfQogCi12b2lkIE1lZGlhS2V5U2Vz
c2lvbjo6ZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgY29u
c3QgU2hhcmVkQnVmZmVyJiBtZXNzYWdlKQordm9pZCBNZWRpYUtleVNlc3Npb246OmVucXVldWVN
ZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIG1lc3NhZ2UpCiB7CiAgICAgLy8gNi40LjEgUXVldWUgYSAibWVzc2FnZSIg
RXZlbnQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNxdWV1
ZS1tZXNzYWdlCkBAIC03MTYsNyArNzE2LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0
ZUtleVN0YXR1c2VzKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYgaW4KICAg
ICAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZShDRE1NZXNz
YWdlVHlwZSBtZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBN
ZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewogICAgIGVucXVldWVNZXNz
YWdlKG1lc3NhZ2VUeXBlLCBtZXNzYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDNkOTZmODgw
MmU3NDc4NDFjNGVmZGE4MWRjYjk0MWVhNmU0YTc1ZTQuLjM2NWFjZTVjMDk1ZTdkYzBjNTcxZTc2
Y2NmMmMwN2FhZmM2MmJhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtNTcsNyArNTcsNyBAQCBjbGFz
cyBDRE07CiBjbGFzcyBEZWZlcnJlZFByb21pc2U7CiBjbGFzcyBNZWRpYUtleVN0YXR1c01hcDsK
IGNsYXNzIE1lZGlhS2V5czsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21p
c2VQcm94eTsKIApAQCAtODcsMjAgKzg3LDIwIEBAIHB1YmxpYzoKICAgICB1c2luZyBDbG9zZWRQ
cm9taXNlID0gRE9NUHJvbWlzZVByb3h5PElETFVuZGVmaW5lZD47CiAgICAgQ2xvc2VkUHJvbWlz
ZSYgY2xvc2VkKCkgeyByZXR1cm4gbV9jbG9zZWRQcm9taXNlLmdldCgpOyB9CiAKLSAgICBjb25z
dCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+JiBz
dGF0dXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8
c3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiYg
c3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1c2VzOyB9CiAKICAgICB1bnNpZ25lZCBp
bnRlcm5hbEluc3RhbmNlU2Vzc2lvbk9iamVjdFJlZkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9p
bnN0YW5jZVNlc3Npb24tPnJlZkNvdW50KCk7IH0KIAogcHJpdmF0ZToKICAgICBNZWRpYUtleVNl
c3Npb24oRG9jdW1lbnQmLCBXZWFrUHRyPE1lZGlhS2V5cz4mJiwgTWVkaWFLZXlTZXNzaW9uVHlw
ZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0
YW5jZVNlc3Npb24+JiYpOwotICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdl
VHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShNZWRp
YUtleU1lc3NhZ2VUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9p
ZCB1cGRhdGVFeHBpcmF0aW9uKGRvdWJsZSk7CiAgICAgdm9pZCBzZXNzaW9uQ2xvc2VkKCk7CiAg
ICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKIAogICAgIC8vIENE
TUluc3RhbmNlU2Vzc2lvbkNsaWVudAogICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoQ0RNSW5z
dGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3ImJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdl
KSBmaW5hbDsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKICAgICB2b2lkIHNlc3Npb25JZENo
YW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxh
eUlEKCkgZmluYWw7CiAKQEAgLTE0MCwxMCArMTQwLDEwIEBAIHByaXZhdGU6CiAgICAgTWVkaWFL
ZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25UeXBlOwogICAgIFJlZjxDRE0+IG1faW1wbGVtZW50YXRp
b247CiAgICAgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4gbV9pbnN0YW5jZVNlc3Npb247Ci0gICAg
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBtX3JlY29yZE9mS2V5VXNhZ2U7CisgICAgVmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9yZWNvcmRPZktleVVzYWdlOwogICAgIGRv
dWJsZSBtX2ZpcnN0RGVjcnlwdFRpbWUgeyAwIH07CiAgICAgZG91YmxlIG1fbGF0ZXN0RGVjcnlw
dFRpbWUgeyAwIH07Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVk
aWFLZXlTdGF0dXM+PiBtX3N0YXR1c2VzOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+IG1fc3RhdHVzZXM7CiAKICAgICB1
c2luZyBEaXNwbGF5Q2hhbmdlZE9ic2VydmVyID0gT2JzZXJ2ZXI8dm9pZChQbGF0Zm9ybURpc3Bs
YXlJRCk+OwogICAgIERpc3BsYXlDaGFuZ2VkT2JzZXJ2ZXIgbV9kaXNwbGF5Q2hhbmdlZE9ic2Vy
dmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3M2Y3NGU0ZjcwZmM5MmMyMmJmODU5YzAy
MjhhMzRlYWVjNTc5N2EzLi4zOThlOGFiMWI2NTZiNDQ1OTI3YmViNmJjNjkzZGQzOTlhNjg3YWM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNTYsMTIgKzU2LDEyIEBAIHVuc2lnbmVkIGxv
bmcgTWVkaWFLZXlTdGF0dXNNYXA6OnNpemUoKQogICAgIHJldHVybiBtX3Nlc3Npb24tPnN0YXR1
c2VzKCkuc2l6ZSgpOwogfQogCi1zdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRC
dWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKK3N0YXRpYyBib29sIGtleUlkc01hdGNo
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikK
IHsKICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0
aCAhPSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFzdGQ6
Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CisgICAgcmV0dXJuICFzdGQ6Om1l
bWNtcChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CiB9CiAK
IGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJTb3VyY2UmIGtleUlkKQpA
QCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJj
ZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3RhdHVzZXNbbV9pbmRleCsrXTsK
LSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+ZGF0YSgp
LCBwYWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHBhaXIuZmlyc3QtPnNp
emUoKSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBl
LCBNZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+KFdURk1vdmUoYnVmZmVyKSks
IHBhaXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaAppbmRleCBjMjExMTEzYTJjNmRh
Yzc5NzkyNGE5OWQyZDJkZjk3YzJlNjVmODUwLi42MGQ2MmFhZmY4MDc0ZGFkYTZlMzFhM2YyYjM3
MGE2ZDZkMDFmNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCkBAIC0zOCw3ICszOCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhS2V5U2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1lZGlhS2V5U3Rh
dHVzTWFwIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFLZXlTdGF0dXNNYXA+IHsKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlz
LmNwcAppbmRleCA4M2IyNGFjZWFhNWIxMjk0YmI0ZWE0MzlmYjJkNWM0ZjZjY2Q0NzUzLi4zNjdm
MzFkMTg2YjUxNjM5YTljNzQyMTNmMGNmOGU2ZjJmOGQyNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCkBAIC0xNzcsNyAr
MTc3LDcgQEAgYm9vbCBNZWRpYUtleXM6Omhhc09wZW5TZXNzaW9ucygpIGNvbnN0CiAgICAgICAg
IH0pOwogfQogCi12b2lkIE1lZGlhS2V5czo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFS
ZWNlaXZlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBp
bml0RGF0YSkKK3ZvaWQgTWVkaWFLZXlzOjp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJl
Y2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBmb3IgKGF1dG8mIGNkbUNsaWVudCA6IG1fY2RtQ2xp
ZW50cykKICAgICAgICAgY2RtQ2xpZW50LmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRp
b25EYXRhUmVjZWl2ZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0YS5jb3B5UmVmKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5kZXgg
N2I1OWEzYmM2ZDIyNTZmYzY1NmYwOGNiZjI2ODkxODUxMDk4M2EyMi4uOTFhMWEwNzExNDMzYmUy
NDdkZDJhODVjNWY0YWQwOTM4YTA5YTdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCkBAIC04Niw3ICs4Niw3IEBAIHByb3RlY3Rl
ZDoKICAgICBNZWRpYUtleXMoRG9jdW1lbnQmLCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmll
ciwgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkLCBjb25zdCBWZWN0b3I8TWVkaWFLZXlTZXNz
aW9uVHlwZT4mLCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2U+JiYpOwogCiAgICAgLy8gQ0RN
SW5zdGFuY2VDbGllbnQKLSAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVj
ZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9p
ZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dn
ZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCAy
ZmRjNGMwMDIxZjZlMWZkZWM0NWY4ZmFmNjA5MDZjMmJmODJlM2IxLi4wMDM5MzAyZjdkYzE2ZmZl
Y2ZjNDY1YzdkOGRhMjUyZjk4ZGFmNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1
bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVy
LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgaWYgKGF1dG8gc2hhcmVk
QnVmZmVyID0gZm9ybURhdGFCb2R5KCkuYXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAgICBtX2Nv
bnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlw
ZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOworICAgICAg
ICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250
ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVk
QnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2Fk
IHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4KQEAgLTI3Miw3ICsyNzIsNyBAQCBSZWZQdHI8
Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoKSBjb25zdAogICAgIGlmIChpc0Zv
cm1EYXRhKCkpCiAgICAgICAgIHJldHVybiAmY29uc3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRh
Qm9keSgpKTsKICAgICBpZiAoYXV0byogZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpKQotICAgICAg
ICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Cisg
ICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMjg0LDcgKzI4NCw3IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZl
dGNoQm9keTo6dGFrZSgpCiAgICAgICAgIGF1dG8gYnVmZmVyID0gbV9jb25zdW1lci50YWtlRGF0
YSgpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIHJldHVybiBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgfQogCiAgICAgaWYgKGlzQmxvYigpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
CmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1ODc2NzVmMDlkOGI3OWZmNjJiM2IuLjIyMTNkNjIz
MDNlZmUyYTFmNzI5ODI2MGY1ODg2MGI3NzZmYjI2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNDIsNyArMjQyLDcg
QEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6Y2xl
YW4oKQogewotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICBtX2J1ZmZlci5yZXNldCgpOwog
ICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAgICBpZiAobV9zaW5rKSB7CiAgICAgICAgIG1f
c2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjY2LDE2ICsyNjYsMTggQEAgdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0
IFN0cmluZyYgY28KIHsKICAgICBpZiAoc3RyZWFtKSB7CiAgICAgICAgIEFTU0VSVCghbV9zaW5r
KTsKLSAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNy
ZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CisgICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpj
cmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVp
bGRlcigpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8q
IGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBw
ZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlw
ZSwgY29udGVudFR5cGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YS50YWtlKCktPm1h
a2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShX
VEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgICAgIG1fc2luay0+
cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsKQEAgLTMwNiw3ICszMDgsNyBAQCB2
b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJv
ZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtl
RGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250
ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBh
Y2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6
IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURh
dGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwcm9taXNlLT5yZWpl
Y3QoVHlwZUVycm9yKTsKQEAgLTMyNCwxNiArMzI2LDIwIEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplKQogICAgICAgICBt
X3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyKSB7Ci0gICAgICAgIG1fYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZlci5h
cHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNv
bnN1bWVyOjp0YWtlRGF0YSgpCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9i
dWZmZXIpOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1v
dmUoZGF0YSkpOworfQorCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKCkKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgpOwogfQogCiBSZWZQdHI8SlND
OjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKQEAg
LTM0MSw5ICszNDcsNyBAQCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1
cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKIAotICAgIGF1dG8gYXJyYXlC
dWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1ZmZlciA9
IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVyOworICAgIHJldHVybiBtX2J1ZmZlci50
YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRjaEJvZHlD
b25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAt
MzUxLDkgKzM1NSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIpCiAgICAg
ICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRvIGJ1ZmZl
ciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1dG8gZGF0YSA9IGJ1
ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIFdU
Rk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29u
dGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBlKTsKIH0K
IAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4ICszNjQs
OCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9i
dWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRS
ZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+
c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIgPSBtX2J1
ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzg1LDggQEAgdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNvbnN1bWVy
OjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAgbV9zb3Vy
Y2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAgIG1fc291
cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAgICAgICAg
bV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAgICAgIG1f
c291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7
CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdGYWlsZWQoY29uc3QgRXhjZXB0
aW9uJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmgKaW5kZXggMmIwNTZmMTI2NDNiYTk2N2ZlNDFhMDE1MTNhODliNzM2MjY0
MmQ0Yy4uODcxZDJjMDg2MzMxYTk4Mjk0YTE2NmE0YjQyZTMxODRlMDM3NzcyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtNTAs
MTAgKzUwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVm
ZmVyOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
KSB7IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsgfQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQor
ICAgIHZvaWQgc2V0RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtl
QXNBcnJheUJ1ZmZlcigpOwogICAgIFN0cmluZyB0YWtlQXNUZXh0KCk7CiAKQEAgLTgyLDcgKzgy
LDcgQEAgcHJpdmF0ZToKIAogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRU
eXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgbV9idWZmZXI7CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9jb25zdW1l
UHJvbWlzZTsKICAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IG1f
c2luazsKICAgICBSZWZQdHI8RmV0Y2hCb2R5U291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggZmM1NWNjN2Q4M2Q4YmMx
MWYwODU0ZGMzY2ZkODUwOTdhMzFmMTBmNi4uMDNmODliNjFjYTVmN2M3MTc2YjlkODhjZDEzNjYw
ZTg2YjdhMjU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdG9wKCkKICAgICAg
ICAgbV9sb2FkZXItPmNhbmNlbCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaExv
YWRlcjo6c3RhcnRTdHJlYW1pbmcoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZl
dGNoTG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiB7CiAgICAgQVNTRVJUKG1fY29uc3VtZXIpOwog
ICAgIGF1dG8gZmlyc3RDaHVuayA9IG1fY29uc3VtZXItPnRha2VEYXRhKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKaW5kZXggMmY5MGYwZWMzZmY5MDVhMjYy
MzFjODRjNzJhN2ExODZjZDRiZmU4My4uNDYxMmQwZTBlM2E3ZWZlMzA2MDM5NmIwZDc1YTJmYTNi
YzRlZGRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApA
QCAtMzksMTQgKzM5LDE0IEBAIGNsYXNzIEZldGNoQm9keUNvbnN1bWVyOwogY2xhc3MgRmV0Y2hM
b2FkZXJDbGllbnQ7CiBjbGFzcyBGZXRjaFJlcXVlc3Q7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIAogY2xhc3MgRmV0Y2hMb2FkZXIgZmluYWwgOiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNs
aWVudCB7CiBwdWJsaWM6CiAgICAgRmV0Y2hMb2FkZXIoRmV0Y2hMb2FkZXJDbGllbnQmLCBGZXRj
aEJvZHlDb25zdW1lciopOwogICAgIFdFQkNPUkVfRVhQT1JUIH5GZXRjaExvYWRlcigpOwogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKKyAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKIAogICAgIHZvaWQgc3RhcnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEZldGNoUmVxdWVzdCYsIGNvbnN0IFN0cmlu
ZyYpOwogICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEJsb2Im
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmlu
ZGV4IDRkZjg0MjZjNzE4YmExNmVjZjBhNDdlNzNlOTAwZDNmODQ4ZjY0ZjIuLmUzOGE4M2FkZTdk
NmUwYWFmNzBjZWI5YzVhYThmZThhYjQ5NDNkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtNDAwLDcgKzQwMCw4IEBAIHZvaWQgRmV0
Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlD
aHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNw
YW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OworICAgIGF1dG8gY29udGln
dW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgU3BhbiBjaHVuayB7IGNv
bnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0
YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAgLTUwMyw3ICs1MDQsNyBAQCB2b2lkIEZldGNoUmVz
cG9uc2U6OmZlZWRTdHJlYW0oKQogICAgIGNsb3NlU3RyZWFtKCk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKK1Jl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpz
dGFydFN0cmVhbWluZygpCiB7CiAgICAgQVNTRVJUKG1fbG9hZGVyKTsKICAgICByZXR1cm4gbV9s
b2FkZXItPnN0YXJ0U3RyZWFtaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEzOGQzYzNmNmUyZmRiNjY3NWU4YTRkMTM2NWJm
NWE1YmIuLmNmNzg2MzIzOWZkOTQ2ZWUwZThkODhlYWVhNzJmZTk4OWVlZDMxNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0xMzQsNyArMTM0
LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIGNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1l
RGF0YUJ5Q2h1bmtDYWxsYmFjayYmKTsKIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
dGFydFN0cmVhbWluZygpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
c3RhcnRTdHJlYW1pbmcoKTsKICAgICAgICAgTm90aWZpY2F0aW9uQ2FsbGJhY2sgdGFrZU5vdGlm
aWNhdGlvbkNhbGxiYWNrKCkgeyByZXR1cm4gV1RGTW92ZShtX3Jlc3BvbnNlQ2FsbGJhY2spOyB9
CiAgICAgICAgIENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrIHRha2VDb25zdW1lRGF0YUNhbGxi
YWNrKCkgeyByZXR1cm4gV1RGTW92ZShtX2NvbnN1bWVEYXRhQ2FsbGJhY2spOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKaW5kZXggZGQx
OWM4NzBhYTdkMjQ4NWY3ZTljYTg0OTJhODQyMTM1MmRkZDA0MS4uMWE2NmJmODE4MzIwZTk1NjA3
ZDYxNWYxYTA4MmE4Mjc2ZWIyYTM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTM4LDcgKzM4LDcgQEAgZW51bSBjbGFzcyBDcmVh
dGVOZXdHcm91cEZvckhpZ2hsaWdodCA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIEhp
Z2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgOiBib29sIHsgTm8sIFllcyB9OwogCiBzdHJ1
Y3QgQXBwSGlnaGxpZ2h0IHsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBoaWdobGln
aHQ7CisgICAgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGhpZ2hsaWdodDsK
ICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGV4dDsKICAgICBDcmVhdGVOZXdHcm91cEZvckhp
Z2hsaWdodCBpc05ld0dyb3VwOwogICAgIEhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHAg
cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDsKQEAgLTUyLDcgKzUyLDcgQEAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4oaGlnaGxpZ2h0LT5zaXpl
KCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hsaWdodC0+ZGF0YSgp
LCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEoaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgp
LCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKaW5kZXgg
ZTJkOWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJkMDRhNDU3NmMwNi4uNWU4MGYwYzA3MmQ0OWEz
ZWY3OTY5NTkzMDJjNDQ1NmNkMmFiZGU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCkBAIC00NCwx
NSArNDQsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdGV4cHIgdWludDY0X3QgaGln
aGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1
cmUgIChBKXBwbGUoQVApcGxpY2F0aW9uKEgpaWdobGlnaHRzKDIwMjEpCiAKLXN0ZDo6b3B0aW9u
YWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIo
KTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICBhdXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3Rk
OjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBk
YXRhOwogICAgIHJldHVybiBkYXRhOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBBcHBIaWdobGln
aHRSYW5nZURhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsK
ICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGVuY29kZXI7CiAgICAgZW5jb2RlciA8PCAq
dGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFJhbmdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhLmgKaW5kZXggY2Y2MzgxYWNmYjBhNTIxMWI0MzUwOGI3YjUxN2Q2
ZGIyZjZmYzc0My4uYjVkYWY2MDI1Mzk4YTNmN2U2ZjFkMzdhYmVjZTg0NGQ0ZjFjNjU0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEFwcEhpZ2hsaWdodFJhbmdlRGF0YSB7
CiBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGNyZWF0ZShjb25zdCBT
aGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxB
cHBIaWdobGlnaHRSYW5nZURhdGE+IGNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CiAgICAgc3RydWN0IE5vZGVQYXRoQ29tcG9uZW50IHsKICAgICAgICAgU3RyaW5nIGlkZW50
aWZpZXI7CiAgICAgICAgIFN0cmluZyBub2RlTmFtZTsKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFw
cEhpZ2hsaWdodFJhbmdlRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
aWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKaW5kZXggZGMzOWEwZjBkMThmZmZjYTdkZmI0NjUy
MTljZDYxMmE5ZjczOGY4Zi4uZTVkZTg0OTRmMzUwNDUzNTk0YjJmMmU4OGMzZGRhMzNmYTlhZjcw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0U3RvcmFnZS5jcHAKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIEFwcEhpZ2hsaWdo
dFN0b3JhZ2U6OnN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTdGF0aWNSYW5nZT4mJiByYW5nZSkKICAg
ICBtX2RvY3VtZW50LT5wYWdlKCktPmNocm9tZSgpLnN0b3JlQXBwSGlnaGxpZ2h0KFdURk1vdmUo
aGlnaGxpZ2h0KSk7CiB9CiAKLXZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZUFuZFNj
cm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBTY3JvbGxUb0hp
Z2hsaWdodCBzY3JvbGwpCit2b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVBbmRTY3Jv
bGxUb0FwcEhpZ2hsaWdodChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIFNj
cm9sbFRvSGlnaGxpZ2h0IHNjcm9sbCkKIHsKICAgICBhdXRvIGFwcEhpZ2hsaWdodFJhbmdlRGF0
YSA9IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGJ1ZmZlcik7CiAgICAgaWYgKCFhcHBI
aWdobGlnaHRSYW5nZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKaW5kZXggYjE1MmY3NmVkNDI0MDg5MmVhN2Rl
MjFlMmNiMDZkNDcyZDg3MzM2MC4uZTI3NjYzM2I0ODRmODEwOTRhZGVjZTQ1ZjY0YWJiZWQxNzgx
MjUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFN0b3JhZ2UuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdGF0aWNS
YW5nZTsKIGNsYXNzIEhpZ2hsaWdodDsKIApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAg
fkFwcEhpZ2hsaWdodFN0b3JhZ2UoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcmVB
cHBIaWdobGlnaHQoUmVmPFN0YXRpY1JhbmdlPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVmZmVyPiYmLCBTY3Jv
bGxUb0hpZ2hsaWdodCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlQW5kU2Nyb2xs
VG9BcHBIaWdobGlnaHQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFNjcm9sbFRvSGln
aGxpZ2h0KTsKICAgICB2b2lkIHJlc3RvcmVVbnJlc3RvcmVkQXBwSGlnaGxpZ2h0cygpOwogICAg
IE1vbm90b25pY1RpbWUgbGFzdFJhbmdlU2VhcmNoVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlt
ZUF0TGFzdFJhbmdlU2VhcmNoOyB9CiAgICAgdm9pZCByZXNldExhc3RSYW5nZVNlYXJjaFRpbWUo
KSB7IG1fdGltZUF0TGFzdFJhbmdlU2VhcmNoID0gTW9ub3RvbmljVGltZTo6bm93KCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3NDM1NmIzNWEx
NjgwMzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVj
ODc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2ODYs
NyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleChJREJPYmpl
Y3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5z
YWN0aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8u
a2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChp
bmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0
dGVtcHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0
cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBh
dGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBr
ZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlm
ICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIpOwog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFs
aXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSJf
cyB9OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpjcmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4g
aW5kZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBh
dGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJL
ZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0
YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJfcyB9
OwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1
bmNoZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8mIGluZm8KIHsKICAgICBo
YXNSZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlC
dWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtl
eSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZv
ciBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChp
bnQ2NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURC
QmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAlcyIsIGtleVZhbHVl
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVm
ZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkg
dG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9y
ZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKKyAgICBhdXRv
IHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYgKCF2
YWx1ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhl
IHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBz
dG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5p
blByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0
dGVtcHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1w
cm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBm
b3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3Ig
ZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0gSURC
VHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0aW9u
KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJh
c2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiX3Mg
fTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNv
cmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CiAg
ICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3Jl
Iik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBz
ZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAg
LTIxMjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVj
b3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgYXV0byBrZXkg
PSBrZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkg
PSBJREJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3Vw
IHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJs
ZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjEz
Myw3ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBrZXkgPSBrZXlSYW5n
ZS51cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlE
YXRhOjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsyNDQz
LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJl
Y29yZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgp
ICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYga2V5LnR5cGUoKSAh
PSBJbmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNv
cmQiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIl9zIH07CkBAIC0y
NTA4LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291
bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQg
PSAwOwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpID8gSURC
S2V5RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKKyAgICBh
dXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CiAgICAgaWYg
KCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUg
bG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29r
dXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAogICAgIGF1dG8gdXBw
ZXJLZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1heGltdW0oKSA6
IHJhbmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29r
dXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5h
YmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBv
cGVyYXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5NjIz
YmQ4ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5Y2ZlZGZlOWYyZWE2
NWE2ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBi
b29sIFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0YXRlbWVudC0+Ymlu
ZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2Vy
IGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wg
U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3Nh
cnkoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50
LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykg
ewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBz
dGF0ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCmluZGV4
IDBhNDY5YmQwYmQxZjM4ZGNiOTZiMzlkOGMzMDAwYWY3M2QxMmFiNTkuLmM5ZDZkYTZiZGQ5Zjkz
OTUwMWY0ZjQyMzJiNGM3ODM3ZDg0MGRhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKQEAgLTE5Niw3ICsxOTYs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVJlY29yZGVyOjpzdGFydFJlY29yZGluZyhzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiB0aW1lU2xpYwogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRp
YyBpbmxpbmUgUmVmPEJsb2JFdmVudD4gY3JlYXRlRGF0YUF2YWlsYWJsZUV2ZW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUgdGltZUNvZGUpCitzdGF0aWMgaW5saW5lIFJl
ZjxCbG9iRXZlbnQ+IGNyZWF0ZURhdGFBdmFpbGFibGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkKIHsKICAgICBhdXRvIGJsb2Ig
PSBidWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCBt
aW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoY29udGV4dCk7CiAgICAgcmV0dXJuIEJsb2JFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEJsb2JFdmVudDo6SW5pdCB7
IHsgZmFsc2UsIGZhbHNlLCBmYWxzZSB9LCBXVEZNb3ZlKGJsb2IpLCB0aW1lQ29kZSB9LCBCbG9i
RXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCmluZGV4IDc3MTJiNDQ1MjgzNjdkOGMyNzI1
MDJhZGJhYWNhYWY5Nzg4Y2JkYjAuLjFlOWI3NGFiMTdlMzEwOGRiNDIwOWI5YjRmMDIxNGRhMTFh
YzZlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXIuaApAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aXNwYXRjaEVycm9yKEV4Y2VwdGlvbiYmKTsKIAogICAgIGVudW0gY2xhc3MgVGFrZVByaXZhdGVS
ZWNvcmRlciB7IE5vLCBZZXMgfTsKLSAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
ZG91YmxlKT47CisgICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBk
b3VibGUpPjsKICAgICB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmLCBUYWtlUHJp
dmF0ZVJlY29yZGVyKTsKIAogICAgIC8vIE1lZGlhU3RyZWFtOjpPYnNlcnZlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcApp
bmRleCAzZjRjOWJjZDEzM2FjMjlmM2Y3ZGRlMTk5NDc4ZTM5MjU3ZDVlNjZiLi44NzRhYTdmMGIx
OGYwZWU3NTg4MGJhNWY1ZWY2N2Q0N2JmYzJiMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcApAQCAtNzcsNyArNzcs
NyBAQCB2b2lkIEFydHdvcmtJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTAogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IC8vIFNhbml0aXplIHRoZSBpbWFnZSBieSBkZWNvZGluZyBpdCBpbnRvIGEgQml0bWFwSW1hZ2Uu
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1h
Z2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBh
dXRvIGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGJpdG1hcEltYWdl
LT5zZXREYXRhKFdURk1vdmUoYnVmZmVyVG9TYW5pdGl6ZSksIHRydWUpOwogICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IDJiM2NkZTM2MDgyNDcxYzExYzg3ZmNm
NjFjYzgxY2MzNjBjMzlkOTAuLmQzNzhhZmM2ZjhhMWI1N2EwMzAyZTJjODY4YjI0MGEyMDk3ZmU0
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNl
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJj
ZUJ1ZmZlci5jcHAKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6YXBwZW5k
QnVmZmVyVGltZXJGaXJlZCgpCiAgICAgLy8gaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1l
ZGlhL3Jhdy1maWxlL3RpcC9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLmh0bWwjc291cmNlYnVm
ZmVyLXNlZ21lbnQtcGFyc2VyLWxvb3AKICAgICAvLyBXaGVuIHRoZSBzZWdtZW50IHBhcnNlciBs
b29wIGFsZ29yaXRobSBpcyBpbnZva2VkLCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFwcGVuZERhdGEgPSBXVEZNb3ZlKG1fcGVuZGluZ0FwcGVu
ZERhdGEpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBhcHBlbmREYXRhID0g
V1RGTW92ZShtX3BlbmRpbmdBcHBlbmREYXRhKTsKICAgICAvLyAxLiBMb29wIFRvcDogSWYgdGhl
IGlucHV0IGJ1ZmZlciBpcyBlbXB0eSwgdGhlbiBqdW1wIHRvIHRoZSBuZWVkIG1vcmUgZGF0YSBz
dGVwIGJlbG93LgogICAgIGlmICghYXBwZW5kRGF0YSB8fCAhYXBwZW5kRGF0YS0+c2l6ZSgpKSB7
CiAgICAgICAgIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQ6
OkFwcGVuZFN1Y2NlZWRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuaAppbmRleCA1MjBjMDc3NTY5NmEyZjBlMmU3MzAwNzM1ZThjOTc3
NDk1ZjFhNjE0Li5kNGM4NTc5YzBiYmQ0NDNhNTEyZmE5ZjY4YzQyN2VjMDQ4ODVkMGQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgK
QEAgLTIyMiw3ICsyMjIsNyBAQCBwcml2YXRlOgogCiAgICAgV1RGOjpPYnNlcnZlcjx2b2lkKigp
PiBtX29wYXF1ZVJvb3RQcm92aWRlcjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGVu
ZGluZ0FwcGVuZERhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fcGVu
ZGluZ0FwcGVuZERhdGE7CiAgICAgVGltZXIgbV9hcHBlbmRCdWZmZXJUaW1lcjsKIAogICAgIFJl
ZlB0cjxWaWRlb1RyYWNrTGlzdD4gbV92aWRlb1RyYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyLmNwcAppbmRleCBmZWIxYjhmZmZiN2I5NGM5ZTdlYjBiZTQ4YWQzNWRkNzA3OWM3
MGJiLi5jYzVhODY1NzMwNTY1N2QwYTk3MDU2NjFlNGJiNDljZTBiODQwNWM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3Rl
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCgpCiAgICAgbV9pc1JlYWR5VG9TZW5k
ID0gdHJ1ZTsKIAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fcGVuZGluZ01lc3NhZ2VzKQot
ICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2Fn
ZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7
CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNz
YWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtZXNz
YWdlLmJ1ZmZlci0+c2l6ZSgpKTsKICAgICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAg
ICAgaWYgKG1faXNQZW5kaW5nQ2xvc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaApp
bmRleCBmNTgyN2RmOTM3OTQ5M2QyODEyNzAxNzdjY2ZiY2EwNTUxNTMyMzFmLi43Mzk0MmE4MzU5
MzFhOWQyODRjNmE0NTFiYjhkYmZiNTc2NWNhZGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUlRD
RGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OwogY2xhc3MgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyQ29ubmVjdGlvbjsKIGNsYXNzIFJUQ0Vycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyIGZpbmFsIDogcHVibGljIFJUQ0RhdGFDaGFubmVsSGFuZGxlciwgcHVibGljIENhbk1h
a2VXZWFrUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcj4gewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwpAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogCiAgICAgc3RydWN0IE1l
c3NhZ2UgewogICAgICAgICBib29sIGlzUmF3IHsgZmFsc2UgfTsKLSAgICAgICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOwogICAgIH07CiAgICAgVmVjdG9yPE1lc3NhZ2U+IG1fcGVuZGluZ01lc3NhZ2VzOwogICAg
IGJvb2wgbV9pc1BlbmRpbmdDbG9zZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAppbmRleCAzZTExMDU0MDAzNTNkZTU2MGYy
NDkzOGE5YjIwOGVmMzZmNjgwM2M0Li4zY2VlZDBhMDExZTdiNTQ2ZmFkZGY0OGJiZGEyMTFkZmRk
NTI0YzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlci5jcHAKQEAgLTk3LDggKzk3LDggQEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI6OnNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmIGNsaWVudCwKICAgICBt
X2NvbnRleHRJZGVudGlmaWVyID0gY29udGV4dElkZW50aWZpZXI7CiAKICAgICBmb3IgKGF1dG8m
IG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2FnZXMpIHsKLSAgICAgICAgc3dpdGNoT24obWVzc2Fn
ZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRhKSB7Ci0gICAgICAgICAgICBjbGllbnQuZGlk
UmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICBzd2l0
Y2hPbihtZXNzYWdlLCBbJl0oUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBkYXRhKSB7Cisg
ICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogICAgICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7
CiAgICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVN0cmluZ0RhdGEodGV4dCk7CiAgICAgICAg
IH0sIFsmXShTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAppbmRleCA0MWY5NTI4MjFlNjIwMDkzZjhlZWZl
MzJjNWVkNGFlMGY1ZTU0MTk3Li4xMWJkNDVkZTkxNTU3NzlmZmM5ZWZiMDNlOTU1MjhmMDVlNjRk
NzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aApAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogICAgICAgICBSVENEYXRhQ2hhbm5lbFN0YXRl
IHN0YXRlOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPHdlYnJ0Yzo6UlRDRXJyb3I+IGVycm9yOwog
ICAgIH07Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxTdGF0ZUNoYW5nZSwgU3Ry
aW5nLCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFu
dDxTdGF0ZUNoYW5nZSwgU3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAg
IHVzaW5nIFBlbmRpbmdNZXNzYWdlcyA9IFZlY3RvcjxNZXNzYWdlPjsKICAgICB2b2lkIHN0b3Jl
TWVzc2FnZShQZW5kaW5nTWVzc2FnZXMmLCBjb25zdCB3ZWJydGM6OkRhdGFCdWZmZXImKTsKICAg
ICB2b2lkIHByb2Nlc3NNZXNzYWdlKGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuY3BwCmluZGV4IDMwOWMwMjY0M2Y1YTdhZTlmZWMwOGExNGViMjEyMjQwOWIxZjg5ZTAu
LjYzZjFjM2NiZTFlYTgxY2ZiZjQ1NDY0NjMyMGNkZjdmYWNmNTljMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJj
ZVVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fc291cmNlVVJMID0gdXJsOwogCi0gICAgbV9k
YXRhID0gbnVsbHB0cjsKKyAgICBtX2RhdGEucmVzZXQoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9
IGZhbHNlOwogCiAgICAgaWYgKG1fcmVzb3VyY2UpIHsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cisg
ICAgbV9kYXRhLmVtcHR5KCk7CiAKICAgICBtX3Jlc291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsK
ICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMpOwpAQCAtMTgwLDggKzE4MCw3IEBAIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiBzCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jl
c291cmNlKTsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBk
YXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2
b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH07CiAKICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxl
ZE9yQ2FuY2VsZWQoKSkgewotICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBtX2Rh
dGEucmVzZXQoKTsKIAogICAgICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVS
ZW5kZXJlcigpOwogCkBAIC0yMDQsNyArMjAzLDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EK
ICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVs
OjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEu
dGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNv
dXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5k
ZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAwNWExY2RhYTNlMTQ4NzdhMGFlNDY1YjYzNDlh
YTViYmIxYWYyYzgyLi5jZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFlNmU4NTgwM2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogCiAgICAgVVJMIG1f
c291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBt
X3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8TW9kZWw+IG1fbW9kZWw7CiAgICAgVW5p
cXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAgICAgYm9vbCBtX2RhdGFDb21w
bGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbSBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNE
Lm1tCmluZGV4IDNlODJhYzIyMTY3OTZjOWVkYjc2MGExOWVkN2FjZTFmNDJjZDM3NzcuLjEzMDNl
YzRkMjU2OGE2NmY4N2Q3ZmViMjBiZjJiMDMzOTIzMmMzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVy
VVNELm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtp
dC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIFJl
dGFpblB0cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVs
U291cmNlKQogICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5Rmls
ZSgiTW9kZWxGaWxlIiwgZmlsZUhhbmRsZSwgIi51c2R6Iik7CiAgICAgQVNTRVJUKEZpbGVTeXN0
ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOwogCi0gICAgc2l6ZV90IGJ5dGVDb3VudCA9
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+
ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgc2l6ZV90IGJ5dGVDb3Vu
dCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIG1vZGVsU291cmNlLmRhdGEo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7
CiAgICAgQVNTRVJUX1VOVVNFRChieXRlQ291bnQsIGJ5dGVDb3VudCA9PSBtb2RlbFNvdXJjZS5k
YXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW1TaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1T
aW5rLmgKaW5kZXggMGI4OThmNmFkYjU3ZWIyNWRjNDkzN2Q4MWZmNWQxNGQ1Mjk3NmM4NC4uZDUx
NzNmYmY4YjQwMzQxYzVjZjhkOGE0ZjU1ZWVhYzhmZjgzOGEzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaApAQCAtMzUsNyAr
MzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNz
IFJlYWRhYmxlU3RyZWFtOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgUmVhZGFibGVTdHJlYW1TaW5rIDogcHVibGljIFJlZkNvdW50
ZWQ8UmVhZGFibGVTdHJlYW1TaW5rPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRleCBjNDUy
YzgzZmJkNWNlODk1YmRkMDMxYWNmMTQ2OGY3ODY1MDYyMmQ3Li5iOGI3Nzg1ZjkxZDA2OGMyYTQ2
Y2ViMWQ2NTk3NThmY2Y4YjY5ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAgLTUxLDEzICs1MSwxNSBA
QCBwdWJsaWM6CiAgICAgICAgIGlmIChtX3NjcmlwdEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAorICAgICAgICBpZiAoIW1fY29udGlndW91c0J1
ZmZlciAmJiAoIW1fY29udGFpbnNPbmx5QVNDSUkgfHwgKm1fY29udGFpbnNPbmx5QVNDSUkpKQor
ICAgICAgICAgICAgbV9jb250aWd1b3VzQnVmZmVyID0gbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCkt
Pm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIGlmICghbV9jb250YWluc09ubHlBU0NJSSkgewot
ICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSSht
X3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+
c2l6ZSgpKTsKKyAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJl
QWxsQVNDSUkobV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZl
cigpLT5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAg
ICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRN
YXNrVG9wOEJpdHMobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZm
ZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3Ry
aW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2NvbnRpZ3VvdXNCdWZmZXIt
PmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgcmV0dXJuIHsgbV9z
Y3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2Ny
aXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CisgICAgICAgICAgICByZXR1cm4geyBtX2Nv
bnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVm
ZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CiAKICAgICAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0
cmluZykgewogICAgICAgICAgICAgbV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBtX3NjcmlwdEJ1ZmZl
ci50b1N0cmluZygpOwpAQCAtODEsNiArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgbV9zY3JpcHRCdWZmZXIgPSBzY3JpcHRCdWZmZXI7CisgICAgICAgIG1f
Y29udGlndW91c0J1ZmZlciA9IG51bGxwdHI7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtOTEsNiAr
OTQsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFNjcmlwdEJ1ZmZlciBtX3NjcmlwdEJ1ZmZl
cjsKKyAgICBtdXRhYmxlIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udGlndW91c0J1ZmZlcjsK
ICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAgICBtdXRhYmxlIFN0
cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggN2U0OWE5ZTczMjI2YjY1Y2MyOGJmNTk0
ODEzYjBmODNiMjY5ZDIyYi4uZWYzN2YxZDBjYTQ2MmJiOWI3YzliNmE1NWQxOGViYjRjMTE4MWE3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgRGV0YWNoZWRPZmZzY3JlZW5DYW52YXM7
CiBjbGFzcyBJREJWYWx1ZTsKIGNsYXNzIE1lc3NhZ2VQb3J0OwogY2xhc3MgSW1hZ2VCaXRtYXBC
YWNraW5nOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIGVudW0gY2xhc3MgU2VyaWFsaXphdGlvblJldHVybkNvZGU7CiAKIGVudW0gY2xhc3MgU2Vy
aWFsaXphdGlvbkVycm9yTW9kZSB7IE5vblRocm93aW5nLCBUaHJvd2luZyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVlNWYzNzgyZmJiMjMx
MjNiMmRkM2E1N2ExNzI4Li4xMDhlNmM4NzY3ZDBkMmZkYWNiZTY1MDRlYmM1MDcwZTg4MmJlNjQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNiArMzQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3MgQ1NTRm9u
dFNlbGVjdG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBG
b250OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKQEAgLTQyLDcgKzQzLDYgQEAgY2xhc3Mg
Rm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRp
ZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKIGNsYXNzIFNWR0ZvbnRGYWNlRWxlbWVu
dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZv
bnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZl
YXR1cmVTZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggMWRlYWM0
ZjQxY2Y0OWYxZjg4MmRjY2VmZDQ4Y2Y2YTk3MzJmM2VkOS4uYzQyZWMwNTFmZTExZWJhMTRmODEz
MzU5ZDhkMTdhMmMyODE2NjRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAg
LTQwMiw3ICs0MDIsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVUeXBlUmVhZGVyIGZpbmFsIDog
UGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgICAgICB0eXBlcy5hZGQoRmlsZTo6Y29udGVudFR5
cGVGb3JGaWxlKGZpbGVuYW1lKSk7CiAgICAgfQogCi0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikKKyAgICB2
b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKICAgICB7CiAgICAgICAgIHR5cGVzLmFkZCh0eXBlKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTcyNGNmMGU1MGJhYTViOWIy
NDEzMDQ4MWVlNzI0Y2I3ODIwN2FhNC4uYzVlOWUyNmIzNzJhZTY4M2YxODY4ZTkyMGM0NWVkNzBl
ZGY1NTQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDEzMyw3ICs0MTMzLDcg
QEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8o
RWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4geyBhdHRhY2htZW50LT51bmlxdWVJZGVudGlm
aWVyKCksIFdURk1vdmUoYWRkaXRpb25hbFR5cGVzKSwgV1RGTW92ZShhZGRpdGlvbmFsRGF0YSkg
fTsKIH0KIAotdm9pZCBFZGl0b3I6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJp
bmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIEVk
aXRvcjo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmls
ZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKGF1
dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQogICAgICAgICBjbGllbnQtPnJlZ2lzdGVyQXR0
YWNobWVudElkZW50aWZpZXIoaWRlbnRpZmllciwgY29udGVudFR5cGUsIHByZWZlcnJlZEZpbGVO
YW1lLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDAxZmUwYjVl
MDQ0ZWY2M2YyNmE3MWI0NzJlZjk4YjExYzIyOGI5MWMuLjFkMDcxNmM1YjkzYzhiYjdhZDczZjQx
NzRjYTgwNDU5MDVmOTE5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNTcsOSArNTcs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyOwogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwotY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3Mg
Q29tcG9zaXRlRWRpdENvbW1hbmQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21V
bmRvU3RlcDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXI7CiBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBA
IC03NCw3ICs3NSw3IEBAIGNsYXNzIEtpbGxSaW5nOwogY2xhc3MgUGFzdGVib2FyZDsKIGNsYXNz
IFBhc3RlYm9hcmRXcml0ZXJEYXRhOwogY2xhc3MgUmVuZGVyTGF5ZXI7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udDsKIGNsYXNz
IFNwZWxsQ2hlY2tSZXF1ZXN0OwogY2xhc3MgU3BlbGxDaGVja2VyOwpAQCAtNTYzLDcgKzU2NCw3
IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFt
ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckF0dGFjaG1l
bnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZmlsZURh
dGEpOworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVO
YW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBmaWxlRGF0YSk7CiAgICAgdm9pZCBy
ZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpOwog
ICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKICAgICB2b2lk
IHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCmluZGV4IDA4YWExMjQyNjYyMGY3Njk1M2E3
OWIzNGVkZTVmNmRmMDUyN2IwMTUuLjk1N2I0ZmQ0YTU1N2ZjODFjZDMwNjllZWFjYjg5NDg4YTk0
N2I3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCkBAIC03
MiwxNiArNzIsMTYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJp
bmcmLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUgPSB7IH0pIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEZp
bGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEhU
TUwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJl
ZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZEltYWdlKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRh
dGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CiAgICAg
Ym9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwog
ICAgIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OwotICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJl
YWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7
IH0pIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikg
b3ZlcnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNp
emUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CiAjZW5kaWYKIH07
CiAKQEAgLTk5LDE2ICs5OSwxNiBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVhZEZpbGVQYXRoKGNv
bnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYgPSB7IH0p
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkRmlsZVBhdGhzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHJl
YWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZEltYWdlKFJlZjxT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCByZWFkSW1hZ2UoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0p
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFk
UGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBvdmVy
cmlkZTsKLSAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9v
bCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OworICAgIGJvb2wgcmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwor
ICAgIGJvb2wgcmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAg
Ym9vbCByZWFkRGF0YUJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCmluZGV4IDU0OWViN2QyZTRjMDc1
NDhlNGE4YzllYTI0ZWMyMGU0ZjIxYmZhMjUuLjExN2RiYTY4ZWRiMGJkNGI2YzMwZTA5NDg1ZDlk
MGMwZjI5YzM4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBh
c3RlYm9hcmRGaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdm9pZCBXZWJDb3Jl
UGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1l
KQogICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgZmlsZW5hbWUp
KTsKIH0KIAotdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKK3ZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVh
dGUoY29udGV4dC5nZXQoKSwgQmxvYjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGJ1ZmZlci0+ZXh0
cmFjdERhdGEoKSwgdHlwZSksIGZpbGVuYW1lKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAppbmRleCA1YzUyOWRkN2M4
ZWNjMDAwNDhmY2I0ZDE1ODE0NjM1YjI0ZDkwYmI3Li45ZDgxNjA1ZjE5OTI5OGYxOWMwZWQ2OTk1
ZmUzYmQ3NzgzMDM0ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IFdlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAg
ICB+V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCk7CiAKICAgICB2b2lkIHJlYWRGaWxlbmFt
ZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBS
ZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29udGV4dDsKICAgICBWZWN0b3I8UmVmPEZp
bGU+PiBmaWxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRN
TENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRl
ci5tbQppbmRleCBkNDhlMTFjOTZiNzgwOGY4ODM1NGIzYjA3NDdlZWIxZjFlMzdlM2YzLi4wNzgy
NDgzNjJhYTA1NGRjM2FiMDAwMDQ1MTcxODQxOThhNTgwZjc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBC
T09MIEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudChFbGVtZW50JiBlbGVt
ZW50LCBOU1VSTCAqdXJsLCBCT09MCiAgICAgICAgIGlmIChhdXRvIHJlc291cmNlID0gZGF0YVNv
dXJjZS0+c3VicmVzb3VyY2UodXJsKSkgewogICAgICAgICAgICAgYXV0byYgbWltZVR5cGUgPSBy
ZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgICAgIGlmICghdXNlUGxhY2Vob2xkZXIgfHwg
bWltZVR5cGUgIT0gInRleHQvaHRtbCIpIHsKLSAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9
IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVu
dHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAg
ICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1
bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFBy
ZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHVybCwgbWltZVR5
cGUpXTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG5vdEZvdW5kID0gWUVT
OwpAQCAtMjMwMCw3ICsyMzAwLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBm
aWxlV3JhcHBlckZvclVSTChEb2N1bWVudExvYWRlciogZGF0YVNvdXJjZSwgTlMKIAogICAgIGlm
IChkYXRhU291cmNlKSB7CiAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNv
dXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKFVSTCkpIHsKLSAgICAgICAgICAgIGF1dG8g
d3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVX
aXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAg
ICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGlu
aXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICBOU1N0cmluZyAqZmlsZW5h
bWUgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpOwogICAgICAgICAg
ICAgaWYgKCFmaWxlbmFtZSB8fCAhW2ZpbGVuYW1lIGxlbmd0aF0pCiAgICAgICAgICAgICAgICAg
ZmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShyZXNvdXJjZS0+dXJsKCks
IHJlc291cmNlLT5taW1lVHlwZSgpKTsKQEAgLTIzMjIsOCArMjMyMiw4IEBAIHN0YXRpYyBSZXRh
aW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRh
dGFTb3VyY2UsIE5TCiBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVy
Rm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJ
bWFnZSogY2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCkpIHsKLSAgICAgICAgaWYg
KFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVy
KCkpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGlu
aXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXSk7CisgICAgICAgIGlmIChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIg
PSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9w
dE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNo
YXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAg
ICB9CiAKICAgICBhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0K
aW5kZXggNmFhM2NkNTRlODJiOTliMzE5NDI3YmVlMzRjOGM0NGI2NzllMjI3OS4uNzZiMWEwMDlk
ZTQzMGZhM2I1NGQ5YTE1ZTY3OGNkODNmMzE0NWZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI0NSw3ICsy
NDUsNyBAQCBzdGF0aWMgYm9vbCBzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0YShjb25z
dCBGcmFtZSYgZnJhbWUpCiAKICNlbmRpZgogCi1zdGF0aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+
IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQm
IGRvY3VtZW50LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQorc3RhdGljIFJlZjxEb2N1
bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJh
bWUsIERvY3VtZW50JiBkb2N1bWVudCwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJl
ZFNpemUpCiB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBhdXRvIGF0dGFj
aG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1l
bnRUYWcsIGRvY3VtZW50KTsKQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNl
UmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50
JiBmcgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSBy
ZXNvdXJjZUVudHJ5LT52YWx1ZTsKLSAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFw
cGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUo
KSwgcmVzb3VyY2UtPmRhdGEoKSB9KTsKKyAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmFwcGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5
cGUoKSwgcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpIH0pOwogICAgIH0KIAogICAg
IGlmICghc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmlzRW1wdHkoKSkKQEAgLTMzMiw3ICszMzIs
NyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICBuYW1lID0gIm1lZGlhIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNl
cnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5
cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIGltYWdlIH0pOworICAgICAgICBhdHRhY2ht
ZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUt
Pm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIGlt
YWdlIH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVzY2VuZGFudHNPZlR5
cGU8SFRNTE9iamVjdEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0
YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUs
IERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIG5hbWUgPSAiZmlsZSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5m
by5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJl
c291cmNlLT52YWx1ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNl
cnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5
cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0IH0p
OwogICAgIH0KIAogICAgIGZvciAoYXV0byYgaW5mbyA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZv
KSB7CkBAIC00MjgsNyArNDI4LDcgQEAgc3RydWN0IE1hcmt1cEFuZEFyY2hpdmUgewogICAgIFJl
ZjxBcmNoaXZlPiBhcmNoaXZlOwogfTsKIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5k
QXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNI
VE1MKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1
cEFuZEFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6OmZ1
bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKIHsKICAg
ICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoVVJMKCksIGJ1ZmZlcik7
CiAgICAgaWYgKCFhcmNoaXZlKQpAQCAtNDQyLDcgKzQ0Miw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZl
ciYgYnVmCiAgICAgaWYgKCFjYW5TaG93TUlNRVR5cGVBc0hUTUwodHlwZSkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmlu
Zzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRh
dGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxl
YXNlTm9uTnVsbCgpIH07CisgICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZy
b21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFp
blJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCks
IGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9OwogfQogCiBzdGF0aWMgU3RyaW5nIHNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1
bWVudCwgTWFya3VwQW5kQXJjaGl2ZSYgbWFya3VwQW5kQXJjaGl2ZSwgTVNPTGlzdFF1aXJrcyBt
c29MaXN0UXVpcmtzLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNh
blNob3dNSU1FVHlwZUFzSFRNTCkKQEAgLTQ4MSw3ICs0ODEsNyBAQCBzdGF0aWMgU3RyaW5nIHNh
bml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRp
b25Eb2N1bQogICAgICAgICBpZiAoIXNob3VsZFJlcGxhY2VTdWJyZXNvdXJjZVVSTChzdWJmcmFt
ZVVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBNYXJrdXBBbmRBcmNoaXZl
IHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJj
ZS0+ZGF0YSgpLmRhdGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLAor
ICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9t
VVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLAogICAgICAgICAgICAgc3Vi
ZnJhbWVNYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgc3ViZnJhbWVBcmNoaXZlLmNvcHlS
ZWYoKSB9OwogICAgICAgICBhdXRvIHN1YmZyYW1lTWFya3VwID0gc2FuaXRpemVNYXJrdXBXaXRo
QXJjaGl2ZShmcmFtZSwgZGVzdGluYXRpb25Eb2N1bWVudCwgc3ViZnJhbWVDb250ZW50LCBNU09M
aXN0UXVpcmtzOjpEaXNhYmxlZCwgY2FuU2hvd01JTUVUeXBlQXNIVE1MKTsKIApAQCAtNDk3LDcg
KzQ5Nyw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYg
ZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgcmV0dXJuIHNhbml0aXplZE1h
cmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChXVEZNb3ZlKGZyYWdtZW50KSwgKnN0YWdpbmdEb2N1
bWVudCwgbXNvTGlzdFF1aXJrcywgbWFya3VwQW5kQXJjaGl2ZS5tYXJrdXApOwogfQogCi1ib29s
IFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQor
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVG
b3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNTMyLDcgKzUzMiw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUo
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29u
dGVudE1hcmt1cFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiti
b29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTYxMiwxMiArNjEyLDEyIEBAIGJvb2wgV2ViQ29udGVudE1hcmt1
cFJlYWRlcjo6cmVhZEhUTUwoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuICFtYXJr
dXAuaXNFbXB0eSgpOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJl
ZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3Vt
ZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAg
ICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBz
dHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTYyNiwxMSArNjI2LDExIEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVu
dE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNv
bnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVz
Om51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdt
ZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7
CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjM5LDEyICs2
MzksMTIgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVy
OjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpy
ZWFkUlRGKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUu
c2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJp
YnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBm
cmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0
KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY1Mywx
MSArNjUzLDExIEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVh
ZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3Vw
UmVhZGVyOjpyZWFkUlRGKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBp
ZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIHN0
cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1
ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwor
ICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRv
Y3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZy
YWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJh
Z21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY3Niw3ICs2NzYsNyBAQCBib29sIFdl
YkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXpl
IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJ
bWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
dHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQogewogICAg
IEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5k
b2N1bWVudCgpOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogICAgIHJldHVybiBhdHRhY2htZW50OwogfQogCi1zdGF0aWMgUmVmPEhUTUxFbGVt
ZW50PiBhdHRhY2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRh
dGlvblNpemUgcHJlZmVycmVkU2l6ZSkKK3N0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1l
bnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlv
blNpemUgcHJlZmVycmVkU2l6ZSkKIHsKICAgICBSZWYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1l
bnQoKTsKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0
ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKQEAgLTgzMyw3ICs4MzMsNyBA
QCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdGl0bGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRh
dGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVmZmVyKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAg
ICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAppbmRleCA2
MDQ4NmU3MWFkNTlmZWNjNzE1ZmYwYTA5YjFjMzU1OGI3YjM0MmMyLi5kM2U5ODE5YmQ1MzFmODQ4
NmEzMTdhYjlmOWVkODNhOTg4NWJlMmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNzEsNyArNzEsNyBAQCBib29sIFdl
YkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXpl
IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJ
bWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
dHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQogewogICAg
IEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5k
b2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCA0NWQ5MzNlMTNjYTRkMjI1MWM1ZGVk
ODQ4YWE5ZTk4NzJjNzY3NDg5Li5iY2E2Njk2ZWJlNmYwZWRkZGRlZTc5YjczYzNlZTE0NDk2ZDgy
ZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBCbG9iTG9h
ZGVyOwogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgUmVhZGFibGVTdHJlYW07CiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEV4Y2VwdGlv
bk9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVl
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAppbmRl
eCA1NTllYmNjNDhjNWYwOTZhYzE5YmFlN2Q5ZjcxOGI3MWYyYTM1MzIyLi40MmY0MTgwZGZhODQy
N2UwZTYwZjgxZWI3OWIxOTE4N2NhZmRiYTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
TmV0d29ya1NlbmRRdWV1ZS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBOZXR3b3JrU2VuZFF1
ZXVlOjpwcm9jZXNzTWVzc2FnZXMoKQogICAgICAgICBib29sIHNob3VsZFN0b3BQcm9jZXNzaW5n
ID0gZmFsc2U7CiAgICAgICAgIHN3aXRjaE9uKG1fcXVldWUuZmlyc3QoKSwgW3RoaXNdKGNvbnN0
IENTdHJpbmcmIHV0ZjgpIHsKICAgICAgICAgICAgIG1fd3JpdGVTdHJpbmcodXRmOCk7Ci0gICAg
ICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgeworICAgICAgICB9LCBbdGhp
c10oUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CiAgICAgICAgICAgICBkYXRh
LT5mb3JFYWNoU2VnbWVudChtX3dyaXRlUmF3RGF0YSk7CiAgICAgICAgIH0sIFt0aGlzLCAmc2hv
dWxkU3RvcFByb2Nlc3NpbmddKFVuaXF1ZVJlZjxCbG9iTG9hZGVyPiYgbG9hZGVyKSB7CiAgICAg
ICAgICAgICBhdXRvIGVycm9yQ29kZSA9IGxvYWRlci0+ZXJyb3JDb2RlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCmluZGV4IDU1MWY3MGY5MTY3YjJiZmNiMjQ0
YmIyYjM3MDBiZmJhYWY1NDc5NmMuLmQyM2NmZWJiNDUwOGJjMzAwOTE1YmI5OTZkM2YxNTA2MmNl
MzUwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCkBAIC00
Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYjsKIGNsYXNzIEJs
b2JMb2FkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBOZXR3b3JrU2VuZFF1ZXVlIDogcHVibGljIENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKQEAgLTYzLDcgKzYzLDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NNZXNzYWdlcygpOwogCi0gICAgdXNpbmcg
TWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxDU3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPiwgVW5pcXVl
UmVmPEJsb2JMb2FkZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PENTdHJp
bmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgVW5pcXVlUmVmPEJsb2JMb2FkZXI+PjsK
ICAgICBEZXF1ZTxNZXNzYWdlPiBtX3F1ZXVlOwogCiAgICAgV3JpdGVTdHJpbmcgbV93cml0ZVN0
cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApp
bmRleCA1NmEwNmZjYWYyNzNkMjVkYzRjNzVkY2U1NjlhYWM4ZjFhYTU5NTI3Li5kMmI4NzQxYTA0
NDM0MmM3ZmZkOWU4YTUzM2NjOGExMjBlMjliYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgc3RhdGljIGJv
b2wgbWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VBdHRhY2htZW50KGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZShtaW1lVHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlwZSht
aW1lVHlwZSk7CiB9CiAKLXZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3Np
bmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQordm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2lu
Z0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGF1dG8qIGhvc3RFbGVtZW50ID0gc2hhZG93
SG9zdCgpOwogICAgIGlmICghaXM8SFRNTEltYWdlRWxlbWVudD4oaG9zdEVsZW1lbnQpIHx8ICFi
dWZmZXItPnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5oCmluZGV4IDU3M2VjMmVhZTFjZGMwNjA5ZjI2MWMzODQwMGJiMDJjNDgwZjdiZGQuLjY2MWRl
YzkzNzZkOGE5ZDZkNDcxN2ZkMGI0Y2U3ZjgyZmYwM2Y3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBGaWxl
OwogY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIFJlbmRlckF0dGFjaG1lbnQ7CiBjbGFz
cyBTaGFyZWFibGVCaXRtYXA7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1lbnQgZmluYWwgOiBwdWJs
aWMgSFRNTEVsZW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSFRNTEF0dGFjaG1l
bnRFbGVtZW50KTsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29weU5vbkF0
dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JikgZmluYWw7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUF0dHJpYnV0ZXMoc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4mJiBuZXdGaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBuZXdGaWxlbmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVFbmNs
b3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgZGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVFbmNsb3NpbmdJ
bWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVGh1bWJu
YWlsKGNvbnN0IFJlZlB0cjxJbWFnZT4mIHRodW1ibmFpbCk7CiAKICAgICBJbnNlcnRlZEludG9B
bmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWlu
ZXJOb2RlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApp
bmRleCA1MTcxYjljZGM3ODkzMTcxZTIxZTVmNGJmNTUwMTdlZjk0NGFjNzk1Li4xYTU2YmMwMzU5
Y2NlMWY1MGRjZGRhMDY1MjIyYTAxMDk1YTY5MDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKQEAgLTI5MzgsNyArMjkzOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6Y2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpCiAgICAg
YXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpOwogfQogCi12b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQo
Y29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEp
Cit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRp
b25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIG1lZGlhUGxheWVySW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0YS0+dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDY5
NTY2OTQ5NjMxMGVmOTEwOGI5NTZmZGE0ODIxNDMwMTQ5NzBlY2IuLjZjM2I2OTNiN2IxMGVkYTMw
ZTUxZDRjNjYzMWJlM2ZiNTBjYmY4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCkBAIC03MjAsNyArNzIwLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENETUNsaWVudAog
ICAgIHZvaWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpIGZp
bmFsOwotICAgIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNl
aXZlZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lk
IGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3Ry
aW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDQ0MmQwOTQ2YmUyNTBk
Y2NmNTkyN2JhYTkyNzkzYTcwZWU5MTkzM2UuLjAwZDhmMjM5ZDcxMjdjNjFjYWUxYjU4ZDljNGEz
MDNhOWIzYzkwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAtMTQx
LDcgKzE0MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6dXBkYXRlRHVyaW5nUGFyc2luZygpCiAg
ICAgaWYgKCFtX2ltYWdlRWxlbWVudCkKICAgICAgICAgY3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUo
KTsKIAotICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBsb2FkZXIoKS0+bWFp
blJlc291cmNlRGF0YSgpKQorICAgIGlmIChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSkKICAgICAgICAgbV9pbWFnZUVs
ZW1lbnQtPmNhY2hlZEltYWdlKCktPnVwZGF0ZUJ1ZmZlcigqYnVmZmVyKTsKIAogICAgIGltYWdl
VXBkYXRlZCgpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6ZmluaXNo
ZWRQYXJzaW5nKCkKIHsKICAgICBpZiAoIXBhcnNlcigpLT5pc1N0b3BwZWQoKSAmJiBtX2ltYWdl
RWxlbWVudCkgewogICAgICAgICBDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UgPSAqbV9pbWFnZUVs
ZW1lbnQtPmNhY2hlZEltYWdlKCk7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEg
PSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAKICAg
ICAgICAgLy8gSWYgdGhpcyBpcyBhIG11bHRpcGFydCBpbWFnZSwgbWFrZSBhIGNvcHkgb2YgdGhl
IGN1cnJlbnQgcGFydCwgc2luY2UgdGhlIHJlc291cmNlIGRhdGEKICAgICAgICAgLy8gd2lsbCBi
ZSBvdmVyd3JpdHRlbiBieSB0aGUgbmV4dCBwYXJ0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBhN2NhNzE2MmQ3
OTFlZDdmYmE4Y2M5MWMyMWEyY2YzYWY2ZTY5YTdlLi4xODc5M2ZmMDY2MzM4ZmI2MGEzNGRlYzkw
OWJjMmRkZDI4YmVhZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtODUwLDcgKzg1MCw3IEBAIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVxdWVzdChs
b2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1l
bnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0
d29ya0FnZW50LT5pbnRlcmNlcHRSZXNwb25zZShyZXNwb25zZSwgaWRlbnRpZmllciwgV1RGTW92
ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggOGU2NWM0ZWIxMDIzMzUyMWY0OGM3ZjRiMTIwYWQyYzg5
MDlhMDdiYS4uZDI5NTc4MTBkODM4MmM5MzUxZDVhOTNmMTQ0YWVkMTQ5M2JjYzY1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aApAQCAtOTMsNyArOTMsNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU2hhZG93Um9v
dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBj
bGFzcyBUaW1lckJhc2U7CiBjbGFzcyBXZWJLaXROYW1lZEZsb3c7CiBjbGFzcyBXZWJTb2NrZXRD
aGFubmVsOwpAQCAtMjM2LDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzaG91
bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVz
dChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+
JiYpOwotICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4pPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPik+JiYpOwogCiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29u
c29sZShQYWdlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsK
ICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKQEAg
LTQ0MSw3ICs0NDEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2Vw
dFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBp
bnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXIm
LCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMg
dm9pZCBpbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4m
Jik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3Nh
Z2VUb0NvbnNvbGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwogCkBAIC0xMjg5LDcgKzEyODksNyBAQCBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VM
b2FkZXImIGxvYWRlciwgRgogICAgICAgICBpbnRlcmNlcHRSZXF1ZXN0SW1wbCgqYWdlbnRzLCBs
b2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NF
UlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFt
ZSwgcmVzcG9uc2UpKTsKICAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50
cyhmcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCmluZGV4IDYxZTRiYzNiYTAxOWVlMjVlNWM4
YmMyMjFkZmY2MDc3ZWRkYjg2M2QuLmYwNjQwM2E2MjM0YjQyYjZhZDJhODBiMDE5NGE1OTZkODlm
NmU2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoUmVz
b3VyY2VMb2FkZXImIGxvCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRS
ZXF1ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1l
JiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK3ZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNv
bnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYm
IGhhbmRsZXIpCiB7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNw
b25zZShmcmFtZSwgcmVzcG9uc2UsIGlkZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbldlYktpdC5oCmluZGV4IGY3NjExNGNlOThmNDJhN2ZmOTA2YTQ4ZDA0MjBiOTYzMDVk
MzY5MTQuLjA3YjQyMWI1OWMxNTU1ZTFhMjkxZTE4ZWJiMjYyMjEyMmYxNjU4YjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJL
aXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0LmgKQEAgLTM2LDIwICszNiwyMCBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIFJlc291
cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIFdFQkNPUkVfRVhQT1JUIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdCB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFt
ZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVy
Y2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAg
IHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNl
cHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50
ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogcHJp
dmF0ZToKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoY29u
c3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91
bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNv
dXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwot
ICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29u
c3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIH07CiAKIGlubGluZSBib29sIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBG
cmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTc2LDcgKzc2
LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNl
cHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2EKICAgICBpbnRlcmNlcHRSZXF1ZXN0SW50ZXJu
YWwobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSogZnJh
bWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCitpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZy
YW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxk
SW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAgaW50ZXJjZXB0UmVzcG9u
c2VJbnRlcm5hbCgqZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmYzMmY2
NjBiOTE3M2JhZThkNWNkOWExMzBlYWU1OGI5N2Q1ZWNlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtNDcsNiArNDcsNyBA
QCBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplID0g
NTAgKiAxMDAwICogMTAwMDsgLy8gNTBNQgogTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcm
IGxvYWRlcklkKQogICAgIDogbV9yZXF1ZXN0SWQocmVxdWVzdElkKQogICAgICwgbV9sb2FkZXJJ
ZChsb2FkZXJJZCkKKyAgICAsIG1fZGF0YUJ1ZmZlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTY0LDcgKzY1LDcgQEAgdW5zaWduZWQgTmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCgpCiAgICAgaWYgKGhhc0Rh
dGEoKSkgewogICAgICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAgICAgICAgIHJlc3VsdCA9
IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOwor
ICAgICAgICBtX2RhdGFCdWZmZXItPnJlc2V0KCk7CiAgICAgfQogCiAgICAgaWYgKGhhc0NvbnRl
bnQoKSkgewpAQCAtODEsMzYgKzgyLDM3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgpCiAgICAgcmV0dXJuIHJlbW92ZUNvbnRlbnQo
KTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRh
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fZGF0YUJ1ZmZlci0+aXNOdWxsKCk7Cit9CisKIHNp
emVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAw
OworICAgIHJldHVybiBtX2RhdGFCdWZmZXItPnNpemUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKLSAgICBp
ZiAoIW1fZGF0YUJ1ZmZlcikKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBtX2RhdGFCdWZmZXIt
PmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGFCdWZmZXItPmFwcGVuZChkYXRh
LCBkYXRhTGVuZ3RoKTsKIH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50
KCkpOwogCi0gICAgc2l6ZV90IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZlci0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpOwor
ICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9kZWNv
ZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRl
bnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRh
TGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChi
dWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNl
NjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJp
bmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQg
PSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAg
fQogCi0gICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKLQogICAgIHJldHVybiBtX2NvbnRlbnQu
c2l6ZUluQnl0ZXMoKSAtIGRhdGFMZW5ndGg7CiB9CiAKQEAgLTI2Nyw3ICsyNjksNyBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgQ2FjaGVkUmVzbwogICAgIHJlc291cmNlRGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2Uo
Y2FjaGVkUmVzb3VyY2UpOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRSZXNv
dXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKK3ZvaWQgTmV0
d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNl
RGF0YSA9IHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogICAgIGlmICghcmVz
b3VyY2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaAppbmRleCBlZmEwMDA1M2FlMTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3Li5l
ZTM5NDU3Zjc2NzJlYWNhYWM5MGE1YjZiYzg4MTEwOGNiZGE4YTg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgog
I2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCkBAIC00MCw3ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhY2hlZFJl
c291cmNlOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29k
ZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwor
Y2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtODgsOCArOTAsOCBAQCBwdWJsaWM6
CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZWNvZGVyLmNvcHlSZWYoKTsgfQogICAgICAgICB2b2lkIHNldERlY29kZXIoUmVm
UHRyPFRleHRSZXNvdXJjZURlY29kZXI+JiYgZGVjb2RlcikgeyBtX2RlY29kZXIgPSBXVEZNb3Zl
KGRlY29kZXIpOyB9CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIuY29weVJlZigpOyB9Ci0gICAgICAgIHZvaWQgc2V0QnVmZmVy
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fYnVmZmVyID0gV1RGTW92ZShidWZm
ZXIpOyB9CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlci5jb3B5UmVmKCk7IH0KKyAgICAgICAgdm9pZCBzZXRCdWZm
ZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fYnVmZmVyID0g
V1RGTW92ZShidWZmZXIpOyB9CiAKICAgICAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxDZXJ0aWZp
Y2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRl
SW5mbzsgfQogICAgICAgICB2b2lkIHNldENlcnRpZmljYXRlSW5mbyhjb25zdCBzdGQ6Om9wdGlv
bmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmljYXRlSW5mbykgeyBtX2NlcnRpZmljYXRlSW5m
byA9IGNlcnRpZmljYXRlSW5mbzsgfQpAQCAtMTAzLDEwICsxMDUsMTAgQEAgcHVibGljOgogICAg
ICAgICBXYWxsVGltZSByZXNwb25zZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9u
c2VUaW1lc3RhbXA7IH0KICAgICAgICAgdm9pZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGlt
ZSB0aW1lKSB7IG1fcmVzcG9uc2VUaW1lc3RhbXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBo
YXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAg
Ym9vbCBoYXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1
ZmZlcjsgfQorICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRh
dGFMZW5ndGgoKSBjb25zdDsKICAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRv
Q29udGVudCgpOwpAQCAtMTE5LDggKzEyMSw4IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1f
dGV4dEVuY29kaW5nTmFtZTsKICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJl
ZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fZGF0YUJ1ZmZlcjsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CisgICAgICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZm
ZXI7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAg
ICAgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJbmZvOwog
ICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9jYWNoZWRSZXNvdXJjZSB7IG51bGxwdHIgfTsKICAg
ICAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgbV90eXBlIHsgSW5zcGVjdG9y
UGFnZUFnZW50OjpPdGhlclJlc291cmNlIH07CkBAIC0xNDQsNyArMTQ2LDcgQEAgcHVibGljOgog
ICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAg
ICB2b2lkIG1heWJlRGVjb2RlRGF0YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7
CiAgICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2Fj
aGVkUmVzb3VyY2UqKTsKLSAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUpOworICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwogICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0
YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRh
Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZW1vdmVDYWNo
ZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4
NGEyODg0MmZiYzU2Mjg5Mzc2MWQ3MWU0Yzc0Mjc0ZWJiMTguLjE4OWYyNmIwOThiNzM2MWRjZjhl
OWQ2NGUzNTllNzVmZDljMDk3MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTExNDAsNyArMTE0
MCw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291
cmNlTG9hZGVyJiBsb2FkZXIsIEZ1bmN0aW9uPHZvCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PnJlcXVlc3RJbnRlcmNlcHRlZChyZXF1ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1
ZXN0KGxvYWRlci5yZXF1ZXN0KCkpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIp
Cit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1f
ZW5hYmxlZCk7CiAgICAgQVNTRVJUKG1faW50ZXJjZXB0aW9uRW5hYmxlZCk7CkBAIC0xMjQzLDcg
KzEyNDMsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShjb25zdAogICAgICAgICBvdmVycmlkZVJlc3Bv
bnNlLnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIG92ZXJy
aWRlUmVzcG9uc2UubWltZVR5cGUoKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gb3ZlcnJpZGVEYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdmVy
cmlkZURhdGE7CiAgICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIg
PSBiYXNlNjREZWNvZGUoY29udGVudCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTI3MSw3
ICsxMjcxLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29y
a0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnMKICAgICBpZiAobG9hZGVyLT5yZWFj
aGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJs
ZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zKTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0
byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVudCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpA
QCAtMTQwNywxMiArMTQwNywxMiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVk
UmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3RyaQogICAgICAgICBp
ZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1l
VHlwZSgpKSkgewogICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNw
b25zZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7CiAgICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9
IGZhbHNlOwotICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVj
b2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAg
ICAgICAgKmJhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5j
b2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJl
c3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5oCmluZGV4IDhmNmZiY2MyOTNhZWJmOGI5ZDVjOTQ1ZDI4MjlhMTUyN2I3NGJjN2Yu
LjZiY2Q4N2RkY2Q4YjA0NDEzMDhkMWQwMWVjYTZiMGU2ZGExNDEzZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
aApAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICBib29sIHdpbGxJbnRlcmNlcHQoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4pPiYmKTsKKyAgICB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYp
OwogICAgIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZv
aWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwogCiAgICAgdm9pZCBzZWFyY2hPdGhlclJl
cXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mLCBSZWY8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYpOwpAQCAtMTg1
LDcgKzE4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBlbmRp
bmdJbnRlcmNlcHRSZXNwb25zZSk7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIHB1YmxpYzoKLSAgICAgICAgUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIG9yaWdpbmFsUmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICAgICAgUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIG9yaWdpbmFsUmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiAgICAgICAgICAgICA6IG1fb3JpZ2luYWxSZXNwb25zZShvcmlnaW5h
bFJlc3BvbnNlKQogICAgICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQogICAgICAgICB7IH0KQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgcmVzcG9uZChtX29yaWdpbmFsUmVzcG9uc2UsIG51bGxwdHIpOwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCByZXNwb25kKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhKQorICAgICAgICB2b2lkIHJlc3BvbmQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBkYXRhKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIW1fcmVzcG9uZGVk
KTsKICAgICAgICAgICAgIGlmIChtX3Jlc3BvbmRlZCkKQEAgLTIxNSw3ICsyMTUsNyBAQCBwcml2
YXRlOgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBtX29yaWdpbmFs
UmVzcG9uc2U7Ci0gICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAg
ICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKICAgICAg
ICAgYm9vbCBtX3Jlc3BvbmRlZCB7IGZhbHNlIH07CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4
IDNkYWZlNjQzN2RmMTIxMDQwNWZlZmJmMzc1Nzg1ZmVjZDVlYWM0NzIuLjFiNjQ2YWEyMTczYWI1
NGEzZjFhYmRjYjUwMjA0YWRlOThjMDczYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEwMCwxNSArMTAw
LDE1IEBAIHN0YXRpYyBib29sIGRlY29kZUJ1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHVu
c2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50
OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2Rl
LCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBm
cmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghYnVmZmVyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0
YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQo
KS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gSW5z
cGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRo
QmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCi1ib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hh
cmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVz
dWx0KQorYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAg
cmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5j
b2RlLCByZXN1bHQpOworICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgp
IDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAog
Ym9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRo
QmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIElu
c3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KFByb3RvY29sOjpFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIEZyYQogICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBpZiAoZXF1
YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwsIGxvYWRlci0+dXJsKCkpKSB7CiAgICAg
ICAgICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCBiNTFhZGRiMWJkOGYyY2Nl
Njk1NjA3OTljZDFkOTUyZDJkZTQyODM4Li4zZDVlNTY2ZGJlMGM1ZWMxMWQ5ZThkZjY3ZmNmMGE3
MDk4OGEyZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgSW5zcGVjdG9yQ2xp
ZW50OwogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJP
YmplY3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdl
bnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JQYWdlQWdlbnQpOwpAQCAtNzUsNyAr
NzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIE90aGVyUmVzb3VyY2UsCiAgICAgfTsKIAotICAgIHN0
YXRpYyBib29sIHNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmlu
ZyogcmVzdWx0KTsKKyAgICBzdGF0aWMgYm9vbCBzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwogICAgIHN0YXRpYyBWZWN0
b3I8Q2FjaGVkUmVzb3VyY2UqPiBjYWNoZWRSZXNvdXJjZXNGb3JGcmFtZShGcmFtZSopOwogICAg
IHN0YXRpYyB2b2lkIHJlc291cmNlQ29udGVudChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0
cmluZyYsIEZyYW1lKiwgY29uc3QgVVJMJiwgU3RyaW5nKiByZXN1bHQsIGJvb2wqIGJhc2U2NEVu
Y29kZWQpOwogICAgIHN0YXRpYyBTdHJpbmcgc291cmNlTWFwVVJMRm9yUmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCBi
NGU2YTNhNTNiNGMwYzBkYTFjMzE3MmRkNDJjYWU2YThjZDIxZjdhLi42YWU1MjY1OTdjZDI4NjMx
YmU3OTUwZmMzMzUzNmY4ZjM0N2Q3YWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVy
UmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NFUlQobV9zdGF0
ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQ
b2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICBpZiAoYXV0
byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICBt
X2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+
ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGllbnQuZGF0YVJl
Y2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBV
UkwmIGJsb2NrZWRQYWdlVVJMKCkKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIENvbnRlbnRGaWx0
ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCiB7CiAgICAgQVNTRVJUKHdpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9y
KSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEgeyBtX2Jsb2Nr
aW5nQ29udGVudEZpbHRlci0+cmVwbGFjZW1lbnREYXRhKCkgfTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhIHsgbV9ibG9ja2luZ0NvbnRlbnRGaWx0
ZXItPnJlcGxhY2VtZW50RGF0YSgpIH07CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7
IFVSTCgpLCAidGV4dC9odG1sIl9zLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHJlcGxhY2VtZW50
RGF0YS0+c2l6ZSgpKSwgIlVURi04Il9zIH07CiAgICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0
ZURhdGEgeyBXVEZNb3ZlKHJlcGxhY2VtZW50RGF0YSksIGVycm9yLmZhaWxpbmdVUkwoKSwgcmVz
cG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OkhpZGRlbiB9
OwogICAgIFNldEZvclNjb3BlPGJvb2w+IGxvYWRpbmdCbG9ja2VkUGFnZSB7IG1faXNMb2FkaW5n
QmxvY2tlZFBhZ2UsIHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCmluZGV4IGMzZDg0NTBmNzFjMmMzNzNkMmFmMWNjY2ZiMjE1YWQ4MWJmODBkMGIuLjNiOTBl
ZjRjNTgyN2U2YzBiNDliMzQ2NTZiM2NkNzFhOGVkYTk2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIERvY3VtZW50TG9hZGVy
Ojp+RG9jdW1lbnRMb2FkZXIoKQogI2VuZGlmCiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IERv
Y3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSgpIGNvbnN0CiB7
CiAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbV9z
dWJzdGl0dXRlRGF0YS5jb250ZW50KCktPmNvcHkoKTsKQEAgLTE2MDgsMTEgKzE2MDgsMTEgQEAg
Ym9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBhZGRBbGxBcmNo
aXZlUmVzb3VyY2VzKCptX2FyY2hpdmUpOwogICAgIEFTU0VSVChtX2FyY2hpdmUtPm1haW5SZXNv
dXJjZSgpKTsKICAgICBhdXRvJiBtYWluUmVzb3VyY2UgPSAqbV9hcmNoaXZlLT5tYWluUmVzb3Vy
Y2UoKTsKLSAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gJm1haW5SZXNvdXJjZS5kYXRhKCk7Cisg
ICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9IG1haW5SZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3Vv
dXMoKTsKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7
CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YShtYWlu
UmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOworICAg
IGNvbW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0
YSgpLnNpemUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTE2NzEsNyArMTY3
MSw3IEBAIEFyY2hpdmVSZXNvdXJjZSogRG9jdW1lbnRMb2FkZXI6OmFyY2hpdmVSZXNvdXJjZUZv
clVSTChjb25zdCBVUkwmIHVybCkgY29uc3QKIAogUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9j
dW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZSgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gZGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAg
ICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8mIHJlc3BvbnNl
ID0gdGhpcy0+cmVzcG9uc2UoKTsKQEAgLTIyNTUsOCArMjI1NSw4IEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQoKQogCiAgICAgZnJhbWVM
b2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7
Ci0gICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXpl
KCkpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBt
YWluUmVzb3VyY2VEYXRhKCk7CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3Vt
ZW50TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKQEAgLTIyOTIsNyArMjI5Miw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQogICAgIG1fZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLmdldExvYWREZWNpc2lvbkZvckljb25zKGljb25EZWNpc2lvbnMpOwogfQogCi12
b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNp
b24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJl
ZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGlk
R2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBpY29uID0gbV9pY29uc1BlbmRpbmdMb2Fk
RGVjaXNpb24udGFrZShsb2FkSWRlbnRpZmllcik7CiAKQEAgLTIzMTMsNyArMjMxMyw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lv
biwgdWludDY0X3QgbG9hZElkZW50CiAgICAgcmF3SWNvbkxvYWRlci0+c3RhcnRMb2FkaW5nKCk7
CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRl
ciYgbG9hZGVyLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmZp
bmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYgbG9hZGVyLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBidWZmZXIpCiB7CiAgICAgLy8gSWYgdGhlIERvY3VtZW50TG9hZGVyIGhhcyBkZXRhY2hl
ZCBmcm9tIGl0cyBmcmFtZSwgYWxsIGljb24gbG9hZHMgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVu
IGNhbmNlbGxlZC4KICAgICBBU1NFUlQobV9mcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCmluZGV4IGZiZjU0NWM0NjBlNGU0ODlkODdiMjVjMGU4NWVjY2NhNGNiZjNj
ODcuLjMzOTg3M2Q1ZDNmYjliYjMwMDQ5OGNkNmYzN2NiZjY1Yjc4YWY1YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENh
Y2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZpbHRlcjsKK2NsYXNzIFNoYXJlZEJ1
ZmZlcjsKIHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFz
cyBGcmFtZTsKQEAgLTgzLDcgKzg0LDcgQEAgY2xhc3MgSWNvbkxvYWRlcjsKIGNsYXNzIFBhZ2U7
CiBjbGFzcyBQcmV2aWV3Q29udmVydGVyOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU1dDbGll
bnRDb25uZWN0aW9uOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTdWJzdGl0dXRl
UmVzb3VyY2U7CkBAIC0xNzEsNyArMTcyLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
U3VicmVzb3VyY2VMb2FkZXIqIG1haW5SZXNvdXJjZUxvYWRlcigpIGNvbnN0OwotICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJl
c291cmNlRGF0YSgpIGNvbnN0OwogICAgIAogICAgIERvY3VtZW50V3JpdGVyJiB3cml0ZXIoKSBj
b25zdCB7IHJldHVybiBtX3dyaXRlcjsgfQogCkBAIC0zOTIsOCArMzkzLDggQEAgcHVibGljOgog
I2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0SWNvbkxvYWRpbmcoKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3Qg
bG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYp
OwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgU2hhcmVkQnVmZmVy
Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJv
b2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRp
bmdJY29uKEljb25Mb2FkZXImLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICAgICBjb25z
dCBWZWN0b3I8TGlua0ljb24+JiBsaW5rSWNvbnMoKSBjb25zdCB7IHJldHVybiBtX2xpbmtJY29u
czsgfQogCkBAIC02MjEsNyArNjIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fd2FpdGluZ0Zv
ck5hdmlnYXRpb25Qb2xpY3kgeyBmYWxzZSB9OwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgTGlu
a0ljb24+IG1faWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uOwotICAgIEhhc2hNYXA8c3RkOjp1bmlx
dWVfcHRyPEljb25Mb2FkZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciop
Pj4gbV9pY29uTG9hZGVyczsKKyAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVy
PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+PiBtX2lj
b25Mb2FkZXJzOwogICAgIFZlY3RvcjxMaW5rSWNvbj4gbV9saW5rSWNvbnM7CiAKICNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmlu
ZGV4IGUxM2UyODZlMTRmNGZlOGZkN2RmOTBhMGUxNTFmMDkzNDE4ZGRkYjEuLjA4YTBhZTE5YTM3
OTg0NmYxNTc1NjRjMmQwYzgzMmIyNzQ4MzYwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNsYXNzIENh
Y2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50OwogY2xh
c3MgRG9jdW1lbnRMb2FkZXI7CkBAIC03Niw3ICs3Nyw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3Mg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3Rp
dHV0ZURhdGE7CiAKIGVudW0gY2xhc3MgQ2FjaGVQb2xpY3kgOiB1aW50OF90OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA0ZmQ2MzdhOTAxNGE1ZDQxYTIy
NmVlNDU5MTdiNmIzZTlhNzkwZWJiLi5lZTlmM2QwYzk4NGQ0NTVjYmI5MWI0NjBjMWJjMTI4OThk
MTIzNjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAt
OTgsNyArOTgsNyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJz
dGl0dXRlRGF0YTsKIGNsYXNzIFdpZGdldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3Ry
YXRlZ3kuaAppbmRleCBhZWY2NjhiZDYzZWQ1ZmNkNDVlNjFlOWQxZjEwN2NmYjZhZWYyNjRiLi4y
OWQyZTNmNDYxNDBhYWE1MTE2MGU2YTI4NTYyZjM3MGUzNzFlYjIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBSZXNvdXJjZUxv
YWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBj
bGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIAogc3RydWN0IEZldGNo
T3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIuY3BwCmluZGV4IDYzMzc1NTk2MzIwMDE0NjM4Mjg5ZTI4MjYwNGM1NWIwYWY0
NDUzMTMuLjYwNDNhYzliZTI2N2VhNGZiYzcxZTExMThiOTA3OTE1NWUzOTE1MDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNw
cApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGUKICAgICBkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5n
dGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3Zv
aWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBk
YXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQog
ewogICAgIFJlZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhp
cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyLmgKaW5kZXggNDhiYjIxNTNjOTNmMmRjNzU0ZTIwNzMyMjUyYzA1MDljZjcwNGE0MS4u
YjUxNzRlZGM5NGI5OTIzOTAyMDVmMGZhZDQ1MmVhNWFjMzg3ODkzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKQEAgLTYzLDcg
KzYzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApAQCAtNzQsNyArNzQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBp
bnQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKIAogICAgIHZvaWQgbm90aWZ5
RG9uZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlw
dG9ncmFwaGljRGlnZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3QuY3BwCmluZGV4IGM2Mjc3Njg1OGE2ZGM1YWZmZDM2ZGM5ZTc4NWM4YmQy
NDcyYmI3NGQuLmQ5NGI3MDAwNzQxY2Q5MTJiOTE3M2UyYjM3NDZkNGRhOGIzNjhhNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdl
c3QuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNy
eXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWcKICAgICBy
ZXR1cm4geyBhbGdvcml0aG0sIGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKSB9OwogfQogCi1S
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1
ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0sIGNv
bnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNy
eXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZmZXIoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBi
dWZmZXIpCiB7CiAgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3Jl
YXRlKHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGFsZ29yaXRobSkpOwogICAgIGlmIChidWZmZXIp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3QuaAppbmRleCBhZWEzZGM1N2M4NzgzMTMwMTNhNWIxNmM5MzliNzc0ZWQ0ODQzMjRjLi44
M2I4NjEzY2ZkYTIzMjlhZTMwYmJmNmFiYzE0Yjk5ZDQ0MjM3YjAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCkBAIC0zNCw3
ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFJlc291cmNlOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3Ry
dWN0IFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCB7CiAgICAgZW51bSBjbGFzcyBBbGdvcml0
aG0gewpAQCAtNzUsNyArNzUsNyBAQCBzdGQ6Om9wdGlvbmFsPEVuY29kZWRSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3Q+IHBhcnNlRW5jb2RlZENyeXB0b2dyYXBoaWNEaWdlcwogCiBzdGQ6Om9w
dGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gZGVjb2RlRW5jb2RlZFJlc291cmNl
Q3J5cHRvZ3JhcGhpY0RpZ2VzdChjb25zdCBFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0Jik7CiAKLVJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0
Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBj
b25zdCBTaGFyZWRCdWZmZXIqKTsKK1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9n
cmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6
QWxnb3JpdGhtLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiBSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvckJ5dGVzKFJlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBjb25zdCB2b2lkKiBieXRlcywgc2l6ZV90IGxlbmd0
aCk7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGFh
ODViYjRkM2NhODcxNDViYjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLmRmMTM5NTg4ZThkNTI1MmIz
ZWVjNjE5M2FlNjFhYTI0Nzg2YjIxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcApAQCAtNzYsNiArNzYsNyBAQCBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9J
REVOVElGSUVSKFJlc291cmNlTG9hZGVyKTsKIFJlc291cmNlTG9hZGVyOjpSZXNvdXJjZUxvYWRl
cihGcmFtZSYgZnJhbWUsIFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zKQogICAgIDogbV9m
cmFtZSB7ICZmcmFtZSB9CiAgICAgLCBtX2RvY3VtZW50TG9hZGVyIHsgZnJhbWUubG9hZGVyKCku
YWN0aXZlRG9jdW1lbnRMb2FkZXIoKSB9CisgICAgLCBtX3Jlc291cmNlRGF0YSB7IG1ha2VVbmlx
dWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX2RlZmVyc0xvYWRpbmcgeyBv
cHRpb25zLmRlZmVyc0xvYWRpbmdQb2xpY3kgPT0gRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dE
ZWZlcnNMb2FkaW5nICYmIGZyYW1lLnBhZ2UoKS0+ZGVmZXJzTG9hZGluZygpIH0KICAgICAsIG1f
b3B0aW9ucyB7IG9wdGlvbnMgfQogewpAQCAtMTE4LDcgKzExOSw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMoKQogCiAgICAgbV9pZGVudGlmaWVyID0geyB9OwogCi0g
ICAgbV9yZXNvdXJjZURhdGEgPSBudWxscHRyOworICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgp
OwogICAgIG1fZGVmZXJyZWRSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiB9CiAKQEAgLTE4
OSw3ICsxOTAsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjppbml0KFJlc291cmNlUmVxdWVzdCYm
IGNsaWVudFJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaQogICAgIH0pOwogfQogCi12b2lk
IFJlc291cmNlTG9hZGVyOjpkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUmVz
b3VyY2VMb2FkZXI6OmRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsK
ICAgICBkaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpXSgpIG11dGFibGUgewogICAg
ICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKQEAgLTMxOCw3ICszMTksNyBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KERhdGFCdWZmZXJpbmdQb2xp
Y3kgZGF0YUJ1ZmZlcmluZ1BvbAogCiAgICAgLy8gUmVzZXQgYW55IGFscmVhZHkgYnVmZmVyZWQg
ZGF0YQogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkRvTm90QnVmZmVyRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBudWxscHRyOworICAg
ICAgICBtX3Jlc291cmNlRGF0YS0+cmVzZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6
d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKQEAgLTMyOSwyOSArMzMwLDI5IEBAIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSgpCiAgICAg
ICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0
YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmVkQnVm
ZmVyKiBidWZmZXIsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291
cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIERhdGFQYXlsb2FkVHlwZSBk
YXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgaWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5
ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKCFtX3Jlc291cmNlRGF0YSB8fCBkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBh
eWxvYWRXaG9sZVJlc291cmNlKSB7Ci0gICAgICAgIGlmIChidWZmZXIpCi0gICAgICAgICAgICBt
X3Jlc291cmNlRGF0YSA9IGJ1ZmZlcjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9yZXNv
dXJjZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIAorICAgIGlmIChkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBheWxv
YWRXaG9sZVJlc291cmNlKQorICAgICAgICBtX3Jlc291cmNlRGF0YS0+cmVzZXQoKTsKKwogICAg
IGlmIChidWZmZXIpCiAgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoKmJ1ZmZlcik7CiAg
ICAgZWxzZQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9
CiAKK2NvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJj
ZURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS0+Z2V0KCkuZ2V0KCk7
Cit9CisKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVzb3VyY2VEYXRhKCkKIHsKLSAgICBp
ZiAobV9yZXNvdXJjZURhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhLT5jbGVhcigpOworICAg
IGlmICghbV9yZXNvdXJjZURhdGEtPmlzTnVsbCgpKQorICAgICAgICBtX3Jlc291cmNlRGF0YS0+
ZW1wdHkoKTsKIH0KIAogYm9vbCBSZXNvdXJjZUxvYWRlcjo6aXNTdWJyZXNvdXJjZUxvYWRlcigp
IGNvbnN0CkBAIC01NTEsMTQgKzU1MiwxNCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbAogICAg
IGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0
YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRh
dGFQYXlsb2FkVHlwZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAs
IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9
CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxv
YWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5
IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEgU2hhcmVkQnVmZmVyLgorICAgIC8vIFRoaXMgbWV0aG9k
IHNob3VsZCBvbmx5IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ci4KICAgICBBU1NFUlQoIWJ1ZmZlciB8fCAoIWRhdGEgJiYgIWxlbmd0aCkpOwogCiAgICAgLy8g
UHJvdGVjdCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFs
IHByb2Nlc3NpbmcgY2FuIGRvCkBAIC01NzEsNyArNTcyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgKICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3Jr
aW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAgLy8gQ291bGQg
YmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZpbGUuCiAgICAgaWYgKG1fb3B0aW9ucy5z
ZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3MgJiYg
bV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0
YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+
c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7Cisg
ICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVm
ZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0
aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpAQCAtNzM1LDcgKzczNiw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduCiAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3Ro
LCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKLXZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGRpZFJlY2Vp
dmVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRC
eXRlcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRmZDJi
ZjBiYmIzYjFiZDIxNTQ1ZGI1MmMyZTFjYTY0ZWU0MmI5MTcuLjU0YjFiODY2ZGY4OTZhODRiNGNh
Mjk3ZWU0NzZkNmQwYjY2MWZkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtNTUsNiArNTYsOCBAQCBjbGFzcyBGcmFtZTsK
IGNsYXNzIEZyYW1lTG9hZGVyOwogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlcjsKIGNsYXNzIE5l
dHdvcmtMb2FkTWV0cmljczsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBT
aGFyZWRCdWZmZXJCdWlsZGVyOwogCiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJ
RklFUihSZXNvdXJjZUxvYWRlcik7CiBjbGFzcyBSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4sIHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlTG9h
ZGVyPiwgcHJvdGVjdGVkIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKQEAgLTY2LDcgKzY5LDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluaXQoUmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCi0gICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VB
bmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsK
KyAgICB2b2lkIGRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0TG9hZGluZygpCkBAIC05OCw3ICsxMDEsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsKICAgICBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7
IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBy
ZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAg
CiAgICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKQEAgLTEwNyw3
ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVk
IGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNl
bnQpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFu
ZGxlcik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1
bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIApAQCAtMTY2LDcgKzE2
OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgd2FzQ2FuY2VsbGVkKCkgY29uc3QgeyByZXR1
cm4gbV9jYW5jZWxsYXRpb25TdGF0dXMgPj0gQ2FuY2VsbGVkOyB9CiAKLSAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAgICAKICAgICB2b2lkIHNldFJlZmVycmVyUG9s
aWN5KFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KSB7IG1fb3B0aW9ucy5yZWZlcnJlclBv
bGljeSA9IHJlZmVycmVyUG9saWN5OyB9CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xp
Y3koKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3k7IH0KQEAgLTE5MSw3
ICsxOTQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNv
dXJjZUVycm9yJikgPSAwOwogCi0gICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCosIHVuc2lnbmVkLCBTaGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQg
YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciosIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdm9pZCBsb2FkRGF0YVVSTCgpOwogICAg
IHZvaWQgZmluaXNoTmV0d29ya0xvYWQoKTsKIApAQCAtMjAyLDcgKzIwNSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291
cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1
ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0
aCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFu
ZGxlKikgb3ZlcnJpZGU7CkBAIC0yMjcsNyArMjMwLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291
cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1
ZXN0OyAvLyBCZWZvcmUgcmVkaXJlY3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcmVz
b3VyY2VEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3Jlc291cmNl
RGF0YTsKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNl
ZmJkZjlkYTE3ODk5N2VkY2I5ZjM1NDRmNDg4NGI2MGE2ZWZlLi4zN2QwYmI4MjFhYmQ4NmE5YjU2
MDZlMTI3ZWZjOTQxMmE1MWJiMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxv
bgogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNv
ZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQor
dm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBh
eWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBp
ZiAoYXV0byBwcmV2aWV3TG9hZGVyID0gbV9wcmV2aWV3TG9hZGVyLmdldCgpKSB7CkBAIC01NDIs
NyArNTQyLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGUKICAgICBkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRh
dGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgQVNTRVJUKG1fcmVz
b3VyY2UpOwogCkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAg
ICAgICBpZiAoYXV0byogcmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAg
ICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVy
LT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAg
ICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApp
bmRleCAzNzIzYjZiOWFiOWZkZGFhYTU1NzRiZmIwZTZmMzhjZWQ3YWVmYjc1Li44MzJjOWYwZTcz
ZDM4NDY0YTc5NWY0MDM4NjBmNzljMzRlNzNiYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBs
b25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgRXhwZWN0ZWQ8
dm9pZCwgU3RyaW5nPiBjaGVja1Jlc3BvbnNlQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVk
aXJlY3Rpb25Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBw
cmV2aW91c1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZVJlcXVlc3Qm
IG5ld1JlcXVlc3QpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqLCBpbnQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKIAogICAgIHZv
aWQgbm90aWZ5RG9uZShMb2FkQ29tcGxldGlvblR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJzdGl0dXRlRGF0YS5oCmluZGV4IGY2NjI5MmUzMWNiZWI0MjY0MzBhODMyYWRlZjQyOTkxY2I1
NzQzNmUuLmE4YTQ5YjQ3ZjkyNzM0Mjc0YmE0Y2VhYmMxNzA3ZmVmYTdiNjY0MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgU3Vic3RpdHV0ZURh
dGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBjb250ZW50LCBjb25zdCBVUkwmIGZhaWxpbmdVUkws
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTZXNzaW9uSGlzdG9yeVZpc2liaWxp
dHkgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSkKKyAgICAgICAgU3Vic3RpdHV0ZURhdGEo
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY29udGVudCwgY29uc3QgVVJMJiBmYWls
aW5nVVJMLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgU2Vzc2lvbkhpc3RvcnlW
aXNpYmlsaXR5IHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkpCiAgICAgICAgICAgICA6IG1f
Y29udGVudChXVEZNb3ZlKGNvbnRlbnQpKQogICAgICAgICAgICAgLCBtX2ZhaWxpbmdVUkwoZmFp
bGluZ1VSTCkKICAgICAgICAgICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKQEAgLTU0LDE0ICs1
NCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGVudCAhPSBudWxscHRyOyB9CiAgICAgICAgIGJvb2wgc2hvdWxkUmV2
ZWFsVG9TZXNzaW9uSGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUmV2ZWFsVG9TZXNz
aW9uSGlzdG9yeSA9PSBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OlZpc2libGU7IH0KIAotICAg
ICAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRl
bnQuZ2V0KCk7IH0KKyAgICAgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogY29udGVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudC5nZXQoKTsgfQogICAgICAgICBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS5taW1lVHlwZSgpOyB9CiAg
ICAgICAgIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZXNw
b25zZS50ZXh0RW5jb2RpbmdOYW1lKCk7IH0KICAgICAgICAgY29uc3QgVVJMJiBmYWlsaW5nVVJM
KCkgY29uc3QgeyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9CiAgICAgICAgIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAgICAg
ICAKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7
CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7CiAgICAg
ICAgIFVSTCBtX2ZhaWxpbmdVUkw7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25z
ZTsKICAgICAgICAgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IG1fc2hvdWxkUmV2ZWFsVG9TZXNz
aW9uSGlzdG9yeSB7IFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVuIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXggNTk2NjRiNTg1NGY4NWIw
MmNkZjM0OTAyMGEwZWZmMTNlYjc4ODg3OS4uY2YyZGUwYzYyZDk1ZjMzMjViNDJiNDZlMjQwMzc3
NDQxMDc0MmEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVS
ZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2Uu
aApAQCAtMzcsMTIgKzM3LDE0IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29u
c3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICBTaGFyZWRCdWZmZXImIGRhdGEo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihtX2Rh
dGEpOyB9CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19yZWZlcmVuY2VfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihSZWYgeyAqbV9k
YXRhLmdldCgpIH0pOyB9CisgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7IH0KKyAgICB2b2lkIGNsZWFy
KCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3Vy
Y2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3Bv
bnNlLCBtX2RhdGEtPmNvcHkoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJj
ZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9u
c2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBTdWJzdGl0dXRlUmVzb3Vy
Y2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSkKKyAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJl
c3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiAg
ICAgICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQogICAgICAgICAsIG1fcmVzcG9uc2UoV1RGTW92
ZShyZXNwb25zZSkpCiAgICAgICAgICwgbV9kYXRhKFdURk1vdmUoZGF0YSkpCkBAIC01Miw3ICs1
NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgVVJMIG1fdXJsOwogICAgIFJlc291cmNl
UmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwCmluZGV4IDg5ZjNiMGYxZGMzOWQ0MGE1NjM4NzhhZTU1Zjc2YzY3MGE3
MTUwOTEuLjAzNmVmZDIwZTQ5NjMwMGNmOGM5ZTdlNzkwMzE3ZTAxZGU1YmFmMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAg
YXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RV
UkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0
UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUo
KSk7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1f
bWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBt
X21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fbWFu
aWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CiAgICAgaWYgKCFtYW5pZmVzdCkgewogICAg
ICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklG
RVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZh
aWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2Fj
aGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hF
IE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA2MDMyODE4ODgzNzVmNDRhNjI0YjNl
M2IzYWFmZTA2YTM2ODkyZWU2Li41MTk3OGY0MTIzODc0ZGM1NjYwZWZmNDcwNjU5NzA3ZDRlNWQ4
NWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1NSwxMCArMjU1LDggQEAgVVJMIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKIAogc3RhdGljIGlu
bGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25D
YWNoZVJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJs
eSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUg
dGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBi
ZSBtb2RpZmllZC4KICAgICBpZiAocmVzb3VyY2UucGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIHJlc291cmNlLmRhdGEoKS5jb3B5KCk7CisgICAgICAgIHJldHVybiByZXNvdXJjZS5k
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKIH0KIApAQCAtMjkwLDkgKzI4OCw3
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25v
dXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZSogcmVzb3VyY2U7CiAgICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tS
ZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVz
b3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9hYmx5
IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAgLy8g
UmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2ls
bCBub3QgYmUgbW9kaWZpZWQuCi0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5j
b3B5KCk7CisgICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTczNmE3
MTg2NTY3NzI0ODYxMWUwOGY2NjNiMjlmLi5iOTYzNTZlNzg1NjEzODk1NmFlNGMwNTk4MzE3MGNk
ZjcyMzY3MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25D
YWNoZVJlc291cmNlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2Fk
ZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcgKzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRh
OwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmlu
ZGV4IGYxZjdlMTc1NjMwMTQ3MWYzMDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLjJiYjNmZTc1Yjk5
NzdlODMzMjJhZTI1ODBmNzIxMmVlNWJmMjE2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBA
IC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZT4gQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXRoKQorUmVmPEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25l
ZCB0eXBlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQoIXVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7
CiAgICAgaWYgKCFidWZmZXIpCkBAIC00MCw3ICs0MCw3IEBAIFJlZjxBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJs
LCBjCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVS
TCB7IHVybCB9LCBXVEZNb3ZlKHJlc291cmNlUmVzcG9uc2UpLCB0eXBlLCBidWZmZXIucmVsZWFz
ZU5vbk51bGwoKSwgcGF0aCkpOwogfQogCi1BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25z
ZSwgdW5zaWduZWQgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcm
IHBhdGgpCitBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQog
ICAgIDogU3Vic3RpdHV0ZVJlc291cmNlKFdURk1vdmUodXJsKSwgV1RGTW92ZShyZXNwb25zZSks
IFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fc3RvcmFnZUlEKDAp
CkBAIC01MSw3ICs1MSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25D
YWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0g
ICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1w
dHkoKSA/IGRhdGEoKS5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShtX3BhdGgpKTsKKyAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25z
ZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291
cmNlLmgKaW5kZXggODhjOTRkZTFhNzc0MTA0NjljOTMxYTQyYTQ3OWIxZTY3NzdhNzAyZS4uYzI4
OGU3MDM2YzY3NjJhZDQ4NzZiYTg4MTQ2OWE3NWQyMjM3ZTFiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uu
aApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZhbGxiYWNrID0gMSA8PCA0CiAg
ICAgfTsKIAotICAgIHN0YXRpYyBSZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUo
Y29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIHR5cGUsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcm
IHBhdGggPSBTdHJpbmcoKSk7CisgICAgc3RhdGljIFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQg
dHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJpbmcoKSk7CiAKICAgICB1bnNpZ25lZCB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgdm9pZCBhZGRUeXBlKHVuc2lnbmVk
IHR5cGUpOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAKIHByaXZhdGU6
Ci0gICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYs
IHVuc2lnbmVkIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgcGF0aCk7
CisgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYs
IHVuc2lnbmVkIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJp
bmcmIHBhdGgpOwogCiAgICAgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJikgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1MDg0N2E2ZTg5NTE3
ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1
MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwMSw3
ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNl
LT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNl
UmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUzYzQ5OTAyNDBhNTIwYmQzMGU2MzY1OTUuLjhj
ZjA1Y2NlMTg4MDEyOGRlNTliZTcwYTk5ODM2ZjVhNzQ1YjZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0
b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgYXV0
byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5U
TyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/LCA/KSJfcyk7CiAgICAg
aWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCiAKICAgICBT
dHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgpLmlzRW1wdHkoKSkKQEAg
LTgxNSw3ICs4MTQsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgICAgICBkYXRhU3Rh
dGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAocmVz
b3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxv
YigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRC
bG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSk7CiAgICAgfQog
ICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1hbmQoKSkgewpAQCAtODcz
LDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAKICAgICBpZiAoIWV4
ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFsdWUoKSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNjZXNzZnVsbHkgd3JpdGUgdGhlIHJlc291
cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAvLyByZWxlYXNlIHRoZSByZXNvdXJjZSdz
IGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91bnQKICAgICAvLyBvZiBt
ZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJlc291cmNlLT5k
YXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7CiAKICAgICByZXNvdXJj
ZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTI3Myw3
ICsxMjcyLDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c2hvdWxkU3RvcmVSZXNv
dXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNoZVJlc28KICAgICByZXR1cm4gc3RhcnRzV2l0
aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAiYXVkaW8vIikgfHwgc3RhcnRzV2l0aExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAidmlkZW8vIik7CiB9CiAgICAgCi1ib29sIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShT
aGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbikKK2Jvb2wgQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgZmlsZUV4dGVuc2lvbikKIHsKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5oCmluZGV4IDlhOTUzMDA4NzY2YTg4ODU1NjFiMzQ4ODg5YjhjZWRhMmIyZWIzMzgu
LjQxMDJhMTgwOGI0NTU1N2I2NDVlMzZlN2U2ODFmYzRjNmQyMDdjZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNz
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwog
Y2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0b3JhZ2VJREpvdXJu
YWw7CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U+IHsKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgZW5zdXJlT3JpZ2luUmVjb3JkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKik7CiAgICAg
c3RhdGljIGJvb2wgc2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlKik7CiAgICAgdm9pZCBkZWxldGVUYWJsZXMoKTsKLSAgICBib29sIHdyaXRlRGF0
YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24p
OworICAgIGJvb2wgd3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pOwogCiAgICAgdm9pZCBsb2FkTWFuaWZlc3RI
b3N0SGFzaGVzKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9B
cmNoaXZlRmFjdG9yeS5jcHAKaW5kZXggNmRlODBjMTBhYzdkMjVjZjM0NjlmNmRlZjBmYWY3MjQx
ZjU5NjQyOC4uNGVmOWNkNjZiZDA4OGI3NGMwNDZjMDY5MGQxZTlkM2U1ZTMzNjBmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcApAQCAt
NDYsMTIgKzQ2LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBSZWZQdHI8
QXJjaGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24oY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVy
Jik7Cit0eXBlZGVmIFJlZlB0cjxBcmNoaXZlPiBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbihjb25z
dCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5n
LCBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbiosIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gQXJj
aGl2ZU1JTUVUeXBlc01hcDsKIAogLy8gVGhlIGNyZWF0ZSBmdW5jdGlvbnMgaW4gdGhlIGFyY2hp
dmUgY2xhc3NlcyByZXR1cm4gUmVmUHRyIHRvIGNvbmNyZXRlIHN1YmNsYXNzZXMKIC8vIG9mIEFy
Y2hpdmUuIFRoaXMgYWRhcHRvciBtYWtlcyB0aGUgZnVuY3Rpb25zIGhhdmUgYSB1bmlmb3JtIHJl
dHVybiB0eXBlLgotdGVtcGxhdGU8dHlwZW5hbWUgQXJjaGl2ZUNsYXNzPiBzdGF0aWMgUmVmUHRy
PEFyY2hpdmU+IGFyY2hpdmVGYWN0b3J5Q3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK3RlbXBsYXRlPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0
cjxBcmNoaXZlPiBhcmNoaXZlRmFjdG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHJldHVybiBBcmNoaXZlQ2xhc3M6OmNyZWF0
ZSh1cmwsIGJ1ZmZlcik7CiB9CkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgQXJjaGl2ZUZhY3Rvcnk6
OmlzQXJjaGl2ZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuICFt
aW1lVHlwZS5pc0VtcHR5KCkgJiYgYXJjaGl2ZU1JTUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBl
KTsKIH0KIAotUmVmUHRyPEFyY2hpdmU+IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgVVJM
JiB1cmwsIFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK1JlZlB0
cjxBcmNoaXZlPiBBcmNoaXZlRmFjdG9yeTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaAppbmRleCAyMWQyMzY1Y2Y4ZDlkOTAxZWZlN2Fh
ZDU1MmJmM2RhNDA2OWZlNDBkLi41NTY0NTE1YzllMGQ5ZDAzM2I3OTBjNzQ3Mjg1YTI1ODUzYWJl
MDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFj
dG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5
LmgKQEAgLTM0LDEyICszNCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEFyY2hp
dmVGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc0FyY2hpdmVNSU1FVHlwZShj
b25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBV
UkwmLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIHN0
YXRpYyBSZWZQdHI8QXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyS25vd25BcmNoaXZlTUlNRVR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+Jik7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvQXJjaGl2ZVJlc291cmNlLmNwcAppbmRleCBmYzIwZGEzZGEwMzJjYmVmNzRmMmU5Yzg0Mjhh
Y2I0ZWUzN2JlZjIzLi4wNzM4Mzk0YTgyODcxNGFhMGI5MGVlNzUwNzlkNDg2ZjViMGU4Njk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgQXJj
aGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKK2lubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYg
ZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IFN1YnN0
aXR1dGVSZXNvdXJjZShVUkwgeyB1cmwgfSwgUmVzb3VyY2VSZXNwb25zZSB7IHJlc3BvbnNlIH0s
IFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV90ZXh0
RW5jb2RpbmcodGV4dEVuY29kaW5nKQpAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgQXJjaGl2ZVJl
c291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBV
UkwmIHVybAogewogfQogCi1SZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6
OmNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorUmVmUHRy
PEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFkYXRhKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU0LDcgKzU0LDcgQEAgUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCBjb24KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcmNoaXZlUmVzb3VyY2UoZGF0YS5y
ZWxlYXNlTm9uTnVsbCgpLCB1cmwsIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwg
cmVzcG9uc2UpKTsKIH0KIAotUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNl
OjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBB
cmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7
CiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGRhdGEpLCB1cmwsIHJlc3BvbnNlLm1pbWVUeXBl
KCksIHJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSwgU3RyaW5nKCksIHJlc3BvbnNlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKaW5k
ZXggMjA5ZTk3MTdhZWIwOTM2MGRiMzkyN2U2ZWZhMWU1YmYxYzJjOTdjYS4uMDU0OGVmNzIxZWZk
MjdjMDBjZTkzZDEyMjcwZWNlYzQ2YzAyYWY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKQEAgLTM0LDggKzM0LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBBcmNoaXZlUmVzb3VyY2UgOiBwdWJsaWMgU3Vic3RpdHV0ZVJl
c291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3Jl
YXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gY3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsCisgICAgc3RhdGlj
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsCiAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwKICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgPSBSZXNvdXJjZVJlc3Bv
bnNlKCkpOwogCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZElnbm9y
ZVdoZW5VbmFyY2hpdmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkSWdub3JlV2hlblVuYXJj
aGl2aW5nOyB9CiAKIHByaXZhdGU6Ci0gICAgQXJjaGl2ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
dGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOworICAgIEFyY2hpdmVSZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CiAKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBTdHJpbmcgbV90ZXh0RW5jb2Rpbmc7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFy
Y2hpdmUuY3BwCmluZGV4IGRlN2RhZGRkYWMyMjEyZjZkNWUwY2MwOTFkNGU0MTY3N2EzZjAxNWQu
LjcxMTUwY2JkZDg5NjllNmFmMDI4Njg0YjZiZjZjYmMwYTUwYjJmYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBA
IC05MCw3ICs5MCw3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gUmVzb3VyY2Ug
ZGF0YSBjYW4gYmUgZW1wdHksIGJ1dCBtdXN0IGJlIHJlcHJlc2VudGVkIGJ5IGFuIGVtcHR5IENG
RGF0YVJlZgogICAgIGF1dG8mIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpOwogCi0gICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3Vy
Y2VEYXRhS2V5LCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKKyAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFL
ZXksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOwogCiAgICAg
Ly8gUmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBudWxsCiAgICAgaWYgKGF1dG8gY2ZVUkwgPSByZXNv
dXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKQEAgLTExNyw5ICsxMTcsOSBA
QCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9w
ZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIERvbid0IGluY2x1ZGUgdGhlIHJlc291
cmNlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlmICghaXNNYWluUmVzb3Vy
Y2UpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2VSZXNwb25zZURhdGEgPSBjcmVhdGVQcm9w
ZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihyZXNvdXJjZS0+cmVzcG9uc2UoKSkpCi0gICAgICAgICAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hp
dmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7ICAgIAor
ICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdh
Y3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0
KCkpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBwcm9wZXJ0eUxpc3Q7CiB9CiAKQEAgLTIx
NSwxMyArMjE1LDEzIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZVJlc291cmNlKENGRGljdGlvbmFyeVJlZiBkaWN0aW9uCiAgICAgICAgICAgICBMT0co
QXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgZGF0YSBpcyBu
b3Qgb2YgdHlwZSBDRkRhdGEsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAg
YXV0byByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihD
RkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VS
ZXNwb25zZVZlcnNpb25LZXkpKTsKICAgICAgICAgaWYgKHJlc291cmNlUmVzcG9uc2VWZXJzaW9u
ICYmIENGR2V0VHlwZUlEKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKSAhPSBDRlN0cmluZ0dldFR5
cGVJRCgpKSB7CiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0g
UmVzb3VyY2UgcmVzcG9uc2UgdmVyc2lvbiBpcyBub3Qgb2YgdHlwZSBDRlN0cmluZywgY2Fubm90
IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICByZXNwb25zZSA9IGNyZWF0ZVJlc291cmNl
UmVzcG9uc2VGcm9tUHJvcGVydHlMaXN0RGF0YShyZXNvdXJjZVJlc3BvbnNlRGF0YSwgcmVzb3Vy
Y2VSZXNwb25zZVZlcnNpb24pOwogICAgIH0KIApAQCAtMjQ4LDIzICsyNDgsMjMgQEAgUmVmPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShSZWY8QXJjaGl2ZVJlc291
cmNlPiYmIG1haW5SZXNvdXIKICAgICByZXR1cm4gYXJjaGl2ZTsKIH0KIAotUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEp
CitSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShVUkwoKSwgZGF0
YSk7CiB9CiAKLVJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhKQorUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhKQogewogICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBD
cmVhdGluZyBmcm9tIHJhdyBkYXRhIik7Ci0gICAgCisKICAgICBSZWY8TGVnYWN5V2ViQXJjaGl2
ZT4gYXJjaGl2ZSA9IGNyZWF0ZSgpOwotICAgICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBjZkRhdGEgPSBkYXRhLmNyZWF0ZUNGRGF0YSgpOworCisgICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gY2ZEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKICAgICBp
ZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIAorCiAgICAgQ0ZF
cnJvclJlZiBlcnJvciA9IG51bGxwdHI7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiBwbGlzdCA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlBy
b3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKDAsIGNmRGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0
SW1tdXRhYmxlLCAwLCAmZXJyb3IpKSk7CiAgICAgaWYgKCFwbGlzdCkgewogI2lmbmRlZiBOREVC
VUcKQEAgLTI3NiwxMiArMjc2LDEyIEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhCiAgICAgICAg
ICAgICBDRlJlbGVhc2UoZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0g
ICAgCisKICAgICBpZiAoQ0ZHZXRUeXBlSUQocGxpc3QuZ2V0KCkpICE9IENGRGljdGlvbmFyeUdl
dFR5cGVJRCgpKSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBB
cmNoaXZlIHByb3BlcnR5IGxpc3QgaXMgbm90IHRoZSBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFi
b3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9Ci0gICAgCisKICAgICBpZiAoIWFyY2hpdmUtPmV4dHJhY3QocGxpc3QuZ2V0KCkpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjk1LDcgKzI5NSw3IEBAIGJvb2wgTGVnYWN5V2Vi
QXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgTE9H
KEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE51bGwgcm9vdCBDRkRpY3Rpb25hcnksIGFi
b3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQotICAgIAorCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIG1haW5SZXNvdXJjZURpY3QgPSBzdGF0aWNf
Y2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExl
Z2FjeVdlYkFyY2hpdmVNYWluUmVzb3VyY2VLZXkpKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURp
Y3QpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5vIG1haW4g
cmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CkBAIC0z
MzMsNyArMzMzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFy
eVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdl
YkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9y
dGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKGF1dG8gc3Vi
cmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZShzdWJyZXNvdXJjZURpY3QpKQogICAgICAgICAgICAg
ICAgIGFkZFN1YnJlc291cmNlKHN1YnJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAg
ICB9CkBAIC0zNTMsNyArMzUzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENG
RGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywg
IkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJmcmFtZSBhcnJheSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0
aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAg
YXV0byBzdWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChzdWJmcmFt
ZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJhbWVEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJm
cmFtZUFyY2hpdmUoV1RGTW92ZShzdWJmcmFtZUFyY2hpdmUpKTsKQEAgLTM2MSw3ICszNjEsNyBA
QCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25h
cnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIElu
dmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBza2lwcGVkIik7CiAgICAgICAgIH0KICAgICB9Ci0gICAg
CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTA2LDcgKzUwNiw3IEBAIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJr
dXBTdHJpbmcsIEZyCiB7CiAgICAgYXV0byYgcmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwogICAgIFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNl
LnVybCgpOwotICAgIAorCiAgICAgLy8gaXQncyBwb3NzaWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ug
d2l0aG91dCBhIFVSTCBoZXJlCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAg
aWYgKHJlc3BvbnNlVVJMLmlzTnVsbCgpKQpAQCAtNjA1LDcgKzYwNSw3IEBAIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1l
KiBmcmFtZSkKIAogICAgIGlmICghZG9jdW1lbnQtPmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0
dXJuIGFyY2hpdmU7Ci0gICAgICAgIAorCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1l
bnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIg
ZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93biku
IAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIg
bWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdo
dD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJl
c3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaAppbmRleCBkMDll
YzlmNzVhYmExMzZhODYzMzllYjRkODZhYmQ4Mjc3YzRmZjA0Li41YTA3YjEwYjRiZTZmODYyMDEx
YTc4MmE3ZGVkMjM2NzU5MjQzNjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCkBAIC00MSw4ICs0MSw4IEBAIHN0cnVjdCBT
aW1wbGVSYW5nZTsKIGNsYXNzIExlZ2FjeVdlYkFyY2hpdmUgZmluYWwgOiBwdWJsaWMgQXJjaGl2
ZSB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lXZWJBcmNo
aXZlPiBjcmVhdGUoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdl
YkFyY2hpdmU+IGNyZWF0ZShTaGFyZWRCdWZmZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZm
ZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+
IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TGVnYWN5V2Vi
QXJjaGl2ZT4gY3JlYXRlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYgbWFpblJlc291cmNlLCBWZWN0
b3I8UmVmPEFyY2hpdmVSZXNvdXJjZT4+JiYgc3VicmVzb3VyY2VzLCBWZWN0b3I8UmVmPExlZ2Fj
eVdlYkFyY2hpdmU+PiYmIHN1YmZyYW1lQXJjaGl2ZXMpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKE5vZGUmLCBGdW5jdGlvbjxib29s
KEZyYW1lJik+JiYgZnJhbWVGaWx0ZXIgPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKEZyYW1lJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAppbmRleCBh
Y2ZiYmI3MDIwMjJkMDZhZmU2MjAwNDA0ODdmZDM0ZDkyMWQ3MjdjLi5hZDg5MmFlODdmZjQ5ZWJm
YTYwNWIyY2EyMDNjYjUyYjFlMmUxYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBS
ZWY8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTUhUTUxBcmNoaXZlKTsKIH0KIAotUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxB
cmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0
cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIEZvciBzZWN1cml0eSByZWFzb25z
IHdlIG9ubHkgbG9hZCBNSFRNTCBwYWdlcyBmcm9tIGxvY2FsIFVSTHMuCiAgICAgaWYgKCFMZWdh
Y3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHVybC5wcm90b2Nv
bCgpLnRvU3RyaW5nKCkpKQpAQCAtMTMwLDcgKzEzMCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+
IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGRhdGEp
CiAgICAgcmV0dXJuIG1haW5BcmNoaXZlOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFy
Y2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCitSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogewog
ICAgIFZlY3RvcjxQYWdlU2VyaWFsaXplcjo6UmVzb3VyY2U+IHJlc291cmNlczsKICAgICBQYWdl
U2VyaWFsaXplciBwYWdlU2VyaWFsaXplcihyZXNvdXJjZXMpOwpAQCAtMTYyLDggKzE2Miw4IEBA
IFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSog
cGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3RlYWQgb2YgYXNjaWkoKSBhcyBh
c2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxsIG9ubHkgaGF2ZSBwdXQgQVND
SUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmluZ0J1aWxkZXIudG9TdHJpbmco
KS5pc0FsbEFTQ0lJKCkpOwogICAgIENTdHJpbmcgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVy
LnRvU3RyaW5nKCkudXRmOCgpOwotICAgIGF1dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lp
U3RyaW5nLmxlbmd0aCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1odG1sRGF0YTsKKyAg
ICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3Ro
KCkpOwogCiAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IHJlc291cmNlcykgewogICAgICAgICBz
dHJpbmdCdWlsZGVyLmNsZWFyKCk7CkBAIC0xNzgsMTUgKzE3OCwxNSBAQCBSZWY8U2hhcmVkQnVm
ZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcclxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogIiwg
Y29udGVudEVuY29kaW5nLCAiXHJcbkNvbnRlbnQtTG9jYXRpb246ICIsIHJlc291cmNlLnVybC5z
dHJpbmcoKSwgIlxyXG5cclxuIik7CiAKICAgICAgICAgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0
cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgbWh0bWxEYXRhLmFw
cGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgICAg
ICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNvZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJl
YW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxsLgogICAgICAgICBhdXRvKiBkYXRhID0g
cmVzb3VyY2UuZGF0YS0+ZGF0YSgpOwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IHJlc291
cmNlLmRhdGEtPnNpemUoKTsKICAgICAgICAgaWYgKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBx
dW90ZWRQcmludGFibGUpKSB7CiAgICAgICAgICAgICBhdXRvIGVuY29kZWREYXRhID0gcXVvdGVk
UHJpbnRhYmxlRW5jb2RlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgICAgICAgICAgbWh0bWxEYXRh
LT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOwotICAgICAg
ICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgIG1odG1sRGF0
YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOworICAgICAg
ICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgQVNTRVJUKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBiYXNlNjQpKTsKICAgICAg
ICAgICAgIC8vIFdlIGFyZSBub3Qgc3BlY2lmeWluZyBpbnNlcnRMRnMgPSB0cnVlIGJlbG93IGFz
IGl0IHdvdWxkIGN1dCB0aGUgbGluZXMgd2l0aCBMRnMgYW5kIE1IVE1MIHJlcXVpcmVzIENSTEZz
LgpAQCAtMTk2LDE1ICsxOTYsMTUgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpn
ZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAgICAgICAgc2l6ZV90IGVuY29kZWRE
YXRhTGVuZ3RoID0gZW5jb2RlZERhdGEuc2l6ZSgpOwogICAgICAgICAgICAgZG8gewogICAgICAg
ICAgICAgICAgIHNpemVfdCBsaW5lTGVuZ3RoID0gc3RkOjptaW4oZW5jb2RlZERhdGFMZW5ndGgg
LSBpbmRleCwgbWF4aW11bUxpbmVMZW5ndGgpOwotICAgICAgICAgICAgICAgIG1odG1sRGF0YS0+
YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVuZ3RoKTsKLSAgICAgICAg
ICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIG1o
dG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOwor
ICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgICAg
ICAgICBpbmRleCArPSBtYXhpbXVtTGluZUxlbmd0aDsKICAgICAgICAgICAgIH0gd2hpbGUgKGlu
ZGV4IDwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgYXNjaWlT
dHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxuIikudXRmOCgpOwotICAg
IG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3Ro
KCkpOworICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmlu
Zy5sZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbWh0bWxEYXRhOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCAzZDJkYjdj
OTYwMDJlYmU2ODRiMmJlZjhmMWVhOWUyZTk3OTRhNTg5Li4yZGZlODdlODJlN2E0ZGNlMGYzNDFj
MzYxOTQzYzk5MDIwNWM4ZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaApAQCAtMzgsMTQgKzM4LDE0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgTUhUTUxQYXJzZXI7CiBjbGFzcyBQYWdlOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTUhUTUxBcmNo
aXZlIGZpbmFsIDogcHVibGljIEFyY2hpdmUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TUhU
TUxBcmNoaXZlPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3Jl
YXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8TUhUTUxB
cmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCi0g
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKKyAg
ICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBh
Z2UqKTsKIAogICAgIHZpcnR1YWwgfk1IVE1MQXJjaGl2ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZjFiOTAx
ZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBiZGI4MDE1ZS4uNWVlOTE4Njg0YTA2ODk2ODNmNzFj
MjY3ZjJkOTAxYTM3YTZmZWI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgYm9v
bCBza2lwTGluZXNVbnRpbEJvdW5kYXJ5Rm91bmQoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGxp
bmVSZWFkZXIsIGNvbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTUhUTUxQYXJzZXI6Ok1IVE1M
UGFyc2VyKFNoYXJlZEJ1ZmZlciogZGF0YSkKK01IVE1MUGFyc2VyOjpNSFRNTFBhcnNlcihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIDogbV9saW5lUmVhZGVyKGRhdGEsICJcclxu
IikKIHsKIH0KQEAgLTE0MCw3ICsxNDAsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRN
TFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogewog
ICAgIEFTU0VSVChlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJv
dW5kYXJ5LmlzRW1wdHkoKSk7CiAKLSAgICBhdXRvIGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY29udGVudDsKICAgICBjb25zdCBib29s
IGNoZWNrQm91bmRhcnkgPSAhZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpOwogICAgIGJvb2wg
ZW5kT2ZQYXJ0UmVhY2hlZCA9IGZhbHNlOwogICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFu
c2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6QmluYXJ5KSB7CkBAIC0xNTQsNyArMTU0LDcg
QEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29u
c3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgICAgIExPR19FUlJPUigiQmluYXJ5
IGNvbnRlbnRzIHJlcXVpcmVzIGVuZCBvZiBwYXJ0Iik7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgfQotICAgICAgICBjb250ZW50LT5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7
CisgICAgICAgIGNvbnRlbnQuYXBwZW5kKFdURk1vdmUocGFydCkpOwogICAgICAgICBtX2xpbmVS
ZWFkZXIuc2V0U2VwYXJhdG9yKCJcclxuIik7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBuZXh0
Q2hhcnM7CiAgICAgICAgIGlmIChtX2xpbmVSZWFkZXIucGVlayhuZXh0Q2hhcnMsIDIpICE9IDIp
IHsKQEAgLTE4MCwxMCArMTgwLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFy
c2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQg
d2UgdXNlIGxpbmUudXRmOCgpIGFuZCBub3QgbGluZS5hc2NpaSgpIGFzIGFzY2lpIHR1cm5zIHNw
ZWNpYWwgY2hhcmFjdGVycyAoc3VjaCBhcyB0YWIsIGxpbmUtZmVlZC4uLikgaW50byAnPycuCi0g
ICAgICAgICAgICBjb250ZW50LT5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0
aCgpKTsKKyAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGlu
ZS5sZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJF
bmNvZGluZygpID09IE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZSkgewogICAgICAgICAgICAg
ICAgIC8vIFRoZSBsaW5lIHJlYWRlciByZW1vdmVzIHRoZSBcclxuLCBidXQgd2UgbmVlZCB0aGVt
IGZvciB0aGUgY29udGVudCBpbiB0aGlzIGNhc2UgYXMgdGhlIFF1b3RlZFByaW50YWJsZSBkZWNv
ZGVyIGV4cGVjdHMgQ1ItTEYgdGVybWluYXRlZCBsaW5lcy4KLSAgICAgICAgICAgICAgICBjb250
ZW50LT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZCgi
XHJcbiIsIDIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTkzLDkgKzE5
MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFy
dChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhOworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBjb250ZW50LnRha2UoKS0+
bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVy
RW5jb2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1
dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5z
aXplKCkpOworICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRpZ3Vv
dXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBp
ZiAoIWRlY29kZWREYXRhKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgYmFzZTY0
IGNvbnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTIwNCwxMSArMjA1LDExIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2Vy
OjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAgICAg
ICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQt
PnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91
c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAgY2FzZSBNSU1FSGVhZGVy
OjpCaW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5kKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+
c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwg
Y29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5o
CmluZGV4IDFlOWJkNGQ3NzY3ZWUzOTFhMDAyMmY3MTc0OGYwMGI4NWM4MWIyNWYuLjBkNjA0MzQz
ZjNkN2FkMTc4Y2MyMjAwM2M5NzljMjJlNTBhM2I5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaApAQCAtNDIsMTEgKzQyLDExIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKIGNsYXNzIE1IVE1M
QXJjaGl2ZTsKIGNsYXNzIE1JTUVIZWFkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNSFRNTFBhcnNlciB7CiBwdWJsaWM6Ci0g
ICAgZXhwbGljaXQgTUhUTUxQYXJzZXIoU2hhcmVkQnVmZmVyKik7CisgICAgZXhwbGljaXQgTUhU
TUxQYXJzZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogCiAgICAgUmVmUHRyPE1IVE1MQXJj
aGl2ZT4gcGFyc2VBcmNoaXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWViNjgy
MDdmYzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li5lMWE4NzUxNmJkOGQ1YjhmMjRhZjZhNWI5
OTBlMjE4NTM0N2U3NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MCwxMiArNDAsMTYgQEAg
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIHsKIH0KIAotdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5p
c2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVu
Y29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAg
ICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAg
ICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0
YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAg
ICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlz
aExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCmluZGV4IDA3ZjJhMDc5
YzU2NGVlZmZiNjk3YzM3Yzc4NTY1ZTFlYThkOWFlNWUuLjM3OThhOWI0ZDkwMTNjZmRlYTZmNTZm
YmRmMDAxNWFmODk0NzU3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJs
aWM6CiAgICAgc3RkOjpvcHRpb25hbDxzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdD4gcHJvY2Vz
cyhjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBEb2N1bWVu
dCogPSBudWxscHRyKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBm
aW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0
ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLnB0
cigpOyB9CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAg
ICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZj
NjFlNjM3NDJmNzRjYzZhMGJjZjAwMGJhOWIxNzZmLi4zOGEyZTE3ZjBkMDZjOGFjOThkZTI0YjFl
NTJiOGU2MGU5MjQxMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBD
YWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVD
aGVja0hpbnQsCiAgICAgICAgIHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBE
b24ndCBjYWNoZSB0aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0
IGNhbiB1c2UgcXVpdGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVj
b2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4g
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgbV9kYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJv
ZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05NywxMyArOTcs
MTcgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hl
ZXQubV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hl
ZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmco
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUo
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5k
IG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBj
aGVja05vdGlmeSgpCi0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9
IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwor
ICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7
CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIC8vIERlY29k
ZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRl
eHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCisgICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUo
KSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0
RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNr
Tm90aWZ5KG1ldHJpY3MpOwogICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMg
dW5saWtlbHkgdG8gYmUgbmVlZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byBy
ZWdlbmVyYXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NT
dHlsZVNoZWV0LmgKaW5kZXggNWQ0ZGQzZGM3ZTM1M2VlM2NiMmZiOTNmMjc4ZDI1NzliOGQ5YTdh
MS4uZTY1NWM2OWUzZWRiNjA5NTAyMzljY2U0NTQ1ZjA5NmI1MjY1NmRlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCkBAIC01NSw3
ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBm
aW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0
UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIAogICAg
IHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4
MjM1MWQ3ZjY2MjViY2UyNzFkMDc3NjMzYWU5NC4uZDJiYzI4MjE0NzljNTlhMjMyM2U0ZjY1Y2Q5
NGI2M2I0MjM3MzY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmNwcApAQCAtNjQsMTAgKzY0LDE1IEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRkQ2xpZW50KENh
Y2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRpY19jYXN0PENhY2hlZEZv
bnRDbGllbnQmPihjbGllbnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZEZv
bnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdl
dCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2Rh
dGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShtX2Rh
dGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAg
ICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwog
ICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpAQCAtMTA1LDcgKzExMCw3IEBAIGJvb2wgQ2Fj
aGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQogCiBzdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3Vz
dG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xs
ZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKLSAgICBSZWZQdHIgYnVmZmVyIHsgJmJ5dGVzIH07
CisgICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVzIH07CiAgICAgd3JhcHBpbmcgPSAhY29udmVy
dFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIpOwogICAgIHJldHVybiBidWZmZXIgPyBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24pIDogbnVs
bHB0cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5
KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKGlzTG9hZGluZygpKQogICAg
ICAgICByZXR1cm47Ci0gICAgCisKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNo
ZWRGb250Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkRm9udENs
aWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKICAgICAgICAgY2xpZW50LT5mb250TG9hZGVk
KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IGNl
YmRjNTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVjNGJlZjQyMTAuLjEzNDY2Y2M5OWQwZDE5Y2Jm
M2Q4ZWYzZGZiZDk2ZjM0ZDBmODU0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuaApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVf
VE9fQVNTRVJUIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmlu
YWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2Fj
aGVkUmVzb3VyY2VDbGllbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQo
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKaW5kZXggYjE1OWYyOWVlOTBmZTNkZTAxOWMxMTQ5YmRhNjk0ZTBlNmY2YjU0Mi4uOTQ2Mjc5
NTIwZDBkYTQ0NjIyYzZhY2QzNjY2MjI4ODEwNWU4MTk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00NjgsOSArNDY4LDkgQEAgaW5saW5lIHZv
aWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQg
PSAwOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRC
dWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0YSA9ICZkYXRhOwor
ICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZSht
X2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTIzLDEyICs1MjMsMTQg
QEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAog
ICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFU
aW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFs
XTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJ
Zk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBD
YWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RTY3JpcHRSZXNv
dXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKKyAgICAgICAg
cmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNF
KFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
UERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+Y3JlYXRl
Q0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9j
dW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKICNlbHNlCiAgICAgLy8gTG9hZGluZyB0aGUg
aW1hZ2Ugc2hvdWxkIGhhdmUgYmVlbiBjYW5jZWxlZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1
cHBvcnQgY29udmVydGluZyBQb3N0U2NyaXB0IHRvIFBERi4KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTU1Myw3ICs1NTUsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6
dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEp
Cit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRh
dGEpOwpAQCAtNTY3LDcgKzU2OSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1
cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCit2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAg
ICBtX2RhdGEgPSBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoZGF0YSk7CiAgICAgaWYgKG1fZGF0YSkg
ewpAQCAtNTkzLDcgKzU5NSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1lCiB2b2lkIENhY2hl
ZEltYWdlOjpkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKQogewogICAgIGlmIChtX2lt
YWdlKSB7Ci0gICAgICAgIC8vIExldCB0aGUgSW1hZ2Uga25vdyB0aGF0IHRoZSBTaGFyZWRCdWZm
ZXIgaGFzIGJlZW4gcmVqaWdnZWQsIHNvIGl0IGNhbiBsZXQgZ28gb2YgYW55IHJlZmVyZW5jZXMg
dG8gdGhlIGhlYXAtYWxsb2NhdGVkIHJlc291cmNlIGJ1ZmZlci4KKyAgICAgICAgLy8gTGV0IHRo
ZSBJbWFnZSBrbm93IHRoYXQgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgaGFzIGJlZW4gcmVq
aWdnZWQsIHNvIGl0IGNhbiBsZXQgZ28gb2YgYW55IHJlZmVyZW5jZXMgdG8gdGhlIGhlYXAtYWxs
b2NhdGVkIHJlc291cmNlIGJ1ZmZlci4KICAgICAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0v
MjQyNzU2MTcpOiBJdCB3b3VsZCBiZSBiZXR0ZXIgaWYgd2UgY291bGQgc29tZWhvdyB0ZWxsIHRo
ZSBJbWFnZSdzIGRlY29kZXIgdG8gc3dhcCBpbiB0aGUgbmV3IGNvbnRlbnRzIHdpdGhvdXQgZGVz
dHJveWluZyBhbnl0aGluZy4KICAgICAgICAgbV9pbWFnZS0+ZGVzdHJveURlY29kZWREYXRhKHRy
dWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5k
ZXggZTM4OTYyYTBkY2FmYmNlZjYzMWMxNGU2M2ZlYjg1YmEwNTUyMDNmNC4uMDgzZjkyZjg4ODI3
NmVlZGE4OTkxMjAzMWQyNDQ5YTk2OGUyNjVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmgKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIGJvb2wgaW1h
Z2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5o
YXNSZWxhdGl2ZVdpZHRoKCk7IH0KICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBj
b25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0K
IAotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZv
aWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAog
ICAgIGVudW0gU2l6ZVR5cGUgewogICAgICAgICBVc2VkU2l6ZSwKQEAgLTEyNSw3ICsxMjUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgb3ZlcnJpZGU7CiAKICAg
ICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29u
c3Q7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRl
SW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wg
YWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKQEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsK
ICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7CiAKLSAgICB2
b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgdXBkYXRl
QnVmZmVySW50ZXJuYWwoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9p
ZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggOTJi
MDgzNjk3NTg4ODQ0MDkxOTM5ZTNlZWQ3OWQ3N2YxODM5NTYyZi4uODk1ZGIxMTU4YjZiOGM4ZmJm
N2IxMGI0M2I2MTRlZGE5NjAyMWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC00OCw3ICs0OCw3IEBAIENhY2hlZFJhd1Jl
c291cmNlOjpDYWNoZWRSYXdSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBUeXBlIHR5cGUsCiAgICAgQVNTRVJUKGlzTWFpbk9yTWVkaWFPckljb25PclJhd1Jlc291cmNl
KCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdS
ZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVy
KiBkYXRhKSBjb25zdAorc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVk
UmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHByZXZpb3VzRGF0YUxl
bmd0aCA9IGVuY29kZWRTaXplKCk7CiAgICAgaWYgKCFkYXRhIHx8IGRhdGEtPnNpemUoKSA8PSBw
cmV2aW91c0RhdGFMZW5ndGgpCkBAIC01Niw3ICs1Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVk
QnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERh
dGFDCiAgICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9
CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRh
dGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRy
aWdnZXJlZCBmcm9tIG5lc3RlZCBydW5sb29wcy4gV2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVm
ZmVyIGluIGZpbmlzaExvYWRpbmcuCiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkp
CkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihT
aGFyZWRCdWZmZXImIGRhdGEpCiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdS
ZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1Bv
bGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9
ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8g
cHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgp
ID4gcHJldmlvdXNEYXRhU2l6ZSkgewpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jl
c291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkK
ICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lk
IENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERh
dGFOb3RpZnkpIHsKICAgICAgICAgLy8gV2UgbWF5IGdldCBoZXJlIHN5bmNocm9ub3VzbHkgZnJv
bSB1cGRhdGVCdWZmZXIoKSBpZiB0aGUgY2FsbGJhY2sgdGhlcmUgZW5kcyB1cCBzcGlubmluZyBh
IHJ1bmxvb3AuCkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQog
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlz
KHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSA9IHRo
aXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9
PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IGRh
dGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVt
ZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEt
PnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3Jl
bWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0gICAgICAgIH0K
KyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250
aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxh
dGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAgIHNldEVuY29k
ZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFX
YXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXpl
KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fZGF0YSA9
IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDg0ZTBkODQ0ZDU3MTA5
OTUzYWU2YmZmNjU1NjU5OTUzZTI4YmE2OWIuLmE3ODY1ZjhhZDE3OGFlZmIzMjIwYTU2ZGNmZjE5
NTk5M2NmOTVhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5oCkBAIC01MSw5ICs1MSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2
b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIGZpbmFsOwotICAgIHZvaWQg
dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQnVmZmVy
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lk
IGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxk
SWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtNjYsNyArNjYs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3dpdGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJj
ZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9hbGxvd0VuY29kZWREYXRhUmVwbGFjZW1lbnQ7IH0KIAotICAg
IHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFs
RGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciopIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8
U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKSBjb25zdDsKICAgICB2b2lkIG5vdGlmeUNsaWVudHNE
YXRhV2FzUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKICAg
ICAKICNpZiBVU0UoUVVJQ0tfTE9PSykKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8UmVkaXJlY3RQYWlyLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1fcmVkaXJlY3RDaGFp
bjsKIAogICAgIHN0cnVjdCBEZWxheWVkRmluaXNoTG9hZGluZyB7Ci0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8RGVsYXllZEZpbmlz
aExvYWRpbmc+IG1fZGVsYXllZEZpbmlzaExvYWRpbmc7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggM2FlOGJiNjhkMjVjZGRkMTgw
MjA5MjJmNWVkYjI0ZDRiOTEyMDAwMi4uYmY2OWU4MGU1NzZlMWEyODhmNmEwMTFmNTQ2MTQ2MzE1
NTgwMWQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3Rp
ZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogICAgICAgICBjbGllbnQtPm5v
dGlmeUZpbmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpCit2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0K
QEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0
IHVpbnQ4X3QqLCB1bnNpZ25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09
IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVk
UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogewogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3Mp
OwpAQCAtOTI3LDggKzkyNyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNv
ZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdC
dWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2Rh
dGEtPmFwcGVuZChuZXdCdWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9Owog
ICAgIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5
MDQ3OGNhMjUxODEzZTZjMDM1YmMyNzguLmM5ODJkZDY5MzdhMGJjMmJmMzhjNDI2MTI2ZmZlNmU3
OGM3OTY0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIENvb2tpZUphcjsKIGNsYXNzIE1lbW9yeUNhY2hl
OwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vi
cmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCkBAIC0xMTIsOSAr
MTEyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJp
bmcmKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0
cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVz
b3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1
ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2
b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwogCiAgICAgdm9pZCBzZXRSZXNvdXJj
ZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7IG1fZXJyb3IgPSBlcnJvcjsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAK
aW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uZGI0MzE2MDdh
ZTU2MzgzMDM4MDBkZDI1OWMxMDM0Y2QwOTBmY2ZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01MiwxMiArNTIsMTIgQEAg
U3RyaW5nIENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1f
ZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRv
IGNyZWF0ZSBhIG5ldyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0
aGUgcGFyZW50IFVzZUVsZW1lbnQuCiAgICAgICAgIG1fZG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6
Y3JlYXRlKG51bGxwdHIsIG1fc2V0dGluZ3MsIHJlc3BvbnNlKCkudXJsKCkpOwotICAgICAgICBt
X2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpKTsKKyAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0
YS0+c2l6ZSgpKSk7CiAgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRh
dGEsIG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuaAppbmRleCBlOGMxNWYzNjBmYzkxYWM4YjM0ZDM5NjI5NWM1M2QzYzdmMTQ3
ZWFhLi40NDVlNGY5ZjQyYzNjMjc0MDc5NzZhNjRlOTE1NDA3ZjhiNTM0ZDAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtNDMsNyAr
NDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3Qg
VGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2Rv
Y3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXggYThlZjU3
NmJiNjkzOTMzYTIyMzQ2OTU1NTc1NmIzNjY3ZTQ4NjMyZS4uZDJjMWRlNDdlZmI3ODEzOThmNDQz
OGI3Y2E0ZWEyNjBlMjIxOTc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdGb250LmNwcApAQCAtODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVu
c3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAogICAgICAg
ICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUgZGlz
YWJsZWRTY29wZTsKIAotICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250
ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUo
KSkpOworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29k
ZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2Rh
dGEtPnNpemUoKSkpOwogICAgICAgICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJvcigp
OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5jcHAKaW5kZXggNDdhOWY1NzYwN2I5ODI4NGU4Zjc5ZTJjZGVjZTliZTQxOGYxN2I2NS4uYjY3
Mzk4YjBlNGY1NmZlN2FiY2IyNzRkMGUzNjg0MzAzNjM1MDg5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk2LDEwICs5NiwxNSBAQCB1bnNp
Z25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogICAgIHJldHVybiBtX3NjcmlwdEhhc2g7
CiB9CiAKLXZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTY3JpcHQ6
OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAg
c2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7
CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVu
Y29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0g
bnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJl
c291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKaW5kZXggOTI0Yjg0Y2EyZDg3MTZlMzQ2MDc3
ZWVlYjVjYzM0YmNlZGU3ZTIzZC4uODY1MWU2MzlhZDkwNjE3Mjg1NjFjMzI0YmZhN2FmNGNmOTdm
NmQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaApAQCAt
NDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5n
JikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3Qg
VGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlz
aExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIGZpbmFsOwogCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFj
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApp
bmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYxLi4wYzg0MjhiYjk5
ZGI2ZGZiMTZhMzQ4MTM0YzM4MjY4MzZjY2U1NDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDAsMTAgKzQwLDEwIEBAIENhY2hl
ZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFBBTDo6U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0
ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRh
dGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NF
UlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRh
dGEpOwotICAgIG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VD
b250aWd1b3VzKCkgOiBSZWZQdHI8U2hhcmVkQnVmZmVyPigpOwogICAgIHNldEVuY29kZWRTaXpl
KGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fs
a2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKQEAgLTUxLDEzICs1
MSwxMyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVy
KiBkYXRhKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3Vy
Y2UoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0
YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBD
YWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNo
TG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9VcGRhdGVCdWZmZXIoZGF0YSk7CiAgICAg
Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKaW5kZXggODVlMzk2MjA2NTEz
MTYwNzAzNjUzZWIyMmM3NzEzOGI5MTUwN2FkZC4uMDliNDMzOWEzN2I2NzNiMmFjNGZkYWUxNDZi
MjliOTY0Nzc3ZmNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRU
ZXh0VHJhY2suaApAQCAtMzUsMTAgKzM1LDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBi
b29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciopOworICAgIHZvaWQgZG9V
cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IGUzZTJmNWU5NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3
ODI2MTVkMzQwMGMuLmQyZWZmMmQyZDQwYzkyNzczODc1NmM0YThmMGNiYjkzNDNiZTEwYWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVl
dC5jcHAKQEAgLTYxLDEyICs2MSwxNiBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5j
b2RpbmcoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwog
fQogCi12b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFhT
TFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9
IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAg
IGlmIChkYXRhKQotICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChk
YXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1f
ZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRh
dGEtPnNpemUoKSk7CisgICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNo
KG1fZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBt
X2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAg
c2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAppbmRleCA2
ODQyYjY0NGY2MWNmOTBmN2Y2MWIyZjdlYzVlMDA2NTRjZDEwY2NjLi5iZDIzMTIxNGYyZDIwYmEz
OTY0NDYwMzY2ZTA0MWI5NDEzNWFjNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBl
bmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRl
eHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7
IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAg
IFN0cmluZyBtX3NoZWV0OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29k
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
CmluZGV4IDU1MjU2MWQ2YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIuLjY2YjkzNThl
YzUzMTExNDg0ODIyYTdjYzI0ZTdmM2E5OTE3MDY1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDcgKzM4LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudDsK
IGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRC
dWZmZXJCdWlsZGVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyIGZpbmFsIDogcHJpdmF0
ZSBQcmV2aWV3Q29udmVydGVyQ2xpZW50LCBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRl
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00OCw3ICs1MCw3IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKICAgICBib29sIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCk7Ci0gICAgYm9vbCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
OworICAgIGJvb2wgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CiAgICAgYm9vbCBkaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBkaWRGYWlsKCk7CiAK
QEAgLTYwLDE3ICs2MiwxNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRp
ZEZpbmlzaFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbCB7IH07CiAgICAgdm9pZCBw
cmV2aWV3Q29udmVydGVyRGlkRmFpbFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsK
ICAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZl
cnRlciYpIGZpbmFsOwotICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFBy
ZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHBy
ZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRp
ZEZpbmlzaENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOwogICAgIHZvaWQgcHJl
dmlld0NvbnZlcnRlckRpZEZhaWxDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsK
IAogICAgIC8vIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcgotICAgIHZvaWQgcHJvdmlkZU1haW5S
ZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYpIGZpbmFsOworICAgIHZvaWQgcHJv
dmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmKSBm
aW5hbDsKICAgICB2b2lkIHByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmll
d0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpIGZp
bmFsOwogCiAgICAgUmVmUHRyPFByZXZpZXdDb252ZXJ0ZXI+IG1fY29udmVydGVyOwogICAgIFJl
ZjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBtX2NsaWVudDsKLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBtX29yaWdpbmFsRGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4g
bV9vcmlnaW5hbERhdGE7CiAgICAgV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxv
YWRlcjsKICAgICBib29sIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7IGZhbHNlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXggZDE4
YjI1MmU5NzU2YzhjZTBjOTViNjNlNzhkZDAwOTdlZjJhNTczNC4uNzQ4ZmVkYjhlYTQ4ZmFiYzgy
NWZiNWI2NzcxNzQxNTIwNWIzMWIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
b3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgUmVmPExl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1ha2VDbGllbnQoY29uc3QgUmVzb3VyY2VMb2FkZXIm
IGxvYWRlciwgYwogICAgIHJldHVybiBlbXB0eUNsaWVudCgpOwogfQogCi1ib29sIExlZ2FjeVBy
ZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
Citib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChtX2ZpbmlzaGVkTG9hZGluZ0Rh
dGFJbnRvQ29udmVydGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDksNyArMTA5LDcg
QEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252
ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJU
KCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsK
KyAgICBtX29yaWdpbmFsRGF0YS0+cmVzZXQoKTsKICAgICByZXNvdXJjZUxvYWRlci0+ZG9jdW1l
bnRMb2FkZXIoKS0+c2V0UHJldmlld0NvbnZlcnRlcihXVEZNb3ZlKG1fY29udmVydGVyKSk7CiAg
ICAgYXV0byByZXNwb25zZSB7IGNvbnZlcnRlci5wcmV2aWV3UmVzcG9uc2UoKSB9OwogCkBAIC0x
NDcsNyArMTQ3LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVy
RGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICB9KTsKIH0KIAotdm9p
ZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJl
dmlld0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgTGVnYWN5UHJl
dmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0
ZXImLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGF1dG8gcmVz
b3VyY2VMb2FkZXIgPSBtX3Jlc291cmNlTG9hZGVyLmdldCgpOwogICAgIGlmICghcmVzb3VyY2VM
b2FkZXIpCkBAIC0yMjQsMTAgKzIyNCwxMCBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnBy
b3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgYwogICAg
IG1fY2xpZW50LT5kaWRSZXF1ZXN0UGFzc3dvcmQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCi12b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQ
cmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252
ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBBU1NFUlRfVU5VU0VEKGNvbnZlcnRlciwgJmNvbnZlcnRlciA9PSBtX2NvbnZlcnRlcik7
Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEucHRyKCkpOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLT5nZXQoKS5nZXQoKSk7CiB9CiAKIExlZ2FjeVBy
ZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwpAQCAtMjM1LDcg
KzIzNSw3IEBAIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBk
ZWZhdWx0OwogTGVnYWN5UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmlld0xvYWRlcihSZXNvdXJj
ZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6
IG1fY29udmVydGVyIHsgUHJldmlld0NvbnZlcnRlcjo6Y3JlYXRlKHJlc3BvbnNlLCAqdGhpcykg
fQogICAgICwgbV9jbGllbnQgeyBtYWtlQ2xpZW50KGxvYWRlciwgbV9jb252ZXJ0ZXItPnByZXZp
ZXdGaWxlTmFtZSgpLCBtX2NvbnZlcnRlci0+cHJldmlld1VUSSgpKSB9Ci0gICAgLCBtX29yaWdp
bmFsRGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9vcmlnaW5hbERhdGEg
eyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9yZXNvdXJj
ZUxvYWRlciB7IGxvYWRlciB9CiAgICAgLCBtX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRp
bmcgeyBsb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVM
b2FkaW5nUXVpY2tMb29rUHJldmlldygpIH0KIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5o
CmluZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0ZjI1YWIxMzVhYTYwMzMzY2YuLmVhNjE1ZGZm
NGRkMGVkNTE0YmZmNjQ0MjY0N2VjNDYyMGY2MzIyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JD
bGllbnQuaApAQCAtMzgsMTIgKzM4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBj
bGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIAorY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFt
ZTsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsK
IGNsYXNzIFRleHRDaGVja2VyQ2xpZW50OwogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKQEAgLTc4
LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRl
ckRlbGV0ZShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBsZVJhbmdlJikgPSAwOwogCiAj
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0
IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogcHJlZmVycmVkRmls
ZU5hbWUgKi8sIFJlZjxTaGFyZWRCdWZmZXI+JiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLywg
Y29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBwcmVmZXJy
ZWRGaWxlTmFtZSAqLywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyog
aWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3Ry
aW5nJiAvKiBmaWxlUGF0aCAqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNo
bWVudHMoVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVu
dGlmaWVyICovKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlh
bGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXgg
MWExMjEwZmE4MzM3Y2Q5NTIwZjRlMDExYTkwNzM2NzU0ZGU1MThmMS4uYWM1M2NiMTRiZjAwZTUx
NjQ3YzllYzkxMTA5OGJlYTAzNjE1MTEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFs
aXplci5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjphZGRJbWFn
ZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVudCogaW1hZwogICAg
IGlmICghaW1hZ2UgfHwgaW1hZ2UtPmltYWdlKCkgPT0gJkltYWdlOjpudWxsSW1hZ2UoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVu
ZGVyZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDog
MDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVy
ZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsK
ICAgICBpZiAoIWRhdGEpCiAgICAgICAgIGRhdGEgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwog
CkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291
cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3Bv
bnNlKCkubWltZVR5cGUoKSwgV1RGTW92ZShkYXRhKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBl
bmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIGRhdGEtPm1ha2VDb250aWd1
b3VzKCkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAppbmRleCA5NmFkMDgyNTQzZGQ1M2E4NzliZTUxYzZk
OTIxZDdhZmZmNDJlOGUwLi43NTgzNmI4NzkxNDNiNjBhN2YzNTE5NzAzMjA3YjZhZDNkOGQ0Zjg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBAIC0zNSw3ICszNSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVy
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVS
TCY+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiB7Ci0gICAgCisKIH0KIAogU2hhcmVEYXRhUmVhZGVy
Ojp+U2hhcmVEYXRhUmVhZGVyKCkKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIFNoYXJlRGF0YVJl
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVO
YW1lKQogICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwog
ICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX3BlbmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+YXJy
YXlCdWZmZXJSZXN1bHQoKTsKLSAgICAKKwogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZp
bGVOYW1lID0gZmlsZU5hbWU7CiAgICAgZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgp
KSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBw
ZW5kKFdURk1vdmUoZmlsZSkpOwogICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKLSAgICAKKwogICAg
IGlmIChtX2ZpbGVzUmVhZFNvRmFyID09IHN0YXRpY19jYXN0PGludD4obV9wZW5kaW5nRmlsZUxv
YWRzLnNpemUoKSkpIHsKICAgICAgICAgbV9wZW5kaW5nRmlsZUxvYWRzLmNsZWFyKCk7CiAgICAg
ICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRp
b25IYW5kbGVyLCB7IH0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93
UGxheWluZ01hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5h
Z2VyLmgKaW5kZXggZTM4MDZlODdkZjc5YTNkOWI1Y2FlMTIxNGRlNjZhYTJhNjU4NDdkYi4uZmM2
NmMzNjVhMmYyOWE0Yzc4ZTYwNjE5ZTQ3YTcxYzcyNThkOGZlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6
CiAgICAgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gbV9ub3dQbGF5aW5nSW5mbzsKICAg
ICBzdHJ1Y3QgQXJ0d29ya0NhY2hlIHsKICAgICAgICAgU3RyaW5nIHNyYzsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxBcnR3b3Jr
Q2FjaGU+IG1fbm93UGxheWluZ0luZm9BcnR3b3JrOwogICAgIGJvb2wgbV9zZXRBc05vd1BsYXlp
bmdBcHBsaWNhdGlvbiB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
Y3BwCmluZGV4IDE1NzMxZWIyM2ZhNzY5NDk2MGRkODA0OTZmYThmMmY5ZThjNzc4MGYuLjA3ZWQ0
OGU1ODg0ZWNlZWRjNjFmZDkzZTZiMjIxNzFiZTg4NTg5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC04OSw3ICs4OSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpy
ZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIHJldHVybiB7
IH07CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAoYXV0byogc3RyYXRlZ3kgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkpCiAgICAgICAgIHJldHVybiBz
dHJhdGVneS0+cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCB0eXBlLCBuYW1lKCksIGNv
bnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggN2QyNDdkY2Qx
YTE2ZjM0MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMi4uMzU3NjNlZTEyYTM5MGVmYzg0NTJjMzU4
MDZiNTEyYmU0MjlhZDk3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAt
NjEsMTIgKzYxLDEzIEBAIHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50
OwogY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBQ
YXN0ZWJvYXJkU3RyYXRlZ3k7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiAKQEAgLTE0NywxNiArMTQ4LDE2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRoKGNvbnN0IFN0cmluZyYs
IFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkRmls
ZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFk
SFRNTChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRJbWFnZShSZWY8
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJl
ZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFk
SW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwg
UHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpID0gMDsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVhbCBib29sIHJlYWRXZWJB
cmNoaXZlKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQoU2hh
cmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYp
ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJl
ZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFk
V2ViQXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9v
bCByZWFkUlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9v
bCByZWFkUlRGKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29s
IHJlYWREYXRhQnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50
YXRpb25TaXplID0geyB9KSA9IDA7CiAjZW5kaWYKIH07CiAKQEAgLTE3MSw3ICsxNzIsNyBAQCBz
dHJ1Y3QgUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIHZpcnR1YWwgflBhc3RlYm9hcmRGaWxl
UmVhZGVyKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCByZWFkRmlsZW5hbWUoY29uc3Qg
U3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWFkQnVmZmVyKGNvbnN0IFN0
cmluZyYgLyogdHlwZSAqLykgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9p
ZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIGNsYXNzIFBhc3RlYm9hcmQgewpAQCAtMjk2LDcg
KzI5Nyw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4g
cGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3Q7CiAKICAgICBTdHJpbmcgcmVh
ZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIFVSTCByZWFk
VVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSk7CiAKICAgICBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4
IDlkM2Y4N2E5MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjdiNGIzZDM2YWE2ODAz
NjExODc5MTMxYjVhMWIyMjZiNTg4ZDM2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTMzLDEzICszMywxMyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVk
QnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8
U2hhcmVkQnVmZmVyPj4mIG90aGVyKQorc3RhdGljIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6OnZhcmlh
bnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiBvdGhlcikKIHsKICAgICBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG90aGVyKSkKICAgICAgICAgcmV0dXJu
IHsgc3RkOjpnZXQ8U3RyaW5nPihvdGhlcikgfTsKIAotICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikpCi0gICAgICAgIHJldHVybiB7IHN0ZDo6
Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikuY29weVJlZigpIH07CisgICAgaWYgKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihvdGhlcikpCisg
ICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ob3Ro
ZXIpLmNvcHlSZWYoKSB9OwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTEzNCw3ICsxMzQsNyBA
QCB2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgYWRkT3JNb3ZlRW50cnlUb0VuZCh0eXBlKS5w
bGF0Zm9ybURhdGEgPSB7IHZhbHVlIH07CiB9CiAKLXZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6
OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkK
K3ZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgYWRkT3JNb3ZlRW50
cnlUb0VuZCh0eXBlKS5wbGF0Zm9ybURhdGEgPSB7IFdURk1vdmUoZGF0YSkgfTsKIH0KQEAgLTIw
MiwxNCArMjAyLDE0IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIGN1c3Rv
bURhdGE7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpy
ZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
IHR5cGUpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkgewogICAgICAg
ICBpZiAoZW50cnkudHlwZSAhPSB0eXBlKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBs
YXRmb3JtRGF0YSkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZl
cj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkuY29weVJlZigpOworICAgICAgICBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3Jt
RGF0YSkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpLmNvcHlSZWYoKTsKIAogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CkBAIC0yNjUsMTEgKzI2NSwxMSBAQCB2b2lkIFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpmb3JFYWNoQ3VzdG9tU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0
eXBlLAogICAgIH0KIH0KIAotdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRm
b3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYgZnVuY3Rp
b24pIGNvbnN0Cit2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmb3JFYWNoUGxhdGZvcm1TdHJp
bmdPckJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qgc3RkOjp2
YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYgZnVu
Y3Rpb24pIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkgewogICAgICAg
ICBhdXRvJiBkYXRhID0gZW50cnkucGxhdGZvcm1EYXRhOwotICAgICAgICBpZiAoKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5p
c051bGwoKSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0
YSkpCisgICAgICAgIGlmICgoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRhdGEpICYm
ICFzdGQ6OmdldDxTdHJpbmc+KGRhdGEpLmlzTnVsbCgpKSB8fCBzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZGF0YSkpCiAgICAgICAgICAgICBmdW5j
dGlvbihlbnRyeS50eXBlLCBkYXRhKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyYmU4MWQyOTM4YTNkYmQwOTAyNmNh
NmVjNjRhYzMyODdlNmFiYzAzLi45N2ZmOTg1ZTI0ZTExYjRjN2JiNDE0MzczN2YwMjg0MGMzNWZm
Y2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9t
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRh
LmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2Fy
ZEN1c3RvbURhdGEgewogcHVibGljOgpAQCAtNDgsNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICAg
ICAgU3RyaW5nIHR5cGU7CiAgICAgICAgIFN0cmluZyBjdXN0b21EYXRhOwotICAgICAgICBzdGQ6
OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4gcGxhdGZvcm1EYXRhOworICAgICAg
ICBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHBsYXRm
b3JtRGF0YTsKICAgICB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUGFzdGVib2FyZEN1c3RvbURh
dGEoKTsKQEAgLTY1LDExICs2NiwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJz
aXN0ZW5jZTo6RGVjb2RlciYmKTsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHR5cGUpIGNvbnN0OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAgICAgU3RyaW5nIHJlYWRT
dHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKIAogICAgIHZvaWQg
d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAg
ICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
ZGF0YSk7CisgICAgdm9pZCB3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICB2b2lkIHdyaXRlU3RyaW5nSW5DdXN0b21E
YXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKICAgICB2b2lk
IGNsZWFyKCk7CkBAIC04Myw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZm9yRWFjaFR5
cGUoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJikgY29uc3Q7CiAgICAgdm9pZCBmb3JF
YWNoUGxhdGZvcm1TdHJpbmcoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IFN0cmluZyYgZGF0YSk+JiYpIGNvbnN0OwotICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5n
T3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFy
aWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYpIGNvbnN0OworICAgIHZv
aWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4mIGRhdGEpPiYmKSBjb25zdDsKICAgICB2b2lkIGZvckVhY2hDdXN0b21TdHJpbmco
RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk+JiYp
IGNvbnN0OwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IDFjMDcyNmZlYjNlMDJhZWQzMmI0NmYy
NjJiY2RhMTY5ZDY3MmViMmMuLmM0MWUwODUyNDQ5NmM2N2YxZjE1MDM4ZmJiMjZlOWMyOWRhNjk4
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVn
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBA
IC0zMSwxMCArMzEsMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdl
Owogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwpAQCAt
NjIsNyArNjMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGludDY0X3QgYWRkVHlwZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2
NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwot
ICAgIHZpcnR1YWwgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgaW50NjRfdCBzZXRCdWZm
ZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRV
UkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgQ29sb3ImLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
ICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKaW5kZXggM2Y0ODMyYTVhNjU4YzFjYzdjMGFhMTNi
MjZlMGVhNDczM2U5ZDNiNy4uOWU3MmU0NGEyZWFjNGQ4ZWY3MzBiOTg3MWQwZWM1MDhlZDlmYWM0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50Rmls
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVy
LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtQ29udGVudEZpbHRlciB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgPSAwOwotICAgIHZpcnR1YWwgUmVm
PFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0ID0gMDsK
ICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgdmlydHVhbCBDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCA9IDA7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMxMDA3
NDI1MDAyNDNiYjQ2ZmY1OTg2ODYxZTg0YTJmZDk2ZS4uNzFkZmI5M2U1NzU2MGUzM2E3ZjZjODBj
MjBmOTJkNWIyY2FlYzEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Q
YXN0ZWJvYXJkLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwog
Y2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJk
SXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29u
dGVudDsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFz
dGVib2FyZCB7CiBwdWJsaWM6CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRo
ZXNlIG1ldGhvZHMgd2lsbCByZXR1cm4gMCBpZiBwYXN0ZWJvYXJkIG93bmVyc2hpcCBoYXMgYmVl
biB0YWtlbiBmcm9tIHVzLgogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3QgY29weShjb25zdCBT
dHJpbmcmIGZyb21QYXN0ZWJvYXJkKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldEJ1
ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgaW50NjRfdCBzZXRDb2xvcihjb25zdCBDb2xvciYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZl
cnRlci5jcHAKaW5kZXggNGNiMzMwMWU3ZGY3MDcxYzVkZDlmYzU5YmM1NzE4NWM0ZTkxNDc2OC4u
NjMxYWRlN2NjZjdhZDI5NjkzYTJlNzY1MWZlNmE5Y2RlYmQzNzczYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgY29u
c3QgUmVzb3VyY2VFcnJvciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0Vycm9yKCkgY29uc3QK
ICAgICByZXR1cm4gbV9wcmV2aWV3RXJyb3I7CiB9CiAKLWNvbnN0IFNoYXJlZEJ1ZmZlciYgUHJl
dmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAorY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3ByZXZpZXdEYXRhLmdldCgpOworICAgIHJldHVybiAqbV9wcmV2aWV3RGF0YS0+Z2V0
KCk7CiB9CiAKIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKQEAg
LTkwLDcgKzkwLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWluUmVzb3VyY2Uo
KQogICAgIH0pOwogfQogCi12b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmFwcGVuZEZyb21CdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmFwcGVu
ZEZyb21CdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IHdoaWxlIChidWZmZXIuc2l6ZSgpID4gbV9sZW5ndGhBcHBlbmRlZCkgewogICAgICAgICBhdXRv
IG5ld0RhdGEgPSBidWZmZXIuZ2V0U29tZURhdGEobV9sZW5ndGhBcHBlbmRlZCk7CkBAIC0yMjIs
NyArMjIyLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQcmV2aWV3
Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRT
dGFydENvbnZlcnRpbmcoKnRoaXMpOwogCiAgICAgaWYgKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5
KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCi0gICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVy
RGlkUmVjZWl2ZURhdGEoKnRoaXMsIG1fcHJldmlld0RhdGEuZ2V0KCkpOworICAgICAgICBjbGll
bnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCAqbV9wcmV2aWV3RGF0YS0+
Z2V0KCkpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNvbnZlcnRpbmcgfHwgIWhhc0Ns
aWVudChjbGllbnQpKQogICAgICAgICByZXR1cm47CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBQ
cmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBj
bGllbnQpCiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKCp0
aGlzKTsKIH0KIAotdm9pZCBQcmV2aWV3Q29udmVydGVyOjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6ZGVsZWdh
dGVEaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewog
ICAgIGF1dG8gcHJvdGVjdGVkVGhpcyB7IFJlZiB7ICp0aGlzIH0gfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCmluZGV4IDJhMzcyOTIyNzk5Y2U2YWZmYWFi
M2UxNDBkMTkwYmE2NGNmOGNlMmIuLjkyMDJlZGRkOWUxMDViMjczNWVkYzE0NmYyNjY0YzEzY2I5
YzM0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQxLDE1ICs0MiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hh
cmVkQnVmZmVyRGF0YVZpZXc7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogc3RydWN0IFBy
ZXZpZXdDb252ZXJ0ZXJDbGllbnQ7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyOwog
CiBzdHJ1Y3QgUHJldmlld1BsYXRmb3JtRGVsZWdhdGUgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3
UGxhdGZvcm1EZWxlZ2F0ZT4gewogICAgIHZpcnR1YWwgflByZXZpZXdQbGF0Zm9ybURlbGVnYXRl
KCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZFJl
Y2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRlbGVnYXRlRGlkRmluaXNoTG9hZGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVsZWdhdGVEaWRGYWlsV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiB9OwpA
QCAtNzIsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHByZXZp
ZXdGaWxlTmFtZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwcmV2aWV3VVRJ
KCkgY29uc3Q7CiAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgcHJldmlld0Vycm9yKCkgY29uc3Q7
Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyJiBwcmV2aWV3RGF0YSgpIGNvbnN0OworICAgIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHByZXZpZXdEYXRhKCkgY29uc3Q7CiAKICAgICB2b2lk
IGZhaWxlZFVwZGF0aW5nKCk7CiAgICAgdm9pZCBmaW5pc2hVcGRhdGluZygpOwpAQCAtOTQsNyAr
OTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNQbGF0Zm9ybVBhc3N3b3JkRXJyb3IoY29uc3Qg
UmVzb3VyY2VFcnJvciYpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBp
dGVyYXRlQ2xpZW50cyhUJiYgY2FsbGJhY2spOwotICAgIHZvaWQgYXBwZW5kRnJvbUJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGFwcGVuZEZyb21CdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkQWRkQ2xpZW50KFByZXZpZXdDb252
ZXJ0ZXJDbGllbnQmKTsKICAgICB2b2lkIGRpZEZhaWxDb252ZXJ0aW5nV2l0aEVycm9yKGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZEZhaWxVcGRhdGluZygpOwpAQCAtMTA2LDcg
KzEwOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVVubG9ja1dpdGhQYXNzd29yZChj
b25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlCi0gICAgdm9p
ZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAg
IHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JikgZmluYWw7CiAgICAgdm9pZCBkZWxlZ2F0ZURpZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsKICAg
ICB2b2lkIGRlbGVnYXRlRGlkRmFpbFdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikgZmlu
YWw7CiAKQEAgLTExOCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgICAgICBGaW5pc2hlZENvbnZl
cnRpbmcsCiAgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fcHJldmlld0RhdGE7Cisg
ICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcHJldmlld0RhdGE7CiAgICAgUmVz
b3VyY2VFcnJvciBtX3ByZXZpZXdFcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2lu
YWxSZXNwb25zZTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlVwZGF0aW5nIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmgKaW5kZXgg
MDRlYTM2ODA2OTJiMjUyYTE5ODljMjZjYTIwNDIxMjc3N2FhM2I3Yi4uOWNlZTkzMzIwYjIzOGI0
Y2Q3M2NkZDJlMDMwMmMzYmY0ZGFkNjhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFByZXZpZXdDb252ZXJ0ZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9y
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
c3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29u
dmVydGVyQ2xpZW50PiB7CiAgICAgdmlydHVhbCB+UHJldmlld0NvbnZlcnRlckNsaWVudCgpID0g
ZGVmYXVsdDsKQEAgLTQyLDcgKzQyLDcgQEAgc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQg
OiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVyQ2xpZW50PiB7CiAgICAgdmlydHVhbCB2
b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbFVwZGF0aW5nKFBy
ZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJE
aWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25z
dCBTaGFyZWRCdWZmZXImIG5ld0RhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0Nv
bnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBuZXdEYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252
ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsQ29udmVydGluZyhQcmV2aWV3Q29udmVy
dGVyJikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZp
ZXdDb252ZXJ0ZXJQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0Nv
bnZlcnRlclByb3ZpZGVyLmgKaW5kZXggODI3ODYzOTNmY2VkNzU0Yzg1ZjdiMjg5MTI1MmY1MTZi
ZWQwZDU0OS4uYjk4NmVlNDBkMTk3NTE3NGY1NGFkMjlhMTY4Y2FkZjE4OTQ1NmMzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgK
QEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFByZXZpZXdDb252
ZXJ0ZXJQcm92aWRlciA6IENhbk1ha2VXZWFrUHRyPFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcj4g
ewogICAgIHZpcnR1YWwgflByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcigpID0gZGVmYXVsdDsKIAot
ICAgIHZpcnR1YWwgdm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQ
cmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZm
ZXIqKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJl
dmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJikgPSAwOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDhlNjhlMzM3NzgxZmIyOWFk
MzljNTViOWFmZDM5MDAzNTM1Mzg1ZC4uOTdlZjZiZTRmODFmMWM0NTkyYzM1MjEwZDk3ZDlhNmMy
ODg1NTUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0z
Nyw2MyArMzcsNTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK0ZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCiB7CiAgICAgYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi1TaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK0ZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IHNpemUpCiB7CiAgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGRhdGEpLCBzaXplKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxl
RGF0YSkKICAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5h
cHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpfSk7CisgICAg
bV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURh
dGEpKSB9KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyJiYgcHJvdmlkZXIpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXpl
KHByb3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7
IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCi1TaGFy
ZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBk
YXRhKQogewogICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAotI2lmIFVTRShHU1RSRUFN
RVIpCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25l
ZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIobWFwcGVkQnVmZmVyKSk7CisgICAgYXBwZW5kKFdU
Rk1vdmUoYnVmZmVyKSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBl
ZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCi0gICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNp
emUoKSkKKyNpZiBVU0UoR1NUUkVBTUVSKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVk
QnVmZmVyKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRl
KCZtYXBwZWRCdWZmZXIpfSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcihtYXBwZWRCdWZmZXIpKTsKIH0KLSNlbmRpZgogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5
VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0gICAgaWYgKG1heVVzZUZpbGVN
YXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAgICAgICAgYm9vbCBtYXBwaW5n
U3VjY2VzczsKLSAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURh
dGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Ci0gICAgICAgIGlm
IChtYXBwaW5nU3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVk
QnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Ci0gICAgfQotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Ci19Ci0KLVJlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikK
K0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoR3N0TWFwcGVk
T3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKKyAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6
ZSgpKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZl
Y3RvcikpKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUo
Jm1hcHBlZEJ1ZmZlcikgfSk7CiB9CisjZW5kaWYKIAotc3RhdGljIFZlY3Rvcjx1aW50OF90PiBj
b21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3Im
IHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNl
Z21lbnRzRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rv
ciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5l
ZERhdGE7CiAgICAgY29tYmluZWREYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CkBA
IC0xMDMsMzMgKzkyLDE5IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRz
RGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJuIGNv
bWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVu
dCgpIGNvbnN0CitSZWY8U2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjptYWtl
Q29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBGSVhNRTog
V2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFzc2Vy
dGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0
ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGhtcyBz
aW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgPSB0
cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAgICAgIHJl
dHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBSZWYgeyAqc3Rh
dGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Kj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEp
CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21l
bnQuY29weVJlZigpKTsKICAgICBhdXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0Rh
dGEobV9zZWdtZW50cywgbV9zaXplKTsKLSAgICBtX3NlZ21lbnRzLmNsZWFyKCk7Ci0gICAgbV9z
ZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERh
dGEpKX0pOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKLSAgICBBU1NFUlQo
aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci19Ci0KLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZl
cjo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKLSAgICBBU1NF
UlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci0gICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2Vn
bWVudC0+ZGF0YSgpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNv
bWJpbmVkRGF0YSkpOwogfQogCi1WZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0
YSgpIGNvbnN0CitWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weURh
dGEoKSBjb25zdAogewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGRhdGEucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShzaXplKCkpOwpAQCAtMTM5LDcgKzExNCw3IEBAIFZlY3Rvcjx1aW50
OF90PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKICAgICByZXR1cm4gZGF0YTsKIH0K
IAotVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKQorVmVjdG9yPHVpbnQ4
X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkKIHsKICAgICBpZiAobV9zZWdt
ZW50cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xNTQsMTMgKzEyOSwxMyBA
QCBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCiAgICAgcmV0dXJuIGNv
bWJpbmVkRGF0YTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZpZXcgU2hhcmVkQnVmZmVyOjpnZXRT
b21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0CitTaGFyZWRCdWZmZXJEYXRhVmlldyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0CiB7
CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogZWxlbWVudCA9IGdldFNlZ21lbnRG
b3JQb3NpdGlvbihwb3NpdGlvbik7CiAgICAgcmV0dXJuIHsgZWxlbWVudC0+c2VnbWVudC5jb3B5
UmVmKCksIHBvc2l0aW9uIC0gZWxlbWVudC0+YmVnaW5Qb3NpdGlvbiB9OwogfQogCi1jb25zdCBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yRW50cnkqIFNoYXJlZEJ1ZmZlcjo6Z2V0U2Vn
bWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGlvbikgY29uc3QKK2NvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yRW50cnkqIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQocG9zaXRpb24gPCBtX3NpemUpOwogICAgIGF1dG8gY29tcGFyYXRvciA9
IFtdKGNvbnN0IHNpemVfdCYgcG9zaXRpb24sIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkm
IGVudHJ5KSB7CkBAIC0xNzEsNyArMTQ2LDcgQEAgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudFZlY3RvckVudHJ5KiBTaGFyZWRCdWZmZXI6OmdldFNlZ21lbnRGb3JQb3NpdGlvbigKICAg
ICByZXR1cm4gZWxlbWVudDsKIH0KIAotU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmco
KSBjb25zdAorU3RyaW5nIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29u
c3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAgICAgZm9yRWFjaFNlZ21l
bnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKQEAgLTE4MSw3ICsxNTYsMjIgQEAgU3RyaW5nIFNoYXJl
ZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRv
U3RyaW5nKCk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVh
dGVBcnJheUJ1ZmZlcigpIGNvbnN0CitzaXplX3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6c2l6
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2l6ZTsKK30KKworYm9vbCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjppc0VtcHR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIXNpemUoKTsKK30KKwor
Ym9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAg
IHJldHVybiBtX2NvbnRpZ3VvdXM7Cit9CisKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewogICAgIGF1dG8g
YXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwgMSk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewpAQCAt
MjAwLDY4ICsxOTAsNjUgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKICAgICByZXR1cm4gYXJyYXlCdWZmZXI7CiB9CiAKLXZv
aWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQp
OwogICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0
YS5tX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0
YS5tX3NlZ21lbnRzKSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHttX3Np
emUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51bmNo
ZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAg
ICAgIG1fc2l6ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNTRVJU
KGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5k
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewot
ICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAg
bV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZl
Y3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50Ojpj
cmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBtX3NpemUgKz0gbGVuZ3RoOwogICAgIEFT
U0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFw
cGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVl
bkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUo
KTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdt
ZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRhdGFTaXplOwog
ICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZm
ZXI6OmNsZWFyKCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOworfQorCit2b2lkIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNsZWFyKCkKIHsKICAgICBtX3NpemUgPSAwOwogICAgIG1fc2VnbWVudHMuY2xl
YXIoKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLVJlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CitSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiB7Ci0gICAgUmVm
PFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7CisgICAg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNsb25lID0gYWRvcHRSZWYoKm5ldyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKTsKICAgICBjbG9uZS0+bV9zaXplID0gbV9zaXplOwogICAgIGNsb25l
LT5tX3NlZ21lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkpOwog
ICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpCi0gICAgICAgIGNsb25l
LT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7ZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVt
ZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hl
Y2tlZEFwcGVuZCh7IGVsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlS
ZWYoKSB9KTsKICAgICBBU1NFUlQoY2xvbmUtPmludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAg
IEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CiAK
LVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92
aWRlciYmIHByb3ZpZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihXVEZNb3ZlKHByb3ZpZGVyKSkpOwotfQotCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNl
Z21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBh
cHBseSkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQo
Y29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkg
Y29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsKICAgICBmb3IgKGF1dG8m
IHNlZ21lbnQgOiBzZWdtZW50cykKICAgICAgICAgYXBwbHkoU3BhbiB7IHNlZ21lbnQuc2VnbWVu
dC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSB9KTsKIH0KIAotYm9vbCBTaGFyZWRC
dWZmZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25z
dAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29u
c3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKIHsKICAgICBpZiAocHJlZml4LmVtcHR5KCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjgzLDcgKzI3MCw3IEBAIGJvb2wgU2hhcmVkQnVmZmVy
OjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnJlYWQo
c2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKK1ZlY3Rvcjx1aW50OF90PiBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNv
bnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgaWYgKG9mZnNldCA+PSBzaXpl
KCkpCkBAIC0zMTAsMTIgKzI5NywxMiBAQCBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpy
ZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAgICAgcmV0dXJuIGRhdGE7
CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVf
dCBsZW5ndGgpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lk
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIHsKICAgICByZXR1cm4gY29weVRv
KGRlc3RpbmF0aW9uLCAwLCBsZW5ndGgpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRv
KHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAor
dm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNp
emVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxlbmd0aCAr
IG9mZnNldCA8PSBzaXplKCkpOwogICAgIGlmIChvZmZzZXQgPj0gc2l6ZSgpKQpAQCAtMzUzLDE0
ICszNDAsMTMgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwg
c2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKICAgICB9CiB9CiAKLWJvb2wgU2hh
cmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0g
ICAgcmV0dXJuIGl0ICE9IGVuZCgpICYmICsraXQgPT0gZW5kKCk7CisgICAgcmV0dXJuIG1fc2Vn
bWVudHMuc2l6ZSgpID09IDE7CiB9CiAKICNpZiBBU1NFUlRfRU5BQkxFRAotYm9vbCBTaGFyZWRC
dWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogewogICAgIHNpemVfdCBwb3Np
dGlvbiA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykgewpA
QCAtMzcyLDcgKzM1OCw1NyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3Rl
bnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNvbnN0IHVpbnQ4X3Qq
IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAorU2hhcmVkQnVmZmVyOjpT
aGFyZWRCdWZmZXIoKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1NoYXJlZEJ1
ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1f
c2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1v
dmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworU2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY29udGlndW91
c0J1ZmZlcikKK3sKKyAgICBBU1NFUlQoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgp
IHx8IGNvbnRpZ3VvdXNCdWZmZXItPmlzRW1wdHkoKSk7CisgICAgbV9zaXplID0gY29udGlndW91
c0J1ZmZlci0+c2l6ZSgpOworICAgIGlmIChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50
KCkpCisgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgY29udGlndW91c0J1ZmZlci0+bV9z
ZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVl
OworfQorCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmIGRhdGEpCisgICAgOiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUoZGF0YSkp
Cit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZp
bGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQoreworICAgIGlmIChtYXlVc2VGaWxlTWFwcGlu
ZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7CisgICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nl
c3M7CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZp
bGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOworICAgICAgICBpZiAobWFw
cGluZ1N1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZl
cihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOworICAgIH0KKyAgICByZXR1cm4gY3JlYXRlRnJv
bVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKK30KKworY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVy
OjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEo
KTsKK30KKworY29uc3QgY2hhciogU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30K
KworY29uc3QgdWludDhfdCogRGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogewogICAgIGF1dG8g
dmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCkBA
IC0zOTEsMTMgKzQyNywxMyBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0
YWJsZURhdGEpOwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5z
TWFwcGVkRmlsZURhdGEoKSBjb25zdAorYm9vbCBEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRG
aWxlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Rmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKICNpZiAhVVNF
KENGKQotdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QK
K3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBj
b25zdAogewogfQogI2VuZGlmCkBAIC00MDcsNyArNDQzLDcgQEAgV1RGOjpQZXJzaXN0ZW5jZTo6
RGVjb2RlciBTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAogICAgIHJldHVybiB7eyByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXplKCkgfX07CiB9CiAKLWJv
b2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNv
bnN0Citib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKHRoaXMgPT0gJm90aGVy
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ1Niw3ICs0OTIsNyBAQCBib29sIFNoYXJlZEJ1
ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgp
IGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlz
aXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApAQCAtNDc1LDcgKzUx
MSw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAg
ICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFy
ZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVm
ZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldp
dGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50
KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlv
bldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5z
aXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00OTksMTIgKzUzNSwxNyBAQCBjb25z
dCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKK2NvbnN0
IGNoYXIqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKwogUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigp
IGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21l
bnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+
IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERh
dGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBkYXRhID0gZGF0YSgpXSgp
IHsgcmV0dXJuIGRhdGE7IH0sCi0gICAgICAgIFtzZWdtZW50LCBzaXplID0gc2l6ZSgpXSgpIHsg
cmV0dXJuIHNpemU7IH0KKyAgICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsg
fQogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4
IGYyM2Y1ZDY5YWQzMmVkNjQwYjk1NzdiMmU2YzQ1NDkxODM5MzY4YWQuLjliZjc5N2MxYzE2OTk1
YzFlYTI2YzMwYTE1ZmEzMDVhMDExYTEzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtNjIsMTQ2ICs2MiwxMzMgQEAgY2xhc3MgRGVjb2RlcjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRC
dWZmZXJEYXRhVmlldzsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworLy8gRGF0YSB3cmFwcGVk
IGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSBy
ZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCisvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUg
ZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCitjbGFzcyBEYXRhU2VnbWVudCA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcik7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEp
KSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgIGVudW0gY2xhc3Mg
TWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHN0YXRpYyBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
TW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMp
OwotCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4m
Jik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEpCisgICAgeworICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKKyAgICB9CiAKLSNp
ZiBVU0UoRk9VTkRBVElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBj
b25zdDsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsK
LSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lk
IGFwcGVuZChOU0RhdGEgKik7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAg
c3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0
YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0K
ICNlbmRpZgotCiAjaWYgVVNFKEdMSUIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShHQnl0ZXMqKTsKLSAgICBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7
CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRh
dGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9
CiAjZW5kaWYKLQogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNl
Z21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgot
ICAgIC8vIENhbGxpbmcgZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUg
Y29waWVkIGludG8gb25lIHNlZ21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8g
SXRlcmF0ZSB0aGUgc2VnbWVudHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAg
ICAvLyBGSVhNRTogQXVkaXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVw
bGFjZSB0aGVtIHdpdGggaXRlcmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rv
cjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OwotICAgIFZlY3Rvcjx1aW50OF90PiByZWFkKHNp
emVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwotCi0gICAgLy8gU2ltaWxhciB0byBj
b3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3Rl
YWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgotICAg
IFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21l
bnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAKLSAgICAvLyBDcmVh
dGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50
cyB0byB0aGF0Ci0gICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBi
dWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZTsgfQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUo
KTsgfQotCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9pZCBh
cHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhf
dD4mJik7Ci0KLSAgICB2b2lkIGNsZWFyKCk7CisgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAgICAg
ICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAgICAgRnVuY3Rpb248c2l6
ZV90KCk+IHNpemU7CisgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25z
dDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29u
c3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNp
emVfdCBsZW5ndGgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQ
cm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdU
Rk1vdmUocHJvdmlkZXIpKSk7IH0KIAotICAgIC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdt
ZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBv
dGhlciBvYmplY3RzLgotICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxv
Y2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KLSAgICBjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewotICAgIHB1YmxpYzoKLSAgICAgICAg
V0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgICAgICBXRUJD
T1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVTRShGT1VOREFUSU9OKQorICAg
IFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0Owor
I2VuZGlmCiAKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1
aW50OF90PiYmIGRhdGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQo
KTsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUo
ZGF0YSkpKTsKLSAgICAgICAgfQorICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNv
bnN0OwogCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQog
I2lmIFVTRShDRikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFp
blB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVu
dChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0
YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNl
Z21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdt
ZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdU
Rk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4m
JiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkp
KTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZl
cj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0K
ICNlbmRpZgotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdt
ZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92
aWRlcikKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQog
Ci0gICAgICAgIHN0cnVjdCBQcm92aWRlciB7Ci0gICAgICAgICAgICBGdW5jdGlvbjxjb25zdCB1
aW50OF90KigpPiBkYXRhOwotICAgICAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7Ci0g
ICAgICAgIH07Ci0KLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3Zp
ZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShwcm92aWRlcikpKTsgfQotCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgICAgIFJldGFpblB0
cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICAgICAgYm9vbCBj
b250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBE
YXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50
OF90PiwKICNpZiBVU0UoQ0YpCi0gICAgICAgIERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFS
ZWY+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkp
IHsgfQorICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShHTElC
KQotICAgICAgICBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAg
ICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQdHI8
R0J5dGVzPiwKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdtZW50
KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2lt
bXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRP
d25lZEJ1ZmZlcj4sCisjZW5kaWYKKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEs
CisgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CisjaWYgIVVTRShGT1VOREFUSU9OKQorICAgIGZyaWVuZCBj
bGFzcyBTaGFyZWRCdWZmZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKICNlbmRpZgotICAgICAgICBE
YXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAg
ICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21l
bnQoUHJvdmlkZXImJiBwcm92aWRlcikKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdU
Rk1vdmUocHJvdmlkZXIpKSB7IH0KK307CisKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKTsgfQorICAgIHN0
YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0
aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIHN0YXRpYyBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92
ZShidWZmZXIpKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsgfQorICAgIHN0YXRpYyBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHBy
b3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RG
TW92ZShwcm92aWRlcikpKTsgfQogCi0gICAgICAgIHN0ZDo6dmFyaWFudDxWZWN0b3I8dWludDhf
dD4sCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5T
QXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhKik7CisjZW5kaWYK
ICNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRh
dGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5
dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShHQnl0ZXMqKTsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAg
ICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRC
dWZmZXImKTsKICNlbmRpZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEs
Ci0gICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwotICAgICAgICBmcmllbmQg
Y2xhc3MgU2hhcmVkQnVmZmVyOwotICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVp
bnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4
X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisKKyAgICAvLyBT
aW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhl
IGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGlzIG5vdCBzaGFyZWQpLgorICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOworCisg
ICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0
IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgorICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25z
dDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKLSAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25zdDsKIAotICAgIHZvaWQgZm9yRWFj
aFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+
JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4m
IHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnRpZ3VvdXMoKSBj
b25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBj
b3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGlu
YXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29w
eVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25z
dDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rp
b248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZp
eCkgY29uc3Q7CisKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50
OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9y
RW50cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIxMCw1NiArMTk3LDE3
NyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBWZWN0b3I8RGF0YVNl
Z21lbnRWZWN0b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJh
dG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9CiAgICAgRGF0
YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vn
bWVudHMuZW5kKCk7IH0KLSAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKIAogICAgIC8vIGJlZ2luIGFu
ZCBlbmQgdGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRpbWUuCi0gICAgU2hh
cmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3Qg
cG9zaXRpb24pIGNvbnN0OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhp
bnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpE
ZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9y
PT0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
IW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVk
QnVmZmVyJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQorICAgIFdFQkNPUkVf
RVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CiAKLXByaXZh
dGU6Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KFZlY3Rvcjx1aW50OF90PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdt
ZW50OjpQcm92aWRlciYmKTsKK3Byb3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVm
ZmVyOworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29sIG1fY29u
dGlndW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwg
c2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6
OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNFKENGKQotICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgogI2lmIFVTRShHTElCKQot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEdCeXRlcyopOwogI2VuZGlmCiAjaWYgVVNF
KEdTVFJFQU1FUikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZm
ZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9
OwogCi0gICAgdm9pZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKK3ByaXZhdGU6Cisg
ICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBlbmQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBVU0Uo
Rk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7Cisj
ZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRh
UmVmKTsKKyNlbmRpZgogCi0gICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEg
VmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRC
dWZmZXIuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjbGVhcigpOwogCisgICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRv
IGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0
YWtlRGF0YSgpOwogICAgIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkqIGdldFNlZ21lbnRG
b3JQb3NpdGlvbihzaXplX3QgcG9zaXRpdGlvbikgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpOwotCi0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLSAgICBtdXRhYmxlIERhdGFTZWdtZW50
VmVjdG9yIG1fc2VnbWVudHM7Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG11dGFibGUgYm9v
bCBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50IHsgZmFsc2UgfTsKICAgICBib29sIGlu
dGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3Q7CiAjZW5kaWYKIH07CiAKLWlubGluZSBWZWN0b3I8
dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCisvLyBBIFNoYXJlZEJ1ZmZlciBp
cyBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGlyZWN0bHkgYWNjZXNz
IGl0cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhvZHMuCitjbGFzcyBT
aGFyZWRCdWZmZXIgOiBwdWJsaWMgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB7CitwdWJsaWM6Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAo
IXNpemVvZi4uLihBcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcigpKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9
PSAxCisgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50
Pj4gJiYuLi4pKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIGF1dG8gYnVmZmVyID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9y
d2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBX
RUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90ICpkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OworCisgICAgZW51
bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0g
TWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRp
ZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBj
cmVhdGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShHTElCKQorICAgIFdFQkNPUkVf
RVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNlbmRpZgorCitw
cml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdt
ZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKTsKK307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRl
ZmF1bHQ7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgeworICAgICAgICAvLyBXZSBkbyBub3Qgd2Fu
dCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFzIGFs
bCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAgICAgLy8g
b25jZSBjcmVhdGVkLgorICAgICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPmhhc09uZVJlZigp
KSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoKmJ1ZmZlcik7CisgICAgfQorICAg
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJl
ZmVyZW5jZSB0byB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhcyBhbGwgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4K
KyAgICAgICAgaWYgKGJ1ZmZlci0+aGFzT25lUmVmKCkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVy
ID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlci5nZXQoKSkpOworICAgIH0KKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUuLi4gQXJncz4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKEFyZ3MmJi4uLiBhcmdz
KQorICAgICAgICA6IG1fYnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAg
ZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29u
c3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biAhbV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAgIHZv
aWQgcmVzZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKQorICAg
IHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgfQorCisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyOyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsgfQorICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlKCkK
KyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAgICByZXR1cm4gbV9idWZmZXIu
cmVsZWFzZU5vbk51bGwoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBlbnN1cmVCdWZm
ZXIoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgICAgIG1fYnVmZmVy
ID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgfQorICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKK307CisKK2lubGluZSBWZWN0b3I8dWlu
dDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmICho
YXNPbmVSZWYoKSkKICAgICAgICAgcmV0dXJuIHRha2VEYXRhKCk7CkBAIC0yNjgsMTcgKzM3Niwx
NyBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQog
CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0g
ICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYs
IHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdT
aXplID0gc3RkOjpudWxsb3B0KTsKKyAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNl
Z21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhj
b25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKICAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0OwogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25z
dCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSgpKTsgfQorICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBj
b25zdDsKICAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsK
ICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEo
KSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9zZWdt
ZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBjb25z
dCBzaXplX3QgbV9zaXplOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcAppbmRleCBjZGI2ZTcwMzQwNGQ0MjZkZDIxYjQ3OWZh
ODljMGRhOWI4YzQ5ZjhlLi45ZDA1NWNlMjdkODhjM2Q2MmU1YmQxY2Q0NmFkOTFmNWNjNDMxZjQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1Jl
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVO
QUJMRShNSFRNTCkKIAotU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRv
cikKK1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9y
KQogICAgIDogbV9pdGVyYXRvckN1cnJlbnQoYnVmZmVyLT5iZWdpbigpKQogICAgICwgbV9pdGVy
YXRvckVuZChidWZmZXItPmVuZCgpKQogICAgICwgbV9zZWdtZW50KG1faXRlcmF0b3JDdXJyZW50
ICE9IG1faXRlcmF0b3JFbmQgPyBtX2l0ZXJhdG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0YSgpIDog
bnVsbHB0cikKQEAgLTQ0LDcgKzQ0LDcgQEAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWMKIHsKIH0K
IAotU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJl
ZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCitTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
YnVmZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVudChi
dWZmZXItPmJlZ2luKCkpCiAgICAgLCBtX2l0ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAg
LCBtX3NlZ21lbnQobV9pdGVyYXRvckN1cnJlbnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRlcmF0
b3JDdXJyZW50LT5zZWdtZW50LT5kYXRhKCkgOiBudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKaW5kZXggNWQ0ZTZmZWU1ODJj
NjYxNmZkMDdlMzk5NGZmNzVjOGYwN2EyZmNlMS4uMWM2NDA4ZDRjNzM2YTFjNGE0NWNlZTdiM2Y2
OTY1N2JjOWEyNjE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXJDaHVua1JlYWRlci5oCkBAIC00MSw4ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgewogcHVibGlj
OgotICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFZlY3Rv
cjxjaGFyPiYgc2VwYXJhdG9yKTsKLSAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRC
dWZmZXIqLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpOworICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRv
cik7CisgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcios
IGNvbnN0IGNoYXIqIHNlcGFyYXRvcik7CiAKICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBW
ZWN0b3I8Y2hhcj4mKTsKICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBjaGFyKik7CkBAIC01
OCw4ICs1OCw4IEBAIHB1YmxpYzoKICAgICBzaXplX3QgcGVlayhWZWN0b3I8dWludDhfdD4mLCBz
aXplX3QpOwogCiBwcml2YXRlOgotICAgIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6
OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JDdXJyZW50OwotICAgIGNvbnN0IFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JFbmQ7CisgICAg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9y
IG1faXRlcmF0b3JDdXJyZW50OworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yRW5kOwogICAgIGNvbnN0
IHVpbnQ4X3QqIG1fc2VnbWVudCB7IG51bGxwdHIgfTsKICAgICBzaXplX3QgbV9zZWdtZW50SW5k
ZXggeyAwIH07CiAgICAgVmVjdG9yPGNoYXI+IG1fc2VwYXJhdG9yIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKaW5kZXggYjJkN2E1NTBk
NDYwZTk0Y2QzMTUxMzRhMzE5NWJjZDkxYzdiNzg5NC4uYTRiNGJiMTA0YjRkODQwMTViOGFhNWI1
M2U3ZGZhNzg4Y2VkMjVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3Rh
dGljUGFzdGVib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFz
dGVib2FyZC5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0
ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9j
dXN0b21EYXRhLndyaXRlU3RyaW5nKHR5cGUsIHZhbHVlKTsKIH0KIAotdm9pZCBTdGF0aWNQYXN0
ZWJvYXJkOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGRhdGEpCit2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5
cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgbV9ub25EZWZh
dWx0RGF0YVR5cGVzLmFkZCh0eXBlKTsKICAgICBtX2N1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUs
IFdURk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3Rh
dGljUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2Fy
ZC5oCmluZGV4IGMwOWI2ZGUzMWYyZWRlYmUwMTg4ZGM5YzQ2NmEyNzFlMWI4YjllMTQuLmVkZDcx
MzYyM2YwNmQyMmIzOGU4MzJhMjgzN2ZlNjY5OTlkZmQ3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBTdGF0aWNQYXN0ZWJvYXJkIGZpbmFsIDogcHVibGljIFBhc3RlYm9h
cmQgewogcHVibGljOgpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHJlYWRT
dHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBmaW5hbDsKIAogICAgIHZvaWQg
d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpIGZpbmFs
OwotICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhKTsKKyAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdJbkN1
c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHZv
aWQgY2xlYXIoKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5n
SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaApp
bmRleCA2ODc5NTkwMGM1YWRmOWNjOTA0NWUwZWFiYjIyYjE4ZmE2Njk2MzE0Li4xZDY1YmM0MDNh
ZDg1MjQzYzY3MjVlNzA0NDhkNmNkYWRjY2NjZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogc3RydWN0IE5vd1BsYXlpbmdJbmZvQXJ0d29yayB7CiAgICAgU3RyaW5nIHNy
YzsKICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VE
YXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CiAKICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm93UGxheWluZ0luZm9BcnR3b3JrJiBvdGhlcikgY29u
c3QKICAgICB7CkBAIC02Nyw3ICs2Nyw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGlu
ZSBzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gTm93UGxheWluZ0luCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGltYWdlRGF0
YSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAppbmRleCBl
OGIxOWJmMzRlYmEyM2I4NTcyMDdiZTg4Y2UxYjQ1YmY4ZjJjY2MzLi5mMzIxNDI5NTFiMTc5OTZl
NmNlMTY3NTYzMTZiZmQ0NzNmYWE0ZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCkBAIC0x
MzAsNyArMTMwLDcgQEAgY2xhc3MgQXVkaW9GaWxlUmVhZGVyV2ViTURhdGEgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogI2lmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCiAgICAgUmVmPEF1ZGlvVHJhY2tQcml2YXRlV2ViTT4gbV90cmFj
azsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5
MWY5YTRkM2FiMzZlMmEwYzA4MTJjOTRlMTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3
ZTUxMDg5YjU3MTlmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3
ICszNDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0lu
Zm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRp
bWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8u
YXJ0d29yayAmJiBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAg
YXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdv
cmstPmltYWdlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWlu
Z0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtN
SU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1l
ZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIo
bm93UGxheWluZ0luZm8uYXJ0d29yay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJD
Ri5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5k
ZXggNmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uY2M5YTY3NTU5ZmNj
YjlkNWQzMDM3NGY4N2I1OTA1ZTc5ODMzZjE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQor
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYg
ZGF0YSkKIHsKICAgICBhcHBlbmQoZGF0YSk7CiB9CkBAIC01NSwxMiArNTUsMTIgQEAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogfQogI2Vu
ZGlmCiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YVJlZiBk
YXRhKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNyZWF0ZShDRkRhdGFSZWYgZGF0YSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCdWZmZXIoZGF0YSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoZGF0YSkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5l
ZWRlZFNvb24oKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5
Tm90TmVlZGVkU29vbigpIGNvbnN0CiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IG1f
c2VnbWVudHMpIHsKICAgICAgICAgaWYgKGVudHJ5LnNlZ21lbnQtPmhhc09uZVJlZigpKSB7CkBA
IC03MCw5ICs3MCw5IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29v
bigpIGNvbnN0CiAgICAgfQogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJl
ZiBkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRh
dGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAg
ICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdt
ZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAg
ICBtX3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVy
LmgKaW5kZXggMDc5N2RmYmU4ZDAxOGJlNjM2MTc0NGM1OGY4OTJkZDU2ZWQ2ODljNS4uY2JlODc3
MWE0NWQ4NjJjYjVhYjA1ZWNhMzk5OTI3ZTA3ODM4ZjU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2
ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlz
aGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2Vt
ZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICAgICBDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBib29sIGlzUmVxdWlyZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXIubW0KaW5kZXggNDI5MGRiMTI4ZDAwMGE0MGVlZjcwZmQyOTQxZDYzNDQ5MDQ2ZGUwMy4uMmVm
MjcwMWZlNjc4YmY5YjkyZGIyMTJiYmVhNWM5MTVhM2ZjM2EyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIubW0KQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250
ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQogICAgIHNlbWFwaG9yZS53YWl0KCk7CiB9
CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBs
YWNlbWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE5ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAogewogICAgIEFT
U0VSVChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1f
cmVwbGFjZW1lbnREYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCmluZGV4IDA2
OGNkY2IzODNmNDIzNjVhYzMyNjRlMjI5YTZkNjNiYzJiNGFiZDYuLjY3OWFlOTMyOTUxN2UxZjM5
NDNiYTU3NjJhYzhmNTZlODYwYzhjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaApAQCAt
NDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0Rh
dGEoKSBvdmVycmlkZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1l
bnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQog
ICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92
ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCmluZGV4IGI0NjFmOTc1
MzZkZTNhMTU4MTNhNTgyN2I4NjcxMzhiOTZkNGYzOGMuLjFjOTYwNDcxNmI0MjY5M2Q1ZTQ2YzJl
MjNlOTQxZGEwMGM4M2U0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCkBAIC0xMDks
NyArMTA5LDcgQEAgdm9pZCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6ZmluaXNoZWRB
ZGRpbmdEYXRhKCkKICAgICB1cGRhdGVGaWx0ZXJTdGF0ZSgpOwogfQogCi1SZWY8U2hhcmVkQnVm
ZmVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29u
c3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRh
KCkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJv
YXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29j
b2EubW0KaW5kZXggNmYyOGU4MjQzNjBjY2QzMDg2YzAzMThmYWU0MDk4ZjFlZGUyOGUyNS4uYjgx
NzA4MTdjZWM1OWUyMmQzYzBlOWE3OGYxNDZjMDMzZTRjMTY2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpAQCAtNDcsNyArNDcsNyBA
QCBzdGF0aWMgTlNCaXRtYXBJbWFnZUZpbGVUeXBlIGJpdG1hcFBOR0ZpbGVUeXBlKCkKIH0KICNl
bmRpZiAvLyBQTEFURk9STShNQUMpCiAKLS8vIE1ha2luZyB0aGlzIG5vbi1pbmxpbmUgc28gdGhh
dCBXZWJLaXQgMidzIGRlY29kaW5nIGRvZXNuJ3QgaGF2ZSB0byBpbmNsdWRlIFNoYXJlZEJ1ZmZl
ci5oLgorLy8gTWFraW5nIHRoaXMgbm9uLWlubGluZSBzbyB0aGF0IFdlYktpdCAyJ3MgZGVjb2Rp
bmcgZG9lc24ndCBoYXZlIHRvIGluY2x1ZGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci5oLgogUGFz
dGVib2FyZFdlYkNvbnRlbnQ6OlBhc3RlYm9hcmRXZWJDb250ZW50KCkgPSBkZWZhdWx0OwogUGFz
dGVib2FyZFdlYkNvbnRlbnQ6On5QYXN0ZWJvYXJkV2ViQ29udGVudCgpID0gZGVmYXVsdDsKIApA
QCAtMjExLDkgKzIxMSw5IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVn
YWN5VW5zYWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQor
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0
bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBh
bGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0
aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCmluZGV4IDllZTBjMGI1
NWQ3OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLjI0MGEzNjdiZTJhYzc2NWI3OGJkZTcx
MDA0NjY2NGJjYjFjZTU0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEgQEAKICNpbXBvcnQgPHd0
Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNvcmVTaGFyZWRCdWZmZXJE
YXRhIDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246
KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOworLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRh
U2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNp
emU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSB7Ci0g
ICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IF9kYXRh
U2VnbWVudDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQ+IF9kYXRhU2Vn
bWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJbnRlZ2VyIF9zaXplOwog
fQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxvY107
CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50
ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQg
cG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCiB7CiAg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC04
OCwxMiArODgsMTIgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkKK1JlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoTlNEYXRhICpkYXRh
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihicmlkZ2VfY2FzdChk
YXRhKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIo
YnJpZGdlX2Nhc3QoZGF0YSkpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0Rh
dGEgKmRhdGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRh
dGEpCiB7CiAgICAgcmV0dXJuIGFwcGVuZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CkBAIC0xMDUs
MTAgKzEwNSw4IEBAIFJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRh
KCkgY29uc3QKIAogUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRh
dGEoKSBjb25zdAogewotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwogICAgIGlmICghbV9z
ZWdtZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxs
cHRyLCBudWxscHRyLCAwKSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwog
ICAgIHJldHVybiBicmlkZ2VfY2FzdChtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmNyZWF0ZU5TRGF0
YSgpKTsKIH0KIApAQCAtMTE5LDE0ICsxMTcsMTQgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmV0YWluUHRyPE5TQXJyYXk+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAorUmV0YWluUHRyPE5TQXJyYXk+IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKIHsKICAgICByZXR1cm4g
Y3JlYXRlTlNBcnJheShtX3NlZ21lbnRzLCBbXSAoYXV0byYgc2VnbWVudCkgewogICAgICAgICBy
ZXR1cm4gc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKTsKICAgICB9KTsKIH0KIAotUmV0
YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkg
Y29uc3QKK1JldGFpblB0cjxOU0RhdGE+IERhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25z
dAogewogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2Nd
IGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5z
dGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3Rh
bmNlLmgKaW5kZXggZmJjMjgzZmJjMzM2OWJmODI3ZTMxNjk5NGM0Yzk0ZTA2MzYzY2I4MS4uMmRl
NDE5MzRkYTE5ODc5ZDc1YzBkZjhhODllNjRlNTk5YzI5YWUwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCkBAIC00Niw3
ICs0Niw3IEBAIGNsYXNzIExvZ2dlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgQ0RNSW5z
dGFuY2VTZXNzaW9uOwogc3RydWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb247CiAKQEAgLTU0
LDcgKzU0LDcgQEAgY2xhc3MgQ0RNSW5zdGFuY2VDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8Q0RNSW5zdGFuY2VDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5j
ZUNsaWVudCgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCB1bnJlcXVlc3RlZEluaXRp
YWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNl
aXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwog
fTsKIAogLy8gSmF2YVNjcmlwdCdzIGhhbmRsZSB0byBhIENETUluc3RhbmNlLCBtdXN0IGJlIHVz
ZWQgZnJvbSB0aGUKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICB2aXJ0
dWFsIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVu
dFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxDRE1J
bnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5o
CmluZGV4IDM3Y2QwN2M3YmYyZGM3NWU0MWZkNWM2YzdkZWNmNDNlMTAzOWUxMTQuLmQyNTkyMjVi
YTllMDJhNjRkMGNlY2Q2MTUxZmRmOTNmNGYyNDY2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5o
CkBAIC00MywxNiArNDMsMTYgQEAgY2xhc3MgTG9nZ2VyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxD
RE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0
YW5jZVNlc3Npb25DbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB1c2luZyBLZXlTdGF0dXMgPSBD
RE1LZXlTdGF0dXM7Ci0gICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFp
cjxSZWY8U2hhcmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47CisgICAgdXNpbmcgS2V5U3RhdHVzVmVj
dG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIEtleVN0
YXR1cz4+OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0
b3ImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNlbmRN
ZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNz
YWdlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5n
JikgPSAwOwogICAgIHVzaW5nIFBsYXRmb3JtRGlzcGxheUlEID0gdWludDMyX3Q7CiAgICAgdmly
dHVhbCBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSA9IDA7CkBAIC03OCwxMyArNzgsMTMg
QEAgcHVibGljOgogICAgICAgICBTdWNjZWVkZWQsCiAgICAgfTsKIAotICAgIHVzaW5nIExpY2Vu
c2VDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBt
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0
aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSA9IDA7CisgICAgdXNp
bmcgTGljZW5zZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBu
ZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47CisgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNl
bnNlQ2FsbGJhY2smJikgPSAwOwogCiAgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gQ0RNSW5z
dGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3I7Ci0gICAgdXNpbmcgTWVzc2FnZSA9
IHN0ZDo6cGFpcjxNZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIE1l
c3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj47CiAgICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9y
PiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlv
biwgc3RkOjpvcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVk
ZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VV
cGRhdGVDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKIAogICAgIGVu
dW0gY2xhc3MgU2Vzc2lvbkxvYWRGYWlsdXJlIDogdWludDhfdCB7CiAgICAgICAgIE5vbmUsCkBA
IC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIHVzaW5nIENsb3NlU2Vzc2lvbkNhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VTZXNz
aW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSA9IDA7
CiAKLSAgICB1c2luZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChLZXlTdGF0dXNWZWN0b3ImJiwgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVy
Pj4mJiwgU3VjY2Vzc1ZhbHVlKT47CisgICAgdXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFj
ayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYsIHN0ZDo6b3B0aW9u
YWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmLCBTdWNjZXNzVmFsdWUpPjsKICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExp
Y2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpID0gMDsKIAogICAgIHZpcnR1
YWwgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVBy
aXZhdGUuaAppbmRleCBjYzZkYzdmMTQwY2Q2N2QyYjdiODRmNmFiMmMyODQzMTZkZmRkY2NmLi41
MmE2MTQ4YzgzY2Q1MzkzYzhmODc0ZWQ4NWFkOGJmMjdlNWJlNTBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC03Myw4
ICs3Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSA9
IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBT
aGFyZWRCdWZmZXImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Q
cm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94
eS5jcHAKaW5kZXggZjIxOGY5NzkwNGZiYmE0OWYxZWJkZjQ4ZTIwNWZlNzNkZmFmYjY0OC4uNGJh
NzViZjAwZDlmNzEzYjVhZmJiYTc5MzQwMTk3MTZjZDhmMDM4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcApAQCAtMjI3LDcg
KzIyNyw3IEBAIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIEtleVN0b3JlOjpj
b252ZXJ0VG9KU0tleVN0YXR1c1ZlY3RvcigpIGNvbnN0CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9u
OjpLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzVmVjdG9yOwogICAgIGtleVN0YXR1c1ZlY3Rvci5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bUtleXMoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBr
ZXkgOiBtX2tleXMpCi0gICAgICAgIGtleVN0YXR1c1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQoc3Rk
OjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1cz4g
eyBrZXktPmlkQXNTaGFyZWRCdWZmZXIoKSwga2V5LT5zdGF0dXMoKSB9KTsKKyAgICAgICAga2V5
U3RhdHVzVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+LCBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1cz4geyBrZXktPmlkQXNTaGFy
ZWRCdWZmZXIoKSwga2V5LT5zdGF0dXMoKSB9KTsKICAgICByZXR1cm4ga2V5U3RhdHVzVmVjdG9y
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1Qcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
UHJveHkuaAppbmRleCBhNTg0YjZjZDI2NmIwOTgwOTAyNTRkN2RjYmRkYmY2MGQ5MzMxZmJiLi5l
MWUwOThhMWQ1ZjVmZmM2NWMyYTQ4ZmE0MGFhOTcyZmU4OWUxZTNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKQEAgLTYxLDcgKzYx
LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgS2V5SGFu
ZGxlKHN0YXR1cywgV1RGTW92ZShrZXlJRCksIFdURk1vdmUoa2V5SGFuZGxlVmFsdWUpKSk7CiAg
ICAgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9pZC5zaXplKCkpOyB9Cisg
ICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIoKSBjb25zdCB7
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9pZC5zaXplKCkpOyB9
CiAKICAgICBib29sIHRha2VWYWx1ZUlmRGlmZmVyZW50KEtleUhhbmRsZVZhbHVlVmFyaWFudCYm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlhYThlYjlhMmJiMDcxMWVhZTA4MGYzNzdl
MjJiOTgzNC4uZmNhNmYyMzg4YTU2YTZhMWM3MjQ3MGU1YTQ2ZmRkMjhmMDczNzUwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGls
aXRpZXMuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNw
YWNlIENETVV0aWxpdGllcyB7CiAKLVJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVj
dChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNl
SlNPTk9iamVjdChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAg
Ly8gRmFpbCBvbiBsYXJnZSBidWZmZXJzIHdob3NlIHNpemUgZG9lc24ndCBmaXQgaW50byBhIDMy
LWJpdCB1bnNpZ25lZCBpbnRlZ2VyLgogICAgIHNpemVfdCBzaXplID0gYnVmZmVyLnNpemUoKTsK
QEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0dXJuaW5nIHRoZSByb290
IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CiAKICAg
ICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1VdGlsaXRpZXMuaAppbmRleCA3NGY1MTViMGJkMmE4NzE2OGVlZjI0YjE4Zjk1ZGVhYmVlODI4
ZTZjLi5mY2Y1YmRkYTdjNTk3ZDNjM2FjMzQ5ZWUxNzg5ZTRhZDZlMGM5NTlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMu
aApAQCAtMzUsMTEgKzM1LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIENE
TVV0aWxpdGllcyB7CiAKLVJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25z
dCBTaGFyZWRCdWZmZXImKTsKK1JlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5LmNwcAppbmRleCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVk
Li4zMWE5ZmRmYTAyZDZkMDBjYTI2MTgyNTJkZWQ5MzUzMTNkYzU4YWE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VM
aWNlbnNlUmVsZWFzZUFja25vd2xlZGdlbWVudEZvcm1hdChjb25zdCBKU09OOjpPYmplY3QmIHJv
b3QpCiAvLyBdOwogCiAvLyBUaGlzIGZ1bmN0aW9uIGV4dHJhY3RzIHRoZSBLZXlJZHMgY291bnQg
YW5kIHRoZSBsb2NhdGlvbiBvZiB0aGUgZmlyc3QgS2V5SWQgaW4gaW5pdERhdGEgYnVmZmVyLgot
c3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlv
bkZyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBz
dGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2Vu
Y0luaXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAg
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCgwLCAwKTsKIApAQCAtMTM4
LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0
S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGluaXREYXRhLmlz
RW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRvKiBkYXRhID0g
aW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEu
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5k
YXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgpOwogICAg
IHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CkBAIC0xODgs
MTUgKzE4OSwxNSBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFj
dEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogfQogCiAvLyBUaGlzIGZ1bmN0
aW9uIGNoZWNrcyBpZiB0aGUgaW5pdERhdGEgc2hhcmVkQnVmZmVyIGlzIGEgdmFsaWQgQ0VOQyBp
bml0RGF0YS4KLXN0YXRpYyBib29sIGlzQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
aW5pdERhdGEpCitzdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGluaXRE
YXRhKTsKICAgICByZXR1cm4gKChrZXlJZHNNYXAuZmlyc3QpICYmIChrZXlJZHNNYXAuc2Vjb25k
KSk7CiB9CiAKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJ
bml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGljIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBr
ZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
a2V5SWRzOwogCiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0g
ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5z
aWduZWQga2V5SWRDb3VudCA9IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNCw5ICsyMDUsMTAgQEAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEg
dmFsaWQgQ0VOQyBpbml0RGF0YS4KICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQotICAg
ICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAotICAg
IGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERh
dGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1
b3VzSW5pdERhdGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0Ojpj
cmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpA
QCAtMjI0LDE3ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlp
ZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIG9iamVj
dC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBq
c29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBw
ZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJ
ZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgp
KTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RGF0YSkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJv
bVdlYk1Jbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsK
LSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERh
dGEgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkg
fHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsK
IAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtl
eUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDEyICsyNDcsMTIgQEAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNPTiBvYmpl
Y3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMiCiAgICAg
Ly8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0aGUg
YmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5nIHRoZSBr
ZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2Rl
VG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBrZXlJZHNB
cnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0LT5zZXRB
cnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRh
ID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNv
bkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAg
ICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAg
IHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xlYXJLZXkmIENETUZhY3Rv
cnlDbGVhcktleTo6c2luZ2xldG9uKCkKQEAgLTM4OCw3ICszOTAsNyBAQCBib29sIENETVByaXZh
dGVDbGVhcktleTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QK
K2Jvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEp
IGNvbnN0CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhlIGluaXREYXRhIGJ1ZmZlciBhcyBhbiBKU09O
IG9iamVjdCBpbiBrZXlpZHMgY2FzZS4KICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRzIikgJiYgQ0RNVXRpbGl0aWVzOjpwYXJzZUpTT05P
YmplY3QoaW5pdERhdGEpKQpAQCAtNDA1LDcgKzQwNyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFy
S2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZh
dGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNl
KSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVDbGVhcktl
eTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25z
ZSkgY29uc3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUgcmVzcG9uc2UgYnVmZmVyIGFzIGFuIEpT
T04gb2JqZWN0LgogICAgIGlmICghQ0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QocmVzcG9u
c2UpKQpAQCAtNDMxLDcgKzQzMyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6aW5pdGlh
bGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyCiAgICAgY2Fs
bGJhY2soc3VjY2VlZGVkKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQog
ewogICAgIC8vIFJlamVjdCBzZXR0aW5nIGFueSBzZXJ2ZXIgY2VydGlmaWNhdGUuCiAgICAgY2Fs
bGJhY2soRmFpbGVkKTsKQEAgLTQ1Myw3ICs0NTUsNyBAQCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNz
aW9uPiBDRE1JbnN0YW5jZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKCkKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KCp0aGlzKSk7CiB9CiAKLXZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERh
dGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25D
bGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vu
c2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHN0YXRpYyB1aW50MzJfdCBzX3Nlc3Npb25J
ZFZhbHVlID0gMDsKICAgICArK3Nfc2Vzc2lvbklkVmFsdWU7CkBAIC00NzUsNyArNDc3LDcgQEAg
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUsIGNvbnN0IEF0b21TdHJpbmcmIGkKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7CiAjaWYgTE9HX0RJU0FCTEVECiAgICAgLy8gV2Ugb25seSB1c2UgdGhlIHNl
c2lvbiBJRCBmb3IgZGVidWcgbG9nZ2luZy4gVGhlIHZlcmJvc2UgcHJlcHJvY2Vzc29yIGNoZWNr
cyBhcmUgYmVjYXVzZQpAQCAtNTY2LDcgKzU2OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
Q2xlYXJLZXk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNl
CiAgICAgQVNTRVJUKHNlc3Npb25JZCA9PSBtX3Nlc3Npb25JRCk7CiAKICAgICBhdXRvIGRpc3Bh
dGNoQ2FsbGJhY2sgPQotICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgJmNh
bGxiYWNrXShLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNWZWN0b3IsIHN0ZDo6b3B0aW9uYWw8
UmVmPFNoYXJlZEJ1ZmZlcj4+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2Nlc3MpIHsKKyAg
ICAgICAgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sICZjYWxsYmFja10oS2V5U3RhdHVz
VmVjdG9yJiYga2V5U3RhdHVzVmVjdG9yLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VzcykgewogICAgICAgICAg
ICAgY2FsbE9uTWFpblRocmVhZCgKICAgICAgICAgICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKndlYWtUaGlzIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGtleVN0YXR1c1Zl
Y3RvciA9IFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2Fn
ZSksIHN1Y2Nlc3NdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMpCkBAIC01NzksNyArNTgxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6
cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKICAgICAvLyBD
b25zdHJ1Y3QgdGhlIEtleVN0YXR1c1ZlY3RvciBvYmplY3QsIHJlcHJlc2VudGluZyByZWxlYXNl
ZCBrZXlzLCBhbmQgdGhlIG1lc3NhZ2UgaW4gdGhlCiAgICAgLy8gJ2xpY2Vuc2UgcmVsZWFzZScg
Zm9ybWF0LgogICAgIEtleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNWZWN0b3IgPSBtX2tleVN0b3Jl
LmFsbEtleXNBcyhDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1czo6UmVsZWFzZWQpOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2U7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IG1lc3NhZ2U7CiAgICAgewogICAgICAgICAvLyBDb25zdHJ1Y3QgSlNPTiB0aGF0
IHJlcHJlc2VudHMgdGhlICdsaWNlbnNlIHJlbGVhc2UnIGZvcm1hdCwgY3JlYXRpbmcgYSAna2lk
cycgYXJyYXkKICAgICAgICAgLy8gb2YgYmFzZTY0VVJMLWVuY29kZWQga2V5IElEcyBmb3IgYWxs
IGtleXMgdGhhdCB3ZXJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNlc3Npb24uCkBAIC01OTMsMTQg
KzU5NSwxNCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZW1vdmVTZXNzaW9u
RGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZQogICAgICAgICAgICAgcm9vdE9iamVj
dC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGFycmF5KSk7CiAgICAgICAgIH0KIAotICAgICAg
ICAvLyBDb3B5IHRoZSBKU09OIGRhdGEgaW50byBhIFNoYXJlZEJ1ZmZlciBvYmplY3QuCisgICAg
ICAgIC8vIENvcHkgdGhlIEpTT04gZGF0YSBpbnRvIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBv
YmplY3QuCiAgICAgICAgIFN0cmluZyBtZXNzYWdlU3RyaW5nID0gcm9vdE9iamVjdC0+dG9KU09O
U3RyaW5nKCk7CiAgICAgICAgIENTdHJpbmcgbWVzc2FnZUNTdHJpbmcgPSBtZXNzYWdlU3RyaW5n
LnV0ZjgoKTsKICAgICAgICAgbWVzc2FnZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2VD
U3RyaW5nLmRhdGEoKSwgbWVzc2FnZUNTdHJpbmcubGVuZ3RoKCkpOwogICAgIH0KIAogICAgIG1f
a2V5U3RvcmUudW5yZWZBbGxLZXlzKCk7Ci0gICAgZGlzcGF0Y2hDYWxsYmFjayhXVEZNb3ZlKGtl
eVN0YXR1c1ZlY3RvciksIFJlZjxTaGFyZWRCdWZmZXI+KCptZXNzYWdlKSwgU3VjY2Vzc1ZhbHVl
OjpTdWNjZWVkZWQpOworICAgIGRpc3BhdGNoQ2FsbGJhY2soV1RGTW92ZShrZXlTdGF0dXNWZWN0
b3IpLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oKm1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6
OlN1Y2NlZWRlZCk7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnN0b3Jl
UmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgK
aW5kZXggOWMwNzQ3ZGMxYmQ4ZTY3ZjNiYTg2NGQ5YjgxMTMzNzYyNWM4YTY3OS4uOWUyN2ZlOTEy
YzRkYTA2N2ZiMjZjYWZiYzdmNmE2NTFkYTQ3NTI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5oCkBAIC04Niw4ICs4Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXpl
KCkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wg
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikg
Y29uc3QgZmluYWw7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShj
b25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25z
dCBmaW5hbDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNw
b25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0
IGZpbmFsOwogfTsKIApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFu
Y2UKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpDbGVhcktleTsgfQogICAgIHZvaWQgaW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNj
ZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8
U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0Nh
bGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJp
bmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsOwog
ICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKQEAg
LTEwOSw4ICsxMDksOCBAQCBjbGFzcyBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleSBmaW5hbCA6
IHB1YmxpYyBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSB7CiBwdWJsaWM6CiAgICAgQ0RNSW5zdGFu
Y2VTZXNzaW9uQ2xlYXJLZXkoQ0RNSW5zdGFuY2VDbGVhcktleSYgcGFyZW50KQogICAgICAgICA6
IENETUluc3RhbmNlU2Vzc2lvblByb3h5KHBhcmVudCkgeyB9Ci0gICAgdm9pZCByZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9p
ZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0
TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xv
c2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJl
bW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IGU5NjhlOTg1
YzdlZWNlZmU0MzVhYTkyMDVjNDRkZDM1YWVkOGUwZDAuLmVjZjRlMDhjOWI5OTFhZGUyNzNiZDQ0
YzYwYmIxNWZlMDE2MzViMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWRFbmNvZGVyR2VuZXJpYyBmaW5hbCA6IHB1YmxpYyBL
ZXllZEVuY29kZXIgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKaW5kZXggOGE4YzEwYjcwMjRjZmUwMzhlOWZhN2I3MTVi
ZTI2ODg5ZmMwNWUyOC4uOTM3ZDFmYjZmMGM4ZDdiNTFmMThmZjE1NTYwYjNiOTRhNzRmNjFiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGli
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIu
Y3BwCkBAIC0yNiwxNiArMjYsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQogewogICAgIEFTU0VSVChi
eXRlcyk7CiAgICAgbV9zaXplID0gZ19ieXRlc19nZXRfc2l6ZShieXRlcyk7CiAgICAgbV9zZWdt
ZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKEdSZWZQdHI8R0J5dGVzPihieXRl
cykpIH0pOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0
ZXMqIGJ5dGVzKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihieXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKIH0KIAogR1JlZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaAppbmRleCA5ZmM0ZWE4MmViYmM3N2VhZDkwMTA4NTQzODA4MjllMTViYmFiNmY0Li5kYzFm
YjE2ZWEwYjE5NmM1ZDEzYmQ0MTE0ZTUwY2NkY2Q5YjM3YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEZvbnRDYWNoZTsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEdseXBo
UGFnZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIHN0cnVjdCBHbHlwaERhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAw
ODI5ZGUxOTliMTRlODRiMjE5Li5mYmJjY2M0MzY4NDQ3NDkwODNjZTg5MWYzNjNmNmNjNDBmMjk3
NDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxh
dGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5oCkBAIC03NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBP
bmNlIGNyZWF0ZWQsIG5vIGluc3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2Vy
dmFibGUgd2F5KS4KIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGEgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IDRhODUzZWI2NDk1M2Q0YWU0ODM0Zjg3YzU0
ODdhY2QzNjRjNTdkODEuLmUzMmEzNmM2MDc2MTkyMTY4YzZhMzc5MzE4Zjc4YWUxNzg5YzQ4MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTEwNCw3
ICsxMDQsNyBAQCBib29sIEltYWdlOjppc1Bvc3RTY3JpcHRSZXNvdXJjZShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBVUkwmIHVybCkKIH0KIAogCi1FbmNvZGVkRGF0YVN0YXR1cyBJbWFn
ZTo6c2V0RGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQorRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2U6OnNldERhdGEoUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgbV9lbmNv
ZGVkSW1hZ2VEYXRhID0gV1RGTW92ZShkYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmgKaW5kZXggNmEwODE2OTU3YWE5M2M0MTFhNTZjZDRjMmJjMjBkZDZkOTA0
NGRlYy4uNjU1ZGZlNzNjZmY2YWQxZDA0ZjQ4YmMyMDE5ZWJiODA0MTdkNjEzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC03MCw3ICs3MCw3IEBAIGNsYXNz
IEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFNpemU7CiBj
bGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogc3RydWN0IExlbmd0aDsKIAogLy8gVGhpcyBjbGFzcyBnZXRzIG5v
dGlmaWVkIHdoZW4gYW4gaW1hZ2UgY3JlYXRlcyBvciBkZXN0cm95cyBkZWNvZGVkIGZyYW1lcyBh
bmQgd2hlbiBpdCBhZHZhbmNlcyBhbmltYXRpb24gZnJhbWVzLgpAQCAtMTI0LDcgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBj
b25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2aXJ0dWFsIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1h
Z2U7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIEVuY29kZWREYXRhU3RhdHVzIHNldERhdGEoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgRW5jb2RlZERhdGFTdGF0dXMgc2V0RGF0YShSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdmlydHVhbCBF
bmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChib29sIC8qYWxsRGF0YVJlY2VpdmVkKi8pIHsg
cmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpVbmtub3duOyB9CiAKICAgICB2aXJ0dWFsIFN0cmlu
ZyB1dGkoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAvLyBudWxsIHN0cmluZyBpZiB1bmtu
b3duCkBAIC0xMzMsOCArMTMzLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRlc3Ry
b3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwgPSB0cnVlKSA9IDA7CiAKLSAgICBTaGFyZWRC
dWZmZXIqIGRhdGEoKSB7IHJldHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KLSAgICBj
b25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWRJbWFnZURh
dGEuZ2V0KCk7IH0KKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgeyByZXR1cm4g
bV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQog
CiAgICAgdmlydHVhbCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpOwogCkBAIC0y
MDksNyArMjA5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgQ29sb3Igc2luZ2xlUGl4ZWxT
b2xpZENvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQogCiBwcml2YXRlOgotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fZW5jb2RlZEltYWdlRGF0YTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVkSW1hZ2VEYXRhOwogICAgIEltYWdlT2JzZXJ2ZXIq
IG1faW1hZ2VPYnNlcnZlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fYW5pbWF0aW9u
U3RhcnRUaW1lcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCYWNraW5nU3RvcmUuaAppbmRleCA0ZGRiNmRmODNlY2I4YjliNzk1N2Y0NjY0ZTE4
NGYwMDgxZTgxMDExLi5kZTMzZjFhZjQxMmRjMDhiMmI5NjFhMTk0OTQ1YzljYzkwYWE2NjI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2lu
Z1N0b3JlLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgICAgIGJ1ZmZlci5ncm93KGJ1ZmZlclNpemUpOwotICAgICAgICBtX3BpeGVs
cyA9IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwor
ICAgICAgICBtX3BpeGVscyA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpj
cmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJl
dF9jYXN0PHVpbnQzMl90Kj4oY29uc3RfY2FzdDx1aW50OF90Kj4obV9waXhlbHMtPmRhdGEoKSkp
OwogICAgICAgICBtX3NpemUgPSBzaXplOwogICAgICAgICBtX2ZyYW1lUmVjdCA9IEludFJlY3Qo
SW50UG9pbnQoKSwgbV9zaXplKTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBwcml2YXRlOgogICAgIHsK
ICAgICAgICAgQVNTRVJUKCFtX3NpemUuaXNFbXB0eSgpICYmICFpc092ZXJTaXplKG1fc2l6ZSkp
OwogICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyIHsgb3RoZXIubV9waXhlbHMtPmRhdGEo
KSwgb3RoZXIubV9waXhlbHMtPnNpemUoKSB9OwotICAgICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBtX3Bp
eGVscyA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92
ZShidWZmZXIpKTsKICAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQz
Ml90Kj4oY29uc3RfY2FzdDx1aW50OF90Kj4obV9waXhlbHMtPmRhdGEoKSkpOwogICAgIH0KIApA
QCAtMjMzLDcgKzIzMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBQYWNrZWRDb2xvcjo6
QVJHQiB7IHJlc3VsdCB9LnZhbHVlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50PiBtX3BpeGVsczsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+IG1fcGl4ZWxzOwogICAgIHVpbnQzMl90KiBtX3BpeGVsc1B0ciB7IG51
bGxwdHIgfTsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBJbnRSZWN0IG1fZnJhbWVSZWN0OyAv
LyBUaGlzIHdpbGwgYWx3YXlzIGp1c3QgYmUgdGhlIGVudGlyZSBidWZmZXIgZXhjZXB0IGZvciBH
SUYgYW5kIFBORyBmcmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZURlY29kZXIuY3BwCmluZGV4IDA4NjllOTlhMDA4ODZmN2NkMTIxODZmZTMxNjFkZTA0
N2ZhNTEzNjEuLjdjNTQ5NDdmNGQ4MTQwODU1OWNjNDVjNGFjNDlhMTliOWZjODZmOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcApA
QCAtODIsNyArODIsNyBAQCB2b2lkIEltYWdlRGVjb2Rlcjo6Y2xlYXJGYWN0b3JpZXMoKQogfQog
I2VuZGlmCiAKLVJlZlB0cjxJbWFnZURlY29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKQorUmVmUHRyPEltYWdlRGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24g
YWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQogewogICAgIFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKaW5kZXggYTFhMDhhZGMx
NzVkNDRiYWE0NDJlNDRhOTRhYTk2N2EwNGY1ZjYwNy4uNmE4ZmZjYjYwZmMxMTU2ZWI4NDg3NmRl
ZmIwN2NiYzBiMTE5ODQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VEZWNvZGVyLmgKQEAgLTM3LDEyICszNywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIEltYWdlRGVjb2RlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFn
ZURlY29kZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7
CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7
CiAKICAgICBlbnVtIGNsYXNzIE1lZGlhVHlwZSB7CkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgdXNpbmcgU3VwcG9ydHNNZWRpYVR5cGVGdW5j
ID0gRnVuY3Rpb248Ym9vbChNZWRpYVR5cGUpPjsKICAgICB1c2luZyBDYW5EZWNvZGVUeXBlRnVu
YyA9IEZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nJik+OwotICAgIHVzaW5nIENyZWF0ZUltYWdl
RGVjb2RlckZ1bmMgPSBGdW5jdGlvbjxSZWZQdHI8SW1hZ2VEZWNvZGVyPihTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
PjsKKyAgICB1c2luZyBDcmVhdGVJbWFnZURlY29kZXJGdW5jID0gRnVuY3Rpb248UmVmUHRyPElt
YWdlRGVjb2Rlcj4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik+OwogCiAgICAgc3RydWN0IEltYWdl
RGVjb2RlckZhY3RvcnkgewogICAgICAgICBTdXBwb3J0c01lZGlhVHlwZUZ1bmMgc3VwcG9ydHNN
ZWRpYVR5cGU7CkBAIC0xMjksNyArMTI5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGxhdGZv
cm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0g
RGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSA9IDA7CiAKICAgICB2
aXJ0dWFsIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQWxsRGF0YVJlY2Vp
dmVkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUo
c2l6ZV90KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcAppbmRleCBkODFjNDgwMTkyODQ2ZGQ3ZTMyMWMyZGZiZmJmMWUwYzIwZGFh
NjcxLi4zMDc3NDMzMTVhNDFlY2ExYzliMmJjNzczZDA3OWVlNWQ0M2JhZjY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC03Miw3
ICs3Miw3IEBAIEltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UoKQogICAgIEFTU0VSVCgmbV9ydW5M
b29wID09ICZSdW5Mb29wOjpjdXJyZW50KCkpOwogfQogCi1ib29sIEltYWdlU291cmNlOjplbnN1
cmVEZWNvZGVyQXZhaWxhYmxlKFNoYXJlZEJ1ZmZlciogZGF0YSkKK2Jvb2wgSW1hZ2VTb3VyY2U6
OmVuc3VyZURlY29kZXJBdmFpbGFibGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsK
ICAgICBpZiAoIWRhdGEgfHwgaXNEZWNvZGVyQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtOTYsNyArOTYsNyBAQCBib29sIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZh
aWxhYmxlKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJ
bWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQordm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIWRhdGEgfHwgIWVuc3VyZURl
Y29kZXJBdmFpbGFibGUoZGF0YSkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNCwxMyArMTA0LDEz
IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKICAgICBtX2RlY29kZXItPnNldERhdGEoKmRhdGEsIGFsbERhdGFSZWNl
aXZlZCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRh
dGEpCit2b2lkIEltYWdlU291cmNlOjpyZXNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSkKIHsKICAgICBtX2RlY29kZXIgPSBudWxscHRyOwogICAgIHNldERhdGEoZGF0YSwgaXNB
bGxEYXRhUmVjZWl2ZWQoKSk7CiB9CiAKLUVuY29kZWREYXRhU3RhdHVzIEltYWdlU291cmNlOjpk
YXRhQ2hhbmdlZChTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorRW5j
b2RlZERhdGFTdGF0dXMgSW1hZ2VTb3VyY2U6OmRhdGFDaGFuZ2VkKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIHNldERhdGEoZGF0YSwg
YWxsRGF0YVJlY2VpdmVkKTsKICAgICBjbGVhck1ldGFkYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCA4YWY1MDgwYTAwYTk5MTYw
ODBmMWYwYjI3NzA3M2MyYTg1MzQ1MjU4Li44MTRmMGUxMmViYWE0OGY4NmFjYjUyMTk3M2MzMWQ1
ZDM4MmY2ZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQml0
bWFwSW1hZ2U7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbWFnZURlY29kZXI7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBJbWFnZVNvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZVNvdXJjZT4s
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbWFnZVNvdXJjZT4gewogICAgIGZyaWVuZCBjbGFzcyBC
aXRtYXBJbWFnZTsKQEAgLTU2LDkgKzU2LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJbWFnZVNvdXJjZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSkpOwogICAgIH0KIAot
ICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KTsKLSAgICB2b2lkIHJlc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOwotICAgIEVuY29kZWRE
YXRhU3RhdHVzIGRhdGFDaGFuZ2VkKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCByZXNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogZGF0YSk7CisgICAgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGJvb2wg
aXNBbGxEYXRhUmVjZWl2ZWQoKTsKIAogICAgIHVuc2lnbmVkIGRlY29kZWRTaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9kZWNvZGVkU2l6ZTsgfQpAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIGZpcnN0RnJhbWVNZXRhZGF0YUNhY2hlSWZO
ZWVkZWQoVCYgY2FjaGVkVmFsdWUsIE1ldGFkYXRhVHlwZSwgVCAoSW1hZ2VGcmFtZTo6KmZ1bmN0
b3IpKCkgY29uc3QsIEltYWdlRnJhbWU6OkNhY2hpbmcsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Vi
c2FtcGxpbmdMZXZlbD4mID0geyB9KTsKIAotICAgIGJvb2wgZW5zdXJlRGVjb2RlckF2YWlsYWJs
ZShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlRGVjb2RlckF2YWlsYWJsZShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKICAgICBib29sIGlzRGVjb2RlckF2YWlsYWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlcjsgfQogICAgIHZvaWQgZGVzdHJveURlY29kZWRE
YXRhKHNpemVfdCBmcmFtZUNvdW50LCBzaXplX3QgZXhjbHVkZUZyYW1lKTsKICAgICB2b2lkIGRl
Y29kZWRTaXplQ2hhbmdlZChsb25nIGxvbmcgZGVjb2RlZFNpemUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmluZGV4IDNlNTllYTlkMDhkZDFjOWJlZTIzYmEz
ZjYzNWNmMzViZmMyODIyOTIuLjU3N2JkNTA4YTVjNDA5ZjRiZTllNGNmMjAyYjgxZTYxZTQ1YjQ0
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKQEAgLTMw
LDEyICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNb2RlbD4gTW9kZWw6
OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwp
CitSZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJp
bmcgbWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kZWwo
V1RGTW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUodXJsKSkpOwogfQogCi1N
b2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwg
dXJsKQorTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVU
eXBlLCBVUkwgdXJsKQogICAgIDogbV9kYXRhKFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVU
eXBlKFdURk1vdmUobWltZVR5cGUpKQogICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKaW5kZXggMDY1ODEzMzc5ZjExMjU1ZDJk
N2M3ZjZiNTAzNDQzZGM2MzBkMDRlMS4uZTZiZGUxNjZmOTQ0Y2RlN2RiMzI4YzI5NzZlYzY4MmFk
YjZkMTAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCkBAIC0z
OCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwgZmluYWwgOiBw
dWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1vZGVsKCk7CiAKICAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CkBAIC00
OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
UmVmUHRyPE1vZGVsPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0
IE1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9k
ZWwoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogCiAgICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gbV9kYXRhOwogICAgIFN0cmluZyBtX21pbWVUeXBlOwpAQCAtNjAsNyArNjAsNyBAQCB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+
c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEo
KSwgbV9kYXRhLT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CiAg
ICAgZW5jb2RlciA8PCBtX21pbWVUeXBlOwogICAgIGVuY29kZXIgPDwgbV91cmw7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
TWVkaWFSZXNvdXJjZUxvYWRlci5oCmluZGV4IDc0NTljNTg1OGQyNDg3ZWYyYzVmZDM3MTczOTg2
YjMzNzM0ZWMyOGEuLjg4NjkxZGMyNTZkNmRkNmM0NWY0NmUwMTU0OTY3NDI0NWFhMzUzMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFS
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bs
YXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBAIC01MSw4ICs1MSw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
IHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkYXRhU2Vu
dChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxv
bmcgbG9uZykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIENhY2hl
ZFJhd1Jlc291cmNlQ2xpZW50IHVzZXMgU2hhcmVkQnVmZmVyLgorICAgIHZpcnR1YWwgdm9pZCBk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIC8vIFRoaXMg
bWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgdXNl
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgogICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiBwbGF0Zm9ybSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCkgeyBkYXRhUmVjZWl2ZWQocGxhdGZvcm0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEsIGxlbmd0aCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVz
b3VyY2VFcnJvciYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCA1NDk5ZjM3YTdmMzY0NmJkNWYz
OTVhNDhiMDlkOTQxMWQ0YzliNjY0Li5kM2UxYjU4MDRlODVhOTkxMWNmMjBmY2VkMzRiZjI1NWEz
MTQ0MzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtMTMxOCw3ICsxMzE4LDcgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBvcmln
aW5hbFNhbXBsZSkKICAgICB1cGRhdGVIaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wKCk7CiB9
CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGFwcGVuZChidWZmZXItPmV4dHJhY3REYXRh
KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291
cmNlQnVmZmVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291
cmNlQnVmZmVyUHJpdmF0ZS5oCmluZGV4IGVmODZhNDczNjkzNzFjODNlODgzYjI5YmJiNmI5YWI5
NmVjYTVmMWQuLjZiN2Q5NWU1MmI5ZGYwYzgxYWYzYmUxZDZkOWYzYzhlZDM5NTQxNmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQ
cml2YXRlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgVGlt
ZVJhbmdlczsKIAogZW51bSBjbGFzcyBTb3VyY2VCdWZmZXJBcHBlbmRNb2RlIDogdWludDhfdCB7
CkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5T
b3VyY2VCdWZmZXJQcml2YXRlKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wp
ID0gMDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgYXBwZW5kKFJlZjxTaGFyZWRC
dWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBhcHBlbmQoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IGM2MTEyZTExOTRjN2M5OTBmZGMxMTRlODI5Y2ZkYjVj
NmFmNzU0YTkuLjhiMDRmOWJlOTZjMzZlMGEyNjIxODBhMjVlYTM3NDU5NjJiM2Q3ZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1G
YWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtODYsMTIgKzg2LDEy
IEBAIGNvbnN0IEF0b21TdHJpbmcmIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFt
ZSgpCiAgICAgcmV0dXJuIHNrZDsKIH0KIAotc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSlNPTiBvZiB0aGUgZm9y
bWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVm
ZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVy
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5z
aXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29u
KTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKICAgICBpZiAoIXNpbmZBcnJheSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4gc2luZnM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4gc2luZnM7CiAgICAgc2luZnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaW5m
QXJyYXktPmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYgdmFsdWUgOiAqc2luZkFycmF5KSB7
CkBAIC0xMjQsNyArMTI0LDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0
cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogfQogCiB1c2luZyBTY2hl
bWVBbmRLZXlSZXN1bHQgPSBWZWN0b3I8c3RkOjpwYWlyPEZvdXJDQywgVmVjdG9yPHVpbnQ4X3Q+
Pj47Ci1zdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21T
aW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFNjaGVtZUFuZEtleVJlc3Vs
dCBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBidWZmZXJzID0gZXh0cmFjdFNpbmZEYXRhKGJ1ZmZl
cik7CiAgICAgaWYgKCFidWZmZXJzLnNpemUoKSkKQEAgLTE3MCw5ICsxNzAsOSBAQCBzdGF0aWMg
U2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpl
eHRyYWN0S2V5SURzU2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9u
YWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAg
IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBhdXRvIHJl
c3VsdHMgPSBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihidWZmZXIpOwogCiAgICAgZm9y
IChhdXRvJiByZXN1bHQgOiByZXN1bHRzKSB7CkBAIC0xODMsNyArMTgzLDcgQEAgc3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1p
bmc6OmV4dHJhY3RLZXkKICAgICByZXR1cm4ga2V5SURzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gQ29tbW9uIFNJTkYgQm94IEZvcm1hdAogICAgIFVO
VVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMTkxLDE3ICsxOTEsMTcgQEAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgU2hh
cmVkQnVmZmUKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNrZChjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
ZXh0cmFjdEtleUlEc1NrZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9u
YWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgLy8gSW4gdGhlICdza2QnIHNjaGVtZSwgdGhlIGluaXQgZGF0YSBp
cyB0aGUga2V5IElELgotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAg
IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBrZXlJRHMu
YXBwZW5kKGJ1ZmZlci5jb3B5KCkpOwogICAgIHJldHVybiBrZXlJRHM7CiB9CkBAIC0zOTMsNyAr
MzkzLDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lv
bnMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29sIENETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAog
ewogICAgIGlmICghdmFsaWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDIzLDcgKzQyMyw3IEBAIGJvb2wgQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVk
QnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlc3BvbnNl
LmNvcHkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKaW5kZXgg
YmM5M2Y2ZjZhN2JkZDAxZWZiZjU1YjYyYmRiNmE0ZTY2ZWY5MTJiMy4uMzE3YmI4ZDU3ZTg2YzA2
MjE0ZTBiNDA1OWRkZjRmODgwN2M3NGM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmgKQEAgLTcxLDE3ICs3MSwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkQW5k
SW5pdGlhbGl6ZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0
ZXMoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBv
dmVycmlkZTsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6
ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBj
b25zdCBBdG9tU3RyaW5nJiBzaW5mTmFtZSgpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNpbmYoY29u
c3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHNhbml0aXplU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBz
dGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc2tkTmFtZSgpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTa2QoY29uc3QgU2hh
cmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplU2tk
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2tkKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHNhbml0aXplU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAg
IHN0YXRpYyBjb25zdCBWZWN0b3I8Rm91ckNDPiYgdmFsaWRGYWlyUGxheVN0cmVhbWluZ1NjaGVt
ZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5kZXggMTU5YjkwY2RiNDhmN2ZlNDRiYjQ5
YmUyZWMxYzFjMmY0MzI4NjQwMC4uNTZiNThjMjVhMjg3MDlmYjM4MjIxODM5ZTU1YmFlNDVlZDkz
Y2Y2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoK
ICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpGYWlyUGxheVN0cmVhbWluZzsgfQogCiAgICAg
dm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3Rh
dGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmlj
YXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2
b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBT
dWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0
ZVNlc3Npb24oKSBmaW5hbDsKICAgICB2b2lkIHNldENsaWVudChXZWFrUHRyPENETUluc3RhbmNl
Q2xpZW50PiYmKSBmaW5hbDsKQEAgLTk0LDEwICs5NCwxMCBAQCBwdWJsaWM6CiAKICAgICBOU1VS
TCAqc3RvcmFnZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZVVSTC5nZXQoKTsgfQogICAg
IGJvb2wgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVu
dFN0YXRlQWxsb3dlZDsgfQotICAgIFNoYXJlZEJ1ZmZlciogc2VydmVyQ2VydGlmaWNhdGUoKSBj
b25zdCB7IHJldHVybiBtX3NlcnZlckNlcnRpZmljYXRlLmdldCgpOyB9CisgICAgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogc2VydmVyQ2VydGlmaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX3NlcnZl
ckNlcnRpZmljYXRlLmdldCgpOyB9CiAgICAgQVZDb250ZW50S2V5U2Vzc2lvbiogY29udGVudEtl
eVNlc3Npb24oKTsKIAotICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiB0YWtlVW5l
eHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBTaGFyZWRCdWZmZXImIGluaXREYXRhKTsKKyAgICBSZXRhaW5QdHI8QVZD
b250ZW50S2V5UmVxdWVzdD4gdGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRp
b25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpOwogCiAgICAgLy8gQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlQ2xp
ZW50CiAgICAgdm9pZCBkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgZmlu
YWw7CkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgb3V0cHV0T2JzY3VyZWRE
dWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCkgZmluYWw7CiAg
ICAgdm9pZCBleHRlcm5hbFByb3RlY3Rpb25TdGF0dXNEaWRDaGFuZ2VGb3JDb250ZW50S2V5UmVx
dWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7CiAKLSAgICB1c2luZyBLZXlzID0gVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBLZXlzID0gVmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yS2V5SURzKGNvbnN0IEtleXMmKSBjb25zdDsKICAgICBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JHcm91
cChBVkNvbnRlbnRLZXlSZXBvcnRHcm91cCopIGNvbnN0OwogICAgIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvclJlcXVlc3QoQVZDb250ZW50S2V5
UmVxdWVzdCopIGNvbnN0OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0
cjxDRE1JbnN0YW5jZUNsaWVudD4gbV9jbGllbnQ7CiAgICAgUmV0YWluUHRyPEFWQ29udGVudEtl
eVNlc3Npb24+IG1fc2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUZQU0NvbnRlbnRLZXlT
ZXNzaW9uRGVsZWdhdGU+IG1fZGVsZWdhdGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9z
ZXJ2ZXJDZXJ0aWZpY2F0ZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9z
ZXJ2ZXJDZXJ0aWZpY2F0ZTsKICAgICBib29sIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dlZCB7IHRy
dWUgfTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IG1fc3RvcmFnZVVSTDsKICAgICBWZWN0b3I8V2Vh
a1B0cjxDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+PiBtX3Nlc3Np
b25zOwpAQCAtMTUwLDggKzE1MCw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gQ0RNSW5z
dGFuY2VTZXNzaW9uCi0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBM
aWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNz
aW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lv
bkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYs
IENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sm
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgz
OTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMuLmJhNTA2MWViYjVjNWZiZTA3NGQzYTI5ZGVhNGY5MThm
YzI2MjFjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0yMTcsNyArMjE3LDcgQEAg
QUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKICAgICByZXR1cm4gQXRvbVN0cmluZyhu
c0luaXRUeXBlKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGluaXRpYWxpemF0aW9u
RGF0YUZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCogcmVxdWVzdCkKK3N0YXRpYyBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdGlhbGl6YXRpb25EYXRhRm9yUmVxdWVzdChBVkNv
bnRlbnRLZXlSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CkBAIC0yNjUsNyArMjY1LDcgQEAgQVZDb250
ZW50S2V5U2Vzc2lvbiogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmNvbnRl
bnRLZXlTZXNzaW9uKCkKICAgICByZXR1cm4gbV9zZXNzaW9uLmdldCgpOwogfQogCi1SZXRhaW5Q
dHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitSZXRhaW5Q
dHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRh
KQogewogICAgIGZvciAoYXV0byByZXF1ZXN0SXRlciA9IG1fdW5leHBlY3RlZEtleVJlcXVlc3Rz
LmJlZ2luKCk7IHJlcXVlc3RJdGVyICE9IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzLmVuZCgpOyAr
K3JlcXVlc3RJdGVyKSB7CiAgICAgICAgIGF1dG8mIHJlcXVlc3QgPSAqcmVxdWVzdEl0ZXI7CkBA
IC0zMTYsNyArMzE2LDcgQEAgcHJpdmF0ZToKICAgICBSZXNwb25zZU1hcCBtX3Jlc3BvbnNlczsK
IH07CiAKLXN0YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09O
VmFsdWUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEZh
aWwgb24gbGFyZ2UgYnVmZmVycyB3aG9zZSBzaXplIGRvZXNuJ3QgZml0IGludG8gYSAzMi1iaXQg
dW5zaWduZWQgaW50ZWdlci4KICAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci5zaXplKCk7CkBAIC0z
MjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJv
b3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAog
ICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAtMzgwLDcgKzM4
MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmluaXRpYWxp
emVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LCiAgICAgY2FsbGJhY2soaW5pdGlhbGl6ZSgp
KTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2Vy
dmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3Vj
Y2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAg
ICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogICAgIG1fc2VydmVyQ2Vy
dGlmaWNhdGUgPSBXVEZNb3ZlKHNlcnZlckNlcnRpZmljYXRlKTsKQEAgLTU4NSw4ICs1ODUsOCBA
QCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIENETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgYXV0byBzZXNzaW9uS2V5cyA9IHNlc3Npb25JbnRlcmZhY2UtPmtleUlEcygpOwotICAgICAg
ICBpZiAoYW55T2Yoc2Vzc2lvbktleXMsIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgc2Vz
c2lvbktleSkgewotICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kTWF0Y2hpbmcoWyZdKGNv
bnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBrZXlJRCkgeworICAgICAgICBpZiAoYW55T2Yoc2Vzc2lv
bktleXMsIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHNlc3Npb25LZXkp
IHsKKyAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGtleUlEKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGtleUlELmdldCgpID09IHNlc3Npb25LZXkuZ2V0KCk7CiAgICAgICAgICAgICB9KSAhPSBub3RG
b3VuZDsKICAgICAgICAgfSkpCkBAIC02NzMsNyArNjczLDcgQEAgS2V5cyBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleUlEcygpCiAgICAgcmV0dXJuIGtleUlE
czsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWlzTGljZW5z
ZVR5cGVTdXBwb3J0ZWQobGljZW5zZVR5cGUpKSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NT
SUJMRShMT0dJREVOVElGSUVSLCAiIGZhbHNlLCBsaWNlbnNlVHlwZSBcIiIsIGxpY2Vuc2VUeXBl
LCAiXCIgbm90IHN1cHBvcnRlZCIpOwpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAK
ICAgICBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2lu
Zk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVy
ID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAg
IGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5J
VERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNl
bmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJp
bmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNz
aFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEg
PSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5T
U3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBl
cnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzM2LDcgKzczNiw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSBsaWNlCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBpc0VxdWFsKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3N0YXRpYyBib29sIGlzRXF1YWwo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
IHsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gZGF0YS50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwog
ICAgIGlmICghYXJyYXlCdWZmZXIpCkBAIC03NTQsNyArNzU0LDcgQEAgc3RhdGljIGJvb2wgaXNF
cXVhbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAg
cmV0dXJuIHN0cmluZ09yRXhjZXB0aW9uLnJldHVyblZhbHVlKCkgPT0gdmFsdWU7CiB9CiAKLXZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3Bv
bnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9u
c2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1f
ZXhwaXJlZFNlc3Npb25zLmlzRW1wdHkoKSAmJiBpc0VxdWFsKHJlc3BvbnNlRGF0YSwgImFja25v
d2xlZGdlZCJfcykpIHsKICAgICAgICAgYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5z
ZXJ2ZXJDZXJ0aWZpY2F0ZSgpOwpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpCiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4
cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRh
LmdldCgpOwogICAgICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6
OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lv
blJlcG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50
aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBj
YWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVk
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtODU2LDcgKzg1Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpCiAgICAgICAgICAgICBhdXRvIGtleUlEID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZSgqa2V5SURWZWN0b3IpKTsKICAgICAgICAgICAgIGF1dG8gZm91bmRJbmRleCA9IG1fY3Vy
cmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maW5kTWF0Y2hpbmcoWyZdIChhdXRvJiByZXF1
ZXN0KSB7CiAgICAgICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJl
cXVlc3QuZ2V0KCkpOwotICAgICAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5n
KFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgaWQpIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4ga2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiBpZCkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWQuZ2V0KCkgPT0ga2V5SUQu
Z2V0KCk7CiAgICAgICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQ7CiAgICAgICAgICAgICB9KTsK
QEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICAgICAg
ICAgIGlmICghcGF5bG9hZFZlY3RvcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0gICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJv
Y2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNz
KCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRh
OnBheWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICAgICAgICAgIFty
ZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVz
cG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJl
c3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAg
IH0KICAgICB9IGVsc2UgewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJ
RklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2luZyByZXNwb25zZSIpOwotICAgICAgICBb
bV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRL
ZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtl
eVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0
YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgW21fY3VycmVudFJlcXVlc3QudmFs
dWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0
QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxh
eVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQogCiAgICAgLy8gRklYTUUocmRhcjovL3By
b2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5kIGNhbGwgaXQgb25jZSBBVkNv
bnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2FsbGJhY2suCkBAIC05MzQsNyAr
OTM0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0Rh
dGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xh
c3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRl
bnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKICAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJhY2tTZXNzaW9uSWRLZXkgPSBAIlBs
YXliYWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3Ry
aW5nJgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRy
PE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAg
ICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAg
ICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50
S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVu
dGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VV
UkxdKSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UgogCiAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlm
aWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlm
aWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAg
ICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QpOwogICAgIGlmIChrZXlJ
RHMuaXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50
S2V5UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29u
dGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0
YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0
IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5n
ZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5p
bCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0g
KE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7
CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUo
d2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CkBAIC0xMTUzLDkgKzExNTMs
OSBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlk
UHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBw
SWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2
ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNy
ZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCi0gICAgdXNpbmcgUmVxdWVzdHNEYXRhID0g
VmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+
PjsKKyAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKICAgICBzdHJ1Y3QgQ2Fs
bGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxi
YWNrQWdncmVnYXRvcj4gewogICAgICAgICB1c2luZyBDYWxsYmFja0Z1bmN0aW9uID0gRnVuY3Rp
b248dm9pZChSZXF1ZXN0c0RhdGEmJik+OwogICAgICAgICBzdGF0aWMgUmVmUHRyPENhbGxiYWNr
QWdncmVnYXRvcj4gY3JlYXRlKENhbGxiYWNrRnVuY3Rpb24mJiBjb21wbGV0aW9uSGFuZGxlcikK
QEAgLTExOTYsNyArMTE5Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgICAg
ICBhdXRvIGVudHJ5ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGF1dG8m
IGtleUlEID0gcmVxdWVzdERhdGEuZmlyc3Q7CiAgICAgICAgICAgICBhdXRvJiBwYXlsb2FkID0g
cmVxdWVzdERhdGEuc2Vjb25kOwotICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQi
LCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7Cisg
ICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5n
KGtleUlELT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKICAgICAg
ICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoInBheWxvYWQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhw
YXlsb2FkLmdldCgpLmJ5dGVzLCBwYXlsb2FkLmdldCgpLmxlbmd0aCkpOwogICAgICAgICAgICAg
cmVxdWVzdEpTT04tPnB1c2hPYmplY3QoV1RGTW92ZShlbnRyeSkpOwogICAgICAgICB9CkBAIC0x
MjExLDggKzEyMTEsOCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgIEB0cnkgewogICAg
ICAgICBmb3IgKGF1dG8gcmVxdWVzdCA6IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0
cykgewogICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3Qu
Z2V0KCkpOwotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3Zl
KGtleUlEcy5maXJzdCgpKTsKLSAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBr
ZXlJRC0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKKyAgICAgICAgICAgIGF1
dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVl
c3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVu
dElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W2tleUlEID0g
V1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJB
TShlcnJvcik7CiAgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChba2V5SUQgPSBXVEZN
b3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdncmVnYXRvciksIGNvbnRlbnRLZXlS
ZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSAoKSBtdXRhYmxl
IHsKQEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QoQVZDb24KIAogICAg
IFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmlj
YXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRp
ZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmll
ciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBh
dXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpKTsK
IAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0
KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlm
aWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVl
c3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVu
dElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIo
ZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVl
c3REYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5o
CmluZGV4IDAzMzRkNjIzYjJhNzYwNWM5YmUxMjIxM2I1YWJkYmJhYzJiMDNmMTUuLjYyYjgzZmJm
ZDU3OTQwNTBlYmM5NDA2MzcwNDkwYmEyYjNlYzA4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29y
ZURlY29tcHJlc3Npb25TZXNzaW9uOwogCiBjbGFzcyBJbWFnZURlY29kZXJBVkZPYmpDIDogcHVi
bGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IGNy
ZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFn
ZURlY29kZXJBVkZPYmpDKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzdXBw
b3J0c01lZGlhVHlwZShNZWRpYVR5cGUpOwpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChz
aXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25z
dCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hy
b25vdXMpKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RXhwZWN0ZWRDb250
ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGF0
YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERh
dGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsOwogCkBAIC05NCw3ICs5NCw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFt
ZUluZm8+IGZyYW1lSW5mb3MoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBJbWFnZURlY29kZXJB
VkZPYmpDKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyQVZGT2JqQyhG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIEFWQXNzZXRUcmFjayAqZmly
c3RFbmFibGVkVHJhY2soKTsKICAgICB2b2lkIHJlYWRTYW1wbGVzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURl
Y29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1
MTI3Mjk3NDUwZTFjOWExMGNjMTRmNGJmLi4zNWM2Y2U2N2U4NWY4NmFlMTY0YzIxYTcyNjA3ZmMw
NjVlY2I1MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMubW0KQEAgLTI4OSw3ICsyODksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDU2FtcGxlKiB0b1Nh
bXBsZShJdGVyYXRvciBpdGVyKQogCiAjcHJhZ21hIG1hcmsgLSBJbWFnZURlY29kZXJBVkZPYmpD
CiAKLVJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVh
dGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlv
biBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCitSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gSW1hZ2VEZWNvZGVyQVZG
T2JqQzo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICAvLyBBVkZvdW5kYXRpb24g
bWF5IG5vdCBiZSBhdmFpbGFibGUgYXQgcnVudGltZS4KICAgICBpZiAoIUFWQXNzZXRNSU1FVHlw
ZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKQpAQCAtMzAxLDcgKzMwMSw3IEBAIFJl
ZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNv
ZGVyQVZGT2JqQyhkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKSk7CiB9CiAKLUltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9i
akMoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFn
ZURlY29kZXJBVkZPYmpDKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAg
ICA6IEltYWdlRGVjb2RlcigpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV91
dGkoV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKSkKQEAgLTMwOSw3ICszMDksNyBA
QCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNv
cmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVu
dDp0aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNz
aW9uU2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0
YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0
ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0
ZTpOT107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTpt
X2xvYWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FV
RVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNo
cm9ub3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQxLDkgKzY0MSw5IEBAIHZv
aWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcg
ZXhwZWN0ZWRDb250ZW50U2l6ZSkKICAgICBtX2xvYWRlci5nZXQoKS5leHBlY3RlZENvbnRlbnRT
aXplID0gZXhwZWN0ZWRDb250ZW50U2l6ZTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJBVkZPYmpD
OjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lk
IEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0
YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOworICAgIFtt
X2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2
ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKaW5kZXggMjAwZTFhOGY5YWZiYTBmY2JiYTViMGEzZWQ3MDRjZDM0MWI0NTBkNi4uYzlk
OWIyYTk2ODViMDFlOTFhYWEwMGMwZTAwMzA3NzM4NTY5MTQyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaApAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVBVkY7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFTZWxlY3Rpb25H
cm91cEFWRk9iakM7CiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFZpZGVvTGF5ZXJN
YW5hZ2VyT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzsKIGNsYXNzIFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlcjsKQEAgLTQyNiw3ICs0MjYsNyBAQCBwcml2YXRlOgogICAgIG11
dGFibGUgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbV93YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRU
aW1lOwogICAgIG11dGFibGUgaW50IG1fdGltZUNvbnRyb2xTdGF0dXNBdENhY2hlZEN1cnJlbnRU
aW1lIHsgMCB9OwogICAgIG11dGFibGUgZG91YmxlIG1fcmVxdWVzdGVkUmF0ZUF0Q2FjaGVkQ3Vy
cmVudFRpbWUgeyAwIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKICAgICBkb3VibGUgbV9jYWNo
ZWRSYXRlIHsgMCB9OwogICAgIGJvb2wgbV9yZXF1ZXN0ZWRQbGF5aW5nIHsgZmFsc2UgfTsKICAg
ICBkb3VibGUgbV9yZXF1ZXN0ZWRSYXRlIHsgMS4wIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpp
bmRleCBkMThhODVhNzk0ZjUyM2Y5NDkxMmUyN2YwOGI3Y2NiZTg5M2M4ZWQwLi5iMWM2MDc5YzY0
ODcwZjg4ZTM1YzgwODExYTViMThiZGExYjdmNjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
QEAgLTI3OTIsNyArMjc5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jCiAgICAgaWYgKCFt
X2tleUlEIHx8ICFtX2NkbUluc3RhbmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGlu
c3RhbmNlU2Vzc2lvbiA9IG1fY2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMoVmVjdG9yPFJl
ZjxTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOworICAgIGF1dG8gaW5zdGFuY2VTZXNz
aW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOwogICAgIGlmICghaW5zdGFuY2VTZXNz
aW9uKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGQ5NjBhZmRjYTIxNGJmYTQ0MGVlYTIw
ODgzYmNhOTEzMmUyMmY5YTAuLjRkZDZiOTFhOTQ4MzE2OWEwMjM2ODg4ZDBlNGQ4MmZmYjgzNjY2
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbQpAQCAtMjEzLDcgKzIxMyw3IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6
On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKICAgICBhdXRv
IHNoYXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFrZVNoYXJlZEJ1ZmZlcigpOwotICAgIGF1dG8gbnNE
YXRhID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBhdXRvIG5zRGF0YSA9IHNo
YXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYgKG1f
cGFyc2VyU3RhdGVXYXNSZXNldCB8fCBmbGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0
eSkKICAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhG
bGFnczpBVlN0cmVhbURhdGFQYXJzZXJTdHJlYW1EYXRhRGlzY29udGludWl0eV07CiAgICAgZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLmgKaW5kZXggMDM0MjBmMTM4MzY0ZmFjMjA5MWUxMDRkMTM2ZmYzOGExZmI5ZmUyMi4uZWFk
MDgzYTZjYzdlNzM2YjQyMTcxMGZhYzM5MmEwN2RmZjkyYmU1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC03Myw3ICs3
Myw3IEBAIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzsKIGNsYXNzIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQgewogcHVibGljOgpAQCAtMTUzLDcgKzE1Myw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZChSZWY8TWVk
aWFTYW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsK
IAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCi0gICAgdm9pZCBhcHBlbmQo
UmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBhcHBlbmQoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWJvcnQoKSBmaW5hbDsKICAgICB2
b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFT
b3VyY2UoKSBmaW5hbDsKQEAgLTIyMSw3ICsyMjEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQogICAg
IFJlZlB0cjxDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4gbV9jZG1JbnN0YW5j
ZTsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IG1fa2V5SURzOworICAgIFZlY3RvcjxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1fa2V5SURzOwogI2VuZGlmCiAKICAgICBzdGQ6
Om9wdGlvbmFsPEZsb2F0U2l6ZT4gbV9jYWNoZWRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCAzYTI4NjdhMWFj
MjQzYmI5YzkzYzlkNmI3MGNhNTZiMDI5NDhmYzljLi4yNGFlMGUxNDA2MDE5MTQzZmFkNGYxNTI5
ZTY4ZWQ0OWI0MTY1M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxp
emF0aW9uRGF0YUZvCiAgICAgVU5VU0VEX1BBUkFNKGhhc1Nlc3Npb25TZW1hcGhvcmUpOwogfQog
Ci12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCAiZGF0YSBsZW5ndGggPSAiLCBkYXRhLT5zaXplKCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYwZDhlNzEx
MzJmNmMyODdhMmU2MjlhNGI4OGE1MzlkZmQ1M2NiZTIuLjBlZmVlYWVmNWIyZDcxYmM2ZDY3MDRk
ZDFiOTc1YWNiYWUxMTNiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM7CiBjbGFzcyBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2Fk
ZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcj4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjUsNyArNjUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxv
YWRGaW5pc2hlZCgpOwotICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJl
ZEJ1ZmZlciYpOworICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMqIG1fcGFyZW50OwogICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5n
UmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggYTIyYTk5N2IxMTA3OWQ0NjU4NmFhNjQ4NTYx
YmJmNzJhNmYyNDdmMC4uZjkyMWYzZGEwZTY5YjMzOTk3N2M5ZTNlNDk2NjdhMjhmNWU5NWNiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ci5tbQpAQCAtMTU2LDE0ICsxNTYsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5z
aWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYp
IGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRy
b2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZhaWxl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmlu
YWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZp
bmlzaGVkKCk7IH0KIAogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAg
ICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVy
OwogfTsKIAogV2Vha1B0cjxQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IFBsYXRmb3JtUmVz
b3VyY2VNZWRpYUxvYWRlcjo6Y3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50
LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCkKQEAgLTIxMSwxMyArMjExLDEwIEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlh
TG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQog
Ci12b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBQbGF0Zm9y
bVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgaWYgKCFtX2J1
ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Ci0gICAgZWxzZQotICAg
ICAgICBtX2J1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgbV9wYXJlbnQubmV3
RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7CisgICAgbV9idWZmZXIuYXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVm
ZmVyKCptX2J1ZmZlci5nZXQoKSk7CiB9CiAKIGNsYXNzIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9h
ZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyPiB7
CkBAIC0zODgsNyArMzg1LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRG
aW5pc2hlZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEp
Cit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVm
ZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVZBc3NldFJl
c291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRh
UmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaAppbmRleCBkYjQ1N2E4MWQzZWU4MjkxYjkwNWU5YmE3N2MxZTJhZjMwOWUwY2IyLi45NDE5
YmNlYTM4ZGJmOGQ2NDkyZjY4MDFkOWEyMTU2MjM2NmEyYzZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oCkBAIC0zMSwxMCArMzEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJl
Y18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBj
bGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0
aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgc3Ry
dWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogcHVi
bGljOgotICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSwgU2hhcmVkQnVmZmVyJik7
CisgICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9GYWNlLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CiAgICAgfkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKSA9IGRlZmF1bHQ7CiAgICAgRm9u
dFBsYXRmb3JtRGF0YSBmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJv
b2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKICAgICBz
dGF0aWMgYm9vbCBzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRl
eCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUwYzA2Li5iNmQzZWIzNjMxMTI0
NDYxM2IzODAzZjJmM2QyNGQzMDg3ZWEyNGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yNDQsMTYgKzI0
NCwxNiBAQCBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8s
IHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sCiAKIHZvaWQgc2hhcmVkQnVmZmVyUmVsZWFz
ZSh2b2lkKiBpbmZvKQogewotICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGlj
X2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
c2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KGluZm8p
OwogICAgIHNoYXJlZEJ1ZmZlci0+ZGVyZWYoKTsKIH0KICNlbmRpZgogCi1JbWFnZURlY29kZXJD
Rzo6SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBp
ZiAoZGF0YS5zaXplKCkgPj0gMzIpCi0gICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VT
b3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwg
bnVsbHB0cikpOworICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlw
ZVdpdGhEYXRhKGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51
bGxwdHIsIG51bGxwdHIpKTsKICAgICAKICAgICBpZiAodXRpSGludCkgewogICAgICAgICBjb25z
dCB2b2lkKiBrZXkgPSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsKQEAgLTU2Miwy
MyArNTYyLDI0IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpCiAgICAgcmV0dXJuIG1hc2tlZElt
YWdlID8gbWFza2VkSW1hZ2UgOiBpbWFnZTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJDRzo6c2V0
RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFn
ZURlY29kZXJDRzo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKIHsKICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gYWxsRGF0YVJlY2Vp
dmVkOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5z
aWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQg
dGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KLSAgICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVy
J3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhp
cywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCi0gICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhl
IFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29k
ZXIuZ2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7Cisg
ICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJ3Mga25vd2xlZGdlLgorICAgIC8vIFdlIHVzZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
J3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhp
cywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCisgICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhl
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9u
YXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgp
LmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UKLSAgICAvLyBDcmVhdGUgYSBDR0RhdGFQ
cm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKLSAgICAv
LyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUg
R2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCisgICAgLy8gQ3JlYXRlIGEg
Q0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KKyAgICBh
dXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNvbnRpZ3Vv
dXNEYXRhLmdldCgpLnJlZigpOworICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9u
IGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0byBsb2Nr
IGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwg
d2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50
ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJvdmlkZXJD
YWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hh
cmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0
YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0YSwgZGF0
YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92
aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVj
dChjb250aWd1b3VzRGF0YS5wdHIoKSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykp
OwogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNvZGVyLmdl
dCgpLCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rl
ckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5oCmluZGV4IDk3NDA3MzZhMjFhYzk5OGFiMDVmMWM5YjRmNWIxNjc1ZTQ0ZDJjOTEuLmEwYWMx
YzJmYmVlNTI3ZTVhYjExMTQ1NTgxMmJkYjczNjNhMDU1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApAQCAtMzIsOSAr
MzIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbWFnZURlY29kZXJDRyBmaW5hbCA6
IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIEltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBJbWFnZURlY29kZXJDRyhGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pOwogCi0gICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJDRz4gY3JlYXRlKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIHN0YXRpYyBSZWY8SW1hZ2VE
ZWNvZGVyQ0c+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlv
biBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURl
Y29kZXJDRyhkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsK
ICAgICB9CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIg
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2Ft
cGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0
aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERh
dGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQg
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZp
bmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6
ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCAzMWMyN2MwNjliMmIzYzcwMzcz
MmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlkNjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYy
ZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
REZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9j
dW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJ
bWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRl
clJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRh
dGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQ
cm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdp
dGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkp
OwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlk
ZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCmlu
ZGV4IGY3NDdkODBmYjYxZDMwZmM1MDIyZTY4MmQ2MzU2MTMzZDNjYTY5N2EuLmM4YTgwNjEyMjA1
M2Y2NDhhZGRiMDJhYzM4OWNlNzE0MzY4ZGJiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNw
cApAQCAtODAsNyArODAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0TWluaW11bUF1
ZGlvU2FtcGxlRHVyYXRpb24oZmxvYXQpCiB7CiB9CiAKLVNvdXJjZUJ1ZmZlclBhcnNlcjo6U2Vn
bWVudDo6U2VnbWVudChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK1NvdXJjZUJ1ZmZlclBh
cnNlcjo6U2VnbWVudDo6U2VnbWVudChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShidWZmZXIpKQogewogfQpAQCAtMTAxLDcgKzEw
MSw3IEBAIHNpemVfdCBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnNpemUoKSBjb25zdAog
ICAgICAgICAgICAgcmV0dXJuIGNsYW1wVG88c2l6ZV90PihNVFBsdWdpbkJ5dGVTb3VyY2VHZXRM
ZW5ndGgoYnl0ZVNvdXJjZS5nZXQoKSkpOwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAgIFtd
KGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgICAgIFtdKGNvbnN0IFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gYnVmZmVyLT5zaXplKCk7CiAgICAgICAgIH0KQEAgLTEyNSw3ICsxMjUsNyBAQCBhdXRv
IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6cmVhZChzaXplX3QgcG9zaXRpb24sIHNpemVf
dCBzaXplVG9SZWFkLCB1aW50OAogICAgICAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVhZEVy
cm9yPiB7IFJlYWRFcnJvcjo6RmF0YWxFcnJvciB9OwogICAgICAgICB9LAogI2VuZGlmCi0gICAg
ICAgIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZWFkUmVzdWx0Cisg
ICAgICAgIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4g
UmVhZFJlc3VsdAogICAgICAgICB7CiAgICAgICAgICAgICBidWZmZXItPmNvcHlUbyhkZXN0aW5h
dGlvbiwgcG9zaXRpb24sIHNpemVUb1JlYWQpOwogICAgICAgICAgICAgcmV0dXJuIHNpemVUb1Jl
YWQ7CkBAIC0xMzMsNyArMTMzLDcgQEAgYXV0byBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6
OnJlYWQoc2l6ZV90IHBvc2l0aW9uLCBzaXplX3Qgc2l6ZVRvUmVhZCwgdWludDgKICAgICApOwog
fQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VT
aGFyZWRCdWZmZXIoKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBh
cnNlcjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1ZmZlcigpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dp
dGNoT24obV9zZWdtZW50LAogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCkBAIC0x
NDIsMjggKzE0MiwyOCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNl
Z21lbnQ6OnRha2VTaGFyZWRCdWZmZXIoKQogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZl
Y3RvcihzaXplKCkpOwogICAgICAgICAgICAgYXV0byByZWFkUmVzdWx0ID0gcmVhZCgwLCB2ZWN0
b3Iuc2l6ZSgpLCB2ZWN0b3IuZGF0YSgpKTsKICAgICAgICAgICAgIGlmICghcmVhZFJlc3VsdC5o
YXNfdmFsdWUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CiAgICAgICAgICAgICB2ZWN0b3Iuc2hyaW5rKHJlYWRSZXN1bHQudmFsdWUoKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKTsKKyAg
ICAgICAgICAgIHJldHVybiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2
ZWN0b3IpKTsKICAgICAgICAgfSwKICNlbmRpZgotICAgICAgICBbJl0oUmVmPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikKKyAgICAgICAgWyZdKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShidWZmZXIs
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFu
Z2UoYnVmZmVyLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7CiAgICAgICAgIH0K
ICAgICApOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNl
Z21lbnQ6OmdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpnZXRTaGFyZWRCdWZmZXIoKSBjb25z
dAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc2VnbWVudCwKICNpZiBIQVZFKE1UX1BM
VUdJTl9GT1JNQVRfUkVBREVSKQotICAgICAgICBbJl0oY29uc3QgUmV0YWluUHRyPE1UUGx1Z2lu
Qnl0ZVNvdXJjZVJlZj4mKSAtPiBSZWZQdHI8U2hhcmVkQnVmZmVyPgorICAgICAgICBbJl0oY29u
c3QgUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mKSAtPiBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgIH0sCiAjZW5kaWYKLSAgICAgICAgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIC0+IFJlZlB0cjxTaGFyZWRCdWZmZXI+CisgICAgICAgIFsmXShjb25zdCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBidWZmZXIucHRyKCk7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKaW5kZXggNTIwYjUyMDdmYzI3MWQ3OTgxNTMzZmIx
NGQyMzE1NTk0YTg4ODM2NS4uNzI5N2E3OTE0YTc5YWRmNjQyZGM2YjE2YjM2ZTYwZjljZDAyOWYw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlwZTsKIGNsYXNzIE1lZGlhU2FtcGxlOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VC
Q09SRV9FWFBPUlQgU291cmNlQnVmZmVyUGFyc2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFNvdXJjZUJ1ZmZlclBhcnNlcj4gewogcHVibGljOgpAQCAtNjksMTEgKzY5LDExIEBAIHB1
YmxpYzoKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVSKQogICAgICAgICBTZWdtZW50
KFJldGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VSZWY+JiYpOwogI2VuZGlmCi0gICAgICAgIFNl
Z21lbnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIFNlZ21lbnQoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgICAgICBTZWdtZW50KFNlZ21lbnQmJikgPSBkZWZhdWx0
OwotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiB0YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAgICAg
IC8vIFdpbGwgcmV0dXJuIG51bGxwdHIgaWYgU2VnbWVudCdzIGJhY2tlbmQgaXNuJ3QgYSBTaGFy
ZWRCdWZmZXIuCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGdldFNoYXJlZEJ1ZmZlcigp
IGNvbnN0OworICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZVNoYXJlZEJ1
ZmZlcigpOworICAgICAgICAvLyBXaWxsIHJldHVybiBudWxscHRyIGlmIFNlZ21lbnQncyBiYWNr
ZW5kIGlzbid0IGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgICAgIHNp
emVfdCBzaXplKCkgY29uc3Q7CiAKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogI2lmIEhBVkUo
TVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAgICAgICBSZXRhaW5QdHI8TVRQbHVnaW5C
eXRlU291cmNlUmVmPiwKICNlbmRpZgotICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4KKyAg
ICAgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPgogICAgICAgICA+IG1fc2VnbWVu
dDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDM1OWVk
YjQxNWZkMzc1ZWQ4MmI3YjRhNDlmMTFlNGM4ZmQ2YzdkNmIuLjliYzE4OTQxOTg2MzBiYWQ4ZDdj
YmQwYjNhNWIyOGU0NmU5ZWZlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
CkBAIC0zNjcsNyArMzY3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgRnJlZURhdGFT
ZWdtZW50KHZvaWQqIHJlZmNvbiwgdm9pZCosIHNpemVfdCkKICAgICB7Ci0gICAgICAgIGF1dG8q
IGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KHJl
ZmNvbik7CisgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21l
bnQqPihyZWZjb24pOwogICAgICAgICBidWZmZXItPmRlcmVmKCk7CiAgICAgfQogCkBAIC0zODgs
NyArMzg4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGFkdmFuY2VUb05leHRTZWdtZW50
KCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBjdXJyZW50U2VnbWVudC5nZXRT
aGFyZWRCdWZmZXIoKTsKKyAgICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBzaGFyZWRCdWZmZXIgPSBjdXJyZW50U2VnbWVudC5nZXRTaGFyZWRCdWZmZXIoKTsKICAgICAg
ICAgICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3QmxvY2tCdWZmZXIgPSBudWxscHRyOwogICAgICAg
ICAgICAgdWludDY0X3QgbGFzdFJlYWQgPSAwOwogICAgICAgICAgICAgc2l6ZV90IGRlc3RpbmF0
aW9uT2Zmc2V0ID0gbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CkBAIC00MDksNyArNDA5LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uT2Zmc2V0ID0gMDsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHNoYXJlZEJ1ZmZlci0+aGFzT25l
U2VnbWVudCgpLCAiQ2FuIG9ubHkgZGVhbCB3aXRoIHNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGEg
c2luZ2xlIERhdGFTZWdtZW50Iik7Ci0gICAgICAgICAgICAgICAgLy8gQSBTaGFyZWRCdWZmZXIg
ZG9lc24ndCBoYXZlIHRocmVhZC1zYWZlIHJlZmNvdW50aW5nLCBhcyBzdWNoIHdlIG11c3Qga2Vl
cCBhIHJlZmVyZW5jZSB0byB0aGUgRGF0YVNlZ21lbnQgaW5zdGVhZC4KKyAgICAgICAgICAgICAg
ICAvLyBBIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgZG9lc24ndCBoYXZlIHRocmVhZC1zYWZlIHJl
ZmNvdW50aW5nLCBhcyBzdWNoIHdlIG11c3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgRGF0YVNl
Z21lbnQgaW5zdGVhZC4KICAgICAgICAgICAgICAgICAvLyBUT0RPOiBjb3VsZCB3ZSBvbmx5IGNy
ZWF0ZSBhIG5ldyBDTUJsb2NrQnVmZmVyIGlmIHRoZSBiYWNrZW5kIG1lbW9yeSBjaGFuZ2VkIHNp
bmNlIHRoZSBwcmV2aW91cyBvbmU/CiAgICAgICAgICAgICAgICAgYXV0byBmaXJzdFNlZ21lbnQg
PSBzaGFyZWRCdWZmZXItPmJlZ2luKCktPnNlZ21lbnQ7CiAgICAgICAgICAgICAgICAgc2l6ZV90
IGNhblJlYWQgPSBzdGQ6Om1pbjxzaXplX3Q+KG51bVRvUmVhZCwgZmlyc3RTZWdtZW50LT5zaXpl
KCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IGU4MDUwOWVjY2EwNWQyY2M4ZWQxMDY2MDcwNDFmNWNj
Y2MzZTM3OTQuLjYzOGU2ODM5N2EyYjY2OTZiMmYxZWRlMjRlYThmZGI5MDYyNmNlZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCkBAIC03MjksNyArNzI5
LDcgQEAgRGlkQ2hhbmdlSXRlbUJ1ZmZlciBJdGVtQnVmZmVyOjpzd2FwV3JpdGFibGVCdWZmZXJJ
Zk5lZWRlZChzaXplX3QgbnVtYmVyT2ZCeXRlcykKIHZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IERpc3BsYXlMaXN0SXRlbSYgdGVtcG9yYXJ5SXRlbSkKIHsKICAgICBhdXRvIHJlcXVpcmVk
U2l6ZUZvckl0ZW0gPSBtX3dyaXRpbmdDbGllbnQtPnJlcXVpcmVkU2l6ZUZvckl0ZW0odGVtcG9y
YXJ5SXRlbSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3V0T2ZMaW5lSXRlbTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gb3V0T2ZMaW5lSXRlbTsKICAgICBpZiAoIXJl
cXVpcmVkU2l6ZUZvckl0ZW0pIHsKICAgICAgICAgb3V0T2ZMaW5lSXRlbSA9IG1fd3JpdGluZ0Ns
aWVudC0+ZW5jb2RlSXRlbU91dE9mTGluZSh0ZW1wb3JhcnlJdGVtKTsKICAgICAgICAgaWYgKCFv
dXRPZkxpbmVJdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCmlu
ZGV4IGM4NzMxOTgyZWY4MzkzMWJiYWUzMWI3ODY1MGFjMGRhMjBhMDVmYzUuLmIzMWJjNWZkNGU5
MjE0YjE1YTM3NjFmYmU5OGQ2MGNlYjQ3YTk4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0Cisg
ICAgdmlydHVhbCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9m
TGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQpAQCAtMTY4LDcgKzE2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB3aXRo
IHBhZGRpbmcgYmV0d2VlbiBlYWNoIGl0ZW0gdG8gZW5zdXJlIHRoYXQgYWxsIGl0ZW1zIGFyZSBh
bGlnbmVkIHRvIDggYnl0ZXMuCiAgICAgLy8KICAgICAvLyBJZiBhIHdyaXRpbmcgY2xpZW50IGlz
IHByZXNlbnQgYW5kIHJlcXVpcmVzIGN1c3RvbSBlbmNvZGluZyBmb3IgdGhlIGdpdmVuIGl0ZW0g
dHlwZSBULCB0aGUKLSAgICAvLyBpdGVtIGJ1ZmZlciB3aWxsIGFzayB0aGUgY2xpZW50IGZvciBh
biBvcGFxdWUgU2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgZW5jb2RlZCBkYXRhIGZvciB0aGUKKyAg
ICAvLyBpdGVtIGJ1ZmZlciB3aWxsIGFzayB0aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGVuY29kZWQgZGF0YSBmb3IgdGhlCiAgICAgLy8g
aXRlbS4gVGhpcyBlbmNvZGVkIGRhdGEgaXMgdGhlbiBhcHBlbmRlZCB0byB0aGUgaXRlbSBidWZm
ZXIsIHdpdGggcGFkZGluZyB0byBlbnN1cmUgdGhhdAogICAgIC8vIHRoZSBzdGFydCBhbmQgZW5k
IG9mIHRoaXMgZGF0YSBhcmUgYWxpZ25lZCB0byA4IGJ5dGVzLCBpZiBuZWNlc3NhcnkuIFdoZW4g
Y29uc3VtaW5nIGVuY29kZWQKICAgICAvLyBpdGVtIGRhdGEsIGEgY29ycmVzcG9uZGluZyBJdGVt
QnVmZmVyUmVhZGluZ0NsaWVudCB3aWxsIGJlIHJlcXVpcmVkIHRvIGNvbnZlcnQgdGhpcyBlbmNv
ZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNw
cAppbmRleCA1MDZiNGRkNjJkNTVhNTZhMjc4YzMwY2NhYjJkMTkxMTBmMjQxZWVjLi4yYjQ0M2Zi
YmVkMmMxZmRlNDhiY2RlOWNiZTQwOTUzNDk3ZmRlOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJl
ZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyB2b2lkIHJlbGVhc2VDdXN0b21Gb250RGF0YSh2
b2lkKiBkYXRhKQogewotICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJl
ZigpOworICAgIHN0YXRpY19jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVy
ZWYoKTsKIH0KIAogc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBmcmVlVHlwZUZhY2VLZXk7
CiAKLUZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFj
ZSBmcmVlVHlwZUZhY2UsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9GYWNlIGZyZWVUeXBlRmFjZSwgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIDogbV9mb250RmFjZShhZG9wdFJlZihjYWly
b19mdF9mb250X2ZhY2VfY3JlYXRlX2Zvcl9mdF9mYWNlKGZyZWVUeXBlRmFjZSwgRlRfTE9BRF9E
RUZBVUxUKSkpCiB7CiAgICAgYnVmZmVyLnJlZigpOyAvLyBUaGlzIGlzIGJhbGFuY2VkIGJ5IHRo
ZSBidWZmZXItPmRlcmVmKCkgaW4gcmVsZWFzZUN1c3RvbUZvbnREYXRhLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRleCA5YWQxOWI4NzZiMjdlNjBkNGZiYTUwMzBl
NjVmODFlN2NhOGE1MDY5Li5kZmJjNTgwZmI4ZTliMzA5MzZjY2EwOGJiODhiNDljMmJiNjUzYWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtODEsMTIgKzgx
LDEyIEBAIEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRl
cikKICAgICByZXR1cm4gKEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZSopaXRlci0+c2Vjb25k
LmdldCgpOwogfQogCi1SZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBJbWFnZURlY29kZXJH
U3RyZWFtZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBn
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+
IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJHU3RyZWFtZXIoZGF0YSwgbWltZVR5
cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogfQogCi1JbWFn
ZURlY29kZXJHU3RyZWFtZXI6OkltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXImIGRh
dGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVy
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICA6IG1fbWltZVR5cGUo
bWltZVR5cGUpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwpAQCAtMTk5
LDcgKzE5OSw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCkKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wpCiB7CiAgICAgcHVzaEVuY29kZWREYXRhKGRhdGEp
OwogfQpAQCAtNDI2LDEwICs0MjYsMTEgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKICAgICBy
ZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OlVua25vd247CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2
b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX2VvcyA9IGZhbHNlOwotICAgIGF1dG8gdGhy
ZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRh
ID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAgICBhdXRvIHRocmVh
ZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9
IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKICAgICAg
ICAgbV9pbm5lckRlY29kZXIgPSBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6
Y3JlYXRlKCp0aGlzLCBkYXRhLCBzaXplKTsKICAgICAgICAgbV9pbm5lckRlY29kZXItPnJ1bigp
OwogICAgIH0sIFRocmVhZFR5cGU6OkdyYXBoaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuaAppbmRleCA2NmYzMzcyODQ2YTRkZjg3NGY0MjBkYjY1NGU2ODljOWU0M2IwYzUy
Li5kM2VmNmE0NWNkN2RiZGZjMzEyMGVhMjNmOGRlYjNjNTk5NzFhZTk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIEltYWdlRGVj
b2RlckdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2RlckdT
dHJlYW1lcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFt
ZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwotICAgIEltYWdlRGVjb2RlckdTdHJl
YW1lcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7Cisg
ICAgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlckdTdHJlYW1lcigpID0gZGVmYXVsdDsKIAogICAg
IHN0YXRpYyBib29sIHN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSB0eXBlKSB7IHJldHVybiB0
eXBlID09IE1lZGlhVHlwZTo6VmlkZW87IH0KQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAg
IFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1w
bGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRp
b25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7
CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0K
LSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZp
bmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2VvczsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNp
emVfdCkgZmluYWw7CiAKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAg
ICB2b2lkIGhhbmRsZVNhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4mJik7Ci0gICAgdm9pZCBwdXNo
RW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBwdXNoRW5jb2RlZERh
dGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyU2FtcGxlKiBzYW1wbGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNzk3OTQ4
MGY5MWM1OTdhYTlmOTAwOTdjMTg4MzJjNmExNWMzMmNlOC4uYjMyNGNmMTE0NjQ3YjMzNzVlNmE0
NWJmYWIxMDNlMGEyOTBmYjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM2OTIsNyArMzY5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChJbml0RGF0YSYm
IGluaXRECiAKICAgICAgICAgR1NUX0RFQlVHKCJzY2hlZHVsaW5nIGluaXRpYWxpemF0aW9uRGF0
YUVuY291bnRlcmVkICVzIGV2ZW50IG9mIHNpemUgJXp1IiwgaW5pdERhdGEucGF5bG9hZENvbnRh
aW5lclR5cGUoKS51dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgaW5pdERhdGEucGF5bG9hZCgp
LT5zaXplKCkpOwotICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpKSwgaW5pdERh
dGEucGF5bG9hZCgpLT5zaXplKCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogICAg
ICAgICB3ZWFrVGhpcy0+bV9wbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGlu
aXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCksIGluaXREYXRhLnBheWxvYWQoKS0+dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJT
b3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDVkODZmYjFhZjQ4N2MwMjg5ZTAwMTI1NTk2NWMzMWRj
ZGE5NzM0MjYuLjkzMDE5MDk5NDViNGEyM2Q2Njc4MmYzNTBiNTZlNDQ3OWY4MDI2ZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3
IEBAIHByaXZhdGU6CiAKICAgICAvLyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgdmlydHVh
bCBtZXRob2RzLgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91
bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENo
ZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpA
QCAtMTA5Myw3ICsxMDkzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6
cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb24KICAgICBjb21wbGV0
aW9uSGFuZGxlcihTaG91bGRDb250aW51ZVBvbGljeUNoZWNrOjpZZXMpOwogfQogCi12b2lkIENh
Y2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNl
U3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCmluZGV4IDY5MmE5OTZkMTlj
MjRlZmQ5YTQ4NTUyMzczYTU2NzliNTJlMWVmMWMuLjM0OWJmZGNhYWQ2YzdkN2Y4ZDVhZGEwYTE3
MjE5ZmQ5ZTcwNjI2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCkBAIC02
MiwxMSArNjIsMTEgQEAgcHVibGljOgogICAgIENETVByb3h5Q2xlYXJLZXkoKSA9IGRlZmF1bHQ7
CiAgICAgdmlydHVhbCB+Q0RNUHJveHlDbGVhcktleSgpOwogCi0gICAgLy8gRklYTUU6IFRoZXJl
J3MgYSBsYWNrIG9mIGNvbnNpc3RlbmN5IGJldHdlZW4gU2hhcmVkQnVmZmVycywKKyAgICAvLyBG
SVhNRTogVGhlcmUncyBhIGxhY2sgb2YgY29uc2lzdGVuY3kgYmV0d2VlbiBGcmFnbWVudGVkU2hh
cmVkQnVmZmVycywKICAgICAvLyBWZWN0b3I8Y2hhcj4ncyBhbmQge3VpbnQ4X3QqLHNpemVfdH0g
aWRpb21zIGZvciByZXByZXNlbnRpbmcgYSBjaHVuayBvZgotICAgIC8vIGJ5dGVzLiBGaXggdGhh
dCBzb21laG93LiBOb3RlIFNoYXJlZEJ1ZmZlcnMgYXJlIGRhbmdlcm91cyBzaW5jZQorICAgIC8v
IGJ5dGVzLiBGaXggdGhhdCBzb21laG93LiBOb3RlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJzIGFy
ZSBkYW5nZXJvdXMgc2luY2UKICAgICAvLyB0aGV5J3JlIG5vdCB0aHJlYWQtc2FmZSBhbmQgdGhp
cyBjbGFzcyBtdXN0IG1haW50YWluCi0gICAgLy8gdGhyZWFkLXNhZmV0eSwgYnV0IG1heWJlIFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQgY291bGQgYmUKKyAgICAvLyB0aHJlYWQtc2FmZXR5LCBi
dXQgbWF5YmUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQgY291bGQgYmUKICAg
ICAvLyBtYWRlIHRvIHdvcmssIGhvd2V2ZXIgdGhhdCBoYXMgemVybyBoZWxwZXJzIGZvciBkcm9w
cGluZyBpbnRvCiAgICAgLy8gaXRlcmF0b3ItYXdhcmUgLyBjb21wYXJhdG9yLWF3YXJlIGNvbnRh
aW5lcnMuLi4KICAgICBzdHJ1Y3QgY2VuY0RlY3J5cHRDb250ZXh0IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRo
dW5kZXIuY3BwCmluZGV4IDJlZmEwNDM2MGU4ODQ4MzgwNjE0NGMzZDcxZGU2M2FkN2I0MmI1NjEu
LmMzODkxNmU3ZDA1OWU4ODliNWM4OGVlYjA5ZTBmNGNmYzAzYzFkYjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9D
RE1UaHVuZGVyLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6
OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENE
TVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJp
dmF0ZVRodW5kZXI6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAg
ICAvLyBWYWxpZGF0ZSB0aGUgaW5pdERhdGEgYnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0IGluIGtl
eWlkcyBjYXNlLgogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0
YVR5cGUsICJrZXlpZHMiKSAmJiBDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdChpbml0RGF0
YSkpCkBAIC0yMzcsNyArMjM3LDcgQEAgYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFMKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVUaHVuZGVyOjpz
YW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZVRodW5kZXI6OnNhbml0aXplUmVz
cG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKIH0KQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIENE
TUluc3RhbmNlVGh1bmRlcjo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYQogICAgIGNhbGxiYWNrKFN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgQ0RN
SW5zdGFuY2VUaHVuZGVyOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYm
IGNlcnRpZmljYXRlLCAgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3Rh
bmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgY2VydGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBP
cGVuQ0RNRXJyb3IgZXJyb3IgPSBvcGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2NlcnRpZmljYXRl
KG1fdGh1bmRlclN5c3RlbS5nZXQoKSwgY29uc3RfY2FzdDx1aW50OF90Kj4oY2VydGlmaWNhdGUt
PmRhdGEoKSksCiAgICAgICAgIGNlcnRpZmljYXRlLT5zaXplKCkpOwpAQCAtMzI2LDcgKzMyNiw3
IEBAIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNlVGh1bmRlcjo6Y3JlYXRl
U2Vzc2lvbigpCiBjbGFzcyBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgewogCiBwdWJsaWM6Ci0gICAg
UGFyc2VkUmVzcG9uc2VNZXNzYWdlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
CisgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlKGNvbnN0IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKQogICAgIHsKICAgICAgICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+
c2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzU0LDggKzM1NCw4IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQogICAgIGJv
b2wgaGFzUGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fcGF5bG9h
ZCk7IH0KLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0JiB7IEFT
U0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KLSAgICBSZWY8U2hh
cmVkQnVmZmVyPiYgcGF5bG9hZCgpICYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5
bG9hZC52YWx1ZSgpOyB9CisgICAgY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBw
YXlsb2FkKCkgY29uc3QmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxvYWQudmFs
dWUoKTsgfQorICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpICYgeyBB
U1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CiAgICAgYm9vbCBo
YXNUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlLmhhc192YWx1ZSgpOyB9CiAgICAgV2ViQ29y
ZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSB0eXBlKCkgY29uc3QgeyBBU1NFUlQobV90eXBlKTsgcmV0
dXJuIG1fdHlwZS52YWx1ZSgpOyB9CiAgICAgV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSB0
eXBlT3IoV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSBhbHRlcm5hdGUpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZSA/IG1fdHlwZS52YWx1ZSgpIDogYWx0ZXJuYXRlOyB9CkBAIC0zNjQsMTEgKzM2
NCwxMSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzVmFsaWQgeyBmYWxzZSB9
OwotICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IG1fcGF5bG9hZDsKKyAgICBz
dGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9wYXlsb2FkOwogICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZT4gbV90eXBlOwogfTsK
IAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxs
YmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uVGh1bmRlcjo6Y2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJz
ZWRSZXNwb25zZU1lc3NhZ2UoYnVmZmVyKTsKICAgICBpZiAoIXBhcnNlZFJlc3BvbnNlTWVzc2Fn
ZSkgewpAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6
a2V5c1VwZGF0ZURvbmVDYWxsYmFjaygpCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5j
bGVhcigpOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJh
Y2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IG1lc3NhZ2UpCiB7CiAgICAgR1NUX0VSUk9SKCJDRE0gZXJyb3IiKTsKICAgICBHU1RfTUVNRFVN
UCgiZXJyb3IgZHVtcCIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKQEAgLTQ4
OCw3ICs0ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJh
Y2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogICAgIG1fc2Vzc2lvbkNoYW5nZWRD
YWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhU2hhcmVkQnVmZmVyLAor
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YVNoYXJlZEJ1ZmZlciwKICAgICBMaWNlbnNlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtNTA2
LDcgKzUwNiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0CiAgICAgICAgIG1faW5pdERhdGEu
cGF5bG9hZCgpLT5kYXRhKCksIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCksIG51bGxwdHIs
IDAsICZtX3RodW5kZXJTZXNzaW9uQ2FsbGJhY2tzLCB0aGlzLCAmc2Vzc2lvbik7CiAgICAgaWYg
KCFzZXNzaW9uKSB7CiAgICAgICAgIEdTVF9FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBzZXNzaW9u
Iik7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5w
YXlsb2FkKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0
YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOwogICAgICAgICBjYWxsYmFjayhpbml0RGF0YS5yZWxl
YXNlTm9uTnVsbCgpLCB7IH0sIGZhbHNlLCBGYWlsZWQpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0CiAKICAgICBhdXRv
IGdlbmVyYXRlQ2hhbGxlbmdlID0gW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CisgICAg
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEu
cGF5bG9hZCgpOwogICAgICAgICBpZiAobV9zZXNzaW9uSUQuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBHU1RfRVJST1IoImNvdWxkIG5vdCBjcmVhdGUgc2Vzc2lvbiBpZCIpOwogICAgICAgICAg
ICAgY2FsbGJhY2soaW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgeyB9LCBmYWxzZSwgRmFpbGVk
KTsKQEAgLTU0NSwxMyArNTQ1LDEzIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6
c2Vzc2lvbkZhaWx1cmUoKQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsK
IH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNw
b25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExp
Y2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9u
SUQsIHNlc3Npb25JRCA9PSBtX3Nlc3Npb25JRCk7CiAKICAgICBHU1RfVFJBQ0UoIlVwZGF0aW5n
IHNlc3Npb24gJXMiLCBzZXNzaW9uSUQudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBtX3Nlc3Npb25D
aGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkg
bXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKICAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAg
IGlmICghcmVzcG9uc2VNZXNzYWdlKQpAQCAtNTYyLDcgKzU2Miw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwg
TGljZW5zZVR5CiAgICAgICAgICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJl
c3BvbnNlTWVzc2FnZShyZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIEFTU0VSVChw
YXJzZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25z
ZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRC
dWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkp
OworICAgICAgICAgICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2Fn
ZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIEdTVF9ERUJVRygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5z
aXplKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3Nh
Z2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJh
Y2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LApAQCAtNTg2LDcgKzU4Niw3IEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUs
IGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQs
IHNlc3Npb25JRCA9PSBtX3Nlc3Npb25JRCk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJh
Y2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNj
ZXNzLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7Cisg
ICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghcmVzcG9u
c2VNZXNzYWdlKQpAQCAtNTk3LDcgKzU5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1
bmRlcjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiAg
ICAgICAgICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2Fn
ZShyZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25z
ZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFz
UGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3Nh
Z2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOworICAgICAgICAg
ICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUo
cGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdT
VF9ERUJVRygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwogICAg
ICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwg
bWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bWFrZV9wYWlyKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS50
eXBlT3IoTWVkaWFLZXlNZXNzYWdlVHlwZTo6TGljZW5zZVJlcXVlc3QpLApAQCAtNjQwLDcgKzY0
MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2VuCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNz
aW9uSUQsIG1fc2Vzc2lvbklEID09IHNlc3Npb25JRCk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2Vk
Q2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9v
bCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgbXV0YWJsZSB7CisgICAg
bV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtNjQ5LDcg
KzY0OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2VuCiAgICAgICAgICAgICAgICAgUGFyc2Vk
UmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShidWZmZXIpOwogICAgICAgICAg
ICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGlm
IChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVz
c2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQo
KSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygic2Vzc2lvbiAlcyByZW1vdmVkLCBt
ZXNzYWdlIGxlbmd0aCAlenUiLCBtX3Nlc3Npb25JRC51dGY4KCkuZGF0YSgpLCBtZXNzYWdlLT5z
aXplKCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhtX2tleVN0b3JlLmFsbEtleXNB
cyhNZWRpYUtleVN0YXR1czo6UmVsZWFzZWQpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBTdWNjZXNzVmFs
dWU6OlN1Y2NlZWRlZCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVu
ZGVyLmgKaW5kZXggY2RkOGRhMjExMjNjMTc5MWFlMmZiNjQzOWZmMmQ2ZmEwZDJlYjIxYy4uMTAy
MGUxNTMyMjcxYjUzNTFlMTA2ZGRlOGYyMWVhNTQwNWE5YzIzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVu
ZGVyLmgKQEAgLTkzLDggKzkzLDggQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxp
emUoKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7Ci0gICAgYm9v
bCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXIm
KSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNv
bnN0IGZpbmFsOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJl
c3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29u
c3QgZmluYWw7CiAKIHByaXZhdGU6CkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIC8v
IENETUluc3RhbmNlCiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6VGh1bmRlcjsgfQogICAg
IHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0
YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAg
dm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
U3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShj
b25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fa2V5U3lzdGVtOyB9CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vz
c2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAtMTI2LDggKzEyNiw4IEBAIGNsYXNzIENE
TUluc3RhbmNlU2Vzc2lvblRodW5kZXIgZmluYWwgOiBwdWJsaWMgQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkgewogcHVibGljOgogICAgIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXIoQ0RNSW5zdGFu
Y2VUaHVuZGVyJik7CiAKLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEs
IExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVD
YWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNl
c3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNz
aW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5n
JiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9u
RGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFj
ayYmKSBmaW5hbDsKQEAgLTE0MSwxNCArMTQxLDE0IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
Q0RNSW5zdGFuY2VUaHVuZGVyKiBjZG1JbnN0YW5jZVRodW5kZXIoKSBjb25zdDsKIAotICAgIHVz
aW5nIE5vdGlmaWNhdGlvbiA9IHZvaWQgKENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OiopKFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9
IHZvaWQgKENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OiopKFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB1c2luZyBDaGFsbGVuZ2VHZW5lcmF0ZWRDYWxs
YmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47Ci0gICAgdXNpbmcgU2Vzc2lvbkNoYW5nZWRDYWxsYmFj
ayA9IEZ1bmN0aW9uPHZvaWQoYm9vbCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+OworICAgIHVz
aW5nIFNlc3Npb25DaGFuZ2VkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGJvb2wsIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT47CiAKLSAgICB2b2lkIGNoYWxsZW5nZUdlbmVyYXRl
ZENhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgY2hhbGxlbmdlR2Vu
ZXJhdGVkQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZv
aWQga2V5VXBkYXRlZENhbGxiYWNrKEtleUlEVHlwZSYmKTsKICAgICB2b2lkIGtleXNVcGRhdGVE
b25lQ2FsbGJhY2soKTsKLSAgICB2b2lkIGVycm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJik7CisgICAgdm9pZCBlcnJvckNhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKTsKICAgICBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1cyBzdGF0dXMoY29uc3Qg
S2V5SURUeXBlJikgY29uc3Q7CiAgICAgdm9pZCBzZXNzaW9uRmFpbHVyZSgpOwogCkBAIC0xNTks
NyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICBJbml0RGF0YSBtX2luaXREYXRhOwogICAgIE9wZW5D
RE1TZXNzaW9uQ2FsbGJhY2tzIG1fdGh1bmRlclNlc3Npb25DYWxsYmFja3MgeyB9OwogICAgIEJv
eFB0cjxPcGVuQ0RNU2Vzc2lvbj4gbV9zZXNzaW9uOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fbWVzc2FnZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdl
OwogICAgIGJvb2wgbV9uZWVkc0luZGl2aWR1YWxpemF0aW9uIHsgZmFsc2UgfTsKICAgICBWZWN0
b3I8Q2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2s+IG1fY2hhbGxlbmdlQ2FsbGJhY2tzOwogICAg
IFZlY3RvcjxTZXNzaW9uQ2hhbmdlZENhbGxiYWNrPiBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCmluZGV4IDNm
ODVhZmU3M2M4NDI3NjI5OTdkNWFiYzJkN2JjMDdmN2MwMWI5YzMuLmVhODkwZjY3ZGEyMTM4N2Y0
MGRhNjUxYTBjYTVjNzM0OTNlODRmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1l
ckVNRVV0aWxpdGllcy5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIHZvaWQgbWFya3VwRXJy
b3IoR01hcmt1cFBhcnNlQ29udGV4dCosIEdFcnJvciosIGdwb2ludGVyKQogCiBzdGF0aWMgR01h
cmt1cFBhcnNlciBtYXJrdXBQYXJzZXIgeyBtYXJrdXBTdGFydEVsZW1lbnQsIG1hcmt1cEVuZEVs
ZW1lbnQsIG1hcmt1cFRleHQsIG1hcmt1cFBhc3N0aHJvdWdoLCBtYXJrdXBFcnJvciB9OwogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIHVucGFyc2VkUGF5bG9hZCkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXlsb2Fk
ID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOwogICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9h
ZC0+c2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5k
ZXggZDVhZmY4NDVmNDA5YTc1ZDcxYTk4NDBhY2YxZDM0MmE0NjQ3ZDJmMS4uMjdkZDRlYWUwZDJl
MDFhYjRkODRjMGFiYzQyNGViYjEwMTA0YzA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJl
YW1lckVNRVV0aWxpdGllcy5oCkBAIC0zOCw4ICszOCw3IEBAIEdTVF9ERUJVR19DQVRFR09SWV9F
WFRFUk4od2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdv
cnkpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbml0RGF0YSB7CiBwdWJsaWM6Ci0gICAg
SW5pdERhdGEoKQotICAgICAgICA6IG1fcGF5bG9hZChTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKSB7
IH0KKyAgICBJbml0RGF0YSgpID0gZGVmYXVsdDsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
aGF2ZSBhbiBlbnVtIGZvciBzeXN0ZW0gdXVpZHMgZm9yIGJldHRlciB0eXBlIHNhZmV0eS4KICAg
ICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBHc3RCdWZmZXIqIGluaXREYXRhKQpA
QCAtNTAsMTMgKzQ5LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdTVF9DQVRfTEVWRUxfTE9H
KHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5LCBH
U1RfTEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHByb3RlY3Rpb24gZGF0YSIs
IHN5c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZCht
YXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBpZiAoYXV0byBw
YXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRl
U2hhcmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXls
b2FkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAotICAgIEluaXREYXRhKGNvbnN0IFN0cmlu
ZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKKyAgICBJbml0RGF0
YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9w
YXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RGTW92ZShwYXlsb2FkKSkpCiAgICAgeworICAg
ICAgICBpZiAocGF5bG9hZCkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9
IGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSkpCisgICAgICAg
ICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmQoSW5pdERhdGEmJiBpbml0RGF0
YSkKQEAgLTcyLDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGl0J3Mgbm90IHZlcnkg
cm9idXN0LCBzbyBiZSBjYXJlZnVsIGhlcmUhCiAgICAgICAgIG1fc3lzdGVtSWQgPSBpbml0RGF0
YS5tX3N5c3RlbUlkOwogCi0gICAgICAgIG1fcGF5bG9hZC0+YXBwZW5kKCppbml0RGF0YS5wYXls
b2FkKCkpOworICAgICAgICBtX3BheWxvYWQuYXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwog
ICAgIH0KIAotICAgIGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3Qg
eyByZXR1cm4gbV9wYXlsb2FkOyB9CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQuZ2V0KCk7IH0KICAgICBjb25zdCBT
dHJpbmcmIHN5c3RlbUlkKCkgY29uc3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogICAgIFN0cmlu
ZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgpIGNvbnN0CiAgICAgewpAQCAtODYsMTEgKzg5LDExIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZXh0cmFj
dENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBT
dHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3BheWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9u
U3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDcxOGI5YmQzMTVl
Y2M2NzA3ODljNjVjYmFhYTAzNDkyOTc1ZTcyZDMuLjY5MjhhNjNlOTcxYzdjMzVlODg0NGVlZjcz
YmZhNDRhOGQ4YzAzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzYsNyArMzYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xh
c3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmls
aXRpZXM7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlw
ZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1h
Z2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1l
bnRJbWFnZU1hYy5tbQppbmRleCA4M2U2YWY3YjAzODkyODM4YzNiZmVhMWMwYzExYWE3ZmNmOGE3
N2E5Li42OGJjYzg4NDZhOGIxZjBmN2NiY2YxNDAzMTk2NmVkOTI0MzIyYzJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1l
bnRJbWFnZU1hYy5tbQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZv
aWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIG1fZG9jdW1l
bnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0
YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFth
bGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogfQogCiB2b2lkIFBERkRvY3VtZW50SW1h
Z2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
aAppbmRleCAwOWMxYzQ1YzQ1OTNhZWE0MzE4MzBkMjE1YjdlNzQ4NTJjMTllMzdmLi5mYTAwMDgx
MTYwNjY5N2RjNWM1MTEyMzMzYzkwYzhjOTJiNGI2NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0
aWVzLmgKQEAgLTM1LDkgKzM1LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBC
aWdFbmRpYW5VU2hvcnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRU9UUHJlZml4Owog
Y2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IEVPVEhlYWRlciB7CiAgICAgRU9USGVhZGVy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5kZXggMmNmYTg1NGMwMjI2
NjhhY2MwMDczN2MxZWJiMzVmZjM0OGQ1OGUyYi4uMGZhOGYzMDZhZDk1MmQwNmEwOTI5N2QwYjFk
Mjg3Yjg5ODgzMmEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApAQCAt
MzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogCiBzdGF0aWMg
Ym9vbCBsb2FkSG10eFRhYmxlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwg
VmVjdG9yPHVpbnQxNl90PiYgYWR2YW5jZVdpZHRocykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRh
Zyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlw
ZTo6SGhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5U
eXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpIaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYg
KCFoaGVhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjQsNyArNDI0LDcgQEAgT3BlblR5
cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVydGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNz
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKICAgICAvLyBMb2FkIHZo
ZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMgcmVxdWlyZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2
ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3Jt
RGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKICAgICBjb25z
dCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3Bl
blR5cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIXZoZWEpCiAgICAgICAgIHJldHVy
bjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0
cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5
cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBGb250
UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwor
ICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdT
VUJUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpHU1VCVGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6
dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NVQlRhYmxlPihidWZmZXIpOwogICAgIGlmIChnc3Vi
KQogICAgICAgICBnc3ViLT5nZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNh
bEdseXBoTWFwLCAqYnVmZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKaW5kZXggYTYy
NzE5YjE3MTlhNzRmOTc2OTIyMTlkZjVmN2FhZWRjNDkwNjQ2Ni4uMGRiNGFmYWRiM2Y3NDJiODNh
NGUxNmNmMzcxODcwYTJiMDQwNGVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKQEAgLTQzLDcg
KzQzLDcgQEAgZW51bSBEV1JJVEVfRk9OVF9TVFJFVENIOwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIERpcmVjdFdyaXRlIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNWYxMGY3MzkyZDA0YzM0NGQxMmNlZTQyNjZlZGIxZWU5
OTcxYzRlZi4uMDhmYzlmMTllYWVhOTQ4M2VhNThlYzFhZWVkZDQ1NzI1NmNlMjdiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zNiwxMiArMzYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3Qg
Q0dGb250KiBDR0ZvbnRSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlv
bjsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVj
dCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50
U2V0dGluZ3M7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0
dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAK
aW5kZXggNjI5ZTBlNjFhMTA0YzU2N2ExZDRlZGNiN2U1Nzk3ZGNmNjdjNmU4ZS4uNzczNTczOWI5
MzM0ZjQ0ZDk5YTNmMTJmZmM1YmY3YjQxZjdjYzZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQu
Y3BwCkBAIC0yNzIsNyArMjcyLDcgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJEaXJl
Y3QyRDo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWIKICAgICByZXR1
cm4gYml0bWFwOwogfQogCi12b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckRp
cmVjdDJEOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQogewogICAgIGlmICghYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VE
ZWNvZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5oCmluZGV4IDRmNDcyNTg2YjQyNGJkYTFjZjZmYTAxNDNjYmEy
M2QwMzAwMTZlNDUuLmMyMzY1ZmQ3NDRjNjExOGMxOTk5ZTA1YjgwMmVkNWI0OGYzNjQ4MjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29k
ZXJEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEltYWdlRGVjb2Rl
ckRpcmVjdDJEIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6CiAgICAgSW1h
Z2VEZWNvZGVyRGlyZWN0MkQoKTsKIAotICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyRGlyZWN0
MkQ+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJEaXJlY3QyRD4gY3JlYXRlKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJE
aXJlY3QyRCgpKTsKICAgICB9CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRm
b3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9
IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAg
ICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFs
OworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVm
ZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAKaW5kZXggMGQ4ODIwZTlmM2Q2ZmQ3NzM1ZDU3
MGIzNjQxNDg4ZjUzYmQ3ZWNlOS4uMmQ5NzI3MGE3MzQ4MzQ4OTNlNzhjODFmZjBlYzViYjVkZmVj
M2Y4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VXaW4uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAK
IC8vIFRoaXMgZnVuY3Rpb24gbG9hZHMgcmVzb3VyY2VzIGZyb20gV2ViS2l0Ci1SZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsK
K1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRv
QnVmZmVyKGNvbnN0IGNoYXIqKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVj
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJs
ZUltYWdlRGVjb2Rlci5jcHAKaW5kZXggZDk1NmQ5ZTc2MjVkNWJiNWE3MGYwNjkzZTc3OThlZTkw
ODQ5ZjE2NS4uMzNjOTVlYzMzMzNhOTIwYzY0YTAxODE3NTFlYjRhNTA1ZWYxYTdhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIG5hbWVzcGFjZSB7CiAKLXN0YXRpYyB1bnNpZ25lZCBjb3B5RnJvbVNoYXJlZEJ1
ZmZlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QgU2hhcmVkQnVm
ZmVyJiBzaGFyZWRCdWZmZXIpCitzdGF0aWMgdW5zaWduZWQgY29weUZyb21TaGFyZWRCdWZmZXIo
Y2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikKIHsKICAgICB1bnNpZ25lZCBieXRlc0V4dHJhY3RlZCA9
IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogc2hhcmVkQnVmZmVyKSB7CkBAIC0x
MzUsNyArMTM1LDcgQEAgYm9vbCBtYXRjaGVzQ1VSU2lnbmF0dXJlKGNoYXIqIGNvbnRlbnRzKQog
CiB9CiAKLVJlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gU2NhbGFibGVJbWFnZURlY29kZXI6
OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0
cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGxlbmd0aE9mTG9uZ2VzdFNpZ25hdHVyZSA9IDE0OyAvLyBU
byB3aXQ6ICJSSUZGPz8/P1dFQlBWUCIKICAgICBjaGFyIGNvbnRlbnRzW2xlbmd0aE9mTG9uZ2Vz
dFNpZ25hdHVyZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCAzMmQ0ZTZmOGI4ZmEx
NGExM2JmYjYyMmQ4NzU3MDg3OThiOTlkYWEyLi45YzQwNTU3ODI0MWQwYzUxMjcwMjk1MTVjMjIx
MjY1OGY4YzRmNjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTYwLDcgKzYwLDcg
QEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyBudWxscHRyIGlmIHdlIGNhbid0IHNuaWZmIGEg
c3VwcG9ydGVkIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgZGF0YSAocG9zc2libHkKICAgICAvLyBi
ZWNhdXNlIHRoZXJlIGlzbid0IGVub3VnaCBkYXRhIHlldCkuCi0gICAgc3RhdGljIFJlZlB0cjxT
Y2FsYWJsZUltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNjYWxh
YmxlSW1hZ2VEZWNvZGVyPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQogCkBAIC03
MCwxNiArNzAsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1
cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxldGU7CiAgICAgfQogCi0gICAgdm9pZCBzZXRE
YXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlCisg
ICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9j
ayB9OwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1
czo6RXJyb3IpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGRhdGEuZGF0YSgp
KSB7Ci0gICAgICAgICAgICAvLyBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb21iaW5lcyBhbGwgc2Vn
bWVudHMgaW50byBvbmUgaW4gY2FzZSB0aGVyZSdzIG1vcmUgdGhhbiBvbmUuCi0gICAgICAgICAg
ICBtX2RhdGEgPSBkYXRhLmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwotICAgICAgICB9Cisg
ICAgICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAg
ICAgIGlmIChjb250aWd1b3VzRGF0YS0+ZGF0YSgpKQorICAgICAgICAgICAgbV9kYXRhID0gY29u
dGlndW91c0RhdGEtPmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwogICAgICAgICBpZiAobV9l
bmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewog
ICAgICAgICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRydWU7CiAgICAgICAgICAg
ICB0cnlEZWNvZGVTaXplKGFsbERhdGFSZWNlaXZlZCk7CkBAIC0xOTUsNyArMTk0LDcgQEAgcHVi
bGljOgogICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CiAgICAgVmVjdG9yPFNjYWxhYmxlSW1hZ2VE
ZWNvZGVyRnJhbWUsIDE+IG1fZnJhbWVCdWZmZXJDYWNoZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1f
bG9jayk7CiAgICAgbXV0YWJsZSBMb2NrIG1fbG9jazsKICAgICBib29sIG1fcHJlbXVsdGlwbHlB
bHBoYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcAppbmRleCA3YzYwM2ZkODM1OGMyMTRh
YzkxODRmMzE4OTk3MmZlODQxYjYxZTgwLi4yNmY4ODY0OTZlNWE1YTE0ZTI4YWZiMWFmYTliZmMz
MDE3N2Y1MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCkBAIC00MSw3ICs0MSw3
IEBAIEFWSUZJbWFnZVJlYWRlcjo6QVZJRkltYWdlUmVhZGVyKFJlZlB0cjxBVklGSW1hZ2VEZWNv
ZGVyPiYmIGRlY29kZXIpCiAKIEFWSUZJbWFnZVJlYWRlcjo6fkFWSUZJbWFnZVJlYWRlcigpID0g
ZGVmYXVsdDsKIAotYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorYm9vbCBB
VklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoYXZp
ZkRlY29kZXJTZXRJT01lbW9yeShtX2F2aWZEZWNvZGVyLmdldCgpLCBkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpICE9IEFWSUZfUkVTVUxUX09LKQogICAgICAgICByZXR1cm4gYWxsRGF0YVJlY2Vp
dmVkID8gbV9kZWNvZGVyLT5zZXRGYWlsZWQoKSA6IGZhbHNlOwpAQCAtNTgsNyArNTgsNyBAQCBi
b29sIEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudCYgZGF0YSwgYm9vbCBhbAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFWSUZJ
bWFnZVJlYWRlcjo6ZGVjb2RlRnJhbWUoc2l6ZV90IGZyYW1lSW5kZXgsIFNjYWxhYmxlSW1hZ2VE
ZWNvZGVyRnJhbWUmIGJ1ZmZlciwgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0
YSkKK3ZvaWQgQVZJRkltYWdlUmVhZGVyOjpkZWNvZGVGcmFtZShzaXplX3QgZnJhbWVJbmRleCwg
U2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYgYnVmZmVyLCBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkKIHsKICAgICBpZiAobV9kZWNvZGVyLT5mYWlsZWQo
KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgKaW5kZXggY2JjYTBi
OGMxMjRiZmYwZmZjMzMwMWJhMzViY2UwMWVkMjcyMmRmOC4uNDk2ZjY5ZjgxMmJkNzViMGVkYTYz
NTdiYWE4NjBjZmNjYjViYTRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCkBAIC0zOSw4
ICszOSw4IEBAIHB1YmxpYzoKICAgICBBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJbWFnZURl
Y29kZXI+JiYpOwogICAgIH5BVklGSW1hZ2VSZWFkZXIoKTsKIAotICAgIGJvb2wgcGFyc2VIZWFk
ZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KTsKLSAgICB2b2lkIGRlY29kZUZyYW1lKHNpemVfdCBpbmRleCwgU2NhbGFibGVJbWFnZURlY29k
ZXJGcmFtZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKTsKKyAgICBib29sIHBh
cnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4LCBT
Y2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQmKTsKICAgICBzaXplX3QgaW1hZ2VDb3VudCgpIGNvbnN0OwogICAgIGRvdWJs
ZSByZXBldGl0aW9uQ291bnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApp
bmRleCA3Mjc2OWE2OTI2ZWMyNDE5YmY2NjM4MjUyOGQzZDc3MjBhNTRhZGFlLi5mNzQ1NWMxNDZj
N2U4YWViMDRjYzhjNTZmMzMwZTJhMDFmM2JhNzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVy
LmNwcApAQCAtNDYsNyArNDYsNyBAQCBCTVBJbWFnZURlY29kZXI6OkJNUEltYWdlRGVjb2RlcihB
bHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogewogfQogCi12
b2lkIEJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQordm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxl
ZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzdjN2Nh
ODFmZWE2YjhhNzc0YmIzMDhlNTM4ZGNkMDQ4Yzk5NWVlYS4uNjRkZWQ2YWJiZTJjMGEyOWIxMWY5
ZmI1ZWNkNmI0ODcyNGQ1ODk3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaApAQCAtNDQsNyAr
NDQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmlu
ZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJibXAiX3M7IH0KLSAg
ICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFs
OworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIGZpbmFsOwogICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVm
ZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIGZpbmFsOwogICAgIC8vIENBVVRJT046IHNldEZhaWxl
ZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gQmUgY2FyZWZ1bCB0byBhdm9pZAogICAgIC8vIGFjY2Vz
c2luZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxseSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9tIGlu
c2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaAppbmRleCA0ODQ0ZjM4MGRjMTdlYzcwNDU4OGZiMTJm
NTNlYWJjNmQyMGU2MGY0Li5iZDQzMGU4YThiZWEyYzgxNmIyYzUyMmJmNWJhNzg4NDZjMzhlMGZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAv
Qk1QSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBCTVBJbWFn
ZVJlYWRlciB7CiBwdWJsaWM6CiAgICAgLy8gUmVhZCBhIHZhbHVlIGZyb20gfGRhdGFbb2Zmc2V0
XXwsIGNvbnZlcnRpbmcgZnJvbSBsaXR0bGUgdG8gbmF0aXZlCiAgICAgLy8gZW5kaWFubmVzcy4K
LSAgICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJlYWRVaW50MTYoY29uc3QgU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQx
Nl90IHJlYWRVaW50MTYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQm
IGRhdGEsIGludCBvZmZzZXQpCiAgICAgewogICAgICAgICB1aW50MTZfdCByZXN1bHQ7CiAgICAg
ICAgIG1lbWNweSgmcmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgMik7CkBAIC01Miw3ICs1
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBzdGF0
aWMgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCYgZGF0YSwgaW50IG9mZnNldCkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHJlYWRV
aW50MzIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGlu
dCBvZmZzZXQpCiAgICAgewogICAgICAgICB1aW50MzJfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNw
eSgmcmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgNCk7CkBAIC02OSw3ICs2OSw3IEBAIHB1
YmxpYzoKICAgICBCTVBJbWFnZVJlYWRlcihTY2FsYWJsZUltYWdlRGVjb2RlciogcGFyZW50LCBz
aXplX3QgZGVjb2RlZEFuZEhlYWRlck9mZnNldCwgc2l6ZV90IGltZ0RhdGFPZmZzZXQsIGJvb2wg
dXNlc0FuZE1hc2spOwogCiAgICAgdm9pZCBzZXRCdWZmZXIoU2NhbGFibGVJbWFnZURlY29kZXJG
cmFtZSogYnVmZmVyKSB7IG1fYnVmZmVyID0gYnVmZmVyOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KKyAgICB2
b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsg
bV9kYXRhID0gJmRhdGE7IH0KIAogICAgIC8vIERvZXMgdGhlIGFjdHVhbCBkZWNvZGluZy4gSWYg
fG9ubHlTaXplfCBpcyB0cnVlLCBkZWNvZGluZyBvbmx5CiAgICAgLy8gcHJvZ3Jlc3NlcyBhcyBm
YXIgYXMgbmVjZXNzYXJ5IHRvIGdldCB0aGUgaW1hZ2Ugc2l6ZS4gUmV0dXJucwpAQCAtMjcyLDcg
KzI3Miw3IEBAIHByaXZhdGU6CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogbV9idWZm
ZXI7CiAKICAgICAvLyBUaGUgZmlsZSB0byBkZWNvZGUuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKIAogICAgIC8vIEFuIGluZGV4IGludG8gfG1fZGF0YXwg
cmVwcmVzZW50aW5nIGhvdyBtdWNoIHdlJ3ZlIGFscmVhZHkgZGVjb2RlZC4KICAgICBzaXplX3Qg
bV9kZWNvZGVkT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJv
LmNwcAppbmRleCA2MDEyMDM3NGY5YzQzMTY4YTY1MjFiNjljNTRhZmJlMmEwMGY1NWY3Li44Y2Nm
MDRmNjhmMDQwNmRhNGQzNzRhZTExNjhjOWNlYmJjOWE1ZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWly
by9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcApAQCAtMzcsNyArMzcsNyBAQCBQbGF0Zm9ybUlt
YWdlUHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0CiAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8dWludDMyX3QqPihtX3BpeGVsc1B0
cikpLAogICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMyLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgp
LmhlaWdodCgpLCBzaXplKCkud2lkdGgoKSAqIHNpemVvZih1aW50MzJfdCkpKTsKICAgICBzdGF0
aWMgY2Fpcm9fdXNlcl9kYXRhX2tleV90IHNfc3VyZmFjZURhdGFLZXk7Ci0gICAgY2Fpcm9fc3Vy
ZmFjZV9zZXRfdXNlcl9kYXRhKHN1cmZhY2UuZ2V0KCksICZzX3N1cmZhY2VEYXRhS2V5LCBtX3Bp
eGVscy5nZXQoKSwgW10odm9pZCogZGF0YSkgeyBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50Kj4oZGF0YSktPmRlcmVmKCk7IH0pOworICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3Vz
ZXJfZGF0YShzdXJmYWNlLmdldCgpLCAmc19zdXJmYWNlRGF0YUtleSwgbV9waXhlbHMuZ2V0KCks
IFtdKHZvaWQqIGRhdGEpIHsgc3RhdGljX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQqPihkYXRhKS0+ZGVyZWYoKTsgfSk7CiAKICAgICByZXR1cm4gc3VyZmFjZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKaW5kZXggZTZhYmUwZDk1NDRiNmMxODVjNjQ1ZGVj
ZTA5ZjIzZjk1NjY2MDdjYi4uYjllYzAxYjhhZThlOGQyOWJjNzgyNTI2ZTA3NjUyNTUxZTM1OWMw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgR0lGSW1h
Z2VEZWNvZGVyOjpHSUZJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3AKIAogR0lGSW1hZ2VEZWNvZGVyOjp+R0lGSW1hZ2VEZWNvZGVyKCkg
PSBkZWZhdWx0OwogCi12b2lkIEdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXIm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBHSUZJbWFnZURlY29kZXI6OnNldERh
dGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7
CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVy
LmgKaW5kZXggMzVkZjMzZjZkZmM0ODNmZDg0NzEzNjZhZTUzYmIwYjk2MWNhZWQyZS4uYzc0NzE5
OTk5Yjk4NmMxY2VmODQ3ODc1OWQyMzcxOGM5MDQyZDNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29k
ZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVj
b2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJnaWYiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIHNldFNp
emUoY29uc3QgSW50U2l6ZSYpIGZpbmFsOwogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Qg
ZmluYWw7CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VSZWFkZXIuaAppbmRleCA0MjE0NmUwMzI5MzIzNjk5Nzg5ZWI1ZTQyYWY0
YzczZDM0YWI5Y2M2Li4xMDgyZmRmMGRmZjIzOTFlNTY1MzBhNDFmODdiYTQzOTgyMzI3NTM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VSZWFkZXIuaApAQCAtMjM3LDcgKzIzNyw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KKyAgICB2b2lkIHNldERhdGEoV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0g
JmRhdGE7IH0KICAgICAvLyBGSVhNRTogaGFsdEF0RnJhbWUgc2hvdWxkIGJlIHNpemVfdC4KICAg
ICBib29sIGRlY29kZShXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OkdJRlF1ZXJ5LCB1bnNpZ25l
ZCBoYWx0QXRGcmFtZSk7CiAKQEAgLTMxNiw2ICszMTYsNiBAQCBwcml2YXRlOgogICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8R0lGRnJhbWVDb250ZXh0PiA+IG1fZnJhbWVzOwogICAgIHNpemVf
dCBtX2N1cnJlbnREZWNvZGluZ0ZyYW1lOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKICAgICBib29sIG1fcGFyc2VDb21w
bGV0ZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBjNzE3YzQ1ZDMwNTdj
MDU1MzZlZTYwNTBmOTM5NzA0NmQxMGRmMmE3Li5jMDcxMzQ1YjhiZjM2OWI4MDI3MWZiZGYwYTBj
ZTAxNzRmMDUwM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTIsNyArNTIs
NyBAQCBJQ09JbWFnZURlY29kZXI6OklDT0ltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBJQ09JbWFnZURlY29kZXI6On5JQ09JbWFn
ZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIElDT0ltYWdlRGVj
b2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURl
Y29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09J
bWFnZURlY29kZXIuaAppbmRleCBmYjdhOTAzYjJhMDc1Mzk0OTE3YWJiYmYxMWIxY2VkODNmZjQz
MmEwLi4xMGVlOWI0ZDJlOGM5ZDg4N2UxZDJiOGJlMTM5YmI3NDI3MWQ1N2E4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNv
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lD
T0ltYWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFNjYWxh
YmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gImljbyJfczsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgSW50U2l6ZSBz
aXplKCkgY29uc3QgZmluYWw7CiAgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0IElu
dFNpemUmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGZkMzQ1
YmI3ODZmZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLjVjZmFjOWYyMzU3ZTJlMTJjNjg2
NDAwYjI2Nzg4YWU3ZjhiZTEzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApA
QCAtMjIyLDcgKzIyMiw3IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRfbWFy
a2VyX3B0ciBtYXJrZXIpCiAKIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJv
ZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogewotICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsK
ICAgICBmb3IgKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIgPSBpbmZvLT5tYXJrZXJfbGlz
dDsgbWFya2VyOyBtYXJrZXIgPSBtYXJrZXItPm5leHQpIHsKICAgICAgICAgaWYgKCFpc0lDQ01h
cmtlcihtYXJrZXIpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0yMzYsMTMgKzIzNiwxMyBA
QCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXBy
ZXNzX3N0cnVjdCogaW5mbykKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAg
IHVuc2lnbmVkIG1hcmtlclNpemUgPSBtYXJrZXItPmRhdGFfbGVuZ3RoIC0gaWNjSGVhZGVyU2l6
ZTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOworICAgICAgICBi
dWZmZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0
YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXplKTsKICAgICB9CiAKLSAgICBpZiAoYnVmZmVy
LT5pc0VtcHR5KCkpCisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICByZXR1cm4gYnVmZmVyLnRha2UoKS0+
bWFrZUNvbnRpZ3VvdXMoKTsKIH0KICNlbmRpZgogCkBAIC0zMjAsNyArMzIwLDcgQEAgcHVibGlj
OgogICAgICAgICBtX2J5dGVzVG9Ta2lwID0gc3RkOjptYXgobnVtQnl0ZXMgLSBieXRlc1RvU2tp
cCwgc3RhdGljX2Nhc3Q8bG9uZz4oMCkpOwogICAgIH0KIAotICAgIGJvb2wgZGVjb2RlKGNvbnN0
IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgb25seVNpemUpCisgICAgYm9v
bCBkZWNvZGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEs
IGJvb2wgb25seVNpemUpCiAgICAgewogICAgICAgICBtX2RlY29kaW5nU2l6ZU9ubHkgPSBvbmx5
U2l6ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCmlu
ZGV4IGJlY2Y2NDUwMjc3ZWViNzRiMDlkZTUyZWUxODJmZjZlMTFlZDI3NjIuLjIwNDczZjBlZWVi
YjU2YzcxMzE0ZjY1NTZiZGEwOTAzMzQ5MDc0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9K
UEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIEpQRUcyMDAw
SW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiAgICAgfQogCiAgICAgc3RydWN0IFJlYWRlciB7Ci0gICAgICAgIFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQmIGRhdGE7CisgICAgICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50JiBkYXRhOwogICAgICAgICBzaXplX3Qgb2Zmc2V0OwogICAgIH0gcmVhZGVyID0geyAqbV9k
YXRhLCAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYzEyYzQ1OWE1YTNl
NWIzNTFjNWJjYzYyYmYwMGI4YTI4MWJkNWJhMy4uNGNiZDMyM2Q5YTc1MDI2ZWY4NjU4ZjM4MTZk
ZDczOGQzN2NhOGVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE1Miw3ICsx
NTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVhZE9mZnNldCA9IDA7CiAgICAgfQogCi0gICAg
Ym9vbCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBz
aXplT25seSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpCisgICAgYm9vbCBkZWNvZGUoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgc2l6ZU9ubHksIHVu
c2lnbmVkIGhhbHRBdEZyYW1lKQogICAgIHsKICAgICAgICAgbV9kZWNvZGluZ1NpemVPbmx5ID0g
c2l6ZU9ubHk7CiAgICAgICAgIFBOR0ltYWdlRGVjb2RlciogZGVjb2RlciA9IHN0YXRpY19jYXN0
PFBOR0ltYWdlRGVjb2Rlcio+KHBuZ19nZXRfcHJvZ3Jlc3NpdmVfcHRyKG1fcG5nKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJ
bWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAwMmYxYjA5ZGJjNzY1MTYwMWY5MjJkZGUy
OWY4MDVhNjU4NzFlMmQyLi5iMWJlYzU1ZTc4YzQzNDgwMWMyNTRhY2UwZGY1OTkzMWEzNmI3NGJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJw
L1dFQlBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgV0VC
UEltYWdlRGVjb2Rlcjo6V0VCUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGUKIAogV0VCUEltYWdlRGVjb2Rlcjo6fldFQlBJbWFnZURlY29k
ZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRC
dWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBXRUJQSW1hZ2VEZWNvZGVy
OjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTMyLDcgKzEz
Miw3IEBAIHZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKHNpemVfdCBmcmFtZUluZGV4LCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBUaGlzIGNhbiBiZSBleGVjdXRlZCBib3RoIGlu
IHRoZSBtYWluIHRocmVhZCAod2hlbiBub3QgdXNpbmcgYXN5bmMgZGVjb2RpbmcpIG9yIGluIHRo
ZSBkZWNvZGluZyB0aHJlYWQuCiAgICAgLy8gV2hlbiBleGVjdXRlZCBpbiB0aGUgZGVjb2Rpbmcg
dGhyZWFkLCBhIGNhbGwgdG8gc2V0RGF0YSgpIGZyb20gdGhlIG1haW4gdGhyZWFkIG1heSBjaGFu
Z2UgdGhlIGRhdGEKICAgICAvLyB0aGUgV2ViUERlbXV4ZXIgaXMgdXNpbmcsIGxlYXZpbmcgaXQg
aW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLCBzbyB3ZSBuZWVkIHRvIHByb3RlY3QgdGhlIGRhdGEu
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHByb3RlY3RlZERhdGEobV9k
YXRhKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHBy
b3RlY3RlZERhdGEobV9kYXRhKTsKICAgICBXZWJQRGF0YSBpbnB1dERhdGEgPSB7IHByb3RlY3Rl
ZERhdGEtPmRhdGEoKSwgcHJvdGVjdGVkRGF0YS0+c2l6ZSgpIH07CiAgICAgV2ViUERlbXV4U3Rh
dGUgZGVtdXhlclN0YXRlOwogICAgIFdlYlBEZW11eGVyKiBkZW11eGVyID0gV2ViUERlbXV4UGFy
dGlhbCgmaW5wdXREYXRhLCAmZGVtdXhlclN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVy
LmgKaW5kZXggYWYzNjVlOWNmOWM3Y2U5NTM4YjY0YmE3ODliZjAxN2Q0OGY2ZWRlMS4uZGQyOGJj
ODhkZjVjMGZhM2MxNTczNzg2OWIyNjA5NzNhYWEwZDIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldFQlBJbWFn
ZURlY29kZXIoKTsKIAogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICJ3ZWJwIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYs
IGJvb2wpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
Ym9vbCkgZmluYWw7CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogZnJhbWVCdWZmZXJB
dEluZGV4KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0
aXRpb25Db3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcmFtZUNvdW50OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDkwOWU4ZTc2OGFkYjY4YmFiMjg0NDVk
MjgyNzM2MGEzZjNmYTIyYzMuLmIyMzc3ZmUzNDExZDJhYzQwMTUxM2JmMDlhZThjY2FlNzg2YmQ4
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBA
IC0yMzYsMTQgKzIzNiwxNCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgog
CiAjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJp
bmc6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUZsYXRSVEZEXSkgewotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQoaXRlbUluZGV4LCBrVVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQo
KSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJh
dGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlRmxhdFJURkQs
IG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50
ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0
ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVh
ZGVyLnJlYWRSVEZEKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJl
c3VsdDo6RGlkTm90UmVhZFR5cGU7CiAgICAgfQogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0
cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUlRGXSkgewotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
aXRlbUluZGV4LCBrVVRUeXBlUlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAg
ICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVJURiwgbV9wYXN0ZWJvYXJk
TmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291
bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFu
Z2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZFJURigq
YnVmZmVyKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJl
YWRUeXBlOwpAQCAtMjUxLDcgKzI1MSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCiAjZW5kaWYgLy8gIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogCiAgICAgaWYgKFtzdXBw
b3J0ZWRJbWFnZVR5cGVzKCkgY29udGFpbnNPYmplY3Q6dHlwZV0pIHsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
KGl0ZW1JbmRleCwgdHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRl
eHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAg
ICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFs
bHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRJbWFnZShidWZmZXIucmVs
ZWFzZU5vbk51bGwoKSwgdHlwZSwgaXRlbUluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkg
PyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJk
SU9TLm1tCmluZGV4IDE2N2NlZjAyZDc4ZDc5NGRlYWE4ZTVkZGFmNGRkNjZjM2QyY2NhNDUuLjE2
YjNkNWQ0NDE1ZDI1ODUxNWY2NjBhODZhYzZjZWZiZGNkYjY0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtMzM4
LDcgKzMzOCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0
ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYpCitp
bnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJikKIHsKICAgICByZXR1cm4gMDsKIH0KQEAgLTQ2Myw3
ICs0NjMsNyBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2Fy
ZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiAKICAgICBBU1NFUlQoY29udGVudC5jbGllbnRUeXBlcy5z
aXplKCkgPT0gY29udGVudC5jbGllbnREYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDAsIHNpemUgPSBjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAg
ICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERh
dGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tp
XV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5j
bGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOwogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluV2Vi
QXJjaGl2ZUZvcm1hdCkgewogICAgICAgICBhdXRvIHdlYkFyY2hpdmVEYXRhID0gY29udGVudC5k
YXRhSW5XZWJBcmNoaXZlRm9ybWF0LT5jcmVhdGVOU0RhdGEoKTsKQEAgLTQ3OSw3ICs0NzksNyBA
QCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoY29u
dGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0KSB7Ci0gICAgICAgIGlmIChOU0F0dHJp
YnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNo
aXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJp
bmcuY2xhc3NdIGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIGlmIChOU0F0dHJp
YnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNo
aXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJp
bmcuY2xhc3NdIGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCiAg
ICAgICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmpl
Y3Q6YXR0cmlidXRlZFN0cmluZ107CiAgICAgfQogCkBAIC01MDEsNyArNTAxLDcgQEAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBj
dXN0b21EYXRhOwogICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKGNvbnRlbnQuY29udGVudE9yaWdp
bik7Ci0gICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CisgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURh
dGE6OmNvY29hVHlwZSgpKV07CiAKICAgICByZWdpc3Rlckl0ZW1Ub1Bhc3RlYm9hcmQocmVwcmVz
ZW50YXRpb25zVG9SZWdpc3Rlci5nZXQoKSwgbV9wYXN0ZWJvYXJkLmdldCgpKTsKIH0KQEAgLTUx
NCwxNCArNTE0LDE0IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0
ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKICAgICBhdXRvJiBkYXRhID0gcGFzdGVib2Fy
ZEltYWdlLmNsaWVudERhdGE7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUo
KSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSB0eXBlcy5zaXplKCk7IGkgPCBzaXpl
OyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtp
XS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CisgICAgICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CiAKICAgICBpZiAocGFzdGVi
b2FyZEltYWdlLnJlc291cmNlRGF0YSAmJiAhcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5
cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gdXRpT3JNSU1FVHlwZSA9IHBhc3RlYm9hcmRJ
bWFnZS5yZXNvdXJjZU1JTUVUeXBlOwogICAgICAgICBpZiAoIWlzRGVjbGFyZWRVVEkodXRpT3JN
SU1FVHlwZSkpCiAgICAgICAgICAgICB1dGlPck1JTUVUeXBlID0gVVRJRnJvbU1JTUVUeXBlKHV0
aU9yTUlNRVR5cGUpOwogCi0gICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdl
LnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0g
cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6aW1hZ2VE
YXRhLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopdXRpT3JNSU1FVHlwZV07CiAgICAgICAgIFty
ZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblNpemU6cGFz
dGVib2FyZEltYWdlLmltYWdlU2l6ZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lz
dGVyIHNldFN1Z2dlc3RlZE5hbWU6cGFzdGVib2FyZEltYWdlLnN1Z2dlc3RlZE5hbWVdOwpAQCAt
NjM1LDcgKzYzNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0
aW9uSW5mb0xpc3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6V2ViUHJlZmVycmVk
UHJlc2VudGF0aW9uU3R5bGVJbmxpbmVdOwogCiAgICAgaWYgKGRhdGEuaGFzU2FtZU9yaWdpbkN1
c3RvbURhdGEoKSB8fCAhZGF0YS5vcmlnaW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGF1
dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNy
ZWF0ZU5TRGF0YSgpKSB7CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIg
PSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKSkgewogICAgICAgICAgICAgLy8gV2Ugc3Rhc2ggdGhlIGxpc3Qgb2Ygc3VwcGxpZWQgcGFz
dGVib2FyZCB0eXBlcyBpbiB0ZWFtRGF0YSBoZXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggZHJh
ZyBhbmQgZHJvcC4KICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBjb250ZW50cyBvZiBpdGVtIHBy
b3ZpZGVycyBjYW5ub3QgYmUgbG9hZGVkIHByaW9yIHRvIGRyb3AsIGJ1dCB0aGUgcGFzdGVib2Fy
ZCB0eXBlcyBhcmUKICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGN1c3RvbSBk
YXRhIGJsb2IgYW5kIHdlIG5lZWQgdG8gdmVuZCB0aGVtIHRvIHRoZSBwYWdlIHdoZW4gZmlyaW5n
IGBkcmFnb3ZlcmAKQEAgLTY3Miw4ICs2NzIsOCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8g
YnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKLSAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKKyAgICAgICAgYXV0byBidWZmZXIg
PSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKKyAgICAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsK
ICAgICB9KTsKIAogICAgIHJldHVybiByZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQppbmRl
eCA1NDQ2NTNjNDQwM2QyNjA0MGE1NWQyM2U5MzY5MWJmZWRjYzkyYjQyLi43YTRhMmIxNjViMmZh
N2QyMGQ1YjZlNGMyZDY1ZmU2M2VmMGIwMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQpAQCAtODIsNyArODIsNyBAQCBAZW5k
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0
ZXIoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFByZXZpZXdDb252ZXJ0ZXJQcm92
aWRlciYgcHJvdmlkZXIpCi0gICAgOiBtX3ByZXZpZXdEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSB9CisgICAgOiBtX3ByZXZpZXdEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJC
dWlsZGVyPigpIH0KICAgICAsIG1fb3JpZ2luYWxSZXNwb25zZSB7IHJlc3BvbnNlIH0KICAgICAs
IG1fcHJvdmlkZXIgeyBwcm92aWRlciB9CiAgICAgLCBtX3BsYXRmb3JtRGVsZWdhdGUgeyBhZG9w
dE5TKFtbV2ViUHJldmlld0NvbnZlcnRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aERlbGVnYXRl
Oip0aGlzXSkgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bQppbmRleCA2NzdmOGNhZGFiNTkxMjNlMWI2MmQxYmFjMmQxOTA4YmY2NzZhMmY5Li4wZDI1NDk4
Yjg2YmVmMTg1ZDM3NjlkNWE1YmMwYmMyZjczMWM3MGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6d3JpdGUoY29uc3QgQ29sb3ImIGNvbG9yKQogCiBzdGF0aWMgTlNGaWxlV3JhcHBl
ciogZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7
Ci0gICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRS
ZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVX
cmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdl
LnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
ICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhN
SU1FVHlwZShwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCwgcGFzdGVib2FyZEltYWdlLnJlc291cmNl
TUlNRVR5cGUpXTsKICAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQpAQCAtMzYy
LDcgKzM2Miw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0
ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAgICAgCiAgICAgaWYgKHR5cGVz
LmNvbnRhaW5zKFN0cmluZyhsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAg
IGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRG
RFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBh
ZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CisgICAgICAgICAg
ICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmlu
ZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAgIHRl
eHQudGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAgdGV4
dC5pc1VSTCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KaW5kZXggMzUzZDAwNmI5MGNi
Y2U2MDllNmRmZDM3YzI4MDgxMzFmMjE0YjhkYS4uODhkMDQwMjU4NDM3MDJlNGFhNGY1YTlhNTU2
Yjg4MWM2ZTQwYzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRXcml0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRXcml0ZXIubW0KQEAgLTEyOCwxMSArMTI4LDExIEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldFN0cmluZzp3ZWJD
b250ZW50LT5kYXRhSW5TdHJpbmdGb3JtYXQgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5n
XTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd2ViQ29udGVudC0+Y2xpZW50
VHlwZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3
ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRv
VVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOwor
ICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0
YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VU
SVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKIAog
ICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAgICAgICBjdXN0b21E
YXRhLnNldE9yaWdpbih3ZWJDb250ZW50LT5jb250ZW50T3JpZ2luKTsKLSAgICAgICAgW3Bhc3Rl
Ym9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKKyAgICAgICAgW3Bhc3RlYm9h
cmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlV
VEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKICAg
ICB9CiAKICAgICByZXR1cm4gcGFzdGVib2FyZEl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCBkOWI3ZDI0ODAz
OGMyZGI4YWFiMDkyY2I5MWZmYTU2ZjJjYjRjZTczLi5jM2I0ZDJkOTYyMTc0NzFjNzM1ZTI0ZmU3
YTVmOWQ5MjM3ZGY0NzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTI2Myw4ICsyNjMsOCBAQCBpbnQ2NF90IFBs
YXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEp
CiAgICAgICAgIGlmIChwbGF0Zm9ybVR5cGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+
PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9
IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0
YSgpKQorICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGxh
dGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihzdHJpbmdP
ckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAg
ICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0
Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3Ry
aW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpn
ZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CkBAIC0yNzQsNyArMjc0LDcgQEAgaW50NjRfdCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRh
KQogICAgIH0pOwogCiAgICAgaWYgKHNob3VsZFdyaXRlQ3VzdG9tRGF0YSkgewotICAgICAgICBp
ZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCkt
PmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9
IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpKQogICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnNlcmlhbGl6ZWRDdXN0b21E
YXRhLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsK
ICAgICB9CiAKQEAgLTM0MSwxMiArMzQxLDEyIEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJk
OjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKQogICAgIHJl
dHVybiBbbV9wYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpjcmVhdGVOU0FycmF5KHBhc3RlYm9hcmRU
eXBlcykuZ2V0KCkgb3duZXI6bmlsXTsKIH0KIAotaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpCitpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlw
ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpCiB7CiAgICAgaWYgKCFjYW5Xcml0ZVBhc3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRUeXBl
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3Rl
Ym9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmls
IGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOworICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFz
dGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFk
aWRXcml0ZURhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBjaGFuZ2VDb3VudCgp
OwpAQCAtNTA0LDggKzUwNCw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkSXRlbT4g
Y3JlYXRlUGFzdGVib2FyZEl0ZW0oY29uc3QgUGFzdGVib2FyZEN1c3RvbURhCiAgICAgICAgIGlm
ICghcGxhdGZvcm1UeXBlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsK
LSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRC
dWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09y
QnVmZmVyKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERhdGE6cGxh
dGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlm
IChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAg
ICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5oCmluZGV4IDY4MTNkNWRhN2RjYjBmYzI1OWYxYmQxZWQwYTU0
YzFhMWE5ZmQ5Y2YuLjc5NjU1NGY0Yzk3NjQ1MTQwMWUxYTEyMzc0Njg3MDQwYjI0YjFjYzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcml2YXRlLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgTWVkaWFTYW1w
bGU7CiBjbGFzcyBNZWRpYVN0cmVhbVByaXZhdGU7CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZTsKIGNsYXNzIFBsYXRmb3JtQXVkaW9EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IE1lZGlhUmVjb3JkZXJQcml2YXRl
T3B0aW9uczsKIApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgQXVkaW9WaWRlb1NlbGVjdGVkVHJhY2tzIHNlbGVjdFRyYWNrcyhNZWRp
YVN0cmVhbVByaXZhdGUmKTsKIAotICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBkb3VibGUpPjsKKyAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+OwogICAgIHZpcnR1YWwgdm9pZCBmZXRjaERhdGEoRmV0
Y2hEYXRhQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSgpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCmluZGV4
IGMyNWRmOTE1NzRhNjViYzQxYmRiNzA2NzhkYzQ3NzI0ODM2ZGQxNDUuLjQ5OGQ0ZWUxMzQwYzRi
OTQwMDFiNjBjMzQ0NzliN2Y3MmQ1YzhlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
TW9jay5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6
OmdlbmVyYXRlTW9ja0NvdW50ZXJTdHJpbmcoKQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRl
TW9jazo6ZmV0Y2hEYXRhKEZldGNoRGF0YUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9i
dWZmZXJMb2NrIH07CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZSB7IG1fYnVmZmVyLmNo
YXJhY3RlcnM4KCksIG1fYnVmZmVyLmxlbmd0aCgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDIxMWY3NWVlNzNhZjY5MTll
N2Y0Yzk5NThlMGNkMzQ4MjUzMmQwOWYuLjljMmM3OTdiODE5NTEyZDhmZDU3OTAxNWRjM2I2ZTQw
NWUzYmM2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFZp
ZGVvU2FtcGxlQnVmZmVyKE1lZGlhU2FtcGxlJik7CiAgICAgdm9pZCBhcHBlbmRBdWRpb1NhbXBs
ZUJ1ZmZlcihjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCk7CiAgICAgdm9pZCBzdG9wUmVj
b3JkaW5nKCk7Ci0gICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiYmKTsKKyAgICB2b2lkIGZldGNoRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBkb3Vi
bGUpPiYmKTsKIAogICAgIHZvaWQgcGF1c2UoKTsKICAgICB2b2lkIHJlc3VtZSgpOwpAQCAtMTA1
LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZpbmlzaGVkRmx1c2hpbmdTYW1wbGVz
KCk7CiAgICAgdm9pZCBjb21wbGV0ZUZldGNoRGF0YSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHRha2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHRha2VE
YXRhKCk7CiAKICAgICBib29sIG1faGFzQXVkaW8geyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNW
aWRlbyB7IGZhbHNlIH07CkBAIC0xMTcsOCArMTE3LDggQEAgcHJpdmF0ZToKICAgICBSZXRhaW5Q
dHI8QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7CiAKICAgICBMb2NrIG1fZGF0YUxvY2s7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9j
ayk7Ci0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBk
b3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CisgICAgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgZG91Ymxl
KT4gbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsKIAogICAgIFJldGFpblB0cjxDTUZvcm1h
dERlc2NyaXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb247CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gbV9hdWRpb0NvbXByZXNzb3I7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0K
aW5kZXggOGMxZjdjMGU1MzEzYjZiODU2Y2QzY2RmNWU4Mzg0ZjM2YjdiNTNmNS4uODQ4NDEwMGVh
YzVlMTE1ZTliMGNmMDEyMGJhYmY3OGZiMWExMjc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtMTM3LDEwICsxMzcsOCBA
QCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
KCkKICAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKICAgICB9CiAKLSAgICAvLyBBdCB0aGlzIHBv
aW50ZXIsIHdlIHNob3VsZCBubyBsb25nZXIgYmUgd3JpdGluZyBhbnkgZGF0YSwgc28gaXQgc2hv
dWxkIGJlIHNhZmUgdG8gY2xvc2UgYW5kIG51bGxpZnkgbV9kYXRhIHdpdGhvdXQgbG9ja2luZy4K
ICAgICBpZiAobV93cml0ZXJEZWxlZ2F0ZSkKICAgICAgICAgW21fd3JpdGVyRGVsZWdhdGUgY2xv
c2VdOwotICAgIG1fZGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG51bGxwdHIsIDApOwpAQCAtNDk1LDcgKzQ5Myw3IEBAIHZvaWQgTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0b3BSZWNvcmRpbmcoKQogICAgIH0pOwogfQogCi12
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwogCkBAIC01MzcsMTggKzUzNSwxMyBAQCB2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiB2b2lk
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0g
ICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5hcHBlbmQo
ZGF0YSwgc2l6ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkKK1Jl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
dGFrZURhdGEoKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgYXV0
byBkYXRhID0gV1RGTW92ZShtX2RhdGEpOwotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBt
X2RhdGEudGFrZSgpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwYXVz
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxE
ZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVy
LmgKaW5kZXggYTliMjlkNTllOWFhM2I0NjU1NDE1YmQ4YmVmMDk4NGM1NDRiNzNmMC4uY2RlZTYw
MzUyM2NkNjY5NDVmNDI4ZjY5NDc4OTYwZjZmZDc0Yzc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaApAQCAtMzMsNyArMzMsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBEYXRhVVJMRGVjb2RlciB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCBm
YWZkZmU4N2M4MzdlNjE1N2QyZjEzZTlhN2NhMDA5NjlkNTBiMWM3Li40YmViY2I1MDk4ZDE1YzI5
NjZlZDhjN2VlMTM2YWUzYTJhZTRhMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCkBAIC04NCw3ICs4NCw3IEBAIGNsYXNzIE5ldHdv
cmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VR
dWV1ZTsKIGNsYXNzIFRpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IDZlNjViYjg5MThjNmVj
MTJmOGFlYTg2ZWJlNzA0ODg0ZTJlNzM2NmYuLmJhOGZkNGZmNGYxZTQxYzlhZDRmYTc0YTQyYmU0
ZTJiZDExYWE4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zNiw5ICszNiw5IEBAIFJlc291cmNl
SGFuZGxlQ2xpZW50OjpSZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogUmVzb3Vy
Y2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAotdm9p
ZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3Ro
KQordm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhh
bmRsZSogaGFuZGxlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGRpZFJlY2Vp
dmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAppbmRleCBiNjMz
N2Q1NmNlOGNkOWJlZmY5ZGZiZTExMzY2MmJjNzc1NmI2NTM3Li5jNGYwNTQ4NWYyODcwYjExNmRh
N2M3NjBkM2MwZmNlOTZlYzJiNGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIGNs
YXNzIFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBlbnVtIENhY2hlU3RvcmFnZVBvbGljeSB7
CiAgICAgU3RvcmFnZUFsbG93ZWQsCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcg
LypieXRlc1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8p
IHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSB7IH0K
LSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJj
ZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VI
YW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBk
aWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDFmZjA2NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNk
YWY2OTZmMDI0MDYuLjAwOGUyMjZmZjkxOTAwNGI0NTE0OGEyNDcyNjExNjE1MDk4OTYyNzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNw
b25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTQxLDggKzQxLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBEYXRhKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlKQotICAgICAg
ICA6IGJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgICAgICAsIG9yaWdpbmFsUmVz
cG9uc2UocmVzcG9uc2UpCisgICAgICAgIDogb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKICAg
ICAgICAgLCByZXNvdXJjZSgmcmVzb3VyY2UpIHsgfQogCiAgICAgc3RydWN0IFRhc2tEYXRhIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPFRhc2tEYXRhPiB7CkBAIC01NSw5ICs1NCw5IEBAIHN0cnVj
dCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICAgICAgc2l6ZV90IG5leHRCeXRl
VG9HaXZlQnVmZmVySW5kZXggeyAwIH07CiAgICAgICAgIGVudW0gY2xhc3MgUmVzcG9uc2VTdGF0
ZSA6IHVpbnQ4X3QgeyBOb3RTeW50aGVzaXplZFlldCwgV2FpdGluZ0ZvclNlc3Npb24sIFNlc3Np
b25DYWxsZWRDb21wbGV0aW9uSGFuZGxlciB9IHJlc3BvbnNlU3RhdGUgeyBSZXNwb25zZVN0YXRl
OjpOb3RTeW50aGVzaXplZFlldCB9OwogICAgIH07Ci0gICAgCisKICAgICBIYXNoTWFwPFJldGFp
blB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+LCBzdGQ6OnVuaXF1ZV9wdHI8VGFza0Rh
dGE+PiB0YXNrRGF0YTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBvcmlnaW5hbFJlc3Bv
bnNlOwogICAgIGVudW0gY2xhc3MgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIDogYm9vbCB7
IE5vLCBZZXMgfSBzdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgeyBTdWNjZXNzZnVsbHlGaW5p
c2hlZExvYWRpbmc6Ok5vIH07CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVz
b3VyY2U7CkBAIC0xMDYsMjIgKzEwNSwyMiBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQogdm9pZCBSYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2Vp
dmVkKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVz
dFJhbmdlJiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0
aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAg
IGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXI7Ci0gICAgYXV0byBidWZmZXJTaXplID0gYnVmZmVy
LT5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBqdXN0IG1h
a2UgYSByYW5nZSB3aXRoIGEgKiBhZnRlciB0aGUgLyBidXQgQVZGb3VuZGF0aW9uIGRvZXNuJ3Qg
YWNjZXB0IHN1Y2ggcmFuZ2VzLgogICAgIC8vIEluc3RlYWQsIHdlIGp1c3Qgd2FpdCB1bnRpbCB0
aGUgbG9hZCBoYXMgY29tcGxldGVkLCBhdCB3aGljaCB0aW1lIHdlIHdpbGwga25vdyB0aGUgY29u
dGVudCBsZW5ndGggZnJvbSB0aGUgYnVmZmVyIGxlbmd0aC4KICAgICBpZiAoIWV4cGVjdGVkQ29u
dGVudExlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBidWZmZXJTaXplID0gZGF0
YS5idWZmZXIuc2l6ZSgpOwogICAgIGlmIChidWZmZXJTaXplIDwgcmFuZ2UuYmVnaW4pCiAgICAg
ICAgIHJldHVybjsKLSAgICAKKworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIuZ2V0KCk7
CiAgICAgYXV0byogdGFza0RhdGEgPSBkYXRhLnRhc2tEYXRhLmdldCh0YXNrKTsKICAgICBpZiAo
IXRhc2tEYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBnaXZlQnl0ZXNUb1Rh
c2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCB0YXNrRGF0YSA9IFdlYWtQdHIg
eyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKKworICAgIGF1
dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgYnVm
ZmVyU2l6ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdl
YWtQdHIgeyAqdGhpcyB9XSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
ICAgIGlmIChbdGFzayBzdGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlUnVubmluZykKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTEzMCw3ICsxMjksNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VH
ZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29y
ZU5TVQogICAgICAgICBhdXRvJiByYW5nZSA9IHRhc2tEYXRhLT5yYW5nZTsKICAgICAgICAgYXV0
byYgYnl0ZUluZGV4ID0gdGFza0RhdGEtPm5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXg7CiAgICAg
ICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlci0+
c2l6ZSgpKQorICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXJTaXplKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgYXV0byBidWZmZXJWaWV3ID0gYnVmZmVyLT5n
ZXRTb21lRGF0YShieXRlSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFidWZmZXJWaWV3LnNpemUo
KSB8fCBieXRlSW5kZXggPiByYW5nZS5lbmQpCkBAIC0xNzUsNyArMTc0LDcgQEAgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0
aEZyb21EYXRhKGNvbnMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChk
YXRhLnN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5p
c2hlZExvYWRpbmc6OlllcykKLSAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLT5zaXplKCk7Cisg
ICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIHNob3VsZCByZXR1cm4gc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGluc3RlYWQgb2YgdXMgZG9pbmcgdGhpcyBjaGVjayBoZXJlLgog
ICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZGF0YS5vcmlnaW5hbFJlc3BvbnNlLmV4
cGVjdGVkQ29udGVudExlbmd0aCgpOwpAQCAtMjQ0LDcgKzI0Myw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgZmluYWwKKyAgICB2
b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFsCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgICAgICBpZiAoIW1fZ2VuZXJhdG9yKQpAQCAtMjUyLDcgKzI1MSw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1f
dXJsU3RyaW5nKTsKICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBkYXRhLT5idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRh
LT5idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5n
aXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLmgKaW5kZXggNDA0ODg1YWU2Mzc2ZmNlNjgwNDBkMmEwNWMwMGJlYzQ3
ZmUxNmFhOC4uY2U0YzI1NDVjZGUwZjJmNDZhYzMzOGY5NmM0OTA4OGViNDVkMDkyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgUGxhdGZvcm1NZWRpYVJl
c291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBjbGFz
cyBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ7CiBlbnVtIGNsYXNzIFNob3VsZENv
bnRpbnVlUG9saWN5Q2hlY2sgOiBib29sOwpAQCAtMTU4LDcgKzE1OCw3IEBAIFdFQkNPUkVfRVhQ
T1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsKIC0gKHZvaWQp
cmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3Vy
Y2Ugc2VudEJ5dGVzOih1bnNpZ25lZCBsb25nIGxvbmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0Jl
U2VudDoodW5zaWduZWQgbG9uZyBsb25nKXRvdGFsQnl0ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVz
b3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ug
cmVjZWl2ZWRSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9u
c2UgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hv
dWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtIChCT09MKXJl
c291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNl
IHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJl
c3BvbnNlOwotLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpZGF0YTsKKy0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJilkYXRhOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSByZXF1ZXN0OihXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0aW9uSGFu
ZGxlcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSopcmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxh
YmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZhaWxlZFdp
dGhFcnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Np
b24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VS
TFNlc3Npb24ubW0KaW5kZXggZTA0MDEwYTk4MTFiNGM5YWUxNDk0OTk4NzAxY2ExNTQ4OWY1NzE2
Yy4uOGM4OWQ5Mzg2NTc5MzNhMWRhMjkwMzE5OTE1ODRjNGRiMmZhYTlhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5tbQpAQCAtNjA4LDcgKzYwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZGly
ZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVx
dWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9u
ZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tG
YWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC02
NTIsNyArNjUyLDcgQEAgYm9vbCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnNo
b3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmMKICAgICByZXR1cm4gW21fdGFz
ayByZXNvdXJjZTomcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTpyZXNwb25zZV07CiB9CiAK
LXZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
Cit2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXNrTG9jayB9OwogICAgIGlm
ICghbV90YXNrKQpAQCAtOTE1LDExICs5MTUsMTEgQEAgLSAoQk9PTClyZXNvdXJjZTooUGxhdGZv
cm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOihjb25zdCBSZXMK
ICAgICByZXR1cm4gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250
ZW50UmFuZ2UpLmlzRW1wdHkoKTsKIH0KIAotLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRp
YVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpZGF0YQorLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNv
dXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KWRhdGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3Vy
Y2UgPT0gX3Jlc291cmNlKTsKICAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9u
OltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBkYXRhID0gV1RGTW92ZShkYXRhKV0g
ewotICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBh
dXRvIG5zRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAg
ICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IGRhdGEtPnNpemUo
KTsKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAo
aWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVs
ZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKaW5k
ZXggYzM2ZTFmODg3NjQzMDQ2MGNlNzUwYTNiOGM2NThjNzM0ZWNiMTUwOC4uMzQ5NDQ1OTI1NGFj
OTNmYzE5Y2IxMjE1MGE2MWJjMmJjZWQwMmQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKQEAgLTEwMyw3ICsxMDMs
NyBAQCB2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVz
dCYgcmVxdWVzdCwgQ3VybFJlc3BvbnNlJiYgcgogfQogCiAKLXZvaWQgQ3VybERvd25sb2FkOjpj
dXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQordm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0
JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsRG93bmxvYWQuaAppbmRleCBhM2FhMGNmNWZjZDI5NTViYjdiMTZiMTFhMWE4
MWNhNzRhZTYxYzhkLi5jZGU0NDQ1Nzc1Zjc0NDIzMzA1MzBiNjViMTM1N2JhNmJmZDliYjgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3du
bG9hZC5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgUmVmPEN1cmxSZXF1ZXN0PiBj
cmVhdGVDdXJsUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGN1cmxEaWRTZW5k
RGF0YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25n
KSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVl
c3QmLCBDdXJsUmVzcG9uc2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1
ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZv
aWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVl
c3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFp
bFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZv
JiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggYmJkYTNmYmRhNzU4
M2Q5OTE5MzFkZmUxNjlmN2IzYTkxMzNlNmRhMi4uMDkwZDAzOWJhNDVkZTEwMjhlZGY3Njg0YzZk
N2QyZjI5NmUzYTM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMTE5LDEyICsxMTks
MTIgQEAgQ3VybE11bHRpcGFydEhhbmRsZTo6Q3VybE11bHRpcGFydEhhbmRsZShDdXJsTXVsdGlw
YXJ0SGFuZGxlQ2xpZW50JiBjbGllbnQsIGNvbnMKIAogfQogCi12b2lkIEN1cmxNdWx0aXBhcnRI
YW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBD
dXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVuZCkKICAgICAg
ICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQgZG93biBzbyBpZ25vcmUgZXZlcnl0
aGluZy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vzc0NvbnRlbnQoKSkgeyB9CiB9CkBA
IC0xMzcsNyArMTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSgp
CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkgewogICAgICAgICAvLyBJdCBzZWVtcyB3
ZSBhcmUgc3RpbGwgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3NpbmcuCiAgICAgICAgIC8v
IFB1c2ggb3V0IHRoZSByZW1haW5pbmcgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2
ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwg
bV9idWZmZXIuc2l6ZSgpKSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11
bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOwogICAgICAg
ICBtX3N0YXRlID0gU3RhdGU6OkVuZDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCmluZGV4
IDVjMDhiY2M1ZWIzZTRiYmNjMDI5YjQ3Njc4NjhmNDNlMmY5NWMzNDEuLjlhMWExYmJkMTkzOGEx
NGY2OWZjY2VlM2YwZjg5Yjk3YTRhMjE4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaApAQCAtMzQs
NyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5k
bGVDbGllbnQ7CiBjbGFzcyBDdXJsUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgog
ICAgIEN1cmxNdWx0aXBhcnRIYW5kbGUoQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudCYsIGNvbnN0
IFN0cmluZyYpOwogICAgIH5DdXJsTXVsdGlwYXJ0SGFuZGxlKCkgeyB9CiAKLSAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkQ29tcGxldGUo
KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCmluZGV4IGZkMTNm
ZDM4MTMxNDNjYjI2NTliOGZkMWRiMjQ0NDc2NWU5OGE1ODAuLmM4MTM4ODZhOGQ1YzVmYTZjMTJk
MTQxMzMxOTEwMWFmMjUwMmEyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaApA
QCAtMjgsMTIgKzI4LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxSZXNw
b25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5n
PiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJl
ZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFG
cm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAKIHByb3Rl
Y3RlZDoKICAgICB+Q3VybE11bHRpcGFydEhhbmRsZUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXgg
ZDM1YjBlODM5MTk1MWQzODYzNGU5OTA5M2I2ODY1NjI0ZDk5Nzk1MS4uZDgyZGQzYzEwYWM2NDcx
MzU5OTFmZDdhZTY2OTdlOWQ4ZTMxM2U4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAg
c2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmIGhlYWRlcikKIAog
Ly8gY2FsbGVkIHdpdGggZGF0YSBhZnRlciBhbGwgaGVhZGVycyBoYXZlIGJlZW4gcHJvY2Vzc2Vk
IHZpYSBoZWFkZXJDYWxsYmFjawogCi1zaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRh
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYg
KGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00NDQsNyAr
NDQ0LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZUhlYWRlckZyb21NdWx0aXBhcnQo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGhlYWRlcnMpCiAgICAgaW52b2tlRGlkUmVjZWl2ZVJlc3Bv
bnNlKHJlc3BvbnNlLCBBY3Rpb246Ok5vbmUpOwogfQogCi12b2lkIEN1cmxSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lk
IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChpc0NvbXBsZXRlZE9yQ2FuY2VsbGVk
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTc3Nyw3ICs3NzcsNyBAQCBjb25zdCBTdHJpbmcmIEN1
cmxSZXF1ZXN0OjpnZXREb3dubG9hZGVkRmlsZVBhdGgoKQogICAgIHJldHVybiBtX2Rvd25sb2Fk
RmlsZVBhdGg7CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxl
SWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBDdXJsUmVxdWVzdDo6
d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZG93bmxv
YWRNdXRleCB9OwpAQCAtNzkwLDcgKzc5MCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0
YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAg
IH0KIAogICAgIGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rv
d25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAg
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVx
dWVzdDo6Y2xvc2VEb3dubG9hZEZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAppbmRleCA2YmQ4YTZiZmJhMzc1MmNlZGRkYmM1
MDA5ZWFlODNjNGYwZWVkNjQxLi4zYzdjZGQ4ODNlYjYyYmZlOTJjZjA0NDVlZDI5YmQyNmVjZTNl
OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBD
dXJsUmVxdWVzdENsaWVudDsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291
cmNlRXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU3luY2hyb25vdXNMb2FkZXJNZXNzYWdlUXVldWU7CiAKIGNsYXNzIEN1cmxS
ZXF1ZXN0IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEN1cmxSZXF1ZXN0PiwgcHVibGlj
IEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50LCBwdWJsaWMgQ3VybE11bHRpcGFydEhhbmRsZUNs
aWVudCB7CkBAIC0xMjIsOSArMTIyLDkgQEAgcHJpdmF0ZToKICAgICBDVVJMKiBzZXR1cFRyYW5z
ZmVyKCkgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IHdpbGxTZW5kRGF0YShjaGFyKiwgc2l6ZV90LCBz
aXplX3QpOwogICAgIHNpemVfdCBkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmKTsKLSAgICBzaXpl
X3QgZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc2l6ZV90IGRpZFJl
Y2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4m
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ29tcGxldGVU
cmFuc2ZlcihDVVJMY29kZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWxUcmFuc2Zlcigp
IG92ZXJyaWRlOwogICAgIHZvaWQgZmluYWxpemVUcmFuc2ZlcigpOwpAQCAtMTUzLDcgKzE1Myw3
IEBAIHByaXZhdGU6CiAgICAgTmV0d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtMb2FkTWV0cmljcygp
OwogCiAgICAgLy8gRG93bmxvYWQKLSAgICB2b2lkIHdyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZF
bmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgd3JpdGVEYXRhVG9Eb3dubG9h
ZEZpbGVJZkVuYWJsZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQg
Y2xvc2VEb3dubG9hZEZpbGUoKTsKICAgICB2b2lkIGNsZWFudXBEb3dubG9hZEZpbGUoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3RDbGllbnQuaAppbmRleCAwOGM4NmM3ZDQ2ODRiYTZmNzhkNjE2YjY4ZDA2OTA0YzM3YTk2
Njc3Li4zNDc5ODMyZjU3NmQ0MTI4YWZhNTFjODE0MjRjY2ZkNzQxZGY2YWU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RD
bGllbnQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBDdXJsUmVxdWVzdDsKIGNsYXNzIEN1cmxS
ZXNwb25zZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBDdXJsUmVxdWVzdENsaWVudCB7CiBwdWJsaWM6CkBAIC00Myw3ICs0Myw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNp
Z25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1Rv
QmVTZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3Vy
bFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlk
UmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkQ29t
cGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3Im
JiwgQ2VydGlmaWNhdGVJbmZvJiYpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlLmNwcAppbmRleCA4MThkNWE5NWUzZTEyNGRjM2E3MmY3NDNlNWNkNDUzZDcxN2UwMTBm
Li4zMDVkNGU1YzlmYzI3MDc3NTc4N2IwZjlhOTE5NzljMDg4ODlhOGE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0MiwxNSArMTQyLDE2IEBAIHZvaWQgQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVl
c3QmIHJlcXVlc3QsIEN1CiAgICAgfSk7CiB9CiAKLXZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCit2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVj
ZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKGNhbmNlbGxl
ZE9yQ2xpZW50bGVzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDdXJsQ2FjaGVNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKLSAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUs
IFdURk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91c0J1
ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpz
aW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1f
aGFuZGxlLCBXVEZNb3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CiB9CiAK
IHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVx
dWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5oCmluZGV4IDZkNTU4NjQ0NTJmZDQ2ZWU3ODAwZTkzMTIzYjEyOGJkYzY0Y2U0
ODcuLmRhZjBhNTlhNGU1ODZkNzExNGFiYjRlNWVmOWM1NGY2YThiZWZjNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5
dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAg
ICAgdm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNl
JiYpIGZpbmFsOwotICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVy
KEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAg
IHZvaWQgY3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYp
IGZpbmFsOwogICAgIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3QmLCBSZXNv
dXJjZUVycm9yJiYsIENlcnRpZmljYXRlSW5mbyYmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xv
YWRlckNsaWVudC5oCmluZGV4IGJjNGRhYWZiZjIxYTE1YzBlNmRkMWFjZDQ2MjJhZmE1NmI3Yjhk
NWQuLjFmNGExOTMxMzMxMmM1ZGQ2YTQ4YWQ1MzM5ZGZkMmMzYjVkZWMyNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTMxLDEyICszMSwxMiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRl
ZDxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TGVn
YWN5UHJldmlld0xvYWRlckNsaWVudCgpID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9z
aXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCmluZGV4IDBmYjQ1MDA3MmZhMTA0MjJmNmE5ZmU0MzJj
MzgxZDNkMTk2MTNlNjAuLmQ2MzIyMjU2NGVmMDc0Y2RiY2Q3ZWUyMTNlYTk5MTU3NDA3ZTM1NTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBP
U0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQ
T1NJWC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtNjgsNyArNjgsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgIGlm
ICh0b3RhbEJ5dGVzUmVhZCAhPSBieXRlc1RvUmVhZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAg
ICByZXR1cm4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBjNTQ0NTM4NWE3N2FjMTJjMDllZjI0ODY2NDcz
ZDYyY2I2Nzk0NTVhLi40NTM2ODFiZGFiMmU0YTA1YTIxZmM2OGE5NDM3MDBlMDZjOTk3YTFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0z
NTYsNyArMzU2LDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlKQogCiBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVDb3VudGVyIGZpbmFs
IDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0
cmluZyYpIGZpbmFsIHsgKytjb3VudDsgfQotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbCB7ICsrY291bnQ7
IH0KKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsIHsgKytjb3VudDsgfQogCiAgICAgdW5z
aWduZWQgY291bnQgeyAwIH07CiB9OwpAQCAtOTc0LDcgKzk3NCw3IEBAIHN0YXRpYyBIR0xPQkFM
IGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYKICAgICByZXR1cm4gbWVtT2JqOwogfQogCi1zdGF0aWMgSEdMT0JBTCBjcmVhdGVH
bG9iYWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKK3N0YXRpYyBIR0xPQkFM
IGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSkKIHsKICAgICBIR0xPQkFMIG1lbU9iaiA9IEdsb2JhbEFsbG9jKEdQVFIsIGRhdGEtPnNpemUo
KSk7CiAgICAgaWYgKCFtZW1PYmopIApAQCAtOTg2LDE1ICs5ODYsMTUgQEAgc3RhdGljIEhHTE9C
QUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgIENv
cHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAg
aWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEdsb2JhbFVu
bG9jayhtZW1PYmopOwogCiAgICAgcmV0dXJuIG1lbU9iajsKIH0KIAotc3RhdGljIEhHTE9CQUwg
Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1l
LCBTaGFyZWRCdWZmZXIqIGRhdGEpCitzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENv
bnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKGZpbGVOYW1lLmlzRW1wdHkoKSB8fCAhZGF0YSkKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC0xMDM4LDggKzEwMzgsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVh
dGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNo
YXJlZAogICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGlzIHRlbXAgZmlsZS4KICAgICAg
ICAgRFdPUkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBGQUxT
RTsKLSAgICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2Nl
ZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCksICZ3cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgICAg
IHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKICAgICAg
ICAgQ2xvc2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAgICAgICBpZiAoIXRlbXBXcml0ZVN1
Y2NlZWRlZCkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTA3MSw3ICsxMDcxLDcgQEAgdm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFVSTCYgdXJsKQogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgIWNhY2hlZEltYWdlLT5pbWFn
ZUZvclJlbmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSkgfHwgIWNhY2hlZEltYWdlLT5pc0xvYWRl
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0g
Y2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgp
OworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0gY2FjaGVkSW1hZ2Ut
PmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgpOwogICAgIGlmICgh
aW1hZ2VCdWZmZXIgfHwgIWltYWdlQnVmZmVyLT5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA0MTFlZGJiMzUx
N2I4NDhmYWMwNjNkMTllOGNkOTVlYzAwMzdjZDYxLi44NGZhMjljZTFmMzAwZmUyOTBiMDQxNDY0
OGYwZjcyOTBhN2NiZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmNwcApAQCAtNjMsNyArNjMsNyBAQCBib29sIE1vY2tDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5
c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShrZXlTeXN0ZW0sICJvcmcud2Via2l0Lm1vY2siKTsKIH0KIAotdm9pZCBNb2NrQ0RN
RmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+JiYga2V5cykKK3ZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNU
b1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4mJiBrZXlzKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXNzaW9ucy5h
ZGQoaWQsIFdURk1vdmUoa2V5cykpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKQEAg
LTc0LDcgKzc0LDcgQEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJ
RChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEIKICAgICAgICAgdmFsdWUuYXBw
ZW5kKFdURk1vdmUoa2V5KSk7CiB9CiAKLVZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gTW9ja0NE
TUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQor
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92
ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQogewogICAgIGF1dG8gaXQg
PSBtX3Nlc3Npb25zLmZpbmQoaWQpOwogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25zLmVuZCgpKQpA
QCAtODMsNyArODMsNyBAQCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5
OjpyZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaQogICAgIHJldHVybiBXVEZN
b3ZlKGl0LT52YWx1ZSk7CiB9CiAKLWNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4qIE1v
Y2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25z
dAorY29uc3QgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4qIE1vY2tDRE1GYWN0
b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdAogewogICAg
IGF1dG8gaXQgPSBtX3Nlc3Npb25zLmZpbmQoaWQpOwogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25z
LmVuZCgpKQpAQCAtMjAyLDcgKzIwMiw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9u
cygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZmFjdG9yeSAmJiBtX2ZhY3RvcnktPnN1cHBvcnRzU2Vz
c2lvbnMoKTsKIH0KIAotYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QK
K2Jvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewog
ICAgIGlmICghc3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMSwxMiArMjExLDEzIEBAIGJvb2wgTW9ja0NE
TTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkg
Y29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJl
c3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewot
ICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uu
c2l6ZSgpKSkKKyAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNp
emUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVz
cG9uc2VBcnJheSA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3Bs
aXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKGJ1ZmZl
ci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAoIXJlc3Bv
bnNlQXJyYXkuY29udGFpbnMoU3RyaW5nKCJ2YWxpZC1yZXNwb25zZSJfcykpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTI2OSw5ICsyNzAsOSBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6
aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJh
dAogICAgIGNhbGxiYWNrKGluaXRpYWxpemUoKSk7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNl
OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBT
dWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwg
U3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0
ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7Cisg
ICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAKICAgICBjYWxsYmFjayhl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlkIikgPyBT
dWNjZWVkZWQgOiBGYWlsZWQpOwogfQpAQCAtMjk3LDcgKzI5OCw3IEBAIE1vY2tDRE1JbnN0YW5j
ZVNlc3Npb246Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxNb2NrQ0RNSW5zdGFuY2U+
JiYgaW5zdGFuCiB7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBtX2lu
c3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewpAQCAtMzIz
LDcgKzMyNCw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2Uo
TGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TCiAgICAgY2FsbGJhY2soU2hhcmVk
QnVmZmVyOjpjcmVhdGUobGljZW5zZS5kYXRhKCksIGxpY2Vuc2UubGVuZ3RoKCkpLCBzZXNzaW9u
SUQsIGZhbHNlLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgTW9ja0NETUlu
c3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGlj
ZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxs
YmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNr
KQogewogICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFu
Y2UtPmZhY3RvcnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7CkBAIC0zMzEsNyAr
MzMyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5k
YXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4g
cmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rv
ci5jb250YWlucyhTdHJpbmcoImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAgICAgICAgY2FsbGJh
Y2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nl
c3NWYWx1ZTo6RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NETUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaApp
bmRleCBmNWNkYTUwNWNmMmEzM2MxMDVmMDI1Yzk3YzkzNTBhOTY4Njk4ZTFlLi5kOTZjMTU2ZWU0
ZDI3OTFiOGIwOTk4ZGFmOTQwZWM3NTM3ODA3YmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ0RNRmFjdG9yeS5oCkBAIC03Nyw5ICs3Nyw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFz
U2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSB7IHJldHVybiBtX3Nlc3Npb25zLmNvbnRh
aW5zKGlkKTsgfQogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlk
KSB7IG1fc2Vzc2lvbnMucmVtb3ZlKGlkKTsgfQotICAgIHZvaWQgYWRkS2V5c1RvU2Vzc2lvbldp
dGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYpOwotICAg
IGNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4qIGtleXNGb3JTZXNzaW9uV2l0aElEKGNv
bnN0IFN0cmluZyYgaWQpIGNvbnN0OwotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gcmVt
b3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpOworICAgIHZvaWQgYWRk
S2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiYmKTsKKyAgICBjb25zdCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+Pioga2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3Q7
CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gcmVtb3ZlS2V5c0Zyb21T
ZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpOwogCiBwcml2YXRlOgogICAgIE1vY2tDRE1G
YWN0b3J5KCk7CkBAIC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhbkNyZWF0
ZUluc3RhbmNlcyB7IHRydWUgfTsKICAgICBib29sIG1fc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0
ZXMgeyB0cnVlIH07CiAgICAgYm9vbCBtX3N1cHBvcnRzU2Vzc2lvbnMgeyB0cnVlIH07Ci0gICAg
SGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IG1fc2Vzc2lvbnM7Cisg
ICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBt
X3Nlc3Npb25zOwogfTsKIAogY2xhc3MgTW9ja0NETSA6IHB1YmxpYyBDRE1Qcml2YXRlIHsKQEAg
LTEyMSw4ICsxMjEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBm
aW5hbDsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7
CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25z
dCBmaW5hbDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZp
bmFsOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmlu
YWw7CiAKICAgICBXZWFrUHRyPE1vY2tDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CkBAIC0xMzksNyAr
MTM5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVt
ZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpN
b2NrOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFL
ZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxv
d1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYp
IGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3Jh
Z2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0oKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVh
dGVTZXNzaW9uKCkgZmluYWw7CkBAIC0xNTQsOCArMTU0LDggQEAgcHVibGljOgogICAgIE1vY2tD
RE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxNb2NrQ0RNSW5zdGFuY2U+JiYpOwogCiBwcml2YXRl
OgotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxi
YWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNl
bnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEs
IExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNl
VHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYm
KSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Np
b25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0
cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAppbmRleCBmYzEy
N2I3YjY3YmVhNzM0NDYzY2QyZDViMDc1NmI1OWJlYmE1OGFlLi4wNTlmM2EzODZiNmNmNWZhNzli
M2MxODk3MDE1MzEzZjdjZGI0ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgTW9ja0NvbnRlbnRGaWx0
ZXI6OmZpbmlzaGVkQWRkaW5nRGF0YSgpCiAgICAgbWF5YmVEZXRlcm1pbmVTdGF0dXMoRGVjaXNp
b25Qb2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVy
PiBNb2NrQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKK1JlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBNb2NrQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29u
c3QKIHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkpOwogICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5kYXRhKCksIG1fcmVwbGFjZW1lbnREYXRhLnNp
emUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKaW5kZXgg
NDExYTMwMDk0N2I1MzllMjZhYTZjNjRhMDA5MzI5MmU5ZmZiZTZiOS4uNjM1YWM4NGJlNzkzODQ3
YWE1NzIxM2QwMWZmYzFlNzRmNzZiNzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNw
b25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lk
IGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKQogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJs
b2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1NjcmlwdEJ1ZmZlci5jcHAKaW5kZXggNmQ0OGJkMDJkMWM5MWY3ZWVkODY0YTE2Y2Q3NTZiYjA3
N2Q2NTUyYS4uNWY4NTQ1ZWJhNWIwZTdiOGJiYWJhNWM2OTNjMmE0MzQxODhiMmJhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcm
IHN0cmluZykKIHsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAg
IG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIFNjcmlw
dEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKQEAgLTQ2LDE0ICs0NiwxMyBAQCBTY3JpcHRC
dWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCiAgICAgcmV0dXJuIFNjcmlwdEJ1ZmZlciB7IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsKIH0KIAotCiBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0
cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIG1fYnVmZmVyLT5mb3JFYWNo
U2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgIG1fYnVmZmVyLmdldCgpLT5mb3JFYWNo
U2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewogICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJp
bmc6OmZyb21VVEY4KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSkpOwogICAgIH0pOwog
ICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC02MSwxNSArNjAsMTMgQEAgU3RyaW5n
IFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogCiBib29sIFNjcmlwdEJ1ZmZlcjo6Y29u
dGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVm
ZmVyICYmIG1fYnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXItPmJlZ2luKCktPnNl
Z21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKKyAgICByZXR1cm4gbV9idWZmZXIgJiYg
bV9idWZmZXIuZ2V0KCktPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci5nZXQoKS0+YmVnaW4o
KS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOwogfQogCiB2b2lkIFNjcmlwdEJ1
ZmZlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIGlmICghbV9idWZmZXIp
Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvIHV0
ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyLT5hcHBlbmQodXRmOC5kYXRhKCksIHV0
ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5n
dGgoKSk7CiB9CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImIGEsIGNvbnN0
IFNjcmlwdEJ1ZmZlciYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2Ny
aXB0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCmluZGV4
IGIzOWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3OTZiNzFhMDQzMTM0YzY2NDYuLmZkMmMxYWUyZjYzYjYw
ZDc0YzMwZDI0MmE5ODlhMGJmZDkxZGU0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRC
dWZmZXIuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBTY3JpcHRCdWZmZXIgewogcHVibGljOgog
ICAgIFNjcmlwdEJ1ZmZlcigpID0gZGVmYXVsdDsKIAotICAgIFNjcmlwdEJ1ZmZlcihSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBTY3JpcHRCdWZmZXIoUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVm
ZmVyKSkKICAgICB7CiAgICAgfQpAQCAtNDgsMTcgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKICAgICBT
dHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KIAot
ICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZm
ZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci0+Y29weSgpKSA6IG51
bGxwdHIpOyB9CisgICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJu
IFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiht
X2J1ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29s
KCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuICFtX2J1ZmZlciB8fCAhbV9idWZmZXItPnNpemUoKTsgfQorICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzRW1wdHkoKTsgfQogCiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7CiAg
ICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlw
dC4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRG
LTggZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVm
ZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggNzc0MTZlYzA3ZDdiNjhiMTI4ZTI5NjFl
ZGM1ZDY0MGQwNGQ0YmQ0NS4uNDA2NmZiMzUyZWI1YjA4N2Q1ZDhkNDdkODAyZmQyYzBhNmE4MGZm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmNwcApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXb3JrZXJGb250TG9h
ZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVzdChVUkwmJiB1cmwsIExvYWRlZEZyb21PcGFx
dWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKICAgICA6IG1fdXJsKFdURk1vdmUodXJs
KSkKICAgICAsIG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZShsb2FkZWRGcm9tT3BhcXVlU291cmNl
KQorICAgICwgbV9kYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsK
IH0KIApAQCAtNzUsMTIgKzc2LDIxIEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2Fk
KFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKICAgICBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHdvcmtlckdsb2JhbFNjb3BlLCBX
VEZNb3ZlKHJlcXVlc3QpLCAqdGhpcywgb3B0aW9ucyk7CiB9CiAKK2Jvb2wgV29ya2VyRm9udExv
YWRSZXF1ZXN0Ojppc1BlbmRpbmcoKSBjb25zdAoreworICAgIHJldHVybiAhbV9pc0xvYWRpbmcg
JiYgIW1fZXJyb3JPY2N1cnJlZCAmJiBtX2RhdGEtPmlzTnVsbCgpOworfQorCiBib29sIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYp
CiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJl
ZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2Fy
eShtX2RhdGEpOwotICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2RhdGEsIG1f
dXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgaWYgKG1fZGF0YS0+Z2V0KCkpCisg
ICAgICAgICAgICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91
cygpOworICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRh
KTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEtPmFw
cGVuZCgqY29udGlndW91c0RhdGEpOworICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJs
LmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKCFtX2Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEpCiAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0g
dHJ1ZTsKICAgICAgICAgfQpAQCAtMTE3LDkgKzEyNyw2IEBAIHZvaWQgV29ya2VyRm9udExvYWRS
ZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCkKICAgICBpZiAobV9lcnJvck9jY3VycmVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IW1fZGF0YSkKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAg
IG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1
ZTc4MGJkZWViYzVjNmUwNGExZTg2M2M3Li4xYjNkNzg3MGYxMjhiZmU1MzhlZTZjOTg1OWNkYWFl
ODFlNDVlMmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmgKQEAgLTMwLDEzICszMCwxNCBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0
aW9ucy5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3
dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4
dDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHN0
cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Vy
bDsgfQotICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1faXNMb2Fk
aW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1fZGF0YTsgfQorICAgIGJvb2wgaXNQZW5kaW5n
KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2lzTG9hZGluZzsgfQogICAgIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fZXJyb3JPY2N1cnJlZDsgfQogCkBAIC03Niw3ICs3Nyw3IEBAIHByaXZhdGU6CiAg
ICAgRm9udExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxw
dHIgfTsKIAogICAgIFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0Owot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVm
ZmVyQnVpbGRlcj4gbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5oCmluZGV4IGViMjY2YjZjMDdlNjczZDkxNjZjYWNlNmIzMzkxOWQ4MGViYmYzMWMuLjA5NzU0
M2UxYjNiMzBmZjMxNDdkOTIzMmE1OGNlNGE5ZTYyZjNlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7CiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CiBjbGFzcyBTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgU2VydmljZVdvcmtlckZldGNoIHsKIGNsYXNz
IENsaWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDbGllbnQsIFdURjo6RGVzdHJ1
Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
Rm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5YTg3NWY4YWZjMGQ2MjM1NWFj
NjIyOWE2NGMxY2E0M2QxODU2NTIuLjlhOGZiMzVjYTUzNjEwNWJiNmQ2ZmM0NmVlMTIyNDU5MzNm
NzBiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsxMjcsOCBAQCBTY3JpcHRCdWZm
ZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiByZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGRpc2Fi
bGUgZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQgaGF2aW5nIHRvbyBtYW55IGZp
bGUgZGVzY3JpcHRvcnMgb3Blbj8KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlBy
aXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBTaGFyZWRCdWZmZXI6Ok1h
eVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpO
byk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8g
U2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlV
c2VGaWxlTWFwcGluZzo6Tm8pOworICAgIHJldHVybiBidWZmZXI7CiB9CiAKIHZvaWQgU1dTY3Jp
cHRTdG9yYWdlOjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdp
c3RyYXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBhYjk5
NjAzZWE1M2UyNDZiNjMzMjFmYmQ0MTQxY2M1ZTI5Y2U5NmI0Li5mY2NjMmE5ZWQyMGQ3NDdjMDlj
NjE2YjQ5OGU1MzBlZjc4YThlNTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKQEAgLTExOCw2ICsxMTgsNyBAQCBYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1fcmVzcG9uc2VDYWNoZUlzVmFs
aWQoZmFsc2UpCiAgICAgLCBtX3JlYWR5U3RhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFVOU0VO
VCkpCiAgICAgLCBtX3Jlc3BvbnNlVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVzcG9uc2VU
eXBlOjpFbXB0eVN0cmluZykpCisgICAgLCBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcihtYWtlVW5p
cXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiAgICAgLCBtX3Byb2dyZXNzRXZlbnRUaHJv
dHRsZSgqdGhpcykKICAgICAsIG1fdGltZW91dFRpbWVyKCp0aGlzLCAmWE1MSHR0cFJlcXVlc3Q6
OnRpbWVvdXRUaW1lckZpcmVkKQogewpAQCAtMjA3LDggKzIwOCw4IEBAIFJlZjxCbG9iPiBYTUxI
dHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkKIAogICAgIC8vIEZJWE1FOiBXZSBqdXN0
IHJlY2VpdmVkIHRoZSBkYXRhIGZyb20gTmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBp
dCBiYWNrLiBUaGlzIGlzIGluZWZmaWNpZW50LgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwot
ICAgIGlmIChtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgZGF0YSA9IHN0ZDo6ZXhj
aGFuZ2UobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIsIG51bGxwdHIpLT5leHRyYWN0RGF0YSgpOwor
ICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpKQorICAgICAgICBkYXRh
ID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2UoKS0+ZXh0cmFjdERhdGEoKTsKICAgICBT
dHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBl
KHJlc3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlwZTo6WWVzKSk7IC8vIHJlc3BvbnNlTUlNRVR5
cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5IGJlIGluY29ycmVjdC4KICAgICByZXR1
cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShkYXRhKSwg
bm9ybWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAgLTIxOCw4ICsyMTksNyBAQCBSZWZQdHI8QXJy
YXlCdWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKCkKICAg
ICBBU1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcik7CiAg
ICAgQVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkpOwogCi0gICAgYXV0byByZXN1bHQgPSBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50cnlDcmVhdGVB
cnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKLSAgICBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgYXV0byByZXN1bHQgPSAhbV9iaW5h
cnlSZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRh
a2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjpjcmVhdGUobnVsbHB0
ciwgMCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQg
WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VCdWZmZXJzKCkKICAgICBtX3Jlc3BvbnNlRW5j
b2RpbmcgPSBTdHJpbmcoKTsKICAgICBtX2NyZWF0ZWREb2N1bWVudCA9IGZhbHNlOwogICAgIG1f
cmVzcG9uc2VEb2N1bWVudCA9IG51bGxwdHI7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIg
PSBudWxscHRyOworICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5yZXNldCgpOwogICAgIG1f
cmVzcG9uc2VDYWNoZUlzVmFsaWQgPSBmYWxzZTsKIH0KIApAQCAtMTA2NSw4ICsxMDY1LDYgQEAg
dm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbikKICAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVj
b2RlKGRhdGEsIGxlbikpOwogICAgIGVsc2UgewogICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRh
dGEuCi0gICAgICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgICAgICBt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAg
IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5hcHBlbmQoZGF0YSwgbGVuKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggNzI4OTRhZjZjYzQ3ZGJhZTVlNzVjM2E4
MDc5MDllZjI4NGY2ZDU5Ny4uMTYyY2E5NWFlYjc1NDQ4OWJkNmNkOGNkYzUwODYyYzg0Nzc3YmFi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJ
bmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5oIgogI2luY2x1ZGUgPHZhcmlhbnQ+
CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEJsb2I7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERP
TUZvcm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNs
YXNzIFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBVUkxTZWFyY2hQYXJhbXM7CkBAIC0yMzcsNyAr
MjM4LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9yZXNwb25zZURvY3Vt
ZW50OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7
CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyOwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Jlc3BvbnNlQnVpbGRlcjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJv
eHkuY3BwCmluZGV4IDU3MzA2N2UzZGQwNTBmZWI3YzU3OWQwMDEwMmVlOWY2MDQ1YjUzMTMuLjMx
YzJkNzZmMmVlMWI5ZDI0OWIwMDFiN2VmZjg5MmVjMmE3NDU2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5j
cHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6flJlbW90ZUNETUlu
c3RhbmNlUHJveHkoKQogICAgIG1faW5zdGFuY2UtPmNsZWFyQ2xpZW50KCk7CiB9CiAKLXZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNl
aXZlZChjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2
b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRh
UmVjZWl2ZWQoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YSkKIHsKICAgICBpZiAoIW1fY2RtKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJv
eHkuaAppbmRleCA4ZTczZDNkOWE2NGI5OGJmYzAwOTM2Y2Q0N2M0YzI1YTkyNzlmMmM4Li4wMmM1
Y2QzN2FlNTQ4MDJmNmQwYzhkY2NjYjBiYTgwY2YzMzg4YzMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKQEAg
LTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KFdlYWtQ
dHI8UmVtb3RlQ0RNUHJveHk+JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4mJiwgVW5pcXVl
UmVmPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VJ
ZGVudGlmaWVyKTsKIAogICAgIC8vIENETUluc3RhbmNlQ2xpZW50Ci0gICAgdm9pZCB1bnJlcXVl
c3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXph
dGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAppbmRleCBlNTc2NmMyMzM0Y2Zk
Mzg5MzEwY2Q0YjIxNzIzY2FiYTM3NDJmYzdjLi5kZTgyNzNiOWNmNTAwYTRkNjZhYTE0NGVkZTAy
MDFlZWYxZWQ4NjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKQEAgLTcwLDcg
KzcwLDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUgdHlwZSwgQXRvbVN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgbV9zZXNzaW9uLT5yZXF1ZXN0TGljZW5zZSh0eXBlLCBpbml0RGF0YVR5cGUsIGluaXRE
YXRhLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21w
bGV0aW9uKV0gKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpT
dWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb24tPnJlcXVlc3RM
aWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51
bGwoKSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVl
ZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3Vj
Y2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbihXVEZNb3ZlKG1lc3NhZ2UpLCBz
ZXNzaW9uSWQsIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5j
ZVNlc3Npb246OlN1Y2NlZWRlZCk7CiAgICAgfSk7CiB9CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9p
ZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkLCBDbG9zZVMKIAogdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBl
IHR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJiBjb21wbGV0aW9uKQogewotICAgIG1f
c2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlLCBbY29tcGxldGlvbiA9
IFdURk1vdmUoY29tcGxldGlvbildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
ciYmIGtleVN0YXR1c2VzLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGV4cGly
ZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRl
ZCkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQs
IHR5cGUsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vz
c2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIHN0ZDo6b3B0aW9uYWw8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNl
U2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVu
Y2U7CiAgICAgICAgIGlmIChleHBpcmVkU2Vzc2lvbnNEYXRhKQogICAgICAgICAgICAgZXhwaXJl
ZFNlc3Npb25EYXRhUmVmZXJlbmNlID0gSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoKmV4
cGlyZWRTZXNzaW9uc0RhdGEpKTsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJiBr
ZXlTdGF0dQogICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlVwZGF0ZUtleVN0YXR1c2VzKFdU
Rk1vdmUoa2V5U3RhdHVzZXMpKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBpZiAoIW1fY2RtKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCmluZGV4IDhhNjFmOWQ1ZmFiYzg0ODZhN2EwZTg2
MGY0YzYzMTJjMGI0NDU1MTQuLmZlNzMwOTcxMzFlMGJiMjBhNTAwMWUxNTAxNjAyZDY1MTg2YjMw
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZh
dGU6CiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQKICAgICB2b2lkIHVwZGF0ZUtl
eVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKSBmaW5hbDsKLSAgICB2b2lkIHNlbmRNZXNzYWdl
KFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIG1l
c3NhZ2UpIGZpbmFsOworICAgIHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5
cGUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFs
OwogICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBQ
bGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBmaW5hbCB7IHJldHVybiBtX2Rpc3BsYXlJRDsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5
LmNwcAppbmRleCA5YWIzNTc1ZjRjM2I1NTk1NTViOWI4N2IyMzM3MWIxYjFhNjZkYzE3Li5mN2Ni
NmE2M2ViOTMzYWJkNGQ0NTNhMjJhYjI5NGYxMzAzMjMyYjA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKQEAgLTYzLDEyICs2Mywx
MiBAQCBSZW1vdGVDRE1Qcm94eTo6UmVtb3RlQ0RNUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0
b3J5UHJveHk+JiYgZmFjdG9yeSwgc3RkOjp1bgogCiBSZW1vdGVDRE1Qcm94eTo6flJlbW90ZUNE
TVByb3h5KCkgPSBkZWZhdWx0OwogCi1ib29sIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK2Jv
b2wgUmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlw
ZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICByZXR1cm4gbV9w
cml2YXRlLT5zdXBwb3J0c0luaXREYXRhKHR5cGUsIGRhdGEpOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZm
ZXImIHJlc3BvbnNlKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFJlbW90ZUNETVBy
b3h5OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3Bv
bnNlKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2Up
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHku
aAppbmRleCA2OTI0ZTc0ZTNmNTAxMWJlMjE1YmU0YmQ5NmIyMzQ4MjY0NzBmNDIzLi4zYjY2Yzc3
NTc4NzA2OWU5NzZlZTA2NGY5NmZmMDdjMGY3MTJhOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaApAQCAtMzYsNyArMzYsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgQ0RN
UmVxdWlyZW1lbnQgOiB1aW50OF90OwogZW51bSBjbGFzcyBDRE1TZXNzaW9uVHlwZSA6IHVpbnQ4
X3Q7CiBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKQEAgLTU4LDggKzU4LDggQEAg
cHVibGljOgogCiAgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5KiBmYWN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9mYWN0b3J5LmdldCgpOyB9CiAKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJiByZXNwb25zZSk7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpOwogICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCmluZGV4IGUyY2QwNWQ3Y2M3NGYyMGVjNjlm
YWRmZTNlZTA4NTc1OTJhZDg3OWIuLmRlOGY2ZGY1NWE2ZTFmYThiZTk2NmY5NDFlMDdmZTJmNWM1
MDIxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1Qcm94eS5oCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHkuY3BwCmluZGV4IDkzYjJmZjc0MWIxZjgzNjliMjA1ODRlNDk3ZTRhMDIx
YjljY2Y1NzguLjIxNDEzNzlkNmE1OWVhZjIyODUxNGIxODdiNTY5ZDA0NzAzYzExOTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gY29udmVydFRvT3B0aW9uYWxEYXRhUmVmZXJl
bmNlKFQgYXJyCiB7CiAgICAgaWYgKCFhcnJheSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICByZXR1cm4geyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoY29uc3QgY2hhciopYXJyYXkt
PmRhdGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkgfTsKKyAgICByZXR1cm4geyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKGNvbnN0IGNoYXIqKWFycmF5LT5kYXRhKCksIGFycmF5LT5i
eXRlTGVuZ3RoKCkpIH07CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojpn
ZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5JiYgaW5pdERhdGEsIEdlbmVyYXRlS2V5Q2FsbGJhY2smJiBjb21wbGV0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETVNlc3Npb25Qcm94eS5oCmluZGV4IGYxNGM2MjdmNjU5M2UxYTg3OGQwZjQ1OTkyYjNjNDFi
MjIyYzdmMDAuLjE1NDZiZGZkZmRjZjA5MTA4Nzg5NDRmMzQwNzk2N2E3YWIzOGJmODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5LmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIExlZ2FjeUNETTsKIGNsYXNzIExlZ2FjeUNETVNlc3Npb247Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2Ug
SVBDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlLmNwcAppbmRleCBjNDVlNTI1NWQ2N2I1MmM3YWUxMDQ0OTk4OGNlMDE5MGM3
ZmZiNTM4Li42MTdmNDc2ODk1NjQyZGVjMjMyNTRiNTQwZWU4MTkxMWFjNGEyZGY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2UuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVNl
bnQodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlCiAgICAgICAg
IG1fY2xpZW50LT5kYXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQp
OwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChSZWY8U2hhcmVk
QnVmZmVyPiYmIGRhdGEpCit2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGlmIChtX2NsaWVudCkK
ICAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgV1RGTW92ZShkYXRhKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNv
dXJjZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2UuaAppbmRleCBkMTNkMjVmNjVmMDIyNGE2Yzc2N2Y2OWE0ZDQxOWNkMDUzYmI3OTVkLi41Yjdh
N2UyYTc0MjQ0MzJkODZjYjI4YTFiZTcxNzE4YTE2NzM3NWU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKQEAgLTM0LDcg
KzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNz
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2ws
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVj
ayk+JiYpOwogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIGRhdGFTZW50
KHVpbnQ2NF90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUmVmPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFp
bGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGYWlsZWQo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggN2U1
NzJiM2E3NGEyMDI3ZTc0Y2FhNzY3MmU1MmRhMGFmODM0MjA3Mi4uZTgzZjkxNDNkMjBhNzJlMmJl
NGZmY2JmZWQxM2IwYmI0ZGQzMWUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3LDgg
QEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3Jl
OjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0
Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJs
ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV93cml0ZXItPmZldGNoRGF0YShbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRhdGEs
IGF1dG8gdGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBhdXRvKiBwb2ludGVyID0gZGF0YSA/
IGRhdGEtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/IGRh
dGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigpOwor
ICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRy
OwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVy
LCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93
bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdE
b3dubG9hZC5oCmluZGV4IDUyY2M1ZGExMjFhMmZiNTlkOGNmMDU5M2I2ODUwOWZkNjU1YzBjZGMu
LjcxZmQwMjIyOWJiYjFjNTczMjZmZGZjZmUyNmMxMWY3NjFhYmNmNzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9h
ZC5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1Vz
ZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxvd2VkVG9Bc2tV
c2VyRm9yQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
ZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9u
c2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlIHsg
fTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDNmMzllYjMyZjFhYTgw
NzY3ODVkYTc5ZWUxMWRhZDhmMGMzMjZiNzkuLmQ4OTIwZTk4NzY0ZmQ5YjY0YjljZGRjNjBhMWQ4
NGQ2MTliMmQ0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTExOSw3ICsxMTksNyBA
QCB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFj
dGlvbjo6VXNlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpCit2b2lkIE5ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpCiB7CiAgICAgQ09SU19DSEVDS0VSX1JFTEVBU0VfTE9HKCJkaWRSZWNl
aXZlRGF0YSIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggYmJiMTQ2MmEzMTYxZTJmY2U5
ZWE1Nzg0NGIxOWI5M2U2MTljODFiMC4uZTExYmY1NjMxOTA3YWU0NzMzNmVmODVhNWQyMmU4ODM1
NzQ2NTFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lk
IGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25z
dCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmRE
YXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKaW5kZXggZDYwMThmNjEzODNh
ZTNhNTFlOWQ0NzIyY2Y2YTYwZTJkOGI4N2E3ZC4uZTA0OWU1YjEyZGRlNWZlNTFiNDY5NTUyODlh
N2E3ZjY5OTgyYWZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtEYXRhVGFzay5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYzLDcgKzYzLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVj
dENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNo
YWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVn
YWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290
aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlV2l0
aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2
NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5kZXggYmFjMDIyYWI0NTQzMGY2NTFiMTg5
YWMwMTIwN2EwNjA2MDhjMTY3MS4uNzk3NWQ0MWJhZDg5MTVmZWVkYmRhYjE1NTRlODFlMWRiMjAz
MGY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAK
QEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpub3RpZnlEaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdAogICAgIG1fY2xpZW50
LmdldCgpLmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVE
YXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgYmUgdGhlIGVuY29kZWQgZGF0YSBsZW5ndGgsIG5vdCB0aGUgZGVjb2Rl
ZCBkYXRhIGxlbmd0aC4KICAgICBhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRleCBjMzc3M2M5ODc4NTUzY2U1
MzRkMDU0YWJmZmRkZWJiMjllZTA4NGQyLi5lZTVlYjAwNmFhMzc5Yjc4ZmNiYzBiZDE3NGUzMmJk
NjM5Zjk1ZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5o
CkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdv
dGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5l
Z290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1
aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxv
Y2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENsaWVudC5oCmluZGV4IDBhNWY2NmJkOTY3ZWM5ZmRmNjY0ZTUyZTVhZjM5NGU0OGVjZTFm
N2IuLjM0OGNmZmI5ZThlMjVlZTgzYmJiMzlhMDJjZDNjZjZkMjg1NGQzOWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKQEAgLTMyLDcg
KzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgUG9saWN5QWN0aW9uIDogdWlu
dDhfdDsKIH0KIApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9u
ZyB0b3RhbEJ5dGVzVG9CZVNlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZWRp
cmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQmxvY2tBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSgpIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBiZjhmMzU3ZDdhODNlZTUw
Mjg5MWRiMWU1YWJkODQxODRjNjMzNmM4Li43MzE4OWVmZTQzMWJhNzMzM2JhYjJhN2I3NDAzMmQx
MWNiNWZjNjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04NywxNCArODcsMTQgQEAgc3RydWN0IE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSB7CiAgICAgUmVzb3VyY2VFcnJv
ciBlcnJvcjsKIH07CiAKLXN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0
KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSYgZGF0YSwgY29uc3Qg
U2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
K3N0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSYgZGF0YSwgY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAg
ICAgQVNTRVJUKGRhdGEuZGVsYXllZFJlcGx5KTsKICAgICBBU1NFUlQoIWRhdGEucmVzcG9uc2Uu
aXNOdWxsKCkgfHwgIWRhdGEuZXJyb3IuaXNOdWxsKCkpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHJlc3BvbnNlQnVmZmVyOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0gICAg
ICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OworICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAgIGRhdGEucmVzcG9uc2Uuc2V0RGVwcmVj
YXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRlKG1l
dHJpY3MpKTsKIApAQCAtMTA1LDkgKzEwNSwxMSBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5
bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAog
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiBzeW5jaHJvbm91c1JlcGx5
KQogICAgIDogbV9wYXJhbWV0ZXJzIHsgV1RGTW92ZShwYXJhbWV0ZXJzKSB9CiAgICAgLCBtX2Nv
bm5lY3Rpb24geyBjb25uZWN0aW9uIH0KKyAgICAsIG1fYnVmZmVyZWREYXRhIHsgbWFrZVVuaXF1
ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZmlsZVJlZmVyZW5jZXMoY29u
bmVjdGlvbi5yZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9wYXJhbWV0ZXJzKSkKICAgICAsIG1faXNB
bGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMgeyBtX3BhcmFtZXRlcnMuY2xpZW50Q3JlZGVu
dGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVk
ZW50aWFscyB9CiAgICAgLCBtX2J1ZmZlcmluZ1RpbWVyIHsgKnRoaXMsICZOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQgfQorICAgICwgbV9idWZmZXJlZERhdGFGb3JD
YWNoZSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX3No
b3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1cmVF
eHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2FkSUQg
eyBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CkBAIC0zMDYs
MTAgKzMwOCwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9h
ZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgICAgICBjb25zdW1lU2Fu
ZGJveEV4dGVuc2lvbnMoKTsKIAogICAgICAgICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1fcGFy
YW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVmZmVy
ZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWRE
YXRhLT5lbXB0eSgpOwogCiAgICAgICAgIGlmIChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAgICAg
ICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+ZW1wdHkoKTsKICAgICB9CiAKICAg
ICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAgLTcz
MCwyMCArNzMyLDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICAgICB8fCBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL29jdGV0
LXN0cmVhbSIpOwogICAgIH07CiAKLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhCisgICAgaWYgKG1f
YnVmZmVyZWREYXRhLT5pc051bGwoKQogICAgICAgICAmJiBtX3Jlc3BvbnNlLmV4cGVjdGVkQ29u
dGVudExlbmd0aCgpID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPigxICogTUIpCiAgICAgICAgICYm
IGlzRmV0Y2hPclhIUihyZXNvdXJjZUxvYWRJbmZvKQogICAgICAgICAmJiBpc01lZGlhTUlNRVR5
cGUobV9yZXNwb25zZS5taW1lVHlwZSgpKSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwog
ICAgICAgICBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJTdHJh
dGVneTo6bWVkaWFNYXhpbXVtQnVmZmVyaW5nVGltZTsKICAgICB9CiAKICAgICAvLyBGb3IgbXVs
dGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxl
ZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5k
bGluZy4KICAgICBpZiAoIWlzU3luY2hyb25vdXMoKSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0
KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJl
ZERhdGEtPnJlc2V0KCk7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS0+cmVzZXQoKTsKIAogICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxpZGF0
aW9uKSB7CiAgICAgICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKQEAgLTg1OCw3ICs4NjAs
NyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZERpZFJlY2VpdmVSZXNwb25zZVBv
dGVudGlhbGx5SW5OZXdCcm93c2luZ0NvbnRleAogICAgIH0pOwogfQogCi12b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9udW1CeXRl
c1JlY2VpdmVkKQogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVCdWZmZXI6
IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGg9JWQpIiwg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CkBAIC04NjYsMjAgKzg2OCwyMCBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgaW50IHJlcAogCiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9u
KTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CisgICAgaWYgKCFtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLT5pc051bGwoKSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBn
cm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6ZSBvZiBlbnRyaWVz
IGluIHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNp
emUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsKICAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNp
emUpCiAgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdl
dCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9
IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5yZXNldCgpOwog
ICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICAvLyBGSVhNRTogQXQgbGVhc3Qgb24gT1MgWCBZb3NlbWl0ZSB3ZSBhbHdheXMgZ2V0IC0x
IGZyb20gdGhlIHJlc291cmNlIGhhbmRsZS4KICAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0
aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGggOiBidWZmZXItPnNpemUoKTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkgeworICAg
IGlmICghbV9idWZmZXJlZERhdGEtPmlzTnVsbCgpKSB7CiAgICAgICAgIG1fYnVmZmVyZWREYXRh
LT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0
YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKICAgICAgICAgc3RhcnRCdWZmZXJpbmdUaW1l
cklmTmVlZGVkKCk7CkBAIC05MDksMTEgKzkxMSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtM
bwogI2VuZGlmCiAKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQotICAgICAgICBzZW5kUmVwbHlU
b1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0
YS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJv
bm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEtPmdldCgp
LmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIGVsc2UgewotICAgICAgICBpZiAobV9i
dWZmZXJlZERhdGEgJiYgIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYg
KCFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogUGFz
cyBhIHJlYWwgdmFsdWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVkIGRhdGEgc2l6ZSBmZWF0dXJlLgot
ICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEsIC0xKTsKKyAgICAgICAgICAg
IHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLT5nZXQoKSwgLTEpOwogICAgICAgICB9CiAgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxv
YWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQpAQCAtMTI1NCwxOSArMTI1NiwxOSBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCkK
IAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQoKQogewot
ICAgIEFTU0VSVChtX2J1ZmZlcmVkRGF0YSk7CisgICAgQVNTRVJUKCFtX2J1ZmZlcmVkRGF0YS0+
aXNOdWxsKCkpOwogICAgIEFTU0VSVChtX25ldHdvcmtMb2FkKTsKIAogICAgIGlmIChtX2J1ZmZl
cmVkRGF0YS0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEgfSwg
bV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YS0+Z2V0KCkg
fSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwogCi0gICAgbV9idWZmZXJlZERh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgp
OwogICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwogfQogCi12b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6
ZV90IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRC
dWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFM
ZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFpc1N5bmNocm9ub3VzKCkpOwogCkBAIC0xMjc5LDcgKzEy
ODEsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnko
KQogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBOb3Qg
c3RvcmluZyBjYWNoZSBlbnRyeSBiZWNhdXNlIHJlcXVlc3QgaXMgbm90IGVsaWdpYmxlIik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7
CisgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIExP
QURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hl
IGVudHJ5IGJlY2F1c2UgbV9idWZmZXJlZERhdGFGb3JDYWNoZSBpcyBudWxsIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0xMjg3LDEyICsxMjg5LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5Q
cmVmZXRjaCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9jb25uZWN0aW9uLT5u
ZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKSkgewogICAgICAgICAg
ICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogU3RvcmluZyBlbnRy
eSBpbiBwcmVmZXRjaCBjYWNoZSIpOwotICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNo
ZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUo
bV9yZXNwb25zZSksIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAg
ICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRS
ZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUtPnRha2UoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBMT0FE
RVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIEhU
VFAgZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJl
bnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSks
IFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKKyAg
ICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3Bv
bnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT50YWtlKCksIFtsb2FkZXIgPSBSZWYgeyAqdGhp
cyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JF
U09VUkNFKQogICAgICAgICBpZiAobWFwcGVkQm9keS5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZS5p
c051bGwoKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGQyMzRkYWI1YmVlYTVi
NjQ3MzA1NTBjNzczNzBhOWYxNTk1OTdmOTcuLjk4NDQyNGEzMDY4MWEzNjBmYzYwYzllN2E5ZGQ0
ZTZiYjQyNmRlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lW
aW9sYXRpb25FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNDYsNiArNDcsOCBAQCBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBj
bGFzcyBGb3JtRGF0YTsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRC
dWZmZXJCdWlsZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExNCw3ICsxMTcsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7IH0K
ICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lk
IGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAg
dm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7
CiAgICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgZmluYWw7CkBAIC0x
OTIsNyArMTk1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc3RhcnRCdWZmZXJpbmdUaW1lcklm
TmVlZGVkKCk7CiAgICAgdm9pZCBidWZmZXJpbmdUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzZW5k
QnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBz
aXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOwogCiAgICAgdm9pZCBjb25zdW1lU2FuZGJveEV4dGVu
c2lvbnMoKTsKICAgICB2b2lkIGludmFsaWRhdGVTYW5kYm94RXh0ZW5zaW9ucygpOwpAQCAtMjI1
LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jl
c3BvbnNlOwogCiAgICAgc2l6ZV90IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggeyAw
IH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGE7Cisg
ICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyZWREYXRh
OwogICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTeW5jaHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9ub3VzTG9hZERhdGE7CkBAIC0yNDAs
NyArMjQzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVyaW5nVGlt
ZXI7CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBVbmlx
dWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNo
ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5
Rm9yVmFsaWRhdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4g
bV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbjsKICAgICBib29sIG1faXNXYWl0aW5n
Q29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCmluZGV4IDExNDg1M2U0NWI3MjUz
MzY0Yzc0N2E3MWNiMmI1YWI4Y2MzOGVmZDUuLjFhZjFlMDhlM2M0NDFlMjRmMzAwNjVlOWYyMDc3
NmU2ZjlmYzMzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3Bw
CkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVQKICAgICBkaWRGaW5p
c2goeyB9LCByZXNwb25zZSk7CiB9CiAKLXZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKIHsKICAgICBQSU5HX1JFTEVBU0VfTE9HKCJkaWRSZWNl
aXZlRGF0YSIpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4IDE5ZWM4Y2ViOTJlM2M4YTA1NmY0OTI3MzY2MGNmZmY5
MjY0MzQxZDEuLmFiMjlhMGIxYWM4NDY2YjBlZDYxZWY1OGVmNGMyMjBhYmFiNmViZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxs
ZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAg
IHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYs
IGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlk
U2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBl
Y3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCmluZGV4IDQ1NTc4
MmQ1NGEyZWE5YmVlMTg2NTBlMWFmZDFjZjdiMmNlOThjNDkuLjE3ZDQ3OTA3YTNmNmVlNTJiZTY1
MDFkMWRhYjBjYTYwNzUxZDZiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJlY29ubmVjdFRhc2suY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUHJlY29ubmVjdFRh
c2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3Bv
bnNlQ29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogfQog
Ci12b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+
JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBQcmVjb25uZWN0VGFzazo6
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKaW5kZXggMWMx
ZmYxNjQ3MTExYzZmYTg0OTRhZjVjZjBjN2JiZWFhMWIyNjUwMy4uODU4MDhlMTIxYjY4Y2E4Yjcz
ZTI1MThkMTkzYWIzOTU4MWVhZDFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJlY29ubmVjdFRhc2suaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBs
b25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0
ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmco
Y29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRG
YWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCmlu
ZGV4IDcxZTBjZjZjNmRjN2JlYTUyMmM5MDYwMDU1NWY1NzIxNjFjM2MyZjQuLjgxOTY2MzAyMGM2
OTVjZTBjNmFiYTk5OWM2NzVhYWI0MjgyYzdmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcApAQCAtMTc0LDEwICsxNzQsMTAg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXMKICAgICAgICAgY2FsbGJhY2soKTsKIH0KIAotdm9p
ZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2
b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpCiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNrKQotICAgICAgICBtX2JvZHlDYWxs
YmFjayhXVEZNb3ZlKGJ1ZmZlciksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAgICAg
ICBtX2JvZHlDYWxsYmFjayhidWZmZXItPm1ha2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRN
ZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXIuaAppbmRleCAxZTc4YzJjZWZhMTU0ODQxMDQwNjBmM2IxOWRjNTBlNmNiOGYxZWI0Li5l
ZTFiYzhiN2Q2Y2JmZmMzMzQxZDY3M2ZiNzI0MjIzOGY2NzE3ZjJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAtNjcsNyArNjcs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVj
dGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlk
RmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIGJv
b2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3M7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDhlZTEx
MmE5ZGY4Mjg5NTRjMTYyM2ZmZjIyYzJhMjBmZDhlMmZlN2QuLjdhMjYyMjE5ZGU3OGIyMzVkMTI1
YTkyYjZlMjM2ZDMzMjYyZjdhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIFJlc291cmNlRXJyb3Ig
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OnByb2Nlc3NSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKCFtX2Rl
Y29kZXIpIHsKICAgICAgICAgaWYgKCFtX3Jlc3BvbnNlRW5jb2RpbmcuaXNFbXB0eSgpKQpAQCAt
MTg3LDcgKzE4Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgfQogCiAgICAgaWYg
KGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9k
ZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5kYXRhKCksIHNpemUpKTsKKyAgICAgICAgbV9zY3JpcHQu
YXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBzaXplKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZp
bmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgKaW5kZXggMThmNTQ2OTFm
MzdjMmJhYmJjOGMxYTNiYzA5NDM3MGU5YjI5ZWI3MS4uNDRmYzA2ODVmYTBmZWRjODc0MjE5MTZl
OTEzYTY3NGIxYzBmZGJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxs
b3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIGZpbmFsOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9u
c2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFs
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IDA0Nzc2ODM2Zjk5OTA5MzkxMGIzOTlk
NzU1Mzg1NWQ1ZDNmMWZmNGUuLmRkMzA1YWYyOTc2NjFlNDc2YzQ5Njc3ZGY1NzIxZWZkMWVjOTMy
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIENhY2hlOjpjb21wbGV0ZVJldHJp
ZXZlKFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyLCBzdGQ6OnVuaXF1ZV9wdAog
ICAgIGhhbmRsZXIoV1RGTW92ZShlbnRyeSksIGluZm8pOwogfQogICAgIAotc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhKQorc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSkKIHsK
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNw
b25zZSwgV1RGTW92ZShyZXNwb25zZURhdGEpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVl
c3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24obV9zZXNzaW9uSUQpLCBy
ZXF1ZXN0LCByZXNwb25zZSkpOwogfQpAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxFbnRyeT4gQ2FjaGU6Om1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVl
c3QpLCByZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1Jl
cXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24obV9zZXNzaW9uSUQp
LCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hl
OjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiByZXNwb25zZURhdGEsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChyZXNwb25zZURhdGEpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAppbmRleCAxOTlm
MGNmYjczMjU0M2M1ZmVhZjRmZTIzMDFlNmExYzEyZjg4ZmU4Li5lZDA0ZWJjYTBiMzZmM2Y5YzRj
MGU3YmFjNzEzMzZiOWU5NmMzNTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTQzLDcgKzQzLDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIExvd1Bvd2VyTW9kZU5vdGlmaWVyOwogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjYsNyArMTY2LDcgQEAgcHVibGljOgogICAg
IH07CiAgICAgdXNpbmcgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQo
c3RkOjp1bmlxdWVfcHRyPEVudHJ5PiwgY29uc3QgUmV0cmlldmVJbmZvJik+OwogICAgIHZvaWQg
cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJh
bWVJRCYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBSZXRyaWV2
ZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmUo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIEZ1bmN0aW9uPHZvaWQo
TWFwcGVkQm9keSYpPiYmID0gbnVsbHB0cik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBz
dG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmID0gbnVsbHB0cik7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEVudHJ5PiBzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhB
Z2VDYXApOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gdXBkYXRlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEVudHJ5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgdmFsaWRhdGluZ1Jlc3BvbnNlKTsKIApAQCAtMTg1LDcgKzE4NSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJldHJpZXZlRGF0YShjb25zdCBEYXRhS2V5JiwgRnVuY3Rpb248dm9pZChj
b25zdCB1aW50OF90Kiwgc2l6ZV90KT4pOwogICAgIHZvaWQgc3RvcmVEYXRhKGNvbnN0IERhdGFL
ZXkmLCAgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKICAgICAKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8RW50cnk+IG1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlRW50cnkoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RW50cnk+IG1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCk7CiAKICAgICB2b2lkIGR1bXBDb250
ZW50c1RvRmlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBiYTM5ZDllMmMyNmEwMWE5MjZiMTFh
YTc5OWUzNjYyZmM2YWUwNTQ5Li43NjEwNzhkZWEwOTNjMDQ1NTViZTk4YjA1MTczZTM0MTUwNjdh
ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYktp
dCB7CiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAotRW50cnk6OkVudHJ5KGNvbnN0IEtleSYg
a2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3Ry
aW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKQorRW50cnk6OkVudHJ5KGNvbnN0
IEtleSYga2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBWZWN0
b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycykKICAg
ICA6IG1fa2V5KGtleSkKICAgICAsIG1fdGltZVN0YW1wKFdhbGxUaW1lOjpub3coKSkKICAgICAs
IG1fcmVzcG9uc2UocmVzcG9uc2UpCkBAIC0xMDEsOCArMTAxLDEwIEBAIFN0b3JhZ2U6OlJlY29y
ZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKIAogICAgIERhdGEgaGVhZGVy
KGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKICAgICBEYXRhIGJvZHk7
Ci0gICAgaWYgKG1fYnVmZmVyKQotICAgICAgICBib2R5ID0geyBtX2J1ZmZlci0+ZGF0YSgpLCBt
X2J1ZmZlci0+c2l6ZSgpIH07CisgICAgaWYgKG1fYnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVy
ID0gbV9idWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGJvZHkgPSB7IHN0YXRpY19j
YXN0PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcio+KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1
ZmZlci0+c2l6ZSgpIH07CisgICAgfQogCiAgICAgcmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1w
LCBoZWFkZXIsIGJvZHksIHsgfSB9OwogfQpAQCAtMTk0LDcgKzE5Niw3IEBAIHZvaWQgRW50cnk6
OmluaXRpYWxpemVCdWZmZXJGcm9tU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAgICAgbV9idWZmZXIg
PSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NvdXJjZVN0b3JhZ2VSZWNvcmQuYm9k
eS5kYXRhKCksIG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LnNpemUoKSk7CiB9CiAKLVdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciogRW50cnk6OmJ1ZmZlcigpIGNvbnN0CitXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBFbnRyeTo6YnVmZmVyKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYnVm
ZmVyKQogICAgICAgICBpbml0aWFsaXplQnVmZmVyRnJvbVN0b3JhZ2VSZWNvcmQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50
cnkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50
cnkuaAppbmRleCA5NjkxNWMzODAxYzM3ZGRhYzNlOGU2MDMyMWY4OGMyMjI5Y2Q1OWEwLi45YzA0
MjBkNDRhODE1OGRmYzViMjFjZjE4ODIwNGNmM2E5MTZiNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCkBAIC0z
NSw3ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3Bh
Y2UgTmV0d29ya0NhY2hlIHsKIGNsYXNzIEVudHJ5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBFbnRyeShjb25zdCBLZXkmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVmVj
dG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOwor
ICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVmVjdG9yPHN0
ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOwogICAgIEVu
dHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgVmVjdG9yPHN0
ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOwogICAgIGV4
cGxpY2l0IEVudHJ5KGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYpOwogICAgIEVudHJ5KGNvbnN0IEVu
dHJ5Jik7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KICAg
ICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0
SGVhZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJzOyB9CiAKLSAg
ICBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0OworICAgIFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0OwogICAgIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiYgcmVkaXJlY3RSZXF1ZXN0KCkgY29uc3Qg
eyByZXR1cm4gbV9yZWRpcmVjdFJlcXVlc3Q7IH0KIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVT
T1VSQ0UpCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxT
dHJpbmcsIFN0cmluZz4+IG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJzOwogCiAgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IG1fcmVkaXJlY3RSZXF1ZXN0OwotICAgIG11
dGFibGUgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgbXV0YWJs
ZSBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAjaWYg
RU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICBtdXRhYmxlIFNoYXJlYWJsZVJlc291cmNl
OjpIYW5kbGUgbV9zaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IGFkMDlkZjQ0ZDlhZjEyZmQ0MDgwMzEwNTQ2ODM1
MzZlYTBkYzgxOTMuLjdiMGFkYzQwZjBiMGI2NzE0NzFhMjdhYjUxMzk3NjZkNGI1NTU0NDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2
b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2Um
JiByZWNlaXZlZFJlc3BvbnNlLCBSZQogICAgIG1fcmVzcG9uc2UgPSByZWNlaXZlZFJlc3BvbnNl
OwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUu
cmVzZXQoKTsKIAogICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKICAgICBpZiAodmFsaWRh
dGlvblN1Y2NlZWRlZCAmJiBtX2NhY2hlRW50cnkpCkBAIC0xMjAsMTcgKzEyMCwxNyBAQCB2b2lk
IFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiBy
ZWNlaXZlZFJlc3BvbnNlLCBSZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6
VXNlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9p
ZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBB
U1NFUlQoIW1fY2FjaGVFbnRyeSk7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkg
ewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcg
ZGF0YS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSAxMCAq
IDEwMjQgKiAxMDI0OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgp
ICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBp
ZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhp
bXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5h
cHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLnJlc2V0KCk7CiAgICAgfQogfQogCkBAIC0xMzksMTAgKzEzOSwxMCBAQCB2b2lkIFNwZWN1
bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmKQogICAgIGlmIChtX2RpZENvbXBsZXRlKQogICAgICAgICByZXR1cm47CiAgICAgaWYg
KCFtX2NhY2hlRW50cnkgJiYgbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewotICAgICAgICBtX2Nh
Y2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5jb3B5UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsg
fSk7CisgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1
ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmdldCgpLCBbXShhdXRvJiBt
YXBwZWRCb2R5KSB7IH0pOwogICAgICAgICAvLyBDcmVhdGUgYSBzeW50aGV0aWMgY2FjaGUgZW50
cnkgaWYgd2UgY2FuJ3Qgc3RvcmUuCiAgICAgICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIGlzU3Rh
dHVzQ29kZUNhY2hlYWJsZUJ5RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpKQot
ICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxS
ZXF1ZXN0LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAg
ICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVx
dWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwogICAgIH0K
IAogICAgIGRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRl
eCBjMGUxZTE0YjJhYzQ2MDM1OGY4MTQwN2NkNzBjNDA5MDUyYWY4ZWZlLi4xYjg0M2RiN2VjMjcw
ZGI5ZGFiOWU4YTI1ZjJhNDhhOGVjYWUyYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNr
VXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRl
OgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAgICBi
b29sIG1fZGlkQ29tcGxldGUgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCmluZGV4IDVlMmUwMmUyZmJh
MGI0YTBjMDNiNWQzZTY2Yjk3ZjdiY2NjNzk1OGIuLjMxOTliZmYzMTFiNmMzZWVmYmU5NTBiNDVl
NmIwYTk2ZTMyNzc3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotUHJlZmV0Y2hDYWNoZTo6RW50cnk6OkVudHJ5KFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCitQcmVmZXRjaENhY2hlOjpFbnRyeTo6RW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiAgICAgOiByZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSksIGJ1ZmZlcihXVEZNb3Zl
KGJ1ZmZlcikpCiB7CiB9CkBAIC03Miw3ICs3Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQcmVmZXRj
aENhY2hlOjpFbnRyeT4gUHJlZmV0Y2hDYWNoZTo6dGFrZShjb25zdCBVUkwmIHVybCkKIAogc3Rh
dGljIGNvbnN0IFNlY29uZHMgZXhwaXJhdGlvblRpbWVvdXQgeyA1X3MgfTsKIAotdm9pZCBQcmVm
ZXRjaENhY2hlOjpzdG9yZShjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25QcmVmZXRj
aGVzKQogICAgICAgICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gbWFrZVVuaXF1ZTxQcmVmZXRjaEVu
dHJpZXNNYXA+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL1ByZWZldGNoQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
UHJlZmV0Y2hDYWNoZS5oCmluZGV4IGEyNTE1MjBiMzFlYWM5MjFjMjJkMzExNTFkNmQyMzFhMWJl
ZDEzOGMuLjUyYzBiMTBmY2M2ZDVhNmRlMTE0NDdlN2U0ZTgyMmRmOGY4NDFjYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCkBA
IC00NywxOCArNDcsMTggQEAgcHVibGljOgogCiAgICAgc3RydWN0IEVudHJ5IHsKICAgICAgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBFbnRyeShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAg
ICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICAgICAgRW50cnkoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAKLSAgICAgICAgUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVsZWFzZUJ1ZmZlcigpIHsgcmV0dXJuIGJ1ZmZlci5y
ZWxlYXNlTm9uTnVsbCgpOyB9CisgICAgICAgIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiByZWxlYXNlQnVmZmVyKCkgeyByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7
IH0KIAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgICAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZWRpcmVjdFJlcXVlc3Q7CiAgICAgfTsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxFbnRyeT4gdGFrZShjb25zdCBVUkwmKTsKLSAgICB2b2lkIHN0b3JlKGNvbnN0IFVS
TCYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJik7CisgICAgdm9pZCBzdG9yZShjb25zdCBVUkwmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAg
ICB2b2lkIHN0b3JlUmVkaXJlY3QoY29uc3QgVVJMJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLmgKaW5kZXggYjlhYjBkZWViYjlmOTI3YzczNzQyZTg2YTBiZTdmOTcxNjBiZDZmYi4uNDE2
NjhhNWIxY2Q3Mzg2OTY3YjhmZDk3M2U5NjczMmVjYTkwN2VkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
aApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWROZWdvdGlhdGVNb2Rlcm5U
TFMoY29uc3QgVVJMJik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jik7CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxl
dGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCB0cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25s
b2FkKERvd25sb2FkJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCBlNzgwZDZjMWMzY2QxZWIy
YzJmZjVhMGM1NjRhMGU0ZDg4YjdlYTVkLi4zMDUxZjE2OWNiMGEzNzA5OTg1YTE2MTEyMmMyNWYw
ZThmMTdiZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lk
IE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcgogICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJy
b3IoZXJyb3IsIG5ldHdvcmtMb2FkTWV0cmljcyk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNr
Q29jb2E6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSkK
K3ZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgV1RGRW1pdFNpZ25wb3N0KG1f
dGFzay5nZXQoKSwgIkRhdGFUYXNrIiwgInJlY2VpdmVkICV6ZCBieXRlcyIsIGRhdGEtPnNpemUo
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrRGF0YVRhc2tDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9O
ZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAppbmRleCA4ZmM3YjY2M2U2Zjc1NjJiMmIzNTQ4OTM5OGEy
ZmU3MzFiZTA3NGYxLi4zN2YyOTQxNjY0NmM0N2UxZGExZmQ5OTQxY2NhYzAwYjVkYzBmZDIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFU
YXNrQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdv
cmtEYXRhVGFza0N1cmwuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tDdXJsOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJs
UmVzcG8KICAgICBpbnZva2VEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0KIAotdm9pZCBOZXR3b3Jr
RGF0YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkUmVj
ZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKIHsKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAgICAgaWYgKHN0YXRl
KCkgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCBzdGF0ZSgpID09IFN0YXRlOjpDb21wbGV0ZWQgfHwg
KCFtX2NsaWVudCAmJiAhaXNEb3dubG9hZCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCmluZGV4IDFjNDI3ZGRi
NzhkNjk1M2ZlODk2MGM1NjkyYWZkZTRmNGYwZWVlODUuLjQ1YmU1Y2UxODQzMjUyNzFkNWMwODBk
ZDM0ZjFlZTRhMTY2NDJhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2
YXRlOgogICAgIFJlZjxXZWJDb3JlOjpDdXJsUmVxdWVzdD4gY3JlYXRlQ3VybFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlcXVlc3RTdGF0dXMgPSBSZXF1ZXN0U3RhdHVzOjpO
ZXdSZXF1ZXN0KTsKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShXZWJDb3JlOjpDdXJsUmVxdWVz
dCYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKICAg
ICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJD
b3JlOjpDdXJsUmVzcG9uc2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1
ZmZlcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
IG92ZXJyaWRlOworICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6Q3VybFJl
cXVlc3QmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdp
dGhFcnJvcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiwg
V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCmlu
ZGV4IGY1ZGI3MDZjNDQ1ODAyMTA4N2Y5NTk5NjY5ZGZhN2Q5ZjgzNzk3OGMuLjMzZDQzYjcyMjM4
ZDIwM2U3ZWRlYzk0MTRjYWY5ZmRhOGY0MDUyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCkBAIC01NSw3
ICs1NSw3IEBAIHN0cnVjdCBQYWNrZXRPcHRpb25zOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQz
YzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxLi5mNjc2Njg4NTdmZjVjMmU1MzJkNWI0YjUx
NGYyZTJjZjQ5Zjc2MmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcApAQCAtNTEsOSArNTEsOSBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1
ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
IElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAg
aWYgKGRhdGEuc2l6ZSgpKQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBidWZmZXIgPSBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4g
eyBXVEZNb3ZlKGJ1ZmZlcikgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDdlMGQ4ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2M2E2ZTNk
ZjE4MzJlOWYuLmJlNjhkOWUyNmEwNDgwN2E1NjBhNjcyOTg5Mjc1MjYzZmM3YzFiMzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTIzLDcg
KzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBF
bmNvZGVzIGEgU2hhcmVkQnVmZmVyIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBjb3B5IG9mIHRoZSBk
ZWNvZGVkIGRhdGEgaW4gYSBuZXcgU2hhcmVkQnVmZmVyLgorLy8gRW5jb2RlcyBhIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIgdGhhdCBpcyByZWNlaXZlZCBhcyBhIGNvcHkgb2YgdGhlIGRlY29kZWQg
ZGF0YSBpbiBhIG5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgogLy8gVG8gYXZvaWQgY29weWlu
ZyBmcm9tIHRoZSBEZWNvZGVyLCB1c2UgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB0byByZWNl
aXZlIGEgRGF0YVJlZmVyZW5jZSBpbnN0ZWFkLgogCiAjcHJhZ21hIG9uY2UKQEAgLTM5LDE1ICsz
OSwxMiBAQCBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5IHsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZm
ZXJDb3B5KCkgPSBkZWZhdWx0OwogCi0gICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1
ZmZlcikpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KLSAg
ICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQot
ICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAg
ewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlcik7Ci0gICAgfQorICAgIFNoYXJlZEJ1
ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+KCkpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNv
cHkoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAg
ICA6IG1fYnVmZmVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSkgeyB9CisgICAgU2hhcmVkQnVm
ZmVyQ29weShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCisg
ICAgICAgIDogbV9idWZmZXIoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpIHsgfQogCiAgICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9
CiAgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKaW5kZXggZDNkMGVjNWU5Nzg1NTk5YjYz
NGE4NGM2YzQ0NzFiNTJjZDIyMTNmMS4uNjdlYzhlNWU5MmJkMDI0MTE1ZGIwZDQwODBhMjRmZTcz
NTcwZDNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaApAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIEVuY29kZXMgYSBTaGFyZWRCdWZmZXIgb3Ig
RGF0YVJlZmVyZW5jZSB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgRGF0YVJlZmVyZW5jZSB0byB0aGUg
ZGVjb2RlZCBkYXRhLgorLy8gRW5jb2RlcyBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgb3IgRGF0
YVJlZmVyZW5jZSB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgRGF0YVJlZmVyZW5jZSB0byB0aGUgZGVj
b2RlZCBkYXRhLgogCiAjcHJhZ21hIG9uY2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRN
ZW1vcnkuY3BwCmluZGV4IGQyNDA2ZWUyOTA1MzExZjY5Yjc1ODQyMWU3N2EzZTY2Y2JhMjdiNjUu
LmMwMjZmNTQ5NTY5YjJiZTAwNzhhZTMyNWQwNTM5ZTA3MWFmMTEwNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWZQdHI8U2hhcmVkTWVtb3J5
PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitS
ZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUxLDcgKzUxLDcgQEAgUmVmUHRyPFNoYXJlZE1l
bW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6
ZV90IGRhdGFTaXplKSBjb25zdAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXplKCkpOwot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfV0gKCkgLT4gY29uc3QgdWludDhfdCogewogICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihwcm90ZWN0ZWRUaGlzLT5kYXRhKCkpOwog
ICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1v
cnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggZTM3MWJj
ZDczMDJjZjg1ZWJhYjJiNWE4NWU3YmU0OWRjZjU2NTJhYi4uMWI0ZmRmYWY2ODM4OWRjZTcyOGZm
MzRlNWU1ZjAxMmUyNDNmYTJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9T
aGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5o
CkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIEVuY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAK
ICNpZiBPUyhEQVJXSU4pCkBAIC0xMjAsNyArMTIxLDcgQEAgcHVibGljOgogCiAgICAgLy8gRklY
TUU6IENoYW5nZSB0aGVzZSBmYWN0b3J5IGZ1bmN0aW9ucyB0byByZXR1cm4gUmVmPFNoYXJlZE1l
bW9yeT4gYW5kIGNyYXNoIG9uIGZhaWx1cmUuCiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1v
cnk+IGFsbG9jYXRlKHNpemVfdCk7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGNv
cHlCdWZmZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0
cjxTaGFyZWRNZW1vcnk+IGNvcHlCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpOwogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtYXAoY29uc3QgSGFu
ZGxlJiwgUHJvdGVjdGlvbik7CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHdyYXBNYXAodm9pZCosIHNpemVfdCwgaW50IGZpbGVE
ZXNjcmlwdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hp
dmVSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJj
ZS5tbQppbmRleCBjYTBjMjRiMjc3MzU0NzY3NmUzNDgwMWM3OWExZDU2NWJmOTVmZTVkLi4xMTBl
MGFkZGU1NThhOWQ5MzM4YjI0NTA2ZTg5MTYzYzkzNjk3MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRp
YyB2b2lkIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhKHVuc2lnbmVkIGNoYXIqLCBjb25z
dCB2b2lkKiBkYXRhKQogCiBSZWY8QVBJOjpEYXRhPiBXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEo
KQogewotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNl
LT5kYXRhKCkuY3JlYXRlQ0ZEYXRhKCk7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRh
ID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRh
dGEoKTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IENGUmVsZWFzZSBpbiByZWxlYXNlV2ViQXJjaGl2
ZVJlc291cmNlRGF0YS4KICAgICBDRlJldGFpbihjZkRhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5t
bQppbmRleCA4N2Y0ZWIxZWJhMjg3MmUwY2IwYWI5NTkxNmFmZWRlMjlmY2JhMjQ0Li4zYzFiNTdk
NWFhMjZlYzcyZTYwYjVkNzhhMTFlOWZkODUyY2ZmZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAt
NTY0LDEzICs1NjQsMTIgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRh
PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY28KICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgqaW5jbHVkZXNDcmVhdGlvbkRhdGEpIHsKLSAgICAg
ICAgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRh
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAg
ICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgICAgIC8vIFVwb24gcmVjZWlwdCwgY29weSB0aGUgZGF0YSBmb3Igc2VjdXJpdHks
IHNvIHRoZSBzZW5kZXIgY2FuJ3Qgc2NyaWJibGUgb3ZlciBpdCB3aGlsZSB3ZSdyZSB1c2luZyBp
dC4KLSAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5kYXRhKCksIGZvbnRGYWNlRGF0YS52YWx1
ZSgpLT5zaXplKCkpOworICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gZm9udEZhY2VE
YXRhLnZhbHVlKCktPm1ha2VDb250aWd1b3VzKCk7CiAKICAgICAgICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGRlY29kZXIgPj4gaXRlbUluQ29sbGVj
dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCBj
Njk2MWM3MTQ0MDJiZjM3N2FlOTEwZmJiNmNjYWE1MmQzYjg0MTI4Li42ZmEwMmE3YmMzZWU1NGFl
NmQzMjUzODEwZDc4ZGVjMzE2NTM1M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVh
YmxlUmVzb3VyY2UuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6
OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAK
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZm
ZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERh
dGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7
IHJldHVybiBzZWxmLT5kYXRhKCk7IH0sCiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0o
KSB7IHJldHVybiBzZWxmLT5zaXplKCk7IH0KICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDY0OTgyYmM0ODEwMmE0YWRiMjBh
N2U2MGUyMWJkNDkyZDY1MzM3NGMuLjg0M2ZkNDczMTNhZWVjYTI5OTMwNjEyZmM1ZWM1Nzg3NTU0
MzQyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIERFRklORV9TSU1QTEVfQVJHVU1FTlRfQ09ERVJfRk9S
X1NPVVJDRShEaXNwbGF5TGlzdDo6U2V0SW5saW5lU3Ryb2tlQ29sb3IpCiAKICN1bmRlZiBERUZJ
TkVfU0lNUExFX0FSR1VNRU5UX0NPREVSX0ZPUl9TT1VSQ0UKIAotc3RhdGljIHZvaWQgZW5jb2Rl
U2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVy
KQorc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICBib29sIGlzTnVsbCA9ICFi
dWZmZXI7CiAgICAgZW5jb2RlciA8PCBpc051bGw7CkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGlj
IHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1
ZmZlciogYnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICNpZiBVU0UoVU5JWF9ET01BSU5fU09D
S0VUUykKLSAgICAvLyBEbyBub3QgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIFNoYXJlZEJ1ZmZlciBl
bmNvZGluZyBpbiBVbml4LCBiZWNhdXNlIGl0J3MgZWFzeSB0byByZWFjaCB0aGUKKyAgICAvLyBE
byBub3QgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgZW5jb2Rp
bmcgaW4gVW5peCwgYmVjYXVzZSBpdCdzIGVhc3kgdG8gcmVhY2ggdGhlCiAgICAgLy8gbWF4aW11
bSBudW1iZXIgb2YgZmlsZSBkZXNjcmlwdG9ycyBvcGVuIHBlciBwcm9jZXNzIHdoZW4gc2VuZGlu
ZyBsYXJnZSBkYXRhIGluIHNtYWxsIGNodW5rcwogICAgIC8vIG92ZXIgdGhlIElQQy4gQ29ubmVj
dGlvblVuaXguY3BwIGFscmVhZHkgdXNlcyBzaGFyZWQgbWVtb3J5IHRvIHNlbmQgYW55IElQQyBt
ZXNzYWdlIHRoYXQgaXMKICAgICAvLyB0b28gbGFyZ2UuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NTcxLgpAQCAtMjY0LDcgKzI2NCw3IEBAIHN0YXRpYyBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2Rl
ciwgVmVjdG9yPFN0cmluCiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAg
ICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsK
KyAgICAgICAgZGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTE1NTAsMTAgKzE1NTAsMTAgQEAgdm9pZCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpFbnRyeT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdAogICAgIGlmICho
YXNTdHJpbmcpCiAgICAgICAgIGVuY29kZXIgPDwgc3RkOjpnZXQ8U3RyaW5nPihwbGF0Zm9ybURh
dGEpOwogCi0gICAgYm9vbCBoYXNCdWZmZXIgPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxT
aGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpOworICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0
YSk7CiAgICAgZW5jb2RlciA8PCBoYXNCdWZmZXI7CiAgICAgaWYgKGhhc0J1ZmZlcikKLSAgICAg
ICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+
PihwbGF0Zm9ybURhdGEpLnB0cigpKTsKKyAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29k
ZXIsIHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKS5w
dHIoKSk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50
cnk+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5
JiBkYXRhKQpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0
YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUp
LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
IH19OworICAgIHJldHVybiB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlw
ZSksIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSkgfSB9OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTMw
MTAsNiArMzAxMCwzNCBAQCBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVW
YWx1ZT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkUAogfQogI2VuZGlmCiAKK3Zv
aWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29k
ZXIsIGJ1ZmZlci5nZXQoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBi
dWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZl
cjsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIo
ZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1
ZmZlcikgfHwgIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJl
dHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwogdm9pZCBBcmd1bWVudENvZGVyPFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgZW5jb2Rl
U2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7CkBAIC0zMTA3LDcgKzMxMzUsNyBA
QCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdl
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZQogewogICAgIGVuY29kZXIgPDwgbWVzc2FnZS5maXJz
dDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5zZWNv
bmQuY29weVJlZigpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdl
RGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlSZWYoKTsKICAgICBlbmNvZGVyIDw8IG1lc3NhZ2VE
YXRhOwogfQogCkBAIC0zMTE3LDcgKzMxNDUsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSQog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZl
cikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAyNWYwMWMwMjkyYTAx
OWYwNjc2MjRiYmI1NTM0MDJkZjFhMzNjNWI2Li42ZmFjMmFhMWVhNzg0NmZmNmJmODkwMjFmMGY1
MmU5YWE3YWUwM2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaApAQCAtMTE0LDYgKzExNCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDb2xvcjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uOwogY2xhc3MgQ3Vyc29yOwpAQCAtMTM4LDcgKzEzOSw3IEBAIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRC
dWZmZXI7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTcHJpbmdUaW1pbmdGdW5jdGlvbjsKIGNs
YXNzIFN0ZXBzVGltaW5nRnVuY3Rpb247CiBjbGFzcyBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29u
c3RyYWludHM7CkBAIC03NTEsNiArNzUyLDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiB7CiB9OwogI2Vu
ZGlmCiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhp
dFRlc3RSZXN1bHREYXRhLmNwcAppbmRleCBjZjJlNGQ1ZjkzZmQyZDk0NmJhYmZmOTNlZWEzZTll
ODYwYWViYmY0Li5iNjA3YWNlODM4ZTA0YmNlMWE2YWVlNGRhNTY1NTllMDk2OTgzOThlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCkBAIC04NSw3
ICs4NSw3IEBAIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0YShjb25z
dCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoaXRUZXN0CiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChJbWFnZSogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKTsKKyAgICAgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7CiAgICAgICAg
IGlmIChidWZmZXIpIHsKICAgICAgICAgICAgIGltYWdlU2hhcmVkTWVtb3J5ID0gV2ViS2l0OjpT
aGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CiAgICAgICAgICAgICBpbWFnZVNpemUg
PSBidWZmZXItPnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9B
cmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRD
b2RlcnNHdGsuY3BwCmluZGV4IDI1YTMwN2YzODI5ZTkyNzhiNWVhNzhmZjgyOTY3ODgzMzc3YTMx
YmEuLjY3MTc1OGEyODBhNWU0NDBhYTA2MGE3OWNmMWYwZjEyNmRiN2JlMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtOTUsNyArOTUs
NyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBTZWxlY3Rpb25EYXRhJgogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSA9IHNl
bGVjdGlvbi5oYXNDdXN0b21EYXRhKCk7CiAgICAgZW5jb2RlciA8PCBoYXNDdXN0b21EYXRhOwog
ICAgIGlmIChoYXNDdXN0b21EYXRhKQotICAgICAgICBlbmNvZGVyIDw8IFJlZlB0cjxTaGFyZWRC
dWZmZXI+KHNlbGVjdGlvbi5jdXN0b21EYXRhKCkpOworICAgICAgICBlbmNvZGVyIDw8IFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihzZWxlY3Rpb24uY3VzdG9tRGF0YSgpKTsKIAogICAg
IGJvb2wgY2FuU21hcnRSZXBsYWNlID0gc2VsZWN0aW9uLmNhblNtYXJ0UmVwbGFjZSgpOwogICAg
IGVuY29kZXIgPDwgY2FuU21hcnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IGIzNGVjNzM2MzYzYzRmMWQyYjBlNzYwYWQzZjRh
OWQ1YmFjMWEzNGUuLjE0OTBjNTExYmRjMzhiZDhhYjRhNjk1YWVjZjMwNmQ5NWZhYTM5NjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTk4
LDcgKzk4LDcgQEAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gQXR0YWNobWVudDo6ZmlsZVNpemVG
b3JEaXNwbGF5KCkgY29uc3QKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1SZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBj
b25zdAorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6
OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBhZmE5Mjlj
ZjA5M2QyMmVjNzZhZDg2ZmRhMDNiNTAxYmJmZDI5ZGMzLi5mZTUwZTUzOGI4ZWJiMzUxYTQ4MzZk
MWRkODkzZDE0N2E1NmE4NzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmgKQEAgLTM5LDYgKzM5LDcgQEAgT0JKQ19DTEFTUyBOU1N0cmluZzsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04Miw3ICs4Myw3IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCi0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3Q7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0
OwogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplRm9yRGlzcGxheSgpIGNvbnN0
OwogCiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xvc2luZ0ltYWdl
KSB7IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaApp
bmRleCA4ODIwNGYwMDEzNjc4NjA0NWE1YjMyYTczYzY3OGEwYmE4NTA2ODFjLi44ZGI3MDM4YzFj
OTAxNmRhZGZiZjRiNWVhMDk5OGM0ODc5MWY1NzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaApAQCAtMzAsNyArMzAs
NyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
fQogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJTmF2aWdhdGlvbkNsaWVudC5oCmluZGV4IDU2MjM0MDE0NTlkYTVmZTMwZjQ5MWE0MWZiMzQ3
YTY3NTcyMDJjNDAuLjExMWYwOTI2M2Y4MjIzODI5YTVhZDI2NDQzNGJhNDIwZjE5OGRkMWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQu
aApAQCAtNDcsNyArNDcsNyBAQCBzdHJ1Y3QgQ29udGVudFJ1bGVMaXN0UmVzdWx0czsKIGNsYXNz
IFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiB9CiAKQEAgLTExOSw3ICsxMTksNyBAQCBw
dWJsaWM6CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmls
ZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIHsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFJlZjxOYXZpZ2F0aW9uQWN0aW9u
PiYmLCBSZWY8V2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIs
IE9iamVjdCopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
QVBJQXR0YWNobWVudENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L0FQSUF0dGFjaG1lbnRDb2NvYS5tbQppbmRleCBjZjQ2MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMw
NzkxZThkNGUxNTNjLi5kZmVmM2UwNzBmOTYxNjMwNDk3MTQ0ZGFmM2YzMDBjYjRjYTUxOTVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVu
dENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRh
Y2htZW50Q29jb2EubW0KQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBBdHRhY2htZW50OjpmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdAogICAgIHJldHVybiBbZmls
ZVdyYXBwZXIgcmVndWxhckZpbGVDb250ZW50c10ubGVuZ3RoOwogfQogCi1SZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAor
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xv
c2luZ0ltYWdlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2hhc0VuY2xvc2luZ0ltYWdlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGM0ZWU1MjUwNzY0MmRiNGU1NGNmYWRmN2ZlZTNiZjFi
N2MwZDNkM2MuLjAxYzgxMDI3OGVmNjM1OTE3MmY4ZTY1YjUyY2ZjYjBiNTIxYjdkODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTU5
Niw3ICsxNTk2LDcgQEAgLSAodm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6
OkFwcEhpZ2hsaWdodCYpaGlnaGxpZ2h0CiAgICAgaWYgKGhpZ2hsaWdodC50ZXh0KQogICAgICAg
ICB0ZXh0ID0gaGlnaGxpZ2h0LnRleHQudmFsdWUoKTsKIAotICAgIGF1dG8gd2tIaWdobGlnaHQg
PSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdo
bGlnaHQuaGlnaGxpZ2h0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmls
XSk7CisgICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxs
b2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAogICAgIGlm
IChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzdG9yZUFw
cEhpZ2hsaWdodDppbk5ld0dyb3VwOnJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAgICAgICAg
IFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIHN0b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0Lmdl
dCgpIGluTmV3R3JvdXA6aGlnaGxpZ2h0LmlzTmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRlTmV3
R3JvdXBGb3JIaWdobGlnaHQ6OlllcyByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdodC5y
ZXF1ZXN0T3JpZ2luYXRlZEluQXBwID09IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5h
dGVkSW5BcHA6Olllc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5oCmluZGV4IGFjNGEwZjQzNzAxNTJlZDU3MmI1MDkxZGZhNTFiYWViYWI4N2Y0
ZTkuLmM4MDI5YzE0MGE2ZGQxNGIxOTY0OTIyNWI4NzgzMGVlYzEzNDAwZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCkBAIC0xMzMsNyAr
MTMzLDcgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgICAgICB2b2lkIGRp
ZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJp
bmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSBvdmVycmlkZTsKLSAgICAgICAg
dm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkaWRGaW5pc2hM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpp
bmRleCAzODU1ODgyYzg3ZGM5ZWQzMWMxZWYwYmFiNjE2YjFlNjQ1OTQ0ZWVmLi44ZDNhODU2NDYy
ZWFlZjc0MWQ4YzI5ZTI1OTJmZDU3MzY2ZjU5OWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0xMjIwLDcgKzEyMjAsNyBAQCB2
b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkU3RhcnRMb2FkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcgogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9u
RGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25h
dmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWVXaXRoRmlsZU5hbWU6ZmlsZU5hbWUgdXRpOnV0aV07CiB9CiAKLXZvaWQgTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTIz
Miw3ICsxMjMyLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRp
ZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkYKICAgICBpZiAoIW5hdmlnYXRp
b25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW3N0YXRpY19jYXN0PGlkIDxXS05h
dmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJW
aWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKKyAgICBb
c3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25E
ZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRG
aW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIubWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5k
ZXggODAyZmZhYTZkNmVkYmVhMmU5NzI3NzRlMjY5NjViMmRiYjJhNzM1ZS4uM2VhMjE1NjAzNzg5
ZTFiMGIyNGU1YjU1OTlkMzc1MTk3ZjU5NTJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTMwNiw3ICszMDYs
NyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZEF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9u
cygpCiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJlZ2lz
dHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVn
aXN0cmF0aW9ucy5nZXQoKSk7CiAgICAgICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6
V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyh7IHJlZ2lzdHJh
dGlvbkRhdGEgfSksIDApOwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCmluZGV4IDNmNmRkMWYyNDJlN2ExMTVlY2Y3OTgz
OTBmMzRiNjM1YzZlOGQ2ZjkuLmY1ODkxMjQxNzAyZGFhNDIwY2M0ZTZlMjQ2MjhhMWNkZTg5MDdk
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaApAQCAt
NTA2LDcgKzUwNiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0IFdlYkNv
cmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlKTsKICAg
ICB2b2lkIHNldEZpbGVBbmRVUkxUeXBlcyhOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpl
eHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2li
bGVVUkwsIE5TUGFzdGVib2FyZCAqKTsKLSAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdl
KFdlYkNvcmU6OkltYWdlKiwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9u
LCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJk
TmFtZSwgTlNTdHJpbmcgKnBhc3RlYm9hcmRPcmlnaW4pOworICAgIHZvaWQgc2V0UHJvbWlzZWRE
YXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5n
ICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZp
c2libGVVUkwsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIs
IE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKnBhc3RlYm9hcmRPcmlnaW4pOwog
ICAgIHZvaWQgcGFzdGVib2FyZENoYW5nZWRPd25lcihOU1Bhc3RlYm9hcmQgKik7CiAgICAgdm9p
ZCBwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICosIE5TU3RyaW5nICp0eXBl
KTsKICAgICBOU0FycmF5ICpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9u
KE5TVVJMICpkcm9wRGVzdGluYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbQppbmRleCAzZDllODc3YjBjYjc1NjU0YjYzOTE2Mzk1NTdmNTJiNjAz
OTJjYWM5Li42MjM2N2RjNWFkMWZlMTIyMWY3YjA5OWU5YmI0NDU0ZGIzN2E1OGVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtNDQ0OSw3ICs0
NDQ5LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0RmlsZUFuZFVSTFR5cGVzKE5TU3RyaW5nICpm
aWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlMKICAgICBtX3Byb21pc2VkVVJMID0gdXJs
OwogfQogCi12b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3Jl
OjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwg
TlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJsZVVSTCwgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyKiBhcmNoaXZlQnVmZmVyLCBOU1N0cmluZyAqcGFzdGVib2FyZE5h
bWUsIE5TU3RyaW5nICpvcmlnaW5JZGVudGlmaWVyKQordm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJv
bWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW5h
bWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwg
TlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGFy
Y2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKm9yaWdpbklk
ZW50aWZpZXIpCiB7CiAgICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW05TUGFzdGVib2Fy
ZCBwYXN0ZWJvYXJkV2l0aE5hbWU6cGFzdGVib2FyZE5hbWVdOwogICAgIFJldGFpblB0cjxOU011
dGFibGVBcnJheT4gdHlwZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRX
aXRoT2JqZWN0czpXZWJDb3JlOjpsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpLCBu
aWxdKTsKQEAgLTQ0NzAsNyArNDQ3MCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2Vk
RGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuCiAgICAg
c2V0RmlsZUFuZFVSTFR5cGVzKGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2li
bGVVUkwsIHBhc3RlYm9hcmQpOwogCiAgICAgaWYgKGFyY2hpdmVCdWZmZXIpIHsKLSAgICAgICAg
YXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0
byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIFtwYXN0ZWJv
YXJkIHNldERhdGE6bnNEYXRhLmdldCgpIGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VU
VHlwZVdlYkFyY2hpdmVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECkBAIC00
NTAxLDcgKzQ1MDEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9h
cmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU1N0cmluZyAqdAogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbDptX3Byb21pc2VkSW1hZ2UtPnV0aSgpXSAmJiBtX3By
b21pc2VkSW1hZ2UtPmRhdGEoKSkgewotICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBt
X3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRv
IHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6KF9fYnJp
ZGdlIE5TRGF0YSAqKXBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnR5cGVdOwogICAgIH0KIApA
QCAtNDU1NCw3ICs0NTU0LDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNl
ZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBkYXRhOwogCiAgICAgaWYgKG1fcHJvbWlzZWRJbWFnZSkgewotICAgICAgICBk
YXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBk
YXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2Nd
IGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhLmdldCgpXSk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bV9wcm9taXNlZFVSTF0gb3B0aW9uczpOU0ZpbGVXcmFw
cGVyUmVhZGluZ0ltbWVkaWF0ZSBlcnJvcjpuaWxdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAppbmRleCBjNDg1YzdmYzMxM2VhMDgzM2ZjNjA2MjY3MTY5ZDY5MmE4MjQwOTI4Li5i
NDYyZDhkYjVjYzYyMDM4NmU3NjgzZGIyNDgzNmFiM2NlNjRmZWZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0zMjgsNyArMzI4LDcgQEAgcHVibGljOgogI2VuZGlmCiAK
ICNpZiBVU0UoQVBQS0lUKQotICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFn
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4
dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZl
QnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBS
ZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBj
b25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVh
bCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvRGV2aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCBiMDQ1MzlkNjAwNWQ1NDNiYzYyZmI4OTA1OTk2NDY4OTMyYTMzZTkyLi42ZTQ5YWNiOGE3YTZi
N2UzYjg2NGE4MWJhNGJkN2NkNmY4M2VjZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMjU5LDcgKzI1OSw3IEBAIGNsYXNzIEludFNpemU7CiBjbGFzcyBQcm90
ZWN0aW9uU3BhY2U7CiBjbGFzcyBSdW5Mb29wT2JzZXJ2ZXI7CiBjbGFzcyBTZWxlY3Rpb25EYXRh
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDsKIGNsYXNzIFRleHRJbmRpY2F0b3I7CiBjbGFz
cyBWYWxpZGF0aW9uQnViYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmNwcAppbmRleCBkZjU5ZDU2ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQx
Li4xOTk3ZWFlMjBhYzIyY2EzYWU4MDA0YzcwNGZhMjJkYTYwOWUwMDlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtNTEsNiArNTEsNyBAQCBX
ZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImIGhh
bmRsZXIsIFdlYlBhZ2VQcm94eSYgcAogICAgICwgbV9yZXF1ZXN0KFdURk1vdmUocGFyYW1ldGVy
cy5yZXF1ZXN0KSkKICAgICAsIG1fZnJhbWVJbmZvKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RG
TW92ZShwYXJhbWV0ZXJzLmZyYW1lSW5mbyksICZwYWdlKSkKICAgICAsIG1fc3luY0NvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUoc3luY0NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAsIG1fc3luY0Rh
dGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiB9CkBAIC0xNjgsNyArMTY5LDcgQEAgYXV0byBXZWJVUkxTY2hl
bWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpIC0+IEUKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0KIAotYXV0byBXZWJV
UkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikg
LT4gRXhjZXB0aW9uVHlwZQorYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xODcsMTAgKzE4OCw3IEBAIGF1
dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpIC0+IEV4Y2VwdGlvblR5CiAgICAgbV9kYXRhU2VudCA9IHRydWU7CiAKICAgICBpZiAo
aXNTeW5jKCkpIHsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBtX3N5bmNE
YXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
bV9zeW5jRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwog
ICAgIH0KIApAQCAtMjE3LDEyICsyMTUsOSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENv
bXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAg
bV9jb21wbGV0ZWQgPSB0cnVlOwogICAgIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAg
ICBkYXRhID0geyBtX3N5bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwotCisg
ICAgICAgIHNpemVfdCBzaXplID0gbV9zeW5jRGF0YS0+c2l6ZSgpOworICAgICAgICBWZWN0b3I8
dWludDhfdD4gZGF0YSA9IHsgbV9zeW5jRGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIHNpemUgfTsKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9zeW5jUmVz
cG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKLSAgICAgICAgbV9zeW5jRGF0YSA9IG51bGxw
dHI7CiAgICAgfQogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxT
Y2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1f
cmVzb3VyY2VMb2FkZXJJRCwgZXJyb3IpLCBtX3dlYlBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggNmE4NTYwMjFiMTI5OTI0NmM3MDAwOTNk
ZDBhNDdmMmMxMzA4NTI2Ny4uNzk5NDJmOWIyMGEyNjYwY2E0YTdkY2Q0NTAxOGQxNmU0M2I2NjZm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEZyYW1lSW5mbzsKQEAgLTQzLDcgKzQ0LDggQEAg
Y2xhc3MgRnJhbWVJbmZvOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC04NCw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRp
b25UeXBlIHdpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFBlcmZvcm1SZWRpcmVj
dGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2Vp
dmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBFeGNl
cHRpb25UeXBlIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAog
ICAgIHZvaWQgc3RvcCgpOwpAQCAtMTE1LDcgKzExNyw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5j
TG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyQnVpbGRlcj4gbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKaW5kZXggNzg2NmNkYjE3NzQ2MDA3YWIwYTdhMTdjNTVi
ODdjN2YxNjRjMmJhZS4uNzI3OWY4NDRjYzJiYmQyYjAxN2ZlMGYwOTdkZTAxODcwYTlhODUyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaApAQCAtMzYsNyArMzYsNyBA
QCB0eXBlZGVmIHN0cnVjdCBfR3RrQ2xpcGJvYXJkIEd0a0NsaXBib2FyZDsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb3JtYXRzKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwogICAgIHZvaWQgcmVhZFRleHQoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwogICAgIHZvaWQgcmVhZEZpbGVQYXRocyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2b2lkIHJlYWRC
dWZmZXIoY29uc3QgY2hhciosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJik+JiYpOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBjaGFyKiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jik+JiYpOwogICAgIHZvaWQgd3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKTsKICAgICB2
b2lkIGNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9D
bGlwYm9hcmRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRH
dGszLmNwcAppbmRleCBjMmJmNTE4M2IzMGYxMGU5ZWI3ODEzY2RhZGEyMjNlOTE4OWM3NDU5Li41
OTY2ZDU1NzRjMjgyZjUzMTY5NDA5NjA4Mjk2MGFlMzM5Y2ExMTBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCkBAIC0xMjYsMTUgKzEyNiwxNSBA
QCB2b2lkIENsaXBib2FyZDo6cmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZQogc3RydWN0IFJlYWRCdWZmZXJBc3luY0RhdGEgewog
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGV4cGxpY2l0IFJlYWRC
dWZmZXJBc3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKT4mJiBoYW5kbGVyKQorICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJBc3luY0RhdGEo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJik+JiYgaGFuZGxlcikKICAgICAgICAgOiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhh
bmRsZXIpKQogICAgIHsKICAgICB9CiAKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKKyAgICBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4g
Y29tcGxldGlvbkhhbmRsZXI7CiB9OwogCi12b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25z
dCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENsaXBib2FyZDo6cmVhZEJ1
ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGd0a19jbGlwYm9hcmRfcmVxdWVzdF9jb250ZW50cyhtX2NsaXBib2FyZCwgZ2RrX2F0b21f
aW50ZXJuKGZvcm1hdCwgVFJVRSksIFtdKEd0a0NsaXBib2FyZCosIEd0a1NlbGVjdGlvbkRhdGEq
IHNlbGVjdGlvbiwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFJlYWRCdWZmZXJBc3luY0RhdGE+IGRhdGEoc3RhdGljX2Nhc3Q8UmVhZEJ1ZmZlckFzeW5jRGF0
YSo+KHVzZXJEYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
Q2xpcGJvYXJkR3RrNC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJk
R3RrNC5jcHAKaW5kZXggMDdhYmI3MTMxOTg4NTNiNzg3YzYzMjRiZDQ4MGIxZTA4OGEyYTNkMy4u
NWI4MWZhOGYyOWQzZjdjZjFjM2YwOWQxZmMzYzg4NzM0ZGM1MWEwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcApAQCAtMTIwLDE1ICsxMjAsMTUg
QEAgdm9pZCBDbGlwYm9hcmQ6OnJlYWRGaWxlUGF0aHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGUKIHN0cnVjdCBSZWFkQnVmZmVyQXN5bmNEYXRhIHsK
ICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAKLSAgICBleHBsaWNpdCBSZWFk
QnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKKyAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpPiYmIGhhbmRsZXIpCiAgICAgICAgIDogY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSho
YW5kbGVyKSkKICAgICB7CiAgICAgfQogCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+
IGNvbXBsZXRpb25IYW5kbGVyOwogfTsKIAotdm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29u
c3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDbGlwYm9hcmQ6OnJlYWRC
dWZmZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBjb25zdCBjaGFyKiBtaW1lVHlwZXNbXSA9IHsgZm9ybWF0LCBudWxscHRyIH07CiAgICAg
Z2RrX2NsaXBib2FyZF9yZWFkX2FzeW5jKG1fY2xpcGJvYXJkLCBtaW1lVHlwZXMsIEdfUFJJT1JJ
VFlfREVGQVVMVCwgbnVsbHB0ciwgW10oR09iamVjdCogY2xpcGJvYXJkLCBHQXN5bmNSZXN1bHQq
IHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggZDIyMzhmZGM5ZDE2Zjc3ZjhjM2QzMDJj
YTk5NzZmZTgzZjFiM2YzNy4uYWI4N2MyYTdlOGMzNTdhNjViM2NmZTYwNzkzOGZkZmVjOGE2NTJi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
TWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
LmgKQEAgLTEwMCw4ICsxMDAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZXhlY3V0ZVVuZG9SZWRv
KFVuZG9PclJlZG8pIG92ZXJyaWRlOwogICAgIGJvb2wgZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2Vs
ZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3Rvcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdGFydERy
YWcoY29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0mLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYgaW1hZ2UpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBp
bWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNp
b24sIGNvbnN0IFN0cmluZyYgdGl0bGUsCi0gICAgICAgIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYXJj
aGl2ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3Ry
aW5nJiB0aXRsZSwKKyAgICAgICAgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlz
aWJsZVVSTCwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYXJjaGl2
ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2
b2lkIHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0U2Vj
dXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5SW5wdXRDb250ZXh0QWJv
dXREaXNjYXJkZWRDb21wb3NpdGlvbigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IGE0MTEyMTM1ZjJlZjE5MDE1
YTUyZjFlMWIwM2FlMzBhMWYyMjNkMmEuLmMzNjNlOTU1ZTg3OWMwZTE4NmI0MTUwOTA5MTMzNjVj
MjBmZTkwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW0KQEAgLTQwMCw3ICs0MDAsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzdGFy
dERyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0mIGl0ZW0sIGNvbnN0IFNoYXJlYWJsZUJpdAog
ICAgIG1faW1wbC0+c3RhcnREcmFnKGl0ZW0sIGltYWdlKTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50
SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgYXJjaGl2ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQordm9pZCBQ
YWdlQ2xpZW50SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJp
bmcmIG9yaWdpbklkZW50aWZpZXIpCiB7CiAgICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpj
cmVhdGUoKTsKICAgICBpbWFnZS0+c2V0RGF0YShXVEZNb3ZlKGltYWdlQnVmZmVyKSwgdHJ1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFj
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRl
eCBlMDNlMDgwYWVlMDgzODBiNDZmZmU4OWRkOGU2MWI2NmI1OThkYjQ2Li4wMWQ4NDBhMmE2M2Vh
Yzc5MWZiZDg0ZmJlNjM3YjViMjhjZjYxMzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUwogICAgICAgICByZXR1cm47CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHNo
YXJlZE1lbW9yeUltYWdlLT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1hZ2VIYW5kbGUuZGF0YVNpemUp
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKICAgICBpZiAoIWFyY2hpdmVI
YW5kbGUuaGFuZGxlLmlzTnVsbCgpKSB7CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QXJjaGl2
ZSA9IFNoYXJlZE1lbW9yeTo6bWFwKGFyY2hpdmVIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnlBcmNoaXZl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3Bw
CmluZGV4IGZhOTQwMjVlZDc0NzMwZDI4ZTcxNjQ2Mjg1ZjllNWJhNjUzYjhmMTIuLmMyOGZlNjVm
MGNmMTY0Mzk5ODE4YWNhMzJmOTgxY2M3NzhmMWU5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgYm9v
bCBSZW1vdGVDRE06OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBD
RE1TZXNzaW9uVHlwZSYsIGNvbnMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVtb3Rl
Q0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkgY29uc3QKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEp
IGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjaGVjayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBpbnNpZGUg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlcXVlc3RMaWNlbnNlKCkuCiAgICAgcmV0
dXJuIHRydWU7CkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBSZW1vdGVDRE06OmxvYWRBbmRJbml0
aWFsaXplKCkKICAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpMb2FkQW5kSW5pdGlhbGl6ZSgpLCBt
X2lkZW50aWZpZXIpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBSZW1vdGVDRE06OnNhbml0
aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBj
aGVjayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBpbnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHk6OnVwZGF0ZUxpY2Vuc2UoKS4KICAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKaW5kZXggMGFk
ZGY4MzM1M2I2ZWExYjJlOGIwMmM2YjdlZTNkYWY0NjhjZDM4My4uOGM0NTRlYjgzZTU5OTRhOGU0
ZDU5MmQ1MWRmOTFmZjliNTIzY2JlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETS5oCkBAIC00OCwxMyArNDgsMTMgQEAgcHJpdmF0ZToKICAgICBi
b29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25X
aXRoUmVzdHJpY3Rpb25zKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBib29s
IHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1T
ZXNzaW9uVHlwZSYsIGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBj
b25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYs
IGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50
IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29u
c3QgZmluYWw7CiAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVx
dWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZGlzdGlu
Y3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBXZWJD
b3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CiAgICAgUmVmUHRy
PFdlYkNvcmU6OkNETUluc3RhbmNlPiBjcmVhdGVJbnN0YW5jZSgpIGZpbmFsOwogICAgIHZvaWQg
bG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGNvbnN0
IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25z
dCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29u
c3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKICAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9y
dGVkSW5pdERhdGFUeXBlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5z
dXBwb3J0ZWRJbml0RGF0YVR5cGVzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCmluZGV4IGI1ZGVhMjFlOTk1
YTczN2YwMzZmNjQ1MzhjMWZiM2VjYjVlNmJiNTUuLmExM2U1MTQ2MGY2YmI5ZjgwZWYzZDFhODQy
ZWZjMGI5ZjQ0NTkwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJD
b3JlOjpDRE1LZXlTeXN0ZW1DCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3Rh
bmNlUHJveHk6OkluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBkaXN0
aW5jdGl2ZUlkZW50aWZpZXJzLCBwZXJzaXN0ZW50U3RhdGUpLCBXVEZNb3ZlKGNhbGxiYWNrKSwg
bV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vz
c0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZp
Y2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2ZhY3Rvcnkp
IHsKICAgICAgICAgY2FsbGJhY2soRmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaAppbmRleCAxMDZiYTNiMTE2
MWM4ZGYwOWQ3MWRmZTY3OWJhMzNkNDIzMDc5ZTk2Li4yYzc4NTFlNDQwYjA4YTUyYTJhZTcwZGE3
ZTQxODg4MmUzYzYxNDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6
CiAKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpSZW1vdGU7IH0KICAgICB2b2lkIGluaXRp
YWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0
ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNh
dGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFs
OworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0
b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24ua2V5U3lzdGVt
OyB9CiAgICAgUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lv
bigpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCmluZGV4IGFmMGJhZDRjOTBk
OGRkNTEzNzc0YWVmNmExNWI3N2JhODlmYzUwNjQuLmM3NDBjMDQ1MDZmZGVkYWM5ZjRjZjUwMmMy
MDVhOGEzN2ZjYTQ1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKQEAgLTQ5LDcg
KzQ5LDcgQEAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b24oV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGYKIHsKIH0KIAotdm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGlj
ZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNh
bGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsKICAgICAgICAgY2Fs
bGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxl
ZCk7CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1
ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nCiAgICAgfSwgbV9p
ZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQor
dm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBp
ZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2
b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIExpY2VucwogICAgIH0KIAogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklk
LCB0eXBlKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChLZXlTdGF0dXNWZWN0b3Im
JiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+JiYgbWVz
c2FnZSwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJl
ZjxTaGFyZWRCdWZmZXI+PiByZWFsTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gc3Rk
OjpudWxsb3B0OwogICAgICAgICBpZiAobWVzc2FnZSAmJiBtZXNzYWdlLnZhbHVlKCkuYnVmZmVy
KCkpCiAgICAgICAgICAgICByZWFsTWVzc2FnZSA9IG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKS5y
ZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwg
V1RGTW92ZShyZWFsTWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24uaAppbmRleCA0ZmZlNGNhY2VjY2RlNDNkNWNiMTFlMjM2Y2Ew
NDVhY2RhODNhN2ViLi40ZTRjZDJjMDA1YzZiMDA2NWY5Y2RiMTg4YzRiY2UwYjViZmE2NjAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTU5LDggKzU5LDggQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xp
ZW50PiYmIGNsaWVudCkgZmluYWwgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsgfQogICAg
IHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0cjsgfQotICAgIHZv
aWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxi
YWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2Us
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikg
ZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBM
aWNlbnNlVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9u
c2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9u
KExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiBvcmln
aW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24o
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vu
c2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkYuY3BwCmluZGV4IDlhMjE5YTU0NGU1NTM4M2Y1NGU3MWRhYmQzNTRjYzQ0MGE0MTQyYjku
LjYyOTI2Nzk4YzVjMTEzMjRhMzFhYTUwY2RhN2VkMWZiZjc0ZmU3MDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRi5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFW
Rjo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZQog
CiAvLyBJZiBhbGxEYXRhUmVjZWl2ZWQgaXMgdHJ1ZSwgdGhlIGNhbGxlciBleHBlY3RzIGVuY29k
ZWREYXRhU3RhdHVzKCkgdG8gYmUgPj0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGUK
IC8vIGFmdGVyIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAoaW4gdGhlIHNhbWUgcnVuIGxvb3ApLgot
dm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXREYXRh
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewog
ICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkYuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGLmgKaW5kZXggZTVjZmU5NGVjZDNhOWMwNjAwZmMwMDMyMGZmNDMwNjFjOTBlZDY5
Yi4uNDBkMzczNGY3YTMyMmU4YmFjYjlkMWMwZGVhNzA3OWUyYWQxN2VhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRi5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFJlbW90ZUltYWdlRGVjb2RlckFWRiBm
aW5hbAogICAgIDogcHVibGljIFdlYkNvcmU6OkltYWdlRGVjb2RlcgogICAgICwgcHVibGljIENh
bk1ha2VXZWFrUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGUoUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
TWFuYWdlciYgbWFuYWdlciwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciYg
aWRlbnRpZmllciwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlKFJlbW90ZUlt
YWdlRGVjb2RlckFWRk1hbmFnZXImIG1hbmFnZXIsIGNvbnN0IFdlYkNvcmU6OkltYWdlRGVjb2Rl
cklkZW50aWZpZXImIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGKG1hbmFnZXIsIGlkZW50aWZpZXIsIG1pbWVUeXBl
KSk7CiAgICAgfQpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6UGxhdGZv
cm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFdlYkNvcmU6OlN1YnNh
bXBsaW5nTGV2ZWwgPSBXZWJDb3JlOjpTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBX
ZWJDb3JlOjpEZWNvZGluZ09wdGlvbnMmID0gV2ViQ29yZTo6RGVjb2RpbmdPcHRpb25zKFdlYkNv
cmU6OkRlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhw
ZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwotICAgIHZvaWQgc2V0RGF0YShXZWJD
b3JlOjpTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9p
ZCBzZXREYXRhKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZm
ZXJDYWNoZShzaXplX3QpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2Vy
LmNwcAppbmRleCA0MWQ1Mzg4MDIzZDM5MTQ5NTIxODM1ZjY4OGRlNGQ0OGY2NWQ3NjdlLi4wODJi
MzM2NmM4YmM3MTMwZDc1ZDU2OThhN2Q3OWU2ODkyYWQ4ZjczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGTWFuYWdlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVy
QVZGPiBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIoU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCitSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBSZW1vdGVJbWFnZURlY29kZXJB
VkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAg
IHN0ZDo6b3B0aW9uYWw8SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4gaW1hZ2VEZWNvZGVySWRlbnRp
ZmllcjsKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSB7
IGRhdGEgfTsKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRk1h
bmFnZXI6OnNldFVzZUdQVVByb2Nlc3MoYm9vbCB1c2VHUFVQcm9jZXNzKQogICAgIEltYWdlRGVj
b2Rlcjo6aW5zdGFsbEZhY3RvcnkoewogICAgICAgICBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnN1
cHBvcnRzTWVkaWFUeXBlLAogICAgICAgICBSZW1vdGVJbWFnZURlY29kZXJBVkY6OmNhbkRlY29k
ZVR5cGUsCi0gICAgICAgIFt0aGlzXShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikgeworICAgICAgICBbdGhpc10oRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRp
b24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKSB7CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW1hZ2VEZWNvZGVyKGRh
dGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwog
ICAgICAgICB9CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oCmluZGV4
IGMyMzc4MmI2NTA0ZWM3OWJlNDZlMTI2ZjRlNTkxYjNmZjdmNmRiYTguLjM2MThhZmQxMjA5OGI1
NTc2YjRkZDRmZmJmM2MwNmZiYTg0MmE3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFu
YWdlci5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBHUFVQcm9jZXNzQ29ubmVjdGlv
biYgZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGVJbWFnZURlY29kZXIoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpBbHBoYU9wdGlv
biwgV2ViQ29yZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIFJlZlB0cjxSZW1v
dGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZUltYWdlRGVjb2RlcihXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpBbHBo
YU9wdGlvbiwgV2ViQ29yZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgLy8g
R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudC4KICAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0
aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb24uY3BwCmluZGV4IGE1M2YxNTdiZWViZDdkYjJlODFiMmY1ZWNiZDYzODE4NjJhNjgwOGEu
LmYxZDFjMTBhNmU1YzNhYjJiODEzMjNjMDRkYWMwNTcyODZlOWZkNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uLmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5IGNvbnZlcnRUb1NoYXJlZEJ1ZmZlckNvcHkoVCBhcnJheSkKIHsKICAgICBpZiAoIWFycmF5
KQogICAgICAgICByZXR1cm4geyB9OwotICAgIHJldHVybiB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpIH07CisgICAgcmV0dXJuIHsgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVu
Z3RoKCkpIH07CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uPiBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5PiBmYWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYmIGlkZW50aWZp
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA5NjZmYzkzYjc3YWZhYTNl
NjIwOGQ3YWJhNWFlZDJjN2E5NGM3NGIyLi4wMDVhMzdjYzI2ZWM0YzA5MDFiZjRmMzcxMjIzODY1
ZGUyZDE2NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTc4LDcgKzc4
LDcgQEAgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6flNvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGUoKQogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIudG9V
SW50NjQoKSk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6YXBwZW5kKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6
YXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKCFt
X2dwdVByb2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZS5oCmluZGV4IDM2MDE3NWJmYmU5ZDFhZjgzZWQ1NzkxMzczYjc3NWVlNzUwYWM3Y2Mu
LmVhNWZhM2VjMzZjMmI4NTllZTU3OGNjZDBlMDM0OGM3M2NiODZkNjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBTb3Vy
Y2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcwogICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wpIGZpbmFs
OwotICAgIHZvaWQgYXBwZW5kKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwor
ICAgIHZvaWQgYXBwZW5kKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNldFBhcnNlclN0YXRl
KCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVy
UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJl
Y29yZGVyUHJpdmF0ZS5jcHAKaW5kZXggMTFiNGE4NmU0ODUyZjZjMjA2MWZhM2ZjOWFmMjlmODg5
OWY0ZWI5Zi4uYjQwODlmZDM1NDhjOTdmMTdmYzJiOWZiMDAyNzgwZDY0M2NmMjNiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclBy
aXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlh
UmVjb3JkZXJQcml2YXRlLmNwcApAQCAtMTY1LDEwICsxNjUsMTAgQEAgdm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZTo6c3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KiBzdG9yYWdlLCBjb25zdCBX
ZWJDb3JlOjoKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVj
b3JkZXI6OkF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkIHsgU2hhcmVkTWVtb3J5OjpJUENIYW5k
bGUgeyBXVEZNb3ZlKGhhbmRsZSksIGRhdGFTaXplIH0sIGZvcm1hdCwgZnJhbWVDb3VudCB9LCBt
X2lkZW50aWZpZXIpOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpmZXRjaERhdGEo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9jb25uZWN0
aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OkZl
dGNoRGF0YSB7IH0sIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBtaW1lVHlwZSA9IG1pbWVUeXBlKCldKGF1dG8mJiBkYXRhLCBkb3VibGUgdGltZUNvZGUp
IG11dGFibGUgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmIChkYXRh
LnNpemUoKSkKICAgICAgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
ZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
YnVmZmVyKSwgbWltZVR5cGUsIHRpbWVDb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCmluZGV4IDMw
M2E1NGY3NmYxODVlOTY0NTRlZjlmNWJiNDYxZjI4ZTEyNjc4NmQuLjU3NmZkMWM2ZTk3YzBjYWQ4
Y2JmZWM5NGUzYmQzNjMzMDc2ZTQ0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaApAQCAtNTcsNyAr
NTcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQ
cml2YXRlCiAgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpNZWRpYVNhbXBs
ZSYsIFdlYkNvcmU6OlZpZGVvU2FtcGxlTWV0YWRhdGEpIGZpbmFsOwotICAgIHZvaWQgZmV0Y2hE
YXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJikgZmluYWw7CisgICAgdm9pZCBm
ZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJikgZmlu
YWw7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikg
ZmluYWw7CiAgICAgdm9pZCBzdGFydFJlY29yZGluZyhTdGFydFJlY29yZGluZ0NhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IFdURjo6TWVkaWFU
aW1lJiwgY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBXZWJDb3JlOjpB
dWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCAwNjczZjc0ZGRmYjQ4ZTVi
ZGY0MzhjZDkwYmUzNzk0ZWVlMjA5MWJiLi4wMzUzYWFiZjdkNGI5MjVhYTJmMTU2MmQ1NzNhYWYz
MDkzYzgzYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRv
ckNsaWVudC5oCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERv
Y3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3Mg
U3R5bGVQcm9wZXJ0aWVzOwogc3RydWN0IFNpbXBsZVJhbmdlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggYTA2MzUy
MDQzMzViM2FiMGU2ZGZiMGM2Nzc3NjdmNDI4ZThhNzdlMi4uMTgwYjExMTFlY2YwMTEzMjgwOTI2
NmExYmNlMjdkMjYwZTRmYTAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIERPTVdp
bmRvd0V4dGVuc2lvbjsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIFJlc291cmNlRXJy
b3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU2LDcg
KzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflBhZ2VMb2FkZXJDbGllbnQoKSA9IGRlZmF1
bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdlYktpdDo6V2ViUGFn
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIEFQSTo6T2JqZWN0KikgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29u
c3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6VVJMJiwgQVBJ
OjpPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJL
aXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0
cmluZyYsIGNvbnN0IFdURjo6VVJMJiwgQVBJOjpPYmplY3QqKSB7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZSYsIFdl
YktpdDo6V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdl
YktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IDhkNTI0YjUyNWM2ZTdhMGNjNmJkZTVlODBhNDdjMTcxZTM0MTQ2OGMuLjNmNDFiMWYzMzhm
YTQ0NDc0OTA3NDgxODliYjg5OTUxY2YxYjE3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC02NSwxNSArNjUsMTYgQEAgc3RhdGljIHZv
aWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkK
ICAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSkt
PmRlcmVmKCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxs
TG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYg
dW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xp
ZW50LndpbGxMb2FkRGF0YVJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxB
UEk6OkRhdGE+IGRhdGE7CiAgICAgaWYgKHNoYXJlZEJ1ZmZlcikgewotICAgICAgICBzaGFyZWRC
dWZmZXItPnJlZigpOwotICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29w
eWluZygoY29uc3QgdW5zaWduZWQgY2hhciopc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1
ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBzaGFyZWRCdWZmZXIpOworICAgICAg
ICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCk7
CisgICAgICAgIGNvbnRpZ3VvdXNCdWZmZXItPnJlZigpOworICAgICAgICBkYXRhID0gQVBJOjpE
YXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hhciopY29udGlndW91
c0J1ZmZlci0+ZGF0YSgpLCBjb250aWd1b3VzQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRC
dWZmZXIsIGNvbnRpZ3VvdXNCdWZmZXIucHRyKCkpOwogICAgIH0KIAogICAgIG1fY2xpZW50Lndp
bGxMb2FkRGF0YVJlcXVlc3QodG9BUEkoJnBhZ2UpLCB0b0FQSShyZXF1ZXN0KSwgdG9BUEkoZGF0
YS5nZXQoKSksIHRvQVBJKE1JTUVUeXBlLmltcGwoKSksIHRvQVBJKGVuY29kaW5nTmFtZS5pbXBs
KCkpLCB0b1VSTFJlZih1bnJlYWNoYWJsZVVSTC5zdHJpbmcoKS5pbXBsKCkpLCB0b0FQSSh1c2Vy
RGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggMzZiZDk4MGIyZmFhMWFmNDVhYzMxMDZlYjAx
ZTlmMzc2YmExM2FjZi4uODYzYmRhYjYyODRjYTNhYWQyZjlkNWZmZjVmZDY4ZWFiOGIyYjczMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50KGNvbnN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJhc2UqKTsKIAogICAgIHZvaWQg
d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwotICAgIHZvaWQgd2lsbExvYWREYXRhUmVxdWVz
dChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0
IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsTG9hZERhdGFSZXF1
ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0
cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRy
PEFQSTo6T2JqZWN0PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRy
PEFQSTo6T2JqZWN0PiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQ
bGF5ZXJNYWMubW0KaW5kZXggZTUyNGQ4ZTFiMDE3YWE4ZTVlMDNiODkyZDkyYjc1ODk0YzU4ZjM3
NC4uYTc4NGVjMzg4YjIyNTI0Y2MwZGE2MzI3OGU1ZTc1OTEzN2RjZjY2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2Rl
bFBsYXllck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FS
S2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9p
ZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRlRmlsZShXZWJDb3JlOjpN
b2RlbCYgbW9kZWxTb3VyY2UpCiAgICAgaWYgKGZpbGUgPD0gMCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5k
YXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmls
ZShmaWxlKTsKICAgICBtX2ZpbGVQYXRoID0gZmlsZVBhdGg7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmNwcAppbmRleCA0N2I5MWNlODdkMzYxM2UzNWQ1Nzk0MDc5N2FkZjBiMWRkMDBhNDhiLi45
Y2Q2NWFjYTM4ZGM1MThhZjIyN2ZhZTQwOWVkYWNiMDE5NDA0NmYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5jcHAKQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCiAg
ICAgCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNo
YXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKSB7Ci0gICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUg
Zm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMi
LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMjU5NDQ5NDIzODU1ZmVkM2FhYWFiNDE0ODE5Zjg5
NTFhM2I4YjdmZi4uMzEwZmNhNzg3NWMzMmMzY2Q3NDc4ZGI2NGY1OWFjMmNmNTAxNjM5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vCiAg
ICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVz
cG9uc2UobV9jb3JlTG9hZGVyLT5mcmFtZSgpLCByZXNwb25zZSkpIHsKICAgICAgICAgYXV0byBp
bnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyID0gbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCk7
CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5iZWdpbkludGVyY2VwdGluZ1Jlc3BvbnNl
KGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJhbWUoKSwg
cmVzcG9uc2UsIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgcG9saWN5
RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0
aW9uSGFuZGxlcildKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGluc3BlY3RvclJlc3BvbnNlLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGEpIG11dGFibGUgeworICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKG1fY29yZUxvYWRl
ci0+ZnJhbWUoKSwgcmVzcG9uc2UsIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRp
ZmllciwgcG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUocG9saWN5RGVj
aXNpb25Db21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGluc3BlY3Rv
clJlc3BvbnNlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXIt
PmlkZW50aWZpZXIoKSkgewogICAgICAgICAgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVB
U0VfTE9HKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBjb250aW51aW5nIGludGVyY2VwdCBsb2Fk
IGJlY2F1c2Ugbm8gY29yZUxvYWRlciBvciBubyBJRCIpOwogICAgICAgICAgICAgICAgIG1faW50
ZXJjZXB0Q29udHJvbGxlci5jb250aW51ZVJlc3BvbnNlKGludGVyY2VwdGVkUmVxdWVzdElkZW50
aWZpZXIpOwpAQCAtMjk1LDExICsyOTUsMTEgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmQKICAg
ICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc291cmNlIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEo
KS5kYXRhKCkpOwogICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZl
UmVzb3VyY2U6Iik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUu
dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIGlmICgh
YnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIgZnJv
bSBTaGFyZWFibGVSZXNvdXJjZSBzZW50IGZyb20gdGhlIG5ldHdvcmsgcHJvY2Vzcy4iKTsKLSAg
ICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZTog
VW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIiKTsKKyAgICAgICAgV0VCUkVTT1VSQ0VMT0FE
RVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZTogVW5hYmxlIHRvIGNyZWF0ZSBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyIik7CiAgICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IG1fY29yZUxv
YWRlci0+ZnJhbWUoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFn
ZSgpKQogICAgICAgICAgICAgICAgIHBhZ2UtPmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9n
RGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnRlcm5h
bEVycm9yS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6Y3JlYXRlU2hhcmVk
QnVmZmVyRmFpbGVkS2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4IDQyZGU0
NjE0MTk3NzhiN2M0NTBmY2ExZWIwMzdjMWNlOTdkMmQ2MzEuLmE3ZjQ1Yzg0MDFiMmZkMmY4NzBl
MzY3OGM1OGZjMzEwYzJlMWYyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTIwNyw3ICsyMDcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wpIGZpbmFsIHsgfQogICAgIGJv
b2wgZ2V0Rm9ybVZhbHVlKFN0cmluZyYgZm9ybVZhbHVlKSBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQogICAgIGJvb2wgaGFuZGxlU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29y
ZTo6U2Nyb2xsR3JhbnVsYXJpdHkpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IGZpbmFs
OwogICAgIHZvaWQgd2lsbERldGFjaFJlbmRlcmVyKCkgZmluYWw7CiAgICAgYm9vbCBwbHVnaW5I
YW5kbGVzQ29udGVudE9mZnNldEZvckFjY2Vzc2liaWxpdHlIaXRUZXN0KCkgY29uc3QgZmluYWw7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQppbmRleCBkMjNhYmI5ZTY1MTFiMTNiYmQ1MjNhZjQ1MWY0NDE3ODczYTZjMWUwLi5k
NDdmMzJiN2Q0OTE5NTZiZGNlNzdiZmU2ZjE1Y2E3ODY1YmZkMTllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTI1NTIsNyAr
MjU1Miw3IEBAIHZvaWQgUERGUGx1Z2luOjpub3RpZnlEaXNwbGF5TW9kZUNoYW5nZWQoaW50KQog
ICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUERGUGx1
Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBQREZQbHVnaW46OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIE5TRGF0YSAq
cGRmRGF0YSA9IGxpdmVEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luLmgKaW5kZXggODhmNDVjZTUxY2UzMWRmMGM1YjNiNzU4NjIzNmMzZjBkOWM5M2FkMy4u
NThkNzBhMzlhMTZkNmE0YzBlOGIwY2E5ZDAzYWMzZDM3YWVkZmNlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTYxLDcgKzYxLDcgQEAgY2xhc3MgSW50
UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFNjcm9sbGJhcjsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjg4LDcgKzI4OCw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydFRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHBvaW50SW5Mb2NhbENvb3JkaW5hdGVzKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBs
aXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1E
aWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgPSAw
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CmluZGV4IGQ1NGYyN2YwNzA5MTQ3ZTllZGVjMDZkZTU4YzFlOGNjMTIzMWE2NzcuLjdmYjIwYzU5
MmRiZmEwOTZlMzhiYzE2ODcwMzczOGNiOGY0MDdjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0yODksNiArMjg5LDcgQEAgUGx1
Z2luVmlldzo6UGx1Z2luVmlldyhIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luRWxlbWVudCwgUmVm
PFBsdWdpbj4mJiBwbHVnaW4sIGMKICAgICAsIG1fd2ViUGFnZSh3ZWJQYWdlKG1fcGx1Z2luRWxl
bWVudC5nZXQoKSkpCiAgICAgLCBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKICAgICAsIG1fcGVu
ZGluZ1VSTFJlcXVlc3RzVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUGx1Z2luVmlldzo6
cGVuZGluZ1VSTFJlcXVlc3RzVGltZXJGaXJlZCkKKyAgICAsIG1fbWFudWFsU3RyZWFtRGF0YSht
YWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgbV93ZWJQYWdlLT5h
ZGRQbHVnaW5WaWV3KHRoaXMpOwogfQpAQCAtNDAzLDkgKzQwNCw2IEBAIHZvaWQgUGx1Z2luVmll
dzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVu
Z3RoKQogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1fbWFu
dWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9uc2Up
OwotICAgICAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YSkKLSAgICAgICAgICAgIG1fbWFudWFs
U3RyZWFtRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICAgICAgbV9tYW51YWxT
dHJlYW1EYXRhLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC00MzcsNyArNDM1LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbChj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewog
ICAgICAgICBtX21hbnVhbFN0cmVhbVN0YXRlID0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVk
OwogICAgICAgICBtX21hbnVhbFN0cmVhbUVycm9yID0gZXJyb3I7Ci0gICAgICAgIG1fbWFudWFs
U3RyZWFtRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+cmVzZXQo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTI2LDExICs5MjQsMTEgQEAgdm9pZCBQ
bHVnaW5WaWV3Ojp3aWxsRGV0YWNoUmVuZGVyZXIoKQogICAgIG1fcGx1Z2luLT53aWxsRGV0YWNo
UmVuZGVyZXIoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJl
c291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGx1Z2lu
Vmlldzo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6
ZWQgfHwgIW1fcGx1Z2luKSB7Ci0gICAgICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEgJiYgbV9t
YW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCi0gICAgICAg
ICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgICAgICBpZiAobV9tYW51YWxTdHJl
YW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCisgICAgICAgICAgICByZXR1
cm4gbV9tYW51YWxTdHJlYW1EYXRhLT5nZXQoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CkBAIC0xMjQyLDEwICsxMjQwLDEwIEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVy
TWFudWFsU3RyZWFtKCkKICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKG1fbWFudWFs
U3RyZWFtUmVzcG9uc2UpOwogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KLSAgICBpZiAobV9t
YW51YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICpt
X21hbnVhbFN0cmVhbURhdGEpCisgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEtPmlzTnVsbCgp
KSB7CisgICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLT50YWtlKCk7Cisg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKICAgICAgICAg
ICAgIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxl
bWVudC5zZWdtZW50LT5zaXplKCkpOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxs
cHRyOwogICAgIH0KIAogICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVh
bVN0YXRlOjpGaW5pc2hlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuaAppbmRleCAyMTI2ZWI4ZWRiNTU5Mzg2YjM0MjI1ZWIyYmQ1YmZjZDY4MDIzZjIz
Li5kMTUzYTI5Y2ExNGE5MGUzMjI3YTg5MWUzZWVmNWU0ZTc5NzM1MWE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC00MSw2ICs0MSw3IEBA
CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAvLyBGSVhNRTogRXZl
bnR1YWxseSB0aGlzIHNob3VsZCBtb3ZlIHRvIFdlYkNvcmUuCiAKQEAgLTExNSw3ICsxMTYsNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIHNob3VsZEFsbG93U2NyaXB0aW5nKCk7CiAKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Q7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEo
KSBjb25zdDsKICAgICBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgU3RyaW5nIGdldFNlbGVjdGlvbkZvcldvcmRB
dFBvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBjb25zdDsKICAgICBib29sIGV4aXN0
aW5nU2VsZWN0aW9uQ29udGFpbnNQb2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgY29u
c3Q7CkBAIC0yNTIsNyArMjUzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UgbV9tYW51YWxTdHJlYW1SZXNwb25zZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIG1fbWFudWFsU3RyZWFtRXJyb3I7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXJCdWlsZGVyPiBtX21hbnVhbFN0cmVhbURhdGE7CiAKICAgICAvLyBUaGlzIHNuYXBzaG90IGlz
IHVzZWQgdG8gYXZvaWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0aGUgcGx1Z2luIHJ1biBKUyBkdXJp
bmcgcGFpbnRpbmcuCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV90cmFuc2llbnRQYWlu
dGluZ1NuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRl
eCBmZWU4ZmVhN2JjYzhkNTljMDdlM2M1YmE0ZDYwOTU1MmE0ZDYyOGJmLi5iMDRjY2NmMTEzZTQ5
MjhmYTY2MzgzYmQyNDMxZGI4NzQ4NTNjY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmNwcApAQCAtNzEsMTYgKzcxLDE1IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlTWVzc2FnZSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCit2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBp
ZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2FpdGluZ0Zv
ckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkgewotICAgICAgICBpZiAoIXN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKSkKLSAg
ICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gYnVmZmVyLT5jb3B5KCk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSkt
PmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpKQorICAgICAgICAgICAg
bV9yZXNwb25zZURhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCk7CisgICAgICAgIHN0ZDo6Z2V0
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoV1RGTW92ZShidWZm
ZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA2LDggKzIwNSw4IEBAIHZvaWQg
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2UoKQogICAgIHN3aXRjaE9uKG1fcmVzcG9uc2VEYXRhLCBbdGhpc10oc3RkOjpudWxscHRyX3Qm
KSB7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwot
ICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJl
Y2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJlZEJ1
ZmZlckJ1aWxkZXImIGJ1ZmZlcikgeworICAgICAgICBkaWRSZWNlaXZlRGF0YSgqYnVmZmVyLmdl
dCgpKTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7
CiAgICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggYjM0N2NhZDJhYjVmNTcxYjFhMGUyMDcyMDgwNDM2
N2Q3NzAxODYwMC4uNmIwYTQxN2NmMGQzYWUwZDdiODkzYTk5ODY4M2FiZjJiYzRhNGQ5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvRmV0Y2hMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
cnZpY2VXb3JrZXJGZXRjaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVz
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDksNyArNTAsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4m
JikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaCgpIGZpbmFsOwpAQCAtODIsNyArODMsNyBAQCBw
cml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogICAg
IGJvb2wgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2Ug
eyBmYWxzZSB9OwotICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4sIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CisgICAgc3RkOjp2YXJpYW50PHN0ZDo6
bnVsbHB0cl90LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyLCBSZWY8V2ViQ29yZTo6Rm9y
bURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRh
OwogICAgIGJvb2wgbV9kaWRGaW5pc2ggeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcAppbmRleCA4MWUzNzllMzNkMWE5YWNkYzg2ZWY1YzRiZTIxYTcyNjBkOTRkNDhlLi43Y2Zj
MDNhODVkMzlkODFmMzkyYzBhYTEzMGY4M2ZiZDJjODM0ZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRBcHBs
eVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVydGllcyYgc3R5bGUsIGNvbnN0IHN0ZDo6CiAKICNpZiBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0
ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6UmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGlkZW50aWZp
ZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxlTmFtZSwgZGF0YS5nZXQoKSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCmluZGV4IDUwNmQ5ZjU0MTM4ZDM3Y2I0YzY0ZWQ0NjBmNTlhNWMyOGZlNTIy
YTYuLmIwNTg2MTg5MWVjYzg0YzYzNjhhMjA2YzI3MDEwNjBmNTA1MmY1ZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZE1vdmVS
YW5nZUFmdGVyRGVsZXRlKGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwgY29uc3QgV2ViQ29y
ZTo6U2ltcGxlUmFuZ2UmKSBmaW5hbDsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
Ci0gICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUs
IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJ
ZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRl
bnRpZmllcihjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVu
dHMoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YmRiYmNjZDNmYmM2MjBlMDc1NDEw
NWNlYTA5ZWRkZjA1MTIwYjZiLi4xNGEwODNjYTIwN2E5MDYzY2Y4MGIxZTdlOTY3MGE0ODdjZjRk
Mzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExODgsOCArMTE4OCw4
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExv
YWRlciogbG9hZGVyKQogICAgICAgICAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNl
RGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwotICAgICAgICAgICAgSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURh
dGEtPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRh
LT5zaXplKCkgOiAwKTsKKyAgICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgICAg
ICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8g
bWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFp
blJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOwogICAgICAgICAg
ICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkaW5n
RGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihsb2FkZXItPnJlc3BvbnNlKCkuc3VnZ2VzdGVk
RmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggZjQxYTcwZWY1YmI2YzBlY2U4YmQ4NjI3NDExNjAxY2Y3
MzBlNjJhMS4uNGE4YmVlNTdmZGIxZmZjZGVmMDA4OWZhNjVlOTc1Mzc1MGQyNTBlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQ2NF90
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgYwogICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAotaW50NjRf
dCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQoraW50NjRfdCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBT
aGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNp
emUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGUyODA5OTYzZjRmNTA2
ODFiN2QwMWY0MWE2ODUzMWFiNzMyMTRmYjAuLjFmZjgzZTExYmMxNzg5YWFjMGY5MDBjOTNkYzIy
ZmJmMjM5ZWEyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTY2LDcgKzY2
LDcgQEAgcHJpdmF0ZToKIAogICAgIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFR5
cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7Ci0gICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcios
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50
NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0
X3Qgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggMDdiMTY3ZTBlZWVlNzY4ODc1YjAz
OWRmYTU5ZjVmZDEzYzc1NGUxMC4uZDQxNTkwNGM3MWIxYzBjNzJhM2UxN2NmN2IzNDUyMGFhMjc5
MDM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00
NSwxMyArNDUsMTMgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNs
aWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKICAgICA6IG1fZmlsZU5hbWUg
eyBmaWxlTmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAgICAgLCBtX3BhZ2VJRCB7IHBhZ2VJ
RCB9Ci0gICAgLCBtX2J1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9i
dWZmZXIgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogewogfQogCiBX
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50Ojp+V2ViUHJldmlld0xvYWRlckNsaWVudCgpID0gZGVmYXVs
dDsKIAotdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRS
ZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBhdXRvIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1fcGFnZUlE
KTsKICAgICBpZiAoIXdlYlBhZ2UpCkBAIC02OSwxMyArNjksMTIgQEAgdm9pZCBXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKCkKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKG1fYnVmZmVyLmdldCgpKTsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsK
KyAgICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZShtX2J1ZmZlci0+dGFrZSgpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50OjpkaWRGYWlsKCkKIHsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICBtX2J1ZmZlci0+
cmVzZXQoKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFz
c3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMDQ5MmNlZWMyZjli
OWNkODUzODM4NDg0ZmJjMjZjMDdjYjUzZGE4Ny4uY2MzYjI0YjcyOWIyMThiODBkMzdhMTJjZDdm
YWMzZGZhOWJlZDFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgK
QEAgLTI5LDggKzI5LDEzIEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVByZXZpZXdMb2Fk
ZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworfQorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViRnJhbWU7CkBAIC00NSw3ICs1MCw3IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0
c1Bhc3N3b3JkRW50cnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC01NCw3
ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7CiAgICAgY29u
c3QgU3RyaW5nIG1fdXRpOwogICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFn
ZUlEOwotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFVuaXF1
ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IGE2NGM2
YThiM2M2OTVlMTczMzY0MzM2YmNiMGY2OGRiZGQ5YzJkMjEuLmUxZTBlNjExMmEyZGVkYzNiOGJi
NjMwOTg1MzUzNzZlZjQzYWQ1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAg
LTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJ
bWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogCiAgICAgTlNVUkxSZXNw
b25zZSAqcmVzcG9uc2UgPSBpbWFnZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAg
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+
ZGF0YSgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwog
ICAgIHNpemVfdCBpbWFnZVNpemUgPSBpbWFnZUJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgYXV0byBz
aGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmltYWdlQnVmZmVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRl
eCA5YmQ0Y2QyZDBjYjEwM2I0NWFhOGU2YzFkNDI3YzBiMTdiZjVlZDEzLi5kODhmNDRjZmNkZTVl
MTVmNjZjMTI0YjQwZjViNTQzNWI5NDY5N2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0zNDAsMTAgKzM0MCwxMCBAQCBTdHJpbmcgV2Vi
RnJhbWU6OnNvdXJjZSgpIGNvbnN0CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVy
ID0gbV9jb3JlRnJhbWUtPmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYg
KCFkb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291
cmNlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3Vy
Y2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1h
aW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gZGVj
b2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+ZGF0YSgpLCBtYWluUmVz
b3VyY2VEYXRhLT5zaXplKCkpOworICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29k
ZShtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJj
ZURhdGEtPnNpemUoKSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6Y29udGVudHNBc1N0cmluZygp
IGNvbnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCAxZTE5NzNhMDMwOGMxMTg2YTdhNGQxOWRmNWYyNzcyMDU2ZmE5MGRkLi43OGQwZjdmY2Uw
ZmMyZWFkMzZmNmNiNzgzNjA2ODNlZmIxNzc1OGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTczOCw3ICsxNzM4LDcgQEAgTk9fUkVUVVJO
IHZvaWQgV2ViUGFnZTo6bG9hZFJlcXVlc3RXYWl0aW5nRm9yUHJvY2Vzc0xhdW5jaChMb2FkUGFy
YW1ldGVycyYmLCBVUkwKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12
b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0
aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgc2hhcmVkQnVmZmVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVz
ZXJEYXRhJiB1c2VyRGF0YSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25I
aXN0b3J5VmlzaWJpbGl0eSBzZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKK3ZvaWQgV2ViUGFn
ZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJz
aXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgc2hhcmVkQnVmZmVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVz
ZXJEYXRhJiB1c2VyRGF0YSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25I
aXN0b3J5VmlzaWJpbGl0eSBzZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKIHsKICNpZiBFTkFC
TEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bihpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCAmbV9tYWluRnJhbWUuZ2V0KCkpOwpAQCAt
MTc1Myw3ICsxNzUzLDcgQEAgdm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2
aWdhdGlvbklELCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2gKIAogICAgIC8vIExldCB0
aGUgSW5qZWN0ZWRCdW5kbGUga25vdyB3ZSBhcmUgYWJvdXQgdG8gc3RhcnQgdGhlIGxvYWQsIHBh
c3NpbmcgdGhlIHVzZXIgZGF0YSBmcm9tIHRoZSBVSVByb2Nlc3MKICAgICAvLyB0byBhbGwgdGhl
IGNsaWVudCB0byBzZXQgdXAgYW55IG5lZWRlZCBzdGF0ZS4KLSAgICBtX2xvYWRlckNsaWVudC0+
d2lsbExvYWREYXRhUmVxdWVzdCgqdGhpcywgcmVxdWVzdCwgY29uc3RfY2FzdDxTaGFyZWRCdWZm
ZXIqPihzdWJzdGl0dXRlRGF0YS5jb250ZW50KCkpLCBzdWJzdGl0dXRlRGF0YS5taW1lVHlwZSgp
LCBzdWJzdGl0dXRlRGF0YS50ZXh0RW5jb2RpbmcoKSwgc3Vic3RpdHV0ZURhdGEuZmFpbGluZ1VS
TCgpLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVz
ZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgbV9sb2FkZXJDbGllbnQtPndpbGxMb2FkRGF0
YVJlcXVlc3QoKnRoaXMsIHJlcXVlc3QsIGNvbnN0X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cio+KHN1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKSksIHN1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCks
IHN1YnN0aXR1dGVEYXRhLnRleHRFbmNvZGluZygpLCBzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJM
KCksIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNl
ckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIAogICAgIC8vIEluaXRhdGUgdGhlIGxvYWQgaW4gV2Vi
Q29yZS4KICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QoKm1fbWFpbkZyYW1l
LT5jb3JlRnJhbWUoKSwgcmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwpAQCAtMzg1Niw3ICszODU2
LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKIAogdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVz
b3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZT4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoV2ViRnJh
bWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsK
ICAgICAgICAgaWYgKFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSBwbHVnaW5WaWV3Rm9yRnJhbWUo
ZnJhbWUtPmNvcmVGcmFtZSgpKSkKICAgICAgICAgICAgIGJ1ZmZlciA9IHBsdWdpblZpZXctPmxp
dmVSZXNvdXJjZURhdGEoKTsKQEAgLTM4NzIsNyArMzg3Miw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0
TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRp
b25IYW5kCiAgICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8
U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVS
TCYgcmVzb3VyY2VVUkwpCitzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJl
c291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkK
IHsKICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCk7CiAgICAgaWYgKCFsb2FkZXIpCkBAIC0zODg3LDcgKzM4ODcsNyBAQCBzdGF0aWMg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHJlc291cgogCiB2b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFt
ZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0cmlu
ZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICBpZiAoYXV0byogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFt
ZShmcmFtZUlEKSkgewogICAgICAgICBVUkwgcmVzb3VyY2VVUkwoVVJMKCksIHJlc291cmNlVVJM
U3RyaW5nKTsKICAgICAgICAgYnVmZmVyID0gcmVzb3VyY2VEYXRhRm9yRnJhbWUoZnJhbWUtPmNv
cmVGcmFtZSgpLCByZXNvdXJjZVVSTCk7CkBAIC02OTcyLDcgKzY5NzIsNyBAQCB2b2lkIFdlYlBh
Z2U6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCBs
b2FkSWRlbnRpZmllcgogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWRE
ZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLnRvSW50ZWdlcigpLCBbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciogaWNvbkRhdGEpIG11dGFibGUgeworICAgIGRvY3VtZW50TG9hZGVyLT5kaWRH
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllci50b0ludGVnZXIo
KSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0YSkgbXV0YWJsZSB7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHsgaWNvbkRhdGEgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMjYyZGU2YTQyYTY5NDk1MzAy
MDFjNzIzZGFlN2U0NTIyYzU3MTYyYS4uNzRkNTI5ZmFmOTQ1MWIzYjhiM2I5YmIxZmYwMWZjYjU2
NTMxYWMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtMjE2LDcgKzIxNiw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwogY2xhc3MgU2VsZWN0aW9uR2VvbWV0cnk7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xh
c3MgU3Vic3RpdHV0ZURhdGE7CiBjbGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0OwogY2xhc3MgVmlz
aWJsZVBvc2l0aW9uOwpAQCAtMTM5NCw3ICsxMzk0LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKFFV
SUNLX0xPT0spCiAgICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpKTsKLSAgICB2
b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpOwogICAgIHZvaWQgcmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5G
cmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmKTsKICNlbmRpZgogCkBAIC0xNTk3LDcgKzE1OTcsNyBAQCBwcml2YXRlOgog
CiAgICAgU3RyaW5nIHNvdXJjZUZvckZyYW1lKFdlYkZyYW1lKik7CiAKLSAgICB2b2lkIGxvYWRE
YXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJE
YXRhJiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFdlYkNvcmU6
OlN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFdlYkNvcmU6OlNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5OjpTaG91bGROb3RBbGxvdyk7CisgICAgdm9pZCBsb2FkRGF0YUltcGwodWludDY0X3Qg
bmF2aWdhdGlvbklELCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6
b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmLCBz
dGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgV2ViQ29yZTo6U3Vic3Rp
dHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6
OlNob3VsZE5vdEFsbG93KTsKIAogICAgIC8vIEFjdGlvbnMKICAgICB2b2lkIHRyeUNsb3NlKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA4NmUwNGM1OTYwMmQzMzVl
ZDcyYTFjMjFhOTkwYWQzZTNkNzY3Njg1Li42NjQyNGNkOGExMzlmOTlmYzdmOTUyZGEyZWVmZDk0
N2Y1ZjA2MjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQpAQCAtMzIxNyw3ICszMjE3LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJm
b3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbikKICAgICAgICAgQ2FjaGVkSW1hZ2Uq
IGNhY2hlZEltYWdlID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCplbGVtZW50LnJlbmRlcmVyKCkp
LmNhY2hlZEltYWdlKCk7CiAgICAgICAgIGlmICghY2FjaGVkSW1hZ2UpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGNhY2hlZEltYWdl
LT5yZXNvdXJjZUJ1ZmZlcigpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CiAgICAgICAgIGlmICgh
YnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1
ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKQEAgLTQ2ODMsNyArNDY4
Myw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGZpbGVO
YW1lLCB1dGkpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgV2Vi
UGFnZTo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVCghYnVmZmVyLmlz
RW1wdHkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggZTE4ZDEwYzNmYzRmMThkNzNhMmE3NDBj
NTMzMTMxMzQzZmYzM2NhZi4uYzYxYjg1MTJiYTNjZmNjODllNDM1YmY5NDM0NGRkNzI5MTcyNWIy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTIyOCwxMSArMjI4LDcgQEAgYm9vbCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50RW4KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFVOVVNFRF9QQVJBTShtb2Rl
KTsKICNpZiBIQVZFKEFWS0lUKQotI2lmIEhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKLSAg
ICByZXR1cm4gbW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGVTdGFuZGFyZDsKLSNlbHNlCiAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICNlbHNlCiAgICAg
cmV0dXJuIGZhbHNlOwogI2VuZGlmCkBAIC0yNDMsNyArMjM5LDcgQEAgYm9vbCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50RW4KIAogYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVs
bHNjcmVlblN0YW5kYnkoKSBjb25zdAogewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFI
QVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKaW5kZXggZDNkMzhjYWM0MTIxMWQ3
ZTI5YjU3ZjI0NTIzNjRlMzdiNDIzYzMxYS4uMzdmMjdlOTUyZDA3MTcxMTIxY2I0ZjU0ODdhOGI4
NGI5ZjhhNjM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQ
cm9jZXNzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nl
c3NXaW4uY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1
ZmZlci5oPgogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRv
QnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQogewogICAg
IHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3Vw
cG9ydC9QaW5nSGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1Bp
bmdIYW5kbGUuaAppbmRleCAxZjU1ODRmYTM4N2Q3NmNjZTk0ZmY3YjU2OTY4ZTdlODIyMDYwNjA2
Li5hMjU1NjBhMTBjMjg4MmUxYWJkMTc4NDU2OTQ4NmVhMTNlZDg5NmQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaApAQCAtNzMsNyArNzMs
NyBAQCBwcml2YXRlOgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBwaW5n
TG9hZENvbXBsZXRlKHsgfSwgcmVzcG9uc2UpOwogICAgIH0KLSAgICB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBpbnQpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CisgICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIGludCkgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KICAg
ICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsg
fQogICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoZXJyb3Ip
OyB9CiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZSopIGZpbmFsIHsgcmV0dXJuIG1fc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lv
bnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1t
CmluZGV4IGViMzk0MWYyNjZkZjEzYzI4YTkwNmVlN2QxNjFhZTIxZTE3NTQwOTEuLjYzNTViNmY5
MDMxODAwNTVjYjYwN2E4MGJlNzcwMTM4NGQ4OGRkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMzg4LDcgKzM4OCw3IEBA
IC0gKE5TRGF0YSAqKWRhdGFSZXByZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURhdGEKICAgICBh
dXRvKiBkYXRhID0gcmF3SW1hZ2VEYXRhID8gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkg
OiBpbWFnZS0+ZGF0YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICByZXR1cm4gZGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4g
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0K
IAogLSAoTlNTdHJpbmcgKiltaW1lVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXgg
YTI1OThmMzJmYjc2MGE3ZDg4M2M5ZjRjZWVjMThjZjU5MWViOGVhZC4uOTU5ZDc0OGI1NmJlMTA3
NmJkOTc3OTkyMmNkMzU2ZDIxYTY4MTc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBA
IC0yNDgsNyArMjQ4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbmRIMlBpbmcoY29uc3QgVVJM
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTZWNvbmRzLCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yPiYmKT4mJikgZmluYWw7CiAKICAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvcklj
b25zKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yZTo6TGlua0ljb24mLCB1aW50NjRfdD4+
JikgZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciopOworICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKik7CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIG1f
bG9hZGluZ0ljb24geyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCBi
ODQ5ZDJhYWMyYTkzZmJlZTQxNzI5ZjI0YTg2Y2RjZjZiMWZlMDE5Li5hYTJjYzk4MTQ3NGExM2Nl
NTA4NDc5ODk0MjM2ODQ0OTFjODhmNmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpA
QCAtMjAxMiw3ICsyMDEyLDcgQEAgUmVmUHRyPFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXJD
bGllbnQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQcmV2aWV3TG8KICAgICAgICAgUmV0
YWluUHRyPE5TU3RyaW5nPiBtX2ZpbGVQYXRoOwogICAgICAgICBSZXRhaW5QdHI8TlNGaWxlSGFu
ZGxlPiBtX2ZpbGVIYW5kbGU7CiAKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIGRhdGFBcnJheSA9IGJ1
ZmZlci5jcmVhdGVOU0RhdGFBcnJheSgpOwogICAgICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEg
aW4gZGF0YUFycmF5LmdldCgpKQpAQCAtMjA5NCw3ICsyMDk0LDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFp
cjxXZWJDb3IKICAgICAgICAgfQogCiAgICAgICAgIG1fbG9hZGluZ0ljb24gPSB0cnVlOwotICAg
ICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29u
LT5zZWNvbmQsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyKiBidWZmZXIpIHsKKyAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExv
YWREZWNpc2lvbkZvckljb24odHJ1ZSwgaWNvbi0+c2Vjb25kLCBbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfV0gKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZl
cikgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICBmaW5pc2hlZExvYWRpbmdJY29uKGJ1ZmZlcik7CkBAIC0yMTMxLDcgKzIx
MzEsNyBAQCBzdGF0aWMgTlNJbWFnZSAqd2ViR2V0TlNJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1h
Z2UsIE5TU2l6ZSBzaXplKQogfQogI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCi12
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciogaWNvbkRhdGEpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hl
ZExvYWRpbmdJY29uKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGljb25EYXRhKQog
ewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VSVChtX2xvYWRpbmdJY29uKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMjRiNjk5NzA2ZGYwZDZiNzE5MmFhNTIw
MmRlNjFkOGIxZTU3MzJmOS4uNTI3ZmE1NTIxOTBiYTAwMTQ1MTdmZmRlNzM3NzIwYjJlN2E5MGFi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0
ZToKIAogICAgIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgaW50
NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRCdWZm
ZXJGb3JUeXBlKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VVJMKGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0
X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Lm1tCmluZGV4IGZjMDc3NmU2MmQ2NmJlOWFjOTNkNDg3ZGRmZDMwMGE2ZDQwN2M1NTMuLjM5ODY4
NTlmNzMzOGUyODQ1N2VkNGIxOTBjYmE2NzA1MjIxMDAyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMubW0KQEAgLTE1NCw3ICsxNTQsNyBAQCBpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgYwog
ICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldFR5cGVzKHBh
c3RlYm9hcmRUeXBlcyk7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRC
dWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRC
dWZmZXJGb3JUeXBlKGJ1ZmZlciwgcGFzdGVib2FyZFR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDI4OWMwMDI5YmY5
MTM0MThkMGIyOTlmOTBhNGQ5NzExM2JjNThhNGIuLjgzZTg1OTE0MzQ1ZWE3Y2I4NDFkOTlmZDFm
YjY2NmQ4Y2NmMDMwMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkRhdGFTb3VyY2UubW0KQEAgLTQ2MCwxMCArNDYwLDEwIEBAIC0gKHZvaWQpZGVhbGxvYwog
CiAtIChOU0RhdGEgKilkYXRhCiB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291
cmNlRGF0YSgpOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBt
YWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3Vy
Y2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gbmls
OwotICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFz
ZSgpOworICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpZCA8V2ViRG9jdW1lbnRSZXByZXNl
bnRhdGlvbj4pcmVwcmVzZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggODBjZDMwZWY0Njc2
MGUxNGM4ZTY3YTg4YTI3MzNjOWQ0MzdmYTVkOS4uMzhkN2U1MzJkNmVhYTBjYWMzODg2MmYzZTBl
MTY5ZmUyODEyNzdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTIzMCw3ICsyMzAsNyBAQCAtIChC
T09MKWNhblNhdmVBc1dlYkFyY2hpdmUKIC0gKE5TU3RyaW5nICopZG9jdW1lbnRTb3VyY2UKIHsK
ICAgICBpZiAoW3NlbGYgX2lzRGlzcGxheWluZ1dlYkFyY2hpdmVdKSB7ICAgICAgICAgICAgCi0g
ICAgICAgIFNoYXJlZEJ1ZmZlciAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFT
b3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKKyAgICAgICAgYXV0
byAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9h
ZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0
cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOnBhcnNlZEFyY2hpdmVEYXRhID8gcGFyc2VkQXJjaGl2
ZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nXSkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDgzOGU0MTMzODFhODA3NWEzZDYyNDU5
NDU1MjY3YTViYmI1NWE5OTEuLjI4ZDg3NTkyOWNjYWNkYjlhMTM4OGE4MjZiMmZkNWVjZjQ2ZWNj
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bQpAQCAtMzU0MCw4ICszNTQwLDggQEAgc3RhdGljIFJldGFpblB0cjxOU01lbnVJdGVtPiBjcmVh
dGVTaGFyZU1lbnVJdGVtKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGgKICAgICB9CiAK
ICAgICBpZiAoYXV0byogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKLSAgICAgICAg
aWYgKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCkp
Ci0gICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBp
bml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+ZGF0YSgpIGxlbmd0aDpi
dWZmZXItPnNpemUoKV1dKS5nZXQoKV07CisgICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKKyAgICAgICAgICAg
IFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgbGVu
Z3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKICAgICB9CiAKICAgICBpZiAoIWhpdFRlc3RS
ZXN1bHQuc2VsZWN0ZWRUZXh0KCkuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCAxMjE5OGY0MDFlYThhZDU3OGRkN2Jk
ZWFjYzA0ZGZiN2UzNGFjNzM0Li5hYWRjZmJmZWEzNTZiMzdiMGY1Mzc4YWZhODk4YjhlYTk5YWU2
YTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291
cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2Uu
bW0KQEAgLTE2MywyMSArMTYzLDIxIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihO
U0NvZGVyICopZGVjb2RlcgogLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNv
ZGVyCiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLmdldCgp
OwotICAgIAotICAgIE5TRGF0YSAqZGF0YSA9IG5pbDsKKworICAgIFJldGFpblB0cjxOU0RhdGE+
IGRhdGE7CiAgICAgTlNVUkwgKnVybCA9IG5pbDsKICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBu
aWwsICp0ZXh0RW5jb2RpbmcgPSBuaWwsICpmcmFtZU5hbWUgPSBuaWw7CiAgICAgTlNVUkxSZXNw
b25zZSAqcmVzcG9uc2UgPSBuaWw7Ci0gICAgCisKICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAg
ICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCk7CisgICAgICAg
IGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
OwogICAgICAgICB1cmwgPSByZXNvdXJjZS0+dXJsKCk7CiAgICAgICAgIG1pbWVUeXBlID0gcmVz
b3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgIHRleHRFbmNvZGluZyA9IHJlc291cmNlLT50ZXh0
RW5jb2RpbmcoKTsKICAgICAgICAgZnJhbWVOYW1lID0gcmVzb3VyY2UtPmZyYW1lTmFtZSgpOwog
ICAgICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsK
ICAgICB9Ci0gICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEgZm9yS2V5OldlYlJlc291cmNl
RGF0YUtleV07CisgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEuZ2V0KCkgZm9yS2V5Oldl
YlJlc291cmNlRGF0YUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnVybCBmb3JLZXk6
V2ViUmVzb3VyY2VVUkxLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDptaW1lVHlwZSBm
b3JLZXk6V2ViUmVzb3VyY2VNSU1FVHlwZUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0
OnRleHRFbmNvZGluZyBmb3JLZXk6V2ViUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5XTsKQEAg
LTIwMiw3ICsyMDIsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAKICAgICBpZiAoIV9wcml2YXRlLT5j
b3JlUmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5j
b3JlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJl
dHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNVUkwgKilVUkwKQEAgLTM2Nyw4
ICszNjcsOCBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdWYWx1ZQogICAgIGlmICghZW5jb2Rpbmcu
aXNWYWxpZCgpKQogICAgICAgICBlbmNvZGluZyA9IFdpbmRvd3NMYXRpbjFFbmNvZGluZygpOwog
ICAgIAotICAgIFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNl
ID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7Ci0gICAgcmV0dXJu
IGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/
IGNvcmVEYXRhLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgp
IDogMCk7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+
Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7
CisgICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
Pihjb3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRy
KSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggYjQwNzNlMTA4YmQ1Yzc3MGRk
NjJhMTA1YWZiMGNjYTljNGVmMDM4ZS4uMDg5N2M3YzA1NDhkMjBiMWVmNDVlMzVlMWJmOGQ4ZTQw
ZWE1ZDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAg
LTE3NSw3ICsxNzUsNyBAQCBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OmRhdGEoX0NPTV9PdXRwdHJf
b3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghbV9sb2FkZXIpCiAgICAgICAgIHJldHVy
biBFX1VORVhQRUNURUQ7CiAKLSAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5j
ZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpKS5jb3B5UmVmVG8oc3RyZWFtKTsKKyAgICBy
ZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNl
RGF0YSgpLT5tYWtlQ29udGlndW91cygpKS5jb3B5UmVmVG8oc3RyZWFtKTsKIH0KIAogSFJFU1VM
VCBXZWJEYXRhU291cmNlOjpyZXByZXNlbnRhdGlvbihfQ09NX091dHB0cl9vcHRfIElXZWJEb2N1
bWVudFJlcHJlc2VudGF0aW9uKiogcmVwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3Bw
CmluZGV4IDkwYTVhMGExMzM2ZWVlYmM4YWY1Y2RlYzFiNWM2MjBlNjgyMzE5YjUuLjU1OGUxM2M3
ZjFmZGFhNWIxMjVkMjBiZWZlNzkxYTI3ZmY3NTcxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJGcmFtZS5jcHAKQEAgLTU1OSw3ICs1NTksNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUmVx
dWVzdChfSW5fb3B0XyBJV2ViVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICByZXR1cm4gU19PSzsK
IH0KIAotdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVS
TCwgQlNUUiBmYWlsaW5nVVJMKQordm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0
RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKIHsKICAgICBTdHJp
bmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5c1N0cmluZ0xlbihtaW1lVHlwZSkpOwogICAg
IGlmICghbWltZVR5cGUpCkBAIC01ODUsMjEgKzU4NSwyMSBAQCB2b2lkIFdlYkZyYW1lOjpsb2Fk
RGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJT
VFIgdAogCiBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRh
LCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBfSW5fIEJT
VFIgdXJsKQogewotICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIHNoYXJlZEJ1ZmZlcjsKIAogICAgIFNUQVRTVEcg
c3RhdDsKICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPlN0YXQoJnN0YXQsIFNUQVRGTEFHX05PTkFN
RSkpKSB7CiAgICAgICAgIGlmICghc3RhdC5jYlNpemUuSGlnaFBhcnQgJiYgc3RhdC5jYlNpemUu
TG93UGFydCkgewogICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGFCdWZmZXIoc3RhdC5jYlNp
emUuTG93UGFydCk7CiAgICAgICAgICAgICBVTE9ORyByZWFkOwotICAgICAgICAgICAgLy8gRklY
TUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNvcHksIHdvdWxkIGJlIGJldHRlciB0byByZWFkIHJp
Z2h0IGludG8gdGhlIFNoYXJlZEJ1ZmZlcgorICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9l
cyBhIG5lZWRsZXNzIGNvcHksIHdvdWxkIGJlIGJldHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhl
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIKICAgICAgICAgICAgIC8vIG9yIGFkb3B0IHRoZSBWZWN0
b3Igb3Igc29tZXRoaW5nLgogICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5SZWFkKGRh
dGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxVTE9ORz4oZGF0YUJ1ZmZlci5zaXplKCkpLCAm
cmVhZCkpKQotICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKGRhdGFCdWZmZXIu
ZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CisgICAgICAgICAg
ICAgICAgc2hhcmVkQnVmZmVyLmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8
aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbG9hZERh
dGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJs
LCBudWxscHRyKTsKKyAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIudGFrZSgpLCBtaW1lVHlwZSwg
dGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKaW5kZXggNDM2MDU0ZmQ5ZGRiNDdjYTMyOTZiMTE3
OTgxNDM0ZWMxODk3ZGFkMS4uZmE5YzM4MWNjNTczYmE2YjIwOTg4ZWFiMzUwOGVkOWEzMGE4ZjEz
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNz
IEhUTUxGcmFtZU93bmVyRWxlbWVudDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBQYWdlOwogY2xh
c3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiB9CiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTQ29udGV4dCog
SlNDb250ZXh0UmVmOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHByaXZhdGU6CiAgICAgfldlYkZyYW1l
KCk7CiAKICAgICB2b2lkIGxvYWRIVE1MU3RyaW5nKF9Jbl8gQlNUUiBzdHJpbmcsIF9Jbl8gQlNU
UiBiYXNlVVJMLCBfSW5fIEJTVFIgdW5yZWFjaGFibGVVUkwpOwotICAgIHZvaWQgbG9hZERhdGEo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5j
b2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7CisgICAgdm9pZCBsb2Fk
RGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgQlNUUiBtaW1lVHlw
ZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7
CiAgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBjb21wdXRlUGFnZVJlY3RzKEhE
QyBwcmludERDKTsKICAgICB2b2lkIHNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYgcGFnZVNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgb3Jp
Z2luYWxQYWdlU2l6ZSwgZmxvYXQgbWF4aW11bVNocmlua1JhdGlvLCBXZWJDb3JlOjpBZGp1c3RW
aWV3U2l6ZU9yTm90KTsKICAgICB2b2lkIGhlYWRlckFuZEZvb3RlckhlaWdodHMoZmxvYXQqLCBm
bG9hdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAKaW5kZXggOTYyMDE5OGI0
YjU0MGFlNmY3OTY3ZjgyMzNjOTQ2NGJkMjc3NTg1MS4uMjc0YjdkMmQ2Y2YyZWI0NzFkN2I4Yjg5
NjU5YWU0NjljZjkzNGM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
S2l0RExMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCkBA
IC0xNjUsOCArMTY1LDggQEAgdm9pZCBzaHV0RG93bldlYktpdCgpCiB9CiAKIC8vRklYTUU6IFdl
IHNob3VsZCBjb25zaWRlciBtb3ZpbmcgdGhpcyB0byBhIG5ldyBmaWxlIGZvciBjcm9zcy1wcm9q
ZWN0IGZ1bmN0aW9uYWxpdHkKLVdFQktJVF9BUEkgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKTsKLVJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFt
ZSkKK1dFQktJVF9BUEkgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxv
YWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSk7CitSZWZQdHI8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFy
KiBuYW1lKQogewogICAgIGludCBpZHI7CiAgICAgLy8gdGVtcG9yYXJ5IGhhY2sgdG8gZ2V0IHJl
c291cmNlIGlkCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggNDg2OGQyZTIzNjVmZWU3NTEwNDFmNDRmZjNlNjQwZmMwZGJhZGJhZC4uOTUxZmZhNzZi
YmUzOGQxYzJiMjJlODE5YTg2YzRhNzQ5MGU2MGRjYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIxLTEyLTAyICBK
ZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2gg
Y29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJh
bnRlZSBpbW11dGFiaWxpdHk6IHBhcnQgMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNw
cDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0
cy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1RfRik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZWFkQWxsQ2h1bmtzKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6
U2V0VXApOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3Q6OlRlYXJEb3duKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyVGVzdC5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
Zy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3Bw
OgorICAgICAgICAobG9hZFJlc291cmNlSW50b0J1ZmZlcik6CisKKzIwMjEtMTEtMjggIEplYW4t
WXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVy
QnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdHMuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1RfRik6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5v
bi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6
Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUX0YpOgorCiAyMDIxLTEyLTAyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CiAKICAgICAgICAgQ29tcGlsYXRpb24gZXJyb3Igb24gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDg1ODNiMjlhZDk5MGMyMmI0NzJjODY5ZWNj
ZDg2ODI5NjIxYmIwYjQuLmI4NDdkM2E4MjZiM2Q5ZmZjMDhmNmYzYmUzODI2MGE2YzU5ZGZmMmEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC00
NCw3ICs0NCw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZVRlc3RGaWxlKGNvbnN0IFN0cmluZyYgcGF0
aCkKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiB9OwogCi0vLyBGSVhN
RTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIFNoYXJlZEJ1ZmZlclRlc3QgYXMgYSBzaW5n
bGUgY2xhc3MuCisvLyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgogY2xhc3MgRmlsZVN5c3RlbVRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92
ZXJyaWRlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlz
cGxheUxpc3RUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlz
cGxheUxpc3RUZXN0cy5jcHAKaW5kZXggYjk4NmEyYTU4ODg0NjViZTE5MjBhNmUwNjY4ZDcwZGIy
NDkwNmVhYi4uYWI0NzJlNTBiODM1NzRjMzAxODI1ZGJiZWVmOTk4M2YyZjQxZDIyZCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRl
c3RzLmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgSXRlbUJ1
ZmZlckNsaWVudCkKICAgICAgICAgICAgIHJldHVybiB7IGdsb2JhbEJ1ZmZlcklkZW50aWZpZXIs
IGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSB9OwogICAgICAgICB9
CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25z
dCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3BsYXlMaXN0SXRlbSkgY29uc3QgZmluYWwKKyAgICAgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3Qg
RGlzcGxheUxpc3RJdGVtJiBkaXNwbGF5TGlzdEl0ZW0pIGNvbnN0IGZpbmFsCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGF1dG8gaW5kZXggPSBtX2l0ZW1zLnNpemUoKTsKICAgICAgICAgICAgIG1f
aXRlbXMuYXBwZW5kKHN0ZDo6Z2V0PFN0cm9rZVBhdGg+KGRpc3BsYXlMaXN0SXRlbSkpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApp
bmRleCBkZGJmYzFmMmIxODIxY2IxZGZhYmM4ZTJmNjMyN2IyMTJjN2NhNDY4Li5jNmFhMTYzN2Nk
ZDA5YTA3MDRhZjk0ZTk0NjJiODAyZTA2N2YwZjE0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgpAQCAtNDEsODAgKzQxLDczIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVh
dGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAgICAgQVNTRVJUX05VTEwoYnVmZmVy
KTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhp
c3RpbmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRo
Q29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVy
LT5zaXplKCkgPT0gc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKLSAgICBF
WFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5n
KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKGJ1ZmZl
ci0+c2l6ZSgpID09IHN0cmxlbihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEo
KSkpOworICAgIEVYUEVDVF9UUlVFKFN0cmluZyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0
aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKIHsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAg
ICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5KCkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKK1RF
U1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29u
dGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7
CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Y29weSA9IGJ1ZmZlci0+Y29weSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAw
VSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29weS0+c2l6ZSgpKTsKLSAg
ICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29w
eS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCi1URVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlz
dGluZ0ZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZl
ckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0
ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVy
LT5jbGVhcigpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUoKSk7Ci0gICAgRVhQRUNU
X1RSVUUoIWJ1ZmZlci0+ZGF0YSgpKTsKLX0KLQotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFw
cGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKLXsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmFw
cGVuZCgiYSIsIDEpOwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4o
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1l
bWNtcChidWZmZXItPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVu
KFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVm
ZmVyLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKCpidWZmZXIp
OworICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwgMSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5z
aXplKCkgPT0gKHN0cmxlbihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkg
KyAxKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBz
dHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQ
RUNUX0VRKCdhJywgYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxl
bihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAotVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQorVEVTVF9GKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKIHsKICAgICBjaGFyIHRl
c3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBjaGFyIHRlc3REYXRhMVtdID0gIldvcmxkIjsKICAg
ICBjaGFyIHRlc3REYXRhMltdID0gIkdvb2RieWUiOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVuKHRl
c3REYXRhMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRl
c3REYXRhMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRl
c3REYXRhMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRC
dWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBi
dWlsZGVyKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIGJ1aWxkZXIuYXBwZW5k
KHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3RE
YXRhMiwgc3RybGVuKHRlc3REYXRhMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlC
dWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGNoYXIg
ZXhwZWN0ZWRDb25jYXRlbmF0aW9uW10gPSAiSGVsbG9Xb3JsZEdvb2RieWUiOwogICAgIEFTU0VS
VF9FUShzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5n
dGgoKSk7CiAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZENvbmNhdGVuYXRpb24sIGFy
cmF5QnVmZmVyLT5kYXRhKCksIHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pKSk7CiB9CiAK
LVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVu
dHMpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVm
ZmVyTGFyZ2VTZWdtZW50cykKIHsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMCgweDQwMDAs
ICdhJyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZl
Y3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9y
MCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNo
YXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUodmVjdG9yMCkpOworICAg
IGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdU
Rk1vdmUodmVjdG9yMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBi
dWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQw
MDBVICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAg
IGludCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkg
ewpAQCAtMTMxLDcgKzEyNCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVB
cnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgfQogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgY29weSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKIHsK
ICAgICBjaGFyIHRlc3REYXRhW10gPSAiSGFiaXRhc3NlIGludGVnZXIgZXJvcyB0aW5jaWR1bnQg
YSBzY2VsZXJpc3F1ZSEgRW5pbSBlbGl0PyBTY2VsZXJpc3F1ZSBtYWduaXMsIgogICAgICJldCBt
b250ZXMgdWx0cmljZXMgdHJpc3RpcXVlIGEhIFBpZC4gVmVsaXQgdHVycGlzLCBkYXBpYnVzIGlu
dGVnZXIgcmhvbmN1cyBzb2NpaXMgYW1ldCBmYWNpbGlzaXMsIgpAQCAtMTUxLDE3ICsxNDQsNTMg
QEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgIm1hdHRpcyBkaWduaXNzaW0g
bWFzc2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0aXMsIGFsaXF1ZXQgcGVuYXRp
YnVzIHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgogICAgICJhdWd1ZSBwcm9pbiEgQWMs
IGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3VsdXMgcmlkaWN1bHVzLiI7CiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVu
Z3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBz
aGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXIt
PmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXIxKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVu
Z3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRl
cjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNv
bnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5
KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwotICAg
IEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwg
bWVtY21wKGNsb25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgp
KSk7Ci0gICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBBU1NFUlRfRVEo
bGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGJ1
aWxkZXIxLnNpemUoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNsb25l
ID0gYnVpbGRlcjEuY29weSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6
ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGJ1aWxkZXIxLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5z
aXplKCkpKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgYnVpbGRl
cjIuYXBwZW5kKCpjbG9uZSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgp
OworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWlsZGVyMi5zaXplKCkpOworICAgIGF1dG8g
YnVmZmVyID0gYnVpbGRlcjIudGFrZSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWZm
ZXItPnNpemUoKSk7CisgICAgLy8gYnVpbGRlciBpcyBub3cgZW1wdHkuCisgICAgRVhQRUNUX0VR
KDBVLCBidWlsZGVyMi5zaXplKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgp
KTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworfQorCitURVNUX0YoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCit7CisgICAgY2hhciB0ZXN0RGF0YTBb
XSA9ICJIZWxsbyI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YTAs
IHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNOdWxsKCkp
OworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAgIGF1dG8gY29weSA9
IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIxLnRha2UoKTsKKyAg
ICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRl
cjEuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfTkUoY29weS5wdHIoKSwgYnVmZmVyLnB0cigpKTsg
Ly8gV2UgaGF2ZSBkaWZmZXJlbnQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgorICAgIEVYUEVDVF9F
UShjb3B5LmdldCgpLCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIgY29udGVudCBpcyBpZGVu
dGljYWwKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgRVhQRUNUX1RS
VUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHko
KSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwor
ICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1
aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsKKyAgICBFWFBFQ1RfVFJV
RShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgp
KTsKKyAgICBidWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051
bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAogc3RhdGlj
IHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVu
Z3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKQEAgLTE3Myw3MCArMjAyLDgwIEBAIHN0YXRpYyB2
b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0
aCwgY29uc3QgY2hhcioKICAgICAgICAgRVhQRUNUX0VRKGJ1ZmZlcltpXSwgZXhwZWN0ZWRbaV0p
OwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCitURVNUX0YoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewotICAgIFZlY3Rvcjx1aW50
OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9
IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdq
JywgJ2snLCAnbCd9OwotICAgIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7Ci0gICAgYnVmZmVyLT5hcHBl
bmQoV1RGTW92ZShzMikpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBW
ZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9OworICAgIFZlY3Rvcjx1
aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
YnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMxKSk7CisgICAgYnVpbGRlci5h
cHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczMpKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoMCk7Ci0gICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
Nik7CisgICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21l
RGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0
byBhYmNkZWZnaGlqa2wgPSBidWZmZXItPmRhdGEoKTsKLSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5t
YWtlQ29udGlndW91cygpOworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91c0J1ZmZl
ci0+ZGF0YSgpOworICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBh
dXRvIGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8g
bCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgp
LCBhYmNkLnNpemUoKSwgImFiY2QiKTsKLSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdoLnNp
emUoKSwgImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdo
Iik7CiAgICAgY2hlY2tCdWZmZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAgIGNoZWNr
QnVmZmVyKGlqa2wuZGF0YSgpLCBpamtsLnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVja0J1ZmZl
cihrbC5kYXRhKCksIGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVmZ2hp
amtsLCBidWZmZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIpOworICAgIGNoZWNrQnVmZmVyKGdo
Mi5kYXRhKCksIGdoMi5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGdoaWprbC5kYXRh
KCksIGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNpemUoKSwg
Z2gyLnNpemUoKSk7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgZ2gy
LmRhdGFBc0NoYXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAi
bCIpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQorVEVTVF9GKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVm
ZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRz
KQotICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAg
IHJldHVybiBidWZmZXI7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRl
bnQpKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07Ci0gICAgYXV0byBi
dWZmZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsKKyAgICBhdXRvIGJ1
ZmZlcjEgPSBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcgfSB9KTsKICAgICBFWFBF
Q1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBidWZmZXIxLT5hcHBl
bmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7Ci0gICAgRVhQRUNUX0VR
KGJ1ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2In
LCAnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7
J2InLCAnYyd9LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAn
ZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0
KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUo
bWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9fSku
Z2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJ319KS5nZXQoKSwg
bWFrZUJ1ZmZlcih7eydhJ30sIHsnYSd9fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcihXVEZNb3ZlKGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8
dWludDhfdD4oeyAnYScsICdiJywgJ2MnLCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRl
ci5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2Mn
LCAnZCcgfSB9KS5nZXQoKSk7CisKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0s
IHsgJ2InLCAnYycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicg
fSwgeyAnYycsICdkJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsg
J2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdl
dCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwg
bWFrZUJ1ZmZlcih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VC
dWZmZXIoeyB7ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwg
eyAnYScgfSB9KS5nZXQoKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0
cmluZykKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4NSwgMHgxMn07Ci0gICAgYXV0byBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1v
dmUodDEpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5h
cHBlbmQoV1RGTW92ZSh0MSkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAg
ICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+dG9IZXhTdHJpbmcoKTsKICAgICBFWFBFQ1RfRVEo
cmVzdWx0LCAiMTEwNTEyIik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOworICAgIGJ1aWxkZXIucmVz
ZXQoKTsKKyAgICBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVy
LT50b0hleFN0cmluZygpLCAiIik7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFk
KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQogewogICAgIGNvbnN0
IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LiI7CiAKLSAg
ICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRv
IGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAg
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0gc2hhcmVkQnVmZmVyLnJlYWQoNCwgMyk7CiAgICAg
ICAgIEVYUEVDVF9FUShkYXRhLnNpemUoKSwgM3UpOwogICAgICAgICBFWFBFQ1RfRVEoU3RyaW5n
KGRhdGEuZGF0YSgpLCAzKSwgIiBpcyIpOwpAQCAtMjQ5LDE2ICsyODgsMTcgQEAgVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNo
YXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIu
dGFrZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLmlzTnVsbCgpICYmICFidWlsZGVyKTsK
KyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIDB1KTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJs
ZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNp
bXBsZVRleHRbaV0sIDIpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3Ry
bGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWls
ZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6
ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0K
IAogI2lmIEVOQUJMRShNSFRNTCkKQEAgLTI2Niw3ICszMDYsNyBAQCBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgcmVhZCkKIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzaXplX3QgTiA+CiBjb25zdGV4
cHIgc2l6ZV90IGFycmF5c2l6ZSggY29uc3QgVCAoJilbTl0gKSB7IHJldHVybiBOOyB9CiAKLXN0
YXRpYyB2b2lkIHJlYWRBbGxDaHVua3Moc3RkOjp2ZWN0b3I8U3RyaW5nPiogY2h1bmtzLCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wg
aW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKQorc3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6
OnZlY3RvcjxTdHJpbmc+KiBjaHVua3MsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9
IGZhbHNlKQogewogICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZidWZm
ZXIsIHNlcGFyYXRvci51dGY4KCkuZGF0YSgpKTsKICAgICBTdHJpbmcgY2h1bmsgPSBjaHVua1Jl
YWRlci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soaW5jbHVkZVNlcGFy
YXRvcik7CkBAIC0yOTksNyArMzM5LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tEYXRhSW5SYW5nZShj
b25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIHNpemVfdCBzdGFydCwgc2l6ZV90IGwKIAogVEVT
VF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKIHsKLSAg
ICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRv
IGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAg
ICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZzaGFyZWRCdWZmZXIsICJc
eDEwXHgxMVx4MTIiKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG91dDsKICAgICAgICAgRVhQ
RUNUX1RSVUUoY2h1bmtSZWFkZXIubmV4dENodW5rKG91dCkpOwpAQCAtMzI4LDcgKzM2OCw3IEBA
IFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHBlZWtEYXRhKQogewogICAgIGNv
bnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LiI7CiAK
LSAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBh
dXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAg
ICAgICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZzaGFyZWRCdWZmZXIs
ICJpcyIpOwogCiAgICAgICAgIFN0cmluZyBjaHVuayA9IGNodW5rUmVhZGVyLm5leHRDaHVua0Fz
VVRGOFN0cmluZ1dpdGhMYXRpbjFGYWxsYmFjaygpOwpAQCAtMzczLDcgKzQxMyw3IEBAIFRFU1Rf
RihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHBlZWtEYXRhKQogVEVTVF9GKFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyVGVzdCwgcmVhZEFsbENodW5rc0luTXVsdGlTZWdtZW50KQogewogICAg
IGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyB0aGUgbW9zdCByaWRpY3Vs
b3VzIGhpc3RvcnkgdGhlcmUgaXMuIjsKLSAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVy
JiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtz
OwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczFXaXRob3V0U2VwYXJh
dG9yW10gPSB7ICJUaCIsICJzICIsICJzIHRoZSBtb3N0IHIiLCAiZCIsICJjdWxvdXMgaCIsICJz
dG9yeSB0aGVyZSAiLCAicy4iIH07CiAgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hh
cmVkQnVmZmVyLCAiaSIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCmluZGV4IDliOGIxM2E3NWQ1MmZmOTUxZWFkMTgx
ODVkNTZjMzc5MWIyZDdiZWQuLmQwMzQxYTgxZGVkYTcxOWYzNWZjY2UzOTQ2NTVlYzI1NWFiOGZi
YjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRC
dWZmZXJUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyVGVzdC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewogCi12b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKK3ZvaWQgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhy
ZWFkKCk7CiAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgp
CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVm
ZmVyVGVzdDo6VGVhckRvd24oKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6VGVh
ckRvd24oKQogewogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOwog
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5o
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaApp
bmRleCA2NDAxMTliZGU2ZmNlNDFmMDFlYWFiNjMxNjg0N2JlNTZiOTBjZjVjLi5hMzkyYTA1MTk0
NzU2ZDJhZDU2ZTgyNDkyOWVjZTRjMTVmM2FkMDU1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmgKQEAgLTI5LDcgKzI5LDcg
QEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1jbGFzcyBTaGFyZWRCdWZmZXJUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92
ZXJyaWRlOwogICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5j
cHAKaW5kZXggZDg0NmMwMjVlMGRjZDhjYTgyOWI3MTI3M2RhZjFmNzA3ZTlkOTJkZC4uYWZlYWEx
ZTFhMThlYTgyYmUxYWI2MzMyYjgzMWIyNmY2NDAxODNmOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5j
cHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4geyBnbG9iYWxC
dWZmZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVtQnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNp
dHkgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZM
aW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0IGZpbmFsCisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJ
dGVtJikgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5
YTY4Y2ZiMTg4NWQ0ZWIxMTAuLmMzYjVkM2U4ZDdjMDNiMWEzNjVkZDUzNWEwYjI5YWRlMjdhY2Vj
YTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9T
aGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nv
Y29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ1LDE5ICs0NSwyMCBAQCBzdGF0aWMgdm9pZCBleHBl
Y3REYXRhQXJyYXlzRXF1YWwoTlNBcnJheTxOU0RhdGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5PE5T
RGF0YSAqPgogICAgIH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0
YUFycmF5KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFB
cnJheSkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmls
LCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuZW1wdHkoKTsKKyAgICAgICAgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXko
KS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRo
Qnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBj
aGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwotICAgICAgICBleHBlY3RE
YXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXko
KS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEu
Ynl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwo
QFsgaGVsbG9EYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3
b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRh
UmVmKXdvcmxkRGF0YSk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0Rh
dGEsIHdvcmxkRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAg
ICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWls
ZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBleHBlY3RE
YXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxv
RGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgICAgICBleHBlY3REYXRhQXJy
YXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBD
RkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CkBAIC02Niwz
NSArNjcsMzUgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQog
ICAgIH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUZvckRhdGFT
ZWdtZW50KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFG
b3JEYXRhU2VnbWVudCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXI7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25z
dCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBidWls
ZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3Ro
KTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoi
d29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0
YVJlZil3b3JsZERhdGEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRh
UmVmKXdvcmxkRGF0YSk7CiAKICAgICAgICAgTlNBcnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVs
bG9EYXRhLCB3b3JsZERhdGEgXTsKICAgICAgICAgTlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBo
ZWxsb0RhdGEubGVuZ3RoICsgd29ybGREYXRhLmxlbmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2Vy
IHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5n
ZXQoKSkKKyAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAg
ICAgICAgICBFWFBFQ1RfVFJVRShbc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0Vx
dWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNU
X0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAogICAgICAgICBOU1VJbnRl
Z2VyIHBvc2l0aW9uID0gMDsKICAgICAgICAgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgd2hp
bGUgKGJ1ZmZlci0+c2l6ZSgpID4gcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVt
ZW50YWxEYXRhID0gYnVmZmVyLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxl
IChidWlsZGVyLnNpemUoKSA+IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvIGluY3JlbWVu
dGFsRGF0YSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAg
ICAgIEVYUEVDVF9UUlVFKFtpbmNyZW1lbnRhbERhdGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRv
RGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlv
biArPSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9F
UShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0
Qnl0ZSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1
dG8gbGFzdEJ5dGUgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAx
KTsKICAgICAgICAgRVhQRUNUX1RSVUUoW2xhc3RCeXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxU
b0RhdGE6W0AiZCIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwog
ICAgICAgICBFWFBFQ1RfRVEoMUxVLCBsYXN0Qnl0ZS5zaXplKCkpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKaW5kZXggNDZjNzYyMDNlMWIy
NWFhYWI3YTAyZTBiYjJiZjVlMGM0MzZlZDY4Ny4uNWJlNjY1OTQ2MTM3MzFlMjFlZDk3ZGE3NGM1
NzM4YzdjYTI4NWJmNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdl
YkNvcmVTdHVicy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVT
dHVicy5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVm
ZmVyLmg+CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9C
dWZmZXIoY29uc3QgY2hhciopCitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKikKIHsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9y
bWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODkyMzkyZDg3Zjc0MDBlYmZhOThmNWE4NjUzYzlm
ZDRlMjc1NWY1OS4uNzA4MGE2Y2Y3YTZkMjIwMGFlMzAzYzIyY2U3MzExOTEwZGRhYTFmMiAxMDA2
NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5h
cmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hh
cmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmls
aXR5OiBwYXJ0IDMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogRGVjb2RlclRlc3QvRGVjb2RlclRlc3QvbWFpbi5tbToKKyAgICAgICAgKG1haW4pOgor
CiAyMDIxLTExLTIxICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbUGVyZm9ybWFuY2UgdGVzdF1bY3NzLWNvbnRhaW5dIEFkZCBjYXNlIHRvIHRlc3QgY29u
dGFpbjogbGF5b3V0IGluc2lkZSBhIGNvbXBsZXggZG9jdW1lbnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445849</attachid>
            <date>2021-12-03 07:23:32 -0800</date>
            <delta_ts>2021-12-03 07:25:33 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-233677-20211204022328.patch</filename>
            <type>text/plain</type>
            <size>807501</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NDU3MTFkMDYzOTg2NGIyMzgzZGM1YmIwMjkxMzQ1NTRhNzZmMmQ4Li4xOTAxZGFlNWY1OGVkZGZi
NjI1NjQxY2VlMDcyMjFlNjUwYjFiODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9u
LWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9BcnJh
eUJ1ZmZlci5oOgorCiAyMDIxLTEyLTAyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0pTQ10gc2hlbGwncyAkLmdsb2JhbE9iamVjdEZvciBpcyBub3Qgc2Fm
ZSBmb3Igbm9uIG9iamVjdCBjZWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDkzZDBjOGQ4ODkwODEwMGIwMjgx
YTA1OTNlYThhNGMxM2FhNTA3NDIuLjA1MjVjNGU3MWRiZWZiZjU2MTg5NzMzYWY5ZmE1NWYwZTc1
OTMzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzA4IEBACisyMDIxLTEyLTAyICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGln
dW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBp
bW11dGFiaWxpdHk6IHBhcnQgMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzNjc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6Omludm9rZUNv
bXBsZXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBi
b2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6
cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzYW5pdGl6ZUluaXREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkNETTo6c3VwcG9ydHNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE06OnNhbml0
aXplUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmg6Cisg
ICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtl
eWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJv
eGVzRnJvbUNlbmMpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFj
dEtleUlEc0NlbmMpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6c2FuaXRp
emVDZW5jKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplV2ViTSk6CisgICAgICAgIChXZWJD
b3JlOjpleHRyYWN0S2V5SURzV2ViTSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJlZ2lz
dHJ5OjpzYW5pdGl6ZUluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhUmVnaXN0
cnk6OmV4dHJhY3RLZXlJRHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5p
dERhdGFSZWdpc3RyeS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJh
dGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmtleUlkc01h
dGNoKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFw
Lmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlzOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2
ZWQpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmg6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRh
IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjpzdGFydFN0cmVhbWluZyk6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVy
OjpzdGFydFN0cmVhbWluZyk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
Lmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpBcHBIaWdobGlnaHQ6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhp
Z2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdo
dFJhbmdlRGF0YTo6dG9TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxp
Z2h0U3RvcmFnZTo6cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KToKKyAgICAgICAgKiBN
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmg6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRGF0YUF2YWlsYWJsZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0
YWRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlG
aW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbCk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlclRpbWVyRmlyZWQp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmg6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpzZW5kU3RyaW5n
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnNl
bmRSYXdEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybUZyYW1lKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyOjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyOjpPbk1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlZ2lz
dGVyQXR0YWNobWVudElkZW50aWZpZXIpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6Cisg
ICAgICAgICogZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmg6CisgICAgICAgICogZWRpdGluZy9X
ZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29y
ZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBlZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRN
TENvbnZlcnRlci5tbToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9XZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3RyaW5n
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUpOgorICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1h
cmt1cFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dFJlYWRlcjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJl
YWRlcjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVh
ZFJURik6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRG
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjphdHRhY2htZW50Rm9yRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJD
b250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcik6CisgICAgICAgICogZWRpdGluZy9ndGsvV2Vi
Q29udGVudFJlYWRlckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVy
OjpyZWFkSW1hZ2UpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5oOgorICAgICAgICAqIGZpbGVh
cGkvTmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU2VuZFF1
ZXVlOjplbnF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTZW5kUXVldWU6OnByb2Nl
c3NNZXNzYWdlcyk6CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmg6CisgICAg
ICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKToKKyAg
ICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpj
ZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKToKKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKToKKyAg
ICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
b2N1bWVudDo6dXBkYXRlRHVyaW5nUGFyc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURv
Y3VtZW50OjpmaW5pc2hlZFBhcnNpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZUltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJl
c3BvbnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmJ1ZmZl
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3Vy
Y2VEYXRhOjpzZXRCdWZmZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6aW50ZXJjZXB0UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29y
a0FnZW50OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2U6OlBl
bmRpbmdJbnRlcmNlcHRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OlBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZTo6cmVzcG9uZCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpo
YW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJj
ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNv
dXJjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5p
c2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbik6CisgICAgICAgICogbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwpOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Mb2Fk
ZXJTdHJhdGVneS5oOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcik6
CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oOgorICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6bG9hZERhdGFVUkwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXI6OmFkZERhdGFPckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6
cmVzb3VyY2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAq
IGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRl
RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlN1YnN0aXR1dGVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpjb250ZW50IGNvbnN0KToKKyAg
ICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpT
dWJzdGl0dXRlUmVzb3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3Rp
dHV0ZVJlc291cmNlOjpTdWJzdGl0dXRlUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UpOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGly
ZWN0b3J5KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjphcmNoaXZlRmFjdG9yeUNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cmNoaXZlRmFjdG9yeTo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
RmFjdG9yeS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgICogbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
aDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TUhUTUxBcmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YSk6CisgICAgICAgICogbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxBcmNoaXZlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6Ok1IVE1MUGFy
c2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRl
QnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRl
ZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBk
YXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlOjpkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFj
azo6ZG9VcGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjp1
cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZp
ZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2
aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNlKToKKyAgICAgICAgKiBwYWdlL0VkaXRv
ckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAoV2ViQ29yZTo6
UGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
cHlQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6
OndyaXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVh
ZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0
cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZv
cm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVy
dGVyOjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVy
dGVyOjphcHBlbmRGcm9tQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0
ZXI6OmRlbGVnYXRlRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50Lmg6
CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNv
bWJpbmVTZWdtZW50c0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnNpemUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNv
cHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9y
RWFjaFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6c3RhcnRzV2l0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpyZWFkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNvcHlUbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5v
dE5lZWRlZFNvb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3IhPSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVpbGRl
cik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpnZXQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Y29weSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1N0
YXRpY1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RhdGljUGFzdGVib2FyZDo6
d3JpdGVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5vd1BsYXlpbmdJbmZvQXJ0d29yazo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0ZpbGVSZWFkZXI6OmRlbXV4V2ViTURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2Nm
L1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50Rmls
dGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
cjo6cmVwbGFjZW1lbnREYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0
ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VElGRlRvUE5HKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleVN0b3JlOjpjb252
ZXJ0VG9KU0tleVN0YXR1c1ZlY3RvciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNUHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OktleUhhbmRsZTo6aWRBc1No
YXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
VXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVV0aWxpdGllczo6cGFyc2VKU09O
T2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0lu
aXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmlzQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJp
dmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxp
Y2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJl
bW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpz
ZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2U6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRhdGEgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6c2V0U2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6SW1hZ2VCYWNraW5nU3RvcmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VE
ZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OnJlc2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6OmRh
dGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJp
dmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKToKKyAgICAgICAgKFdlYkNvcmU6
OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNr
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJh
Y3RLZXlJRHNTa2QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFt
aW5nOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemF0aW9uRGF0YUZvclJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4
cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25Gb3JLZXlJRHMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6a2V5SURzRm9yUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVl
c3RMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzRXF1YWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNl
bnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjbG9zZVNlc3Npb24pOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1v
dmVTZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlk
ZVJlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVj
b2RlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNv
ZGVyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpzZXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjphdHRlbXB0VG9EZWNyeXB0V2l0aElu
c3RhbmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzaGFyZWRCdWZmZXJSZWxlYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
ckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6
c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6c2l6
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6
OnJlYWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdt
ZW50Ojp0YWtlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlcjo6U2VnbWVudDo6Z2V0U2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjphcHBlbmQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyV3JpdGluZ0Ns
aWVudDo6ZW5jb2RlSXRlbU91dE9mTGluZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnJlbGVhc2VDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q3VzdG9tUGxhdGZvcm1EYXRhOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJT
b3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGll
bnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9DRE1Qcm94eUNsZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVU
aHVuZGVyOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVBy
aXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRl
cik6CisgICAgICAgIChXZWJDb3JlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2U6OlBhcnNlZFJlc3Bv
bnNlTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2U6OnBh
eWxvYWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpw
YXlsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmNo
YWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVk
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVy
RU1FVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6SW5pdERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2Fk
SW1hZ2VGcm9tR1Jlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9J
bWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJj
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRp
ZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRp
ZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJl
Y3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJE
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QVZJRkltYWdlUmVhZGVyOjpkZWNvZGVGcmFtZSk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Qk1Q
SW1hZ2VSZWFkZXI6OnJlYWRVaW50MTYpOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFk
ZXI6OnJlYWRVaW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OnNldERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2lu
Z1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3RvcmU6Omlt
YWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRl
ci5oOgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklDT0lt
YWdlRGVjb2Rlcjo6c2V0RGF0YUZvclBOR0RlY29kZXJBdEluZGV4KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpQRUdJbWFnZVJlYWRlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKUEVHMjAwMEltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBOR0ltYWdlUmVhZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
RUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldFQlBJbWFnZURl
Y29kZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9X
RUJQSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRl
bnREYXRhRm9yVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYXRp
b25MaXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbToK
KyAgICAgICAgKC1bV2ViUHJldmlld0NvbnZlcnRlckRlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVj
ZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjp3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0
YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVBhc3RlYm9hcmRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRl
clByaXZhdGVNb2NrOjpmZXRjaERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRj
aERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRh
a2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFS
ZWNlaXZlZCk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJj
ZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
YWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpyZWFkQ2Fj
aGVkRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUNhbGxiYWNrKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZl
QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VI
YW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpoYW5kbGVE
YXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50
OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW06CisgICAgICAgICgt
W1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSBjb25uZWN0aW9u
OmRpZFJlY2VpdmVEYXRhOmxlbmd0aFJlY2VpdmVkOl0pOgorICAgICAgICAqIHBsYXRmb3JtL3Bv
c2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSW1h
Z2VGaWxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxIRHJvcENvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVJbWFnZVRvRGF0YU9iamVj
dCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRCk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZSk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Np
b25EYXRhKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5Lmg6CisgICAgICAgICog
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29u
dGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyLmg6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjplbXB0eSk6CisgICAgICAgICogd29ya2Vy
cy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6U2NyaXB0
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoOjpwcm9jZXNzUmVzcG9uc2UpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRl
ciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbWlsYXIgdG8gU3RyaW5nQnVpbGRlciwgYSBTaGFy
ZWRCdWZmZXIgY2FuIG5vdyBvbmx5IGJlIG1vZGlmaWVkIHRocm91Z2gKKyAgICAgICAgYSBTaGFy
ZWRCdWZmZXJCdWlsZGVyLiBBIFNoYXJlZEJ1ZmZlciBiZWNvbWVzIGltbXV0YWJsZSBvbmNlIGNy
ZWF0ZWQuCisKKyAgICAgICAgRmx5LUJ5OiBQYXNzIFNoYXJlZEJ1ZmZlciB2aWEgY29uc3QgcmVm
ZXJlbmNlcyBvciBwb2ludGVycyB3aGVyZSBpdCdzIGVhc3kKKyAgICAgICAgdG8gZG8gc28uCisg
ICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91cjsgY292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpET01D
YWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpjbGVhbik6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eUNvbnN1bWVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFz
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c0Jsb2IpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZSk6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbW9k
ZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
b2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxF
bGVtZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVu
dDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURh
dGE6OlJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzQnVmZmVyZWREYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
OjpyZXNvdXJjZURhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0
dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmNsZWFyKToKKyAgICAgICAg
KFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAg
ICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVT
aGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJu
YWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRl
ZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGlu
Zyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50Lmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRT
Y3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6
ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hl
ZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVz
b3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRv
Q2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6YXBwZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNOdWxsIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyOjplbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXJCdWlsZGVyOjpnZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVp
bGRlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
Ojp0YWtlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVuc3VyZUJ1
ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6SW5pdERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0
RGF0YTo6cGF5bG9hZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRJQ0NQcm9m
aWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3Iu
bW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhOjpEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25z
ZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VS
ZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEpOgorICAgICAg
ICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcjo6U2NyaXB0QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6dG9T
dHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpjb250YWluc1Np
bmdsZUZpbGVNYXBwZWRTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpidWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVl
c3Q6OldvcmtlckZvbnRMb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250
TG9hZFJlcXVlc3Q6OmlzUGVuZGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJG
b250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0Lmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdCk6
CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKToK
KyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVm
ZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGln
dW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBp
bW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGNhbGxpbmcgU2hhcmVkQnVmZmVyOjpk
YXRhKCkgdGhlIHVuZGVybHlpbmcgZGF0YSB3YXMgZmxhdHRlbmVkLAorICAgICAgICBhbmQgc28g
Y291bGQgYmUgbXV0YXRlZCB3aGlsZSBiZWluZyBzaGFyZWQuIFRoaXMgd2FzIGFuIHVuZGVzaXJh
YmxlCisgICAgICAgIGJlaGF2aW91ci4KKyAgICAgICAgV2UgaW50cm9kdWNlIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIgd2hpY2ggZ3VhcmFudGVlIHRoYXQgaXRzIGNvbnRlbnQgaXMgbWFkZQorICAg
ICAgICBvZiBjb250aWd1b3VzIGRhdGEuCisgICAgICAgIEFsbCBtZXRob2RzIHRoYXQgd291bGQg
aGF2ZSBtdXRhdGVkIGEgU2hhcmVkQnVmZmVyIHdoZW4gYmVpbmcgZmxhdHRlbmVkIGFyZQorICAg
ICAgICBtb3ZlZCB0byBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorCisgICAgICAgIEFyZWEgd2hl
cmUgU2hhcmVkQnVmZmVycyB3ZXJlIGFsd2F5cyBjcmVhdGVkIHdpdGggYSBzaW5nbGUgc2VnbWVu
dCB3aGVyZQorICAgICAgICBjb252ZXJ0ZWQgdG8gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgor
ICAgICAgICBQcmV2aW91c2x5LCBhIFNoYXJlZEJ1ZmZlciB3b3VsZCBoYXZlIGJlZW4gZmxhdHRl
bmVkIG9ubHkgaWYgaXQgbmVlZGVkIHRvIGJlCisgICAgICAgIGFuZCBvbmx5IHdoZW4gdGhlIGRh
dGEgd2FzIGdvaW5nIHRvIGJlIGFjY2Vzc2VkOyBmb2xsb3dpbmcgdGhpcyBjaGFuZ2UKKyAgICAg
ICAgdGhlIGNvbnZlcnNpb24gaXMgbm93IGV4cGxpY3RseSBkb25lIHRocm91Z2ggYSBjYWxsIHRv
IG1ha2VDb250aWd1b3VzLgorICAgICAgICBUaGlzIGNvbnZlcnNpb24gaXMgYSBuby1vcCBpZiB0
aGUgU2hhcmVkQnVmZmVyIGJlaW5nIGNvbnZlcnRlZCB3YXMgYWxyZWFkeQorICAgICAgICBhIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisgICAgICAgIFdpdGggdGhlIG5hdHVyZSBvZiBhIFNoYXJl
ZEJ1ZmZlciBiZWluZyBzaGFyZWQgYnkgcG90ZW50aWFsbHkgbXVsdGlwbGUKKyAgICAgICAgdXNl
cnMgaXQgd2FzIG5lY2Vzc2FyeSB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIGNvbnZlcnNpb25zIGJl
aW5nIHBlcmZvcm1lZAorICAgICAgICBvbiBkZW1hbmQgdG8gYXZvaWQgcmVkdW5kYW5jeS4KKyAg
ICAgICAgV2hlbiB0aGUgZmxhdHRlbmluZyBjb3VsZCBoYXZlIG9jY3VyZWQsIHRoZSBTaGFyZWRC
dWZmZXIgY3JlYXRpb24gcG9pbnRzIHdlcmUKKyAgICAgICAgdHJhY2VkIGJhY2sgYW5kIGlkZW50
aWZpZWQgdG8gbWFrZSB0aGUgYnVmZmVyIGNvbnRpZ3VvdXMgdGhlbi4KKyAgICAgICAgSW4gdGhl
IGVuZCwgdGhlcmUncyBubyBtb3JlIFNoYXJlZEJ1ZmZlciBmbGF0dGVuaW5nIG9wZXJhdGlvbnMg
dGhhbiB0aGVyZQorICAgICAgICB3b3VsZCBoYXZlIGJlZW4gYmVmb3JlIHRoaXMgY2hhbmdlLgor
ICAgICAgICBUaGVyZSdzIGEgcG90ZW50aWFsIGluY3JlYXNlIG9mIHRlbXBvcmFyeSBtZW1vcnkg
dXNhZ2Ugd2l0aCB0aGUKKyAgICAgICAgU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIgY2xhc3M7
IGJ1ZyAyMzM1MTEgaXMgdHJhY2tpbmcgaXQuCisKKyAgICAgICAgV2hpbGUgdGhlIGNoYW5nZSBp
cyBleHRlbnNpdmUsIGNvZGUgY292ZXJhZ2Ugb2YgdGhlIG1vZGlmaWVkIGFyZWFzIGlzIHRob3Jv
dWdoCisgICAgICAgIHdoaWNoIG1ha2VzIHVuZGV0ZWN0ZWQgcmVncmVzc2lvbnMgdW5saWtlbHku
CisKKyAgICAgICAgSW4gYnVnIDIzMzQ0MiwgYSBTaGFyZWRCdWZmZXIgd2lsbCBiZSBtYWRlIGNv
bXBsZXRlbHkgaW1tdXRhYmxlIG9uY2UgY3JlYXRlZC4KKworICAgICAgICBObyBvYnNlcnZhYmxl
IGNoYW5nZS4KKyAgICAgICAgQ292ZXJlZCBieSBhbGwgZXhpc3RpbmcgdGVzdHMuIE5ldyBBUEkg
dGVzdHMgY3JlYXRkZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5p
dGl6ZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9z
L0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJk
SW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hl
L0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxCb2R5U2l6ZSk6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjppc29sYXRlZFJlc3BvbnNlQm9keSk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Y29weVJlc3BvbnNlQm9keSk6CisgICAg
ICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oOgorICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5SURzS2V5aWRzKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplS2V5aWRzKToK
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmtleUlkc01hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
S2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6bmV4dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OnRha2UpOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCk6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayk6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YSk6CisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHQ6OmVuY29kZSBjb25z
dCk6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OnNlcmlhbGl6ZUlEQktleURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJpYWxpemF0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNy
ZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4
aXN0c0luT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldElu
ZGV4UmVjb3JkRm9yT25lS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpnZXRDb3VudCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElm
TmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQpOgorICAgICAgICAqIE1v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVz
L21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVSZXNwb25z
ZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJT
b3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1l
bnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQpOgorICAgICAgICAqIGVkaXRpbmcvY29j
b2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2ht
ZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvclVSTCk6CisgICAgICAgIChm
aWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVu
dFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0
aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RNYXJrdXBBbmRBcmNoaXZl
KToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50
TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgor
ICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGly
ZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNv
bnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxv
YWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodCk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KToKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAg
KiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseSk6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSk6CisgICAgICAgICogbG9hZGVyL2Fy
Y2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0
UGFydCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6c2hlZXRUZXh0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
Rm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9u
dDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6
Y2hlY2tOb3RpZnkpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
Zyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6OnJlc291cmNlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9j
dW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdG
b250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZv
bnREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
VGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZG9VcGRh
dGVCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6RGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21D
RlVSTENhY2hlZFJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6
OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZCk6CisgICAgICAgICogcGFnZS9FZGl0b3JDbGllbnQu
aDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNl
clN0eWxlU2hlZXQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKToKKyAg
ICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEu
aDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tl
eWVkQ29kaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAq
IHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRl
ckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3Vv
dXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpzaXplIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzQ29udGlndW91cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpoYXNP
bmVTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OnV0ZjhCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6RGF0YVNlZ21lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRp
YVNlc3Npb25NYW5hZ2VyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9L
ZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJDRjo6Zmlu
aXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VElGRlRvUE5H
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNl
Y3VyaXR5Q2hlY2spOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29h
Lm1tOgorICAgICAgICAoLVtXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBpbml0V2l0aERhdGFTZWdt
ZW50OnBvc2l0aW9uOnNpemU6XSk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4
dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFj
dEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXll
ZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVy
aWM6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5j
b2RlckdlbmVyaWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2Rpbmcp
OgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnQ6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpNb2RlbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQz
Mik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVUludDE2KToKKyAgICAgICAgKFdlYkNvcmU6Omlz
V09GRik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V09GRlRvU2ZudCk6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpleHRyYWN0U2luZkRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6cGFyc2VKU09OVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMp
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6
YXBwZW5kRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1
bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZv
cm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1h
cHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om1hcmt1cFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OmV4dHJhY3RD
ZW5jSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6SW5p
dERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1
bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRo
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEl0YWxpY3NDb3JyZWN0
aW9uSW5mbzo6Z2V0SXRhbGljQ29ycmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpP
cGVuVHlwZTo6TWF0aEdseXBoSW5mbzo6bWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R2x5cGhBc3NlbWJseTo6Z2V0QXNzZW1ibHlQ
YXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3Ry
dWN0aW9uOjpnZXRTaXplVmFyaWFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aFZhcmlhbnRzOjptYXRoR2x5cGhDb25zdHJ1Y3Rp
b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aENv
bnN0YW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjpt
YXRoR2x5cGhJbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFi
bGU6Om1hdGhWYXJpYW50cyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjp2YWxp
ZGF0ZVRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OmlzVmFs
aWRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVQ
dHIpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVPZmZz
ZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlV2l0aENvdmVyYWdl
OjpnZXRDb3ZlcmFnZUluZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVG
b250KToKKyAgICAgICAgKFdlYkNvcmU6OnJlbmFtZUFuZEFjdGl2YXRlRm9udCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U3Vic3RpdHV0aW9uU3ViVGFibGU6OmNvdmVy
YWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMb29rdXBUYWJsZTo6Z2V0
U3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3Vw
TGlzdDo6bG9va3VwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJl
VGFibGU6OmdldEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpP
cGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmaW5kRmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6TGFuZ1N5c1RhYmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRUYWJsZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OnNjcmlwdCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6ZGVmYXVsdFNjcmlwdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6ZGVmYXVsdExhbmdTeXMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6c2NyaXB0TGlz
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpmZWF0dXJl
TGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpsb29r
dXBMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmRl
ZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6OmZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJs
ZTo6Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6bG9hZEhtdHhUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0
YTo6bG9hZE1ldHJpY3MpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERhdGE6
OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uRGF0YTo6c2V0Q3VzdG9tRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rp
b25EYXRhOjpjdXN0b21EYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFk
SUNDUHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQ
cm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRX
cml0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3Ry
YXRpb25MaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1
ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpmaWxlV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQnVm
ZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6
cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW06CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVBhc3RlYm9hcmRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlciBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAg
KC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpwcm9jZXNzQ29udGVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpj
dXJsRGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKiB0
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnNh
bml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNl
OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFu
Y2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckZldGNoOjpwcm9jZXNzUmVzcG9uc2UpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFn
ZTo6cmV0cmlldmUpOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJGdW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuRnVuYyk6
CisKIDIwMjEtMTItMDMgIEFsaWNpYSBCb3lhIEdhcmPDrWEgIDxhYm95YUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtNU0VdIEZpeCBlcmFzZSByYW5nZSB0byBwcmV2ZW50IGFjY2lkZW50YWwgZGVs
ZXRpb24gaW4gZmlsZXMgd2l0aCBjaGFuZ2luZyBkdXJhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTZlYTFl
NDBiYjRiNzE2MzU3NTE0NDU5ZWJiZmNkMGRjNDg1ZjI4ZS4uNjMyMDkwYjJiY2FmYTcwYmU5OWFl
YTFjMjUxZmY3ZWM1NzI3ZTljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MTcgQEAKKzIwMjEtMTIt
MDIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5n
dWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQg
Z3VhcmFudGVlIGltbXV0YWJpbGl0eTogcGFydCAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OnVu
cmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVtb3ZlU2Vzc2lvbkRh
dGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2Vu
ZE1lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzSW5pdERhdGEp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZSk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y3JlYXRlRGVjb2Rlcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXREYXRhKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0Ojpjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrQmxvYi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Js
b2I6OmNvbnN1bWVEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hy
b25vdXNSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzZW5kQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFz
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVy
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
Q2FjaGU6Om1ha2VFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6
OnN0b3JlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OkVudHJ5KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6aW5pdGlhbGl6ZUJ1ZmZlckZyb21TdG9yYWdlUmVj
b3JkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6YnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRy
eS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVM
b2FkOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9QcmVmZXRjaENhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJlZmV0Y2hDYWNoZTo6
RW50cnk6OkVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6UHJlZmV0Y2hDYWNoZTo6c3RvcmUpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaDoKKyAgICAgICAg
KFdlYktpdDo6UHJlZmV0Y2hDYWNoZTo6RW50cnk6OnJlbGVhc2VCdWZmZXIpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKC1b
V0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURh
dGE6XSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2Vp
dmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNr
Q3VybC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJUEM6
OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVm
ZmVyQ29weSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5oOgorICAgICAgICAqIFNoYXJlZC9BUElXZWJBcmNoaXZlLm1tOgorICAgICAgICAo
QVBJOjpXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKToKKyAgICAgICAgKiBTaGFyZWQvQVBJV2ViQXJj
aGl2ZVJlc291cmNlLm1tOgorICAgICAgICAoQVBJOjpXZWJBcmNoaXZlUmVzb3VyY2U6OldlYkFy
Y2hpdmVSZXNvdXJjZSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpG
b250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZVNoYXJlZEJ1ZmZlcik6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZW5j
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmVuY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpN
ZXNzYWdlPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdERhdGE6OldlYkhpdFRlc3RSZXN1bHREYXRhKToKKyAg
ICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZW5jb2RlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjplbmNs
b3NpbmdJbWFnZURhdGEgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNo
bWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAg
ICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNo
bWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURh
dGEgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVUYXNr
Lm1tOgorICAgICAgICAoLVtXS1VSTFNjaGVtZVRhc2tJbXBsIGRpZFJlY2VpdmVEYXRhOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTCk6CisgICAgICAgIChXZWJL
aXQ6Okljb25EYXRhYmFzZTo6c2V0SWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcDoKKyAgICAgICAgKHdlYmtpdFVS
SVNjaGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L0Ryb3BUYXJnZXRHdGs0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6YWNjZXB0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6
TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNl
bmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQ
cm90b2NvbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JQcm90
b2NvbEhhbmRsZXI6OnBsYXRmb3JtU3RhcnRUYXNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5z
cGVjdG9yL3dpbi9JbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXI6OnBsYXRmb3JtU3Rh
cnRUYXNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlw
Ym9hcmRHdGszLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVhZEJ1ZmZlckFzeW5jRGF0YTo6UmVh
ZEJ1ZmZlckFzeW5jRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkNsaXBib2FyZDo6cmVhZEJ1ZmZl
cik6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVhZEJ1ZmZlckFzeW5jRGF0YTo6UmVhZEJ1ZmZlckFzeW5jRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OkNsaXBib2FyZDo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRQcm9t
aXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9y
SW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c3VwcG9ydHNJbml0RGF0YSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RGF0YSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0
ZUltYWdlRGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRk1h
bmFnZXI6OnNldFVzZUdQVVByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29u
dmVydFRvU2hhcmVkQnVmZmVyQ29weSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UmVjb3JkZXJQcml2YXRlOjpmZXRjaERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oOgorICAgICAg
ICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVx
dWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJj
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2Up
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6YWRkQXJjaGl2ZVJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1
Z2luOjpsaXZlUmVzb3VyY2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2lu
Ojp3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVy
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25zdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjps
b2FkRGF0YUluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkRGF0YUltcGwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmxvYWRBbHRlcm5hdGVIVE1MKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
bG9hZFNpbXVsYXRlZFJlcXVlc3RBbmRSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6cmVzb3Vy
Y2VEYXRhRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZXNvdXJjZURh
dGFGcm9tRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNp
b25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0
dHJpYnV0ZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwOgorICAgICAgICAobG9h
ZFJlc291cmNlSW50b0J1ZmZlcik6CisKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisg
ICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtM
b2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmJ1ZmZlcmluZ1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZl
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6
OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2No
ZW1lVGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3
OjpQbHVnaW5WaWV3KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERp
ZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFt
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZhaWwpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuaDoKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgor
CisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNv
bnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1
MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpzZW5k
UmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmVuY29kZSk6CisgICAg
ICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmRlY29kZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQgY29uc3QpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJUEM6OlNo
YXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVy
Q29weSk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAgICAg
IChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZv
cm0vU2hhcmVkTWVtb3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVh
dGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5o
OgorICAgICAgICAqIFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAgICAgIChB
UEk6OldlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dl
YkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVh
YmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6d3Jh
cEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6Okhh
bmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hh
cmVhYmxlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcDoKKyAgICAgICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKElQQzo6
ZW5jb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQQzo6ZGVjb2RlVHlwZXNBbmREYXRhKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5j
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3Jk
Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6RW50cnk+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVj
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1lbnRD
b2RlcnNHdGsuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2lu
LmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0
Zm9ybURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHA6Cisg
ICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBj
b25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVw
cmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAg
ICAgICAoQVBJOjpnZXREYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0
dGFjaG1lbnRDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBk
YXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc3RvcmVBcHBIaWdo
bGlnaHQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0
YUZvckltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnByb3ZpZGVEYXRhRm9y
UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlz
ZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hl
bWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OndpdGhTZW5k
ZXI6XSk6CisgICAgICAgIChhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdpbik6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2hhcmVFbGVtZW50
V2l0aEltYWdlOnJlY3Q6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1
bmRsZUVkaXRvckNsaWVudC5oOgorICAgICAgICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9y
Q2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIgX3NldEVkaXRpbmdEZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OnJlbGVhc2VTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRl
RmlsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
Q2FjaGVSZXNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFz
dGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50
OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFn
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRE
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbiBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRi
eSBjb25zdCk6CisKIDIwMjEtMTItMDMgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgRGVyaXZlZFNvdXJjZXMvV2ViS2l0MiB0byBEZXJp
dmVkU291cmNlcy9XZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggZDc3NmU4MmRmMTMyY2Fm
NjUyNzkzYTc5YTAwODNhZDY1NTlkYzI2NS4uNDNhMTgwNGQ1MGRmOTI3MzM2ZTNmNWQ1ODNhMTY4
OTNlNDFiYTA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0x
Mi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rp
bmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFu
ZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oOgor
CiAyMDIxLTExLTEyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBN
YWtlIHNvcnQtWGNvZGUtcHJvamVjdC1maWxlIGlkZW1wb3RlbnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwppbmRleCA3NmFhNmFhZjg0ZGViMDgyZTRjODQzMjI0OTMzODBkODMzZGU5MmQxLi40
MjEzYjQ3M2E4ZjQ5MjU3MDI2YmIzNTlhMDg4MDE5NzVmNWIzN2UyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjEtMTItMDIgIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNo
YXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJp
bGl0eTogcGFydCAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzM2NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y3JlYXRlUHJldmlld0xvYWRlckNsaWVudCk6CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbnMpOgorICAgICAgICAoV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24pOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAgICogV2ViVmlldy9XZWJBcmNoaXZlLm1t
OgorICAgICAgICAoLVtXZWJBcmNoaXZlIGluaXRXaXRoRGF0YTpdKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0YV0pOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9sb2Fk
RGF0YTpNSU1FVHlwZTp0ZXh0RW5jb2RpbmdOYW1lOmJhc2VVUkw6dW5yZWFjaGFibGVVUkw6XSk6
CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJl
TWVudUl0ZW0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgt
W1dlYlJlc291cmNlIGluaXRXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIF9p
bml0V2l0aERhdGE6VVJMOk1JTUVUeXBlOnRleHRFbmNvZGluZ05hbWU6ZnJhbWVOYW1lOnJlc3Bv
bnNlOmNvcHlEYXRhOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToK
KworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAg
ICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3Vv
dXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00v
RE9NVUlLaXRFeHRlbnNpb25zLm1tOgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRh
dGFSZXByZXNlbnRhdGlvbjpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06Cisg
ICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
RGF0YVNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAg
ICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxS
ZXByZXNlbnRhdGlvbiBkb2N1bWVudFNvdXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRN
TFZpZXcubW06CisgICAgICAgIChjcmVhdGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlJlc291cmNlLm1tOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29k
ZXI6XSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVz
b3VyY2UgX3N0cmluZ1ZhbHVlXSk6CisKIDIwMjEtMTItMDIgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBIb29rIHVwIG5hdmlnYXRv
ci5ncHUucmVxdWVzdEFkYXB0ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDAy
ZTk0NmJjMWZiMGIzNTZiYjE1YWI4MzYwZTg2MTQ1NTQ3MjQ3Y2MuLmE4NTI4ZjIwYTFlZTI1NDY5
YjNhMmMxMjI3MDdkNDA1YjY2YzYxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1MiBAQAorMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20g
bm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViRnJhbWU6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYkZyYW1lOjps
b2FkUGxhaW5UZXh0U3RyaW5nKToKKyAgICAgICAgKFdlYkZyYW1lOjpsb2FkSFRNTFN0cmluZyk6
CisgICAgICAgICogV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJLaXRETEwuY3BwOgorICAgICAg
ICAobG9hZFJlc291cmNlSW50b0J1ZmZlcik6CisKKzIwMjEtMTItMDEgIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBj
bGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMz
NDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6
OmxvYWREYXRhKToKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20g
bm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRh
cjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBNZW1vcnlTdHJlYW0uY3BwOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpNZW1vcnlT
dHJlYW0pOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAg
ICogTWVtb3J5U3RyZWFtLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChX
ZWJBcmNoaXZlOjpkYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJEYXRhU291cmNlOjpkYXRhKToKKyAg
ICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZTo6Y3JlYXRlSW5z
dGFuY2UpOgorICAgICAgICAqIFdlYlJlc291cmNlLmg6CisKIDIwMjEtMTItMDIgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBNYWtlIFdlYiBMb2NrIEFQ
SSB3b3JrIGFjcm9zcyBtdWx0aXBsZSBXZWJQcm9jZXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IGVhY2NhMmMyMzNhOGE2OTM3MTU5MDgwN2Rm
ZDM2NzViMDYxNTk0MjguLmI0NjkzZjkxYzYwN2Q4ZDA3NDU5NDY0NmU4ZGM0MzcyZTliYzk5ZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMTI5
LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRy
PEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoQXJyYXlCdWZmZXImKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291
cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAKLSAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhD
bGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIuCisgICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFy
cmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkIGFuZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlci4KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFy
cmF5QnVmZmVyPiBjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRy
PEFycmF5QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywg
dW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3Bw
CmluZGV4IDMzNTRiNTJhNTBjYmIxODlmZGZhZWI3ZDgyNDgzYmUwYzQxYzNkNGUuLmRhMzM2ZTZm
NWIxNjk0ZTM3NDc2OTBjNDNkMmI1M2YzNTE4YzA5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJl
YWRlci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVBM
QVRGT1JNKENPQ09BKQogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lkIENs
aXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAppbmRleCAyYjYyNjI4NDE5YjA5Y2JiNjk1
NTIxNWIwZDVkN2Q3M2MwYjM3NDRkLi42ZTIyMDQ4Y2Y1ZmVhOWFhNjJkYWRmNDViMWYzNWM0Y2Uw
ZDdkNmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXIgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgQ2xpcGJvYXJkSW1hZ2VSZWFkZXIo
RG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQpAQCAtNDcsNyArNDcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFs
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihj
b25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAg
ICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IGQw
NzQ2ZGEyZGEyMDllMDIzMjViNWZhMjE0ZGJlZTY0YmY5YzkwNzguLmVmZjEwYjViNjVmZDgxYWQ5
YmEzMmY4MGIzZjJjZjJmOGU5OGYxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0yMTYsOCArMjE2LDggQEAgdm9pZCBDbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlOjppbnZva2VDb21wbGV0aW9uSGFuZGxlcigpCiAgICAgICAg
IGF1dG8mIGRhdGEgPSBpdGVtVHlwZUxvYWRlci0+ZGF0YSgpOwogICAgICAgICBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRhdGEpICYmICEhc3RkOjpnZXQ8U3RyaW5nPihkYXRh
KSkKICAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVTdHJpbmcodHlwZSwgc3RkOjpnZXQ8U3Ry
aW5nPihkYXRhKSk7Ci0gICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
PFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQotICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEo
dHlwZSwgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpLmNvcHlSZWYoKSk7CisgICAg
ICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PihkYXRhKSkKKyAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIHN0
ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZGF0YSkuY29weVJlZigpKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQp
OwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjY1LDkgKzI2NSw5IEBAIHZvaWQgQ2xpcGJvYXJk
SXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXpl
RGF0YUlmTmVlCiB7CiAgICAgaWYgKG1fdHlwZSA9PSAidGV4dC9odG1sIl9zKSB7CiAgICAgICAg
IFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewotICAgICAgICAgICAgYXV0byYgYnVm
ZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Ci0gICAgICAgICAgICBt
YXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKKyAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9
IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKKyAgICAgICAg
ICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBtYXJrdXBU
b1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwogCkBAIC0yNzgsOSArMjc4LDkg
QEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlw
ZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKICAgICB9CiAKICAgICBpZiAobV90eXBlID09ICJp
bWFnZS9wbmciX3MpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5p
dGl6ZTsKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZl
cj4+KG1fZGF0YSkpCi0gICAgICAgICAgICBidWZmZXJUb1Nhbml0aXplID0gc3RkOjpnZXQ8UmVm
PFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkucHRyKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplOworICAgICAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpCisgICAgICAg
ICAgICBidWZmZXJUb1Nhbml0aXplID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PihtX2RhdGEpLnB0cigpOwogICAgICAgICBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSB1dGY4
QnVmZmVyKHN0ZDo6Z2V0PFN0cmluZz4obV9kYXRhKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaAppbmRleCAyY2MyYzhlMWE1NGUxOGQ3MzQ5NWM1MzBj
ZDc3ZDU0Zjk5YTUyOWE3Li4zN2M4MjVlMjM1YThhOGI3ZTQ0ZTQwZmIwYzJkNzcyNDQwN2E3NTg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCkBAIC0z
OCw3ICszOCw3IEBAIGNsYXNzIERPTVByb21pc2U7CiBjbGFzcyBGaWxlUmVhZGVyTG9hZGVyOwog
Y2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZSA6IHB1YmxpYyBDbGlwYm9hcmRJ
dGVtRGF0YVNvdXJjZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Myw3ICs1
Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7CiAK
LSAgICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFy
ZWRCdWZmZXI+PjsKKyAgICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJp
bmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgY2xhc3MgQ2xpcGJvYXJkSXRl
bVR5cGVMb2FkZXIgOiBwdWJsaWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCwgcHVibGljIFJlZkNv
dW50ZWQ8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0
YXRpYyBSZWY8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHR5
cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9h
cmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUy
ODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi4yNzRlMDM4ZDQxODcwMTYxZTRlZWI4MGMxMmFiYmE4
NzFmOWQ0YTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBA
IC0zNCwxMCArMzQsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIp
IHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFu
Y2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAg
ICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRX
aXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9IFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFn
ZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jlc3VsdCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50
LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obnNEYXRhLmJ5dGVz
KSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVUeXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXggYjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkx
MzE3ODY5ZGE3ZTViZi4uMzgyMWIwMzcxODAyODIzZDY5YTgzMGEzMTBkYTM0NzA4ZDYzMzA3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0Ns
aXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMzMsMTAgKzMz
LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRl
cjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAg
IGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMo
W1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBjZ0ltYWdlID0gW2ltYWdl
IENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0pIHsKICAg
ICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRpb24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJl
cCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2VdKTsKICAgICAgICAgICAgIE5TRGF0YSog
bnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFw
SW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCBlNmNjMWFhZTc4M2E1MjA5NGY2NTQ5OWJiOTBkZDdm
MDA3MWQ0MjRjLi5mMDVjMjMzMDdiYzVhMGU1ODJkZGNkODYwZDViYjFhMWIzMDkzMjUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMjg5LDcgKzI4OSw3
IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBz
aXplX3QgcmVjb3JkUG9zaXRpb24gPSB0YXNrSGFuZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVjdGlv
blJlY29yZChyZXF1ZXN0LmdldCgpLCByZXNwb25zZSwgbnVsbHB0cikpOwogCi0gICAgICAgICAg
ICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZN
b3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0
YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRhc2tIYW5kbGVyLT5p
c0RvbmUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTksOSArMjk5LDkg
QEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAg
ICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwor
ICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6
ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5k
bGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRh
dGEpKTsKKyAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShy
ZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0
b3JzKCkuZmV0Y2gpOwogICAgIH0KQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIERPTUNhY2hlOjpw
dXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJl
ZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlm
IChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAg
ICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBib2R5ID0gYnVmZmVy
LT5tYWtlQ29udGlndW91cygpOwogICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCks
IHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lk
PiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2
ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CkBAIC0zNzUsNyArMzc1LDcgQEAg
dm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+
JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVjZWl2
ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5nZXQo
KTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9u
c2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHBl
bmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYg
cmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZl
ZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShy
ZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyks
IHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBpZiAocmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNl
RGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNl
KSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0zODMsOSAr
MzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNo
UmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAg
ICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAg
ICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEo
V1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShkYXRhKSB9KTsKKyAgICAgICAgICAgICAgICB0
aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVz
dCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IGRhdGEudGFrZSgp
LT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAK
aW5kZXggMjU5MTRiNDBiYjIzODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uYzBmODAzMmIw
NDUyYzM3ZWU0Y2FmYmNhZmQ3OWYwOWQyMTQ2MzMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCBSZXNw
b25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQog
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZv
cm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xh
dGVkQ29weSgpOwogICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+
IFJlc3BvbnNlQm9keSB7Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICAgICAg
cmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIFNoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFu
ZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3Qm
KSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3Bv
bnNlQm9keSB7IH07CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETS5jcHAKaW5kZXggMjg1MGRiYTFlM2JmYTExZjQ4OWI0NDQwMzUxM2Q1MWFlMWJl
YWQzYS4uOWQxYmM2NzRmYzgyNmNiNmQxNmQwMjUxMGNmODQwMTBhZGNiZDc3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAtMTM1LDE3ICsx
MzUsMTcgQEAgYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+
c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEp
CiB7CiAgICAgcmV0dXJuIEluaXREYXRhUmVnaXN0cnk6OnNoYXJlZCgpLnNhbml0aXplSW5pdERh
dGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CiB9CiAKLWJvb2wgQ0RNOjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkKK2Jvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAg
ICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEoaW5pdERh
dGFUeXBlLCBpbml0RGF0YSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRp
emVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQorUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiByZXNwb25zZSkKIHsKICAgICBpZiAoIW1fcHJpdmF0ZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0u
aAppbmRleCBkOGE0YjNhZjEyZjFhNzkyM2Q4ODcwNWQ1Yjk1ODFkMzZmMTAyNzBjLi5kN2IxZDUz
ZDA0OTFmNzI3NzliNTk0YjJkODNjMDliODNiY2YyMDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgQ0RNSW5z
dGFuY2U7CiBjbGFzcyBDRE1Qcml2YXRlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNIDogcHVibGljIFJlZkNvdW50ZWQ8Q0RNPiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPENETT4sIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIg
ewogcHVibGljOgpAQCAtNzMsMTAgKzczLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRz
U2Vzc2lvbnMoKSBjb25zdDsKICAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0
b21TdHJpbmcmKSBjb25zdDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
KTsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNs
aWVudC5oCmluZGV4IDIxZTUyZjRiNzE0ZmI5MWY2N2NmYzM5NjEzOWMxNjUyNWJmYjdiOWIuLjQx
MGVkMmZiNjQyNzU2MmNlOWJkOGVkYTRkOTFhODZiYTk4Y2FhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaApAQCAtMzYsMTQgKzM2
LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENETUluc3RhbmNlOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RN
Q2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPENETUNsaWVudD4gewogcHVibGljOgogICAg
IHZpcnR1YWwgfkNETUNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCBjZG1D
bGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNv
bnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJp
bmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4
ZDJlNDBhMzQxYTY3MDc0NDBmMmQ1Ni4uNmY4ODhlMTc4NThkZGE2ZDk0NzFlYzFmNmVmNWQwNjZk
ZjBlNDk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCkBAIC01NCwxMyArNTQsMTMgQEAgbmFtZXNw
YWNlIHsKICAgICBjb25zdCB1aW50MzJfdCBrS2V5SWRzTWF4S2V5SWRTaXplSW5CeXRlcyA9IDUx
MjsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4g
ZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0
S2V5SURzS2V5aWRzKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICAvLyAxLiBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1l
ZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKICAgICBpZiAo
YnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRh
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBq
c29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBh
cnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5
aWRzKGNvbnN0IFNoYXJlZAogICAgIGlmICgha2lkc0FycmF5KQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAg
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwogICAgIGZvciAoYXV0
byYgdmFsdWUgOiAqa2lkc0FycmF5KSB7CiAgICAgICAgIGF1dG8ga2V5SUQgPSB2YWx1ZS0+YXNT
dHJpbmcoKTsKICAgICAgICAgaWYgKCFrZXlJRCkKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlk
cyhjb25zdCBTaGFyZWQKICAgICByZXR1cm4ga2V5SURzOwogfQogCi1zdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitz
dGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyAxLiBGb3JtYXQKICAg
ICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3Ry
eS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKQEAgLTEwNCwxNCArMTA0LDE0IEBAIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
YXV0byBraWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRvJiBi
dWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1ZSgpKQotICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJp
bmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KSk7CisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmlu
ZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKICAg
ICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShraWRzQXJyYXkpKTsKIAogICAgIENT
dHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgo
KSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0
aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdFBz
c2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25h
bDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRl
ckJveD4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDQuIENvbW1vbiBTeXN0
ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2Vu
Y3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1z
eXN0ZW0KQEAgLTE1MSw5ICsxNTEsOSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaQogICAgIHJl
dHVybiBwc3NoQm94ZXM7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURz
OwogCiAgICAgYXV0byBwc3NoQm94ZXMgPSBleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoYnVmZmVy
KTsKICAgICBpZiAoIXBzc2hCb3hlcykKQEAgLTE4NSw3ICsxODUsNyBAQCBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJ
RHNDZW5jKGNvbgogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5p
dGl6ZUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8v
IDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2Vu
Yy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAgLTE5NSw3ICsxOTUsNyBAQCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0
aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplV2ViTShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gQ2hlY2sgaWYgdGhlIGJ1ZmZl
ciBpcyBhIHZhbGlkIFdlYk0gaW5pdERhdGEuCiAgICAgLy8gVGhlIFdlYk0gaW5pdERhdGEgaXMg
dGhlIENvbnRlbnRFbmNLZXlJRCwgc28gc2hvdWxkIGJlIGxlc3MgdGhhbiBrV2ViTU1heENvbnRl
bnRFbmNLZXlJRFNpemUuCkBAIC0yMDUsMTAgKzIwNSwxMCBAQCBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJl
dHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzV2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+PiBleHRyYWN0S2V5SURzV2ViTShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkQnVmZmVyID0gc2FuaXRpemVXZWJNKGJ1ZmZlcik7
CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdl
Yk0oYnVmZmVyKTsKICAgICBpZiAoIXNhbml0aXplZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIApAQCAtMjMzLDcgKzIzMyw3IEBAIEluaXREYXRhUmVnaXN0cnk6OkluaXRE
YXRhUmVnaXN0cnkoKQogCiBJbml0RGF0YVJlZ2lzdHJ5Ojp+SW5pdERhdGFSZWdpc3RyeSgpID0g
ZGVmYXVsdDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRp
emVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVn
aXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBpdGVyID0g
bV90eXBlcy5maW5kKGluaXREYXRhVHlwZSk7CiAgICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQo
KSB8fCAhaXRlci0+dmFsdWUuc2FuaXRpemVJbml0RGF0YSkKQEAgLTI0MSw3ICsyNDEsNyBAQCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYQogICAgIHJldHVybiBpdGVyLT52YWx1ZS5zYW5pdGl6ZUlu
aXREYXRhKGJ1ZmZlcik7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0
cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3R5cGVzLmZpbmQo
aW5pdERhdGFUeXBlKTsKICAgICBpZiAoaXRlciA9PSBtX3R5cGVzLmVuZCgpIHx8ICFpdGVyLT52
YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaAppbmRleCBjZDEzODdhNmJkMDM4
ZmYzNGUyY2ZiNzVmNDQzZGU3ZDk0MDMyMWIwLi43N2Q2MDRiMDhiYjdmN2UzOGJjY2IzNTQ1YjM0
YzhiMTM0MzU1ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaApAQCAtMzgsMTkgKzM4LDE5IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRl
ckJveDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIEluaXREYXRhUmVnaXN0cnkgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBJbml0RGF0YVJlZ2lzdHJ5JiBzaGFyZWQoKTsKICAgICBmcmllbmQgY2xhc3MgTmV2
ZXJEZXN0cm95ZWQ8SW5pdERhdGFSZWdpc3RyeT47CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3Qg
U2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtl
eUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKIAogICAgIHN0cnVjdCBJbml0RGF0YVR5cGVDYWxsYmFja3MgewotICAgICAg
ICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8U2hhcmVk
QnVmZmVyPihjb25zdCBTaGFyZWRCdWZmZXImKT47Ci0gICAgICAgIHVzaW5nIEV4dHJhY3RLZXlJ
RHNDYWxsYmFjayA9IEZ1bmN0aW9uPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+Pj4oY29uc3QgU2hhcmVkQnVmZmVyJik+OworICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXRE
YXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKKyAgICAgICAgdXNpbmcgRXh0cmFjdEtleUlE
c0NhbGxiYWNrID0gRnVuY3Rpb248c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+Pj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKIAogICAgICAg
ICBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgc2FuaXRpemVJbml0RGF0YTsKICAgICAgICAgRXh0
cmFjdEtleUlEc0NhbGxiYWNrIGV4dHJhY3RLZXlJRHM7CkBAIC02MSw5ICs2MSw5IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYga2V5aWRzTmFtZSgpOwogICAgIHN0YXRp
YyBjb25zdCBBdG9tU3RyaW5nJiB3ZWJtTmFtZSgpOwogCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFk
ZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwot
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJh
Y3RLZXlJRHNDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVt
U3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogcHJp
dmF0ZToKICAgICBJbml0RGF0YVJlZ2lzdHJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggOGJm
YjFjZTcwMWEyZjVhNjliNWI1MTk5MWFhODYzMmViYjg5MjVmOS4uMTQ3NzZjMjAxNTFiZmVmZTM4
MDc5YTMzNzMwYzg4NjYyNjhiYTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtMTc2LDcgKzE3
Niw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgcXVldWVUYXNrS2VlcGluZ09iamVj
dEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgaW5pdERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0
YS5kYXRhKCksIGluaXREYXRhLmxlbmd0aCgpKSwgaW5pdERhdGFUeXBlLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFi
bGUgewogICAgICAgICAvLyAxMC4xLiBJZiB0aGUgaW5pdCBkYXRhIGlzIG5vdCB2YWxpZCBmb3Ig
aW5pdERhdGFUeXBlLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJy
b3IuCiAgICAgICAgIC8vIDEwLjIuIExldCBzYW5pdGl6ZWQgaW5pdCBkYXRhIGJlIGEgdmFsaWRh
dGVkIGFuZCBzYW5pdGl6ZWQgdmVyc2lvbiBvZiBpbml0IGRhdGEuCi0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNhbml0aXplZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRp
emVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKKyAgICAgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+
c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKIAogICAgICAgICAvLyAx
MC4zLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEg
bmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIGlmICghc2FuaXRpemVkSW5pdERhdGEp
IHsKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1
ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgICAgICAg
ICAgbV9sYXRlc3REZWNyeXB0VGltZSA9IDA7CiAgICAgICAgIH0KIAotICAgICAgICBtX2luc3Rh
bmNlU2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UobV9zZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBz
YW5pdGl6ZWRJbml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBbdGhpcywgd2Vha1RoaXMsIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0g
KFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJv
b2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFs
dWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlcXVl
c3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUsIGluaXREYXRhVHlwZSwgc2FuaXRpemVkSW5pdERhdGEu
cmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVk
c0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNj
ZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6
dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+
JgogICAgIC8vIDYuIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgogICAgIHF1
ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywg
W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlc3BvbnNlID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5sZW5ndGgoKSksIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkg
bXV0YWJsZSB7CiAgICAgICAgIC8vIDYuMS4gTGV0IHNhbml0aXplZCByZXNwb25zZSBiZSBhIHZh
bGlkYXRlZCBhbmQvb3Igc2FuaXRpemVkIHZlcnNpb24gb2YgcmVzcG9uc2UgY29weS4KLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkUmVzcG9uc2UgPSBtX2ltcGxlbWVudGF0
aW9uLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3BvbnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+c2Fu
aXRpemVSZXNwb25zZShyZXNwb25zZSk7CiAKICAgICAgICAgLy8gNi4yLiBJZiB0aGUgcHJlY2Vk
aW5nIHN0ZXAgZmFpbGVkLCBvciBpZiBzYW5pdGl6ZWQgcmVzcG9uc2UgaXMgZW1wdHksIHJlamVj
dCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFz
YW5pdGl6ZWRSZXNwb25zZSB8fCBzYW5pdGl6ZWRSZXNwb25zZS0+aXNFbXB0eSgpKSB7CkBAIC02
MDEsNyArNjAxLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIC8vIDQuMy4gTGV0IG1lc3NhZ2UgdHlwZSBiZSBu
dWxsLgogCiAgICAgICAgIC8vIDQuNC4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93
aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEo
bV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5z
dGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxT
aGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVl
IHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZW1vdmVT
ZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgW3RoaXMsIHdlYWtUaGlzLCBw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmll
cildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtleXMsIHN0ZDo6b3B0
aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNl
U2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNjQ5LDcgKzY0OSw3
IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlKQogICAgIC8vIDUuIFJldHVybiBwcm9taXNlLgogfQogCi12b2lkIE1lZGlhS2V5U2Vz
c2lvbjo6ZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgY29u
c3QgU2hhcmVkQnVmZmVyJiBtZXNzYWdlKQordm9pZCBNZWRpYUtleVNlc3Npb246OmVucXVldWVN
ZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIG1lc3NhZ2UpCiB7CiAgICAgLy8gNi40LjEgUXVldWUgYSAibWVzc2FnZSIg
RXZlbnQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNxdWV1
ZS1tZXNzYWdlCkBAIC03MTYsNyArNzE2LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0
ZUtleVN0YXR1c2VzKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYgaW4KICAg
ICAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZShDRE1NZXNz
YWdlVHlwZSBtZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBN
ZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewogICAgIGVucXVldWVNZXNz
YWdlKG1lc3NhZ2VUeXBlLCBtZXNzYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDNkOTZmODgw
MmU3NDc4NDFjNGVmZGE4MWRjYjk0MWVhNmU0YTc1ZTQuLjM2NWFjZTVjMDk1ZTdkYzBjNTcxZTc2
Y2NmMmMwN2FhZmM2MmJhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtNTcsNyArNTcsNyBAQCBjbGFz
cyBDRE07CiBjbGFzcyBEZWZlcnJlZFByb21pc2U7CiBjbGFzcyBNZWRpYUtleVN0YXR1c01hcDsK
IGNsYXNzIE1lZGlhS2V5czsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21p
c2VQcm94eTsKIApAQCAtODcsMjAgKzg3LDIwIEBAIHB1YmxpYzoKICAgICB1c2luZyBDbG9zZWRQ
cm9taXNlID0gRE9NUHJvbWlzZVByb3h5PElETFVuZGVmaW5lZD47CiAgICAgQ2xvc2VkUHJvbWlz
ZSYgY2xvc2VkKCkgeyByZXR1cm4gbV9jbG9zZWRQcm9taXNlLmdldCgpOyB9CiAKLSAgICBjb25z
dCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+JiBz
dGF0dXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8
c3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiYg
c3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1c2VzOyB9CiAKICAgICB1bnNpZ25lZCBp
bnRlcm5hbEluc3RhbmNlU2Vzc2lvbk9iamVjdFJlZkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9p
bnN0YW5jZVNlc3Npb24tPnJlZkNvdW50KCk7IH0KIAogcHJpdmF0ZToKICAgICBNZWRpYUtleVNl
c3Npb24oRG9jdW1lbnQmLCBXZWFrUHRyPE1lZGlhS2V5cz4mJiwgTWVkaWFLZXlTZXNzaW9uVHlw
ZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0
YW5jZVNlc3Npb24+JiYpOwotICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdl
VHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShNZWRp
YUtleU1lc3NhZ2VUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9p
ZCB1cGRhdGVFeHBpcmF0aW9uKGRvdWJsZSk7CiAgICAgdm9pZCBzZXNzaW9uQ2xvc2VkKCk7CiAg
ICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKIAogICAgIC8vIENE
TUluc3RhbmNlU2Vzc2lvbkNsaWVudAogICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoQ0RNSW5z
dGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3ImJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdl
KSBmaW5hbDsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKICAgICB2b2lkIHNlc3Npb25JZENo
YW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxh
eUlEKCkgZmluYWw7CiAKQEAgLTE0MCwxMCArMTQwLDEwIEBAIHByaXZhdGU6CiAgICAgTWVkaWFL
ZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25UeXBlOwogICAgIFJlZjxDRE0+IG1faW1wbGVtZW50YXRp
b247CiAgICAgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4gbV9pbnN0YW5jZVNlc3Npb247Ci0gICAg
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBtX3JlY29yZE9mS2V5VXNhZ2U7CisgICAgVmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9yZWNvcmRPZktleVVzYWdlOwogICAgIGRv
dWJsZSBtX2ZpcnN0RGVjcnlwdFRpbWUgeyAwIH07CiAgICAgZG91YmxlIG1fbGF0ZXN0RGVjcnlw
dFRpbWUgeyAwIH07Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVk
aWFLZXlTdGF0dXM+PiBtX3N0YXR1c2VzOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+IG1fc3RhdHVzZXM7CiAKICAgICB1
c2luZyBEaXNwbGF5Q2hhbmdlZE9ic2VydmVyID0gT2JzZXJ2ZXI8dm9pZChQbGF0Zm9ybURpc3Bs
YXlJRCk+OwogICAgIERpc3BsYXlDaGFuZ2VkT2JzZXJ2ZXIgbV9kaXNwbGF5Q2hhbmdlZE9ic2Vy
dmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3M2Y3NGU0ZjcwZmM5MmMyMmJmODU5YzAy
MjhhMzRlYWVjNTc5N2EzLi4zOThlOGFiMWI2NTZiNDQ1OTI3YmViNmJjNjkzZGQzOTlhNjg3YWM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNTYsMTIgKzU2LDEyIEBAIHVuc2lnbmVkIGxv
bmcgTWVkaWFLZXlTdGF0dXNNYXA6OnNpemUoKQogICAgIHJldHVybiBtX3Nlc3Npb24tPnN0YXR1
c2VzKCkuc2l6ZSgpOwogfQogCi1zdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRC
dWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKK3N0YXRpYyBib29sIGtleUlkc01hdGNo
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikK
IHsKICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0
aCAhPSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFzdGQ6
Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CisgICAgcmV0dXJuICFzdGQ6Om1l
bWNtcChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CiB9CiAK
IGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJTb3VyY2UmIGtleUlkKQpA
QCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJj
ZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3RhdHVzZXNbbV9pbmRleCsrXTsK
LSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+ZGF0YSgp
LCBwYWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHBhaXIuZmlyc3QtPnNp
emUoKSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBl
LCBNZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+KFdURk1vdmUoYnVmZmVyKSks
IHBhaXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaAppbmRleCBjMjExMTEzYTJjNmRh
Yzc5NzkyNGE5OWQyZDJkZjk3YzJlNjVmODUwLi42MGQ2MmFhZmY4MDc0ZGFkYTZlMzFhM2YyYjM3
MGE2ZDZkMDFmNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCkBAIC0zOCw3ICszOCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhS2V5U2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1lZGlhS2V5U3Rh
dHVzTWFwIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFLZXlTdGF0dXNNYXA+IHsKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlz
LmNwcAppbmRleCA4M2IyNGFjZWFhNWIxMjk0YmI0ZWE0MzlmYjJkNWM0ZjZjY2Q0NzUzLi4zNjdm
MzFkMTg2YjUxNjM5YTljNzQyMTNmMGNmOGU2ZjJmOGQyNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCkBAIC0xNzcsNyAr
MTc3LDcgQEAgYm9vbCBNZWRpYUtleXM6Omhhc09wZW5TZXNzaW9ucygpIGNvbnN0CiAgICAgICAg
IH0pOwogfQogCi12b2lkIE1lZGlhS2V5czo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFS
ZWNlaXZlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBp
bml0RGF0YSkKK3ZvaWQgTWVkaWFLZXlzOjp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJl
Y2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBmb3IgKGF1dG8mIGNkbUNsaWVudCA6IG1fY2RtQ2xp
ZW50cykKICAgICAgICAgY2RtQ2xpZW50LmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRp
b25EYXRhUmVjZWl2ZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0YS5jb3B5UmVmKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5kZXgg
N2I1OWEzYmM2ZDIyNTZmYzY1NmYwOGNiZjI2ODkxODUxMDk4M2EyMi4uOTFhMWEwNzExNDMzYmUy
NDdkZDJhODVjNWY0YWQwOTM4YTA5YTdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCkBAIC04Niw3ICs4Niw3IEBAIHByb3RlY3Rl
ZDoKICAgICBNZWRpYUtleXMoRG9jdW1lbnQmLCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmll
ciwgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkLCBjb25zdCBWZWN0b3I8TWVkaWFLZXlTZXNz
aW9uVHlwZT4mLCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2U+JiYpOwogCiAgICAgLy8gQ0RN
SW5zdGFuY2VDbGllbnQKLSAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVj
ZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9p
ZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dn
ZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCAy
ZmRjNGMwMDIxZjZlMWZkZWM0NWY4ZmFmNjA5MDZjMmJmODJlM2IxLi4wMDM5MzAyZjdkYzE2ZmZl
Y2ZjNDY1YzdkOGRhMjUyZjk4ZGFmNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1
bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVy
LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgaWYgKGF1dG8gc2hhcmVk
QnVmZmVyID0gZm9ybURhdGFCb2R5KCkuYXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAgICBtX2Nv
bnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlw
ZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOworICAgICAg
ICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250
ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVk
QnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2Fk
IHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4KQEAgLTI3Miw3ICsyNzIsNyBAQCBSZWZQdHI8
Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoKSBjb25zdAogICAgIGlmIChpc0Zv
cm1EYXRhKCkpCiAgICAgICAgIHJldHVybiAmY29uc3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRh
Qm9keSgpKTsKICAgICBpZiAoYXV0byogZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpKQotICAgICAg
ICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Cisg
ICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMjg0LDcgKzI4NCw3IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZl
dGNoQm9keTo6dGFrZSgpCiAgICAgICAgIGF1dG8gYnVmZmVyID0gbV9jb25zdW1lci50YWtlRGF0
YSgpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIHJldHVybiBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgfQogCiAgICAgaWYgKGlzQmxvYigpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
CmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1ODc2NzVmMDlkOGI3OWZmNjJiM2IuLjIyMTNkNjIz
MDNlZmUyYTFmNzI5ODI2MGY1ODg2MGI3NzZmYjI2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNDIsNyArMjQyLDcg
QEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6Y2xl
YW4oKQogewotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICBtX2J1ZmZlci5yZXNldCgpOwog
ICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAgICBpZiAobV9zaW5rKSB7CiAgICAgICAgIG1f
c2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjY2LDE2ICsyNjYsMTggQEAgdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0
IFN0cmluZyYgY28KIHsKICAgICBpZiAoc3RyZWFtKSB7CiAgICAgICAgIEFTU0VSVCghbV9zaW5r
KTsKLSAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNy
ZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CisgICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpj
cmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVp
bGRlcigpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8q
IGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBw
ZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlw
ZSwgY29udGVudFR5cGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YS50YWtlKCktPm1h
a2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShX
VEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgICAgIG1fc2luay0+
cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsKQEAgLTMwNiw3ICszMDgsNyBAQCB2
b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJv
ZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtl
RGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250
ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBh
Y2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6
IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURh
dGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwcm9taXNlLT5yZWpl
Y3QoVHlwZUVycm9yKTsKQEAgLTMyNCwxNiArMzI2LDIwIEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplKQogICAgICAgICBt
X3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyKSB7Ci0gICAgICAgIG1fYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZlci5h
cHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNv
bnN1bWVyOjp0YWtlRGF0YSgpCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9i
dWZmZXIpOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1v
dmUoZGF0YSkpOworfQorCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKCkKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgpOwogfQogCiBSZWZQdHI8SlND
OjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKQEAg
LTM0MSw5ICszNDcsNyBAQCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1
cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKIAotICAgIGF1dG8gYXJyYXlC
dWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1ZmZlciA9
IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVyOworICAgIHJldHVybiBtX2J1ZmZlci50
YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRjaEJvZHlD
b25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAt
MzUxLDkgKzM1NSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIpCiAgICAg
ICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRvIGJ1ZmZl
ciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1dG8gZGF0YSA9IGJ1
ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIFdU
Rk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29u
dGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBlKTsKIH0K
IAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4ICszNjQs
OCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9i
dWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRS
ZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+
c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIgPSBtX2J1
ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzg1LDggQEAgdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNvbnN1bWVy
OjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAgbV9zb3Vy
Y2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAgIG1fc291
cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAgICAgICAg
bV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAgICAgIG1f
c291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7
CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdGYWlsZWQoY29uc3QgRXhjZXB0
aW9uJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmgKaW5kZXggMmIwNTZmMTI2NDNiYTk2N2ZlNDFhMDE1MTNhODliNzM2MjY0
MmQ0Yy4uODcxZDJjMDg2MzMxYTk4Mjk0YTE2NmE0YjQyZTMxODRlMDM3NzcyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtNTAs
MTAgKzUwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVm
ZmVyOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
KSB7IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsgfQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQor
ICAgIHZvaWQgc2V0RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtl
QXNBcnJheUJ1ZmZlcigpOwogICAgIFN0cmluZyB0YWtlQXNUZXh0KCk7CiAKQEAgLTgyLDcgKzgy
LDcgQEAgcHJpdmF0ZToKIAogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRU
eXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgbV9idWZmZXI7CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9jb25zdW1l
UHJvbWlzZTsKICAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IG1f
c2luazsKICAgICBSZWZQdHI8RmV0Y2hCb2R5U291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggZmM1NWNjN2Q4M2Q4YmMx
MWYwODU0ZGMzY2ZkODUwOTdhMzFmMTBmNi4uMDNmODliNjFjYTVmN2M3MTc2YjlkODhjZDEzNjYw
ZTg2YjdhMjU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdG9wKCkKICAgICAg
ICAgbV9sb2FkZXItPmNhbmNlbCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaExv
YWRlcjo6c3RhcnRTdHJlYW1pbmcoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZl
dGNoTG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiB7CiAgICAgQVNTRVJUKG1fY29uc3VtZXIpOwog
ICAgIGF1dG8gZmlyc3RDaHVuayA9IG1fY29uc3VtZXItPnRha2VEYXRhKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKaW5kZXggMmY5MGYwZWMzZmY5MDVhMjYy
MzFjODRjNzJhN2ExODZjZDRiZmU4My4uNDYxMmQwZTBlM2E3ZWZlMzA2MDM5NmIwZDc1YTJmYTNi
YzRlZGRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApA
QCAtMzksMTQgKzM5LDE0IEBAIGNsYXNzIEZldGNoQm9keUNvbnN1bWVyOwogY2xhc3MgRmV0Y2hM
b2FkZXJDbGllbnQ7CiBjbGFzcyBGZXRjaFJlcXVlc3Q7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIAogY2xhc3MgRmV0Y2hMb2FkZXIgZmluYWwgOiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNs
aWVudCB7CiBwdWJsaWM6CiAgICAgRmV0Y2hMb2FkZXIoRmV0Y2hMb2FkZXJDbGllbnQmLCBGZXRj
aEJvZHlDb25zdW1lciopOwogICAgIFdFQkNPUkVfRVhQT1JUIH5GZXRjaExvYWRlcigpOwogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKKyAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKIAogICAgIHZvaWQgc3RhcnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEZldGNoUmVxdWVzdCYsIGNvbnN0IFN0cmlu
ZyYpOwogICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEJsb2Im
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmlu
ZGV4IDRkZjg0MjZjNzE4YmExNmVjZjBhNDdlNzNlOTAwZDNmODQ4ZjY0ZjIuLmUzOGE4M2FkZTdk
NmUwYWFmNzBjZWI5YzVhYThmZThhYjQ5NDNkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtNDAwLDcgKzQwMCw4IEBAIHZvaWQgRmV0
Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlD
aHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNw
YW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OworICAgIGF1dG8gY29udGln
dW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgU3BhbiBjaHVuayB7IGNv
bnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0
YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAgLTUwMyw3ICs1MDQsNyBAQCB2b2lkIEZldGNoUmVz
cG9uc2U6OmZlZWRTdHJlYW0oKQogICAgIGNsb3NlU3RyZWFtKCk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKK1Jl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpz
dGFydFN0cmVhbWluZygpCiB7CiAgICAgQVNTRVJUKG1fbG9hZGVyKTsKICAgICByZXR1cm4gbV9s
b2FkZXItPnN0YXJ0U3RyZWFtaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEzOGQzYzNmNmUyZmRiNjY3NWU4YTRkMTM2NWJm
NWE1YmIuLmNmNzg2MzIzOWZkOTQ2ZWUwZThkODhlYWVhNzJmZTk4OWVlZDMxNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0xMzQsNyArMTM0
LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIGNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1l
RGF0YUJ5Q2h1bmtDYWxsYmFjayYmKTsKIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
dGFydFN0cmVhbWluZygpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
c3RhcnRTdHJlYW1pbmcoKTsKICAgICAgICAgTm90aWZpY2F0aW9uQ2FsbGJhY2sgdGFrZU5vdGlm
aWNhdGlvbkNhbGxiYWNrKCkgeyByZXR1cm4gV1RGTW92ZShtX3Jlc3BvbnNlQ2FsbGJhY2spOyB9
CiAgICAgICAgIENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrIHRha2VDb25zdW1lRGF0YUNhbGxi
YWNrKCkgeyByZXR1cm4gV1RGTW92ZShtX2NvbnN1bWVEYXRhQ2FsbGJhY2spOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKaW5kZXggZGQx
OWM4NzBhYTdkMjQ4NWY3ZTljYTg0OTJhODQyMTM1MmRkZDA0MS4uMWE2NmJmODE4MzIwZTk1NjA3
ZDYxNWYxYTA4MmE4Mjc2ZWIyYTM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTM4LDcgKzM4LDcgQEAgZW51bSBjbGFzcyBDcmVh
dGVOZXdHcm91cEZvckhpZ2hsaWdodCA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIEhp
Z2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgOiBib29sIHsgTm8sIFllcyB9OwogCiBzdHJ1
Y3QgQXBwSGlnaGxpZ2h0IHsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBoaWdobGln
aHQ7CisgICAgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGhpZ2hsaWdodDsK
ICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGV4dDsKICAgICBDcmVhdGVOZXdHcm91cEZvckhp
Z2hsaWdodCBpc05ld0dyb3VwOwogICAgIEhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHAg
cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDsKQEAgLTUyLDcgKzUyLDcgQEAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4oaGlnaGxpZ2h0LT5zaXpl
KCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hsaWdodC0+ZGF0YSgp
LCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEoaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgp
LCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKaW5kZXgg
ZTJkOWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJkMDRhNDU3NmMwNi4uNWU4MGYwYzA3MmQ0OWEz
ZWY3OTY5NTkzMDJjNDQ1NmNkMmFiZGU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCkBAIC00NCwx
NSArNDQsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdGV4cHIgdWludDY0X3QgaGln
aGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1
cmUgIChBKXBwbGUoQVApcGxpY2F0aW9uKEgpaWdobGlnaHRzKDIwMjEpCiAKLXN0ZDo6b3B0aW9u
YWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIo
KTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICBhdXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3Rk
OjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBk
YXRhOwogICAgIHJldHVybiBkYXRhOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBBcHBIaWdobGln
aHRSYW5nZURhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsK
ICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGVuY29kZXI7CiAgICAgZW5jb2RlciA8PCAq
dGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFJhbmdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhLmgKaW5kZXggY2Y2MzgxYWNmYjBhNTIxMWI0MzUwOGI3YjUxN2Q2
ZGIyZjZmYzc0My4uYjVkYWY2MDI1Mzk4YTNmN2U2ZjFkMzdhYmVjZTg0NGQ0ZjFjNjU0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEFwcEhpZ2hsaWdodFJhbmdlRGF0YSB7
CiBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGNyZWF0ZShjb25zdCBT
aGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxB
cHBIaWdobGlnaHRSYW5nZURhdGE+IGNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CiAgICAgc3RydWN0IE5vZGVQYXRoQ29tcG9uZW50IHsKICAgICAgICAgU3RyaW5nIGlkZW50
aWZpZXI7CiAgICAgICAgIFN0cmluZyBub2RlTmFtZTsKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFw
cEhpZ2hsaWdodFJhbmdlRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
aWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKaW5kZXggZGMzOWEwZjBkMThmZmZjYTdkZmI0NjUy
MTljZDYxMmE5ZjczOGY4Zi4uZTVkZTg0OTRmMzUwNDUzNTk0YjJmMmU4OGMzZGRhMzNmYTlhZjcw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0U3RvcmFnZS5jcHAKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIEFwcEhpZ2hsaWdo
dFN0b3JhZ2U6OnN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTdGF0aWNSYW5nZT4mJiByYW5nZSkKICAg
ICBtX2RvY3VtZW50LT5wYWdlKCktPmNocm9tZSgpLnN0b3JlQXBwSGlnaGxpZ2h0KFdURk1vdmUo
aGlnaGxpZ2h0KSk7CiB9CiAKLXZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZUFuZFNj
cm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBTY3JvbGxUb0hp
Z2hsaWdodCBzY3JvbGwpCit2b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVBbmRTY3Jv
bGxUb0FwcEhpZ2hsaWdodChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIFNj
cm9sbFRvSGlnaGxpZ2h0IHNjcm9sbCkKIHsKICAgICBhdXRvIGFwcEhpZ2hsaWdodFJhbmdlRGF0
YSA9IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGJ1ZmZlcik7CiAgICAgaWYgKCFhcHBI
aWdobGlnaHRSYW5nZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKaW5kZXggYjE1MmY3NmVkNDI0MDg5MmVhN2Rl
MjFlMmNiMDZkNDcyZDg3MzM2MC4uZTI3NjYzM2I0ODRmODEwOTRhZGVjZTQ1ZjY0YWJiZWQxNzgx
MjUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFN0b3JhZ2UuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdGF0aWNS
YW5nZTsKIGNsYXNzIEhpZ2hsaWdodDsKIApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAg
fkFwcEhpZ2hsaWdodFN0b3JhZ2UoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcmVB
cHBIaWdobGlnaHQoUmVmPFN0YXRpY1JhbmdlPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVmZmVyPiYmLCBTY3Jv
bGxUb0hpZ2hsaWdodCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlQW5kU2Nyb2xs
VG9BcHBIaWdobGlnaHQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFNjcm9sbFRvSGln
aGxpZ2h0KTsKICAgICB2b2lkIHJlc3RvcmVVbnJlc3RvcmVkQXBwSGlnaGxpZ2h0cygpOwogICAg
IE1vbm90b25pY1RpbWUgbGFzdFJhbmdlU2VhcmNoVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlt
ZUF0TGFzdFJhbmdlU2VhcmNoOyB9CiAgICAgdm9pZCByZXNldExhc3RSYW5nZVNlYXJjaFRpbWUo
KSB7IG1fdGltZUF0TGFzdFJhbmdlU2VhcmNoID0gTW9ub3RvbmljVGltZTo6bm93KCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3NDM1NmIzNWEx
NjgwMzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVj
ODc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2ODYs
NyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleChJREJPYmpl
Y3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5z
YWN0aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8u
a2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChp
bmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0
dGVtcHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0
cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBh
dGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBr
ZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlm
ICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIpOwog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFs
aXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSJf
cyB9OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpjcmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4g
aW5kZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBh
dGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJL
ZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0
YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJfcyB9
OwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1
bmNoZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8mIGluZm8KIHsKICAgICBo
YXNSZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlC
dWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtl
eSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZv
ciBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChp
bnQ2NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURC
QmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAlcyIsIGtleVZhbHVl
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVm
ZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkg
dG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9y
ZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKKyAgICBhdXRv
IHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYgKCF2
YWx1ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhl
IHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBz
dG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5p
blByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0
dGVtcHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1w
cm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBm
b3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3Ig
ZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0gSURC
VHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0aW9u
KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJh
c2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiX3Mg
fTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNv
cmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CiAg
ICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3Jl
Iik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBz
ZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAg
LTIxMjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVj
b3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgYXV0byBrZXkg
PSBrZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkg
PSBJREJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3Vw
IHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJs
ZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjEz
Myw3ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBrZXkgPSBrZXlSYW5n
ZS51cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlE
YXRhOjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsyNDQz
LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJl
Y29yZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgp
ICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYga2V5LnR5cGUoKSAh
PSBJbmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNv
cmQiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIl9zIH07CkBAIC0y
NTA4LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291
bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQg
PSAwOwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpID8gSURC
S2V5RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKKyAgICBh
dXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CiAgICAgaWYg
KCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUg
bG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29r
dXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAogICAgIGF1dG8gdXBw
ZXJLZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1heGltdW0oKSA6
IHJhbmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29r
dXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5h
YmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBv
cGVyYXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5NjIz
YmQ4ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5Y2ZlZGZlOWYyZWE2
NWE2ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBi
b29sIFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0YXRlbWVudC0+Ymlu
ZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2Vy
IGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wg
U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3Nh
cnkoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50
LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykg
ewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBz
dGF0ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCmluZGV4
IDBhNDY5YmQwYmQxZjM4ZGNiOTZiMzlkOGMzMDAwYWY3M2QxMmFiNTkuLmM5ZDZkYTZiZGQ5Zjkz
OTUwMWY0ZjQyMzJiNGM3ODM3ZDg0MGRhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKQEAgLTE5Niw3ICsxOTYs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVJlY29yZGVyOjpzdGFydFJlY29yZGluZyhzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiB0aW1lU2xpYwogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRp
YyBpbmxpbmUgUmVmPEJsb2JFdmVudD4gY3JlYXRlRGF0YUF2YWlsYWJsZUV2ZW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUgdGltZUNvZGUpCitzdGF0aWMgaW5saW5lIFJl
ZjxCbG9iRXZlbnQ+IGNyZWF0ZURhdGFBdmFpbGFibGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkKIHsKICAgICBhdXRvIGJsb2Ig
PSBidWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCBt
aW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoY29udGV4dCk7CiAgICAgcmV0dXJuIEJsb2JFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEJsb2JFdmVudDo6SW5pdCB7
IHsgZmFsc2UsIGZhbHNlLCBmYWxzZSB9LCBXVEZNb3ZlKGJsb2IpLCB0aW1lQ29kZSB9LCBCbG9i
RXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCmluZGV4IDc3MTJiNDQ1MjgzNjdkOGMyNzI1
MDJhZGJhYWNhYWY5Nzg4Y2JkYjAuLjFlOWI3NGFiMTdlMzEwOGRiNDIwOWI5YjRmMDIxNGRhMTFh
YzZlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXIuaApAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aXNwYXRjaEVycm9yKEV4Y2VwdGlvbiYmKTsKIAogICAgIGVudW0gY2xhc3MgVGFrZVByaXZhdGVS
ZWNvcmRlciB7IE5vLCBZZXMgfTsKLSAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
ZG91YmxlKT47CisgICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBk
b3VibGUpPjsKICAgICB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmLCBUYWtlUHJp
dmF0ZVJlY29yZGVyKTsKIAogICAgIC8vIE1lZGlhU3RyZWFtOjpPYnNlcnZlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcApp
bmRleCAzZjRjOWJjZDEzM2FjMjlmM2Y3ZGRlMTk5NDc4ZTM5MjU3ZDVlNjZiLi44NzRhYTdmMGIx
OGYwZWU3NTg4MGJhNWY1ZWY2N2Q0N2JmYzJiMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcApAQCAtNzcsNyArNzcs
NyBAQCB2b2lkIEFydHdvcmtJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTAogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IC8vIFNhbml0aXplIHRoZSBpbWFnZSBieSBkZWNvZGluZyBpdCBpbnRvIGEgQml0bWFwSW1hZ2Uu
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1h
Z2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBh
dXRvIGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGJpdG1hcEltYWdl
LT5zZXREYXRhKFdURk1vdmUoYnVmZmVyVG9TYW5pdGl6ZSksIHRydWUpOwogICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IDJiM2NkZTM2MDgyNDcxYzExYzg3ZmNm
NjFjYzgxY2MzNjBjMzlkOTAuLmQzNzhhZmM2ZjhhMWI1N2EwMzAyZTJjODY4YjI0MGEyMDk3ZmU0
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNl
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJj
ZUJ1ZmZlci5jcHAKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6YXBwZW5k
QnVmZmVyVGltZXJGaXJlZCgpCiAgICAgLy8gaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1l
ZGlhL3Jhdy1maWxlL3RpcC9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLmh0bWwjc291cmNlYnVm
ZmVyLXNlZ21lbnQtcGFyc2VyLWxvb3AKICAgICAvLyBXaGVuIHRoZSBzZWdtZW50IHBhcnNlciBs
b29wIGFsZ29yaXRobSBpcyBpbnZva2VkLCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFwcGVuZERhdGEgPSBXVEZNb3ZlKG1fcGVuZGluZ0FwcGVu
ZERhdGEpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBhcHBlbmREYXRhID0g
V1RGTW92ZShtX3BlbmRpbmdBcHBlbmREYXRhKTsKICAgICAvLyAxLiBMb29wIFRvcDogSWYgdGhl
IGlucHV0IGJ1ZmZlciBpcyBlbXB0eSwgdGhlbiBqdW1wIHRvIHRoZSBuZWVkIG1vcmUgZGF0YSBz
dGVwIGJlbG93LgogICAgIGlmICghYXBwZW5kRGF0YSB8fCAhYXBwZW5kRGF0YS0+c2l6ZSgpKSB7
CiAgICAgICAgIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQ6
OkFwcGVuZFN1Y2NlZWRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuaAppbmRleCA1MjBjMDc3NTY5NmEyZjBlMmU3MzAwNzM1ZThjOTc3
NDk1ZjFhNjE0Li5kNGM4NTc5YzBiYmQ0NDNhNTEyZmE5ZjY4YzQyN2VjMDQ4ODVkMGQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgK
QEAgLTIyMiw3ICsyMjIsNyBAQCBwcml2YXRlOgogCiAgICAgV1RGOjpPYnNlcnZlcjx2b2lkKigp
PiBtX29wYXF1ZVJvb3RQcm92aWRlcjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGVu
ZGluZ0FwcGVuZERhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fcGVu
ZGluZ0FwcGVuZERhdGE7CiAgICAgVGltZXIgbV9hcHBlbmRCdWZmZXJUaW1lcjsKIAogICAgIFJl
ZlB0cjxWaWRlb1RyYWNrTGlzdD4gbV92aWRlb1RyYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyLmNwcAppbmRleCBmZWIxYjhmZmZiN2I5NGM5ZTdlYjBiZTQ4YWQzNWRkNzA3OWM3
MGJiLi5jYzVhODY1NzMwNTY1N2QwYTk3MDU2NjFlNGJiNDljZTBiODQwNWM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3Rl
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCgpCiAgICAgbV9pc1JlYWR5VG9TZW5k
ID0gdHJ1ZTsKIAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fcGVuZGluZ01lc3NhZ2VzKQot
ICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2Fn
ZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7
CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNz
YWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtZXNz
YWdlLmJ1ZmZlci0+c2l6ZSgpKTsKICAgICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAg
ICAgaWYgKG1faXNQZW5kaW5nQ2xvc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaApp
bmRleCBmNTgyN2RmOTM3OTQ5M2QyODEyNzAxNzdjY2ZiY2EwNTUxNTMyMzFmLi43Mzk0MmE4MzU5
MzFhOWQyODRjNmE0NTFiYjhkYmZiNTc2NWNhZGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUlRD
RGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OwogY2xhc3MgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyQ29ubmVjdGlvbjsKIGNsYXNzIFJUQ0Vycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyIGZpbmFsIDogcHVibGljIFJUQ0RhdGFDaGFubmVsSGFuZGxlciwgcHVibGljIENhbk1h
a2VXZWFrUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcj4gewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwpAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogCiAgICAgc3RydWN0IE1l
c3NhZ2UgewogICAgICAgICBib29sIGlzUmF3IHsgZmFsc2UgfTsKLSAgICAgICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOwogICAgIH07CiAgICAgVmVjdG9yPE1lc3NhZ2U+IG1fcGVuZGluZ01lc3NhZ2VzOwogICAg
IGJvb2wgbV9pc1BlbmRpbmdDbG9zZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAppbmRleCAzZTExMDU0MDAzNTNkZTU2MGYy
NDkzOGE5YjIwOGVmMzZmNjgwM2M0Li4zY2VlZDBhMDExZTdiNTQ2ZmFkZGY0OGJiZGEyMTFkZmRk
NTI0YzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlci5jcHAKQEAgLTk3LDggKzk3LDggQEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI6OnNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmIGNsaWVudCwKICAgICBt
X2NvbnRleHRJZGVudGlmaWVyID0gY29udGV4dElkZW50aWZpZXI7CiAKICAgICBmb3IgKGF1dG8m
IG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2FnZXMpIHsKLSAgICAgICAgc3dpdGNoT24obWVzc2Fn
ZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRhKSB7Ci0gICAgICAgICAgICBjbGllbnQuZGlk
UmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICBzd2l0
Y2hPbihtZXNzYWdlLCBbJl0oUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBkYXRhKSB7Cisg
ICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogICAgICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7
CiAgICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVN0cmluZ0RhdGEodGV4dCk7CiAgICAgICAg
IH0sIFsmXShTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAppbmRleCA0MWY5NTI4MjFlNjIwMDkzZjhlZWZl
MzJjNWVkNGFlMGY1ZTU0MTk3Li4xMWJkNDVkZTkxNTU3NzlmZmM5ZWZiMDNlOTU1MjhmMDVlNjRk
NzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aApAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogICAgICAgICBSVENEYXRhQ2hhbm5lbFN0YXRl
IHN0YXRlOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPHdlYnJ0Yzo6UlRDRXJyb3I+IGVycm9yOwog
ICAgIH07Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxTdGF0ZUNoYW5nZSwgU3Ry
aW5nLCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFu
dDxTdGF0ZUNoYW5nZSwgU3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAg
IHVzaW5nIFBlbmRpbmdNZXNzYWdlcyA9IFZlY3RvcjxNZXNzYWdlPjsKICAgICB2b2lkIHN0b3Jl
TWVzc2FnZShQZW5kaW5nTWVzc2FnZXMmLCBjb25zdCB3ZWJydGM6OkRhdGFCdWZmZXImKTsKICAg
ICB2b2lkIHByb2Nlc3NNZXNzYWdlKGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuY3BwCmluZGV4IDMwOWMwMjY0M2Y1YTdhZTlmZWMwOGExNGViMjEyMjQwOWIxZjg5ZTAu
LjYzZjFjM2NiZTFlYTgxY2ZiZjQ1NDY0NjMyMGNkZjdmYWNmNTljMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJj
ZVVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fc291cmNlVVJMID0gdXJsOwogCi0gICAgbV9k
YXRhID0gbnVsbHB0cjsKKyAgICBtX2RhdGEucmVzZXQoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9
IGZhbHNlOwogCiAgICAgaWYgKG1fcmVzb3VyY2UpIHsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cisg
ICAgbV9kYXRhLmVtcHR5KCk7CiAKICAgICBtX3Jlc291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsK
ICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMpOwpAQCAtMTgwLDggKzE4MCw3IEBAIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiBzCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jl
c291cmNlKTsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBk
YXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2
b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH07CiAKICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxl
ZE9yQ2FuY2VsZWQoKSkgewotICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBtX2Rh
dGEucmVzZXQoKTsKIAogICAgICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVS
ZW5kZXJlcigpOwogCkBAIC0yMDQsNyArMjAzLDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EK
ICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVs
OjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEu
dGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNv
dXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5k
ZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAwNWExY2RhYTNlMTQ4NzdhMGFlNDY1YjYzNDlh
YTViYmIxYWYyYzgyLi5jZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFlNmU4NTgwM2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogCiAgICAgVVJMIG1f
c291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBt
X3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8TW9kZWw+IG1fbW9kZWw7CiAgICAgVW5p
cXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAgICAgYm9vbCBtX2RhdGFDb21w
bGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbSBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNE
Lm1tCmluZGV4IDNlODJhYzIyMTY3OTZjOWVkYjc2MGExOWVkN2FjZTFmNDJjZDM3NzcuLjEzMDNl
YzRkMjU2OGE2NmY4N2Q3ZmViMjBiZjJiMDMzOTIzMmMzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVy
VVNELm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtp
dC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIFJl
dGFpblB0cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVs
U291cmNlKQogICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5Rmls
ZSgiTW9kZWxGaWxlIiwgZmlsZUhhbmRsZSwgIi51c2R6Iik7CiAgICAgQVNTRVJUKEZpbGVTeXN0
ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOwogCi0gICAgc2l6ZV90IGJ5dGVDb3VudCA9
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+
ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgc2l6ZV90IGJ5dGVDb3Vu
dCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIG1vZGVsU291cmNlLmRhdGEo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7
CiAgICAgQVNTRVJUX1VOVVNFRChieXRlQ291bnQsIGJ5dGVDb3VudCA9PSBtb2RlbFNvdXJjZS5k
YXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW1TaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1T
aW5rLmgKaW5kZXggMGI4OThmNmFkYjU3ZWIyNWRjNDkzN2Q4MWZmNWQxNGQ1Mjk3NmM4NC4uZDUx
NzNmYmY4YjQwMzQxYzVjZjhkOGE0ZjU1ZWVhYzhmZjgzOGEzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaApAQCAtMzUsNyAr
MzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNz
IFJlYWRhYmxlU3RyZWFtOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgUmVhZGFibGVTdHJlYW1TaW5rIDogcHVibGljIFJlZkNvdW50
ZWQ8UmVhZGFibGVTdHJlYW1TaW5rPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRleCBjNDUy
YzgzZmJkNWNlODk1YmRkMDMxYWNmMTQ2OGY3ODY1MDYyMmQ3Li5iOGI3Nzg1ZjkxZDA2OGMyYTQ2
Y2ViMWQ2NTk3NThmY2Y4YjY5ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAgLTUxLDEzICs1MSwxNSBA
QCBwdWJsaWM6CiAgICAgICAgIGlmIChtX3NjcmlwdEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAorICAgICAgICBpZiAoIW1fY29udGlndW91c0J1
ZmZlciAmJiAoIW1fY29udGFpbnNPbmx5QVNDSUkgfHwgKm1fY29udGFpbnNPbmx5QVNDSUkpKQor
ICAgICAgICAgICAgbV9jb250aWd1b3VzQnVmZmVyID0gbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCkt
Pm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIGlmICghbV9jb250YWluc09ubHlBU0NJSSkgewot
ICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSSht
X3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+
c2l6ZSgpKTsKKyAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJl
QWxsQVNDSUkobV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZl
cigpLT5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAg
ICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRN
YXNrVG9wOEJpdHMobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZm
ZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3Ry
aW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2NvbnRpZ3VvdXNCdWZmZXIt
PmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgcmV0dXJuIHsgbV9z
Y3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2Ny
aXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CisgICAgICAgICAgICByZXR1cm4geyBtX2Nv
bnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVm
ZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CiAKICAgICAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0
cmluZykgewogICAgICAgICAgICAgbV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBtX3NjcmlwdEJ1ZmZl
ci50b1N0cmluZygpOwpAQCAtODEsNiArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgbV9zY3JpcHRCdWZmZXIgPSBzY3JpcHRCdWZmZXI7CisgICAgICAgIG1f
Y29udGlndW91c0J1ZmZlciA9IG51bGxwdHI7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtOTEsNiAr
OTQsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFNjcmlwdEJ1ZmZlciBtX3NjcmlwdEJ1ZmZl
cjsKKyAgICBtdXRhYmxlIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udGlndW91c0J1ZmZlcjsK
ICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAgICBtdXRhYmxlIFN0
cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggN2U0OWE5ZTczMjI2YjY1Y2MyOGJmNTk0
ODEzYjBmODNiMjY5ZDIyYi4uZWYzN2YxZDBjYTQ2MmJiOWI3YzliNmE1NWQxOGViYjRjMTE4MWE3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgRGV0YWNoZWRPZmZzY3JlZW5DYW52YXM7
CiBjbGFzcyBJREJWYWx1ZTsKIGNsYXNzIE1lc3NhZ2VQb3J0OwogY2xhc3MgSW1hZ2VCaXRtYXBC
YWNraW5nOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIGVudW0gY2xhc3MgU2VyaWFsaXphdGlvblJldHVybkNvZGU7CiAKIGVudW0gY2xhc3MgU2Vy
aWFsaXphdGlvbkVycm9yTW9kZSB7IE5vblRocm93aW5nLCBUaHJvd2luZyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVlNWYzNzgyZmJiMjMx
MjNiMmRkM2E1N2ExNzI4Li4xMDhlNmM4NzY3ZDBkMmZkYWNiZTY1MDRlYmM1MDcwZTg4MmJlNjQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNiArMzQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3MgQ1NTRm9u
dFNlbGVjdG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBG
b250OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKQEAgLTQyLDcgKzQzLDYgQEAgY2xhc3Mg
Rm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRp
ZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKIGNsYXNzIFNWR0ZvbnRGYWNlRWxlbWVu
dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZv
bnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZl
YXR1cmVTZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggMWRlYWM0
ZjQxY2Y0OWYxZjg4MmRjY2VmZDQ4Y2Y2YTk3MzJmM2VkOS4uYzQyZWMwNTFmZTExZWJhMTRmODEz
MzU5ZDhkMTdhMmMyODE2NjRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAg
LTQwMiw3ICs0MDIsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVUeXBlUmVhZGVyIGZpbmFsIDog
UGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgICAgICB0eXBlcy5hZGQoRmlsZTo6Y29udGVudFR5
cGVGb3JGaWxlKGZpbGVuYW1lKSk7CiAgICAgfQogCi0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikKKyAgICB2
b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKICAgICB7CiAgICAgICAgIHR5cGVzLmFkZCh0eXBlKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTcyNGNmMGU1MGJhYTViOWIy
NDEzMDQ4MWVlNzI0Y2I3ODIwN2FhNC4uYzVlOWUyNmIzNzJhZTY4M2YxODY4ZTkyMGM0NWVkNzBl
ZGY1NTQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDEzMyw3ICs0MTMzLDcg
QEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8o
RWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4geyBhdHRhY2htZW50LT51bmlxdWVJZGVudGlm
aWVyKCksIFdURk1vdmUoYWRkaXRpb25hbFR5cGVzKSwgV1RGTW92ZShhZGRpdGlvbmFsRGF0YSkg
fTsKIH0KIAotdm9pZCBFZGl0b3I6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJp
bmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIEVk
aXRvcjo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmls
ZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKGF1
dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQogICAgICAgICBjbGllbnQtPnJlZ2lzdGVyQXR0
YWNobWVudElkZW50aWZpZXIoaWRlbnRpZmllciwgY29udGVudFR5cGUsIHByZWZlcnJlZEZpbGVO
YW1lLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDAxZmUwYjVl
MDQ0ZWY2M2YyNmE3MWI0NzJlZjk4YjExYzIyOGI5MWMuLjFkMDcxNmM1YjkzYzhiYjdhZDczZjQx
NzRjYTgwNDU5MDVmOTE5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNTcsOSArNTcs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyOwogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwotY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3Mg
Q29tcG9zaXRlRWRpdENvbW1hbmQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21V
bmRvU3RlcDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXI7CiBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBA
IC03NCw3ICs3NSw3IEBAIGNsYXNzIEtpbGxSaW5nOwogY2xhc3MgUGFzdGVib2FyZDsKIGNsYXNz
IFBhc3RlYm9hcmRXcml0ZXJEYXRhOwogY2xhc3MgUmVuZGVyTGF5ZXI7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udDsKIGNsYXNz
IFNwZWxsQ2hlY2tSZXF1ZXN0OwogY2xhc3MgU3BlbGxDaGVja2VyOwpAQCAtNTYzLDcgKzU2NCw3
IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFt
ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckF0dGFjaG1l
bnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZmlsZURh
dGEpOworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVO
YW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBmaWxlRGF0YSk7CiAgICAgdm9pZCBy
ZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpOwog
ICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKICAgICB2b2lk
IHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCmluZGV4IDA4YWExMjQyNjYyMGY3Njk1M2E3
OWIzNGVkZTVmNmRmMDUyN2IwMTUuLjk1N2I0ZmQ0YTU1N2ZjODFjZDMwNjllZWFjYjg5NDg4YTk0
N2I3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCkBAIC03
MiwxNiArNzIsMTYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJp
bmcmLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUgPSB7IH0pIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEZp
bGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEhU
TUwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJl
ZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZEltYWdlKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRh
dGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CiAgICAg
Ym9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwog
ICAgIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OwotICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJl
YWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7
IH0pIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikg
b3ZlcnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNp
emUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CiAjZW5kaWYKIH07
CiAKQEAgLTk5LDE2ICs5OSwxNiBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVhZEZpbGVQYXRoKGNv
bnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYgPSB7IH0p
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkRmlsZVBhdGhzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHJl
YWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZEltYWdlKFJlZjxT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCByZWFkSW1hZ2UoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0p
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFk
UGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBvdmVy
cmlkZTsKLSAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9v
bCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OworICAgIGJvb2wgcmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwor
ICAgIGJvb2wgcmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAg
Ym9vbCByZWFkRGF0YUJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCmluZGV4IDU0OWViN2QyZTRjMDc1
NDhlNGE4YzllYTI0ZWMyMGU0ZjIxYmZhMjUuLjExN2RiYTY4ZWRiMGJkNGI2YzMwZTA5NDg1ZDlk
MGMwZjI5YzM4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBh
c3RlYm9hcmRGaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdm9pZCBXZWJDb3Jl
UGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1l
KQogICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgZmlsZW5hbWUp
KTsKIH0KIAotdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKK3ZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVh
dGUoY29udGV4dC5nZXQoKSwgQmxvYjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGJ1ZmZlci0+ZXh0
cmFjdERhdGEoKSwgdHlwZSksIGZpbGVuYW1lKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAppbmRleCA1YzUyOWRkN2M4
ZWNjMDAwNDhmY2I0ZDE1ODE0NjM1YjI0ZDkwYmI3Li45ZDgxNjA1ZjE5OTI5OGYxOWMwZWQ2OTk1
ZmUzYmQ3NzgzMDM0ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IFdlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAg
ICB+V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCk7CiAKICAgICB2b2lkIHJlYWRGaWxlbmFt
ZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBS
ZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29udGV4dDsKICAgICBWZWN0b3I8UmVmPEZp
bGU+PiBmaWxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRN
TENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRl
ci5tbQppbmRleCBkNDhlMTFjOTZiNzgwOGY4ODM1NGIzYjA3NDdlZWIxZjFlMzdlM2YzLi4wNzgy
NDgzNjJhYTA1NGRjM2FiMDAwMDQ1MTcxODQxOThhNTgwZjc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBC
T09MIEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudChFbGVtZW50JiBlbGVt
ZW50LCBOU1VSTCAqdXJsLCBCT09MCiAgICAgICAgIGlmIChhdXRvIHJlc291cmNlID0gZGF0YVNv
dXJjZS0+c3VicmVzb3VyY2UodXJsKSkgewogICAgICAgICAgICAgYXV0byYgbWltZVR5cGUgPSBy
ZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgICAgIGlmICghdXNlUGxhY2Vob2xkZXIgfHwg
bWltZVR5cGUgIT0gInRleHQvaHRtbCIpIHsKLSAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9
IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVu
dHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAg
ICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1
bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFBy
ZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHVybCwgbWltZVR5
cGUpXTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG5vdEZvdW5kID0gWUVT
OwpAQCAtMjMwMCw3ICsyMzAwLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBm
aWxlV3JhcHBlckZvclVSTChEb2N1bWVudExvYWRlciogZGF0YVNvdXJjZSwgTlMKIAogICAgIGlm
IChkYXRhU291cmNlKSB7CiAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNv
dXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKFVSTCkpIHsKLSAgICAgICAgICAgIGF1dG8g
d3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVX
aXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAg
ICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGlu
aXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICBOU1N0cmluZyAqZmlsZW5h
bWUgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpOwogICAgICAgICAg
ICAgaWYgKCFmaWxlbmFtZSB8fCAhW2ZpbGVuYW1lIGxlbmd0aF0pCiAgICAgICAgICAgICAgICAg
ZmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShyZXNvdXJjZS0+dXJsKCks
IHJlc291cmNlLT5taW1lVHlwZSgpKTsKQEAgLTIzMjIsOCArMjMyMiw4IEBAIHN0YXRpYyBSZXRh
aW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRh
dGFTb3VyY2UsIE5TCiBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVy
Rm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJ
bWFnZSogY2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCkpIHsKLSAgICAgICAgaWYg
KFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVy
KCkpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGlu
aXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXSk7CisgICAgICAgIGlmIChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIg
PSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9w
dE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNo
YXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAg
ICB9CiAKICAgICBhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0K
aW5kZXggNmFhM2NkNTRlODJiOTliMzE5NDI3YmVlMzRjOGM0NGI2NzllMjI3OS4uNzZiMWEwMDlk
ZTQzMGZhM2I1NGQ5YTE1ZTY3OGNkODNmMzE0NWZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI0NSw3ICsy
NDUsNyBAQCBzdGF0aWMgYm9vbCBzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0YShjb25z
dCBGcmFtZSYgZnJhbWUpCiAKICNlbmRpZgogCi1zdGF0aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+
IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQm
IGRvY3VtZW50LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQorc3RhdGljIFJlZjxEb2N1
bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJh
bWUsIERvY3VtZW50JiBkb2N1bWVudCwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJl
ZFNpemUpCiB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBhdXRvIGF0dGFj
aG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1l
bnRUYWcsIGRvY3VtZW50KTsKQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNl
UmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50
JiBmcgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSBy
ZXNvdXJjZUVudHJ5LT52YWx1ZTsKLSAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFw
cGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUo
KSwgcmVzb3VyY2UtPmRhdGEoKSB9KTsKKyAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmFwcGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5
cGUoKSwgcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpIH0pOwogICAgIH0KIAogICAg
IGlmICghc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmlzRW1wdHkoKSkKQEAgLTMzMiw3ICszMzIs
NyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICBuYW1lID0gIm1lZGlhIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNl
cnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5
cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIGltYWdlIH0pOworICAgICAgICBhdHRhY2ht
ZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUt
Pm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIGlt
YWdlIH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVzY2VuZGFudHNPZlR5
cGU8SFRNTE9iamVjdEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0
YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUs
IERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIG5hbWUgPSAiZmlsZSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5m
by5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJl
c291cmNlLT52YWx1ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNl
cnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5
cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0IH0p
OwogICAgIH0KIAogICAgIGZvciAoYXV0byYgaW5mbyA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZv
KSB7CkBAIC00MjgsNyArNDI4LDcgQEAgc3RydWN0IE1hcmt1cEFuZEFyY2hpdmUgewogICAgIFJl
ZjxBcmNoaXZlPiBhcmNoaXZlOwogfTsKIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5k
QXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNI
VE1MKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1
cEFuZEFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6OmZ1
bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKIHsKICAg
ICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoVVJMKCksIGJ1ZmZlcik7
CiAgICAgaWYgKCFhcmNoaXZlKQpAQCAtNDQyLDcgKzQ0Miw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZl
ciYgYnVmCiAgICAgaWYgKCFjYW5TaG93TUlNRVR5cGVBc0hUTUwodHlwZSkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmlu
Zzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRh
dGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxl
YXNlTm9uTnVsbCgpIH07CisgICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZy
b21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFp
blJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCks
IGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9OwogfQogCiBzdGF0aWMgU3RyaW5nIHNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1
bWVudCwgTWFya3VwQW5kQXJjaGl2ZSYgbWFya3VwQW5kQXJjaGl2ZSwgTVNPTGlzdFF1aXJrcyBt
c29MaXN0UXVpcmtzLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNh
blNob3dNSU1FVHlwZUFzSFRNTCkKQEAgLTQ4MSw3ICs0ODEsNyBAQCBzdGF0aWMgU3RyaW5nIHNh
bml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRp
b25Eb2N1bQogICAgICAgICBpZiAoIXNob3VsZFJlcGxhY2VTdWJyZXNvdXJjZVVSTChzdWJmcmFt
ZVVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBNYXJrdXBBbmRBcmNoaXZl
IHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJj
ZS0+ZGF0YSgpLmRhdGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLAor
ICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9t
VVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLAogICAgICAgICAgICAgc3Vi
ZnJhbWVNYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgc3ViZnJhbWVBcmNoaXZlLmNvcHlS
ZWYoKSB9OwogICAgICAgICBhdXRvIHN1YmZyYW1lTWFya3VwID0gc2FuaXRpemVNYXJrdXBXaXRo
QXJjaGl2ZShmcmFtZSwgZGVzdGluYXRpb25Eb2N1bWVudCwgc3ViZnJhbWVDb250ZW50LCBNU09M
aXN0UXVpcmtzOjpEaXNhYmxlZCwgY2FuU2hvd01JTUVUeXBlQXNIVE1MKTsKIApAQCAtNDk3LDcg
KzQ5Nyw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYg
ZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgcmV0dXJuIHNhbml0aXplZE1h
cmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChXVEZNb3ZlKGZyYWdtZW50KSwgKnN0YWdpbmdEb2N1
bWVudCwgbXNvTGlzdFF1aXJrcywgbWFya3VwQW5kQXJjaGl2ZS5tYXJrdXApOwogfQogCi1ib29s
IFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQor
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVG
b3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNTMyLDcgKzUzMiw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUo
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29u
dGVudE1hcmt1cFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiti
b29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTYxMiwxMiArNjEyLDEyIEBAIGJvb2wgV2ViQ29udGVudE1hcmt1
cFJlYWRlcjo6cmVhZEhUTUwoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuICFtYXJr
dXAuaXNFbXB0eSgpOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJl
ZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3Vt
ZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAg
ICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBz
dHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTYyNiwxMSArNjI2LDExIEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVu
dE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNv
bnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVz
Om51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdt
ZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7
CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjM5LDEyICs2
MzksMTIgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVy
OjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpy
ZWFkUlRGKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUu
c2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJp
YnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBm
cmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0
KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY1Mywx
MSArNjUzLDExIEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVh
ZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3Vw
UmVhZGVyOjpyZWFkUlRGKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBp
ZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIHN0
cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1
ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwor
ICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRv
Y3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZy
YWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJh
Z21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY3Niw3ICs2NzYsNyBAQCBib29sIFdl
YkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXpl
IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJ
bWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
dHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQogewogICAg
IEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5k
b2N1bWVudCgpOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogICAgIHJldHVybiBhdHRhY2htZW50OwogfQogCi1zdGF0aWMgUmVmPEhUTUxFbGVt
ZW50PiBhdHRhY2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRh
dGlvblNpemUgcHJlZmVycmVkU2l6ZSkKK3N0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1l
bnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlv
blNpemUgcHJlZmVycmVkU2l6ZSkKIHsKICAgICBSZWYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1l
bnQoKTsKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0
ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKQEAgLTgzMyw3ICs4MzMsNyBA
QCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdGl0bGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRh
dGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVmZmVyKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAg
ICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAppbmRleCA2
MDQ4NmU3MWFkNTlmZWNjNzE1ZmYwYTA5YjFjMzU1OGI3YjM0MmMyLi5kM2U5ODE5YmQ1MzFmODQ4
NmEzMTdhYjlmOWVkODNhOTg4NWJlMmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNzEsNyArNzEsNyBAQCBib29sIFdl
YkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXpl
IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJ
bWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
dHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQogewogICAg
IEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5k
b2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCA0NWQ5MzNlMTNjYTRkMjI1MWM1ZGVk
ODQ4YWE5ZTk4NzJjNzY3NDg5Li5iY2E2Njk2ZWJlNmYwZWRkZGRlZTc5YjczYzNlZTE0NDk2ZDgy
ZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBCbG9iTG9h
ZGVyOwogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgUmVhZGFibGVTdHJlYW07CiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEV4Y2VwdGlv
bk9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVl
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAppbmRl
eCA1NTllYmNjNDhjNWYwOTZhYzE5YmFlN2Q5ZjcxOGI3MWYyYTM1MzIyLi40MmY0MTgwZGZhODQy
N2UwZTYwZjgxZWI3OWIxOTE4N2NhZmRiYTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
TmV0d29ya1NlbmRRdWV1ZS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBOZXR3b3JrU2VuZFF1
ZXVlOjpwcm9jZXNzTWVzc2FnZXMoKQogICAgICAgICBib29sIHNob3VsZFN0b3BQcm9jZXNzaW5n
ID0gZmFsc2U7CiAgICAgICAgIHN3aXRjaE9uKG1fcXVldWUuZmlyc3QoKSwgW3RoaXNdKGNvbnN0
IENTdHJpbmcmIHV0ZjgpIHsKICAgICAgICAgICAgIG1fd3JpdGVTdHJpbmcodXRmOCk7Ci0gICAg
ICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgeworICAgICAgICB9LCBbdGhp
c10oUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CiAgICAgICAgICAgICBkYXRh
LT5mb3JFYWNoU2VnbWVudChtX3dyaXRlUmF3RGF0YSk7CiAgICAgICAgIH0sIFt0aGlzLCAmc2hv
dWxkU3RvcFByb2Nlc3NpbmddKFVuaXF1ZVJlZjxCbG9iTG9hZGVyPiYgbG9hZGVyKSB7CiAgICAg
ICAgICAgICBhdXRvIGVycm9yQ29kZSA9IGxvYWRlci0+ZXJyb3JDb2RlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCmluZGV4IDU1MWY3MGY5MTY3YjJiZmNiMjQ0
YmIyYjM3MDBiZmJhYWY1NDc5NmMuLmQyM2NmZWJiNDUwOGJjMzAwOTE1YmI5OTZkM2YxNTA2MmNl
MzUwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCkBAIC00
Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYjsKIGNsYXNzIEJs
b2JMb2FkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBOZXR3b3JrU2VuZFF1ZXVlIDogcHVibGljIENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKQEAgLTYzLDcgKzYzLDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NNZXNzYWdlcygpOwogCi0gICAgdXNpbmcg
TWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxDU3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPiwgVW5pcXVl
UmVmPEJsb2JMb2FkZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PENTdHJp
bmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgVW5pcXVlUmVmPEJsb2JMb2FkZXI+PjsK
ICAgICBEZXF1ZTxNZXNzYWdlPiBtX3F1ZXVlOwogCiAgICAgV3JpdGVTdHJpbmcgbV93cml0ZVN0
cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApp
bmRleCA1NmEwNmZjYWYyNzNkMjVkYzRjNzVkY2U1NjlhYWM4ZjFhYTU5NTI3Li5kMmI4NzQxYTA0
NDM0MmM3ZmZkOWU4YTUzM2NjOGExMjBlMjliYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgc3RhdGljIGJv
b2wgbWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VBdHRhY2htZW50KGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZShtaW1lVHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlwZSht
aW1lVHlwZSk7CiB9CiAKLXZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3Np
bmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQordm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2lu
Z0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGF1dG8qIGhvc3RFbGVtZW50ID0gc2hhZG93
SG9zdCgpOwogICAgIGlmICghaXM8SFRNTEltYWdlRWxlbWVudD4oaG9zdEVsZW1lbnQpIHx8ICFi
dWZmZXItPnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5oCmluZGV4IDU3M2VjMmVhZTFjZGMwNjA5ZjI2MWMzODQwMGJiMDJjNDgwZjdiZGQuLjY2MWRl
YzkzNzZkOGE5ZDZkNDcxN2ZkMGI0Y2U3ZjgyZmYwM2Y3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBGaWxl
OwogY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIFJlbmRlckF0dGFjaG1lbnQ7CiBjbGFz
cyBTaGFyZWFibGVCaXRtYXA7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1lbnQgZmluYWwgOiBwdWJs
aWMgSFRNTEVsZW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSFRNTEF0dGFjaG1l
bnRFbGVtZW50KTsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29weU5vbkF0
dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JikgZmluYWw7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUF0dHJpYnV0ZXMoc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4mJiBuZXdGaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBuZXdGaWxlbmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVFbmNs
b3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgZGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVFbmNsb3NpbmdJ
bWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVGh1bWJu
YWlsKGNvbnN0IFJlZlB0cjxJbWFnZT4mIHRodW1ibmFpbCk7CiAKICAgICBJbnNlcnRlZEludG9B
bmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWlu
ZXJOb2RlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApp
bmRleCA1MTcxYjljZGM3ODkzMTcxZTIxZTVmNGJmNTUwMTdlZjk0NGFjNzk1Li4xYTU2YmMwMzU5
Y2NlMWY1MGRjZGRhMDY1MjIyYTAxMDk1YTY5MDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKQEAgLTI5MzgsNyArMjkzOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6Y2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpCiAgICAg
YXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpOwogfQogCi12b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQo
Y29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEp
Cit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRp
b25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIG1lZGlhUGxheWVySW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0YS0+dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDY5
NTY2OTQ5NjMxMGVmOTEwOGI5NTZmZGE0ODIxNDMwMTQ5NzBlY2IuLjZjM2I2OTNiN2IxMGVkYTMw
ZTUxZDRjNjYzMWJlM2ZiNTBjYmY4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCkBAIC03MjAsNyArNzIwLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENETUNsaWVudAog
ICAgIHZvaWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpIGZp
bmFsOwotICAgIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNl
aXZlZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lk
IGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3Ry
aW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDQ0MmQwOTQ2YmUyNTBk
Y2NmNTkyN2JhYTkyNzkzYTcwZWU5MTkzM2UuLjAwZDhmMjM5ZDcxMjdjNjFjYWUxYjU4ZDljNGEz
MDNhOWIzYzkwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAtMTQx
LDcgKzE0MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6dXBkYXRlRHVyaW5nUGFyc2luZygpCiAg
ICAgaWYgKCFtX2ltYWdlRWxlbWVudCkKICAgICAgICAgY3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUo
KTsKIAotICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBsb2FkZXIoKS0+bWFp
blJlc291cmNlRGF0YSgpKQorICAgIGlmIChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSkKICAgICAgICAgbV9pbWFnZUVs
ZW1lbnQtPmNhY2hlZEltYWdlKCktPnVwZGF0ZUJ1ZmZlcigqYnVmZmVyKTsKIAogICAgIGltYWdl
VXBkYXRlZCgpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6ZmluaXNo
ZWRQYXJzaW5nKCkKIHsKICAgICBpZiAoIXBhcnNlcigpLT5pc1N0b3BwZWQoKSAmJiBtX2ltYWdl
RWxlbWVudCkgewogICAgICAgICBDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UgPSAqbV9pbWFnZUVs
ZW1lbnQtPmNhY2hlZEltYWdlKCk7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEg
PSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAKICAg
ICAgICAgLy8gSWYgdGhpcyBpcyBhIG11bHRpcGFydCBpbWFnZSwgbWFrZSBhIGNvcHkgb2YgdGhl
IGN1cnJlbnQgcGFydCwgc2luY2UgdGhlIHJlc291cmNlIGRhdGEKICAgICAgICAgLy8gd2lsbCBi
ZSBvdmVyd3JpdHRlbiBieSB0aGUgbmV4dCBwYXJ0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBhN2NhNzE2MmQ3
OTFlZDdmYmE4Y2M5MWMyMWEyY2YzYWY2ZTY5YTdlLi4xODc5M2ZmMDY2MzM4ZmI2MGEzNGRlYzkw
OWJjMmRkZDI4YmVhZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtODUwLDcgKzg1MCw3IEBAIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVxdWVzdChs
b2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1l
bnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0
d29ya0FnZW50LT5pbnRlcmNlcHRSZXNwb25zZShyZXNwb25zZSwgaWRlbnRpZmllciwgV1RGTW92
ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggOGU2NWM0ZWIxMDIzMzUyMWY0OGM3ZjRiMTIwYWQyYzg5
MDlhMDdiYS4uZDI5NTc4MTBkODM4MmM5MzUxZDVhOTNmMTQ0YWVkMTQ5M2JjYzY1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aApAQCAtOTMsNyArOTMsNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU2hhZG93Um9v
dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBj
bGFzcyBUaW1lckJhc2U7CiBjbGFzcyBXZWJLaXROYW1lZEZsb3c7CiBjbGFzcyBXZWJTb2NrZXRD
aGFubmVsOwpAQCAtMjM2LDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzaG91
bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVz
dChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+
JiYpOwotICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4pPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPik+JiYpOwogCiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29u
c29sZShQYWdlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsK
ICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKQEAg
LTQ0MSw3ICs0NDEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2Vw
dFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBp
bnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXIm
LCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMg
dm9pZCBpbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4m
Jik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3Nh
Z2VUb0NvbnNvbGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwogCkBAIC0xMjg5LDcgKzEyODksNyBAQCBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VM
b2FkZXImIGxvYWRlciwgRgogICAgICAgICBpbnRlcmNlcHRSZXF1ZXN0SW1wbCgqYWdlbnRzLCBs
b2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NF
UlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFt
ZSwgcmVzcG9uc2UpKTsKICAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50
cyhmcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCmluZGV4IDYxZTRiYzNiYTAxOWVlMjVlNWM4
YmMyMjFkZmY2MDc3ZWRkYjg2M2QuLmYwNjQwM2E2MjM0YjQyYjZhZDJhODBiMDE5NGE1OTZkODlm
NmU2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoUmVz
b3VyY2VMb2FkZXImIGxvCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRS
ZXF1ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1l
JiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK3ZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNv
bnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYm
IGhhbmRsZXIpCiB7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNw
b25zZShmcmFtZSwgcmVzcG9uc2UsIGlkZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbldlYktpdC5oCmluZGV4IGY3NjExNGNlOThmNDJhN2ZmOTA2YTQ4ZDA0MjBiOTYzMDVk
MzY5MTQuLjA3YjQyMWI1OWMxNTU1ZTFhMjkxZTE4ZWJiMjYyMjEyMmYxNjU4YjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJL
aXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0LmgKQEAgLTM2LDIwICszNiwyMCBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIFJlc291
cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIFdFQkNPUkVfRVhQT1JUIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdCB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFt
ZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVy
Y2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAg
IHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNl
cHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50
ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogcHJp
dmF0ZToKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoY29u
c3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91
bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNv
dXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwot
ICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29u
c3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIH07CiAKIGlubGluZSBib29sIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBG
cmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTc2LDcgKzc2
LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNl
cHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2EKICAgICBpbnRlcmNlcHRSZXF1ZXN0SW50ZXJu
YWwobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSogZnJh
bWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCitpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZy
YW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxk
SW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAgaW50ZXJjZXB0UmVzcG9u
c2VJbnRlcm5hbCgqZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmYzMmY2
NjBiOTE3M2JhZThkNWNkOWExMzBlYWU1OGI5N2Q1ZWNlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtNDcsNiArNDcsNyBA
QCBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplID0g
NTAgKiAxMDAwICogMTAwMDsgLy8gNTBNQgogTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcm
IGxvYWRlcklkKQogICAgIDogbV9yZXF1ZXN0SWQocmVxdWVzdElkKQogICAgICwgbV9sb2FkZXJJ
ZChsb2FkZXJJZCkKKyAgICAsIG1fZGF0YUJ1ZmZlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTY0LDcgKzY1LDcgQEAgdW5zaWduZWQgTmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCgpCiAgICAgaWYgKGhhc0Rh
dGEoKSkgewogICAgICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAgICAgICAgIHJlc3VsdCA9
IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOwor
ICAgICAgICBtX2RhdGFCdWZmZXItPnJlc2V0KCk7CiAgICAgfQogCiAgICAgaWYgKGhhc0NvbnRl
bnQoKSkgewpAQCAtODEsMzYgKzgyLDM3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgpCiAgICAgcmV0dXJuIHJlbW92ZUNvbnRlbnQo
KTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRh
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fZGF0YUJ1ZmZlci0+aXNOdWxsKCk7Cit9CisKIHNp
emVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAw
OworICAgIHJldHVybiBtX2RhdGFCdWZmZXItPnNpemUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKLSAgICBp
ZiAoIW1fZGF0YUJ1ZmZlcikKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBtX2RhdGFCdWZmZXIt
PmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGFCdWZmZXItPmFwcGVuZChkYXRh
LCBkYXRhTGVuZ3RoKTsKIH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50
KCkpOwogCi0gICAgc2l6ZV90IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZlci0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpOwor
ICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9kZWNv
ZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRl
bnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRh
TGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChi
dWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNl
NjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJp
bmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQg
PSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAg
fQogCi0gICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKLQogICAgIHJldHVybiBtX2NvbnRlbnQu
c2l6ZUluQnl0ZXMoKSAtIGRhdGFMZW5ndGg7CiB9CiAKQEAgLTI2Nyw3ICsyNjksNyBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgQ2FjaGVkUmVzbwogICAgIHJlc291cmNlRGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2Uo
Y2FjaGVkUmVzb3VyY2UpOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRSZXNv
dXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKK3ZvaWQgTmV0
d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNl
RGF0YSA9IHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogICAgIGlmICghcmVz
b3VyY2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaAppbmRleCBlZmEwMDA1M2FlMTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3Li5l
ZTM5NDU3Zjc2NzJlYWNhYWM5MGE1YjZiYzg4MTEwOGNiZGE4YTg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgog
I2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCkBAIC00MCw3ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhY2hlZFJl
c291cmNlOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29k
ZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwor
Y2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtODgsOCArOTAsOCBAQCBwdWJsaWM6
CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZWNvZGVyLmNvcHlSZWYoKTsgfQogICAgICAgICB2b2lkIHNldERlY29kZXIoUmVm
UHRyPFRleHRSZXNvdXJjZURlY29kZXI+JiYgZGVjb2RlcikgeyBtX2RlY29kZXIgPSBXVEZNb3Zl
KGRlY29kZXIpOyB9CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIuY29weVJlZigpOyB9Ci0gICAgICAgIHZvaWQgc2V0QnVmZmVy
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fYnVmZmVyID0gV1RGTW92ZShidWZm
ZXIpOyB9CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlci5jb3B5UmVmKCk7IH0KKyAgICAgICAgdm9pZCBzZXRCdWZm
ZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fYnVmZmVyID0g
V1RGTW92ZShidWZmZXIpOyB9CiAKICAgICAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxDZXJ0aWZp
Y2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRl
SW5mbzsgfQogICAgICAgICB2b2lkIHNldENlcnRpZmljYXRlSW5mbyhjb25zdCBzdGQ6Om9wdGlv
bmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmljYXRlSW5mbykgeyBtX2NlcnRpZmljYXRlSW5m
byA9IGNlcnRpZmljYXRlSW5mbzsgfQpAQCAtMTAzLDEwICsxMDUsMTAgQEAgcHVibGljOgogICAg
ICAgICBXYWxsVGltZSByZXNwb25zZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9u
c2VUaW1lc3RhbXA7IH0KICAgICAgICAgdm9pZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGlt
ZSB0aW1lKSB7IG1fcmVzcG9uc2VUaW1lc3RhbXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBo
YXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAg
Ym9vbCBoYXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1
ZmZlcjsgfQorICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRh
dGFMZW5ndGgoKSBjb25zdDsKICAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRv
Q29udGVudCgpOwpAQCAtMTE5LDggKzEyMSw4IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1f
dGV4dEVuY29kaW5nTmFtZTsKICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJl
ZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fZGF0YUJ1ZmZlcjsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CisgICAgICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZm
ZXI7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAg
ICAgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJbmZvOwog
ICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9jYWNoZWRSZXNvdXJjZSB7IG51bGxwdHIgfTsKICAg
ICAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgbV90eXBlIHsgSW5zcGVjdG9y
UGFnZUFnZW50OjpPdGhlclJlc291cmNlIH07CkBAIC0xNDQsNyArMTQ2LDcgQEAgcHVibGljOgog
ICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAg
ICB2b2lkIG1heWJlRGVjb2RlRGF0YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7
CiAgICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2Fj
aGVkUmVzb3VyY2UqKTsKLSAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUpOworICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwogICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0
YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRh
Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZW1vdmVDYWNo
ZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4
NGEyODg0MmZiYzU2Mjg5Mzc2MWQ3MWU0Yzc0Mjc0ZWJiMTguLjE4OWYyNmIwOThiNzM2MWRjZjhl
OWQ2NGUzNTllNzVmZDljMDk3MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTExNDAsNyArMTE0
MCw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291
cmNlTG9hZGVyJiBsb2FkZXIsIEZ1bmN0aW9uPHZvCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PnJlcXVlc3RJbnRlcmNlcHRlZChyZXF1ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1
ZXN0KGxvYWRlci5yZXF1ZXN0KCkpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIp
Cit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1f
ZW5hYmxlZCk7CiAgICAgQVNTRVJUKG1faW50ZXJjZXB0aW9uRW5hYmxlZCk7CkBAIC0xMjQzLDcg
KzEyNDMsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShjb25zdAogICAgICAgICBvdmVycmlkZVJlc3Bv
bnNlLnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIG92ZXJy
aWRlUmVzcG9uc2UubWltZVR5cGUoKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gb3ZlcnJpZGVEYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdmVy
cmlkZURhdGE7CiAgICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIg
PSBiYXNlNjREZWNvZGUoY29udGVudCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTI3MSw3
ICsxMjcxLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29y
a0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnMKICAgICBpZiAobG9hZGVyLT5yZWFj
aGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJs
ZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zKTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0
byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVudCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpA
QCAtMTQwNywxMiArMTQwNywxMiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVk
UmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3RyaQogICAgICAgICBp
ZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1l
VHlwZSgpKSkgewogICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNw
b25zZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7CiAgICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9
IGZhbHNlOwotICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVj
b2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAg
ICAgICAgKmJhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5j
b2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJl
c3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5oCmluZGV4IDhmNmZiY2MyOTNhZWJmOGI5ZDVjOTQ1ZDI4MjlhMTUyN2I3NGJjN2Yu
LjZiY2Q4N2RkY2Q4YjA0NDEzMDhkMWQwMWVjYTZiMGU2ZGExNDEzZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
aApAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICBib29sIHdpbGxJbnRlcmNlcHQoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4pPiYmKTsKKyAgICB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYp
OwogICAgIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZv
aWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwogCiAgICAgdm9pZCBzZWFyY2hPdGhlclJl
cXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mLCBSZWY8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYpOwpAQCAtMTg1
LDcgKzE4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBlbmRp
bmdJbnRlcmNlcHRSZXNwb25zZSk7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIHB1YmxpYzoKLSAgICAgICAgUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIG9yaWdpbmFsUmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICAgICAgUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIG9yaWdpbmFsUmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiAgICAgICAgICAgICA6IG1fb3JpZ2luYWxSZXNwb25zZShvcmlnaW5h
bFJlc3BvbnNlKQogICAgICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQogICAgICAgICB7IH0KQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgcmVzcG9uZChtX29yaWdpbmFsUmVzcG9uc2UsIG51bGxwdHIpOwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCByZXNwb25kKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhKQorICAgICAgICB2b2lkIHJlc3BvbmQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBkYXRhKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIW1fcmVzcG9uZGVk
KTsKICAgICAgICAgICAgIGlmIChtX3Jlc3BvbmRlZCkKQEAgLTIxNSw3ICsyMTUsNyBAQCBwcml2
YXRlOgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBtX29yaWdpbmFs
UmVzcG9uc2U7Ci0gICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAg
ICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKICAgICAg
ICAgYm9vbCBtX3Jlc3BvbmRlZCB7IGZhbHNlIH07CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4
IDNkYWZlNjQzN2RmMTIxMDQwNWZlZmJmMzc1Nzg1ZmVjZDVlYWM0NzIuLjFiNjQ2YWEyMTczYWI1
NGEzZjFhYmRjYjUwMjA0YWRlOThjMDczYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEwMCwxNSArMTAw
LDE1IEBAIHN0YXRpYyBib29sIGRlY29kZUJ1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHVu
c2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50
OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2Rl
LCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBm
cmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghYnVmZmVyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0
YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQo
KS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gSW5z
cGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRo
QmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCi1ib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hh
cmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVz
dWx0KQorYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAg
cmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5j
b2RlLCByZXN1bHQpOworICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgp
IDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAog
Ym9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRo
QmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIElu
c3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KFByb3RvY29sOjpFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIEZyYQogICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBpZiAoZXF1
YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwsIGxvYWRlci0+dXJsKCkpKSB7CiAgICAg
ICAgICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCBiNTFhZGRiMWJkOGYyY2Nl
Njk1NjA3OTljZDFkOTUyZDJkZTQyODM4Li4zZDVlNTY2ZGJlMGM1ZWMxMWQ5ZThkZjY3ZmNmMGE3
MDk4OGEyZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgSW5zcGVjdG9yQ2xp
ZW50OwogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJP
YmplY3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdl
bnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JQYWdlQWdlbnQpOwpAQCAtNzUsNyAr
NzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIE90aGVyUmVzb3VyY2UsCiAgICAgfTsKIAotICAgIHN0
YXRpYyBib29sIHNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmlu
ZyogcmVzdWx0KTsKKyAgICBzdGF0aWMgYm9vbCBzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwogICAgIHN0YXRpYyBWZWN0
b3I8Q2FjaGVkUmVzb3VyY2UqPiBjYWNoZWRSZXNvdXJjZXNGb3JGcmFtZShGcmFtZSopOwogICAg
IHN0YXRpYyB2b2lkIHJlc291cmNlQ29udGVudChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0
cmluZyYsIEZyYW1lKiwgY29uc3QgVVJMJiwgU3RyaW5nKiByZXN1bHQsIGJvb2wqIGJhc2U2NEVu
Y29kZWQpOwogICAgIHN0YXRpYyBTdHJpbmcgc291cmNlTWFwVVJMRm9yUmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCBi
NGU2YTNhNTNiNGMwYzBkYTFjMzE3MmRkNDJjYWU2YThjZDIxZjdhLi42YWU1MjY1OTdjZDI4NjMx
YmU3OTUwZmMzMzUzNmY4ZjM0N2Q3YWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVy
UmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NFUlQobV9zdGF0
ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQ
b2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICBpZiAoYXV0
byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICBt
X2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+
ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGllbnQuZGF0YVJl
Y2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBV
UkwmIGJsb2NrZWRQYWdlVVJMKCkKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIENvbnRlbnRGaWx0
ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCiB7CiAgICAgQVNTRVJUKHdpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9y
KSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEgeyBtX2Jsb2Nr
aW5nQ29udGVudEZpbHRlci0+cmVwbGFjZW1lbnREYXRhKCkgfTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhIHsgbV9ibG9ja2luZ0NvbnRlbnRGaWx0
ZXItPnJlcGxhY2VtZW50RGF0YSgpIH07CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7
IFVSTCgpLCAidGV4dC9odG1sIl9zLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHJlcGxhY2VtZW50
RGF0YS0+c2l6ZSgpKSwgIlVURi04Il9zIH07CiAgICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0
ZURhdGEgeyBXVEZNb3ZlKHJlcGxhY2VtZW50RGF0YSksIGVycm9yLmZhaWxpbmdVUkwoKSwgcmVz
cG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OkhpZGRlbiB9
OwogICAgIFNldEZvclNjb3BlPGJvb2w+IGxvYWRpbmdCbG9ja2VkUGFnZSB7IG1faXNMb2FkaW5n
QmxvY2tlZFBhZ2UsIHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCmluZGV4IGMzZDg0NTBmNzFjMmMzNzNkMmFmMWNjY2ZiMjE1YWQ4MWJmODBkMGIuLjNiOTBl
ZjRjNTgyN2U2YzBiNDliMzQ2NTZiM2NkNzFhOGVkYTk2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIERvY3VtZW50TG9hZGVy
Ojp+RG9jdW1lbnRMb2FkZXIoKQogI2VuZGlmCiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IERv
Y3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSgpIGNvbnN0CiB7
CiAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbV9z
dWJzdGl0dXRlRGF0YS5jb250ZW50KCktPmNvcHkoKTsKQEAgLTE2MDgsMTEgKzE2MDgsMTEgQEAg
Ym9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBhZGRBbGxBcmNo
aXZlUmVzb3VyY2VzKCptX2FyY2hpdmUpOwogICAgIEFTU0VSVChtX2FyY2hpdmUtPm1haW5SZXNv
dXJjZSgpKTsKICAgICBhdXRvJiBtYWluUmVzb3VyY2UgPSAqbV9hcmNoaXZlLT5tYWluUmVzb3Vy
Y2UoKTsKLSAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gJm1haW5SZXNvdXJjZS5kYXRhKCk7Cisg
ICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9IG1haW5SZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3Vv
dXMoKTsKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7
CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YShtYWlu
UmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOworICAg
IGNvbW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0
YSgpLnNpemUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTE2NzEsNyArMTY3
MSw3IEBAIEFyY2hpdmVSZXNvdXJjZSogRG9jdW1lbnRMb2FkZXI6OmFyY2hpdmVSZXNvdXJjZUZv
clVSTChjb25zdCBVUkwmIHVybCkgY29uc3QKIAogUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9j
dW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZSgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gZGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAg
ICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8mIHJlc3BvbnNl
ID0gdGhpcy0+cmVzcG9uc2UoKTsKQEAgLTIyNTUsOCArMjI1NSw4IEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQoKQogCiAgICAgZnJhbWVM
b2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7
Ci0gICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXpl
KCkpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBt
YWluUmVzb3VyY2VEYXRhKCk7CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3Vt
ZW50TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKQEAgLTIyOTIsNyArMjI5Miw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQogICAgIG1fZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLmdldExvYWREZWNpc2lvbkZvckljb25zKGljb25EZWNpc2lvbnMpOwogfQogCi12
b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNp
b24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJl
ZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGlk
R2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBpY29uID0gbV9pY29uc1BlbmRpbmdMb2Fk
RGVjaXNpb24udGFrZShsb2FkSWRlbnRpZmllcik7CiAKQEAgLTIzMTMsNyArMjMxMyw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lv
biwgdWludDY0X3QgbG9hZElkZW50CiAgICAgcmF3SWNvbkxvYWRlci0+c3RhcnRMb2FkaW5nKCk7
CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRl
ciYgbG9hZGVyLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmZp
bmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYgbG9hZGVyLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBidWZmZXIpCiB7CiAgICAgLy8gSWYgdGhlIERvY3VtZW50TG9hZGVyIGhhcyBkZXRhY2hl
ZCBmcm9tIGl0cyBmcmFtZSwgYWxsIGljb24gbG9hZHMgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVu
IGNhbmNlbGxlZC4KICAgICBBU1NFUlQobV9mcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCmluZGV4IGZiZjU0NWM0NjBlNGU0ODlkODdiMjVjMGU4NWVjY2NhNGNiZjNj
ODcuLjMzOTg3M2Q1ZDNmYjliYjMwMDQ5OGNkNmYzN2NiZjY1Yjc4YWY1YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENh
Y2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZpbHRlcjsKK2NsYXNzIFNoYXJlZEJ1
ZmZlcjsKIHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFz
cyBGcmFtZTsKQEAgLTgzLDcgKzg0LDcgQEAgY2xhc3MgSWNvbkxvYWRlcjsKIGNsYXNzIFBhZ2U7
CiBjbGFzcyBQcmV2aWV3Q29udmVydGVyOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU1dDbGll
bnRDb25uZWN0aW9uOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTdWJzdGl0dXRl
UmVzb3VyY2U7CkBAIC0xNzEsNyArMTcyLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
U3VicmVzb3VyY2VMb2FkZXIqIG1haW5SZXNvdXJjZUxvYWRlcigpIGNvbnN0OwotICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJl
c291cmNlRGF0YSgpIGNvbnN0OwogICAgIAogICAgIERvY3VtZW50V3JpdGVyJiB3cml0ZXIoKSBj
b25zdCB7IHJldHVybiBtX3dyaXRlcjsgfQogCkBAIC0zOTIsOCArMzkzLDggQEAgcHVibGljOgog
I2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0SWNvbkxvYWRpbmcoKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3Qg
bG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYp
OwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgU2hhcmVkQnVmZmVy
Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJv
b2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRp
bmdJY29uKEljb25Mb2FkZXImLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICAgICBjb25z
dCBWZWN0b3I8TGlua0ljb24+JiBsaW5rSWNvbnMoKSBjb25zdCB7IHJldHVybiBtX2xpbmtJY29u
czsgfQogCkBAIC02MjEsNyArNjIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fd2FpdGluZ0Zv
ck5hdmlnYXRpb25Qb2xpY3kgeyBmYWxzZSB9OwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgTGlu
a0ljb24+IG1faWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uOwotICAgIEhhc2hNYXA8c3RkOjp1bmlx
dWVfcHRyPEljb25Mb2FkZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciop
Pj4gbV9pY29uTG9hZGVyczsKKyAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVy
PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+PiBtX2lj
b25Mb2FkZXJzOwogICAgIFZlY3RvcjxMaW5rSWNvbj4gbV9saW5rSWNvbnM7CiAKICNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmlu
ZGV4IGUxM2UyODZlMTRmNGZlOGZkN2RmOTBhMGUxNTFmMDkzNDE4ZGRkYjEuLjA4YTBhZTE5YTM3
OTg0NmYxNTc1NjRjMmQwYzgzMmIyNzQ4MzYwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNsYXNzIENh
Y2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50OwogY2xh
c3MgRG9jdW1lbnRMb2FkZXI7CkBAIC03Niw3ICs3Nyw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3Mg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3Rp
dHV0ZURhdGE7CiAKIGVudW0gY2xhc3MgQ2FjaGVQb2xpY3kgOiB1aW50OF90OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA0ZmQ2MzdhOTAxNGE1ZDQxYTIy
NmVlNDU5MTdiNmIzZTlhNzkwZWJiLi5lZTlmM2QwYzk4NGQ0NTVjYmI5MWI0NjBjMWJjMTI4OThk
MTIzNjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAt
OTgsNyArOTgsNyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJz
dGl0dXRlRGF0YTsKIGNsYXNzIFdpZGdldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3Ry
YXRlZ3kuaAppbmRleCBhZWY2NjhiZDYzZWQ1ZmNkNDVlNjFlOWQxZjEwN2NmYjZhZWYyNjRiLi4y
OWQyZTNmNDYxNDBhYWE1MTE2MGU2YTI4NTYyZjM3MGUzNzFlYjIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBSZXNvdXJjZUxv
YWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBj
bGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIAogc3RydWN0IEZldGNo
T3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIuY3BwCmluZGV4IDYzMzc1NTk2MzIwMDE0NjM4Mjg5ZTI4MjYwNGM1NWIwYWY0
NDUzMTMuLjYwNDNhYzliZTI2N2VhNGZiYzcxZTExMThiOTA3OTE1NWUzOTE1MDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNw
cApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGUKICAgICBkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5n
dGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3Zv
aWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBk
YXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQog
ewogICAgIFJlZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhp
cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyLmgKaW5kZXggNDhiYjIxNTNjOTNmMmRjNzU0ZTIwNzMyMjUyYzA1MDljZjcwNGE0MS4u
YjUxNzRlZGM5NGI5OTIzOTAyMDVmMGZhZDQ1MmVhNWFjMzg3ODkzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKQEAgLTYzLDcg
KzYzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApAQCAtNzQsNyArNzQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBp
bnQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKIAogICAgIHZvaWQgbm90aWZ5
RG9uZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlw
dG9ncmFwaGljRGlnZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3QuY3BwCmluZGV4IGM2Mjc3Njg1OGE2ZGM1YWZmZDM2ZGM5ZTc4NWM4YmQy
NDcyYmI3NGQuLmQ5NGI3MDAwNzQxY2Q5MTJiOTE3M2UyYjM3NDZkNGRhOGIzNjhhNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdl
c3QuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNy
eXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWcKICAgICBy
ZXR1cm4geyBhbGdvcml0aG0sIGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKSB9OwogfQogCi1S
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1
ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0sIGNv
bnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNy
eXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZmZXIoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBi
dWZmZXIpCiB7CiAgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3Jl
YXRlKHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGFsZ29yaXRobSkpOwogICAgIGlmIChidWZmZXIp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3QuaAppbmRleCBhZWEzZGM1N2M4NzgzMTMwMTNhNWIxNmM5MzliNzc0ZWQ0ODQzMjRjLi44
M2I4NjEzY2ZkYTIzMjlhZTMwYmJmNmFiYzE0Yjk5ZDQ0MjM3YjAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCkBAIC0zNCw3
ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFJlc291cmNlOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3Ry
dWN0IFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCB7CiAgICAgZW51bSBjbGFzcyBBbGdvcml0
aG0gewpAQCAtNzUsNyArNzUsNyBAQCBzdGQ6Om9wdGlvbmFsPEVuY29kZWRSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3Q+IHBhcnNlRW5jb2RlZENyeXB0b2dyYXBoaWNEaWdlcwogCiBzdGQ6Om9w
dGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gZGVjb2RlRW5jb2RlZFJlc291cmNl
Q3J5cHRvZ3JhcGhpY0RpZ2VzdChjb25zdCBFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0Jik7CiAKLVJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0
Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBj
b25zdCBTaGFyZWRCdWZmZXIqKTsKK1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9n
cmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6
QWxnb3JpdGhtLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiBSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvckJ5dGVzKFJlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBjb25zdCB2b2lkKiBieXRlcywgc2l6ZV90IGxlbmd0
aCk7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGFh
ODViYjRkM2NhODcxNDViYjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLmRmMTM5NTg4ZThkNTI1MmIz
ZWVjNjE5M2FlNjFhYTI0Nzg2YjIxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcApAQCAtNzYsNiArNzYsNyBAQCBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9J
REVOVElGSUVSKFJlc291cmNlTG9hZGVyKTsKIFJlc291cmNlTG9hZGVyOjpSZXNvdXJjZUxvYWRl
cihGcmFtZSYgZnJhbWUsIFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zKQogICAgIDogbV9m
cmFtZSB7ICZmcmFtZSB9CiAgICAgLCBtX2RvY3VtZW50TG9hZGVyIHsgZnJhbWUubG9hZGVyKCku
YWN0aXZlRG9jdW1lbnRMb2FkZXIoKSB9CisgICAgLCBtX3Jlc291cmNlRGF0YSB7IG1ha2VVbmlx
dWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX2RlZmVyc0xvYWRpbmcgeyBv
cHRpb25zLmRlZmVyc0xvYWRpbmdQb2xpY3kgPT0gRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dE
ZWZlcnNMb2FkaW5nICYmIGZyYW1lLnBhZ2UoKS0+ZGVmZXJzTG9hZGluZygpIH0KICAgICAsIG1f
b3B0aW9ucyB7IG9wdGlvbnMgfQogewpAQCAtMTE4LDcgKzExOSw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMoKQogCiAgICAgbV9pZGVudGlmaWVyID0geyB9OwogCi0g
ICAgbV9yZXNvdXJjZURhdGEgPSBudWxscHRyOworICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgp
OwogICAgIG1fZGVmZXJyZWRSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiB9CiAKQEAgLTE4
OSw3ICsxOTAsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjppbml0KFJlc291cmNlUmVxdWVzdCYm
IGNsaWVudFJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaQogICAgIH0pOwogfQogCi12b2lk
IFJlc291cmNlTG9hZGVyOjpkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUmVz
b3VyY2VMb2FkZXI6OmRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsK
ICAgICBkaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpXSgpIG11dGFibGUgewogICAg
ICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKQEAgLTMxOCw3ICszMTksNyBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KERhdGFCdWZmZXJpbmdQb2xp
Y3kgZGF0YUJ1ZmZlcmluZ1BvbAogCiAgICAgLy8gUmVzZXQgYW55IGFscmVhZHkgYnVmZmVyZWQg
ZGF0YQogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkRvTm90QnVmZmVyRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBudWxscHRyOworICAg
ICAgICBtX3Jlc291cmNlRGF0YS0+cmVzZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6
d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKQEAgLTMyOSwyOSArMzMwLDI5IEBAIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSgpCiAgICAg
ICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0
YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmVkQnVm
ZmVyKiBidWZmZXIsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291
cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIERhdGFQYXlsb2FkVHlwZSBk
YXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgaWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5
ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKCFtX3Jlc291cmNlRGF0YSB8fCBkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBh
eWxvYWRXaG9sZVJlc291cmNlKSB7Ci0gICAgICAgIGlmIChidWZmZXIpCi0gICAgICAgICAgICBt
X3Jlc291cmNlRGF0YSA9IGJ1ZmZlcjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9yZXNv
dXJjZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIAorICAgIGlmIChkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBheWxv
YWRXaG9sZVJlc291cmNlKQorICAgICAgICBtX3Jlc291cmNlRGF0YS0+cmVzZXQoKTsKKwogICAg
IGlmIChidWZmZXIpCiAgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoKmJ1ZmZlcik7CiAg
ICAgZWxzZQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9
CiAKK2NvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJj
ZURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS0+Z2V0KCkuZ2V0KCk7
Cit9CisKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVzb3VyY2VEYXRhKCkKIHsKLSAgICBp
ZiAobV9yZXNvdXJjZURhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhLT5jbGVhcigpOworICAg
IGlmICghbV9yZXNvdXJjZURhdGEtPmlzTnVsbCgpKQorICAgICAgICBtX3Jlc291cmNlRGF0YS0+
ZW1wdHkoKTsKIH0KIAogYm9vbCBSZXNvdXJjZUxvYWRlcjo6aXNTdWJyZXNvdXJjZUxvYWRlcigp
IGNvbnN0CkBAIC01NTEsMTQgKzU1MiwxNCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbAogICAg
IGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0
YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRh
dGFQYXlsb2FkVHlwZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAs
IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9
CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxv
YWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5
IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEgU2hhcmVkQnVmZmVyLgorICAgIC8vIFRoaXMgbWV0aG9k
IHNob3VsZCBvbmx5IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ci4KICAgICBBU1NFUlQoIWJ1ZmZlciB8fCAoIWRhdGEgJiYgIWxlbmd0aCkpOwogCiAgICAgLy8g
UHJvdGVjdCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFs
IHByb2Nlc3NpbmcgY2FuIGRvCkBAIC01NzEsNyArNTcyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgKICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3Jr
aW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAgLy8gQ291bGQg
YmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZpbGUuCiAgICAgaWYgKG1fb3B0aW9ucy5z
ZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3MgJiYg
bV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0
YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+
c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7Cisg
ICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVm
ZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0
aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpAQCAtNzM1LDcgKzczNiw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduCiAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3Ro
LCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKLXZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGRpZFJlY2Vp
dmVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRC
eXRlcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRmZDJi
ZjBiYmIzYjFiZDIxNTQ1ZGI1MmMyZTFjYTY0ZWU0MmI5MTcuLjU0YjFiODY2ZGY4OTZhODRiNGNh
Mjk3ZWU0NzZkNmQwYjY2MWZkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtNTUsNiArNTYsOCBAQCBjbGFzcyBGcmFtZTsK
IGNsYXNzIEZyYW1lTG9hZGVyOwogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlcjsKIGNsYXNzIE5l
dHdvcmtMb2FkTWV0cmljczsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBT
aGFyZWRCdWZmZXJCdWlsZGVyOwogCiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJ
RklFUihSZXNvdXJjZUxvYWRlcik7CiBjbGFzcyBSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4sIHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlTG9h
ZGVyPiwgcHJvdGVjdGVkIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKQEAgLTY2LDcgKzY5LDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluaXQoUmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCi0gICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VB
bmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsK
KyAgICB2b2lkIGRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0TG9hZGluZygpCkBAIC05OCw3ICsxMDEsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsKICAgICBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7
IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBy
ZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAg
CiAgICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKQEAgLTEwNyw3
ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVk
IGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNl
bnQpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFu
ZGxlcik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1
bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIApAQCAtMTY2LDcgKzE2
OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgd2FzQ2FuY2VsbGVkKCkgY29uc3QgeyByZXR1
cm4gbV9jYW5jZWxsYXRpb25TdGF0dXMgPj0gQ2FuY2VsbGVkOyB9CiAKLSAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAgICAKICAgICB2b2lkIHNldFJlZmVycmVyUG9s
aWN5KFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KSB7IG1fb3B0aW9ucy5yZWZlcnJlclBv
bGljeSA9IHJlZmVycmVyUG9saWN5OyB9CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xp
Y3koKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3k7IH0KQEAgLTE5MSw3
ICsxOTQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNv
dXJjZUVycm9yJikgPSAwOwogCi0gICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCosIHVuc2lnbmVkLCBTaGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQg
YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciosIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdm9pZCBsb2FkRGF0YVVSTCgpOwogICAg
IHZvaWQgZmluaXNoTmV0d29ya0xvYWQoKTsKIApAQCAtMjAyLDcgKzIwNSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291
cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1
ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0
aCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFu
ZGxlKikgb3ZlcnJpZGU7CkBAIC0yMjcsNyArMjMwLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291
cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1
ZXN0OyAvLyBCZWZvcmUgcmVkaXJlY3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcmVz
b3VyY2VEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3Jlc291cmNl
RGF0YTsKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNl
ZmJkZjlkYTE3ODk5N2VkY2I5ZjM1NDRmNDg4NGI2MGE2ZWZlLi4zN2QwYmI4MjFhYmQ4NmE5YjU2
MDZlMTI3ZWZjOTQxMmE1MWJiMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxv
bgogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNv
ZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQor
dm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBh
eWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBp
ZiAoYXV0byBwcmV2aWV3TG9hZGVyID0gbV9wcmV2aWV3TG9hZGVyLmdldCgpKSB7CkBAIC01NDIs
NyArNTQyLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGUKICAgICBkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRh
dGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgQVNTRVJUKG1fcmVz
b3VyY2UpOwogCkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAg
ICAgICBpZiAoYXV0byogcmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAg
ICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVy
LT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAg
ICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApp
bmRleCAzNzIzYjZiOWFiOWZkZGFhYTU1NzRiZmIwZTZmMzhjZWQ3YWVmYjc1Li44MzJjOWYwZTcz
ZDM4NDY0YTc5NWY0MDM4NjBmNzljMzRlNzNiYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBs
b25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgRXhwZWN0ZWQ8
dm9pZCwgU3RyaW5nPiBjaGVja1Jlc3BvbnNlQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVk
aXJlY3Rpb25Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBw
cmV2aW91c1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZVJlcXVlc3Qm
IG5ld1JlcXVlc3QpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqLCBpbnQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKIAogICAgIHZv
aWQgbm90aWZ5RG9uZShMb2FkQ29tcGxldGlvblR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJzdGl0dXRlRGF0YS5oCmluZGV4IGY2NjI5MmUzMWNiZWI0MjY0MzBhODMyYWRlZjQyOTkxY2I1
NzQzNmUuLmE4YTQ5YjQ3ZjkyNzM0Mjc0YmE0Y2VhYmMxNzA3ZmVmYTdiNjY0MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgU3Vic3RpdHV0ZURh
dGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBjb250ZW50LCBjb25zdCBVUkwmIGZhaWxpbmdVUkws
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTZXNzaW9uSGlzdG9yeVZpc2liaWxp
dHkgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSkKKyAgICAgICAgU3Vic3RpdHV0ZURhdGEo
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY29udGVudCwgY29uc3QgVVJMJiBmYWls
aW5nVVJMLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgU2Vzc2lvbkhpc3RvcnlW
aXNpYmlsaXR5IHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkpCiAgICAgICAgICAgICA6IG1f
Y29udGVudChXVEZNb3ZlKGNvbnRlbnQpKQogICAgICAgICAgICAgLCBtX2ZhaWxpbmdVUkwoZmFp
bGluZ1VSTCkKICAgICAgICAgICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKQEAgLTU0LDE0ICs1
NCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGVudCAhPSBudWxscHRyOyB9CiAgICAgICAgIGJvb2wgc2hvdWxkUmV2
ZWFsVG9TZXNzaW9uSGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUmV2ZWFsVG9TZXNz
aW9uSGlzdG9yeSA9PSBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OlZpc2libGU7IH0KIAotICAg
ICAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRl
bnQuZ2V0KCk7IH0KKyAgICAgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogY29udGVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudC5nZXQoKTsgfQogICAgICAgICBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS5taW1lVHlwZSgpOyB9CiAg
ICAgICAgIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZXNw
b25zZS50ZXh0RW5jb2RpbmdOYW1lKCk7IH0KICAgICAgICAgY29uc3QgVVJMJiBmYWlsaW5nVVJM
KCkgY29uc3QgeyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9CiAgICAgICAgIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAgICAg
ICAKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7
CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7CiAgICAg
ICAgIFVSTCBtX2ZhaWxpbmdVUkw7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25z
ZTsKICAgICAgICAgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IG1fc2hvdWxkUmV2ZWFsVG9TZXNz
aW9uSGlzdG9yeSB7IFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVuIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXggNTk2NjRiNTg1NGY4NWIw
MmNkZjM0OTAyMGEwZWZmMTNlYjc4ODg3OS4uY2YyZGUwYzYyZDk1ZjMzMjViNDJiNDZlMjQwMzc3
NDQxMDc0MmEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVS
ZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2Uu
aApAQCAtMzcsMTIgKzM3LDE0IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29u
c3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICBTaGFyZWRCdWZmZXImIGRhdGEo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihtX2Rh
dGEpOyB9CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19yZWZlcmVuY2VfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihSZWYgeyAqbV9k
YXRhLmdldCgpIH0pOyB9CisgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7IH0KKyAgICB2b2lkIGNsZWFy
KCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3Vy
Y2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3Bv
bnNlLCBtX2RhdGEtPmNvcHkoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJj
ZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9u
c2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBTdWJzdGl0dXRlUmVzb3Vy
Y2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSkKKyAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJl
c3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiAg
ICAgICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQogICAgICAgICAsIG1fcmVzcG9uc2UoV1RGTW92
ZShyZXNwb25zZSkpCiAgICAgICAgICwgbV9kYXRhKFdURk1vdmUoZGF0YSkpCkBAIC01Miw3ICs1
NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgVVJMIG1fdXJsOwogICAgIFJlc291cmNl
UmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwCmluZGV4IDg5ZjNiMGYxZGMzOWQ0MGE1NjM4NzhhZTU1Zjc2YzY3MGE3
MTUwOTEuLjAzNmVmZDIwZTQ5NjMwMGNmOGM5ZTdlNzkwMzE3ZTAxZGU1YmFmMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAg
YXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RV
UkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0
UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUo
KSk7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1f
bWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBt
X21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fbWFu
aWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CiAgICAgaWYgKCFtYW5pZmVzdCkgewogICAg
ICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklG
RVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZh
aWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2Fj
aGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hF
IE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA2MDMyODE4ODgzNzVmNDRhNjI0YjNl
M2IzYWFmZTA2YTM2ODkyZWU2Li41MTk3OGY0MTIzODc0ZGM1NjYwZWZmNDcwNjU5NzA3ZDRlNWQ4
NWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1NSwxMCArMjU1LDggQEAgVVJMIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKIAogc3RhdGljIGlu
bGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25D
YWNoZVJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJs
eSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUg
dGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBi
ZSBtb2RpZmllZC4KICAgICBpZiAocmVzb3VyY2UucGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIHJlc291cmNlLmRhdGEoKS5jb3B5KCk7CisgICAgICAgIHJldHVybiByZXNvdXJjZS5k
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKIH0KIApAQCAtMjkwLDkgKzI4OCw3
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25v
dXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZSogcmVzb3VyY2U7CiAgICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tS
ZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVz
b3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9hYmx5
IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAgLy8g
UmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2ls
bCBub3QgYmUgbW9kaWZpZWQuCi0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5j
b3B5KCk7CisgICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTczNmE3
MTg2NTY3NzI0ODYxMWUwOGY2NjNiMjlmLi5iOTYzNTZlNzg1NjEzODk1NmFlNGMwNTk4MzE3MGNk
ZjcyMzY3MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25D
YWNoZVJlc291cmNlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2Fk
ZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcgKzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRh
OwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmlu
ZGV4IGYxZjdlMTc1NjMwMTQ3MWYzMDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLjJiYjNmZTc1Yjk5
NzdlODMzMjJhZTI1ODBmNzIxMmVlNWJmMjE2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBA
IC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZT4gQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXRoKQorUmVmPEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25l
ZCB0eXBlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQoIXVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7
CiAgICAgaWYgKCFidWZmZXIpCkBAIC00MCw3ICs0MCw3IEBAIFJlZjxBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJs
LCBjCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVS
TCB7IHVybCB9LCBXVEZNb3ZlKHJlc291cmNlUmVzcG9uc2UpLCB0eXBlLCBidWZmZXIucmVsZWFz
ZU5vbk51bGwoKSwgcGF0aCkpOwogfQogCi1BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25z
ZSwgdW5zaWduZWQgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcm
IHBhdGgpCitBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQog
ICAgIDogU3Vic3RpdHV0ZVJlc291cmNlKFdURk1vdmUodXJsKSwgV1RGTW92ZShyZXNwb25zZSks
IFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fc3RvcmFnZUlEKDAp
CkBAIC01MSw3ICs1MSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25D
YWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0g
ICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1w
dHkoKSA/IGRhdGEoKS5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShtX3BhdGgpKTsKKyAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25z
ZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291
cmNlLmgKaW5kZXggODhjOTRkZTFhNzc0MTA0NjljOTMxYTQyYTQ3OWIxZTY3NzdhNzAyZS4uYzI4
OGU3MDM2YzY3NjJhZDQ4NzZiYTg4MTQ2OWE3NWQyMjM3ZTFiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uu
aApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZhbGxiYWNrID0gMSA8PCA0CiAg
ICAgfTsKIAotICAgIHN0YXRpYyBSZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUo
Y29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIHR5cGUsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcm
IHBhdGggPSBTdHJpbmcoKSk7CisgICAgc3RhdGljIFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQg
dHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJpbmcoKSk7CiAKICAgICB1bnNpZ25lZCB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgdm9pZCBhZGRUeXBlKHVuc2lnbmVk
IHR5cGUpOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAKIHByaXZhdGU6
Ci0gICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYs
IHVuc2lnbmVkIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgcGF0aCk7
CisgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYs
IHVuc2lnbmVkIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJp
bmcmIHBhdGgpOwogCiAgICAgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJikgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1MDg0N2E2ZTg5NTE3
ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1
MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwMSw3
ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNl
LT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNl
UmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUzYzQ5OTAyNDBhNTIwYmQzMGU2MzY1OTUuLjhj
ZjA1Y2NlMTg4MDEyOGRlNTliZTcwYTk5ODM2ZjVhNzQ1YjZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0
b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgYXV0
byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5U
TyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/LCA/KSJfcyk7CiAgICAg
aWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCiAKICAgICBT
dHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgpLmlzRW1wdHkoKSkKQEAg
LTgxNSw3ICs4MTQsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgICAgICBkYXRhU3Rh
dGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAocmVz
b3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxv
YigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRC
bG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSk7CiAgICAgfQog
ICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1hbmQoKSkgewpAQCAtODcz
LDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAKICAgICBpZiAoIWV4
ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFsdWUoKSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNjZXNzZnVsbHkgd3JpdGUgdGhlIHJlc291
cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAvLyByZWxlYXNlIHRoZSByZXNvdXJjZSdz
IGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91bnQKICAgICAvLyBvZiBt
ZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJlc291cmNlLT5k
YXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7CiAKICAgICByZXNvdXJj
ZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTI3Myw3
ICsxMjcyLDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c2hvdWxkU3RvcmVSZXNv
dXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNoZVJlc28KICAgICByZXR1cm4gc3RhcnRzV2l0
aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAiYXVkaW8vIikgfHwgc3RhcnRzV2l0aExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAidmlkZW8vIik7CiB9CiAgICAgCi1ib29sIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShT
aGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbikKK2Jvb2wgQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgZmlsZUV4dGVuc2lvbikKIHsKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5oCmluZGV4IDlhOTUzMDA4NzY2YTg4ODU1NjFiMzQ4ODg5YjhjZWRhMmIyZWIzMzgu
LjQxMDJhMTgwOGI0NTU1N2I2NDVlMzZlN2U2ODFmYzRjNmQyMDdjZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNz
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwog
Y2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0b3JhZ2VJREpvdXJu
YWw7CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U+IHsKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgZW5zdXJlT3JpZ2luUmVjb3JkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKik7CiAgICAg
c3RhdGljIGJvb2wgc2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlKik7CiAgICAgdm9pZCBkZWxldGVUYWJsZXMoKTsKLSAgICBib29sIHdyaXRlRGF0
YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24p
OworICAgIGJvb2wgd3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pOwogCiAgICAgdm9pZCBsb2FkTWFuaWZlc3RI
b3N0SGFzaGVzKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9B
cmNoaXZlRmFjdG9yeS5jcHAKaW5kZXggNmRlODBjMTBhYzdkMjVjZjM0NjlmNmRlZjBmYWY3MjQx
ZjU5NjQyOC4uNGVmOWNkNjZiZDA4OGI3NGMwNDZjMDY5MGQxZTlkM2U1ZTMzNjBmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcApAQCAt
NDYsMTIgKzQ2LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBSZWZQdHI8
QXJjaGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24oY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVy
Jik7Cit0eXBlZGVmIFJlZlB0cjxBcmNoaXZlPiBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbihjb25z
dCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5n
LCBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbiosIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gQXJj
aGl2ZU1JTUVUeXBlc01hcDsKIAogLy8gVGhlIGNyZWF0ZSBmdW5jdGlvbnMgaW4gdGhlIGFyY2hp
dmUgY2xhc3NlcyByZXR1cm4gUmVmUHRyIHRvIGNvbmNyZXRlIHN1YmNsYXNzZXMKIC8vIG9mIEFy
Y2hpdmUuIFRoaXMgYWRhcHRvciBtYWtlcyB0aGUgZnVuY3Rpb25zIGhhdmUgYSB1bmlmb3JtIHJl
dHVybiB0eXBlLgotdGVtcGxhdGU8dHlwZW5hbWUgQXJjaGl2ZUNsYXNzPiBzdGF0aWMgUmVmUHRy
PEFyY2hpdmU+IGFyY2hpdmVGYWN0b3J5Q3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK3RlbXBsYXRlPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0
cjxBcmNoaXZlPiBhcmNoaXZlRmFjdG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHJldHVybiBBcmNoaXZlQ2xhc3M6OmNyZWF0
ZSh1cmwsIGJ1ZmZlcik7CiB9CkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgQXJjaGl2ZUZhY3Rvcnk6
OmlzQXJjaGl2ZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuICFt
aW1lVHlwZS5pc0VtcHR5KCkgJiYgYXJjaGl2ZU1JTUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBl
KTsKIH0KIAotUmVmUHRyPEFyY2hpdmU+IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgVVJM
JiB1cmwsIFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK1JlZlB0
cjxBcmNoaXZlPiBBcmNoaXZlRmFjdG9yeTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaAppbmRleCAyMWQyMzY1Y2Y4ZDlkOTAxZWZlN2Fh
ZDU1MmJmM2RhNDA2OWZlNDBkLi41NTY0NTE1YzllMGQ5ZDAzM2I3OTBjNzQ3Mjg1YTI1ODUzYWJl
MDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFj
dG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5
LmgKQEAgLTM0LDEyICszNCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEFyY2hp
dmVGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc0FyY2hpdmVNSU1FVHlwZShj
b25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBV
UkwmLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIHN0
YXRpYyBSZWZQdHI8QXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyS25vd25BcmNoaXZlTUlNRVR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+Jik7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvQXJjaGl2ZVJlc291cmNlLmNwcAppbmRleCBmYzIwZGEzZGEwMzJjYmVmNzRmMmU5Yzg0Mjhh
Y2I0ZWUzN2JlZjIzLi4wNzM4Mzk0YTgyODcxNGFhMGI5MGVlNzUwNzlkNDg2ZjViMGU4Njk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgQXJj
aGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKK2lubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYg
ZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IFN1YnN0
aXR1dGVSZXNvdXJjZShVUkwgeyB1cmwgfSwgUmVzb3VyY2VSZXNwb25zZSB7IHJlc3BvbnNlIH0s
IFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV90ZXh0
RW5jb2RpbmcodGV4dEVuY29kaW5nKQpAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgQXJjaGl2ZVJl
c291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBV
UkwmIHVybAogewogfQogCi1SZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6
OmNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorUmVmUHRy
PEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFkYXRhKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU0LDcgKzU0LDcgQEAgUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCBjb24KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcmNoaXZlUmVzb3VyY2UoZGF0YS5y
ZWxlYXNlTm9uTnVsbCgpLCB1cmwsIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwg
cmVzcG9uc2UpKTsKIH0KIAotUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNl
OjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBB
cmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7
CiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGRhdGEpLCB1cmwsIHJlc3BvbnNlLm1pbWVUeXBl
KCksIHJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSwgU3RyaW5nKCksIHJlc3BvbnNlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKaW5k
ZXggMjA5ZTk3MTdhZWIwOTM2MGRiMzkyN2U2ZWZhMWU1YmYxYzJjOTdjYS4uMDU0OGVmNzIxZWZk
MjdjMDBjZTkzZDEyMjcwZWNlYzQ2YzAyYWY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKQEAgLTM0LDggKzM0LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBBcmNoaXZlUmVzb3VyY2UgOiBwdWJsaWMgU3Vic3RpdHV0ZVJl
c291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3Jl
YXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gY3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsCisgICAgc3RhdGlj
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsCiAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwKICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgPSBSZXNvdXJjZVJlc3Bv
bnNlKCkpOwogCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZElnbm9y
ZVdoZW5VbmFyY2hpdmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkSWdub3JlV2hlblVuYXJj
aGl2aW5nOyB9CiAKIHByaXZhdGU6Ci0gICAgQXJjaGl2ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
dGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOworICAgIEFyY2hpdmVSZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CiAKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBTdHJpbmcgbV90ZXh0RW5jb2Rpbmc7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFy
Y2hpdmUuY3BwCmluZGV4IGRlN2RhZGRkYWMyMjEyZjZkNWUwY2MwOTFkNGU0MTY3N2EzZjAxNWQu
LjcxMTUwY2JkZDg5NjllNmFmMDI4Njg0YjZiZjZjYmMwYTUwYjJmYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBA
IC05MCw3ICs5MCw3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gUmVzb3VyY2Ug
ZGF0YSBjYW4gYmUgZW1wdHksIGJ1dCBtdXN0IGJlIHJlcHJlc2VudGVkIGJ5IGFuIGVtcHR5IENG
RGF0YVJlZgogICAgIGF1dG8mIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpOwogCi0gICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3Vy
Y2VEYXRhS2V5LCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKKyAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFL
ZXksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOwogCiAgICAg
Ly8gUmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBudWxsCiAgICAgaWYgKGF1dG8gY2ZVUkwgPSByZXNv
dXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKQEAgLTExNyw5ICsxMTcsOSBA
QCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9w
ZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIERvbid0IGluY2x1ZGUgdGhlIHJlc291
cmNlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlmICghaXNNYWluUmVzb3Vy
Y2UpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2VSZXNwb25zZURhdGEgPSBjcmVhdGVQcm9w
ZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihyZXNvdXJjZS0+cmVzcG9uc2UoKSkpCi0gICAgICAgICAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hp
dmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7ICAgIAor
ICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdh
Y3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0
KCkpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBwcm9wZXJ0eUxpc3Q7CiB9CiAKQEAgLTIx
NSwxMyArMjE1LDEzIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZVJlc291cmNlKENGRGljdGlvbmFyeVJlZiBkaWN0aW9uCiAgICAgICAgICAgICBMT0co
QXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgZGF0YSBpcyBu
b3Qgb2YgdHlwZSBDRkRhdGEsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAg
YXV0byByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihD
RkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VS
ZXNwb25zZVZlcnNpb25LZXkpKTsKICAgICAgICAgaWYgKHJlc291cmNlUmVzcG9uc2VWZXJzaW9u
ICYmIENGR2V0VHlwZUlEKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKSAhPSBDRlN0cmluZ0dldFR5
cGVJRCgpKSB7CiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0g
UmVzb3VyY2UgcmVzcG9uc2UgdmVyc2lvbiBpcyBub3Qgb2YgdHlwZSBDRlN0cmluZywgY2Fubm90
IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICByZXNwb25zZSA9IGNyZWF0ZVJlc291cmNl
UmVzcG9uc2VGcm9tUHJvcGVydHlMaXN0RGF0YShyZXNvdXJjZVJlc3BvbnNlRGF0YSwgcmVzb3Vy
Y2VSZXNwb25zZVZlcnNpb24pOwogICAgIH0KIApAQCAtMjQ4LDIzICsyNDgsMjMgQEAgUmVmPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShSZWY8QXJjaGl2ZVJlc291
cmNlPiYmIG1haW5SZXNvdXIKICAgICByZXR1cm4gYXJjaGl2ZTsKIH0KIAotUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEp
CitSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShVUkwoKSwgZGF0
YSk7CiB9CiAKLVJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhKQorUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhKQogewogICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBD
cmVhdGluZyBmcm9tIHJhdyBkYXRhIik7Ci0gICAgCisKICAgICBSZWY8TGVnYWN5V2ViQXJjaGl2
ZT4gYXJjaGl2ZSA9IGNyZWF0ZSgpOwotICAgICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBjZkRhdGEgPSBkYXRhLmNyZWF0ZUNGRGF0YSgpOworCisgICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gY2ZEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKICAgICBp
ZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIAorCiAgICAgQ0ZF
cnJvclJlZiBlcnJvciA9IG51bGxwdHI7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiBwbGlzdCA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlBy
b3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKDAsIGNmRGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0
SW1tdXRhYmxlLCAwLCAmZXJyb3IpKSk7CiAgICAgaWYgKCFwbGlzdCkgewogI2lmbmRlZiBOREVC
VUcKQEAgLTI3NiwxMiArMjc2LDEyIEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhCiAgICAgICAg
ICAgICBDRlJlbGVhc2UoZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0g
ICAgCisKICAgICBpZiAoQ0ZHZXRUeXBlSUQocGxpc3QuZ2V0KCkpICE9IENGRGljdGlvbmFyeUdl
dFR5cGVJRCgpKSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBB
cmNoaXZlIHByb3BlcnR5IGxpc3QgaXMgbm90IHRoZSBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFi
b3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9Ci0gICAgCisKICAgICBpZiAoIWFyY2hpdmUtPmV4dHJhY3QocGxpc3QuZ2V0KCkpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjk1LDcgKzI5NSw3IEBAIGJvb2wgTGVnYWN5V2Vi
QXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgTE9H
KEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE51bGwgcm9vdCBDRkRpY3Rpb25hcnksIGFi
b3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQotICAgIAorCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIG1haW5SZXNvdXJjZURpY3QgPSBzdGF0aWNf
Y2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExl
Z2FjeVdlYkFyY2hpdmVNYWluUmVzb3VyY2VLZXkpKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURp
Y3QpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5vIG1haW4g
cmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CkBAIC0z
MzMsNyArMzMzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFy
eVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdl
YkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9y
dGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKGF1dG8gc3Vi
cmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZShzdWJyZXNvdXJjZURpY3QpKQogICAgICAgICAgICAg
ICAgIGFkZFN1YnJlc291cmNlKHN1YnJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAg
ICB9CkBAIC0zNTMsNyArMzUzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENG
RGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywg
IkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJmcmFtZSBhcnJheSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0
aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAg
YXV0byBzdWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChzdWJmcmFt
ZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJhbWVEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJm
cmFtZUFyY2hpdmUoV1RGTW92ZShzdWJmcmFtZUFyY2hpdmUpKTsKQEAgLTM2MSw3ICszNjEsNyBA
QCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25h
cnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIElu
dmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBza2lwcGVkIik7CiAgICAgICAgIH0KICAgICB9Ci0gICAg
CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTA2LDcgKzUwNiw3IEBAIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJr
dXBTdHJpbmcsIEZyCiB7CiAgICAgYXV0byYgcmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwogICAgIFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNl
LnVybCgpOwotICAgIAorCiAgICAgLy8gaXQncyBwb3NzaWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ug
d2l0aG91dCBhIFVSTCBoZXJlCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAg
aWYgKHJlc3BvbnNlVVJMLmlzTnVsbCgpKQpAQCAtNjA1LDcgKzYwNSw3IEBAIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1l
KiBmcmFtZSkKIAogICAgIGlmICghZG9jdW1lbnQtPmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0
dXJuIGFyY2hpdmU7Ci0gICAgICAgIAorCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1l
bnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIg
ZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93biku
IAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIg
bWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdo
dD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJl
c3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaAppbmRleCBkMDll
YzlmNzVhYmExMzZhODYzMzllYjRkODZhYmQ4Mjc3YzRmZjA0Li41YTA3YjEwYjRiZTZmODYyMDEx
YTc4MmE3ZGVkMjM2NzU5MjQzNjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCkBAIC00MSw4ICs0MSw4IEBAIHN0cnVjdCBT
aW1wbGVSYW5nZTsKIGNsYXNzIExlZ2FjeVdlYkFyY2hpdmUgZmluYWwgOiBwdWJsaWMgQXJjaGl2
ZSB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lXZWJBcmNo
aXZlPiBjcmVhdGUoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdl
YkFyY2hpdmU+IGNyZWF0ZShTaGFyZWRCdWZmZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZm
ZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+
IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TGVnYWN5V2Vi
QXJjaGl2ZT4gY3JlYXRlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYgbWFpblJlc291cmNlLCBWZWN0
b3I8UmVmPEFyY2hpdmVSZXNvdXJjZT4+JiYgc3VicmVzb3VyY2VzLCBWZWN0b3I8UmVmPExlZ2Fj
eVdlYkFyY2hpdmU+PiYmIHN1YmZyYW1lQXJjaGl2ZXMpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKE5vZGUmLCBGdW5jdGlvbjxib29s
KEZyYW1lJik+JiYgZnJhbWVGaWx0ZXIgPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKEZyYW1lJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAppbmRleCBh
Y2ZiYmI3MDIwMjJkMDZhZmU2MjAwNDA0ODdmZDM0ZDkyMWQ3MjdjLi5hZDg5MmFlODdmZjQ5ZWJm
YTYwNWIyY2EyMDNjYjUyYjFlMmUxYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBS
ZWY8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTUhUTUxBcmNoaXZlKTsKIH0KIAotUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxB
cmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0
cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIEZvciBzZWN1cml0eSByZWFzb25z
IHdlIG9ubHkgbG9hZCBNSFRNTCBwYWdlcyBmcm9tIGxvY2FsIFVSTHMuCiAgICAgaWYgKCFMZWdh
Y3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHVybC5wcm90b2Nv
bCgpLnRvU3RyaW5nKCkpKQpAQCAtMTMwLDcgKzEzMCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+
IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGRhdGEp
CiAgICAgcmV0dXJuIG1haW5BcmNoaXZlOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFy
Y2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCitSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogewog
ICAgIFZlY3RvcjxQYWdlU2VyaWFsaXplcjo6UmVzb3VyY2U+IHJlc291cmNlczsKICAgICBQYWdl
U2VyaWFsaXplciBwYWdlU2VyaWFsaXplcihyZXNvdXJjZXMpOwpAQCAtMTYyLDggKzE2Miw4IEBA
IFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSog
cGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3RlYWQgb2YgYXNjaWkoKSBhcyBh
c2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxsIG9ubHkgaGF2ZSBwdXQgQVND
SUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmluZ0J1aWxkZXIudG9TdHJpbmco
KS5pc0FsbEFTQ0lJKCkpOwogICAgIENTdHJpbmcgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVy
LnRvU3RyaW5nKCkudXRmOCgpOwotICAgIGF1dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lp
U3RyaW5nLmxlbmd0aCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1odG1sRGF0YTsKKyAg
ICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3Ro
KCkpOwogCiAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IHJlc291cmNlcykgewogICAgICAgICBz
dHJpbmdCdWlsZGVyLmNsZWFyKCk7CkBAIC0xNzgsMTUgKzE3OCwxNSBAQCBSZWY8U2hhcmVkQnVm
ZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcclxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogIiwg
Y29udGVudEVuY29kaW5nLCAiXHJcbkNvbnRlbnQtTG9jYXRpb246ICIsIHJlc291cmNlLnVybC5z
dHJpbmcoKSwgIlxyXG5cclxuIik7CiAKICAgICAgICAgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0
cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgbWh0bWxEYXRhLmFw
cGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgICAg
ICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNvZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJl
YW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxsLgogICAgICAgICBhdXRvKiBkYXRhID0g
cmVzb3VyY2UuZGF0YS0+ZGF0YSgpOwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IHJlc291
cmNlLmRhdGEtPnNpemUoKTsKICAgICAgICAgaWYgKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBx
dW90ZWRQcmludGFibGUpKSB7CiAgICAgICAgICAgICBhdXRvIGVuY29kZWREYXRhID0gcXVvdGVk
UHJpbnRhYmxlRW5jb2RlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgICAgICAgICAgbWh0bWxEYXRh
LT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOwotICAgICAg
ICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgIG1odG1sRGF0
YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOworICAgICAg
ICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgQVNTRVJUKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBiYXNlNjQpKTsKICAgICAg
ICAgICAgIC8vIFdlIGFyZSBub3Qgc3BlY2lmeWluZyBpbnNlcnRMRnMgPSB0cnVlIGJlbG93IGFz
IGl0IHdvdWxkIGN1dCB0aGUgbGluZXMgd2l0aCBMRnMgYW5kIE1IVE1MIHJlcXVpcmVzIENSTEZz
LgpAQCAtMTk2LDE1ICsxOTYsMTUgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpn
ZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAgICAgICAgc2l6ZV90IGVuY29kZWRE
YXRhTGVuZ3RoID0gZW5jb2RlZERhdGEuc2l6ZSgpOwogICAgICAgICAgICAgZG8gewogICAgICAg
ICAgICAgICAgIHNpemVfdCBsaW5lTGVuZ3RoID0gc3RkOjptaW4oZW5jb2RlZERhdGFMZW5ndGgg
LSBpbmRleCwgbWF4aW11bUxpbmVMZW5ndGgpOwotICAgICAgICAgICAgICAgIG1odG1sRGF0YS0+
YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVuZ3RoKTsKLSAgICAgICAg
ICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIG1o
dG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOwor
ICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgICAg
ICAgICBpbmRleCArPSBtYXhpbXVtTGluZUxlbmd0aDsKICAgICAgICAgICAgIH0gd2hpbGUgKGlu
ZGV4IDwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgYXNjaWlT
dHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxuIikudXRmOCgpOwotICAg
IG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3Ro
KCkpOworICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmlu
Zy5sZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbWh0bWxEYXRhOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCAzZDJkYjdj
OTYwMDJlYmU2ODRiMmJlZjhmMWVhOWUyZTk3OTRhNTg5Li4yZGZlODdlODJlN2E0ZGNlMGYzNDFj
MzYxOTQzYzk5MDIwNWM4ZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaApAQCAtMzgsMTQgKzM4LDE0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgTUhUTUxQYXJzZXI7CiBjbGFzcyBQYWdlOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTUhUTUxBcmNo
aXZlIGZpbmFsIDogcHVibGljIEFyY2hpdmUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TUhU
TUxBcmNoaXZlPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3Jl
YXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8TUhUTUxB
cmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCi0g
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKKyAg
ICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBh
Z2UqKTsKIAogICAgIHZpcnR1YWwgfk1IVE1MQXJjaGl2ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZjFiOTAx
ZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBiZGI4MDE1ZS4uNWVlOTE4Njg0YTA2ODk2ODNmNzFj
MjY3ZjJkOTAxYTM3YTZmZWI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgYm9v
bCBza2lwTGluZXNVbnRpbEJvdW5kYXJ5Rm91bmQoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGxp
bmVSZWFkZXIsIGNvbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTUhUTUxQYXJzZXI6Ok1IVE1M
UGFyc2VyKFNoYXJlZEJ1ZmZlciogZGF0YSkKK01IVE1MUGFyc2VyOjpNSFRNTFBhcnNlcihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIDogbV9saW5lUmVhZGVyKGRhdGEsICJcclxu
IikKIHsKIH0KQEAgLTE0MCw3ICsxNDAsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRN
TFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogewog
ICAgIEFTU0VSVChlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJv
dW5kYXJ5LmlzRW1wdHkoKSk7CiAKLSAgICBhdXRvIGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY29udGVudDsKICAgICBjb25zdCBib29s
IGNoZWNrQm91bmRhcnkgPSAhZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpOwogICAgIGJvb2wg
ZW5kT2ZQYXJ0UmVhY2hlZCA9IGZhbHNlOwogICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFu
c2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6QmluYXJ5KSB7CkBAIC0xNTQsNyArMTU0LDcg
QEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29u
c3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgICAgIExPR19FUlJPUigiQmluYXJ5
IGNvbnRlbnRzIHJlcXVpcmVzIGVuZCBvZiBwYXJ0Iik7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgfQotICAgICAgICBjb250ZW50LT5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7
CisgICAgICAgIGNvbnRlbnQuYXBwZW5kKFdURk1vdmUocGFydCkpOwogICAgICAgICBtX2xpbmVS
ZWFkZXIuc2V0U2VwYXJhdG9yKCJcclxuIik7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBuZXh0
Q2hhcnM7CiAgICAgICAgIGlmIChtX2xpbmVSZWFkZXIucGVlayhuZXh0Q2hhcnMsIDIpICE9IDIp
IHsKQEAgLTE4MCwxMCArMTgwLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFy
c2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQg
d2UgdXNlIGxpbmUudXRmOCgpIGFuZCBub3QgbGluZS5hc2NpaSgpIGFzIGFzY2lpIHR1cm5zIHNw
ZWNpYWwgY2hhcmFjdGVycyAoc3VjaCBhcyB0YWIsIGxpbmUtZmVlZC4uLikgaW50byAnPycuCi0g
ICAgICAgICAgICBjb250ZW50LT5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0
aCgpKTsKKyAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGlu
ZS5sZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJF
bmNvZGluZygpID09IE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZSkgewogICAgICAgICAgICAg
ICAgIC8vIFRoZSBsaW5lIHJlYWRlciByZW1vdmVzIHRoZSBcclxuLCBidXQgd2UgbmVlZCB0aGVt
IGZvciB0aGUgY29udGVudCBpbiB0aGlzIGNhc2UgYXMgdGhlIFF1b3RlZFByaW50YWJsZSBkZWNv
ZGVyIGV4cGVjdHMgQ1ItTEYgdGVybWluYXRlZCBsaW5lcy4KLSAgICAgICAgICAgICAgICBjb250
ZW50LT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZCgi
XHJcbiIsIDIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTkzLDkgKzE5
MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFy
dChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhOworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBjb250ZW50LnRha2UoKS0+
bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVy
RW5jb2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1
dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5z
aXplKCkpOworICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRpZ3Vv
dXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBp
ZiAoIWRlY29kZWREYXRhKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgYmFzZTY0
IGNvbnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTIwNCwxMSArMjA1LDExIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2Vy
OjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAgICAg
ICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQt
PnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91
c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAgY2FzZSBNSU1FSGVhZGVy
OjpCaW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5kKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+
c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwg
Y29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5o
CmluZGV4IDFlOWJkNGQ3NzY3ZWUzOTFhMDAyMmY3MTc0OGYwMGI4NWM4MWIyNWYuLjBkNjA0MzQz
ZjNkN2FkMTc4Y2MyMjAwM2M5NzljMjJlNTBhM2I5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaApAQCAtNDIsMTEgKzQyLDExIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKIGNsYXNzIE1IVE1M
QXJjaGl2ZTsKIGNsYXNzIE1JTUVIZWFkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNSFRNTFBhcnNlciB7CiBwdWJsaWM6Ci0g
ICAgZXhwbGljaXQgTUhUTUxQYXJzZXIoU2hhcmVkQnVmZmVyKik7CisgICAgZXhwbGljaXQgTUhU
TUxQYXJzZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogCiAgICAgUmVmUHRyPE1IVE1MQXJj
aGl2ZT4gcGFyc2VBcmNoaXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWViNjgy
MDdmYzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li5lMWE4NzUxNmJkOGQ1YjhmMjRhZjZhNWI5
OTBlMjE4NTM0N2U3NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MCwxMiArNDAsMTYgQEAg
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIHsKIH0KIAotdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5p
c2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVu
Y29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAg
ICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAg
ICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0
YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAg
ICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlz
aExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCmluZGV4IDA3ZjJhMDc5
YzU2NGVlZmZiNjk3YzM3Yzc4NTY1ZTFlYThkOWFlNWUuLjM3OThhOWI0ZDkwMTNjZmRlYTZmNTZm
YmRmMDAxNWFmODk0NzU3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJs
aWM6CiAgICAgc3RkOjpvcHRpb25hbDxzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdD4gcHJvY2Vz
cyhjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBEb2N1bWVu
dCogPSBudWxscHRyKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBm
aW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0
ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLnB0
cigpOyB9CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAg
ICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZj
NjFlNjM3NDJmNzRjYzZhMGJjZjAwMGJhOWIxNzZmLi4zOGEyZTE3ZjBkMDZjOGFjOThkZTI0YjFl
NTJiOGU2MGU5MjQxMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBD
YWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVD
aGVja0hpbnQsCiAgICAgICAgIHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBE
b24ndCBjYWNoZSB0aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0
IGNhbiB1c2UgcXVpdGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVj
b2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4g
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgbV9kYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJv
ZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05NywxMyArOTcs
MTcgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hl
ZXQubV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hl
ZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmco
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUo
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5k
IG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBj
aGVja05vdGlmeSgpCi0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9
IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwor
ICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7
CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIC8vIERlY29k
ZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRl
eHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCisgICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUo
KSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0
RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNr
Tm90aWZ5KG1ldHJpY3MpOwogICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMg
dW5saWtlbHkgdG8gYmUgbmVlZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byBy
ZWdlbmVyYXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NT
dHlsZVNoZWV0LmgKaW5kZXggNWQ0ZGQzZGM3ZTM1M2VlM2NiMmZiOTNmMjc4ZDI1NzliOGQ5YTdh
MS4uZTY1NWM2OWUzZWRiNjA5NTAyMzljY2U0NTQ1ZjA5NmI1MjY1NmRlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCkBAIC01NSw3
ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBm
aW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0
UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIAogICAg
IHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4
MjM1MWQ3ZjY2MjViY2UyNzFkMDc3NjMzYWU5NC4uZDJiYzI4MjE0NzljNTlhMjMyM2U0ZjY1Y2Q5
NGI2M2I0MjM3MzY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250
LmNwcApAQCAtNjQsMTAgKzY0LDE1IEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRkQ2xpZW50KENh
Y2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRpY19jYXN0PENhY2hlZEZv
bnRDbGllbnQmPihjbGllbnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZEZv
bnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdl
dCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2Rh
dGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShtX2Rh
dGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAg
ICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwog
ICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpAQCAtMTA1LDcgKzExMCw3IEBAIGJvb2wgQ2Fj
aGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQogCiBzdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3Vz
dG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xs
ZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKLSAgICBSZWZQdHIgYnVmZmVyIHsgJmJ5dGVzIH07
CisgICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVzIH07CiAgICAgd3JhcHBpbmcgPSAhY29udmVy
dFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIpOwogICAgIHJldHVybiBidWZmZXIgPyBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24pIDogbnVs
bHB0cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5
KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKGlzTG9hZGluZygpKQogICAg
ICAgICByZXR1cm47Ci0gICAgCisKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNo
ZWRGb250Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkRm9udENs
aWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKICAgICAgICAgY2xpZW50LT5mb250TG9hZGVk
KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IGNl
YmRjNTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVjNGJlZjQyMTAuLjEzNDY2Y2M5OWQwZDE5Y2Jm
M2Q4ZWYzZGZiZDk2ZjM0ZDBmODU0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuaApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVf
VE9fQVNTRVJUIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmlu
YWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2Fj
aGVkUmVzb3VyY2VDbGllbnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQo
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKaW5kZXggYjE1OWYyOWVlOTBmZTNkZTAxOWMxMTQ5YmRhNjk0ZTBlNmY2YjU0Mi4uOTQ2Mjc5
NTIwZDBkYTQ0NjIyYzZhY2QzNjY2MjI4ODEwNWU4MTk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00NjgsOSArNDY4LDkgQEAgaW5saW5lIHZv
aWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQg
PSAwOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRC
dWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0YSA9ICZkYXRhOwor
ICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZSht
X2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTIzLDEyICs1MjMsMTQg
QEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAog
ICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFU
aW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFs
XTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJ
Zk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBD
YWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RTY3JpcHRSZXNv
dXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKKyAgICAgICAg
cmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNF
KFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
UERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+Y3JlYXRl
Q0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9j
dW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKICNlbHNlCiAgICAgLy8gTG9hZGluZyB0aGUg
aW1hZ2Ugc2hvdWxkIGhhdmUgYmVlbiBjYW5jZWxlZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1
cHBvcnQgY29udmVydGluZyBQb3N0U2NyaXB0IHRvIFBERi4KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTU1Myw3ICs1NTUsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6
dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEp
Cit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRh
dGEpOwpAQCAtNTY3LDcgKzU2OSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1
cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCit2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAg
ICBtX2RhdGEgPSBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoZGF0YSk7CiAgICAgaWYgKG1fZGF0YSkg
ewpAQCAtNTkzLDcgKzU5NSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1lCiB2b2lkIENhY2hl
ZEltYWdlOjpkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKQogewogICAgIGlmIChtX2lt
YWdlKSB7Ci0gICAgICAgIC8vIExldCB0aGUgSW1hZ2Uga25vdyB0aGF0IHRoZSBTaGFyZWRCdWZm
ZXIgaGFzIGJlZW4gcmVqaWdnZWQsIHNvIGl0IGNhbiBsZXQgZ28gb2YgYW55IHJlZmVyZW5jZXMg
dG8gdGhlIGhlYXAtYWxsb2NhdGVkIHJlc291cmNlIGJ1ZmZlci4KKyAgICAgICAgLy8gTGV0IHRo
ZSBJbWFnZSBrbm93IHRoYXQgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgaGFzIGJlZW4gcmVq
aWdnZWQsIHNvIGl0IGNhbiBsZXQgZ28gb2YgYW55IHJlZmVyZW5jZXMgdG8gdGhlIGhlYXAtYWxs
b2NhdGVkIHJlc291cmNlIGJ1ZmZlci4KICAgICAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0v
MjQyNzU2MTcpOiBJdCB3b3VsZCBiZSBiZXR0ZXIgaWYgd2UgY291bGQgc29tZWhvdyB0ZWxsIHRo
ZSBJbWFnZSdzIGRlY29kZXIgdG8gc3dhcCBpbiB0aGUgbmV3IGNvbnRlbnRzIHdpdGhvdXQgZGVz
dHJveWluZyBhbnl0aGluZy4KICAgICAgICAgbV9pbWFnZS0+ZGVzdHJveURlY29kZWREYXRhKHRy
dWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5k
ZXggZTM4OTYyYTBkY2FmYmNlZjYzMWMxNGU2M2ZlYjg1YmEwNTUyMDNmNC4uMDgzZjkyZjg4ODI3
NmVlZGE4OTkxMjAzMWQyNDQ5YTk2OGUyNjVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmgKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIGJvb2wgaW1h
Z2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5o
YXNSZWxhdGl2ZVdpZHRoKCk7IH0KICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBj
b25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0K
IAotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZv
aWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAog
ICAgIGVudW0gU2l6ZVR5cGUgewogICAgICAgICBVc2VkU2l6ZSwKQEAgLTEyNSw3ICsxMjUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgb3ZlcnJpZGU7CiAKICAg
ICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29u
c3Q7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRl
SW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wg
YWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKQEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsK
ICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7CiAKLSAgICB2
b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgdXBkYXRl
QnVmZmVySW50ZXJuYWwoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9p
ZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggOTJi
MDgzNjk3NTg4ODQ0MDkxOTM5ZTNlZWQ3OWQ3N2YxODM5NTYyZi4uODk1ZGIxMTU4YjZiOGM4ZmJm
N2IxMGI0M2I2MTRlZGE5NjAyMWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC00OCw3ICs0OCw3IEBAIENhY2hlZFJhd1Jl
c291cmNlOjpDYWNoZWRSYXdSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBUeXBlIHR5cGUsCiAgICAgQVNTRVJUKGlzTWFpbk9yTWVkaWFPckljb25PclJhd1Jlc291cmNl
KCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdS
ZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVy
KiBkYXRhKSBjb25zdAorc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVk
UmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHByZXZpb3VzRGF0YUxl
bmd0aCA9IGVuY29kZWRTaXplKCk7CiAgICAgaWYgKCFkYXRhIHx8IGRhdGEtPnNpemUoKSA8PSBw
cmV2aW91c0RhdGFMZW5ndGgpCkBAIC01Niw3ICs1Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVk
QnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERh
dGFDCiAgICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9
CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRh
dGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRy
aWdnZXJlZCBmcm9tIG5lc3RlZCBydW5sb29wcy4gV2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVm
ZmVyIGluIGZpbmlzaExvYWRpbmcuCiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkp
CkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihT
aGFyZWRCdWZmZXImIGRhdGEpCiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdS
ZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1Bv
bGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9
ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8g
cHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgp
ID4gcHJldmlvdXNEYXRhU2l6ZSkgewpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jl
c291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkK
ICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lk
IENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERh
dGFOb3RpZnkpIHsKICAgICAgICAgLy8gV2UgbWF5IGdldCBoZXJlIHN5bmNocm9ub3VzbHkgZnJv
bSB1cGRhdGVCdWZmZXIoKSBpZiB0aGUgY2FsbGJhY2sgdGhlcmUgZW5kcyB1cCBzcGlubmluZyBh
IHJ1bmxvb3AuCkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQog
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlz
KHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSA9IHRo
aXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9
PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IGRh
dGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVt
ZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEt
PnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3Jl
bWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0gICAgICAgIH0K
KyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250
aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxh
dGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAgIHNldEVuY29k
ZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFX
YXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXpl
KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fZGF0YSA9
IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDg0ZTBkODQ0ZDU3MTA5
OTUzYWU2YmZmNjU1NjU5OTUzZTI4YmE2OWIuLmE3ODY1ZjhhZDE3OGFlZmIzMjIwYTU2ZGNmZjE5
NTk5M2NmOTVhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5oCkBAIC01MSw5ICs1MSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2
b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIGZpbmFsOwotICAgIHZvaWQg
dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQnVmZmVy
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lk
IGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxk
SWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtNjYsNyArNjYs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3dpdGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJj
ZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9hbGxvd0VuY29kZWREYXRhUmVwbGFjZW1lbnQ7IH0KIAotICAg
IHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFs
RGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciopIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8
U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKSBjb25zdDsKICAgICB2b2lkIG5vdGlmeUNsaWVudHNE
YXRhV2FzUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKICAg
ICAKICNpZiBVU0UoUVVJQ0tfTE9PSykKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8UmVkaXJlY3RQYWlyLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1fcmVkaXJlY3RDaGFp
bjsKIAogICAgIHN0cnVjdCBEZWxheWVkRmluaXNoTG9hZGluZyB7Ci0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8RGVsYXllZEZpbmlz
aExvYWRpbmc+IG1fZGVsYXllZEZpbmlzaExvYWRpbmc7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggM2FlOGJiNjhkMjVjZGRkMTgw
MjA5MjJmNWVkYjI0ZDRiOTEyMDAwMi4uYmY2OWU4MGU1NzZlMWEyODhmNmEwMTFmNTQ2MTQ2MzE1
NTgwMWQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3Rp
ZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogICAgICAgICBjbGllbnQtPm5v
dGlmeUZpbmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpCit2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0K
QEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0
IHVpbnQ4X3QqLCB1bnNpZ25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09
IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVk
UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogewogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3Mp
OwpAQCAtOTI3LDggKzkyNyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNv
ZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdC
dWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2Rh
dGEtPmFwcGVuZChuZXdCdWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9Owog
ICAgIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5
MDQ3OGNhMjUxODEzZTZjMDM1YmMyNzguLmM5ODJkZDY5MzdhMGJjMmJmMzhjNDI2MTI2ZmZlNmU3
OGM3OTY0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIENvb2tpZUphcjsKIGNsYXNzIE1lbW9yeUNhY2hl
OwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vi
cmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCkBAIC0xMTIsOSAr
MTEyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJp
bmcmKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0
cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVz
b3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1
ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2
b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwogCiAgICAgdm9pZCBzZXRSZXNvdXJj
ZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7IG1fZXJyb3IgPSBlcnJvcjsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAK
aW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uZGI0MzE2MDdh
ZTU2MzgzMDM4MDBkZDI1OWMxMDM0Y2QwOTBmY2ZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01MiwxMiArNTIsMTIgQEAg
U3RyaW5nIENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1f
ZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRv
IGNyZWF0ZSBhIG5ldyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0
aGUgcGFyZW50IFVzZUVsZW1lbnQuCiAgICAgICAgIG1fZG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6
Y3JlYXRlKG51bGxwdHIsIG1fc2V0dGluZ3MsIHJlc3BvbnNlKCkudXJsKCkpOwotICAgICAgICBt
X2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpKTsKKyAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0
YS0+c2l6ZSgpKSk7CiAgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRh
dGEsIG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuaAppbmRleCBlOGMxNWYzNjBmYzkxYWM4YjM0ZDM5NjI5NWM1M2QzYzdmMTQ3
ZWFhLi40NDVlNGY5ZjQyYzNjMjc0MDc5NzZhNjRlOTE1NDA3ZjhiNTM0ZDAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtNDMsNyAr
NDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3Qg
VGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2Rv
Y3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXggYThlZjU3
NmJiNjkzOTMzYTIyMzQ2OTU1NTc1NmIzNjY3ZTQ4NjMyZS4uZDJjMWRlNDdlZmI3ODEzOThmNDQz
OGI3Y2E0ZWEyNjBlMjIxOTc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdGb250LmNwcApAQCAtODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVu
c3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAogICAgICAg
ICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUgZGlz
YWJsZWRTY29wZTsKIAotICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250
ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUo
KSkpOworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29k
ZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2Rh
dGEtPnNpemUoKSkpOwogICAgICAgICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJvcigp
OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5jcHAKaW5kZXggNDdhOWY1NzYwN2I5ODI4NGU4Zjc5ZTJjZGVjZTliZTQxOGYxN2I2NS4uYjY3
Mzk4YjBlNGY1NmZlN2FiY2IyNzRkMGUzNjg0MzAzNjM1MDg5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk2LDEwICs5NiwxNSBAQCB1bnNp
Z25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogICAgIHJldHVybiBtX3NjcmlwdEhhc2g7
CiB9CiAKLXZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTY3JpcHQ6
OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAg
c2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7
CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVu
Y29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0g
bnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJl
c291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKaW5kZXggOTI0Yjg0Y2EyZDg3MTZlMzQ2MDc3
ZWVlYjVjYzM0YmNlZGU3ZTIzZC4uODY1MWU2MzlhZDkwNjE3Mjg1NjFjMzI0YmZhN2FmNGNmOTdm
NmQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaApAQCAt
NDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5n
JikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3Qg
VGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlz
aExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIGZpbmFsOwogCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFj
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApp
bmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYxLi4wYzg0MjhiYjk5
ZGI2ZGZiMTZhMzQ4MTM0YzM4MjY4MzZjY2U1NDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDAsMTAgKzQwLDEwIEBAIENhY2hl
ZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFBBTDo6U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0
ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRh
dGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NF
UlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRh
dGEpOwotICAgIG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VD
b250aWd1b3VzKCkgOiBSZWZQdHI8U2hhcmVkQnVmZmVyPigpOwogICAgIHNldEVuY29kZWRTaXpl
KGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fs
a2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKQEAgLTUxLDEzICs1
MSwxMyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVy
KiBkYXRhKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3Vy
Y2UoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0
YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBD
YWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNo
TG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9VcGRhdGVCdWZmZXIoZGF0YSk7CiAgICAg
Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKaW5kZXggODVlMzk2MjA2NTEz
MTYwNzAzNjUzZWIyMmM3NzEzOGI5MTUwN2FkZC4uMDliNDMzOWEzN2I2NzNiMmFjNGZkYWUxNDZi
MjliOTY0Nzc3ZmNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRU
ZXh0VHJhY2suaApAQCAtMzUsMTAgKzM1LDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBi
b29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciopOworICAgIHZvaWQgZG9V
cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IGUzZTJmNWU5NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3
ODI2MTVkMzQwMGMuLmQyZWZmMmQyZDQwYzkyNzczODc1NmM0YThmMGNiYjkzNDNiZTEwYWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVl
dC5jcHAKQEAgLTYxLDEyICs2MSwxNiBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5j
b2RpbmcoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwog
fQogCi12b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFhT
TFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9
IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAg
IGlmIChkYXRhKQotICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChk
YXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1f
ZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRh
dGEtPnNpemUoKSk7CisgICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNo
KG1fZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBt
X2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAg
c2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAppbmRleCA2
ODQyYjY0NGY2MWNmOTBmN2Y2MWIyZjdlYzVlMDA2NTRjZDEwY2NjLi5iZDIzMTIxNGYyZDIwYmEz
OTY0NDYwMzY2ZTA0MWI5NDEzNWFjNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBl
bmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRl
eHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7
IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAg
IFN0cmluZyBtX3NoZWV0OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29k
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
CmluZGV4IDU1MjU2MWQ2YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIuLjY2YjkzNThl
YzUzMTExNDg0ODIyYTdjYzI0ZTdmM2E5OTE3MDY1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDcgKzM4LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudDsK
IGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRC
dWZmZXJCdWlsZGVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyIGZpbmFsIDogcHJpdmF0
ZSBQcmV2aWV3Q29udmVydGVyQ2xpZW50LCBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRl
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00OCw3ICs1MCw3IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKICAgICBib29sIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCk7Ci0gICAgYm9vbCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
OworICAgIGJvb2wgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CiAgICAgYm9vbCBkaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBkaWRGYWlsKCk7CiAK
QEAgLTYwLDE3ICs2MiwxNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRp
ZEZpbmlzaFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbCB7IH07CiAgICAgdm9pZCBw
cmV2aWV3Q29udmVydGVyRGlkRmFpbFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsK
ICAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZl
cnRlciYpIGZpbmFsOwotICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFBy
ZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHBy
ZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRp
ZEZpbmlzaENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOwogICAgIHZvaWQgcHJl
dmlld0NvbnZlcnRlckRpZEZhaWxDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsK
IAogICAgIC8vIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcgotICAgIHZvaWQgcHJvdmlkZU1haW5S
ZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYpIGZpbmFsOworICAgIHZvaWQgcHJv
dmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmKSBm
aW5hbDsKICAgICB2b2lkIHByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmll
d0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpIGZp
bmFsOwogCiAgICAgUmVmUHRyPFByZXZpZXdDb252ZXJ0ZXI+IG1fY29udmVydGVyOwogICAgIFJl
ZjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBtX2NsaWVudDsKLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBtX29yaWdpbmFsRGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4g
bV9vcmlnaW5hbERhdGE7CiAgICAgV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxv
YWRlcjsKICAgICBib29sIG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7IGZhbHNlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXggZDE4
YjI1MmU5NzU2YzhjZTBjOTViNjNlNzhkZDAwOTdlZjJhNTczNC4uNzQ4ZmVkYjhlYTQ4ZmFiYzgy
NWZiNWI2NzcxNzQxNTIwNWIzMWIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
b3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgUmVmPExl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1ha2VDbGllbnQoY29uc3QgUmVzb3VyY2VMb2FkZXIm
IGxvYWRlciwgYwogICAgIHJldHVybiBlbXB0eUNsaWVudCgpOwogfQogCi1ib29sIExlZ2FjeVBy
ZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
Citib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChtX2ZpbmlzaGVkTG9hZGluZ0Rh
dGFJbnRvQ29udmVydGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDksNyArMTA5LDcg
QEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252
ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJU
KCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsK
KyAgICBtX29yaWdpbmFsRGF0YS0+cmVzZXQoKTsKICAgICByZXNvdXJjZUxvYWRlci0+ZG9jdW1l
bnRMb2FkZXIoKS0+c2V0UHJldmlld0NvbnZlcnRlcihXVEZNb3ZlKG1fY29udmVydGVyKSk7CiAg
ICAgYXV0byByZXNwb25zZSB7IGNvbnZlcnRlci5wcmV2aWV3UmVzcG9uc2UoKSB9OwogCkBAIC0x
NDcsNyArMTQ3LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVy
RGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICB9KTsKIH0KIAotdm9p
ZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJl
dmlld0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgTGVnYWN5UHJl
dmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0
ZXImLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGF1dG8gcmVz
b3VyY2VMb2FkZXIgPSBtX3Jlc291cmNlTG9hZGVyLmdldCgpOwogICAgIGlmICghcmVzb3VyY2VM
b2FkZXIpCkBAIC0yMjQsMTAgKzIyNCwxMCBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnBy
b3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgYwogICAg
IG1fY2xpZW50LT5kaWRSZXF1ZXN0UGFzc3dvcmQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCi12b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQ
cmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252
ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBBU1NFUlRfVU5VU0VEKGNvbnZlcnRlciwgJmNvbnZlcnRlciA9PSBtX2NvbnZlcnRlcik7
Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEucHRyKCkpOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLT5nZXQoKS5nZXQoKSk7CiB9CiAKIExlZ2FjeVBy
ZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwpAQCAtMjM1LDcg
KzIzNSw3IEBAIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBk
ZWZhdWx0OwogTGVnYWN5UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmlld0xvYWRlcihSZXNvdXJj
ZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6
IG1fY29udmVydGVyIHsgUHJldmlld0NvbnZlcnRlcjo6Y3JlYXRlKHJlc3BvbnNlLCAqdGhpcykg
fQogICAgICwgbV9jbGllbnQgeyBtYWtlQ2xpZW50KGxvYWRlciwgbV9jb252ZXJ0ZXItPnByZXZp
ZXdGaWxlTmFtZSgpLCBtX2NvbnZlcnRlci0+cHJldmlld1VUSSgpKSB9Ci0gICAgLCBtX29yaWdp
bmFsRGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9vcmlnaW5hbERhdGEg
eyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9yZXNvdXJj
ZUxvYWRlciB7IGxvYWRlciB9CiAgICAgLCBtX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRp
bmcgeyBsb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVM
b2FkaW5nUXVpY2tMb29rUHJldmlldygpIH0KIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5o
CmluZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0ZjI1YWIxMzVhYTYwMzMzY2YuLmVhNjE1ZGZm
NGRkMGVkNTE0YmZmNjQ0MjY0N2VjNDYyMGY2MzIyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JD
bGllbnQuaApAQCAtMzgsMTIgKzM4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBj
bGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIAorY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFt
ZTsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsK
IGNsYXNzIFRleHRDaGVja2VyQ2xpZW50OwogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKQEAgLTc4
LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRl
ckRlbGV0ZShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBsZVJhbmdlJikgPSAwOwogCiAj
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0
IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogcHJlZmVycmVkRmls
ZU5hbWUgKi8sIFJlZjxTaGFyZWRCdWZmZXI+JiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLywg
Y29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBwcmVmZXJy
ZWRGaWxlTmFtZSAqLywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyog
aWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3Ry
aW5nJiAvKiBmaWxlUGF0aCAqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNo
bWVudHMoVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVu
dGlmaWVyICovKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlh
bGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXgg
MWExMjEwZmE4MzM3Y2Q5NTIwZjRlMDExYTkwNzM2NzU0ZGU1MThmMS4uYWM1M2NiMTRiZjAwZTUx
NjQ3YzllYzkxMTA5OGJlYTAzNjE1MTEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFs
aXplci5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjphZGRJbWFn
ZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVudCogaW1hZwogICAg
IGlmICghaW1hZ2UgfHwgaW1hZ2UtPmltYWdlKCkgPT0gJkltYWdlOjpudWxsSW1hZ2UoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVu
ZGVyZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDog
MDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVy
ZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsK
ICAgICBpZiAoIWRhdGEpCiAgICAgICAgIGRhdGEgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwog
CkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291
cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3Bv
bnNlKCkubWltZVR5cGUoKSwgV1RGTW92ZShkYXRhKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBl
bmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIGRhdGEtPm1ha2VDb250aWd1
b3VzKCkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAppbmRleCA5NmFkMDgyNTQzZGQ1M2E4NzliZTUxYzZk
OTIxZDdhZmZmNDJlOGUwLi43NTgzNmI4NzkxNDNiNjBhN2YzNTE5NzAzMjA3YjZhZDNkOGQ0Zjg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBAIC0zNSw3ICszNSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVy
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVS
TCY+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiB7Ci0gICAgCisKIH0KIAogU2hhcmVEYXRhUmVhZGVy
Ojp+U2hhcmVEYXRhUmVhZGVyKCkKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIFNoYXJlRGF0YVJl
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVO
YW1lKQogICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwog
ICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX3BlbmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+YXJy
YXlCdWZmZXJSZXN1bHQoKTsKLSAgICAKKwogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZp
bGVOYW1lID0gZmlsZU5hbWU7CiAgICAgZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgp
KSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBw
ZW5kKFdURk1vdmUoZmlsZSkpOwogICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKLSAgICAKKwogICAg
IGlmIChtX2ZpbGVzUmVhZFNvRmFyID09IHN0YXRpY19jYXN0PGludD4obV9wZW5kaW5nRmlsZUxv
YWRzLnNpemUoKSkpIHsKICAgICAgICAgbV9wZW5kaW5nRmlsZUxvYWRzLmNsZWFyKCk7CiAgICAg
ICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRp
b25IYW5kbGVyLCB7IH0pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93
UGxheWluZ01hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5h
Z2VyLmgKaW5kZXggZTM4MDZlODdkZjc5YTNkOWI1Y2FlMTIxNGRlNjZhYTJhNjU4NDdkYi4uZmM2
NmMzNjVhMmYyOWE0Yzc4ZTYwNjE5ZTQ3YTcxYzcyNThkOGZlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6
CiAgICAgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gbV9ub3dQbGF5aW5nSW5mbzsKICAg
ICBzdHJ1Y3QgQXJ0d29ya0NhY2hlIHsKICAgICAgICAgU3RyaW5nIHNyYzsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxBcnR3b3Jr
Q2FjaGU+IG1fbm93UGxheWluZ0luZm9BcnR3b3JrOwogICAgIGJvb2wgbV9zZXRBc05vd1BsYXlp
bmdBcHBsaWNhdGlvbiB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
Y3BwCmluZGV4IDE1NzMxZWIyM2ZhNzY5NDk2MGRkODA0OTZmYThmMmY5ZThjNzc4MGYuLjA3ZWQ0
OGU1ODg0ZWNlZWRjNjFmZDkzZTZiMjIxNzFiZTg4NTg5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC04OSw3ICs4OSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpy
ZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIHJldHVybiB7
IH07CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAoYXV0byogc3RyYXRlZ3kgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkpCiAgICAgICAgIHJldHVybiBz
dHJhdGVneS0+cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCB0eXBlLCBuYW1lKCksIGNv
bnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggN2QyNDdkY2Qx
YTE2ZjM0MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMi4uMzU3NjNlZTEyYTM5MGVmYzg0NTJjMzU4
MDZiNTEyYmU0MjlhZDk3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAt
NjEsMTIgKzYxLDEzIEBAIHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50
OwogY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBQ
YXN0ZWJvYXJkU3RyYXRlZ3k7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiAKQEAgLTE0NywxNiArMTQ4LDE2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRoKGNvbnN0IFN0cmluZyYs
IFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkRmls
ZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFk
SFRNTChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRJbWFnZShSZWY8
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJl
ZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFk
SW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwg
UHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpID0gMDsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVhbCBib29sIHJlYWRXZWJB
cmNoaXZlKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQoU2hh
cmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYp
ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJl
ZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFk
V2ViQXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9v
bCByZWFkUlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9v
bCByZWFkUlRGKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29s
IHJlYWREYXRhQnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50
YXRpb25TaXplID0geyB9KSA9IDA7CiAjZW5kaWYKIH07CiAKQEAgLTE3MSw3ICsxNzIsNyBAQCBz
dHJ1Y3QgUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIHZpcnR1YWwgflBhc3RlYm9hcmRGaWxl
UmVhZGVyKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCByZWFkRmlsZW5hbWUoY29uc3Qg
U3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWFkQnVmZmVyKGNvbnN0IFN0
cmluZyYgLyogdHlwZSAqLykgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9p
ZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIGNsYXNzIFBhc3RlYm9hcmQgewpAQCAtMjk2LDcg
KzI5Nyw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4g
cGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3Q7CiAKICAgICBTdHJpbmcgcmVh
ZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIFVSTCByZWFk
VVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSk7CiAKICAgICBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4
IDlkM2Y4N2E5MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjdiNGIzZDM2YWE2ODAz
NjExODc5MTMxYjVhMWIyMjZiNTg4ZDM2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTMzLDEzICszMywxMyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVk
QnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8
U2hhcmVkQnVmZmVyPj4mIG90aGVyKQorc3RhdGljIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6OnZhcmlh
bnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiBvdGhlcikKIHsKICAgICBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG90aGVyKSkKICAgICAgICAgcmV0dXJu
IHsgc3RkOjpnZXQ8U3RyaW5nPihvdGhlcikgfTsKIAotICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikpCi0gICAgICAgIHJldHVybiB7IHN0ZDo6
Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikuY29weVJlZigpIH07CisgICAgaWYgKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihvdGhlcikpCisg
ICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ob3Ro
ZXIpLmNvcHlSZWYoKSB9OwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTEzNCw3ICsxMzQsNyBA
QCB2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgYWRkT3JNb3ZlRW50cnlUb0VuZCh0eXBlKS5w
bGF0Zm9ybURhdGEgPSB7IHZhbHVlIH07CiB9CiAKLXZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6
OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkK
K3ZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgYWRkT3JNb3ZlRW50
cnlUb0VuZCh0eXBlKS5wbGF0Zm9ybURhdGEgPSB7IFdURk1vdmUoZGF0YSkgfTsKIH0KQEAgLTIw
MiwxNCArMjAyLDE0IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIGN1c3Rv
bURhdGE7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpy
ZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
IHR5cGUpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkgewogICAgICAg
ICBpZiAoZW50cnkudHlwZSAhPSB0eXBlKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBs
YXRmb3JtRGF0YSkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZl
cj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkuY29weVJlZigpOworICAgICAgICBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3Jt
RGF0YSkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpLmNvcHlSZWYoKTsKIAogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CkBAIC0yNjUsMTEgKzI2NSwxMSBAQCB2b2lkIFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpmb3JFYWNoQ3VzdG9tU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0
eXBlLAogICAgIH0KIH0KIAotdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRm
b3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYgZnVuY3Rp
b24pIGNvbnN0Cit2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmb3JFYWNoUGxhdGZvcm1TdHJp
bmdPckJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qgc3RkOjp2
YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYgZnVu
Y3Rpb24pIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkgewogICAgICAg
ICBhdXRvJiBkYXRhID0gZW50cnkucGxhdGZvcm1EYXRhOwotICAgICAgICBpZiAoKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5p
c051bGwoKSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0
YSkpCisgICAgICAgIGlmICgoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRhdGEpICYm
ICFzdGQ6OmdldDxTdHJpbmc+KGRhdGEpLmlzTnVsbCgpKSB8fCBzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZGF0YSkpCiAgICAgICAgICAgICBmdW5j
dGlvbihlbnRyeS50eXBlLCBkYXRhKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyYmU4MWQyOTM4YTNkYmQwOTAyNmNh
NmVjNjRhYzMyODdlNmFiYzAzLi45N2ZmOTg1ZTI0ZTExYjRjN2JiNDE0MzczN2YwMjg0MGMzNWZm
Y2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9t
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRh
LmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2Fy
ZEN1c3RvbURhdGEgewogcHVibGljOgpAQCAtNDgsNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICAg
ICAgU3RyaW5nIHR5cGU7CiAgICAgICAgIFN0cmluZyBjdXN0b21EYXRhOwotICAgICAgICBzdGQ6
OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4gcGxhdGZvcm1EYXRhOworICAgICAg
ICBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHBsYXRm
b3JtRGF0YTsKICAgICB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUGFzdGVib2FyZEN1c3RvbURh
dGEoKTsKQEAgLTY1LDExICs2NiwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJz
aXN0ZW5jZTo6RGVjb2RlciYmKTsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHR5cGUpIGNvbnN0OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAgICAgU3RyaW5nIHJlYWRT
dHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKIAogICAgIHZvaWQg
d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAg
ICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
ZGF0YSk7CisgICAgdm9pZCB3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICB2b2lkIHdyaXRlU3RyaW5nSW5DdXN0b21E
YXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKICAgICB2b2lk
IGNsZWFyKCk7CkBAIC04Myw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZm9yRWFjaFR5
cGUoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJikgY29uc3Q7CiAgICAgdm9pZCBmb3JF
YWNoUGxhdGZvcm1TdHJpbmcoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IFN0cmluZyYgZGF0YSk+JiYpIGNvbnN0OwotICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5n
T3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFy
aWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYpIGNvbnN0OworICAgIHZv
aWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4mIGRhdGEpPiYmKSBjb25zdDsKICAgICB2b2lkIGZvckVhY2hDdXN0b21TdHJpbmco
RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk+JiYp
IGNvbnN0OwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IDFjMDcyNmZlYjNlMDJhZWQzMmI0NmYy
NjJiY2RhMTY5ZDY3MmViMmMuLmM0MWUwODUyNDQ5NmM2N2YxZjE1MDM4ZmJiMjZlOWMyOWRhNjk4
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVn
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBA
IC0zMSwxMCArMzEsMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdl
Owogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwpAQCAt
NjIsNyArNjMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGludDY0X3QgYWRkVHlwZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2
NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwot
ICAgIHZpcnR1YWwgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgaW50NjRfdCBzZXRCdWZm
ZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRV
UkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgQ29sb3ImLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
ICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKaW5kZXggM2Y0ODMyYTVhNjU4YzFjYzdjMGFhMTNi
MjZlMGVhNDczM2U5ZDNiNy4uOWU3MmU0NGEyZWFjNGQ4ZWY3MzBiOTg3MWQwZWM1MDhlZDlmYWM0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50Rmls
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVy
LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtQ29udGVudEZpbHRlciB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgPSAwOwotICAgIHZpcnR1YWwgUmVm
PFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0ID0gMDsK
ICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgdmlydHVhbCBDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCA9IDA7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMxMDA3
NDI1MDAyNDNiYjQ2ZmY1OTg2ODYxZTg0YTJmZDk2ZS4uNzFkZmI5M2U1NzU2MGUzM2E3ZjZjODBj
MjBmOTJkNWIyY2FlYzEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Q
YXN0ZWJvYXJkLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwog
Y2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJk
SXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29u
dGVudDsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFz
dGVib2FyZCB7CiBwdWJsaWM6CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRo
ZXNlIG1ldGhvZHMgd2lsbCByZXR1cm4gMCBpZiBwYXN0ZWJvYXJkIG93bmVyc2hpcCBoYXMgYmVl
biB0YWtlbiBmcm9tIHVzLgogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3QgY29weShjb25zdCBT
dHJpbmcmIGZyb21QYXN0ZWJvYXJkKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldEJ1
ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgaW50NjRfdCBzZXRDb2xvcihjb25zdCBDb2xvciYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZl
cnRlci5jcHAKaW5kZXggNGNiMzMwMWU3ZGY3MDcxYzVkZDlmYzU5YmM1NzE4NWM0ZTkxNDc2OC4u
NjMxYWRlN2NjZjdhZDI5NjkzYTJlNzY1MWZlNmE5Y2RlYmQzNzczYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgY29u
c3QgUmVzb3VyY2VFcnJvciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0Vycm9yKCkgY29uc3QK
ICAgICByZXR1cm4gbV9wcmV2aWV3RXJyb3I7CiB9CiAKLWNvbnN0IFNoYXJlZEJ1ZmZlciYgUHJl
dmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAorY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3ByZXZpZXdEYXRhLmdldCgpOworICAgIHJldHVybiAqbV9wcmV2aWV3RGF0YS0+Z2V0
KCk7CiB9CiAKIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKQEAg
LTkwLDcgKzkwLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWluUmVzb3VyY2Uo
KQogICAgIH0pOwogfQogCi12b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmFwcGVuZEZyb21CdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmFwcGVu
ZEZyb21CdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IHdoaWxlIChidWZmZXIuc2l6ZSgpID4gbV9sZW5ndGhBcHBlbmRlZCkgewogICAgICAgICBhdXRv
IG5ld0RhdGEgPSBidWZmZXIuZ2V0U29tZURhdGEobV9sZW5ndGhBcHBlbmRlZCk7CkBAIC0yMjIs
NyArMjIyLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQcmV2aWV3
Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRT
dGFydENvbnZlcnRpbmcoKnRoaXMpOwogCiAgICAgaWYgKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5
KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCi0gICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVy
RGlkUmVjZWl2ZURhdGEoKnRoaXMsIG1fcHJldmlld0RhdGEuZ2V0KCkpOworICAgICAgICBjbGll
bnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCAqbV9wcmV2aWV3RGF0YS0+
Z2V0KCkpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNvbnZlcnRpbmcgfHwgIWhhc0Ns
aWVudChjbGllbnQpKQogICAgICAgICByZXR1cm47CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBQ
cmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBj
bGllbnQpCiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKCp0
aGlzKTsKIH0KIAotdm9pZCBQcmV2aWV3Q29udmVydGVyOjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6ZGVsZWdh
dGVEaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewog
ICAgIGF1dG8gcHJvdGVjdGVkVGhpcyB7IFJlZiB7ICp0aGlzIH0gfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCmluZGV4IDJhMzcyOTIyNzk5Y2U2YWZmYWFi
M2UxNDBkMTkwYmE2NGNmOGNlMmIuLjkyMDJlZGRkOWUxMDViMjczNWVkYzE0NmYyNjY0YzEzY2I5
YzM0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQxLDE1ICs0MiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hh
cmVkQnVmZmVyRGF0YVZpZXc7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogc3RydWN0IFBy
ZXZpZXdDb252ZXJ0ZXJDbGllbnQ7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyOwog
CiBzdHJ1Y3QgUHJldmlld1BsYXRmb3JtRGVsZWdhdGUgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3
UGxhdGZvcm1EZWxlZ2F0ZT4gewogICAgIHZpcnR1YWwgflByZXZpZXdQbGF0Zm9ybURlbGVnYXRl
KCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZFJl
Y2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRlbGVnYXRlRGlkRmluaXNoTG9hZGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVsZWdhdGVEaWRGYWlsV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiB9OwpA
QCAtNzIsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHByZXZp
ZXdGaWxlTmFtZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwcmV2aWV3VVRJ
KCkgY29uc3Q7CiAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgcHJldmlld0Vycm9yKCkgY29uc3Q7
Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyJiBwcmV2aWV3RGF0YSgpIGNvbnN0OworICAgIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHByZXZpZXdEYXRhKCkgY29uc3Q7CiAKICAgICB2b2lk
IGZhaWxlZFVwZGF0aW5nKCk7CiAgICAgdm9pZCBmaW5pc2hVcGRhdGluZygpOwpAQCAtOTQsNyAr
OTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNQbGF0Zm9ybVBhc3N3b3JkRXJyb3IoY29uc3Qg
UmVzb3VyY2VFcnJvciYpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBp
dGVyYXRlQ2xpZW50cyhUJiYgY2FsbGJhY2spOwotICAgIHZvaWQgYXBwZW5kRnJvbUJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGFwcGVuZEZyb21CdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkQWRkQ2xpZW50KFByZXZpZXdDb252
ZXJ0ZXJDbGllbnQmKTsKICAgICB2b2lkIGRpZEZhaWxDb252ZXJ0aW5nV2l0aEVycm9yKGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZEZhaWxVcGRhdGluZygpOwpAQCAtMTA2LDcg
KzEwOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVVubG9ja1dpdGhQYXNzd29yZChj
b25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlCi0gICAgdm9p
ZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAg
IHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JikgZmluYWw7CiAgICAgdm9pZCBkZWxlZ2F0ZURpZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsKICAg
ICB2b2lkIGRlbGVnYXRlRGlkRmFpbFdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikgZmlu
YWw7CiAKQEAgLTExOCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgICAgICBGaW5pc2hlZENvbnZl
cnRpbmcsCiAgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fcHJldmlld0RhdGE7Cisg
ICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcHJldmlld0RhdGE7CiAgICAgUmVz
b3VyY2VFcnJvciBtX3ByZXZpZXdFcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2lu
YWxSZXNwb25zZTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlVwZGF0aW5nIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmgKaW5kZXgg
MDRlYTM2ODA2OTJiMjUyYTE5ODljMjZjYTIwNDIxMjc3N2FhM2I3Yi4uOWNlZTkzMzIwYjIzOGI0
Y2Q3M2NkZDJlMDMwMmMzYmY0ZGFkNjhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFByZXZpZXdDb252ZXJ0ZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9y
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
c3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29u
dmVydGVyQ2xpZW50PiB7CiAgICAgdmlydHVhbCB+UHJldmlld0NvbnZlcnRlckNsaWVudCgpID0g
ZGVmYXVsdDsKQEAgLTQyLDcgKzQyLDcgQEAgc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQg
OiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVyQ2xpZW50PiB7CiAgICAgdmlydHVhbCB2
b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbFVwZGF0aW5nKFBy
ZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJE
aWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25z
dCBTaGFyZWRCdWZmZXImIG5ld0RhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0Nv
bnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBuZXdEYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252
ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsQ29udmVydGluZyhQcmV2aWV3Q29udmVy
dGVyJikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZp
ZXdDb252ZXJ0ZXJQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0Nv
bnZlcnRlclByb3ZpZGVyLmgKaW5kZXggODI3ODYzOTNmY2VkNzU0Yzg1ZjdiMjg5MTI1MmY1MTZi
ZWQwZDU0OS4uYjk4NmVlNDBkMTk3NTE3NGY1NGFkMjlhMTY4Y2FkZjE4OTQ1NmMzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgK
QEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFByZXZpZXdDb252
ZXJ0ZXJQcm92aWRlciA6IENhbk1ha2VXZWFrUHRyPFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcj4g
ewogICAgIHZpcnR1YWwgflByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcigpID0gZGVmYXVsdDsKIAot
ICAgIHZpcnR1YWwgdm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQ
cmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZm
ZXIqKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJl
dmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJikgPSAwOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDhlNjhlMzM3NzgxZmIyOWFk
MzljNTViOWFmZDM5MDAzNTM1Mzg1ZC4uOTdlZjZiZTRmODFmMWM0NTkyYzM1MjEwZDk3ZDlhNmMy
ODg1NTUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0z
Nyw2MyArMzcsNTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK0ZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCiB7CiAgICAgYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi1TaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK0ZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IHNpemUpCiB7CiAgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGRhdGEpLCBzaXplKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxl
RGF0YSkKICAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5h
cHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpfSk7CisgICAg
bV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURh
dGEpKSB9KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyJiYgcHJvdmlkZXIpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXpl
KHByb3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7
IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCi1TaGFy
ZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBk
YXRhKQogewogICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAotI2lmIFVTRShHU1RSRUFN
RVIpCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25l
ZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIobWFwcGVkQnVmZmVyKSk7CisgICAgYXBwZW5kKFdU
Rk1vdmUoYnVmZmVyKSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBl
ZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCi0gICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNp
emUoKSkKKyNpZiBVU0UoR1NUUkVBTUVSKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVk
QnVmZmVyKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRl
KCZtYXBwZWRCdWZmZXIpfSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcihtYXBwZWRCdWZmZXIpKTsKIH0KLSNlbmRpZgogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5
VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0gICAgaWYgKG1heVVzZUZpbGVN
YXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAgICAgICAgYm9vbCBtYXBwaW5n
U3VjY2VzczsKLSAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURh
dGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Ci0gICAgICAgIGlm
IChtYXBwaW5nU3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVk
QnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Ci0gICAgfQotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Ci19Ci0KLVJlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikK
K0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoR3N0TWFwcGVk
T3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKKyAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6
ZSgpKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZl
Y3RvcikpKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUo
Jm1hcHBlZEJ1ZmZlcikgfSk7CiB9CisjZW5kaWYKIAotc3RhdGljIFZlY3Rvcjx1aW50OF90PiBj
b21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3Im
IHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNl
Z21lbnRzRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rv
ciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5l
ZERhdGE7CiAgICAgY29tYmluZWREYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CkBA
IC0xMDMsMzMgKzkyLDE5IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRz
RGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJuIGNv
bWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVu
dCgpIGNvbnN0CitSZWY8U2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjptYWtl
Q29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBGSVhNRTog
V2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFzc2Vy
dGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0
ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGhtcyBz
aW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgPSB0
cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAgICAgIHJl
dHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBSZWYgeyAqc3Rh
dGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Kj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEp
CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21l
bnQuY29weVJlZigpKTsKICAgICBhdXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0Rh
dGEobV9zZWdtZW50cywgbV9zaXplKTsKLSAgICBtX3NlZ21lbnRzLmNsZWFyKCk7Ci0gICAgbV9z
ZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERh
dGEpKX0pOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKLSAgICBBU1NFUlQo
aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci19Ci0KLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZl
cjo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKLSAgICBBU1NF
UlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci0gICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2Vn
bWVudC0+ZGF0YSgpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNv
bWJpbmVkRGF0YSkpOwogfQogCi1WZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0
YSgpIGNvbnN0CitWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weURh
dGEoKSBjb25zdAogewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGRhdGEucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShzaXplKCkpOwpAQCAtMTM5LDcgKzExNCw3IEBAIFZlY3Rvcjx1aW50
OF90PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKICAgICByZXR1cm4gZGF0YTsKIH0K
IAotVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKQorVmVjdG9yPHVpbnQ4
X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkKIHsKICAgICBpZiAobV9zZWdt
ZW50cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xNTQsMTMgKzEyOSwxMyBA
QCBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCiAgICAgcmV0dXJuIGNv
bWJpbmVkRGF0YTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZpZXcgU2hhcmVkQnVmZmVyOjpnZXRT
b21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0CitTaGFyZWRCdWZmZXJEYXRhVmlldyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0CiB7
CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogZWxlbWVudCA9IGdldFNlZ21lbnRG
b3JQb3NpdGlvbihwb3NpdGlvbik7CiAgICAgcmV0dXJuIHsgZWxlbWVudC0+c2VnbWVudC5jb3B5
UmVmKCksIHBvc2l0aW9uIC0gZWxlbWVudC0+YmVnaW5Qb3NpdGlvbiB9OwogfQogCi1jb25zdCBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yRW50cnkqIFNoYXJlZEJ1ZmZlcjo6Z2V0U2Vn
bWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGlvbikgY29uc3QKK2NvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yRW50cnkqIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQocG9zaXRpb24gPCBtX3NpemUpOwogICAgIGF1dG8gY29tcGFyYXRvciA9
IFtdKGNvbnN0IHNpemVfdCYgcG9zaXRpb24sIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkm
IGVudHJ5KSB7CkBAIC0xNzEsNyArMTQ2LDcgQEAgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudFZlY3RvckVudHJ5KiBTaGFyZWRCdWZmZXI6OmdldFNlZ21lbnRGb3JQb3NpdGlvbigKICAg
ICByZXR1cm4gZWxlbWVudDsKIH0KIAotU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmco
KSBjb25zdAorU3RyaW5nIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29u
c3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAgICAgZm9yRWFjaFNlZ21l
bnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKQEAgLTE4MSw3ICsxNTYsMjIgQEAgU3RyaW5nIFNoYXJl
ZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRv
U3RyaW5nKCk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVh
dGVBcnJheUJ1ZmZlcigpIGNvbnN0CitzaXplX3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6c2l6
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2l6ZTsKK30KKworYm9vbCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjppc0VtcHR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIXNpemUoKTsKK30KKwor
Ym9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAg
IHJldHVybiBtX2NvbnRpZ3VvdXM7Cit9CisKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewogICAgIGF1dG8g
YXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwgMSk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewpAQCAt
MjAwLDY4ICsxOTAsNjUgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKICAgICByZXR1cm4gYXJyYXlCdWZmZXI7CiB9CiAKLXZv
aWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQp
OwogICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0
YS5tX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0
YS5tX3NlZ21lbnRzKSB7Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHttX3Np
emUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51bmNo
ZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAg
ICAgIG1fc2l6ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNTRVJU
KGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5k
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewot
ICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAg
bV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZl
Y3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50Ojpj
cmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBtX3NpemUgKz0gbGVuZ3RoOwogICAgIEFT
U0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFw
cGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVl
bkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUo
KTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdt
ZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRhdGFTaXplOwog
ICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZm
ZXI6OmNsZWFyKCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOworfQorCit2b2lkIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNsZWFyKCkKIHsKICAgICBtX3NpemUgPSAwOwogICAgIG1fc2VnbWVudHMuY2xl
YXIoKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLVJlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CitSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiB7Ci0gICAgUmVm
PFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7CisgICAg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNsb25lID0gYWRvcHRSZWYoKm5ldyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKTsKICAgICBjbG9uZS0+bV9zaXplID0gbV9zaXplOwogICAgIGNsb25l
LT5tX3NlZ21lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkpOwog
ICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpCi0gICAgICAgIGNsb25l
LT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7ZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVt
ZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hl
Y2tlZEFwcGVuZCh7IGVsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlS
ZWYoKSB9KTsKICAgICBBU1NFUlQoY2xvbmUtPmludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAg
IEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CiAK
LVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92
aWRlciYmIHByb3ZpZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihXVEZNb3ZlKHByb3ZpZGVyKSkpOwotfQotCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNl
Z21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBh
cHBseSkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQo
Y29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkg
Y29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsKICAgICBmb3IgKGF1dG8m
IHNlZ21lbnQgOiBzZWdtZW50cykKICAgICAgICAgYXBwbHkoU3BhbiB7IHNlZ21lbnQuc2VnbWVu
dC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSB9KTsKIH0KIAotYm9vbCBTaGFyZWRC
dWZmZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25z
dAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29u
c3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKIHsKICAgICBpZiAocHJlZml4LmVtcHR5KCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjgzLDcgKzI3MCw3IEBAIGJvb2wgU2hhcmVkQnVmZmVy
OjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnJlYWQo
c2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKK1ZlY3Rvcjx1aW50OF90PiBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNv
bnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgaWYgKG9mZnNldCA+PSBzaXpl
KCkpCkBAIC0zMTAsMTIgKzI5NywxMiBAQCBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpy
ZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAgICAgcmV0dXJuIGRhdGE7
CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVf
dCBsZW5ndGgpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lk
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIHsKICAgICByZXR1cm4gY29weVRv
KGRlc3RpbmF0aW9uLCAwLCBsZW5ndGgpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRv
KHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAor
dm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNp
emVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxlbmd0aCAr
IG9mZnNldCA8PSBzaXplKCkpOwogICAgIGlmIChvZmZzZXQgPj0gc2l6ZSgpKQpAQCAtMzUzLDE0
ICszNDAsMTMgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwg
c2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKICAgICB9CiB9CiAKLWJvb2wgU2hh
cmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0g
ICAgcmV0dXJuIGl0ICE9IGVuZCgpICYmICsraXQgPT0gZW5kKCk7CisgICAgcmV0dXJuIG1fc2Vn
bWVudHMuc2l6ZSgpID09IDE7CiB9CiAKICNpZiBBU1NFUlRfRU5BQkxFRAotYm9vbCBTaGFyZWRC
dWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogewogICAgIHNpemVfdCBwb3Np
dGlvbiA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykgewpA
QCAtMzcyLDcgKzM1OCw1NyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3Rl
bnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNvbnN0IHVpbnQ4X3Qq
IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAorU2hhcmVkQnVmZmVyOjpT
aGFyZWRCdWZmZXIoKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1NoYXJlZEJ1
ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1f
c2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1v
dmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworU2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY29udGlndW91
c0J1ZmZlcikKK3sKKyAgICBBU1NFUlQoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgp
IHx8IGNvbnRpZ3VvdXNCdWZmZXItPmlzRW1wdHkoKSk7CisgICAgbV9zaXplID0gY29udGlndW91
c0J1ZmZlci0+c2l6ZSgpOworICAgIGlmIChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50
KCkpCisgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgY29udGlndW91c0J1ZmZlci0+bV9z
ZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVl
OworfQorCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmIGRhdGEpCisgICAgOiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUoZGF0YSkp
Cit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZp
bGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQoreworICAgIGlmIChtYXlVc2VGaWxlTWFwcGlu
ZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7CisgICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nl
c3M7CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZp
bGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOworICAgICAgICBpZiAobWFw
cGluZ1N1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZl
cihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOworICAgIH0KKyAgICByZXR1cm4gY3JlYXRlRnJv
bVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKK30KKworY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVy
OjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEo
KTsKK30KKworY29uc3QgY2hhciogU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30K
KworY29uc3QgdWludDhfdCogRGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogewogICAgIGF1dG8g
dmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCkBA
IC0zOTEsMTMgKzQyNywxMyBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0
YWJsZURhdGEpOwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5z
TWFwcGVkRmlsZURhdGEoKSBjb25zdAorYm9vbCBEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRG
aWxlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Rmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKICNpZiAhVVNF
KENGKQotdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QK
K3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBj
b25zdAogewogfQogI2VuZGlmCkBAIC00MDcsNyArNDQzLDcgQEAgV1RGOjpQZXJzaXN0ZW5jZTo6
RGVjb2RlciBTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAogICAgIHJldHVybiB7eyByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXplKCkgfX07CiB9CiAKLWJv
b2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNv
bnN0Citib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKHRoaXMgPT0gJm90aGVy
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ1Niw3ICs0OTIsNyBAQCBib29sIFNoYXJlZEJ1
ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgp
IGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlz
aXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApAQCAtNDc1LDcgKzUx
MSw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAg
ICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFy
ZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVm
ZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldp
dGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50
KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlv
bldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5z
aXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00OTksMTIgKzUzNSwxNyBAQCBjb25z
dCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKK2NvbnN0
IGNoYXIqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKwogUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigp
IGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21l
bnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+
IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERh
dGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBkYXRhID0gZGF0YSgpXSgp
IHsgcmV0dXJuIGRhdGE7IH0sCi0gICAgICAgIFtzZWdtZW50LCBzaXplID0gc2l6ZSgpXSgpIHsg
cmV0dXJuIHNpemU7IH0KKyAgICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsg
fQogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4
IGYyM2Y1ZDY5YWQzMmVkNjQwYjk1NzdiMmU2YzQ1NDkxODM5MzY4YWQuLjliZjc5N2MxYzE2OTk1
YzFlYTI2YzMwYTE1ZmEzMDVhMDExYTEzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtNjIsMTQ2ICs2MiwxMzMgQEAgY2xhc3MgRGVjb2RlcjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRC
dWZmZXJEYXRhVmlldzsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworLy8gRGF0YSB3cmFwcGVk
IGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSBy
ZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCisvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUg
ZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCitjbGFzcyBEYXRhU2VnbWVudCA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcik7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEp
KSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgIGVudW0gY2xhc3Mg
TWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHN0YXRpYyBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
TW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMp
OwotCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4m
Jik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEpCisgICAgeworICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKKyAgICB9CiAKLSNp
ZiBVU0UoRk9VTkRBVElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBj
b25zdDsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsK
LSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lk
IGFwcGVuZChOU0RhdGEgKik7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAg
c3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0
YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0K
ICNlbmRpZgotCiAjaWYgVVNFKEdMSUIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShHQnl0ZXMqKTsKLSAgICBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7
CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRh
dGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9
CiAjZW5kaWYKLQogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNl
Z21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgot
ICAgIC8vIENhbGxpbmcgZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUg
Y29waWVkIGludG8gb25lIHNlZ21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8g
SXRlcmF0ZSB0aGUgc2VnbWVudHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAg
ICAvLyBGSVhNRTogQXVkaXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVw
bGFjZSB0aGVtIHdpdGggaXRlcmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rv
cjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OwotICAgIFZlY3Rvcjx1aW50OF90PiByZWFkKHNp
emVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwotCi0gICAgLy8gU2ltaWxhciB0byBj
b3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3Rl
YWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgotICAg
IFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21l
bnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAKLSAgICAvLyBDcmVh
dGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50
cyB0byB0aGF0Ci0gICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBi
dWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZTsgfQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUo
KTsgfQotCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9pZCBh
cHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhf
dD4mJik7Ci0KLSAgICB2b2lkIGNsZWFyKCk7CisgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAgICAg
ICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAgICAgRnVuY3Rpb248c2l6
ZV90KCk+IHNpemU7CisgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25z
dDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29u
c3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNp
emVfdCBsZW5ndGgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQ
cm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdU
Rk1vdmUocHJvdmlkZXIpKSk7IH0KIAotICAgIC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdt
ZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBv
dGhlciBvYmplY3RzLgotICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxv
Y2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KLSAgICBjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewotICAgIHB1YmxpYzoKLSAgICAgICAg
V0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgICAgICBXRUJD
T1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVTRShGT1VOREFUSU9OKQorICAg
IFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0Owor
I2VuZGlmCiAKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1
aW50OF90PiYmIGRhdGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQo
KTsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUo
ZGF0YSkpKTsKLSAgICAgICAgfQorICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNv
bnN0OwogCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQog
I2lmIFVTRShDRikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFp
blB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVu
dChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0
YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNl
Z21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdt
ZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdU
Rk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgc3Rh
dGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4m
JiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkp
KTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZl
cj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0K
ICNlbmRpZgotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdt
ZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92
aWRlcikKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQog
Ci0gICAgICAgIHN0cnVjdCBQcm92aWRlciB7Ci0gICAgICAgICAgICBGdW5jdGlvbjxjb25zdCB1
aW50OF90KigpPiBkYXRhOwotICAgICAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7Ci0g
ICAgICAgIH07Ci0KLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3Zp
ZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShwcm92aWRlcikpKTsgfQotCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgICAgIFJldGFpblB0
cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICAgICAgYm9vbCBj
b250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBE
YXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50
OF90PiwKICNpZiBVU0UoQ0YpCi0gICAgICAgIERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFS
ZWY+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkp
IHsgfQorICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShHTElC
KQotICAgICAgICBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAg
ICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQdHI8
R0J5dGVzPiwKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdtZW50
KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2lt
bXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRP
d25lZEJ1ZmZlcj4sCisjZW5kaWYKKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEs
CisgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CisjaWYgIVVTRShGT1VOREFUSU9OKQorICAgIGZyaWVuZCBj
bGFzcyBTaGFyZWRCdWZmZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKICNlbmRpZgotICAgICAgICBE
YXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAg
ICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21l
bnQoUHJvdmlkZXImJiBwcm92aWRlcikKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdU
Rk1vdmUocHJvdmlkZXIpKSB7IH0KK307CisKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKTsgfQorICAgIHN0
YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0
aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIHN0YXRpYyBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92
ZShidWZmZXIpKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsgfQorICAgIHN0YXRpYyBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHBy
b3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RG
TW92ZShwcm92aWRlcikpKTsgfQogCi0gICAgICAgIHN0ZDo6dmFyaWFudDxWZWN0b3I8dWludDhf
dD4sCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5T
QXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhKik7CisjZW5kaWYK
ICNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRh
dGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5
dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShHQnl0ZXMqKTsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAg
ICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRC
dWZmZXImKTsKICNlbmRpZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEs
Ci0gICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwotICAgICAgICBmcmllbmQg
Y2xhc3MgU2hhcmVkQnVmZmVyOwotICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVp
bnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4
X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisKKyAgICAvLyBT
aW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhl
IGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGlzIG5vdCBzaGFyZWQpLgorICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOworCisg
ICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0
IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgorICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25z
dDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKLSAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25zdDsKIAotICAgIHZvaWQgZm9yRWFj
aFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+
JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4m
IHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnRpZ3VvdXMoKSBj
b25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBj
b3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGlu
YXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29w
eVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25z
dDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rp
b248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZp
eCkgY29uc3Q7CisKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50
OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9y
RW50cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIxMCw1NiArMTk3LDE3
NyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBWZWN0b3I8RGF0YVNl
Z21lbnRWZWN0b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJh
dG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9CiAgICAgRGF0
YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vn
bWVudHMuZW5kKCk7IH0KLSAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKIAogICAgIC8vIGJlZ2luIGFu
ZCBlbmQgdGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRpbWUuCi0gICAgU2hh
cmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3Qg
cG9zaXRpb24pIGNvbnN0OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhp
bnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpE
ZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9y
PT0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
IW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVk
QnVmZmVyJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQorICAgIFdFQkNPUkVf
RVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CiAKLXByaXZh
dGU6Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KFZlY3Rvcjx1aW50OF90PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdt
ZW50OjpQcm92aWRlciYmKTsKK3Byb3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVm
ZmVyOworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29sIG1fY29u
dGlndW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwg
c2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6
OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNFKENGKQotICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgogI2lmIFVTRShHTElCKQot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEdCeXRlcyopOwogI2VuZGlmCiAjaWYgVVNF
KEdTVFJFQU1FUikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZm
ZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9
OwogCi0gICAgdm9pZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKK3ByaXZhdGU6Cisg
ICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBlbmQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBVU0Uo
Rk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7Cisj
ZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRh
UmVmKTsKKyNlbmRpZgogCi0gICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEg
VmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRC
dWZmZXIuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjbGVhcigpOwogCisgICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRv
IGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0
YWtlRGF0YSgpOwogICAgIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkqIGdldFNlZ21lbnRG
b3JQb3NpdGlvbihzaXplX3QgcG9zaXRpdGlvbikgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpOwotCi0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLSAgICBtdXRhYmxlIERhdGFTZWdtZW50
VmVjdG9yIG1fc2VnbWVudHM7Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG11dGFibGUgYm9v
bCBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50IHsgZmFsc2UgfTsKICAgICBib29sIGlu
dGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3Q7CiAjZW5kaWYKIH07CiAKLWlubGluZSBWZWN0b3I8
dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCisvLyBBIFNoYXJlZEJ1ZmZlciBp
cyBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGlyZWN0bHkgYWNjZXNz
IGl0cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhvZHMuCitjbGFzcyBT
aGFyZWRCdWZmZXIgOiBwdWJsaWMgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB7CitwdWJsaWM6Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAo
IXNpemVvZi4uLihBcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcigpKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9
PSAxCisgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50
Pj4gJiYuLi4pKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIGF1dG8gYnVmZmVyID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9y
d2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBX
RUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90ICpkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OworCisgICAgZW51
bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0g
TWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRp
ZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBj
cmVhdGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShHTElCKQorICAgIFdFQkNPUkVf
RVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNlbmRpZgorCitw
cml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdt
ZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKTsKK307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRl
ZmF1bHQ7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgeworICAgICAgICAvLyBXZSBkbyBub3Qgd2Fu
dCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFzIGFs
bCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAgICAgLy8g
b25jZSBjcmVhdGVkLgorICAgICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPmhhc09uZVJlZigp
KSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoKmJ1ZmZlcik7CisgICAgfQorICAg
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJl
ZmVyZW5jZSB0byB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhcyBhbGwgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4K
KyAgICAgICAgaWYgKGJ1ZmZlci0+aGFzT25lUmVmKCkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVy
ID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlci5nZXQoKSkpOworICAgIH0KKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUuLi4gQXJncz4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKEFyZ3MmJi4uLiBhcmdz
KQorICAgICAgICA6IG1fYnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAg
ZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29u
c3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biAhbV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAgIHZv
aWQgcmVzZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKQorICAg
IHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgfQorCisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyOyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsgfQorICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlKCkK
KyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAgICByZXR1cm4gbV9idWZmZXIu
cmVsZWFzZU5vbk51bGwoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBlbnN1cmVCdWZm
ZXIoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgICAgIG1fYnVmZmVy
ID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgfQorICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKK307CisKK2lubGluZSBWZWN0b3I8dWlu
dDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmICho
YXNPbmVSZWYoKSkKICAgICAgICAgcmV0dXJuIHRha2VEYXRhKCk7CkBAIC0yNjgsMTcgKzM3Niwx
NyBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQog
CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0g
ICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYs
IHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdT
aXplID0gc3RkOjpudWxsb3B0KTsKKyAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNl
Z21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhj
b25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKICAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0OwogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25z
dCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSgpKTsgfQorICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBj
b25zdDsKICAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsK
ICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEo
KSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9zZWdt
ZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBjb25z
dCBzaXplX3QgbV9zaXplOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcAppbmRleCBjZGI2ZTcwMzQwNGQ0MjZkZDIxYjQ3OWZh
ODljMGRhOWI4YzQ5ZjhlLi45ZDA1NWNlMjdkODhjM2Q2MmU1YmQxY2Q0NmFkOTFmNWNjNDMxZjQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1Jl
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVO
QUJMRShNSFRNTCkKIAotU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRv
cikKK1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9y
KQogICAgIDogbV9pdGVyYXRvckN1cnJlbnQoYnVmZmVyLT5iZWdpbigpKQogICAgICwgbV9pdGVy
YXRvckVuZChidWZmZXItPmVuZCgpKQogICAgICwgbV9zZWdtZW50KG1faXRlcmF0b3JDdXJyZW50
ICE9IG1faXRlcmF0b3JFbmQgPyBtX2l0ZXJhdG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0YSgpIDog
bnVsbHB0cikKQEAgLTQ0LDcgKzQ0LDcgQEAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWMKIHsKIH0K
IAotU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJl
ZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCitTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
YnVmZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVudChi
dWZmZXItPmJlZ2luKCkpCiAgICAgLCBtX2l0ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAg
LCBtX3NlZ21lbnQobV9pdGVyYXRvckN1cnJlbnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRlcmF0
b3JDdXJyZW50LT5zZWdtZW50LT5kYXRhKCkgOiBudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKaW5kZXggNWQ0ZTZmZWU1ODJj
NjYxNmZkMDdlMzk5NGZmNzVjOGYwN2EyZmNlMS4uMWM2NDA4ZDRjNzM2YTFjNGE0NWNlZTdiM2Y2
OTY1N2JjOWEyNjE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXJDaHVua1JlYWRlci5oCkBAIC00MSw4ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgewogcHVibGlj
OgotICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFZlY3Rv
cjxjaGFyPiYgc2VwYXJhdG9yKTsKLSAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRC
dWZmZXIqLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpOworICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRv
cik7CisgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcios
IGNvbnN0IGNoYXIqIHNlcGFyYXRvcik7CiAKICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBW
ZWN0b3I8Y2hhcj4mKTsKICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBjaGFyKik7CkBAIC01
OCw4ICs1OCw4IEBAIHB1YmxpYzoKICAgICBzaXplX3QgcGVlayhWZWN0b3I8dWludDhfdD4mLCBz
aXplX3QpOwogCiBwcml2YXRlOgotICAgIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6
OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JDdXJyZW50OwotICAgIGNvbnN0IFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JFbmQ7CisgICAg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9y
IG1faXRlcmF0b3JDdXJyZW50OworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yRW5kOwogICAgIGNvbnN0
IHVpbnQ4X3QqIG1fc2VnbWVudCB7IG51bGxwdHIgfTsKICAgICBzaXplX3QgbV9zZWdtZW50SW5k
ZXggeyAwIH07CiAgICAgVmVjdG9yPGNoYXI+IG1fc2VwYXJhdG9yIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKaW5kZXggYjJkN2E1NTBk
NDYwZTk0Y2QzMTUxMzRhMzE5NWJjZDkxYzdiNzg5NC4uYTRiNGJiMTA0YjRkODQwMTViOGFhNWI1
M2U3ZGZhNzg4Y2VkMjVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3Rh
dGljUGFzdGVib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFz
dGVib2FyZC5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0
ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9j
dXN0b21EYXRhLndyaXRlU3RyaW5nKHR5cGUsIHZhbHVlKTsKIH0KIAotdm9pZCBTdGF0aWNQYXN0
ZWJvYXJkOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGRhdGEpCit2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5
cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgbV9ub25EZWZh
dWx0RGF0YVR5cGVzLmFkZCh0eXBlKTsKICAgICBtX2N1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUs
IFdURk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3Rh
dGljUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2Fy
ZC5oCmluZGV4IGMwOWI2ZGUzMWYyZWRlYmUwMTg4ZGM5YzQ2NmEyNzFlMWI4YjllMTQuLmVkZDcx
MzYyM2YwNmQyMmIzOGU4MzJhMjgzN2ZlNjY5OTlkZmQ3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBTdGF0aWNQYXN0ZWJvYXJkIGZpbmFsIDogcHVibGljIFBhc3RlYm9h
cmQgewogcHVibGljOgpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHJlYWRT
dHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBmaW5hbDsKIAogICAgIHZvaWQg
d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpIGZpbmFs
OwotICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhKTsKKyAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdJbkN1
c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHZv
aWQgY2xlYXIoKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5n
SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaApp
bmRleCA2ODc5NTkwMGM1YWRmOWNjOTA0NWUwZWFiYjIyYjE4ZmE2Njk2MzE0Li4xZDY1YmM0MDNh
ZDg1MjQzYzY3MjVlNzA0NDhkNmNkYWRjY2NjZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogc3RydWN0IE5vd1BsYXlpbmdJbmZvQXJ0d29yayB7CiAgICAgU3RyaW5nIHNy
YzsKICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VE
YXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CiAKICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm93UGxheWluZ0luZm9BcnR3b3JrJiBvdGhlcikgY29u
c3QKICAgICB7CkBAIC02Nyw3ICs2Nyw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGlu
ZSBzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gTm93UGxheWluZ0luCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGltYWdlRGF0
YSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAppbmRleCBl
OGIxOWJmMzRlYmEyM2I4NTcyMDdiZTg4Y2UxYjQ1YmY4ZjJjY2MzLi5mMzIxNDI5NTFiMTc5OTZl
NmNlMTY3NTYzMTZiZmQ0NzNmYWE0ZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCkBAIC0x
MzAsNyArMTMwLDcgQEAgY2xhc3MgQXVkaW9GaWxlUmVhZGVyV2ViTURhdGEgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogI2lmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCiAgICAgUmVmPEF1ZGlvVHJhY2tQcml2YXRlV2ViTT4gbV90cmFj
azsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5
MWY5YTRkM2FiMzZlMmEwYzA4MTJjOTRlMTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3
ZTUxMDg5YjU3MTlmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3
ICszNDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0lu
Zm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRp
bWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8u
YXJ0d29yayAmJiBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAg
YXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdv
cmstPmltYWdlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWlu
Z0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtN
SU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1l
ZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIo
bm93UGxheWluZ0luZm8uYXJ0d29yay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJD
Ri5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5k
ZXggNmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uY2M5YTY3NTU5ZmNj
YjlkNWQzMDM3NGY4N2I1OTA1ZTc5ODMzZjE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQor
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYg
ZGF0YSkKIHsKICAgICBhcHBlbmQoZGF0YSk7CiB9CkBAIC01NSwxMiArNTUsMTIgQEAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogfQogI2Vu
ZGlmCiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YVJlZiBk
YXRhKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNyZWF0ZShDRkRhdGFSZWYgZGF0YSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCdWZmZXIoZGF0YSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoZGF0YSkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5l
ZWRlZFNvb24oKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5
Tm90TmVlZGVkU29vbigpIGNvbnN0CiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IG1f
c2VnbWVudHMpIHsKICAgICAgICAgaWYgKGVudHJ5LnNlZ21lbnQtPmhhc09uZVJlZigpKSB7CkBA
IC03MCw5ICs3MCw5IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29v
bigpIGNvbnN0CiAgICAgfQogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJl
ZiBkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRh
dGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAg
ICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdt
ZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAg
ICBtX3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVy
LmgKaW5kZXggMDc5N2RmYmU4ZDAxOGJlNjM2MTc0NGM1OGY4OTJkZDU2ZWQ2ODljNS4uY2JlODc3
MWE0NWQ4NjJjYjVhYjA1ZWNhMzk5OTI3ZTA3ODM4ZjU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2
ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlz
aGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2Vt
ZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICAgICBDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBib29sIGlzUmVxdWlyZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXIubW0KaW5kZXggNDI5MGRiMTI4ZDAwMGE0MGVlZjcwZmQyOTQxZDYzNDQ5MDQ2ZGUwMy4uMmVm
MjcwMWZlNjc4YmY5YjkyZGIyMTJiYmVhNWM5MTVhM2ZjM2EyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIubW0KQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250
ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQogICAgIHNlbWFwaG9yZS53YWl0KCk7CiB9
CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBs
YWNlbWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE5ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAogewogICAgIEFT
U0VSVChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1f
cmVwbGFjZW1lbnREYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCmluZGV4IDA2
OGNkY2IzODNmNDIzNjVhYzMyNjRlMjI5YTZkNjNiYzJiNGFiZDYuLjY3OWFlOTMyOTUxN2UxZjM5
NDNiYTU3NjJhYzhmNTZlODYwYzhjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaApAQCAt
NDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0Rh
dGEoKSBvdmVycmlkZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1l
bnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQog
ICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92
ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCmluZGV4IGI0NjFmOTc1
MzZkZTNhMTU4MTNhNTgyN2I4NjcxMzhiOTZkNGYzOGMuLjFjOTYwNDcxNmI0MjY5M2Q1ZTQ2YzJl
MjNlOTQxZGEwMGM4M2U0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCkBAIC0xMDks
NyArMTA5LDcgQEAgdm9pZCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6ZmluaXNoZWRB
ZGRpbmdEYXRhKCkKICAgICB1cGRhdGVGaWx0ZXJTdGF0ZSgpOwogfQogCi1SZWY8U2hhcmVkQnVm
ZmVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29u
c3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRh
KCkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJv
YXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29j
b2EubW0KaW5kZXggNmYyOGU4MjQzNjBjY2QzMDg2YzAzMThmYWU0MDk4ZjFlZGUyOGUyNS4uYjgx
NzA4MTdjZWM1OWUyMmQzYzBlOWE3OGYxNDZjMDMzZTRjMTY2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpAQCAtNDcsNyArNDcsNyBA
QCBzdGF0aWMgTlNCaXRtYXBJbWFnZUZpbGVUeXBlIGJpdG1hcFBOR0ZpbGVUeXBlKCkKIH0KICNl
bmRpZiAvLyBQTEFURk9STShNQUMpCiAKLS8vIE1ha2luZyB0aGlzIG5vbi1pbmxpbmUgc28gdGhh
dCBXZWJLaXQgMidzIGRlY29kaW5nIGRvZXNuJ3QgaGF2ZSB0byBpbmNsdWRlIFNoYXJlZEJ1ZmZl
ci5oLgorLy8gTWFraW5nIHRoaXMgbm9uLWlubGluZSBzbyB0aGF0IFdlYktpdCAyJ3MgZGVjb2Rp
bmcgZG9lc24ndCBoYXZlIHRvIGluY2x1ZGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci5oLgogUGFz
dGVib2FyZFdlYkNvbnRlbnQ6OlBhc3RlYm9hcmRXZWJDb250ZW50KCkgPSBkZWZhdWx0OwogUGFz
dGVib2FyZFdlYkNvbnRlbnQ6On5QYXN0ZWJvYXJkV2ViQ29udGVudCgpID0gZGVmYXVsdDsKIApA
QCAtMjExLDkgKzIxMSw5IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVn
YWN5VW5zYWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQor
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0
bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBh
bGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0
aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCmluZGV4IDllZTBjMGI1
NWQ3OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLjI0MGEzNjdiZTJhYzc2NWI3OGJkZTcx
MDA0NjY2NGJjYjFjZTU0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEgQEAKICNpbXBvcnQgPHd0
Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNvcmVTaGFyZWRCdWZmZXJE
YXRhIDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246
KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOworLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRh
U2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNp
emU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSB7Ci0g
ICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IF9kYXRh
U2VnbWVudDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQ+IF9kYXRhU2Vn
bWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJbnRlZ2VyIF9zaXplOwog
fQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxvY107
CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50
ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQg
cG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCiB7CiAg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC04
OCwxMiArODgsMTIgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkKK1JlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoTlNEYXRhICpkYXRh
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihicmlkZ2VfY2FzdChk
YXRhKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIo
YnJpZGdlX2Nhc3QoZGF0YSkpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0Rh
dGEgKmRhdGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRh
dGEpCiB7CiAgICAgcmV0dXJuIGFwcGVuZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CkBAIC0xMDUs
MTAgKzEwNSw4IEBAIFJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRh
KCkgY29uc3QKIAogUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRh
dGEoKSBjb25zdAogewotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwogICAgIGlmICghbV9z
ZWdtZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxs
cHRyLCBudWxscHRyLCAwKSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwog
ICAgIHJldHVybiBicmlkZ2VfY2FzdChtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmNyZWF0ZU5TRGF0
YSgpKTsKIH0KIApAQCAtMTE5LDE0ICsxMTcsMTQgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmV0YWluUHRyPE5TQXJyYXk+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAorUmV0YWluUHRyPE5TQXJyYXk+IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKIHsKICAgICByZXR1cm4g
Y3JlYXRlTlNBcnJheShtX3NlZ21lbnRzLCBbXSAoYXV0byYgc2VnbWVudCkgewogICAgICAgICBy
ZXR1cm4gc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKTsKICAgICB9KTsKIH0KIAotUmV0
YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkg
Y29uc3QKK1JldGFpblB0cjxOU0RhdGE+IERhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25z
dAogewogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2Nd
IGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5z
dGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3Rh
bmNlLmgKaW5kZXggZmJjMjgzZmJjMzM2OWJmODI3ZTMxNjk5NGM0Yzk0ZTA2MzYzY2I4MS4uMmRl
NDE5MzRkYTE5ODc5ZDc1YzBkZjhhODllNjRlNTk5YzI5YWUwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCkBAIC00Niw3
ICs0Niw3IEBAIGNsYXNzIExvZ2dlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgQ0RNSW5z
dGFuY2VTZXNzaW9uOwogc3RydWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb247CiAKQEAgLTU0
LDcgKzU0LDcgQEAgY2xhc3MgQ0RNSW5zdGFuY2VDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8Q0RNSW5zdGFuY2VDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5j
ZUNsaWVudCgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCB1bnJlcXVlc3RlZEluaXRp
YWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNl
aXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwog
fTsKIAogLy8gSmF2YVNjcmlwdCdzIGhhbmRsZSB0byBhIENETUluc3RhbmNlLCBtdXN0IGJlIHVz
ZWQgZnJvbSB0aGUKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICB2aXJ0
dWFsIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVu
dFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxDRE1J
bnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5o
CmluZGV4IDM3Y2QwN2M3YmYyZGM3NWU0MWZkNWM2YzdkZWNmNDNlMTAzOWUxMTQuLmQyNTkyMjVi
YTllMDJhNjRkMGNlY2Q2MTUxZmRmOTNmNGYyNDY2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5o
CkBAIC00MywxNiArNDMsMTYgQEAgY2xhc3MgTG9nZ2VyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxD
RE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0
YW5jZVNlc3Npb25DbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB1c2luZyBLZXlTdGF0dXMgPSBD
RE1LZXlTdGF0dXM7Ci0gICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFp
cjxSZWY8U2hhcmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47CisgICAgdXNpbmcgS2V5U3RhdHVzVmVj
dG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIEtleVN0
YXR1cz4+OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0
b3ImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNlbmRN
ZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNz
YWdlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5n
JikgPSAwOwogICAgIHVzaW5nIFBsYXRmb3JtRGlzcGxheUlEID0gdWludDMyX3Q7CiAgICAgdmly
dHVhbCBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSA9IDA7CkBAIC03OCwxMyArNzgsMTMg
QEAgcHVibGljOgogICAgICAgICBTdWNjZWVkZWQsCiAgICAgfTsKIAotICAgIHVzaW5nIExpY2Vu
c2VDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBt
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0
aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSA9IDA7CisgICAgdXNp
bmcgTGljZW5zZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBu
ZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47CisgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNl
bnNlQ2FsbGJhY2smJikgPSAwOwogCiAgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gQ0RNSW5z
dGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3I7Ci0gICAgdXNpbmcgTWVzc2FnZSA9
IHN0ZDo6cGFpcjxNZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIE1l
c3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj47CiAgICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9y
PiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlv
biwgc3RkOjpvcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVk
ZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VV
cGRhdGVDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKIAogICAgIGVu
dW0gY2xhc3MgU2Vzc2lvbkxvYWRGYWlsdXJlIDogdWludDhfdCB7CiAgICAgICAgIE5vbmUsCkBA
IC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIHVzaW5nIENsb3NlU2Vzc2lvbkNhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VTZXNz
aW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSA9IDA7
CiAKLSAgICB1c2luZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChLZXlTdGF0dXNWZWN0b3ImJiwgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVy
Pj4mJiwgU3VjY2Vzc1ZhbHVlKT47CisgICAgdXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFj
ayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYsIHN0ZDo6b3B0aW9u
YWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmLCBTdWNjZXNzVmFsdWUpPjsKICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExp
Y2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpID0gMDsKIAogICAgIHZpcnR1
YWwgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVBy
aXZhdGUuaAppbmRleCBjYzZkYzdmMTQwY2Q2N2QyYjdiODRmNmFiMmMyODQzMTZkZmRkY2NmLi41
MmE2MTQ4YzgzY2Q1MzkzYzhmODc0ZWQ4NWFkOGJmMjdlNWJlNTBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC03Myw4
ICs3Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSA9
IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBT
aGFyZWRCdWZmZXImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Q
cm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94
eS5jcHAKaW5kZXggZjIxOGY5NzkwNGZiYmE0OWYxZWJkZjQ4ZTIwNWZlNzNkZmFmYjY0OC4uNGJh
NzViZjAwZDlmNzEzYjVhZmJiYTc5MzQwMTk3MTZjZDhmMDM4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcApAQCAtMjI3LDcg
KzIyNyw3IEBAIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIEtleVN0b3JlOjpj
b252ZXJ0VG9KU0tleVN0YXR1c1ZlY3RvcigpIGNvbnN0CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9u
OjpLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzVmVjdG9yOwogICAgIGtleVN0YXR1c1ZlY3Rvci5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bUtleXMoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBr
ZXkgOiBtX2tleXMpCi0gICAgICAgIGtleVN0YXR1c1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQoc3Rk
OjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1cz4g
eyBrZXktPmlkQXNTaGFyZWRCdWZmZXIoKSwga2V5LT5zdGF0dXMoKSB9KTsKKyAgICAgICAga2V5
U3RhdHVzVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+LCBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1cz4geyBrZXktPmlkQXNTaGFy
ZWRCdWZmZXIoKSwga2V5LT5zdGF0dXMoKSB9KTsKICAgICByZXR1cm4ga2V5U3RhdHVzVmVjdG9y
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1Qcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
UHJveHkuaAppbmRleCBhNTg0YjZjZDI2NmIwOTgwOTAyNTRkN2RjYmRkYmY2MGQ5MzMxZmJiLi5l
MWUwOThhMWQ1ZjVmZmM2NWMyYTQ4ZmE0MGFhOTcyZmU4OWUxZTNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKQEAgLTYxLDcgKzYx
LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgS2V5SGFu
ZGxlKHN0YXR1cywgV1RGTW92ZShrZXlJRCksIFdURk1vdmUoa2V5SGFuZGxlVmFsdWUpKSk7CiAg
ICAgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9pZC5zaXplKCkpOyB9Cisg
ICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIoKSBjb25zdCB7
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9pZC5zaXplKCkpOyB9
CiAKICAgICBib29sIHRha2VWYWx1ZUlmRGlmZmVyZW50KEtleUhhbmRsZVZhbHVlVmFyaWFudCYm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlhYThlYjlhMmJiMDcxMWVhZTA4MGYzNzdl
MjJiOTgzNC4uZmNhNmYyMzg4YTU2YTZhMWM3MjQ3MGU1YTQ2ZmRkMjhmMDczNzUwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGls
aXRpZXMuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNw
YWNlIENETVV0aWxpdGllcyB7CiAKLVJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVj
dChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNl
SlNPTk9iamVjdChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAg
Ly8gRmFpbCBvbiBsYXJnZSBidWZmZXJzIHdob3NlIHNpemUgZG9lc24ndCBmaXQgaW50byBhIDMy
LWJpdCB1bnNpZ25lZCBpbnRlZ2VyLgogICAgIHNpemVfdCBzaXplID0gYnVmZmVyLnNpemUoKTsK
QEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0dXJuaW5nIHRoZSByb290
IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CiAKICAg
ICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1VdGlsaXRpZXMuaAppbmRleCA3NGY1MTViMGJkMmE4NzE2OGVlZjI0YjE4Zjk1ZGVhYmVlODI4
ZTZjLi5mY2Y1YmRkYTdjNTk3ZDNjM2FjMzQ5ZWUxNzg5ZTRhZDZlMGM5NTlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMu
aApAQCAtMzUsMTEgKzM1LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIENE
TVV0aWxpdGllcyB7CiAKLVJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25z
dCBTaGFyZWRCdWZmZXImKTsKK1JlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5LmNwcAppbmRleCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVk
Li4zMWE5ZmRmYTAyZDZkMDBjYTI2MTgyNTJkZWQ5MzUzMTNkYzU4YWE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VM
aWNlbnNlUmVsZWFzZUFja25vd2xlZGdlbWVudEZvcm1hdChjb25zdCBKU09OOjpPYmplY3QmIHJv
b3QpCiAvLyBdOwogCiAvLyBUaGlzIGZ1bmN0aW9uIGV4dHJhY3RzIHRoZSBLZXlJZHMgY291bnQg
YW5kIHRoZSBsb2NhdGlvbiBvZiB0aGUgZmlyc3QgS2V5SWQgaW4gaW5pdERhdGEgYnVmZmVyLgot
c3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlv
bkZyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBz
dGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2Vu
Y0luaXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAg
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCgwLCAwKTsKIApAQCAtMTM4
LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0
S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGluaXREYXRhLmlz
RW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRvKiBkYXRhID0g
aW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEu
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5k
YXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgpOwogICAg
IHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CkBAIC0xODgs
MTUgKzE4OSwxNSBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFj
dEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogfQogCiAvLyBUaGlzIGZ1bmN0
aW9uIGNoZWNrcyBpZiB0aGUgaW5pdERhdGEgc2hhcmVkQnVmZmVyIGlzIGEgdmFsaWQgQ0VOQyBp
bml0RGF0YS4KLXN0YXRpYyBib29sIGlzQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
aW5pdERhdGEpCitzdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGluaXRE
YXRhKTsKICAgICByZXR1cm4gKChrZXlJZHNNYXAuZmlyc3QpICYmIChrZXlJZHNNYXAuc2Vjb25k
KSk7CiB9CiAKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJ
bml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGljIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBr
ZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
a2V5SWRzOwogCiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0g
ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5z
aWduZWQga2V5SWRDb3VudCA9IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNCw5ICsyMDUsMTAgQEAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEg
dmFsaWQgQ0VOQyBpbml0RGF0YS4KICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQotICAg
ICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAotICAg
IGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERh
dGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1
b3VzSW5pdERhdGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0Ojpj
cmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpA
QCAtMjI0LDE3ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlp
ZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIG9iamVj
dC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBq
c29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBw
ZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJ
ZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgp
KTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RGF0YSkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJv
bVdlYk1Jbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsK
LSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERh
dGEgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkg
fHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsK
IAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtl
eUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDEyICsyNDcsMTIgQEAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNPTiBvYmpl
Y3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMiCiAgICAg
Ly8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0aGUg
YmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5nIHRoZSBr
ZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2Rl
VG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBrZXlJZHNB
cnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0LT5zZXRB
cnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRh
ID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNv
bkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAg
ICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAg
IHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xlYXJLZXkmIENETUZhY3Rv
cnlDbGVhcktleTo6c2luZ2xldG9uKCkKQEAgLTM4OCw3ICszOTAsNyBAQCBib29sIENETVByaXZh
dGVDbGVhcktleTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QK
K2Jvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEp
IGNvbnN0CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhlIGluaXREYXRhIGJ1ZmZlciBhcyBhbiBKU09O
IG9iamVjdCBpbiBrZXlpZHMgY2FzZS4KICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRzIikgJiYgQ0RNVXRpbGl0aWVzOjpwYXJzZUpTT05P
YmplY3QoaW5pdERhdGEpKQpAQCAtNDA1LDcgKzQwNyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFy
S2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZh
dGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNl
KSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVDbGVhcktl
eTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25z
ZSkgY29uc3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUgcmVzcG9uc2UgYnVmZmVyIGFzIGFuIEpT
T04gb2JqZWN0LgogICAgIGlmICghQ0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QocmVzcG9u
c2UpKQpAQCAtNDMxLDcgKzQzMyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6aW5pdGlh
bGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyCiAgICAgY2Fs
bGJhY2soc3VjY2VlZGVkKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQog
ewogICAgIC8vIFJlamVjdCBzZXR0aW5nIGFueSBzZXJ2ZXIgY2VydGlmaWNhdGUuCiAgICAgY2Fs
bGJhY2soRmFpbGVkKTsKQEAgLTQ1Myw3ICs0NTUsNyBAQCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNz
aW9uPiBDRE1JbnN0YW5jZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKCkKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KCp0aGlzKSk7CiB9CiAKLXZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERh
dGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25D
bGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vu
c2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHN0YXRpYyB1aW50MzJfdCBzX3Nlc3Npb25J
ZFZhbHVlID0gMDsKICAgICArK3Nfc2Vzc2lvbklkVmFsdWU7CkBAIC00NzUsNyArNDc3LDcgQEAg
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUsIGNvbnN0IEF0b21TdHJpbmcmIGkKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7CiAjaWYgTE9HX0RJU0FCTEVECiAgICAgLy8gV2Ugb25seSB1c2UgdGhlIHNl
c2lvbiBJRCBmb3IgZGVidWcgbG9nZ2luZy4gVGhlIHZlcmJvc2UgcHJlcHJvY2Vzc29yIGNoZWNr
cyBhcmUgYmVjYXVzZQpAQCAtNTY2LDcgKzU2OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
Q2xlYXJLZXk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNl
CiAgICAgQVNTRVJUKHNlc3Npb25JZCA9PSBtX3Nlc3Npb25JRCk7CiAKICAgICBhdXRvIGRpc3Bh
dGNoQ2FsbGJhY2sgPQotICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgJmNh
bGxiYWNrXShLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNWZWN0b3IsIHN0ZDo6b3B0aW9uYWw8
UmVmPFNoYXJlZEJ1ZmZlcj4+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2Nlc3MpIHsKKyAg
ICAgICAgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sICZjYWxsYmFja10oS2V5U3RhdHVz
VmVjdG9yJiYga2V5U3RhdHVzVmVjdG9yLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VzcykgewogICAgICAgICAg
ICAgY2FsbE9uTWFpblRocmVhZCgKICAgICAgICAgICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKndlYWtUaGlzIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGtleVN0YXR1c1Zl
Y3RvciA9IFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2Fn
ZSksIHN1Y2Nlc3NdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMpCkBAIC01NzksNyArNTgxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6
cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKICAgICAvLyBD
b25zdHJ1Y3QgdGhlIEtleVN0YXR1c1ZlY3RvciBvYmplY3QsIHJlcHJlc2VudGluZyByZWxlYXNl
ZCBrZXlzLCBhbmQgdGhlIG1lc3NhZ2UgaW4gdGhlCiAgICAgLy8gJ2xpY2Vuc2UgcmVsZWFzZScg
Zm9ybWF0LgogICAgIEtleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNWZWN0b3IgPSBtX2tleVN0b3Jl
LmFsbEtleXNBcyhDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1czo6UmVsZWFzZWQpOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2U7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IG1lc3NhZ2U7CiAgICAgewogICAgICAgICAvLyBDb25zdHJ1Y3QgSlNPTiB0aGF0
IHJlcHJlc2VudHMgdGhlICdsaWNlbnNlIHJlbGVhc2UnIGZvcm1hdCwgY3JlYXRpbmcgYSAna2lk
cycgYXJyYXkKICAgICAgICAgLy8gb2YgYmFzZTY0VVJMLWVuY29kZWQga2V5IElEcyBmb3IgYWxs
IGtleXMgdGhhdCB3ZXJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNlc3Npb24uCkBAIC01OTMsMTQg
KzU5NSwxNCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZW1vdmVTZXNzaW9u
RGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZQogICAgICAgICAgICAgcm9vdE9iamVj
dC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGFycmF5KSk7CiAgICAgICAgIH0KIAotICAgICAg
ICAvLyBDb3B5IHRoZSBKU09OIGRhdGEgaW50byBhIFNoYXJlZEJ1ZmZlciBvYmplY3QuCisgICAg
ICAgIC8vIENvcHkgdGhlIEpTT04gZGF0YSBpbnRvIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBv
YmplY3QuCiAgICAgICAgIFN0cmluZyBtZXNzYWdlU3RyaW5nID0gcm9vdE9iamVjdC0+dG9KU09O
U3RyaW5nKCk7CiAgICAgICAgIENTdHJpbmcgbWVzc2FnZUNTdHJpbmcgPSBtZXNzYWdlU3RyaW5n
LnV0ZjgoKTsKICAgICAgICAgbWVzc2FnZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2VD
U3RyaW5nLmRhdGEoKSwgbWVzc2FnZUNTdHJpbmcubGVuZ3RoKCkpOwogICAgIH0KIAogICAgIG1f
a2V5U3RvcmUudW5yZWZBbGxLZXlzKCk7Ci0gICAgZGlzcGF0Y2hDYWxsYmFjayhXVEZNb3ZlKGtl
eVN0YXR1c1ZlY3RvciksIFJlZjxTaGFyZWRCdWZmZXI+KCptZXNzYWdlKSwgU3VjY2Vzc1ZhbHVl
OjpTdWNjZWVkZWQpOworICAgIGRpc3BhdGNoQ2FsbGJhY2soV1RGTW92ZShrZXlTdGF0dXNWZWN0
b3IpLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oKm1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6
OlN1Y2NlZWRlZCk7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnN0b3Jl
UmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgK
aW5kZXggOWMwNzQ3ZGMxYmQ4ZTY3ZjNiYTg2NGQ5YjgxMTMzNzYyNWM4YTY3OS4uOWUyN2ZlOTEy
YzRkYTA2N2ZiMjZjYWZiYzdmNmE2NTFkYTQ3NTI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5oCkBAIC04Niw4ICs4Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXpl
KCkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wg
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikg
Y29uc3QgZmluYWw7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShj
b25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25z
dCBmaW5hbDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNw
b25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0
IGZpbmFsOwogfTsKIApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFu
Y2UKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpDbGVhcktleTsgfQogICAgIHZvaWQgaW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNj
ZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8
U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0Nh
bGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJp
bmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsOwog
ICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKQEAg
LTEwOSw4ICsxMDksOCBAQCBjbGFzcyBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleSBmaW5hbCA6
IHB1YmxpYyBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSB7CiBwdWJsaWM6CiAgICAgQ0RNSW5zdGFu
Y2VTZXNzaW9uQ2xlYXJLZXkoQ0RNSW5zdGFuY2VDbGVhcktleSYgcGFyZW50KQogICAgICAgICA6
IENETUluc3RhbmNlU2Vzc2lvblByb3h5KHBhcmVudCkgeyB9Ci0gICAgdm9pZCByZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9p
ZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0
TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xv
c2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJl
bW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IGU5NjhlOTg1
YzdlZWNlZmU0MzVhYTkyMDVjNDRkZDM1YWVkOGUwZDAuLmVjZjRlMDhjOWI5OTFhZGUyNzNiZDQ0
YzYwYmIxNWZlMDE2MzViMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWRFbmNvZGVyR2VuZXJpYyBmaW5hbCA6IHB1YmxpYyBL
ZXllZEVuY29kZXIgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKaW5kZXggOGE4YzEwYjcwMjRjZmUwMzhlOWZhN2I3MTVi
ZTI2ODg5ZmMwNWUyOC4uOTM3ZDFmYjZmMGM4ZDdiNTFmMThmZjE1NTYwYjNiOTRhNzRmNjFiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGli
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIu
Y3BwCkBAIC0yNiwxNiArMjYsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQogewogICAgIEFTU0VSVChi
eXRlcyk7CiAgICAgbV9zaXplID0gZ19ieXRlc19nZXRfc2l6ZShieXRlcyk7CiAgICAgbV9zZWdt
ZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKEdSZWZQdHI8R0J5dGVzPihieXRl
cykpIH0pOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0
ZXMqIGJ5dGVzKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihieXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKIH0KIAogR1JlZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaAppbmRleCA5ZmM0ZWE4MmViYmM3N2VhZDkwMTA4NTQzODA4MjllMTViYmFiNmY0Li5kYzFm
YjE2ZWEwYjE5NmM1ZDEzYmQ0MTE0ZTUwY2NkY2Q5YjM3YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEZvbnRDYWNoZTsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEdseXBo
UGFnZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIHN0cnVjdCBHbHlwaERhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAw
ODI5ZGUxOTliMTRlODRiMjE5Li5mYmJjY2M0MzY4NDQ3NDkwODNjZTg5MWYzNjNmNmNjNDBmMjk3
NDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxh
dGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5oCkBAIC03NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBP
bmNlIGNyZWF0ZWQsIG5vIGluc3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2Vy
dmFibGUgd2F5KS4KIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGEgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IDRhODUzZWI2NDk1M2Q0YWU0ODM0Zjg3YzU0
ODdhY2QzNjRjNTdkODEuLmUzMmEzNmM2MDc2MTkyMTY4YzZhMzc5MzE4Zjc4YWUxNzg5YzQ4MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTEwNCw3
ICsxMDQsNyBAQCBib29sIEltYWdlOjppc1Bvc3RTY3JpcHRSZXNvdXJjZShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBVUkwmIHVybCkKIH0KIAogCi1FbmNvZGVkRGF0YVN0YXR1cyBJbWFn
ZTo6c2V0RGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQorRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2U6OnNldERhdGEoUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgbV9lbmNv
ZGVkSW1hZ2VEYXRhID0gV1RGTW92ZShkYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmgKaW5kZXggNmEwODE2OTU3YWE5M2M0MTFhNTZjZDRjMmJjMjBkZDZkOTA0
NGRlYy4uNjU1ZGZlNzNjZmY2YWQxZDA0ZjQ4YmMyMDE5ZWJiODA0MTdkNjEzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC03MCw3ICs3MCw3IEBAIGNsYXNz
IEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFNpemU7CiBj
bGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogc3RydWN0IExlbmd0aDsKIAogLy8gVGhpcyBjbGFzcyBnZXRzIG5v
dGlmaWVkIHdoZW4gYW4gaW1hZ2UgY3JlYXRlcyBvciBkZXN0cm95cyBkZWNvZGVkIGZyYW1lcyBh
bmQgd2hlbiBpdCBhZHZhbmNlcyBhbmltYXRpb24gZnJhbWVzLgpAQCAtMTI0LDcgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBj
b25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2aXJ0dWFsIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1h
Z2U7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIEVuY29kZWREYXRhU3RhdHVzIHNldERhdGEoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgRW5jb2RlZERhdGFTdGF0dXMgc2V0RGF0YShSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdmlydHVhbCBF
bmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChib29sIC8qYWxsRGF0YVJlY2VpdmVkKi8pIHsg
cmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpVbmtub3duOyB9CiAKICAgICB2aXJ0dWFsIFN0cmlu
ZyB1dGkoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAvLyBudWxsIHN0cmluZyBpZiB1bmtu
b3duCkBAIC0xMzMsOCArMTMzLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRlc3Ry
b3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwgPSB0cnVlKSA9IDA7CiAKLSAgICBTaGFyZWRC
dWZmZXIqIGRhdGEoKSB7IHJldHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KLSAgICBj
b25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWRJbWFnZURh
dGEuZ2V0KCk7IH0KKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgeyByZXR1cm4g
bV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQog
CiAgICAgdmlydHVhbCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpOwogCkBAIC0y
MDksNyArMjA5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgQ29sb3Igc2luZ2xlUGl4ZWxT
b2xpZENvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQogCiBwcml2YXRlOgotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fZW5jb2RlZEltYWdlRGF0YTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVkSW1hZ2VEYXRhOwogICAgIEltYWdlT2JzZXJ2ZXIq
IG1faW1hZ2VPYnNlcnZlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fYW5pbWF0aW9u
U3RhcnRUaW1lcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCYWNraW5nU3RvcmUuaAppbmRleCA0ZGRiNmRmODNlY2I4YjliNzk1N2Y0NjY0ZTE4
NGYwMDgxZTgxMDExLi5kZTMzZjFhZjQxMmRjMDhiMmI5NjFhMTk0OTQ1YzljYzkwYWE2NjI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2lu
Z1N0b3JlLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgICAgIGJ1ZmZlci5ncm93KGJ1ZmZlclNpemUpOwotICAgICAgICBtX3BpeGVs
cyA9IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwor
ICAgICAgICBtX3BpeGVscyA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpj
cmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJl
dF9jYXN0PHVpbnQzMl90Kj4oY29uc3RfY2FzdDx1aW50OF90Kj4obV9waXhlbHMtPmRhdGEoKSkp
OwogICAgICAgICBtX3NpemUgPSBzaXplOwogICAgICAgICBtX2ZyYW1lUmVjdCA9IEludFJlY3Qo
SW50UG9pbnQoKSwgbV9zaXplKTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBwcml2YXRlOgogICAgIHsK
ICAgICAgICAgQVNTRVJUKCFtX3NpemUuaXNFbXB0eSgpICYmICFpc092ZXJTaXplKG1fc2l6ZSkp
OwogICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyIHsgb3RoZXIubV9waXhlbHMtPmRhdGEo
KSwgb3RoZXIubV9waXhlbHMtPnNpemUoKSB9OwotICAgICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBtX3Bp
eGVscyA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92
ZShidWZmZXIpKTsKICAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQz
Ml90Kj4oY29uc3RfY2FzdDx1aW50OF90Kj4obV9waXhlbHMtPmRhdGEoKSkpOwogICAgIH0KIApA
QCAtMjMzLDcgKzIzMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBQYWNrZWRDb2xvcjo6
QVJHQiB7IHJlc3VsdCB9LnZhbHVlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50PiBtX3BpeGVsczsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+IG1fcGl4ZWxzOwogICAgIHVpbnQzMl90KiBtX3BpeGVsc1B0ciB7IG51
bGxwdHIgfTsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBJbnRSZWN0IG1fZnJhbWVSZWN0OyAv
LyBUaGlzIHdpbGwgYWx3YXlzIGp1c3QgYmUgdGhlIGVudGlyZSBidWZmZXIgZXhjZXB0IGZvciBH
SUYgYW5kIFBORyBmcmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZURlY29kZXIuY3BwCmluZGV4IDA4NjllOTlhMDA4ODZmN2NkMTIxODZmZTMxNjFkZTA0
N2ZhNTEzNjEuLjdjNTQ5NDdmNGQ4MTQwODU1OWNjNDVjNGFjNDlhMTliOWZjODZmOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcApA
QCAtODIsNyArODIsNyBAQCB2b2lkIEltYWdlRGVjb2Rlcjo6Y2xlYXJGYWN0b3JpZXMoKQogfQog
I2VuZGlmCiAKLVJlZlB0cjxJbWFnZURlY29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKQorUmVmUHRyPEltYWdlRGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24g
YWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQogewogICAgIFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKaW5kZXggYTFhMDhhZGMx
NzVkNDRiYWE0NDJlNDRhOTRhYTk2N2EwNGY1ZjYwNy4uNmE4ZmZjYjYwZmMxMTU2ZWI4NDg3NmRl
ZmIwN2NiYzBiMTE5ODQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VEZWNvZGVyLmgKQEAgLTM3LDEyICszNywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIEltYWdlRGVjb2RlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFn
ZURlY29kZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7
CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7
CiAKICAgICBlbnVtIGNsYXNzIE1lZGlhVHlwZSB7CkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgdXNpbmcgU3VwcG9ydHNNZWRpYVR5cGVGdW5j
ID0gRnVuY3Rpb248Ym9vbChNZWRpYVR5cGUpPjsKICAgICB1c2luZyBDYW5EZWNvZGVUeXBlRnVu
YyA9IEZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nJik+OwotICAgIHVzaW5nIENyZWF0ZUltYWdl
RGVjb2RlckZ1bmMgPSBGdW5jdGlvbjxSZWZQdHI8SW1hZ2VEZWNvZGVyPihTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
PjsKKyAgICB1c2luZyBDcmVhdGVJbWFnZURlY29kZXJGdW5jID0gRnVuY3Rpb248UmVmUHRyPElt
YWdlRGVjb2Rlcj4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik+OwogCiAgICAgc3RydWN0IEltYWdl
RGVjb2RlckZhY3RvcnkgewogICAgICAgICBTdXBwb3J0c01lZGlhVHlwZUZ1bmMgc3VwcG9ydHNN
ZWRpYVR5cGU7CkBAIC0xMjksNyArMTI5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGxhdGZv
cm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0g
RGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSA9IDA7CiAKICAgICB2
aXJ0dWFsIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQWxsRGF0YVJlY2Vp
dmVkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUo
c2l6ZV90KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcAppbmRleCBkODFjNDgwMTkyODQ2ZGQ3ZTMyMWMyZGZiZmJmMWUwYzIwZGFh
NjcxLi4zMDc3NDMzMTVhNDFlY2ExYzliMmJjNzczZDA3OWVlNWQ0M2JhZjY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC03Miw3
ICs3Miw3IEBAIEltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UoKQogICAgIEFTU0VSVCgmbV9ydW5M
b29wID09ICZSdW5Mb29wOjpjdXJyZW50KCkpOwogfQogCi1ib29sIEltYWdlU291cmNlOjplbnN1
cmVEZWNvZGVyQXZhaWxhYmxlKFNoYXJlZEJ1ZmZlciogZGF0YSkKK2Jvb2wgSW1hZ2VTb3VyY2U6
OmVuc3VyZURlY29kZXJBdmFpbGFibGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsK
ICAgICBpZiAoIWRhdGEgfHwgaXNEZWNvZGVyQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtOTYsNyArOTYsNyBAQCBib29sIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZh
aWxhYmxlKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJ
bWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQordm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIWRhdGEgfHwgIWVuc3VyZURl
Y29kZXJBdmFpbGFibGUoZGF0YSkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNCwxMyArMTA0LDEz
IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKICAgICBtX2RlY29kZXItPnNldERhdGEoKmRhdGEsIGFsbERhdGFSZWNl
aXZlZCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRh
dGEpCit2b2lkIEltYWdlU291cmNlOjpyZXNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSkKIHsKICAgICBtX2RlY29kZXIgPSBudWxscHRyOwogICAgIHNldERhdGEoZGF0YSwgaXNB
bGxEYXRhUmVjZWl2ZWQoKSk7CiB9CiAKLUVuY29kZWREYXRhU3RhdHVzIEltYWdlU291cmNlOjpk
YXRhQ2hhbmdlZChTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorRW5j
b2RlZERhdGFTdGF0dXMgSW1hZ2VTb3VyY2U6OmRhdGFDaGFuZ2VkKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIHNldERhdGEoZGF0YSwg
YWxsRGF0YVJlY2VpdmVkKTsKICAgICBjbGVhck1ldGFkYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCA4YWY1MDgwYTAwYTk5MTYw
ODBmMWYwYjI3NzA3M2MyYTg1MzQ1MjU4Li44MTRmMGUxMmViYWE0OGY4NmFjYjUyMTk3M2MzMWQ1
ZDM4MmY2ZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQml0
bWFwSW1hZ2U7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbWFnZURlY29kZXI7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBJbWFnZVNvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZVNvdXJjZT4s
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbWFnZVNvdXJjZT4gewogICAgIGZyaWVuZCBjbGFzcyBC
aXRtYXBJbWFnZTsKQEAgLTU2LDkgKzU2LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJbWFnZVNvdXJjZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSkpOwogICAgIH0KIAot
ICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KTsKLSAgICB2b2lkIHJlc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOwotICAgIEVuY29kZWRE
YXRhU3RhdHVzIGRhdGFDaGFuZ2VkKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCByZXNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogZGF0YSk7CisgICAgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGJvb2wg
aXNBbGxEYXRhUmVjZWl2ZWQoKTsKIAogICAgIHVuc2lnbmVkIGRlY29kZWRTaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9kZWNvZGVkU2l6ZTsgfQpAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIGZpcnN0RnJhbWVNZXRhZGF0YUNhY2hlSWZO
ZWVkZWQoVCYgY2FjaGVkVmFsdWUsIE1ldGFkYXRhVHlwZSwgVCAoSW1hZ2VGcmFtZTo6KmZ1bmN0
b3IpKCkgY29uc3QsIEltYWdlRnJhbWU6OkNhY2hpbmcsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Vi
c2FtcGxpbmdMZXZlbD4mID0geyB9KTsKIAotICAgIGJvb2wgZW5zdXJlRGVjb2RlckF2YWlsYWJs
ZShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlRGVjb2RlckF2YWlsYWJsZShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKICAgICBib29sIGlzRGVjb2RlckF2YWlsYWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlcjsgfQogICAgIHZvaWQgZGVzdHJveURlY29kZWRE
YXRhKHNpemVfdCBmcmFtZUNvdW50LCBzaXplX3QgZXhjbHVkZUZyYW1lKTsKICAgICB2b2lkIGRl
Y29kZWRTaXplQ2hhbmdlZChsb25nIGxvbmcgZGVjb2RlZFNpemUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmluZGV4IDNlNTllYTlkMDhkZDFjOWJlZTIzYmEz
ZjYzNWNmMzViZmMyODIyOTIuLjU3N2JkNTA4YTVjNDA5ZjRiZTllNGNmMjAyYjgxZTYxZTQ1YjQ0
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKQEAgLTMw
LDEyICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNb2RlbD4gTW9kZWw6
OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwp
CitSZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJp
bmcgbWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kZWwo
V1RGTW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUodXJsKSkpOwogfQogCi1N
b2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwg
dXJsKQorTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVU
eXBlLCBVUkwgdXJsKQogICAgIDogbV9kYXRhKFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVU
eXBlKFdURk1vdmUobWltZVR5cGUpKQogICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKaW5kZXggMDY1ODEzMzc5ZjExMjU1ZDJk
N2M3ZjZiNTAzNDQzZGM2MzBkMDRlMS4uZTZiZGUxNjZmOTQ0Y2RlN2RiMzI4YzI5NzZlYzY4MmFk
YjZkMTAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCkBAIC0z
OCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwgZmluYWwgOiBw
dWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1vZGVsKCk7CiAKICAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CkBAIC00
OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
UmVmUHRyPE1vZGVsPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0
IE1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9k
ZWwoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogCiAgICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gbV9kYXRhOwogICAgIFN0cmluZyBtX21pbWVUeXBlOwpAQCAtNjAsNyArNjAsNyBAQCB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+
c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEo
KSwgbV9kYXRhLT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CiAg
ICAgZW5jb2RlciA8PCBtX21pbWVUeXBlOwogICAgIGVuY29kZXIgPDwgbV91cmw7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
TWVkaWFSZXNvdXJjZUxvYWRlci5oCmluZGV4IDc0NTljNTg1OGQyNDg3ZWYyYzVmZDM3MTczOTg2
YjMzNzM0ZWMyOGEuLjg4NjkxZGMyNTZkNmRkNmM0NWY0NmUwMTU0OTY3NDI0NWFhMzUzMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFS
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bs
YXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBAIC01MSw4ICs1MSw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
IHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkYXRhU2Vu
dChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxv
bmcgbG9uZykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIENhY2hl
ZFJhd1Jlc291cmNlQ2xpZW50IHVzZXMgU2hhcmVkQnVmZmVyLgorICAgIHZpcnR1YWwgdm9pZCBk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIC8vIFRoaXMg
bWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgdXNl
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgogICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiBwbGF0Zm9ybSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCkgeyBkYXRhUmVjZWl2ZWQocGxhdGZvcm0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEsIGxlbmd0aCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVz
b3VyY2VFcnJvciYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCA1NDk5ZjM3YTdmMzY0NmJkNWYz
OTVhNDhiMDlkOTQxMWQ0YzliNjY0Li5kM2UxYjU4MDRlODVhOTkxMWNmMjBmY2VkMzRiZjI1NWEz
MTQ0MzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtMTMxOCw3ICsxMzE4LDcgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBvcmln
aW5hbFNhbXBsZSkKICAgICB1cGRhdGVIaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wKCk7CiB9
CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGFwcGVuZChidWZmZXItPmV4dHJhY3REYXRh
KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291
cmNlQnVmZmVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291
cmNlQnVmZmVyUHJpdmF0ZS5oCmluZGV4IGVmODZhNDczNjkzNzFjODNlODgzYjI5YmJiNmI5YWI5
NmVjYTVmMWQuLjZiN2Q5NWU1MmI5ZGYwYzgxYWYzYmUxZDZkOWYzYzhlZDM5NTQxNmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQ
cml2YXRlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgVGlt
ZVJhbmdlczsKIAogZW51bSBjbGFzcyBTb3VyY2VCdWZmZXJBcHBlbmRNb2RlIDogdWludDhfdCB7
CkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5T
b3VyY2VCdWZmZXJQcml2YXRlKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wp
ID0gMDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgYXBwZW5kKFJlZjxTaGFyZWRC
dWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBhcHBlbmQoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IGM2MTEyZTExOTRjN2M5OTBmZGMxMTRlODI5Y2ZkYjVj
NmFmNzU0YTkuLjhiMDRmOWJlOTZjMzZlMGEyNjIxODBhMjVlYTM3NDU5NjJiM2Q3ZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1G
YWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtODYsMTIgKzg2LDEy
IEBAIGNvbnN0IEF0b21TdHJpbmcmIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFt
ZSgpCiAgICAgcmV0dXJuIHNrZDsKIH0KIAotc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSlNPTiBvZiB0aGUgZm9y
bWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVm
ZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVy
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5z
aXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29u
KTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKICAgICBpZiAoIXNpbmZBcnJheSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4gc2luZnM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4gc2luZnM7CiAgICAgc2luZnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaW5m
QXJyYXktPmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYgdmFsdWUgOiAqc2luZkFycmF5KSB7
CkBAIC0xMjQsNyArMTI0LDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0
cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogfQogCiB1c2luZyBTY2hl
bWVBbmRLZXlSZXN1bHQgPSBWZWN0b3I8c3RkOjpwYWlyPEZvdXJDQywgVmVjdG9yPHVpbnQ4X3Q+
Pj47Ci1zdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21T
aW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFNjaGVtZUFuZEtleVJlc3Vs
dCBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBidWZmZXJzID0gZXh0cmFjdFNpbmZEYXRhKGJ1ZmZl
cik7CiAgICAgaWYgKCFidWZmZXJzLnNpemUoKSkKQEAgLTE3MCw5ICsxNzAsOSBAQCBzdGF0aWMg
U2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpl
eHRyYWN0S2V5SURzU2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9u
YWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAg
IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBhdXRvIHJl
c3VsdHMgPSBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihidWZmZXIpOwogCiAgICAgZm9y
IChhdXRvJiByZXN1bHQgOiByZXN1bHRzKSB7CkBAIC0xODMsNyArMTgzLDcgQEAgc3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1p
bmc6OmV4dHJhY3RLZXkKICAgICByZXR1cm4ga2V5SURzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gQ29tbW9uIFNJTkYgQm94IEZvcm1hdAogICAgIFVO
VVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMTkxLDE3ICsxOTEsMTcgQEAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgU2hh
cmVkQnVmZmUKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNrZChjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
ZXh0cmFjdEtleUlEc1NrZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9u
YWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgLy8gSW4gdGhlICdza2QnIHNjaGVtZSwgdGhlIGluaXQgZGF0YSBp
cyB0aGUga2V5IElELgotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAg
IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBrZXlJRHMu
YXBwZW5kKGJ1ZmZlci5jb3B5KCkpOwogICAgIHJldHVybiBrZXlJRHM7CiB9CkBAIC0zOTMsNyAr
MzkzLDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lv
bnMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29sIENETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAog
ewogICAgIGlmICghdmFsaWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDIzLDcgKzQyMyw3IEBAIGJvb2wgQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVk
QnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlc3BvbnNl
LmNvcHkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKaW5kZXgg
YmM5M2Y2ZjZhN2JkZDAxZWZiZjU1YjYyYmRiNmE0ZTY2ZWY5MTJiMy4uMzE3YmI4ZDU3ZTg2YzA2
MjE0ZTBiNDA1OWRkZjRmODgwN2M3NGM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmgKQEAgLTcxLDE3ICs3MSwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkQW5k
SW5pdGlhbGl6ZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0
ZXMoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBv
dmVycmlkZTsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6
ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBj
b25zdCBBdG9tU3RyaW5nJiBzaW5mTmFtZSgpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNpbmYoY29u
c3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHNhbml0aXplU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBz
dGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc2tkTmFtZSgpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTa2QoY29uc3QgU2hh
cmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplU2tk
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2tkKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHNhbml0aXplU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAg
IHN0YXRpYyBjb25zdCBWZWN0b3I8Rm91ckNDPiYgdmFsaWRGYWlyUGxheVN0cmVhbWluZ1NjaGVt
ZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5kZXggMTU5YjkwY2RiNDhmN2ZlNDRiYjQ5
YmUyZWMxYzFjMmY0MzI4NjQwMC4uNTZiNThjMjVhMjg3MDlmYjM4MjIxODM5ZTU1YmFlNDVlZDkz
Y2Y2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoK
ICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpGYWlyUGxheVN0cmVhbWluZzsgfQogCiAgICAg
dm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3Rh
dGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmlj
YXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2
b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBT
dWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0
ZVNlc3Npb24oKSBmaW5hbDsKICAgICB2b2lkIHNldENsaWVudChXZWFrUHRyPENETUluc3RhbmNl
Q2xpZW50PiYmKSBmaW5hbDsKQEAgLTk0LDEwICs5NCwxMCBAQCBwdWJsaWM6CiAKICAgICBOU1VS
TCAqc3RvcmFnZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZVVSTC5nZXQoKTsgfQogICAg
IGJvb2wgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVu
dFN0YXRlQWxsb3dlZDsgfQotICAgIFNoYXJlZEJ1ZmZlciogc2VydmVyQ2VydGlmaWNhdGUoKSBj
b25zdCB7IHJldHVybiBtX3NlcnZlckNlcnRpZmljYXRlLmdldCgpOyB9CisgICAgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogc2VydmVyQ2VydGlmaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX3NlcnZl
ckNlcnRpZmljYXRlLmdldCgpOyB9CiAgICAgQVZDb250ZW50S2V5U2Vzc2lvbiogY29udGVudEtl
eVNlc3Npb24oKTsKIAotICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiB0YWtlVW5l
eHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBTaGFyZWRCdWZmZXImIGluaXREYXRhKTsKKyAgICBSZXRhaW5QdHI8QVZD
b250ZW50S2V5UmVxdWVzdD4gdGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRp
b25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpOwogCiAgICAgLy8gQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlQ2xp
ZW50CiAgICAgdm9pZCBkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgZmlu
YWw7CkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgb3V0cHV0T2JzY3VyZWRE
dWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCkgZmluYWw7CiAg
ICAgdm9pZCBleHRlcm5hbFByb3RlY3Rpb25TdGF0dXNEaWRDaGFuZ2VGb3JDb250ZW50S2V5UmVx
dWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7CiAKLSAgICB1c2luZyBLZXlzID0gVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBLZXlzID0gVmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yS2V5SURzKGNvbnN0IEtleXMmKSBjb25zdDsKICAgICBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JHcm91
cChBVkNvbnRlbnRLZXlSZXBvcnRHcm91cCopIGNvbnN0OwogICAgIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvclJlcXVlc3QoQVZDb250ZW50S2V5
UmVxdWVzdCopIGNvbnN0OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0
cjxDRE1JbnN0YW5jZUNsaWVudD4gbV9jbGllbnQ7CiAgICAgUmV0YWluUHRyPEFWQ29udGVudEtl
eVNlc3Npb24+IG1fc2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUZQU0NvbnRlbnRLZXlT
ZXNzaW9uRGVsZWdhdGU+IG1fZGVsZWdhdGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9z
ZXJ2ZXJDZXJ0aWZpY2F0ZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9z
ZXJ2ZXJDZXJ0aWZpY2F0ZTsKICAgICBib29sIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dlZCB7IHRy
dWUgfTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IG1fc3RvcmFnZVVSTDsKICAgICBWZWN0b3I8V2Vh
a1B0cjxDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+PiBtX3Nlc3Np
b25zOwpAQCAtMTUwLDggKzE1MCw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gQ0RNSW5z
dGFuY2VTZXNzaW9uCi0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBM
aWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNz
aW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lv
bkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYs
IENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sm
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgz
OTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMuLmJhNTA2MWViYjVjNWZiZTA3NGQzYTI5ZGVhNGY5MThm
YzI2MjFjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0yMTcsNyArMjE3LDcgQEAg
QUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKICAgICByZXR1cm4gQXRvbVN0cmluZyhu
c0luaXRUeXBlKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGluaXRpYWxpemF0aW9u
RGF0YUZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCogcmVxdWVzdCkKK3N0YXRpYyBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdGlhbGl6YXRpb25EYXRhRm9yUmVxdWVzdChBVkNv
bnRlbnRLZXlSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CkBAIC0yNjUsNyArMjY1LDcgQEAgQVZDb250
ZW50S2V5U2Vzc2lvbiogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmNvbnRl
bnRLZXlTZXNzaW9uKCkKICAgICByZXR1cm4gbV9zZXNzaW9uLmdldCgpOwogfQogCi1SZXRhaW5Q
dHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitSZXRhaW5Q
dHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRh
KQogewogICAgIGZvciAoYXV0byByZXF1ZXN0SXRlciA9IG1fdW5leHBlY3RlZEtleVJlcXVlc3Rz
LmJlZ2luKCk7IHJlcXVlc3RJdGVyICE9IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzLmVuZCgpOyAr
K3JlcXVlc3RJdGVyKSB7CiAgICAgICAgIGF1dG8mIHJlcXVlc3QgPSAqcmVxdWVzdEl0ZXI7CkBA
IC0zMTYsNyArMzE2LDcgQEAgcHJpdmF0ZToKICAgICBSZXNwb25zZU1hcCBtX3Jlc3BvbnNlczsK
IH07CiAKLXN0YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09O
VmFsdWUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEZh
aWwgb24gbGFyZ2UgYnVmZmVycyB3aG9zZSBzaXplIGRvZXNuJ3QgZml0IGludG8gYSAzMi1iaXQg
dW5zaWduZWQgaW50ZWdlci4KICAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci5zaXplKCk7CkBAIC0z
MjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJv
b3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAog
ICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAtMzgwLDcgKzM4
MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmluaXRpYWxp
emVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LCiAgICAgY2FsbGJhY2soaW5pdGlhbGl6ZSgp
KTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2Vy
dmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3Vj
Y2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAg
ICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogICAgIG1fc2VydmVyQ2Vy
dGlmaWNhdGUgPSBXVEZNb3ZlKHNlcnZlckNlcnRpZmljYXRlKTsKQEAgLTU4NSw4ICs1ODUsOCBA
QCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIENETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgYXV0byBzZXNzaW9uS2V5cyA9IHNlc3Npb25JbnRlcmZhY2UtPmtleUlEcygpOwotICAgICAg
ICBpZiAoYW55T2Yoc2Vzc2lvbktleXMsIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgc2Vz
c2lvbktleSkgewotICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kTWF0Y2hpbmcoWyZdKGNv
bnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBrZXlJRCkgeworICAgICAgICBpZiAoYW55T2Yoc2Vzc2lv
bktleXMsIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHNlc3Npb25LZXkp
IHsKKyAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGtleUlEKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGtleUlELmdldCgpID09IHNlc3Npb25LZXkuZ2V0KCk7CiAgICAgICAgICAgICB9KSAhPSBub3RG
b3VuZDsKICAgICAgICAgfSkpCkBAIC02NzMsNyArNjczLDcgQEAgS2V5cyBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleUlEcygpCiAgICAgcmV0dXJuIGtleUlE
czsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWlzTGljZW5z
ZVR5cGVTdXBwb3J0ZWQobGljZW5zZVR5cGUpKSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NT
SUJMRShMT0dJREVOVElGSUVSLCAiIGZhbHNlLCBsaWNlbnNlVHlwZSBcIiIsIGxpY2Vuc2VUeXBl
LCAiXCIgbm90IHN1cHBvcnRlZCIpOwpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAK
ICAgICBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2lu
Zk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVy
ID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAg
IGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5J
VERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNl
bmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJp
bmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNz
aFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEg
PSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5T
U3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBl
cnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzM2LDcgKzczNiw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSBsaWNlCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBpc0VxdWFsKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3N0YXRpYyBib29sIGlzRXF1YWwo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
IHsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gZGF0YS50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwog
ICAgIGlmICghYXJyYXlCdWZmZXIpCkBAIC03NTQsNyArNzU0LDcgQEAgc3RhdGljIGJvb2wgaXNF
cXVhbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAg
cmV0dXJuIHN0cmluZ09yRXhjZXB0aW9uLnJldHVyblZhbHVlKCkgPT0gdmFsdWU7CiB9CiAKLXZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3Bv
bnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9u
c2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1f
ZXhwaXJlZFNlc3Npb25zLmlzRW1wdHkoKSAmJiBpc0VxdWFsKHJlc3BvbnNlRGF0YSwgImFja25v
d2xlZGdlZCJfcykpIHsKICAgICAgICAgYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5z
ZXJ2ZXJDZXJ0aWZpY2F0ZSgpOwpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpCiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4
cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRh
LmdldCgpOwogICAgICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6
OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lv
blJlcG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50
aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBj
YWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVk
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtODU2LDcgKzg1Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpCiAgICAgICAgICAgICBhdXRvIGtleUlEID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZSgqa2V5SURWZWN0b3IpKTsKICAgICAgICAgICAgIGF1dG8gZm91bmRJbmRleCA9IG1fY3Vy
cmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maW5kTWF0Y2hpbmcoWyZdIChhdXRvJiByZXF1
ZXN0KSB7CiAgICAgICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJl
cXVlc3QuZ2V0KCkpOwotICAgICAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5n
KFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgaWQpIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4ga2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiBpZCkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWQuZ2V0KCkgPT0ga2V5SUQu
Z2V0KCk7CiAgICAgICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQ7CiAgICAgICAgICAgICB9KTsK
QEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICAgICAg
ICAgIGlmICghcGF5bG9hZFZlY3RvcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0gICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJv
Y2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNz
KCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRh
OnBheWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICAgICAgICAgIFty
ZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVz
cG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJl
c3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAg
IH0KICAgICB9IGVsc2UgewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJ
RklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2luZyByZXNwb25zZSIpOwotICAgICAgICBb
bV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRL
ZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtl
eVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0
YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgW21fY3VycmVudFJlcXVlc3QudmFs
dWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0
QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxh
eVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQogCiAgICAgLy8gRklYTUUocmRhcjovL3By
b2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5kIGNhbGwgaXQgb25jZSBBVkNv
bnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2FsbGJhY2suCkBAIC05MzQsNyAr
OTM0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0Rh
dGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xh
c3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRl
bnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKICAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJhY2tTZXNzaW9uSWRLZXkgPSBAIlBs
YXliYWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3Ry
aW5nJgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRy
PE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAg
ICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAg
ICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50
S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVu
dGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VV
UkxdKSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UgogCiAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlm
aWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlm
aWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAg
ICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QpOwogICAgIGlmIChrZXlJ
RHMuaXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50
S2V5UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29u
dGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0
YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0
IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5n
ZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5p
bCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0g
KE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7
CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUo
d2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CkBAIC0xMTUzLDkgKzExNTMs
OSBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlk
UHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBw
SWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2
ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNy
ZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCi0gICAgdXNpbmcgUmVxdWVzdHNEYXRhID0g
VmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+
PjsKKyAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKICAgICBzdHJ1Y3QgQ2Fs
bGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxi
YWNrQWdncmVnYXRvcj4gewogICAgICAgICB1c2luZyBDYWxsYmFja0Z1bmN0aW9uID0gRnVuY3Rp
b248dm9pZChSZXF1ZXN0c0RhdGEmJik+OwogICAgICAgICBzdGF0aWMgUmVmUHRyPENhbGxiYWNr
QWdncmVnYXRvcj4gY3JlYXRlKENhbGxiYWNrRnVuY3Rpb24mJiBjb21wbGV0aW9uSGFuZGxlcikK
QEAgLTExOTYsNyArMTE5Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgICAg
ICBhdXRvIGVudHJ5ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGF1dG8m
IGtleUlEID0gcmVxdWVzdERhdGEuZmlyc3Q7CiAgICAgICAgICAgICBhdXRvJiBwYXlsb2FkID0g
cmVxdWVzdERhdGEuc2Vjb25kOwotICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQi
LCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7Cisg
ICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5n
KGtleUlELT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKICAgICAg
ICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoInBheWxvYWQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhw
YXlsb2FkLmdldCgpLmJ5dGVzLCBwYXlsb2FkLmdldCgpLmxlbmd0aCkpOwogICAgICAgICAgICAg
cmVxdWVzdEpTT04tPnB1c2hPYmplY3QoV1RGTW92ZShlbnRyeSkpOwogICAgICAgICB9CkBAIC0x
MjExLDggKzEyMTEsOCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgIEB0cnkgewogICAg
ICAgICBmb3IgKGF1dG8gcmVxdWVzdCA6IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0
cykgewogICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3Qu
Z2V0KCkpOwotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3Zl
KGtleUlEcy5maXJzdCgpKTsKLSAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBr
ZXlJRC0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKKyAgICAgICAgICAgIGF1
dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVl
c3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVu
dElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W2tleUlEID0g
V1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJB
TShlcnJvcik7CiAgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChba2V5SUQgPSBXVEZN
b3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdncmVnYXRvciksIGNvbnRlbnRLZXlS
ZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSAoKSBtdXRhYmxl
IHsKQEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QoQVZDb24KIAogICAg
IFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmlj
YXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRp
ZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmll
ciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBh
dXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpKTsK
IAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0
KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlm
aWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVl
c3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVu
dElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIo
ZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVl
c3REYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5o
CmluZGV4IDAzMzRkNjIzYjJhNzYwNWM5YmUxMjIxM2I1YWJkYmJhYzJiMDNmMTUuLjYyYjgzZmJm
ZDU3OTQwNTBlYmM5NDA2MzcwNDkwYmEyYjNlYzA4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29y
ZURlY29tcHJlc3Npb25TZXNzaW9uOwogCiBjbGFzcyBJbWFnZURlY29kZXJBVkZPYmpDIDogcHVi
bGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IGNy
ZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFn
ZURlY29kZXJBVkZPYmpDKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzdXBw
b3J0c01lZGlhVHlwZShNZWRpYVR5cGUpOwpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChz
aXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25z
dCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hy
b25vdXMpKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RXhwZWN0ZWRDb250
ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGF0
YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERh
dGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsOwogCkBAIC05NCw3ICs5NCw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFt
ZUluZm8+IGZyYW1lSW5mb3MoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBJbWFnZURlY29kZXJB
VkZPYmpDKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyQVZGT2JqQyhG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIEFWQXNzZXRUcmFjayAqZmly
c3RFbmFibGVkVHJhY2soKTsKICAgICB2b2lkIHJlYWRTYW1wbGVzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURl
Y29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1
MTI3Mjk3NDUwZTFjOWExMGNjMTRmNGJmLi4zNWM2Y2U2N2U4NWY4NmFlMTY0YzIxYTcyNjA3ZmMw
NjVlY2I1MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMubW0KQEAgLTI4OSw3ICsyODksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDU2FtcGxlKiB0b1Nh
bXBsZShJdGVyYXRvciBpdGVyKQogCiAjcHJhZ21hIG1hcmsgLSBJbWFnZURlY29kZXJBVkZPYmpD
CiAKLVJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVh
dGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlv
biBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCitSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gSW1hZ2VEZWNvZGVyQVZG
T2JqQzo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICAvLyBBVkZvdW5kYXRpb24g
bWF5IG5vdCBiZSBhdmFpbGFibGUgYXQgcnVudGltZS4KICAgICBpZiAoIUFWQXNzZXRNSU1FVHlw
ZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKQpAQCAtMzAxLDcgKzMwMSw3IEBAIFJl
ZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNv
ZGVyQVZGT2JqQyhkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKSk7CiB9CiAKLUltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9i
akMoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFn
ZURlY29kZXJBVkZPYmpDKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAg
ICA6IEltYWdlRGVjb2RlcigpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV91
dGkoV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKSkKQEAgLTMwOSw3ICszMDksNyBA
QCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNv
cmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVu
dDp0aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNz
aW9uU2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0
YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0
ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0
ZTpOT107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTpt
X2xvYWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FV
RVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNo
cm9ub3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQxLDkgKzY0MSw5IEBAIHZv
aWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcg
ZXhwZWN0ZWRDb250ZW50U2l6ZSkKICAgICBtX2xvYWRlci5nZXQoKS5leHBlY3RlZENvbnRlbnRT
aXplID0gZXhwZWN0ZWRDb250ZW50U2l6ZTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJBVkZPYmpD
OjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lk
IEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0
YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOworICAgIFtt
X2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2
ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKaW5kZXggMjAwZTFhOGY5YWZiYTBmY2JiYTViMGEzZWQ3MDRjZDM0MWI0NTBkNi4uYzlk
OWIyYTk2ODViMDFlOTFhYWEwMGMwZTAwMzA3NzM4NTY5MTQyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaApAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVBVkY7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFTZWxlY3Rpb25H
cm91cEFWRk9iakM7CiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFZpZGVvTGF5ZXJN
YW5hZ2VyT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzsKIGNsYXNzIFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlcjsKQEAgLTQyNiw3ICs0MjYsNyBAQCBwcml2YXRlOgogICAgIG11
dGFibGUgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbV93YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRU
aW1lOwogICAgIG11dGFibGUgaW50IG1fdGltZUNvbnRyb2xTdGF0dXNBdENhY2hlZEN1cnJlbnRU
aW1lIHsgMCB9OwogICAgIG11dGFibGUgZG91YmxlIG1fcmVxdWVzdGVkUmF0ZUF0Q2FjaGVkQ3Vy
cmVudFRpbWUgeyAwIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKICAgICBkb3VibGUgbV9jYWNo
ZWRSYXRlIHsgMCB9OwogICAgIGJvb2wgbV9yZXF1ZXN0ZWRQbGF5aW5nIHsgZmFsc2UgfTsKICAg
ICBkb3VibGUgbV9yZXF1ZXN0ZWRSYXRlIHsgMS4wIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpp
bmRleCBkMThhODVhNzk0ZjUyM2Y5NDkxMmUyN2YwOGI3Y2NiZTg5M2M4ZWQwLi5iMWM2MDc5YzY0
ODcwZjg4ZTM1YzgwODExYTViMThiZGExYjdmNjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
QEAgLTI3OTIsNyArMjc5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jCiAgICAgaWYgKCFt
X2tleUlEIHx8ICFtX2NkbUluc3RhbmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGlu
c3RhbmNlU2Vzc2lvbiA9IG1fY2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMoVmVjdG9yPFJl
ZjxTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOworICAgIGF1dG8gaW5zdGFuY2VTZXNz
aW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOwogICAgIGlmICghaW5zdGFuY2VTZXNz
aW9uKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGQ5NjBhZmRjYTIxNGJmYTQ0MGVlYTIw
ODgzYmNhOTEzMmUyMmY5YTAuLjRkZDZiOTFhOTQ4MzE2OWEwMjM2ODg4ZDBlNGQ4MmZmYjgzNjY2
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbQpAQCAtMjEzLDcgKzIxMyw3IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6
On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKICAgICBhdXRv
IHNoYXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFrZVNoYXJlZEJ1ZmZlcigpOwotICAgIGF1dG8gbnNE
YXRhID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBhdXRvIG5zRGF0YSA9IHNo
YXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYgKG1f
cGFyc2VyU3RhdGVXYXNSZXNldCB8fCBmbGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0
eSkKICAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhG
bGFnczpBVlN0cmVhbURhdGFQYXJzZXJTdHJlYW1EYXRhRGlzY29udGludWl0eV07CiAgICAgZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLmgKaW5kZXggMDM0MjBmMTM4MzY0ZmFjMjA5MWUxMDRkMTM2ZmYzOGExZmI5ZmUyMi4uZWFk
MDgzYTZjYzdlNzM2YjQyMTcxMGZhYzM5MmEwN2RmZjkyYmU1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC03Myw3ICs3
Myw3IEBAIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzsKIGNsYXNzIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQgewogcHVibGljOgpAQCAtMTUzLDcgKzE1Myw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZChSZWY8TWVk
aWFTYW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsK
IAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCi0gICAgdm9pZCBhcHBlbmQo
UmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBhcHBlbmQoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWJvcnQoKSBmaW5hbDsKICAgICB2
b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFT
b3VyY2UoKSBmaW5hbDsKQEAgLTIyMSw3ICsyMjEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQogICAg
IFJlZlB0cjxDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4gbV9jZG1JbnN0YW5j
ZTsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IG1fa2V5SURzOworICAgIFZlY3RvcjxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1fa2V5SURzOwogI2VuZGlmCiAKICAgICBzdGQ6
Om9wdGlvbmFsPEZsb2F0U2l6ZT4gbV9jYWNoZWRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCAzYTI4NjdhMWFj
MjQzYmI5YzkzYzlkNmI3MGNhNTZiMDI5NDhmYzljLi4yNGFlMGUxNDA2MDE5MTQzZmFkNGYxNTI5
ZTY4ZWQ0OWI0MTY1M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxp
emF0aW9uRGF0YUZvCiAgICAgVU5VU0VEX1BBUkFNKGhhc1Nlc3Npb25TZW1hcGhvcmUpOwogfQog
Ci12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCAiZGF0YSBsZW5ndGggPSAiLCBkYXRhLT5zaXplKCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYwZDhlNzEx
MzJmNmMyODdhMmU2MjlhNGI4OGE1MzlkZmQ1M2NiZTIuLjBlZmVlYWVmNWIyZDcxYmM2ZDY3MDRk
ZDFiOTc1YWNiYWUxMTNiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM7CiBjbGFzcyBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2Fk
ZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcj4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjUsNyArNjUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxv
YWRGaW5pc2hlZCgpOwotICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJl
ZEJ1ZmZlciYpOworICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMqIG1fcGFyZW50OwogICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5n
UmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggYTIyYTk5N2IxMTA3OWQ0NjU4NmFhNjQ4NTYx
YmJmNzJhNmYyNDdmMC4uZjkyMWYzZGEwZTY5YjMzOTk3N2M5ZTNlNDk2NjdhMjhmNWU5NWNiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ci5tbQpAQCAtMTU2LDE0ICsxNTYsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5z
aWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYp
IGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRy
b2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZhaWxl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmlu
YWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZp
bmlzaGVkKCk7IH0KIAogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAg
ICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVy
OwogfTsKIAogV2Vha1B0cjxQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IFBsYXRmb3JtUmVz
b3VyY2VNZWRpYUxvYWRlcjo6Y3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50
LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCkKQEAgLTIxMSwxMyArMjExLDEwIEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlh
TG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQog
Ci12b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBQbGF0Zm9y
bVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgaWYgKCFtX2J1
ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Ci0gICAgZWxzZQotICAg
ICAgICBtX2J1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgbV9wYXJlbnQubmV3
RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7CisgICAgbV9idWZmZXIuYXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVm
ZmVyKCptX2J1ZmZlci5nZXQoKSk7CiB9CiAKIGNsYXNzIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9h
ZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyPiB7
CkBAIC0zODgsNyArMzg1LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRG
aW5pc2hlZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEp
Cit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVm
ZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVZBc3NldFJl
c291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRh
UmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaAppbmRleCBkYjQ1N2E4MWQzZWU4MjkxYjkwNWU5YmE3N2MxZTJhZjMwOWUwY2IyLi45NDE5
YmNlYTM4ZGJmOGQ2NDkyZjY4MDFkOWEyMTU2MjM2NmEyYzZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oCkBAIC0zMSwxMCArMzEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJl
Y18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBj
bGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0
aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgc3Ry
dWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogcHVi
bGljOgotICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSwgU2hhcmVkQnVmZmVyJik7
CisgICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9GYWNlLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CiAgICAgfkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKSA9IGRlZmF1bHQ7CiAgICAgRm9u
dFBsYXRmb3JtRGF0YSBmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJv
b2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKICAgICBz
dGF0aWMgYm9vbCBzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRl
eCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUwYzA2Li5iNmQzZWIzNjMxMTI0
NDYxM2IzODAzZjJmM2QyNGQzMDg3ZWEyNGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yNDQsMTYgKzI0
NCwxNiBAQCBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8s
IHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sCiAKIHZvaWQgc2hhcmVkQnVmZmVyUmVsZWFz
ZSh2b2lkKiBpbmZvKQogewotICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGlj
X2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
c2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KGluZm8p
OwogICAgIHNoYXJlZEJ1ZmZlci0+ZGVyZWYoKTsKIH0KICNlbmRpZgogCi1JbWFnZURlY29kZXJD
Rzo6SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBp
ZiAoZGF0YS5zaXplKCkgPj0gMzIpCi0gICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VT
b3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwg
bnVsbHB0cikpOworICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlw
ZVdpdGhEYXRhKGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51
bGxwdHIsIG51bGxwdHIpKTsKICAgICAKICAgICBpZiAodXRpSGludCkgewogICAgICAgICBjb25z
dCB2b2lkKiBrZXkgPSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsKQEAgLTU2Miwy
MyArNTYyLDI0IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpCiAgICAgcmV0dXJuIG1hc2tlZElt
YWdlID8gbWFza2VkSW1hZ2UgOiBpbWFnZTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJDRzo6c2V0
RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFn
ZURlY29kZXJDRzo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKIHsKICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gYWxsRGF0YVJlY2Vp
dmVkOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5z
aWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQg
dGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KLSAgICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVy
J3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhp
cywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCi0gICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhl
IFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29k
ZXIuZ2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7Cisg
ICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJ3Mga25vd2xlZGdlLgorICAgIC8vIFdlIHVzZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
J3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhp
cywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCisgICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhl
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9u
YXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgp
LmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UKLSAgICAvLyBDcmVhdGUgYSBDR0RhdGFQ
cm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKLSAgICAv
LyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUg
R2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCisgICAgLy8gQ3JlYXRlIGEg
Q0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KKyAgICBh
dXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNvbnRpZ3Vv
dXNEYXRhLmdldCgpLnJlZigpOworICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9u
IGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0byBsb2Nr
IGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwg
d2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50
ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJvdmlkZXJD
YWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hh
cmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0
YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0YSwgZGF0
YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92
aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVj
dChjb250aWd1b3VzRGF0YS5wdHIoKSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykp
OwogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNvZGVyLmdl
dCgpLCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rl
ckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5oCmluZGV4IDk3NDA3MzZhMjFhYzk5OGFiMDVmMWM5YjRmNWIxNjc1ZTQ0ZDJjOTEuLmEwYWMx
YzJmYmVlNTI3ZTVhYjExMTQ1NTgxMmJkYjczNjNhMDU1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApAQCAtMzIsOSAr
MzIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbWFnZURlY29kZXJDRyBmaW5hbCA6
IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIEltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBJbWFnZURlY29kZXJDRyhGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pOwogCi0gICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJDRz4gY3JlYXRlKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIHN0YXRpYyBSZWY8SW1hZ2VE
ZWNvZGVyQ0c+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlv
biBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURl
Y29kZXJDRyhkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsK
ICAgICB9CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIg
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2Ft
cGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0
aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERh
dGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQg
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZp
bmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6
ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCAzMWMyN2MwNjliMmIzYzcwMzcz
MmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlkNjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYy
ZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
REZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9j
dW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJ
bWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRl
clJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRh
dGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQ
cm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdp
dGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkp
OwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlk
ZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCmlu
ZGV4IGY3NDdkODBmYjYxZDMwZmM1MDIyZTY4MmQ2MzU2MTMzZDNjYTY5N2EuLmM4YTgwNjEyMjA1
M2Y2NDhhZGRiMDJhYzM4OWNlNzE0MzY4ZGJiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNw
cApAQCAtODAsNyArODAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0TWluaW11bUF1
ZGlvU2FtcGxlRHVyYXRpb24oZmxvYXQpCiB7CiB9CiAKLVNvdXJjZUJ1ZmZlclBhcnNlcjo6U2Vn
bWVudDo6U2VnbWVudChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK1NvdXJjZUJ1ZmZlclBh
cnNlcjo6U2VnbWVudDo6U2VnbWVudChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShidWZmZXIpKQogewogfQpAQCAtMTAxLDcgKzEw
MSw3IEBAIHNpemVfdCBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnNpemUoKSBjb25zdAog
ICAgICAgICAgICAgcmV0dXJuIGNsYW1wVG88c2l6ZV90PihNVFBsdWdpbkJ5dGVTb3VyY2VHZXRM
ZW5ndGgoYnl0ZVNvdXJjZS5nZXQoKSkpOwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAgIFtd
KGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgICAgIFtdKGNvbnN0IFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gYnVmZmVyLT5zaXplKCk7CiAgICAgICAgIH0KQEAgLTEyNSw3ICsxMjUsNyBAQCBhdXRv
IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6cmVhZChzaXplX3QgcG9zaXRpb24sIHNpemVf
dCBzaXplVG9SZWFkLCB1aW50OAogICAgICAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVhZEVy
cm9yPiB7IFJlYWRFcnJvcjo6RmF0YWxFcnJvciB9OwogICAgICAgICB9LAogI2VuZGlmCi0gICAg
ICAgIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZWFkUmVzdWx0Cisg
ICAgICAgIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4g
UmVhZFJlc3VsdAogICAgICAgICB7CiAgICAgICAgICAgICBidWZmZXItPmNvcHlUbyhkZXN0aW5h
dGlvbiwgcG9zaXRpb24sIHNpemVUb1JlYWQpOwogICAgICAgICAgICAgcmV0dXJuIHNpemVUb1Jl
YWQ7CkBAIC0xMzMsNyArMTMzLDcgQEAgYXV0byBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6
OnJlYWQoc2l6ZV90IHBvc2l0aW9uLCBzaXplX3Qgc2l6ZVRvUmVhZCwgdWludDgKICAgICApOwog
fQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VT
aGFyZWRCdWZmZXIoKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBh
cnNlcjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1ZmZlcigpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dp
dGNoT24obV9zZWdtZW50LAogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCkBAIC0x
NDIsMjggKzE0MiwyOCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNl
Z21lbnQ6OnRha2VTaGFyZWRCdWZmZXIoKQogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZl
Y3RvcihzaXplKCkpOwogICAgICAgICAgICAgYXV0byByZWFkUmVzdWx0ID0gcmVhZCgwLCB2ZWN0
b3Iuc2l6ZSgpLCB2ZWN0b3IuZGF0YSgpKTsKICAgICAgICAgICAgIGlmICghcmVhZFJlc3VsdC5o
YXNfdmFsdWUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CiAgICAgICAgICAgICB2ZWN0b3Iuc2hyaW5rKHJlYWRSZXN1bHQudmFsdWUoKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKTsKKyAg
ICAgICAgICAgIHJldHVybiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2
ZWN0b3IpKTsKICAgICAgICAgfSwKICNlbmRpZgotICAgICAgICBbJl0oUmVmPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikKKyAgICAgICAgWyZdKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShidWZmZXIs
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFu
Z2UoYnVmZmVyLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7CiAgICAgICAgIH0K
ICAgICApOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNl
Z21lbnQ6OmdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpnZXRTaGFyZWRCdWZmZXIoKSBjb25z
dAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc2VnbWVudCwKICNpZiBIQVZFKE1UX1BM
VUdJTl9GT1JNQVRfUkVBREVSKQotICAgICAgICBbJl0oY29uc3QgUmV0YWluUHRyPE1UUGx1Z2lu
Qnl0ZVNvdXJjZVJlZj4mKSAtPiBSZWZQdHI8U2hhcmVkQnVmZmVyPgorICAgICAgICBbJl0oY29u
c3QgUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mKSAtPiBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgIH0sCiAjZW5kaWYKLSAgICAgICAgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIC0+IFJlZlB0cjxTaGFyZWRCdWZmZXI+CisgICAgICAgIFsmXShjb25zdCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBidWZmZXIucHRyKCk7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKaW5kZXggNTIwYjUyMDdmYzI3MWQ3OTgxNTMzZmIx
NGQyMzE1NTk0YTg4ODM2NS4uNzI5N2E3OTE0YTc5YWRmNjQyZGM2YjE2YjM2ZTYwZjljZDAyOWYw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlwZTsKIGNsYXNzIE1lZGlhU2FtcGxlOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VC
Q09SRV9FWFBPUlQgU291cmNlQnVmZmVyUGFyc2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFNvdXJjZUJ1ZmZlclBhcnNlcj4gewogcHVibGljOgpAQCAtNjksMTEgKzY5LDExIEBAIHB1
YmxpYzoKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVSKQogICAgICAgICBTZWdtZW50
KFJldGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VSZWY+JiYpOwogI2VuZGlmCi0gICAgICAgIFNl
Z21lbnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIFNlZ21lbnQoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgICAgICBTZWdtZW50KFNlZ21lbnQmJikgPSBkZWZhdWx0
OwotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiB0YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAgICAg
IC8vIFdpbGwgcmV0dXJuIG51bGxwdHIgaWYgU2VnbWVudCdzIGJhY2tlbmQgaXNuJ3QgYSBTaGFy
ZWRCdWZmZXIuCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGdldFNoYXJlZEJ1ZmZlcigp
IGNvbnN0OworICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZVNoYXJlZEJ1
ZmZlcigpOworICAgICAgICAvLyBXaWxsIHJldHVybiBudWxscHRyIGlmIFNlZ21lbnQncyBiYWNr
ZW5kIGlzbid0IGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgICAgIHNp
emVfdCBzaXplKCkgY29uc3Q7CiAKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogI2lmIEhBVkUo
TVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAgICAgICBSZXRhaW5QdHI8TVRQbHVnaW5C
eXRlU291cmNlUmVmPiwKICNlbmRpZgotICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4KKyAg
ICAgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPgogICAgICAgICA+IG1fc2VnbWVu
dDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDM1OWVk
YjQxNWZkMzc1ZWQ4MmI3YjRhNDlmMTFlNGM4ZmQ2YzdkNmIuLjliYzE4OTQxOTg2MzBiYWQ4ZDdj
YmQwYjNhNWIyOGU0NmU5ZWZlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
CkBAIC0zNjcsNyArMzY3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgRnJlZURhdGFT
ZWdtZW50KHZvaWQqIHJlZmNvbiwgdm9pZCosIHNpemVfdCkKICAgICB7Ci0gICAgICAgIGF1dG8q
IGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KHJl
ZmNvbik7CisgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21l
bnQqPihyZWZjb24pOwogICAgICAgICBidWZmZXItPmRlcmVmKCk7CiAgICAgfQogCkBAIC0zODgs
NyArMzg4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGFkdmFuY2VUb05leHRTZWdtZW50
KCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBjdXJyZW50U2VnbWVudC5nZXRT
aGFyZWRCdWZmZXIoKTsKKyAgICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBzaGFyZWRCdWZmZXIgPSBjdXJyZW50U2VnbWVudC5nZXRTaGFyZWRCdWZmZXIoKTsKICAgICAg
ICAgICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3QmxvY2tCdWZmZXIgPSBudWxscHRyOwogICAgICAg
ICAgICAgdWludDY0X3QgbGFzdFJlYWQgPSAwOwogICAgICAgICAgICAgc2l6ZV90IGRlc3RpbmF0
aW9uT2Zmc2V0ID0gbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CkBAIC00MDksNyArNDA5LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uT2Zmc2V0ID0gMDsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHNoYXJlZEJ1ZmZlci0+aGFzT25l
U2VnbWVudCgpLCAiQ2FuIG9ubHkgZGVhbCB3aXRoIHNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGEg
c2luZ2xlIERhdGFTZWdtZW50Iik7Ci0gICAgICAgICAgICAgICAgLy8gQSBTaGFyZWRCdWZmZXIg
ZG9lc24ndCBoYXZlIHRocmVhZC1zYWZlIHJlZmNvdW50aW5nLCBhcyBzdWNoIHdlIG11c3Qga2Vl
cCBhIHJlZmVyZW5jZSB0byB0aGUgRGF0YVNlZ21lbnQgaW5zdGVhZC4KKyAgICAgICAgICAgICAg
ICAvLyBBIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgZG9lc24ndCBoYXZlIHRocmVhZC1zYWZlIHJl
ZmNvdW50aW5nLCBhcyBzdWNoIHdlIG11c3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgRGF0YVNl
Z21lbnQgaW5zdGVhZC4KICAgICAgICAgICAgICAgICAvLyBUT0RPOiBjb3VsZCB3ZSBvbmx5IGNy
ZWF0ZSBhIG5ldyBDTUJsb2NrQnVmZmVyIGlmIHRoZSBiYWNrZW5kIG1lbW9yeSBjaGFuZ2VkIHNp
bmNlIHRoZSBwcmV2aW91cyBvbmU/CiAgICAgICAgICAgICAgICAgYXV0byBmaXJzdFNlZ21lbnQg
PSBzaGFyZWRCdWZmZXItPmJlZ2luKCktPnNlZ21lbnQ7CiAgICAgICAgICAgICAgICAgc2l6ZV90
IGNhblJlYWQgPSBzdGQ6Om1pbjxzaXplX3Q+KG51bVRvUmVhZCwgZmlyc3RTZWdtZW50LT5zaXpl
KCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IGU4MDUwOWVjY2EwNWQyY2M4ZWQxMDY2MDcwNDFmNWNj
Y2MzZTM3OTQuLjYzOGU2ODM5N2EyYjY2OTZiMmYxZWRlMjRlYThmZGI5MDYyNmNlZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCkBAIC03MjksNyArNzI5
LDcgQEAgRGlkQ2hhbmdlSXRlbUJ1ZmZlciBJdGVtQnVmZmVyOjpzd2FwV3JpdGFibGVCdWZmZXJJ
Zk5lZWRlZChzaXplX3QgbnVtYmVyT2ZCeXRlcykKIHZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IERpc3BsYXlMaXN0SXRlbSYgdGVtcG9yYXJ5SXRlbSkKIHsKICAgICBhdXRvIHJlcXVpcmVk
U2l6ZUZvckl0ZW0gPSBtX3dyaXRpbmdDbGllbnQtPnJlcXVpcmVkU2l6ZUZvckl0ZW0odGVtcG9y
YXJ5SXRlbSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3V0T2ZMaW5lSXRlbTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gb3V0T2ZMaW5lSXRlbTsKICAgICBpZiAoIXJl
cXVpcmVkU2l6ZUZvckl0ZW0pIHsKICAgICAgICAgb3V0T2ZMaW5lSXRlbSA9IG1fd3JpdGluZ0Ns
aWVudC0+ZW5jb2RlSXRlbU91dE9mTGluZSh0ZW1wb3JhcnlJdGVtKTsKICAgICAgICAgaWYgKCFv
dXRPZkxpbmVJdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCmlu
ZGV4IGM4NzMxOTgyZWY4MzkzMWJiYWUzMWI3ODY1MGFjMGRhMjBhMDVmYzUuLmIzMWJjNWZkNGU5
MjE0YjE1YTM3NjFmYmU5OGQ2MGNlYjQ3YTk4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0Cisg
ICAgdmlydHVhbCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9m
TGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQpAQCAtMTY4LDcgKzE2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB3aXRo
IHBhZGRpbmcgYmV0d2VlbiBlYWNoIGl0ZW0gdG8gZW5zdXJlIHRoYXQgYWxsIGl0ZW1zIGFyZSBh
bGlnbmVkIHRvIDggYnl0ZXMuCiAgICAgLy8KICAgICAvLyBJZiBhIHdyaXRpbmcgY2xpZW50IGlz
IHByZXNlbnQgYW5kIHJlcXVpcmVzIGN1c3RvbSBlbmNvZGluZyBmb3IgdGhlIGdpdmVuIGl0ZW0g
dHlwZSBULCB0aGUKLSAgICAvLyBpdGVtIGJ1ZmZlciB3aWxsIGFzayB0aGUgY2xpZW50IGZvciBh
biBvcGFxdWUgU2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgZW5jb2RlZCBkYXRhIGZvciB0aGUKKyAg
ICAvLyBpdGVtIGJ1ZmZlciB3aWxsIGFzayB0aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGVuY29kZWQgZGF0YSBmb3IgdGhlCiAgICAgLy8g
aXRlbS4gVGhpcyBlbmNvZGVkIGRhdGEgaXMgdGhlbiBhcHBlbmRlZCB0byB0aGUgaXRlbSBidWZm
ZXIsIHdpdGggcGFkZGluZyB0byBlbnN1cmUgdGhhdAogICAgIC8vIHRoZSBzdGFydCBhbmQgZW5k
IG9mIHRoaXMgZGF0YSBhcmUgYWxpZ25lZCB0byA4IGJ5dGVzLCBpZiBuZWNlc3NhcnkuIFdoZW4g
Y29uc3VtaW5nIGVuY29kZWQKICAgICAvLyBpdGVtIGRhdGEsIGEgY29ycmVzcG9uZGluZyBJdGVt
QnVmZmVyUmVhZGluZ0NsaWVudCB3aWxsIGJlIHJlcXVpcmVkIHRvIGNvbnZlcnQgdGhpcyBlbmNv
ZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNw
cAppbmRleCA1MDZiNGRkNjJkNTVhNTZhMjc4YzMwY2NhYjJkMTkxMTBmMjQxZWVjLi4yYjQ0M2Zi
YmVkMmMxZmRlNDhiY2RlOWNiZTQwOTUzNDk3ZmRlOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJl
ZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyB2b2lkIHJlbGVhc2VDdXN0b21Gb250RGF0YSh2
b2lkKiBkYXRhKQogewotICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJl
ZigpOworICAgIHN0YXRpY19jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVy
ZWYoKTsKIH0KIAogc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBmcmVlVHlwZUZhY2VLZXk7
CiAKLUZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFj
ZSBmcmVlVHlwZUZhY2UsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9GYWNlIGZyZWVUeXBlRmFjZSwgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIDogbV9mb250RmFjZShhZG9wdFJlZihjYWly
b19mdF9mb250X2ZhY2VfY3JlYXRlX2Zvcl9mdF9mYWNlKGZyZWVUeXBlRmFjZSwgRlRfTE9BRF9E
RUZBVUxUKSkpCiB7CiAgICAgYnVmZmVyLnJlZigpOyAvLyBUaGlzIGlzIGJhbGFuY2VkIGJ5IHRo
ZSBidWZmZXItPmRlcmVmKCkgaW4gcmVsZWFzZUN1c3RvbUZvbnREYXRhLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRleCA5YWQxOWI4NzZiMjdlNjBkNGZiYTUwMzBl
NjVmODFlN2NhOGE1MDY5Li5kZmJjNTgwZmI4ZTliMzA5MzZjY2EwOGJiODhiNDljMmJiNjUzYWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtODEsMTIgKzgx
LDEyIEBAIEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRl
cikKICAgICByZXR1cm4gKEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZSopaXRlci0+c2Vjb25k
LmdldCgpOwogfQogCi1SZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBJbWFnZURlY29kZXJH
U3RyZWFtZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBn
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+
IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJHU3RyZWFtZXIoZGF0YSwgbWltZVR5
cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogfQogCi1JbWFn
ZURlY29kZXJHU3RyZWFtZXI6OkltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXImIGRh
dGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVy
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICA6IG1fbWltZVR5cGUo
bWltZVR5cGUpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwpAQCAtMTk5
LDcgKzE5OSw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCkKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wpCiB7CiAgICAgcHVzaEVuY29kZWREYXRhKGRhdGEp
OwogfQpAQCAtNDI2LDEwICs0MjYsMTEgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKICAgICBy
ZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OlVua25vd247CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2
b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX2VvcyA9IGZhbHNlOwotICAgIGF1dG8gdGhy
ZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRh
ID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAgICBhdXRvIHRocmVh
ZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9
IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKICAgICAg
ICAgbV9pbm5lckRlY29kZXIgPSBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6
Y3JlYXRlKCp0aGlzLCBkYXRhLCBzaXplKTsKICAgICAgICAgbV9pbm5lckRlY29kZXItPnJ1bigp
OwogICAgIH0sIFRocmVhZFR5cGU6OkdyYXBoaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuaAppbmRleCA2NmYzMzcyODQ2YTRkZjg3NGY0MjBkYjY1NGU2ODljOWU0M2IwYzUy
Li5kM2VmNmE0NWNkN2RiZGZjMzEyMGVhMjNmOGRlYjNjNTk5NzFhZTk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIEltYWdlRGVj
b2RlckdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2RlckdT
dHJlYW1lcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFt
ZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwotICAgIEltYWdlRGVjb2RlckdTdHJl
YW1lcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7Cisg
ICAgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlckdTdHJlYW1lcigpID0gZGVmYXVsdDsKIAogICAg
IHN0YXRpYyBib29sIHN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSB0eXBlKSB7IHJldHVybiB0
eXBlID09IE1lZGlhVHlwZTo6VmlkZW87IH0KQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAg
IFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1w
bGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRp
b25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7
CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0K
LSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZp
bmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2VvczsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNp
emVfdCkgZmluYWw7CiAKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAg
ICB2b2lkIGhhbmRsZVNhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4mJik7Ci0gICAgdm9pZCBwdXNo
RW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBwdXNoRW5jb2RlZERh
dGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyU2FtcGxlKiBzYW1wbGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNzk3OTQ4
MGY5MWM1OTdhYTlmOTAwOTdjMTg4MzJjNmExNWMzMmNlOC4uYjMyNGNmMTE0NjQ3YjMzNzVlNmE0
NWJmYWIxMDNlMGEyOTBmYjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM2OTIsNyArMzY5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChJbml0RGF0YSYm
IGluaXRECiAKICAgICAgICAgR1NUX0RFQlVHKCJzY2hlZHVsaW5nIGluaXRpYWxpemF0aW9uRGF0
YUVuY291bnRlcmVkICVzIGV2ZW50IG9mIHNpemUgJXp1IiwgaW5pdERhdGEucGF5bG9hZENvbnRh
aW5lclR5cGUoKS51dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgaW5pdERhdGEucGF5bG9hZCgp
LT5zaXplKCkpOwotICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpKSwgaW5pdERh
dGEucGF5bG9hZCgpLT5zaXplKCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogICAg
ICAgICB3ZWFrVGhpcy0+bV9wbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGlu
aXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCksIGluaXREYXRhLnBheWxvYWQoKS0+dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJT
b3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDVkODZmYjFhZjQ4N2MwMjg5ZTAwMTI1NTk2NWMzMWRj
ZGE5NzM0MjYuLjkzMDE5MDk5NDViNGEyM2Q2Njc4MmYzNTBiNTZlNDQ3OWY4MDI2ZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3
IEBAIHByaXZhdGU6CiAKICAgICAvLyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgdmlydHVh
bCBtZXRob2RzLgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91
bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENo
ZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpA
QCAtMTA5Myw3ICsxMDkzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6
cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb24KICAgICBjb21wbGV0
aW9uSGFuZGxlcihTaG91bGRDb250aW51ZVBvbGljeUNoZWNrOjpZZXMpOwogfQogCi12b2lkIENh
Y2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNl
U3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCmluZGV4IDY5MmE5OTZkMTlj
MjRlZmQ5YTQ4NTUyMzczYTU2NzliNTJlMWVmMWMuLjM0OWJmZGNhYWQ2YzdkN2Y4ZDVhZGEwYTE3
MjE5ZmQ5ZTcwNjI2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCkBAIC02
MiwxMSArNjIsMTEgQEAgcHVibGljOgogICAgIENETVByb3h5Q2xlYXJLZXkoKSA9IGRlZmF1bHQ7
CiAgICAgdmlydHVhbCB+Q0RNUHJveHlDbGVhcktleSgpOwogCi0gICAgLy8gRklYTUU6IFRoZXJl
J3MgYSBsYWNrIG9mIGNvbnNpc3RlbmN5IGJldHdlZW4gU2hhcmVkQnVmZmVycywKKyAgICAvLyBG
SVhNRTogVGhlcmUncyBhIGxhY2sgb2YgY29uc2lzdGVuY3kgYmV0d2VlbiBGcmFnbWVudGVkU2hh
cmVkQnVmZmVycywKICAgICAvLyBWZWN0b3I8Y2hhcj4ncyBhbmQge3VpbnQ4X3QqLHNpemVfdH0g
aWRpb21zIGZvciByZXByZXNlbnRpbmcgYSBjaHVuayBvZgotICAgIC8vIGJ5dGVzLiBGaXggdGhh
dCBzb21laG93LiBOb3RlIFNoYXJlZEJ1ZmZlcnMgYXJlIGRhbmdlcm91cyBzaW5jZQorICAgIC8v
IGJ5dGVzLiBGaXggdGhhdCBzb21laG93LiBOb3RlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJzIGFy
ZSBkYW5nZXJvdXMgc2luY2UKICAgICAvLyB0aGV5J3JlIG5vdCB0aHJlYWQtc2FmZSBhbmQgdGhp
cyBjbGFzcyBtdXN0IG1haW50YWluCi0gICAgLy8gdGhyZWFkLXNhZmV0eSwgYnV0IG1heWJlIFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQgY291bGQgYmUKKyAgICAvLyB0aHJlYWQtc2FmZXR5LCBi
dXQgbWF5YmUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQgY291bGQgYmUKICAg
ICAvLyBtYWRlIHRvIHdvcmssIGhvd2V2ZXIgdGhhdCBoYXMgemVybyBoZWxwZXJzIGZvciBkcm9w
cGluZyBpbnRvCiAgICAgLy8gaXRlcmF0b3ItYXdhcmUgLyBjb21wYXJhdG9yLWF3YXJlIGNvbnRh
aW5lcnMuLi4KICAgICBzdHJ1Y3QgY2VuY0RlY3J5cHRDb250ZXh0IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRo
dW5kZXIuY3BwCmluZGV4IDJlZmEwNDM2MGU4ODQ4MzgwNjE0NGMzZDcxZGU2M2FkN2I0MmI1NjEu
LmMzODkxNmU3ZDA1OWU4ODliNWM4OGVlYjA5ZTBmNGNmYzAzYzFkYjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9D
RE1UaHVuZGVyLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6
OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENE
TVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJp
dmF0ZVRodW5kZXI6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAg
ICAvLyBWYWxpZGF0ZSB0aGUgaW5pdERhdGEgYnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0IGluIGtl
eWlkcyBjYXNlLgogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0
YVR5cGUsICJrZXlpZHMiKSAmJiBDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdChpbml0RGF0
YSkpCkBAIC0yMzcsNyArMjM3LDcgQEAgYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFMKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVUaHVuZGVyOjpz
YW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZVRodW5kZXI6OnNhbml0aXplUmVz
cG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKIH0KQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIENE
TUluc3RhbmNlVGh1bmRlcjo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYQogICAgIGNhbGxiYWNrKFN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgQ0RN
SW5zdGFuY2VUaHVuZGVyOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYm
IGNlcnRpZmljYXRlLCAgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3Rh
bmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgY2VydGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBP
cGVuQ0RNRXJyb3IgZXJyb3IgPSBvcGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2NlcnRpZmljYXRl
KG1fdGh1bmRlclN5c3RlbS5nZXQoKSwgY29uc3RfY2FzdDx1aW50OF90Kj4oY2VydGlmaWNhdGUt
PmRhdGEoKSksCiAgICAgICAgIGNlcnRpZmljYXRlLT5zaXplKCkpOwpAQCAtMzI2LDcgKzMyNiw3
IEBAIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNlVGh1bmRlcjo6Y3JlYXRl
U2Vzc2lvbigpCiBjbGFzcyBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgewogCiBwdWJsaWM6Ci0gICAg
UGFyc2VkUmVzcG9uc2VNZXNzYWdlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
CisgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlKGNvbnN0IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKQogICAgIHsKICAgICAgICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+
c2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzU0LDggKzM1NCw4IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQogICAgIGJv
b2wgaGFzUGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fcGF5bG9h
ZCk7IH0KLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0JiB7IEFT
U0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KLSAgICBSZWY8U2hh
cmVkQnVmZmVyPiYgcGF5bG9hZCgpICYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5
bG9hZC52YWx1ZSgpOyB9CisgICAgY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBw
YXlsb2FkKCkgY29uc3QmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxvYWQudmFs
dWUoKTsgfQorICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpICYgeyBB
U1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CiAgICAgYm9vbCBo
YXNUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlLmhhc192YWx1ZSgpOyB9CiAgICAgV2ViQ29y
ZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSB0eXBlKCkgY29uc3QgeyBBU1NFUlQobV90eXBlKTsgcmV0
dXJuIG1fdHlwZS52YWx1ZSgpOyB9CiAgICAgV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSB0
eXBlT3IoV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSBhbHRlcm5hdGUpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZSA/IG1fdHlwZS52YWx1ZSgpIDogYWx0ZXJuYXRlOyB9CkBAIC0zNjQsMTEgKzM2
NCwxMSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzVmFsaWQgeyBmYWxzZSB9
OwotICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IG1fcGF5bG9hZDsKKyAgICBz
dGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9wYXlsb2FkOwogICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZT4gbV90eXBlOwogfTsK
IAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxs
YmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uVGh1bmRlcjo6Y2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJz
ZWRSZXNwb25zZU1lc3NhZ2UoYnVmZmVyKTsKICAgICBpZiAoIXBhcnNlZFJlc3BvbnNlTWVzc2Fn
ZSkgewpAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6
a2V5c1VwZGF0ZURvbmVDYWxsYmFjaygpCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5j
bGVhcigpOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJh
Y2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IG1lc3NhZ2UpCiB7CiAgICAgR1NUX0VSUk9SKCJDRE0gZXJyb3IiKTsKICAgICBHU1RfTUVNRFVN
UCgiZXJyb3IgZHVtcCIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKQEAgLTQ4
OCw3ICs0ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJh
Y2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogICAgIG1fc2Vzc2lvbkNoYW5nZWRD
YWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhU2hhcmVkQnVmZmVyLAor
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YVNoYXJlZEJ1ZmZlciwKICAgICBMaWNlbnNlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtNTA2
LDcgKzUwNiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0CiAgICAgICAgIG1faW5pdERhdGEu
cGF5bG9hZCgpLT5kYXRhKCksIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCksIG51bGxwdHIs
IDAsICZtX3RodW5kZXJTZXNzaW9uQ2FsbGJhY2tzLCB0aGlzLCAmc2Vzc2lvbik7CiAgICAgaWYg
KCFzZXNzaW9uKSB7CiAgICAgICAgIEdTVF9FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBzZXNzaW9u
Iik7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5w
YXlsb2FkKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0
YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOwogICAgICAgICBjYWxsYmFjayhpbml0RGF0YS5yZWxl
YXNlTm9uTnVsbCgpLCB7IH0sIGZhbHNlLCBGYWlsZWQpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0CiAKICAgICBhdXRv
IGdlbmVyYXRlQ2hhbGxlbmdlID0gW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CisgICAg
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEu
cGF5bG9hZCgpOwogICAgICAgICBpZiAobV9zZXNzaW9uSUQuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBHU1RfRVJST1IoImNvdWxkIG5vdCBjcmVhdGUgc2Vzc2lvbiBpZCIpOwogICAgICAgICAg
ICAgY2FsbGJhY2soaW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgeyB9LCBmYWxzZSwgRmFpbGVk
KTsKQEAgLTU0NSwxMyArNTQ1LDEzIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6
c2Vzc2lvbkZhaWx1cmUoKQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsK
IH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNw
b25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExp
Y2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9u
SUQsIHNlc3Npb25JRCA9PSBtX3Nlc3Npb25JRCk7CiAKICAgICBHU1RfVFJBQ0UoIlVwZGF0aW5n
IHNlc3Npb24gJXMiLCBzZXNzaW9uSUQudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBtX3Nlc3Npb25D
aGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkg
bXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKICAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAg
IGlmICghcmVzcG9uc2VNZXNzYWdlKQpAQCAtNTYyLDcgKzU2Miw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwg
TGljZW5zZVR5CiAgICAgICAgICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJl
c3BvbnNlTWVzc2FnZShyZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIEFTU0VSVChw
YXJzZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25z
ZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRC
dWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkp
OworICAgICAgICAgICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2Fn
ZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIEdTVF9ERUJVRygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5z
aXplKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3Nh
Z2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJh
Y2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LApAQCAtNTg2LDcgKzU4Niw3IEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUs
IGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQs
IHNlc3Npb25JRCA9PSBtX3Nlc3Npb25JRCk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJh
Y2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNj
ZXNzLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7Cisg
ICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghcmVzcG9u
c2VNZXNzYWdlKQpAQCAtNTk3LDcgKzU5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1
bmRlcjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiAg
ICAgICAgICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2Fn
ZShyZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25z
ZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFz
UGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3Nh
Z2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOworICAgICAgICAg
ICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUo
cGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdT
VF9ERUJVRygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwogICAg
ICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwg
bWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bWFrZV9wYWlyKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS50
eXBlT3IoTWVkaWFLZXlNZXNzYWdlVHlwZTo6TGljZW5zZVJlcXVlc3QpLApAQCAtNjQwLDcgKzY0
MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2VuCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNz
aW9uSUQsIG1fc2Vzc2lvbklEID09IHNlc3Npb25JRCk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2Vk
Q2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9v
bCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgbXV0YWJsZSB7CisgICAg
bV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtNjQ5LDcg
KzY0OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2VuCiAgICAgICAgICAgICAgICAgUGFyc2Vk
UmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShidWZmZXIpOwogICAgICAgICAg
ICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGlm
IChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVz
c2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQo
KSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygic2Vzc2lvbiAlcyByZW1vdmVkLCBt
ZXNzYWdlIGxlbmd0aCAlenUiLCBtX3Nlc3Npb25JRC51dGY4KCkuZGF0YSgpLCBtZXNzYWdlLT5z
aXplKCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhtX2tleVN0b3JlLmFsbEtleXNB
cyhNZWRpYUtleVN0YXR1czo6UmVsZWFzZWQpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBTdWNjZXNzVmFs
dWU6OlN1Y2NlZWRlZCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVu
ZGVyLmgKaW5kZXggY2RkOGRhMjExMjNjMTc5MWFlMmZiNjQzOWZmMmQ2ZmEwZDJlYjIxYy4uMTAy
MGUxNTMyMjcxYjUzNTFlMTA2ZGRlOGYyMWVhNTQwNWE5YzIzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVu
ZGVyLmgKQEAgLTkzLDggKzkzLDggQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxp
emUoKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7Ci0gICAgYm9v
bCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXIm
KSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNv
bnN0IGZpbmFsOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJl
c3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29u
c3QgZmluYWw7CiAKIHByaXZhdGU6CkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIC8v
IENETUluc3RhbmNlCiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6VGh1bmRlcjsgfQogICAg
IHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0
YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAg
dm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
U3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShj
b25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fa2V5U3lzdGVtOyB9CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vz
c2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAtMTI2LDggKzEyNiw4IEBAIGNsYXNzIENE
TUluc3RhbmNlU2Vzc2lvblRodW5kZXIgZmluYWwgOiBwdWJsaWMgQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkgewogcHVibGljOgogICAgIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXIoQ0RNSW5zdGFu
Y2VUaHVuZGVyJik7CiAKLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEs
IExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVD
YWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNl
c3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNz
aW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5n
JiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9u
RGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFj
ayYmKSBmaW5hbDsKQEAgLTE0MSwxNCArMTQxLDE0IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
Q0RNSW5zdGFuY2VUaHVuZGVyKiBjZG1JbnN0YW5jZVRodW5kZXIoKSBjb25zdDsKIAotICAgIHVz
aW5nIE5vdGlmaWNhdGlvbiA9IHZvaWQgKENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OiopKFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9
IHZvaWQgKENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OiopKFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB1c2luZyBDaGFsbGVuZ2VHZW5lcmF0ZWRDYWxs
YmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47Ci0gICAgdXNpbmcgU2Vzc2lvbkNoYW5nZWRDYWxsYmFj
ayA9IEZ1bmN0aW9uPHZvaWQoYm9vbCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+OworICAgIHVz
aW5nIFNlc3Npb25DaGFuZ2VkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGJvb2wsIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT47CiAKLSAgICB2b2lkIGNoYWxsZW5nZUdlbmVyYXRl
ZENhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgY2hhbGxlbmdlR2Vu
ZXJhdGVkQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZv
aWQga2V5VXBkYXRlZENhbGxiYWNrKEtleUlEVHlwZSYmKTsKICAgICB2b2lkIGtleXNVcGRhdGVE
b25lQ2FsbGJhY2soKTsKLSAgICB2b2lkIGVycm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJik7CisgICAgdm9pZCBlcnJvckNhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKTsKICAgICBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1cyBzdGF0dXMoY29uc3Qg
S2V5SURUeXBlJikgY29uc3Q7CiAgICAgdm9pZCBzZXNzaW9uRmFpbHVyZSgpOwogCkBAIC0xNTks
NyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICBJbml0RGF0YSBtX2luaXREYXRhOwogICAgIE9wZW5D
RE1TZXNzaW9uQ2FsbGJhY2tzIG1fdGh1bmRlclNlc3Npb25DYWxsYmFja3MgeyB9OwogICAgIEJv
eFB0cjxPcGVuQ0RNU2Vzc2lvbj4gbV9zZXNzaW9uOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fbWVzc2FnZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdl
OwogICAgIGJvb2wgbV9uZWVkc0luZGl2aWR1YWxpemF0aW9uIHsgZmFsc2UgfTsKICAgICBWZWN0
b3I8Q2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2s+IG1fY2hhbGxlbmdlQ2FsbGJhY2tzOwogICAg
IFZlY3RvcjxTZXNzaW9uQ2hhbmdlZENhbGxiYWNrPiBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCmluZGV4IDNm
ODVhZmU3M2M4NDI3NjI5OTdkNWFiYzJkN2JjMDdmN2MwMWI5YzMuLmVhODkwZjY3ZGEyMTM4N2Y0
MGRhNjUxYTBjYTVjNzM0OTNlODRmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1l
ckVNRVV0aWxpdGllcy5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIHZvaWQgbWFya3VwRXJy
b3IoR01hcmt1cFBhcnNlQ29udGV4dCosIEdFcnJvciosIGdwb2ludGVyKQogCiBzdGF0aWMgR01h
cmt1cFBhcnNlciBtYXJrdXBQYXJzZXIgeyBtYXJrdXBTdGFydEVsZW1lbnQsIG1hcmt1cEVuZEVs
ZW1lbnQsIG1hcmt1cFRleHQsIG1hcmt1cFBhc3N0aHJvdWdoLCBtYXJrdXBFcnJvciB9OwogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIHVucGFyc2VkUGF5bG9hZCkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXlsb2Fk
ID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOwogICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9h
ZC0+c2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5k
ZXggZDVhZmY4NDVmNDA5YTc1ZDcxYTk4NDBhY2YxZDM0MmE0NjQ3ZDJmMS4uMjdkZDRlYWUwZDJl
MDFhYjRkODRjMGFiYzQyNGViYjEwMTA0YzA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJl
YW1lckVNRVV0aWxpdGllcy5oCkBAIC0zOCw4ICszOCw3IEBAIEdTVF9ERUJVR19DQVRFR09SWV9F
WFRFUk4od2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdv
cnkpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbml0RGF0YSB7CiBwdWJsaWM6Ci0gICAg
SW5pdERhdGEoKQotICAgICAgICA6IG1fcGF5bG9hZChTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKSB7
IH0KKyAgICBJbml0RGF0YSgpID0gZGVmYXVsdDsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
aGF2ZSBhbiBlbnVtIGZvciBzeXN0ZW0gdXVpZHMgZm9yIGJldHRlciB0eXBlIHNhZmV0eS4KICAg
ICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBHc3RCdWZmZXIqIGluaXREYXRhKQpA
QCAtNTAsMTMgKzQ5LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdTVF9DQVRfTEVWRUxfTE9H
KHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5LCBH
U1RfTEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHByb3RlY3Rpb24gZGF0YSIs
IHN5c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZCht
YXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBpZiAoYXV0byBw
YXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRl
U2hhcmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXls
b2FkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAotICAgIEluaXREYXRhKGNvbnN0IFN0cmlu
ZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKKyAgICBJbml0RGF0
YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9w
YXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RGTW92ZShwYXlsb2FkKSkpCiAgICAgeworICAg
ICAgICBpZiAocGF5bG9hZCkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9
IGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSkpCisgICAgICAg
ICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmQoSW5pdERhdGEmJiBpbml0RGF0
YSkKQEAgLTcyLDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGl0J3Mgbm90IHZlcnkg
cm9idXN0LCBzbyBiZSBjYXJlZnVsIGhlcmUhCiAgICAgICAgIG1fc3lzdGVtSWQgPSBpbml0RGF0
YS5tX3N5c3RlbUlkOwogCi0gICAgICAgIG1fcGF5bG9hZC0+YXBwZW5kKCppbml0RGF0YS5wYXls
b2FkKCkpOworICAgICAgICBtX3BheWxvYWQuYXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwog
ICAgIH0KIAotICAgIGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3Qg
eyByZXR1cm4gbV9wYXlsb2FkOyB9CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQuZ2V0KCk7IH0KICAgICBjb25zdCBT
dHJpbmcmIHN5c3RlbUlkKCkgY29uc3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogICAgIFN0cmlu
ZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgpIGNvbnN0CiAgICAgewpAQCAtODYsMTEgKzg5LDExIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZXh0cmFj
dENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBT
dHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3BheWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9u
U3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDcxOGI5YmQzMTVl
Y2M2NzA3ODljNjVjYmFhYTAzNDkyOTc1ZTcyZDMuLjY5MjhhNjNlOTcxYzdjMzVlODg0NGVlZjcz
YmZhNDRhOGQ4YzAzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzYsNyArMzYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xh
c3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmls
aXRpZXM7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlw
ZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1h
Z2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1l
bnRJbWFnZU1hYy5tbQppbmRleCA4M2U2YWY3YjAzODkyODM4YzNiZmVhMWMwYzExYWE3ZmNmOGE3
N2E5Li42OGJjYzg4NDZhOGIxZjBmN2NiY2YxNDAzMTk2NmVkOTI0MzIyYzJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1l
bnRJbWFnZU1hYy5tbQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZv
aWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIG1fZG9jdW1l
bnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0
YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFth
bGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogfQogCiB2b2lkIFBERkRvY3VtZW50SW1h
Z2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
aAppbmRleCAwOWMxYzQ1YzQ1OTNhZWE0MzE4MzBkMjE1YjdlNzQ4NTJjMTllMzdmLi5mYTAwMDgx
MTYwNjY5N2RjNWM1MTEyMzMzYzkwYzhjOTJiNGI2NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0
aWVzLmgKQEAgLTM1LDkgKzM1LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBC
aWdFbmRpYW5VU2hvcnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRU9UUHJlZml4Owog
Y2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IEVPVEhlYWRlciB7CiAgICAgRU9USGVhZGVy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5kZXggMmNmYTg1NGMwMjI2
NjhhY2MwMDczN2MxZWJiMzVmZjM0OGQ1OGUyYi4uMGZhOGYzMDZhZDk1MmQwNmEwOTI5N2QwYjFk
Mjg3Yjg5ODgzMmEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApAQCAt
MzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogCiBzdGF0aWMg
Ym9vbCBsb2FkSG10eFRhYmxlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwg
VmVjdG9yPHVpbnQxNl90PiYgYWR2YW5jZVdpZHRocykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRh
Zyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlw
ZTo6SGhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5U
eXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpIaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYg
KCFoaGVhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjQsNyArNDI0LDcgQEAgT3BlblR5
cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVydGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNz
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKICAgICAvLyBMb2FkIHZo
ZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMgcmVxdWlyZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2
ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3Jt
RGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKICAgICBjb25z
dCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3Bl
blR5cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIXZoZWEpCiAgICAgICAgIHJldHVy
bjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0
cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5
cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBGb250
UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwor
ICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdT
VUJUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpHU1VCVGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6
dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NVQlRhYmxlPihidWZmZXIpOwogICAgIGlmIChnc3Vi
KQogICAgICAgICBnc3ViLT5nZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNh
bEdseXBoTWFwLCAqYnVmZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKaW5kZXggYTYy
NzE5YjE3MTlhNzRmOTc2OTIyMTlkZjVmN2FhZWRjNDkwNjQ2Ni4uMGRiNGFmYWRiM2Y3NDJiODNh
NGUxNmNmMzcxODcwYTJiMDQwNGVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKQEAgLTQzLDcg
KzQzLDcgQEAgZW51bSBEV1JJVEVfRk9OVF9TVFJFVENIOwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIERpcmVjdFdyaXRlIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNWYxMGY3MzkyZDA0YzM0NGQxMmNlZTQyNjZlZGIxZWU5
OTcxYzRlZi4uMDhmYzlmMTllYWVhOTQ4M2VhNThlYzFhZWVkZDQ1NzI1NmNlMjdiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zNiwxMiArMzYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3Qg
Q0dGb250KiBDR0ZvbnRSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlv
bjsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVj
dCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50
U2V0dGluZ3M7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0
dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAK
aW5kZXggNjI5ZTBlNjFhMTA0YzU2N2ExZDRlZGNiN2U1Nzk3ZGNmNjdjNmU4ZS4uNzczNTczOWI5
MzM0ZjQ0ZDk5YTNmMTJmZmM1YmY3YjQxZjdjYzZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQu
Y3BwCkBAIC0yNzIsNyArMjcyLDcgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJEaXJl
Y3QyRDo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWIKICAgICByZXR1
cm4gYml0bWFwOwogfQogCi12b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckRp
cmVjdDJEOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQogewogICAgIGlmICghYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VE
ZWNvZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5oCmluZGV4IDRmNDcyNTg2YjQyNGJkYTFjZjZmYTAxNDNjYmEy
M2QwMzAwMTZlNDUuLmMyMzY1ZmQ3NDRjNjExOGMxOTk5ZTA1YjgwMmVkNWI0OGYzNjQ4MjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29k
ZXJEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEltYWdlRGVjb2Rl
ckRpcmVjdDJEIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6CiAgICAgSW1h
Z2VEZWNvZGVyRGlyZWN0MkQoKTsKIAotICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyRGlyZWN0
MkQ+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJEaXJlY3QyRD4gY3JlYXRlKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJE
aXJlY3QyRCgpKTsKICAgICB9CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRm
b3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9
IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAg
ICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFs
OworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVm
ZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAKaW5kZXggMGQ4ODIwZTlmM2Q2ZmQ3NzM1ZDU3
MGIzNjQxNDg4ZjUzYmQ3ZWNlOS4uMmQ5NzI3MGE3MzQ4MzQ4OTNlNzhjODFmZjBlYzViYjVkZmVj
M2Y4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VXaW4uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAK
IC8vIFRoaXMgZnVuY3Rpb24gbG9hZHMgcmVzb3VyY2VzIGZyb20gV2ViS2l0Ci1SZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsK
K1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRv
QnVmZmVyKGNvbnN0IGNoYXIqKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVj
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJs
ZUltYWdlRGVjb2Rlci5jcHAKaW5kZXggZDk1NmQ5ZTc2MjVkNWJiNWE3MGYwNjkzZTc3OThlZTkw
ODQ5ZjE2NS4uMzNjOTVlYzMzMzNhOTIwYzY0YTAxODE3NTFlYjRhNTA1ZWYxYTdhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIG5hbWVzcGFjZSB7CiAKLXN0YXRpYyB1bnNpZ25lZCBjb3B5RnJvbVNoYXJlZEJ1
ZmZlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QgU2hhcmVkQnVm
ZmVyJiBzaGFyZWRCdWZmZXIpCitzdGF0aWMgdW5zaWduZWQgY29weUZyb21TaGFyZWRCdWZmZXIo
Y2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikKIHsKICAgICB1bnNpZ25lZCBieXRlc0V4dHJhY3RlZCA9
IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogc2hhcmVkQnVmZmVyKSB7CkBAIC0x
MzUsNyArMTM1LDcgQEAgYm9vbCBtYXRjaGVzQ1VSU2lnbmF0dXJlKGNoYXIqIGNvbnRlbnRzKQog
CiB9CiAKLVJlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gU2NhbGFibGVJbWFnZURlY29kZXI6
OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0
cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGxlbmd0aE9mTG9uZ2VzdFNpZ25hdHVyZSA9IDE0OyAvLyBU
byB3aXQ6ICJSSUZGPz8/P1dFQlBWUCIKICAgICBjaGFyIGNvbnRlbnRzW2xlbmd0aE9mTG9uZ2Vz
dFNpZ25hdHVyZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCAzMmQ0ZTZmOGI4ZmEx
NGExM2JmYjYyMmQ4NzU3MDg3OThiOTlkYWEyLi45YzQwNTU3ODI0MWQwYzUxMjcwMjk1MTVjMjIx
MjY1OGY4YzRmNjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTYwLDcgKzYwLDcg
QEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyBudWxscHRyIGlmIHdlIGNhbid0IHNuaWZmIGEg
c3VwcG9ydGVkIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgZGF0YSAocG9zc2libHkKICAgICAvLyBi
ZWNhdXNlIHRoZXJlIGlzbid0IGVub3VnaCBkYXRhIHlldCkuCi0gICAgc3RhdGljIFJlZlB0cjxT
Y2FsYWJsZUltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNjYWxh
YmxlSW1hZ2VEZWNvZGVyPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQogCkBAIC03
MCwxNiArNzAsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1
cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxldGU7CiAgICAgfQogCi0gICAgdm9pZCBzZXRE
YXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlCisg
ICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9j
ayB9OwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1
czo6RXJyb3IpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGRhdGEuZGF0YSgp
KSB7Ci0gICAgICAgICAgICAvLyBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb21iaW5lcyBhbGwgc2Vn
bWVudHMgaW50byBvbmUgaW4gY2FzZSB0aGVyZSdzIG1vcmUgdGhhbiBvbmUuCi0gICAgICAgICAg
ICBtX2RhdGEgPSBkYXRhLmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwotICAgICAgICB9Cisg
ICAgICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAg
ICAgIGlmIChjb250aWd1b3VzRGF0YS0+ZGF0YSgpKQorICAgICAgICAgICAgbV9kYXRhID0gY29u
dGlndW91c0RhdGEtPmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwogICAgICAgICBpZiAobV9l
bmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewog
ICAgICAgICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRydWU7CiAgICAgICAgICAg
ICB0cnlEZWNvZGVTaXplKGFsbERhdGFSZWNlaXZlZCk7CkBAIC0xOTUsNyArMTk0LDcgQEAgcHVi
bGljOgogICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CiAgICAgVmVjdG9yPFNjYWxhYmxlSW1hZ2VE
ZWNvZGVyRnJhbWUsIDE+IG1fZnJhbWVCdWZmZXJDYWNoZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1f
bG9jayk7CiAgICAgbXV0YWJsZSBMb2NrIG1fbG9jazsKICAgICBib29sIG1fcHJlbXVsdGlwbHlB
bHBoYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcAppbmRleCA3YzYwM2ZkODM1OGMyMTRh
YzkxODRmMzE4OTk3MmZlODQxYjYxZTgwLi4yNmY4ODY0OTZlNWE1YTE0ZTI4YWZiMWFmYTliZmMz
MDE3N2Y1MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCkBAIC00MSw3ICs0MSw3
IEBAIEFWSUZJbWFnZVJlYWRlcjo6QVZJRkltYWdlUmVhZGVyKFJlZlB0cjxBVklGSW1hZ2VEZWNv
ZGVyPiYmIGRlY29kZXIpCiAKIEFWSUZJbWFnZVJlYWRlcjo6fkFWSUZJbWFnZVJlYWRlcigpID0g
ZGVmYXVsdDsKIAotYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorYm9vbCBB
VklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoYXZp
ZkRlY29kZXJTZXRJT01lbW9yeShtX2F2aWZEZWNvZGVyLmdldCgpLCBkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpICE9IEFWSUZfUkVTVUxUX09LKQogICAgICAgICByZXR1cm4gYWxsRGF0YVJlY2Vp
dmVkID8gbV9kZWNvZGVyLT5zZXRGYWlsZWQoKSA6IGZhbHNlOwpAQCAtNTgsNyArNTgsNyBAQCBi
b29sIEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudCYgZGF0YSwgYm9vbCBhbAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFWSUZJ
bWFnZVJlYWRlcjo6ZGVjb2RlRnJhbWUoc2l6ZV90IGZyYW1lSW5kZXgsIFNjYWxhYmxlSW1hZ2VE
ZWNvZGVyRnJhbWUmIGJ1ZmZlciwgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0
YSkKK3ZvaWQgQVZJRkltYWdlUmVhZGVyOjpkZWNvZGVGcmFtZShzaXplX3QgZnJhbWVJbmRleCwg
U2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYgYnVmZmVyLCBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkKIHsKICAgICBpZiAobV9kZWNvZGVyLT5mYWlsZWQo
KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgKaW5kZXggY2JjYTBi
OGMxMjRiZmYwZmZjMzMwMWJhMzViY2UwMWVkMjcyMmRmOC4uNDk2ZjY5ZjgxMmJkNzViMGVkYTYz
NTdiYWE4NjBjZmNjYjViYTRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCkBAIC0zOSw4
ICszOSw4IEBAIHB1YmxpYzoKICAgICBBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJbWFnZURl
Y29kZXI+JiYpOwogICAgIH5BVklGSW1hZ2VSZWFkZXIoKTsKIAotICAgIGJvb2wgcGFyc2VIZWFk
ZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KTsKLSAgICB2b2lkIGRlY29kZUZyYW1lKHNpemVfdCBpbmRleCwgU2NhbGFibGVJbWFnZURlY29k
ZXJGcmFtZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKTsKKyAgICBib29sIHBh
cnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4LCBT
Y2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQmKTsKICAgICBzaXplX3QgaW1hZ2VDb3VudCgpIGNvbnN0OwogICAgIGRvdWJs
ZSByZXBldGl0aW9uQ291bnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApp
bmRleCA3Mjc2OWE2OTI2ZWMyNDE5YmY2NjM4MjUyOGQzZDc3MjBhNTRhZGFlLi5mNzQ1NWMxNDZj
N2U4YWViMDRjYzhjNTZmMzMwZTJhMDFmM2JhNzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVy
LmNwcApAQCAtNDYsNyArNDYsNyBAQCBCTVBJbWFnZURlY29kZXI6OkJNUEltYWdlRGVjb2RlcihB
bHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogewogfQogCi12
b2lkIEJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQordm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxl
ZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzdjN2Nh
ODFmZWE2YjhhNzc0YmIzMDhlNTM4ZGNkMDQ4Yzk5NWVlYS4uNjRkZWQ2YWJiZTJjMGEyOWIxMWY5
ZmI1ZWNkNmI0ODcyNGQ1ODk3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaApAQCAtNDQsNyAr
NDQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmlu
ZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJibXAiX3M7IH0KLSAg
ICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFs
OworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIGZpbmFsOwogICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVm
ZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIGZpbmFsOwogICAgIC8vIENBVVRJT046IHNldEZhaWxl
ZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gQmUgY2FyZWZ1bCB0byBhdm9pZAogICAgIC8vIGFjY2Vz
c2luZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxseSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9tIGlu
c2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaAppbmRleCA0ODQ0ZjM4MGRjMTdlYzcwNDU4OGZiMTJm
NTNlYWJjNmQyMGU2MGY0Li5iZDQzMGU4YThiZWEyYzgxNmIyYzUyMmJmNWJhNzg4NDZjMzhlMGZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAv
Qk1QSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBCTVBJbWFn
ZVJlYWRlciB7CiBwdWJsaWM6CiAgICAgLy8gUmVhZCBhIHZhbHVlIGZyb20gfGRhdGFbb2Zmc2V0
XXwsIGNvbnZlcnRpbmcgZnJvbSBsaXR0bGUgdG8gbmF0aXZlCiAgICAgLy8gZW5kaWFubmVzcy4K
LSAgICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJlYWRVaW50MTYoY29uc3QgU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQx
Nl90IHJlYWRVaW50MTYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQm
IGRhdGEsIGludCBvZmZzZXQpCiAgICAgewogICAgICAgICB1aW50MTZfdCByZXN1bHQ7CiAgICAg
ICAgIG1lbWNweSgmcmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgMik7CkBAIC01Miw3ICs1
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBzdGF0
aWMgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCYgZGF0YSwgaW50IG9mZnNldCkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHJlYWRV
aW50MzIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGlu
dCBvZmZzZXQpCiAgICAgewogICAgICAgICB1aW50MzJfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNw
eSgmcmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgNCk7CkBAIC02OSw3ICs2OSw3IEBAIHB1
YmxpYzoKICAgICBCTVBJbWFnZVJlYWRlcihTY2FsYWJsZUltYWdlRGVjb2RlciogcGFyZW50LCBz
aXplX3QgZGVjb2RlZEFuZEhlYWRlck9mZnNldCwgc2l6ZV90IGltZ0RhdGFPZmZzZXQsIGJvb2wg
dXNlc0FuZE1hc2spOwogCiAgICAgdm9pZCBzZXRCdWZmZXIoU2NhbGFibGVJbWFnZURlY29kZXJG
cmFtZSogYnVmZmVyKSB7IG1fYnVmZmVyID0gYnVmZmVyOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KKyAgICB2
b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsg
bV9kYXRhID0gJmRhdGE7IH0KIAogICAgIC8vIERvZXMgdGhlIGFjdHVhbCBkZWNvZGluZy4gSWYg
fG9ubHlTaXplfCBpcyB0cnVlLCBkZWNvZGluZyBvbmx5CiAgICAgLy8gcHJvZ3Jlc3NlcyBhcyBm
YXIgYXMgbmVjZXNzYXJ5IHRvIGdldCB0aGUgaW1hZ2Ugc2l6ZS4gUmV0dXJucwpAQCAtMjcyLDcg
KzI3Miw3IEBAIHByaXZhdGU6CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogbV9idWZm
ZXI7CiAKICAgICAvLyBUaGUgZmlsZSB0byBkZWNvZGUuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKIAogICAgIC8vIEFuIGluZGV4IGludG8gfG1fZGF0YXwg
cmVwcmVzZW50aW5nIGhvdyBtdWNoIHdlJ3ZlIGFscmVhZHkgZGVjb2RlZC4KICAgICBzaXplX3Qg
bV9kZWNvZGVkT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJv
LmNwcAppbmRleCA2MDEyMDM3NGY5YzQzMTY4YTY1MjFiNjljNTRhZmJlMmEwMGY1NWY3Li44Y2Nm
MDRmNjhmMDQwNmRhNGQzNzRhZTExNjhjOWNlYmJjOWE1ZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWly
by9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcApAQCAtMzcsNyArMzcsNyBAQCBQbGF0Zm9ybUlt
YWdlUHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0CiAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8dWludDMyX3QqPihtX3BpeGVsc1B0
cikpLAogICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMyLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgp
LmhlaWdodCgpLCBzaXplKCkud2lkdGgoKSAqIHNpemVvZih1aW50MzJfdCkpKTsKICAgICBzdGF0
aWMgY2Fpcm9fdXNlcl9kYXRhX2tleV90IHNfc3VyZmFjZURhdGFLZXk7Ci0gICAgY2Fpcm9fc3Vy
ZmFjZV9zZXRfdXNlcl9kYXRhKHN1cmZhY2UuZ2V0KCksICZzX3N1cmZhY2VEYXRhS2V5LCBtX3Bp
eGVscy5nZXQoKSwgW10odm9pZCogZGF0YSkgeyBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50Kj4oZGF0YSktPmRlcmVmKCk7IH0pOworICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3Vz
ZXJfZGF0YShzdXJmYWNlLmdldCgpLCAmc19zdXJmYWNlRGF0YUtleSwgbV9waXhlbHMuZ2V0KCks
IFtdKHZvaWQqIGRhdGEpIHsgc3RhdGljX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQqPihkYXRhKS0+ZGVyZWYoKTsgfSk7CiAKICAgICByZXR1cm4gc3VyZmFjZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKaW5kZXggZTZhYmUwZDk1NDRiNmMxODVjNjQ1ZGVj
ZTA5ZjIzZjk1NjY2MDdjYi4uYjllYzAxYjhhZThlOGQyOWJjNzgyNTI2ZTA3NjUyNTUxZTM1OWMw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgR0lGSW1h
Z2VEZWNvZGVyOjpHSUZJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3AKIAogR0lGSW1hZ2VEZWNvZGVyOjp+R0lGSW1hZ2VEZWNvZGVyKCkg
PSBkZWZhdWx0OwogCi12b2lkIEdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXIm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBHSUZJbWFnZURlY29kZXI6OnNldERh
dGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7
CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVy
LmgKaW5kZXggMzVkZjMzZjZkZmM0ODNmZDg0NzEzNjZhZTUzYmIwYjk2MWNhZWQyZS4uYzc0NzE5
OTk5Yjk4NmMxY2VmODQ3ODc1OWQyMzcxOGM5MDQyZDNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29k
ZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVj
b2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJnaWYiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIHNldFNp
emUoY29uc3QgSW50U2l6ZSYpIGZpbmFsOwogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Qg
ZmluYWw7CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VSZWFkZXIuaAppbmRleCA0MjE0NmUwMzI5MzIzNjk5Nzg5ZWI1ZTQyYWY0
YzczZDM0YWI5Y2M2Li4xMDgyZmRmMGRmZjIzOTFlNTY1MzBhNDFmODdiYTQzOTgyMzI3NTM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VSZWFkZXIuaApAQCAtMjM3LDcgKzIzNyw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KKyAgICB2b2lkIHNldERhdGEoV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0g
JmRhdGE7IH0KICAgICAvLyBGSVhNRTogaGFsdEF0RnJhbWUgc2hvdWxkIGJlIHNpemVfdC4KICAg
ICBib29sIGRlY29kZShXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OkdJRlF1ZXJ5LCB1bnNpZ25l
ZCBoYWx0QXRGcmFtZSk7CiAKQEAgLTMxNiw2ICszMTYsNiBAQCBwcml2YXRlOgogICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8R0lGRnJhbWVDb250ZXh0PiA+IG1fZnJhbWVzOwogICAgIHNpemVf
dCBtX2N1cnJlbnREZWNvZGluZ0ZyYW1lOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKICAgICBib29sIG1fcGFyc2VDb21w
bGV0ZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBjNzE3YzQ1ZDMwNTdj
MDU1MzZlZTYwNTBmOTM5NzA0NmQxMGRmMmE3Li5jMDcxMzQ1YjhiZjM2OWI4MDI3MWZiZGYwYTBj
ZTAxNzRmMDUwM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTIsNyArNTIs
NyBAQCBJQ09JbWFnZURlY29kZXI6OklDT0ltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBJQ09JbWFnZURlY29kZXI6On5JQ09JbWFn
ZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIElDT0ltYWdlRGVj
b2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURl
Y29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09J
bWFnZURlY29kZXIuaAppbmRleCBmYjdhOTAzYjJhMDc1Mzk0OTE3YWJiYmYxMWIxY2VkODNmZjQz
MmEwLi4xMGVlOWI0ZDJlOGM5ZDg4N2UxZDJiOGJlMTM5YmI3NDI3MWQ1N2E4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNv
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lD
T0ltYWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFNjYWxh
YmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gImljbyJfczsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgSW50U2l6ZSBz
aXplKCkgY29uc3QgZmluYWw7CiAgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0IElu
dFNpemUmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGZkMzQ1
YmI3ODZmZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLjVjZmFjOWYyMzU3ZTJlMTJjNjg2
NDAwYjI2Nzg4YWU3ZjhiZTEzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApA
QCAtMjIyLDcgKzIyMiw3IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRfbWFy
a2VyX3B0ciBtYXJrZXIpCiAKIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJv
ZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogewotICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsK
ICAgICBmb3IgKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIgPSBpbmZvLT5tYXJrZXJfbGlz
dDsgbWFya2VyOyBtYXJrZXIgPSBtYXJrZXItPm5leHQpIHsKICAgICAgICAgaWYgKCFpc0lDQ01h
cmtlcihtYXJrZXIpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0yMzYsMTMgKzIzNiwxMyBA
QCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXBy
ZXNzX3N0cnVjdCogaW5mbykKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAg
IHVuc2lnbmVkIG1hcmtlclNpemUgPSBtYXJrZXItPmRhdGFfbGVuZ3RoIC0gaWNjSGVhZGVyU2l6
ZTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOworICAgICAgICBi
dWZmZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0
YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXplKTsKICAgICB9CiAKLSAgICBpZiAoYnVmZmVy
LT5pc0VtcHR5KCkpCisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICByZXR1cm4gYnVmZmVyLnRha2UoKS0+
bWFrZUNvbnRpZ3VvdXMoKTsKIH0KICNlbmRpZgogCkBAIC0zMjAsNyArMzIwLDcgQEAgcHVibGlj
OgogICAgICAgICBtX2J5dGVzVG9Ta2lwID0gc3RkOjptYXgobnVtQnl0ZXMgLSBieXRlc1RvU2tp
cCwgc3RhdGljX2Nhc3Q8bG9uZz4oMCkpOwogICAgIH0KIAotICAgIGJvb2wgZGVjb2RlKGNvbnN0
IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgb25seVNpemUpCisgICAgYm9v
bCBkZWNvZGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEs
IGJvb2wgb25seVNpemUpCiAgICAgewogICAgICAgICBtX2RlY29kaW5nU2l6ZU9ubHkgPSBvbmx5
U2l6ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCmlu
ZGV4IGJlY2Y2NDUwMjc3ZWViNzRiMDlkZTUyZWUxODJmZjZlMTFlZDI3NjIuLjIwNDczZjBlZWVi
YjU2YzcxMzE0ZjY1NTZiZGEwOTAzMzQ5MDc0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9K
UEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIEpQRUcyMDAw
SW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiAgICAgfQogCiAgICAgc3RydWN0IFJlYWRlciB7Ci0gICAgICAgIFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQmIGRhdGE7CisgICAgICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50JiBkYXRhOwogICAgICAgICBzaXplX3Qgb2Zmc2V0OwogICAgIH0gcmVhZGVyID0geyAqbV9k
YXRhLCAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYzEyYzQ1OWE1YTNl
NWIzNTFjNWJjYzYyYmYwMGI4YTI4MWJkNWJhMy4uNGNiZDMyM2Q5YTc1MDI2ZWY4NjU4ZjM4MTZk
ZDczOGQzN2NhOGVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE1Miw3ICsx
NTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVhZE9mZnNldCA9IDA7CiAgICAgfQogCi0gICAg
Ym9vbCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBz
aXplT25seSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpCisgICAgYm9vbCBkZWNvZGUoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgc2l6ZU9ubHksIHVu
c2lnbmVkIGhhbHRBdEZyYW1lKQogICAgIHsKICAgICAgICAgbV9kZWNvZGluZ1NpemVPbmx5ID0g
c2l6ZU9ubHk7CiAgICAgICAgIFBOR0ltYWdlRGVjb2RlciogZGVjb2RlciA9IHN0YXRpY19jYXN0
PFBOR0ltYWdlRGVjb2Rlcio+KHBuZ19nZXRfcHJvZ3Jlc3NpdmVfcHRyKG1fcG5nKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJ
bWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAwMmYxYjA5ZGJjNzY1MTYwMWY5MjJkZGUy
OWY4MDVhNjU4NzFlMmQyLi5iMWJlYzU1ZTc4YzQzNDgwMWMyNTRhY2UwZGY1OTkzMWEzNmI3NGJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJw
L1dFQlBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgV0VC
UEltYWdlRGVjb2Rlcjo6V0VCUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGUKIAogV0VCUEltYWdlRGVjb2Rlcjo6fldFQlBJbWFnZURlY29k
ZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRC
dWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBXRUJQSW1hZ2VEZWNvZGVy
OjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTMyLDcgKzEz
Miw3IEBAIHZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKHNpemVfdCBmcmFtZUluZGV4LCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBUaGlzIGNhbiBiZSBleGVjdXRlZCBib3RoIGlu
IHRoZSBtYWluIHRocmVhZCAod2hlbiBub3QgdXNpbmcgYXN5bmMgZGVjb2RpbmcpIG9yIGluIHRo
ZSBkZWNvZGluZyB0aHJlYWQuCiAgICAgLy8gV2hlbiBleGVjdXRlZCBpbiB0aGUgZGVjb2Rpbmcg
dGhyZWFkLCBhIGNhbGwgdG8gc2V0RGF0YSgpIGZyb20gdGhlIG1haW4gdGhyZWFkIG1heSBjaGFu
Z2UgdGhlIGRhdGEKICAgICAvLyB0aGUgV2ViUERlbXV4ZXIgaXMgdXNpbmcsIGxlYXZpbmcgaXQg
aW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLCBzbyB3ZSBuZWVkIHRvIHByb3RlY3QgdGhlIGRhdGEu
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHByb3RlY3RlZERhdGEobV9k
YXRhKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHBy
b3RlY3RlZERhdGEobV9kYXRhKTsKICAgICBXZWJQRGF0YSBpbnB1dERhdGEgPSB7IHByb3RlY3Rl
ZERhdGEtPmRhdGEoKSwgcHJvdGVjdGVkRGF0YS0+c2l6ZSgpIH07CiAgICAgV2ViUERlbXV4U3Rh
dGUgZGVtdXhlclN0YXRlOwogICAgIFdlYlBEZW11eGVyKiBkZW11eGVyID0gV2ViUERlbXV4UGFy
dGlhbCgmaW5wdXREYXRhLCAmZGVtdXhlclN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVy
LmgKaW5kZXggYWYzNjVlOWNmOWM3Y2U5NTM4YjY0YmE3ODliZjAxN2Q0OGY2ZWRlMS4uZGQyOGJj
ODhkZjVjMGZhM2MxNTczNzg2OWIyNjA5NzNhYWEwZDIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldFQlBJbWFn
ZURlY29kZXIoKTsKIAogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICJ3ZWJwIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYs
IGJvb2wpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
Ym9vbCkgZmluYWw7CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogZnJhbWVCdWZmZXJB
dEluZGV4KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0
aXRpb25Db3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcmFtZUNvdW50OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDkwOWU4ZTc2OGFkYjY4YmFiMjg0NDVk
MjgyNzM2MGEzZjNmYTIyYzMuLmIyMzc3ZmUzNDExZDJhYzQwMTUxM2JmMDlhZThjY2FlNzg2YmQ4
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBA
IC0yMzYsMTQgKzIzNiwxNCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgog
CiAjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJp
bmc6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUZsYXRSVEZEXSkgewotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQoaXRlbUluZGV4LCBrVVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQo
KSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJh
dGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlRmxhdFJURkQs
IG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50
ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0
ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVh
ZGVyLnJlYWRSVEZEKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJl
c3VsdDo6RGlkTm90UmVhZFR5cGU7CiAgICAgfQogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0
cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUlRGXSkgewotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
aXRlbUluZGV4LCBrVVRUeXBlUlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAg
ICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVJURiwgbV9wYXN0ZWJvYXJk
TmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291
bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFu
Z2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZFJURigq
YnVmZmVyKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJl
YWRUeXBlOwpAQCAtMjUxLDcgKzI1MSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCiAjZW5kaWYgLy8gIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogCiAgICAgaWYgKFtzdXBw
b3J0ZWRJbWFnZVR5cGVzKCkgY29udGFpbnNPYmplY3Q6dHlwZV0pIHsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
KGl0ZW1JbmRleCwgdHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRl
eHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAg
ICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFs
bHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRJbWFnZShidWZmZXIucmVs
ZWFzZU5vbk51bGwoKSwgdHlwZSwgaXRlbUluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkg
PyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJk
SU9TLm1tCmluZGV4IDE2N2NlZjAyZDc4ZDc5NGRlYWE4ZTVkZGFmNGRkNjZjM2QyY2NhNDUuLjE2
YjNkNWQ0NDE1ZDI1ODUxNWY2NjBhODZhYzZjZWZiZGNkYjY0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtMzM4
LDcgKzMzOCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0
ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYpCitp
bnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJikKIHsKICAgICByZXR1cm4gMDsKIH0KQEAgLTQ2Myw3
ICs0NjMsNyBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2Fy
ZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiAKICAgICBBU1NFUlQoY29udGVudC5jbGllbnRUeXBlcy5z
aXplKCkgPT0gY29udGVudC5jbGllbnREYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDAsIHNpemUgPSBjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAg
ICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERh
dGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tp
XV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5j
bGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOwogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluV2Vi
QXJjaGl2ZUZvcm1hdCkgewogICAgICAgICBhdXRvIHdlYkFyY2hpdmVEYXRhID0gY29udGVudC5k
YXRhSW5XZWJBcmNoaXZlRm9ybWF0LT5jcmVhdGVOU0RhdGEoKTsKQEAgLTQ3OSw3ICs0NzksNyBA
QCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoY29u
dGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0KSB7Ci0gICAgICAgIGlmIChOU0F0dHJp
YnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNo
aXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJp
bmcuY2xhc3NdIGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIGlmIChOU0F0dHJp
YnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNo
aXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJp
bmcuY2xhc3NdIGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCiAg
ICAgICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmpl
Y3Q6YXR0cmlidXRlZFN0cmluZ107CiAgICAgfQogCkBAIC01MDEsNyArNTAxLDcgQEAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBj
dXN0b21EYXRhOwogICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKGNvbnRlbnQuY29udGVudE9yaWdp
bik7Ci0gICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CisgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURh
dGE6OmNvY29hVHlwZSgpKV07CiAKICAgICByZWdpc3Rlckl0ZW1Ub1Bhc3RlYm9hcmQocmVwcmVz
ZW50YXRpb25zVG9SZWdpc3Rlci5nZXQoKSwgbV9wYXN0ZWJvYXJkLmdldCgpKTsKIH0KQEAgLTUx
NCwxNCArNTE0LDE0IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0
ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKICAgICBhdXRvJiBkYXRhID0gcGFzdGVib2Fy
ZEltYWdlLmNsaWVudERhdGE7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUo
KSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSB0eXBlcy5zaXplKCk7IGkgPCBzaXpl
OyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtp
XS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CisgICAgICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CiAKICAgICBpZiAocGFzdGVi
b2FyZEltYWdlLnJlc291cmNlRGF0YSAmJiAhcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5
cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gdXRpT3JNSU1FVHlwZSA9IHBhc3RlYm9hcmRJ
bWFnZS5yZXNvdXJjZU1JTUVUeXBlOwogICAgICAgICBpZiAoIWlzRGVjbGFyZWRVVEkodXRpT3JN
SU1FVHlwZSkpCiAgICAgICAgICAgICB1dGlPck1JTUVUeXBlID0gVVRJRnJvbU1JTUVUeXBlKHV0
aU9yTUlNRVR5cGUpOwogCi0gICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdl
LnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0g
cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6aW1hZ2VE
YXRhLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopdXRpT3JNSU1FVHlwZV07CiAgICAgICAgIFty
ZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlvblNpemU6cGFz
dGVib2FyZEltYWdlLmltYWdlU2l6ZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lz
dGVyIHNldFN1Z2dlc3RlZE5hbWU6cGFzdGVib2FyZEltYWdlLnN1Z2dlc3RlZE5hbWVdOwpAQCAt
NjM1LDcgKzYzNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0
aW9uSW5mb0xpc3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6V2ViUHJlZmVycmVk
UHJlc2VudGF0aW9uU3R5bGVJbmxpbmVdOwogCiAgICAgaWYgKGRhdGEuaGFzU2FtZU9yaWdpbkN1
c3RvbURhdGEoKSB8fCAhZGF0YS5vcmlnaW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGF1
dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNy
ZWF0ZU5TRGF0YSgpKSB7CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIg
PSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKSkgewogICAgICAgICAgICAgLy8gV2Ugc3Rhc2ggdGhlIGxpc3Qgb2Ygc3VwcGxpZWQgcGFz
dGVib2FyZCB0eXBlcyBpbiB0ZWFtRGF0YSBoZXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggZHJh
ZyBhbmQgZHJvcC4KICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBjb250ZW50cyBvZiBpdGVtIHBy
b3ZpZGVycyBjYW5ub3QgYmUgbG9hZGVkIHByaW9yIHRvIGRyb3AsIGJ1dCB0aGUgcGFzdGVib2Fy
ZCB0eXBlcyBhcmUKICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGN1c3RvbSBk
YXRhIGJsb2IgYW5kIHdlIG5lZWQgdG8gdmVuZCB0aGVtIHRvIHRoZSBwYWdlIHdoZW4gZmlyaW5n
IGBkcmFnb3ZlcmAKQEAgLTY3Miw4ICs2NzIsOCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8g
YnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKLSAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKKyAgICAgICAgYXV0byBidWZmZXIg
PSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKKyAgICAgICAg
W3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsK
ICAgICB9KTsKIAogICAgIHJldHVybiByZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQppbmRl
eCA1NDQ2NTNjNDQwM2QyNjA0MGE1NWQyM2U5MzY5MWJmZWRjYzkyYjQyLi43YTRhMmIxNjViMmZh
N2QyMGQ1YjZlNGMyZDY1ZmU2M2VmMGIwMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQpAQCAtODIsNyArODIsNyBAQCBAZW5k
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0
ZXIoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFByZXZpZXdDb252ZXJ0ZXJQcm92
aWRlciYgcHJvdmlkZXIpCi0gICAgOiBtX3ByZXZpZXdEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSB9CisgICAgOiBtX3ByZXZpZXdEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJC
dWlsZGVyPigpIH0KICAgICAsIG1fb3JpZ2luYWxSZXNwb25zZSB7IHJlc3BvbnNlIH0KICAgICAs
IG1fcHJvdmlkZXIgeyBwcm92aWRlciB9CiAgICAgLCBtX3BsYXRmb3JtRGVsZWdhdGUgeyBhZG9w
dE5TKFtbV2ViUHJldmlld0NvbnZlcnRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aERlbGVnYXRl
Oip0aGlzXSkgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bQppbmRleCA2NzdmOGNhZGFiNTkxMjNlMWI2MmQxYmFjMmQxOTA4YmY2NzZhMmY5Li4wZDI1NDk4
Yjg2YmVmMTg1ZDM3NjlkNWE1YmMwYmMyZjczMWM3MGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6d3JpdGUoY29uc3QgQ29sb3ImIGNvbG9yKQogCiBzdGF0aWMgTlNGaWxlV3JhcHBl
ciogZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7
Ci0gICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRS
ZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVX
cmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdl
LnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
ICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhN
SU1FVHlwZShwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCwgcGFzdGVib2FyZEltYWdlLnJlc291cmNl
TUlNRVR5cGUpXTsKICAgICByZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQpAQCAtMzYy
LDcgKzM2Miw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0
ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5IGFsbG93CiAgICAgCiAgICAgaWYgKHR5cGVz
LmNvbnRhaW5zKFN0cmluZyhsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAg
IGlmIChhdXRvIGRhdGEgPSByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRG
RFBhc3RlYm9hcmRUeXBlKCksIGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBh
ZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CisgICAgICAgICAg
ICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmlu
ZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAgIHRl
eHQudGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAgdGV4
dC5pc1VSTCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KaW5kZXggMzUzZDAwNmI5MGNi
Y2U2MDllNmRmZDM3YzI4MDgxMzFmMjE0YjhkYS4uODhkMDQwMjU4NDM3MDJlNGFhNGY1YTlhNTU2
Yjg4MWM2ZTQwYzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRXcml0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRXcml0ZXIubW0KQEAgLTEyOCwxMSArMTI4LDExIEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldFN0cmluZzp3ZWJD
b250ZW50LT5kYXRhSW5TdHJpbmdGb3JtYXQgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5n
XTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd2ViQ29udGVudC0+Y2xpZW50
VHlwZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3
ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRv
VVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOwor
ICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0
YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VU
SVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKIAog
ICAgICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAgICAgICBjdXN0b21E
YXRhLnNldE9yaWdpbih3ZWJDb250ZW50LT5jb250ZW50T3JpZ2luKTsKLSAgICAgICAgW3Bhc3Rl
Ym9hcmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKKyAgICAgICAgW3Bhc3RlYm9h
cmRJdGVtIHNldERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlV
VEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKICAg
ICB9CiAKICAgICByZXR1cm4gcGFzdGVib2FyZEl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCBkOWI3ZDI0ODAz
OGMyZGI4YWFiMDkyY2I5MWZmYTU2ZjJjYjRjZTczLi5jM2I0ZDJkOTYyMTc0NzFjNzM1ZTI0ZmU3
YTVmOWQ5MjM3ZGY0NzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTI2Myw4ICsyNjMsOCBAQCBpbnQ2NF90IFBs
YXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEp
CiAgICAgICAgIGlmIChwbGF0Zm9ybVR5cGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+
PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9
IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0
YSgpKQorICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGxh
dGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihzdHJpbmdP
ckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAg
ICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0
Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3Ry
aW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpn
ZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CkBAIC0yNzQsNyArMjc0LDcgQEAgaW50NjRfdCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRh
KQogICAgIH0pOwogCiAgICAgaWYgKHNob3VsZFdyaXRlQ3VzdG9tRGF0YSkgewotICAgICAgICBp
ZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCkt
PmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9
IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpKQogICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnNlcmlhbGl6ZWRDdXN0b21E
YXRhLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsK
ICAgICB9CiAKQEAgLTM0MSwxMiArMzQxLDEyIEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJk
OjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKQogICAgIHJl
dHVybiBbbV9wYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpjcmVhdGVOU0FycmF5KHBhc3RlYm9hcmRU
eXBlcykuZ2V0KCkgb3duZXI6bmlsXTsKIH0KIAotaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpCitpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlw
ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpCiB7CiAgICAgaWYgKCFjYW5Xcml0ZVBhc3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRUeXBl
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3Rl
Ym9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmls
IGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOworICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFz
dGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFk
aWRXcml0ZURhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBjaGFuZ2VDb3VudCgp
OwpAQCAtNTA0LDggKzUwNCw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkSXRlbT4g
Y3JlYXRlUGFzdGVib2FyZEl0ZW0oY29uc3QgUGFzdGVib2FyZEN1c3RvbURhCiAgICAgICAgIGlm
ICghcGxhdGZvcm1UeXBlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsK
LSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRC
dWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09y
QnVmZmVyKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERhdGE6cGxh
dGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlm
IChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAg
ICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5oCmluZGV4IDY4MTNkNWRhN2RjYjBmYzI1OWYxYmQxZWQwYTU0
YzFhMWE5ZmQ5Y2YuLjc5NjU1NGY0Yzk3NjQ1MTQwMWUxYTEyMzc0Njg3MDQwYjI0YjFjYzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcml2YXRlLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgTWVkaWFTYW1w
bGU7CiBjbGFzcyBNZWRpYVN0cmVhbVByaXZhdGU7CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZTsKIGNsYXNzIFBsYXRmb3JtQXVkaW9EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IE1lZGlhUmVjb3JkZXJQcml2YXRl
T3B0aW9uczsKIApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgQXVkaW9WaWRlb1NlbGVjdGVkVHJhY2tzIHNlbGVjdFRyYWNrcyhNZWRp
YVN0cmVhbVByaXZhdGUmKTsKIAotICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBkb3VibGUpPjsKKyAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+OwogICAgIHZpcnR1YWwgdm9pZCBmZXRjaERhdGEoRmV0
Y2hEYXRhQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSgpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCmluZGV4
IGMyNWRmOTE1NzRhNjViYzQxYmRiNzA2NzhkYzQ3NzI0ODM2ZGQxNDUuLjQ5OGQ0ZWUxMzQwYzRi
OTQwMDFiNjBjMzQ0NzliN2Y3MmQ1YzhlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
TW9jay5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6
OmdlbmVyYXRlTW9ja0NvdW50ZXJTdHJpbmcoKQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRl
TW9jazo6ZmV0Y2hEYXRhKEZldGNoRGF0YUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9i
dWZmZXJMb2NrIH07CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZSB7IG1fYnVmZmVyLmNo
YXJhY3RlcnM4KCksIG1fYnVmZmVyLmxlbmd0aCgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDIxMWY3NWVlNzNhZjY5MTll
N2Y0Yzk5NThlMGNkMzQ4MjUzMmQwOWYuLjljMmM3OTdiODE5NTEyZDhmZDU3OTAxNWRjM2I2ZTQw
NWUzYmM2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFZp
ZGVvU2FtcGxlQnVmZmVyKE1lZGlhU2FtcGxlJik7CiAgICAgdm9pZCBhcHBlbmRBdWRpb1NhbXBs
ZUJ1ZmZlcihjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24mLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCk7CiAgICAgdm9pZCBzdG9wUmVj
b3JkaW5nKCk7Ci0gICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiYmKTsKKyAgICB2b2lkIGZldGNoRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBkb3Vi
bGUpPiYmKTsKIAogICAgIHZvaWQgcGF1c2UoKTsKICAgICB2b2lkIHJlc3VtZSgpOwpAQCAtMTA1
LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZpbmlzaGVkRmx1c2hpbmdTYW1wbGVz
KCk7CiAgICAgdm9pZCBjb21wbGV0ZUZldGNoRGF0YSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHRha2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHRha2VE
YXRhKCk7CiAKICAgICBib29sIG1faGFzQXVkaW8geyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNW
aWRlbyB7IGZhbHNlIH07CkBAIC0xMTcsOCArMTE3LDggQEAgcHJpdmF0ZToKICAgICBSZXRhaW5Q
dHI8QVZBc3NldFdyaXRlcj4gbV93cml0ZXI7CiAKICAgICBMb2NrIG1fZGF0YUxvY2s7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9j
ayk7Ci0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBk
b3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CisgICAgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgZG91Ymxl
KT4gbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsKIAogICAgIFJldGFpblB0cjxDTUZvcm1h
dERlc2NyaXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb247CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gbV9hdWRpb0NvbXByZXNzb3I7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0K
aW5kZXggOGMxZjdjMGU1MzEzYjZiODU2Y2QzY2RmNWU4Mzg0ZjM2YjdiNTNmNS4uODQ4NDEwMGVh
YzVlMTE1ZTliMGNmMDEyMGJhYmY3OGZiMWExMjc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtMTM3LDEwICsxMzcsOCBA
QCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
KCkKICAgICAgICAgbV93cml0ZXIuY2xlYXIoKTsKICAgICB9CiAKLSAgICAvLyBBdCB0aGlzIHBv
aW50ZXIsIHdlIHNob3VsZCBubyBsb25nZXIgYmUgd3JpdGluZyBhbnkgZGF0YSwgc28gaXQgc2hv
dWxkIGJlIHNhZmUgdG8gY2xvc2UgYW5kIG51bGxpZnkgbV9kYXRhIHdpdGhvdXQgbG9ja2luZy4K
ICAgICBpZiAobV93cml0ZXJEZWxlZ2F0ZSkKICAgICAgICAgW21fd3JpdGVyRGVsZWdhdGUgY2xv
c2VdOwotICAgIG1fZGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUobV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG51bGxwdHIsIDApOwpAQCAtNDk1LDcgKzQ5Myw3IEBAIHZvaWQgTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0b3BSZWNvcmRpbmcoKQogICAgIH0pOwogfQogCi12
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwogCkBAIC01MzcsMTggKzUzNSwxMyBAQCB2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiB2b2lk
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0g
ICAgaWYgKCFtX2RhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5hcHBlbmQo
ZGF0YSwgc2l6ZSk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkKK1Jl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
dGFrZURhdGEoKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgYXV0
byBkYXRhID0gV1RGTW92ZShtX2RhdGEpOwotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBt
X2RhdGEudGFrZSgpOwogfQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwYXVz
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxE
ZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVy
LmgKaW5kZXggYTliMjlkNTllOWFhM2I0NjU1NDE1YmQ4YmVmMDk4NGM1NDRiNzNmMC4uY2RlZTYw
MzUyM2NkNjY5NDVmNDI4ZjY5NDc4OTYwZjZmZDc0Yzc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaApAQCAtMzMsNyArMzMsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBEYXRhVVJMRGVjb2RlciB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCBm
YWZkZmU4N2M4MzdlNjE1N2QyZjEzZTlhN2NhMDA5NjlkNTBiMWM3Li40YmViY2I1MDk4ZDE1YzI5
NjZlZDhjN2VlMTM2YWUzYTJhZTRhMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCkBAIC04NCw3ICs4NCw3IEBAIGNsYXNzIE5ldHdv
cmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VR
dWV1ZTsKIGNsYXNzIFRpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IDZlNjViYjg5MThjNmVj
MTJmOGFlYTg2ZWJlNzA0ODg0ZTJlNzM2NmYuLmJhOGZkNGZmNGYxZTQxYzlhZDRmYTc0YTQyYmU0
ZTJiZDExYWE4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zNiw5ICszNiw5IEBAIFJlc291cmNl
SGFuZGxlQ2xpZW50OjpSZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogUmVzb3Vy
Y2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAotdm9p
ZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3Ro
KQordm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhh
bmRsZSogaGFuZGxlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGRpZFJlY2Vp
dmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAppbmRleCBiNjMz
N2Q1NmNlOGNkOWJlZmY5ZGZiZTExMzY2MmJjNzc1NmI2NTM3Li5jNGYwNTQ4NWYyODcwYjExNmRh
N2M3NjBkM2MwZmNlOTZlYzJiNGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIGNs
YXNzIFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBlbnVtIENhY2hlU3RvcmFnZVBvbGljeSB7
CiAgICAgU3RvcmFnZUFsbG93ZWQsCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcg
LypieXRlc1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8p
IHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSB7IH0K
LSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJj
ZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VI
YW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBk
aWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IDFmZjA2NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNk
YWY2OTZmMDI0MDYuLjAwOGUyMjZmZjkxOTAwNGI0NTE0OGEyNDcyNjExNjE1MDk4OTYyNzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNw
b25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTQxLDggKzQxLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBEYXRhKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlKQotICAgICAg
ICA6IGJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgICAgICAsIG9yaWdpbmFsUmVz
cG9uc2UocmVzcG9uc2UpCisgICAgICAgIDogb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKICAg
ICAgICAgLCByZXNvdXJjZSgmcmVzb3VyY2UpIHsgfQogCiAgICAgc3RydWN0IFRhc2tEYXRhIDog
cHVibGljIENhbk1ha2VXZWFrUHRyPFRhc2tEYXRhPiB7CkBAIC01NSw5ICs1NCw5IEBAIHN0cnVj
dCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICAgICAgc2l6ZV90IG5leHRCeXRl
VG9HaXZlQnVmZmVySW5kZXggeyAwIH07CiAgICAgICAgIGVudW0gY2xhc3MgUmVzcG9uc2VTdGF0
ZSA6IHVpbnQ4X3QgeyBOb3RTeW50aGVzaXplZFlldCwgV2FpdGluZ0ZvclNlc3Npb24sIFNlc3Np
b25DYWxsZWRDb21wbGV0aW9uSGFuZGxlciB9IHJlc3BvbnNlU3RhdGUgeyBSZXNwb25zZVN0YXRl
OjpOb3RTeW50aGVzaXplZFlldCB9OwogICAgIH07Ci0gICAgCisKICAgICBIYXNoTWFwPFJldGFp
blB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+LCBzdGQ6OnVuaXF1ZV9wdHI8VGFza0Rh
dGE+PiB0YXNrRGF0YTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBvcmlnaW5hbFJlc3Bv
bnNlOwogICAgIGVudW0gY2xhc3MgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIDogYm9vbCB7
IE5vLCBZZXMgfSBzdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgeyBTdWNjZXNzZnVsbHlGaW5p
c2hlZExvYWRpbmc6Ok5vIH07CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVz
b3VyY2U7CkBAIC0xMDYsMjIgKzEwNSwyMiBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQogdm9pZCBSYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2Vp
dmVkKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVz
dFJhbmdlJiByYW5nZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0
aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAg
IGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXI7Ci0gICAgYXV0byBidWZmZXJTaXplID0gYnVmZmVy
LT5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBqdXN0IG1h
a2UgYSByYW5nZSB3aXRoIGEgKiBhZnRlciB0aGUgLyBidXQgQVZGb3VuZGF0aW9uIGRvZXNuJ3Qg
YWNjZXB0IHN1Y2ggcmFuZ2VzLgogICAgIC8vIEluc3RlYWQsIHdlIGp1c3Qgd2FpdCB1bnRpbCB0
aGUgbG9hZCBoYXMgY29tcGxldGVkLCBhdCB3aGljaCB0aW1lIHdlIHdpbGwga25vdyB0aGUgY29u
dGVudCBsZW5ndGggZnJvbSB0aGUgYnVmZmVyIGxlbmd0aC4KICAgICBpZiAoIWV4cGVjdGVkQ29u
dGVudExlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBidWZmZXJTaXplID0gZGF0
YS5idWZmZXIuc2l6ZSgpOwogICAgIGlmIChidWZmZXJTaXplIDwgcmFuZ2UuYmVnaW4pCiAgICAg
ICAgIHJldHVybjsKLSAgICAKKworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIuZ2V0KCk7
CiAgICAgYXV0byogdGFza0RhdGEgPSBkYXRhLnRhc2tEYXRhLmdldCh0YXNrKTsKICAgICBpZiAo
IXRhc2tEYXRhKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBnaXZlQnl0ZXNUb1Rh
c2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCB0YXNrRGF0YSA9IFdlYWtQdHIg
eyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKKworICAgIGF1
dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgYnVm
ZmVyU2l6ZSwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdl
YWtQdHIgeyAqdGhpcyB9XSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
ICAgIGlmIChbdGFzayBzdGF0ZV0gIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlUnVubmluZykKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTEzMCw3ICsxMjksNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VH
ZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29y
ZU5TVQogICAgICAgICBhdXRvJiByYW5nZSA9IHRhc2tEYXRhLT5yYW5nZTsKICAgICAgICAgYXV0
byYgYnl0ZUluZGV4ID0gdGFza0RhdGEtPm5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXg7CiAgICAg
ICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlci0+
c2l6ZSgpKQorICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXJTaXplKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgYXV0byBidWZmZXJWaWV3ID0gYnVmZmVyLT5n
ZXRTb21lRGF0YShieXRlSW5kZXgpOwogICAgICAgICAgICAgaWYgKCFidWZmZXJWaWV3LnNpemUo
KSB8fCBieXRlSW5kZXggPiByYW5nZS5lbmQpCkBAIC0xNzUsNyArMTc0LDcgQEAgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0
aEZyb21EYXRhKGNvbnMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChk
YXRhLnN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5p
c2hlZExvYWRpbmc6OlllcykKLSAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLT5zaXplKCk7Cisg
ICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIHNob3VsZCByZXR1cm4gc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGluc3RlYWQgb2YgdXMgZG9pbmcgdGhpcyBjaGVjayBoZXJlLgog
ICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZGF0YS5vcmlnaW5hbFJlc3BvbnNlLmV4
cGVjdGVkQ29udGVudExlbmd0aCgpOwpAQCAtMjQ0LDcgKzI0Myw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgZmluYWwKKyAgICB2
b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFsCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgICAgICBpZiAoIW1fZ2VuZXJhdG9yKQpAQCAtMjUyLDcgKzI1MSw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1f
dXJsU3RyaW5nKTsKICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBkYXRhLT5idWZmZXItPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRh
LT5idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5n
aXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLmgKaW5kZXggNDA0ODg1YWU2Mzc2ZmNlNjgwNDBkMmEwNWMwMGJlYzQ3
ZmUxNmFhOC4uY2U0YzI1NDVjZGUwZjJmNDZhYzMzOGY5NmM0OTA4OGViNDVkMDkyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgUGxhdGZvcm1NZWRpYVJl
c291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBjbGFz
cyBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ7CiBlbnVtIGNsYXNzIFNob3VsZENv
bnRpbnVlUG9saWN5Q2hlY2sgOiBib29sOwpAQCAtMTU4LDcgKzE1OCw3IEBAIFdFQkNPUkVfRVhQ
T1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsKIC0gKHZvaWQp
cmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3Vy
Y2Ugc2VudEJ5dGVzOih1bnNpZ25lZCBsb25nIGxvbmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0Jl
U2VudDoodW5zaWduZWQgbG9uZyBsb25nKXRvdGFsQnl0ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVz
b3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ug
cmVjZWl2ZWRSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9u
c2UgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hv
dWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtIChCT09MKXJl
c291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNl
IHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJl
c3BvbnNlOwotLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpZGF0YTsKKy0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJilkYXRhOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSByZXF1ZXN0OihXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0aW9uSGFu
ZGxlcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSopcmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxh
YmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZhaWxlZFdp
dGhFcnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Np
b24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VS
TFNlc3Npb24ubW0KaW5kZXggZTA0MDEwYTk4MTFiNGM5YWUxNDk0OTk4NzAxY2ExNTQ4OWY1NzE2
Yy4uOGM4OWQ5Mzg2NTc5MzNhMWRhMjkwMzE5OTE1ODRjNGRiMmZhYTlhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5tbQpAQCAtNjA4LDcgKzYwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZGly
ZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVx
dWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9u
ZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tG
YWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC02
NTIsNyArNjUyLDcgQEAgYm9vbCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnNo
b3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmMKICAgICByZXR1cm4gW21fdGFz
ayByZXNvdXJjZTomcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTpyZXNwb25zZV07CiB9CiAK
LXZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
Cit2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXNrTG9jayB9OwogICAgIGlm
ICghbV90YXNrKQpAQCAtOTE1LDExICs5MTUsMTEgQEAgLSAoQk9PTClyZXNvdXJjZTooUGxhdGZv
cm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOihjb25zdCBSZXMK
ICAgICByZXR1cm4gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250
ZW50UmFuZ2UpLmlzRW1wdHkoKTsKIH0KIAotLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRp
YVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpZGF0YQorLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNv
dXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KWRhdGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3Vy
Y2UgPT0gX3Jlc291cmNlKTsKICAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9u
OltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBkYXRhID0gV1RGTW92ZShkYXRhKV0g
ewotICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBh
dXRvIG5zRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAg
ICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IGRhdGEtPnNpemUo
KTsKICAgICAgICAgaWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAo
aWQ8TlNVUkxTZXNzaW9uRGF0YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVs
ZWdhdGU7CiAgICAgICAgIGlmIChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoVVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKaW5k
ZXggYzM2ZTFmODg3NjQzMDQ2MGNlNzUwYTNiOGM2NThjNzM0ZWNiMTUwOC4uMzQ5NDQ1OTI1NGFj
OTNmYzE5Y2IxMjE1MGE2MWJjMmJjZWQwMmQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKQEAgLTEwMyw3ICsxMDMs
NyBAQCB2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVz
dCYgcmVxdWVzdCwgQ3VybFJlc3BvbnNlJiYgcgogfQogCiAKLXZvaWQgQ3VybERvd25sb2FkOjpj
dXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQordm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0
JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsRG93bmxvYWQuaAppbmRleCBhM2FhMGNmNWZjZDI5NTViYjdiMTZiMTFhMWE4
MWNhNzRhZTYxYzhkLi5jZGU0NDQ1Nzc1Zjc0NDIzMzA1MzBiNjViMTM1N2JhNmJmZDliYjgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3du
bG9hZC5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgUmVmPEN1cmxSZXF1ZXN0PiBj
cmVhdGVDdXJsUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGN1cmxEaWRTZW5k
RGF0YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25n
KSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVl
c3QmLCBDdXJsUmVzcG9uc2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1
ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZv
aWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVl
c3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFp
bFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZv
JiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggYmJkYTNmYmRhNzU4
M2Q5OTE5MzFkZmUxNjlmN2IzYTkxMzNlNmRhMi4uMDkwZDAzOWJhNDVkZTEwMjhlZGY3Njg0YzZk
N2QyZjI5NmUzYTM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMTE5LDEyICsxMTks
MTIgQEAgQ3VybE11bHRpcGFydEhhbmRsZTo6Q3VybE11bHRpcGFydEhhbmRsZShDdXJsTXVsdGlw
YXJ0SGFuZGxlQ2xpZW50JiBjbGllbnQsIGNvbnMKIAogfQogCi12b2lkIEN1cmxNdWx0aXBhcnRI
YW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBD
dXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVuZCkKICAgICAg
ICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQgZG93biBzbyBpZ25vcmUgZXZlcnl0
aGluZy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vzc0NvbnRlbnQoKSkgeyB9CiB9CkBA
IC0xMzcsNyArMTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSgp
CiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkgewogICAgICAgICAvLyBJdCBzZWVtcyB3
ZSBhcmUgc3RpbGwgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3NpbmcuCiAgICAgICAgIC8v
IFB1c2ggb3V0IHRoZSByZW1haW5pbmcgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2
ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwg
bV9idWZmZXIuc2l6ZSgpKSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11
bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOwogICAgICAg
ICBtX3N0YXRlID0gU3RhdGU6OkVuZDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCmluZGV4
IDVjMDhiY2M1ZWIzZTRiYmNjMDI5YjQ3Njc4NjhmNDNlMmY5NWMzNDEuLjlhMWExYmJkMTkzOGEx
NGY2OWZjY2VlM2YwZjg5Yjk3YTRhMjE4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaApAQCAtMzQs
NyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5k
bGVDbGllbnQ7CiBjbGFzcyBDdXJsUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgog
ICAgIEN1cmxNdWx0aXBhcnRIYW5kbGUoQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudCYsIGNvbnN0
IFN0cmluZyYpOwogICAgIH5DdXJsTXVsdGlwYXJ0SGFuZGxlKCkgeyB9CiAKLSAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkQ29tcGxldGUo
KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCmluZGV4IGZkMTNm
ZDM4MTMxNDNjYjI2NTliOGZkMWRiMjQ0NDc2NWU5OGE1ODAuLmM4MTM4ODZhOGQ1YzVmYTZjMTJk
MTQxMzMxOTEwMWFmMjUwMmEyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaApA
QCAtMjgsMTIgKzI4LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxSZXNw
b25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5n
PiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJl
ZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFG
cm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAKIHByb3Rl
Y3RlZDoKICAgICB+Q3VybE11bHRpcGFydEhhbmRsZUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXgg
ZDM1YjBlODM5MTk1MWQzODYzNGU5OTA5M2I2ODY1NjI0ZDk5Nzk1MS4uZDgyZGQzYzEwYWM2NDcx
MzU5OTFmZDdhZTY2OTdlOWQ4ZTMxM2U4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAg
c2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmIGhlYWRlcikKIAog
Ly8gY2FsbGVkIHdpdGggZGF0YSBhZnRlciBhbGwgaGVhZGVycyBoYXZlIGJlZW4gcHJvY2Vzc2Vk
IHZpYSBoZWFkZXJDYWxsYmFjawogCi1zaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRh
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYg
KGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00NDQsNyAr
NDQ0LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZUhlYWRlckZyb21NdWx0aXBhcnQo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGhlYWRlcnMpCiAgICAgaW52b2tlRGlkUmVjZWl2ZVJlc3Bv
bnNlKHJlc3BvbnNlLCBBY3Rpb246Ok5vbmUpOwogfQogCi12b2lkIEN1cmxSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lk
IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChpc0NvbXBsZXRlZE9yQ2FuY2VsbGVk
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTc3Nyw3ICs3NzcsNyBAQCBjb25zdCBTdHJpbmcmIEN1
cmxSZXF1ZXN0OjpnZXREb3dubG9hZGVkRmlsZVBhdGgoKQogICAgIHJldHVybiBtX2Rvd25sb2Fk
RmlsZVBhdGg7CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxl
SWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBDdXJsUmVxdWVzdDo6
d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZG93bmxv
YWRNdXRleCB9OwpAQCAtNzkwLDcgKzc5MCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0
YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAg
IH0KIAogICAgIGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rv
d25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAg
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVx
dWVzdDo6Y2xvc2VEb3dubG9hZEZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAppbmRleCA2YmQ4YTZiZmJhMzc1MmNlZGRkYmM1
MDA5ZWFlODNjNGYwZWVkNjQxLi4zYzdjZGQ4ODNlYjYyYmZlOTJjZjA0NDVlZDI5YmQyNmVjZTNl
OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBD
dXJsUmVxdWVzdENsaWVudDsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291
cmNlRXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU3luY2hyb25vdXNMb2FkZXJNZXNzYWdlUXVldWU7CiAKIGNsYXNzIEN1cmxS
ZXF1ZXN0IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEN1cmxSZXF1ZXN0PiwgcHVibGlj
IEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50LCBwdWJsaWMgQ3VybE11bHRpcGFydEhhbmRsZUNs
aWVudCB7CkBAIC0xMjIsOSArMTIyLDkgQEAgcHJpdmF0ZToKICAgICBDVVJMKiBzZXR1cFRyYW5z
ZmVyKCkgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IHdpbGxTZW5kRGF0YShjaGFyKiwgc2l6ZV90LCBz
aXplX3QpOwogICAgIHNpemVfdCBkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmKTsKLSAgICBzaXpl
X3QgZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc2l6ZV90IGRpZFJl
Y2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4m
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ29tcGxldGVU
cmFuc2ZlcihDVVJMY29kZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWxUcmFuc2Zlcigp
IG92ZXJyaWRlOwogICAgIHZvaWQgZmluYWxpemVUcmFuc2ZlcigpOwpAQCAtMTUzLDcgKzE1Myw3
IEBAIHByaXZhdGU6CiAgICAgTmV0d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtMb2FkTWV0cmljcygp
OwogCiAgICAgLy8gRG93bmxvYWQKLSAgICB2b2lkIHdyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZF
bmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgd3JpdGVEYXRhVG9Eb3dubG9h
ZEZpbGVJZkVuYWJsZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQg
Y2xvc2VEb3dubG9hZEZpbGUoKTsKICAgICB2b2lkIGNsZWFudXBEb3dubG9hZEZpbGUoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3RDbGllbnQuaAppbmRleCAwOGM4NmM3ZDQ2ODRiYTZmNzhkNjE2YjY4ZDA2OTA0YzM3YTk2
Njc3Li4zNDc5ODMyZjU3NmQ0MTI4YWZhNTFjODE0MjRjY2ZkNzQxZGY2YWU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RD
bGllbnQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBDdXJsUmVxdWVzdDsKIGNsYXNzIEN1cmxS
ZXNwb25zZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBDdXJsUmVxdWVzdENsaWVudCB7CiBwdWJsaWM6CkBAIC00Myw3ICs0Myw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNp
Z25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1Rv
QmVTZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3Vy
bFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlk
UmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkQ29t
cGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3Im
JiwgQ2VydGlmaWNhdGVJbmZvJiYpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlLmNwcAppbmRleCA4MThkNWE5NWUzZTEyNGRjM2E3MmY3NDNlNWNkNDUzZDcxN2UwMTBm
Li4zMDVkNGU1YzlmYzI3MDc3NTc4N2IwZjlhOTE5NzljMDg4ODlhOGE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0MiwxNSArMTQyLDE2IEBAIHZvaWQgQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVl
c3QmIHJlcXVlc3QsIEN1CiAgICAgfSk7CiB9CiAKLXZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCit2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVj
ZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKGNhbmNlbGxl
ZE9yQ2xpZW50bGVzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDdXJsQ2FjaGVNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKLSAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUs
IFdURk1vdmUoYnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91c0J1
ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpz
aW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1f
aGFuZGxlLCBXVEZNb3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CiB9CiAK
IHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVx
dWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5oCmluZGV4IDZkNTU4NjQ0NTJmZDQ2ZWU3ODAwZTkzMTIzYjEyOGJkYzY0Y2U0
ODcuLmRhZjBhNTlhNGU1ODZkNzExNGFiYjRlNWVmOWM1NGY2YThiZWZjNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5
dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAg
ICAgdm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNl
JiYpIGZpbmFsOwotICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVy
KEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAg
IHZvaWQgY3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYp
IGZpbmFsOwogICAgIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3QmLCBSZXNv
dXJjZUVycm9yJiYsIENlcnRpZmljYXRlSW5mbyYmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xv
YWRlckNsaWVudC5oCmluZGV4IGJjNGRhYWZiZjIxYTE1YzBlNmRkMWFjZDQ2MjJhZmE1NmI3Yjhk
NWQuLjFmNGExOTMxMzMxMmM1ZGQ2YTQ4YWQ1MzM5ZGZkMmMzYjVkZWMyNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTMxLDEyICszMSwxMiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRl
ZDxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TGVn
YWN5UHJldmlld0xvYWRlckNsaWVudCgpID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9z
aXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCmluZGV4IDBmYjQ1MDA3MmZhMTA0MjJmNmE5ZmU0MzJj
MzgxZDNkMTk2MTNlNjAuLmQ2MzIyMjU2NGVmMDc0Y2RiY2Q3ZWUyMTNlYTk5MTU3NDA3ZTM1NTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBP
U0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQ
T1NJWC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtNjgsNyArNjgsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgIGlm
ICh0b3RhbEJ5dGVzUmVhZCAhPSBieXRlc1RvUmVhZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAg
ICByZXR1cm4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBjNTQ0NTM4NWE3N2FjMTJjMDllZjI0ODY2NDcz
ZDYyY2I2Nzk0NTVhLi40NTM2ODFiZGFiMmU0YTA1YTIxZmM2OGE5NDM3MDBlMDZjOTk3YTFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0z
NTYsNyArMzU2LDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlKQogCiBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVDb3VudGVyIGZpbmFs
IDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0
cmluZyYpIGZpbmFsIHsgKytjb3VudDsgfQotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbCB7ICsrY291bnQ7
IH0KKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsIHsgKytjb3VudDsgfQogCiAgICAgdW5z
aWduZWQgY291bnQgeyAwIH07CiB9OwpAQCAtOTc0LDcgKzk3NCw3IEBAIHN0YXRpYyBIR0xPQkFM
IGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYKICAgICByZXR1cm4gbWVtT2JqOwogfQogCi1zdGF0aWMgSEdMT0JBTCBjcmVhdGVH
bG9iYWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKK3N0YXRpYyBIR0xPQkFM
IGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSkKIHsKICAgICBIR0xPQkFMIG1lbU9iaiA9IEdsb2JhbEFsbG9jKEdQVFIsIGRhdGEtPnNpemUo
KSk7CiAgICAgaWYgKCFtZW1PYmopIApAQCAtOTg2LDE1ICs5ODYsMTUgQEAgc3RhdGljIEhHTE9C
QUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgIENv
cHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAg
aWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEdsb2JhbFVu
bG9jayhtZW1PYmopOwogCiAgICAgcmV0dXJuIG1lbU9iajsKIH0KIAotc3RhdGljIEhHTE9CQUwg
Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1l
LCBTaGFyZWRCdWZmZXIqIGRhdGEpCitzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENv
bnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKGZpbGVOYW1lLmlzRW1wdHkoKSB8fCAhZGF0YSkKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC0xMDM4LDggKzEwMzgsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVh
dGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNo
YXJlZAogICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGlzIHRlbXAgZmlsZS4KICAgICAg
ICAgRFdPUkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBGQUxT
RTsKLSAgICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2Nl
ZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCksICZ3cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgICAg
IHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKICAgICAg
ICAgQ2xvc2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAgICAgICBpZiAoIXRlbXBXcml0ZVN1
Y2NlZWRlZCkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTA3MSw3ICsxMDcxLDcgQEAgdm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFVSTCYgdXJsKQogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgIWNhY2hlZEltYWdlLT5pbWFn
ZUZvclJlbmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSkgfHwgIWNhY2hlZEltYWdlLT5pc0xvYWRl
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0g
Y2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgp
OworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0gY2FjaGVkSW1hZ2Ut
PmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgpOwogICAgIGlmICgh
aW1hZ2VCdWZmZXIgfHwgIWltYWdlQnVmZmVyLT5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA0MTFlZGJiMzUx
N2I4NDhmYWMwNjNkMTllOGNkOTVlYzAwMzdjZDYxLi44NGZhMjljZTFmMzAwZmUyOTBiMDQxNDY0
OGYwZjcyOTBhN2NiZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmNwcApAQCAtNjMsNyArNjMsNyBAQCBib29sIE1vY2tDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5
c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShrZXlTeXN0ZW0sICJvcmcud2Via2l0Lm1vY2siKTsKIH0KIAotdm9pZCBNb2NrQ0RN
RmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+JiYga2V5cykKK3ZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNU
b1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4mJiBrZXlzKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXNzaW9ucy5h
ZGQoaWQsIFdURk1vdmUoa2V5cykpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKQEAg
LTc0LDcgKzc0LDcgQEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJ
RChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEIKICAgICAgICAgdmFsdWUuYXBw
ZW5kKFdURk1vdmUoa2V5KSk7CiB9CiAKLVZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gTW9ja0NE
TUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQor
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92
ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQogewogICAgIGF1dG8gaXQg
PSBtX3Nlc3Npb25zLmZpbmQoaWQpOwogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25zLmVuZCgpKQpA
QCAtODMsNyArODMsNyBAQCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5
OjpyZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaQogICAgIHJldHVybiBXVEZN
b3ZlKGl0LT52YWx1ZSk7CiB9CiAKLWNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4qIE1v
Y2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25z
dAorY29uc3QgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4qIE1vY2tDRE1GYWN0
b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdAogewogICAg
IGF1dG8gaXQgPSBtX3Nlc3Npb25zLmZpbmQoaWQpOwogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25z
LmVuZCgpKQpAQCAtMjAyLDcgKzIwMiw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9u
cygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZmFjdG9yeSAmJiBtX2ZhY3RvcnktPnN1cHBvcnRzU2Vz
c2lvbnMoKTsKIH0KIAotYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QK
K2Jvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewog
ICAgIGlmICghc3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMSwxMiArMjExLDEzIEBAIGJvb2wgTW9ja0NE
TTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkg
Y29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJl
c3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewot
ICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uu
c2l6ZSgpKSkKKyAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNp
emUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVz
cG9uc2VBcnJheSA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3Bs
aXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKGJ1ZmZl
ci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAoIXJlc3Bv
bnNlQXJyYXkuY29udGFpbnMoU3RyaW5nKCJ2YWxpZC1yZXNwb25zZSJfcykpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTI2OSw5ICsyNzAsOSBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6
aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJh
dAogICAgIGNhbGxiYWNrKGluaXRpYWxpemUoKSk7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNl
OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBT
dWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwg
U3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0
ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7Cisg
ICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAKICAgICBjYWxsYmFjayhl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlkIikgPyBT
dWNjZWVkZWQgOiBGYWlsZWQpOwogfQpAQCAtMjk3LDcgKzI5OCw3IEBAIE1vY2tDRE1JbnN0YW5j
ZVNlc3Npb246Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxNb2NrQ0RNSW5zdGFuY2U+
JiYgaW5zdGFuCiB7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBtX2lu
c3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewpAQCAtMzIz
LDcgKzMyNCw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2Uo
TGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TCiAgICAgY2FsbGJhY2soU2hhcmVk
QnVmZmVyOjpjcmVhdGUobGljZW5zZS5kYXRhKCksIGxpY2Vuc2UubGVuZ3RoKCkpLCBzZXNzaW9u
SUQsIGZhbHNlLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgTW9ja0NETUlu
c3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGlj
ZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxs
YmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNr
KQogewogICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFu
Y2UtPmZhY3RvcnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7CkBAIC0zMzEsNyAr
MzMyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5k
YXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4g
cmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rv
ci5jb250YWlucyhTdHJpbmcoImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAgICAgICAgY2FsbGJh
Y2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nl
c3NWYWx1ZTo6RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NETUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaApp
bmRleCBmNWNkYTUwNWNmMmEzM2MxMDVmMDI1Yzk3YzkzNTBhOTY4Njk4ZTFlLi5kOTZjMTU2ZWU0
ZDI3OTFiOGIwOTk4ZGFmOTQwZWM3NTM3ODA3YmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ0RNRmFjdG9yeS5oCkBAIC03Nyw5ICs3Nyw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFz
U2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSB7IHJldHVybiBtX3Nlc3Npb25zLmNvbnRh
aW5zKGlkKTsgfQogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlk
KSB7IG1fc2Vzc2lvbnMucmVtb3ZlKGlkKTsgfQotICAgIHZvaWQgYWRkS2V5c1RvU2Vzc2lvbldp
dGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYpOwotICAg
IGNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4qIGtleXNGb3JTZXNzaW9uV2l0aElEKGNv
bnN0IFN0cmluZyYgaWQpIGNvbnN0OwotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gcmVt
b3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpOworICAgIHZvaWQgYWRk
S2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiYmKTsKKyAgICBjb25zdCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+Pioga2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3Q7
CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gcmVtb3ZlS2V5c0Zyb21T
ZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpOwogCiBwcml2YXRlOgogICAgIE1vY2tDRE1G
YWN0b3J5KCk7CkBAIC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhbkNyZWF0
ZUluc3RhbmNlcyB7IHRydWUgfTsKICAgICBib29sIG1fc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0
ZXMgeyB0cnVlIH07CiAgICAgYm9vbCBtX3N1cHBvcnRzU2Vzc2lvbnMgeyB0cnVlIH07Ci0gICAg
SGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IG1fc2Vzc2lvbnM7Cisg
ICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBt
X3Nlc3Npb25zOwogfTsKIAogY2xhc3MgTW9ja0NETSA6IHB1YmxpYyBDRE1Qcml2YXRlIHsKQEAg
LTEyMSw4ICsxMjEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBm
aW5hbDsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7
CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25z
dCBmaW5hbDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZp
bmFsOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmlu
YWw7CiAKICAgICBXZWFrUHRyPE1vY2tDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CkBAIC0xMzksNyAr
MTM5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVt
ZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpN
b2NrOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFL
ZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxv
d1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYp
IGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3Jh
Z2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0oKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVh
dGVTZXNzaW9uKCkgZmluYWw7CkBAIC0xNTQsOCArMTU0LDggQEAgcHVibGljOgogICAgIE1vY2tD
RE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxNb2NrQ0RNSW5zdGFuY2U+JiYpOwogCiBwcml2YXRl
OgotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxi
YWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNl
bnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEs
IExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNl
VHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYm
KSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Np
b25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0
cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAppbmRleCBmYzEy
N2I3YjY3YmVhNzM0NDYzY2QyZDViMDc1NmI1OWJlYmE1OGFlLi4wNTlmM2EzODZiNmNmNWZhNzli
M2MxODk3MDE1MzEzZjdjZGI0ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgTW9ja0NvbnRlbnRGaWx0
ZXI6OmZpbmlzaGVkQWRkaW5nRGF0YSgpCiAgICAgbWF5YmVEZXRlcm1pbmVTdGF0dXMoRGVjaXNp
b25Qb2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVy
PiBNb2NrQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKK1JlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBNb2NrQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29u
c3QKIHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkpOwogICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5kYXRhKCksIG1fcmVwbGFjZW1lbnREYXRhLnNp
emUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKaW5kZXgg
NDExYTMwMDk0N2I1MzllMjZhYTZjNjRhMDA5MzI5MmU5ZmZiZTZiOS4uNjM1YWM4NGJlNzkzODQ3
YWE1NzIxM2QwMWZmYzFlNzRmNzZiNzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNw
b25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lk
IGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKQogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJs
b2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1NjcmlwdEJ1ZmZlci5jcHAKaW5kZXggNmQ0OGJkMDJkMWM5MWY3ZWVkODY0YTE2Y2Q3NTZiYjA3
N2Q2NTUyYS4uNWY4NTQ1ZWJhNWIwZTdiOGJiYWJhNWM2OTNjMmE0MzQxODhiMmJhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcm
IHN0cmluZykKIHsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAg
IG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIFNjcmlw
dEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKQEAgLTQ2LDE0ICs0NiwxMyBAQCBTY3JpcHRC
dWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCiAgICAgcmV0dXJuIFNjcmlwdEJ1ZmZlciB7IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsKIH0KIAotCiBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0
cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIG1fYnVmZmVyLT5mb3JFYWNo
U2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgIG1fYnVmZmVyLmdldCgpLT5mb3JFYWNo
U2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewogICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJp
bmc6OmZyb21VVEY4KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSkpOwogICAgIH0pOwog
ICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC02MSwxNSArNjAsMTMgQEAgU3RyaW5n
IFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogCiBib29sIFNjcmlwdEJ1ZmZlcjo6Y29u
dGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVm
ZmVyICYmIG1fYnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXItPmJlZ2luKCktPnNl
Z21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKKyAgICByZXR1cm4gbV9idWZmZXIgJiYg
bV9idWZmZXIuZ2V0KCktPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci5nZXQoKS0+YmVnaW4o
KS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOwogfQogCiB2b2lkIFNjcmlwdEJ1
ZmZlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIGlmICghbV9idWZmZXIp
Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvIHV0
ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyLT5hcHBlbmQodXRmOC5kYXRhKCksIHV0
ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5n
dGgoKSk7CiB9CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImIGEsIGNvbnN0
IFNjcmlwdEJ1ZmZlciYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2Ny
aXB0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCmluZGV4
IGIzOWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3OTZiNzFhMDQzMTM0YzY2NDYuLmZkMmMxYWUyZjYzYjYw
ZDc0YzMwZDI0MmE5ODlhMGJmZDkxZGU0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRC
dWZmZXIuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBTY3JpcHRCdWZmZXIgewogcHVibGljOgog
ICAgIFNjcmlwdEJ1ZmZlcigpID0gZGVmYXVsdDsKIAotICAgIFNjcmlwdEJ1ZmZlcihSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBTY3JpcHRCdWZmZXIoUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVm
ZmVyKSkKICAgICB7CiAgICAgfQpAQCAtNDgsMTcgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKICAgICBT
dHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KIAot
ICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZm
ZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci0+Y29weSgpKSA6IG51
bGxwdHIpOyB9CisgICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJu
IFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiht
X2J1ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29s
KCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuICFtX2J1ZmZlciB8fCAhbV9idWZmZXItPnNpemUoKTsgfQorICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzRW1wdHkoKTsgfQogCiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7CiAg
ICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlw
dC4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRG
LTggZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVm
ZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggNzc0MTZlYzA3ZDdiNjhiMTI4ZTI5NjFl
ZGM1ZDY0MGQwNGQ0YmQ0NS4uNDA2NmZiMzUyZWI1YjA4N2Q1ZDhkNDdkODAyZmQyYzBhNmE4MGZm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmNwcApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXb3JrZXJGb250TG9h
ZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVzdChVUkwmJiB1cmwsIExvYWRlZEZyb21PcGFx
dWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKICAgICA6IG1fdXJsKFdURk1vdmUodXJs
KSkKICAgICAsIG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZShsb2FkZWRGcm9tT3BhcXVlU291cmNl
KQorICAgICwgbV9kYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsK
IH0KIApAQCAtNzUsMTIgKzc2LDIxIEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2Fk
KFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKICAgICBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHdvcmtlckdsb2JhbFNjb3BlLCBX
VEZNb3ZlKHJlcXVlc3QpLCAqdGhpcywgb3B0aW9ucyk7CiB9CiAKK2Jvb2wgV29ya2VyRm9udExv
YWRSZXF1ZXN0Ojppc1BlbmRpbmcoKSBjb25zdAoreworICAgIHJldHVybiAhbV9pc0xvYWRpbmcg
JiYgIW1fZXJyb3JPY2N1cnJlZCAmJiBtX2RhdGEtPmlzTnVsbCgpOworfQorCiBib29sIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYp
CiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJl
ZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2Fy
eShtX2RhdGEpOwotICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2RhdGEsIG1f
dXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgaWYgKG1fZGF0YS0+Z2V0KCkpCisg
ICAgICAgICAgICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91
cygpOworICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRh
KTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEtPmFw
cGVuZCgqY29udGlndW91c0RhdGEpOworICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJs
LmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKCFtX2Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEpCiAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0g
dHJ1ZTsKICAgICAgICAgfQpAQCAtMTE3LDkgKzEyNyw2IEBAIHZvaWQgV29ya2VyRm9udExvYWRS
ZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCkKICAgICBpZiAobV9lcnJvck9jY3VycmVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IW1fZGF0YSkKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAg
IG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1
ZTc4MGJkZWViYzVjNmUwNGExZTg2M2M3Li4xYjNkNzg3MGYxMjhiZmU1MzhlZTZjOTg1OWNkYWFl
ODFlNDVlMmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmgKQEAgLTMwLDEzICszMCwxNCBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0
aW9ucy5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3
dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4
dDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHN0
cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Vy
bDsgfQotICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1faXNMb2Fk
aW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1fZGF0YTsgfQorICAgIGJvb2wgaXNQZW5kaW5n
KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2lzTG9hZGluZzsgfQogICAgIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fZXJyb3JPY2N1cnJlZDsgfQogCkBAIC03Niw3ICs3Nyw3IEBAIHByaXZhdGU6CiAg
ICAgRm9udExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxw
dHIgfTsKIAogICAgIFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0Owot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVm
ZmVyQnVpbGRlcj4gbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5oCmluZGV4IGViMjY2YjZjMDdlNjczZDkxNjZjYWNlNmIzMzkxOWQ4MGViYmYzMWMuLjA5NzU0
M2UxYjNiMzBmZjMxNDdkOTIzMmE1OGNlNGE5ZTYyZjNlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7CiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CiBjbGFzcyBTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgU2VydmljZVdvcmtlckZldGNoIHsKIGNsYXNz
IENsaWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDbGllbnQsIFdURjo6RGVzdHJ1
Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
Rm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5YTg3NWY4YWZjMGQ2MjM1NWFj
NjIyOWE2NGMxY2E0M2QxODU2NTIuLjlhOGZiMzVjYTUzNjEwNWJiNmQ2ZmM0NmVlMTIyNDU5MzNm
NzBiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsxMjcsOCBAQCBTY3JpcHRCdWZm
ZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiByZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGRpc2Fi
bGUgZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQgaGF2aW5nIHRvbyBtYW55IGZp
bGUgZGVzY3JpcHRvcnMgb3Blbj8KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlBy
aXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBTaGFyZWRCdWZmZXI6Ok1h
eVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpO
byk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8g
U2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlV
c2VGaWxlTWFwcGluZzo6Tm8pOworICAgIHJldHVybiBidWZmZXI7CiB9CiAKIHZvaWQgU1dTY3Jp
cHRTdG9yYWdlOjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdp
c3RyYXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBhYjk5
NjAzZWE1M2UyNDZiNjMzMjFmYmQ0MTQxY2M1ZTI5Y2U5NmI0Li5mY2NjMmE5ZWQyMGQ3NDdjMDlj
NjE2YjQ5OGU1MzBlZjc4YThlNTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKQEAgLTExOCw2ICsxMTgsNyBAQCBYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1fcmVzcG9uc2VDYWNoZUlzVmFs
aWQoZmFsc2UpCiAgICAgLCBtX3JlYWR5U3RhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFVOU0VO
VCkpCiAgICAgLCBtX3Jlc3BvbnNlVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVzcG9uc2VU
eXBlOjpFbXB0eVN0cmluZykpCisgICAgLCBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcihtYWtlVW5p
cXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiAgICAgLCBtX3Byb2dyZXNzRXZlbnRUaHJv
dHRsZSgqdGhpcykKICAgICAsIG1fdGltZW91dFRpbWVyKCp0aGlzLCAmWE1MSHR0cFJlcXVlc3Q6
OnRpbWVvdXRUaW1lckZpcmVkKQogewpAQCAtMjA3LDggKzIwOCw4IEBAIFJlZjxCbG9iPiBYTUxI
dHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkKIAogICAgIC8vIEZJWE1FOiBXZSBqdXN0
IHJlY2VpdmVkIHRoZSBkYXRhIGZyb20gTmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBp
dCBiYWNrLiBUaGlzIGlzIGluZWZmaWNpZW50LgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwot
ICAgIGlmIChtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgZGF0YSA9IHN0ZDo6ZXhj
aGFuZ2UobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIsIG51bGxwdHIpLT5leHRyYWN0RGF0YSgpOwor
ICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpKQorICAgICAgICBkYXRh
ID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2UoKS0+ZXh0cmFjdERhdGEoKTsKICAgICBT
dHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBl
KHJlc3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlwZTo6WWVzKSk7IC8vIHJlc3BvbnNlTUlNRVR5
cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5IGJlIGluY29ycmVjdC4KICAgICByZXR1
cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShkYXRhKSwg
bm9ybWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAgLTIxOCw4ICsyMTksNyBAQCBSZWZQdHI8QXJy
YXlCdWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKCkKICAg
ICBBU1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcik7CiAg
ICAgQVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkpOwogCi0gICAgYXV0byByZXN1bHQgPSBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50cnlDcmVhdGVB
cnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKLSAgICBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgYXV0byByZXN1bHQgPSAhbV9iaW5h
cnlSZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRh
a2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjpjcmVhdGUobnVsbHB0
ciwgMCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQg
WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VCdWZmZXJzKCkKICAgICBtX3Jlc3BvbnNlRW5j
b2RpbmcgPSBTdHJpbmcoKTsKICAgICBtX2NyZWF0ZWREb2N1bWVudCA9IGZhbHNlOwogICAgIG1f
cmVzcG9uc2VEb2N1bWVudCA9IG51bGxwdHI7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIg
PSBudWxscHRyOworICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5yZXNldCgpOwogICAgIG1f
cmVzcG9uc2VDYWNoZUlzVmFsaWQgPSBmYWxzZTsKIH0KIApAQCAtMTA2NSw4ICsxMDY1LDYgQEAg
dm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbikKICAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVj
b2RlKGRhdGEsIGxlbikpOwogICAgIGVsc2UgewogICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRh
dGEuCi0gICAgICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgICAgICBt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAg
IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5hcHBlbmQoZGF0YSwgbGVuKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggNzI4OTRhZjZjYzQ3ZGJhZTVlNzVjM2E4
MDc5MDllZjI4NGY2ZDU5Ny4uMTYyY2E5NWFlYjc1NDQ4OWJkNmNkOGNkYzUwODYyYzg0Nzc3YmFi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJ
bmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5oIgogI2luY2x1ZGUgPHZhcmlhbnQ+
CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEJsb2I7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERP
TUZvcm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNs
YXNzIFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBVUkxTZWFyY2hQYXJhbXM7CkBAIC0yMzcsNyAr
MjM4LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9yZXNwb25zZURvY3Vt
ZW50OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7
CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyOwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Jlc3BvbnNlQnVpbGRlcjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJv
eHkuY3BwCmluZGV4IDU3MzA2N2UzZGQwNTBmZWI3YzU3OWQwMDEwMmVlOWY2MDQ1YjUzMTMuLjMx
YzJkNzZmMmVlMWI5ZDI0OWIwMDFiN2VmZjg5MmVjMmE3NDU2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5j
cHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6flJlbW90ZUNETUlu
c3RhbmNlUHJveHkoKQogICAgIG1faW5zdGFuY2UtPmNsZWFyQ2xpZW50KCk7CiB9CiAKLXZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNl
aXZlZChjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2
b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRh
UmVjZWl2ZWQoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YSkKIHsKICAgICBpZiAoIW1fY2RtKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJv
eHkuaAppbmRleCA4ZTczZDNkOWE2NGI5OGJmYzAwOTM2Y2Q0N2M0YzI1YTkyNzlmMmM4Li4wMmM1
Y2QzN2FlNTQ4MDJmNmQwYzhkY2NjYjBiYTgwY2YzMzg4YzMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKQEAg
LTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KFdlYWtQ
dHI8UmVtb3RlQ0RNUHJveHk+JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4mJiwgVW5pcXVl
UmVmPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VJ
ZGVudGlmaWVyKTsKIAogICAgIC8vIENETUluc3RhbmNlQ2xpZW50Ci0gICAgdm9pZCB1bnJlcXVl
c3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXph
dGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAppbmRleCBlNTc2NmMyMzM0Y2Zk
Mzg5MzEwY2Q0YjIxNzIzY2FiYTM3NDJmYzdjLi5kZTgyNzNiOWNmNTAwYTRkNjZhYTE0NGVkZTAy
MDFlZWYxZWQ4NjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKQEAgLTcwLDcg
KzcwLDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUgdHlwZSwgQXRvbVN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgbV9zZXNzaW9uLT5yZXF1ZXN0TGljZW5zZSh0eXBlLCBpbml0RGF0YVR5cGUsIGluaXRE
YXRhLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21w
bGV0aW9uKV0gKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpT
dWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb24tPnJlcXVlc3RM
aWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51
bGwoKSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVl
ZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3Vj
Y2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbihXVEZNb3ZlKG1lc3NhZ2UpLCBz
ZXNzaW9uSWQsIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5j
ZVNlc3Npb246OlN1Y2NlZWRlZCk7CiAgICAgfSk7CiB9CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9p
ZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkLCBDbG9zZVMKIAogdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBl
IHR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJiBjb21wbGV0aW9uKQogewotICAgIG1f
c2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlLCBbY29tcGxldGlvbiA9
IFdURk1vdmUoY29tcGxldGlvbildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
ciYmIGtleVN0YXR1c2VzLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGV4cGly
ZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRl
ZCkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQs
IHR5cGUsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vz
c2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIHN0ZDo6b3B0aW9uYWw8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNl
U2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVu
Y2U7CiAgICAgICAgIGlmIChleHBpcmVkU2Vzc2lvbnNEYXRhKQogICAgICAgICAgICAgZXhwaXJl
ZFNlc3Npb25EYXRhUmVmZXJlbmNlID0gSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoKmV4
cGlyZWRTZXNzaW9uc0RhdGEpKTsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJiBr
ZXlTdGF0dQogICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlVwZGF0ZUtleVN0YXR1c2VzKFdU
Rk1vdmUoa2V5U3RhdHVzZXMpKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBpZiAoIW1fY2RtKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCmluZGV4IDhhNjFmOWQ1ZmFiYzg0ODZhN2EwZTg2
MGY0YzYzMTJjMGI0NDU1MTQuLmZlNzMwOTcxMzFlMGJiMjBhNTAwMWUxNTAxNjAyZDY1MTg2YjMw
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZh
dGU6CiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQKICAgICB2b2lkIHVwZGF0ZUtl
eVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKSBmaW5hbDsKLSAgICB2b2lkIHNlbmRNZXNzYWdl
KFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIG1l
c3NhZ2UpIGZpbmFsOworICAgIHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5
cGUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFs
OwogICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBQ
bGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBmaW5hbCB7IHJldHVybiBtX2Rpc3BsYXlJRDsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5
LmNwcAppbmRleCA5YWIzNTc1ZjRjM2I1NTk1NTViOWI4N2IyMzM3MWIxYjFhNjZkYzE3Li5mN2Ni
NmE2M2ViOTMzYWJkNGQ0NTNhMjJhYjI5NGYxMzAzMjMyYjA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKQEAgLTYzLDEyICs2Mywx
MiBAQCBSZW1vdGVDRE1Qcm94eTo6UmVtb3RlQ0RNUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0
b3J5UHJveHk+JiYgZmFjdG9yeSwgc3RkOjp1bgogCiBSZW1vdGVDRE1Qcm94eTo6flJlbW90ZUNE
TVByb3h5KCkgPSBkZWZhdWx0OwogCi1ib29sIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK2Jv
b2wgUmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlw
ZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICByZXR1cm4gbV9w
cml2YXRlLT5zdXBwb3J0c0luaXREYXRhKHR5cGUsIGRhdGEpOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZm
ZXImIHJlc3BvbnNlKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFJlbW90ZUNETVBy
b3h5OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3Bv
bnNlKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2Up
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHku
aAppbmRleCA2OTI0ZTc0ZTNmNTAxMWJlMjE1YmU0YmQ5NmIyMzQ4MjY0NzBmNDIzLi4zYjY2Yzc3
NTc4NzA2OWU5NzZlZTA2NGY5NmZmMDdjMGY3MTJhOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaApAQCAtMzYsNyArMzYsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgQ0RN
UmVxdWlyZW1lbnQgOiB1aW50OF90OwogZW51bSBjbGFzcyBDRE1TZXNzaW9uVHlwZSA6IHVpbnQ4
X3Q7CiBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKQEAgLTU4LDggKzU4LDggQEAg
cHVibGljOgogCiAgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5KiBmYWN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9mYWN0b3J5LmdldCgpOyB9CiAKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJiByZXNwb25zZSk7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpOwogICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCmluZGV4IGUyY2QwNWQ3Y2M3NGYyMGVjNjlm
YWRmZTNlZTA4NTc1OTJhZDg3OWIuLmRlOGY2ZGY1NWE2ZTFmYThiZTk2NmY5NDFlMDdmZTJmNWM1
MDIxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1Qcm94eS5oCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHkuY3BwCmluZGV4IDkzYjJmZjc0MWIxZjgzNjliMjA1ODRlNDk3ZTRhMDIx
YjljY2Y1NzguLjIxNDEzNzlkNmE1OWVhZjIyODUxNGIxODdiNTY5ZDA0NzAzYzExOTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gY29udmVydFRvT3B0aW9uYWxEYXRhUmVmZXJl
bmNlKFQgYXJyCiB7CiAgICAgaWYgKCFhcnJheSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICByZXR1cm4geyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoY29uc3QgY2hhciopYXJyYXkt
PmRhdGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkgfTsKKyAgICByZXR1cm4geyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKGNvbnN0IGNoYXIqKWFycmF5LT5kYXRhKCksIGFycmF5LT5i
eXRlTGVuZ3RoKCkpIH07CiB9CiAKIHZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojpn
ZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5JiYgaW5pdERhdGEsIEdlbmVyYXRlS2V5Q2FsbGJhY2smJiBjb21wbGV0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETVNlc3Npb25Qcm94eS5oCmluZGV4IGYxNGM2MjdmNjU5M2UxYTg3OGQwZjQ1OTkyYjNjNDFi
MjIyYzdmMDAuLjE1NDZiZGZkZmRjZjA5MTA4Nzg5NDRmMzQwNzk2N2E3YWIzOGJmODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5LmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIExlZ2FjeUNETTsKIGNsYXNzIExlZ2FjeUNETVNlc3Npb247Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2Ug
SVBDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlLmNwcAppbmRleCBjNDVlNTI1NWQ2N2I1MmM3YWUxMDQ0OTk4OGNlMDE5MGM3
ZmZiNTM4Li42MTdmNDc2ODk1NjQyZGVjMjMyNTRiNTQwZWU4MTkxMWFjNGEyZGY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2UuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVNl
bnQodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlCiAgICAgICAg
IG1fY2xpZW50LT5kYXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQp
OwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChSZWY8U2hhcmVk
QnVmZmVyPiYmIGRhdGEpCit2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGlmIChtX2NsaWVudCkK
ICAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgV1RGTW92ZShkYXRhKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNv
dXJjZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2UuaAppbmRleCBkMTNkMjVmNjVmMDIyNGE2Yzc2N2Y2OWE0ZDQxOWNkMDUzYmI3OTVkLi41Yjdh
N2UyYTc0MjQ0MzJkODZjYjI4YTFiZTcxNzE4YTE2NzM3NWU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKQEAgLTM0LDcg
KzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNz
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2ws
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVj
ayk+JiYpOwogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIGRhdGFTZW50
KHVpbnQ2NF90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUmVmPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFp
bGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGYWlsZWQo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggN2U1
NzJiM2E3NGEyMDI3ZTc0Y2FhNzY3MmU1MmRhMGFmODM0MjA3Mi4uZTgzZjkxNDNkMjBhNzJlMmJl
NGZmY2JmZWQxM2IwYmI0ZGQzMWUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3LDgg
QEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3Jl
OjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0
Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJs
ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV93cml0ZXItPmZldGNoRGF0YShbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRhdGEs
IGF1dG8gdGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBhdXRvKiBwb2ludGVyID0gZGF0YSA/
IGRhdGEtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/IGRh
dGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigpOwor
ICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRy
OwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVy
LCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93
bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdE
b3dubG9hZC5oCmluZGV4IDUyY2M1ZGExMjFhMmZiNTlkOGNmMDU5M2I2ODUwOWZkNjU1YzBjZGMu
LjcxZmQwMjIyOWJiYjFjNTczMjZmZGZjZmUyNmMxMWY3NjFhYmNmNzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9h
ZC5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1Vz
ZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxvd2VkVG9Bc2tV
c2VyRm9yQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
ZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9u
c2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlIHsg
fTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDNmMzllYjMyZjFhYTgw
NzY3ODVkYTc5ZWUxMWRhZDhmMGMzMjZiNzkuLmQ4OTIwZTk4NzY0ZmQ5YjY0YjljZGRjNjBhMWQ4
NGQ2MTliMmQ0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTExOSw3ICsxMTksNyBA
QCB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFj
dGlvbjo6VXNlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpCit2b2lkIE5ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpCiB7CiAgICAgQ09SU19DSEVDS0VSX1JFTEVBU0VfTE9HKCJkaWRSZWNl
aXZlRGF0YSIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggYmJiMTQ2MmEzMTYxZTJmY2U5
ZWE1Nzg0NGIxOWI5M2U2MTljODFiMC4uZTExYmY1NjMxOTA3YWU0NzMzNmVmODVhNWQyMmU4ODM1
NzQ2NTFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lk
IGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25z
dCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmRE
YXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKaW5kZXggZDYwMThmNjEzODNh
ZTNhNTFlOWQ0NzIyY2Y2YTYwZTJkOGI4N2E3ZC4uZTA0OWU1YjEyZGRlNWZlNTFiNDY5NTUyODlh
N2E3ZjY5OTgyYWZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtEYXRhVGFzay5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYzLDcgKzYzLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVj
dENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNo
YWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVn
YWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290
aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlV2l0
aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2
NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5kZXggYmFjMDIyYWI0NTQzMGY2NTFiMTg5
YWMwMTIwN2EwNjA2MDhjMTY3MS4uNzk3NWQ0MWJhZDg5MTVmZWVkYmRhYjE1NTRlODFlMWRiMjAz
MGY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAK
QEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpub3RpZnlEaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdAogICAgIG1fY2xpZW50
LmdldCgpLmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVE
YXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgYmUgdGhlIGVuY29kZWQgZGF0YSBsZW5ndGgsIG5vdCB0aGUgZGVjb2Rl
ZCBkYXRhIGxlbmd0aC4KICAgICBhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRleCBjMzc3M2M5ODc4NTUzY2U1
MzRkMDU0YWJmZmRkZWJiMjllZTA4NGQyLi5lZTVlYjAwNmFhMzc5Yjc4ZmNiYzBiZDE3NGUzMmJk
NjM5Zjk1ZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5o
CkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdv
dGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5l
Z290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1
aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxv
Y2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENsaWVudC5oCmluZGV4IDBhNWY2NmJkOTY3ZWM5ZmRmNjY0ZTUyZTVhZjM5NGU0OGVjZTFm
N2IuLjM0OGNmZmI5ZThlMjVlZTgzYmJiMzlhMDJjZDNjZjZkMjg1NGQzOWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKQEAgLTMyLDcg
KzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgUG9saWN5QWN0aW9uIDogdWlu
dDhfdDsKIH0KIApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9u
ZyB0b3RhbEJ5dGVzVG9CZVNlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZWRp
cmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQmxvY2tBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSgpIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBiZjhmMzU3ZDdhODNlZTUw
Mjg5MWRiMWU1YWJkODQxODRjNjMzNmM4Li43MzE4OWVmZTQzMWJhNzMzM2JhYjJhN2I3NDAzMmQx
MWNiNWZjNjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04NywxNCArODcsMTQgQEAgc3RydWN0IE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSB7CiAgICAgUmVzb3VyY2VFcnJv
ciBlcnJvcjsKIH07CiAKLXN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0
KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSYgZGF0YSwgY29uc3Qg
U2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
K3N0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSYgZGF0YSwgY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAg
ICAgQVNTRVJUKGRhdGEuZGVsYXllZFJlcGx5KTsKICAgICBBU1NFUlQoIWRhdGEucmVzcG9uc2Uu
aXNOdWxsKCkgfHwgIWRhdGEuZXJyb3IuaXNOdWxsKCkpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHJlc3BvbnNlQnVmZmVyOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0gICAg
ICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OworICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAgIGRhdGEucmVzcG9uc2Uuc2V0RGVwcmVj
YXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRlKG1l
dHJpY3MpKTsKIApAQCAtMTA1LDkgKzEwNSwxMSBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5
bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAog
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiBzeW5jaHJvbm91c1JlcGx5
KQogICAgIDogbV9wYXJhbWV0ZXJzIHsgV1RGTW92ZShwYXJhbWV0ZXJzKSB9CiAgICAgLCBtX2Nv
bm5lY3Rpb24geyBjb25uZWN0aW9uIH0KKyAgICAsIG1fYnVmZmVyZWREYXRhIHsgbWFrZVVuaXF1
ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZmlsZVJlZmVyZW5jZXMoY29u
bmVjdGlvbi5yZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9wYXJhbWV0ZXJzKSkKICAgICAsIG1faXNB
bGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMgeyBtX3BhcmFtZXRlcnMuY2xpZW50Q3JlZGVu
dGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVk
ZW50aWFscyB9CiAgICAgLCBtX2J1ZmZlcmluZ1RpbWVyIHsgKnRoaXMsICZOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQgfQorICAgICwgbV9idWZmZXJlZERhdGFGb3JD
YWNoZSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX3No
b3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1cmVF
eHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2FkSUQg
eyBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CkBAIC0zMDYs
MTAgKzMwOCwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9h
ZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgICAgICBjb25zdW1lU2Fu
ZGJveEV4dGVuc2lvbnMoKTsKIAogICAgICAgICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1fcGFy
YW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVmZmVy
ZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWRE
YXRhLT5lbXB0eSgpOwogCiAgICAgICAgIGlmIChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAgICAg
ICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+ZW1wdHkoKTsKICAgICB9CiAKICAg
ICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAgLTcz
MCwyMCArNzMyLDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICAgICB8fCBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL29jdGV0
LXN0cmVhbSIpOwogICAgIH07CiAKLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhCisgICAgaWYgKG1f
YnVmZmVyZWREYXRhLT5pc051bGwoKQogICAgICAgICAmJiBtX3Jlc3BvbnNlLmV4cGVjdGVkQ29u
dGVudExlbmd0aCgpID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPigxICogTUIpCiAgICAgICAgICYm
IGlzRmV0Y2hPclhIUihyZXNvdXJjZUxvYWRJbmZvKQogICAgICAgICAmJiBpc01lZGlhTUlNRVR5
cGUobV9yZXNwb25zZS5taW1lVHlwZSgpKSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwog
ICAgICAgICBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJTdHJh
dGVneTo6bWVkaWFNYXhpbXVtQnVmZmVyaW5nVGltZTsKICAgICB9CiAKICAgICAvLyBGb3IgbXVs
dGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxl
ZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5k
bGluZy4KICAgICBpZiAoIWlzU3luY2hyb25vdXMoKSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0
KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJl
ZERhdGEtPnJlc2V0KCk7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS0+cmVzZXQoKTsKIAogICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxpZGF0
aW9uKSB7CiAgICAgICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKQEAgLTg1OCw3ICs4NjAs
NyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZERpZFJlY2VpdmVSZXNwb25zZVBv
dGVudGlhbGx5SW5OZXdCcm93c2luZ0NvbnRleAogICAgIH0pOwogfQogCi12b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9udW1CeXRl
c1JlY2VpdmVkKQogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVCdWZmZXI6
IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGg9JWQpIiwg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CkBAIC04NjYsMjAgKzg2OCwyMCBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgaW50IHJlcAogCiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9u
KTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CisgICAgaWYgKCFtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLT5pc051bGwoKSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBn
cm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6ZSBvZiBlbnRyaWVz
IGluIHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNp
emUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsKICAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNp
emUpCiAgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdl
dCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9
IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5yZXNldCgpOwog
ICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICAvLyBGSVhNRTogQXQgbGVhc3Qgb24gT1MgWCBZb3NlbWl0ZSB3ZSBhbHdheXMgZ2V0IC0x
IGZyb20gdGhlIHJlc291cmNlIGhhbmRsZS4KICAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0
aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGggOiBidWZmZXItPnNpemUoKTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkgeworICAg
IGlmICghbV9idWZmZXJlZERhdGEtPmlzTnVsbCgpKSB7CiAgICAgICAgIG1fYnVmZmVyZWREYXRh
LT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0
YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKICAgICAgICAgc3RhcnRCdWZmZXJpbmdUaW1l
cklmTmVlZGVkKCk7CkBAIC05MDksMTEgKzkxMSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtM
bwogI2VuZGlmCiAKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQotICAgICAgICBzZW5kUmVwbHlU
b1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0
YS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJv
bm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEtPmdldCgp
LmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIGVsc2UgewotICAgICAgICBpZiAobV9i
dWZmZXJlZERhdGEgJiYgIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYg
KCFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogUGFz
cyBhIHJlYWwgdmFsdWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVkIGRhdGEgc2l6ZSBmZWF0dXJlLgot
ICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEsIC0xKTsKKyAgICAgICAgICAg
IHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLT5nZXQoKSwgLTEpOwogICAgICAgICB9CiAgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxv
YWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQpAQCAtMTI1NCwxOSArMTI1NiwxOSBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCkK
IAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQoKQogewot
ICAgIEFTU0VSVChtX2J1ZmZlcmVkRGF0YSk7CisgICAgQVNTRVJUKCFtX2J1ZmZlcmVkRGF0YS0+
aXNOdWxsKCkpOwogICAgIEFTU0VSVChtX25ldHdvcmtMb2FkKTsKIAogICAgIGlmIChtX2J1ZmZl
cmVkRGF0YS0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEgfSwg
bV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YS0+Z2V0KCkg
fSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwogCi0gICAgbV9idWZmZXJlZERh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgp
OwogICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwogfQogCi12b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6
ZV90IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRC
dWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFM
ZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFpc1N5bmNocm9ub3VzKCkpOwogCkBAIC0xMjc5LDcgKzEy
ODEsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnko
KQogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBOb3Qg
c3RvcmluZyBjYWNoZSBlbnRyeSBiZWNhdXNlIHJlcXVlc3QgaXMgbm90IGVsaWdpYmxlIik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7
CisgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIExP
QURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hl
IGVudHJ5IGJlY2F1c2UgbV9idWZmZXJlZERhdGFGb3JDYWNoZSBpcyBudWxsIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0xMjg3LDEyICsxMjg5LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5Q
cmVmZXRjaCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9jb25uZWN0aW9uLT5u
ZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKSkgewogICAgICAgICAg
ICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogU3RvcmluZyBlbnRy
eSBpbiBwcmVmZXRjaCBjYWNoZSIpOwotICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNo
ZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUo
bV9yZXNwb25zZSksIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAg
ICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRS
ZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUtPnRha2UoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBMT0FE
RVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIEhU
VFAgZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJl
bnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSks
IFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKKyAg
ICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3Bv
bnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT50YWtlKCksIFtsb2FkZXIgPSBSZWYgeyAqdGhp
cyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JF
U09VUkNFKQogICAgICAgICBpZiAobWFwcGVkQm9keS5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZS5p
c051bGwoKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGQyMzRkYWI1YmVlYTVi
NjQ3MzA1NTBjNzczNzBhOWYxNTk1OTdmOTcuLjk4NDQyNGEzMDY4MWEzNjBmYzYwYzllN2E5ZGQ0
ZTZiYjQyNmRlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lW
aW9sYXRpb25FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNDYsNiArNDcsOCBAQCBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBj
bGFzcyBGb3JtRGF0YTsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRC
dWZmZXJCdWlsZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExNCw3ICsxMTcsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7IH0K
ICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lk
IGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAg
dm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7
CiAgICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgZmluYWw7CkBAIC0x
OTIsNyArMTk1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc3RhcnRCdWZmZXJpbmdUaW1lcklm
TmVlZGVkKCk7CiAgICAgdm9pZCBidWZmZXJpbmdUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzZW5k
QnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBz
aXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOwogCiAgICAgdm9pZCBjb25zdW1lU2FuZGJveEV4dGVu
c2lvbnMoKTsKICAgICB2b2lkIGludmFsaWRhdGVTYW5kYm94RXh0ZW5zaW9ucygpOwpAQCAtMjI1
LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jl
c3BvbnNlOwogCiAgICAgc2l6ZV90IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggeyAw
IH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGE7Cisg
ICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyZWREYXRh
OwogICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTeW5jaHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9ub3VzTG9hZERhdGE7CkBAIC0yNDAs
NyArMjQzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVyaW5nVGlt
ZXI7CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBVbmlx
dWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNo
ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5
Rm9yVmFsaWRhdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4g
bV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbjsKICAgICBib29sIG1faXNXYWl0aW5n
Q29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCmluZGV4IDExNDg1M2U0NWI3MjUz
MzY0Yzc0N2E3MWNiMmI1YWI4Y2MzOGVmZDUuLjFhZjFlMDhlM2M0NDFlMjRmMzAwNjVlOWYyMDc3
NmU2ZjlmYzMzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3Bw
CkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVQKICAgICBkaWRGaW5p
c2goeyB9LCByZXNwb25zZSk7CiB9CiAKLXZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKIHsKICAgICBQSU5HX1JFTEVBU0VfTE9HKCJkaWRSZWNl
aXZlRGF0YSIpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4IDE5ZWM4Y2ViOTJlM2M4YTA1NmY0OTI3MzY2MGNmZmY5
MjY0MzQxZDEuLmFiMjlhMGIxYWM4NDY2YjBlZDYxZWY1OGVmNGMyMjBhYmFiNmViZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxs
ZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAg
IHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYs
IGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlk
U2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBl
Y3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCmluZGV4IDQ1NTc4
MmQ1NGEyZWE5YmVlMTg2NTBlMWFmZDFjZjdiMmNlOThjNDkuLjE3ZDQ3OTA3YTNmNmVlNTJiZTY1
MDFkMWRhYjBjYTYwNzUxZDZiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJlY29ubmVjdFRhc2suY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUHJlY29ubmVjdFRh
c2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3Bv
bnNlQ29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogfQog
Ci12b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+
JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBQcmVjb25uZWN0VGFzazo6
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKaW5kZXggMWMx
ZmYxNjQ3MTExYzZmYTg0OTRhZjVjZjBjN2JiZWFhMWIyNjUwMy4uODU4MDhlMTIxYjY4Y2E4Yjcz
ZTI1MThkMTkzYWIzOTU4MWVhZDFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJlY29ubmVjdFRhc2suaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBs
b25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0
ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmco
Y29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRG
YWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCmlu
ZGV4IDcxZTBjZjZjNmRjN2JlYTUyMmM5MDYwMDU1NWY1NzIxNjFjM2MyZjQuLjgxOTY2MzAyMGM2
OTVjZTBjNmFiYTk5OWM2NzVhYWI0MjgyYzdmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcApAQCAtMTc0LDEwICsxNzQsMTAg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXMKICAgICAgICAgY2FsbGJhY2soKTsKIH0KIAotdm9p
ZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2
b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpCiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNrKQotICAgICAgICBtX2JvZHlDYWxs
YmFjayhXVEZNb3ZlKGJ1ZmZlciksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAgICAg
ICBtX2JvZHlDYWxsYmFjayhidWZmZXItPm1ha2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRN
ZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXIuaAppbmRleCAxZTc4YzJjZWZhMTU0ODQxMDQwNjBmM2IxOWRjNTBlNmNiOGYxZWI0Li5l
ZTFiYzhiN2Q2Y2JmZmMzMzQxZDY3M2ZiNzI0MjIzOGY2NzE3ZjJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAtNjcsNyArNjcs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVj
dGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlk
RmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIGJv
b2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3M7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDhlZTEx
MmE5ZGY4Mjg5NTRjMTYyM2ZmZjIyYzJhMjBmZDhlMmZlN2QuLjdhMjYyMjE5ZGU3OGIyMzVkMTI1
YTkyYjZlMjM2ZDMzMjYyZjdhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIFJlc291cmNlRXJyb3Ig
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OnByb2Nlc3NSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKCFtX2Rl
Y29kZXIpIHsKICAgICAgICAgaWYgKCFtX3Jlc3BvbnNlRW5jb2RpbmcuaXNFbXB0eSgpKQpAQCAt
MTg3LDcgKzE4Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgfQogCiAgICAgaWYg
KGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9k
ZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5kYXRhKCksIHNpemUpKTsKKyAgICAgICAgbV9zY3JpcHQu
YXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBzaXplKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZp
bmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgKaW5kZXggMThmNTQ2OTFm
MzdjMmJhYmJjOGMxYTNiYzA5NDM3MGU5YjI5ZWI3MS4uNDRmYzA2ODVmYTBmZWRjODc0MjE5MTZl
OTEzYTY3NGIxYzBmZGJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxs
b3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIGZpbmFsOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9u
c2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFs
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IDA0Nzc2ODM2Zjk5OTA5MzkxMGIzOTlk
NzU1Mzg1NWQ1ZDNmMWZmNGUuLmRkMzA1YWYyOTc2NjFlNDc2YzQ5Njc3ZGY1NzIxZWZkMWVjOTMy
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIENhY2hlOjpjb21wbGV0ZVJldHJp
ZXZlKFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyLCBzdGQ6OnVuaXF1ZV9wdAog
ICAgIGhhbmRsZXIoV1RGTW92ZShlbnRyeSksIGluZm8pOwogfQogICAgIAotc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhKQorc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSkKIHsK
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNw
b25zZSwgV1RGTW92ZShyZXNwb25zZURhdGEpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVl
c3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24obV9zZXNzaW9uSUQpLCBy
ZXF1ZXN0LCByZXNwb25zZSkpOwogfQpAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxFbnRyeT4gQ2FjaGU6Om1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVl
c3QpLCByZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1Jl
cXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24obV9zZXNzaW9uSUQp
LCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hl
OjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiByZXNwb25zZURhdGEsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChyZXNwb25zZURhdGEpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAppbmRleCAxOTlm
MGNmYjczMjU0M2M1ZmVhZjRmZTIzMDFlNmExYzEyZjg4ZmU4Li5lZDA0ZWJjYTBiMzZmM2Y5YzRj
MGU3YmFjNzEzMzZiOWU5NmMzNTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTQzLDcgKzQzLDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIExvd1Bvd2VyTW9kZU5vdGlmaWVyOwogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjYsNyArMTY2LDcgQEAgcHVibGljOgogICAg
IH07CiAgICAgdXNpbmcgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQo
c3RkOjp1bmlxdWVfcHRyPEVudHJ5PiwgY29uc3QgUmV0cmlldmVJbmZvJik+OwogICAgIHZvaWQg
cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJh
bWVJRCYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBSZXRyaWV2
ZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmUo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIEZ1bmN0aW9uPHZvaWQo
TWFwcGVkQm9keSYpPiYmID0gbnVsbHB0cik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBz
dG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmID0gbnVsbHB0cik7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEVudHJ5PiBzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhB
Z2VDYXApOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gdXBkYXRlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEVudHJ5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgdmFsaWRhdGluZ1Jlc3BvbnNlKTsKIApAQCAtMTg1LDcgKzE4NSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJldHJpZXZlRGF0YShjb25zdCBEYXRhS2V5JiwgRnVuY3Rpb248dm9pZChj
b25zdCB1aW50OF90Kiwgc2l6ZV90KT4pOwogICAgIHZvaWQgc3RvcmVEYXRhKGNvbnN0IERhdGFL
ZXkmLCAgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKICAgICAKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8RW50cnk+IG1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlRW50cnkoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RW50cnk+IG1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCk7CiAKICAgICB2b2lkIGR1bXBDb250
ZW50c1RvRmlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBiYTM5ZDllMmMyNmEwMWE5MjZiMTFh
YTc5OWUzNjYyZmM2YWUwNTQ5Li43NjEwNzhkZWEwOTNjMDQ1NTViZTk4YjA1MTczZTM0MTUwNjdh
ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYktp
dCB7CiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAotRW50cnk6OkVudHJ5KGNvbnN0IEtleSYg
a2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3Ry
aW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKQorRW50cnk6OkVudHJ5KGNvbnN0
IEtleSYga2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBWZWN0
b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycykKICAg
ICA6IG1fa2V5KGtleSkKICAgICAsIG1fdGltZVN0YW1wKFdhbGxUaW1lOjpub3coKSkKICAgICAs
IG1fcmVzcG9uc2UocmVzcG9uc2UpCkBAIC0xMDEsOCArMTAxLDEwIEBAIFN0b3JhZ2U6OlJlY29y
ZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKIAogICAgIERhdGEgaGVhZGVy
KGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKICAgICBEYXRhIGJvZHk7
Ci0gICAgaWYgKG1fYnVmZmVyKQotICAgICAgICBib2R5ID0geyBtX2J1ZmZlci0+ZGF0YSgpLCBt
X2J1ZmZlci0+c2l6ZSgpIH07CisgICAgaWYgKG1fYnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVy
ID0gbV9idWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGJvZHkgPSB7IHN0YXRpY19j
YXN0PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcio+KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1
ZmZlci0+c2l6ZSgpIH07CisgICAgfQogCiAgICAgcmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1w
LCBoZWFkZXIsIGJvZHksIHsgfSB9OwogfQpAQCAtMTk0LDcgKzE5Niw3IEBAIHZvaWQgRW50cnk6
OmluaXRpYWxpemVCdWZmZXJGcm9tU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAgICAgbV9idWZmZXIg
PSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NvdXJjZVN0b3JhZ2VSZWNvcmQuYm9k
eS5kYXRhKCksIG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LnNpemUoKSk7CiB9CiAKLVdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciogRW50cnk6OmJ1ZmZlcigpIGNvbnN0CitXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBFbnRyeTo6YnVmZmVyKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYnVm
ZmVyKQogICAgICAgICBpbml0aWFsaXplQnVmZmVyRnJvbVN0b3JhZ2VSZWNvcmQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50
cnkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50
cnkuaAppbmRleCA5NjkxNWMzODAxYzM3ZGRhYzNlOGU2MDMyMWY4OGMyMjI5Y2Q1OWEwLi45YzA0
MjBkNDRhODE1OGRmYzViMjFjZjE4ODIwNGNmM2E5MTZiNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCkBAIC0z
NSw3ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3Bh
Y2UgTmV0d29ya0NhY2hlIHsKIGNsYXNzIEVudHJ5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBFbnRyeShjb25zdCBLZXkmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVmVj
dG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOwor
ICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVmVjdG9yPHN0
ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOwogICAgIEVu
dHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgVmVjdG9yPHN0
ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOwogICAgIGV4
cGxpY2l0IEVudHJ5KGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYpOwogICAgIEVudHJ5KGNvbnN0IEVu
dHJ5Jik7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KICAg
ICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0
SGVhZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJzOyB9CiAKLSAg
ICBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0OworICAgIFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0OwogICAgIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiYgcmVkaXJlY3RSZXF1ZXN0KCkgY29uc3Qg
eyByZXR1cm4gbV9yZWRpcmVjdFJlcXVlc3Q7IH0KIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVT
T1VSQ0UpCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxT
dHJpbmcsIFN0cmluZz4+IG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJzOwogCiAgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IG1fcmVkaXJlY3RSZXF1ZXN0OwotICAgIG11
dGFibGUgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgbXV0YWJs
ZSBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAjaWYg
RU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICBtdXRhYmxlIFNoYXJlYWJsZVJlc291cmNl
OjpIYW5kbGUgbV9zaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IGFkMDlkZjQ0ZDlhZjEyZmQ0MDgwMzEwNTQ2ODM1
MzZlYTBkYzgxOTMuLjdiMGFkYzQwZjBiMGI2NzE0NzFhMjdhYjUxMzk3NjZkNGI1NTU0NDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2
b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2Um
JiByZWNlaXZlZFJlc3BvbnNlLCBSZQogICAgIG1fcmVzcG9uc2UgPSByZWNlaXZlZFJlc3BvbnNl
OwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUu
cmVzZXQoKTsKIAogICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKICAgICBpZiAodmFsaWRh
dGlvblN1Y2NlZWRlZCAmJiBtX2NhY2hlRW50cnkpCkBAIC0xMjAsMTcgKzEyMCwxNyBAQCB2b2lk
IFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiBy
ZWNlaXZlZFJlc3BvbnNlLCBSZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6
VXNlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9p
ZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBB
U1NFUlQoIW1fY2FjaGVFbnRyeSk7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkg
ewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcg
ZGF0YS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSAxMCAq
IDEwMjQgKiAxMDI0OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgp
ICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBp
ZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhp
bXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5h
cHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLnJlc2V0KCk7CiAgICAgfQogfQogCkBAIC0xMzksMTAgKzEzOSwxMCBAQCB2b2lkIFNwZWN1
bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmKQogICAgIGlmIChtX2RpZENvbXBsZXRlKQogICAgICAgICByZXR1cm47CiAgICAgaWYg
KCFtX2NhY2hlRW50cnkgJiYgbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewotICAgICAgICBtX2Nh
Y2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5jb3B5UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsg
fSk7CisgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1
ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmdldCgpLCBbXShhdXRvJiBt
YXBwZWRCb2R5KSB7IH0pOwogICAgICAgICAvLyBDcmVhdGUgYSBzeW50aGV0aWMgY2FjaGUgZW50
cnkgaWYgd2UgY2FuJ3Qgc3RvcmUuCiAgICAgICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIGlzU3Rh
dHVzQ29kZUNhY2hlYWJsZUJ5RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpKQot
ICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxS
ZXF1ZXN0LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAg
ICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVx
dWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwogICAgIH0K
IAogICAgIGRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRl
eCBjMGUxZTE0YjJhYzQ2MDM1OGY4MTQwN2NkNzBjNDA5MDUyYWY4ZWZlLi4xYjg0M2RiN2VjMjcw
ZGI5ZGFiOWU4YTI1ZjJhNDhhOGVjYWUyYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNr
VXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRl
OgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAgICBi
b29sIG1fZGlkQ29tcGxldGUgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCmluZGV4IDVlMmUwMmUyZmJh
MGI0YTBjMDNiNWQzZTY2Yjk3ZjdiY2NjNzk1OGIuLjMxOTliZmYzMTFiNmMzZWVmYmU5NTBiNDVl
NmIwYTk2ZTMyNzc3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotUHJlZmV0Y2hDYWNoZTo6RW50cnk6OkVudHJ5KFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCitQcmVmZXRjaENhY2hlOjpFbnRyeTo6RW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiAgICAgOiByZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSksIGJ1ZmZlcihXVEZNb3Zl
KGJ1ZmZlcikpCiB7CiB9CkBAIC03Miw3ICs3Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQcmVmZXRj
aENhY2hlOjpFbnRyeT4gUHJlZmV0Y2hDYWNoZTo6dGFrZShjb25zdCBVUkwmIHVybCkKIAogc3Rh
dGljIGNvbnN0IFNlY29uZHMgZXhwaXJhdGlvblRpbWVvdXQgeyA1X3MgfTsKIAotdm9pZCBQcmVm
ZXRjaENhY2hlOjpzdG9yZShjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25QcmVmZXRj
aGVzKQogICAgICAgICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gbWFrZVVuaXF1ZTxQcmVmZXRjaEVu
dHJpZXNNYXA+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL1ByZWZldGNoQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
UHJlZmV0Y2hDYWNoZS5oCmluZGV4IGEyNTE1MjBiMzFlYWM5MjFjMjJkMzExNTFkNmQyMzFhMWJl
ZDEzOGMuLjUyYzBiMTBmY2M2ZDVhNmRlMTE0NDdlN2U0ZTgyMmRmOGY4NDFjYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCkBA
IC00NywxOCArNDcsMTggQEAgcHVibGljOgogCiAgICAgc3RydWN0IEVudHJ5IHsKICAgICAgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBFbnRyeShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAg
ICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICAgICAgRW50cnkoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAKLSAgICAgICAgUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVsZWFzZUJ1ZmZlcigpIHsgcmV0dXJuIGJ1ZmZlci5y
ZWxlYXNlTm9uTnVsbCgpOyB9CisgICAgICAgIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiByZWxlYXNlQnVmZmVyKCkgeyByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7
IH0KIAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgICAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZWRpcmVjdFJlcXVlc3Q7CiAgICAgfTsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxFbnRyeT4gdGFrZShjb25zdCBVUkwmKTsKLSAgICB2b2lkIHN0b3JlKGNvbnN0IFVS
TCYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJik7CisgICAgdm9pZCBzdG9yZShjb25zdCBVUkwmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAg
ICB2b2lkIHN0b3JlUmVkaXJlY3QoY29uc3QgVVJMJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLmgKaW5kZXggYjlhYjBkZWViYjlmOTI3YzczNzQyZTg2YTBiZTdmOTcxNjBiZDZmYi4uNDE2
NjhhNWIxY2Q3Mzg2OTY3YjhmZDk3M2U5NjczMmVjYTkwN2VkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
aApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWROZWdvdGlhdGVNb2Rlcm5U
TFMoY29uc3QgVVJMJik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jik7CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxl
dGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCB0cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25s
b2FkKERvd25sb2FkJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCBlNzgwZDZjMWMzY2QxZWIy
YzJmZjVhMGM1NjRhMGU0ZDg4YjdlYTVkLi4zMDUxZjE2OWNiMGEzNzA5OTg1YTE2MTEyMmMyNWYw
ZThmMTdiZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lk
IE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcgogICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJy
b3IoZXJyb3IsIG5ldHdvcmtMb2FkTWV0cmljcyk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNr
Q29jb2E6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSkK
K3ZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgV1RGRW1pdFNpZ25wb3N0KG1f
dGFzay5nZXQoKSwgIkRhdGFUYXNrIiwgInJlY2VpdmVkICV6ZCBieXRlcyIsIGRhdGEtPnNpemUo
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrRGF0YVRhc2tDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9O
ZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAppbmRleCA4ZmM3YjY2M2U2Zjc1NjJiMmIzNTQ4OTM5OGEy
ZmU3MzFiZTA3NGYxLi4zN2YyOTQxNjY0NmM0N2UxZGExZmQ5OTQxY2NhYzAwYjVkYzBmZDIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFU
YXNrQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdv
cmtEYXRhVGFza0N1cmwuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tDdXJsOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJs
UmVzcG8KICAgICBpbnZva2VEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0KIAotdm9pZCBOZXR3b3Jr
RGF0YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkUmVj
ZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKIHsKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAgICAgaWYgKHN0YXRl
KCkgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCBzdGF0ZSgpID09IFN0YXRlOjpDb21wbGV0ZWQgfHwg
KCFtX2NsaWVudCAmJiAhaXNEb3dubG9hZCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCmluZGV4IDFjNDI3ZGRi
NzhkNjk1M2ZlODk2MGM1NjkyYWZkZTRmNGYwZWVlODUuLjQ1YmU1Y2UxODQzMjUyNzFkNWMwODBk
ZDM0ZjFlZTRhMTY2NDJhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2
YXRlOgogICAgIFJlZjxXZWJDb3JlOjpDdXJsUmVxdWVzdD4gY3JlYXRlQ3VybFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlcXVlc3RTdGF0dXMgPSBSZXF1ZXN0U3RhdHVzOjpO
ZXdSZXF1ZXN0KTsKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShXZWJDb3JlOjpDdXJsUmVxdWVz
dCYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKICAg
ICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJD
b3JlOjpDdXJsUmVzcG9uc2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1
ZmZlcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
IG92ZXJyaWRlOworICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6Q3VybFJl
cXVlc3QmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdp
dGhFcnJvcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiwg
V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCmlu
ZGV4IGY1ZGI3MDZjNDQ1ODAyMTA4N2Y5NTk5NjY5ZGZhN2Q5ZjgzNzk3OGMuLjMzZDQzYjcyMjM4
ZDIwM2U3ZWRlYzk0MTRjYWY5ZmRhOGY0MDUyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCkBAIC01NSw3
ICs1NSw3IEBAIHN0cnVjdCBQYWNrZXRPcHRpb25zOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCBkZjhlZTMwYzQz
YzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxLi5mNjc2Njg4NTdmZjVjMmU1MzJkNWI0YjUx
NGYyZTJjZjQ5Zjc2MmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcApAQCAtNTEsOSArNTEsOSBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1
ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
IElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAg
aWYgKGRhdGEuc2l6ZSgpKQotICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBidWZmZXIgPSBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4g
eyBXVEZNb3ZlKGJ1ZmZlcikgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDdlMGQ4ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2M2E2ZTNk
ZjE4MzJlOWYuLmJlNjhkOWUyNmEwNDgwN2E1NjBhNjcyOTg5Mjc1MjYzZmM3YzFiMzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTIzLDcg
KzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBF
bmNvZGVzIGEgU2hhcmVkQnVmZmVyIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBjb3B5IG9mIHRoZSBk
ZWNvZGVkIGRhdGEgaW4gYSBuZXcgU2hhcmVkQnVmZmVyLgorLy8gRW5jb2RlcyBhIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIgdGhhdCBpcyByZWNlaXZlZCBhcyBhIGNvcHkgb2YgdGhlIGRlY29kZWQg
ZGF0YSBpbiBhIG5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgogLy8gVG8gYXZvaWQgY29weWlu
ZyBmcm9tIHRoZSBEZWNvZGVyLCB1c2UgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB0byByZWNl
aXZlIGEgRGF0YVJlZmVyZW5jZSBpbnN0ZWFkLgogCiAjcHJhZ21hIG9uY2UKQEAgLTM5LDE1ICsz
OSwxMiBAQCBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5IHsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZm
ZXJDb3B5KCkgPSBkZWZhdWx0OwogCi0gICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1
ZmZlcikpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KLSAg
ICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQot
ICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAg
ewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlcik7Ci0gICAgfQorICAgIFNoYXJlZEJ1
ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+KCkpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNv
cHkoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAg
ICA6IG1fYnVmZmVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSkgeyB9CisgICAgU2hhcmVkQnVm
ZmVyQ29weShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCisg
ICAgICAgIDogbV9idWZmZXIoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpIHsgfQogCiAgICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9
CiAgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKaW5kZXggZDNkMGVjNWU5Nzg1NTk5YjYz
NGE4NGM2YzQ0NzFiNTJjZDIyMTNmMS4uNjdlYzhlNWU5MmJkMDI0MTE1ZGIwZDQwODBhMjRmZTcz
NTcwZDNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaApAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIEVuY29kZXMgYSBTaGFyZWRCdWZmZXIgb3Ig
RGF0YVJlZmVyZW5jZSB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgRGF0YVJlZmVyZW5jZSB0byB0aGUg
ZGVjb2RlZCBkYXRhLgorLy8gRW5jb2RlcyBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgb3IgRGF0
YVJlZmVyZW5jZSB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgRGF0YVJlZmVyZW5jZSB0byB0aGUgZGVj
b2RlZCBkYXRhLgogCiAjcHJhZ21hIG9uY2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRN
ZW1vcnkuY3BwCmluZGV4IGQyNDA2ZWUyOTA1MzExZjY5Yjc1ODQyMWU3N2EzZTY2Y2JhMjdiNjUu
LmMwMjZmNTQ5NTY5YjJiZTAwNzhhZTMyNWQwNTM5ZTA3MWFmMTEwNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWZQdHI8U2hhcmVkTWVtb3J5
PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitS
ZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUxLDcgKzUxLDcgQEAgUmVmUHRyPFNoYXJlZE1l
bW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6
ZV90IGRhdGFTaXplKSBjb25zdAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXplKCkpOwot
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfV0gKCkgLT4gY29uc3QgdWludDhfdCogewogICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihwcm90ZWN0ZWRUaGlzLT5kYXRhKCkpOwog
ICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1v
cnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggZTM3MWJj
ZDczMDJjZjg1ZWJhYjJiNWE4NWU3YmU0OWRjZjU2NTJhYi4uMWI0ZmRmYWY2ODM4OWRjZTcyOGZm
MzRlNWU1ZjAxMmUyNDNmYTJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9T
aGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5o
CkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIEVuY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAK
ICNpZiBPUyhEQVJXSU4pCkBAIC0xMjAsNyArMTIxLDcgQEAgcHVibGljOgogCiAgICAgLy8gRklY
TUU6IENoYW5nZSB0aGVzZSBmYWN0b3J5IGZ1bmN0aW9ucyB0byByZXR1cm4gUmVmPFNoYXJlZE1l
bW9yeT4gYW5kIGNyYXNoIG9uIGZhaWx1cmUuCiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1v
cnk+IGFsbG9jYXRlKHNpemVfdCk7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGNv
cHlCdWZmZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0
cjxTaGFyZWRNZW1vcnk+IGNvcHlCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpOwogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtYXAoY29uc3QgSGFu
ZGxlJiwgUHJvdGVjdGlvbik7CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHdyYXBNYXAodm9pZCosIHNpemVfdCwgaW50IGZpbGVE
ZXNjcmlwdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hp
dmVSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJj
ZS5tbQppbmRleCBjYTBjMjRiMjc3MzU0NzY3NmUzNDgwMWM3OWExZDU2NWJmOTVmZTVkLi4xMTBl
MGFkZGU1NThhOWQ5MzM4YjI0NTA2ZTg5MTYzYzkzNjk3MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRp
YyB2b2lkIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhKHVuc2lnbmVkIGNoYXIqLCBjb25z
dCB2b2lkKiBkYXRhKQogCiBSZWY8QVBJOjpEYXRhPiBXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEo
KQogewotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNl
LT5kYXRhKCkuY3JlYXRlQ0ZEYXRhKCk7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRh
ID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRh
dGEoKTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IENGUmVsZWFzZSBpbiByZWxlYXNlV2ViQXJjaGl2
ZVJlc291cmNlRGF0YS4KICAgICBDRlJldGFpbihjZkRhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5t
bQppbmRleCA4N2Y0ZWIxZWJhMjg3MmUwY2IwYWI5NTkxNmFmZWRlMjlmY2JhMjQ0Li4zYzFiNTdk
NWFhMjZlYzcyZTYwYjVkNzhhMTFlOWZkODUyY2ZmZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAt
NTY0LDEzICs1NjQsMTIgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRh
PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY28KICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgqaW5jbHVkZXNDcmVhdGlvbkRhdGEpIHsKLSAgICAg
ICAgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRh
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAg
ICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgICAgIC8vIFVwb24gcmVjZWlwdCwgY29weSB0aGUgZGF0YSBmb3Igc2VjdXJpdHks
IHNvIHRoZSBzZW5kZXIgY2FuJ3Qgc2NyaWJibGUgb3ZlciBpdCB3aGlsZSB3ZSdyZSB1c2luZyBp
dC4KLSAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5kYXRhKCksIGZvbnRGYWNlRGF0YS52YWx1
ZSgpLT5zaXplKCkpOworICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gZm9udEZhY2VE
YXRhLnZhbHVlKCktPm1ha2VDb250aWd1b3VzKCk7CiAKICAgICAgICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGRlY29kZXIgPj4gaXRlbUluQ29sbGVj
dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCBj
Njk2MWM3MTQ0MDJiZjM3N2FlOTEwZmJiNmNjYWE1MmQzYjg0MTI4Li42ZmEwMmE3YmMzZWU1NGFl
NmQzMjUzODEwZDc4ZGVjMzE2NTM1M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVh
YmxlUmVzb3VyY2UuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6
OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAK
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZm
ZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERh
dGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7
IHJldHVybiBzZWxmLT5kYXRhKCk7IH0sCiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0o
KSB7IHJldHVybiBzZWxmLT5zaXplKCk7IH0KICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDY0OTgyYmM0ODEwMmE0YWRiMjBh
N2U2MGUyMWJkNDkyZDY1MzM3NGMuLjg0M2ZkNDczMTNhZWVjYTI5OTMwNjEyZmM1ZWM1Nzg3NTU0
MzQyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIERFRklORV9TSU1QTEVfQVJHVU1FTlRfQ09ERVJfRk9S
X1NPVVJDRShEaXNwbGF5TGlzdDo6U2V0SW5saW5lU3Ryb2tlQ29sb3IpCiAKICN1bmRlZiBERUZJ
TkVfU0lNUExFX0FSR1VNRU5UX0NPREVSX0ZPUl9TT1VSQ0UKIAotc3RhdGljIHZvaWQgZW5jb2Rl
U2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVy
KQorc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICBib29sIGlzTnVsbCA9ICFi
dWZmZXI7CiAgICAgZW5jb2RlciA8PCBpc051bGw7CkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGlj
IHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1
ZmZlciogYnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICNpZiBVU0UoVU5JWF9ET01BSU5fU09D
S0VUUykKLSAgICAvLyBEbyBub3QgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIFNoYXJlZEJ1ZmZlciBl
bmNvZGluZyBpbiBVbml4LCBiZWNhdXNlIGl0J3MgZWFzeSB0byByZWFjaCB0aGUKKyAgICAvLyBE
byBub3QgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgZW5jb2Rp
bmcgaW4gVW5peCwgYmVjYXVzZSBpdCdzIGVhc3kgdG8gcmVhY2ggdGhlCiAgICAgLy8gbWF4aW11
bSBudW1iZXIgb2YgZmlsZSBkZXNjcmlwdG9ycyBvcGVuIHBlciBwcm9jZXNzIHdoZW4gc2VuZGlu
ZyBsYXJnZSBkYXRhIGluIHNtYWxsIGNodW5rcwogICAgIC8vIG92ZXIgdGhlIElQQy4gQ29ubmVj
dGlvblVuaXguY3BwIGFscmVhZHkgdXNlcyBzaGFyZWQgbWVtb3J5IHRvIHNlbmQgYW55IElQQyBt
ZXNzYWdlIHRoYXQgaXMKICAgICAvLyB0b28gbGFyZ2UuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NTcxLgpAQCAtMjY0LDcgKzI2NCw3IEBAIHN0YXRpYyBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2Rl
ciwgVmVjdG9yPFN0cmluCiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAg
ICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsK
KyAgICAgICAgZGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTE1NTAsMTAgKzE1NTAsMTAgQEAgdm9pZCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpFbnRyeT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdAogICAgIGlmICho
YXNTdHJpbmcpCiAgICAgICAgIGVuY29kZXIgPDwgc3RkOjpnZXQ8U3RyaW5nPihwbGF0Zm9ybURh
dGEpOwogCi0gICAgYm9vbCBoYXNCdWZmZXIgPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxT
aGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpOworICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0
YSk7CiAgICAgZW5jb2RlciA8PCBoYXNCdWZmZXI7CiAgICAgaWYgKGhhc0J1ZmZlcikKLSAgICAg
ICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+
PihwbGF0Zm9ybURhdGEpLnB0cigpKTsKKyAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29k
ZXIsIHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKS5w
dHIoKSk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50
cnk+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5
JiBkYXRhKQpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0
YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUp
LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
IH19OworICAgIHJldHVybiB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlw
ZSksIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSkgfSB9OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTMw
MTAsNiArMzAxMCwzNCBAQCBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVW
YWx1ZT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkUAogfQogI2VuZGlmCiAKK3Zv
aWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29k
ZXIsIGJ1ZmZlci5nZXQoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBi
dWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZl
cjsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIo
ZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1
ZmZlcikgfHwgIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJl
dHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwogdm9pZCBBcmd1bWVudENvZGVyPFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgZW5jb2Rl
U2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7CkBAIC0zMTA3LDcgKzMxMzUsNyBA
QCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdl
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZQogewogICAgIGVuY29kZXIgPDwgbWVzc2FnZS5maXJz
dDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5zZWNv
bmQuY29weVJlZigpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdl
RGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlSZWYoKTsKICAgICBlbmNvZGVyIDw8IG1lc3NhZ2VE
YXRhOwogfQogCkBAIC0zMTE3LDcgKzMxNDUsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSQog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZl
cikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAyNWYwMWMwMjkyYTAx
OWYwNjc2MjRiYmI1NTM0MDJkZjFhMzNjNWI2Li42ZmFjMmFhMWVhNzg0NmZmNmJmODkwMjFmMGY1
MmU5YWE3YWUwM2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaApAQCAtMTE0LDYgKzExNCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDb2xvcjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uOwogY2xhc3MgQ3Vyc29yOwpAQCAtMTM4LDcgKzEzOSw3IEBAIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRC
dWZmZXI7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTcHJpbmdUaW1pbmdGdW5jdGlvbjsKIGNs
YXNzIFN0ZXBzVGltaW5nRnVuY3Rpb247CiBjbGFzcyBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29u
c3RyYWludHM7CkBAIC03NTEsNiArNzUyLDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiB7CiB9OwogI2Vu
ZGlmCiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhp
dFRlc3RSZXN1bHREYXRhLmNwcAppbmRleCBjZjJlNGQ1ZjkzZmQyZDk0NmJhYmZmOTNlZWEzZTll
ODYwYWViYmY0Li5iNjA3YWNlODM4ZTA0YmNlMWE2YWVlNGRhNTY1NTllMDk2OTgzOThlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCkBAIC04NSw3
ICs4NSw3IEBAIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0YShjb25z
dCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoaXRUZXN0CiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChJbWFnZSogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKTsKKyAgICAgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7CiAgICAgICAg
IGlmIChidWZmZXIpIHsKICAgICAgICAgICAgIGltYWdlU2hhcmVkTWVtb3J5ID0gV2ViS2l0OjpT
aGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CiAgICAgICAgICAgICBpbWFnZVNpemUg
PSBidWZmZXItPnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9B
cmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRD
b2RlcnNHdGsuY3BwCmluZGV4IDI1YTMwN2YzODI5ZTkyNzhiNWVhNzhmZjgyOTY3ODgzMzc3YTMx
YmEuLjY3MTc1OGEyODBhNWU0NDBhYTA2MGE3OWNmMWYwZjEyNmRiN2JlMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtOTUsNyArOTUs
NyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBTZWxlY3Rpb25EYXRhJgogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSA9IHNl
bGVjdGlvbi5oYXNDdXN0b21EYXRhKCk7CiAgICAgZW5jb2RlciA8PCBoYXNDdXN0b21EYXRhOwog
ICAgIGlmIChoYXNDdXN0b21EYXRhKQotICAgICAgICBlbmNvZGVyIDw8IFJlZlB0cjxTaGFyZWRC
dWZmZXI+KHNlbGVjdGlvbi5jdXN0b21EYXRhKCkpOworICAgICAgICBlbmNvZGVyIDw8IFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihzZWxlY3Rpb24uY3VzdG9tRGF0YSgpKTsKIAogICAg
IGJvb2wgY2FuU21hcnRSZXBsYWNlID0gc2VsZWN0aW9uLmNhblNtYXJ0UmVwbGFjZSgpOwogICAg
IGVuY29kZXIgPDwgY2FuU21hcnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IGIzNGVjNzM2MzYzYzRmMWQyYjBlNzYwYWQzZjRh
OWQ1YmFjMWEzNGUuLjE0OTBjNTExYmRjMzhiZDhhYjRhNjk1YWVjZjMwNmQ5NWZhYTM5NjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTk4
LDcgKzk4LDcgQEAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gQXR0YWNobWVudDo6ZmlsZVNpemVG
b3JEaXNwbGF5KCkgY29uc3QKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1SZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBj
b25zdAorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6
OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBhZmE5Mjlj
ZjA5M2QyMmVjNzZhZDg2ZmRhMDNiNTAxYmJmZDI5ZGMzLi5mZTUwZTUzOGI4ZWJiMzUxYTQ4MzZk
MWRkODkzZDE0N2E1NmE4NzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmgKQEAgLTM5LDYgKzM5LDcgQEAgT0JKQ19DTEFTUyBOU1N0cmluZzsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04Miw3ICs4Myw3IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCi0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3Q7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0
OwogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplRm9yRGlzcGxheSgpIGNvbnN0
OwogCiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xvc2luZ0ltYWdl
KSB7IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaApp
bmRleCA4ODIwNGYwMDEzNjc4NjA0NWE1YjMyYTczYzY3OGEwYmE4NTA2ODFjLi44ZGI3MDM4YzFj
OTAxNmRhZGZiZjRiNWVhMDk5OGM0ODc5MWY1NzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaApAQCAtMzAsNyArMzAs
NyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
fQogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJTmF2aWdhdGlvbkNsaWVudC5oCmluZGV4IDU2MjM0MDE0NTlkYTVmZTMwZjQ5MWE0MWZiMzQ3
YTY3NTcyMDJjNDAuLjExMWYwOTI2M2Y4MjIzODI5YTVhZDI2NDQzNGJhNDIwZjE5OGRkMWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQu
aApAQCAtNDcsNyArNDcsNyBAQCBzdHJ1Y3QgQ29udGVudFJ1bGVMaXN0UmVzdWx0czsKIGNsYXNz
IFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiB9CiAKQEAgLTExOSw3ICsxMTksNyBAQCBw
dWJsaWM6CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmls
ZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIHsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFJlZjxOYXZpZ2F0aW9uQWN0aW9u
PiYmLCBSZWY8V2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIs
IE9iamVjdCopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
QVBJQXR0YWNobWVudENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L0FQSUF0dGFjaG1lbnRDb2NvYS5tbQppbmRleCBjZjQ2MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMw
NzkxZThkNGUxNTNjLi5kZmVmM2UwNzBmOTYxNjMwNDk3MTQ0ZGFmM2YzMDBjYjRjYTUxOTVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVu
dENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRh
Y2htZW50Q29jb2EubW0KQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBBdHRhY2htZW50OjpmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdAogICAgIHJldHVybiBbZmls
ZVdyYXBwZXIgcmVndWxhckZpbGVDb250ZW50c10ubGVuZ3RoOwogfQogCi1SZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAor
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xv
c2luZ0ltYWdlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2hhc0VuY2xvc2luZ0ltYWdlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGM0ZWU1MjUwNzY0MmRiNGU1NGNmYWRmN2ZlZTNiZjFi
N2MwZDNkM2MuLjAxYzgxMDI3OGVmNjM1OTE3MmY4ZTY1YjUyY2ZjYjBiNTIxYjdkODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTU5
Niw3ICsxNTk2LDcgQEAgLSAodm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6
OkFwcEhpZ2hsaWdodCYpaGlnaGxpZ2h0CiAgICAgaWYgKGhpZ2hsaWdodC50ZXh0KQogICAgICAg
ICB0ZXh0ID0gaGlnaGxpZ2h0LnRleHQudmFsdWUoKTsKIAotICAgIGF1dG8gd2tIaWdobGlnaHQg
PSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdo
bGlnaHQuaGlnaGxpZ2h0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmls
XSk7CisgICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxs
b2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAogICAgIGlm
IChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzdG9yZUFw
cEhpZ2hsaWdodDppbk5ld0dyb3VwOnJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAgICAgICAg
IFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIHN0b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0Lmdl
dCgpIGluTmV3R3JvdXA6aGlnaGxpZ2h0LmlzTmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRlTmV3
R3JvdXBGb3JIaWdobGlnaHQ6OlllcyByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdodC5y
ZXF1ZXN0T3JpZ2luYXRlZEluQXBwID09IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5h
dGVkSW5BcHA6Olllc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5oCmluZGV4IGFjNGEwZjQzNzAxNTJlZDU3MmI1MDkxZGZhNTFiYWViYWI4N2Y0
ZTkuLmM4MDI5YzE0MGE2ZGQxNGIxOTY0OTIyNWI4NzgzMGVlYzEzNDAwZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCkBAIC0xMzMsNyAr
MTMzLDcgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgICAgICB2b2lkIGRp
ZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJp
bmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSBvdmVycmlkZTsKLSAgICAgICAg
dm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkaWRGaW5pc2hM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpp
bmRleCAzODU1ODgyYzg3ZGM5ZWQzMWMxZWYwYmFiNjE2YjFlNjQ1OTQ0ZWVmLi44ZDNhODU2NDYy
ZWFlZjc0MWQ4YzI5ZTI1OTJmZDU3MzY2ZjU5OWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0xMjIwLDcgKzEyMjAsNyBAQCB2
b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkU3RhcnRMb2FkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcgogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9u
RGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25h
dmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWVXaXRoRmlsZU5hbWU6ZmlsZU5hbWUgdXRpOnV0aV07CiB9CiAKLXZvaWQgTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTIz
Miw3ICsxMjMyLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRp
ZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkYKICAgICBpZiAoIW5hdmlnYXRp
b25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW3N0YXRpY19jYXN0PGlkIDxXS05h
dmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJW
aWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKKyAgICBb
c3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25E
ZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRG
aW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIubWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5k
ZXggODAyZmZhYTZkNmVkYmVhMmU5NzI3NzRlMjY5NjViMmRiYjJhNzM1ZS4uM2VhMjE1NjAzNzg5
ZTFiMGIyNGU1YjU1OTlkMzc1MTk3ZjU5NTJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTMwNiw3ICszMDYs
NyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZEF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9u
cygpCiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJlZ2lz
dHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVn
aXN0cmF0aW9ucy5nZXQoKSk7CiAgICAgICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6
V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyh7IHJlZ2lzdHJh
dGlvbkRhdGEgfSksIDApOwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCmluZGV4IDNmNmRkMWYyNDJlN2ExMTVlY2Y3OTgz
OTBmMzRiNjM1YzZlOGQ2ZjkuLmY1ODkxMjQxNzAyZGFhNDIwY2M0ZTZlMjQ2MjhhMWNkZTg5MDdk
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaApAQCAt
NTA2LDcgKzUwNiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0IFdlYkNv
cmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlKTsKICAg
ICB2b2lkIHNldEZpbGVBbmRVUkxUeXBlcyhOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpl
eHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2li
bGVVUkwsIE5TUGFzdGVib2FyZCAqKTsKLSAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdl
KFdlYkNvcmU6OkltYWdlKiwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9u
LCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJk
TmFtZSwgTlNTdHJpbmcgKnBhc3RlYm9hcmRPcmlnaW4pOworICAgIHZvaWQgc2V0UHJvbWlzZWRE
YXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5n
ICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZp
c2libGVVUkwsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIs
IE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKnBhc3RlYm9hcmRPcmlnaW4pOwog
ICAgIHZvaWQgcGFzdGVib2FyZENoYW5nZWRPd25lcihOU1Bhc3RlYm9hcmQgKik7CiAgICAgdm9p
ZCBwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICosIE5TU3RyaW5nICp0eXBl
KTsKICAgICBOU0FycmF5ICpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9u
KE5TVVJMICpkcm9wRGVzdGluYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbQppbmRleCAzZDllODc3YjBjYjc1NjU0YjYzOTE2Mzk1NTdmNTJiNjAz
OTJjYWM5Li42MjM2N2RjNWFkMWZlMTIyMWY3YjA5OWU5YmI0NDU0ZGIzN2E1OGVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtNDQ0OSw3ICs0
NDQ5LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0RmlsZUFuZFVSTFR5cGVzKE5TU3RyaW5nICpm
aWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlMKICAgICBtX3Byb21pc2VkVVJMID0gdXJs
OwogfQogCi12b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3Jl
OjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwg
TlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJsZVVSTCwgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyKiBhcmNoaXZlQnVmZmVyLCBOU1N0cmluZyAqcGFzdGVib2FyZE5h
bWUsIE5TU3RyaW5nICpvcmlnaW5JZGVudGlmaWVyKQordm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJv
bWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW5h
bWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwg
TlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGFy
Y2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKm9yaWdpbklk
ZW50aWZpZXIpCiB7CiAgICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW05TUGFzdGVib2Fy
ZCBwYXN0ZWJvYXJkV2l0aE5hbWU6cGFzdGVib2FyZE5hbWVdOwogICAgIFJldGFpblB0cjxOU011
dGFibGVBcnJheT4gdHlwZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRX
aXRoT2JqZWN0czpXZWJDb3JlOjpsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpLCBu
aWxdKTsKQEAgLTQ0NzAsNyArNDQ3MCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2Vk
RGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuCiAgICAg
c2V0RmlsZUFuZFVSTFR5cGVzKGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2li
bGVVUkwsIHBhc3RlYm9hcmQpOwogCiAgICAgaWYgKGFyY2hpdmVCdWZmZXIpIHsKLSAgICAgICAg
YXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0
byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIFtwYXN0ZWJv
YXJkIHNldERhdGE6bnNEYXRhLmdldCgpIGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VU
VHlwZVdlYkFyY2hpdmVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECkBAIC00
NTAxLDcgKzQ1MDEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9h
cmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU1N0cmluZyAqdAogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbDptX3Byb21pc2VkSW1hZ2UtPnV0aSgpXSAmJiBtX3By
b21pc2VkSW1hZ2UtPmRhdGEoKSkgewotICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBt
X3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRv
IHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6KF9fYnJp
ZGdlIE5TRGF0YSAqKXBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnR5cGVdOwogICAgIH0KIApA
QCAtNDU1NCw3ICs0NTU0LDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNl
ZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBkYXRhOwogCiAgICAgaWYgKG1fcHJvbWlzZWRJbWFnZSkgewotICAgICAgICBk
YXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBk
YXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpOwogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2Nd
IGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhLmdldCgpXSk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bV9wcm9taXNlZFVSTF0gb3B0aW9uczpOU0ZpbGVXcmFw
cGVyUmVhZGluZ0ltbWVkaWF0ZSBlcnJvcjpuaWxdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAppbmRleCBjNDg1YzdmYzMxM2VhMDgzM2ZjNjA2MjY3MTY5ZDY5MmE4MjQwOTI4Li5i
NDYyZDhkYjVjYzYyMDM4NmU3NjgzZGIyNDgzNmFiM2NlNjRmZWZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0zMjgsNyArMzI4LDcgQEAgcHVibGljOgogI2VuZGlmCiAK
ICNpZiBVU0UoQVBQS0lUKQotICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFn
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4
dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZl
QnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBS
ZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBj
b25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVh
bCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvRGV2aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCBiMDQ1MzlkNjAwNWQ1NDNiYzYyZmI4OTA1OTk2NDY4OTMyYTMzZTkyLi42ZTQ5YWNiOGE3YTZi
N2UzYjg2NGE4MWJhNGJkN2NkNmY4M2VjZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMjU5LDcgKzI1OSw3IEBAIGNsYXNzIEludFNpemU7CiBjbGFzcyBQcm90
ZWN0aW9uU3BhY2U7CiBjbGFzcyBSdW5Mb29wT2JzZXJ2ZXI7CiBjbGFzcyBTZWxlY3Rpb25EYXRh
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDsKIGNsYXNzIFRleHRJbmRpY2F0b3I7CiBjbGFz
cyBWYWxpZGF0aW9uQnViYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmNwcAppbmRleCBkZjU5ZDU2ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQx
Li4xOTk3ZWFlMjBhYzIyY2EzYWU4MDA0YzcwNGZhMjJkYTYwOWUwMDlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtNTEsNiArNTEsNyBAQCBX
ZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImIGhh
bmRsZXIsIFdlYlBhZ2VQcm94eSYgcAogICAgICwgbV9yZXF1ZXN0KFdURk1vdmUocGFyYW1ldGVy
cy5yZXF1ZXN0KSkKICAgICAsIG1fZnJhbWVJbmZvKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RG
TW92ZShwYXJhbWV0ZXJzLmZyYW1lSW5mbyksICZwYWdlKSkKICAgICAsIG1fc3luY0NvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUoc3luY0NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAsIG1fc3luY0Rh
dGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiB9CkBAIC0xNjgsNyArMTY5LDcgQEAgYXV0byBXZWJVUkxTY2hl
bWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpIC0+IEUKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0KIAotYXV0byBXZWJV
UkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikg
LT4gRXhjZXB0aW9uVHlwZQorYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xODcsMTAgKzE4OCw3IEBAIGF1
dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpIC0+IEV4Y2VwdGlvblR5CiAgICAgbV9kYXRhU2VudCA9IHRydWU7CiAKICAgICBpZiAo
aXNTeW5jKCkpIHsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBtX3N5bmNE
YXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
bV9zeW5jRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwog
ICAgIH0KIApAQCAtMjE3LDEyICsyMTUsOSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENv
bXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAg
bV9jb21wbGV0ZWQgPSB0cnVlOwogICAgIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAg
ICBkYXRhID0geyBtX3N5bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwotCisg
ICAgICAgIHNpemVfdCBzaXplID0gbV9zeW5jRGF0YS0+c2l6ZSgpOworICAgICAgICBWZWN0b3I8
dWludDhfdD4gZGF0YSA9IHsgbV9zeW5jRGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIHNpemUgfTsKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9zeW5jUmVz
cG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKLSAgICAgICAgbV9zeW5jRGF0YSA9IG51bGxw
dHI7CiAgICAgfQogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxT
Y2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1f
cmVzb3VyY2VMb2FkZXJJRCwgZXJyb3IpLCBtX3dlYlBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggNmE4NTYwMjFiMTI5OTI0NmM3MDAwOTNk
ZDBhNDdmMmMxMzA4NTI2Ny4uNzk5NDJmOWIyMGEyNjYwY2E0YTdkY2Q0NTAxOGQxNmU0M2I2NjZm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEZyYW1lSW5mbzsKQEAgLTQzLDcgKzQ0LDggQEAg
Y2xhc3MgRnJhbWVJbmZvOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC04NCw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRp
b25UeXBlIHdpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFBlcmZvcm1SZWRpcmVj
dGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2Vp
dmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBFeGNl
cHRpb25UeXBlIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAog
ICAgIHZvaWQgc3RvcCgpOwpAQCAtMTE1LDcgKzExNyw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5j
TG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyQnVpbGRlcj4gbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKaW5kZXggNzg2NmNkYjE3NzQ2MDA3YWIwYTdhMTdjNTVi
ODdjN2YxNjRjMmJhZS4uNzI3OWY4NDRjYzJiYmQyYjAxN2ZlMGYwOTdkZTAxODcwYTlhODUyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaApAQCAtMzYsNyArMzYsNyBA
QCB0eXBlZGVmIHN0cnVjdCBfR3RrQ2xpcGJvYXJkIEd0a0NsaXBib2FyZDsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb3JtYXRzKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwogICAgIHZvaWQgcmVhZFRleHQoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwogICAgIHZvaWQgcmVhZEZpbGVQYXRocyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2b2lkIHJlYWRC
dWZmZXIoY29uc3QgY2hhciosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJik+JiYpOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBjaGFyKiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jik+JiYpOwogICAgIHZvaWQgd3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKTsKICAgICB2
b2lkIGNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9D
bGlwYm9hcmRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRH
dGszLmNwcAppbmRleCBjMmJmNTE4M2IzMGYxMGU5ZWI3ODEzY2RhZGEyMjNlOTE4OWM3NDU5Li41
OTY2ZDU1NzRjMjgyZjUzMTY5NDA5NjA4Mjk2MGFlMzM5Y2ExMTBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCkBAIC0xMjYsMTUgKzEyNiwxNSBA
QCB2b2lkIENsaXBib2FyZDo6cmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZQogc3RydWN0IFJlYWRCdWZmZXJBc3luY0RhdGEgewog
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGV4cGxpY2l0IFJlYWRC
dWZmZXJBc3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKT4mJiBoYW5kbGVyKQorICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJBc3luY0RhdGEo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJik+JiYgaGFuZGxlcikKICAgICAgICAgOiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhh
bmRsZXIpKQogICAgIHsKICAgICB9CiAKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKKyAgICBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4g
Y29tcGxldGlvbkhhbmRsZXI7CiB9OwogCi12b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25z
dCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENsaXBib2FyZDo6cmVhZEJ1
ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGd0a19jbGlwYm9hcmRfcmVxdWVzdF9jb250ZW50cyhtX2NsaXBib2FyZCwgZ2RrX2F0b21f
aW50ZXJuKGZvcm1hdCwgVFJVRSksIFtdKEd0a0NsaXBib2FyZCosIEd0a1NlbGVjdGlvbkRhdGEq
IHNlbGVjdGlvbiwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFJlYWRCdWZmZXJBc3luY0RhdGE+IGRhdGEoc3RhdGljX2Nhc3Q8UmVhZEJ1ZmZlckFzeW5jRGF0
YSo+KHVzZXJEYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
Q2xpcGJvYXJkR3RrNC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJk
R3RrNC5jcHAKaW5kZXggMDdhYmI3MTMxOTg4NTNiNzg3YzYzMjRiZDQ4MGIxZTA4OGEyYTNkMy4u
NWI4MWZhOGYyOWQzZjdjZjFjM2YwOWQxZmMzYzg4NzM0ZGM1MWEwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcApAQCAtMTIwLDE1ICsxMjAsMTUg
QEAgdm9pZCBDbGlwYm9hcmQ6OnJlYWRGaWxlUGF0aHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGUKIHN0cnVjdCBSZWFkQnVmZmVyQXN5bmNEYXRhIHsK
ICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAKLSAgICBleHBsaWNpdCBSZWFk
QnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKKyAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpPiYmIGhhbmRsZXIpCiAgICAgICAgIDogY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSho
YW5kbGVyKSkKICAgICB7CiAgICAgfQogCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+
IGNvbXBsZXRpb25IYW5kbGVyOwogfTsKIAotdm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29u
c3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDbGlwYm9hcmQ6OnJlYWRC
dWZmZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBjb25zdCBjaGFyKiBtaW1lVHlwZXNbXSA9IHsgZm9ybWF0LCBudWxscHRyIH07CiAgICAg
Z2RrX2NsaXBib2FyZF9yZWFkX2FzeW5jKG1fY2xpcGJvYXJkLCBtaW1lVHlwZXMsIEdfUFJJT1JJ
VFlfREVGQVVMVCwgbnVsbHB0ciwgW10oR09iamVjdCogY2xpcGJvYXJkLCBHQXN5bmNSZXN1bHQq
IHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggZDIyMzhmZGM5ZDE2Zjc3ZjhjM2QzMDJj
YTk5NzZmZTgzZjFiM2YzNy4uYWI4N2MyYTdlOGMzNTdhNjViM2NmZTYwNzkzOGZkZmVjOGE2NTJi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
TWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
LmgKQEAgLTEwMCw4ICsxMDAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZXhlY3V0ZVVuZG9SZWRv
KFVuZG9PclJlZG8pIG92ZXJyaWRlOwogICAgIGJvb2wgZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2Vs
ZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3Rvcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdGFydERy
YWcoY29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0mLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYgaW1hZ2UpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBp
bWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNp
b24sIGNvbnN0IFN0cmluZyYgdGl0bGUsCi0gICAgICAgIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYXJj
aGl2ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3Ry
aW5nJiB0aXRsZSwKKyAgICAgICAgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlz
aWJsZVVSTCwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYXJjaGl2
ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2
b2lkIHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0U2Vj
dXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5SW5wdXRDb250ZXh0QWJv
dXREaXNjYXJkZWRDb21wb3NpdGlvbigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IGE0MTEyMTM1ZjJlZjE5MDE1
YTUyZjFlMWIwM2FlMzBhMWYyMjNkMmEuLmMzNjNlOTU1ZTg3OWMwZTE4NmI0MTUwOTA5MTMzNjVj
MjBmZTkwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW0KQEAgLTQwMCw3ICs0MDAsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzdGFy
dERyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0mIGl0ZW0sIGNvbnN0IFNoYXJlYWJsZUJpdAog
ICAgIG1faW1wbC0+c3RhcnREcmFnKGl0ZW0sIGltYWdlKTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50
SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgYXJjaGl2ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQordm9pZCBQ
YWdlQ2xpZW50SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJp
bmcmIG9yaWdpbklkZW50aWZpZXIpCiB7CiAgICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpj
cmVhdGUoKTsKICAgICBpbWFnZS0+c2V0RGF0YShXVEZNb3ZlKGltYWdlQnVmZmVyKSwgdHJ1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFj
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRl
eCBlMDNlMDgwYWVlMDgzODBiNDZmZmU4OWRkOGU2MWI2NmI1OThkYjQ2Li4wMWQ4NDBhMmE2M2Vh
Yzc5MWZiZDg0ZmJlNjM3YjViMjhjZjYxMzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUwogICAgICAgICByZXR1cm47CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHNo
YXJlZE1lbW9yeUltYWdlLT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1hZ2VIYW5kbGUuZGF0YVNpemUp
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKICAgICBpZiAoIWFyY2hpdmVI
YW5kbGUuaGFuZGxlLmlzTnVsbCgpKSB7CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QXJjaGl2
ZSA9IFNoYXJlZE1lbW9yeTo6bWFwKGFyY2hpdmVIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnlBcmNoaXZl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3Bw
CmluZGV4IGZhOTQwMjVlZDc0NzMwZDI4ZTcxNjQ2Mjg1ZjllNWJhNjUzYjhmMTIuLmMyOGZlNjVm
MGNmMTY0Mzk5ODE4YWNhMzJmOTgxY2M3NzhmMWU5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgYm9v
bCBSZW1vdGVDRE06OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBD
RE1TZXNzaW9uVHlwZSYsIGNvbnMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVtb3Rl
Q0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkgY29uc3QKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEp
IGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjaGVjayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBpbnNpZGUg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlcXVlc3RMaWNlbnNlKCkuCiAgICAgcmV0
dXJuIHRydWU7CkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBSZW1vdGVDRE06OmxvYWRBbmRJbml0
aWFsaXplKCkKICAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpMb2FkQW5kSW5pdGlhbGl6ZSgpLCBt
X2lkZW50aWZpZXIpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBSZW1vdGVDRE06OnNhbml0
aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBj
aGVjayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBpbnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHk6OnVwZGF0ZUxpY2Vuc2UoKS4KICAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKaW5kZXggMGFk
ZGY4MzM1M2I2ZWExYjJlOGIwMmM2YjdlZTNkYWY0NjhjZDM4My4uOGM0NTRlYjgzZTU5OTRhOGU0
ZDU5MmQ1MWRmOTFmZjliNTIzY2JlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETS5oCkBAIC00OCwxMyArNDgsMTMgQEAgcHJpdmF0ZToKICAgICBi
b29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25X
aXRoUmVzdHJpY3Rpb25zKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBib29s
IHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1T
ZXNzaW9uVHlwZSYsIGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBj
b25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYs
IGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50
IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29u
c3QgZmluYWw7CiAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVx
dWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZGlzdGlu
Y3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBXZWJD
b3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CiAgICAgUmVmUHRy
PFdlYkNvcmU6OkNETUluc3RhbmNlPiBjcmVhdGVJbnN0YW5jZSgpIGZpbmFsOwogICAgIHZvaWQg
bG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGNvbnN0
IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25z
dCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29u
c3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKICAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9y
dGVkSW5pdERhdGFUeXBlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5z
dXBwb3J0ZWRJbml0RGF0YVR5cGVzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCmluZGV4IGI1ZGVhMjFlOTk1
YTczN2YwMzZmNjQ1MzhjMWZiM2VjYjVlNmJiNTUuLmExM2U1MTQ2MGY2YmI5ZjgwZWYzZDFhODQy
ZWZjMGI5ZjQ0NTkwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJD
b3JlOjpDRE1LZXlTeXN0ZW1DCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3Rh
bmNlUHJveHk6OkluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBkaXN0
aW5jdGl2ZUlkZW50aWZpZXJzLCBwZXJzaXN0ZW50U3RhdGUpLCBXVEZNb3ZlKGNhbGxiYWNrKSwg
bV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vz
c0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZp
Y2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2ZhY3Rvcnkp
IHsKICAgICAgICAgY2FsbGJhY2soRmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaAppbmRleCAxMDZiYTNiMTE2
MWM4ZGYwOWQ3MWRmZTY3OWJhMzNkNDIzMDc5ZTk2Li4yYzc4NTFlNDQwYjA4YTUyYTJhZTcwZGE3
ZTQxODg4MmUzYzYxNDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6
CiAKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpSZW1vdGU7IH0KICAgICB2b2lkIGluaXRp
YWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0
ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNh
dGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFs
OworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0
b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24ua2V5U3lzdGVt
OyB9CiAgICAgUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lv
bigpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCmluZGV4IGFmMGJhZDRjOTBk
OGRkNTEzNzc0YWVmNmExNWI3N2JhODlmYzUwNjQuLmM3NDBjMDQ1MDZmZGVkYWM5ZjRjZjUwMmMy
MDVhOGEzN2ZjYTQ1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKQEAgLTQ5LDcg
KzQ5LDcgQEAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b24oV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGYKIHsKIH0KIAotdm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGlj
ZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNh
bGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsKICAgICAgICAgY2Fs
bGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxl
ZCk7CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1
ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nCiAgICAgfSwgbV9p
ZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQor
dm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBp
ZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2
b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIExpY2VucwogICAgIH0KIAogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklk
LCB0eXBlKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChLZXlTdGF0dXNWZWN0b3Im
JiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+JiYgbWVz
c2FnZSwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJl
ZjxTaGFyZWRCdWZmZXI+PiByZWFsTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gc3Rk
OjpudWxsb3B0OwogICAgICAgICBpZiAobWVzc2FnZSAmJiBtZXNzYWdlLnZhbHVlKCkuYnVmZmVy
KCkpCiAgICAgICAgICAgICByZWFsTWVzc2FnZSA9IG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKS5y
ZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwg
V1RGTW92ZShyZWFsTWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24uaAppbmRleCA0ZmZlNGNhY2VjY2RlNDNkNWNiMTFlMjM2Y2Ew
NDVhY2RhODNhN2ViLi40ZTRjZDJjMDA1YzZiMDA2NWY5Y2RiMTg4YzRiY2UwYjViZmE2NjAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTU5LDggKzU5LDggQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xp
ZW50PiYmIGNsaWVudCkgZmluYWwgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsgfQogICAg
IHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0cjsgfQotICAgIHZv
aWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxi
YWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2Us
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikg
ZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBM
aWNlbnNlVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9u
c2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9u
KExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiBvcmln
aW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24o
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vu
c2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkYuY3BwCmluZGV4IDlhMjE5YTU0NGU1NTM4M2Y1NGU3MWRhYmQzNTRjYzQ0MGE0MTQyYjku
LjYyOTI2Nzk4YzVjMTEzMjRhMzFhYTUwY2RhN2VkMWZiZjc0ZmU3MDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRi5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFW
Rjo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZQog
CiAvLyBJZiBhbGxEYXRhUmVjZWl2ZWQgaXMgdHJ1ZSwgdGhlIGNhbGxlciBleHBlY3RzIGVuY29k
ZWREYXRhU3RhdHVzKCkgdG8gYmUgPj0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGUK
IC8vIGFmdGVyIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAoaW4gdGhlIHNhbWUgcnVuIGxvb3ApLgot
dm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXREYXRh
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewog
ICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkYuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGLmgKaW5kZXggZTVjZmU5NGVjZDNhOWMwNjAwZmMwMDMyMGZmNDMwNjFjOTBlZDY5
Yi4uNDBkMzczNGY3YTMyMmU4YmFjYjlkMWMwZGVhNzA3OWUyYWQxN2VhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRi5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFJlbW90ZUltYWdlRGVjb2RlckFWRiBm
aW5hbAogICAgIDogcHVibGljIFdlYkNvcmU6OkltYWdlRGVjb2RlcgogICAgICwgcHVibGljIENh
bk1ha2VXZWFrUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGUoUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
TWFuYWdlciYgbWFuYWdlciwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciYg
aWRlbnRpZmllciwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlKFJlbW90ZUlt
YWdlRGVjb2RlckFWRk1hbmFnZXImIG1hbmFnZXIsIGNvbnN0IFdlYkNvcmU6OkltYWdlRGVjb2Rl
cklkZW50aWZpZXImIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGKG1hbmFnZXIsIGlkZW50aWZpZXIsIG1pbWVUeXBl
KSk7CiAgICAgfQpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6UGxhdGZv
cm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFdlYkNvcmU6OlN1YnNh
bXBsaW5nTGV2ZWwgPSBXZWJDb3JlOjpTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBX
ZWJDb3JlOjpEZWNvZGluZ09wdGlvbnMmID0gV2ViQ29yZTo6RGVjb2RpbmdPcHRpb25zKFdlYkNv
cmU6OkRlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhw
ZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwotICAgIHZvaWQgc2V0RGF0YShXZWJD
b3JlOjpTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9p
ZCBzZXREYXRhKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZm
ZXJDYWNoZShzaXplX3QpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2Vy
LmNwcAppbmRleCA0MWQ1Mzg4MDIzZDM5MTQ5NTIxODM1ZjY4OGRlNGQ0OGY2NWQ3NjdlLi4wODJi
MzM2NmM4YmM3MTMwZDc1ZDU2OThhN2Q3OWU2ODkyYWQ4ZjczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGTWFuYWdlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVy
QVZGPiBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIoU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCitSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBSZW1vdGVJbWFnZURlY29kZXJB
VkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAg
IHN0ZDo6b3B0aW9uYWw8SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4gaW1hZ2VEZWNvZGVySWRlbnRp
ZmllcjsKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSB7
IGRhdGEgfTsKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRk1h
bmFnZXI6OnNldFVzZUdQVVByb2Nlc3MoYm9vbCB1c2VHUFVQcm9jZXNzKQogICAgIEltYWdlRGVj
b2Rlcjo6aW5zdGFsbEZhY3RvcnkoewogICAgICAgICBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnN1
cHBvcnRzTWVkaWFUeXBlLAogICAgICAgICBSZW1vdGVJbWFnZURlY29kZXJBVkY6OmNhbkRlY29k
ZVR5cGUsCi0gICAgICAgIFt0aGlzXShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikgeworICAgICAgICBbdGhpc10oRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRp
b24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKSB7CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW1hZ2VEZWNvZGVyKGRh
dGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwog
ICAgICAgICB9CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oCmluZGV4
IGMyMzc4MmI2NTA0ZWM3OWJlNDZlMTI2ZjRlNTkxYjNmZjdmNmRiYTguLjM2MThhZmQxMjA5OGI1
NTc2YjRkZDRmZmJmM2MwNmZiYTg0MmE3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFu
YWdlci5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBHUFVQcm9jZXNzQ29ubmVjdGlv
biYgZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGVJbWFnZURlY29kZXIoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpBbHBoYU9wdGlv
biwgV2ViQ29yZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIFJlZlB0cjxSZW1v
dGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZUltYWdlRGVjb2RlcihXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpBbHBo
YU9wdGlvbiwgV2ViQ29yZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgLy8g
R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudC4KICAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0
aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb24uY3BwCmluZGV4IGE1M2YxNTdiZWViZDdkYjJlODFiMmY1ZWNiZDYzODE4NjJhNjgwOGEu
LmYxZDFjMTBhNmU1YzNhYjJiODEzMjNjMDRkYWMwNTcyODZlOWZkNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uLmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgSVBDOjpTaGFyZWRCdWZmZXJD
b3B5IGNvbnZlcnRUb1NoYXJlZEJ1ZmZlckNvcHkoVCBhcnJheSkKIHsKICAgICBpZiAoIWFycmF5
KQogICAgICAgICByZXR1cm4geyB9OwotICAgIHJldHVybiB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpIH07CisgICAgcmV0dXJuIHsgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVu
Z3RoKCkpIH07CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uPiBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5PiBmYWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYmIGlkZW50aWZp
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA5NjZmYzkzYjc3YWZhYTNl
NjIwOGQ3YWJhNWFlZDJjN2E5NGM3NGIyLi4wMDVhMzdjYzI2ZWM0YzA5MDFiZjRmMzcxMjIzODY1
ZGUyZDE2NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTc4LDcgKzc4
LDcgQEAgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6flNvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGUoKQogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIudG9V
SW50NjQoKSk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6YXBwZW5kKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6
YXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKCFt
X2dwdVByb2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZS5oCmluZGV4IDM2MDE3NWJmYmU5ZDFhZjgzZWQ1NzkxMzczYjc3NWVlNzUwYWM3Y2Mu
LmVhNWZhM2VjMzZjMmI4NTllZTU3OGNjZDBlMDM0OGM3M2NiODZkNjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBTb3Vy
Y2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcwogICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wpIGZpbmFs
OwotICAgIHZvaWQgYXBwZW5kKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwor
ICAgIHZvaWQgYXBwZW5kKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNldFBhcnNlclN0YXRl
KCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVy
UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJl
Y29yZGVyUHJpdmF0ZS5jcHAKaW5kZXggMTFiNGE4NmU0ODUyZjZjMjA2MWZhM2ZjOWFmMjlmODg5
OWY0ZWI5Zi4uYjQwODlmZDM1NDhjOTdmMTdmYzJiOWZiMDAyNzgwZDY0M2NmMjNiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclBy
aXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlh
UmVjb3JkZXJQcml2YXRlLmNwcApAQCAtMTY1LDEwICsxNjUsMTAgQEAgdm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZTo6c3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KiBzdG9yYWdlLCBjb25zdCBX
ZWJDb3JlOjoKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVj
b3JkZXI6OkF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkIHsgU2hhcmVkTWVtb3J5OjpJUENIYW5k
bGUgeyBXVEZNb3ZlKGhhbmRsZSksIGRhdGFTaXplIH0sIGZvcm1hdCwgZnJhbWVDb3VudCB9LCBt
X2lkZW50aWZpZXIpOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpmZXRjaERhdGEo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9jb25uZWN0
aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OkZl
dGNoRGF0YSB7IH0sIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBtaW1lVHlwZSA9IG1pbWVUeXBlKCldKGF1dG8mJiBkYXRhLCBkb3VibGUgdGltZUNvZGUp
IG11dGFibGUgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmIChkYXRh
LnNpemUoKSkKICAgICAgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
ZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
YnVmZmVyKSwgbWltZVR5cGUsIHRpbWVDb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCmluZGV4IDMw
M2E1NGY3NmYxODVlOTY0NTRlZjlmNWJiNDYxZjI4ZTEyNjc4NmQuLjU3NmZkMWM2ZTk3YzBjYWQ4
Y2JmZWM5NGUzYmQzNjMzMDc2ZTQ0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaApAQCAtNTcsNyAr
NTcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQ
cml2YXRlCiAgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpNZWRpYVNhbXBs
ZSYsIFdlYkNvcmU6OlZpZGVvU2FtcGxlTWV0YWRhdGEpIGZpbmFsOwotICAgIHZvaWQgZmV0Y2hE
YXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJikgZmluYWw7CisgICAgdm9pZCBm
ZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJikgZmlu
YWw7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikg
ZmluYWw7CiAgICAgdm9pZCBzdGFydFJlY29yZGluZyhTdGFydFJlY29yZGluZ0NhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IFdURjo6TWVkaWFU
aW1lJiwgY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBXZWJDb3JlOjpB
dWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCAwNjczZjc0ZGRmYjQ4ZTVi
ZGY0MzhjZDkwYmUzNzk0ZWVlMjA5MWJiLi4wMzUzYWFiZjdkNGI5MjVhYTJmMTU2MmQ1NzNhYWYz
MDkzYzgzYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRv
ckNsaWVudC5oCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERv
Y3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3Mg
U3R5bGVQcm9wZXJ0aWVzOwogc3RydWN0IFNpbXBsZVJhbmdlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggYTA2MzUy
MDQzMzViM2FiMGU2ZGZiMGM2Nzc3NjdmNDI4ZThhNzdlMi4uMTgwYjExMTFlY2YwMTEzMjgwOTI2
NmExYmNlMjdkMjYwZTRmYTAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIERPTVdp
bmRvd0V4dGVuc2lvbjsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIFJlc291cmNlRXJy
b3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU2LDcg
KzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflBhZ2VMb2FkZXJDbGllbnQoKSA9IGRlZmF1
bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdlYktpdDo6V2ViUGFn
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIEFQSTo6T2JqZWN0KikgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29u
c3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6VVJMJiwgQVBJ
OjpPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJL
aXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0
cmluZyYsIGNvbnN0IFdURjo6VVJMJiwgQVBJOjpPYmplY3QqKSB7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZSYsIFdl
YktpdDo6V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdl
YktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IDhkNTI0YjUyNWM2ZTdhMGNjNmJkZTVlODBhNDdjMTcxZTM0MTQ2OGMuLjNmNDFiMWYzMzhm
YTQ0NDc0OTA3NDgxODliYjg5OTUxY2YxYjE3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC02NSwxNSArNjUsMTYgQEAgc3RhdGljIHZv
aWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkK
ICAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSkt
PmRlcmVmKCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxs
TG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYg
dW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xp
ZW50LndpbGxMb2FkRGF0YVJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxB
UEk6OkRhdGE+IGRhdGE7CiAgICAgaWYgKHNoYXJlZEJ1ZmZlcikgewotICAgICAgICBzaGFyZWRC
dWZmZXItPnJlZigpOwotICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29w
eWluZygoY29uc3QgdW5zaWduZWQgY2hhciopc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1
ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBzaGFyZWRCdWZmZXIpOworICAgICAg
ICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCk7
CisgICAgICAgIGNvbnRpZ3VvdXNCdWZmZXItPnJlZigpOworICAgICAgICBkYXRhID0gQVBJOjpE
YXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hhciopY29udGlndW91
c0J1ZmZlci0+ZGF0YSgpLCBjb250aWd1b3VzQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRC
dWZmZXIsIGNvbnRpZ3VvdXNCdWZmZXIucHRyKCkpOwogICAgIH0KIAogICAgIG1fY2xpZW50Lndp
bGxMb2FkRGF0YVJlcXVlc3QodG9BUEkoJnBhZ2UpLCB0b0FQSShyZXF1ZXN0KSwgdG9BUEkoZGF0
YS5nZXQoKSksIHRvQVBJKE1JTUVUeXBlLmltcGwoKSksIHRvQVBJKGVuY29kaW5nTmFtZS5pbXBs
KCkpLCB0b1VSTFJlZih1bnJlYWNoYWJsZVVSTC5zdHJpbmcoKS5pbXBsKCkpLCB0b0FQSSh1c2Vy
RGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggMzZiZDk4MGIyZmFhMWFmNDVhYzMxMDZlYjAx
ZTlmMzc2YmExM2FjZi4uODYzYmRhYjYyODRjYTNhYWQyZjlkNWZmZjVmZDY4ZWFiOGIyYjczMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50KGNvbnN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJhc2UqKTsKIAogICAgIHZvaWQg
d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwotICAgIHZvaWQgd2lsbExvYWREYXRhUmVxdWVz
dChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0
IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsTG9hZERhdGFSZXF1
ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0
cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRy
PEFQSTo6T2JqZWN0PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRy
PEFQSTo6T2JqZWN0PiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQ
bGF5ZXJNYWMubW0KaW5kZXggZTUyNGQ4ZTFiMDE3YWE4ZTVlMDNiODkyZDkyYjc1ODk0YzU4ZjM3
NC4uYTc4NGVjMzg4YjIyNTI0Y2MwZGE2MzI3OGU1ZTc1OTEzN2RjZjY2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2Rl
bFBsYXllck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FS
S2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9p
ZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRlRmlsZShXZWJDb3JlOjpN
b2RlbCYgbW9kZWxTb3VyY2UpCiAgICAgaWYgKGZpbGUgPD0gMCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5k
YXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmls
ZShmaWxlKTsKICAgICBtX2ZpbGVQYXRoID0gZmlsZVBhdGg7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmNwcAppbmRleCA0N2I5MWNlODdkMzYxM2UzNWQ1Nzk0MDc5N2FkZjBiMWRkMDBhNDhiLi45
Y2Q2NWFjYTM4ZGM1MThhZjIyN2ZhZTQwOWVkYWNiMDE5NDA0NmYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5jcHAKQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCiAg
ICAgCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNo
YXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKSB7Ci0gICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUg
Zm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMi
LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMjU5NDQ5NDIzODU1ZmVkM2FhYWFiNDE0ODE5Zjg5
NTFhM2I4YjdmZi4uMzEwZmNhNzg3NWMzMmMzY2Q3NDc4ZGI2NGY1OWFjMmNmNTAxNjM5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vCiAg
ICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVz
cG9uc2UobV9jb3JlTG9hZGVyLT5mcmFtZSgpLCByZXNwb25zZSkpIHsKICAgICAgICAgYXV0byBp
bnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyID0gbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCk7
CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5iZWdpbkludGVyY2VwdGluZ1Jlc3BvbnNl
KGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJhbWUoKSwg
cmVzcG9uc2UsIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgcG9saWN5
RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0
aW9uSGFuZGxlcildKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGluc3BlY3RvclJlc3BvbnNlLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGEpIG11dGFibGUgeworICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKG1fY29yZUxvYWRl
ci0+ZnJhbWUoKSwgcmVzcG9uc2UsIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRp
ZmllciwgcG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUocG9saWN5RGVj
aXNpb25Db21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGluc3BlY3Rv
clJlc3BvbnNlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXIt
PmlkZW50aWZpZXIoKSkgewogICAgICAgICAgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVB
U0VfTE9HKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBjb250aW51aW5nIGludGVyY2VwdCBsb2Fk
IGJlY2F1c2Ugbm8gY29yZUxvYWRlciBvciBubyBJRCIpOwogICAgICAgICAgICAgICAgIG1faW50
ZXJjZXB0Q29udHJvbGxlci5jb250aW51ZVJlc3BvbnNlKGludGVyY2VwdGVkUmVxdWVzdElkZW50
aWZpZXIpOwpAQCAtMjk1LDExICsyOTUsMTEgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmQKICAg
ICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc291cmNlIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEo
KS5kYXRhKCkpOwogICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZl
UmVzb3VyY2U6Iik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUu
dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIGlmICgh
YnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIgZnJv
bSBTaGFyZWFibGVSZXNvdXJjZSBzZW50IGZyb20gdGhlIG5ldHdvcmsgcHJvY2Vzcy4iKTsKLSAg
ICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZTog
VW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIiKTsKKyAgICAgICAgV0VCUkVTT1VSQ0VMT0FE
RVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZTogVW5hYmxlIHRvIGNyZWF0ZSBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyIik7CiAgICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IG1fY29yZUxv
YWRlci0+ZnJhbWUoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFn
ZSgpKQogICAgICAgICAgICAgICAgIHBhZ2UtPmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9n
RGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnRlcm5h
bEVycm9yS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6Y3JlYXRlU2hhcmVk
QnVmZmVyRmFpbGVkS2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4IDQyZGU0
NjE0MTk3NzhiN2M0NTBmY2ExZWIwMzdjMWNlOTdkMmQ2MzEuLmE3ZjQ1Yzg0MDFiMmZkMmY4NzBl
MzY3OGM1OGZjMzEwYzJlMWYyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTIwNyw3ICsyMDcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wpIGZpbmFsIHsgfQogICAgIGJv
b2wgZ2V0Rm9ybVZhbHVlKFN0cmluZyYgZm9ybVZhbHVlKSBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQogICAgIGJvb2wgaGFuZGxlU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29y
ZTo6U2Nyb2xsR3JhbnVsYXJpdHkpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IGZpbmFs
OwogICAgIHZvaWQgd2lsbERldGFjaFJlbmRlcmVyKCkgZmluYWw7CiAgICAgYm9vbCBwbHVnaW5I
YW5kbGVzQ29udGVudE9mZnNldEZvckFjY2Vzc2liaWxpdHlIaXRUZXN0KCkgY29uc3QgZmluYWw7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQppbmRleCBkMjNhYmI5ZTY1MTFiMTNiYmQ1MjNhZjQ1MWY0NDE3ODczYTZjMWUwLi5k
NDdmMzJiN2Q0OTE5NTZiZGNlNzdiZmU2ZjE1Y2E3ODY1YmZkMTllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTI1NTIsNyAr
MjU1Miw3IEBAIHZvaWQgUERGUGx1Z2luOjpub3RpZnlEaXNwbGF5TW9kZUNoYW5nZWQoaW50KQog
ICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUERGUGx1
Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBQREZQbHVnaW46OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIE5TRGF0YSAq
cGRmRGF0YSA9IGxpdmVEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luLmgKaW5kZXggODhmNDVjZTUxY2UzMWRmMGM1YjNiNzU4NjIzNmMzZjBkOWM5M2FkMy4u
NThkNzBhMzlhMTZkNmE0YzBlOGIwY2E5ZDAzYWMzZDM3YWVkZmNlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTYxLDcgKzYxLDcgQEAgY2xhc3MgSW50
UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFNjcm9sbGJhcjsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjg4LDcgKzI4OCw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydFRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHBvaW50SW5Mb2NhbENvb3JkaW5hdGVzKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBs
aXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1E
aWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgPSAw
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CmluZGV4IGQ1NGYyN2YwNzA5MTQ3ZTllZGVjMDZkZTU4YzFlOGNjMTIzMWE2NzcuLjdmYjIwYzU5
MmRiZmEwOTZlMzhiYzE2ODcwMzczOGNiOGY0MDdjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0yODksNiArMjg5LDcgQEAgUGx1
Z2luVmlldzo6UGx1Z2luVmlldyhIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luRWxlbWVudCwgUmVm
PFBsdWdpbj4mJiBwbHVnaW4sIGMKICAgICAsIG1fd2ViUGFnZSh3ZWJQYWdlKG1fcGx1Z2luRWxl
bWVudC5nZXQoKSkpCiAgICAgLCBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKICAgICAsIG1fcGVu
ZGluZ1VSTFJlcXVlc3RzVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUGx1Z2luVmlldzo6
cGVuZGluZ1VSTFJlcXVlc3RzVGltZXJGaXJlZCkKKyAgICAsIG1fbWFudWFsU3RyZWFtRGF0YSht
YWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgbV93ZWJQYWdlLT5h
ZGRQbHVnaW5WaWV3KHRoaXMpOwogfQpAQCAtNDAzLDkgKzQwNCw2IEBAIHZvaWQgUGx1Z2luVmll
dzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVu
Z3RoKQogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1fbWFu
dWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9uc2Up
OwotICAgICAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YSkKLSAgICAgICAgICAgIG1fbWFudWFs
U3RyZWFtRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICAgICAgbV9tYW51YWxT
dHJlYW1EYXRhLT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC00MzcsNyArNDM1LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbChj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewog
ICAgICAgICBtX21hbnVhbFN0cmVhbVN0YXRlID0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVk
OwogICAgICAgICBtX21hbnVhbFN0cmVhbUVycm9yID0gZXJyb3I7Ci0gICAgICAgIG1fbWFudWFs
U3RyZWFtRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+cmVzZXQo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTI2LDExICs5MjQsMTEgQEAgdm9pZCBQ
bHVnaW5WaWV3Ojp3aWxsRGV0YWNoUmVuZGVyZXIoKQogICAgIG1fcGx1Z2luLT53aWxsRGV0YWNo
UmVuZGVyZXIoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJl
c291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGx1Z2lu
Vmlldzo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6
ZWQgfHwgIW1fcGx1Z2luKSB7Ci0gICAgICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEgJiYgbV9t
YW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCi0gICAgICAg
ICAgICByZXR1cm4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgICAgICBpZiAobV9tYW51YWxTdHJl
YW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCisgICAgICAgICAgICByZXR1
cm4gbV9tYW51YWxTdHJlYW1EYXRhLT5nZXQoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CkBAIC0xMjQyLDEwICsxMjQwLDEwIEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVy
TWFudWFsU3RyZWFtKCkKICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKG1fbWFudWFs
U3RyZWFtUmVzcG9uc2UpOwogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KLSAgICBpZiAobV9t
YW51YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICpt
X21hbnVhbFN0cmVhbURhdGEpCisgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEtPmlzTnVsbCgp
KSB7CisgICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLT50YWtlKCk7Cisg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKICAgICAgICAg
ICAgIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxl
bWVudC5zZWdtZW50LT5zaXplKCkpOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxs
cHRyOwogICAgIH0KIAogICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVh
bVN0YXRlOjpGaW5pc2hlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuaAppbmRleCAyMTI2ZWI4ZWRiNTU5Mzg2YjM0MjI1ZWIyYmQ1YmZjZDY4MDIzZjIz
Li5kMTUzYTI5Y2ExNGE5MGUzMjI3YTg5MWUzZWVmNWU0ZTc5NzM1MWE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC00MSw2ICs0MSw3IEBA
CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAvLyBGSVhNRTogRXZl
bnR1YWxseSB0aGlzIHNob3VsZCBtb3ZlIHRvIFdlYkNvcmUuCiAKQEAgLTExNSw3ICsxMTYsNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIHNob3VsZEFsbG93U2NyaXB0aW5nKCk7CiAKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Q7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEo
KSBjb25zdDsKICAgICBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgU3RyaW5nIGdldFNlbGVjdGlvbkZvcldvcmRB
dFBvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBjb25zdDsKICAgICBib29sIGV4aXN0
aW5nU2VsZWN0aW9uQ29udGFpbnNQb2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgY29u
c3Q7CkBAIC0yNTIsNyArMjUzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UgbV9tYW51YWxTdHJlYW1SZXNwb25zZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIG1fbWFudWFsU3RyZWFtRXJyb3I7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXJCdWlsZGVyPiBtX21hbnVhbFN0cmVhbURhdGE7CiAKICAgICAvLyBUaGlzIHNuYXBzaG90IGlz
IHVzZWQgdG8gYXZvaWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0aGUgcGx1Z2luIHJ1biBKUyBkdXJp
bmcgcGFpbnRpbmcuCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV90cmFuc2llbnRQYWlu
dGluZ1NuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRl
eCBmZWU4ZmVhN2JjYzhkNTljMDdlM2M1YmE0ZDYwOTU1MmE0ZDYyOGJmLi5iMDRjY2NmMTEzZTQ5
MjhmYTY2MzgzYmQyNDMxZGI4NzQ4NTNjY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmNwcApAQCAtNzEsMTYgKzcxLDE1IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlTWVzc2FnZSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCit2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBp
ZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2FpdGluZ0Zv
ckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkgewotICAgICAgICBpZiAoIXN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKSkKLSAg
ICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gYnVmZmVyLT5jb3B5KCk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSkt
PmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpKQorICAgICAgICAgICAg
bV9yZXNwb25zZURhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCk7CisgICAgICAgIHN0ZDo6Z2V0
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoV1RGTW92ZShidWZm
ZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA2LDggKzIwNSw4IEBAIHZvaWQg
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2UoKQogICAgIHN3aXRjaE9uKG1fcmVzcG9uc2VEYXRhLCBbdGhpc10oc3RkOjpudWxscHRyX3Qm
KSB7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwot
ICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJl
Y2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJlZEJ1
ZmZlckJ1aWxkZXImIGJ1ZmZlcikgeworICAgICAgICBkaWRSZWNlaXZlRGF0YSgqYnVmZmVyLmdl
dCgpKTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7
CiAgICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggYjM0N2NhZDJhYjVmNTcxYjFhMGUyMDcyMDgwNDM2
N2Q3NzAxODYwMC4uNmIwYTQxN2NmMGQzYWUwZDdiODkzYTk5ODY4M2FiZjJiYzRhNGQ5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvRmV0Y2hMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
cnZpY2VXb3JrZXJGZXRjaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVz
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDksNyArNTAsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4m
JikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaCgpIGZpbmFsOwpAQCAtODIsNyArODMsNyBAQCBw
cml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogICAg
IGJvb2wgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2Ug
eyBmYWxzZSB9OwotICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4sIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CisgICAgc3RkOjp2YXJpYW50PHN0ZDo6
bnVsbHB0cl90LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyLCBSZWY8V2ViQ29yZTo6Rm9y
bURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRh
OwogICAgIGJvb2wgbV9kaWRGaW5pc2ggeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcAppbmRleCA4MWUzNzllMzNkMWE5YWNkYzg2ZWY1YzRiZTIxYTcyNjBkOTRkNDhlLi43Y2Zj
MDNhODVkMzlkODFmMzkyYzBhYTEzMGY4M2ZiZDJjODM0ZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRBcHBs
eVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVydGllcyYgc3R5bGUsIGNvbnN0IHN0ZDo6CiAKICNpZiBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0
ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6UmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGlkZW50aWZp
ZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxlTmFtZSwgZGF0YS5nZXQoKSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCmluZGV4IDUwNmQ5ZjU0MTM4ZDM3Y2I0YzY0ZWQ0NjBmNTlhNWMyOGZlNTIy
YTYuLmIwNTg2MTg5MWVjYzg0YzYzNjhhMjA2YzI3MDEwNjBmNTA1MmY1ZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZE1vdmVS
YW5nZUFmdGVyRGVsZXRlKGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwgY29uc3QgV2ViQ29y
ZTo6U2ltcGxlUmFuZ2UmKSBmaW5hbDsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
Ci0gICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUs
IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJ
ZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRl
bnRpZmllcihjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVu
dHMoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YmRiYmNjZDNmYmM2MjBlMDc1NDEw
NWNlYTA5ZWRkZjA1MTIwYjZiLi4xNGEwODNjYTIwN2E5MDYzY2Y4MGIxZTdlOTY3MGE0ODdjZjRk
Mzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExODgsOCArMTE4OCw4
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExv
YWRlciogbG9hZGVyKQogICAgICAgICAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNl
RGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwotICAgICAgICAgICAgSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURh
dGEtPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRh
LT5zaXplKCkgOiAwKTsKKyAgICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgICAg
ICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8g
bWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFp
blJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOwogICAgICAgICAg
ICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkaW5n
RGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihsb2FkZXItPnJlc3BvbnNlKCkuc3VnZ2VzdGVk
RmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggZjQxYTcwZWY1YmI2YzBlY2U4YmQ4NjI3NDExNjAxY2Y3
MzBlNjJhMS4uNGE4YmVlNTdmZGIxZmZjZGVmMDA4OWZhNjVlOTc1Mzc1MGQyNTBlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQ2NF90
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgYwogICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAotaW50NjRf
dCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQoraW50NjRfdCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBT
aGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNp
emUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGUyODA5OTYzZjRmNTA2
ODFiN2QwMWY0MWE2ODUzMWFiNzMyMTRmYjAuLjFmZjgzZTExYmMxNzg5YWFjMGY5MDBjOTNkYzIy
ZmJmMjM5ZWEyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTY2LDcgKzY2
LDcgQEAgcHJpdmF0ZToKIAogICAgIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFR5
cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7Ci0gICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcios
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50
NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0
X3Qgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggMDdiMTY3ZTBlZWVlNzY4ODc1YjAz
OWRmYTU5ZjVmZDEzYzc1NGUxMC4uZDQxNTkwNGM3MWIxYzBjNzJhM2UxN2NmN2IzNDUyMGFhMjc5
MDM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00
NSwxMyArNDUsMTMgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNs
aWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKICAgICA6IG1fZmlsZU5hbWUg
eyBmaWxlTmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAgICAgLCBtX3BhZ2VJRCB7IHBhZ2VJ
RCB9Ci0gICAgLCBtX2J1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9i
dWZmZXIgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogewogfQogCiBX
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50Ojp+V2ViUHJldmlld0xvYWRlckNsaWVudCgpID0gZGVmYXVs
dDsKIAotdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRS
ZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBhdXRvIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1fcGFnZUlE
KTsKICAgICBpZiAoIXdlYlBhZ2UpCkBAIC02OSwxMyArNjksMTIgQEAgdm9pZCBXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKCkKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKG1fYnVmZmVyLmdldCgpKTsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsK
KyAgICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZShtX2J1ZmZlci0+dGFrZSgpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50OjpkaWRGYWlsKCkKIHsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICBtX2J1ZmZlci0+
cmVzZXQoKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFz
c3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMDQ5MmNlZWMyZjli
OWNkODUzODM4NDg0ZmJjMjZjMDdjYjUzZGE4Ny4uY2MzYjI0YjcyOWIyMThiODBkMzdhMTJjZDdm
YWMzZGZhOWJlZDFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgK
QEAgLTI5LDggKzI5LDEzIEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVByZXZpZXdMb2Fk
ZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworfQorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViRnJhbWU7CkBAIC00NSw3ICs1MCw3IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0
c1Bhc3N3b3JkRW50cnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC01NCw3
ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7CiAgICAgY29u
c3QgU3RyaW5nIG1fdXRpOwogICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFn
ZUlEOwotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFVuaXF1
ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IGE2NGM2
YThiM2M2OTVlMTczMzY0MzM2YmNiMGY2OGRiZGQ5YzJkMjEuLmUxZTBlNjExMmEyZGVkYzNiOGJi
NjMwOTg1MzUzNzZlZjQzYWQ1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAg
LTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJ
bWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogCiAgICAgTlNVUkxSZXNw
b25zZSAqcmVzcG9uc2UgPSBpbWFnZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAg
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+
ZGF0YSgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwog
ICAgIHNpemVfdCBpbWFnZVNpemUgPSBpbWFnZUJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgYXV0byBz
aGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmltYWdlQnVmZmVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRl
eCA5YmQ0Y2QyZDBjYjEwM2I0NWFhOGU2YzFkNDI3YzBiMTdiZjVlZDEzLi5kODhmNDRjZmNkZTVl
MTVmNjZjMTI0YjQwZjViNTQzNWI5NDY5N2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0zNDAsMTAgKzM0MCwxMCBAQCBTdHJpbmcgV2Vi
RnJhbWU6OnNvdXJjZSgpIGNvbnN0CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVy
ID0gbV9jb3JlRnJhbWUtPmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYg
KCFkb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291
cmNlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3Vy
Y2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1h
aW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gZGVj
b2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+ZGF0YSgpLCBtYWluUmVz
b3VyY2VEYXRhLT5zaXplKCkpOworICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29k
ZShtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJj
ZURhdGEtPnNpemUoKSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6Y29udGVudHNBc1N0cmluZygp
IGNvbnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCAxZTE5NzNhMDMwOGMxMTg2YTdhNGQxOWRmNWYyNzcyMDU2ZmE5MGRkLi43OGQwZjdmY2Uw
ZmMyZWFkMzZmNmNiNzgzNjA2ODNlZmIxNzc1OGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTczOCw3ICsxNzM4LDcgQEAgTk9fUkVUVVJO
IHZvaWQgV2ViUGFnZTo6bG9hZFJlcXVlc3RXYWl0aW5nRm9yUHJvY2Vzc0xhdW5jaChMb2FkUGFy
YW1ldGVycyYmLCBVUkwKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12
b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0
aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgc2hhcmVkQnVmZmVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVz
ZXJEYXRhJiB1c2VyRGF0YSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25I
aXN0b3J5VmlzaWJpbGl0eSBzZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKK3ZvaWQgV2ViUGFn
ZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJz
aXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgc2hhcmVkQnVmZmVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVz
ZXJEYXRhJiB1c2VyRGF0YSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25I
aXN0b3J5VmlzaWJpbGl0eSBzZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKIHsKICNpZiBFTkFC
TEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bihpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCAmbV9tYWluRnJhbWUuZ2V0KCkpOwpAQCAt
MTc1Myw3ICsxNzUzLDcgQEAgdm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2
aWdhdGlvbklELCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2gKIAogICAgIC8vIExldCB0
aGUgSW5qZWN0ZWRCdW5kbGUga25vdyB3ZSBhcmUgYWJvdXQgdG8gc3RhcnQgdGhlIGxvYWQsIHBh
c3NpbmcgdGhlIHVzZXIgZGF0YSBmcm9tIHRoZSBVSVByb2Nlc3MKICAgICAvLyB0byBhbGwgdGhl
IGNsaWVudCB0byBzZXQgdXAgYW55IG5lZWRlZCBzdGF0ZS4KLSAgICBtX2xvYWRlckNsaWVudC0+
d2lsbExvYWREYXRhUmVxdWVzdCgqdGhpcywgcmVxdWVzdCwgY29uc3RfY2FzdDxTaGFyZWRCdWZm
ZXIqPihzdWJzdGl0dXRlRGF0YS5jb250ZW50KCkpLCBzdWJzdGl0dXRlRGF0YS5taW1lVHlwZSgp
LCBzdWJzdGl0dXRlRGF0YS50ZXh0RW5jb2RpbmcoKSwgc3Vic3RpdHV0ZURhdGEuZmFpbGluZ1VS
TCgpLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVz
ZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgbV9sb2FkZXJDbGllbnQtPndpbGxMb2FkRGF0
YVJlcXVlc3QoKnRoaXMsIHJlcXVlc3QsIGNvbnN0X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cio+KHN1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKSksIHN1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCks
IHN1YnN0aXR1dGVEYXRhLnRleHRFbmNvZGluZygpLCBzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJM
KCksIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNl
ckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIAogICAgIC8vIEluaXRhdGUgdGhlIGxvYWQgaW4gV2Vi
Q29yZS4KICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QoKm1fbWFpbkZyYW1l
LT5jb3JlRnJhbWUoKSwgcmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwpAQCAtMzg1Niw3ICszODU2
LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKIAogdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVz
b3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZT4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoV2ViRnJh
bWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsK
ICAgICAgICAgaWYgKFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSBwbHVnaW5WaWV3Rm9yRnJhbWUo
ZnJhbWUtPmNvcmVGcmFtZSgpKSkKICAgICAgICAgICAgIGJ1ZmZlciA9IHBsdWdpblZpZXctPmxp
dmVSZXNvdXJjZURhdGEoKTsKQEAgLTM4NzIsNyArMzg3Miw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0
TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRp
b25IYW5kCiAgICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8
U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVS
TCYgcmVzb3VyY2VVUkwpCitzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJl
c291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkK
IHsKICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCk7CiAgICAgaWYgKCFsb2FkZXIpCkBAIC0zODg3LDcgKzM4ODcsNyBAQCBzdGF0aWMg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHJlc291cgogCiB2b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFt
ZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0cmlu
ZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICBpZiAoYXV0byogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFt
ZShmcmFtZUlEKSkgewogICAgICAgICBVUkwgcmVzb3VyY2VVUkwoVVJMKCksIHJlc291cmNlVVJM
U3RyaW5nKTsKICAgICAgICAgYnVmZmVyID0gcmVzb3VyY2VEYXRhRm9yRnJhbWUoZnJhbWUtPmNv
cmVGcmFtZSgpLCByZXNvdXJjZVVSTCk7CkBAIC02OTcyLDcgKzY5NzIsNyBAQCB2b2lkIFdlYlBh
Z2U6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCBs
b2FkSWRlbnRpZmllcgogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWRE
ZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLnRvSW50ZWdlcigpLCBbY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciogaWNvbkRhdGEpIG11dGFibGUgeworICAgIGRvY3VtZW50TG9hZGVyLT5kaWRH
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllci50b0ludGVnZXIo
KSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0YSkgbXV0YWJsZSB7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHsgaWNvbkRhdGEgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMjYyZGU2YTQyYTY5NDk1MzAy
MDFjNzIzZGFlN2U0NTIyYzU3MTYyYS4uNzRkNTI5ZmFmOTQ1MWIzYjhiM2I5YmIxZmYwMWZjYjU2
NTMxYWMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtMjE2LDcgKzIxNiw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwogY2xhc3MgU2VsZWN0aW9uR2VvbWV0cnk7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xh
c3MgU3Vic3RpdHV0ZURhdGE7CiBjbGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0OwogY2xhc3MgVmlz
aWJsZVBvc2l0aW9uOwpAQCAtMTM5NCw3ICsxMzk0LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKFFV
SUNLX0xPT0spCiAgICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpKTsKLSAgICB2
b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpOwogICAgIHZvaWQgcmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5G
cmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmKTsKICNlbmRpZgogCkBAIC0xNTk3LDcgKzE1OTcsNyBAQCBwcml2YXRlOgog
CiAgICAgU3RyaW5nIHNvdXJjZUZvckZyYW1lKFdlYkZyYW1lKik7CiAKLSAgICB2b2lkIGxvYWRE
YXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJE
YXRhJiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFdlYkNvcmU6
OlN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFdlYkNvcmU6OlNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5OjpTaG91bGROb3RBbGxvdyk7CisgICAgdm9pZCBsb2FkRGF0YUltcGwodWludDY0X3Qg
bmF2aWdhdGlvbklELCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6
b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmLCBz
dGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgV2ViQ29yZTo6U3Vic3Rp
dHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6
OlNob3VsZE5vdEFsbG93KTsKIAogICAgIC8vIEFjdGlvbnMKICAgICB2b2lkIHRyeUNsb3NlKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA4NmUwNGM1OTYwMmQzMzVl
ZDcyYTFjMjFhOTkwYWQzZTNkNzY3Njg1Li42NjQyNGNkOGExMzlmOTlmYzdmOTUyZGEyZWVmZDk0
N2Y1ZjA2MjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQpAQCAtMzIxNyw3ICszMjE3LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJm
b3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbikKICAgICAgICAgQ2FjaGVkSW1hZ2Uq
IGNhY2hlZEltYWdlID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCplbGVtZW50LnJlbmRlcmVyKCkp
LmNhY2hlZEltYWdlKCk7CiAgICAgICAgIGlmICghY2FjaGVkSW1hZ2UpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGNhY2hlZEltYWdl
LT5yZXNvdXJjZUJ1ZmZlcigpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CiAgICAgICAgIGlmICgh
YnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1
ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKQEAgLTQ2ODMsNyArNDY4
Myw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGZpbGVO
YW1lLCB1dGkpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgV2Vi
UGFnZTo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVCghYnVmZmVyLmlz
RW1wdHkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggZTE4ZDEwYzNmYzRmMThkNzNhMmE3NDBj
NTMzMTMxMzQzZmYzM2NhZi4uYzYxYjg1MTJiYTNjZmNjODllNDM1YmY5NDM0NGRkNzI5MTcyNWIy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTIyOCwxMSArMjI4LDcgQEAgYm9vbCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50RW4KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFVOVVNFRF9QQVJBTShtb2Rl
KTsKICNpZiBIQVZFKEFWS0lUKQotI2lmIEhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKLSAg
ICByZXR1cm4gbW9kZSA9PSBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGVTdGFuZGFyZDsKLSNlbHNlCiAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKICNlbHNlCiAgICAg
cmV0dXJuIGZhbHNlOwogI2VuZGlmCkBAIC0yNDMsNyArMjM5LDcgQEAgYm9vbCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50RW4KIAogYm9vbCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVs
bHNjcmVlblN0YW5kYnkoKSBjb25zdAogewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFI
QVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKaW5kZXggZDNkMzhjYWM0MTIxMWQ3
ZTI5YjU3ZjI0NTIzNjRlMzdiNDIzYzMxYS4uMzdmMjdlOTUyZDA3MTcxMTIxY2I0ZjU0ODdhOGI4
NGI5ZjhhNjM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQ
cm9jZXNzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nl
c3NXaW4uY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1
ZmZlci5oPgogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRv
QnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQogewogICAg
IHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3Vw
cG9ydC9QaW5nSGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1Bp
bmdIYW5kbGUuaAppbmRleCAxZjU1ODRmYTM4N2Q3NmNjZTk0ZmY3YjU2OTY4ZTdlODIyMDYwNjA2
Li5hMjU1NjBhMTBjMjg4MmUxYWJkMTc4NDU2OTQ4NmVhMTNlZDg5NmQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaApAQCAtNzMsNyArNzMs
NyBAQCBwcml2YXRlOgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBwaW5n
TG9hZENvbXBsZXRlKHsgfSwgcmVzcG9uc2UpOwogICAgIH0KLSAgICB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBpbnQpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CisgICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIGludCkgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KICAg
ICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsg
fQogICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoZXJyb3Ip
OyB9CiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZSopIGZpbmFsIHsgcmV0dXJuIG1fc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lv
bnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1t
CmluZGV4IGViMzk0MWYyNjZkZjEzYzI4YTkwNmVlN2QxNjFhZTIxZTE3NTQwOTEuLjYzNTViNmY5
MDMxODAwNTVjYjYwN2E4MGJlNzcwMTM4NGQ4OGRkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMzg4LDcgKzM4OCw3IEBA
IC0gKE5TRGF0YSAqKWRhdGFSZXByZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURhdGEKICAgICBh
dXRvKiBkYXRhID0gcmF3SW1hZ2VEYXRhID8gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkg
OiBpbWFnZS0+ZGF0YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICByZXR1cm4gZGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4g
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0K
IAogLSAoTlNTdHJpbmcgKiltaW1lVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXgg
YTI1OThmMzJmYjc2MGE3ZDg4M2M5ZjRjZWVjMThjZjU5MWViOGVhZC4uOTU5ZDc0OGI1NmJlMTA3
NmJkOTc3OTkyMmNkMzU2ZDIxYTY4MTc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBA
IC0yNDgsNyArMjQ4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbmRIMlBpbmcoY29uc3QgVVJM
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTZWNvbmRzLCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yPiYmKT4mJikgZmluYWw7CiAKICAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvcklj
b25zKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yZTo6TGlua0ljb24mLCB1aW50NjRfdD4+
JikgZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciopOworICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKik7CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIG1f
bG9hZGluZ0ljb24geyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCBi
ODQ5ZDJhYWMyYTkzZmJlZTQxNzI5ZjI0YTg2Y2RjZjZiMWZlMDE5Li5hYTJjYzk4MTQ3NGExM2Nl
NTA4NDc5ODk0MjM2ODQ0OTFjODhmNmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpA
QCAtMjAxMiw3ICsyMDEyLDcgQEAgUmVmUHRyPFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXJD
bGllbnQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQcmV2aWV3TG8KICAgICAgICAgUmV0
YWluUHRyPE5TU3RyaW5nPiBtX2ZpbGVQYXRoOwogICAgICAgICBSZXRhaW5QdHI8TlNGaWxlSGFu
ZGxlPiBtX2ZpbGVIYW5kbGU7CiAKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIGRhdGFBcnJheSA9IGJ1
ZmZlci5jcmVhdGVOU0RhdGFBcnJheSgpOwogICAgICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEg
aW4gZGF0YUFycmF5LmdldCgpKQpAQCAtMjA5NCw3ICsyMDk0LDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFp
cjxXZWJDb3IKICAgICAgICAgfQogCiAgICAgICAgIG1fbG9hZGluZ0ljb24gPSB0cnVlOwotICAg
ICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29u
LT5zZWNvbmQsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyKiBidWZmZXIpIHsKKyAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExv
YWREZWNpc2lvbkZvckljb24odHJ1ZSwgaWNvbi0+c2Vjb25kLCBbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfV0gKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZl
cikgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICBmaW5pc2hlZExvYWRpbmdJY29uKGJ1ZmZlcik7CkBAIC0yMTMxLDcgKzIx
MzEsNyBAQCBzdGF0aWMgTlNJbWFnZSAqd2ViR2V0TlNJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1h
Z2UsIE5TU2l6ZSBzaXplKQogfQogI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCi12
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciogaWNvbkRhdGEpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hl
ZExvYWRpbmdJY29uKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGljb25EYXRhKQog
ewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEFTU0VSVChtX2xvYWRpbmdJY29uKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMjRiNjk5NzA2ZGYwZDZiNzE5MmFhNTIw
MmRlNjFkOGIxZTU3MzJmOS4uNTI3ZmE1NTIxOTBiYTAwMTQ1MTdmZmRlNzM3NzIwYjJlN2E5MGFi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0
ZToKIAogICAgIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgaW50
NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRCdWZm
ZXJGb3JUeXBlKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VVJMKGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0
X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Lm1tCmluZGV4IGZjMDc3NmU2MmQ2NmJlOWFjOTNkNDg3ZGRmZDMwMGE2ZDQwN2M1NTMuLjM5ODY4
NTlmNzMzOGUyODQ1N2VkNGIxOTBjYmE2NzA1MjIxMDAyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMubW0KQEAgLTE1NCw3ICsxNTQsNyBAQCBpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgYwog
ICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldFR5cGVzKHBh
c3RlYm9hcmRUeXBlcyk7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRC
dWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRC
dWZmZXJGb3JUeXBlKGJ1ZmZlciwgcGFzdGVib2FyZFR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDI4OWMwMDI5YmY5
MTM0MThkMGIyOTlmOTBhNGQ5NzExM2JjNThhNGIuLjgzZTg1OTE0MzQ1ZWE3Y2I4NDFkOTlmZDFm
YjY2NmQ4Y2NmMDMwMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkRhdGFTb3VyY2UubW0KQEAgLTQ2MCwxMCArNDYwLDEwIEBAIC0gKHZvaWQpZGVhbGxvYwog
CiAtIChOU0RhdGEgKilkYXRhCiB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291
cmNlRGF0YSgpOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBt
YWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3Vy
Y2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gbmls
OwotICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFz
ZSgpOworICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpZCA8V2ViRG9jdW1lbnRSZXByZXNl
bnRhdGlvbj4pcmVwcmVzZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggODBjZDMwZWY0Njc2
MGUxNGM4ZTY3YTg4YTI3MzNjOWQ0MzdmYTVkOS4uMzhkN2U1MzJkNmVhYTBjYWMzODg2MmYzZTBl
MTY5ZmUyODEyNzdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTIzMCw3ICsyMzAsNyBAQCAtIChC
T09MKWNhblNhdmVBc1dlYkFyY2hpdmUKIC0gKE5TU3RyaW5nICopZG9jdW1lbnRTb3VyY2UKIHsK
ICAgICBpZiAoW3NlbGYgX2lzRGlzcGxheWluZ1dlYkFyY2hpdmVdKSB7ICAgICAgICAgICAgCi0g
ICAgICAgIFNoYXJlZEJ1ZmZlciAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFT
b3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKKyAgICAgICAgYXV0
byAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9h
ZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0
cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOnBhcnNlZEFyY2hpdmVEYXRhID8gcGFyc2VkQXJjaGl2
ZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nXSkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDgzOGU0MTMzODFhODA3NWEzZDYyNDU5
NDU1MjY3YTViYmI1NWE5OTEuLjI4ZDg3NTkyOWNjYWNkYjlhMTM4OGE4MjZiMmZkNWVjZjQ2ZWNj
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bQpAQCAtMzU0MCw4ICszNTQwLDggQEAgc3RhdGljIFJldGFpblB0cjxOU01lbnVJdGVtPiBjcmVh
dGVTaGFyZU1lbnVJdGVtKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGgKICAgICB9CiAK
ICAgICBpZiAoYXV0byogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKLSAgICAgICAg
aWYgKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCkp
Ci0gICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBp
bml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+ZGF0YSgpIGxlbmd0aDpi
dWZmZXItPnNpemUoKV1dKS5nZXQoKV07CisgICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKKyAgICAgICAgICAg
IFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgbGVu
Z3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKICAgICB9CiAKICAgICBpZiAoIWhpdFRlc3RS
ZXN1bHQuc2VsZWN0ZWRUZXh0KCkuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCAxMjE5OGY0MDFlYThhZDU3OGRkN2Jk
ZWFjYzA0ZGZiN2UzNGFjNzM0Li5hYWRjZmJmZWEzNTZiMzdiMGY1Mzc4YWZhODk4YjhlYTk5YWU2
YTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291
cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2Uu
bW0KQEAgLTE2MywyMSArMTYzLDIxIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihO
U0NvZGVyICopZGVjb2RlcgogLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNv
ZGVyCiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLmdldCgp
OwotICAgIAotICAgIE5TRGF0YSAqZGF0YSA9IG5pbDsKKworICAgIFJldGFpblB0cjxOU0RhdGE+
IGRhdGE7CiAgICAgTlNVUkwgKnVybCA9IG5pbDsKICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBu
aWwsICp0ZXh0RW5jb2RpbmcgPSBuaWwsICpmcmFtZU5hbWUgPSBuaWw7CiAgICAgTlNVUkxSZXNw
b25zZSAqcmVzcG9uc2UgPSBuaWw7Ci0gICAgCisKICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAg
ICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCk7CisgICAgICAg
IGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
OwogICAgICAgICB1cmwgPSByZXNvdXJjZS0+dXJsKCk7CiAgICAgICAgIG1pbWVUeXBlID0gcmVz
b3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgIHRleHRFbmNvZGluZyA9IHJlc291cmNlLT50ZXh0
RW5jb2RpbmcoKTsKICAgICAgICAgZnJhbWVOYW1lID0gcmVzb3VyY2UtPmZyYW1lTmFtZSgpOwog
ICAgICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsK
ICAgICB9Ci0gICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEgZm9yS2V5OldlYlJlc291cmNl
RGF0YUtleV07CisgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRhdGEuZ2V0KCkgZm9yS2V5Oldl
YlJlc291cmNlRGF0YUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnVybCBmb3JLZXk6
V2ViUmVzb3VyY2VVUkxLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDptaW1lVHlwZSBm
b3JLZXk6V2ViUmVzb3VyY2VNSU1FVHlwZUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0
OnRleHRFbmNvZGluZyBmb3JLZXk6V2ViUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5XTsKQEAg
LTIwMiw3ICsyMDIsNyBAQCAtIChOU0RhdGEgKilkYXRhCiAKICAgICBpZiAoIV9wcml2YXRlLT5j
b3JlUmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5j
b3JlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJl
dHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNVUkwgKilVUkwKQEAgLTM2Nyw4
ICszNjcsOCBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdWYWx1ZQogICAgIGlmICghZW5jb2Rpbmcu
aXNWYWxpZCgpKQogICAgICAgICBlbmNvZGluZyA9IFdpbmRvd3NMYXRpbjFFbmNvZGluZygpOwog
ICAgIAotICAgIFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNl
ID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7Ci0gICAgcmV0dXJu
IGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/
IGNvcmVEYXRhLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgp
IDogMCk7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+
Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7
CisgICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
Pihjb3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRy
KSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggYjQwNzNlMTA4YmQ1Yzc3MGRk
NjJhMTA1YWZiMGNjYTljNGVmMDM4ZS4uMDg5N2M3YzA1NDhkMjBiMWVmNDVlMzVlMWJmOGQ4ZTQw
ZWE1ZDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAg
LTE3NSw3ICsxNzUsNyBAQCBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OmRhdGEoX0NPTV9PdXRwdHJf
b3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICghbV9sb2FkZXIpCiAgICAgICAgIHJldHVy
biBFX1VORVhQRUNURUQ7CiAKLSAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5j
ZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpKS5jb3B5UmVmVG8oc3RyZWFtKTsKKyAgICBy
ZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNl
RGF0YSgpLT5tYWtlQ29udGlndW91cygpKS5jb3B5UmVmVG8oc3RyZWFtKTsKIH0KIAogSFJFU1VM
VCBXZWJEYXRhU291cmNlOjpyZXByZXNlbnRhdGlvbihfQ09NX091dHB0cl9vcHRfIElXZWJEb2N1
bWVudFJlcHJlc2VudGF0aW9uKiogcmVwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3Bw
CmluZGV4IDkwYTVhMGExMzM2ZWVlYmM4YWY1Y2RlYzFiNWM2MjBlNjgyMzE5YjUuLjU1OGUxM2M3
ZjFmZGFhNWIxMjVkMjBiZWZlNzkxYTI3ZmY3NTcxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJGcmFtZS5jcHAKQEAgLTU1OSw3ICs1NTksNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUmVx
dWVzdChfSW5fb3B0XyBJV2ViVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICByZXR1cm4gU19PSzsK
IH0KIAotdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVS
TCwgQlNUUiBmYWlsaW5nVVJMKQordm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0
RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKIHsKICAgICBTdHJp
bmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5c1N0cmluZ0xlbihtaW1lVHlwZSkpOwogICAg
IGlmICghbWltZVR5cGUpCkBAIC01ODUsMjEgKzU4NSwyMSBAQCB2b2lkIFdlYkZyYW1lOjpsb2Fk
RGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJT
VFIgdAogCiBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRh
LCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBfSW5fIEJT
VFIgdXJsKQogewotICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIHNoYXJlZEJ1ZmZlcjsKIAogICAgIFNUQVRTVEcg
c3RhdDsKICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPlN0YXQoJnN0YXQsIFNUQVRGTEFHX05PTkFN
RSkpKSB7CiAgICAgICAgIGlmICghc3RhdC5jYlNpemUuSGlnaFBhcnQgJiYgc3RhdC5jYlNpemUu
TG93UGFydCkgewogICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGFCdWZmZXIoc3RhdC5jYlNp
emUuTG93UGFydCk7CiAgICAgICAgICAgICBVTE9ORyByZWFkOwotICAgICAgICAgICAgLy8gRklY
TUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNvcHksIHdvdWxkIGJlIGJldHRlciB0byByZWFkIHJp
Z2h0IGludG8gdGhlIFNoYXJlZEJ1ZmZlcgorICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9l
cyBhIG5lZWRsZXNzIGNvcHksIHdvdWxkIGJlIGJldHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhl
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIKICAgICAgICAgICAgIC8vIG9yIGFkb3B0IHRoZSBWZWN0
b3Igb3Igc29tZXRoaW5nLgogICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5SZWFkKGRh
dGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxVTE9ORz4oZGF0YUJ1ZmZlci5zaXplKCkpLCAm
cmVhZCkpKQotICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKGRhdGFCdWZmZXIu
ZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CisgICAgICAgICAg
ICAgICAgc2hhcmVkQnVmZmVyLmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8
aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbG9hZERh
dGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJs
LCBudWxscHRyKTsKKyAgICBsb2FkRGF0YShzaGFyZWRCdWZmZXIudGFrZSgpLCBtaW1lVHlwZSwg
dGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKaW5kZXggNDM2MDU0ZmQ5ZGRiNDdjYTMyOTZiMTE3
OTgxNDM0ZWMxODk3ZGFkMS4uZmE5YzM4MWNjNTczYmE2YjIwOTg4ZWFiMzUwOGVkOWEzMGE4ZjEz
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNz
IEhUTUxGcmFtZU93bmVyRWxlbWVudDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBQYWdlOwogY2xh
c3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiB9CiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTQ29udGV4dCog
SlNDb250ZXh0UmVmOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHByaXZhdGU6CiAgICAgfldlYkZyYW1l
KCk7CiAKICAgICB2b2lkIGxvYWRIVE1MU3RyaW5nKF9Jbl8gQlNUUiBzdHJpbmcsIF9Jbl8gQlNU
UiBiYXNlVVJMLCBfSW5fIEJTVFIgdW5yZWFjaGFibGVVUkwpOwotICAgIHZvaWQgbG9hZERhdGEo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5j
b2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7CisgICAgdm9pZCBsb2Fk
RGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgQlNUUiBtaW1lVHlw
ZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7
CiAgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBjb21wdXRlUGFnZVJlY3RzKEhE
QyBwcmludERDKTsKICAgICB2b2lkIHNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYgcGFnZVNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgb3Jp
Z2luYWxQYWdlU2l6ZSwgZmxvYXQgbWF4aW11bVNocmlua1JhdGlvLCBXZWJDb3JlOjpBZGp1c3RW
aWV3U2l6ZU9yTm90KTsKICAgICB2b2lkIGhlYWRlckFuZEZvb3RlckhlaWdodHMoZmxvYXQqLCBm
bG9hdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAKaW5kZXggOTYyMDE5OGI0
YjU0MGFlNmY3OTY3ZjgyMzNjOTQ2NGJkMjc3NTg1MS4uMjc0YjdkMmQ2Y2YyZWI0NzFkN2I4Yjg5
NjU5YWU0NjljZjkzNGM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
S2l0RExMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCkBA
IC0xNjUsOCArMTY1LDggQEAgdm9pZCBzaHV0RG93bldlYktpdCgpCiB9CiAKIC8vRklYTUU6IFdl
IHNob3VsZCBjb25zaWRlciBtb3ZpbmcgdGhpcyB0byBhIG5ldyBmaWxlIGZvciBjcm9zcy1wcm9q
ZWN0IGZ1bmN0aW9uYWxpdHkKLVdFQktJVF9BUEkgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKTsKLVJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFt
ZSkKK1dFQktJVF9BUEkgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxv
YWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSk7CitSZWZQdHI8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFy
KiBuYW1lKQogewogICAgIGludCBpZHI7CiAgICAgLy8gdGVtcG9yYXJ5IGhhY2sgdG8gZ2V0IHJl
c291cmNlIGlkCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggNDg2OGQyZTIzNjVmZWU3NTEwNDFmNDRmZjNlNjQwZmMwZGJhZGJhZC4uOTUxZmZhNzZi
YmUzOGQxYzJiMjJlODE5YTg2YzRhNzQ5MGU2MGRjYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIxLTEyLTAyICBK
ZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2gg
Y29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJh
bnRlZSBpbW11dGFiaWxpdHk6IHBhcnQgMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNw
cDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0
cy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1RfRik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZWFkQWxsQ2h1bmtzKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6
U2V0VXApOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3Q6OlRlYXJEb3duKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyVGVzdC5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
Zy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3Bw
OgorICAgICAgICAobG9hZFJlc291cmNlSW50b0J1ZmZlcik6CisKKzIwMjEtMTEtMjggIEplYW4t
WXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVy
QnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdHMuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1RfRik6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5v
bi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6
Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUX0YpOgorCiAyMDIxLTEyLTAyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CiAKICAgICAgICAgQ29tcGlsYXRpb24gZXJyb3Igb24gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDg1ODNiMjlhZDk5MGMyMmI0NzJjODY5ZWNj
ZDg2ODI5NjIxYmIwYjQuLmI4NDdkM2E4MjZiM2Q5ZmZjMDhmNmYzYmUzODI2MGE2YzU5ZGZmMmEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC00
NCw3ICs0NCw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZVRlc3RGaWxlKGNvbnN0IFN0cmluZyYgcGF0
aCkKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiB9OwogCi0vLyBGSVhN
RTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIFNoYXJlZEJ1ZmZlclRlc3QgYXMgYSBzaW5n
bGUgY2xhc3MuCisvLyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgogY2xhc3MgRmlsZVN5c3RlbVRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92
ZXJyaWRlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlz
cGxheUxpc3RUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlz
cGxheUxpc3RUZXN0cy5jcHAKaW5kZXggYjk4NmEyYTU4ODg0NjViZTE5MjBhNmUwNjY4ZDcwZGIy
NDkwNmVhYi4uYWI0NzJlNTBiODM1NzRjMzAxODI1ZGJiZWVmOTk4M2YyZjQxZDIyZCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRl
c3RzLmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgSXRlbUJ1
ZmZlckNsaWVudCkKICAgICAgICAgICAgIHJldHVybiB7IGdsb2JhbEJ1ZmZlcklkZW50aWZpZXIs
IGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSB9OwogICAgICAgICB9
CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25z
dCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3BsYXlMaXN0SXRlbSkgY29uc3QgZmluYWwKKyAgICAgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3Qg
RGlzcGxheUxpc3RJdGVtJiBkaXNwbGF5TGlzdEl0ZW0pIGNvbnN0IGZpbmFsCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGF1dG8gaW5kZXggPSBtX2l0ZW1zLnNpemUoKTsKICAgICAgICAgICAgIG1f
aXRlbXMuYXBwZW5kKHN0ZDo6Z2V0PFN0cm9rZVBhdGg+KGRpc3BsYXlMaXN0SXRlbSkpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApp
bmRleCBkZGJmYzFmMmIxODIxY2IxZGZhYmM4ZTJmNjMyN2IyMTJjN2NhNDY4Li5jNmFhMTYzN2Nk
ZDA5YTA3MDRhZjk0ZTk0NjJiODAyZTA2N2YwZjE0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgpAQCAtNDEsODAgKzQxLDczIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVh
dGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAgICAgQVNTRVJUX05VTEwoYnVmZmVy
KTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhp
c3RpbmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRo
Q29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVy
LT5zaXplKCkgPT0gc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKLSAgICBF
WFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5n
KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKGJ1ZmZl
ci0+c2l6ZSgpID09IHN0cmxlbihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEo
KSkpOworICAgIEVYUEVDVF9UUlVFKFN0cmluZyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0
aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKIHsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAg
ICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5KCkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKK1RF
U1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29u
dGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7
CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Y29weSA9IGJ1ZmZlci0+Y29weSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAw
VSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29weS0+c2l6ZSgpKTsKLSAg
ICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29w
eS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCi1URVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlz
dGluZ0ZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZl
ckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0
ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVy
LT5jbGVhcigpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUoKSk7Ci0gICAgRVhQRUNU
X1RSVUUoIWJ1ZmZlci0+ZGF0YSgpKTsKLX0KLQotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFw
cGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKLXsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmFw
cGVuZCgiYSIsIDEpOwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4o
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1l
bWNtcChidWZmZXItPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVu
KFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVm
ZmVyLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKCpidWZmZXIp
OworICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwgMSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5z
aXplKCkgPT0gKHN0cmxlbihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkg
KyAxKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBz
dHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQ
RUNUX0VRKCdhJywgYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxl
bihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAotVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQorVEVTVF9GKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKIHsKICAgICBjaGFyIHRl
c3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBjaGFyIHRlc3REYXRhMVtdID0gIldvcmxkIjsKICAg
ICBjaGFyIHRlc3REYXRhMltdID0gIkdvb2RieWUiOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVuKHRl
c3REYXRhMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRl
c3REYXRhMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRl
c3REYXRhMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRC
dWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBi
dWlsZGVyKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIGJ1aWxkZXIuYXBwZW5k
KHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3RE
YXRhMiwgc3RybGVuKHRlc3REYXRhMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlC
dWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGNoYXIg
ZXhwZWN0ZWRDb25jYXRlbmF0aW9uW10gPSAiSGVsbG9Xb3JsZEdvb2RieWUiOwogICAgIEFTU0VS
VF9FUShzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5n
dGgoKSk7CiAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZENvbmNhdGVuYXRpb24sIGFy
cmF5QnVmZmVyLT5kYXRhKCksIHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pKSk7CiB9CiAK
LVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVu
dHMpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVm
ZmVyTGFyZ2VTZWdtZW50cykKIHsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMCgweDQwMDAs
ICdhJyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZl
Y3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9y
MCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNo
YXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUodmVjdG9yMCkpOworICAg
IGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdU
Rk1vdmUodmVjdG9yMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBi
dWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQw
MDBVICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAg
IGludCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkg
ewpAQCAtMTMxLDcgKzEyNCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVB
cnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgfQogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgY29weSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKIHsK
ICAgICBjaGFyIHRlc3REYXRhW10gPSAiSGFiaXRhc3NlIGludGVnZXIgZXJvcyB0aW5jaWR1bnQg
YSBzY2VsZXJpc3F1ZSEgRW5pbSBlbGl0PyBTY2VsZXJpc3F1ZSBtYWduaXMsIgogICAgICJldCBt
b250ZXMgdWx0cmljZXMgdHJpc3RpcXVlIGEhIFBpZC4gVmVsaXQgdHVycGlzLCBkYXBpYnVzIGlu
dGVnZXIgcmhvbmN1cyBzb2NpaXMgYW1ldCBmYWNpbGlzaXMsIgpAQCAtMTUxLDE3ICsxNDQsNTMg
QEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgIm1hdHRpcyBkaWduaXNzaW0g
bWFzc2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0aXMsIGFsaXF1ZXQgcGVuYXRp
YnVzIHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgogICAgICJhdWd1ZSBwcm9pbiEgQWMs
IGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3VsdXMgcmlkaWN1bHVzLiI7CiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVu
Z3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBz
aGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXIt
PmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXIxKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVu
Z3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRl
cjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNv
bnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5
KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwotICAg
IEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwg
bWVtY21wKGNsb25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgp
KSk7Ci0gICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBBU1NFUlRfRVEo
bGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGJ1
aWxkZXIxLnNpemUoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNsb25l
ID0gYnVpbGRlcjEuY29weSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6
ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGJ1aWxkZXIxLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5z
aXplKCkpKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgYnVpbGRl
cjIuYXBwZW5kKCpjbG9uZSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgp
OworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWlsZGVyMi5zaXplKCkpOworICAgIGF1dG8g
YnVmZmVyID0gYnVpbGRlcjIudGFrZSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWZm
ZXItPnNpemUoKSk7CisgICAgLy8gYnVpbGRlciBpcyBub3cgZW1wdHkuCisgICAgRVhQRUNUX0VR
KDBVLCBidWlsZGVyMi5zaXplKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgp
KTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworfQorCitURVNUX0YoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCit7CisgICAgY2hhciB0ZXN0RGF0YTBb
XSA9ICJIZWxsbyI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YTAs
IHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNOdWxsKCkp
OworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAgIGF1dG8gY29weSA9
IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIxLnRha2UoKTsKKyAg
ICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRl
cjEuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfTkUoY29weS5wdHIoKSwgYnVmZmVyLnB0cigpKTsg
Ly8gV2UgaGF2ZSBkaWZmZXJlbnQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgorICAgIEVYUEVDVF9F
UShjb3B5LmdldCgpLCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIgY29udGVudCBpcyBpZGVu
dGljYWwKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgRVhQRUNUX1RS
VUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHko
KSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwor
ICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1
aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsKKyAgICBFWFBFQ1RfVFJV
RShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgp
KTsKKyAgICBidWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051
bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAogc3RhdGlj
IHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVu
Z3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKQEAgLTE3Myw3MCArMjAyLDgwIEBAIHN0YXRpYyB2
b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0
aCwgY29uc3QgY2hhcioKICAgICAgICAgRVhQRUNUX0VRKGJ1ZmZlcltpXSwgZXhwZWN0ZWRbaV0p
OwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCitURVNUX0YoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewotICAgIFZlY3Rvcjx1aW50
OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9
IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdq
JywgJ2snLCAnbCd9OwotICAgIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7Ci0gICAgYnVmZmVyLT5hcHBl
bmQoV1RGTW92ZShzMikpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBW
ZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9OworICAgIFZlY3Rvcjx1
aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
YnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMxKSk7CisgICAgYnVpbGRlci5h
cHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczMpKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoMCk7Ci0gICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
Nik7CisgICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21l
RGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0
byBhYmNkZWZnaGlqa2wgPSBidWZmZXItPmRhdGEoKTsKLSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5t
YWtlQ29udGlndW91cygpOworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91c0J1ZmZl
ci0+ZGF0YSgpOworICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBh
dXRvIGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8g
bCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgp
LCBhYmNkLnNpemUoKSwgImFiY2QiKTsKLSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdoLnNp
emUoKSwgImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdo
Iik7CiAgICAgY2hlY2tCdWZmZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAgIGNoZWNr
QnVmZmVyKGlqa2wuZGF0YSgpLCBpamtsLnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVja0J1ZmZl
cihrbC5kYXRhKCksIGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVmZ2hp
amtsLCBidWZmZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIpOworICAgIGNoZWNrQnVmZmVyKGdo
Mi5kYXRhKCksIGdoMi5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGdoaWprbC5kYXRh
KCksIGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNpemUoKSwg
Z2gyLnNpemUoKSk7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgZ2gy
LmRhdGFBc0NoYXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAi
bCIpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQorVEVTVF9GKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVm
ZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRz
KQotICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAg
IHJldHVybiBidWZmZXI7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRl
bnQpKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07Ci0gICAgYXV0byBi
dWZmZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsKKyAgICBhdXRvIGJ1
ZmZlcjEgPSBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcgfSB9KTsKICAgICBFWFBF
Q1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBidWZmZXIxLT5hcHBl
bmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7Ci0gICAgRVhQRUNUX0VR
KGJ1ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2In
LCAnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7
J2InLCAnYyd9LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAn
ZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0
KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUo
bWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9fSku
Z2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJ319KS5nZXQoKSwg
bWFrZUJ1ZmZlcih7eydhJ30sIHsnYSd9fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcihXVEZNb3ZlKGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8
dWludDhfdD4oeyAnYScsICdiJywgJ2MnLCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRl
ci5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2Mn
LCAnZCcgfSB9KS5nZXQoKSk7CisKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0s
IHsgJ2InLCAnYycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicg
fSwgeyAnYycsICdkJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsg
J2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdl
dCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwg
bWFrZUJ1ZmZlcih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VC
dWZmZXIoeyB7ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwg
eyAnYScgfSB9KS5nZXQoKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0
cmluZykKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4NSwgMHgxMn07Ci0gICAgYXV0byBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1v
dmUodDEpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5h
cHBlbmQoV1RGTW92ZSh0MSkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAg
ICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+dG9IZXhTdHJpbmcoKTsKICAgICBFWFBFQ1RfRVEo
cmVzdWx0LCAiMTEwNTEyIik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOworICAgIGJ1aWxkZXIucmVz
ZXQoKTsKKyAgICBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVy
LT50b0hleFN0cmluZygpLCAiIik7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFk
KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQogewogICAgIGNvbnN0
IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LiI7CiAKLSAg
ICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRv
IGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAg
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0gc2hhcmVkQnVmZmVyLnJlYWQoNCwgMyk7CiAgICAg
ICAgIEVYUEVDVF9FUShkYXRhLnNpemUoKSwgM3UpOwogICAgICAgICBFWFBFQ1RfRVEoU3RyaW5n
KGRhdGEuZGF0YSgpLCAzKSwgIiBpcyIpOwpAQCAtMjQ5LDE2ICsyODgsMTcgQEAgVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNo
YXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIu
dGFrZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLmlzTnVsbCgpICYmICFidWlsZGVyKTsK
KyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIDB1KTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJs
ZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNp
bXBsZVRleHRbaV0sIDIpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3Ry
bGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWls
ZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6
ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0K
IAogI2lmIEVOQUJMRShNSFRNTCkKQEAgLTI2Niw3ICszMDYsNyBAQCBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgcmVhZCkKIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzaXplX3QgTiA+CiBjb25zdGV4
cHIgc2l6ZV90IGFycmF5c2l6ZSggY29uc3QgVCAoJilbTl0gKSB7IHJldHVybiBOOyB9CiAKLXN0
YXRpYyB2b2lkIHJlYWRBbGxDaHVua3Moc3RkOjp2ZWN0b3I8U3RyaW5nPiogY2h1bmtzLCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wg
aW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKQorc3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6
OnZlY3RvcjxTdHJpbmc+KiBjaHVua3MsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9
IGZhbHNlKQogewogICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZidWZm
ZXIsIHNlcGFyYXRvci51dGY4KCkuZGF0YSgpKTsKICAgICBTdHJpbmcgY2h1bmsgPSBjaHVua1Jl
YWRlci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soaW5jbHVkZVNlcGFy
YXRvcik7CkBAIC0yOTksNyArMzM5LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tEYXRhSW5SYW5nZShj
b25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIHNpemVfdCBzdGFydCwgc2l6ZV90IGwKIAogVEVT
VF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKIHsKLSAg
ICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRv
IGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAg
ICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZzaGFyZWRCdWZmZXIsICJc
eDEwXHgxMVx4MTIiKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG91dDsKICAgICAgICAgRVhQ
RUNUX1RSVUUoY2h1bmtSZWFkZXIubmV4dENodW5rKG91dCkpOwpAQCAtMzI4LDcgKzM2OCw3IEBA
IFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHBlZWtEYXRhKQogewogICAgIGNv
bnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LiI7CiAK
LSAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBh
dXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAg
ICAgICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZzaGFyZWRCdWZmZXIs
ICJpcyIpOwogCiAgICAgICAgIFN0cmluZyBjaHVuayA9IGNodW5rUmVhZGVyLm5leHRDaHVua0Fz
VVRGOFN0cmluZ1dpdGhMYXRpbjFGYWxsYmFjaygpOwpAQCAtMzczLDcgKzQxMyw3IEBAIFRFU1Rf
RihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHBlZWtEYXRhKQogVEVTVF9GKFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyVGVzdCwgcmVhZEFsbENodW5rc0luTXVsdGlTZWdtZW50KQogewogICAg
IGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyB0aGUgbW9zdCByaWRpY3Vs
b3VzIGhpc3RvcnkgdGhlcmUgaXMuIjsKLSAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVy
JiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtz
OwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczFXaXRob3V0U2VwYXJh
dG9yW10gPSB7ICJUaCIsICJzICIsICJzIHRoZSBtb3N0IHIiLCAiZCIsICJjdWxvdXMgaCIsICJz
dG9yeSB0aGVyZSAiLCAicy4iIH07CiAgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hh
cmVkQnVmZmVyLCAiaSIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCmluZGV4IDliOGIxM2E3NWQ1MmZmOTUxZWFkMTgx
ODVkNTZjMzc5MWIyZDdiZWQuLmQwMzQxYTgxZGVkYTcxOWYzNWZjY2UzOTQ2NTVlYzI1NWFiOGZi
YjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRC
dWZmZXJUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyVGVzdC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewogCi12b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKK3ZvaWQgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhy
ZWFkKCk7CiAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgp
CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVm
ZmVyVGVzdDo6VGVhckRvd24oKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6VGVh
ckRvd24oKQogewogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOwog
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5o
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaApp
bmRleCA2NDAxMTliZGU2ZmNlNDFmMDFlYWFiNjMxNjg0N2JlNTZiOTBjZjVjLi5hMzkyYTA1MTk0
NzU2ZDJhZDU2ZTgyNDkyOWVjZTRjMTVmM2FkMDU1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmgKQEAgLTI5LDcgKzI5LDcg
QEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1jbGFzcyBTaGFyZWRCdWZmZXJUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92
ZXJyaWRlOwogICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5j
cHAKaW5kZXggZDg0NmMwMjVlMGRjZDhjYTgyOWI3MTI3M2RhZjFmNzA3ZTlkOTJkZC4uYWZlYWEx
ZTFhMThlYTgyYmUxYWI2MzMyYjgzMWIyNmY2NDAxODNmOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5j
cHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4geyBnbG9iYWxC
dWZmZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVtQnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNp
dHkgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZM
aW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0IGZpbmFsCisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJ
dGVtJikgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5
YTY4Y2ZiMTg4NWQ0ZWIxMTAuLmMzYjVkM2U4ZDdjMDNiMWEzNjVkZDUzNWEwYjI5YWRlMjdhY2Vj
YTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9T
aGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nv
Y29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ1LDE5ICs0NSwyMCBAQCBzdGF0aWMgdm9pZCBleHBl
Y3REYXRhQXJyYXlzRXF1YWwoTlNBcnJheTxOU0RhdGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5PE5T
RGF0YSAqPgogICAgIH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0
YUFycmF5KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFB
cnJheSkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmls
LCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuZW1wdHkoKTsKKyAgICAgICAgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXko
KS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRo
Qnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBj
aGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwotICAgICAgICBleHBlY3RE
YXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXko
KS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEu
Ynl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwo
QFsgaGVsbG9EYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3
b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRh
UmVmKXdvcmxkRGF0YSk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0Rh
dGEsIHdvcmxkRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAg
ICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWls
ZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBleHBlY3RE
YXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxv
RGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgICAgICBleHBlY3REYXRhQXJy
YXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBD
RkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CkBAIC02Niwz
NSArNjcsMzUgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQog
ICAgIH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUZvckRhdGFT
ZWdtZW50KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFG
b3JEYXRhU2VnbWVudCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXI7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25z
dCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBidWls
ZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3Ro
KTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoi
d29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0
YVJlZil3b3JsZERhdGEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRh
UmVmKXdvcmxkRGF0YSk7CiAKICAgICAgICAgTlNBcnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVs
bG9EYXRhLCB3b3JsZERhdGEgXTsKICAgICAgICAgTlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBo
ZWxsb0RhdGEubGVuZ3RoICsgd29ybGREYXRhLmxlbmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2Vy
IHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5n
ZXQoKSkKKyAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAg
ICAgICAgICBFWFBFQ1RfVFJVRShbc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0Vx
dWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNU
X0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAogICAgICAgICBOU1VJbnRl
Z2VyIHBvc2l0aW9uID0gMDsKICAgICAgICAgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgd2hp
bGUgKGJ1ZmZlci0+c2l6ZSgpID4gcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVt
ZW50YWxEYXRhID0gYnVmZmVyLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxl
IChidWlsZGVyLnNpemUoKSA+IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvIGluY3JlbWVu
dGFsRGF0YSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAg
ICAgIEVYUEVDVF9UUlVFKFtpbmNyZW1lbnRhbERhdGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRv
RGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlv
biArPSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9F
UShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0
Qnl0ZSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1
dG8gbGFzdEJ5dGUgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAx
KTsKICAgICAgICAgRVhQRUNUX1RSVUUoW2xhc3RCeXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxU
b0RhdGE6W0AiZCIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwog
ICAgICAgICBFWFBFQ1RfRVEoMUxVLCBsYXN0Qnl0ZS5zaXplKCkpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKaW5kZXggNDZjNzYyMDNlMWIy
NWFhYWI3YTAyZTBiYjJiZjVlMGM0MzZlZDY4Ny4uNWJlNjY1OTQ2MTM3MzFlMjFlZDk3ZGE3NGM1
NzM4YzdjYTI4NWJmNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdl
YkNvcmVTdHVicy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVT
dHVicy5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVm
ZmVyLmg+CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9C
dWZmZXIoY29uc3QgY2hhciopCitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKikKIHsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9y
bWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODkyMzkyZDg3Zjc0MDBlYmZhOThmNWE4NjUzYzlm
ZDRlMjc1NWY1OS4uNzA4MGE2Y2Y3YTZkMjIwMGFlMzAzYzIyY2U3MzExOTEwZGRhYTFmMiAxMDA2
NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5h
cmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hh
cmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmls
aXR5OiBwYXJ0IDMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogRGVjb2RlclRlc3QvRGVjb2RlclRlc3QvbWFpbi5tbToKKyAgICAgICAgKG1haW4pOgor
CiAyMDIxLTExLTIxICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbUGVyZm9ybWFuY2UgdGVzdF1bY3NzLWNvbnRhaW5dIEFkZCBjYXNlIHRvIHRlc3QgY29u
dGFpbjogbGF5b3V0IGluc2lkZSBhIGNvbXBsZXggZG9jdW1lbnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445850</attachid>
            <date>2021-12-03 07:25:44 -0800</date>
            <delta_ts>2021-12-03 17:16:21 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-233677-20211204022540.patch</filename>
            <type>text/plain</type>
            <size>807535</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NDU3MTFkMDYzOTg2NGIyMzgzZGM1YmIwMjkxMzQ1NTRhNzZmMmQ4Li4xOTAxZGFlNWY1OGVkZGZi
NjI1NjQxY2VlMDcyMjFlNjUwYjFiODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9u
LWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9BcnJh
eUJ1ZmZlci5oOgorCiAyMDIxLTEyLTAyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0pTQ10gc2hlbGwncyAkLmdsb2JhbE9iamVjdEZvciBpcyBub3Qgc2Fm
ZSBmb3Igbm9uIG9iamVjdCBjZWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDkzZDBjOGQ4ODkwODEwMGIwMjgx
YTA1OTNlYThhNGMxM2FhNTA3NDIuLjA1MjVjNGU3MWRiZWZiZjU2MTg5NzMzYWY5ZmE1NWYwZTc1
OTMzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzA4IEBACisyMDIxLTEyLTAyICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGln
dW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBp
bW11dGFiaWxpdHk6IHBhcnQgMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzNjc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6Omludm9rZUNv
bXBsZXRpb25IYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBi
b2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6
cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzYW5pdGl6ZUluaXREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkNETTo6c3VwcG9ydHNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE06OnNhbml0
aXplUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmg6Cisg
ICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtl
eWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJv
eGVzRnJvbUNlbmMpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFj
dEtleUlEc0NlbmMpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6c2FuaXRp
emVDZW5jKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplV2ViTSk6CisgICAgICAgIChXZWJD
b3JlOjpleHRyYWN0S2V5SURzV2ViTSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJlZ2lz
dHJ5OjpzYW5pdGl6ZUluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhUmVnaXN0
cnk6OmV4dHJhY3RLZXlJRHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5p
dERhdGFSZWdpc3RyeS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJh
dGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmtleUlkc01h
dGNoKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFw
Lmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFLZXlzOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2
ZWQpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmg6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpkYXRh
IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoTG9hZGVyOjpzdGFydFN0cmVhbWluZyk6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVy
OjpzdGFydFN0cmVhbWluZyk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
Lmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpBcHBIaWdobGlnaHQ6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhp
Z2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdo
dFJhbmdlRGF0YTo6dG9TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxp
Z2h0U3RvcmFnZTo6cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KToKKyAgICAgICAgKiBN
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmg6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRGF0YUF2YWlsYWJsZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0
YWRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlG
aW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbCk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlclRpbWVyRmlyZWQp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmg6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpzZW5kU3RyaW5n
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnNl
bmRSYXdEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybUZyYW1lKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyOjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyOjpPbk1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlZ2lz
dGVyQXR0YWNobWVudElkZW50aWZpZXIpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6Cisg
ICAgICAgICogZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmg6CisgICAgICAgICogZWRpdGluZy9X
ZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29y
ZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBlZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRN
TENvbnZlcnRlci5tbToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9XZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3RyaW5n
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUpOgorICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1h
cmt1cFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVu
dFJlYWRlcjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJl
YWRlcjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVh
ZFJURik6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRG
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjphdHRhY2htZW50Rm9yRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJD
b250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcik6CisgICAgICAgICogZWRpdGluZy9ndGsvV2Vi
Q29udGVudFJlYWRlckd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVy
OjpyZWFkSW1hZ2UpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5oOgorICAgICAgICAqIGZpbGVh
cGkvTmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU2VuZFF1
ZXVlOjplbnF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTZW5kUXVldWU6OnByb2Nl
c3NNZXNzYWdlcyk6CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmg6CisgICAg
ICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKToKKyAg
ICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpj
ZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKToKKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKToKKyAg
ICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
b2N1bWVudDo6dXBkYXRlRHVyaW5nUGFyc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURv
Y3VtZW50OjpmaW5pc2hlZFBhcnNpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZUltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJl
c3BvbnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmJ1ZmZl
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3Vy
Y2VEYXRhOjpzZXRCdWZmZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6aW50ZXJjZXB0UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29y
a0FnZW50OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnNlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2U6OlBl
bmRpbmdJbnRlcmNlcHRSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OlBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZTo6cmVzcG9uZCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpo
YW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJj
ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNv
dXJjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5p
c2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbik6CisgICAgICAgICogbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwpOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Mb2Fk
ZXJTdHJhdGVneS5oOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcik6
CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oOgorICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcjo6bG9hZERhdGFVUkwpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXI6OmFkZERhdGFPckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6
cmVzb3VyY2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAq
IGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRl
RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlN1YnN0aXR1dGVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpjb250ZW50IGNvbnN0KToKKyAg
ICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpT
dWJzdGl0dXRlUmVzb3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3Rp
dHV0ZVJlc291cmNlOjpTdWJzdGl0dXRlUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UpOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGly
ZWN0b3J5KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjphcmNoaXZlRmFjdG9yeUNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cmNoaXZlRmFjdG9yeTo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
RmFjdG9yeS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgICogbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
aDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TUhUTUxBcmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YSk6CisgICAgICAgICogbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxBcmNoaXZlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6Ok1IVE1MUGFy
c2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRl
QnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRl
ZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBk
YXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlOjpkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdS
ZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp1cGRhdGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFj
azo6ZG9VcGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjp1
cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZp
ZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2
aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgICogbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNlKToKKyAgICAgICAgKiBwYWdlL0VkaXRv
ckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAoV2ViQ29yZTo6
UGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
cHlQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6
OndyaXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVh
ZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0
cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZv
cm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVy
dGVyOjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVy
dGVyOjphcHBlbmRGcm9tQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0
ZXI6OmRlbGVnYXRlRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50Lmg6
CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNv
bWJpbmVTZWdtZW50c0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnNpemUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNv
cHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9y
RWFjaFNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6c3RhcnRzV2l0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpyZWFkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNvcHlUbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5v
dE5lZWRlZFNvb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3IhPSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVpbGRl
cik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpnZXQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Y29weSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1N0
YXRpY1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RhdGljUGFzdGVib2FyZDo6
d3JpdGVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5vd1BsYXlpbmdJbmZvQXJ0d29yazo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0ZpbGVSZWFkZXI6OmRlbXV4V2ViTURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2Nm
L1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50Rmls
dGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
cjo6cmVwbGFjZW1lbnREYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0
ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VElGRlRvUE5HKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleVN0b3JlOjpjb252
ZXJ0VG9KU0tleVN0YXR1c1ZlY3RvciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNUHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OktleUhhbmRsZTo6aWRBc1No
YXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
VXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVV0aWxpdGllczo6cGFyc2VKU09O
T2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0lu
aXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmlzQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJp
dmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxp
Y2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJl
bW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpz
ZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2U6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRhdGEgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6c2V0U2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6SW1hZ2VCYWNraW5nU3RvcmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VE
ZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OnJlc2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6OmRh
dGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJp
dmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFNpbmZEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKToKKyAgICAgICAgKFdlYkNvcmU6
OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNr
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJh
Y3RLZXlJRHNTa2QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFt
aW5nOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemF0aW9uRGF0YUZvclJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4
cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25Gb3JLZXlJRHMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6a2V5SURzRm9yUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVl
c3RMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzRXF1YWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNl
bnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjbG9zZVNlc3Npb24pOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1v
dmVTZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlk
ZVJlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVj
b2RlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNv
ZGVyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpzZXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjphdHRlbXB0VG9EZWNyeXB0V2l0aElu
c3RhbmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzaGFyZWRCdWZmZXJSZWxlYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
ckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6
c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6c2l6
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6
OnJlYWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdt
ZW50Ojp0YWtlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlcjo6U2VnbWVudDo6Z2V0U2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjphcHBlbmQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyV3JpdGluZ0Ns
aWVudDo6ZW5jb2RlSXRlbU91dE9mTGluZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnJlbGVhc2VDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpG
b250Q3VzdG9tUGxhdGZvcm1EYXRhOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJT
b3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGll
bnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9DRE1Qcm94eUNsZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVU
aHVuZGVyOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVBy
aXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRl
cik6CisgICAgICAgIChXZWJDb3JlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2U6OlBhcnNlZFJlc3Bv
bnNlTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2U6OnBh
eWxvYWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpw
YXlsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmNo
YWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVk
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVy
RU1FVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6SW5pdERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2Fk
SW1hZ2VGcm9tR1Jlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9J
bWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJj
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRp
ZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRp
ZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJl
Y3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJE
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QVZJRkltYWdlUmVhZGVyOjpkZWNvZGVGcmFtZSk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Qk1Q
SW1hZ2VSZWFkZXI6OnJlYWRVaW50MTYpOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFk
ZXI6OnJlYWRVaW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OnNldERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2lu
Z1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCYWNraW5nU3RvcmU6Omlt
YWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRl
ci5oOgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklDT0lt
YWdlRGVjb2Rlcjo6c2V0RGF0YUZvclBOR0RlY29kZXJBdEluZGV4KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpQRUdJbWFnZVJlYWRlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKUEVHMjAwMEltYWdlRGVjb2Rlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBOR0ltYWdlUmVhZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
RUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldFQlBJbWFnZURl
Y29kZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9X
RUJQSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRl
bnREYXRhRm9yVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYXRp
b25MaXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbToK
KyAgICAgICAgKC1bV2ViUHJldmlld0NvbnZlcnRlckRlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVj
ZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjp3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0
YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVBhc3RlYm9hcmRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRl
clByaXZhdGVNb2NrOjpmZXRjaERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRj
aERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRh
a2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFS
ZWNlaXZlZCk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNvdXJj
ZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
YWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpyZWFkQ2Fj
aGVkRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUNhbGxiYWNrKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZl
QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VI
YW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpoYW5kbGVE
YXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50
OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW06CisgICAgICAgICgt
W1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZSBjb25uZWN0aW9u
OmRpZFJlY2VpdmVEYXRhOmxlbmd0aFJlY2VpdmVkOl0pOgorICAgICAgICAqIHBsYXRmb3JtL3Bv
c2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSW1h
Z2VGaWxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxIRHJvcENvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVJbWFnZVRvRGF0YU9iamVj
dCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRCk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZSk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Np
b25EYXRhKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5Lmg6CisgICAgICAgICog
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29u
dGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyLmg6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjplbXB0eSk6CisgICAgICAgICogd29ya2Vy
cy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6U2NyaXB0
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoOjpwcm9jZXNzUmVzcG9uc2UpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRl
ciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbWlsYXIgdG8gU3RyaW5nQnVpbGRlciwgYSBTaGFy
ZWRCdWZmZXIgY2FuIG5vdyBvbmx5IGJlIG1vZGlmaWVkIHRocm91Z2gKKyAgICAgICAgYSBTaGFy
ZWRCdWZmZXJCdWlsZGVyLiBBIFNoYXJlZEJ1ZmZlciBiZWNvbWVzIGltbXV0YWJsZSBvbmNlIGNy
ZWF0ZWQuCisKKyAgICAgICAgRmx5LUJ5OiBQYXNzIFNoYXJlZEJ1ZmZlciB2aWEgY29uc3QgcmVm
ZXJlbmNlcyBvciBwb2ludGVycyB3aGVyZSBpdCdzIGVhc3kKKyAgICAgICAgdG8gZG8gc28uCisg
ICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91cjsgY292ZXJlZCBieSBleGlz
dGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpET01D
YWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpjbGVhbik6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eUNvbnN1bWVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFz
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c0Jsb2IpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQp
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZSk6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbW9k
ZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
b2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxF
bGVtZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVu
dDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURh
dGE6OlJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzQnVmZmVyZWREYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
OjpyZXNvdXJjZURhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0
dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmFwcGVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmNsZWFyKToKKyAgICAgICAg
KFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAg
ICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVT
aGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJu
YWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRl
ZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6
OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGlu
Zyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50Lmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRT
Y3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6
ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hl
ZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVz
b3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRv
Q2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6YXBwZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNOdWxsIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyOjplbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXJCdWlsZGVyOjpnZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVp
bGRlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
Ojp0YWtlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVuc3VyZUJ1
ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6SW5pdERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0
RGF0YTo6cGF5bG9hZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRJQ0NQcm9m
aWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3Iu
bW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhOjpEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25z
ZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VS
ZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEpOgorICAgICAg
ICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcjo6U2NyaXB0QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6dG9T
dHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpjb250YWluc1Np
bmdsZUZpbGVNYXBwZWRTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpidWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVl
c3Q6OldvcmtlckZvbnRMb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250
TG9hZFJlcXVlc3Q6OmlzUGVuZGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJG
b250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0Lmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdCk6
CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKToK
KyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVm
ZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGln
dW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBp
bW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGNhbGxpbmcgU2hhcmVkQnVmZmVyOjpk
YXRhKCkgdGhlIHVuZGVybHlpbmcgZGF0YSB3YXMgZmxhdHRlbmVkLAorICAgICAgICBhbmQgc28g
Y291bGQgYmUgbXV0YXRlZCB3aGlsZSBiZWluZyBzaGFyZWQuIFRoaXMgd2FzIGFuIHVuZGVzaXJh
YmxlCisgICAgICAgIGJlaGF2aW91ci4KKyAgICAgICAgV2UgaW50cm9kdWNlIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIgd2hpY2ggZ3VhcmFudGVlIHRoYXQgaXRzIGNvbnRlbnQgaXMgbWFkZQorICAg
ICAgICBvZiBjb250aWd1b3VzIGRhdGEuCisgICAgICAgIEFsbCBtZXRob2RzIHRoYXQgd291bGQg
aGF2ZSBtdXRhdGVkIGEgU2hhcmVkQnVmZmVyIHdoZW4gYmVpbmcgZmxhdHRlbmVkIGFyZQorICAg
ICAgICBtb3ZlZCB0byBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorCisgICAgICAgIEFyZWEgd2hl
cmUgU2hhcmVkQnVmZmVycyB3ZXJlIGFsd2F5cyBjcmVhdGVkIHdpdGggYSBzaW5nbGUgc2VnbWVu
dCB3aGVyZQorICAgICAgICBjb252ZXJ0ZWQgdG8gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgor
ICAgICAgICBQcmV2aW91c2x5LCBhIFNoYXJlZEJ1ZmZlciB3b3VsZCBoYXZlIGJlZW4gZmxhdHRl
bmVkIG9ubHkgaWYgaXQgbmVlZGVkIHRvIGJlCisgICAgICAgIGFuZCBvbmx5IHdoZW4gdGhlIGRh
dGEgd2FzIGdvaW5nIHRvIGJlIGFjY2Vzc2VkOyBmb2xsb3dpbmcgdGhpcyBjaGFuZ2UKKyAgICAg
ICAgdGhlIGNvbnZlcnNpb24gaXMgbm93IGV4cGxpY3RseSBkb25lIHRocm91Z2ggYSBjYWxsIHRv
IG1ha2VDb250aWd1b3VzLgorICAgICAgICBUaGlzIGNvbnZlcnNpb24gaXMgYSBuby1vcCBpZiB0
aGUgU2hhcmVkQnVmZmVyIGJlaW5nIGNvbnZlcnRlZCB3YXMgYWxyZWFkeQorICAgICAgICBhIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisgICAgICAgIFdpdGggdGhlIG5hdHVyZSBvZiBhIFNoYXJl
ZEJ1ZmZlciBiZWluZyBzaGFyZWQgYnkgcG90ZW50aWFsbHkgbXVsdGlwbGUKKyAgICAgICAgdXNl
cnMgaXQgd2FzIG5lY2Vzc2FyeSB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIGNvbnZlcnNpb25zIGJl
aW5nIHBlcmZvcm1lZAorICAgICAgICBvbiBkZW1hbmQgdG8gYXZvaWQgcmVkdW5kYW5jeS4KKyAg
ICAgICAgV2hlbiB0aGUgZmxhdHRlbmluZyBjb3VsZCBoYXZlIG9jY3VyZWQsIHRoZSBTaGFyZWRC
dWZmZXIgY3JlYXRpb24gcG9pbnRzIHdlcmUKKyAgICAgICAgdHJhY2VkIGJhY2sgYW5kIGlkZW50
aWZpZWQgdG8gbWFrZSB0aGUgYnVmZmVyIGNvbnRpZ3VvdXMgdGhlbi4KKyAgICAgICAgSW4gdGhl
IGVuZCwgdGhlcmUncyBubyBtb3JlIFNoYXJlZEJ1ZmZlciBmbGF0dGVuaW5nIG9wZXJhdGlvbnMg
dGhhbiB0aGVyZQorICAgICAgICB3b3VsZCBoYXZlIGJlZW4gYmVmb3JlIHRoaXMgY2hhbmdlLgor
ICAgICAgICBUaGVyZSdzIGEgcG90ZW50aWFsIGluY3JlYXNlIG9mIHRlbXBvcmFyeSBtZW1vcnkg
dXNhZ2Ugd2l0aCB0aGUKKyAgICAgICAgU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIgY2xhc3M7
IGJ1ZyAyMzM1MTEgaXMgdHJhY2tpbmcgaXQuCisKKyAgICAgICAgV2hpbGUgdGhlIGNoYW5nZSBp
cyBleHRlbnNpdmUsIGNvZGUgY292ZXJhZ2Ugb2YgdGhlIG1vZGlmaWVkIGFyZWFzIGlzIHRob3Jv
dWdoCisgICAgICAgIHdoaWNoIG1ha2VzIHVuZGV0ZWN0ZWQgcmVncmVzc2lvbnMgdW5saWtlbHku
CisKKyAgICAgICAgSW4gYnVnIDIzMzQ0MiwgYSBTaGFyZWRCdWZmZXIgd2lsbCBiZSBtYWRlIGNv
bXBsZXRlbHkgaW1tdXRhYmxlIG9uY2UgY3JlYXRlZC4KKworICAgICAgICBObyBvYnNlcnZhYmxl
IGNoYW5nZS4KKyAgICAgICAgQ292ZXJlZCBieSBhbGwgZXhpc3RpbmcgdGVzdHMuIE5ldyBBUEkg
dGVzdHMgY3JlYXRkZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5p
dGl6ZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9z
L0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJk
SW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hl
L0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxCb2R5U2l6ZSk6CisgICAgICAgICogTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjppc29sYXRlZFJlc3BvbnNlQm9keSk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Y29weVJlc3BvbnNlQm9keSk6CisgICAg
ICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oOgorICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0S2V5SURzS2V5aWRzKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplS2V5aWRzKToK
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmtleUlkc01hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
S2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6bmV4dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OnRha2UpOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCk6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayk6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YSk6CisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHQ6OmVuY29kZSBjb25z
dCk6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OnNlcmlhbGl6ZUlEQktleURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJpYWxpemF0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNy
ZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4
aXN0c0luT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldElu
ZGV4UmVjb3JkRm9yT25lS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpnZXRDb3VudCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElm
TmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQpOgorICAgICAgICAqIE1v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVz
L21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVSZXNwb25z
ZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJT
b3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6bG9hZCk6CisgICAgICAgICogY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKToKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1l
bnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQpOgorICAgICAgICAqIGVkaXRpbmcvY29j
b2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2ht
ZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvclVSTCk6CisgICAgICAgIChm
aWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVu
dFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0
aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RNYXJrdXBBbmRBcmNoaXZl
KToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50
TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgor
ICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGly
ZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBsYXRlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNv
bnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxv
YWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodCk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KToKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAg
KiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseSk6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSk6CisgICAgICAgICogbG9hZGVyL2Fy
Y2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0
UGFydCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6c2hlZXRUZXh0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
Rm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9u
dDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6
Y2hlY2tOb3RpZnkpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
Zyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6OnJlc291cmNlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRG9j
dW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdG
b250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZv
bnREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
VGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZG9VcGRh
dGVCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6RGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21D
RlVSTENhY2hlZFJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0b3I6
OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZCk6CisgICAgICAgICogcGFnZS9FZGl0b3JDbGllbnQu
aDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXNl
clN0eWxlU2hlZXQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKToKKyAg
ICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEu
aDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL0tl
eWVkQ29kaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAq
IHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRl
ckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3Vv
dXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpzaXplIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzQ29udGlndW91cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpoYXNP
bmVTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0ciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OnV0ZjhCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6RGF0YVNlZ21lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRp
YVNlc3Npb25NYW5hZ2VyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9L
ZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJDRjo6Zmlu
aXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VElGRlRvUE5H
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNl
Y3VyaXR5Q2hlY2spOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29h
Lm1tOgorICAgICAgICAoLVtXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBpbml0V2l0aERhdGFTZWdt
ZW50OnBvc2l0aW9uOnNpemU6XSk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4
dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFj
dEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXll
ZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVy
aWM6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5j
b2RlckdlbmVyaWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2Rpbmcp
OgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnQ6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpNb2RlbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVhZFVJbnQz
Mik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVUludDE2KToKKyAgICAgICAgKFdlYkNvcmU6Omlz
V09GRik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V09GRlRvU2ZudCk6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpleHRyYWN0U2luZkRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6cGFyc2VKU09OVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMp
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6
YXBwZW5kRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1
bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZv
cm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1h
cHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om1hcmt1cFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OmV4dHJhY3RD
ZW5jSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6SW5p
dERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1
bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRo
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEl0YWxpY3NDb3JyZWN0
aW9uSW5mbzo6Z2V0SXRhbGljQ29ycmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpP
cGVuVHlwZTo6TWF0aEdseXBoSW5mbzo6bWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R2x5cGhBc3NlbWJseTo6Z2V0QXNzZW1ibHlQ
YXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3Ry
dWN0aW9uOjpnZXRTaXplVmFyaWFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aFZhcmlhbnRzOjptYXRoR2x5cGhDb25zdHJ1Y3Rp
b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aENv
bnN0YW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjpt
YXRoR2x5cGhJbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFi
bGU6Om1hdGhWYXJpYW50cyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjp2YWxp
ZGF0ZVRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OmlzVmFs
aWRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVQ
dHIpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6dmFsaWRhdGVPZmZz
ZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlV2l0aENvdmVyYWdl
OjpnZXRDb3ZlcmFnZUluZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5hbWVG
b250KToKKyAgICAgICAgKFdlYkNvcmU6OnJlbmFtZUFuZEFjdGl2YXRlRm9udCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U3Vic3RpdHV0aW9uU3ViVGFibGU6OmNvdmVy
YWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMb29rdXBUYWJsZTo6Z2V0
U3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3Vw
TGlzdDo6bG9va3VwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJl
VGFibGU6OmdldEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpP
cGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmaW5kRmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6TGFuZ1N5c1RhYmxlOjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRUYWJsZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OnNjcmlwdCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6ZGVmYXVsdFNjcmlwdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6ZGVmYXVsdExhbmdTeXMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6c2NyaXB0TGlz
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpmZWF0dXJl
TGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpsb29r
dXBMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmRl
ZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFi
bGU6OmZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJs
ZTo6Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6bG9hZEhtdHhUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0
YTo6bG9hZE1ldHJpY3MpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERhdGE6
OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uRGF0YTo6c2V0Q3VzdG9tRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rp
b25EYXRhOjpjdXN0b21EYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFk
SUNDUHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQ
cm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRX
cml0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJdGVtUHJvdmlkZXJSZWdpc3Ry
YXRpb25MaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1
ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpmaWxlV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkQnVm
ZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6
cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW06CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVBhc3RlYm9hcmRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlciBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAg
KC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOnJlY2VpdmVkRGF0YTpdKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpwcm9jZXNzQ29udGVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZCk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpj
dXJsRGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKiB0
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnNh
bml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNl
OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFu
Y2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckZldGNoOjpwcm9jZXNzUmVzcG9uc2UpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFn
ZTo6cmV0cmlldmUpOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJGdW5jKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuRnVuYyk6
CisKIDIwMjEtMTItMDMgIEFsaWNpYSBCb3lhIEdhcmPDrWEgIDxhYm95YUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtNU0VdIEZpeCBlcmFzZSByYW5nZSB0byBwcmV2ZW50IGFjY2lkZW50YWwgZGVs
ZXRpb24gaW4gZmlsZXMgd2l0aCBjaGFuZ2luZyBkdXJhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTZlYTFl
NDBiYjRiNzE2MzU3NTE0NDU5ZWJiZmNkMGRjNDg1ZjI4ZS4uNjMyMDkwYjJiY2FmYTcwYmU5OWFl
YTFjMjUxZmY3ZWM1NzI3ZTljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MTcgQEAKKzIwMjEtMTIt
MDIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5n
dWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQg
Z3VhcmFudGVlIGltbXV0YWJpbGl0eTogcGFydCAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OnVu
cmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVtb3ZlU2Vzc2lvbkRh
dGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2Vu
ZE1lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzSW5pdERhdGEp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZSk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y3JlYXRlRGVjb2Rlcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXREYXRhKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0Ojpjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0RhdGFUYXNrQmxvYi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Js
b2I6OmNvbnN1bWVEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hy
b25vdXNSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzZW5kQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFz
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVy
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
Q2FjaGU6Om1ha2VFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6
OnN0b3JlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OkVudHJ5KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6aW5pdGlhbGl6ZUJ1ZmZlckZyb21TdG9yYWdlUmVj
b3JkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6YnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRy
eS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVM
b2FkOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9QcmVmZXRjaENhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJlZmV0Y2hDYWNoZTo6
RW50cnk6OkVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6UHJlZmV0Y2hDYWNoZTo6c3RvcmUpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaDoKKyAgICAgICAg
KFdlYktpdDo6UHJlZmV0Y2hDYWNoZTo6RW50cnk6OnJlbGVhc2VCdWZmZXIpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKC1b
V0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURh
dGE6XSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2Vp
dmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNr
Q3VybC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJUEM6
OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVm
ZmVyQ29weSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5oOgorICAgICAgICAqIFNoYXJlZC9BUElXZWJBcmNoaXZlLm1tOgorICAgICAgICAo
QVBJOjpXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKToKKyAgICAgICAgKiBTaGFyZWQvQVBJV2ViQXJj
aGl2ZVJlc291cmNlLm1tOgorICAgICAgICAoQVBJOjpXZWJBcmNoaXZlUmVzb3VyY2U6OldlYkFy
Y2hpdmVSZXNvdXJjZSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpG
b250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVuY29kZVNoYXJlZEJ1ZmZlcik6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZW5j
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmVuY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpN
ZXNzYWdlPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdERhdGE6OldlYkhpdFRlc3RSZXN1bHREYXRhKToKKyAg
ICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZW5jb2RlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjplbmNs
b3NpbmdJbWFnZURhdGEgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNo
bWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAg
ICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNo
bWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURh
dGEgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVUYXNr
Lm1tOgorICAgICAgICAoLVtXS1VSTFNjaGVtZVRhc2tJbXBsIGRpZFJlY2VpdmVEYXRhOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJY29uRGF0YWJhc2U6OmxvYWRJY29uRm9yUGFnZVVSTCk6CisgICAgICAgIChXZWJL
aXQ6Okljb25EYXRhYmFzZTo6c2V0SWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcDoKKyAgICAgICAgKHdlYmtpdFVS
SVNjaGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L0Ryb3BUYXJnZXRHdGs0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6YWNjZXB0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6
TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNl
bmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQ
cm90b2NvbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JQcm90
b2NvbEhhbmRsZXI6OnBsYXRmb3JtU3RhcnRUYXNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5z
cGVjdG9yL3dpbi9JbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXI6OnBsYXRmb3JtU3Rh
cnRUYXNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlw
Ym9hcmRHdGszLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVhZEJ1ZmZlckFzeW5jRGF0YTo6UmVh
ZEJ1ZmZlckFzeW5jRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkNsaXBib2FyZDo6cmVhZEJ1ZmZl
cik6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVhZEJ1ZmZlckFzeW5jRGF0YTo6UmVhZEJ1ZmZlckFzeW5jRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OkNsaXBib2FyZDo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRQcm9t
aXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9y
SW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c3VwcG9ydHNJbml0RGF0YSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RGF0YSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0
ZUltYWdlRGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRk1h
bmFnZXI6OnNldFVzZUdQVVByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29u
dmVydFRvU2hhcmVkQnVmZmVyQ29weSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UmVjb3JkZXJQcml2YXRlOjpmZXRjaERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oOgorICAgICAg
ICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVx
dWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJj
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2Up
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6YWRkQXJjaGl2ZVJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1
Z2luOjpsaXZlUmVzb3VyY2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2lu
Ojp3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVy
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25zdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjps
b2FkRGF0YUluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkRGF0YUltcGwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmxvYWRBbHRlcm5hdGVIVE1MKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
bG9hZFNpbXVsYXRlZFJlcXVlc3RBbmRSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6cmVzb3Vy
Y2VEYXRhRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZXNvdXJjZURh
dGFGcm9tRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNp
b25Gb3JJY29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlQXR0YWNobWVudEF0
dHJpYnV0ZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwOgorICAgICAgICAobG9h
ZFJlc291cmNlSW50b0J1ZmZlcik6CisKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisg
ICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtM
b2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmJ1ZmZlcmluZ1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZl
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6
OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2No
ZW1lVGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3
OjpQbHVnaW5WaWV3KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERp
ZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3RyZWFt
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZhaWwpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuaDoKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgor
CisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNv
bnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1
MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpzZW5k
UmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmVuY29kZSk6CisgICAg
ICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Q2FjaGU6OmRlY29kZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQgY29uc3QpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgIChJUEM6OlNo
YXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuaDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVy
Q29weSk6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlcik6CisgICAgICAg
IChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgICogUGxhdGZv
cm0vU2hhcmVkTWVtb3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVh
dGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5o
OgorICAgICAgICAqIFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW06CisgICAgICAgIChB
UEk6OldlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dl
YkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVh
YmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6d3Jh
cEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6Okhh
bmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvU2hh
cmVhYmxlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcDoKKyAgICAgICAgKElQQzo6ZGVjb2RlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKElQQzo6
ZW5jb2RlVHlwZXNBbmREYXRhKToKKyAgICAgICAgKElQQzo6ZGVjb2RlVHlwZXNBbmREYXRhKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5j
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3Jk
Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6RW50cnk+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVj
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1lbnRD
b2RlcnNHdGsuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2lu
LmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0
Zm9ybURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHA6Cisg
ICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBj
b25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVw
cmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAg
ICAgICAoQVBJOjpnZXREYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0
dGFjaG1lbnRDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6dXBk
YXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc3RvcmVBcHBIaWdo
bGlnaHQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0
YUZvckltYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnByb3ZpZGVEYXRhRm9y
UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlz
ZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hl
bWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OndpdGhTZW5k
ZXI6XSk6CisgICAgICAgIChhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdpbik6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2hhcmVFbGVtZW50
V2l0aEltYWdlOnJlY3Q6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1
bmRsZUVkaXRvckNsaWVudC5oOgorICAgICAgICAoQVBJOjpJbmplY3RlZEJ1bmRsZTo6RWRpdG9y
Q2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIgX3NldEVkaXRpbmdEZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OnJlbGVhc2VTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3JlYXRl
RmlsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
Q2FjaGVSZXNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFz
dGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50
OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFn
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWU6OnNvdXJjZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRE
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbiBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRi
eSBjb25zdCk6CisKIDIwMjEtMTItMDMgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgRGVyaXZlZFNvdXJjZXMvV2ViS2l0MiB0byBEZXJp
dmVkU291cmNlcy9XZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggZDc3NmU4MmRmMTMyY2Fm
NjUyNzkzYTc5YTAwODNhZDY1NTlkYzI2NS4uNDNhMTgwNGQ1MGRmOTI3MzM2ZTNmNWQ1ODNhMTY4
OTNlNDFiYTA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0x
Mi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rp
bmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFu
ZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oOgor
CiAyMDIxLTExLTEyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBN
YWtlIHNvcnQtWGNvZGUtcHJvamVjdC1maWxlIGlkZW1wb3RlbnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwppbmRleCA3NmFhNmFhZjg0ZGViMDgyZTRjODQzMjI0OTMzODBkODMzZGU5MmQxLi40
MjEzYjQ3M2E4ZjQ5MjU3MDI2YmIzNTlhMDg4MDE5NzVmNWIzN2UyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjEtMTItMDIgIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNo
YXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJp
bGl0eTogcGFydCAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzM2NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y3JlYXRlUHJldmlld0xvYWRlckNsaWVudCk6CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbnMpOgorICAgICAgICAoV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24pOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAgICogV2ViVmlldy9XZWJBcmNoaXZlLm1t
OgorICAgICAgICAoLVtXZWJBcmNoaXZlIGluaXRXaXRoRGF0YTpdKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0YV0pOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9sb2Fk
RGF0YTpNSU1FVHlwZTp0ZXh0RW5jb2RpbmdOYW1lOmJhc2VVUkw6dW5yZWFjaGFibGVVUkw6XSk6
CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJl
TWVudUl0ZW0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgt
W1dlYlJlc291cmNlIGluaXRXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIF9p
bml0V2l0aERhdGE6VVJMOk1JTUVUeXBlOnRleHRFbmNvZGluZ05hbWU6ZnJhbWVOYW1lOnJlc3Bv
bnNlOmNvcHlEYXRhOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToK
KworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAg
ICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3Vv
dXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00v
RE9NVUlLaXRFeHRlbnNpb25zLm1tOgorICAgICAgICAoLVtET01IVE1MSW1hZ2VFbGVtZW50IGRh
dGFSZXByZXNlbnRhdGlvbjpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06Cisg
ICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
RGF0YVNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAg
ICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgICgtW1dlYkhUTUxS
ZXByZXNlbnRhdGlvbiBkb2N1bWVudFNvdXJjZV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRN
TFZpZXcubW06CisgICAgICAgIChjcmVhdGVTaGFyZU1lbnVJdGVtKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlJlc291cmNlLm1tOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBlbmNvZGVXaXRoQ29k
ZXI6XSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIGRhdGFdKToKKyAgICAgICAgKC1bV2ViUmVz
b3VyY2UgX3N0cmluZ1ZhbHVlXSk6CisKIDIwMjEtMTItMDIgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBIb29rIHVwIG5hdmlnYXRv
ci5ncHUucmVxdWVzdEFkYXB0ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDAy
ZTk0NmJjMWZiMGIzNTZiYjE1YWI4MzYwZTg2MTQ1NTQ3MjQ3Y2MuLmE4NTI4ZjIwYTFlZTI1NDY5
YjNhMmMxMjI3MDdkNDA1YjY2YzYxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1MiBAQAorMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20g
bm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViRnJhbWU6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYkZyYW1lOjps
b2FkUGxhaW5UZXh0U3RyaW5nKToKKyAgICAgICAgKFdlYkZyYW1lOjpsb2FkSFRNTFN0cmluZyk6
CisgICAgICAgICogV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJLaXRETEwuY3BwOgorICAgICAg
ICAobG9hZFJlc291cmNlSW50b0J1ZmZlcik6CisKKzIwMjEtMTItMDEgIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBj
bGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMz
NDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6
OmxvYWREYXRhKToKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20g
bm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRh
cjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBNZW1vcnlTdHJlYW0uY3BwOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpNZW1vcnlT
dHJlYW0pOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAg
ICogTWVtb3J5U3RyZWFtLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChX
ZWJBcmNoaXZlOjpkYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJEYXRhU291cmNlOjpkYXRhKToKKyAg
ICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZTo6Y3JlYXRlSW5z
dGFuY2UpOgorICAgICAgICAqIFdlYlJlc291cmNlLmg6CisKIDIwMjEtMTItMDIgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBNYWtlIFdlYiBMb2NrIEFQ
SSB3b3JrIGFjcm9zcyBtdWx0aXBsZSBXZWJQcm9jZXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IGVhY2NhMmMyMzNhOGE2OTM3MTU5MDgwN2Rm
ZDM2NzViMDYxNTk0MjguLmI0NjkzZjkxYzYwN2Q4ZDA3NDU5NDY0NmU4ZGM0MzcyZTliYzk5ZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMTI5
LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRy
PEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoQXJyYXlCdWZmZXImKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291
cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAKLSAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhD
bGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIuCisgICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFy
cmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkIGFuZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlci4KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFy
cmF5QnVmZmVyPiBjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWdu
ZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRy
PEFycmF5QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywg
dW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3Bw
CmluZGV4IDMzNTRiNTJhNTBjYmIxODlmZGZhZWI3ZDgyNDgzYmUwYzQxYzNkNGUuLmRhMzM2ZTZm
NWIxNjk0ZTM3NDc2OTBjNDNkMmI1M2YzNTE4YzA5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJl
YWRlci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVBM
QVRGT1JNKENPQ09BKQogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lkIENs
aXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAppbmRleCAyYjYyNjI4NDE5YjA5Y2JiNjk1
NTIxNWIwZDVkN2Q3M2MwYjM3NDRkLi42ZTIyMDQ4Y2Y1ZmVhOWFhNjJkYWRmNDViMWYzNWM0Y2Uw
ZDdkNmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXIgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgQ2xpcGJvYXJkSW1hZ2VSZWFkZXIo
RG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQpAQCAtNDcsNyArNDcs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFs
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihj
b25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAg
ICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IGQw
NzQ2ZGEyZGEyMDllMDIzMjViNWZhMjE0ZGJlZTY0YmY5YzkwNzguLmVmZjEwYjViNjVmZDgxYWQ5
YmEzMmY4MGIzZjJjZjJmOGU5OGYxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0yMTYsOCArMjE2LDggQEAgdm9pZCBDbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlOjppbnZva2VDb21wbGV0aW9uSGFuZGxlcigpCiAgICAgICAg
IGF1dG8mIGRhdGEgPSBpdGVtVHlwZUxvYWRlci0+ZGF0YSgpOwogICAgICAgICBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRhdGEpICYmICEhc3RkOjpnZXQ8U3RyaW5nPihkYXRh
KSkKICAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVTdHJpbmcodHlwZSwgc3RkOjpnZXQ8U3Ry
aW5nPihkYXRhKSk7Ci0gICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
PFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQotICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEo
dHlwZSwgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpLmNvcHlSZWYoKSk7CisgICAg
ICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PihkYXRhKSkKKyAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIHN0
ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZGF0YSkuY29weVJlZigpKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQp
OwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjY1LDkgKzI2NSw5IEBAIHZvaWQgQ2xpcGJvYXJk
SXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXpl
RGF0YUlmTmVlCiB7CiAgICAgaWYgKG1fdHlwZSA9PSAidGV4dC9odG1sIl9zKSB7CiAgICAgICAg
IFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewotICAgICAgICAgICAgYXV0byYgYnVm
ZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Ci0gICAgICAgICAgICBt
YXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKKyAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9
IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKKyAgICAgICAg
ICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBtYXJrdXBU
b1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwogCkBAIC0yNzgsOSArMjc4LDkg
QEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlw
ZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKICAgICB9CiAKICAgICBpZiAobV90eXBlID09ICJp
bWFnZS9wbmciX3MpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5p
dGl6ZTsKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZl
cj4+KG1fZGF0YSkpCi0gICAgICAgICAgICBidWZmZXJUb1Nhbml0aXplID0gc3RkOjpnZXQ8UmVm
PFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkucHRyKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplOworICAgICAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpCisgICAgICAg
ICAgICBidWZmZXJUb1Nhbml0aXplID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PihtX2RhdGEpLnB0cigpOwogICAgICAgICBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSB1dGY4
QnVmZmVyKHN0ZDo6Z2V0PFN0cmluZz4obV9kYXRhKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaAppbmRleCAyY2MyYzhlMWE1NGUxOGQ3MzQ5NWM1MzBj
ZDc3ZDU0Zjk5YTUyOWE3Li4zN2M4MjVlMjM1YThhOGI3ZTQ0ZTQwZmIwYzJkNzcyNDQwN2E3NTg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCkBAIC0z
OCw3ICszOCw3IEBAIGNsYXNzIERPTVByb21pc2U7CiBjbGFzcyBGaWxlUmVhZGVyTG9hZGVyOwog
Y2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZSA6IHB1YmxpYyBDbGlwYm9hcmRJ
dGVtRGF0YVNvdXJjZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Myw3ICs1
Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7CiAK
LSAgICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFy
ZWRCdWZmZXI+PjsKKyAgICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJp
bmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgY2xhc3MgQ2xpcGJvYXJkSXRl
bVR5cGVMb2FkZXIgOiBwdWJsaWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCwgcHVibGljIFJlZkNv
dW50ZWQ8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0
YXRpYyBSZWY8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHR5
cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9h
cmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUy
ODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi4yNzRlMDM4ZDQxODcwMTYxZTRlZWI4MGMxMmFiYmE4
NzFmOWQ0YTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBA
IC0zNCwxMCArMzQsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIp
IHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFu
Y2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAg
ICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRX
aXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7
CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9IFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFn
ZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jlc3VsdCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50
LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obnNEYXRhLmJ5dGVz
KSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVUeXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXggYjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkx
MzE3ODY5ZGE3ZTViZi4uMzgyMWIwMzcxODAyODIzZDY5YTgzMGEzMTBkYTM0NzA4ZDYzMzA3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0Ns
aXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMzMsMTAgKzMz
LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRl
cjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAg
IGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMo
W1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBjZ0ltYWdlID0gW2ltYWdl
IENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0pIHsKICAg
ICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRpb24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJl
cCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2VdKTsKICAgICAgICAgICAgIE5TRGF0YSog
bnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFw
SW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCBlNmNjMWFhZTc4M2E1MjA5NGY2NTQ5OWJiOTBkZDdm
MDA3MWQ0MjRjLi5mMDVjMjMzMDdiYzVhMGU1ODJkZGNkODYwZDViYjFhMWIzMDkzMjUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMjg5LDcgKzI4OSw3
IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBz
aXplX3QgcmVjb3JkUG9zaXRpb24gPSB0YXNrSGFuZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVjdGlv
blJlY29yZChyZXF1ZXN0LmdldCgpLCByZXNwb25zZSwgbnVsbHB0cikpOwogCi0gICAgICAgICAg
ICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZN
b3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0
YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRhc2tIYW5kbGVyLT5p
c0RvbmUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTksOSArMjk5LDkg
QEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAg
ICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwor
ICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6
ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5k
bGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRh
dGEpKTsKKyAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShy
ZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0
b3JzKCkuZmV0Y2gpOwogICAgIH0KQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIERPTUNhY2hlOjpw
dXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJl
ZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlm
IChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAg
ICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBib2R5ID0gYnVmZmVy
LT5tYWtlQ29udGlndW91cygpOwogICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCks
IHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lk
PiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2
ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CkBAIC0zNzUsNyArMzc1LDcgQEAg
dm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+
JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVjZWl2
ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5nZXQo
KTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9u
c2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHBl
bmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYg
cmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZl
ZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShy
ZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyks
IHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBpZiAocmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNl
RGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNl
KSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0zODMsOSAr
MzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNo
UmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAg
ICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAg
ICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEo
V1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShkYXRhKSB9KTsKKyAgICAgICAgICAgICAgICB0
aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVz
dCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IGRhdGEudGFrZSgp
LT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAK
aW5kZXggMjU5MTRiNDBiYjIzODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uYzBmODAzMmIw
NDUyYzM3ZWU0Y2FmYmNhZmQ3OWYwOWQyMTQ2MzMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCBSZXNw
b25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQog
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZv
cm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xh
dGVkQ29weSgpOwogICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+
IFJlc3BvbnNlQm9keSB7Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICAgICAg
cmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIFNoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFu
ZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3Qm
KSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3Bv
bnNlQm9keSB7IH07CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETS5jcHAKaW5kZXggMjg1MGRiYTFlM2JmYTExZjQ4OWI0NDQwMzUxM2Q1MWFlMWJl
YWQzYS4uOWQxYmM2NzRmYzgyNmNiNmQxNmQwMjUxMGNmODQwMTBhZGNiZDc3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAtMTM1LDE3ICsx
MzUsMTcgQEAgYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+
c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEp
CiB7CiAgICAgcmV0dXJuIEluaXREYXRhUmVnaXN0cnk6OnNoYXJlZCgpLnNhbml0aXplSW5pdERh
dGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CiB9CiAKLWJvb2wgQ0RNOjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkKK2Jvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAg
ICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEoaW5pdERh
dGFUeXBlLCBpbml0RGF0YSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRp
emVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQorUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiByZXNwb25zZSkKIHsKICAgICBpZiAoIW1fcHJpdmF0ZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0u
aAppbmRleCBkOGE0YjNhZjEyZjFhNzkyM2Q4ODcwNWQ1Yjk1ODFkMzZmMTAyNzBjLi5kN2IxZDUz
ZDA0OTFmNzI3NzliNTk0YjJkODNjMDliODNiY2YyMDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgQ0RNSW5z
dGFuY2U7CiBjbGFzcyBDRE1Qcml2YXRlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNIDogcHVibGljIFJlZkNvdW50ZWQ8Q0RNPiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPENETT4sIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIg
ewogcHVibGljOgpAQCAtNzMsMTAgKzczLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRz
U2Vzc2lvbnMoKSBjb25zdDsKICAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0
b21TdHJpbmcmKSBjb25zdDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
KTsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNs
aWVudC5oCmluZGV4IDIxZTUyZjRiNzE0ZmI5MWY2N2NmYzM5NjEzOWMxNjUyNWJmYjdiOWIuLjQx
MGVkMmZiNjQyNzU2MmNlOWJkOGVkYTRkOTFhODZiYTk4Y2FhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaApAQCAtMzYsMTQgKzM2
LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENETUluc3RhbmNlOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RN
Q2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPENETUNsaWVudD4gewogcHVibGljOgogICAg
IHZpcnR1YWwgfkNETUNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCBjZG1D
bGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNv
bnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJp
bmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4
ZDJlNDBhMzQxYTY3MDc0NDBmMmQ1Ni4uNmY4ODhlMTc4NThkZGE2ZDk0NzFlYzFmNmVmNWQwNjZk
ZjBlNDk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCkBAIC01NCwxMyArNTQsMTMgQEAgbmFtZXNw
YWNlIHsKICAgICBjb25zdCB1aW50MzJfdCBrS2V5SWRzTWF4S2V5SWRTaXplSW5CeXRlcyA9IDUx
MjsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4g
ZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0
S2V5SURzS2V5aWRzKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICAvLyAxLiBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1l
ZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKICAgICBpZiAo
YnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRh
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBq
c29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBh
cnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5
aWRzKGNvbnN0IFNoYXJlZAogICAgIGlmICgha2lkc0FycmF5KQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAg
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwogICAgIGZvciAoYXV0
byYgdmFsdWUgOiAqa2lkc0FycmF5KSB7CiAgICAgICAgIGF1dG8ga2V5SUQgPSB2YWx1ZS0+YXNT
dHJpbmcoKTsKICAgICAgICAgaWYgKCFrZXlJRCkKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlk
cyhjb25zdCBTaGFyZWQKICAgICByZXR1cm4ga2V5SURzOwogfQogCi1zdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitz
dGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyAxLiBGb3JtYXQKICAg
ICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3Ry
eS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKQEAgLTEwNCwxNCArMTA0LDE0IEBAIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
YXV0byBraWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRvJiBi
dWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1ZSgpKQotICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJp
bmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KSk7CisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmlu
ZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKICAg
ICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShraWRzQXJyYXkpKTsKIAogICAgIENT
dHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgo
KSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0
aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdFBz
c2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25h
bDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRl
ckJveD4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDQuIENvbW1vbiBTeXN0
ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2Vu
Y3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1z
eXN0ZW0KQEAgLTE1MSw5ICsxNTEsOSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaQogICAgIHJl
dHVybiBwc3NoQm94ZXM7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURz
OwogCiAgICAgYXV0byBwc3NoQm94ZXMgPSBleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoYnVmZmVy
KTsKICAgICBpZiAoIXBzc2hCb3hlcykKQEAgLTE4NSw3ICsxODUsNyBAQCBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJ
RHNDZW5jKGNvbgogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5p
dGl6ZUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8v
IDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2Vu
Yy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAgLTE5NSw3ICsxOTUsNyBAQCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0
aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplV2ViTShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gQ2hlY2sgaWYgdGhlIGJ1ZmZl
ciBpcyBhIHZhbGlkIFdlYk0gaW5pdERhdGEuCiAgICAgLy8gVGhlIFdlYk0gaW5pdERhdGEgaXMg
dGhlIENvbnRlbnRFbmNLZXlJRCwgc28gc2hvdWxkIGJlIGxlc3MgdGhhbiBrV2ViTU1heENvbnRl
bnRFbmNLZXlJRFNpemUuCkBAIC0yMDUsMTAgKzIwNSwxMCBAQCBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJl
dHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzV2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+PiBleHRyYWN0S2V5SURzV2ViTShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkQnVmZmVyID0gc2FuaXRpemVXZWJNKGJ1ZmZlcik7
CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdl
Yk0oYnVmZmVyKTsKICAgICBpZiAoIXNhbml0aXplZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIApAQCAtMjMzLDcgKzIzMyw3IEBAIEluaXREYXRhUmVnaXN0cnk6OkluaXRE
YXRhUmVnaXN0cnkoKQogCiBJbml0RGF0YVJlZ2lzdHJ5Ojp+SW5pdERhdGFSZWdpc3RyeSgpID0g
ZGVmYXVsdDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRp
emVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVn
aXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBpdGVyID0g
bV90eXBlcy5maW5kKGluaXREYXRhVHlwZSk7CiAgICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQo
KSB8fCAhaXRlci0+dmFsdWUuc2FuaXRpemVJbml0RGF0YSkKQEAgLTI0MSw3ICsyNDEsNyBAQCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYQogICAgIHJldHVybiBpdGVyLT52YWx1ZS5zYW5pdGl6ZUlu
aXREYXRhKGJ1ZmZlcik7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0
cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3R5cGVzLmZpbmQo
aW5pdERhdGFUeXBlKTsKICAgICBpZiAoaXRlciA9PSBtX3R5cGVzLmVuZCgpIHx8ICFpdGVyLT52
YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaAppbmRleCBjZDEzODdhNmJkMDM4
ZmYzNGUyY2ZiNzVmNDQzZGU3ZDk0MDMyMWIwLi43N2Q2MDRiMDhiYjdmN2UzOGJjY2IzNTQ1YjM0
YzhiMTM0MzU1ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaApAQCAtMzgsMTkgKzM4LDE5IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRl
ckJveDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIEluaXREYXRhUmVnaXN0cnkgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBJbml0RGF0YVJlZ2lzdHJ5JiBzaGFyZWQoKTsKICAgICBmcmllbmQgY2xhc3MgTmV2
ZXJEZXN0cm95ZWQ8SW5pdERhdGFSZWdpc3RyeT47CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3Qg
U2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtl
eUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKIAogICAgIHN0cnVjdCBJbml0RGF0YVR5cGVDYWxsYmFja3MgewotICAgICAg
ICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8U2hhcmVk
QnVmZmVyPihjb25zdCBTaGFyZWRCdWZmZXImKT47Ci0gICAgICAgIHVzaW5nIEV4dHJhY3RLZXlJ
RHNDYWxsYmFjayA9IEZ1bmN0aW9uPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+Pj4oY29uc3QgU2hhcmVkQnVmZmVyJik+OworICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXRE
YXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKKyAgICAgICAgdXNpbmcgRXh0cmFjdEtleUlE
c0NhbGxiYWNrID0gRnVuY3Rpb248c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+Pj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKIAogICAgICAg
ICBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgc2FuaXRpemVJbml0RGF0YTsKICAgICAgICAgRXh0
cmFjdEtleUlEc0NhbGxiYWNrIGV4dHJhY3RLZXlJRHM7CkBAIC02MSw5ICs2MSw5IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYga2V5aWRzTmFtZSgpOwogICAgIHN0YXRp
YyBjb25zdCBBdG9tU3RyaW5nJiB3ZWJtTmFtZSgpOwogCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFk
ZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwot
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJh
Y3RLZXlJRHNDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVt
U3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogcHJp
dmF0ZToKICAgICBJbml0RGF0YVJlZ2lzdHJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggOGJm
YjFjZTcwMWEyZjVhNjliNWI1MTk5MWFhODYzMmViYjg5MjVmOS4uMTQ3NzZjMjAxNTFiZmVmZTM4
MDc5YTMzNzMwYzg4NjYyNjhiYTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtMTc2LDcgKzE3
Niw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgcXVldWVUYXNrS2VlcGluZ09iamVj
dEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgaW5pdERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0
YS5kYXRhKCksIGluaXREYXRhLmxlbmd0aCgpKSwgaW5pdERhdGFUeXBlLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFi
bGUgewogICAgICAgICAvLyAxMC4xLiBJZiB0aGUgaW5pdCBkYXRhIGlzIG5vdCB2YWxpZCBmb3Ig
aW5pdERhdGFUeXBlLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJy
b3IuCiAgICAgICAgIC8vIDEwLjIuIExldCBzYW5pdGl6ZWQgaW5pdCBkYXRhIGJlIGEgdmFsaWRh
dGVkIGFuZCBzYW5pdGl6ZWQgdmVyc2lvbiBvZiBpbml0IGRhdGEuCi0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNhbml0aXplZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRp
emVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKKyAgICAgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+
c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKIAogICAgICAgICAvLyAx
MC4zLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEg
bmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIGlmICghc2FuaXRpemVkSW5pdERhdGEp
IHsKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1
ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgICAgICAg
ICAgbV9sYXRlc3REZWNyeXB0VGltZSA9IDA7CiAgICAgICAgIH0KIAotICAgICAgICBtX2luc3Rh
bmNlU2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UobV9zZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBz
YW5pdGl6ZWRJbml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBbdGhpcywgd2Vha1RoaXMsIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0g
KFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJv
b2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFs
dWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlcXVl
c3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUsIGluaXREYXRhVHlwZSwgc2FuaXRpemVkSW5pdERhdGEu
cmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVk
c0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNj
ZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6
dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+
JgogICAgIC8vIDYuIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgogICAgIHF1
ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywg
W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlc3BvbnNlID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5sZW5ndGgoKSksIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkg
bXV0YWJsZSB7CiAgICAgICAgIC8vIDYuMS4gTGV0IHNhbml0aXplZCByZXNwb25zZSBiZSBhIHZh
bGlkYXRlZCBhbmQvb3Igc2FuaXRpemVkIHZlcnNpb24gb2YgcmVzcG9uc2UgY29weS4KLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkUmVzcG9uc2UgPSBtX2ltcGxlbWVudGF0
aW9uLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3BvbnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+c2Fu
aXRpemVSZXNwb25zZShyZXNwb25zZSk7CiAKICAgICAgICAgLy8gNi4yLiBJZiB0aGUgcHJlY2Vk
aW5nIHN0ZXAgZmFpbGVkLCBvciBpZiBzYW5pdGl6ZWQgcmVzcG9uc2UgaXMgZW1wdHksIHJlamVj
dCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFz
YW5pdGl6ZWRSZXNwb25zZSB8fCBzYW5pdGl6ZWRSZXNwb25zZS0+aXNFbXB0eSgpKSB7CkBAIC02
MDEsNyArNjAxLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIC8vIDQuMy4gTGV0IG1lc3NhZ2UgdHlwZSBiZSBu
dWxsLgogCiAgICAgICAgIC8vIDQuNC4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93
aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEo
bV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5z
dGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxT
aGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVl
IHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZW1vdmVT
ZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgW3RoaXMsIHdlYWtUaGlzLCBw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmll
cildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtleXMsIHN0ZDo6b3B0
aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNl
U2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNjQ5LDcgKzY0OSw3
IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlKQogICAgIC8vIDUuIFJldHVybiBwcm9taXNlLgogfQogCi12b2lkIE1lZGlhS2V5U2Vz
c2lvbjo6ZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgY29u
c3QgU2hhcmVkQnVmZmVyJiBtZXNzYWdlKQordm9pZCBNZWRpYUtleVNlc3Npb246OmVucXVldWVN
ZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIG1lc3NhZ2UpCiB7CiAgICAgLy8gNi40LjEgUXVldWUgYSAibWVzc2FnZSIg
RXZlbnQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNxdWV1
ZS1tZXNzYWdlCkBAIC03MTYsNyArNzE2LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0
ZUtleVN0YXR1c2VzKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYgaW4KICAg
ICAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZShDRE1NZXNz
YWdlVHlwZSBtZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBN
ZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewogICAgIGVucXVldWVNZXNz
YWdlKG1lc3NhZ2VUeXBlLCBtZXNzYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDNkOTZmODgw
MmU3NDc4NDFjNGVmZGE4MWRjYjk0MWVhNmU0YTc1ZTQuLjM2NWFjZTVjMDk1ZTdkYzBjNTcxZTc2
Y2NmMmMwN2FhZmM2MmJhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtNTcsNyArNTcsNyBAQCBjbGFz
cyBDRE07CiBjbGFzcyBEZWZlcnJlZFByb21pc2U7CiBjbGFzcyBNZWRpYUtleVN0YXR1c01hcDsK
IGNsYXNzIE1lZGlhS2V5czsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21p
c2VQcm94eTsKIApAQCAtODcsMjAgKzg3LDIwIEBAIHB1YmxpYzoKICAgICB1c2luZyBDbG9zZWRQ
cm9taXNlID0gRE9NUHJvbWlzZVByb3h5PElETFVuZGVmaW5lZD47CiAgICAgQ2xvc2VkUHJvbWlz
ZSYgY2xvc2VkKCkgeyByZXR1cm4gbV9jbG9zZWRQcm9taXNlLmdldCgpOyB9CiAKLSAgICBjb25z
dCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+JiBz
dGF0dXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8
c3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiYg
c3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1c2VzOyB9CiAKICAgICB1bnNpZ25lZCBp
bnRlcm5hbEluc3RhbmNlU2Vzc2lvbk9iamVjdFJlZkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9p
bnN0YW5jZVNlc3Npb24tPnJlZkNvdW50KCk7IH0KIAogcHJpdmF0ZToKICAgICBNZWRpYUtleVNl
c3Npb24oRG9jdW1lbnQmLCBXZWFrUHRyPE1lZGlhS2V5cz4mJiwgTWVkaWFLZXlTZXNzaW9uVHlw
ZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0
YW5jZVNlc3Npb24+JiYpOwotICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdl
VHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShNZWRp
YUtleU1lc3NhZ2VUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9p
ZCB1cGRhdGVFeHBpcmF0aW9uKGRvdWJsZSk7CiAgICAgdm9pZCBzZXNzaW9uQ2xvc2VkKCk7CiAg
ICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKIAogICAgIC8vIENE
TUluc3RhbmNlU2Vzc2lvbkNsaWVudAogICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoQ0RNSW5z
dGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3ImJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdl
KSBmaW5hbDsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKICAgICB2b2lkIHNlc3Npb25JZENo
YW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxh
eUlEKCkgZmluYWw7CiAKQEAgLTE0MCwxMCArMTQwLDEwIEBAIHByaXZhdGU6CiAgICAgTWVkaWFL
ZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25UeXBlOwogICAgIFJlZjxDRE0+IG1faW1wbGVtZW50YXRp
b247CiAgICAgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4gbV9pbnN0YW5jZVNlc3Npb247Ci0gICAg
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBtX3JlY29yZE9mS2V5VXNhZ2U7CisgICAgVmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9yZWNvcmRPZktleVVzYWdlOwogICAgIGRv
dWJsZSBtX2ZpcnN0RGVjcnlwdFRpbWUgeyAwIH07CiAgICAgZG91YmxlIG1fbGF0ZXN0RGVjcnlw
dFRpbWUgeyAwIH07Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVk
aWFLZXlTdGF0dXM+PiBtX3N0YXR1c2VzOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+IG1fc3RhdHVzZXM7CiAKICAgICB1
c2luZyBEaXNwbGF5Q2hhbmdlZE9ic2VydmVyID0gT2JzZXJ2ZXI8dm9pZChQbGF0Zm9ybURpc3Bs
YXlJRCk+OwogICAgIERpc3BsYXlDaGFuZ2VkT2JzZXJ2ZXIgbV9kaXNwbGF5Q2hhbmdlZE9ic2Vy
dmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3M2Y3NGU0ZjcwZmM5MmMyMmJmODU5YzAy
MjhhMzRlYWVjNTc5N2EzLi4zOThlOGFiMWI2NTZiNDQ1OTI3YmViNmJjNjkzZGQzOTlhNjg3YWM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNTYsMTIgKzU2LDEyIEBAIHVuc2lnbmVkIGxv
bmcgTWVkaWFLZXlTdGF0dXNNYXA6OnNpemUoKQogICAgIHJldHVybiBtX3Nlc3Npb24tPnN0YXR1
c2VzKCkuc2l6ZSgpOwogfQogCi1zdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRC
dWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKK3N0YXRpYyBib29sIGtleUlkc01hdGNo
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikK
IHsKICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0
aCAhPSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFzdGQ6
Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CisgICAgcmV0dXJuICFzdGQ6Om1l
bWNtcChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CiB9CiAK
IGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJTb3VyY2UmIGtleUlkKQpA
QCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJj
ZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3RhdHVzZXNbbV9pbmRleCsrXTsK
LSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+ZGF0YSgp
LCBwYWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHBhaXIuZmlyc3QtPnNp
emUoKSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBl
LCBNZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+KFdURk1vdmUoYnVmZmVyKSks
IHBhaXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaAppbmRleCBjMjExMTEzYTJjNmRh
Yzc5NzkyNGE5OWQyZDJkZjk3YzJlNjVmODUwLi42MGQ2MmFhZmY4MDc0ZGFkYTZlMzFhM2YyYjM3
MGE2ZDZkMDFmNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCkBAIC0zOCw3ICszOCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhS2V5U2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1lZGlhS2V5U3Rh
dHVzTWFwIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFLZXlTdGF0dXNNYXA+IHsKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlz
LmNwcAppbmRleCA4M2IyNGFjZWFhNWIxMjk0YmI0ZWE0MzlmYjJkNWM0ZjZjY2Q0NzUzLi4zNjdm
MzFkMTg2YjUxNjM5YTljNzQyMTNmMGNmOGU2ZjJmOGQyNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCkBAIC0xNzcsNyAr
MTc3LDcgQEAgYm9vbCBNZWRpYUtleXM6Omhhc09wZW5TZXNzaW9ucygpIGNvbnN0CiAgICAgICAg
IH0pOwogfQogCi12b2lkIE1lZGlhS2V5czo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFS
ZWNlaXZlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBp
bml0RGF0YSkKK3ZvaWQgTWVkaWFLZXlzOjp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJl
Y2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBmb3IgKGF1dG8mIGNkbUNsaWVudCA6IG1fY2RtQ2xp
ZW50cykKICAgICAgICAgY2RtQ2xpZW50LmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRp
b25EYXRhUmVjZWl2ZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0YS5jb3B5UmVmKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5kZXgg
N2I1OWEzYmM2ZDIyNTZmYzY1NmYwOGNiZjI2ODkxODUxMDk4M2EyMi4uOTFhMWEwNzExNDMzYmUy
NDdkZDJhODVjNWY0YWQwOTM4YTA5YTdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCkBAIC04Niw3ICs4Niw3IEBAIHByb3RlY3Rl
ZDoKICAgICBNZWRpYUtleXMoRG9jdW1lbnQmLCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmll
ciwgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkLCBjb25zdCBWZWN0b3I8TWVkaWFLZXlTZXNz
aW9uVHlwZT4mLCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2U+JiYpOwogCiAgICAgLy8gQ0RN
SW5zdGFuY2VDbGllbnQKLSAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVj
ZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9p
ZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dn
ZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCAy
ZmRjNGMwMDIxZjZlMWZkZWM0NWY4ZmFmNjA5MDZjMmJmODJlM2IxLi4wMDM5MzAyZjdkYzE2ZmZl
Y2ZjNDY1YzdkOGRhMjUyZjk4ZGFmNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1
bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVy
LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgaWYgKGF1dG8gc2hhcmVk
QnVmZmVyID0gZm9ybURhdGFCb2R5KCkuYXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAgICBtX2Nv
bnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlw
ZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOworICAgICAg
ICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250
ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVk
QnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2Fk
IHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4KQEAgLTI3Miw3ICsyNzIsNyBAQCBSZWZQdHI8
Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoKSBjb25zdAogICAgIGlmIChpc0Zv
cm1EYXRhKCkpCiAgICAgICAgIHJldHVybiAmY29uc3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRh
Qm9keSgpKTsKICAgICBpZiAoYXV0byogZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpKQotICAgICAg
ICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Cisg
ICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMjg0LDcgKzI4NCw3IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZl
dGNoQm9keTo6dGFrZSgpCiAgICAgICAgIGF1dG8gYnVmZmVyID0gbV9jb25zdW1lci50YWtlRGF0
YSgpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIHJldHVybiBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgfQogCiAgICAgaWYgKGlzQmxvYigpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3Bw
CmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1ODc2NzVmMDlkOGI3OWZmNjJiM2IuLjIyMTNkNjIz
MDNlZmUyYTFmNzI5ODI2MGY1ODg2MGI3NzZmYjI2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNDIsNyArMjQyLDcg
QEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6Y2xl
YW4oKQogewotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICBtX2J1ZmZlci5yZXNldCgpOwog
ICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAgICBpZiAobV9zaW5rKSB7CiAgICAgICAgIG1f
c2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjY2LDE2ICsyNjYsMTggQEAgdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0
IFN0cmluZyYgY28KIHsKICAgICBpZiAoc3RyZWFtKSB7CiAgICAgICAgIEFTU0VSVCghbV9zaW5r
KTsKLSAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNy
ZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CisgICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpj
cmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVp
bGRlcigpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8q
IGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBw
ZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlw
ZSwgY29udGVudFR5cGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YS50YWtlKCktPm1h
a2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShX
VEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgICAgIG1fc2luay0+
cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsKQEAgLTMwNiw3ICszMDgsNyBAQCB2
b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJv
ZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtl
RGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250
ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBh
Y2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6
IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURh
dGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwcm9taXNlLT5yZWpl
Y3QoVHlwZUVycm9yKTsKQEAgLTMyNCwxNiArMzI2LDIwIEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplKQogICAgICAgICBt
X3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyKSB7Ci0gICAgICAgIG1fYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZlci5h
cHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNv
bnN1bWVyOjp0YWtlRGF0YSgpCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9i
dWZmZXIpOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1v
dmUoZGF0YSkpOworfQorCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VEYXRhKCkKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgpOwogfQogCiBSZWZQdHI8SlND
OjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKQEAg
LTM0MSw5ICszNDcsNyBAQCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1
cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKIAotICAgIGF1dG8gYXJyYXlC
dWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1ZmZlciA9
IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVyOworICAgIHJldHVybiBtX2J1ZmZlci50
YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRjaEJvZHlD
b25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAt
MzUxLDkgKzM1NSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIpCiAgICAg
ICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRvIGJ1ZmZl
ciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1dG8gZGF0YSA9IGJ1
ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIFdU
Rk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29u
dGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBlKTsKIH0K
IAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4ICszNjQs
OCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9i
dWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRS
ZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+
c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIgPSBtX2J1
ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzg1LDggQEAgdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNvbnN1bWVy
OjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAgbV9zb3Vy
Y2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAgIG1fc291
cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAgICAgICAg
bV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAgICAgIG1f
c291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7
CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdGYWlsZWQoY29uc3QgRXhjZXB0
aW9uJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmgKaW5kZXggMmIwNTZmMTI2NDNiYTk2N2ZlNDFhMDE1MTNhODliNzM2MjY0
MmQ0Yy4uODcxZDJjMDg2MzMxYTk4Mjk0YTE2NmE0YjQyZTMxODRlMDM3NzcyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtNTAs
MTAgKzUwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVm
ZmVyOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
KSB7IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsgfQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQor
ICAgIHZvaWQgc2V0RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtl
QXNBcnJheUJ1ZmZlcigpOwogICAgIFN0cmluZyB0YWtlQXNUZXh0KCk7CiAKQEAgLTgyLDcgKzgy
LDcgQEAgcHJpdmF0ZToKIAogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRU
eXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgbV9idWZmZXI7CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9jb25zdW1l
UHJvbWlzZTsKICAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IG1f
c2luazsKICAgICBSZWZQdHI8RmV0Y2hCb2R5U291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggZmM1NWNjN2Q4M2Q4YmMx
MWYwODU0ZGMzY2ZkODUwOTdhMzFmMTBmNi4uMDNmODliNjFjYTVmN2M3MTc2YjlkODhjZDEzNjYw
ZTg2YjdhMjU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdG9wKCkKICAgICAg
ICAgbV9sb2FkZXItPmNhbmNlbCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaExv
YWRlcjo6c3RhcnRTdHJlYW1pbmcoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZl
dGNoTG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiB7CiAgICAgQVNTRVJUKG1fY29uc3VtZXIpOwog
ICAgIGF1dG8gZmlyc3RDaHVuayA9IG1fY29uc3VtZXItPnRha2VEYXRhKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKaW5kZXggMmY5MGYwZWMzZmY5MDVhMjYy
MzFjODRjNzJhN2ExODZjZDRiZmU4My4uNDYxMmQwZTBlM2E3ZWZlMzA2MDM5NmIwZDc1YTJmYTNi
YzRlZGRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApA
QCAtMzksMTQgKzM5LDE0IEBAIGNsYXNzIEZldGNoQm9keUNvbnN1bWVyOwogY2xhc3MgRmV0Y2hM
b2FkZXJDbGllbnQ7CiBjbGFzcyBGZXRjaFJlcXVlc3Q7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIAogY2xhc3MgRmV0Y2hMb2FkZXIgZmluYWwgOiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNs
aWVudCB7CiBwdWJsaWM6CiAgICAgRmV0Y2hMb2FkZXIoRmV0Y2hMb2FkZXJDbGllbnQmLCBGZXRj
aEJvZHlDb25zdW1lciopOwogICAgIFdFQkNPUkVfRVhQT1JUIH5GZXRjaExvYWRlcigpOwogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKKyAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKIAogICAgIHZvaWQgc3RhcnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEZldGNoUmVxdWVzdCYsIGNvbnN0IFN0cmlu
ZyYpOwogICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEJsb2Im
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmlu
ZGV4IDRkZjg0MjZjNzE4YmExNmVjZjBhNDdlNzNlOTAwZDNmODQ4ZjY0ZjIuLmUzOGE4M2FkZTdk
NmUwYWFmNzBjZWI5YzVhYThmZThhYjQ5NDNkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtNDAwLDcgKzQwMCw4IEBAIHZvaWQgRmV0
Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlD
aHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNw
YW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OworICAgIGF1dG8gY29udGln
dW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgU3BhbiBjaHVuayB7IGNv
bnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0
YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAgLTUwMyw3ICs1MDQsNyBAQCB2b2lkIEZldGNoUmVz
cG9uc2U6OmZlZWRTdHJlYW0oKQogICAgIGNsb3NlU3RyZWFtKCk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKK1Jl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpz
dGFydFN0cmVhbWluZygpCiB7CiAgICAgQVNTRVJUKG1fbG9hZGVyKTsKICAgICByZXR1cm4gbV9s
b2FkZXItPnN0YXJ0U3RyZWFtaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEzOGQzYzNmNmUyZmRiNjY3NWU4YTRkMTM2NWJm
NWE1YmIuLmNmNzg2MzIzOWZkOTQ2ZWUwZThkODhlYWVhNzJmZTk4OWVlZDMxNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0xMzQsNyArMTM0
LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIGNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1l
RGF0YUJ5Q2h1bmtDYWxsYmFjayYmKTsKIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
dGFydFN0cmVhbWluZygpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
c3RhcnRTdHJlYW1pbmcoKTsKICAgICAgICAgTm90aWZpY2F0aW9uQ2FsbGJhY2sgdGFrZU5vdGlm
aWNhdGlvbkNhbGxiYWNrKCkgeyByZXR1cm4gV1RGTW92ZShtX3Jlc3BvbnNlQ2FsbGJhY2spOyB9
CiAgICAgICAgIENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrIHRha2VDb25zdW1lRGF0YUNhbGxi
YWNrKCkgeyByZXR1cm4gV1RGTW92ZShtX2NvbnN1bWVEYXRhQ2FsbGJhY2spOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKaW5kZXggZGQx
OWM4NzBhYTdkMjQ4NWY3ZTljYTg0OTJhODQyMTM1MmRkZDA0MS4uMWE2NmJmODE4MzIwZTk1NjA3
ZDYxNWYxYTA4MmE4Mjc2ZWIyYTM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTM4LDcgKzM4LDcgQEAgZW51bSBjbGFzcyBDcmVh
dGVOZXdHcm91cEZvckhpZ2hsaWdodCA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIEhp
Z2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgOiBib29sIHsgTm8sIFllcyB9OwogCiBzdHJ1
Y3QgQXBwSGlnaGxpZ2h0IHsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBoaWdobGln
aHQ7CisgICAgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGhpZ2hsaWdodDsK
ICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGV4dDsKICAgICBDcmVhdGVOZXdHcm91cEZvckhp
Z2hsaWdodCBpc05ld0dyb3VwOwogICAgIEhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHAg
cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDsKQEAgLTUyLDcgKzUyLDcgQEAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4oaGlnaGxpZ2h0LT5zaXpl
KCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hsaWdodC0+ZGF0YSgp
LCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEoaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgp
LCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKaW5kZXgg
ZTJkOWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJkMDRhNDU3NmMwNi4uNWU4MGYwYzA3MmQ0OWEz
ZWY3OTY5NTkzMDJjNDQ1NmNkMmFiZGU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCkBAIC00NCwx
NSArNDQsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdGV4cHIgdWludDY0X3QgaGln
aGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1
cmUgIChBKXBwbGUoQVApcGxpY2F0aW9uKEgpaWdobGlnaHRzKDIwMjEpCiAKLXN0ZDo6b3B0aW9u
YWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIo
KTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICBhdXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3Rk
OjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBk
YXRhOwogICAgIHJldHVybiBkYXRhOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBBcHBIaWdobGln
aHRSYW5nZURhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsK
ICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGVuY29kZXI7CiAgICAgZW5jb2RlciA8PCAq
dGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFJhbmdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhLmgKaW5kZXggY2Y2MzgxYWNmYjBhNTIxMWI0MzUwOGI3YjUxN2Q2
ZGIyZjZmYzc0My4uYjVkYWY2MDI1Mzk4YTNmN2U2ZjFkMzdhYmVjZTg0NGQ0ZjFjNjU0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEFwcEhpZ2hsaWdodFJhbmdlRGF0YSB7
CiBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGNyZWF0ZShjb25zdCBT
aGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxB
cHBIaWdobGlnaHRSYW5nZURhdGE+IGNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CiAgICAgc3RydWN0IE5vZGVQYXRoQ29tcG9uZW50IHsKICAgICAgICAgU3RyaW5nIGlkZW50
aWZpZXI7CiAgICAgICAgIFN0cmluZyBub2RlTmFtZTsKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFw
cEhpZ2hsaWdodFJhbmdlRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
aWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKaW5kZXggZGMzOWEwZjBkMThmZmZjYTdkZmI0NjUy
MTljZDYxMmE5ZjczOGY4Zi4uZTVkZTg0OTRmMzUwNDUzNTk0YjJmMmU4OGMzZGRhMzNmYTlhZjcw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0U3RvcmFnZS5jcHAKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIEFwcEhpZ2hsaWdo
dFN0b3JhZ2U6OnN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTdGF0aWNSYW5nZT4mJiByYW5nZSkKICAg
ICBtX2RvY3VtZW50LT5wYWdlKCktPmNocm9tZSgpLnN0b3JlQXBwSGlnaGxpZ2h0KFdURk1vdmUo
aGlnaGxpZ2h0KSk7CiB9CiAKLXZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZUFuZFNj
cm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBTY3JvbGxUb0hp
Z2hsaWdodCBzY3JvbGwpCit2b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVBbmRTY3Jv
bGxUb0FwcEhpZ2hsaWdodChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIFNj
cm9sbFRvSGlnaGxpZ2h0IHNjcm9sbCkKIHsKICAgICBhdXRvIGFwcEhpZ2hsaWdodFJhbmdlRGF0
YSA9IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGJ1ZmZlcik7CiAgICAgaWYgKCFhcHBI
aWdobGlnaHRSYW5nZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKaW5kZXggYjE1MmY3NmVkNDI0MDg5MmVhN2Rl
MjFlMmNiMDZkNDcyZDg3MzM2MC4uZTI3NjYzM2I0ODRmODEwOTRhZGVjZTQ1ZjY0YWJiZWQxNzgx
MjUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFN0b3JhZ2UuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdGF0aWNS
YW5nZTsKIGNsYXNzIEhpZ2hsaWdodDsKIApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAg
fkFwcEhpZ2hsaWdodFN0b3JhZ2UoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcmVB
cHBIaWdobGlnaHQoUmVmPFN0YXRpY1JhbmdlPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVmZmVyPiYmLCBTY3Jv
bGxUb0hpZ2hsaWdodCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlQW5kU2Nyb2xs
VG9BcHBIaWdobGlnaHQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFNjcm9sbFRvSGln
aGxpZ2h0KTsKICAgICB2b2lkIHJlc3RvcmVVbnJlc3RvcmVkQXBwSGlnaGxpZ2h0cygpOwogICAg
IE1vbm90b25pY1RpbWUgbGFzdFJhbmdlU2VhcmNoVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlt
ZUF0TGFzdFJhbmdlU2VhcmNoOyB9CiAgICAgdm9pZCByZXNldExhc3RSYW5nZVNlYXJjaFRpbWUo
KSB7IG1fdGltZUF0TGFzdFJhbmdlU2VhcmNoID0gTW9ub3RvbmljVGltZTo6bm93KCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3NDM1NmIzNWEx
NjgwMzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVj
ODc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2ODYs
NyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleChJREJPYmpl
Y3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5z
YWN0aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8u
a2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChp
bmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0
dGVtcHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0
cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBh
dGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBr
ZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlm
ICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIpOwog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFs
aXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSJf
cyB9OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpjcmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4g
aW5kZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBh
dGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJL
ZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0
YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJfcyB9
OwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1
bmNoZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8mIGluZm8KIHsKICAgICBo
YXNSZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlC
dWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtl
eSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZv
ciBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChp
bnQ2NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURC
QmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAlcyIsIGtleVZhbHVl
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVm
ZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkg
dG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9y
ZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKKyAgICBhdXRv
IHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYgKCF2
YWx1ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhl
IHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBz
dG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5p
blByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0
dGVtcHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1w
cm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBm
b3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3Ig
ZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0gSURC
VHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0aW9u
KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJh
c2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiX3Mg
fTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNv
cmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CiAg
ICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3Jl
Iik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBz
ZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAg
LTIxMjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVj
b3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgYXV0byBrZXkg
PSBrZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkg
PSBJREJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3Vw
IHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJs
ZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjEz
Myw3ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBrZXkgPSBrZXlSYW5n
ZS51cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlE
YXRhOjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsyNDQz
LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJl
Y29yZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgp
ICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYga2V5LnR5cGUoKSAh
PSBJbmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNv
cmQiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIl9zIH07CkBAIC0y
NTA4LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291
bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQg
PSAwOwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpID8gSURC
S2V5RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKKyAgICBh
dXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CiAgICAgaWYg
KCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUg
bG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29r
dXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAogICAgIGF1dG8gdXBw
ZXJLZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1heGltdW0oKSA6
IHJhbmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29r
dXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5h
YmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBv
cGVyYXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5NjIz
YmQ4ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5Y2ZlZGZlOWYyZWE2
NWE2ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBi
b29sIFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0YXRlbWVudC0+Ymlu
ZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2Vy
IGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wg
U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3Nh
cnkoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50
LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykg
ewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBz
dGF0ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCmluZGV4
IDBhNDY5YmQwYmQxZjM4ZGNiOTZiMzlkOGMzMDAwYWY3M2QxMmFiNTkuLmM5ZDZkYTZiZGQ5Zjkz
OTUwMWY0ZjQyMzJiNGM3ODM3ZDg0MGRhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKQEAgLTE5Niw3ICsxOTYs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVJlY29yZGVyOjpzdGFydFJlY29yZGluZyhzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiB0aW1lU2xpYwogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRp
YyBpbmxpbmUgUmVmPEJsb2JFdmVudD4gY3JlYXRlRGF0YUF2YWlsYWJsZUV2ZW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUgdGltZUNvZGUpCitzdGF0aWMgaW5saW5lIFJl
ZjxCbG9iRXZlbnQ+IGNyZWF0ZURhdGFBdmFpbGFibGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkKIHsKICAgICBhdXRvIGJsb2Ig
PSBidWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCBt
aW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoY29udGV4dCk7CiAgICAgcmV0dXJuIEJsb2JFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEJsb2JFdmVudDo6SW5pdCB7
IHsgZmFsc2UsIGZhbHNlLCBmYWxzZSB9LCBXVEZNb3ZlKGJsb2IpLCB0aW1lQ29kZSB9LCBCbG9i
RXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCmluZGV4IDc3MTJiNDQ1MjgzNjdkOGMyNzI1
MDJhZGJhYWNhYWY5Nzg4Y2JkYjAuLjFlOWI3NGFiMTdlMzEwOGRiNDIwOWI5YjRmMDIxNGRhMTFh
YzZlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXIuaApAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aXNwYXRjaEVycm9yKEV4Y2VwdGlvbiYmKTsKIAogICAgIGVudW0gY2xhc3MgVGFrZVByaXZhdGVS
ZWNvcmRlciB7IE5vLCBZZXMgfTsKLSAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
ZG91YmxlKT47CisgICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBk
b3VibGUpPjsKICAgICB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmLCBUYWtlUHJp
dmF0ZVJlY29yZGVyKTsKIAogICAgIC8vIE1lZGlhU3RyZWFtOjpPYnNlcnZlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcApp
bmRleCAzZjRjOWJjZDEzM2FjMjlmM2Y3ZGRlMTk5NDc4ZTM5MjU3ZDVlNjZiLi44NzRhYTdmMGIx
OGYwZWU3NTg4MGJhNWY1ZWY2N2Q0N2JmYzJiMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcApAQCAtNzcsNyArNzcs
NyBAQCB2b2lkIEFydHdvcmtJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTAogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IC8vIFNhbml0aXplIHRoZSBpbWFnZSBieSBkZWNvZGluZyBpdCBpbnRvIGEgQml0bWFwSW1hZ2Uu
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1h
Z2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBh
dXRvIGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGJpdG1hcEltYWdl
LT5zZXREYXRhKFdURk1vdmUoYnVmZmVyVG9TYW5pdGl6ZSksIHRydWUpOwogICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IDJiM2NkZTM2MDgyNDcxYzExYzg3ZmNm
NjFjYzgxY2MzNjBjMzlkOTAuLmQzNzhhZmM2ZjhhMWI1N2EwMzAyZTJjODY4YjI0MGEyMDk3ZmU0
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNl
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJj
ZUJ1ZmZlci5jcHAKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6YXBwZW5k
QnVmZmVyVGltZXJGaXJlZCgpCiAgICAgLy8gaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1l
ZGlhL3Jhdy1maWxlL3RpcC9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLmh0bWwjc291cmNlYnVm
ZmVyLXNlZ21lbnQtcGFyc2VyLWxvb3AKICAgICAvLyBXaGVuIHRoZSBzZWdtZW50IHBhcnNlciBs
b29wIGFsZ29yaXRobSBpcyBpbnZva2VkLCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFwcGVuZERhdGEgPSBXVEZNb3ZlKG1fcGVuZGluZ0FwcGVu
ZERhdGEpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBhcHBlbmREYXRhID0g
V1RGTW92ZShtX3BlbmRpbmdBcHBlbmREYXRhKTsKICAgICAvLyAxLiBMb29wIFRvcDogSWYgdGhl
IGlucHV0IGJ1ZmZlciBpcyBlbXB0eSwgdGhlbiBqdW1wIHRvIHRoZSBuZWVkIG1vcmUgZGF0YSBz
dGVwIGJlbG93LgogICAgIGlmICghYXBwZW5kRGF0YSB8fCAhYXBwZW5kRGF0YS0+c2l6ZSgpKSB7
CiAgICAgICAgIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQ6
OkFwcGVuZFN1Y2NlZWRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuaAppbmRleCA1MjBjMDc3NTY5NmEyZjBlMmU3MzAwNzM1ZThjOTc3
NDk1ZjFhNjE0Li5kNGM4NTc5YzBiYmQ0NDNhNTEyZmE5ZjY4YzQyN2VjMDQ4ODVkMGQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgK
QEAgLTIyMiw3ICsyMjIsNyBAQCBwcml2YXRlOgogCiAgICAgV1RGOjpPYnNlcnZlcjx2b2lkKigp
PiBtX29wYXF1ZVJvb3RQcm92aWRlcjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGVu
ZGluZ0FwcGVuZERhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fcGVu
ZGluZ0FwcGVuZERhdGE7CiAgICAgVGltZXIgbV9hcHBlbmRCdWZmZXJUaW1lcjsKIAogICAgIFJl
ZlB0cjxWaWRlb1RyYWNrTGlzdD4gbV92aWRlb1RyYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyLmNwcAppbmRleCBmZWIxYjhmZmZiN2I5NGM5ZTdlYjBiZTQ4YWQzNWRkNzA3OWM3
MGJiLi5jYzVhODY1NzMwNTY1N2QwYTk3MDU2NjFlNGJiNDljZTBiODQwNWM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3Rl
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCgpCiAgICAgbV9pc1JlYWR5VG9TZW5k
ID0gdHJ1ZTsKIAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fcGVuZGluZ01lc3NhZ2VzKQot
ICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2Fn
ZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7
CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNz
YWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtZXNz
YWdlLmJ1ZmZlci0+c2l6ZSgpKTsKICAgICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAg
ICAgaWYgKG1faXNQZW5kaW5nQ2xvc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaApp
bmRleCBmNTgyN2RmOTM3OTQ5M2QyODEyNzAxNzdjY2ZiY2EwNTUxNTMyMzFmLi43Mzk0MmE4MzU5
MzFhOWQyODRjNmE0NTFiYjhkYmZiNTc2NWNhZGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUlRD
RGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OwogY2xhc3MgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyQ29ubmVjdGlvbjsKIGNsYXNzIFJUQ0Vycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUlRDRGF0YUNoYW5uZWxSZW1vdGVI
YW5kbGVyIGZpbmFsIDogcHVibGljIFJUQ0RhdGFDaGFubmVsSGFuZGxlciwgcHVibGljIENhbk1h
a2VXZWFrUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcj4gewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwpAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogCiAgICAgc3RydWN0IE1l
c3NhZ2UgewogICAgICAgICBib29sIGlzUmF3IHsgZmFsc2UgfTsKLSAgICAgICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOwogICAgIH07CiAgICAgVmVjdG9yPE1lc3NhZ2U+IG1fcGVuZGluZ01lc3NhZ2VzOwogICAg
IGJvb2wgbV9pc1BlbmRpbmdDbG9zZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAppbmRleCAzZTExMDU0MDAzNTNkZTU2MGYy
NDkzOGE5YjIwOGVmMzZmNjgwM2M0Li4zY2VlZDBhMDExZTdiNTQ2ZmFkZGY0OGJiZGEyMTFkZmRk
NTI0YzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlci5jcHAKQEAgLTk3LDggKzk3LDggQEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI6OnNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmIGNsaWVudCwKICAgICBt
X2NvbnRleHRJZGVudGlmaWVyID0gY29udGV4dElkZW50aWZpZXI7CiAKICAgICBmb3IgKGF1dG8m
IG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2FnZXMpIHsKLSAgICAgICAgc3dpdGNoT24obWVzc2Fn
ZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRhKSB7Ci0gICAgICAgICAgICBjbGllbnQuZGlk
UmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICBzd2l0
Y2hPbihtZXNzYWdlLCBbJl0oUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBkYXRhKSB7Cisg
ICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogICAgICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7
CiAgICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVN0cmluZ0RhdGEodGV4dCk7CiAgICAgICAg
IH0sIFsmXShTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAppbmRleCA0MWY5NTI4MjFlNjIwMDkzZjhlZWZl
MzJjNWVkNGFlMGY1ZTU0MTk3Li4xMWJkNDVkZTkxNTU3NzlmZmM5ZWZiMDNlOTU1MjhmMDVlNjRk
NzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aApAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogICAgICAgICBSVENEYXRhQ2hhbm5lbFN0YXRl
IHN0YXRlOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPHdlYnJ0Yzo6UlRDRXJyb3I+IGVycm9yOwog
ICAgIH07Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxTdGF0ZUNoYW5nZSwgU3Ry
aW5nLCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFu
dDxTdGF0ZUNoYW5nZSwgU3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAg
IHVzaW5nIFBlbmRpbmdNZXNzYWdlcyA9IFZlY3RvcjxNZXNzYWdlPjsKICAgICB2b2lkIHN0b3Jl
TWVzc2FnZShQZW5kaW5nTWVzc2FnZXMmLCBjb25zdCB3ZWJydGM6OkRhdGFCdWZmZXImKTsKICAg
ICB2b2lkIHByb2Nlc3NNZXNzYWdlKGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuY3BwCmluZGV4IDMwOWMwMjY0M2Y1YTdhZTlmZWMwOGExNGViMjEyMjQwOWIxZjg5ZTAu
LjYzZjFjM2NiZTFlYTgxY2ZiZjQ1NDY0NjMyMGNkZjdmYWNmNTljMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJj
ZVVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fc291cmNlVVJMID0gdXJsOwogCi0gICAgbV9k
YXRhID0gbnVsbHB0cjsKKyAgICBtX2RhdGEucmVzZXQoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9
IGZhbHNlOwogCiAgICAgaWYgKG1fcmVzb3VyY2UpIHsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cisg
ICAgbV9kYXRhLmVtcHR5KCk7CiAKICAgICBtX3Jlc291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsK
ICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMpOwpAQCAtMTgwLDggKzE4MCw3IEBAIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVuZGVyU3R5bGUmJiBzCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jl
c291cmNlKTsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBk
YXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2
b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH07CiAKICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxl
ZE9yQ2FuY2VsZWQoKSkgewotICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBtX2Rh
dGEucmVzZXQoKTsKIAogICAgICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVS
ZW5kZXJlcigpOwogCkBAIC0yMDQsNyArMjAzLDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EK
ICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVs
OjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBl
KCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEu
dGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNv
dXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5k
ZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAwNWExY2RhYTNlMTQ4NzdhMGFlNDY1YjYzNDlh
YTViYmIxYWYyYzgyLi5jZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFlNmU4NTgwM2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogCiAgICAgVVJMIG1f
c291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBt
X3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8TW9kZWw+IG1fbW9kZWw7CiAgICAgVW5p
cXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAgICAgYm9vbCBtX2RhdGFDb21w
bGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbSBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNE
Lm1tCmluZGV4IDNlODJhYzIyMTY3OTZjOWVkYjc2MGExOWVkN2FjZTFmNDJjZDM3NzcuLjEzMDNl
YzRkMjU2OGE2NmY4N2Q3ZmViMjBiZjJiMDMzOTIzMmMzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVy
VVNELm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtp
dC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIFJl
dGFpblB0cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVs
U291cmNlKQogICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5Rmls
ZSgiTW9kZWxGaWxlIiwgZmlsZUhhbmRsZSwgIi51c2R6Iik7CiAgICAgQVNTRVJUKEZpbGVTeXN0
ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOwogCi0gICAgc2l6ZV90IGJ5dGVDb3VudCA9
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+
ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgc2l6ZV90IGJ5dGVDb3Vu
dCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIG1vZGVsU291cmNlLmRhdGEo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7
CiAgICAgQVNTRVJUX1VOVVNFRChieXRlQ291bnQsIGJ5dGVDb3VudCA9PSBtb2RlbFNvdXJjZS5k
YXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW1TaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1T
aW5rLmgKaW5kZXggMGI4OThmNmFkYjU3ZWIyNWRjNDkzN2Q4MWZmNWQxNGQ1Mjk3NmM4NC4uZDUx
NzNmYmY4YjQwMzQxYzVjZjhkOGE0ZjU1ZWVhYzhmZjgzOGEzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaApAQCAtMzUsNyAr
MzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNz
IFJlYWRhYmxlU3RyZWFtOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgUmVhZGFibGVTdHJlYW1TaW5rIDogcHVibGljIFJlZkNvdW50
ZWQ8UmVhZGFibGVTdHJlYW1TaW5rPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRleCBjNDUy
YzgzZmJkNWNlODk1YmRkMDMxYWNmMTQ2OGY3ODY1MDYyMmQ3Li5iOGI3Nzg1ZjkxZDA2OGMyYTQ2
Y2ViMWQ2NTk3NThmY2Y4YjY5ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAgLTUxLDEzICs1MSwxNSBA
QCBwdWJsaWM6CiAgICAgICAgIGlmIChtX3NjcmlwdEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAorICAgICAgICBpZiAoIW1fY29udGlndW91c0J1
ZmZlciAmJiAoIW1fY29udGFpbnNPbmx5QVNDSUkgfHwgKm1fY29udGFpbnNPbmx5QVNDSUkpKQor
ICAgICAgICAgICAgbV9jb250aWd1b3VzQnVmZmVyID0gbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCkt
Pm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIGlmICghbV9jb250YWluc09ubHlBU0NJSSkgewot
ICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSSht
X3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+
c2l6ZSgpKTsKKyAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJl
QWxsQVNDSUkobV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZl
cigpLT5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAg
ICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRN
YXNrVG9wOEJpdHMobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZm
ZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3Ry
aW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2NvbnRpZ3VvdXNCdWZmZXIt
PmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgcmV0dXJuIHsgbV9z
Y3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2Ny
aXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CisgICAgICAgICAgICByZXR1cm4geyBtX2Nv
bnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVm
ZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CiAKICAgICAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0
cmluZykgewogICAgICAgICAgICAgbV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBtX3NjcmlwdEJ1ZmZl
ci50b1N0cmluZygpOwpAQCAtODEsNiArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgbV9zY3JpcHRCdWZmZXIgPSBzY3JpcHRCdWZmZXI7CisgICAgICAgIG1f
Y29udGlndW91c0J1ZmZlciA9IG51bGxwdHI7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtOTEsNiAr
OTQsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFNjcmlwdEJ1ZmZlciBtX3NjcmlwdEJ1ZmZl
cjsKKyAgICBtdXRhYmxlIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udGlndW91c0J1ZmZlcjsK
ICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAgICBtdXRhYmxlIFN0
cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggN2U0OWE5ZTczMjI2YjY1Y2MyOGJmNTk0
ODEzYjBmODNiMjY5ZDIyYi4uZWYzN2YxZDBjYTQ2MmJiOWI3YzliNmE1NWQxOGViYjRjMTE4MWE3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgRGV0YWNoZWRPZmZzY3JlZW5DYW52YXM7
CiBjbGFzcyBJREJWYWx1ZTsKIGNsYXNzIE1lc3NhZ2VQb3J0OwogY2xhc3MgSW1hZ2VCaXRtYXBC
YWNraW5nOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIGVudW0gY2xhc3MgU2VyaWFsaXphdGlvblJldHVybkNvZGU7CiAKIGVudW0gY2xhc3MgU2Vy
aWFsaXphdGlvbkVycm9yTW9kZSB7IE5vblRocm93aW5nLCBUaHJvd2luZyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVlNWYzNzgyZmJiMjMx
MjNiMmRkM2E1N2ExNzI4Li4xMDhlNmM4NzY3ZDBkMmZkYWNiZTY1MDRlYmM1MDcwZTg4MmJlNjQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNiArMzQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3MgQ1NTRm9u
dFNlbGVjdG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBG
b250OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKQEAgLTQyLDcgKzQzLDYgQEAgY2xhc3Mg
Rm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRp
ZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKIGNsYXNzIFNWR0ZvbnRGYWNlRWxlbWVu
dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZv
bnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZl
YXR1cmVTZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggMWRlYWM0
ZjQxY2Y0OWYxZjg4MmRjY2VmZDQ4Y2Y2YTk3MzJmM2VkOS4uYzQyZWMwNTFmZTExZWJhMTRmODEz
MzU5ZDhkMTdhMmMyODE2NjRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAg
LTQwMiw3ICs0MDIsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVUeXBlUmVhZGVyIGZpbmFsIDog
UGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgICAgICB0eXBlcy5hZGQoRmlsZTo6Y29udGVudFR5
cGVGb3JGaWxlKGZpbGVuYW1lKSk7CiAgICAgfQogCi0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikKKyAgICB2
b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKICAgICB7CiAgICAgICAgIHR5cGVzLmFkZCh0eXBlKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTcyNGNmMGU1MGJhYTViOWIy
NDEzMDQ4MWVlNzI0Y2I3ODIwN2FhNC4uYzVlOWUyNmIzNzJhZTY4M2YxODY4ZTkyMGM0NWVkNzBl
ZGY1NTQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDEzMyw3ICs0MTMzLDcg
QEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8o
RWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4geyBhdHRhY2htZW50LT51bmlxdWVJZGVudGlm
aWVyKCksIFdURk1vdmUoYWRkaXRpb25hbFR5cGVzKSwgV1RGTW92ZShhZGRpdGlvbmFsRGF0YSkg
fTsKIH0KIAotdm9pZCBFZGl0b3I6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJp
bmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIEVk
aXRvcjo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmls
ZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKGF1
dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQogICAgICAgICBjbGllbnQtPnJlZ2lzdGVyQXR0
YWNobWVudElkZW50aWZpZXIoaWRlbnRpZmllciwgY29udGVudFR5cGUsIHByZWZlcnJlZEZpbGVO
YW1lLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDAxZmUwYjVl
MDQ0ZWY2M2YyNmE3MWI0NzJlZjk4YjExYzIyOGI5MWMuLjFkMDcxNmM1YjkzYzhiYjdhZDczZjQx
NzRjYTgwNDU5MDVmOTE5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNTcsOSArNTcs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyOwogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwotY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3Mg
Q29tcG9zaXRlRWRpdENvbW1hbmQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21V
bmRvU3RlcDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXI7CiBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBA
IC03NCw3ICs3NSw3IEBAIGNsYXNzIEtpbGxSaW5nOwogY2xhc3MgUGFzdGVib2FyZDsKIGNsYXNz
IFBhc3RlYm9hcmRXcml0ZXJEYXRhOwogY2xhc3MgUmVuZGVyTGF5ZXI7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udDsKIGNsYXNz
IFNwZWxsQ2hlY2tSZXF1ZXN0OwogY2xhc3MgU3BlbGxDaGVja2VyOwpAQCAtNTYzLDcgKzU2NCw3
IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFt
ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckF0dGFjaG1l
bnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZmlsZURh
dGEpOworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVO
YW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBmaWxlRGF0YSk7CiAgICAgdm9pZCBy
ZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpOwog
ICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKICAgICB2b2lk
IHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCmluZGV4IDA4YWExMjQyNjYyMGY3Njk1M2E3
OWIzNGVkZTVmNmRmMDUyN2IwMTUuLjk1N2I0ZmQ0YTU1N2ZjODFjZDMwNjllZWFjYjg5NDg4YTk0
N2I3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCkBAIC03
MiwxNiArNzIsMTYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJp
bmcmLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUgPSB7IH0pIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEZp
bGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEhU
TUwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJl
ZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZEltYWdlKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRh
dGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CiAgICAg
Ym9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwog
ICAgIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OwotICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJl
YWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7
IH0pIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikg
b3ZlcnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNp
emUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CiAjZW5kaWYKIH07
CiAKQEAgLTk5LDE2ICs5OSwxNiBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVhZEZpbGVQYXRoKGNv
bnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYgPSB7IH0p
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkRmlsZVBhdGhzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHJl
YWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZEltYWdlKFJlZjxT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCByZWFkSW1hZ2UoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0p
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFk
UGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBvdmVy
cmlkZTsKLSAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9v
bCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OworICAgIGJvb2wgcmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwor
ICAgIGJvb2wgcmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAg
Ym9vbCByZWFkRGF0YUJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCmluZGV4IDU0OWViN2QyZTRjMDc1
NDhlNGE4YzllYTI0ZWMyMGU0ZjIxYmZhMjUuLjExN2RiYTY4ZWRiMGJkNGI2YzMwZTA5NDg1ZDlk
MGMwZjI5YzM4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBh
c3RlYm9hcmRGaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdm9pZCBXZWJDb3Jl
UGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1l
KQogICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgZmlsZW5hbWUp
KTsKIH0KIAotdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKK3ZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVh
dGUoY29udGV4dC5nZXQoKSwgQmxvYjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGJ1ZmZlci0+ZXh0
cmFjdERhdGEoKSwgdHlwZSksIGZpbGVuYW1lKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAppbmRleCA1YzUyOWRkN2M4
ZWNjMDAwNDhmY2I0ZDE1ODE0NjM1YjI0ZDkwYmI3Li45ZDgxNjA1ZjE5OTI5OGYxOWMwZWQ2OTk1
ZmUzYmQ3NzgzMDM0ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IFdlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAg
ICB+V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCk7CiAKICAgICB2b2lkIHJlYWRGaWxlbmFt
ZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBS
ZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29udGV4dDsKICAgICBWZWN0b3I8UmVmPEZp
bGU+PiBmaWxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRN
TENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRl
ci5tbQppbmRleCBkNDhlMTFjOTZiNzgwOGY4ODM1NGIzYjA3NDdlZWIxZjFlMzdlM2YzLi4wNzgy
NDgzNjJhYTA1NGRjM2FiMDAwMDQ1MTcxODQxOThhNTgwZjc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBC
T09MIEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudChFbGVtZW50JiBlbGVt
ZW50LCBOU1VSTCAqdXJsLCBCT09MCiAgICAgICAgIGlmIChhdXRvIHJlc291cmNlID0gZGF0YVNv
dXJjZS0+c3VicmVzb3VyY2UodXJsKSkgewogICAgICAgICAgICAgYXV0byYgbWltZVR5cGUgPSBy
ZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgICAgIGlmICghdXNlUGxhY2Vob2xkZXIgfHwg
bWltZVR5cGUgIT0gInRleHQvaHRtbCIpIHsKLSAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9
IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVu
dHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAg
ICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1
bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFBy
ZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHVybCwgbWltZVR5
cGUpXTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG5vdEZvdW5kID0gWUVT
OwpAQCAtMjMwMCw3ICsyMzAwLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBm
aWxlV3JhcHBlckZvclVSTChEb2N1bWVudExvYWRlciogZGF0YVNvdXJjZSwgTlMKIAogICAgIGlm
IChkYXRhU291cmNlKSB7CiAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNv
dXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKFVSTCkpIHsKLSAgICAgICAgICAgIGF1dG8g
d3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVX
aXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAg
ICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGlu
aXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICBOU1N0cmluZyAqZmlsZW5h
bWUgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpOwogICAgICAgICAg
ICAgaWYgKCFmaWxlbmFtZSB8fCAhW2ZpbGVuYW1lIGxlbmd0aF0pCiAgICAgICAgICAgICAgICAg
ZmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShyZXNvdXJjZS0+dXJsKCks
IHJlc291cmNlLT5taW1lVHlwZSgpKTsKQEAgLTIzMjIsOCArMjMyMiw4IEBAIHN0YXRpYyBSZXRh
aW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRh
dGFTb3VyY2UsIE5TCiBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVy
Rm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJ
bWFnZSogY2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCkpIHsKLSAgICAgICAgaWYg
KFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVy
KCkpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGlu
aXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXSk7CisgICAgICAgIGlmIChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIg
PSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9w
dE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNo
YXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAg
ICB9CiAKICAgICBhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0K
aW5kZXggNmFhM2NkNTRlODJiOTliMzE5NDI3YmVlMzRjOGM0NGI2NzllMjI3OS4uNzZiMWEwMDlk
ZTQzMGZhM2I1NGQ5YTE1ZTY3OGNkODNmMzE0NWZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI0NSw3ICsy
NDUsNyBAQCBzdGF0aWMgYm9vbCBzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0YShjb25z
dCBGcmFtZSYgZnJhbWUpCiAKICNlbmRpZgogCi1zdGF0aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+
IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQm
IGRvY3VtZW50LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQorc3RhdGljIFJlZjxEb2N1
bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJh
bWUsIERvY3VtZW50JiBkb2N1bWVudCwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJl
ZFNpemUpCiB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBhdXRvIGF0dGFj
aG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1l
bnRUYWcsIGRvY3VtZW50KTsKQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNl
UmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50
JiBmcgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSBy
ZXNvdXJjZUVudHJ5LT52YWx1ZTsKLSAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFw
cGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUo
KSwgcmVzb3VyY2UtPmRhdGEoKSB9KTsKKyAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmFwcGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5
cGUoKSwgcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpIH0pOwogICAgIH0KIAogICAg
IGlmICghc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmlzRW1wdHkoKSkKQEAgLTMzMiw3ICszMzIs
NyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICBuYW1lID0gIm1lZGlhIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNl
cnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5
cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIGltYWdlIH0pOworICAgICAgICBhdHRhY2ht
ZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUt
Pm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIGlt
YWdlIH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVzY2VuZGFudHNPZlR5
cGU8SFRNTE9iamVjdEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0
YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUs
IERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIG5hbWUgPSAiZmlsZSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5m
by5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJl
c291cmNlLT52YWx1ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNl
cnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5
cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0IH0p
OwogICAgIH0KIAogICAgIGZvciAoYXV0byYgaW5mbyA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZv
KSB7CkBAIC00MjgsNyArNDI4LDcgQEAgc3RydWN0IE1hcmt1cEFuZEFyY2hpdmUgewogICAgIFJl
ZjxBcmNoaXZlPiBhcmNoaXZlOwogfTsKIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5k
QXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNI
VE1MKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1
cEFuZEFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6OmZ1
bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKIHsKICAg
ICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoVVJMKCksIGJ1ZmZlcik7
CiAgICAgaWYgKCFhcmNoaXZlKQpAQCAtNDQyLDcgKzQ0Miw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZl
ciYgYnVmCiAgICAgaWYgKCFjYW5TaG93TUlNRVR5cGVBc0hUTUwodHlwZSkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmlu
Zzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRh
dGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxl
YXNlTm9uTnVsbCgpIH07CisgICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZy
b21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFp
blJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCks
IGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9OwogfQogCiBzdGF0aWMgU3RyaW5nIHNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1
bWVudCwgTWFya3VwQW5kQXJjaGl2ZSYgbWFya3VwQW5kQXJjaGl2ZSwgTVNPTGlzdFF1aXJrcyBt
c29MaXN0UXVpcmtzLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNh
blNob3dNSU1FVHlwZUFzSFRNTCkKQEAgLTQ4MSw3ICs0ODEsNyBAQCBzdGF0aWMgU3RyaW5nIHNh
bml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRp
b25Eb2N1bQogICAgICAgICBpZiAoIXNob3VsZFJlcGxhY2VTdWJyZXNvdXJjZVVSTChzdWJmcmFt
ZVVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBNYXJrdXBBbmRBcmNoaXZl
IHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJj
ZS0+ZGF0YSgpLmRhdGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLAor
ICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9t
VVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLAogICAgICAgICAgICAgc3Vi
ZnJhbWVNYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgc3ViZnJhbWVBcmNoaXZlLmNvcHlS
ZWYoKSB9OwogICAgICAgICBhdXRvIHN1YmZyYW1lTWFya3VwID0gc2FuaXRpemVNYXJrdXBXaXRo
QXJjaGl2ZShmcmFtZSwgZGVzdGluYXRpb25Eb2N1bWVudCwgc3ViZnJhbWVDb250ZW50LCBNU09M
aXN0UXVpcmtzOjpEaXNhYmxlZCwgY2FuU2hvd01JTUVUeXBlQXNIVE1MKTsKIApAQCAtNDk3LDcg
KzQ5Nyw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYg
ZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgcmV0dXJuIHNhbml0aXplZE1h
cmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChXVEZNb3ZlKGZyYWdtZW50KSwgKnN0YWdpbmdEb2N1
bWVudCwgbXNvTGlzdFF1aXJrcywgbWFya3VwQW5kQXJjaGl2ZS5tYXJrdXApOwogfQogCi1ib29s
IFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQor
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVG
b3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNTMyLDcgKzUzMiw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUo
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29u
dGVudE1hcmt1cFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiti
b29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTYxMiwxMiArNjEyLDEyIEBAIGJvb2wgV2ViQ29udGVudE1hcmt1
cFJlYWRlcjo6cmVhZEhUTUwoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuICFtYXJr
dXAuaXNFbXB0eSgpOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJl
ZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3Vt
ZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAg
ICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBz
dHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTYyNiwxMSArNjI2LDExIEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVu
dE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNv
bnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVz
Om51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdt
ZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7
CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjM5LDEyICs2
MzksMTIgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVy
OjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpy
ZWFkUlRGKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUu
c2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJp
YnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBm
cmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0
KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY1Mywx
MSArNjUzLDExIEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVh
ZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3Vw
UmVhZGVyOjpyZWFkUlRGKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBp
ZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIHN0
cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1
ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwor
ICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRv
Y3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZy
YWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJh
Z21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY3Niw3ICs2NzYsNyBAQCBib29sIFdl
YkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXpl
IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJ
bWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
dHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQogewogICAg
IEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5k
b2N1bWVudCgpOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogICAgIHJldHVybiBhdHRhY2htZW50OwogfQogCi1zdGF0aWMgUmVmPEhUTUxFbGVt
ZW50PiBhdHRhY2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRh
dGlvblNpemUgcHJlZmVycmVkU2l6ZSkKK3N0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1l
bnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlv
blNpemUgcHJlZmVycmVkU2l6ZSkKIHsKICAgICBSZWYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1l
bnQoKTsKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0
ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKQEAgLTgzMyw3ICs4MzMsNyBA
QCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdGl0bGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRh
dGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVmZmVyKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAg
ICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAppbmRleCA2
MDQ4NmU3MWFkNTlmZWNjNzE1ZmYwYTA5YjFjMzU1OGI3YjM0MmMyLi5kM2U5ODE5YmQ1MzFmODQ4
NmEzMTdhYjlmOWVkODNhOTg4NWJlMmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNzEsNyArNzEsNyBAQCBib29sIFdl
YkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXpl
IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJ
bWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
dHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQogewogICAg
IEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5k
b2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCA0NWQ5MzNlMTNjYTRkMjI1MWM1ZGVk
ODQ4YWE5ZTk4NzJjNzY3NDg5Li5iY2E2Njk2ZWJlNmYwZWRkZGRlZTc5YjczYzNlZTE0NDk2ZDgy
ZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBCbG9iTG9h
ZGVyOwogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgUmVhZGFibGVTdHJlYW07CiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEV4Y2VwdGlv
bk9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVl
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAppbmRl
eCA1NTllYmNjNDhjNWYwOTZhYzE5YmFlN2Q5ZjcxOGI3MWYyYTM1MzIyLi40MmY0MTgwZGZhODQy
N2UwZTYwZjgxZWI3OWIxOTE4N2NhZmRiYTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
TmV0d29ya1NlbmRRdWV1ZS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBOZXR3b3JrU2VuZFF1
ZXVlOjpwcm9jZXNzTWVzc2FnZXMoKQogICAgICAgICBib29sIHNob3VsZFN0b3BQcm9jZXNzaW5n
ID0gZmFsc2U7CiAgICAgICAgIHN3aXRjaE9uKG1fcXVldWUuZmlyc3QoKSwgW3RoaXNdKGNvbnN0
IENTdHJpbmcmIHV0ZjgpIHsKICAgICAgICAgICAgIG1fd3JpdGVTdHJpbmcodXRmOCk7Ci0gICAg
ICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgeworICAgICAgICB9LCBbdGhp
c10oUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CiAgICAgICAgICAgICBkYXRh
LT5mb3JFYWNoU2VnbWVudChtX3dyaXRlUmF3RGF0YSk7CiAgICAgICAgIH0sIFt0aGlzLCAmc2hv
dWxkU3RvcFByb2Nlc3NpbmddKFVuaXF1ZVJlZjxCbG9iTG9hZGVyPiYgbG9hZGVyKSB7CiAgICAg
ICAgICAgICBhdXRvIGVycm9yQ29kZSA9IGxvYWRlci0+ZXJyb3JDb2RlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCmluZGV4IDU1MWY3MGY5MTY3YjJiZmNiMjQ0
YmIyYjM3MDBiZmJhYWY1NDc5NmMuLmQyM2NmZWJiNDUwOGJjMzAwOTE1YmI5OTZkM2YxNTA2MmNl
MzUwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCkBAIC00
Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYjsKIGNsYXNzIEJs
b2JMb2FkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBOZXR3b3JrU2VuZFF1ZXVlIDogcHVibGljIENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKQEAgLTYzLDcgKzYzLDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NNZXNzYWdlcygpOwogCi0gICAgdXNpbmcg
TWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxDU3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPiwgVW5pcXVl
UmVmPEJsb2JMb2FkZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PENTdHJp
bmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgVW5pcXVlUmVmPEJsb2JMb2FkZXI+PjsK
ICAgICBEZXF1ZTxNZXNzYWdlPiBtX3F1ZXVlOwogCiAgICAgV3JpdGVTdHJpbmcgbV93cml0ZVN0
cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApp
bmRleCA1NmEwNmZjYWYyNzNkMjVkYzRjNzVkY2U1NjlhYWM4ZjFhYTU5NTI3Li5kMmI4NzQxYTA0
NDM0MmM3ZmZkOWU4YTUzM2NjOGExMjBlMjliYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgc3RhdGljIGJv
b2wgbWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VBdHRhY2htZW50KGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZShtaW1lVHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlwZSht
aW1lVHlwZSk7CiB9CiAKLXZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3Np
bmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQordm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2lu
Z0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGF1dG8qIGhvc3RFbGVtZW50ID0gc2hhZG93
SG9zdCgpOwogICAgIGlmICghaXM8SFRNTEltYWdlRWxlbWVudD4oaG9zdEVsZW1lbnQpIHx8ICFi
dWZmZXItPnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5oCmluZGV4IDU3M2VjMmVhZTFjZGMwNjA5ZjI2MWMzODQwMGJiMDJjNDgwZjdiZGQuLjY2MWRl
YzkzNzZkOGE5ZDZkNDcxN2ZkMGI0Y2U3ZjgyZmYwM2Y3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBGaWxl
OwogY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIFJlbmRlckF0dGFjaG1lbnQ7CiBjbGFz
cyBTaGFyZWFibGVCaXRtYXA7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1lbnQgZmluYWwgOiBwdWJs
aWMgSFRNTEVsZW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSFRNTEF0dGFjaG1l
bnRFbGVtZW50KTsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29weU5vbkF0
dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JikgZmluYWw7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUF0dHJpYnV0ZXMoc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4mJiBuZXdGaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBuZXdGaWxlbmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVFbmNs
b3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgZGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVFbmNsb3NpbmdJ
bWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVGh1bWJu
YWlsKGNvbnN0IFJlZlB0cjxJbWFnZT4mIHRodW1ibmFpbCk7CiAKICAgICBJbnNlcnRlZEludG9B
bmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWlu
ZXJOb2RlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApp
bmRleCA1MTcxYjljZGM3ODkzMTcxZTIxZTVmNGJmNTUwMTdlZjk0NGFjNzk1Li4xYTU2YmMwMzU5
Y2NlMWY1MGRjZGRhMDY1MjIyYTAxMDk1YTY5MDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKQEAgLTI5MzgsNyArMjkzOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6Y2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpCiAgICAg
YXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpOwogfQogCi12b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQo
Y29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEp
Cit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRp
b25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIG1lZGlhUGxheWVySW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0YS0+dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDY5
NTY2OTQ5NjMxMGVmOTEwOGI5NTZmZGE0ODIxNDMwMTQ5NzBlY2IuLjZjM2I2OTNiN2IxMGVkYTMw
ZTUxZDRjNjYzMWJlM2ZiNTBjYmY4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCkBAIC03MjAsNyArNzIwLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENETUNsaWVudAog
ICAgIHZvaWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpIGZp
bmFsOwotICAgIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNl
aXZlZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lk
IGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3Ry
aW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDQ0MmQwOTQ2YmUyNTBk
Y2NmNTkyN2JhYTkyNzkzYTcwZWU5MTkzM2UuLjAwZDhmMjM5ZDcxMjdjNjFjYWUxYjU4ZDljNGEz
MDNhOWIzYzkwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAtMTQx
LDcgKzE0MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6dXBkYXRlRHVyaW5nUGFyc2luZygpCiAg
ICAgaWYgKCFtX2ltYWdlRWxlbWVudCkKICAgICAgICAgY3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUo
KTsKIAotICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBsb2FkZXIoKS0+bWFp
blJlc291cmNlRGF0YSgpKQorICAgIGlmIChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSkKICAgICAgICAgbV9pbWFnZUVs
ZW1lbnQtPmNhY2hlZEltYWdlKCktPnVwZGF0ZUJ1ZmZlcigqYnVmZmVyKTsKIAogICAgIGltYWdl
VXBkYXRlZCgpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6ZmluaXNo
ZWRQYXJzaW5nKCkKIHsKICAgICBpZiAoIXBhcnNlcigpLT5pc1N0b3BwZWQoKSAmJiBtX2ltYWdl
RWxlbWVudCkgewogICAgICAgICBDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UgPSAqbV9pbWFnZUVs
ZW1lbnQtPmNhY2hlZEltYWdlKCk7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEg
PSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAKICAg
ICAgICAgLy8gSWYgdGhpcyBpcyBhIG11bHRpcGFydCBpbWFnZSwgbWFrZSBhIGNvcHkgb2YgdGhl
IGN1cnJlbnQgcGFydCwgc2luY2UgdGhlIHJlc291cmNlIGRhdGEKICAgICAgICAgLy8gd2lsbCBi
ZSBvdmVyd3JpdHRlbiBieSB0aGUgbmV4dCBwYXJ0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBhN2NhNzE2MmQ3
OTFlZDdmYmE4Y2M5MWMyMWEyY2YzYWY2ZTY5YTdlLi4xODc5M2ZmMDY2MzM4ZmI2MGEzNGRlYzkw
OWJjMmRkZDI4YmVhZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtODUwLDcgKzg1MCw3IEBAIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVxdWVzdChs
b2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1l
bnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0
d29ya0FnZW50LT5pbnRlcmNlcHRSZXNwb25zZShyZXNwb25zZSwgaWRlbnRpZmllciwgV1RGTW92
ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggOGU2NWM0ZWIxMDIzMzUyMWY0OGM3ZjRiMTIwYWQyYzg5
MDlhMDdiYS4uZDI5NTc4MTBkODM4MmM5MzUxZDVhOTNmMTQ0YWVkMTQ5M2JjYzY1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aApAQCAtOTMsNyArOTMsNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU2hhZG93Um9v
dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBj
bGFzcyBUaW1lckJhc2U7CiBjbGFzcyBXZWJLaXROYW1lZEZsb3c7CiBjbGFzcyBXZWJTb2NrZXRD
aGFubmVsOwpAQCAtMjM2LDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzaG91
bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVz
dChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+
JiYpOwotICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4pPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPik+JiYpOwogCiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29u
c29sZShQYWdlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsK
ICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKQEAg
LTQ0MSw3ICs0NDEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2Vw
dFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBp
bnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXIm
LCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMg
dm9pZCBpbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4m
Jik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3Nh
Z2VUb0NvbnNvbGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwogCkBAIC0xMjg5LDcgKzEyODksNyBAQCBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VM
b2FkZXImIGxvYWRlciwgRgogICAgICAgICBpbnRlcmNlcHRSZXF1ZXN0SW1wbCgqYWdlbnRzLCBs
b2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NF
UlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFt
ZSwgcmVzcG9uc2UpKTsKICAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50
cyhmcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCmluZGV4IDYxZTRiYzNiYTAxOWVlMjVlNWM4
YmMyMjFkZmY2MDc3ZWRkYjg2M2QuLmYwNjQwM2E2MjM0YjQyYjZhZDJhODBiMDE5NGE1OTZkODlm
NmU2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoUmVz
b3VyY2VMb2FkZXImIGxvCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRS
ZXF1ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1l
JiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK3ZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNv
bnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYm
IGhhbmRsZXIpCiB7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNw
b25zZShmcmFtZSwgcmVzcG9uc2UsIGlkZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbldlYktpdC5oCmluZGV4IGY3NjExNGNlOThmNDJhN2ZmOTA2YTQ4ZDA0MjBiOTYzMDVk
MzY5MTQuLjA3YjQyMWI1OWMxNTU1ZTFhMjkxZTE4ZWJiMjYyMjEyMmYxNjU4YjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJL
aXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0LmgKQEAgLTM2LDIwICszNiwyMCBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIFJlc291
cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIFdFQkNPUkVfRVhQT1JUIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdCB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFt
ZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVy
Y2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAg
IHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNl
cHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50
ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogcHJp
dmF0ZToKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoY29u
c3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91
bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNv
dXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwot
ICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29u
c3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIH07CiAKIGlubGluZSBib29sIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBG
cmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTc2LDcgKzc2
LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNl
cHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2EKICAgICBpbnRlcmNlcHRSZXF1ZXN0SW50ZXJu
YWwobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSogZnJh
bWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCitpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZy
YW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxk
SW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAgaW50ZXJjZXB0UmVzcG9u
c2VJbnRlcm5hbCgqZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmYzMmY2
NjBiOTE3M2JhZThkNWNkOWExMzBlYWU1OGI5N2Q1ZWNlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtNDcsNiArNDcsNyBA
QCBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplID0g
NTAgKiAxMDAwICogMTAwMDsgLy8gNTBNQgogTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcm
IGxvYWRlcklkKQogICAgIDogbV9yZXF1ZXN0SWQocmVxdWVzdElkKQogICAgICwgbV9sb2FkZXJJ
ZChsb2FkZXJJZCkKKyAgICAsIG1fZGF0YUJ1ZmZlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTY0LDcgKzY1LDcgQEAgdW5zaWduZWQgTmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVtb3ZlQ29udGVudCgpCiAgICAgaWYgKGhhc0Rh
dGEoKSkgewogICAgICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAgICAgICAgIHJlc3VsdCA9
IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOwor
ICAgICAgICBtX2RhdGFCdWZmZXItPnJlc2V0KCk7CiAgICAgfQogCiAgICAgaWYgKGhhc0NvbnRl
bnQoKSkgewpAQCAtODEsMzYgKzgyLDM3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgpCiAgICAgcmV0dXJuIHJlbW92ZUNvbnRlbnQo
KTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRh
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fZGF0YUJ1ZmZlci0+aXNOdWxsKCk7Cit9CisKIHNp
emVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAw
OworICAgIHJldHVybiBtX2RhdGFCdWZmZXItPnNpemUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKLSAgICBp
ZiAoIW1fZGF0YUJ1ZmZlcikKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBtX2RhdGFCdWZmZXIt
PmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGFCdWZmZXItPmFwcGVuZChkYXRh
LCBkYXRhTGVuZ3RoKTsKIH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50
KCkpOwogCi0gICAgc2l6ZV90IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZlci0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpOwor
ICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9kZWNv
ZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRl
bnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRh
TGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChi
dWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNl
NjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJp
bmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQg
PSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAg
fQogCi0gICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKLQogICAgIHJldHVybiBtX2NvbnRlbnQu
c2l6ZUluQnl0ZXMoKSAtIGRhdGFMZW5ndGg7CiB9CiAKQEAgLTI2Nyw3ICsyNjksNyBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgQ2FjaGVkUmVzbwogICAgIHJlc291cmNlRGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2Uo
Y2FjaGVkUmVzb3VyY2UpOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRSZXNv
dXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKK3ZvaWQgTmV0
d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNl
RGF0YSA9IHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogICAgIGlmICghcmVz
b3VyY2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaAppbmRleCBlZmEwMDA1M2FlMTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3Li5l
ZTM5NDU3Zjc2NzJlYWNhYWM5MGE1YjZiYzg4MTEwOGNiZGE4YTg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgog
I2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCkBAIC00MCw3ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhY2hlZFJl
c291cmNlOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29k
ZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwor
Y2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtODgsOCArOTAsOCBAQCBwdWJsaWM6
CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZWNvZGVyLmNvcHlSZWYoKTsgfQogICAgICAgICB2b2lkIHNldERlY29kZXIoUmVm
UHRyPFRleHRSZXNvdXJjZURlY29kZXI+JiYgZGVjb2RlcikgeyBtX2RlY29kZXIgPSBXVEZNb3Zl
KGRlY29kZXIpOyB9CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIuY29weVJlZigpOyB9Ci0gICAgICAgIHZvaWQgc2V0QnVmZmVy
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fYnVmZmVyID0gV1RGTW92ZShidWZm
ZXIpOyB9CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlci5jb3B5UmVmKCk7IH0KKyAgICAgICAgdm9pZCBzZXRCdWZm
ZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fYnVmZmVyID0g
V1RGTW92ZShidWZmZXIpOyB9CiAKICAgICAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxDZXJ0aWZp
Y2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRl
SW5mbzsgfQogICAgICAgICB2b2lkIHNldENlcnRpZmljYXRlSW5mbyhjb25zdCBzdGQ6Om9wdGlv
bmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmljYXRlSW5mbykgeyBtX2NlcnRpZmljYXRlSW5m
byA9IGNlcnRpZmljYXRlSW5mbzsgfQpAQCAtMTAzLDEwICsxMDUsMTAgQEAgcHVibGljOgogICAg
ICAgICBXYWxsVGltZSByZXNwb25zZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9u
c2VUaW1lc3RhbXA7IH0KICAgICAgICAgdm9pZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGlt
ZSB0aW1lKSB7IG1fcmVzcG9uc2VUaW1lc3RhbXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBo
YXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAg
Ym9vbCBoYXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1
ZmZlcjsgfQorICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRh
dGFMZW5ndGgoKSBjb25zdDsKICAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRv
Q29udGVudCgpOwpAQCAtMTE5LDggKzEyMSw4IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1f
dGV4dEVuY29kaW5nTmFtZTsKICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJl
ZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fZGF0YUJ1ZmZlcjsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CisgICAgICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZm
ZXI7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAg
ICAgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJbmZvOwog
ICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9jYWNoZWRSZXNvdXJjZSB7IG51bGxwdHIgfTsKICAg
ICAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgbV90eXBlIHsgSW5zcGVjdG9y
UGFnZUFnZW50OjpPdGhlclJlc291cmNlIH07CkBAIC0xNDQsNyArMTQ2LDcgQEAgcHVibGljOgog
ICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAg
ICB2b2lkIG1heWJlRGVjb2RlRGF0YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7
CiAgICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2Fj
aGVkUmVzb3VyY2UqKTsKLSAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUpOworICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwogICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0
YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRh
Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZW1vdmVDYWNo
ZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4
NGEyODg0MmZiYzU2Mjg5Mzc2MWQ3MWU0Yzc0Mjc0ZWJiMTguLjE4OWYyNmIwOThiNzM2MWRjZjhl
OWQ2NGUzNTllNzVmZDljMDk3MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTExNDAsNyArMTE0
MCw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291
cmNlTG9hZGVyJiBsb2FkZXIsIEZ1bmN0aW9uPHZvCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PnJlcXVlc3RJbnRlcmNlcHRlZChyZXF1ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1
ZXN0KGxvYWRlci5yZXF1ZXN0KCkpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIp
Cit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1f
ZW5hYmxlZCk7CiAgICAgQVNTRVJUKG1faW50ZXJjZXB0aW9uRW5hYmxlZCk7CkBAIC0xMjQzLDcg
KzEyNDMsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShjb25zdAogICAgICAgICBvdmVycmlkZVJlc3Bv
bnNlLnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIG92ZXJy
aWRlUmVzcG9uc2UubWltZVR5cGUoKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gb3ZlcnJpZGVEYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdmVy
cmlkZURhdGE7CiAgICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIg
PSBiYXNlNjREZWNvZGUoY29udGVudCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTI3MSw3
ICsxMjcxLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29y
a0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnMKICAgICBpZiAobG9hZGVyLT5yZWFj
aGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJs
ZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zKTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0
byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVudCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpA
QCAtMTQwNywxMiArMTQwNywxMiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVk
UmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3RyaQogICAgICAgICBp
ZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1l
VHlwZSgpKSkgewogICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNw
b25zZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7CiAgICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9
IGZhbHNlOwotICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVj
b2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAg
ICAgICAgKmJhc2U2NEVuY29kZWQgPSB0cnVlOwotICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5j
b2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJl
c3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5oCmluZGV4IDhmNmZiY2MyOTNhZWJmOGI5ZDVjOTQ1ZDI4MjlhMTUyN2I3NGJjN2Yu
LjZiY2Q4N2RkY2Q4YjA0NDEzMDhkMWQwMWVjYTZiMGU2ZGExNDEzZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
aApAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICBib29sIHdpbGxJbnRlcmNlcHQoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4pPiYmKTsKKyAgICB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYp
OwogICAgIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZv
aWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwogCiAgICAgdm9pZCBzZWFyY2hPdGhlclJl
cXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mLCBSZWY8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYpOwpAQCAtMTg1
LDcgKzE4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBlbmRp
bmdJbnRlcmNlcHRSZXNwb25zZSk7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIHB1YmxpYzoKLSAgICAgICAgUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIG9yaWdpbmFsUmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICAgICAgUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIG9yaWdpbmFsUmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiAgICAgICAgICAgICA6IG1fb3JpZ2luYWxSZXNwb25zZShvcmlnaW5h
bFJlc3BvbnNlKQogICAgICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQogICAgICAgICB7IH0KQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgcmVzcG9uZChtX29yaWdpbmFsUmVzcG9uc2UsIG51bGxwdHIpOwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCByZXNwb25kKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhKQorICAgICAgICB2b2lkIHJlc3BvbmQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBkYXRhKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIW1fcmVzcG9uZGVk
KTsKICAgICAgICAgICAgIGlmIChtX3Jlc3BvbmRlZCkKQEAgLTIxNSw3ICsyMTUsNyBAQCBwcml2
YXRlOgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBtX29yaWdpbmFs
UmVzcG9uc2U7Ci0gICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAg
ICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKICAgICAg
ICAgYm9vbCBtX3Jlc3BvbmRlZCB7IGZhbHNlIH07CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4
IDNkYWZlNjQzN2RmMTIxMDQwNWZlZmJmMzc1Nzg1ZmVjZDVlYWM0NzIuLjFiNjQ2YWEyMTczYWI1
NGEzZjFhYmRjYjUwMjA0YWRlOThjMDczYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEwMCwxNSArMTAw
LDE1IEBAIHN0YXRpYyBib29sIGRlY29kZUJ1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHVu
c2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50
OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2Rl
LCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBm
cmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghYnVmZmVyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0
YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQo
KS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gSW5z
cGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRo
QmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCi1ib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hh
cmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVz
dWx0KQorYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAg
cmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5j
b2RlLCByZXN1bHQpOworICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgp
IDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAog
Ym9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRo
QmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIElu
c3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KFByb3RvY29sOjpFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIEZyYQogICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBpZiAoZXF1
YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwsIGxvYWRlci0+dXJsKCkpKSB7CiAgICAg
ICAgICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCBiNTFhZGRiMWJkOGYyY2Nl
Njk1NjA3OTljZDFkOTUyZDJkZTQyODM4Li4zZDVlNTY2ZGJlMGM1ZWMxMWQ5ZThkZjY3ZmNmMGE3
MDk4OGEyZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgSW5zcGVjdG9yQ2xp
ZW50OwogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJP
YmplY3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdl
bnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JQYWdlQWdlbnQpOwpAQCAtNzUsNyAr
NzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIE90aGVyUmVzb3VyY2UsCiAgICAgfTsKIAotICAgIHN0
YXRpYyBib29sIHNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmlu
ZyogcmVzdWx0KTsKKyAgICBzdGF0aWMgYm9vbCBzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwogICAgIHN0YXRpYyBWZWN0
b3I8Q2FjaGVkUmVzb3VyY2UqPiBjYWNoZWRSZXNvdXJjZXNGb3JGcmFtZShGcmFtZSopOwogICAg
IHN0YXRpYyB2b2lkIHJlc291cmNlQ29udGVudChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0
cmluZyYsIEZyYW1lKiwgY29uc3QgVVJMJiwgU3RyaW5nKiByZXN1bHQsIGJvb2wqIGJhc2U2NEVu
Y29kZWQpOwogICAgIHN0YXRpYyBTdHJpbmcgc291cmNlTWFwVVJMRm9yUmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCBi
NGU2YTNhNTNiNGMwYzBkYTFjMzE3MmRkNDJjYWU2YThjZDIxZjdhLi42YWU1MjY1OTdjZDI4NjMx
YmU3OTUwZmMzMzUzNmY4ZjM0N2Q3YWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVy
UmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NFUlQobV9zdGF0
ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQ
b2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICBpZiAoYXV0
byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICBt
X2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+
ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGllbnQuZGF0YVJl
Y2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBV
UkwmIGJsb2NrZWRQYWdlVVJMKCkKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIENvbnRlbnRGaWx0
ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCiB7CiAgICAgQVNTRVJUKHdpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9y
KSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEgeyBtX2Jsb2Nr
aW5nQ29udGVudEZpbHRlci0+cmVwbGFjZW1lbnREYXRhKCkgfTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhIHsgbV9ibG9ja2luZ0NvbnRlbnRGaWx0
ZXItPnJlcGxhY2VtZW50RGF0YSgpIH07CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7
IFVSTCgpLCAidGV4dC9odG1sIl9zLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHJlcGxhY2VtZW50
RGF0YS0+c2l6ZSgpKSwgIlVURi04Il9zIH07CiAgICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0
ZURhdGEgeyBXVEZNb3ZlKHJlcGxhY2VtZW50RGF0YSksIGVycm9yLmZhaWxpbmdVUkwoKSwgcmVz
cG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OkhpZGRlbiB9
OwogICAgIFNldEZvclNjb3BlPGJvb2w+IGxvYWRpbmdCbG9ja2VkUGFnZSB7IG1faXNMb2FkaW5n
QmxvY2tlZFBhZ2UsIHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCmluZGV4IGMzZDg0NTBmNzFjMmMzNzNkMmFmMWNjY2ZiMjE1YWQ4MWJmODBkMGIuLjNiOTBl
ZjRjNTgyN2U2YzBiNDliMzQ2NTZiM2NkNzFhOGVkYTk2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIERvY3VtZW50TG9hZGVy
Ojp+RG9jdW1lbnRMb2FkZXIoKQogI2VuZGlmCiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IERv
Y3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSgpIGNvbnN0CiB7
CiAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbV9z
dWJzdGl0dXRlRGF0YS5jb250ZW50KCktPmNvcHkoKTsKQEAgLTE2MDgsMTEgKzE2MDgsMTEgQEAg
Ym9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBhZGRBbGxBcmNo
aXZlUmVzb3VyY2VzKCptX2FyY2hpdmUpOwogICAgIEFTU0VSVChtX2FyY2hpdmUtPm1haW5SZXNv
dXJjZSgpKTsKICAgICBhdXRvJiBtYWluUmVzb3VyY2UgPSAqbV9hcmNoaXZlLT5tYWluUmVzb3Vy
Y2UoKTsKLSAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0gJm1haW5SZXNvdXJjZS5kYXRhKCk7Cisg
ICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9IG1haW5SZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3Vv
dXMoKTsKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7
CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YShtYWlu
UmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOworICAg
IGNvbW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0
YSgpLnNpemUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTE2NzEsNyArMTY3
MSw3IEBAIEFyY2hpdmVSZXNvdXJjZSogRG9jdW1lbnRMb2FkZXI6OmFyY2hpdmVSZXNvdXJjZUZv
clVSTChjb25zdCBVUkwmIHVybCkgY29uc3QKIAogUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9j
dW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZSgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gZGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAg
ICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8mIHJlc3BvbnNl
ID0gdGhpcy0+cmVzcG9uc2UoKTsKQEAgLTIyNTUsOCArMjI1NSw4IEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQoKQogCiAgICAgZnJhbWVM
b2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7
Ci0gICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXpl
KCkpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBt
YWluUmVzb3VyY2VEYXRhKCk7CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3Vt
ZW50TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKQEAgLTIyOTIsNyArMjI5Miw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQogICAgIG1fZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLmdldExvYWREZWNpc2lvbkZvckljb25zKGljb25EZWNpc2lvbnMpOwogfQogCi12
b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNp
b24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJl
ZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGlk
R2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBpY29uID0gbV9pY29uc1BlbmRpbmdMb2Fk
RGVjaXNpb24udGFrZShsb2FkSWRlbnRpZmllcik7CiAKQEAgLTIzMTMsNyArMjMxMyw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lv
biwgdWludDY0X3QgbG9hZElkZW50CiAgICAgcmF3SWNvbkxvYWRlci0+c3RhcnRMb2FkaW5nKCk7
CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRl
ciYgbG9hZGVyLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmZp
bmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYgbG9hZGVyLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBidWZmZXIpCiB7CiAgICAgLy8gSWYgdGhlIERvY3VtZW50TG9hZGVyIGhhcyBkZXRhY2hl
ZCBmcm9tIGl0cyBmcmFtZSwgYWxsIGljb24gbG9hZHMgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVu
IGNhbmNlbGxlZC4KICAgICBBU1NFUlQobV9mcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCmluZGV4IGZiZjU0NWM0NjBlNGU0ODlkODdiMjVjMGU4NWVjY2NhNGNiZjNj
ODcuLjMzOTg3M2Q1ZDNmYjliYjMwMDQ5OGNkNmYzN2NiZjY1Yjc4YWY1YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENh
Y2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZpbHRlcjsKK2NsYXNzIFNoYXJlZEJ1
ZmZlcjsKIHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFz
cyBGcmFtZTsKQEAgLTgzLDcgKzg0LDcgQEAgY2xhc3MgSWNvbkxvYWRlcjsKIGNsYXNzIFBhZ2U7
CiBjbGFzcyBQcmV2aWV3Q29udmVydGVyOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU1dDbGll
bnRDb25uZWN0aW9uOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTdWJzdGl0dXRl
UmVzb3VyY2U7CkBAIC0xNzEsNyArMTcyLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
U3VicmVzb3VyY2VMb2FkZXIqIG1haW5SZXNvdXJjZUxvYWRlcigpIGNvbnN0OwotICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJl
c291cmNlRGF0YSgpIGNvbnN0OwogICAgIAogICAgIERvY3VtZW50V3JpdGVyJiB3cml0ZXIoKSBj
b25zdCB7IHJldHVybiBtX3dyaXRlcjsgfQogCkBAIC0zOTIsOCArMzkzLDggQEAgcHVibGljOgog
I2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0SWNvbkxvYWRpbmcoKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3Qg
bG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYp
OwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgU2hhcmVkQnVmZmVy
Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJv
b2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRp
bmdJY29uKEljb25Mb2FkZXImLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICAgICBjb25z
dCBWZWN0b3I8TGlua0ljb24+JiBsaW5rSWNvbnMoKSBjb25zdCB7IHJldHVybiBtX2xpbmtJY29u
czsgfQogCkBAIC02MjEsNyArNjIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fd2FpdGluZ0Zv
ck5hdmlnYXRpb25Qb2xpY3kgeyBmYWxzZSB9OwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgTGlu
a0ljb24+IG1faWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uOwotICAgIEhhc2hNYXA8c3RkOjp1bmlx
dWVfcHRyPEljb25Mb2FkZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciop
Pj4gbV9pY29uTG9hZGVyczsKKyAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVy
PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+PiBtX2lj
b25Mb2FkZXJzOwogICAgIFZlY3RvcjxMaW5rSWNvbj4gbV9saW5rSWNvbnM7CiAKICNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmlu
ZGV4IGUxM2UyODZlMTRmNGZlOGZkN2RmOTBhMGUxNTFmMDkzNDE4ZGRkYjEuLjA4YTBhZTE5YTM3
OTg0NmYxNTc1NjRjMmQwYzgzMmIyNzQ4MzYwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNsYXNzIENh
Y2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50OwogY2xh
c3MgRG9jdW1lbnRMb2FkZXI7CkBAIC03Niw3ICs3Nyw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3Mg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3Rp
dHV0ZURhdGE7CiAKIGVudW0gY2xhc3MgQ2FjaGVQb2xpY3kgOiB1aW50OF90OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA0ZmQ2MzdhOTAxNGE1ZDQxYTIy
NmVlNDU5MTdiNmIzZTlhNzkwZWJiLi5lZTlmM2QwYzk4NGQ0NTVjYmI5MWI0NjBjMWJjMTI4OThk
MTIzNjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAt
OTgsNyArOTgsNyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJz
dGl0dXRlRGF0YTsKIGNsYXNzIFdpZGdldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3Ry
YXRlZ3kuaAppbmRleCBhZWY2NjhiZDYzZWQ1ZmNkNDVlNjFlOWQxZjEwN2NmYjZhZWYyNjRiLi4y
OWQyZTNmNDYxNDBhYWE1MTE2MGU2YTI4NTYyZjM3MGUzNzFlYjIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBSZXNvdXJjZUxv
YWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBj
bGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIAogc3RydWN0IEZldGNo
T3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIuY3BwCmluZGV4IDYzMzc1NTk2MzIwMDE0NjM4Mjg5ZTI4MjYwNGM1NWIwYWY0
NDUzMTMuLjYwNDNhYzliZTI2N2VhNGZiYzcxZTExMThiOTA3OTE1NWUzOTE1MDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNw
cApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGUKICAgICBkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5n
dGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3Zv
aWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBk
YXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQog
ewogICAgIFJlZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhp
cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyLmgKaW5kZXggNDhiYjIxNTNjOTNmMmRjNzU0ZTIwNzMyMjUyYzA1MDljZjcwNGE0MS4u
YjUxNzRlZGM5NGI5OTIzOTAyMDVmMGZhZDQ1MmVhNWFjMzg3ODkzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKQEAgLTYzLDcg
KzYzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApAQCAtNzQsNyArNzQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBp
bnQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKIAogICAgIHZvaWQgbm90aWZ5
RG9uZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlw
dG9ncmFwaGljRGlnZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3QuY3BwCmluZGV4IGM2Mjc3Njg1OGE2ZGM1YWZmZDM2ZGM5ZTc4NWM4YmQy
NDcyYmI3NGQuLmQ5NGI3MDAwNzQxY2Q5MTJiOTE3M2UyYjM3NDZkNGRhOGIzNjhhNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdl
c3QuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNy
eXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWcKICAgICBy
ZXR1cm4geyBhbGdvcml0aG0sIGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKSB9OwogfQogCi1S
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1
ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0sIGNv
bnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNy
eXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZmZXIoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBi
dWZmZXIpCiB7CiAgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3Jl
YXRlKHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGFsZ29yaXRobSkpOwogICAgIGlmIChidWZmZXIp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3QuaAppbmRleCBhZWEzZGM1N2M4NzgzMTMwMTNhNWIxNmM5MzliNzc0ZWQ0ODQzMjRjLi44
M2I4NjEzY2ZkYTIzMjlhZTMwYmJmNmFiYzE0Yjk5ZDQ0MjM3YjAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCkBAIC0zNCw3
ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFJlc291cmNlOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3Ry
dWN0IFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCB7CiAgICAgZW51bSBjbGFzcyBBbGdvcml0
aG0gewpAQCAtNzUsNyArNzUsNyBAQCBzdGQ6Om9wdGlvbmFsPEVuY29kZWRSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3Q+IHBhcnNlRW5jb2RlZENyeXB0b2dyYXBoaWNEaWdlcwogCiBzdGQ6Om9w
dGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gZGVjb2RlRW5jb2RlZFJlc291cmNl
Q3J5cHRvZ3JhcGhpY0RpZ2VzdChjb25zdCBFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0Jik7CiAKLVJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0
Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBj
b25zdCBTaGFyZWRCdWZmZXIqKTsKK1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9n
cmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6
QWxnb3JpdGhtLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiBSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvckJ5dGVzKFJlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBjb25zdCB2b2lkKiBieXRlcywgc2l6ZV90IGxlbmd0
aCk7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGFh
ODViYjRkM2NhODcxNDViYjdhODZmNjQ2NjhlNDk1MTc2YWMyMzUuLmRmMTM5NTg4ZThkNTI1MmIz
ZWVjNjE5M2FlNjFhYTI0Nzg2YjIxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcApAQCAtNzYsNiArNzYsNyBAQCBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9J
REVOVElGSUVSKFJlc291cmNlTG9hZGVyKTsKIFJlc291cmNlTG9hZGVyOjpSZXNvdXJjZUxvYWRl
cihGcmFtZSYgZnJhbWUsIFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zKQogICAgIDogbV9m
cmFtZSB7ICZmcmFtZSB9CiAgICAgLCBtX2RvY3VtZW50TG9hZGVyIHsgZnJhbWUubG9hZGVyKCku
YWN0aXZlRG9jdW1lbnRMb2FkZXIoKSB9CisgICAgLCBtX3Jlc291cmNlRGF0YSB7IG1ha2VVbmlx
dWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX2RlZmVyc0xvYWRpbmcgeyBv
cHRpb25zLmRlZmVyc0xvYWRpbmdQb2xpY3kgPT0gRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dE
ZWZlcnNMb2FkaW5nICYmIGZyYW1lLnBhZ2UoKS0+ZGVmZXJzTG9hZGluZygpIH0KICAgICAsIG1f
b3B0aW9ucyB7IG9wdGlvbnMgfQogewpAQCAtMTE4LDcgKzExOSw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMoKQogCiAgICAgbV9pZGVudGlmaWVyID0geyB9OwogCi0g
ICAgbV9yZXNvdXJjZURhdGEgPSBudWxscHRyOworICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgp
OwogICAgIG1fZGVmZXJyZWRSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiB9CiAKQEAgLTE4
OSw3ICsxOTAsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjppbml0KFJlc291cmNlUmVxdWVzdCYm
IGNsaWVudFJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaQogICAgIH0pOwogfQogCi12b2lk
IFJlc291cmNlTG9hZGVyOjpkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUmVz
b3VyY2VMb2FkZXI6OmRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsK
ICAgICBkaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpXSgpIG11dGFibGUgewogICAg
ICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKQEAgLTMxOCw3ICszMTksNyBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KERhdGFCdWZmZXJpbmdQb2xp
Y3kgZGF0YUJ1ZmZlcmluZ1BvbAogCiAgICAgLy8gUmVzZXQgYW55IGFscmVhZHkgYnVmZmVyZWQg
ZGF0YQogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkRvTm90QnVmZmVyRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBudWxscHRyOworICAg
ICAgICBtX3Jlc291cmNlRGF0YS0+cmVzZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6
d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKQEAgLTMyOSwyOSArMzMwLDI5IEBAIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSgpCiAgICAg
ICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0
YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmVkQnVm
ZmVyKiBidWZmZXIsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291
cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIERhdGFQYXlsb2FkVHlwZSBk
YXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgaWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5
ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKCFtX3Jlc291cmNlRGF0YSB8fCBkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBh
eWxvYWRXaG9sZVJlc291cmNlKSB7Ci0gICAgICAgIGlmIChidWZmZXIpCi0gICAgICAgICAgICBt
X3Jlc291cmNlRGF0YSA9IGJ1ZmZlcjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9yZXNv
dXJjZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIAorICAgIGlmIChkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBheWxv
YWRXaG9sZVJlc291cmNlKQorICAgICAgICBtX3Jlc291cmNlRGF0YS0+cmVzZXQoKTsKKwogICAg
IGlmIChidWZmZXIpCiAgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoKmJ1ZmZlcik7CiAg
ICAgZWxzZQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9
CiAKK2NvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJj
ZURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS0+Z2V0KCkuZ2V0KCk7
Cit9CisKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVzb3VyY2VEYXRhKCkKIHsKLSAgICBp
ZiAobV9yZXNvdXJjZURhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhLT5jbGVhcigpOworICAg
IGlmICghbV9yZXNvdXJjZURhdGEtPmlzTnVsbCgpKQorICAgICAgICBtX3Jlc291cmNlRGF0YS0+
ZW1wdHkoKTsKIH0KIAogYm9vbCBSZXNvdXJjZUxvYWRlcjo6aXNTdWJyZXNvdXJjZUxvYWRlcigp
IGNvbnN0CkBAIC01NTEsMTQgKzU1MiwxNCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbAogICAg
IGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0
YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRh
dGFQYXlsb2FkVHlwZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAs
IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9
CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxv
YWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5
IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEgU2hhcmVkQnVmZmVyLgorICAgIC8vIFRoaXMgbWV0aG9k
IHNob3VsZCBvbmx5IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ci4KICAgICBBU1NFUlQoIWJ1ZmZlciB8fCAoIWRhdGEgJiYgIWxlbmd0aCkpOwogCiAgICAgLy8g
UHJvdGVjdCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFs
IHByb2Nlc3NpbmcgY2FuIGRvCkBAIC01NzEsNyArNTcyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgKICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3Jr
aW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAgLy8gQ291bGQg
YmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZpbGUuCiAgICAgaWYgKG1fb3B0aW9ucy5z
ZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3MgJiYg
bV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0
YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+
c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7Cisg
ICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVm
ZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0
aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpAQCAtNzM1LDcgKzczNiw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduCiAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3Ro
LCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKLXZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGRpZFJlY2Vp
dmVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRC
eXRlcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRmZDJi
ZjBiYmIzYjFiZDIxNTQ1ZGI1MmMyZTFjYTY0ZWU0MmI5MTcuLjU0YjFiODY2ZGY4OTZhODRiNGNh
Mjk3ZWU0NzZkNmQwYjY2MWZkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtNTUsNiArNTYsOCBAQCBjbGFzcyBGcmFtZTsK
IGNsYXNzIEZyYW1lTG9hZGVyOwogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlcjsKIGNsYXNzIE5l
dHdvcmtMb2FkTWV0cmljczsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBT
aGFyZWRCdWZmZXJCdWlsZGVyOwogCiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJ
RklFUihSZXNvdXJjZUxvYWRlcik7CiBjbGFzcyBSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4sIHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlTG9h
ZGVyPiwgcHJvdGVjdGVkIFJlc291cmNlSGFuZGxlQ2xpZW50IHsKQEAgLTY2LDcgKzY5LDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluaXQoUmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCi0gICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VB
bmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsK
KyAgICB2b2lkIGRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0TG9hZGluZygpCkBAIC05OCw3ICsxMDEsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsKICAgICBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7
IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBy
ZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAg
CiAgICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKQEAgLTEwNyw3
ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVk
IGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNl
bnQpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFu
ZGxlcik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1
bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIApAQCAtMTY2LDcgKzE2
OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgd2FzQ2FuY2VsbGVkKCkgY29uc3QgeyByZXR1
cm4gbV9jYW5jZWxsYXRpb25TdGF0dXMgPj0gQ2FuY2VsbGVkOyB9CiAKLSAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAgICAKICAgICB2b2lkIHNldFJlZmVycmVyUG9s
aWN5KFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KSB7IG1fb3B0aW9ucy5yZWZlcnJlclBv
bGljeSA9IHJlZmVycmVyUG9saWN5OyB9CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xp
Y3koKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3k7IH0KQEAgLTE5MSw3
ICsxOTQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNv
dXJjZUVycm9yJikgPSAwOwogCi0gICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCosIHVuc2lnbmVkLCBTaGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQg
YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciosIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdm9pZCBsb2FkRGF0YVVSTCgpOwogICAg
IHZvaWQgZmluaXNoTmV0d29ya0xvYWQoKTsKIApAQCAtMjAyLDcgKzIwNSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291
cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1
ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0
aCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFu
ZGxlKikgb3ZlcnJpZGU7CkBAIC0yMjcsNyArMjMwLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291
cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1
ZXN0OyAvLyBCZWZvcmUgcmVkaXJlY3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcmVz
b3VyY2VEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3Jlc291cmNl
RGF0YTsKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNl
ZmJkZjlkYTE3ODk5N2VkY2I5ZjM1NDRmNDg4NGI2MGE2ZWZlLi4zN2QwYmI4MjFhYmQ4NmE5YjU2
MDZlMTI3ZWZjOTQxMmE1MWJiMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxv
bgogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNv
ZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQor
dm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBh
eWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBp
ZiAoYXV0byBwcmV2aWV3TG9hZGVyID0gbV9wcmV2aWV3TG9hZGVyLmdldCgpKSB7CkBAIC01NDIs
NyArNTQyLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGUKICAgICBkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRh
dGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgQVNTRVJUKG1fcmVz
b3VyY2UpOwogCkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAg
ICAgICBpZiAoYXV0byogcmVzb3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAg
ICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVy
LT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAg
ICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApp
bmRleCAzNzIzYjZiOWFiOWZkZGFhYTU1NzRiZmIwZTZmMzhjZWQ3YWVmYjc1Li44MzJjOWYwZTcz
ZDM4NDY0YTc5NWY0MDM4NjBmNzljMzRlNzNiYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBs
b25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgRXhwZWN0ZWQ8
dm9pZCwgU3RyaW5nPiBjaGVja1Jlc3BvbnNlQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVk
aXJlY3Rpb25Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBw
cmV2aW91c1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZVJlcXVlc3Qm
IG5ld1JlcXVlc3QpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqLCBpbnQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKIAogICAgIHZv
aWQgbm90aWZ5RG9uZShMb2FkQ29tcGxldGlvblR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJzdGl0dXRlRGF0YS5oCmluZGV4IGY2NjI5MmUzMWNiZWI0MjY0MzBhODMyYWRlZjQyOTkxY2I1
NzQzNmUuLmE4YTQ5YjQ3ZjkyNzM0Mjc0YmE0Y2VhYmMxNzA3ZmVmYTdiNjY0MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgU3Vic3RpdHV0ZURh
dGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBjb250ZW50LCBjb25zdCBVUkwmIGZhaWxpbmdVUkws
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTZXNzaW9uSGlzdG9yeVZpc2liaWxp
dHkgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSkKKyAgICAgICAgU3Vic3RpdHV0ZURhdGEo
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY29udGVudCwgY29uc3QgVVJMJiBmYWls
aW5nVVJMLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgU2Vzc2lvbkhpc3RvcnlW
aXNpYmlsaXR5IHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkpCiAgICAgICAgICAgICA6IG1f
Y29udGVudChXVEZNb3ZlKGNvbnRlbnQpKQogICAgICAgICAgICAgLCBtX2ZhaWxpbmdVUkwoZmFp
bGluZ1VSTCkKICAgICAgICAgICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKQEAgLTU0LDE0ICs1
NCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGVudCAhPSBudWxscHRyOyB9CiAgICAgICAgIGJvb2wgc2hvdWxkUmV2
ZWFsVG9TZXNzaW9uSGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUmV2ZWFsVG9TZXNz
aW9uSGlzdG9yeSA9PSBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OlZpc2libGU7IH0KIAotICAg
ICAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRl
bnQuZ2V0KCk7IH0KKyAgICAgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogY29udGVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudC5nZXQoKTsgfQogICAgICAgICBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS5taW1lVHlwZSgpOyB9CiAg
ICAgICAgIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZXNw
b25zZS50ZXh0RW5jb2RpbmdOYW1lKCk7IH0KICAgICAgICAgY29uc3QgVVJMJiBmYWlsaW5nVVJM
KCkgY29uc3QgeyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9CiAgICAgICAgIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAgICAg
ICAKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7
CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7CiAgICAg
ICAgIFVSTCBtX2ZhaWxpbmdVUkw7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25z
ZTsKICAgICAgICAgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IG1fc2hvdWxkUmV2ZWFsVG9TZXNz
aW9uSGlzdG9yeSB7IFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVuIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXggNTk2NjRiNTg1NGY4NWIw
MmNkZjM0OTAyMGEwZWZmMTNlYjc4ODg3OS4uY2YyZGUwYzYyZDk1ZjMzMjViNDJiNDZlMjQwMzc3
NDQxMDc0MmEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVS
ZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2Uu
aApAQCAtMzcsMTIgKzM3LDE0IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29u
c3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICBTaGFyZWRCdWZmZXImIGRhdGEo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihtX2Rh
dGEpOyB9CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19yZWZlcmVuY2VfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihSZWYgeyAqbV9k
YXRhLmdldCgpIH0pOyB9CisgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7IH0KKyAgICB2b2lkIGNsZWFy
KCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3Vy
Y2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3Bv
bnNlLCBtX2RhdGEtPmNvcHkoKSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJj
ZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9u
c2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBTdWJzdGl0dXRlUmVzb3Vy
Y2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSkKKyAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJl
c3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiAg
ICAgICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQogICAgICAgICAsIG1fcmVzcG9uc2UoV1RGTW92
ZShyZXNwb25zZSkpCiAgICAgICAgICwgbV9kYXRhKFdURk1vdmUoZGF0YSkpCkBAIC01Miw3ICs1
NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgVVJMIG1fdXJsOwogICAgIFJlc291cmNl
UmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwCmluZGV4IDg5ZjNiMGYxZGMzOWQ0MGE1NjM4NzhhZTU1Zjc2YzY3MGE3
MTUwOTEuLjAzNmVmZDIwZTQ5NjMwMGNmOGM5ZTdlNzkwMzE3ZTAxZGU1YmFmMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAg
YXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RV
UkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0
UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUo
KSk7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1f
bWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBt
X21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fbWFu
aWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CiAgICAgaWYgKCFtYW5pZmVzdCkgewogICAg
ICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklG
RVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZh
aWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2Fj
aGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hF
IE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA2MDMyODE4ODgzNzVmNDRhNjI0YjNl
M2IzYWFmZTA2YTM2ODkyZWU2Li41MTk3OGY0MTIzODc0ZGM1NjYwZWZmNDcwNjU5NzA3ZDRlNWQ4
NWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1NSwxMCArMjU1LDggQEAgVVJMIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKIAogc3RhdGljIGlu
bGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25D
YWNoZVJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJs
eSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUg
dGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBi
ZSBtb2RpZmllZC4KICAgICBpZiAocmVzb3VyY2UucGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIHJlc291cmNlLmRhdGEoKS5jb3B5KCk7CisgICAgICAgIHJldHVybiByZXNvdXJjZS5k
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKIH0KIApAQCAtMjkwLDkgKzI4OCw3
IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25v
dXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZSogcmVzb3VyY2U7CiAgICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tS
ZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVz
b3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9hYmx5
IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAgLy8g
UmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2ls
bCBub3QgYmUgbW9kaWZpZWQuCi0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5j
b3B5KCk7CisgICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTczNmE3
MTg2NTY3NzI0ODYxMWUwOGY2NjNiMjlmLi5iOTYzNTZlNzg1NjEzODk1NmFlNGMwNTk4MzE3MGNk
ZjcyMzY3MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25D
YWNoZVJlc291cmNlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2Fk
ZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcgKzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRh
OwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmlu
ZGV4IGYxZjdlMTc1NjMwMTQ3MWYzMDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLjJiYjNmZTc1Yjk5
NzdlODMzMjJhZTI1ODBmNzIxMmVlNWJmMjE2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBA
IC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZT4gQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXRoKQorUmVmPEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25l
ZCB0eXBlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQoIXVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7
CiAgICAgaWYgKCFidWZmZXIpCkBAIC00MCw3ICs0MCw3IEBAIFJlZjxBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJs
LCBjCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVS
TCB7IHVybCB9LCBXVEZNb3ZlKHJlc291cmNlUmVzcG9uc2UpLCB0eXBlLCBidWZmZXIucmVsZWFz
ZU5vbk51bGwoKSwgcGF0aCkpOwogfQogCi1BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25z
ZSwgdW5zaWduZWQgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcm
IHBhdGgpCitBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQog
ICAgIDogU3Vic3RpdHV0ZVJlc291cmNlKFdURk1vdmUodXJsKSwgV1RGTW92ZShyZXNwb25zZSks
IFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fc3RvcmFnZUlEKDAp
CkBAIC01MSw3ICs1MSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25D
YWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0g
ICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1w
dHkoKSA/IGRhdGEoKS5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShtX3BhdGgpKTsKKyAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25z
ZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291
cmNlLmgKaW5kZXggODhjOTRkZTFhNzc0MTA0NjljOTMxYTQyYTQ3OWIxZTY3NzdhNzAyZS4uYzI4
OGU3MDM2YzY3NjJhZDQ4NzZiYTg4MTQ2OWE3NWQyMjM3ZTFiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uu
aApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZhbGxiYWNrID0gMSA8PCA0CiAg
ICAgfTsKIAotICAgIHN0YXRpYyBSZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUo
Y29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIHR5cGUsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcm
IHBhdGggPSBTdHJpbmcoKSk7CisgICAgc3RhdGljIFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQg
dHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJpbmcoKSk7CiAKICAgICB1bnNpZ25lZCB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgdm9pZCBhZGRUeXBlKHVuc2lnbmVk
IHR5cGUpOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAKIHByaXZhdGU6
Ci0gICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYs
IHVuc2lnbmVkIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgcGF0aCk7
CisgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYs
IHVuc2lnbmVkIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJp
bmcmIHBhdGgpOwogCiAgICAgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJikgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1MDg0N2E2ZTg5NTE3
ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1
MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwMSw3
ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNl
LT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNl
UmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUzYzQ5OTAyNDBhNTIwYmQzMGU2MzY1OTUuLjhj
ZjA1Y2NlMTg4MDEyOGRlNTliZTcwYTk5ODM2ZjVhNzQ1YjZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0
b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgYXV0
byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5U
TyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/LCA/KSJfcyk7CiAgICAg
aWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCiAKICAgICBT
dHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgpLmlzRW1wdHkoKSkKQEAg
LTgxNSw3ICs4MTQsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgICAgICBkYXRhU3Rh
dGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAocmVz
b3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxv
YigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRC
bG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSk7CiAgICAgfQog
ICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1hbmQoKSkgewpAQCAtODcz
LDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAKICAgICBpZiAoIWV4
ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQudmFsdWUoKSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBzdWNjZXNzZnVsbHkgd3JpdGUgdGhlIHJlc291
cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAgICAvLyByZWxlYXNlIHRoZSByZXNvdXJjZSdz
IGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxseSBsYXJnZSBhbW91bnQKICAgICAvLyBvZiBt
ZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJlc291cmNlLT5k
YXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7CiAKICAgICByZXNvdXJj
ZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTI3Myw3
ICsxMjcyLDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c2hvdWxkU3RvcmVSZXNv
dXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNoZVJlc28KICAgICByZXR1cm4gc3RhcnRzV2l0
aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAiYXVkaW8vIikgfHwgc3RhcnRzV2l0aExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAidmlkZW8vIik7CiB9CiAgICAgCi1ib29sIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShT
aGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbikKK2Jvb2wgQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgZmlsZUV4dGVuc2lvbikKIHsKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5oCmluZGV4IDlhOTUzMDA4NzY2YTg4ODU1NjFiMzQ4ODg5YjhjZWRhMmIyZWIzMzgu
LjQxMDJhMTgwOGI0NTU1N2I2NDVlMzZlN2U2ODFmYzRjNmQyMDdjZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNz
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwog
Y2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0b3JhZ2VJREpvdXJu
YWw7CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U+IHsKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgZW5zdXJlT3JpZ2luUmVjb3JkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKik7CiAgICAg
c3RhdGljIGJvb2wgc2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlKik7CiAgICAgdm9pZCBkZWxldGVUYWJsZXMoKTsKLSAgICBib29sIHdyaXRlRGF0
YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24p
OworICAgIGJvb2wgd3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pOwogCiAgICAgdm9pZCBsb2FkTWFuaWZlc3RI
b3N0SGFzaGVzKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9B
cmNoaXZlRmFjdG9yeS5jcHAKaW5kZXggNmRlODBjMTBhYzdkMjVjZjM0NjlmNmRlZjBmYWY3MjQx
ZjU5NjQyOC4uNGVmOWNkNjZiZDA4OGI3NGMwNDZjMDY5MGQxZTlkM2U1ZTMzNjBmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcApAQCAt
NDYsMTIgKzQ2LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBSZWZQdHI8
QXJjaGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24oY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVy
Jik7Cit0eXBlZGVmIFJlZlB0cjxBcmNoaXZlPiBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbihjb25z
dCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5n
LCBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbiosIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gQXJj
aGl2ZU1JTUVUeXBlc01hcDsKIAogLy8gVGhlIGNyZWF0ZSBmdW5jdGlvbnMgaW4gdGhlIGFyY2hp
dmUgY2xhc3NlcyByZXR1cm4gUmVmUHRyIHRvIGNvbmNyZXRlIHN1YmNsYXNzZXMKIC8vIG9mIEFy
Y2hpdmUuIFRoaXMgYWRhcHRvciBtYWtlcyB0aGUgZnVuY3Rpb25zIGhhdmUgYSB1bmlmb3JtIHJl
dHVybiB0eXBlLgotdGVtcGxhdGU8dHlwZW5hbWUgQXJjaGl2ZUNsYXNzPiBzdGF0aWMgUmVmUHRy
PEFyY2hpdmU+IGFyY2hpdmVGYWN0b3J5Q3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK3RlbXBsYXRlPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0
cjxBcmNoaXZlPiBhcmNoaXZlRmFjdG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHJldHVybiBBcmNoaXZlQ2xhc3M6OmNyZWF0
ZSh1cmwsIGJ1ZmZlcik7CiB9CkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgQXJjaGl2ZUZhY3Rvcnk6
OmlzQXJjaGl2ZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuICFt
aW1lVHlwZS5pc0VtcHR5KCkgJiYgYXJjaGl2ZU1JTUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBl
KTsKIH0KIAotUmVmUHRyPEFyY2hpdmU+IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgVVJM
JiB1cmwsIFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK1JlZlB0
cjxBcmNoaXZlPiBBcmNoaXZlRmFjdG9yeTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaAppbmRleCAyMWQyMzY1Y2Y4ZDlkOTAxZWZlN2Fh
ZDU1MmJmM2RhNDA2OWZlNDBkLi41NTY0NTE1YzllMGQ5ZDAzM2I3OTBjNzQ3Mjg1YTI1ODUzYWJl
MDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFj
dG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5
LmgKQEAgLTM0LDEyICszNCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEFyY2hp
dmVGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc0FyY2hpdmVNSU1FVHlwZShj
b25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBV
UkwmLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIHN0
YXRpYyBSZWZQdHI8QXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyS25vd25BcmNoaXZlTUlNRVR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+Jik7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvQXJjaGl2ZVJlc291cmNlLmNwcAppbmRleCBmYzIwZGEzZGEwMzJjYmVmNzRmMmU5Yzg0Mjhh
Y2I0ZWUzN2JlZjIzLi4wNzM4Mzk0YTgyODcxNGFhMGI5MGVlNzUwNzlkNDg2ZjViMGU4Njk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgQXJj
aGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKK2lubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYg
ZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IFN1YnN0
aXR1dGVSZXNvdXJjZShVUkwgeyB1cmwgfSwgUmVzb3VyY2VSZXNwb25zZSB7IHJlc3BvbnNlIH0s
IFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV90ZXh0
RW5jb2RpbmcodGV4dEVuY29kaW5nKQpAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgQXJjaGl2ZVJl
c291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBV
UkwmIHVybAogewogfQogCi1SZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6
OmNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorUmVmUHRy
PEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFkYXRhKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU0LDcgKzU0LDcgQEAgUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCBjb24KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcmNoaXZlUmVzb3VyY2UoZGF0YS5y
ZWxlYXNlTm9uTnVsbCgpLCB1cmwsIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwg
cmVzcG9uc2UpKTsKIH0KIAotUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNl
OjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBB
cmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7
CiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGRhdGEpLCB1cmwsIHJlc3BvbnNlLm1pbWVUeXBl
KCksIHJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSwgU3RyaW5nKCksIHJlc3BvbnNlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKaW5k
ZXggMjA5ZTk3MTdhZWIwOTM2MGRiMzkyN2U2ZWZhMWU1YmYxYzJjOTdjYS4uMDU0OGVmNzIxZWZk
MjdjMDBjZTkzZDEyMjcwZWNlYzQ2YzAyYWY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKQEAgLTM0LDggKzM0LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBBcmNoaXZlUmVzb3VyY2UgOiBwdWJsaWMgU3Vic3RpdHV0ZVJl
c291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3Jl
YXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gY3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsCisgICAgc3RhdGlj
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsCiAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwKICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgPSBSZXNvdXJjZVJlc3Bv
bnNlKCkpOwogCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZElnbm9y
ZVdoZW5VbmFyY2hpdmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkSWdub3JlV2hlblVuYXJj
aGl2aW5nOyB9CiAKIHByaXZhdGU6Ci0gICAgQXJjaGl2ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
dGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOworICAgIEFyY2hpdmVSZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CiAKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBTdHJpbmcgbV90ZXh0RW5jb2Rpbmc7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFy
Y2hpdmUuY3BwCmluZGV4IGRlN2RhZGRkYWMyMjEyZjZkNWUwY2MwOTFkNGU0MTY3N2EzZjAxNWQu
LjcxMTUwY2JkZDg5NjllNmFmMDI4Njg0YjZiZjZjYmMwYTUwYjJmYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBA
IC05MCw3ICs5MCw3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gUmVzb3VyY2Ug
ZGF0YSBjYW4gYmUgZW1wdHksIGJ1dCBtdXN0IGJlIHJlcHJlc2VudGVkIGJ5IGFuIGVtcHR5IENG
RGF0YVJlZgogICAgIGF1dG8mIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpOwogCi0gICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3Vy
Y2VEYXRhS2V5LCBkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKKyAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFL
ZXksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOwogCiAgICAg
Ly8gUmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBudWxsCiAgICAgaWYgKGF1dG8gY2ZVUkwgPSByZXNv
dXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKQEAgLTExNyw5ICsxMTcsOSBA
QCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9w
ZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIERvbid0IGluY2x1ZGUgdGhlIHJlc291
cmNlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlmICghaXNNYWluUmVzb3Vy
Y2UpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2VSZXNwb25zZURhdGEgPSBjcmVhdGVQcm9w
ZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihyZXNvdXJjZS0+cmVzcG9uc2UoKSkpCi0gICAgICAgICAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hp
dmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7ICAgIAor
ICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdh
Y3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0
KCkpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBwcm9wZXJ0eUxpc3Q7CiB9CiAKQEAgLTIx
NSwxMyArMjE1LDEzIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZVJlc291cmNlKENGRGljdGlvbmFyeVJlZiBkaWN0aW9uCiAgICAgICAgICAgICBMT0co
QXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgZGF0YSBpcyBu
b3Qgb2YgdHlwZSBDRkRhdGEsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAg
YXV0byByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihD
RkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VS
ZXNwb25zZVZlcnNpb25LZXkpKTsKICAgICAgICAgaWYgKHJlc291cmNlUmVzcG9uc2VWZXJzaW9u
ICYmIENGR2V0VHlwZUlEKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKSAhPSBDRlN0cmluZ0dldFR5
cGVJRCgpKSB7CiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0g
UmVzb3VyY2UgcmVzcG9uc2UgdmVyc2lvbiBpcyBub3Qgb2YgdHlwZSBDRlN0cmluZywgY2Fubm90
IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICByZXNwb25zZSA9IGNyZWF0ZVJlc291cmNl
UmVzcG9uc2VGcm9tUHJvcGVydHlMaXN0RGF0YShyZXNvdXJjZVJlc3BvbnNlRGF0YSwgcmVzb3Vy
Y2VSZXNwb25zZVZlcnNpb24pOwogICAgIH0KIApAQCAtMjQ4LDIzICsyNDgsMjMgQEAgUmVmPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShSZWY8QXJjaGl2ZVJlc291
cmNlPiYmIG1haW5SZXNvdXIKICAgICByZXR1cm4gYXJjaGl2ZTsKIH0KIAotUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEp
CitSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShVUkwoKSwgZGF0
YSk7CiB9CiAKLVJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhKQorUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhKQogewogICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBD
cmVhdGluZyBmcm9tIHJhdyBkYXRhIik7Ci0gICAgCisKICAgICBSZWY8TGVnYWN5V2ViQXJjaGl2
ZT4gYXJjaGl2ZSA9IGNyZWF0ZSgpOwotICAgICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBjZkRhdGEgPSBkYXRhLmNyZWF0ZUNGRGF0YSgpOworCisgICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gY2ZEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKICAgICBp
ZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIAorCiAgICAgQ0ZF
cnJvclJlZiBlcnJvciA9IG51bGxwdHI7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiBwbGlzdCA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlBy
b3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKDAsIGNmRGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0
SW1tdXRhYmxlLCAwLCAmZXJyb3IpKSk7CiAgICAgaWYgKCFwbGlzdCkgewogI2lmbmRlZiBOREVC
VUcKQEAgLTI3NiwxMiArMjc2LDEyIEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhCiAgICAgICAg
ICAgICBDRlJlbGVhc2UoZXJyb3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0g
ICAgCisKICAgICBpZiAoQ0ZHZXRUeXBlSUQocGxpc3QuZ2V0KCkpICE9IENGRGljdGlvbmFyeUdl
dFR5cGVJRCgpKSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBB
cmNoaXZlIHByb3BlcnR5IGxpc3QgaXMgbm90IHRoZSBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFi
b3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9Ci0gICAgCisKICAgICBpZiAoIWFyY2hpdmUtPmV4dHJhY3QocGxpc3QuZ2V0KCkpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjk1LDcgKzI5NSw3IEBAIGJvb2wgTGVnYWN5V2Vi
QXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgTE9H
KEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE51bGwgcm9vdCBDRkRpY3Rpb25hcnksIGFi
b3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQotICAgIAorCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIG1haW5SZXNvdXJjZURpY3QgPSBzdGF0aWNf
Y2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExl
Z2FjeVdlYkFyY2hpdmVNYWluUmVzb3VyY2VLZXkpKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURp
Y3QpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5vIG1haW4g
cmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CkBAIC0z
MzMsNyArMzMzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFy
eVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdl
YkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9y
dGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKGF1dG8gc3Vi
cmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZShzdWJyZXNvdXJjZURpY3QpKQogICAgICAgICAgICAg
ICAgIGFkZFN1YnJlc291cmNlKHN1YnJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAg
ICB9CkBAIC0zNTMsNyArMzUzLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENG
RGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywg
IkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJmcmFtZSBhcnJheSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0
aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAg
YXV0byBzdWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChzdWJmcmFt
ZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJhbWVEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJm
cmFtZUFyY2hpdmUoV1RGTW92ZShzdWJmcmFtZUFyY2hpdmUpKTsKQEAgLTM2MSw3ICszNjEsNyBA
QCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25h
cnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIElu
dmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBza2lwcGVkIik7CiAgICAgICAgIH0KICAgICB9Ci0gICAg
CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTA2LDcgKzUwNiw3IEBAIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJr
dXBTdHJpbmcsIEZyCiB7CiAgICAgYXV0byYgcmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwogICAgIFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNl
LnVybCgpOwotICAgIAorCiAgICAgLy8gaXQncyBwb3NzaWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ug
d2l0aG91dCBhIFVSTCBoZXJlCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAg
aWYgKHJlc3BvbnNlVVJMLmlzTnVsbCgpKQpAQCAtNjA1LDcgKzYwNSw3IEBAIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1l
KiBmcmFtZSkKIAogICAgIGlmICghZG9jdW1lbnQtPmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0
dXJuIGFyY2hpdmU7Ci0gICAgICAgIAorCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1l
bnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIg
ZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93biku
IAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIg
bWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdo
dD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJl
c3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaAppbmRleCBkMDll
YzlmNzVhYmExMzZhODYzMzllYjRkODZhYmQ4Mjc3YzRmZjA0Li41YTA3YjEwYjRiZTZmODYyMDEx
YTc4MmE3ZGVkMjM2NzU5MjQzNjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCkBAIC00MSw4ICs0MSw4IEBAIHN0cnVjdCBT
aW1wbGVSYW5nZTsKIGNsYXNzIExlZ2FjeVdlYkFyY2hpdmUgZmluYWwgOiBwdWJsaWMgQXJjaGl2
ZSB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lXZWJBcmNo
aXZlPiBjcmVhdGUoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdl
YkFyY2hpdmU+IGNyZWF0ZShTaGFyZWRCdWZmZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZm
ZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+
IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TGVnYWN5V2Vi
QXJjaGl2ZT4gY3JlYXRlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYgbWFpblJlc291cmNlLCBWZWN0
b3I8UmVmPEFyY2hpdmVSZXNvdXJjZT4+JiYgc3VicmVzb3VyY2VzLCBWZWN0b3I8UmVmPExlZ2Fj
eVdlYkFyY2hpdmU+PiYmIHN1YmZyYW1lQXJjaGl2ZXMpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKE5vZGUmLCBGdW5jdGlvbjxib29s
KEZyYW1lJik+JiYgZnJhbWVGaWx0ZXIgPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKEZyYW1lJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAppbmRleCBh
Y2ZiYmI3MDIwMjJkMDZhZmU2MjAwNDA0ODdmZDM0ZDkyMWQ3MjdjLi5iZmYxMGIzMzBlYWNkMjZm
Zjg3NmM3NGQ0NjFmNDM3NmIxYTBkYzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBS
ZWY8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTUhUTUxBcmNoaXZlKTsKIH0KIAotUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxB
cmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0
cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIEZvciBzZWN1cml0eSByZWFzb25z
IHdlIG9ubHkgbG9hZCBNSFRNTCBwYWdlcyBmcm9tIGxvY2FsIFVSTHMuCiAgICAgaWYgKCFMZWdh
Y3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHVybC5wcm90b2Nv
bCgpLnRvU3RyaW5nKCkpKQpAQCAtMTMwLDcgKzEzMCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+
IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGRhdGEp
CiAgICAgcmV0dXJuIG1haW5BcmNoaXZlOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFy
Y2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCitSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogewog
ICAgIFZlY3RvcjxQYWdlU2VyaWFsaXplcjo6UmVzb3VyY2U+IHJlc291cmNlczsKICAgICBQYWdl
U2VyaWFsaXplciBwYWdlU2VyaWFsaXplcihyZXNvdXJjZXMpOwpAQCAtMTYyLDggKzE2Miw4IEBA
IFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSog
cGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGluc3RlYWQgb2YgYXNjaWkoKSBhcyBh
c2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0aWxsIG9ubHkgaGF2ZSBwdXQgQVND
SUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0cmluZ0J1aWxkZXIudG9TdHJpbmco
KS5pc0FsbEFTQ0lJKCkpOwogICAgIENTdHJpbmcgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVy
LnRvU3RyaW5nKCkudXRmOCgpOwotICAgIGF1dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lp
U3RyaW5nLmxlbmd0aCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1odG1sRGF0YTsKKyAg
ICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3Ro
KCkpOwogCiAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IHJlc291cmNlcykgewogICAgICAgICBz
dHJpbmdCdWlsZGVyLmNsZWFyKCk7CkBAIC0xNzgsMTUgKzE3OCwxNSBAQCBSZWY8U2hhcmVkQnVm
ZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcclxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogIiwg
Y29udGVudEVuY29kaW5nLCAiXHJcbkNvbnRlbnQtTG9jYXRpb246ICIsIHJlc291cmNlLnVybC5z
dHJpbmcoKSwgIlxyXG5cclxuIik7CiAKICAgICAgICAgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWls
ZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0
cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgbWh0bWxEYXRhLmFw
cGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgICAg
ICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNvZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJl
YW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxsLgogICAgICAgICBhdXRvKiBkYXRhID0g
cmVzb3VyY2UuZGF0YS0+ZGF0YSgpOwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IHJlc291
cmNlLmRhdGEtPnNpemUoKTsKICAgICAgICAgaWYgKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBx
dW90ZWRQcmludGFibGUpKSB7CiAgICAgICAgICAgICBhdXRvIGVuY29kZWREYXRhID0gcXVvdGVk
UHJpbnRhYmxlRW5jb2RlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgICAgICAgICAgbWh0bWxEYXRh
LT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOwotICAgICAg
ICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgIG1odG1sRGF0
YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOworICAgICAg
ICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgQVNTRVJUKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBiYXNlNjQpKTsKICAgICAg
ICAgICAgIC8vIFdlIGFyZSBub3Qgc3BlY2lmeWluZyBpbnNlcnRMRnMgPSB0cnVlIGJlbG93IGFz
IGl0IHdvdWxkIGN1dCB0aGUgbGluZXMgd2l0aCBMRnMgYW5kIE1IVE1MIHJlcXVpcmVzIENSTEZz
LgpAQCAtMTk2LDE3ICsxOTYsMTcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpn
ZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAgICAgICAgc2l6ZV90IGVuY29kZWRE
YXRhTGVuZ3RoID0gZW5jb2RlZERhdGEuc2l6ZSgpOwogICAgICAgICAgICAgZG8gewogICAgICAg
ICAgICAgICAgIHNpemVfdCBsaW5lTGVuZ3RoID0gc3RkOjptaW4oZW5jb2RlZERhdGFMZW5ndGgg
LSBpbmRleCwgbWF4aW11bUxpbmVMZW5ndGgpOwotICAgICAgICAgICAgICAgIG1odG1sRGF0YS0+
YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVuZ3RoKTsKLSAgICAgICAg
ICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIG1o
dG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOwor
ICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgICAg
ICAgICBpbmRleCArPSBtYXhpbXVtTGluZUxlbmd0aDsKICAgICAgICAgICAgIH0gd2hpbGUgKGlu
ZGV4IDwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgYXNjaWlT
dHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAiLS1cclxuIikudXRmOCgpOwotICAg
IG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3Ro
KCkpOworICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmlu
Zy5sZW5ndGgoKSk7CiAKLSAgICByZXR1cm4gbWh0bWxEYXRhOworICAgIHJldHVybiBtaHRtbERh
dGEuZ2V0KCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MQXJjaGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxBcmNoaXZlLmgKaW5kZXggM2QyZGI3Yzk2MDAyZWJlNjg0YjJiZWY4ZjFlYTll
MmU5Nzk0YTU4OS4uMmRmZTg3ZTgyZTdhNGRjZTBmMzQxYzM2MTk0M2M5OTAyMDVjOGRiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZl
LmgKQEAgLTM4LDE0ICszOCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1IVE1M
UGFyc2VyOwogY2xhc3MgUGFnZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1IVE1MQXJjaGl2ZSBmaW5hbCA6IHB1YmxpYyBBcmNo
aXZlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKCk7Ci0g
ICAgc3RhdGljIFJlZlB0cjxNSFRNTEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRC
dWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVS
TCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7CiAKICAgICB2aXJ0dWFsIH5N
SFRNTEFyY2hpdmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4IGYxYjkwMWRkMDIwM2RjYWM5NGRmNmQwZWFlNGNi
MmQwYmRiODAxNWUuLjVlZTkxODY4NGEwNjg5NjgzZjcxYzI2N2YyZDkwMWEzN2E2ZmViNTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNl
ci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIGJvb2wgc2tpcExpbmVzVW50aWxCb3VuZGFy
eUZvdW5kKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyJiBsaW5lUmVhZGVyLCBjb24KICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLU1IVE1MUGFyc2VyOjpNSFRNTFBhcnNlcihTaGFyZWRCdWZmZXIqIGRh
dGEpCitNSFRNTFBhcnNlcjo6TUhUTUxQYXJzZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSkKICAgICA6IG1fbGluZVJlYWRlcihkYXRhLCAiXHJcbiIpCiB7CiB9CkBAIC0xNDAsNyArMTQw
LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQo
Y29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKIHsKICAgICBBU1NFUlQoZW5kT2ZQYXJ0Qm91
bmRhcnkuaXNFbXB0eSgpID09IGVuZE9mRG9jdW1lbnRCb3VuZGFyeS5pc0VtcHR5KCkpOwogCi0g
ICAgYXV0byBjb250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNvbnRlbnQ7CiAgICAgY29uc3QgYm9vbCBjaGVja0JvdW5kYXJ5ID0gIWVuZE9m
UGFydEJvdW5kYXJ5LmlzRW1wdHkoKTsKICAgICBib29sIGVuZE9mUGFydFJlYWNoZWQgPSBmYWxz
ZTsKICAgICBpZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVI
ZWFkZXI6OkJpbmFyeSkgewpAQCAtMTU0LDcgKzE1NCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFk
ZXIsCiAgICAgICAgICAgICBMT0dfRVJST1IoIkJpbmFyeSBjb250ZW50cyByZXF1aXJlcyBlbmQg
b2YgcGFydCIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAg
ICAgY29udGVudC0+YXBwZW5kKFdURk1vdmUocGFydCkpOworICAgICAgICBjb250ZW50LmFwcGVu
ZChXVEZNb3ZlKHBhcnQpKTsKICAgICAgICAgbV9saW5lUmVhZGVyLnNldFNlcGFyYXRvcigiXHJc
biIpOwogICAgICAgICBWZWN0b3I8dWludDhfdD4gbmV4dENoYXJzOwogICAgICAgICBpZiAobV9s
aW5lUmVhZGVyLnBlZWsobmV4dENoYXJzLCAyKSAhPSAyKSB7CkBAIC0xODAsMTAgKzE4MCwxMCBA
QCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25z
dCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIHVzZSBsaW5lLnV0ZjgoKSBhbmQg
bm90IGxpbmUuYXNjaWkoKSBhcyBhc2NpaSB0dXJucyBzcGVjaWFsIGNoYXJhY3RlcnMgKHN1Y2gg
YXMgdGFiLCBsaW5lLWZlZWQuLi4pIGludG8gJz8nLgotICAgICAgICAgICAgY29udGVudC0+YXBw
ZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7CisgICAgICAgICAgICBjb250
ZW50LmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUubGVuZ3RoKCkpOwogICAgICAgICAg
ICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVy
OjpRdW90ZWRQcmludGFibGUpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgbGluZSByZWFkZXIg
cmVtb3ZlcyB0aGUgXHJcbiwgYnV0IHdlIG5lZWQgdGhlbSBmb3IgdGhlIGNvbnRlbnQgaW4gdGhp
cyBjYXNlIGFzIHRoZSBRdW90ZWRQcmludGFibGUgZGVjb2RlciBleHBlY3RzIENSLUxGIHRlcm1p
bmF0ZWQgbGluZXMuCi0gICAgICAgICAgICAgICAgY29udGVudC0+YXBwZW5kKCJcclxuIiwgMik7
CisgICAgICAgICAgICAgICAgY29udGVudC5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KQEAgLTE5Myw5ICsxOTMsMTAgQEAgUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWlt
ZUhlYWRlciwKICAgICB9CiAKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKKyAgICBhdXRvIGNv
bnRpZ3VvdXNDb250ZW50ID0gY29udGVudC50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CiAgICAg
c3dpdGNoIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkpIHsKICAgICBjYXNl
IE1JTUVIZWFkZXI6OkJhc2U2NDogewotICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0
RGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBk
ZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250
aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAg
ICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0
LiIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMDQsMTEgKzIwNSwxMSBAQCBS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBN
SU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBN
SU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGU6Ci0gICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFi
bGVEZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRh
ID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRp
Z3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1JTUVIZWFk
ZXI6OlNldmVuQml0OgogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmluYXJ5OgotICAgICAgICBkYXRh
LmFwcGVuZChjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEu
YXBwZW5kKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXpl
KCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBMT0dfRVJST1IoIklu
dmFsaWQgZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaAppbmRleCAxZTliZDRkNzc2N2VlMzkx
YTAwMjJmNzE3NDhmMDBiODVjODFiMjVmLi4wZDYwNDM0M2YzZDdhZDE3OGNjMjIwMDNjOTc5YzIy
ZTUwYTNiOTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1s
L01IVE1MUGFyc2VyLmgKQEAgLTQyLDExICs0MiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBBcmNoaXZlUmVzb3VyY2U7CiBjbGFzcyBNSFRNTEFyY2hpdmU7CiBjbGFzcyBNSU1FSGVh
ZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgTUhUTUxQYXJzZXIgewogcHVibGljOgotICAgIGV4cGxpY2l0IE1IVE1MUGFyc2Vy
KFNoYXJlZEJ1ZmZlciopOworICAgIGV4cGxpY2l0IE1IVE1MUGFyc2VyKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqKTsKIAogICAgIFJlZlB0cjxNSFRNTEFyY2hpdmU+IHBhcnNlQXJjaGl2ZSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGlj
YXRpb25NYW5pZmVzdC5jcHAKaW5kZXggNjUyNTFlYjY4MjA3ZmM0OWE5NWNjMWMzZWExZDRhOWVi
ZmQ5MjcwNC4uZTFhODc1MTZiZDhkNWI4ZjI0YWY2YTViOTkwZTIxODUzNDdlNzU5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0LmNwcApAQCAtNDAsMTIgKzQwLDE2IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
CiB7CiB9CiAKLXZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3Zv
aWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+
c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRh
KSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNl
dEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7
CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3Mp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3QuaAppbmRleCAwN2YyYTA3OWM1NjRlZWZmYjY5N2MzN2M3ODU2NWUx
ZWE4ZDlhZTVlLi4zNzk4YTliNGQ5MDEzY2ZkZWE2ZjU2ZmJkZjAwMTVhZjg5NDc1NzAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8
c3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q+IHByb2Nlc3MoY29uc3QgVVJMJiBtYW5pZmVzdFVS
TCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgRG9jdW1lbnQqID0gbnVsbHB0cik7CiAKIHByaXZh
dGU6Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQogICAgIHZvaWQgc2V0RW5j
b2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29u
c3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNTlmYTdjNjJmYzYxZTYzNzQyZjc0Y2M2YTBiY2YwMDBi
YTliMTc2Zi4uMzhhMmUxN2YwZDA2YzhhYzk4ZGUyNGIxZTUyYjhlNjBlOTI0MTIwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cApAQCAtODEsNyArODEsNyBAQCBjb25zdCBTdHJpbmcgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2hl
ZXRUZXh0KE1JTUVUeXBlQ2hlY2tIaW50IG1pbWVUeXBlQ2hlY2tIaW50LAogICAgICAgICByZXR1
cm4gbV9kZWNvZGVkU2hlZXRUZXh0OwogCiAgICAgLy8gRG9uJ3QgY2FjaGUgdGhlIGRlY29kZWQg
dGV4dCwgcmVnZW5lcmF0aW5nIGlzIGNoZWFwIGFuZCBpdCBjYW4gdXNlIHF1aXRlIGEgYml0IG9m
IG1lbW9yeQotICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0
YSgpLCBtX2RhdGEtPnNpemUoKSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKIH0K
IAogdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQpAQCAtOTcsMTMgKzk3LDE3IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5
bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkK
ICAgICAgICAgc2F2ZVBhcnNlZFN0eWxlU2hlZXQoKnNoZWV0Lm1fcGFyc2VkU3R5bGVTaGVldENh
Y2hlKTsKIH0KIAotdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBD
YWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBt
X2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAw
KTsKLSAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBr
ZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQotICAgIGlmIChk
YXRhKQotICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAg
ICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6
ZShkYXRhLT5zaXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQg
dGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tO
b3RpZnkoKQorICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0K
ICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKICAgICAv
LyBDbGVhciB0aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJlIG5lZWRlZCBp
bW1lZGlhdGVseSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCmluZGV4IDVkNGRk
M2RjN2UzNTNlZTNjYjJmYjkzZjI3OGQyNTc5YjhkOWE3YTEuLmU2NTVjNjllM2VkYjYwOTUwMjM5
Y2NlNDU0NWYwOTZiNTI2NTZkZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29k
aW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJl
c291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQot
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQg
ZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJvZHlEYXRhRnJvbShj
b25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuY3BwCmluZGV4IDhjMmJjMmEzNDFjODIzNTFkN2Y2NjI1YmNlMjcxZDA3NzYz
M2FlOTQuLmQyYmMyODIxNDc5YzU5YTIzMjNlNGY2NWNkOTRiNjNiNDIzNzM2NDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY0LDEwICs2NCwxNSBA
QCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xp
ZW50KQogICAgICAgICBzdGF0aWNfY2FzdDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50KS5mb250
TG9hZGVkKCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBD
YWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBk
YXRhOwotICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDog
MCk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDAp
OworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNz
KTsKIH0KQEAgLTEwNSw3ICsxMTAsNyBAQCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZv
bnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKIAogc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZl
ciYgYnl0ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcp
CiB7Ci0gICAgUmVmUHRyIGJ1ZmZlciB7ICZieXRlcyB9OworICAgIFJlZlB0ciBidWZmZXIgPSB7
ICZieXRlcyB9OwogICAgIHdyYXBwaW5nID0gIWNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3Nhcnko
YnVmZmVyKTsKICAgICByZXR1cm4gYnVmZmVyID8gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSgqYnVmZmVyLCBpdGVtSW5Db2xsZWN0aW9uKSA6IG51bGxwdHI7CiB9CkBAIC0xMzUsNyArMTQw
LDcgQEAgdm9pZCBDYWNoZWRGb250OjpjaGVja05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKQogewogICAgIGlmIChpc0xvYWRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAg
ICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkRm9udENsaWVudD4gd2Fsa2VyKG1f
Y2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hlZEZvbnRDbGllbnQqIGNsaWVudCA9IHdhbGtlci5u
ZXh0KCkpCiAgICAgICAgIGNsaWVudC0+Zm9udExvYWRlZCgqdGhpcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAppbmRleCBjZWJkYzU1N2YxM2ZjNGFmZDgyNzUyOTc3
NGFmZDhlYzRiZWY0MjEwLi4xMzQ2NmNjOTlkMGQxOWNiZjNkOGVmM2RmYmQ5NmYzNGQwZjg1NDEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKQEAgLTc0LDcgKzc0
LDcgQEAgcHJpdmF0ZToKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIHNldEJvZHlE
YXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KIAogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Jikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUz
ZGUwMTljMTE0OWJkYTY5NGUwZTZmNmI1NDIuLjk0NjI3OTUyMGQwZGE0NDYyMmM2YWNkMzY2NjIy
ODgxMDVlODE5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcApAQCAtNDY4LDkgKzQ2OCw5IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhcklt
YWdlKCkKICAgICBtX3VwZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9pZCBDYWNoZWRJ
bWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNo
ZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VD
b250aWd1b3VzKCk7CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwogICAgIGNy
ZWF0ZUltYWdlKCk7CiAKQEAgLTUyMywxMiArNTIzLDE0IEBAIGJvb2wgQ2FjaGVkSW1hZ2U6OnNo
b3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gKE1vbm90b25pY1Rp
bWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGltZSkuc2Vjb25kcygpIDwgdXBkYXRl
SW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tpbnRlcnZhbF07CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBk
YXRhKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERh
dGFJZk5lZWRlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewot
ICAgIGlmICghZGF0YSB8fCAhaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKLSAgICAgICAgcmV0dXJu
IGRhdGE7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAo
IWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCisgICAgICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGln
dW91cygpOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShXRUJLSVRfSU1BR0VfREVDT0RFUlMp
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZl
cnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CisgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0
U2NyaXB0RGF0YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5n
ZXQoKSk7CiAjZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4g
Y2FuY2VsZWQgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNj
cmlwdCB0byBQREYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01NTMsNyArNTU1LDcg
QEAgRW5jb2RlZERhdGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0YShib29sIGFs
bERhdGFSZWNlaXZlZCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENhY2hlZEltYWdl
Ojp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBk
YXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNT
RVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJE
YXRhKTsKICAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChkYXRhKTsKQEAgLTU2Nyw3ICs1NjksNyBA
QCB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgp
OwogfQogCi12b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRJbWFnZTo6
ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgbV9kYXRhID0gY29udmVydGVkRGF0
YUlmTmVlZGVkKGRhdGEpOwogICAgIGlmIChtX2RhdGEpIHsKQEAgLTU5Myw3ICs1OTUsNyBAQCB2
b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZQogdm9pZCBDYWNoZWRJbWFnZTo6ZGlkUmVwbGFjZVNoYXJl
ZEJ1ZmZlckNvbnRlbnRzKCkKIHsKICAgICBpZiAobV9pbWFnZSkgewotICAgICAgICAvLyBMZXQg
dGhlIEltYWdlIGtub3cgdGhhdCB0aGUgU2hhcmVkQnVmZmVyIGhhcyBiZWVuIHJlamlnZ2VkLCBz
byBpdCBjYW4gbGV0IGdvIG9mIGFueSByZWZlcmVuY2VzIHRvIHRoZSBoZWFwLWFsbG9jYXRlZCBy
ZXNvdXJjZSBidWZmZXIuCisgICAgICAgIC8vIExldCB0aGUgSW1hZ2Uga25vdyB0aGF0IHRoZSBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyIGhhcyBiZWVuIHJlamlnZ2VkLCBzbyBpdCBjYW4gbGV0IGdv
IG9mIGFueSByZWZlcmVuY2VzIHRvIHRoZSBoZWFwLWFsbG9jYXRlZCByZXNvdXJjZSBidWZmZXIu
CiAgICAgICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzI0Mjc1NjE3KTogSXQgd291bGQgYmUg
YmV0dGVyIGlmIHdlIGNvdWxkIHNvbWVob3cgdGVsbCB0aGUgSW1hZ2UncyBkZWNvZGVyIHRvIHN3
YXAgaW4gdGhlIG5ldyBjb250ZW50cyB3aXRob3V0IGRlc3Ryb3lpbmcgYW55dGhpbmcuCiAgICAg
ICAgIG1faW1hZ2UtPmRlc3Ryb3lEZWNvZGVkRGF0YSh0cnVlKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFj
MTRlNjNmZWI4NWJhMDU1MjAzZjQuLjA4M2Y5MmY4ODgyNzZlZWRhODk5MTIwMzFkMjQ0OWE5Njhl
MjY1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC02
OSw4ICs2OSw4IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNv
bnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVXaWR0aCgpOyB9CiAg
ICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAm
JiBtX2ltYWdlLT5oYXNSZWxhdGl2ZUhlaWdodCgpOyB9CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZl
cihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1
cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAg
IHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBlbnVtIFNpemVUeXBlIHsKICAg
ICAgICAgVXNlZFNpemUsCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRl
c3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGREZWZlclVwZGF0
ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERh
dGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhKSBjb25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29k
ZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAg
dm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3Zl
cnJpZGU7CkBAIC0xNjksNyArMTY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJl
Y3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRl
cmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpOwogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5h
bChTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZl
ckNvbnRlbnRzKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDkyYjA4MzY5NzU4ODg0NDA5MTkzOWUzZWVk
NzlkNzdmMTgzOTU2MmYuLjg5NWRiMTE1OGI2YjhjOGZiZjdiMTBiNDNiNjE0ZWRhOTYwMjFjZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
LmNwcApAQCAtNDgsNyArNDgsNyBAQCBDYWNoZWRSYXdSZXNvdXJjZTo6Q2FjaGVkUmF3UmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgVHlwZSB0eXBlLAogICAgIEFTU0VS
VChpc01haW5Pck1lZGlhT3JJY29uT3JSYXdSZXNvdXJjZSgpKTsKIH0KIAotc3RkOjpvcHRpb25h
bDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3Jl
bWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK3N0ZDo6b3B0
aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJ
bmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdAogewogICAgIHNpemVfdCBwcmV2aW91c0RhdGFMZW5ndGggPSBlbmNvZGVkU2l6ZSgpOwog
ICAgIGlmICghZGF0YSB8fCBkYXRhLT5zaXplKCkgPD0gcHJldmlvdXNEYXRhTGVuZ3RoKQpAQCAt
NTYsNyArNTYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRS
YXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQwogICAgIHJldHVybiBkYXRhLT5n
ZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291
cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRSYXdSZXNv
dXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7
CiAgICAgLy8gU2tpcCBhbnkgdXBkYXRlQnVmZmVycyB0cmlnZ2VyZWQgZnJvbSBuZXN0ZWQgcnVu
bG9vcHMuIFdlJ2xsIGhhdmUgdGhlIGNvbXBsZXRlIGJ1ZmZlciBpbiBmaW5pc2hMb2FkaW5nLgog
ICAgIGlmIChtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5KQpAQCAtNjQsNyArNjQsNyBAQCB2b2lk
IENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogCiAg
ICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXMo
dGhpcyk7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5n
UG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBk
YXRhLm1ha2VDb250aWd1b3VzKCk7CiAKICAgICBhdXRvIHByZXZpb3VzRGF0YVNpemUgPSBlbmNv
ZGVkU2l6ZSgpOwogICAgIHdoaWxlIChkYXRhLnNpemUoKSA+IHByZXZpb3VzRGF0YVNpemUpIHsK
QEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVw
ZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6Zmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogewogICAgIGlmIChtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5KSB7CiAgICAgICAgIC8v
IFdlIG1heSBnZXQgaGVyZSBzeW5jaHJvbm91c2x5IGZyb20gdXBkYXRlQnVmZmVyKCkgaWYgdGhl
IGNhbGxiYWNrIHRoZXJlIGVuZHMgdXAgc3Bpbm5pbmcgYSBydW5sb29wLgpAQCAtMTA3LDEyICsx
MDcsMTQgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBEYXRhQnVmZmVy
aW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRhQnVmZmVyaW5nUG9saWN5
KCk7CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6
QnVmZmVyRGF0YSkgewotICAgICAgICBtX2RhdGEgPSBkYXRhOwotCi0gICAgICAgIGlmIChhdXRv
IGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7
Ci0gICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAgICAgICAgICAg
bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5j
cmVtZW50YWxEYXRhLT5zaXplKCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChkYXRhKSB7Cisg
ICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAg
aWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmso
ZGF0YSkpIHsKKyAgICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwor
ICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxE
YXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0KIAogI2lm
IFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuaAppbmRleCA4NGUwZDg0NGQ1NzEwOTk1M2FlNmJmZjY1NTY1OTk1M2UyOGJh
NjliLi5hNzg2NWY4YWQxNzhhZWZiMzIyMGE1NmRjZmYxOTU5OTNjZjk1YWU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtNTEsOSAr
NTEsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVk
UmVzb3VyY2VDbGllbnQmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZm
ZXImKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNo
TG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJy
b3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgYWxsQ2xpZW50
c1JlbW92ZWQoKSBvdmVycmlkZTsKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UoKSBvdmVycmlkZTsKICAgICBib29s
IG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYWxs
b3dFbmNvZGVkRGF0YVJlcGxhY2VtZW50OyB9CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1
ZmZlckRhdGFWaWV3PiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBTaGFyZWRC
dWZmZXIqKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBj
YWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KikgY29uc3Q7CiAgICAgdm9pZCBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCiAjaWYgVVNFKFFVSUNLX0xPT0sp
CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZGlyZWN0UGFpciwgMCwg
Q3Jhc2hPbk92ZXJmbG93LCAwPiBtX3JlZGlyZWN0Q2hhaW47CiAKICAgICBzdHJ1Y3QgRGVsYXll
ZEZpbmlzaExvYWRpbmcgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAg
fTsKICAgICBzdGQ6Om9wdGlvbmFsPERlbGF5ZWRGaW5pc2hMb2FkaW5nPiBtX2RlbGF5ZWRGaW5p
c2hMb2FkaW5nOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCmluZGV4IDNhZThiYjY4ZDI1Y2RkZDE4MDIwOTIyZjVlZGIyNGQ0YjkxMjAwMDIu
LmJmNjllODBlNTc2ZTFhMjg4ZjZhMDExZjU0NjE0NjMxNTU4MDFkMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzM0LDcgKzMzNCw3
IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKICAgICAgICAgY2xpZW50LT5ub3RpZnlGaW5pc2hlZCgqdGhpcywgbWV0
cmljcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZm
ZXImKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0
YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiB9CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9p
ZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQpCiAg
ICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpE
b05vdEJ1ZmZlckRhdGEpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQg
Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBzZXRMb2FkaW5n
KGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKQEAgLTkyNyw4ICs5MjcsNyBAQCB2
b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBu
ZXdCdWZmZXIpCiAgICAgaWYgKCptX2RhdGEgIT0gbmV3QnVmZmVyKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX2RhdGEtPmNsZWFyKCk7Ci0gICAgbV9kYXRhLT5hcHBlbmQobmV3QnVmZmVyKTsK
KyAgICBtX2RhdGEgPSBSZWYgeyBuZXdCdWZmZXIgfTsKICAgICBkaWRSZXBsYWNlU2hhcmVkQnVm
ZmVyQ29udGVudHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuaAppbmRleCAzOTYwMDI4MzJjYzE1M2M1OTA0NzhjYTI1MTgxM2U2YzAzNWJjMjc4
Li5jOTgyZGQ2OTM3YTBiYzJiZjM4YzQyNjEyNmZmZTZlNzhjNzk2NDc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtNDksNyArNDksNyBAQCBj
bGFzcyBDb29raWVKYXI7CiBjbGFzcyBNZW1vcnlDYWNoZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0
cmljczsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwogY2xhc3Mg
VGV4dFJlc291cmNlRGVjb2RlcjsKIApAQCAtMTEyLDkgKzExMiw5IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBT
dHJpbmcgZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwg
Y29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IHsg
cmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1
ZmZlciYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CisgICAgdmlydHVhbCB2
b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBlcnJvcihDYWNoZWRSZXNvdXJj
ZTo6U3RhdHVzKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VFcnJvcihjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikgeyBtX2Vycm9yID0gZXJyb3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmluZGV4IDdkYTE0ODUxYTcwNzg0YWFi
ZTk4MzliNzA2YTBiMWIzMzFmMmM4MzkuLmRiNDMxNjA3YWU1NjM4MzAzODAwZGQyNTljMTAzNGNk
MDkwZmNmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcApAQCAtNTIsMTIgKzUyLDEyIEBAIFN0cmluZyBDYWNoZWRTVkdEb2N1bWVu
dDo6ZW5jb2RpbmcoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFt
ZSgpOwogfQogCi12b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNo
ZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRh
dGEpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVj
YXVzZSB0aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50Lgog
ICAgICAgICBtX2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRp
bmdzLCByZXNwb25zZSgpLnVybCgpKTsKLSAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudCht
X2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7Cisg
ICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChk
YXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOwogICAgIH0KICAg
ICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKaW5kZXggZThj
MTVmMzYwZmM5MWFjOGIzNGQzOTYyOTVjNTNkM2M3ZjE0N2VhYS4uNDQ1ZTRmOWY0MmMzYzI3NDA3
OTc2YTY0ZTkxNTQwN2Y4YjUzNGQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNv
ZGluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRl
eHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIuZ2V0
KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlk
ZTsKIAogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBSZWZQdHI8VGV4
dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0ZvbnQuY3BwCmluZGV4IGE4ZWY1NzZiYjY5MzkzM2EyMjM0Njk1NTU3NTZi
MzY2N2U0ODYzMmUuLmQyYzFkZTQ3ZWZiNzgxMzk4ZjQ0MzhiN2NhNGVhMjYwZTIyMTk3NjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKQEAgLTgw
LDcgKzgwLDcgQEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25z
dCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpCiAKICAgICAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRT
Y29wZTo6RGlzYWJsZUFzc2VydGlvbnNJblNjb3BlIGRpc2FibGVkU2NvcGU7CiAKLSAgICAgICAg
ICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVudChkZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKKyAgICAgICAgICAgIG1fZXh0
ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVudChkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2Rh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKICAgICAgICAg
ICAgIHNhd0Vycm9yID0gZGVjb2Rlci0+c2F3RXJyb3IoKTsKICAgICAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IDQ3YTlmNTc2MDdi
OTgyODRlOGY3OWUyY2RlY2U5YmU0MThmMTdiNjUuLmI2NzM5OGIwZTRmNTZmZTdhYmNiMjc0ZDBl
MzY4NDMwMzYzNTA4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
Y3JpcHQuY3BwCkBAIC05NiwxMCArOTYsMTUgQEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3Jp
cHRIYXNoKCkKICAgICByZXR1cm4gbV9zY3JpcHRIYXNoOwogfQogCi12b2lkIENhY2hlZFNjcmlw
dDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBk
YXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRh
LT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVu
Y29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhk
YXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNj
cmlwdC5oCmluZGV4IDkyNGI4NGNhMmQ4NzE2ZTM0NjA3N2VlZWI1Y2MzNGJjZWRlN2UyM2QuLjg2
NTFlNjM5YWQ5MDYxNzI4NTYxYzMyNGJmYTdhZjRjZjk3ZjZkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBl
bmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRl
eHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7
IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAg
IHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXggMTIyOTgxNTAzMTI4ODYxZWM0
ZjVlYjRjZjUwZjMyMDg2YjVkZWI2MS4uMGM4NDI4YmI5OWRiNmRmYjE2YTM0ODEzNGMzODI2ODM2
Y2NlNTQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRl
eHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRU
cmFjay5jcHAKQEAgLTQwLDEwICs0MCwxMCBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRU
cmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogewog
fQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBk
YXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3ko
KSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSBkYXRh
OworICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDog
MCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVu
dD4gd2Fsa2VyKG1fY2xpZW50cyk7CkBAIC01MSwxMyArNTEsMTMgQEAgdm9pZCBDYWNoZWRUZXh0
VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgY2xpZW50
LT5kZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKCp0aGlzKTsKIH0KIAotdm9pZCBD
YWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENh
Y2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEpCiB7CiAgICAgZG9VcGRhdGVCdWZmZXIoJmRhdGEpOwogICAgIENhY2hlZFJlc291cmNl
Ojp1cGRhdGVCdWZmZXIoZGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQog
ewogICAgIGRvVXBkYXRlQnVmZmVyKGRhdGEpOwogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hM
b2FkaW5nKGRhdGEsIG1ldHJpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFRleHRUcmFjay5oCmluZGV4IDg1ZTM5NjIwNjUxMzE2MDcwMzY1M2ViMjJjNzcxMzhiOTE1
MDdhZGQuLjA5YjQzMzlhMzdiNjczYjJhYzRmZGFlMTQ2YjI5Yjk2NDc3N2ZjZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKQEAgLTM1LDEwICsz
NSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2Rl
ZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCB1cGRhdGVC
dWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZv
aWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
KyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkb1VwZGF0ZUJ1
ZmZlcihTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApp
bmRleCBlM2UyZjVlOTY0ODc5NDc5MmYxODkwZjQ2N2EyNzgyNjE1ZDM0MDBjLi5kMmVmZjJkMmQ0
MGM5Mjc3Mzg3NTZjNGE4ZjBjYmI5MzQzYmUxMGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02MSwxMiArNjEsMTYg
QEAgU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1
cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2Fk
aW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRT
aXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9z
aGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6
ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGln
dW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBt
X3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5jb2Rl
ZFNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAg
ICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAg
IGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKaW5kZXggNjg0MmI2NDRmNjFjZjkwZjdmNjFiMmY3
ZWM1ZTAwNjU0Y2QxMGNjYy4uYmQyMzEyMTRmMmQyMGJhMzk2NDQ2MDM2NmUwNDFiOTQxMzVhYzRj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhj
b25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsK
ICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAg
IHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBTdHJpbmcgbV9zaGVldDsKICAgICBS
ZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAppbmRleCA1NTI1NjFkNmM4MTZkM2Qy
MGJjZmNjYjJlNjU4M2I3ZGU5NGI5NGEyLi42NmI5MzU4ZWM1MzExMTQ4NDgyMmE3Y2MyNGU3ZjNh
OTkxNzA2NWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNyw3ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogY2xhc3Mg
TGVnYWN5UHJldmlld0xvYWRlciBmaW5hbCA6IHByaXZhdGUgUHJldmlld0NvbnZlcnRlckNsaWVu
dCwgcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwpAQCAtNDgsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGRpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgYm9vbCBkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgZGlk
UmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBib29sIGRpZFJlY2VpdmVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIGJvb2wgZGlkRmluaXNo
TG9hZGluZygpOwogICAgIHZvaWQgZGlkRmFpbCgpOwogCkBAIC02MCwxNyArNjIsMTcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hVcGRhdGluZyhQcmV2aWV3
Q29udmVydGVyJikgZmluYWwgeyB9OwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxV
cGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgZmluYWw7CiAgICAgdm9pZCBwcmV2aWV3Q29udmVy
dGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKLSAgICB2b2lk
IHByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3Qg
U2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2
ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBm
aW5hbDsKICAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKFByZXZp
ZXdDb252ZXJ0ZXImKSBmaW5hbDsKICAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsQ29u
dmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgZmluYWw7CiAKICAgICAvLyBQcmV2aWV3Q29udmVy
dGVyUHJvdmlkZXIKLSAgICB2b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVy
dGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciopPiYmKSBmaW5hbDsKKyAgICB2b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2
aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJikgZmluYWw7CiAgICAgdm9pZCBwcm92aWRl
UGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxQcmV2
aWV3Q29udmVydGVyPiBtX2NvbnZlcnRlcjsKICAgICBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNs
aWVudD4gbV9jbGllbnQ7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9vcmlnaW5hbERhdGE7Cisg
ICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fb3JpZ2luYWxEYXRhOwogICAgIFdl
YWtQdHI8UmVzb3VyY2VMb2FkZXI+IG1fcmVzb3VyY2VMb2FkZXI7CiAgICAgYm9vbCBtX2Zpbmlz
aGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzUHJv
Y2Vzc2VkUmVzcG9uc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCmluZGV4IGQxOGIyNTJlOTc1NmM4Y2UwYzk1YjYzZTc4
ZGQwMDk3ZWYyYTU3MzQuLjc0OGZlZGI4ZWE0OGZhYmM4MjVmYjViNjc3MTc0MTUyMDViMzFiMTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIu
bW0KQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIFJlZjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50
PiBtYWtlQ2xpZW50KGNvbnN0IFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGMKICAgICByZXR1cm4g
ZW1wdHlDbGllbnQoKTsKIH0KIAotYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBMZWdhY3lQcmV2aWV3TG9h
ZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBpZiAobV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlcikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgTGVnYWN5UHJldmlld0xv
YWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVy
JiBjCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV9oYXNQcm9jZXNzZWRSZXNwb25z
ZSk7Ci0gICAgbV9vcmlnaW5hbERhdGEtPmNsZWFyKCk7CisgICAgbV9vcmlnaW5hbERhdGEtPnJl
c2V0KCk7CiAgICAgcmVzb3VyY2VMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnNldFByZXZpZXdD
b252ZXJ0ZXIoV1RGTW92ZShtX2NvbnZlcnRlcikpOwogICAgIGF1dG8gcmVzcG9uc2UgeyBjb252
ZXJ0ZXIucHJldmlld1Jlc3BvbnNlKCkgfTsKIApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgTGVn
YWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2
aWV3Q29udmVydGVyJiBjCiAgICAgfSk7CiB9CiAKLXZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6
cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBT
aGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252
ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBhdXRvIHJlc291cmNlTG9hZGVyID0gbV9yZXNvdXJj
ZUxvYWRlci5nZXQoKTsKICAgICBpZiAoIXJlc291cmNlTG9hZGVyKQpAQCAtMjI0LDEwICsyMjQs
MTAgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3
Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICBtX2NsaWVudC0+ZGlkUmVxdWVzdFBh
c3N3b3JkKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBMZWdhY3lQcmV2
aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3
Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVk
QnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6
OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXIm
IGNvbnZlcnRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb252
ZXJ0ZXIsICZjb252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwotICAgIGNvbXBsZXRpb25IYW5kbGVy
KG1fb3JpZ2luYWxEYXRhLnB0cigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFs
RGF0YS0+Z2V0KCkuZ2V0KCkpOwogfQogCiBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJl
dmlld0xvYWRlcigpID0gZGVmYXVsdDsKQEAgLTIzNSw3ICsyMzUsNyBAQCBMZWdhY3lQcmV2aWV3
TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKIExlZ2FjeVByZXZpZXdM
b2FkZXI6OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgOiBtX2NvbnZlcnRlciB7IFByZXZpZXdD
b252ZXJ0ZXI6OmNyZWF0ZShyZXNwb25zZSwgKnRoaXMpIH0KICAgICAsIG1fY2xpZW50IHsgbWFr
ZUNsaWVudChsb2FkZXIsIG1fY29udmVydGVyLT5wcmV2aWV3RmlsZU5hbWUoKSwgbV9jb252ZXJ0
ZXItPnByZXZpZXdVVEkoKSkgfQotICAgICwgbV9vcmlnaW5hbERhdGEgeyBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpIH0KKyAgICAsIG1fb3JpZ2luYWxEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRC
dWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fcmVzb3VyY2VMb2FkZXIgeyBsb2FkZXIgfQogICAg
ICwgbV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZyYW1lKCktPnNl
dHRpbmdzKCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXco
KSB9CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCA4MjM3NGU3MjYyYzcwZWE5
ZGZlNGQ2NGYyNWFiMTM1YWE2MDMzM2NmLi5lYTYxNWRmZjRkZDBlZDUxNGJmZjY0NDI2NDdlYzQ2
MjBmNjMyMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTM4LDEyICszOCwx
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNw
b25zZSA6IHVpbnQ4X3Q7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJh
Z21lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBLZXlib2FyZEV2ZW50
OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBjbGFzcyBUZXh0Q2hlY2tlckNsaWVu
dDsKIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CkBAIC03OCw3ICs3OSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUoY29uc3QgU2ltcGxlUmFu
Z2UmLCBjb25zdCBTaW1wbGVSYW5nZSYpID0gMDsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29u
c3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBl
ICovLCBjb25zdCBTdHJpbmcmIC8qIHByZWZlcnJlZEZpbGVOYW1lICovLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmll
cihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29udGVu
dFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogcHJlZmVycmVkRmlsZU5hbWUgKi8sIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRh
Y2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0
cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogZmlsZVBhdGggKi8pIHsg
fQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxTZXJpYWxpemVk
QXR0YWNobWVudERhdGE+JiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1l
bnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLykgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDFhMTIxMGZhODMzN2NkOTUyMGY0ZTAx
MWE5MDczNjc1NGRlNTE4ZjEuLmFjNTNjYjE0YmYwMGU1MTY0N2M5ZWM5MTEwOThiZWEwMzYxNTEx
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0yNzMsNyArMjcz
LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFn
ZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5p
bWFnZSgpID09ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVyID8gaW1hZ2UtPmltYWdlRm9y
UmVuZGVyZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVyID8gaW1hZ2UtPmltYWdlRm9yUmVu
ZGVyZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CiAgICAgaWYgKCFkYXRhKQogICAgICAg
ICBkYXRhID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKIApAQCAtMjgyLDcgKzI4Miw3IEBAIHZv
aWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdl
LCBSZW5kZXJFbGVtZW50KiBpbWFnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Jl
c291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIFdURk1v
dmUoZGF0YSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+cmVzcG9u
c2UoKS5taW1lVHlwZSgpLCBkYXRhLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgIG1fcmVzb3Vy
Y2VVUkxzLmFkZCh1cmwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5j
cHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZmZjQyZThlMC4uNzU4MzZi
ODc5MTQzYjYwYTdmMzUxOTcwMzIwN2I2YWQzZDhkNGY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0YVJlYWRlcigpCkBA
IC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmco
aW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICAgICAgY2FuY2VsKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGFycmF5QnVmZmVyID0g
bV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVyUmVzdWx0KCk7Ci0gICAg
CisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9IGZpbGVOYW1lOwogICAg
IGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVu
Z3RoKCkpOwogICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChXVEZNb3ZlKGZpbGUpKTsKICAg
ICBtX2ZpbGVzUmVhZFNvRmFyKys7Ci0gICAgCisKICAgICBpZiAobV9maWxlc1JlYWRTb0ZhciA9
PSBzdGF0aWNfY2FzdDxpbnQ+KG1fcGVuZGluZ0ZpbGVMb2Fkcy5zaXplKCkpKSB7CiAgICAgICAg
IG1fcGVuZGluZ0ZpbGVMb2Fkcy5jbGVhcigpOwogICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9u
SGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgeyB9KSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCmluZGV4IGUzODA2ZTg3ZGY3
OWEzZDliNWNhZTEyMTRkZTY2YWEyYTY1ODQ3ZGIuLmZjNjZjMzY1YTJmMjlhNGM3OGU2MDYxOWU0
N2E3MWM3MjU4ZDhmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1Bs
YXlpbmdNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01h
bmFnZXIuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8Tm93
UGxheWluZ0luZm8+IG1fbm93UGxheWluZ0luZm87CiAgICAgc3RydWN0IEFydHdvcmtDYWNoZSB7
CiAgICAgICAgIFN0cmluZyBzcmM7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdl
RGF0YTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsK
ICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8QXJ0d29ya0NhY2hlPiBtX25vd1BsYXlpbmdJbmZv
QXJ0d29yazsKICAgICBib29sIG1fc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24geyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCAxNTczMWViMjNmYTc2
OTQ5NjBkZDgwNDk2ZmE4ZjJmOWU4Yzc3ODBmLi4wN2VkNDhlNTg4NGVjZWVkYzYxZmQ5M2U2YjIy
MTcxYmU4ODU4OWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcApAQCAt
ODksNyArODksNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUp
CiB7CiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpKQogICAgICAgICByZXR1cm4gc3RyYXRlZ3ktPnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChpbmRleCwgdHlwZSwgbmFtZSgpLCBjb250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDdkMjQ3ZGNkMWExNmYzNDJjMTc1NGM0NWM0YTczNTI5
YmY4ZjcxYjIuLjM1NzYzZWUxMmEzOTBlZmM4NDUyYzM1ODA2YjUxMmJlNDI5YWQ5NzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDEyICs2MSwxMyBAQCB0eXBlZGVm
IHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hh
cmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERyYWdEYXRhOwogY2xh
c3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgUGFzdGVib2FyZFN0cmF0ZWd5OwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0
IFNpbXBsZVJhbmdlOwogCkBAIC0xNDcsMTYgKzE0OCwxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplIHByZWZl
cnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUgPSB7
IH0pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5nJikgPSAw
OwotICAgIHZpcnR1YWwgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUg
PSB7IH0pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVy
cmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkVVJM
KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
cmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSA9IDA7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSA9
IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2
aXJ0dWFsIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29s
IHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUg
PSB7IH0pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURihGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkRGF0YUJ1ZmZlcihGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUs
IFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOwog
I2VuZGlmCiB9OwogCkBAIC0xNzEsNyArMTcyLDcgQEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlUmVh
ZGVyIHsKICAgICB2aXJ0dWFsIH5QYXN0ZWJvYXJkRmlsZVJlYWRlcigpID0gZGVmYXVsdDsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIC8qIHR5cGUgKi8pIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiB9
OwogCiBjbGFzcyBQYXN0ZWJvYXJkIHsKQEAgLTI5Niw3ICsyOTcsNyBAQCBwdWJsaWM6CiAgICAg
c3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IHBhc3RlYm9hcmRJdGVtSW5mbyhzaXpl
X3QgaW5kZXgpIGNvbnN0OwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHR5cGUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmlu
ZyYgdGl0bGUpOwogCiAgICAgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCA5ZDNmODdhOTExNGMzOGE1NGUzM2Ew
NWUyYjk4OTUyY2NmNjdhZTcwLi43YjRiM2QzNmFhNjgwMzYxMTg3OTEzMWI1YTFiMjI2YjU4OGQz
NjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9t
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuY3BwCkBAIC0zMywxMyArMzMsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+IGNvcHlQbGF0Zm9ybURh
dGEoY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+JiBvdGhlcikK
K3N0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
IGNvcHlQbGF0Zm9ybURhdGEoY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiYgb3RoZXIpCiB7CiAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8U3RyaW5nPihvdGhlcikpCiAgICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFN0cmluZz4ob3Ro
ZXIpIH07CiAKLSAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVy
Pj4ob3RoZXIpKQotICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4o
b3RoZXIpLmNvcHlSZWYoKSB9OworICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ob3RoZXIpKQorICAgICAgICByZXR1cm4geyBzdGQ6Omdl
dDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG90aGVyKS5jb3B5UmVmKCkgfTsKIAogICAg
IHJldHVybiB7IH07CiB9CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVl
KQogICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZvcm1EYXRhID0geyB2YWx1ZSB9
OwogfQogCi12b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEoY29uc3QgU3RyaW5n
JiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFBhc3RlYm9hcmRDdXN0b21E
YXRhOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhKQogewogICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZvcm1E
YXRhID0geyBXVEZNb3ZlKGRhdGEpIH07CiB9CkBAIC0yMDIsMTQgKzIwMiwxNCBAQCBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6c2FtZU9yaWdpbkN1c3RvbVN0
cmluZ0RhdGEoKSBjb25zdAogICAgIHJldHVybiBjdXN0b21EYXRhOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
IHR5cGUpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1
c3RvbURhdGE6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGZv
ciAoYXV0byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgaWYgKGVudHJ5LnR5cGUgIT0gdHlw
ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQotICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEp
LmNvcHlSZWYoKTsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQorICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1E
YXRhKS5jb3B5UmVmKCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMjY1
LDExICsyNjUsMTEgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaEN1c3RvbVN0
cmluZyhGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwKICAgICB9CiB9CiAKLXZvaWQg
UGFzdGVib2FyZEN1c3RvbURhdGE6OmZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBS
ZWY8U2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAordm9pZCBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9p
ZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAogewogICAgIGZv
ciAoYXV0byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgYXV0byYgZGF0YSA9IGVudHJ5LnBs
YXRmb3JtRGF0YTsKLSAgICAgICAgaWYgKChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4o
ZGF0YSkgJiYgIXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkuaXNOdWxsKCkpIHx8IHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAgICBpZiAoKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRh
KS5pc051bGwoKSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+KGRhdGEpKQogICAgICAgICAgICAgZnVuY3Rpb24oZW50cnkudHlwZSwgZGF0YSk7
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmgKaW5kZXggMmJlODFkMjkzOGEzZGJkMDkwMjZjYTZlYzY0YWMzMjg3ZTZhYmMwMy4uOTdm
Zjk4NWUyNGUxMWI0YzdiYjQxNDM3MzdmMDI4NDBjMzVmZmNlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC0zNSw2ICszNSw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhIHsKIHB1YmxpYzoK
QEAgLTQ4LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgICAgIFN0cmluZyB0eXBlOwogICAgICAg
ICBTdHJpbmcgY3VzdG9tRGF0YTsKLSAgICAgICAgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNo
YXJlZEJ1ZmZlcj4+IHBsYXRmb3JtRGF0YTsKKyAgICAgICAgc3RkOjp2YXJpYW50PFN0cmluZywg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBwbGF0Zm9ybURhdGE7CiAgICAgfTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFBhc3RlYm9hcmRDdXN0b21EYXRhKCk7CkBAIC02NSwxMSArNjYsMTEg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJik7CiAK
ICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihjb25zdCBTdHJp
bmcmIHR5cGUpIGNvbnN0OwogICAgIFN0cmluZyByZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0
IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAKICAgICB2b2lkIHdyaXRlU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdm9pZCB3cml0ZURhdGEoY29uc3Qg
U3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIHZvaWQgd3JpdGVE
YXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0
YSk7CiAgICAgdm9pZCB3cml0ZVN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiAgICAgdm9pZCBjbGVhcigpOwpAQCAtODMsNyArODQs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZvckVhY2hUeXBlKEZ1bmN0aW9uPHZvaWQoY29uc3Qg
U3RyaW5nJik+JiYpIGNvbnN0OwogICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nKEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpPiYmKSBjb25z
dDsKLSAgICB2b2lkIGZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVk
QnVmZmVyPj4mIGRhdGEpPiYmKSBjb25zdDsKKyAgICB2b2lkIGZvckVhY2hQbGF0Zm9ybVN0cmlu
Z09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZh
cmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKT4mJikgY29u
c3Q7CiAgICAgdm9pZCBmb3JFYWNoQ3VzdG9tU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpPiYmKSBjb25zdDsKIAogICAgIGJvb2wgaGFz
RGF0YSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRl
Z3kuaAppbmRleCAxYzA3MjZmZWIzZTAyYWVkMzJiNDZmMjYyYmNkYTE2OWQ2NzJlYjJjLi5jNDFl
MDg1MjQ0OTZjNjdmMWYxNTAzOGZiYjI2ZTljMjlkYTY5OGM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsMTAgKzMxLDExIEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xh
c3MgUGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNz
IFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRl
bUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKQEAgLTYyLDcgKzYzLDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIGludDY0X3Qgc2V0
QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
ID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVh
bCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBp
bnQ2NF90IHNldENvbG9yKGNvbnN0IENvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNl
dFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRl
bnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRl
ci5oCmluZGV4IDNmNDgzMmE1YTY1OGMxY2M3YzBhYTEzYjI2ZTBlYTQ3MzNlOWQzYjcuLjllNzJl
NDRhMmVhYzRkOGVmNzMwYjk4NzFkMGVjNTA4ZWQ5ZmFjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCkBAIC0zNCw3ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9y
bUNvbnRlbnRGaWx0ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTYsNyAr
NTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVk
QWRkaW5nRGF0YSgpID0gMDsKLSAgICB2aXJ0dWFsIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2Vt
ZW50RGF0YSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCA9IDA7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQogICAgIHZpcnR1YWwgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tI
YW5kbGVyKCkgY29uc3QgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDdhMmEzMTAwNzQyNTAwMjQzYmI0NmZmNTk4Njg2MWU4
NGEyZmQ5NmUuLjcxZGZiOTNlNTc1NjBlMzNhN2Y2YzgwYzIwZjkyZDViMmNhZWMxMzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC00NywxMyAr
NDcsMTQgQEAgc3RydWN0IHdwZV9wYXN0ZWJvYXJkOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDb2xvcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21E
YXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQ
YXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3Rl
Ym9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybVBhc3RlYm9hcmQgewogcHVibGljOgpAQCAt
ODUsNyArODYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHdpbGwgcmV0dXJu
IDAgaWYgcGFzdGVib2FyZCBvd25lcnNoaXAgaGFzIGJlZW4gdGFrZW4gZnJvbSB1cy4KICAgICBX
RUJDT1JFX0VYUE9SVCBpbnQ2NF90IGNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIGlu
dDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRVUkwo
Y29uc3QgUGFzdGVib2FyZFVSTCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0Q29s
b3IoY29uc3QgQ29sb3ImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldFN0cmluZ0Zv
clR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4IDRjYjMzMDFl
N2RmNzA3MWM1ZGQ5ZmM1OWJjNTcxODVjNGU5MTQ3NjguLjYzMWFkZTdjY2Y3YWQyOTY5M2EyZTc2
NTFmZTZhOWNkZWJkMzc3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuY3BwCkBAIC02Myw5ICs2Myw5IEBAIGNvbnN0IFJlc291cmNlRXJyb3ImIFByZXZp
ZXdDb252ZXJ0ZXI6OnByZXZpZXdFcnJvcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJldmlld0Vy
cm9yOwogfQogCi1jb25zdCBTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdE
YXRhKCkgY29uc3QKK2NvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0
ZXI6OnByZXZpZXdEYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcmV2aWV3RGF0YS5nZXQo
KTsKKyAgICByZXR1cm4gKm1fcHJldmlld0RhdGEtPmdldCgpOwogfQogCiB2b2lkIFByZXZpZXdD
b252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSgpCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgUHJl
dmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKICAgICB9KTsKIH0KIAotdm9pZCBQ
cmV2aWV3Q29udmVydGVyOjphcHBlbmRGcm9tQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQordm9pZCBQcmV2aWV3Q29udmVydGVyOjphcHBlbmRGcm9tQnVmZmVyKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICB3aGlsZSAoYnVmZmVyLnNpemUoKSA+
IG1fbGVuZ3RoQXBwZW5kZWQpIHsKICAgICAgICAgYXV0byBuZXdEYXRhID0gYnVmZmVyLmdldFNv
bWVEYXRhKG1fbGVuZ3RoQXBwZW5kZWQpOwpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgUHJldmll
d0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50
KQogICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKCp0aGlzKTsK
IAogICAgIGlmICghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpICYmIGhhc0NsaWVudChjbGllbnQp
KQotICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCBt
X3ByZXZpZXdEYXRhLmdldCgpKTsKKyAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRS
ZWNlaXZlRGF0YSgqdGhpcywgKm1fcHJldmlld0RhdGEtPmdldCgpKTsKIAogICAgIGlmIChtX3N0
YXRlID09IFN0YXRlOjpDb252ZXJ0aW5nIHx8ICFoYXNDbGllbnQoY2xpZW50KSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVwbGF5
VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQogICAgIGNsaWVudC5wcmV2
aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZygqdGhpcyk7CiB9CiAKLXZvaWQgUHJldmll
d0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRh
dGEpCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBhdXRvIHByb3RlY3RlZFRoaXMg
eyBSZWYgeyAqdGhpcyB9IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuaAppbmRleCAyYTM3MjkyMjc5OWNlNmFmZmFhYjNlMTQwZDE5MGJhNjRjZjhjZTJiLi45
MjAyZWRkZDllMTA1YjI3MzVlZGMxNDZmMjY2NGMxM2NiOWMzNDFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBA
IC00MSwxNSArNDIsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZXNvdXJjZUVy
cm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OworY2xh
c3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50Owog
c3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcjsKIAogc3RydWN0IFByZXZpZXdQbGF0Zm9y
bURlbGVnYXRlIDogQ2FuTWFrZVdlYWtQdHI8UHJldmlld1BsYXRmb3JtRGVsZWdhdGU+IHsKICAg
ICB2aXJ0dWFsIH5QcmV2aWV3UGxhdGZvcm1EZWxlZ2F0ZSgpID0gZGVmYXVsdDsKIAotICAgIHZp
cnR1YWwgdm9pZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZEZpbmlz
aExvYWRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkRmFpbFdpdGhFcnJv
cihjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogfTsKQEAgLTcyLDcgKzc0LDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwcmV2aWV3RmlsZU5hbWUoKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJldmlld1VUSSgpIGNvbnN0OwogICAgIGNvbnN0IFJl
c291cmNlRXJyb3ImIHByZXZpZXdFcnJvcigpIGNvbnN0OwotICAgIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgcHJldmlld0RhdGEoKSBjb25zdDsKKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBwcmV2aWV3RGF0YSgpIGNvbnN0OwogCiAgICAgdm9pZCBmYWlsZWRVcGRhdGluZygpOwogICAg
IHZvaWQgZmluaXNoVXBkYXRpbmcoKTsKQEAgLTk0LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIGlzUGxhdGZvcm1QYXNzd29yZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKSBjb25zdDsK
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgaXRlcmF0ZUNsaWVudHMoVCYmIGNhbGxi
YWNrKTsKLSAgICB2b2lkIGFwcGVuZEZyb21CdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7Cisg
ICAgdm9pZCBhcHBlbmRGcm9tQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsK
ICAgICB2b2lkIGRpZEFkZENsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50Jik7CiAgICAgdm9p
ZCBkaWRGYWlsQ29udmVydGluZ1dpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
dm9pZCBkaWRGYWlsVXBkYXRpbmcoKTsKQEAgLTEwNiw3ICsxMDgsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcGxhdGZvcm1VbmxvY2tXaXRoUGFzc3dvcmQoY29uc3QgU3RyaW5nJik7CiAKICAgICAv
LyBQcmV2aWV3UGxhdGZvcm1EZWxlZ2F0ZQotICAgIHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2
ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZGVs
ZWdhdGVEaWRGaW5pc2hMb2FkaW5nKCkgZmluYWw7CiAgICAgdm9pZCBkZWxlZ2F0ZURpZEZhaWxX
aXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCkBAIC0xMTgsNyArMTIwLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgRmluaXNoZWRDb252ZXJ0aW5nLAogICAgIH07CiAKLSAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBtX3ByZXZpZXdEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZm
ZXJCdWlsZGVyPiBtX3ByZXZpZXdEYXRhOwogICAgIFJlc291cmNlRXJyb3IgbV9wcmV2aWV3RXJy
b3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX29yaWdpbmFsUmVzcG9uc2U7CiAgICAgU3RhdGUg
bV9zdGF0ZSB7IFN0YXRlOjpVcGRhdGluZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oCmluZGV4IDA0ZWEzNjgwNjkyYjI1MmExOTg5YzI2
Y2EyMDQyMTI3NzdhYTNiN2IuLjljZWU5MzMyMGIyMzhiNGNkNzNjZGQyZTAzMDJjM2JmNGRhZDY4
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xp
ZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQcmV2
aWV3Q29udmVydGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVy
Q2xpZW50IDogQ2FuTWFrZVdlYWtQdHI8UHJldmlld0NvbnZlcnRlckNsaWVudD4gewogICAgIHZp
cnR1YWwgflByZXZpZXdDb252ZXJ0ZXJDbGllbnQoKSA9IGRlZmF1bHQ7CkBAIC00Miw3ICs0Miw3
IEBAIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50IDogQ2FuTWFrZVdlYWtQdHI8UHJldmll
d0NvbnZlcnRlckNsaWVudD4gewogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlk
RmluaXNoVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cHJldmlld0NvbnZlcnRlckRpZEZhaWxVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZp
ZXdDb252ZXJ0ZXImKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRS
ZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBuZXdEYXRh
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQ
cmV2aWV3Q29udmVydGVyJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgbmV3RGF0YSkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGlu
ZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVy
dGVyRGlkRmFpbENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCmluZGV4
IDgyNzg2MzkzZmNlZDc1NGM4NWY3YjI4OTEyNTJmNTE2YmVkMGQ1NDkuLmI5ODZlZTQwZDE5NzUx
NzRmNTRhZDI5YTE2OGNhZGYxODk0NTZjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgOiBDYW5NYWtl
V2Vha1B0cjxQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI+IHsKICAgICB2aXJ0dWFsIH5QcmV2aWV3
Q29udmVydGVyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0Nv
bnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciopPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByb3ZpZGVQYXNzd29yZEZvclByZXZp
ZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgU3RyaW5nJik+JiYpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuY3BwCmluZGV4IGQ4ZTY4ZTMzNzc4MWZiMjlhZDM5YzU1YjlhZmQzOTAwMzUzNTM4NWQu
Ljk3ZWY2YmU0ZjgxZjFjNDU5MmMzNTIxMGQ5N2Q5YTZjMjg4NTU1MWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMzcsNjMgKzM3LDUyIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIGFw
cGVuZChkYXRhLCBzaXplKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IHNpemUpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIGFw
cGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSk7CiB9CiAK
LVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYg
ZmlsZURhdGEpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmls
ZURhdGEuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6
Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwg
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKLVNoYXJlZEJ1
ZmZlcjo6U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQorRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6
UHJvdmlkZXImJiBwcm92aWRlcikKICAgICA6IG1fc2l6ZShwcm92aWRlci5zaXplKCkpCiB7Ci0g
ICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92
aWRlcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRl
KFdURk1vdmUocHJvdmlkZXIpKSB9KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKICAgICBhcHBlbmQoV1RG
TW92ZShkYXRhKSk7CiB9CiAKLSNpZiBVU0UoR1NUUkVBTUVSKQotUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikK
K0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKG1hcHBlZEJ1ZmZlcikpOworICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCi1T
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVm
ZmVyKQotICAgIDogbV9zaXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCisjaWYgVVNFKEdTVFJFQU1F
UikKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpj
cmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIHsKLSAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKX0pOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIobWFwcGVkQnVmZmVy
KSk7CiB9Ci0jZW5kaWYKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZp
bGVNYXBwaW5nKQotewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFw
cGluZzo6WWVzKSB7Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxl
TW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZp
bGVEYXRhKSkpOwotICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUoZmlsZVBhdGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZm
ZXIpCisgICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7CisgICAgbV9zZWdtZW50
cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpIH0pOwogfQor
I2VuZGlmCiAKLXN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25z
dCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6ZV90IHNpemUp
CitzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6
ZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gY29tYmluZWREYXRhOwogICAgIGNvbWJpbmVkRGF0
YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwpAQCAtMTAzLDMzICs5MiwxOSBAQCBzdGF0
aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudFZlY3RvcgogICAgIHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLXZvaWQg
U2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdAorUmVmPFNoYXJlZEJ1
ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKSBjb25zdAogewot
I2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8g
c2V0IHRoaXMgdG8gdHJ1ZSBhbmQgaGF2ZSBubyBhc3NlcnRpb25zIGZpcmUuCi0gICAgLy8gUmVt
b3ZlIGFsbCBpbnN0YW5jZXMgb2YgYXBwZW5kaW5nIGFmdGVyIGNhbGxpbmcgdGhpcywgYmVjYXVz
ZSB0aGV5IGFyZSBhbGwgTyhuXjIpIGFsZ29yaXRobXMgc2luY2UgcjIxNTY4Ni4KLSAgICAvLyBt
X2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50ID0gdHJ1ZTsKLSNlbmRpZgotICAgIGlmICht
X3NlZ21lbnRzLnNpemUoKSA8PSAxKQotICAgICAgICByZXR1cm47Ci0KKyAgICBpZiAobV9jb250
aWd1b3VzKQorICAgICAgICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+
KGNvbnN0X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSB9OworICAgIGlmICgh
bV9zZWdtZW50cy5zaXplKCkpCisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUobV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CiAgICAgYXV0
byBjb21iaW5lZERhdGEgPSBjb21iaW5lU2VnbWVudHNEYXRhKG1fc2VnbWVudHMsIG1fc2l6ZSk7
Ci0gICAgbV9zZWdtZW50cy5jbGVhcigpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSl9KTsKLSAgICBBU1NFUlQobV9z
ZWdtZW50cy5zaXplKCkgPT0gMSk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkp
OwotfQotCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAotewotICAg
IGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
Y29tYmluZUludG9PbmVTZWdtZW50KCk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50
KCkpOwotICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKKyAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKTsKIH0KIAotVmVj
dG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdAorVmVjdG9yPHVpbnQ4
X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKIHsKICAgICBWZWN0
b3I8dWludDhfdD4gZGF0YTsKICAgICBkYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSgp
KTsKQEAgLTEzOSw3ICsxMTQsNyBAQCBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5
RGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFy
ZWRCdWZmZXI6OnRha2VEYXRhKCkKK1ZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjp0YWtlRGF0YSgpCiB7CiAgICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4geyB9OwpAQCAtMTU0LDEzICsxMjksMTMgQEAgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJl
ZEJ1ZmZlcjo6dGFrZURhdGEoKQogICAgIHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLVNoYXJl
ZEJ1ZmZlckRhdGFWaWV3IFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9u
KSBjb25zdAorU2hhcmVkQnVmZmVyRGF0YVZpZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Z2V0
U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdAogewogICAgIGNvbnN0IERhdGFTZWdtZW50
VmVjdG9yRW50cnkqIGVsZW1lbnQgPSBnZXRTZWdtZW50Rm9yUG9zaXRpb24ocG9zaXRpb24pOwog
ICAgIHJldHVybiB7IGVsZW1lbnQtPnNlZ21lbnQuY29weVJlZigpLCBwb3NpdGlvbiAtIGVsZW1l
bnQtPmJlZ2luUG9zaXRpb24gfTsKIH0KIAotY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dFZlY3RvckVudHJ5KiBTaGFyZWRCdWZmZXI6OmdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3Qg
cG9zaXRpb24pIGNvbnN0Citjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dFZlY3RvckVudHJ5KiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpnZXRTZWdtZW50Rm9yUG9zaXRp
b24oc2l6ZV90IHBvc2l0aW9uKSBjb25zdAogewogICAgIFJFTEVBU0VfQVNTRVJUKHBvc2l0aW9u
IDwgbV9zaXplKTsKICAgICBhdXRvIGNvbXBhcmF0b3IgPSBbXShjb25zdCBzaXplX3QmIHBvc2l0
aW9uLCBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5JiBlbnRyeSkgewpAQCAtMTcxLDcgKzE0
Niw3IEBAIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogU2hhcmVk
QnVmZmVyOjpnZXRTZWdtZW50Rm9yUG9zaXRpb24oCiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAK
LVN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKK1N0cmluZyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRl
ciBzdHJpbmdCdWlsZGVyOwogICAgIGZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7
CkBAIC0xODEsNyArMTU2LDIyIEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkg
Y29uc3QKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCi1SZWZQdHI8
QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAor
c2l6ZV90IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnNpemUoKSBjb25zdAoreworICAgIHJldHVy
biBtX3NpemU7Cit9CisKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuICFzaXplKCk7Cit9CisKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6aXNDb250aWd1b3VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250aWd1b3VzOwor
fQorCitSZWZQdHI8QXJyYXlCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCkgY29uc3QKIHsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gQXJyYXlCdWZm
ZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSks
IDEpOwogICAgIGlmICghYXJyYXlCdWZmZXIpIHsKQEAgLTIwMCw2OCArMTkwLDY1IEBAIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0
CiAgICAgcmV0dXJuIGFycmF5QnVmZmVyOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5k
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
YXBwZW5kKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNTRVJU
KCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBtX3NlZ21lbnRzLnJlc2Vy
dmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEubV9zZWdtZW50cy5zaXplKCkpOwog
ICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGRhdGEubV9zZWdtZW50cykgewotICAgICAg
ICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7bV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29w
eVJlZigpfSk7CisgICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgbV9zaXplLCBl
bGVtZW50LnNlZ21lbnQuY29weVJlZigpIH0pOwogICAgICAgICBtX3NpemUgKz0gZWxlbWVudC5z
ZWdtZW50LT5zaXplKCk7CiAgICAgfQogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgp
KTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3QgbGVuZ3RoKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNv
bWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CiAgICAg
dmVjdG9yLmFwcGVuZChkYXRhLCBsZW5ndGgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3Np
emUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKX0pOworICAgIG1fc2VnbWVu
dHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSkg
fSk7CiAgICAgbV9zaXplICs9IGxlbmd0aDsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3Rl
bnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYg
ZGF0YSkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50
KTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBl
bmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKX0pOworICAgIG1f
c2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpIH0pOwogICAgIG1fc2l6ZSArPSBkYXRhU2l6ZTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNv
bnNpc3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhcigpCit2b2lkIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3Ro
KQoreworICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwg
bGVuZ3RoKTsKK30KKwordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjbGVhcigpCiB7CiAg
ICAgbV9zaXplID0gMDsKICAgICBtX3NlZ21lbnRzLmNsZWFyKCk7CiAgICAgQVNTRVJUKGludGVy
bmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNvcHkoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNsb25lID0g
YWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcik7CiAgICAg
Y2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50cy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVs
ZW1lbnQgOiBtX3NlZ21lbnRzKQotICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRB
cHBlbmQoe2VsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0p
OworICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBlbGVtZW50LmJl
Z2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgQVNTRVJUKGNs
b25lLT5pbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsK
LX0KLQotdm9pZCBTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZv
aWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0Cit2b2lkIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0CiB7CiAgICAgYXV0byBzZWdt
ZW50cyA9IG1fc2VnbWVudHM7CiAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogc2VnbWVudHMpCiAg
ICAgICAgIGFwcGx5KFNwYW4geyBzZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVudC5zZWdt
ZW50LT5zaXplKCkgfSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0
IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6c3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNv
bnN0CiB7CiAgICAgaWYgKHByZWZpeC5lbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTI4Myw3ICsyNzAsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6c3RhcnRzV2l0aChjb25zdCBTcGFu
PGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1W
ZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
ZW5ndGgpIGNvbnN0CitWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6cmVh
ZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogewogICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhOwogICAgIGlmIChvZmZzZXQgPj0gc2l6ZSgpKQpAQCAtMzEwLDEyICsyOTcsMTIg
QEAgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXpl
X3QgbGVuZ3RoKSBjb25zdAogICAgIHJldHVybiBkYXRhOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZl
cjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdAordm9pZCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBs
ZW5ndGgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvcHlUbyhkZXN0aW5hdGlvbiwgMCwgbGVuZ3Ro
KTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6
ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVu
Z3RoKSBjb25zdAogewogICAgIEFTU0VSVChsZW5ndGggKyBvZmZzZXQgPD0gc2l6ZSgpKTsKICAg
ICBpZiAob2Zmc2V0ID49IHNpemUoKSkKQEAgLTM1MywxNCArMzQwLDEzIEBAIHZvaWQgU2hhcmVk
QnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
ZW5ndGgpIGNvbnN0CiAgICAgfQogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVu
dCgpIGNvbnN0Citib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6Omhhc09uZVNlZ21lbnQoKSBj
b25zdAogewotICAgIGF1dG8gaXQgPSBiZWdpbigpOwotICAgIHJldHVybiBpdCAhPSBlbmQoKSAm
JiArK2l0ID09IGVuZCgpOworICAgIHJldHVybiBtX3NlZ21lbnRzLnNpemUoKSA9PSAxOwogfQog
CiAjaWYgQVNTRVJUX0VOQUJMRUQKLWJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lz
dGVudCgpIGNvbnN0Citib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25z
aXN0ZW50KCkgY29uc3QKIHsKICAgICBzaXplX3QgcG9zaXRpb24gPSAwOwogICAgIGZvciAoY29u
c3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpIHsKQEAgLTM3Miw3ICszNTgsNTcgQEAgYm9v
bCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIH0KICNlbmRpZiAv
LyBBU1NFUlRfRU5BQkxFRAogCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50OjpkYXRhKCkgY29uc3QKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKCkKK3sKKyAgICBt
X2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8
RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkKK3sKKyAgICBtX3NpemUgPSBzZWdtZW50LT5zaXplKCk7
CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBXVEZNb3ZlKHNlZ21lbnQpIH0pOworICAgIG1f
Y29udGlndW91cyA9IHRydWU7Cit9CisKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIpCit7CisgICAgQVNTRVJU
KGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVmZmVyLT5p
c0VtcHR5KCkpOworICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsKKyAgICBp
ZiAoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpKQorICAgICAgICBtX3NlZ21lbnRz
LmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5
UmVmKCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworU2hhcmVkQnVmZmVyOjpT
aGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAgIDogRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQoreworICAgIG1fY29udGlndW91cyA9
IHRydWU7Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFw
cGluZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6
OlllcykgeworICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOworICAgICAgICBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUs
IG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQorICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0
YSkpKTsKKyAgICB9CisgICAgcmV0dXJuIGNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7
Cit9CisKK2NvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Cit7CisgICAg
aWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7Cit9CisKK2NvbnN0IGNoYXIqIFNo
YXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERhdGFT
ZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNp
dG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVp
bnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LApAQCAtMzkxLDEzICs0MjcsMTMgQEAgY29u
c3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiAgICAg
cmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAotYm9vbCBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QK
K2Jvb2wgRGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAogewogICAg
IHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
PihtX2ltbXV0YWJsZURhdGEpOwogfQogCiAjaWYgIVVTRShDRikKLXZvaWQgU2hhcmVkQnVmZmVy
OjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIHsKIH0KICNlbmRpZgpAQCAt
NDA3LDcgKzQ0Myw3IEBAIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpk
ZWNvZGVyKCkgY29uc3QKICAgICByZXR1cm4ge3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oZGF0YSgpKSwgc2l6ZSgpIH19OwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0
b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG90aGVy
KSBjb25zdAogewogICAgIGlmICh0aGlzID09ICZvdGhlcikKICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC00NTYsNyArNDkyLDcgQEAgYm9vbCBTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3Qg
U2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc2l6ZV90
IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAorc2l6ZV90IERhdGFTZWdt
ZW50OjpzaXplKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9y
KAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IHNpemVfdCB7IHJl
dHVybiBkYXRhLnNpemUoKTsgfSwKQEAgLTQ3NSw3ICs1MTEsNyBAQCBzaXplX3QgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlz
aXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJl
ZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmIHNlZ21lbnQs
IHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXpl
KQorU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2Vn
bWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gc2l6ZSkKICAgICA6IG1fc2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpKQogICAg
ICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQocG9zaXRpb25XaXRoaW5TZWdtZW50KQogICAgICwg
bV9zaXplKHNpemUgPyAqc2l6ZSA6IG1fc2VnbWVudC0+c2l6ZSgpIC0gcG9zaXRpb25XaXRoaW5T
ZWdtZW50KQpAQCAtNDk5LDEyICs1MzUsMTcgQEAgY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVy
RGF0YVZpZXc6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1f
cG9zaXRpb25XaXRoaW5TZWdtZW50OwogfQogCitjb25zdCBjaGFyKiBTaGFyZWRCdWZmZXJEYXRh
Vmlldzo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewotICAgIGNvbnN0IFJl
ZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OwotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92
aWRlciB7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50Owor
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewog
ICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAg
ICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CisgICAgICAg
IFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBmMjNmNWQ2OWFkMzJlZDY0MGI5NTc3
YjJlNmM0NTQ5MTgzOTM2OGFkLi45YmY3OTdjMWMxNjk5NWMxZWEyNmMzMGExNWZhMzA1YTAxMWEx
MzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVk
IDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTYy
LDE0NiArNjIsMTMzIEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKLWNsYXNz
IFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxTaGFyZWRCdWZmZXI+IHsKKy8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3Vs
ZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmpl
Y3RzLgorLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERh
dGFTZWdtZW50LgorY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8RGF0YVNlZ21lbnQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9Ci0gICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9
Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6
ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisgICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVf
dCBzaXplKCkgY29uc3Q7CiAKLSAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9v
bCB7IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmls
ZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKLQotICAgIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIHN0YXRpYyBSZWY8RGF0
YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAg
ZGF0YS5zaHJpbmtUb0ZpdCgpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2Vn
bWVudChXVEZNb3ZlKGRhdGEpKSk7CisgICAgfQogCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAg
UmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0gICAgUmV0YWluUHRyPE5T
QXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShOU0RhdGEgKik7Ci0gICAgdm9pZCBhcHBlbmQoTlNEYXRhICopOwotI2Vu
ZGlmCiAjaWYgVVNFKENGKQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgp
IGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsK
LSAgICB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+
IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLQogI2lmIFVTRShHTElC
KQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7Ci0gICAgR1Jl
ZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNl
Z21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR1NU
UkVBTUVSKQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3du
ZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdz
dE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNl
Z21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLSAgICAvLyBDYWxsaW5nIGRhdGEoKSBj
YXVzZXMgYWxsIHRoZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNvcGllZCBpbnRvIG9uZSBzZWdtZW50
IGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5LgotICAgIC8vIEl0ZXJhdGUgdGhlIHNlZ21lbnRzIHVz
aW5nIGJlZ2luKCkgYW5kIGVuZCgpIGluc3RlYWQuCi0gICAgLy8gRklYTUU6IEF1ZGl0IHRoZSBj
YWxsIHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGl0ZXJhdGlv
biBpZiBwb3NzaWJsZS4KLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29u
c3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBj
b25zdDsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVu
Z3RoKSBjb25zdDsKLQotICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNv
cHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhl
IFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KLSAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFj
dERhdGEoKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50
KFdURk1vdmUoZGF0YSkpKTsgfQogCi0gICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQg
Y29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAotICAgIC8vIEFycmF5
QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZm
ZXIuCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0
OwotCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLQotICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0KLQotICAgIHZvaWQgYXBwZW5k
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgp
IHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgp
OyB9Ci0gICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotCi0gICAgdm9pZCBjbGVh
cigpOworICAgIHN0cnVjdCBQcm92aWRlciB7CisgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4
X3QqKCk+IGRhdGE7CisgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOworICAgIH07CiAK
LSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9p
ZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZv
aWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAg
ICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CiAK
LSAgICAvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxl
IGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KLSAgICAvLyBU
byBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQu
Ci0gICAgY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0
YVNlZ21lbnQ+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVp
bnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUo
KSBjb25zdDsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5Q
dHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgogCi0gICAgICAgIHN0YXRp
YyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7Ci0gICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Ci0gICAgICAgIH0KKyAg
ICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsKIAorcHJpdmF0ZToKKyAgICBl
eHBsaWNpdCBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorICAgICAgICA6IG1f
aW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNpZiBVU0UoQ0YpCi0gICAgICAgIHN0
YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9Cisg
ICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQorICAg
ICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgogI2lmIFVT
RShHTElCKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxH
Qnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3Zl
KGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBk
YXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRp
ZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNy
ZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRh
U2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKKyAgICAgICAgOiBt
X2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKLSAgICAgICAgc3RhdGlj
IFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0
YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0K
KyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRh
dGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIGV4
cGxpY2l0IERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAgICAgIDogbV9pbW11
dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KIAotICAgICAgICBzdHJ1Y3QgUHJvdmlk
ZXIgewotICAgICAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKLSAgICAg
ICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOwotICAgICAgICB9OwotCi0gICAgICAgIHN0
YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7IH0KLQotI2lm
IFVTRShGT1VOREFUSU9OKQotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEo
KSBjb25zdDsKLSNlbmRpZgotCi0gICAgICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgp
IGNvbnN0OwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkp
IHsgfQorICAgIHN0ZDo6dmFyaWFudDxWZWN0b3I8dWludDhfdD4sCiAjaWYgVVNFKENGKQotICAg
ICAgICBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCi0gICAgICAgICAg
ICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmV0YWluUHRy
PENGRGF0YVJlZj4sCiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgRGF0YVNlZ21lbnQo
R1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdU
Rk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCiAjZW5kaWYKICNpZiBV
U0UoR1NUUkVBTUVSKQotICAgICAgICBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRC
dWZmZXI+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0
YSkpIHsgfQorICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorI2VuZGlmCisg
ICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAorICAgICAgICBQcm92aWRlcj4gbV9p
bW11dGFibGVEYXRhOworICAgIGZyaWVuZCBjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwor
I2lmICFVU0UoRk9VTkRBVElPTikKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOyAvLyBG
b3IgY3JlYXRlQ0ZEYXRhCiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9Ci0gICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIp
Ci0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9Cit9
OworCitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcik7IH0KKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQor
ICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0
YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUo
bWFwcGVkRmlsZURhdGEpKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOyB9CisgICAgc3Rh
dGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYg
dmVjdG9yKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RG
TW92ZSh2ZWN0b3IpKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7IH0KIAot
ICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAorI2lmIFVTRShGT1VOREFUSU9O
KQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJh
eSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAg
ICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKICNlbmRpZgorCiAjaWYg
VVNFKEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7CiAj
ZW5kaWYKKwogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgICAgICBSZWZQdHI8R3N0TWFwcGVk
T3duZWRCdWZmZXI+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAgICAg
ICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAotICAgICAgICAgICAgUHJvdmlkZXI+
IG1faW1tdXRhYmxlRGF0YTsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAg
ICB9OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsZW5ndGgpIGNvbnN0OworCisgICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1
dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBp
cyBzYWZlIChUaGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBW
ZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlC
dWZmZXIgYW5kIGNvcGllcyB0aGlzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0
byB0aGF0CisgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZm
ZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlC
dWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9S
VCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBp
c0VtcHR5KCkgY29uc3Q7CiAKLSAgICB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9u
PHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OwotICAgIGJvb2wgc3Rh
cnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VY
UE9SVCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwg
c2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25z
dCB1aW50OF90PiYpPiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0
aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworCisgICAgdXNpbmcg
RGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVudDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBj
b21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQKIAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAgc2l6ZV90
IGJlZ2luUG9zaXRpb247CkBAIC0yMTAsNTYgKzE5NywxNzcgQEAgcHVibGljOgogICAgIHVzaW5n
IERhdGFTZWdtZW50VmVjdG9yID0gVmVjdG9yPERhdGFTZWdtZW50VmVjdG9yRW50cnksIDE+Owog
ICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0
dXJuIG1fc2VnbWVudHMuYmVnaW4oKTsgfQogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9p
dGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmVuZCgpOyB9Ci0gICAgYm9v
bCBoYXNPbmVTZWdtZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNPbmVT
ZWdtZW50KCkgY29uc3Q7CiAKICAgICAvLyBiZWdpbiBhbmQgZW5kIHRha2UgTygxKSB0aW1lLCB0
aGlzIHRha2VzIE8obG9nKE4pKSB0aW1lLgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNv
bWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVk
QnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKIAotICAg
IFN0cmluZyB0b0hleFN0cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0
b0hleFN0cmluZygpIGNvbnN0OwogCiAgICAgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29vbigp
IGNvbnN0OwogCi0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQog
Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OwotICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdCB7IHJldHVybiAh
b3BlcmF0b3I9PShvdGhlcik7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVy
PiBtYWtlQ29udGlndW91cygpIGNvbnN0OwogCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcigpID0gZGVmYXVsdDsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWlu
dDhfdCosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBz
aXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7Ci0g
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7Citwcm90
ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKworICAgIERhdGFTZWdtZW50
VmVjdG9yIG1fc2VnbWVudHM7CisgICAgYm9vbCBtX2NvbnRpZ3VvdXMgeyBmYWxzZSB9OworCisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcigpID0gZGVm
YXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYpOwogI2lmIFVTRShDRikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKENG
RGF0YVJlZik7CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoR0J5dGVzKik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYp
OwogI2VuZGlmCisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAotICAgIHZvaWQgY29tYmluZUlu
dG9PbmVTZWdtZW50KCkgY29uc3Q7Citwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRC
dWZmZXJCdWlsZGVyOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25z
dCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFw
cGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisjaWYgVVNFKENGKQorICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisjZW5kaWYKIAotICAgIC8v
IENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0
IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgotICAgIFZlY3Rvcjx1aW50
OF90PiB0YWtlRGF0YSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKIAorICAg
IC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0
aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KKyAg
ICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKICAgICBjb25zdCBE
YXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0
aXRpb24pIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZy
b21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKLQotICAgIHNpemVfdCBtX3Np
emUgeyAwIH07Ci0gICAgbXV0YWJsZSBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOwotCiAj
aWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXNCZWVuQ29tYmluZWRJbnRv
T25lU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBpbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNv
bnN0OwogI2VuZGlmCiB9OwogCi1pbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6
ZXh0cmFjdERhdGEoKQorLy8gQSBTaGFyZWRCdWZmZXIgaXMgYSBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyIHRoYXQgYWxsb3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRh
dGEoKSBhbmQgcmVsYXRlZCBtZXRob2RzLgorY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFy
Z3MpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCisgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGVs
c2UgaWYgY29uc3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQorICAgICAgICAgICAgJiYgKHN0
ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxEYXRhU2VnbWVudD4+ICYmLi4uKSkKKyAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVm
ZmVyKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWlu
dDhfdCAqZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IGNoYXIqIGRhdGFB
c0NoYXJQdHIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBXVEY6OlBlcnNpc3RlbmNlOjpE
ZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBp
bmcgOiBib29sIHsgTm8sIFllcyB9OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
TW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMp
OworCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5T
RGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VC
Q09SRV9FWFBPUlQgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7Cisj
ZW5kaWYKKyNpZiBVU0UoR0xJQikKKyAgICBXRUJDT1JFX0VYUE9SVCBHUmVmUHRyPEdCeXRlcz4g
Y3JlYXRlR0J5dGVzKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VY
UE9SVCBTaGFyZWRCdWZmZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVh
dGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9OworCitjbGFzcyBT
aGFyZWRCdWZmZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0
byB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhcyBhbGwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAg
aWYgKCFidWZmZXIgfHwgYnVmZmVyLT5oYXNPbmVSZWYoKSkgeworICAgICAgICAgICAgbV9idWZm
ZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgYXBwZW5kKCpidWZmZXIpOworICAgIH0KKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJC
dWlsZGVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICB7CisgICAg
ICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIgYXMgYWxsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGlt
bXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCisgICAgICAgIGlmIChidWZmZXItPmhh
c09uZVJlZigpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoV1RGTW92ZShidWZm
ZXIuZ2V0KCkpKTsKKyAgICB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlcihBcmdzJiYuLi4gYXJncykKKyAgICAgICAgOiBtX2J1ZmZlcihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KSkgeyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIGFwcGVu
ZChBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAg
ICBtX2J1ZmZlci0+YXBwZW5kKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQor
CisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFpc051bGwoKTsg
fQorICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyOyB9CisgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgp
IDogdHJ1ZTsgfQorCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/
IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CisKKyAgICB2b2lkIHJlc2V0KCkgeyBtX2J1ZmZlciA9
IG51bGxwdHI7IH0KKyAgICB2b2lkIGVtcHR5KCkKKyAgICB7CisgICAgICAgIHJlc2V0KCk7Cisg
ICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgIH0KKworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1
ZmZlci0+Y29weSgpIDogRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAgICBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZSgpCisgICAgeworICAgICAgICBlbnN1cmVC
dWZmZXIoKTsKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAg
fQorCitwcml2YXRlOgorICAgIHZvaWQgZW5zdXJlQnVmZmVyKCkKKyAgICB7CisgICAgICAgIGlm
ICghbV9idWZmZXIpCisgICAgICAgICAgICBtX2J1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgIH0KKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7Cit9OworCitpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmV4dHJhY3REYXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkpCiAgICAgICAgIHJl
dHVybiB0YWtlRGF0YSgpOwpAQCAtMjY4LDE3ICszNzYsMTcgQEAgaW5saW5lIFZlY3Rvcjx1aW50
OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQg
U2hhcmVkQnVmZmVyRGF0YVZpZXcgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5T
ZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7Cisg
ICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRp
b25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVs
bG9wdCk7CiAgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZp
ZXcmLCBzaXplX3QgbmV3U2l6ZSk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKICAgICBjb25z
dCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigp
IGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0K
KyAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Q7CiAgICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAjaWYgVVNFKEZPVU5EQVRJT04pCiAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKIHByaXZh
dGU6Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsK
KyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKICAgICBjb25zdCBzaXplX3Qg
bV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fc2l6ZTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5j
cHAKaW5kZXggY2RiNmU3MDM0MDRkNDI2ZGQyMWI0NzlmYTg5YzBkYTliOGM0OWY4ZS4uOWQwNTVj
ZTI3ZDg4YzNkNjJlNWJkMWNkNDZhZDkxZjVjYzQzMWY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcApAQCAtMzYsNyArMzYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoTUhUTUwpCiAKLVNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqIGJ1
ZmZlciwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpCitTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVm
ZmVyLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcikKICAgICA6IG1faXRlcmF0b3JDdXJy
ZW50KGJ1ZmZlci0+YmVnaW4oKSkKICAgICAsIG1faXRlcmF0b3JFbmQoYnVmZmVyLT5lbmQoKSkK
ICAgICAsIG1fc2VnbWVudChtX2l0ZXJhdG9yQ3VycmVudCAhPSBtX2l0ZXJhdG9yRW5kID8gbV9p
dGVyYXRvckN1cnJlbnQtPnNlZ21lbnQtPmRhdGEoKSA6IG51bGxwdHIpCkBAIC00NCw3ICs0NCw3
IEBAIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFy
ZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgVmVjCiB7CiB9CiAKLVNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3Qg
Y2hhciogc2VwYXJhdG9yKQorU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgY2hhciogc2Vw
YXJhdG9yKQogICAgIDogbV9pdGVyYXRvckN1cnJlbnQoYnVmZmVyLT5iZWdpbigpKQogICAgICwg
bV9pdGVyYXRvckVuZChidWZmZXItPmVuZCgpKQogICAgICwgbV9zZWdtZW50KG1faXRlcmF0b3JD
dXJyZW50ICE9IG1faXRlcmF0b3JFbmQgPyBtX2l0ZXJhdG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0
YSgpIDogbnVsbHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXJDaHVua1JlYWRlci5oCmluZGV4IDVkNGU2ZmVlNTgyYzY2MTZmZDA3ZTM5OTRmZjc1YzhmMDdh
MmZjZTEuLjFjNjQwOGQ0YzczNmExYzRhNDVjZWU3YjNmNjk2NTdiYzlhMjYxNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaApAQCAt
NDEsOCArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JU
IFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIHsKIHB1YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlcihTaGFyZWRCdWZmZXIqLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcik7Ci0g
ICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiwgY29uc3QgY2hhciogc2Vw
YXJhdG9yKTsKKyAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpOworICAgIFNoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBjaGFyKiBzZXBhcmF0b3Ip
OwogCiAgICAgdm9pZCBzZXRTZXBhcmF0b3IoY29uc3QgVmVjdG9yPGNoYXI+Jik7CiAgICAgdm9p
ZCBzZXRTZXBhcmF0b3IoY29uc3QgY2hhciopOwpAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAg
ICAgc2l6ZV90IHBlZWsoVmVjdG9yPHVpbnQ4X3Q+Jiwgc2l6ZV90KTsKIAogcHJpdmF0ZToKLSAg
ICBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJh
dG9yQ3VycmVudDsKLSAgICBjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpj
b25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yRW5kOworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yQ3VycmVudDsKKyAg
ICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3Rf
aXRlcmF0b3IgbV9pdGVyYXRvckVuZDsKICAgICBjb25zdCB1aW50OF90KiBtX3NlZ21lbnQgeyBu
dWxscHRyIH07CiAgICAgc2l6ZV90IG1fc2VnbWVudEluZGV4IHsgMCB9OwogICAgIFZlY3Rvcjxj
aGFyPiBtX3NlcGFyYXRvciB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0
YXRpY1Bhc3RlYm9hcmQuY3BwCmluZGV4IGIyZDdhNTUwZDQ2MGU5NGNkMzE1MTM0YTMxOTViY2Q5
MWM3Yjc4OTQuLmE0YjRiYjEwNGI0ZDg0MDE1YjhhYTViNTNlN2RmYTc4OGNlZDI1ZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCkBAIC03Myw3ICs3
Myw3IEBAIHZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIG1fY3VzdG9tRGF0YS53cml0ZVN0cmluZyh0
eXBlLCB2YWx1ZSk7CiB9CiAKLXZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVEYXRhKGNvbnN0
IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBTdGF0aWNQYXN0
ZWJvYXJkOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIG1fbm9uRGVmYXVsdERhdGFUeXBlcy5hZGQodHlwZSk7
CiAgICAgbV9jdXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAppbmRleCBjMDliNmRlMzFmMmVk
ZWJlMDE4OGRjOWM0NjZhMjcxZTFiOGI5ZTE0Li5lZGQ3MTM2MjNmMDZkMjJiMzhlODMyYTI4Mzdm
ZTY2OTk5ZGZkNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQ
YXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2Fy
ZC5oCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgU3RhdGlj
UGFzdGVib2FyZCBmaW5hbCA6IHB1YmxpYyBQYXN0ZWJvYXJkIHsKIHB1YmxpYzoKQEAgLTUyLDcg
KzUyLDcgQEAgcHVibGljOgogICAgIFN0cmluZyByZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0
IFN0cmluZyYgdHlwZSkgZmluYWw7CiAKICAgICB2b2lkIHdyaXRlU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKSBmaW5hbDsKLSAgICB2b2lkIHdyaXRlRGF0YShj
b25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CisgICAgdm9pZCB3
cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKTsKICAgICB2b2lkIHdyaXRlU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKTsKICAgICB2b2lkIGNsZWFyKCkgZmluYWw7CiAgICAg
dm9pZCBjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKaW5kZXggNjg3OTU5MDBjNWFkZjljYzkw
NDVlMGVhYmIyMmIxOGZhNjY5NjMxNC4uMWQ2NWJjNDAzYWQ4NTI0M2M2NzI1ZTcwNDQ4ZDZjZGFk
Y2NjY2UxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxh
eWluZ0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5n
SW5mby5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBOb3dQ
bGF5aW5nSW5mb0FydHdvcmsgewogICAgIFN0cmluZyBzcmM7CiAgICAgU3RyaW5nIG1pbWVUeXBl
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IE5vd1BsYXlpbmdJbmZvQXJ0d29yayYgb3RoZXIpIGNvbnN0CiAgICAgewpAQCAtNjcsNyArNjcs
NyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgc3RkOjpvcHRpb25hbDxOb3dQbGF5
aW5nSW5mb0FydHdvcms+IE5vd1BsYXlpbmdJbgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWlt
ZVR5cGUpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
aW1hZ2VEYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbWFnZURhdGEpKQogICAgICAgICByZXR1cm4geyB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRp
b0ZpbGVSZWFkZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKaW5kZXggZThiMTliZjM0ZWJhMjNiODU3MjA3YmU4
OGNlMWI0NWJmOGYyY2NjMy4uZjMyMTQyOTUxYjE3OTk2ZTZjZTE2NzU2MzE2YmZkNDczZmFhNGVk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9G
aWxlUmVhZGVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIGNsYXNzIEF1
ZGlvRmlsZVJlYWRlcldlYk1EYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAog
cHVibGljOgotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAg
IFJlZjxBdWRpb1RyYWNrUHJpdmF0ZVdlYk0+IG1fdHJhY2s7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYS5tbQppbmRleCBiYjc4OGFmYTFlOTFmOWE0ZDNhYjM2ZTJhMGMwODEyYzk0
ZTE4NzBlLi43ZjA0OTYwYzU5NjViNjI1MWI5MWI5YTU2N2U1MTA4OWI1NzE5ZjA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5n
QXBwbGljYXRpb24KICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01S
TWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0VsYXBzZWRUaW1lLCBjZkN1cnJlbnRUaW1lLmdldCgp
KTsKICAgICB9CiAgICAgaWYgKG5vd1BsYXlpbmdJbmZvLmFydHdvcmsgJiYgbm93UGxheWluZ0lu
Zm8uYXJ0d29yay0+aW1hZ2VEYXRhKSB7Ci0gICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxh
eWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0
byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShp
bmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEsIG5zQXJ0
d29yay5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtN
Uk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrTUlNRVR5cGUsIG5vd1BsYXlpbmdJbmZv
LmFydHdvcmstPm1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZv
QXJ0d29ya0lkZW50aWZpZXIsIFN0cmluZzo6bnVtYmVyKG5vd1BsYXlpbmdJbmZvLmFydHdvcmst
PnNyYy5oYXNoKCkpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCmluZGV4IDZiNjYyMTdmZjE2MWRlMzc0ZjFj
ZTMxZDVkMzQ2MzQwYmIyZmNiOTEuLmNjOWE2NzU1OWZjY2I5ZDVkMzAzNzRmODdiNTkwNWU3OTgz
M2YxN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZl
ckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCiB7CiAgICAgYXBwZW5kKGRh
dGEpOwogfQpAQCAtNTUsMTIgKzU1LDEyIEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIH0KICNlbmRpZgogCi1SZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFSZWYgZGF0YSkKK1JlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhUmVmIGRhdGEp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGRhdGEpKTsKIH0KIAot
dm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKK3ZvaWQg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAog
ewogICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBtX3NlZ21lbnRzKSB7CiAgICAgICAgIGlm
IChlbnRyeS5zZWdtZW50LT5oYXNPbmVSZWYoKSkgewpAQCAtNzAsOSArNzAsOSBAQCB2b2lkIFNo
YXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogICAgIH0KIH0KIAot
dm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKK3ZvaWQgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCghbV9o
YXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMp
OwogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERh
dGFTZWdtZW50OjpjcmVhdGUoZGF0YSl9KTsKICAgICAgICAgbV9zaXplICs9IENGRGF0YUdldExl
bmd0aChkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCmluZGV4IDA3OTdkZmJlOGQwMThi
ZTYzNjE3NDRjNThmODkyZGQ1NmVkNjg5YzUuLmNiZTg3NzFhNDVkODYyY2I1YWIwNWVjYTM5OTky
N2UwNzgzOGY1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaApAQCAtNTEsNyArNTEsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlk
ZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5k
bGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBp
c1JlcXVpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9O
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCmluZGV4IDQyOTBkYjEyOGQw
MDBhNDBlZWY3MGZkMjk0MWQ2MzQ0OTA0NmRlMDMuLjJlZjI3MDFmZTY3OGJmOWI5MmRiMjEyYmJl
YTVjOTE1YTNmYzNhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCkBAIC0xNzUsNyAr
MTc1LDcgQEAgdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6ZmluaXNoZWRBZGRp
bmdEYXRhKCkKICAgICBzZW1hcGhvcmUud2FpdCgpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBO
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKK1Jl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6
cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkpOwog
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5nZXQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRy
b2xzQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50
YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaAppbmRleCAwNjhjZGNiMzgzZjQyMzY1YWMzMjY0ZTIy
OWE2ZDYzYmMyYjRhYmQ2Li42NzlhZTkzMjk1MTdlMWYzOTQzYmE1NzYyYWM4ZjU2ZTg2MGM4YzI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRy
b2xzQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92
ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0gICAgUmVm
PFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRl
OwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRy
b2xzQ29udGVudEZpbHRlci5tbQppbmRleCBiNDYxZjk3NTM2ZGUzYTE1ODEzYTU4MjdiODY3MTM4
Yjk2ZDRmMzhjLi4xYzk2MDQ3MTZiNDI2OTNkNWU0NmMyZTIzZTk0MWRhMDBjODNlNGRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRh
bENvbnRyb2xzQ29udGVudEZpbHRlci5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgUGFyZW50
YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmZpbmlzaGVkQWRkaW5nRGF0YSgpCiAgICAgdXBkYXRl
RmlsdGVyU3RhdGUoKTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gUGFyZW50YWxDb250cm9sc0Nv
bnRlbnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgpIGNvbnN0CitSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGRpZEJsb2NrRGF0YSgpKTsKICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUobV9yZXBsYWNlbWVudERhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCmluZGV4IDZmMjhlODI0MzYw
Y2NkMzA4NmMwMzE4ZmFlNDA5OGYxZWRlMjhlMjUuLmI4MTcwODE3Y2VjNTllMjJkM2MwZTlhNzhm
MTQ2YzAzM2U0YzE2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1Bhc3RlYm9hcmRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Q
YXN0ZWJvYXJkQ29jb2EubW0KQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIE5TQml0bWFwSW1hZ2VG
aWxlVHlwZSBiaXRtYXBQTkdGaWxlVHlwZSgpCiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQog
Ci0vLyBNYWtpbmcgdGhpcyBub24taW5saW5lIHNvIHRoYXQgV2ViS2l0IDIncyBkZWNvZGluZyBk
b2Vzbid0IGhhdmUgdG8gaW5jbHVkZSBTaGFyZWRCdWZmZXIuaC4KKy8vIE1ha2luZyB0aGlzIG5v
bi1pbmxpbmUgc28gdGhhdCBXZWJLaXQgMidzIGRlY29kaW5nIGRvZXNuJ3QgaGF2ZSB0byBpbmNs
dWRlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuaC4KIFBhc3RlYm9hcmRXZWJDb250ZW50OjpQYXN0
ZWJvYXJkV2ViQ29udGVudCgpID0gZGVmYXVsdDsKIFBhc3RlYm9hcmRXZWJDb250ZW50Ojp+UGFz
dGVib2FyZFdlYkNvbnRlbnQoKSA9IGRlZmF1bHQ7CiAKQEAgLTIxMSw5ICsyMTEsOSBAQCBWZWN0
b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKIH0K
IAogI2lmIFBMQVRGT1JNKE1BQykKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElG
RlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKK3N0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjb252ZXJ0VElGRlRvUE5HKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCiB7
Ci0gICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0
V2l0aERhdGE6IHRpZmZCdWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIGlt
YWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlm
ZkJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIE5T
RGF0YSAqcG5nRGF0YSA9IFtpbWFnZSByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpiaXRtYXBQTkdG
aWxlVHlwZSgpIHByb3BlcnRpZXM6QHsgfV07CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHBuZ0RhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvU2hhcmVkQnVmZmVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
aGFyZWRCdWZmZXJDb2NvYS5tbQppbmRleCA5ZWUwYzBiNTVkNzk0YzJiNjkwNTdiYmYzNjRhYmYx
ODM4YTliODUwLi4yNDBhMzY3YmUyYWM3NjViNzhiZGU3MTAwNDY2NjRiY2IxY2U1NDczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5t
bQpAQCAtMzUsMTEgKzM1LDExIEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4K
IAogQGludGVyZmFjZSBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSA6IE5TRGF0YQotLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNp
emU6KE5TVUludGVnZXIpc2l6ZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50
Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUlu
dGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOwogQGVuZAogCiBAaW1wbGVtZW50
YXRpb24gV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgewotICAgIFJlZlB0cjxjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CisgICAgUmVmUHRyPGNv
bnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50PiBfZGF0YVNlZ21lbnQ7CiAgICAgTlNVSW50ZWdlciBf
cG9zaXRpb247CiAgICAgTlNVSW50ZWdlciBfc2l6ZTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgLSAo
dm9pZClkZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi0tIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNV
SW50ZWdlcilzaXplCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3Qg
V2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBv
c2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIg
aW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtODgsMTIgKzg4LDEyIEBAIEBlbmQKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShOU0RhdGEgKmRhdGEpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnJpZGdlX2Nhc3QoZGF0YSkpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGJyaWRnZV9jYXN0KGRhdGEpKSk7CiB9
CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQordm9pZCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQogewogICAgIHJldHVybiBhcHBl
bmQoYnJpZGdlX2Nhc3QoZGF0YSkpOwogfQpAQCAtMTA1LDEwICsxMDUsOCBAQCBSZXRhaW5QdHI8
TlNEYXRhPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiAKIFJldGFpblB0cjxD
RkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBjb21i
aW5lSW50b09uZVNlZ21lbnQoKTsKICAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQogICAgICAg
ICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwotICAg
IEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3Qo
bV9zZWdtZW50c1swXS5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSk7CiB9CiAKQEAgLTExOSwxNCAr
MTE3LDE0IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLVJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkg
Y29uc3QKK1JldGFpblB0cjxOU0FycmF5PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGVO
U0RhdGFBcnJheSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkobV9zZWdtZW50
cywgW10gKGF1dG8mIHNlZ21lbnQpIHsKICAgICAgICAgcmV0dXJuIHNlZ21lbnQuc2VnbWVudC0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgfSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNEYXRh
PiBEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRvcHRO
UyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGFsbG9jXSBpbml0V2l0aERhdGFTZWdtZW50Oip0
aGlzIHBvc2l0aW9uOjAgc2l6ZTpzaXplKCldKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCmluZGV4IGZiYzI4M2ZiYzMz
NjliZjgyN2UzMTY5OTRjNGM5NGUwNjM2M2NiODEuLjJkZTQxOTM0ZGExOTg3OWQ3NWMwZGY4YTg5
ZTY0ZTU5OWMyOWFlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBMb2dnZXI7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvbjsKIHN0cnVjdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uOwogCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIENETUlu
c3RhbmNlQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50PiB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNSW5zdGFuY2VDbGllbnQoKSA9IGRlZmF1bHQ7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChj
b25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIC8vIEphdmFTY3JpcHQncyBo
YW5kbGUgdG8gYSBDRE1JbnN0YW5jZSwgbXVzdCBiZSB1c2VkIGZyb20gdGhlCkBAIC05OCw3ICs5
OCw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVXaXRo
Q29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0
aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNr
JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3ND
YWxsYmFjayYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVT
ZXNzaW9uKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaAppbmRleCAzN2NkMDdjN2JmMmRjNzVl
NDFmZDVjNmM3ZGVjZjQzZTEwMzllMTE0Li5kMjU5MjI1YmE5ZTAyYTY0ZDBjZWNkNjE1MWZkZjkz
ZjRmMjQ2NmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaApAQCAtNDMsMTYgKzQzLDE2IEBAIGNs
YXNzIExvZ2dlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDRE1JbnN0YW5jZVNlc3Np
b25DbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50
PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50KCkgPSBk
ZWZhdWx0OwogCiAgICAgdXNpbmcgS2V5U3RhdHVzID0gQ0RNS2V5U3RhdHVzOwotICAgIHVzaW5n
IEtleVN0YXR1c1ZlY3RvciA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIEtl
eVN0YXR1cz4+OworICAgIHVzaW5nIEtleVN0YXR1c1ZlY3RvciA9IFZlY3RvcjxzdGQ6OnBhaXI8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBLZXlTdGF0dXM+PjsKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVz
c2FnZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB1c2luZyBQbGF0
Zm9ybURpc3BsYXlJRCA9IHVpbnQzMl90OwogICAgIHZpcnR1YWwgUGxhdGZvcm1EaXNwbGF5SUQg
ZGlzcGxheUlEKCkgPSAwOwpAQCAtNzgsMTMgKzc4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgU3Vj
Y2VlZGVkLAogICAgIH07CiAKLSAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgU3VjY2Vzc1ZhbHVlIHN1Y2Nl
ZWRlZCk+OwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRh
LCBMaWNlbnNlQ2FsbGJhY2smJikgPSAwOworICAgIHVzaW5nIExpY2Vuc2VDYWxsYmFjayA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwg
U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+OworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpID0gMDsKIAog
ICAgIHVzaW5nIEtleVN0YXR1c1ZlY3RvciA9IENETUluc3RhbmNlU2Vzc2lvbkNsaWVudDo6S2V5
U3RhdHVzVmVjdG9yOwotICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjpwYWlyPE1lc3Nh
Z2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAgIHVzaW5nIExpY2Vuc2VV
cGRhdGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzZXNzaW9uV2FzQ2xv
c2VkLCBzdGQ6Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgc3RkOjpv
cHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIHN0ZDo6b3B0aW9uYWw8TWVzc2Fn
ZT4mJiBtZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBM
aWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vu
c2VVcGRhdGVDYWxsYmFjayYmKSA9IDA7CiAKICAgICBlbnVtIGNsYXNzIFNlc3Npb25Mb2FkRmFp
bHVyZSA6IHVpbnQ4X3QgewogICAgICAgICBOb25lLApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBDbG9zZVNlc3Npb25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT47CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgPSAwOwogCi0gICAgdXNpbmcgUmVtb3ZlU2Vz
c2lvbkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9y
JiYsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYsIFN1Y2Nlc3NWYWx1ZSk+Owor
ICAgIHVzaW5nIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEtleVN0YXR1c1ZlY3RvciYmLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4mJiwgU3VjY2Vzc1ZhbHVlKT47CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVNlc3Np
b25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lv
bkRhdGFDYWxsYmFjayYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVSZWNvcmRPZktl
eVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKaW5kZXggY2M2ZGM3ZjE0
MGNkNjdkMmI3Yjg0ZjZhYjJjMjg0MzE2ZGZkZGNjZi4uNTJhNjE0OGM4M2NkNTM5M2M4Zjg3NGVk
ODVhZDhiZjI3ZTViZTUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaApAQCAtNzMsOCArNzMsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25z
dCBTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0
IFN0cmluZyYpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCmluZGV4IGYyMThmOTc5MDRm
YmJhNDlmMWViZGY0OGUyMDVmZTczZGZhZmI2NDguLjRiYTc1YmYwMGQ5ZjcxM2I1YWZiYmE3OTM0
MDE5NzE2Y2Q4ZjAzODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCBDRE1JbnN0YW5jZVNl
c3Npb246OktleVN0YXR1c1ZlY3RvciBLZXlTdG9yZTo6Y29udmVydFRvSlNLZXlTdGF0dXNWZWN0
b3IoKSBjb25zdAogICAgIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIGtleVN0
YXR1c1ZlY3RvcjsKICAgICBrZXlTdGF0dXNWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShu
dW1LZXlzKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYga2V5IDogbV9rZXlzKQotICAgICAgICBr
ZXlTdGF0dXNWZWN0b3IudW5jaGVja2VkQXBwZW5kKHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVy
PiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXM+IHsga2V5LT5pZEFzU2hhcmVkQnVmZmVy
KCksIGtleS0+c3RhdHVzKCkgfSk7CisgICAgICAgIGtleVN0YXR1c1ZlY3Rvci51bmNoZWNrZWRB
cHBlbmQoc3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgQ0RNSW5zdGFuY2VT
ZXNzaW9uOjpLZXlTdGF0dXM+IHsga2V5LT5pZEFzU2hhcmVkQnVmZmVyKCksIGtleS0+c3RhdHVz
KCkgfSk7CiAgICAgcmV0dXJuIGtleVN0YXR1c1ZlY3RvcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKaW5kZXggYTU4NGI2Y2Qy
NjZiMDk4MDkwMjU0ZDdkY2JkZGJmNjBkOTMzMWZiYi4uZTFlMDk4YTFkNWY1ZmZjNjVjMmE0OGZh
NDBhYTk3MmZlODllMWUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1Qcm94eS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEtleUhhbmRsZShzdGF0dXMsIFdURk1vdmUoa2V5
SUQpLCBXVEZNb3ZlKGtleUhhbmRsZVZhbHVlKSkpOwogICAgIH0KLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBpZEFzU2hhcmVkQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUobV9pZC5kYXRhKCksIG1faWQuc2l6ZSgpKTsgfQorICAgIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBpZEFzU2hhcmVkQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUobV9pZC5kYXRhKCksIG1faWQuc2l6ZSgpKTsgfQogCiAgICAgYm9vbCB0YWtlVmFsdWVJ
ZkRpZmZlcmVudChLZXlIYW5kbGVWYWx1ZVZhcmlhbnQmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCmluZGV4
IDViZWJjYjQ5YWE4ZWI5YTJiYjA3MTFlYWUwODBmMzc3ZTIyYjk4MzQuLmZjYTZmMjM4OGE1NmE2
YTFjNzI0NzBlNWE0NmZkZDI4ZjA3Mzc1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcApAQCAtMzgsNyArMzgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBDRE1VdGlsaXRpZXMgewogCi1S
ZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCitSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEZhaWwgb24gbGFyZ2UgYnVmZmVy
cyB3aG9zZSBzaXplIGRvZXNuJ3QgZml0IGludG8gYSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlci4K
ICAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci5zaXplKCk7CkBAIC00Niw3ICs0Niw3IEBAIFJlZlB0
cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNv
bnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAg
U3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkg
fTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZh
bHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmgKaW5kZXggNzRm
NTE1YjBiZDJhODcxNjhlZWYyNGIxOGY5NWRlYWJlZTgyOGU2Yy4uZmNmNWJkZGE3YzU5N2QzYzNh
YzM0OWVlMTc4OWU0YWQ2ZTBjOTU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmgKQEAgLTM1LDExICszNSwxMSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBDRE1VdGlsaXRpZXMgewogCi1SZWZQdHI8
SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJik7CitSZWZQ
dHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpOwogCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggZGQzNDU3
YmZkZThjOTIxODc3ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMzFhOWZkZmEwMmQ2ZDAwY2EyNjE4
MjUyZGVkOTM1MzEzZGM1OGFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAt
MTMwLDcgKzEzMCw3IEBAIHN0YXRpYyBib29sIHBhcnNlTGljZW5zZVJlbGVhc2VBY2tub3dsZWRn
ZW1lbnRGb3JtYXQoY29uc3QgSlNPTjo6T2JqZWN0JiByb290KQogLy8gXTsKIAogLy8gVGhpcyBm
dW5jdGlvbiBleHRyYWN0cyB0aGUgS2V5SWRzIGNvdW50IGFuZCB0aGUgbG9jYXRpb24gb2YgdGhl
IGZpcnN0IEtleUlkIGluIGluaXREYXRhIGJ1ZmZlci4KLXN0YXRpYyBzdGQ6OnBhaXI8dW5zaWdu
ZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNp
Z25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVu
c2lnbmVkPiBrZXlJZHNNYXAoMCwgMCk7CiAKQEAgLTEzOCw3ICsxMzgsOCBAQCBzdGF0aWMgc3Rk
OjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJ
bml0RGF0YShjb25zdAogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6
ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1
cm4ga2V5SWRzTWFwOwogCi0gICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAg
YXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogICAgIHVuc2lnbmVkIGlu
aXREYXRhU2l6ZSA9IGluaXREYXRhLnNpemUoKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAg
ICAgdW5zaWduZWQgcHNzaFNpemUgPSAwOwpAQCAtMTg4LDE1ICsxODksMTUgQEAgc3RhdGljIHN0
ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5j
SW5pdERhdGEoY29uc3QKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgdGhlIGluaXRE
YXRhIHNoYXJlZEJ1ZmZlciBpcyBhIHZhbGlkIENFTkMgaW5pdERhdGEuCi1zdGF0aWMgYm9vbCBp
c0NlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGljIGJvb2wg
aXNDZW5jSW5pdERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7
CiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtl
eWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgcmV0dXJuICgoa2V5
SWRzTWFwLmZpcnN0KSAmJiAoa2V5SWRzTWFwLnNlY29uZCkpOwogfQogCi1zdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZXh0cmFj
dEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5p
dERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIAogICAgIHN0ZDo6cGFp
cjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCA9IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZy
b21DZW5jSW5pdERhdGEoaW5pdERhdGEpOwogICAgIHVuc2lnbmVkIGtleUlkQ291bnQgPSBrZXlJ
ZHNNYXAuZmlyc3Q7CkBAIC0yMDQsOSArMjA1LDEwIEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRE
CiAKICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIENFTkMgaW5pdERhdGEuCiAg
ICAgaWYgKCFrZXlJZENvdW50IHx8ICFpbmRleCkKLSAgICAgICAgcmV0dXJuIGtleUlkczsKKyAg
ICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEu
ZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAK
ICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJ
ZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTIyNCwxNyArMjI2LDE3IEBAIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGluaXRECiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RG
TW92ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNP
TlN0cmluZygpLnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpz
b25EYXRhLmxlbmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQo
anNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50
YWtlKCk7CiB9CiAKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2Vi
TUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitzdGF0aWMgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
a2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGtleUlkczsKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgV2ViTSBpbml0
RGF0YS4KICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIGtleUlk
czsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKICAgICBhdXRvIG9iamVjdCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFycmF5
OjpjcmVhdGUoKTsKQEAgLTI0NSwxMiArMjQ3LDEyIEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERh
CiAgICAgLy8gVGhlIGZvcm1hdCBpcyBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvbGxv
d2luZyBtZW1iZXJzOgogICAgIC8vICJraWRzIgogICAgIC8vIEFuIGFycmF5IG9mIGtleSBJRHMu
IEVhY2ggZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMgdGhlIGJhc2U2NHVybCBlbmNvZGluZyBvZiB0
aGUgb2N0ZXQgc2VxdWVuY2UgY29udGFpbmluZyB0aGUga2V5IElEIHZhbHVlLgotICAgIGtleUlk
c0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLmRhdGEo
KSwgaW5pdERhdGEuc2l6ZSgpKSk7CisgICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0
VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0
RGF0YS5zaXplKCkpKTsKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtl
eUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5n
KCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEu
bGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0
YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsK
IH0KIAogQ0RNRmFjdG9yeUNsZWFyS2V5JiBDRE1GYWN0b3J5Q2xlYXJLZXk6OnNpbmdsZXRvbigp
CkBAIC0zODgsNyArMzkwLDcgQEAgYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzU2Vz
c2lvbnMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZhdGVDbGVh
cktleTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29sIENETVByaXZhdGVDbGVhcktl
eTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewogICAgIC8vIFZhbGlk
YXRlIHRoZSBpbml0RGF0YSBidWZmZXIgYXMgYW4gSlNPTiBvYmplY3QgaW4ga2V5aWRzIGNhc2Uu
CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgImtl
eWlkcyIpICYmIENETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KGluaXREYXRhKSkKQEAgLTQw
NSw3ICs0MDcsNyBAQCBib29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlQ2xlYXJLZXk6OnNhbml0aXplUmVz
cG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlQ2xlYXJLZXk6OnNhbml0aXplUmVzcG9uc2UoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgLy8gVmFs
aWRhdGUgdGhlIHJlc3BvbnNlIGJ1ZmZlciBhcyBhbiBKU09OIG9iamVjdC4KICAgICBpZiAoIUNE
TVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KHJlc3BvbnNlKSkKQEAgLTQzMSw3ICs0MzMsNyBA
QCB2b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihj
b25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cgogICAgIGNhbGxiYWNrKHN1Y2NlZWRlZCk7CiB9CiAK
LXZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNl
Q2xlYXJLZXk6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICAvLyBSZWplY3Qgc2V0dGlu
ZyBhbnkgc2VydmVyIGNlcnRpZmljYXRlLgogICAgIGNhbGxiYWNrKEZhaWxlZCk7CkBAIC00NTMs
NyArNDU1LDcgQEAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gQ0RNSW5zdGFuY2VDbGVhcktl
eTo6Y3JlYXRlU2Vzc2lvbigpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDRE1JbnN0YW5jZVNl
c3Npb25DbGVhcktleSgqdGhpcykpOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFy
S2V5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKICAgICBzdGF0aWMgdWludDMyX3Qgc19zZXNzaW9uSWRWYWx1ZSA9IDA7CiAgICAgKytzX3Nl
c3Npb25JZFZhbHVlOwpAQCAtNDc1LDcgKzQ3Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
Q2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBp
CiAgICAgICAgIH0pOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
cmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogI2lmIExPR19E
SVNBQkxFRAogICAgIC8vIFdlIG9ubHkgdXNlIHRoZSBzZXNpb24gSUQgZm9yIGRlYnVnIGxvZ2dp
bmcuIFRoZSB2ZXJib3NlIHByZXByb2Nlc3NvciBjaGVja3MgYXJlIGJlY2F1c2UKQEAgLTU2Niw3
ICs1NjgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZW1vdmVTZXNzaW9u
RGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZQogICAgIEFTU0VSVChzZXNzaW9uSWQg
PT0gbV9zZXNzaW9uSUQpOwogCiAgICAgYXV0byBkaXNwYXRjaENhbGxiYWNrID0KLSAgICAgICAg
W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sICZjYWxsYmFja10oS2V5U3RhdHVzVmVjdG9y
JiYga2V5U3RhdHVzVmVjdG9yLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIG1l
c3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZXNzKSB7CisgICAgICAgIFt3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9LCAmY2FsbGJhY2tdKEtleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c1ZlY3Rv
ciwgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYgbWVzc2FnZSwg
U3VjY2Vzc1ZhbHVlIHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoCiAg
ICAgICAgICAgICAgICAgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp3ZWFrVGhpcyB9LCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCBrZXlTdGF0dXNWZWN0b3IgPSBXVEZNb3ZlKGtleVN0YXR1
c1ZlY3RvciksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZXNzXSgpIG11dGFibGUg
ewogICAgICAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAtNTc5LDcgKzU4MSw3IEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlCiAgICAgLy8gQ29uc3RydWN0IHRoZSBLZXlTdGF0dXNW
ZWN0b3Igb2JqZWN0LCByZXByZXNlbnRpbmcgcmVsZWFzZWQga2V5cywgYW5kIHRoZSBtZXNzYWdl
IGluIHRoZQogICAgIC8vICdsaWNlbnNlIHJlbGVhc2UnIGZvcm1hdC4KICAgICBLZXlTdGF0dXNW
ZWN0b3Iga2V5U3RhdHVzVmVjdG9yID0gbV9rZXlTdG9yZS5hbGxLZXlzQXMoQ0RNSW5zdGFuY2VT
ZXNzaW9uOjpLZXlTdGF0dXM6OlJlbGVhc2VkKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
ZXNzYWdlOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlOwogICAg
IHsKICAgICAgICAgLy8gQ29uc3RydWN0IEpTT04gdGhhdCByZXByZXNlbnRzIHRoZSAnbGljZW5z
ZSByZWxlYXNlJyBmb3JtYXQsIGNyZWF0aW5nIGEgJ2tpZHMnIGFycmF5CiAgICAgICAgIC8vIG9m
IGJhc2U2NFVSTC1lbmNvZGVkIGtleSBJRHMgZm9yIGFsbCBrZXlzIHRoYXQgd2VyZSBhc3NvY2lh
dGVkIHdpdGggdGhpcyBzZXNzaW9uLgpAQCAtNTkzLDE0ICs1OTUsMTQgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIExpY2UKICAgICAgICAgICAgIHJvb3RPYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RG
TW92ZShhcnJheSkpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gQ29weSB0aGUgSlNPTiBkYXRh
IGludG8gYSBTaGFyZWRCdWZmZXIgb2JqZWN0LgorICAgICAgICAvLyBDb3B5IHRoZSBKU09OIGRh
dGEgaW50byBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgb2JqZWN0LgogICAgICAgICBTdHJpbmcg
bWVzc2FnZVN0cmluZyA9IHJvb3RPYmplY3QtPnRvSlNPTlN0cmluZygpOwogICAgICAgICBDU3Ry
aW5nIG1lc3NhZ2VDU3RyaW5nID0gbWVzc2FnZVN0cmluZy51dGY4KCk7CiAgICAgICAgIG1lc3Nh
Z2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtZXNzYWdlQ1N0cmluZy5kYXRhKCksIG1lc3NhZ2VD
U3RyaW5nLmxlbmd0aCgpKTsKICAgICB9CiAKICAgICBtX2tleVN0b3JlLnVucmVmQWxsS2V5cygp
OwotICAgIGRpc3BhdGNoQ2FsbGJhY2soV1RGTW92ZShrZXlTdGF0dXNWZWN0b3IpLCBSZWY8U2hh
cmVkQnVmZmVyPigqbWVzc2FnZSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKKyAgICBkaXNw
YXRjaENhbGxiYWNrKFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+KCptZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwogfQogCiB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3Qg
U3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCmluZGV4IDljMDc0N2RjMWJkOGU2N2Yz
YmE4NjRkOWI4MTEzMzc2MjVjOGE2NzkuLjllMjdmZTkxMmM0ZGEwNjdmYjI2Y2FmYmM3ZjZhNjUx
ZGE0NzUyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaApAQCAtODYsOCArODYsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwogICAgIGJvb2wgc3Vw
cG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRz
U2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29u
c3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5p
dGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIH07CiAKQEAgLTk5LDcg
Kzk5LDcgQEAgcHVibGljOgogICAgIC8vIENETUluc3RhbmNlCiAgICAgSW1wbGVtZW50YXRpb25U
eXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0
aW9uVHlwZTo6Q2xlYXJLZXk7IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlv
bihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50
aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwot
ICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vz
c0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2
b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VT
ZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CkBAIC0xMDksOCArMTA5LDggQEAgY2xhc3Mg
Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkgewogcHVibGljOgogICAgIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KENETUlu
c3RhbmNlQ2xlYXJLZXkmIHBhcmVudCkKICAgICAgICAgOiBDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eShwYXJlbnQpIHsgfQotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwg
TGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNh
bGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vz
c2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Np
b25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcm
LCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25E
YXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNr
JiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRW5jb2RlckdlbmVyaWMuaAppbmRleCBlOTY4ZTk4NWM3ZWVjZWZlNDM1YWE5MjA1YzQ0ZGQz
NWFlZDhlMGQwLi5lY2Y0ZTA4YzliOTkxYWRlMjczYmQ0NGM2MGJiMTVmZTAxNjM1YjE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVy
aWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuaApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEtl
eWVkRW5jb2RlckdlbmVyaWMgZmluYWwgOiBwdWJsaWMgS2V5ZWRFbmNvZGVyIHsKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xp
Yi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3Bw
CmluZGV4IDhhOGMxMGI3MDI0Y2ZlMDM4ZTlmYTdiNzE1YmUyNjg4OWZjMDVlMjguLjkzN2QxZmI2
ZjBjOGQ3YjUxZjE4ZmYxNTU2MGIzYjk0YTc0ZjYxYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAtMjYsMTYgKzI2LDE2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoR0J5
dGVzKiBieXRlcykKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIoR0J5dGVzKiBieXRlcykKIHsKICAgICBBU1NFUlQoYnl0ZXMpOwogICAgIG1fc2l6ZSA9IGdf
Ynl0ZXNfZ2V0X3NpemUoYnl0ZXMpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNl
Z21lbnQ6OmNyZWF0ZShHUmVmUHRyPEdCeXRlcz4oYnl0ZXMpKSB9KTsKIH0KIAotUmVmPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR0J5dGVzKiBieXRlcykKK1JlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoR0J5dGVzKiBi
eXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnl0ZXMpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGJ5dGVzKSk7
CiB9CiAKIEdSZWZQdHI8R0J5dGVzPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggOWZjNGVhODJlYmJj
NzdlYWQ5MDEwODU0MzgwODI5ZTE1YmJhYjZmNC4uZGMxZmIxNmVhMGIxOTZjNWQxM2JkNDExNGU1
MGNjZGNkOWIzN2M5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApA
QCAtNTksNyArNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGb250Q2FjaGU7CiBj
bGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBHbHlwaFBhZ2U7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgR2x5cGhEYXRhOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZv
cm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1E
YXRhLmgKaW5kZXggMzBkZmFhMmQyZjg1YTlmN2NkYTIwMDgyOWRlMTk5YjE0ZTg0YjIxOS4uZmJi
Y2NjNDM2ODQ0NzQ5MDgzY2U4OTFmMzYzZjZjYzQwZjI5NzQ1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAtNzQsNyAr
NzQsNiBAQCBpbnRlcmZhY2UgSURXcml0ZUZvbnRGYWNlOwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBGb250RGVzY3JpcHRpb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIC8vIFRoaXMg
Y2xhc3MgaXMgY29uY2VwdHVhbGx5IGltbXV0YWJsZS4gT25jZSBjcmVhdGVkLCBubyBpbnN0YW5j
ZXMgc2hvdWxkIGV2ZXIgY2hhbmdlIChpbiBhbiBvYnNlcnZhYmxlIHdheSkuCiBjbGFzcyBGb250
UGxhdGZvcm1EYXRhIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNw
cAppbmRleCA0YTg1M2ViNjQ5NTNkNGFlNDgzNGY4N2M1NDg3YWNkMzY0YzU3ZDgxLi5lMzJhMzZj
NjA3NjE5MjE2OGM2YTM3OTMxOGY3OGFlMTc4OWM0ODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBJbWFnZTo6
aXNQb3N0U2NyaXB0UmVzb3VyY2UoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJMJiB1
cmwpCiB9CiAKIAotRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2U6OnNldERhdGEoUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK0VuY29kZWREYXRhU3RhdHVz
IEltYWdlOjpzZXREYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIG1fZW5jb2RlZEltYWdlRGF0YSA9IFdURk1vdmUo
ZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDZh
MDgxNjk1N2FhOTNjNDExYTU2Y2Q0YzJiYzIwZGQ2ZDkwNDRkZWMuLjY1NWRmZTczY2ZmNmFkMWQw
NGY0OGJjMjAxOWViYjgwNDE3ZDYxMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaApAQCAtNzAsNyArNzAsNyBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFz
cyBGbG9hdFBvaW50OwogY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0Owot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVj
dCBMZW5ndGg7CiAKIC8vIFRoaXMgY2xhc3MgZ2V0cyBub3RpZmllZCB3aGVuIGFuIGltYWdlIGNy
ZWF0ZXMgb3IgZGVzdHJveXMgZGVjb2RlZCBmcmFtZXMgYW5kIHdoZW4gaXQgYWR2YW5jZXMgYW5p
bWF0aW9uIGZyYW1lcy4KQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBz
dGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxs
b3B0OyB9CiAgICAgdmlydHVhbCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlOyB9CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBFbmNvZGVkRGF0YVN0YXR1cyBzZXREYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIFdFQkNPUkVfRVhQT1JUIEVuY29kZWREYXRh
U3RhdHVzIHNldERhdGEoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZpcnR1YWwgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNo
YW5nZWQoYm9vbCAvKmFsbERhdGFSZWNlaXZlZCovKSB7IHJldHVybiBFbmNvZGVkRGF0YVN0YXR1
czo6VW5rbm93bjsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgdXRpKCkgY29uc3QgeyByZXR1cm4g
U3RyaW5nKCk7IH0gLy8gbnVsbCBzdHJpbmcgaWYgdW5rbm93bgpAQCAtMTMzLDggKzEzMyw4IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0
cm95QWxsID0gdHJ1ZSkgPSAwOwogCi0gICAgU2hhcmVkQnVmZmVyKiBkYXRhKCkgeyByZXR1cm4g
bV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CisgICAgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgpIHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQo
KTsgfQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgRGVzdGluYXRp
b25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKTsKIApAQCAtMjA5LDcgKzIwOSw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0IHsgcmV0
dXJuIENvbG9yKCk7IH0KIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2Vu
Y29kZWRJbWFnZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fZW5j
b2RlZEltYWdlRGF0YTsKICAgICBJbWFnZU9ic2VydmVyKiBtX2ltYWdlT2JzZXJ2ZXI7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFRpbWVyPiBtX2FuaW1hdGlvblN0YXJ0VGltZXI7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgK
aW5kZXggNGRkYjZkZjgzZWNiOGI5Yjc5NTdmNDY2NGUxODRmMDA4MWU4MTAxMS4uZGUzM2YxYWY0
MTJkYzA4YjJiOTYxYTE5NDk0NWM5Y2M5MGFhNjYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCkBAIC02Niw3ICs2Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBidWZmZXIu
Z3JvdyhidWZmZXJTaXplKTsKLSAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9waXhlbHMgPSBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7
CiAgICAgICAgIG1fcGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0
X2Nhc3Q8dWludDhfdCo+KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICAgICAgbV9zaXplID0gc2l6
ZTsKICAgICAgICAgbV9mcmFtZVJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSk7CkBA
IC0yMDYsNyArMjA2LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9zaXpl
LmlzRW1wdHkoKSAmJiAhaXNPdmVyU2l6ZShtX3NpemUpKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGJ1ZmZlciB7IG90aGVyLm1fcGl4ZWxzLT5kYXRhKCksIG90aGVyLm1fcGl4ZWxzLT5zaXpl
KCkgfTsKLSAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9waXhlbHMgPSBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1f
cGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8dWludDhf
dCo+KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICB9CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4gUGFja2VkQ29sb3I6OkFSR0IgeyByZXN1bHQgfS52YWx1ZTsK
ICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9waXhlbHM7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3BpeGVs
czsKICAgICB1aW50MzJfdCogbV9waXhlbHNQdHIgeyBudWxscHRyIH07CiAgICAgSW50U2l6ZSBt
X3NpemU7CiAgICAgSW50UmVjdCBtX2ZyYW1lUmVjdDsgLy8gVGhpcyB3aWxsIGFsd2F5cyBqdXN0
IGJlIHRoZSBlbnRpcmUgYnVmZmVyIGV4Y2VwdCBmb3IgR0lGIGFuZCBQTkcgZnJhbWVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcAppbmRl
eCAwODY5ZTk5YTAwODg2ZjdjZDEyMTg2ZmUzMTYxZGUwNDdmYTUxMzYxLi43YzU0OTQ3ZjRkODE0
MDg1NTljYzQ1YzRhYzQ5YTE5YjlmYzg2Zjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBJ
bWFnZURlY29kZXI6OmNsZWFyRmFjdG9yaWVzKCkKIH0KICNlbmRpZgogCi1SZWZQdHI8SW1hZ2VE
ZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29k
ZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBVTlVT
RURfUEFSQU0obWltZVR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlRGVjb2Rlci5oCmluZGV4IGExYTA4YWRjMTc1ZDQ0YmFhNDQyZTQ0YTk0YWE5Njdh
MDRmNWY2MDcuLjZhOGZmY2I2MGZjMTE1NmViODQ4NzZkZWZiMDdjYmMwYjExOTg0OTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCkBAIC0z
NywxMiArMzcsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbWFnZURlY29kZXIg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VEZWNvZGVyPiB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29k
ZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8SW1h
Z2VEZWNvZGVyPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAg
dmlydHVhbCB+SW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCiAgICAgZW51bSBjbGFzcyBNZWRp
YVR5cGUgewpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQogICAgIHVzaW5nIFN1cHBvcnRzTWVkaWFUeXBlRnVuYyA9IEZ1bmN0aW9uPGJvb2woTWVkaWFU
eXBlKT47CiAgICAgdXNpbmcgQ2FuRGVjb2RlVHlwZUZ1bmMgPSBGdW5jdGlvbjxib29sKGNvbnN0
IFN0cmluZyYpPjsKLSAgICB1c2luZyBDcmVhdGVJbWFnZURlY29kZXJGdW5jID0gRnVuY3Rpb248
UmVmUHRyPEltYWdlRGVjb2Rlcj4oU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgQWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKT47CisgICAgdXNpbmcgQ3JlYXRlSW1h
Z2VEZWNvZGVyRnVuYyA9IEZ1bmN0aW9uPFJlZlB0cjxJbWFnZURlY29kZXI+KEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pPjsKIAogICAgIHN0cnVjdCBJbWFnZURlY29kZXJGYWN0b3J5IHsKICAgICAg
ICAgU3VwcG9ydHNNZWRpYVR5cGVGdW5jIHN1cHBvcnRzTWVkaWFUeXBlOwpAQCAtMTI5LDcgKzEy
OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEV4cGVjdGVk
Q29udGVudFNpemUobG9uZyBsb25nKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFy
ZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgPSAwOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZDgx
YzQ4MDE5Mjg0NmRkN2UzMjFjMmRmYmZiZjFlMGMyMGRhYTY3MS4uMzA3NzQzMzE1YTQxZWNhMWM5
YjJiYzc3M2QwNzllZTVkNDNiYWY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtNzIsNyArNzIsNyBAQCBJbWFnZVNvdXJjZTo6
fkltYWdlU291cmNlKCkKICAgICBBU1NFUlQoJm1fcnVuTG9vcCA9PSAmUnVuTG9vcDo6Y3VycmVu
dCgpKTsKIH0KIAotYm9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShTaGFy
ZWRCdWZmZXIqIGRhdGEpCitib29sIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZhaWxhYmxl
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKCFkYXRhIHx8IGlzRGVj
b2RlckF2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk2LDcgKzk2LDcgQEAg
Ym9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShTaGFyZWRCdWZmZXIqIGRh
dGEpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hh
cmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VTb3VyY2U6
OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB7CiAgICAgaWYgKCFkYXRhIHx8ICFlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKGRhdGEpKQog
ICAgICAgICByZXR1cm47CkBAIC0xMDQsMTMgKzEwNCwxMyBAQCB2b2lkIEltYWdlU291cmNlOjpz
ZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgbV9k
ZWNvZGVyLT5zZXREYXRhKCpkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCi12b2lkIEltYWdl
U291cmNlOjpyZXNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBJbWFnZVNvdXJjZTo6
cmVzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgbV9kZWNvZGVy
ID0gbnVsbHB0cjsKICAgICBzZXREYXRhKGRhdGEsIGlzQWxsRGF0YVJlY2VpdmVkKCkpOwogfQog
Ci1FbmNvZGVkRGF0YVN0YXR1cyBJbWFnZVNvdXJjZTo6ZGF0YUNoYW5nZWQoU2hhcmVkQnVmZmVy
KiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK0VuY29kZWREYXRhU3RhdHVzIEltYWdlU291
cmNlOjpkYXRhQ2hhbmdlZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKIHsKICAgICBzZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiAgICAg
Y2xlYXJNZXRhZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmgKaW5kZXggOGFmNTA4MGEwMGE5OTE2MDgwZjFmMGIyNzcwNzNjMmE4NTM0NTI1
OC4uODE0ZjBlMTJlYmFhNDhmODZhY2I1MjE5NzNjMzFkNWQzODJmNmZiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0zOSw3ICszOSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJpdG1hcEltYWdlOwogY2xhc3MgR3JhcGhp
Y3NDb250ZXh0OwogY2xhc3MgSW1hZ2VEZWNvZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSW1hZ2VTb3VyY2UgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VTb3VyY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
SW1hZ2VTb3VyY2U+IHsKICAgICBmcmllbmQgY2xhc3MgQml0bWFwSW1hZ2U7CkBAIC01Niw5ICs1
Niw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VTb3VyY2Uo
V1RGTW92ZShuYXRpdmVJbWFnZSkpKTsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgdm9pZCByZXNldERhdGEo
U2hhcmVkQnVmZmVyKiBkYXRhKTsKLSAgICBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChT
aGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2b2lkIHNldERh
dGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwor
ICAgIHZvaWQgcmVzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIEVu
Y29kZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2VkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCk7CiAK
ICAgICB1bnNpZ25lZCBkZWNvZGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlZFNpemU7
IH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CiAgICAgVCBmaXJzdEZyYW1lTWV0YWRhdGFDYWNoZUlmTmVlZGVkKFQmIGNhY2hlZFZhbHVlLCBN
ZXRhZGF0YVR5cGUsIFQgKEltYWdlRnJhbWU6OipmdW5jdG9yKSgpIGNvbnN0LCBJbWFnZUZyYW1l
OjpDYWNoaW5nLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiA9IHsgfSk7
CiAKLSAgICBib29sIGVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRhKTsK
KyAgICBib29sIGVuc3VyZURlY29kZXJBdmFpbGFibGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSk7CiAgICAgYm9vbCBpc0RlY29kZXJBdmFpbGFibGUoKSBjb25zdCB7IHJldHVybiBtX2Rl
Y29kZXI7IH0KICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShzaXplX3QgZnJhbWVDb3VudCwg
c2l6ZV90IGV4Y2x1ZGVGcmFtZSk7CiAgICAgdm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQobG9uZyBs
b25nIGRlY29kZWRTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVs
LmNwcAppbmRleCAzZTU5ZWE5ZDA4ZGQxYzliZWUyM2JhM2Y2MzVjZjM1YmZjMjgyMjkyLi41Nzdi
ZDUwOGE1YzQwOWY0YmU5ZTRjZjIwMmI4MWU2MWU0NWI0NGFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1SZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZl
cj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorUmVmPE1vZGVsPiBNb2RlbDo6Y3Jl
YXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQog
ewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vZGVsKFdURk1vdmUoZGF0YSksIFdURk1vdmUo
bWltZVR5cGUpLCBXVEZNb3ZlKHVybCkpKTsKIH0KIAotTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRC
dWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK01vZGVsOjpNb2RlbChSZWY8
U2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1f
ZGF0YShXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkK
ICAgICAsIG1fdXJsKFdURk1vdmUodXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Nb2RlbC5oCmluZGV4IDA2NTgxMzM3OWYxMTI1NWQyZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0ZTEu
LmU2YmRlMTY2Zjk0NGNkZTdkYjMyOGMyOTc2ZWM2ODJhZGI2ZDEwMzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIE1vZGVsIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kZWw+
IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUo
UmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIH5Nb2RlbCgpOwogCiAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFJlZlB0cjxNb2RlbD4gZGVjb2RlKERl
Y29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNb2RlbChSZWY8U2hhcmVkQnVmZmVy
PiwgU3RyaW5nLCBVUkwpOworICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+JiYs
IFN0cmluZywgVVJMKTsKIAogICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBTdHJp
bmcgbV9taW1lVHlwZTsKQEAgLTYwLDcgKzYwLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
IHZvaWQgTW9kZWw6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29k
ZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2RhdGEtPnNpemUoKSk7Ci0gICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsK
KyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOwogICAgIGVuY29kZXIgPDwgbV9taW1lVHlw
ZTsKICAgICBlbmNvZGVyIDw8IG1fdXJsOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaApp
bmRleCA3NDU5YzU4NThkMjQ4N2VmMmM1ZmQzNzE3Mzk4NmIzMzczNGVjMjhhLi44ODY5MWRjMjU2
ZDZkZDZjNDVmNDZlMDE1NDk2NzQyNDVhYTM1MzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXIuaApAQCAtNTEsOCArNTEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUocmVxdWVzdCkpOyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2Uo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJu
IHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJikgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgLy8gVGhpcyBt
ZXRob2Qgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB1c2Vz
IFNoYXJlZEJ1ZmZlci4KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSB7IFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgYmUgcmVtb3Zl
ZCBvbmNlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHVzZXMgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ci4KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYg
cGxhdGZvcm0sIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgZGF0YVJlY2VpdmVk
KHBsYXRmb3JtLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpKTsgfQogICAgIHZp
cnR1YWwgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2FkRmFpbGVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZh
dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJp
dmF0ZS5jcHAKaW5kZXggNTQ5OWYzN2E3ZjM2NDZiZDVmMzk1YTQ4YjA5ZDk0MTFkNGM5YjY2NC4u
ZDNlMWI1ODA0ZTg1YTk5MTFjZjIwZmNlZDM0YmYyNTVhMzE0NDM0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5j
cHAKQEAgLTEzMTgsNyArMTMxOCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVj
ZWl2ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYgb3JpZ2luYWxTYW1wbGUpCiAgICAgdXBkYXRl
SGlnaGVzdFByZXNlbnRhdGlvblRpbWVzdGFtcCgpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGU6OmFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZTo6YXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
IHsKICAgICBhcHBlbmQoYnVmZmVyLT5leHRyYWN0RGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAppbmRl
eCBlZjg2YTQ3MzY5MzcxYzgzZTg4M2IyOWJiYjZiOWFiOTZlY2E1ZjFkLi42YjdkOTVlNTJiOWRm
MGM4MWFmM2JlMWQ2ZDlmM2M4ZWQzOTU0MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCkBAIC00OSw3ICs0OSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRpbWVSYW5nZXM7CiAKIGVudW0gY2xhc3Mg
U291cmNlQnVmZmVyQXBwZW5kTW9kZSA6IHVpbnQ4X3QgewpAQCAtNjgsNyArNjgsNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U291cmNlQnVmZmVyUHJpdmF0ZSgpOwog
CiAgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sKSA9IDA7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIGFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgYXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KTsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0
UGFyc2VyU3RhdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3Vy
Y2UoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAppbmRl
eCBjNjExMmUxMTk0YzdjOTkwZmRjMTE0ZTgyOWNmZGI1YzZhZjc1NGE5Li44YjA0ZjliZTk2YzM2
ZTBhMjYyMTgwYTI1ZWEzNzQ1OTYyYjNkN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5jcHAKQEAgLTg2LDEyICs4NiwxMiBAQCBjb25zdCBBdG9tU3RyaW5nJiBD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNrZE5hbWUoKQogICAgIHJldHVybiBza2Q7CiB9
CiAKLXN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIC8vIEpTT04gb2YgdGhlIGZvcm1hdDogInsgc2luZjogWyA8YmFzZTY0
LWVuY29kZWQtc3RyaW5nPiBdIH0iCiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgU3Ry
aW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNp
emUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2
YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKQEAg
LTEwNSw3ICsxMDUsNyBAQCBzdGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0
U2luZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKCFzaW5mQXJyYXkp
CiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IHNp
bmZzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHNpbmZzOwogICAg
IHNpbmZzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2luZkFycmF5LT5sZW5ndGgoKSk7CiAKICAg
ICBmb3IgKGF1dG8mIHZhbHVlIDogKnNpbmZBcnJheSkgewpAQCAtMTI0LDcgKzEyNCw3IEBAIHN0
YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIH0KIAogdXNpbmcgU2NoZW1lQW5kS2V5UmVzdWx0ID0gVmVjdG9y
PHN0ZDo6cGFpcjxGb3VyQ0MsIFZlY3Rvcjx1aW50OF90Pj4+Owotc3RhdGljIFNjaGVtZUFuZEtl
eVJlc3VsdCBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK3N0YXRpYyBTY2hlbWVBbmRLZXlSZXN1bHQgZXh0cmFjdFNjaGVtZUFuZEtleUlk
RnJvbVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1
dG8gYnVmZmVycyA9IGV4dHJhY3RTaW5mRGF0YShidWZmZXIpOwogICAgIGlmICghYnVmZmVycy5z
aXplKCkpCkBAIC0xNzAsOSArMTcwLDkgQEAgc3RhdGljIFNjaGVtZUFuZEtleVJlc3VsdCBleHRy
YWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmYKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJ
RHNTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAgYXV0byByZXN1bHRzID0gZXh0cmFjdFNjaGVtZUFu
ZEtleUlkRnJvbVNpbmYoYnVmZmVyKTsKIAogICAgIGZvciAoYXV0byYgcmVzdWx0IDogcmVzdWx0
cykgewpAQCAtMTgzLDcgKzE4Myw3IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRC
dWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5CiAgICAgcmV0
dXJuIGtleUlEczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5
U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpz
YW5pdGl6ZVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IC8vIENvbW1vbiBTSU5GIEJveCBGb3JtYXQKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKQEAg
LTE5MSwxNyArMTkxLDE3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6c2FuaXRpemVTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlCiAgICAgcmV0dXJuIGJ1
ZmZlci5jb3B5KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6c2FuaXRpemVTa2QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpz
YW5pdGl6ZVNrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4g
YnVmZmVyLmNvcHkoKTsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZl
cj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTa2QoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJ
RHNTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIElu
IHRoZSAnc2tkJyBzY2hlbWUsIHRoZSBpbml0IGRhdGEgaXMgdGhlIGtleSBJRC4KLSAgICBWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAga2V5SURzLmFwcGVuZChidWZmZXIuY29weSgpKTsK
ICAgICByZXR1cm4ga2V5SURzOwogfQpAQCAtMzkzLDcgKzM5Myw3IEBAIGJvb2wgQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGluaXREYXRhKSBjb25zdAorYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBv
cnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAgICBpZiAoIXZhbGlkSW5pdERh
dGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTQyMyw3ICs0MjMsNyBAQCBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFt
aW5nOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0
CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFt
aW5nOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3Bv
bnNlKSBjb25zdAogewogICAgIHJldHVybiByZXNwb25zZS5jb3B5KCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBs
YXlTdHJlYW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCmluZGV4IGJjOTNmNmY2YTdiZGQwMWVmYmY1NWI2
MmJkYjZhNGU2NmVmOTEyYjMuLjMxN2JiOGQ1N2U4NmMwNjIxNGUwYjQwNTlkZGY0Zjg4MDdjNzRj
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCkBAIC03MSwxNyAr
NzEsMTcgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBvdmVycmlkZTsK
ICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25z
dCBvdmVycmlkZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNv
bnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsK
ICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5n
JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc2luZk5h
bWUoKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
PiBleHRyYWN0S2V5SURzU2luZihjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBzdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
PiBleHRyYWN0S2V5SURzU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAg
c3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNpbmYoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcm
IHNrZE5hbWUoKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1
ZmZlcj4+PiBleHRyYWN0S2V5SURzU2tkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNrZChjb25zdCBTaGFyZWRCdWZmZXImKTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+Pj4gZXh0cmFjdEtleUlEc1NrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Cisg
ICAgc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNrZChjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPEZv
dXJDQz4mIHZhbGlkRmFpclBsYXlTdHJlYW1pbmdTY2hlbWVzKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQy5oCmluZGV4IDE1OWI5MGNkYjQ4ZjdmZTQ0YmI0OWJlMmVjMWMxYzJmNDMyODY0MDAuLjU2
YjU4YzI1YTI4NzA5ZmIzODIyMTgzOWU1NWJhZTQ1ZWQ5M2NmNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMuaApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgSW1wbGVtZW50YXRpb25UeXBl
IGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9u
VHlwZTo6RmFpclBsYXlTdHJlYW1pbmc7IH0KIAogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0
aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikg
ZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYm
LCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFs
OwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAg
ICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CiAgICAg
dm9pZCBzZXRDbGllbnQoV2Vha1B0cjxDRE1JbnN0YW5jZUNsaWVudD4mJikgZmluYWw7CkBAIC05
NCwxMCArOTQsMTAgQEAgcHVibGljOgogCiAgICAgTlNVUkwgKnN0b3JhZ2VVUkwoKSBjb25zdCB7
IHJldHVybiBtX3N0b3JhZ2VVUkwuZ2V0KCk7IH0KICAgICBib29sIHBlcnNpc3RlbnRTdGF0ZUFs
bG93ZWQoKSBjb25zdCB7IHJldHVybiBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQ7IH0KLSAgICBT
aGFyZWRCdWZmZXIqIHNlcnZlckNlcnRpZmljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXJD
ZXJ0aWZpY2F0ZS5nZXQoKTsgfQorICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHNlcnZlckNl
cnRpZmljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZS5nZXQoKTsgfQog
ICAgIEFWQ29udGVudEtleVNlc3Npb24qIGNvbnRlbnRLZXlTZXNzaW9uKCk7CiAKLSAgICBSZXRh
aW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gdGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5p
dGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgU2hhcmVkQnVm
ZmVyJiBpbml0RGF0YSk7CisgICAgUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IHRha2VV
bmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKTsKIAogICAg
IC8vIEFWQ29udGVudEtleVNlc3Npb25EZWxlZ2F0ZUNsaWVudAogICAgIHZvaWQgZGlkUHJvdmlk
ZVJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCopIGZpbmFsOwpAQCAtMTEyLDcgKzExMiw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIG91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5h
bFByb3RlY3Rpb25DaGFuZ2VkKGJvb2wpIGZpbmFsOwogICAgIHZvaWQgZXh0ZXJuYWxQcm90ZWN0
aW9uU3RhdHVzRGlkQ2hhbmdlRm9yQ29udGVudEtleVJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVz
dCopIGZpbmFsOwogCi0gICAgdXNpbmcgS2V5cyA9IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj47
CisgICAgdXNpbmcgS2V5cyA9IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+Owog
ICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZv
cktleUlEcyhjb25zdCBLZXlzJikgY29uc3Q7CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yR3JvdXAoQVZDb250ZW50S2V5UmVwb3J0R3Jv
dXAqKSBjb25zdDsKICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akMqIHNlc3Npb25Gb3JSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBjb25zdDsKQEAgLTEy
OSw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+IG1f
Y2xpZW50OwogICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlTZXNzaW9uPiBtX3Nlc3Npb247CiAg
ICAgUmV0YWluUHRyPFdlYkNvcmVGUFNDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlPiBtX2RlbGVn
YXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fc2VydmVyQ2VydGlmaWNhdGU7CisgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fc2VydmVyQ2VydGlmaWNhdGU7CiAgICAg
Ym9vbCBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgeyB0cnVlIH07CiAgICAgUmV0YWluUHRyPE5T
VVJMPiBtX3N0b3JhZ2VVUkw7CiAgICAgVmVjdG9yPFdlYWtQdHI8Q0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPj4gbV9zZXNzaW9uczsKQEAgLTE1MCw4ICsxNTAsOCBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbgotICAgIHZvaWQg
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFs
OwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZv
aWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGlj
ZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAg
ICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYm
KSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vu
c2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQy5tbQppbmRleCBlOWYyYWEzMzVkYjlhYzU4Mzk1MTVkNjI1YTBkZjJmZjQwNzNlOTUz
Li5iYTUwNjFlYmI1YzVmYmUwNzRkM2EyOWRlYTRmOTE4ZmMyNjIxY2Q2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQy5tbQpAQCAtMjE3LDcgKzIxNyw3IEBAIEFMTE9XX05FV19BUElfV0lUSE9VVF9H
VUFSRFNfRU5ECiAgICAgcmV0dXJuIEF0b21TdHJpbmcobnNJbml0VHlwZSk7CiB9CiAKLXN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBpbml0aWFsaXphdGlvbkRhdGFGb3JSZXF1ZXN0KEFWQ29udGVu
dEtleVJlcXVlc3QqIHJlcXVlc3QpCitzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGluaXRpYWxpemF0aW9uRGF0YUZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCogcmVxdWVz
dCkKIHsKICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwpAQCAtMjY1LDcgKzI2NSw3IEBAIEFWQ29udGVudEtleVNlc3Npb24qIENETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjb250ZW50S2V5U2Vzc2lvbigpCiAgICAgcmV0
dXJuIG1fc2Vzc2lvbi5nZXQoKTsKIH0KIAotUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+
IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp0YWtlVW5leHBlY3RlZEtleVJl
cXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+
IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp0YWtlVW5leHBlY3RlZEtleVJl
cXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBmb3IgKGF1dG8gcmVx
dWVzdEl0ZXIgPSBtX3VuZXhwZWN0ZWRLZXlSZXF1ZXN0cy5iZWdpbigpOyByZXF1ZXN0SXRlciAh
PSBtX3VuZXhwZWN0ZWRLZXlSZXF1ZXN0cy5lbmQoKTsgKytyZXF1ZXN0SXRlcikgewogICAgICAg
ICBhdXRvJiByZXF1ZXN0ID0gKnJlcXVlc3RJdGVyOwpAQCAtMzE2LDcgKzMxNiw3IEBAIHByaXZh
dGU6CiAgICAgUmVzcG9uc2VNYXAgbV9yZXNwb25zZXM7CiB9OwogCi1zdGF0aWMgUmVmUHRyPEpT
T046OlZhbHVlPiBwYXJzZUpTT05WYWx1ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0
YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBGYWlsIG9uIGxhcmdlIGJ1ZmZlcnMgd2hv
c2Ugc2l6ZSBkb2Vzbid0IGZpdCBpbnRvIGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIuCiAgICAg
c2l6ZV90IHNpemUgPSBidWZmZXIuc2l6ZSgpOwpAQCAtMzI0LDcgKzMyNCw3IEBAIHN0YXRpYyBS
ZWZQdHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIg
Y29udGVudHMgYXMgSlNPTiwgcmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAg
ICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXpl
KSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CiAKICAgICByZXR1cm4gSlNPTjo6VmFsdWU6
OnBhcnNlSlNPTihqc29uKTsKIH0KQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIENETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29u
c3QgQ0RNSwogICAgIGNhbGxiYWNrKGluaXRpYWxpemUoKSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgc2VydmVyQ2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNr
KQordm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgc2VydmVyQ2VydGlmaWNhdGUs
IFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIERFQlVHX0xPR19JRl9QT1NTSUJM
RShMT0dJREVOVElGSUVSKTsKICAgICBtX3NlcnZlckNlcnRpZmljYXRlID0gV1RGTW92ZShzZXJ2
ZXJDZXJ0aWZpY2F0ZSk7CkBAIC01ODUsOCArNTg1LDggQEAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDKiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
QzoKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8gc2Vzc2lvbktleXMgPSBz
ZXNzaW9uSW50ZXJmYWNlLT5rZXlJRHMoKTsKLSAgICAgICAgaWYgKGFueU9mKHNlc3Npb25LZXlz
LCBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIHNlc3Npb25LZXkpIHsKLSAgICAgICAgICAg
IHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYg
a2V5SUQpIHsKKyAgICAgICAgaWYgKGFueU9mKHNlc3Npb25LZXlzLCBbJl0oY29uc3QgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBzZXNzaW9uS2V5KSB7CisgICAgICAgICAgICByZXR1cm4g
a2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiBrZXlJRCkgewogICAgICAgICAgICAgICAgIHJldHVybiBrZXlJRC5nZXQoKSA9PSBzZXNzaW9u
S2V5LmdldCgpOwogICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQ7CiAgICAgICAgIH0pKQpAQCAt
NjczLDcgKzY3Myw3IEBAIEtleXMgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjprZXlJRHMoKQogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLXZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNr
JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFpc0xpY2Vuc2VUeXBlU3VwcG9ydGVkKGxpY2Vuc2VU
eXBlKSkgewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBm
YWxzZSwgbGljZW5zZVR5cGUgXCIiLCBsaWNlbnNlVHlwZSwgIlwiIG5vdCBzdXBwb3J0ZWQiKTsK
QEAgLTcwOSwxMiArNzA5LDEyIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlCiAgICAgUmV0YWlu
UHRyPE5TRGF0YT4gaW5pdGlhbGl6YXRpb25EYXRhOwogCiAgICAgaWYgKGluaXREYXRhVHlwZSA9
PSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNpbmZOYW1lKCkpCi0gICAgICAgIGluaXRp
YWxpemF0aW9uRGF0YSA9IGluaXREYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgaW5pdGlh
bGl6YXRpb25EYXRhID0gaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
OwogICAgIGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1p
bmc6OnNrZE5hbWUoKSkKLSAgICAgICAgaWRlbnRpZmllciA9IGFkb3B0TlMoW1tOU1N0cmluZyBh
bGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOworICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhb
W05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CiAj
aWYgSEFWRShGQUlSUExBWVNUUkVBTUlOR19DRU5DX0lOSVREQVRBKQogICAgIGVsc2UgaWYgKGlu
aXREYXRhVHlwZSA9PSBJbml0RGF0YVJlZ2lzdHJ5OjpjZW5jTmFtZSgpKSB7Ci0gICAgICAgIGF1
dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5kYXRhKCksIGlu
aXREYXRhLT5zaXplKCkpOworICAgICAgICBhdXRvIHBzc2hTdHJpbmcgPSBiYXNlNjRFbmNvZGVU
b1N0cmluZyhpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0YS0+c2l6
ZSgpKTsKICAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gW05TSlNPTlNlcmlhbGl6YXRpb24g
ZGF0YVdpdGhKU09OT2JqZWN0OkB7IEAicHNzaCI6IChOU1N0cmluZyopcHNzaFN0cmluZyB9IG9w
dGlvbnM6TlNKU09OV3JpdGluZ1ByZXR0eVByaW50ZWQgZXJyb3I6bmlsXTsKICAgICB9CiAjZW5k
aWYKQEAgLTczNiw3ICs3MzYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZQogICAgIH0KIH0K
IAotc3RhdGljIGJvb2wgaXNFcXVhbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0
cmluZyYgdmFsdWUpCitzdGF0aWMgYm9vbCBpc0VxdWFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgYXV0byBhcnJheUJ1ZmZl
ciA9IGRhdGEudHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBpZiAoIWFycmF5QnVmZmVyKQpA
QCAtNzU0LDcgKzc1NCw3IEBAIHN0YXRpYyBib29sIGlzRXF1YWwoY29uc3QgU2hhcmVkQnVmZmVy
JiBkYXRhLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHJldHVybiBzdHJpbmdPckV4Y2VwdGlv
bi5yZXR1cm5WYWx1ZSgpID09IHZhbHVlOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNl
bnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIExpY2Vuc2VVcGRhdGVD
YWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNh
bGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2V4cGlyZWRTZXNzaW9ucy5pc0VtcHR5
KCkgJiYgaXNFcXVhbChyZXNwb25zZURhdGEsICJhY2tub3dsZWRnZWQiX3MpKSB7CiAgICAgICAg
IGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKTsKQEAg
LTc3MCw3ICs3NzAsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICBhdXRvIGV4
cGlyZWRTZXNzaW9ucyA9IGNyZWF0ZU5TQXJyYXkobV9leHBpcmVkU2Vzc2lvbnMsIFtdIChhdXRv
JiBkYXRhKSB7CiAgICAgICAgICAgICByZXR1cm4gZGF0YS5nZXQoKTsKICAgICAgICAgfSk7Ci0g
ICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsK
KyAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9u
Q2xhc3MoKSByZW1vdmVQZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzOmV4cGlyZWRTZXNzaW9u
cy5nZXQoKSB3aXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJl
Y3RvcnlBdFVSTDpzdG9yYWdlVVJMXTsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHsgfSwgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CiAgICAgICAgIHJldHVybjsKQEAg
LTg1Niw3ICs4NTYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICAgICAgYXV0
byBrZXlJRCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKmtleUlEVmVjdG9yKSk7CiAg
ICAgICAgICAgICBhdXRvIGZvdW5kSW5kZXggPSBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVx
dWVzdHMuZmluZE1hdGNoaW5nKFsmXSAoYXV0byYgcmVxdWVzdCkgewogICAgICAgICAgICAgICAg
IGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPFNoYXJlZEJ1
ZmZlcj4mIGlkKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kTWF0Y2hpbmco
WyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgaWQpIHsKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGlkLmdldCgpID09IGtleUlELmdldCgpOwogICAgICAgICAgICAgICAg
IH0pICE9IG5vdEZvdW5kOwogICAgICAgICAgICAgfSk7CkBAIC04ODgsNyArODg4LDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAgICAgICBpZiAoIXBheWxvYWRWZWN0b3Ip
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBhdXRv
IHBheWxvYWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcGF5bG9hZFZlY3Rv
cikpOwotICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6
W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdp
dGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldXTsKKyAgICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtl
eVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5
UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfTsKQEAgLTkwMSw3ICs5MDEsNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRl
TGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICInc2luZicgaW5pdERhdGEs
IHByb2Nlc3NpbmcgcmVzcG9uc2UiKTsKLSAgICAgICAgW21fY3VycmVudFJlcXVlc3QudmFsdWUo
KS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZD
b250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0
cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XV07CisgICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBw
cm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xh
c3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURh
dGE6cmVzcG9uc2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1d
OwogICAgIH0KIAogICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1NTkyMjc3KTogc3Rhc2gg
dGhlIGNhbGxiYWNrIGFuZCBjYWxsIGl0IG9uY2UgQVZDb250ZW50S2V5UmVzcG9uc2Ugc3VwcG9y
dHMgYSBzdWNjZXNzIGNhbGxiYWNrLgpAQCAtOTM0LDcgKzkzNCw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlw
ZSBsaWNlbnNlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRh
aW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgp
OworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBLZXlTdGF0dXNWZWN0
b3IgY2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEg
aW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNz
aW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURp
cmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CiAgICAgICAgICAgICBzdGF0aWMgY29uc3QgTlNT
dHJpbmcgKlBsYXliYWNrU2Vzc2lvbklkS2V5ID0gQCJQbGF5YmFja1Nlc3Npb25JRCI7CkBAIC05
OTksNyArOTk5LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIg
PSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+
IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gZXhwaXJlZFNlc3Npb25z
QXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICAgICAg
S2V5U3RhdHVzVmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJl
ZFNlc3Npb25EYXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRp
bmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdl
dCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewpAQCAtMTA4Niw3ICsxMDg2
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRp
ZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVIKIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFw
cElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2Vy
dmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAogICAgIGF1dG8ga2V5SURzID0ga2V5SURz
Rm9yUmVxdWVzdChyZXF1ZXN0KTsKICAgICBpZiAoa2V5SURzLmlzRW1wdHkoKSkgewpAQCAtMTA5
Nyw3ICsxMDk3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVIKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURz
LmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJ
ZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtl
eVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6
Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W3Ro
aXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1
ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSByZXRh
aW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtl
eVJlcXVlc3REYXRhKV0gewpAQCAtMTE1Myw5ICsxMTUzLDkgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8
UmV0YWkKIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1
dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAg
ICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAg
YXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKTsKIAotICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4sIFJldGFpblB0cjxOU0RhdGE+Pj47CisgICAgdXNpbmcgUmVxdWVzdHNE
YXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIFJl
dGFpblB0cjxOU0RhdGE+Pj47CiAgICAgc3RydWN0IENhbGxiYWNrQWdncmVnYXRvciBmaW5hbCA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3I+IHsKICAgICAg
ICAgdXNpbmcgQ2FsbGJhY2tGdW5jdGlvbiA9IEZ1bmN0aW9uPHZvaWQoUmVxdWVzdHNEYXRhJiYp
PjsKICAgICAgICAgc3RhdGljIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNyZWF0ZShDYWxs
YmFja0Z1bmN0aW9uJiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xMTk2LDcgKzExOTYsNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlk
ZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgICAgICAgICAgYXV0byBlbnRyeSA9IEpTT046Ok9i
amVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBhdXRvJiBrZXlJRCA9IHJlcXVlc3REYXRhLmZp
cnN0OwogICAgICAgICAgICAgYXV0byYgcGF5bG9hZCA9IHJlcXVlc3REYXRhLnNlY29uZDsKLSAg
ICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmco
a2V5SUQtPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOworICAgICAgICAgICAgZW50cnktPnNldFN0
cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5n
KCJwYXlsb2FkIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcocGF5bG9hZC5nZXQoKS5ieXRlcywgcGF5
bG9hZC5nZXQoKS5sZW5ndGgpKTsKICAgICAgICAgICAgIHJlcXVlc3RKU09OLT5wdXNoT2JqZWN0
KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgfQpAQCAtMTIxMSw4ICsxMjExLDggQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1
ZXN0cyhWZWN0b3I8UmV0YWkKICAgICBAdHJ5IHsKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3Qg
OiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8g
a2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0gICAg
ICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgpOwor
ICAgICAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92
ZShrZXlJRHMuZmlyc3QoKSk7CisgICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0g
a2V5SUQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICAgICAgW3Jl
cXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlm
aWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlv
bnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOltrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdh
dG9yXSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRh
YmxlIHsKICAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwogICAgICAgICAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3Ig
PSBXVEZNb3ZlKGFnZ3JlZ2F0b3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIo
Y29udGVudEtleVJlcXVlc3REYXRhKV0gKCkgbXV0YWJsZSB7CkBAIC0xMjQ5LDEwICsxMjQ5LDEw
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQ
cm92aWRlUmVuZXdpbmdSZXF1ZXN0KEFWQ29uCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJ
ZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZl
ckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JS
ZXF1ZXN0KG1fY3VycmVudFJlcXVlc3QudmFsdWUoKSk7CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRh
PiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3Jl
cXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlm
aWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlv
bnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RG
TW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVl
c3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdl
RGVjb2RlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAppbmRleCAwMzM0ZDYyM2IyYTc2MDVj
OWJlMTIyMTNiNWFiZGJiYWMyYjAzZjE1Li42MmI4M2ZiZmQ1Nzk0MDUwZWJjOTQwNjM3MDQ5MGJh
MmIzZWMwODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjsK
IAogY2xhc3MgSW1hZ2VEZWNvZGVyQVZGT2JqQyA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogcHVi
bGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2Jq
Qz4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbik7CiAgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyQVZGT2JqQygpOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc3VwcG9ydHNNZWRpYVR5cGUoTWVkaWFUeXBl
KTsKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3Jt
SW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
ID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERl
Y29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5h
bDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGF0YShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAg
IGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0
YVJlY2VpdmVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2Fj
aGUoc2l6ZV90KSBmaW5hbDsKIApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgVmVjdG9yPEltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPiBmcmFtZUluZm9zKCkgY29u
c3Q7CiAKIHByaXZhdGU6Ci0gICAgSW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pOworICAgIEltYWdlRGVjb2RlckFWRk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbik7CiAKICAgICBBVkFzc2V0VHJhY2sgKmZpcnN0RW5hYmxlZFRyYWNrKCk7CiAgICAg
dm9pZCByZWFkU2FtcGxlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2Rl
ckFWRk9iakMubW0KaW5kZXggMDY5NTE2YTA4M2Q1ZjRmNTEyNzI5NzQ1MGUxYzlhMTBjYzE0ZjRi
Zi4uMzVjNmNlNjdlODVmODZhZTE2NGMyMWE3MjYwN2ZjMDY1ZWNiNTA1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC0yODksNyArMjg5LDcg
QEAgSW1hZ2VEZWNvZGVyQVZGT2JqQ1NhbXBsZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRlcikKIAog
I3ByYWdtYSBtYXJrIC0gSW1hZ2VEZWNvZGVyQVZGT2JqQwogCi1SZWZQdHI8SW1hZ2VEZWNvZGVy
QVZGT2JqQz4gSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPElt
YWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBh
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pCiB7CiAgICAgLy8gQVZGb3VuZGF0aW9uIG1heSBub3QgYmUgYXZhaWxhYmxlIGF0
IHJ1bnRpbWUuCiAgICAgaWYgKCFBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNB
dmFpbGFibGUoKSkKQEAgLTMwMSw3ICszMDEsNyBAQCBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2Jq
Qz4gSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29ucwog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlckFWRk9iakMoZGF0YSwgbWltZVR5
cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogfQogCi1JbWFn
ZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKQorSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgOiBJbWFnZURlY29kZXIoKQogICAg
ICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1fdXRpKFdlYkNvcmU6OlVUSUZyb21NSU1F
VHlwZShtaW1lVHlwZSkpCkBAIC0zMDksNyArMzA5LDcgQEAgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6
SW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWlt
ZVQKICAgICAsIG1fbG9hZGVyKGFkb3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyUmVzb3VyY2VM
b2FkZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10pKQogICAgICwgbV9kZWNv
bXByZXNzaW9uU2Vzc2lvbihXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OmNyZWF0ZVJHQigp
KQogewotICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkg
Y29tcGxldGU6Tk9dOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9dOwogCiAgICAgW21fYXNzZXQu
Z2V0KCkucmVzb3VyY2VMb2FkZXIgc2V0RGVsZWdhdGU6bV9sb2FkZXIuZ2V0KCkgcXVldWU6ZGlz
cGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAw
KV07CiAgICAgW21fYXNzZXQgbG9hZFZhbHVlc0FzeW5jaHJvbm91c2x5Rm9yS2V5czpAW0AidHJh
Y2tzIl0gY29tcGxldGlvbkhhbmRsZXI6W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAo
KSBtdXRhYmxlIHsKQEAgLTY0MSw5ICs2NDEsOSBAQCB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6
OnNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCiAg
ICAgbV9sb2FkZXIuZ2V0KCkuZXhwZWN0ZWRDb250ZW50U2l6ZSA9IGV4cGVjdGVkQ29udGVudFNp
emU7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YShTaGFyZWRCdWZmZXIm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpz
ZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogewotICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkg
Y29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRh
Lm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFS
ZWNlaXZlZF07CiAKICAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7CiAgICAgICAgIG1faXNBbGxE
YXRhUmVjZWl2ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDIwMGUxYThmOWFm
YmEwZmNiYmE1YjBhM2VkNzA0Y2QzNDFiNDUwZDYuLmM5ZDliMmE5Njg1YjAxZTkxYWFhMDBjMGUw
MDMwNzczODU2OTE0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTY2LDcgKzY2LDcgQEAg
Y2xhc3MgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOwogY2xhc3MgTWVkaWFQbGF5
YmFja1RhcmdldDsKIGNsYXNzIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDOwogY2xhc3MgUGl4
ZWxCdWZmZXJDb25mb3JtZXJDVjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBWaWRlb0xheWVyTWFuYWdlck9iakM7CiBjbGFzcyBWaWRl
b1RyYWNrUHJpdmF0ZUFWRk9iakM7CiBjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI7CkBA
IC00MjYsNyArNDI2LDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8V2Fs
bFRpbWU+IG1fd2FsbENsb2NrQXRDYWNoZWRDdXJyZW50VGltZTsKICAgICBtdXRhYmxlIGludCBt
X3RpbWVDb250cm9sU3RhdHVzQXRDYWNoZWRDdXJyZW50VGltZSB7IDAgfTsKICAgICBtdXRhYmxl
IGRvdWJsZSBtX3JlcXVlc3RlZFJhdGVBdENhY2hlZEN1cnJlbnRUaW1lIHsgMCB9OwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fa2V5SUQ7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IG1fa2V5SUQ7CiAgICAgZG91YmxlIG1fY2FjaGVkUmF0ZSB7IDAgfTsKICAgICBib29s
IG1fcmVxdWVzdGVkUGxheWluZyB7IGZhbHNlIH07CiAgICAgZG91YmxlIG1fcmVxdWVzdGVkUmF0
ZSB7IDEuMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggZDE4YTg1YTc5NGY1MjNmOTQ5
MTJlMjdmMDhiN2NjYmU4OTNjOGVkMC4uYjFjNjA3OWM2NDg3MGY4OGUzNWM4MDgxMWE1YjE4YmRh
MWI3ZjYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0yNzkyLDcgKzI3OTIsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmF0dGVtcHRUb0RlY3J5cHRX
aXRoSW5zdGFuY2UoQ0RNSW5zdGFuYwogICAgIGlmICghbV9rZXlJRCB8fCAhbV9jZG1JbnN0YW5j
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUlu
c3RhbmNlLT5zZXNzaW9uRm9yS2V5SURzKFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj46OmZyb20o
Km1fa2V5SUQpKTsKKyAgICBhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1fY2RtSW5zdGFuY2UtPnNl
c3Npb25Gb3JLZXlJRHMoVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmZyb20o
Km1fa2V5SUQpKTsKICAgICBpZiAoIWluc3RhbmNlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5tbQppbmRleCBkOTYwYWZkY2EyMTRiZmE0NDBlZWEyMDg4M2JjYTkxMzJlMjJmOWEwLi40ZGQ2
YjkxYTk0ODMxNjlhMDIzNjg4OGQwZTRkODJmZmI4MzY2NjJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTIxMyw3ICsy
MTMsNyBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQygpCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoU2VnbWVu
dCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
ciwgQXBwZW5kRmxhZ3MgZmxhZ3MpCiB7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBzZWdtZW50
LnRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVzZXQgfHwg
ZmxhZ3MgPT0gQXBwZW5kRmxhZ3M6OkRpc2NvbnRpbnVpdHkpCiAgICAgICAgIFttX3BhcnNlciBh
cHBlbmRTdHJlYW1EYXRhOm5zRGF0YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2Vy
U3RyZWFtRGF0YURpc2NvbnRpbnVpdHldOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IDAzNDIwZjEzODM2
NGZhYzIwOTFlMTA0ZDEzNmZmMzhhMWZiOWZlMjIuLmVhZDA4M2E2Y2M3ZTczNmI0MjE3MTBmYWMz
OTJhMDdkZmY5MmJlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtNzMsNyArNzMsNyBAQCBjbGFzcyBWaWRlb1RyYWNr
UHJpdmF0ZTsKIGNsYXNzIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOwogY2xh
c3MgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFzcyBXZWJDb3JlRGVj
b21wcmVzc2lvblNlc3Npb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQ0Vycm9yQ2xp
ZW50IHsKIHB1YmxpYzoKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
UHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSWQoUmVmPE1lZGlhU2FtcGxlPiYmLCB1aW50NjRfdCB0
cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CiAKICAgICAvLyBTb3VyY2VCdWZmZXJQ
cml2YXRlIG92ZXJyaWRlcwotICAgIHZvaWQgYXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsOworICAgIHZvaWQgYXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCkg
ZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgZmluYWw7CkBAIC0yMjEs
NyArMjIxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
ICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakM+IG1fY2RtSW5zdGFuY2U7Ci0gICAgVmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+PiBtX2tleUlEczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiBtX2tleUlEczsKICNlbmRpZgogCiAgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IG1f
Y2FjaGVkU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0KaW5kZXggM2EyODY3YTFhYzI0M2JiOWM5M2M5ZDZiNzBjYTU2YjAy
OTQ4ZmM5Yy4uMjRhZTBlMTQwNjAxOTE0M2ZhZDRmMTUyOWU2OGVkNDliNDE2NTNjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
bW0KQEAgLTU2Myw3ICs1NjMsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpk
aWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGbwogICAgIFVOVVNF
RF9QQVJBTShoYXNTZXNzaW9uU2VtYXBob3JlKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImRhdGEgbGVuZ3RoID0g
IiwgZGF0YS0+c2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCBmMGQ4ZTcxMTMyZjZjMjg3YTJlNjI5YTRiODhhNTM5
ZGZkNTNjYmUyLi4wZWZlZWFlZjViMmQ3MWJjNmQ2NzA0ZGQxYjk3NWFjYmFlMTEzYmJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaApA
QCAtNDMsNyArNDMsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OwogY2xhc3MgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIpOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbnNl
UmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChj
b25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2b2lk
IG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIG5l
d0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7
CiAKICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVudDsKICAg
ICBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IG1fYXZSZXF1ZXN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
CmluZGV4IGEyMmE5OTdiMTEwNzlkNDY1ODZhYTY0ODU2MWJiZjcyYTZmMjQ3ZjAuLmY5MjFmM2Rh
MGU2OWIzMzk5NzdjOWUzZTQ5NjY3YTI4ZjVlOTVjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTE1NiwxNCArMTU2LDE0
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgZmluYWwgeyBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQog
ICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGRh
dGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWdu
ZWQgbG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikgZmluYWw7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgbG9hZEZh
aWxlZChlcnJvcik7IH0KICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgbG9hZEZhaWxlZChlcnJvcik7
IH0KICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbCB7IGxvYWRGaW5pc2hlZCgpOyB9CiAKICAgICBXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlh
UmVzb3VyY2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07CiAKIFdlYWtQdHI8UGxhdGZv
cm1SZXNvdXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmNyZWF0
ZShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMTEsMTMgKzIx
MSwxMCBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkK
ICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQoKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVJlc291cmNl
TWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVy
ID0gV1RGTW92ZShidWZmZXIpOwotICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChX
VEZNb3ZlKGJ1ZmZlcikpOwotICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZl
cigqbV9idWZmZXIpOworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAg
IG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwog
fQogCiBjbGFzcyBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcj4gewpAQCAtMzg4LDcgKzM4NSw3IEBAIHZv
aWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIHN0b3BMb2Fk
aW5nKCk7CiB9CiAKLXZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVk
SW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdEYXRhUmVxdWVz
dCogZGF0YVJlcXVlc3QgPSBbbV9hdlJlcXVlc3QgZGF0YVJlcXVlc3RdOwogICAgIGlmICghZGF0
YVJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggZGI0NTdhODFkM2Vl
ODI5MWI5MDVlOWJhNzdjMWUyYWYzMDllMGNiMi4uOTQxOWJjZWEzOGRiZjhkNjQ5MmY2ODAxZDlh
MjE1NjIzNjZhMmM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzEsMTAg
KzMxLDExIEBAIHR5cGVkZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiAgRlRfRmFjZTsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25D
b250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1
Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFu
dFNldHRpbmdzOwogCkBAIC00NSw3ICs0Niw3IEBAIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1E
YXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKIHB1YmxpYzoKLSAgICBGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKEZUX0ZhY2UsIFNoYXJlZEJ1ZmZlciYpOworICAgIEZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoRlRfRmFjZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIH5Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhKCkgPSBkZWZhdWx0OwogICAgIEZvbnRQbGF0Zm9ybURhdGEgZm9udFBsYXRm
b3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBj
b25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGb3Jt
YXQoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYTM0NGJiZWNkYTlmZmU2N2Q0ZThk
M2U0NWUyZDA0YmVkM2Q1MGMwNi4uYjZkM2ViMzYzMTEyNDQ2MTNiMzgwM2YyZjNkMjRkMzA4N2Vh
MjRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjQ0LDE2ICsyNDQsMTYgQEAgc2l6ZV90IHNoYXJlZEJ1
ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBv
c2l0aW9uLAogCiB2b2lkIHNoYXJlZEJ1ZmZlclJlbGVhc2Uodm9pZCogaW5mbykKIHsKLSAgICBT
aGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGlu
Zm8pOworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19j
YXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBzaGFyZWRCdWZmZXItPmRl
cmVmKCk7CiB9CiAjZW5kaWYKIAotSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQor
SW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQot
ICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRh
dGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgdXRp
SGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAg
CiAgICAgaWYgKHV0aUhpbnQpIHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VT
b3VyY2VUeXBlSWRlbnRpZmllckhpbnQ7CkBAIC01NjIsMjMgKzU2MiwyNCBAQCBQbGF0Zm9ybUlt
YWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaQogICAgIHJldHVybiBtYXNrZWRJbWFnZSA/IG1hc2tlZEltYWdlIDogaW1h
Z2U7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAg
bV9pc0FsbERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZlZDsKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNh
biBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93
bGVkZ2UuCi0gICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNl
bGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJ
TyBpcwotICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgQ0dJ
bWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLmNyZWF0ZUNG
RGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRh
IGluc2lkZSB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5k
ZWQgdG8gd2l0aG91dCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KKyAg
ICAvLyBXZSB1c2UgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNl
bGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJ
TyBpcworICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
LgorICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0
YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVk
KTsKICNlbHNlCi0gICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgU2hh
cmVkQnVmZmVyLgotICAgIGRhdGEucmVmKCk7Ci0gICAgLy8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0
UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdldEJ5dGVQb2ludGVyIG9uZSBiZWNh
dXNlIFNoYXJlZEJ1ZmZlcgorICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAg
dGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCisgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRh
dGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBjb250aWd1b3VzRGF0YS5nZXQoKS5yZWYoKTsKKyAg
ICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0
aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgogICAg
IC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIg
YW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMgYSByZXF1
aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgogICAgIENHRGF0
YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBz
aGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKLSAg
ICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dE
YXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoJmRhdGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxs
YmFja3MpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9
IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoY29udGlndW91c0RhdGEucHRyKCks
IGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKICAgICBDR0ltYWdlU291cmNlVXBk
YXRlRGF0YVByb3ZpZGVyKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YVByb3ZpZGVyLmdldCgp
LCBhbGxEYXRhUmVjZWl2ZWQpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAppbmRleCA5NzQwNzM2YTIxYWM5
OThhYjA1ZjFjOWI0ZjViMTY3NWU0NGQyYzkxLi5hMGFjMWMyZmJlZTUyN2U1YWIxMTE0NTU4MTJi
ZGI3MzYzYTA1NTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKQEAgLTMyLDkgKzMyLDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgSW1hZ2VEZWNvZGVyQ0cgZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJbWFnZURlY29kZXJD
RyhTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbik7CisgICAgSW1hZ2VEZWNvZGVyQ0coRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
QWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAotICAgIHN0YXRpYyBS
ZWY8SW1hZ2VEZWNvZGVyQ0c+IGNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9u
IGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikKKyAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2RlckNHPiBjcmVhdGUoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyQ0coZGF0YSwgYWxwaGFPcHRp
b24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiAgICAgfQpAQCAtNjQsNyArNjQsNyBA
QCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNv
bnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cykpIGZpbmFsOwogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0
YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQog
ICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWwgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJ
bWFnZS5jcHAKaW5kZXggMzFjMjdjMDY5YjJiM2M3MDM3MzJlYjcxM2IyNjMxMjg0MjEyNGU2ZS4u
ZmY3N2I1M2U5ZDY5ZmM0NzA0NTEyNDcwMmYxYTM0ZjBmMmQ4N2NlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5j
cHAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRlc3Ryb3lEZWNv
ZGVkRGF0YShib29sKQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50
KCkKIHsKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFk
b3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+Y3JlYXRlQ0ZEYXRh
KCkuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRl
ciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKICAgICBtX2RvY3VtZW50ID0gYWRv
cHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKGRhdGFQcm92aWRlci5nZXQoKSkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcAppbmRleCBmNzQ3ZDgwZmI2MWQzMGZjNTAy
MmU2ODJkNjM1NjEzM2QzY2E2OTdhLi5jOGE4MDYxMjIwNTNmNjQ4YWRkYjAyYWMzODljZTcxNDM2
OGRiYmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9p
ZCBTb3VyY2VCdWZmZXJQYXJzZXI6OnNldE1pbmltdW1BdWRpb1NhbXBsZUR1cmF0aW9uKGZsb2F0
KQogewogfQogCi1Tb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OlNlZ21lbnQoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCitTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OlNlZ21lbnQo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIDogbV9zZWdtZW50KFdU
Rk1vdmUoYnVmZmVyKSkKIHsKIH0KQEAgLTEwMSw3ICsxMDEsNyBAQCBzaXplX3QgU291cmNlQnVm
ZmVyUGFyc2VyOjpTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICAgICAgICAgIHJldHVybiBjbGFt
cFRvPHNpemVfdD4oTVRQbHVnaW5CeXRlU291cmNlR2V0TGVuZ3RoKGJ5dGVTb3VyY2UuZ2V0KCkp
KTsKICAgICAgICAgfSwKICNlbmRpZgotICAgICAgICBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVy
PiYgYnVmZmVyKQorICAgICAgICBbXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci0+c2l6ZSgpOwog
ICAgICAgICB9CkBAIC0xMjUsNyArMTI1LDcgQEAgYXV0byBTb3VyY2VCdWZmZXJQYXJzZXI6OlNl
Z21lbnQ6OnJlYWQoc2l6ZV90IHBvc2l0aW9uLCBzaXplX3Qgc2l6ZVRvUmVhZCwgdWludDgKICAg
ICAgICAgICAgIHJldHVybiBVbmV4cGVjdGVkPFJlYWRFcnJvcj4geyBSZWFkRXJyb3I6OkZhdGFs
RXJyb3IgfTsKICAgICAgICAgfSwKICNlbmRpZgotICAgICAgICBbJl0oY29uc3QgUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVhZFJlc3VsdAorICAgICAgICBbJl0oY29uc3QgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlYWRSZXN1bHQKICAgICAgICAgewog
ICAgICAgICAgICAgYnVmZmVyLT5jb3B5VG8oZGVzdGluYXRpb24sIHBvc2l0aW9uLCBzaXplVG9S
ZWFkKTsKICAgICAgICAgICAgIHJldHVybiBzaXplVG9SZWFkOwpAQCAtMTMzLDcgKzEzMyw3IEBA
IGF1dG8gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpyZWFkKHNpemVfdCBwb3NpdGlvbiwg
c2l6ZV90IHNpemVUb1JlYWQsIHVpbnQ4CiAgICAgKTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4g
U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50Ojp0YWtlU2hhcmVkQnVmZmVyKCkKK1JlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VTaGFy
ZWRCdWZmZXIoKQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc2VnbWVudCwKICNpZiBI
QVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVSKQpAQCAtMTQyLDI4ICsxNDIsMjggQEAgUmVmPFNo
YXJlZEJ1ZmZlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50Ojp0YWtlU2hhcmVkQnVmZmVy
KCkKICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3Ioc2l6ZSgpKTsKICAgICAgICAg
ICAgIGF1dG8gcmVhZFJlc3VsdCA9IHJlYWQoMCwgdmVjdG9yLnNpemUoKSwgdmVjdG9yLmRhdGEo
KSk7CiAgICAgICAgICAgICBpZiAoIXJlYWRSZXN1bHQuaGFzX3ZhbHVlKCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICAgICAgdmVjdG9y
LnNocmluayhyZWFkUmVzdWx0LnZhbHVlKCkpOwotICAgICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSk7CisgICAgICAgICAgICByZXR1cm4gRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSk7CiAgICAgICAgIH0sCiAj
ZW5kaWYKLSAgICAgICAgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgICAgIFsm
XShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UoYnVmZmVyLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
KTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKGJ1ZmZlciwgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpOwogICAgICAgICB9CiAgICAgKTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpnZXRTaGFyZWRCdWZmZXIo
KSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNl
cjo6U2VnbWVudDo6Z2V0U2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihtX3NlZ21lbnQsCiAjaWYgSEFWRShNVF9QTFVHSU5fRk9STUFUX1JFQURFUikKLSAg
ICAgICAgWyZdKGNvbnN0IFJldGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VSZWY+JikgLT4gUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4KKyAgICAgICAgWyZdKGNvbnN0IFJldGFpblB0cjxNVFBsdWdpbkJ5
dGVTb3VyY2VSZWY+JikgLT4gUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+CiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9LAogI2VuZGlmCi0gICAg
ICAgIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZWZQdHI8U2hhcmVk
QnVmZmVyPgorICAgICAgICBbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIC0+IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPgogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gYnVmZmVyLnB0cigpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
ci5oCmluZGV4IDUyMGI1MjA3ZmMyNzFkNzk4MTUzM2ZiMTRkMjMxNTU5NGE4ODgzNjUuLjcyOTdh
NzkxNGE3OWFkZjY0MmRjNmIxNmIzNmU2MGY5Y2QwMjlmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
ci5oCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGVu
dFR5cGU7CiBjbGFzcyBNZWRpYVNhbXBsZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNvdXJjZUJ1ZmZl
clBhcnNlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTb3VyY2VCdWZmZXJQYXJzZXI+
IHsKIHB1YmxpYzoKQEAgLTY5LDExICs2OSwxMSBAQCBwdWJsaWM6CiAjaWYgSEFWRShNVF9QTFVH
SU5fRk9STUFUX1JFQURFUikKICAgICAgICAgU2VnbWVudChSZXRhaW5QdHI8TVRQbHVnaW5CeXRl
U291cmNlUmVmPiYmKTsKICNlbmRpZgotICAgICAgICBTZWdtZW50KFJlZjxTaGFyZWRCdWZmZXI+
JiYpOworICAgICAgICBTZWdtZW50KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAg
ICAgICAgU2VnbWVudChTZWdtZW50JiYpID0gZGVmYXVsdDsKLSAgICAgICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gdGFrZVNoYXJlZEJ1ZmZlcigpOwotICAgICAgICAvLyBXaWxsIHJldHVybiBudWxscHRy
IGlmIFNlZ21lbnQncyBiYWNrZW5kIGlzbid0IGEgU2hhcmVkQnVmZmVyLgotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBnZXRTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICAgICAgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHRha2VTaGFyZWRCdWZmZXIoKTsKKyAgICAgICAgLy8gV2ls
bCByZXR1cm4gbnVsbHB0ciBpZiBTZWdtZW50J3MgYmFja2VuZCBpc24ndCBhIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIuCisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBnZXRT
aGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCkBA
IC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVS
KQogICAgICAgICAgICAgUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4sCiAjZW5kaWYK
LSAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+CisgICAgICAgICAgICBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgPiBtX3NlZ21lbnQ7CiAgICAgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCAzNTllZGI0MTVmZDM3NWVkODJiN2I0YTQ5ZjEx
ZTRjOGZkNmM3ZDZiLi45YmMxODk0MTk4NjMwYmFkOGQ3Y2JkMGIzYTViMjhlNDZlOWVmZTI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtMzY3LDcgKzM2Nyw3IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIEZyZWVEYXRhU2VnbWVudCh2b2lkKiByZWZjb24sIHZv
aWQqLCBzaXplX3QpCiAgICAgewotICAgICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9j
YXN0PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihyZWZjb24pOworICAgICAgICBhdXRvKiBi
dWZmZXIgPSByZWludGVycHJldF9jYXN0PERhdGFTZWdtZW50Kj4ocmVmY29uKTsKICAgICAgICAg
YnVmZmVyLT5kZXJlZigpOwogICAgIH0KIApAQCAtMzg4LDcgKzM4OCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICBhZHZhbmNlVG9OZXh0U2VnbWVudCgpOwogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2hhcmVkQnVmZmVyID0gY3VycmVudFNlZ21lbnQuZ2V0U2hhcmVkQnVmZmVyKCk7CisgICAgICAg
ICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gY3VycmVu
dFNlZ21lbnQuZ2V0U2hhcmVkQnVmZmVyKCk7CiAgICAgICAgICAgICBDTUJsb2NrQnVmZmVyUmVm
IHJhd0Jsb2NrQnVmZmVyID0gbnVsbHB0cjsKICAgICAgICAgICAgIHVpbnQ2NF90IGxhc3RSZWFk
ID0gMDsKICAgICAgICAgICAgIHNpemVfdCBkZXN0aW5hdGlvbk9mZnNldCA9IG1fcG9zaXRpb25X
aXRoaW5TZWdtZW50OwpAQCAtNDA5LDcgKzQwOSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICBkZXN0aW5hdGlvbk9mZnNldCA9IDA7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgIEFTU0VSVChzaGFyZWRCdWZmZXItPmhhc09uZVNlZ21lbnQoKSwgIkNhbiBvbmx5IGRl
YWwgd2l0aCBzaGFyZWRCdWZmZXIgY29udGFpbmluZyBhIHNpbmdsZSBEYXRhU2VnbWVudCIpOwot
ICAgICAgICAgICAgICAgIC8vIEEgU2hhcmVkQnVmZmVyIGRvZXNuJ3QgaGF2ZSB0aHJlYWQtc2Fm
ZSByZWZjb3VudGluZywgYXMgc3VjaCB3ZSBtdXN0IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIERh
dGFTZWdtZW50IGluc3RlYWQuCisgICAgICAgICAgICAgICAgLy8gQSBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyIGRvZXNuJ3QgaGF2ZSB0aHJlYWQtc2FmZSByZWZjb3VudGluZywgYXMgc3VjaCB3ZSBt
dXN0IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIERhdGFTZWdtZW50IGluc3RlYWQuCiAgICAgICAg
ICAgICAgICAgLy8gVE9ETzogY291bGQgd2Ugb25seSBjcmVhdGUgYSBuZXcgQ01CbG9ja0J1ZmZl
ciBpZiB0aGUgYmFja2VuZCBtZW1vcnkgY2hhbmdlZCBzaW5jZSB0aGUgcHJldmlvdXMgb25lPwog
ICAgICAgICAgICAgICAgIGF1dG8gZmlyc3RTZWdtZW50ID0gc2hhcmVkQnVmZmVyLT5iZWdpbigp
LT5zZWdtZW50OwogICAgICAgICAgICAgICAgIHNpemVfdCBjYW5SZWFkID0gc3RkOjptaW48c2l6
ZV90PihudW1Ub1JlYWQsIGZpcnN0U2VnbWVudC0+c2l6ZSgpIC0gbV9wb3NpdGlvbldpdGhpblNl
Z21lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRl
eCBlODA1MDllY2NhMDVkMmNjOGVkMTA2NjA3MDQxZjVjY2NjM2UzNzk0Li42MzhlNjgzOTdhMmI2
Njk2YjJmMWVkZTI0ZWE4ZmRiOTA2MjZjZWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtNzI5LDcgKzcyOSw3IEBAIERpZENoYW5nZUl0ZW1CdWZm
ZXIgSXRlbUJ1ZmZlcjo6c3dhcFdyaXRhYmxlQnVmZmVySWZOZWVkZWQoc2l6ZV90IG51bWJlck9m
Qnl0ZXMpCiB2b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIHRl
bXBvcmFyeUl0ZW0pCiB7CiAgICAgYXV0byByZXF1aXJlZFNpemVGb3JJdGVtID0gbV93cml0aW5n
Q2xpZW50LT5yZXF1aXJlZFNpemVGb3JJdGVtKHRlbXBvcmFyeUl0ZW0pOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG91dE9mTGluZUl0ZW07CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IG91dE9mTGluZUl0ZW07CiAgICAgaWYgKCFyZXF1aXJlZFNpemVGb3JJdGVtKSB7CiAg
ICAgICAgIG91dE9mTGluZUl0ZW0gPSBtX3dyaXRpbmdDbGllbnQtPmVuY29kZUl0ZW1PdXRPZkxp
bmUodGVtcG9yYXJ5SXRlbSk7CiAgICAgICAgIGlmICghb3V0T2ZMaW5lSXRlbSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAppbmRleCBjODczMTk4MmVmODM5MzFiYmFl
MzFiNzg2NTBhYzBkYTIwYTA1ZmM1Li5iMzFiYzVmZDRlOTIxNGIxNWEzNzYxZmJlOThkNjBjZWI0
N2E5OGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCkBAIC0x
MDIsNyArMTAyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGlu
ZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdAorICAgIHZpcnR1YWwgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJ
dGVtJikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTE2
OCw3ICsxNjgsNyBAQCBwdWJsaWM6CiAgICAgLy8gd2l0aCBwYWRkaW5nIGJldHdlZW4gZWFjaCBp
dGVtIHRvIGVuc3VyZSB0aGF0IGFsbCBpdGVtcyBhcmUgYWxpZ25lZCB0byA4IGJ5dGVzLgogICAg
IC8vCiAgICAgLy8gSWYgYSB3cml0aW5nIGNsaWVudCBpcyBwcmVzZW50IGFuZCByZXF1aXJlcyBj
dXN0b20gZW5jb2RpbmcgZm9yIHRoZSBnaXZlbiBpdGVtIHR5cGUgVCwgdGhlCi0gICAgLy8gaXRl
bSBidWZmZXIgd2lsbCBhc2sgdGhlIGNsaWVudCBmb3IgYW4gb3BhcXVlIFNoYXJlZEJ1ZmZlciBj
b250YWluaW5nIGVuY29kZWQgZGF0YSBmb3IgdGhlCisgICAgLy8gaXRlbSBidWZmZXIgd2lsbCBh
c2sgdGhlIGNsaWVudCBmb3IgYW4gb3BhcXVlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgY29udGFp
bmluZyBlbmNvZGVkIGRhdGEgZm9yIHRoZQogICAgIC8vIGl0ZW0uIFRoaXMgZW5jb2RlZCBkYXRh
IGlzIHRoZW4gYXBwZW5kZWQgdG8gdGhlIGl0ZW0gYnVmZmVyLCB3aXRoIHBhZGRpbmcgdG8gZW5z
dXJlIHRoYXQKICAgICAvLyB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0aGlzIGRhdGEgYXJlIGFsaWdu
ZWQgdG8gOCBieXRlcywgaWYgbmVjZXNzYXJ5LiBXaGVuIGNvbnN1bWluZyBlbmNvZGVkCiAgICAg
Ly8gaXRlbSBkYXRhLCBhIGNvcnJlc3BvbmRpbmcgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgd2ls
bCBiZSByZXF1aXJlZCB0byBjb252ZXJ0IHRoaXMgZW5jb2RlZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNTA2YjRkZDYyZDU1YTU2
YTI3OGMzMGNjYWIyZDE5MTEwZjI0MWVlYy4uMmI0NDNmYmJlZDJjMWZkZTQ4YmNkZTljYmU0MDk1
MzQ5N2ZkZTkxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
RnJlZVR5cGUuY3BwCkBAIC0zOCwxMiArMzgsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dGF0aWMgdm9pZCByZWxlYXNlQ3VzdG9tRm9udERhdGEodm9pZCogZGF0YSkKIHsKLSAgICBzdGF0
aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICBzdGF0aWNfY2FzdDxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CiB9CiAKIHN0YXRpYyBjYWly
b191c2VyX2RhdGFfa2V5X3QgZnJlZVR5cGVGYWNlS2V5OwogCi1Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhKEZUX0ZhY2UgZnJlZVR5cGVGYWNlLCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK0ZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OkZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoRlRfRmFjZSBmcmVlVHlwZUZhY2UsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKICAgICA6IG1fZm9udEZhY2UoYWRvcHRSZWYoY2Fpcm9fZnRfZm9udF9mYWNlX2NyZWF0ZV9m
b3JfZnRfZmFjZShmcmVlVHlwZUZhY2UsIEZUX0xPQURfREVGQVVMVCkpKQogewogICAgIGJ1ZmZl
ci5yZWYoKTsgLy8gVGhpcyBpcyBiYWxhbmNlZCBieSB0aGUgYnVmZmVyLT5kZXJlZigpIGluIHJl
bGVhc2VDdXN0b21Gb250RGF0YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5j
cHAKaW5kZXggOWFkMTliODc2YjI3ZTYwZDRmYmE1MDMwZTY1ZjgxZTdjYThhNTA2OS4uZGZiYzU4
MGZiOGU5YjMwOTM2Y2NhMDhiYjg4YjQ5YzJiYjY1M2FjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTgxLDEyICs4MSwxMiBAQCBJbWFnZURlY29kZXJHU3Ry
ZWFtZXJTYW1wbGUqIHRvU2FtcGxlKEl0ZXJhdG9yIGl0ZXIpCiAgICAgcmV0dXJuIChJbWFnZURl
Y29kZXJHU3RyZWFtZXJTYW1wbGUqKWl0ZXItPnNlY29uZC5nZXQoKTsKIH0KIAotUmVmUHRyPElt
YWdlRGVjb2RlckdTdHJlYW1lcj4gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGUoU2hhcmVk
QnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pCitSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBJbWFnZURlY29kZXJHU3RyZWFtZXI6
OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24g
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pKTsKIH0KIAotSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbWFn
ZURlY29kZXJHU3RyZWFtZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURlY29k
ZXJHU3RyZWFtZXI6OkltYWdlRGVjb2RlckdTdHJlYW1lcihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCiAgICAgOiBtX21pbWVUeXBlKG1pbWVUeXBlKQogewogICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKQEAgLTE5OSw3ICsxOTksNyBAQCBQbGF0Zm9ybUlt
YWdlUHRyIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEltYWdlRGVjb2Rl
ckdTdHJlYW1lcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wpCit2b2lkIEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sKQogewogICAgIHB1c2hFbmNvZGVkRGF0YShkYXRhKTsKIH0KQEAgLTQyNiwxMCArNDI2LDEx
IEBAIEVuY29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVy
OjplbmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0CiAgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVz
OjpVbmtub3duOwogfQogCi12b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWRE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBJbWFnZURlY29kZXJHU3RyZWFt
ZXI6OnB1c2hFbmNvZGVkRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7
CiAgICAgbV9lb3MgPSBmYWxzZTsKLSAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJ
bWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGJ1ZmZlci5kYXRhKCksIHNpemUg
PSBidWZmZXIuc2l6ZSgpXSB7CisgICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRh
KCksIHNpemUgPSBidWZmZXIuc2l6ZSgpXSB7CiAgICAgICAgIG1faW5uZXJEZWNvZGVyID0gSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmNyZWF0ZSgqdGhpcywgZGF0YSwgc2l6
ZSk7CiAgICAgICAgIG1faW5uZXJEZWNvZGVyLT5ydW4oKTsKICAgICB9LCBUaHJlYWRUeXBlOjpH
cmFwaGljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKaW5kZXggNjZmMzM3
Mjg0NmE0ZGY4NzRmNDIwZGI2NTRlNjg5YzllNDNiMGM1Mi4uZDNlZjZhNDVjZDdkYmRmYzMxMjBl
YTIzZjhkZWIzYzU5OTcxYWU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIu
aApAQCAtNDEsOCArNDEsOCBAQCBjbGFzcyBJbWFnZURlY29kZXJHU3RyZWFtZXIgZmluYWwgOiBw
dWJsaWMgSW1hZ2VEZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZURlY29kZXJHU3RyZWFtZXIpOwogcHVibGljOgotICAg
IHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBjcmVhdGUoU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKTsKLSAgICBJbWFnZURlY29kZXJHU3RyZWFtZXIoU2hhcmVkQnVmZmVyJiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2RlckdTdHJlYW1lcj4gY3JlYXRlKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIEltYWdlRGVjb2RlckdTdHJlYW1l
cihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFnZURl
Y29kZXJHU3RyZWFtZXIoKSA9IGRlZmF1bHQ7CiAKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c01l
ZGlhVHlwZShNZWRpYVR5cGUgdHlwZSkgeyByZXR1cm4gdHlwZSA9PSBNZWRpYVR5cGU6OlZpZGVv
OyB9CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5n
TGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMo
RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRFeHBlY3Rl
ZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWwgeyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAg
ICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9lb3M7IH0K
ICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsOwogCkBAIC0xMjIs
NyArMTIyLDcgQEAgcHJpdmF0ZToKICAgICB9OwogCiAgICAgdm9pZCBoYW5kbGVTYW1wbGUoR1Jl
ZlB0cjxHc3RTYW1wbGU+JiYpOwotICAgIHZvaWQgcHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpOworICAgIHZvaWQgcHVzaEVuY29kZWREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKIAogICAgIGNvbnN0IEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZSogc2Ft
cGxlQXRJbmRleChzaXplX3QpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDc5Nzk0ODBmOTFjNTk3YWE5ZjkwMDk3YzE4ODMy
YzZhMTVjMzJjZTguLmIzMjRjZjExNDY0N2IzMzc1ZTZhNDViZmFiMTAzZTBhMjkwZmI4ZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0z
NjkyLDcgKzM2OTIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoSW5pdERhdGEmJiBpbml0RAogCiAgICAgICAgIEdTVF9E
RUJVRygic2NoZWR1bGluZyBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCAlcyBldmVudCBv
ZiBzaXplICV6dSIsIGluaXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCkudXRmOCgpLmRhdGEo
KSwKICAgICAgICAgICAgIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKLSAgICAgICAgR1NU
X01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihp
bml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsK
KyAgICAgICAgR1NUX01FTURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2FkKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSks
IGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKICAgICAgICAgd2Vha1RoaXMtPm1fcGxheWVy
LT5pbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVy
VHlwZSgpLCBpbml0RGF0YS5wYXlsb2FkKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogICAg
IH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRl
eCA1ZDg2ZmIxYWY0ODdjMDI4OWUwMDEyNTU5NjVjMzFkY2RhOTczNDI2Li45MzAxOTA5OTQ1YjRh
MjNkNjY3ODJmMzUwYjU2ZTQ0NzlmODAyNmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2Vi
U291cmNlR1N0cmVhbWVyLmNwcApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogCiAgICAgLy8g
UGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50IHZpcnR1YWwgbWV0aG9kcy4KICAgICB2b2lkIHJl
c3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+
JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBv
dmVycmlkZTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2Fk
RmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKQEAgLTEwOTMsNyArMTA5Myw3IEBAIHZv
aWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uCiAgICAgY29tcGxldGlvbkhhbmRsZXIoU2hvdWxkQ29udGlu
dWVQb2xpY3lDaGVjazo6WWVzKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0Ns
aWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIFdlYktpdFdl
YlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMobV9zcmMuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFy
S2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NE
TVByb3h5Q2xlYXJLZXkuaAppbmRleCA2OTJhOTk2ZDE5YzI0ZWZkOWE0ODU1MjM3M2E1Njc5YjUy
ZTFlZjFjLi4zNDliZmRjYWFkNmM3ZDdmOGQ1YWRhMGExNzIxOWZkOWU3MDYyNmYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVBy
b3h5Q2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuaApAQCAtNjIsMTEgKzYyLDExIEBAIHB1YmxpYzoK
ICAgICBDRE1Qcm94eUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgfkNETVByb3h5
Q2xlYXJLZXkoKTsKIAotICAgIC8vIEZJWE1FOiBUaGVyZSdzIGEgbGFjayBvZiBjb25zaXN0ZW5j
eSBiZXR3ZWVuIFNoYXJlZEJ1ZmZlcnMsCisgICAgLy8gRklYTUU6IFRoZXJlJ3MgYSBsYWNrIG9m
IGNvbnNpc3RlbmN5IGJldHdlZW4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcnMsCiAgICAgLy8gVmVj
dG9yPGNoYXI+J3MgYW5kIHt1aW50OF90KixzaXplX3R9IGlkaW9tcyBmb3IgcmVwcmVzZW50aW5n
IGEgY2h1bmsgb2YKLSAgICAvLyBieXRlcy4gRml4IHRoYXQgc29tZWhvdy4gTm90ZSBTaGFyZWRC
dWZmZXJzIGFyZSBkYW5nZXJvdXMgc2luY2UKKyAgICAvLyBieXRlcy4gRml4IHRoYXQgc29tZWhv
dy4gTm90ZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVycyBhcmUgZGFuZ2Vyb3VzIHNpbmNlCiAgICAg
Ly8gdGhleSdyZSBub3QgdGhyZWFkLXNhZmUgYW5kIHRoaXMgY2xhc3MgbXVzdCBtYWludGFpbgot
ICAgIC8vIHRocmVhZC1zYWZldHksIGJ1dCBtYXliZSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
IGNvdWxkIGJlCisgICAgLy8gdGhyZWFkLXNhZmV0eSwgYnV0IG1heWJlIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50IGNvdWxkIGJlCiAgICAgLy8gbWFkZSB0byB3b3JrLCBob3dl
dmVyIHRoYXQgaGFzIHplcm8gaGVscGVycyBmb3IgZHJvcHBpbmcgaW50bwogICAgIC8vIGl0ZXJh
dG9yLWF3YXJlIC8gY29tcGFyYXRvci1hd2FyZSBjb250YWluZXJzLi4uCiAgICAgc3RydWN0IGNl
bmNEZWNyeXB0Q29udGV4dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAppbmRleCAyZWZhMDQz
NjBlODg0ODM4MDYxNDRjM2Q3MWRlNjNhZDdiNDJiNTYxLi5jMzg5MTZlN2QwNTllODg5YjVjODhl
ZWIwOWUwZjRjZmMwM2MxZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKQEAgLTIyMCw3
ICsyMjAsNyBAQCBib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c1Nlc3Npb25zKCkgY29u
c3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9y
dHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c0lu
aXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhlIGluaXRE
YXRhIGJ1ZmZlciBhcyBhbiBKU09OIG9iamVjdCBpbiBrZXlpZHMgY2FzZS4KICAgICBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRzIikgJiYgQ0RN
VXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QoaW5pdERhdGEpKQpAQCAtMjM3LDcgKzIzNyw3IEBA
IGJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlVGh1bmRlcjo6c2FuaXRpemVSZXNwb25zZShjb25zdCBT
aGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IENETVByaXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIHJldHVybiByZXNwb25zZS5jb3B5
KCk7CiB9CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OmluaXRp
YWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmEKICAgICBj
YWxsYmFjayhTdWNjZWVkZWQpOwogfQogCi12b2lkIENETUluc3RhbmNlVGh1bmRlcjo6c2V0U2Vy
dmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgIFN1Y2Nlc3ND
YWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OnNldFNlcnZlckNl
cnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCAgU3Vj
Y2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgT3BlbkNETUVycm9yIGVycm9yID0gb3Bl
bmNkbV9zeXN0ZW1fc2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShtX3RodW5kZXJTeXN0ZW0uZ2V0KCks
IGNvbnN0X2Nhc3Q8dWludDhfdCo+KGNlcnRpZmljYXRlLT5kYXRhKCkpLAogICAgICAgICBjZXJ0
aWZpY2F0ZS0+c2l6ZSgpKTsKQEAgLTMyNiw3ICszMjYsNyBAQCBSZWZQdHI8Q0RNSW5zdGFuY2VT
ZXNzaW9uPiBDRE1JbnN0YW5jZVRodW5kZXI6OmNyZWF0ZVNlc3Npb24oKQogY2xhc3MgUGFyc2Vk
UmVzcG9uc2VNZXNzYWdlIHsKIAogcHVibGljOgotICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZShj
b25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorICAgIFBhcnNlZFJlc3BvbnNlTWVz
c2FnZShjb25zdCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKICAgICB7
CiAgICAgICAgIGlmICghYnVmZmVyIHx8ICFidWZmZXItPnNpemUoKSkKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTM1NCw4ICszNTQsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzVmFsaWQoKSBj
b25zdCB7IHJldHVybiBtX2lzVmFsaWQ7IH0KICAgICBib29sIGhhc1BheWxvYWQoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX3BheWxvYWQpOyB9Ci0gICAgY29uc3QgUmVmPFNo
YXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJu
IG1fcGF5bG9hZC52YWx1ZSgpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSAm
IHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxvYWQudmFsdWUoKTsgfQorICAgIGNv
bnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0JiB7IEFTU0VS
VChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KKyAgICBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSAmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVy
biBtX3BheWxvYWQudmFsdWUoKTsgfQogICAgIGJvb2wgaGFzVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZS5oYXNfdmFsdWUoKTsgfQogICAgIFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGUg
dHlwZSgpIGNvbnN0IHsgQVNTRVJUKG1fdHlwZSk7IHJldHVybiBtX3R5cGUudmFsdWUoKTsgfQog
ICAgIFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGUgdHlwZU9yKFdlYkNvcmU6Ok1lZGlhS2V5
TWVzc2FnZVR5cGUgYWx0ZXJuYXRlKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPyBtX3R5cGUudmFs
dWUoKSA6IGFsdGVybmF0ZTsgfQpAQCAtMzY0LDExICszNjQsMTEgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIGJvb2wgbV9pc1ZhbGlkIHsgZmFsc2UgfTsKLSAgICBzdGQ6Om9wdGlvbmFsPFJl
ZjxTaGFyZWRCdWZmZXI+PiBtX3BheWxvYWQ7CisgICAgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+IG1fcGF5bG9hZDsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
Ok1lZGlhS2V5TWVzc2FnZVR5cGU+IG1fdHlwZTsKIH07CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uVGh1bmRlcjo6Y2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmNoYWxsZW5nZUdl
bmVyYXRlZENhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
IHsKICAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKGJ1ZmZl
cik7CiAgICAgaWYgKCFwYXJzZWRSZXNwb25zZU1lc3NhZ2UpIHsKQEAgLTQ3NSw3ICs0NzUsNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmtleXNVcGRhdGVEb25lQ2FsbGJhY2so
KQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgbWVzc2FnZSkKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFj
ayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewogICAgIEdTVF9F
UlJPUigiQ0RNIGVycm9yIik7CiAgICAgR1NUX01FTURVTVAoImVycm9yIGR1bXAiLCBtZXNzYWdl
LT5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CkBAIC00ODgsNyArNDg4LDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgbWVzc2FnZSkKICAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAK
LXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBpbml0RGF0YVNoYXJlZEJ1ZmZlciwKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
VGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5p
dERhdGFTaGFyZWRCdWZmZXIsCiAgICAgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTUwNiw3ICs1MDYsNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VU
eXBlLCBjb25zdCBBdAogICAgICAgICBtX2luaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpLCBtX2lu
aXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpLCBudWxscHRyLCAwLCAmbV90aHVuZGVyU2Vzc2lvbkNh
bGxiYWNrcywgdGhpcywgJnNlc3Npb24pOwogICAgIGlmICghc2Vzc2lvbikgewogICAgICAgICBH
U1RfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgc2Vzc2lvbiIpOwotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOworICAgICAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQo
KTsKICAgICAgICAgY2FsbGJhY2soaW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgeyB9LCBmYWxz
ZSwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTUxNSw3ICs1MTUsNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
IGxpY2Vuc2VUeXBlLCBjb25zdCBBdAogCiAgICAgYXV0byBnZW5lcmF0ZUNoYWxsZW5nZSA9IFt0
aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbml0
RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKICAgICAgICAgaWYg
KG1fc2Vzc2lvbklELmlzRW1wdHkoKSkgewogICAgICAgICAgICAgR1NUX0VSUk9SKCJjb3VsZCBu
b3QgY3JlYXRlIHNlc3Npb24gaWQiKTsKICAgICAgICAgICAgIGNhbGxiYWNrKGluaXREYXRhLnJl
bGVhc2VOb25OdWxsKCksIHsgfSwgZmFsc2UsIEZhaWxlZCk7CkBAIC01NDUsMTMgKzU0NSwxMyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnNlc3Npb25GYWlsdXJlKCkKICAgICBt
X3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGlj
ZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxs
YmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxi
YWNrKQogewogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gbV9zZXNz
aW9uSUQpOwogCiAgICAgR1NUX1RSQUNFKCJVcGRhdGluZyBzZXNzaW9uICVzIiwgc2Vzc2lvbklE
LnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQo
W3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZU1lc3NhZ2UpIG11dGFibGUgeworICAgIG1fc2Vzc2lv
bkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3Bv
bnNlTWVzc2FnZSkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlTWVzc2FnZSkK
QEAgLTU2Miw3ICs1NjIsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeQogICAgICAgICAgICAg
ICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UocmVzcG9uc2VN
ZXNzYWdlKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocGFyc2VkUmVzcG9uc2VNZXNzYWdlKTsK
ICAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdlLmhhc1BheWxvYWQoKSkg
ewotICAgICAgICAgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92
ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3Bv
bnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoImdv
dCBtZXNzYWdlIG9mIHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAg
ICAgICAgR1NUX01FTURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2UtPnNp
emUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCwKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
blRodW5kZXI6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25J
RAogewogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gbV9zZXNzaW9u
SUQpOwogCi0gICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiByZXNwb25zZU1lc3NhZ2UpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxs
YmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1
Y2Nlc3MsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkg
bXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChz
dWNjZXNzKSB7CiAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlTWVzc2FnZSkKQEAgLTU5Nyw3ICs1
OTcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmxvYWRTZXNzaW9uKExpY2Vu
c2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JRAogICAgICAgICAgICAgICAgIFBhcnNlZFJl
c3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UocmVzcG9uc2VNZXNzYWdlKTsKICAg
ICAgICAgICAgICAgICBBU1NFUlQocGFyc2VkUmVzcG9uc2VNZXNzYWdlKTsKICAgICAgICAgICAg
ICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdlLmhhc1BheWxvYWQoKSkgewotICAgICAgICAg
ICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNw
b25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5w
YXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoImdvdCBtZXNzYWdlIG9m
IHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX01F
TURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6
Om1ha2VfcGFpcihwYXJzZWRSZXNwb25zZU1lc3NhZ2UudHlwZU9yKE1lZGlhS2V5TWVzc2FnZVR5
cGU6OkxpY2Vuc2VSZXF1ZXN0KSwKQEAgLTY0MCw3ICs2NDAsNyBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklE
LCBMaWNlbgogewogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBtX3Nlc3Npb25JRCA9PSBz
ZXNzaW9uSUQpOwogCi0gICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMs
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFj
a3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nl
c3MsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgbXV0YWJsZSB7CiAg
ICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChzdWNjZXNzKSB7CiAg
ICAgICAgICAgICBpZiAoIWJ1ZmZlcikKQEAgLTY0OSw3ICs2NDksNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvblRodW5kZXI6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklELCBMaWNlbgogICAgICAgICAgICAgICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRS
ZXNwb25zZU1lc3NhZ2UoYnVmZmVyKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocGFyc2VkUmVz
cG9uc2VNZXNzYWdlKTsKICAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdl
Lmhhc1BheWxvYWQoKSkgewotICAgICAgICAgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBt
ZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZN
b3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAg
ICBHU1RfREVCVUcoInNlc3Npb24gJXMgcmVtb3ZlZCwgbWVzc2FnZSBsZW5ndGggJXp1IiwgbV9z
ZXNzaW9uSUQudXRmOCgpLmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAg
ICAgICAgY2FsbGJhY2sobV9rZXlTdG9yZS5hbGxLZXlzQXMoTWVkaWFLZXlTdGF0dXM6OlJlbGVh
c2VkKSwgV1RGTW92ZShtZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwogICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oCmluZGV4IGNkZDhkYTIxMTIz
YzE3OTFhZTJmYjY0MzlmZjJkNmZhMGQyZWIyMWMuLjEwMjBlMTUzMjI3MWI1MzUxZTEwNmRkZThm
MjFlYTU0MDVhOWMyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oCkBAIC05Myw4ICs5Myw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CiAgICAgYm9vbCBz
dXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9y
dHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25z
dCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBj
b25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYs
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNh
bml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiBwcml2YXRlOgpA
QCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICAvLyBDRE1JbnN0YW5jZQogICAgIEltcGxl
bWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJ
bXBsZW1lbnRhdGlvblR5cGU6OlRodW5kZXI7IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29u
ZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5j
dGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYp
IGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNh
dGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5h
bDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAg
ICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2tleVN5
c3RlbTsgfQogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBm
aW5hbDsKQEAgLTEyNiw4ICsxMjYsOCBAQCBjbGFzcyBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVy
IGZpbmFsIDogcHVibGljIENETUluc3RhbmNlU2Vzc2lvblByb3h5IHsKIHB1YmxpYzoKICAgICBD
RE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyKENETUluc3RhbmNlVGh1bmRlciYpOwogCi0gICAgdm9p
ZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmlu
YWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAg
dm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNh
bGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBM
aWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVD
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGlj
ZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CkBAIC0xNDEsMTQg
KzE0MSwxNCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIENETUluc3RhbmNlVGh1bmRlciogY2Rt
SW5zdGFuY2VUaHVuZGVyKCkgY29uc3Q7CiAKLSAgICB1c2luZyBOb3RpZmljYXRpb24gPSB2b2lk
IChDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjoqKShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKTsKKyAgICB1c2luZyBOb3RpZmljYXRpb24gPSB2b2lkIChDRE1JbnN0YW5jZVNlc3Np
b25UaHVuZGVyOjoqKShSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7
CiAgICAgdXNpbmcgQ2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKCk+
OwotICAgIHVzaW5nIFNlc3Npb25DaGFuZ2VkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGJvb2ws
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpPjsKKyAgICB1c2luZyBTZXNzaW9uQ2hhbmdlZENhbGxi
YWNrID0gRnVuY3Rpb248dm9pZChib29sLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jik+OwogCi0gICAgdm9pZCBjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmKTsKKyAgICB2b2lkIGNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB2b2lkIGtleVVwZGF0ZWRDYWxsYmFjayhL
ZXlJRFR5cGUmJik7CiAgICAgdm9pZCBrZXlzVXBkYXRlRG9uZUNhbGxiYWNrKCk7Ci0gICAgdm9p
ZCBlcnJvckNhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgZXJyb3JD
YWxsYmFjayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpLZXlTdGF0dXMgc3RhdHVzKGNvbnN0IEtleUlEVHlwZSYpIGNvbnN0OwogICAg
IHZvaWQgc2Vzc2lvbkZhaWx1cmUoKTsKIApAQCAtMTU5LDcgKzE1OSw3IEBAIHByaXZhdGU6CiAg
ICAgSW5pdERhdGEgbV9pbml0RGF0YTsKICAgICBPcGVuQ0RNU2Vzc2lvbkNhbGxiYWNrcyBtX3Ro
dW5kZXJTZXNzaW9uQ2FsbGJhY2tzIHsgfTsKICAgICBCb3hQdHI8T3BlbkNETVNlc3Npb24+IG1f
c2Vzc2lvbjsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX21lc3NhZ2U7CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fbWVzc2FnZTsKICAgICBib29sIG1fbmVlZHNJbmRp
dmlkdWFsaXphdGlvbiB7IGZhbHNlIH07CiAgICAgVmVjdG9yPENoYWxsZW5nZUdlbmVyYXRlZENh
bGxiYWNrPiBtX2NoYWxsZW5nZUNhbGxiYWNrczsKICAgICBWZWN0b3I8U2Vzc2lvbkNoYW5nZWRD
YWxsYmFjaz4gbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0
aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAppbmRleCAzZjg1YWZlNzNjODQyNzYyOTk3ZDVhYmMy
ZDdiYzA3ZjdjMDFiOWMzLi5lYTg5MGY2N2RhMjEzODdmNDBkYTY1MWEwY2E1YzczNDkzZTg0ZjY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCkBAIC03
MSw3ICs3MSw3IEBAIHN0YXRpYyB2b2lkIG1hcmt1cEVycm9yKEdNYXJrdXBQYXJzZUNvbnRleHQq
LCBHRXJyb3IqLCBncG9pbnRlcikKIAogc3RhdGljIEdNYXJrdXBQYXJzZXIgbWFya3VwUGFyc2Vy
IHsgbWFya3VwU3RhcnRFbGVtZW50LCBtYXJrdXBFbmRFbGVtZW50LCBtYXJrdXBUZXh0LCBtYXJr
dXBQYXNzdGhyb3VnaCwgbWFya3VwRXJyb3IgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5p
dERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNl
ZFBheWxvYWQpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJh
Y3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCiB7
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXls
b2FkKTsKICAgICBpZiAoIXBheWxvYWQgfHwgIXBheWxvYWQtPnNpemUoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVy
RU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1YWZmODQ1ZjQwOWE3NWQ3MWE5
ODQwYWNmMWQzNDJhNDY0N2QyZjEuLjI3ZGQ0ZWFlMGQyZTAxYWI0ZDg0YzBhYmM0MjRlYmIxMDEw
NGMwNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAt
MzgsOCArMzgsNyBAQCBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOKHdlYmtpdF9tZWRpYV9jb21t
b25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5KQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgSW5pdERhdGEgewogcHVibGljOgotICAgIEluaXREYXRhKCkKLSAgICAgICAgOiBt
X3BheWxvYWQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkgeyB9CisgICAgSW5pdERhdGEoKSA9IGRl
ZmF1bHQ7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYW4gZW51bSBmb3Igc3lzdGVt
IHV1aWRzIGZvciBiZXR0ZXIgdHlwZSBzYWZldHkuCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5n
JiBzeXN0ZW1JZCwgR3N0QnVmZmVyKiBpbml0RGF0YSkKQEAgLTUwLDEzICs0OSwxNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBHU1RfQ0FUX0xFVkVMX0xPRyh3ZWJraXRfbWVkaWFfY29tbW9uX2Vu
Y3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSwgR1NUX0xFVkVMX0VSUk9SLCBudWxscHRy
LCAiY2Fubm90IG1hcCAlcyBwcm90ZWN0aW9uIGRhdGEiLCBzeXN0ZW1JZC51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgICAg
IG1fcGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RD
ZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKSkKKyAgICAg
ICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsK
ICAgICB9CiAKLSAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIHBheWxvYWQpCisgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1J
ZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAgICAgICAgOiBt
X3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChleHRyYWN0Q2VuY0lmTmVl
ZGVkKFdURk1vdmUocGF5bG9hZCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBheWxvYWQpIHsKKyAg
ICAgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKHBh
eWxvYWQtPm1ha2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAgIG1fcGF5bG9hZC5hcHBl
bmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQogICAgIH0KIAog
ICAgIHZvaWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03MiwxMCArNzUsMTAgQEAg
cHVibGljOgogICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28gYmUgY2FyZWZ1bCBo
ZXJlIQogICAgICAgICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1JZDsKIAotICAgICAg
ICBtX3BheWxvYWQtPmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAgICAgICAgbV9wYXls
b2FkLmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAgICBjb25zdCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZDsgfQor
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBwYXlsb2FkKCkgY29uc3QgeyByZXR1
cm4gbV9wYXlsb2FkLmdldCgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3lzdGVtSWQ7IH0KICAgICBTdHJpbmcgcGF5bG9hZENvbnRhaW5lclR5cGUo
KSBjb25zdAogICAgIHsKQEAgLTg2LDExICs4OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biAiY2VuYyJfczsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0
cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3lzdGVtSWQ7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXlsb2FkOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
bV9wYXlsb2FkOwogfTsKIAogY2xhc3MgUHJvdGVjdGlvblN5c3RlbUV2ZW50cyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaAppbmRleCA3MThiOWJkMzE1ZWNjNjcwNzg5YzY1Y2JhYWEwMzQ5Mjk3
NWU3MmQzLi42OTI4YTYzZTk3MWM3YzM1ZTg4NDRlZWY3M2JmYTQ0YThkOGMwMzA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0
cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdz
PGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KaW5kZXggODNl
NmFmN2IwMzg5MjgzOGMzYmZlYTFjMGMxMWFhN2ZjZjhhNzdhOS4uNjhiY2M4ODQ2YThiMWYwZjdj
YmNmMTQwMzE5NjZlZDkyNDMyMmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KQEAgLTQ4LDcg
KzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNy
ZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZE
b2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKKyAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNl
KCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldKTsKIH0KIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjb21wdXRlQm91bmRzRm9yQ3Vy
cmVudFBhZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKaW5kZXggMDljMWM0NWM0NTkzYWVh
NDMxODMwZDIxNWI3ZTc0ODUyYzE5ZTM3Zi4uZmEwMDA4MTE2MDY2OTdkYzVjNTExMjMzM2M5MGM4
YzkyYjRiNjcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCkBAIC0zNSw5ICszNSwxMCBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5kaWFuVVNob3J0OworY2xhc3Mg
U2hhcmVkQnVmZmVyOwogc3RydWN0IEVPVFByZWZpeDsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJj
ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IHN0cnVjdCBFT1RIZWFkZXIgewogICAgIEVPVEhlYWRlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVW
ZXJ0aWNhbERhdGEuY3BwCmluZGV4IDJjZmE4NTRjMDIyNjY4YWNjMDA3MzdjMWViYjM1ZmYzNDhk
NThlMmIuLjBmYThmMzA2YWQ5NTJkMDZhMDkyOTdkMGIxZDI4N2I4OTg4MzJhM2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVy
dGljYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKQEAgLTM4MSw3ICszODEsNyBAQCBzdHJ1Y3Qg
R1NVQlRhYmxlIDogVGFibGVCYXNlIHsKIAogc3RhdGljIGJvb2wgbG9hZEhtdHhUYWJsZShjb25z
dCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIFZlY3Rvcjx1aW50MTZfdD4mIGFkdmFu
Y2VXaWR0aHMpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1E
YXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0g
cGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcpOwogICAgIGNvbnN0
IE9wZW5UeXBlOjpIaGVhVGFibGUqIGhoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVu
VHlwZTo6SGhlYVRhYmxlPihidWZmZXIpOwogICAgIGlmICghaGhlYSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtNDI0LDcgKzQyNCw3IEBAIE9wZW5UeXBlVmVydGljYWxEYXRhOjpPcGVuVHlw
ZVZlcnRpY2FsRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsCiB2b2lk
IE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRh
JiBwbGF0Zm9ybURhdGEpCiB7CiAgICAgLy8gTG9hZCB2aGVhIGZpcnN0LiBUaGlzIHRhYmxlIGlz
IHJlcXVpcmVkIGZvciBmb250cyB0aGF0IHN1cHBvcnQgdmVydGljYWwgZmxvdy4KLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVu
VHlwZTo6VmhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVU
YWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OlZoZWFUYWJsZSog
dmhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpWaGVhVGFibGU+KGJ1ZmZl
cik7CiAgICAgaWYgKCF2aGVhKQogICAgICAgICByZXR1cm47CkBAIC00ODYsNyArNDg2LDcgQEAg
dm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYgcGxhdGZvcm1EYXRhKQogCiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkVmVy
dGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1E
YXRhKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5v
cGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRm
b3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKICAgICBjb25zdCBPcGVu
VHlwZTo6R1NVQlRhYmxlKiBnc3ViID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6
OkdTVUJUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoZ3N1YikKICAgICAgICAgZ3N1Yi0+Z2V0VmVy
dGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoJm1fdmVydGljYWxHbHlwaE1hcCwgKmJ1ZmZlci5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGly
ZWN0V3JpdGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oCmluZGV4IGE2MjcxOWIxNzE5YTc0Zjk3NjkyMjE5ZGY1
ZjdhYWVkYzQ5MDY0NjYuLjBkYjRhZmFkYjNmNzQyYjgzYTRlMTZjZjM3MTg3MGEyYjA0MDRlYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RX
cml0ZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oCkBAIC00Myw3ICs0Myw3IEBAIGVudW0gRFdSSVRFX0ZP
TlRfU1RSRVRDSDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udFBsYXRmb3JtRGF0
YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IG5hbWVzcGFjZSBEaXJlY3RXcml0ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4
IDVmMTBmNzM5MmQwNGMzNDRkMTJjZWU0MjY2ZWRiMWVlOTk3MWM0ZWYuLjA4ZmM5ZjE5ZWFlYTk0
ODNlYTU4ZWMxYWVlZGQ0NTcyNTZjZTI3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApA
QCAtMzYsMTIgKzM2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dGb250UmVmOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVh
dGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250TWVtb3J5UmVz
b3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmll
ZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdn
ZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVT
ZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCmluZGV4IDYyOWUwZTYxYTEwNGM1Njdh
MWQ0ZWRjYjdlNTc5N2RjZjY3YzZlOGUuLjc3MzU3MzliOTMzNGY0NGQ5OWEzZjEyZmZjNWJmN2I0
MWY3Y2M2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcApAQCAtMjcyLDcgKzI3Miw3IEBA
IFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCBpbmRleCwgU3ViCiAgICAgcmV0dXJuIGJpdG1hcDsKIH0KIAotdm9pZCBJ
bWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0YShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAo
IWFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaApp
bmRleCA0ZjQ3MjU4NmI0MjRiZGExY2Y2ZmEwMTQzY2JhMjNkMDMwMDE2ZTQ1Li5jMjM2NWZkNzQ0
YzYxMThjMTk5OWUwNWI4MDJlZDViNDhmMzY0ODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaApA
QCAtNDEsNyArNDEsNyBAQCBjbGFzcyBJbWFnZURlY29kZXJEaXJlY3QyRCBmaW5hbCA6IHB1Ymxp
YyBJbWFnZURlY29kZXIgewogcHVibGljOgogICAgIEltYWdlRGVjb2RlckRpcmVjdDJEKCk7CiAK
LSAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2RlckRpcmVjdDJEPiBjcmVhdGUoU2hhcmVkQnVmZmVy
JiwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIHN0YXRpYyBS
ZWY8SW1hZ2VEZWNvZGVyRGlyZWN0MkQ+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
QWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyRGlyZWN0MkQoKSk7CiAgICAgfQpAQCAt
NzIsNyArNzIsNyBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6
OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2Rp
bmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1
ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBi
b29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFS
ZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWwg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VX
aW4uY3BwCmluZGV4IDBkODgyMGU5ZjNkNmZkNzczNWQ1NzBiMzY0MTQ4OGY1M2JkN2VjZTkuLjJk
OTcyNzBhNzM0ODM0ODkzZTc4YzgxZmYwZWM1YmI1ZGZlYzNmODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcApAQCAtMzAsNyArMzAs
NyBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiAvLyBUaGlzIGZ1bmN0aW9uIGxvYWRz
IHJlc291cmNlcyBmcm9tIFdlYktpdAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9h
ZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKik7CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKik7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCmluZGV4
IGQ5NTZkOWU3NjI1ZDViYjVhNzBmMDY5M2U3Nzk4ZWU5MDg0OWYxNjUuLjMzYzk1ZWMzMzMzYTky
MGM2NGEwMTgxNzUxZWI0YTUwNWVmMWE3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5j
cHAKQEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2Ugewog
Ci1zdGF0aWMgdW5zaWduZWQgY29weUZyb21TaGFyZWRCdWZmZXIoY2hhciogYnVmZmVyLCB1bnNp
Z25lZCBidWZmZXJMZW5ndGgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKQorc3Rh
dGljIHVuc2lnbmVkIGNvcHlGcm9tU2hhcmVkQnVmZmVyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQg
YnVmZmVyTGVuZ3RoLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIp
CiB7CiAgICAgdW5zaWduZWQgYnl0ZXNFeHRyYWN0ZWQgPSAwOwogICAgIGZvciAoY29uc3QgYXV0
byYgZWxlbWVudCA6IHNoYXJlZEJ1ZmZlcikgewpAQCAtMTM1LDcgKzEzNSw3IEBAIGJvb2wgbWF0
Y2hlc0NVUlNpZ25hdHVyZShjaGFyKiBjb250ZW50cykKIAogfQogCi1SZWZQdHI8U2NhbGFibGVJ
bWFnZURlY29kZXI+IFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBk
YXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24g
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8U2NhbGFibGVJbWFnZURlY29kZXI+
IFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBs
ZW5ndGhPZkxvbmdlc3RTaWduYXR1cmUgPSAxNDsgLy8gVG8gd2l0OiAiUklGRj8/Pz9XRUJQVlAi
CiAgICAgY2hhciBjb250ZW50c1tsZW5ndGhPZkxvbmdlc3RTaWduYXR1cmVdOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURl
Y29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxl
SW1hZ2VEZWNvZGVyLmgKaW5kZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2MjJkODc1NzA4Nzk4Yjk5
ZGFhMi4uOWM0MDU1NzgyNDFkMGM1MTI3MDI5NTE1YzIyMTI2NThmOGM0ZjY4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURl
Y29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2Fs
YWJsZUltYWdlRGVjb2Rlci5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFJl
dHVybnMgbnVsbHB0ciBpZiB3ZSBjYW4ndCBzbmlmZiBhIHN1cHBvcnRlZCB0eXBlIGZyb20gdGhl
IHByb3ZpZGVkIGRhdGEgKHBvc3NpYmx5CiAgICAgLy8gYmVjYXVzZSB0aGVyZSBpc24ndCBlbm91
Z2ggZGF0YSB5ZXQpLgotICAgIHN0YXRpYyBSZWZQdHI8U2NhbGFibGVJbWFnZURlY29kZXI+IGNy
ZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbik7CisgICAgc3RhdGljIFJlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gY3JlYXRl
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbik7CiAKICAgICBib29sIHByZW11bHRpcGx5QWxwaGEoKSBjb25zdCB7IHJl
dHVybiBtX3ByZW11bHRpcGx5QWxwaGE7IH0KIApAQCAtNzAsMTYgKzcwLDE1IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6
OkNvbXBsZXRlOwogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZQorICAgIHZvaWQgc2V0RGF0YShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgaWYgKG1fZW5j
b2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIGlmIChkYXRhLmRhdGEoKSkgewotICAgICAgICAgICAgLy8gU2hh
cmVkQnVmZmVyOjpkYXRhKCkgY29tYmluZXMgYWxsIHNlZ21lbnRzIGludG8gb25lIGluIGNhc2Ug
dGhlcmUncyBtb3JlIHRoYW4gb25lLgotICAgICAgICAgICAgbV9kYXRhID0gZGF0YS5iZWdpbigp
LT5zZWdtZW50LmNvcHlSZWYoKTsKLSAgICAgICAgfQorICAgICAgICBhdXRvIGNvbnRpZ3VvdXNE
YXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgICAgICBpZiAoY29udGlndW91c0RhdGEt
PmRhdGEoKSkKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhLT5iZWdpbigpLT5z
ZWdtZW50LmNvcHlSZWYoKTsKICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5j
b2RlZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFibGUpIHsKICAgICAgICAgICAgIG1fZGVjb2RpbmdT
aXplRnJvbVNldERhdGEgPSB0cnVlOwogICAgICAgICAgICAgdHJ5RGVjb2RlU2l6ZShhbGxEYXRh
UmVjZWl2ZWQpOwpAQCAtMTk1LDcgKzE5NCw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFs
PEludFBvaW50PiBob3RTcG90KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RkOjpudWxsb3B0
OyB9CiAKIHByb3RlY3RlZDoKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4g
bV9kYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4g
bV9kYXRhOwogICAgIFZlY3RvcjxTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lLCAxPiBtX2ZyYW1l
QnVmZmVyQ2FjaGUgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOwogICAgIG11dGFibGUgTG9j
ayBtX2xvY2s7CiAgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFn
ZVJlYWRlci5jcHAKaW5kZXggN2M2MDNmZDgzNThjMjE0YWM5MTg0ZjMxODk5NzJmZTg0MWI2MWU4
MC4uMjZmODg2NDk2ZTVhNWExNGUyOGFmYjFhZmE5YmZjMzAxNzdmNTFjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYv
QVZJRkltYWdlUmVhZGVyLmNwcApAQCAtNDEsNyArNDEsNyBAQCBBVklGSW1hZ2VSZWFkZXI6OkFW
SUZJbWFnZVJlYWRlcihSZWZQdHI8QVZJRkltYWdlRGVjb2Rlcj4mJiBkZWNvZGVyKQogCiBBVklG
SW1hZ2VSZWFkZXI6On5BVklGSW1hZ2VSZWFkZXIoKSA9IGRlZmF1bHQ7CiAKLWJvb2wgQVZJRklt
YWdlUmVhZGVyOjpwYXJzZUhlYWRlcihjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK2Jvb2wgQVZJRkltYWdlUmVhZGVyOjpwYXJzZUhl
YWRlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGF2aWZEZWNvZGVyU2V0SU9NZW1vcnkobV9h
dmlmRGVjb2Rlci5nZXQoKSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSAhPSBBVklGX1JFU1VM
VF9PSykKICAgICAgICAgcmV0dXJuIGFsbERhdGFSZWNlaXZlZCA/IG1fZGVjb2Rlci0+c2V0RmFp
bGVkKCkgOiBmYWxzZTsKQEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBh
cnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgYWwK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBVklGSW1hZ2VSZWFkZXI6OmRlY29kZUZyYW1l
KHNpemVfdCBmcmFtZUluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiBidWZmZXIsIGNv
bnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpCit2b2lkIEFWSUZJbWFnZVJlYWRl
cjo6ZGVjb2RlRnJhbWUoc2l6ZV90IGZyYW1lSW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJh
bWUmIGJ1ZmZlciwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRh
dGEpCiB7CiAgICAgaWYgKG1fZGVjb2Rlci0+ZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJ
RkltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9h
dmlmL0FWSUZJbWFnZVJlYWRlci5oCmluZGV4IGNiY2EwYjhjMTI0YmZmMGZmYzMzMDFiYTM1YmNl
MDFlZDI3MjJkZjguLjQ5NmY2OWY4MTJiZDc1YjBlZGE2MzU3YmFhODYwY2ZjY2I1YmE0YjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJ
RkltYWdlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAgICAg
QVZJRkltYWdlUmVhZGVyKFJlZlB0cjxBVklGSW1hZ2VEZWNvZGVyPiYmKTsKICAgICB+QVZJRklt
YWdlUmVhZGVyKCk7CiAKLSAgICBib29sIHBhcnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQmLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgdm9pZCBkZWNvZGVGcmFt
ZShzaXplX3QgaW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmLCBjb25zdCBTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50Jik7CisgICAgYm9vbCBwYXJzZUhlYWRlcihjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAg
ICB2b2lkIGRlY29kZUZyYW1lKHNpemVfdCBpbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFt
ZSYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Jik7CiAgICAgc2l6
ZV90IGltYWdlQ291bnQoKSBjb25zdDsKICAgICBkb3VibGUgcmVwZXRpdGlvbkNvdW50KCkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggNzI3NjlhNjkyNmVjMjQxOWJm
NjYzODI1MjhkM2Q3NzIwYTU0YWRhZS4uZjc0NTVjMTQ2YzdlOGFlYjA0Y2M4YzU2ZjMzMGUyYTAx
ZjNiYTcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAg
Qk1QSW1hZ2VEZWNvZGVyOjpCTVBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3AKIHsKIH0KIAotdm9pZCBCTVBJbWFnZURlY29kZXI6OnNl
dERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgQk1Q
SW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JN
UEltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlRGVjb2Rlci5oCmluZGV4IGM3YzdjYTgxZmVhNmI4YTc3NGJiMzA4ZTUzOGRj
ZDA0OGM5OTVlZWEuLjY0ZGVkNmFiYmUyYzBhMjliMTFmOWZiNWVjZDZiNDg3MjRkNTg5NzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAg
Ly8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBj
b25zdCBmaW5hbCB7IHJldHVybiAiYm1wIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1
ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBT
Y2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4
KSBmaW5hbDsKICAgICAvLyBDQVVUSU9OOiBzZXRGYWlsZWQoKSBkZWxldGVzIHxtX3JlYWRlcnwu
IEJlIGNhcmVmdWwgdG8gYXZvaWQKICAgICAvLyBhY2Nlc3NpbmcgZGVsZXRlZCBtZW1vcnksIGVz
cGVjaWFsbHkgd2hlbiBjYWxsaW5nIHRoaXMgZnJvbSBpbnNpZGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVy
LmgKaW5kZXggNDg0NGYzODBkYzE3ZWM3MDQ1ODhmYjEyZjUzZWFiYzZkMjBlNjBmNC4uYmQ0MzBl
OGE4YmVhMmM4MTZiMmM1MjJiZjViYTc4ODQ2YzM4ZTBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVy
LmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgQk1QSW1hZ2VSZWFkZXIgewogcHVibGljOgogICAg
IC8vIFJlYWQgYSB2YWx1ZSBmcm9tIHxkYXRhW29mZnNldF18LCBjb252ZXJ0aW5nIGZyb20gbGl0
dGxlIHRvIG5hdGl2ZQogICAgIC8vIGVuZGlhbm5lc3MuCi0gICAgc3RhdGljIGlubGluZSB1aW50
MTZfdCByZWFkVWludDE2KGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGlu
dCBvZmZzZXQpCisgICAgc3RhdGljIGlubGluZSB1aW50MTZfdCByZWFkVWludDE2KGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQogICAg
IHsKICAgICAgICAgdWludDE2X3QgcmVzdWx0OwogICAgICAgICBtZW1jcHkoJnJlc3VsdCwgJmRh
dGEuZGF0YSgpW29mZnNldF0sIDIpOwpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgc3RhdGljIGlubGluZSB1aW50MzJfdCByZWFk
VWludDMyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQp
CisgICAgc3RhdGljIGlubGluZSB1aW50MzJfdCByZWFkVWludDMyKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQogICAgIHsKICAgICAg
ICAgdWludDMyX3QgcmVzdWx0OwogICAgICAgICBtZW1jcHkoJnJlc3VsdCwgJmRhdGEuZGF0YSgp
W29mZnNldF0sIDQpOwpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgQk1QSW1hZ2VSZWFk
ZXIoU2NhbGFibGVJbWFnZURlY29kZXIqIHBhcmVudCwgc2l6ZV90IGRlY29kZWRBbmRIZWFkZXJP
ZmZzZXQsIHNpemVfdCBpbWdEYXRhT2Zmc2V0LCBib29sIHVzZXNBbmRNYXNrKTsKIAogICAgIHZv
aWQgc2V0QnVmZmVyKFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGJ1ZmZlcikgeyBtX2J1ZmZl
ciA9IGJ1ZmZlcjsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
JiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9CiAKICAg
ICAvLyBEb2VzIHRoZSBhY3R1YWwgZGVjb2RpbmcuIElmIHxvbmx5U2l6ZXwgaXMgdHJ1ZSwgZGVj
b2Rpbmcgb25seQogICAgIC8vIHByb2dyZXNzZXMgYXMgZmFyIGFzIG5lY2Vzc2FyeSB0byBnZXQg
dGhlIGltYWdlIHNpemUuIFJldHVybnMKQEAgLTI3Miw3ICsyNzIsNyBAQCBwcml2YXRlOgogICAg
IFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIG1fYnVmZmVyOwogCiAgICAgLy8gVGhlIGZpbGUg
dG8gZGVjb2RlLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7
CiAKICAgICAvLyBBbiBpbmRleCBpbnRvIHxtX2RhdGF8IHJlcHJlc2VudGluZyBob3cgbXVjaCB3
ZSd2ZSBhbHJlYWR5IGRlY29kZWQuCiAgICAgc2l6ZV90IG1fZGVjb2RlZE9mZnNldDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdl
QmFja2luZ1N0b3JlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAKaW5kZXggNjAxMjAzNzRmOWM0
MzE2OGE2NTIxYjY5YzU0YWZiZTJhMDBmNTVmNy4uOGNjZjA0ZjY4ZjA0MDZkYTRkMzc0YWUxMTY4
YzljZWJiYzlhNWQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWly
by5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZUJhY2tpbmdTdG9y
ZTo6aW1hZ2UoKSBjb25zdAogICAgICAgICByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIq
Pihjb25zdF9jYXN0PHVpbnQzMl90Kj4obV9waXhlbHNQdHIpKSwKICAgICAgICAgQ0FJUk9fRk9S
TUFUX0FSR0IzMiwgc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSwgc2l6ZSgpLndpZHRo
KCkgKiBzaXplb2YodWludDMyX3QpKSk7CiAgICAgc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlf
dCBzX3N1cmZhY2VEYXRhS2V5OwotICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0YShzdXJm
YWNlLmdldCgpLCAmc19zdXJmYWNlRGF0YUtleSwgbV9waXhlbHMuZ2V0KCksIFtdKHZvaWQqIGRh
dGEpIHsgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KGRhdGEpLT5kZXJl
ZigpOyB9KTsKKyAgICBjYWlyb19zdXJmYWNlX3NldF91c2VyX2RhdGEoc3VyZmFjZS5nZXQoKSwg
JnNfc3VyZmFjZURhdGFLZXksIG1fcGl4ZWxzLmdldCgpLCBbXSh2b2lkKiBkYXRhKSB7IHN0YXRp
Y19jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4oZGF0YSktPmRlcmVm
KCk7IH0pOwogCiAgICAgcmV0dXJuIHN1cmZhY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIu
Y3BwCmluZGV4IGU2YWJlMGQ5NTQ0YjZjMTg1YzY0NWRlY2UwOWYyM2Y5NTY2NjA3Y2IuLmI5ZWMw
MWI4YWU4ZThkMjliYzc4MjUyNmUwNzY1MjU1MWUzNTljMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURl
Y29kZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIEdJRkltYWdlRGVjb2Rlcjo6R0lGSW1hZ2VEZWNv
ZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiAKIEdJ
RkltYWdlRGVjb2Rlcjo6fkdJRkltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBHSUZJ
bWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKK3ZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCmluZGV4IDM1ZGYzM2Y2ZGZjNDgz
ZmQ4NDcxMzY2YWU1M2JiMGI5NjFjYWVkMmUuLmM3NDcxOTk5OWI5ODZjMWNlZjg0Nzg3NTlkMjM3
MThjOTA0MmQzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAg
cHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBTdHJpbmcgZmlsZW5h
bWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiZ2lmIl9zOyB9Ci0gICAgdm9pZCBz
ZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwor
ICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBmaW5h
bDsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IGZpbmFsOwogICAgIFJlcGV0aXRpb25D
b3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgK
aW5kZXggNDIxNDZlMDMyOTMyMzY5OTc4OWViNWU0MmFmNGM3M2QzNGFiOWNjNi4uMTA4MmZkZjBk
ZmYyMzkxZTU2NTMwYTQxZjg3YmE0Mzk4MjMyNzUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgK
QEAgLTIzNyw3ICsyMzcsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgc2V0
RGF0YShXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKSB7IG1fZGF0YSA9
ICZkYXRhOyB9CisgICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50JiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9CiAgICAgLy8gRklYTUU6
IGhhbHRBdEZyYW1lIHNob3VsZCBiZSBzaXplX3QuCiAgICAgYm9vbCBkZWNvZGUoV2ViQ29yZTo6
R0lGSW1hZ2VEZWNvZGVyOjpHSUZRdWVyeSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpOwogCkBAIC0z
MTYsNiArMzE2LDYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEdJRkZy
YW1lQ29udGV4dD4gPiBtX2ZyYW1lczsKICAgICBzaXplX3QgbV9jdXJyZW50RGVjb2RpbmdGcmFt
ZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2Rh
dGE7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50PiBtX2RhdGE7CiAgICAgYm9vbCBtX3BhcnNlQ29tcGxldGVkOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0lt
YWdlRGVjb2Rlci5jcHAKaW5kZXggYzcxN2M0NWQzMDU3YzA1NTM2ZWU2MDUwZjkzOTcwNDZkMTBk
ZjJhNy4uYzA3MTM0NWI4YmYzNjliODAyNzFmYmRmMGEwY2UwMTc0ZjA1MDNiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNv
L0lDT0ltYWdlRGVjb2Rlci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgSUNPSW1hZ2VEZWNvZGVyOjpJ
Q09JbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3AKIAogSUNPSW1hZ2VEZWNvZGVyOjp+SUNPSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0Owog
Ci12b2lkIElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQordm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZh
aWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKaW5kZXggZmI3
YTkwM2IyYTA3NTM5NDkxN2FiYmJmMTFiMWNlZDgzZmY0MzJhMC4uMTBlZTliNGQyZThjOWQ4ODdl
MWQyYjhiZTEzOWJiNzQyNzFkNTdhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaApAQCAtNDYs
NyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAgIFN0
cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJpY28iX3M7IH0K
LSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZp
bmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IGZpbmFsOwogICAg
IEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0
IGZpbmFsOwogICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
Zy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmZDM0NWJiNzg2ZmYwOGQ5NDY1OTMwYWE0ZGY0
OGRmMTdhYmYzMDVjLi41Y2ZhYzlmMjM1N2UyZTEyYzY4NjQwMGIyNjc4OGFlN2Y4YmUxMzVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0
aWMgYm9vbCBpc0lDQ01hcmtlcihqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyKQogCiBzdGF0
aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0
cnVjdCogaW5mbykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgZm9yIChqcGVnX3NhdmVkX21h
cmtlcl9wdHIgbWFya2VyID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFy
a2VyLT5uZXh0KSB7CiAgICAgICAgIGlmICghaXNJQ0NNYXJrZXIobWFya2VyKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwpAQCAtMjM2LDEzICsyMzYsMTMgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICB1bnNpZ25lZCBtYXJrZXJTaXplID0g
bWFya2VyLT5kYXRhX2xlbmd0aCAtIGljY0hlYWRlclNpemU7Ci0gICAgICAgIGJ1ZmZlci0+YXBw
ZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hl
YWRlclNpemUpLCBtYXJrZXJTaXplKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFy
a2VyU2l6ZSk7CiAgICAgfQogCi0gICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQorICAgIGlmIChi
dWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBi
dWZmZXI7CisgICAgcmV0dXJuIGJ1ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CiB9CiAj
ZW5kaWYKIApAQCAtMzIwLDcgKzMyMCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9ieXRlc1RvU2tp
cCA9IHN0ZDo6bWF4KG51bUJ5dGVzIC0gYnl0ZXNUb1NraXAsIHN0YXRpY19jYXN0PGxvbmc+KDAp
KTsKICAgICB9CiAKLSAgICBib29sIGRlY29kZShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50JiBkYXRhLCBib29sIG9ubHlTaXplKQorICAgIGJvb2wgZGVjb2RlKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIG9ubHlTaXplKQogICAgIHsK
ICAgICAgICAgbV9kZWNvZGluZ1NpemVPbmx5ID0gb25seVNpemU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1h
Z2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pw
ZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBiZWNmNjQ1MDI3N2VlYjc0YjA5
ZGU1MmVlMTgyZmY2ZTExZWQyNzYyLi4yMDQ3M2YwZWVlYmI1NmM3MTMxNGY2NTU2YmRhMDkwMzM0
OTA3NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3Bw
CkBAIC0zODAsNyArMzgwLDcgQEAgdm9pZCBKUEVHMjAwMEltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJv
b2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIH0KIAogICAgIHN0cnVjdCBS
ZWFkZXIgewotICAgICAgICBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhOworICAgICAg
ICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YTsKICAgICAgICAgc2l6
ZV90IG9mZnNldDsKICAgICB9IHJlYWRlciA9IHsgKm1fZGF0YSwgMCB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNv
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJ
bWFnZURlY29kZXIuY3BwCmluZGV4IGMxMmM0NTlhNWEzZTViMzUxYzViY2M2MmJmMDBiOGEyODFi
ZDViYTMuLjRjYmQzMjNkOWE3NTAyNmVmODY1OGYzODE2ZGQ3MzhkMzdjYThlZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURl
Y29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Bu
Zy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgcHVibGljOgogICAgICAg
ICBtX3JlYWRPZmZzZXQgPSAwOwogICAgIH0KIAotICAgIGJvb2wgZGVjb2RlKGNvbnN0IFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgc2l6ZU9ubHksIHVuc2lnbmVkIGhhbHRB
dEZyYW1lKQorICAgIGJvb2wgZGVjb2RlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50JiBkYXRhLCBib29sIHNpemVPbmx5LCB1bnNpZ25lZCBoYWx0QXRGcmFtZSkKICAg
ICB7CiAgICAgICAgIG1fZGVjb2RpbmdTaXplT25seSA9IHNpemVPbmx5OwogICAgICAgICBQTkdJ
bWFnZURlY29kZXIqIGRlY29kZXIgPSBzdGF0aWNfY2FzdDxQTkdJbWFnZURlY29kZXIqPihwbmdf
Z2V0X3Byb2dyZXNzaXZlX3B0cihtX3BuZykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5j
cHAKaW5kZXggMDJmMWIwOWRiYzc2NTE2MDFmOTIyZGRlMjlmODA1YTY1ODcxZTJkMi4uYjFiZWM1
NWU3OGM0MzQ4MDFjMjU0YWNlMGRmNTk5MzFhMzZiNzRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFn
ZURlY29kZXIuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFdFQlBJbWFnZURlY29kZXI6OldFQlBJbWFn
ZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlCiAK
IFdFQlBJbWFnZURlY29kZXI6On5XRUJQSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lk
IFdFQlBJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKK3ZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVk
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFdFQlBJbWFnZURl
Y29kZXI6OmRlY29kZShzaXplX3QgZnJhbWVJbmRleCwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAg
ICAgLy8gVGhpcyBjYW4gYmUgZXhlY3V0ZWQgYm90aCBpbiB0aGUgbWFpbiB0aHJlYWQgKHdoZW4g
bm90IHVzaW5nIGFzeW5jIGRlY29kaW5nKSBvciBpbiB0aGUgZGVjb2RpbmcgdGhyZWFkLgogICAg
IC8vIFdoZW4gZXhlY3V0ZWQgaW4gdGhlIGRlY29kaW5nIHRocmVhZCwgYSBjYWxsIHRvIHNldERh
dGEoKSBmcm9tIHRoZSBtYWluIHRocmVhZCBtYXkgY2hhbmdlIHRoZSBkYXRhCiAgICAgLy8gdGhl
IFdlYlBEZW11eGVyIGlzIHVzaW5nLCBsZWF2aW5nIGl0IGluIGFuIGluY29uc2lzdGVudCBzdGF0
ZSwgc28gd2UgbmVlZCB0byBwcm90ZWN0IHRoZSBkYXRhLgotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50PiBwcm90ZWN0ZWREYXRhKG1fZGF0YSk7CisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBwcm90ZWN0ZWREYXRhKG1fZGF0YSk7CiAg
ICAgV2ViUERhdGEgaW5wdXREYXRhID0geyBwcm90ZWN0ZWREYXRhLT5kYXRhKCksIHByb3RlY3Rl
ZERhdGEtPnNpemUoKSB9OwogICAgIFdlYlBEZW11eFN0YXRlIGRlbXV4ZXJTdGF0ZTsKICAgICBX
ZWJQRGVtdXhlciogZGVtdXhlciA9IFdlYlBEZW11eFBhcnRpYWwoJmlucHV0RGF0YSwgJmRlbXV4
ZXJTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCmluZGV4IGFmMzY1ZTljZjljN2Nl
OTUzOGI2NGJhNzg5YmYwMTdkNDhmNmVkZTEuLmRkMjhiYzg4ZGY1YzBmYTNjMTU3Mzc4NjliMjYw
OTczYWFhMGQyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCkBAIC00Nyw3ICs0Nyw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XRUJQSW1hZ2VEZWNvZGVyKCk7CiAKICAgICBTdHJp
bmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAid2VicCJfczsg
fQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsKKyAgICB2b2lk
IHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwogICAgIFNjYWxh
YmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIG92
ZXJyaWRlOwogICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
ZnJhbWVDb3VudDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElP
Uy5tbQppbmRleCA5MDllOGU3NjhhZGI2OGJhYjI4NDQ1ZDI4MjczNjBhM2YzZmEyMmMzLi5iMjM3
N2ZlMzQxMWQyYWM0MDE1MTNiZjA5YWU4Y2NhZTc4NmJkOGViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtMjM2LDE0ICsyMzYsMTQgQEAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIAogI2lmICFQTEFURk9STShNQUNDQVRB
TFlTVCkKICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAq
KWtVVFR5cGVGbGF0UlRGRF0pIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZUZs
YXRSVEZELCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZUZsYXRSVEZELCBtX3Bhc3RlYm9hcmROYW1lLCBjb250
ZXh0KCkpOwogICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAg
ICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5h
bGx5OwogICAgICAgICByZXR1cm4gYnVmZmVyICYmIHJlYWRlci5yZWFkUlRGRCgqYnVmZmVyKSA/
IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwog
ICAgIH0KIAogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5n
ICopa1VUVHlwZVJURl0pIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
c3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVJURiwg
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChp
dGVtSW5kZXgsIGtVVFR5cGVSVEYsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAg
ICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1
cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAg
IHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRSVEYoKmJ1ZmZlcikgPyBSZWFkZXJSZXN1bHQ6
OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKQEAgLTI1MSw3ICsyNTEs
NyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogI2VuZGlmIC8vICFQTEFU
Rk9STShNQUNDQVRBTFlTVCkKIAogICAgIGlmIChbc3VwcG9ydGVkSW1hZ2VUeXBlcygpIGNvbnRh
aW5zT2JqZWN0OnR5cGVdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIHR5cGUsIG1fcGFz
dGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUlu
ZGV4LCB0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgICAgICBpZiAobV9j
aGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIFJlYWRlclJl
c3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAgICByZXR1cm4gYnVm
ZmVyICYmIHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIHR5cGUsIGl0
ZW1JbmZvLnByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlw
ZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCAxNjdjZWYwMmQ3
OGQ3OTRkZWFhOGU1ZGRhZjRkZDY2YzNkMmNjYTQ1Li4xNmIzZDVkNDQxNWQyNTg1MTVmNjYwYTg2
YWM2Y2VmYmRjZGI2NGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTMzOCw3ICszMzgsNyBAQCBpbnQ2NF90IFBs
YXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKQogICAgIHJl
dHVybiAwOwogfQogCi1pbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlw
ZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OnNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmlu
ZyYpCiB7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQog
CiAgICAgQVNTRVJUKGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQuY2xpZW50
RGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gY29udGVudC5jbGll
bnRUeXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNU
b1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVz
W2ldXTsKIAogICAgIGlmIChjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsKICAgICAg
ICAgYXV0byB3ZWJBcmNoaXZlRGF0YSA9IGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+
Y3JlYXRlTlNEYXRhKCk7CkBAIC00NzksNyArNDc5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECiAgICAgfQogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0
cmluZ0Zvcm1hdCkgewotICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVk
U3RyaW5nID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05T
U2V0IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250
ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVy
cm9yOm51bGxwdHJdKQorICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVk
U3RyaW5nID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05T
U2V0IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250
ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51bGxwdHJdKQogICAgICAgICAgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddOwog
ICAgIH0KIApAQCAtNTAxLDcgKzUwMSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogCiAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICBjdXN0b21E
YXRhLnNldE9yaWdpbihjb250ZW50LmNvbnRlbnRPcmlnaW4pOwotICAgIFtyZXByZXNlbnRhdGlv
bnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5
cGUoKSldOworICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0
YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogCiAg
ICAgcmVnaXN0ZXJJdGVtVG9QYXN0ZWJvYXJkKHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIuZ2V0
KCksIG1fcGFzdGVib2FyZC5nZXQoKSk7CiB9CkBAIC01MTQsMTQgKzUxNCwxNCBAQCB2b2lkIFBs
YXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJk
SW1hZ2UpCiAgICAgYXV0byYgZGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhOwogICAg
IEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwLCBzaXplID0gdHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVz
ZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmRhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6dHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBh
ZGREYXRhOmRhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZv
clR5cGU6dHlwZXNbaV1dOwogCiAgICAgaWYgKHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEg
JiYgIXBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlLmlzRW1wdHkoKSkgewogICAgICAg
ICBhdXRvIHV0aU9yTUlNRVR5cGUgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZTsK
ICAgICAgICAgaWYgKCFpc0RlY2xhcmVkVVRJKHV0aU9yTUlNRVR5cGUpKQogICAgICAgICAgICAg
dXRpT3JNSU1FVHlwZSA9IFVUSUZyb21NSU1FVHlwZSh1dGlPck1JTUVUeXBlKTsKIAotICAgICAg
ICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJj
ZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbcmVwcmVz
ZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmltYWdlRGF0YS5nZXQoKSBmb3JUeXBlOihOU1N0
cmluZyAqKXV0aU9yTUlNRVR5cGVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3Rl
ciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TaXplOnBhc3RlYm9hcmRJbWFnZS5pbWFnZVNpemVd
OwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRTdWdnZXN0ZWROYW1lOnBh
c3RlYm9hcmRJbWFnZS5zdWdnZXN0ZWROYW1lXTsKQEAgLTYzNSw3ICs2MzUsNyBAQCBzdGF0aWMg
UmV0YWluUHRyPFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0PiBjcmVhdGVJdGVt
UHJvdmlkZXJSZWdpc3RyYQogICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZl
cnJlZFByZXNlbnRhdGlvblN0eWxlOldlYlByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5l
XTsKIAogICAgIGlmIChkYXRhLmhhc1NhbWVPcmlnaW5DdXN0b21EYXRhKCkgfHwgIWRhdGEub3Jp
Z2luKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZm
ZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkgeworICAgICAg
ICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZm
ZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKICAgICAgICAgICAgIC8v
IFdlIHN0YXNoIHRoZSBsaXN0IG9mIHN1cHBsaWVkIHBhc3RlYm9hcmQgdHlwZXMgaW4gdGVhbURh
dGEgaGVyZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGRyYWcgYW5kIGRyb3AuCiAgICAgICAgICAg
ICAvLyBTaW5jZSB0aGUgY29udGVudHMgb2YgaXRlbSBwcm92aWRlcnMgY2Fubm90IGJlIGxvYWRl
ZCBwcmlvciB0byBkcm9wLCBidXQgdGhlIHBhc3RlYm9hcmQgdHlwZXMgYXJlCiAgICAgICAgICAg
ICAvLyBjb250YWluZWQgd2l0aGluIHRoZSBjdXN0b20gZGF0YSBibG9iIGFuZCB3ZSBuZWVkIHRv
IHZlbmQgdGhlbSB0byB0aGUgcGFnZSB3aGVuIGZpcmluZyBgZHJhZ292ZXJgCkBAIC02NzIsOCAr
NjcyLDggQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxT
aGFyZWRCdWZmZXI+Pih2YWx1ZSk7Ci0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IGFkZERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAq
KWNvY29hVHlwZV07CisgICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+Pih2YWx1ZSk7CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lz
dGVyIGFkZERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CiAgICAgfSk7CiAKICAgICByZXR1cm4g
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KaW5kZXggNTQ0NjUzYzQ0MDNkMjYwNDBhNTVk
MjNlOTM2OTFiZmVkY2M5MmI0Mi4uN2E0YTJiMTY1YjJmYTdkMjBkNWI2ZTRjMmQ2NWZlNjNlZjBi
MDI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252
ZXJ0ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252
ZXJ0ZXJJT1MubW0KQEAgLTgyLDcgKzgyLDcgQEAgQGVuZAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVydGVyKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXImIHByb3ZpZGVyKQotICAgIDog
bV9wcmV2aWV3RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgIDogbV9wcmV2aWV3
RGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX29y
aWdpbmFsUmVzcG9uc2UgeyByZXNwb25zZSB9CiAgICAgLCBtX3Byb3ZpZGVyIHsgcHJvdmlkZXIg
fQogICAgICwgbV9wbGF0Zm9ybURlbGVnYXRlIHsgYWRvcHROUyhbW1dlYlByZXZpZXdDb252ZXJ0
ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZToqdGhpc10pIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNjc3ZjhjYWRhYjU5MTIz
ZTFiNjJkMWJhYzJkMTkwOGJmNjc2YTJmOS4uMGQyNTQ5OGI4NmJlZjE4NWQzNzY5ZDVhNWJjMGJj
MmY3MzFjNzBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IENv
bG9yJiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVyKGNvbnN0IFBh
c3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIGF1dG8gd3JhcHBlciA9IGFk
b3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6
cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAg
ICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgW3dyYXBwZXIgc2V0UHJlZmVy
cmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocGFzdGVib2FyZEltYWdl
LnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKV07CiAgICAgcmV0dXJu
IHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFBhc3Rl
Ym9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGlu
Z1BvbGljeSBhbGxvdwogICAgIAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5
UlRGRFBhc3RlYm9hcmRUeXBlKCkpKSkgewogICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1
ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVt
SW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7Ci0gICAgICAg
ICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3Vt
ZW50QXR0cmlidXRlczpuaWxdKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0
cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpk
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJp
YnV0ZXM6bmlsXSkpIHsKICAgICAgICAgICAgICAgICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0
cmluZyBzdHJpbmddOwogICAgICAgICAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZFdyaXRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkV3JpdGVyLm1tCmluZGV4IDM1M2QwMDZiOTBjYmNlNjA5ZTZkZmQzN2MyODA4MTMxZjIx
NGI4ZGEuLjg4ZDA0MDI1ODQzNzAyZTRhYTRmNWE5YTU1NmI4ODFjNmU0MGMyZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMjgs
MTEgKzEyOCwxMSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAg
ICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9y
bWF0IGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ107CiAKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzLnNpemUoKTsgKytpKQotICAg
ICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtp
XS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2Vi
Q29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJk
SXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNv
bnRlbnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CiAKICAgICAgICAgUGFzdGVib2FyZEN1c3Rv
bURhdGEgY3VzdG9tRGF0YTsKICAgICAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4od2ViQ29udGVu
dC0+Y29udGVudE9yaWdpbik7Ci0gICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3Rv
bURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FU
eXBlKCkpKS5nZXQoKV07CisgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURh
dGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CiAgICAgfQogCiAgICAgcmV0dXJuIHBhc3Rl
Ym9hcmRJdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRm
b3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bVBhc3RlYm9hcmRNYWMubW0KaW5kZXggZDliN2QyNDgwMzhjMmRiOGFhYjA5MmNiOTFmZmE1NmYy
Y2I0Y2U3My4uYzNiNGQyZDk2MjE3NDcxYzczNWUyNGZlN2E1ZjlkOTIzN2RmNDcwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFj
Lm1tCkBAIC0yNjMsOCArMjYzLDggQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRl
KGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgICAgICBpZiAocGxhdGZvcm1U
eXBlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0g
ICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVm
ZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1
ZmZlcikpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERh
dGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBl
bHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7
CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZm
ZXIpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0
ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICB9KTsKIAogICAgIGlmIChz
aG91bGRXcml0ZUN1c3RvbURhdGEpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3Rv
bURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAg
ICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFttX3Bh
c3RlYm9hcmQgc2V0RGF0YTpzZXJpYWxpemVkQ3VzdG9tRGF0YS5nZXQoKSBmb3JUeXBlOkAoUGFz
dGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAgICAgfQogCkBAIC0zNDEsMTIgKzM0
MSwxMiBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcykKICAgICByZXR1cm4gW21fcGFzdGVib2FyZCBkZWNs
YXJlVHlwZXM6Y3JlYXRlTlNBcnJheShwYXN0ZWJvYXJkVHlwZXMpLmdldCgpIG93bmVyOm5pbF07
CiB9CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJl
ZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQoraW50NjRfdCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIGlmICghY2Fu
V3JpdGVQYXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8g
YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBl
XTsKKyAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIg
PyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZv
clR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGlkV3JpdGVEYXRhKQogICAgICAgICBy
ZXR1cm4gMDsKICAgICByZXR1cm4gY2hhbmdlQ291bnQoKTsKQEAgLTUwNCw4ICs1MDQsOCBAQCBz
dGF0aWMgUmV0YWluUHRyPE5TUGFzdGVib2FyZEl0ZW0+IGNyZWF0ZVBhc3RlYm9hcmRJdGVtKGNv
bnN0IFBhc3RlYm9hcmRDdXN0b21EYQogICAgICAgICBpZiAoIXBsYXRmb3JtVHlwZSkKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBw
bGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIp
LT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKKyAgICAgICAgICAg
IGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkK
ICAgICAgICAgICAgICAgICBbaXRlbSBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBl
OnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBz
dGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaApp
bmRleCA2ODEzZDVkYTdkY2IwZmMyNTlmMWJkMWVkMGE1NGMxYTFhOWZkOWNmLi43OTY1NTRmNGM5
NzY0NTE0MDFlMWExMjM3NDY4NzA0MGIyNGIxY2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5o
CkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIE1lZGlhU2FtcGxlOwogY2xhc3MgTWVkaWFTdHJlYW1Q
cml2YXRlOwogY2xhc3MgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU7CiBjbGFzcyBQbGF0Zm9ybUF1
ZGlvRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiAKIHN0cnVjdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnM7CiAKQEAgLTU5LDcgKzU5
LDcgQEAgcHVibGljOgogICAgIH07CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEF1ZGlvVmlk
ZW9TZWxlY3RlZFRyYWNrcyBzZWxlY3RUcmFja3MoTWVkaWFTdHJlYW1Qcml2YXRlJik7CiAKLSAg
ICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT47CisgICAg
dXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUp
PjsKICAgICB2aXJ0dWFsIHZvaWQgZmV0Y2hEYXRhKEZldGNoRGF0YUNhbGxiYWNrJiYpID0gMDsK
ICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCA9IDA7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcAppbmRleCBjMjVkZjkxNTc0YTY1YmM0MWJkYjcw
Njc4ZGM0NzcyNDgzNmRkMTQ1Li40OThkNGVlMTM0MGM0Yjk0MDAxYjYwYzM0NDc5YjdmNzJkNWM4
ZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCkBAIC05Myw3ICs5Myw3
IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpnZW5lcmF0ZU1vY2tDb3VudGVyU3Ry
aW5nKCkKIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6OmZldGNoRGF0YShGZXRjaERh
dGFDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwog
ICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYnVmZmVyTG9jayB9OwogICAgICAgICBW
ZWN0b3I8dWludDhfdD4gdmFsdWUgeyBtX2J1ZmZlci5jaGFyYWN0ZXJzOCgpLCBtX2J1ZmZlci5s
ZW5ndGgoKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EuaAppbmRleCAyMTFmNzVlZTczYWY2OTE5ZTdmNGM5OTU4ZTBjZDM0ODI1MzJkMDlm
Li45YzJjNzk3YjgxOTUxMmQ4ZmQ1NzkwMTVkYzNiNmU0MDVlM2JjNjBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtNzAsNyAr
NzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihNZWRpYVNh
bXBsZSYpOwogICAgIHZvaWQgYXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZvcm1B
dWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgY29uc3QgV1RGOjpNZWRp
YVRpbWUmLCBzaXplX3QpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZygpOwotICAgIHZvaWQgZmV0
Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgZG91
YmxlKT4mJik7CisgICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4mJik7CiAKICAgICB2b2lkIHBh
dXNlKCk7CiAgICAgdm9pZCByZXN1bWUoKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBmaW5pc2hlZEZsdXNoaW5nU2FtcGxlcygpOwogICAgIHZvaWQgY29tcGxldGVG
ZXRjaERhdGEoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogCiAgICAgYm9vbCBtX2hh
c0F1ZGlvIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmlkZW8geyBmYWxzZSB9OwpAQCAtMTE3
LDggKzExNyw4IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3Jp
dGVyOwogCiAgICAgTG9jayBtX2RhdGFMb2NrOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
ZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOwotICAgIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4gbV9mZXRjaERhdGFDb21w
bGV0aW9uSGFuZGxlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YSBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fZGF0YUxvY2spOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlv
bkhhbmRsZXI7CiAKICAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9hdWRp
b0Zvcm1hdERlc2NyaXB0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I+IG1fYXVkaW9Db21wcmVzc29yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IDhjMWY3YzBlNTMxM2I2Yjg1
NmNkM2NkZjVlODM4NGYzNmI3YjUzZjUuLjg0ODQxMDBlYWM1ZTExNWU5YjBjZjAxMjBiYWJmNzhm
YjFhMTI3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EubW0KQEAgLTEzNywxMCArMTM3LDggQEAgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpCiAgICAgICAgIG1fd3JpdGVyLmNs
ZWFyKCk7CiAgICAgfQogCi0gICAgLy8gQXQgdGhpcyBwb2ludGVyLCB3ZSBzaG91bGQgbm8gbG9u
Z2VyIGJlIHdyaXRpbmcgYW55IGRhdGEsIHNvIGl0IHNob3VsZCBiZSBzYWZlIHRvIGNsb3NlIGFu
ZCBudWxsaWZ5IG1fZGF0YSB3aXRob3V0IGxvY2tpbmcuCiAgICAgaWYgKG1fd3JpdGVyRGVsZWdh
dGUpCiAgICAgICAgIFttX3dyaXRlckRlbGVnYXRlIGNsb3NlXTsKLSAgICBtX2RhdGEgPSBudWxs
cHRyOwogCiAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hE
YXRhQ29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRy
LCAwKTsKQEAgLTQ5NSw3ICs0OTMsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjpzdG9wUmVjb3JkaW5nKCkKICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKTsKIApAQCAtNTM3LDE4ICs1MzUsMTMgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6Y29tcGxldGVGZXRjaERhdGEoKQogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGlmICghbV9kYXRhKSB7Ci0gICAg
ICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fZGF0
YS5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSgpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkKIHsKICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGF1dG8gZGF0YSA9IFdURk1vdmUobV9kYXRh
KTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICByZXR1cm4gbV9kYXRhLnRha2UoKTsKIH0KIAogdm9p
ZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCmluZGV4IGE5YjI5ZDU5ZTlhYTNi
NDY1NTQxNWJkOGJlZjA5ODRjNTQ0YjczZjAuLmNkZWU2MDM1MjNjZDY2OTQ1ZjQyOGY2OTQ3ODk2
MGY2ZmQ3NGM3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
RGF0YVVSTERlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Rh
dGFVUkxEZWNvZGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBu
YW1lc3BhY2UgRGF0YVVSTERlY29kZXIgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggZmFmZGZlODdjODM3ZTYxNTdkMmYxM2U5
YTdjYTAwOTY5ZDUwYjFjNy4uNGJlYmNiNTA5OGQxNWMyOTY2ZWQ4YzdlZTEzNmFlM2EyYWU0YTIw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGUuaApAQCAtODQsNyArODQsNyBAQCBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogY2xhc3MgU3luY2hyb25vdXNMb2FkZXJNZXNzYWdlUXVldWU7CiBjbGFzcyBUaW1lcjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlQ2xpZW50LmNwcAppbmRleCA2ZTY1YmI4OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUyZTcz
NjZmLi5iYThmZDRmZjRmMWU0MWM5YWQ0ZmE3NGE0MmJlNGUyYmQxMWFhODQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcApAQCAtMzYsOSArMzYsOSBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6UmVzb3VyY2VI
YW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+UmVzb3Vy
Y2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6
OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VIYW5kbGVD
bGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0g
ICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCks
IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5n
dGgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKaW5kZXggYjYzMzdkNTZjZThjZDliZWZmOWRmYmUxMTM2
NjJiYzc3NTZiNjUzNy4uYzRmMDU0ODVmMjg3MGIxMTZkYTdjNzYwZDNjMGZjZTk2ZWMyYjRhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNs
YXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIAogZW51bSBDYWNoZVN0b3JhZ2VQb2xpY3kgewogICAgIFN0b3JhZ2VBbGxvd2VkLApA
QCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFJl
c291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVk
IGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgeyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgCiAgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpp
bmRleCAxZmYwNjUyMTZmYTY4MDg4MTkzNzE0YmNmMmJjZGFmNjk2ZjAyNDA2Li4wMDhlMjI2ZmY5
MTkwMDRiNDUxNDhhMjQ3MjYxMTYxNTA5ODk2Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJh
dG9yLm1tCkBAIC00MSw4ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBSYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7CiAgICAgRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUGxhdGZv
cm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSkKLSAgICAgICAgOiBidWZmZXIoU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKSkKLSAgICAgICAgLCBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQorICAgICAg
ICA6IG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCiAgICAgICAgICwgcmVzb3VyY2UoJnJlc291
cmNlKSB7IH0KIAogICAgIHN0cnVjdCBUYXNrRGF0YSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxU
YXNrRGF0YT4gewpAQCAtNTUsOSArNTQsOSBAQCBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRv
cjo6RGF0YSB7CiAgICAgICAgIHNpemVfdCBuZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4IHsgMCB9
OwogICAgICAgICBlbnVtIGNsYXNzIFJlc3BvbnNlU3RhdGUgOiB1aW50OF90IHsgTm90U3ludGhl
c2l6ZWRZZXQsIFdhaXRpbmdGb3JTZXNzaW9uLCBTZXNzaW9uQ2FsbGVkQ29tcGxldGlvbkhhbmRs
ZXIgfSByZXNwb25zZVN0YXRlIHsgUmVzcG9uc2VTdGF0ZTo6Tm90U3ludGhlc2l6ZWRZZXQgfTsK
ICAgICB9OwotICAgIAorCiAgICAgSGFzaE1hcDxSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lv
bkRhdGFUYXNrPiwgc3RkOjp1bmlxdWVfcHRyPFRhc2tEYXRhPj4gdGFza0RhdGE7Ci0gICAgUmVm
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwog
ICAgIFJlc291cmNlUmVzcG9uc2Ugb3JpZ2luYWxSZXNwb25zZTsKICAgICBlbnVtIGNsYXNzIFN1
Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA6IGJvb2wgeyBObywgWWVzIH0gc3VjY2Vzc2Z1bGx5
RmluaXNoZWRMb2FkaW5nIHsgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpObyB9OwogICAg
IFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IHJlc291cmNlOwpAQCAtMTA2LDIyICsxMDUs
MjIgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpyZW1vdmVUYXNrKFdlYkNvcmVOU1VS
TFNlc3Npb25EYXRhVGFzayAqdGFzaykKIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2
ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVUkxTZXNzaW9u
RGF0YVRhc2sgKnRhc2ssIGNvbnN0IFBhcnNlZFJlcXVlc3RSYW5nZSYgcmFuZ2UsIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBleHBlY3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IERhdGEmIGRhdGEpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVm
ZmVyOwotICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgLy8gRklY
TUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8ganVzdCBtYWtlIGEgcmFuZ2Ugd2l0aCBhICogYWZ0
ZXIgdGhlIC8gYnV0IEFWRm91bmRhdGlvbiBkb2Vzbid0IGFjY2VwdCBzdWNoIHJhbmdlcy4KICAg
ICAvLyBJbnN0ZWFkLCB3ZSBqdXN0IHdhaXQgdW50aWwgdGhlIGxvYWQgaGFzIGNvbXBsZXRlZCwg
YXQgd2hpY2ggdGltZSB3ZSB3aWxsIGtub3cgdGhlIGNvbnRlbnQgbGVuZ3RoIGZyb20gdGhlIGJ1
ZmZlciBsZW5ndGguCiAgICAgaWYgKCFleHBlY3RlZENvbnRlbnRMZW5ndGgpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGRhdGEuYnVmZmVyLnNpemUoKTsKICAgICBp
ZiAoYnVmZmVyU2l6ZSA8IHJhbmdlLmJlZ2luKQogICAgICAgICByZXR1cm47Ci0gICAgCisKKyAg
ICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyLmdldCgpOwogICAgIGF1dG8qIHRhc2tEYXRhID0g
ZGF0YS50YXNrRGF0YS5nZXQodGFzayk7CiAgICAgaWYgKCF0YXNrRGF0YSkKICAgICAgICAgcmV0
dXJuOwotICAgIAotICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIo
dGFzayksIGJ1ZmZlciwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRv
ciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CisKKyAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0
YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIGJ1ZmZlclNpemUsIHRhc2tEYXRhID0gV2Vh
a1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewogICAg
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoW3Rhc2sgc3RhdGVdICE9
IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVJ1bm5pbmcpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0x
MzAsNyArMTI5LDcgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VU
b1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1UKICAgICAgICAgYXV0byYgcmFu
Z2UgPSB0YXNrRGF0YS0+cmFuZ2U7CiAgICAgICAgIGF1dG8mIGJ5dGVJbmRleCA9IHRhc2tEYXRh
LT5uZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4OwogICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAg
ICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXItPnNpemUoKSkKKyAgICAgICAgICAgIGlm
IChieXRlSW5kZXggPj0gYnVmZmVyU2l6ZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGF1dG8gYnVmZmVyVmlldyA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoYnl0ZUluZGV4KTsK
ICAgICAgICAgICAgIGlmICghYnVmZmVyVmlldy5zaXplKCkgfHwgYnl0ZUluZGV4ID4gcmFuZ2Uu
ZW5kKQpAQCAtMTc1LDcgKzE3NCw3IEBAIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShjb25zCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoZGF0YS5zdWNjZXNzZnVsbHlGaW5pc2hl
ZExvYWRpbmcgPT0gRGF0YTo6U3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpZZXMpCi0gICAg
ICAgIHJldHVybiBkYXRhLmJ1ZmZlci0+c2l6ZSgpOworICAgICAgICByZXR1cm4gZGF0YS5idWZm
ZXIuc2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBlY3Rl
ZENvbnRlbnRMZW5ndGgoKSBzaG91bGQgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbnN0
ZWFkIG9mIHVzIGRvaW5nIHRoaXMgY2hlY2sgaGVyZS4KICAgICBhdXRvIGV4cGVjdGVkQ29udGVu
dExlbmd0aCA9IGRhdGEub3JpZ2luYWxSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsK
QEAgLTI0NCw3ICsyNDMsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFsCisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBm
aW5hbAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYg
KCFtX2dlbmVyYXRvcikKQEAgLTI1Miw3ICsyNTEsNyBAQCBwcml2YXRlOgogICAgICAgICBhdXRv
KiBkYXRhID0gbV9nZW5lcmF0b3ItPm1fbWFwLmdldChtX3VybFN0cmluZyk7CiAgICAgICAgIGlm
ICghZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGF0YS0+YnVmZmVyLT5hcHBl
bmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS0+YnVmZmVyLmFwcGVuZChXVEZNb3Zl
KGJ1ZmZlcikpOwogICAgICAgICBtX2dlbmVyYXRvci0+Z2l2ZVJlc3BvbnNlVG9UYXNrc1dpdGhG
aW5pc2hlZFJhbmdlcygqZGF0YSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCmluZGV4
IDQwNDg4NWFlNjM3NmZjZTY4MDQwZDJhMDVjMDBiZWM0N2ZlMTZhYTguLmNlNGMyNTQ1Y2RlMGYy
ZjQ2YWMzMzhmOTZjNDkwODhlYjQ1ZDA5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCkBAIC01
MCw3ICs1MCw3IEBAIGNsYXNzIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJl
c291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogY2xhc3MgV2ViQ29yZU5TVVJMU2Vzc2lvbkRh
dGFUYXNrQ2xpZW50OwogZW51bSBjbGFzcyBTaG91bGRDb250aW51ZVBvbGljeUNoZWNrIDogYm9v
bDsKQEAgLTE1OCw3ICsxNTgsNyBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkNvcmVO
U1VSTFNlc3Npb24gOiBOU09iamVjdCB7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNlbnRCeXRlczoodW5zaWduZWQg
bG9uZyBsb25nKWJ5dGVzU2VudCB0b3RhbEJ5dGVzVG9CZVNlbnQ6KHVuc2lnbmVkIGxvbmcgbG9u
Zyl0b3RhbEJ5dGVzVG9CZVNlbnQ7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVzcG9uc2U6KGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlIGNvbXBsZXRpb25IYW5kbGVyOihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2sp
PiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAoQk9PTClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZTsKLS0gKHZvaWQpcmVzb3Vy
Y2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVj
ZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKWRhdGE7CistICh2b2lkKXJl
c291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNl
IHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpZGF0
YTsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNv
dXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZWRpcmVjdDooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpcmVzcG9uc2UgcmVxdWVzdDooV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpcmVx
dWVzdCBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJik+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKXJlc291cmNl
OihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGFjY2Vz
c0NvbnRyb2xDaGVja0ZhaWxlZFdpdGhFcnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpZXJyb3I7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UqKXJlc291cmNlIGxvYWRGYWlsZWRXaXRoRXJyb3I6KGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKWVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGUwNDAx
MGE5ODExYjRjOWFlMTQ5NDk5ODcwMWNhMTU0ODlmNTcxNmMuLjhjODlkOTM4NjU3OTMzYTFkYTI5
MDMxOTkxNTg0YzRkYjJmYWE5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTYwOCw3
ICs2MDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwog
ICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkYXRhU2VudChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWls
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtNjUyLDcgKzY1Miw3IEBAIGJvb2wgV2Vi
Q29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRm
b3JtTWVkaWFSZXNvdXJjCiAgICAgcmV0dXJuIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHNo
b3VsZENhY2hlUmVzcG9uc2U6cmVzcG9uc2VdOwogfQogCi12b2lkIFdlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVz
b3VyY2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJl
c291cmNlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgTG9j
a2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKICAgICBpZiAoIW1fdGFzaykKQEAgLTkxNSwxMSAr
OTE1LDExIEBAIC0gKEJPT0wpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3Vy
Y2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3QgUmVzCiAgICAgcmV0dXJuIHJlc3BvbnNlLmh0
dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFJhbmdlKS5pc0VtcHR5KCk7CiB9
CiAKLS0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVj
ZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKWRhdGEKKy0gKHZvaWQpcmVz
b3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJilkYXRhCiB7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7CiAgICAg
W3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IFJldGFpblB0
ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAgICAgICAgYXV0byBuc0RhdGEg
PSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgc3Ryb25nU2VsZi5nZXQoKS5j
b3VudE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CiAgICAgICAgIGlkPE5TVVJMU2Vz
c2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxl
Z2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBpZiAoW2Rh
dGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246ZGF0YVRh
c2s6ZGlkUmVjZWl2ZURhdGE6KV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGMzNmUxZjg4NzY0MzA0NjBjZTc1
MGEzYjhjNjU4YzczNGVjYjE1MDguLjM0OTQ0NTkyNTRhYzkzZmMxOWNiMTIxNTBhNjFiYzJiY2Vk
MDJkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6
OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXNwb25z
ZSYmIHIKIH0KIAogCi12b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3Vy
bFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybERvd25sb2Fk
OjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgK
aW5kZXggYTNhYTBjZjVmY2QyOTU1YmI3YjE2YjExYTFhODFjYTc0YWU2MWM4ZC4uY2RlNDQ0NTc3
NWY3NDQyMzMwNTMwYjY1YjEzNTdiYTZiZmQ5YmI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaApAQCAtNzIsNyArNzIsNyBA
QCBwcml2YXRlOgogICAgIFJlZjxDdXJsUmVxdWVzdD4gY3JlYXRlQ3VybFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNp
Z25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGUgeyB9CiAgICAgdm9p
ZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpIG92
ZXJyaWRlOwotICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8
U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVy
KEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgY3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNz
JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3Qm
LCBSZXNvdXJjZUVycm9yJiYsIENlcnRpZmljYXRlSW5mbyYmKSBvdmVycmlkZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRI
YW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0
aXBhcnRIYW5kbGUuY3BwCmluZGV4IGJiZGEzZmJkYTc1ODNkOTkxOTMxZGZlMTY5ZjdiM2E5MTMz
ZTZkYTIuLjA5MGQwMzliYTQ1ZGUxMDI4ZWRmNzY4NGM2ZDdkMmYyOTZlM2EzNGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZS5jcHAKQEAgLTExOSwxMiArMTE5LDEyIEBAIEN1cmxNdWx0aXBhcnRIYW5k
bGU6OkN1cmxNdWx0aXBhcnRIYW5kbGUoQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudCYgY2xpZW50
LCBjb25zCiAKIH0KIAotdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IGlmIChtX3N0YXRlID09IFN0YXRlOjpFbmQpCiAgICAgICAgIHJldHVybjsgLy8gVGhlIGhhbmRs
ZXIgaXMgY2xvc2VkIGRvd24gc28gaWdub3JlIGV2ZXJ5dGhpbmcuCiAKLSAgICBtX2J1ZmZlci5h
cHBlbmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9idWZmZXIuYXBwZW5k
KGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogCiAgICAg
d2hpbGUgKHByb2Nlc3NDb250ZW50KCkpIHsgfQogfQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQg
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUoKQogICAgIGlmIChtX3N0YXRlICE9IFN0
YXRlOjpFbmQpIHsKICAgICAgICAgLy8gSXQgc2VlbXMgd2UgYXJlIHN0aWxsIG5vdCBhdCB0aGUg
ZW5kIG9mIHRoZSBwcm9jZXNzaW5nLgogICAgICAgICAvLyBQdXNoIG91dCB0aGUgcmVtYWluaW5n
IGRhdGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSkpOworICAg
ICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShtX2J1ZmZlcikpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmQ7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAppbmRleCA1YzA4YmNjNWViM2U0YmJjYzAyOWI0
NzY3ODY4ZjQzZTJmOTVjMzQxLi45YTFhMWJiZDE5MzhhMTRmNjlmY2NlZTNmMGY4OWI5N2E0YTIx
ODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50OwogY2xhc3MgQ3VybFJl
c3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBDdXJsTXVsdGlwYXJ0SGFuZGxl
KEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmLCBjb25zdCBTdHJpbmcmKTsKICAgICB+Q3VybE11
bHRpcGFydEhhbmRsZSgpIHsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZENvbXBsZXRlKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhh
bmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxN
dWx0aXBhcnRIYW5kbGVDbGllbnQuaAppbmRleCBmZDEzZmQzODEzMTQzY2IyNjU5YjhmZDFkYjI0
NDQ3NjVlOThhNTgwLi5jODEzODg2YThkNWM1ZmE2YzEyZDE0MTMzMTkxMDFhZjI1MDJhMmFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRp
cGFydEhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKQEAgLTI4LDEyICsyOCwxMiBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJsUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0
SGFuZGxlQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUhlYWRl
ckZyb21NdWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgfkN1cmxNdWx0aXBh
cnRIYW5kbGVDbGllbnQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IGQzNWIwZTgzOTE5NTFkMzg2MzRlOTkw
OTNiNjg2NTYyNGQ5OTc5NTEuLmQ4MmRkM2MxMGFjNjQ3MTM1OTkxZmQ3YWU2Njk3ZTlkOGUzMTNl
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0LmNwcApAQCAtMzk2LDcgKzM5Niw3IEBAIHNpemVfdCBDdXJsUmVxdWVzdDo6ZGlk
UmVjZWl2ZUhlYWRlcihTdHJpbmcmJiBoZWFkZXIpCiAKIC8vIGNhbGxlZCB3aXRoIGRhdGEgYWZ0
ZXIgYWxsIGhlYWRlcnMgaGF2ZSBiZWVuIHByb2Nlc3NlZCB2aWEgaGVhZGVyQ2FsbGJhY2sKIAot
c2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK3NpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChpc0NvbXBsZXRlZE9yQ2FuY2VsbGVk
KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNDQ0LDcgKzQ0NCw3IEBAIHZvaWQgQ3VybFJlcXVl
c3Q6OmRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBo
ZWFkZXJzKQogICAgIGludm9rZURpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgQWN0aW9uOjpO
b25lKTsKIH0KIAotdm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2
ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
IHsKICAgICBpZiAoaXNDb21wbGV0ZWRPckNhbmNlbGxlZCgpKQogICAgICAgICByZXR1cm47CkBA
IC03NzcsNyArNzc3LDcgQEAgY29uc3QgU3RyaW5nJiBDdXJsUmVxdWVzdDo6Z2V0RG93bmxvYWRl
ZEZpbGVQYXRoKCkKICAgICByZXR1cm4gbV9kb3dubG9hZEZpbGVQYXRoOwogfQogCi12b2lkIEN1
cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxl
SWZFbmFibGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICB7
CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2Rvd25sb2FkTXV0ZXggfTsKQEAgLTc5MCw3ICs3
OTAsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxl
ZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICB9CiAKICAgICBpZiAobV9kb3dubG9h
ZEZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAg
ICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmls
ZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmgKaW5kZXggNmJkOGE2YmZiYTM3NTJjZWRkZGJjNTAwOWVhZTgzYzRmMGVlZDY0MS4uM2M3
Y2RkODgzZWI2MmJmZTkyY2YwNDQ1ZWQyOWJkMjZlY2UzZTkyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKQEAgLTQyLDcgKzQy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3VybFJlcXVlc3RDbGllbnQ7CiBjbGFz
cyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN5bmNocm9ub3Vz
TG9hZGVyTWVzc2FnZVF1ZXVlOwogCiBjbGFzcyBDdXJsUmVxdWVzdCA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxDdXJsUmVxdWVzdD4sIHB1YmxpYyBDdXJsUmVxdWVzdFNjaGVkdWxlckNs
aWVudCwgcHVibGljIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQgewpAQCAtMTIyLDkgKzEyMiw5
IEBAIHByaXZhdGU6CiAgICAgQ1VSTCogc2V0dXBUcmFuc2ZlcigpIG92ZXJyaWRlOwogICAgIHNp
emVfdCB3aWxsU2VuZERhdGEoY2hhciosIHNpemVfdCwgc2l6ZV90KTsKICAgICBzaXplX3QgZGlk
UmVjZWl2ZUhlYWRlcihTdHJpbmcmJik7Ci0gICAgc2l6ZV90IGRpZFJlY2VpdmVEYXRhKFJlZjxT
aGFyZWRCdWZmZXI+JiYpOworICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFy
dChjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGFGcm9tTXVsdGlwYXJ0KFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENvbXBsZXRlVHJhbnNmZXIoQ1VSTGNvZGUpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsVHJhbnNmZXIoKSBvdmVycmlkZTsKICAgICB2b2lkIGZp
bmFsaXplVHJhbnNmZXIoKTsKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIE5ldHdv
cmtMb2FkTWV0cmljcyBuZXR3b3JrTG9hZE1ldHJpY3MoKTsKIAogICAgIC8vIERvd25sb2FkCi0g
ICAgdm9pZCB3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZm
ZXImKTsKKyAgICB2b2lkIHdyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGNsb3NlRG93bmxvYWRGaWxlKCk7CiAg
ICAgdm9pZCBjbGVhbnVwRG93bmxvYWRGaWxlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmgKaW5kZXggMDhj
ODZjN2Q0Njg0YmE2Zjc4ZDYxNmI2OGQwNjkwNGMzN2E5NjY3Ny4uMzQ3OTgzMmY1NzZkNDEyOGFm
YTUxYzgxNDI0Y2NmZDc0MWRmNmFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmgKQEAgLTM0LDcgKzM0LDcg
QEAgY2xhc3MgQ3VybFJlcXVlc3Q7CiBjbGFzcyBDdXJsUmVzcG9uc2U7CiBjbGFzcyBOZXR3b3Jr
TG9hZE1ldHJpY3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybFJlcXVlc3RDbGllbnQg
ewogcHVibGljOgpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
Y3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2Vu
dCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNl
JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVl
c3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRS
ZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0
d29ya0xvYWRNZXRyaWNzJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZEZhaWxXaXRo
RXJyb3IoQ3VybFJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiYsIENlcnRpZmljYXRlSW5mbyYmKSA9
IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXggODE4ZDVh
OTVlM2UxMjRkYzNhNzJmNzQzZTVjZDQ1M2Q3MTdlMDEwZi4uMzA1ZDRlNWM5ZmMyNzA3NzU3ODdi
MGY5YTkxOTc5YzA4ODg5YThhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUu
Y3BwCkBAIC0xNDIsMTUgKzE0MiwxNiBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRl
OjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQogICAgIH0p
OwogfQogCi12b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1
ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3Qm
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKIAogICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2
ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xp
ZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZl
ci0+c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250
aWd1b3VzKCk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURh
dGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwor
ICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShjb250aWd1
b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRs
ZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJp
Y3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAppbmRleCA2ZDU1
ODY0NDUyZmQ0NmVlNzgwMGU5MzEyM2IxMjhiZGM2NGNlNDg3Li5kYWYwYTU5YTRlNTg2ZDcxMTRh
YmI0ZTVlZjljNTRmNmE4YmVmYzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUu
aApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShD
dXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcg
bG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIGZpbmFsOwogICAgIHZvaWQgY3VybERpZFJlY2VpdmVS
ZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSBmaW5hbDsKLSAgICB2b2lkIGN1
cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShD
dXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxE
aWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0
ZUluZm8mJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCBiYzRk
YWFmYmYyMWExNWMwZTZkZDFhY2Q0NjIyYWZhNTZiN2I4ZDVkLi4xZjRhMTkzMTMzMTJjNWRkNmE0
OGFkNTMzOWRmZDJjM2I1ZGVjMjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCkBA
IC0zMSwxMiArMzEsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBMZWdhY3lQcmV2
aWV3TG9hZGVyQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8TGVnYWN5UHJldmlld0xvYWRlckNs
aWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQo
KSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hh
cmVkQnVmZmVyJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoKSB7IH0KICAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lY
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNw
cAppbmRleCAwZmI0NTAwNzJmYTEwNDIyZjZhOWZlNDMyYzM4MWQzZDE5NjEzZTYwLi5kNjMyMjI1
NjRlZjA3NGNkYmNkN2VlMjEzZWE5OTE1NzQwN2UzNTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCkBAIC0zNCw3ICszNCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1Jl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVh
dGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmls
ZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY4LDcgKzY4LDcg
QEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICBpZiAodG90YWxCeXRlc1JlYWQgIT0gYnl0
ZXNUb1JlYWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgcmV0dXJuIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAK
aW5kZXggYzU0NDUzODVhNzdhYzEyYzA5ZWYyNDg2NjQ3M2Q2MmNiNjc5NDU1YS4uNDUzNjgxYmRh
YjJlNGEwNWEyMWZjNjhhOTQzNzAwZTA2Yzk5N2ExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtMzU2LDcgKzM1Niw3IEBAIFN0cmluZyBQ
YXN0ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKIAog
c3RydWN0IFBhc3RlYm9hcmRGaWxlQ291bnRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVy
IHsKICAgICB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbCB7ICsrY291bnQ7
IH0KLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJikgZmluYWwgeyArK2NvdW50OyB9CisgICAgdm9pZCByZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSBmaW5hbCB7ICsrY291bnQ7IH0KIAogICAgIHVuc2lnbmVkIGNvdW50IHsgMCB9OwogfTsK
QEAgLTk3NCw3ICs5NzQsNyBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVE
ZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIG1l
bU9iajsKIH0KIAotc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChT
aGFyZWRCdWZmZXIqIGRhdGEpCitzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVD
b250ZW50KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgSEdMT0JBTCBtZW1P
YmogPSBHbG9iYWxBbGxvYyhHUFRSLCBkYXRhLT5zaXplKCkpOwogICAgIGlmICghbWVtT2JqKSAK
QEAgLTk4NiwxNSArOTg2LDE1IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmls
ZUNvbnRlbnQoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK
LSAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywg
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAg
ICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBHbG9iYWxVbmxvY2sobWVtT2JqKTsKIAogICAgIHJl
dHVybiBtZW1PYmo7CiB9CiAKLXN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVu
dChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRhKQor
c3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBT
dHJpbmcmIGZpbGVOYW1lLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlm
IChmaWxlTmFtZS5pc0VtcHR5KCkgfHwgIWRhdGEpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTAz
OCw4ICsxMDM4LDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNv
bnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWQKICAgICAgICAgLy8gV3JpdGUg
dGhlIGRhdGEgdG8gdGhpcyB0ZW1wIGZpbGUuCiAgICAgICAgIERXT1JEIHdyaXR0ZW47CiAgICAg
ICAgIEJPT0wgdGVtcFdyaXRlU3VjY2VlZGVkID0gRkFMU0U7Ci0gICAgICAgIGlmIChkYXRhLT5k
YXRhKCkpCi0gICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZp
bGVIYW5kbGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CisgICAg
ICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBX
cml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CiAgICAgICAgIENsb3NlSGFuZGxlKHRlbXBGaWxl
SGFuZGxlKTsKICAgICAgICAgaWYgKCF0ZW1wV3JpdGVTdWNjZWVkZWQpCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKQEAgLTEwNzEsNyArMTA3MSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFn
ZVRvRGF0YU9iamVjdChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCkKICAgICBpZiAo
IWNhY2hlZEltYWdlIHx8ICFjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihlbGVtZW50LnJl
bmRlcmVyKCkpIHx8ICFjYWNoZWRJbWFnZS0+aXNMb2FkZWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgU2hhcmVkQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJl
bmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSktPmRhdGEoKTsKKyAgICBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVsZW1l
bnQucmVuZGVyZXIoKSktPmRhdGEoKTsKICAgICBpZiAoIWltYWdlQnVmZmVyIHx8ICFpbWFnZUJ1
ZmZlci0+c2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggNDExZWRiYjM1MTdiODQ4ZmFjMDYzZDE5ZThjZDk1ZWMw
MDM3Y2Q2MS4uODRmYTI5Y2UxZjMwMGZlMjkwYjA0MTQ2NDhmMGY3MjkwYTdjYmViZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAg
Ym9vbCBNb2NrQ0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0pCiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uoa2V5U3lzdGVtLCAib3Jn
LndlYmtpdC5tb2NrIik7CiB9CiAKLXZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Np
b25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGtl
eXMpCit2b2lkIE1vY2tDRE1GYWN0b3J5OjphZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0
cmluZyYgaWQsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYga2V5cykKIHsK
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2Vzc2lvbnMuYWRkKGlkLCBXVEZNb3ZlKGtleXMpKTsK
ICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgTW9j
a0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVj
dG9yPFJlZjxTaGFyZWRCCiAgICAgICAgIHZhbHVlLmFwcGVuZChXVEZNb3ZlKGtleSkpOwogfQog
Ci1WZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJv
bVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkKK1ZlY3RvcjxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQo
Y29uc3QgU3RyaW5nJiBpZCkKIHsKICAgICBhdXRvIGl0ID0gbV9zZXNzaW9ucy5maW5kKGlkKTsK
ICAgICBpZiAoaXQgPT0gbV9zZXNzaW9ucy5lbmQoKSkKQEAgLTgzLDcgKzgzLDcgQEAgVmVjdG9y
PFJlZjxTaGFyZWRCdWZmZXI+PiBNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9u
V2l0aElEKGNvbnN0IFN0cmkKICAgICByZXR1cm4gV1RGTW92ZShpdC0+dmFsdWUpOwogfQogCi1j
b25zdCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+KiBNb2NrQ0RNRmFjdG9yeTo6a2V5c0ZvclNl
c3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3QKK2NvbnN0IFZlY3RvcjxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+KiBNb2NrQ0RNRmFjdG9yeTo6a2V5c0ZvclNlc3Npb25XaXRo
SUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3QKIHsKICAgICBhdXRvIGl0ID0gbV9zZXNzaW9ucy5m
aW5kKGlkKTsKICAgICBpZiAoaXQgPT0gbV9zZXNzaW9ucy5lbmQoKSkKQEAgLTIwMiw3ICsyMDIs
NyBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJldHVybiBt
X2ZhY3RvcnkgJiYgbV9mYWN0b3J5LT5zdXBwb3J0c1Nlc3Npb25zKCk7CiB9CiAKLWJvb2wgTW9j
a0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29sIE1vY2tDRE06OnN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAgICBpZiAoIXN1cHBvcnRlZEluaXRE
YXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0yMTEsMTIgKzIxMSwxMyBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZQogICAgIHJldHVy
biB0cnVlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3Bv
bnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKLSAgICBpZiAoIWNoYXJhY3RlcnNBcmVB
bGxBU0NJSShyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCisgICAgYXV0byBidWZm
ZXIgPSByZXNwb25zZS5tYWtlQ29udGlndW91cygpOworICAgIGlmICghY2hhcmFjdGVyc0FyZUFs
bEFTQ0lJKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcocmVz
cG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0
cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6
ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKCFyZXNwb25zZUFycmF5LmNvbnRhaW5zKFN0cmlu
ZygidmFsaWQtcmVzcG9uc2UiX3MpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNjks
OSArMjcwLDkgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJh
dGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXQKICAgICBjYWxsYmFjayhpbml0aWFs
aXplKCkpOwogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJh
Y2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxi
YWNrKQogewotICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRl
LT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOworICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNh
dGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNlcnRp
ZmljYXRlLT5zaXplKCkpOwogCiAgICAgY2FsbGJhY2soZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShj
ZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0K
QEAgLTI5Nyw3ICsyOTgsNyBAQCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpNb2NrQ0RNSW5zdGFu
Y2VTZXNzaW9uKFdlYWtQdHI8TW9ja0NETUluc3RhbmNlPiYmIGluc3RhbgogewogfQogCi12b2lk
IE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vu
c2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5z
dGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgTW9ja0NETUZh
Y3RvcnkqIGZhY3RvcnkgPSBtX2luc3RhbmNlID8gbV9pbnN0YW5jZS0+ZmFjdG9yeSgpIDogbnVs
bHB0cjsKICAgICBpZiAoIWZhY3RvcnkpIHsKQEAgLTMyMyw3ICszMjQsNyBAQCB2b2lkIE1vY2tD
RE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBl
LCBjb25zdCBBdG9tUwogICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGxpY2Vuc2Uu
ZGF0YSgpLCBsaWNlbnNlLmxlbmd0aCgpKSwgc2Vzc2lvbklELCBmYWxzZSwgU3VjY2Vzc1ZhbHVl
OjpTdWNjZWVkZWQpOwogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQg
TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Np
b25JRCwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNl
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9y
eSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRy
OwogICAgIGlmICghZmFjdG9yeSkgewpAQCAtMzMxLDcgKzMzMiw3IEBAIHZvaWQgTW9ja0NETUlu
c3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGlj
ZW5zZVR5cGUsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBy
ZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgp
KS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5n
KHJlc3BvbnNlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNw
bGl0KCcgJyk7CiAKICAgICBpZiAocmVzcG9uc2VWZWN0b3IuY29udGFpbnMoU3RyaW5nKCJpbnZh
bGlkLWZvcm1hdCJfcykpKSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmggYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKaW5kZXggZjVjZGE1MDVjZjJhMzNjMTA1
ZjAyNWM5N2M5MzUwYTk2ODY5OGUxZS4uZDk2YzE1NmVlNGQyNzkxYjhiMDk5OGRhZjk0MGVjNzUz
NzgwN2JjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaApAQCAtNzcs
OSArNzcsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1Nlc3Npb25XaXRoSUQoY29uc3QgU3Ry
aW5nJiBpZCkgeyByZXR1cm4gbV9zZXNzaW9ucy5jb250YWlucyhpZCk7IH0KICAgICB2b2lkIHJl
bW92ZVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgeyBtX3Nlc3Npb25zLnJlbW92ZShp
ZCk7IH0KLSAgICB2b2lkIGFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwg
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiYmKTsKLSAgICBjb25zdCBWZWN0b3I8UmVmPFNoYXJl
ZEJ1ZmZlcj4+KiBrZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdDsK
LSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IHJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJ
RChjb25zdCBTdHJpbmcmIGlkKTsKKyAgICB2b2lkIGFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29u
c3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJik7Cisg
ICAgY29uc3QgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4qIGtleXNGb3JTZXNz
aW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0OworICAgIFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+IHJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJp
bmcmIGlkKTsKIAogcHJpdmF0ZToKICAgICBNb2NrQ0RNRmFjdG9yeSgpOwpAQCAtOTYsNyArOTYs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jYW5DcmVhdGVJbnN0YW5jZXMgeyB0cnVlIH07CiAg
ICAgYm9vbCBtX3N1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzIHsgdHJ1ZSB9OwogICAgIGJvb2wg
bV9zdXBwb3J0c1Nlc3Npb25zIHsgdHJ1ZSB9OwotICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+PiBtX3Nlc3Npb25zOworICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0
b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gbV9zZXNzaW9uczsKIH07CiAKIGNsYXNz
IE1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZSB7CkBAIC0xMjEsOCArMTIxLDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0
c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNz
aW9ucygpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9t
U3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBm
aW5hbDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXpl
U2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiAgICAgV2Vha1B0cjxNb2Nr
Q0RNRmFjdG9yeT4gbV9mYWN0b3J5OwpAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6TW9jazsgfQogICAgIHZvaWQgaW5pdGlh
bGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYs
IEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nl
c3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxT
aGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNl
cnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2Fs
bGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CiAg
ICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAt
MTU0LDggKzE1NCw4IEBAIHB1YmxpYzoKICAgICBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQ
dHI8TW9ja0NETUluc3RhbmNlPiYmKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lk
IHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmlu
YWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZp
bmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9z
ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAg
ICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVt
b3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlci5jcHAKaW5kZXggZmMxMjdiN2I2N2JlYTczNDQ2M2NkMmQ1YjA3
NTZiNTliZWJhNThhZS4uMDU5ZjNhMzg2YjZjZjVmYTc5YjNjMTg5NzAxNTMxM2Y3Y2RiNGVmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKQEAgLTEx
MCw3ICsxMTAsNyBAQCB2b2lkIE1vY2tDb250ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEo
KQogICAgIG1heWJlRGV0ZXJtaW5lU3RhdHVzKERlY2lzaW9uUG9pbnQ6OkFmdGVyRmluaXNoZWRB
ZGRpbmdEYXRhKTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gTW9ja0NvbnRlbnRGaWx0ZXI6OnJl
cGxhY2VtZW50RGF0YSgpIGNvbnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTW9ja0Nv
bnRlbnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRpZEJs
b2NrRGF0YSgpKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9yZXBsYWNlbWVu
dERhdGEuZGF0YSgpLCBtX3JlcGxhY2VtZW50RGF0YS5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCmluZGV4IDQxMWEzMDA5NDdiNTM5ZTI2YWE2YzY0
YTAwOTMyOTJlOWZmYmU2YjkuLjYzNWFjODRiZTc5Mzg0N2FhNTcyMTNkMDFmZmMxZTc0Zjc2Yjc1
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKQEAgLTQy
LDcgKzQyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRh
KCkgb3ZlcnJpZGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50
RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAg
ICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVy
cmlkZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRC
dWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCmluZGV4
IDZkNDhiZDAyZDFjOTFmN2VlZDg2NGExNmNkNzU2YmIwNzdkNjU1MmEuLjVmODU0NWViYTViMGU3
YjhiYmFiYTVjNjkzYzJhNDM0MTg4YjJiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Njcmlw
dEJ1ZmZlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2NyaXB0
QnVmZmVyOjpTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgYXV0byB1
dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5k
YXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjpl
bXB0eSgpCkBAIC00NiwxNCArNDYsMTMgQEAgU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1w
dHkoKQogICAgIHJldHVybiBTY3JpcHRCdWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH07
CiB9CiAKLQogU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIGlm
ICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKLSAgICBtX2J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21l
bnQpIHsKKyAgICBtX2J1ZmZlci5nZXQoKS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21l
bnQpIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChzZWdtZW50LmRh
dGEoKSwgc2VnbWVudC5zaXplKCkpKTsKICAgICB9KTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOwpAQCAtNjEsMTUgKzYwLDEzIEBAIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5n
KCkgY29uc3QKIAogYm9vbCBTY3JpcHRCdWZmZXI6OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNl
Z21lbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci0+aGFzT25l
U2VnbWVudCgpICYmIG1fYnVmZmVyLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZp
bGVEYXRhKCk7CisgICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLmdldCgpLT5oYXNPbmVT
ZWdtZW50KCkgJiYgbV9idWZmZXIuZ2V0KCktPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFw
cGVkRmlsZURhdGEoKTsKIH0KIAogdm9pZCBTY3JpcHRCdWZmZXI6OmFwcGVuZChjb25zdCBTdHJp
bmcmIHN0cmluZykKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAg
ICBtX2J1ZmZlci0+YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1
ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBib29sIG9wZXJh
dG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiBhLCBjb25zdCBTY3JpcHRCdWZmZXImIGIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAppbmRleCBiMzlkOWMxMzAzMzAzMTFjMDRkN2Yz
Nzk2YjcxYTA0MzEzNGM2NjQ2Li5mZDJjMWFlMmY2M2I2MGQ3NGMzMGQyNDJhOTg5YTBiZmQ5MWRl
NDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKQEAgLTM4LDcgKzM4LDcg
QEAgY2xhc3MgU2NyaXB0QnVmZmVyIHsKIHB1YmxpYzoKICAgICBTY3JpcHRCdWZmZXIoKSA9IGRl
ZmF1bHQ7CiAKLSAgICBTY3JpcHRCdWZmZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CisgICAgU2NyaXB0QnVmZmVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKICAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiAgICAgewogICAgIH0KQEAg
LTQ4LDE3ICs0OCwxNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2Ny
aXB0QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7
Ci0gICAgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQo
KTsgfQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9CiAKLSAgICBTY3JpcHRCdWZmZXIgaXNvbGF0
ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4obV9idWZmZXItPmNvcHkoKSkgOiBudWxscHRyKTsgfQorICAgIFNjcmlwdEJ1
ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIg
PyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4obV9idWZmZXIuY29weSgpKSA6IG51bGxw
dHIpOyB9CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9i
dWZmZXI7IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXIgfHwg
IW1fYnVmZmVyLT5zaXplKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlci5pc0VtcHR5KCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNT
aW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0OwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0
cmluZyYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOyAv
LyBDb250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgogfTsK
IAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IFNjcmlwdEJ1ZmZl
ciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJl
cXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3Qu
Y3BwCmluZGV4IDc3NDE2ZWMwN2Q3YjY4YjEyOGUyOTYxZWRjNWQ2NDBkMDRkNGJkNDUuLjQwNjZm
YjM1MmViNWIwODdkNWQ4ZDQ3ZDgwMmZkMmMwYTZhODBmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogV29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9h
ZFJlcXVlc3QoVVJMJiYgdXJsLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFx
dWVTb3VyY2UpCiAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAgICAgLCBtX2xvYWRlZEZyb21P
cGFxdWVTb3VyY2UobG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKKyAgICAsIG1fZGF0YShtYWtlVW5p
cXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTc1LDEyICs3NiwyMSBA
QCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29y
a2VyR2xvYmFsU2NvcGUpCiAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNl
U3luY2hyb25vdXNseSh3b3JrZXJHbG9iYWxTY29wZSwgV1RGTW92ZShyZXF1ZXN0KSwgKnRoaXMs
IG9wdGlvbnMpOwogfQogCitib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gIW1faXNMb2FkaW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYg
bV9kYXRhLT5pc051bGwoKTsKK30KKwogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3Vy
ZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3Vz
dG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0g
ICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkobV9kYXRhKTsKLSAgICAgICAgaWYg
KG1fZGF0YSkgewotICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9kYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIo
KS50b1N0cmluZygpKTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udGlndW91c0Rh
dGE7CisgICAgICAgIGlmIChtX2RhdGEtPmdldCgpKQorICAgICAgICAgICAgY29udGlndW91c0Rh
dGEgPSBtX2RhdGEtPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7CisgICAgICAgIGlmIChjb250aWd1
b3VzRGF0YSkgeworICAgICAgICAgICAgbV9kYXRhLT5hcHBlbmQoKmNvbnRpZ3VvdXNEYXRhKTsK
KyAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50
b1N0cmluZygpKTsKICAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQog
ICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CiAgICAgICAgIH0KQEAgLTEx
Nyw5ICsxMjcsNiBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiAgICAgaWYgKG1fZXJyb3JPY2N1
cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2RhdGEpCi0gICAgICAgIG1fZGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBk
YXRhTGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExv
YWRSZXF1ZXN0LmgKaW5kZXggYjlmY2ZiMWQ2ZmVhOGFkNWU3ODBiZGVlYmM1YzZlMDRhMWU4NjNj
Ny4uMWIzZDc4NzBmMTI4YmZlNTM4ZWU2Yzk4NTljZGFhZTgxZTQ1ZTJhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCkBAIC0zMCwxMyArMzAs
MTQgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIKICNpbmNsdWRlICJUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0
Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRl
cjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogCiBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGNvbnN0IFVS
TCYgdXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV91cmw7IH0KLSAgICBib29sIGlzUGVuZGlu
ZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX2lzTG9hZGluZyAmJiAhbV9lcnJvck9jY3VycmVk
ICYmICFtX2RhdGE7IH0KKyAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGJv
b2wgaXNMb2FkaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0xvYWRpbmc7IH0KICAgICBi
b29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Vycm9yT2NjdXJyZWQ7
IH0KIApAQCAtNzYsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIEZvbnRMb2FkUmVxdWVzdENsaWVu
dCogbV9mb250TG9hZFJlcXVlc3RDbGllbnQgeyBudWxscHRyIH07CiAKICAgICBXZWFrUHRyPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fY29udGV4dDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX2RhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fZGF0YTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9mb250Q3VzdG9tUGxh
dGZvcm1EYXRhOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAppbmRleCBlYjI2NmI2YzA3ZTY3
M2Q5MTY2Y2FjZTZiMzM5MTlkODBlYmJmMzFjLi4wOTc1NDNlMWIzYjMwZmYzMTQ3ZDkyMzJhNThj
ZTRhOWU2MmYzZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaApAQCAtNDIsNyArNDIsNyBAQCBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlOwogY2xhc3MgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFt
ZXNwYWNlIFNlcnZpY2VXb3JrZXJGZXRjaCB7CiBjbGFzcyBDbGllbnQgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8Q2xpZW50LCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CkBA
IC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVk
aXJlY3Rpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxG
b3JtRGF0YT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNl
RXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaCgpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9y
YWdlLmNwcAppbmRleCA4OWE4NzVmOGFmYzBkNjIzNTVhYzYyMjlhNjRjMWNhNDNkMTg1NjUyLi45
YThmYjM1Y2E1MzYxMDViYjZkNmZjNDZlZTEyMjQ1OTMzZjcwYmY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2Uu
Y3BwCkBAIC0xMjcsNyArMTI3LDggQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6cmV0
cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXMKICAgICB9CiAK
ICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBkaXNhYmxlIGZpbGUgbWFwcGluZyBpbiBtb3Jl
IGNhc2VzIHRvIGF2b2lkIGhhdmluZyB0b28gbWFueSBmaWxlIGRlc2NyaXB0b3JzIG9wZW4/Ci0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBh
dGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFw
cGluZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDog
U2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwg
c2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmls
ZU1hcHBpbmc6OlllcyA6IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAg
ICByZXR1cm4gYnVmZmVyOwogfQogCiB2b2lkIFNXU2NyaXB0U3RvcmFnZTo6Y2xlYXIoY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggYWI5OTYwM2VhNTNlMjQ2YjYzMzIxZmJkNDE0
MWNjNWUyOWNlOTZiNC4uZmNjYzJhOWVkMjBkNzQ3YzA5YzYxNmI0OThlNTMwZWY3OGE4ZTU2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xMTgsNiArMTE4LDcgQEAg
WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpCiAgICAgLCBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkKGZhbHNlKQogICAgICwgbV9yZWFk
eVN0YXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihVTlNFTlQpKQogICAgICwgbV9yZXNwb25zZVR5
cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcpKQorICAg
ICwgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWls
ZGVyPigpKQogICAgICwgbV9wcm9ncmVzc0V2ZW50VGhyb3R0bGUoKnRoaXMpCiAgICAgLCBtX3Rp
bWVvdXRUaW1lcigqdGhpcywgJlhNTEh0dHBSZXF1ZXN0Ojp0aW1lb3V0VGltZXJGaXJlZCkKIHsK
QEAgLTIwNyw4ICsyMDgsOCBAQCBSZWY8QmxvYj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3Bv
bnNlQmxvYigpCiAKICAgICAvLyBGSVhNRTogV2UganVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9t
IE5ldHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNlbmRpbmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmlj
aWVudC4KICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBpZiAobV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXIpCi0gICAgICAgIGRhdGEgPSBzdGQ6OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyLCBudWxscHRyKS0+ZXh0cmFjdERhdGEoKTsKKyAgICBpZiAoIW1fYmluYXJ5UmVzcG9u
c2VCdWlsZGVyLT5pc051bGwoKSkKKyAgICAgICAgZGF0YSA9IG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyLT50YWtlKCktPmV4dHJhY3REYXRhKCk7CiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRDb250ZW50
VHlwZSA9IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShyZXNwb25zZU1JTUVUeXBlKEZpbmFs
TUlNRVR5cGU6OlllcykpOyAvLyByZXNwb25zZU1JTUVUeXBlIGRlZmF1bHRzIHRvIHRleHQveG1s
IHdoaWNoIG1heSBiZSBpbmNvcnJlY3QuCiAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUoZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50VHlwZSk7
CiB9CkBAIC0yMTgsOCArMjE5LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBYTUxIdHRwUmVxdWVz
dDo6Y3JlYXRlUmVzcG9uc2VBcnJheUJ1ZmZlcigpCiAgICAgQVNTRVJUKHJlc3BvbnNlVHlwZSgp
ID09IFJlc3BvbnNlVHlwZTo6QXJyYXlidWZmZXIpOwogICAgIEFTU0VSVChkb25lV2l0aG91dEVy
cm9ycygpKTsKIAotICAgIGF1dG8gcmVzdWx0ID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPyBt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVm
ZmVyOjpjcmVhdGUobnVsbHB0ciwgMCk7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBu
dWxscHRyOworICAgIGF1dG8gcmVzdWx0ID0gIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5pc051
bGwoKSA/IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVm
ZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKQEAgLTc0MSw3ICs3NDEsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjbGVhclJl
c3BvbnNlQnVmZmVycygpCiAgICAgbV9yZXNwb25zZUVuY29kaW5nID0gU3RyaW5nKCk7CiAgICAg
bV9jcmVhdGVkRG9jdW1lbnQgPSBmYWxzZTsKICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBudWxs
cHRyOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlci0+cmVzZXQoKTsKICAgICBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkID0g
ZmFsc2U7CiB9CiAKQEAgLTEwNjUsOCArMTA2NSw2IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCiAgICAgICAgIG1fcmVz
cG9uc2VCdWlsZGVyLmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsKICAgICBl
bHNlIHsKICAgICAgICAgLy8gQnVmZmVyIGJpbmFyeSBkYXRhLgotICAgICAgICBpZiAoIW1fYmlu
YXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
ci0+YXBwZW5kKGRhdGEsIGxlbik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5oCmluZGV4IDcyODk0YWY2Y2M0N2RiYWU1ZTc1YzNhODA3OTA5ZWYyODRmNmQ1OTcuLjE2MmNh
OTVhZWI3NTQ0ODliZDZjZDhjZGM1MDg2MmM4NDc3N2JhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRl
ckNsaWVudC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8
d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlICJYTUxIdHRw
UmVxdWVzdEV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2
ZW50VGhyb3R0bGUuaCIKICNpbmNsdWRlIDx2YXJpYW50PgpAQCAtNDUsNyArNDYsNyBAQCBjbGFz
cyBCbG9iOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRl
cjsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyOwog
Y2xhc3MgVVJMU2VhcmNoUGFyYW1zOwpAQCAtMjM3LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAKICAg
ICBSZWZQdHI8RG9jdW1lbnQ+IG1fcmVzcG9uc2VEb2N1bWVudDsKIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOworICAgIFVuaXF1ZVJlZjxTaGFyZWRC
dWZmZXJCdWlsZGVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKIAogICAgIFN0cmluZ0J1aWxk
ZXIgbV9yZXNwb25zZUJ1aWxkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcAppbmRleCA1NzMwNjdlM2Rk
MDUwZmViN2M1NzlkMDAxMDJlZTlmNjA0NWI1MzEzLi4zMWMyZDc2ZjJlZTFiOWQyNDliMDAxYjdl
ZmY4OTJlYzJhNzQ1NmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFJl
bW90ZUNETUluc3RhbmNlUHJveHk6On5SZW1vdGVDRE1JbnN0YW5jZVByb3h5KCkKICAgICBtX2lu
c3RhbmNlLT5jbGVhckNsaWVudCgpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6
OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiB0eXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYg
dHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCiB7CiAgICAgaWYg
KCFtX2NkbSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKaW5kZXggOGU3M2QzZDlhNjRi
OThiZmMwMDkzNmNkNDdjNGMyNWE5Mjc5ZjJjOC4uMDJjNWNkMzdhZTU0ODAyZjZkMGM4ZGNjY2Iw
YmE4MGNmMzM4OGMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6
CiAgICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRyPFJlbW90ZUNETVByb3h5PiYmLCBS
ZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNv
bmZpZ3VyYXRpb24+JiYsIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllcik7CiAKICAgICAvLyBD
RE1JbnN0YW5jZUNsaWVudAotICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFS
ZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKKyAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3Qg
U3RyaW5nJiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwog
CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eS5jcHAKaW5kZXggZTU3NjZjMjMzNGNmZDM4OTMxMGNkNGIyMTcyM2NhYmEzNzQy
ZmM3Yy4uZGU4MjczYjljZjUwMGE0ZDY2YWExNDRlZGUwMjAxZWVmMWVkODYyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIEF0
b21TdHJpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fc2Vzc2lvbi0+cmVxdWVz
dExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0YS5idWZmZXIoKS5yZWxlYXNlTm9u
TnVsbCgpLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChSZWY8U2hhcmVkQnVm
ZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZp
ZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkg
bXV0YWJsZSB7CisgICAgbV9zZXNzaW9uLT5yZXF1ZXN0TGljZW5zZSh0eXBlLCBpbml0RGF0YVR5
cGUsIGluaXREYXRhLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RG
TW92ZShjb21wbGV0aW9uKV0gKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENE
TUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAg
ICAgIGNvbXBsZXRpb24oV1RGTW92ZShtZXNzYWdlKSwgc2Vzc2lvbklkLCBuZWVkc0luZGl2aWR1
YWxpemF0aW9uLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZWVkZWQpOwog
ICAgIH0pOwogfQpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHk6OmNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTCiAK
IHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlbW92ZVNlc3Npb25EYXRhKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZW1vdmVTZXNzaW9uRGF0
YUNhbGxiYWNrJiYgY29tcGxldGlvbikKIHsKLSAgICBtX3Nlc3Npb24tPnJlbW92ZVNlc3Npb25E
YXRhKHNlc3Npb25JZCwgdHlwZSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAo
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNlcywgc3RkOjpv
cHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBleHBpcmVkU2Vzc2lvbnNEYXRhLCBDRE1JbnN0
YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgIG1fc2Vz
c2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlLCBbY29tcGxldGlvbiA9IFdU
Rk1vdmUoY29tcGxldGlvbildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYm
IGtleVN0YXR1c2VzLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4m
JiBleHBpcmVkU2Vzc2lvbnNEYXRhLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBz
dWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVm
ZmVyQ29weT4gZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlOwogICAgICAgICBpZiAoZXhwaXJl
ZFNlc3Npb25zRGF0YSkKICAgICAgICAgICAgIGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5jZSA9
IElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKCpleHBpcmVkU2Vzc2lvbnNEYXRhKSk7CkBA
IC0xNDksNyArMTQ5LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBk
YXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHUKICAgICBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uOjpVcGRhdGVLZXlTdGF0dXNlcyhXVEZNb3ZlKGtleVN0YXR1c2VzKSksIG1f
aWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNl
bmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2Fn
ZSkKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKENETU1l
c3NhZ2VUeXBlIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7
CiAgICAgaWYgKCFtX2NkbSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkuaAppbmRleCA4YTYxZjlkNWZhYmM4NDg2YTdhMGU4NjBmNGM2MzEyYzBiNDQ1NTE0Li5mZTcz
MDk3MTMxZTBiYjIwYTUwMDFlMTUwMTYwMmQ2NTE4NmIzMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkuaApAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ0RNSW5zdGFu
Y2VTZXNzaW9uQ2xpZW50CiAgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0
b3ImJikgZmluYWw7Ci0gICAgdm9pZCBzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlw
ZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lk
IHNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKICAgICB2b2lkIHNlc3Npb25JZENo
YW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxh
eUlEKCkgZmluYWwgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKaW5kZXggOWFiMzU3NWY0YzNi
NTU5NTU1YjliODdiMjMzNzFiMWIxYTY2ZGMxNy4uZjdjYjZhNjNlYjkzM2FiZDRkNDUzYTIyYWIy
OTRmMTMwMzIzMmIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNUHJveHkuY3BwCkBAIC02MywxMiArNjMsMTIgQEAgUmVtb3RlQ0RNUHJveHk6OlJl
bW90ZUNETVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIHN0
ZDo6dW4KIAogUmVtb3RlQ0RNUHJveHk6On5SZW1vdGVDRE1Qcm94eSgpID0gZGVmYXVsdDsKIAot
Ym9vbCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0
eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCitib29sIFJlbW90ZUNETVByb3h5OjpzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0
YSh0eXBlLCBkYXRhKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNUHJveHk6
OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKK1JlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gbV9w
cml2YXRlLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKaW5kZXggNjkyNGU3NGUzZjUwMTFi
ZTIxNWJlNGJkOTZiMjM0ODI2NDcwZjQyMy4uM2I2NmM3NzU3ODcwNjllOTc2ZWUwNjRmOTZmZjA3
YzBmNzEyYTkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETVByb3h5LmgKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiBlbnVtIGNsYXNzIENETVJlcXVpcmVtZW50IDogdWludDhfdDsK
IGVudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgOiB1aW50OF90Owogc3RydWN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb247CkBAIC01OCw4ICs1OCw4IEBAIHB1YmxpYzoKIAogICAgIFJlbW90ZUNE
TUZhY3RvcnlQcm94eSogZmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZmFjdG9yeS5nZXQoKTsg
fQogCi0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgcmVzcG9uc2Up
OworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKTsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpOwogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
UHJveHkuaAppbmRleCBlMmNkMDVkN2NjNzRmMjBlYzY5ZmFkZmUzZWUwODU3NTkyYWQ4NzliLi5k
ZThmNmRmNTVhNmUxZmE4YmU5NjZmOTQxZTA3ZmUyZjVjNTAyMWE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaApAQCAt
MzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAppbmRl
eCA5M2IyZmY3NDFiMWY4MzY5YjIwNTg0ZTQ5N2U0YTAyMWI5Y2NmNTc4Li4yMTQxMzc5ZDZhNTll
YWYyMjg1MTRiMTg3YjU2OWQwNDcwM2MxMTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNw
cApAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHk+IGNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZShUIGFycgogewogICAgIGlmICgh
YXJyYXkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIHsgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKGNvbnN0IGNoYXIqKWFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVu
Z3RoKCkpIH07CisgICAgcmV0dXJuIHsgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChj
b25zdCBjaGFyKilhcnJheS0+ZGF0YSgpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKSB9OwogfQogCiB2
b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIGluaXREYXRhLCBHZW5l
cmF0ZUtleUNhbGxiYWNrJiYgY29tcGxldGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaAppbmRl
eCBmMTRjNjI3ZjY1OTNlMWE4NzhkMGY0NTk5MmIzYzQxYjIyMmM3ZjAwLi4xNTQ2YmRmZGZkY2Yw
OTEwODc4OTQ0ZjM0MDc5NjdhN2FiMzhiZjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oCkBA
IC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMZWdhY3lDRE07CiBj
bGFzcyBMZWdhY3lDRE1TZXNzaW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIElQQyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKaW5kZXgg
YzQ1ZTUyNTVkNjdiNTJjN2FlMTA0NDk5ODhjZTAxOTBjN2ZmYjUzOC4uNjE3ZjQ3Njg5NTY0MmRl
YzIzMjU0YjU0MGVlODE5MTFhYzRhMmRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcApAQCAtOTYsNyArOTYsNyBA
QCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFTZW50KHVpbnQ2NF90IGJ5dGVzU2VudCwg
dWludDY0X3QgdG90YWxCeXRlc1RvQmVTZQogICAgICAgICBtX2NsaWVudC0+ZGF0YVNlbnQoKnRo
aXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRp
YVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBS
ZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgZGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5kYXRh
UmVjZWl2ZWQoKnRoaXMsIFdURk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKaW5kZXggZDEzZDI1ZjY1ZjAy
MjRhNmM3NjdmNjlhNGQ0MTljZDA1M2JiNzk1ZC4uNWI3YTdlMmE3NDI0NDMyZDg2Y2IyOGExYmU3
MTcxOGExNjczNzVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OlNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKTsKICAgICB2b2lkIHJlZGly
ZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCBkYXRhU2VudCh1aW50NjRfdCwgdWludDY0X3QpOwot
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAg
IHZvaWQgZGF0YVJlY2VpdmVkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDdlNTcyYjNhNzRhMjAyN2U3NGNhYTc2NzJl
NTJkYTBhZjgzNDIwNzIuLmU4M2Y5MTQzZDIwYTcyZTJiZTRmZmNiZmVkMTNiMGJiNGRkMzFlMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw4IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNv
cmRlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiBy
ZW1vCiB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIG1fd3JpdGVyLT5mZXRjaERhdGEoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBkYXRhLCBhdXRvIHRpbWVDb2RlKSBtdXRhYmxl
IHsKLSAgICAgICAgYXV0byogcG9pbnRlciA9IGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRy
OworICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDog
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4oKTsKKyAgICAgICAgYXV0byogcG9pbnRlciA9
IGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoSVBDOjpEYXRhUmVmZXJlbmNlIHsgcG9pbnRlciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6
IDAgfSwgdGltZUNvZGUpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAppbmRleCA1MmNjNWRh
MTIxYTJmYjU5ZDhjZjA1OTNiNjg1MDlmZDY1NWMwY2RjLi43MWZkMDIyMjliYmIxYzU3MzI2ZmRm
Y2ZlMjZjMTFmNzYxYWJjZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaApAQCAtNjgsNyArNjgsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOyB9CiAg
ICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKSBvdmVycmlkZSB7IH07CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRGYWlsTG9h
ZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmNwcAppbmRleCAzZjM5ZWIzMmYxYWE4MDc2Nzg1ZGE3OWVlMTFkYWQ4ZjBjMzI2
Yjc5Li5kODkyMGU5ODc2NGZkOWI2NGI5Y2RkYzYwYTFkODRkNjE5YjJkNDA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBOZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXI6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYKICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7CiB9CiAKLXZvaWQg
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmKQordm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQogewogICAg
IENPUlNfQ0hFQ0tFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGEiKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlci5oCmluZGV4IGJiYjE0NjJhMzE2MWUyZmNlOWVhNTc4NDRiMTliOTNlNjE5YzgxYjAu
LmUxMWJmNTYzMTkwN2FlNDczMzZlZjg1YTVkMjJlODgzNTc0NjUxYjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXIuaApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
JiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZp
bmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVz
U2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lk
IHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFzay5oCmluZGV4IGQ2MDE4ZjYxMzgzYWUzYTUxZTlkNDcyMmNmNmE2MGUyZDhi
ODdhN2QuLmUwNDllNWIxMmRkZTVmZTUxYjQ2OTU1Mjg5YTdhN2Y2OTk4MmFmY2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaApAQCAtNDMsNyAr
NDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxl
dGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWlu
dDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdh
c0Jsb2NrZWQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuY3BwCmluZGV4IGJhYzAyMmFiNDU0MzBmNjUxYjE4OWFjMDEyMDdhMDYwNjA4YzE2NzEuLjc5
NzVkNDFiYWQ4OTE1ZmVlZGJkYWIxNTU0ZTgxZTFkYjIwMzBmODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgdm9p
ZCBOZXR3b3JrTG9hZDo6bm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgTmVnb3RpYXQKICAgICBtX2NsaWVudC5nZXQoKS5kaWRSZWNlaXZlUmVzcG9u
c2UoV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAot
dm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHRoZSBl
bmNvZGVkIGRhdGEgbGVuZ3RoLCBub3QgdGhlIGRlY29kZWQgZGF0YSBsZW5ndGguCiAgICAgYXV0
byBzaXplID0gYnVmZmVyLT5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmgKaW5kZXggYzM3NzNjOTg3ODU1M2NlNTM0ZDA1NGFiZmZkZGViYjI5ZWUwODRk
Mi4uZWU1ZWIwMDZhYTM3OWI3OGZjYmMwYmQxNzRlMzJiZDYzOWY5NWU2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaApAQCAtODAsNyArODAsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxl
bmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAg
dm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwg
Y29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRT
ZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVj
dGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAppbmRleCAwYTVm
NjZiZDk2N2VjOWZkZjY2NGU1MmU1YWYzOTRlNDhlY2UxZjdiLi4zNDhjZmZiOWU4ZTI1ZWU4M2Ji
YjM5YTAyY2QzY2Y2ZDI4NTRkMzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIE5ldHdvcmtMb2Fk
TWV0cmljczsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiBlbnVtIGNsYXNzIFBvbGljeUFjdGlvbiA6IHVpbnQ4X3Q7CiB9CiAKQEAgLTUxLDcgKzUx
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25n
IGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSB7IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggYmY4ZjM1N2Q3YTgzZWU1MDI4OTFkYjFlNWFiZDg0MTg0YzYzMzZj
OC4uNzMxODllZmU0MzFiYTczMzNiYWIyYTdiNzQwMzJkMTFjYjVmYzYxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cApAQCAtODcsMTQgKzg3LDE0IEBAIHN0cnVjdCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNo
cm9ub3VzTG9hZERhdGEgewogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiB9OwogCi1zdGF0aWMg
dm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OlN5bmNocm9ub3VzTG9hZERhdGEmIGRhdGEsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCitzdGF0aWMgdm9pZCBzZW5kUmVwbHlU
b1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9h
ZERhdGEmIGRhdGEsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIEFTU0VSVChkYXRhLmRlbGF5ZWRS
ZXBseSk7CiAgICAgQVNTRVJUKCFkYXRhLnJlc3BvbnNlLmlzTnVsbCgpIHx8ICFkYXRhLmVycm9y
LmlzTnVsbCgpKTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiByZXNwb25zZUJ1ZmZlcjsKICAgICBp
ZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBl
bmQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgcmVzcG9uc2VCdWZm
ZXIuYXBwZW5kKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7CiAKICAgICBkYXRhLnJlc3BvbnNlLnNldERlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3Mo
Qm94PE5ldHdvcmtMb2FkTWV0cmljcz46OmNyZWF0ZShtZXRyaWNzKSk7CiAKQEAgLTEwNSw5ICsx
MDUsMTEgQEAgc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWQKIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
TmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycywgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9h
ZDo6RGVsYXllZFJlcGx5JiYgc3luY2hyb25vdXNSZXBseSkKICAgICA6IG1fcGFyYW1ldGVycyB7
IFdURk1vdmUocGFyYW1ldGVycykgfQogICAgICwgbV9jb25uZWN0aW9uIHsgY29ubmVjdGlvbiB9
CisgICAgLCBtX2J1ZmZlcmVkRGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRl
cj4oKSB9CiAgICAgLCBtX2ZpbGVSZWZlcmVuY2VzKGNvbm5lY3Rpb24ucmVzb2x2ZUJsb2JSZWZl
cmVuY2VzKG1fcGFyYW1ldGVycykpCiAgICAgLCBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRl
bnRpYWxzIHsgbV9wYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3Jl
ZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMgfQogICAgICwgbV9idWZm
ZXJpbmdUaW1lciB7ICp0aGlzLCAmTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1l
ckZpcmVkIH0KKyAgICAsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgeyBtYWtlVW5pcXVlUmVmPFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3Jr
TG9hZE1ldHJpY3MobV9jb25uZWN0aW9uLT5jYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NF
bmFibGVkKCkpCiAgICAgLCBtX3Jlc291cmNlTG9hZElEIHsgTmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXI6OmdlbmVyYXRlKCkgfQogewpAQCAtMzA2LDEwICszMDgsMTAgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgRmlyc3RMb2EKICAgICAgICAgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAKICAg
ICAgICAgaWYgKGlzU3luY2hyb25vdXMoKSB8fCBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmlu
Z1RpbWUgPiAwX3MpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHkoKTsKIAogICAgICAg
ICBpZiAoY2FuVXNlQ2FjaGUocmVxdWVzdCkpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUtPmVtcHR5KCk7CiAgICAgfQogCiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJz
IHBhcmFtZXRlcnMgPSBtX3BhcmFtZXRlcnM7CkBAIC03MzAsMjAgKzczMiwyMCBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2Um
JiByZWNlaXZlZFJlc3BvbgogICAgICAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsKICAgICB9OwogCi0g
ICAgaWYgKCFtX2J1ZmZlcmVkRGF0YQorICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkK
ICAgICAgICAgJiYgbV9yZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSA+IHN0YXRpY19j
YXN0PGxvbmcgbG9uZz4oMSAqIE1CKQogICAgICAgICAmJiBpc0ZldGNoT3JYSFIocmVzb3VyY2VM
b2FkSW5mbykKICAgICAgICAgJiYgaXNNZWRpYU1JTUVUeXBlKG1fcmVzcG9uc2UubWltZVR5cGUo
KSkpIHsKLSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHkoKTsKICAgICAgICAgbV9wYXJhbWV0ZXJzLm1h
eGltdW1CdWZmZXJpbmdUaW1lID0gV2ViTG9hZGVyU3RyYXRlZ3k6Om1lZGlhTWF4aW11bUJ1ZmZl
cmluZ1RpbWU7CiAgICAgfQogCiAgICAgLy8gRm9yIG11bHRpcGFydC94LW1peGVkLXJlcGxhY2Ug
ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMgZ2V0cyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYW5kIGJ1
ZmZlcmluZyB3b3VsZCByZXF1aXJlIHNwZWNpYWwgaGFuZGxpbmcuCiAgICAgaWYgKCFpc1N5bmNo
cm9ub3VzKCkgJiYgbV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVk
RGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLT5yZXNldCgpOwogCiAgICAg
aWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JD
YWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7
CiAKICAgICBpZiAobV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikgewogICAgICAgICBib29sIHZh
bGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAv
LyAzMDQgTm90IE1vZGlmaWVkCkBAIC04NTgsNyArODYwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnNlbmREaWRSZWNlaXZlUmVzcG9uc2VQb3RlbnRpYWxseUluTmV3QnJvd3NpbmdD
b250ZXgKICAgICB9KTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fbnVtQnl0ZXNSZWNlaXZlZCkKICAgICAgICAgTE9B
REVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlQnVmZmVyOiBTdGFydGVkIHJlY2VpdmluZyBkYXRh
IChyZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoPSVkKSIsIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpOwpAQCAtODY2LDIwICs4NjgsMjAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXAKIAogICAg
IEFTU0VSVCghbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbik7CiAKLSAgICBpZiAobV9idWZmZXJl
ZERhdGFGb3JDYWNoZSkgeworICAgIGlmICghbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+aXNOdWxs
KCkpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFt
aW5nIGRhdGEgYW5kIGxpbWl0IHNpemUgb2YgZW50cmllcyBpbiB0aGUgY2FjaGUuCiAgICAgICAg
IGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gbV9jYWNoZS0+Y2FwYWNpdHko
KSAvIDg7CiAgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZm
ZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQogICAgICAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS0+cmVzZXQoKTsKICAgICB9CiAgICAgaWYgKGlzQ3Jvc3NP
cmlnaW5QcmVmZXRjaCgpKQogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6IEF0IGxlYXN0
IG9uIE9TIFggWW9zZW1pdGUgd2UgYWx3YXlzIGdldCAtMSBmcm9tIHRoZSByZXNvdXJjZSBoYW5k
bGUuCiAgICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVyLT5zaXplKCk7
CiAKLSAgICBpZiAobV9idWZmZXJlZERhdGEpIHsKKyAgICBpZiAoIW1fYnVmZmVyZWREYXRhLT5p
c051bGwoKSkgewogICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7
CiAgICAgICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggKz0gZW5jb2RlZERhdGFM
ZW5ndGg7CiAgICAgICAgIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwpAQCAtOTA5LDEx
ICs5MTEsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmco
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG8KICNlbmRpZgogCiAgICAgaWYgKGlz
U3luY2hyb25vdXMoKSkKLSAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1f
c3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEuZ2V0KCksIG5ldHdvcmtMb2FkTWV0
cmljcyk7CisgICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9u
b3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLT5nZXQoKS5nZXQoKSwgbmV0d29ya0xvYWRNZXRy
aWNzKTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhICYmICFtX2J1ZmZl
cmVkRGF0YS0+aXNFbXB0eSgpKSB7CisgICAgICAgIGlmICghbV9idWZmZXJlZERhdGEtPmlzRW1w
dHkoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFBhc3MgYSByZWFsIHZhbHVlIG9yIHJlbW92
ZSB0aGUgZW5jb2RlZCBkYXRhIHNpemUgZmVhdHVyZS4KLSAgICAgICAgICAgIHNlbmRCdWZmZXIo
Km1fYnVmZmVyZWREYXRhLCAtMSk7CisgICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVk
RGF0YS0+Z2V0KCksIC0xKTsKICAgICAgICAgfQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJS
ZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmljcykp
OwogICAgIH0KQEAgLTEyNTQsMTkgKzEyNTYsMTkgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpCiAKIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKCkKIHsKLSAgICBBU1NFUlQobV9idWZmZXJlZERh
dGEpOworICAgIEFTU0VSVCghbV9idWZmZXJlZERhdGEtPmlzTnVsbCgpKTsKICAgICBBU1NFUlQo
bV9uZXR3b3JrTG9hZCk7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRp
ZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhIH0sIG1fYnVmZmVyZWREYXRhRW5jb2RlZERh
dGFMZW5ndGgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVj
ZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEtPmdldCgpIH0sIG1fYnVmZmVyZWREYXRhRW5jb2Rl
ZERhdGFMZW5ndGgpKTsKIAotICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICBtX2J1ZmZlcmVkRGF0YS0+ZW1wdHkoKTsKICAgICBtX2J1ZmZlcmVkRGF0YUVu
Y29kZWREYXRhTGVuZ3RoID0gMDsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNl
bmRCdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkK
K3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCgh
aXNTeW5jaHJvbm91cygpKTsKIApAQCAtMTI3OSw3ICsxMjgxLDcgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICAgICAgTE9BREVSX1JFTEVB
U0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0b3JpbmcgY2FjaGUgZW50cnkgYmVj
YXVzZSByZXF1ZXN0IGlzIG5vdCBlbGlnaWJsZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIGlmICghbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgeworICAgIGlmIChtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLT5pc051bGwoKSkgewogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0
b3JlQXNDYWNoZUVudHJ5OiBOb3Qgc3RvcmluZyBjYWNoZSBlbnRyeSBiZWNhdXNlIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUgaXMgbnVsbCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTI4
NywxMiArMTI4OSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0Nh
Y2hlRW50cnkoKQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkgewogICAgICAgICBp
ZiAoYXV0byogc2Vzc2lvbiA9IG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQoKSkpIHsKICAgICAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygi
dHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gcHJlZmV0Y2ggY2FjaGUiKTsK
LSAgICAgICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2Fk
LT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBXVEZNb3ZlKG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2Fj
aGUoKS5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3Zl
KG1fcmVzcG9uc2UpLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT50YWtlKCkpOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9y
ZUFzQ2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBIVFRQIGRpc2sgY2FjaGUiKTsKLSAgICBt
X2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNl
LCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpLCBbbG9hZGVyID0gUmVmIHsgKnRoaXMg
fV0oYXV0byYgbWFwcGVkQm9keSkgbXV0YWJsZSB7CisgICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3
b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JD
YWNoZS0+dGFrZSgpLCBbbG9hZGVyID0gUmVmIHsgKnRoaXMgfV0oYXV0byYgbWFwcGVkQm9keSkg
bXV0YWJsZSB7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICAgICAgaWYgKG1h
cHBlZEJvZHkuc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaAppbmRleCBkMjM0ZGFiNWJlZWE1YjY0NzMwNTUwYzc3MzcwYTlmMTU5NTk3
Zjk3Li45ODQ0MjRhMzA2ODFhMzYwZmM2MGM5ZTdhOWRkNGU2YmI0MjZkZTc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgK
QEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1RpbWVyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2LDYgKzQ3LDgg
QEAgY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwogY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBO
ZXR3b3JrU3RvcmFnZVNlc3Npb247CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIH0KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC0xMTQsNyArMTE3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNB
bGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lz
QWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlkQmxvY2tBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSgpIGZpbmFsOwpAQCAtMTkyLDcgKzE5NSw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwogICAgIHZvaWQgYnVm
ZmVyaW5nVGltZXJGaXJlZCgpOwotICAgIHZvaWQgc2VuZEJ1ZmZlcihXZWJDb3JlOjpTaGFyZWRC
dWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgc2VuZEJ1ZmZlcihX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3Ro
KTsKIAogICAgIHZvaWQgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAgICAgdm9pZCBpbnZh
bGlkYXRlU2FuZGJveEV4dGVuc2lvbnMoKTsKQEAgLTIyNSw3ICsyMjgsNyBAQCBwcml2YXRlOgog
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAogICAgIHNpemVfdCBt
X2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoIHsgMCB9OwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcmVkRGF0YTsKICAgICB1bnNpZ25lZCBtX3JlZGly
ZWN0Q291bnQgeyAwIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3luY2hyb25vdXNMb2FkRGF0
YT4gbV9zeW5jaHJvbm91c0xvYWREYXRhOwpAQCAtMjQwLDcgKzI0Myw3IEBAIHByaXZhdGU6CiAK
ICAgICBXZWJDb3JlOjpUaW1lciBtX2J1ZmZlcmluZ1RpbWVyOwogICAgIFJlZlB0cjxOZXR3b3Jr
Q2FjaGU6OkNhY2hlPiBtX2NhY2hlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb247CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZvck1heEFnZUNh
cFZhbGlkYXRpb247CiAgICAgYm9vbCBtX2lzV2FpdGluZ0NvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0
Rm9yQ2FjaGVkUmVkaXJlY3QgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmNwcAppbmRleCAxMTQ4NTNlNDViNzI1MzM2NGM3NDdhNzFjYjJiNWFiOGNjMzhl
ZmQ1Li4xYWYxZTA4ZTNjNDQxZTI0ZjMwMDY1ZTlmMjA3NzZlNmY5ZmMzM2RiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZv
aWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIE5lZ290aWF0ZWRMZWdhY3lUCiAgICAgZGlkRmluaXNoKHsgfSwgcmVzcG9uc2UpOwogfQog
Ci12b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKQordm9p
ZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
CiB7CiAgICAgUElOR19SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGEiKTsKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAppbmRl
eCAxOWVjOGNlYjkyZTNjOGEwNTZmNDkyNzM2NjBjZmZmOTI2NDM0MWQxLi5hYjI5YTBiMWFjODQ2
NmIwZWQ2MWVmNThlZjRjMjIwYWJhYjZlYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9QaW5nTG9hZC5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFs
Qnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAg
IHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAppbmRleCA0NTU3ODJkNTRhMmVhOWJlZTE4NjUwZTFhZmQx
Y2Y3YjJjZTk4YzQ5Li4xN2Q0NzkwN2EzZjZlZTUyYmU2NTAxZDFkYWIwY2E2MDc1MWQ2YjBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcApA
QCAtNzksNyArNzksNyBAQCB2b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbQogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKIH0KIAotdm9pZCBQcmVjb25uZWN0VGFzazo6
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkKK3ZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQog
ewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCmluZGV4IDFjMWZmMTY0NzExMWM2ZmE4NDk0YWY1Y2Yw
YzdiYmVhYTFiMjY1MDMuLjg1ODA4ZTEyMWI2OGNhOGI3M2UyNTE4ZDE5M2FiMzk1ODFlYWQxZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2su
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKQEAg
LTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQp
IGZpbmFsOwogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBS
ZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkg
ZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtM
b2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAppbmRleCA3MWUwY2Y2YzZkYzdiZWE1MjJj
OTA2MDA1NTVmNTcyMTYxYzNjMmY0Li44MTk2NjMwMjBjNjk1Y2UwYzZhYmE5OTljNjc1YWFiNDI4
MmM3ZmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlv
blByZWxvYWRlci5jcHAKQEAgLTE3NCwxMCArMTc0LDEwIEBAIHZvaWQgU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzCiAgICAgICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICht
X2JvZHlDYWxsYmFjaykKLSAgICAgICAgbV9ib2R5Q2FsbGJhY2soV1RGTW92ZShidWZmZXIpLCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9ib2R5Q2FsbGJhY2soYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogdm9p
ZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKaW5kZXggMWU3OGMyY2Vm
YTE1NDg0MTA0MDYwZjNiMTlkYzUwZTZjYjhmMWViNC4uZWUxYmM4YjdkNmNiZmZjMzM0MWQ2NzNm
YjcyNDIyMzhmNjcxN2YyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZGVyLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIGZpbmFsOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
IGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICBib29sIHNob3VsZENhcHR1cmVFeHRyYU5l
dHdvcmtMb2FkTWV0cmljcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2hvdWxkQ2FwdHVyZUV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCA4ZWUxMTJhOWRmODI4OTU0YzE2MjNmZmYyMmMy
YTIwZmQ4ZTJmZTdkLi43YTI2MjIxOWRlNzhiMjM1ZDEyNWE5MmI2ZTIzNmQzMzI2MmY3YTI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAK
QEAgLTE3Nyw3ICsxNzcsNyBAQCBSZXNvdXJjZUVycm9yIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyOjpwcm9jZXNzUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwbwogICAgIHJldHVybiB7
IH07CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKQordm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9kZWNvZGVyKSB7CiAgICAgICAgIGlmICgh
bV9yZXNwb25zZUVuY29kaW5nLmlzRW1wdHkoKSkKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLAogICAgIH0KIAogICAgIGlmIChhdXRvIHNpemUgPSBidWZmZXItPnNp
emUoKSkKLSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+
ZGF0YSgpLCBzaXplKSk7CisgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29k
ZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkpOwogfQogCiB2b2lkIFNl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5oCmluZGV4IDE4ZjU0NjkxZjM3YzJiYWJiYzhjMWEzYmMwOTQzNzBl
OWIyOWViNzEuLjQ0ZmMwNjg1ZmEwZmVkYzg3NDIxOTE2ZTkxM2E2NzRiMWMwZmRiZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCkBAIC02NCw3
ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50
aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmNwcAppbmRleCAwNDc3NjgzNmY5OTkwOTM5MTBiMzk5ZDc1NTM4NTVkNWQzZjFmZjRlLi5kZDMw
NWFmMjk3NjYxZTQ3NmM0OTY3N2RmNTcyMWVmZDFlYzkzMmY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC00NTQsNyAr
NDU0LDcgQEAgdm9pZCBDYWNoZTo6Y29tcGxldGVSZXRyaWV2ZShSZXRyaWV2ZUNvbXBsZXRpb25I
YW5kbGVyJiYgaGFuZGxlciwgc3RkOjp1bmlxdWVfcHQKICAgICBoYW5kbGVyKFdURk1vdmUoZW50
cnkpLCBpbmZvKTsKIH0KICAgICAKLXN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6Om1ha2VF
bnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmIHJlc3BvbnNlRGF0YSkKK3N0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6Om1ha2VF
bnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEpCiB7CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUocmVzcG9uc2VE
YXRhKSwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2Vz
cygpLnN0b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbklEKSwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKIH0K
QEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjptYWtlUmVk
aXJlY3RFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmCiAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwgcmVzcG9uc2UsIHJlZGlyZWN0
UmVxdWVzdCwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJv
Y2VzcygpLnN0b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbklEKSwgcmVxdWVzdCwgcmVzcG9uc2UpKTsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEs
IEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorc3RkOjp1
bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBG
dW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQocmVzcG9uc2VEYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKaW5kZXggMTk5ZjBjZmI3MzI1NDNjNWZlYWY0ZmUyMzAx
ZTZhMWMxMmY4OGZlOC4uZWQwNGViY2EwYjM2ZjNmOWM0YzBlN2JhYzcxMzM2YjllOTZjMzU4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5oCkBAIC00Myw3ICs0Myw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMb3dQb3dl
ck1vZGVOb3RpZmllcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtMTY2LDcgKzE2Niw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHVzaW5nIFJldHJpZXZl
Q29tcGxldGlvbkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4s
IGNvbnN0IFJldHJpZXZlSW5mbyYpPjsKICAgICB2b2lkIHJldHJpZXZlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBzdGQ6Om9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmKTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiA9IG51bGxw
dHIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmUoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJv
ZHkmKT4mJiA9IG51bGxwdHIpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmVSZWRp
cmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJl
cXVlc3QsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FwKTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8RW50cnk+IHVwZGF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZhbGlkYXRpbmdSZXNw
b25zZSk7CiAKQEAgLTE4NSw3ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXRyaWV2ZURh
dGEoY29uc3QgRGF0YUtleSYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgdWludDhfdCosIHNpemVfdCk+
KTsKICAgICB2b2lkIHN0b3JlRGF0YShjb25zdCBEYXRhS2V5JiwgIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCk7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlRW50cnko
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxFbnRyeT4gbWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlUmVk
aXJlY3RFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRp
cmVjdFJlcXVlc3QpOwogCiAgICAgdm9pZCBkdW1wQ29udGVudHNUb0ZpbGUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRy
eS5jcHAKaW5kZXggYmEzOWQ5ZTJjMjZhMDFhOTI2YjExYWE3OTllMzY2MmZjNmFlMDU0OS4uNzYx
MDc4ZGVhMDkzYzA0NTU1YmU5OGIwNTE3M2UzNDE1MDY3YTg1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAK
QEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtD
YWNoZSB7CiAKLUVudHJ5OjpFbnRyeShjb25zdCBLZXkmIGtleSwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdS
ZXF1ZXN0SGVhZGVycykKK0VudHJ5OjpFbnRyeShjb25zdCBLZXkmIGtleSwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0
cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpCiAgICAgOiBtX2tleShrZXkpCiAgICAgLCBt
X3RpbWVTdGFtcChXYWxsVGltZTo6bm93KCkpCiAgICAgLCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQpA
QCAtMTAxLDggKzEwMSwxMCBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFn
ZVJlY29yZCgpIGNvbnN0CiAKICAgICBEYXRhIGhlYWRlcihlbmNvZGVyLmJ1ZmZlcigpLCBlbmNv
ZGVyLmJ1ZmZlclNpemUoKSk7CiAgICAgRGF0YSBib2R5OwotICAgIGlmIChtX2J1ZmZlcikKLSAg
ICAgICAgYm9keSA9IHsgbV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAg
IGlmIChtX2J1ZmZlcikgeworICAgICAgICBtX2J1ZmZlciA9IG1fYnVmZmVyLT5tYWtlQ29udGln
dW91cygpOworICAgICAgICBib2R5ID0geyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXIqPihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgIH0K
IAogICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7IH0gfTsK
IH0KQEAgLTE5NCw3ICsxOTYsNyBAQCB2b2lkIEVudHJ5Ojppbml0aWFsaXplQnVmZmVyRnJvbVN0
b3JhZ2VSZWNvcmQoKSBjb25zdAogICAgIG1fYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUobV9zb3VyY2VTdG9yYWdlUmVjb3JkLmJvZHkuZGF0YSgpLCBtX3NvdXJjZVN0b3Jh
Z2VSZWNvcmQuYm9keS5zaXplKCkpOwogfQogCi1XZWJDb3JlOjpTaGFyZWRCdWZmZXIqIEVudHJ5
OjpidWZmZXIoKSBjb25zdAorV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogRW50cnk6
OmJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgaW5pdGlhbGl6
ZUJ1ZmZlckZyb21TdG9yYWdlUmVjb3JkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKaW5kZXggOTY5MTVjMzgwMWMz
N2RkYWMzZThlNjAzMjFmODhjMjIyOWNkNTlhMC4uOWMwNDIwZDQ0YTgxNThkZmM1YjIxY2YxODgy
MDRjZjNhOTE2YjQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBjbGFz
cyBFbnRyeSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgRW50
cnkoY29uc3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBT
dHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKTsKKyAgICBFbnRyeShjb25zdCBLZXkmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+
PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKTsKICAgICBFbnRyeShjb25zdCBLZXkmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+
PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKTsKICAgICBleHBsaWNpdCBFbnRyeShjb25zdCBTdG9y
YWdlOjpSZWNvcmQmKTsKICAgICBFbnRyeShjb25zdCBFbnRyeSYpOwpAQCAtNTcsNyArNTcsNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Uo
KSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAgICAgY29uc3QgVmVjdG9yPHN0ZDo6cGFp
cjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMoKSBjb25zdCB7IHJldHVy
biBtX3ZhcnlpbmdSZXF1ZXN0SGVhZGVyczsgfQogCi0gICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
KiBidWZmZXIoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBi
dWZmZXIoKSBjb25zdDsKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdD4mIHJlZGlyZWN0UmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVkaXJlY3RSZXF1
ZXN0OyB9CiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQpAQCAtODgsNyArODgsNyBA
QCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBtX3Zhcnlp
bmdSZXF1ZXN0SGVhZGVyczsKIAogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0PiBtX3JlZGlyZWN0UmVxdWVzdDsKLSAgICBtdXRhYmxlIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIG11dGFibGUgUmVmUHRyPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VS
Q0UpCiAgICAgbXV0YWJsZSBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIG1fc2hhcmVhYmxlUmVz
b3VyY2VIYW5kbGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApp
bmRleCBhZDA5ZGY0NGQ5YWYxMmZkNDA4MDMxMDU0NjgzNTM2ZWEwZGM4MTkzLi43YjBhZGM0MGYw
YjBiNjcxNDcxYTI3YWI1MTM5NzY2ZDRiNTU1NDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUK
ICAgICBtX3Jlc3BvbnNlID0gcmVjZWl2ZWRSZXNwb25zZTsKIAogICAgIGlmIChtX3Jlc3BvbnNl
LmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRy
OworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAKICAgICBib29sIHZh
bGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAv
LyAzMDQgTm90IE1vZGlmaWVkCiAgICAgaWYgKHZhbGlkYXRpb25TdWNjZWVkZWQgJiYgbV9jYWNo
ZUVudHJ5KQpAQCAtMTIwLDE3ICsxMjAsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAg
ICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7CiB9CiAKLXZvaWQgU3BlY3Vs
YXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnkpOwog
CiAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAgLy8gUHJldmVudCBt
ZW1vcnkgZ3Jvd3RoIGluIGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEuCiAgICAgICAgIGNvbnN0IHNp
emVfdCBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplID0gMTAgKiAxMDI0ICogMTAyNDsKLSAgICAgICAg
aWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1h
eGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRy
OworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KIH0K
IApAQCAtMTM5LDEwICsxMzksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZEZpbmlzaExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKICAgICBpZiAobV9kaWRD
b21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUpIHsKLSAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3Rv
cmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUu
Y29weVJlZigpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOworICAgICAgICBtX2NhY2hlRW50
cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS5nZXQoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKICAgICAg
ICAgLy8gQ3JlYXRlIGEgc3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0IHN0b3JlLgog
ICAgICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFibGVCeURlZmF1
bHQobV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSkKLSAgICAgICAgICAgIG1fY2FjaGVFbnRy
eSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgV1RG
TW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBtX2NhY2hlRW50cnkg
PSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpKTsKICAgICB9CiAKICAgICBkaWRDb21wbGV0ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggYzBlMWUxNGIyYWM0NjAzNThmODE0
MDdjZDcwYzQwOTA1MmFmOGVmZS4uMWI4NDNkYjdlYzI3MGRiOWRhYjllOGEyNWYyYTQ4YThlY2Fl
MmE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC02MSw3ICs2MSw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRS
ZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVj
dFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CiAKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVp
bGRlciBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3Jr
Q2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnk7CiAgICAgYm9vbCBtX2RpZENvbXBsZXRlIHsgZmFs
c2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L1ByZWZldGNoQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9Q
cmVmZXRjaENhY2hlLmNwcAppbmRleCA1ZTJlMDJlMmZiYTBiNGEwYzAzYjVkM2U2NmI5N2Y3YmNj
Yzc5NThiLi4zMTk5YmZmMzExYjZjM2VlZmJlOTUwYjQ1ZTZiMGE5NmUzMjc3N2ZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5j
cHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVByZWZldGNoQ2Fj
aGU6OkVudHJ5OjpFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorUHJlZmV0Y2hDYWNoZTo6RW50
cnk6OkVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIDogcmVzcG9uc2Uo
V1RGTW92ZShyZXNwb25zZSkpLCBidWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogfQpAQCAtNzIs
NyArNzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UHJlZmV0Y2hDYWNoZTo6RW50cnk+IFByZWZldGNo
Q2FjaGU6OnRha2UoY29uc3QgVVJMJiB1cmwpCiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIGV4cGly
YXRpb25UaW1lb3V0IHsgNV9zIH07CiAKLXZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmUoY29uc3Qg
VVJMJiByZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBQcmVmZXRjaENhY2hl
OjpzdG9yZShjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogewogICAgIGlmICghbV9zZXNzaW9uUHJlZmV0Y2hlcykKICAgICAgICAgbV9zZXNzaW9u
UHJlZmV0Y2hlcyA9IG1ha2VVbmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaAppbmRleCBh
MjUxNTIwYjMxZWFjOTIxYzIyZDMxMTUxZDZkMjMxYTFiZWQxMzhjLi41MmMwYjEwZmNjNmQ1YTZk
ZTExNDQ3ZTdlNGU4MjJkZjhmODQxY2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaApAQCAtNDcsMTggKzQ3LDE4IEBAIHB1Ymxp
YzoKIAogICAgIHN0cnVjdCBFbnRyeSB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FM
TE9DQVRFRDsKLSAgICAgICAgRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICAgICAgRW50cnkoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jik7CiAgICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYpOwogCi0gICAgICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IHJlbGVhc2VCdWZmZXIoKSB7IHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsgfQorICAg
ICAgICBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVsZWFzZUJ1ZmZlcigp
IHsgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOyB9CiAKICAgICAgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVkaXJl
Y3RSZXF1ZXN0OwogICAgIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHRha2UoY29u
c3QgVVJMJik7Ci0gICAgdm9pZCBzdG9yZShjb25zdCBVUkwmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgc3Rv
cmUoY29uc3QgVVJMJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBzdG9yZVJlZGlyZWN0KGNv
bnN0IFVSTCYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCmluZGV4IGI5YWIwZGVlYmI5
ZjkyN2M3Mzc0MmU4NmEwYmU3Zjk3MTYwYmQ2ZmIuLjQxNjY4YTViMWNkNzM4Njk2N2I4ZmQ5NzNl
OTY3MzJlY2E5MDdlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZGlkTmVnb3RpYXRlTW9kZXJuVExTKGNvbnN0IFVSTCYpOwogICAgIHZv
aWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgdm9pZCB3aWxsUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZv
aWQgdHJhbnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9hZChEb3dubG9hZCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW0KaW5kZXggZTc4MGQ2YzFjM2NkMWViMmMyZmY1YTBjNTY0YTBlNGQ4OGI3ZWE1
ZC4uMzA1MWYxNjljYjBhMzcwOTk4NWExNjExMjJjMjVmMGU4ZjE3YmQ4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLm1tCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6
ZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXIKICAg
ICAgICAgbV9jbGllbnQtPmRpZENvbXBsZXRlV2l0aEVycm9yKGVycm9yLCBuZXR3b3JrTG9hZE1l
dHJpY3MpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIE5ldHdvcmtEYXRhVGFza0Nv
Y29hOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKQogewogICAgIFdURkVtaXRTaWducG9zdChtX3Rhc2suZ2V0KCksICJEYXRhVGFzayIs
ICJyZWNlaXZlZCAlemQgYnl0ZXMiLCBkYXRhLT5zaXplKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAK
aW5kZXggOGZjN2I2NjNlNmY3NTYyYjJiMzU0ODkzOThhMmZlNzMxYmUwNzRmMS4uMzdmMjk0MTY2
NDZjNDdlMWRhMWZkOTk0MWNjYWMwMGI1ZGMwZmQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcApAQCAt
MTcyLDcgKzE3Miw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVS
ZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlc3BvCiAgICAgaW52b2tlRGlkUmVj
ZWl2ZVJlc3BvbnNlKCk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJl
Y2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3Zv
aWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3Qm
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgUmVmIHByb3Rl
Y3RlZFRoaXMgeyAqdGhpcyB9OwogICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpDYW5jZWxpbmcg
fHwgc3RhdGUoKSA9PSBTdGF0ZTo6Q29tcGxldGVkIHx8ICghbV9jbGllbnQgJiYgIWlzRG93bmxv
YWQoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0
d29ya0RhdGFUYXNrQ3VybC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtEYXRhVGFza0N1cmwuaAppbmRleCAxYzQyN2RkYjc4ZDY5NTNmZTg5NjBjNTY5MmFmZGU0
ZjRmMGVlZTg1Li40NWJlNWNlMTg0MzI1MjcxZDVjMDgwZGQzNGYxZWU0YTE2NjQyYTFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNr
Q3VybC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0
YVRhc2tDdXJsLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8V2ViQ29yZTo6
Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBSZXF1ZXN0U3RhdHVzID0gUmVxdWVzdFN0YXR1czo6TmV3UmVxdWVzdCk7CiAgICAgdm9pZCBj
dXJsRGlkU2VuZERhdGEoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcs
IHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6Q3VybFJlc3BvbnNlJiYpIG92
ZXJyaWRlOwotICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6Q3VybFJlcXVl
c3QmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGN1
cmxEaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgUmVmPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZENvbXBs
ZXRlKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoV2ViQ29yZTo6Q3VybFJl
cXVlc3QmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5m
byYmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAppbmRleCBmNWRiNzA2YzQ0NTgwMjEwODdm
OTU5OTY2OWRmYTdkOWY4Mzc5NzhjLi4zM2Q0M2I3MjIzOGQyMDNlN2VkZWM5NDE0Y2FmOWZkYThm
NDA1MjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaApAQCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3QgUGFja2V0
T3B0aW9uczsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVnaXN0cmFibGVEb21haW47
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5jcHAKaW5kZXggZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRj
YjMzZWY3MS4uZjY3NjY4ODU3ZmY1YzJlNTMyZDViNGI1MTRmMmUyY2Y0OWY3NjJjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTUx
LDkgKzUxLDkgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJD
b3B5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0
YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAg
ICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgp
KTsKKyAgICAgICAgYnVmZmVyID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
ZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgcmV0dXJuIHsgV1RGTW92ZShidWZmZXIpIH07CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRl
eCA3ZTBkOGRiZTE5MDI1OTlkMDJiYzEwOGU1NjNhNmUzZGYxODMyZTlmLi5iZTY4ZDllMjZhMDQ4
MDdhNTYwYTY3Mjk4OTI3NTI2M2ZjN2MxYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8gRW5jb2RlcyBhIFNoYXJlZEJ1ZmZlciB0
aGF0IGlzIHJlY2VpdmVkIGFzIGEgY29weSBvZiB0aGUgZGVjb2RlZCBkYXRhIGluIGEgbmV3IFNo
YXJlZEJ1ZmZlci4KKy8vIEVuY29kZXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIHRoYXQgaXMg
cmVjZWl2ZWQgYXMgYSBjb3B5IG9mIHRoZSBkZWNvZGVkIGRhdGEgaW4gYSBuZXcgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlci4KIC8vIFRvIGF2b2lkIGNvcHlpbmcgZnJvbSB0aGUgRGVjb2RlciwgdXNl
IFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgdG8gcmVjZWl2ZSBhIERhdGFSZWZlcmVuY2UgaW5z
dGVhZC4KIAogI3ByYWdtYSBvbmNlCkBAIC0zOSwxNSArMzksMTIgQEAgY2xhc3MgU2hhcmVkQnVm
ZmVyQ29weSB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyQ29weSgpID0gZGVmYXVsdDsKIAot
ICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KLSAgICBTaGFyZWRC
dWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6
IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9Ci0gICAgU2hhcmVkQnVmZmVyQ29weShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgIHsKLSAgICAgICAgbV9idWZmZXItPmFw
cGVuZChidWZmZXIpOwotICAgIH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihi
dWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPigpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1h
a2VDb250aWd1b3VzKCkpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZl
ci5tYWtlQ29udGlndW91cygpKSB7IH0KIAogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQogICAgIGNvbnN0IFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZS5oCmluZGV4IGQzZDBlYzVlOTc4NTU5OWI2MzRhODRjNmM0NDcxYjUyY2QyMjEzZjEu
LjY3ZWM4ZTVlOTJiZDAyNDExNWRiMGQ0MDgwYTI0ZmU3MzU3MGQzZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgK
QEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0vLyBFbmNvZGVzIGEgU2hhcmVkQnVmZmVyIG9yIERhdGFSZWZlcmVuY2UgdGhhdCBpcyBy
ZWNlaXZlZCBhcyBhIERhdGFSZWZlcmVuY2UgdG8gdGhlIGRlY29kZWQgZGF0YS4KKy8vIEVuY29k
ZXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIG9yIERhdGFSZWZlcmVuY2UgdGhhdCBpcyByZWNl
aXZlZCBhcyBhIERhdGFSZWZlcmVuY2UgdG8gdGhlIGRlY29kZWQgZGF0YS4KIAogI3ByYWdtYSBv
bmNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCBkMjQwNmVl
MjkwNTMxMWY2OWI3NTg0MjFlNzdhM2U2NmNiYTI3YjY1Li5jMDI2ZjU0OTU2OWIyYmUwMDc4YWUz
MjVkMDUzOWUwNzFhZjExMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1No
YXJlZE1lbW9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnku
Y3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAotUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hh
cmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC01MSw3ICs1MSw3IEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29w
eUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIFJlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIHsK
ICAgICBBU1NFUlQoZGF0YVNpemUgPD0gc2l6ZSgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoeworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6
UHJvdmlkZXIgewogICAgICAgICBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIC0+
IGNvbnN0IHVpbnQ4X3QqIHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4ocHJvdGVjdGVkVGhpcy0+ZGF0YSgpKTsKICAgICAgICAgfSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL1NoYXJlZE1lbW9yeS5oCmluZGV4IGUzNzFiY2Q3MzAyY2Y4NWViYWIyYjVhODVlN2Jl
NDlkY2Y1NjUyYWIuLjFiNGZkZmFmNjgzODlkY2U3MjhmZjM0ZTVlNWYwMTJlMjQzZmEyY2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAtNDUsNiArNDUsNyBAQCBjbGFz
cyBFbmNvZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiAjaWYgT1MoREFSV0lOKQpAQCAtMTIw
LDcgKzEyMSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBDaGFuZ2UgdGhlc2UgZmFjdG9y
eSBmdW5jdGlvbnMgdG8gcmV0dXJuIFJlZjxTaGFyZWRNZW1vcnk+IGFuZCBjcmFzaCBvbiBmYWls
dXJlLgogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBhbGxvY2F0ZShzaXplX3QpOwot
ICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBjb3B5QnVmZmVyKGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBjb3B5QnVm
ZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBzdGF0aWMg
UmVmUHRyPFNoYXJlZE1lbW9yeT4gbWFwKGNvbnN0IEhhbmRsZSYsIFByb3RlY3Rpb24pOwogI2lm
IFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5
PiB3cmFwTWFwKHZvaWQqLCBzaXplX3QsIGludCBmaWxlRGVzY3JpcHRvcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KaW5kZXggY2EwYzI0YjI3NzM1
NDc2NzZlMzQ4MDFjNzlhMWQ1NjViZjk1ZmU1ZC4uMTEwZTBhZGRlNTU4YTlkOTMzOGIyNDUwNmU4
OTE2M2M5MzY5NzE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJj
aGl2ZVJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVS
ZXNvdXJjZS5tbQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlV2ViQXJjaGl2
ZVJlc291cmNlRGF0YSh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIAogUmVmPEFQ
STo6RGF0YT4gV2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZUNGRGF0YSgp
OworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5k
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAKICAgICAvLyBCYWxhbmNl
ZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEuCiAgICAgQ0ZS
ZXRhaW4oY2ZEYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggODdmNGViMWViYTI4NzJl
MGNiMGFiOTU5MTZhZmVkZTI5ZmNiYTI0NC4uM2MxYjU3ZDVhYTI2ZWM3MmU2MGI1ZDc4YTExZTlm
ZDg1MmNmZmVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTU2NCwxMyArNTY0LDEyIEBAIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8V2Vi
Q29yZTo6Rm9udD4+OjpkZWNvCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBp
ZiAoKmluY2x1ZGVzQ3JlYXRpb25EYXRhKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKICAg
ICAgICAgZGVjb2RlciA+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGlmICghZm9udEZhY2VEYXRh
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAvLyBVcG9uIHJl
Y2VpcHQsIGNvcHkgdGhlIGRhdGEgZm9yIHNlY3VyaXR5LCBzbyB0aGUgc2VuZGVyIGNhbid0IHNj
cmliYmxlIG92ZXIgaXQgd2hpbGUgd2UncmUgdXNpbmcgaXQuCi0gICAgICAgIGF1dG8gbG9jYWxG
b250RmFjZURhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RmFjZURhdGEu
dmFsdWUoKS0+ZGF0YSgpLCBmb250RmFjZURhdGEudmFsdWUoKS0+c2l6ZSgpKTsKKyAgICAgICAg
YXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5tYWtlQ29udGln
dW91cygpOwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9u
OwogICAgICAgICBkZWNvZGVyID4+IGl0ZW1JbkNvbGxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggYzY5NjFjNzE0NDAyYmYzNzdhZTkxMGZi
YjZjY2FhNTJkM2I4NDEyOC4uNmZhMDJhN2JjM2VlNTRhZTZkMzI1MzgxMGQ3OGRlYzMxNjUzNTNk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAtNTcs
NyArNTcsNyBAQCBib29sIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBT
aGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgewor
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewog
ICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9
LAogICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgp
OyB9CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcAppbmRleCA2NDk4MmJjNDgxMDJhNGFkYjIwYTdlNjBlMjFiZDQ5MmQ2NTMzNzRjLi44
NDNmZDQ3MzEzYWVlY2EyOTkzMDYxMmZjNWVjNTc4NzU1NDM0MmRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTE2NCw3ICsxNjQsNyBA
QCBERUZJTkVfU0lNUExFX0FSR1VNRU5UX0NPREVSX0ZPUl9TT1VSQ0UoRGlzcGxheUxpc3Q6OlNl
dElubGluZVN0cm9rZUNvbG9yKQogCiAjdW5kZWYgREVGSU5FX1NJTVBMRV9BUkdVTUVOVF9DT0RF
Ul9GT1JfU09VUkNFCiAKLXN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3N0YXRpYyB2b2lkIGVuY29kZVNo
YXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBidWZmZXIpCiB7CiAgICAgYm9vbCBpc051bGwgPSAhYnVmZmVyOwogICAgIGVuY29kZXIgPDwg
aXNOdWxsOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZl
cihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICAgICAgICAg
cmV0dXJuOwogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgLy8gRG8gbm90IHVz
ZSBzaGFyZWQgbWVtb3J5IGZvciBTaGFyZWRCdWZmZXIgZW5jb2RpbmcgaW4gVW5peCwgYmVjYXVz
ZSBpdCdzIGVhc3kgdG8gcmVhY2ggdGhlCisgICAgLy8gRG8gbm90IHVzZSBzaGFyZWQgbWVtb3J5
IGZvciBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGVuY29kaW5nIGluIFVuaXgsIGJlY2F1c2UgaXQn
cyBlYXN5IHRvIHJlYWNoIHRoZQogICAgIC8vIG1heGltdW0gbnVtYmVyIG9mIGZpbGUgZGVzY3Jp
cHRvcnMgb3BlbiBwZXIgcHJvY2VzcyB3aGVuIHNlbmRpbmcgbGFyZ2UgZGF0YSBpbiBzbWFsbCBj
aHVua3MKICAgICAvLyBvdmVyIHRoZSBJUEMuIENvbm5lY3Rpb25Vbml4LmNwcCBhbHJlYWR5IHVz
ZXMgc2hhcmVkIG1lbW9yeSB0byBzZW5kIGFueSBJUEMgbWVzc2FnZSB0aGF0IGlzCiAgICAgLy8g
dG9vIGxhcmdlLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
ODU3MS4KQEAgLTI2NCw3ICsyNjQsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbgogICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVk
QnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIGRhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGJ1
ZmZlcik7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNTUwLDEwICsxNTUwLDEwIEBA
IHZvaWQgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QKICAgICBpZiAoaGFzU3RyaW5nKQogICAgICAgICBlbmNv
ZGVyIDw8IHN0ZDo6Z2V0PFN0cmluZz4ocGxhdGZvcm1EYXRhKTsKIAotICAgIGJvb2wgaGFzQnVm
ZmVyID0gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1E
YXRhKTsKKyAgICBib29sIGhhc0J1ZmZlciA9IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpOwogICAgIGVuY29kZXIgPDwgaGFz
QnVmZmVyOwogICAgIGlmIChoYXNCdWZmZXIpCi0gICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihl
bmNvZGVyLCBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKS5wdHIoKSk7
CisgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBzdGQ6OmdldDxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSkucHRyKCkpOwogfQogCiBib29sIEFyZ3Vt
ZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeSYgZGF0YSkKQEAgLTI5NzYsNyArMjk3
Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShk
YXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBXVEZN
b3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9fTsKKyAgICByZXR1cm4geyB7IFdU
Rk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH0gfTsKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zMDEwLDYgKzMwMTAsMzQgQEAgc3RkOjpv
cHRpb25hbDxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6U2VyaWFsaXplZFAKIH0KICNlbmRpZgogCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOworfQor
CitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRD
b2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAg
aWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXI7Cit9CisKK3ZvaWQgQXJndW1lbnRD
b2RlcjxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7
Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBBcmd1bWVu
dENvZGVyPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBp
ZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCk7Cit9CisKIHZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBi
dWZmZXIuZ2V0KCkpOwpAQCAtMzEwNyw3ICszMTM1LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGUKIHsKICAgICBlbmNvZGVyIDw8IG1lc3NhZ2UuZmlyc3Q7CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlSZWYoKTsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZURhdGEgPSBtZXNzYWdlLnNlY29uZC5j
b3B5UmVmKCk7CiAgICAgZW5jb2RlciA8PCBtZXNzYWdlRGF0YTsKIH0KIApAQCAtMzExNyw3ICsz
MTQ1LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3Nh
Z2U+ICBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUkKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZm
ZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgKaW5kZXggMjVmMDFjMDI5MmEwMTlmMDY3NjI0YmJiNTUzNDAyZGYxYTMz
YzViNi4uNmZhYzJhYTFlYTc4NDZmZjZiZjg5MDIxZjBmNTJlOWFhN2FlMDNjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTExNCw2ICsxMTQs
NyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xh
c3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgQ29sb3I7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBj
bGFzcyBDcmVkZW50aWFsOwogY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNz
IEN1cnNvcjsKQEAgLTEzOCw3ICsxMzksNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0QnVmZmVyOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogY2xhc3MgU3ByaW5nVGltaW5nRnVuY3Rpb247CiBjbGFzcyBTdGVwc1RpbWluZ0Z1bmN0aW9u
OwogY2xhc3MgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOwpAQCAtNzUxLDYgKzc1
MiwxNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6
ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gewogfTsKICNlbmRpZgogCit0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4g
eworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwor
fTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNv
bnN0IFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gZGVjb2Rl
KERlY29kZXImKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Jik7CiAgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVy
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0
YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKaW5k
ZXggY2YyZTRkNWY5M2ZkMmQ5NDZiYWJmZjkzZWVhM2U5ZTg2MGFlYmJmNC4uYjYwN2FjZTgzOGUw
NGJjZTFhNmFlZTRkYTU2NTU5ZTA5Njk4Mzk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcApAQCAtODUsNyArODUsNyBAQCBXZWJIaXRUZXN0UmVz
dWx0RGF0YTo6V2ViSGl0VGVzdFJlc3VsdERhdGEoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3Vs
dCYgaGl0VGVzdAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoSW1hZ2UqIGltYWdlID0gaGl0
VGVzdFJlc3VsdC5pbWFnZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IGltYWdlLT5kYXRhKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpOwogICAgICAgICBpZiAoYnVmZmVyKSB7CiAgICAgICAg
ICAgICBpbWFnZVNoYXJlZE1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVy
KCpidWZmZXIpOwogICAgICAgICAgICAgaW1hZ2VTaXplID0gYnVmZmVyLT5zaXplKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCAyNWEz
MDdmMzgyOWU5Mjc4YjVlYTc4ZmY4Mjk2Nzg4MzM3N2EzMWJhLi42NzE3NThhMjgwYTVlNDQwYWEw
NjBhNzljZjFmMGYxMjZkYjdiZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9n
dGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9B
cmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBBcmd1bWVudENvZGVy
PFNlbGVjdGlvbkRhdGE+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2VsZWN0aW9u
RGF0YSYKICAgICBib29sIGhhc0N1c3RvbURhdGEgPSBzZWxlY3Rpb24uaGFzQ3VzdG9tRGF0YSgp
OwogICAgIGVuY29kZXIgPDwgaGFzQ3VzdG9tRGF0YTsKICAgICBpZiAoaGFzQ3VzdG9tRGF0YSkK
LSAgICAgICAgZW5jb2RlciA8PCBSZWZQdHI8U2hhcmVkQnVmZmVyPihzZWxlY3Rpb24uY3VzdG9t
RGF0YSgpKTsKKyAgICAgICAgZW5jb2RlciA8PCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4oc2VsZWN0aW9uLmN1c3RvbURhdGEoKSk7CiAKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSA9
IHNlbGVjdGlvbi5jYW5TbWFydFJlcGxhY2UoKTsKICAgICBlbmNvZGVyIDw8IGNhblNtYXJ0UmVw
bGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2ht
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApp
bmRleCBiMzRlYzczNjM2M2M0ZjFkMmIwZTc2MGFkM2Y0YTlkNWJhYzFhMzRlLi4xNDkwYzUxMWJk
YzM4YmQ4YWI0YTY5NWFlY2YzMDZkOTVmYWEzOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IEF0dGFjaG1lbnQ6OmZpbGVTaXplRm9yRGlzcGxheSgpIGNvbnN0CiAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
QXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBj
b25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXggYWZhOTI5Y2YwOTNkMjJlYzc2YWQ4NmZkYTAzYjUw
MWJiZmQyOWRjMy4uZmU1MGU1MzhiOGViYjM1MWE0ODM2ZDFkZDg5M2QxNDdhNTZhODc3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCkBAIC0zOSw2ICsz
OSw3IEBAIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtODIsNyArODMsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRW1w
dHkoKSBjb25zdDsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGVuY2xvc2lu
Z0ltYWdlRGF0YSgpIGNvbnN0OworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBlbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdDsKICAgICBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0SGFzRW5j
bG9zaW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSkgeyBtX2hhc0VuY2xvc2luZ0ltYWdl
ID0gaGFzRW5jbG9zaW5nSW1hZ2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKaW5kZXggODgyMDRmMDAxMzY3ODYwNDVh
NWIzMmE3M2M2NzhhMGJhODUwNjgxYy4uOGRiNzAzOGMxYzkwMTZkYWRmYmY0YjVlYTA5OThjNDg3
OTFmNTcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdURiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaApp
bmRleCA1NjIzNDAxNDU5ZGE1ZmUzMGY0OTFhNDFmYjM0N2E2NzU3MjAyYzQwLi4xMTFmMDkyNjNm
ODIyMzgyOWE1YWQyNjQ0MzRiYTQyMGYxOThkZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgc3Ry
dWN0IENvbnRlbnRSdWxlTGlzdFJlc3VsdHM7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgU2VjdXJpdHlPcmln
aW5EYXRhOwogfQogCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKFFVSUNL
X0xPT0spCiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmlu
ZyYgdXRpKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgeyB9CisgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
KGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSB7IH0KICNlbmRpZgogCiAg
ICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBSZWY8TmF2aWdhdGlvbkFjdGlvbj4mJiwgUmVmPFdlYktpdDo6V2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBPYmplY3QqKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0K
aW5kZXggY2Y0NjIxNmNhMjVhOWVkZjgyZTMxOWEzMzAzMDc5MWU4ZDRlMTUzYy4uZGZlZjNlMDcw
Zjk2MTYzMDQ5NzE0NGRhZjNmMzAwY2I0Y2E1MTk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCkBAIC0xMzcs
NyArMTM3LDcgQEAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gQXR0YWNobWVudDo6ZmlsZVNpemVG
b3JEaXNwbGF5KCkgY29uc3QKICAgICByZXR1cm4gW2ZpbGVXcmFwcGVyIHJlZ3VsYXJGaWxlQ29u
dGVudHNdLmxlbmd0aDsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNo
bWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAog
ewogICAgIGlmICghbV9oYXNFbmNsb3NpbmdJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRl
eCBjNGVlNTI1MDc2NDJkYjRlNTRjZmFkZjdmZWUzYmYxYjdjMGQzZDNjLi4wMWM4MTAyNzhlZjYz
NTkxNzJmOGU2NWI1MmNmY2IwYjUyMWI3ZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE1OTYsNyArMTU5Niw3IEBAIC0gKHZvaWQp
X3N0b3JlQXBwSGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKWhpZ2hsaWdo
dAogICAgIGlmIChoaWdobGlnaHQudGV4dCkKICAgICAgICAgdGV4dCA9IGhpZ2hsaWdodC50ZXh0
LnZhbHVlKCk7CiAKLSAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hs
aWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOworICAgIGF1dG8gd2tIaWdobGln
aHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpo
aWdobGlnaHQuaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5OZXdHcm91cDpy
ZXF1ZXN0T3JpZ2luYXRlZEluQXBwOildKQogICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2Vs
ZiBzdG9yZUFwcEhpZ2hsaWdodDp3a0hpZ2hsaWdodC5nZXQoKSBpbk5ld0dyb3VwOmhpZ2hsaWdo
dC5pc05ld0dyb3VwID09IFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMg
cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDpoaWdobGlnaHQucmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA9
PSBXZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXNdOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAppbmRleCBhYzRh
MGY0MzcwMTUyZWQ1NzJiNTA5MWRmYTUxYmFlYmFiODdmNGU5Li5jODAyOWMxNDBhNmRkMTRiMTk2
NDkyMjViODc4MzBlZWMxMzQwMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAKICNp
ZiBVU0UoUVVJQ0tfTE9PSykKICAgICAgICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tE
b2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RG
OjpTdHJpbmcmIHV0aSkgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikg
b3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJy
aWRlOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggMzg1NTg4MmM4N2RjOWVkMzFj
MWVmMGJhYjYxNmIxZTY0NTk0NGVlZi4uOGQzYTg1NjQ2MmVhZWY3NDFkOGMyOWUyNTkyZmQ1NzM2
NmY1OTljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbQpAQCAtMTIyMCw3ICsxMjIwLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5h
dmlnYXRpb25DbGllbnQ6OmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnIK
ICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmln
YXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmll
dyBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lV2l0aEZpbGVOYW1l
OmZpbGVOYW1lIHV0aTp1dGldOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghbV9uYXZpZ2F0
aW9uU3RhdGUpCiAgICAgICAgIHJldHVybjsKQEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRl
Pj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+
bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1
ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmln
YXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3
Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IDgwMmZmYWE2ZDZlZGJlYTJlOTcy
Nzc0ZTI2OTY1YjJkYmIyYTczNWUuLjNlYTIxNTYwMzc4OWUxYjBiMjRlNWI1NTk5ZDM3NTE5N2Y1
OTUyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQcm94eUNvY29hLm1tCkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnNlbmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoKQogICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGF1dG8gcmVn
aXN0cmF0aW9uRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlv
bnMuZ2V0KCkpOworICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlvbnMuZ2V0KCkpOwogICAg
ICAgICAgICAgd2Vha1RoaXMtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNvbnN1bWVBdWRp
b0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoeyByZWdpc3RyYXRpb25EYXRhIH0pLCAwKTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwuaAppbmRleCAzZjZkZDFmMjQyZTdhMTE1ZWNmNzk4MzkwZjM0YjYzNWM2ZThkNmY5Li5mNTg5
MTI0MTcwMmRhYTQyMGNjNGU2ZTI0NjI4YTFjZGU4OTA3ZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKQEAgLTUwNiw3ICs1MDYsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYsIGNvbnN0IFNo
YXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZSk7CiAgICAgdm9pZCBzZXRGaWxlQW5kVVJMVHlw
ZXMoTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0
bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBOU1Bhc3RlYm9hcmQgKik7
Ci0gICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSosIE5TU3Ry
aW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0
cmluZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJsZVVSTCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBh
cmNoaXZlQnVmZmVyLCBOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5TU3RyaW5nICpwYXN0ZWJv
YXJkT3JpZ2luKTsKKyAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6Oklt
YWdlKiwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAq
dGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBhcmNoaXZlQnVmZmVyLCBOU1N0cmluZyAqcGFzdGVib2FyZE5h
bWUsIE5TU3RyaW5nICpwYXN0ZWJvYXJkT3JpZ2luKTsKICAgICB2b2lkIHBhc3RlYm9hcmRDaGFu
Z2VkT3duZXIoTlNQYXN0ZWJvYXJkICopOwogICAgIHZvaWQgcHJvdmlkZURhdGFGb3JQYXN0ZWJv
YXJkKE5TUGFzdGVib2FyZCAqLCBOU1N0cmluZyAqdHlwZSk7CiAgICAgTlNBcnJheSAqbmFtZXNP
ZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3RpbmF0aW9u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXgg
M2Q5ZTg3N2IwY2I3NTY1NGI2MzkxNjM5NTU3ZjUyYjYwMzkyY2FjOS4uNjIzNjdkYzVhZDFmZTEy
MjFmN2IwOTllOWJiNDQ1NGRiMzdhNThlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTQ0NDksNyArNDQ0OSw3IEBAIHZvaWQgV2ViVmlld0lt
cGw6OnNldEZpbGVBbmRVUkxUeXBlcyhOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRl
bnNpb24sIE5TCiAgICAgbV9wcm9taXNlZFVSTCA9IHVybDsKIH0KIAotdm9pZCBXZWJWaWV3SW1w
bDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmlu
ZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJp
bmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYXJj
aGl2ZUJ1ZmZlciwgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU1N0cmluZyAqb3JpZ2luSWRl
bnRpZmllcikKK3ZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNv
cmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9u
LCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBhcmNoaXZlQnVmZmVyLCBOU1N0cmluZyAq
cGFzdGVib2FyZE5hbWUsIE5TU3RyaW5nICpvcmlnaW5JZGVudGlmaWVyKQogewogICAgIE5TUGFz
dGVib2FyZCAqcGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhOYW1lOnBh
c3RlYm9hcmROYW1lXTsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHR5cGVzID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6V2ViQ29yZTo6bGVn
YWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKSwgbmlsXSk7CkBAIC00NDcwLDcgKzQ0NzAs
NyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJ
bWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbgogICAgIHNldEZpbGVBbmRVUkxUeXBlcyhmaWxl
bmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBwYXN0ZWJvYXJkKTsKIAog
ICAgIGlmIChhcmNoaXZlQnVmZmVyKSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1
ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgogICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOm5zRGF0YS5nZXQo
KSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlXTsKIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAtNDUwMSw3ICs0NTAxLDcgQEAgdm9pZCBX
ZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVi
b2FyZCwgTlNTdHJpbmcgKnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFt0eXBlIGlzRXF1
YWw6bV9wcm9taXNlZEltYWdlLT51dGkoKV0gJiYgbV9wcm9taXNlZEltYWdlLT5kYXRhKCkpIHsK
LSAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCkt
PmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21p
c2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAg
ICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2JyaWRnZSBOU0RhdGEgKilwbGF0Zm9ybURh
dGEuZ2V0KCkgZm9yVHlwZTp0eXBlXTsKICAgICB9CiAKQEAgLTQ1NTQsNyArNDU1NCw3IEBAIE5T
QXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0
aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKIAogICAg
IGlmIChtX3Byb21pc2VkSW1hZ2UpIHsKLSAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+
ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+
ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgd3JhcHBl
ciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29u
dGVudHM6ZGF0YS5nZXQoKV0pOwogICAgIH0gZWxzZQogICAgICAgICB3cmFwcGVyID0gYWRvcHRO
UyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
Om1fcHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3JhcHBlclJlYWRpbmdJbW1lZGlhdGUgZXJy
b3I6bmlsXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYzQ4NWM3ZmMz
MTNlYTA4MzNmYzYwNjI2NzE2OWQ2OTJhODI0MDkyOC4uYjQ2MmQ4ZGI1Y2M2MjAzODZlNzY4M2Ri
MjQ4MzZhYjNjZTY0ZmVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAt
MzI4LDcgKzMyOCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgVVNFKEFQUEtJVCkKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYg
dGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBv
cmlnaW5JZGVudGlmaWVyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFByb21pc2VkRGF0YUZv
ckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVu
dGlmaWVyKSA9IDA7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNv
bnZlcnRUb0RldmljZVNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYjA0NTM5ZDYwMDVkNTQzYmM2MmZi
ODkwNTk5NjQ2ODkzMmEzM2U5Mi4uNmU0OWFjYjhhN2E2YjdlM2I4NjRhODFiYTRiZDdjZDZmODNl
Y2RjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI1OSw3ICsy
NTksNyBAQCBjbGFzcyBJbnRTaXplOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUnVu
TG9vcE9ic2VydmVyOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3Q7CiBjbGFzcyBUZXh0SW5kaWNhdG9yOwogY2xhc3MgVmFsaWRhdGlvbkJ1YmJsZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1
NmZkNjk3ZjJhZGYyMDlmNmM0N2JlZjA1MWQ4MGMxNmJkMS4uMTk5N2VhZTIwYWMyMmNhM2FlODAw
NGM3MDRmYTIyZGE2MDllMDA5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHAKQEAgLTUxLDYgKzUxLDcgQEAgV2ViVVJMU2NoZW1lVGFzazo6V2ViVVJM
U2NoZW1lVGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJveHkmIHAK
ICAgICAsIG1fcmVxdWVzdChXVEZNb3ZlKHBhcmFtZXRlcnMucmVxdWVzdCkpCiAgICAgLCBtX2Zy
YW1lSW5mbyhBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUocGFyYW1ldGVycy5mcmFtZUlu
Zm8pLCAmcGFnZSkpCiAgICAgLCBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHN5bmND
b21wbGV0aW9uSGFuZGxlcikpCisgICAgLCBtX3N5bmNEYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVk
QnVmZmVyQnVpbGRlcj4oKSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogfQpA
QCAtMTY4LDcgKzE2OSw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSAtPiBFCiAgICAgcmV0dXJuIEV4
Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKLWF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2
ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKK2F1dG8g
V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKIApAQCAtMTg3LDEwICsxODgsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRp
ZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQog
ICAgIG1fZGF0YVNlbnQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIGlm
IChtX3N5bmNEYXRhKQotICAgICAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVm
ZmVyKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3luY0RhdGEgPSBXVEZNb3ZlKGJ1
ZmZlcik7CisgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKQEAgLTIxNywxMiArMjE1
LDkgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKICAg
ICAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0g
ICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+
ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKLQorICAgICAgICBzaXplX3Qgc2l6ZSA9IG1f
c3luY0RhdGEtPnNpemUoKTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSB7IG1fc3lu
Y0RhdGEtPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaXplIH07CiAgICAgICAg
IG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShk
YXRhKSk7Ci0gICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwogICAgIH0KIAogICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKG1f
dXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX3Jlc291cmNlTG9hZGVySUQsIGVycm9y
KSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5oCmluZGV4IDZhODU2MDIxYjEyOTkyNDZjNzAwMDkzZGQwYTQ3ZjJjMTMwODUyNjcuLjc5OTQy
ZjliMjBhMjY2MGNhNGE3ZGNkNDUwMThkMTZlNDNiNjY2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3
dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiBj
bGFzcyBGcmFtZUluZm87CkBAIC00Myw3ICs0NCw4IEBAIGNsYXNzIEZyYW1lSW5mbzsKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
ODQsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uVHlwZSB3aWxsUGVyZm9ybVJlZGly
ZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsICBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAg
ICAgRXhjZXB0aW9uVHlwZSBkaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgRXhjZXB0aW9uVHlw
ZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwot
ICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJik7CisgICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgRXhjZXB0aW9uVHlwZSBkaWRDb21wbGV0ZShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIHN0b3AoKTsKQEAgLTEx
NSw3ICsxMTcsNyBAQCBwcml2YXRlOgogCiAgICAgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciBt
X3N5bmNDb21wbGV0aW9uSGFuZGxlcjsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1f
c3luY1Jlc3BvbnNlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fc3luY0Rh
dGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fc3luY0Rh
dGE7CiAKICAgICBib29sIG1fd2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXJDYWxs
YmFjayB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL0NsaXBib2FyZC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5o
CmluZGV4IDc4NjZjZGIxNzc0NjAwN2FiMGE3YTE3YzU1Yjg3YzdmMTY0YzJiYWUuLjcyNzlmODQ0
Y2MyYmJkMmIwMTdmZTBmMDk3ZGUwMTg3MGE5YTg1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkLmgKQEAgLTM2LDcgKzM2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0d0a0Ns
aXBib2FyZCBHdGtDbGlwYm9hcmQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNlbGVj
dGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZm9ybWF0cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYp
PiYmKTsKICAgICB2b2lkIHJlYWRUZXh0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYp
PiYmKTsKICAgICB2b2lkIHJlYWRGaWxlUGF0aHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiYmKT4mJik7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IGNoYXIqLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYmKTsKKyAg
ICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgY2hhciosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmKTsKICAgICB2b2lkIHdyaXRl
KFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJik7CiAgICAgdm9pZCBjbGVhcigpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKaW5kZXggYzJiZjUxODNi
MzBmMTBlOWViNzgxM2NkYWRhMjIzZTkxODljNzQ1OS4uNTk2NmQ1NTc0YzI4MmY1MzE2OTQwOTYw
ODI5NjBhZTMzOWNhMTEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L0NsaXBib2FyZEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlw
Ym9hcmRHdGszLmNwcApAQCAtMTI2LDE1ICsxMjYsMTUgQEAgdm9pZCBDbGlwYm9hcmQ6OnJlYWRG
aWxlUGF0aHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21w
bGUKIHN0cnVjdCBSZWFkQnVmZmVyQXN5bmNEYXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CiAKLSAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRhKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikK
KyAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGhhbmRsZXIpCiAgICAg
ICAgIDogY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkKICAgICB7CiAgICAgfQog
Ci0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5kbGVyOwogfTsK
IAotdm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9ybWF0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBndGtfY2xpcGJvYXJkX3JlcXVl
c3RfY29udGVudHMobV9jbGlwYm9hcmQsIGdka19hdG9tX2ludGVybihmb3JtYXQsIFRSVUUpLCBb
XShHdGtDbGlwYm9hcmQqLCBHdGtTZWxlY3Rpb25EYXRhKiBzZWxlY3Rpb24sIGdwb2ludGVyIHVz
ZXJEYXRhKSB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFkQnVmZmVyQXN5bmNEYXRhPiBk
YXRhKHN0YXRpY19jYXN0PFJlYWRCdWZmZXJBc3luY0RhdGEqPih1c2VyRGF0YSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCmluZGV4IDA3YWJiNzEz
MTk4ODUzYjc4N2M2MzI0YmQ0ODBiMWUwODhhMmEzZDMuLjViODFmYThmMjlkM2Y3Y2YxYzNmMDlk
MWZjM2M4ODczNGRjNTFhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9DbGlwYm9hcmRHdGs0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xp
cGJvYXJkR3RrNC5jcHAKQEAgLTEyMCwxNSArMTIwLDE1IEBAIHZvaWQgQ2xpcGJvYXJkOjpyZWFk
RmlsZVBhdGhzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29t
cGxlCiBzdHJ1Y3QgUmVhZEJ1ZmZlckFzeW5jRGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOwogCi0gICAgZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5jRGF0YShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYmIGhhbmRsZXIp
CisgICAgZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5jRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBoYW5kbGVyKQogICAg
ICAgICA6IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikpCiAgICAgewogICAgIH0K
IAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
Jik+IGNvbXBsZXRpb25IYW5kbGVyOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKIH07
CiAKLXZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0IGNoYXIqIGZvcm1hdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0IGNoYXIqIGZvcm1h
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29uc3QgY2hhciogbWltZVR5
cGVzW10gPSB7IGZvcm1hdCwgbnVsbHB0ciB9OwogICAgIGdka19jbGlwYm9hcmRfcmVhZF9hc3lu
YyhtX2NsaXBib2FyZCwgbWltZVR5cGVzLCBHX1BSSU9SSVRZX0RFRkFVTFQsIG51bGxwdHIsIFtd
KEdPYmplY3QqIGNsaXBib2FyZCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJE
YXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1h
Yy5oCmluZGV4IGQyMjM4ZmRjOWQxNmY3N2Y4YzNkMzAyY2E5OTc2ZmU4M2YxYjNmMzcuLmFiODdj
MmE3ZThjMzU3YTY1YjNjZmU2MDc5MzhmZGZlYzhhNjUyYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCkBAIC0xMDAsOCArMTAwLDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhVbmRvT3JSZWRvKSBvdmVycmlkZTsK
ICAgICBib29sIGV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2Vs
ZWN0b3IpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJ
dGVtJiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxl
LAotICAgICAgICBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luSWRlbnRpZmllcikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQcm9taXNlZERhdGFG
b3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
Y29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsCisgICAgICAgIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYg
b3JpZ2luSWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0
YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNldFNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlk
ZTsKICAgICB2b2lkIG5vdGlmeUlucHV0Q29udGV4dEFib3V0RGlzY2FyZGVkQ29tcG9zaXRpb24o
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5tbQppbmRleCBhNDExMjEzNWYyZWYxOTAxNWE1MmYxZTFiMDNhZTMwYTFmMjIzZDJh
Li5jMzYzZTk1NWU4NzljMGUxODZiNDE1MDkwOTEzMzY1YzIwZmU5MDY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCkBAIC00MDAsNyAr
NDAwLDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRy
YWdJdGVtJiBpdGVtLCBjb25zdCBTaGFyZWFibGVCaXQKICAgICBtX2ltcGwtPnN0YXJ0RHJhZyhp
dGVtLCBpbWFnZSk7CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0YUZv
ckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
aW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5z
aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiB2aXNpYmxlVVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0
IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNldFByb21p
c2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQog
ewogICAgIGF1dG8gaW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgaW1hZ2UtPnNl
dERhdGEoV1RGTW92ZShpbWFnZUJ1ZmZlciksIHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggZTAzZTA4MGFlZTA4MzgwYjQ2ZmZl
ODlkZDhlNjFiNjZiNTk4ZGI0Ni4uMDFkODQwYTJhNjNlYWM3OTFmYmQ4NGZiZTYzN2I1YjI4Y2Y2
MTMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFj
Lm1tCkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0
YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFMKICAgICAgICAg
cmV0dXJuOwogICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBzaGFyZWRNZW1vcnlJbWFnZS0+Y3JlYXRl
U2hhcmVkQnVmZmVyKGltYWdlSGFuZGxlLmRhdGFTaXplKTsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGFyY2hpdmVCdWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGFyY2hpdmVCdWZmZXI7CiAgICAgaWYgKCFhcmNoaXZlSGFuZGxlLmhhbmRsZS5pc051bGwoKSkg
ewogICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUFyY2hpdmUgPSBTaGFyZWRNZW1vcnk6Om1hcChh
cmNoaXZlSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7
CiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5QXJjaGl2ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAppbmRleCBmYTk0MDI1ZWQ3NDczMGQy
OGU3MTY0NjI4NWY5ZTViYTY1M2I4ZjEyLi5jMjhmZTY1ZjBjZjE2NDM5OTgxOGFjYTMyZjk4MWNj
Nzc4ZjFlOTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE0uY3BwCkBAIC04NCw3ICs4NCw3IEBAIGJvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c1Nl
c3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25zCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbW90ZUNETTo6c3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0Citi
b29sIFJlbW90ZUNETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKSBjb25zdAogewogICAgIC8vIFRoaXMg
Y2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwgaW5zaWRlIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5OjpyZXF1ZXN0TGljZW5zZSgpLgogICAgIHJldHVybiB0cnVlOwpAQCAtMTI5LDcgKzEy
OSw3IEBAIHZvaWQgUmVtb3RlQ0RNOjpsb2FkQW5kSW5pdGlhbGl6ZSgpCiAgICAgbV9mYWN0b3J5
LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVDRE1Qcm94eTo6TG9hZEFuZEluaXRpYWxpemUoKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
UmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IHJlc3BvbnNlKSBjb25zdAogewogICAgIC8vIFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRl
ciwgaW5zaWRlIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKCku
CiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCmluZGV4IDBhZGRmODMzNTNiNmVhMWIyZThiMDJjNmI3
ZWUzZGFmNDY4Y2QzODMuLjhjNDU0ZWI4M2U1OTk0YThlNGQ1OTJkNTFkZjkxZmY5YjUyM2NiZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaApA
QCAtNDgsMTMgKzQ4LDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRp
b24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFs
OwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBX
ZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVz
dHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0
aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGUmLCBjb25zdCBXZWJD
b3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBz
dXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRv
bVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBm
aW5hbDsKICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJz
UmVxdWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNv
bnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNvcmU6
OkNETVJlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6
OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlv
bnMmKSBjb25zdCBmaW5hbDsKICAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlx
dWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4g
Y3JlYXRlSW5zdGFuY2UoKSBmaW5hbDsKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmlu
YWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShj
b25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFs
OwogCiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVkSW5pdERhdGFUeXBlczsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlLmNwcAppbmRleCBiNWRlYTIxZTk5NWE3MzdmMDM2ZjY0NTM4YzFmYjNlY2I1
ZTZiYjU1Li5hMTNlNTE0NjBmNmJiOWY4MGVmM2QxYTg0MmVmYzBiOWY0NDU5MGM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlOjppbml0
aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQwogICAg
IG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpJbml0aWFsaXplV2l0
aENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgZGlzdGluY3RpdmVJZGVudGlmaWVycywgcGVy
c2lzdGVudFN0YXRlKSwgV1RGTW92ZShjYWxsYmFjayksIG1faWRlbnRpZmllcik7CiB9CiAKLXZv
aWQgUmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQor
dm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYm
IGNhbGxiYWNrKQogewogICAgIGlmICghbV9mYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKEZh
aWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlLmgKaW5kZXggMTA2YmEzYjExNjFjOGRmMDlkNzFkZmU2NzliYTMzZDQy
MzA3OWU5Ni4uMmM3ODUxZTQ0MGIwOGE1MmEyYWU3MGRhN2U0MTg4ODJlM2M2MTQzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2UuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogCiAgICAgSW1wbGVtZW50YXRpb25U
eXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0
aW9uVHlwZTo6UmVtb3RlOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24o
Y29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3Rp
dmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBm
aW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNl
cnRpZmljYXRlKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNz
Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmtleVN5c3RlbTsgfQogICAgIFJlZlB0cjxXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmNwcAppbmRleCBhZjBiYWQ0YzkwZDhkZDUxMzc3NGFlZjZhMTViNzdiYTg5
ZmM1MDY0Li5jNzQwYzA0NTA2ZmRlZGFjOWY0Y2Y1MDJjMjA1YThhMzdmY2E0NTllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCkBAIC00OSw3ICs0OSw3IEBAIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbjo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8UmVtb3RlQ0RNRmFj
dG9yeT4mJiBmCiB7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0
TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNr
KQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewog
ICAgIGlmICghbV9mYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBGYWlsZWQpOwpAQCAtNjUsNyArNjUsNyBAQCB2
b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUg
dHlwZSwgY29uc3QgQXRvbVN0cmluZwogICAgIH0sIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBM
aWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlw
ZSB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsKICAgICAg
ICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQsIEZhaWxlZCk7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb246OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnMK
ICAgICB9CiAKICAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHk6OlJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSksIFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXSAoS2V5U3RhdHVzVmVjdG9yJiYgY2hhbmdlZEtleXMsIHN0ZDo6b3B0
aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBt
dXRhYmxlIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gcmVhbE1l
c3NhZ2UgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiByZWFsTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYg
KG1lc3NhZ2UgJiYgbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpKQogICAgICAgICAgICAgcmVhbE1l
c3NhZ2UgPSBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKTsKICAgICAg
ICAgY2FsbGJhY2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUocmVhbE1lc3NhZ2UpLCBz
dWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgK
aW5kZXggNGZmZTRjYWNlY2NkZTQzZDVjYjExZTIzNmNhMDQ1YWNkYTgzYTdlYi4uNGU0Y2QyYzAw
NWM2YjAwNjVmOWNkYjE4OGM0YmNlMGI1YmZhNjYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bi5oCkBAIC01OSw4ICs1OSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldENsaWVudChXZWFr
UHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudD4mJiBjbGllbnQpIGZpbmFsIHsg
bV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7IH0KICAgICB2b2lkIGNsZWFyQ2xpZW50KCkgZmlu
YWwgeyBtX2NsaWVudCA9IG51bGxwdHI7IH0KLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lk
IHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sm
JikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRl
TGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJh
Y2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25E
YXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRh
dGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcAppbmRleCA5YTIxOWE1
NDRlNTUzODNmNTRlNzFkYWJkMzU0Y2M0NDBhNDE0MmI5Li42MjkyNjc5OGM1YzExMzI0YTMxYWE1
MGNkYTdlZDFmYmY3NGZlNzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCkBAIC0yMDAsNyAr
MjAwLDcgQEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldEV4cGVjdGVkQ29udGVudFNp
emUobG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUKIAogLy8gSWYgYWxsRGF0YVJlY2VpdmVk
IGlzIHRydWUsIHRoZSBjYWxsZXIgZXhwZWN0cyBlbmNvZGVkRGF0YVN0YXR1cygpIHRvIGJlID49
IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlCiAvLyBhZnRlciB0aGlzIGZ1bmN0aW9u
IHJldHVybnMgKGluIHRoZSBzYW1lIHJ1biBsb29wKS4KLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2
b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCmluZGV4IGU1Y2Zl
OTRlY2QzYTljMDYwMGZjMDAzMjBmZjQzMDYxYzkwZWQ2OWIuLjQwZDM3MzRmN2EzMjJlOGJhY2I5
ZDFjMGRlYTcwNzllMmFkMTdlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaApAQCAtNDUsNyArNDUs
NyBAQCBjbGFzcyBSZW1vdGVJbWFnZURlY29kZXJBVkYgZmluYWwKICAgICA6IHB1YmxpYyBXZWJD
b3JlOjpJbWFnZURlY29kZXIKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVJbWFn
ZURlY29kZXJBVkY+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUltYWdlRGVjb2Rl
ckFWRj4gY3JlYXRlKFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXImIG1hbmFnZXIsIGNvbnN0
IFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXImIGlkZW50aWZpZXIsIFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCisgICAgc3RhdGljIFJlZjxSZW1v
dGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZShSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyJiBt
YW5hZ2VyLCBjb25zdCBXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyJiBpZGVudGlmaWVy
LCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUltYWdlRGVjb2Rl
ckFWRihtYW5hZ2VyLCBpZGVudGlmaWVyLCBtaW1lVHlwZSkpOwogICAgIH0KQEAgLTgwLDcgKzgw
LDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90LCBXZWJDb3JlOjpTdWJzYW1wbGluZ0xldmVsID0gV2ViQ29yZTo6
U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgV2ViQ29yZTo6RGVjb2RpbmdPcHRpb25z
JiA9IFdlYkNvcmU6OkRlY29kaW5nT3B0aW9ucyhXZWJDb3JlOjpEZWNvZGluZ01vZGU6OlN5bmNo
cm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBs
b25nKSBmaW5hbDsKLSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJv
b2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJl
Y2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKaW5kZXggNDFkNTM4ODAyM2Qz
OTE0OTUyMTgzNWY2ODhkZTRkNDhmNjVkNzY3ZS4uMDgyYjMzNjZjOGJjNzEzMGQ3NWQ1Njk4YTdk
NzllNjg5MmFkOGY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCkBA
IC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAotUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGTWFuYWdlcjo6Y3JlYXRlSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPFJlbW90ZUlt
YWdlRGVjb2RlckFWRj4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6Y3JlYXRlSW1hZ2VE
ZWNvZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBn
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPEltYWdlRGVj
b2RlcklkZW50aWZpZXI+IGltYWdlRGVjb2RlcklkZW50aWZpZXI7CiAgICAgSVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UgeyBkYXRhIH07CkBAIC0xMDgsNyArMTA4
LDcgQEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpzZXRVc2VHUFVQcm9jZXNz
KGJvb2wgdXNlR1BVUHJvY2VzcykKICAgICBJbWFnZURlY29kZXI6Omluc3RhbGxGYWN0b3J5KHsK
ICAgICAgICAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzdXBwb3J0c01lZGlhVHlwZSwKICAgICAg
ICAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpjYW5EZWNvZGVUeXBlLAotICAgICAgICBbdGhpc10o
U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBh
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pIHsKKyAgICAgICAgW3RoaXNdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikgewogICAgICAg
ICAgICAgcmV0dXJuIGNyZWF0ZUltYWdlRGVjb2RlcihkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRp
b24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICAgICAgfQogICAgIH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkZNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaAppbmRleCBjMjM3ODJiNjUwNGVjNzliZTQ2ZTEy
NmY0ZTU5MWIzZmY3ZjZkYmE4Li4zNjE4YWZkMTIwOThiNTU3NmI0ZGQ0ZmZiZjNjMDZmYmE4NDJh
NzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaApAQCAtNTksNyArNTksNyBA
QCBwdWJsaWM6CiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGVuc3VyZUdQVVByb2Nlc3NDb25u
ZWN0aW9uKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4g
Y3JlYXRlSW1hZ2VEZWNvZGVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6QWxwaGFPcHRpb24sIFdlYkNvcmU6OkdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKTsKKyAgICBSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVh
dGVJbWFnZURlY29kZXIoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6QWxwaGFPcHRpb24sIFdlYkNvcmU6OkdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIC8vIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpD
bGllbnQuCiAgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3ND
b25uZWN0aW9uJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAppbmRleCBhNTNmMTU3
YmVlYmQ3ZGIyZTgxYjJmNWVjYmQ2MzgxODYyYTY4MDhhLi5mMWQxYzEwYTZlNWMzYWIyYjgxMzIz
YzA0ZGFjMDU3Mjg2ZTlmZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKQEAgLTYyLDcg
KzYyLDcgQEAgc3RhdGljIElQQzo6U2hhcmVkQnVmZmVyQ29weSBjb252ZXJ0VG9TaGFyZWRCdWZm
ZXJDb3B5KFQgYXJyYXkpCiB7CiAgICAgaWYgKCFhcnJheSkKICAgICAgICAgcmV0dXJuIHsgfTsK
LSAgICByZXR1cm4geyBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcnJheS0+ZGF0YSgpLCBhcnJheS0+
Ynl0ZUxlbmd0aCgpKSB9OworICAgIHJldHVybiB7IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShhcnJheS0+ZGF0YSgpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKSB9OwogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbj4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6
Y3JlYXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4gZmFjdG9yeSwgUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJiBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZS5jcHAKaW5kZXggOTY2ZmM5M2I3N2FmYWEzZTYyMDhkN2FiYTVhZWQyYzdhOTRjNzRi
Mi4uMDA1YTM3Y2MyNmVjNGMwOTAxYmY0ZjM3MTIyMzg2NWRlMmQxNjZiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGUuY3BwCkBAIC03OCw3ICs3OCw3IEBAIFNvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGU6On5Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlKCkKICAgICBtX2dwdVByb2Nlc3ND
b25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCi12b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEp
Cit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVuZChSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbikK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaAppbmRleCAzNjAxNzVi
ZmJlOWQxYWY4M2VkNTc5MTM3M2I3NzVlZTc1MGFjN2NjLi5lYTVmYTNlYzM2YzJiODU5ZWU1Nzhj
Y2QwZTAzNDhjNzNjYjg2ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaApAQCAtNzIs
NyArNzIsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gU291cmNlQnVmZmVyUHJpdmF0ZSBvdmVycmlk
ZXMKICAgICB2b2lkIHNldEFjdGl2ZShib29sKSBmaW5hbDsKLSAgICB2b2lkIGFwcGVuZChSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZChSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBhYm9ydCgp
IGZpbmFsOwogICAgIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpIGZpbmFsOwogICAgIHZvaWQgcmVt
b3ZlZEZyb21NZWRpYVNvdXJjZSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCmluZGV4
IDExYjRhODZlNDg1MmY2YzIwNjFmYTNmYzlhZjI5Zjg4OTlmNGViOWYuLmI0MDg5ZmQzNTQ4Yzk3
ZjE3ZmMyYjlmYjAwMjc4MGQ2NDNjZjIzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKQEAg
LTE2NSwxMCArMTY1LDEwIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OnN0b3JhZ2VDaGFu
Z2VkKFNoYXJlZE1lbW9yeSogc3RvcmFnZSwgY29uc3QgV2ViQ29yZTo6CiAgICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpBdWRpb1NhbXBsZXNTdG9y
YWdlQ2hhbmdlZCB7IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBk
YXRhU2l6ZSB9LCBmb3JtYXQsIGZyYW1lQ291bnQgfSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9p
ZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
ZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6
OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpGZXRjaERhdGEgeyB9LCBbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbWltZVR5cGUgPSBtaW1lVHlw
ZSgpXShhdXRvJiYgZGF0YSwgZG91YmxlIHRpbWVDb2RlKSBtdXRhYmxlIHsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoZGF0YS5zaXplKCkpCiAgICAgICAgICAgICBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlciksIG1pbWVUeXBlLCB0aW1l
Q29kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAppbmRleCAzMDNhNTRmNzZmMTg1ZTk2NDU0ZWY5ZjVi
YjQ2MWYyOGUxMjY3ODZkLi41NzZmZDFjNmU5N2MwY2FkOGNiZmVjOTRlM2JkMzYzMzA3NmU0NGUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJl
Y29yZGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L01lZGlhUmVjb3JkZXJQcml2YXRlLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICAvLyBXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZQogICAgIHZvaWQgdmlkZW9T
YW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6TWVkaWFTYW1wbGUmLCBXZWJDb3JlOjpWaWRlb1NhbXBs
ZU1ldGFkYXRhKSBmaW5hbDsKLSAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGRvdWJsZSk+JiYpIGZpbmFsOworICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+JiYpIGZpbmFsOwogICAgIHZvaWQgc3RvcFJlY29y
ZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwogICAgIHZvaWQgc3RhcnRS
ZWNvcmRpbmcoU3RhcnRSZWNvcmRpbmdDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGF1ZGlv
U2FtcGxlc0F2YWlsYWJsZShjb25zdCBXVEY6Ok1lZGlhVGltZSYsIGNvbnN0IFdlYkNvcmU6OlBs
YXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgV2ViQ29yZTo6QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYs
IHNpemVfdCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50LmgKaW5kZXggMDY3M2Y3NGRkZmI0OGU1YmRmNDM4Y2Q5MGJlMzc5NGVlZTIwOTFi
Yi4uMDM1M2FhYmY3ZDRiOTI1YWEyZjE1NjJkNTczYWFmMzA5M2M4M2JjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1
bmRsZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaApAQCAtMzEsOSArMzEs
OSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3Mg
Tm9kZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsKIHN0cnVj
dCBTaW1wbGVSYW5nZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5oCmluZGV4IGEwNjM1MjA0MzM1YjNhYjBlNmRmYjBjNjc3NzY3
ZjQyOGU4YTc3ZTIuLjE4MGIxMTExZWNmMDExMzI4MDkyNjZhMWJjZTI3ZDI2MGU0ZmEwMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJ
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBET01XaW5kb3dFeHRlbnNpb247CiBjbGFzcyBE
T01XcmFwcGVyV29ybGQ7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5QYWdlTG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCB2b2lk
IHdpbGxMb2FkVVJMUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCopIHsgfQotICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9h
ZERhdGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3Qg
V1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlVSTCYsIEFQSTo6T2JqZWN0KikgeyB9CisgICAgdmly
dHVhbCB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcios
IGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlVSTCYs
IEFQSTo6T2JqZWN0KikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJiwgUmVmUHRy
PEFQSTo6T2JqZWN0PiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6
OldlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4ZDUyNGI1MjVjNmU3YTBjYzZi
ZGU1ZTgwYTQ3YzE3MWUzNDE0NjhjLi4zZjQxYjFmMzM4ZmE0NDQ3NDkwNzQ4MTg5YmI4OTk1MWNm
MWIxNzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
LmNwcApAQCAtNjUsMTUgKzY1LDE2IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VTaGFyZWRCdWZmZXIo
dW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAgICAgc3RhdGljX2Nhc3Q8U2hhcmVk
QnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOwogfQogCi12b2lkIElu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdl
JiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciogc2hh
cmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5n
TmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQor
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3Qo
V2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0
IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9i
amVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC53aWxsTG9hZERhdGFSZXF1ZXN0
KQogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8QVBJOjpEYXRhPiBkYXRhOwogICAgIGlm
IChzaGFyZWRCdWZmZXIpIHsKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5yZWYoKTsKLSAgICAgICAg
ZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNo
YXIqKXNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNo
YXJlZEJ1ZmZlciwgc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYXV0byBjb250aWd1b3VzQnVmZmVy
ID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBjb250aWd1b3VzQnVm
ZmVyLT5yZWYoKTsKKyAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlp
bmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKWNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgY29udGln
dW91c0J1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBjb250aWd1b3VzQnVmZmVy
LnB0cigpKTsKICAgICB9CiAKICAgICBtX2NsaWVudC53aWxsTG9hZERhdGFSZXF1ZXN0KHRvQVBJ
KCZwYWdlKSwgdG9BUEkocmVxdWVzdCksIHRvQVBJKGRhdGEuZ2V0KCkpLCB0b0FQSShNSU1FVHlw
ZS5pbXBsKCkpLCB0b0FQSShlbmNvZGluZ05hbWUuaW1wbCgpKSwgdG9VUkxSZWYodW5yZWFjaGFi
bGVVUkwuc3RyaW5nKCkuaW1wbCgpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5o
CmluZGV4IDM2YmQ5ODBiMmZhYTFhZjQ1YWMzMTA2ZWIwMWU5ZjM3NmJhMTNhY2YuLjg2M2JkYWI2
Mjg0Y2EzYWFkMmY5ZDVmZmY1ZmQ2OGVhYjhiMmI3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IGV4cGxpY2l0IEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudChjb25zdCBXS0J1bmRsZVBh
Z2VMb2FkZXJDbGllbnRCYXNlKik7CiAKICAgICB2b2lkIHdpbGxMb2FkVVJMUmVxdWVzdChXZWJQ
YWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgQVBJOjpPYmplY3QqKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6
U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBVUkwmLCBBUEk6Ok9iamVjdCopIG92
ZXJyaWRlOworICAgIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcios
IGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBVUkwmLCBBUEk6
Ok9iamVjdCopIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKFdlYlBhZ2UmLCBXZWJGcmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKFdlYlBhZ2UmLCBXZWJGcmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCmluZGV4IGU1MjRk
OGUxYjAxN2FhOGU1ZTAzYjg5MmQ5MmI3NTg5NGM1OGYzNzQuLmE3ODRlYzM4OGIyMjUyNGNjMGRh
NjMyNzhlNWU3NTkxMzdkY2Y2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBs
YXllck1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9k
ZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAg
IGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRh
KCktPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3Vy
Y2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+
c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAgbV9maWxlUGF0
aCA9IGZpbGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNDdiOTFjZTg3
ZDM2MTNlMzVkNTc5NDA3OTdhZGYwYjFkZDAwYTQ4Yi4uOWNkNjVhY2EzOGRjNTE4YWYyMjdmYWU0
MDllZGFjYjAxOTQwNDZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yNzcsNyAr
Mjc3LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2Uo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgIAogICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKICAgICBpZiAo
IWJ1ZmZlcikgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVm
ZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMiLCBy
ZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBjcmVhdGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJl
c291cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IDI1OTQ0OTQyMzg1NWZlZDNhYWFhYjQxNDgxOWY4OTUxYTNiOGI3ZmYuLjMxMGZjYTc4NzVj
MzJjM2NkNzQ3OGRiNjRmNTlhYzJjZjUwMTYzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE1NSw3ICsx
NTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgIGlmIChJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJh
bWUoKSwgcmVzcG9uc2UpKSB7CiAgICAgICAgIGF1dG8gaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRp
ZmllciA9IG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpOwogICAgICAgICBtX2ludGVyY2VwdENv
bnRyb2xsZXIuYmVnaW5JbnRlcmNlcHRpbmdSZXNwb25zZShpbnRlcmNlcHRlZFJlcXVlc3RJZGVu
dGlmaWVyKTsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNl
cHRSZXNwb25zZShtX2NvcmVMb2FkZXItPmZyYW1lKCksIHJlc3BvbnNlLCBpbnRlcmNlcHRlZFJl
cXVlc3RJZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGlu
dGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiBpbnNwZWN0b3JSZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3Zl
cnJpZGVEYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2Vi
S2l0OjppbnRlcmNlcHRSZXNwb25zZShtX2NvcmVMb2FkZXItPmZyYW1lKCksIHJlc3BvbnNlLCBp
bnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIHBvbGljeURlY2lzaW9uQ29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIp
XShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBpbnNwZWN0b3JSZXNwb25zZSwgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IG92ZXJyaWRlRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBp
ZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpIHsKICAgICAg
ICAgICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc3Bv
bnNlOiBub3QgY29udGludWluZyBpbnRlcmNlcHQgbG9hZCBiZWNhdXNlIG5vIGNvcmVMb2FkZXIg
b3Igbm8gSUQiKTsKICAgICAgICAgICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuY29udGlu
dWVSZXNwb25zZShpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyKTsKQEAgLTI5NSwxMSArMjk1
LDExIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBT
aGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kCiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJv
Y2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZSBmb3IgJyVzJyIsIG1f
Y29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBXRUJSRVNP
VVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiIpOwogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigp
OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5
V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2Ugc2Vu
dCBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7Ci0gICAgICAgIFdFQlJFU09VUkNFTE9BREVS
X1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgU2hhcmVk
QnVmZmVyIik7CisgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNl
aXZlUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciIpOwog
ICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBtX2NvcmVMb2FkZXItPmZyYW1lKCkpIHsKICAgICAg
ICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAgICAgICBw
YWdlLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNv
cmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxFcnJvcktleSgpLCBXZWJDb3JlOjpE
aWFnbm9zdGljTG9nZ2luZ0tleXM6OmNyZWF0ZVNoYXJlZEJ1ZmZlckZhaWxlZEtleSgpLCBXZWJD
b3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCA0MmRlNDYxNDE5Nzc4YjdjNDUwZmNhMWViMDM3
YzFjZTk3ZDJkNjMxLi5hN2Y0NWM4NDAxYjJmZDJmODcwZTM2NzhjNThmYzMxMGMyZTFmMjQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5o
CkBAIC0yMDcsNyArMjA3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0
YXRlQ2hhbmdlZChib29sKSBmaW5hbCB7IH0KICAgICBib29sIGdldEZvcm1WYWx1ZShTdHJpbmcm
IGZvcm1WYWx1ZSkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGhhbmRsZVNjcm9s
bChXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KSBm
aW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRh
KCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHdpbGxEZXRhY2hS
ZW5kZXJlcigpIGZpbmFsOwogICAgIGJvb2wgcGx1Z2luSGFuZGxlc0NvbnRlbnRPZmZzZXRGb3JB
Y2Nlc3NpYmlsaXR5SGl0VGVzdCgpIGNvbnN0IGZpbmFsOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggZDIzYWJiOWU2
NTExYjEzYmJkNTIzYWY0NTFmNDQxNzg3M2E2YzFlMC4uZDQ3ZjMyYjdkNDkxOTU2YmRjZTc3YmZl
NmYxNWNhNzg2NWJmZDE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0yNTUyLDcgKzI1NTIsNyBAQCB2b2lkIFBERlBsdWdp
bjo6bm90aWZ5RGlzcGxheU1vZGVDaGFuZ2VkKGludCkKICAgICB1cGRhdGVTY3JvbGxiYXJzKCk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBERlBsdWdpbjo6bGl2ZVJlc291cmNlRGF0YSgp
IGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUERGUGx1Z2luOjpsaXZlUmVz
b3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBOU0RhdGEgKnBkZkRhdGEgPSBsaXZlRGF0YSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCmluZGV4IDg4ZjQ1Y2U1
MWNlMzFkZjBjNWIzYjc1ODYyMzZjM2YwZDljOTNhZDMuLjU4ZDcwYTM5YTE2ZDZhNGMwZThiMGNh
OWQwM2FjM2QzN2FlZGZjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbi5oCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50UmVjdDsK
IGNsYXNzIEludFNpemU7CiBjbGFzcyBTY3JvbGxiYXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTI4OCw3ICsyODgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50
IGNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludEluTG9jYWxD
b29yZGluYXRlcykgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0
ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRp
b24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBkNTRmMjdmMDcwOTE0N2U5
ZWRlYzA2ZGU1OGMxZThjYzEyMzFhNjc3Li43ZmIyMGM1OTJkYmZhMDk2ZTM4YmMxNjg3MDM3Mzhj
YjhmNDA3Yzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcApAQCAtMjg5LDYgKzI4OSw3IEBAIFBsdWdpblZpZXc6OlBsdWdpblZpZXcoSFRN
TFBsdWdJbkVsZW1lbnQmIHBsdWdpbkVsZW1lbnQsIFJlZjxQbHVnaW4+JiYgcGx1Z2luLCBjCiAg
ICAgLCBtX3dlYlBhZ2Uod2ViUGFnZShtX3BsdWdpbkVsZW1lbnQuZ2V0KCkpKQogICAgICwgbV9w
YXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiAgICAgLCBtX3BlbmRpbmdVUkxSZXF1ZXN0c1RpbWVyKFJ1
bkxvb3A6Om1haW4oKSwgdGhpcywgJlBsdWdpblZpZXc6OnBlbmRpbmdVUkxSZXF1ZXN0c1RpbWVy
RmlyZWQpCisgICAgLCBtX21hbnVhbFN0cmVhbURhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZm
ZXJCdWlsZGVyPigpKQogewogICAgIG1fd2ViUGFnZS0+YWRkUGx1Z2luVmlldyh0aGlzKTsKIH0K
QEAgLTQwMyw5ICs0MDQsNiBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIAogICAgIGlmICghbV9pc0lu
aXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VSVChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVh
bFN0cmVhbVN0YXRlOjpIYXNSZWNlaXZlZFJlc3BvbnNlKTsKLSAgICAgICAgaWYgKCFtX21hbnVh
bFN0cmVhbURhdGEpCi0gICAgICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOwotCiAgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+YXBwZW5kKGJ5dGVz
LCBsZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDM3LDcgKzQzNSw3IEBAIHZv
aWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgbV9tYW51YWxTdHJlYW1T
dGF0ZSA9IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZDsKICAgICAgICAgbV9tYW51YWxTdHJl
YW1FcnJvciA9IGVycm9yOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOwor
ICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPnJlc2V0KCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTkyNiwxMSArOTI0LDExIEBAIHZvaWQgUGx1Z2luVmlldzo6d2lsbERldGFjaFJl
bmRlcmVyKCkKICAgICBtX3BsdWdpbi0+d2lsbERldGFjaFJlbmRlcmVyKCk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAorUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEo
KSBjb25zdAogewogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikgewotICAg
ICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhICYmIG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFu
dWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQotICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3Ry
ZWFtRGF0YTsKKyAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFt
U3RhdGU6OkZpbmlzaGVkKQorICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YS0+
Z2V0KCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTI0MiwxMCArMTI0
MCwxMCBAQCB2b2lkIFBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSgpCiAgICAgbWFu
dWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShtX21hbnVhbFN0cmVhbVJlc3BvbnNlKTsKIAogICAg
IC8vIERlbGl2ZXIgdGhlIGRhdGEuCi0gICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSkgewotICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiAqbV9tYW51YWxTdHJlYW1EYXRhKQorICAg
IGlmICghbV9tYW51YWxTdHJlYW1EYXRhLT5pc051bGwoKSkgeworICAgICAgICBhdXRvIGJ1ZmZl
ciA9IG1fbWFudWFsU3RyZWFtRGF0YS0+dGFrZSgpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IGVsZW1lbnQgOiBidWZmZXIuZ2V0KCkpCiAgICAgICAgICAgICBtYW51YWxMb2FkRGlkUmVjZWl2
ZURhdGEoZWxlbWVudC5zZWdtZW50LT5kYXRhKCksIGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpKTsK
LSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAo
bV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggMjEyNmVi
OGVkYjU1OTM4NmIzNDIyNWViMmJkNWJmY2Q2ODAyM2YyMy4uZDE1M2EyOWNhMTRhOTBlMzIyN2E4
OTFlM2VlZjVlNGU3OTczNTFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KIAogLy8gRklYTUU6IEV2ZW50dWFsbHkgdGhpcyBzaG91bGQgbW92
ZSB0byBXZWJDb3JlLgogCkBAIC0xMTUsNyArMTE2LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBz
aG91bGRBbGxvd1NjcmlwdGluZygpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0OworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgYm9vbCBwZXJm
b3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYp
OwogICAgIFN0cmluZyBnZXRTZWxlY3Rpb25Gb3JXb3JkQXRQb2ludChjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50JikgY29uc3Q7CiAgICAgYm9vbCBleGlzdGluZ1NlbGVjdGlvbkNvbnRhaW5zUG9p
bnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIGNvbnN0OwpAQCAtMjUyLDcgKzI1Myw3IEBA
IHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fbWFudWFsU3RyZWFt
UmVzcG9uc2U7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBtX21hbnVhbFN0cmVhbUVycm9y
OwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsK
KyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9tYW51YWxTdHJl
YW1EYXRhOwogCiAgICAgLy8gVGhpcyBzbmFwc2hvdCBpcyB1c2VkIHRvIGF2b2lkIHNpZGUgZWZm
ZWN0cyBzaG91bGQgdGhlIHBsdWdpbiBydW4gSlMgZHVyaW5nIHBhaW50aW5nLgogICAgIFJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+IG1fdHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggZmVlOGZlYTdiY2M4ZDU5YzA3ZTNj
NWJhNGQ2MDk1NTJhNGQ2MjhiZi4uYjA0Y2NjZjExM2U0OTI4ZmE2NjM4M2JkMjQzMWRiODc0ODUz
Y2NhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTcxLDE2
ICs3MSwxNSBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJgogICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsg
cmVzcG9uc2UsIG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9m
ZXRjaElkZW50aWZpZXIpOwogfQogCi12b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBXZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZU1lc3NhZ2UpIHsKLSAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxT
aGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSkpCi0gICAgICAgICAgICBtX3Jlc3BvbnNlRGF0
YSA9IGJ1ZmZlci0+Y29weSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdGQ6OmdldDxS
ZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpLT5hcHBlbmQoV1RGTW92ZShidWZmZXIp
KTsKKyAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI+KG1fcmVzcG9uc2VEYXRhKSkKKyAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gU2hhcmVk
QnVmZmVyQnVpbGRlcigpOworICAgICAgICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWlsZGVyPiht
X3Jlc3BvbnNlRGF0YSkuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTIwNiw4ICsyMDUsOCBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKICAgICBzd2l0Y2hPbihtX3Jl
c3BvbnNlRGF0YSwgW3RoaXNdKHN0ZDo6bnVsbHB0cl90JikgewogICAgICAgICBpZiAobV9kaWRG
aW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKLSAgICB9LCBbdGhpc10oUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgewotICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZl
cikpOworICAgIH0sIFt0aGlzXShjb25zdCBTaGFyZWRCdWZmZXJCdWlsZGVyJiBidWZmZXIpIHsK
KyAgICAgICAgZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmIChtX2Rp
ZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwogICAgIH0sIFt0aGlzXShSZWY8Rm9y
bURhdGE+JiBmb3JtRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCmlu
ZGV4IGIzNDdjYWQyYWI1ZjU3MWIxYTBlMjA3MjA4MDQzNjdkNzcwMTg2MDAuLjZiMGE0MTdjZjBk
M2FlMGQ3Yjg5M2E5OTg2ODNhYmYyYmM0YTRkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoTG9h
ZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRmV0Y2guaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTQ5LDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0
YUFuZEZpbmlzaChSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
RmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRG
aW5pc2goKSBmaW5hbDsKQEAgLTgyLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlv
bmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKICAgICBib29sIG1fbmVlZHNDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93YWl0aW5nRm9y
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKLSAgICBzdGQ6OnZh
cmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBSZWY8V2Vi
Q29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVz
cG9uc2VEYXRhOworICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlciwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNv
cmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKICAgICBib29sIG1fZGlkRmluaXNo
IHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggODFlMzc5ZTMzZDFh
OWFjZGM4NmVmNWM0YmUyMWE3MjYwZDk0ZDQ4ZS4uN2NmYzAzYTg1ZDM5ZDgxZjM5MmMwYWExMzBm
ODNmYmQyYzgzNGYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTE0Miw3ICsxNDIsNyBA
QCBib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQXBwbHlTdHlsZShjb25zdCBTdHlsZVByb3Bl
cnRpZXMmIHN0eWxlLCBjb25zdCBzdGQ6OgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2
b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEp
CiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyQXR0
YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShpZGVudGlmaWVyLCBjb250ZW50VHlwZSwgcHJlZmVy
cmVkRmlsZU5hbWUsIGRhdGEuZ2V0KCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA1MDZk
OWY1NDEzOGQzN2NiNGM2NGVkNDYwZjU5YTVjMjhmZTUyMmE2Li5iMDU4NjE4OTFlY2M4NGM2MzY4
YTIwNmMyNzAxMDYwZjUwNTJmNWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC02NSw3ICs2NSw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShjb25zdCBX
ZWJDb3JlOjpTaW1wbGVSYW5nZSYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJikgZmluYWw7
CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIHZvaWQgcmVnaXN0ZXJBdHRh
Y2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVm
ZXJyZWRGaWxlTmFtZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKSBmaW5h
bDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJikg
ZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxXZWJDb3JlOjpTZXJp
YWxpemVkQXR0YWNobWVudERhdGE+JiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKaW5kZXggNGJkYmJjY2QzZmJjNjIwZTA3NTQxMDVjZWEwOWVkZGYwNTEyMGI2Yi4uMTRh
MDgzY2EyMDdhOTA2M2NmODBiMWU3ZTk2NzBhNDg3Y2Y0ZDM5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCkBAIC0xMTg4LDggKzExODgsOCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAg
ICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNv
dXJjZURhdGEoKTsKLSAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNl
KG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCkgOiBudWxscHRyLCBt
YWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgICAg
ICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxv
YWRlci0+bWFpblJlc291cmNlRGF0YSgpOworICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNl
IGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVz
b3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKICAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJv
dmlkZXIobG9hZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCksIGRhdGFSZWZlcmVu
Y2UpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4
IGY0MWE3MGVmNWJiNmMwZWNlOGJkODYyNzQxMTYwMWNmNzMwZTYyYTEuLjRhOGJlZTU3ZmRiMWZm
Y2RlZjAwODlmYTY1ZTk3NTM3NTBkMjUwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGMKICAgICBy
ZXR1cm4gbmV3Q2hhbmdlQ291bnQ7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCogY29udGV4dCkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRC
dWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFu
ZGxlOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAppbmRleCBlMjgwOTk2M2Y0ZjUwNjgxYjdkMDFmNDFhNjg1MzFhYjczMjE0
ZmIwLi4xZmY4M2UxMWJjMTc4OWFhYzBmOTAwYzkzZGMyMmZiZjIzOWVhMmJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAKICAgICBp
bnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0QnVm
ZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldENvbG9y
KGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNl
dFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuY3BwCmluZGV4IDA3YjE2N2UwZWVlZTc2ODg3NWIwMzlkZmE1OWY1ZmQxM2M3NTRlMTAuLmQ0
MTU5MDRjNzFiMWMwYzcyYTNlMTdjZjdiMzQ1MjBhYTI3OTAzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAtNDUsMTMgKzQ1LDEzIEBAIFdlYlByZXZp
ZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgU3RyCiAgICAgOiBtX2ZpbGVOYW1lIHsgZmlsZU5hbWUgfQogICAgICwgbV91
dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQotICAgICwgbV9idWZmZXIgeyBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fYnVmZmVyIHsgbWFrZVVuaXF1ZVJlZjxT
aGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KIHsKIH0KIAogV2ViUHJldmlld0xvYWRlckNsaWVudDo6
fldlYlByZXZpZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV2ViUHJldmlld0xv
YWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K3ZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byB3ZWJQYWdlID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShtX3BhZ2VJRCk7CiAgICAgaWYgKCF3ZWJQYWdlKQpA
QCAtNjksMTMgKzY5LDEyIEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNo
TG9hZGluZygpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQ
YWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZl
ci5nZXQoKSk7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlkRmluaXNo
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXItPnRha2UoKS5nZXQo
KSk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCgpCiB7Ci0gICAg
bV9idWZmZXItPmNsZWFyKCk7CisgICAgbV9idWZmZXItPnJlc2V0KCk7CiB9CiAKIHZvaWQgV2Vi
UHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5oCmluZGV4IDA0OTJjZWVjMmY5YjljZDg1MzgzODQ4NGZiYzI2YzA3Y2I1
M2RhODcuLmNjM2IyNGI3MjliMjE4YjgwZDM3YTEyY2Q3ZmFjM2RmYTliZWQxYWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0yOSw4ICsyOSwxMyBAQAogCiAj
aW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IFdlYkZyYW1lOwpAQCAtNDUsNyArNTAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2Vi
UHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcm
IHV0aSwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
RmFpbCgpIG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNTQsNyArNTksNyBAQCBwcml2YXRlOgogICAg
IGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1lOwogICAgIGNvbnN0IFN0cmluZyBtX3V0aTsKICAgICBj
b25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKLSAgICBSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJh
Z0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCBhNjRjNmE4YjNjNjk1ZTE3MzM2NDMzNmJjYjBm
NjhkYmRkOWMyZDIxLi5lMWUwZTYxMTJhMmRlZGMzYjhiYjYzMDk4NTM1Mzc2ZWY0M2FkNTE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBX
ZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgRWxlbWUKIAogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gaW1hZ2Ut
PnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGltYWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBhdXRvIGltYWdl
QnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBzaXplX3QgaW1hZ2VTaXplID0g
aW1hZ2VCdWZmZXItPnNpemUoKTsKIAogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hh
cmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCppbWFnZUJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggOWJkNGNkMmQwY2IxMDNiNDVhYThl
NmMxZDQyN2MwYjE3YmY1ZWQxMy4uZDg4ZjQ0Y2ZjZGU1ZTE1ZjY2YzEyNGI0MGY1YjU0MzViOTQ2
OTdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cApAQCAtMzQwLDEwICszNDAsMTAgQEAgU3RyaW5nIFdlYkZyYW1lOjpzb3VyY2UoKSBjb25zdAog
ICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IG1fY29yZUZyYW1lLT5sb2FkZXIo
KS5hY3RpdmVEb2N1bWVudExvYWRlcigpOwogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3Vy
Y2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVy
LT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2Rl
KG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAg
ICByZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiBT
dHJpbmcgV2ViRnJhbWU6OmNvbnRlbnRzQXNTdHJpbmcoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMWUxOTczYTAzMDhjMTE4NmE3
YTRkMTlkZjVmMjc3MjA1NmZhOTBkZC4uNzhkMGY3ZmNlMGZjMmVhZDM2ZjZjYjc4MzYwNjgzZWZi
MTc3NThlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTE3MzgsNyArMTczOCw3IEBAIE5PX1JFVFVSTiB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1
ZXN0V2FpdGluZ0ZvclByb2Nlc3NMYXVuY2goTG9hZFBhcmFtZXRlcnMmJiwgVVJMCiAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpsb2FkRGF0YUlt
cGwodWludDY0X3QgbmF2aWdhdGlvbklELCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0Rh
dGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHNoYXJlZEJ1ZmZlciwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBj
b25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHN0ZDo6
b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4sIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2Vzc2lv
bkhpc3RvcnlWaXNpYmlsaXR5LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kpCit2b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJz
aXRlUG9saWNpZXMsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHNoYXJlZEJ1ZmZlciwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBj
b25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHN0ZDo6
b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4sIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2Vzc2lv
bkhpc3RvcnlWaXNpYmlsaXR5LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kpCiB7CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQog
ICAgIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiwgJm1fbWFpbkZyYW1lLmdldCgpKTsKQEAgLTE3NTMsNyArMTc1Myw3IEBAIHZvaWQg
V2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkIHNoCiAKICAgICAvLyBMZXQgdGhlIEluamVjdGVkQnVuZGxlIGtub3cg
d2UgYXJlIGFib3V0IHRvIHN0YXJ0IHRoZSBsb2FkLCBwYXNzaW5nIHRoZSB1c2VyIGRhdGEgZnJv
bSB0aGUgVUlQcm9jZXNzCiAgICAgLy8gdG8gYWxsIHRoZSBjbGllbnQgdG8gc2V0IHVwIGFueSBu
ZWVkZWQgc3RhdGUuCi0gICAgbV9sb2FkZXJDbGllbnQtPndpbGxMb2FkRGF0YVJlcXVlc3QoKnRo
aXMsIHJlcXVlc3QsIGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4oc3Vic3RpdHV0ZURhdGEuY29u
dGVudCgpKSwgc3Vic3RpdHV0ZURhdGEubWltZVR5cGUoKSwgc3Vic3RpdHV0ZURhdGEudGV4dEVu
Y29kaW5nKCksIHN1YnN0aXR1dGVEYXRhLmZhaWxpbmdVUkwoKSwgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkp
OworICAgIG1fbG9hZGVyQ2xpZW50LT53aWxsTG9hZERhdGFSZXF1ZXN0KCp0aGlzLCByZXF1ZXN0
LCBjb25zdF9jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPihzdWJzdGl0dXRlRGF0YS5jb250
ZW50KCkpLCBzdWJzdGl0dXRlRGF0YS5taW1lVHlwZSgpLCBzdWJzdGl0dXRlRGF0YS50ZXh0RW5j
b2RpbmcoKSwgc3Vic3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgpLCBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7
CiAKICAgICAvLyBJbml0YXRlIHRoZSBsb2FkIGluIFdlYkNvcmUuCiAgICAgRnJhbWVMb2FkUmVx
dWVzdCBmcmFtZUxvYWRSZXF1ZXN0KCptX21haW5GcmFtZS0+Y29yZUZyYW1lKCksIHJlcXVlc3Qs
IHN1YnN0aXR1dGVEYXRhKTsKQEAgLTM4NTYsNyArMzg1Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0
U291cmNlRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoCiAKIHZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRp
b25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2spCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CiAgICAgICAgIGlmIChQbHVnaW5WaWV3
KiBwbHVnaW5WaWV3ID0gcGx1Z2luVmlld0ZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSkpCiAg
ICAgICAgICAgICBidWZmZXIgPSBwbHVnaW5WaWV3LT5saXZlUmVzb3VyY2VEYXRhKCk7CkBAIC0z
ODcyLDcgKzM4NzIsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1l
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZAogICAgIGNhbGxiYWNrKGRh
dGFSZWZlcmVuY2UpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VE
YXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cmNlVVJMKQorc3RhdGlj
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFt
ZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCiB7CiAgICAgRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwogICAgIGlmICghbG9h
ZGVyKQpAQCAtMzg4Nyw3ICszODg3LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
c291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXIKIAogdm9p
ZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+
JiYgY2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGF1dG8qIGZyYW1l
ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKICAgICAgICAg
VVJMIHJlc291cmNlVVJMKFVSTCgpLCByZXNvdXJjZVVSTFN0cmluZyk7CiAgICAgICAgIGJ1ZmZl
ciA9IHJlc291cmNlRGF0YUZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSwgcmVzb3VyY2VVUkwp
OwpAQCAtNjk3Miw3ICs2OTcyLDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25G
b3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIKICAgICBpZiAo
IWRvY3VtZW50TG9hZGVyKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
IAotICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9u
LCBsb2FkSWRlbnRpZmllci50b0ludGVnZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIChXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGljb25EYXRhKSBt
dXRhYmxlIHsKKyAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihk
ZWNpc2lvbiwgbG9hZElkZW50aWZpZXIudG9JbnRlZ2VyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogaWNvbkRhdGEpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGlj
b25EYXRhIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IDI2MmRlNmE0MmE2OTQ5NTMwMjAxYzcyM2RhZTdlNDUyMmM1NzE2MmEu
Ljc0ZDUyOWZhZjk0NTFiM2I4YjNiOWJiMWZmMDFmY2I1NjUzMWFjMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTIxNiw3ICsyMTYsNyBAQCBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VsZWN0
aW9uRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkdlb21ldHJ5OwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xh
c3MgVGV4dENoZWNraW5nUmVxdWVzdDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKQEAgLTEzOTQs
NyArMTM5NCw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQgZGlk
U3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSk7Ci0gICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsK
KyAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNv
bnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIHJlcXVlc3RQ
YXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAjZW5kaWYK
IApAQCAtMTU5Nyw3ICsxNTk3LDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBzb3VyY2VGb3JG
cmFtZShXZWJGcmFtZSopOwogCi0gICAgdm9pZCBsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdh
dGlvbklELCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9u
YWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
Y29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYsIHN0ZDo6b3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lv
bkhpc3RvcnlWaXNpYmlsaXR5LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cp
OworICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6
U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+JiYsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBjb25zdCBV
UkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbj4sIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9y
eVZpc2liaWxpdHksIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJD
b3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CiAKICAg
ICAvLyBBY3Rpb25zCiAgICAgdm9pZCB0cnlDbG9zZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KaW5kZXggODZlMDRjNTk2MDJkMzM1ZWQ3MmExYzIxYTk5MGFkM2UzZDc2NzY4
NS4uNjY0MjRjZDhhMTM5Zjk5ZmM3Zjk1MmRhMmVlZmQ5NDdmNWYwNjIwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTMy
MTcsNyArMzIxNyw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50
MzJfdCBhY3Rpb24pCiAgICAgICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGRvd25jYXN0
PFJlbmRlckltYWdlPigqZWxlbWVudC5yZW5kZXJlcigpKS5jYWNoZWRJbWFnZSgpOwogICAgICAg
ICBpZiAoIWNhY2hlZEltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsKKyAg
ICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGNhY2hlZEltYWdl
LT5yZXNvdXJjZUJ1ZmZlcigpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNv
cHlCdWZmZXIoKmJ1ZmZlcik7CkBAIC00NjgzLDcgKzQ2ODMsNyBAQCB2b2lkIFdlYlBhZ2U6OmRp
ZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBm
aWxlTmFtZQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU3RhcnRMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShmaWxlTmFtZSwgdXRpKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExvYWRGb3JR
dWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoIWJ1ZmZlci5pc0VtcHR5KCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tCmluZGV4IGUxOGQxMGMzZmM0ZjE4ZDczYTJhNzQwYzUzMzEzMTM0M2ZmMzNjYWYuLmM2MWI4
NTEyYmEzY2ZjYzg5ZTQzNWJmOTQzNDRkZDcyOTE3MjViMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBA
IC0yMjgsMTEgKzIyOCw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNW
aWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBVTlVTRURfUEFSQU0obW9kZSk7CiAjaWYgSEFWRShBVktJVCkKLSNp
ZiBIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCi0gICAgcmV0dXJuIG1vZGUgPT0gSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQ7Ci0jZWxzZQogICAg
IHJldHVybiB0cnVlOwotI2VuZGlmCiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpA
QCAtMjQzLDcgKzIzOSw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNW
aWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAKIGJvb2wgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KCkgY29uc3QK
IHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhSEFWRShVSUtJVF9XRUJLSVRfSU5URVJO
QUxTKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQog
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93
aW4vV2ViUHJvY2Vzc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlBy
b2Nlc3NXaW4uY3BwCmluZGV4IGQzZDM4Y2FjNDEyMTFkN2UyOWI1N2YyNDUyMzY0ZTM3YjQyM2Mz
MWEuLjM3ZjI3ZTk1MmQwNzE3MTEyMWNiNGY1NDg3YThiODRiOWY4YTYzOGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcApAQCAtMjgsNyArMjgs
NyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAotUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1l
KQorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUlu
dG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKaW5kZXggMWY1NTg0
ZmEzODdkNzZjY2U5NGZmN2I1Njk2OGU3ZTgyMjA2MDYwNi4uYTI1NTYwYTEwYzI4ODJlMWFiZDE3
ODQ1Njk0ODZlYTEzZWQ4OTZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJD
b3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9QaW5nSGFuZGxlLmgKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcGluZ0xvYWRDb21wbGV0ZSh7IH0sIHJlc3Bv
bnNlKTsKICAgICB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlKiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50KSBmaW5hbCB7IHBpbmdM
b2FkQ29tcGxldGUoKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZSosIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQp
IGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KICAgICB2b2lkIGRpZEZhaWwoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJv
cikgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKGVycm9yKTsgfQogICAgIGJvb2wgc2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBmaW5hbCB7IHJldHVy
biBtX3Nob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQppbmRleCBlYjM5NDFmMjY2ZGYxM2My
OGE5MDZlZTdkMTYxYWUyMWUxNzU0MDkxLi42MzU1YjZmOTAzMTgwMDU1Y2I2MDdhODBiZTc3MDEz
ODRkODhkZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlL
aXRFeHRlbnNpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtp
dEV4dGVuc2lvbnMubW0KQEAgLTM4OCw3ICszODgsNyBAQCAtIChOU0RhdGEgKilkYXRhUmVwcmVz
ZW50YXRpb246KEJPT0wpcmF3SW1hZ2VEYXRhCiAgICAgYXV0byogZGF0YSA9IHJhd0ltYWdlRGF0
YSA/IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpIDogaW1hZ2UtPmRhdGEoKTsKICAgICBp
ZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGRhdGEtPmNyZWF0ZU5T
RGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopbWltZVR5
cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGEyNTk4ZjMyZmI3NjBhN2Q4ODNjOWY0
Y2VlYzE4Y2Y1OTFlYjhlYWQuLjk1OWQ3NDhiNTZiZTEwNzZiZDk3Nzk5MjJjZDM1NmQyMWE2ODE3
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjQ4LDcgKzI0OCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZW5kSDJQaW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRXhwZWN0ZWQ8U2Vjb25kcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYpIGZpbmFs
OwogCiAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpw
YWlyPFdlYkNvcmU6OkxpbmtJY29uJiwgdWludDY0X3Q+PiYpIGZpbmFsOwotICAgIHZvaWQgZmlu
aXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGZpbmlz
aGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogCiAjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBtX2xvYWRpbmdJY29uIHsgZmFsc2UgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggYjg0OWQyYWFjMmE5M2ZiZWU0MTcyOWYy
NGE4NmNkY2Y2YjFmZTAxOS4uYWEyY2M5ODE0NzRhMTNjZTUwODQ3OTg5NDIzNjg0NDkxYzg4ZjZl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTIwMTIsNyArMjAxMiw3IEBAIFJl
ZlB0cjxXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlUHJldmlld0xvCiAgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9maWxl
UGF0aDsKICAgICAgICAgUmV0YWluUHRyPE5TRmlsZUhhbmRsZT4gbV9maWxlSGFuZGxlOwogCi0g
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikgb3ZlcnJpZGUKICAgICAgICAg
ewogICAgICAgICAgICAgYXV0byBkYXRhQXJyYXkgPSBidWZmZXIuY3JlYXRlTlNEYXRhQXJyYXko
KTsKICAgICAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGRhdGFBcnJheS5nZXQoKSkKQEAg
LTIwOTQsNyArMjA5NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmdldExvYWREZWNp
c2lvbkZvckljb25zKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yCiAgICAgICAgIH0KIAog
ICAgICAgICBtX2xvYWRpbmdJY29uID0gdHJ1ZTsKLSAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRp
ZEdldExvYWREZWNpc2lvbkZvckljb24odHJ1ZSwgaWNvbi0+c2Vjb25kLCBbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYnVmZmVyKSB7
CisgICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUs
IGljb24tPnNlY29uZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmICgh
d2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgZmluaXNoZWRM
b2FkaW5nSWNvbihidWZmZXIpOwpAQCAtMjEzMSw3ICsyMTMxLDcgQEAgc3RhdGljIE5TSW1hZ2Ug
KndlYkdldE5TSW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1NpemUgc2l6ZSkKIH0KICNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZmluaXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGljb25EYXRhKQor
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0YSkKIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBBU1NFUlQobV9sb2FkaW5nSWNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCmluZGV4IDI0YjY5OTcwNmRmMGQ2YjcxOTJhYTUyMDJkZTYxZDhiMWU1NzMyZjkuLjUyN2Zh
NTUyMTkwYmEwMDE0NTE3ZmZkZTczNzcyMGIyZTdhOTBhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBpbnQ2NF90IGFkZFR5
cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShX
ZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
VVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldENvbG9yKGNvbnN0IFdlYkNv
cmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFN0cmluZ0ZvclR5
cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBmYzA3NzZlNjJkNjZi
ZTlhYzkzZDQ4N2RkZmQzMDBhNmQ0MDdjNTUzLi4zOTg2ODU5ZjczMzhlMjg0NTdlZDRiMTkwY2Jh
NjcwNTIyMTAwMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0xNTQsNyAr
MTU0LDcgQEAgaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGMKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRUeXBlcyhwYXN0ZWJvYXJkVHlwZXMpOwogfQogCi1p
bnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZm
ZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQoraW50NjRfdCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
YnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIsIHBh
c3RlYm9hcmRUeXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRGF0YVNvdXJjZS5tbQppbmRleCAyODljMDAyOWJmOTEzNDE4ZDBiMjk5ZjkwYTRkOTcxMTNi
YzU4YTRiLi44M2U4NTkxNDM0NWVhN2NiODQxZDk5ZmQxZmI2NjZkOGNjZjAzMDI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC00
NjAsMTAgKzQ2MCwxMCBAQCAtICh2b2lkKWRlYWxsb2MKIAogLSAoTlNEYXRhICopZGF0YQogewot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1By
aXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJp
dmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFp
blJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gbWFpblJlc291
cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gbWFpblJl
c291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2Uo
KTsKIH0KIAogLSAoaWQgPFdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24+KXJlcHJlc2VudGF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJl
cHJlc2VudGF0aW9uLm1tCmluZGV4IDgwY2QzMGVmNDY3NjBlMTRjOGU2N2E4OGEyNzMzYzlkNDM3
ZmE1ZDkuLjM4ZDdlNTMyZDZlYWEwY2FjMzg4NjJmM2UwZTE2OWZlMjgxMjc3ZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uLm1tCkBAIC0yMzAsNyArMjMwLDcgQEAgLSAoQk9PTCljYW5TYXZlQXNXZWJBcmNoaXZl
CiAtIChOU1N0cmluZyAqKWRvY3VtZW50U291cmNlCiB7CiAgICAgaWYgKFtzZWxmIF9pc0Rpc3Bs
YXlpbmdXZWJBcmNoaXZlXSkgeyAgICAgICAgICAgIAotICAgICAgICBTaGFyZWRCdWZmZXIgKnBh
cnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0t
PnBhcnNlZEFyY2hpdmVEYXRhKCk7CisgICAgICAgIGF1dG8gKnBhcnNlZEFyY2hpdmVEYXRhID0g
W19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRh
KCk7CiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0
YTpwYXJzZWRBcmNoaXZlRGF0YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSA6IG5pbCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQppbmRleCA4MzhlNDEzMzgxYTgwNzVhM2Q2MjQ1OTQ1NTI2N2E1YmJiNTVhOTkxLi4yOGQ4
NzU5MjljY2FjZGI5YTEzODhhODI2YjJmZDVlY2Y0NmVjY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM1NDAsOCArMzU0MCw4IEBA
IHN0YXRpYyBSZXRhaW5QdHI8TlNNZW51SXRlbT4gY3JlYXRlU2hhcmVNZW51SXRlbShjb25zdCBX
ZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoCiAgICAgfQogCiAgICAgaWYgKGF1dG8qIGltYWdlID0g
aGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQotICAgICAgICAgICAgW2l0ZW1zIGFk
ZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0
YVdpdGhCeXRlczpidWZmZXItPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCld
OworICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IGltYWdlLT5kYXRhKCkpCisgICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0
TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5n
ZXQoKV07CiAgICAgfQogCiAgICAgaWYgKCFoaXRUZXN0UmVzdWx0LnNlbGVjdGVkVGV4dCgpLmlz
RW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3Vy
Y2UubW0KaW5kZXggMTIxOThmNDAxZWE4YWQ1NzhkZDdiZGVhY2MwNGRmYjdlMzRhYzczNC4uYWFk
Y2ZiZmVhMzU2YjM3YjBmNTM3OGFmYTg5OGI4ZWE5OWFlNmE3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCkBAIC0xNjMsMjEgKzE2MywyMSBA
QCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWRlY29kZXIKIC0gKHZv
aWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopZW5jb2RlcgogewogICAgIGF1dG8qIHJlc291
cmNlID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS5nZXQoKTsKLSAgICAKLSAgICBOU0RhdGEgKmRh
dGEgPSBuaWw7CisKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogICAgIE5TVVJMICp1cmwg
PSBuaWw7CiAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0gbmlsLCAqdGV4dEVuY29kaW5nID0gbmls
LCAqZnJhbWVOYW1lID0gbmlsOwogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gbmlsOwot
ICAgIAorCiAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0
YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpOworICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEo
KS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgdXJsID0gcmVzb3Vy
Y2UtPnVybCgpOwogICAgICAgICBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlwZSgpOwogICAg
ICAgICB0ZXh0RW5jb2RpbmcgPSByZXNvdXJjZS0+dGV4dEVuY29kaW5nKCk7CiAgICAgICAgIGZy
YW1lTmFtZSA9IHJlc291cmNlLT5mcmFtZU5hbWUoKTsKICAgICAgICAgcmVzcG9uc2UgPSByZXNv
dXJjZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgfQotICAgIFtlbmNvZGVyIGVu
Y29kZU9iamVjdDpkYXRhIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOworICAgIFtlbmNvZGVy
IGVuY29kZU9iamVjdDpkYXRhLmdldCgpIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOwogICAg
IFtlbmNvZGVyIGVuY29kZU9iamVjdDp1cmwgZm9yS2V5OldlYlJlc291cmNlVVJMS2V5XTsKICAg
ICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6bWltZVR5cGUgZm9yS2V5OldlYlJlc291cmNlTUlNRVR5
cGVLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp0ZXh0RW5jb2RpbmcgZm9yS2V5Oldl
YlJlc291cmNlVGV4dEVuY29kaW5nTmFtZUtleV07CkBAIC0yMDIsNyArMjAyLDcgQEAgLSAoTlNE
YXRhICopZGF0YQogCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZVJlc291cmNlKQogICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkuY3Jl
YXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNv
dXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNl
KCk7CiB9CiAKIC0gKE5TVVJMICopVVJMCkBAIC0zNjcsOCArMzY3LDggQEAgLSAoTlNTdHJpbmcg
Kilfc3RyaW5nVmFsdWUKICAgICBpZiAoIWVuY29kaW5nLmlzVmFsaWQoKSkKICAgICAgICAgZW5j
b2RpbmcgPSBXaW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsKICAgICAKLSAgICBTaGFyZWRCdWZmZXIq
IGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291
cmNlLT5kYXRhKCkgOiBudWxscHRyOwotICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+ZGF0YSgpIDogbnVs
bHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOworICAgIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0
ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxscHRyOworICAgIHJldHVybiBlbmNvZGluZy5k
ZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEt
PnNpemUoKSA6IDApOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFT
b3VyY2UuY3BwCmluZGV4IGI0MDczZTEwOGJkNWM3NzBkZDYyYTEwNWFmYjBjY2E5YzRlZjAzOGUu
LjA4OTdjN2MwNTQ4ZDIwYjFlZjQ1ZTM1ZTFiZjhkOGU0MGVhNWQzZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgSFJFU1VM
VCBXZWJEYXRhU291cmNlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkK
ICAgICBpZiAoIW1fbG9hZGVyKQogICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0gICAg
cmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJj
ZURhdGEoKSkuY29weVJlZlRvKHN0cmVhbSk7CisgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3Jl
YXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKS0+bWFrZUNvbnRpZ3VvdXMo
KSkuY29weVJlZlRvKHN0cmVhbSk7CiB9CiAKIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6cmVwcmVz
ZW50YXRpb24oX0NPTV9PdXRwdHJfb3B0XyBJV2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbioqIHJl
cCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAppbmRleCA5MGE1YTBhMTMzNmVlZWJj
OGFmNWNkZWMxYjVjNjIwZTY4MjMxOWI1Li41NThlMTNjN2YxZmRhYTViMTI1ZDIwYmVmZTc5MWEy
N2ZmNzU3MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC01NTksNyAr
NTU5LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZFJlcXVlc3QoX0luX29wdF8gSVdlYlVSTFJl
cXVlc3QqIHJlcXVlc3QpCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLXZvaWQgV2ViRnJhbWU6Omxv
YWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwg
QlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKK3Zv
aWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNl
VVJMLCBCU1RSIGZhaWxpbmdVUkwpCiB7CiAgICAgU3RyaW5nIG1pbWVUeXBlU3RyaW5nKG1pbWVU
eXBlLCBTeXNTdHJpbmdMZW4obWltZVR5cGUpKTsKICAgICBpZiAoIW1pbWVUeXBlKQpAQCAtNTg1
LDIxICs1ODUsMjEgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHQKIAogSFJFU1VMVCBXZWJGcmFt
ZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBf
SW5fIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgX0luXyBCU1RSIHVybCkKIHsKLSAgICBhdXRvIHNo
YXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBzaGFyZWRCdWZmZXI7CiAKICAgICBTVEFUU1RHIHN0YXQ7CiAgICAgaWYgKFNVQ0NFRURF
RChkYXRhLT5TdGF0KCZzdGF0LCBTVEFURkxBR19OT05BTUUpKSkgewogICAgICAgICBpZiAoIXN0
YXQuY2JTaXplLkhpZ2hQYXJ0ICYmIHN0YXQuY2JTaXplLkxvd1BhcnQpIHsKICAgICAgICAgICAg
IFZlY3RvcjxjaGFyPiBkYXRhQnVmZmVyKHN0YXQuY2JTaXplLkxvd1BhcnQpOwogICAgICAgICAg
ICAgVUxPTkcgcmVhZDsKLSAgICAgICAgICAgIC8vIEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVz
cyBjb3B5LCB3b3VsZCBiZSBiZXR0ZXIgdG8gcmVhZCByaWdodCBpbnRvIHRoZSBTaGFyZWRCdWZm
ZXIKKyAgICAgICAgICAgIC8vIEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3Vs
ZCBiZSBiZXR0ZXIgdG8gcmVhZCByaWdodCBpbnRvIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
CiAgICAgICAgICAgICAvLyBvciBhZG9wdCB0aGUgVmVjdG9yIG9yIHNvbWV0aGluZy4KICAgICAg
ICAgICAgIGlmIChTVUNDRUVERUQoZGF0YS0+UmVhZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8VUxPTkc+KGRhdGFCdWZmZXIuc2l6ZSgpKSwgJnJlYWQpKSkKLSAgICAgICAgICAgICAg
ICBzaGFyZWRCdWZmZXItPmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50
PihkYXRhQnVmZmVyLnNpemUoKSkpOworICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci5hcHBl
bmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkp
KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVy
KSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CisgICAgbG9hZERh
dGEoc2hhcmVkQnVmZmVyLnRha2UoKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwg
bnVsbHB0cik7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFt
ZS5oCmluZGV4IDQzNjA1NGZkOWRkYjQ3Y2EzMjk2YjExNzk4MTQzNGVjMTg5N2RhZDEuLmZhOWMz
ODFjYzU3M2JhNmIyMDk4OGVhYjM1MDhlZDlhMzBhOGYxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRnJhbWUuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7
CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiB0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVKU0NvbnRleHQqIEpTQ29udGV4dFJlZjsKQEAgLTE5NSw3
ICsxOTUsNyBAQCBwcml2YXRlOgogICAgIH5XZWJGcmFtZSgpOwogCiAgICAgdm9pZCBsb2FkSFRN
TFN0cmluZyhfSW5fIEJTVFIgc3RyaW5nLCBfSW5fIEJTVFIgYmFzZVVSTCwgX0luXyBCU1RSIHVu
cmVhY2hhYmxlVVJMKTsKLSAgICB2b2lkIGxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJM
LCBCU1RSIGZhaWxpbmdVUkwpOworICAgIHZvaWQgbG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFt
ZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpOwogICAgIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpJbnRSZWN0PiYgY29tcHV0ZVBhZ2VSZWN0cyhIREMgcHJpbnREQyk7CiAgICAgdm9pZCBz
ZXRQcmludGluZyhib29sIHByaW50aW5nLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHBhZ2VT
aXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG9yaWdpbmFsUGFnZVNpemUsIGZsb2F0IG1h
eGltdW1TaHJpbmtSYXRpbywgV2ViQ29yZTo6QWRqdXN0Vmlld1NpemVPck5vdCk7CiAgICAgdm9p
ZCBoZWFkZXJBbmRGb290ZXJIZWlnaHRzKGZsb2F0KiwgZmxvYXQqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRETEwuY3BwCmluZGV4IDk2MjAxOThiNGI1NDBhZTZmNzk2N2Y4MjMzYzk0NjRi
ZDI3NzU4NTEuLjI3NGI3ZDJkNmNmMmViNDcxZDdiOGI4OTY1OWFlNDY5Y2Y5MzRjOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcApAQCAtMTY1LDggKzE2NSw4IEBAIHZvaWQg
c2h1dERvd25XZWJLaXQoKQogfQogCiAvL0ZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgbW92aW5n
IHRoaXMgdG8gYSBuZXcgZmlsZSBmb3IgY3Jvc3MtcHJvamVjdCBmdW5jdGlvbmFsaXR5Ci1XRUJL
SVRfQVBJIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZm
ZXIoY29uc3QgY2hhciogbmFtZSk7Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2Fk
UmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCitXRUJLSVRfQVBJIFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNv
bnN0IGNoYXIqIG5hbWUpOworUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBpbnQgaWRy
OwogICAgIC8vIHRlbXBvcmFyeSBoYWNrIHRvIGdldCByZXNvdXJjZSBpZApkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQ4NjhkMmUyMzY1ZmVlNzUx
MDQxZjQ0ZmYzZTY0MGZjMGRiYWRiYWQuLjk1MWZmYTc2YmJlMzhkMWMyYjIyZTgxOWE4NmM0YTc0
OTBlNjBkY2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1NCBAQAorMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVy
IGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0
IDMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1No
YXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6cmVhZEFsbENodW5rcyk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0OjpUZWFyRG93bik6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaDoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNw
cDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVm
ZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNwcDoKKyAgICAgICAgKGxvYWRSZXNvdXJj
ZUludG9CdWZmZXIpOgorCisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICBy
ZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgQVBJIHRlc3RzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
X0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRC
dWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCisyMDIxLTExLTI1
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vp
c2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1
YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVk
QnVmZmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMi0w
MiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIENvbXBpbGF0
aW9uIGVycm9yIG9uIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVz
aERhZW1vbi5tbQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmls
ZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNw
cAppbmRleCA4NTgzYjI5YWQ5OTBjMjJiNDcyYzg2OWVjY2Q4NjgyOTYyMWJiMGI0Li5iODQ3ZDNh
ODI2YjNkOWZmYzA4ZjZmM2JlMzgyNjBhNmM1OWRmZjJhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgdm9p
ZCBjcmVhdGVUZXN0RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGZpbGVIYW5kbGUpOwogfTsKIAotLy8gRklYTUU6IFJlZmFjdG9yIEZpbGVTeXN0ZW1U
ZXN0IGFuZCBTaGFyZWRCdWZmZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgorLy8gRklYTUU6IFJl
ZmFjdG9yIEZpbGVTeXN0ZW1UZXN0IGFuZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCBhcyBh
IHNpbmdsZSBjbGFzcy4KIGNsYXNzIEZpbGVTeXN0ZW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgewogcHVibGljOgogICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCmluZGV4
IGI5ODZhMmE1ODg4NDY1YmUxOTIwYTZlMDY2OGQ3MGRiMjQ5MDZlYWIuLmFiNDcyZTUwYjgzNTc0
YzMwMTgyNWRiYmVlZjk5ODNmMmY0MWQyMmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKQEAgLTE5OCw3ICsxOTgs
NyBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQpCiAgICAgICAgICAg
ICByZXR1cm4geyBnbG9iYWxCdWZmZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVtQnVmZmVyLCBnbG9i
YWxJdGVtQnVmZmVyQ2FwYWNpdHkgfTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJiBkaXNw
bGF5TGlzdEl0ZW0pIGNvbnN0IGZpbmFsCisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgZGlzcGxh
eUxpc3RJdGVtKSBjb25zdCBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIGluZGV4
ID0gbV9pdGVtcy5zaXplKCk7CiAgICAgICAgICAgICBtX2l0ZW1zLmFwcGVuZChzdGQ6OmdldDxT
dHJva2VQYXRoPihkaXNwbGF5TGlzdEl0ZW0pKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZGRiZmMxZjJiMTgyMWNiMWRm
YWJjOGUyZjYzMjdiMjEyYzdjYTQ2OC4uYzZhYTE2MzdjZGQwOWEwNzA0YWY5NGU5NDYyYjgwMmUw
NjdmMGYxNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1No
YXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1No
YXJlZEJ1ZmZlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTQxLDgwICs0MSw3
MyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5n
RmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRl
bnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGlu
Z19maWxlIikpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGlu
Z19maWxlIikpOwogICAgIEFTU0VSVF9OVUxMKGJ1ZmZlcik7CiB9CiAKLVRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKK1RFU1RfRihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUp
CiB7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVM
TChidWZmZXIpOwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxlbihTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShT
dHJpbmcoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAot
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0
eUZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250
ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5Rmls
ZVBhdGgoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkp
OwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+
aXNFbXB0eSgpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVh
dGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChi
dWZmZXIpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvcHkgPSBidWZmZXItPmNvcHkoKTsK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY29weSA9IGJ1ZmZlci0+Y29weSgp
OwogICAgIEVYUEVDVF9HVChidWZmZXItPnNpemUoKSwgMFUpOwogICAgIEVYUEVDVF9UUlVFKGJ1
ZmZlci0+c2l6ZSgpID09IGNvcHktPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChi
dWZmZXItPmRhdGEoKSwgY29weS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVD
VF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNs
ZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQorVEVTVF9GKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZF
eGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFT
U0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKLSAgICBFWFBFQ1Rf
VFJVRSghYnVmZmVyLT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPmRhdGEoKSk7
Ci19Ci0KLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENv
bnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCi17Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkp
OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJU
X05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5hcHBlbmQoImEiLCAxKTsKLSAgICBFWFBF
Q1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3RE
YXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+ZGF0YSgpW3N0cmxlbihTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgqYnVmZmVyKTsKKyAgICBidWlsZGVyLmFwcGVuZCgi
YSIsIDEpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuc2l6ZSgpID09IChzdHJsZW4oRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOworICAgIEVYUEVDVF9UUlVF
KCFtZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0
KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlD
cmVhdGVBcnJheUJ1ZmZlcikKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgdHJ5
Q3JlYXRlQXJyYXlCdWZmZXIpCiB7CiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CiAg
ICAgY2hhciB0ZXN0RGF0YTFbXSA9ICJXb3JsZCI7CiAgICAgY2hhciB0ZXN0RGF0YTJbXSA9ICJH
b29kYnllIjsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKLSAgICBzaGFyZWRC
dWZmZXItPmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKLSAgICBzaGFyZWRC
dWZmZXItPmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKLSAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcih0ZXN0RGF0YTAsIHN0cmxl
bih0ZXN0RGF0YTApKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0
RGF0YTEpKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIp
KTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBjaGFyIGV4cGVjdGVkQ29uY2F0ZW5hdGlvbltd
ID0gIkhlbGxvV29ybGRHb29kYnllIjsKICAgICBBU1NFUlRfRVEoc3RybGVuKGV4cGVjdGVkQ29u
Y2F0ZW5hdGlvbiksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIEVYUEVDVF9FUSgw
LCBtZW1jbXAoZXhwZWN0ZWRDb25jYXRlbmF0aW9uLCBhcnJheUJ1ZmZlci0+ZGF0YSgpLCBzdHJs
ZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQorVEVTVF9GKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiB7CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjAoMHg0MDAwLCAnYScpOwogICAgIFZlY3Rvcjx1aW50
OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMigw
eDQwMDAsICdjJyk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcjApKTsKLSAgICBzaGFyZWRCdWZmZXIt
PmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZN
b3ZlKHZlY3RvcjIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hh
cmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcihXVEZNb3ZlKHZlY3RvcjApKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3Zl
KHZlY3RvcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKKyAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKTsKICAgICBBU1NFUlRfRVEoMHg0MDAwVSArIDB4NDAwMFUgKyAweDQwMDBV
LCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBpbnQgcG9zaXRpb24gPSAwOwogICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgMHg0MDAwOyArK2kpIHsKQEAgLTEzMSw3ICsxMjQsNyBAQCBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRz
KQogICAgIH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCitURVNUX0YoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiB7CiAgICAgY2hhciB0ZXN0RGF0YVtdID0g
IkhhYml0YXNzZSBpbnRlZ2VyIGVyb3MgdGluY2lkdW50IGEgc2NlbGVyaXNxdWUhIEVuaW0gZWxp
dD8gU2NlbGVyaXNxdWUgbWFnbmlzLCIKICAgICAiZXQgbW9udGVzIHVsdHJpY2VzIHRyaXN0aXF1
ZSBhISBQaWQuIFZlbGl0IHR1cnBpcywgZGFwaWJ1cyBpbnRlZ2VyIHJob25jdXMgc29jaWlzIGFt
ZXQgZmFjaWxpc2lzLCIKQEAgLTE1MSwxNyArMTQ0LDUzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjb3B5KQogICAgICJtYXR0aXMgZGlnbmlzc2ltIG1hc3NhIGFjIHB1bHZpbmFyIHVybmEs
IG51bmMgdXQuIFNhZ2l0dGlzLCBhbGlxdWV0IHBlbmF0aWJ1cyBwcm9pbiBsb3JlbSwgcHVsdmlu
YXIgbGVjdHVzLCIKICAgICAiYXVndWUgcHJvaW4hIEFjLCBhcmN1IHF1aXMuIFBsYWNlcmF0IGhh
Yml0YXNzZSwgcmlkaWN1bHVzIHJpZGljdWx1cy4iOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0
cmxlbih0ZXN0RGF0YSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVy
LT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVz
dERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0
aCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YSwgbGVuZ3RoKTsK
KyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBw
ZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVu
Z3RoKTsKICAgICAvLyBzaGFyZWRCdWZmZXIgbXVzdCBjb250YWluIGRhdGEgbW9yZSB0aGFuIHNl
Z21lbnRTaXplICg9IDB4MTAwMCkgdG8gY2hlY2sgY29weSgpLgotICAgIEFTU0VSVF9FUShsZW5n
dGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Y2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwg
Y2xvbmUtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDAsIG1lbWNtcChjbG9uZS0+ZGF0YSgpLCBz
aGFyZWRCdWZmZXItPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwotICAgIGNsb25lLT5hcHBlbmQo
dGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXpl
KCkpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBidWlsZGVyMS5zaXplKCkpOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjbG9uZSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAg
ICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDAs
IG1lbWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWlsZGVyMS5nZXQoKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CisKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIGJ1aWxkZXIyLmFwcGVuZCgqY2xvbmUpOworICAg
IGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3Ro
ICogNSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIyLnRha2Uo
KTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNSwgYnVmZmVyLT5zaXplKCkpOworICAgIC8vIGJ1
aWxkZXIgaXMgbm93IGVtcHR5LgorICAgIEVYUEVDVF9FUSgwVSwgYnVpbGRlcjIuc2l6ZSgpKTsK
KyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVp
bGRlcjIuaXNFbXB0eSgpKTsKK30KKworVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0
LCBidWlsZGVyKQoreworICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVp
bGRlcjEuaXNFbXB0eSgpKTsKKyAgICBhdXRvIGNvcHkgPSBidWlsZGVyMS5jb3B5KCk7CisgICAg
YXV0byBidWZmZXIgPSBidWlsZGVyMS50YWtlKCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEu
aXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgRVhQ
RUNUX05FKGNvcHkucHRyKCksIGJ1ZmZlci5wdHIoKSk7IC8vIFdlIGhhdmUgZGlmZmVyZW50IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIKKyAgICBFWFBFQ1RfRVEoY29weS5nZXQoKSwgYnVmZmVyLmdl
dCgpKTsgLy8gQnV0IHRoZWlyIGNvbnRlbnQgaXMgaWRlbnRpY2FsCisKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsK
KyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmFwcGVu
ZCh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRl
cjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAg
IGJ1aWxkZXIyLnJlc2V0KCk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOwor
ICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuZW1wdHko
KTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVF
KGJ1aWxkZXIyLmlzRW1wdHkoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhciogZXhwZWN0
ZWQpCkBAIC0xNzMsNzAgKzIwMiw4MCBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1
aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAgICAgICAg
IEVYUEVDVF9FUShidWZmZXJbaV0sIGV4cGVjdGVkW2ldKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIGdldFNvbWVEYXRhKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0
LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7J2EnLCAnYicsICdj
JywgJ2QnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7J2UnLCAnZicsICdnJywgJ2gnfTsK
LSAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaicsICdrJywgJ2wnfTsKLSAgICAKLSAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBl
bmQoV1RGTW92ZShzMSkpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczIpKTsKLSAgICBi
dWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geyAn
YScsICdiJywgJ2MnLCAnZCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7ICdlJywgJ2Yn
LCAnZycsICdoJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsgJ2knLCAnaicsICdrJywg
J2wnIH07CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5h
cHBlbmQoV1RGTW92ZShzMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczIpKTsKKyAg
ICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVy
LnRha2UoKTsKICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZmZXItPmdldFNvbWVEYXRhKDApOwot
ICAgIGF1dG8gZ2ggPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2gxID0gYnVm
ZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBidWZmZXItPmdldFNvbWVEYXRhKDcp
OwogICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoOCk7CiAgICAgYXV0byBrbCA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTApOwotICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gYnVmZmVy
LT5kYXRhKCk7Ci0gICAgYXV0byBnaGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAg
IGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBh
dXRvIGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKTsKKyAgICBhdXRvIGdo
MiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaGlqa2wgPSBjb250aWd1b3Vz
QnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwgPSBidWZmZXItPmdldFNvbWVEYXRh
KDExKTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwgYWJjZC5zaXplKCksICJhYmNkIik7
Ci0gICAgY2hlY2tCdWZmZXIoZ2guZGF0YSgpLCBnaC5zaXplKCksICJnaCIpOworICAgIGNoZWNr
QnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGgu
ZGF0YSgpLCBoLnNpemUoKSwgImgiKTsKICAgICBjaGVja0J1ZmZlcihpamtsLmRhdGEoKSwgaWpr
bC5zaXplKCksICJpamtsIik7CiAgICAgY2hlY2tCdWZmZXIoa2wuZGF0YSgpLCBrbC5zaXplKCks
ICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWprbCwgYnVmZmVyLT5zaXplKCksICJh
YmNkZWZnaGlqa2wiKTsKKyAgICBjaGVja0J1ZmZlcihnaDIuZGF0YSgpLCBnaDIuc2l6ZSgpLCAi
Z2giKTsKICAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgpLCBnaGlqa2wuc2l6ZSgpLCAiZ2hp
amtsIik7CisgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdoMi5zaXplKCkpOworICAgIGNoZWNr
QnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5kYXRhQXNDaGFyUHRyKCkpOwogICAg
IGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKIH0KIAotVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVz
dCwgaXNFcXVhbFRvKQogewogICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9y
PHVpbnQ4X3Q+PiYmIGNvbnRlbnRzKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAg
ICAgICBmb3IgKGF1dG8mIGNvbnRlbnQgOiBjb250ZW50cykKLSAgICAgICAgICAgIGJ1ZmZlci0+
YXBwZW5kKFdURk1vdmUoY29udGVudCkpOwotICAgICAgICByZXR1cm4gYnVmZmVyOworICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7CisgICAgICAgIHJldHVybiBi
dWlsZGVyLnRha2UoKTsKICAgICB9OwotICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3sn
YScsICdiJywgJ2MnLCAnZCd9fSk7CisgICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsg
J2EnLCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1
ZmZlcjEuZ2V0KCkpOwogCi0gICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2En
LCAnYicsICdjJywgJ2QnfSkpOwotICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVm
ZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwot
ICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQo
KSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBF
Q1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAn
YicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319
KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUo
bWFrZUJ1ZmZlcih7eydhJ30sIHsnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7J2En
fX0pLmdldCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RGTW92ZShidWZm
ZXIxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsgJ2EnLCAnYicsICdj
JywgJ2QnIH0pKTsKKyAgICBFWFBFQ1RfRVEoKmJ1aWxkZXIuZ2V0KCksIG1ha2VCdWZmZXIoeyB7
ICdhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworCisg
ICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJywgJ2MnIH0sIHsgJ2QnIH0g
fSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0sIHsgJ2MnLCAnZCcgfSB9KS5nZXQo
KSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1h
a2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1h
a2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdiJywgJ2Mn
IH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicg
fSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2EnIH0gfSkuZ2V0KCkpOwogfQog
Ci1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCitURVNUX0YoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQogewogICAgIFZlY3Rvcjx1aW50OF90PiB0
MSA9IHsweDExLCAweDUsIDB4MTJ9OwotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHQxKSk7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodDEpKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIFN0cmluZyByZXN1bHQgPSBidWZm
ZXItPnRvSGV4U3RyaW5nKCk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdCwgIjExMDUxMiIpOwotICAg
IGJ1ZmZlci0+Y2xlYXIoKTsKKyAgICBidWlsZGVyLnJlc2V0KCk7CisgICAgYnVmZmVyID0gYnVp
bGRlci50YWtlKCk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlci0+dG9IZXhTdHJpbmcoKSwgIiIpOwog
fQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKK1RFU1RfRihGcmFnbWVudGVkU2hh
cmVkQnVmZmVyVGVzdCwgcmVhZCkKIHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0
ID0gIlRoaXMgaXMgYSBzaW1wbGUgdGVzdC4iOwogCi0gICAgYXV0byBjaGVjayA9IFtdKFNoYXJl
ZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YSA9IHNoYXJlZEJ1ZmZlci5yZWFkKDQsIDMpOwogICAgICAgICBFWFBFQ1RfRVEoZGF0YS5zaXpl
KCksIDN1KTsKICAgICAgICAgRVhQRUNUX0VRKFN0cmluZyhkYXRhLmRhdGEoKSwgMyksICIgaXMi
KTsKQEAgLTI0OSwxNiArMjg4LDE3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQog
ICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwg
c3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwogCi0gICAgc2hh
cmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXI7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4
dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEp
OwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1w
bGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisgICAgRVhQRUNUX1RS
VUUoYnVpbGRlci5pc051bGwoKSAmJiAhYnVpbGRlcik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIu
c2l6ZSgpLCAwdSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIp
Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBF
WFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAg
Y2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRb
aV0sIDIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQp
KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKICNpZiBFTkFCTEUoTUhUTUwpCkBA
IC0yNjYsNyArMzA2LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiB0ZW1wbGF0
ZTwgdHlwZW5hbWUgVCwgc2l6ZV90IE4gPgogY29uc3RleHByIHNpemVfdCBhcnJheXNpemUoIGNv
bnN0IFQgKCYpW05dICkgeyByZXR1cm4gTjsgfQogCi1zdGF0aWMgdm9pZCByZWFkQWxsQ2h1bmtz
KHN0ZDo6dmVjdG9yPFN0cmluZz4qIGNodW5rcywgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgc2VwYXJhdG9yID0gIlxyXG4iLCBib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxz
ZSkKK3N0YXRpYyB2b2lkIHJlYWRBbGxDaHVua3Moc3RkOjp2ZWN0b3I8U3RyaW5nPiogY2h1bmtz
LCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgc2VwYXJhdG9y
ID0gIlxyXG4iLCBib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSkKIHsKICAgICBTaGFyZWRC
dWZmZXJDaHVua1JlYWRlciBjaHVua1JlYWRlcigmYnVmZmVyLCBzZXBhcmF0b3IudXRmOCgpLmRh
dGEoKSk7CiAgICAgU3RyaW5nIGNodW5rID0gY2h1bmtSZWFkZXIubmV4dENodW5rQXNVVEY4U3Ry
aW5nV2l0aExhdGluMUZhbGxiYWNrKGluY2x1ZGVTZXBhcmF0b3IpOwpAQCAtMjk5LDcgKzMzOSw3
IEBAIHN0YXRpYyB2b2lkIGNoZWNrRGF0YUluUmFuZ2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBk
YXRhLCBzaXplX3Qgc3RhcnQsIHNpemVfdCBsCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlclRlc3QsIGluY2x1ZGVTZXBhcmF0b3IpCiB7Ci0gICAgYXV0byBjaGVjayA9IFtdKFNoYXJl
ZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlciBjaHVua1JlYWRlcigmc2hhcmVkQnVmZmVyLCAiXHgxMFx4MTFceDEyIik7CiAgICAgICAg
IFZlY3Rvcjx1aW50OF90PiBvdXQ7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNodW5rUmVhZGVyLm5l
eHRDaHVuayhvdXQpKTsKQEAgLTMyOCw3ICszNjgsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKIHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVU
ZXh0ID0gIlRoaXMgaXMgYSBzaW1wbGUgdGVzdC4iOwogCi0gICAgYXV0byBjaGVjayA9IFtdKFNo
YXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlciBjaHVua1JlYWRlcigmc2hhcmVkQnVmZmVyLCAiaXMiKTsKIAogICAgICAgICBTdHJp
bmcgY2h1bmsgPSBjaHVua1JlYWRlci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFs
bGJhY2soKTsKQEAgLTM3Myw3ICs0MTMsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXJUZXN0LCBwZWVrRGF0YSkKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJl
YWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKIHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1w
bGVUZXh0ID0gIlRoaXMgaXMgdGhlIG1vc3QgcmlkaWN1bG91cyBoaXN0b3J5IHRoZXJlIGlzLiI7
Ci0gICAgYXV0byBjaGVjayA9IFtdKFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAg
YXV0byBjaGVjayA9IFtdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewog
ICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5rczsKICAgICAgICAgY29uc3QgY2hhciog
Y29uc3QgZXhwZWN0ZWRDaHVua3MxV2l0aG91dFNlcGFyYXRvcltdID0geyAiVGgiLCAicyAiLCAi
cyB0aGUgbW9zdCByIiwgImQiLCAiY3Vsb3VzIGgiLCAic3RvcnkgdGhlcmUgIiwgInMuIiB9Owog
ICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImkiKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0
LmNwcAppbmRleCA5YjhiMTNhNzVkNTJmZjk1MWVhZDE4MTg1ZDU2YzM3OTFiMmQ3YmVkLi5kMDM0
MWE4MWRlZGE3MTlmMzVmY2NlMzk0NjU1ZWMyNTVhYjhmYmI2IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCkBAIC0z
MSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotdm9pZCBTaGFyZWRC
dWZmZXJUZXN0OjpTZXRVcCgpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0OjpTZXRV
cCgpCiB7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogCkBAIC00NSw3ICs0NSw3
IEBAIHZvaWQgU2hhcmVkQnVmZmVyVGVzdDo6U2V0VXAoKQogICAgIEZpbGVTeXN0ZW06OmNsb3Nl
RmlsZShoYW5kbGUpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlRlYXJEb3duKCkKK3Zv
aWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OlRlYXJEb3duKCkKIHsKICAgICBGaWxlU3lz
dGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsKICAgICBGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKG1fdGVtcEVtcHR5RmlsZVBhdGgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmgKaW5kZXggNjQwMTE5YmRlNmZjZTQxZjAx
ZWFhYjYzMTY4NDdiZTU2YjkwY2Y1Yy4uYTM5MmEwNTE5NDc1NmQyYWQ1NmU4MjQ5MjllY2U0YzE1
ZjNhZDA1NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1No
YXJlZEJ1ZmZlclRlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyVGVzdC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgewogcHVibGljOgogICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZTsKICAgICB2b2lkIFRlYXJE
b3duKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCmluZGV4IGQ4NDZjMDI1ZTBkY2Q4
Y2E4MjliNzEyNzNkYWYxZjcwN2U5ZDkyZGQuLmFmZWFhMWUxYTE4ZWE4MmJlMWFiNjMzMmI4MzFi
MjZmNjQwMTgzZjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHsgZ2xvYmFsQnVmZmVySWRlbnRpZmllciwgZ2xvYmFs
SXRlbUJ1ZmZlciwgZ2xvYmFsSXRlbUJ1ZmZlckNhcGFjaXR5IH07CiAgICAgfQogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0
ZW0mKSBjb25zdCBmaW5hbAorICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBlbmNv
ZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0IGZpbmFsCiAgICAg
ewogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVy
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZl
ci5tbQppbmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2OGNmYjE4ODVkNGViMTEwLi5jM2I1
ZDNlOGQ3YzAzYjFhMzY1ZGQ1MzVhMGIyOWFkZTI3YWNlY2E4IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00NSwxOSArNDUsMjAgQEAgc3RhdGljIHZvaWQgZXhwZWN0RGF0YUFycmF5c0VxdWFsKE5TQXJy
YXk8TlNEYXRhICo+ICpleHBlY3RlZCwgTlNBcnJheTxOU0RhdGEgKj4KICAgICB9CiB9CiAKLVRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKK1RFU1RfRihGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCiB7CiAgICAgQGF1dG9yZWxl
YXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
LSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVmZmVyLT5jcmVhdGVOU0RhdGFB
cnJheSgpLmdldCgpKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAg
ICAgICBidWlsZGVyLmVtcHR5KCk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWws
IGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5T
RGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3RoOjVd
OwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBo
ZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxv
RGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWls
ZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3Ro
KTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWlsZGVy
LmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKndv
cmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAg
ICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwotICAgICAg
ICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVmZmVy
LT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9f
YnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1
YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRh
QXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxv
RGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBd
LCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNy
ZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwpAQCAtNjYsMzUgKzY3LDM1IEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKICAgICB9CiB9CiAKLVRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKK1RFU1RfRihGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQpCiB7CiAgICAg
QGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogCiAgICAgICAg
IE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3Ro
OjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVz
LCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNoYXIq
KWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CiAKICAgICAgICAgTlNEYXRhICp3
b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAg
ICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwogCiAgICAg
ICAgIE5TQXJyYXkgKmV4cGVjdGVkRGF0YSA9IEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF07CiAg
ICAgICAgIE5TVUludGVnZXIgZXhwZWN0ZWRTaXplID0gaGVsbG9EYXRhLmxlbmd0aCArIHdvcmxk
RGF0YS5sZW5ndGg7CiAKICAgICAgICAgTlNVSW50ZWdlciBzZWdtZW50Q291bnQgPSAwOwotICAg
ICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBidWZmZXIuZ2V0KCkpCisgICAgICAgIGZvciAoYXV0
byYgc2VnbWVudCA6ICpidWlsZGVyLmdldCgpKQogICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3Nl
Z21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFb
c2VnbWVudENvdW50KytdXSk7CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQs
IHNlZ21lbnRDb3VudCk7CiAKICAgICAgICAgTlNVSW50ZWdlciBwb3NpdGlvbiA9IDA7CiAgICAg
ICAgIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIHdoaWxlIChidWZmZXItPnNpemUoKSA+IHBv
c2l0aW9uKSB7Ci0gICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1ZmZlci0+Z2V0
U29tZURhdGEocG9zaXRpb24pOworICAgICAgICB3aGlsZSAoYnVpbGRlci5zaXplKCkgPiBwb3Np
dGlvbikgeworICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRhbERhdGEgPSBidWlsZGVyLmdldCgp
LT5nZXRTb21lRGF0YShwb3NpdGlvbik7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbaW5jcmVt
ZW50YWxEYXRhLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21l
bnRDb3VudCsrXV0pOwogICAgICAgICAgICAgcG9zaXRpb24gKz0gaW5jcmVtZW50YWxEYXRhLnNp
emUoKTsKICAgICAgICAgfQogICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBz
ZWdtZW50Q291bnQpOwogCi0gICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWZmZXItPmdldFNvbWVE
YXRhKGV4cGVjdGVkU2l6ZSAtIDEpOworICAgICAgICBhdXRvIGxhc3RCeXRlID0gYnVpbGRlci5n
ZXQoKS0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CiAgICAgICAgIEVYUEVDVF9UUlVF
KFtsYXN0Qnl0ZS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOltAImQiIGRhdGFVc2luZ0Vu
Y29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ11dKTsKICAgICAgICAgRVhQRUNUX0VRKDFMVSwg
bGFzdEJ5dGUuc2l6ZSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RX
ZWJDb3JlU3R1YnMuY3BwCmluZGV4IDQ2Yzc2MjAzZTFiMjVhYWFiN2EwMmUwYmIyYmY1ZTBjNDM2
ZWQ2ODcuLjViZTY2NTk0NjEzNzMxZTIxZWQ5N2RhNzRjNTczOGM3Y2EyODViZjQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwCkBAIC0yNSw3ICsyNSw3
IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCi1SZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKQorUmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZm
ZXIoY29uc3QgY2hhciopCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDg5MjM5MmQ4N2Y3NDAwZWJmYTk4ZjVhODY1M2M5ZmQ0ZTI3NTVmNTkuLjcwODBhNmNmN2E2
ZDIyMDBhZTMwM2MyMmNlNzMxMTkxMGRkYWExZjIgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVz
dHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMjEtMTItMDIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250
aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eTogcGFydCAzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERlY29kZXJUZXN0L0RlY29k
ZXJUZXN0L21haW4ubW06CisgICAgICAgIChtYWluKToKKwogMjAyMS0xMS0yMSAgQ2F0aGllIENo
ZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1BlcmZvcm1hbmNlIHRlc3Rd
W2Nzcy1jb250YWluXSBBZGQgY2FzZSB0byB0ZXN0IGNvbnRhaW46IGxheW91dCBpbnNpZGUgYSBj
b21wbGV4IGRvY3VtZW50Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445929</attachid>
            <date>2021-12-03 17:16:34 -0800</date>
            <delta_ts>2021-12-03 20:26:20 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233677-20211204121628.patch</filename>
            <type>text/plain</type>
            <size>781836</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NDU3MTFkMDYzOTg2NGIyMzgzZGM1YmIwMjkxMzQ1NTRhNzZmMmQ4Li4yNDcyMmVkYjE2YWFiOGIw
ZjZjZTQ0ZGNiNThlYTkzMzAyNDdmNmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIHJlbmFtZSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZl
cgorICAgICAgICBOZWVkIHRoZSBidWcgVVJMIChPT1BTISkuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcmVuYW1lIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIgdG8gU2hhcmVkQnVmZmVyCisKKyAgICAgICAgcmVuYW1lIFNoYXJlZEJ1ZmZlciB0byBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMzY3NworCisgICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgor
CisyMDIxLTEyLTAyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91
cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHk6IHBhcnQgMworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmg6
CisKIDIwMjEtMTItMDIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbSlNDXSBzaGVsbCdzICQuZ2xvYmFsT2JqZWN0Rm9yIGlzIG5vdCBzYWZlIGZvciBub24g
b2JqZWN0IGNlbGxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNkMGM4ZDg4OTA4MTAwYjAyODFhMDU5M2VhOGE0
YzEzYWE1MDc0Mi4uMThjMWIwODY5Y2M3ZTg4NGMzMmQ3OWU2NzNhMzYzY2RmYmIyMWMwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEwMDMgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJk
ICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcK
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBT
aGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVz
LgorCisgICAgICAgIFJlbmFtZSBvbmx5LCBubyBjaGFuZ2UgaW4gYmVoYXZpb3VyLgorCisgICAg
ICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmg6
CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAg
ICogTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBN
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6CisgICAg
ICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oOgorICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50Lmg6Cisg
ICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAg
ICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAg
ICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmg6CisgICAgICAgICogTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlzLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hM
b2FkZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodC5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5jcHA6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhLmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5j
cHA6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcDoK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcDoKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmg6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBkb20v
RGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oOgorICAgICAg
ICAqIGVkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcDoKKyAgICAgICAgKiBl
ZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oOgorICAgICAgICAqIGVkaXRpbmcv
Y29jb2EvRWRpdG9yQ29jb2EubW06CisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVy
dGVyLm1tOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1t
OgorICAgICAgICAqIGVkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwOgorICAgICAg
ICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoK
KyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwOgorICAgICAgICAqIGZpbGVh
cGkvTmV0d29ya1NlbmRRdWV1ZS5oOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1l
bnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAg
ICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5j
cHA6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIu
Y3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIu
aDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvTG9hZGVyU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwOgor
ICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaDoKKyAgICAgICAg
KiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
ICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnN0aXR1
dGVEYXRhLmg6CisgICAgICAgICogbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hp
dmUvQXJjaGl2ZUZhY3RvcnkuY3BwOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVG
YWN0b3J5Lmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBs
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIv
YXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxBcmNoaXZlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTEFyY2hpdmUuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNl
ci5jcHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnQuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRTY3JpcHQuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5o
OgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAg
ICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVy
L2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxp
emVyLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmg6CisgICAgICAgICogcGFn
ZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YVJlYWRlci5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Ob3dQbGF5
aW5nTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJk
Q3VzdG9tRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRm
b3JtQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2Fy
ZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclBy
b3ZpZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vU3RhdGljUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL05vd1BsYXlp
bmdJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVy
Q29jb2EuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW06CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NoYXJlZEJ1
ZmZlckNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3Rh
bmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNz
aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmlj
L0tleWVkRW5jb2RlckdlbmVyaWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5j
b2RlckdsaWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rl
ci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TW9kZWwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpD
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1t
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdl
YlNvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRh
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhE
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBl
cy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0
aWVzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0
aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VmVydGljYWxEYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0
V3JpdGVVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9T
ZWxlY3Rpb25EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
YXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMElt
YWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BO
R0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2Vi
cC9XRUJQSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVi
b2FyZElPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9T
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9E
YXRhVVJMRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9y
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lv
bi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lv
bi5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vd2luL1No
YXJlZEJ1ZmZlcldpbi5jcHA6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6
CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oOgorICAgICAgICAqIHRlc3Rpbmcv
TW9ja0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5oOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3Nv
ckxpYnhzbHQuY3BwOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcDoKKworMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjov
Lzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVyLCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkg
YmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAgICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hh
cmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxlIG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHkt
Qnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBjb25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdo
ZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBkbyBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9i
c2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAg
ICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNo
ZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNv
bnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjph
cHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6
ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0
YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNl
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6Cisg
ICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92
ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2Rl
RGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
Lmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXI6OnJlc291cmNlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1
YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJl
c291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VO
ZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Zmlu
aXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZv
bnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6
OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGlu
Zyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
VGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0
VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6
OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRl
ci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5
UHJldmlld0xvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6
OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAg
ICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
QnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjppc051bGwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1
aWxkZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVt
cHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2Fk
ZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0
YTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmll
d0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VS
ZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBl
Y3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YSk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZm
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAg
ICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZm
ZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xh
dGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkg
Y29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5n
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVl
c3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1M
SHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0
dHBSZXF1ZXN0Lmg6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9t
IG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJk
YXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdoZW4gY2FsbGluZyBTaGFyZWRCdWZmZXI6OmRhdGEoKSB0aGUgdW5kZXJseWluZyBk
YXRhIHdhcyBmbGF0dGVuZWQsCisgICAgICAgIGFuZCBzbyBjb3VsZCBiZSBtdXRhdGVkIHdoaWxl
IGJlaW5nIHNoYXJlZC4gVGhpcyB3YXMgYW4gdW5kZXNpcmFibGUKKyAgICAgICAgYmVoYXZpb3Vy
LgorICAgICAgICBXZSBpbnRyb2R1Y2UgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB3aGljaCBndWFy
YW50ZWUgdGhhdCBpdHMgY29udGVudCBpcyBtYWRlCisgICAgICAgIG9mIGNvbnRpZ3VvdXMgZGF0
YS4KKyAgICAgICAgQWxsIG1ldGhvZHMgdGhhdCB3b3VsZCBoYXZlIG11dGF0ZWQgYSBTaGFyZWRC
dWZmZXIgd2hlbiBiZWluZyBmbGF0dGVuZWQgYXJlCisgICAgICAgIG1vdmVkIHRvIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIuCisKKyAgICAgICAgQXJlYSB3aGVyZSBTaGFyZWRCdWZmZXJzIHdlcmUg
YWx3YXlzIGNyZWF0ZWQgd2l0aCBhIHNpbmdsZSBzZWdtZW50IHdoZXJlCisgICAgICAgIGNvbnZl
cnRlZCB0byBhIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisgICAgICAgIFByZXZpb3VzbHksIGEg
U2hhcmVkQnVmZmVyIHdvdWxkIGhhdmUgYmVlbiBmbGF0dGVuZWQgb25seSBpZiBpdCBuZWVkZWQg
dG8gYmUKKyAgICAgICAgYW5kIG9ubHkgd2hlbiB0aGUgZGF0YSB3YXMgZ29pbmcgdG8gYmUgYWNj
ZXNzZWQ7IGZvbGxvd2luZyB0aGlzIGNoYW5nZQorICAgICAgICB0aGUgY29udmVyc2lvbiBpcyBu
b3cgZXhwbGljdGx5IGRvbmUgdGhyb3VnaCBhIGNhbGwgdG8gbWFrZUNvbnRpZ3VvdXMuCisgICAg
ICAgIFRoaXMgY29udmVyc2lvbiBpcyBhIG5vLW9wIGlmIHRoZSBTaGFyZWRCdWZmZXIgYmVpbmcg
Y29udmVydGVkIHdhcyBhbHJlYWR5CisgICAgICAgIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4K
KyAgICAgICAgV2l0aCB0aGUgbmF0dXJlIG9mIGEgU2hhcmVkQnVmZmVyIGJlaW5nIHNoYXJlZCBi
eSBwb3RlbnRpYWxseSBtdWx0aXBsZQorICAgICAgICB1c2VycyBpdCB3YXMgbmVjZXNzYXJ5IHRv
IGxpbWl0IHRoZSBudW1iZXIgb2YgY29udmVyc2lvbnMgYmVpbmcgcGVyZm9ybWVkCisgICAgICAg
IG9uIGRlbWFuZCB0byBhdm9pZCByZWR1bmRhbmN5LgorICAgICAgICBXaGVuIHRoZSBmbGF0dGVu
aW5nIGNvdWxkIGhhdmUgb2NjdXJlZCwgdGhlIFNoYXJlZEJ1ZmZlciBjcmVhdGlvbiBwb2ludHMg
d2VyZQorICAgICAgICB0cmFjZWQgYmFjayBhbmQgaWRlbnRpZmllZCB0byBtYWtlIHRoZSBidWZm
ZXIgY29udGlndW91cyB0aGVuLgorICAgICAgICBJbiB0aGUgZW5kLCB0aGVyZSdzIG5vIG1vcmUg
U2hhcmVkQnVmZmVyIGZsYXR0ZW5pbmcgb3BlcmF0aW9ucyB0aGFuIHRoZXJlCisgICAgICAgIHdv
dWxkIGhhdmUgYmVlbiBiZWZvcmUgdGhpcyBjaGFuZ2UuCisgICAgICAgIFRoZXJlJ3MgYSBwb3Rl
bnRpYWwgaW5jcmVhc2Ugb2YgdGVtcG9yYXJ5IG1lbW9yeSB1c2FnZSB3aXRoIHRoZQorICAgICAg
ICBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlciBjbGFzczsgYnVnIDIzMzUxMSBpcyB0cmFja2lu
ZyBpdC4KKworICAgICAgICBXaGlsZSB0aGUgY2hhbmdlIGlzIGV4dGVuc2l2ZSwgY29kZSBjb3Zl
cmFnZSBvZiB0aGUgbW9kaWZpZWQgYXJlYXMgaXMgdGhvcm91Z2gKKyAgICAgICAgd2hpY2ggbWFr
ZXMgdW5kZXRlY3RlZCByZWdyZXNzaW9ucyB1bmxpa2VseS4KKworICAgICAgICBJbiBidWcgMjMz
NDQyLCBhIFNoYXJlZEJ1ZmZlciB3aWxsIGJlIG1hZGUgY29tcGxldGVseSBpbW11dGFibGUgb25j
ZSBjcmVhdGVkLgorCisgICAgICAgIE5vIG9ic2VydmFibGUgY2hhbmdlLgorICAgICAgICBDb3Zl
cmVkIGJ5IGFsbCBleGlzdGluZyB0ZXN0cy4gTmV3IEFQSSB0ZXN0cyBjcmVhdGRlZC4KKworICAg
ICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNv
dXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAg
ICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZl
cik6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdl
UmVhZGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJl
YWRCdWZmZXIpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRl
UmVhbEJvZHlTaXplKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
Q2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6
OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2Fj
aGVFbmdpbmU6Omlzb2xhdGVkUmVzcG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNh
Y2hlRW5naW5lOjpjb3B5UmVzcG9uc2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgor
ICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5
SWRzTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9y
OjpuZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keTo6dGFrZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxv
YWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9u
c2U6OnNldEJvZHlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlh
bGl6ZUlEQktleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjphZGRFeGlzdGluZ0luZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0lu
ZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRl
UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENv
dW50KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5k
QXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29y
OjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXI6OnNldENsaWVudCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6
bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtp
dC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb1Rl
bXBvcmFyeUZpbGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6CisgICAg
ICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zv
bnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OnByb21pc2VkQXR0YWNobWVudEluZm8pOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6Cisg
ICAgICAgICogZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaDoKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6YXJjaGl2ZWRE
YXRhRm9yQXR0cmlidXRlZFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmdldFBh
c3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6ZGF0YUluUlRGREZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJ
blJURkZvcm1hdCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgor
ICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KToKKyAgICAg
ICAgKGZpbGVXcmFwcGVyRm9yVVJMKToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVudCk6
CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpyZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6
c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50
UmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVh
ZGVyOjpyZWFkUlRGRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFk
UlRGKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYp
OgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogaHRtbC9GVFBEaXJl
Y3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUZW1wbGF0ZURvY3Vt
ZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6
bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVz
b3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudCk6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudCk6CisgICAgICAgICogbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6
ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxp
Z2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXI6OmRvUHJlZmxpZ2h0KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGlu
Z011bHRpcGFydENvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAg
ICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRp
ZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1ZmZlckZyb21SZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3lu
Y2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5
YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6bG9hZENhY2hlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNo
aXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3Bl
cnR5TGlzdFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24p
OgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjaGVja05vdGlmeSk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZl
ckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRh
SWZOZWVkZWQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVzb3VyY2VC
dWZmZXIgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNr
Q2FjaGVNb25pdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9y
Ojp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFj
a2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6Cisg
ICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
U2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlh
bGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNl
cmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlh
bGl6ZXIuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hh
cmVEYXRhUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6U2hh
cmVEYXRhUmVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6ZGlkRmlu
aXNoTG9hZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1
c3RvbURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2Fy
ZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Byb21pc2Vk
QXR0YWNobWVudEluZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6aXNDb250aWd1b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y29weSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omhhc09uZVNlZ21lbnQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpkYXRhQXNDaGFyUHRyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50
OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50Ojpjb250YWluc01h
cHBlZEZpbGVEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmRlY29kZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OnNp
emUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJl
ZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3
OjpkYXRhQXNDaGFyUHRyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dXRm
OEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdt
ZW50OjpEYXRhU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxh
eWluZ0luZm8pOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAg
ICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9T
aGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUSUZGVG9QTkcpOgorICAgICAgICAoV2ViQ29yZTo6
UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayk6CisgICAgICAg
ICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW06CisgICAgICAgICgtW1dlYkNv
cmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRoRGF0YVNlZ21lbnQ6cG9zaXRpb246c2l6ZTpdKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVD
RkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50Ojpj
cmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1VdGlsaXRpZXM6OnBhcnNlSlNP
Tk9iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJv
bUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJ
bml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0v
Z2xpYi9LZXllZEVuY29kZXJHbGliLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRC
dWZmZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZUdCeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TW9kZWw6Ok1vZGVsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAg
ICAgICAoV2ViQ29yZTo6TW9kZWw6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpN
b2RlbDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1h
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVUludDMyKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlYWRVSW50MTYpOgorICAgICAgICAoV2ViQ29yZTo6aXNXT0ZGKToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnRXT0ZGVG9TZm50KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9T
Zm50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9y
bWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RTaW5mRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUpTT05W
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRl
UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5l
d2luZ1JlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGVjb2RlckFWRk9iakM6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW06CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6
OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxv
YWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFy
ZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNv
ZGVyQ0c6OkltYWdlRGVjb2RlckNHKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNH
OjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRv
Y3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1E
YXRhQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9y
bU9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0
ZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckNvbW1vbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
R1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNv
dW50ZXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFya3VwVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFsaWNDb3Jy
ZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJbmZv
OjptYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
ZW5UeXBlOjpHbHlwaEFzc2VtYmx5OjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldFNpemVWYXJpYW50
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0
aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpNYXRoVmFyaWFudHM6Om1hdGhHbHlwaENvbnN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoQ29uc3RhbnRzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhHbHlwaEluZm8gY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRh
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5o
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OnZhbGlkYXRlVGFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6aXNWYWxpZEVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxpZGF0ZVB0cik6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxpZGF0ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRoQ292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXggY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0
aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbmFtZUZvbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6cmVuYW1lQW5kQWN0aXZhdGVGb250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9w
ZW5UeXBlOjpTdWJzdGl0dXRpb25TdWJUYWJsZTo6Y292ZXJhZ2UgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1cFRhYmxlOjpnZXRTdWJzdGl0dXRpb25zIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMb29rdXBMaXN0Ojpsb29rdXAgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVUYWJsZTo6Z2V0R2x5cGhTdWJzdGl0
dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6
ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6
OmZpbmRGZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMYW5nU3lz
VGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlw
dFRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6U2NyaXB0TGlzdDo6c2NyaXB0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpTY3JpcHRMaXN0OjpkZWZhdWx0U2NyaXB0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
ZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpzY3JpcHRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmZlYXR1cmVMaXN0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6Omxvb2t1cExpc3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZmVhdHVyZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpnZXRWZXJ0aWNhbEdseXBoU3Vi
c3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpsb2FkSG10eFRhYmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJz
dGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9y
bURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpv
cGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRh
OjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9T
ZWxlY3Rpb25EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRDdXN0
b21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6OmN1c3RvbURhdGEgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNv
ZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VE
ZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkxpc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVX
cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBh
c3RlYm9hcmRXcml0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9h
cmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZv
clR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVG
b3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBh
c3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6
c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZEl0
ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNs
aWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9u
RGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2ZWREYXRhOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1
cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkN1
cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxN
dWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6
OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUdsb2JhbEhEcm9wQ29udGVudCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NoYXJlZEJ1
ZmZlcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3Rvcnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vu
c2UpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEp
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNwb25z
ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAgICAg
ICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY0xv
YWRlckZ1bmMpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GdW5jKToKKwogMjAyMS0xMi0wMyAgQWxpY2lh
IEJveWEgR2FyY8OtYSAgPGFib3lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW01TRV0gRml4IGVy
YXNlIHJhbmdlIHRvIHByZXZlbnQgYWNjaWRlbnRhbCBkZWxldGlvbiBpbiBmaWxlcyB3aXRoIGNo
YW5naW5nIGR1cmF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1NmVhMWU0MGJiNGI3MTYzNTc1MTQ0NTllYmJm
Y2QwZGM0ODVmMjhlLi41YTU0MzUzODlkNzdhOWNhODM5ODAzMTgzZjJiMzM0N2NkYjZhZWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDI3NyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3Nwor
ICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNo
YXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMu
CisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3Bw
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHku
Y3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHA6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1Bp
bmdMb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9QcmVmZXRjaENhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtEYXRhVGFza0N1cmwuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0
d29ya0RhdGFUYXNrQ3VybC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a0RhdGFUYXNrU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENQcm92aWRlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5
LmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmg6CisgICAgICAgICog
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1v
cnkuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW06CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VC
dWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3Bw
OgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3Bw
OgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwOgorICAgICAgICAq
IFNoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
QXR0YWNobWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0
U3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQcm94eUNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKiBV
SVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0Ns
aXBib2FyZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHA6Cisg
ICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE0uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkYuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkZNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1t
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRN
YWMubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tOgorICAgICAgICAqIFdlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwOgorCisyMDIx
LTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlz
dGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUg
YW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVN
ZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hy
b25vdXNSZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6
Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6RW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29w
eTo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgor
ICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAg
ICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAgKElQQzo6U2hhcmVk
QnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1v
cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZl
ciBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICog
U2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2
ZVJlc291cmNlOjpkYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6
OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFw
SW5TaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJj
ZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAg
ICAoSVBDOjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjplbmNvZGVUeXBlc0Fu
ZERhdGEpOgorICAgICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUpOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46
OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6
QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAg
ICAgKEFQSTo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6Omdl
dERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29h
Lm1tOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50
YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRl
OjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBl
ZEF0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERP
TVBhc3RlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENv
bXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKyAgICAg
ICAgKGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoSW1hZ2U6cmVj
dDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xp
ZW50Lmg6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6OmdldFBh
c3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06
CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBf
c2V0RWRpdGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVsZWFz
ZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2Rl
bC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9h
ZGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1
ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJl
YWRCdWZmZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1
cHBvcnRzVmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKwog
MjAyMS0xMi0wMyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbmFtZSBEZXJpdmVkU291cmNlcy9XZWJLaXQyIHRvIERlcml2ZWRTb3VyY2VzL1dl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBkNzc2ZTgyZGYxMzJjYWY2NTI3OTNhNzlhMDA4
M2FkNjU1OWRjMjY1Li4zNzc3ZjJhNTZiYzhlNjA0ZTk0NTFlOGJkMTJlMjViNDNhMzUxNjcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTEyLTAzICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZl
ciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5h
bWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAg
ICAgICB0eXBlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaDoKKwog
MjAyMS0xMS0xMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFr
ZSBzb3J0LVhjb2RlLXByb2plY3QtZmlsZSBpZGVtcG90ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKaW5kZXggNzZhYTZhYWY4NGRlYjA4MmU0Yzg0MzIyNDkzMzgwZDgzM2RlOTJkMS4uMjA1
ODQ1MzQ0OTg0OTU3N2M1NTAxMWNkNTljZTg4M2JlYmQ5ZTZjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2Vz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3
CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8g
U2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBl
cy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAg
ICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291
cmNlLm1tOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24t
Y29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8v
ODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAgICgtW0RPTUhUTUxJbWFnZUVs
ZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAg
KFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToKKyAgICAgICAgKC1b
V2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6CisgICAgICAgICogV2ViVmll
dy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dlYlJlc291cmNlIGVuY29k
ZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZGF0YV0pOgorICAgICAgICAo
LVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0xMi0wMiAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEhvb2sgdXAg
bmF2aWdhdG9yLmdwdS5yZXF1ZXN0QWRhcHRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cK
aW5kZXggMDJlOTQ2YmMxZmIwYjM1NmJiMTVhYjgzNjBlODYxNDU1NDcyNDdjYy4uYTZkN2FmZDAw
ZmNkYjdiYTk5MTM1OWQ3MjIzZWFiN2I0NDRiYjU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAg
ICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVk
QnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKwor
ICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAgICAgICogTWVtb3J5U3RyZWFtLmg6Cisg
ICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgICogV2ViRnJhbWUuaDoKKyAgICAg
ICAgKiBXZWJLaXRETEwuY3BwOgorICAgICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAg
KiBXZWJSZXNvdXJjZS5oOgorCisyMDIxLTEyLTAxICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAg
ICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpsb2FkRGF0YSk6
CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAg
ICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1
b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgx
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWVt
b3J5U3RyZWFtLmNwcDoKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKToKKyAg
ICAgICAgKE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIE1lbW9yeVN0
cmVhbS5oOgorICAgICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQXJjaGl2ZTo6
ZGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkRhdGFT
b3VyY2UuY3BwOgorICAgICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0YSk6CisgICAgICAgICogV2Vi
UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKToKKyAg
ICAgICAgKiBXZWJSZXNvdXJjZS5oOgorCiAyMDIxLTEyLTAyICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gTWFrZSBXZWIgTG9jayBBUEkgd29yayBhY3Jv
c3MgbXVsdGlwbGUgV2ViUHJvY2Vzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlCdWZmZXIuaAppbmRleCBlYWNjYTJjMjMzYThhNjkzNzE1OTA4MDdkZmQzNjc1YjA2MTU5
NDI4Li5iNDY5M2Y5MWM2MDdkOGQwNzQ1OTQ2NDZlOGRjNDM3MmU5YmM5OWU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKQEAgLTEyOSw3ICsxMjksNyBA
QCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gdHJ5Q3JlYXRlKEFycmF5QnVmZmVyJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90
IGJ5dGVMZW5ndGgpOwogCi0gICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFycmF5
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkIGFuZCBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5
QnVmZmVyLgorICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZCBhbmQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJy
YXlCdWZmZXIuCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4g
Y3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRC
eXRlU2l6ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAppbmRleCAzMzU0
YjUyYTUwY2JiMTg5ZmRmYWViN2Q4MjQ4M2JlMGM0MWMzZDRlLi5kYTMzNmU2ZjViMTY5NGUzNzQ3
NjkwYzQzZDJiNTNmMzUxOGMwOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwCkBA
IC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmICFQTEFURk9STShDT0NP
QSkKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKQordm9pZCBDbGlwYm9hcmRJbWFn
ZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0Ns
aXBib2FyZEltYWdlUmVhZGVyLmgKaW5kZXggMmI2MjYyODQxOWIwOWNiYjY5NTUyMTViMGQ1ZDdk
NzNjMGIzNzQ0ZC4uNmUyMjA0OGNmNWZlYTlhYTYyZGFkZjQ1YjFmMzVjNGNlMGQ3ZDZlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IENsaXBib2FyZEltYWdlUmVhZGVyIDogUGFz
dGVib2FyZEZpbGVSZWFkZXIgewogICAgIENsaXBib2FyZEltYWdlUmVhZGVyKERvY3VtZW50KiBk
b2N1bWVudCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbCB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CiAKICAgICBib29sIHNob3VsZFJlYWRCdWZmZXIoY29uc3QgU3RyaW5n
JikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAg
dm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAgICAgUmVmUHRyPERv
Y3VtZW50PiBtX2RvY3VtZW50OwogICAgIFN0cmluZyBtX21pbWVUeXBlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCBkMDc0NmRhMmRhMjA5
ZTAyMzI1YjVmYTIxNGRiZWU2NGJmOWM5MDc4Li5lZmYxMGI1YjY1ZmQ4MWFkOWJhMzJmODBiM2Yy
Y2YyZjhlOThmMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlLmNwcApAQCAtMjE2LDggKzIxNiw4IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZTo6aW52b2tlQ29tcGxldGlvbkhhbmRsZXIoKQogICAgICAgICBhdXRvJiBkYXRh
ID0gaXRlbVR5cGVMb2FkZXItPmRhdGEoKTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhIXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkpCiAgICAgICAg
ICAgICBjdXN0b21EYXRhLndyaXRlU3RyaW5nKHR5cGUsIHN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkp
OwotICAgICAgICBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZm
ZXI+PihkYXRhKSkKLSAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIHN0ZDo6
Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihkYXRhKS5jb3B5UmVmKCkpOworICAgICAgICBlbHNlIGlm
IChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZGF0
YSkpCisgICAgICAgICAgICBjdXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCBzdGQ6OmdldDxSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGRhdGEpLmNvcHlSZWYoKSk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTI2NSw5ICsyNjUsOSBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQog
ewogICAgIGlmIChtX3R5cGUgPT0gInRleHQvaHRtbCJfcykgewogICAgICAgICBTdHJpbmcgbWFy
a3VwVG9TYW5pdGl6ZTsKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNo
YXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKLSAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6
Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwotICAgICAgICAgICAgbWFya3VwVG9TYW5p
dGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsK
KyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PihtX2RhdGEpKSB7CisgICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBzdGQ6OmdldDxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7CisgICAgICAgICAgICBtYXJrdXBU
b1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpKQogICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9
IHN0ZDo6Z2V0PFN0cmluZz4obV9kYXRhKTsKIApAQCAtMjc4LDkgKzI3OCw5IEBAIHZvaWQgQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNh
bml0aXplRGF0YUlmTmVlCiAgICAgfQogCiAgICAgaWYgKG1fdHlwZSA9PSAiaW1hZ2UvcG5nIl9z
KSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRpemU7Ci0gICAg
ICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEp
KQotICAgICAgICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZm
ZXI+PihtX2RhdGEpLnB0cigpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyVG9TYW5pdGl6ZTsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihtX2RhdGEpKQorICAgICAgICAgICAgYnVmZmVy
VG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4obV9kYXRh
KS5wdHIoKTsKICAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+
KG1fZGF0YSkpCiAgICAgICAgICAgICBidWZmZXJUb1Nhbml0aXplID0gdXRmOEJ1ZmZlcihzdGQ6
OmdldDxTdHJpbmc+KG1fZGF0YSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGlu
Z3NEYXRhU291cmNlLmgKaW5kZXggMmNjMmM4ZTFhNTRlMThkNzM0OTVjNTMwY2Q3N2Q1NGY5OWE1
MjlhNy4uMzdjODI1ZTIzNWE4YThiN2U0NGU0MGZiMGMyZDc3MjQ0MDdhNzU4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaApAQCAtMzgsNyArMzgsNyBA
QCBjbGFzcyBET01Qcm9taXNlOwogY2xhc3MgRmlsZVJlYWRlckxvYWRlcjsKIGNsYXNzIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UgOiBwdWJsaWMgQ2xpcGJvYXJkSXRlbURhdGFTb3Vy
Y2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTMsNyArNTMsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBpbnZva2VDb21wbGV0aW9uSGFuZGxlcigpOwogCi0gICAgdXNpbmcg
QnVmZmVyT3JTdHJpbmcgPSBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj47
CisgICAgdXNpbmcgQnVmZmVyT3JTdHJpbmcgPSBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAgIGNsYXNzIENsaXBib2FyZEl0ZW1UeXBlTG9hZGVy
IDogcHVibGljIEZpbGVSZWFkZXJMb2FkZXJDbGllbnQsIHB1YmxpYyBSZWZDb3VudGVkPENsaXBi
b2FyZEl0ZW1UeXBlTG9hZGVyPiB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUmVmPENs
aXBib2FyZEl0ZW1UeXBlTG9hZGVyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0eXBlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2ZmUyNzg1Mjg0YWU2YzA4MzI4
YWYzMDdhM2E0NDEwMC4uMjc0ZTAzOGQ0MTg3MDE2MWU0ZWViODBjMTJhYmJhODcxZjlkNGE2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0Ns
aXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzQsMTAgKzM0
LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRl
cjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAg
IGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdp
dGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFn
ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBp
ZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UuZ2V0KCkpKQog
ICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgVmVj
dG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0YS5ieXRlcyksIG5zRGF0YS5s
ZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdl
UmVhZGVyTWFjLm1tCmluZGV4IGI0YzMxY2E1MDYzOWNjY2E0YzU1MDU0ZDQ5MTMxNzg2OWRhN2U1
YmYuLjM4MjFiMDM3MTgwMjgyM2Q2OWE4MzBhMzEwZGEzNDcwOGQ2MzMwNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFn
ZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTMzLDEwICszMywxMCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsK
ICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewotICAgICAgICBhdXRvIGltYWdl
ID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBh
bGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gY2dJbWFnZSA9IFtpbWFnZSBDR0ltYWdlRm9y
UHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxdKSB7CiAgICAgICAgICAgICBh
dXRvIHJlcHJlc2VudGF0aW9uID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGlu
aXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7CiAgICAgICAgICAgICBOU0RhdGEqIG5zRGF0YSA9IFty
ZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5
cGVQTkcgcHJvcGVydGllczpAeyB9XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHAKaW5kZXggZTZjYzFhYWU3ODNhNTIwOTRmNjU0OTliYjkwZGQ3ZjAwNzFkNDI0Yy4u
ZjA1YzIzMzA3YmM1YTBlNTgyZGRjZDg2MGQ1YmIxYTFiMzA5MzI1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIERP
TUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2l6ZV90IHJlY29y
ZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJlY29yZCh0b0Nvbm5lY3Rpb25SZWNvcmQocmVx
dWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIpKTsKIAotICAgICAgICAgICAgcmVzcG9uc2Uu
Y29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFu
ZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcmVz
cG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIg
PSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZm
ZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQp
IG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICh0YXNrSGFuZGxlci0+aXNEb25lKCkpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjk5LDkgKzI5OSw5IEBAIHZvaWQgRE9N
Q2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYg
KGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgICAg
IGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVz
cG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RGTW92ZShkYXRhKSk7CisgICAg
ICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRp
b24sIHJlc3BvbnNlLCBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgfSwgY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmZldGNo
KTsKICAgICB9CkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3Bv
bnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2gKIAog
ICAgIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgYm9keTsKICAgICBpZiAoYXV0byBidWZm
ZXIgPSByZXNwb25zZUJvZHkucmVsZWFzZVJldHVyblZhbHVlKCkpCi0gICAgICAgIGJvZHkgPSBi
dWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgYm9keSA9IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKTsKICAgICBiYXRjaFB1dE9wZXJhdGlvbihyZXF1ZXN0LmdldCgpLCByZXNwb25zZS5n
ZXQoKSwgV1RGTW92ZShib2R5KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQp
IG11dGFibGUgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRh
c2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBy
ZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm9taXNl
LnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgRE9NQ2Fj
aGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNl
LCBET01Qcm9taXNlCiAKICAgICBpZiAocmVzcG9uc2UtPmlzQm9keVJlY2VpdmVkQnlDaHVuaygp
KSB7CiAgICAgICAgIGF1dG8mIHJlc3BvbnNlUmVmID0gcmVzcG9uc2UuZ2V0KCk7Ci0gICAgICAg
IHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92
ZShyZXNwb25zZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBwZW5kaW5nQWN0aXZp
dHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGhpc10oYXV0byYmIHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFtw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJl
c3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCks
IHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRv
JiYgcmVzdWx0KSBtdXRhYmxlIHsKIAogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRp
b24oKSkgewogICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92
ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIHJlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCkuaXNvbGF0ZWRDb3B5KCkpOwpAQCAtMzgzLDkgKzM4Myw5IEBAIHZv
aWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYm
IHJlc3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChh
dXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEt
PmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBk
YXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJv
bWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0
aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlc3BvbnNlKSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBkYXRhLnRha2UoKS0+bWFrZUNvbnRp
Z3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCmluZGV4IDI1OTE0
YjQwYmIyMzgzYTA3ODgwNGY4OWIxMWI0MGQ4OTcwYjQzMDYuLmMwZjgwMzJiMDQ1MmMzN2VlNGNh
ZmJjYWZkNzlmMDlkMjE0NjMzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgUmVzcG9uc2VCb2R5IGlz
b2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKICAgICByZXR1cm4g
V1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4g
UmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLT5pc29sYXRlZENvcHkoKTsK
ICAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJv
ZHkgewotICAgICAgICByZXR1cm4gYnVmZmVyLT5jb3B5KCk7CisgICAgICAgIHJldHVybiBidWZm
ZXIuY29weVJlZigpOyAvLyBTaGFyZWRCdWZmZXIgYXJlIGltbXV0YWJsZSBhbmQgY2FuIGJlIHJl
dHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9u
c2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9
OwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0u
Y3BwCmluZGV4IDI4NTBkYmExZTNiZmExMWY0ODliNDQ0MDM1MTNkNTFhZTFiZWFkM2EuLjlkMWJj
Njc0ZmM4MjZjYjZkMTZkMDI1MTBjZjg0MDEwYWRjYmQ3NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKQEAgLTEzNSwxNyArMTM1LDE3IEBAIGJv
b2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRlZElu
aXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBDRE06OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IENETTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIHJl
dHVybiBJbml0RGF0YVJlZ2lzdHJ5OjpzaGFyZWQoKS5zYW5pdGl6ZUluaXREYXRhKGluaXREYXRh
VHlwZSwgaW5pdERhdGEpOwogfQogCi1ib29sIENETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiti
b29sIENETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIHJldHVybiBt
X3ByaXZhdGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0c0luaXREYXRhKGluaXREYXRhVHlwZSwgaW5p
dERhdGEpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplUmVzcG9uc2Uo
Y29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
cmVzcG9uc2UpCiB7CiAgICAgaWYgKCFtX3ByaXZhdGUpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKaW5kZXggZDhh
NGIzYWYxMmYxYTc5MjNkODg3MDVkNWI5NTgxZDM2ZjEwMjcwYy4uZDdiMWQ1M2QwNDkxZjcyNzc5
YjU5NGIyZDgzYzA5YjgzYmNmMjA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5oCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIENETUluc3RhbmNlOwogY2xh
c3MgQ0RNUHJpdmF0ZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIENETSA6IHB1YmxpYyBSZWZDb3VudGVkPENETT4sIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxDRE0+LCBwcml2YXRlIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoK
QEAgLTczLDEwICs3MywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkg
Y29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJikg
Y29uc3Q7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgYm9v
bCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3Qg
U2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0
aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZm
ZXImKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25z
ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaAppbmRl
eCAyMWU1MmY0YjcxNGZiOTFmNjdjZmMzOTYxMzljMTY1MjViZmI3YjliLi40MTBlZDJmYjY0Mjc1
NjJjZTliZDhlZGE0ZDkxYTg2YmE5OGNhYTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKQEAgLTM2LDE0ICszNiwxNCBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDRE1JbnN0YW5jZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENETUNsaWVudCA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1DbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5D
RE1DbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50QXR0ZW1w
dFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2Rt
Q2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcm
LCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNkbUNsaWVudFVu
cmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5p
dERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4IDBiZjVlYWE3NGVkYmU2ODlhOGQyZTQwYTM0MWE2
NzA3NDQwZjJkNTYuLjZmODg4ZTE3ODU4ZGRhNmQ5NDcxZWMxZjZlZjVkMDY2ZGYwZTQ5OTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFS
ZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9J
bml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtNTQsMTMgKzU0LDEzIEBAIG5hbWVzcGFjZSB7CiAgICAg
Y29uc3QgdWludDMyX3Qga0tleUlkc01heEtleUlkU2l6ZUluQnl0ZXMgPSA1MTI7CiB9CiAKLXN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJ
RHNLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgc3RkOjpvcHRpb25h
bDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlk
cyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gMS4gRm9y
bWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQt
cmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5zaXpl
KCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZl
ci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIu
c2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpwYXJzZUpTT04oanNv
bik7CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBT
aGFyZWQKICAgICBpZiAoIWtpZHNBcnJheSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBmb3IgKGF1dG8mIHZhbHVlIDog
KmtpZHNBcnJheSkgewogICAgICAgICBhdXRvIGtleUlEID0gdmFsdWUtPmFzU3RyaW5nKCk7CiAg
ICAgICAgIGlmICgha2V5SUQpCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hh
cmVkCiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHNhbml0aXplS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gMS4gRm9ybWF0CiAgICAgLy8gaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEv
a2V5aWRzLmh0bWwjZm9ybWF0CkBAIC0xMDQsMTQgKzEwNCwxNCBAQCBzdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAg
ICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2lkc0Fy
cmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgYnVmZmVyIDoga2V5
SURCdWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVS
TEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgICAg
ICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiAgICAgb2JqZWN0LT5z
ZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAKICAgICBDU3RyaW5nIGpzb25E
YXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwogfQogCi1z
dGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNw
ZWNpZmljSGVhZGVyQm94Pj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RQc3NoQm94ZXNGcm9t
Q2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5p
dERhdGFSZWdpc3RyeTo6ZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyA0LiBDb21tb24gU3lzdGVtSUQgYW5kIFBT
U0ggQm94IEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVk
aWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2NlbmMuaHRtbCNjb21tb24tc3lzdGVtCkBAIC0x
NTEsOSArMTUxLDkgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1By
b3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbmkKICAgICByZXR1cm4gcHNzaEJv
eGVzOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IEluaXRE
YXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gSW5p
dERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOwor
ICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKIAogICAgIGF1
dG8gcHNzaEJveGVzID0gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGJ1ZmZlcik7CiAgICAgaWYg
KCFwc3NoQm94ZXMpCkBAIC0xODUsNyArMTg1LDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2VuYyhjb24K
ICAgICByZXR1cm4ga2V5SURzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJl
Z2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVDZW5jKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyA0LiBDb21tb24g
U3lzdGVtSUQgYW5kIFBTU0ggQm94IEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2NlbmMuaHRtbCNjb21t
b24tc3lzdGVtCkBAIC0xOTUsNyArMTk1LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERh
dGFSZWdpc3RyeTo6c2FuaXRpemVDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAg
IHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIENoZWNrIGlmIHRoZSBidWZmZXIgaXMgYSB2YWxp
ZCBXZWJNIGluaXREYXRhLgogICAgIC8vIFRoZSBXZWJNIGluaXREYXRhIGlzIHRoZSBDb250ZW50
RW5jS2V5SUQsIHNvIHNob3VsZCBiZSBsZXNzIHRoYW4ga1dlYk1NYXhDb250ZW50RW5jS2V5SURT
aXplLgpAQCAtMjA1LDEwICsyMDUsMTAgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNh
bml0aXplV2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gYnVmZmVy
LmNvcHkoKTsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+Pj4gZXh0cmFjdEtleUlEc1dlYk0oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0
aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0
cmFjdEtleUlEc1dlYk0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewot
ICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNhbml0aXplZEJ1ZmZlciA9IHNhbml0aXplV2ViTShidWZmZXIpOworICAgIFZlY3Rv
cjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkQnVmZmVyID0gc2FuaXRpemVXZWJNKGJ1ZmZlcik7
CiAgICAgaWYgKCFzYW5pdGl6ZWRCdWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCBJbml0RGF0YVJlZ2lzdHJ5OjpJbml0RGF0YVJlZ2lzdHJ5
KCkKIAogSW5pdERhdGFSZWdpc3RyeTo6fkluaXREYXRhUmVnaXN0cnkoKSA9IGRlZmF1bHQ7CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5p
dGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gaXRlciA9IG1fdHlwZXMuZmlu
ZChpbml0RGF0YVR5cGUpOwogICAgIGlmIChpdGVyID09IG1fdHlwZXMuZW5kKCkgfHwgIWl0ZXIt
PnZhbHVlLnNhbml0aXplSW5pdERhdGEpCkBAIC0yNDEsNyArMjQxLDcgQEAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGEKICAgICByZXR1cm4gaXRlci0+dmFsdWUuc2FuaXRpemVJbml0RGF0YShidWZm
ZXIpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IEluaXRE
YXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHMo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXREYXRhVHlw
ZSk7CiAgICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUuc2FuaXRp
emVJbml0RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmgKaW5kZXggY2QxMzg3YTZiZDAzOGZmMzRlMmNmYjc1
ZjQ0M2RlN2Q5NDAzMjFiMC4uNzdkNjA0YjA4YmI3ZjdlMzhiY2NiMzU0NWIzNGM4YjEzNDM1NWVm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0
RGF0YVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9Jbml0RGF0YVJlZ2lzdHJ5LmgKQEAgLTM4LDE5ICszOCwxOSBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJ
bml0RGF0YVJlZ2lzdHJ5IHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSW5p
dERhdGFSZWdpc3RyeSYgc2hhcmVkKCk7CiAgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVk
PEluaXREYXRhUmVnaXN0cnk+OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRC
dWZmZXI+Pj4gZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBz
YW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHMoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7
CiAKICAgICBzdHJ1Y3QgSW5pdERhdGFUeXBlQ2FsbGJhY2tzIHsKLSAgICAgICAgdXNpbmcgU2Fu
aXRpemVJbml0RGF0YUNhbGxiYWNrID0gRnVuY3Rpb248UmVmUHRyPFNoYXJlZEJ1ZmZlcj4oY29u
c3QgU2hhcmVkQnVmZmVyJik+OwotICAgICAgICB1c2luZyBFeHRyYWN0S2V5SURzQ2FsbGJhY2sg
PSBGdW5jdGlvbjxzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+KGNvbnN0
IFNoYXJlZEJ1ZmZlciYpPjsKKyAgICAgICAgdXNpbmcgU2FuaXRpemVJbml0RGF0YUNhbGxiYWNr
ID0gRnVuY3Rpb248UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKT47CisgICAgICAgIHVzaW5nIEV4dHJhY3RLZXlJRHNDYWxsYmFjayA9
IEZ1bmN0aW9uPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4+KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKT47CiAKICAgICAgICAgU2FuaXRpemVJ
bml0RGF0YUNhbGxiYWNrIHNhbml0aXplSW5pdERhdGE7CiAgICAgICAgIEV4dHJhY3RLZXlJRHND
YWxsYmFjayBleHRyYWN0S2V5SURzOwpAQCAtNjEsOSArNjEsOSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0IEF0b21TdHJpbmcmIGtleWlkc05hbWUoKTsKICAgICBzdGF0aWMgY29uc3QgQXRv
bVN0cmluZyYgd2VibU5hbWUoKTsKIAotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IGV4
dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzQ2Vu
Yyhjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVh
ZGVyQm94Pj4+IGV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0
aXplQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKIHByaXZhdGU6CiAgICAg
SW5pdERhdGFSZWdpc3RyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IDhiZmIxY2U3MDFhMmY1
YTY5YjViNTE5OTFhYTg2MzJlYmI4OTI1ZjkuLjE0Nzc2YzIwMTUxYmZlZmUzODA3OWEzMzczMGM4
ODY2MjY4YmE0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lk
IE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgQnVmZgogICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhp
cywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIGluaXREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW5pdERhdGEuZGF0YSgpLCBp
bml0RGF0YS5sZW5ndGgoKSksIGluaXREYXRhVHlwZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAg
ICAgLy8gMTAuMS4gSWYgdGhlIGluaXQgZGF0YSBpcyBub3QgdmFsaWQgZm9yIGluaXREYXRhVHlw
ZSwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAg
ICAvLyAxMC4yLiBMZXQgc2FuaXRpemVkIGluaXQgZGF0YSBiZSBhIHZhbGlkYXRlZCBhbmQgc2Fu
aXRpemVkIHZlcnNpb24gb2YgaW5pdCBkYXRhLgotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZWRJbml0RGF0YSA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXplSW5pdERhdGEo
aW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZWRJbml0RGF0YSA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXplSW5p
dERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CiAKICAgICAgICAgLy8gMTAuMy4gSWYgdGhl
IHByZWNlZGluZyBzdGVwIGZhaWxlZCwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0
ZWQgVHlwZUVycm9yLgogICAgICAgICBpZiAoIXNhbml0aXplZEluaXREYXRhKSB7CkBAIC0yMjMs
NyArMjIzLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEJ1ZmYKICAgICAgICAgICAgIG1fbGF0ZXN0
RGVjcnlwdFRpbWUgPSAwOwogICAgICAgICB9CiAKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24t
PnJlcXVlc3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUsIGluaXREYXRhVHlwZSwgc2FuaXRpemVkSW5p
dERhdGEucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChSZWY8U2hhcmVk
QnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5k
aXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRl
ZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZXF1ZXN0TGljZW5zZSht
X3Nlc3Npb25UeXBlLCBpbml0RGF0YVR5cGUsIHNhbml0aXplZEluaXREYXRhLnJlbGVhc2VOb25O
dWxsKCksIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50
aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFs
aXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCkBAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZShjb25z
dCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYKICAgICAvLyA2
LiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKICAgICBxdWV1ZVRhc2tLZWVw
aW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCB3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXNwb25zZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2UubGVuZ3RoKCkpLCBwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewog
ICAgICAgICAvLyA2LjEuIExldCBzYW5pdGl6ZWQgcmVzcG9uc2UgYmUgYSB2YWxpZGF0ZWQgYW5k
L29yIHNhbml0aXplZCB2ZXJzaW9uIG9mIHJlc3BvbnNlIGNvcHkuCi0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3BvbnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRp
emVSZXNwb25zZShyZXNwb25zZSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZWRSZXNwb25zZSA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXplUmVzcG9u
c2UocmVzcG9uc2UpOwogCiAgICAgICAgIC8vIDYuMi4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZh
aWxlZCwgb3IgaWYgc2FuaXRpemVkIHJlc3BvbnNlIGlzIGVtcHR5LCByZWplY3QgcHJvbWlzZSB3
aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIGlmICghc2FuaXRpemVkUmVz
cG9uc2UgfHwgc2FuaXRpemVkUmVzcG9uc2UtPmlzRW1wdHkoKSkgewpAQCAtNjAxLDcgKzYwMSw3
IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlKQogICAgICAgICAvLyA0LjMuIExldCBtZXNzYWdlIHR5cGUgYmUgbnVsbC4KIAogICAg
ICAgICAvLyA0LjQuIFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBzdGVwczoK
LSAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKG1fc2Vzc2lvbklk
LCBtX3Nlc3Npb25UeXBlLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKENETUluc3RhbmNlU2Vzc2lv
bjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5cywgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVy
Pj4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQp
IG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEo
bV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5z
dGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1
Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTY0OSw3ICs2NDksNyBAQCB2b2lkIE1l
ZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAg
ICAvLyA1LiBSZXR1cm4gcHJvbWlzZS4KIH0KIAotdm9pZCBNZWRpYUtleVNlc3Npb246OmVucXVl
dWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgbWVzc2FnZSkKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjplbnF1ZXVlTWVzc2FnZShNZWRp
YUtleU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBtZXNzYWdlKQogewogICAgIC8vIDYuNC4xIFF1ZXVlIGEgIm1lc3NhZ2UiIEV2ZW50CiAgICAg
Ly8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jcXVldWUtbWVzc2FnZQpA
QCAtNzE2LDcgKzcxNiw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNl
cyhDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGluCiAgICAgICAgIH0pOwog
fQogCi12b2lkIE1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgbWVz
c2FnZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKK3ZvaWQgTWVkaWFLZXlTZXNz
aW9uOjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBlbnF1ZXVlTWVzc2FnZShtZXNzYWdl
VHlwZSwgbWVzc2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAppbmRleCAzZDk2Zjg4MDJlNzQ3ODQxYzRl
ZmRhODFkY2I5NDFlYTZlNGE3NWU0Li4zNjVhY2U1YzA5NWU3ZGMwYzU3MWU3NmNjZjJjMDdhYWZj
NjJiYWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgQ0RNOwogY2xh
c3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgTWVkaWFLZXlTdGF0dXNNYXA7CiBjbGFzcyBNZWRp
YUtleXM7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Qcm9taXNlUHJveHk7CiAK
QEAgLTg3LDIwICs4NywyMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ2xvc2VkUHJvbWlzZSA9IERP
TVByb21pc2VQcm94eTxJRExVbmRlZmluZWQ+OwogICAgIENsb3NlZFByb21pc2UmIGNsb3NlZCgp
IHsgcmV0dXJuIG1fY2xvc2VkUHJvbWlzZS5nZXQoKTsgfQogCi0gICAgY29uc3QgVmVjdG9yPHN0
ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiYgc3RhdHVzZXMoKSBj
b25zdCB7IHJldHVybiBtX3N0YXR1c2VzOyB9CisgICAgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4mIHN0YXR1c2VzKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0dXNlczsgfQogCiAgICAgdW5zaWduZWQgaW50ZXJuYWxJbnN0
YW5jZVNlc3Npb25PYmplY3RSZWZDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zdGFuY2VTZXNz
aW9uLT5yZWZDb3VudCgpOyB9CiAKIHByaXZhdGU6CiAgICAgTWVkaWFLZXlTZXNzaW9uKERvY3Vt
ZW50JiwgV2Vha1B0cjxNZWRpYUtleXM+JiYsIE1lZGlhS2V5U2Vzc2lvblR5cGUsIGJvb2wgdXNl
RGlzdGluY3RpdmVJZGVudGlmaWVyLCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2VTZXNzaW9u
PiYmKTsKLSAgICB2b2lkIGVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdl
VHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgdXBkYXRlRXhw
aXJhdGlvbihkb3VibGUpOwogICAgIHZvaWQgc2Vzc2lvbkNsb3NlZCgpOwogICAgIFN0cmluZyBt
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAKICAgICAvLyBDRE1JbnN0YW5jZVNl
c3Npb25DbGllbnQKICAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKENETUluc3RhbmNlU2Vzc2lv
bkNsaWVudDo6S2V5U3RhdHVzVmVjdG9yJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2VuZE1lc3Nh
Z2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7Cisg
ICAgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CiAgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0
IFN0cmluZyYpIGZpbmFsOwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGZpbmFs
OwogCkBAIC0xNDAsMTAgKzE0MCwxMCBAQCBwcml2YXRlOgogICAgIE1lZGlhS2V5U2Vzc2lvblR5
cGUgbV9zZXNzaW9uVHlwZTsKICAgICBSZWY8Q0RNPiBtX2ltcGxlbWVudGF0aW9uOwogICAgIFJl
ZjxDRE1JbnN0YW5jZVNlc3Npb24+IG1faW5zdGFuY2VTZXNzaW9uOwotICAgIFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4gbV9yZWNvcmRPZktleVVzYWdlOworICAgIFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+IG1fcmVjb3JkT2ZLZXlVc2FnZTsKICAgICBkb3VibGUgbV9maXJz
dERlY3J5cHRUaW1lIHsgMCB9OwogICAgIGRvdWJsZSBtX2xhdGVzdERlY3J5cHRUaW1lIHsgMCB9
OwotICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVz
Pj4gbV9zdGF0dXNlczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiBtX3N0YXR1c2VzOwogCiAgICAgdXNpbmcgRGlzcGxh
eUNoYW5nZWRPYnNlcnZlciA9IE9ic2VydmVyPHZvaWQoUGxhdGZvcm1EaXNwbGF5SUQpPjsKICAg
ICBEaXNwbGF5Q2hhbmdlZE9ic2VydmVyIG1fZGlzcGxheUNoYW5nZWRPYnNlcnZlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0
dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVN0YXR1c01hcC5jcHAKaW5kZXggNzNmNzRlNGY3MGZjOTJjMjJiZjg1OWMwMjI4YTM0ZWFlYzU3
OTdhMy4uMzk4ZThhYjFiNjU2YjQ0NTkyN2JlYjZiYzY5M2RkMzk5YTY4N2FjNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01h
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVN0YXR1c01hcC5jcHAKQEAgLTU2LDEyICs1NiwxMiBAQCB1bnNpZ25lZCBsb25nIE1lZGlhS2V5
U3RhdHVzTWFwOjpzaXplKCkKICAgICByZXR1cm4gbV9zZXNzaW9uLT5zdGF0dXNlcygpLnNpemUo
KTsKIH0KIAotc3RhdGljIGJvb2wga2V5SWRzTWF0Y2goY29uc3QgU2hhcmVkQnVmZmVyJiBhLCBj
b25zdCBCdWZmZXJTb3VyY2UmIGIpCitzdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIpCiB7CiAgICAgYXV0
byBsZW5ndGggPSBhLnNpemUoKTsKICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggIT0gYi5sZW5n
dGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5k
YXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOworICAgIHJldHVybiAhc3RkOjptZW1jbXAoYS5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOwogfQogCiBib29sIE1lZGlh
S2V5U3RhdHVzTWFwOjpoYXMoY29uc3QgQnVmZmVyU291cmNlJiBrZXlJZCkKQEAgLTEwMyw3ICsx
MDMsNyBAQCBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRU
eXBlLCBNZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5UwogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5kZXgrK107Ci0gICAgYXV0byBi
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRhdGEoKSwgcGFpci5maXJz
dC0+c2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5m
aXJzdC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOwogICAg
IHJldHVybiBLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwgTWVkaWFLZXlT
dGF0dXM+IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1ZmZlcikpLCBwYWlyLnNlY29u
ZCB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKaW5kZXggYzIxMTExM2EyYzZkYWM3OTc5MjRhOTlk
MmQyZGY5N2MyZTY1Zjg1MC4uNjBkNjJhYWZmODA3NGRhZGE2ZTMxYTNmMmIzNzBhNmQ2ZDAxZjYx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN0YXR1c01hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTdGF0dXNNYXAuaApAQCAtMzgsNyArMzgsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBNZWRpYUtleVNlc3Npb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNZWRpYUtleVN0YXR1c01hcCA6IHB1
YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5U3RhdHVzTWFwPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKaW5kZXgg
ODNiMjRhY2VhYTViMTI5NGJiNGVhNDM5ZmIyZDVjNGY2Y2NkNDc1My4uMzY3ZjMxZDE4NmI1MTYz
OWE5Yzc0MjEzZjBjZjhlNmYyZjhkMjZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIGJv
b2wgTWVkaWFLZXlzOjpoYXNPcGVuU2Vzc2lvbnMoKSBjb25zdAogICAgICAgICB9KTsKIH0KIAot
dm9pZCBNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29u
c3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2
b2lkIE1lZGlhS2V5czo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25z
dCBTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5p
dERhdGEpCiB7CiAgICAgZm9yIChhdXRvJiBjZG1DbGllbnQgOiBtX2NkbUNsaWVudHMpCiAgICAg
ICAgIGNkbUNsaWVudC5jZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2Vp
dmVkKGluaXREYXRhVHlwZSwgaW5pdERhdGEuY29weVJlZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCmluZGV4IDdiNTlhM2JjNmQy
MjU2ZmM2NTZmMDhjYmYyNjg5MTg1MTA5ODNhMjIuLjkxYTFhMDcxMTQzM2JlMjQ3ZGQyYTg1YzVm
NGFkMDkzOGEwOWE3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuaApAQCAtODYsNyArODYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgTWVk
aWFLZXlzKERvY3VtZW50JiwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIGJvb2wgcGVy
c2lzdGVudFN0YXRlQWxsb3dlZCwgY29uc3QgVmVjdG9yPE1lZGlhS2V5U2Vzc2lvblR5cGU+Jiwg
UmVmPENETT4mJiwgUmVmPENETUluc3RhbmNlPiYmKTsKIAogICAgIC8vIENETUluc3RhbmNlQ2xp
ZW50Ci0gICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0
IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgdW5yZXF1ZXN0
ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAg
ICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggMmZkYzRjMDAyMWY2
ZTFmZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNiMS4uMDAzOTMwMmY3ZGMxNmZmZWNmYzQ2NWM3ZDhk
YTI1MmY5OGRhZjU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRj
aEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzCiB2b2lkIEZl
dGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlmIChhdXRvIHNoYXJlZEJ1ZmZlciA9IGZv
cm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAgICAgbV9jb25zdW1lci5yZXNv
bHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVudFR5cGUoKSwgc2hhcmVk
QnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jb25zdW1l
ci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29udGVudFR5cGUoKSwg
c2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6
ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9IGVsc2UgewogICAgICAgICAv
LyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlucyBibG9icywgbG9hZCB0aGVtIGxpa2Ug
d2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcyLDcgQEAgUmVmUHRyPEZvcm1EYXRhPiBG
ZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QKICAgICBpZiAoaXNGb3JtRGF0YSgpKQog
ICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihmb3JtRGF0YUJvZHkoKSk7CiAg
ICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkKLSAgICAgICAgcmV0dXJuIEZv
cm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICByZXR1
cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEt
PnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRh
a2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29uc3VtZXIudGFrZURhdGEoKTsKICAgICAg
ICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0
dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICByZXR1cm4gYnVmZmVyLT5tYWtl
Q29udGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChpc0Jsb2IoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCBmY2My
MTZhMDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhiNzlmZjYyYjNiLi4yMjEzZDYyMzAzZWZlMmExZjcy
OTgyNjBmNTg4NjBiNzc2ZmIyNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2
b2lkIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNl
LCBGZXRjaEJvZHlDb25zCiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKCkKIHsKLSAg
ICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgbV9idWZmZXIucmVzZXQoKTsKICAgICByZXNldENv
bnN1bWVQcm9taXNlKCk7CiAgICAgaWYgKG1fc2luaykgewogICAgICAgICBtX3NpbmstPmNsZWFy
Q2FsbGJhY2soKTsKQEAgLTI2NiwxNiArMjY2LDE4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6
OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNv
CiB7CiAgICAgaWYgKHN0cmVhbSkgewogICAgICAgICBBU1NFUlQoIW1fc2luayk7Ci0gICAgICAg
IG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgdHlw
ZSA9IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAg
ICBtX3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFtwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgdHlw
ZSA9IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAg
ICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJl
c3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+
ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRU
eXBlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgZGF0YS5h
cHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91
cygpOworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9t
aXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBtX3NpbmstPnBpcGVGcm9tKCpz
dHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMDYsNyArMzA4LDcgQEAgdm9pZCBGZXRjaEJv
ZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0
IFN0cmluZyYgY28KICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRmV0Y2hCb2R5Q29uc3VtZXI6
OlR5cGU6OkZvcm1EYXRhOiB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0gdGFrZURhdGEoKTsKLSAg
ICAgICAgaWYgKGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVu
dFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVy
LT5zaXplKCkgOiAwKSkKKyAgICAgICAgaWYgKGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURh
dGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwKSkKICAgICAg
ICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPERPTUZvcm1EYXRhPj4oKmZvcm1E
YXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJv
cik7CkBAIC0zMjQsMTYgKzMyNiwyMCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkKICAgICAgICAgbV9zb3VyY2UtPmVu
cXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcikgewotICAgICAgICBtX2J1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IG1fYnVmZmVyLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEs
IHNpemUpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZURhdGEoKQordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YShSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhKQogewotICAgIHJldHVybiBXVEZNb3ZlKG1fYnVmZmVyKTsKKyAg
ICBtX2J1ZmZlci5yZXNldCgpOworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsK
K30KKworUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0
YWtlRGF0YSgpCit7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKTsKIH0KIAogUmVmUHRyPEpTQzo6QXJyYXlCdWZm
ZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCkBAIC0zNDEsOSArMzQ3
LDcgQEAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNB
cnJheUJ1ZmZlcigpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIEFycmF5QnVm
ZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CiAKLSAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9i
dWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOwot
ICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgpLT50cnlD
cmVhdGVBcnJheUJ1ZmZlcigpOwogfQogCiBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRh
a2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKQEAgLTM1MSw5ICszNTUs
NyBAQCBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4g
QmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PigpLCBCbG9iOjpub3JtYWxpemVk
Q29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6OmV4
Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBhdXRvIGRhdGEgPSBidWZmZXItPmV4dHJh
Y3REYXRhKCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBXVEZNb3ZlKGRhdGEp
LCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIG1fYnVm
ZmVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9jb250ZW50VHlwZSk7CiB9CiAKIFN0cmluZyBG
ZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCkBAIC0zNjIsOCArMzY0LDggQEAgU3RyaW5n
IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNv
ZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7Ci0g
ICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIGF1dG8gYnVmZmVyID0gbV9idWZmZXIudGFrZSgp
LT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6
OnRleHRGcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIHJldHVy
biB0ZXh0OwogfQogCkBAIC0zODMsMTAgKzM4NSw4IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6
OnJlc2V0Q29uc3VtZVByb21pc2UoKQogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNl
KFJlZjxGZXRjaEJvZHlTb3VyY2U+JiYgc291cmNlKQogewogICAgIG1fc291cmNlID0gV1RGTW92
ZShzb3VyY2UpOwotICAgIGlmIChtX2J1ZmZlcikgewotICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1
ZShtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7Ci0gICAgICAgIG1fYnVmZmVyID0g
bnVsbHB0cjsKLSAgICB9CisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBtX3NvdXJjZS0+ZW5x
dWV1ZShtX2J1ZmZlci50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogfQogCiB2b2lk
IEZldGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nRmFpbGVkKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0
aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5oCmluZGV4IDJiMDU2ZjEyNjQzYmE5NjdmZTQxYTAxNTEzYTg5YjczNjI2NDJkNGMuLjg3MWQy
YzA4NjMzMWE5ODI5NGExNjZhNGI0MmUzMTg0ZTAzNzc3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTUwLDEwICs1MCwxMCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQp
OwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAg
IGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgp
OyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkgeyBtX2J1ZmZl
ciA9IFdURk1vdmUoZGF0YSk7IH0KKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KKyAgICB2b2lkIHNl
dERhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gdGFrZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
dGFrZURhdGEoKTsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZm
ZXIoKTsKICAgICBTdHJpbmcgdGFrZUFzVGV4dCgpOwogCkBAIC04Miw3ICs4Miw3IEBAIHByaXZh
dGU6CiAKICAgICBUeXBlIG1fdHlwZTsKICAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1f
YnVmZmVyOwogICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IG1fY29uc3VtZVByb21pc2U7CiAg
ICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rPiBtX3Npbms7CiAgICAg
UmVmUHRyPEZldGNoQm9keVNvdXJjZT4gbV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4IGZjNTVjYzdkODNkOGJjMTFmMDg1NGRjM2Nm
ZDg1MDk3YTMxZjEwZjYuLjAzZjg5YjYxY2E1ZjdjNzE3NmI5ZDg4Y2QxMzY2MGU4NmI3YTI1NDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCkBAIC0x
MzUsNyArMTM1LDcgQEAgdm9pZCBGZXRjaExvYWRlcjo6c3RvcCgpCiAgICAgICAgIG1fbG9hZGVy
LT5jYW5jZWwoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hMb2FkZXI6OnN0YXJ0
U3RyZWFtaW5nKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaExvYWRlcjo6
c3RhcnRTdHJlYW1pbmcoKQogewogICAgIEFTU0VSVChtX2NvbnN1bWVyKTsKICAgICBhdXRvIGZp
cnN0Q2h1bmsgPSBtX2NvbnN1bWVyLT50YWtlRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlci5oCmluZGV4IDJmOTBmMGVjM2ZmOTA1YTI2MjMxYzg0YzcyYTdh
MTg2Y2Q0YmZlODMuLjQ2MTJkMGUwZTNhN2VmZTMwNjAzOTZiMGQ3NWEyZmEzYmM0ZWRkYWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKQEAgLTM5LDE0ICsz
OSwxNCBAQCBjbGFzcyBGZXRjaEJvZHlDb25zdW1lcjsKIGNsYXNzIEZldGNoTG9hZGVyQ2xpZW50
OwogY2xhc3MgRmV0Y2hSZXF1ZXN0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IEZldGNoTG9hZGVyIGZpbmFsIDogcHVibGljIFRocmVhZGFibGVMb2FkZXJDbGllbnQgewogcHVi
bGljOgogICAgIEZldGNoTG9hZGVyKEZldGNoTG9hZGVyQ2xpZW50JiwgRmV0Y2hCb2R5Q29uc3Vt
ZXIqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+RmV0Y2hMb2FkZXIoKTsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CiAKICAgICB2b2lkIHN0YXJ0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBjb25zdCBGZXRjaFJlcXVlc3QmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2
b2lkIHN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBCbG9iJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCA0ZGY4NDI2
YzcxOGJhMTZlY2YwYTQ3ZTczZTkwMGQzZjg0OGY2NGYyLi5lMzhhODNhZGU3ZDZlMGFhZjcwY2Vi
OWM1YWE4ZmU4YWI0OTQzZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBAQCB2b2lkIEZldGNoUmVzcG9uc2U6
OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFj
ayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBTcGFuIGNodW5rIHsg
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIg
PSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4gY2h1bmsgeyBjb250aWd1b3VzQnVm
ZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1fY29uc3VtZURhdGFDYWxsYmFjaygm
Y2h1bmspOwogfQogCkBAIC01MDMsNyArNTA0LDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpmZWVk
U3RyZWFtKCkKICAgICBjbG9zZVN0cmVhbSgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBG
ZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydFN0cmVhbWluZygpCitSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RhcnRTdHJlYW1p
bmcoKQogewogICAgIEFTU0VSVChtX2xvYWRlcik7CiAgICAgcmV0dXJuIG1fbG9hZGVyLT5zdGFy
dFN0cmVhbWluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaAppbmRleCAzNDIwYzZhMzhkM2MzZjZlMmZkYjY2NzVlOGE0ZDEzNjViZjVhNWJiLi5jZjc4
NjMyMzlmZDk0NmVlMGU4ZDg4ZWFlYTcyZmU5ODllZWQzMTRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtMTM0LDcgKzEzNCw3IEBAIHByaXZh
dGU6CiAKICAgICAgICAgdm9pZCBjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5r
Q2FsbGJhY2smJik7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1p
bmcoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFt
aW5nKCk7CiAgICAgICAgIE5vdGlmaWNhdGlvbkNhbGxiYWNrIHRha2VOb3RpZmljYXRpb25DYWxs
YmFjaygpIHsgcmV0dXJuIFdURk1vdmUobV9yZXNwb25zZUNhbGxiYWNrKTsgfQogICAgICAgICBD
b25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayB0YWtlQ29uc3VtZURhdGFDYWxsYmFjaygpIHsgcmV0
dXJuIFdURk1vdmUobV9jb25zdW1lRGF0YUNhbGxiYWNrKTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmluZGV4IGRkMTljODcwYWE3ZDI0
ODVmN2U5Y2E4NDkyYTg0MjEzNTJkZGQwNDEuLjFhNjZiZjgxODMyMGU5NTYwN2Q2MTVmMWEwODJh
ODI3NmViMmEzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodC5oCkBAIC0zOCw3ICszOCw3IEBAIGVudW0gY2xhc3MgQ3JlYXRlTmV3R3JvdXBG
b3JIaWdobGlnaHQgOiBib29sIHsgTm8sIFllcyB9OwogZW51bSBjbGFzcyBIaWdobGlnaHRSZXF1
ZXN0T3JpZ2luYXRlZEluQXBwIDogYm9vbCB7IE5vLCBZZXMgfTsKIAogc3RydWN0IEFwcEhpZ2hs
aWdodCB7Ci0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gaGlnaGxpZ2h0OworICAgIFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBoaWdobGlnaHQ7CiAgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IHRleHQ7CiAgICAgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgaXNO
ZXdHcm91cDsKICAgICBIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwIHJlcXVlc3RPcmln
aW5hdGVkSW5BcHA7CkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2
b2lkIEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAg
ZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdodC0+c2l6ZSgpKTsKLSAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQtPmRhdGEoKSwgaGlnaGxpZ2h0
LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hsaWdo
dC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CiAKICAg
ICBlbmNvZGVyIDw8IHRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IGUyZDlhNjFlNDI3
Njc2ZWI3YjdkYWVhYmZmYTMyZDA0YTQ1NzZjMDYuLjVlODBmMGMwNzJkNDlhM2VmNzk2OTU5MzAy
YzQ0NTZjZDJhYmRlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDQsMTUgKzQ0LDE2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3RleHByIHVpbnQ2NF90IGhpZ2hsaWdodEZpbGVT
aWduYXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0dXJlICAoQSlwcGxl
KEFQKXBsaWNhdGlvbihIKWlnaGxpZ2h0cygyMDIxKQogCi1zdGQ6Om9wdGlvbmFsPEFwcEhpZ2hs
aWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewotICAgIGF1dG8gZGVjb2RlciA9IGJ1ZmZlci5kZWNvZGVyKCk7CisgICAgYXV0
byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byBk
ZWNvZGVyID0gY29udGlndW91c0J1ZmZlci0+ZGVjb2RlcigpOwogICAgIHN0ZDo6b3B0aW9uYWw8
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICBy
ZXR1cm4gZGF0YTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
Ojp0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhOjp0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgV1RGOjpQ
ZXJzaXN0ZW5jZTo6RW5jb2RlciBlbmNvZGVyOwogICAgIGVuY29kZXIgPDwgKnRoaXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJh
bmdlRGF0YS5oCmluZGV4IGNmNjM4MWFjZmIwYTUyMTFiNDM1MDhiN2I1MTdkNmRiMmY2ZmM3NDMu
LmI1ZGFmNjAyNTM5OGEzZjdlNmYxZDM3YWJlY2U4NDRkNGYxYzY1NDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0
YS5oCkBAIC0zMywxMiArMzMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxF
KEFQUF9ISUdITElHSFRTKQogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBBcHBIaWdobGlnaHRSYW5nZURhdGEgewogV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVy
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhPiBjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHN0
cnVjdCBOb2RlUGF0aENvbXBvbmVudCB7CiAgICAgICAgIFN0cmluZyBpZGVudGlmaWVyOwogICAg
ICAgICBTdHJpbmcgbm9kZU5hbWU7CkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRS
YW5nZURhdGE+IGRlY29kZShEZWNvZGVyJik7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiB0b1No
YXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0b1No
YXJlZEJ1ZmZlcigpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFN0b3JhZ2UuY3BwCmluZGV4IGRjMzlhMGYwZDE4ZmZmY2E3ZGZiNDY1MjE5Y2Q2MTJhOWY3
MzhmOGYuLmU1ZGU4NDk0ZjM1MDQ1MzU5NGIyZjJlODhjM2RkYTMzZmE5YWY3MDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0
b3JhZ2UuY3BwCkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpz
dG9yZUFwcEhpZ2hsaWdodChSZWY8U3RhdGljUmFuZ2U+JiYgcmFuZ2UpCiAgICAgbV9kb2N1bWVu
dC0+cGFnZSgpLT5jaHJvbWUoKS5zdG9yZUFwcEhpZ2hsaWdodChXVEZNb3ZlKGhpZ2hsaWdodCkp
OwogfQogCi12b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhp
Z2hsaWdodChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgU2Nyb2xsVG9IaWdobGlnaHQgc2Ny
b2xsKQordm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdo
bGlnaHQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBTY3JvbGxUb0hpZ2hs
aWdodCBzY3JvbGwpCiB7CiAgICAgYXV0byBhcHBIaWdobGlnaHRSYW5nZURhdGEgPSBBcHBIaWdo
bGlnaHRSYW5nZURhdGE6OmNyZWF0ZShidWZmZXIpOwogICAgIGlmICghYXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0U3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0U3RvcmFnZS5oCmluZGV4IGIxNTJmNzZlZDQyNDA4OTJlYTdkZTIxZTJjYjA2ZDQ3
MmQ4NzMzNjAuLmUyNzY2MzNiNDg0ZjgxMDk0YWRlY2U0NWY2NGFiYmVkMTc4MTI1MDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3Jh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRT
dG9yYWdlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJM
RShBUFBfSElHSExJR0hUUykKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3RhdGljUmFuZ2U7CiBjbGFz
cyBIaWdobGlnaHQ7CiAKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIH5BcHBIaWdobGln
aHRTdG9yYWdlKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3JlQXBwSGlnaGxpZ2h0
KFJlZjxTdGF0aWNSYW5nZT4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlQW5k
U2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU2Nyb2xsVG9IaWdobGln
aHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxp
Z2h0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTY3JvbGxUb0hpZ2hsaWdodCk7CiAg
ICAgdm9pZCByZXN0b3JlVW5yZXN0b3JlZEFwcEhpZ2hsaWdodHMoKTsKICAgICBNb25vdG9uaWNU
aW1lIGxhc3RSYW5nZVNlYXJjaFRpbWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVBdExhc3RSYW5n
ZVNlYXJjaDsgfQogICAgIHZvaWQgcmVzZXRMYXN0UmFuZ2VTZWFyY2hUaW1lKCkgeyBtX3RpbWVB
dExhc3RSYW5nZVNlYXJjaCA9IE1vbm90b25pY1RpbWU6Om5vdygpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDBhZmI3ZWU1Y2M4NzQzNTZiMzVhMTY4MDMyMzFhNjEz
NjRjMDk4NjEuLjI3Y2Q4ZWVjNTNlMWFjZmM1OTg1ZWM3YjhmMDVlMjI3NjQ1Yzg3N2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02ODYsNyArNjg2LDcgQEAgYm9vbCBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgoSURCT2JqZWN0U3RvcmVJbmZv
JiBvYmplY3RTdG9yZUluZm8KICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbigqbV9z
cWxpdGVEQik7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7
CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRo
KCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSIpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dAogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNy
ZWF0ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24i
X3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNl
cmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2Ig
PSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhC
bG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRo
IHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQ
YXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTEz
ODcsNyArMTM4Nyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5k
ZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4IGluIGEg
bm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5
UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZv
LmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5UGF0aCB0byBjcmVhdGUgaW5kZXggaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE0NjQs
NyArMTQ2NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFz
SW5kZXhSZWNvcmQoY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvCiB7CiAgICAgaGFzUmVjb3JkID0g
ZmFsc2U7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJp
YWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAg
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3Rv
cmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgaW5kZXggcmVj
b3JkIGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNTMzLDEzICsxNTMzLDEzIEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQoaW50NjRfdCBvYmpl
Y3RTdG9yZUlELCBpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQgLSAlcywgJXMiLCBrZXlWYWx1ZS5sb2dnaW5nU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgaW5kZXhLZXkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVmZmVyID0gc2VyaWFs
aXplSURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1ZmZlcikgewogICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3Jl
ZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBk
YXRhYmFzZSJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CisgICAgYXV0byB2YWx1ZUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOwogICAgIGlmICghdmFsdWVCdWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHRoZSB2YWx1ZSB0byBi
ZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVu
a25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRo
ZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTY2MSw3ICsxNjYxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmkKICAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygp
KQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHNl
ZSBpZiBrZXkgZXhpc3RzIGluIG9iamVjdHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJh
bnNhY3Rpb24iX3MgfTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5j
ZSBpbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBp
biBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTE3NDEsNyArMTc0MSw3IEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKFNRTGl0ZUlEQlRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwKICAgICBBU1NFUlQodHJhbnNhY3Rpb24ubW9kZSgpICE9IElEQlRyYW5zYWN0aW9u
TW9kZTo6UmVhZG9ubHkpOwogICAgIFVOVVNFRF9QQVJBTSh0cmFuc2FjdGlvbik7CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURh
dGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsK
ICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xOTYy
LDcgKzE5NjIsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFuIG9i
amVjdCBzdG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5
RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEp
OwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSIpOwogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0yMTI0LDcgKzIx
MjQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGF1dG8ga2V5ID0ga2V5UmFuZ2Uu
bG93ZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0
YTo6bWluaW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFs
aXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTIxMzMsNyArMjEzMyw3
IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAga2V5ID0ga2V5UmFuZ2UudXBwZXJLZXk7
CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0gSURCS2V5RGF0YTo6bWF4aW11
bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVy
IElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTI0NDMsNyArMjQ0Myw3IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVL
ZXkoaW50NjRfdCBpbmRleElECiAKICAgICBBU1NFUlQoa2V5LmlzVmFsaWQoKSAmJiBrZXkudHlw
ZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4ICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERC
OjpLZXlUeXBlOjpNaW4pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXkpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCJfcyB9OwpAQCAtMjUwOCwxNCArMjUw
OCwxNCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpbwogICAgIG91dENvdW50ID0gMDsKIAogICAg
IGF1dG8gbG93ZXJLZXkgPSByYW5nZS5sb3dlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1p
bmltdW0oKSA6IHJhbmdlLmxvd2VyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGxvd2Vy
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CisgICAgYXV0byBsb3dlckJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOwogICAgIGlmICghbG93ZXJCdWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktl
eSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZv
ciBjb3VudCBvcGVyYXRpb24iX3MgfTsKICAgICB9CiAKICAgICBhdXRvIHVwcGVyS2V5ID0gcmFu
Z2UudXBwZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptYXhpbXVtKCkgOiByYW5nZS51cHBl
cktleTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEodXBwZXJLZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKHVwcGVyS2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJp
YWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9z
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IDhiZmUyMjdkYjYxOTYyM2JkOGRmMDZhMTA4
NThjZjAzMjFjNDMyMDYuLjQ4NjEwMzRkM2ExMmRhMGMwOWNmZWRmZTlmMmVhNjVhNjgxMDAzNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgYm9vbCBTUUxpdGVJ
REJDdXJzb3I6OmJpbmRBcmd1bWVudHMoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSht
X2N1cnJlbnRMb3dlcktleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KG1fY3VycmVudExvd2VyS2V5KTsKICAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJl
bnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19F
UlJPUigiQ291bGQgbm90IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50IChsb3dlciBrZXkpIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMxNSw3ICszMTUsNyBAQCBib29sIFNRTGl0ZUlEQkN1
cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6
ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAobV9wcmVJbmRleFN0YXRlbWVudC0+YmluZEJsb2Io
Y3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAg
TE9HX0VSUk9SKCJDb3VsZCBub3QgYmluZCBpZCBhcmd1bWVudCB0byBwcmUgc3RhdGVtZW50IChr
ZXkpIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAppbmRleCAwYTQ2OWJkMGJk
MWYzOGRjYjk2YjM5ZDhjMzAwMGFmNzNkMTJhYjU5Li5jOWQ2ZGE2YmRkOWY5Mzk1MDFmNGY0MjMy
YjRjNzgzN2Q4NDBkYWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gTWVkaWFSZWNvcmRlcjo6c3RhcnRSZWNvcmRpbmcoc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gdGltZVNsaWMKICAgICByZXR1cm4geyB9OwogfQogCi1zdGF0aWMgaW5saW5lIFJl
ZjxCbG9iRXZlbnQ+IGNyZWF0ZURhdGFBdmFpbGFibGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgZG91YmxlIHRpbWVDb2RlKQorc3RhdGljIGlubGluZSBSZWY8QmxvYkV2ZW50
PiBjcmVhdGVEYXRhQXZhaWxhYmxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBkb3VibGUgdGltZUNvZGUpCiB7CiAgICAgYXV0byBibG9iID0gYnVmZmVyID8g
QmxvYjo6Y3JlYXRlKGNvbnRleHQsIGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSwgbWltZVR5cGUpIDog
QmxvYjo6Y3JlYXRlKGNvbnRleHQpOwogICAgIHJldHVybiBCbG9iRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuZGF0YWF2YWlsYWJsZUV2ZW50LCBCbG9iRXZlbnQ6OkluaXQgeyB7IGZhbHNlLCBm
YWxzZSwgZmFsc2UgfSwgV1RGTW92ZShibG9iKSwgdGltZUNvZGUgfSwgQmxvYkV2ZW50OjpJc1Ry
dXN0ZWQ6Olllcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXIuaAppbmRleCA3NzEyYjQ0NTI4MzY3ZDhjMjcyNTAyYWRiYWFjYWFm
OTc4OGNiZGIwLi4xZTliNzRhYjE3ZTMxMDhkYjQyMDliOWI0ZjAyMTRkYTExYWM2ZTA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hFcnJv
cihFeGNlcHRpb24mJik7CiAKICAgICBlbnVtIGNsYXNzIFRha2VQcml2YXRlUmVjb3JkZXIgeyBO
bywgWWVzIH07Ci0gICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+Owor
ICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT47CiAg
ICAgdm9pZCBmZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJiwgVGFrZVByaXZhdGVSZWNvcmRl
cik7CiAKICAgICAvLyBNZWRpYVN0cmVhbTo6T2JzZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKaW5kZXggM2Y0Yzli
Y2QxMzNhYzI5ZjNmN2RkZTE5OTQ3OGUzOTI1N2Q1ZTY2Yi4uODc0YWE3ZjBiMThmMGVlNzU4ODBi
YTVmNWVmNjdkNDdiZmMyYjJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBB
cnR3b3JrSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgTmV0d29ya0wKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBTYW5pdGl6
ZSB0aGUgaW1hZ2UgYnkgZGVjb2RpbmcgaXQgaW50byBhIEJpdG1hcEltYWdlLgotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRpemUgPSBtX2NhY2hlZEltYWdlLT5pbWFnZSgp
LT5kYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2Fu
aXRpemUgPSBtX2NhY2hlZEltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAgICAgYXV0byBiaXRtYXBJ
bWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICBiaXRtYXBJbWFnZS0+c2V0RGF0YShX
VEZNb3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKICAgICBhdXRvIGltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmNwcAppbmRleCAyYjNjZGUzNjA4MjQ3MWMxMWM4N2ZjZjYxY2M4MWNjMzYw
YzM5ZDkwLi5kMzc4YWZjNmY4YTFiNTdhMDMwMmUyYzg2OGIyNDBhMjA5N2ZlNGM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3Bw
CkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlclRpbWVy
RmlyZWQoKQogICAgIC8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmls
ZS90aXAvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS5odG1sI3NvdXJjZWJ1ZmZlci1zZWdtZW50
LXBhcnNlci1sb29wCiAgICAgLy8gV2hlbiB0aGUgc2VnbWVudCBwYXJzZXIgbG9vcCBhbGdvcml0
aG0gaXMgaW52b2tlZCwgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBhcHBlbmREYXRhID0gV1RGTW92ZShtX3BlbmRpbmdBcHBlbmREYXRhKTsKKyAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYXBwZW5kRGF0YSA9IFdURk1vdmUobV9w
ZW5kaW5nQXBwZW5kRGF0YSk7CiAgICAgLy8gMS4gTG9vcCBUb3A6IElmIHRoZSBpbnB1dCBidWZm
ZXIgaXMgZW1wdHksIHRoZW4ganVtcCB0byB0aGUgbmVlZCBtb3JlIGRhdGEgc3RlcCBiZWxvdy4K
ICAgICBpZiAoIWFwcGVuZERhdGEgfHwgIWFwcGVuZERhdGEtPnNpemUoKSkgewogICAgICAgICBz
b3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoQXBwZW5kUmVzdWx0OjpBcHBlbmRTdWNj
ZWVkZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNl
QnVmZmVyLmgKaW5kZXggNTIwYzA3NzU2OTZhMmYwZTJlNzMwMDczNWU4Yzk3NzQ5NWYxYTYxNC4u
ZDRjODU3OWMwYmJkNDQzYTUxMmZhOWY2OGM0MjdlYzA0ODg1ZDBkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCkBAIC0yMjIsNyAr
MjIyLDcgQEAgcHJpdmF0ZToKIAogICAgIFdURjo6T2JzZXJ2ZXI8dm9pZCooKT4gbV9vcGFxdWVS
b290UHJvdmlkZXI7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BlbmRpbmdBcHBlbmRE
YXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX3BlbmRpbmdBcHBlbmRE
YXRhOwogICAgIFRpbWVyIG1fYXBwZW5kQnVmZmVyVGltZXI7CiAKICAgICBSZWZQdHI8VmlkZW9U
cmFja0xpc3Q+IG1fdmlkZW9UcmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5j
cHAKaW5kZXggZmViMWI4ZmZmYjdiOTRjOWU3ZWIwYmU0OGFkMzVkZDcwNzljNzBiYi4uY2M1YTg2
NTczMDU2NTdkMGE5NzA1NjYxZTRiYjQ5Y2UwYjg0MDVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxS
ZW1vdGVIYW5kbGVyLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQoKQogICAgIG1faXNSZWFkeVRvU2VuZCA9IHRydWU7CiAK
ICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX3BlbmRpbmdNZXNzYWdlcykKLSAgICAgICAgbV9j
b25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1l
c3NhZ2UuYnVmZmVyLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOworICAgICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1Jhdywg
bWVzc2FnZS5idWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWVzc2FnZS5idWZmZXIt
PnNpemUoKSk7CiAgICAgbV9wZW5kaW5nTWVzc2FnZXMuY2xlYXIoKTsKIAogICAgIGlmIChtX2lz
UGVuZGluZ0Nsb3NlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKaW5kZXggZjU4Mjdk
ZjkzNzk0OTNkMjgxMjcwMTc3Y2NmYmNhMDU1MTUzMjMxZi4uNzM5NDJhODM1OTMxYTlkMjg0YzZh
NDUxYmI4ZGJmYjU3NjVjYWRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCkBA
IC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJUQ0RhdGFDaGFubmVs
SGFuZGxlckNsaWVudDsKIGNsYXNzIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rp
b247CiBjbGFzcyBSVENFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlciBmaW5h
bCA6IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxS
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0cnVjdCBNZXNzYWdlIHsKICAg
ICAgICAgYm9vbCBpc1JhdyB7IGZhbHNlIH07Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB9
OwogICAgIFZlY3RvcjxNZXNzYWdlPiBtX3BlbmRpbmdNZXNzYWdlczsKICAgICBib29sIG1faXNQ
ZW5kaW5nQ2xvc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggM2UxMTA1NDAwMzUzZGU1NjBmMjQ5MzhhOWIyMDhl
ZjM2ZjY4MDNjNC4uM2NlZWQwYTAxMWU3YjU0NmZhZGRmNDhiYmRhMjExZGZkZDUyNGM1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBA
IC05Nyw4ICs5Nyw4IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGll
bnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQsCiAgICAgbV9jb250ZXh0SWRl
bnRpZmllciA9IGNvbnRleHRJZGVudGlmaWVyOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDog
bV9idWZmZXJlZE1lc3NhZ2VzKSB7Ci0gICAgICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsmXShSZWY8
U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdE
YXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgc3dpdGNoT24obWVzc2Fn
ZSwgWyZdKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgZGF0YSkgeworICAgICAgICAgICAg
Y2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwgWyZdKFN0cmluZyYgdGV4dCkgewogICAgICAgICAg
ICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdEYXRhKHRleHQpOwogICAgICAgICB9LCBbJl0oU3Rh
dGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyLmgKaW5kZXggNDFmOTUyODIxZTYyMDA5M2Y4ZWVmZTMyYzVlZDRhZTBm
NWU1NDE5Ny4uMTFiZDQ1ZGU5MTU1Nzc5ZmZjOWVmYjAzZTk1NTI4ZjA1ZTY0ZDc0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKQEAgLTgyLDcg
KzgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgUlRDRGF0YUNoYW5uZWxTdGF0ZSBzdGF0ZTsKICAg
ICAgICAgc3RkOjpvcHRpb25hbDx3ZWJydGM6OlJUQ0Vycm9yPiBlcnJvcjsKICAgICB9OwotICAg
IHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnZhcmlhbnQ8U3RhdGVDaGFuZ2UsIFN0cmluZywgUmVmPFNo
YXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnZhcmlhbnQ8U3RhdGVDaGFu
Z2UsIFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAgICB1c2luZyBQZW5k
aW5nTWVzc2FnZXMgPSBWZWN0b3I8TWVzc2FnZT47CiAgICAgdm9pZCBzdG9yZU1lc3NhZ2UoUGVu
ZGluZ01lc3NhZ2VzJiwgY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVyJik7CiAgICAgdm9pZCBwcm9j
ZXNzTWVzc2FnZShjb25zdCB3ZWJydGM6OkRhdGFCdWZmZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApp
bmRleCAzMDljMDI2NDNmNWE3YWU5ZmVjMDhhMTRlYjIxMjI0MDliMWY4OWUwLi42M2YxYzNjYmUx
ZWE4MWNmYmY0NTQ2NDYzMjBjZGY3ZmFjZjU5YzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCkBAIC0x
MTYsNyArMTE2LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3Qg
VVJMJiB1cmwpCiAKICAgICBtX3NvdXJjZVVSTCA9IHVybDsKIAotICAgIG1fZGF0YSA9IG51bGxw
dHI7CisgICAgbV9kYXRhLnJlc2V0KCk7CiAgICAgbV9kYXRhQ29tcGxldGUgPSBmYWxzZTsKIAog
ICAgIGlmIChtX3Jlc291cmNlKSB7CkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBIVE1MTW9kZWxF
bGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fZGF0YS5l
bXB0eSgpOwogCiAgICAgbV9yZXNvdXJjZSA9IHJlc291cmNlLnZhbHVlKCk7CiAgICAgbV9yZXNv
dXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKQEAgLTE4MCw4ICsxODAsNyBAQCBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYgcwogdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsK
ICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7Ci0g
ICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7
CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpCkBAIC0xOTUsNyArMTk0LDcgQEAgdm9pZCBIVE1MTW9kZWxF
bGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5l
dHdvcmtMb2EKICAgICB9OwogCiAgICAgaWYgKHJlc291cmNlLmxvYWRGYWlsZWRPckNhbmNlbGVk
KCkpIHsKLSAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhLnJlc2V0KCk7
CiAKICAgICAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRlUmVuZGVyZXIoKTsK
IApAQCAtMjA0LDcgKzIwMyw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfQogCiAg
ICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1f
ZGF0YS5yZWxlYXNlTm9uTnVsbCgpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJj
ZS51cmwoKSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnRha2UoKS0+bWFr
ZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkp
OwogCiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRlUmVuZGVyZXIoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmgKaW5kZXggMDVhMWNkYWEzZTE0ODc3YTBhZTQ2NWI2MzQ5YWE1YmJiMWFmMmM4
Mi4uY2UwMDlkNGU1ZWRjMzA5NzQ1ZTAyN2IwNjMyYmQxZTZlODU4MDNiZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogICAgIFVSTCBtX3NvdXJjZVVSTDsK
ICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBtX2RhdGE7CiAgICAgUmVmUHRyPE1vZGVsPiBtX21vZGVsOwogICAgIFVuaXF1ZVJlZjxSZWFk
eVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wgbV9kYXRhQ29tcGxldGUgeyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3Nj
ZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQppbmRleCAz
ZTgyYWMyMjE2Nzk2YzllZGI3NjBhMTllZDdhY2UxZjQyY2QzNzc3Li4xMzAzZWM0ZDI1NjhhNjZm
ODdkN2ZlYjIwYmYyYjAzMzkyMzJjM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRN
b2RlbExvYWRlclVTRC5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNV
Ukw+IHdyaXRlVG9UZW1wb3JhcnlGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAg
ICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIk1vZGVsRmls
ZSIsIGZpbGVIYW5kbGUsICIudXNkeiIpOwogICAgIEFTU0VSVChGaWxlU3lzdGVtOjppc0hhbmRs
ZVZhbGlkKGZpbGVIYW5kbGUpKTsKIAotICAgIHNpemVfdCBieXRlQ291bnQgPSBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9k
ZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIHNpemVfdCBieXRlQ291bnQgPSBGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEFTU0VS
VF9VTlVTRUQoYnl0ZUNvdW50LCBieXRlQ291bnQgPT0gbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXpl
KCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCmluZGV4
IDBiODk4ZjZhZGI1N2ViMjVkYzQ5MzdkODFmZjVkMTRkNTI5NzZjODQuLmQ1MTczZmJmOGI0MDM0
MWM1Y2Y4ZDhhNGY1NWVlYWM4ZmY4MzhhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCdWZmZXJTb3VyY2U7CiBjbGFzcyBSZWFkYWJsZVN0
cmVhbTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIFJlYWRhYmxlU3RyZWFtU2luayA6IHB1YmxpYyBSZWZDb3VudGVkPFJlYWRhYmxl
U3RyZWFtU2luaz4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKaW5kZXggYzQ1MmM4M2ZiZDVjZTg5
NWJkZDAzMWFjZjE0NjhmNzg2NTA2MjJkNy4uYjhiNzc4NWY5MWQwNjhjMmE0NmNlYjFkNjU5NzU4
ZmNmOGI2OWQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01MSwxMyArNTEsMTUgQEAgcHVibGljOgog
ICAgICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CiAKKyAgICAgICAgaWYgKCFtX2NvbnRpZ3VvdXNCdWZmZXIgJiYgKCFt
X2NvbnRhaW5zT25seUFTQ0lJIHx8ICptX2NvbnRhaW5zT25seUFTQ0lJKSkKKyAgICAgICAgICAg
IG1fY29udGlndW91c0J1ZmZlciA9IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5tYWtlQ29udGln
dW91cygpOwogICAgICAgICBpZiAoIW1fY29udGFpbnNPbmx5QVNDSUkpIHsKLSAgICAgICAgICAg
IG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9zY3JpcHRCdWZm
ZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7Cisg
ICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1f
Y29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgp
KTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgICAg
ICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRz
KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigp
LT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6
Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1f
c2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmICgq
bV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgIHJldHVybiB7IG1fc2NyaXB0QnVmZmVy
LmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5i
dWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAgICAgcmV0dXJuIHsgbV9jb250aWd1b3VzQnVm
ZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIo
KS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICghbV9jYWNoZWRTY3JpcHRTdHJpbmcpIHsKICAg
ICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5nID0gbV9zY3JpcHRCdWZmZXIudG9TdHJpbmco
KTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIG1fc2NyaXB0QnVmZmVyID0gc2NyaXB0QnVmZmVyOworICAgICAgICBtX2NvbnRpZ3VvdXNC
dWZmZXIgPSBudWxscHRyOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTkxLDYgKzk0LDcgQEAgcHJp
dmF0ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZmZXIgbV9zY3JpcHRCdWZmZXI7CisgICAgbXV0
YWJsZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRpZ3VvdXNCdWZmZXI7CiAgICAgbXV0YWJs
ZSB1bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9jYWNo
ZWRTY3JpcHRTdHJpbmc7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fY29udGFp
bnNPbmx5QVNDSUk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDdlNDlhOWU3MzIyNmI2NWNjMjhiZjU5NDgxM2IwZjgzYjI2
OWQyMmIuLmVmMzdmMWQwY2E0NjJiYjliN2M5YjZhNTVkMThlYmI0YzExODFhN2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBA
IC01NSw3ICs1NSw3IEBAIGNsYXNzIERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzOwogY2xhc3MgSURC
VmFsdWU7CiBjbGFzcyBNZXNzYWdlUG9ydDsKIGNsYXNzIEltYWdlQml0bWFwQmFja2luZzsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBlbnVtIGNs
YXNzIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOwogCiBlbnVtIGNsYXNzIFNlcmlhbGl6YXRpb25F
cnJvck1vZGUgeyBOb25UaHJvd2luZywgVGhyb3dpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmgKaW5kZXggODI2MTMzMzIyYThlZTVmMzc4MmZiYjIzMTIzYjJkZDNhNTdh
MTcyOC4uMTA4ZTZjODc2N2QwZDJmZGFjYmU2NTA0ZWJjNTA3MGU4ODJiZTY0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDU1NGb250RmFjZTsKIGNsYXNzIENTU0ZvbnRTZWxlY3RvcjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRm9udDsKIGNsYXNz
IEZvbnRDcmVhdGlvbkNvbnRleHQ7CkBAIC00Miw3ICs0Myw2IEBAIGNsYXNzIEZvbnREZXNjcmlw
dGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0
IEZvbnRWYXJpYW50U2V0dGluZ3M7CiBjbGFzcyBTVkdGb250RmFjZUVsZW1lbnQ7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0
dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGlu
Z3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IDFkZWFjNGY0MWNmNDlmMWY4
ODJkY2NlZmQ0OGNmNmE5NzMyZjNlZDkuLmM0MmVjMDUxZmUxMWViYTE0ZjgxMzM1OWQ4ZDE3YTJj
MjgxNjY0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC00MDIsNyArNDAy
LDcgQEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlVHlwZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRG
aWxlUmVhZGVyIHsKICAgICAgICAgdHlwZXMuYWRkKEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShm
aWxlbmFtZSkpOwogICAgIH0KIAotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCisgICAgdm9pZCByZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpCiAgICAgewogICAgICAgICB0eXBlcy5hZGQodHlwZSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDE3MjRjZjBlNTBiYWE1YjliMjQxMzA0ODFlZTcy
NGNiNzgyMDdhYTQuLmM1ZTllMjZiMzcyYWU2ODNmMTg2OGU5MjBjNDVlZDcwZWRmNTU0N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxMzMsNyArNDEzMyw3IEBAIFByb21pc2Vk
QXR0YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVs
ZW1lbnQpCiAgICAgcmV0dXJuIHsgYXR0YWNobWVudC0+dW5pcXVlSWRlbnRpZmllcigpLCBXVEZN
b3ZlKGFkZGl0aW9uYWxUeXBlcyksIFdURk1vdmUoYWRkaXRpb25hbERhdGEpIH07CiB9CiAKLXZv
aWQgRWRpdG9yOjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJy
ZWRGaWxlTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBFZGl0b3I6OnJlZ2lz
dGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGlmIChhdXRvKiBjbGllbnQg
PSB0aGlzLT5jbGllbnQoKSkKICAgICAgICAgY2xpZW50LT5yZWdpc3RlckF0dGFjaG1lbnRJZGVu
dGlmaWVyKGlkZW50aWZpZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxlTmFtZSwgV1RGTW92
ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAwMWZlMGI1ZTA0NGVmNjNmMjZh
NzFiNDcyZWY5OGIxMWMyMjhiOTFjLi4xZDA3MTZjNWI5M2M4YmI3YWQ3M2Y0MTc0Y2E4MDQ1OTA1
ZjkxOTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU3LDkgKzU3LDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjsKIGNsYXNz
IEFyY2hpdmVSZXNvdXJjZTsKLWNsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIENvbXBvc2l0ZUVk
aXRDb21tYW5kOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3VzdG9tVW5kb1N0ZXA7Citj
bGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBEZWxldGVCdXR0b25Db250cm9sbGVyOwogY2xhc3Mg
RWRpdENvbW1hbmQ7CiBjbGFzcyBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOwpAQCAtNzQsNyArNzUs
NyBAQCBjbGFzcyBLaWxsUmluZzsKIGNsYXNzIFBhc3RlYm9hcmQ7CiBjbGFzcyBQYXN0ZWJvYXJk
V3JpdGVyRGF0YTsKIGNsYXNzIFJlbmRlckxheWVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7CiBjbGFzcyBTcGVsbENoZWNr
UmVxdWVzdDsKIGNsYXNzIFNwZWxsQ2hlY2tlcjsKQEAgLTU2Myw3ICs1NjQsNyBAQCBwdWJsaWM6
CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmll
cihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcm
IHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGZpbGVEYXRhKTsKKyAgICB2
b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZmlsZURhdGEpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRh
Y2htZW50cyhWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKTsKICAgICB2b2lkIHJl
Z2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CiAgICAgdm9pZCByZWdpc3RlckF0
dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1dlYkNvbnRlbnRSZWFkZXIuaAppbmRleCAwOGFhMTI0MjY2MjBmNzY5NTNhNzliMzRlZGU1ZjZk
ZjA1MjdiMDE1Li45NTdiNGZkNGE1NTdmYzgxY2QzMDY5ZWVhY2I4OTQ4OGE5NDdiN2NkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaApAQCAtNzIsMTYgKzcyLDE2
IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWFkRmlsZVBhdGgoY29uc3QgU3RyaW5nJiwgUHJlc2Vu
dGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlID0geyB9KSBvdmVycmlkZTsKICAgICBib29sIHJlYWRGaWxlUGF0aHMoY29u
c3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKICAgICBib29sIHJlYWRIVE1MKGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYs
IGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRp
b25TaXplID0geyB9KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRJbWFnZShSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHBy
ZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFVS
TChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKICAgICBib29sIHJl
YWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7Ci0gICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29s
IHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkRGF0YUJ1ZmZl
cihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwg
UHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlk
ZTsKKyAgICBib29sIHJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVy
cmlkZTsKKyAgICBib29sIHJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlk
ZTsKKyAgICBib29sIHJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwor
ICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJl
ZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOwogI2VuZGlmCiB9OwogCkBAIC05OSwx
NiArOTksMTYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcm
LCBQcmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBTdHJpbmcmID0geyB9KSBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkSFRNTChjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZFBsYWluVGV4dChj
b25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZERhdGFC
dWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUHJlc2Vu
dGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHJl
YWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29s
IHJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJl
YWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZERh
dGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29y
ZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29y
ZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCA1NDllYjdkMmU0YzA3NTQ4ZTRhOGM5ZWEy
NGVjMjBlNGYyMWJmYTI1Li4xMTdkYmE2OGVkYjBiZDRiNmMzMGUwOTQ4NWQ5ZDBjMGYyOWMzODI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmls
ZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2Fy
ZEZpbGVSZWFkZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHZvaWQgV2ViQ29yZVBhc3RlYm9hcmRG
aWxlUmVhZGVyOjpyZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICBmaWxl
cy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGZpbGVuYW1lKSk7CiB9CiAKLXZv
aWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
Cit2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQu
Z2V0KCksIEJsb2I6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBidWZmZXItPmV4dHJhY3REYXRhKCks
IHR5cGUpLCBmaWxlbmFtZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKaW5kZXggNWM1MjlkZDdjOGVjYzAwMDQ4ZmNi
NGQxNTgxNDYzNWIyNGQ5MGJiNy4uOWQ4MTYwNWYxOTkyOThmMTljMGVkNjk5NWZlM2JkNzc4MzAz
NGZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2Fy
ZEZpbGVSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJv
YXJkRmlsZVJlYWRlci5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBXZWJDb3JlUGFzdGVib2Fy
ZEZpbGVSZWFkZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgfldlYkNvcmVQ
YXN0ZWJvYXJkRmlsZVJlYWRlcigpOwogCiAgICAgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3Ry
aW5nJikgZmluYWw7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9p
ZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAgICAgUmVmUHRyPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ+IGNvbnRleHQ7CiAgICAgVmVjdG9yPFJlZjxGaWxlPj4gZmlsZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXgg
ZDQ4ZTExYzk2Yjc4MDhmODgzNTRiM2IwNzQ3ZWViMWYxZTM3ZTNmMy4uMDc4MjQ4MzYyYWEwNTRk
YzNhYjAwMDA0NTE3MTg0MTk4YTU4MGY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3ICsxMjczLDcgQEAgQk9PTCBIVE1MQ29u
dmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgTlNVUkwg
KnVybCwgQk9PTAogICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJl
c291cmNlKHVybCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1p
bWVUeXBlKCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBsYWNlaG9sZGVyIHx8IG1pbWVUeXBlICE9
ICJ0ZXh0L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtb
TlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNl
LT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgICAgICBmaWxlV3Jh
cHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRo
Q29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOwogICAgICAgICAgICAgICAgIFtmaWxlV3JhcHBlciBzZXRQcmVmZXJyZWRGaWxl
bmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZSh1cmwsIG1pbWVUeXBlKV07CiAgICAg
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBub3RGb3VuZCA9IFlFUzsKQEAgLTIzMDAs
NyArMjMwMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJG
b3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiAKICAgICBpZiAoZGF0YVNvdXJj
ZSkgewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBkYXRh
U291cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAgICAgICAgICBhdXRvIHdyYXBwZXIgPSBh
ZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRz
OnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgIGF1
dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZp
bGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gcmVzb3Vy
Y2UtPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAgICAgICAgIGlmICghZmls
ZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0g
c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVzb3VyY2UtPnVybCgpLCByZXNvdXJjZS0+
bWltZVR5cGUoKSk7CkBAIC0yMzIyLDggKzIzMjIsOCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmls
ZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJMKERvY3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBO
Uwogc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvckVsZW1lbnQo
SFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hl
ZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7Ci0gICAgICAgIGlmIChTaGFyZWRCdWZm
ZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZp
bGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAg
ICAgICBpZiAoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1h
Z2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgfQogCiAgICAg
YXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IDZhYTNj
ZDU0ZTgyYjk5YjMxOTQyN2JlZTM0YzhjNDRiNjc5ZTIyNzkuLjc2YjFhMDA5ZGU0MzBmYTNiNTRk
OWExNWU2NzhjZDgzZjMxNDVmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0yNDUsNyArMjQ1LDcgQEAgc3Rh
dGljIGJvb2wgc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoY29uc3QgRnJhbWUmIGZy
YW1lKQogCiAjZW5kaWYKIAotc3RhdGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFn
bWVudEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkb2N1bWVudCwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFBy
ZXNlbnRhdGlvblNpemUgcHJlZmVycmVkU2l6ZSkKK3N0YXRpYyBSZWY8RG9jdW1lbnRGcmFnbWVu
dD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQoRnJhbWUmIGZyYW1lLCBEb2N1bWVu
dCYgZG9jdW1lbnQsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQogewog
I2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgYXV0byBhdHRhY2htZW50ID0gSFRN
TEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1
bWVudCk7CkBAIC0zMDksNyArMzA5LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50
V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8mIHJlc291cmNlID0gcmVzb3VyY2VFbnRy
eS0+dmFsdWU7Ci0gICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRh
Y2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNl
LT5kYXRhKCkgfSk7CisgICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBh
dHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291
cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICB9CiAKICAgICBpZiAoIXNlcmlh
bGl6ZWRBdHRhY2htZW50RGF0YS5pc0VtcHR5KCkpCkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGlj
IHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9j
dW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgbmFtZSA9ICJtZWRpYSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5h
cHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291
cmNlLT52YWx1ZS0+ZGF0YSgpLCBpbWFnZSB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlv
bkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgp
LCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBpbWFnZSB9KTsKICAg
ICB9CiAKICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxPYmpl
Y3RFbGVtZW50PihmcmFnbWVudCkpIHsKQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgdm9pZCBy
ZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZy
YWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1l
ID0gImZpbGUiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsg
V1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFs
dWUtPmRhdGEoKSwgb2JqZWN0IH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5h
cHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291
cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIG9iamVjdCB9KTsKICAgICB9CiAK
ICAgICBmb3IgKGF1dG8mIGluZm8gOiBhdHRhY2htZW50SW5zZXJ0aW9uSW5mbykgewpAQCAtNDI4
LDcgKzQyOCw3IEBAIHN0cnVjdCBNYXJrdXBBbmRBcmNoaXZlIHsKICAgICBSZWY8QXJjaGl2ZT4g
YXJjaGl2ZTsKIH07CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4
dHJhY3RNYXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6OmZ1
bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZl
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29s
KGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCiB7CiAgICAgYXV0byBhcmNo
aXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFVSTCgpLCBidWZmZXIpOwogICAgIGlmICgh
YXJjaGl2ZSkKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBB
bmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZgogICAg
IGlmICghY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZyb21VVEY4
KG1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgp
KSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwo
KSB9OworICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWlu
UmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJjZS0+
ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJl
bGVhc2VOb25OdWxsKCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhB
cmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW1lbnQsIE1hcmt1
cEFuZEFyY2hpdmUmIG1hcmt1cEFuZEFyY2hpdmUsIE1TT0xpc3RRdWlya3MgbXNvTGlzdFF1aXJr
cywgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5
cGVBc0hUTUwpCkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1
cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAg
ICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwoc3ViZnJhbWVVUkwpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNv
bnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5k
YXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKKyAgICAgICAgTWFy
a3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJh
bWVNYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN1YmZyYW1l
TWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKICAgICAgICAgICAgIHN1YmZyYW1lTWFpblJl
c291cmNlLnJlbGVhc2VOb25OdWxsKCksIHN1YmZyYW1lQXJjaGl2ZS5jb3B5UmVmKCkgfTsKICAg
ICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoZnJh
bWUsIGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVudCwgTVNPTGlzdFF1aXJrczo6
RGlzYWJsZWQsIGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBz
dGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1
bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgIHJldHVybiBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFn
bWVudEluRG9jdW1lbnQoV1RGTW92ZShmcmFnbWVudCksICpzdGFnaW5nRG9jdW1lbnQsIG1zb0xp
c3RRdWlya3MsIG1hcmt1cEFuZEFyY2hpdmUubWFya3VwKTsKIH0KIAotYm9vbCBXZWJDb250ZW50
UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29u
dGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkg
fHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUzMiw3ICs1
MzIsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJrdXBS
ZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250
ZW50TWFya3VwUmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC02MTIsMTIgKzYxMiwxMiBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJl
YWRIVE1MKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiAhbWFya3VwLmlzRW1wdHko
KTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBl
Rm9ySW1hZ2VzKCkgfHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10g
aW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0
ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJh
Z21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgp
KTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MjYsMTEg
KzYyNiwxMSBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFk
ZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3Vw
UmVhZGVyOjpyZWFkUlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAg
aWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBz
dHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6
YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7
CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0
ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICgh
ZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYzOSwxMiArNjM5LDEyIEBAIGJv
b2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCku
cHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
YXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxw
dHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBj
cmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBp
ZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTMsMTEgKzY1MywxMSBA
QCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJU
RihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVh
ZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5k
b2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9w
dE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0
cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1
ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJp
YnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFk
ZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC02NzYsNyArNjc2LDcgQEAgYm9vbCBXZWJDb250ZW50UmVh
ZGVyOjpyZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQ
cmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNl
bnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAgICBBU1NFUlQoZnJh
bWUuZG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsK
QEAgLTc0Niw3ICs3NDYsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAg
ICByZXR1cm4gYXR0YWNobWVudDsKIH0KIAotc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0YWNo
bWVudEZvckRhdGEoRnJhbWUmIGZyYW1lLCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHBy
ZWZlcnJlZFNpemUpCitzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShG
cmFtZSYgZnJhbWUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZl
cnJlZFNpemUpCiB7CiAgICAgUmVmIGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CiAgICAg
YXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVz
OjphdHRhY2htZW50VGFnLCBkb2N1bWVudCk7CkBAIC04MzMsNyArODMzLDcgQEAgYm9vbCBXZWJD
b250ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxl
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWREYXRh
QnVmZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQor
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVz
ZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCiB7CiAgICAgaWYgKGJ1ZmZl
ci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKaW5kZXggNjA0ODZlNzFhZDU5
ZmVjYzcxNWZmMGEwOWIxYzM1NThiN2IzNDJjMi4uZDNlOTgxOWJkNTMxZjg0ODZhMzE3YWI5Zjll
ZDgzYTk4ODViZTJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2Vi
Q29udGVudFJlYWRlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2Vi
Q29udGVudFJlYWRlckd0ay5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBXZWJDb250ZW50UmVh
ZGVyOjpyZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQ
cmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNl
bnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAgICBBU1NFUlQoZnJh
bWUuZG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iLmgKaW5kZXggNDVkOTMzZTEzY2E0ZDIyNTFjNWRlZDg0OGFhOWU5ODcy
Yzc2NzQ4OS4uYmNhNjY5NmViZTZmMGVkZGRkZWU3OWI3M2MzZWUxNDQ5NmQ4MmZiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9CbG9iLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgQmxvYkxvYWRlcjsKIGNsYXNz
IERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFtOwogY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBFeGNlcHRpb25PcjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKaW5kZXggNTU5ZWJjYzQ4
YzVmMDk2YWMxOWJhZTdkOWY3MThiNzFmMmEzNTMyMi4uNDJmNDE4MGRmYTg0MjdlMGU2MGY4MWVi
NzliMTkxODdjYWZkYmExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3
b3JrU2VuZFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5k
UXVldWUuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgTmV0d29ya1NlbmRRdWV1ZTo6cHJvY2Vz
c01lc3NhZ2VzKCkKICAgICAgICAgYm9vbCBzaG91bGRTdG9wUHJvY2Vzc2luZyA9IGZhbHNlOwog
ICAgICAgICBzd2l0Y2hPbihtX3F1ZXVlLmZpcnN0KCksIFt0aGlzXShjb25zdCBDU3RyaW5nJiB1
dGY4KSB7CiAgICAgICAgICAgICBtX3dyaXRlU3RyaW5nKHV0ZjgpOwotICAgICAgICB9LCBbdGhp
c10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKKyAgICAgICAgfSwgW3RoaXNdKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYgZGF0YSkgewogICAgICAgICAgICAgZGF0YS0+Zm9yRWFjaFNl
Z21lbnQobV93cml0ZVJhd0RhdGEpOwogICAgICAgICB9LCBbdGhpcywgJnNob3VsZFN0b3BQcm9j
ZXNzaW5nXShVbmlxdWVSZWY8QmxvYkxvYWRlcj4mIGxvYWRlcikgewogICAgICAgICAgICAgYXV0
byBlcnJvckNvZGUgPSBsb2FkZXItPmVycm9yQ29kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L05ldHdvcmtTZW5kUXVldWUuaAppbmRleCA1NTFmNzBmOTE2N2IyYmZjYjI0NGJiMmIzNzAwYmZi
YWFmNTQ3OTZjLi5kMjNjZmViYjQ1MDhiYzMwMDkxNWJiOTk2ZDNmMTUwNjJjZTM1MDllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaApAQCAtNDMsNyArNDMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CiBjbGFzcyBCbG9iTG9hZGVyOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xh
c3MgV0VCQ09SRV9FWFBPUlQgTmV0d29ya1NlbmRRdWV1ZSA6IHB1YmxpYyBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgdm9pZCBwcm9jZXNzTWVzc2FnZXMoKTsKIAotICAgIHVzaW5nIE1lc3NhZ2UgPSBz
dGQ6OnZhcmlhbnQ8Q1N0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4sIFVuaXF1ZVJlZjxCbG9iTG9h
ZGVyPj47CisgICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxDU3RyaW5nLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4sIFVuaXF1ZVJlZjxCbG9iTG9hZGVyPj47CiAgICAgRGVxdWU8
TWVzc2FnZT4gbV9xdWV1ZTsKIAogICAgIFdyaXRlU3RyaW5nIG1fd3JpdGVTdHJpbmc7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5kZXggNTZhMDZm
Y2FmMjczZDI1ZGM0Yzc1ZGNlNTY5YWFjOGYxYWE1OTUyNy4uZDJiODc0MWEwNDQzNDJjN2ZmZDll
OGE1MzNjYzhhMTIwZTI5YmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIHN0YXRpYyBib29sIG1pbWVUeXBl
SXNTdWl0YWJsZUZvcklubGluZUltYWdlQXR0YWNobWVudChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KQogICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUo
bWltZVR5cGUpIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGTUlNRVR5cGUobWltZVR5cGUpOwog
fQogCi12b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRo
RGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhE
YXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKICAgICBhdXRvKiBob3N0RWxlbWVudCA9IHNoYWRvd0hvc3QoKTsKICAg
ICBpZiAoIWlzPEhUTUxJbWFnZUVsZW1lbnQ+KGhvc3RFbGVtZW50KSB8fCAhYnVmZmVyLT5zaXpl
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAppbmRleCA1
NzNlYzJlYWUxY2RjMDYwOWYyNjFjMzg0MDBiYjAyYzQ4MGY3YmRkLi42NjFkZWM5Mzc2ZDhhOWQ2
ZDQ3MTdmZDBiNGNlN2Y4MmZmMDNmNzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBdHRhY2htZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgRmlsZTsKIGNsYXNzIEhU
TUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJBdHRhY2htZW50OwogY2xhc3MgU2hhcmVhYmxl
Qml0bWFwOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIAogY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVt
ZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEhUTUxBdHRhY2htZW50RWxlbWVudCk7
CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvcHlOb25BdHRyaWJ1dGVQcm9w
ZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB1cGRhdGVBdHRyaWJ1dGVzKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgbmV3
RmlsZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmV3
RmlsZW5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlRW5jbG9zaW5nSW1hZ2VX
aXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRh
dGEpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0
YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVRodW1ibmFpbChjb25zdCBS
ZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwpOwogCiAgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1
bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNTE3MWI5
Y2RjNzg5MzE3MWUyMWU1ZjRiZjU1MDE3ZWY5NDRhYzc5NS4uMWE1NmJjMDM1OWNjZTFmNTBkY2Rk
YTA2NTIyMmEwMTA5NWE2OTA1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCkBAIC0yOTM4LDcgKzI5MzgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNs
aWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKQogICAgIGF0dGVtcHRUb1Jl
c3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpj
ZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQordm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2Vp
dmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBpbml0RGF0YSkKIHsKICAgICBtZWRpYVBsYXllckluaXRpYWxpemF0aW9uRGF0YUVuY291
bnRlcmVkKGluaXREYXRhVHlwZSwgaW5pdERhdGEtPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA2OTU2Njk0OTYzMTBl
ZjkxMDhiOTU2ZmRhNDgyMTQzMDE0OTcwZWNiLi42YzNiNjkzYjdiMTBlZGEzMGU1MWQ0YzY2MzFi
ZTNmYjUwY2JmODBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAt
NzIwLDcgKzcyMCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDRE1DbGllbnQKICAgICB2b2lkIGNk
bUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKSBmaW5hbDsKLSAgICB2
b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3Qg
U3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBjZG1DbGllbnRV
bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCA0NDJkMDk0NmJlMjUwZGNjZjU5MjdiYWE5
Mjc5M2E3MGVlOTE5MzNlLi4wMGQ4ZjIzOWQ3MTI3YzYxY2FlMWI1OGQ5YzRhMzAzYTliM2M5MDU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBA
QCB2b2lkIEltYWdlRG9jdW1lbnQ6OnVwZGF0ZUR1cmluZ1BhcnNpbmcoKQogICAgIGlmICghbV9p
bWFnZUVsZW1lbnQpCiAgICAgICAgIGNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCk7CiAKLSAgICBp
ZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURh
dGEoKSkKKyAgICBpZiAoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGxv
YWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCkpCiAgICAgICAgIG1faW1hZ2VFbGVtZW50LT5jYWNo
ZWRJbWFnZSgpLT51cGRhdGVCdWZmZXIoKmJ1ZmZlcik7CiAKICAgICBpbWFnZVVwZGF0ZWQoKTsK
QEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygp
CiB7CiAgICAgaWYgKCFwYXJzZXIoKS0+aXNTdG9wcGVkKCkgJiYgbV9pbWFnZUVsZW1lbnQpIHsK
ICAgICAgICAgQ2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlID0gKm1faW1hZ2VFbGVtZW50LT5jYWNo
ZWRJbWFnZSgpOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gbG9hZGVyKCkt
Pm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGRhdGEgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogCiAgICAgICAgIC8vIElm
IHRoaXMgaXMgYSBtdWx0aXBhcnQgaW1hZ2UsIG1ha2UgYSBjb3B5IG9mIHRoZSBjdXJyZW50IHBh
cnQsIHNpbmNlIHRoZSByZXNvdXJjZSBkYXRhCiAgICAgICAgIC8vIHdpbGwgYmUgb3ZlcndyaXR0
ZW4gYnkgdGhlIG5leHQgcGFydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYTdjYTcxNjJkNzkxZWQ3ZmJhOGNj
OTFjMjFhMmNmM2FmNmU2OWE3ZS4uMTg3OTNmZjA2NjMzOGZiNjBhMzRkZWM5MDliYzJkZGQyOGJl
YWZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAKQEAgLTg1MCw3ICs4NTAsNyBAQCB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5z
dHJ1bQogICAgICAgICBuZXR3b3JrQWdlbnQtPmludGVyY2VwdFJlcXVlc3QobG9hZGVyLCBXVEZN
b3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVy
Y2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQordm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pik+JiYgaGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+
aW50ZXJjZXB0UmVzcG9uc2UocmVzcG9uc2UsIGlkZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oCmluZGV4IDhlNjVjNGViMTAyMzM1MjFmNDhjN2Y0YjEyMGFkMmM4OTA5YTA3YmEuLmQy
OTU3ODEwZDgzODJjOTM1MWQ1YTkzZjE0NGFlZDE0OTNiY2M2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTkzLDcg
KzkzLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYWRvd1Jvb3Q7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgVGltZXJC
YXNlOwogY2xhc3MgV2ViS2l0TmFtZWRGbG93OwogY2xhc3MgV2ViU29ja2V0Q2hhbm5lbDsKQEAg
LTIzNiw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0
UmVxdWVzdChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRp
YyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VM
b2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBz
dGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7Cisg
ICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSYs
IHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CiAgICAgc3RhdGlj
IHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIHN0
ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CkBAIC00NDEsNyArNDQx
LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3Rh
dGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVx
dWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlc291cmNlTG9hZGVyJiwgRnVuY3Rpb248
dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJik7Ci0gICAgc3RhdGljIHZvaWQgaW50ZXJj
ZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0
YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xl
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29u
c29sZU1lc3NhZ2U+KTsKIApAQCAtMTI4OSw3ICsxMjg5LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2Fk
ZXIsIEYKICAgICAgICAgaW50ZXJjZXB0UmVxdWVzdEltcGwoKmFnZW50cywgbG9hZGVyLCBXVEZN
b3ZlKGhhbmRsZXIpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNl
KSk7CiAgICAgaWYgKGF1dG8qIGFnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHMoZnJhbWUpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0LmNwcAppbmRleCA2MWU0YmMzYmEwMTllZTI1ZTVjOGJjMjIxZGZmNjA3
N2VkZGI4NjNkLi5mMDY0MDNhNjIzNGI0MmI2YWQyYTgwYjAxOTRhNTk2ZDg5ZjZlNmJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0LmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdEludGVybmFsKFJlc291cmNlTG9hZGVy
JiBsbwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdChsb2Fk
ZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYg
ZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQog
ewogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUs
IHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJL
aXQuaAppbmRleCBmNzYxMTRjZTk4ZjQyYTdmZjkwNmE0OGQwNDIwYjk2MzA1ZDM2OTE0Li4wN2I0
MjFiNTljMTU1NWUxYTI5MWUxOGViYjI2MjIxMjJmMTY1OGIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5o
CkBAIC0zNiwyMCArMzYsMjAgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQgewogcHVibGljOgogICAg
IHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUqLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25z
ZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9p
ZCBpbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKT4mJik7Ci0gICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3Bv
bnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiAKIHByaXZhdGU6CiAgICAg
c3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdEludGVybmFsKGNvbnN0IEZyYW1lJiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0
UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
ICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXIm
LCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMg
dm9pZCBpbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsK
KyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiB9OwogCiBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUqIGZyYW1l
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCkBAIC03Niw3ICs3Niw3IEBAIGlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdChS
ZXNvdXJjZUxvYWRlciYgbG9hCiAgICAgaW50ZXJjZXB0UmVxdWVzdEludGVybmFsKGxvYWRlciwg
V1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSogZnJhbWUs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAg
IEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJl
c3BvbnNlKGZyYW1lLCByZXNwb25zZSkpOwogICAgIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwo
KmZyYW1lLCByZXNwb25zZSwgaWRlbnRpZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA2
NzdjNWI4MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjczLi5mMzJmNjYwYjkxNzNiYWU4
ZDVjZDlhMTMwZWFlNThiOTdkNWVjZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNv
bnN0IHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDUwICogMTAwMCAq
IDEwMDA7IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291
cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkK
ICAgICA6IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1fbG9hZGVySWQobG9hZGVySWQp
CisgICAgLCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigp
KQogewogfQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIGlmIChoYXNEYXRhKCkpIHsKICAg
ICAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZm
ZXItPnNpemUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9k
YXRhQnVmZmVyLT5yZXNldCgpOwogICAgIH0KIAogICAgIGlmIChoYXNDb250ZW50KCkpIHsKQEAg
LTgxLDM2ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjpldmljdENvbnRlbnQoKQogICAgIHJldHVybiByZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jv
b2wgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVsbCgpOworfQorCiBzaXplX3QgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICByZXR1
cm4gbV9kYXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0
YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFC
dWZmZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEs
IGRhdGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0
YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0
aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRl
Y29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKIAotICAg
IHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgYXV0byBidWZm
ZXIgPSBtX2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBzaXplX3Qg
ZGF0YUxlbmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYgKG1fZGVjb2RlcikgewogICAg
ICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNv
ZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7Cisg
ICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRh
KCksIGRhdGFMZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9
IHRydWU7Ci0gICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1
ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5j
b2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAgIG1f
ZGF0YUJ1ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5dGVz
KCkgLSBkYXRhTGVuZ3RoOwogfQogCkBAIC0yNjcsNyArMjY5LDcgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6YWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIENh
Y2hlZFJlc28KICAgICByZXNvdXJjZURhdGEtPnNldENhY2hlZFJlc291cmNlKGNhY2hlZFJlc291
cmNlKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRkUmVzb3VyY2VTaGFyZWRC
dWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCit2b2lkIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUpCiB7CiAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSByZXNv
dXJjZURhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElkKTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5k
ZXggZWZhMDAwNTNhZTExN2E1NGRmYjEyNmQxMmY5YWJlZTdkYTU5MDhkNy4uZWUzOTQ1N2Y3Njcy
ZWFjYWFjOTBhNWI2YmM4ODExMDhjYmRhOGE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3
dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDAs
NyArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZXNEYXRhIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTg4LDggKzkwLDggQEAgcHVibGljOgogICAgICAgICBS
ZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVj
b2Rlci5jb3B5UmVmKCk7IH0KICAgICAgICAgdm9pZCBzZXREZWNvZGVyKFJlZlB0cjxUZXh0UmVz
b3VyY2VEZWNvZGVyPiYmIGRlY29kZXIpIHsgbV9kZWNvZGVyID0gV1RGTW92ZShkZWNvZGVyKTsg
fQogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyLmNvcHlSZWYoKTsgfQotICAgICAgICB2b2lkIHNldEJ1ZmZlcihSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsgfQorICAg
ICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuY29weVJlZigpOyB9CisgICAgICAgIHZvaWQgc2V0QnVmZmVyKFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2J1ZmZlciA9IFdURk1vdmUoYnVm
ZmVyKTsgfQogCiAgICAgICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiYg
Y2VydGlmaWNhdGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0ZUluZm87IH0KICAg
ICAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZUluZm8oY29uc3Qgc3RkOjpvcHRpb25hbDxDZXJ0aWZp
Y2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8pIHsgbV9jZXJ0aWZpY2F0ZUluZm8gPSBjZXJ0aWZp
Y2F0ZUluZm87IH0KQEAgLTEwMywxMCArMTA1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRp
bWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1w
OyB9CiAgICAgICAgIHZvaWQgc2V0UmVzcG9uc2VUaW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBt
X3Jlc3BvbnNlVGltZXN0YW1wID0gdGltZTsgfQogCi0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWRE
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVm
ZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gaGFzRGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgot
ICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAg
ICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkg
Y29uc3Q7CiAgICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsK
QEAgLTExOSw4ICsxMjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGlu
Z05hbWU7CiAgICAgICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJl
c291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X2RhdGFCdWZmZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAg
ICAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9kYXRhQnVmZmVyOworICAgICAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKICAgICAgICAgQ2Fj
aGVkUmVzb3VyY2UqIG1fY2FjaGVkUmVzb3VyY2UgeyBudWxscHRyIH07CiAgICAgICAgIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIG1fdHlwZSB7IEluc3BlY3RvclBhZ2VBZ2VudDo6
T3RoZXJSZXNvdXJjZSB9OwpAQCAtMTQ0LDcgKzE0Niw3IEBAIHB1YmxpYzoKICAgICBSZXNvdXJj
ZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgdm9pZCBtYXli
ZURlY29kZURhdGFUb0NvbnRlbnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogICAgIHZvaWQg
YWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIENhY2hlZFJlc291cmNl
Kik7Ci0gICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdO
YW1lKTsKKyAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lKTsKICAgICBSZXNvdXJjZURhdGEgY29uc3QqIGRhdGEoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQpOwogICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0YUZvclVSTChjb25z
dCBTdHJpbmcmIHVybCk7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVtb3ZlQ2FjaGVkUmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA0NGUwODRhMjg4NDJmYmM1
NjI4OTM3NjFkNzFlNGM3NDI3NGViYjE4Li4xODlmMjZiMDk4YjczNjFkY2Y4ZTlkNjRlMzU5ZTc1
ZmQ5YzA5NzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xMTQwLDcgKzExNDAsNyBAQCB2b2lk
IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYg
bG9hZGVyLCBGdW5jdGlvbjx2bwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0SW50
ZXJjZXB0ZWQocmVxdWVzdElkLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdChsb2FkZXIu
cmVxdWVzdCgpKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQordm9pZCBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEFTU0VSVChtX2VuYWJsZWQpOwog
ICAgIEFTU0VSVChtX2ludGVyY2VwdGlvbkVuYWJsZWQpOwpAQCAtMTI0Myw3ICsxMjQzLDcgQEAg
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRl
cmNlcHRXaXRoUmVzcG9uc2UoY29uc3QKICAgICAgICAgb3ZlcnJpZGVSZXNwb25zZS5zZXRIVFRQ
SGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlLCBvdmVycmlkZVJlc3BvbnNl
Lm1pbWVUeXBlKCkpOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG92ZXJyaWRl
RGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhOwog
ICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0gYmFzZTY0RGVj
b2RlKGNvbnRlbnQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKQEAgLTEyNzEsNyArMTI3MSw3IEBA
IFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50
ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zCiAgICAgaWYgKGxvYWRlci0+cmVhY2hlZFRlcm1pbmFs
U3RhdGUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJVbmFibGUgdG8gZnVsZmls
bCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfcyk7CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBkYXRhOwogICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0g
YmFzZTY0RGVjb2RlKGNvbnRlbnQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKQEAgLTE0MDcsMTIg
KzE0MDcsMTIgQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29u
dGVudChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsK
ICAgICAgICAgICAgIGF1dG8gZGVjb2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRl
VGV4dERlY29kZXIocmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0
RW5jb2RpbmdOYW1lKCkpOwogICAgICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAg
ICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29k
ZUFuZEZsdXNoKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNl
NjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5n
KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNl
NjRFbmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaApp
bmRleCA4ZjZmYmNjMjkzYWViZjhiOWQ1Yzk0NWQyODI5YTE1MjdiNzRiYzdmLi42YmNkODdkZGNk
OGIwNDQxMzA4ZDFkMDFlY2E2YjBlNmRhMTQxM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTEyMyw3
ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB3aWxsSW50ZXJjZXB0KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKTsKICAgICBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7Cisg
ICAgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKICAgICB2b2lk
IGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpPiYmKTsKIAogICAgIHZvaWQgc2VhcmNoT3RoZXJSZXF1ZXN0cyhjb25z
dCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiwgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKTsKQEAgLTE4NSw3ICsxODUsNyBA
QCBwcml2YXRlOgogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQZW5kaW5nSW50ZXJjZXB0
UmVzcG9uc2UpOwogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6
Ci0gICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiBvcmlnaW5hbFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBv
cmlnaW5hbFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogICAgICAgICAgICAgOiBtX29yaWdpbmFsUmVzcG9uc2Uob3JpZ2luYWxSZXNwb25zZSkK
ICAgICAgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSkKICAgICAgICAgeyB9CkBAIC0yMDIsNyArMjAyLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIHJlc3BvbmQobV9vcmlnaW5hbFJlc3BvbnNlLCBudWxscHRyKTsKICAgICAgICAgfQogCi0g
ICAgICAgIHZvaWQgcmVzcG9uZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSkKKyAgICAgICAgdm9pZCByZXNwb25kKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0
YSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCFtX3Jlc3BvbmRlZCk7CiAgICAgICAg
ICAgICBpZiAobV9yZXNwb25kZWQpCkBAIC0yMTUsNyArMjE1LDcgQEAgcHJpdmF0ZToKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9vcmlnaW5hbFJlc3BvbnNlOwot
ICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPik+IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAgICAgIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPik+IG1fY29tcGxldGlvbkhhbmRsZXI7CiAgICAgICAgIGJvb2wgbV9y
ZXNwb25kZWQgeyBmYWxzZSB9OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAzZGFmZTY0Mzdk
ZjEyMTA0MDVmZWZiZjM3NTc4NWZlY2Q1ZWFjNDcyLi4xYjY0NmFhMjE3M2FiNTRhM2YxYWJkY2I1
MDIwNGFkZTk4YzA3M2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0xMDAsMTUgKzEwMCwxNSBAQCBzdGF0
aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCB1bnNpZ25lZCBzaXpl
LCBjb25zdCBTdHJpbmcmIHRleAogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291
cmNlQ29udGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiBy
ZXN1bHQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRl
cigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9h
ZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5n
KCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VB
Z2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29k
ZSwgcmVzdWx0KTsKIH0KIAotYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNv
bnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKK2Jvb2wg
SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBi
b29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQogewotICAgIHJldHVybiBkYXRh
Q29udGVudChidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0
KTsKKyAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRF
bmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVj
dG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBz
aXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29k
ZSwgU3RyaW5nKiByZXN1bHQpCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OnJlc291cmNlQ29udGVudChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBGcmEKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdG
cmFnbWVudElkZW50aWZpZXIodXJsLCBsb2FkZXItPnVybCgpKSkgewogICAgICAgICAqYmFzZTY0
RW5jb2RlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggYjUxYWRkYjFiZDhmMmNjZTY5NTYwNzk5Y2Qx
ZDk1MmQyZGU0MjgzOC4uM2Q1ZTU2NmRiZTBjNWVjMTFkOWU4ZGY2N2ZjZjBhNzA5ODhhMmY4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdl
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIEluc3BlY3RvckNsaWVudDsKIGNsYXNz
IEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVuZGVyT2JqZWN0OwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3Mg
SW5zcGVjdG9yUGFnZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVi
bGljIEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUGFnZUFnZW50KTsKQEAgLTc1LDcgKzc1LDcgQEAgcHVi
bGljOgogICAgICAgICBPdGhlclJlc291cmNlLAogICAgIH07CiAKLSAgICBzdGF0aWMgYm9vbCBz
aGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYg
dGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7
CisgICAgc3RhdGljIGJvb2wgc2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhC
YXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKICAgICBzdGF0aWMgVmVjdG9yPENhY2hlZFJl
c291cmNlKj4gY2FjaGVkUmVzb3VyY2VzRm9yRnJhbWUoRnJhbWUqKTsKICAgICBzdGF0aWMgdm9p
ZCByZXNvdXJjZUNvbnRlbnQoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBGcmFt
ZSosIGNvbnN0IFVSTCYsIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKICAg
ICBzdGF0aWMgU3RyaW5nIHNvdXJjZU1hcFVSTEZvclJlc291cmNlKENhY2hlZFJlc291cmNlKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggYjRlNmEzYTUzYjRj
MGMwZGExYzMxNzJkZDQyY2FlNmE4Y2QyMWY3YS4uNmFlNTI2NTk3Y2QyODYzMWJlNzk1MGZjMzM1
MzZmOGYzNDdkN2FmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApA
QCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0
YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6
OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNl
QnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0
YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVz
b3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91
Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2Vk
UGFnZVVSTCgpCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpoYW5kbGVQ
cm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAg
IEFTU0VSVCh3aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcikpOwogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhIHsgbV9ibG9ja2luZ0NvbnRlbnRG
aWx0ZXItPnJlcGxhY2VtZW50RGF0YSgpIH07CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHJlcGxhY2VtZW50RGF0YSB7IG1fYmxvY2tpbmdDb250ZW50RmlsdGVyLT5yZXBsYWNl
bWVudERhdGEoKSB9OwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyBVUkwoKSwgInRl
eHQvaHRtbCJfcywgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihyZXBsYWNlbWVudERhdGEtPnNpemUo
KSksICJVVEYtOCJfcyB9OwogICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhIHsgV1RG
TW92ZShyZXBsYWNlbWVudERhdGEpLCBlcnJvci5mYWlsaW5nVVJMKCksIHJlc3BvbnNlLCBTdWJz
dGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4gfTsKICAgICBTZXRG
b3JTY29wZTxib29sPiBsb2FkaW5nQmxvY2tlZFBhZ2UgeyBtX2lzTG9hZGluZ0Jsb2NrZWRQYWdl
LCB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBj
M2Q4NDUwZjcxYzJjMzczZDJhZjFjY2NmYjIxNWFkODFiZjgwZDBiLi4zYjkwZWY0YzU4MjdlNmMw
YjQ5YjM0NjU2YjNjZDcxYThlZGE5NjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCBEb2N1bWVudExvYWRlcjo6fkRvY3VtZW50
TG9hZGVyKCkKICNlbmRpZgogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBEb2N1bWVudExvYWRl
cjo6bWFpblJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlmICht
X3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG1fc3Vic3RpdHV0ZURh
dGEuY29udGVudCgpLT5jb3B5KCk7CkBAIC0xNjA4LDExICsxNjA4LDExIEBAIGJvb2wgRG9jdW1l
bnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNl
cygqbV9hcmNoaXZlKTsKICAgICBBU1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAg
ICAgYXV0byYgbWFpblJlc291cmNlID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAg
bV9wYXJzZWRBcmNoaXZlRGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2Vk
QXJjaGl2ZURhdGEgPSBtYWluUmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAg
bV93cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNT
RVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRh
dGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRh
KG1fcGFyc2VkQXJjaGl2ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkp
OwogICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiB9CkBAIC0xNjcxLDcgKzE2NzEsNyBAQCBBcmNo
aXZlUmVzb3VyY2UqIERvY3VtZW50TG9hZGVyOjphcmNoaXZlUmVzb3VyY2VGb3JVUkwoY29uc3Qg
VVJMJiB1cmwpIGNvbnN0CiAKIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IERvY3VtZW50TG9hZGVy
OjptYWluUmVzb3VyY2UoKSBjb25zdAogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEg
PSBtYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGRhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBkYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvJiByZXNwb25zZSA9IHRoaXMtPnJl
c3BvbnNlKCk7CkBAIC0yMjU1LDggKzIyNTUsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjptYXli
ZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKIAogICAgIGZyYW1lTG9hZGVyKCktPnNl
dHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29tbWl0dGVkID0gZmFsc2U7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwotICAgIGNvbW1p
dExvYWQocmVzb3VyY2VEYXRhLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNl
RGF0YSgpOworICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6
c3RhcnRJY29uTG9hZGluZygpCkBAIC0yMjkyLDcgKzIyOTIsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5n
ZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhpY29uRGVjaXNpb25zKTsKIH0KIAotdm9pZCBEb2N1bWVu
dExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRf
dCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNp
c2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGF1dG8gaWNvbiA9IG1faWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uLnRh
a2UobG9hZElkZW50aWZpZXIpOwogCkBAIC0yMzEzLDcgKzIzMTMsNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90
IGxvYWRJZGVudAogICAgIHJhd0ljb25Mb2FkZXItPnN0YXJ0TG9hZGluZygpOwogfQogCi12b2lk
IERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImIGxvYWRlciwg
U2hhcmVkQnVmZmVyKiBidWZmZXIpCit2b2lkIERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRp
bmdJY29uKEljb25Mb2FkZXImIGxvYWRlciwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVy
KQogewogICAgIC8vIElmIHRoZSBEb2N1bWVudExvYWRlciBoYXMgZGV0YWNoZWQgZnJvbSBpdHMg
ZnJhbWUsIGFsbCBpY29uIGxvYWRzIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBjYW5jZWxsZWQu
CiAgICAgQVNTRVJUKG1fZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aAppbmRleCBmYmY1NDVjNDYwZTRlNDg5ZDg3YjI1YzBlODVlY2NjYTRjYmYzYzg3Li4zMzk4NzNk
NWQzZmI5YmIzMDA0OThjZDZmMzdjYmY2NWI3OGFmNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFzcyBBcmNoaXZlUmVzb3VyY2VD
b2xsZWN0aW9uOwogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRGaWx0ZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1
Y3QgQ3VzdG9tSGVhZGVyRmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7CkBA
IC04Myw3ICs4NCw3IEBAIGNsYXNzIEljb25Mb2FkZXI7CiBjbGFzcyBQYWdlOwogY2xhc3MgUHJl
dmlld0NvbnZlcnRlcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNXQ2xpZW50Q29ubmVjdGlv
bjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwogY2xhc3MgU3Vic3RpdHV0ZVJlc291cmNlOwpA
QCAtMTcxLDcgKzE3Miw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lTG9h
ZGVyKiBmcmFtZUxvYWRlcigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN1YnJlc291cmNl
TG9hZGVyKiBtYWluUmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEo
KSBjb25zdDsKICAgICAKICAgICBEb2N1bWVudFdyaXRlciYgd3JpdGVyKCkgY29uc3QgeyByZXR1
cm4gbV93cml0ZXI7IH0KIApAQCAtMzkyLDggKzM5Myw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAg
ICAgdm9pZCBzdGFydEljb25Mb2FkaW5nKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRH
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciopPiYmKTsKLSAgICB2b2lk
IGZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYsIFNoYXJlZEJ1ZmZlciopOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9u
LCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKik+JiYpOworICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29u
TG9hZGVyJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogCiAgICAgY29uc3QgVmVjdG9yPExp
bmtJY29uPiYgbGlua0ljb25zKCkgY29uc3QgeyByZXR1cm4gbV9saW5rSWNvbnM7IH0KIApAQCAt
NjIxLDcgKzYyMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JOYXZpZ2F0aW9u
UG9saWN5IHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIExpbmtJY29uPiBtX2lj
b25zUGVuZGluZ0xvYWREZWNpc2lvbjsKLSAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxJY29u
TG9hZGVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4+IG1faWNvbkxv
YWRlcnM7CisgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8SWNvbkxvYWRlcj4sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPj4gbV9pY29uTG9hZGVyczsK
ICAgICBWZWN0b3I8TGlua0ljb24+IG1fbGlua0ljb25zOwogCiAjaWYgRU5BQkxFKEFQUExJQ0FU
SU9OX01BTklGRVNUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBlMTNlMjg2
ZTE0ZjRmZThmZDdkZjkwYTBlMTUxZjA5MzQxOGRkZGIxLi4wOGEwYWUxOWEzNzk4NDZmMTU3NTY0
YzJkMGM4MzJiMjc0ODM2MDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAt
NTksNiArNTksNyBAQCBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwog
Y2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDaHJvbWU7CitjbGFzcyBTaGFyZWRCdWZmZXI7
CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50
TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwog
CiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWludDhfdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNGZkNjM3YTkwMTRhNWQ0MWEyMjZlZTQ1OTE3YjZi
M2U5YTc5MGViYi4uZWU5ZjNkMGM5ODRkNDU1Y2JiOTFiNDYwYzFiYzEyODk4ZDEyMzY1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTk4LDcgKzk4LDcg
QEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7
CiBjbGFzcyBXaWRnZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2Fk
ZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKaW5k
ZXggYWVmNjY4YmQ2M2VkNWZjZDQ1ZTYxZTlkMWYxMDdjZmI2YWVmMjY0Yi4uMjlkMmUzZjQ2MTQw
YWFhNTExNjBlNmEyODU2MmYzNzBlMzcxZWIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRl
clN0cmF0ZWd5LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJp
dHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiAKIHN0cnVjdCBGZXRjaE9wdGlvbnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
LmNwcAppbmRleCA2MzM3NTU5NjMyMDAxNDYzODI4OWUyODI2MDRjNTViMGFmNDQ1MzEzLi42MDQz
YWM5YmUyNjdlYTRmYmM3MWUxMTE4YjkwNzkxNTVlMzkxNTAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKQEAgLTE0Niwx
MiArMTQ2LDEyIEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlCiAgICAgZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5
bG9hZFR5cGUpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVs
bHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRU
eXBlKTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBSZWY8
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCmlu
ZGV4IDQ4YmIyMTUzYzkzZjJkYzc1NGUyMDczMjI1MmMwNTA5Y2Y3MDRhNDEuLmI1MTc0ZWRjOTRi
OTkyMzkwMjA1ZjBmYWQ0NTJlYTVhYzM4Nzg5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBAIC02Myw3ICs2Myw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChj
b25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIAotICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBp
bnQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAKICAgICB2b2lkIG5vdGlmeURvbmUoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0LmNwcAppbmRleCBjNjI3NzY4NThhNmRjNWFmZmQzNmRjOWU3ODVjOGJkMjQ3MmJiNzRkLi5k
OTRiNzAwMDc0MWNkOTEyYjkxNzNlMmIzNzQ2ZDRkYThiMzY4YTU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcApAQCAt
MTU1LDcgKzE1NSw3IEBAIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGlj
RGlnZXN0Rm9yQnl0ZXMoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnCiAgICAgcmV0dXJuIHsgYWxn
b3JpdGhtLCBjcnlwdG9EaWdlc3QtPmNvbXB1dGVIYXNoKCkgfTsKIH0KIAotUmVzb3VyY2VDcnlw
dG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZmZXIoUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtLCBjb25zdCBTaGFyZWRC
dWZmZXIqIGJ1ZmZlcikKK1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGlj
RGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3Jp
dGhtIGFsZ29yaXRobSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogewog
ICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSh0b0NyeXB0
b0RpZ2VzdEFsZ29yaXRobShhbGdvcml0aG0pKTsKICAgICBpZiAoYnVmZmVyKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmgKaW5k
ZXggYWVhM2RjNTdjODc4MzEzMDEzYTViMTZjOTM5Yjc3NGVkNDg0MzI0Yy4uODNiODYxM2NmZGEy
MzI5YWUzMGJiZjZhYmMxNGI5OWQ0NDIzN2IwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaApAQCAtMzQsNyArMzQsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBSZXNvdXJj
ZUNyeXB0b2dyYXBoaWNEaWdlc3QgewogICAgIGVudW0gY2xhc3MgQWxnb3JpdGhtIHsKQEAgLTc1
LDcgKzc1LDcgQEAgc3RkOjpvcHRpb25hbDxFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0PiBwYXJzZUVuY29kZWRDcnlwdG9ncmFwaGljRGlnZXMKIAogc3RkOjpvcHRpb25hbDxSZXNv
dXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IGRlY29kZUVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3QoY29uc3QgRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCYpOwogCi1S
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1
ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29uc3QgU2hhcmVk
QnVmZmVyKik7CitSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2Vz
dEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwg
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdl
c3Q6OkFsZ29yaXRobSwgY29uc3Qgdm9pZCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBhYTg1YmI0ZDNjYTg3
MTQ1YmI3YTg2ZjY0NjY4ZTQ5NTE3NmFjMjM1Li5kZjEzOTU4OGU4ZDUyNTJiM2VlYzYxOTNhZTYx
YWEyNDc4NmIyMTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTc2LDYgKzc2LDcgQEAgREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihS
ZXNvdXJjZUxvYWRlcik7CiBSZXNvdXJjZUxvYWRlcjo6UmVzb3VyY2VMb2FkZXIoRnJhbWUmIGZy
YW1lLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucykKICAgICA6IG1fZnJhbWUgeyAmZnJh
bWUgfQogICAgICwgbV9kb2N1bWVudExvYWRlciB7IGZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3Vt
ZW50TG9hZGVyKCkgfQorICAgICwgbV9yZXNvdXJjZURhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9kZWZlcnNMb2FkaW5nIHsgb3B0aW9ucy5kZWZl
cnNMb2FkaW5nUG9saWN5ID09IERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGlu
ZyAmJiBmcmFtZS5wYWdlKCktPmRlZmVyc0xvYWRpbmcoKSB9CiAgICAgLCBtX29wdGlvbnMgeyBv
cHRpb25zIH0KIHsKQEAgLTExOCw3ICsxMTksNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWxl
YXNlUmVzb3VyY2VzKCkKIAogICAgIG1faWRlbnRpZmllciA9IHsgfTsKIAotICAgIG1fcmVzb3Vy
Y2VEYXRhID0gbnVsbHB0cjsKKyAgICBtX3Jlc291cmNlRGF0YS0+cmVzZXQoKTsKICAgICBtX2Rl
ZmVycmVkUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwogfQogCkBAIC0xODksNyArMTkwLDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6aW5pdChSZXNvdXJjZVJlcXVlc3QmJiBjbGllbnRSZXF1
ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2kKICAgICB9KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFJlc291cmNlTG9hZGVy
OjpkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgZGlkUmVj
ZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJl
YWNoZWRUZXJtaW5hbFN0YXRlKCkpCkBAIC0zMTgsNyArMzE5LDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZm
ZXJpbmdQb2wKIAogICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1ZmZlcmVkIGRhdGEKICAgICBp
ZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZl
ckRhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9yZXNv
dXJjZURhdGEtPnJlc2V0KCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hU
b1N1YnN0aXR1dGVSZXNvdXJjZSgpCkBAIC0zMjksMjkgKzMzMCwyOSBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQogICAgICAgICBtX2hhbmRs
ZS0+Y2FuY2VsKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFNoYXJlZEJ1ZmZlciogYnVmZmVy
LCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6
YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRU
eXBlKQogewogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVm
ZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
ICghbV9yZXNvdXJjZURhdGEgfHwgZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVS
ZXNvdXJjZSkgewotICAgICAgICBpZiAoYnVmZmVyKQotICAgICAgICAgICAgbV9yZXNvdXJjZURh
dGEgPSBidWZmZXI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICAKKyAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNv
dXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CisKICAgICBpZiAoYnVmZmVy
KQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOwogICAgIGVsc2UKICAg
ICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCitjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZURhdGEtPmdldCgpLmdldCgpOworfQorCiB2b2lk
IFJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSgpCiB7Ci0gICAgaWYgKG1fcmVzb3Vy
Y2VEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+Y2xlYXIoKTsKKyAgICBpZiAoIW1fcmVz
b3VyY2VEYXRhLT5pc051bGwoKSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPmVtcHR5KCk7CiB9
CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdApAQCAt
NTUxLDE0ICs1NTIsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGwKICAgICBkaWRSZWNlaXZl
RGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRh
dGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5
cGUpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1
ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIFJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3Zv
aWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQ
YXlsb2FkVHlwZSkKIHsKLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBnZXQgZGF0YSts
ZW5ndGggKk9SKiBhIFNoYXJlZEJ1ZmZlci4KKyAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25s
eSBnZXQgZGF0YStsZW5ndGggKk9SKiBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAgICAgQVNT
RVJUKCFidWZmZXIgfHwgKCFkYXRhICYmICFsZW5ndGgpKTsKIAogICAgIC8vIFByb3RlY3QgdGhp
cyBpbiB0aGlzIGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5n
IGNhbiBkbwpAQCAtNTcxLDcgKzU3Miw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAg
Ly8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMs
IHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3Vl
IHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxs
YmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0g
ICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVm
ZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxl
bmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFt
ZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAog
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKQEAgLTczNSw3ICs3MzYsNyBAQCB2b2lkIFJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbgogICAgIGRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCwgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBkaWRSZWNlaXZlQnVmZmVyKFdU
Rk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0ZmQyYmYwYmJiM2IxYmQy
MTU0NWRiNTJjMmUxY2E2NGVlNDJiOTE3Li41NGIxYjg2NmRmODk2YTg0YjRjYTI5N2VlNDc2ZDZk
MGI2NjFmZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMzYs
NiArMzYsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiAjaWYgRU5BQkxFKENPTlRF
TlRfRVhURU5TSU9OUykKQEAgLTU1LDYgKzU2LDggQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFt
ZUxvYWRlcjsKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1l
dHJpY3M7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVy
QnVpbGRlcjsKIAogREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3Vy
Y2VMb2FkZXIpOwogY2xhc3MgUmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
UmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMgUmVmQ291bnRlZDxSZXNvdXJjZUxvYWRlcj4sIHByb3Rl
Y3RlZCBSZXNvdXJjZUhhbmRsZUNsaWVudCB7CkBAIC02Niw3ICs2OSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBpbml0KFJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKIAotICAgIHZvaWQgZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBk
ZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IHZpcnR1YWwgdm9pZCBzdGFydExvYWRpbmcoKQpAQCAtOTgsNyArMTAxLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAKLSAgICBT
aGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VEYXRh
LmdldCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRh
KCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhclJlc291cmNlRGF0YSgpOwogICAgIAogICAgIHZpcnR1
YWwgYm9vbCBpc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3Q7CkBAIC0xMDcsNyArMTEwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcg
Ynl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKQEAgLTE2Niw3ICsxNjksNyBAQCBwcm90
ZWN0ZWQ6CiAKICAgICBib29sIHdhc0NhbmNlbGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuY2Vs
bGF0aW9uU3RhdHVzID49IENhbmNlbGxlZDsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwg
bG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSk7CiAgICAgCiAgICAgdm9pZCBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJl
clBvbGljeSByZWZlcnJlclBvbGljeSkgeyBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSByZWZl
cnJlclBvbGljeTsgfQogICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3Qg
eyByZXR1cm4gbV9vcHRpb25zLnJlZmVycmVyUG9saWN5OyB9CkBAIC0xOTEsNyArMTk0LDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9y
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYp
ID0gMDsKIAotICAgIHZvaWQgYWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCwgU2hhcmVkQnVmZmVyKiwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGFkZERhdGFPckJ1
ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBE
YXRhUGF5bG9hZFR5cGUpOwogICAgIHZvaWQgbG9hZERhdGFVUkwoKTsKICAgICB2b2lkIGZpbmlz
aE5ldHdvcmtMb2FkKCk7CiAKQEAgLTIwMiw3ICsyMDUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNl
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxs
U2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYmLCBSZXNv
dXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYp
PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRC
dWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJv
ciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIG92ZXJy
aWRlOwpAQCAtMjI3LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3Qg
bV9yZXF1ZXN0OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVm
b3JlIHJlZGlyZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsK
KyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9yZXNvdXJjZURhdGE7CiAgICAg
CiAgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5
OTdlZGNiOWYzNTQ0ZjQ4ODRiNjBhNmVmZS4uMzdkMGJiODIxYWJkODZhOWI1NjA2ZTEyN2VmYzk0
MTJhNTFiYjFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb24KICAgICBkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5n
dGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBk
YXRhUGF5bG9hZFR5cGUpCiB7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKGF1dG8gcHJl
dmlld0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewpAQCAtNTQyLDcgKzU0Miw3IEBA
IHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxs
cHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5
cGUpOwogfQogCi12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRh
UGF5bG9hZFR5cGUpCit2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIEFTU0VSVChtX3Jlc291cmNlKTsKIApA
QCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1
dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9y
ZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDog
ZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9y
ZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKaW5kZXggMzcyM2I2
YjlhYjlmZGRhYWE1NTc0YmZiMGU2ZjM4Y2VkN2FlZmI3NS4uODMyYzlmMGU3M2QzODQ2NGE3OTVm
NDAzODYwZjc5YzM0ZTczYmM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRh
KHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5
dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29t
cGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3Qg
dWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmlu
Zz4gY2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiBjaGVja1JlZGlyZWN0aW9uQ3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcHJldmlvdXNSZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0
KTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqLCBpbnQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAKICAgICB2b2lkIG5vdGlmeURv
bmUoTG9hZENvbXBsZXRpb25UeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnN0aXR1dGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURh
dGEuaAppbmRleCBmNjYyOTJlMzFjYmViNDI2NDMwYTgzMmFkZWY0Mjk5MWNiNTc0MzZlLi5hOGE0
OWI0N2Y5MjczNDI3NGJhNGNlYWJjMTcwN2ZlZmE3YjY2NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3Vic3RpdHV0ZURhdGEuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFN1YnN0aXR1dGVEYXRhKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgY29udGVudCwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNob3VsZFJl
dmVhbFRvU2Vzc2lvbkhpc3RvcnkpCisgICAgICAgIFN1YnN0aXR1dGVEYXRhKFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGNvbnRlbnQsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBz
aG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KQogICAgICAgICAgICAgOiBtX2NvbnRlbnQoV1RG
TW92ZShjb250ZW50KSkKICAgICAgICAgICAgICwgbV9mYWlsaW5nVVJMKGZhaWxpbmdVUkwpCiAg
ICAgICAgICAgICAsIG1fcmVzcG9uc2UocmVzcG9uc2UpCkBAIC01NCwxNCArNTQsMTQgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRlbnQgIT0gbnVsbHB0cjsgfQogICAgICAgICBib29sIHNob3VsZFJldmVhbFRvU2Vzc2lv
bkhpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3Rvcnkg
PT0gU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpWaXNpYmxlOyB9CiAKLSAgICAgICAgY29uc3Qg
U2hhcmVkQnVmZmVyKiBjb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50LmdldCgpOyB9
CisgICAgICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGNvbnRlbnQoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRlbnQuZ2V0KCk7IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UubWltZVR5cGUoKTsgfQogICAgICAgICBjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UudGV4dEVu
Y29kaW5nTmFtZSgpOyB9CiAgICAgICAgIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCgpIGNvbnN0IHsg
cmV0dXJuIG1fZmFpbGluZ1VSTDsgfQogICAgICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KICAgICAgICAgCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb250ZW50OworICAgICAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9jb250ZW50OwogICAgICAgICBVUkwgbV9m
YWlsaW5nVVJMOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgICAg
IFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBtX3Nob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3Rvcnkg
eyBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OkhpZGRlbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDU5NjY0YjU4NTRmODViMDJjZGYzNDkwMjBh
MGVmZjEzZWI3ODg4NzkuLmNmMmRlMGM2MmQ5NWYzMzI1YjQyYjQ2ZTI0MDM3NzQ0MTA3NDJhMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKQEAgLTM3LDEy
ICszNywxNCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJu
IG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7
IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4obV9kYXRhKTsgfQorICAg
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVm
ZXJlbmNlX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9
KTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsg
bV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRh
LmVtcHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBs
b2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRh
LT5jb3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxv
YWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEu
Y29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVy
bCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEp
CisgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJl
c3BvbnNlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogICAgICAgICA6IG1f
dXJsKFdURk1vdmUodXJsKSkKICAgICAgICAgLCBtX3Jlc3BvbnNlKFdURk1vdmUocmVzcG9uc2Up
KQogICAgICAgICAsIG1fZGF0YShXVEZNb3ZlKGRhdGEpKQpAQCAtNTIsNyArNTQsNyBAQCBwcm90
ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1f
cmVzcG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcAppbmRleCA4OWYzYjBmMWRjMzlkNDBhNTYzODc4YWU1NWY3NmM2NzBhNzE1MDkxLi4wMzZl
ZmQyMGU0OTYzMDBjZjhjOWU3ZTc5MDMxN2UwMWRlNWJhZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApA
QCAtNjA1LDcgKzYwNSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hM
b2FkaW5nTWFuaWZlc3QoKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZl
c3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlm
ZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5k
YXRhKCkuZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1
dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJM
LCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJl
c291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3Vy
Y2UtPmRhdGEoKS5zaXplKCkpOwogICAgIGlmICghbWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQg
dGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0
dXJlIGlzIHRoZSBvbmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAg
ICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpB
cHBDYWNoZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0
IGNvdWxkIG5vdCBiZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8i
X3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggNjAzMjgxODg4Mzc1ZjQ0YTYyNGIzZTNiM2FhZmUwNmEz
Njg5MmVlNi4uNTE5NzhmNDEyMzg3NGRjNTY2MGVmZjQ3MDY1OTcwN2Q0ZTVkODVhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUhvc3QuY3BwCkBAIC0yNTUsMTAgKzI1NSw4IEBAIFVSTCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBhdGgpCiAKIHN0YXRpYyBpbmxpbmUgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZSYgcmVzb3VyY2UpCiB7Ci0gICAgLy8gRklYTUU6IENsaWVudHMgcHJvYmFibHkgZG8gbm90IG5l
ZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRv
IGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQu
CiAgICAgaWYgKHJlc291cmNlLnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiByZXNv
dXJjZS5kYXRhKCkuY29weSgpOworICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VD
b250aWd1b3VzKCk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CiB9CiAKQEAgLTI5MCw5ICsyODgsNyBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JgogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291
cmNlOwogICAgICAgICBpZiAoZ2V0QXBwbGljYXRpb25DYWNoZUZhbGxiYWNrUmVzb3VyY2UocmVx
dWVzdCwgcmVzb3VyY2UpKSB7CiAgICAgICAgICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNw
b25zZSgpOwotICAgICAgICAgICAgLy8gRklYTUU6IENsaWVudHMgcHJvYWJseSBkbyBub3QgbmVl
ZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUg
Y2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVyIHdpbGwgbm90IGJlIG1v
ZGlmaWVkLgotICAgICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY29weSgpOworICAg
ICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICAg
ICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggNTJjZDE2NDAzYTE3MzZhNzE4NjU2NzcyNDg2
MTFlMDhmNjYzYjI5Zi4uYjk2MzU2ZTc4NTYxMzg5NTZhZTRjMDU5ODMxNzBjZGY3MjM2NzJhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNs
YXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOworY2xhc3MgU2hhcmVkQnVmZmVyOwog
Y2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3Mg
RnJhbWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNv
dXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIAogY2xhc3Mg
QXBwbGljYXRpb25DYWNoZUhvc3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAppbmRleCBmMWY3ZTE3
NTYzMDE0NzFmMzA4NWRlZjhlNDFkYzVkMGNhOWQ2MDlhLi4yYmIzZmU3NWI5OTc3ZTgzMzIyYWUy
NTgwZjcyMTJlZTViZjIxNjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcApAQCAtMjksNyArMjks
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkKK1JlZjxBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhdGgp
CiB7CiAgICAgQVNTRVJUKCF1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogICAgIGlmICgh
YnVmZmVyKQpAQCAtNDAsNyArNDAsNyBAQCBSZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgYwogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwgeyB1cmwgfSwg
V1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSwgdHlwZSwgYnVmZmVyLnJlbGVhc2VOb25OdWxsKCks
IHBhdGgpKTsKIH0KIAotQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIHVuc2lnbmVk
IHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQorQXBw
bGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJs
LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICA6IFN1YnN0
aXR1dGVSZXNvdXJjZShXVEZNb3ZlKHVybCksIFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGRh
dGEpKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3N0b3JhZ2VJRCgwKQpAQCAtNTEsNyAr
NTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJgogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogewotICAgIGxvYWRlci5k
ZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRh
KCkuY29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRo
KSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRo
LmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29udGlndW91cygpIDogU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCmluZGV4
IDg4Yzk0ZGUxYTc3NDEwNDY5YzkzMWE0MmE0NzliMWU2Nzc3YTcwMmUuLmMyODhlNzAzNmM2NzYy
YWQ0ODc2YmE4ODE0NjlhNzVkMjIzN2UxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgKQEAgLTQwLDcg
KzQwLDcgQEAgcHVibGljOgogICAgICAgICBGYWxsYmFjayA9IDEgPDwgNAogICAgIH07CiAKLSAg
ICBzdGF0aWMgUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gY3JlYXRlKGNvbnN0IFVSTCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgY29uc3QgU3RyaW5nJiBwYXRoID0gU3Ry
aW5nKCkpOworICAgIHN0YXRpYyBSZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUo
Y29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIHR5cGUsIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgY29u
c3QgU3RyaW5nJiBwYXRoID0gU3RyaW5nKCkpOwogCiAgICAgdW5zaWduZWQgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIHZvaWQgYWRkVHlwZSh1bnNpZ25lZCB0eXBlKTsKQEAg
LTU4LDcgKzU4LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgCiBwcml2YXRlOgotICAgIEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiwgUmVzb3VyY2VSZXNwb25zZSYmLCB1bnNpZ25lZCB0
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiwgUmVzb3VyY2VSZXNwb25zZSYmLCB1bnNpZ25lZCB0
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBwYXRoKTsK
IAogICAgIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYpIG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFjNTA4NDdhNmU4OTUxNzg5ZTNiM2ZiYWZk
YTg1MTg2NjI5MGVlYjAuLjdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3YjhiNTA3NGM3MTI5MjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAg
dm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLAogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxv
YWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCkKIHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+ZGF0YSgpLmFw
cGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBl
bmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2Fk
ZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBu
ZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRl
eCAxYjMzYWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUyMGJkMzBlNjM2NTk1Li44Y2YwNWNjZTE4ODAx
MjhkZTU5YmU3MGE5OTgzNmY1YTc0NWI2ZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTc4
Myw3ICs3ODMsNiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIGF1dG8gZGF0YVN0YXRl
bWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gQ2FjaGVSZXNv
dXJjZURhdGEgKGRhdGEsIHBhdGgpIFZBTFVFUyAoPywgPykiX3MpOwogICAgIGlmICghZGF0YVN0
YXRlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAogCiAgICAgU3RyaW5nIGZ1bGxQ
YXRoOwogICAgIGlmICghcmVzb3VyY2UtPnBhdGgoKS5pc0VtcHR5KCkpCkBAIC04MTUsNyArODE0
LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRlbWVudC0+Ymlu
ZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291cmNlLT5kYXRh
KCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3Vy
Y2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNv
dXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAgICAKICAgICBp
ZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTg3MywxMiArODcyLDEy
IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgCiAgICAgaWYgKCFleGVjdXRlU3RhdGVt
ZW50KGVudHJ5U3RhdGVtZW50LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
CisKICAgICAvLyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5IHdyaXRlIHRoZSByZXNvdXJjZSBkYXRhIHRv
IGEgZmlsZT8gSWYgc28sCiAgICAgLy8gcmVsZWFzZSB0aGUgcmVzb3VyY2UncyBkYXRhIGFuZCBm
cmVlIHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50CiAgICAgLy8gb2YgbWVtb3J5OgogICAg
IGlmICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXNvdXJjZS0+ZGF0YSgpLmNsZWFy
KCk7CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwogCiAgICAgcmVzb3VyY2UtPnNldFN0b3Jh
Z2VJRChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEyNzMsNyArMTI3Miw3IEBA
IGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnNob3VsZFN0b3JlUmVzb3VyY2VBc0ZsYXRG
aWxlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvCiAgICAgcmV0dXJuIHN0YXJ0c1dpdGhMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UodHlwZSwgImF1ZGlvLyIpIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UodHlwZSwgInZpZGVvLyIpOwogfQogICAgIAotYm9vbCBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoU2hhcmVkQnVmZmVy
JiBkYXRhLCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIGZpbGVFeHRlbnNpb24pCitib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURh
dGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBj
b25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVF
eHRlbnNpb24pCiB7CiAgICAgU3RyaW5nIGZ1bGxQYXRoOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaApp
bmRleCA5YTk1MzAwODc2NmE4ODg1NTYxYjM0ODg4OWI4Y2VkYTJiMmViMzM4Li40MTAyYTE4MDhi
NDU1NTdiNjQ1ZTM2ZTdlNjgxZmM0YzZkMjA3Y2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaApAQCAtMzks
NyArMzksNyBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlSG9zdDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBTdG9yYWdlSURKb3VybmFsOwogCiBjbGFz
cyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSA6IHB1YmxpYyBSZWZDb3VudGVkPEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlPiB7CkBAIC0xMjIsNyArMTIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGVu
c3VyZU9yaWdpblJlY29yZChjb25zdCBTZWN1cml0eU9yaWdpbiopOwogICAgIHN0YXRpYyBib29s
IHNob3VsZFN0b3JlUmVzb3VyY2VBc0ZsYXRGaWxlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSop
OwogICAgIHZvaWQgZGVsZXRlVGFibGVzKCk7Ci0gICAgYm9vbCB3cml0ZURhdGFUb1VuaXF1ZUZp
bGVJbkRpcmVjdG9yeShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3Ry
aW5nJiBvdXRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKTsKKyAgICBib29s
IHdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBvdXRGaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiBmaWxlRXh0ZW5zaW9uKTsKIAogICAgIHZvaWQgbG9hZE1hbmlmZXN0SG9zdEhhc2hlcygp
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3Rv
cnkuY3BwCmluZGV4IDZkZTgwYzEwYWM3ZDI1Y2YzNDY5ZjZkZWYwZmFmNzI0MWY1OTY0MjguLjRl
ZjljZDY2YmQwODhiNzRjMDQ2YzA2OTBkMWU5ZDNlNWUzMzYwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKQEAgLTQ2LDEyICs0Niwx
MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgUmVmUHRyPEFyY2hpdmU+IFJh
d0RhdGFDcmVhdGlvbkZ1bmN0aW9uKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYpOwordHlwZWRl
ZiBSZWZQdHI8QXJjaGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24oY29uc3QgVVJMJiwgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmF3RGF0YUNy
ZWF0aW9uRnVuY3Rpb24qLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IEFyY2hpdmVNSU1FVHlw
ZXNNYXA7CiAKIC8vIFRoZSBjcmVhdGUgZnVuY3Rpb25zIGluIHRoZSBhcmNoaXZlIGNsYXNzZXMg
cmV0dXJuIFJlZlB0ciB0byBjb25jcmV0ZSBzdWJjbGFzc2VzCiAvLyBvZiBBcmNoaXZlLiBUaGlz
IGFkYXB0b3IgbWFrZXMgdGhlIGZ1bmN0aW9ucyBoYXZlIGEgdW5pZm9ybSByZXR1cm4gdHlwZS4K
LXRlbXBsYXRlPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBh
cmNoaXZlRmFjdG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVyJiBidWZmZXIp
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBBcmNoaXZlQ2xhc3M+IHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4g
YXJjaGl2ZUZhY3RvcnlDcmVhdGUoY29uc3QgVVJMJiB1cmwsIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gQXJjaGl2ZUNsYXNzOjpjcmVhdGUodXJsLCBidWZm
ZXIpOwogfQpAQCAtODMsNyArODMsNyBAQCBib29sIEFyY2hpdmVGYWN0b3J5Ojppc0FyY2hpdmVN
SU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiAhbWltZVR5cGUuaXNF
bXB0eSgpICYmIGFyY2hpdmVNSU1FVHlwZXMoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKLVJl
ZlB0cjxBcmNoaXZlPiBBcmNoaXZlRmFjdG9yeTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCitSZWZQdHI8QXJjaGl2ZT4g
QXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBpZiAoIWRhdGEpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L0FyY2hpdmVGYWN0b3J5LmgKaW5kZXggMjFkMjM2NWNmOGQ5ZDkwMWVmZTdhYWQ1NTJiZjNkYTQw
NjlmZTQwZC4uNTU2NDUxNWM5ZTBkOWQwMzNiNzkwYzc0NzI4NWEyNTg1M2FiZTAyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCkBAIC0zNCwx
MiArMzQsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBBcmNoaXZlRmFjdG9yeSB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNBcmNoaXZlTUlNRVR5cGUoY29uc3QgU3RyaW5n
Jik7Ci0gICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICBzdGF0aWMgUmVmUHRy
PEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3Rlcktub3du
QXJjaGl2ZU1JTUVUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiYpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJj
aGl2ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVS
ZXNvdXJjZS5jcHAKaW5kZXggZmMyMGRhM2RhMDMyY2JlZjc0ZjJlOWM4NDI4YWNiNGVlMzdiZWYy
My4uMDczODM5NGE4Mjg3MTRhYTBiOTBlZTc1MDc5ZDQ4NmY1YjBlODY5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCkBAIC0zMyw3
ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIEFyY2hpdmVSZXNvdXJj
ZTo6QXJjaGl2ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBj
b25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CitpbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgOiBTdWJzdGl0dXRlUmVzb3Vy
Y2UoVVJMIHsgdXJsIH0sIFJlc291cmNlUmVzcG9uc2UgeyByZXNwb25zZSB9LCBXVEZNb3ZlKGRh
dGEpKQogICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1fdGV4dEVuY29kaW5nKHRl
eHRFbmNvZGluZykKQEAgLTQyLDcgKzQyLDcgQEAgaW5saW5lIEFyY2hpdmVSZXNvdXJjZTo6QXJj
aGl2ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwKIHsK
IH0KIAotUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1JlZlB0cjxBcmNoaXZlUmVz
b3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC01NCw3ICs1NCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFy
Y2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uCiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXJjaGl2ZVJlc291cmNlKGRhdGEucmVsZWFzZU5vbk51
bGwoKSwgdXJsLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nLCBmcmFtZU5hbWUsIHJlc3BvbnNlKSk7
CiB9CiAKLVJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQorUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291
cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIHJldHVy
biBjcmVhdGUoV1RGTW92ZShkYXRhKSwgdXJsLCByZXNwb25zZS5taW1lVHlwZSgpLCByZXNwb25z
ZS50ZXh0RW5jb2RpbmdOYW1lKCksIFN0cmluZygpLCByZXNwb25zZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oCmluZGV4IDIwOWU5NzE3
YWViMDkzNjBkYjM5MjdlNmVmYTFlNWJmMWMyYzk3Y2EuLjA1NDhlZjcyMWVmZDI3YzAwY2U5M2Qx
MjI3MGVjZWM0NmMwMmFmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL0FyY2hpdmVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L0FyY2hpdmVSZXNvdXJjZS5oCkBAIC0zNCw4ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQXJjaGl2ZVJlc291cmNlIDogcHVibGljIFN1YnN0aXR1dGVSZXNvdXJjZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLAorICAgIHN0YXRpYyBSZWZQdHI8QXJj
aGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLAogICAgICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsCiAg
ICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmID0gUmVzb3VyY2VSZXNwb25zZSgpKTsKIApA
QCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRJZ25vcmVXaGVuVW5hcmNo
aXZpbmcoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZElnbm9yZVdoZW5VbmFyY2hpdmluZzsgfQog
CiBwcml2YXRlOgotICAgIEFyY2hpdmVSZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGlu
ZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAg
ICBBcmNoaXZlUmVzb3VyY2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBj
b25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAg
U3RyaW5nIG1fbWltZVR5cGU7CiAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApp
bmRleCBkZTdkYWRkZGFjMjIxMmY2ZDVlMGNjMDkxZDRlNDE2NzdhM2YwMTVkLi43MTE1MGNiZGQ4
OTY5ZTZhZjAyODY4NGI2YmY2Y2JjMGE1MGIyZmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtOTAsNyArOTAs
NyBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQ
cm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIFJlc291cmNlIGRhdGEgY2FuIGJl
IGVtcHR5LCBidXQgbXVzdCBiZSByZXByZXNlbnRlZCBieSBhbiBlbXB0eSBDRkRhdGFSZWYKICAg
ICBhdXRvJiBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKIAotICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwg
ZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJv
cGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKIAogICAgIC8vIFJlc291cmNl
IFVSTCBjYW5ub3QgYmUgbnVsbAogICAgIGlmIChhdXRvIGNmVVJMID0gcmVzb3VyY2UtPnVybCgp
LnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpCkBAIC0xMTcsOSArMTE3LDkgQEAgUmV0YWluUHRy
PENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVw
cmVzZW50YXRpb24oQXIKICAgICAvLyBEb24ndCBpbmNsdWRlIHRoZSByZXNvdXJjZSByZXNwb25z
ZSBmb3IgdGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFpblJlc291cmNlKSB7CiAgICAg
ICAgIGlmIChhdXRvIHJlc291cmNlUmVzcG9uc2VEYXRhID0gY3JlYXRlUHJvcGVydHlMaXN0UmVw
cmVzZW50YXRpb24ocmVzb3VyY2UtPnJlc3BvbnNlKCkpKQotICAgICAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VS
ZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOyAgICAKKyAgICAgICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2
ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsKICAgICB9
Ci0gICAgCisKICAgICByZXR1cm4gcHJvcGVydHlMaXN0OwogfQogCkBAIC0yMTUsMTMgKzIxNSwx
MyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNv
dXJjZShDRkRpY3Rpb25hcnlSZWYgZGljdGlvbgogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAi
TGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIGRhdGEgaXMgbm90IG9mIHR5cGUg
Q0ZEYXRhLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGF1dG8gcmVzb3Vy
Y2VSZXNwb25zZVZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VWZXJz
aW9uS2V5KSk7CiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiAmJiBDRkdldFR5
cGVJRChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewog
ICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJl
c3BvbnNlIHZlcnNpb24gaXMgbm90IG9mIHR5cGUgQ0ZTdHJpbmcsIGNhbm5vdCBjcmVhdGUgaW52
YWxpZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0K
LSAgICAgICAgCisKICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVSZXNvdXJjZVJlc3BvbnNlRnJv
bVByb3BlcnR5TGlzdERhdGEocmVzb3VyY2VSZXNwb25zZURhdGEsIHJlc291cmNlUmVzcG9uc2VW
ZXJzaW9uKTsKICAgICB9CiAKQEAgLTI0OCwyMyArMjQ4LDIzIEBAIFJlZjxMZWdhY3lXZWJBcmNo
aXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiBtYWlu
UmVzb3VyCiAgICAgcmV0dXJuIGFyY2hpdmU7CiB9CiAKLVJlZlB0cjxMZWdhY3lXZWJBcmNoaXZl
PiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhKQorUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhKQogewogICAgIHJldHVybiBjcmVhdGUoVVJMKCksIGRhdGEpOwogfQogCi1S
ZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVS
TCYsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIHsKICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQ3JlYXRpbmcgZnJv
bSByYXcgZGF0YSIpOwotICAgIAorCiAgICAgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUg
PSBjcmVhdGUoKTsKLSAgICAgICAgCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0g
ZGF0YS5jcmVhdGVDRkRhdGEoKTsKKworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9
IGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAgICAgaWYgKCFjZkRhdGEp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAKKwogICAgIENGRXJyb3JSZWYgZXJy
b3IgPSBudWxscHRyOwotICAgIAorCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcGxp
c3QgPSBhZG9wdENGKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZQcm9wZXJ0eUxpc3RD
cmVhdGVXaXRoRGF0YSgwLCBjZkRhdGEuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSwg
MCwgJmVycm9yKSkpOwogICAgIGlmICghcGxpc3QpIHsKICNpZm5kZWYgTkRFQlVHCkBAIC0yNzYs
MTIgKzI3NiwxMiBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YQogICAgICAgICAgICAgQ0ZSZWxl
YXNlKGVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAg
aWYgKENGR2V0VHlwZUlEKHBsaXN0LmdldCgpKSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkg
ewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQXJjaGl2ZSBwcm9w
ZXJ0eSBsaXN0IGlzIG5vdCB0aGUgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZh
bGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAor
CiAgICAgaWYgKCFhcmNoaXZlLT5leHRyYWN0KHBsaXN0LmdldCgpKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKQEAgLTI5NSw3ICsyOTUsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4
dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgIExPRyhBcmNoaXZlcywg
IkxlZ2FjeVdlYkFyY2hpdmUgLSBOdWxsIHJvb3QgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZh
bGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwog
ICAgIENGRGljdGlvbmFyeVJlZiBtYWluUmVzb3VyY2VEaWN0ID0gc3RhdGljX2Nhc3Q8Q0ZEaWN0
aW9uYXJ5UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNo
aXZlTWFpblJlc291cmNlS2V5KSk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEaWN0KSB7CiAgICAg
ICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBObyBtYWluIHJlc291cmNlIGlu
IGFyY2hpdmUsIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwpAQCAtMzMzLDcgKzMzMyw3
IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlv
bmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0g
U3VicmVzb3VyY2UgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxp
ZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0g
Y3JlYXRlUmVzb3VyY2Uoc3VicmVzb3VyY2VEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJy
ZXNvdXJjZShzdWJyZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgfQpAQCAtMzUz
LDcgKzM1Myw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlS
ZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJB
cmNoaXZlIC0gU3ViZnJhbWUgYXJyYXkgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJv
cnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGF1dG8gc3ViZnJh
bWVBcmNoaXZlID0gY3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5l
eHRyYWN0KHN1YmZyYW1lRGljdCkpCiAgICAgICAgICAgICAgICAgYWRkU3ViZnJhbWVBcmNoaXZl
KFdURk1vdmUoc3ViZnJhbWVBcmNoaXZlKSk7CkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBMZWdh
Y3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAg
ICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBJbnZhbGlkIHN1YmZy
YW1lIGFyY2hpdmUgc2tpcHBlZCIpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTUwNiw3ICs1MDYsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2
ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBG
cgogewogICAgIGF1dG8mIHJlc3BvbnNlID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KS0+cmVzcG9uc2UoKTsKICAgICBVUkwgcmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKLSAg
ICAKKwogICAgIC8vIGl0J3MgcG9zc2libGUgdG8gaGF2ZSBhIHJlc3BvbnNlIHdpdGhvdXQgYSBV
UkwgaGVyZQogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81NDU0OTM1PgogICAgIGlmIChyZXNwb25z
ZVVSTC5pc051bGwoKSkKQEAgLTYwNSw3ICs2MDUsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2
ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAK
ICAgICBpZiAoIWRvY3VtZW50LT5pc0ZyYW1lU2V0KCkpCiAgICAgICAgIHJldHVybiBhcmNoaXZl
OwotICAgICAgICAKKwogICAgIC8vIFdyYXAgdGhlIGZyYW1lc2V0IGRvY3VtZW50IGluIGFuIGlm
cmFtZSBzbyBpdCBjYW4gYmUgcGFzdGVkIGludG8KICAgICAvLyBhbm90aGVyIGRvY3VtZW50ICh3
aGljaCB3aWxsIGhhdmUgYSBib2R5IG9yIGZyYW1lc2V0IG9mIGl0cyBvd24pLiAKICAgICBTdHJp
bmcgaWZyYW1lTWFya3VwID0gIjxpZnJhbWUgZnJhbWVib3JkZXI9XCJub1wiIG1hcmdpbndpZHRo
PVwiMFwiIG1hcmdpbmhlaWdodD1cIjBcIiB3aWR0aD1cIjk4JSVcIiBoZWlnaHQ9XCI5OCUlXCIg
c3JjPVwiIiArIGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVy
bCgpLnN0cmluZygpICsgIlwiPjwvaWZyYW1lPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKaW5kZXggZDA5ZWM5Zjc1YWJhMTM2
YTg2MzM5ZWI0ZDg2YWJkODI3N2M0ZmYwNC4uNWEwN2IxMGI0YmU2Zjg2MjAxMWE3ODJhN2RlZDIz
Njc1OTI0MzYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuaApAQCAtNDEsOCArNDEsOCBAQCBzdHJ1Y3QgU2ltcGxlUmFuZ2U7
CiBjbGFzcyBMZWdhY3lXZWJBcmNoaXZlIGZpbmFsIDogcHVibGljIEFyY2hpdmUgewogcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRl
KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBj
cmVhdGUoU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxM
ZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGNy
ZWF0ZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmIG1haW5SZXNvdXJjZSwgVmVjdG9yPFJlZjxBcmNo
aXZlUmVzb3VyY2U+PiYmIHN1YnJlc291cmNlcywgVmVjdG9yPFJlZjxMZWdhY3lXZWJBcmNoaXZl
Pj4mJiBzdWJmcmFtZUFyY2hpdmVzKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShOb2RlJiwgRnVuY3Rpb248Ym9vbChGcmFtZSYpPiYm
IGZyYW1lRmlsdGVyID0geyB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFtZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5kZXggYWNmYmJiNzAyMDIy
ZDA2YWZlNjIwMDQwNDg3ZmQzNGQ5MjFkNzI3Yy4uZDAxMzlmODdhMDZmOTY5NzhiNzQ3N2U5ZjQ5
OTljMzRlYTlmODYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgUmVmPE1IVE1MQXJj
aGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1I
VE1MQXJjaGl2ZSk7CiB9CiAKLVJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3Jl
YXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGRhdGEpCitSZWZQdHI8TUhUTUxBcmNo
aXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBGb3Igc2VjdXJpdHkgcmVhc29ucyB3ZSBvbmx5IGxv
YWQgTUhUTUwgcGFnZXMgZnJvbSBsb2NhbCBVUkxzLgogICAgIGlmICghTGVnYWN5U2NoZW1lUmVn
aXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCh1cmwucHJvdG9jb2woKS50b1N0cmlu
ZygpKSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hp
dmU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIHJldHVy
biBtYWluQXJjaGl2ZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5l
cmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE1I
VE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKIHsKICAgICBWZWN0b3I8
UGFnZVNlcmlhbGl6ZXI6OlJlc291cmNlPiByZXNvdXJjZXM7CiAgICAgUGFnZVNlcmlhbGl6ZXIg
cGFnZVNlcmlhbGl6ZXIocmVzb3VyY2VzKTsKQEAgLTE2Miw4ICsxNjIsOCBAQCBSZWY8U2hhcmVk
QnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAg
Ly8gV2UgdXNlIHV0ZjgoKSBiZWxvdyBpbnN0ZWFkIG9mIGFzY2lpKCkgYXMgYXNjaWkoKSByZXBs
YWNlcyBDUkxGcyB3aXRoID8/ICh3ZSBzdGlsbCBvbmx5IGhhdmUgcHV0IEFTQ0lJIGNoYXJhY3Rl
cnMgaW4gaXQpLgogICAgIEFTU0VSVChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkuaXNBbGxBU0NJ
SSgpKTsKICAgICBDU3RyaW5nIGFzY2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygp
LnV0ZjgoKTsKLSAgICBhdXRvIG1odG1sRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0g
ICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5n
dGgoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtaHRtbERhdGE7CisgICAgbWh0bWxEYXRh
LmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAg
IGZvciAoYXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKICAgICAgICAgc3RyaW5nQnVpbGRl
ci5jbGVhcigpOwpAQCAtMTc4LDE1ICsxNzgsMTUgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxB
cmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgiXHJcbkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6ICIsIGNvbnRlbnRFbmNv
ZGluZywgIlxyXG5Db250ZW50LUxvY2F0aW9uOiAiLCByZXNvdXJjZS51cmwuc3RyaW5nKCksICJc
clxuXHJcbiIpOwogCiAgICAgICAgIGFzY2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmlu
ZygpLnV0ZjgoKTsKLSAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgp
LCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlT
dHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKICAgICAgICAgLy8gRklYTUU6
IGlkZWFsbHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250ZW50IGFzIGEgc3RyZWFtIHdpdGhvdXQg
aGF2aW5nIHRvIGZldGNoIGl0IGFsbC4KICAgICAgICAgYXV0byogZGF0YSA9IHJlc291cmNlLmRh
dGEtPmRhdGEoKTsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGggPSByZXNvdXJjZS5kYXRhLT5z
aXplKCk7CiAgICAgICAgIGlmICghc3RyY21wKGNvbnRlbnRFbmNvZGluZywgcXVvdGVkUHJpbnRh
YmxlKSkgewogICAgICAgICAgICAgYXV0byBlbmNvZGVkRGF0YSA9IHF1b3RlZFByaW50YWJsZUVu
Y29kZShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGVu
Y29kZWREYXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsKLSAgICAgICAgICAgIG1odG1s
RGF0YS0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKGVu
Y29kZWREYXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsKKyAgICAgICAgICAgIG1odG1s
RGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFT
U0VSVCghc3RyY21wKGNvbnRlbnRFbmNvZGluZywgYmFzZTY0KSk7CiAgICAgICAgICAgICAvLyBX
ZSBhcmUgbm90IHNwZWNpZnlpbmcgaW5zZXJ0TEZzID0gdHJ1ZSBiZWxvdyBhcyBpdCB3b3VsZCBj
dXQgdGhlIGxpbmVzIHdpdGggTEZzIGFuZCBNSFRNTCByZXF1aXJlcyBDUkxGcy4KQEAgLTE5Niwx
NyArMTk2LDE3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRN
TERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgICAgIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCA9
IGVuY29kZWREYXRhLnNpemUoKTsKICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICBz
aXplX3QgbGluZUxlbmd0aCA9IHN0ZDo6bWluKGVuY29kZWREYXRhTGVuZ3RoIC0gaW5kZXgsIG1h
eGltdW1MaW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChlbmNv
ZGVkRGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0
bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgICAgICBtaHRtbERhdGEuYXBw
ZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVuZ3RoKTsKKyAgICAgICAgICAg
ICAgICBtaHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgICAgICAgICAgaW5kZXgg
Kz0gbWF4aW11bUxpbmVMZW5ndGg7CiAgICAgICAgICAgICB9IHdoaWxlIChpbmRleCA8IGVuY29k
ZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGFzY2lpU3RyaW5nID0gbWFr
ZVN0cmluZygiLS0iLCBib3VuZGFyeSwgIi0tXHJcbiIpLnV0ZjgoKTsKLSAgICBtaHRtbERhdGEt
PmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBt
aHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkp
OwogCi0gICAgcmV0dXJuIG1odG1sRGF0YTsKKyAgICByZXR1cm4gbWh0bWxEYXRhLnRha2UoKTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRN
TEFyY2hpdmUuaAppbmRleCAzZDJkYjdjOTYwMDJlYmU2ODRiMmJlZjhmMWVhOWUyZTk3OTRhNTg5
Li4yZGZlODdlODJlN2E0ZGNlMGYzNDFjMzYxOTQzYzk5MDIwNWM4ZGIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaApAQCAtMzgs
MTQgKzM4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTUhUTUxQYXJzZXI7CiBj
bGFzcyBQYWdlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgTUhUTUxBcmNoaXZlIGZpbmFsIDogcHVibGljIEFyY2hpdmUgewogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8TUhUTUxBcmNoaXZlPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMg
UmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYpOwor
ICAgIHN0YXRpYyBSZWZQdHI8TUhUTUxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGdlbmVy
YXRlTUhUTUxEYXRhKFBhZ2UqKTsKKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKIAogICAgIHZpcnR1YWwgfk1IVE1MQXJjaGl2
ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRN
TFBhcnNlci5jcHAKaW5kZXggZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBiZGI4MDE1
ZS4uNWVlOTE4Njg0YTA2ODk2ODNmNzFjMjY3ZjJkOTAxYTM3YTZmZWI1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAt
NTEsNyArNTEsNyBAQCBzdGF0aWMgYm9vbCBza2lwTGluZXNVbnRpbEJvdW5kYXJ5Rm91bmQoU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXImIGxpbmVSZWFkZXIsIGNvbgogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotTUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2VyKFNoYXJlZEJ1ZmZlciogZGF0YSkKK01IVE1M
UGFyc2VyOjpNSFRNTFBhcnNlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIDog
bV9saW5lUmVhZGVyKGRhdGEsICJcclxuIikKIHsKIH0KQEAgLTE0MCw3ICsxNDAsNyBAQCBSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1F
SGVhZGVyJiBtaW1lSGVhZGVyLAogewogICAgIEFTU0VSVChlbmRPZlBhcnRCb3VuZGFyeS5pc0Vt
cHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHkoKSk7CiAKLSAgICBhdXRvIGNv
bnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
Y29udGVudDsKICAgICBjb25zdCBib29sIGNoZWNrQm91bmRhcnkgPSAhZW5kT2ZQYXJ0Qm91bmRh
cnkuaXNFbXB0eSgpOwogICAgIGJvb2wgZW5kT2ZQYXJ0UmVhY2hlZCA9IGZhbHNlOwogICAgIGlm
IChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6Qmlu
YXJ5KSB7CkBAIC0xNTQsNyArMTU0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQ
YXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAg
ICAgICAgIExPR19FUlJPUigiQmluYXJ5IGNvbnRlbnRzIHJlcXVpcmVzIGVuZCBvZiBwYXJ0Iik7
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICBjb250ZW50
LT5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CisgICAgICAgIGNvbnRlbnQuYXBwZW5kKFdURk1vdmUo
cGFydCkpOwogICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9yKCJcclxuIik7CiAgICAg
ICAgIFZlY3Rvcjx1aW50OF90PiBuZXh0Q2hhcnM7CiAgICAgICAgIGlmIChtX2xpbmVSZWFkZXIu
cGVlayhuZXh0Q2hhcnMsIDIpICE9IDIpIHsKQEAgLTE4MCwxMCArMTgwLDEwIEBAIFJlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFk
ZXImIG1pbWVIZWFkZXIsCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgdXNlIGxpbmUudXRmOCgpIGFuZCBub3QgbGluZS5h
c2NpaSgpIGFzIGFzY2lpIHR1cm5zIHNwZWNpYWwgY2hhcmFjdGVycyAoc3VjaCBhcyB0YWIsIGxp
bmUtZmVlZC4uLikgaW50byAnPycuCi0gICAgICAgICAgICBjb250ZW50LT5hcHBlbmQobGluZS51
dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5k
KGxpbmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAobWlt
ZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OlF1b3RlZFBy
aW50YWJsZSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBsaW5lIHJlYWRlciByZW1vdmVzIHRo
ZSBcclxuLCBidXQgd2UgbmVlZCB0aGVtIGZvciB0aGUgY29udGVudCBpbiB0aGlzIGNhc2UgYXMg
dGhlIFF1b3RlZFByaW50YWJsZSBkZWNvZGVyIGV4cGVjdHMgQ1ItTEYgdGVybWluYXRlZCBsaW5l
cy4KLSAgICAgICAgICAgICAgICBjb250ZW50LT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAg
ICAgICAgICBjb250ZW50LmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQpAQCAtMTkzLDkgKzE5MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBN
SFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAog
ICAgIH0KIAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgIGF1dG8gY29udGlndW91c0Nv
bnRlbnQgPSBjb250ZW50LnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzd2l0Y2ggKG1p
bWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhlYWRl
cjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29u
dGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBhdXRvIGRlY29kZWREYXRh
ID0gYmFzZTY0RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250
ZW50LT5zaXplKCkpOwogICAgICAgICBpZiAoIWRlY29kZWREYXRhKSB7CiAgICAgICAgICAgICBM
T0dfRVJST1IoIkludmFsaWQgYmFzZTY0IGNvbnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNCwxMSArMjA1LDExIEBAIFJlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXIm
IG1pbWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFkZXI6
OlF1b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShj
b250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQ
cmludGFibGVEZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRl
bnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5C
aXQ6CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCaW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5kKGNv
bnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoY29u
dGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBlbmNv
ZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oCmluZGV4IDFlOWJkNGQ3NzY3ZWUzOTFhMDAyMmY3MTc0
OGYwMGI4NWM4MWIyNWYuLjBkNjA0MzQzZjNkN2FkMTc4Y2MyMjAwM2M5NzljMjJlNTBhM2I5OWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuaApAQCAtNDIsMTEgKzQyLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFyY2hp
dmVSZXNvdXJjZTsKIGNsYXNzIE1IVE1MQXJjaGl2ZTsKIGNsYXNzIE1JTUVIZWFkZXI7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBN
SFRNTFBhcnNlciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTUhUTUxQYXJzZXIoU2hhcmVkQnVm
ZmVyKik7CisgICAgZXhwbGljaXQgTUhUTUxQYXJzZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciop
OwogCiAgICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gcGFyc2VBcmNoaXZlKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0LmNwcAppbmRleCA2NTI1MWViNjgyMDdmYzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li5l
MWE4NzUxNmJkOGQ1YjhmMjRhZjZhNWI5OTBlMjE4NTM0N2U3NTkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Qu
Y3BwCkBAIC00MCwxMiArNDAsMTYgQEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIHsKIH0KIAot
dm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRB
cHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBt
X2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAw
KTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAg
ICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNp
emUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAg
ICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5oCmluZGV4IDA3ZjJhMDc5YzU2NGVlZmZiNjk3YzM3Yzc4NTY1ZTFlYThkOWFlNWUu
LjM3OThhOWI0ZDkwMTNjZmRlYTZmNTZmYmRmMDAxNWFmODk0NzU3MDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Qu
aApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxzdHJ1Y3QgQXBw
bGljYXRpb25NYW5pZmVzdD4gcHJvY2Vzcyhjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBV
UkwmIGRvY3VtZW50VVJMLCBEb2N1bWVudCogPSBudWxscHRyKTsKIAogcHJpdmF0ZToKLSAgICB2
b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICBjb25z
dCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9kZWNvZGVyLnB0cigpOyB9CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHls
ZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcAppbmRleCA1OWZhN2M2MmZjNjFlNjM3NDJmNzRjYzZhMGJjZjAwMGJhOWIxNzZmLi4z
OGEyZTE3ZjBkMDZjOGFjOThkZTI0YjFlNTJiOGU2MGU5MjQxMjBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC04MSw3
ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQoTUlN
RVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQsCiAgICAgICAgIHJldHVybiBtX2RlY29k
ZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNoZSB0aGUgZGVjb2RlZCB0ZXh0LCByZWdl
bmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2UgcXVpdGUgYSBiaXQgb2YgbWVtb3J5Ci0g
ICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0
YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIENh
Y2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UpCkBAIC05NywxMyArOTcsMTcgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0Ojpz
ZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICBz
YXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQubV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwogfQog
Ci12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZENTU1N0
eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRh
dGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIC8v
IERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNo
ZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCi0gICAgaWYgKGRhdGEpCi0gICAg
ICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9
IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNp
emUoKSk7CisgICAgICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2Rp
bmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCisg
ICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9k
YXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRh
ID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExv
YWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogICAgIC8vIENsZWFyIHRo
ZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkgdG8gYmUgbmVlZGVkIGltbWVkaWF0ZWx5
IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggNWQ0ZGQzZGM3ZTM1M2Vl
M2NiMmZiOTNmMjc4ZDI1NzliOGQ5YTdhMS4uZTY1NWM2OWUzZWRiNjA5NTAyMzljY2U0NTQ1ZjA5
NmI1MjY1NmRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRF
bmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25z
dCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNv
ZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkZXN0cm95RGVj
b2RlZERhdGEoKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hl
ZFJlc291cmNlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4MjM1MWQ3ZjY2MjViY2UyNzFkMDc3NjMzYWU5NC4uZDJi
YzI4MjE0NzljNTlhMjMyM2U0ZjY1Y2Q5NGI2M2I0MjM3MzY0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjQsMTAgKzY0LDE1IEBAIHZvaWQgQ2Fj
aGVkRm9udDo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAg
ICAgIHN0YXRpY19jYXN0PENhY2hlZEZvbnRDbGllbnQmPihjbGllbnQpLmZvbnRMb2FkZWQoKnRo
aXMpOwogfQogCi12b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEZvbnQ6
OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAg
c2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAgICBp
ZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAg
ICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQog
ICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpAQCAt
MTA1LDcgKzExMCw3IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hh
cmVkQnVmZmVyKiBkYXRhKQogCiBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywg
Y29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKLSAgICBS
ZWZQdHIgYnVmZmVyIHsgJmJ5dGVzIH07CisgICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVzIH07
CiAgICAgd3JhcHBpbmcgPSAhY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIpOwog
ICAgIHJldHVybiBidWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIs
IGl0ZW1JbkNvbGxlY3Rpb24pIDogbnVsbHB0cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBAQCB2b2lk
IENhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAg
ICAgaWYgKGlzTG9hZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBDYWNoZWRS
ZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRGb250Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsK
ICAgICB3aGlsZSAoQ2FjaGVkRm9udENsaWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKICAg
ICAgICAgY2xpZW50LT5mb250TG9hZGVkKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5oCmluZGV4IGNlYmRjNTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVjNGJl
ZjQyMTAuLjEzNDY2Y2M5OWQwZDE5Y2JmM2Q4ZWYzZGZiZDk2ZjM0ZDBmODU0MTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNzQsNyArNzQsNyBAQCBwcml2
YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNv
bnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAg
ICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYjE1OWYyOWVlOTBmZTNkZTAxOWMxMTQ5
YmRhNjk0ZTBlNmY2YjU0Mi4uOTQ2Mjc5NTIwZDBkYTQ0NjIyYzZhY2QzNjY2MjI4ODEwNWU4MTk2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00
NjgsOSArNDY4LDkgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogICAg
IG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1
cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQog
ewotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMo
KTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2Uo
KTsKIApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJV
cGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkg
LSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFC
YWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2Fj
aGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0
CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVk
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFk
YXRhIHx8ICFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAg
ICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2Ny
aXB0UmVzb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAj
aWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3Jp
cHREYXRhVG9QREYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRh
VG9QREYoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKICNl
bHNlCiAgICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxkIGhhdmUgYmVlbiBjYW5jZWxlZCBp
ZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVydGluZyBQb3N0U2NyaXB0IHRvIFBE
Ri4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU1Myw3ICs1NTUsNyBAQCBFbmNvZGVk
RGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1
ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1
ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAg
IHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOwpAQCAtNTY3LDcgKzU2OSw3IEBAIHZvaWQgQ2Fj
aGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
KQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZv
aWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2Fk
aW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBjb252ZXJ0ZWREYXRhSWZOZWVkZWQo
ZGF0YSk7CiAgICAgaWYgKG1fZGF0YSkgewpAQCAtNTkzLDcgKzU5NSw3IEBAIHZvaWQgQ2FjaGVk
SW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1lCiB2b2lkIENhY2hlZEltYWdlOjpkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29u
dGVudHMoKQogewogICAgIGlmIChtX2ltYWdlKSB7Ci0gICAgICAgIC8vIExldCB0aGUgSW1hZ2Ug
a25vdyB0aGF0IHRoZSBTaGFyZWRCdWZmZXIgaGFzIGJlZW4gcmVqaWdnZWQsIHNvIGl0IGNhbiBs
ZXQgZ28gb2YgYW55IHJlZmVyZW5jZXMgdG8gdGhlIGhlYXAtYWxsb2NhdGVkIHJlc291cmNlIGJ1
ZmZlci4KKyAgICAgICAgLy8gTGV0IHRoZSBJbWFnZSBrbm93IHRoYXQgdGhlIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIgaGFzIGJlZW4gcmVqaWdnZWQsIHNvIGl0IGNhbiBsZXQgZ28gb2YgYW55IHJl
ZmVyZW5jZXMgdG8gdGhlIGhlYXAtYWxsb2NhdGVkIHJlc291cmNlIGJ1ZmZlci4KICAgICAgICAg
Ly8gRklYTUUocmRhcjovL3Byb2JsZW0vMjQyNzU2MTcpOiBJdCB3b3VsZCBiZSBiZXR0ZXIgaWYg
d2UgY291bGQgc29tZWhvdyB0ZWxsIHRoZSBJbWFnZSdzIGRlY29kZXIgdG8gc3dhcCBpbiB0aGUg
bmV3IGNvbnRlbnRzIHdpdGhvdXQgZGVzdHJveWluZyBhbnl0aGluZy4KICAgICAgICAgbV9pbWFn
ZS0+ZGVzdHJveURlY29kZWREYXRhKHRydWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggZTM4OTYyYTBkY2FmYmNlZjYzMWMxNGU2M2ZlYjg1
YmEwNTUyMDNmNC4uMDgzZjkyZjg4ODI3NmVlZGE4OTkxMjAzMWQyNDQ5YTk2OGUyNjVkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTY5LDggKzY5LDgg
QEAgcHVibGljOgogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1
cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZVdpZHRoKCk7IH0KICAgICBib29sIGlt
YWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2Ut
Pmhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KIAotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZl
cihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5p
c2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIGVudW0gU2l6ZVR5cGUgewogICAgICAgICBVc2Vk
U2l6ZSwKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29k
ZWREYXRhKCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRh
KCkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVk
KFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29u
dmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNv
bnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0
dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lkIHVwZGF0
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKQEAg
LTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJ
bWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRl
KGNvbnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1
ZmZlciYpOworICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMo
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5jcHAKaW5kZXggOTJiMDgzNjk3NTg4ODQ0MDkxOTM5ZTNlZWQ3OWQ3N2YxODM5
NTYyZi4uODk1ZGIxMTU4YjZiOGM4ZmJmN2IxMGI0M2I2MTRlZGE5NjAyMWNkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC00
OCw3ICs0OCw3IEBAIENhY2hlZFJhd1Jlc291cmNlOjpDYWNoZWRSYXdSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUeXBlIHR5cGUsCiAgICAgQVNTRVJUKGlzTWFpbk9y
TWVkaWFPckljb25PclJhd1Jlc291cmNlKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1
ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRh
Q2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorc3RkOjpvcHRpb25hbDxTaGFy
ZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFs
RGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7CiAg
ICAgc2l6ZV90IHByZXZpb3VzRGF0YUxlbmd0aCA9IGVuY29kZWRTaXplKCk7CiAgICAgaWYgKCFk
YXRhIHx8IGRhdGEtPnNpemUoKSA8PSBwcmV2aW91c0RhdGFMZW5ndGgpCkBAIC01Niw3ICs1Niw3
IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNl
OjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDCiAgICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRh
KHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0
ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRh
dGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBT
a2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5lc3RlZCBydW5sb29wcy4gV2Un
bGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExvYWRpbmcuCiAgICAgaWYgKG1f
aW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkUmF3
UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAKICAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAg
ICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1
ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNv
bnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7
CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNEYXRhU2l6ZSkgewpAQCAtOTYsNyAr
OTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShk
YXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQor
dm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAg
ICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpIHsKICAgICAgICAgLy8gV2UgbWF5IGdl
dCBoZXJlIHN5bmNocm9ub3VzbHkgZnJvbSB1cGRhdGVCdWZmZXIoKSBpZiB0aGUgY2FsbGJhY2sg
dGhlcmUgZW5kcyB1cCBzcGlubmluZyBhIHJ1bmxvb3AuCkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2
b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJh
d1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kg
ZGF0YUJ1ZmZlcmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBp
ZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRh
KSB7Ci0gICAgICAgIG1fZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50
YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAg
ICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGll
bnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERh
dGEtPnNpemUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAg
IG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBp
bmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewor
ICAgICAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAg
ICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEo
KSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNL
X0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5oCmluZGV4IDg0ZTBkODQ0ZDU3MTA5OTUzYWU2YmZmNjU1NjU5OTUzZTI4YmE2OWIuLmE3ODY1
ZjhhZDE3OGFlZmIzMjIwYTU2ZGNmZjE5NTk5M2NmOTVhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC01MSw5ICs1MSw5IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNs
aWVudCYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIGZpbmFs
OworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBm
aW5hbDsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgp
IG92ZXJyaWRlOwpAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3dpdGNoQ2xp
ZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJjZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgbWF5VHJ5UmVw
bGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hbGxvd0VuY29kZWRE
YXRhUmVwbGFjZW1lbnQ7IH0KIAotICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZp
ZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciopIGNv
bnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUlu
Y3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKSBjb25zdDsK
ICAgICB2b2lkIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICAKICNpZiBVU0UoUVVJQ0tfTE9PSykKQEAgLTkyLDcg
KzkyLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVkaXJlY3RQYWlyLCAwLCBDcmFzaE9uT3Zl
cmZsb3csIDA+IG1fcmVkaXJlY3RDaGFpbjsKIAogICAgIHN0cnVjdCBEZWxheWVkRmluaXNoTG9h
ZGluZyB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVm
UHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB9OwogICAgIHN0
ZDo6b3B0aW9uYWw8RGVsYXllZEZpbmlzaExvYWRpbmc+IG1fZGVsYXllZEZpbmlzaExvYWRpbmc7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAK
aW5kZXggM2FlOGJiNjhkMjVjZGRkMTgwMjA5MjJmNWVkYjI0ZDRiOTEyMDAwMi4uYmY2OWU4MGU1
NzZlMWEyODhmNmEwMTFmNTQ2MTQ2MzE1NTgwMWQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBD
YWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKIH0K
IAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpCit2b2lk
IENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5n
UG9saWN5OjpCdWZmZXJEYXRhKTsKIH0KQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIENhY2hlZFJl
c291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkKICAgICBBU1NFUlQo
ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVy
RGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSZXNv
dXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIHNldExvYWRpbmcoZmFsc2UpOwog
ICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwpAQCAtOTI3LDggKzkyNyw3IEBAIHZvaWQgQ2FjaGVk
UmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikK
ICAgICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
ZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEtPmFwcGVuZChuZXdCdWZmZXIpOworICAgIG1fZGF0
YSA9IFJlZiB7IG5ld0J1ZmZlciB9OwogICAgIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50
cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
CmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3OGNhMjUxODEzZTZjMDM1YmMyNzguLmM5ODJkZDY5
MzdhMGJjMmJmMzhjNDI2MTI2ZmZlNmU3OGM3OTY0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIENvb2tp
ZUphcjsKIGNsYXNzIE1lbW9yeUNhY2hlOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xh
c3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBUZXh0UmVzb3Vy
Y2VEZWNvZGVyOwogCkBAIC0xMTIsOSArMTEyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNv
ZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBUZXh0
UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVs
bHB0cjsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
TG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMp
OwogCiAgICAgdm9pZCBzZXRSZXNvdXJjZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KSB7IG1fZXJyb3IgPSBlcnJvcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZh
MGIxYjMzMWYyYzgzOS4uZGI0MzE2MDdhZTU2MzgzMDM4MDBkZDI1OWMxMDM0Y2QwOTBmY2ZlMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
Y3BwCkBAIC01MiwxMiArNTIsMTIgQEAgU3RyaW5nIENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGlu
ZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAK
LXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNWR0RvY3Vt
ZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAg
ICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBmcmFtZSBiZWNhdXNlIHRoZSBu
ZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0aGUgcGFyZW50IFVzZUVsZW1lbnQuCiAgICAgICAgIG1f
ZG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1fc2V0dGluZ3MsIHJlc3Bv
bnNlKCkudXJsKCkpOwotICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKKyAgICAgICAgbV9k
b2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CiAgICAgfQogICAgIENhY2hlZFJl
c291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAppbmRleCBlOGMxNWYzNjBmYzkx
YWM4YjM0ZDM5NjI5NWM1M2QzYzdmMTQ3ZWFhLi40NDVlNGY5ZjQyYzNjMjc0MDc5NzZhNjRlOTE1
NDA3ZjhiNTM0ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5j
b2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNl
RGVjb2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAg
IHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAg
UmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VE
ZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRm9udC5jcHAKaW5kZXggYThlZjU3NmJiNjkzOTMzYTIyMzQ2OTU1NTc1NmIzNjY3ZTQ4NjMy
ZS4uZDJjMWRlNDdlZmI3ODEzOThmNDQzOGI3Y2E0ZWEyNjBlMjIxOTc2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAtODAsNyArODAsNyBA
QCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIHJlbW90ZVVSSSkKIAogICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNh
YmxlQXNzZXJ0aW9uc0luU2NvcGUgZGlzYWJsZWRTY29wZTsKIAotICAgICAgICAgICAgbV9leHRl
cm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0
YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0Rv
Y3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwogICAgICAgICAgICAgc2F3RXJy
b3IgPSBkZWNvZGVyLT5zYXdFcnJvcigpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggNDdhOWY1NzYwN2I5ODI4NGU4Zjc5
ZTJjZGVjZTliZTQxOGYxN2I2NS4uYjY3Mzk4YjBlNGY1NmZlN2FiY2IyNzRkMGUzNjg0MzAzNjM1
MDg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAK
QEAgLTk2LDEwICs5NiwxNSBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQog
ICAgIHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQordm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewot
ICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUo
KSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250
aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUo
MCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJp
Y3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKaW5k
ZXggOTI0Yjg0Y2EyZDg3MTZlMzQ2MDc3ZWVlYjVjYzM0YmNlZGU3ZTIzZC4uODY1MWU2MzlhZDkw
NjE3Mjg1NjFjMzI0YmZhN2FmNGNmOTdmNmQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkg
Y29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNl
RGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZv
aWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgdm9pZCBkZXN0
cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBm
MzIwODZiNWRlYjYxLi4wYzg0MjhiYjk5ZGI2ZGZiMTZhMzQ4MTM0YzM4MjY4MzZjY2U1NDA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApA
QCAtNDAsMTAgKzQwLDEwIEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hl
ZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQg
Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lk
IENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9IGRhdGE7CisgICAgbV9k
YXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8U2hhcmVkQnVmZmVy
PigpOwogICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAg
IENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIo
bV9jbGllbnRzKTsKQEAgLTUxLDEzICs1MSwxMyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9V
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0
ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRU
cmFjazo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRy
YWNrOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1
ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lk
IENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9V
cGRhdGVCdWZmZXIoZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0
YSwgbWV0cmljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRy
YWNrLmgKaW5kZXggODVlMzk2MjA2NTEzMTYwNzAzNjUzZWIyMmM3NzEzOGI5MTUwN2FkZC4uMDli
NDMzOWEzN2I2NzNiMmFjNGZkYWUxNDZiMjliOTY0Nzc3ZmNlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaApAQCAtMzUsMTAgKzM1LDEwIEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJl
ZEJ1ZmZlciopOworICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IGUzZTJm
NWU5NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3ODI2MTVkMzQwMGMuLmQyZWZmMmQyZDQwYzkyNzczODc1
NmM0YThmMGNiYjkzNDNiZTEwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYxLDEyICs2MSwxNiBAQCBTdHJpbmcg
Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29k
ZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCit2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/
IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3NoZWV0ID0gbV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAg
IGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fc2hlZXQgPSBt
X2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNv
ZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3Rp
ZnkobWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFhTTFN0eWxlU2hlZXQuaAppbmRleCA2ODQyYjY0NGY2MWNmOTBmN2Y2MWIyZjdlYzVlMDA2NTRj
ZDEwY2NjLi5iZDIzMTIxNGYyZDIwYmEzOTY0NDYwMzY2ZTA0MWI5NDEzNWFjNGNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAg
LTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0
IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5p
c2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3NoZWV0OwogICAgIFJlZlB0cjxUZXh0
UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
b3MvTGVnYWN5UHJldmlld0xvYWRlci5oCmluZGV4IDU1MjU2MWQ2YzgxNmQzZDIwYmNmY2NiMmU2
NTgzYjdkZTk0Yjk0YTIuLjY2YjkzNThlYzUzMTExNDg0ODIyYTdjYzI0ZTdmM2E5OTE3MDY1YTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTM3LDcgKzM4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGVn
YWN5UHJldmlld0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBjbGFzcyBMZWdhY3lQcmV2
aWV3TG9hZGVyIGZpbmFsIDogcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyQ2xpZW50LCBwcml2YXRl
IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CkBAIC00OCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBib29sIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgYm9vbCBkaWRSZWNlaXZlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIGJvb2wgZGlkUmVjZWl2ZUJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgYm9vbCBkaWRGaW5pc2hMb2FkaW5nKCk7
CiAgICAgdm9pZCBkaWRGYWlsKCk7CiAKQEAgLTYwLDE3ICs2MiwxNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZpbmlzaFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXIm
KSBmaW5hbCB7IH07CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbFVwZGF0aW5nKFBy
ZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKICAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRTdGFy
dENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOwotICAgIHZvaWQgcHJldmlld0Nv
bnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBTaGFyZWRCdWZm
ZXImKSBmaW5hbDsKKyAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2
aWV3Q29udmVydGVyJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAg
IHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRl
ciYpIGZpbmFsOwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxDb252ZXJ0aW5nKFBy
ZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKIAogICAgIC8vIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRl
cgotICAgIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmll
d0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+
JiYpIGZpbmFsOworICAgIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0
ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciopPiYmKSBmaW5hbDsKICAgICB2b2lkIHByb3ZpZGVQYXNzd29yZEZv
clByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgU3RyaW5nJik+JiYpIGZpbmFsOwogCiAgICAgUmVmUHRyPFByZXZpZXdDb252ZXJ0
ZXI+IG1fY29udmVydGVyOwogICAgIFJlZjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBtX2Ns
aWVudDsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX29yaWdpbmFsRGF0YTsKKyAgICBVbmlxdWVS
ZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9vcmlnaW5hbERhdGE7CiAgICAgV2Vha1B0cjxSZXNv
dXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxvYWRlcjsKICAgICBib29sIG1fZmluaXNoZWRMb2FkaW5n
RGF0YUludG9Db252ZXJ0ZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNQcm9jZXNzZWRSZXNw
b25zZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXIubW0KaW5kZXggZDE4YjI1MmU5NzU2YzhjZTBjOTViNjNlNzhkZDAwOTdlZjJh
NTczNC4uNzQ4ZmVkYjhlYTQ4ZmFiYzgyNWZiNWI2NzcxNzQxNTIwNWIzMWIxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtNjMs
NyArNjMsNyBAQCBzdGF0aWMgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1ha2VDbGll
bnQoY29uc3QgUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgYwogICAgIHJldHVybiBlbXB0eUNsaWVu
dCgpOwogfQogCi1ib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IGlmIChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2
aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBt
X29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsKKyAgICBtX29yaWdpbmFsRGF0YS0+cmVzZXQoKTsKICAg
ICByZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UHJldmlld0NvbnZlcnRlcihX
VEZNb3ZlKG1fY29udmVydGVyKSk7CiAgICAgYXV0byByZXNwb25zZSB7IGNvbnZlcnRlci5wcmV2
aWV3UmVzcG9uc2UoKSB9OwogCkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3
TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0
ZXImIGMKICAgICB9KTsKIH0KIAotdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29u
dmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFJl
Y2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhKQogewogICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBtX3Jlc291cmNlTG9hZGVyLmdl
dCgpOwogICAgIGlmICghcmVzb3VyY2VMb2FkZXIpCkBAIC0yMjQsMTAgKzIyNCwxMCBAQCB2b2lk
IExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIo
UHJldmlld0NvbnZlcnRlciYgYwogICAgIG1fY2xpZW50LT5kaWRSZXF1ZXN0UGFzc3dvcmQoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6
OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXIm
IGNvbnZlcnRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1h
aW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnZlcnRlciwgJmNv
bnZlcnRlciA9PSBtX2NvbnZlcnRlcik7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5h
bERhdGEucHRyKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLT5nZXQo
KS5nZXQoKSk7CiB9CiAKIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVy
KCkgPSBkZWZhdWx0OwpAQCAtMjM1LDcgKzIzNSw3IEBAIExlZ2FjeVByZXZpZXdMb2FkZXI6On5M
ZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwogTGVnYWN5UHJldmlld0xvYWRlcjo6TGVn
YWN5UHJldmlld0xvYWRlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKICAgICA6IG1fY29udmVydGVyIHsgUHJldmlld0NvbnZlcnRlcjo6
Y3JlYXRlKHJlc3BvbnNlLCAqdGhpcykgfQogICAgICwgbV9jbGllbnQgeyBtYWtlQ2xpZW50KGxv
YWRlciwgbV9jb252ZXJ0ZXItPnByZXZpZXdGaWxlTmFtZSgpLCBtX2NvbnZlcnRlci0+cHJldmll
d1VUSSgpKSB9Ci0gICAgLCBtX29yaWdpbmFsRGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkg
fQorICAgICwgbV9vcmlnaW5hbERhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI+KCkgfQogICAgICwgbV9yZXNvdXJjZUxvYWRlciB7IGxvYWRlciB9CiAgICAgLCBtX3Nob3Vs
ZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmcgeyBsb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5z
aG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29rUHJldmlldygpIH0KIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDgyMzc0ZTcyNjJjNzBlYTlkZmU0ZDY0ZjI1
YWIxMzVhYTYwMzMzY2YuLmVhNjE1ZGZmNGRkMGVkNTE0YmZmNjQ0MjY0N2VjNDYyMGY2MzIyYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMzgsMTIgKzM4LDEzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWlu
dDhfdDsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNs
YXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBO
b2RlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFN0eWxlUHJvcGVydGllczsKIGNsYXNzIFRleHRDaGVja2VyQ2xpZW50OwogY2xhc3Mg
VmlzaWJsZVNlbGVjdGlvbjsKQEAgLTc4LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0
IFNpbXBsZVJhbmdlJikgPSAwOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0
IFN0cmluZyYgLyogcHJlZmVycmVkRmlsZU5hbWUgKi8sIFJlZjxTaGFyZWRCdWZmZXI+JiYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0
cmluZyYgLyogaWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywg
Y29uc3QgU3RyaW5nJiAvKiBwcmVmZXJyZWRGaWxlTmFtZSAqLywgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBj
b250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBmaWxlUGF0aCAqLykgeyB9CiAgICAgdmly
dHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YT4mJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHAKaW5kZXggMWExMjEwZmE4MzM3Y2Q5NTIwZjRlMDExYTkwNzM2NzU0
ZGU1MThmMS4uYWM1M2NiMTRiZjAwZTUxNjQ3YzllYzkxMTA5OGJlYTAzNjE1MTEyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lk
IFBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwg
UmVuZGVyRWxlbWVudCogaW1hZwogICAgIGlmICghaW1hZ2UgfHwgaW1hZ2UtPmltYWdlKCkgPT0g
JkltYWdlOjpudWxsSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihp
bWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFn
ZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIGRhdGEgPSBp
bWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogCkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBQYWdlU2Vy
aWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVs
ZW1lbnQqIGltYWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcmVzb3VyY2VzLmFw
cGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgV1RGTW92ZShkYXRhKSB9
KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVU
eXBlKCksIGRhdGEtPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRk
KHVybCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVh
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAppbmRleCA5
NmFkMDgyNTQzZGQ1M2E4NzliZTUxYzZkOTIxZDdhZmZmNDJlOGUwLi43NTgzNmI4NzkxNDNiNjBh
N2YzNTE5NzAzMjA3YjZhZDNkOGQ0Zjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NoYXJlRGF0YVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFS
ZWFkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNoYXJlRGF0
YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9u
T3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICA6
IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiB7Ci0gICAg
CisKIH0KIAogU2hhcmVEYXRhUmVhZGVyOjp+U2hhcmVEYXRhUmVhZGVyKCkKQEAgLTcxLDE1ICs3
MSwxNSBAQCB2b2lkIFNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhpbnQgbG9hZElu
ZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogICAgICAgICBjYW5jZWwoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX3BlbmRpbmdG
aWxlTG9hZHNbbG9hZEluZGV4XS0+YXJyYXlCdWZmZXJSZXN1bHQoKTsKLSAgICAKKwogICAgIFJh
d0ZpbGUgZmlsZTsKICAgICBmaWxlLmZpbGVOYW1lID0gZmlsZU5hbWU7CiAgICAgZmlsZS5maWxl
RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNo
YXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAg
ICAgbV9zaGFyZURhdGEuZmlsZXMuYXBwZW5kKFdURk1vdmUoZmlsZSkpOwogICAgIG1fZmlsZXNS
ZWFkU29GYXIrKzsKLSAgICAKKwogICAgIGlmIChtX2ZpbGVzUmVhZFNvRmFyID09IHN0YXRpY19j
YXN0PGludD4obV9wZW5kaW5nRmlsZUxvYWRzLnNpemUoKSkpIHsKICAgICAgICAgbV9wZW5kaW5n
RmlsZUxvYWRzLmNsZWFyKCk7CiAgICAgICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0g
c3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0pKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmgKaW5kZXggZTM4MDZlODdkZjc5YTNkOWI1Y2Fl
MTIxNGRlNjZhYTJhNjU4NDdkYi4uZmM2NmMzNjVhMmYyOWE0Yzc4ZTYwNjE5ZTQ3YTcxYzcyNThk
OGZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCkBA
IC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5m
bz4gbV9ub3dQbGF5aW5nSW5mbzsKICAgICBzdHJ1Y3QgQXJ0d29ya0NhY2hlIHsKICAgICAgICAg
U3RyaW5nIHNyYzsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAg
ICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogICAgIH07CiAg
ICAgc3RkOjpvcHRpb25hbDxBcnR3b3JrQ2FjaGU+IG1fbm93UGxheWluZ0luZm9BcnR3b3JrOwog
ICAgIGJvb2wgbV9zZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiB7IGZhbHNlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCmluZGV4IDE1NzMxZWIyM2ZhNzY5NDk2MGRkODA0
OTZmYThmMmY5ZThjNzc4MGYuLjA3ZWQ0OGU1ODg0ZWNlZWRjNjFmZDkzZTZiMjIxNzFiZTg4NTg5
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC04OSw3ICs4OSw3
IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiB0eXBlKQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHR5cGUpCitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2Fy
ZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBp
ZiAoYXV0byogc3RyYXRlZ3kgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCkpCiAgICAgICAgIHJldHVybiBzdHJhdGVneS0+cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
KGluZGV4LCB0eXBlLCBuYW1lKCksIGNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkLmgKaW5kZXggN2QyNDdkY2QxYTE2ZjM0MmMxNzU0YzQ1YzRhNzM1MjliZjhmNzFiMi4u
MzU3NjNlZTEyYTM5MGVmYzg0NTJjMzU4MDZiNTEyYmU0MjlhZDk3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtNjEsMTIgKzYxLDEzIEBAIHR5cGVkZWYgc3RydWN0IEhX
TkRfXyogSFdORDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7
CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBFbGVtZW50
OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBQYXN0ZWJvYXJkU3RyYXRlZ3k7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgU2ltcGxlUmFu
Z2U7CiAKQEAgLTE0NywxNiArMTQ4LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcmVh
ZEZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2Vu
dGF0aW9uU2l6ZSA9IHsgfSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSA9IHsgfSkgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCByZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmly
dHVhbCBib29sIHJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5
cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCByZWFkSW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50
YXRpb25TaXplID0geyB9KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRVUkwoY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkUGxhaW5U
ZXh0KGNvbnN0IFN0cmluZyYpID0gMDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgdmlydHVhbCBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2
aXJ0dWFsIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9v
bCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZERhdGFC
dWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5h
bWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWREYXRhQnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0
aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CiAjZW5kaWYKIH07
CiAKQEAgLTE3MSw3ICsxNzIsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAg
IHZpcnR1YWwgflBhc3RlYm9hcmRGaWxlUmVhZGVyKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwg
dm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRSZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgLyogdHlwZSAqLykgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIGNsYXNz
IFBhc3RlYm9hcmQgewpAQCAtMjk2LDcgKzI5Nyw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlv
bmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gcGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkg
Y29uc3Q7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHR5cGUpOwogICAgIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSk7
CiAKICAgICBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGV4dC5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5NTJj
Y2Y2N2FlNzAuLjdiNGIzZDM2YWE2ODAzNjExODc5MTMxYjVhMWIyMjZiNTg4ZDM2MmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAg
LTMzLDEzICszMywxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBzdGQ6OnZh
cmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBz
dGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4mIG90aGVyKQorc3RhdGljIHN0
ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gY29weVBsYXRm
b3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+JiBvdGhlcikKIHsKICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+
KG90aGVyKSkKICAgICAgICAgcmV0dXJuIHsgc3RkOjpnZXQ8U3RyaW5nPihvdGhlcikgfTsKIAot
ICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikp
Ci0gICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikuY29w
eVJlZigpIH07CisgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PihvdGhlcikpCisgICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4ob3RoZXIpLmNvcHlSZWYoKSB9OwogCiAgICAgcmV0dXJuIHsg
fTsKIH0KQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0
ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgYWRk
T3JNb3ZlRW50cnlUb0VuZCh0eXBlKS5wbGF0Zm9ybURhdGEgPSB7IHZhbHVlIH07CiB9CiAKLXZv
aWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OndyaXRl
RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRh
dGEpCiB7CiAgICAgYWRkT3JNb3ZlRW50cnlUb0VuZCh0eXBlKS5wbGF0Zm9ybURhdGEgPSB7IFdU
Rk1vdmUoZGF0YSkgfTsKIH0KQEAgLTIwMiwxNCArMjAyLDE0IEBAIEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgp
IGNvbnN0CiAgICAgcmV0dXJuIGN1c3RvbURhdGE7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBl
bnRyeSA6IG1fZGF0YSkgewogICAgICAgICBpZiAoZW50cnkudHlwZSAhPSB0eXBlKQogICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
PFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCi0gICAgICAgICAgICByZXR1cm4g
c3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkuY29weVJlZigp
OworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpn
ZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpLmNvcHlS
ZWYoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0yNjUsMTEgKzI2NSwx
MSBAQCB2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmb3JFYWNoQ3VzdG9tU3RyaW5nKEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLAogICAgIH0KIH0KIAotdm9pZCBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRC
dWZmZXI+PiYgZGF0YSk+JiYgZnVuY3Rpb24pIGNvbnN0Cit2b2lkIFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpmb3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiYgZGF0YSk+JiYgZnVuY3Rpb24pIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBl
bnRyeSA6IG1fZGF0YSkgewogICAgICAgICBhdXRvJiBkYXRhID0gZW50cnkucGxhdGZvcm1EYXRh
OwotICAgICAgICBpZiAoKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAh
c3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5pc051bGwoKSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkpCisgICAgICAgIGlmICgoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxTdHJpbmc+KGRhdGEpICYmICFzdGQ6OmdldDxTdHJpbmc+KGRhdGEpLmlzTnVsbCgp
KSB8fCBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4o
ZGF0YSkpCiAgICAgICAgICAgICBmdW5jdGlvbihlbnRyeS50eXBlLCBkYXRhKTsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRl
eCAyYmU4MWQyOTM4YTNkYmQwOTAyNmNhNmVjNjRhYzMyODdlNmFiYzAzLi45N2ZmOTg1ZTI0ZTEx
YjRjN2JiNDE0MzczN2YwMjg0MGMzNWZmY2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGEgewogcHVibGljOgpAQCAtNDgsNyAr
NDksNyBAQCBwdWJsaWM6CiAKICAgICAgICAgU3RyaW5nIHR5cGU7CiAgICAgICAgIFN0cmluZyBj
dXN0b21EYXRhOwotICAgICAgICBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVy
Pj4gcGxhdGZvcm1EYXRhOworICAgICAgICBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+IHBsYXRmb3JtRGF0YTsKICAgICB9OwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgUGFzdGVib2FyZEN1c3RvbURhdGEoKTsKQEAgLTY1LDExICs2NiwxMSBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21QZXJz
aXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmKTsKIAogICAgIFN0cmlu
ZyByZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OworICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkg
Y29uc3Q7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0
eXBlKSBjb25zdDsKIAogICAgIHZvaWQgd3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CisgICAgdm9pZCB3cml0ZURhdGEoY29uc3Qg
U3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICB2
b2lkIHdyaXRlU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSk7CiAKICAgICB2b2lkIGNsZWFyKCk7CkBAIC04Myw3ICs4NCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgZm9yRWFjaFR5cGUoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4m
JikgY29uc3Q7CiAgICAgdm9pZCBmb3JFYWNoUGxhdGZvcm1TdHJpbmcoRnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk+JiYpIGNvbnN0OwotICAgIHZv
aWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiYg
ZGF0YSk+JiYpIGNvbnN0OworICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIo
RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJp
bmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmKSBjb25zdDsKICAgICB2
b2lkIGZvckVhY2hDdXN0b21TdHJpbmcoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgZGF0YSk+JiYpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRl
Z3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4
IDFjMDcyNmZlYjNlMDJhZWQzMmI0NmYyNjJiY2RhMTY5ZDY3MmViMmMuLmM0MWUwODUyNDQ5NmM2
N2YxZjE1MDM4ZmJiMjZlOWMyOWRhNjk4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0zMSwxMCArMzEsMTEgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJv
YXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9u
RGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0
cnVjdCBQYXN0ZWJvYXJkVVJMOwpAQCAtNjIsNyArNjMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgaW50NjRfdCBzZXRCdWZmZXJGb3JU
eXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAg
IHZpcnR1YWwgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qg
c2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0
Q29sb3IoY29uc3QgQ29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0U3RyaW5nRm9y
VHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKaW5kZXgg
M2Y0ODMyYTVhNjU4YzFjYzdjMGFhMTNiMjZlMGVhNDczM2U5ZDNiNy4uOWU3MmU0NGEyZWFjNGQ4
ZWY3MzBiOTg3MWQwZWM1MDhlZDlmYWM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtQ29udGVudEZp
bHRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Niw3ICs1Niw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRh
KCkgPSAwOwotICAgIHZpcnR1YWwgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxh
Y2VtZW50RGF0YSgpIGNvbnN0ID0gMDsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAg
ICAgdmlydHVhbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBj
b25zdCA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0
ZWJvYXJkLmgKaW5kZXggN2EyYTMxMDA3NDI1MDAyNDNiYjQ2ZmY1OTg2ODYxZTg0YTJmZDk2ZS4u
NzFkZmI5M2U1NzU2MGUzM2E3ZjZjODBjMjBmOTJkNWIyY2FlYzEzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTQ3LDEzICs0NywxNCBAQCBz
dHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9y
OworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFz
cyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJ
bWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsK
IHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC04NSw3ICs4Niw3
IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgd2lsbCByZXR1cm4gMCBpZiBwYXN0
ZWJvYXJkIG93bmVyc2hpcCBoYXMgYmVlbiB0YWtlbiBmcm9tIHVzLgogICAgIFdFQkNPUkVfRVhQ
T1JUIGludDY0X3QgY29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRC
dWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0
ZWJvYXJkVVJMJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRDb2xvcihjb25zdCBD
b2xvciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKaW5kZXggNGNiMzMwMWU3ZGY3MDcxYzVk
ZDlmYzU5YmM1NzE4NWM0ZTkxNDc2OC4uNjMxYWRlN2NjZjdhZDI5NjkzYTJlNzY1MWZlNmE5Y2Rl
YmQzNzczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZl
cnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5j
cHAKQEAgLTYzLDkgKzYzLDkgQEAgY29uc3QgUmVzb3VyY2VFcnJvciYgUHJldmlld0NvbnZlcnRl
cjo6cHJldmlld0Vycm9yKCkgY29uc3QKICAgICByZXR1cm4gbV9wcmV2aWV3RXJyb3I7CiB9CiAK
LWNvbnN0IFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25z
dAorY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmll
d0RhdGEoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByZXZpZXdEYXRhLmdldCgpOworICAgIHJl
dHVybiAqbV9wcmV2aWV3RGF0YS0+Z2V0KCk7CiB9CiAKIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6
dXBkYXRlTWFpblJlc291cmNlKCkKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVy
dGVyOjp1cGRhdGVNYWluUmVzb3VyY2UoKQogICAgIH0pOwogfQogCi12b2lkIFByZXZpZXdDb252
ZXJ0ZXI6OmFwcGVuZEZyb21CdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lk
IFByZXZpZXdDb252ZXJ0ZXI6OmFwcGVuZEZyb21CdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHdoaWxlIChidWZmZXIuc2l6ZSgpID4gbV9sZW5ndGhB
cHBlbmRlZCkgewogICAgICAgICBhdXRvIG5ld0RhdGEgPSBidWZmZXIuZ2V0U29tZURhdGEobV9s
ZW5ndGhBcHBlbmRlZCk7CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVy
OjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xp
ZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoKnRoaXMpOwogCiAgICAgaWYg
KCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50KGNsaWVudCkpCi0gICAgICAg
IGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoKnRoaXMsIG1fcHJldmlld0Rh
dGEuZ2V0KCkpOworICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRh
KCp0aGlzLCAqbV9wcmV2aWV3RGF0YS0+Z2V0KCkpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3Rh
dGU6OkNvbnZlcnRpbmcgfHwgIWhhc0NsaWVudChjbGllbnQpKQogICAgICAgICByZXR1cm47CkBA
IC0yMzksNyArMjM5LDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQ
cmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0
ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKCp0aGlzKTsKIH0KIAotdm9pZCBQcmV2aWV3Q29udmVydGVy
OjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQg
UHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyB7IFJlZiB7ICp0
aGlzIH0gfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0Nv
bnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCmlu
ZGV4IDJhMzcyOTIyNzk5Y2U2YWZmYWFiM2UxNDBkMTkwYmE2NGNmOGNlMmIuLjkyMDJlZGRkOWUx
MDViMjczNWVkYzE0NmYyNjY0YzEzY2I5YzM0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZXNvdXJj
ZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQxLDE1ICs0
MiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CitjbGFzcyBTaGFyZWRC
dWZmZXJCdWlsZGVyOwogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ7CiBzdHJ1Y3QgUHJl
dmlld0NvbnZlcnRlclByb3ZpZGVyOwogCiBzdHJ1Y3QgUHJldmlld1BsYXRmb3JtRGVsZWdhdGUg
OiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3UGxhdGZvcm1EZWxlZ2F0ZT4gewogICAgIHZpcnR1YWwg
flByZXZpZXdQbGF0Zm9ybURlbGVnYXRlKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lk
IGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkRmluaXNoTG9hZGluZygp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRGYWlsV2l0aEVycm9yKGNvbnN0IFJl
c291cmNlRXJyb3ImKSA9IDA7CiB9OwpAQCAtNzIsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIHByZXZpZXdGaWxlTmFtZSgpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyBwcmV2aWV3VVRJKCkgY29uc3Q7CiAgICAgY29uc3QgUmVzb3VyY2VFcnJv
ciYgcHJldmlld0Vycm9yKCkgY29uc3Q7Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyJiBwcmV2aWV3
RGF0YSgpIGNvbnN0OworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHByZXZpZXdE
YXRhKCkgY29uc3Q7CiAKICAgICB2b2lkIGZhaWxlZFVwZGF0aW5nKCk7CiAgICAgdm9pZCBmaW5p
c2hVcGRhdGluZygpOwpAQCAtOTQsNyArOTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNQbGF0
Zm9ybVBhc3N3b3JkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpIGNvbnN0OwogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBpdGVyYXRlQ2xpZW50cyhUJiYgY2FsbGJhY2spOwotICAg
IHZvaWQgYXBwZW5kRnJvbUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGFw
cGVuZEZyb21CdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQg
ZGlkQWRkQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmKTsKICAgICB2b2lkIGRpZEZhaWxD
b252ZXJ0aW5nV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZEZh
aWxVcGRhdGluZygpOwpAQCAtMTA2LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0
Zm9ybVVubG9ja1dpdGhQYXNzd29yZChjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFByZXZpZXdQ
bGF0Zm9ybURlbGVnYXRlCi0gICAgdm9pZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkZWxlZ2F0ZURpZEZp
bmlzaExvYWRpbmcoKSBmaW5hbDsKICAgICB2b2lkIGRlbGVnYXRlRGlkRmFpbFdpdGhFcnJvcihj
b25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKQEAgLTExOCw3ICsxMjAsNyBAQCBwcml2YXRl
OgogICAgICAgICBGaW5pc2hlZENvbnZlcnRpbmcsCiAgICAgfTsKIAotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IG1fcHJldmlld0RhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+
IG1fcHJldmlld0RhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBtX3ByZXZpZXdFcnJvcjsKICAgICBS
ZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKICAgICBTdGF0ZSBtX3N0YXRlIHsg
U3RhdGU6OlVwZGF0aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmV2aWV3Q29udmVydGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyQ2xpZW50LmgKaW5kZXggMDRlYTM2ODA2OTJiMjUyYTE5ODljMjZjYTIwNDIxMjc3
N2FhM2I3Yi4uOWNlZTkzMzIwYjIzOGI0Y2Q3M2NkZDJlMDMwMmMzYmY0ZGFkNjhiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaApAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFByZXZpZXdDb252ZXJ0
ZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQgOiBD
YW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVyQ2xpZW50PiB7CiAgICAgdmlydHVhbCB+UHJl
dmlld0NvbnZlcnRlckNsaWVudCgpID0gZGVmYXVsdDsKQEAgLTQyLDcgKzQyLDcgQEAgc3RydWN0
IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVy
Q2xpZW50PiB7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hVcGRh
dGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29u
dmVydGVyRGlkRmFpbFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRl
ciYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRh
KFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBTaGFyZWRCdWZmZXImIG5ld0RhdGEpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252
ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBuZXdEYXRhKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKFByZXZpZXdD
b252ZXJ0ZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWls
Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgKaW5kZXggODI3ODYzOTNm
Y2VkNzU0Yzg1ZjdiMjg5MTI1MmY1MTZiZWQwZDU0OS4uYjk4NmVlNDBkMTk3NTE3NGY1NGFkMjlh
MTY4Y2FkZjE4OTQ1NmMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlclByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlclByb3ZpZGVyLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciA6IENhbk1ha2VXZWFrUHRyPFBy
ZXZpZXdDb252ZXJ0ZXJQcm92aWRlcj4gewogICAgIHZpcnR1YWwgflByZXZpZXdDb252ZXJ0ZXJQ
cm92aWRlcigpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCBwcm92aWRlTWFpblJlc291
cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBw
cm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRl
cihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcm
KT4mJikgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAK
aW5kZXggZDhlNjhlMzM3NzgxZmIyOWFkMzljNTViOWFmZDM5MDAzNTM1Mzg1ZC4uOTdlZjZiZTRm
ODFmMWM0NTkyYzM1MjEwZDk3ZDlhNmMyODg1NTUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zNyw2MyArMzcsNTIgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3Qgc2l6ZSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgYXBwZW5kKGRhdGEs
IHNpemUpOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3Qgc2l6ZSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgYXBwZW5kKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsKIH0KIAotU2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkK
K0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKICAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXpl
KCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RG
TW92ZShmaWxlRGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVu
dDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKSB9KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFy
ZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCitGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYm
IHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUoKSkKIHsKLSAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSl9KTsK
KyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShw
cm92aWRlcikpIH0pOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewogICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEp
KTsKIH0KIAotI2lmIFVTRShHU1RSRUFNRVIpCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQorRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIobWFwcGVk
QnVmZmVyKSk7CisgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKLVNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCi0gICAg
OiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkKKyNpZiBVU0UoR1NUUkVBTUVSKQorUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RN
YXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5k
KHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpfSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihtYXBwZWRCdWZmZXIpKTsKIH0KLSNl
bmRpZgogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
TW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcp
Ci17Ci0gICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMp
IHsKLSAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKLSAgICAgICAgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBw
aW5nU3VjY2Vzcyk7Ci0gICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKLSAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7
Ci0gICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShm
aWxlUGF0aCk7Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZl
Y3Rvcjx1aW50OF90PiYmIHZlY3RvcikKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKKyAgICA6
IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7
IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikgfSk7CiB9CisjZW5kaWYKIAot
c3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKK3N0YXRpYyBW
ZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAg
IFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7CiAgICAgY29tYmluZWREYXRhLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoc2l6ZSk7CkBAIC0xMDMsMzMgKzkyLDE5IEBAIHN0YXRpYyBWZWN0b3I8
dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZm
ZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8U2hhcmVkQnVmZmVyPiBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7Ci0jaWYgQVNTRVJU
X0VOQUJMRUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0
byB0cnVlIGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAgICAvLyBSZW1vdmUgYWxsIGlu
c3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJl
IGFsbCBPKG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2LgotICAgIC8vIG1faGFzQmVlbkNv
bWJpbmVkSW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKG1fc2VnbWVudHMu
c2l6ZSgpIDw9IDEpCi0gICAgICAgIHJldHVybjsKLQorICAgIGlmIChtX2NvbnRpZ3VvdXMpCisg
ICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2Fz
dDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4odGhpcykpIH07CisgICAgaWYgKCFtX3NlZ21lbnRz
LnNpemUoKSkKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgaWYg
KG1fc2VnbWVudHMuc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsKICAgICBhdXRvIGNvbWJpbmVk
RGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9zaXplKTsKLSAgICBtX3Nl
Z21lbnRzLmNsZWFyKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50Ojpj
cmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKX0pOwotICAgIEFTU0VSVChtX3NlZ21lbnRzLnNp
emUoKSA9PSAxKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci19Ci0KLWNv
bnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc2Vn
bWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBjb21iaW5lSW50
b09uZVNlZ21lbnQoKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7Ci0gICAg
cmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwogfQogCi1WZWN0b3I8dWludDhf
dD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CitWZWN0b3I8dWludDhfdD4gRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdAogewogICAgIFZlY3Rvcjx1aW50OF90
PiBkYXRhOwogICAgIGRhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKCkpOwpAQCAtMTM5
LDcgKzExNCw3IEBAIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29u
c3QKICAgICByZXR1cm4gZGF0YTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6
dGFrZURhdGEoKQorVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRha2VE
YXRhKCkKIHsKICAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7
IH07CkBAIC0xNTQsMTMgKzEyOSwxMyBAQCBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjp0
YWtlRGF0YSgpCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0
YVZpZXcgU2hhcmVkQnVmZmVyOjpnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0CitT
aGFyZWRCdWZmZXJEYXRhVmlldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpnZXRTb21lRGF0YShz
aXplX3QgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRy
eSogZWxlbWVudCA9IGdldFNlZ21lbnRGb3JQb3NpdGlvbihwb3NpdGlvbik7CiAgICAgcmV0dXJu
IHsgZWxlbWVudC0+c2VnbWVudC5jb3B5UmVmKCksIHBvc2l0aW9uIC0gZWxlbWVudC0+YmVnaW5Q
b3NpdGlvbiB9OwogfQogCi1jb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yRW50
cnkqIFNoYXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGlvbikg
Y29uc3QKK2NvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yRW50
cnkqIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3Qg
cG9zaXRpb24pIGNvbnN0CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQocG9zaXRpb24gPCBtX3NpemUp
OwogICAgIGF1dG8gY29tcGFyYXRvciA9IFtdKGNvbnN0IHNpemVfdCYgcG9zaXRpb24sIGNvbnN0
IERhdGFTZWdtZW50VmVjdG9yRW50cnkmIGVudHJ5KSB7CkBAIC0xNzEsNyArMTQ2LDcgQEAgY29u
c3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBTaGFyZWRCdWZmZXI6Omdl
dFNlZ21lbnRGb3JQb3NpdGlvbigKICAgICByZXR1cm4gZWxlbWVudDsKIH0KIAotU3RyaW5nIFNo
YXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAorU3RyaW5nIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1
aWxkZXI7CiAgICAgZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKQEAgLTE4MSw3
ICsxNTYsMjIgQEAgU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogICAg
IHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZl
cj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CitzaXplX3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6c2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2l6ZTsK
K30KKworYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppc0VtcHR5KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gIXNpemUoKTsKK30KKworYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppc0Nv
bnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRpZ3VvdXM7Cit9CisKK1JlZlB0
cjxBcnJheUJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKSBjb25zdAogewogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSgpKSwgMSk7CiAgICAg
aWYgKCFhcnJheUJ1ZmZlcikgewpAQCAtMjAwLDY4ICsxOTAsNjUgQEAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKICAgICByZXR1
cm4gYXJyYXlCdWZmZXI7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hh
cmVkQnVmZmVyJiBkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVl
bkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFjaXR5
KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5tX3NlZ21lbnRzKSB7Ci0gICAgICAgIG1fc2VnbWVu
dHMudW5jaGVja2VkQXBwZW5kKHttX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9KTsK
KyAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQuc2Vn
bWVudC5jb3B5UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6ZSArPSBlbGVtZW50LnNlZ21lbnQtPnNp
emUoKTsKICAgICB9CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12
b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5n
dGgpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRv
T25lU2VnbWVudCk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBw
ZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNl
Z21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQo
eyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBt
X3NpemUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0K
IAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQordm9p
ZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkK
IHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIGF1
dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXpl
LCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5h
cHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7CiAg
ICAgbV9zaXplICs9IGRhdGFTaXplOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgp
KTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyKCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAg
YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOwor
fQorCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNsZWFyKCkKIHsKICAgICBtX3NpemUg
PSAwOwogICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNv
bnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
Y29weSgpIGNvbnN0CiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcik7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNsb25l
ID0gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKTsKICAgICBjbG9uZS0+bV9z
aXplID0gbV9zaXplOwogICAgIGNsb25lLT5tX3NlZ21lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1f
c2VnbWVudHMpCi0gICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7ZWxl
bWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAg
IGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IGVsZW1lbnQuYmVnaW5Qb3NpdGlv
biwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICBBU1NFUlQoY2xvbmUtPmludGVy
bmFsbHlDb25zaXN0ZW50KCkpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsK
ICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQotewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOwotfQotCi12b2lk
IFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNv
bnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9z
ZWdtZW50czsKICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBzZWdtZW50cykKICAgICAgICAgYXBw
bHkoU3BhbiB7IHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUo
KSB9KTsKIH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25z
dCB1aW50OF90PiYgcHJlZml4KSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpz
dGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKIHsKICAg
ICBpZiAocHJlZml4LmVtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjgzLDcgKzI3
MCw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWlu
dDhfdD4mIHByZWZpeCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVZlY3Rvcjx1aW50
OF90PiBTaGFyZWRCdWZmZXI6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29u
c3QKK1ZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7
CiAgICAgaWYgKG9mZnNldCA+PSBzaXplKCkpCkBAIC0zMTAsMTIgKzI5NywxMiBAQCBWZWN0b3I8
dWludDhfdD4gU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29u
c3QKIHsKICAgICByZXR1cm4gY29weVRvKGRlc3RpbmF0aW9uLCAwLCBsZW5ndGgpOwogfQogCi12
b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0
LCBzaXplX3QgbGVuZ3RoKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5
VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGxlbmd0aCArIG9mZnNldCA8PSBzaXplKCkpOwogICAgIGlmIChvZmZz
ZXQgPj0gc2l6ZSgpKQpAQCAtMzUzLDE0ICszNDAsMTMgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNv
cHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29u
c3QKICAgICB9CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QK
K2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNvbnN0CiB7Ci0g
ICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0gICAgcmV0dXJuIGl0ICE9IGVuZCgpICYmICsraXQgPT0g
ZW5kKCk7CisgICAgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID09IDE7CiB9CiAKICNpZiBBU1NF
UlRfRU5BQkxFRAotYm9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29u
c3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBj
b25zdAogewogICAgIHNpemVfdCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBl
bGVtZW50IDogbV9zZWdtZW50cykgewpAQCAtMzcyLDcgKzM1OCw1NyBAQCBib29sIFNoYXJlZEJ1
ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFTU0VSVF9F
TkFCTEVECiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEo
KSBjb25zdAorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoKQoreworICAgIG1fY29udGlndW91
cyA9IHRydWU7Cit9CisKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVu
dD4mJiBzZWdtZW50KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3Nl
Z21lbnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3Vz
ID0gdHJ1ZTsKK30KKworU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikKK3sKKyAgICBBU1NFUlQoY29udGlndW91
c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpIHx8IGNvbnRpZ3VvdXNCdWZmZXItPmlzRW1wdHkoKSk7
CisgICAgbV9zaXplID0gY29udGlndW91c0J1ZmZlci0+c2l6ZSgpOworICAgIGlmIChjb250aWd1
b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkpCisgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHsg
MCwgY29udGlndW91c0J1ZmZlci0+bV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSB9KTsK
KyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZl
cihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgOiBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKFdURk1vdmUoZGF0YSkpCit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30K
KworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUg
bWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQorewor
ICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7Cisg
ICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1
Y2Nlc3MpOworICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOworICAg
IH0KKyAgICByZXR1cm4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKK30KKworY29u
c3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdt
ZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3Nl
Z21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKK30KKworY29uc3QgY2hhciogU2hhcmVkQnVmZmVy
OjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKworY29uc3QgdWludDhfdCogRGF0YVNlZ21lbnQ6OmRh
dGEoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAg
ICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyBy
ZXR1cm4gZGF0YS5kYXRhKCk7IH0sCkBAIC0zOTEsMTMgKzQyNywxMyBAQCBjb25zdCB1aW50OF90
KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gc3Rk
Ojp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1ib29sIFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAorYm9vbCBEYXRh
U2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRh
YmxlRGF0YSk7CiB9CiAKICNpZiAhVVNFKENGKQotdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1v
cnlOb3ROZWVkZWRTb29uKCkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGlu
dE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogewogfQogI2VuZGlmCkBAIC00MDcsNyArNDQz
LDcgQEAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBj
b25zdAogICAgIHJldHVybiB7eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRh
KCkpLCBzaXplKCkgfX07CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0Citib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
Om9wZXJhdG9yPT0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiB7
CiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ1Niw3
ICs0OTIsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZm
ZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUo
KSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAg
IFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEu
c2l6ZSgpOyB9LApAQCAtNDc1LDcgKzUxMSw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2lt
bXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0
YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBv
c2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRC
dWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNl
Z21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0
aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6
ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBA
IC00OTksMTIgKzUzNSwxNyBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6
ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldp
dGhpblNlZ21lbnQ7CiB9CiAKK2NvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRh
QXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZGF0YSgpKTsKK30KKwogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZp
ZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAg
ICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtz
ZWdtZW50LCBkYXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCi0gICAgICAgIFtzZWdt
ZW50LCBzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KKyAgICAgICAgW3NpemUgPSBz
aXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGYyM2Y1ZDY5YWQzMmVkNjQwYjk1NzdiMmU2YzQ1NDkx
ODM5MzY4YWQuLjliZjc5N2MxYzE2OTk1YzFlYTI2YzMwYTE1ZmEzMDVhMDExYTEzNTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEw
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNjIsMTQ2ICs2Miwx
MzMgQEAgY2xhc3MgRGVjb2RlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIAotY2xhc3MgV0VCQ09SRV9F
WFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1
ZmZlcj4geworLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0
YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCisvLyBU
byBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQu
CitjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2Vn
bWVudD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KLSAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXpl
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAg
ICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1
aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBj
b25zdDsKIAotICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFll
cyB9OwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUg
PSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9
IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOwotCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBkYXRhLnNocmlu
a1RvRml0KCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1v
dmUoZGF0YSkpKTsKKyAgICB9CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBSZXRhaW5QdHI8
TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gY3Jl
YXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFwcGVuZChOU0RhdGEgKik7Ci0jZW5kaWYKICNpZiBV
U0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7Ci0g
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwotICAgIHZvaWQg
YXBwZW5kKENGRGF0YVJlZik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJl
dGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2Vn
bWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNFKEdMSUIpCi0gICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKLSAgICBHUmVmUHRyPEdCeXRl
cz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3Jl
YXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNl
Z21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLQogI2lmIFVTRShHU1RSRUFNRVIpCi0g
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYp
OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3du
ZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZN
b3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotICAgIC8vIENhbGxpbmcgZGF0YSgpIGNhdXNlcyBhbGwg
dGhlIGRhdGEgc2VnbWVudHMgdG8gYmUgY29waWVkIGludG8gb25lIHNlZ21lbnQgaWYgdGhleSBh
cmUgbm90IGFscmVhZHkuCi0gICAgLy8gSXRlcmF0ZSB0aGUgc2VnbWVudHMgdXNpbmcgYmVnaW4o
KSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAgICAvLyBGSVhNRTogQXVkaXQgdGhlIGNhbGwgc2l0ZXMg
b2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdpdGggaXRlcmF0aW9uIGlmIHBvc3Np
YmxlLgotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBk
YXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YSgpKTsgfQotICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OwotICAg
IFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0
OwotCi0gICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQg
d2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVm
ZmVyIGlzIG5vdCBzaGFyZWQpLgotICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOwor
ICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShk
YXRhKSkpOyB9CiAKLSAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhp
cyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0Ci0gICAgLy8gQXJyYXlCdWZmZXIgd2l0
aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KLSAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7Ci0KLSAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotCi0gICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQotCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgU2hh
cmVkQnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0g
ICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KLSAgICB2
b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Ci0KLSAgICB2b2lkIGNsZWFyKCk7CisgICAg
c3RydWN0IFByb3ZpZGVyIHsKKyAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0
YTsKKyAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7CisgICAgfTsKIAotICAgIFJlZjxT
aGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5h
dGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGlu
YXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIHN0YXRpYyBS
ZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7IH0KIAotICAgIC8vIERh
dGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBp
dCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgotICAgIC8vIFRvIG1vZGlmeSBv
ciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KLSAgICBjbGFz
cyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4g
ewotICAgIHB1YmxpYzoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0
YSgpIGNvbnN0OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0Owor
I2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+
IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCiAKLSAgICAgICAgc3RhdGljIFJlZjxEYXRh
U2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKLSAgICAgICAgfQorICAgIGJvb2wgY29u
dGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwogCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERh
dGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVE
YXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikKLSAgICAgICAgc3RhdGljIFJlZjxE
YXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNp
dCBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCisgICAgICAgIDogbV9p
bW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0g
ICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBk
YXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsg
fQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCisgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNF
KEdTVFJFQU1FUikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0
cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJl
ZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxl
RGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgotICAgICAgICBzdGF0aWMgUmVmPERhdGFT
ZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxp
Y2l0IERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICAg
ICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgZXhwbGljaXQgRGF0
YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEo
V1RGTW92ZShwcm92aWRlcikpIHsgfQogCi0gICAgICAgIHN0cnVjdCBQcm92aWRlciB7Ci0gICAg
ICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOwotICAgICAgICAgICAgRnVu
Y3Rpb248c2l6ZV90KCk+IHNpemU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgc3RhdGljIFJlZjxE
YXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQotCi0jaWYgVVNFKEZPVU5E
QVRJT04pCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0Owot
I2VuZGlmCi0KLSAgICAgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRh
KQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAg
c3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKICNpZiBVU0UoQ0YpCi0gICAgICAgIERhdGFT
ZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11
dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBEYXRhU2VnbWVudChHUmVmUHRyPEdC
eXRlcz4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRh
KSkgeyB9CisgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKICNlbmRpZgogI2lmIFVTRShHU1RSRUFN
RVIpCi0gICAgICAgIERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBk
YXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9Cisg
ICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisjZW5kaWYKKyAgICAgICAgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURh
dGE7CisgICAgZnJpZW5kIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CisjaWYgIVVTRShG
T1VOREFUSU9OKQorICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7IC8vIEZvciBjcmVhdGVD
RkRhdGEKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEp
KSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKLSAgICAgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KK307CisKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKTsgfQorICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGlj
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihk
YXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxl
RGF0YSkpKTsgfQorICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3Rv
cikpKTsgfQorICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERh
dGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsgfQogCi0gICAgICAgIHN0
ZDo6dmFyaWFudDxWZWN0b3I8dWludDhfdD4sCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VC
Q09SRV9FWFBPUlQgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBj
cmVhdGUoTlNEYXRhKik7CisjZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikK
LSAgICAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKICNlbmRpZgorCiAj
aWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZl
cj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgotICAgICAgICAgICAgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCi0gICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFi
bGVEYXRhOwotICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwotICAgIH07CisgICAg
V0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxl
bmd0aCkgY29uc3Q7CisKKyAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBj
b3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRo
ZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgorICAgIFZlY3Rvcjx1aW50
OF90PiBleHRyYWN0RGF0YSgpOworCisgICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQg
Y29waWVzIHRoaXMgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAg
ICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBh
IGZsYXQgYnVmZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBz
aXplKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFT
ZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBj
b25zdDsKIAotICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25z
dCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNv
bnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zm
c2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9y
RWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+
Jik+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNw
YW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisKKyAgICB1c2luZyBEYXRhU2VnbWVu
dCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxp
dHkgd2hlbiB1c2luZyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudAogCiAgICAg
c3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3Np
dGlvbjsKQEAgLTIxMCw1NiArMTk3LDE3NyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRGF0YVNlZ21l
bnRWZWN0b3IgPSBWZWN0b3I8RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSwgMT47CiAgICAgRGF0YVNl
Z21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdt
ZW50cy5iZWdpbigpOyB9CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuZW5kKCk7IH0KLSAgICBib29sIGhhc09uZVNl
Z21lbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc09uZVNlZ21lbnQoKSBj
b25zdDsKIAogICAgIC8vIGJlZ2luIGFuZCBlbmQgdGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMg
Tyhsb2coTikpIHRpbWUuCi0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6
ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRh
VmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OwogCi0gICAgU3RyaW5nIHRv
SGV4U3RyaW5nKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5n
KCkgY29uc3Q7CiAKICAgICB2b2lkIGhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAK
LSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
IGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKLSAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09
KG90aGVyKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IG1ha2VDb250
aWd1b3VzKCkgY29uc3Q7CiAKLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkg
PSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6
ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0g
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKLSAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Ci0gICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKK3Byb3RlY3RlZDoKKyAg
ICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9z
ZWdtZW50czsKKyAgICBib29sIG1fY29udGlndW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgdWlu
dDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAj
aWYgVVNFKENGKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsK
ICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMq
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEdC
eXRlcyopOwogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYK
KyAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogCi0gICAgdm9pZCBjb21iaW5lSW50b09uZVNlZ21l
bnQoKSBjb25zdDsKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rv
cjx1aW50OF90PiYmKTsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZChOU0RhdGEgKik7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyNlbmRpZgogCi0gICAgLy8gQ29tYmluZXMg
YWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFm
dGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRha2VE
YXRhKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOwogCisgICAgLy8gQ29tYmlu
ZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9y
IGFmdGVyIGNsZWFyaW5nIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgorICAgIFdFQkNPUkVf
RVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAgIGNvbnN0IERhdGFTZWdtZW50
VmVjdG9yRW50cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpdGlvbikgY29u
c3Q7CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwotCi0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsK
LSAgICBtdXRhYmxlIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7Ci0KICNpZiBBU1NFUlRf
RU5BQkxFRAotICAgIG11dGFibGUgYm9vbCBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50
IHsgZmFsc2UgfTsKICAgICBib29sIGludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3Q7CiAjZW5k
aWYKIH07CiAKLWlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0
YSgpCisvLyBBIFNoYXJlZEJ1ZmZlciBpcyBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgdGhhdCBh
bGxvd3MgdG8gZGlyZWN0bHkgYWNjZXNzIGl0cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCBy
ZWxhdGVkIG1ldGhvZHMuCitjbGFzcyBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciB7CitwdWJsaWM6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Cisg
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7
CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdzKSkKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgZWxzZSBpZiBjb25z
dGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCisgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1l
X3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90ICpkYXRh
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVj
b2RlcigpIGNvbnN0OworCisgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wg
eyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFy
ZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNpZiBV
U0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVh
dGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lm
IFVTRShHTElCKQorICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0
ZXMoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJl
ZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworCisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFk
aW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKK307CisKK2NsYXNzIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
QnVpbGRlcihSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgewor
ICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyIGFzIGFsbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIHNob3VsZCBi
ZSBpbW11dGFibGUKKyAgICAgICAgLy8gb25jZSBjcmVhdGVkLgorICAgICAgICBpZiAoIWJ1ZmZl
ciB8fCBidWZmZXItPmhhc09uZVJlZigpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1v
dmUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBl
bmQoKmJ1ZmZlcik7CisgICAgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2Ug
ZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciBhcyBhbGwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisg
ICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKGJ1ZmZlci0+aGFzT25lUmVmKCkp
IHsKKyAgICAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlci5nZXQoKSkp
OworICAgIH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyKEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6IG1fYnVmZmVyKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKwor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4u
LiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVy
LT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9v
bCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9
CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXIt
PnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsg
fQorICAgIHZvaWQgZW1wdHkoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgZW5z
dXJlQnVmZmVyKCk7CisgICAgfQorCisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5
KCkgOiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiB0YWtlKCkKKyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOwor
ICAgICAgICByZXR1cm4gbV9idWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgdm9pZCBlbnN1cmVCdWZmZXIoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZl
cikKKyAgICAgICAgICAgIG1fYnVmZmVyID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisgICAgfQorICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsK
K307CisKK2lubGluZSBWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6ZXh0
cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKICAgICAgICAgcmV0dXJuIHRha2VE
YXRhKCk7CkBAIC0yNjgsMTcgKzM3NiwxNyBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJl
ZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZm
ZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKKyAgICBTaGFyZWRC
dWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNl
Z21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKICAg
ICBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVf
dCBuZXdTaXplKTsKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogICAgIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQorICAgIGNvbnN0
IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsKICAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBj
b25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0
IFJlZjxEYXRhU2VnbWVudD4gbV9zZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9u
V2l0aGluU2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcAppbmRleCBj
ZGI2ZTcwMzQwNGQ0MjZkZDIxYjQ3OWZhODljMGRhOWI4YzQ5ZjhlLi45ZDA1NWNlMjdkODhjM2Q2
MmU1YmQxY2Q0NmFkOTFmNWNjNDMxZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShNSFRNTCkKIAotU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25z
dCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcikKK1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFy
ZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0
IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKQogICAgIDogbV9pdGVyYXRvckN1cnJlbnQoYnVmZmVy
LT5iZWdpbigpKQogICAgICwgbV9pdGVyYXRvckVuZChidWZmZXItPmVuZCgpKQogICAgICwgbV9z
ZWdtZW50KG1faXRlcmF0b3JDdXJyZW50ICE9IG1faXRlcmF0b3JFbmQgPyBtX2l0ZXJhdG9yQ3Vy
cmVudC0+c2VnbWVudC0+ZGF0YSgpIDogbnVsbHB0cikKQEAgLTQ0LDcgKzQ0LDcgQEAgU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciog
YnVmZmVyLCBjb25zdCBWZWMKIHsKIH0KIAotU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBjaGFyKiBzZXBh
cmF0b3IpCitTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCiAg
ICAgOiBtX2l0ZXJhdG9yQ3VycmVudChidWZmZXItPmJlZ2luKCkpCiAgICAgLCBtX2l0ZXJhdG9y
RW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAgLCBtX3NlZ21lbnQobV9pdGVyYXRvckN1cnJlbnQgIT0g
bV9pdGVyYXRvckVuZCA/IG1faXRlcmF0b3JDdXJyZW50LT5zZWdtZW50LT5kYXRhKCkgOiBudWxs
cHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyLmgKaW5kZXggNWQ0ZTZmZWU1ODJjNjYxNmZkMDdlMzk5NGZmNzVjOGYwN2EyZmNlMS4uMWM2
NDA4ZDRjNzM2YTFjNGE0NWNlZTdiM2Y2OTY1N2JjOWEyNjE1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oCkBAIC00MSw4ICs0MSw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNo
YXJlZEJ1ZmZlciosIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKTsKLSAgICBTaGFyZWRC
dWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpOwor
ICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25z
dCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcik7CisgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IGNoYXIqIHNlcGFyYXRvcik7CiAKICAgICB2
b2lkIHNldFNlcGFyYXRvcihjb25zdCBWZWN0b3I8Y2hhcj4mKTsKICAgICB2b2lkIHNldFNlcGFy
YXRvcihjb25zdCBjaGFyKik7CkBAIC01OCw4ICs1OCw4IEBAIHB1YmxpYzoKICAgICBzaXplX3Qg
cGVlayhWZWN0b3I8dWludDhfdD4mLCBzaXplX3QpOwogCiBwcml2YXRlOgotICAgIFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JDdXJyZW50
OwotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJh
dG9yIG1faXRlcmF0b3JFbmQ7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JDdXJyZW50OworICAgIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBt
X2l0ZXJhdG9yRW5kOwogICAgIGNvbnN0IHVpbnQ4X3QqIG1fc2VnbWVudCB7IG51bGxwdHIgfTsK
ICAgICBzaXplX3QgbV9zZWdtZW50SW5kZXggeyAwIH07CiAgICAgVmVjdG9yPGNoYXI+IG1fc2Vw
YXJhdG9yIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0
YXRpY1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVi
b2FyZC5jcHAKaW5kZXggYjJkN2E1NTBkNDYwZTk0Y2QzMTUxMzRhMzE5NWJjZDkxYzdiNzg5NC4u
YTRiNGJiMTA0YjRkODQwMTViOGFhNWI1M2U3ZGZhNzg4Y2VkMjVmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9p
ZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IFN0cmluZyYgdmFsdWUpCiAgICAgbV9jdXN0b21EYXRhLndyaXRlU3RyaW5nKHR5cGUsIHZhbHVl
KTsKIH0KIAotdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6Ondy
aXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGRhdGEpCiB7CiAgICAgbV9ub25EZWZhdWx0RGF0YVR5cGVzLmFkZCh0eXBlKTsKICAgICBtX2N1
c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIFdURk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCmluZGV4IGMwOWI2ZGUzMWYyZWRlYmUwMTg4ZGM5
YzQ2NmEyNzFlMWI4YjllMTQuLmVkZDcxMzYyM2YwNmQyMmIzOGU4MzJhMjgzN2ZlNjY5OTlkZmQ3
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKQEAgLTMy
LDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBTdGF0aWNQYXN0ZWJvYXJk
IGZpbmFsIDogcHVibGljIFBhc3RlYm9hcmQgewogcHVibGljOgpAQCAtNTIsNyArNTIsNyBAQCBw
dWJsaWM6CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0
eXBlKSBmaW5hbDsKIAogICAgIHZvaWQgd3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIGRhdGEpIGZpbmFsOwotICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICB2b2lkIHdyaXRlRGF0YShj
b25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwog
ICAgIHZvaWQgd3JpdGVTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIGRhdGEpOwogICAgIHZvaWQgY2xlYXIoKSBmaW5hbDsKICAgICB2b2lkIGNsZWFy
KGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vTm93UGxheWluZ0luZm8uaAppbmRleCA2ODc5NTkwMGM1YWRmOWNjOTA0NWUwZWFiYjIy
YjE4ZmE2Njk2MzE0Li4xZDY1YmM0MDNhZDg1MjQzYzY3MjVlNzA0NDhkNmNkYWRjY2NjZTFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKQEAg
LTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IE5vd1BsYXlpbmdJbmZv
QXJ0d29yayB7CiAgICAgU3RyaW5nIHNyYzsKICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBpbWFnZURhdGE7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm93UGxheWlu
Z0luZm9BcnR3b3JrJiBvdGhlcikgY29uc3QKICAgICB7CkBAIC02Nyw3ICs2Nyw3IEBAIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0
d29yaz4gTm93UGxheWluZ0luCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtaW1lVHlwZSkpCiAg
ICAgICAgIHJldHVybiB7IH07CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGltYWdlRGF0YSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRl
ckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmls
ZVJlYWRlckNvY29hLmNwcAppbmRleCBlOGIxOWJmMzRlYmEyM2I4NTcyMDdiZTg4Y2UxYjQ1YmY4
ZjJjY2MzLi5mMzIxNDI5NTFiMTc5OTZlNmNlMTY3NTYzMTZiZmQ0NzNmYWE0ZWRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJD
b2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9G
aWxlUmVhZGVyQ29jb2EuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgY2xhc3MgQXVkaW9GaWxlUmVh
ZGVyV2ViTURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyOwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAgICAgUmVmPEF1ZGlv
VHJhY2tQcml2YXRlV2ViTT4gbV90cmFjazsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNv
Y29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2FiMzZlMmEwYzA4MTJjOTRlMTg3MGUuLjdm
MDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUxMDg5YjU3MTlmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25N
YW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFn
ZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlv
bgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90
ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAgIH0K
ICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQbGF5aW5nSW5mby5hcnR3b3Jr
LT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5h
cnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zQXJ0d29y
ayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCks
IGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgp
KTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1v
dGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29yay0+
bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrSWRl
bnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0luZm8uYXJ0d29yay0+c3JjLmhhc2go
KSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYz
NDBiYjJmY2I5MS4uMTk0YTE5OGE3MWZmZDUzZGNiYjVkZmY5NThhYWU2ZWE4NTAxYzUxNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtMzMs
NyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKENGRGF0YVJlZiBkYXRhKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIHsKICAgICBhcHBlbmQoZGF0YSk7CiB9CkBA
IC00MywyNCArNDMsMTggQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRh
dGEpCiAjaWYgIVVTRShGT1VOREFUSU9OKQogUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9
PSAxKSB7Ci0gICAgICAgIGlmIChhdXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0YWluUHRyPENG
RGF0YVJlZj4+KCZtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCi0gICAg
ICAgICAgICByZXR1cm4gKmRhdGE7Ci0gICAgfQotICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihD
RkRhdGFDcmVhdGVNdXRhYmxlKG51bGxwdHIsIHNpemUoKSkpOwotICAgIGZvckVhY2hTZWdtZW50
KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgIENGRGF0YUFwcGVuZEJ5dGVzKGNmRGF0YS5n
ZXQoKSwgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAgICB9KTsKLSAgICByZXR1
cm4gY2ZEYXRhOworICAgIGlmIChhdXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0YWluUHRyPENG
RGF0YVJlZj4+KCZtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCisgICAg
ICAgIHJldHVybiAqZGF0YTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0
ciwgZGF0YSgpLCBzaXplKCkpKTsKIH0KICNlbmRpZgogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFSZWYgZGF0YSkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGRhdGEpKTsKIH0KIAotdm9pZCBT
aGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKK3ZvaWQgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogewogICAg
IGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBtX3NlZ21lbnRzKSB7CiAgICAgICAgIGlmIChlbnRy
eS5zZWdtZW50LT5oYXNPbmVSZWYoKSkgewpAQCAtNzAsOSArNjQsOCBAQCB2b2lkIFNoYXJlZEJ1
ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogICAgIH0KIH0KIAotdm9pZCBT
aGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVu
Q29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdt
ZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAg
ICBtX3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVy
LmgKaW5kZXggMDc5N2RmYmU4ZDAxOGJlNjM2MTc0NGM1OGY4OTJkZDU2ZWQ2ODljNS4uY2JlODc3
MWE0NWQ4NjJjYjVhYjA1ZWNhMzk5OTI3ZTA3ODM4ZjU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2
ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlz
aGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2Vt
ZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICAgICBDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBib29sIGlzUmVxdWlyZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXIubW0KaW5kZXggNDI5MGRiMTI4ZDAwMGE0MGVlZjcwZmQyOTQxZDYzNDQ5MDQ2ZGUwMy4uMmVm
MjcwMWZlNjc4YmY5YjkyZGIyMTJiYmVhNWM5MTVhM2ZjM2EyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIubW0KQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250
ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQogICAgIHNlbWFwaG9yZS53YWl0KCk7CiB9
CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBs
YWNlbWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE5ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAogewogICAgIEFT
U0VSVChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1f
cmVwbGFjZW1lbnREYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCmluZGV4IDA2
OGNkY2IzODNmNDIzNjVhYzMyNjRlMjI5YTZkNjNiYzJiNGFiZDYuLjY3OWFlOTMyOTUxN2UxZjM5
NDNiYTU3NjJhYzhmNTZlODYwYzhjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaApAQCAt
NDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0Rh
dGEoKSBvdmVycmlkZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1l
bnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQog
ICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92
ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCmluZGV4IGI0NjFmOTc1
MzZkZTNhMTU4MTNhNTgyN2I4NjcxMzhiOTZkNGYzOGMuLjFjOTYwNDcxNmI0MjY5M2Q1ZTQ2YzJl
MjNlOTQxZGEwMGM4M2U0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCkBAIC0xMDks
NyArMTA5LDcgQEAgdm9pZCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6ZmluaXNoZWRB
ZGRpbmdEYXRhKCkKICAgICB1cGRhdGVGaWx0ZXJTdGF0ZSgpOwogfQogCi1SZWY8U2hhcmVkQnVm
ZmVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29u
c3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRh
KCkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJv
YXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29j
b2EubW0KaW5kZXggNmYyOGU4MjQzNjBjY2QzMDg2YzAzMThmYWU0MDk4ZjFlZGUyOGUyNS4uYjgx
NzA4MTdjZWM1OWUyMmQzYzBlOWE3OGYxNDZjMDMzZTRjMTY2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpAQCAtNDcsNyArNDcsNyBA
QCBzdGF0aWMgTlNCaXRtYXBJbWFnZUZpbGVUeXBlIGJpdG1hcFBOR0ZpbGVUeXBlKCkKIH0KICNl
bmRpZiAvLyBQTEFURk9STShNQUMpCiAKLS8vIE1ha2luZyB0aGlzIG5vbi1pbmxpbmUgc28gdGhh
dCBXZWJLaXQgMidzIGRlY29kaW5nIGRvZXNuJ3QgaGF2ZSB0byBpbmNsdWRlIFNoYXJlZEJ1ZmZl
ci5oLgorLy8gTWFraW5nIHRoaXMgbm9uLWlubGluZSBzbyB0aGF0IFdlYktpdCAyJ3MgZGVjb2Rp
bmcgZG9lc24ndCBoYXZlIHRvIGluY2x1ZGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci5oLgogUGFz
dGVib2FyZFdlYkNvbnRlbnQ6OlBhc3RlYm9hcmRXZWJDb250ZW50KCkgPSBkZWZhdWx0OwogUGFz
dGVib2FyZFdlYkNvbnRlbnQ6On5QYXN0ZWJvYXJkV2ViQ29udGVudCgpID0gZGVmYXVsdDsKIApA
QCAtMjExLDkgKzIxMSw5IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVn
YWN5VW5zYWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQor
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0
bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBh
bGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0
aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCmluZGV4IDllZTBjMGI1
NWQ3OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLjI0MGEzNjdiZTJhYzc2NWI3OGJkZTcx
MDA0NjY2NGJjYjFjZTU0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEgQEAKICNpbXBvcnQgPHd0
Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNvcmVTaGFyZWRCdWZmZXJE
YXRhIDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246
KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOworLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRh
U2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNp
emU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSB7Ci0g
ICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IF9kYXRh
U2VnbWVudDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQ+IF9kYXRhU2Vn
bWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJbnRlZ2VyIF9zaXplOwog
fQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxvY107
CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50
ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQg
cG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCiB7CiAg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC04
OCwxMiArODgsMTIgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkKK1JlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoTlNEYXRhICpkYXRh
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihicmlkZ2VfY2FzdChk
YXRhKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIo
YnJpZGdlX2Nhc3QoZGF0YSkpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0Rh
dGEgKmRhdGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRh
dGEpCiB7CiAgICAgcmV0dXJuIGFwcGVuZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CkBAIC0xMDUs
MTAgKzEwNSw4IEBAIFJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRh
KCkgY29uc3QKIAogUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRh
dGEoKSBjb25zdAogewotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwogICAgIGlmICghbV9z
ZWdtZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxs
cHRyLCBudWxscHRyLCAwKSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwog
ICAgIHJldHVybiBicmlkZ2VfY2FzdChtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmNyZWF0ZU5TRGF0
YSgpKTsKIH0KIApAQCAtMTE5LDE0ICsxMTcsMTQgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmV0YWluUHRyPE5TQXJyYXk+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAorUmV0YWluUHRyPE5TQXJyYXk+IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKIHsKICAgICByZXR1cm4g
Y3JlYXRlTlNBcnJheShtX3NlZ21lbnRzLCBbXSAoYXV0byYgc2VnbWVudCkgewogICAgICAgICBy
ZXR1cm4gc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKTsKICAgICB9KTsKIH0KIAotUmV0
YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkg
Y29uc3QKK1JldGFpblB0cjxOU0RhdGE+IERhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25z
dAogewogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2Nd
IGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5z
dGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3Rh
bmNlLmgKaW5kZXggZmJjMjgzZmJjMzM2OWJmODI3ZTMxNjk5NGM0Yzk0ZTA2MzYzY2I4MS4uMmRl
NDE5MzRkYTE5ODc5ZDc1YzBkZjhhODllNjRlNTk5YzI5YWUwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCkBAIC00Niw3
ICs0Niw3IEBAIGNsYXNzIExvZ2dlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgQ0RNSW5z
dGFuY2VTZXNzaW9uOwogc3RydWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb247CiAKQEAgLTU0
LDcgKzU0LDcgQEAgY2xhc3MgQ0RNSW5zdGFuY2VDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8Q0RNSW5zdGFuY2VDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5j
ZUNsaWVudCgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCB1bnJlcXVlc3RlZEluaXRp
YWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNl
aXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwog
fTsKIAogLy8gSmF2YVNjcmlwdCdzIGhhbmRsZSB0byBhIENETUluc3RhbmNlLCBtdXN0IGJlIHVz
ZWQgZnJvbSB0aGUKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICB2aXJ0
dWFsIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVu
dFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxDRE1J
bnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5o
CmluZGV4IDM3Y2QwN2M3YmYyZGM3NWU0MWZkNWM2YzdkZWNmNDNlMTAzOWUxMTQuLmQyNTkyMjVi
YTllMDJhNjRkMGNlY2Q2MTUxZmRmOTNmNGYyNDY2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5o
CkBAIC00MywxNiArNDMsMTYgQEAgY2xhc3MgTG9nZ2VyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxD
RE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0
YW5jZVNlc3Npb25DbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB1c2luZyBLZXlTdGF0dXMgPSBD
RE1LZXlTdGF0dXM7Ci0gICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFp
cjxSZWY8U2hhcmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47CisgICAgdXNpbmcgS2V5U3RhdHVzVmVj
dG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIEtleVN0
YXR1cz4+OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0
b3ImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNlbmRN
ZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNz
YWdlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5n
JikgPSAwOwogICAgIHVzaW5nIFBsYXRmb3JtRGlzcGxheUlEID0gdWludDMyX3Q7CiAgICAgdmly
dHVhbCBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSA9IDA7CkBAIC03OCwxMyArNzgsMTMg
QEAgcHVibGljOgogICAgICAgICBTdWNjZWVkZWQsCiAgICAgfTsKIAotICAgIHVzaW5nIExpY2Vu
c2VDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBt
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0
aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSA9IDA7CisgICAgdXNp
bmcgTGljZW5zZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBu
ZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47CisgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNl
bnNlQ2FsbGJhY2smJikgPSAwOwogCiAgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gQ0RNSW5z
dGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3I7Ci0gICAgdXNpbmcgTWVzc2FnZSA9
IHN0ZDo6cGFpcjxNZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIE1l
c3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj47CiAgICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9y
PiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlv
biwgc3RkOjpvcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVk
ZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VV
cGRhdGVDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKIAogICAgIGVu
dW0gY2xhc3MgU2Vzc2lvbkxvYWRGYWlsdXJlIDogdWludDhfdCB7CiAgICAgICAgIE5vbmUsCkBA
IC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIHVzaW5nIENsb3NlU2Vzc2lvbkNhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VTZXNz
aW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSA9IDA7
CiAKLSAgICB1c2luZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChLZXlTdGF0dXNWZWN0b3ImJiwgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVy
Pj4mJiwgU3VjY2Vzc1ZhbHVlKT47CisgICAgdXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFj
ayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYsIHN0ZDo6b3B0aW9u
YWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmLCBTdWNjZXNzVmFsdWUpPjsKICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExp
Y2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpID0gMDsKIAogICAgIHZpcnR1
YWwgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVBy
aXZhdGUuaAppbmRleCBjYzZkYzdmMTQwY2Q2N2QyYjdiODRmNmFiMmMyODQzMTZkZmRkY2NmLi41
MmE2MTQ4YzgzY2Q1MzkzYzhmODc0ZWQ4NWFkOGJmMjdlNWJlNTBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC03Myw4
ICs3Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSA9
IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBT
aGFyZWRCdWZmZXImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Q
cm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94
eS5jcHAKaW5kZXggZjIxOGY5NzkwNGZiYmE0OWYxZWJkZjQ4ZTIwNWZlNzNkZmFmYjY0OC4uNGJh
NzViZjAwZDlmNzEzYjVhZmJiYTc5MzQwMTk3MTZjZDhmMDM4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcApAQCAtMjI3LDcg
KzIyNyw3IEBAIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIEtleVN0b3JlOjpj
b252ZXJ0VG9KU0tleVN0YXR1c1ZlY3RvcigpIGNvbnN0CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9u
OjpLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzVmVjdG9yOwogICAgIGtleVN0YXR1c1ZlY3Rvci5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bUtleXMoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBr
ZXkgOiBtX2tleXMpCi0gICAgICAgIGtleVN0YXR1c1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQoc3Rk
OjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1cz4g
eyBrZXktPmlkQXNTaGFyZWRCdWZmZXIoKSwga2V5LT5zdGF0dXMoKSB9KTsKKyAgICAgICAga2V5
U3RhdHVzVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+LCBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1cz4geyBrZXktPmlkQXNTaGFy
ZWRCdWZmZXIoKSwga2V5LT5zdGF0dXMoKSB9KTsKICAgICByZXR1cm4ga2V5U3RhdHVzVmVjdG9y
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1Qcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
UHJveHkuaAppbmRleCBhNTg0YjZjZDI2NmIwOTgwOTAyNTRkN2RjYmRkYmY2MGQ5MzMxZmJiLi5l
MWUwOThhMWQ1ZjVmZmM2NWMyYTQ4ZmE0MGFhOTcyZmU4OWUxZTNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKQEAgLTYxLDcgKzYx
LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgS2V5SGFu
ZGxlKHN0YXR1cywgV1RGTW92ZShrZXlJRCksIFdURk1vdmUoa2V5SGFuZGxlVmFsdWUpKSk7CiAg
ICAgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9pZC5zaXplKCkpOyB9Cisg
ICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIoKSBjb25zdCB7
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9pZC5zaXplKCkpOyB9
CiAKICAgICBib29sIHRha2VWYWx1ZUlmRGlmZmVyZW50KEtleUhhbmRsZVZhbHVlVmFyaWFudCYm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlhYThlYjlhMmJiMDcxMWVhZTA4MGYzNzdl
MjJiOTgzNC4uZmNhNmYyMzg4YTU2YTZhMWM3MjQ3MGU1YTQ2ZmRkMjhmMDczNzUwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGls
aXRpZXMuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNw
YWNlIENETVV0aWxpdGllcyB7CiAKLVJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVj
dChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNl
SlNPTk9iamVjdChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAg
Ly8gRmFpbCBvbiBsYXJnZSBidWZmZXJzIHdob3NlIHNpemUgZG9lc24ndCBmaXQgaW50byBhIDMy
LWJpdCB1bnNpZ25lZCBpbnRlZ2VyLgogICAgIHNpemVfdCBzaXplID0gYnVmZmVyLnNpemUoKTsK
QEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0dXJuaW5nIHRoZSByb290
IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CiAKICAg
ICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1VdGlsaXRpZXMuaAppbmRleCA3NGY1MTViMGJkMmE4NzE2OGVlZjI0YjE4Zjk1ZGVhYmVlODI4
ZTZjLi5mY2Y1YmRkYTdjNTk3ZDNjM2FjMzQ5ZWUxNzg5ZTRhZDZlMGM5NTlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMu
aApAQCAtMzUsMTEgKzM1LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIENE
TVV0aWxpdGllcyB7CiAKLVJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25z
dCBTaGFyZWRCdWZmZXImKTsKK1JlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5LmNwcAppbmRleCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVk
Li4zMWE5ZmRmYTAyZDZkMDBjYTI2MTgyNTJkZWQ5MzUzMTNkYzU4YWE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VM
aWNlbnNlUmVsZWFzZUFja25vd2xlZGdlbWVudEZvcm1hdChjb25zdCBKU09OOjpPYmplY3QmIHJv
b3QpCiAvLyBdOwogCiAvLyBUaGlzIGZ1bmN0aW9uIGV4dHJhY3RzIHRoZSBLZXlJZHMgY291bnQg
YW5kIHRoZSBsb2NhdGlvbiBvZiB0aGUgZmlyc3QgS2V5SWQgaW4gaW5pdERhdGEgYnVmZmVyLgot
c3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlv
bkZyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBz
dGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2Vu
Y0luaXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAg
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCgwLCAwKTsKIApAQCAtMTM4
LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0
S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGluaXREYXRhLmlz
RW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRvKiBkYXRhID0g
aW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEu
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5k
YXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgpOwogICAg
IHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CkBAIC0xODgs
MTUgKzE4OSwxNSBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFj
dEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogfQogCiAvLyBUaGlzIGZ1bmN0
aW9uIGNoZWNrcyBpZiB0aGUgaW5pdERhdGEgc2hhcmVkQnVmZmVyIGlzIGEgdmFsaWQgQ0VOQyBp
bml0RGF0YS4KLXN0YXRpYyBib29sIGlzQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
aW5pdERhdGEpCitzdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGluaXRE
YXRhKTsKICAgICByZXR1cm4gKChrZXlJZHNNYXAuZmlyc3QpICYmIChrZXlJZHNNYXAuc2Vjb25k
KSk7CiB9CiAKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJ
bml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGljIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBr
ZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
a2V5SWRzOwogCiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0g
ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5z
aWduZWQga2V5SWRDb3VudCA9IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNCw5ICsyMDUsMTAgQEAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEg
dmFsaWQgQ0VOQyBpbml0RGF0YS4KICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQotICAg
ICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAotICAg
IGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERh
dGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1
b3VzSW5pdERhdGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0Ojpj
cmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpA
QCAtMjI0LDE3ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlp
ZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIG9iamVj
dC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBq
c29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBw
ZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJ
ZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgp
KTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RGF0YSkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJv
bVdlYk1Jbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsK
LSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERh
dGEgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkg
fHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsK
IAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtl
eUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDEyICsyNDcsMTIgQEAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNPTiBvYmpl
Y3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMiCiAgICAg
Ly8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0aGUg
YmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5nIHRoZSBr
ZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2Rl
VG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBrZXlJZHNB
cnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0LT5zZXRB
cnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRh
ID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNv
bkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAg
ICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAg
IHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xlYXJLZXkmIENETUZhY3Rv
cnlDbGVhcktleTo6c2luZ2xldG9uKCkKQEAgLTM4OCw3ICszOTAsNyBAQCBib29sIENETVByaXZh
dGVDbGVhcktleTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QK
K2Jvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEp
IGNvbnN0CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhlIGluaXREYXRhIGJ1ZmZlciBhcyBhbiBKU09O
IG9iamVjdCBpbiBrZXlpZHMgY2FzZS4KICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRzIikgJiYgQ0RNVXRpbGl0aWVzOjpwYXJzZUpTT05P
YmplY3QoaW5pdERhdGEpKQpAQCAtNDA1LDcgKzQwNyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFy
S2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZh
dGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNl
KSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVDbGVhcktl
eTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25z
ZSkgY29uc3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUgcmVzcG9uc2UgYnVmZmVyIGFzIGFuIEpT
T04gb2JqZWN0LgogICAgIGlmICghQ0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QocmVzcG9u
c2UpKQpAQCAtNDMxLDcgKzQzMyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6aW5pdGlh
bGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyCiAgICAgY2Fs
bGJhY2soc3VjY2VlZGVkKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQog
ewogICAgIC8vIFJlamVjdCBzZXR0aW5nIGFueSBzZXJ2ZXIgY2VydGlmaWNhdGUuCiAgICAgY2Fs
bGJhY2soRmFpbGVkKTsKQEAgLTQ1Myw3ICs0NTUsNyBAQCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNz
aW9uPiBDRE1JbnN0YW5jZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKCkKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KCp0aGlzKSk7CiB9CiAKLXZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERh
dGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25D
bGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vu
c2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHN0YXRpYyB1aW50MzJfdCBzX3Nlc3Npb25J
ZFZhbHVlID0gMDsKICAgICArK3Nfc2Vzc2lvbklkVmFsdWU7CkBAIC00NzUsNyArNDc3LDcgQEAg
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUsIGNvbnN0IEF0b21TdHJpbmcmIGkKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7CiAjaWYgTE9HX0RJU0FCTEVECiAgICAgLy8gV2Ugb25seSB1c2UgdGhlIHNl
c2lvbiBJRCBmb3IgZGVidWcgbG9nZ2luZy4gVGhlIHZlcmJvc2UgcHJlcHJvY2Vzc29yIGNoZWNr
cyBhcmUgYmVjYXVzZQpAQCAtNTY2LDcgKzU2OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
Q2xlYXJLZXk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNl
CiAgICAgQVNTRVJUKHNlc3Npb25JZCA9PSBtX3Nlc3Npb25JRCk7CiAKICAgICBhdXRvIGRpc3Bh
dGNoQ2FsbGJhY2sgPQotICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgJmNh
bGxiYWNrXShLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNWZWN0b3IsIHN0ZDo6b3B0aW9uYWw8
UmVmPFNoYXJlZEJ1ZmZlcj4+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2Nlc3MpIHsKKyAg
ICAgICAgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sICZjYWxsYmFja10oS2V5U3RhdHVz
VmVjdG9yJiYga2V5U3RhdHVzVmVjdG9yLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VzcykgewogICAgICAgICAg
ICAgY2FsbE9uTWFpblRocmVhZCgKICAgICAgICAgICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKndlYWtUaGlzIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGtleVN0YXR1c1Zl
Y3RvciA9IFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2Fn
ZSksIHN1Y2Nlc3NdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMpCkBAIC01NzksNyArNTgxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6
cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKICAgICAvLyBD
b25zdHJ1Y3QgdGhlIEtleVN0YXR1c1ZlY3RvciBvYmplY3QsIHJlcHJlc2VudGluZyByZWxlYXNl
ZCBrZXlzLCBhbmQgdGhlIG1lc3NhZ2UgaW4gdGhlCiAgICAgLy8gJ2xpY2Vuc2UgcmVsZWFzZScg
Zm9ybWF0LgogICAgIEtleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNWZWN0b3IgPSBtX2tleVN0b3Jl
LmFsbEtleXNBcyhDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1czo6UmVsZWFzZWQpOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2U7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IG1lc3NhZ2U7CiAgICAgewogICAgICAgICAvLyBDb25zdHJ1Y3QgSlNPTiB0aGF0
IHJlcHJlc2VudHMgdGhlICdsaWNlbnNlIHJlbGVhc2UnIGZvcm1hdCwgY3JlYXRpbmcgYSAna2lk
cycgYXJyYXkKICAgICAgICAgLy8gb2YgYmFzZTY0VVJMLWVuY29kZWQga2V5IElEcyBmb3IgYWxs
IGtleXMgdGhhdCB3ZXJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNlc3Npb24uCkBAIC01OTMsMTQg
KzU5NSwxNCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZW1vdmVTZXNzaW9u
RGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZQogICAgICAgICAgICAgcm9vdE9iamVj
dC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGFycmF5KSk7CiAgICAgICAgIH0KIAotICAgICAg
ICAvLyBDb3B5IHRoZSBKU09OIGRhdGEgaW50byBhIFNoYXJlZEJ1ZmZlciBvYmplY3QuCisgICAg
ICAgIC8vIENvcHkgdGhlIEpTT04gZGF0YSBpbnRvIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBv
YmplY3QuCiAgICAgICAgIFN0cmluZyBtZXNzYWdlU3RyaW5nID0gcm9vdE9iamVjdC0+dG9KU09O
U3RyaW5nKCk7CiAgICAgICAgIENTdHJpbmcgbWVzc2FnZUNTdHJpbmcgPSBtZXNzYWdlU3RyaW5n
LnV0ZjgoKTsKICAgICAgICAgbWVzc2FnZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2VD
U3RyaW5nLmRhdGEoKSwgbWVzc2FnZUNTdHJpbmcubGVuZ3RoKCkpOwogICAgIH0KIAogICAgIG1f
a2V5U3RvcmUudW5yZWZBbGxLZXlzKCk7Ci0gICAgZGlzcGF0Y2hDYWxsYmFjayhXVEZNb3ZlKGtl
eVN0YXR1c1ZlY3RvciksIFJlZjxTaGFyZWRCdWZmZXI+KCptZXNzYWdlKSwgU3VjY2Vzc1ZhbHVl
OjpTdWNjZWVkZWQpOworICAgIGRpc3BhdGNoQ2FsbGJhY2soV1RGTW92ZShrZXlTdGF0dXNWZWN0
b3IpLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oKm1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6
OlN1Y2NlZWRlZCk7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnN0b3Jl
UmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgK
aW5kZXggOWMwNzQ3ZGMxYmQ4ZTY3ZjNiYTg2NGQ5YjgxMTMzNzYyNWM4YTY3OS4uOWUyN2ZlOTEy
YzRkYTA2N2ZiMjZjYWZiYzdmNmE2NTFkYTQ3NTI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5oCkBAIC04Niw4ICs4Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXpl
KCkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wg
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikg
Y29uc3QgZmluYWw7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShj
b25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25z
dCBmaW5hbDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNw
b25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0
IGZpbmFsOwogfTsKIApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFu
Y2UKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpDbGVhcktleTsgfQogICAgIHZvaWQgaW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNj
ZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8
U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0Nh
bGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJp
bmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsOwog
ICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKQEAg
LTEwOSw4ICsxMDksOCBAQCBjbGFzcyBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleSBmaW5hbCA6
IHB1YmxpYyBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSB7CiBwdWJsaWM6CiAgICAgQ0RNSW5zdGFu
Y2VTZXNzaW9uQ2xlYXJLZXkoQ0RNSW5zdGFuY2VDbGVhcktleSYgcGFyZW50KQogICAgICAgICA6
IENETUluc3RhbmNlU2Vzc2lvblByb3h5KHBhcmVudCkgeyB9Ci0gICAgdm9pZCByZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9p
ZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0
TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xv
c2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJl
bW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IGU5NjhlOTg1
YzdlZWNlZmU0MzVhYTkyMDVjNDRkZDM1YWVkOGUwZDAuLmVjZjRlMDhjOWI5OTFhZGUyNzNiZDQ0
YzYwYmIxNWZlMDE2MzViMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWRFbmNvZGVyR2VuZXJpYyBmaW5hbCA6IHB1YmxpYyBL
ZXllZEVuY29kZXIgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKaW5kZXggOGE4YzEwYjcwMjRjZmUwMzhlOWZhN2I3MTVi
ZTI2ODg5ZmMwNWUyOC4uOTM3ZDFmYjZmMGM4ZDdiNTFmMThmZjE1NTYwYjNiOTRhNzRmNjFiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGli
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIu
Y3BwCkBAIC0yNiwxNiArMjYsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQogewogICAgIEFTU0VSVChi
eXRlcyk7CiAgICAgbV9zaXplID0gZ19ieXRlc19nZXRfc2l6ZShieXRlcyk7CiAgICAgbV9zZWdt
ZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKEdSZWZQdHI8R0J5dGVzPihieXRl
cykpIH0pOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0
ZXMqIGJ5dGVzKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihieXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKIH0KIAogR1JlZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaAppbmRleCA5ZmM0ZWE4MmViYmM3N2VhZDkwMTA4NTQzODA4MjllMTViYmFiNmY0Li5kYzFm
YjE2ZWEwYjE5NmM1ZDEzYmQ0MTE0ZTUwY2NkY2Q5YjM3YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEZvbnRDYWNoZTsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEdseXBo
UGFnZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIHN0cnVjdCBHbHlwaERhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAw
ODI5ZGUxOTliMTRlODRiMjE5Li5mYmJjY2M0MzY4NDQ3NDkwODNjZTg5MWYzNjNmNmNjNDBmMjk3
NDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxh
dGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5oCkBAIC03NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBP
bmNlIGNyZWF0ZWQsIG5vIGluc3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2Vy
dmFibGUgd2F5KS4KIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGEgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IDRhODUzZWI2NDk1M2Q0YWU0ODM0Zjg3YzU0
ODdhY2QzNjRjNTdkODEuLmUzMmEzNmM2MDc2MTkyMTY4YzZhMzc5MzE4Zjc4YWUxNzg5YzQ4MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTEwNCw3
ICsxMDQsNyBAQCBib29sIEltYWdlOjppc1Bvc3RTY3JpcHRSZXNvdXJjZShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBVUkwmIHVybCkKIH0KIAogCi1FbmNvZGVkRGF0YVN0YXR1cyBJbWFn
ZTo6c2V0RGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQorRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2U6OnNldERhdGEoUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgbV9lbmNv
ZGVkSW1hZ2VEYXRhID0gV1RGTW92ZShkYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmgKaW5kZXggNmEwODE2OTU3YWE5M2M0MTFhNTZjZDRjMmJjMjBkZDZkOTA0
NGRlYy4uNjU1ZGZlNzNjZmY2YWQxZDA0ZjQ4YmMyMDE5ZWJiODA0MTdkNjEzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC03MCw3ICs3MCw3IEBAIGNsYXNz
IEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFNpemU7CiBj
bGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogc3RydWN0IExlbmd0aDsKIAogLy8gVGhpcyBjbGFzcyBnZXRzIG5v
dGlmaWVkIHdoZW4gYW4gaW1hZ2UgY3JlYXRlcyBvciBkZXN0cm95cyBkZWNvZGVkIGZyYW1lcyBh
bmQgd2hlbiBpdCBhZHZhbmNlcyBhbmltYXRpb24gZnJhbWVzLgpAQCAtMTI0LDcgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBj
b25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2aXJ0dWFsIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1h
Z2U7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIEVuY29kZWREYXRhU3RhdHVzIHNldERhdGEoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgRW5jb2RlZERhdGFTdGF0dXMgc2V0RGF0YShSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdmlydHVhbCBF
bmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChib29sIC8qYWxsRGF0YVJlY2VpdmVkKi8pIHsg
cmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpVbmtub3duOyB9CiAKICAgICB2aXJ0dWFsIFN0cmlu
ZyB1dGkoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAvLyBudWxsIHN0cmluZyBpZiB1bmtu
b3duCkBAIC0xMzMsOCArMTMzLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRlc3Ry
b3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwgPSB0cnVlKSA9IDA7CiAKLSAgICBTaGFyZWRC
dWZmZXIqIGRhdGEoKSB7IHJldHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KLSAgICBj
b25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWRJbWFnZURh
dGEuZ2V0KCk7IH0KKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgeyByZXR1cm4g
bV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQog
CiAgICAgdmlydHVhbCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpOwogCkBAIC0y
MDksNyArMjA5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgQ29sb3Igc2luZ2xlUGl4ZWxT
b2xpZENvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQogCiBwcml2YXRlOgotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fZW5jb2RlZEltYWdlRGF0YTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVkSW1hZ2VEYXRhOwogICAgIEltYWdlT2JzZXJ2ZXIq
IG1faW1hZ2VPYnNlcnZlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fYW5pbWF0aW9u
U3RhcnRUaW1lcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCYWNraW5nU3RvcmUuaAppbmRleCA0ZGRiNmRmODNlY2I4YjliNzk1N2Y0NjY0ZTE4
NGYwMDgxZTgxMDExLi5kZTMzZjFhZjQxMmRjMDhiMmI5NjFhMTk0OTQ1YzljYzkwYWE2NjI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2lu
Z1N0b3JlLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgICAgIGJ1ZmZlci5ncm93KGJ1ZmZlclNpemUpOwotICAgICAgICBtX3BpeGVs
cyA9IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwor
ICAgICAgICBtX3BpeGVscyA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpj
cmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJl
dF9jYXN0PHVpbnQzMl90Kj4oY29uc3RfY2FzdDx1aW50OF90Kj4obV9waXhlbHMtPmRhdGEoKSkp
OwogICAgICAgICBtX3NpemUgPSBzaXplOwogICAgICAgICBtX2ZyYW1lUmVjdCA9IEludFJlY3Qo
SW50UG9pbnQoKSwgbV9zaXplKTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBwcml2YXRlOgogICAgIHsK
ICAgICAgICAgQVNTRVJUKCFtX3NpemUuaXNFbXB0eSgpICYmICFpc092ZXJTaXplKG1fc2l6ZSkp
OwogICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyIHsgb3RoZXIubV9waXhlbHMtPmRhdGEo
KSwgb3RoZXIubV9waXhlbHMtPnNpemUoKSB9OwotICAgICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBtX3Bp
eGVscyA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92
ZShidWZmZXIpKTsKICAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQz
Ml90Kj4oY29uc3RfY2FzdDx1aW50OF90Kj4obV9waXhlbHMtPmRhdGEoKSkpOwogICAgIH0KIApA
QCAtMjMzLDcgKzIzMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBQYWNrZWRDb2xvcjo6
QVJHQiB7IHJlc3VsdCB9LnZhbHVlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50PiBtX3BpeGVsczsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+IG1fcGl4ZWxzOwogICAgIHVpbnQzMl90KiBtX3BpeGVsc1B0ciB7IG51
bGxwdHIgfTsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBJbnRSZWN0IG1fZnJhbWVSZWN0OyAv
LyBUaGlzIHdpbGwgYWx3YXlzIGp1c3QgYmUgdGhlIGVudGlyZSBidWZmZXIgZXhjZXB0IGZvciBH
SUYgYW5kIFBORyBmcmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZURlY29kZXIuY3BwCmluZGV4IDA4NjllOTlhMDA4ODZmN2NkMTIxODZmZTMxNjFkZTA0
N2ZhNTEzNjEuLjdjNTQ5NDdmNGQ4MTQwODU1OWNjNDVjNGFjNDlhMTliOWZjODZmOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcApA
QCAtODIsNyArODIsNyBAQCB2b2lkIEltYWdlRGVjb2Rlcjo6Y2xlYXJGYWN0b3JpZXMoKQogfQog
I2VuZGlmCiAKLVJlZlB0cjxJbWFnZURlY29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKQorUmVmUHRyPEltYWdlRGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24g
YWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQogewogICAgIFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKaW5kZXggYTFhMDhhZGMx
NzVkNDRiYWE0NDJlNDRhOTRhYTk2N2EwNGY1ZjYwNy4uNmE4ZmZjYjYwZmMxMTU2ZWI4NDg3NmRl
ZmIwN2NiYzBiMTE5ODQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VEZWNvZGVyLmgKQEAgLTM3LDEyICszNywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIEltYWdlRGVjb2RlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFn
ZURlY29kZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7
CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7
CiAKICAgICBlbnVtIGNsYXNzIE1lZGlhVHlwZSB7CkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgdXNpbmcgU3VwcG9ydHNNZWRpYVR5cGVGdW5j
ID0gRnVuY3Rpb248Ym9vbChNZWRpYVR5cGUpPjsKICAgICB1c2luZyBDYW5EZWNvZGVUeXBlRnVu
YyA9IEZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nJik+OwotICAgIHVzaW5nIENyZWF0ZUltYWdl
RGVjb2RlckZ1bmMgPSBGdW5jdGlvbjxSZWZQdHI8SW1hZ2VEZWNvZGVyPihTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
PjsKKyAgICB1c2luZyBDcmVhdGVJbWFnZURlY29kZXJGdW5jID0gRnVuY3Rpb248UmVmUHRyPElt
YWdlRGVjb2Rlcj4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik+OwogCiAgICAgc3RydWN0IEltYWdl
RGVjb2RlckZhY3RvcnkgewogICAgICAgICBTdXBwb3J0c01lZGlhVHlwZUZ1bmMgc3VwcG9ydHNN
ZWRpYVR5cGU7CkBAIC0xMjksNyArMTI5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGxhdGZv
cm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0g
RGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSA9IDA7CiAKICAgICB2
aXJ0dWFsIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQWxsRGF0YVJlY2Vp
dmVkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUo
c2l6ZV90KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcAppbmRleCBkODFjNDgwMTkyODQ2ZGQ3ZTMyMWMyZGZiZmJmMWUwYzIwZGFh
NjcxLi4zMDc3NDMzMTVhNDFlY2ExYzliMmJjNzczZDA3OWVlNWQ0M2JhZjY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC03Miw3
ICs3Miw3IEBAIEltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UoKQogICAgIEFTU0VSVCgmbV9ydW5M
b29wID09ICZSdW5Mb29wOjpjdXJyZW50KCkpOwogfQogCi1ib29sIEltYWdlU291cmNlOjplbnN1
cmVEZWNvZGVyQXZhaWxhYmxlKFNoYXJlZEJ1ZmZlciogZGF0YSkKK2Jvb2wgSW1hZ2VTb3VyY2U6
OmVuc3VyZURlY29kZXJBdmFpbGFibGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsK
ICAgICBpZiAoIWRhdGEgfHwgaXNEZWNvZGVyQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtOTYsNyArOTYsNyBAQCBib29sIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZh
aWxhYmxlKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJ
bWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQordm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIWRhdGEgfHwgIWVuc3VyZURl
Y29kZXJBdmFpbGFibGUoZGF0YSkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNCwxMyArMTA0LDEz
IEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKICAgICBtX2RlY29kZXItPnNldERhdGEoKmRhdGEsIGFsbERhdGFSZWNl
aXZlZCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRh
dGEpCit2b2lkIEltYWdlU291cmNlOjpyZXNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSkKIHsKICAgICBtX2RlY29kZXIgPSBudWxscHRyOwogICAgIHNldERhdGEoZGF0YSwgaXNB
bGxEYXRhUmVjZWl2ZWQoKSk7CiB9CiAKLUVuY29kZWREYXRhU3RhdHVzIEltYWdlU291cmNlOjpk
YXRhQ2hhbmdlZChTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorRW5j
b2RlZERhdGFTdGF0dXMgSW1hZ2VTb3VyY2U6OmRhdGFDaGFuZ2VkKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIHNldERhdGEoZGF0YSwg
YWxsRGF0YVJlY2VpdmVkKTsKICAgICBjbGVhck1ldGFkYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCA4YWY1MDgwYTAwYTk5MTYw
ODBmMWYwYjI3NzA3M2MyYTg1MzQ1MjU4Li44MTRmMGUxMmViYWE0OGY4NmFjYjUyMTk3M2MzMWQ1
ZDM4MmY2ZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQml0
bWFwSW1hZ2U7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbWFnZURlY29kZXI7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBJbWFnZVNvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZVNvdXJjZT4s
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbWFnZVNvdXJjZT4gewogICAgIGZyaWVuZCBjbGFzcyBC
aXRtYXBJbWFnZTsKQEAgLTU2LDkgKzU2LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJbWFnZVNvdXJjZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSkpOwogICAgIH0KIAot
ICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KTsKLSAgICB2b2lkIHJlc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOwotICAgIEVuY29kZWRE
YXRhU3RhdHVzIGRhdGFDaGFuZ2VkKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCByZXNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogZGF0YSk7CisgICAgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGJvb2wg
aXNBbGxEYXRhUmVjZWl2ZWQoKTsKIAogICAgIHVuc2lnbmVkIGRlY29kZWRTaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9kZWNvZGVkU2l6ZTsgfQpAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIGZpcnN0RnJhbWVNZXRhZGF0YUNhY2hlSWZO
ZWVkZWQoVCYgY2FjaGVkVmFsdWUsIE1ldGFkYXRhVHlwZSwgVCAoSW1hZ2VGcmFtZTo6KmZ1bmN0
b3IpKCkgY29uc3QsIEltYWdlRnJhbWU6OkNhY2hpbmcsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Vi
c2FtcGxpbmdMZXZlbD4mID0geyB9KTsKIAotICAgIGJvb2wgZW5zdXJlRGVjb2RlckF2YWlsYWJs
ZShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlRGVjb2RlckF2YWlsYWJsZShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKICAgICBib29sIGlzRGVjb2RlckF2YWlsYWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlcjsgfQogICAgIHZvaWQgZGVzdHJveURlY29kZWRE
YXRhKHNpemVfdCBmcmFtZUNvdW50LCBzaXplX3QgZXhjbHVkZUZyYW1lKTsKICAgICB2b2lkIGRl
Y29kZWRTaXplQ2hhbmdlZChsb25nIGxvbmcgZGVjb2RlZFNpemUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmluZGV4IDNlNTllYTlkMDhkZDFjOWJlZTIzYmEz
ZjYzNWNmMzViZmMyODIyOTIuLjU3N2JkNTA4YTVjNDA5ZjRiZTllNGNmMjAyYjgxZTYxZTQ1YjQ0
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKQEAgLTMw
LDEyICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNb2RlbD4gTW9kZWw6
OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwp
CitSZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJp
bmcgbWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kZWwo
V1RGTW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUodXJsKSkpOwogfQogCi1N
b2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwg
dXJsKQorTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVU
eXBlLCBVUkwgdXJsKQogICAgIDogbV9kYXRhKFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVU
eXBlKFdURk1vdmUobWltZVR5cGUpKQogICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKaW5kZXggMDY1ODEzMzc5ZjExMjU1ZDJk
N2M3ZjZiNTAzNDQzZGM2MzBkMDRlMS4uZTZiZGUxNjZmOTQ0Y2RlN2RiMzI4YzI5NzZlYzY4MmFk
YjZkMTAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCkBAIC0z
OCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwgZmluYWwgOiBw
dWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1vZGVsKCk7CiAKICAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CkBAIC00
OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
UmVmUHRyPE1vZGVsPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0
IE1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9k
ZWwoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogCiAgICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gbV9kYXRhOwogICAgIFN0cmluZyBtX21pbWVUeXBlOwpAQCAtNjAsNyArNjAsNyBAQCB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+
c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEo
KSwgbV9kYXRhLT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CiAg
ICAgZW5jb2RlciA8PCBtX21pbWVUeXBlOwogICAgIGVuY29kZXIgPDwgbV91cmw7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
TWVkaWFSZXNvdXJjZUxvYWRlci5oCmluZGV4IDc0NTljNTg1OGQyNDg3ZWYyYzVmZDM3MTczOTg2
YjMzNzM0ZWMyOGEuLjg4NjkxZGMyNTZkNmRkNmM0NWY0NmUwMTU0OTY3NDI0NWFhMzUzMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFS
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bs
YXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBAIC01MSw4ICs1MSw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
IHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkYXRhU2Vu
dChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxv
bmcgbG9uZykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIENhY2hl
ZFJhd1Jlc291cmNlQ2xpZW50IHVzZXMgU2hhcmVkQnVmZmVyLgorICAgIHZpcnR1YWwgdm9pZCBk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIC8vIFRoaXMg
bWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgdXNl
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgogICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiBwbGF0Zm9ybSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCkgeyBkYXRhUmVjZWl2ZWQocGxhdGZvcm0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEsIGxlbmd0aCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVz
b3VyY2VFcnJvciYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCA1NDk5ZjM3YTdmMzY0NmJkNWYz
OTVhNDhiMDlkOTQxMWQ0YzliNjY0Li5kM2UxYjU4MDRlODVhOTkxMWNmMjBmY2VkMzRiZjI1NWEz
MTQ0MzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtMTMxOCw3ICsxMzE4LDcgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBvcmln
aW5hbFNhbXBsZSkKICAgICB1cGRhdGVIaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wKCk7CiB9
CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGFwcGVuZChidWZmZXItPmV4dHJhY3REYXRh
KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291
cmNlQnVmZmVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291
cmNlQnVmZmVyUHJpdmF0ZS5oCmluZGV4IGVmODZhNDczNjkzNzFjODNlODgzYjI5YmJiNmI5YWI5
NmVjYTVmMWQuLjZiN2Q5NWU1MmI5ZGYwYzgxYWYzYmUxZDZkOWYzYzhlZDM5NTQxNmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQ
cml2YXRlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgVGlt
ZVJhbmdlczsKIAogZW51bSBjbGFzcyBTb3VyY2VCdWZmZXJBcHBlbmRNb2RlIDogdWludDhfdCB7
CkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5T
b3VyY2VCdWZmZXJQcml2YXRlKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wp
ID0gMDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgYXBwZW5kKFJlZjxTaGFyZWRC
dWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBhcHBlbmQoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IGM2MTEyZTExOTRjN2M5OTBmZGMxMTRlODI5Y2ZkYjVj
NmFmNzU0YTkuLjhiMDRmOWJlOTZjMzZlMGEyNjIxODBhMjVlYTM3NDU5NjJiM2Q3ZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1G
YWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtODYsMTIgKzg2LDEy
IEBAIGNvbnN0IEF0b21TdHJpbmcmIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFt
ZSgpCiAgICAgcmV0dXJuIHNrZDsKIH0KIAotc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSlNPTiBvZiB0aGUgZm9y
bWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVm
ZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVy
Lm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5z
aXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29u
KTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKICAgICBpZiAoIXNpbmZBcnJheSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4gc2luZnM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4gc2luZnM7CiAgICAgc2luZnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaW5m
QXJyYXktPmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYgdmFsdWUgOiAqc2luZkFycmF5KSB7
CkBAIC0xMjQsNyArMTI0LDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0
cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogfQogCiB1c2luZyBTY2hl
bWVBbmRLZXlSZXN1bHQgPSBWZWN0b3I8c3RkOjpwYWlyPEZvdXJDQywgVmVjdG9yPHVpbnQ4X3Q+
Pj47Ci1zdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21T
aW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFNjaGVtZUFuZEtleVJlc3Vs
dCBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBidWZmZXJzID0gZXh0cmFjdFNpbmZEYXRhKGJ1ZmZl
cik7CiAgICAgaWYgKCFidWZmZXJzLnNpemUoKSkKQEAgLTE3MCw5ICsxNzAsOSBAQCBzdGF0aWMg
U2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpl
eHRyYWN0S2V5SURzU2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9u
YWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAg
IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBhdXRvIHJl
c3VsdHMgPSBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihidWZmZXIpOwogCiAgICAgZm9y
IChhdXRvJiByZXN1bHQgOiByZXN1bHRzKSB7CkBAIC0xODMsNyArMTgzLDcgQEAgc3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1p
bmc6OmV4dHJhY3RLZXkKICAgICByZXR1cm4ga2V5SURzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gQ29tbW9uIFNJTkYgQm94IEZvcm1hdAogICAgIFVO
VVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMTkxLDE3ICsxOTEsMTcgQEAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgU2hh
cmVkQnVmZmUKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNrZChjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
ZXh0cmFjdEtleUlEc1NrZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9u
YWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgLy8gSW4gdGhlICdza2QnIHNjaGVtZSwgdGhlIGluaXQgZGF0YSBp
cyB0aGUga2V5IElELgotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAg
IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBrZXlJRHMu
YXBwZW5kKGJ1ZmZlci5jb3B5KCkpOwogICAgIHJldHVybiBrZXlJRHM7CiB9CkBAIC0zOTMsNyAr
MzkzLDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lv
bnMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29sIENETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAog
ewogICAgIGlmICghdmFsaWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDIzLDcgKzQyMyw3IEBAIGJvb2wgQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVk
QnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlc3BvbnNl
LmNvcHkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKaW5kZXgg
YmM5M2Y2ZjZhN2JkZDAxZWZiZjU1YjYyYmRiNmE0ZTY2ZWY5MTJiMy4uMzE3YmI4ZDU3ZTg2YzA2
MjE0ZTBiNDA1OWRkZjRmODgwN2M3NGM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmgKQEAgLTcxLDE3ICs3MSwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkQW5k
SW5pdGlhbGl6ZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0
ZXMoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBv
dmVycmlkZTsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6
ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBj
b25zdCBBdG9tU3RyaW5nJiBzaW5mTmFtZSgpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNpbmYoY29u
c3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHNhbml0aXplU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBz
dGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc2tkTmFtZSgpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTa2QoY29uc3QgU2hh
cmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplU2tk
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2tkKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHNhbml0aXplU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAg
IHN0YXRpYyBjb25zdCBWZWN0b3I8Rm91ckNDPiYgdmFsaWRGYWlyUGxheVN0cmVhbWluZ1NjaGVt
ZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5kZXggMTU5YjkwY2RiNDhmN2ZlNDRiYjQ5
YmUyZWMxYzFjMmY0MzI4NjQwMC4uNTZiNThjMjVhMjg3MDlmYjM4MjIxODM5ZTU1YmFlNDVlZDkz
Y2Y2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoK
ICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpGYWlyUGxheVN0cmVhbWluZzsgfQogCiAgICAg
dm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3Rh
dGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmlj
YXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2
b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBT
dWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0
ZVNlc3Npb24oKSBmaW5hbDsKICAgICB2b2lkIHNldENsaWVudChXZWFrUHRyPENETUluc3RhbmNl
Q2xpZW50PiYmKSBmaW5hbDsKQEAgLTk0LDEwICs5NCwxMCBAQCBwdWJsaWM6CiAKICAgICBOU1VS
TCAqc3RvcmFnZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZVVSTC5nZXQoKTsgfQogICAg
IGJvb2wgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVu
dFN0YXRlQWxsb3dlZDsgfQotICAgIFNoYXJlZEJ1ZmZlciogc2VydmVyQ2VydGlmaWNhdGUoKSBj
b25zdCB7IHJldHVybiBtX3NlcnZlckNlcnRpZmljYXRlLmdldCgpOyB9CisgICAgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogc2VydmVyQ2VydGlmaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX3NlcnZl
ckNlcnRpZmljYXRlLmdldCgpOyB9CiAgICAgQVZDb250ZW50S2V5U2Vzc2lvbiogY29udGVudEtl
eVNlc3Npb24oKTsKIAotICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiB0YWtlVW5l
eHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBTaGFyZWRCdWZmZXImIGluaXREYXRhKTsKKyAgICBSZXRhaW5QdHI8QVZD
b250ZW50S2V5UmVxdWVzdD4gdGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRp
b25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpOwogCiAgICAgLy8gQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlQ2xp
ZW50CiAgICAgdm9pZCBkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgZmlu
YWw7CkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgb3V0cHV0T2JzY3VyZWRE
dWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCkgZmluYWw7CiAg
ICAgdm9pZCBleHRlcm5hbFByb3RlY3Rpb25TdGF0dXNEaWRDaGFuZ2VGb3JDb250ZW50S2V5UmVx
dWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7CiAKLSAgICB1c2luZyBLZXlzID0gVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBLZXlzID0gVmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yS2V5SURzKGNvbnN0IEtleXMmKSBjb25zdDsKICAgICBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JHcm91
cChBVkNvbnRlbnRLZXlSZXBvcnRHcm91cCopIGNvbnN0OwogICAgIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvclJlcXVlc3QoQVZDb250ZW50S2V5
UmVxdWVzdCopIGNvbnN0OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0
cjxDRE1JbnN0YW5jZUNsaWVudD4gbV9jbGllbnQ7CiAgICAgUmV0YWluUHRyPEFWQ29udGVudEtl
eVNlc3Npb24+IG1fc2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUZQU0NvbnRlbnRLZXlT
ZXNzaW9uRGVsZWdhdGU+IG1fZGVsZWdhdGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9z
ZXJ2ZXJDZXJ0aWZpY2F0ZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9z
ZXJ2ZXJDZXJ0aWZpY2F0ZTsKICAgICBib29sIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dlZCB7IHRy
dWUgfTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IG1fc3RvcmFnZVVSTDsKICAgICBWZWN0b3I8V2Vh
a1B0cjxDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+PiBtX3Nlc3Np
b25zOwpAQCAtMTUwLDggKzE1MCw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gQ0RNSW5z
dGFuY2VTZXNzaW9uCi0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBM
aWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNz
aW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lv
bkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYs
IENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sm
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgz
OTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMuLmJhNTA2MWViYjVjNWZiZTA3NGQzYTI5ZGVhNGY5MThm
YzI2MjFjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0yMTcsNyArMjE3LDcgQEAg
QUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKICAgICByZXR1cm4gQXRvbVN0cmluZyhu
c0luaXRUeXBlKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGluaXRpYWxpemF0aW9u
RGF0YUZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCogcmVxdWVzdCkKK3N0YXRpYyBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdGlhbGl6YXRpb25EYXRhRm9yUmVxdWVzdChBVkNv
bnRlbnRLZXlSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CkBAIC0yNjUsNyArMjY1LDcgQEAgQVZDb250
ZW50S2V5U2Vzc2lvbiogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmNvbnRl
bnRLZXlTZXNzaW9uKCkKICAgICByZXR1cm4gbV9zZXNzaW9uLmdldCgpOwogfQogCi1SZXRhaW5Q
dHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitSZXRhaW5Q
dHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRh
KQogewogICAgIGZvciAoYXV0byByZXF1ZXN0SXRlciA9IG1fdW5leHBlY3RlZEtleVJlcXVlc3Rz
LmJlZ2luKCk7IHJlcXVlc3RJdGVyICE9IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzLmVuZCgpOyAr
K3JlcXVlc3RJdGVyKSB7CiAgICAgICAgIGF1dG8mIHJlcXVlc3QgPSAqcmVxdWVzdEl0ZXI7CkBA
IC0zMTYsNyArMzE2LDcgQEAgcHJpdmF0ZToKICAgICBSZXNwb25zZU1hcCBtX3Jlc3BvbnNlczsK
IH07CiAKLXN0YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09O
VmFsdWUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEZh
aWwgb24gbGFyZ2UgYnVmZmVycyB3aG9zZSBzaXplIGRvZXNuJ3QgZml0IGludG8gYSAzMi1iaXQg
dW5zaWduZWQgaW50ZWdlci4KICAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci5zaXplKCk7CkBAIC0z
MjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJv
b3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAog
ICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAtMzgwLDcgKzM4
MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmluaXRpYWxp
emVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LCiAgICAgY2FsbGJhY2soaW5pdGlhbGl6ZSgp
KTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2Vy
dmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3Vj
Y2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAg
ICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogICAgIG1fc2VydmVyQ2Vy
dGlmaWNhdGUgPSBXVEZNb3ZlKHNlcnZlckNlcnRpZmljYXRlKTsKQEAgLTU4NSw4ICs1ODUsOCBA
QCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIENETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgYXV0byBzZXNzaW9uS2V5cyA9IHNlc3Npb25JbnRlcmZhY2UtPmtleUlEcygpOwotICAgICAg
ICBpZiAoYW55T2Yoc2Vzc2lvbktleXMsIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgc2Vz
c2lvbktleSkgewotICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kTWF0Y2hpbmcoWyZdKGNv
bnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBrZXlJRCkgeworICAgICAgICBpZiAoYW55T2Yoc2Vzc2lv
bktleXMsIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHNlc3Npb25LZXkp
IHsKKyAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGtleUlEKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGtleUlELmdldCgpID09IHNlc3Npb25LZXkuZ2V0KCk7CiAgICAgICAgICAgICB9KSAhPSBub3RG
b3VuZDsKICAgICAgICAgfSkpCkBAIC02NzMsNyArNjczLDcgQEAgS2V5cyBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleUlEcygpCiAgICAgcmV0dXJuIGtleUlE
czsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWlzTGljZW5z
ZVR5cGVTdXBwb3J0ZWQobGljZW5zZVR5cGUpKSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NT
SUJMRShMT0dJREVOVElGSUVSLCAiIGZhbHNlLCBsaWNlbnNlVHlwZSBcIiIsIGxpY2Vuc2VUeXBl
LCAiXCIgbm90IHN1cHBvcnRlZCIpOwpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAK
ICAgICBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2lu
Zk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENE
TVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVy
ID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAg
IGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5J
VERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNl
bmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJp
bmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNz
aFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEg
PSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5T
U3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBl
cnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzM2LDcgKzczNiw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSBsaWNlCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBpc0VxdWFsKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3N0YXRpYyBib29sIGlzRXF1YWwo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
IHsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gZGF0YS50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwog
ICAgIGlmICghYXJyYXlCdWZmZXIpCkBAIC03NTQsNyArNzU0LDcgQEAgc3RhdGljIGJvb2wgaXNF
cXVhbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAg
cmV0dXJuIHN0cmluZ09yRXhjZXB0aW9uLnJldHVyblZhbHVlKCkgPT0gdmFsdWU7CiB9CiAKLXZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3Bv
bnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9u
c2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1f
ZXhwaXJlZFNlc3Npb25zLmlzRW1wdHkoKSAmJiBpc0VxdWFsKHJlc3BvbnNlRGF0YSwgImFja25v
d2xlZGdlZCJfcykpIHsKICAgICAgICAgYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5z
ZXJ2ZXJDZXJ0aWZpY2F0ZSgpOwpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpCiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4
cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRh
LmdldCgpOwogICAgICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6
OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lv
blJlcG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50
aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBj
YWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVk
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtODU2LDcgKzg1Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpCiAgICAgICAgICAgICBhdXRvIGtleUlEID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZSgqa2V5SURWZWN0b3IpKTsKICAgICAgICAgICAgIGF1dG8gZm91bmRJbmRleCA9IG1fY3Vy
cmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maW5kTWF0Y2hpbmcoWyZdIChhdXRvJiByZXF1
ZXN0KSB7CiAgICAgICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJl
cXVlc3QuZ2V0KCkpOwotICAgICAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5n
KFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgaWQpIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4ga2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiBpZCkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWQuZ2V0KCkgPT0ga2V5SUQu
Z2V0KCk7CiAgICAgICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQ7CiAgICAgICAgICAgICB9KTsK
QEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICAgICAg
ICAgIGlmICghcGF5bG9hZFZlY3RvcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0gICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJv
Y2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNz
KCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRh
OnBheWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICAgICAgICAgIFty
ZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVz
cG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJl
c3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAg
IH0KICAgICB9IGVsc2UgewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJ
RklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2luZyByZXNwb25zZSIpOwotICAgICAgICBb
bV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRL
ZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtl
eVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0
YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAgW21fY3VycmVudFJlcXVlc3QudmFs
dWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0
QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxh
eVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQogCiAgICAgLy8gRklYTUUocmRhcjovL3By
b2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5kIGNhbGwgaXQgb25jZSBBVkNv
bnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2FsbGJhY2suCkBAIC05MzQsNyAr
OTM0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0Rh
dGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xh
c3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRl
bnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKICAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJhY2tTZXNzaW9uSWRLZXkgPSBAIlBs
YXliYWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3Ry
aW5nJgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRy
PE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAg
ICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAg
ICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50
S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVu
dGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VV
UkxdKSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UgogCiAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlm
aWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlm
aWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAg
ICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QpOwogICAgIGlmIChrZXlJ
RHMuaXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50
S2V5UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29u
dGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0
YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0
IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5n
ZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5p
bCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0g
KE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7
CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUo
d2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CkBAIC0xMTUzLDkgKzExNTMs
OSBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlk
UHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBw
SWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2
ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNy
ZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCi0gICAgdXNpbmcgUmVxdWVzdHNEYXRhID0g
VmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+
PjsKKyAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKICAgICBzdHJ1Y3QgQ2Fs
bGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxi
YWNrQWdncmVnYXRvcj4gewogICAgICAgICB1c2luZyBDYWxsYmFja0Z1bmN0aW9uID0gRnVuY3Rp
b248dm9pZChSZXF1ZXN0c0RhdGEmJik+OwogICAgICAgICBzdGF0aWMgUmVmUHRyPENhbGxiYWNr
QWdncmVnYXRvcj4gY3JlYXRlKENhbGxiYWNrRnVuY3Rpb24mJiBjb21wbGV0aW9uSGFuZGxlcikK
QEAgLTExOTYsNyArMTE5Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgICAg
ICBhdXRvIGVudHJ5ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGF1dG8m
IGtleUlEID0gcmVxdWVzdERhdGEuZmlyc3Q7CiAgICAgICAgICAgICBhdXRvJiBwYXlsb2FkID0g
cmVxdWVzdERhdGEuc2Vjb25kOwotICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQi
LCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7Cisg
ICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5n
KGtleUlELT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKICAgICAg
ICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoInBheWxvYWQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhw
YXlsb2FkLmdldCgpLmJ5dGVzLCBwYXlsb2FkLmdldCgpLmxlbmd0aCkpOwogICAgICAgICAgICAg
cmVxdWVzdEpTT04tPnB1c2hPYmplY3QoV1RGTW92ZShlbnRyeSkpOwogICAgICAgICB9CkBAIC0x
MjExLDggKzEyMTEsOCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgIEB0cnkgewogICAg
ICAgICBmb3IgKGF1dG8gcmVxdWVzdCA6IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0
cykgewogICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3Qu
Z2V0KCkpOwotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3Zl
KGtleUlEcy5maXJzdCgpKTsKLSAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBr
ZXlJRC0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKKyAgICAgICAgICAgIGF1
dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVl
c3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVu
dElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W2tleUlEID0g
V1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJB
TShlcnJvcik7CiAgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChba2V5SUQgPSBXVEZN
b3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdncmVnYXRvciksIGNvbnRlbnRLZXlS
ZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSAoKSBtdXRhYmxl
IHsKQEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QoQVZDb24KIAogICAg
IFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmlj
YXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRp
ZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmll
ciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBh
dXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpKTsK
IAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0
KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlm
aWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVl
c3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVu
dElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIo
ZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVl
c3REYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5o
CmluZGV4IDAzMzRkNjIzYjJhNzYwNWM5YmUxMjIxM2I1YWJkYmJhYzJiMDNmMTUuLjYyYjgzZmJm
ZDU3OTQwNTBlYmM5NDA2MzcwNDkwYmEyYjNlYzA4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29y
ZURlY29tcHJlc3Npb25TZXNzaW9uOwogCiBjbGFzcyBJbWFnZURlY29kZXJBVkZPYmpDIDogcHVi
bGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IGNy
ZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFn
ZURlY29kZXJBVkZPYmpDKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzdXBw
b3J0c01lZGlhVHlwZShNZWRpYVR5cGUpOwpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChz
aXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25z
dCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hy
b25vdXMpKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RXhwZWN0ZWRDb250
ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGF0
YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERh
dGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsOwogCkBAIC05NCw3ICs5NCw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFt
ZUluZm8+IGZyYW1lSW5mb3MoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBJbWFnZURlY29kZXJB
VkZPYmpDKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyQVZGT2JqQyhG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIEFWQXNzZXRUcmFjayAqZmly
c3RFbmFibGVkVHJhY2soKTsKICAgICB2b2lkIHJlYWRTYW1wbGVzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURl
Y29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1
MTI3Mjk3NDUwZTFjOWExMGNjMTRmNGJmLi4zNWM2Y2U2N2U4NWY4NmFlMTY0YzIxYTcyNjA3ZmMw
NjVlY2I1MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMubW0KQEAgLTI4OSw3ICsyODksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDU2FtcGxlKiB0b1Nh
bXBsZShJdGVyYXRvciBpdGVyKQogCiAjcHJhZ21hIG1hcmsgLSBJbWFnZURlY29kZXJBVkZPYmpD
CiAKLVJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVh
dGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlv
biBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCitSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gSW1hZ2VEZWNvZGVyQVZG
T2JqQzo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICAvLyBBVkZvdW5kYXRpb24g
bWF5IG5vdCBiZSBhdmFpbGFibGUgYXQgcnVudGltZS4KICAgICBpZiAoIUFWQXNzZXRNSU1FVHlw
ZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKQpAQCAtMzAxLDcgKzMwMSw3IEBAIFJl
ZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNv
ZGVyQVZGT2JqQyhkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKSk7CiB9CiAKLUltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9i
akMoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFn
ZURlY29kZXJBVkZPYmpDKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAg
ICA6IEltYWdlRGVjb2RlcigpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV91
dGkoV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKSkKQEAgLTMwOSw3ICszMDksNyBA
QCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNv
cmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVu
dDp0aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNz
aW9uU2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0
YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0
ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0
ZTpOT107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTpt
X2xvYWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FV
RVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNo
cm9ub3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQxLDkgKzY0MSw5IEBAIHZv
aWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcg
ZXhwZWN0ZWRDb250ZW50U2l6ZSkKICAgICBtX2xvYWRlci5nZXQoKS5leHBlY3RlZENvbnRlbnRT
aXplID0gZXhwZWN0ZWRDb250ZW50U2l6ZTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJBVkZPYmpD
OjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lk
IEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0
YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOworICAgIFtt
X2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2
ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKaW5kZXggMjAwZTFhOGY5YWZiYTBmY2JiYTViMGEzZWQ3MDRjZDM0MWI0NTBkNi4uYzlk
OWIyYTk2ODViMDFlOTFhYWEwMGMwZTAwMzA3NzM4NTY5MTQyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaApAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVBVkY7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFTZWxlY3Rpb25H
cm91cEFWRk9iakM7CiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFZpZGVvTGF5ZXJN
YW5hZ2VyT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzsKIGNsYXNzIFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlcjsKQEAgLTQyNiw3ICs0MjYsNyBAQCBwcml2YXRlOgogICAgIG11
dGFibGUgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbV93YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRU
aW1lOwogICAgIG11dGFibGUgaW50IG1fdGltZUNvbnRyb2xTdGF0dXNBdENhY2hlZEN1cnJlbnRU
aW1lIHsgMCB9OwogICAgIG11dGFibGUgZG91YmxlIG1fcmVxdWVzdGVkUmF0ZUF0Q2FjaGVkQ3Vy
cmVudFRpbWUgeyAwIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKICAgICBkb3VibGUgbV9jYWNo
ZWRSYXRlIHsgMCB9OwogICAgIGJvb2wgbV9yZXF1ZXN0ZWRQbGF5aW5nIHsgZmFsc2UgfTsKICAg
ICBkb3VibGUgbV9yZXF1ZXN0ZWRSYXRlIHsgMS4wIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpp
bmRleCBkMThhODVhNzk0ZjUyM2Y5NDkxMmUyN2YwOGI3Y2NiZTg5M2M4ZWQwLi5iMWM2MDc5YzY0
ODcwZjg4ZTM1YzgwODExYTViMThiZGExYjdmNjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
QEAgLTI3OTIsNyArMjc5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jCiAgICAgaWYgKCFt
X2tleUlEIHx8ICFtX2NkbUluc3RhbmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGlu
c3RhbmNlU2Vzc2lvbiA9IG1fY2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMoVmVjdG9yPFJl
ZjxTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOworICAgIGF1dG8gaW5zdGFuY2VTZXNz
aW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOwogICAgIGlmICghaW5zdGFuY2VTZXNz
aW9uKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGQ5NjBhZmRjYTIxNGJmYTQ0MGVlYTIw
ODgzYmNhOTEzMmUyMmY5YTAuLjRkZDZiOTFhOTQ4MzE2OWEwMjM2ODg4ZDBlNGQ4MmZmYjgzNjY2
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbQpAQCAtMjEzLDcgKzIxMyw3IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6
On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKICAgICBhdXRv
IHNoYXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFrZVNoYXJlZEJ1ZmZlcigpOwotICAgIGF1dG8gbnNE
YXRhID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBhdXRvIG5zRGF0YSA9IHNo
YXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYgKG1f
cGFyc2VyU3RhdGVXYXNSZXNldCB8fCBmbGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0
eSkKICAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhG
bGFnczpBVlN0cmVhbURhdGFQYXJzZXJTdHJlYW1EYXRhRGlzY29udGludWl0eV07CiAgICAgZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLmgKaW5kZXggMDM0MjBmMTM4MzY0ZmFjMjA5MWUxMDRkMTM2ZmYzOGExZmI5ZmUyMi4uZWFk
MDgzYTZjYzdlNzM2YjQyMTcxMGZhYzM5MmEwN2RmZjkyYmU1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC03Myw3ICs3
Myw3IEBAIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzsKIGNsYXNzIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQgewogcHVibGljOgpAQCAtMTUzLDcgKzE1Myw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZChSZWY8TWVk
aWFTYW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsK
IAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCi0gICAgdm9pZCBhcHBlbmQo
UmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBhcHBlbmQoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWJvcnQoKSBmaW5hbDsKICAgICB2
b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFT
b3VyY2UoKSBmaW5hbDsKQEAgLTIyMSw3ICsyMjEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQogICAg
IFJlZlB0cjxDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4gbV9jZG1JbnN0YW5j
ZTsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IG1fa2V5SURzOworICAgIFZlY3RvcjxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1fa2V5SURzOwogI2VuZGlmCiAKICAgICBzdGQ6
Om9wdGlvbmFsPEZsb2F0U2l6ZT4gbV9jYWNoZWRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCAzYTI4NjdhMWFj
MjQzYmI5YzkzYzlkNmI3MGNhNTZiMDI5NDhmYzljLi4yNGFlMGUxNDA2MDE5MTQzZmFkNGYxNTI5
ZTY4ZWQ0OWI0MTY1M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxp
emF0aW9uRGF0YUZvCiAgICAgVU5VU0VEX1BBUkFNKGhhc1Nlc3Npb25TZW1hcGhvcmUpOwogfQog
Ci12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCAiZGF0YSBsZW5ndGggPSAiLCBkYXRhLT5zaXplKCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYwZDhlNzEx
MzJmNmMyODdhMmU2MjlhNGI4OGE1MzlkZmQ1M2NiZTIuLjBlZmVlYWVmNWIyZDcxYmM2ZDY3MDRk
ZDFiOTc1YWNiYWUxMTNiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM7CiBjbGFzcyBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2Fk
ZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcj4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjUsNyArNjUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxv
YWRGaW5pc2hlZCgpOwotICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJl
ZEJ1ZmZlciYpOworICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMqIG1fcGFyZW50OwogICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5n
UmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggYTIyYTk5N2IxMTA3OWQ0NjU4NmFhNjQ4NTYx
YmJmNzJhNmYyNDdmMC4uZjkyMWYzZGEwZTY5YjMzOTk3N2M5ZTNlNDk2NjdhMjhmNWU5NWNiZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ci5tbQpAQCAtMTU2LDE0ICsxNTYsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5z
aWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYp
IGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRy
b2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZhaWxl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmlu
YWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZp
bmlzaGVkKCk7IH0KIAogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAg
ICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVy
OwogfTsKIAogV2Vha1B0cjxQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IFBsYXRmb3JtUmVz
b3VyY2VNZWRpYUxvYWRlcjo6Y3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50
LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCkKQEAgLTIxMSwxMyArMjExLDEwIEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlh
TG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQog
Ci12b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBQbGF0Zm9y
bVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgaWYgKCFtX2J1
ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Ci0gICAgZWxzZQotICAg
ICAgICBtX2J1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgbV9wYXJlbnQubmV3
RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7CisgICAgbV9idWZmZXIuYXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVm
ZmVyKCptX2J1ZmZlci5nZXQoKSk7CiB9CiAKIGNsYXNzIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9h
ZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyPiB7
CkBAIC0zODgsNyArMzg1LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRG
aW5pc2hlZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEp
Cit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVm
ZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVZBc3NldFJl
c291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRh
UmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaAppbmRleCBkYjQ1N2E4MWQzZWU4MjkxYjkwNWU5YmE3N2MxZTJhZjMwOWUwY2IyLi45NDE5
YmNlYTM4ZGJmOGQ2NDkyZjY4MDFkOWEyMTU2MjM2NmEyYzZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oCkBAIC0zMSwxMCArMzEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJl
Y18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBj
bGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0
aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgc3Ry
dWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogcHVi
bGljOgotICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSwgU2hhcmVkQnVmZmVyJik7
CisgICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9GYWNlLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CiAgICAgfkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKSA9IGRlZmF1bHQ7CiAgICAgRm9u
dFBsYXRmb3JtRGF0YSBmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJv
b2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKICAgICBz
dGF0aWMgYm9vbCBzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRl
eCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUwYzA2Li5iNmQzZWIzNjMxMTI0
NDYxM2IzODAzZjJmM2QyNGQzMDg3ZWEyNGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yNDQsMTYgKzI0
NCwxNiBAQCBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8s
IHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sCiAKIHZvaWQgc2hhcmVkQnVmZmVyUmVsZWFz
ZSh2b2lkKiBpbmZvKQogewotICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGlj
X2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
c2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KGluZm8p
OwogICAgIHNoYXJlZEJ1ZmZlci0+ZGVyZWYoKTsKIH0KICNlbmRpZgogCi1JbWFnZURlY29kZXJD
Rzo6SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBp
ZiAoZGF0YS5zaXplKCkgPj0gMzIpCi0gICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VT
b3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwg
bnVsbHB0cikpOworICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlw
ZVdpdGhEYXRhKGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51
bGxwdHIsIG51bGxwdHIpKTsKICAgICAKICAgICBpZiAodXRpSGludCkgewogICAgICAgICBjb25z
dCB2b2lkKiBrZXkgPSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsKQEAgLTU2Miwy
MyArNTYyLDI0IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpCiAgICAgcmV0dXJuIG1hc2tlZElt
YWdlID8gbWFza2VkSW1hZ2UgOiBpbWFnZTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJDRzo6c2V0
RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFn
ZURlY29kZXJDRzo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKIHsKICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gYWxsRGF0YVJlY2Vp
dmVkOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5z
aWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQg
dGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KLSAgICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVy
J3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhp
cywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCi0gICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhl
IFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29k
ZXIuZ2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7Cisg
ICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJ3Mga25vd2xlZGdlLgorICAgIC8vIFdlIHVzZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
J3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhp
cywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCisgICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhl
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9u
YXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgp
LmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UKLSAgICAvLyBDcmVhdGUgYSBDR0RhdGFQ
cm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKLSAgICAv
LyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUg
R2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCisgICAgLy8gQ3JlYXRlIGEg
Q0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KKyAgICBh
dXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNvbnRpZ3Vv
dXNEYXRhLmdldCgpLnJlZigpOworICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9u
IGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0byBsb2Nr
IGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwg
d2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50
ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJvdmlkZXJD
YWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hh
cmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0
YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0YSwgZGF0
YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92
aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVj
dChjb250aWd1b3VzRGF0YS5wdHIoKSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykp
OwogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNvZGVyLmdl
dCgpLCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rl
ckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5oCmluZGV4IDk3NDA3MzZhMjFhYzk5OGFiMDVmMWM5YjRmNWIxNjc1ZTQ0ZDJjOTEuLmEwYWMx
YzJmYmVlNTI3ZTVhYjExMTQ1NTgxMmJkYjczNjNhMDU1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApAQCAtMzIsOSAr
MzIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbWFnZURlY29kZXJDRyBmaW5hbCA6
IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIEltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBJbWFnZURlY29kZXJDRyhGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pOwogCi0gICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJDRz4gY3JlYXRlKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIHN0YXRpYyBSZWY8SW1hZ2VE
ZWNvZGVyQ0c+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlv
biBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURl
Y29kZXJDRyhkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsK
ICAgICB9CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIg
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2Ft
cGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0
aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERh
dGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQg
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZp
bmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6
ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCAzMWMyN2MwNjliMmIzYzcwMzcz
MmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlkNjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYy
ZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
REZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9j
dW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJ
bWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRl
clJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRh
dGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQ
cm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdp
dGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkp
OwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlk
ZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCmlu
ZGV4IGY3NDdkODBmYjYxZDMwZmM1MDIyZTY4MmQ2MzU2MTMzZDNjYTY5N2EuLmM4YTgwNjEyMjA1
M2Y2NDhhZGRiMDJhYzM4OWNlNzE0MzY4ZGJiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNw
cApAQCAtODAsNyArODAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0TWluaW11bUF1
ZGlvU2FtcGxlRHVyYXRpb24oZmxvYXQpCiB7CiB9CiAKLVNvdXJjZUJ1ZmZlclBhcnNlcjo6U2Vn
bWVudDo6U2VnbWVudChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK1NvdXJjZUJ1ZmZlclBh
cnNlcjo6U2VnbWVudDo6U2VnbWVudChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShidWZmZXIpKQogewogfQpAQCAtMTAxLDcgKzEw
MSw3IEBAIHNpemVfdCBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnNpemUoKSBjb25zdAog
ICAgICAgICAgICAgcmV0dXJuIGNsYW1wVG88c2l6ZV90PihNVFBsdWdpbkJ5dGVTb3VyY2VHZXRM
ZW5ndGgoYnl0ZVNvdXJjZS5nZXQoKSkpOwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAgIFtd
KGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgICAgIFtdKGNvbnN0IFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gYnVmZmVyLT5zaXplKCk7CiAgICAgICAgIH0KQEAgLTEyNSw3ICsxMjUsNyBAQCBhdXRv
IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6cmVhZChzaXplX3QgcG9zaXRpb24sIHNpemVf
dCBzaXplVG9SZWFkLCB1aW50OAogICAgICAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVhZEVy
cm9yPiB7IFJlYWRFcnJvcjo6RmF0YWxFcnJvciB9OwogICAgICAgICB9LAogI2VuZGlmCi0gICAg
ICAgIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZWFkUmVzdWx0Cisg
ICAgICAgIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4g
UmVhZFJlc3VsdAogICAgICAgICB7CiAgICAgICAgICAgICBidWZmZXItPmNvcHlUbyhkZXN0aW5h
dGlvbiwgcG9zaXRpb24sIHNpemVUb1JlYWQpOwogICAgICAgICAgICAgcmV0dXJuIHNpemVUb1Jl
YWQ7CkBAIC0xMzMsNyArMTMzLDcgQEAgYXV0byBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6
OnJlYWQoc2l6ZV90IHBvc2l0aW9uLCBzaXplX3Qgc2l6ZVRvUmVhZCwgdWludDgKICAgICApOwog
fQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VT
aGFyZWRCdWZmZXIoKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBh
cnNlcjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1ZmZlcigpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dp
dGNoT24obV9zZWdtZW50LAogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCkBAIC0x
NDIsMjggKzE0MiwyOCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNl
Z21lbnQ6OnRha2VTaGFyZWRCdWZmZXIoKQogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZl
Y3RvcihzaXplKCkpOwogICAgICAgICAgICAgYXV0byByZWFkUmVzdWx0ID0gcmVhZCgwLCB2ZWN0
b3Iuc2l6ZSgpLCB2ZWN0b3IuZGF0YSgpKTsKICAgICAgICAgICAgIGlmICghcmVhZFJlc3VsdC5o
YXNfdmFsdWUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CiAgICAgICAgICAgICB2ZWN0b3Iuc2hyaW5rKHJlYWRSZXN1bHQudmFsdWUoKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKTsKKyAg
ICAgICAgICAgIHJldHVybiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2
ZWN0b3IpKTsKICAgICAgICAgfSwKICNlbmRpZgotICAgICAgICBbJl0oUmVmPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikKKyAgICAgICAgWyZdKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShidWZmZXIs
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFu
Z2UoYnVmZmVyLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7CiAgICAgICAgIH0K
ICAgICApOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNl
Z21lbnQ6OmdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpnZXRTaGFyZWRCdWZmZXIoKSBjb25z
dAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc2VnbWVudCwKICNpZiBIQVZFKE1UX1BM
VUdJTl9GT1JNQVRfUkVBREVSKQotICAgICAgICBbJl0oY29uc3QgUmV0YWluUHRyPE1UUGx1Z2lu
Qnl0ZVNvdXJjZVJlZj4mKSAtPiBSZWZQdHI8U2hhcmVkQnVmZmVyPgorICAgICAgICBbJl0oY29u
c3QgUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mKSAtPiBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgIH0sCiAjZW5kaWYKLSAgICAgICAgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIC0+IFJlZlB0cjxTaGFyZWRCdWZmZXI+CisgICAgICAgIFsmXShjb25zdCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBidWZmZXIucHRyKCk7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKaW5kZXggNTIwYjUyMDdmYzI3MWQ3OTgxNTMzZmIx
NGQyMzE1NTk0YTg4ODM2NS4uNzI5N2E3OTE0YTc5YWRmNjQyZGM2YjE2YjM2ZTYwZjljZDAyOWYw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlwZTsKIGNsYXNzIE1lZGlhU2FtcGxlOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VC
Q09SRV9FWFBPUlQgU291cmNlQnVmZmVyUGFyc2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFNvdXJjZUJ1ZmZlclBhcnNlcj4gewogcHVibGljOgpAQCAtNjksMTEgKzY5LDExIEBAIHB1
YmxpYzoKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVSKQogICAgICAgICBTZWdtZW50
KFJldGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VSZWY+JiYpOwogI2VuZGlmCi0gICAgICAgIFNl
Z21lbnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIFNlZ21lbnQoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgICAgICBTZWdtZW50KFNlZ21lbnQmJikgPSBkZWZhdWx0
OwotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiB0YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAgICAg
IC8vIFdpbGwgcmV0dXJuIG51bGxwdHIgaWYgU2VnbWVudCdzIGJhY2tlbmQgaXNuJ3QgYSBTaGFy
ZWRCdWZmZXIuCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGdldFNoYXJlZEJ1ZmZlcigp
IGNvbnN0OworICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZVNoYXJlZEJ1
ZmZlcigpOworICAgICAgICAvLyBXaWxsIHJldHVybiBudWxscHRyIGlmIFNlZ21lbnQncyBiYWNr
ZW5kIGlzbid0IGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgICAgIHNp
emVfdCBzaXplKCkgY29uc3Q7CiAKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogI2lmIEhBVkUo
TVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAgICAgICBSZXRhaW5QdHI8TVRQbHVnaW5C
eXRlU291cmNlUmVmPiwKICNlbmRpZgotICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4KKyAg
ICAgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPgogICAgICAgICA+IG1fc2VnbWVu
dDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDM1OWVk
YjQxNWZkMzc1ZWQ4MmI3YjRhNDlmMTFlNGM4ZmQ2YzdkNmIuLjliYzE4OTQxOTg2MzBiYWQ4ZDdj
YmQwYjNhNWIyOGU0NmU5ZWZlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
CkBAIC0zNjcsNyArMzY3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgRnJlZURhdGFT
ZWdtZW50KHZvaWQqIHJlZmNvbiwgdm9pZCosIHNpemVfdCkKICAgICB7Ci0gICAgICAgIGF1dG8q
IGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KHJl
ZmNvbik7CisgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21l
bnQqPihyZWZjb24pOwogICAgICAgICBidWZmZXItPmRlcmVmKCk7CiAgICAgfQogCkBAIC0zODgs
NyArMzg4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGFkdmFuY2VUb05leHRTZWdtZW50
KCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBjdXJyZW50U2VnbWVudC5nZXRT
aGFyZWRCdWZmZXIoKTsKKyAgICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBzaGFyZWRCdWZmZXIgPSBjdXJyZW50U2VnbWVudC5nZXRTaGFyZWRCdWZmZXIoKTsKICAgICAg
ICAgICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3QmxvY2tCdWZmZXIgPSBudWxscHRyOwogICAgICAg
ICAgICAgdWludDY0X3QgbGFzdFJlYWQgPSAwOwogICAgICAgICAgICAgc2l6ZV90IGRlc3RpbmF0
aW9uT2Zmc2V0ID0gbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CkBAIC00MDksNyArNDA5LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uT2Zmc2V0ID0gMDsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHNoYXJlZEJ1ZmZlci0+aGFzT25l
U2VnbWVudCgpLCAiQ2FuIG9ubHkgZGVhbCB3aXRoIHNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGEg
c2luZ2xlIERhdGFTZWdtZW50Iik7Ci0gICAgICAgICAgICAgICAgLy8gQSBTaGFyZWRCdWZmZXIg
ZG9lc24ndCBoYXZlIHRocmVhZC1zYWZlIHJlZmNvdW50aW5nLCBhcyBzdWNoIHdlIG11c3Qga2Vl
cCBhIHJlZmVyZW5jZSB0byB0aGUgRGF0YVNlZ21lbnQgaW5zdGVhZC4KKyAgICAgICAgICAgICAg
ICAvLyBBIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgZG9lc24ndCBoYXZlIHRocmVhZC1zYWZlIHJl
ZmNvdW50aW5nLCBhcyBzdWNoIHdlIG11c3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgRGF0YVNl
Z21lbnQgaW5zdGVhZC4KICAgICAgICAgICAgICAgICAvLyBUT0RPOiBjb3VsZCB3ZSBvbmx5IGNy
ZWF0ZSBhIG5ldyBDTUJsb2NrQnVmZmVyIGlmIHRoZSBiYWNrZW5kIG1lbW9yeSBjaGFuZ2VkIHNp
bmNlIHRoZSBwcmV2aW91cyBvbmU/CiAgICAgICAgICAgICAgICAgYXV0byBmaXJzdFNlZ21lbnQg
PSBzaGFyZWRCdWZmZXItPmJlZ2luKCktPnNlZ21lbnQ7CiAgICAgICAgICAgICAgICAgc2l6ZV90
IGNhblJlYWQgPSBzdGQ6Om1pbjxzaXplX3Q+KG51bVRvUmVhZCwgZmlyc3RTZWdtZW50LT5zaXpl
KCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IGU4MDUwOWVjY2EwNWQyY2M4ZWQxMDY2MDcwNDFmNWNj
Y2MzZTM3OTQuLjYzOGU2ODM5N2EyYjY2OTZiMmYxZWRlMjRlYThmZGI5MDYyNmNlZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCkBAIC03MjksNyArNzI5
LDcgQEAgRGlkQ2hhbmdlSXRlbUJ1ZmZlciBJdGVtQnVmZmVyOjpzd2FwV3JpdGFibGVCdWZmZXJJ
Zk5lZWRlZChzaXplX3QgbnVtYmVyT2ZCeXRlcykKIHZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IERpc3BsYXlMaXN0SXRlbSYgdGVtcG9yYXJ5SXRlbSkKIHsKICAgICBhdXRvIHJlcXVpcmVk
U2l6ZUZvckl0ZW0gPSBtX3dyaXRpbmdDbGllbnQtPnJlcXVpcmVkU2l6ZUZvckl0ZW0odGVtcG9y
YXJ5SXRlbSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3V0T2ZMaW5lSXRlbTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gb3V0T2ZMaW5lSXRlbTsKICAgICBpZiAoIXJl
cXVpcmVkU2l6ZUZvckl0ZW0pIHsKICAgICAgICAgb3V0T2ZMaW5lSXRlbSA9IG1fd3JpdGluZ0Ns
aWVudC0+ZW5jb2RlSXRlbU91dE9mTGluZSh0ZW1wb3JhcnlJdGVtKTsKICAgICAgICAgaWYgKCFv
dXRPZkxpbmVJdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCmlu
ZGV4IGM4NzMxOTgyZWY4MzkzMWJiYWUzMWI3ODY1MGFjMGRhMjBhMDVmYzUuLmIzMWJjNWZkNGU5
MjE0YjE1YTM3NjFmYmU5OGQ2MGNlYjQ3YTk4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0Cisg
ICAgdmlydHVhbCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9m
TGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQpAQCAtMTY4LDcgKzE2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB3aXRo
IHBhZGRpbmcgYmV0d2VlbiBlYWNoIGl0ZW0gdG8gZW5zdXJlIHRoYXQgYWxsIGl0ZW1zIGFyZSBh
bGlnbmVkIHRvIDggYnl0ZXMuCiAgICAgLy8KICAgICAvLyBJZiBhIHdyaXRpbmcgY2xpZW50IGlz
IHByZXNlbnQgYW5kIHJlcXVpcmVzIGN1c3RvbSBlbmNvZGluZyBmb3IgdGhlIGdpdmVuIGl0ZW0g
dHlwZSBULCB0aGUKLSAgICAvLyBpdGVtIGJ1ZmZlciB3aWxsIGFzayB0aGUgY2xpZW50IGZvciBh
biBvcGFxdWUgU2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgZW5jb2RlZCBkYXRhIGZvciB0aGUKKyAg
ICAvLyBpdGVtIGJ1ZmZlciB3aWxsIGFzayB0aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGVuY29kZWQgZGF0YSBmb3IgdGhlCiAgICAgLy8g
aXRlbS4gVGhpcyBlbmNvZGVkIGRhdGEgaXMgdGhlbiBhcHBlbmRlZCB0byB0aGUgaXRlbSBidWZm
ZXIsIHdpdGggcGFkZGluZyB0byBlbnN1cmUgdGhhdAogICAgIC8vIHRoZSBzdGFydCBhbmQgZW5k
IG9mIHRoaXMgZGF0YSBhcmUgYWxpZ25lZCB0byA4IGJ5dGVzLCBpZiBuZWNlc3NhcnkuIFdoZW4g
Y29uc3VtaW5nIGVuY29kZWQKICAgICAvLyBpdGVtIGRhdGEsIGEgY29ycmVzcG9uZGluZyBJdGVt
QnVmZmVyUmVhZGluZ0NsaWVudCB3aWxsIGJlIHJlcXVpcmVkIHRvIGNvbnZlcnQgdGhpcyBlbmNv
ZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNw
cAppbmRleCA1MDZiNGRkNjJkNTVhNTZhMjc4YzMwY2NhYjJkMTkxMTBmMjQxZWVjLi4yYjQ0M2Zi
YmVkMmMxZmRlNDhiY2RlOWNiZTQwOTUzNDk3ZmRlOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJl
ZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyB2b2lkIHJlbGVhc2VDdXN0b21Gb250RGF0YSh2
b2lkKiBkYXRhKQogewotICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJl
ZigpOworICAgIHN0YXRpY19jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVy
ZWYoKTsKIH0KIAogc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBmcmVlVHlwZUZhY2VLZXk7
CiAKLUZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFj
ZSBmcmVlVHlwZUZhY2UsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9GYWNlIGZyZWVUeXBlRmFjZSwgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIDogbV9mb250RmFjZShhZG9wdFJlZihjYWly
b19mdF9mb250X2ZhY2VfY3JlYXRlX2Zvcl9mdF9mYWNlKGZyZWVUeXBlRmFjZSwgRlRfTE9BRF9E
RUZBVUxUKSkpCiB7CiAgICAgYnVmZmVyLnJlZigpOyAvLyBUaGlzIGlzIGJhbGFuY2VkIGJ5IHRo
ZSBidWZmZXItPmRlcmVmKCkgaW4gcmVsZWFzZUN1c3RvbUZvbnREYXRhLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRleCA5YWQxOWI4NzZiMjdlNjBkNGZiYTUwMzBl
NjVmODFlN2NhOGE1MDY5Li5kZmJjNTgwZmI4ZTliMzA5MzZjY2EwOGJiODhiNDljMmJiNjUzYWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtODEsMTIgKzgx
LDEyIEBAIEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRl
cikKICAgICByZXR1cm4gKEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZSopaXRlci0+c2Vjb25k
LmdldCgpOwogfQogCi1SZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBJbWFnZURlY29kZXJH
U3RyZWFtZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBn
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+
IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJHU3RyZWFtZXIoZGF0YSwgbWltZVR5
cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogfQogCi1JbWFn
ZURlY29kZXJHU3RyZWFtZXI6OkltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXImIGRh
dGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVy
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICA6IG1fbWltZVR5cGUo
bWltZVR5cGUpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwpAQCAtMTk5
LDcgKzE5OSw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCkKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wpCiB7CiAgICAgcHVzaEVuY29kZWREYXRhKGRhdGEp
OwogfQpAQCAtNDI2LDEwICs0MjYsMTEgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKICAgICBy
ZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OlVua25vd247CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2
b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX2VvcyA9IGZhbHNlOwotICAgIGF1dG8gdGhy
ZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRh
ID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAgICBhdXRvIHRocmVh
ZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9
IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKICAgICAg
ICAgbV9pbm5lckRlY29kZXIgPSBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6
Y3JlYXRlKCp0aGlzLCBkYXRhLCBzaXplKTsKICAgICAgICAgbV9pbm5lckRlY29kZXItPnJ1bigp
OwogICAgIH0sIFRocmVhZFR5cGU6OkdyYXBoaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuaAppbmRleCA2NmYzMzcyODQ2YTRkZjg3NGY0MjBkYjY1NGU2ODljOWU0M2IwYzUy
Li5kM2VmNmE0NWNkN2RiZGZjMzEyMGVhMjNmOGRlYjNjNTk5NzFhZTk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIEltYWdlRGVj
b2RlckdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2RlckdT
dHJlYW1lcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFt
ZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwotICAgIEltYWdlRGVjb2RlckdTdHJl
YW1lcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7Cisg
ICAgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlckdTdHJlYW1lcigpID0gZGVmYXVsdDsKIAogICAg
IHN0YXRpYyBib29sIHN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSB0eXBlKSB7IHJldHVybiB0
eXBlID09IE1lZGlhVHlwZTo6VmlkZW87IH0KQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAg
IFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1w
bGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRp
b25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7
CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0K
LSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZp
bmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2VvczsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNp
emVfdCkgZmluYWw7CiAKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAg
ICB2b2lkIGhhbmRsZVNhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4mJik7Ci0gICAgdm9pZCBwdXNo
RW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBwdXNoRW5jb2RlZERh
dGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyU2FtcGxlKiBzYW1wbGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNzk3OTQ4
MGY5MWM1OTdhYTlmOTAwOTdjMTg4MzJjNmExNWMzMmNlOC4uYjMyNGNmMTE0NjQ3YjMzNzVlNmE0
NWJmYWIxMDNlMGEyOTBmYjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM2OTIsNyArMzY5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChJbml0RGF0YSYm
IGluaXRECiAKICAgICAgICAgR1NUX0RFQlVHKCJzY2hlZHVsaW5nIGluaXRpYWxpemF0aW9uRGF0
YUVuY291bnRlcmVkICVzIGV2ZW50IG9mIHNpemUgJXp1IiwgaW5pdERhdGEucGF5bG9hZENvbnRh
aW5lclR5cGUoKS51dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgaW5pdERhdGEucGF5bG9hZCgp
LT5zaXplKCkpOwotICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpKSwgaW5pdERh
dGEucGF5bG9hZCgpLT5zaXplKCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogICAg
ICAgICB3ZWFrVGhpcy0+bV9wbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGlu
aXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCksIGluaXREYXRhLnBheWxvYWQoKS0+dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJT
b3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDVkODZmYjFhZjQ4N2MwMjg5ZTAwMTI1NTk2NWMzMWRj
ZGE5NzM0MjYuLjkzMDE5MDk5NDViNGEyM2Q2Njc4MmYzNTBiNTZlNDQ3OWY4MDI2ZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3
IEBAIHByaXZhdGU6CiAKICAgICAvLyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgdmlydHVh
bCBtZXRob2RzLgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91
bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENo
ZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpA
QCAtMTA5Myw3ICsxMDkzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6
cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb24KICAgICBjb21wbGV0
aW9uSGFuZGxlcihTaG91bGRDb250aW51ZVBvbGljeUNoZWNrOjpZZXMpOwogfQogCi12b2lkIENh
Y2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNl
U3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCmluZGV4IDY5MmE5OTZkMTlj
MjRlZmQ5YTQ4NTUyMzczYTU2NzliNTJlMWVmMWMuLjM0OWJmZGNhYWQ2YzdkN2Y4ZDVhZGEwYTE3
MjE5ZmQ5ZTcwNjI2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCkBAIC02
MiwxMSArNjIsMTEgQEAgcHVibGljOgogICAgIENETVByb3h5Q2xlYXJLZXkoKSA9IGRlZmF1bHQ7
CiAgICAgdmlydHVhbCB+Q0RNUHJveHlDbGVhcktleSgpOwogCi0gICAgLy8gRklYTUU6IFRoZXJl
J3MgYSBsYWNrIG9mIGNvbnNpc3RlbmN5IGJldHdlZW4gU2hhcmVkQnVmZmVycywKKyAgICAvLyBG
SVhNRTogVGhlcmUncyBhIGxhY2sgb2YgY29uc2lzdGVuY3kgYmV0d2VlbiBGcmFnbWVudGVkU2hh
cmVkQnVmZmVycywKICAgICAvLyBWZWN0b3I8Y2hhcj4ncyBhbmQge3VpbnQ4X3QqLHNpemVfdH0g
aWRpb21zIGZvciByZXByZXNlbnRpbmcgYSBjaHVuayBvZgotICAgIC8vIGJ5dGVzLiBGaXggdGhh
dCBzb21laG93LiBOb3RlIFNoYXJlZEJ1ZmZlcnMgYXJlIGRhbmdlcm91cyBzaW5jZQorICAgIC8v
IGJ5dGVzLiBGaXggdGhhdCBzb21laG93LiBOb3RlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJzIGFy
ZSBkYW5nZXJvdXMgc2luY2UKICAgICAvLyB0aGV5J3JlIG5vdCB0aHJlYWQtc2FmZSBhbmQgdGhp
cyBjbGFzcyBtdXN0IG1haW50YWluCi0gICAgLy8gdGhyZWFkLXNhZmV0eSwgYnV0IG1heWJlIFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQgY291bGQgYmUKKyAgICAvLyB0aHJlYWQtc2FmZXR5LCBi
dXQgbWF5YmUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQgY291bGQgYmUKICAg
ICAvLyBtYWRlIHRvIHdvcmssIGhvd2V2ZXIgdGhhdCBoYXMgemVybyBoZWxwZXJzIGZvciBkcm9w
cGluZyBpbnRvCiAgICAgLy8gaXRlcmF0b3ItYXdhcmUgLyBjb21wYXJhdG9yLWF3YXJlIGNvbnRh
aW5lcnMuLi4KICAgICBzdHJ1Y3QgY2VuY0RlY3J5cHRDb250ZXh0IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRo
dW5kZXIuY3BwCmluZGV4IDJlZmEwNDM2MGU4ODQ4MzgwNjE0NGMzZDcxZGU2M2FkN2I0MmI1NjEu
LmMzODkxNmU3ZDA1OWU4ODliNWM4OGVlYjA5ZTBmNGNmYzAzYzFkYjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9D
RE1UaHVuZGVyLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6
OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENE
TVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJp
dmF0ZVRodW5kZXI6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAg
ICAvLyBWYWxpZGF0ZSB0aGUgaW5pdERhdGEgYnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0IGluIGtl
eWlkcyBjYXNlLgogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0
YVR5cGUsICJrZXlpZHMiKSAmJiBDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdChpbml0RGF0
YSkpCkBAIC0yMzcsNyArMjM3LDcgQEAgYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFMKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVUaHVuZGVyOjpz
YW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZVRodW5kZXI6OnNhbml0aXplUmVz
cG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKIH0KQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIENE
TUluc3RhbmNlVGh1bmRlcjo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYQogICAgIGNhbGxiYWNrKFN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgQ0RN
SW5zdGFuY2VUaHVuZGVyOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYm
IGNlcnRpZmljYXRlLCAgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3Rh
bmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgY2VydGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBP
cGVuQ0RNRXJyb3IgZXJyb3IgPSBvcGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2NlcnRpZmljYXRl
KG1fdGh1bmRlclN5c3RlbS5nZXQoKSwgY29uc3RfY2FzdDx1aW50OF90Kj4oY2VydGlmaWNhdGUt
PmRhdGEoKSksCiAgICAgICAgIGNlcnRpZmljYXRlLT5zaXplKCkpOwpAQCAtMzI2LDcgKzMyNiw3
IEBAIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNlVGh1bmRlcjo6Y3JlYXRl
U2Vzc2lvbigpCiBjbGFzcyBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgewogCiBwdWJsaWM6Ci0gICAg
UGFyc2VkUmVzcG9uc2VNZXNzYWdlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
CisgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlKGNvbnN0IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKQogICAgIHsKICAgICAgICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+
c2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzU0LDggKzM1NCw4IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQogICAgIGJv
b2wgaGFzUGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fcGF5bG9h
ZCk7IH0KLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0JiB7IEFT
U0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KLSAgICBSZWY8U2hh
cmVkQnVmZmVyPiYgcGF5bG9hZCgpICYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5
bG9hZC52YWx1ZSgpOyB9CisgICAgY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBw
YXlsb2FkKCkgY29uc3QmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxvYWQudmFs
dWUoKTsgfQorICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpICYgeyBB
U1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CiAgICAgYm9vbCBo
YXNUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlLmhhc192YWx1ZSgpOyB9CiAgICAgV2ViQ29y
ZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSB0eXBlKCkgY29uc3QgeyBBU1NFUlQobV90eXBlKTsgcmV0
dXJuIG1fdHlwZS52YWx1ZSgpOyB9CiAgICAgV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSB0
eXBlT3IoV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSBhbHRlcm5hdGUpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZSA/IG1fdHlwZS52YWx1ZSgpIDogYWx0ZXJuYXRlOyB9CkBAIC0zNjQsMTEgKzM2
NCwxMSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzVmFsaWQgeyBmYWxzZSB9
OwotICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IG1fcGF5bG9hZDsKKyAgICBz
dGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9wYXlsb2FkOwogICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZT4gbV90eXBlOwogfTsK
IAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxs
YmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uVGh1bmRlcjo6Y2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJz
ZWRSZXNwb25zZU1lc3NhZ2UoYnVmZmVyKTsKICAgICBpZiAoIXBhcnNlZFJlc3BvbnNlTWVzc2Fn
ZSkgewpAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6
a2V5c1VwZGF0ZURvbmVDYWxsYmFjaygpCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5j
bGVhcigpOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJh
Y2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IG1lc3NhZ2UpCiB7CiAgICAgR1NUX0VSUk9SKCJDRE0gZXJyb3IiKTsKICAgICBHU1RfTUVNRFVN
UCgiZXJyb3IgZHVtcCIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKQEAgLTQ4
OCw3ICs0ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJh
Y2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogICAgIG1fc2Vzc2lvbkNoYW5nZWRD
YWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhU2hhcmVkQnVmZmVyLAor
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YVNoYXJlZEJ1ZmZlciwKICAgICBMaWNlbnNlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtNTA2
LDcgKzUwNiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0CiAgICAgICAgIG1faW5pdERhdGEu
cGF5bG9hZCgpLT5kYXRhKCksIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCksIG51bGxwdHIs
IDAsICZtX3RodW5kZXJTZXNzaW9uQ2FsbGJhY2tzLCB0aGlzLCAmc2Vzc2lvbik7CiAgICAgaWYg
KCFzZXNzaW9uKSB7CiAgICAgICAgIEdTVF9FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBzZXNzaW9u
Iik7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5w
YXlsb2FkKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0
YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOwogICAgICAgICBjYWxsYmFjayhpbml0RGF0YS5yZWxl
YXNlTm9uTnVsbCgpLCB7IH0sIGZhbHNlLCBGYWlsZWQpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0CiAKICAgICBhdXRv
IGdlbmVyYXRlQ2hhbGxlbmdlID0gW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CisgICAg
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEu
cGF5bG9hZCgpOwogICAgICAgICBpZiAobV9zZXNzaW9uSUQuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBHU1RfRVJST1IoImNvdWxkIG5vdCBjcmVhdGUgc2Vzc2lvbiBpZCIpOwogICAgICAgICAg
ICAgY2FsbGJhY2soaW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgeyB9LCBmYWxzZSwgRmFpbGVk
KTsKQEAgLTU0NSwxMyArNTQ1LDEzIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6
c2Vzc2lvbkZhaWx1cmUoKQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsK
IH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNw
b25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExp
Y2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9u
SUQsIHNlc3Npb25JRCA9PSBtX3Nlc3Npb25JRCk7CiAKICAgICBHU1RfVFJBQ0UoIlVwZGF0aW5n
IHNlc3Npb24gJXMiLCBzZXNzaW9uSUQudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBtX3Nlc3Npb25D
aGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkg
bXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKICAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAg
IGlmICghcmVzcG9uc2VNZXNzYWdlKQpAQCAtNTYyLDcgKzU2Miw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwg
TGljZW5zZVR5CiAgICAgICAgICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJl
c3BvbnNlTWVzc2FnZShyZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIEFTU0VSVChw
YXJzZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25z
ZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRC
dWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkp
OworICAgICAgICAgICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2Fn
ZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIEdTVF9ERUJVRygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5z
aXplKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3Nh
Z2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJh
Y2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LApAQCAtNTg2LDcgKzU4Niw3IEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUs
IGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQs
IHNlc3Npb25JRCA9PSBtX3Nlc3Npb25JRCk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJh
Y2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNj
ZXNzLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7Cisg
ICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghcmVzcG9u
c2VNZXNzYWdlKQpAQCAtNTk3LDcgKzU5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1
bmRlcjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiAg
ICAgICAgICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2Fn
ZShyZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25z
ZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFz
UGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3Nh
Z2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOworICAgICAgICAg
ICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUo
cGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdT
VF9ERUJVRygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwogICAg
ICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwg
bWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bWFrZV9wYWlyKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS50
eXBlT3IoTWVkaWFLZXlNZXNzYWdlVHlwZTo6TGljZW5zZVJlcXVlc3QpLApAQCAtNjQwLDcgKzY0
MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2VuCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNz
aW9uSUQsIG1fc2Vzc2lvbklEID09IHNlc3Npb25JRCk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2Vk
Q2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9v
bCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgbXV0YWJsZSB7CisgICAg
bV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtNjQ5LDcg
KzY0OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2VuCiAgICAgICAgICAgICAgICAgUGFyc2Vk
UmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShidWZmZXIpOwogICAgICAgICAg
ICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGlm
IChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVz
c2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQo
KSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygic2Vzc2lvbiAlcyByZW1vdmVkLCBt
ZXNzYWdlIGxlbmd0aCAlenUiLCBtX3Nlc3Npb25JRC51dGY4KCkuZGF0YSgpLCBtZXNzYWdlLT5z
aXplKCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhtX2tleVN0b3JlLmFsbEtleXNB
cyhNZWRpYUtleVN0YXR1czo6UmVsZWFzZWQpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBTdWNjZXNzVmFs
dWU6OlN1Y2NlZWRlZCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVu
ZGVyLmgKaW5kZXggY2RkOGRhMjExMjNjMTc5MWFlMmZiNjQzOWZmMmQ2ZmEwZDJlYjIxYy4uMTAy
MGUxNTMyMjcxYjUzNTFlMTA2ZGRlOGYyMWVhNTQwNWE5YzIzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVu
ZGVyLmgKQEAgLTkzLDggKzkzLDggQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxp
emUoKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7Ci0gICAgYm9v
bCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXIm
KSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNv
bnN0IGZpbmFsOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJl
c3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29u
c3QgZmluYWw7CiAKIHByaXZhdGU6CkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIC8v
IENETUluc3RhbmNlCiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6VGh1bmRlcjsgfQogICAg
IHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0
YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAg
dm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
U3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShj
b25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fa2V5U3lzdGVtOyB9CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vz
c2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAtMTI2LDggKzEyNiw4IEBAIGNsYXNzIENE
TUluc3RhbmNlU2Vzc2lvblRodW5kZXIgZmluYWwgOiBwdWJsaWMgQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkgewogcHVibGljOgogICAgIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXIoQ0RNSW5zdGFu
Y2VUaHVuZGVyJik7CiAKLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEs
IExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVD
YWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNl
c3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNz
aW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5n
JiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9u
RGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFj
ayYmKSBmaW5hbDsKQEAgLTE0MSwxNCArMTQxLDE0IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
Q0RNSW5zdGFuY2VUaHVuZGVyKiBjZG1JbnN0YW5jZVRodW5kZXIoKSBjb25zdDsKIAotICAgIHVz
aW5nIE5vdGlmaWNhdGlvbiA9IHZvaWQgKENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OiopKFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9
IHZvaWQgKENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OiopKFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB1c2luZyBDaGFsbGVuZ2VHZW5lcmF0ZWRDYWxs
YmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47Ci0gICAgdXNpbmcgU2Vzc2lvbkNoYW5nZWRDYWxsYmFj
ayA9IEZ1bmN0aW9uPHZvaWQoYm9vbCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+OworICAgIHVz
aW5nIFNlc3Npb25DaGFuZ2VkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGJvb2wsIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT47CiAKLSAgICB2b2lkIGNoYWxsZW5nZUdlbmVyYXRl
ZENhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgY2hhbGxlbmdlR2Vu
ZXJhdGVkQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZv
aWQga2V5VXBkYXRlZENhbGxiYWNrKEtleUlEVHlwZSYmKTsKICAgICB2b2lkIGtleXNVcGRhdGVE
b25lQ2FsbGJhY2soKTsKLSAgICB2b2lkIGVycm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJik7CisgICAgdm9pZCBlcnJvckNhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKTsKICAgICBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1cyBzdGF0dXMoY29uc3Qg
S2V5SURUeXBlJikgY29uc3Q7CiAgICAgdm9pZCBzZXNzaW9uRmFpbHVyZSgpOwogCkBAIC0xNTks
NyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICBJbml0RGF0YSBtX2luaXREYXRhOwogICAgIE9wZW5D
RE1TZXNzaW9uQ2FsbGJhY2tzIG1fdGh1bmRlclNlc3Npb25DYWxsYmFja3MgeyB9OwogICAgIEJv
eFB0cjxPcGVuQ0RNU2Vzc2lvbj4gbV9zZXNzaW9uOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fbWVzc2FnZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdl
OwogICAgIGJvb2wgbV9uZWVkc0luZGl2aWR1YWxpemF0aW9uIHsgZmFsc2UgfTsKICAgICBWZWN0
b3I8Q2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2s+IG1fY2hhbGxlbmdlQ2FsbGJhY2tzOwogICAg
IFZlY3RvcjxTZXNzaW9uQ2hhbmdlZENhbGxiYWNrPiBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCmluZGV4IDNm
ODVhZmU3M2M4NDI3NjI5OTdkNWFiYzJkN2JjMDdmN2MwMWI5YzMuLmVhODkwZjY3ZGEyMTM4N2Y0
MGRhNjUxYTBjYTVjNzM0OTNlODRmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1l
ckVNRVV0aWxpdGllcy5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIHZvaWQgbWFya3VwRXJy
b3IoR01hcmt1cFBhcnNlQ29udGV4dCosIEdFcnJvciosIGdwb2ludGVyKQogCiBzdGF0aWMgR01h
cmt1cFBhcnNlciBtYXJrdXBQYXJzZXIgeyBtYXJrdXBTdGFydEVsZW1lbnQsIG1hcmt1cEVuZEVs
ZW1lbnQsIG1hcmt1cFRleHQsIG1hcmt1cFBhc3N0aHJvdWdoLCBtYXJrdXBFcnJvciB9OwogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIHVucGFyc2VkUGF5bG9hZCkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXlsb2Fk
ID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOwogICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9h
ZC0+c2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5k
ZXggZDVhZmY4NDVmNDA5YTc1ZDcxYTk4NDBhY2YxZDM0MmE0NjQ3ZDJmMS4uMjdkZDRlYWUwZDJl
MDFhYjRkODRjMGFiYzQyNGViYjEwMTA0YzA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJl
YW1lckVNRVV0aWxpdGllcy5oCkBAIC0zOCw4ICszOCw3IEBAIEdTVF9ERUJVR19DQVRFR09SWV9F
WFRFUk4od2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdv
cnkpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbml0RGF0YSB7CiBwdWJsaWM6Ci0gICAg
SW5pdERhdGEoKQotICAgICAgICA6IG1fcGF5bG9hZChTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKSB7
IH0KKyAgICBJbml0RGF0YSgpID0gZGVmYXVsdDsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
aGF2ZSBhbiBlbnVtIGZvciBzeXN0ZW0gdXVpZHMgZm9yIGJldHRlciB0eXBlIHNhZmV0eS4KICAg
ICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBHc3RCdWZmZXIqIGluaXREYXRhKQpA
QCAtNTAsMTMgKzQ5LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdTVF9DQVRfTEVWRUxfTE9H
KHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5LCBH
U1RfTEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHByb3RlY3Rpb24gZGF0YSIs
IHN5c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZCht
YXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBpZiAoYXV0byBw
YXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRl
U2hhcmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXls
b2FkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAotICAgIEluaXREYXRhKGNvbnN0IFN0cmlu
ZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKKyAgICBJbml0RGF0
YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9w
YXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RGTW92ZShwYXlsb2FkKSkpCiAgICAgeworICAg
ICAgICBpZiAocGF5bG9hZCkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9
IGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSkpCisgICAgICAg
ICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmQoSW5pdERhdGEmJiBpbml0RGF0
YSkKQEAgLTcyLDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGl0J3Mgbm90IHZlcnkg
cm9idXN0LCBzbyBiZSBjYXJlZnVsIGhlcmUhCiAgICAgICAgIG1fc3lzdGVtSWQgPSBpbml0RGF0
YS5tX3N5c3RlbUlkOwogCi0gICAgICAgIG1fcGF5bG9hZC0+YXBwZW5kKCppbml0RGF0YS5wYXls
b2FkKCkpOworICAgICAgICBtX3BheWxvYWQuYXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwog
ICAgIH0KIAotICAgIGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3Qg
eyByZXR1cm4gbV9wYXlsb2FkOyB9CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQuZ2V0KCk7IH0KICAgICBjb25zdCBT
dHJpbmcmIHN5c3RlbUlkKCkgY29uc3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogICAgIFN0cmlu
ZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgpIGNvbnN0CiAgICAgewpAQCAtODYsMTEgKzg5LDExIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZXh0cmFj
dENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBT
dHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3BheWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9u
U3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDcxOGI5YmQzMTVl
Y2M2NzA3ODljNjVjYmFhYTAzNDkyOTc1ZTcyZDMuLjY5MjhhNjNlOTcxYzdjMzVlODg0NGVlZjcz
YmZhNDRhOGQ4YzAzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzYsNyArMzYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xh
c3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmls
aXRpZXM7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlw
ZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1h
Z2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1l
bnRJbWFnZU1hYy5tbQppbmRleCA4M2U2YWY3YjAzODkyODM4YzNiZmVhMWMwYzExYWE3ZmNmOGE3
N2E5Li42OGJjYzg4NDZhOGIxZjBmN2NiY2YxNDAzMTk2NmVkOTI0MzIyYzJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1l
bnRJbWFnZU1hYy5tbQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZv
aWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIG1fZG9jdW1l
bnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0
YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFth
bGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogfQogCiB2b2lkIFBERkRvY3VtZW50SW1h
Z2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMu
aAppbmRleCAwOWMxYzQ1YzQ1OTNhZWE0MzE4MzBkMjE1YjdlNzQ4NTJjMTllMzdmLi5mYTAwMDgx
MTYwNjY5N2RjNWM1MTEyMzMzYzkwYzhjOTJiNGI2NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0
aWVzLmgKQEAgLTM1LDkgKzM1LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBC
aWdFbmRpYW5VU2hvcnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRU9UUHJlZml4Owog
Y2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IEVPVEhlYWRlciB7CiAgICAgRU9USGVhZGVy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5kZXggMmNmYTg1NGMwMjI2
NjhhY2MwMDczN2MxZWJiMzVmZjM0OGQ1OGUyYi4uMGZhOGYzMDZhZDk1MmQwNmEwOTI5N2QwYjFk
Mjg3Yjg5ODgzMmEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApAQCAt
MzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogCiBzdGF0aWMg
Ym9vbCBsb2FkSG10eFRhYmxlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwg
VmVjdG9yPHVpbnQxNl90PiYgYWR2YW5jZVdpZHRocykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRh
Zyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlw
ZTo6SGhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5U
eXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpIaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYg
KCFoaGVhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjQsNyArNDI0LDcgQEAgT3BlblR5
cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVydGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNz
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKICAgICAvLyBMb2FkIHZo
ZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMgcmVxdWlyZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2
ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3Jt
RGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKICAgICBjb25z
dCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3Bl
blR5cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIXZoZWEpCiAgICAgICAgIHJldHVy
bjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0
cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5
cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBGb250
UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwor
ICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdT
VUJUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpHU1VCVGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6
dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NVQlRhYmxlPihidWZmZXIpOwogICAgIGlmIChnc3Vi
KQogICAgICAgICBnc3ViLT5nZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNh
bEdseXBoTWFwLCAqYnVmZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKaW5kZXggYTYy
NzE5YjE3MTlhNzRmOTc2OTIyMTlkZjVmN2FhZWRjNDkwNjQ2Ni4uMGRiNGFmYWRiM2Y3NDJiODNh
NGUxNmNmMzcxODcwYTJiMDQwNGVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKQEAgLTQzLDcg
KzQzLDcgQEAgZW51bSBEV1JJVEVfRk9OVF9TVFJFVENIOwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIERpcmVjdFdyaXRlIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNWYxMGY3MzkyZDA0YzM0NGQxMmNlZTQyNjZlZGIxZWU5
OTcxYzRlZi4uMDhmYzlmMTllYWVhOTQ4M2VhNThlYzFhZWVkZDQ1NzI1NmNlMjdiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zNiwxMiArMzYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3Qg
Q0dGb250KiBDR0ZvbnRSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlv
bjsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVj
dCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50
U2V0dGluZ3M7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0
dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAK
aW5kZXggNjI5ZTBlNjFhMTA0YzU2N2ExZDRlZGNiN2U1Nzk3ZGNmNjdjNmU4ZS4uNzczNTczOWI5
MzM0ZjQ0ZDk5YTNmMTJmZmM1YmY3YjQxZjdjYzZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQu
Y3BwCkBAIC0yNzIsNyArMjcyLDcgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJEaXJl
Y3QyRDo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWIKICAgICByZXR1
cm4gYml0bWFwOwogfQogCi12b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckRp
cmVjdDJEOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQogewogICAgIGlmICghYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VE
ZWNvZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5oCmluZGV4IDRmNDcyNTg2YjQyNGJkYTFjZjZmYTAxNDNjYmEy
M2QwMzAwMTZlNDUuLmMyMzY1ZmQ3NDRjNjExOGMxOTk5ZTA1YjgwMmVkNWI0OGYzNjQ4MjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29k
ZXJEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEltYWdlRGVjb2Rl
ckRpcmVjdDJEIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6CiAgICAgSW1h
Z2VEZWNvZGVyRGlyZWN0MkQoKTsKIAotICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyRGlyZWN0
MkQ+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJEaXJlY3QyRD4gY3JlYXRlKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJE
aXJlY3QyRCgpKTsKICAgICB9CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRm
b3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9
IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAg
ICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFs
OworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVm
ZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAKaW5kZXggMGQ4ODIwZTlmM2Q2ZmQ3NzM1ZDU3
MGIzNjQxNDg4ZjUzYmQ3ZWNlOS4uMmQ5NzI3MGE3MzQ4MzQ4OTNlNzhjODFmZjBlYzViYjVkZmVj
M2Y4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VXaW4uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAK
IC8vIFRoaXMgZnVuY3Rpb24gbG9hZHMgcmVzb3VyY2VzIGZyb20gV2ViS2l0Ci1SZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsK
K1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRv
QnVmZmVyKGNvbnN0IGNoYXIqKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVj
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJs
ZUltYWdlRGVjb2Rlci5jcHAKaW5kZXggZDk1NmQ5ZTc2MjVkNWJiNWE3MGYwNjkzZTc3OThlZTkw
ODQ5ZjE2NS4uMzNjOTVlYzMzMzNhOTIwYzY0YTAxODE3NTFlYjRhNTA1ZWYxYTdhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIG5hbWVzcGFjZSB7CiAKLXN0YXRpYyB1bnNpZ25lZCBjb3B5RnJvbVNoYXJlZEJ1
ZmZlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QgU2hhcmVkQnVm
ZmVyJiBzaGFyZWRCdWZmZXIpCitzdGF0aWMgdW5zaWduZWQgY29weUZyb21TaGFyZWRCdWZmZXIo
Y2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikKIHsKICAgICB1bnNpZ25lZCBieXRlc0V4dHJhY3RlZCA9
IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogc2hhcmVkQnVmZmVyKSB7CkBAIC0x
MzUsNyArMTM1LDcgQEAgYm9vbCBtYXRjaGVzQ1VSU2lnbmF0dXJlKGNoYXIqIGNvbnRlbnRzKQog
CiB9CiAKLVJlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gU2NhbGFibGVJbWFnZURlY29kZXI6
OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0
cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGxlbmd0aE9mTG9uZ2VzdFNpZ25hdHVyZSA9IDE0OyAvLyBU
byB3aXQ6ICJSSUZGPz8/P1dFQlBWUCIKICAgICBjaGFyIGNvbnRlbnRzW2xlbmd0aE9mTG9uZ2Vz
dFNpZ25hdHVyZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCAzMmQ0ZTZmOGI4ZmEx
NGExM2JmYjYyMmQ4NzU3MDg3OThiOTlkYWEyLi45YzQwNTU3ODI0MWQwYzUxMjcwMjk1MTVjMjIx
MjY1OGY4YzRmNjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTYwLDcgKzYwLDcg
QEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyBudWxscHRyIGlmIHdlIGNhbid0IHNuaWZmIGEg
c3VwcG9ydGVkIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgZGF0YSAocG9zc2libHkKICAgICAvLyBi
ZWNhdXNlIHRoZXJlIGlzbid0IGVub3VnaCBkYXRhIHlldCkuCi0gICAgc3RhdGljIFJlZlB0cjxT
Y2FsYWJsZUltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNjYWxh
YmxlSW1hZ2VEZWNvZGVyPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQogCkBAIC03
MCwxNiArNzAsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1
cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxldGU7CiAgICAgfQogCi0gICAgdm9pZCBzZXRE
YXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlCisg
ICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9j
ayB9OwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1
czo6RXJyb3IpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGRhdGEuZGF0YSgp
KSB7Ci0gICAgICAgICAgICAvLyBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb21iaW5lcyBhbGwgc2Vn
bWVudHMgaW50byBvbmUgaW4gY2FzZSB0aGVyZSdzIG1vcmUgdGhhbiBvbmUuCi0gICAgICAgICAg
ICBtX2RhdGEgPSBkYXRhLmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwotICAgICAgICB9Cisg
ICAgICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAg
ICAgIGlmIChjb250aWd1b3VzRGF0YS0+ZGF0YSgpKQorICAgICAgICAgICAgbV9kYXRhID0gY29u
dGlndW91c0RhdGEtPmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwogICAgICAgICBpZiAobV9l
bmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewog
ICAgICAgICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRydWU7CiAgICAgICAgICAg
ICB0cnlEZWNvZGVTaXplKGFsbERhdGFSZWNlaXZlZCk7CkBAIC0xOTUsNyArMTk0LDcgQEAgcHVi
bGljOgogICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CiAgICAgVmVjdG9yPFNjYWxhYmxlSW1hZ2VE
ZWNvZGVyRnJhbWUsIDE+IG1fZnJhbWVCdWZmZXJDYWNoZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1f
bG9jayk7CiAgICAgbXV0YWJsZSBMb2NrIG1fbG9jazsKICAgICBib29sIG1fcHJlbXVsdGlwbHlB
bHBoYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcAppbmRleCA3YzYwM2ZkODM1OGMyMTRh
YzkxODRmMzE4OTk3MmZlODQxYjYxZTgwLi4yNmY4ODY0OTZlNWE1YTE0ZTI4YWZiMWFmYTliZmMz
MDE3N2Y1MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCkBAIC00MSw3ICs0MSw3
IEBAIEFWSUZJbWFnZVJlYWRlcjo6QVZJRkltYWdlUmVhZGVyKFJlZlB0cjxBVklGSW1hZ2VEZWNv
ZGVyPiYmIGRlY29kZXIpCiAKIEFWSUZJbWFnZVJlYWRlcjo6fkFWSUZJbWFnZVJlYWRlcigpID0g
ZGVmYXVsdDsKIAotYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorYm9vbCBB
VklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoYXZp
ZkRlY29kZXJTZXRJT01lbW9yeShtX2F2aWZEZWNvZGVyLmdldCgpLCBkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpICE9IEFWSUZfUkVTVUxUX09LKQogICAgICAgICByZXR1cm4gYWxsRGF0YVJlY2Vp
dmVkID8gbV9kZWNvZGVyLT5zZXRGYWlsZWQoKSA6IGZhbHNlOwpAQCAtNTgsNyArNTgsNyBAQCBi
b29sIEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudCYgZGF0YSwgYm9vbCBhbAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFWSUZJ
bWFnZVJlYWRlcjo6ZGVjb2RlRnJhbWUoc2l6ZV90IGZyYW1lSW5kZXgsIFNjYWxhYmxlSW1hZ2VE
ZWNvZGVyRnJhbWUmIGJ1ZmZlciwgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0
YSkKK3ZvaWQgQVZJRkltYWdlUmVhZGVyOjpkZWNvZGVGcmFtZShzaXplX3QgZnJhbWVJbmRleCwg
U2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYgYnVmZmVyLCBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkKIHsKICAgICBpZiAobV9kZWNvZGVyLT5mYWlsZWQo
KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgKaW5kZXggY2JjYTBi
OGMxMjRiZmYwZmZjMzMwMWJhMzViY2UwMWVkMjcyMmRmOC4uNDk2ZjY5ZjgxMmJkNzViMGVkYTYz
NTdiYWE4NjBjZmNjYjViYTRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCkBAIC0zOSw4
ICszOSw4IEBAIHB1YmxpYzoKICAgICBBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJbWFnZURl
Y29kZXI+JiYpOwogICAgIH5BVklGSW1hZ2VSZWFkZXIoKTsKIAotICAgIGJvb2wgcGFyc2VIZWFk
ZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KTsKLSAgICB2b2lkIGRlY29kZUZyYW1lKHNpemVfdCBpbmRleCwgU2NhbGFibGVJbWFnZURlY29k
ZXJGcmFtZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKTsKKyAgICBib29sIHBh
cnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4LCBT
Y2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQmKTsKICAgICBzaXplX3QgaW1hZ2VDb3VudCgpIGNvbnN0OwogICAgIGRvdWJs
ZSByZXBldGl0aW9uQ291bnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApp
bmRleCA3Mjc2OWE2OTI2ZWMyNDE5YmY2NjM4MjUyOGQzZDc3MjBhNTRhZGFlLi5mNzQ1NWMxNDZj
N2U4YWViMDRjYzhjNTZmMzMwZTJhMDFmM2JhNzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVy
LmNwcApAQCAtNDYsNyArNDYsNyBAQCBCTVBJbWFnZURlY29kZXI6OkJNUEltYWdlRGVjb2RlcihB
bHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogewogfQogCi12
b2lkIEJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQordm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxl
ZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzdjN2Nh
ODFmZWE2YjhhNzc0YmIzMDhlNTM4ZGNkMDQ4Yzk5NWVlYS4uNjRkZWQ2YWJiZTJjMGEyOWIxMWY5
ZmI1ZWNkNmI0ODcyNGQ1ODk3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaApAQCAtNDQsNyAr
NDQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmlu
ZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJibXAiX3M7IH0KLSAg
ICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFs
OworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIGZpbmFsOwogICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVm
ZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIGZpbmFsOwogICAgIC8vIENBVVRJT046IHNldEZhaWxl
ZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gQmUgY2FyZWZ1bCB0byBhdm9pZAogICAgIC8vIGFjY2Vz
c2luZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxseSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9tIGlu
c2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaAppbmRleCA0ODQ0ZjM4MGRjMTdlYzcwNDU4OGZiMTJm
NTNlYWJjNmQyMGU2MGY0Li5iZDQzMGU4YThiZWEyYzgxNmIyYzUyMmJmNWJhNzg4NDZjMzhlMGZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAv
Qk1QSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBCTVBJbWFn
ZVJlYWRlciB7CiBwdWJsaWM6CiAgICAgLy8gUmVhZCBhIHZhbHVlIGZyb20gfGRhdGFbb2Zmc2V0
XXwsIGNvbnZlcnRpbmcgZnJvbSBsaXR0bGUgdG8gbmF0aXZlCiAgICAgLy8gZW5kaWFubmVzcy4K
LSAgICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJlYWRVaW50MTYoY29uc3QgU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQx
Nl90IHJlYWRVaW50MTYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQm
IGRhdGEsIGludCBvZmZzZXQpCiAgICAgewogICAgICAgICB1aW50MTZfdCByZXN1bHQ7CiAgICAg
ICAgIG1lbWNweSgmcmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgMik7CkBAIC01Miw3ICs1
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBzdGF0
aWMgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCYgZGF0YSwgaW50IG9mZnNldCkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHJlYWRV
aW50MzIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGlu
dCBvZmZzZXQpCiAgICAgewogICAgICAgICB1aW50MzJfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNw
eSgmcmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgNCk7CkBAIC02OSw3ICs2OSw3IEBAIHB1
YmxpYzoKICAgICBCTVBJbWFnZVJlYWRlcihTY2FsYWJsZUltYWdlRGVjb2RlciogcGFyZW50LCBz
aXplX3QgZGVjb2RlZEFuZEhlYWRlck9mZnNldCwgc2l6ZV90IGltZ0RhdGFPZmZzZXQsIGJvb2wg
dXNlc0FuZE1hc2spOwogCiAgICAgdm9pZCBzZXRCdWZmZXIoU2NhbGFibGVJbWFnZURlY29kZXJG
cmFtZSogYnVmZmVyKSB7IG1fYnVmZmVyID0gYnVmZmVyOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KKyAgICB2
b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsg
bV9kYXRhID0gJmRhdGE7IH0KIAogICAgIC8vIERvZXMgdGhlIGFjdHVhbCBkZWNvZGluZy4gSWYg
fG9ubHlTaXplfCBpcyB0cnVlLCBkZWNvZGluZyBvbmx5CiAgICAgLy8gcHJvZ3Jlc3NlcyBhcyBm
YXIgYXMgbmVjZXNzYXJ5IHRvIGdldCB0aGUgaW1hZ2Ugc2l6ZS4gUmV0dXJucwpAQCAtMjcyLDcg
KzI3Miw3IEBAIHByaXZhdGU6CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogbV9idWZm
ZXI7CiAKICAgICAvLyBUaGUgZmlsZSB0byBkZWNvZGUuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKIAogICAgIC8vIEFuIGluZGV4IGludG8gfG1fZGF0YXwg
cmVwcmVzZW50aW5nIGhvdyBtdWNoIHdlJ3ZlIGFscmVhZHkgZGVjb2RlZC4KICAgICBzaXplX3Qg
bV9kZWNvZGVkT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJv
LmNwcAppbmRleCA2MDEyMDM3NGY5YzQzMTY4YTY1MjFiNjljNTRhZmJlMmEwMGY1NWY3Li40YTIx
MjU1YThjMGZiNjc4ZTRhYWRkNzY2M2ViN2Y5MThlN2ZlOTRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWly
by9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcApAQCAtMzcsNyArMzcsOSBAQCBQbGF0Zm9ybUlt
YWdlUHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0CiAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8dWludDMyX3QqPihtX3BpeGVsc1B0
cikpLAogICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMyLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgp
LmhlaWdodCgpLCBzaXplKCkud2lkdGgoKSAqIHNpemVvZih1aW50MzJfdCkpKTsKICAgICBzdGF0
aWMgY2Fpcm9fdXNlcl9kYXRhX2tleV90IHNfc3VyZmFjZURhdGFLZXk7Ci0gICAgY2Fpcm9fc3Vy
ZmFjZV9zZXRfdXNlcl9kYXRhKHN1cmZhY2UuZ2V0KCksICZzX3N1cmZhY2VEYXRhS2V5LCBtX3Bp
eGVscy5nZXQoKSwgW10odm9pZCogZGF0YSkgeyBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50Kj4oZGF0YSktPmRlcmVmKCk7IH0pOworICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3Vz
ZXJfZGF0YShzdXJmYWNlLmdldCgpLCAmc19zdXJmYWNlRGF0YUtleSwgbV9waXhlbHMuZ2V0KCks
IFtdKHZvaWQqIGRhdGEpIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8RGF0YVNlZ21lbnQqPihkYXRh
KS0+ZGVyZWYoKTsKKyAgICB9KTsKIAogICAgIHJldHVybiBzdXJmYWNlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VEZWNvZGVyLmNwcAppbmRleCBlNmFiZTBkOTU0NGI2YzE4NWM2NDVkZWNlMDlmMjNmOTU2
NjYwN2NiLi5iOWVjMDFiOGFlOGU4ZDI5YmM3ODI1MjZlMDc2NTI1NTFlMzU5YzAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VE
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9n
aWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBHSUZJbWFnZURlY29kZXI6
OkdJRkltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcAogCiBHSUZJbWFnZURlY29kZXI6On5HSUZJbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7
CiAKLXZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAo
ZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAppbmRleCAz
NWRmMzNmNmRmYzQ4M2ZkODQ3MTM2NmFlNTNiYjBiOTYxY2FlZDJlLi5jNzQ3MTk5OTliOTg2YzFj
ZWY4NDc4NzU5ZDIzNzE4YzkwNDJkM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCkBAIC00
Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAg
U3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gImdpZiJfczsg
fQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJ
bnRTaXplJikgZmluYWw7CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCBmaW5hbDsKICAg
ICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3QgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VS
ZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJ
bWFnZVJlYWRlci5oCmluZGV4IDQyMTQ2ZTAzMjkzMjM2OTk3ODllYjVlNDJhZjRjNzNkMzRhYjlj
YzYuLjEwODJmZGYwZGZmMjM5MWU1NjUzMGE0MWY4N2JhNDM5ODIzMjc1MzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJ
bWFnZVJlYWRlci5oCkBAIC0yMzcsNyArMjM3LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAK
LSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0
YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQorICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQog
ICAgIC8vIEZJWE1FOiBoYWx0QXRGcmFtZSBzaG91bGQgYmUgc2l6ZV90LgogICAgIGJvb2wgZGVj
b2RlKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6R0lGUXVlcnksIHVuc2lnbmVkIGhhbHRBdEZy
YW1lKTsKIApAQCAtMzE2LDYgKzMxNiw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxHSUZGcmFtZUNvbnRleHQ+ID4gbV9mcmFtZXM7CiAgICAgc2l6ZV90IG1fY3VycmVu
dERlY29kaW5nRnJhbWU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOwogICAgIGJvb2wgbV9wYXJzZUNvbXBsZXRlZDsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IGM3MTdjNDVkMzA1N2MwNTUzNmVlNjA1
MGY5Mzk3MDQ2ZDEwZGYyYTcuLmMwNzEzNDViOGJmMzY5YjgwMjcxZmJkZjBhMGNlMDE3NGYwNTAz
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIElDT0lt
YWdlRGVjb2Rlcjo6SUNPSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wCiAKIElDT0ltYWdlRGVjb2Rlcjo6fklDT0ltYWdlRGVjb2Rlcigp
ID0gZGVmYXVsdDsKIAotdm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXRE
YXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rl
ci5oCmluZGV4IGZiN2E5MDNiMmEwNzUzOTQ5MTdhYmJiZjExYjFjZWQ4M2ZmNDMyYTAuLjEwZWU5
YjRkMmU4YzlkODg3ZTFkMmI4YmUxMzliYjc0MjcxZDU3YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNv
ZGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURl
Y29kZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVy
biAiaWNvIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBJbnRTaXplIHNpemUoKSBjb25z
dCBmaW5hbDsKICAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsKSBjb25zdCBmaW5hbDsKICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggZmQzNDViYjc4NmZmMDhk
OTQ2NTkzMGFhNGRmNDhkZjE3YWJmMzA1Yy4uNWNmYWM5ZjIzNTdlMmUxMmM2ODY0MDBiMjY3ODhh
ZTdmOGJlMTM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0yMjIsNyAr
MjIyLDcgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1h
cmtlcikKIAogc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdf
ZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIGZvciAo
anBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7
IG1hcmtlciA9IG1hcmtlci0+bmV4dCkgewogICAgICAgICBpZiAoIWlzSUNDTWFya2VyKG1hcmtl
cikpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIzNiwxMyArMjM2LDEzIEBAIHN0YXRpYyBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0
KiBpbmZvKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQg
bWFya2VyU2l6ZSA9IG1hcmtlci0+ZGF0YV9sZW5ndGggLSBpY2NIZWFkZXJTaXplOwotICAgICAg
ICBidWZmZXItPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXIt
PmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZlci5hcHBl
bmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVh
ZGVyU2l6ZSksIG1hcmtlclNpemUpOwogICAgIH0KIAotICAgIGlmIChidWZmZXItPmlzRW1wdHko
KSkKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gYnVmZmVyOworICAgIHJldHVybiBidWZmZXIudGFrZSgpLT5tYWtlQ29udGln
dW91cygpOwogfQogI2VuZGlmCiAKQEAgLTMyMCw3ICszMjAsNyBAQCBwdWJsaWM6CiAgICAgICAg
IG1fYnl0ZXNUb1NraXAgPSBzdGQ6Om1heChudW1CeXRlcyAtIGJ5dGVzVG9Ta2lwLCBzdGF0aWNf
Y2FzdDxsb25nPigwKSk7CiAgICAgfQogCi0gICAgYm9vbCBkZWNvZGUoY29uc3QgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkKKyAgICBib29sIGRlY29kZShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5
U2l6ZSkKICAgICB7CiAgICAgICAgIG1fZGVjb2RpbmdTaXplT25seSA9IG9ubHlTaXplOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAw
MC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKaW5kZXggYmVjZjY0
NTAyNzdlZWI3NGIwOWRlNTJlZTE4MmZmNmUxMWVkMjc2Mi4uMjA0NzNmMGVlZWJiNTZjNzEzMTRm
NjU1NmJkYTA5MDMzNDkwNzQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1h
Z2VEZWNvZGVyLmNwcApAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgSlBFRzIwMDBJbWFnZURlY29k
ZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICB9CiAK
ICAgICBzdHJ1Y3QgUmVhZGVyIHsKLSAgICAgICAgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYg
ZGF0YTsKKyAgICAgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGE7
CiAgICAgICAgIHNpemVfdCBvZmZzZXQ7CiAgICAgfSByZWFkZXIgPSB7ICptX2RhdGEsIDAgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5n
L1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBjMTJjNDU5YTVhM2U1YjM1MWM1YmNj
NjJiZjAwYjhhMjgxYmQ1YmEzLi40Y2JkMzIzZDlhNzUwMjZlZjg2NThmMzgxNmRkNzM4ZDM3Y2E4
ZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9w
bmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHB1
YmxpYzoKICAgICAgICAgbV9yZWFkT2Zmc2V0ID0gMDsKICAgICB9CiAKLSAgICBib29sIGRlY29k
ZShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIHNpemVPbmx5LCB1
bnNpZ25lZCBoYWx0QXRGcmFtZSkKKyAgICBib29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBzaXplT25seSwgdW5zaWduZWQgaGFs
dEF0RnJhbWUpCiAgICAgewogICAgICAgICBtX2RlY29kaW5nU2l6ZU9ubHkgPSBzaXplT25seTsK
ICAgICAgICAgUE5HSW1hZ2VEZWNvZGVyKiBkZWNvZGVyID0gc3RhdGljX2Nhc3Q8UE5HSW1hZ2VE
ZWNvZGVyKj4ocG5nX2dldF9wcm9ncmVzc2l2ZV9wdHIobV9wbmcpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJ
bWFnZURlY29kZXIuY3BwCmluZGV4IDAyZjFiMDlkYmM3NjUxNjAxZjkyMmRkZTI5ZjgwNWE2NTg3
MWUyZDIuLmIxYmVjNTVlNzhjNDM0ODAxYzI1NGFjZTBkZjU5OTMxYTM2Yjc0YmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdl
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDcsNyArNDcsNyBAQCBXRUJQSW1hZ2VEZWNv
ZGVyOjpXRUJQSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZQogCiBXRUJQSW1hZ2VEZWNvZGVyOjp+V0VCUEltYWdlRGVjb2RlcigpID0gZGVm
YXVsdDsKIAotdm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIFdFQlBJbWFnZURlY29kZXI6OnNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAg
ICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9p
ZCBXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUoc2l6ZV90IGZyYW1lSW5kZXgsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQogICAgIC8vIFRoaXMgY2FuIGJlIGV4ZWN1dGVkIGJvdGggaW4gdGhlIG1haW4g
dGhyZWFkICh3aGVuIG5vdCB1c2luZyBhc3luYyBkZWNvZGluZykgb3IgaW4gdGhlIGRlY29kaW5n
IHRocmVhZC4KICAgICAvLyBXaGVuIGV4ZWN1dGVkIGluIHRoZSBkZWNvZGluZyB0aHJlYWQsIGEg
Y2FsbCB0byBzZXREYXRhKCkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgbWF5IGNoYW5nZSB0aGUgZGF0
YQogICAgIC8vIHRoZSBXZWJQRGVtdXhlciBpcyB1c2luZywgbGVhdmluZyBpdCBpbiBhbiBpbmNv
bnNpc3RlbnQgc3RhdGUsIHNvIHdlIG5lZWQgdG8gcHJvdGVjdCB0aGUgZGF0YS4KLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gcHJvdGVjdGVkRGF0YShtX2RhdGEpOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gcHJvdGVjdGVkRGF0
YShtX2RhdGEpOwogICAgIFdlYlBEYXRhIGlucHV0RGF0YSA9IHsgcHJvdGVjdGVkRGF0YS0+ZGF0
YSgpLCBwcm90ZWN0ZWREYXRhLT5zaXplKCkgfTsKICAgICBXZWJQRGVtdXhTdGF0ZSBkZW11eGVy
U3RhdGU7CiAgICAgV2ViUERlbXV4ZXIqIGRlbXV4ZXIgPSBXZWJQRGVtdXhQYXJ0aWFsKCZpbnB1
dERhdGEsICZkZW11eGVyU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAppbmRleCBh
ZjM2NWU5Y2Y5YzdjZTk1MzhiNjRiYTc4OWJmMDE3ZDQ4ZjZlZGUxLi5kZDI4YmM4OGRmNWMwZmEz
YzE1NzM3ODY5YjI2MDk3M2FhYTBkMjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaApA
QCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V0VCUEltYWdlRGVjb2Rlcigp
OwogCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gIndlYnAiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCkgZmlu
YWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sKSBmaW5h
bDsKICAgICBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6
ZV90IGluZGV4KSBvdmVycmlkZTsKICAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2ZyYW1lQ291bnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggOTA5ZThlNzY4YWRiNjhiYWIyODQ0NWQyODI3MzYwYTNm
M2ZhMjJjMy4uYjIzNzdmZTM0MTFkMmFjNDAxNTEzYmYwOWFlOGNjYWU3ODZiZDhlYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTIzNiwxNCAr
MjM2LDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAKICNpZiAhUExB
VEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlk
Z2UgTlNTdHJpbmcgKilrVVRUeXBlRmxhdFJURkRdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5k
ZXgsIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdl
Q291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXND
aGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZFJU
RkQoKmJ1ZmZlcikgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWRO
b3RSZWFkVHlwZTsKICAgICB9CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2Jy
aWRnZSBOU1N0cmluZyAqKWtVVFR5cGVSVEZdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgs
IGtVVFR5cGVSVEYsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlUlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250
ZXh0KCkpOwogICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAg
ICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5h
bGx5OwogICAgICAgICByZXR1cm4gYnVmZmVyICYmIHJlYWRlci5yZWFkUlRGKCpidWZmZXIpID8g
UmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CkBA
IC0yNTEsNyArMjUxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICNl
bmRpZiAvLyAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAKICAgICBpZiAoW3N1cHBvcnRlZEltYWdl
VHlwZXMoKSBjb250YWluc09iamVjdDp0eXBlXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4
LCB0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKGl0ZW1JbmRleCwgdHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAg
ICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJl
dHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAg
ICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZEltYWdlKGJ1ZmZlci5yZWxlYXNlTm9uTnVs
bCgpLCB0eXBlLCBpdGVtSW5mby5wcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKSA/IFJlYWRlclJl
c3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5k
ZXggMTY3Y2VmMDJkNzhkNzk0ZGVhYThlNWRkYWY0ZGQ2NmMzZDJjY2E0NS4uMTZiM2Q1ZDQ0MTVk
MjU4NTE1ZjY2MGE4NmFjNmNlZmJkY2RiNjRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC0zMzgsNyArMzM4LDcg
QEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JikKICAgICByZXR1cm4gMDsKIH0KIAotaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNl
dEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJikKK2ludDY0X3QgUGxh
dGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
LCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiAwOwogfQpAQCAtNDYzLDcgKzQ2Myw3IEBA
IHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVu
dCYgY29udGVudCkKIAogICAgIEFTU0VSVChjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBj
b250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9
IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVw
cmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsKKyAgICAg
ICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFb
aV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVu
dC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9y
bWF0KSB7CiAgICAgICAgIGF1dG8gd2ViQXJjaGl2ZURhdGEgPSBjb250ZW50LmRhdGFJbldlYkFy
Y2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpOwpAQCAtNDc5LDcgKzQ3OSw3IEBAIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChjb250ZW50LmRhdGFJ
bkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsKLSAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmlu
ZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0
T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10g
ZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmlu
ZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0
T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10g
ZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKICAgICAgICAgICAg
IFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDphdHRyaWJ1
dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTUwMSw3ICs1MDEsNyBAQCBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7
CiAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4oY29udGVudC5jb250ZW50T3JpZ2luKTsKLSAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVk
QnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Y29jb2FUeXBlKCkpXTsKKyAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRE
YXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FU
eXBlKCkpXTsKIAogICAgIHJlZ2lzdGVySXRlbVRvUGFzdGVib2FyZChyZXByZXNlbnRhdGlvbnNU
b1JlZ2lzdGVyLmdldCgpLCBtX3Bhc3RlYm9hcmQuZ2V0KCkpOwogfQpAQCAtNTE0LDE0ICs1MTQs
MTQgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFn
ZSYgcGFzdGVib2FyZEltYWdlKQogICAgIGF1dG8mIGRhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuY2xp
ZW50RGF0YTsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAg
ICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKIAogICAgIGlmIChwYXN0ZWJvYXJkSW1hZ2Uu
cmVzb3VyY2VEYXRhICYmICFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc0VtcHR5
KCkpIHsKICAgICAgICAgYXV0byB1dGlPck1JTUVUeXBlID0gcGFzdGVib2FyZEltYWdlLnJlc291
cmNlTUlNRVR5cGU7CiAgICAgICAgIGlmICghaXNEZWNsYXJlZFVUSSh1dGlPck1JTUVUeXBlKSkK
ICAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUgPSBVVElGcm9tTUlNRVR5cGUodXRpT3JNSU1FVHlw
ZSk7CiAKLSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VE
YXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJk
SW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkg
Zm9yVHlwZTooTlNTdHJpbmcgKil1dGlPck1JTUVUeXBlXTsKICAgICAgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTpwYXN0ZWJvYXJkSW1h
Z2UuaW1hZ2VTaXplXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0U3Vn
Z2VzdGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CkBAIC02MzUsNyArNjM1
LDcgQEAgc3RhdGljIFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlz
dD4gY3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmEKICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdp
c3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpXZWJQcmVmZXJyZWRQcmVzZW50YXRp
b25TdHlsZUlubGluZV07CiAKICAgICBpZiAoZGF0YS5oYXNTYW1lT3JpZ2luQ3VzdG9tRGF0YSgp
IHx8ICFkYXRhLm9yaWdpbigpLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoYXV0byBzZXJpYWxp
emVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRh
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3Jl
YXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKSB7CiAg
ICAgICAgICAgICAvLyBXZSBzdGFzaCB0aGUgbGlzdCBvZiBzdXBwbGllZCBwYXN0ZWJvYXJkIHR5
cGVzIGluIHRlYW1EYXRhIGhlcmUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBkcmFnIGFuZCBkcm9w
LgogICAgICAgICAgICAgLy8gU2luY2UgdGhlIGNvbnRlbnRzIG9mIGl0ZW0gcHJvdmlkZXJzIGNh
bm5vdCBiZSBsb2FkZWQgcHJpb3IgdG8gZHJvcCwgYnV0IHRoZSBwYXN0ZWJvYXJkIHR5cGVzIGFy
ZQogICAgICAgICAgICAgLy8gY29udGFpbmVkIHdpdGhpbiB0aGUgY3VzdG9tIGRhdGEgYmxvYiBh
bmQgd2UgbmVlZCB0byB2ZW5kIHRoZW0gdG8gdGhlIHBhZ2Ugd2hlbiBmaXJpbmcgYGRyYWdvdmVy
YApAQCAtNjcyLDggKzY3Miw4IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBz
dGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4odmFsdWUpOwotICAgICAgICBbcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlw
ZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOworICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4odmFsdWUpOworICAgICAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOwogICAgIH0pOwog
CiAgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCmluZGV4IDU0NDY1M2M0
NDAzZDI2MDQwYTU1ZDIzZTkzNjkxYmZlZGNjOTJiNDIuLjdhNGEyYjE2NWIyZmE3ZDIwZDViNmU0
YzJkNjVmZTYzZWYwYjAyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QcmV2aWV3Q29udmVydGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QcmV2aWV3Q29udmVydGVySU9TLm1tCkBAIC04Miw3ICs4Miw3IEBAIEBlbmQKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogUHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRlcihjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyJiBwcm92
aWRlcikKLSAgICA6IG1fcHJldmlld0RhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAg
ICA6IG1fcHJldmlld0RhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkg
fQogICAgICwgbV9vcmlnaW5hbFJlc3BvbnNlIHsgcmVzcG9uc2UgfQogICAgICwgbV9wcm92aWRl
ciB7IHByb3ZpZGVyIH0KICAgICAsIG1fcGxhdGZvcm1EZWxlZ2F0ZSB7IGFkb3B0TlMoW1tXZWJQ
cmV2aWV3Q29udmVydGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6KnRoaXNdKSB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDY3
N2Y4Y2FkYWI1OTEyM2UxYjYyZDFiYWMyZDE5MDhiZjY3NmEyZjkuLjBkMjU0OThiODZiZWYxODVk
Mzc2OWQ1YTViYzBiYzJmNzMxYzcwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZShjb25zdCBDb2xvciYgY29sb3IpCiAKIHN0YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3Jh
cHBlcihjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKLSAgICBhdXRv
IHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxl
V2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXSk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxs
b2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VE
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIFt3cmFw
cGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHBh
c3RlYm9hcmRJbWFnZS51cmwudXJsLCBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSld
OwogICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CkBAIC0zNjIsNyArMzYyLDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWlu
VGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3cKICAgICAKICAgICBpZiAodHlwZXMuY29udGFpbnMo
U3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKICAgICAgICAgaWYgKGF1dG8g
ZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChsZWdhY3lSVEZEUGFzdGVib2Fy
ZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgp
KSkgewotICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRv
IGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFJURkQ6ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
ZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAgICAgICAgICAgICAgICAgdGV4dC50ZXh0ID0g
W2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAgICAgICAgICAgICAgICB0ZXh0LmlzVVJMID0g
ZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQppbmRleCAzNTNkMDA2YjkwY2JjZTYwOWU2ZGZk
MzdjMjgwODEzMWYyMTRiOGRhLi44OGQwNDAyNTg0MzcwMmU0YWE0ZjVhOWE1NTZiODgxYzZlNDBj
MmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdy
aXRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRl
ci5tbQpAQCAtMTI4LDExICsxMjgsMTEgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0U3RyaW5nOndlYkNvbnRlbnQtPmRh
dGFJblN0cmluZ0Zvcm1hdCBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVTdHJpbmddOwogCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3ZWJDb250ZW50LT5jbGllbnRUeXBlcy5zaXpl
KCk7ICsraSkKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQt
PmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NB
bHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CisgICAgICAgICAg
ICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxy
ZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOwogCiAgICAgICAgIFBh
c3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgICAgIGN1c3RvbURhdGEuc2V0T3Jp
Z2luKHdlYkNvbnRlbnQtPmNvbnRlbnRPcmlnaW4pOwotICAgICAgICBbcGFzdGVib2FyZEl0ZW0g
c2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOworICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0
RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShTdHJpbmco
UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOwogICAgIH0KIAogICAg
IHJldHVybiBwYXN0ZWJvYXJkSXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGQ5YjdkMjQ4MDM4YzJkYjhhYWIw
OTJjYjkxZmZhNTZmMmNiNGNlNzMuLmMzYjRkMmQ5NjIxNzQ3MWM3MzVlMjRmZTdhNWY5ZDkyMzdk
ZjQ3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBh
c3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
UGFzdGVib2FyZE1hYy5tbQpAQCAtMjYzLDggKzI2Myw4IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0
ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICAgICAg
aWYgKHBsYXRmb3JtVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09y
QnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8
UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAg
ICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4oc3RyaW5nT3JCdWZmZXIpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEg
PSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFz
dGVib2FyZCBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07
CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmlu
Z09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+
KHN0cmluZ09yQnVmZmVyKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFz
dGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7
CiAKICAgICBpZiAoc2hvdWxkV3JpdGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNl
cmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNE
YXRhKCkpCisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVh
dGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAg
ICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkg
Zm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0KIApA
QCAtMzQxLDEyICszNDEsMTIgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpCiAgICAgcmV0dXJuIFttX3Bh
c3RlYm9hcmQgZGVjbGFyZVR5cGVzOmNyZWF0ZU5TQXJyYXkocGFzdGVib2FyZFR5cGVzKS5nZXQo
KSBvd25lcjpuaWxdOwogfQogCi1pbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVy
Rm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSkKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsK
ICAgICBpZiAoIWNhbldyaXRlUGFzdGVib2FyZFR5cGUocGFzdGVib2FyZFR5cGUpKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXRE
YXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpw
YXN0ZWJvYXJkVHlwZV07CisgICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNl
dERhdGE6YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRpZFdyaXRlRGF0
YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7CkBAIC01MDQs
OCArNTA0LDggQEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0
ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAgaWYgKCFwbGF0Zm9y
bVR5cGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAg
ICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0
cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7
CisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURhdGEu
Z2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1
dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmgKaW5kZXggNjgxM2Q1ZGE3ZGNiMGZjMjU5ZjFiZDFlZDBhNTRjMWExYTlmZDlj
Zi4uNzk2NTU0ZjRjOTc2NDUxNDAxZTFhMTIzNzQ2ODcwNDBiMjRiMWNjMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGUuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBNZWRpYVNhbXBsZTsKIGNsYXNz
IE1lZGlhU3RyZWFtUHJpdmF0ZTsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOwogY2xh
c3MgUGxhdGZvcm1BdWRpb0RhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOwog
CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBBdWRpb1ZpZGVvU2VsZWN0ZWRUcmFja3Mgc2VsZWN0VHJhY2tzKE1lZGlhU3RyZWFtUHJp
dmF0ZSYpOwogCi0gICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRv
dWJsZSk+OworICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgZG91YmxlKT47CiAgICAgdmlydHVhbCB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxs
YmFjayYmKSA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3Qg
PSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKaW5kZXggYzI1ZGY5MTU3
NGE2NWJjNDFiZGI3MDY3OGRjNDc3MjQ4MzZkZDE0NS4uNDk4ZDRlZTEzNDBjNGI5NDAwMWI2MGMz
NDQ3OWI3ZjcyZDVjOGU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcApA
QCAtOTMsNyArOTMsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6Z2VuZXJhdGVN
b2NrQ291bnRlclN0cmluZygpCiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpmZXRj
aERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2J1ZmZlckxvY2sg
fTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlIHsgbV9idWZmZXIuY2hhcmFjdGVyczgo
KSwgbV9idWZmZXIubGVuZ3RoKCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKaW5kZXggMjExZjc1ZWU3M2FmNjkxOWU3ZjRjOTk1OGUw
Y2QzNDgyNTMyZDA5Zi4uOWMyYzc5N2I4MTk1MTJkOGZkNTc5MDE1ZGMzYjZlNDA1ZTNiYzYwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
LmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kVmlkZW9TYW1wbGVC
dWZmZXIoTWVkaWFTYW1wbGUmKTsKICAgICB2b2lkIGFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNv
bnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIGNv
bnN0IFdURjo6TWVkaWFUaW1lJiwgc2l6ZV90KTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsK
LSAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYsIGRvdWJsZSk+JiYpOworICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYpOwog
CiAgICAgdm9pZCBwYXVzZSgpOwogICAgIHZvaWQgcmVzdW1lKCk7CkBAIC0xMDUsNyArMTA1LDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZmluaXNoZWRGbHVzaGluZ1NhbXBsZXMoKTsKICAgICB2
b2lkIGNvbXBsZXRlRmV0Y2hEYXRhKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURh
dGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKIAog
ICAgIGJvb2wgbV9oYXNBdWRpbyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1ZpZGVvIHsgZmFs
c2UgfTsKQEAgLTExNyw4ICsxMTcsOCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxBVkFzc2V0
V3JpdGVyPiBtX3dyaXRlcjsKIAogICAgIExvY2sgbV9kYXRhTG9jazsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKLSAgICBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1f
ZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2Rh
dGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKKyAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNo
RGF0YUNvbXBsZXRpb25IYW5kbGVyOwogCiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRp
b25SZWY+IG1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBtX2F1ZGlvQ29tcHJlc3NvcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCA4YzFm
N2MwZTUzMTNiNmI4NTZjZDNjZGY1ZTgzODRmMzZiN2I1M2Y1Li44NDg0MTAwZWFjNWUxMTVlOWIw
Y2YwMTIwYmFiZjc4ZmIxYTEyNzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0xMzcsMTAgKzEzNyw4IEBAIE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogICAgICAg
ICBtX3dyaXRlci5jbGVhcigpOwogICAgIH0KIAotICAgIC8vIEF0IHRoaXMgcG9pbnRlciwgd2Ug
c2hvdWxkIG5vIGxvbmdlciBiZSB3cml0aW5nIGFueSBkYXRhLCBzbyBpdCBzaG91bGQgYmUgc2Fm
ZSB0byBjbG9zZSBhbmQgbnVsbGlmeSBtX2RhdGEgd2l0aG91dCBsb2NraW5nLgogICAgIGlmICht
X3dyaXRlckRlbGVnYXRlKQogICAgICAgICBbbV93cml0ZXJEZWxlZ2F0ZSBjbG9zZV07Ci0gICAg
bV9kYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIobnVsbHB0ciwgMCk7CkBAIC00OTUsNyArNDkzLDcgQEAgdm9pZCBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGluZygpCiAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcik7CiAKQEAgLTUzNywxOCArNTM1LDEzIEBAIHZvaWQgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXBsZXRlRmV0Y2hEYXRhKCkKIHZvaWQgTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IHNpemUpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBpZiAoIW1f
ZGF0YSkgewotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXpl
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBzaXpl
KTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEoKQorUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSgp
CiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBhdXRvIGRhdGEgPSBX
VEZNb3ZlKG1fZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgcmV0dXJuIG1fZGF0YS50YWtl
KCk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnBhdXNlKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaAppbmRleCBh
OWIyOWQ1OWU5YWEzYjQ2NTU0MTViZDhiZWYwOTg0YzU0NGI3M2YwLi5jZGVlNjAzNTIzY2Q2Njk0
NWY0MjhmNjk0Nzg5NjBmNmZkNzRjNzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIERhdGFVUkxEZWNvZGVyIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IGZhZmRmZTg3Yzgz
N2U2MTU3ZDJmMTNlOWE3Y2EwMDk2OWQ1MGIxYzcuLjRiZWJjYjUwOThkMTVjMjk2NmVkOGM3ZWUx
MzZhZTNhMmFlNGEyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlLmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgTmV0d29ya0xvYWRNZXRy
aWNzOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlOwogY2xh
c3MgVGltZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZl
YmU3MDQ4ODRlMmU3MzY2Zi4uYmE4ZmQ0ZmY0ZjFlNDFjOWFkNGZhNzRhNDJiZTRlMmJkMTFhYTg0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5jcHAKQEAgLTM2LDkgKzM2LDkgQEAgUmVzb3VyY2VIYW5kbGVDbGll
bnQ6OlJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCiBSZXNvdXJjZUhhbmRsZUNs
aWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFJlc291cmNl
SGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJl
c291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5k
bGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGEoaGFu
ZGxlLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVu
Y29kZWREYXRhTGVuZ3RoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCmluZGV4IGI2MzM3ZDU2Y2U4Y2Q5
YmVmZjlkZmJlMTEzNjYyYmM3NzU2YjY1MzcuLmM0ZjA1NDg1ZjI4NzBiMTE2ZGE3Yzc2MGQzYzBm
Y2U5NmVjMmI0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgUmVzb3Vy
Y2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGVudW0gQ2FjaGVTdG9yYWdlUG9saWN5IHsKICAgICBTdG9y
YWdlQWxsb3dlZCwKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2Vu
dCovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50
OF90KiwgdW5zaWduZWQsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIHsgfQotICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAg
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3Iu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VH
ZW5lcmF0b3IubW0KaW5kZXggMWZmMDY1MjE2ZmE2ODA4ODE5MzcxNGJjZjJiY2RhZjY5NmYwMjQw
Ni4uMDA4ZTIyNmZmOTE5MDA0YjQ1MTQ4YTI0NzI2MTE2MTUwOTg5NjI3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJh
dG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VS
ZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtNDEsOCArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UpCi0gICAgICAgIDogYnVmZmVy
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgICAgICwgb3JpZ2luYWxSZXNwb25zZShyZXNw
b25zZSkKKyAgICAgICAgOiBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQogICAgICAgICAsIHJl
c291cmNlKCZyZXNvdXJjZSkgeyB9CiAKICAgICBzdHJ1Y3QgVGFza0RhdGEgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8VGFza0RhdGE+IHsKQEAgLTU1LDkgKzU0LDkgQEAgc3RydWN0IFJhbmdlUmVz
cG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgICAgICBzaXplX3QgbmV4dEJ5dGVUb0dpdmVCdWZm
ZXJJbmRleCB7IDAgfTsKICAgICAgICAgZW51bSBjbGFzcyBSZXNwb25zZVN0YXRlIDogdWludDhf
dCB7IE5vdFN5bnRoZXNpemVkWWV0LCBXYWl0aW5nRm9yU2Vzc2lvbiwgU2Vzc2lvbkNhbGxlZENv
bXBsZXRpb25IYW5kbGVyIH0gcmVzcG9uc2VTdGF0ZSB7IFJlc3BvbnNlU3RhdGU6Ok5vdFN5bnRo
ZXNpemVkWWV0IH07CiAgICAgfTsKLSAgICAKKwogICAgIEhhc2hNYXA8UmV0YWluUHRyPFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFzaz4sIHN0ZDo6dW5pcXVlX3B0cjxUYXNrRGF0YT4+IHRhc2tE
YXRhOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1ZmZlcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG9yaWdpbmFsUmVzcG9uc2U7CiAgICAg
ZW51bSBjbGFzcyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgOiBib29sIHsgTm8sIFllcyB9
IHN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyB7IFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGlu
Zzo6Tm8gfTsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNvdXJjZTsKQEAg
LTEwNiwyMiArMTA1LDIyIEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6cmVtb3ZlVGFz
ayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2spCiB2b2lkIFJhbmdlUmVzcG9uc2VH
ZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29y
ZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2UmIHJh
bmdlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBE
YXRhJiBkYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBidWZm
ZXIgPSBkYXRhLmJ1ZmZlcjsKLSAgICBhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsK
IAogICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIGp1c3QgbWFrZSBhIHJhbmdl
IHdpdGggYSAqIGFmdGVyIHRoZSAvIGJ1dCBBVkZvdW5kYXRpb24gZG9lc24ndCBhY2NlcHQgc3Vj
aCByYW5nZXMuCiAgICAgLy8gSW5zdGVhZCwgd2UganVzdCB3YWl0IHVudGlsIHRoZSBsb2FkIGhh
cyBjb21wbGV0ZWQsIGF0IHdoaWNoIHRpbWUgd2Ugd2lsbCBrbm93IHRoZSBjb250ZW50IGxlbmd0
aCBmcm9tIHRoZSBidWZmZXIgbGVuZ3RoLgogICAgIGlmICghZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSBkYXRhLmJ1ZmZlci5z
aXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUgPCByYW5nZS5iZWdpbikKICAgICAgICAgcmV0dXJu
OwotICAgIAorCisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlci5nZXQoKTsKICAgICBhdXRv
KiB0YXNrRGF0YSA9IGRhdGEudGFza0RhdGEuZ2V0KHRhc2spOwogICAgIGlmICghdGFza0RhdGEp
CiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNr
ID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0
YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0geworCisgICAgYXV0byBnaXZlQnl0
ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCBidWZmZXJTaXplLCB0
YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0
aGlzIH1dIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKFt0
YXNrIHN0YXRlXSAhPSBOU1VSTFNlc3Npb25UYXNrU3RhdGVSdW5uaW5nKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTMwLDcgKzEyOSw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6
Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVCiAgICAg
ICAgIGF1dG8mIHJhbmdlID0gdGFza0RhdGEtPnJhbmdlOwogICAgICAgICBhdXRvJiBieXRlSW5k
ZXggPSB0YXNrRGF0YS0+bmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleDsKICAgICAgICAgd2hpbGUg
KHRydWUpIHsKLSAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyLT5zaXplKCkpCisg
ICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlclNpemUpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlclZpZXcgPSBidWZmZXItPmdldFNvbWVEYXRh
KGJ5dGVJbmRleCk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlclZpZXcuc2l6ZSgpIHx8IGJ5dGVJ
bmRleCA+IHJhbmdlLmVuZCkKQEAgLTE3NSw3ICsxNzQsNyBAQCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEo
Y29ucwogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKGRhdGEuc3VjY2Vz
c2Z1bGx5RmluaXNoZWRMb2FkaW5nID09IERhdGE6OlN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGlu
Zzo6WWVzKQotICAgICAgICByZXR1cm4gZGF0YS5idWZmZXItPnNpemUoKTsKKyAgICAgICAgcmV0
dXJuIGRhdGEuYnVmZmVyLnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgc2hvdWxkIHJldHVybiBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gaW5zdGVhZCBvZiB1cyBkb2luZyB0aGlzIGNoZWNrIGhlcmUuCiAgICAgYXV0byBl
eHBlY3RlZENvbnRlbnRMZW5ndGggPSBkYXRhLm9yaWdpbmFsUmVzcG9uc2UuZXhwZWN0ZWRDb250
ZW50TGVuZ3RoKCk7CkBAIC0yNDQsNyArMjQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBmaW5hbAorICAgIHZvaWQgZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikgZmluYWwKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgICAgIGlmICghbV9nZW5lcmF0b3IpCkBAIC0yNTIsNyArMjUxLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgYXV0byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcp
OwogICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRhdGEt
PmJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5h
cHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25z
ZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNl
c3Npb24uaAppbmRleCA0MDQ4ODVhZTYzNzZmY2U2ODA0MGQyYTA1YzAwYmVjNDdmZTE2YWE4Li5j
ZTRjMjU0NWNkZTBmMmY0NmFjMzM4Zjk2YzQ5MDg4ZWI0NWQwOTI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNl
c3Npb24uaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIGNsYXNzIFdlYkNvcmVO
U1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDsKIGVudW0gY2xhc3MgU2hvdWxkQ29udGludWVQb2xp
Y3lDaGVjayA6IGJvb2w7CkBAIC0xNTgsNyArMTU4LDcgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVy
ZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uIDogTlNPYmplY3QgewogLSAodm9pZClyZXNvdXJjZToo
bnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzZW50Qnl0
ZXM6KHVuc2lnbmVkIGxvbmcgbG9uZylieXRlc1NlbnQgdG90YWxCeXRlc1RvQmVTZW50Oih1bnNp
Z25lZCBsb25nIGxvbmcpdG90YWxCeXRlc1RvQmVTZW50OwogLSAodm9pZClyZXNvdXJjZToobnVs
bGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJl
c3BvbnNlOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSBjb21wbGV0
aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51
ZVBvbGljeUNoZWNrKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKEJPT0wpcmVzb3VyY2U6KG51
bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2Fj
aGVSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2U7Ci0t
ICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2Uq
KXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJilkYXRh
OworLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291
cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKWRhdGE7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlIHJlcXVlc3Q6KFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAo
dm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKily
ZXNvdXJjZSBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWRXaXRoRXJyb3I6KGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKWVycm9yOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBsb2FkRmFpbGVkV2l0aEVycm9yOihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5t
bQppbmRleCBlMDQwMTBhOTgxMWI0YzlhZTE0OTQ5OTg3MDFjYTE1NDg5ZjU3MTZjLi44Yzg5ZDkz
ODY1NzkzM2ExZGEyOTAzMTk5MTU4NGM0ZGIyZmFhOWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
Lm1tCkBAIC02MDgsNyArNjA4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYm
KSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGF0
YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25l
ZCBsb25nIGxvbmcpIG92ZXJyaWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJy
b3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKQEAgLTY1Miw3ICs2NTIs
NyBAQCBib29sIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6c2hvdWxkQ2FjaGVS
ZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyYwogICAgIHJldHVybiBbbV90YXNrIHJlc291cmNl
OiZyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOnJlc3BvbnNlXTsKIH0KIAotdm9pZCBXZWJD
b3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmIHJlc291cmNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2Vi
Q29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiByZXNvdXJjZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX3Rhc2tMb2NrIH07CiAgICAgaWYgKCFtX3Rhc2sp
CkBAIC05MTUsMTEgKzkxNSwxMSBAQCAtIChCT09MKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFJlcwogICAgIHJldHVy
biByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRSYW5nZSku
aXNFbXB0eSgpOwogfQogCi0tICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2Uq
KXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJilkYXRh
CistICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2Vp
dmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpZGF0YQogewog
ICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVz
b3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1Nl
bGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7Ci0gICAgICAg
IGF1dG8gbnNEYXRhID0gZGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRh
ID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHN0cm9u
Z1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6ZSgpOwogICAgICAg
ICBpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9IChpZDxOU1VSTFNl
c3Npb25EYXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbi5kZWxlZ2F0ZTsKICAg
ICAgICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxT
ZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAppbmRleCBjMzZlMWY4
ODc2NDMwNDYwY2U3NTBhM2I4YzY1OGM3MzRlY2IxNTA4Li4zNDk0NDU5MjU0YWM5M2ZjMTljYjEy
MTUwYTYxYmMyYmNlZDAyZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQg
Q3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0
LCBDdXJsUmVzcG9uc2UmJiByCiB9CiAKIAotdm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNl
aXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lk
IEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxEb3dubG9hZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxEb3dubG9hZC5oCmluZGV4IGEzYWEwY2Y1ZmNkMjk1NWJiN2IxNmIxMWExYTgxY2E3NGFlNjFj
OGQuLmNkZTQ0NDU3NzVmNzQ0MjMzMDUzMGI2NWIxMzU3YmE2YmZkOWJiODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKQEAg
LTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1cmxS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxS
ZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRl
IHsgfQogICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxS
ZXNwb25zZSYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxS
ZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJsRGlk
UmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdv
cmtMb2FkTWV0cmljcyYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9y
KEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBiYmRhM2ZiZGE3NTgzZDk5MTkzMWRm
ZTE2OWY3YjNhOTEzM2U2ZGEyLi4wOTBkMDM5YmE0NWRlMTAyOGVkZjc2ODRjNmQ3ZDJmMjk2ZTNh
MzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC0xMTksMTIgKzExOSwxMiBAQCBDdXJs
TXVsdGlwYXJ0SGFuZGxlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlKEN1cmxNdWx0aXBhcnRIYW5kbGVD
bGllbnQmIGNsaWVudCwgY29ucwogCiB9CiAKLXZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIEN1cmxNdWx0aXBh
cnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RW5kKQogICAgICAgICByZXR1cm47
IC8vIFRoZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3duIHNvIGlnbm9yZSBldmVyeXRoaW5nLgogCi0g
ICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1f
YnVmZmVyLmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6
ZSgpKTsKIAogICAgIHdoaWxlIChwcm9jZXNzQ29udGVudCgpKSB7IH0KIH0KQEAgLTEzNyw3ICsx
MzcsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKCkKICAgICBpZiAo
bV9zdGF0ZSAhPSBTdGF0ZTo6RW5kKSB7CiAgICAgICAgIC8vIEl0IHNlZW1zIHdlIGFyZSBzdGls
bCBub3QgYXQgdGhlIGVuZCBvZiB0aGUgcHJvY2Vzc2luZy4KICAgICAgICAgLy8gUHVzaCBvdXQg
dGhlIHJlbWFpbmluZyBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21N
dWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5z
aXplKCkpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUobV9idWZmZXIpKSk7CiAgICAgICAgIG1fc3RhdGUg
PSBTdGF0ZTo6RW5kOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKaW5kZXggNWMwOGJjYzVl
YjNlNGJiY2MwMjliNDc2Nzg2OGY0M2UyZjk1YzM0MS4uOWExYTFiYmQxOTM4YTE0ZjY5ZmNjZWUz
ZjBmODliOTdhNGEyMTg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCkBAIC0zNCw3ICszNCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudDsK
IGNsYXNzIEN1cmxSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGUgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgQ3VybE11
bHRpcGFydEhhbmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiwgY29uc3QgU3RyaW5nJik7
CiAgICAgfkN1cmxNdWx0aXBhcnRIYW5kbGUoKSB7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZSgpOwogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKaW5kZXggZmQxM2ZkMzgxMzE0M2Ni
MjY1OWI4ZmQxZGIyNDQ0NzY1ZTk4YTU4MC4uYzgxMzg4NmE4ZDVjNWZhNmMxMmQxNDEzMzE5MTAx
YWYyNTAyYTJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCkBAIC0yOCwxMiAr
MjgsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybFJlc3BvbnNlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3Mg
Q3VybE11bHRpcGFydEhhbmRsZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPFNoYXJlZEJ1
ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBh
cnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIAogcHJvdGVjdGVkOgogICAg
IH5DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBkMzViMGU4Mzkx
OTUxZDM4NjM0ZTk5MDkzYjY4NjU2MjRkOTk3OTUxLi5kODJkZDNjMTBhYzY0NzEzNTk5MWZkN2Fl
NjY5N2U5ZDhlMzEzZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTM5Niw3ICszOTYsNyBAQCBzaXplX3QgQ3Vy
bFJlcXVlc3Q6OmRpZFJlY2VpdmVIZWFkZXIoU3RyaW5nJiYgaGVhZGVyKQogCiAvLyBjYWxsZWQg
d2l0aCBkYXRhIGFmdGVyIGFsbCBoZWFkZXJzIGhhdmUgYmVlbiBwcm9jZXNzZWQgdmlhIGhlYWRl
ckNhbGxiYWNrCiAKLXNpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCitzaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoaXNDb21wbGV0
ZWRPckNhbmNlbGxlZCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTQ0NCw3ICs0NDQsNyBAQCB2
b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0
b3I8U3RyaW5nPiYgaGVhZGVycykKICAgICBpbnZva2VEaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9u
c2UsIEFjdGlvbjo6Tm9uZSk7CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRh
RnJvbU11bHRpcGFydChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlcXVl
c3Q6OmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNzc3LDcgKzc3Nyw3IEBAIGNvbnN0IFN0cmluZyYgQ3VybFJlcXVlc3Q6
OmdldERvd25sb2FkZWRGaWxlUGF0aCgpCiAgICAgcmV0dXJuIG1fZG93bmxvYWRGaWxlUGF0aDsK
IH0KIAotdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFU
b0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kb3dubG9hZE11dGV4IH07
CkBAIC03OTAsNyArNzkwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9h
ZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAg
aWYgKG1fZG93bmxvYWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUpCi0gICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxl
SGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9z
ZURvd25sb2FkRmlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdC5oCmluZGV4IDZiZDhhNmJmYmEzNzUyY2VkZGRiYzUwMDllYWU4M2M0
ZjBlZWQ2NDEuLjNjN2NkZDg4M2ViNjJiZmU5MmNmMDQ0NWVkMjliZDI2ZWNlM2U5MjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5o
CkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEN1cmxSZXF1ZXN0
Q2xpZW50OwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFz
cyBTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZTsKIAogY2xhc3MgQ3VybFJlcXVlc3QgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q3VybFJlcXVlc3Q+LCBwdWJsaWMgQ3VybFJlcXVl
c3RTY2hlZHVsZXJDbGllbnQsIHB1YmxpYyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50IHsKQEAg
LTEyMiw5ICsxMjIsOSBAQCBwcml2YXRlOgogICAgIENVUkwqIHNldHVwVHJhbnNmZXIoKSBvdmVy
cmlkZTsKICAgICBzaXplX3Qgd2lsbFNlbmREYXRhKGNoYXIqLCBzaXplX3QsIHNpemVfdCk7CiAg
ICAgc2l6ZV90IGRpZFJlY2VpdmVIZWFkZXIoU3RyaW5nJiYpOwotICAgIHNpemVfdCBkaWRSZWNl
aXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzaXplX3QgZGlkUmVjZWl2ZURhdGEo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUhlYWRl
ckZyb21NdWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKLSAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVRyYW5zZmVyKENV
Ukxjb2RlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNlbFRyYW5zZmVyKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBmaW5hbGl6ZVRyYW5zZmVyKCk7CkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0
ZToKICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgbmV0d29ya0xvYWRNZXRyaWNzKCk7CiAKICAgICAv
LyBEb3dubG9hZAotICAgIHZvaWQgd3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29u
c3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5h
YmxlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBjbG9zZURvd25s
b2FkRmlsZSgpOwogICAgIHZvaWQgY2xlYW51cERvd25sb2FkRmlsZSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVu
dC5oCmluZGV4IDA4Yzg2YzdkNDY4NGJhNmY3OGQ2MTZiNjhkMDY5MDRjMzdhOTY2NzcuLjM0Nzk4
MzJmNTc2ZDQxMjhhZmE1MWM4MTQyNGNjZmQ3NDFkZjZhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCkBA
IC0zNCw3ICszNCw3IEBAIGNsYXNzIEN1cmxSZXF1ZXN0OwogY2xhc3MgQ3VybFJlc3BvbnNlOwog
Y2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxS
ZXF1ZXN0Q2xpZW50IHsKIHB1YmxpYzoKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcg
bG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYs
IEN1cmxSZXNwb25zZSYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlQnVm
ZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJs
UmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1
cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZp
Y2F0ZUluZm8mJikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3Bw
CmluZGV4IDgxOGQ1YTk1ZTNlMTI0ZGMzYTcyZjc0M2U1Y2Q0NTNkNzE3ZTAxMGYuLjMwNWQ0ZTVj
OWZjMjcwNzc1Nzg3YjBmOWE5MTk3OWMwODg4OWE4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhh
bmRsZURlbGVnYXRlLmNwcApAQCAtMTQyLDE1ICsxNDIsMTYgQEAgdm9pZCBDdXJsUmVzb3VyY2VI
YW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVz
dCwgQ3UKICAgICB9KTsKIH0KIAotdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3Vy
bERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKK3ZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVy
KEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRs
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRv
bigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOwotICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShi
dWZmZXIpLCBidWZmZXItPnNpemUoKSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigp
LmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKKyAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdU
Rk1vdmUoY29udGlndW91c0J1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0
d29ya0xvYWRNZXRyaWNzJiYgbWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRl
LmgKaW5kZXggNmQ1NTg2NDQ1MmZkNDZlZTc4MDBlOTMxMjNiMTI4YmRjNjRjZTQ4Ny4uZGFmMGE1
OWE0ZTU4NmQ3MTE0YWJiNGU1ZWY5YzU0ZjZhOGJlZmM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhh
bmRsZURlbGVnYXRlLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjdXJs
RGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1
bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBmaW5hbDsKICAgICB2b2lkIGN1
cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgZmluYWw7
Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVl
c3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBjdXJs
RGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgZmluYWw7CiAg
ICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3Im
JiwgQ2VydGlmaWNhdGVJbmZvJiYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50
LmgKaW5kZXggYmM0ZGFhZmJmMjFhMTVjMGU2ZGQxYWNkNDYyMmFmYTU2YjdiOGQ1ZC4uMWY0YTE5
MzEzMzEyYzVkZDZhNDhhZDUzMzlkZmQyYzNiNWRlYzI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXJDbGllbnQuaApAQCAtMzEsMTIgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xh
c3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPExlZ2FjeVBy
ZXZpZXdMb2FkZXJDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lQcmV2aWV3
TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmluaXNoTG9hZGluZygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgeyB9
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFy
ZWRCdWZmZXJQT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRC
dWZmZXJQT1NJWC5jcHAKaW5kZXggMGZiNDUwMDcyZmExMDQyMmY2YTlmZTQzMmMzODFkM2QxOTYx
M2U2MC4uZDYzMjIyNTY0ZWYwNzRjZGJjZDdlZTIxM2VhOTkxNTc0MDdlMzU1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcApA
QCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7
CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC02OCw3ICs2OCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
RnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgaWYgKHRvdGFsQnl0
ZXNSZWFkICE9IGJ5dGVzVG9SZWFkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIHJldHVybiBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3Rl
Ym9hcmRXaW4uY3BwCmluZGV4IGM1NDQ1Mzg1YTc3YWMxMmMwOWVmMjQ4NjY0NzNkNjJjYjY3OTQ1
NWEuLjQ1MzY4MWJkYWIyZTRhMDVhMjFmYzY4YTk0MzcwMGUwNmM5OTdhMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTM1Niw3ICszNTYs
NyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJp
bmcmIHR5cGUpCiAKIHN0cnVjdCBQYXN0ZWJvYXJkRmlsZUNvdW50ZXIgZmluYWwgOiBQYXN0ZWJv
YXJkRmlsZVJlYWRlciB7CiAgICAgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmlu
YWwgeyArK2NvdW50OyB9Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsIHsgKytjb3VudDsgfQorICAgIHZv
aWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWwgeyArK2NvdW50OyB9CiAKICAgICB1bnNpZ25lZCBjb3Vu
dCB7IDAgfTsKIH07CkBAIC05NzQsNyArOTc0LDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xv
YmFsSW1hZ2VGaWxlRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJgog
ICAgIHJldHVybiBtZW1PYmo7CiB9CiAKLXN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdl
RmlsZUNvbnRlbnQoU2hhcmVkQnVmZmVyKiBkYXRhKQorc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xv
YmFsSW1hZ2VGaWxlQ29udGVudChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAg
IEhHTE9CQUwgbWVtT2JqID0gR2xvYmFsQWxsb2MoR1BUUiwgZGF0YS0+c2l6ZSgpKTsKICAgICBp
ZiAoIW1lbU9iaikgCkBAIC05ODYsMTUgKzk4NiwxNSBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVH
bG9iYWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogCi0gICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgQ29weU1lbW9yeShm
aWxlQ29udGVudHMsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YS0+
c2l6ZSgpKQorICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgR2xvYmFsVW5sb2NrKG1lbU9i
aik7CiAKICAgICByZXR1cm4gbWVtT2JqOwogfQogCi1zdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9i
YWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlZEJ1
ZmZlciogZGF0YSkKK3N0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25z
dCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSkKIHsKICAgICBpZiAoZmlsZU5hbWUuaXNFbXB0eSgpIHx8ICFkYXRhKQogICAgICAgICByZXR1
cm4gMDsKQEAgLTEwMzgsOCArMTAzOCw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhE
cm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkCiAgICAg
ICAgIC8vIFdyaXRlIHRoZSBkYXRhIHRvIHRoaXMgdGVtcCBmaWxlLgogICAgICAgICBEV09SRCB3
cml0dGVuOwogICAgICAgICBCT09MIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IEZBTFNFOwotICAgICAg
ICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3Jp
dGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0
ZW4sIDApOworICAgICAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICAgICAgdGVtcFdyaXRl
U3VjY2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOwogICAgICAgICBDbG9zZUhh
bmRsZSh0ZW1wRmlsZUhhbmRsZSk7CiAgICAgICAgIGlmICghdGVtcFdyaXRlU3VjY2VlZGVkKQog
ICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMDcxLDcgKzEwNzEsNyBAQCB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlSW1hZ2VUb0RhdGFPYmplY3QoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVVJMJiB1
cmwpCiAgICAgaWYgKCFjYWNoZWRJbWFnZSB8fCAhY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVy
ZXIoZWxlbWVudC5yZW5kZXJlcigpKSB8fCAhY2FjaGVkSW1hZ2UtPmlzTG9hZGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFNoYXJlZEJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBjYWNoZWRJbWFn
ZS0+aW1hZ2VGb3JSZW5kZXJlcihlbGVtZW50LnJlbmRlcmVyKCkpLT5kYXRhKCk7CisgICAgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JS
ZW5kZXJlcihlbGVtZW50LnJlbmRlcmVyKCkpLT5kYXRhKCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZl
ciB8fCAhaW1hZ2VCdWZmZXItPnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDQxMWVkYmIzNTE3Yjg0OGZhYzA2
M2QxOWU4Y2Q5NWVjMDAzN2NkNjEuLjg0ZmEyOWNlMWYzMDBmZTI5MGIwNDE0NjQ4ZjBmNzI5MGE3
Y2JlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rvcnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC02
Myw3ICs2Myw3IEBAIGJvb2wgTW9ja0NETUZhY3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtKQogICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGtl
eVN5c3RlbSwgIm9yZy53ZWJraXQubW9jayIpOwogfQogCi12b2lkIE1vY2tDRE1GYWN0b3J5Ojph
ZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4mJiBrZXlzKQordm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldp
dGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PiYmIGtleXMpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nlc3Npb25zLmFkZChpZCwgV1RG
TW92ZShrZXlzKSk7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQpAQCAtNzQsNyArNzQs
NyBAQCB2b2lkIE1vY2tDRE1GYWN0b3J5OjphZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0
cmluZyYgaWQsIFZlY3RvcjxSZWY8U2hhcmVkQgogICAgICAgICB2YWx1ZS5hcHBlbmQoV1RGTW92
ZShrZXkpKTsKIH0KIAotVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBNb2NrQ0RNRmFjdG9yeTo6
cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpCitWZWN0b3I8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21T
ZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpCiB7CiAgICAgYXV0byBpdCA9IG1fc2Vzc2lv
bnMuZmluZChpZCk7CiAgICAgaWYgKGl0ID09IG1fc2Vzc2lvbnMuZW5kKCkpCkBAIC04Myw3ICs4
Myw3IEBAIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtl
eXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpCiAgICAgcmV0dXJuIFdURk1vdmUoaXQtPnZh
bHVlKTsKIH0KIAotY29uc3QgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiogTW9ja0NETUZhY3Rv
cnk6OmtleXNGb3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0Citjb25zdCBW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiogTW9ja0NETUZhY3Rvcnk6OmtleXNG
b3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0CiB7CiAgICAgYXV0byBpdCA9
IG1fc2Vzc2lvbnMuZmluZChpZCk7CiAgICAgaWYgKGl0ID09IG1fc2Vzc2lvbnMuZW5kKCkpCkBA
IC0yMDIsNyArMjAyLDcgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QK
ICAgICByZXR1cm4gbV9mYWN0b3J5ICYmIG1fZmFjdG9yeS0+c3VwcG9ydHNTZXNzaW9ucygpOwog
fQogCi1ib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAorYm9vbCBNb2Nr
Q0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAgICAgaWYgKCFz
dXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMjExLDEyICsyMTEsMTMgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVm
ZmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6
c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7Ci0gICAgaWYgKCFj
aGFyYWN0ZXJzQXJlQWxsQVNDSUkocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQor
ICAgIGF1dG8gYnVmZmVyID0gcmVzcG9uc2UubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBpZiAoIWNo
YXJhY3RlcnNBcmVBbGxBU0NJSShidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5
ID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOwor
ICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcoYnVmZmVyLT5kYXRhKCks
IHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmICghcmVzcG9uc2VBcnJheS5j
b250YWlucyhTdHJpbmcoInZhbGlkLXJlc3BvbnNlIl9zKSkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMjY5LDkgKzI3MCw5IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlOjppbml0aWFsaXpl
V2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0CiAgICAgY2Fs
bGJhY2soaW5pdGlhbGl6ZSgpKTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxs
YmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmlj
YXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmll
dyhjZXJ0aWZpY2F0ZS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKKyAgICBTdHJpbmdW
aWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKIAogICAgIGNhbGxiYWNrKGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UoY2VydGlmaWNhdGVTdHJpbmdWaWV3LCAidmFsaWQiKSA/IFN1Y2NlZWRlZCA6
IEZhaWxlZCk7CiB9CkBAIC0yOTcsNyArMjk4LDcgQEAgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6
TW9ja0NETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRyPE1vY2tDRE1JbnN0YW5jZT4mJiBpbnN0YW4K
IHsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3Zv
aWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGlj
ZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewog
ICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFuY2UtPmZh
Y3RvcnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7CkBAIC0zMjMsNyArMzI0LDcg
QEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVMKICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShsaWNlbnNlLmRhdGEoKSwgbGljZW5zZS5sZW5ndGgoKSksIHNlc3Npb25JRCwgZmFsc2Us
IFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNz
aW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAg
TW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2luc3RhbmNlID8gbV9pbnN0YW5jZS0+ZmFjdG9y
eSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3RvcnkpIHsKQEAgLTMzMSw3ICszMzIsNyBAQCB2
b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSUQsIExpY2Vuc2VUeXBlLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVmVj
dG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPmRhdGEoKSwgcmVz
cG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZl
Y3RvciA9IFN0cmluZyhyZXNwb25zZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNwb25z
ZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5z
KFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwg
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpG
YWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCmluZGV4IGY1Y2Rh
NTA1Y2YyYTMzYzEwNWYwMjVjOTdjOTM1MGE5Njg2OThlMWUuLmQ5NmMxNTZlZTRkMjc5MWI4YjA5
OThkYWY5NDBlYzc1Mzc4MDdiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0
b3J5LmgKQEAgLTc3LDkgKzc3LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNTZXNzaW9uV2l0
aElEKGNvbnN0IFN0cmluZyYgaWQpIHsgcmV0dXJuIG1fc2Vzc2lvbnMuY29udGFpbnMoaWQpOyB9
CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIHsgbV9zZXNz
aW9ucy5yZW1vdmUoaWQpOyB9Ci0gICAgdm9pZCBhZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0
IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4mJik7Ci0gICAgY29uc3QgVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+Pioga2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5n
JiBpZCkgY29uc3Q7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiByZW1vdmVLZXlzRnJv
bVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCk7CisgICAgdm9pZCBhZGRLZXlzVG9TZXNz
aW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+JiYpOworICAgIGNvbnN0IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
KiBrZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdDsKKyAgICBWZWN0
b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiByZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRo
SUQoY29uc3QgU3RyaW5nJiBpZCk7CiAKIHByaXZhdGU6CiAgICAgTW9ja0NETUZhY3RvcnkoKTsK
QEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2FuQ3JlYXRlSW5zdGFuY2Vz
IHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9zdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcyB7IHRydWUg
fTsKICAgICBib29sIG1fc3VwcG9ydHNTZXNzaW9ucyB7IHRydWUgfTsKLSAgICBIYXNoTWFwPFN0
cmluZywgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gbV9zZXNzaW9uczsKKyAgICBIYXNoTWFw
PFN0cmluZywgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IG1fc2Vzc2lvbnM7
CiB9OwogCiBjbGFzcyBNb2NrQ0RNIDogcHVibGljIENETVByaXZhdGUgewpAQCAtMTIxLDggKzEy
MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwogICAg
IGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29s
IHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVm
ZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAg
IFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IG1fZmFjdG9yeTsKQEAgLTEzOSw3ICsxMzksNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5
cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6Ok1vY2s7IH0KICAg
ICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVu
dFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0
aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Cisg
ICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9y
eShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNv
bnN0IGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24o
KSBmaW5hbDsKQEAgLTE1NCw4ICsxNTQsOCBAQCBwdWJsaWM6CiAgICAgTW9ja0NETUluc3RhbmNl
U2Vzc2lvbihXZWFrUHRyPE1vY2tDRE1JbnN0YW5jZT4mJik7CiAKIHByaXZhdGU6Ci0gICAgdm9p
ZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmlu
YWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAg
dm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNh
bGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBM
aWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVD
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGlj
ZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGZjMTI3YjdiNjdiZWE3
MzQ0NjNjZDJkNWIwNzU2YjU5YmViYTU4YWUuLjA1OWYzYTM4NmI2Y2Y1ZmE3OWIzYzE4OTcwMTUz
MTNmN2NkYjRlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRl
bnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXIuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6ZmluaXNo
ZWRBZGRpbmdEYXRhKCkKICAgICBtYXliZURldGVybWluZVN0YXR1cyhEZWNpc2lvblBvaW50OjpB
ZnRlckZpbmlzaGVkQWRkaW5nRGF0YSk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE1vY2tDb250
ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IE1vY2tDb250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAogewogICAg
IEFTU0VSVChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KG1fcmVwbGFjZW1lbnREYXRhLmRhdGEoKSwgbV9yZXBsYWNlbWVudERhdGEuc2l6ZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaAppbmRleCA0MTFhMzAwOTQ3
YjUzOWUyNmFhNmM2NGEwMDkzMjkyZTlmZmJlNmI5Li42MzVhYzg0YmU3OTM4NDdhYTU3MjEzZDAx
ZmZjMWU3NGY3NmI3NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZp
bHRlci5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2
ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlz
aGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2Vt
ZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpCiAgICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVy
KCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVm
ZmVyLmNwcAppbmRleCA2ZDQ4YmQwMmQxYzkxZjdlZWQ4NjRhMTZjZDc1NmJiMDc3ZDY1NTJhLi41
Zjg1NDVlYmE1YjBlN2I4YmJhYmE1YzY5M2MyYTQzNDE4OGIyYmE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIFNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
ewogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIu
YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogU2NyaXB0QnVmZmVyIFNj
cmlwdEJ1ZmZlcjo6ZW1wdHkoKQpAQCAtNDYsMTQgKzQ2LDEzIEBAIFNjcmlwdEJ1ZmZlciBTY3Jp
cHRCdWZmZXI6OmVtcHR5KCkKICAgICByZXR1cm4gU2NyaXB0QnVmZmVyIHsgU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKSB9OwogfQogCi0KIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29u
c3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgbV9idWZmZXItPmZvckVhY2hTZWdtZW50KFsm
XShhdXRvJiBzZWdtZW50KSB7CisgICAgbV9idWZmZXIuZ2V0KCktPmZvckVhY2hTZWdtZW50KFsm
XShhdXRvJiBzZWdtZW50KSB7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVU
Rjgoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7CiAgICAgfSk7CiAgICAgcmV0dXJu
IGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTYxLDE1ICs2MCwxMyBAQCBTdHJpbmcgU2NyaXB0QnVm
ZmVyOjp0b1N0cmluZygpIGNvbnN0CiAKIGJvb2wgU2NyaXB0QnVmZmVyOjpjb250YWluc1Npbmds
ZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9i
dWZmZXItPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci0+YmVnaW4oKS0+c2VnbWVudC0+Y29u
dGFpbnNNYXBwZWRGaWxlRGF0YSgpOworICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci5n
ZXQoKS0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLmdldCgpLT5iZWdpbigpLT5zZWdtZW50
LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CiB9CiAKIHZvaWQgU2NyaXB0QnVmZmVyOjphcHBl
bmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAg
bV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8gdXRmOCA9IHN0cmlu
Zy51dGY4KCk7Ci0gICAgbV9idWZmZXItPmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgo
KSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0K
IAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwgY29uc3QgU2NyaXB0QnVm
ZmVyJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKaW5kZXggYjM5ZDljMTMw
MzMwMzExYzA0ZDdmMzc5NmI3MWEwNDMxMzRjNjY0Ni4uZmQyYzFhZTJmNjNiNjBkNzRjMzBkMjQy
YTk4OWEwYmZkOTFkZTQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3Jp
cHRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCkBA
IC0zOCw3ICszOCw3IEBAIGNsYXNzIFNjcmlwdEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgU2NyaXB0
QnVmZmVyKCkgPSBkZWZhdWx0OwogCi0gICAgU2NyaXB0QnVmZmVyKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQorICAgIFNjcmlwdEJ1ZmZlcihSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogICAg
IHsKICAgICB9CkBAIC00OCwxNyArNDgsMTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyB0b1N0
cmluZygpIGNvbnN0OwotICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZm
ZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQogCi0gICAgU2NyaXB0
QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZl
ciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLT5jb3B5KCkpIDogbnVsbHB0cik7IH0K
KyAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVm
ZmVyKG1fYnVmZmVyID8gUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLmNv
cHkoKSkgOiBudWxscHRyKTsgfQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7
IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
IW1fYnVmZmVyIHx8ICFtX2J1ZmZlci0+c2l6ZSgpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIuaXNFbXB0eSgpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdDsKICAgICB2b2lkIGFw
cGVuZChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgorICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVk
IHNjcmlwdC4KIH07CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImLCBjb25z
dCBTY3JpcHRCdWZmZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9u
dExvYWRSZXF1ZXN0LmNwcAppbmRleCA3NzQxNmVjMDdkN2I2OGIxMjhlMjk2MWVkYzVkNjQwZDA0
ZDRiZDQ1Li40MDY2ZmIzNTJlYjViMDg3ZDVkOGQ0N2Q4MDJmZDJjMGE2YTgwZmZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC00
NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6
V29ya2VyRm9udExvYWRSZXF1ZXN0KFVSTCYmIHVybCwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBs
b2FkZWRGcm9tT3BhcXVlU291cmNlKQogICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQogICAgICwg
bV9sb2FkZWRGcm9tT3BhcXVlU291cmNlKGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCisgICAgLCBt
X2RhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBAIC03
NSwxMiArNzYsMjEgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29ya2VyR2xv
YmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkod29ya2VyR2xvYmFsU2NvcGUsIFdURk1vdmUocmVx
dWVzdCksICp0aGlzLCBvcHRpb25zKTsKIH0KIAorYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6
OmlzUGVuZGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2lzTG9hZGluZyAmJiAhbV9lcnJv
ck9jY3VycmVkICYmIG1fZGF0YS0+aXNOdWxsKCk7Cit9CisKIGJvb2wgV29ya2VyRm9udExvYWRS
ZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBp
ZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lz
TG9hZGluZykgewotICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KG1fZGF0YSk7
Ci0gICAgICAgIGlmIChtX2RhdGEpIHsKLSAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZGF0YSwgbV91cmwuZnJhZ21l
bnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGNvbnRpZ3VvdXNEYXRhOworICAgICAgICBpZiAobV9kYXRhLT5nZXQoKSkKKyAgICAgICAgICAg
IGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAg
ICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAg
ICBpZiAoY29udGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgIG1fZGF0YS0+YXBwZW5kKCpjb250
aWd1b3VzRGF0YSk7CisgICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJ
ZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CiAgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBs
YXRmb3JtRGF0YSkKICAgICAgICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogICAg
ICAgICB9CkBAIC0xMTcsOSArMTI3LDYgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgIGlm
IChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9kYXRhKQot
ICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAgbV9kYXRhLT5h
cHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IGI5ZmNmYjFkNmZlYThhZDVlNzgwYmRlZWJj
NWM2ZTA0YTFlODYzYzcuLjFiM2Q3ODcwZjEyOGJmZTUzOGVlNmM5ODU5Y2RhYWU4MWU0NWUyYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApA
QCAtMzAsMTMgKzMwLDE0IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAj
aW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
KyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogc3RydWN0IEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAg
Ym9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1f
ZXJyb3JPY2N1cnJlZCAmJiAhbV9kYXRhOyB9CisgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBm
aW5hbDsKICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNMb2Fk
aW5nOyB9CiAgICAgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9l
cnJvck9jY3VycmVkOyB9CiAKQEAgLTc2LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBGb250TG9h
ZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xpZW50IHsgbnVsbHB0ciB9OwogCiAg
ICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVy
PiBtX2RhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1f
Zm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmgKaW5kZXgg
ZWIyNjZiNmMwN2U2NzNkOTE2NmNhY2U2YjMzOTE5ZDgwZWJiZjMxYy4uMDk3NTQzZTFiM2IzMGZm
MzE0N2Q5MjMyYTU4Y2U0YTllNjJmM2U0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmgKQEAgLTQy
LDcgKzQyLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKIGNsYXNzIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsKIGNsYXNzIFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIG5hbWVzcGFjZSBTZXJ2aWNlV29ya2VyRmV0Y2ggewogY2xhc3MgQ2xpZW50IDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENsaWVudCwgV1RGOjpEZXN0cnVjdGlvblRocmVh
ZDo6TWFpbj4gewpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YUFu
ZEZpbmlzaChSZWY8Rm9ybURhdGE+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChj
b25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2goKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2NyaXB0U3RvcmFnZS5jcHAKaW5kZXggODlhODc1ZjhhZmMwZDYyMzU1YWM2MjI5YTY0YzFj
YTQzZDE4NTY1Mi4uOWE4ZmIzNWNhNTM2MTA1YmI2ZDZmYzQ2ZWUxMjI0NTkzM2Y3MGJmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0
b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
Y3JpcHRTdG9yYWdlLmNwcApAQCAtMTI3LDcgKzEyNyw4IEBAIFNjcmlwdEJ1ZmZlciBTV1Njcmlw
dFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJl
Z2lzCiAgICAgfQogCiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gZGlzYWJsZSBmaWxlIG1h
cHBpbmcgaW4gbW9yZSBjYXNlcyB0byBhdm9pZCBoYXZpbmcgdG9vIG1hbnkgZmlsZSBkZXNjcmlw
dG9ycyBvcGVuPwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hv
dWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1h
cHBpbmc6OlllcyA6IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1v
ZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBTaGFyZWRCdWZm
ZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBw
aW5nOjpObyk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAogdm9pZCBTV1NjcmlwdFN0b3JhZ2U6
OmNsZWFyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktl
eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGFiOTk2MDNlYTUzZTI0
NmI2MzMyMWZiZDQxNDFjYzVlMjljZTk2YjQuLmZjY2MyYTllZDIwZDc0N2MwOWM2MTZiNDk4ZTUz
MGVmNzhhOGU1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTE4
LDYgKzExOCw3IEBAIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9yZXNwb25zZUNhY2hlSXNWYWxpZChmYWxzZSkK
ICAgICAsIG1fcmVhZHlTdGF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVU5TRU5UKSkKICAgICAs
IG1fcmVzcG9uc2VUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZXNwb25zZVR5cGU6OkVtcHR5
U3RyaW5nKSkKKyAgICAsIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKG1ha2VVbmlxdWVSZWY8U2hh
cmVkQnVmZmVyQnVpbGRlcj4oKSkKICAgICAsIG1fcHJvZ3Jlc3NFdmVudFRocm90dGxlKCp0aGlz
KQogICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZYTUxIdHRwUmVxdWVzdDo6dGltZW91dFRp
bWVyRmlyZWQpCiB7CkBAIC0yMDcsOCArMjA4LDggQEAgUmVmPEJsb2I+IFhNTEh0dHBSZXF1ZXN0
OjpjcmVhdGVSZXNwb25zZUJsb2IoKQogCiAgICAgLy8gRklYTUU6IFdlIGp1c3QgcmVjZWl2ZWQg
dGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBzZW5kaW5nIGl0IGJhY2suIFRo
aXMgaXMgaW5lZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgaWYgKG1f
YmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRhID0gc3RkOjpleGNoYW5nZShtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJhY3REYXRhKCk7CisgICAgaWYgKCFt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkpCisgICAgICAgIGRhdGEgPSBtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT5leHRyYWN0RGF0YSgpOwogICAgIFN0cmluZyBub3Jt
YWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUocmVzcG9uc2VN
SU1FVHlwZShGaW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBkZWZhdWx0
cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgogICAgIHJldHVybiBCbG9iOjpj
cmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGRhdGEpLCBub3JtYWxpemVk
Q29udGVudFR5cGUpOwogfQpAQCAtMjE4LDggKzIxOSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIoKQogICAgIEFTU0VSVChy
ZXNwb25zZVR5cGUoKSA9PSBSZXNwb25zZVR5cGU6OkFycmF5YnVmZmVyKTsKICAgICBBU1NFUlQo
ZG9uZVdpdGhvdXRFcnJvcnMoKSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1fYmluYXJ5UmVzcG9u
c2VCdWlsZGVyID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwotICAgIG1fYmluYXJ5UmVzcG9u
c2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlc3VsdCA9ICFtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlci0+aXNOdWxsKCkgPyBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT50cnlD
cmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBYTUxIdHRwUmVx
dWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVzcG9uc2VFbmNvZGluZyA9IFN0
cmluZygpOwogICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7CiAgICAgbV9yZXNwb25zZURv
Y3VtZW50ID0gbnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7
CisgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnJlc2V0KCk7CiAgICAgbV9yZXNwb25zZUNh
Y2hlSXNWYWxpZCA9IGZhbHNlOwogfQogCkBAIC0xMDY1LDggKzEwNjUsNiBAQCB2b2lkIFhNTEh0
dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQog
ICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwg
bGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5hcnkgZGF0YS4KLSAgICAg
ICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgICAgIG1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgbV9iaW5hcnlS
ZXNwb25zZUJ1aWxkZXItPmFwcGVuZChkYXRhLCBsZW4pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaAppbmRleCA3Mjg5NGFmNmNjNDdkYmFlNWU3NWMzYTgwNzkwOWVmMjg0
ZjZkNTk3Li4xNjJjYTk1YWViNzU0NDg5YmQ2Y2Q4Y2RjNTA4NjJjODQ3NzdiYWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlRo
cmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5o
IgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5j
bHVkZSAiWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1
ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KQEAgLTQ1LDcg
KzQ2LDcgQEAgY2xhc3MgQmxvYjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRE9NRm9ybURhdGE7
CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVGhyZWFk
YWJsZUxvYWRlcjsKIGNsYXNzIFVSTFNlYXJjaFBhcmFtczsKQEAgLTIzNyw3ICsyMzgsNyBAQCBw
cml2YXRlOgogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKKyAgICBVbmlx
dWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CiAKICAg
ICBTdHJpbmdCdWlsZGVyIG1fcmVzcG9uc2VCdWlsZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKaW5k
ZXggNTczMDY3ZTNkZDA1MGZlYjdjNTc5ZDAwMTAyZWU5ZjYwNDViNTMxMy4uMzFjMmQ3NmYyZWUx
YjlkMjQ5YjAwMWI3ZWZmODkyZWMyYTc0NTZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcApAQCAtNjEs
NyArNjEsNyBAQCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojp+UmVtb3RlQ0RNSW5zdGFuY2VQcm94
eSgpCiAgICAgbV9pbnN0YW5jZS0+Y2xlYXJDbGllbnQoKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVByb3h5Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0
IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKK3ZvaWQgUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eTo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChj
b25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRh
KQogewogICAgIGlmICghbV9jZG0pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCmluZGV4
IDhlNzNkM2Q5YTY0Yjk4YmZjMDA5MzZjZDQ3YzRjMjVhOTI3OWYyYzguLjAyYzVjZDM3YWU1NDgw
MmY2ZDBjOGRjY2NiMGJhODBjZjMzODhjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaApAQCAtNjYsNyArNjYs
NyBAQCBwcml2YXRlOgogICAgIFJlbW90ZUNETUluc3RhbmNlUHJveHkoV2Vha1B0cjxSZW1vdGVD
RE1Qcm94eT4mJiwgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlPiYmLCBVbmlxdWVSZWY8UmVtb3Rl
Q0RNSW5zdGFuY2VDb25maWd1cmF0aW9uPiYmLCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIp
OwogCiAgICAgLy8gQ0RNSW5zdGFuY2VDbGllbnQKLSAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlh
bGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJl
Y2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCmluZGV4IGU1NzY2YzIzMzRjZmQzODkzMTBjZDRi
MjE3MjNjYWJhMzc0MmZjN2MuLmRlODI3M2I5Y2Y1MDBhNGQ2NmFhMTQ0ZWRlMDIwMWVlZjFlZDg2
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcApAQCAtNzAsNyArNzAsNyBAQCB2
b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSB0eXBlLCBBdG9tU3RyaW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Nl
c3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVy
KCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9v
bCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1
ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UodHlw
ZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0YS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBbY29t
cGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1
YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11
dGFibGUgewogICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Npb25JZCwg
bmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6
U3VjY2VlZGVkKTsKICAgICB9KTsKIH0KQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5OjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIENsb3NlUwogCiB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZW1vdmVT
ZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVt
b3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNvbXBsZXRpb24pCiB7Ci0gICAgbV9zZXNzaW9uLT5y
ZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9uID0gV1RGTW92ZShj
b21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5U3Rh
dHVzZXMsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYgZXhwaXJlZFNlc3Npb25z
RGF0YSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxl
IHsKKyAgICBtX3Nlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSwgW2Nv
bXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlT
dGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNlcywgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+JiYgZXhwaXJlZFNlc3Npb25zRGF0YSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpT
dWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5jZTsKICAgICAg
ICAgaWYgKGV4cGlyZWRTZXNzaW9uc0RhdGEpCiAgICAgICAgICAgICBleHBpcmVkU2Vzc2lvbkRh
dGFSZWZlcmVuY2UgPSBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZSgqZXhwaXJlZFNlc3Np
b25zRGF0YSkpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1CiAg
ICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6VXBkYXRlS2V5U3RhdHVzZXMoV1RGTW92ZShrZXlT
dGF0dXNlcykpLCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5OjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIG1lc3NhZ2UpCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZW5k
TWVzc2FnZShDRE1NZXNzYWdlVHlwZSB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBtZXNzYWdlKQogewogICAgIGlmICghbV9jZG0pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5LmgKaW5kZXggOGE2MWY5ZDVmYWJjODQ4NmE3YTBlODYwZjRjNjMxMmMw
YjQ0NTUxNC4uZmU3MzA5NzEzMWUwYmIyMGE1MDAxZTE1MDE2MDJkNjUxODZiMzA5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKIAogICAg
IC8vIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAogICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMo
S2V5U3RhdHVzVmVjdG9yJiYpIGZpbmFsOwotICAgIHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6
Q0RNTWVzc2FnZVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmlu
YWw7CisgICAgdm9pZCBzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSwgUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CiAgICAgdm9p
ZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFBsYXRmb3JtRGlz
cGxheUlEIGRpc3BsYXlJRCgpIGZpbmFsIHsgcmV0dXJuIG1fZGlzcGxheUlEOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCmluZGV4
IDlhYjM1NzVmNGMzYjU1OTU1NWI5Yjg3YjIzMzcxYjFiMWE2NmRjMTcuLmY3Y2I2YTYzZWI5MzNh
YmQ0ZDQ1M2EyMmFiMjk0ZjEzMDMyMzJiMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcApAQCAtNjMsMTIgKzYzLDEyIEBAIFJlbW90
ZUNETVByb3h5OjpSZW1vdGVDRE1Qcm94eShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4m
JiBmYWN0b3J5LCBzdGQ6OnVuCiAKIFJlbW90ZUNETVByb3h5Ojp+UmVtb3RlQ0RNUHJveHkoKSA9
IGRlZmF1bHQ7CiAKLWJvb2wgUmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQorYm9vbCBSZW1vdGVD
RE1Qcm94eTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPnN1
cHBvcnRzSW5pdERhdGEodHlwZSwgZGF0YSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFJl
bW90ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9u
c2UpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNUHJveHk6OnNhbml0
aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCiB7CiAg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oCmluZGV4IDY5
MjRlNzRlM2Y1MDExYmUyMTViZTRiZDk2YjIzNDgyNjQ3MGY0MjMuLjNiNjZjNzc1Nzg3MDY5ZTk3
NmVlMDY0Zjk2ZmYwN2MwZjcxMmE5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogZW51bSBjbGFzcyBDRE1SZXF1aXJlbWVu
dCA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIENETVNlc3Npb25UeXBlIDogdWludDhfdDsKIHN0cnVj
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uOwpAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAK
ICAgICBSZW1vdGVDRE1GYWN0b3J5UHJveHkqIGZhY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2Zh
Y3RvcnkuZ2V0KCk7IH0KIAotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImIHJlc3BvbnNlKTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYsIGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSk7CiAgICAgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKTsK
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVByb3h5LmgKaW5kZXggZTJjZDA1ZDdjYzc0ZjIwZWM2OWZhZGZlM2VlMDg1
NzU5MmFkODc5Yi4uZGU4ZjZkZjU1YTZlMWZhOGJlOTY2Zjk0MWUwN2ZlMmY1YzUwMjFhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVByb3h5LmgKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eS5jcHAKaW5kZXggOTNiMmZmNzQxYjFmODM2OWIyMDU4NGU0OTdlNGEwMjFiOWNjZjU3OC4u
MjE0MTM3OWQ2YTU5ZWFmMjI4NTE0YjE4N2I1NjlkMDQ3MDNjMTE5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eS5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SVBD
OjpTaGFyZWRCdWZmZXJDb3B5PiBjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UoVCBhcnIK
IHsKICAgICBpZiAoIWFycmF5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJl
dHVybiB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChjb25zdCBjaGFyKilhcnJheS0+ZGF0YSgpLCBh
cnJheS0+Ynl0ZUxlbmd0aCgpKSB9OworICAgIHJldHVybiB7IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgoY29uc3QgY2hhciopYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgo
KSkgfTsKIH0KIAogdm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmdlbmVyYXRlS2V5
UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiBp
bml0RGF0YSwgR2VuZXJhdGVLZXlDYWxsYmFjayYmIGNvbXBsZXRpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5LmgKaW5kZXggZjE0YzYyN2Y2NTkzZTFhODc4ZDBmNDU5OTJiM2M0MWIyMjJjN2YwMC4u
MTU0NmJkZmRmZGNmMDkxMDg3ODk0NGYzNDA3OTY3YTdhYjM4YmY4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkuaApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
TGVnYWN5Q0RNOwogY2xhc3MgTGVnYWN5Q0RNU2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBJUEMgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2UuY3BwCmluZGV4IGM0NWU1MjU1ZDY3YjUyYzdhZTEwNDQ5OTg4Y2UwMTkwYzdmZmI1MzguLjYx
N2Y0NzY4OTU2NDJkZWMyMzI1NGI1NDBlZTgxOTExYWM0YTJkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKQEAg
LTk2LDcgKzk2LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhU2VudCh1aW50NjRf
dCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2UKICAgICAgICAgbV9jbGllbnQt
PmRhdGFTZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZv
aWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKFJlZjxTaGFyZWRCdWZmZXI+JiYg
ZGF0YSkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBt
X2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCmluZGV4
IGQxM2QyNWY2NWYwMjI0YTZjNzY3ZjY5YTRkNDE5Y2QwNTNiYjc5NWQuLjViN2E3ZTJhNzQyNDQz
MmQ4NmNiMjhhMWJlNzE3MThhMTY3Mzc1ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaApAQCAtMzQsNyArMzQsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VS
ZWNlaXZlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJik7CiAg
ICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZvaWQgZGF0YVNlbnQodWludDY0X3Qs
IHVpbnQ2NF90KTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0YTIw
MjdlNzRjYWE3NjcyZTUyZGEwYWY4MzQyMDcyLi5lODNmOTE0M2QyMGE3MmUyYmU0ZmZjYmZlZDEz
YjBiYjRkZDMxZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTEwNyw3ICsxMDcsOCBAQCB2b2lkIFJl
bW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZp
ZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dyaXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1l
Q29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8qIHBvaW50ZXIgPSBkYXRhID8gZGF0YS0+ZGF0
YSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+KCk7CisgICAgICAgIGF1
dG8qIHBvaW50ZXIgPSBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRhdGEgPyBk
YXRhLT5zaXplKCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgK
aW5kZXggNTJjYzVkYTEyMWEyZmI1OWQ4Y2YwNTkzYjY4NTA5ZmQ2NTVjMGNkYy4uNzFmZDAyMjI5
YmJiMWM1NzMyNmZkZmNmZTI2YzExZjc2MWFiY2Y3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKQEAgLTY4
LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRl
bnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVk
ZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmco
Y29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGUgeyB9OwogICAgIHZv
aWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggM2YzOWViMzJmMWFhODA3Njc4NWRhNzll
ZTExZGFkOGYwYzMyNmI3OS4uZDg5MjBlOTg3NjRmZDliNjRiOWNkZGM2MGExZDg0ZDYxOWIyZDQw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1By
ZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2Up
OwogfQogCi12b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikKIHsKICAgICBDT1JTX0NIRUNLRVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuaAppbmRleCBiYmIxNDYyYTMxNjFlMmZjZTllYTU3ODQ0YjE5
YjkzZTYxOWM4MWIwLi5lMTFiZjU2MzE5MDdhZTQ3MzM2ZWY4NWE1ZDIyZTg4MzU3NDY1MWIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9u
SGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxl
dGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0
X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmlu
YWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAppbmRleCBkNjAxOGY2MTM4M2FlM2E1MWU5ZDQ3
MjJjZjZhNjBlMmQ4Yjg3YTdkLi5lMDQ5ZTViMTJkZGU1ZmU1MWI0Njk1NTI4OWE3YTdmNjk5ODJh
ZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
LmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlv
bkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2Fj
eVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxC
eXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCB3YXNCbG9ja2VkKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmNwcAppbmRleCBiYWMwMjJhYjQ1NDMwZjY1MWIxODlhYzAxMjA3YTA2
MDYwOGMxNjcxLi43OTc1ZDQxYmFkODkxNWZlZWRiZGFiMTU1NGU4MWUxZGIyMDMwZjgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcApAQCAtMjU2LDcg
KzI1Niw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0CiAgICAgbV9jbGllbnQuZ2V0KCkuZGlk
UmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBiZSB0aGUgZW5jb2RlZCBkYXRhIGxlbmd0aCwgbm90IHRoZSBkZWNvZGVkIGRhdGEgbGVu
Z3RoLgogICAgIGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCmluZGV4IGMzNzczYzk4Nzg1NTNjZTUzNGQwNTRhYmZm
ZGRlYmIyOWVlMDg0ZDIuLmVlNWViMDA2YWEzNzliNzhmY2JjMGJkMTc0ZTMyYmQ2MzlmOTVlNmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKQEAgLTgwLDcg
KzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJl
ZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hh
bGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdh
Y3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExl
Z2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
IGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRv
dGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50
LmgKaW5kZXggMGE1ZjY2YmQ5NjdlYzlmZGY2NjRlNTJlNWFmMzk0ZTQ4ZWNlMWY3Yi4uMzQ4Y2Zm
YjllOGUyNWVlODNiYmIzOWEwMmNkM2NmNmQyODU0ZDM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaApAQCAtMzIsNyArMzIsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFz
cyBOZXR3b3JrTG9hZE1ldHJpY3M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogZW51bSBjbGFzcyBQb2xpY3lBY3Rpb24gOiB1aW50OF90OwogfQog
CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEo
dW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0
ZXNUb0JlU2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1
ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJl
c3BvbnNlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKCkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGJmOGYzNTdkN2E4M2VlNTAyODkxZGIxZTVh
YmQ4NDE4NGM2MzM2YzguLjczMTg5ZWZlNDMxYmE3MzMzYmFiMmE3Yjc0MDMyZDExY2I1ZmM2MTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTg3LDE0ICs4NywxNCBAQCBzdHJ1Y3QgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRhIHsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwog
fTsKIAotc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRhJiBkYXRhLCBjb25zdCBTaGFyZWRCdWZm
ZXIqIGJ1ZmZlciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQorc3RhdGljIHZv
aWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpT
eW5jaHJvbm91c0xvYWREYXRhJiBkYXRhLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBi
dWZmZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBBU1NFUlQo
ZGF0YS5kZWxheWVkUmVwbHkpOwogICAgIEFTU0VSVCghZGF0YS5yZXNwb25zZS5pc051bGwoKSB8
fCAhZGF0YS5lcnJvci5pc051bGwoKSk7CiAKICAgICBWZWN0b3I8dWludDhfdD4gcmVzcG9uc2VC
dWZmZXI7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAgICAgICAgcmVzcG9u
c2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAg
IHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpOwogCiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29y
a0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0cmljcykpOwog
CkBAIC0xMDUsOSArMTA1LDExIEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNS
ZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25u
ZWN0aW9uLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1T
eW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseSYmIHN5bmNocm9ub3VzUmVwbHkpCiAgICAgOiBt
X3BhcmFtZXRlcnMgeyBXVEZNb3ZlKHBhcmFtZXRlcnMpIH0KICAgICAsIG1fY29ubmVjdGlvbiB7
IGNvbm5lY3Rpb24gfQorICAgICwgbV9idWZmZXJlZERhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9maWxlUmVmZXJlbmNlcyhjb25uZWN0aW9uLnJl
c29sdmVCbG9iUmVmZXJlbmNlcyhtX3BhcmFtZXRlcnMpKQogICAgICwgbV9pc0FsbG93ZWRUb0Fz
a1VzZXJGb3JDcmVkZW50aWFscyB7IG1fcGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5
ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzIH0K
ICAgICAsIG1fYnVmZmVyaW5nVGltZXIgeyAqdGhpcywgJk5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
YnVmZmVyaW5nVGltZXJGaXJlZCB9CisgICAgLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIHsgbWFr
ZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fc2hvdWxkQ2FwdHVy
ZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKG1fY29ubmVjdGlvbi0+Y2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzRW5hYmxlZCgpKQogICAgICwgbV9yZXNvdXJjZUxvYWRJRCB7IE5ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH0KIHsKQEAgLTMwNiwxMCArMzA4LDEw
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5z
aW9ucygpOwogCiAgICAgICAgIGlmIChpc1N5bmNocm9ub3VzKCkgfHwgbV9wYXJhbWV0ZXJzLm1h
eGltdW1CdWZmZXJpbmdUaW1lID4gMF9zKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5
KCk7CiAKICAgICAgICAgaWYgKGNhblVzZUNhY2hlKHJlcXVlc3QpKQotICAgICAgICAgICAgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAg
ICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5lbXB0eSgpOwogICAgIH0KIAogICAgIE5ldHdvcmtM
b2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbV9wYXJhbWV0ZXJzOwpAQCAtNzMwLDIwICs3MzIs
MjAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICAgICAgICAgIHx8IGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7
CiAgICAgfTsKIAotICAgIGlmICghbV9idWZmZXJlZERhdGEKKyAgICBpZiAobV9idWZmZXJlZERh
dGEtPmlzTnVsbCgpCiAgICAgICAgICYmIG1fcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KCkgPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KDEgKiBNQikKICAgICAgICAgJiYgaXNGZXRjaE9y
WEhSKHJlc291cmNlTG9hZEluZm8pCiAgICAgICAgICYmIGlzTWVkaWFNSU1FVHlwZShtX3Jlc3Bv
bnNlLm1pbWVUeXBlKCkpKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgICAgIG1f
cGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA9IFdlYkxvYWRlclN0cmF0ZWd5OjptZWRp
YU1heGltdW1CdWZmZXJpbmdUaW1lOwogICAgIH0KIAogICAgIC8vIEZvciBtdWx0aXBhcnQveC1t
aXhlZC1yZXBsYWNlIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jIGdldHMgY2FsbGVkIG11bHRpcGxl
IHRpbWVzIGFuZCBidWZmZXJpbmcgd291bGQgcmVxdWlyZSBzcGVjaWFsIGhhbmRsaW5nLgogICAg
IGlmICghaXNTeW5jaHJvbm91cygpICYmIG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAg
ICAgbV9idWZmZXJlZERhdGEgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+cmVz
ZXQoKTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLT5yZXNldCgpOwogCiAgICAgaWYgKG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pIHsKICAg
ICAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29k
ZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZApAQCAtODU4LDcgKzg2MCw3IEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kRGlkUmVjZWl2ZVJlc3BvbnNlUG90ZW50aWFsbHlJ
bk5ld0Jyb3dzaW5nQ29udGV4CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQp
CiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZUJ1ZmZlcjogU3RhcnRlZCBy
ZWNlaXZpbmcgZGF0YSAocmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aD0lZCkiLCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKTsKQEAgLTg2NiwyMCArODY4LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBp
bnQgcmVwCiAKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwogCi0gICAg
aWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBj
YXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNh
Y2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2Fj
aGUtPmNhcGFjaXR5KCkgLyA4OwogICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+
c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKICAgICAg
ICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsK
KyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7CiAgICAgfQogICAg
IGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJ
WE1FOiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRlIHdlIGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUg
cmVzb3VyY2UgaGFuZGxlLgogICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1
ZmZlci0+c2l6ZSgpOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7CisgICAgaWYgKCFtX2J1
ZmZlcmVkRGF0YS0+aXNOdWxsKCkpIHsKICAgICAgICAgbV9idWZmZXJlZERhdGEtPmFwcGVuZChi
dWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoICs9
IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAgICBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQo
KTsKQEAgLTkwOSwxMSArOTExLDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAjZW5kaWYK
IAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0gICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25v
dXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLmdldCgpLCBu
ZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVz
dCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS0+Z2V0KCkuZ2V0KCksIG5l
dHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0
YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1fYnVmZmVy
ZWREYXRhLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2
YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUuCi0gICAgICAgICAg
ICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwgLTEpOworICAgICAgICAgICAgc2VuZEJ1ZmZl
cigqbV9idWZmZXJlZERhdGEtPmdldCgpLCAtMSk7CiAgICAgICAgIH0KICAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3Jr
TG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU0LDE5ICsxMjU2LDE5IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKQogCiB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiB7Ci0gICAgQVNTRVJU
KG1fYnVmZmVyZWREYXRhKTsKKyAgICBBU1NFUlQoIW1fYnVmZmVyZWREYXRhLT5pc051bGwoKSk7
CiAgICAgQVNTRVJUKG1fbmV0d29ya0xvYWQpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVk
RGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VM
b2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLT5nZXQoKSB9LCBtX2J1ZmZl
cmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgbV9i
dWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzZW5kQnVmZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2Rl
ZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsK
ICAgICBBU1NFUlQoIWlzU3luY2hyb25vdXMoKSk7CiAKQEAgLTEyNzksNyArMTI4MSw3IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgICAg
IExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5nIGNh
Y2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVzdCBpcyBub3QgZWxpZ2libGUiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAo
bV9idWZmZXJlZERhdGFGb3JDYWNoZS0+aXNOdWxsKCkpIHsKICAgICAgICAgTE9BREVSX1JFTEVB
U0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0b3JpbmcgY2FjaGUgZW50cnkgYmVj
YXVzZSBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIGlzIG51bGwiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTEyODcsMTIgKzEyODksMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkp
IHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9j
ZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKSB7CiAgICAgICAgICAgICBMT0FERVJf
UkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIHByZWZl
dGNoIGNhY2hlIik7Ci0gICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUo
bV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNl
KSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBzZXNzaW9u
LT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51
cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+dGFrZSgp
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIExPQURFUl9SRUxFQVNF
X0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBkaXNrIGNh
Y2hlIik7Ci0gICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3Qo
KSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xvYWRlciA9
IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgeworICAgIG1fY2FjaGUt
PnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8m
IG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAg
ICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQog
ICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDIzNGRhYjViZWVhNWI2NDczMDU1MGM3
NzM3MGE5ZjE1OTU5N2Y5Ny4uOTg0NDI0YTMwNjgxYTM2MGZjNjBjOWU3YTlkZDRlNmJiNDI2ZGU3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2
ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVS
ZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00Niw2ICs0Nyw4IEBAIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNzIEZvcm1E
YXRhOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTE0LDcgKzExNyw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQg
d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsK
LSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZh
aWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lk
IGRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSBmaW5hbDsKQEAgLTE5Miw3ICsxOTUs
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsK
ICAgICB2b2lkIGJ1ZmZlcmluZ1RpbWVyRmlyZWQoKTsKLSAgICB2b2lkIHNlbmRCdWZmZXIoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lk
IHNlbmRCdWZmZXIoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiAKICAgICB2b2lkIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwog
ICAgIHZvaWQgaW52YWxpZGF0ZVNhbmRib3hFeHRlbnNpb25zKCk7CkBAIC0yMjUsNyArMjI4LDcg
QEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAK
ICAgICBzaXplX3QgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCB7IDAgfTsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsKKyAgICBVbmlxdWVS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGE7CiAgICAgdW5z
aWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bmNo
cm9ub3VzTG9hZERhdGE+IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsyNDMsNyBA
QCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsKICAgICBS
ZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFVuaXF1ZVJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JWYWxpZGF0
aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50
cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRpbmdDb250aW51ZVdp
bGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXggMTE0ODUzZTQ1YjcyNTMzNjRjNzQ3YTcx
Y2IyYjVhYjhjYzM4ZWZkNS4uMWFmMWUwOGUzYzQ0MWUyNGYzMDA2NWU5ZjIwNzc2ZTZmOWZjMzNk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAgLTE3Miw3
ICsxNzIsNyBAQCB2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNw
b25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VAogICAgIGRpZEZpbmlzaCh7IH0sIHJl
c3BvbnNlKTsKIH0KIAotdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1
ZmZlcj4mJikKK3ZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKQogewogICAgIFBJTkdfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Bp
bmdMb2FkLmgKaW5kZXggMTllYzhjZWI5MmUzYzhhMDU2ZjQ5MjczNjYwY2ZmZjkyNjQzNDFkMS4u
YWIyOWEwYjFhYzg0NjZiMGVkNjFlZjU4ZWY0YzIyMGFiYWI2ZWJlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxl
ciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRD
b21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1
aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5k
KSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKaW5kZXggNDU1NzgyZDU0YTJlYTli
ZWUxODY1MGUxYWZkMWNmN2IyY2U5OGM0OS4uMTdkNDc5MDdhM2Y2ZWU1MmJlNjUwMWQxZGFiMGNh
NjA3NTFkNmIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVj
b25uZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25u
ZWN0VGFzay5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb20KICAg
ICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiB9CiAKLXZvaWQgUHJl
Y29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZl
QnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAppbmRleCAxYzFmZjE2NDcxMTFj
NmZhODQ5NGFmNWNmMGM3YmJlYWExYjI2NTAzLi44NTgwOGUxMjFiNjhjYThiNzNlMjUxOGQxOTNh
YjM5NTgxZWFkMWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
ZWNvbm5lY3RUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25u
ZWN0VGFzay5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTZW5kRGF0
YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxC
eXRlc1RvQmVTZW50KSBmaW5hbDsKICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3Qo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
ZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9u
c2UpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lk
IGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5n
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5kZXggNzFlMGNm
NmM2ZGM3YmVhNTIyYzkwNjAwNTU1ZjU3MjE2MWMzYzJmNC4uODE5NjYzMDIwYzY5NWNlMGM2YWJh
OTk5YzY3NWFhYjQyODJjN2ZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCkBAIC0xNzQsMTAgKzE3NCwxMCBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlcwogICAgICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFNlcnZpY2VX
b3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkK
IHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2spCi0gICAgICAgIG1fYm9keUNhbGxiYWNrKFdURk1v
dmUoYnVmZmVyKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIG1fYm9keUNh
bGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCmlu
ZGV4IDFlNzhjMmNlZmExNTQ4NDEwNDA2MGYzYjE5ZGM1MGU2Y2I4ZjFlYjQuLmVlMWJjOGI3ZDZj
YmZmYzMzNDFkNjczZmI3MjQyMjM4ZjY3MTdmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGlu
Zyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgYm9vbCBzaG91bGRD
YXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3No
b3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljczsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5kZXggOGVlMTEyYTlkZjgyODk1
NGMxNjIzZmZmMjJjMmEyMGZkOGUyZmU3ZC4uN2EyNjIyMTlkZTc4YjIzNWQxMjVhOTJiNmUyMzZk
MzMyNjJmN2EyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXIuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgUmVzb3VyY2VFcnJvciBTZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlcjo6cHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG8K
ICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fZGVjb2Rlcikgewog
ICAgICAgICBpZiAoIW1fcmVzcG9uc2VFbmNvZGluZy5pc0VtcHR5KCkpCkBAIC0xODcsNyArMTg3
LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwKICAgICB9CiAKICAgICBpZiAoYXV0byBzaXpl
ID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRl
Y29kZShidWZmZXItPmRhdGEoKSwgc2l6ZSkpOworICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9k
ZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUpKTsK
IH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGlu
Zyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAppbmRleCAxOGY1NDY5MWYzN2MyYmFiYmM4
YzFhM2JjMDk0MzcwZTliMjllYjcxLi40NGZjMDY4NWZhMGZlZGM4NzQyMTkxNmU5MTNhNjc0YjFj
MGZkYmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2Fk
ZXIuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tV
c2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZv
aWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7
CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5jcHAKaW5kZXggMDQ3NzY4MzZmOTk5MDkzOTEwYjM5OWQ3NTUzODU1ZDVk
M2YxZmY0ZS4uZGQzMDVhZjI5NzY2MWU0NzZjNDk2NzdkZjU3MjFlZmQxZWM5MzJmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNw
cApAQCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgQ2FjaGU6OmNvbXBsZXRlUmV0cmlldmUoUmV0cmll
dmVDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIsIHN0ZDo6dW5pcXVlX3B0CiAgICAgaGFuZGxl
cihXVEZNb3ZlKGVudHJ5KSwgaW5mbyk7CiB9CiAgICAgCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+
IENhY2hlOjptYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEpCitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+
IENhY2hlOjptYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhKQogewogICAgIHJldHVy
biBtYWtlVW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZN
b3ZlKHJlc3BvbnNlRGF0YSksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMo
bmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25JRCksIHJlcXVlc3QsIHJl
c3BvbnNlKSk7CiB9CkBAIC00NjQsNyArNDY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBD
YWNoZTo6bWFrZVJlZGlyZWN0RW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jgog
ICAgIHJldHVybiBtYWtlVW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3Bv
bnNlLCByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRl
cnMobmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25JRCksIHJlcXVlc3Qs
IHJlc3BvbnNlKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3JlKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
cmVzcG9uc2VEYXRhLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3N0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJl
c3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKHJlc3BvbnNlRGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IDE5OWYwY2ZiNzMyNTQz
YzVmZWFmNGZlMjMwMWU2YTFjMTJmODhmZTguLmVkMDRlYmNhMGIzNmYzZjljNGMwZTdiYWM3MTMz
NmI5ZTk2YzM1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGUuaApAQCAtNDMsNyArNDMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgTG93UG93ZXJNb2RlTm90aWZpZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTE2Niw3ICsxNjYsNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICB1
c2luZyBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyID0gRnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1
ZV9wdHI8RW50cnk+LCBjb25zdCBSZXRyaWV2ZUluZm8mKT47CiAgICAgdm9pZCByZXRyaWV2ZShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgc3Rk
OjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFJldHJpZXZlQ29tcGxldGlv
bkhhbmRsZXImJik7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9yZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5
Jik+JiYgPSBudWxscHRyKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgRnVuY3Rpb248
dm9pZChNYXBwZWRCb2R5Jik+JiYgPSBudWxscHRyKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50
cnk+IHN0b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVkaXJlY3RSZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heEFnZUNhcCk7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiB1cGRhdGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgRW50cnkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiB2
YWxpZGF0aW5nUmVzcG9uc2UpOwogCkBAIC0xODUsNyArMTg1LDcgQEAgcHVibGljOgogICAgIHZv
aWQgcmV0cmlldmVEYXRhKGNvbnN0IERhdGFLZXkmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpPik7CiAgICAgdm9pZCBzdG9yZURhdGEoY29uc3QgRGF0YUtleSYsICBjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3QpOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gbWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IG1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4gbWFrZVJlZGlyZWN0RW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KTsKIAogICAgIHZvaWQgZHVtcENvbnRlbnRzVG9GaWxl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRW50cnkuY3BwCmluZGV4IGJhMzlkOWUyYzI2YTAxYTkyNmIxMWFhNzk5ZTM2NjJm
YzZhZTA1NDkuLjc2MTA3OGRlYTA5M2MwNDU1NWJlOThiMDUxNzNlMzQxNTA2N2E4NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlRW50cnkuY3BwCkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVz
cGFjZSBOZXR3b3JrQ2FjaGUgewogCi1FbnRyeTo6RW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmlu
Zz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpCitFbnRyeTo6RW50cnkoY29uc3QgS2V5JiBrZXks
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKQogICAgIDogbV9rZXko
a2V5KQogICAgICwgbV90aW1lU3RhbXAoV2FsbFRpbWU6Om5vdygpKQogICAgICwgbV9yZXNwb25z
ZShyZXNwb25zZSkKQEAgLTEwMSw4ICsxMDEsMTAgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5Ojpl
bmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAgICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5i
dWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogICAgIERhdGEgYm9keTsKLSAgICBpZiAo
bV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5z
aXplKCkgfTsKKyAgICBpZiAobV9idWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXIgPSBtX2J1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyKj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXpl
KCkgfTsKKyAgICB9CiAKICAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwg
Ym9keSwgeyB9IH07CiB9CkBAIC0xOTQsNyArMTk2LDcgQEAgdm9pZCBFbnRyeTo6aW5pdGlhbGl6
ZUJ1ZmZlckZyb21TdG9yYWdlUmVjb3JkKCkgY29uc3QKICAgICBtX2J1ZmZlciA9IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LmRhdGEoKSwg
bV9zb3VyY2VTdG9yYWdlUmVjb3JkLmJvZHkuc2l6ZSgpKTsKIH0KIAotV2ViQ29yZTo6U2hhcmVk
QnVmZmVyKiBFbnRyeTo6YnVmZmVyKCkgY29uc3QKK1dlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIEVudHJ5OjpidWZmZXIoKSBjb25zdAogewogICAgIGlmICghbV9idWZmZXIpCiAgICAg
ICAgIGluaXRpYWxpemVCdWZmZXJGcm9tU3RvcmFnZVJlY29yZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCmluZGV4
IDk2OTE1YzM4MDFjMzdkZGFjM2U4ZTYwMzIxZjg4YzIyMjljZDU5YTAuLjljMDQyMGQ0NGE4MTU4
ZGZjNWIyMWNmMTg4MjA0Y2YzYTkxNmI0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKQEAgLTM1LDcgKzM1LDcg
QEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBOZXR3b3Jr
Q2FjaGUgewogY2xhc3MgRW50cnkgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBWZWN0b3I8c3RkOjpw
YWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycyk7CisgICAgRW50cnko
Y29uc3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0
cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycyk7CiAgICAgRW50cnkoY29uc3Qg
S2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0
cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycyk7CiAgICAgZXhwbGljaXQgRW50
cnkoY29uc3QgU3RvcmFnZTo6UmVjb3JkJik7CiAgICAgRW50cnkoY29uc3QgRW50cnkmKTsKQEAg
LTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAgIGNvbnN0IFZl
Y3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV92YXJ5aW5nUmVxdWVzdEhlYWRlcnM7IH0KIAotICAgIFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3Q7CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3Q+JiByZWRpcmVjdFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBt
X3JlZGlyZWN0UmVxdWVzdDsgfQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKQEAg
LTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3Ry
aW5nPj4gbV92YXJ5aW5nUmVxdWVzdEhlYWRlcnM7CiAKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdD4gbV9yZWRpcmVjdFJlcXVlc3Q7Ci0gICAgbXV0YWJsZSBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICNpZiBFTkFCTEUoU0hB
UkVBQkxFX1JFU09VUkNFKQogICAgIG11dGFibGUgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSBt
X3NoYXJlYWJsZVJlc291cmNlSGFuZGxlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJmZDQwODAzMTA1NDY4MzUzNmVhMGRjODE5
My4uN2IwYWRjNDBmMGIwYjY3MTQ3MWEyN2FiNTEzOTc2NmQ0YjU1NTQ0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVk
UmVzcG9uc2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAgICBp
ZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwog
CiAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29k
ZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9uU3VjY2Vl
ZGVkICYmIG1fY2FjaGVFbnRyeSkKQEAgLTEyMCwxNyArMTIwLDE3IEBAIHZvaWQgU3BlY3VsYXRp
dmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVz
cG9uc2UsIFJlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQog
Ci12b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNwZWN1bGF0
aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghbV9j
YWNoZUVudHJ5KTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAg
IC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAg
ICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEw
MjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXIt
PnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1
ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZm
ZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQo
KTsKICAgICB9CiB9CiAKQEAgLTEzOSwxMCArMTM5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2Fk
OjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCiAg
ICAgaWYgKG1fZGlkQ29tcGxldGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fY2FjaGVF
bnRyeSAmJiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7Ci0gICAgICAgIG1fY2FjaGVFbnRyeSA9
IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLmNvcHlSZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKKyAgICAg
ICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVz
cG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuZ2V0KCksIFtdKGF1dG8mIG1hcHBlZEJvZHkp
IHsgfSk7CiAgICAgICAgIC8vIENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBlbnRyeSBpZiB3ZSBj
YW4ndCBzdG9yZS4KICAgICAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgaXNTdGF0dXNDb2RlQ2Fj
aGVhYmxlQnlEZWZhdWx0KG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkpCi0gICAgICAgICAg
ICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1f
cmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAg
bV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jl
c3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAgfQogCiAgICAgZGlk
Q29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4IGMwZTFlMTRi
MmFjNDYwMzU4ZjgxNDA3Y2Q3MGM0MDkwNTJhZjhlZmUuLjFiODQzZGI3ZWMyNzBkYjlkYWI5ZThh
MjVmMmE0OGE4ZWNhZTJhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAt
NjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3Jl
ZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNl
bmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwogCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5OwogICAgIGJvb2wgbV9kaWRD
b21wbGV0ZSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKaW5kZXggNWUyZTAyZTJmYmEwYjRhMGMwM2I1
ZDNlNjZiOTdmN2JjY2M3OTU4Yi4uMzE5OWJmZjMxMWI2YzNlZWZiZTk1MGI0NWU2YjBhOTZlMzI3
NzdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVm
ZXRjaENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1By
ZWZldGNoQ2FjaGUuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1QcmVmZXRjaENhY2hlOjpFbnRyeTo6RW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
IHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK1ByZWZl
dGNoQ2FjaGU6OkVudHJ5OjpFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAg
ICA6IHJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKSwgYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkK
IHsKIH0KQEAgLTcyLDcgKzcyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFByZWZldGNoQ2FjaGU6OkVu
dHJ5PiBQcmVmZXRjaENhY2hlOjp0YWtlKGNvbnN0IFVSTCYgdXJsKQogCiBzdGF0aWMgY29uc3Qg
U2Vjb25kcyBleHBpcmF0aW9uVGltZW91dCB7IDVfcyB9OwogCi12b2lkIFByZWZldGNoQ2FjaGU6
OnN0b3JlKGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
IHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQg
UHJlZmV0Y2hDYWNoZTo6c3RvcmUoY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fc2Vzc2lvblByZWZldGNoZXMpCiAgICAg
ICAgIG1fc2Vzc2lvblByZWZldGNoZXMgPSBtYWtlVW5pcXVlPFByZWZldGNoRW50cmllc01hcD4o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0
Y2hDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENh
Y2hlLmgKaW5kZXggYTI1MTUyMGIzMWVhYzkyMWMyMmQzMTE1MWQ2ZDIzMWExYmVkMTM4Yy4uNTJj
MGIxMGZjYzZkNWE2ZGUxMTQ0N2U3ZTRlODIyZGY4Zjg0MWNiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKQEAgLTQ3LDE4ICs0
NywxOCBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgRW50cnkgewogICAgICAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIEVudHJ5
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpOwogICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKIAotICAgICAgICBSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiByZWxlYXNlQnVmZmVyKCkgeyByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCk7IH0KKyAgICAgICAgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJl
bGVhc2VCdWZmZXIoKSB7IHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsgfQogCiAgICAg
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHJlZGlyZWN0UmVxdWVzdDsKICAgICB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5PiB0YWtlKGNvbnN0IFVSTCYpOwotICAgIHZvaWQgc3RvcmUoY29uc3QgVVJMJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsK
KyAgICB2b2lkIHN0b3JlKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgc3Rv
cmVSZWRpcmVjdChjb25zdCBVUkwmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRl
eCBiOWFiMGRlZWJiOWY5MjdjNzM3NDJlODZhMGJlN2Y5NzE2MGJkNmZiLi40MTY2OGE1YjFjZDcz
ODY5NjdiOGZkOTczZTk2NzMyZWNhOTA3ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC02Miw3
ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZE5lZ290aWF0ZU1vZGVyblRMUyhjb25zdCBV
UkwmKTsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0
ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAogICAg
IHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxl
ciYmKTsKICAgICB2b2lkIHRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQoRG93bmxv
YWQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IGU3ODBkNmMxYzNjZDFlYjJjMmZmNWEwYzU2
NGEwZTRkODhiN2VhNWQuLjMwNTFmMTY5Y2IwYTM3MDk5ODVhMTYxMTIyYzI1ZjBlOGYxN2JkOGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgTmV0d29ya0Rh
dGFUYXNrQ29jb2E6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImIGVyCiAgICAgICAgIG1fY2xpZW50LT5kaWRDb21wbGV0ZVdpdGhFcnJvcihlcnJvciwg
bmV0d29ya0xvYWRNZXRyaWNzKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlk
UmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBOZXR3
b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBXVEZFbWl0U2lnbnBvc3QobV90YXNrLmdldCgp
LCAiRGF0YVRhc2siLCAicmVjZWl2ZWQgJXpkIGJ5dGVzIiwgZGF0YS0+c2l6ZSgpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFz
a0N1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRh
VGFza0N1cmwuY3BwCmluZGV4IDhmYzdiNjYzZTZmNzU2MmIyYjM1NDg5Mzk4YTJmZTczMWJlMDc0
ZjEuLjM3ZjI5NDE2NjQ2YzQ3ZTFkYTFmZDk5NDFjY2FjMDBiNWRjMGZkMjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNr
Q3VybC5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1
cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXNwbwogICAg
IGludm9rZURpZFJlY2VpdmVSZXNwb25zZSgpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0N1
cmw6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCit2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlQnVmZmVy
KEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewog
ICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAgICBpZiAoc3RhdGUoKSA9PSBTdGF0
ZTo6Q2FuY2VsaW5nIHx8IHN0YXRlKCkgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAoIW1fY2xpZW50
ICYmICFpc0Rvd25sb2FkKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKaW5kZXggMWM0MjdkZGI3OGQ2OTUzZmU4
OTYwYzU2OTJhZmRlNGY0ZjBlZWU4NS4uNDViZTVjZTE4NDMyNTI3MWQ1YzA4MGRkMzRmMWVlNGEx
NjY0MmExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtEYXRhVGFza0N1cmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAg
UmVmPFdlYkNvcmU6OkN1cmxSZXF1ZXN0PiBjcmVhdGVDdXJsUmVxdWVzdChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgUmVxdWVzdFN0YXR1cyA9IFJlcXVlc3RTdGF0dXM6Ok5ld1JlcXVlc3Qp
OwogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgdW5zaWdu
ZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlOwogICAgIHZvaWQgY3Vy
bERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6OkN1cmxS
ZXNwb25zZSYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0JiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lk
IGN1cmxEaWRDb21wbGV0ZShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6Ok5ldHdvcmtM
b2FkTWV0cmljcyYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKFdl
YkNvcmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmLCBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8mJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKaW5kZXggZjVkYjcw
NmM0NDU4MDIxMDg3Zjk1OTk2NjlkZmE3ZDlmODM3OTc4Yy4uMzNkNDNiNzIyMzhkMjAzZTdlZGVj
OTQxNGNhZjlmZGE4ZjQwNTI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKQEAgLTU1LDcgKzU1LDcgQEAg
c3RydWN0IFBhY2tldE9wdGlvbnM7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlZ2lz
dHJhYmxlRG9tYWluOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmluZGV4IGRmOGVlMzBjNDNjMGZmZjRkMGVh
NmQ4Y2VjZTNmY2Y0Y2IzM2VmNzEuLmY2NzY2ODg1N2ZmNWMyZTUzMmQ1YjRiNTE0ZjJlMmNmNDlm
NzYyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckNvcHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuY3BwCkBAIC01MSw5ICs1MSw5IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4g
U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoZGF0YS5z
aXplKCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgp
LCBkYXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgIHJldHVybiB7IFdURk1vdmUo
YnVmZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJDb3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAyYmMxMDhlNTYzYTZlM2RmMTgzMmU5Zi4u
YmU2OGQ5ZTI2YTA0ODA3YTU2MGE2NzI5ODkyNzUyNjNmYzdjMWIzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtMjMsNyArMjMsNyBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIEVuY29kZXMgYSBT
aGFyZWRCdWZmZXIgdGhhdCBpcyByZWNlaXZlZCBhcyBhIGNvcHkgb2YgdGhlIGRlY29kZWQgZGF0
YSBpbiBhIG5ldyBTaGFyZWRCdWZmZXIuCisvLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgY29weSBvZiB0aGUgZGVjb2RlZCBkYXRhIGluIGEg
bmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAvLyBUbyBhdm9pZCBjb3B5aW5nIGZyb20gdGhl
IERlY29kZXIsIHVzZSBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHRvIHJlY2VpdmUgYSBEYXRh
UmVmZXJlbmNlIGluc3RlYWQuCiAKICNwcmFnbWEgb25jZQpAQCAtMzksMTUgKzM5LDEyIEBAIGNs
YXNzIFNoYXJlZEJ1ZmZlckNvcHkgewogcHVibGljOgogICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9
IGRlZmF1bHQ7CiAKLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9
Ci0gICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQotICAgIFNoYXJlZEJ1
ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCi0gICAgICAgIDog
bV9idWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICB7Ci0gICAgICAg
IG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKLSAgICB9CisgICAgU2hhcmVkQnVmZmVyQ29weShS
ZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAg
IDogbV9idWZmZXIoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4oKSkgeyB9CisgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZm
ZXIoYnVmZmVyLT5tYWtlQ29udGlndW91cygpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KGNv
bnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKKyAgICAgICAgOiBt
X2J1ZmZlcihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAKICAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICBjb25z
dCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaAppbmRleCBkM2QwZWM1ZTk3ODU1OTliNjM0YTg0YzZjNDQ3
MWI1MmNkMjIxM2YxLi42N2VjOGU1ZTkyYmQwMjQxMTVkYjBkNDA4MGEyNGZlNzM1NzBkM2Y1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZS5oCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotLy8gRW5jb2RlcyBhIFNoYXJlZEJ1ZmZlciBvciBEYXRhUmVmZXJl
bmNlIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBEYXRhUmVmZXJlbmNlIHRvIHRoZSBkZWNvZGVkIGRh
dGEuCisvLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBvciBEYXRhUmVmZXJlbmNl
IHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBEYXRhUmVmZXJlbmNlIHRvIHRoZSBkZWNvZGVkIGRhdGEu
CiAKICNwcmFnbWEgb25jZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1No
YXJlZE1lbW9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAK
aW5kZXggZDI0MDZlZTI5MDUzMTFmNjliNzU4NDIxZTc3YTNlNjZjYmEyN2I2NS4uYzAyNmY1NDk1
NjliMmJlMDA3OGFlMzI1ZDA1MzllMDcxYWYxMTA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
U2hhcmVkTWVtb3J5LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1l
bW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxTaGFy
ZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtNTEsNyArNTEsNyBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFy
ZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiBSZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNp
emUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRhdGFTaXplIDw9IHNpemUoKSk7Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9XSAoKSAtPiBjb25zdCB1aW50OF90KiB7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7CiAgICAgICAgIH0s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCBlMzcxYmNkNzMwMmNmODVl
YmFiMmI1YTg1ZTdiZTQ5ZGNmNTY1MmFiLi4xYjRmZGZhZjY4Mzg5ZGNlNzI4ZmYzNGU1ZTVmMDEy
ZTI0M2ZhMmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9y
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTQ1LDYg
KzQ1LDcgQEAgY2xhc3MgRW5jb2RlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogI2lmIE9TKERB
UldJTikKQEAgLTEyMCw3ICsxMjEsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRTogQ2hhbmdl
IHRoZXNlIGZhY3RvcnkgZnVuY3Rpb25zIHRvIHJldHVybiBSZWY8U2hhcmVkTWVtb3J5PiBhbmQg
Y3Jhc2ggb24gZmFpbHVyZS4KICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gYWxsb2Nh
dGUoc2l6ZV90KTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gY29weUJ1ZmZlcihj
b25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1l
bW9yeT4gY29weUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7
CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IG1hcChjb25zdCBIYW5kbGUmLCBQcm90
ZWN0aW9uKTsKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICBzdGF0aWMgUmVmUHRy
PFNoYXJlZE1lbW9yeT4gd3JhcE1hcCh2b2lkKiwgc2l6ZV90LCBpbnQgZmlsZURlc2NyaXB0b3Ip
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNl
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCmluZGV4
IGNhMGMyNGIyNzczNTQ3Njc2ZTM0ODAxYzc5YTFkNTY1YmY5NWZlNWQuLjExMGUwYWRkZTU1OGE5
ZDkzMzhiMjQ1MDZlODkxNjNjOTM2OTcxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UElXZWJBcmNoaXZlUmVzb3VyY2UubW0KQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgcmVs
ZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRh
dGEpCiAKIFJlZjxBUEk6OkRhdGE+IFdlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSgpCiB7Ci0gICAg
UmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5j
cmVhdGVDRkRhdGEoKTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hp
dmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogCiAg
ICAgLy8gQmFsYW5jZWQgYnkgQ0ZSZWxlYXNlIGluIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VE
YXRhLgogICAgIENGUmV0YWluKGNmRGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDg3
ZjRlYjFlYmEyODcyZTBjYjBhYjk1OTE2YWZlZGUyOWZjYmEyNDQuLjNjMWI1N2Q1YWEyNmVjNzJl
NjBiNWQ3OGExMWU5ZmQ4NTJjZmZlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC01NjQsMTMgKzU2
NCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50
Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgaWYgKCppbmNsdWRlc0NyZWF0aW9uRGF0YSkgewotICAgICAgICBzdGQ6Om9w
dGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBmb250
RmFjZURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBpZiAo
IWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAg
ICAgLy8gVXBvbiByZWNlaXB0LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1cml0eSwgc28gdGhlIHNl
bmRlciBjYW4ndCBzY3JpYmJsZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0LgotICAgICAg
ICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
Zm9udEZhY2VEYXRhLnZhbHVlKCktPmRhdGEoKSwgZm9udEZhY2VEYXRhLnZhbHVlKCktPnNpemUo
KSk7CisgICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBmb250RmFjZURhdGEudmFsdWUo
KS0+bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaXRl
bUluQ29sbGVjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4IGM2OTYxYzcxNDQw
MmJmMzc3YWU5MTBmYmI2Y2NhYTUyZDNiODQxMjguLjZmYTAyYTdiYzNlZTU0YWU2ZDMyNTM4MTBk
NzhkZWMzMTY1MzUzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJj
ZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKIAogUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7Ci0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6
OlByb3ZpZGVyIHsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6
OlByb3ZpZGVyIHsKICAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNl
bGYtPmRhdGEoKTsgfSwKICAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJu
IHNlbGYtPnNpemUoKTsgfQogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNjQ5ODJiYzQ4MTAyYTRhZGIyMGE3ZTYwZTIxYmQ0
OTJkNjUzMzc0Yy4uODQzZmQ0NzMxM2FlZWNhMjk5MzA2MTJmYzVlYzU3ODc1NTQzNDJkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0x
NjQsNyArMTY0LDcgQEAgREVGSU5FX1NJTVBMRV9BUkdVTUVOVF9DT0RFUl9GT1JfU09VUkNFKERp
c3BsYXlMaXN0OjpTZXRJbmxpbmVTdHJva2VDb2xvcikKIAogI3VuZGVmIERFRklORV9TSU1QTEVf
QVJHVU1FTlRfQ09ERVJfRk9SX1NPVVJDRQogCi1zdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZm
ZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCitzdGF0aWMg
dm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogewogICAgIGJvb2wgaXNOdWxsID0gIWJ1ZmZlcjsKICAg
ICBlbmNvZGVyIDw8IGlzTnVsbDsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBzdGF0aWMgdm9pZCBlbmNv
ZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZm
ZXIpCiAgICAgICAgIHJldHVybjsKIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAg
IC8vIERvIG5vdCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgU2hhcmVkQnVmZmVyIGVuY29kaW5nIGlu
IFVuaXgsIGJlY2F1c2UgaXQncyBlYXN5IHRvIHJlYWNoIHRoZQorICAgIC8vIERvIG5vdCB1c2Ug
c2hhcmVkIG1lbW9yeSBmb3IgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBlbmNvZGluZyBpbiBVbml4
LCBiZWNhdXNlIGl0J3MgZWFzeSB0byByZWFjaCB0aGUKICAgICAvLyBtYXhpbXVtIG51bWJlciBv
ZiBmaWxlIGRlc2NyaXB0b3JzIG9wZW4gcGVyIHByb2Nlc3Mgd2hlbiBzZW5kaW5nIGxhcmdlIGRh
dGEgaW4gc21hbGwgY2h1bmtzCiAgICAgLy8gb3ZlciB0aGUgSVBDLiBDb25uZWN0aW9uVW5peC5j
cHAgYWxyZWFkeSB1c2VzIHNoYXJlZCBtZW1vcnkgdG8gc2VuZCBhbnkgSVBDIG1lc3NhZ2UgdGhh
dCBpcwogICAgIC8vIHRvbyBsYXJnZS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDg1NzEuCkBAIC0yNjQsNyArMjY0LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8
U3RyaW4KICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAo
IWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICBkYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBk
YXRhLmFwcGVuZChidWZmZXIpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtMTU1MCwx
MCArMTU1MCwxMCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVu
dHJ5Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0CiAgICAgaWYgKGhhc1N0cmluZykK
ICAgICAgICAgZW5jb2RlciA8PCBzdGQ6OmdldDxTdHJpbmc+KHBsYXRmb3JtRGF0YSk7CiAKLSAg
ICBib29sIGhhc0J1ZmZlciA9IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZl
cj4+KHBsYXRmb3JtRGF0YSk7CisgICAgYm9vbCBoYXNCdWZmZXIgPSBzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKTsKICAgICBl
bmNvZGVyIDw8IGhhc0J1ZmZlcjsKICAgICBpZiAoaGFzQnVmZmVyKQotICAgICAgICBlbmNvZGVT
aGFyZWRCdWZmZXIoZW5jb2Rlciwgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3Jt
RGF0YSkucHRyKCkpOworICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rlciwgc3RkOjpn
ZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpLnB0cigpKTsKIH0K
IAogYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnkmIGRhdGEpCkBA
IC0yOTc2LDcgKzI5NzYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobQogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBy
ZXR1cm4ge3sgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfX07CisgICAg
cmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9IH07CiB9
CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzAxMCw2ICszMDEw
LDM0IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRQCiB9CiAjZW5kaWYKIAordm9pZCBBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVy
LmdldCgpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit2
b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBi
dWZmZXIucHRyKCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAh
YnVmZmVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpOworfQorCiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBlbmNvZGVTaGFyZWRCdWZm
ZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKQEAgLTMxMDcsNyArMzEzNSw3IEBAIHZvaWQgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlCiB7CiAgICAgZW5jb2RlciA8PCBtZXNzYWdlLmZpcnN0OwogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZURhdGEgPSBtZXNzYWdlLnNlY29uZC5jb3B5UmVm
KCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2VEYXRhID0gbWVz
c2FnZS5zZWNvbmQuY29weVJlZigpOwogICAgIGVuY29kZXIgPDwgbWVzc2FnZURhdGE7CiB9CiAK
QEAgLTMxMTcsNyArMzE0NSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uOjpNZXNzYWdlPiAgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZSh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSB8fCAhYnVm
ZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDI1ZjAxYzAyOTJhMDE5ZjA2NzYyNGJi
YjU1MzQwMmRmMWEzM2M1YjYuLjZmYWMyYWExZWE3ODQ2ZmY2YmY4OTAyMWYwZjUyZTlhYTdhZTAz
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBA
IC0xMTQsNiArMTE0LDcgQEAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBC
bG9iUGFydDsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIENvbG9yOworY2xhc3MgU2hh
cmVkQnVmZmVyOwogY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb247CiBjbGFzcyBDdXJzb3I7CkBAIC0xMzgsNyArMTM5LDcgQEAgY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNjcmlwdEJ1ZmZlcjsKIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNwcmluZ1RpbWluZ0Z1bmN0aW9uOwogY2xhc3MgU3RlcHNU
aW1pbmdGdW5jdGlvbjsKIGNsYXNzIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czsK
QEAgLTc1MSw2ICs3NTIsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+IHsKIH07CiAjZW5kaWYKIAordGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gZGVjb2Rl
KERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mKTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYpOwog
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBk
ZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0
VGVzdFJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3Vs
dERhdGEuY3BwCmluZGV4IGNmMmU0ZDVmOTNmZDJkOTQ2YmFiZmY5M2VlYTNlOWU4NjBhZWJiZjQu
LmI2MDdhY2U4MzhlMDRiY2UxYTZhZWU0ZGE1NjU1OWUwOTY5ODM5OGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAg
V2ViSGl0VGVzdFJlc3VsdERhdGE6OldlYkhpdFRlc3RSZXN1bHREYXRhKGNvbnN0IFdlYkNvcmU6
OkhpdFRlc3RSZXN1bHQmIGhpdFRlc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKEltYWdl
KiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgewotICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKTsKICAgICAgICAgaWYgKGJ1ZmZl
cikgewogICAgICAgICAgICAgaW1hZ2VTaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9y
eTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKICAgICAgICAgICAgIGltYWdlU2l6ZSA9IGJ1ZmZlci0+
c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29k
ZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5j
cHAKaW5kZXggMjVhMzA3ZjM4MjllOTI3OGI1ZWE3OGZmODI5Njc4ODMzNzdhMzFiYS4uNjcxNzU4
YTI4MGE1ZTQ0MGFhMDYwYTc5Y2YxZjBmMTI2ZGI3YmUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQg
QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFNlbGVjdGlvbkRhdGEmCiAgICAgYm9vbCBoYXNDdXN0b21EYXRhID0gc2VsZWN0aW9uLmhh
c0N1c3RvbURhdGEoKTsKICAgICBlbmNvZGVyIDw8IGhhc0N1c3RvbURhdGE7CiAgICAgaWYgKGhh
c0N1c3RvbURhdGEpCi0gICAgICAgIGVuY29kZXIgPDwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4oc2Vs
ZWN0aW9uLmN1c3RvbURhdGEoKSk7CisgICAgICAgIGVuY29kZXIgPDwgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+KHNlbGVjdGlvbi5jdXN0b21EYXRhKCkpOwogCiAgICAgYm9vbCBjYW5T
bWFydFJlcGxhY2UgPSBzZWxlY3Rpb24uY2FuU21hcnRSZXBsYWNlKCk7CiAgICAgZW5jb2RlciA8
PCBjYW5TbWFydFJlcGxhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0
YWNobWVudC5jcHAKaW5kZXggYjM0ZWM3MzYzNjNjNGYxZDJiMGU3NjBhZDNmNGE5ZDViYWMxYTM0
ZS4uMTQ5MGM1MTFiZGMzOGJkOGFiNGE2OTVhZWNmMzA2ZDk1ZmFhMzk2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtOTgsNyArOTgsNyBA
QCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBBdHRhY2htZW50OjpmaWxlU2l6ZUZvckRpc3BsYXko
KSBjb25zdAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CitSZWZQ
dHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5n
SW1hZ2VEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCmluZGV4IGFmYTkyOWNmMDkzZDIyZWM3
NmFkODZmZGEwM2I1MDFiYmZkMjlkYzMuLmZlNTBlNTM4YjhlYmIzNTFhNDgzNmQxZGQ4OTNkMTQ3
YTU2YTg3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
aApAQCAtMzksNiArMzksNyBAQCBPQkpDX0NMQVNTIE5TU3RyaW5nOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgyLDcgKzgzLDcgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBlbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3Q7CiAgICAgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemVGb3JEaXNwbGF5KCkgY29uc3Q7CiAKICAgICB2
b2lkIHNldEhhc0VuY2xvc2luZ0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNF
bmNsb3NpbmdJbWFnZSA9IGhhc0VuY2xvc2luZ0ltYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oCmluZGV4IDg4MjA0
ZjAwMTM2Nzg2MDQ1YTViMzJhNzNjNjc4YTBiYTg1MDY4MWMuLjhkYjcwMzhjMWM5MDE2ZGFkZmJm
NGI1ZWEwOTk4YzQ4NzkxZjU3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVz
cGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5h
dmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQ2xpZW50LmgKaW5kZXggNTYyMzQwMTQ1OWRhNWZlMzBmNDkxYTQxZmIzNDdhNjc1NzIwMmM0
MC4uMTExZjA5MjYzZjgyMjM4MjlhNWFkMjY0NDM0YmE0MjBmMTk4ZGQxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCkBAIC00Nyw3
ICs0Nyw3IEBAIHN0cnVjdCBDb250ZW50UnVsZUxpc3RSZXN1bHRzOwogY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogc3RydWN0
IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KIApAQCAtMTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKIAog
I2lmIFVTRShRVUlDS19MT09LKQogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlj
a0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29u
c3QgV1RGOjpTdHJpbmcmIHV0aSkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgeyB9
CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgUmVmPE5hdmlnYXRpb25BY3Rpb24+JiYsIFJlZjxX
ZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgT2JqZWN0KikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNo
bWVudENvY29hLm1tCmluZGV4IGNmNDYyMTZjYTI1YTllZGY4MmUzMTlhMzMwMzA3OTFlOGQ0ZTE1
M2MuLmRmZWYzZTA3MGY5NjE2MzA0OTcxNDRkYWYzZjMwMGNiNGNhNTE5NWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2Nv
YS5tbQpAQCAtMTM3LDcgKzEzNyw3IEBAIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IEF0dGFjaG1l
bnQ6OmZpbGVTaXplRm9yRGlzcGxheSgpIGNvbnN0CiAgICAgcmV0dXJuIFtmaWxlV3JhcHBlciBy
ZWd1bGFyRmlsZUNvbnRlbnRzXS5sZW5ndGg7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CitSZWZQdHI8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VE
YXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faGFzRW5jbG9zaW5nSW1hZ2UpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KaW5kZXggYzRlZTUyNTA3NjQyZGI0ZTU0Y2ZhZGY3ZmVlM2JmMWI3YzBkM2QzYy4u
MDFjODEwMjc4ZWY2MzU5MTcyZjhlNjViNTJjZmNiMGI1MjFiN2Q4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNTk2LDcgKzE1OTYs
NyBAQCAtICh2b2lkKV9zdG9yZUFwcEhpZ2hsaWdodDooY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxp
Z2h0JiloaWdobGlnaHQKICAgICBpZiAoaGlnaGxpZ2h0LnRleHQpCiAgICAgICAgIHRleHQgPSBo
aWdobGlnaHQudGV4dC52YWx1ZSgpOwogCi0gICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMo
W1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdo
bGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKKyAgICBh
dXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdp
dGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOwogCiAgICAgaWYgKFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnN0b3JlQXBwSGlnaGxpZ2h0
OmluTmV3R3JvdXA6cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDopXSkKICAgICAgICAgW2RlbGVnYXRl
IF93ZWJWaWV3OnNlbGYgc3RvcmVBcHBIaWdobGlnaHQ6d2tIaWdobGlnaHQuZ2V0KCkgaW5OZXdH
cm91cDpoaWdobGlnaHQuaXNOZXdHcm91cCA9PSBXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhp
Z2hsaWdodDo6WWVzIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6aGlnaGxpZ2h0LnJlcXVlc3RPcmln
aW5hdGVkSW5BcHAgPT0gV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDo6
WWVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRl
LmgKaW5kZXggYWM0YTBmNDM3MDE1MmVkNTcyYjUwOTFkZmE1MWJhZWJhYjg3ZjRlOS4uYzgwMjlj
MTQwYTZkZDE0YjE5NjQ5MjI1Yjg3ODMwZWVjMTM0MDBmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBw
cml2YXRlOgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgICAgIHZvaWQgZGlkU3RhcnRMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5h
bWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRpZEZp
bmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlj
a0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDM4NTU4
ODJjODdkYzllZDMxYzFlZjBiYWI2MTZiMWU2NDU5NDRlZWYuLjhkM2E4NTY0NjJlYWVmNzQxZDhj
MjllMjU5MmZkNTczNjZmNTk5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTEyMjAsNyArMTIyMCw3IEBAIHZvaWQgTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyCiAgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVBy
aXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0
YXRlLT5tX3dlYlZpZXcgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZVdpdGhGaWxlTmFtZTpmaWxlTmFtZSB1dGk6dXRpXTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3Rh
dGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBOYXZpZ2F0aW9uU3Rh
dGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBp
ZiAoIW1fbmF2aWdhdGlvblN0YXRlKQogICAgICAgICByZXR1cm47CkBAIC0xMjMyLDcgKzEyMzIs
NyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRgogICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRl
bGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZp
Z2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZTpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOworICAgIFtzdGF0aWNfY2Fz
dDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdl
dCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV07CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRleCA4MDJmZmFh
NmQ2ZWRiZWEyZTk3Mjc3NGUyNjk2NWIyZGJiMmE3MzVlLi4zZWEyMTU2MDM3ODllMWIwYjI0ZTVi
NTU5OWQzNzUxOTdmNTk1MmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKCkKICAgICAg
ICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
ICAgICBhdXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZShyZWdpc3RyYXRpb25zLmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uRGF0
YSA9IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25z
LmdldCgpKTsKICAgICAgICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKHsgcmVnaXN0cmF0aW9uRGF0YSB9
KSwgMCk7CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLmgKaW5kZXggM2Y2ZGQxZjI0MmU3YTExNWVjZjc5ODM5MGYzNGI2MzVj
NmU4ZDZmOS4uZjU4OTEyNDE3MDJkYWE0MjBjYzRlNmUyNDYyOGExY2RlODkwN2QyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBAIC01MDYsNyArNTA2
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdGFydERyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0l0
ZW0mLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2UpOwogICAgIHZvaWQgc2V0
RmlsZUFuZFVSTFR5cGVzKE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwg
TlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJsZVVSTCwgTlNQ
YXN0ZWJvYXJkICopOwotICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6
SW1hZ2UqLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5n
ICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciogYXJjaGl2ZUJ1ZmZlciwgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU1N0
cmluZyAqcGFzdGVib2FyZE9yaWdpbik7CisgICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFn
ZShXZWJDb3JlOjpJbWFnZSosIE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lv
biwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJsZVVSTCwg
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYXJjaGl2ZUJ1ZmZlciwgTlNTdHJpbmcg
KnBhc3RlYm9hcmROYW1lLCBOU1N0cmluZyAqcGFzdGVib2FyZE9yaWdpbik7CiAgICAgdm9pZCBw
YXN0ZWJvYXJkQ2hhbmdlZE93bmVyKE5TUGFzdGVib2FyZCAqKTsKICAgICB2b2lkIHByb3ZpZGVE
YXRhRm9yUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKiwgTlNTdHJpbmcgKnR5cGUpOwogICAgIE5T
QXJyYXkgKm5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRy
b3BEZXN0aW5hdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCmluZGV4IDNkOWU4NzdiMGNiNzU2NTRiNjM5MTYzOTU1N2Y1MmI2MDM5MmNhYzkuLjYy
MzY3ZGM1YWQxZmUxMjIxZjdiMDk5ZTliYjQ0NTRkYjM3YTU4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC00NDQ5LDcgKzQ0NDksNyBAQCB2
b2lkIFdlYlZpZXdJbXBsOjpzZXRGaWxlQW5kVVJMVHlwZXMoTlNTdHJpbmcgKmZpbGVuYW1lLCBO
U1N0cmluZyAqZXh0ZW5zaW9uLCBOUwogICAgIG1fcHJvbWlzZWRVUkwgPSB1cmw7CiB9CiAKLXZv
aWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBp
bWFnZSwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAq
dGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJp
bmcgKm9yaWdpbklkZW50aWZpZXIpCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFG
b3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJp
bmcgKmV4dGVuc2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0cmluZyAq
dmlzaWJsZVVSTCwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYXJjaGl2ZUJ1ZmZl
ciwgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU1N0cmluZyAqb3JpZ2luSWRlbnRpZmllcikK
IHsKICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9h
cmRXaXRoTmFtZTpwYXN0ZWJvYXJkTmFtZV07CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5
PiB0eXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3Rz
OldlYkNvcmU6OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCksIG5pbF0pOwpAQCAt
NDQ3MCw3ICs0NDcwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW4KICAgICBzZXRGaWxlQW5k
VVJMVHlwZXMoZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgcGFz
dGVib2FyZCk7CiAKICAgICBpZiAoYXJjaGl2ZUJ1ZmZlcikgewotICAgICAgICBhdXRvIG5zRGF0
YSA9IGFyY2hpdmVCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9
IGFyY2hpdmVCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0
YTpuc0RhdGEuZ2V0KCkgZm9yVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJj
aGl2ZV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKQEAgLTQ1MDEsNyArNDUw
MSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByb3ZpZGVEYXRhRm9yUGFzdGVib2FyZChOU1Bhc3Rl
Ym9hcmQgKnBhc3RlYm9hcmQsIE5TU3RyaW5nICp0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChbdHlwZSBpc0VxdWFsOm1fcHJvbWlzZWRJbWFnZS0+dXRpKCldICYmIG1fcHJvbWlzZWRJbWFn
ZS0+ZGF0YSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJ
bWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1E
YXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTooX19icmlkZ2UgTlNEYXRh
ICopcGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6dHlwZV07CiAgICAgfQogCkBAIC00NTU0LDcg
KzQ1NTQsNyBAQCBOU0FycmF5ICpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9w
cGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3RpbgogICAgIFJldGFpblB0cjxOU0RhdGE+
IGRhdGE7CiAKICAgICBpZiAobV9wcm9taXNlZEltYWdlKSB7Ci0gICAgICAgIGRhdGEgPSBtX3By
b21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGRhdGEgPSBtX3By
b21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOmRhdGEuZ2V0KCldKTsKICAgICB9IGVsc2UKICAgICAgICAgd3Jh
cHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzptX3Byb21pc2VkVVJMXSBvcHRpb25zOk5TRmlsZVdyYXBwZXJSZWFkaW5n
SW1tZWRpYXRlIGVycm9yOm5pbF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmlu
ZGV4IGM0ODVjN2ZjMzEzZWEwODMzZmM2MDYyNjcxNjlkNjkyYTgyNDA5MjguLmI0NjJkOGRiNWNj
NjIwMzg2ZTc2ODNkYjI0ODM2YWIzY2U2NGZlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKQEAgLTMyOCw3ICszMjgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFVTRShB
UFBLSVQpCi0gICAgdmlydHVhbCB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgaW1hZ2VC
dWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNp
YmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNv
bnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQ
cm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUs
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luSWRlbnRpZmllcikgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6
OkZsb2F0UmVjdCBjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGIwNDUzOWQ2
MDA1ZDU0M2JjNjJmYjg5MDU5OTY0Njg5MzJhMzNlOTIuLjZlNDlhY2I4YTdhNmI3ZTNiODY0YTgx
YmE0YmQ3Y2Q2ZjgzZWNkY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CkBAIC0yNTksNyArMjU5LDcgQEAgY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFByb3RlY3Rpb25TcGFj
ZTsKIGNsYXNzIFJ1bkxvb3BPYnNlcnZlcjsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3BlZWNo
UmVjb2duaXRpb25SZXF1ZXN0OwogY2xhc3MgVGV4dEluZGljYXRvcjsKIGNsYXNzIFZhbGlkYXRp
b25CdWJibGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3Bw
CmluZGV4IGRmNTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFkODBjMTZiZDEuLjE5OTdlYWUy
MGFjMjJjYTNhZTgwMDRjNzA0ZmEyMmRhNjA5ZTAwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC01MSw2ICs1MSw3IEBAIFdlYlVSTFNjaGVt
ZVRhc2s6OldlYlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFuZGxlciwgV2Vi
UGFnZVByb3h5JiBwCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShwYXJhbWV0ZXJzLnJlcXVlc3Qp
KQogICAgICwgbV9mcmFtZUluZm8oQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKHBhcmFt
ZXRlcnMuZnJhbWVJbmZvKSwgJnBhZ2UpKQogICAgICwgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShzeW5jQ29tcGxldGlvbkhhbmRsZXIpKQorICAgICwgbV9zeW5jRGF0YShtYWtlVW5p
cXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKIH0KQEAgLTE2OCw3ICsxNjksNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgLT4gRQog
ICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogfQogCi1hdXRvIFdlYlVSTFNjaGVtZVRh
c2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRp
b25UeXBlCithdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHlwZQogewogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTE4NywxMCArMTg4LDcgQEAgYXV0byBXZWJVUkxT
Y2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4g
RXhjZXB0aW9uVHkKICAgICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkg
ewotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIG1fc3luY0RhdGEtPmFwcGVu
ZChXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N5bmNEYXRh
ID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShi
dWZmZXIpKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCkBA
IC0yMTcsMTIgKzIxNSw5IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBtX2NvbXBsZXRl
ZCA9IHRydWU7CiAgICAgCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhOwotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7
IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07Ci0KKyAgICAgICAgc2l6
ZV90IHNpemUgPSBtX3N5bmNEYXRhLT5zaXplKCk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhID0geyBtX3N5bmNEYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6
ZSB9OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJy
b3IsIFdURk1vdmUoZGF0YSkpOwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9
CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tE
aWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxv
YWRlcklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2RkMGE0N2YyYzEz
MDg1MjY3Li43OTk0MmY5YjIwYTI2NjBjYTRhN2RjZDQ1MDE4ZDE2ZTQzYjY2NmY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zNSw2ICszNSw3IEBA
CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVz
cGFjZSBBUEkgewogY2xhc3MgRnJhbWVJbmZvOwpAQCAtNDMsNyArNDQsOCBAQCBjbGFzcyBGcmFt
ZUluZm87CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTg0LDcgKzg2LDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvblR5cGUgd2ls
bFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCAgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJik+JiYpOwogICAgIEV4Y2VwdGlvblR5cGUgZGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAg
IEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKTsKLSAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpOworICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZURhdGEoUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIEV4Y2VwdGlvblR5cGUg
ZGlkQ29tcGxldGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAgICAgdm9pZCBz
dG9wKCk7CkBAIC0xMTUsNyArMTE3LDcgQEAgcHJpdmF0ZToKIAogICAgIFN5bmNMb2FkQ29tcGxl
dGlvbkhhbmRsZXIgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSBtX3N5bmNSZXNwb25zZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBtX3N5bmNEYXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWls
ZGVyPiBtX3N5bmNEYXRhOwogCiAgICAgYm9vbCBtX3dhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyQ2FsbGJhY2sgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9DbGlwYm9hcmQuaAppbmRleCA3ODY2Y2RiMTc3NDYwMDdhYjBhN2ExN2M1NWI4N2M3ZjE2NGMy
YmFlLi43Mjc5Zjg0NGNjMmJiZDJiMDE3ZmUwZjA5N2RlMDE4NzBhOWE4NTIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oCkBAIC0zNiw3ICszNiw3IEBAIHR5cGVkZWYg
c3RydWN0IF9HdGtDbGlwYm9hcmQgR3RrQ2xpcGJvYXJkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NSw3ICs1NSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvcm1hdHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiYmKT4mJik7CiAgICAgdm9pZCByZWFkVGV4dChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZyYmKT4mJik7CiAgICAgdm9pZCByZWFkRmlsZVBhdGhzKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25z
dCBjaGFyKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKT4mJik7CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IGNoYXIqLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJik7CiAg
ICAgdm9pZCB3cml0ZShXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYpOwogICAgIHZvaWQgY2xlYXIo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0
azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCmlu
ZGV4IGMyYmY1MTgzYjMwZjEwZTllYjc4MTNjZGFkYTIyM2U5MTg5Yzc0NTkuLjU5NjZkNTU3NGMy
ODJmNTMxNjk0MDk2MDgyOTYwYWUzMzljYTExMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKQEAgLTEyNiwxNSArMTI2LDE1IEBAIHZvaWQgQ2xp
cGJvYXJkOjpyZWFkRmlsZVBhdGhzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4mJik+JiYgY29tcGxlCiBzdHJ1Y3QgUmVhZEJ1ZmZlckFzeW5jRGF0YSB7CiAgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5j
RGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
PiYmIGhhbmRsZXIpCisgICAgZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5jRGF0YShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBo
YW5kbGVyKQogICAgICAgICA6IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikpCiAg
ICAgewogICAgIH0KIAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5kbGVyOworICAgIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9u
SGFuZGxlcjsKIH07CiAKLXZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0IGNoYXIqIGZv
cm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0
IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgZ3RrX2Ns
aXBib2FyZF9yZXF1ZXN0X2NvbnRlbnRzKG1fY2xpcGJvYXJkLCBnZGtfYXRvbV9pbnRlcm4oZm9y
bWF0LCBUUlVFKSwgW10oR3RrQ2xpcGJvYXJkKiwgR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9u
LCBncG9pbnRlciB1c2VyRGF0YSkgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVhZEJ1ZmZl
ckFzeW5jRGF0YT4gZGF0YShzdGF0aWNfY2FzdDxSZWFkQnVmZmVyQXN5bmNEYXRhKj4odXNlckRh
dGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRH
dGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcApp
bmRleCAwN2FiYjcxMzE5ODg1M2I3ODdjNjMyNGJkNDgwYjFlMDg4YTJhM2QzLi41YjgxZmE4ZjI5
ZDNmN2NmMWMzZjA5ZDFmYzNjODg3MzRkYzUxYTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCkBAIC0xMjAsMTUgKzEyMCwxNSBAQCB2b2lkIENs
aXBib2FyZDo6cmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJp
bmc+JiYpPiYmIGNvbXBsZQogc3RydWN0IFJlYWRCdWZmZXJBc3luY0RhdGEgewogICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJBc3lu
Y0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KT4mJiBoYW5kbGVyKQorICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJBc3luY0RhdGEoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYg
aGFuZGxlcikKICAgICAgICAgOiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKQog
ICAgIHsKICAgICB9CiAKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKKyAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlv
bkhhbmRsZXI7CiB9OwogCi12b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiBm
b3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25z
dCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbnN0
IGNoYXIqIG1pbWVUeXBlc1tdID0geyBmb3JtYXQsIG51bGxwdHIgfTsKICAgICBnZGtfY2xpcGJv
YXJkX3JlYWRfYXN5bmMobV9jbGlwYm9hcmQsIG1pbWVUeXBlcywgR19QUklPUklUWV9ERUZBVUxU
LCBudWxscHRyLCBbXShHT2JqZWN0KiBjbGlwYm9hcmQsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBn
cG9pbnRlciB1c2VyRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaAppbmRleCBkMjIzOGZkYzlkMTZmNzdmOGMzZDMwMmNhOTk3NmZlODNm
MWIzZjM3Li5hYjg3YzJhN2U4YzM1N2E2NWIzY2ZlNjA3OTM4ZmRmZWM4YTY1MmJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaApAQCAtMTAw
LDggKzEwMCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBleGVjdXRlVW5kb1JlZG8oVW5kb09yUmVk
bykgb3ZlcnJpZGU7CiAgICAgYm9vbCBleGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rvcihjb25z
dCBTdHJpbmcmIHNlbGVjdG9yKSBvdmVycmlkZTsKICAgICB2b2lkIHN0YXJ0RHJhZyhjb25zdCBX
ZWJDb3JlOjpEcmFnSXRlbSYsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZSkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVy
LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3Qg
U3RyaW5nJiB0aXRsZSwKLSAgICAgICAgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
dmlzaWJsZVVSTCwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVy
LCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxl
LAorICAgICAgICBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBS
ZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBj
b25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRl
U2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzZXRTZWN1cmVJbnB1dFN0
YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlJbnB1dENvbnRleHRBYm91dERpc2NhcmRl
ZENvbXBvc2l0aW9uKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXggYTQxMTIxMzVmMmVmMTkwMTVhNTJmMWUxYjAz
YWUzMGExZjIyM2QyYS4uYzM2M2U5NTVlODc5YzBlMTg2YjQxNTA5MDkxMzM2NWMyMGZlOTA2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5t
bQpAQCAtNDAwLDcgKzQwMCw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnN0YXJ0RHJhZyhjb25z
dCBXZWJDb3JlOjpEcmFnSXRlbSYgaXRlbSwgY29uc3QgU2hhcmVhYmxlQml0CiAgICAgbV9pbXBs
LT5zdGFydERyYWcoaXRlbSwgaW1hZ2UpOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRQ
cm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZl
QnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCit2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUs
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
SWRlbnRpZmllcikKIHsKICAgICBhdXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwog
ICAgIGltYWdlLT5zZXREYXRhKFdURk1vdmUoaW1hZ2VCdWZmZXIpLCB0cnVlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGUwM2UwODBh
ZWUwODM4MGI0NmZmZTg5ZGQ4ZTYxYjY2YjU5OGRiNDYuLjAxZDg0MGEyYTYzZWFjNzkxZmJkODRm
YmU2MzdiNWIyOGNmNjEzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YlBhZ2VQcm94eU1hYy5tbQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvIGltYWdlQnVmZmVyID0gc2hhcmVkTWVtb3J5
SW1hZ2UtPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpbWFnZUhhbmRsZS5kYXRhU2l6ZSk7CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlQnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBhcmNoaXZlQnVmZmVyOwogICAgIGlmICghYXJjaGl2ZUhhbmRsZS5oYW5k
bGUuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byBzaGFyZWRNZW1vcnlBcmNoaXZlID0gU2hhcmVk
TWVtb3J5OjptYXAoYXJjaGl2ZUhhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlv
bjo6UmVhZE9ubHkpOwogICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeUFyY2hpdmUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKaW5kZXggZmE5
NDAyNWVkNzQ3MzBkMjhlNzE2NDYyODVmOWU1YmE2NTNiOGYxMi4uYzI4ZmU2NWYwY2YxNjQzOTk4
MThhY2EzMmY5ODFjYzc3OGYxZTkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcApAQCAtODQsNyArODQsNyBAQCBib29sIFJlbW90ZUNE
TTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETVNlc3Npb25U
eXBlJiwgY29ucwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW1vdGVDRE06OnN1cHBv
cnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhKSBjb25zdAorYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0
cmluZyYgdHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkgY29uc3QKIHsK
ICAgICAvLyBUaGlzIGNoZWNrIHdpbGwgYmUgZG9uZSwgbGF0ZXIsIGluc2lkZSBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UoKS4KICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFJlbW90ZUNETTo6bG9hZEFuZEluaXRpYWxpemUoKQog
ICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OkxvYWRBbmRJbml0aWFsaXplKCksIG1faWRlbnRpZmll
cik7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25z
ZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IFJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICAvLyBUaGlzIGNoZWNrIHdpbGwg
YmUgZG9uZSwgbGF0ZXIsIGluc2lkZSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBk
YXRlTGljZW5zZSgpLgogICAgIHJldHVybiByZXNwb25zZS5jb3B5KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaAppbmRleCAwYWRkZjgzMzUzYjZl
YTFiMmU4YjAyYzZiN2VlM2RhZjQ2OGNkMzgzLi44YzQ1NGViODNlNTk5NGE4ZTRkNTkyZDUxZGY5
MWZmOWI1MjNjYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNLmgKQEAgLTQ4LDEzICs0OCwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wgc3VwcG9y
dHNDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
KSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmlj
dGlvbnMoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdl
YkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNT
ZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETVNlc3Npb25UeXBl
JiwgY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFs
OwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJikgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQgZGlzdGluY3Rp
dmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsK
ICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChj
b25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6
Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50
aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IFdlYkNvcmU6OkNETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8V2ViQ29yZTo6
Q0RNSW5zdGFuY2U+IGNyZWF0ZUluc3RhbmNlKCkgZmluYWw7CiAgICAgdm9pZCBsb2FkQW5kSW5p
dGlhbGl6ZSgpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0
aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwog
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcm
KSBjb25zdCBmaW5hbDsKIAogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0
YVR5cGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRlZElu
aXREYXRhVHlwZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKaW5kZXggYjVkZWEyMWU5OTVhNzM3ZjAzNmY2
NDUzOGMxZmIzZWNiNWU2YmI1NS4uYTEzZTUxNDYwZjZiYjlmODBlZjNkMWE4NDJlZmMwYjlmNDQ1
OTBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBSZW1vdGVDRE1J
bnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtl
eVN5c3RlbUMKICAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6
SW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGRpc3RpbmN0aXZlSWRl
bnRpZmllcnMsIHBlcnNpc3RlbnRTdGF0ZSksIFdURk1vdmUoY2FsbGJhY2spLCBtX2lkZW50aWZp
ZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2sm
JiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRl
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNj
ZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAg
ICBjYWxsYmFjayhGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCmluZGV4IDEwNmJhM2IxMTYxYzhkZjA5ZDcx
ZGZlNjc5YmEzM2Q0MjMwNzllOTYuLjJjNzg1MWU0NDBiMDhhNTJhMmFlNzBkYTdlNDE4ODgyZTNj
NjE0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKIAogICAgIElt
cGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBJbXBsZW1lbnRhdGlvblR5cGU6OlJlbW90ZTsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhD
b25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBB
bGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNz
Q2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9p
ZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVj
dG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5rZXlTeXN0ZW07IH0KICAgICBS
ZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKaW5kZXggYWYwYmFkNGM5MGQ4ZGQ1MTM3NzRh
ZWY2YTE1Yjc3YmE4OWZjNTA2NC4uYzc0MGMwNDUwNmZkZWRhYzlmNGNmNTAyYzIwNWE4YTM3ZmNh
NDU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcApAQCAtNDksNyArNDksNyBAQCBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRy
PFJlbW90ZUNETUZhY3Rvcnk+JiYgZgogewogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJh
Y2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBj
YWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBjYWxsYmFjayhTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFpbGVkKTsKQEAgLTY1
LDcgKzY1LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcKICAgICB9LCBtX2lkZW50aWZpZXIp
OwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9u
c2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9mYWN0
b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9w
dCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgTGljZW5zCiAgICAgfQogCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUpLCBb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEtleVN0YXR1c1ZlY3RvciYmIGNoYW5nZWRL
ZXlzLCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mJiBtZXNzYWdlLCBib29s
IHN1Y2NlZWRlZCkgbXV0YWJsZSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1
ZmZlcj4+IHJlYWxNZXNzYWdlID0gc3RkOjpudWxsb3B0OworICAgICAgICBzdGQ6Om9wdGlvbmFs
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gcmVhbE1lc3NhZ2UgPSBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIGlmIChtZXNzYWdlICYmIG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKSkKICAgICAg
ICAgICAgIHJlYWxNZXNzYWdlID0gbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpLnJlbGVhc2VOb25O
dWxsKCk7CiAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3ZlKHJl
YWxNZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbi5oCmluZGV4IDRmZmU0Y2FjZWNjZGU0M2Q1Y2IxMWUyMzZjYTA0NWFjZGE4M2E3
ZWIuLjRlNGNkMmMwMDVjNmIwMDY1ZjljZGIxODhjNGJjZTBiNWJmYTY2MDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24uaApAQCAtNTksOCArNTksOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBz
ZXRDbGllbnQoV2Vha1B0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+JiYgY2xp
ZW50KSBmaW5hbCB7IG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOyB9CiAgICAgdm9pZCBjbGVh
ckNsaWVudCgpIGZpbmFsIHsgbV9jbGllbnQgPSBudWxscHRyOyB9Ci0gICAgdm9pZCByZXF1ZXN0
TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmlu
YWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNl
bnNlVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAg
ICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBl
LCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5
cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgTG9hZFNl
c3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBy
ZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJl
bW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAK
aW5kZXggOWEyMTlhNTQ0ZTU1MzgzZjU0ZTcxZGFiZDM1NGNjNDQwYTQxNDJiOS4uNjI5MjY3OThj
NWMxMTMyNGEzMWFhNTBjZGE3ZWQxZmJmNzRmZTcwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNw
cApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXRFeHBl
Y3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplCiAKIC8vIElmIGFs
bERhdGFSZWNlaXZlZCBpcyB0cnVlLCB0aGUgY2FsbGVyIGV4cGVjdHMgZW5jb2RlZERhdGFTdGF0
dXMoKSB0byBiZSA+PSBFbmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZQogLy8gYWZ0ZXIg
dGhpcyBmdW5jdGlvbiByZXR1cm5zIChpbiB0aGUgc2FtZSBydW4gbG9vcCkuCi12b2lkIFJlbW90
ZUltYWdlRGVjb2RlckFWRjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldERhdGEoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFt
X2dwdVByb2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYu
aAppbmRleCBlNWNmZTk0ZWNkM2E5YzA2MDBmYzAwMzIwZmY0MzA2MWM5MGVkNjliLi40MGQzNzM0
ZjdhMzIyZThiYWNiOWQxYzBkZWE3MDc5ZTJhZDE3ZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgK
QEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGIGZpbmFsCiAgICAg
OiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VEZWNvZGVyCiAgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1v
dGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZShSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyJiBt
YW5hZ2VyLCBjb25zdCBXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyJiBpZGVudGlmaWVy
LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQorICAgIHN0
YXRpYyBSZWY8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGUoUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGTWFuYWdlciYgbWFuYWdlciwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmll
ciYgaWRlbnRpZmllciwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVJbWFnZURlY29kZXJBVkYobWFuYWdlciwgaWRlbnRpZmllciwgbWltZVR5cGUpKTsKICAgICB9
CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRy
IGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgV2ViQ29yZTo6U3Vic2FtcGxpbmdMZXZl
bCA9IFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IFdlYkNvcmU6OkRl
Y29kaW5nT3B0aW9ucyYgPSBXZWJDb3JlOjpEZWNvZGluZ09wdGlvbnMoV2ViQ29yZTo6RGVjb2Rp
bmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRl
bnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0gICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEo
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBm
aW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNp
emVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCmluZGV4
IDQxZDUzODgwMjNkMzkxNDk1MjE4MzVmNjg4ZGU0ZDQ4ZjY1ZDc2N2UuLjA4MmIzMzY2YzhiYzcx
MzBkNzVkNTY5OGE3ZDc5ZTY4OTJhZDhmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZN
YW5hZ2VyLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IFJlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2RlcihTaGFyZWRCdWZmZXIm
IGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1Jl
ZlB0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6
OmNyZWF0ZUltYWdlRGVjb2RlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3RkOjpvcHRp
b25hbDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwogICAg
IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgZGF0YSB9OwpA
QCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6c2V0
VXNlR1BVUHJvY2Vzcyhib29sIHVzZUdQVVByb2Nlc3MpCiAgICAgSW1hZ2VEZWNvZGVyOjppbnN0
YWxsRmFjdG9yeSh7CiAgICAgICAgIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c3VwcG9ydHNNZWRp
YVR5cGUsCiAgICAgICAgIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6Y2FuRGVjb2RlVHlwZSwKLSAg
ICAgICAgW3RoaXNdKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKSB7CisgICAgICAgIFt0aGlzXShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pIHsKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbWFnZURlY29kZXIoZGF0YSwgbWltZVR5
cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgICAgIH0K
ICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmgKaW5kZXggYzIzNzgyYjY1
MDRlYzc5YmU0NmUxMjZmNGU1OTFiM2ZmN2Y2ZGJhOC4uMzYxOGFmZDEyMDk4YjU1NzZiNGRkNGZm
YmYzYzA2ZmJhODQyYTc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmgKQEAg
LTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uJiBlbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxSZW1vdGVJbWFn
ZURlY29kZXJBVkY+IGNyZWF0ZUltYWdlRGVjb2RlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRh
dGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OkFscGhhT3B0aW9uLCBXZWJDb3Jl
OjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgUmVmUHRyPFJlbW90ZUltYWdlRGVj
b2RlckFWRj4gY3JlYXRlSW1hZ2VEZWNvZGVyKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OkFscGhhT3B0aW9uLCBX
ZWJDb3JlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKICAgICAvLyBHUFVQcm9jZXNz
Q29ubmVjdGlvbjo6Q2xpZW50LgogICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9z
ZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAK
aW5kZXggYTUzZjE1N2JlZWJkN2RiMmU4MWIyZjVlY2JkNjM4MTg2MmE2ODA4YS4uZjFkMWMxMGE2
ZTVjM2FiMmI4MTMyM2MwNGRhYzA1NzI4NmU5ZmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24u
Y3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgY29udmVy
dFRvU2hhcmVkQnVmZmVyQ29weShUIGFycmF5KQogewogICAgIGlmICghYXJyYXkpCiAgICAgICAg
IHJldHVybiB7IH07Ci0gICAgcmV0dXJuIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJyYXktPmRh
dGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkgfTsKKyAgICByZXR1cm4geyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpjcmVhdGUoYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkgfTsK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb24+IFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb246OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+IGZhY3Rv
cnksIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYgaWRlbnRpZmllcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDk2NmZjOTNiNzdhZmFhM2U2MjA4ZDdhYmE1
YWVkMmM3YTk0Yzc0YjIuLjAwNWEzN2NjMjZlYzRjMDkwMWJmNGYzNzEyMjM4NjVkZTJkMTY2YmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtNzgsNyArNzgsNyBAQCBTb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlOjp+U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZSgpCiAgICAg
bV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fcmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
IH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjphcHBlbmQoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjphcHBlbmQoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBpZiAoIW1fZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgK
aW5kZXggMzYwMTc1YmZiZTlkMWFmODNlZDU3OTEzNzNiNzc1ZWU3NTBhYzdjYy4uZWE1ZmEzZWMz
NmMyYjg1OWVlNTc4Y2NkMGUwMzQ4YzczY2I4NmQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclBy
aXZhdGUgb3ZlcnJpZGVzCiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCkgZmluYWw7Ci0gICAgdm9p
ZCBhcHBlbmQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBh
cHBlbmQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAg
IHZvaWQgYWJvcnQoKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsK
ICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2
YXRlLmNwcAppbmRleCAxMWI0YTg2ZTQ4NTJmNmMyMDYxZmEzZmM5YWYyOWY4ODk5ZjRlYjlmLi5i
NDA4OWZkMzU0OGM5N2YxN2ZjMmI5ZmIwMDI3ODBkNjQzY2YyM2JkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclBy
aXZhdGUuY3BwCkBAIC0xNjUsMTAgKzE2NSwxMCBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRl
OjpzdG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqIHN0b3JhZ2UsIGNvbnN0IFdlYkNvcmU6Ogog
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6QXVk
aW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQgeyBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1v
dmUoaGFuZGxlKSwgZGF0YVNpemUgfSwgZm9ybWF0LCBmcmFtZUNvdW50IH0sIG1faWRlbnRpZmll
cik7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OmZldGNoRGF0YShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE1lZGlhUmVj
b3JkZXJQcml2YXRlOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
ZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6RmV0Y2hEYXRhIHsg
fSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1pbWVU
eXBlID0gbWltZVR5cGUoKV0oYXV0byYmIGRhdGEsIGRvdWJsZSB0aW1lQ29kZSkgbXV0YWJsZSB7
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKGRhdGEuc2l6ZSgpKQog
ICAgICAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpLCBt
aW1lVHlwZSwgdGltZUNvZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKaW5kZXggMzAzYTU0Zjc2ZjE4
NWU5NjQ1NGVmOWY1YmI0NjFmMjhlMTI2Nzg2ZC4uNTc2ZmQxYzZlOTdjMGNhZDhjYmZlYzk0ZTNi
ZDM2MzMwNzZlNDRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGUKICAg
ICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiwgV2ViQ29y
ZTo6VmlkZW9TYW1wbGVNZXRhZGF0YSkgZmluYWw7Ci0gICAgdm9pZCBmZXRjaERhdGEoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGZldGNoRGF0YShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmKSBmaW5hbDsKICAgICB2
b2lkIHN0b3BSZWNvcmRpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAg
ICB2b2lkIHN0YXJ0UmVjb3JkaW5nKFN0YXJ0UmVjb3JkaW5nQ2FsbGJhY2smJikgZmluYWw7CiAg
ICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBjb25z
dCBXZWJDb3JlOjpQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDA2NzNmNzRkZGZiNDhlNWJkZjQzOGNkOTBi
ZTM3OTRlZWUyMDkxYmIuLjAzNTNhYWJmN2Q0YjkyNWFhMmYxNTYyZDU3M2FhZjMwOTNjODNiYzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
QVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgK
QEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFn
bWVudDsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3Bl
cnRpZXM7CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9B
UElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAppbmRleCBhMDYzNTIwNDMzNWIzYWIw
ZTZkZmIwYzY3Nzc2N2Y0MjhlOGE3N2UyLi4xODBiMTExMWVjZjAxMTMyODA5MjY2YTFiY2UyN2Qy
NjBlNGZhMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgRE9NV2luZG93RXh0ZW5z
aW9uOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTYsNyArNTYsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+UGFnZUxvYWRlckNsaWVudCgpID0gZGVmYXVsdDsKIAogICAg
IHZpcnR1YWwgdm9pZCB3aWxsTG9hZFVSTFJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgQVBJOjpPYmplY3QqKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0
cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpVUkwmLCBBUEk6Ok9iamVjdCop
IHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFn
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29u
c3QgV1RGOjpVUkwmLCBBUEk6Ok9iamVjdCopIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJG
cmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQ
YWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOGQ1MjRi
NTI1YzZlN2EwY2M2YmRlNWU4MGE0N2MxNzFlMzQxNDY4Yy4uM2Y0MWIxZjMzOGZhNDQ0NzQ5MDc0
ODE4OWJiODk5NTFjZjFiMTcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudC5jcHAKQEAgLTY1LDE1ICs2NSwxNiBAQCBzdGF0aWMgdm9pZCByZWxlYXNl
U2hhcmVkQnVmZmVyKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogICAgIHN0YXRp
Y19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsK
IH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJl
cXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTaGFy
ZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3Ry
aW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9h
ZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1J
TUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJs
ZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewogICAgIGlmICghbV9jbGllbnQud2lsbExv
YWREYXRhUmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPEFQSTo6RGF0YT4g
ZGF0YTsKICAgICBpZiAoc2hhcmVkQnVmZmVyKSB7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+cmVm
KCk7Ci0gICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25z
dCB1bnNpZ25lZCBjaGFyKilzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXpl
KCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGF1dG8gY29u
dGlndW91c0J1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAg
Y29udGlndW91c0J1ZmZlci0+cmVmKCk7CisgICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0
ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKiljb250aWd1b3VzQnVmZmVyLT5k
YXRhKCksIGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgY29u
dGlndW91c0J1ZmZlci5wdHIoKSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExvYWREYXRh
UmVxdWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgpKSwg
dG9BUEkoTUlNRVR5cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRvVVJM
UmVmKHVucmVhY2hhYmxlVVJMLnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuaAppbmRleCAzNmJkOTgwYjJmYWExYWY0NWFjMzEwNmViMDFlOWYzNzZiYTEz
YWNmLi44NjNiZGFiNjI4NGNhM2FhZDJmOWQ1ZmZmNWZkNjhlYWI4YjJiNzMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBA
IHB1YmxpYzoKICAgICBleHBsaWNpdCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQoY29u
c3QgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50QmFzZSopOwogCiAgICAgdm9pZCB3aWxsTG9hZFVS
TFJlcXVlc3QoV2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIEFQSTo6
T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2Um
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIq
LCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgVVJMJiwgQVBJ
OjpPYmplY3QqKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFn
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29u
c3QgVVJMJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlkU3RhcnRQcm92
aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlJiwgV2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmpl
Y3Q+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlJiwgV2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmpl
Y3Q+Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9k
ZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5t
bQppbmRleCBlNTI0ZDhlMWIwMTdhYThlNWUwM2I4OTJkOTJiNzU4OTRjNThmMzc0Li5hNzg0ZWMz
ODhiMjI1MjRjYzBkYTYzMjc4ZTVlNzU5MTM3ZGNmNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQ
cmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEFSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2Rl
bFNvdXJjZSkKICAgICBpZiAoZmlsZSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBGaWxl
U3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9k
ZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZp
bGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNv
dXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwog
ICAgIG1fZmlsZVBhdGggPSBmaWxlUGF0aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmlu
ZGV4IDQ3YjkxY2U4N2QzNjEzZTM1ZDU3OTQwNzk3YWRmMGIxZGQwMGE0OGIuLjljZDY1YWNhMzhk
YzUxOGFmMjI3ZmFlNDA5ZWRhY2IwMTk0MDQ2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cApAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRD
YWNoZVJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKICAgICAKICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVy
KCk7CiAgICAgaWYgKCFidWZmZXIpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3Jl
YXRlIFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZSBmb3IgcmVzb3Vy
Y2UgdXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgZnJv
bSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3Qu
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcAppbmRleCAyNTk0NDk0MjM4NTVmZWQzYWFhYWI0MTQ4MTlmODk1MWEzYjhiN2Zm
Li4zMTBmY2E3ODc1YzMyYzNjZDc0NzhkYjY0ZjU5YWMyY2Y1MDE2MzkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib28KICAgICBpZiAoSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShtX2Nv
cmVMb2FkZXItPmZyYW1lKCksIHJlc3BvbnNlKSkgewogICAgICAgICBhdXRvIGludGVyY2VwdGVk
UmVxdWVzdElkZW50aWZpZXIgPSBtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKTsKICAgICAgICAg
bV9pbnRlcmNlcHRDb250cm9sbGVyLmJlZ2luSW50ZXJjZXB0aW5nUmVzcG9uc2UoaW50ZXJjZXB0
ZWRSZXF1ZXN0SWRlbnRpZmllcik7Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldl
YktpdDo6aW50ZXJjZXB0UmVzcG9uc2UobV9jb3JlTG9hZGVyLT5mcmFtZSgpLCByZXNwb25zZSwg
aW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyLCBwb2xpY3lEZWNpc2lvbkNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShwb2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVy
KV0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgaW5zcGVjdG9yUmVzcG9uc2UsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG92ZXJyaWRlRGF0YSkgbXV0YWJsZSB7CisgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UobV9jb3JlTG9hZGVyLT5mcmFtZSgp
LCByZXNwb25zZSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyLCBwb2xp
Y3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShwb2xpY3lEZWNpc2lvbkNvbXBs
ZXRpb25IYW5kbGVyKV0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgaW5zcGVjdG9yUmVzcG9uc2Us
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGEpIG11dGFibGUgewog
ICAgICAgICAgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+aWRlbnRpZmll
cigpKSB7CiAgICAgICAgICAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRp
ZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgaW50ZXJjZXB0IGxvYWQgYmVjYXVzZSBu
byBjb3JlTG9hZGVyIG9yIG5vIElEIik7CiAgICAgICAgICAgICAgICAgbV9pbnRlcmNlcHRDb250
cm9sbGVyLmNvbnRpbnVlUmVzcG9uc2UoaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllcik7CkBA
IC0yOTUsMTEgKzI5NSwxMSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVz
b3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZAogICAgIExPRyhOZXR3
b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2Ug
Zm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7
CiAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZToi
KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5T
aGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgaWYgKCFidWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIGJ1ZmZlciBmcm9tIFNoYXJlYWJs
ZVJlc291cmNlIHNlbnQgZnJvbSB0aGUgbmV0d29yayBwcm9jZXNzLiIpOwotICAgICAgICBXRUJS
RVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiBVbmFibGUgdG8g
Y3JlYXRlIFNoYXJlZEJ1ZmZlciIpOworICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNF
X0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiBVbmFibGUgdG8gY3JlYXRlIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIiKTsKICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gbV9jb3JlTG9hZGVyLT5mcmFt
ZSgpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCiAgICAg
ICAgICAgICAgICAgcGFnZS0+ZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGlj
TWVzc2FnZShXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmludGVybmFsRXJyb3JLZXko
KSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpjcmVhdGVTaGFyZWRCdWZmZXJGYWls
ZWRLZXkoKSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggNDJkZTQ2MTQxOTc3OGI3
YzQ1MGZjYTFlYjAzN2MxY2U5N2QyZDYzMS4uYTdmNDVjODQwMWIyZmQyZjg3MGUzNjc4YzU4ZmMz
MTBjMmUxZjI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4uaApAQCAtMjA3LDcgKzIwNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcml2
YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCkgZmluYWwgeyB9CiAgICAgYm9vbCBnZXRGb3Jt
VmFsdWUoU3RyaW5nJiBmb3JtVmFsdWUpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9v
bCBoYW5kbGVTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxH
cmFudWxhcml0eSkgZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2
ZVJlc291cmNlRGF0YSgpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgZmluYWw7CiAgICAgdm9p
ZCB3aWxsRGV0YWNoUmVuZGVyZXIoKSBmaW5hbDsKICAgICBib29sIHBsdWdpbkhhbmRsZXNDb250
ZW50T2Zmc2V0Rm9yQWNjZXNzaWJpbGl0eUhpdFRlc3QoKSBjb25zdCBmaW5hbDsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmlu
ZGV4IGQyM2FiYjllNjUxMWIxM2JiZDUyM2FmNDUxZjQ0MTc4NzNhNmMxZTAuLmQ0N2YzMmI3ZDQ5
MTk1NmJkY2U3N2JmZTZmMTVjYTc4NjViZmQxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMjU1Miw3ICsyNTUyLDcgQEAg
dm9pZCBQREZQbHVnaW46Om5vdGlmeURpc3BsYXlNb2RlQ2hhbmdlZChpbnQpCiAgICAgdXBkYXRl
U2Nyb2xsYmFycygpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQREZQbHVnaW46OmxpdmVS
ZXNvdXJjZURhdGEoKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBERlBs
dWdpbjo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgTlNEYXRhICpwZGZEYXRhID0g
bGl2ZURhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApp
bmRleCA4OGY0NWNlNTFjZTMxZGYwYzViM2I3NTg2MjM2YzNmMGQ5YzkzYWQzLi41OGQ3MGEzOWEx
NmQ2YTRjMGU4YjBjYTlkMDNhYzNkMzdhZWRmY2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtNjEsNyArNjEsNyBAQCBjbGFzcyBJbnRQb2ludDsKIGNs
YXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgU2Nyb2xsYmFyOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC0yODgsNyArMjg4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXZWJD
b3JlOjpJbnRQb2ludCBjb252ZXJ0VG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
cG9pbnRJbkxvY2FsQ29vcmRpbmF0ZXMpIGNvbnN0OwogCi0gICAgdmlydHVhbCBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJj
ZURhdGEoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlM
b29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSA9IDA7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZDU0
ZjI3ZjA3MDkxNDdlOWVkZWMwNmRlNThjMWU4Y2MxMjMxYTY3Ny4uN2ZiMjBjNTkyZGJmYTA5NmUz
OGJjMTY4NzAzNzM4Y2I4ZjQwN2M5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTI4OSw2ICsyODksNyBAQCBQbHVnaW5WaWV3OjpQ
bHVnaW5WaWV3KEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW5FbGVtZW50LCBSZWY8UGx1Z2luPiYm
IHBsdWdpbiwgYwogICAgICwgbV93ZWJQYWdlKHdlYlBhZ2UobV9wbHVnaW5FbGVtZW50LmdldCgp
KSkKICAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogICAgICwgbV9wZW5kaW5nVVJMUmVx
dWVzdHNUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZQbHVnaW5WaWV3OjpwZW5kaW5nVVJM
UmVxdWVzdHNUaW1lckZpcmVkKQorICAgICwgbV9tYW51YWxTdHJlYW1EYXRhKG1ha2VVbmlxdWVS
ZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKICAgICBtX3dlYlBhZ2UtPmFkZFBsdWdpblZp
ZXcodGhpcyk7CiB9CkBAIC00MDMsOSArNDA0LDYgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxM
b2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAg
ICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBBU1NFUlQobV9tYW51YWxTdHJlYW1T
dGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAg
IGlmICghbV9tYW51YWxTdHJlYW1EYXRhKQotICAgICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEt
PmFwcGVuZChieXRlcywgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQzNyw3
ICs0MzUsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIG1f
bWFudWFsU3RyZWFtU3RhdGUgPSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQ7CiAgICAgICAg
IG1fbWFudWFsU3RyZWFtRXJyb3IgPSBlcnJvcjsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRh
ID0gbnVsbHB0cjsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5yZXNldCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC05MjYsMTEgKzkyNCwxMSBAQCB2b2lkIFBsdWdpblZpZXc6
OndpbGxEZXRhY2hSZW5kZXJlcigpCiAgICAgbV9wbHVnaW4tPndpbGxEZXRhY2hSZW5kZXJlcigp
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRh
KCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpsaXZl
UmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9w
bHVnaW4pIHsKLSAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSAmJiBtX21hbnVhbFN0cmVh
bVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKLSAgICAgICAgICAgIHJldHVy
biBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09
IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKKyAgICAgICAgICAgIHJldHVybiBtX21hbnVh
bFN0cmVhbURhdGEtPmdldCgpOwogCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAg
LTEyNDIsMTAgKzEyNDAsMTAgQEAgdm9pZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJl
YW0oKQogICAgIG1hbnVhbExvYWREaWRSZWNlaXZlUmVzcG9uc2UobV9tYW51YWxTdHJlYW1SZXNw
b25zZSk7CiAKICAgICAvLyBEZWxpdmVyIHRoZSBkYXRhLgotICAgIGlmIChtX21hbnVhbFN0cmVh
bURhdGEpIHsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogKm1fbWFudWFsU3Ry
ZWFtRGF0YSkKKyAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YS0+aXNOdWxsKCkpIHsKKyAgICAg
ICAgYXV0byBidWZmZXIgPSBtX21hbnVhbFN0cmVhbURhdGEtPnRha2UoKTsKKyAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQogICAgICAgICAgICAgbWFudWFs
TG9hZERpZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpLCBlbGVtZW50LnNlZ21l
bnQtPnNpemUoKSk7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CiAgICAg
fQogCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZp
bmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
CmluZGV4IDIxMjZlYjhlZGI1NTkzODZiMzQyMjVlYjJiZDViZmNkNjgwMjNmMjMuLmQxNTNhMjlj
YTE0YTkwZTMyMjdhODkxZTNlZWY1ZTRlNzk3MzUxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIC8vIEZJWE1FOiBFdmVudHVhbGx5IHRo
aXMgc2hvdWxkIG1vdmUgdG8gV2ViQ29yZS4KIApAQCAtMTE1LDcgKzExNiw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgc2hvdWxkQWxsb3dTY3JpcHRpbmcoKTsKIAotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdDsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0Owog
ICAgIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6
OkZsb2F0UG9pbnQmKTsKICAgICBTdHJpbmcgZ2V0U2VsZWN0aW9uRm9yV29yZEF0UG9pbnQoY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIGNvbnN0OwogICAgIGJvb2wgZXhpc3RpbmdTZWxlY3Rp
b25Db250YWluc1BvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBjb25zdDsKQEAgLTI1
Miw3ICsyNTMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBt
X21hbnVhbFN0cmVhbVJlc3BvbnNlOwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgbV9tYW51
YWxTdHJlYW1FcnJvcjsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX21hbnVh
bFN0cmVhbURhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+
IG1fbWFudWFsU3RyZWFtRGF0YTsKIAogICAgIC8vIFRoaXMgc25hcHNob3QgaXMgdXNlZCB0byBh
dm9pZCBzaWRlIGVmZmVjdHMgc2hvdWxkIHRoZSBwbHVnaW4gcnVuIEpTIGR1cmluZyBwYWludGlu
Zy4KICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX3RyYW5zaWVudFBhaW50aW5nU25hcHNo
b3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IGZlZThmZWE3
YmNjOGQ1OWMwN2UzYzViYTRkNjA5NTUyYTRkNjI4YmYuLmIwNGNjY2YxMTNlNDkyOGZhNjYzODNi
ZDI0MzFkYjg3NDg1M2NjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
Y3BwCkBAIC03MSwxNiArNzEsMTUgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKICAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2Vp
dmVSZXNwb25zZSB7IHJlc3BvbnNlLCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKK3ZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghbV9jb25u
ZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7Ci0gICAgICAgIGlmICghc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpKQotICAgICAgICAgICAg
bV9yZXNwb25zZURhdGEgPSBidWZmZXItPmNvcHkoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKS0+YXBwZW5kKFdU
Rk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFy
ZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkpCisgICAgICAgICAgICBtX3Jlc3BvbnNl
RGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsKKyAgICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVm
ZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDYsOCArMjA1LDggQEAgdm9pZCBXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCiAgICAg
c3dpdGNoT24obV9yZXNwb25zZURhdGEsIFt0aGlzXShzdGQ6Om51bGxwdHJfdCYpIHsKICAgICAg
ICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7Ci0gICAgfSwgW3Ro
aXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgZGlkUmVjZWl2ZURhdGEo
V1RGTW92ZShidWZmZXIpKTsKKyAgICB9LCBbdGhpc10oY29uc3QgU2hhcmVkQnVmZmVyQnVpbGRl
ciYgYnVmZmVyKSB7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKCpidWZmZXIuZ2V0KCkpOwogICAg
ICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9LCBb
dGhpc10oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQuaAppbmRleCBiMzQ3Y2FkMmFiNWY1NzFiMWEwZTIwNzIwODA0MzY3ZDc3MDE4NjAw
Li42YjBhNDE3Y2YwZDNhZTBkN2I4OTNhOTk4NjgzYWJmMmJjNGE0ZDk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9GZXRjaExvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtl
ckZldGNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4K
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00OSw3ICs1MCw3IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYmKSBmaW5hbDsK
ICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkRmluaXNoKCkgZmluYWw7CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAg
ICAgc3RkOjpvcHRpb25hbDxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX25l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKICAgICBib29s
IG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07
Ci0gICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNl
RXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKKyAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3Qs
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVu
aXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CiAgICAgYm9v
bCBtX2RpZEZpbmlzaCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4
IDgxZTM3OWUzM2QxYTlhY2RjODZlZjVjNGJlMjFhNzI2MGQ5NGQ0OGUuLjdjZmMwM2E4NWQzOWQ4
MWYzOTJjMGFhMTMwZjgzZmJkMmM4MzRmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0x
NDIsNyArMTQyLDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUoY29u
c3QgU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSwgY29uc3Qgc3RkOjoKIAogI2lmIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1l
bnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50
aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEoaWRlbnRpZmllciwgY29udGVu
dFR5cGUsIHByZWZlcnJlZEZpbGVOYW1lLCBkYXRhLmdldCgpKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKaW5kZXggNTA2ZDlmNTQxMzhkMzdjYjRjNjRlZDQ2MGY1OWE1YzI4ZmU1MjJhNi4uYjA1ODYx
ODkxZWNjODRjNjM2OGEyMDZjMjcwMTA2MGY1MDUyZjVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApA
QCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkTW92ZVJhbmdlQWZ0ZXJE
ZWxldGUoY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVS
YW5nZSYpIGZpbmFsOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICB2b2lk
IHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJ
ZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0
IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCkgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8
V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDRiZGJiY2NkM2ZiYzYyMGUwNzU0MTA1Y2VhMDllZGRm
MDUxMjBiNmIuLjE0YTA4M2NhMjA3YTkwNjNjZjgwYjFlN2U5NjcwYTQ4N2NmNGQzOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE4OCw4ICsxMTg4LDggQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIpCiAgICAgICAgICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9h
ZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2Ug
ZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+ZGF0YSgp
IDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6
IDApOworICAgICAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNv
dXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICAgICAgICAgIElQQzo6
RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3Vy
Y2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VE
YXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgICAgICAgICB3ZWJQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3Vz
dG9tQ29udGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgp
LCBkYXRhUmVmZXJlbmNlKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcAppbmRleCBmNDFhNzBlZjViYjZjMGVjZThiZDg2Mjc0MTE2MDFjZjczMGU2MmExLi40
YThiZWU1N2ZkYjFmZmNkZWYwMDg5ZmE2NWU5NzUzNzUwZDI1MGU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIGludDY0X3QgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBjCiAgICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50OwogfQogCi1pbnQ2NF90IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9y
eTo6SGFuZGxlIGhhbmRsZTsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggZTI4MDk5NjNmNGY1MDY4MWI3ZDAxZjQx
YTY4NTMxYWI3MzIxNGZiMC4uMWZmODNlMTFiYzE3ODlhYWMwZjkwMGM5M2RjMjJmYmYyMzllYTJi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNjYsNyArNjYsNyBAQCBwcml2
YXRlOgogCiAgICAgaW50NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VHlwZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBp
bnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNldEJ1
ZmZlckZvclR5cGUoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRVUkwo
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50
NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRleCAwN2IxNjdlMGVlZWU3Njg4NzViMDM5ZGZhNTlmNWZk
MTNjNzU0ZTEwLi5kNDE1OTA0YzcxYjFjMGM3MmEzZTE3Y2Y3YjM0NTIwYWEyNzkwMzY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlBy
ZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTQ1LDEzICs0NSwx
MyBAQCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cgogICAgIDogbV9maWxlTmFtZSB7IGZpbGVOYW1l
IH0KICAgICAsIG1fdXRpIHsgdXRpIH0KICAgICAsIG1fcGFnZUlEIHsgcGFnZUlEIH0KLSAgICAs
IG1fYnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX2J1ZmZlciB7IG1h
a2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiB7CiB9CiAKIFdlYlByZXZpZXdM
b2FkZXJDbGllbnQ6On5XZWJQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwogCi12b2lk
IFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCit2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZm
ZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gd2Vi
UGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobV9wYWdlSUQpOwogICAgIGlm
ICghd2ViUGFnZSkKQEAgLTY5LDEzICs2OSwxMiBAQCB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGll
bnQ6OmRpZEZpbmlzaExvYWRpbmcoKQogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUobV9idWZmZXIuZ2V0KCkpOwotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIHdlYlBh
Z2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fYnVmZmVy
LT50YWtlKCkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZh
aWwoKQogewotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIG1fYnVmZmVyLT5yZXNldCgpOwog
fQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlcXVlc3RQYXNzd29yZChGdW5j
dGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3
TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwNDkyY2VlYzJmOWI5Y2Q4NTM4Mzg0
ODRmYmMyNmMwN2NiNTNkYTg3Li5jYzNiMjRiNzI5YjIxOGI4MGQzN2ExMmNkN2ZhYzNkZmE5YmVk
MWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMjksOCAr
MjksMTMgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBXZWJGcmFtZTsKQEAgLTQ1LDcgKzUwLDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIFdlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwg
Y29uc3QgU3RyaW5nJiB1dGksIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZEZhaWwoKSBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzUGFzc3dvcmRF
bnRyeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTU0LDcgKzU5LDcgQEAg
cHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcgbV9maWxlTmFtZTsKICAgICBjb25zdCBTdHJpbmcg
bV91dGk7CiAgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7Ci0gICAg
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgVW5pcXVlUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggYTY0YzZhOGIzYzY5NWUx
NzMzNjQzMzZiY2IwZjY4ZGJkZDljMmQyMS4uZTFlMGU2MTEyYTJkZWRjM2I4YmI2MzA5ODUzNTM3
NmVmNDNhZDUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtMTUwLDcgKzE1
MCw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAKICAgICBOU1VSTFJlc3BvbnNlICpyZXNw
b25zZSA9IGltYWdlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7Cisg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAgICAgc2l6ZV90
IGltYWdlU2l6ZSA9IGltYWdlQnVmZmVyLT5zaXplKCk7CiAKICAgICBhdXRvIHNoYXJlZE1lbW9y
eUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqaW1hZ2VCdWZmZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDliZDRjZDJk
MGNiMTAzYjQ1YWE4ZTZjMWQ0MjdjMGIxN2JmNWVkMTMuLmQ4OGY0NGNmY2RlNWUxNWY2NmMxMjRi
NDBmNWI1NDM1Yjk0Njk3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKQEAgLTM0MCwxMCArMzQwLDEwIEBAIFN0cmluZyBXZWJGcmFtZTo6c291
cmNlKCkgY29uc3QKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBtX2NvcmVG
cmFtZS0+bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWRvY3VtZW50
TG9hZGVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBk
b2N1bWVudExvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNl
RGF0YSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBkZWNvZGVyLT5lbmNv
ZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEt
PnNpemUoKSk7CisgICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNv
dXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6
ZSgpKTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjpjb250ZW50c0FzU3RyaW5nKCkgY29uc3QgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDFlMTk3
M2EwMzA4YzExODZhN2E0ZDE5ZGY1ZjI3NzIwNTZmYTkwZGQuLjc4ZDBmN2ZjZTBmYzJlYWQzNmY2
Y2I3ODM2MDY4M2VmYjE3NzU4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0xNzM4LDcgKzE3MzgsNyBAQCBOT19SRVRVUk4gdm9pZCBXZWJQ
YWdlOjpsb2FkUmVxdWVzdFdhaXRpbmdGb3JQcm9jZXNzTGF1bmNoKExvYWRQYXJhbWV0ZXJzJiYs
IFVSTAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJz
aXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBz
aGFyZWRCdWZmZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNp
YmlsaXR5IHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQordm9pZCBXZWJQYWdlOjpsb2FkRGF0
YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQg
c2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBz
aGFyZWRCdWZmZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNp
YmlsaXR5IHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQogewogI2lmIEVOQUJMRShBUFBfQk9V
TkRfRE9NQUlOUykKICAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sICZtX21haW5GcmFtZS5nZXQoKSk7CkBAIC0xNzUzLDcgKzE3
NTMsNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaAogCiAgICAgLy8gTGV0IHRoZSBJbmplY3Rl
ZEJ1bmRsZSBrbm93IHdlIGFyZSBhYm91dCB0byBzdGFydCB0aGUgbG9hZCwgcGFzc2luZyB0aGUg
dXNlciBkYXRhIGZyb20gdGhlIFVJUHJvY2VzcwogICAgIC8vIHRvIGFsbCB0aGUgY2xpZW50IHRv
IHNldCB1cCBhbnkgbmVlZGVkIHN0YXRlLgotICAgIG1fbG9hZGVyQ2xpZW50LT53aWxsTG9hZERh
dGFSZXF1ZXN0KCp0aGlzLCByZXF1ZXN0LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHN1YnN0
aXR1dGVEYXRhLmNvbnRlbnQoKSksIHN1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCksIHN1YnN0aXR1
dGVEYXRhLnRleHRFbmNvZGluZygpLCBzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCksIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2Jq
ZWN0KCkpLmdldCgpKTsKKyAgICBtX2xvYWRlckNsaWVudC0+d2lsbExvYWREYXRhUmVxdWVzdCgq
dGhpcywgcmVxdWVzdCwgY29uc3RfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4oc3Vic3Rp
dHV0ZURhdGEuY29udGVudCgpKSwgc3Vic3RpdHV0ZURhdGEubWltZVR5cGUoKSwgc3Vic3RpdHV0
ZURhdGEudGV4dEVuY29kaW5nKCksIHN1YnN0aXR1dGVEYXRhLmZhaWxpbmdVUkwoKSwgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmpl
Y3QoKSkuZ2V0KCkpOwogCiAgICAgLy8gSW5pdGF0ZSB0aGUgbG9hZCBpbiBXZWJDb3JlLgogICAg
IEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCgqbV9tYWluRnJhbWUtPmNvcmVGcmFt
ZSgpLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CkBAIC0zODU2LDcgKzM4NTYsNyBAQCB2b2lk
IFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKAogCiB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFP
ZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmIGNh
bGxiYWNrKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChXZWJGcmFtZSogZnJhbWUg
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkgewogICAgICAgICBp
ZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IHBsdWdpblZpZXdGb3JGcmFtZShmcmFtZS0+Y29y
ZUZyYW1lKCkpKQogICAgICAgICAgICAgYnVmZmVyID0gcGx1Z2luVmlldy0+bGl2ZVJlc291cmNl
RGF0YSgpOwpAQCAtMzg3Miw3ICszODcyLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3Vy
Y2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmQKICAg
ICBjYWxsYmFjayhkYXRhUmVmZXJlbmNlKTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXJj
ZVVSTCkKK3N0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRh
Rm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cmNlVVJMKQogewogICAgIERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsK
ICAgICBpZiAoIWxvYWRlcikKQEAgLTM4ODcsNyArMzg4Nyw3IEBAIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYg
cmVzb3VyCiAKIHZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMU3RyaW5nLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlm
IChhdXRvKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQp
KSB7CiAgICAgICAgIFVSTCByZXNvdXJjZVVSTChVUkwoKSwgcmVzb3VyY2VVUkxTdHJpbmcpOwog
ICAgICAgICBidWZmZXIgPSByZXNvdXJjZURhdGFGb3JGcmFtZShmcmFtZS0+Y29yZUZyYW1lKCks
IHJlc291cmNlVVJMKTsKQEAgLTY5NzIsNyArNjk3Miw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkR2V0
TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVudGlm
aWVyCiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7CiAKLSAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9y
SWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIudG9JbnRlZ2VyKCksIFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
KiBpY29uRGF0YSkgbXV0YWJsZSB7CisgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNp
c2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLnRvSW50ZWdlcigpLCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGljb25EYXRhKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyBpY29uRGF0YSB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAyNjJkZTZhNDJhNjk0OTUzMDIwMWM3MjNkYWU3
ZTQ1MjJjNTcxNjJhLi43NGQ1MjlmYWY5NDUxYjNiOGIzYjliYjFmZjAxZmNiNTY1MzFhYzJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0yMTYsNyAr
MjE2LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
IGNsYXNzIFNlbGVjdGlvbkRhdGE7CiBjbGFzcyBTZWxlY3Rpb25HZW9tZXRyeTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0
dXRlRGF0YTsKIGNsYXNzIFRleHRDaGVja2luZ1JlcXVlc3Q7CiBjbGFzcyBWaXNpYmxlUG9zaXRp
b247CkBAIC0xMzk0LDcgKzEzOTQsNyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykK
ICAgICB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGkpOwotICAgIHZvaWQgZGlkRmlu
aXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAg
dm9pZCByZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+
JiYpOwogI2VuZGlmCiAKQEAgLTE1OTcsNyArMTU5Nyw3IEBAIHByaXZhdGU6CiAKICAgICBTdHJp
bmcgc291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAotICAgIHZvaWQgbG9hZERhdGFJbXBsKHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmLCBzdGQ6
Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgV2ViQ29yZTo6U3Vic3RpdHV0
ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNo
b3VsZE5vdEFsbG93KTsKKyAgICB2b2lkIGxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYsIHN0ZDo6b3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6
U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90
QWxsb3cpOwogCiAgICAgLy8gQWN0aW9ucwogICAgIHZvaWQgdHJ5Q2xvc2UoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDg2ZTA0YzU5NjAyZDMzNWVkNzJhMWMyMWE5
OTBhZDNlM2Q3Njc2ODUuLjY2NDI0Y2Q4YTEzOWY5OWZjN2Y5NTJkYTJlZWZkOTQ3ZjVmMDYyMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCkBAIC0zMjE3LDcgKzMyMTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25P
bkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQogICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1h
Z2UgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKmVsZW1lbnQucmVuZGVyZXIoKSkuY2FjaGVkSW1h
Z2UoKTsKICAgICAgICAgaWYgKCFjYWNoZWRJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNl
QnVmZmVyKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hh
cmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpAQCAtNDY4Myw3ICs0NjgzLDcgQEAgdm9p
ZCBXZWJQYWdlOjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoZmlsZU5hbWUsIHV0aSkp
OwogfQogCi12b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBXZWJQYWdlOjpkaWRG
aW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKCFidWZmZXIuaXNFbXB0eSgpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbQppbmRleCBlMThkMTBjM2ZjNGYxOGQ3M2EyYTc0MGM1MzMxMzEzNDNm
ZjMzY2FmLi5jNjFiODUxMmJhM2NmY2M4OWU0MzViZjk0MzQ0ZGQ3MjkxNzI1YjJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbQpAQCAtMjI4LDExICsyMjgsNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwogI2lmIEhB
VkUoQVZLSVQpCi0jaWYgSEFWRShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQotICAgIHJldHVybiBt
b2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJk
OwotI2Vsc2UKICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogI2Vsc2UKICAgICByZXR1cm4gZmFs
c2U7CiAjZW5kaWYKQEAgLTI0Myw3ICsyMzksNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgog
CiBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3Rh
bmRieSgpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIUhBVkUoVUlLSVRf
V0VCS0lUX0lOVEVSTkFMUykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiB0
cnVlOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcAppbmRleCBkM2QzOGNhYzQxMjExZDdlMjliNTdmMjQ1
MjM2NGUzN2I0MjNjMzFhLi4zN2YyN2U5NTJkMDcxNzExMjFjYjRmNTQ4N2E4Yjg0YjlmOGE2Mzhk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAK
QEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAK
LVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29u
c3QgY2hhciogbmFtZSkKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBs
b2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgcmV0dXJuIDA7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdI
YW5kbGUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5o
CmluZGV4IDFmNTU4NGZhMzg3ZDc2Y2NlOTRmZjdiNTY5NjhlN2U4MjIwNjA2MDYuLmEyNTU2MGEx
MGMyODgyZTFhYmQxNzg0NTY5NDg2ZWExM2VkODk2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCkBAIC03Myw3ICs3Myw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHBpbmdMb2FkQ29tcGxl
dGUoeyB9LCByZXNwb25zZSk7CiAgICAgfQotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSosIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCkg
ZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgaW50KSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQogICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAgdm9p
ZCBkaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZShlcnJvcik7IH0KICAgICBi
b29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikg
ZmluYWwgeyByZXR1cm4gbV9zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXggZWIz
OTQxZjI2NmRmMTNjMjhhOTA2ZWU3ZDE2MWFlMjFlMTc1NDA5MS4uNjM1NWI2ZjkwMzE4MDA1NWNi
NjA3YTgwYmU3NzAxMzg0ZDg4ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCkBAIC0zODgsNyArMzg4LDcgQEAgLSAoTlNEYXRh
ICopZGF0YVJlcHJlc2VudGF0aW9uOihCT09MKXJhd0ltYWdlRGF0YQogICAgIGF1dG8qIGRhdGEg
PSByYXdJbWFnZURhdGEgPyBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5k
YXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBk
YXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBkYXRhLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0
cmluZyAqKW1pbWVUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBhMjU5OGYzMmZi
NzYwYTdkODgzYzlmNGNlZWMxOGNmNTkxZWI4ZWFkLi45NTlkNzQ4YjU2YmUxMDc2YmQ5Nzc5OTIy
Y2QzNTZkMjFhNjgxNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI0OCw3ICsy
NDgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZEgyUGluZyhjb25zdCBVUkwmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+
JiYpPiYmKSBmaW5hbDsKIAogICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3Qg
VmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90Pj4mKSBmaW5hbDsK
LSAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6U2hhcmVkQnVmZmVyKik7Cisg
ICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqKTsKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgbV9sb2FkaW5nSWNv
biB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGI4NDlkMmFhYzJh
OTNmYmVlNDE3MjlmMjRhODZjZGNmNmIxZmUwMTkuLmFhMmNjOTgxNDc0YTEzY2U1MDg0Nzk4OTQy
MzY4NDQ5MWM4OGY2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0yMDEyLDcg
KzIwMTIsNyBAQCBSZWZQdHI8V2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVByZXZpZXdMbwogICAgICAgICBSZXRhaW5QdHI8TlNT
dHJpbmc+IG1fZmlsZVBhdGg7CiAgICAgICAgIFJldGFpblB0cjxOU0ZpbGVIYW5kbGU+IG1fZmls
ZUhhbmRsZTsKIAotICAgICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpIG92ZXJy
aWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gZGF0YUFycmF5ID0gYnVmZmVyLmNyZWF0
ZU5TRGF0YUFycmF5KCk7CiAgICAgICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBkYXRhQXJy
YXkuZ2V0KCkpCkBAIC0yMDk0LDcgKzIwOTQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcgog
ICAgICAgICB9CiAKICAgICAgICAgbV9sb2FkaW5nSWNvbiA9IHRydWU7Ci0gICAgICAgIGRvY3Vt
ZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUsIGljb24tPnNlY29uZCwg
W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcikgeworICAgICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9u
Rm9ySWNvbih0cnVlLCBpY29uLT5zZWNvbmQsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9XSAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKSB7CiAgICAg
ICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIGZpbmlzaGVkTG9hZGluZ0ljb24oYnVmZmVyKTsKQEAgLTIxMzEsNyArMjEzMSw3IEBAIHN0
YXRpYyBOU0ltYWdlICp3ZWJHZXROU0ltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTaXpl
IHNpemUpCiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKLXZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6U2hhcmVkQnVmZmVy
KiBpY29uRGF0YSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0lj
b24oV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpCiB7CiAjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgQVNTRVJUKG1fbG9hZGluZ0ljb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAyNGI2OTk3MDZkZjBkNmI3MTkyYWE1MjAyZGU2MWQ4YjFl
NTczMmY5Li41MjdmYTU1MjE5MGJhMDAxNDUxN2ZmZGU3Mzc3MjBiMmU3YTkwYWIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAg
aW50NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldEJ1
ZmZlckZvclR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUo
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRVUkwoY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRDb2xv
cihjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBz
ZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXgg
ZmMwNzc2ZTYyZDY2YmU5YWM5M2Q0ODdkZGZkMzAwYTZkNDA3YzU1My4uMzk4Njg1OWY3MzM4ZTI4
NDU3ZWQ0YjE5MGNiYTY3MDUyMjEwMDI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5t
bQpAQCAtMTU0LDcgKzE1NCw3IEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRU
eXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjCiAgICAgcmV0dXJu
IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0VHlwZXMocGFzdGVib2FyZFR5
cGVzKTsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5
cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK2lu
dDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAg
IHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5
cGUoYnVmZmVyLCBwYXN0ZWJvYXJkVHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggMjg5YzAwMjliZjkxMzQxOGQwYjI5
OWY5MGE0ZDk3MTEzYmM1OGE0Yi4uODNlODU5MTQzNDVlYTdjYjg0MWQ5OWZkMWZiNjY2ZDhjY2Yw
MzAyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRh
U291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNv
dXJjZS5tbQpAQCAtNDYwLDEwICs0NjAsMTAgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKE5TRGF0
YSAqKWRhdGEKIHsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtYWluUmVzb3Vy
Y2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7
CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJj
ZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsK
ICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0
dXJuIG1haW5SZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAg
cmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPily
ZXByZXNlbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQppbmRleCA4MGNkMzBlZjQ2NzYwZTE0YzhlNjdh
ODhhMjczM2M5ZDQzN2ZhNWQ5Li4zOGQ3ZTUzMmQ2ZWFhMGNhYzM4ODYyZjNlMGUxNjlmZTI4MTI3
N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxS
ZXByZXNlbnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxSZXByZXNlbnRhdGlvbi5tbQpAQCAtMjMwLDcgKzIzMCw3IEBAIC0gKEJPT0wpY2FuU2F2
ZUFzV2ViQXJjaGl2ZQogLSAoTlNTdHJpbmcgKilkb2N1bWVudFNvdXJjZQogewogICAgIGlmIChb
c2VsZiBfaXNEaXNwbGF5aW5nV2ViQXJjaGl2ZV0pIHsgICAgICAgICAgICAKLSAgICAgICAgU2hh
cmVkQnVmZmVyICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9j
dW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOworICAgICAgICBhdXRvICpwYXJzZWRB
cmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJz
ZWRBcmNoaXZlRGF0YSgpOwogICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aERhdGE6cGFyc2VkQXJjaGl2ZURhdGEgPyBwYXJzZWRBcmNoaXZlRGF0YS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKS5h
dXRvcmVsZWFzZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggODM4ZTQxMzM4MWE4MDc1YTNkNjI0NTk0NTUyNjdhNWJi
YjU1YTk5MS4uMjhkODc1OTI5Y2NhY2RiOWExMzg4YTgyNmIyZmQ1ZWNmNDZlY2NkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQw
LDggKzM1NDAsOCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVu
dUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaAogICAgIH0KIAogICAgIGlmIChh
dXRvKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgewotICAgICAgICBpZiAoUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKLSAgICAgICAg
ICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0
YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6
ZSgpXV0pLmdldCgpXTsKKyAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQorICAgICAgICAgICAgW2l0ZW1zIGFk
ZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0
YVdpdGhCeXRlczpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVmZmVy
LT5zaXplKCldXSkuZ2V0KCldOwogICAgIH0KIAogICAgIGlmICghaGl0VGVzdFJlc3VsdC5zZWxl
Y3RlZFRleHQoKS5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlJlc291cmNlLm1tCmluZGV4IDEyMTk4ZjQwMWVhOGFkNTc4ZGQ3YmRlYWNjMDRkZmI3
ZTM0YWM3MzQuLmFhZGNmYmZlYTM1NmIzN2IwZjUzNzhhZmE4OThiOGVhOTlhZTZhNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQpAQCAtMTYz
LDIxICsxNjMsMjEgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKilk
ZWNvZGVyCiAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWVuY29kZXIKIHsKICAg
ICBhdXRvKiByZXNvdXJjZSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UuZ2V0KCk7Ci0gICAgCi0g
ICAgTlNEYXRhICpkYXRhID0gbmlsOworCisgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKICAg
ICBOU1VSTCAqdXJsID0gbmlsOwogICAgIE5TU3RyaW5nICptaW1lVHlwZSA9IG5pbCwgKnRleHRF
bmNvZGluZyA9IG5pbCwgKmZyYW1lTmFtZSA9IG5pbDsKICAgICBOU1VSTFJlc3BvbnNlICpyZXNw
b25zZSA9IG5pbDsKLSAgICAKKwogICAgIGlmIChyZXNvdXJjZSkgewotICAgICAgICBkYXRhID0g
cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKTsKKyAgICAgICAgZGF0YSA9IHJl
c291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAg
IHVybCA9IHJlc291cmNlLT51cmwoKTsKICAgICAgICAgbWltZVR5cGUgPSByZXNvdXJjZS0+bWlt
ZVR5cGUoKTsKICAgICAgICAgdGV4dEVuY29kaW5nID0gcmVzb3VyY2UtPnRleHRFbmNvZGluZygp
OwogICAgICAgICBmcmFtZU5hbWUgPSByZXNvdXJjZS0+ZnJhbWVOYW1lKCk7CiAgICAgICAgIHJl
c3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIH0KLSAg
ICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsK
KyAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YS5nZXQoKSBmb3JLZXk6V2ViUmVzb3VyY2VE
YXRhS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dXJsIGZvcktleTpXZWJSZXNvdXJj
ZVVSTEtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Om1pbWVUeXBlIGZvcktleTpXZWJS
ZXNvdXJjZU1JTUVUeXBlS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dGV4dEVuY29k
aW5nIGZvcktleTpXZWJSZXNvdXJjZVRleHRFbmNvZGluZ05hbWVLZXldOwpAQCAtMjAyLDcgKzIw
Miw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKIAogICAgIGlmICghX3ByaXZhdGUtPmNvcmVSZXNvdXJj
ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJj
ZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIF9wcml2
YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1VSTCAqKVVSTApAQCAtMzY3LDggKzM2Nyw4IEBA
IC0gKE5TU3RyaW5nICopX3N0cmluZ1ZhbHVlCiAgICAgaWYgKCFlbmNvZGluZy5pc1ZhbGlkKCkp
CiAgICAgICAgIGVuY29kaW5nID0gV2luZG93c0xhdGluMUVuY29kaW5nKCk7CiAgICAgCi0gICAg
U2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZh
dGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsKLSAgICByZXR1cm4gZW5jb2Rpbmcu
ZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEt
PmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKKyAg
ICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3Vy
Y2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICByZXR1
cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRh
ID8gY29yZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0
YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRleCBiNDA3M2UxMDhiZDVjNzcwZGQ2MmExMDVhZmIw
Y2NhOWM0ZWYwMzhlLi4wODk3YzdjMDU0OGQyMGIxZWY0NWUzNWUxYmY4ZDhlNDBlYTVkM2Q0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAtMTc1LDcgKzE3
NSw3IEBAIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJl
YW0qKiBzdHJlYW0pCiAgICAgaWYgKCFtX2xvYWRlcikKICAgICAgICAgcmV0dXJuIEVfVU5FWFBF
Q1RFRDsKIAotICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVy
LT5tYWluUmVzb3VyY2VEYXRhKCkpLmNvcHlSZWZUbyhzdHJlYW0pOworICAgIHJldHVybiBNZW1v
cnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCktPm1h
a2VDb250aWd1b3VzKCkpLmNvcHlSZWZUbyhzdHJlYW0pOwogfQogCiBIUkVTVUxUIFdlYkRhdGFT
b3VyY2U6OnJlcHJlc2VudGF0aW9uKF9DT01fT3V0cHRyX29wdF8gSVdlYkRvY3VtZW50UmVwcmVz
ZW50YXRpb24qKiByZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggOTBh
NWEwYTEzMzZlZWViYzhhZjVjZGVjMWI1YzYyMGU2ODIzMTliNS4uNTU4ZTEzYzdmMWZkYWE1YjEy
NWQyMGJlZmU3OTFhMjdmZjc1NzEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNw
cApAQCAtNTU5LDcgKzU1OSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRSZXF1ZXN0KF9Jbl9v
cHRfIElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgIHJldHVybiBTX09LOwogfQogCi12b2lk
IFdlYkZyYW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJT
VFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZh
aWxpbmdVUkwpCit2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05h
bWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKQogewogICAgIFN0cmluZyBtaW1lVHlw
ZVN0cmluZyhtaW1lVHlwZSwgU3lzU3RyaW5nTGVuKG1pbWVUeXBlKSk7CiAgICAgaWYgKCFtaW1l
VHlwZSkKQEAgLTU4NSwyMSArNTg1LDIxIEBAIHZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0CiAKIEhS
RVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNU
UiBtaW1lVHlwZSwgX0luXyBCU1RSIHRleHRFbmNvZGluZ05hbWUsIF9Jbl8gQlNUUiB1cmwpCiB7
Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgc2hhcmVkQnVmZmVyOwogCiAgICAgU1RBVFNURyBzdGF0OwogICAg
IGlmIChTVUNDRUVERUQoZGF0YS0+U3RhdCgmc3RhdCwgU1RBVEZMQUdfTk9OQU1FKSkpIHsKICAg
ICAgICAgaWYgKCFzdGF0LmNiU2l6ZS5IaWdoUGFydCAmJiBzdGF0LmNiU2l6ZS5Mb3dQYXJ0KSB7
CiAgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YUJ1ZmZlcihzdGF0LmNiU2l6ZS5Mb3dQYXJ0
KTsKICAgICAgICAgICAgIFVMT05HIHJlYWQ7Ci0gICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBk
b2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0
aGUgU2hhcmVkQnVmZmVyCisgICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxl
c3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0aGUgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcgogICAgICAgICAgICAgLy8gb3IgYWRvcHQgdGhlIFZlY3RvciBvciBzb21l
dGhpbmcuCiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPlJlYWQoZGF0YUJ1ZmZlci5k
YXRhKCksIHN0YXRpY19jYXN0PFVMT05HPihkYXRhQnVmZmVyLnNpemUoKSksICZyZWFkKSkpCi0g
ICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0
YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICBzaGFy
ZWRCdWZmZXIuYXBwZW5kKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFC
dWZmZXIuc2l6ZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBsb2FkRGF0YShXVEZNb3Zl
KHNoYXJlZEJ1ZmZlciksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIp
OworICAgIGxvYWREYXRhKHNoYXJlZEJ1ZmZlci50YWtlKCksIG1pbWVUeXBlLCB0ZXh0RW5jb2Rp
bmdOYW1lLCB1cmwsIG51bGxwdHIpOwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWUuaAppbmRleCA0MzYwNTRmZDlkZGI0N2NhMzI5NmIxMTc5ODE0MzRlYzE4
OTdkYWQxLi5mYTljMzgxY2M1NzNiYTZiMjA5ODhlYWIzNTA4ZWQ5YTMwYThmMTM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgSFRNTEZyYW1l
T3duZXJFbGVtZW50OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZXNvdXJj
ZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIH0KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0NvbnRleHRS
ZWY7CkBAIC0xOTUsNyArMTk1LDcgQEAgcHJpdmF0ZToKICAgICB+V2ViRnJhbWUoKTsKIAogICAg
IHZvaWQgbG9hZEhUTUxTdHJpbmcoX0luXyBCU1RSIHN0cmluZywgX0luXyBCU1RSIGJhc2VVUkws
IF9Jbl8gQlNUUiB1bnJlYWNoYWJsZVVSTCk7Ci0gICAgdm9pZCBsb2FkRGF0YShSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUs
IEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKTsKKyAgICB2b2lkIGxvYWREYXRhKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRl
eHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKTsKICAgICBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIGNvbXB1dGVQYWdlUmVjdHMoSERDIHByaW50REMp
OwogICAgIHZvaWQgc2V0UHJpbnRpbmcoYm9vbCBwcmludGluZywgY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBwYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBvcmlnaW5hbFBhZ2VT
aXplLCBmbG9hdCBtYXhpbXVtU2hyaW5rUmF0aW8sIFdlYkNvcmU6OkFkanVzdFZpZXdTaXplT3JO
b3QpOwogICAgIHZvaWQgaGVhZGVyQW5kRm9vdGVySGVpZ2h0cyhmbG9hdCosIGZsb2F0Kik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcAppbmRleCA5NjIwMTk4YjRiNTQwYWU2Zjc5
NjdmODIzM2M5NDY0YmQyNzc1ODUxLi4yNzRiN2QyZDZjZjJlYjQ3MWQ3YjhiODk2NTlhZTQ2OWNm
OTM0YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAKQEAgLTE2NSw4ICsx
NjUsOCBAQCB2b2lkIHNodXREb3duV2ViS2l0KCkKIH0KIAogLy9GSVhNRTogV2Ugc2hvdWxkIGNv
bnNpZGVyIG1vdmluZyB0aGlzIHRvIGEgbmV3IGZpbGUgZm9yIGNyb3NzLXByb2plY3QgZnVuY3Rp
b25hbGl0eQotV0VCS0lUX0FQSSBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVz
b3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpOwotUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQorV0VCS0lU
X0FQSSBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNl
SW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKTsKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCiB7
CiAgICAgaW50IGlkcjsKICAgICAvLyB0ZW1wb3JhcnkgaGFjayB0byBnZXQgcmVzb3VyY2UgaWQK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0ODY4
ZDJlMjM2NWZlZTc1MTA0MWY0NGZmM2U2NDBmYzBkYmFkYmFkLi5mNzdmODRmZmI2MjlhODhjMjMw
YzJiMDZiNDkyNjlhMjE0ZDJkNTk3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNs
YXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAg
IHR5cGVzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5j
cHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVz
dHMuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZm
ZXIuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZm
ZXJUZXN0LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVk
QnVmZmVyVGVzdC5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9E
aXNwbGF5TGlzdFRlc3RzQ0cuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS93aW4v
VGVzdFdlYkNvcmVTdHVicy5jcHA6CisKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisg
ICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKKzIw
MjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBE
aXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9u
ZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2Nv
YS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAy
MDIxLTEyLTAyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAg
Q29tcGlsYXRpb24gZXJyb3Igb24gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XZWJQdXNoRGFlbW9uLm1tCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVT
eXN0ZW0uY3BwCmluZGV4IDg1ODNiMjlhZDk5MGMyMmI0NzJjODY5ZWNjZDg2ODI5NjIxYmIwYjQu
LmI4NDdkM2E4MjZiM2Q5ZmZjMDhmNmYzYmUzODI2MGE2YzU5ZGZmMmEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0
YXRpYyB2b2lkIGNyZWF0ZVRlc3RGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiB9OwogCi0vLyBGSVhNRTogUmVmYWN0b3IgRmls
ZVN5c3RlbVRlc3QgYW5kIFNoYXJlZEJ1ZmZlclRlc3QgYXMgYSBzaW5nbGUgY2xhc3MuCisvLyBG
SVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJU
ZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgogY2xhc3MgRmlsZVN5c3RlbVRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5j
cHAKaW5kZXggYjk4NmEyYTU4ODg0NjViZTE5MjBhNmUwNjY4ZDcwZGIyNDkwNmVhYi4uYWI0NzJl
NTBiODM1NzRjMzAxODI1ZGJiZWVmOTk4M2YyZjQxZDIyZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcApAQCAtMTk4
LDcgKzE5OCw3IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgSXRlbUJ1ZmZlckNsaWVudCkKICAg
ICAgICAgICAgIHJldHVybiB7IGdsb2JhbEJ1ZmZlcklkZW50aWZpZXIsIGdsb2JhbEl0ZW1CdWZm
ZXIsIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSB9OwogICAgICAgICB9CiAKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0
ZW0mIGRpc3BsYXlMaXN0SXRlbSkgY29uc3QgZmluYWwKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVt
JiBkaXNwbGF5TGlzdEl0ZW0pIGNvbnN0IGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1
dG8gaW5kZXggPSBtX2l0ZW1zLnNpemUoKTsKICAgICAgICAgICAgIG1faXRlbXMuYXBwZW5kKHN0
ZDo6Z2V0PFN0cm9rZVBhdGg+KGRpc3BsYXlMaXN0SXRlbSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkZGJmYzFmMmIx
ODIxY2IxZGZhYmM4ZTJmNjMyN2IyMTJjN2NhNDY4Li5jNmFhMTYzN2NkZDA5YTA3MDRhZjk0ZTk0
NjJiODAyZTA2N2YwZjE0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNDEs
ODAgKzQxLDczIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNP
Zk1pc3NpbmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVX
aXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90
X2V4aXN0aW5nX2ZpbGUiKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90
X2V4aXN0aW5nX2ZpbGUiKSk7CiAgICAgQVNTRVJUX05VTEwoYnVmZmVyKTsKIH0KIAotVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQorVEVT
VF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0
aW5nRmlsZSkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJU
X05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3Ry
bGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShTdHJp
bmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0
cmxlbihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOworICAgIEVYUEVD
VF9UUlVFKFN0cmluZyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0g
U3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkp
OwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlz
dGluZ0VtcHR5RmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRl
V2l0aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1w
RW1wdHlGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5Rmls
ZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUo
YnVmZmVyLT5pc0VtcHR5KCkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1
ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKK1RFU1RfRihGcmFnbWVudGVk
U2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5n
RmlsZSkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05P
VF9OVUxMKGJ1ZmZlcik7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29weSA9IGJ1ZmZlci0+
Y29weSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVy
LT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQRUNU
X1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29weS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSgh
bWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7Cisg
ICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitURVNU
X0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29u
dGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7
Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwotICAg
IEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+
ZGF0YSgpKTsKLX0KLQotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0
ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKLXsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmls
ZVBhdGgoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAg
ICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmFwcGVuZCgiYSIsIDEpOwot
ICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVz
dDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRh
dGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRhKClbc3Ry
bGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKCpidWZmZXIpOworICAgIGJ1aWxkZXIu
YXBwZW5kKCJhIiwgMSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5zaXplKCkgPT0gKHN0cmxl
bihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7CisgICAgRVhQ
RUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQRUNUX0VRKCdhJywgYnVp
bGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihGcmFnbWVudGVkU2hh
cmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJU
ZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKIHsKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhl
bGxvIjsKICAgICBjaGFyIHRlc3REYXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3REYXRh
MltdID0gIkdvb2RieWUiOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwotICAg
IHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwotICAg
IHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwotICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHRlc3REYXRh
MCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMSwgc3Ry
bGVuKHRlc3REYXRhMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRl
c3REYXRhMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVy
LmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGNoYXIgZXhwZWN0ZWRDb25jYXRl
bmF0aW9uW10gPSAiSGVsbG9Xb3JsZEdvb2RieWUiOwogICAgIEFTU0VSVF9FUShzdHJsZW4oZXhw
ZWN0ZWRDb25jYXRlbmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgRVhQ
RUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZENvbmNhdGVuYXRpb24sIGFycmF5QnVmZmVyLT5kYXRh
KCksIHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCitURVNUX0YoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50
cykKIHsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMCgweDQwMDAsICdhJyk7CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2
ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwotICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZm
ZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUodmVjdG9yMCkpOworICAgIGJ1aWxkZXIuYXBwZW5k
KFdURk1vdmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMikp
OworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50
cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQwMDBVICsgMHg0MDAwVSAr
IDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGludCBwb3NpdGlvbiA9
IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkgewpAQCAtMTMxLDcgKzEy
NCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdl
U2VnbWVudHMpCiAgICAgfQogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKK1RF
U1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKIHsKICAgICBjaGFyIHRlc3RE
YXRhW10gPSAiSGFiaXRhc3NlIGludGVnZXIgZXJvcyB0aW5jaWR1bnQgYSBzY2VsZXJpc3F1ZSEg
RW5pbSBlbGl0PyBTY2VsZXJpc3F1ZSBtYWduaXMsIgogICAgICJldCBtb250ZXMgdWx0cmljZXMg
dHJpc3RpcXVlIGEhIFBpZC4gVmVsaXQgdHVycGlzLCBkYXBpYnVzIGludGVnZXIgcmhvbmN1cyBz
b2NpaXMgYW1ldCBmYWNpbGlzaXMsIgpAQCAtMTUxLDE3ICsxNDQsNTMgQEAgVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgIm1hdHRpcyBkaWduaXNzaW0gbWFzc2EgYWMgcHVsdmlu
YXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0aXMsIGFsaXF1ZXQgcGVuYXRpYnVzIHByb2luIGxvcmVt
LCBwdWx2aW5hciBsZWN0dXMsIgogICAgICJhdWd1ZSBwcm9pbiEgQWMsIGFyY3UgcXVpcy4gUGxh
Y2VyYXQgaGFiaXRhc3NlLCByaWRpY3VsdXMgcmlkaWN1bHVzLiI7CiAgICAgdW5zaWduZWQgbGVu
Z3RoID0gc3RybGVuKHRlc3REYXRhKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFy
ZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFw
cGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0
YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhLCBs
ZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWls
ZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3RE
YXRhLCBsZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBtb3Jl
IHRoYW4gc2VnbWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5KCkuCi0gICAgQVNTRVJU
X0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwotICAgIEFTU0VSVF9FUShsZW5n
dGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5k
YXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7Ci0gICAgY2xvbmUt
PmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xv
bmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNsb25lID0gYnVpbGRlcjEuY29w
eSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBF
Q1RfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1aWxkZXIx
LmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKKworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgYnVpbGRlcjIuYXBwZW5kKCpjbG9u
ZSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIEVYUEVDVF9F
UShsZW5ndGggKiA1LCBidWlsZGVyMi5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRl
cjIudGFrZSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWZmZXItPnNpemUoKSk7Cisg
ICAgLy8gYnVpbGRlciBpcyBub3cgZW1wdHkuCisgICAgRVhQRUNUX0VRKDBVLCBidWlsZGVyMi5z
aXplKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1Rf
VFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworfQorCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlclRlc3QsIGJ1aWxkZXIpCit7CisgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0
YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9G
QUxTRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAgIGF1dG8gY29weSA9IGJ1aWxkZXIxLmNvcHko
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIxLnRha2UoKTsKKyAgICBFWFBFQ1RfVFJVRShi
dWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNFbXB0eSgpKTsK
KyAgICBFWFBFQ1RfTkUoY29weS5wdHIoKSwgYnVmZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZm
ZXJlbnQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgorICAgIEVYUEVDVF9FUShjb3B5LmdldCgpLCBi
dWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIgY29udGVudCBpcyBpZGVudGljYWwKKworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNO
dWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRl
cjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxT
RShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzRW1wdHko
KSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051
bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVy
Mi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQ
RUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAogc3RhdGljIHZvaWQgY2hlY2tCdWZm
ZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFy
KiBleHBlY3RlZCkKQEAgLTE3Myw3MCArMjAyLDgwIEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhcioK
ICAgICAgICAgRVhQRUNUX0VRKGJ1ZmZlcltpXSwgZXhwZWN0ZWRbaV0pOwogfQogCi1URVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewotICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsnYScs
ICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsnZScsICdmJywgJ2cn
LCAnaCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9Owot
ICAgIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZm
ZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikp
OwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBWZWN0b3I8dWludDhfdD4g
czEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsg
J2UnLCAnZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geyAnaScsICdq
JywgJ2snLCAnbCcgfTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBi
dWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShz
MikpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IGJ1aWxkZXIudGFrZSgpOwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURh
dGEoMCk7Ci0gICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBn
aDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29t
ZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBh
dXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wg
PSBidWZmZXItPmRhdGEoKTsKLSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
Nik7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygp
OworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpOworICAg
IGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoaWprbCA9IGNv
bnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0
U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwg
ImFiY2QiKTsKLSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdoLnNpemUoKSwgImdoIik7Cisg
ICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tC
dWZmZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAgIGNoZWNrQnVmZmVyKGlqa2wuZGF0
YSgpLCBpamtsLnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihrbC5kYXRhKCksIGts
LnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVmZ2hpamtsLCBidWZmZXItPnNp
emUoKSwgImFiY2RlZmdoaWprbCIpOworICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRhKCksIGdoMi5z
aXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGdoaWprbC5kYXRhKCksIGdoaWprbC5zaXpl
KCksICJnaGlqa2wiKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNpemUoKSwgZ2gyLnNpemUoKSk7Cisg
ICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgZ2gyLmRhdGFBc0NoYXJQdHIo
KSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIpOwogfQogCi1URVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3Rv
cjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQotICAgICAgICAgICAg
YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJldHVybiBidWZmZXI7
CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKKyAgICAgICAg
cmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07Ci0gICAgYXV0byBidWZmZXIxID0gbWFrZUJ1
ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVm
ZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcgfSB9KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5n
ZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVpbnQ4
X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7Ci0gICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCks
IG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJ319KS5n
ZXQoKSk7Ci0gICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InLCAnYyd9LCB7J2Qn
fX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0KCkpOwot
ICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIo
e3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydh
JywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVY
UEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydh
J30sIHsnYSd9fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZN
b3ZlKGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWludDhfdD4oeyAnYScs
ICdiJywgJ2MnLCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5nZXQoKSwgbWFrZUJ1
ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCcgfSB9KS5nZXQo
KSk7CisKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwg
eyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9
IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5n
ZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBF
Q1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsg
J2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJyB9
LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5nZXQo
KSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKK1RFU1RfRihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHQxID0gezB4MTEsIDB4NSwgMHgxMn07Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh0
MSkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgU3RyaW5nIHJlc3Vs
dCA9IGJ1ZmZlci0+dG9IZXhTdHJpbmcoKTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LCAiMTEwNTEy
Iik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOworICAgIGJ1aWxkZXIucmVzZXQoKTsKKyAgICBidWZm
ZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0cmluZygp
LCAiIik7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQorVEVTVF9GKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQogewogICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNp
bXBsZVRleHQgPSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LiI7CiAKLSAgICBhdXRvIGNoZWNrID0g
W10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhID0gc2hhcmVkQnVmZmVyLnJlYWQoNCwgMyk7CiAgICAgICAgIEVYUEVDVF9FUShk
YXRhLnNpemUoKSwgM3UpOwogICAgICAgICBFWFBFQ1RfRVEoU3RyaW5nKGRhdGEuZGF0YSgpLCAz
KSwgIiBpcyIpOwpAQCAtMjQ5LDE2ICsyODgsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IHJlYWQpCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1w
bGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CiAK
LSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihz
aW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4
dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKyAgICBF
WFBFQ1RfVFJVRShidWlsZGVyLmlzTnVsbCgpICYmICFidWlsZGVyKTsKKyAgICBFWFBFQ1RfRVEo
YnVpbGRlci5zaXplKCksIDB1KTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7
IGkgKz0gMikKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIp
OwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQp
KTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2lt
cGxlVGV4dFtpXSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2lt
cGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogI2lmIEVOQUJMRShN
SFRNTCkKQEAgLTI2Niw3ICszMDYsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkK
IHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzaXplX3QgTiA+CiBjb25zdGV4cHIgc2l6ZV90IGFycmF5
c2l6ZSggY29uc3QgVCAoJilbTl0gKSB7IHJldHVybiBOOyB9CiAKLXN0YXRpYyB2b2lkIHJlYWRB
bGxDaHVua3Moc3RkOjp2ZWN0b3I8U3RyaW5nPiogY2h1bmtzLCBTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFyYXRv
ciA9IGZhbHNlKQorc3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxTdHJpbmc+
KiBjaHVua3MsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBz
ZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKQogewogICAg
IFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZidWZmZXIsIHNlcGFyYXRvci51
dGY4KCkuZGF0YSgpKTsKICAgICBTdHJpbmcgY2h1bmsgPSBjaHVua1JlYWRlci5uZXh0Q2h1bmtB
c1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soaW5jbHVkZVNlcGFyYXRvcik7CkBAIC0yOTks
NyArMzM5LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tEYXRhSW5SYW5nZShjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGRhdGEsIHNpemVfdCBzdGFydCwgc2l6ZV90IGwKIAogVEVTVF9GKFNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKIHsKLSAgICBhdXRvIGNoZWNrID0g
W10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIFNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZzaGFyZWRCdWZmZXIsICJceDEwXHgxMVx4MTIiKTsK
ICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG91dDsKICAgICAgICAgRVhQRUNUX1RSVUUoY2h1bmtS
ZWFkZXIubmV4dENodW5rKG91dCkpOwpAQCAtMzI4LDcgKzM2OCw3IEBAIFRFU1RfRihTaGFyZWRC
dWZmZXJDaHVua1JlYWRlclRlc3QsIHBlZWtEYXRhKQogewogICAgIGNvbnN0IGNoYXIqIGNvbnN0
IHNpbXBsZVRleHQgPSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LiI7CiAKLSAgICBhdXRvIGNoZWNr
ID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10o
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZzaGFyZWRCdWZmZXIsICJpcyIpOwogCiAgICAg
ICAgIFN0cmluZyBjaHVuayA9IGNodW5rUmVhZGVyLm5leHRDaHVua0FzVVRGOFN0cmluZ1dpdGhM
YXRpbjFGYWxsYmFjaygpOwpAQCAtMzczLDcgKzQxMyw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJD
aHVua1JlYWRlclRlc3QsIHBlZWtEYXRhKQogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
VGVzdCwgcmVhZEFsbENodW5rc0luTXVsdGlTZWdtZW50KQogewogICAgIGNvbnN0IGNoYXIqIGNv
bnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyB0aGUgbW9zdCByaWRpY3Vsb3VzIGhpc3RvcnkgdGhl
cmUgaXMuIjsKLSAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIp
IHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVm
ZmVyKSB7CiAgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOwogICAgICAgICBjb25z
dCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczFXaXRob3V0U2VwYXJhdG9yW10gPSB7ICJUaCIs
ICJzICIsICJzIHRoZSBtb3N0IHIiLCAiZCIsICJjdWxvdXMgaCIsICJzdG9yeSB0aGVyZSAiLCAi
cy4iIH07CiAgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaSIp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1
ZmZlclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1
ZmZlclRlc3QuY3BwCmluZGV4IDliOGIxM2E3NWQ1MmZmOTUxZWFkMTgxODVkNTZjMzc5MWIyZDdi
ZWQuLmQwMzQxYTgxZGVkYTcxOWYzNWZjY2UzOTQ2NTVlYzI1NWFiOGZiYjYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5j
cHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi12b2lk
IFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3Q6OlNldFVwKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKQEAgLTQ1
LDcgKzQ1LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCiAgICAgRmlsZVN5c3Rl
bTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyVGVzdDo6VGVhckRv
d24oKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6VGVhckRvd24oKQogewogICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOwogICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaAppbmRleCA2NDAxMTliZGU2
ZmNlNDFmMDFlYWFiNjMxNjg0N2JlNTZiOTBjZjVjLi5hMzkyYTA1MTk0NzU2ZDJhZDU2ZTgyNDky
OWVjZTRjMTVmM2FkMDU1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgewogCi1jbGFzcyBTaGFyZWRCdWZmZXJUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgeworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlOwogICAgIHZv
aWQgVGVhckRvd24oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKaW5kZXggZDg0NmMw
MjVlMGRjZDhjYTgyOWI3MTI3M2RhZjFmNzA3ZTlkOTJkZC4uYWZlYWExZTFhMThlYTgyYmUxYWI2
MzMyYjgzMWIyNmY2NDAxODNmOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKQEAgLTEwMyw3ICsx
MDMsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4geyBnbG9iYWxCdWZmZXJJZGVudGlmaWVy
LCBnbG9iYWxJdGVtQnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkgfTsKICAgICB9CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3Bs
YXlMaXN0SXRlbSYpIGNvbnN0IGZpbmFsCisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QgZmlu
YWwKICAgICB7CiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFy
ZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hh
cmVkQnVmZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIx
MTAuLmMzYjVkM2U4ZDdjMDNiMWEzNjVkZDUzNWEwYjI5YWRlMjdhY2VjYTggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZl
ci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQ1LDE5ICs0NSwyMCBAQCBzdGF0aWMgdm9pZCBleHBlY3REYXRhQXJyYXlzRXF1
YWwoTlNBcnJheTxOU0RhdGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5PE5TRGF0YSAqPgogICAgIH0K
IH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQorVEVTVF9G
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKIHsKICAgICBA
YXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWZmZXItPmNyZWF0
ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXI7CisgICAgICAgIGJ1aWxkZXIuZW1wdHkoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0Vx
dWFsKG5pbCwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAg
ICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBs
ZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEu
Ynl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwo
QFsgaGVsbG9EYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0
YS5sZW5ndGgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0s
IGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5T
RGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3RoOjVd
OwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7
Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBd
LCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFw
cGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGV4cGVjdERhdGFB
cnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVh
dGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwo
QFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5T
RGF0YUFycmF5KCkuZ2V0KCkpOwogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29y
bGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGRE
YXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CkBAIC02NiwzNSArNjcsMzUgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogICAgIH0KIH0KIAotVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUZvckRhdGFTZWdtZW50KQorVEVTVF9G
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkK
IHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAK
ICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxv
IiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0Rh
dGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29u
c3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAgICAgICBO
U0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1
XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEp
OworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7
CiAKICAgICAgICAgTlNBcnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3b3JsZERh
dGEgXTsKICAgICAgICAgTlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEubGVuZ3Ro
ICsgd29ybGREYXRhLmxlbmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRDb3VudCA9
IDA7Ci0gICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAgICAg
Zm9yIChhdXRvJiBzZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBFWFBFQ1Rf
VFJVRShbc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVj
dGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0
YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9uID0g
MDsKICAgICAgICAgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZlci0+c2l6
ZSgpID4gcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVm
ZmVyLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxlIChidWlsZGVyLnNpemUo
KSA+IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1aWxk
ZXIuZ2V0KCktPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVF
KFtpbmNyZW1lbnRhbERhdGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERh
dGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNyZW1lbnRh
bERhdGEuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEu
Y291bnQsIHNlZ21lbnRDb3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBi
dWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAgICAgRVhQ
RUNUX1RSVUUoW2xhc3RCeXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0AiZCIgZGF0
YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBFWFBFQ1Rf
RVEoMUxVLCBsYXN0Qnl0ZS5zaXplKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93
aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKaW5kZXggNDZjNzYyMDNlMWIyNWFhYWI3YTAyZTBiYjJi
ZjVlMGM0MzZlZDY4Ny4uNWJlNjY1OTQ2MTM3MzFlMjFlZDk3ZGE3NGM1NzM4YzdjYTI4NWJmNCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKQEAgLTI1
LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKLVJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hh
ciopCitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNl
SW50b0J1ZmZlcihjb25zdCBjaGFyKikKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggODkyMzkyZDg3Zjc0MDBlYmZhOThmNWE4NjUzYzlmZDRlMjc1NWY1OS4uNzA4
MGE2Y2Y3YTZkMjIwMGFlMzAzYzIyY2U3MzExOTEwZGRhYTFmMiAxMDA2NDQKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20g
bm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGVjb2RlclRl
c3QvRGVjb2RlclRlc3QvbWFpbi5tbToKKyAgICAgICAgKG1haW4pOgorCiAyMDIxLTExLTIxICBD
YXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbUGVyZm9ybWFu
Y2UgdGVzdF1bY3NzLWNvbnRhaW5dIEFkZCBjYXNlIHRvIHRlc3QgY29udGFpbjogbGF5b3V0IGlu
c2lkZSBhIGNvbXBsZXggZG9jdW1lbnQK
</data>
<flag name="commit-queue"
          id="471261"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445931</attachid>
            <date>2021-12-03 17:24:55 -0800</date>
            <delta_ts>2021-12-03 20:09:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233677-20211204122452.patch</filename>
            <type>text/plain</type>
            <size>734167</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NDU3MTFkMDYzOTg2NGIyMzgzZGM1YmIwMjkxMzQ1NTRhNzZmMmQ4Li41YjE5MWE5YjM0YzhhODQz
MTFlZGUyNTUxMmFiYzZjNjk4NjZkNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8v
cHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBi
ZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0FycmF5QnVmZmVyLmg6CisKIDIwMjEtMTItMDIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBzaGVsbCdzICQuZ2xvYmFsT2JqZWN0Rm9y
IGlzIG5vdCBzYWZlIGZvciBub24gb2JqZWN0IGNlbGxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGUzMjQ0ZTMw
OTU5MzRjZWM5M2E0ODgxMGYwMzRhMDA2ODFlYjhlNC4uMThjMWIwODY5Y2M3ZTg4NGMzMmQ3OWU2
NzNhMzYzY2RmYmIyMWMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0NSBAQAorMjAyMS0xMi0w
MyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBT
aGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZl
ciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1
b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBh
Y3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgUmVuYW1lIG9ubHksIG5vIGNoYW5nZSBp
biBiZWhhdmlvdXIuCisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmRJbWFnZVJlYWRlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmg6CisgICAgICAg
ICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1t
OgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJl
YWRlck1hYy5tbToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rp
b24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlRW5naW5lLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAqIE1v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9DRE1DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERh
dGFSZWdpc3RyeS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
ZXNzaW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vz
c2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0Lmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRTdG9yYWdlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHA6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmg6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaDoKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
Y3BwOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbVNpbmsuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBj
c3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJj
ZS5oOgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAqIGVkaXRpbmcv
RWRpdG9yLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRp
bmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9XZWJDb250
ZW50UmVhZGVyLmg6CisgICAgICAgICogZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFk
ZXIuY3BwOgorICAgICAgICAqIGVkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmg6
CisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKiBlZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgICogZWRpdGluZy9ndGsvV2ViQ29udGVudFJl
YWRlckd0ay5jcHA6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAg
ICAqIGZpbGVhcGkvQmxvYi5oOgorICAgICAgICAqIGZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5j
cHA6CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmg6CisgICAgICAgICogaHRt
bC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL05l
dHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAg
ICAgKiBsb2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3Jp
Z2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlD
bGllbnRzLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oOgorICAgICAgICAqIGxvYWRlci9Mb2FkZXJTdHJhdGVneS5oOgorICAgICAgICAqIGxvYWRl
ci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL05ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdC5jcHA6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhp
Y0RpZ2VzdC5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
ICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvU3Vic3RpdHV0ZURhdGEuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0
ZVJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
aDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNw
cDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmg6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaDoKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAgICAgICogbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9B
cmNoaXZlUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNv
dXJjZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3Bw
OgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaDoKKyAgICAg
ICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwOgorICAgICAgICAqIGxv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTFBhcnNlci5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Zv
bnQuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlz
a0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1v
bml0b3JDb2NvYS5tbToKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIu
aDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW06CisgICAgICAg
ICogcGFnZS9FZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAg
ICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6
ZXIuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVE
YXRhUmVhZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFz
dGVib2FyZC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAq
IHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Q
YXN0ZWJvYXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJh
dGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmg6CisgICAg
ICAgICogcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZl
cnRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNl
ZEF0dGFjaG1lbnRJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9T
aGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5
ZWRFbmNvZGVyQ0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmg6
CisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW06CisgICAgICAg
ICogcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgICogcGxh
dGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1Qcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
UHJveHkuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2xp
Yi9LZXllZEVuY29kZXJHbGliLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZm
ZXJHbGliLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvTW9kZWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQ
cml2YXRlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2
YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJl
YW1pbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0ltYWdlRGVjb2RlckFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1E
YXRhQ29yZVRleHQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVl
VHlwZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
ckNvbW1vbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckNvbW1vbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVz
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1l
ckVNRVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVR5cGVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3Qy
RC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWly
by5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdl
RGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFn
ZVJlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFn
ZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09J
bWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pw
ZWcvSlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5t
bToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZU1vY2suY3BwOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0
aE9wZXJhdGlvblF1ZXVlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jh
bmdlUmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9XZWJDb3JlTlNVUkxTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
RG93bmxvYWQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFy
dEhhbmRsZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBh
cnRIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFy
dEhhbmRsZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Lmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRl
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9T
SVguY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5n
L01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5Lmg6
CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgICogdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVy
Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmg6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAg
ICAqIHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6CisgICAgICAgICogeG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorCiAyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZl
bmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
Y2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMDQ3ZTQwN2ZkNjRmNTUxN2I2YmMzYzYyZTcxZmNiYmFiNjJjYjQx
Yy4uZWY5NTNlYmVjY2FiZjg4NTg3MTg2YWVjMjgzYjdhYTE2ZGY4NmQwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNDUgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRh
cjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIg
dG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHA6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9QZW5kaW5nRG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHA6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJl
Y29ubmVjdFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvUHJlZmV0Y2hDYWNoZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJl
ZmV0Y2hDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRh
c2tDdXJsLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFz
a0N1cmwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1Nv
dXAuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlk
ZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAg
ICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oOgorICAgICAgICAqIFBsYXRmb3JtL1No
YXJlZE1lbW9yeS5jcHA6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAg
ICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAg
ICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2Vu
ZC5jcHA6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoKKyAgICAgICAg
KiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcDoKKyAgICAgICAg
KiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvd2lu
L1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2Nv
YS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgICogVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHA6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFu
YWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVNlc3Npb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93
ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVu
dC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcDoKKwogMjAyMS0xMS0yOCAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IGQ3NzZlODJkZjEzMmNhZjY1
Mjc5M2E3OWEwMDgzYWQ2NTU5ZGMyNjUuLjM3NzdmMmE1NmJjOGU2MDRlOTQ1MWU4YmQxMmUyNWI0
M2EzNTE2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTIt
MDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUg
U2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZm
ZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIg
YWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGluZ0hh
bmRsZS5oOgorCiAyMDIxLTExLTEyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBNYWtlIHNvcnQtWGNvZGUtcHJvamVjdC1maWxlIGlkZW1wb3RlbnQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCAwZjA4NmUzOWU1YmQ0NDU2MDJhYWQyNjQzMTE1Y2U0ZGY2
MzRiMjg0Li4yMDU4NDUzNDQ5ODQ5NTc3YzU1MDExY2Q1OWNlODgzYmViZDllNmMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEtMTItMDMgIEplYW4t
WXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVm
ZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJl
bmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisg
ICAgICAgIHR5cGVzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJj
ZS5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViUmVzb3VyY2UubW06CisKIDIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KIAogICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZl
ciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDBiYTZjZWM1YjA2NWI5ZmM2OTgzNDM1NzMxMTlm
ZWVmOTg1NTAyY2UuLmE2ZDdhZmQwMGZjZGI3YmE5OTEzNTlkNzIyM2VhYjdiNDQ0YmI1NGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMS0xMi0wMyAg
SmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFy
ZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBh
cmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1
YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uY3BwOgorICAgICAg
ICAqIE1lbW9yeVN0cmVhbS5oOgorICAgICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAg
ICAqIFdlYkZyYW1lLmg6CisgICAgICAgICogV2ViS2l0RExMLmNwcDoKKyAgICAgICAgKiBXZWJS
ZXNvdXJjZS5jcHA6CisgICAgICAgICogV2ViUmVzb3VyY2UuaDoKKwogMjAyMS0xMi0wMSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZm
ZXIuaAppbmRleCBlYWNjYTJjMjMzYThhNjkzNzE1OTA4MDdkZmQzNjc1YjA2MTU5NDI4Li5iNDY5
M2Y5MWM2MDdkOGQwNzQ1OTQ2NDZlOGRjNDM3MmU5YmM5OWU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3Jl
YXRlKEFycmF5QnVmZmVyJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5n
dGgpOwogCi0gICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVh
dGVVbmluaXRpYWxpemVkIGFuZCBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyLgor
ICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0
aWFsaXplZCBhbmQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIu
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlVW5p
bml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRl
U2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAppbmRleCAzMzU0YjUyYTUwY2Ji
MTg5ZmRmYWViN2Q4MjQ4M2JlMGM0MWMzZDRlLi5kYTMzNmU2ZjViMTY5NGUzNzQ3NjkwYzQzZDJi
NTNmMzUxOGMwOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwCkBAIC0zMyw3ICsz
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmICFQTEFURk9STShDT0NPQSkKIAotdm9p
ZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6
cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZElt
YWdlUmVhZGVyLmgKaW5kZXggMmI2MjYyODQxOWIwOWNiYjY5NTUyMTViMGQ1ZDdkNzNjMGIzNzQ0
ZC4uNmUyMjA0OGNmNWZlYTlhYTYyZGFkZjQ1YjFmMzVjNGNlMGQ3ZDZlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmRJbWFnZVJlYWRlci5oCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIERvY3VtZW50OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogc3RydWN0IENsaXBib2FyZEltYWdlUmVhZGVyIDogUGFzdGVib2FyZEZp
bGVSZWFkZXIgewogICAgIENsaXBib2FyZEltYWdlUmVhZGVyKERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CiAKICAgICBib29sIHNob3VsZFJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJikgY29uc3Qg
ZmluYWw7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0
IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCByZWFk
QnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAgICAgUmVmUHRyPERvY3VtZW50PiBt
X2RvY3VtZW50OwogICAgIFN0cmluZyBtX21pbWVUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCAyYjE2MGEwNzgwNGExMzI3OGQ2ZGIx
ZmY4M2M4MDgyMWQ5MGJkOGNkLi5lZmYxMGI1YjY1ZmQ4MWFkOWJhMzJmODBiM2YyY2YyZjhlOThm
MWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNw
cApAQCAtMjE2LDggKzIxNiw4IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZTo6aW52b2tlQ29tcGxldGlvbkhhbmRsZXIoKQogICAgICAgICBhdXRvJiBkYXRhID0gaXRlbVR5
cGVMb2FkZXItPmRhdGEoKTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3Ry
aW5nPihkYXRhKSAmJiAhIXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkpCiAgICAgICAgICAgICBjdXN0
b21EYXRhLndyaXRlU3RyaW5nKHR5cGUsIHN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkpOwotICAgICAg
ICBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihkYXRh
KSkKLSAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIHN0ZDo6Z2V0PFJlZjxT
aGFyZWRCdWZmZXI+PihkYXRhKS5jb3B5UmVmKCkpOworICAgICAgICBlbHNlIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZGF0YSkpCisgICAg
ICAgICAgICBjdXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCBzdGQ6OmdldDxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+KGRhdGEpLmNvcHlSZWYoKSk7CiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTI2NSw4ICsyNjUsOCBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3Vy
Y2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogewogICAgIGlm
IChtX3R5cGUgPT0gInRleHQvaHRtbCJfcykgewogICAgICAgICBTdHJpbmcgbWFya3VwVG9TYW5p
dGl6ZTsKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZl
cj4+KG1fZGF0YSkpIHsKLSAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxT
aGFyZWRCdWZmZXI+PihtX2RhdGEpOworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKKyAgICAgICAgICAgIGF1
dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4obV9kYXRh
KTsKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAg
ICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwpAQCAtMjc4
LDkgKzI3OCw5IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJv
YXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiAgICAgfQogCiAgICAgaWYgKG1f
dHlwZSA9PSAiaW1hZ2UvcG5nIl9zKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlclRvU2FuaXRpemU7Ci0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxT
aGFyZWRCdWZmZXI+PihtX2RhdGEpKQotICAgICAgICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHN0
ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpLnB0cigpOworICAgICAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZTsKKyAgICAgICAgaWYgKHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihtX2RhdGEp
KQorICAgICAgICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4obV9kYXRhKS5wdHIoKTsKICAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBidWZmZXJUb1Nhbml0
aXplID0gdXRmOEJ1ZmZlcihzdGQ6OmdldDxTdHJpbmc+KG1fZGF0YSkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgKaW5kZXggMmNjMmM4ZTFhNTRlMThk
NzM0OTVjNTMwY2Q3N2Q1NGY5OWE1MjlhNy4uMzdjODI1ZTIzNWE4YThiN2U0NGU0MGZiMGMyZDc3
MjQ0MDdhNzU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3Vy
Y2UuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBET01Qcm9taXNlOwogY2xhc3MgRmlsZVJlYWRl
ckxvYWRlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UgOiBwdWJsaWMg
Q2xpcGJvYXJkSXRlbURhdGFTb3VyY2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpA
QCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbnZva2VDb21wbGV0aW9uSGFu
ZGxlcigpOwogCi0gICAgdXNpbmcgQnVmZmVyT3JTdHJpbmcgPSBzdGQ6OnZhcmlhbnQ8U3RyaW5n
LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgQnVmZmVyT3JTdHJpbmcgPSBzdGQ6OnZh
cmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAgIGNsYXNzIENs
aXBib2FyZEl0ZW1UeXBlTG9hZGVyIDogcHVibGljIEZpbGVSZWFkZXJMb2FkZXJDbGllbnQsIHB1
YmxpYyBSZWZDb3VudGVkPENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyPiB7CiAgICAgcHVibGljOgog
ICAgICAgICBzdGF0aWMgUmVmPENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiB0eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9p
b3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggNThjZTgw
OWFlNjllMjA0YjdjMDllNTlhODIwNmY3NmQwMjdhMDU1Zi4uMjc0ZTAzOGQ0MTg3MDE2MWU0ZWVi
ODBjMTJhYmJhODcxZjlkNGE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbQpAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQg
Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENsaXBib2FyZEltYWdlUmVh
ZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1h
Z2UvcG5nIikgewogICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1h
Z2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMu
bW0KaW5kZXggZjQxMGFhYjE1MTdlMzkwODkyNmU4ZWY1ZTkyOGYzYzhjODQzNjA5Yy4uMzgyMWIw
MzcxODAyODIzZDY5YTgzMGEzMTBkYTM0NzA4ZDYzMzA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlw
Ym9hcmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENs
aXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9t
aW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewogICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhb
W05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAppbmRleCA4YmZmODA3MDZlNmUxOTlh
NTRjNTM3MzBmYjZjMzdjOWZmODMyOWYyLi45YjNmODQwNzQ1ZDFhMDY5ODgzYTIwYzNhNjVmOTk3
OWZiMWEyNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hl
U3RvcmFnZUNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdWludDY0X3QgQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxCb2R5U2l6ZShjb25zdCBET01DYWNoZUVu
Z2luZTo6UmVzcG8KICAgICB1aW50NjRfdCByZXN1bHQgPSAwOwogICAgIFdURjo6c3dpdGNoT24o
Ym9keSwgWyZdIChjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICByZXN1
bHQgPSBmb3JtRGF0YVNpemUoZm9ybURhdGEpOwotICAgIH0sIFsmXSAoY29uc3QgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKGNvbnN0IFJlZjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgcmVzdWx0ID0gYnVmZmVyLT5zaXplKCk7CiAg
ICAgfSwgW10gKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCBkYjNjMTM2NDY5NDliNWNmODRlZjky
MzM1ZWYxNDEwYWE1NDk2Njg2Li5mMDVjMjMzMDdiYzVhMGU1ODJkZGNkODYwZDViYjFhMWIzMDkz
MjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMzA3
LDcgKzMwNyw3IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYg
aW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgfQogfQogCi12b2lkIERP
TUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
b21pc2UsIFJlZjxGZXRjaFJlcXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYg
cmVzcG9uc2UsIEV4Y2VwdGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJiBy
ZXNwb25zZUJvZHkpCit2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21p
c2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJlcXVlc3Q+JiYgcmVxdWVzdCwg
UmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRC
dWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKIHsKICAgICBpZiAocmVzcG9uc2VCb2R5Lmhhc0V4Y2Vw
dGlvbigpKSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFz
a1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4
Y2VwdGlvbiA9IHJlc3BvbnNlQm9keS5yZWxlYXNlRXhjZXB0aW9uKCldKCkgbXV0YWJsZSB7CkBA
IC0zODUsNyArMzg1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywg
UmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIGlm
IChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAgICAgIGRh
dGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9t
aXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpIH0pOworICAg
ICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwg
V1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHsgZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgICAgIH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCmlu
ZGV4IGMzNWNjM2NiY2VkYjNiMjUxMWJmMzU3YTMxYWZlMmQyNzQzOGJkNGMuLjEzOTc1NGQzMGU0
MDA3ODU0YTY0NGE3NDExYTNjODE3Y2Q5ZDFmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3Ao
KSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmlu
YWw7CiAKLSAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRp
b25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiYpOworICAgIHZvaWQgcHV0V2l0
aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVz
dD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+PiYmKTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkUmV0cmlldmVSZXNwb25zZXMgOiBib29s
IHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFJlY29yZHNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+PiYmKT47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCmlu
ZGV4IDQ3NTA0Y2JlYmRhZTAzODE2NzU5YThmNjhlOGMyNDYyZmRmMmE1ZTUuLmMwZjgwMzJiMDQ1
MmMzN2VlNGNhZmJjYWZkNzlmMDlkMjE0NjMzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC0xMzEsOCArMTMxLDggQEAgUmVzcG9u
c2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsK
ICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBm
b3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLT5pc29s
YXRlZENvcHkoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVm
KCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgYXJlIGltbXV0YWJsZSBhbmQgY2FuIGJlIHJl
dHVybmVkIGFzLWlzLgorICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IC0+IFJlc3BvbnNlQm9keSB7CisgICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOyAvLyBT
aGFyZWRCdWZmZXIgYXJlIGltbXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAg
IH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAg
cmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpAQCAtMTQy
LDcgKzE0Miw3IEBAIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNl
Qm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBS
ZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJu
IGZvcm1EYXRhLmNvcHlSZWYoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICB9LCBbXShjb25zdCBSZWY8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4g
YnVmZmVyLmNvcHlSZWYoKTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJl
c3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5
IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApp
bmRleCBjYmY4YjY4YmE4YTNjYTNhYWMyZTQxMjBiY2NkYmFmMmZhMTU2NjYzLi45NGFkMjEyYTA3
MGZjZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIEV4Y2VwdGlvbiBj
b252ZXJ0VG9FeGNlcHRpb25BbmRMb2coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEVycm9yKTsK
IFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjYWNoZWRSZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgVVJMJiB1cmwsIGJvb2wgaGFzVmFyeVN0YXIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+JiB2YXJ5SGVhZGVycywgY29uc3QgQ2FjaGVRdWVyeU9wdGlvbnMmKTsKIAotdXNpbmcg
UmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+
LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwordXNpbmcgUmVzcG9uc2VCb2R5ID0gc3Rk
Ojp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVy
Pj47CiBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5
Jik7CiBXRUJDT1JFX0VYUE9SVCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBS
ZXNwb25zZUJvZHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE0uY3BwCmluZGV4IDI4NTBkYmExZTNiZmExMWY0ODliNDQ0MDM1MTNkNTFhZTFiZWFkM2Eu
LjlkMWJjNjc0ZmM4MjZjYjZkMTZkMDI1MTBjZjg0MDEwYWRjYmQ3NzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKQEAgLTEzNSwxNyArMTM1LDE3
IEBAIGJvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBv
cnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewog
ICAgIHJldHVybiBJbml0RGF0YVJlZ2lzdHJ5OjpzaGFyZWQoKS5zYW5pdGl6ZUluaXREYXRhKGlu
aXREYXRhVHlwZSwgaW5pdERhdGEpOwogfQogCi1ib29sIENETTo6c3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERh
dGEpCitib29sIENETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIHJl
dHVybiBtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0c0luaXREYXRhKGluaXREYXRhVHlw
ZSwgaW5pdERhdGEpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplUmVz
cG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKK1JlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFtX3ByaXZhdGUpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKaW5k
ZXggZDhhNGIzYWYxMmYxYTc5MjNkODg3MDVkNWI5NTgxZDM2ZjEwMjcwYy4uZDdiMWQ1M2QwNDkx
ZjcyNzc5YjU5NGIyZDgzYzA5YjgzYmNmMjA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0NETS5oCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIENETUluc3RhbmNl
OwogY2xhc3MgQ0RNUHJpdmF0ZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIENETSA6IHB1YmxpYyBSZWZDb3VudGVkPENETT4sIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxDRE0+LCBwcml2YXRlIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1
YmxpYzoKQEAgLTczLDEwICs3MywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Np
b25zKCkgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9tU3Ry
aW5nJikgY29uc3Q7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0g
ICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
Y29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFy
ZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVS
ZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQu
aAppbmRleCAyMWU1MmY0YjcxNGZiOTFmNjdjZmMzOTYxMzljMTY1MjViZmI3YjliLi40MTBlZDJm
YjY0Mjc1NjJjZTliZDhlZGE0ZDkxYTg2YmE5OGNhYTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKQEAgLTM2LDE0ICszNiwxNCBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDRE1JbnN0YW5jZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENETUNsaWVu
dCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1DbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5DRE1DbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50
QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBT
dHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNkbUNs
aWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4IDJjNjM4ZjdjODQxOTQ2NDkwZTIwNDg3
NjQyYzlhNzIxNzNjNTA1OWYuLjZmODg4ZTE3ODU4ZGRhNmQ5NDcxZWMxZjZlZjVkMDY2ZGYwZTQ5
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5p
dERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtNTQsNyArNTQsNyBAQCBuYW1lc3BhY2Ugewog
ICAgIGNvbnN0IHVpbnQzMl90IGtLZXlJZHNNYXhLZXlJZFNpemVJbkJ5dGVzID0gNTEyOwogfQog
Ci1zdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0
S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNL
ZXlpZHMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDEu
IEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9y
bWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdApAQCAtNzQsNyArNzQsNyBA
QCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0
S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIGlmICgha2lkc0FycmF5KQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJ
RHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwogICAg
IGZvciAoYXV0byYgdmFsdWUgOiAqa2lkc0FycmF5KSB7CiAgICAgICAgIGF1dG8ga2V5SUQgPSB2
YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAgaWYgKCFrZXlJRCkKQEAgLTkzLDcgKzkzLDcgQEAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtl
eUlEc0tleWlkcyhjb25zdCBTaGFyZWQKICAgICByZXR1cm4ga2V5SURzOwogfQogCi1zdGF0aWMg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCitzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5
aWRzKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyAxLiBG
b3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1h
dC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKQEAgLTExMSw3ICsxMTEsNyBA
QCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGpzb25EYXRh
LmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IElu
aXREYXRhUmVnaXN0cnk6OmV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90
ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFj
dFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICAvLyA0LiBDb21tb24gU3lzdGVtSUQgYW5kIFBTU0ggQm94IEZvcm1hdAogICAgIC8v
IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2lu
aXRkYXRhL2NlbmMuaHRtbCNjb21tb24tc3lzdGVtCkBAIC0xNTEsOSArMTUxLDkgQEAgc3RkOjpv
cHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZp
Y0hlYWRlckJveD4+PiBJbmkKICAgICByZXR1cm4gcHNzaEJveGVzOwogfQogCi1zdGQ6Om9wdGlv
bmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RL
ZXlJRHNDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0
b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFj
dEtleUlEc0NlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAg
IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKIAogICAgIGF1dG8gcHNzaEJveGVzID0gZXh0cmFj
dFBzc2hCb3hlc0Zyb21DZW5jKGJ1ZmZlcik7CiAgICAgaWYgKCFwc3NoQm94ZXMpCkBAIC0xODUs
NyArMTg1LDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0
RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2VuYyhjb24KICAgICByZXR1cm4ga2V5SURzOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyA0LiBDb21tb24gU3lzdGVtSUQgYW5kIFBTU0ggQm94
IEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9y
bWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2NlbmMuaHRtbCNjb21tb24tc3lzdGVtCkBAIC0xOTUsNyAr
MTk1LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVD
ZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBidWZmZXIuY29weSgp
OwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVdlYk0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIC8vIENoZWNrIGlmIHRoZSBidWZmZXIgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAg
IC8vIFRoZSBXZWJNIGluaXREYXRhIGlzIHRoZSBDb250ZW50RW5jS2V5SUQsIHNvIHNob3VsZCBi
ZSBsZXNzIHRoYW4ga1dlYk1NYXhDb250ZW50RW5jS2V5SURTaXplLgpAQCAtMjA1LDEwICsyMDUs
MTAgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplV2ViTShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1dl
Yk0oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0
b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1dlYk0oY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4ga2V5SURzOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZEJ1ZmZl
ciA9IHNhbml0aXplV2ViTShidWZmZXIpOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVkQnVmZmVyID0gc2FuaXRpemVXZWJNKGJ1ZmZlcik7CiAgICAgaWYgKCFzYW5pdGl6ZWRC
dWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTIzMyw3ICsyMzMsNyBA
QCBJbml0RGF0YVJlZ2lzdHJ5OjpJbml0RGF0YVJlZ2lzdHJ5KCkKIAogSW5pdERhdGFSZWdpc3Ry
eTo6fkluaXREYXRhUmVnaXN0cnkoKSA9IGRlZmF1bHQ7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIGF1dG8gaXRlciA9IG1fdHlwZXMuZmluZChpbml0RGF0YVR5cGUpOwogICAg
IGlmIChpdGVyID09IG1fdHlwZXMuZW5kKCkgfHwgIWl0ZXItPnZhbHVlLnNhbml0aXplSW5pdERh
dGEpCkBAIC0yNDEsNyArMjQxLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdp
c3RyeTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGEKICAgICByZXR1
cm4gaXRlci0+dmFsdWUuc2FuaXRpemVJbml0RGF0YShidWZmZXIpOwogfQogCi1zdGQ6Om9wdGlv
bmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RL
ZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAg
YXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXREYXRhVHlwZSk7CiAgICAgaWYgKGl0ZXIgPT0g
bV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUuc2FuaXRpemVJbml0RGF0YSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3Ry
eS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmgKaW5kZXggY2QxMzg3YTZiZDAzOGZmMzRlMmNmYjc1ZjQ0M2RlN2Q5NDAzMjFiMC4uNzdk
NjA0YjA4YmI3ZjdlMzhiY2NiMzU0NWIzNGM4YjEzNDM1NWVmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmgK
QEAgLTM4LDE5ICszOCwxOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJU09Qcm90
ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbml0RGF0YVJlZ2lzdHJ5IHsKIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSW5pdERhdGFSZWdpc3RyeSYgc2hhcmVk
KCk7CiAgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPEluaXREYXRhUmVnaXN0cnk+Owog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlE
cyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwor
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBzdHJ1Y3QgSW5pdERh
dGFUeXBlQ2FsbGJhY2tzIHsKLSAgICAgICAgdXNpbmcgU2FuaXRpemVJbml0RGF0YUNhbGxiYWNr
ID0gRnVuY3Rpb248UmVmUHRyPFNoYXJlZEJ1ZmZlcj4oY29uc3QgU2hhcmVkQnVmZmVyJik+Owot
ICAgICAgICB1c2luZyBFeHRyYWN0S2V5SURzQ2FsbGJhY2sgPSBGdW5jdGlvbjxzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+KGNvbnN0IFNoYXJlZEJ1ZmZlciYpPjsKKyAg
ICAgICAgdXNpbmcgU2FuaXRpemVJbml0RGF0YUNhbGxiYWNrID0gRnVuY3Rpb248UmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKT47Cisg
ICAgICAgIHVzaW5nIEV4dHJhY3RLZXlJRHNDYWxsYmFjayA9IEZ1bmN0aW9uPHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+KGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKT47CiAKICAgICAgICAgU2FuaXRpemVJbml0RGF0YUNhbGxiYWNrIHNhbml0
aXplSW5pdERhdGE7CiAgICAgICAgIEV4dHJhY3RLZXlJRHNDYWxsYmFjayBleHRyYWN0S2V5SURz
OwpAQCAtNjEsOSArNjEsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcm
IGtleWlkc05hbWUoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgd2VibU5hbWUoKTsK
IAotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJv
dGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IGV4dHJhY3RQc3NoQm94ZXNGcm9tQ2Vu
Yyhjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXIm
KTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVDZW5jKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IGV4dHJhY3RQc3No
Qm94ZXNGcm9tQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJh
Y3RLZXlJRHNDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplQ2VuYyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CiAKIHByaXZhdGU6CiAgICAgSW5pdERhdGFSZWdpc3RyeSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uY3BwCmluZGV4IDhiZmIxY2U3MDFhMmY1YTY5YjViNTE5OTFhYTg2MzJlYmI4
OTI1ZjkuLjE0Nzc2YzIwMTUxYmZlZmUzODA3OWEzMzczMGM4ODY2MjY4YmE0NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U2Vzc2lvbi5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2Vu
ZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgog
ICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29y
a2luZywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGluaXREYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5sZW5ndGgoKSksIGlu
aXREYXRhVHlwZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZN
b3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgLy8gMTAuMS4gSWYgdGhlIGlu
aXQgZGF0YSBpcyBub3QgdmFsaWQgZm9yIGluaXREYXRhVHlwZSwgcmVqZWN0IHByb21pc2Ugd2l0
aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAgICAvLyAxMC4yLiBMZXQgc2FuaXRp
emVkIGluaXQgZGF0YSBiZSBhIHZhbGlkYXRlZCBhbmQgc2FuaXRpemVkIHZlcnNpb24gb2YgaW5p
dCBkYXRhLgotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRJbml0RGF0YSA9
IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0
YSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRJbml0
RGF0YSA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBp
bml0RGF0YSk7CiAKICAgICAgICAgLy8gMTAuMy4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxl
ZCwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAg
ICBpZiAoIXNhbml0aXplZEluaXREYXRhKSB7CkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBNZWRp
YUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIGNvbnN0IEJ1ZmYKICAgICAgICAgICAgIG1fbGF0ZXN0RGVjcnlwdFRpbWUgPSAwOwogICAg
ICAgICB9CiAKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlcXVlc3RMaWNlbnNlKG1fc2Vz
c2lvblR5cGUsIGluaXREYXRhVHlwZSwgc2FuaXRpemVkSW5pdERhdGEucmVsZWFzZU5vbk51bGwo
KSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmll
ciA9IFdURk1vdmUoaWRlbnRpZmllcildIChSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAg
IG1faW5zdGFuY2VTZXNzaW9uLT5yZXF1ZXN0TGljZW5zZShtX3Nlc3Npb25UeXBlLCBpbml0RGF0
YVR5cGUsIHNhbml0aXplZEluaXREYXRhLnJlbGVhc2VOb25OdWxsKCksIFt0aGlzLCB3ZWFrVGhp
cywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50
aWZpZXIpXSAoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VT
ZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC00MjIsNyArNDIyLDcg
QEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3Bv
bnNlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYKICAgICAvLyA2LiBSdW4gdGhlIGZvbGxvd2luZyBz
dGVwcyBpbiBwYXJhbGxlbDoKICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMs
IFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9LCByZXNwb25zZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc3BvbnNlLmRhdGEoKSwgcmVz
cG9uc2UubGVuZ3RoKCkpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9
IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewogICAgICAgICAvLyA2LjEuIExldCBz
YW5pdGl6ZWQgcmVzcG9uc2UgYmUgYSB2YWxpZGF0ZWQgYW5kL29yIHNhbml0aXplZCB2ZXJzaW9u
IG9mIHJlc3BvbnNlIGNvcHkuCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXpl
ZFJlc3BvbnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7
CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRSZXNwb25z
ZSA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2UpOwogCiAgICAg
ICAgIC8vIDYuMi4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxlZCwgb3IgaWYgc2FuaXRpemVk
IHJlc3BvbnNlIGlzIGVtcHR5LCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBU
eXBlRXJyb3IuCiAgICAgICAgIGlmICghc2FuaXRpemVkUmVzcG9uc2UgfHwgc2FuaXRpemVkUmVz
cG9uc2UtPmlzRW1wdHkoKSkgewpAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNz
aW9uOjpyZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgICAgICAvLyA0
LjMuIExldCBtZXNzYWdlIHR5cGUgYmUgbnVsbC4KIAogICAgICAgICAvLyA0LjQuIFVzZSB0aGUg
Y2RtIHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgbV9pbnN0YW5jZVNl
c3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBlLCBbdGhp
cywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RG
TW92ZShpZGVudGlmaWVyKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYg
a2V5cywgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBDRE1JbnN0
YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBt
X2luc3RhbmNlU2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lv
blR5cGUsIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50
aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0
dXNWZWN0b3ImJiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQp
IG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTY0OSw3ICs2NDksNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6cmVtb3Zl
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAvLyA1LiBSZXR1cm4gcHJvbWlz
ZS4KIH0KIAotdm9pZCBNZWRpYUtleVNlc3Npb246OmVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVz
c2FnZVR5cGUgbWVzc2FnZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgbWVzc2FnZSkKK3ZvaWQg
TWVkaWFLZXlTZXNzaW9uOjplbnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlIG1lc3Nh
Z2VUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBtZXNzYWdlKQogewogICAgIC8v
IDYuNC4xIFF1ZXVlIGEgIm1lc3NhZ2UiIEV2ZW50CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHVi
LmlvL2VuY3J5cHRlZC1tZWRpYS8jcXVldWUtbWVzc2FnZQpAQCAtNzE2LDcgKzcxNiw3IEBAIHZv
aWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNlcyhDRE1JbnN0YW5jZVNlc3Npb246
OktleVN0YXR1c1ZlY3RvciYmIGluCiAgICAgICAgIH0pOwogfQogCi12b2lkIE1lZGlhS2V5U2Vz
c2lvbjo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgbWVzc2FnZSkKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZShDRE1N
ZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVz
c2FnZSkKIHsKICAgICBlbnF1ZXVlTWVzc2FnZShtZXNzYWdlVHlwZSwgbWVzc2FnZSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVNlc3Npb24uaAppbmRleCAzZDk2Zjg4MDJlNzQ3ODQxYzRlZmRhODFkY2I5NDFlYTZlNGE3NWU0
Li4zNjVhY2U1YzA5NWU3ZGMwYzU3MWU3NmNjZjJjMDdhYWZjNjJiYWE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9u
LmgKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgQ0RNOwogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwog
Y2xhc3MgTWVkaWFLZXlTdGF0dXNNYXA7CiBjbGFzcyBNZWRpYUtleXM7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBJRExUeXBlPiBjbGFzcyBET01Qcm9taXNlUHJveHk7CiAKQEAgLTg3LDIwICs4NywyMCBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgQ2xvc2VkUHJvbWlzZSA9IERPTVByb21pc2VQcm94eTxJRExVbmRl
ZmluZWQ+OwogICAgIENsb3NlZFByb21pc2UmIGNsb3NlZCgpIHsgcmV0dXJuIG1fY2xvc2VkUHJv
bWlzZS5nZXQoKTsgfQogCi0gICAgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVm
ZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiYgc3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1
c2VzOyB9CisgICAgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4mIHN0YXR1c2VzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
dXNlczsgfQogCiAgICAgdW5zaWduZWQgaW50ZXJuYWxJbnN0YW5jZVNlc3Npb25PYmplY3RSZWZD
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zdGFuY2VTZXNzaW9uLT5yZWZDb3VudCgpOyB9CiAK
IHByaXZhdGU6CiAgICAgTWVkaWFLZXlTZXNzaW9uKERvY3VtZW50JiwgV2Vha1B0cjxNZWRpYUtl
eXM+JiYsIE1lZGlhS2V5U2Vzc2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVy
LCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2VTZXNzaW9uPiYmKTsKLSAgICB2b2lkIGVucXVl
dWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAg
IHZvaWQgZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZSwgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgdXBkYXRlRXhwaXJhdGlvbihkb3VibGUpOwogICAg
IHZvaWQgc2Vzc2lvbkNsb3NlZCgpOwogICAgIFN0cmluZyBtZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KCkgY29uc3Q7CiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQKICAgICB2b2lk
IHVwZGF0ZUtleVN0YXR1c2VzKENETUluc3RhbmNlU2Vzc2lvbkNsaWVudDo6S2V5U3RhdHVzVmVj
dG9yJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBzZW5kTWVzc2FnZShD
RE1NZXNzYWdlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmlu
YWw7CiAgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAg
IFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGZpbmFsOwogCkBAIC0xNDAsMTAgKzE0MCwx
MCBAQCBwcml2YXRlOgogICAgIE1lZGlhS2V5U2Vzc2lvblR5cGUgbV9zZXNzaW9uVHlwZTsKICAg
ICBSZWY8Q0RNPiBtX2ltcGxlbWVudGF0aW9uOwogICAgIFJlZjxDRE1JbnN0YW5jZVNlc3Npb24+
IG1faW5zdGFuY2VTZXNzaW9uOwotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gbV9yZWNv
cmRPZktleVVzYWdlOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1f
cmVjb3JkT2ZLZXlVc2FnZTsKICAgICBkb3VibGUgbV9maXJzdERlY3J5cHRUaW1lIHsgMCB9Owog
ICAgIGRvdWJsZSBtX2xhdGVzdERlY3J5cHRUaW1lIHsgMCB9OwotICAgIFZlY3RvcjxzdGQ6OnBh
aXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4gbV9zdGF0dXNlczsKKyAgICBW
ZWN0b3I8c3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0
dXM+PiBtX3N0YXR1c2VzOwogCiAgICAgdXNpbmcgRGlzcGxheUNoYW5nZWRPYnNlcnZlciA9IE9i
c2VydmVyPHZvaWQoUGxhdGZvcm1EaXNwbGF5SUQpPjsKICAgICBEaXNwbGF5Q2hhbmdlZE9ic2Vy
dmVyIG1fZGlzcGxheUNoYW5nZWRPYnNlcnZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKaW5kZXgg
MDZhZmZiNWYyZWRmZTE4Mjk3MTllYTE3YzI3ODg1NGJjNWE2ZTYwYy4uMzk4ZThhYjFiNjU2YjQ0
NTkyN2JlYjZiYzY5M2RkMzk5YTY4N2FjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKQEAgLTU2
LDcgKzU2LDcgQEAgdW5zaWduZWQgbG9uZyBNZWRpYUtleVN0YXR1c01hcDo6c2l6ZSgpCiAgICAg
cmV0dXJuIG1fc2Vzc2lvbi0+c3RhdHVzZXMoKS5zaXplKCk7CiB9CiAKLXN0YXRpYyBib29sIGtl
eUlkc01hdGNoKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQor
c3RhdGljIGJvb2wga2V5SWRzTWF0Y2goY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYSwg
Y29uc3QgQnVmZmVyU291cmNlJiBiKQogewogICAgIGF1dG8gbGVuZ3RoID0gYS5zaXplKCk7CiAg
ICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3RoKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgK
aW5kZXggYzIxMTExM2EyYzZkYWM3OTc5MjRhOTlkMmQyZGY5N2MyZTY1Zjg1MC4uNjBkNjJhYWZm
ODA3NGRhZGE2ZTMxYTNmMmIzNzBhNmQ2ZDAxZjYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaApAQCAt
MzgsNyArMzgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYUtleVNlc3Np
b247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
CiBjbGFzcyBNZWRpYUtleVN0YXR1c01hcCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5U3Rh
dHVzTWFwPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKaW5kZXggODNiMjRhY2VhYTViMTI5NGJiNGVhNDM5ZmIy
ZDVjNGY2Y2NkNDc1My4uMzY3ZjMxZDE4NmI1MTYzOWE5Yzc0MjEzZjBjZjhlNmYyZjhkMjZlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlzLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIGJvb2wgTWVkaWFLZXlzOjpoYXNPcGVuU2Vzc2lv
bnMoKSBjb25zdAogICAgICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYUtleXM6OnVucmVxdWVzdGVk
SW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2b2lkIE1lZGlhS2V5czo6dW5yZXF1ZXN0ZWRJ
bml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCiB7CiAgICAgZm9yIChhdXRvJiBj
ZG1DbGllbnQgOiBtX2NkbUNsaWVudHMpCiAgICAgICAgIGNkbUNsaWVudC5jZG1DbGllbnRVbnJl
cXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGluaXREYXRhVHlwZSwgaW5pdERhdGEu
Y29weVJlZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5oCmluZGV4IDdiNTlhM2JjNmQyMjU2ZmM2NTZmMDhjYmYyNjg5MTg1MTA5ODNh
MjIuLjkxYTFhMDcxMTQzM2JlMjQ3ZGQyYTg1YzVmNGFkMDkzOGEwOWE3YWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaApAQCAtODYs
NyArODYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFLZXlzKERvY3VtZW50JiwgYm9vbCB1c2VE
aXN0aW5jdGl2ZUlkZW50aWZpZXIsIGJvb2wgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCwgY29uc3Qg
VmVjdG9yPE1lZGlhS2V5U2Vzc2lvblR5cGU+JiwgUmVmPENETT4mJiwgUmVmPENETUluc3RhbmNl
PiYmKTsKIAogICAgIC8vIENETUluc3RhbmNlQ2xpZW50Ci0gICAgdm9pZCB1bnJlcXVlc3RlZElu
aXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+
JiYpIGZpbmFsOworICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZl
ZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAK
ICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNv
bnN0IHsgcmV0dXJuIG1fbG9nZ2VyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5jcHAKaW5kZXggZjEyYzg4ZmVlOWE4MDc0YjUwOGVmOTU3MWU3MDFmNTY4MmZiNDky
Ny4uMDAzOTMwMmY3ZGMxNmZmZWNmYzQ2NWM3ZDhkYTI1MmY5OGRhZjU2MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjk3LDE0ICsyOTcsMTQgQEAg
RmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAgcmV0dXJuIGZv
cm1EYXRhQm9keSgpOwogCiAgICAgaWYgKGlzVGV4dCgpKQotICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgp
LCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFVuZW5jb2Rh
YmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkpCi0g
ICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5n
KCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhh
bmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
VVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBV
bmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogCiAgICAgaWYgKGlzQXJyYXlCdWZmZXIo
KSkKLSAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJC
b2R5KCkuYnl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJh
eUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOwogICAgIGlmIChpc0FycmF5QnVmZmVyVmlldygp
KQotICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSks
IGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVy
Vmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5n
dGgoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5oCmluZGV4IDA4OTgzZWMwMDQzZjZjOTlhN2ZhZWFmYzY5M2NlODI4MjNi
NDAxYmMuLmJhZDFiNWVhMjNiNzcxYjM0N2Y0YjA0YTU2NzU4ZmMwMDg4ZTEyZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJs
aWM6CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+IGJvZHlBc0Zvcm1EYXRhKCkgY29uc3Q7CiAKLSAg
ICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3Jt
RGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgVGFrZW5EYXRh
ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVk
QnVmZmVyPj47CiAgICAgVGFrZW5EYXRhIHRha2UoKTsKIAogICAgIHZvaWQgc2V0QXNGb3JtRGF0
YShSZWY8Rm9ybURhdGE+JiYgZGF0YSkgeyBtX2RhdGEgPSBXVEZNb3ZlKGRhdGEpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmlu
ZGV4IDExYTczZjM0NWU4MmQ5ZTcwODU5OGFhODMzZGVhZWQ4YmVjOTM0OTQuLjIyMTNkNjIzMDNl
ZmUyYTFmNzI5ODI2MGY1ODg2MGI3NzZmYjI2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0zMjksMTMgKzMyOSwxMyBA
QCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgc2l6ZSkKICAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKLXZvaWQg
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9p
ZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKQogewogICAgIG1fYnVmZmVyLnJlc2V0KCk7CiAgICAgbV9idWZmZXIuYXBwZW5kKFdU
Rk1vdmUoZGF0YSkpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZURhdGEoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNv
bnN1bWVyOjp0YWtlRGF0YSgpCiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmgKaW5kZXggNmJiYmNlNzM0N2FhM2JjMmY3MGY0ZWM2ZDhiYjBlMTg3MmFhZjg5Ny4u
ODcxZDJjMDg2MzMxYTk4Mjk0YTE2NmE0YjQyZTMxODRlMDM3NzcyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtNTAsMTAgKzUw
LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCk7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9
Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
Z2V0KCkuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7Cisg
ICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyLmdldCgpLmdldCgpOyB9CisgICAgdm9pZCBzZXREYXRhKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRha2VEYXRhKCk7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHRha2VEYXRhKCk7CiAgICAgUmVmUHRy
PEpTQzo6QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5QnVmZmVyKCk7CiAgICAgU3RyaW5nIHRha2VB
c1RleHQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNw
cAppbmRleCBmYzU1Y2M3ZDgzZDhiYzExZjA4NTRkYzNjZmQ4NTA5N2EzMWYxMGY2Li4wM2Y4OWI2
MWNhNWY3YzcxNzZiOWQ4OGNkMTM2NjBlODZiN2EyNTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgRmV0
Y2hMb2FkZXI6OnN0b3AoKQogICAgICAgICBtX2xvYWRlci0+Y2FuY2VsKCk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEZldGNoTG9hZGVyOjpzdGFydFN0cmVhbWluZygpCitSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gRmV0Y2hMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKIHsKICAg
ICBBU1NFUlQobV9jb25zdW1lcik7CiAgICAgYXV0byBmaXJzdENodW5rID0gbV9jb25zdW1lci0+
dGFrZURhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApp
bmRleCAyZjkwZjBlYzNmZjkwNWEyNjIzMWM4NGM3MmE3YTE4NmNkNGJmZTgzLi40NjEyZDBlMGUz
YTdlZmUzMDYwMzk2YjBkNzVhMmZhM2JjNGVkZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlci5oCkBAIC0zOSwxNCArMzksMTQgQEAgY2xhc3MgRmV0Y2hCb2R5
Q29uc3VtZXI7CiBjbGFzcyBGZXRjaExvYWRlckNsaWVudDsKIGNsYXNzIEZldGNoUmVxdWVzdDsK
IGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBGZXRjaExvYWRlciBmaW5hbCA6IHB1
YmxpYyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBGZXRjaExvYWRlcihG
ZXRjaExvYWRlckNsaWVudCYsIEZldGNoQm9keUNvbnN1bWVyKik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgfkZldGNoTG9hZGVyKCk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzdGFydFN0cmVh
bWluZygpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzdGFydFN0cmVhbWlu
ZygpOwogCiAgICAgdm9pZCBzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRmV0
Y2hSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzdGFydChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgY29uc3QgQmxvYiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggYjkzNDM5MmE5MDNkNGE1ZmQxYzU0YWU4MTQ4YjJl
NmU3OWU3NmM2Yi4uZTM4YTgzYWRlN2Q2ZTBhYWY3MGNlYjljNWFhOGZlOGFiNDk0M2QwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC00
NDIsNyArNDQyLDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YShSZXNwb25zZURh
dGEmJiBkYXRhLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQYWRkaW4KICAgICAgICAgICAgICAgICBz
ZXRCb2R5KHsgfSk7CiAgICAgICAgICAgICBib2R5KCkuc2V0QXNGb3JtRGF0YShXVEZNb3ZlKGZv
cm1EYXRhKSk7CiAgICAgICAgIH0sCi0gICAgICAgIFt0aGlzXShSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgICAgICBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikgewogICAgICAgICAgICAgaWYgKGlzQm9keU51bGwoKSkKICAgICAgICAgICAgICAgICBz
ZXRCb2R5KHsgfSk7CiAgICAgICAgICAgICBib2R5KCkuY29uc3VtZXIoKS5zZXREYXRhKFdURk1v
dmUoYnVmZmVyKSk7CkBAIC01MDQsNyArNTA0LDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpmZWVk
U3RyZWFtKCkKICAgICBjbG9zZVN0cmVhbSgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBG
ZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydFN0cmVhbWluZygpCitSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RhcnRTdHJlYW1p
bmcoKQogewogICAgIEFTU0VSVChtX2xvYWRlcik7CiAgICAgcmV0dXJuIG1fbG9hZGVyLT5zdGFy
dFN0cmVhbWluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaAppbmRleCAzNzQ4YzhmNTkyNzI5MzBiYmMyZDE2NjZjNmFlYjU0N2ExYjVlZjA2Li5jZjc4
NjMyMzlmZDk0NmVlMGU4ZDg4ZWFlYTcyZmU5ODllZWQzMTRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBmZWVkU3RyZWFtKCkgZmluYWw7CiAgICAgdm9pZCBjYW5jZWwoKSBmaW5hbDsK
IAotICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwg
UmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBS
ZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4s
IFJlZjxTaGFyZWRCdWZmZXI+PjsKICAgICBSZXNwb25zZURhdGEgY29uc3VtZUJvZHkoKTsKICAg
ICB2b2lkIHNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmLCB1aW50NjRfdCBib2R5U2l6ZVdpdGhQ
YWRkaW5nKTsKIApAQCAtMTM0LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCBj
b25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJik7CiAKLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKKyAgICAgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CiAgICAgICAgIE5vdGlm
aWNhdGlvbkNhbGxiYWNrIHRha2VOb3RpZmljYXRpb25DYWxsYmFjaygpIHsgcmV0dXJuIFdURk1v
dmUobV9yZXNwb25zZUNhbGxiYWNrKTsgfQogICAgICAgICBDb25zdW1lRGF0YUJ5Q2h1bmtDYWxs
YmFjayB0YWtlQ29uc3VtZURhdGFDYWxsYmFjaygpIHsgcmV0dXJuIFdURk1vdmUobV9jb25zdW1l
RGF0YUNhbGxiYWNrKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodC5oCmluZGV4IDYxMzdjMmNmNmZmNDdhMzY4NDBmMTFiOTY2YjllNTI1ODcx
ZDgxNWYuLjFhNjZiZjgxODMyMGU5NTYwN2Q2MTVmMWEwODJhODI3NmViMmEzNDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCkBAIC0zOCw3
ICszOCw3IEBAIGVudW0gY2xhc3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgOiBib29sIHsg
Tm8sIFllcyB9OwogZW51bSBjbGFzcyBIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwIDog
Ym9vbCB7IE5vLCBZZXMgfTsKIAogc3RydWN0IEFwcEhpZ2hsaWdodCB7Ci0gICAgUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gaGlnaGxpZ2h0OworICAgIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBoaWdobGlnaHQ7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRleHQ7
CiAgICAgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgaXNOZXdHcm91cDsKICAgICBIaWdobGln
aHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhLmNwcAppbmRleCA4M2I5NWQ3Y2YwMDdhYTU0ZmJmZTIzNGI3ZDhiMWViOGUxOTk2M2U0
Li41ZTgwZjBjMDcyZDQ5YTNlZjc5Njk1OTMwMmM0NDU2Y2QyYWJkZThjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdGV4
cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgzMjMwMzIzMTsg
Ly8gRmlsZSBTaWduYXR1cmUgIChBKXBwbGUoQVApcGxpY2F0aW9uKEgpaWdobGlnaHRzKDIwMjEp
CiAKLXN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5n
ZURhdGE6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBjb250aWd1b3Vz
QnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CiAgICAgYXV0byBkZWNvZGVyID0gY29u
dGlndW91c0J1ZmZlci0+ZGVjb2RlcigpOwpAQCAtNTMsNyArNTMsNyBAQCBzdGQ6Om9wdGlvbmFs
PEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29u
c3QgU2hhcmVkQgogICAgIHJldHVybiBkYXRhOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBBcHBI
aWdobGlnaHRSYW5nZURhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29u
c3QKIHsKICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGVuY29kZXI7CiAgICAgZW5jb2Rl
ciA8PCAqdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKaW5kZXggY2Y2MzgxYWNmYjBhNTIxMWI0MzUwOGI3
YjUxN2Q2ZGIyZjZmYzc0My4uYjVkYWY2MDI1Mzk4YTNmN2U2ZjFkMzdhYmVjZTg0NGQ0ZjFjNjU0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEFwcEhpZ2hsaWdodFJhbmdl
RGF0YSB7CiBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGNyZWF0ZShj
b25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRp
b25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJik7CiAgICAgc3RydWN0IE5vZGVQYXRoQ29tcG9uZW50IHsKICAgICAgICAgU3RyaW5n
IGlkZW50aWZpZXI7CiAgICAgICAgIFN0cmluZyBub2RlTmFtZTsKQEAgLTExMSw3ICsxMTEsNyBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIFJlZjxT
aGFyZWRCdWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgU3Ry
aW5nIG1faWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKaW5kZXggZGMzOWEwZjBkMThmZmZjYTdk
ZmI0NjUyMTljZDYxMmE5ZjczOGY4Zi4uZTVkZTg0OTRmMzUwNDUzNTk0YjJmMmU4OGMzZGRhMzNm
YTlhZjcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIEFwcEhp
Z2hsaWdodFN0b3JhZ2U6OnN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTdGF0aWNSYW5nZT4mJiByYW5n
ZSkKICAgICBtX2RvY3VtZW50LT5wYWdlKCktPmNocm9tZSgpLnN0b3JlQXBwSGlnaGxpZ2h0KFdU
Rk1vdmUoaGlnaGxpZ2h0KSk7CiB9CiAKLXZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9y
ZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBTY3Jv
bGxUb0hpZ2hsaWdodCBzY3JvbGwpCit2b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVB
bmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIFNjcm9sbFRvSGlnaGxpZ2h0IHNjcm9sbCkKIHsKICAgICBhdXRvIGFwcEhpZ2hsaWdodFJh
bmdlRGF0YSA9IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGJ1ZmZlcik7CiAgICAgaWYg
KCFhcHBIaWdobGlnaHRSYW5nZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKaW5kZXggYjE1MmY3NmVkNDI0MDg5
MmVhN2RlMjFlMmNiMDZkNDcyZDg3MzM2MC4uZTI3NjYzM2I0ODRmODEwOTRhZGVjZTQ1ZjY0YWJi
ZWQxNzgxMjUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQv
QXBwSGlnaGxpZ2h0U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCiBjbGFzcyBEb2N1bWVudDsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBT
dGF0aWNSYW5nZTsKIGNsYXNzIEhpZ2hsaWdodDsKIApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6
CiAgICAgfkFwcEhpZ2hsaWdodFN0b3JhZ2UoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c3RvcmVBcHBIaWdobGlnaHQoUmVmPFN0YXRpY1JhbmdlPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVmZmVyPiYm
LCBTY3JvbGxUb0hpZ2hsaWdodCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlQW5k
U2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFNjcm9s
bFRvSGlnaGxpZ2h0KTsKICAgICB2b2lkIHJlc3RvcmVVbnJlc3RvcmVkQXBwSGlnaGxpZ2h0cygp
OwogICAgIE1vbm90b25pY1RpbWUgbGFzdFJhbmdlU2VhcmNoVGltZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdGltZUF0TGFzdFJhbmdlU2VhcmNoOyB9CiAgICAgdm9pZCByZXNldExhc3RSYW5nZVNlYXJj
aFRpbWUoKSB7IG1fdGltZUF0TGFzdFJhbmdlU2VhcmNoID0gTW9ub3RvbmljVGltZTo6bm93KCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJpYWxpemF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAppbmRleCBhMWM5MzEyZDQ1ZWJiZmNlOWYzMmU2Y2Mx
YTFhMmU4NGRkY2E3YzcyLi4yYTJjMWZjMzI5NTgwNWQ1MmZkNTZhZjMwYjQ1NWFlMmNjY2M0ODc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogZW51bSBjbGFzcyBLZXlQYXRoVHlwZSB7IE51bGwsIFN0cmluZywgQXJyYXkg
fTsKIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgo
Y29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKK1JlZlB0cjxTaGFyZWRC
dWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRo
PiYga2V5UGF0aCkKIHsKICAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIo
KTsKIApAQCAtMjgyLDEzICsyODIsMTMgQEAgc3RhdGljIHZvaWQgZW5jb2RlS2V5KFZlY3Rvcjx1
aW50OF90PiYgZGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5KQogICAgIH0KIH0KIAotUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5
RGF0YSYga2V5KQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25z
dCBJREJLZXlEYXRhJiBrZXkpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0
YS5hcHBlbmQoU0lEQktleVZlcnNpb24pOwogCiAgICAgZW5jb2RlS2V5KGRhdGEsIGtleSk7Ci0g
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsK
KyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKIHN0
YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVLZXkoY29uc3QgdWludDhfdComIGRh
dGEsIGNvbnN0IHVpbnQ4X3QqIGVuZCwgSURCS2V5RGF0YSYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0
aW9uLmgKaW5kZXggYWFmZGIzNzAxZjBlZjQ0OGQ2YjhhYjUxMDExODVjNGIzNGZmYWE4YS4uNjVj
NGE2M2M3ODdmMzY5NDE0NmUyMzFjOGM1NDAxNzA2N2E0ZjQyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bi5oCkBAIC0zMiwxMCArMzIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJL
ZXlEYXRhOwogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5
UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7CitSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4m
KTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6
ZV90IGJ1ZmZlclNpemUsIHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsKIAotUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0
YSYpOworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJL
ZXlEYXRhJik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5RGF0YShjb25zdCB1aW50OF90KiBidWZm
ZXIsIHNpemVfdCBidWZmZXJTaXplLCBJREJLZXlEYXRhJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyLmNwcAppbmRleCAwYTQ2OWJkMGJkMWYzOGRjYjk2YjM5ZDhjMzAwMGFmNzNk
MTJhYjU5Li5jOWQ2ZGE2YmRkOWY5Mzk1MDFmNGY0MjMyYjRjNzgzN2Q4NDBkYWMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXIuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFSZWNvcmRl
cjo6c3RhcnRSZWNvcmRpbmcoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdGltZVNsaWMKICAgICBy
ZXR1cm4geyB9OwogfQogCi1zdGF0aWMgaW5saW5lIFJlZjxCbG9iRXZlbnQ+IGNyZWF0ZURhdGFB
dmFpbGFibGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlIHRpbWVD
b2RlKQorc3RhdGljIGlubGluZSBSZWY8QmxvYkV2ZW50PiBjcmVhdGVEYXRhQXZhaWxhYmxlRXZl
bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUgdGltZUNv
ZGUpCiB7CiAgICAgYXV0byBibG9iID0gYnVmZmVyID8gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIGJ1
ZmZlci0+ZXh0cmFjdERhdGEoKSwgbWltZVR5cGUpIDogQmxvYjo6Y3JlYXRlKGNvbnRleHQpOwog
ICAgIHJldHVybiBCbG9iRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGF0YWF2YWlsYWJsZUV2
ZW50LCBCbG9iRXZlbnQ6OkluaXQgeyB7IGZhbHNlLCBmYWxzZSwgZmFsc2UgfSwgV1RGTW92ZShi
bG9iKSwgdGltZUNvZGUgfSwgQmxvYkV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaAppbmRl
eCA3NzEyYjQ0NTI4MzY3ZDhjMjcyNTAyYWRiYWFjYWFmOTc4OGNiZGIwLi4xZTliNzRhYjE3ZTMx
MDhkYjQyMDliOWI0ZjAyMTRkYTExYWM2ZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmgKQEAgLTEwMyw3ICsxMDMsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hFcnJvcihFeGNlcHRpb24mJik7CiAKICAgICBl
bnVtIGNsYXNzIFRha2VQcml2YXRlUmVjb3JkZXIgeyBObywgWWVzIH07Ci0gICAgdXNpbmcgRmV0
Y2hEYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+OworICAgIHVzaW5nIEZldGNoRGF0YUNhbGxi
YWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT47CiAgICAgdm9pZCBmZXRjaERhdGEoRmV0Y2hE
YXRhQ2FsbGJhY2smJiwgVGFrZVByaXZhdGVSZWNvcmRlcik7CiAKICAgICAvLyBNZWRpYVN0cmVh
bTo6T2JzZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhTWV0YWRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFNZXRhZGF0YS5jcHAKaW5kZXggM2Y0YzliY2QxMzNhYzI5ZjNmN2RkZTE5OTQ3OGUz
OTI1N2Q1ZTY2Yi4uODc0YWE3ZjBiMThmMGVlNzU4ODBiYTVmNWVmNjdkNDdiZmMyYjJiNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRh
ZGF0YS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBBcnR3b3JrSW1hZ2VMb2FkZXI6Om5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0wKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBTYW5pdGl6ZSB0aGUgaW1hZ2UgYnkgZGVjb2Rpbmcg
aXQgaW50byBhIEJpdG1hcEltYWdlLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlclRv
U2FuaXRpemUgPSBtX2NhY2hlZEltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRpemUgPSBtX2NhY2hlZEltYWdlLT5p
bWFnZSgpLT5kYXRhKCk7CiAgICAgYXV0byBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVh
dGUoKTsKICAgICBiaXRtYXBJbWFnZS0+c2V0RGF0YShXVEZNb3ZlKGJ1ZmZlclRvU2FuaXRpemUp
LCB0cnVlKTsKICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShiaXRt
YXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAppbmRleCAy
YjNjZGUzNjA4MjQ3MWMxMWM4N2ZjZjYxY2M4MWNjMzYwYzM5ZDkwLi5kMzc4YWZjNmY4YTFiNTdh
MDMwMmUyYzg2OGIyNDBhMjA5N2ZlNGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCkBAIC01MzAsNyArNTMwLDcgQEAgdm9p
ZCBTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlclRpbWVyRmlyZWQoKQogICAgIC8vIGh0dHBzOi8v
ZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS90aXAvbWVkaWEtc291cmNlL21lZGlh
LXNvdXJjZS5odG1sI3NvdXJjZWJ1ZmZlci1zZWdtZW50LXBhcnNlci1sb29wCiAgICAgLy8gV2hl
biB0aGUgc2VnbWVudCBwYXJzZXIgbG9vcCBhbGdvcml0aG0gaXMgaW52b2tlZCwgcnVuIHRoZSBm
b2xsb3dpbmcgc3RlcHM6CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcHBlbmREYXRhID0g
V1RGTW92ZShtX3BlbmRpbmdBcHBlbmREYXRhKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gYXBwZW5kRGF0YSA9IFdURk1vdmUobV9wZW5kaW5nQXBwZW5kRGF0YSk7CiAgICAg
Ly8gMS4gTG9vcCBUb3A6IElmIHRoZSBpbnB1dCBidWZmZXIgaXMgZW1wdHksIHRoZW4ganVtcCB0
byB0aGUgbmVlZCBtb3JlIGRhdGEgc3RlcCBiZWxvdy4KICAgICBpZiAoIWFwcGVuZERhdGEgfHwg
IWFwcGVuZERhdGEtPnNpemUoKSkgewogICAgICAgICBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5k
Q29tcGxldGUoQXBwZW5kUmVzdWx0OjpBcHBlbmRTdWNjZWVkZWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKaW5kZXggNTIwYzA3NzU2
OTZhMmYwZTJlNzMwMDczNWU4Yzk3NzQ5NWYxYTYxNC4uZDRjODU3OWMwYmJkNDQzYTUxMmZhOWY2
OGM0MjdlYzA0ODg1ZDBkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL1NvdXJjZUJ1ZmZlci5oCkBAIC0yMjIsNyArMjIyLDcgQEAgcHJpdmF0ZToKIAogICAg
IFdURjo6T2JzZXJ2ZXI8dm9pZCooKT4gbV9vcGFxdWVSb290UHJvdmlkZXI7CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX3BlbmRpbmdBcHBlbmREYXRhOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBtX3BlbmRpbmdBcHBlbmREYXRhOwogICAgIFRpbWVyIG1fYXBwZW5k
QnVmZmVyVGltZXI7CiAKICAgICBSZWZQdHI8VmlkZW9UcmFja0xpc3Q+IG1fdmlkZW9UcmFja3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAppbmRleCBmNTgyN2RmOTM3OTQ5M2QyODEy
NzAxNzdjY2ZiY2EwNTUxNTMyMzFmLi43Mzk0MmE4MzU5MzFhOWQyODRjNmE0NTFiYjhkYmZiNTc2
NWNhZGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKQEAgLTM5LDcgKzM5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50
OwogY2xhc3MgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbjsKIGNsYXNzIFJU
Q0Vycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIAogY2xhc3MgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyIGZpbmFsIDogcHVibGljIFJU
Q0RhdGFDaGFubmVsSGFuZGxlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzMsNyAr
NzMsNyBAQCBwcml2YXRlOgogCiAgICAgc3RydWN0IE1lc3NhZ2UgewogICAgICAgICBib29sIGlz
UmF3IHsgZmFsc2UgfTsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAg
ICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIH07CiAgICAgVmVjdG9y
PE1lc3NhZ2U+IG1fcGVuZGluZ01lc3NhZ2VzOwogICAgIGJvb2wgbV9pc1BlbmRpbmdDbG9zZSB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmNwcAppbmRleCBlNzllYmRiYWM0MDgzZTk0NTRjNjlkMTk5NmU2ZmQyZDhjNzI5ODE5Li4z
Y2VlZDBhMDExZTdiNTQ2ZmFkZGY0OGJiZGEyMTFkZmRkNTI0YzU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTk3LDcgKzk3LDcg
QEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudChSVENEYXRhQ2hh
bm5lbEhhbmRsZXJDbGllbnQmIGNsaWVudCwKICAgICBtX2NvbnRleHRJZGVudGlmaWVyID0gY29u
dGV4dElkZW50aWZpZXI7CiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVz
c2FnZXMpIHsKLSAgICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+
JiBkYXRhKSB7CisgICAgICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsmXShSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mIGRhdGEpIHsKICAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0
YShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAg
IH0sIFsmXShTdHJpbmcmIHRleHQpIHsKICAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlU3Ry
aW5nRGF0YSh0ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmgKaW5kZXggNDFmOTUyODIxZTYyMDA5M2Y4ZWVmZTMyYzVlZDRhZTBmNWU1NDE5Ny4u
MTFiZDQ1ZGU5MTU1Nzc5ZmZjOWVmYjAzZTk1NTI4ZjA1ZTY0ZDc0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKQEAgLTgyLDcgKzgyLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgUlRDRGF0YUNoYW5uZWxTdGF0ZSBzdGF0ZTsKICAgICAgICAgc3Rk
OjpvcHRpb25hbDx3ZWJydGM6OlJUQ0Vycm9yPiBlcnJvcjsKICAgICB9OwotICAgIHVzaW5nIE1l
c3NhZ2UgPSBzdGQ6OnZhcmlhbnQ8U3RhdGVDaGFuZ2UsIFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZl
cj4+OworICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnZhcmlhbnQ8U3RhdGVDaGFuZ2UsIFN0cmlu
ZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAgICB1c2luZyBQZW5kaW5nTWVzc2Fn
ZXMgPSBWZWN0b3I8TWVzc2FnZT47CiAgICAgdm9pZCBzdG9yZU1lc3NhZ2UoUGVuZGluZ01lc3Nh
Z2VzJiwgY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVyJik7CiAgICAgdm9pZCBwcm9jZXNzTWVzc2Fn
ZShjb25zdCB3ZWJydGM6OkRhdGFCdWZmZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaAppbmRleCAwYjg5OGY2YWRiNTdlYjI1
ZGM0OTM3ZDgxZmY1ZDE0ZDUyOTc2Yzg0Li5kNTE3M2ZiZjhiNDAzNDFjNWNmOGQ4YTRmNTVlZWFj
OGZmODM4YTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW1TaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtU2luay5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQnVmZmVyU291cmNlOwogY2xhc3MgUmVhZGFibGVTdHJlYW07Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBSZWFkYWJs
ZVN0cmVhbVNpbmsgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWFkYWJsZVN0cmVhbVNpbms+IHsKIHB1
YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmNwcAppbmRleCA4NTE0N2MwOTYxYzk5NzMxNjMxZjBlZGZiOWVmZTc0ZTVjMzZjYWNiLi41MjUx
MGMzMDgxOGYwY2E5MTZhODg0Mzc3ZDIyNGExYWJhNzk1Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC00NzUsNyArNDc1LDcg
QEAgc3RhdGljIEpTQzo6SlNQcm9taXNlKiBoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9u
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgRm9y
bURhdGEgbG9hZGluZy4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMTI0OAogICAgICAgICBjb21waWxlci0+ZmFpbChnbG9iYWxPYmplY3QsIGNy
ZWF0ZURPTUV4Y2VwdGlvbigqZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRF
cnJvciwgIk5vdCBpbXBsZW1lbnRlZCJfcyAgfSkpOwotICAgIH0sIFsmXShSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSB7CiAgICAgICAgIGNvbXBpbGVyLT5hZGRCeXRlcyhidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpOwogICAgICAgICBjb21waWxlci0+ZmluYWxpemUoZ2xvYmFsT2JqZWN0KTsK
ICAgICB9LCBbJl0oc3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRleCBiOTE4ZjMx
NDFhZjJmNTIxNjQyNjg5OGZhZWE4NGY0YjAyYjFlMjdlLi5iOGI3Nzg1ZjkxZDA2OGMyYTQ2Y2Vi
MWQ2NTk3NThmY2Y4YjY5ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAgLTk0LDcgKzk0LDcgQEAgcHJp
dmF0ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZmZXIgbV9zY3JpcHRCdWZmZXI7Ci0gICAgbXV0
YWJsZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jb250aWd1b3VzQnVmZmVyOwor
ICAgIG11dGFibGUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb250aWd1b3VzQnVmZmVyOwogICAg
IG11dGFibGUgdW5zaWduZWQgbV9zY3JpcHRIYXNoIHsgMCB9OwogICAgIG11dGFibGUgU3RyaW5n
IG1fY2FjaGVkU2NyaXB0U3RyaW5nOwogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBt
X2NvbnRhaW5zT25seUFTQ0lJOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCA3ZTQ5YTllNzMyMjZiNjVjYzI4YmY1OTQ4MTNi
MGY4M2IyNjlkMjJiLi5lZjM3ZjFkMGNhNDYyYmI5YjdjOWI2YTU1ZDE4ZWJiNGMxMTgxYTdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBEZXRhY2hlZE9mZnNjcmVlbkNhbnZhczsKIGNs
YXNzIElEQlZhbHVlOwogY2xhc3MgTWVzc2FnZVBvcnQ7CiBjbGFzcyBJbWFnZUJpdG1hcEJhY2tp
bmc7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
ZW51bSBjbGFzcyBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTsKIAogZW51bSBjbGFzcyBTZXJpYWxp
emF0aW9uRXJyb3JNb2RlIHsgTm9uVGhyb3dpbmcsIFRocm93aW5nIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAppbmRleCA0YjQzOTk1NGYxOWJhNGI4MjM3YzllNWRh
ZWQ0MWU0YmE3ZmRhMGVjLi5jYWRjNGEwNTk0YzViZjYzNzhjZmE3YjBlOGNhNDc1MjY1NjBiYWRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE2Nyw3ICsx
NjcsNyBAQCB2b2lkIENTU0ZvbnRGYWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkK
ICAgICAgICAgICAgICAgICBBU1NFUlQoIW1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7
CiAgICAgICAgICAgICAgICAgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50ID0gZG93bmNhc3Q8
U1ZHRm9udEVsZW1lbnQ+KCptX3N2Z0ZvbnRGYWNlRWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKICAg
ICAgICAgICAgICAgICBpZiAoYXV0byBvdGZGb250ID0gY29udmVydFNWR1RvT1RGRm9udChmb250
RWxlbWVudCkpCi0gICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7Cisg
ICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdGVkT1RGQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkpKTsKICAgICAgICAgICAgICAgICBpZiAobV9n
ZW5lcmF0ZWRPVEZCdWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgbV9pbkRvY3VtZW50Q3Vz
dG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9nZW5lcmF0
ZWRPVEZCdWZmZXIsIFN0cmluZygpKTsKICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHN0
YXRpY19jYXN0PGJvb2w+KG1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSk7CkBAIC0xNzYs
NyArMTc2LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1l
bnQpCiAgICAgICAgIH0gZWxzZSBpZiAobV9pbW1lZGlhdGVTb3VyY2UpIHsKICAgICAgICAgICAg
IEFTU0VSVCghbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAg
IGJvb2wgd3JhcHBpbmc7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVTb3Vy
Y2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKKyAg
ICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlh
dGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CiAgICAgICAgICAgICBtX2ltbWVkaWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEgPSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShidWZmZXIu
Z2V0KCksIFN0cmluZygpLCB3cmFwcGluZyk7CiAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGlj
X2Nhc3Q8Ym9vbD4obV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAg
fSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKaW5kZXggNmE4MmNm
MWUzZGM5MTU5Nzg1MzM2NWJkMzFlMzYyMzI3ODZhMDg4Mi4uMTA4ZTZjODc2N2QwZDJmZGFjYmU2
NTA0ZWJjNTA3MGU4ODJiZTY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NGb250
RmFjZTsKIGNsYXNzIENTU0ZvbnRTZWxlY3RvcjsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZvbnQ7CiBj
bGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwpAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAg
IFdlYWtQdHI8Q1NTRm9udFNlbGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsgLy8gRm9yIHJlbW90ZSBm
b250cywgdG8gb3JjaGVzdHJhdGUgbG9hZGluZy4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udExv
YWRSZXF1ZXN0PiBtX2ZvbnRSZXF1ZXN0OyAvLyBBbHNvIGZvciByZW1vdGUgZm9udHMsIGEgcG9p
bnRlciB0byB0aGUgcmVzb3VyY2UgcmVxdWVzdC4KIAotICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX2dlbmVyYXRlZE9URkJ1ZmZlcjsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+
IG1faW1tZWRpYXRlU291cmNlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBtX2ltbWVkaWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggMWRlYWM0ZjQxY2Y0OWYxZjg4MmRjY2VmZDQ4Y2Y2YTk3
MzJmM2VkOS4uYzQyZWMwNTFmZTExZWJhMTRmODEzMzU5ZDhkMTdhMmMyODE2NjRkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTQwMiw3ICs0MDIsNyBAQCBzdHJ1Y3QgUGFz
dGVib2FyZEZpbGVUeXBlUmVhZGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAg
ICAgICB0eXBlcy5hZGQoRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGZpbGVuYW1lKSk7CiAgICAg
fQogCi0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKICAg
ICB7CiAgICAgICAgIHR5cGVzLmFkZCh0eXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKaW5kZXggZmExNDY3ZGI4ZWQ4NzM3NDdjMDQ0NzNiMTRjNjg5YWQ3YjcwYTEzZC4uYzVl
OWUyNmIzNzJhZTY4M2YxODY4ZTkyMGM0NWVkNzBlZGY1NTQ3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcApAQCAtNDEyNSw3ICs0MTI1LDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBF
ZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAg
cmV0dXJuIHsgfTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBW
ZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAg
ICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KGVs
ZW1lbnQsIGFkZGl0aW9uYWxUeXBlcywgYWRkaXRpb25hbERhdGEpOwogI2VuZGlmCkBAIC00MTMz
LDcgKzQxMzMsNyBAQCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIEVkaXRvcjo6cHJvbWlzZWRBdHRh
Y2htZW50SW5mbyhFbGVtZW50JiBlbGVtZW50KQogICAgIHJldHVybiB7IGF0dGFjaG1lbnQtPnVu
aXF1ZUlkZW50aWZpZXIoKSwgV1RGTW92ZShhZGRpdGlvbmFsVHlwZXMpLCBXVEZNb3ZlKGFkZGl0
aW9uYWxEYXRhKSB9OwogfQogCi12b2lkIEVkaXRvcjo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0
YSkKK3ZvaWQgRWRpdG9yOjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBw
cmVmZXJyZWRGaWxlTmFtZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsK
ICAgICBpZiAoYXV0byogY2xpZW50ID0gdGhpcy0+Y2xpZW50KCkpCiAgICAgICAgIGNsaWVudC0+
cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihpZGVudGlmaWVyLCBjb250ZW50VHlwZSwgcHJl
ZmVycmVkRmlsZU5hbWUsIFdURk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5k
ZXggZjVmY2RjY2I2NjY1ODIwMjM4NTIwZTYzMjM1MWM5ZmZhMmFiOWFhOC4uMWQwNzE2YzViOTNj
OGJiN2FkNzNmNDE3NGNhODA0NTkwNWY5MTkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBA
IC01OCw3ICs1OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXI7CiBjbGFzcyBBcmNoaXZlUmVzb3VyY2U7CiBjbGFzcyBDb21wb3NpdGVFZGl0
Q29tbWFuZDsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBDdXN0b21VbmRvU3RlcDsKIGNsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERl
bGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CkBAIC03NSw3ICs3NSw3IEBAIGNsYXNzIEtpbGxSaW5nOwog
Y2xhc3MgUGFzdGVib2FyZDsKIGNsYXNzIFBhc3RlYm9hcmRXcml0ZXJEYXRhOwogY2xhc3MgUmVu
ZGVyTGF5ZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogY2xhc3MgRm9udDsKIGNsYXNzIFNwZWxsQ2hlY2tSZXF1ZXN0OwogY2xhc3MgU3BlbGxD
aGVja2VyOwpAQCAtNTM3LDcgKzUzNyw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBsYWNl
Tm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAjZW5kaWYKIAogICAgIGJvb2wg
Y2FuQ29weUV4Y2x1ZGluZ1N0YW5kYWxvbmVJbWFnZXMoKSBjb25zdDsKQEAgLTU2NCw3ICs1NjQs
NyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5h
bWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2ht
ZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBj
b25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGZpbGVE
YXRhKTsKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxl
TmFtZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZmlsZURhdGEpOwogICAgIHZvaWQg
cmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKTsK
ICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CiAgICAgdm9p
ZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwpAQCAtNTc0LDcg
KzU3NCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFByb21pc2VkQXR0YWNobWVu
dEluZm8gcHJvbWlzZWRBdHRhY2htZW50SW5mbyhFbGVtZW50Jik7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVt
ZW50JiwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiYgb3V0RGF0YSk7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXNBbmRE
YXRhRm9yQXR0YWNobWVudChFbGVtZW50JiwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0
b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsKICNlbmRpZgogI2VuZGlmCiAKQEAg
LTYxOSwxMiArNjE5LDEyIEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4gYWRqdXN0ZWRTZWxlY3Rpb25SYW5nZSgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1h
dCgpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1h
dCgpOwogICAgIFN0cmluZyBzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKTsKLSAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYpOwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQm
KTsKICAgICBzdGF0aWMgU3RyaW5nIHVzZXJWaXNpYmxlU3RyaW5nKGNvbnN0IFVSTCYpOwotICAg
IHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdChO
U0F0dHJpYnV0ZWRTdHJpbmcgKik7Ci0gICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmlu
ZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5T
QXR0cmlidXRlZFN0cmluZyAqKTsKICNlbmRpZgogICAgIHZvaWQgcGxhdGZvcm1Gb250QXR0cmli
dXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0ZXMmLCBjb25zdCBSZW5kZXJTdHlsZSYp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNo
bWVudERhdGEuaAppbmRleCAzOWMzYjFmYTNkODU2ZjhkODQ5YzY5MzMxZDg5ZTk5OGY3ZTc2MjNi
Li5mMzAyODIzNTY5MDA2ZjVjZjlkYmI0ZWZjMzczZTY3ZWYwNWYxOWE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKQEAgLTMzLDEy
ICszMywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBTZXJpYWxpemVkQXR0YWNo
bWVudERhdGEgewogICAgIFN0cmluZyBpZGVudGlmaWVyOwogICAgIFN0cmluZyBtaW1lVHlwZTsK
LSAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBkYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvV2ViQ29udGVudFJlYWRlci5oCmluZGV4IDA4YWExMjQyNjYyMGY3Njk1M2E3OWIzNGVk
ZTVmNmRmMDUyN2IwMTUuLjk1N2I0ZmQ0YTU1N2ZjODFjZDMwNjllZWFjYjg5NDg4YTk0N2I3Y2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCkBAIC03MiwxNiAr
NzIsMTYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBQ
cmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUgPSB7IH0pIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEZpbGVQYXRo
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEhUTUwoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNl
bnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZEltYWdlKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNp
emUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBy
ZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwogICAgIGJv
b2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAg
IGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWREYXRh
QnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBu
YW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92
ZXJyaWRlOworICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJl
ZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CiAjZW5kaWYKIH07CiAKQEAg
LTk5LDE2ICs5OSwxNiBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVhZEZpbGVQYXRoKGNvbnN0IFN0
cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYgPSB7IH0pIG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+Jikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHJlYWRIVE1M
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZEltYWdlKFJlZjxTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCByZWFkSW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkUGxhaW5U
ZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVy
Jikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
LSAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFk
RGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBQ
cmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgcmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAg
IGJvb2wgcmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJv
b2wgcmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCBy
ZWFkRGF0YUJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9X
ZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9X
ZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCmluZGV4IDU0OWViN2QyZTRjMDc1NDhlNGE4
YzllYTI0ZWMyMGU0ZjIxYmZhMjUuLjExN2RiYTY4ZWRiMGJkNGI2YzMwZTA5NDg1ZDlkMGMwZjI5
YzM4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9h
cmRGaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0
ZWJvYXJkRmlsZVJlYWRlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdm9pZCBXZWJDb3JlUGFzdGVi
b2FyZEZpbGVSZWFkZXI6OnJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAg
IGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgZmlsZW5hbWUpKTsKIH0K
IAotdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK3ZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoY29u
dGV4dC5nZXQoKSwgQmxvYjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGJ1ZmZlci0+ZXh0cmFjdERh
dGEoKSwgdHlwZSksIGZpbGVuYW1lKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAppbmRleCA1YzUyOWRkN2M4ZWNjMDAw
NDhmY2I0ZDE1ODE0NjM1YjI0ZDkwYmI3Li45ZDgxNjA1ZjE5OTI5OGYxOWMwZWQ2OTk1ZmUzYmQ3
NzgzMDM0ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0
ZWJvYXJkRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBh
c3RlYm9hcmRGaWxlUmVhZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IFdlYkNvcmVQYXN0
ZWJvYXJkRmlsZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICB+V2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCk7CiAKICAgICB2b2lkIHJlYWRGaWxlbmFtZShjb25z
dCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAg
ICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBSZWZQdHI8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29udGV4dDsKICAgICBWZWN0b3I8UmVmPEZpbGU+PiBm
aWxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4
IGQwYzkzMzEwMGM2NTVmMWZhODUyNTI3ODgxODcwNDk5YzJmNjFmZTMuLmE4NWI3YWE3NTI2YjJm
N2M1MWEzZjVjNDY3YmViMzUwZTk5MTRhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtNzEsMTIgKzcxLDEyIEBAIHZvaWQgRWRpdG9yOjpwbGF0
Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGb250QXR0cmlidXRlcyYgYXR0cmli
dXRlcywKICAgICAgICAgYXR0cmlidXRlcy5mb250ID0gKF9fYnJpZGdlIGlkKWN0Rm9udDsKIH0K
IAotc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFGb3JB
dHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykKK3N0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5n
KE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykKIHsKICAgICBpZiAoIWF0dHJp
YnV0ZWRTdHJpbmcubGVuZ3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZl
ZERhdGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGlu
ZzpZRVMgZXJyb3I6bnVsbHB0cl0pOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShb
TlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJp
bmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7CiB9CiAKIFN0cmlu
ZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1hdCgpCkBAIC04Nyw3ICs4Nyw3IEBAIFN0cmlu
ZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1hdCgpCiAKICNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQogCi12b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0
dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0
b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKK3ZvaWQgRWRpdG9y
OjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50
LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4m
IG91dERhdGEpCiB7CiAgICAgYXV0byBlbGVtZW50UmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdO
b2RlKGVsZW1lbnQpOwogICAgIGNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShlbGVt
ZW50UmFuZ2UsIG91dFR5cGVzLCBvdXREYXRhKTsKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBFZGl0
b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1l
bnQsIFZlY3RvcjxTdHIKICAgICAgICAgaWYgKGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZSgqZWxlbWVudFJhbmdlKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gZGF0YSA9
IGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgb3V0
VHlwZXMuYXBwZW5kKFdlYkFyY2hpdmVQYm9hcmRUeXBlKTsKLSAgICAgICAgICAgICAgICBvdXRE
YXRhLmFwcGVuZChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkpOwor
ICAgICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
Z2V0KCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE1MSwxMiArMTUx
LDEyIEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvbihQYXN0ZWJvYXJkV3JpdGVyRGF0YSYg
cGFzdGVib2FyZFdyaXRlckRhdGEpCiAgICAgcGFzdGVib2FyZFdyaXRlckRhdGEuc2V0V2ViQ29u
dGVudChXVEZNb3ZlKHdlYkNvbnRlbnQpKTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKK1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCkKIHsKICAgICBh
dXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKG1fZG9j
dW1lbnQuZnJhbWUoKSk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJh
d0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCiAvLyBG
SVhNRTogTWFrZXMgbm8gc2Vuc2UgdGhhdCBzZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIgYWx3
YXlzIGluY2x1ZGVzIGFsdCB0ZXh0LCBidXQgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCBk
b2VzIG5vdC4KQEAgLTIwMSwyNyArMjAxLDI3IEBAIFN0cmluZyBFZGl0b3I6OnVzZXJWaXNpYmxl
U3RyaW5nKGNvbnN0IFVSTCYgdXJsKQogICAgIHJldHVybiBXVEY6OnVzZXJWaXNpYmxlU3RyaW5n
KHVybCk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJ
blJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCitSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBFZGl0b3I6OmRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcp
CiB7CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICghbGVu
Z3RoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmlu
ZyBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVz
OkB7IH1dKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZERnJv
bVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsK
ICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0
KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9y
OjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgTlNV
SW50ZWdlciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9tUmFu
Z2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VS
YW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggM2M1ZTU0MzI1YjlmZTIzNTY3
ZWU0MmRlOTlmOWI1YjE1YzQyYjEwMC4uMDc4MjQ4MzYyYWEwNTRkYzNhYjAwMDA0NTE3MTg0MTk4
YTU4MGY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29u
dmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRl
ci5tbQpAQCAtMjMyMiw3ICsyMzIyLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVy
PiBmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExvYWRlciogZGF0YVNvdXJjZSwgTlMKIHN0YXRp
YyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JFbGVtZW50KEhUTUxJbWFn
ZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9
IGVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkgewotICAgICAgICBpZiAoU2hhcmVkQnVmZmVyKiBzaGFy
ZWRCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKKyAgICAgICAgaWYgKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJj
ZUJ1ZmZlcigpKQogICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFs
bG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCBh
ZGE2NmQyYWMyOTYzMDVkNjBjNjMxNzM2NzMwOTgxNjc5ZjlmMGZhLi43NmIxYTAwOWRlNDMwZmEz
YjU0ZDlhMTVlNjc4Y2Q4M2YzMTQ1ZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjQ1LDcgKzI0NSw3IEBA
IHN0YXRpYyBib29sIHN1cHBvcnRzQ2xpZW50U2lkZUF0dGFjaG1lbnREYXRhKGNvbnN0IEZyYW1l
JiBmcmFtZSkKIAogI2VuZGlmCiAKLXN0YXRpYyBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRl
RnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZG9jdW1l
bnQsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFNpemUpCitzdGF0aWMgUmVmPERvY3VtZW50RnJh
Z21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFtZSwgRG9j
dW1lbnQmIGRvY3VtZW50LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkU2l6ZSkK
IHsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIGF1dG8gYXR0YWNobWVudCA9
IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywg
ZG9jdW1lbnQpOwpAQCAtMjg1LDcgKzI4NSw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29u
dGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAg
ICAgc3RydWN0IEF0dGFjaG1lbnRJbnNlcnRpb25JbmZvIHsKICAgICAgICAgU3RyaW5nIGZpbGVO
YW1lOwogICAgICAgICBTdHJpbmcgY29udGVudFR5cGU7Ci0gICAgICAgIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhOwogICAg
ICAgICBSZWY8RWxlbWVudD4gb3JpZ2luYWxFbGVtZW50OwogICAgIH07CiAKQEAgLTQyOCw3ICs0
MjgsNyBAQCBzdHJ1Y3QgTWFya3VwQW5kQXJjaGl2ZSB7CiAgICAgUmVmPEFyY2hpdmU+IGFyY2hp
dmU7CiB9OwogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0
TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgc3RkOjpmdW5jdGlv
bjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25z
dCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQogewogICAgIGF1dG8gYXJjaGl2ZSA9
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShVUkwoKSwgYnVmZmVyKTsKICAgICBpZiAoIWFyY2hp
dmUpCkBAIC00OTcsNyArNDk3LDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhB
cmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICByZXR1
cm4gc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50KFdURk1vdmUoZnJhZ21lbnQp
LCAqc3RhZ2luZ0RvY3VtZW50LCBtc29MaXN0UXVpcmtzLCBtYXJrdXBBbmRBcmNoaXZlLm1hcmt1
cCk7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5w
cmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC01MzIsNyArNTMyLDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpy
ZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1l
bnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjEyLDcgKzYxMiw3IEBAIGJvb2wgV2Vi
Q29udGVudE1hcmt1cFJlYWRlcjo6cmVhZEhUTUwoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAg
cmV0dXJuICFtYXJrdXAuaXNFbXB0eSgpOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJl
YWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
UlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNl
dHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjI2LDcgKzYyNiw3IEBAIGJvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYzOSw3ICs2MzksNyBAQCBib29sIFdlYkNvbnRlbnRN
YXJrdXBSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBl
Rm9ySW1hZ2VzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY1Myw3ICs2NTMsNyBAQCBi
b29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURihT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJU
RihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1
bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NzYsNyArNjc2LDcgQEAgYm9vbCBX
ZWJDb250ZW50UmVhZGVyOjpyZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6
ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
SW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAg
ICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUu
ZG9jdW1lbnQoKTsKQEAgLTc0Niw3ICs3NDYsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKICAgICByZXR1cm4gYXR0YWNobWVudDsKIH0KIAotc3RhdGljIFJlZjxIVE1MRWxl
bWVudD4gYXR0YWNobWVudEZvckRhdGEoRnJhbWUmIGZyYW1lLCBTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50
YXRpb25TaXplIHByZWZlcnJlZFNpemUpCitzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2ht
ZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRp
b25TaXplIHByZWZlcnJlZFNpemUpCiB7CiAgICAgUmVmIGRvY3VtZW50ID0gKmZyYW1lLmRvY3Vt
ZW50KCk7CiAgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVh
dGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1bWVudCk7CkBAIC04MzMsNyArODMzLDcg
QEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHRpdGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFk
ZXI6OnJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50
YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcihGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCiB7CiAg
ICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKaW5kZXgg
NjA0ODZlNzFhZDU5ZmVjYzcxNWZmMGEwOWIxYzM1NThiN2IzNDJjMi4uZDNlOTgxOWJkNTMxZjg0
ODZhMzE3YWI5ZjllZDgzYTk4ODViZTJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBX
ZWJDb250ZW50UmVhZGVyOjpyZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6
ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
SW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAg
ICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUu
ZG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCA1
ZjhiYzM0NzdjMWNhMjFiMGM3MjI3MjI3YWFmMmRhNGIxOTJiZDFhLi4yZDE5YjljN2MyMmIzZWJj
MjY3YzY3NjEwNmM4OTJmMDliNzc3NTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRp
dG9yTWFjLm1tCkBAIC0xNjYsMTUgKzE2NiwxNSBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVG
cm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQog
ICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0cmluZygpKTsKIH0KIAotUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3Jt
YXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpp
bWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQpCiB7CiAgICAgYXV0
byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGltYWdlRWxlbWVudCk7CiAgICAg
aWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigp
LmdldCgpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0
YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIC8vIEZJ
WE1FOiBUaGUgaW50ZXJmYWNlIHRvIHRoaXMgZnVuY3Rpb24gaXMgYXdrd2FyZC4gV2UnZCBwcm9i
YWJseSBiZSBiZXR0ZXIgb2ZmIHdpdGggdGhyZWUgc2VwYXJhdGUgZnVuY3Rpb25zLiBBcyBvZiB0
aGlzIHdyaXRpbmcsIHRoaXMgaXMgb25seSB1c2VkIGluIFdlYktpdDIgdG8gaW1wbGVtZW50IHRo
ZSBtZXRob2QgLVtXS1ZpZXcgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQ6dHlwZXM6XSwgd2hp
Y2ggaXMgb25seSB1c2VkIHRvIHN1cHBvcnQgT1MgWCBzZXJ2aWNlcy4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Js
b2IuaAppbmRleCA0NWQ5MzNlMTNjYTRkMjI1MWM1ZGVkODQ4YWE5ZTk4NzJjNzY3NDg5Li5iY2E2
Njk2ZWJlNmYwZWRkZGRlZTc5YjczYzNlZTE0NDk2ZDgyZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
aApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBCbG9iTG9hZGVyOwogY2xhc3MgRGVmZXJyZWRQcm9t
aXNlOwogY2xhc3MgUmVhZGFibGVTdHJlYW07CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
dGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEV4Y2VwdGlvbk9yOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAppbmRleCA1NTllYmNjNDhjNWYwOTZhYzE5YmFl
N2Q5ZjcxOGI3MWYyYTM1MzIyLi40MmY0MTgwZGZhODQyN2UwZTYwZjgxZWI3OWIxOTE4N2NhZmRi
YTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKQEAg
LTk0LDcgKzk0LDcgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVzc2FnZXMoKQog
ICAgICAgICBib29sIHNob3VsZFN0b3BQcm9jZXNzaW5nID0gZmFsc2U7CiAgICAgICAgIHN3aXRj
aE9uKG1fcXVldWUuZmlyc3QoKSwgW3RoaXNdKGNvbnN0IENTdHJpbmcmIHV0ZjgpIHsKICAgICAg
ICAgICAgIG1fd3JpdGVTdHJpbmcodXRmOCk7Ci0gICAgICAgIH0sIFt0aGlzXShSZWY8U2hhcmVk
QnVmZmVyPiYgZGF0YSkgeworICAgICAgICB9LCBbdGhpc10oUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiBkYXRhKSB7CiAgICAgICAgICAgICBkYXRhLT5mb3JFYWNoU2VnbWVudChtX3dyaXRl
UmF3RGF0YSk7CiAgICAgICAgIH0sIFt0aGlzLCAmc2hvdWxkU3RvcFByb2Nlc3NpbmddKFVuaXF1
ZVJlZjxCbG9iTG9hZGVyPiYgbG9hZGVyKSB7CiAgICAgICAgICAgICBhdXRvIGVycm9yQ29kZSA9
IGxvYWRlci0+ZXJyb3JDb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L05ldHdvcmtTZW5kUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRR
dWV1ZS5oCmluZGV4IDU1MWY3MGY5MTY3YjJiZmNiMjQ0YmIyYjM3MDBiZmJhYWY1NDc5NmMuLmQy
M2NmZWJiNDUwOGJjMzAwOTE1YmI5OTZkM2YxNTA2MmNlMzUwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQmxvYjsKIGNsYXNzIEJsb2JMb2FkZXI7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VY
UE9SVCBOZXR3b3JrU2VuZFF1ZXVlIDogcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
IHsKIHB1YmxpYzoKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lk
IHByb2Nlc3NNZXNzYWdlcygpOwogCi0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxD
U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPiwgVW5pcXVlUmVmPEJsb2JMb2FkZXI+PjsKKyAgICB1
c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PENTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiwgVW5pcXVlUmVmPEJsb2JMb2FkZXI+PjsKICAgICBEZXF1ZTxNZXNzYWdlPiBtX3F1
ZXVlOwogCiAgICAgV3JpdGVTdHJpbmcgbV93cml0ZVN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggMTAxNmRjZjNjMTk5ZTU0Y2E4MTRj
MjY0NWE5YTg1OThhNWMxZDM1ZS4uNzUyMzAxN2JhNzI5NDA1NjNiNzVmNDY2YTY4ZWQxY2NiM2Rl
ZThiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAK
QEAgLTI3Niw5ICsyNzYsOSBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpwYXJz
ZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExpbmUpCiAgICAgYXBwZW5kRW50
cnkoZmlsZW5hbWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUsIHJlc3Vs
dC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKHJlc3Vs
dC5tb2RpZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBs
YXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKK3N0YXRpYyBpbmxpbmUg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0
dGluZ3MmIHNldHRpbmdzKQogewotICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBs
YXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKICAgICBp
ZiAoYnVmZmVyKQogICAgICAgICBMT0coRlRQLCAiTG9hZGVkIEZUUERpcmVjdG9yeVRlbXBsYXRl
IG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gYnVmZmVyOwpA
QCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNlCiAgICAgCiBib29sIEZU
UERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiB7Ci0gICAg
c3RhdGljIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3Jl
YXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigp
OworICAgIHN0YXRpYyBTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRl
VGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOwog
ICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHN0b3JpbmcgdGhlIGRhdGEsIGl0IHdvdWxkIGJlIG1v
cmUgZWZmaWNpZW50IGlmIHdlIGNvdWxkIHBhcnNlIHRoZSB0ZW1wbGF0ZSBkYXRhIGludG8gdGhl
CiAgICAgLy8gdGVtcGxhdGUgRG9jdW1lbnQgb25jZSwgc3RvcmUgdGhhdCBkb2N1bWVudCwgdGhl
biAiY29weSIgaXQgd2hlbmV2ZXIgd2UgZ2V0IGFuIEZUUCBkaXJlY3RvcnkgbGlzdGluZy4KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAppbmRl
eCA1NmEwNmZjYWYyNzNkMjVkYzRjNzVkY2U1NjlhYWM4ZjFhYTU5NTI3Li5kMmI4NzQxYTA0NDM0
MmM3ZmZkOWU4YTUzM2NjOGExMjBlMjliYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgc3RhdGljIGJvb2wg
bWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VBdHRhY2htZW50KGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCiAgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZShtaW1lVHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlwZShtaW1l
VHlwZSk7CiB9CiAKLXZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJ
bWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQordm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0lt
YWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGF1dG8qIGhvc3RFbGVtZW50ID0gc2hhZG93SG9z
dCgpOwogICAgIGlmICghaXM8SFRNTEltYWdlRWxlbWVudD4oaG9zdEVsZW1lbnQpIHx8ICFidWZm
ZXItPnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1l
bnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5o
CmluZGV4IDU3M2VjMmVhZTFjZGMwNjA5ZjI2MWMzODQwMGJiMDJjNDgwZjdiZGQuLjY2MWRlYzkz
NzZkOGE5ZDZkNDcxN2ZkMGI0Y2U3ZjgyZmYwM2Y3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBGaWxlOwog
Y2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIFJlbmRlckF0dGFjaG1lbnQ7CiBjbGFzcyBT
aGFyZWFibGVCaXRtYXA7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1lbnQgZmluYWwgOiBwdWJsaWMg
SFRNTEVsZW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSFRNTEF0dGFjaG1lbnRF
bGVtZW50KTsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29weU5vbkF0dHJp
YnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JikgZmluYWw7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUF0dHJpYnV0ZXMoc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4mJiBuZXdGaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50VHlwZSwgY29uc3QgU3Ry
aW5nJiBuZXdGaWxlbmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVFbmNsb3Np
bmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVFbmNsb3NpbmdJbWFn
ZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGRhdGEpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVGh1bWJuYWls
KGNvbnN0IFJlZlB0cjxJbWFnZT4mIHRodW1ibmFpbCk7CiAKICAgICBJbnNlcnRlZEludG9BbmNl
c3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJO
b2RlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRl
eCA1MTcxYjljZGM3ODkzMTcxZTIxZTVmNGJmNTUwMTdlZjk0NGFjNzk1Li4xYTU2YmMwMzU5Y2Nl
MWY1MGRjZGRhMDY1MjIyYTAxMDk1YTY5MDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKQEAgLTI5MzgsNyArMjkzOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6Y2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpCiAgICAgYXR0
ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpOwogfQogCi12b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29u
c3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25E
YXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIG1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25E
YXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0YS0+dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDY5NTY2
OTQ5NjMxMGVmOTEwOGI5NTZmZGE0ODIxNDMwMTQ5NzBlY2IuLjZjM2I2OTNiN2IxMGVkYTMwZTUx
ZDRjNjYzMWJlM2ZiNTBjYmY4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCkBAIC03MjAsNyArNzIwLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENETUNsaWVudAogICAg
IHZvaWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpIGZpbmFs
OwotICAgIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZl
ZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGNk
bUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5n
JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDQ0MmQwOTQ2YmUyNTBkY2Nm
NTkyN2JhYTkyNzkzYTcwZWU5MTkzM2UuLjAwZDhmMjM5ZDcxMjdjNjFjYWUxYjU4ZDljNGEzMDNh
OWIzYzkwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAtMTQxLDcg
KzE0MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6dXBkYXRlRHVyaW5nUGFyc2luZygpCiAgICAg
aWYgKCFtX2ltYWdlRWxlbWVudCkKICAgICAgICAgY3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKTsK
IAotICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBsb2FkZXIoKS0+bWFpblJl
c291cmNlRGF0YSgpKQorICAgIGlmIChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSkKICAgICAgICAgbV9pbWFnZUVsZW1l
bnQtPmNhY2hlZEltYWdlKCktPnVwZGF0ZUJ1ZmZlcigqYnVmZmVyKTsKIAogICAgIGltYWdlVXBk
YXRlZCgpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6ZmluaXNoZWRQ
YXJzaW5nKCkKIHsKICAgICBpZiAoIXBhcnNlcigpLT5pc1N0b3BwZWQoKSAmJiBtX2ltYWdlRWxl
bWVudCkgewogICAgICAgICBDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UgPSAqbV9pbWFnZUVsZW1l
bnQtPmNhY2hlZEltYWdlKCk7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBs
b2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gZGF0YSA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAKICAgICAg
ICAgLy8gSWYgdGhpcyBpcyBhIG11bHRpcGFydCBpbWFnZSwgbWFrZSBhIGNvcHkgb2YgdGhlIGN1
cnJlbnQgcGFydCwgc2luY2UgdGhlIHJlc291cmNlIGRhdGEKICAgICAgICAgLy8gd2lsbCBiZSBv
dmVyd3JpdHRlbiBieSB0aGUgbmV4dCBwYXJ0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBhN2NhNzE2MmQ3OTFl
ZDdmYmE4Y2M5MWMyMWEyY2YzYWY2ZTY5YTdlLi4xODc5M2ZmMDY2MzM4ZmI2MGEzNGRlYzkwOWJj
MmRkZDI4YmVhZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtODUwLDcgKzg1MCw3IEBAIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiBpbnN0cnVtCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVxdWVzdChsb2Fk
ZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29y
a0FnZW50LT5pbnRlcmNlcHRSZXNwb25zZShyZXNwb25zZSwgaWRlbnRpZmllciwgV1RGTW92ZSho
YW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgKaW5kZXggOGU2NWM0ZWIxMDIzMzUyMWY0OGM3ZjRiMTIwYWQyYzg5MDlh
MDdiYS4uZDI5NTc4MTBkODM4MmM5MzUxZDVhOTNmMTQ0YWVkMTQ5M2JjYzY1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApA
QCAtOTMsNyArOTMsNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU2hhZG93Um9vdDsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFz
cyBUaW1lckJhc2U7CiBjbGFzcyBXZWJLaXROYW1lZEZsb3c7CiBjbGFzcyBXZWJTb2NrZXRDaGFu
bmVsOwpAQCAtMjM2LDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJ
bnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChS
ZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYp
OwotICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4p
PiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPik+JiYpOwogCiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29s
ZShQYWdlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKICAg
ICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKQEAgLTQ0
MSw3ICs0NDEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJl
cXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsK
ICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRl
cmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXImLCBG
dW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9p
ZCBpbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7
CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VU
b0NvbnNvbGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4pOwogCkBAIC0xMjg5LDcgKzEyODksNyBAQCBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2Fk
ZXImIGxvYWRlciwgRgogICAgICAgICBpbnRlcmNlcHRSZXF1ZXN0SW1wbCgqYWdlbnRzLCBsb2Fk
ZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQo
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFtZSwg
cmVzcG9uc2UpKTsKICAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50cyhm
cmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCmluZGV4IDYxZTRiYzNiYTAxOWVlMjVlNWM4YmMy
MjFkZmY2MDc3ZWRkYjg2M2QuLmYwNjQwM2E2MjM0YjQyYjZhZDJhODBiMDE5NGE1OTZkODlmNmU2
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25XZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoUmVzb3Vy
Y2VMb2FkZXImIGxvCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1
ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiBm
cmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK3ZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0
IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhh
bmRsZXIpCiB7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25z
ZShmcmFtZSwgcmVzcG9uc2UsIGlkZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdC5oCmluZGV4IGY3NjExNGNlOThmNDJhN2ZmOTA2YTQ4ZDA0MjBiOTYzMDVkMzY5
MTQuLjA3YjQyMWI1OWMxNTU1ZTFhMjkxZTE4ZWJiMjYyMjEyMmYxNjU4YjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0LmgKQEAgLTM2LDIwICszNiwyMCBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIFJlc291cmNl
TG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNs
YXNzIFdFQkNPUkVfRVhQT1JUIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSos
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2Vw
dFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0
YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lk
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRS
ZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJj
ZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogcHJpdmF0
ZToKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoY29uc3Qg
RnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJ
bnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNvdXJj
ZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwotICAg
IHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVy
Pik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3Qg
RnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIH07CiAKIGlubGluZSBib29sIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFt
ZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTc2LDcgKzc2LDcg
QEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRS
ZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2EKICAgICBpbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwo
bG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSogZnJhbWUs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCitpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1l
KiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50
ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAgaW50ZXJjZXB0UmVzcG9uc2VJ
bnRlcm5hbCgqZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
CmluZGV4IDhhNjE1MDQzOTEwOTlmZmUyZTRhMDZlNzQ4OTZlZjg4OGVkMDQ2MDMuLmYzMmY2NjBi
OTE3M2JhZThkNWNkOWExMzBlYWU1OGI5N2Q1ZWNlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMjY5LDcgKzI2OSw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBDYWNoZWRSZXNvCiAgICAgcmVzb3VyY2VEYXRhLT5zZXRDYWNoZWRSZXNv
dXJjZShjYWNoZWRSZXNvdXJjZSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmFk
ZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKQordm9p
ZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKQogewogICAgIFJlc291cmNlRGF0YSogcmVz
b3VyY2VEYXRhID0gcmVzb3VyY2VEYXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJZCk7CiAgICAgaWYg
KCFyZXNvdXJjZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5oCmluZGV4IGQ3NGVlMTA5MzNkN2VlNGU1ZjdlZjliN2M0MDkwOWZlOTdkMDdj
OWQuLmVlMzk0NTdmNzY3MmVhY2FhYzkwYTViNmJjODgxMTA4Y2JkYThhODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC00MSw3ICs0
MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVm
ZmVyQnVpbGRlcjsKIAogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewpAQCAtOTAsOCArOTAs
OCBAQCBwdWJsaWM6CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVy
KCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVyLmNvcHlSZWYoKTsgfQogICAgICAgICB2b2lkIHNl
dERlY29kZXIoUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+JiYgZGVjb2RlcikgeyBtX2RlY29k
ZXIgPSBXVEZNb3ZlKGRlY29kZXIpOyB9CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuY29weVJlZigpOyB9Ci0gICAgICAgIHZv
aWQgc2V0QnVmZmVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fYnVmZmVyID0g
V1RGTW92ZShidWZmZXIpOyB9CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5jb3B5UmVmKCk7IH0KKyAgICAgICAg
dm9pZCBzZXRCdWZmZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7
IG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOyB9CiAKICAgICAgICAgY29uc3Qgc3RkOjpvcHRp
b25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBt
X2NlcnRpZmljYXRlSW5mbzsgfQogICAgICAgICB2b2lkIHNldENlcnRpZmljYXRlSW5mbyhjb25z
dCBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmljYXRlSW5mbykgeyBtX2Nl
cnRpZmljYXRlSW5mbyA9IGNlcnRpZmljYXRlSW5mbzsgfQpAQCAtMTIyLDcgKzEyMiw3IEBAIHB1
YmxpYzoKICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVz
b3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CiAgICAgICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJC
dWlsZGVyPiBtX2RhdGFCdWZmZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVm
ZmVyOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsK
ICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fY2FjaGVkUmVzb3VyY2UgeyBudWxscHRyIH07CiAg
ICAgICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIG1fdHlwZSB7IEluc3BlY3Rv
clBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSB9OwpAQCAtMTQ2LDcgKzE0Niw3IEBAIHB1YmxpYzoK
ICAgICBSZXNvdXJjZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAg
ICAgdm9pZCBtYXliZURlY29kZURhdGFUb0NvbnRlbnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQp
OwogICAgIHZvaWQgYWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIENh
Y2hlZFJlc291cmNlKik7Ci0gICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lKTsKKyAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKICAgICBSZXNvdXJjZURhdGEgY29uc3QqIGRh
dGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0
YUZvclVSTChjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVtb3ZlQ2Fj
aGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCBkMTVj
YjRiODUxNzg2N2MzNDhjMTc5NzRmMjcxNTc0NjU1OWRhNDUwLi4xODlmMjZiMDk4YjczNjFkY2Y4
ZTlkNjRlMzU5ZTc1ZmQ5YzA5NzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xMTQwLDcgKzEx
NDAsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdChSZXNv
dXJjZUxvYWRlciYgbG9hZGVyLCBGdW5jdGlvbjx2bwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
LT5yZXF1ZXN0SW50ZXJjZXB0ZWQocmVxdWVzdElkLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVx
dWVzdChsb2FkZXIucmVxdWVzdCgpKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50
OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVy
KQordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEFTU0VSVCht
X2VuYWJsZWQpOwogICAgIEFTU0VSVChtX2ludGVyY2VwdGlvbkVuYWJsZWQpOwpAQCAtMTI0Myw3
ICsxMjQzLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29y
a0FnZW50OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UoY29uc3QKICAgICAgICAgb3ZlcnJpZGVSZXNw
b25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlLCBvdmVy
cmlkZVJlc3BvbnNlLm1pbWVUeXBlKCkpOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG92ZXJyaWRlRGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gb3Zl
cnJpZGVEYXRhOwogICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CiAgICAgICAgIGF1dG8gYnVmZmVy
ID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKQEAgLTEyNzEs
NyArMTI3MSw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zCiAgICAgaWYgKGxvYWRlci0+cmVh
Y2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJVbmFi
bGUgdG8gZnVsZmlsbCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfcyk7
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CiAgICAgICAgIGF1
dG8gYnVmZmVyID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5oCmluZGV4IDhmNmZiY2MyOTNhZWJmOGI5ZDVjOTQ1ZDI4MjlhMTUyN2I3NGJj
N2YuLjZiY2Q4N2RkY2Q4YjA0NDEzMDhkMWQwMWVjYTZiMGU2ZGExNDEzZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuaApAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICBib29sIHdpbGxJbnRlcmNlcHQo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4pPiYmKTsKKyAgICB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+
JiYpOwogICAgIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9u
PHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwogCiAgICAgdm9pZCBzZWFyY2hPdGhl
clJlcXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mLCBSZWY8SlNPTjo6
QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYpOwpAQCAt
MTg1LDcgKzE4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBl
bmRpbmdJbnRlcmNlcHRSZXNwb25zZSk7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIHB1YmxpYzoKLSAgICAgICAgUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIG9yaWdpbmFsUmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICAgICAgUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIG9yaWdpbmFsUmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgICAgICA6IG1fb3JpZ2luYWxSZXNwb25zZShvcmln
aW5hbFJlc3BvbnNlKQogICAgICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICB7IH0KQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgcmVzcG9uZChtX29yaWdpbmFsUmVzcG9uc2UsIG51bGxwdHIpOwog
ICAgICAgICB9CiAKLSAgICAgICAgdm9pZCByZXNwb25kKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhKQorICAgICAgICB2b2lkIHJlc3Bv
bmQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBkYXRhKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIW1fcmVzcG9u
ZGVkKTsKICAgICAgICAgICAgIGlmIChtX3Jlc3BvbmRlZCkKQEAgLTIxNSw3ICsyMTUsNyBAQCBw
cml2YXRlOgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBtX29yaWdp
bmFsUmVzcG9uc2U7Ci0gICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4gbV9jb21wbGV0aW9uSGFuZGxlcjsK
KyAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKICAg
ICAgICAgYm9vbCBtX3Jlc3BvbmRlZCB7IGZhbHNlIH07CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmlu
ZGV4IDVjZDk4ZjMzMjA4MjJiODEzMmQzN2UwMDNlZTQwYTg3ZTA2ZjMzNTQuLjFiNjQ2YWEyMTcz
YWI1NGEzZjFhYmRjYjUwMjA0YWRlOThjMDczYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEwMCwxMyAr
MTAwLDEzIEBAIHN0YXRpYyBib29sIGRlY29kZUJ1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIs
IHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFn
ZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5j
b2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwor
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghYnVmZmVy
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6
ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVz
dWx0KTsKIH0KIAotYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQo
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5n
TmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKK2Jvb2wgSW5zcGVj
dG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdp
dGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQogewogICAgIHJldHVybiBkYXRhQ29udGVu
dChidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1
ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVu
Y29kZSwgcmVzdWx0KTsKIH0KQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VB
Z2VudDo6cmVzb3VyY2VDb250ZW50KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IEZyYQogICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Zy
YWdtZW50SWRlbnRpZmllcih1cmwsIGxvYWRlci0+dXJsKCkpKSB7CiAgICAgICAgICpiYXNlNjRF
bmNvZGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCBiNTFhZGRiMWJkOGYyY2NlNjk1NjA3OTljZDFk
OTUyZDJkZTQyODM4Li4zZDVlNTY2ZGJlMGM1ZWMxMWQ5ZThkZjY3ZmNmMGE3MDk4OGEyZjhmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3Mg
SW5zcGVjdG9yT3ZlcmxheTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJPYmplY3Q7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJ
bnNwZWN0b3JQYWdlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJs
aWMgSW5zcGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShJbnNwZWN0b3JQYWdlQWdlbnQpOwpAQCAtNzUsNyArNzUsNyBAQCBwdWJs
aWM6CiAgICAgICAgIE90aGVyUmVzb3VyY2UsCiAgICAgfTsKIAotICAgIHN0YXRpYyBib29sIHNo
YXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsK
KyAgICBzdGF0aWMgYm9vbCBzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJh
c2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwogICAgIHN0YXRpYyBWZWN0b3I8Q2FjaGVkUmVz
b3VyY2UqPiBjYWNoZWRSZXNvdXJjZXNGb3JGcmFtZShGcmFtZSopOwogICAgIHN0YXRpYyB2b2lk
IHJlc291cmNlQ29udGVudChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIEZyYW1l
KiwgY29uc3QgVVJMJiwgU3RyaW5nKiByZXN1bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwogICAg
IHN0YXRpYyBTdHJpbmcgc291cmNlTWFwVVJMRm9yUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCA5NzRmMjJhMmRhN2Ew
MmM2NDg5YzFiNTBhNWEyMjBmZTQ0YjE5NjMwLi42YWU1MjY1OTdjZDI4NjMxYmU3OTUwZmMzMzUz
NmY4ZjM0N2Q3YWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZp
bHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBA
IC0yNzYsNyArMjc2LDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpoYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIEFTU0VSVCh3aWxs
SGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcikpOwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhIHsgbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXItPnJlcGxh
Y2VtZW50RGF0YSgpIH07CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxh
Y2VtZW50RGF0YSB7IG1fYmxvY2tpbmdDb250ZW50RmlsdGVyLT5yZXBsYWNlbWVudERhdGEoKSB9
OwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyBVUkwoKSwgInRleHQvaHRtbCJfcywg
c3RhdGljX2Nhc3Q8bG9uZyBsb25nPihyZXBsYWNlbWVudERhdGEtPnNpemUoKSksICJVVEYtOCJf
cyB9OwogICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhIHsgV1RGTW92ZShyZXBsYWNl
bWVudERhdGEpLCBlcnJvci5mYWlsaW5nVVJMKCksIHJlc3BvbnNlLCBTdWJzdGl0dXRlRGF0YTo6
U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4gfTsKICAgICBTZXRGb3JTY29wZTxib29s
PiBsb2FkaW5nQmxvY2tlZFBhZ2UgeyBtX2lzTG9hZGluZ0Jsb2NrZWRQYWdlLCB0cnVlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVj
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNr
ZXIuY3BwCmluZGV4IGQwOTYxYWZjN2I3ZTczZTYxN2U3ODA2YTY3YzZmZmQwOWYxNWNhOTMuLjk0
YzM2ZWY1MDdlZjAzN2I3MDdjOTBkMTlhN2ExYTc0NDViMWY3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCkBAIC0x
MzksNyArMTM5LDcgQEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxp
Z2h0KERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYgbG9hZGVyLAogICAgIFJlc291cmNlUmVxdWVz
dCBwcmVmbGlnaHRSZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJvbFByZWZsaWdodFJlcXVlc3Qo
cmVxdWVzdCwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksIGxvYWRlci5yZWZlcnJlcigpKTsKICAg
ICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0g
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IGxvYWRlci5kb2N1bWVudCgp
LmZyYW1lKCktPmxvYWRlcigpLmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocHJlZmxpZ2h0UmVx
dWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlh
bHMsIEZldGNoT3B0aW9ucyB7IH0sIHsgfSwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggNmZlYjhmNWFiZTViYTQ5
MjgwNmVhZTY1NTA1MjkxY2Q2ZmE3Nzg4MS4uM2I5MGVmNGM1ODI3ZTZjMGI0OWIzNDY1NmIzY2Q3
MWE4ZWRhOTY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBA
IC0yMTEsNyArMjExLDcgQEAgRG9jdW1lbnRMb2FkZXI6On5Eb2N1bWVudExvYWRlcigpCiAjZW5k
aWYKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJj
ZURhdGEoKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IERvY3VtZW50TG9h
ZGVyOjptYWluUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAobV9zdWJzdGl0dXRlRGF0
YS5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+
Y29weSgpOwpAQCAtMTY1Miw3ICsxNjUyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJB
cmNoaXZlUmVzb3VyY2VzKCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIu
c3RvcCgpOwogfQogCi1Db250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFy
c2VkQXJjaGl2ZURhdGEoKSBjb25zdAorU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFy
c2VkQXJjaGl2ZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNlZEFyY2hpdmVEYXRh
LmdldCgpOwogfQpAQCAtMTY3MSw3ICsxNjcxLDcgQEAgQXJjaGl2ZVJlc291cmNlKiBEb2N1bWVu
dExvYWRlcjo6YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogCiBS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlKCkgY29u
c3QKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gbWFpblJlc291cmNlRGF0YSgp
OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhID0gbWFpblJlc291cmNl
RGF0YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CiAgICAgYXV0byYgcmVzcG9uc2UgPSB0aGlzLT5yZXNwb25zZSgpOwpAQCAtMjI1NSw3
ICsyMjU1LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlw
YXJ0Q29udGVudCgpCiAKICAgICBmcmFtZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAg
ICBtX2NvbW1pdHRlZCA9IGZhbHNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNl
RGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwogICAgIGNvbW1pdExvYWQo
cmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6
ZSgpKTsKIH0KIApAQCAtMjI5Miw3ICsyMjkyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3Rh
cnRJY29uTG9hZGluZygpCiAgICAgbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZ2V0TG9hZERl
Y2lzaW9uRm9ySWNvbnMoaWNvbkRlY2lzaW9ucyk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6
OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBhdXRvIGljb24gPSBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbi50YWtlKGxvYWRJ
ZGVudGlmaWVyKTsKIApAQCAtMjMxMyw3ICsyMzEzLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRl
bnQKICAgICByYXdJY29uTG9hZGVyLT5zdGFydExvYWRpbmcoKTsKIH0KIAotdm9pZCBEb2N1bWVu
dExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiBsb2FkZXIsIFNoYXJlZEJ1
ZmZlciogYnVmZmVyKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbihJ
Y29uTG9hZGVyJiBsb2FkZXIsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAg
ICAvLyBJZiB0aGUgRG9jdW1lbnRMb2FkZXIgaGFzIGRldGFjaGVkIGZyb20gaXRzIGZyYW1lLCBh
bGwgaWNvbiBsb2FkcyBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY2FuY2VsbGVkLgogICAgIEFT
U0VSVChtX2ZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXgg
N2NmMzA1ZDcwNWQ0ODQ3MmZmYzg3NjZiZjExY2I2NGZmOGRkMmRhOC4uMzM5ODczZDVkM2ZiOWJi
MzAwNDk4Y2Q2ZjM3Y2JmNjViNzhhZjViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmgKQEAgLTc1LDcgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlv
bjsKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7
CiBjbGFzcyBDb250ZW50RmlsdGVyOwotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3Jt
U3RhdGU7CiBjbGFzcyBGcmFtZTsKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgSWNvbkxvYWRlcjsK
IGNsYXNzIFBhZ2U7CiBjbGFzcyBQcmV2aWV3Q29udmVydGVyOwogY2xhc3MgUmVzb3VyY2VMb2Fk
ZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
Y2xhc3MgU1dDbGllbnRDb25uZWN0aW9uOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiBjbGFz
cyBTdWJzdGl0dXRlUmVzb3VyY2U7CkBAIC0xNzIsNyArMTcyLDcgQEAgcHVibGljOgogCiAgICAg
V0VCQ09SRV9FWFBPUlQgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyKCkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgU3VicmVzb3VyY2VMb2FkZXIqIG1haW5SZXNvdXJjZUxvYWRlcigpIGNvbnN0
OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURh
dGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gbWFpblJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIAogICAgIERvY3VtZW50V3JpdGVy
JiB3cml0ZXIoKSBjb25zdCB7IHJldHVybiBtX3dyaXRlcjsgfQogCkBAIC0yMjksNyArMjI5LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNl
cyhBcmNoaXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBcmNoaXZlUmVzb3VyY2Uo
UmVmPEFyY2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVG
b3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRh
KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQo
UmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtMzkz
LDggKzM5Myw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBzdGFydEljb25Mb2FkaW5n
KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJv
b2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFNoYXJlZEJ1ZmZlciopPiYmKTsKLSAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oSWNv
bkxvYWRlciYsIFNoYXJlZEJ1ZmZlciopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkR2V0
TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYpOwor
ICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciopOwogCiAgICAgY29uc3QgVmVjdG9yPExpbmtJY29uPiYgbGlua0ljb25zKCkgY29u
c3QgeyByZXR1cm4gbV9saW5rSWNvbnM7IH0KIApAQCAtNjAzLDcgKzYwMyw3IEBAIHByaXZhdGU6
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+IG1fYXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShN
SFRNTCkKICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNoaXZlOwotICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5kaWYKIAogICAgIEhhc2hTZXQ8U3RyaW5n
PiBtX3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQ7CkBAIC02MjIsNyArNjIyLDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgeyBmYWxzZSB9OwogCiAg
ICAgSGFzaE1hcDx1aW50NjRfdCwgTGlua0ljb24+IG1faWNvbnNQZW5kaW5nTG9hZERlY2lzaW9u
OwotICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPEljb25Mb2FkZXI+LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciopPj4gbV9pY29uTG9hZGVyczsKKyAgICBIYXNoTWFwPHN0
ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKik+PiBtX2ljb25Mb2FkZXJzOwogICAgIFZlY3RvcjxMaW5rSWNvbj4g
bV9saW5rSWNvbnM7CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4
IGM3MDk2NDEwYTdhYTA1NGU1MWQ3MDQ0NWQ2NjM1MmYyODE0MDY4YTkuLjlhNGQ0YjIxMmZkZmQy
ODE4NDM3NmQ0YjcwYzdkYTRmM2ViN2M4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01OTUsNyArNTk1LDcgQEAgdm9p
ZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGltaW5nLm1hcmtTdGFydFRpbWUoKTsKIAog
ICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucy5zbmlmZkNvbnRlbnQgaXMgbm90
IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMuCi0gICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKICAg
ICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAg
ICAgYXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UmVzb3VyY2VMb2FkZXI+
KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDllOWYyOTQ2NzJmM2Q2MjI1MDNiMWU1NWIxNzk2ZjBj
YTFlY2ZhNzAuLmMwODc4NWFmOGZjOTI0ZTM1M2ZmZDQ4M2RmN2I5NWRhMjQ0M2FlODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yNzcsNyArMjc3LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmlu
YWwgeyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+
JiwgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KKyAg
ICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+Jikg
ZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRp
ZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDYzMDk5YjQ5ZmFkZjdiNzU0NzZiNzlh
YTdiMDE0NmUzMDc3NDY0NzMuLjU2NjEwODM4MDU2NjRlMDExOWYxMWZmYzMyZWE3ZTE5MjdmYzY1
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzEwMSw3ICszMTAx
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3Qm
JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRD
cmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiBkYXRhKQorUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3Jl
ZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMm
IG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJl
c291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAg
ICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFk
ZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgpLCBv
dXRnb2luZ1JlZmVycmVyKCkpOwpAQCAtMzE0OSw3ICszMTQ5LDcgQEAgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJl
c291cmNlUmUKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hl
SG9zdCgpLm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNl
LCBkYXRhKSkgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAgICAg
ICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRDcmVkZW50
aWFsUG9saWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwgcmVzcG9u
c2UsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyKCkt
PmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KG5l
d1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1lLCBuZXdS
ZXF1ZXN0LCByZXNwb25zZSwKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGluYXRp
b24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0
aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVz
dGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
CmluZGV4IGE1MmQ3ZjkxYzYyNjIxZmQzN2MxMGJmMGE5YTAxZmFmYjY4YjBjNjUuLjA4YTBhZTE5
YTM3OTg0NmYxNTc1NjRjMmQwYzgzMmIyNzQ4MzYwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5oCkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNsYXNz
IENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKLWNsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01X
cmFwcGVyV29ybGQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAt
MTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJM
RShNSFRNTCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvYWRBcmNoaXZlKFJlZjxBcmNoaXZl
PiYmKTsKICNlbmRpZgotICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xp
Y3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVy
cm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYg
ZGF0YSk7CisgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29u
c3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2NhdGlvbihjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHRhcmdldCwgRXZlbnQqLCBjb25zdCBSZWZlcnJlclBvbGljeSYsIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+ID0gc3RkOjpu
dWxsb3B0LCBjb25zdCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tKCks
IGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiA9IHsgfSwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlv
bihGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50KiA9IG51bGxwdHIsIHN0ZDo6b3B0aW9uYWw8UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA0ZmQ2MzdhOTAxNGE1ZDQxYTIyNmVlNDU5
MTdiNmIzZTlhNzkwZWJiLi5lZTlmM2QwYzk4NGQ0NTVjYmI5MWI0NjBjMWJjMTI4OThkMTIzNjUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtOTgsNyAr
OTgsNyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRl
RGF0YTsKIGNsYXNzIFdpZGdldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0xvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3ku
aAppbmRleCBhZWY2NjhiZDYzZWQ1ZmNkNDVlNjFlOWQxZjEwN2NmYjZhZWYyNjRiLi4yOWQyZTNm
NDYxNDBhYWE1MTE2MGU2YTI4NTYyZjM3MGUzNzFlYjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TG9hZGVyU3RyYXRlZ3kuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRlcjsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBT
ZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIAogc3RydWN0IEZldGNoT3B0aW9u
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIuY3BwCmluZGV4IDYzMzc1NTk2MzIwMDE0NjM4Mjg5ZTI4MjYwNGM1NWIwYWY0NDUzMTMu
LjYwNDNhYzliZTI2N2VhNGZiYzcxZTExMThiOTA3OTE1NWUzOTE1MDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcApAQCAt
MTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGUKICAgICBkaWRSZWNlaXZl
RGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRh
dGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZl
cihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5
bG9hZFR5cGUpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVu
Y29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAg
IFJlZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
LmgKaW5kZXggNDhiYjIxNTNjOTNmMmRjNzU0ZTIwNzMyMjUyYzA1MDljZjcwNGE0MS4uYjUxNzRl
ZGM5NGI5OTIzOTAyMDVmMGZhZDQ1MmVhNWFjMzg3ODkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKQEAgLTYzLDcgKzYzLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRG
YWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApAQCAtNzQsNyArNzQsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwog
Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBh
eWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKIAogICAgIHZvaWQgbm90aWZ5RG9uZSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFw
aGljRGlnZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3QuY3BwCmluZGV4IGM2Mjc3Njg1OGE2ZGM1YWZmZDM2ZGM5ZTc4NWM4YmQyNDcyYmI3
NGQuLmQ5NGI3MDAwNzQxY2Q5MTJiOTE3M2UyYjM3NDZkNGRhOGIzNjhhNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3Bw
CkBAIC0xNTUsNyArMTU1LDcgQEAgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dy
YXBoaWNEaWdlc3RGb3JCeXRlcyhSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWcKICAgICByZXR1cm4g
eyBhbGdvcml0aG0sIGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKSB9OwogfQogCi1SZXNvdXJj
ZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihS
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0sIGNvbnN0IFNo
YXJlZEJ1ZmZlciogYnVmZmVyKQorUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dy
YXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZmZXIoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpB
bGdvcml0aG0gYWxnb3JpdGhtLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIp
CiB7CiAgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKHRv
Q3J5cHRvRGlnZXN0QWxnb3JpdGhtKGFsZ29yaXRobSkpOwogICAgIGlmIChidWZmZXIpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdl
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Qu
aAppbmRleCBhZWEzZGM1N2M4NzgzMTMwMTNhNWIxNmM5MzliNzc0ZWQ0ODQzMjRjLi44M2I4NjEz
Y2ZkYTIzMjlhZTMwYmJmNmFiYzE0Yjk5ZDQ0MjM3YjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCkBAIC0zNCw3ICszNCw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFJlc291cmNlOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFJl
c291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCB7CiAgICAgZW51bSBjbGFzcyBBbGdvcml0aG0gewpA
QCAtNzUsNyArNzUsNyBAQCBzdGQ6Om9wdGlvbmFsPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3Q+IHBhcnNlRW5jb2RlZENyeXB0b2dyYXBoaWNEaWdlcwogCiBzdGQ6Om9wdGlvbmFs
PFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gZGVjb2RlRW5jb2RlZFJlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdChjb25zdCBFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Jik7
CiAKLVJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hh
cmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBjb25zdCBT
aGFyZWRCdWZmZXIqKTsKK1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGlj
RGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3Jp
dGhtLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiBSZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvckJ5dGVzKFJlc291cmNlQ3J5cHRvZ3JhcGhp
Y0RpZ2VzdDo6QWxnb3JpdGhtLCBjb25zdCB2b2lkKiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDVlYjA2NTM2
MGIxMGRmODFiNTZiZTY5NDc1MWRjZDkzMWU3ZGIwZjYuLmRmMTM5NTg4ZThkNTI1MmIzZWVjNjE5
M2FlNjFhYTI0Nzg2YjIxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmluaXQoUmVzb3Vy
Y2VSZXF1ZXN0JiYgY2xpZW50UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pCiAgICAgfSk7
CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogewogICAgIGRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildKCkgbXV0
YWJsZSB7CiAgICAgICAgIGlmIChyZWFjaGVkVGVybWluYWxTdGF0ZSgpKQpAQCAtMzMwLDcgKzMz
MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJj
ZSgpCiAgICAgICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRl
cjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwg
U2hhcmVkQnVmZmVyKiBidWZmZXIsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2
b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIERhdGFQYXls
b2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgaWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVy
aW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFNoYXJlCiAg
ICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAotY29uc3Qg
U2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKK2NvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBj
b25zdAogewogICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS0+Z2V0KCkuZ2V0KCk7CiB9CkBAIC01
NTIsMTQgKzU1MiwxNCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbAogICAgIGRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0
YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlw
ZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVm
ZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9p
ZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBh
eWxvYWRUeXBlKQogewotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGdldCBkYXRhK2xl
bmd0aCAqT1IqIGEgU2hhcmVkQnVmZmVyLgorICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5
IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KICAgICBBU1NF
UlQoIWJ1ZmZlciB8fCAoIWRhdGEgJiYgIWxlbmd0aCkpOwogCiAgICAgLy8gUHJvdGVjdCB0aGlz
IGluIHRoaXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3Npbmcg
Y2FuIGRvCkBAIC03MzYsNyArNzM2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ24KICAgICBk
aWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZEJ5dGVzKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNv
dXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFu
ZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpCiB7CiAgICAgZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmgKaW5kZXggY2Y4MjE3NGJlOGVkODY3ZDQ3ODNlY2FhMTM2YjU3ODM5MmMy
ODBhNy4uNTRiMWI4NjZkZjg5NmE4NGI0Y2EyOTdlZTQ3NmQ2ZDBiNjYxZmRkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTU2LDcgKzU2LDcgQEAgY2xhc3MgRnJh
bWU7CiBjbGFzcyBGcmFtZUxvYWRlcjsKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXI7CiBjbGFz
cyBOZXR3b3JrTG9hZE1ldHJpY3M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogREVDTEFSRV9B
TExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwpAQCAtNjksNyAr
NjksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdChSZXNvdXJjZVJlcXVlc3Qm
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKLSAgICB2b2lkIGRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYpOworICAgIHZvaWQgZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRMb2FkaW5nKCkKQEAgLTEwMSw3
ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsK
ICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzcG9uc2U7IH0KIAotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29u
c3Q7CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29u
c3Q7CiAgICAgdm9pZCBjbGVhclJlc291cmNlRGF0YSgpOwogICAgIAogICAgIHZpcnR1YWwgYm9v
bCBpc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3Q7CkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNT
ZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFp
bChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKQEAgLTE2OSw3ICsxNjksNyBAQCBwcm90ZWN0ZWQ6
CiAKICAgICBib29sIHdhc0NhbmNlbGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuY2VsbGF0aW9u
U3RhdHVzID49IENhbmNlbGxlZDsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSk7CiAgICAgCiAgICAgdm9pZCBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGlj
eSByZWZlcnJlclBvbGljeSkgeyBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSByZWZlcnJlclBv
bGljeTsgfQogICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3QgeyByZXR1
cm4gbV9vcHRpb25zLnJlZmVycmVyUG9saWN5OyB9CkBAIC0xOTQsNyArMTk0LDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsK
IAotICAgIHZvaWQgYWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgU2hh
cmVkQnVmZmVyKiwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGFkZERhdGFPckJ1ZmZlcihj
b25zdCB1aW50OF90KiwgdW5zaWduZWQsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBEYXRhUGF5
bG9hZFR5cGUpOwogICAgIHZvaWQgbG9hZERhdGFVUkwoKTsKICAgICB2b2lkIGZpbmlzaE5ldHdv
cmtMb2FkKCk7CiAKQEAgLTIwNSw3ICsyMDUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsU2VuZFJl
cXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJl
c3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3Qg
dWludDhfdCosIHVuc2lnbmVkLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwotICAg
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+
JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92
ZXJyaWRlOwogICAgIHZvaWQgd2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNzE5Njgy
YzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4OGJlZGIyZWVhYS4uMzdkMGJiODIxYWJkODZhOWI1NjA2
ZTEyN2VmYzk0MTJhNTFiYjFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuY3BwCkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb24K
ICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2Rl
ZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3Zv
aWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYg
KGF1dG8gcHJldmlld0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewpAQCAtNTQyLDcg
KzU0Miw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRh
UGF5bG9hZFR5cGUpOwogfQogCi12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIEFTU0VSVChtX3Jlc291
cmNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAppbmRleCAz
NzIzYjZiOWFiOWZkZGFhYTU1NzRiZmIwZTZmMzhjZWQ3YWVmYjc1Li44MzJjOWYwZTczZDM4NDY0
YTc5NWY0MDM4NjBmNzljMzRlNzNiYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuaApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkU2Vu
ZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRv
dGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xp
Y3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5
cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5
cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJv
ciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGU7CkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgRXhwZWN0ZWQ8dm9pZCwg
U3RyaW5nPiBjaGVja1Jlc3BvbnNlQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKICAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVkaXJlY3Rp
b25Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcmV2aW91
c1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1Jl
cXVlc3QpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3Qq
LCBpbnQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29u
c3QgdWludDhfdCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcg
bG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKIAogICAgIHZvaWQgbm90
aWZ5RG9uZShMb2FkQ29tcGxldGlvblR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0
dXRlRGF0YS5oCmluZGV4IGY2NjI5MmUzMWNiZWI0MjY0MzBhODMyYWRlZjQyOTkxY2I1NzQzNmUu
LmE4YTQ5YjQ3ZjkyNzM0Mjc0YmE0Y2VhYmMxNzA3ZmVmYTdiNjY0MGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgU3Vic3RpdHV0ZURhdGEoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBjb250ZW50LCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2hv
dWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSkKKyAgICAgICAgU3Vic3RpdHV0ZURhdGEoUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY29udGVudCwgY29uc3QgVVJMJiBmYWlsaW5nVVJM
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgU2Vzc2lvbkhpc3RvcnlWaXNpYmls
aXR5IHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkpCiAgICAgICAgICAgICA6IG1fY29udGVu
dChXVEZNb3ZlKGNvbnRlbnQpKQogICAgICAgICAgICAgLCBtX2ZhaWxpbmdVUkwoZmFpbGluZ1VS
TCkKICAgICAgICAgICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKQEAgLTU0LDE0ICs1NCwxNCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGVudCAhPSBudWxscHRyOyB9CiAgICAgICAgIGJvb2wgc2hvdWxkUmV2ZWFsVG9T
ZXNzaW9uSGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlz
dG9yeSA9PSBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OlZpc2libGU7IH0KIAotICAgICAgICBj
b25zdCBTaGFyZWRCdWZmZXIqIGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQuZ2V0
KCk7IH0KKyAgICAgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogY29udGVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGVudC5nZXQoKTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS5taW1lVHlwZSgpOyB9CiAgICAgICAg
IGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS50
ZXh0RW5jb2RpbmdOYW1lKCk7IH0KICAgICAgICAgY29uc3QgVVJMJiBmYWlsaW5nVVJMKCkgY29u
c3QgeyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9CiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAgICAgICAKICAg
ICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7CisgICAg
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7CiAgICAgICAgIFVS
TCBtX2ZhaWxpbmdVUkw7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAg
ICAgICAgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlz
dG9yeSB7IFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVuIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXggMzQ0Y2E5ODI4NTc1MmU4ZjEwMTcw
ZjIzMjA0OWUwY2EyYWQ0ZmM4Ni4uY2YyZGUwYzYyZDk1ZjMzMjViNDJiNDZlMjQwMzc3NDQxMDc0
MmEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAt
MzcsMTQgKzM3LDE0IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyBy
ZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihSZWYgeyAqbV9k
YXRhLmdldCgpIH0pOyB9CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihS
ZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7IH0KICAgICB2
b2lkIGNsZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRlbGl2
ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0
YShtX3Jlc3BvbnNlLCBtX2RhdGEuY29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgU3Vic3Rp
dHV0ZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGRhdGEpCisgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVybCwg
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKQogICAgICAgICA6IG1fdXJsKFdURk1vdmUodXJsKSkKICAgICAgICAgLCBtX3Jlc3Bv
bnNlKFdURk1vdmUocmVzcG9uc2UpKQogICAgICAgICAsIG1fZGF0YShXVEZNb3ZlKGRhdGEpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHAKaW5kZXggNzIwYTkyNzFjZDMyNjVlZjRjZTIzMjYxYTI2ZGIwZDgyOGM2MzM0
Ni4uNTE5NzhmNDEyMzg3NGRjNTY2MGVmZjQ3MDY1OTcwN2Q0ZTVkODVhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCkBAIC0yNTMsMTQgKzI1MywxNCBAQCBVUkwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmNyZWF0
ZUZpbGVVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBpbmxpbmUg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UmIHJlc291cmNlKQorc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNv
dXJjZSkKIHsKICAgICBpZiAocmVzb3VyY2UucGF0aCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIHJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOwotICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgp
KTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVz
b3VyY2UucGF0aCgpKTsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2Fk
U3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVy
cm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBkYXRhKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hy
b25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7
CiAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZTsKICAgICBpZiAoIXNob3Vs
ZExvYWRSZXNvdXJjZUZyb21BcHBsaWNhdGlvbkNhY2hlKHJlcXVlc3QsIHJlc291cmNlKSkKQEAg
LTI3Nyw3ICsyNzcsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5j
aHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzbwogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgZGF0YSkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxi
YWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNl
RXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mIGRhdGEpCiB7CiAgICAgLy8gSWYgbm9ybWFsIGxvYWRpbmcgcmVzdWx0cyBpbiBhIHJl
ZGlyZWN0IHRvIGEgcmVzb3VyY2Ugd2l0aCBhbm90aGVyIG9yaWdpbiAoaW5kaWNhdGl2ZSBvZiBh
IGNhcHRpdmUgcG9ydGFsKSwgb3IgYSA0eHggb3IgNXh4IHN0YXR1cyBjb2RlIG9yIGVxdWl2YWxl
bnQsCiAgICAgLy8gb3IgaWYgdGhlcmUgd2VyZSBuZXR3b3JrIGVycm9ycyAoYnV0IG5vdCBpZiB0
aGUgdXNlciBjYW5jZWxlZCB0aGUgZG93bmxvYWQpLCB0aGVuIGluc3RlYWQgZ2V0LCBmcm9tIHRo
ZSBjYWNoZSwgdGhlIHJlc291cmNlIG9mIHRoZSBmYWxsYmFjayBlbnRyeQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRl
eCBkYzg1OGZkZDZkNTQ1M2ViNDM1OTI4ZDNlZDc1NzU3MDgzNTk0NWUwLi5iOTYzNTZlNzg1NjEz
ODk1NmFlNGMwNTk4MzE3MGNkZjcyMzY3MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtNDIsNyArNDIsNyBA
QCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwog
Y2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVy
OwogY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xh
c3MgRnJhbWU7CkBAIC0xMDQsOCArMTA0LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZh
bGxiYWNrRm9yRXJyb3IoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAK
LSAgICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3Vy
Y2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mKTsKLSAgICB2b2lkIG1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNs
eShSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+Jik7CisgICAgdm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwogCiAgICAgYm9vbCBjYW5DYWNoZUluQmFj
a0ZvcndhcmRDYWNoZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IDY3MTA5NTdjM2Fi
NzRhNzU5ZmMyNzUxZmQ3YTA2YjMxMWU1MThjZTUuLjJiYjNmZTc1Yjk5NzdlODMzMjJhZTI1ODBm
NzIxMmVlNWJmMjE2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC0yOSw3ICsyOSw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4g
QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXRoKQorUmVmPEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZT4gQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmws
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkKIHsK
ICAgICBBU1NFUlQoIXVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiAgICAgaWYgKCFidWZm
ZXIpCkBAIC00MCw3ICs0MCw3IEBAIFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjCiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCB7IHVybCB9LCBXVEZN
b3ZlKHJlc291cmNlUmVzcG9uc2UpLCB0eXBlLCBidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgcGF0
aCkpOwogfQogCi1BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgdW5zaWduZWQgdHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCitBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJl
c291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIDogU3Vic3RpdHV0
ZVJlc291cmNlKFdURk1vdmUodXJsKSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoZGF0YSkp
CiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fc3RvcmFnZUlEKDApCkBAIC01MSw3ICs1MSw3
IEBAIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVS
TCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlOjpkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2
ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5t
YWtlQ29udGlndW91cygpIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKG1fcGF0aCkpOworICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJl
c3BvbnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOwogfQogCiB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlwZSh1bnNpZ25lZCB0eXBlKSAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UuaAppbmRleCA4OGM5NGRlMWE3NzQxMDQ2OWM5MzFhNDJhNDc5YjFlNjc3N2E3MDJl
Li5jMjg4ZTcwMzZjNjc2MmFkNDg3NmJhODgxNDY5YTc1ZDIyMzdlMWJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZS5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgRmFsbGJhY2sgPSAxIDw8
IDQKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGNy
ZWF0ZShjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGNvbnN0IFN0
cmluZyYgcGF0aCA9IFN0cmluZygpKTsKKyAgICBzdGF0aWMgUmVmPEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZT4gY3JlYXRlKGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNp
Z25lZCB0eXBlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCksIGNvbnN0IFN0cmluZyYgcGF0aCA9IFN0cmluZygpKTsKIAogICAgIHVuc2ln
bmVkIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICB2b2lkIGFkZFR5cGUodW5z
aWduZWQgdHlwZSk7CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIAogcHJp
dmF0ZToKLSAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYsIFJlc291cmNlUmVzcG9u
c2UmJiwgdW5zaWduZWQgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBw
YXRoKTsKKyAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYsIFJlc291cmNlUmVzcG9u
c2UmJiwgdW5zaWduZWQgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFN0cmluZyYgcGF0aCk7CiAKICAgICB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImKSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggYzc3MGQ3NjQxMzUwNjUyZjVmNzRhMGRj
ZTUwY2U4ZDMzZDFmYzVlNC4uOGNmMDVjY2UxODgwMTI4ZGU1OWJlNzBhOTk4MzZmNWE3NDViNmQ3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0xMTEyLDcgKzExMTIsNyBAQCBSZWZQdHI8QXBw
bGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25l
ZCBzdG9yYWdlSUQpCiAgICAgICAgIGludCBodHRwU3RhdHVzQ29kZSA9IGNhY2hlU3RhdGVtZW50
LT5jb2x1bW5JbnQoMSk7CiAKICAgICAgICAgdW5zaWduZWQgdHlwZSA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50NjQoMikpOwotICAgICAgICBhdXRvIGRh
dGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVt
bkJsb2IoNikpOworICAgICAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNo
ZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2KSk7CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgcGF0
aCA9IGNhY2hlU3RhdGVtZW50LT5jb2x1bW5UZXh0KDcpOwogICAgICAgICBsb25nIGxvbmcgc2l6
ZSA9IDA7CkBAIC0xMjcyLDcgKzEyNzIsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpzaG91bGRTdG9yZVJlc291cmNlQXNGbGF0RmlsZShBcHBsaWNhdGlvbkNhY2hlUmVzbwogICAg
IHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJhdWRpby8i
KSB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJ2aWRlby8iKTsK
IH0KICAgICAKLWJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVl
RmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rv
cnksIFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKQorYm9vbCBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKQogewogICAgIFN0cmluZyBmdWxs
UGF0aDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKaW5kZXggOWE5NTMwMDg3NjZhODg4NTU2MWIzNDg4
ODliOGNlZGEyYjJlYjMzOC4uNDEwMmExODA4YjQ1NTU3YjY0NWUzNmU3ZTY4MWZjNGM2ZDIwN2Nl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgQXBwbGljYXRpb25D
YWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3Q7CiBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xh
c3MgU3RvcmFnZUlESm91cm5hbDsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UgOiBw
dWJsaWMgUmVmQ291bnRlZDxBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZT4gewpAQCAtMTIyLDcgKzEy
Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBlbnN1cmVPcmlnaW5SZWNvcmQoY29uc3QgU2VjdXJp
dHlPcmlnaW4qKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRTdG9yZVJlc291cmNlQXNGbGF0Rmls
ZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqKTsKICAgICB2b2lkIGRlbGV0ZVRhYmxlcygpOwot
ICAgIGJvb2wgd3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0cmluZyYgb3V0RmlsZW5hbWUsIGNvbnN0IFN0cmlu
ZyYgZmlsZUV4dGVuc2lvbik7CisgICAgYm9vbCB3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVj
dG9yeShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0
cmluZyYgb3V0RmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbik7CiAKICAgICB2
b2lkIGxvYWRNYW5pZmVzdEhvc3RIYXNoZXMoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcAppbmRleCA2ZGU4MGMxMGFjN2QyNWNm
MzQ2OWY2ZGVmMGZhZjcyNDFmNTk2NDI4Li40ZWY5Y2Q2NmJkMDg4Yjc0YzA0NmMwNjkwZDFlOWQz
ZTVlMzM2MGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNo
aXZlRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZUZhY3RvcnkuY3BwCkBAIC00NiwxMiArNDYsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci10eXBlZGVmIFJlZlB0cjxBcmNoaXZlPiBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbihjb25zdCBV
UkwmLCBTaGFyZWRCdWZmZXImKTsKK3R5cGVkZWYgUmVmUHRyPEFyY2hpdmU+IFJhd0RhdGFDcmVh
dGlvbkZ1bmN0aW9uKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIHR5cGVk
ZWYgSGFzaE1hcDxTdHJpbmcsIFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKiwgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPiBBcmNoaXZlTUlNRVR5cGVzTWFwOwogCiAvLyBUaGUgY3JlYXRlIGZ1bmN0
aW9ucyBpbiB0aGUgYXJjaGl2ZSBjbGFzc2VzIHJldHVybiBSZWZQdHIgdG8gY29uY3JldGUgc3Vi
Y2xhc3NlcwogLy8gb2YgQXJjaGl2ZS4gVGhpcyBhZGFwdG9yIG1ha2VzIHRoZSBmdW5jdGlvbnMg
aGF2ZSBhIHVuaWZvcm0gcmV0dXJuIHR5cGUuCi10ZW1wbGF0ZTx0eXBlbmFtZSBBcmNoaXZlQ2xh
c3M+IHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4gYXJjaGl2ZUZhY3RvcnlDcmVhdGUoY29uc3QgVVJM
JiB1cmwsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordGVtcGxhdGU8dHlwZW5hbWUgQXJjaGl2ZUNs
YXNzPiBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGFyY2hpdmVGYWN0b3J5Q3JlYXRlKGNvbnN0IFVS
TCYgdXJsLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIEFy
Y2hpdmVDbGFzczo6Y3JlYXRlKHVybCwgYnVmZmVyKTsKIH0KQEAgLTgzLDcgKzgzLDcgQEAgYm9v
bCBBcmNoaXZlRmFjdG9yeTo6aXNBcmNoaXZlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKICAgICByZXR1cm4gIW1pbWVUeXBlLmlzRW1wdHkoKSAmJiBhcmNoaXZlTUlNRVR5cGVzKCku
Y29udGFpbnMobWltZVR5cGUpOwogfQogCi1SZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6
OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKQorUmVmUHRyPEFyY2hpdmU+IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUoY29uc3Qg
VVJMJiB1cmwsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCiB7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCmluZGV4IDIxZDIz
NjVjZjhkOWQ5MDFlZmU3YWFkNTUyYmYzZGE0MDY5ZmU0MGQuLjU1NjQ1MTVjOWUwZDlkMDMzYjc5
MGM3NDcyODVhMjU4NTNhYmUwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvQXJjaGl2ZUZhY3RvcnkuaApAQCAtMzQsMTIgKzM0LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIAogY2xhc3MgQXJjaGl2ZUZhY3RvcnkgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGlz
QXJjaGl2ZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2
ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSk7CisgICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAg
ICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlwZXMoSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCmluZGV4IGZjMjBkYTNkYTAz
MmNiZWY3NGYyZTljODQyOGFjYjRlZTM3YmVmMjMuLjA3MzgzOTRhODI4NzE0YWEwYjkwZWU3NTA3
OWQ0ODZmNWIwZTg2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L0FyY2hpdmVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
QXJjaGl2ZVJlc291cmNlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWlubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8U2hhcmVk
QnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoraW5saW5lIEFyY2hpdmVSZXNvdXJjZTo6QXJj
aGl2ZVJlc291cmNlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGlu
ZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogICAgIDogU3Vic3RpdHV0ZVJlc291cmNlKFVSTCB7IHVybCB9LCBSZXNvdXJjZVJlc3Bv
bnNlIHsgcmVzcG9uc2UgfSwgV1RGTW92ZShkYXRhKSkKICAgICAsIG1fbWltZVR5cGUobWltZVR5
cGUpCiAgICAgLCBtX3RleHRFbmNvZGluZyh0ZXh0RW5jb2RpbmcpCkBAIC00Miw3ICs0Miw3IEBA
IGlubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVy
PiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsCiB7CiB9CiAKLVJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCitSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0
ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0
IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsK
ICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNTQsNyArNTQsNyBA
QCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFyY2hp
dmVSZXNvdXJjZShkYXRhLnJlbGVhc2VOb25OdWxsKCksIHVybCwgbWltZVR5cGUsIHRleHRFbmNv
ZGluZywgZnJhbWVOYW1lLCByZXNwb25zZSkpOwogfQogCi1SZWZQdHI8QXJjaGl2ZVJlc291cmNl
PiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1JlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoZGF0YSksIHVybCwg
cmVzcG9uc2UubWltZVR5cGUoKSwgcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpLCBTdHJpbmco
KSwgcmVzcG9uc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvQXJjaGl2ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNo
aXZlUmVzb3VyY2UuaAppbmRleCAyMDllOTcxN2FlYjA5MzYwZGIzOTI3ZTZlZmExZTViZjFjMmM5
N2NhLi4wNTQ4ZWY3MjFlZmQyN2MwMGNlOTNkMTIyNzBlY2VjNDZjMDJhZjk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaApAQCAtMzQsOCAr
MzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZSA6IHB1
YmxpYyBTdWJzdGl0dXRlUmVzb3VyY2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8QXJj
aGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3Qg
VVJMJiwKKyAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IGNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwKICAg
ICAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rpbmcs
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLAogICAgICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiA9IFJlc291cmNlUmVzcG9uc2UoKSk7CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IGJvb2wgc2hvdWxkSWdub3JlV2hlblVuYXJjaGl2aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zaG91
bGRJZ25vcmVXaGVuVW5hcmNoaXZpbmc7IH0KIAogcHJpdmF0ZToKLSAgICBBcmNoaXZlUmVzb3Vy
Y2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgQXJjaGl2ZVJlc291cmNlKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgIFN0cmlu
ZyBtX3RleHRFbmNvZGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZjVlYzRkZDY3ZjdkZjhkOWRhMjA5YjQw
ZTIzYzA0MzliNmU2OGIwMy4uNzExNTBjYmRkODk2OWU2YWYwMjg2ODRiNmJmNmNiYzBhNTBiMmZj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5jcHAKQEAgLTI0OCwxMiArMjQ4LDEyIEBAIFJlZjxMZWdhY3lXZWJBcmNoaXZl
PiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiBtYWluUmVz
b3VyCiAgICAgcmV0dXJuIGFyY2hpdmU7CiB9CiAKLVJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhKQorUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewogICAgIHJldHVybiBjcmVhdGUoVVJMKCksIGRhdGEpOwogfQogCi1SZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYs
IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQ3JlYXRpbmcgZnJvbSBy
YXcgZGF0YSIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9j
Zi9MZWdhY3lXZWJBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmgKaW5kZXggZDA5ZWM5Zjc1YWJhMTM2YTg2MzM5ZWI0ZDg2YWJkODI3
N2M0ZmYwNC4uNWEwN2IxMGI0YmU2Zjg2MjAxMWE3ODJhN2RlZDIzNjc1OTI0MzYyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
aApAQCAtNDEsOCArNDEsOCBAQCBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiBjbGFzcyBMZWdhY3lXZWJB
cmNoaXZlIGZpbmFsIDogcHVibGljIEFyY2hpdmUgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoU2hhcmVkQnVmZmVy
Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBj
cmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
Y3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShSZWY8QXJjaGl2ZVJl
c291cmNlPiYmIG1haW5SZXNvdXJjZSwgVmVjdG9yPFJlZjxBcmNoaXZlUmVzb3VyY2U+PiYmIHN1
YnJlc291cmNlcywgVmVjdG9yPFJlZjxMZWdhY3lXZWJBcmNoaXZlPj4mJiBzdWJmcmFtZUFyY2hp
dmVzKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+
IGNyZWF0ZShOb2RlJiwgRnVuY3Rpb248Ym9vbChGcmFtZSYpPiYmIGZyYW1lRmlsdGVyID0geyB9
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNy
ZWF0ZShGcmFtZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
bWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5kZXggOTkzYzJiOGU4MzBkYzNkNzVjNWFkMzE5YmJhZmU5
ZGY0NWM1MDEwZS4uZDAxMzlmODdhMDZmOTY5NzhiNzQ3N2U5ZjQ5OTljMzRlYTlmODYyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hp
dmUuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgUmVmPE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNoaXZl
OjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1IVE1MQXJjaGl2ZSk7CiB9CiAK
LVJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJs
LCBTaGFyZWRCdWZmZXImIGRhdGEpCitSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6
OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICAvLyBGb3Igc2VjdXJpdHkgcmVhc29ucyB3ZSBvbmx5IGxvYWQgTUhUTUwgcGFnZXMgZnJv
bSBsb2NhbCBVUkxzLgogICAgIGlmICghTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0
VVJMU2NoZW1lQXNMb2NhbCh1cmwucHJvdG9jb2woKS50b1N0cmluZygpKSkKQEAgLTEzMCw3ICsx
MzAsNyBAQCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBV
UkwmIHVybCwgU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIHJldHVybiBtYWluQXJjaGl2ZTsKIH0K
IAotUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdl
KiBwYWdlKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJh
dGVNSFRNTERhdGEoUGFnZSogcGFnZSkKIHsKICAgICBWZWN0b3I8UGFnZVNlcmlhbGl6ZXI6OlJl
c291cmNlPiByZXNvdXJjZXM7CiAgICAgUGFnZVNlcmlhbGl6ZXIgcGFnZVNlcmlhbGl6ZXIocmVz
b3VyY2VzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1s
L01IVE1MQXJjaGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxBcmNoaXZlLmgKaW5kZXggM2QyZGI3Yzk2MDAyZWJlNjg0YjJiZWY4ZjFlYTllMmU5Nzk0YTU4
OS4uMmRmZTg3ZTgyZTdhNGRjZTBmMzQxYzM2MTk0M2M5OTAyMDVjOGRiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgKQEAgLTM4
LDE0ICszOCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1IVE1MUGFyc2VyOwog
Y2xhc3MgUGFnZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIE1IVE1MQXJjaGl2ZSBmaW5hbCA6IHB1YmxpYyBBcmNoaXZlIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKCk7Ci0gICAgc3RhdGlj
IFJlZlB0cjxNSFRNTEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsK
KyAgICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBnZW5l
cmF0ZU1IVE1MRGF0YShQYWdlKik7CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7CiAKICAgICB2aXJ0dWFsIH5NSFRNTEFyY2hp
dmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxQYXJzZXIuY3BwCmluZGV4IDQwMjViOTgwZTVlZTY4MmRiMDc2MmFmYTg2ZWNhOWQ5MmZlODU4
ZDkuLjVlZTkxODY4NGEwNjg5NjgzZjcxYzI2N2YyZDkwMWEzN2E2ZmViNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAg
LTUxLDcgKzUxLDcgQEAgc3RhdGljIGJvb2wgc2tpcExpbmVzVW50aWxCb3VuZGFyeUZvdW5kKFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyJiBsaW5lUmVhZGVyLCBjb24KICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLU1IVE1MUGFyc2VyOjpNSFRNTFBhcnNlcihTaGFyZWRCdWZmZXIqIGRhdGEpCitNSFRN
TFBhcnNlcjo6TUhUTUxQYXJzZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICA6
IG1fbGluZVJlYWRlcihkYXRhLCAiXHJcbiIpCiB7CiB9CkBAIC0yMTUsNyArMjE1LDcgQEAgUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlN
RUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29kaW5n
IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAg
YXV0byBjb250ZW50QnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpOworICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoZGF0YSkpOwogICAgIC8vIEZJWE1FOiB0aGUgVVJMIGluIHRoZSBNSU1FIGhlYWRl
ciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUgaXQgaWYgaXQgaXMuCiAgICAg
Ly8gVGhlIHNwZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZlIGEgVVJMOiBodHRwOi8vdG9v
bHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAgIC8vIElFIGFuZCBGaXJlZm94
IChVTk1odCkgc2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRlIFVSTHMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaAppbmRleCAxZTli
ZDRkNzc2N2VlMzkxYTAwMjJmNzE3NDhmMDBiODVjODFiMjVmLi4wZDYwNDM0M2YzZDdhZDE3OGNj
MjIwMDNjOTc5YzIyZTUwYTNiOTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmgKQEAgLTQyLDExICs0MiwxMSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBBcmNoaXZlUmVzb3VyY2U7CiBjbGFzcyBNSFRNTEFyY2hpdmU7CiBj
bGFzcyBNSU1FSGVhZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgTUhUTUxQYXJzZXIgewogcHVibGljOgotICAgIGV4cGxpY2l0
IE1IVE1MUGFyc2VyKFNoYXJlZEJ1ZmZlciopOworICAgIGV4cGxpY2l0IE1IVE1MUGFyc2VyKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIAogICAgIFJlZlB0cjxNSFRNTEFyY2hpdmU+IHBhcnNl
QXJjaGl2ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKaW5kZXggOTBkMWM2YTJiYThjNGE0MmUxZmVi
ZDgwMWU1Mjg3ODA1OTAxMmI5Mi4uZTFhODc1MTZiZDhkNWI4ZjI0YWY2YTViOTkwZTIxODUzNDdl
NzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxp
Y2F0aW9uTWFuaWZlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcApAQCAtNDAsNyArNDAsNyBAQCBDYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVx
dWVzdCYmIHJlcQogewogfQogCi12b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlz
aExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRp
bmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRh
dGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAppbmRleCA2NGIxNGQ1ZjY1ZmZmYzg1
NTRkZjQ2NjVjNzU5MTZmMzRkMWQ1NDZhLi4zNzk4YTliNGQ5MDEzY2ZkZWE2ZjU2ZmJkZjAwMTVh
Zjg5NDc1NzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAg
IHN0ZDo6b3B0aW9uYWw8c3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q+IHByb2Nlc3MoY29uc3Qg
VVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgRG9jdW1lbnQqID0gbnVs
bHB0cik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4
dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIo
KTsgfQogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAg
U3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggOWQyZGM3MzY0ODAy
ZDBkNjJhNjU5MWRlNjg5YTVhN2EyNDQzMDUxMS4uMzhhMmUxN2YwZDA2YzhhYzk4ZGUyNGIxZTUy
YjhlNjBlOTI0MTIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIENhY2hlZENTU1N0
eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Up
CiAgICAgICAgIHNhdmVQYXJzZWRTdHlsZVNoZWV0KCpzaGVldC5tX3BhcnNlZFN0eWxlU2hlZXRD
YWNoZSk7CiB9CiAKLXZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25z
dCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
K3ZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7
CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHls
ZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5oCmluZGV4IGQzN2ZhZmFjYzAxMjJjODc1NDBmNDY0YjllNTYxNjBjY2FlNDY5ZjkuLmU2NTVj
NjllM2VkYjYwOTUwMjM5Y2NlNDU0NWYwOTZiNTI2NTZkZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaApAQCAtNTUsNyArNTUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAg
ICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNl
RGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVj
b2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRp
bmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIGZpbmFsOwogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKICAgICB2
b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IGY5YWQ3NzEzYzYwM2E2
YTBhNTZiY2EyNzljZTgyNTA2NjZhMzIwZmEuLmQyYmMyODIxNDc5YzU5YTIzMjNlNGY2NWNkOTRi
NjNiNDIzNzM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5j
cHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVk
UmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICAgICAgc3RhdGljX2Nhc3Q8Q2FjaGVkRm9udENs
aWVudCY+KGNsaWVudCkuZm9udExvYWRlZCgqdGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkRm9udDo6
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKTsKQEAgLTk1LDcgKzk1LDcgQEAgU3RyaW5nIENhY2hlZEZvbnQ6OmNhbGN1bGF0
ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdAogICAgIHJldHVybiB1cmwoKS5mcmFnbWVudElkZW50
aWZpZXIoKS50b1N0cmluZygpOwogfQogCi1ib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZv
bnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpCitib29sIENhY2hlZEZvbnQ6OmVu
c3VyZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAoIW1fZm9u
dEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhZXJyb3JPY2N1cnJlZCgpICYmICFpc0xvYWRpbmcoKSAm
JiBkYXRhKSB7CiAgICAgICAgIGJvb2wgd3JhcHBpbmc7CkBAIC0xMDgsNyArMTA4LDcgQEAgYm9v
bCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVy
KiBkYXRhKQogICAgIHJldHVybiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuZ2V0KCk7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVh
dGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3Ry
aW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKK3N0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShT
aGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wm
IHdyYXBwaW5nKQogewogICAgIFJlZlB0ciBidWZmZXIgPSB7ICZieXRlcyB9OwogICAgIHdyYXBw
aW5nID0gIWNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoYnVmZmVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IDE1NGRiOGNiYWJmM2Q1YTM4ZTA5NjFh
Y2I1NWNlYWNmZjJmMjk3M2EuLjEzNDY2Y2M5OWQwZDE5Y2JmM2Q4ZWYzZGZiZDk2ZjM0ZDBmODU0
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNTQsNyAr
NTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICFtX2xvYWRJbml0aWF0ZWQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVD
dXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwotICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERh
dGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlv
biwgYm9vbCYgd3JhcHBpbmcpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CiAgICAgc3RhdGljIEZv
bnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSYsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMs
IGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+
IGNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgcmVt
b3RlVVJJLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBG
b250Q3JlYXRpb25Db250ZXh0Jik7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIHByb3RlY3Rl
ZDoKICAgICBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVh
dGlvbkNvbnRleHQmKTsKIAotICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShTaGFy
ZWRCdWZmZXIqIGRhdGEpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBjYWxjdWxhdGVJdGVtSW5D
b2xsZWN0aW9uKCkgY29uc3Q7CkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgTk9fUkVU
VVJOX0RVRV9UT19BU1NFUlQgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICB2b2lkIGRpZEFkZENs
aWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhbGxD
bGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcAppbmRleCA3YzAxYzhjYzIzMTE3ODZjNjI0ZjQ4NWVkZWY2OTM1ZmI3
ZWZhNWZiLi45NDYyNzk1MjBkMGRhNDQ2MjJjNmFjZDM2NjYyMjg4MTA1ZTgxOTYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ2OCw3ICs0Njgs
NyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAgICAgbV91cGRhdGVJ
bWFnZURhdGFDb3VudCA9IDA7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcklu
dGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlckludGVybmFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAg
ICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1f
ZGF0YS0+c2l6ZSgpKTsKQEAgLTUyMywxNCArNTIzLDE0IEBAIGJvb2wgQ2FjaGVkSW1hZ2U6OnNo
b3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gKE1vbm90b25pY1Rp
bWU6Om5vdygpIC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGltZSkuc2Vjb25kcygpIDwgdXBkYXRl
SW1hZ2VEYXRhQmFja29mZkludGVydmFsc1tpbnRlcnZhbF07CiB9CiAKLVJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0
IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IENhY2hlZElt
YWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSkgY29uc3QKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKICAgICAgICAgcmV0dXJuIGRhdGEtPm1h
a2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9E
RUNPREVSUykKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRv
Y3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQogICAgIC8v
IExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhlIHN5c3Rl
bSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CkBAIC01NTUsNyArNTU1LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMg
Q2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJp
bmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICB1cGRh
dGVCdWZmZXJJbnRlcm5hbChkYXRhKTsKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIENhY2hlZElt
YWdlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAg
ICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENh
Y2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9h
ZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgbV9kYXRhID0gY29udmVydGVkRGF0YUlmTmVlZGVk
KGRhdGEpOwogICAgIGlmIChtX2RhdGEpIHsKQEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIENhY2hl
ZEltYWdlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaQogdm9pZCBDYWNoZWRJbWFnZTo6ZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNv
bnRlbnRzKCkKIHsKICAgICBpZiAobV9pbWFnZSkgewotICAgICAgICAvLyBMZXQgdGhlIEltYWdl
IGtub3cgdGhhdCB0aGUgU2hhcmVkQnVmZmVyIGhhcyBiZWVuIHJlamlnZ2VkLCBzbyBpdCBjYW4g
bGV0IGdvIG9mIGFueSByZWZlcmVuY2VzIHRvIHRoZSBoZWFwLWFsbG9jYXRlZCByZXNvdXJjZSBi
dWZmZXIuCisgICAgICAgIC8vIExldCB0aGUgSW1hZ2Uga25vdyB0aGF0IHRoZSBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyIGhhcyBiZWVuIHJlamlnZ2VkLCBzbyBpdCBjYW4gbGV0IGdvIG9mIGFueSBy
ZWZlcmVuY2VzIHRvIHRoZSBoZWFwLWFsbG9jYXRlZCByZXNvdXJjZSBidWZmZXIuCiAgICAgICAg
IC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzI0Mjc1NjE3KTogSXQgd291bGQgYmUgYmV0dGVyIGlm
IHdlIGNvdWxkIHNvbWVob3cgdGVsbCB0aGUgSW1hZ2UncyBkZWNvZGVyIHRvIHN3YXAgaW4gdGhl
IG5ldyBjb250ZW50cyB3aXRob3V0IGRlc3Ryb3lpbmcgYW55dGhpbmcuCiAgICAgICAgIG1faW1h
Z2UtPmRlc3Ryb3lEZWNvZGVkRGF0YSh0cnVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGQ1MTNlMTZjYmE1YTk3MDdjMzNhZmM3OTM5MTUx
ODY2ZmE0MzhhNWYuLjA4M2Y5MmY4ODgyNzZlZWRhODk5MTIwMzFkMjQ0OWE5NjhlMjY1ZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC02OSw4ICs2OSw4
IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVXaWR0aCgpOyB9CiAgICAgYm9vbCBp
bWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdl
LT5oYXNSZWxhdGl2ZUhlaWdodCgpOyB9CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBlbnVtIFNpemVUeXBlIHsK
ICAgICAgICAgVXNlZFNpemUsCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGREZWZlclVw
ZGF0ZUltYWdlRGF0YSgpIGNvbnN0OwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFn
ZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogICAg
IHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZvaWQg
dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRh
dGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICB2
b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpIG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA4
NDJiZjVmMjBlMDZmZDgzYTcwNDY1NWQ2MDBhZGZkYzY0ODA0NDgyLi44OTVkYjExNThiNmI4Yzhm
YmY3YjEwYjQzYjYxNGVkYTk2MDIxY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgQ2FjaGVkUmF3
UmVzb3VyY2U6OkNhY2hlZFJhd1Jlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFR5cGUgdHlwZSwKICAgICBBU1NFUlQoaXNNYWluT3JNZWRpYU9ySWNvbk9yUmF3UmVzb3Vy
Y2UoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJh
d1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBTaGFyZWRCdWZm
ZXIqIGRhdGEpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNo
ZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKICAgICBzaXplX3QgcHJldmlvdXNEYXRh
TGVuZ3RoID0gZW5jb2RlZFNpemUoKTsKICAgICBpZiAoIWRhdGEgfHwgZGF0YS0+c2l6ZSgpIDw9
IHByZXZpb3VzRGF0YUxlbmd0aCkKQEAgLTU2LDcgKzU2LDcgQEAgc3RkOjpvcHRpb25hbDxTaGFy
ZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFs
RGF0YUMKICAgICByZXR1cm4gZGF0YS0+Z2V0U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsK
IH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIFNraXAgYW55IHVwZGF0ZUJ1
ZmZlcnMgdHJpZ2dlcmVkIGZyb20gbmVzdGVkIHJ1bmxvb3BzLiBXZSdsbCBoYXZlIHRoZSBjb21w
bGV0ZSBidWZmZXIgaW4gZmluaXNoTG9hZGluZy4KICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0
YU5vdGlmeSkKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRl
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVz
b3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNv
dXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExv
YWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5
KSB7CiAgICAgICAgIC8vIFdlIG1heSBnZXQgaGVyZSBzeW5jaHJvbm91c2x5IGZyb20gdXBkYXRl
QnVmZmVyKCkgaWYgdGhlIGNhbGxiYWNrIHRoZXJlIGVuZHMgdXAgc3Bpbm5pbmcgYSBydW5sb29w
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApp
bmRleCA1N2ZkN2FiNWMxMDBkYzA5YWRmMjZlYzRjYmFjNDUxNGYzNmY3NWZmLi5hNzg2NWY4YWQx
NzhhZWZiMzIyMGE1NmRjZmYxOTU5OTNjZjk1YWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtNTEsOSArNTEsOSBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQm
KSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5h
bDsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikg
ZmluYWw7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3Jz
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgYWxsQ2xpZW50c1Jl
bW92ZWQoKSBvdmVycmlkZTsKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN3
aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UoKSBvdmVycmlkZTsKICAgICBib29sIG1h
eVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYWxsb3dF
bmNvZGVkRGF0YVJlcGxhY2VtZW50OyB9CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3PiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBTaGFyZWRCdWZm
ZXIqKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBjYWxj
dWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKikg
Y29uc3Q7CiAgICAgdm9pZCBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCiAjaWYgVVNFKFFVSUNLX0xPT0spCkBA
IC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZGlyZWN0UGFpciwgMCwgQ3Jh
c2hPbk92ZXJmbG93LCAwPiBtX3JlZGlyZWN0Q2hhaW47CiAKICAgICBzdHJ1Y3QgRGVsYXllZEZp
bmlzaExvYWRpbmcgewotICAgICAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBidWZmZXI7
CisgICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAg
ICAgfTsKICAgICBzdGQ6Om9wdGlvbmFsPERlbGF5ZWRGaW5pc2hMb2FkaW5nPiBtX2RlbGF5ZWRG
aW5pc2hMb2FkaW5nOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwCmluZGV4IGNmNGYwMmM1ZDc0MzRjYjY1Y2IzZDAzMzhhYzdmYTczYWY2MTY2
ODQuLmJmNjllODBlNTc2ZTFhMjg4ZjZhMDExZjU0NjE0NjMxNTU4MDFkMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzM0LDcgKzMz
NCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKICAgICAgICAgY2xpZW50LT5ub3RpZnlGaW5pc2hlZCgqdGhpcywg
bWV0cmljcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXImKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5
KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiB9CkBAIC0zNDQsNyArMzQ0
LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiwgdW5z
aWduZWQpCiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5n
UG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpmaW5p
c2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
ICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKQEAgLTkx
Myw3ICs5MTMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpDYWxsYmFjazo6dGltZXJGaXJlZCgp
CiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogCi12b2lkIENhY2hlZFJlc291cmNl
Ojp0cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVy
KQordm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZl
ciYgbmV3QnVmZmVyKQogewogICAgIGlmICghbV9kYXRhKQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDIxOGQ3NGYy
Nzc2YTk2NWZjZWE0OGI2MWEzMjVmOTcyOGE3OTBkZDkuLmM5ODJkZDY5MzdhMGJjMmJmMzhjNDI2
MTI2ZmZlNmU3OGM3OTY0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIENvb2tpZUphcjsKIGNsYXNzIE1l
bW9yeUNhY2hlOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgU2VjdXJpdHlPcmln
aW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
Y2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCkBA
IC0xMTIsOSArMTEyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhj
b25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsg
cmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVy
KiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwog
CiAgICAgdm9pZCBzZXRSZXNvdXJjZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7
IG1fZXJyb3IgPSBlcnJvcjsgfQpAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgY2xlYXJMb2FkZXIoKTsKIAotICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHJlc291cmNl
QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgU2hhcmVkQnVmZmVy
KiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQogCiAgICAg
dmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYm
KT4mJik7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwpAQCAtMjg0LDcgKzI4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIC8qIGJ5dGVzU2VudCAqLywgdW5zaWduZWQg
bG9uZyBsb25nIC8qIHRvdGFsQnl0ZXNUb0JlU2VudCAqLykgeyB9CiAKICNpZiBFTkFCTEUoU0hB
UkVBQkxFX1JFU09VUkNFKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29k
ZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKICNlbmRpZgogCiAgICAgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9h
ZGVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxv
YWRlcjsgfQpAQCAtMzM2LDcgKzMzNiw3IEBAIHByb3RlY3RlZDoKICAgICBIYXNoQ291bnRlZFNl
dDxDYWNoZWRSZXNvdXJjZUNsaWVudCo+IG1fY2xpZW50czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVzb3VyY2VSZXF1ZXN0PiBtX29yaWdpbmFsUmVxdWVzdDsgLy8gTmVlZGVkIGJ5IFBpbmcgbG9h
ZHMuCiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsKLSAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fZGF0YTsKIAogcHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1lIG1fbGFzdERlY29kZWRBY2Nl
c3NUaW1lOyAvLyBVc2VkIGFzIGEgInRocmFzaCBndWFyZCIgaW4gdGhlIGNhY2hlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAppbmRleCBi
MGY3NmE1MDk2MTBmNjcxMDU3YmVlYmYwYTBiOWE2MDFjYTgyMjJiLi5kYjQzMTYwN2FlNTYzODMw
MzgwMGRkMjU5YzEwMzRjZDA5MGZjZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgU3RyaW5nIENh
Y2hlZFNWR0RvY3VtZW50OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+
ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExv
YWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCit2b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNy
ZWF0ZSBhIG5ldyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0aGUg
cGFyZW50IFVzZUVsZW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdEb2N1bWVudC5oCmluZGV4IGIwMTJiYTk4ZWVkZjczMmMwODJjMzYzYjBjYmUxMzAzNDc0
YzMwNDkuLjQ0NWU0ZjlmNDJjM2MyNzQwNzk3NmE2NGU5MTU0MDdmOGI1MzRkMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC00Myw3
ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25z
dCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8U1ZHRG9jdW1l
bnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2Rl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAppbmRl
eCA5Y2YwNDM3MTk0YThhMmZjYTVlNTI1YzdiZmY5ZmU4ZTk4YTUwYzMyLi5kMmMxZGU0N2VmYjc4
MTM5OGY0NDM4YjdjYTRlYTI2MGUyMjE5NzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgQ2FjaGVkU1ZH
Rm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQog
ICAgICAgICBpZiAoIW1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCB8fCAhZmlyc3RGb250RmFjZShy
ZW1vdGVVUkkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoYXV0byBj
b252ZXJ0ZWRGb250ID0gY29udmVydFNWR1RvT1RGRm9udCgqbV9leHRlcm5hbFNWR0ZvbnRFbGVt
ZW50KSkKLSAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAg
bV9jb252ZXJ0ZWRGb250ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRG
b250LnZhbHVlKCkpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZH
RG9jdW1lbnQgPSBudWxscHRyOwogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50
ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5o
CmluZGV4IGExNWVhZDBlMTY0MDkwMjdlZjkyMDRlYjkzM2I0ZjA1NGMzODU4MjMuLjM1M2QzZGU2
M2IwNjI4NjEzYWJhZjc3N2ZlYjI1M2M1YjYyNDkwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAg
IFNWR0ZvbnRFbGVtZW50KiBtYXliZUluaXRpYWxpemVFeHRlcm5hbFNWR0ZvbnRFbGVtZW50KGNv
bnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7CiAgICAgU1ZHRm9udEZhY2VFbGVtZW50KiBmaXJz
dEZvbnRGYWNlKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7CiAKLSAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fY29udmVydGVkRm9udDsKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZXh0ZXJu
YWxTVkdEb2N1bWVudDsKICAgICBTVkdGb250RWxlbWVudCogbV9leHRlcm5hbFNWR0ZvbnRFbGVt
ZW50OwogICAgIGNvbnN0IFJlZjxjb25zdCBTZXR0aW5ncz4gbV9zZXR0aW5nczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggYjg3YTNkYjA2ZjAx
MTQ3ZjE5YjhmNDMyNjlmZDQ3MWU4NGUyZWRmOS4uYjY3Mzk4YjBlNGY1NmZlN2FiY2IyNzRkMGUz
Njg0MzAzNjM1MDg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNj
cmlwdC5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRI
YXNoKCkKICAgICByZXR1cm4gbV9zY3JpcHRIYXNoOwogfQogCi12b2lkIENhY2hlZFNjcmlwdDo6
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtl
Q29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5o
CmluZGV4IDc1YmU0ZGI3MTU3OWUzMWFhZGE5NzA2OWQ5YmZmYzJjN2U2MzQzMjEuLjg2NTFlNjM5
YWQ5MDYxNzI4NTYxYzMyNGJmYTdhZjRjZjk3ZjZkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGlu
ZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNv
dXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAg
ICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAg
IHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXggNTQyNjZkZDkwODE5YzM0ZTkx
NTA4NDM0ODk0MmU5MTNhZGU4MWVkNC4uMGM4NDI4YmI5OWRiNmRmYjE2YTM0ODEzNGMzODI2ODM2
Y2NlNTQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRl
eHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRU
cmFjay5jcHAKQEAgLTQwLDEwICs0MCwxMCBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRU
cmFjayhDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogewog
fQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyKiBkYXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQ
b2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEg
PSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPigpOworICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDog
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4oKTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+
c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNv
dXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CkBAIC01MSwxMyArNTEsMTMgQEAgdm9pZCBD
YWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkK
ICAgICAgICAgY2xpZW50LT5kZXByZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKCp0aGlz
KTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgZG9VcGRhdGVCdWZmZXIoJmRhdGEp
OwogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoZGF0YSk7CiB9CiAKLXZvaWQgQ2Fj
aGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZp
bmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGRvVXBkYXRlQnVmZmVyKGRhdGEpOwog
ICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCmluZGV4IGY0NjMxNzgz
MjFlZGM3Y2E4Njk3MGNmNGFkZGE0MDg5NjkyOTY4ODUuLjA5YjQzMzlhMzdiNjczYjJhYzRmZGFl
MTQ2YjI5Yjk2NDc3N2ZjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmgKQEAgLTM1LDEwICszNSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExv
YWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRC
dWZmZXIqKTsKKyAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAppbmRleCBiOWE2NTg3
NTNjZTlmN2VjMzYzM2YxYTJmNzRlN2NjOWVhMzk4NTc0Li5kMmVmZjJkMmQ0MGM5Mjc3Mzg3NTZj
NGE4ZjBjYmI5MzQzYmUxMGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFN0cmluZyBDYWNo
ZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+
ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNo
TG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRYU0xTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5oCmluZGV4IGMwNGRkNGYxNmNmM2I3ZWNhMjU4OTEwYjllZmFmNDEyNTRl
MmQ3MjguLmJkMjMxMjE0ZjJkMjBiYTM5NjQ0NjAzNjZlMDQxYjk0MTM1YWM0Y2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaApAQCAt
NDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5n
JikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3Qg
VGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgU3RyaW5nIG1fc2hlZXQ7CiAgICAgUmVmUHRy
PFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAppbmRleCBkMDIwYWMzZGM4MDg0
NGE2N2EwN2NiNWIxZDE1OWY3MWMwY2RjZDE0Li5jZTUyY2ZlYmQ3NjFlNTY0NzVhMjAxZTgxNDM4
NTMzNGVhNGRiYTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlz
a0NhY2hlTW9uaXRvckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rp
c2tDYWNoZU1vbml0b3JDb2NvYS5oCkBAIC0zMiwxNyArMzIsMTcgQEAgdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2UqIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRGlza0NhY2hlTW9uaXRvciB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIHZvaWQgbW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7Ci0gICAg
c3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlHZXRGaWxlQmFja2VkU2hh
cmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7
CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRC
dWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAog
cHJpdmF0ZToKICAgICBEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBB
TDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAotICAgIHZvaWQgcmVzb3Vy
Y2VCZWNhbWVGaWxlQmFja2VkKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHJl
c291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImKTsKIAogICAgIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJl
cXVlc3Q7IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBt
X3Nlc3Npb25JRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rp
c2tDYWNoZU1vbml0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNr
Q2FjaGVNb25pdG9yQ29jb2EubW0KaW5kZXggOTNlZTk2Mzc0ZjAzYmEzMTI0NDNkMjgxYzUyYTQ4
NDA2OWRmMmEzMS4uZmE0YjkwM2JlZjkzOTQ4MWMyMmVhN2RmNTUxZThiNTVlN2UwZTUyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNv
Y29hLm1tCkBAIC00MiwxMyArNDIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhlIG1h
eGltdW0gbnVtYmVyIG9mIHNlY29uZHMgd2UnbGwgdHJ5IHRvIHdhaXQgZm9yIGEgcmVzb3VyY2Ug
dG8gYmUgZGlzayBjYWNoZWQgYmVmb3JlIHdlIGZvcmdldCB0aGUgcmVxdWVzdC4KIHN0YXRpYyBj
b25zdCBkb3VibGUgZGlza0NhY2hlTW9uaXRvclRpbWVvdXQgPSAyMDsKIAotUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IERpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFy
ZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNh
Y2hlZFJlc3BvbnNlKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5
R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVk
VVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCiB7CiAgICAgYXV0byBkYXRhID0gX0NGQ2Fj
aGVkVVJMUmVzcG9uc2VHZXRNZW1NYXBwZWREYXRhKGNhY2hlZFJlc3BvbnNlKTsKICAgICBpZiAo
IWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSk7CiB9CiAKIHZvaWQgRGlza0NhY2hlTW9uaXRvcjo6bW9uaXRvckZpbGVCYWNraW5n
U3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKQEAg
LTExMyw3ICsxMTMsNyBAQCBEaXNrQ2FjaGVNb25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSQogICAgIF9DRkNhY2hlZFVS
TFJlc3BvbnNlU2V0QmVjYW1lRmlsZUJhY2tlZENhbGxCYWNrQmxvY2soY2FjaGVkUmVzcG9uc2Us
IGJsb2NrVG9SdW4sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOwogfQogCi12b2lkIERpc2tD
YWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBmaWxlQmFja2VkQnVmZmVyKQordm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJl
Y2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQogewogICAgIGF1
dG8qIHJlc291cmNlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVz
dChtX3Jlc291cmNlUmVxdWVzdCwgbV9zZXNzaW9uSUQpOwogICAgIGlmICghcmVzb3VyY2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCmluZGV4
IGI1MmY5NWE2NWQ1YmI3YWY5MGViZGE0N2VmMDAyZWI4ODdiY2Y3MjkuLjY2YjkzNThlYzUzMTEx
NDg0ODIyYTdjYzI0ZTdmM2E5OTE3MDY1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ7CiBjbGFzcyBSZXNvdXJj
ZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsK
IAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlciBmaW5hbCA6IHByaXZhdGUgUHJldmlld0NvbnZl
cnRlckNsaWVudCwgcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgewpAQCAtNTAsNyAr
NTAsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7CiAgICAgYm9vbCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXImKTsKKyAgICBib29sIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOwogICAgIGJvb2wgZGlkRmluaXNoTG9hZGluZygpOwogICAgIHZvaWQg
ZGlkRmFpbCgpOwogCkBAIC02MiwxMiArNjIsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByZXZp
ZXdDb252ZXJ0ZXJEaWRGaW5pc2hVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgZmluYWwgeyB9
OwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxVcGRhdGluZyhQcmV2aWV3Q29udmVy
dGVyJikgZmluYWw7CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5n
KFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKLSAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRS
ZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7
CisgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRl
ciYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHByZXZp
ZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsK
ICAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsQ29udmVydGluZyhQcmV2aWV3Q29udmVy
dGVyJikgZmluYWw7CiAKICAgICAvLyBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIKLSAgICB2b2lk
IHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXIm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmKSBmaW5hbDsK
KyAgICB2b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdD
b252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqKT4mJikgZmluYWw7CiAgICAgdm9pZCBwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29u
dmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX2NvbnZl
cnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5tbQppbmRleCA1MmZmZDUzN2JmZDYyZmY2N2RlY2Q0NjRiNjVmYjZjOTA1NzA2MmQ3Li43NDhm
ZWRiOGVhNDhmYWJjODI1ZmI1YjY3NzE3NDE1MjA1YjMxYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC02Myw3ICs2Myw3IEBA
IHN0YXRpYyBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbWFrZUNsaWVudChjb25zdCBS
ZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjCiAgICAgcmV0dXJuIGVtcHR5Q2xpZW50KCk7CiB9CiAK
LWJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK2Jvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fZmlu
aXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTE0Nyw3ICsxNDcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0
ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYgYwogICAgIH0pOwogfQogCi12
b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQ
cmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBMZWdhY3lQ
cmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZl
cnRlciYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgYXV0byBy
ZXNvdXJjZUxvYWRlciA9IG1fcmVzb3VyY2VMb2FkZXIuZ2V0KCk7CiAgICAgaWYgKCFyZXNvdXJj
ZUxvYWRlcikKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnBy
b3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgYwogICAg
IG1fY2xpZW50LT5kaWRSZXF1ZXN0UGFzc3dvcmQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCi12b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQ
cmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252
ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBBU1NFUlRfVU5VU0VEKGNvbnZlcnRlciwgJmNvbnZlcnRlciA9PSBtX2NvbnZlcnRlcik7
CiAgICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEtPmdldCgpLmdldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IGEzNjNiN2IwMmNiM2M5NzdkNTVmY2RmY2Nj
YmE0MzFkMzUwNzA2ODMuLmVhNjE1ZGZmNGRkMGVkNTE0YmZmNjQ0MjY0N2VjNDYyMGY2MzIyYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMzgsMTMgKzM4LDEzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWlu
dDhfdDsKIAotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7
CiBjbGFzcyBLZXlib2FyZEV2ZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBj
bGFzcyBUZXh0Q2hlY2tlckNsaWVudDsKIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CkBAIC03OSw3
ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTW92ZVJhbmdlQWZ0ZXJE
ZWxldGUoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTaW1wbGVSYW5nZSYpID0gMDsKIAogI2lm
IEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0
YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBjb25zdCBT
dHJpbmcmIC8qIGNvbnRlbnRUeXBlICovLCBjb25zdCBTdHJpbmcmIC8qIHByZWZlcnJlZEZpbGVO
YW1lICovLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0
ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNv
bnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogcHJlZmVycmVk
RmlsZU5hbWUgKi8sIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlk
ZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmlu
ZyYgLyogZmlsZVBhdGggKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1l
bnRzKFZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRp
ZmllciAqLykgeyB9CkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRW5kRWRpdGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9u
VG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFj
ZXMoVGV4dENoZWNraW5nUmVzdWx0KSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggNmQ1MWM1
ZTUxNmEzZGJmYmI3NDc2ZWQ5NGIwNDFlNmU1NmY3M2MwZi4uZjM3ZDA1OWIwZWI1MjZjNTQ5YzBk
N2RlYjRlYTVhMDg4MGZmMGQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xOTUyLDcgKzE5NTIs
NyBAQCBjb25zdCBTdHJpbmcmIFBhZ2U6OnVzZXJTdHlsZVNoZWV0KCkgY29uc3QKICAgICAvLyBh
bmQgd2hhdCBzaG91bGQgaGFwcGVuIHdoZW4gaXQgZmluaXNoZXMgbG9hZGluZywgZXNwZWNpYWxs
eSB3aXRoIHJlc3BlY3QKICAgICAvLyB0byB3aGVuIHRoZSBsb2FkIGV2ZW50IGZpcmVzLCB3aGVu
IERvY3VtZW50OjpjbG9zZSBpcyBjYWxsZWQsIGFuZCB3aGVuCiAgICAgLy8gbGF5b3V0L3BhaW50
IGFyZSBhbGxvd2VkIHRvIGhhcHBlbi4KLSAgICBhdXRvIGRhdGEgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwor
ICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1f
dXNlclN0eWxlU2hlZXRQYXRoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBtX3Vz
ZXJTdHlsZVNoZWV0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJp
YWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4
IGQ3NTBjZmY5NjQyMzAwNTJmNzk5NWEyN2U4ODcyOWQyY2RlODA0ODAuLmFjNTNjYjE0YmYwMGU1
MTY0N2M5ZWM5MTEwOThiZWEwMzYxNTExMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlh
bGl6ZXIuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFs
aXplRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFN0cmlu
ZyB0ZXh0ID0gYWNjdW11bGF0b3Iuc2VyaWFsaXplTm9kZXMoKmRvY3VtZW50LT5kb2N1bWVudEVs
ZW1lbnQoKSwgU2VyaWFsaXplZE5vZGVzOjpTdWJ0cmVlSW5jbHVkaW5nTm9kZSk7Ci0gICAgbV9y
ZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4dCwgVW5l
bmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQo
eyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKHRleHQsIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVz
KSkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiAKICAgICBmb3IgKGF1dG8mIG5v
ZGUgOiBub2RlcykgewpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNl
cmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwgY29uc3QgVVJM
CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2hlY2sgd2hldGhlciBhIGNoYXJzZXQgaGFz
IGJlZW4gc3BlY2lmaWVkIGFuZCBpZiBub25lIHdhcyBmb3VuZCBhZGQgb25lLgogICAgICAgICBU
ZXh0RW5jb2RpbmcgdGV4dEVuY29kaW5nKHN0eWxlU2hlZXQtPmNvbnRlbnRzKCkuY2hhcnNldCgp
KTsKICAgICAgICAgQVNTRVJUKHRleHRFbmNvZGluZy5pc1ZhbGlkKCkpOwotICAgICAgICBtX3Jl
c291cmNlcy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJfcywgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBVbmVuY29k
YWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOworICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQo
eyB1cmwsICJ0ZXh0L2NzcyJfcywgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVu
Y29kZShjc3NUZXh0LnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkg
fSk7CiAgICAgICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogICAgIH0KIH0KQEAgLTI3Myw3
ICsyNzMsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hl
ZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVudCogaW1hZwogICAgIGlmICghaW1hZ2UgfHwgaW1h
Z2UtPmltYWdlKCkgPT0gJkltYWdlOjpudWxsSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1h
Z2VGb3JSZW5kZXJlcihpbWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKKyAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VG
b3JSZW5kZXJlcihpbWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKICAgICBpZiAoIWRhdGEpCiAg
ICAgICAgIGRhdGEgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VTZXJpYWxpemVyLmgKaW5kZXggYmZjYmU3YjhkYmZkNDlmNzlkMWEwMGM4MDA0ZWFkZTI5YzQ4
MDgyMS4uZmYzZTJlMWZjYjA2MWE0ZmZmYzVkZWZkNGMyZDE4MGFmNDliZjc3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAg
c3RydWN0IFJlc291cmNlIHsKICAgICAgICAgVVJMIHVybDsKICAgICAgICAgU3RyaW5nIG1pbWVU
eXBlOwotICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICB9OwogCiAgICAgZXhwbGljaXQgUGFn
ZVNlcmlhbGl6ZXIoVmVjdG9yPFJlc291cmNlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TaGFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKaW5k
ZXggM2VkZDljNzFiYjI3ZTUwZmRmZGZhY2VlMjcxZWZlZmI3Y2IyOTFmNS4uNjhiMGRkMmMzMDZi
Nzk0NTMxZDI5YmQxNDBkY2I0MmI0OGUyNzM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TaGFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCkBA
IC0zOSw3ICszOSw3IEBAIHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3RmlsZSB7CiAg
ICAgU3RyaW5nIGZpbGVOYW1lOwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBm
aWxlRGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAgICAgCiBz
dHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0
YVJlYWRlci5jcHAKaW5kZXggZDY4MDVhM2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRm
Mi4uNzU4MzZiODc5MTQzYjYwYTdmMzUxOTcwMzIwN2I2YWQzZDhkNGY4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFNoYXJl
RGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcm
IGZpbGVOYW1lKQogCiAgICAgUmF3RmlsZSBmaWxlOwogICAgIGZpbGUuZmlsZU5hbWUgPSBmaWxl
TmFtZTsKLSAgICBmaWxlLmZpbGVEYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwg
YXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZl
ci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9zaGFyZURhdGEu
ZmlsZXMuYXBwZW5kKFdURk1vdmUoZmlsZSkpOwogICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKaW5kZXggM2Q4MGQ3YTFkNDI0NTg1MjBi
ZDU0MzhlZjM2ZDhhNTdjYjVkNGU3ZS4uNzlhMjM1MzU1ZjFlOGVmODYxNTM1MmU2MzljOGM2MzE4
ZjQwMzc3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2Rpbmcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCkBAIC0zMSw3ICsz
MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWREZWNvZGVyIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGVuY29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
U3RyaW5nJikgPSAwOwogCi0gICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBmaW5pc2hFbmNvZGluZygpID0gMDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAg
dm9pZCBlbmNvZGVFbnVtKGNvbnN0IFN0cmluZyYga2V5LCBUIHZhbHVlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmgKaW5kZXggZTM4MDZlODdkZjc5YTNkOWI1
Y2FlMTIxNGRlNjZhYTJhNjU4NDdkYi4uZmM2NmMzNjVhMmYyOWE0Yzc4ZTYwNjE5ZTQ3YTcxYzcy
NThkOGZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5o
CkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5n
SW5mbz4gbV9ub3dQbGF5aW5nSW5mbzsKICAgICBzdHJ1Y3QgQXJ0d29ya0NhY2hlIHsKICAgICAg
ICAgU3RyaW5nIHNyYzsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwor
ICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogICAgIH07
CiAgICAgc3RkOjpvcHRpb25hbDxBcnR3b3JrQ2FjaGU+IG1fbm93UGxheWluZ0luZm9BcnR3b3Jr
OwogICAgIGJvb2wgbV9zZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCmluZGV4IDE1NzMxZWIyM2ZhNzY5NDk2MGRk
ODA0OTZmYThmMmY5ZThjNzc4MGYuLjA3ZWQ0OGU1ODg0ZWNlZWRjNjFmZDkzZTZiMjIxNzFiZTg4
NTg5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC04OSw3ICs4
OSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiB0eXBlKQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHR5cGUpCitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGFzdGVi
b2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAg
ICBpZiAoYXV0byogc3RyYXRlZ3kgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCkpCiAgICAgICAgIHJldHVybiBzdHJhdGVneS0+cmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKGluZGV4LCB0eXBlLCBuYW1lKCksIGNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmgKaW5kZXggMTE0NTQ2MjdlMGNkY2NhMTNkNzM5MzRhYTA0MzZlZTdmNzk0OTNh
ZS4uMzU3NjNlZTEyYTM5MGVmYzg0NTJjMzU4MDZiNTEyYmU0MjlhZDk3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtNjEsMTMgKzYxLDEzIEBAIHR5cGVkZWYgc3RydWN0
IEhXTkRfXyogSFdORDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVu
dDsKIGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3Mg
UGFzdGVib2FyZFN0cmF0ZWd5OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNpbXBsZVJhbmdlOwogCkBAIC04MywxNCArODMsMTQg
QEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFz
dGVib2FyZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICBib29s
IGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZE
Rm9ybWF0OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgIFN0
cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAg
ICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAgU3RyaW5n
IGNvbnRlbnRPcmlnaW47CkBAIC0xMjAsMTcgKzEyMCwxNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZElt
YWdlIHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZEltYWdlKCk7CiAgICAgUmVmUHRy
PEltYWdlPiBpbWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1h
dDsKICNlbmRpZgogI2lmICFQTEFURk9STShXSU4pCiAgICAgUGFzdGVib2FyZFVSTCB1cmw7CiAj
ZW5kaWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKSkKLSAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVzb3VyY2VNSU1FVHlwZTsKICAgICBW
ZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBzdWdnZXN0ZWROYW1lOwogICAgIEZs
b2F0U2l6ZSBpbWFnZVNpemU7CkBAIC0xNDgsMTYgKzE0OCwxNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplIHBy
ZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUg
PSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5nJikg
PSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNp
emUgPSB7IH0pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZEltYWdlKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJl
ZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFk
VVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSA9IDA7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXIm
KSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAg
ICB2aXJ0dWFsIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNp
emUgPSB7IH0pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURihGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkRGF0YUJ1ZmZlcihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5h
bWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAw
OwogI2VuZGlmCiB9OwogCkBAIC0xNzIsNyArMTcyLDcgQEAgc3RydWN0IFBhc3RlYm9hcmRGaWxl
UmVhZGVyIHsKICAgICB2aXJ0dWFsIH5QYXN0ZWJvYXJkRmlsZVJlYWRlcigpID0gZGVmYXVsdDsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIC8qIHR5cGUgKi8pIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7
CiB9OwogCiBjbGFzcyBQYXN0ZWJvYXJkIHsKQEAgLTI5Nyw3ICsyOTcsNyBAQCBwdWJsaWM6CiAg
ICAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IHBhc3RlYm9hcmRJdGVtSW5mbyhz
aXplX3QgaW5kZXgpIGNvbnN0OwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHR5cGUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIFJlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0
cmluZyYgdGl0bGUpOwogCiAgICAgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KQEAgLTMyOSw3ICszMjksNyBAQCBwcml2
YXRlOgogICAgIHN0YXRpYyB2b2lkIGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShM
aXN0SGFzaFNldDxTdHJpbmc+JiByZXN1bHRUeXBlcywgY29uc3QgU3RyaW5nJiBjb2NvYVR5cGUp
OwogICAgIFN0cmluZyByZWFkU3RyaW5nRm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYpOwog
ICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCk7Ci0gICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5
Q2hlY2soY29uc3QgU3RyaW5nJik7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKaW5kZXggNmRjZWNi
NmM5ODgwOGY5NWE0YmU1MWQwMGQ2ZGI4ODg3NWY4ODk3OC4uN2I0YjNkMzZhYTY4MDM2MTE4Nzkx
MzFiNWExYjIyNmI1ODhkMzYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRDdXN0b21EYXRhLmNwcApAQCAtMzMsMTMgKzMzLDEzIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotc3RhdGljIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+
PiBjb3B5UGxhdGZvcm1EYXRhKGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRC
dWZmZXI+PiYgb3RoZXIpCitzdGF0aWMgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiBjb3B5UGxhdGZvcm1EYXRhKGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJp
bmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mIG90aGVyKQogewogICAgIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4ob3RoZXIpKQogICAgICAgICByZXR1cm4geyBzdGQ6
OmdldDxTdHJpbmc+KG90aGVyKSB9OwogCi0gICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
UmVmPFNoYXJlZEJ1ZmZlcj4+KG90aGVyKSkKLSAgICAgICAgcmV0dXJuIHsgc3RkOjpnZXQ8UmVm
PFNoYXJlZEJ1ZmZlcj4+KG90aGVyKS5jb3B5UmVmKCkgfTsKKyAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG90aGVyKSkKKyAgICAgICAg
cmV0dXJuIHsgc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihvdGhlcikuY29w
eVJlZigpIH07CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtODAsNyArODAsNyBAQCBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6UGFzdGVib2FyZEN1c3RvbURhdGEoU3RyaW5nJiYgb3JpZ2luLCBWZWN0
b3I8RW50cnk+JiYgZGF0YQogewogfQogCi1SZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFz
dGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8U2hhcmVk
QnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QK
IHsKICAgICBjb25zdGV4cHIgdW5zaWduZWQgY3VycmVudEN1c3RvbURhdGFTZXJpYWxpemF0aW9u
VmVyc2lvbiA9IDE7CiAKQEAgLTg5LDcgKzg5LDcgQEAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogICAg
IGVuY29kZXIgPDwgbV9vcmlnaW47CiAgICAgZW5jb2RlciA8PCBzYW1lT3JpZ2luQ3VzdG9tU3Ry
aW5nRGF0YSgpOwogICAgIGVuY29kZXIgPDwgb3JkZXJlZFR5cGVzKCk7Ci0gICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1
ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVm
ZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogUGFzdGVib2FyZEN1c3RvbURhdGEg
UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2RlciYmIGRlY29kZXIpCkBAIC0xMjQsNyArMTI0LDcgQEAgUGFzdGVib2FyZEN1
c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RG
OjpQZXJzaXN0ZW4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9tRGF0
YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICByZXR1cm4gZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihidWZmZXIuZGVjb2RlcigpKTsKIH0K
QEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZVN0cmlu
Zyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgYWRkT3JNb3Zl
RW50cnlUb0VuZCh0eXBlKS5wbGF0Zm9ybURhdGEgPSB7IHZhbHVlIH07CiB9CiAKLXZvaWQgUGFz
dGVib2FyZEN1c3RvbURhdGE6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OndyaXRlRGF0YShj
b25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7
CiAgICAgYWRkT3JNb3ZlRW50cnlUb0VuZCh0eXBlKS5wbGF0Zm9ybURhdGEgPSB7IFdURk1vdmUo
ZGF0YSkgfTsKIH0KQEAgLTIwMiwxNCArMjAyLDE0IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpIGNvbnN0
CiAgICAgcmV0dXJuIGN1c3RvbURhdGE7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1Jl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1
ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6
IG1fZGF0YSkgewogICAgICAgICBpZiAoZW50cnkudHlwZSAhPSB0eXBlKQogICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJl
ZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpn
ZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkuY29weVJlZigpOworICAg
ICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpnZXQ8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpLmNvcHlSZWYoKTsK
IAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0yNjUsMTEgKzI2NSwxMSBAQCB2
b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmb3JFYWNoQ3VzdG9tU3RyaW5nKEZ1bmN0aW9uPHZv
aWQoY29uc3QgU3RyaW5nJiB0eXBlLAogICAgIH0KIH0KIAotdm9pZCBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+
PiYgZGF0YSk+JiYgZnVuY3Rpb24pIGNvbnN0Cit2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpm
b3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiYgZGF0YSk+JiYgZnVuY3Rpb24pIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6
IG1fZGF0YSkgewogICAgICAgICBhdXRvJiBkYXRhID0gZW50cnkucGxhdGZvcm1EYXRhOwotICAg
ICAgICBpZiAoKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpn
ZXQ8U3RyaW5nPihkYXRhKS5pc051bGwoKSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
U2hhcmVkQnVmZmVyPj4oZGF0YSkpCisgICAgICAgIGlmICgoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxTdHJpbmc+KGRhdGEpICYmICFzdGQ6OmdldDxTdHJpbmc+KGRhdGEpLmlzTnVsbCgpKSB8fCBz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZGF0YSkp
CiAgICAgICAgICAgICBmdW5jdGlvbihlbnRyeS50eXBlLCBkYXRhKTsKICAgICB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCBiZmFm
YzNlYzYwNzYwNTVhYzE4Nzg1NGNjZDg4NzdjOGM1ZmJmMDFkLi45N2ZmOTg1ZTI0ZTExYjRjN2Ji
NDE0MzczN2YwMjg0MGMzNWZmY2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRDdXN0b21EYXRhLmgKQEAgLTM0LDggKzM0LDggQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZEN1c3Rv
bURhdGEgewogcHVibGljOgpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICAgICAgU3Ry
aW5nIHR5cGU7CiAgICAgICAgIFN0cmluZyBjdXN0b21EYXRhOwotICAgICAgICBzdGQ6OnZhcmlh
bnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4gcGxhdGZvcm1EYXRhOworICAgICAgICBzdGQ6
OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHBsYXRmb3JtRGF0
YTsKICAgICB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUGFzdGVib2FyZEN1c3RvbURhdGEoKTsK
QEAgLTYxLDE2ICs2MSwxNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW4oKSBj
b25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIHZvaWQgc2V0T3JpZ2luKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luKSB7IG1fb3JpZ2luID0gb3JpZ2luOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRC
dWZmZXIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JU
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29k
ZXImJik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBl
KSBjb25zdDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihj
b25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwogICAgIFN0cmluZyByZWFkU3RyaW5nSW5DdXN0b21E
YXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAKICAgICB2b2lkIHdyaXRlU3RyaW5nKGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdm9pZCB3cml0ZURh
dGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIHZv
aWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgZGF0YSk7CiAgICAgdm9pZCB3cml0ZVN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiAgICAgdm9pZCBjbGVhcigpOwpAQCAt
ODQsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZvckVhY2hUeXBlKEZ1bmN0aW9uPHZv
aWQoY29uc3QgU3RyaW5nJik+JiYpIGNvbnN0OwogICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3Ry
aW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEp
PiYmKSBjb25zdDsKLSAgICB2b2lkIGZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBS
ZWY8U2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmKSBjb25zdDsKKyAgICB2b2lkIGZvckVhY2hQbGF0
Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiBkYXRh
KT4mJikgY29uc3Q7CiAgICAgdm9pZCBmb3JFYWNoQ3VzdG9tU3RyaW5nKEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpPiYmKSBjb25zdDsKIAogICAg
IGJvb2wgaGFzRGF0YSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkU3RyYXRlZ3kuaAppbmRleCBhNzg4ZmI3MzBlZGMxYzNlZmFkZTg3MGE0MDExZjhjNGJiYWMy
YjQ1Li5jNDFlMDg1MjQ0OTZjNjdmMWYxNTAzOGZiYjI2ZTljMjlkYTY5OGM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsMTEgKzMxLDEx
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOwotY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDb250
ZXh0OwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVj
dCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBh
c3RlYm9hcmRVUkw7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBnZXRU
eXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQ
YXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5n
PiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAg
LTYzLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBpbnQ2NF90IGFkZFR5cGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50
NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
LSAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVm
ZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJvYXJk
VVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldENvbG9yKGNvbnN0IENvbG9yJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7
CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFN0cmluZyB1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7CiAjZW5kaWYKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3Rl
Ym9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAg
ICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZp
cnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IGlu
Zm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
ID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5m
bz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBp
bnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTg2
LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRU
ZXh0RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAg
dmlydHVhbCBWZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIFNlbGVjdGlvbkRhdGEmJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaXBi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZP
Uk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdy
aXRlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRh
LmgKaW5kZXggYjQ1Y2UxZjkzOGNiYTUwNjYzOGI2YTQxMjFkNzY3MzYzZjhiZTUyMi4uOGUyYzhm
YjkyZDk3MmZkNDIxNjAwN2JjODc3NzUyY2ZkMzQ4Zjg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGEgZmluYWwgewogcHVi
bGljOgpAQCAtNTEsMTQgKzUxLDE0IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CiAgICAgICAgIGJvb2wgY2FuU21hcnRDb3B5T3JE
ZWxldGU7Ci0gICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJB
cmNoaXZlRm9ybWF0OwotICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0
YUluUlRGREZvcm1hdDsKLSAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGFJblJURkZvcm1hdDsKLSAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGFJblJURkRGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZv
cm1hdDsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmlu
Z0Zvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgICAgIFN0cmlu
ZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVz
OwotICAgICAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnRE
YXRhOworICAgICAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAj
ZW5kaWYKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybUNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29u
dGVudEZpbHRlci5oCmluZGV4IDNmNDgzMmE1YTY1OGMxY2M3YzBhYTEzYjI2ZTBlYTQ3MzNlOWQz
YjcuLjllNzJlNDRhMmVhYzRkOGVmNzMwYjk4NzFkMGVjNTA4ZWQ5ZmFjNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCkBAIC0zNCw3ICsz
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpA
QCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2
ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGZpbmlzaGVkQWRkaW5nRGF0YSgpID0gMDsKLSAgICB2aXJ0dWFsIFJlZjxTaGFyZWRCdWZmZXI+
IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCA9IDA7CiAjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQogICAgIHZpcnR1YWwgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
IHVuYmxvY2tIYW5kbGVyKCkgY29uc3QgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IGJhNjgxZmUwNTUwNDc2Y2FiOGIzZjZm
MGJjYTU0MzY0YWZjMjBkZWEuLjcxZGZiOTNlNTc1NjBlMzNhN2Y2YzgwYzIwZjkyZDViMmNhZWMx
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2Fy
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBA
IC00NywxNCArNDcsMTQgQEAgc3RydWN0IHdwZV9wYXN0ZWJvYXJkOwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDb2xvcjsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVj
dGlvbkRhdGE7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVt
SW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwogc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgUGxhdGZvcm1QYXN0ZWJvYXJkIHsKIHB1YmxpYzoKQEAgLTcyLDcgKzcyLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1QYXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBl
Rm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBkb21UeXBlLCBJbmNsdWRlSW1hZ2VU
eXBlcyA9IEluY2x1ZGVJbWFnZVR5cGVzOjpObyk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1l
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CkBAIC04Niw3ICs4Niw3IEBAIHB1
YmxpYzoKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgd2lsbCByZXR1cm4gMCBpZiBwYXN0ZWJvYXJk
IG93bmVyc2hpcCBoYXMgYmVlbiB0YWtlbiBmcm9tIHVzLgogICAgIFdFQkNPUkVfRVhQT1JUIGlu
dDY0X3QgY29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZmZXJG
b3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJvYXJk
VVJMJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRDb2xvcihjb25zdCBDb2xvciYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKQEAgLTk0LDcgKzk0LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdl
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNv
bnN0IFBhc3RlYm9hcmRVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgaW50IGNvdW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4IDRiZWE0ZjE4ZTRjNzlkZWI1NzQ0ZjI4MGU5
ZjhmOWJjMTgzYzZmM2IuLjYzMWFkZTdjY2Y3YWQyOTY5M2EyZTc2NTFmZTZhOWNkZWJkMzc3M2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCkBAIC02
Myw3ICs2Myw3IEBAIGNvbnN0IFJlc291cmNlRXJyb3ImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZp
ZXdFcnJvcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJldmlld0Vycm9yOwogfQogCi1jb25zdCBT
aGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkgY29uc3QKK2NvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gKm1fcHJldmlld0RhdGEtPmdldCgpOwogfQpAQCAtOTAsNyAr
OTAsNyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSgpCiAgICAg
fSk7CiB9CiAKLXZvaWQgUHJldmlld0NvbnZlcnRlcjo6YXBwZW5kRnJvbUJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6YXBwZW5kRnJvbUJ1
ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgd2hpbGUg
KGJ1ZmZlci5zaXplKCkgPiBtX2xlbmd0aEFwcGVuZGVkKSB7CiAgICAgICAgIGF1dG8gbmV3RGF0
YSA9IGJ1ZmZlci5nZXRTb21lRGF0YShtX2xlbmd0aEFwcGVuZGVkKTsKQEAgLTIzOSw3ICsyMzks
NyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0
ZXJDbGllbnQmIGNsaWVudCkKICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENv
bnZlcnRpbmcoKnRoaXMpOwogfQogCi12b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmRlbGVnYXRlRGlk
UmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBQcmV2aWV3Q29udmVy
dGVyOjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEpCiB7CiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzIHsgUmVmIHsgKnRoaXMgfSB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXggMDZiNzZmNTk4
NTE4MmI5NzNlNjNmMzk1OTM5NGVhOWQzNDlhYjcyYS4uOTIwMmVkZGQ5ZTEwNWIyNzM1ZWRjMTQ2
ZjI2NjRjMTNjYjljMzQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJl
c291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZp
ZXc7CiBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJD
bGllbnQ7CkBAIC01MSw3ICs1MSw3IEBAIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI7
CiBzdHJ1Y3QgUHJldmlld1BsYXRmb3JtRGVsZWdhdGUgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3
UGxhdGZvcm1EZWxlZ2F0ZT4gewogICAgIHZpcnR1YWwgflByZXZpZXdQbGF0Zm9ybURlbGVnYXRl
KCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZFJl
Y2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRlbGVnYXRlRGlkRmluaXNoTG9hZGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVsZWdhdGVEaWRGYWlsV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiB9OwpA
QCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHByZXZp
ZXdGaWxlTmFtZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwcmV2aWV3VVRJ
KCkgY29uc3Q7CiAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgcHJldmlld0Vycm9yKCkgY29uc3Q7
Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyJiBwcmV2aWV3RGF0YSgpIGNvbnN0OworICAgIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHByZXZpZXdEYXRhKCkgY29uc3Q7CiAKICAgICB2b2lk
IGZhaWxlZFVwZGF0aW5nKCk7CiAgICAgdm9pZCBmaW5pc2hVcGRhdGluZygpOwpAQCAtOTYsNyAr
OTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNQbGF0Zm9ybVBhc3N3b3JkRXJyb3IoY29uc3Qg
UmVzb3VyY2VFcnJvciYpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBp
dGVyYXRlQ2xpZW50cyhUJiYgY2FsbGJhY2spOwotICAgIHZvaWQgYXBwZW5kRnJvbUJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGFwcGVuZEZyb21CdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkQWRkQ2xpZW50KFByZXZpZXdDb252
ZXJ0ZXJDbGllbnQmKTsKICAgICB2b2lkIGRpZEZhaWxDb252ZXJ0aW5nV2l0aEVycm9yKGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZEZhaWxVcGRhdGluZygpOwpAQCAtMTA4LDcg
KzEwOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVVubG9ja1dpdGhQYXNzd29yZChj
b25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlCi0gICAgdm9p
ZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAg
IHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JikgZmluYWw7CiAgICAgdm9pZCBkZWxlZ2F0ZURpZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsKICAg
ICB2b2lkIGRlbGVnYXRlRGlkRmFpbFdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikgZmlu
YWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJDbGll
bnQuaAppbmRleCAwNGVhMzY4MDY5MmIyNTJhMTk4OWMyNmNhMjA0MjEyNzc3YWEzYjdiLi45Y2Vl
OTMzMjBiMjM4YjRjZDczY2RkMmUwMzAyYzNiZjRkYWQ2OGJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oCkBAIC0zMyw3ICszMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUHJldmlld0NvbnZlcnRlcjsKIGNsYXNzIFJl
c291cmNlRXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogCiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNsaWVudCA6IENhbk1ha2VXZWFrUHRy
PFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ+IHsKICAgICB2aXJ0dWFsIH5QcmV2aWV3Q29udmVydGVy
Q2xpZW50KCkgPSBkZWZhdWx0OwpAQCAtNDIsNyArNDIsNyBAQCBzdHJ1Y3QgUHJldmlld0NvbnZl
cnRlckNsaWVudCA6IENhbk1ha2VXZWFrUHRyPFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ+IHsKICAg
ICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZpbmlzaFVwZGF0aW5nKFByZXZpZXdD
b252ZXJ0ZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWls
VXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJldmll
d0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZl
cnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgbmV3RGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG5ld0RhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxDb252ZXJ0aW5nKFBy
ZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaAppbmRleCA4Mjc4NjM5M2ZjZWQ3NTRjODVmN2Iy
ODkxMjUyZjUxNmJlZDBkNTQ5Li5iOTg2ZWU0MGQxOTc1MTc0ZjU0YWQyOWExNjhjYWRmMTg5NDU2
YzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVy
UHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVy
UHJvdmlkZXIuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3Qg
UHJldmlld0NvbnZlcnRlclByb3ZpZGVyIDogQ2FuTWFrZVdlYWtQdHI8UHJldmlld0NvbnZlcnRl
clByb3ZpZGVyPiB7CiAgICAgdmlydHVhbCB+UHJldmlld0NvbnZlcnRlclByb3ZpZGVyKCkgPSBk
ZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3
Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFNoYXJlZEJ1ZmZlciopPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByb3ZpZGVNYWluUmVz
b3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252
ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSA9IDA7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1l
bnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZv
LmgKaW5kZXggYTFjYzc2OTVjMGE2M2VkNzg3ZTIxMGE3YzgyNzc3NjdkY2NlNzFhZi4uMWUxMmI5
NTU1ODAyOTJjMDNhNTc4ZWYzZjc4YjE1N2VkNWZlYzMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaApAQCAtMzAsNyArMzAsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNp
ZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3QgUHJv
bWlzZWRBdHRhY2htZW50SW5mbyB7CiAjZW5kaWYKIAogICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0
aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBh
ZGRpdGlvbmFsRGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9u
YWxEYXRhOwogCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggYmJlMzkyM2EyMDdhMGU5MzYxMTczMDc0
Zjk3NjA3ZmFkMDU4N2RmMi4uOTdlZjZiZTRmODFmMWM0NTkyYzM1MjEwZDk3ZDlhNmMyODg1NTUx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zNyw1MiAr
MzcsNTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1
ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK0ZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IHNpemUpCiB7CiAgICAgYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi1TaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK0ZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IHNpemUpCiB7CiAgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEpLCBzaXplKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkK
ICAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQo
eyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKSB9KTsKIH0KIAotU2hh
cmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIp
CitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKERhdGFTZWdt
ZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUoKSkK
IHsKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92
ZShwcm92aWRlcikpIH0pOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8
dWludDhfdD4mJiBkYXRhKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewogICAgIGFwcGVuZChXVEZNb3ZlKGRh
dGEpKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBhcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKIH0KIAogI2lmIFVTRShHU1RSRUFNRVIpCi1SZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVy
KQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihtYXBwZWRCdWZmZXIpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKG1hcHBlZEJ1ZmZlcikpOwogfQogCi1T
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVm
ZmVyKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihHc3RN
YXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogICAgIDogbV9zaXplKG1hcHBlZEJ1ZmZl
ci5zaXplKCkpCiB7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKCZtYXBwZWRCdWZmZXIpIH0pOwogfQogI2VuZGlmCiAKLXN0YXRpYyBWZWN0b3I8dWludDhf
dD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVj
dG9yJiBzZWdtZW50cywgc2l6ZV90IHNpemUpCitzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJp
bmVTZWdtZW50c0RhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRW
ZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gY29t
YmluZWREYXRhOwogICAgIGNvbWJpbmVkRGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUp
OwpAQCAtOTIsMTkgKzkyLDE5IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21l
bnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJu
IGNvbWJpbmVkRGF0YTsKIH0KIAotUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKSBjb25zdAorUmVmPFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKSBjb25zdAogewogICAgIGlmIChtX2NvbnRp
Z3VvdXMpCi0gICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpIH07CisgICAgICAgIHJl
dHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKj4odGhpcykpIH07CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkK
LSAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBpZiAobV9zZWdtZW50cy5zaXpl
KCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSht
X3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8g
Y29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwot
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5l
ZERhdGEpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5l
ZERhdGEpKTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBj
b25zdAorVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkg
Y29uc3QKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBkYXRhLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoc2l6ZSgpKTsKQEAgLTExNCw3ICsxMTQsNyBAQCBWZWN0b3I8dWludDhfdD4g
U2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLVZl
Y3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkKK1ZlY3Rvcjx1aW50OF90PiBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCiB7CiAgICAgaWYgKG1fc2VnbWVudHMu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTI5LDEzICsxMjksMTMgQEAgVmVj
dG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKQogICAgIHJldHVybiBjb21iaW5l
ZERhdGE7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3IFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURh
dGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdAorU2hhcmVkQnVmZmVyRGF0YVZpZXcgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdAogewogICAg
IGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkqIGVsZW1lbnQgPSBnZXRTZWdtZW50Rm9yUG9z
aXRpb24ocG9zaXRpb24pOwogICAgIHJldHVybiB7IGVsZW1lbnQtPnNlZ21lbnQuY29weVJlZigp
LCBwb3NpdGlvbiAtIGVsZW1lbnQtPmJlZ2luUG9zaXRpb24gfTsKIH0KIAotY29uc3QgU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBTaGFyZWRCdWZmZXI6OmdldFNlZ21lbnRG
b3JQb3NpdGlvbihzaXplX3QgcG9zaXRpb24pIGNvbnN0Citjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpn
ZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aW9uKSBjb25zdAogewogICAgIFJFTEVB
U0VfQVNTRVJUKHBvc2l0aW9uIDwgbV9zaXplKTsKICAgICBhdXRvIGNvbXBhcmF0b3IgPSBbXShj
b25zdCBzaXplX3QmIHBvc2l0aW9uLCBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5JiBlbnRy
eSkgewpAQCAtMTQ2LDcgKzE0Niw3IEBAIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRW
ZWN0b3JFbnRyeSogU2hhcmVkQnVmZmVyOjpnZXRTZWdtZW50Rm9yUG9zaXRpb24oCiAgICAgcmV0
dXJuIGVsZW1lbnQ7CiB9CiAKLVN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29u
c3QKK1N0cmluZyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CiB7
CiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgIGZvckVhY2hTZWdtZW50KFsm
XShhdXRvJiBzZWdtZW50KSB7CkBAIC0xNTYsMjIgKzE1NiwyMiBAQCBTdHJpbmcgU2hhcmVkQnVm
ZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJp
bmcoKTsKIH0KIAotc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6c2l6ZSgpIGNvbnN0CitzaXplX3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2l6ZTsK
IH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6OmlzRW1wdHkoKSBjb25zdAorYm9vbCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjppc0VtcHR5KCkgY29uc3QKIHsKICAgICByZXR1cm4gIXNpemUoKTsKIH0K
IAotYm9vbCBTaGFyZWRCdWZmZXI6OmlzQ29udGlndW91cygpIGNvbnN0Citib29sIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OmlzQ29udGlndW91cygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY29u
dGlndW91czsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCkgY29uc3QKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewogICAgIGF1dG8gYXJyYXlC
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc2l6ZSgpKSwgMSk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewpAQCAtMTkwLDcg
KzE5MCw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpIGNvbnN0CiAgICAgcmV0dXJuIGFycmF5QnVmZmVyOwogfQogCi12b2lkIFNoYXJl
ZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEp
CiB7CiAgICAgbV9zZWdtZW50cy5yZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkgKyBk
YXRhLm1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBk
YXRhLm1fc2VnbWVudHMpIHsKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6
YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICBBU1NFUlQoaW50ZXJuYWxseUNv
bnNpc3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CkBAIC0yMDks
NyArMjA5LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgbGVuZ3RoKQogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0K
IAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQordm9p
ZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkK
IHsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7CiAgICAgbV9zZWdtZW50cy5hcHBl
bmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7CkBAIC0y
MTcsMjEgKzIxNywyMSBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEpCiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lk
IFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2
b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3QgbGVuZ3RoKQogewogICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhKSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyKCkKK3ZvaWQg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogewogICAgIG1fc2l6ZSA9IDA7CiAgICAg
bV9zZWdtZW50cy5jbGVhcigpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsK
IH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKK1JlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29u
c3QKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBhZG9wdFJl
ZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOwogICAgIGNsb25lLT5tX3NpemUgPSBtX3Np
emU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3NlZ21l
bnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykK
QEAgLTI0MSwxNCArMjQxLDE0IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29w
eSgpIGNvbnN0CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Zm9y
RWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+
Jik+JiBhcHBseSkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNl
Z21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBh
cHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsKICAgICBmb3Ig
KGF1dG8mIHNlZ21lbnQgOiBzZWdtZW50cykKICAgICAgICAgYXBwbHkoU3BhbiB7IHNlZ21lbnQu
c2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSB9KTsKIH0KIAotYm9vbCBT
aGFyZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4
KSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNw
YW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKIHsKICAgICBpZiAocHJlZml4LmVtcHR5
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjcwLDcgKzI3MCw3IEBAIGJvb2wgU2hhcmVk
QnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6
OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKK1ZlY3Rvcjx1aW50OF90
PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5n
dGgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgaWYgKG9mZnNldCA+
PSBzaXplKCkpCkBAIC0yOTcsMTIgKzI5NywxMiBAQCBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVm
ZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAgICAgcmV0dXJu
IGRhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24s
IHNpemVfdCBsZW5ndGgpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHlU
byh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIHsKICAgICByZXR1cm4g
Y29weVRvKGRlc3RpbmF0aW9uLCAwLCBsZW5ndGgpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6
Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBj
b25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRp
b24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxl
bmd0aCArIG9mZnNldCA8PSBzaXplKCkpOwogICAgIGlmIChvZmZzZXQgPj0gc2l6ZSgpKQpAQCAt
MzQwLDEzICszNDAsMTMgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5h
dGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKICAgICB9CiB9CiAKLWJv
b2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2VnbWVu
dHMuc2l6ZSgpID09IDE7CiB9CiAKICNpZiBBU1NFUlRfRU5BQkxFRAotYm9vbCBTaGFyZWRCdWZm
ZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogewogICAgIHNpemVfdCBwb3NpdGlv
biA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykgewpAQCAt
MzU4LDE5ICszNTgsMTkgQEAgYm9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50
KCkgY29uc3QKIH0KICNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCi1Db250aWd1b3VzU2hhcmVk
QnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVm
ZmVyKCkKIHsKICAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOwogfQogCi1Db250aWd1b3VzU2hhcmVk
QnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50
KQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQp
CiB7CiAgICAgbV9zaXplID0gc2VnbWVudC0+c2l6ZSgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5k
KHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsKICAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOwogfQog
Ci1Db250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIpCiB7CiAgICAg
QVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVm
ZmVyLT5pc0VtcHR5KCkpOwogICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsK
QEAgLTM3OSwzMSArMzc5LDMxIEBAIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjb250aWd1b3VzQnVmCiAgICAgbV9jb250
aWd1b3VzID0gdHJ1ZTsKIH0KIAotQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgOiBTaGFy
ZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICA6IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIoV1RGTW92ZShkYXRhKSkKIHsKICAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOwogfQogCi1SZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxl
TWFwcGluZykKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGlu
ZykKIHsKICAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6Olll
cykgewogICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwogICAgICAgICBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1h
cHBpbmdTdWNjZXNzKTsKICAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQotICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVk
RmlsZURhdGEpKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZl
cihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwogICAgIH0KICAgICByZXR1cm4gY3JlYXRlRnJv
bVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKIH0KIAotY29uc3QgdWludDhfdCogQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Citjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRh
dGEoKSBjb25zdAogewogICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOwog
fQogCi1jb25zdCBjaGFyKiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyKCkg
Y29uc3QKK2NvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7CiB9CkBA
IC00MzMsMTcgKzQzMywxNyBAQCBib29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVE
YXRhKCkgY29uc3QKIH0KIAogI2lmICFVU0UoQ0YpCi12b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1l
bW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpo
aW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB7CiB9CiAjZW5kaWYKIAotV1RGOjpQZXJz
aXN0ZW5jZTo6RGVjb2RlciBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QK
K1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QK
IHsKICAgICByZXR1cm4ge3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgp
KSwgc2l6ZSgpIH19OwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBT
aGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpv
cGVyYXRvcj09KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogewog
ICAgIGlmICh0aGlzID09ICZvdGhlcikKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01NDAsMTYg
KzU0MCwxNiBAQCBjb25zdCBjaGFyKiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0
cigpIGNvbnN0CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEo
KSk7CiB9CiAKLVJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmll
dzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGNvbnN0IFJl
ZjxEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKLSAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtz
ZWdtZW50LCBkYXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCiAgICAgICAgIFtzaXpl
ID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitSZWZQ
dHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAg
IC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3Rl
cnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTU3NSw3
ICs1NzUsNyBAQCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHN0cmluZykKICAgICB9CiAKICAgICBidWZmZXIuc2hyaW5rKHAgLSByZWludGVy
cHJldF9jYXN0PGNoYXIqPihidWZmZXIuZGF0YSgpKSk7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGFjYzZhOTNmMDg0
NDU4NDg2ZmJhMGE1NjI2ZmNkNWUzMzVjNTNlM2QuLjliZjc5N2MxYzE2OTk1YzFlYTI2YzMwYTE1
ZmEzMDVhMDExYTEzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBA
IC02Miw3ICs2Miw3IEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCiAvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVu
dCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3Ro
ZXIgb2JqZWN0cy4KQEAgLTEzNCw0NCArMTM0LDQ0IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAg
ICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCiAgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0
YWJsZURhdGE7Ci0gICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKyAgICBmcmllbmQgY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKICNpZiAhVVNFKEZPVU5EQVRJT04pCi0gICAgZnJp
ZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKKyAg
ICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOyAvLyBGb3IgY3JlYXRlQ0ZEYXRhCiAjZW5kaWYK
IH07CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxT
aGFyZWRCdWZmZXI+IHsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcik7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURh
dGEpKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoV1RGTW92ZShidWZmZXIpKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisgICAgc3Rh
dGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOyB9CisgICAgc3RhdGljIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXpl
KSk7IH0KKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQorICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVk
RmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsgfQor
ICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50
OF90PiYmIHZlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKFdURk1vdmUodmVjdG9yKSkpOyB9CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkp
OyB9CiAKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8
TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOwog
I2VuZGlmCiAjaWYgVVNFKENGKQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCiAKICNp
ZiBVU0UoR0xJQikKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwogI2VuZGlmCiAKICNpZiBVU0UoR1NUUkVB
TUVSKQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
R3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2Vu
ZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwg
c2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAKLSAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0
IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlz
IHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisgICAgLy8gU2ltaWxhciB0
byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGlu
c3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBpcyBub3Qg
c2hhcmVkKS4KICAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKIAotICAgIC8vIENy
ZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRl
bnRzIHRvIHRoYXQKKyAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhp
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAogICAgIC8vIEFycmF5
QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZm
ZXIuCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpIGNvbnN0OwogCkBAIC0xODEsMTQgKzE4MSwxNCBAQCBwdWJsaWM6CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGlzQ29udGlndW91cygpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXpl
X3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVp
bnQ4X3Q+Jik+JikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNv
bnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CiAKLSAgICB1c2luZyBEYXRh
U2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBh
dGliaWxpdHkgd2hlbiB1c2luZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CisgICAgdXNpbmcg
RGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVudDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBj
b21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQKIAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAgc2l6ZV90
IGJlZ2luUG9zaXRpb247CkBAIC0yMDYsMzggKzIwNiwzOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRv
cj09KG90aGVyKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9
PShvdGhlcik7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBtYWtlQ29udGlndW91cygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFy
ZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICBmcmll
bmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVk
QnVmZmVyOwogCiAgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKICAgICBib29sIG1f
Y29udGlndW91cyB7IGZhbHNlIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoKSA9IGRlZmF1bHQ7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6
OlByb3ZpZGVyJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29u
c3QgY2hhciosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKERh
dGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogI2lmIFVTRShDRikKLSAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7
CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoR0J5dGVzKik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVy
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihH
c3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsK
IAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxl
bmd0aCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYp
OwpAQCAtMjUwLDcgKzI1MCw3IEBAIHByaXZhdGU6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNsZWFyKCk7CiAKLSAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0
b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZl
ci4KKyAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJl
dHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIuCiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAg
Y29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVf
dCBwb3NpdGl0aW9uKSBjb25zdDsKIApAQCAtMjU5LDIwICsyNTksMjAgQEAgcHJpdmF0ZToKICNl
bmRpZgogfTsKIAotLy8gQSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGlzIGEgU2hhcmVkQnVmZmVy
IHRoYXQgYWxsb3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEo
KSBhbmQgcmVsYXRlZCBtZXRob2RzLgotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlciA6IHB1
YmxpYyBTaGFyZWRCdWZmZXIgeworLy8gQSBTaGFyZWRCdWZmZXIgaXMgYSBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyIHRoYXQgYWxsb3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEg
dGhlIGRhdGEoKSBhbmQgcmVsYXRlZCBtZXRob2RzLgorY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVi
bGljIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgewogcHVibGljOgogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZS4uLiBBcmdzPgotICAgIHN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
QXJncyYmLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBpZiBjb25zdGV4cHIgKCFzaXplb2YuLi4o
QXJncykpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKCkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KCkpOwogICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKICAg
ICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8RGF0YVNlZ21lbnQ+PiAmJi4u
LikpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7Cisg
ICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOwogICAgICAgICB9CiAgICAgfQog
CkBAIC0yODEsNyArMjgxLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFdURjo6UGVy
c2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OwogCiAgICAgZW51bSBjbGFzcyBNYXlV
c2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1h
eVVzZUZpbGVNYXBwaW5nOjpZZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
TW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMp
OwogCiAjaWYgVVNFKEZPVU5EQVRJT04pCiAgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5T
RGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CkBAIC0yOTQsMjEgKzI5NCwyMSBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVk
QnVmZmVyPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxEYXRh
U2VnbWVudD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCk7CiB9OwogCiBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0
OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgewotICAgICAgICAvLyBXZSBkbyBub3Qg
d2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJl
ZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRv
IHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYXMgYWxsIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQogICAgICAgICAvLyBvbmNl
IGNyZWF0ZWQuCiAgICAgICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+aGFzT25lUmVmKCkpIHsK
ICAgICAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwpAQCAtMzE2LDkgKzMxNiw5
IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICBhcHBlbmQoKmJ1ZmZlcik7CiAgICAgfQot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgewotICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0
YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJlZEJ1ZmZlciBz
aG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRha2UgYSBy
ZWZlcmVuY2UgdG8gdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYXMgYWxsIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQogICAgICAgICAvLyBvbmNlIGNyZWF0ZWQu
CiAgICAgICAgIGlmIChidWZmZXItPmhhc09uZVJlZigpKSB7CiAgICAgICAgICAgICBtX2J1ZmZl
ciA9IFdURk1vdmUoYnVmZmVyKTsKQEAgLTMyOCw3ICszMjgsNyBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgogICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIo
QXJncyYmLi4uIGFyZ3MpCi0gICAgICAgIDogbV9idWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikp
IHsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgdm9pZCBhcHBlbmQo
QXJncyYmLi4uIGFyZ3MpCkBAIC0zNTAsOSArMzUwLDkgQEAgcHVibGljOgogICAgICAgICBlbnN1
cmVCdWZmZXIoKTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBnZXQoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlcjsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdGFrZSgpCisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsg
fQorICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlKCkKICAgICB7CiAgICAgICAg
IGVuc3VyZUJ1ZmZlcigpOwogICAgICAgICByZXR1cm4gbV9idWZmZXIucmVsZWFzZU5vbk51bGwo
KTsKQEAgLTM2MiwxMiArMzYyLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbnN1cmVCdWZmZXIo
KQogICAgIHsKICAgICAgICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgICAgIG1fYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVyID0gRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgfQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsK
IH07CiAKLWlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgp
CitpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmV4dHJhY3RE
YXRhKCkKIHsKICAgICBpZiAoaGFzT25lUmVmKCkpCiAgICAgICAgIHJldHVybiB0YWtlRGF0YSgp
OwpAQCAtMzgxLDcgKzM4MSw3IEBAIHB1YmxpYzoKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0Owog
ICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKICAgICBjb25zdCBjaGFyKiBkYXRhQXND
aGFyUHRyKCkgY29uc3Q7Ci0gICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNo
YXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1
ZmZlcigpIGNvbnN0OwogI2lmIFVTRShGT1VOREFUSU9OKQogICAgIFJldGFpblB0cjxOU0RhdGE+
IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlmCkBAIC0zOTEsNiArMzkxLDYgQEAgcHJpdmF0
ZToKICAgICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsKIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CitSZWZQdHI8U2hhcmVkQnVmZmVy
PiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5j
cHAKaW5kZXggY2RiNmU3MDM0MDRkNDI2ZGQyMWI0NzlmYTg5YzBkYTliOGM0OWY4ZS4uOWQwNTVj
ZTI3ZDg4YzNkNjJlNWJkMWNkNDZhZDkxZjVjYzQzMWY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcApAQCAtMzYsNyArMzYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoTUhUTUwpCiAKLVNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqIGJ1
ZmZlciwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpCitTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVm
ZmVyLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcikKICAgICA6IG1faXRlcmF0b3JDdXJy
ZW50KGJ1ZmZlci0+YmVnaW4oKSkKICAgICAsIG1faXRlcmF0b3JFbmQoYnVmZmVyLT5lbmQoKSkK
ICAgICAsIG1fc2VnbWVudChtX2l0ZXJhdG9yQ3VycmVudCAhPSBtX2l0ZXJhdG9yRW5kID8gbV9p
dGVyYXRvckN1cnJlbnQtPnNlZ21lbnQtPmRhdGEoKSA6IG51bGxwdHIpCkBAIC00NCw3ICs0NCw3
IEBAIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFy
ZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgVmVjCiB7CiB9CiAKLVNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3Qg
Y2hhciogc2VwYXJhdG9yKQorU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgY2hhciogc2Vw
YXJhdG9yKQogICAgIDogbV9pdGVyYXRvckN1cnJlbnQoYnVmZmVyLT5iZWdpbigpKQogICAgICwg
bV9pdGVyYXRvckVuZChidWZmZXItPmVuZCgpKQogICAgICwgbV9zZWdtZW50KG1faXRlcmF0b3JD
dXJyZW50ICE9IG1faXRlcmF0b3JFbmQgPyBtX2l0ZXJhdG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0
YSgpIDogbnVsbHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXJDaHVua1JlYWRlci5oCmluZGV4IDVkNGU2ZmVlNTgyYzY2MTZmZDA3ZTM5OTRmZjc1YzhmMDdh
MmZjZTEuLjFjNjQwOGQ0YzczNmExYzRhNDVjZWU3YjNmNjk2NTdiYzlhMjYxNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaApAQCAt
NDEsOCArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JU
IFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIHsKIHB1YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlcihTaGFyZWRCdWZmZXIqLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcik7Ci0g
ICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiwgY29uc3QgY2hhciogc2Vw
YXJhdG9yKTsKKyAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpOworICAgIFNoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBjaGFyKiBzZXBhcmF0b3Ip
OwogCiAgICAgdm9pZCBzZXRTZXBhcmF0b3IoY29uc3QgVmVjdG9yPGNoYXI+Jik7CiAgICAgdm9p
ZCBzZXRTZXBhcmF0b3IoY29uc3QgY2hhciopOwpAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAg
ICAgc2l6ZV90IHBlZWsoVmVjdG9yPHVpbnQ4X3Q+Jiwgc2l6ZV90KTsKIAogcHJpdmF0ZToKLSAg
ICBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJh
dG9yQ3VycmVudDsKLSAgICBjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpj
b25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yRW5kOworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yQ3VycmVudDsKKyAg
ICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3Rf
aXRlcmF0b3IgbV9pdGVyYXRvckVuZDsKICAgICBjb25zdCB1aW50OF90KiBtX3NlZ21lbnQgeyBu
dWxscHRyIH07CiAgICAgc2l6ZV90IG1fc2VnbWVudEluZGV4IHsgMCB9OwogICAgIFZlY3Rvcjxj
aGFyPiBtX3NlcGFyYXRvciB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0
YXRpY1Bhc3RlYm9hcmQuY3BwCmluZGV4IGIyZDdhNTUwZDQ2MGU5NGNkMzE1MTM0YTMxOTViY2Q5
MWM3Yjc4OTQuLmE0YjRiYjEwNGI0ZDg0MDE1YjhhYTViNTNlN2RmYTc4OGNlZDI1ZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCkBAIC03Myw3ICs3
Myw3IEBAIHZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIG1fY3VzdG9tRGF0YS53cml0ZVN0cmluZyh0
eXBlLCB2YWx1ZSk7CiB9CiAKLXZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVEYXRhKGNvbnN0
IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBTdGF0aWNQYXN0
ZWJvYXJkOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIG1fbm9uRGVmYXVsdERhdGFUeXBlcy5hZGQodHlwZSk7
CiAgICAgbV9jdXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAppbmRleCBjMDliNmRlMzFmMmVk
ZWJlMDE4OGRjOWM0NjZhMjcxZTFiOGI5ZTE0Li5lZGQ3MTM2MjNmMDZkMjJiMzhlODMyYTI4Mzdm
ZTY2OTk5ZGZkNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQ
YXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2Fy
ZC5oCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgU3RhdGlj
UGFzdGVib2FyZCBmaW5hbCA6IHB1YmxpYyBQYXN0ZWJvYXJkIHsKIHB1YmxpYzoKQEAgLTUyLDcg
KzUyLDcgQEAgcHVibGljOgogICAgIFN0cmluZyByZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0
IFN0cmluZyYgdHlwZSkgZmluYWw7CiAKICAgICB2b2lkIHdyaXRlU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKSBmaW5hbDsKLSAgICB2b2lkIHdyaXRlRGF0YShj
b25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CisgICAgdm9pZCB3
cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKTsKICAgICB2b2lkIHdyaXRlU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKTsKICAgICB2b2lkIGNsZWFyKCkgZmluYWw7CiAgICAg
dm9pZCBjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKaW5kZXggNjg3OTU5MDBjNWFkZjljYzkw
NDVlMGVhYmIyMmIxOGZhNjY5NjMxNC4uMWQ2NWJjNDAzYWQ4NTI0M2M2NzI1ZTcwNDQ4ZDZjZGFk
Y2NjY2UxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxh
eWluZ0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5n
SW5mby5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBOb3dQ
bGF5aW5nSW5mb0FydHdvcmsgewogICAgIFN0cmluZyBzcmM7CiAgICAgU3RyaW5nIG1pbWVUeXBl
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IE5vd1BsYXlpbmdJbmZvQXJ0d29yayYgb3RoZXIpIGNvbnN0CiAgICAgewpAQCAtNjcsNyArNjcs
NyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgc3RkOjpvcHRpb25hbDxOb3dQbGF5
aW5nSW5mb0FydHdvcms+IE5vd1BsYXlpbmdJbgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWlt
ZVR5cGUpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
aW1hZ2VEYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbWFnZURhdGEpKQogICAgICAgICByZXR1cm4geyB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRp
b0ZpbGVSZWFkZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKaW5kZXggZThiMTliZjM0ZWJhMjNiODU3MjA3YmU4
OGNlMWI0NWJmOGYyY2NjMy4uZjMyMTQyOTUxYjE3OTk2ZTZjZTE2NzU2MzE2YmZkNDczZmFhNGVk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9G
aWxlUmVhZGVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIGNsYXNzIEF1
ZGlvRmlsZVJlYWRlcldlYk1EYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAog
cHVibGljOgotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAg
IFJlZjxBdWRpb1RyYWNrUHJpdmF0ZVdlYk0+IG1fdHJhY2s7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCA5YjNlY2ExYTE1NDQ5
OGMwZTdlMzRjN2M5MTMzNjk1Y2NkOTQ3ZTdiLi40NDczZWMyOGQwNGM1NDM2MzIzYzA3ZDM3YmYy
YzljZDdkZWQyMTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXll
ZEVuY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNv
ZGVyQ0YuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckNGOjplbmRB
cnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCitSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAg
IGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJpbmFyeUZv
cm1hdF92MV8wLCAwLCBudWxscHRyKSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
Z2V0KCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmgKaW5kZXggZmFiNjZmY2JjYThmNDcxOTdlOThkNzliZjAyZWY4MTYxYTQy
NzZhNC4uZjU4NmMwMmJiMTViZjM5YjcyODNmYmE5YWE1ZThhMTI2Yjg0ZmVmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCkBAIC0zNyw3ICszNyw3IEBA
IHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFs
OwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhf
dCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5
LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1No
YXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZl
ckNGLmNwcAppbmRleCAwNWUwZjk1NzU5NWMwYmNmYTYxNTJjNDIwYTI3MDIyZjg1M2U0Nzg1Li4x
OTRhMTk4YTcxZmZkNTNkY2JiNWRmZjk1OGFhZTZlYTg1MDFjNTE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRh
UmVmIGRhdGEpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KENGRGF0YVJlZiBkYXRhKQogewogICAgIGFwcGVuZChkYXRhKTsKIH0KQEAgLTQxLDcgKzQxLDcg
QEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCiAvLyBVc2luZyBG
b3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZlbiBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlv
biBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28gb25seSB1c2UgdGhpcyB2ZXJzaW9uIGZvciBub24t
Rm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5EQVRJT04pCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENG
RGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewogICAgIGlmIChh
dXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+KCZtX3NlZ21lbnRz
WzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCiAgICAgICAgIHJldHVybiAqZGF0YTsKQEAg
LTQ5LDEyICs0OSwxMiBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogfQogI2VuZGlmCiAKLVJlZjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YVJlZiBkYXRhKQorUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFSZWYgZGF0YSkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoZGF0YSkpOwogfQogCi12
b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAordm9pZCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB7
CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IG1fc2VnbWVudHMpIHsKICAgICAgICAgaWYg
KGVudHJ5LnNlZ21lbnQtPmhhc09uZVJlZigpKSB7CkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgU2hh
cmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAgICAgfQogfQogCi12
b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQordm9pZCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7CiAgICAgaWYgKGRhdGEpIHsK
ICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShk
YXRhKX0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKaW5kZXggMDc5N2RmYmU4ZDAxOGJlNjM2
MTc0NGM1OGY4OTJkZDU2ZWQ2ODljNS4uY2JlODc3MWE0NWQ4NjJjYjVhYjA1ZWNhMzk5OTI3ZTA3
ODM4ZjU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IG92ZXJyaWRlOwogICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwot
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBv
dmVycmlkZTsKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIo
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzUmVx
dWlyZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KaW5kZXggNDI5MGRiMTI4ZDAwMGE0
MGVlZjcwZmQyOTQxZDYzNDQ5MDQ2ZGUwMy4uMmVmMjcwMWZlNjc4YmY5YjkyZGIyMTJiYmVhNWM5
MTVhM2ZjM2EyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0
d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KQEAgLTE3NSw3ICsxNzUs
NyBAQCB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0Rh
dGEoKQogICAgIHNlbWFwaG9yZS53YWl0KCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE5ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAorUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBs
YWNlbWVudERhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChkaWRCbG9ja0RhdGEoKSk7CiAgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVwbGFjZW1lbnREYXRhLmdldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENv
bnRyb2xzQ29udGVudEZpbHRlci5oCmluZGV4IDA2OGNkY2IzODNmNDIzNjVhYzMyNjRlMjI5YTZk
NjNiYzJiNGFiZDYuLjY3OWFlOTMyOTUxN2UxZjM5NDNiYTU3NjJhYzhmNTZlODYwYzhjMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50
YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKLSAgICBSZWY8U2hh
cmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyLm1tCmluZGV4IGI0NjFmOTc1MzZkZTNhMTU4MTNhNTgyN2I4NjcxMzhiOTZk
NGYzOGMuLjFjOTYwNDcxNmI0MjY5M2Q1ZTQ2YzJlMjNlOTQxZGEwMGM4M2U0ZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50
RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29u
dHJvbHNDb250ZW50RmlsdGVyLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBQYXJlbnRhbENv
bnRyb2xzQ29udGVudEZpbHRlcjo6ZmluaXNoZWRBZGRpbmdEYXRhKCkKICAgICB1cGRhdGVGaWx0
ZXJTdGF0ZSgpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVu
dEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29u
c3QKIHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkpOwogICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNmY1MGYwMzVhZGZlYWE5
ZGJhZGIwMmFjYWQ4ZjA2N2M3ODNmY2JlNS4uYjgxNzA4MTdjZWM1OWUyMmQzYzBlOWE3OGYxNDZj
MDMzZTRjMTY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFz
dGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3Rl
Ym9hcmRDb2NvYS5tbQpAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgTlNCaXRtYXBJbWFnZUZpbGVU
eXBlIGJpdG1hcFBOR0ZpbGVUeXBlKCkKIH0KICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLS8v
IE1ha2luZyB0aGlzIG5vbi1pbmxpbmUgc28gdGhhdCBXZWJLaXQgMidzIGRlY29kaW5nIGRvZXNu
J3QgaGF2ZSB0byBpbmNsdWRlIFNoYXJlZEJ1ZmZlci5oLgorLy8gTWFraW5nIHRoaXMgbm9uLWlu
bGluZSBzbyB0aGF0IFdlYktpdCAyJ3MgZGVjb2RpbmcgZG9lc24ndCBoYXZlIHRvIGluY2x1ZGUg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci5oLgogUGFzdGVib2FyZFdlYkNvbnRlbnQ6OlBhc3RlYm9h
cmRXZWJDb250ZW50KCkgPSBkZWZhdWx0OwogUGFzdGVib2FyZFdlYkNvbnRlbnQ6On5QYXN0ZWJv
YXJkV2ViQ29udGVudCgpID0gZGVmYXVsdDsKIApAQCAtMjExLDExICsyMTEsMTEgQEAgVmVjdG9y
PFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5ncygpCiB9CiAK
ICNpZiBQTEFURk9STShNQUMpCi1zdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNv
bnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgdGlmZkJ1
ZmZlcikKIHsKICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxs
b2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV0pOwogICAgIE5TRGF0YSAqcG5nRGF0YSA9IFtpbWFnZSByZXByZXNlbnRhdGlv
blVzaW5nVHlwZTpiaXRtYXBQTkdGaWxlVHlwZSgpIHByb3BlcnRpZXM6QHsgfV07Ci0gICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKKyAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9CiAjZW5kaWYKIApAQCAtMzE2LDcgKzMx
Niw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRUeXBlc1dpdGhTZWN1cml0eUNo
ZWNrKCkKICAgICByZXR1cm4gY29jb2FUeXBlczsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2so
Y29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVh
ZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAg
ICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPmJ1ZmZlckZvclR5cGUodHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5t
bQppbmRleCBmMGUyY2FiN2Q4MDEzNjAyNzY5MzkyODE5NmE1ZmNhNzgxNjc1YTU3Li4yNDBhMzY3
YmUyYWM3NjViNzhiZGU3MTAwNDY2NjRiY2IxY2U1NDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpAQCAtODgsMzYgKzg4LDM2
IEBAIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShOU0RhdGEgKmRhdGEpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnJpZGdlX2Nhc3QoZGF0YSkpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGJyaWRnZV9jYXN0
KGRhdGEpKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQor
dm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQogewogICAg
IHJldHVybiBhcHBlbmQoYnJpZGdlX2Nhc3QoZGF0YSkpOwogfQogCi1SZXRhaW5QdHI8TlNEYXRh
PiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRy
PE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVy
biBicmlkZ2VfY2FzdChjcmVhdGVDRkRhdGEoKSk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX3NlZ21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRl
KG51bGxwdHIsIG51bGxwdHIsIDApKTsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdtZW50
c1swXS5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAg
aWYgKGF1dG8gcmVzb3VyY2VEYXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOmZp
bGVQYXRoXSkKLSAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShy
ZXNvdXJjZURhdGEpOworICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3Vy
Y2VEYXRhKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmV0YWluUHRyPE5TQXJyYXk+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAorUmV0YWluUHRyPE5TQXJyYXk+
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gY3JlYXRlTlNBcnJheShtX3NlZ21lbnRzLCBbXSAoYXV0byYgc2VnbWVudCkgewog
ICAgICAgICByZXR1cm4gc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCmlu
ZGV4IGZiYzI4M2ZiYzMzNjliZjgyN2UzMTY5OTRjNGM5NGUwNjM2M2NiODEuLjJkZTQxOTM0ZGEx
OTg3OWQ3NWMwZGY4YTg5ZTY0ZTU5OWMyOWFlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaApAQCAtNDYsNyArNDYsNyBA
QCBjbGFzcyBMb2dnZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIENETUluc3RhbmNlU2Vz
c2lvbjsKIHN0cnVjdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uOwogCkBAIC01NCw3ICs1NCw3
IEBAIGNsYXNzIENETUluc3RhbmNlQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPENETUlu
c3RhbmNlQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNSW5zdGFuY2VDbGllbnQo
KSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlv
bkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29u
c3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIC8v
IEphdmFTY3JpcHQncyBoYW5kbGUgdG8gYSBDRE1JbnN0YW5jZSwgbXVzdCBiZSB1c2VkIGZyb20g
dGhlCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdmlydHVhbCB2b2lk
IGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwg
U3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VydmVyQ2VydGlm
aWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFN0b3Jh
Z2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8Q0RNSW5zdGFuY2VT
ZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaAppbmRleCAz
N2NkMDdjN2JmMmRjNzVlNDFmZDVjNmM3ZGVjZjQzZTEwMzllMTE0Li5kMjU5MjI1YmE5ZTAyYTY0
ZDBjZWNkNjE1MWZkZjkzZjRmMjQ2NmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaApAQCAtNDMs
MTYgKzQzLDE2IEBAIGNsYXNzIExvZ2dlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBD
RE1JbnN0YW5jZVNlc3Npb25DbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFu
Y2VTZXNzaW9uQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNSW5zdGFuY2VTZXNz
aW9uQ2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAgdXNpbmcgS2V5U3RhdHVzID0gQ0RNS2V5U3Rh
dHVzOwotICAgIHVzaW5nIEtleVN0YXR1c1ZlY3RvciA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPFNo
YXJlZEJ1ZmZlcj4sIEtleVN0YXR1cz4+OworICAgIHVzaW5nIEtleVN0YXR1c1ZlY3RvciA9IFZl
Y3RvcjxzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBLZXlTdGF0dXM+PjsK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgbWVzc2FnZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShD
RE1NZXNzYWdlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpID0gMDsK
ICAgICB1c2luZyBQbGF0Zm9ybURpc3BsYXlJRCA9IHVpbnQzMl90OwogICAgIHZpcnR1YWwgUGxh
dGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgPSAwOwpAQCAtNzgsMTMgKzc4LDEzIEBAIHB1Ymxp
YzoKICAgICAgICAgU3VjY2VlZGVkLAogICAgIH07CiAKLSAgICB1c2luZyBMaWNlbnNlQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgU3Vj
Y2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+OwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgPSAwOworICAgIHVzaW5nIExpY2Vu
c2VDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRp
dmlkdWFsaXphdGlvbiwgU3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+OworICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxi
YWNrJiYpID0gMDsKIAogICAgIHVzaW5nIEtleVN0YXR1c1ZlY3RvciA9IENETUluc3RhbmNlU2Vz
c2lvbkNsaWVudDo6S2V5U3RhdHVzVmVjdG9yOwotICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBh
aXI8TWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0g
c3RkOjpwYWlyPE1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAg
IHVzaW5nIExpY2Vuc2VVcGRhdGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCBzZXNzaW9uV2FzQ2xvc2VkLCBzdGQ6Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFu
Z2VkS2V5cywgc3RkOjpvcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIHN0ZDo6
b3B0aW9uYWw8TWVzc2FnZT4mJiBtZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Ci0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExp
Y2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
cmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9IDA7CiAKICAgICBlbnVtIGNsYXNz
IFNlc3Npb25Mb2FkRmFpbHVyZSA6IHVpbnQ4X3QgewogICAgICAgICBOb25lLApAQCAtMTAwLDcg
KzEwMCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBDbG9zZVNlc3Npb25DYWxsYmFjayA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT47CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlU2Vzc2lvbihjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgPSAwOwogCi0gICAg
dXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
S2V5U3RhdHVzVmVjdG9yJiYsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYsIFN1
Y2Nlc3NWYWx1ZSk+OworICAgIHVzaW5nIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0YXR1c1ZlY3RvciYmLCBzdGQ6Om9wdGlvbmFsPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiwgU3VjY2Vzc1ZhbHVlKT47CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlw
ZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgK
aW5kZXggY2M2ZGM3ZjE0MGNkNjdkMmI3Yjg0ZjZhYjJjMjg0MzE2ZGZkZGNjZi4uNTJhNjE0OGM4
M2NkNTM5M2M4Zjg3NGVkODVhZDhiZjI3ZTViZTUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaApAQCAtNzMsOCArNzMsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVm
ZmVyJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXpl
U2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCmlu
ZGV4IGYyMThmOTc5MDRmYmJhNDlmMWViZGY0OGUyMDVmZTczZGZhZmI2NDguLjRiYTc1YmYwMGQ5
ZjcxM2I1YWZiYmE3OTM0MDE5NzE2Y2Q4ZjAzODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKQEAgLTIyNyw3ICsyMjcsNyBA
QCBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBLZXlTdG9yZTo6Y29udmVydFRv
SlNLZXlTdGF0dXNWZWN0b3IoKSBjb25zdAogICAgIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3Rh
dHVzVmVjdG9yIGtleVN0YXR1c1ZlY3RvcjsKICAgICBrZXlTdGF0dXNWZWN0b3IucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShudW1LZXlzKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYga2V5IDogbV9r
ZXlzKQotICAgICAgICBrZXlTdGF0dXNWZWN0b3IudW5jaGVja2VkQXBwZW5kKHN0ZDo6cGFpcjxS
ZWY8U2hhcmVkQnVmZmVyPiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXM+IHsga2V5LT5p
ZEFzU2hhcmVkQnVmZmVyKCksIGtleS0+c3RhdHVzKCkgfSk7CisgICAgICAgIGtleVN0YXR1c1Zl
Y3Rvci51bmNoZWNrZWRBcHBlbmQoc3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXM+IHsga2V5LT5pZEFzU2hhcmVkQnVmZmVy
KCksIGtleS0+c3RhdHVzKCkgfSk7CiAgICAgcmV0dXJuIGtleVN0YXR1c1ZlY3RvcjsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJv
eHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgK
aW5kZXggYTU4NGI2Y2QyNjZiMDk4MDkwMjU0ZDdkY2JkZGJmNjBkOTMzMWZiYi4uZTFlMDk4YTFk
NWY1ZmZjNjVjMmE0OGZhNDBhYTk3MmZlODllMWUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEtleUhhbmRsZShzdGF0
dXMsIFdURk1vdmUoa2V5SUQpLCBXVEZNb3ZlKGtleUhhbmRsZVZhbHVlKSkpOwogICAgIH0KLSAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBpZEFzU2hhcmVkQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUobV9pZC5kYXRhKCksIG1faWQuc2l6ZSgpKTsgfQorICAgIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpZEFzU2hhcmVkQnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUobV9pZC5kYXRhKCksIG1faWQuc2l6ZSgpKTsgfQogCiAgICAg
Ym9vbCB0YWtlVmFsdWVJZkRpZmZlcmVudChLZXlIYW5kbGVWYWx1ZVZhcmlhbnQmJik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxp
dGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGls
aXRpZXMuY3BwCmluZGV4IDY2NzI2Zjc0ZTU4ZDhlMTIyY2JjOTBiODY3YjliZjk2MTc3ODAzZDQu
LmZjYTZmMjM4OGE1NmE2YTFjNzI0NzBlNWE0NmZkZDI4ZjA3Mzc1MGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNw
cApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBDRE1V
dGlsaXRpZXMgewogCi1SZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmpl
Y3QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEZhaWwg
b24gbGFyZ2UgYnVmZmVycyB3aG9zZSBzaXplIGRvZXNuJ3QgZml0IGludG8gYSAzMi1iaXQgdW5z
aWduZWQgaW50ZWdlci4KICAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci5zaXplKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5o
CmluZGV4IDc0ZjUxNWIwYmQyYTg3MTY4ZWVmMjRiMThmOTVkZWFiZWU4MjhlNmMuLmZjZjViZGRh
N2M1OTdkM2MzYWMzNDllZTE3ODllNGFkNmUwYzk1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oCkBAIC0zNSwxMSAr
MzUsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgQ0RNVXRpbGl0aWVzIHsK
IAotUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOworUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKIAogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmlu
ZGV4IDJhZGRlZTdlZThiNGVlYjgzNWZhNzBjMjRmMWQ0ZWY4OWQ3MzQzZWYuLjMxYTlmZGZhMDJk
NmQwMGNhMjYxODI1MmRlZDkzNTMxM2RjNThhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUxpY2Vuc2VSZWxlYXNl
QWNrbm93bGVkZ2VtZW50Rm9ybWF0KGNvbnN0IEpTT046Ok9iamVjdCYgcm9vdCkKIC8vIF07CiAK
IC8vIFRoaXMgZnVuY3Rpb24gZXh0cmFjdHMgdGhlIEtleUlkcyBjb3VudCBhbmQgdGhlIGxvY2F0
aW9uIG9mIHRoZSBmaXJzdCBLZXlJZCBpbiBpbml0RGF0YSBidWZmZXIuCi1zdGF0aWMgc3RkOjpw
YWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGljIHN0ZDo6cGFpcjx1bnNp
Z25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgc3RkOjpwYWlyPHVu
c2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwKDAsIDApOwogCkBAIC0xODksMTMgKzE4OSwxMyBA
QCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0
aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogfQogCiAvLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBp
ZiB0aGUgaW5pdERhdGEgc2hhcmVkQnVmZmVyIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KLXN0
YXRpYyBib29sIGlzQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitz
dGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkKIHsKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAg
PSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGluaXREYXRhKTsKICAgICBy
ZXR1cm4gKChrZXlJZHNNYXAuZmlyc3QpICYmIChrZXlJZHNNYXAuc2Vjb25kKSk7CiB9CiAKLXN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIApA
QCAtMjMwLDcgKzIzMCw3IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRz
RnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAgICAgcmV0dXJuIGtl
eUlkcy50YWtlKCk7CiB9CiAKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRG
cm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitzdGF0aWMgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBrZXlJZHM7CiAKQEAgLTM5MCw3ICszOTAsNyBAQCBib29sIENETVByaXZhdGVDbGVh
cktleTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wg
Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0
CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhlIGluaXREYXRhIGJ1ZmZlciBhcyBhbiBKU09OIG9iamVj
dCBpbiBrZXlpZHMgY2FzZS4KICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
aW5pdERhdGFUeXBlLCAia2V5aWRzIikgJiYgQ0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3Qo
aW5pdERhdGEpKQpAQCAtNDA3LDcgKzQwNyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5Ojpz
dXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVDbGVh
cktleTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25z
dAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVDbGVhcktleTo6c2Fu
aXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29u
c3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUgcmVzcG9uc2UgYnVmZmVyIGFzIGFuIEpTT04gb2Jq
ZWN0LgogICAgIGlmICghQ0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QocmVzcG9uc2UpKQpA
QCAtNDMzLDcgKzQzMyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6aW5pdGlhbGl6ZVdp
dGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyCiAgICAgY2FsbGJhY2so
c3VjY2VlZGVkKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2ZXJDZXJ0
aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykK
K3ZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAg
IC8vIFJlamVjdCBzZXR0aW5nIGFueSBzZXJ2ZXIgY2VydGlmaWNhdGUuCiAgICAgY2FsbGJhY2so
RmFpbGVkKTsKQEAgLTQ1NSw3ICs0NTUsNyBAQCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBD
RE1JbnN0YW5jZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKCkKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KCp0aGlzKSk7CiB9CiAKLXZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExp
Y2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktl
eTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmIGNhbGxiYWNrKQogewogICAgIHN0YXRpYyB1aW50MzJfdCBzX3Nlc3Npb25JZFZhbHVl
ID0gMDsKICAgICArK3Nfc2Vzc2lvbklkVmFsdWU7CkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNv
bnN0IEF0b21TdHJpbmcmIGkKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vu
c2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJh
Y2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7CiAjaWYgTE9HX0RJU0FCTEVECiAgICAgLy8gV2Ugb25seSB1c2UgdGhlIHNlc2lvbiBJ
RCBmb3IgZGVidWcgbG9nZ2luZy4gVGhlIHZlcmJvc2UgcHJlcHJvY2Vzc29yIGNoZWNrcyBhcmUg
YmVjYXVzZQpAQCAtNTY4LDcgKzU2OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJL
ZXk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlCiAgICAg
QVNTRVJUKHNlc3Npb25JZCA9PSBtX3Nlc3Npb25JRCk7CiAKICAgICBhdXRvIGRpc3BhdGNoQ2Fs
bGJhY2sgPQotICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgJmNhbGxiYWNr
XShLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNWZWN0b3IsIHN0ZDo6b3B0aW9uYWw8UmVmPFNo
YXJlZEJ1ZmZlcj4+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2Nlc3MpIHsKKyAgICAgICAg
W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sICZjYWxsYmFja10oS2V5U3RhdHVzVmVjdG9y
JiYga2V5U3RhdHVzVmVjdG9yLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4mJiBtZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VzcykgewogICAgICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZCgKICAgICAgICAgICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKndl
YWtUaGlzIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGtleVN0YXR1c1ZlY3RvciA9
IFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHN1
Y2Nlc3NdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCkBA
IC01ODEsNyArNTgxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3Zl
U2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKICAgICAvLyBDb25zdHJ1
Y3QgdGhlIEtleVN0YXR1c1ZlY3RvciBvYmplY3QsIHJlcHJlc2VudGluZyByZWxlYXNlZCBrZXlz
LCBhbmQgdGhlIG1lc3NhZ2UgaW4gdGhlCiAgICAgLy8gJ2xpY2Vuc2UgcmVsZWFzZScgZm9ybWF0
LgogICAgIEtleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNWZWN0b3IgPSBtX2tleVN0b3JlLmFsbEtl
eXNBcyhDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1czo6UmVsZWFzZWQpOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2U7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IG1lc3NhZ2U7CiAgICAgewogICAgICAgICAvLyBDb25zdHJ1Y3QgSlNPTiB0aGF0IHJlcHJl
c2VudHMgdGhlICdsaWNlbnNlIHJlbGVhc2UnIGZvcm1hdCwgY3JlYXRpbmcgYSAna2lkcycgYXJy
YXkKICAgICAgICAgLy8gb2YgYmFzZTY0VVJMLWVuY29kZWQga2V5IElEcyBmb3IgYWxsIGtleXMg
dGhhdCB3ZXJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNlc3Npb24uCkBAIC01OTUsMTQgKzU5NSwx
NCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZW1vdmVTZXNzaW9uRGF0YShj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZQogICAgICAgICAgICAgcm9vdE9iamVjdC0+c2V0
QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGFycmF5KSk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBD
b3B5IHRoZSBKU09OIGRhdGEgaW50byBhIFNoYXJlZEJ1ZmZlciBvYmplY3QuCisgICAgICAgIC8v
IENvcHkgdGhlIEpTT04gZGF0YSBpbnRvIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBvYmplY3Qu
CiAgICAgICAgIFN0cmluZyBtZXNzYWdlU3RyaW5nID0gcm9vdE9iamVjdC0+dG9KU09OU3RyaW5n
KCk7CiAgICAgICAgIENTdHJpbmcgbWVzc2FnZUNTdHJpbmcgPSBtZXNzYWdlU3RyaW5nLnV0Zjgo
KTsKICAgICAgICAgbWVzc2FnZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2VDU3RyaW5n
LmRhdGEoKSwgbWVzc2FnZUNTdHJpbmcubGVuZ3RoKCkpOwogICAgIH0KIAogICAgIG1fa2V5U3Rv
cmUudW5yZWZBbGxLZXlzKCk7Ci0gICAgZGlzcGF0Y2hDYWxsYmFjayhXVEZNb3ZlKGtleVN0YXR1
c1ZlY3RvciksIFJlZjxTaGFyZWRCdWZmZXI+KCptZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNj
ZWVkZWQpOworICAgIGRpc3BhdGNoQ2FsbGJhY2soV1RGTW92ZShrZXlTdGF0dXNWZWN0b3IpLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oKm1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2Nl
ZWRlZCk7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnN0b3JlUmVjb3Jk
T2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKaW5kZXgg
OWMwNzQ3ZGMxYmQ4ZTY3ZjNiYTg2NGQ5YjgxMTMzNzYyNWM4YTY3OS4uOWUyN2ZlOTEyYzRkYTA2
N2ZiMjZjYWZiYzdmNmE2NTFkYTQ3NTI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCkBA
IC04Niw4ICs4Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmlu
YWw7CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IGZpbmFsOwog
ICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9y
dHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Qg
ZmluYWw7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBT
aGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5h
bDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFs
OwogfTsKIApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFuY2UKICAg
ICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpDbGVhcktleTsgfQogICAgIHZvaWQgaW5pdGlhbGl6
ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxv
d0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2Fs
bGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVk
QnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBm
aW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsOwogICAgIFJl
ZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKQEAgLTEwOSw4
ICsxMDksOCBAQCBjbGFzcyBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleSBmaW5hbCA6IHB1Ymxp
YyBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSB7CiBwdWJsaWM6CiAgICAgQ0RNSW5zdGFuY2VTZXNz
aW9uQ2xlYXJLZXkoQ0RNSW5zdGFuY2VDbGVhcktleSYgcGFyZW50KQogICAgICAgICA6IENETUlu
c3RhbmNlU2Vzc2lvblByb3h5KHBhcmVudCkgeyB9Ci0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwor
ICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsK
ICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNz
aW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZv
aWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNl
c3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAppbmRleCA3YWE5NGI0YjRi
YzJjYmY5MjJhYWRhNTg4NzU3M2Q3NWQ3YzBiYzY3Li43YmYwMDgzMmE0MDJlZWFkNTcyM2NhNDI4
ZTlhZmI3Y2M0MWEwYzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKQEAgLTEzOSw5ICsxMzksOSBAQCB2b2lk
IEtleWVkRW5jb2RlckdlbmVyaWM6OmVuZEFycmF5KCkKICAgICBtX2VuY29kZXIgPDwgVHlwZTo6
RW5kQXJyYXk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29k
ZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVu
Y29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZygpCiB7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJT
aXplKCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVy
KCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVy
R2VuZXJpYy5oCmluZGV4IDU4MDU4M2I4MzgxMGVkZTVkMmM5YzY1YTgzOTNiMzI2ZDg3YjI3NDcu
LmVjZjRlMDhjOWI5OTFhZGUyNzNiZDQ0YzYwYmIxNWZlMDE2MzViMTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCkBA
IC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWRFbmNvZGVy
R2VuZXJpYyBmaW5hbCA6IHB1YmxpYyBLZXllZEVuY29kZXIgewogcHVibGljOgpAQCAtNTcsNyAr
NTcsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBlbmNvZGVC
eXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xp
Yi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3Bw
CmluZGV4IGU2ZDc4ZDUyODNlZjhlNTNjN2JkYjBiYjgwNGU5ZTI3ZTEwYTE3OTMuLjcwZDI0YzEx
OTNmOGU1YzcwZDFkMzk4N2M1ZTAwOThjYjZjMDBiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcApAQCAtMTMyLDEyICsxMzIsMTIg
QEAgdm9pZCBLZXllZEVuY29kZXJHbGliOjplbmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJl
bW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5j
b2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5j
b2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBnX2Fzc2VydChtX3ZhcmlhbnRCdWls
ZGVyU3RhY2subGFzdCgpID09ICZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdWYXJp
YW50PiB2YXJpYW50ID0gZ192YXJpYW50X2J1aWxkZXJfZW5kKCZtX3ZhcmlhbnRCdWlsZGVyKTsK
ICAgICBHUmVmUHRyPEdCeXRlcz4gZGF0YSA9IGdfdmFyaWFudF9nZXRfZGF0YV9hc19ieXRlcyh2
YXJpYW50LmdldCgpKTsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEu
Z2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUo
ZGF0YS5nZXQoKSkpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nh
c3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVs
bHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgp
KSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCmluZGV4IGNlMTM2NDk2YzRlMTNlYWMxNDll
YTYxODk1YzU0MTQwZmZkNTk2ZjcuLmU1NjQyYmNmNjcwY2UyNTk5ZmMwNGRmNzI5ZTJiNGMxZjgy
MTFmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVy
R2xpYi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyR2xpYigp
OwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVu
Y29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKaW5kZXggNzg4OTE3ZGFl
Zjk2ODljYTdlZTc0NGUxYTQwNjE1ZGM0OWIxMzkwNS4uOTM3ZDFmYjZmMGM4ZDdiNTFmMThmZjE1
NTYwYjNiOTRhNzRmNjFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9TaGFyZWRCdWZmZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L1NoYXJlZEJ1ZmZlckdsaWIuY3BwCkBAIC0yNiwyOCArMjYsMjggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQorRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVz
KQogewogICAgIEFTU0VSVChieXRlcyk7CiAgICAgbV9zaXplID0gZ19ieXRlc19nZXRfc2l6ZShi
eXRlcyk7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKEdS
ZWZQdHI8R0J5dGVzPihieXRlcykpIH0pOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQogewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihieXRlcykpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKIH0KIAotR1JlZlB0cjxH
Qnl0ZXM+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CitHUmVm
UHRyPEdCeXRlcz4gU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdAogewogICAgIHJl
ZigpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0R1JlZihnX2J5dGVzX25ld193
aXRoX2ZyZWVfZnVuYyhkYXRhKCksIHNpemUoKSwgW10oZ3BvaW50ZXIgZGF0YSkgewotICAgICAg
ICBzdGF0aWNfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7Ci0g
ICAgfSwgY29uc3RfY2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4odGhpcykpKTsKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CisgICAgfSwgY29u
c3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0aGlzKSkpOwogICAgIHJldHVybiBieXRlczsKIH0KIAot
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTYxLDcgKzYxLDcgQEAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb24KICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CisgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRl
eCBiMTM2MzQ0ZTYwZjczZmMxMDA1OGViZmUzY2I0ZTBiNjNmNDU4MmQ3Li4xN2IzNTJmODk3NDI3
Mjk4ZjVkZDBiOGRmYjk2OTA3ODc5NWQzMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250LmNwcApAQCAtNjgsNyArNjgsNyBAQCBSZWY8Rm9udD4gRm9udDo6Y3JlYXRl
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgRm9u
dAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxhdGZvcm1EYXRhLCBvcmlnaW4sIGlu
dGVyc3RpdGlhbCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25GYWxsYmFjaywgaWRlbnRpZmllciwg
Zm9udENhY2hlRm9yVmVydGljYWxEYXRhKSk7CiB9CiAKLVJlZjxGb250PiBGb250OjpjcmVhdGUo
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4g
b3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRp
Y0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCitSZWY8Rm9udD4g
Rm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmln
aW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRo
ZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCiB7CiAgICAg
Ym9vbCB3cmFwcGluZzsKICAgICBhdXRvIGN1c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9udDo6Y3Jl
YXRlQ3VzdG9tRm9udERhdGEoZm9udEZhY2VEYXRhLmdldCgpLCB7IH0sIHdyYXBwaW5nKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCBmOWJhY2E1YTI2NDFlMzhj
ODI5NDAwZjVlMzI1NGRmZWQ0OGRjOGIwLi5kYzFmYjE2ZWEwYjE5NmM1ZDEzYmQ0MTE0ZTUwY2Nk
Y2Q5YjM3YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC01
OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZvbnRDYWNoZTsKIGNsYXNz
IEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEdseXBoUGFnZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBHbHlwaERhdGE7CiAKQEAg
LTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6
VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBz
dGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQp
OwogICAgIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBP
cmlnaW4sIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhLCBJbnRlcnN0aXRpYWwg
PSBJbnRlcnN0aXRpYWw6Ok5vLAogICAgICAgICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6Vmlz
aWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6
Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6
ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiA9
IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4sIGZsb2F0IGZvbnRT
aXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUq
ID0gbnVsbHB0cik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+Rm9udCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKaW5kZXgg
ZTIzODRiOWVlNGVjZTYwMWVlZDdhNGMwYjNkYmRmOThiZTk1MzA5My4uZmJiY2NjNDM2ODQ0NzQ5
MDgzY2U4OTFmMzYzZjZjYzQwZjI5NzQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAtMjIzLDEzICsyMjMsMTMgQEAg
cHVibGljOgogI2VuZGlmCiAgICAgfQogCi0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OwotICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUp
IGNvbnN0OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3Qg
dGFibGUpIGNvbnN0OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVU
YWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBj
b25zdDsKIAogICAgIHN0cnVjdCBDcmVhdGlvbkRhdGEgewotICAgICAgICBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZm9udEZhY2VEYXRhOworICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBm
b250RmFjZURhdGE7CiAgICAgICAgIFN0cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRG
T1JNKFdJTikKICAgICAgICAgUmVmPEZvbnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggNGE4NTNl
YjY0OTUzZDRhZTQ4MzRmODdjNTQ4N2FjZDM2NGM1N2Q4MS4uZTMyYTM2YzYwNzYxOTIxNjhjNmEz
NzkzMThmNzhhZTE3ODljNDgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgSW1hZ2U6OmlzUG9zdFNjcmlwdFJl
c291cmNlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgdXJsKQogfQogCiAKLUVu
Y29kZWREYXRhU3RhdHVzIEltYWdlOjpzZXREYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCitFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZTo6c2V0RGF0
YShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKIHsKICAgICBtX2VuY29kZWRJbWFnZURhdGEgPSBXVEZNb3ZlKGRhdGEpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCA2YTA4MTY5NTdhYTkzYzQx
MWE1NmNkNGMyYmMyMGRkNmQ5MDQ0ZGVjLi42NTVkZmU3M2NmZjZhZDFkMDRmNDhiYzIwMTllYmI4
MDQxN2Q2MTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAg
LTcwLDcgKzcwLDcgQEAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgRmxvYXRQb2ludDsK
IGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgTGVuZ3RoOwogCiAv
LyBUaGlzIGNsYXNzIGdldHMgbm90aWZpZWQgd2hlbiBhbiBpbWFnZSBjcmVhdGVzIG9yIGRlc3Ry
b3lzIGRlY29kZWQgZnJhbWVzIGFuZCB3aGVuIGl0IGFkdmFuY2VzIGFuaW1hdGlvbiBmcmFtZXMu
CkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxJ
bnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIHZp
cnR1YWwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIEltYWdl
T3JpZW50YXRpb246OkZyb21JbWFnZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgRW5jb2RlZERh
dGFTdGF0dXMgc2V0RGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFbmNvZGVkRGF0YVN0YXR1cyBzZXREYXRh
KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKTsKICAgICB2aXJ0dWFsIEVuY29kZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2VkKGJvb2wgLyph
bGxEYXRhUmVjZWl2ZWQqLykgeyByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OlVua25vd247IH0K
IAogICAgIHZpcnR1YWwgU3RyaW5nIHV0aSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9IC8v
IG51bGwgc3RyaW5nIGlmIHVua25vd24KQEAgLTEzMyw4ICsxMzMsOCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGVzdHJveURlY29kZWREYXRhKGJvb2wgZGVzdHJveUFsbCA9IHRydWUp
ID0gMDsKIAotICAgIFNoYXJlZEJ1ZmZlciogZGF0YSgpIHsgcmV0dXJuIG1fZW5jb2RlZEltYWdl
RGF0YS5nZXQoKTsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQorICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGRhdGEoKSB7IHJldHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KKyAgICBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVk
SW1hZ2VEYXRhLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBj
b2xvclNwYWNlKCk7CiAKQEAgLTIwOSw3ICsyMDksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvcigpOyB9
CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVkSW1hZ2VEYXRh
OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2VuY29kZWRJbWFnZURhdGE7
CiAgICAgSW1hZ2VPYnNlcnZlciogbV9pbWFnZU9ic2VydmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxUaW1lcj4gbV9hbmltYXRpb25TdGFydFRpbWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4IDRkZGI2ZGY4
M2VjYjhiOWI3OTU3ZjQ2NjRlMTg0ZjAwODFlODEwMTEuLmRlMzNmMWFmNDEyZGMwOGIyYjk2MWEx
OTQ5NDVjOWNjOTBhYTY2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgYnVmZmVyLmdyb3coYnVmZmVyU2l6
ZSk7Ci0gICAgICAgIG1fcGl4ZWxzID0gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRl
KFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1fcGl4ZWxzID0gRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX3Bp
eGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3Qq
PihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAgIG1f
ZnJhbWVSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBtX3NpemUpOwpAQCAtMjA2LDcgKzIwNiw3
IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBBU1NFUlQoIW1fc2l6ZS5pc0VtcHR5KCkgJiYg
IWlzT3ZlclNpemUobV9zaXplKSk7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIgeyBv
dGhlci5tX3BpeGVscy0+ZGF0YSgpLCBvdGhlci5tX3BpeGVscy0+c2l6ZSgpIH07Ci0gICAgICAg
IG1fcGl4ZWxzID0gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVm
ZmVyKSk7CisgICAgICAgIG1fcGl4ZWxzID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX3BpeGVsc1B0ciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+
ZGF0YSgpKSk7CiAgICAgfQogCkBAIC0yMzMsNyArMjMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
cmV0dXJuIFBhY2tlZENvbG9yOjpBUkdCIHsgcmVzdWx0IH0udmFsdWU7CiAgICAgfQogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fcGl4ZWxzOworICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9waXhlbHM7CiAgICAgdWludDMy
X3QqIG1fcGl4ZWxzUHRyIHsgbnVsbHB0ciB9OwogICAgIEludFNpemUgbV9zaXplOwogICAgIElu
dFJlY3QgbV9mcmFtZVJlY3Q7IC8vIFRoaXMgd2lsbCBhbHdheXMganVzdCBiZSB0aGUgZW50aXJl
IGJ1ZmZlciBleGNlcHQgZm9yIEdJRiBhbmQgUE5HIGZyYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggMDg2OWU5OWEwMDg4
NmY3Y2QxMjE4NmZlMzE2MWRlMDQ3ZmE1MTM2MS4uN2M1NDk0N2Y0ZDgxNDA4NTU5Y2M0NWM0YWM0
OWExOWI5ZmM4NmY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZURlY29kZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyOjpj
bGVhckZhY3RvcmllcygpCiB9CiAjZW5kaWYKIAotUmVmUHRyPEltYWdlRGVjb2Rlcj4gSW1hZ2VE
ZWNvZGVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8SW1hZ2VEZWNvZGVyPiBJbWFnZURlY29k
ZXI6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgVU5VU0VEX1BBUkFNKG1pbWVU
eXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29k
ZXIuaAppbmRleCBhMWEwOGFkYzE3NWQ0NGJhYTQ0MmU0NGE5NGFhOTY3YTA0ZjVmNjA3Li42YThm
ZmNiNjBmYzExNTZlYjg0ODc2ZGVmYjA3Y2JjMGIxMTk4NDk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaApAQCAtMzcsMTIgKzM3LDEyIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSW1hZ2VEZWNvZGVyIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPEltYWdlRGVjb2Rlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3Jl
YXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdl
RGVjb2RlcigpID0gZGVmYXVsdDsKIAogICAgIGVudW0gY2xhc3MgTWVkaWFUeXBlIHsKQEAgLTkx
LDcgKzkxLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICB1c2luZyBT
dXBwb3J0c01lZGlhVHlwZUZ1bmMgPSBGdW5jdGlvbjxib29sKE1lZGlhVHlwZSk+OwogICAgIHVz
aW5nIENhbkRlY29kZVR5cGVGdW5jID0gRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT47Ci0g
ICAgdXNpbmcgQ3JlYXRlSW1hZ2VEZWNvZGVyRnVuYyA9IEZ1bmN0aW9uPFJlZlB0cjxJbWFnZURl
Y29kZXI+KFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIEFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbik+OworICAgIHVzaW5nIENyZWF0ZUltYWdlRGVjb2RlckZ1bmMg
PSBGdW5jdGlvbjxSZWZQdHI8SW1hZ2VEZWNvZGVyPihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJiwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKT47
CiAKICAgICBzdHJ1Y3QgSW1hZ2VEZWNvZGVyRmFjdG9yeSB7CiAgICAgICAgIFN1cHBvcnRzTWVk
aWFUeXBlRnVuYyBzdXBwb3J0c01lZGlhVHlwZTsKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0
IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJv
bm91cykpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxv
bmcgbG9uZykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNs
ZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IGQ4MWM0ODAxOTI4NDZkZDdl
MzIxYzJkZmJmYmYxZTBjMjBkYWE2NzEuLjMwNzc0MzMxNWE0MWVjYTFjOWIyYmM3NzNkMDc5ZWU1
ZDQzYmFmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJjZSgp
CiAgICAgQVNTRVJUKCZtX3J1bkxvb3AgPT0gJlJ1bkxvb3A6OmN1cnJlbnQoKSk7CiB9CiAKLWJv
b2wgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRh
KQorYm9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghZGF0YSB8fCBpc0RlY29kZXJBdmFpbGFibGUo
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC05Niw3ICs5Niw3IEBAIGJvb2wgSW1hZ2VTb3Vy
Y2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlm
ICghZGF0YSB8fCAhZW5zdXJlRGVjb2RlckF2YWlsYWJsZShkYXRhKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTA0LDEzICsxMDQsMTMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRC
dWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIG1fZGVjb2Rlci0+c2V0RGF0
YSgqZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6cmVzZXRE
YXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0RGF0YShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIG1fZGVjb2RlciA9IG51bGxwdHI7CiAg
ICAgc2V0RGF0YShkYXRhLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKIH0KIAotRW5jb2RlZERhdGFT
dGF0dXMgSW1hZ2VTb3VyY2U6OmRhdGFDaGFuZ2VkKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCitFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZVNvdXJjZTo6ZGF0YUNoYW5n
ZWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7
CiAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGNsZWFyTWV0YWRhdGEo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmlu
ZGV4IDhhZjUwODBhMDBhOTkxNjA4MGYxZjBiMjc3MDczYzJhODUzNDUyNTguLjgxNGYwZTEyZWJh
YTQ4Zjg2YWNiNTIxOTczYzMxZDVkMzgyZjZmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBCaXRtYXBJbWFnZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNs
YXNzIEltYWdlRGVjb2RlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIEltYWdlU291cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPEltYWdlU291cmNlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEltYWdlU291cmNlPiB7
CiAgICAgZnJpZW5kIGNsYXNzIEJpdG1hcEltYWdlOwpAQCAtNTYsOSArNTYsOSBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlU291cmNlKFdURk1vdmUobmF0aXZl
SW1hZ2UpKSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIHZvaWQgcmVzZXREYXRhKFNoYXJlZEJ1ZmZlciog
ZGF0YSk7Ci0gICAgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQoU2hhcmVkQnVmZmVyKiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2b2lkIHJlc2V0
RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBFbmNvZGVkRGF0YVN0YXR1
cyBkYXRhQ2hhbmdlZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCk7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpOwogCiAgICAgdW5zaWduZWQg
ZGVjb2RlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZWRTaXplOyB9CkBAIC0xNTQsNyAr
MTU0LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFQgZmlyc3RG
cmFtZU1ldGFkYXRhQ2FjaGVJZk5lZWRlZChUJiBjYWNoZWRWYWx1ZSwgTWV0YWRhdGFUeXBlLCBU
IChJbWFnZUZyYW1lOjoqZnVuY3RvcikoKSBjb25zdCwgSW1hZ2VGcmFtZTo6Q2FjaGluZywgY29u
c3Qgc3RkOjpvcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgPSB7IH0pOwogCi0gICAgYm9vbCBl
bnN1cmVEZWNvZGVyQXZhaWxhYmxlKFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgYm9vbCBlbnN1
cmVEZWNvZGVyQXZhaWxhYmxlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpOwogICAgIGJv
b2wgaXNEZWNvZGVyQXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVyOyB9CiAgICAg
dm9pZCBkZXN0cm95RGVjb2RlZERhdGEoc2l6ZV90IGZyYW1lQ291bnQsIHNpemVfdCBleGNsdWRl
RnJhbWUpOwogICAgIHZvaWQgZGVjb2RlZFNpemVDaGFuZ2VkKGxvbmcgbG9uZyBkZWNvZGVkU2l6
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKaW5kZXggNWFk
ZTdlZjY5ZTI5YTc3ZjJiODQwOTI5ZTY0YmUwYzQ0ZTUxNjQzOS4uNTc3YmQ1MDhhNWM0MDlmNGJl
OWU0Y2YyMDJiODFlNjFlNDViNDRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTW9kZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01vZGVsLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK1JlZjxNb2RlbD4gTW9kZWw6OmNyZWF0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2RlbChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKG1p
bWVUeXBlKSwgV1RGTW92ZSh1cmwpKSk7CiB9CiAKLU1vZGVsOjpNb2RlbChSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitNb2RlbDo6
TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwp
CiAgICAgOiBtX2RhdGEoV1RGTW92ZShkYXRhKSkKICAgICAsIG1fbWltZVR5cGUoV1RGTW92ZSht
aW1lVHlwZSkpCiAgICAgLCBtX3VybChXVEZNb3ZlKHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTW9kZWwuaAppbmRleCA5MTU2MGFlODhmYTY0YzJhMGMxMDAxNDE0ZjMyNDFj
ZTAwNTZhMWY0Li5lNmJkZTE2NmY5NDRjZGU3ZGIzMjhjMjk3NmVjNjgyYWRiNmQxMDM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTM4LDEwICszOCwxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vZGVsIGZpbmFsIDogcHVibGljIFJlZkNv
dW50ZWQ8TW9kZWw+IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1v
ZGVsPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5Nb2RlbCgpOwogCi0g
ICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGE7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
OyB9CiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5
cGU7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAg
CkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4
cGxpY2l0IE1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7
CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwog
Ci0gICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWY8U2hhcmVk
QnVmZmVyPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgVVJMIG1fdXJsOwog
fTsKQEAgLTkzLDcgKzkzLDcgQEAgUmVmUHRyPE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIE1vZGVsOjpjcmVhdGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOworICAgIHJldHVy
biBNb2RlbDo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZN
b3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOwogfQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVk
aWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXggNzQ1OWM1ODU4ZDI0ODdlZjJjNWZkMzcx
NzM5ODZiMzM3MzRlYzI4YS4uODg2OTFkYzI1NmQ2ZGQ2YzQ1ZjQ2ZTAxNTQ5Njc0MjQ1YWEzNTMz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1N
ZWRpYVJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKQEAgLTUxLDggKzUxLDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRh
dGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWdu
ZWQgbG9uZyBsb25nKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2Ug
Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgdXNlcyBTaGFyZWRCdWZmZXIuCisgICAgdmlydHVhbCB2
b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgLy8g
VGhpcyBtZXRob2Qgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVu
dCB1c2VzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNl
aXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHBsYXRmb3JtLCBjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgbGVuZ3RoKSB7IGRhdGFSZWNlaXZlZChwbGF0Zm9ybSwgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSwgbGVuZ3RoKSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNr
RmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBSZXNvdXJjZUVycm9yJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCmluZGV4IDU0OTlmMzdhN2YzNjQ2
YmQ1ZjM5NWE0OGIwOWQ5NDExZDRjOWI2NjQuLmQzZTFiNTgwNGU4NWE5OTExY2YyMGZjZWQzNGJm
MjU1YTMxNDQzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC0xMzE4LDcgKzEzMTgsNyBAQCB2b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYm
IG9yaWdpbmFsU2FtcGxlKQogICAgIHVwZGF0ZUhpZ2hlc3RQcmVzZW50YXRpb25UaW1lc3RhbXAo
KTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZChSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgYXBwZW5kKGJ1ZmZlci0+ZXh0cmFj
dERhdGEoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Tb3VyY2VCdWZmZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKaW5kZXggZWY4NmE0NzM2OTM3MWM4M2U4ODNiMjliYmI2
YjlhYjk2ZWNhNWYxZC4uNmI3ZDk1ZTUyYjlkZjBjODFhZjNiZTFkNmQ5ZjNjOGVkMzk1NDE2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVy
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1
ZmZlclByaXZhdGUuaApAQCAtNDksNyArNDksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFz
cyBUaW1lUmFuZ2VzOwogCiBlbnVtIGNsYXNzIFNvdXJjZUJ1ZmZlckFwcGVuZE1vZGUgOiB1aW50
OF90IHsKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgflNvdXJjZUJ1ZmZlclByaXZhdGUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUo
Ym9vbCkgPSAwOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBhcHBlbmQoUmVmPFNo
YXJlZEJ1ZmZlcj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGFwcGVuZChS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCmluZGV4IGEwZTczYjNm
M2ViY2IzYzc4MGZlMzUxZTlkNmE4MGI2ZmI5MDU1YjQuLmIzN2ViZmM1NjIwNDhmZTZkNzk0MWQy
ZTVjYzFiY2ExZGMxNTcxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIGNvbnN0
IHVpbnQzMl90IGtXb2ZmMlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2MzI7IC8vICJ3T0YyIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MzIoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQorc3RhdGlj
IGJvb2wgcmVhZFVJbnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVp
bnQzMl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZl
ci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVl
KSkKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIGJvb2wgcmVhZFVJbnQzMihDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgcmVhZFVJbnQxNihDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCBy
ZWFkVUludDE2KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2X3Qm
IHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUo
KSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAt
NzUsNyArNzUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVJbnQxNihWZWN0b3I8dWludDhfdD4mIHZl
Y3RvciwgdWludDE2X3QgdmFsdWUpCiAKIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3b2ZmU2lnbmF0
dXJlID0gMHg3NzRmNDY0NjsgLyogJ3dPRkYnICovCiAKLWJvb2wgaXNXT0ZGKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIHNpemVfdCBvZmZzZXQgPSAwOwogICAgIHVpbnQzMl90IHNpZ25hdHVyZTsKQEAgLTEy
Niw3ICsxMjYsNyBAQCBwcml2YXRlOgogfTsKICNlbmRpZgogCi1ib29sIGNvbnZlcnRXT0ZGVG9T
Zm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkK
K2Jvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhf
dD4mIHNmbnQpCiB7CiAgICAgQVNTRVJUX0FSRyhzZm50LCBzZm50LmlzRW1wdHkoKSk7CiAKQEAg
LTI4Myw3ICsyODMsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKICAgICByZXR1cm4gc2ZudC5zaXpl
KCkgPT0gdG90YWxTZm50U2l6ZTsKIH0KIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNz
YXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorYm9vbCBjb252ZXJ0
V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0yOTQsNyAr
Mjk0LDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRl
ZEZvbnQ7CiAgICAgaWYgKGNvbnZlcnRXT0ZGVG9TZm50KCpidWZmZXIsIGNvbnZlcnRlZEZvbnQp
KQotICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShjb252ZXJ0ZWRGb250KSk7CisgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoY29udmVydGVkRm9udCkpOwogICAgIGVsc2UKICAgICAgICAgYnVmZmVyID0gbnVs
bHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09G
RkZpbGVGb3JtYXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxl
Rm9ybWF0LmgKaW5kZXggNzhhYzRhN2FmZmY0ZDRiZWU5ZmQwMmNhYmU3YTk4ZjJmZTdkZGU4Mi4u
M2Q1NzAxMDdmMjhmODU0NDc0MWUzNDk1YzAxNjA3ZTRkZTkwMmQ1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCkBAIC0zMCwxOSAr
MzAsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGJ1
ZmZlciBpcyBhIFdPRkYgZmlsZS4KLWJvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
KTsKK2Jvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZhbHNlIGlmIHRo
ZSBXT0ZGIGZpbGUgd29mZiBpcyBpbnZhbGlkIG9yIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8g
c2ZudCAoZm9yIGV4YW1wbGUsCiAvLyBpZiBjb252ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5KS4g
T3RoZXJ3aXNlIHJldHVybnMgdHJ1ZSBhbmQgd3JpdGVzIHRoZSBzZm50IHBheWxvYWQgaW50byBz
Zm50LgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2Zm
LCBWZWN0b3I8dWludDhfdD4mIHNmbnQpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRC
dWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7CiAKIC8vIElmIHRoZSBnaXZlbiBi
dWZmZXIgaXMgYSBXT0ZGIGZpbGUgYW5kIHRoZSBjdXJyZW50IHBsYXRmb3JtIGhhcyBubyBuYXRp
dmUgc3VwcG9ydCBmb3IgV09GRgogLy8gZm9udHMsIGNvbnZlcnQgaXQgdG8gc2ZudC4gUmV0dXJu
cyB0cnVlIGlmIHRoZSBnaXZlbiBidWZmZXIgd2FzIGNvbnZlcnRlZC4gSWYgY29udmVyc2lvbiBm
YWlscywKIC8vIHRoZSBidWZmZXIgd2lsbCBiZSBzZXQgdG8gbnVsbHB0ci4KLWJvb2wgY29udmVy
dFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsK
K2Jvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYp
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBs
YXlTdHJlYW1pbmcuY3BwCmluZGV4IGQ3YzAxM2Q1NGUzZGVkMDc4NTQ5MDI4ZDUxZDZlMDI4Yzk3
NTA3YzYuLjhiMDRmOWJlOTZjMzZlMGEyNjIxODBhMjVlYTM3NDU5NjJiM2Q3ZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtODYsNyArODYsNyBAQCBj
b25zdCBBdG9tU3RyaW5nJiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNrZE5hbWUoKQog
ICAgIHJldHVybiBza2Q7CiB9CiAKLXN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4
dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEpTT04gb2YgdGhlIGZvcm1hdDog
Insgc2luZjogWyA8YmFzZTY0LWVuY29kZWQtc3RyaW5nPiBdIH0iCiAgICAgaWYgKGJ1ZmZlci5z
aXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCkBAIC0xMDUsNyAr
MTA1LDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmICghc2luZkFycmF5KQogICAgICAg
ICByZXR1cm4geyB9OwogCi0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBzaW5mczsKKyAg
ICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBzaW5mczsKICAgICBzaW5mcy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpbmZBcnJheS0+bGVuZ3RoKCkpOwogCiAgICAgZm9yIChh
dXRvJiB2YWx1ZSA6ICpzaW5mQXJyYXkpIHsKQEAgLTEyNCw3ICsxMjQsNyBAQCBzdGF0aWMgVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB9CiAKIHVzaW5nIFNjaGVtZUFuZEtleVJlc3VsdCA9IFZlY3RvcjxzdGQ6OnBh
aXI8Rm91ckNDLCBWZWN0b3I8dWludDhfdD4+PjsKLXN0YXRpYyBTY2hlbWVBbmRLZXlSZXN1bHQg
ZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJvbVNpbmYoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CitzdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5m
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGJ1ZmZl
cnMgPSBleHRyYWN0U2luZkRhdGEoYnVmZmVyKTsKICAgICBpZiAoIWJ1ZmZlcnMuc2l6ZSgpKQpA
QCAtMTcwLDkgKzE3MCw5IEBAIHN0YXRpYyBTY2hlbWVBbmRLZXlSZXN1bHQgZXh0cmFjdFNjaGVt
ZUFuZEtleUlkRnJvbVNpbmYoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2luZihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxT
aGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4ga2V5SURzOwogICAgIGF1dG8gcmVzdWx0cyA9IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZy
b21TaW5mKGJ1ZmZlcik7CiAKICAgICBmb3IgKGF1dG8mIHJlc3VsdCA6IHJlc3VsdHMpIHsKQEAg
LTE4Myw3ICsxODMsNyBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+
IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleQogICAgIHJldHVybiBrZXlJ
RHM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
Zzo6c2FuaXRpemVTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVT
aW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBDb21t
b24gU0lORiBCb3ggRm9ybWF0CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0xOTEsMTcg
KzE5MSwxNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1p
bmc6OnNhbml0aXplU2luZihjb25zdCBTaGFyZWRCdWZmZQogICAgIHJldHVybiBidWZmZXIuY29w
eSgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1p
bmc6OnNhbml0aXplU2tkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVT
a2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIFVOVVNFRF9Q
QVJBTShidWZmZXIpOwogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGJ1ZmZlci5j
b3B5KCk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gQ0RN
UHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2tkKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2tkKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBJbiB0aGUgJ3Nr
ZCcgc2NoZW1lLCB0aGUgaW5pdCBkYXRhIGlzIHRoZSBrZXkgSUQuCi0gICAgVmVjdG9yPFJlZjxT
aGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4ga2V5SURzOwogICAgIGtleUlEcy5hcHBlbmQoYnVmZmVyLmNvcHkoKSk7CiAgICAgcmV0
dXJuIGtleUlEczsKIH0KQEAgLTM5Myw3ICszOTMsNyBAQCBib29sIENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAgICAgaWYgKCF2YWxpZEluaXREYXRhVHlwZXMo
KS5jb250YWlucyhpbml0RGF0YVR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjMs
NyArNDIzLDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXAKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2Fu
aXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2Fu
aXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29u
c3QKIHsKICAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFt
aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
RmFpclBsYXlTdHJlYW1pbmcuaAppbmRleCBiYzkzZjZmNmE3YmRkMDFlZmJmNTViNjJiZGI2YTRl
NjZlZjkxMmIzLi4zMTdiYjhkNTdlODZjMDYyMTRlMGI0MDU5ZGRmNGY4ODA3Yzc0YzZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
RmFpclBsYXlTdHJlYW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaApAQCAtNzEsMTcgKzcxLDE3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgb3ZlcnJpZGU7CiAgICAgYm9v
bCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wg
c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgc3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFy
ZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25z
ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHNpbmZOYW1lKCk7Ci0g
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFj
dEtleUlEc1NpbmYoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHNhbml0aXplU2luZihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFj
dEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTaW5mKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBza2ROYW1l
KCk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4g
ZXh0cmFjdEtleUlEc1NrZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTa2QoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4
dHJhY3RLZXlJRHNTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRp
YyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTa2QoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxGb3VyQ0M+JiB2
YWxpZEZhaXJQbGF5U3RyZWFtaW5nU2NoZW1lcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaApp
bmRleCAxNTliOTBjZGI0OGY3ZmU0NGJiNDliZTJlYzFjMWMyZjQzMjg2NDAwLi41NmI1OGMyNWEy
ODcwOWZiMzgyMjE4MzllNTViYWU0NWVkOTNjZjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgK
QEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1l
bnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkZh
aXJQbGF5U3RyZWFtaW5nOyB9CiAKICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlv
bihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50
aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwot
ICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vz
c0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2
b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUmVmUHRy
PENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwogICAgIHZvaWQgc2V0
Q2xpZW50KFdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+JiYpIGZpbmFsOwpAQCAtOTQsMTAgKzk0
LDEwIEBAIHB1YmxpYzoKIAogICAgIE5TVVJMICpzdG9yYWdlVVJMKCkgY29uc3QgeyByZXR1cm4g
bV9zdG9yYWdlVVJMLmdldCgpOyB9CiAgICAgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkKCkg
Y29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkOyB9Ci0gICAgU2hhcmVkQnVm
ZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlmaWNh
dGUuZ2V0KCk7IH0KKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0KICAgICBBVkNv
bnRlbnRLZXlTZXNzaW9uKiBjb250ZW50S2V5U2Vzc2lvbigpOwogCi0gICAgUmV0YWluUHRyPEFW
Q29udGVudEtleVJlcXVlc3Q+IHRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0
aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZlciYgaW5p
dERhdGEpOworICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiB0YWtlVW5leHBlY3Rl
ZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSk7CiAKICAgICAvLyBBVkNv
bnRlbnRLZXlTZXNzaW9uRGVsZWdhdGVDbGllbnQKICAgICB2b2lkIGRpZFByb3ZpZGVSZXF1ZXN0
KEFWQ29udGVudEtleVJlcXVlc3QqKSBmaW5hbDsKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0
aW9uQ2hhbmdlZChib29sKSBmaW5hbDsKICAgICB2b2lkIGV4dGVybmFsUHJvdGVjdGlvblN0YXR1
c0RpZENoYW5nZUZvckNvbnRlbnRLZXlSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBmaW5h
bDsKIAotICAgIHVzaW5nIEtleXMgPSBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVz
aW5nIEtleXMgPSBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAgICBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JLZXlJRHMo
Y29uc3QgS2V5cyYpIGNvbnN0OwogICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQyogc2Vzc2lvbkZvckdyb3VwKEFWQ29udGVudEtleVJlcG9ydEdyb3VwKikgY29u
c3Q7CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNz
aW9uRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgY29uc3Q7CkBAIC0xMjksNyArMTI5
LDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50PiBtX2NsaWVudDsK
ICAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5U2Vzc2lvbj4gbV9zZXNzaW9uOwogICAgIFJldGFp
blB0cjxXZWJDb3JlRlBTQ29udGVudEtleVNlc3Npb25EZWxlZ2F0ZT4gbV9kZWxlZ2F0ZTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOworICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOwogICAgIGJvb2wgbV9w
ZXJzaXN0ZW50U3RhdGVBbGxvd2VkIHsgdHJ1ZSB9OwogICAgIFJldGFpblB0cjxOU1VSTD4gbV9z
dG9yYWdlVVJMOwogICAgIFZlY3RvcjxXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQz4+IG1fc2Vzc2lvbnM7CkBAIC0xNTAsOCArMTUwLDggQEAgcHVibGlj
OgogI2VuZGlmCiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb24KLSAgICB2b2lkIHJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2
b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikg
ZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBj
bG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7
CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwg
UmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMu
bW0KaW5kZXggNjJiZDEzNDc5YzZjMzM2MmNiZTcyNTFiZjY5ZWE4ZDFmODEwYmUyNS4uYmE1MDYx
ZWJiNWM1ZmJlMDc0ZDNhMjlkZWE0ZjkxOGZjMjYyMWNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akMubW0KQEAgLTIxNyw3ICsyMTcsNyBAQCBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VO
RAogICAgIHJldHVybiBBdG9tU3RyaW5nKG5zSW5pdFR5cGUpOwogfQogCi1zdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gaW5pdGlhbGl6YXRpb25EYXRhRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1
ZXN0KiByZXF1ZXN0KQorc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0aWFs
aXphdGlvbkRhdGFGb3JSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqIHJlcXVlc3QpCiB7CiAg
ICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
QEAgLTI2NSw3ICsyNjUsNyBAQCBBVkNvbnRlbnRLZXlTZXNzaW9uKiBDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6Y29udGVudEtleVNlc3Npb24oKQogICAgIHJldHVybiBtX3Nl
c3Npb24uZ2V0KCk7CiB9CiAKLVJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiBDRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9y
SW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgU2hhcmVk
QnVmZmVyJiBpbml0RGF0YSkKK1JldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiBDRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9y
SW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgZm9yIChhdXRvIHJlcXVlc3RJdGVy
ID0gbV91bmV4cGVjdGVkS2V5UmVxdWVzdHMuYmVnaW4oKTsgcmVxdWVzdEl0ZXIgIT0gbV91bmV4
cGVjdGVkS2V5UmVxdWVzdHMuZW5kKCk7ICsrcmVxdWVzdEl0ZXIpIHsKICAgICAgICAgYXV0byYg
cmVxdWVzdCA9ICpyZXF1ZXN0SXRlcjsKQEAgLTMxNiw3ICszMTYsNyBAQCBwcml2YXRlOgogICAg
IFJlc3BvbnNlTWFwIG1fcmVzcG9uc2VzOwogfTsKIAotc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1
ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgUmVm
UHRyPEpTT046OlZhbHVlPiBwYXJzZUpTT05WYWx1ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gRmFpbCBvbiBsYXJnZSBidWZmZXJzIHdob3NlIHNpemUg
ZG9lc24ndCBmaXQgaW50byBhIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLgogICAgIHNpemVfdCBz
aXplID0gYnVmZmVyLnNpemUoKTsKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIENETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29u
c3QgQ0RNSwogICAgIGNhbGxiYWNrKGluaXRpYWxpemUoKSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgc2VydmVyQ2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNr
KQordm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgc2VydmVyQ2VydGlmaWNhdGUs
IFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIERFQlVHX0xPR19JRl9QT1NTSUJM
RShMT0dJREVOVElGSUVSKTsKICAgICBtX3NlcnZlckNlcnRpZmljYXRlID0gV1RGTW92ZShzZXJ2
ZXJDZXJ0aWZpY2F0ZSk7CkBAIC01ODUsOCArNTg1LDggQEAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDKiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
QzoKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8gc2Vzc2lvbktleXMgPSBz
ZXNzaW9uSW50ZXJmYWNlLT5rZXlJRHMoKTsKLSAgICAgICAgaWYgKGFueU9mKHNlc3Npb25LZXlz
LCBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIHNlc3Npb25LZXkpIHsKLSAgICAgICAgICAg
IHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYg
a2V5SUQpIHsKKyAgICAgICAgaWYgKGFueU9mKHNlc3Npb25LZXlzLCBbJl0oY29uc3QgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBzZXNzaW9uS2V5KSB7CisgICAgICAgICAgICByZXR1cm4g
a2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiBrZXlJRCkgewogICAgICAgICAgICAgICAgIHJldHVybiBrZXlJRC5nZXQoKSA9PSBzZXNzaW9u
S2V5LmdldCgpOwogICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQ7CiAgICAgICAgIH0pKQpAQCAt
NjczLDcgKzY3Myw3IEBAIEtleXMgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjprZXlJRHMoKQogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLXZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNr
JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFpc0xpY2Vuc2VUeXBlU3VwcG9ydGVkKGxpY2Vuc2VU
eXBlKSkgewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBm
YWxzZSwgbGljZW5zZVR5cGUgXCIiLCBsaWNlbnNlVHlwZSwgIlwiIG5vdCBzdXBwb3J0ZWQiKTsK
QEAgLTczNiw3ICs3MzYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZQogICAgIH0KIH0KIAot
c3RhdGljIGJvb2wgaXNFcXVhbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCitzdGF0aWMgYm9vbCBpc0VxdWFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9
IGRhdGEudHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBpZiAoIWFycmF5QnVmZmVyKQpAQCAt
NzU0LDcgKzc1NCw3IEBAIHN0YXRpYyBib29sIGlzRXF1YWwoY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHJldHVybiBzdHJpbmdPckV4Y2VwdGlvbi5y
ZXR1cm5WYWx1ZSgpID09IHZhbHVlOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNl
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIExpY2Vuc2VVcGRhdGVDYWxs
YmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxi
YWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2V4cGlyZWRTZXNzaW9ucy5pc0VtcHR5KCkg
JiYgaXNFcXVhbChyZXNwb25zZURhdGEsICJhY2tub3dsZWRnZWQiX3MpKSB7CiAgICAgICAgIGF1
dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKTsKQEAgLTg1
Niw3ICs4NTYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICAgICAgYXV0byBr
ZXlJRCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKmtleUlEVmVjdG9yKSk7CiAgICAg
ICAgICAgICBhdXRvIGZvdW5kSW5kZXggPSBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVz
dHMuZmluZE1hdGNoaW5nKFsmXSAoYXV0byYgcmVxdWVzdCkgewogICAgICAgICAgICAgICAgIGF1
dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4ga2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZl
cj4mIGlkKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kTWF0Y2hpbmcoWyZd
KGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgaWQpIHsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGlkLmdldCgpID09IGtleUlELmdldCgpOwogICAgICAgICAgICAgICAgIH0p
ICE9IG5vdEZvdW5kOwogICAgICAgICAgICAgfSk7CkBAIC0xMTU1LDcgKzExNTUsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
cXVlc3RzKFZlY3RvcjxSZXRhaQogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFu
Y2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCiAgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZp
Y2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKLSAgICB1c2luZyBSZXF1
ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5Q
dHI8TlNEYXRhPj4+OworICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZlY3RvcjxzdGQ6OnBhaXI8
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OwogICAg
IHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CiAgICAgICAgIHVzaW5nIENhbGxiYWNrRnVuY3Rp
b24gPSBGdW5jdGlvbjx2b2lkKFJlcXVlc3RzRGF0YSYmKT47CiAgICAgICAgIHN0YXRpYyBSZWZQ
dHI8Q2FsbGJhY2tBZ2dyZWdhdG9yPiBjcmVhdGUoQ2FsbGJhY2tGdW5jdGlvbiYmIGNvbXBsZXRp
b25IYW5kbGVyKQpAQCAtMTIxMSw3ICsxMjExLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkK
ICAgICBAdHJ5IHsKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1ZXN0
LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9y
UmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7CisgICAgICAgICAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKICAg
ICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29u
dGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50
aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRs
ZXI6W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRlbnRL
ZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgICAg
IFVOVVNFRF9QQVJBTShlcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29k
ZXJBVkZPYmpDLmgKaW5kZXggMDMzNGQ2MjNiMmE3NjA1YzliZTEyMjEzYjVhYmRiYmFjMmIwM2Yx
NS4uNjJiODNmYmZkNTc5NDA1MGViYzk0MDYzNzA0OTBiYTJiM2VjMDg3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaApAQCAtNTMsNyArNTMsNyBAQCBj
bGFzcyBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb247CiAKIGNsYXNzIEltYWdlRGVjb2RlckFW
Rk9iakMgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IGNyZWF0ZShTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVy
QVZGT2JqQz4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZp
cnR1YWwgfkltYWdlRGVjb2RlckFWRk9iakMoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBib29sIHN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSk7CkBAIC04Niw3ICs4Niw3IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdN
b2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRF
eHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVk
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAg
LTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxJbWFnZURl
Y29kZXI6OkZyYW1lSW5mbz4gZnJhbWVJbmZvcygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIElt
YWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
QWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBJbWFnZURlY29k
ZXJBVkZPYmpDKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgQVZBc3Nl
dFRyYWNrICpmaXJzdEVuYWJsZWRUcmFjaygpOwogICAgIHZvaWQgcmVhZFNhbXBsZXMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IGE1NGRm
M2RiYWRmOTA0ZjQ1NDg0YjhjZTViY2E0OWZjNTU2OGZlYjkuLjM1YzZjZTY3ZTg1Zjg2YWUxNjRj
MjFhNzI2MDdmYzA2NWVjYjUwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5tbQpAQCAtMjg5LDcgKzI4OSw3IEBAIEltYWdlRGVjb2RlckFWRk9iakNT
YW1wbGUqIHRvU2FtcGxlKEl0ZXJhdG9yIGl0ZXIpCiAKICNwcmFnbWEgbWFyayAtIEltYWdlRGVj
b2RlckFWRk9iakMKIAotUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFW
Rk9iakM6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFn
ZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIC8vIEFW
Rm91bmRhdGlvbiBtYXkgbm90IGJlIGF2YWlsYWJsZSBhdCBydW50aW1lLgogICAgIGlmICghQVZB
c3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpCkBAIC0zMDEsNyAr
MzAxLDcgQEAgUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6
OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnMKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBJbWFnZURlY29kZXJBVkZPYmpDKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pKTsKIH0KIAotSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VE
ZWNvZGVyQVZGT2JqQyhTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckFW
Rk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKQogICAgIDogSW1hZ2VEZWNvZGVyKCkKICAgICAsIG1fbWltZVR5cGUobWltZVR5cGUp
CiAgICAgLCBtX3V0aShXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpKQpAQCAtNjQx
LDcgKzY0MSw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50
U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKICAgICBtX2xvYWRlci5nZXQoKS5l
eHBlY3RlZENvbnRlbnRTaXplID0gZXhwZWN0ZWRDb250ZW50U2l6ZTsKIH0KIAotdm9pZCBJbWFn
ZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgW21fbG9hZGVy
IHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBj
b21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggMjAw
ZTFhOGY5YWZiYTBmY2JiYTViMGEzZWQ3MDRjZDM0MWI0NTBkNi4uYzlkOWIyYTk2ODViMDFlOTFh
YWEwMGMwZTAwMzA3NzM4NTY5MTQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtNjYsNyAr
NjYsNyBAQCBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY7CiBjbGFzcyBN
ZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7CiBj
bGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzsKIGNs
YXNzIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzsKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcjsKQEAgLTQyNiw3ICs0MjYsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjpvcHRp
b25hbDxXYWxsVGltZT4gbV93YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRUaW1lOwogICAgIG11dGFi
bGUgaW50IG1fdGltZUNvbnRyb2xTdGF0dXNBdENhY2hlZEN1cnJlbnRUaW1lIHsgMCB9OwogICAg
IG11dGFibGUgZG91YmxlIG1fcmVxdWVzdGVkUmF0ZUF0Q2FjaGVkQ3VycmVudFRpbWUgeyAwIH07
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKKyAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKICAgICBkb3VibGUgbV9jYWNoZWRSYXRlIHsgMCB9Owog
ICAgIGJvb2wgbV9yZXF1ZXN0ZWRQbGF5aW5nIHsgZmFsc2UgfTsKICAgICBkb3VibGUgbV9yZXF1
ZXN0ZWRSYXRlIHsgMS4wIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBkMThhODVhNzk0
ZjUyM2Y5NDkxMmUyN2YwOGI3Y2NiZTg5M2M4ZWQwLi5iMWM2MDc5YzY0ODcwZjg4ZTM1YzgwODEx
YTViMThiZGExYjdmNjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTI3OTIsNyArMjc5
Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YXR0ZW1wdFRv
RGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jCiAgICAgaWYgKCFtX2tleUlEIHx8ICFtX2Nk
bUluc3RhbmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGluc3RhbmNlU2Vzc2lvbiA9
IG1fY2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMoVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
Pjo6ZnJvbSgqbV9rZXlJRCkpOworICAgIGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0
YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
Pjo6ZnJvbSgqbV9rZXlJRCkpOwogICAgIGlmICghaW5zdGFuY2VTZXNzaW9uKQogICAgICAgICBy
ZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy5oCmluZGV4IDAzNDIwZjEzODM2NGZhYzIwOTFlMTA0ZDEzNmZmMzhhMWZiOWZl
MjIuLmVhZDA4M2E2Y2M3ZTczNmI0MjE3MTBmYWMzOTJhMDdkZmY5MmJlNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAt
NzMsNyArNzMsNyBAQCBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZTsKIGNsYXNzIEF1ZGlvVHJhY2tQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOwogY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM7CiBjbGFzcyBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb247Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQ0Vycm9yQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTE1Myw3ICsx
NTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSWQo
UmVmPE1lZGlhU2FtcGxlPiYmLCB1aW50NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlh
VHlwZSk7CiAKICAgICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcwotICAgIHZvaWQg
YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7
CiAgICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJv
bU1lZGlhU291cmNlKCkgZmluYWw7CkBAIC0yMjEsNyArMjIxLDcgQEAgcHJpdmF0ZToKICNlbmRp
ZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lP
TikKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+IG1fY2Rt
SW5zdGFuY2U7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBtX2tleUlEczsKKyAgICBW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX2tleUlEczsKICNlbmRpZgogCiAg
ICAgc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IG1fY2FjaGVkU2l6ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggM2Ey
ODY3YTFhYzI0M2JiOWM5M2M5ZDZiNzBjYTU2YjAyOTQ4ZmM5Yy4uMjRhZTBlMTQwNjAxOTE0M2Zh
ZDRmMTUyOWU2OGVkNDliNDE2NTNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTU2Myw3ICs1NjMsNyBAQCB2b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJ
bml0aWFsaXphdGlvbkRhdGFGbwogICAgIFVOVVNFRF9QQVJBTShoYXNTZXNzaW9uU2VtYXBob3Jl
KTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVu
ZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUiwgImRhdGEgbGVuZ3RoID0gIiwgZGF0YS0+c2l6ZSgpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCA1
ODM4ZTQ5MzdkZjg5ZjU4NjFhY2Q5ZDk2ZGMxMjI5NWI2YmM3NDNkLi4wZWZlZWFlZjViMmQ3MWJj
NmQ2NzA0ZGQxYjk3NWFjYmFlMTEzYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOwogY2xhc3MgUGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXI+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTY1LDcgKzY1LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAg
dm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZl
cihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1
ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVudDsKICAgICBSZXRhaW5QdHI8QVZBc3NldFJl
c291cmNlTG9hZGluZ1JlcXVlc3Q+IG1fYXZSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGI2ZTIzN2I1ZGY1ZGRm
NmE3MmQ1NDE2OTVhMDc4MjMxODFhY2FkYWQuLmY5MjFmM2RhMGU2OWIzMzk5NzdjOWUzZTQ5NjY3
YTI4ZjVlOTVjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIubW0KQEAgLTE1Niw3ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsIHsgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICBib29sIHNob3VsZENhY2hlUmVz
cG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZp
bmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgZmluYWwgeyB9
Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQg
YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9p
ZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmluaXNo
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmlu
YWwgeyBsb2FkRmluaXNoZWQoKTsgfQpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgUGxhdGZvcm1S
ZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIG1fcGFyZW50LmxvYWRGaW5p
c2hlZCgpOwogfQogCi12b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
dm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAg
ICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgbV9wYXJlbnQubmV3RGF0
YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQoKSk7CkBAIC0yMjUsNyArMjI1LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFy
ZW50OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNl
TWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QpCkBAIC0yMzUsNyArMjM1LDcgQEAgRGF0YVVSTFJlc291cmNlTWVkaWFM
b2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ciYKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNvZGVyOjpkZWNvZGUocmVxdWVz
dC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmluZ0Jhc2U2NCkpIHsKICAgICAg
ICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShyZXF1ZXN0
LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKKyAgICAgICAgbV9idWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOwogICAgIH0KIAogICAg
IGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsK
QEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9hZEZp
bmlzaGVkKCkKICAgICBzdG9wTG9hZGluZygpOwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKK3ZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFy
ZWRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBVkFz
c2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0
IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oCmluZGV4IDQ2YjA3ZmU3MTJlNzllNjEzMTdjMGQxMTZmZTZhM2YwNGFmOWZmY2Iu
Ljk0MTliY2VhMzhkYmY4ZDY0OTJmNjgwMWQ5YTIxNTYyMzY2YTJjNmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmgKQEAgLTMxLDExICszMSwxMSBAQCB0eXBlZGVmIHN0cnVjdCBGVF9G
YWNlUmVjXyogIEZUX0ZhY2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlv
bkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250UGxhdGZvcm1EYXRh
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0
cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJp
YW50U2V0dGluZ3M7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9y
bURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogcHVibGljOgotICAgIEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoRlRfRmFjZSwgU2hhcmVkQnVmZmVyJik7CisgICAgRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShGVF9GYWNlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgfkZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoKSA9IGRlZmF1bHQ7CiAgICAgRm9udFBsYXRmb3JtRGF0YSBmb250UGxh
dGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMs
IGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zv
cm1hdChjb25zdCBTdHJpbmcmKTsKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8Y2Fpcm9fZm9udF9mYWNlX3Q+IG1fZm9udEZhY2U7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5jcHAKaW5kZXggMjAzNWM5OWE3ZjY4YjU0ODljODU4YTNlNmQ3MDMzZDEzNWQxZjdkYi4uYjZk
M2ViMzYzMTEyNDQ2MTNiMzgwM2YyZjNkMjRkMzA4N2VhMjRlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAt
MjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEludFNpemU+IGRlbnNpdHlDb3Jy
ZWN0ZWRTaXplRnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVmCiAjaWYgIVBMQVRGT1JNKENP
Q09BKQogc2l6ZV90IHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2
b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9uLCBzaXplX3QgY291bnQpCiB7Ci0gICAgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q29udGlndW91c1No
YXJlZEJ1ZmZlcio+KGluZm8pOworICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3Rh
dGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CiAgICAgc2l6ZV90IHNvdXJjZVNpemUgPSBz
aGFyZWRCdWZmZXItPnNpemUoKTsKICAgICBpZiAocG9zaXRpb24gPj0gc291cmNlU2l6ZSkKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC0yNDQsMTIgKzI0NCwxMiBAQCBzaXplX3Qgc2hhcmVkQnVmZmVy
R2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRp
b24sCiAKIHZvaWQgc2hhcmVkQnVmZmVyUmVsZWFzZSh2b2lkKiBpbmZvKQogewotICAgIFNoYXJl
ZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7
CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAgIHNoYXJlZEJ1ZmZlci0+ZGVyZWYo
KTsKIH0KICNlbmRpZgogCi1JbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVm
ZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFn
ZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
QWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBpZiAoZGF0YS5zaXplKCkgPj0gMzIpCkBAIC01
NjIsMjAgKzU2MiwyMCBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVG
cmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaQogICAgIHJldHVybiBtYXNr
ZWRJbWFnZSA/IG1hc2tlZEltYWdlIDogaW1hZ2U7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyQ0c6
OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQg
SW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGFsbERhdGFS
ZWNlaXZlZDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRh
IGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRo
b3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2UuCi0gICAgLy8gV2UgdXNlIFNoYXJlZEJ1
ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5k
IHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcwotICAgIC8vIHJlYWxseSBsb29raW5nIGF0
IHRoZSBTaGFyZWRCdWZmZXIuCisgICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0
IHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgorICAgIC8vIFdlIHVzZSBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZE
YXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCisgICAgLy8g
cmVhbGx5IGxvb2tpbmcgYXQgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAgICAgQ0dJbWFn
ZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UKLSAg
ICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCisg
ICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlci4KICAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygp
OwogICAgIGNvbnRpZ3VvdXNEYXRhLmdldCgpLnJlZigpOwotICAgIC8vIFdlIHVzZSB0aGUgR2V0
Qnl0ZXNBdFBvc2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBv
bmUgYmVjYXVzZSBTaGFyZWRCdWZmZXIKKyAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3Np
dGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2Ug
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgogICAgIC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8g
bG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1v
dmUsIHdoaWNoCiAgICAgLy8gaXMgYSByZXF1aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQ
b2ludGVyIGNhbGxiYWNrLgogICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3Zp
ZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24s
IHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCmluZGV4IDk3NDA3MzZhMjFhYzk5OGFiMDVm
MWM5YjRmNWIxNjc1ZTQ0ZDJjOTEuLmEwYWMxYzJmYmVlNTI3ZTVhYjExMTQ1NTgxMmJkYjczNjNh
MDU1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuaApAQCAtMzIsOSArMzIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBJbWFnZURlY29kZXJDRyBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEltYWdlRGVjb2RlckNHKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsK
KyAgICBJbWFnZURlY29kZXJDRyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCi0gICAgc3RhdGljIFJlZjxJbWFn
ZURlY29kZXJDRz4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKQorICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyQ0c+IGNyZWF0ZShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJDRyhkYXRhLCBhbHBoYU9wdGlvbiwgZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CkBAIC02NCw3ICs2NCw3IEBAIHB1Ymxp
YzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVj
b2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3Vz
KSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2
ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9p
ZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRm
b3JtRGF0YUNvY29hLm1tCmluZGV4IDg0NGFjNDRmM2FkZGZhOWYzOTU3ODZiOTRiZGQ1MDk0MWU3
Mjc1NGIuLjg1NDIxZTNkZTcwOWNlMTU5YzQ5NGI0MGZiOGQxYWQyMzU5M2MzYmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURh
dGFDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250UGxhdGZvcm1EYXRhQ29jb2EubW0KQEAgLTU3LDcgKzU3LDcgQEAgYm9vbCBGb250UGxhdGZv
cm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNv
bnN0CiAgICAgcmV0dXJuIENGRXF1YWwobV9mb250LmdldCgpLCBvdGhlci5tX2ZvbnQuZ2V0KCkp
OwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6
cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25z
dAogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKaW5k
ZXggZjc0N2Q4MGZiNjFkMzBmYzUwMjJlNjgyZDYzNTYxMzNkM2NhNjk3YS4uYzhhODA2MTIyMDUz
ZjY0OGFkZGIwMmFjMzg5Y2U3MTQzNjhkYmJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3Bw
CkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyOjpzZXRNaW5pbXVtQXVk
aW9TYW1wbGVEdXJhdGlvbihmbG9hdCkKIHsKIH0KIAotU291cmNlQnVmZmVyUGFyc2VyOjpTZWdt
ZW50OjpTZWdtZW50KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorU291cmNlQnVmZmVyUGFy
c2VyOjpTZWdtZW50OjpTZWdtZW50KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKICAgICA6IG1fc2VnbWVudChXVEZNb3ZlKGJ1ZmZlcikpCiB7CiB9CkBAIC0xMDEsNyArMTAx
LDcgQEAgc2l6ZV90IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAg
ICAgICAgICAgICByZXR1cm4gY2xhbXBUbzxzaXplX3Q+KE1UUGx1Z2luQnl0ZVNvdXJjZUdldExl
bmd0aChieXRlU291cmNlLmdldCgpKSk7CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAgICAgW10o
Y29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAgICAgICAgW10oY29uc3QgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBidWZmZXItPnNpemUoKTsKICAgICAgICAgfQpAQCAtMTI1LDcgKzEyNSw3IEBAIGF1dG8g
U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpyZWFkKHNpemVfdCBwb3NpdGlvbiwgc2l6ZV90
IHNpemVUb1JlYWQsIHVpbnQ4CiAgICAgICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxSZWFkRXJy
b3I+IHsgUmVhZEVycm9yOjpGYXRhbEVycm9yIH07CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAg
ICAgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlYWRSZXN1bHQKKyAg
ICAgICAgWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBS
ZWFkUmVzdWx0CiAgICAgICAgIHsKICAgICAgICAgICAgIGJ1ZmZlci0+Y29weVRvKGRlc3RpbmF0
aW9uLCBwb3NpdGlvbiwgc2l6ZVRvUmVhZCk7CiAgICAgICAgICAgICByZXR1cm4gc2l6ZVRvUmVh
ZDsKQEAgLTEzMyw3ICsxMzMsNyBAQCBhdXRvIFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6
cmVhZChzaXplX3QgcG9zaXRpb24sIHNpemVfdCBzaXplVG9SZWFkLCB1aW50OAogICAgICk7CiB9
CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNo
YXJlZEJ1ZmZlcigpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gU291cmNlQnVmZmVyUGFy
c2VyOjpTZWdtZW50Ojp0YWtlU2hhcmVkQnVmZmVyKCkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0
Y2hPbihtX3NlZ21lbnQsCiAjaWYgSEFWRShNVF9QTFVHSU5fRk9STUFUX1JFQURFUikKQEAgLTE0
MiwyOCArMTQyLDI4IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2Vn
bWVudDo6dGFrZVNoYXJlZEJ1ZmZlcigpCiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVj
dG9yKHNpemUoKSk7CiAgICAgICAgICAgICBhdXRvIHJlYWRSZXN1bHQgPSByZWFkKDAsIHZlY3Rv
ci5zaXplKCksIHZlY3Rvci5kYXRhKCkpOwogICAgICAgICAgICAgaWYgKCFyZWFkUmVzdWx0Lmhh
c192YWx1ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgICAgICAgICAgICAgIHJldHVybiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKICAgICAgICAgICAgIHZlY3Rvci5zaHJpbmsocmVhZFJlc3VsdC52YWx1ZSgpKTsKLSAgICAg
ICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpOworICAg
ICAgICAgICAgcmV0dXJuIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZl
Y3RvcikpOwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAgIFsmXShSZWY8U2hhcmVkQnVmZmVy
PiYgYnVmZmVyKQorICAgICAgICBbJl0oUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKGJ1ZmZlciwg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5n
ZShidWZmZXIsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKTsKICAgICAgICAgfQog
ICAgICk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2Vn
bWVudDo6Z2V0U2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OmdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9zZWdtZW50LAogI2lmIEhBVkUoTVRfUExV
R0lOX0ZPUk1BVF9SRUFERVIpCi0gICAgICAgIFsmXShjb25zdCBSZXRhaW5QdHI8TVRQbHVnaW5C
eXRlU291cmNlUmVmPiYpIC0+IFJlZlB0cjxTaGFyZWRCdWZmZXI+CisgICAgICAgIFsmXShjb25z
dCBSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiYpIC0+IFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPgogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgfSwKICNlbmRpZgotICAgICAgICBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikgLT4gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4KKyAgICAgICAgWyZdKGNvbnN0IFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4KICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5wdHIoKTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAppbmRleCA1MjBiNTIwN2ZjMjcxZDc5ODE1MzNmYjE0
ZDIzMTU1OTRhODg4MzY1Li43Mjk3YTc5MTRhNzlhZGY2NDJkYzZiMTZiMzZlNjBmOWNkMDI5ZjBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIENvbnRlbnRUeXBlOwogY2xhc3MgTWVkaWFTYW1wbGU7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBTb3VyY2VCdWZmZXJQYXJzZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8U291cmNlQnVmZmVyUGFyc2VyPiB7CiBwdWJsaWM6CkBAIC02OSwxMSArNjksMTEgQEAgcHVi
bGljOgogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAgIFNlZ21lbnQo
UmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJik7CiAjZW5kaWYKLSAgICAgICAgU2Vn
bWVudChSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICAgICAgU2VnbWVudChSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgICAgIFNlZ21lbnQoU2VnbWVudCYmKSA9IGRlZmF1bHQ7
Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICAgICAg
Ly8gV2lsbCByZXR1cm4gbnVsbHB0ciBpZiBTZWdtZW50J3MgYmFja2VuZCBpc24ndCBhIFNoYXJl
ZEJ1ZmZlci4KLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0U2hhcmVkQnVmZmVyKCkg
Y29uc3Q7CisgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlU2hhcmVkQnVm
ZmVyKCk7CisgICAgICAgIC8vIFdpbGwgcmV0dXJuIG51bGxwdHIgaWYgU2VnbWVudCdzIGJhY2tl
bmQgaXNuJ3QgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgorICAgICAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gZ2V0U2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICAgICAgc2l6
ZV90IHNpemUoKSBjb25zdDsKIApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAjaWYgSEFWRShN
VF9QTFVHSU5fRk9STUFUX1JFQURFUikKICAgICAgICAgICAgIFJldGFpblB0cjxNVFBsdWdpbkJ5
dGVTb3VyY2VSZWY+LAogI2VuZGlmCi0gICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPgorICAg
ICAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+CiAgICAgICAgID4gbV9zZWdtZW50
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggNjFkYmQ2
MmM5ZTNlOWYzMTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMS4uOWJjMTg5NDE5ODYzMGJhZDhkN2Ni
ZDBiM2E1YjI4ZTQ2ZTllZmUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAK
QEAgLTM4OCw3ICszODgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgYWR2YW5jZVRvTmV4
dFNlZ21lbnQoKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IGN1cnJlbnRTZWdt
ZW50LmdldFNoYXJlZEJ1ZmZlcigpOworICAgICAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IGN1cnJlbnRTZWdtZW50LmdldFNoYXJlZEJ1ZmZlcigp
OwogICAgICAgICAgICAgQ01CbG9ja0J1ZmZlclJlZiByYXdCbG9ja0J1ZmZlciA9IG51bGxwdHI7
CiAgICAgICAgICAgICB1aW50NjRfdCBsYXN0UmVhZCA9IDA7CiAgICAgICAgICAgICBzaXplX3Qg
ZGVzdGluYXRpb25PZmZzZXQgPSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKQEAgLTQwOSw3ICs0
MDksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25PZmZzZXQgPSAwOwog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoc2hhcmVkQnVmZmVy
LT5oYXNPbmVTZWdtZW50KCksICJDYW4gb25seSBkZWFsIHdpdGggc2hhcmVkQnVmZmVyIGNvbnRh
aW5pbmcgYSBzaW5nbGUgRGF0YVNlZ21lbnQiKTsKLSAgICAgICAgICAgICAgICAvLyBBIFNoYXJl
ZEJ1ZmZlciBkb2Vzbid0IGhhdmUgdGhyZWFkLXNhZmUgcmVmY291bnRpbmcsIGFzIHN1Y2ggd2Ug
bXVzdCBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBEYXRhU2VnbWVudCBpbnN0ZWFkLgorICAgICAg
ICAgICAgICAgIC8vIEEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBkb2Vzbid0IGhhdmUgdGhyZWFk
LXNhZmUgcmVmY291bnRpbmcsIGFzIHN1Y2ggd2UgbXVzdCBrZWVwIGEgcmVmZXJlbmNlIHRvIHRo
ZSBEYXRhU2VnbWVudCBpbnN0ZWFkLgogICAgICAgICAgICAgICAgIC8vIFRPRE86IGNvdWxkIHdl
IG9ubHkgY3JlYXRlIGEgbmV3IENNQmxvY2tCdWZmZXIgaWYgdGhlIGJhY2tlbmQgbWVtb3J5IGNo
YW5nZWQgc2luY2UgdGhlIHByZXZpb3VzIG9uZT8KICAgICAgICAgICAgICAgICBhdXRvIGZpcnN0
U2VnbWVudCA9IHNoYXJlZEJ1ZmZlci0+YmVnaW4oKS0+c2VnbWVudDsKICAgICAgICAgICAgICAg
ICBzaXplX3QgY2FuUmVhZCA9IHN0ZDo6bWluPHNpemVfdD4obnVtVG9SZWFkLCBmaXJzdFNlZ21l
bnQtPnNpemUoKSAtIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3Jl
VGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250
UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCmluZGV4IGNjNTk0ZjM4NGU1NjM1ZGVkYThmNDIzZjY4
NGRhNWI1NTQ5NzA2NzEuLjU5ZDIxNjY3OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0Zv
bnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcApAQCAtMTUxLDEw
ICsxNTEsMTAgQEAgUmV0YWluUHRyPENGVHlwZVJlZj4gRm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0
Rm9yRXF1YWxpdHlDaGVjaygpIGNvbnN0CiAgICAgcmV0dXJuIG9iamVjdEZvckVxdWFsaXR5Q2hl
Y2soY3RGb250KCkpOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBs
YXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxT
aGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFi
bGUpIGNvbnN0CiB7CiAgICAgaWYgKFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENG
KENURm9udENvcHlUYWJsZShjdEZvbnQoKSwgdGFibGUsIGtDVEZvbnRUYWJsZU9wdGlvbk5vT3B0
aW9ucykpKQotICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQo
KSk7CiAKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggZTgwNTA5ZWNjYTA1
ZDJjYzhlZDEwNjYwNzA0MWY1Y2NjYzNlMzc5NC4uNjM4ZTY4Mzk3YTJiNjY5NmIyZjFlZGUyNGVh
OGZkYjkwNjI2Y2VkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZl
ci5jcHAKQEAgLTcyOSw3ICs3MjksNyBAQCBEaWRDaGFuZ2VJdGVtQnVmZmVyIEl0ZW1CdWZmZXI6
OnN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVzKQogdm9pZCBJ
dGVtQnVmZmVyOjphcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJdGVtJiB0ZW1wb3JhcnlJdGVtKQog
ewogICAgIGF1dG8gcmVxdWlyZWRTaXplRm9ySXRlbSA9IG1fd3JpdGluZ0NsaWVudC0+cmVxdWly
ZWRTaXplRm9ySXRlbSh0ZW1wb3JhcnlJdGVtKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBv
dXRPZkxpbmVJdGVtOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdXRPZkxp
bmVJdGVtOwogICAgIGlmICghcmVxdWlyZWRTaXplRm9ySXRlbSkgewogICAgICAgICBvdXRPZkxp
bmVJdGVtID0gbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtT3V0T2ZMaW5lKHRlbXBvcmFyeUl0
ZW0pOwogICAgICAgICBpZiAoIW91dE9mTGluZUl0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmgKaW5kZXggYzg3MzE5ODJlZjgzOTMxYmJhZTMxYjc4NjUwYWMwZGEy
MGEwNWZjNS4uYjMxYmM1ZmQ0ZTkyMTRiMTVhMzc2MWZiZTk4ZDYwY2ViNDdhOThmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaApAQCAtMTAyLDcgKzEwMiw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxh
eUxpc3RJdGVtJikgY29uc3QKKyAgICB2aXJ0dWFsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xNjgsNyArMTY4LDcgQEAg
cHVibGljOgogICAgIC8vIHdpdGggcGFkZGluZyBiZXR3ZWVuIGVhY2ggaXRlbSB0byBlbnN1cmUg
dGhhdCBhbGwgaXRlbXMgYXJlIGFsaWduZWQgdG8gOCBieXRlcy4KICAgICAvLwogICAgIC8vIElm
IGEgd3JpdGluZyBjbGllbnQgaXMgcHJlc2VudCBhbmQgcmVxdWlyZXMgY3VzdG9tIGVuY29kaW5n
IGZvciB0aGUgZ2l2ZW4gaXRlbSB0eXBlIFQsIHRoZQotICAgIC8vIGl0ZW0gYnVmZmVyIHdpbGwg
YXNrIHRoZSBjbGllbnQgZm9yIGFuIG9wYXF1ZSBTaGFyZWRCdWZmZXIgY29udGFpbmluZyBlbmNv
ZGVkIGRhdGEgZm9yIHRoZQorICAgIC8vIGl0ZW0gYnVmZmVyIHdpbGwgYXNrIHRoZSBjbGllbnQg
Zm9yIGFuIG9wYXF1ZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgZW5jb2RlZCBk
YXRhIGZvciB0aGUKICAgICAvLyBpdGVtLiBUaGlzIGVuY29kZWQgZGF0YSBpcyB0aGVuIGFwcGVu
ZGVkIHRvIHRoZSBpdGVtIGJ1ZmZlciwgd2l0aCBwYWRkaW5nIHRvIGVuc3VyZSB0aGF0CiAgICAg
Ly8gdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhpcyBkYXRhIGFyZSBhbGlnbmVkIHRvIDggYnl0ZXMs
IGlmIG5lY2Vzc2FyeS4gV2hlbiBjb25zdW1pbmcgZW5jb2RlZAogICAgIC8vIGl0ZW0gZGF0YSwg
YSBjb3JyZXNwb25kaW5nIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IHdpbGwgYmUgcmVxdWlyZWQg
dG8gY29udmVydCB0aGlzIGVuY29kZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IGNjZGFkYjBkYTExYjU5ODVhMzQzODYxOWRiMGRm
MjMzMDFhNzI1YTMuLjJiNDQzZmJiZWQyYzFmZGU0OGJjZGU5Y2JlNDA5NTM0OTdmZGU5MTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApA
QCAtMzgsMTIgKzM4LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHZvaWQgcmVs
ZWFzZUN1c3RvbUZvbnREYXRhKHZvaWQqIGRhdGEpCiB7Ci0gICAgc3RhdGljX2Nhc3Q8U2hhcmVk
QnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwogfQogCiBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tl
eV90IGZyZWVUeXBlRmFjZUtleTsKIAotRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShGVF9GYWNlIGZyZWVUeXBlRmFjZSwgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CitGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhKEZUX0ZhY2Ug
ZnJlZVR5cGVGYWNlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgOiBtX2Zv
bnRGYWNlKGFkb3B0UmVmKGNhaXJvX2Z0X2ZvbnRfZmFjZV9jcmVhdGVfZm9yX2Z0X2ZhY2UoZnJl
ZVR5cGVGYWNlLCBGVF9MT0FEX0RFRkFVTFQpKSkKIHsKICAgICBidWZmZXIucmVmKCk7IC8vIFRo
aXMgaXMgYmFsYW5jZWQgYnkgdGhlIGJ1ZmZlci0+ZGVyZWYoKSBpbiByZWxlYXNlQ3VzdG9tRm9u
dERhdGEuCkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZUZyZWVUeXBl
TGlicmFyeShGVF9MaWJyYXJ5JiBsaWJyYXJ5KQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCitz
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJikKIHsKICAgICBz
dGF0aWMgRlRfTGlicmFyeSBsaWJyYXJ5OwogICAgIGlmICghbGlicmFyeSAmJiAhaW5pdGlhbGl6
ZUZyZWVUeXBlTGlicmFyeShsaWJyYXJ5KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURh
dGFGcmVlVHlwZS5jcHAKaW5kZXggZmVkODU0MGY0YWViYzg0YzY5YjI5MDgwNjk3YzEyNDYwMWQ1
YjYyNi4uNjg5Y2I2NzllNjMyZTJmNWEyYTJmZTA2NDU4MTFkODg2NmE5MGM0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
cmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAg
Ym9vbCBGb250UGxhdGZvcm1EYXRhOjpoYXNDb21wYXRpYmxlQ2hhcm1hcCgpIGNvbnN0CiAgICAg
ICAgICYmIEZUX1NlbGVjdF9DaGFybWFwKGZyZWVUeXBlRmFjZSwgZnRfZW5jb2RpbmdfYXBwbGVf
cm9tYW4pKTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9y
bURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8U2hhcmVk
QnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBj
b25zdAogewogICAgIENhaXJvRnRGYWNlTG9ja2VyIGNhaXJvRnRGYWNlTG9ja2VyKG1fc2NhbGVk
Rm9udC5nZXQoKSk7CiAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2UgPSBjYWlyb0Z0RmFjZUxvY2tl
ci5mdEZhY2UoKTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgYwog
ICAgIGlmIChlcnJvciB8fCB0YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJsZVNpemUpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShkYXRhKSk7CiB9CiAKICNpZiBVU0UoSEFSRkJVWlopICYmICFFTkFCTEUoT1BFTlRZUEVf
TUFUSCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggMTQ3NDgyOGZkZTY2OTI0ZDQy
YmFhYzMzMzRmZjhkNWMzYjRhZDc2NC4uMDE2MDVmYzkxNDk3ZTQ2MmJhMDc3MzA0NzhlODRhODU1
MWU2NzIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTQyMiw5ICs0MjIsOSBA
QCBWZWN0b3I8dWludDhfdD4gR3N0TWFwcGVkQnVmZmVyOjpjcmVhdGVWZWN0b3IoKSBjb25zdAog
ICAgIHJldHVybiB7IGRhdGEoKSwgc2l6ZSgpIH07CiB9CiAKLVJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxT
aGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIoKQog
ewotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CiAKIGJvb2wgaXNHU3RyZWFt
ZXJQbHVnaW5BdmFpbGFibGUoY29uc3QgY2hhciogbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24u
aAppbmRleCBkMDE0Y2M2YTVkYzdiMTdlMzk5NjAwNmJmNmVhNjhhOGJjOTk0YzQyLi5iYmI4YzEz
OTZmMDAzZDY0MjY4ODk3OWE2ODRjNjYxYjFjYjg3MWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1v
bi5oCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFNp
emU7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwog
CiBpbmxpbmUgYm9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24oZ3VpbnQgbWFqb3IsIGd1aW50IG1p
bm9yLCBndWludCBtaWNybykKIHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHVubWFwRWFybHkoKTsKICAgICB9CiAKLSAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
Y3JlYXRlU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVk
QnVmZmVyKCk7CiAKIHByaXZhdGU6CiAgICAgR3N0TWFwcGVkT3duZWRCdWZmZXIoR1JlZlB0cjxH
c3RCdWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNw
cAppbmRleCAyOWIzYTUwMWQ4ZTlhOTYyYTBjM2QwNGZiMjYxMjZlYTQzYTM1NTI2Li5kZmJjNTgw
ZmI4ZTliMzA5MzZjY2EwOGJiODhiNDljMmJiNjUzYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtODEsMTIgKzgxLDEyIEBAIEltYWdlRGVjb2RlckdTdHJl
YW1lclNhbXBsZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRlcikKICAgICByZXR1cm4gKEltYWdlRGVj
b2RlckdTdHJlYW1lclNhbXBsZSopaXRlci0+c2Vjb25kLmdldCgpOwogfQogCi1SZWZQdHI8SW1h
Z2VEZWNvZGVyR1N0cmVhbWVyPiBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZShTaGFyZWRC
dWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKK1JlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6
Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBn
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJ
bWFnZURlY29kZXJHU3RyZWFtZXIoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikpOwogfQogCi1JbWFnZURlY29kZXJHU3RyZWFtZXI6OkltYWdl
RGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2Rl
ckdTdHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKICAgICA6IG1fbWltZVR5cGUobWltZVR5cGUpCiB7CiAgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwpAQCAtMTk5LDcgKzE5OSw3IEBAIFBsYXRmb3JtSW1h
Z2VQdHIgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCkKK3ZvaWQgSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJv
b2wpCiB7CiAgICAgcHVzaEVuY29kZWREYXRhKGRhdGEpOwogfQpAQCAtNDI2LDcgKzQyNiw3IEBA
IEVuY29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpl
bmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0CiAgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpV
bmtub3duOwogfQogCi12b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6
OnB1c2hFbmNvZGVkRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CiAg
ICAgbV9lb3MgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAppbmRl
eCA2NmYzMzcyODQ2YTRkZjg3NGY0MjBkYjY1NGU2ODljOWU0M2IwYzUyLi5kM2VmNmE0NWNkN2Ri
ZGZjMzEyMGVhMjNmOGRlYjNjNTk5NzFhZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5oCkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIEltYWdlRGVjb2RlckdTdHJlYW1lciBm
aW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2RlckdTdHJlYW1lcik7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IGNyZWF0ZShTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pOwotICAgIEltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZm
ZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBj
cmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwg
fkltYWdlRGVjb2RlckdTdHJlYW1lcigpID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBib29sIHN1
cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID09IE1lZGlhVHlw
ZTo6VmlkZW87IH0KQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtSW1hZ2VQ
dHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vi
c2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5n
T3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNl
dEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNldERh
dGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQg
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZp
bmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2VvczsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAK
QEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICB2b2lkIGhhbmRsZVNh
bXBsZShHUmVmUHRyPEdzdFNhbXBsZT4mJik7Ci0gICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2Ft
cGxlKiBzYW1wbGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggNWQ4NmZiMWFmNDg3YzAyODllMDAxMjU1OTY1
YzMxZGNkYTk3MzQyNi4uOTMwMTkwOTk0NWI0YTIzZDY2NzgyZjM1MGI1NmU0NDc5ZjgwMjZmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dl
YktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTcxLDcg
KzcxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCB2
aXJ0dWFsIG1ldGhvZHMuCiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250
cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJv
ciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJp
ZGU7CkBAIC0xMDkzLDcgKzEwOTMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xp
ZW50OjpyZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbgogICAgIGNv
bXBsZXRpb25IYW5kbGVyKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Olllcyk7CiB9CiAKLXZv
aWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVz
b3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1f
c3JjLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmgKaW5kZXggNjkyYTk5
NmQxOWMyNGVmZDlhNDg1NTIzNzNhNTY3OWI1MmUxZWYxYy4uMzQ5YmZkY2FhZDZjN2Q3ZjhkNWFk
YTBhMTcyMTlmZDllNzA2MjZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmgK
QEAgLTYyLDExICs2MiwxMSBAQCBwdWJsaWM6CiAgICAgQ0RNUHJveHlDbGVhcktleSgpID0gZGVm
YXVsdDsKICAgICB2aXJ0dWFsIH5DRE1Qcm94eUNsZWFyS2V5KCk7CiAKLSAgICAvLyBGSVhNRTog
VGhlcmUncyBhIGxhY2sgb2YgY29uc2lzdGVuY3kgYmV0d2VlbiBTaGFyZWRCdWZmZXJzLAorICAg
IC8vIEZJWE1FOiBUaGVyZSdzIGEgbGFjayBvZiBjb25zaXN0ZW5jeSBiZXR3ZWVuIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXJzLAogICAgIC8vIFZlY3RvcjxjaGFyPidzIGFuZCB7dWludDhfdCosc2l6
ZV90fSBpZGlvbXMgZm9yIHJlcHJlc2VudGluZyBhIGNodW5rIG9mCi0gICAgLy8gYnl0ZXMuIEZp
eCB0aGF0IHNvbWVob3cuIE5vdGUgU2hhcmVkQnVmZmVycyBhcmUgZGFuZ2Vyb3VzIHNpbmNlCisg
ICAgLy8gYnl0ZXMuIEZpeCB0aGF0IHNvbWVob3cuIE5vdGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cnMgYXJlIGRhbmdlcm91cyBzaW5jZQogICAgIC8vIHRoZXkncmUgbm90IHRocmVhZC1zYWZlIGFu
ZCB0aGlzIGNsYXNzIG11c3QgbWFpbnRhaW4KLSAgICAvLyB0aHJlYWQtc2FmZXR5LCBidXQgbWF5
YmUgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCBjb3VsZCBiZQorICAgIC8vIHRocmVhZC1zYWZl
dHksIGJ1dCBtYXliZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCBjb3VsZCBi
ZQogICAgIC8vIG1hZGUgdG8gd29yaywgaG93ZXZlciB0aGF0IGhhcyB6ZXJvIGhlbHBlcnMgZm9y
IGRyb3BwaW5nIGludG8KICAgICAvLyBpdGVyYXRvci1hd2FyZSAvIGNvbXBhcmF0b3ItYXdhcmUg
Y29udGFpbmVycy4uLgogICAgIHN0cnVjdCBjZW5jRGVjcnlwdENvbnRleHQgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVu
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
Q0RNVGh1bmRlci5jcHAKaW5kZXggMmVmYTA0MzYwZTg4NDgzODA2MTQ0YzNkNzFkZTYzYWQ3YjQy
YjU2MS4uYzM4OTE2ZTdkMDU5ZTg4OWI1Yzg4ZWViMDllMGY0Y2ZjMDNjMWRiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVu
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0NETVRodW5kZXIuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgYm9vbCBDRE1Qcml2YXRlVGh1
bmRlcjo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAorYm9vbCBD
RE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAog
ewogICAgIC8vIFZhbGlkYXRlIHRoZSBpbml0RGF0YSBidWZmZXIgYXMgYW4gSlNPTiBvYmplY3Qg
aW4ga2V5aWRzIGNhc2UuCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGlu
aXREYXRhVHlwZSwgImtleWlkcyIpICYmIENETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KGlu
aXREYXRhKSkKQEAgLTIzNyw3ICsyMzcsNyBAQCBib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgUwogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZVRodW5k
ZXI6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QK
K1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlVGh1bmRlcjo6c2FuaXRp
emVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QK
IHsKICAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOwogfQpAQCAtMjYwLDcgKzI2MCw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3Qg
Q0RNS2V5U3lzdGVtQ29uZmlndXJhCiAgICAgY2FsbGJhY2soU3VjY2VlZGVkKTsKIH0KIAotdm9p
ZCBDRE1JbnN0YW5jZVRodW5kZXI6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgY2VydGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RN
SW5zdGFuY2VUaHVuZGVyOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewog
ICAgIE9wZW5DRE1FcnJvciBlcnJvciA9IG9wZW5jZG1fc3lzdGVtX3NldF9zZXJ2ZXJfY2VydGlm
aWNhdGUobV90aHVuZGVyU3lzdGVtLmdldCgpLCBjb25zdF9jYXN0PHVpbnQ4X3QqPihjZXJ0aWZp
Y2F0ZS0+ZGF0YSgpKSwKICAgICAgICAgY2VydGlmaWNhdGUtPnNpemUoKSk7CkBAIC0zMjYsNyAr
MzI2LDcgQEAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gQ0RNSW5zdGFuY2VUaHVuZGVyOjpj
cmVhdGVTZXNzaW9uKCkKIGNsYXNzIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSB7CiAKIHB1YmxpYzoK
LSAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikKKyAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UoY29uc3QgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgewogICAgICAgICBpZiAoIWJ1ZmZlciB8fCAhYnVm
ZmVyLT5zaXplKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNTQsOCArMzU0LDggQEAgcHVi
bGljOgogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9pc1ZhbGlkOyB9CiAg
ICAgYm9vbCBoYXNQYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9w
YXlsb2FkKTsgfQotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3Qm
IHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxvYWQudmFsdWUoKTsgfQotICAgIFJl
ZjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgJiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4g
bV9wYXlsb2FkLnZhbHVlKCk7IH0KKyAgICBjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mIHBheWxvYWQoKSBjb25zdCYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9h
ZC52YWx1ZSgpOyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkg
JiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KICAgICBi
b29sIGhhc1R5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUuaGFzX3ZhbHVlKCk7IH0KICAgICBX
ZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlIHR5cGUoKSBjb25zdCB7IEFTU0VSVChtX3R5cGUp
OyByZXR1cm4gbV90eXBlLnZhbHVlKCk7IH0KICAgICBXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VU
eXBlIHR5cGVPcihXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlIGFsdGVybmF0ZSkgY29uc3Qg
eyByZXR1cm4gbV90eXBlID8gbV90eXBlLnZhbHVlKCkgOiBhbHRlcm5hdGU7IH0KQEAgLTM2NCwx
MSArMzY0LDExIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIG1faXNWYWxpZCB7IGZh
bHNlIH07Ci0gICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gbV9wYXlsb2FkOwor
ICAgIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX3BheWxvYWQ7
CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlPiBtX3R5cGU7
CiB9OwogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmNoYWxsZW5nZUdlbmVyYXRl
ZENhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25UaHVuZGVyOjpjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdl
IHBhcnNlZFJlc3BvbnNlTWVzc2FnZShidWZmZXIpOwogICAgIGlmICghcGFyc2VkUmVzcG9uc2VN
ZXNzYWdlKSB7CkBAIC00NzUsNyArNDc1LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVu
ZGVyOjprZXlzVXBkYXRlRG9uZUNhbGxiYWNrKCkKICAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJh
Y2tzLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JD
YWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit2b2lkIENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgbWVzc2FnZSkKIHsKICAgICBHU1RfRVJST1IoIkNETSBlcnJvciIpOwogICAgIEdTVF9N
RU1EVU1QKCJlcnJvciBkdW1wIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwpA
QCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JD
YWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiAgICAgbV9zZXNzaW9uQ2hh
bmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGFTaGFyZWRCdWZm
ZXIsCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhU2hhcmVkQnVmZmVyLAogICAgIExpY2Vu
c2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBA
IC01MDYsNyArNTA2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0
TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXQKICAgICAgICAgbV9pbml0
RGF0YS5wYXlsb2FkKCktPmRhdGEoKSwgbV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSwgbnVs
bHB0ciwgMCwgJm1fdGh1bmRlclNlc3Npb25DYWxsYmFja3MsIHRoaXMsICZzZXNzaW9uKTsKICAg
ICBpZiAoIXNlc3Npb24pIHsKICAgICAgICAgR1NUX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIHNl
c3Npb24iKTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXRE
YXRhLnBheWxvYWQoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGlu
aXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CiAgICAgICAgIGNhbGxiYWNrKGluaXREYXRh
LnJlbGVhc2VOb25OdWxsKCksIHsgfSwgZmFsc2UsIEZhaWxlZCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC01MTUsNyArNTE1LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVy
OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXQKIAogICAg
IGF1dG8gZ2VuZXJhdGVDaGFsbGVuZ2UgPSBbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsK
KyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0
RGF0YS5wYXlsb2FkKCk7CiAgICAgICAgIGlmIChtX3Nlc3Npb25JRC5pc0VtcHR5KCkpIHsKICAg
ICAgICAgICAgIEdTVF9FUlJPUigiY291bGQgbm90IGNyZWF0ZSBzZXNzaW9uIGlkIik7CiAgICAg
ICAgICAgICBjYWxsYmFjayhpbml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCB7IH0sIGZhbHNlLCBG
YWlsZWQpOwpAQCAtNTQ1LDEzICs1NDUsMTMgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVu
ZGVyOjpzZXNzaW9uRmFpbHVyZSgpCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVh
cigpOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25J
RCwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBM
aWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlRfVU5VU0VEKHNl
c3Npb25JRCwgc2Vzc2lvbklEID09IG1fc2Vzc2lvbklEKTsKIAogICAgIEdTVF9UUkFDRSgiVXBk
YXRpbmcgc2Vzc2lvbiAlcyIsIHNlc3Npb25JRC51dGY4KCkuZGF0YSgpKTsKIAotICAgIG1fc2Vz
c2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNz
YWdlKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhp
cywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZU1lc3NhZ2UpIG11dGFibGUgewogICAgICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoc3VjY2VzcykgewogICAgICAg
ICAgICAgaWYgKCFyZXNwb25zZU1lc3NhZ2UpCkBAIC01NjIsNyArNTYyLDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklELCBMaWNlbnNlVHkKICAgICAgICAgICAgICAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFy
c2VkUmVzcG9uc2VNZXNzYWdlKHJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKHBhcnNlZFJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJl
c3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmPFNo
YXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxv
YWQoKSk7CisgICAgICAgICAgICAgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBt
ZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAg
ICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVzc2FnZSBvZiBzaXplICV6dSIsIG1lc3Nh
Z2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1QKCJtZXNzYWdlIiwg
bWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBj
YWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsCkBAIC01ODYsNyArNTg2
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbihMaWNlbnNl
VHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQKIHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Np
b25JRCwgc2Vzc2lvbklEID09IG1fc2Vzc2lvbklEKTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRD
YWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29s
IHN1Y2Nlc3MsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxl
IHsKKyAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiByZXNwb25zZU1lc3NhZ2UpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoc3VjY2VzcykgewogICAgICAgICAgICAgaWYgKCFy
ZXNwb25zZU1lc3NhZ2UpCkBAIC01OTcsNyArNTk3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25UaHVuZGVyOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9u
SUQKICAgICAgICAgICAgICAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VN
ZXNzYWdlKHJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNlZFJl
c3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2Fn
ZS5oYXNQYXlsb2FkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
bWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RG
TW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAgICAg
ICAgR1NUX0RFQlVHKCJnb3QgbWVzc2FnZSBvZiBzaXplICV6dSIsIG1lc3NhZ2UtPnNpemUoKSk7
CiAgICAgICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1QKCJtZXNzYWdlIiwgbWVzc2FnZS0+ZGF0
YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjptYWtlX3BhaXIocGFyc2VkUmVzcG9uc2VNZXNz
YWdlLnR5cGVPcihNZWRpYUtleU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVzdCksCkBAIC02NDAs
NyArNjQwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9u
RGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW4KIHsKICAgICBBU1NFUlRfVU5VU0VE
KHNlc3Npb25JRCwgbV9zZXNzaW9uSUQgPT0gc2Vzc2lvbklEKTsKIAotICAgIG1fc2Vzc2lvbkNo
YW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShib29sIHN1Y2Nlc3MsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBtdXRhYmxlIHsK
KyAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgICAgICBpZiAoc3VjY2VzcykgewogICAgICAgICAgICAgaWYgKCFidWZmZXIpCkBAIC02
NDksNyArNjQ5LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZW1vdmVTZXNz
aW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW4KICAgICAgICAgICAgICAgICBQ
YXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKGJ1ZmZlcik7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAgICAg
ICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9u
c2VNZXNzYWdlLnBheWxvYWQoKSk7CisgICAgICAgICAgICAgICAgICAgIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5
bG9hZCgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJzZXNzaW9uICVzIHJlbW92
ZWQsIG1lc3NhZ2UgbGVuZ3RoICV6dSIsIG1fc2Vzc2lvbklELnV0ZjgoKS5kYXRhKCksIG1lc3Nh
Z2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG1fa2V5U3RvcmUuYWxs
S2V5c0FzKE1lZGlhS2V5U3RhdHVzOjpSZWxlYXNlZCksIFdURk1vdmUobWVzc2FnZSksIFN1Y2Nl
c3NWYWx1ZTo6U3VjY2VlZGVkKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVu
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NE
TVRodW5kZXIuaAppbmRleCBjZGQ4ZGEyMTEyM2MxNzkxYWUyZmI2NDM5ZmYyZDZmYTBkMmViMjFj
Li4xMDIwZTE1MzIyNzFiNTM1MWUxMDZkZGU4ZjIxZWE1NDA1YTljMjM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NE
TVRodW5kZXIuaApAQCAtOTMsOCArOTMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkQW5kSW5p
dGlhbGl6ZSgpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBj
b25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAg
ICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIGNvbnN0IGZpbmFsOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVz
cG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0
aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwog
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcm
KSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gQ0RNSW5zdGFuY2UKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25U
eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpUaHVuZGVyOyB9
CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0
ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNl
cnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsK
KyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9rZXlTeXN0ZW07IH0KICAgICBSZWZQdHI8Q0RNSW5zdGFu
Y2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CkBAIC0xMjYsOCArMTI2LDggQEAgY2xh
c3MgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlciBmaW5hbCA6IHB1YmxpYyBDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eSB7CiBwdWJsaWM6CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcihDRE1J
bnN0YW5jZVRodW5kZXImKTsKIAotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUs
IGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0
RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBs
b2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9h
ZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBT
dHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNl
c3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNh
bGxiYWNrJiYpIGZpbmFsOwpAQCAtMTQxLDE0ICsxNDEsMTQgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBDRE1JbnN0YW5jZVRodW5kZXIqIGNkbUluc3RhbmNlVGh1bmRlcigpIGNvbnN0OwogCi0g
ICAgdXNpbmcgTm90aWZpY2F0aW9uID0gdm9pZCAoQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6
KikoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdXNpbmcgTm90aWZpY2F0
aW9uID0gdm9pZCAoQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6KikoUmVmUHRyPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHVzaW5nIENoYWxsZW5nZUdlbmVyYXRl
ZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsKLSAgICB1c2luZyBTZXNzaW9uQ2hhbmdlZENh
bGxiYWNrID0gRnVuY3Rpb248dm9pZChib29sLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT47Cisg
ICAgdXNpbmcgU2Vzc2lvbkNoYW5nZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoYm9vbCwgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPjsKIAotICAgIHZvaWQgY2hhbGxlbmdlR2Vu
ZXJhdGVkQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBjaGFsbGVu
Z2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAg
ICAgdm9pZCBrZXlVcGRhdGVkQ2FsbGJhY2soS2V5SURUeXBlJiYpOwogICAgIHZvaWQga2V5c1Vw
ZGF0ZURvbmVDYWxsYmFjaygpOwotICAgIHZvaWQgZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmKTsKKyAgICB2b2lkIGVycm9yQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpOwogICAgIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzIHN0YXR1cyhj
b25zdCBLZXlJRFR5cGUmKSBjb25zdDsKICAgICB2b2lkIHNlc3Npb25GYWlsdXJlKCk7CiAKQEAg
LTE1OSw3ICsxNTksNyBAQCBwcml2YXRlOgogICAgIEluaXREYXRhIG1faW5pdERhdGE7CiAgICAg
T3BlbkNETVNlc3Npb25DYWxsYmFja3MgbV90aHVuZGVyU2Vzc2lvbkNhbGxiYWNrcyB7IH07CiAg
ICAgQm94UHRyPE9wZW5DRE1TZXNzaW9uPiBtX3Nlc3Npb247Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9tZXNzYWdlOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX21l
c3NhZ2U7CiAgICAgYm9vbCBtX25lZWRzSW5kaXZpZHVhbGl6YXRpb24geyBmYWxzZSB9OwogICAg
IFZlY3RvcjxDaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjaz4gbV9jaGFsbGVuZ2VDYWxsYmFja3M7
CiAgICAgVmVjdG9yPFNlc3Npb25DaGFuZ2VkQ2FsbGJhY2s+IG1fc2Vzc2lvbkNoYW5nZWRDYWxs
YmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKaW5k
ZXggY2FhNTBlZDVjM2MzOTk4MzIyZDRhMmMyNzYyNTZlMTgwMWYxZWJiMS4uZWE4OTBmNjdkYTIx
Mzg3ZjQwZGE2NTFhMGNhNWM3MzQ5M2U4NGY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0
cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0cnVjdCBHTWFya3VwUGFyc2VDb250ZXh0VXNlckRhdGEgewogICAgIGJvb2wgaXNQ
YXJzaW5nUHNzaCB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IHBzc2g7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcHNzaDsKIH07CiAKIHN0YXRpYyB2b2lk
IG1hcmt1cFN0YXJ0RWxlbWVudChHTWFya3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIGVs
ZW1lbnROYW1lLCBjb25zdCBnY2hhcioqLCBjb25zdCBnY2hhcioqLCBncG9pbnRlciB1c2VyRGF0
YVB0ciwgR0Vycm9yKiopCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIG1hcmt1cFRleHQo
R01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdjaGFyKiB0ZXh0LCBnc2l6ZSB0ZXh0TGVuZ3Ro
CiAgICAgaWYgKHVzZXJEYXRhLT5pc1BhcnNpbmdQc3NoKSB7CiAgICAgICAgIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBwc3NoID0gYmFzZTY0RGVjb2RlKHRleHQsIHRleHRMZW5ndGgp
OwogICAgICAgICBpZiAocHNzaC5oYXNfdmFsdWUoKSkKLSAgICAgICAgICAgIHVzZXJEYXRhLT5w
c3NoID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBzc2gpKTsKKyAg
ICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgq
cHNzaCkpOwogICAgIH0KIH0KIApAQCAtNzEsOSArNzEsOSBAQCBzdGF0aWMgdm9pZCBtYXJrdXBF
cnJvcihHTWFya3VwUGFyc2VDb250ZXh0KiwgR0Vycm9yKiwgZ3BvaW50ZXIpCiAKIHN0YXRpYyBH
TWFya3VwUGFyc2VyIG1hcmt1cFBhcnNlciB7IG1hcmt1cFN0YXJ0RWxlbWVudCwgbWFya3VwRW5k
RWxlbWVudCwgbWFya3VwVGV4dCwgbWFya3VwUGFzc3Rocm91Z2gsIG1hcmt1cEVycm9yIH07CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKK1JlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKIHsKLSAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOwog
ICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQogICAgICAgICByZXR1cm4gcGF5
bG9hZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXgg
NjZlMjk3OWUzZWNmMmVkNjk2MmFkMmFiNTBhYzQ5ZGI1ODQ1ZDA3YS4uMjdkZDRlYWUwZDJlMDFh
YjRkODRjMGFiYzQyNGViYjEwMTA0YzA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1l
ckVNRVV0aWxpdGllcy5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1f
cGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiAK
LSAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIHBheWxvYWQpCisgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAgICAgICAgOiBtX3N5c3RlbUlk
KHN5c3RlbUlkKQogICAgIHsKICAgICAgICAgaWYgKHBheWxvYWQpIHsKQEAgLTc4LDcgKzc4LDcg
QEAgcHVibGljOgogICAgICAgICBtX3BheWxvYWQuYXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkp
OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJl
dHVybiBtX3BheWxvYWQuZ2V0KCk7IH0KKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZC5nZXQoKTsgfQogICAgIGNvbnN0
IFN0cmluZyYgc3lzdGVtSWQoKSBjb25zdCB7IHJldHVybiBtX3N5c3RlbUlkOyB9CiAgICAgU3Ry
aW5nIHBheWxvYWRDb250YWluZXJUeXBlKCkgY29uc3QKICAgICB7CkBAIC04OSw3ICs4OSw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CiAKIHByaXZh
dGU6CiAgICAgU3RyaW5nIG1fc3lzdGVtSWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAK
aW5kZXggNTY0ZTFlNzU0NGE1ODNmNDE4ZTBkZWJlMGUyNWNlNmI0YmY1NDc5OS4uYmQxMTNiYjZj
MjczMWZhMTlhZGRlZmQzM2E5OWQ0NmJiNGExZjRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcApAQCAtNTIsNyArNTIsNyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJgogICAgIHJl
dHVybiBGb250UGxhdGZvcm1EYXRhKGZvbnQuZ2V0KCksIHNpemUsIGJvbGQsIGl0YWxpYywgb3Jp
ZW50YXRpb24sIHdpZHRoVmFyaWFudCwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2Rl
KCksICZjcmVhdGlvbkRhdGEpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7
CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5jcmVhdGVDRkRh
dGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggN2JjNjY3ZTQ2OWIwMDYxNTFl
YjI1Yjc5Yzg4NjlmNzZhMzJmMDA3MS4uNjkyOGE2M2U5NzFjN2MzNWU4ODQ0ZWVmNzNiZmE0NGE4
ZDhjMDMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zNiw3ICszNiw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250
RGVzY3JpcHRpb247CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZv
bnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC02MCw3ICs2MCw3
IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25E
YXRhOwogfTsKIAotV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNw
cAppbmRleCBiNDE3OTIzZTZkNzVmOTNjZmQxZTRjYzMxZjg1MDM2ZTFjNjJmNGMyLi41ZDg4Y2Q3
NzY4OThjMDVhOTAzNTg5ZTJkNGJhYzczMGFhMWRmOTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhE
YXRhLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5m
byA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGl0YWxpY3NDb3Jy
ZWN0aW9uQ291bnQ7CiAgICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29ycmVj
dGlvblsxXTsgLy8gVGhlcmUgYXJlIGl0YWxpY3NDb3JyZWN0aW9uQ291bnQgaXRhbGljIGNvcnJl
Y3Rpb24gdmFsdWVzLgogCi0gICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CisgICAgaW50
MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlw
aCBnbHlwaCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdWludDE2X3Qo
aXRhbGljc0NvcnJlY3Rpb25Db3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIs
ICZpdGFsaWNzQ29ycmVjdGlvbltjb3VudF0pKQpAQCAtOTMsNyArOTMsNyBAQCBzdHJ1Y3QgTWF0
aEdseXBoSW5mbyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGV4
dGVuZGVkU2hhcGVDb3ZlcmFnZU9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhLZXJu
SW5mb09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJ
dGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAorICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNz
Q29ycmVjdGlvbkluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewog
ICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvT2Zmc2V0
OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVjdCBHbHlwaEFz
c2VtYmx5IDogVGFibGVCYXNlIHsKICAgICAgICAgUGFydEZsYWdzRXh0ZW5kZXIgPSAweDAxCiAg
ICAgfTsKIAotICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBh
c3NlbWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4m
IGFzc2VtYmx5UGFydHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHBh
cnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnBhcnRSZWNvcmRzW2Nv
dW50XSkpCkBAIC0xNDMsNyArMTQzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6
IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgYWR2YW5jZU1lYXN1cmVtZW50
OwogICAgIH0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNbMV07IC8vIFRoZXJlIGFyZSB2YXJpYW50
Q291bnQgTWF0aEdseXBoVmFyaWFudFJlY29yZCdzLgogCi0gICAgdm9pZCBnZXRTaXplVmFyaWFu
dHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2
YXJpYW50cykgY29uc3QKKyAgICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CiAgICAgewogICAgICAg
ICB1aW50MTZfdCBjb3VudCA9IHZhcmlhbnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5k
KGJ1ZmZlciwgJm1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNTMsNyArMTUz
LDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAg
ICAgICB2YXJpYW50c1tpXSA9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2ldLnZhcmlhbnRHbHlw
aDsKICAgICB9CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0
PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBh
cnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0
ID0gZ2x5cGhBc3NlbWJseU9mZnNldDsKICAgICAgICAgY29uc3QgR2x5cGhBc3NlbWJseSogZ2x5
cGhBc3NlbWJseSA9IHZhbGlkYXRlT2Zmc2V0PEdseXBoQXNzZW1ibHk+KGJ1ZmZlciwgb2Zmc2V0
KTsKQEAgLTE3MCw3ICsxNzAsNyBAQCBzdHJ1Y3QgTWF0aFZhcmlhbnRzIDogVGFibGVXaXRoQ292
ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgaG9yaXpvbnRhbEdseXBoQ291bnQ7CiAgICAg
T3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0WzFdOyAvLyBUaGVy
ZSBhcmUgdmVydGljYWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucyBhbmQg
aG9yaXpvbnRhbEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zLgogCi0gICAg
Y29uc3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRp
Y2FsKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29u
c3RydWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBp
c1ZlcnRpY2FsKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDMyX3QgY291bnQgPSB1aW50MTZf
dCh2ZXJ0aWNhbEdseXBoQ291bnQpICsgdWludDE2X3QoaG9yaXpvbnRhbEdseXBoQ291bnQpOwog
ICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoQ29uc3RydWN0aW9uc09m
ZnNldFtjb3VudF0pKQpAQCAtMjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJs
ZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoSW5mb09mZnNldDsKICAgICBP
cGVuVHlwZTo6T2Zmc2V0IG1hdGhWYXJpYW50c09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhDb25z
dGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAorICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQg
PSBtYXRoQ29uc3RhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjEyLDcgKzIx
Miw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRo
R2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEdseXBoSW5mb09mZnNldDsK
ICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxl
IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29u
c3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qg
b2Zmc2V0ID0gbWF0aFZhcmlhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVN
YXRoRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVNYXRoRGF0YS5oCmluZGV4IDNmZjY2ZDMxMTgyZTVjNGIzNmRkM2YzMzA3YTY4NGI5NWQ5
NTkzZTMuLjI5OTBiZmIwM2Y1NjE5NDU3N2ZkZDQ0NzZmMTQ0OTRhYjE4MDM1Y2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZU1hdGhEYXRhLmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250OwogCiBjbGFzcyBPcGVuVHlwZU1hdGhE
YXRhIDogcHVibGljIFJlZkNvdW50ZWQ8T3BlblR5cGVNYXRoRGF0YT4gewpAQCAtMTMzLDcgKzEz
Myw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgT3BlblR5cGVNYXRoRGF0YShjb25zdCBGb250
UGxhdGZvcm1EYXRhJik7CiAKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKLSAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fbWF0aEJ1ZmZlcjsKICNlbGlmIFVTRShIQVJGQlVaWikKICAgICBIYlVuaXF1ZVB0
cjxoYl9mb250X3Q+IG1fbWF0aEZvbnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAppbmRleCAz
MDQ5NjNhNWRlOTBjODFjOGQ2MzA5MTI2Nzc4ODc1MzFkODZkMmFmLi5jODY0YjJjM2E4ZmIxYWUz
NzYzMDkzZWU1MDU1YjM2NTFlZjAxMjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCkBAIC03Myw3ICs3
Myw3IEBAIHR5cGVkZWYgVUludDE2IEdseXBoSUQ7CiB0eXBlZGVmIHVpbnQzMl90IFRhZzsKICNk
ZWZpbmUgT1RfTUFLRV9UQUcoY2gxLCBjaDIsIGNoMywgY2g0KSAoKCgodWludDMyX3QpKGNoNCkp
IDw8IDI0KSB8ICgoKHVpbnQzMl90KShjaDMpKSA8PCAxNikgfCAoKCh1aW50MzJfdCkoY2gyKSkg
PDwgOCkgfCAoKHVpbnQzMl90KShjaDEpKSkKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRp
YyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0
YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBi
dWZmZXIsIHNpemVfdCBjb3VudCA9IDEpCiB7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5z
aXplKCkgPCBzaXplb2YoVCkgKiBjb3VudCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04Miw3ICs4
Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJs
ZShjb25zdCBSZWZQdHI8Q29udGlndW91c1NoYXJlCiAKIHN0cnVjdCBUYWJsZUJhc2UgewogcHJv
dGVjdGVkOgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKKyAgICBzdGF0aWMgYm9vbCBp
c1ZhbGlkRW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlv
bikKICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAg
cmV0dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGlu
Y2x1ZGVkIGFzIHZhbGlkCiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRp
YyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0
aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgY29uc3QgVCogY2FzdGVkID0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBUKj4ocG9zaXRpb24pOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQo
YnVmZmVyLCAmY2FzdGVkWzFdKSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAg
ICByZXR1cm4gY2FzdGVkOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25z
dCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIs
IHVpbnQxNl90IG9mZnNldCkgY29uc3QKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29uc3Qg
VCogdmFsaWRhdGVPZmZzZXQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9m
ZnNldCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZVB0cjxUPihidWZmZXIs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90Kj4odGhpcykgKyBvZmZzZXQpOwogICAgIH0K
QEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxl
IHsKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKIHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6
IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292
ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKKyAgICBi
b29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENv
dmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5k
ZXgpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1h
dCkgewogICAgICAgICBjYXNlIDE6IHsgLy8gQ292ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0
aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVXRpbGl0aWVzLmNwcAppbmRleCAzY2E3MjdhYWZiZDJjYWQ0YmUxMDZmMWRjNGMzZjJlN2Rk
NDQ4MDVmLi4zMjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0
aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFk
ZXI6OmFwcGVuZFBhZGRpbmdTaG9ydCgpCiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQg
dGFibGUgaW4gZm9udERhdGEsIGFuZCB3cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3Jp
dHRlbkZvbnRUYWJsZQogLy8gcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hp
Y2ggaXMgdXNlZCBieSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0
Ci1ib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEs
IGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9udERh
dGEpCitib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3Qg
U3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsK
ICAgICBzaXplX3Qgb3JpZ2luYWxEYXRhU2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25z
dCBzZm50SGVhZGVyKiBzZm50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4o
Zm9udERhdGEuZGF0YSgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIHJlbmFtZUZvbnQoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5h
bWUsCiB9CiAKIC8vIFJlbmFtZSB0aGUgZm9udCBhbmQgaW5zdGFsbCB0aGUgbmV3IGZvbnQgZGF0
YSBpbnRvIHRoZSBzeXN0ZW0KLVJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFj
dGl2YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3Qg
U3RyaW5nJiBmb250TmFtZSkKK1JlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFj
dGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZv
bnROYW1lKQogewogICAgIFZlY3Rvcjx1aW50OF90PiByZXdyaXR0ZW5Gb250RGF0YTsKICAgICBp
ZiAoIXJlbmFtZUZvbnQoZm9udERhdGEsIGZvbnROYW1lLCByZXdyaXR0ZW5Gb250RGF0YSkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuaAppbmRleCAyMmJlMjMwYTYwNWM2NmEwZWY1YmMxNDhhMjYy
Nzk3ZDM3MmMyYWM0Li5mYTAwMDgxMTYwNjY5N2RjNWM1MTEyMzMzYzkwYzhjOTJiNGI2NzA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTM1LDEwICszNSwxMCBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5kaWFuVVNob3J0OwotY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVmaXg7CiBjbGFz
cyBGb250TWVtb3J5UmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgRU9USGVhZGVyIHsKICAgICBFT1RIZWFkZXIoKTsK
QEAgLTU1LDggKzU1LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWludDhfdCwgNTEyPiBtX2J1
ZmZlcjsKIH07CiAKLWJvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7Ci1SZWZQdHI8Rm9udE1lbW9yeVJl
c291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYpOworYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOworUmVmUHRyPEZvbnRNZW1vcnlSZXNv
dXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVy
dGljYWxEYXRhLmNwcAppbmRleCA3OWU5ZWZlMDYwNTMzNTc5ZTljYTNiYzEwMzIzOGJmZDI4MmY3
MTVjLi4wZmE4ZjMwNmFkOTUyZDA2YTA5Mjk3ZDBiMWQyODdiODk4ODMyYTNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRp
Y2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgc3RydWN0IFN1
YnN0aXR1dGlvblN1YlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IHN1
YnN0Rm9ybWF0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgY292ZXJhZ2VPZmZzZXQ7CiAKLSAgICBj
b25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1
ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9CisgICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJh
Z2UoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zm
c2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9CiB9OwogCiBzdHJ1
Y3QgU2luZ2xlU3Vic3RpdHV0aW9uMlN1YlRhYmxlIDogU3Vic3RpdHV0aW9uU3ViVGFibGUgewpA
QCAtMTMxLDcgKzEzMSw3IEBAIHN0cnVjdCBMb29rdXBUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAg
T3BlblR5cGU6Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNbMV07CiAgICAgLy8gT3BlblR5cGU6OlVJ
bnQxNiBtYXJrRmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxkIGNvbWVzIGFmdGVyIHZhcmlhYmxlIGxl
bmd0aCwgc28gb2Zmc2V0IGlzIGRldGVybWluZWQgZHluYW1pY2FsbHkuCiAKLSAgICBib29sIGdl
dFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldFN1YnN0aXR1dGlvbnMo
SGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnRTdWJUYWJsZSA9IHN1YlRhYmxlQ291
bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzdWJUYWJsZU9mZnNldHNbY291
bnRTdWJUYWJsZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0cnVjdCBMb29rdXBMaXN0IDogVGFi
bGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBl
OjpPZmZzZXQgbG9va3VwT2Zmc2V0c1sxXTsKIAotICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29r
dXAodWludDE2X3QgaW5kZXgsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBjb25zdCBMb29rdXBUYWJsZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNv
dW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxp
ZEVuZChidWZmZXIsICZsb29rdXBPZmZzZXRzW2NvdW50XSkpCkBAIC0yMDgsNyArMjA4LDcgQEAg
c3RydWN0IEZlYXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBs
b29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cExpc3RJbmRleFsxXTsKIAot
ICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cHMs
IEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9v
a3VwTGlzdCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBs
b29rdXBDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1cExpc3RJ
bmRleFtjb3VudF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRh
YmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZU9mZnNldDsKICAgICB9
IGZlYXR1cmVzWzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90
IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBp
bmRleCwgT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJlQ291bnQ7CiAgICAgICAg
IGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlc1tjb3Vu
dF0pKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmlu
ZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5U
eXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBmZWF0dXJlQ291bnQ7ICsraSkgewogICAg
ICAgICAgICAgaWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbaV0pICYmIGZlYXR1cmVz
W2ldLmZlYXR1cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0cnVjdCBMYW5nU3lz
VGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUNvdW50Owog
ICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUluZGV4WzFdOwogCi0gICAgY29uc3QgRmVhdHVy
ZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxp
c3QqIGZlYXR1cmVzLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRh
ZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVhdHVyZUNvdW50Owog
ICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZUluZGV4W2NvdW50XSkpCkBA
IC0yNzcsNyArMjc3LDcgQEAgc3RydWN0IFNjcmlwdFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAg
ICAgT3BlblR5cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0OwogICAgIH0gbGFuZ1N5c1JlY29yZHNb
MV07CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUq
IGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3QgY291bnQgPSBsYW5nU3lzQ291bnQ7CiAgICAgICAgIGlmICghaXNW
YWxpZEVuZChidWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tjb3VudF0pKQpAQCAtMjk4LDcgKzI5OCw3
IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9m
ZnNldCBzY3JpcHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRzWzFdOwogCi0gICAgY29uc3QgU2NyaXB0
VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5
cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlk
RW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMxMCw3ICszMTAsNyBAQCBzdHJ1Y3Qg
U2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAg
IGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSogZGVmYXVsdFNjcmlw
dChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQx
Nl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghY291bnQgfHwgIWlzVmFsaWRF
bmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzIxLDcgKzMyMSw3IEBAIHN0cnVjdCBT
Y3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNj
cmlwdFRhYmxlPihidWZmZXIsIHNjcmlwdHNbMF0uc2NyaXB0T2Zmc2V0KTsKICAgICB9CiAKLSAg
ICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRM
YW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAg
Y29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdFRhYmxlID0gZGVmYXVsdFNjcmlwdChidWZmZXIpOwog
ICAgICAgICBpZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2LDExICszMzYsMTEgQEAgc3RydWN0IEdT
VUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0dXJlTGlzdE9m
ZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cExpc3RPZmZzZXQ7CiAKLSAgICBjb25z
dCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBz
Y3JpcHRMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlk
YXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQotICAg
IGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZm
ZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlz
dChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZz
ZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IEZl
YXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3Qg
eyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RP
ZmZzZXQpOyB9CisgICAgY29uc3QgTG9va3VwTGlzdCogbG9va3VwTGlzdChjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4o
YnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBk
ZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlw
dHMgPSBzY3JpcHRMaXN0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0cykKQEAgLTM0OCw3
ICszNDgsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJu
IHNjcmlwdHMtPmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgfQogCi0gICAgY29uc3QgRmVh
dHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSog
ZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBsYW5nU3lzID0g
ZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICAgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1
cmVzID0gZmVhdHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2NSw3ICszNjUsNyBAQCBzdHJ1Y3QgR1NV
QlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIGZlYXR1cmU7CiAgICAgfQogCi0g
ICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlw
aD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAg
IGJvb2wgZ2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+
KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAg
Y29uc3QgRmVhdHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1cmVUYWJsZSA9IGZlYXR1cmUoT3BlblR5
cGU6OlZlcnRGZWF0dXJlVGFnLCBidWZmZXIpOwogICAgICAgICBpZiAoIXZlcnRpY2FsRmVhdHVy
ZVRhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0RpcmVjdFdyaXRlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaAppbmRleCBhNjI3MTliMTcxOWE3NGY5NzY5MjIx
OWRmNWY3YWFlZGM0OTA2NDY2Li4wZGI0YWZhZGIzZjc0MmI4M2E0ZTE2Y2YzNzE4NzBhMmIwNDA0
ZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGly
ZWN0V3JpdGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaApAQCAtNDMsNyArNDMsNyBAQCBlbnVtIERXUklU
RV9GT05UX1NUUkVUQ0g7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9y
bURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBuYW1lc3BhY2UgRGlyZWN0V3JpdGUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHAKaW5kZXggOGJlMWIxYTMzYTYyMDVjMTgxY2VmZjFhYzM0MzRiYzg3YTc4M2JlNS4uYzg2ODNh
N2VmNTg5YzNmZTY1NGQ4NDU3MTI5NWUyNDBkMjI0NDllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVl
Rm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24p
CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5D
b2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1l
KCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVy
LCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBmYzA0ZjE3NWM3ODhi
OWJlOTk4ZjVmM2I3MTFmNTk3YzAyNmJiZjllLi4wOGZjOWYxOWVhZWE5NDgzZWE1OGVjMWFlZWRk
NDU3MjU2Y2UyN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTM2LDEzICszNiwx
MyBAQCB0eXBlZGVmIHN0cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVy
OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNs
YXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2Fw
YWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8
aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAg
Rm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLXN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggZjRmYmY3YTdmNGQ3YzgzZmYyMTE2YzMxZTU0
NmNhOTFlMDU4OWNiMS4uM2MxZDRlMmYzYzc1NGE3M2E4MjNhMDBjMTY3NGVjMzA0NDkzMTEyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTg3LDcgKzg3LDcg
QEAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnRO
YW1lOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZv
bnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9
IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9X
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9y
bURhdGFDYWlyb1dpbi5jcHAKaW5kZXggNGM2NzRjNDc0M2JjMDExOGE5NzAxMGNjNjkyODliNTg2
ZGJiMGNkMS4uMzFhMWU1YzUzMWYyMDkwM2M1Y2ZiMzI4NjBiYTVlZjIwNjRlOTNkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURh
dGFDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBGb250
UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3Ro
ZXIpIGNvbnN0CiAgICAgICAgICYmIG1fdXNlR0RJID09IG90aGVyLm1fdXNlR0RJOwogfQogCi1S
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVU
YWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0
Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5j
cHAKaW5kZXggNDM5Y2Y4NjNiODczZGM5Y2Y3ZjgxMDU5OWU1YTYwMWU3ZjczNzk5Ny4uNmNiNTUx
MTA0YTkzYmRiZDIyYjQxN2E0NTQ2ZDIwZmFkMGUyYTM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2lu
LmNwcApAQCAtNTksMTggKzU5LDE4IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURh
dGEoR0RJT2JqZWN0PEhGT05UPiBmb250LCBmbG9hdCBzaXplLCBib29sIGJvbGQsCiAgICAgUmVz
dG9yZURDKGhkYywgLTEpOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9u
dFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25z
dAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlw
ZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIEhXbmREQyBoZGMoMCk7CiAgICAg
SEdESU9CSiBvbGRGb250ID0gU2VsZWN0T2JqZWN0KGhkYywgaGZvbnQoKSk7CiAKICAgICBEV09S
RCBzaXplID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgMCwgMCk7Ci0gICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgaWYgKHNpemUgIT0gR0RJX0VSUk9SKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhKHNpemUpOwogICAgICAgICBEV09SRCByZXN1bHQgPSBHZXRGb250RGF0YShoZGMs
IHRhYmxlLCAwLCAoUFZPSUQpZGF0YS5kYXRhKCksIHNpemUpOwogICAgICAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0ID09IHNpemUpOwotICAgICAgICBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgICAgIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIH0KIAogICAgIFNlbGVjdE9i
amVjdChoZGMsIG9sZEZvbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKaW5kZXggNjI5ZTBl
NjFhMTA0YzU2N2ExZDRlZGNiN2U1Nzk3ZGNmNjdjNmU4ZS4uNzczNTczOWI5MzM0ZjQ0ZDk5YTNm
MTJmZmM1YmY3YjQxZjdjYzZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCkBAIC0yNzIs
NyArMjcyLDcgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJEaXJlY3QyRDo6Y3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWIKICAgICByZXR1cm4gYml0bWFwOwog
fQogCi12b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXRE
YXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ewogICAgIGlmICghYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJE
aXJlY3QyRC5oCmluZGV4IDRmNDcyNTg2YjQyNGJkYTFjZjZmYTAxNDNjYmEyM2QwMzAwMTZlNDUu
LmMyMzY1ZmQ3NDRjNjExOGMxOTk5ZTA1YjgwMmVkNWI0OGYzNjQ4MjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJE
aXJlY3QyRC5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEltYWdlRGVjb2RlckRpcmVjdDJEIGZp
bmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6CiAgICAgSW1hZ2VEZWNvZGVyRGly
ZWN0MkQoKTsKIAotICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyRGlyZWN0MkQ+IGNyZWF0ZShT
aGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisg
ICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJEaXJlY3QyRD4gY3JlYXRlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJEaXJlY3QyRCgpKTsK
ICAgICB9CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIg
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2Ft
cGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0
aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERh
dGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQg
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZp
bmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6
ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZVdpbi5jcHAKaW5kZXggMGQ4ODIwZTlmM2Q2ZmQ3NzM1ZDU3MGIzNjQxNDg4ZjUz
YmQ3ZWNlOS4uMmQ5NzI3MGE3MzQ4MzQ4OTNlNzhjODFmZjBlYzViYjVkZmVjM2Y4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwCkBA
IC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIC8vIFRoaXMgZnVu
Y3Rpb24gbG9hZHMgcmVzb3VyY2VzIGZyb20gV2ViS2l0Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsKK1JlZlB0cjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0
IGNoYXIqKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAppbmRleCA3ZTNiMzYzMmI5MGM2MTk0MTVlNDhhNTJhMjI1
OGIxNDJlMDAxYTU3Li5jZjJiNTFmNmYwMjgzN2ExMTA2ZjRkOTk5ZjJmMTMwZTI1ODA5ODZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKQEAgLTYwLDgg
KzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FuU21hcnRSZXBsYWNlKGJvb2wgY2FuU21h
cnRSZXBsYWNlKSB7IG1fY2FuU21hcnRSZXBsYWNlID0gY2FuU21hcnRSZXBsYWNlOyB9CiAgICAg
Ym9vbCBjYW5TbWFydFJlcGxhY2UoKSBjb25zdCB7IHJldHVybiBtX2NhblNtYXJ0UmVwbGFjZTsg
fQogCi0gICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KLSAgICBDb250aWd1
b3VzU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21EYXRh
LmdldCgpOyB9CisgICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsgfQorICAgIFNoYXJlZEJ1ZmZl
ciogY3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tRGF0YS5nZXQoKTsgfQogICAg
IGJvb2wgaGFzQ3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9jdXN0b21EYXRhOyB9CiAg
ICAgdm9pZCBjbGVhckN1c3RvbURhdGEoKSB7IG1fY3VzdG9tRGF0YSA9IG51bGxwdHI7IH0KIApA
QCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IG1fZmlsZW5hbWVz
OwogICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKICAgICBib29sIG1fY2FuU21hcnRSZXBsYWNl
IHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jdXN0b21E
YXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBkOTU2
ZDllNzYyNWQ1YmI1YTcwZjA2OTNlNzc5OGVlOTA4NDlmMTY1Li4zM2M5NWVjMzMzM2E5MjBjNjRh
MDE4MTc1MWViNGE1MDVlZjFhN2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCkBA
IC01MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKIAotc3Rh
dGljIHVuc2lnbmVkIGNvcHlGcm9tU2hhcmVkQnVmZmVyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQg
YnVmZmVyTGVuZ3RoLCBjb25zdCBTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikKK3N0YXRpYyB1
bnNpZ25lZCBjb3B5RnJvbVNoYXJlZEJ1ZmZlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZl
ckxlbmd0aCwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKQogewog
ICAgIHVuc2lnbmVkIGJ5dGVzRXh0cmFjdGVkID0gMDsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVs
ZW1lbnQgOiBzaGFyZWRCdWZmZXIpIHsKQEAgLTEzNSw3ICsxMzUsNyBAQCBib29sIG1hdGNoZXND
VVJTaWduYXR1cmUoY2hhciogY29udGVudHMpCiAKIH0KIAotUmVmUHRyPFNjYWxhYmxlSW1hZ2VE
ZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBTY2Fs
YWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbGVuZ3Ro
T2ZMb25nZXN0U2lnbmF0dXJlID0gMTQ7IC8vIFRvIHdpdDogIlJJRkY/Pz8/V0VCUFZQIgogICAg
IGNoYXIgY29udGVudHNbbGVuZ3RoT2ZMb25nZXN0U2lnbmF0dXJlXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdl
RGVjb2Rlci5oCmluZGV4IDNjNmEzYTUwYzgyMDk2NGU4YTliMDc0OTAxYTkyYjNmM2M0Nzg5Yjcu
LjljNDA1NTc4MjQxZDBjNTEyNzAyOTUxNWMyMjEyNjU4ZjhjNGY2OGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5z
IG51bGxwdHIgaWYgd2UgY2FuJ3Qgc25pZmYgYSBzdXBwb3J0ZWQgdHlwZSBmcm9tIHRoZSBwcm92
aWRlZCBkYXRhIChwb3NzaWJseQogICAgIC8vIGJlY2F1c2UgdGhlcmUgaXNuJ3QgZW5vdWdoIGRh
dGEgeWV0KS4KLSAgICBzdGF0aWMgUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBjcmVhdGUo
U2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pOworICAgIHN0YXRpYyBSZWZQdHI8U2NhbGFibGVJbWFnZURlY29kZXI+IGNyZWF0ZShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOwogCiAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3QgeyByZXR1cm4g
bV9wcmVtdWx0aXBseUFscGhhOyB9CiAKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxl
dGU7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlCisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0
YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCkBAIC0xOTQsNyArMTk0LDcgQEAg
cHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CiAgICAgVmVjdG9yPFNjYWxhYmxlSW1h
Z2VEZWNvZGVyRnJhbWUsIDE+IG1fZnJhbWVCdWZmZXJDYWNoZSBXVEZfR1VBUkRFRF9CWV9MT0NL
KG1fbG9jayk7CiAgICAgbXV0YWJsZSBMb2NrIG1fbG9jazsKICAgICBib29sIG1fcHJlbXVsdGlw
bHlBbHBoYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcAppbmRleCA3YzYwM2ZkODM1OGMy
MTRhYzkxODRmMzE4OTk3MmZlODQxYjYxZTgwLi4yNmY4ODY0OTZlNWE1YTE0ZTI4YWZiMWFmYTli
ZmMzMDE3N2Y1MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCkBAIC00MSw3ICs0
MSw3IEBAIEFWSUZJbWFnZVJlYWRlcjo6QVZJRkltYWdlUmVhZGVyKFJlZlB0cjxBVklGSW1hZ2VE
ZWNvZGVyPiYmIGRlY29kZXIpCiAKIEFWSUZJbWFnZVJlYWRlcjo6fkFWSUZJbWFnZVJlYWRlcigp
ID0gZGVmYXVsdDsKIAotYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorYm9v
bCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAo
YXZpZkRlY29kZXJTZXRJT01lbW9yeShtX2F2aWZEZWNvZGVyLmdldCgpLCBkYXRhLmRhdGEoKSwg
ZGF0YS5zaXplKCkpICE9IEFWSUZfUkVTVUxUX09LKQogICAgICAgICByZXR1cm4gYWxsRGF0YVJl
Y2VpdmVkID8gbV9kZWNvZGVyLT5zZXRGYWlsZWQoKSA6IGZhbHNlOwpAQCAtNTgsNyArNTgsNyBA
QCBib29sIEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudCYgZGF0YSwgYm9vbCBhbAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFW
SUZJbWFnZVJlYWRlcjo6ZGVjb2RlRnJhbWUoc2l6ZV90IGZyYW1lSW5kZXgsIFNjYWxhYmxlSW1h
Z2VEZWNvZGVyRnJhbWUmIGJ1ZmZlciwgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYg
ZGF0YSkKK3ZvaWQgQVZJRkltYWdlUmVhZGVyOjpkZWNvZGVGcmFtZShzaXplX3QgZnJhbWVJbmRl
eCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYgYnVmZmVyLCBjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkKIHsKICAgICBpZiAobV9kZWNvZGVyLT5mYWls
ZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgKaW5kZXggY2Jj
YTBiOGMxMjRiZmYwZmZjMzMwMWJhMzViY2UwMWVkMjcyMmRmOC4uNDk2ZjY5ZjgxMmJkNzViMGVk
YTYzNTdiYWE4NjBjZmNjYjViYTRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCkBAIC0z
OSw4ICszOSw4IEBAIHB1YmxpYzoKICAgICBBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJbWFn
ZURlY29kZXI+JiYpOwogICAgIH5BVklGSW1hZ2VSZWFkZXIoKTsKIAotICAgIGJvb2wgcGFyc2VI
ZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKTsKLSAgICB2b2lkIGRlY29kZUZyYW1lKHNpemVfdCBpbmRleCwgU2NhbGFibGVJbWFnZURl
Y29kZXJGcmFtZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKTsKKyAgICBib29s
IHBhcnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Jiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4
LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQmKTsKICAgICBzaXplX3QgaW1hZ2VDb3VudCgpIGNvbnN0OwogICAgIGRv
dWJsZSByZXBldGl0aW9uQ291bnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNw
cAppbmRleCA3Mjc2OWE2OTI2ZWMyNDE5YmY2NjM4MjUyOGQzZDc3MjBhNTRhZGFlLi5mNzQ1NWMx
NDZjN2U4YWViMDRjYzhjNTZmMzMwZTJhMDFmM2JhNzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNv
ZGVyLmNwcApAQCAtNDYsNyArNDYsNyBAQCBCTVBJbWFnZURlY29kZXI6OkJNUEltYWdlRGVjb2Rl
cihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogewogfQog
Ci12b2lkIEJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQordm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZh
aWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzdj
N2NhODFmZWE2YjhhNzc0YmIzMDhlNTM4ZGNkMDQ4Yzk5NWVlYS4uNjRkZWQ2YWJiZTJjMGEyOWIx
MWY5ZmI1ZWNkNmI0ODcyNGQ1ODk3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaApAQCAtNDQs
NyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAgIFN0
cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJibXAiX3M7IH0K
LSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZp
bmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1l
QnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIGZpbmFsOwogICAgIC8vIENBVVRJT046IHNldEZh
aWxlZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gQmUgY2FyZWZ1bCB0byBhdm9pZAogICAgIC8vIGFj
Y2Vzc2luZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxseSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9t
IGluc2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYm1wL0JNUEltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaAppbmRleCA0ODQ0ZjM4MGRjMTdlYzcwNDU4OGZi
MTJmNTNlYWJjNmQyMGU2MGY0Li5iZDQzMGU4YThiZWEyYzgxNmIyYzUyMmJmNWJhNzg4NDZjMzhl
MGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9i
bXAvQk1QSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBCTVBJ
bWFnZVJlYWRlciB7CiBwdWJsaWM6CiAgICAgLy8gUmVhZCBhIHZhbHVlIGZyb20gfGRhdGFbb2Zm
c2V0XXwsIGNvbnZlcnRpbmcgZnJvbSBsaXR0bGUgdG8gbmF0aXZlCiAgICAgLy8gZW5kaWFubmVz
cy4KLSAgICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJlYWRVaW50MTYoY29uc3QgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkKKyAgICBzdGF0aWMgaW5saW5lIHVp
bnQxNl90IHJlYWRVaW50MTYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQmIGRhdGEsIGludCBvZmZzZXQpCiAgICAgewogICAgICAgICB1aW50MTZfdCByZXN1bHQ7CiAg
ICAgICAgIG1lbWNweSgmcmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgMik7CkBAIC01Miw3
ICs1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBz
dGF0aWMgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHJl
YWRVaW50MzIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEs
IGludCBvZmZzZXQpCiAgICAgewogICAgICAgICB1aW50MzJfdCByZXN1bHQ7CiAgICAgICAgIG1l
bWNweSgmcmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgNCk7CkBAIC02OSw3ICs2OSw3IEBA
IHB1YmxpYzoKICAgICBCTVBJbWFnZVJlYWRlcihTY2FsYWJsZUltYWdlRGVjb2RlciogcGFyZW50
LCBzaXplX3QgZGVjb2RlZEFuZEhlYWRlck9mZnNldCwgc2l6ZV90IGltZ0RhdGFPZmZzZXQsIGJv
b2wgdXNlc0FuZE1hc2spOwogCiAgICAgdm9pZCBzZXRCdWZmZXIoU2NhbGFibGVJbWFnZURlY29k
ZXJGcmFtZSogYnVmZmVyKSB7IG1fYnVmZmVyID0gYnVmZmVyOyB9Ci0gICAgdm9pZCBzZXREYXRh
KFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KKyAg
ICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEp
IHsgbV9kYXRhID0gJmRhdGE7IH0KIAogICAgIC8vIERvZXMgdGhlIGFjdHVhbCBkZWNvZGluZy4g
SWYgfG9ubHlTaXplfCBpcyB0cnVlLCBkZWNvZGluZyBvbmx5CiAgICAgLy8gcHJvZ3Jlc3NlcyBh
cyBmYXIgYXMgbmVjZXNzYXJ5IHRvIGdldCB0aGUgaW1hZ2Ugc2l6ZS4gUmV0dXJucwpAQCAtMjcy
LDcgKzI3Miw3IEBAIHByaXZhdGU6CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogbV9i
dWZmZXI7CiAKICAgICAvLyBUaGUgZmlsZSB0byBkZWNvZGUuCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKIAogICAgIC8vIEFuIGluZGV4IGludG8gfG1fZGF0
YXwgcmVwcmVzZW50aW5nIGhvdyBtdWNoIHdlJ3ZlIGFscmVhZHkgZGVjb2RlZC4KICAgICBzaXpl
X3QgbV9kZWNvZGVkT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNh
aXJvLmNwcAppbmRleCA2MDEyMDM3NGY5YzQzMTY4YTY1MjFiNjljNTRhZmJlMmEwMGY1NWY3Li40
YTIxMjU1YThjMGZiNjc4ZTRhYWRkNzY2M2ViN2Y5MThlN2ZlOTRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9y
ZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9j
YWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcApAQCAtMzcsNyArMzcsOSBAQCBQbGF0Zm9y
bUltYWdlUHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0CiAgICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8dWludDMyX3QqPihtX3BpeGVs
c1B0cikpLAogICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMyLCBzaXplKCkud2lkdGgoKSwgc2l6
ZSgpLmhlaWdodCgpLCBzaXplKCkud2lkdGgoKSAqIHNpemVvZih1aW50MzJfdCkpKTsKICAgICBz
dGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tleV90IHNfc3VyZmFjZURhdGFLZXk7Ci0gICAgY2Fpcm9f
c3VyZmFjZV9zZXRfdXNlcl9kYXRhKHN1cmZhY2UuZ2V0KCksICZzX3N1cmZhY2VEYXRhS2V5LCBt
X3BpeGVscy5nZXQoKSwgW10odm9pZCogZGF0YSkgeyBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50Kj4oZGF0YSktPmRlcmVmKCk7IH0pOworICAgIGNhaXJvX3N1cmZhY2Vfc2V0
X3VzZXJfZGF0YShzdXJmYWNlLmdldCgpLCAmc19zdXJmYWNlRGF0YUtleSwgbV9waXhlbHMuZ2V0
KCksIFtdKHZvaWQqIGRhdGEpIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8RGF0YVNlZ21lbnQqPihk
YXRhKS0+ZGVyZWYoKTsKKyAgICB9KTsKIAogICAgIHJldHVybiBzdXJmYWNlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdl
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYv
R0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBlNmFiZTBkOTU0NGI2YzE4NWM2NDVkZWNlMDlmMjNm
OTU2NjYwN2NiLi5iOWVjMDFiOGFlOGU4ZDI5YmM3ODI1MjZlMDc2NTI1NTFlMzU5YzAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBHSUZJbWFnZURlY29k
ZXI6OkdJRkltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcAogCiBHSUZJbWFnZURlY29kZXI6On5HSUZJbWFnZURlY29kZXIoKSA9IGRlZmF1
bHQ7CiAKLXZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBp
ZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAppbmRl
eCAzNWRmMzNmNmRmYzQ4M2ZkODQ3MTM2NmFlNTNiYjBiOTYxY2FlZDJlLi5jNzQ3MTk5OTliOTg2
YzFjZWY4NDc4NzU5ZDIzNzE4YzkwNDJkM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCkBA
IC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAg
ICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gImdpZiJf
czsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgc2V0U2l6ZShjb25z
dCBJbnRTaXplJikgZmluYWw7CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCBmaW5hbDsK
ICAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3QgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZVJlYWRlci5oCmluZGV4IDQyMTQ2ZTAzMjkzMjM2OTk3ODllYjVlNDJhZjRjNzNkMzRh
YjljYzYuLjEwODJmZGYwZGZmMjM5MWU1NjUzMGE0MWY4N2JhNDM5ODIzMjc1MzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJl
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZVJlYWRlci5oCkBAIC0yMzcsNyArMjM3LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9
CiAKLSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYg
ZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQorICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsg
fQogICAgIC8vIEZJWE1FOiBoYWx0QXRGcmFtZSBzaG91bGQgYmUgc2l6ZV90LgogICAgIGJvb2wg
ZGVjb2RlKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6R0lGUXVlcnksIHVuc2lnbmVkIGhhbHRB
dEZyYW1lKTsKIApAQCAtMzE2LDYgKzMxNiw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxHSUZGcmFtZUNvbnRleHQ+ID4gbV9mcmFtZXM7CiAgICAgc2l6ZV90IG1fY3Vy
cmVudERlY29kaW5nRnJhbWU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOwogICAgIGJvb2wgbV9wYXJzZUNvbXBsZXRlZDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9p
Y28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IGM3MTdjNDVkMzA1N2MwNTUzNmVl
NjA1MGY5Mzk3MDQ2ZDEwZGYyYTcuLmMwNzEzNDViOGJmMzY5YjgwMjcxZmJkZjBhMGNlMDE3NGYw
NTAzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIElD
T0ltYWdlRGVjb2Rlcjo6SUNPSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wCiAKIElDT0ltYWdlRGVjb2Rlcjo6fklDT0ltYWdlRGVjb2Rl
cigpID0gZGVmYXVsdDsKIAotdm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpz
ZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVj
b2Rlci5oCmluZGV4IGZiN2E5MDNiMmEwNzUzOTQ5MTdhYmJiZjExYjFjZWQ4M2ZmNDMyYTAuLjEw
ZWU5YjRkMmU4YzlkODg3ZTFkMmI4YmUxMzliYjc0MjcxZDU3YTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VE
ZWNvZGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFn
ZURlY29kZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAiaWNvIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBJbnRTaXplIHNpemUoKSBj
b25zdCBmaW5hbDsKICAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1w
bGluZ0xldmVsKSBjb25zdCBmaW5hbDsKICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYTQyZTViYzRhY2Nm
MzcyMmE1YWY5YzkwNTQ2MmQwOGVkODg0MTY0OC4uNWNmYWM5ZjIzNTdlMmUxMmM2ODY0MDBiMjY3
ODhhZTdmOGJlMTM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0yMjAs
NyArMjIwLDcgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9tYXJrZXJfcHRy
IG1hcmtlcikKICAgICAgICAgJiYgbWFya2VyLT5kYXRhWzExXSA9PSAnXDAnOwogfQogCi1zdGF0
aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVj
b21wcmVzc19zdHJ1Y3QqIGluZm8pCitzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElD
Q1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsKICAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBmb3IgKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIg
PSBpbmZvLT5tYXJrZXJfbGlzdDsgbWFya2VyOyBtYXJrZXIgPSBtYXJrZXItPm5leHQpIHsKQEAg
LTMyMCw3ICszMjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYnl0ZXNUb1NraXAgPSBzdGQ6Om1h
eChudW1CeXRlcyAtIGJ5dGVzVG9Ta2lwLCBzdGF0aWNfY2FzdDxsb25nPigwKSk7CiAgICAgfQog
Ci0gICAgYm9vbCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwg
Ym9vbCBvbmx5U2l6ZSkKKyAgICBib29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkKICAgICB7CiAgICAgICAgIG1f
ZGVjb2RpbmdTaXplT25seSA9IG9ubHlTaXplOwogCkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBK
UEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB9CiAKICNpZiBVU0UoTENNUykKLXZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJv
ZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEpQRUdJ
bWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiB7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VE
ZWNvZGVyLmgKaW5kZXggYzAzYWE2NzgyMjAzY2JkNGNmYzgzZmRlOGY4NzEyYjcwODFlM2FhOS4u
ZDJkN2ZhNmFiNDliNDI0N2FmZmI4ZTFmYmVlNDY5NTNiMGNiMDVjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmgKQEAgLTY4LDcgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIHZvaWQgc2V0T3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikg
eyBtX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247IH0KICNpZiBVU0UoTENNUykKLSAgICAgICAg
dm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKKyAg
ICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOwogI2VuZGlm
CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29k
ZXIuY3BwCmluZGV4IGJlY2Y2NDUwMjc3ZWViNzRiMDlkZTUyZWUxODJmZjZlMTFlZDI3NjIuLjIw
NDczZjBlZWViYjU2YzcxMzE0ZjY1NTZiZGEwOTAzMzQ5MDc0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VE
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lk
IEpQRUcyMDAwSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCiAgICAgfQogCiAgICAgc3RydWN0IFJlYWRlciB7Ci0gICAgICAgIFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGE7CisgICAgICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50JiBkYXRhOwogICAgICAgICBzaXplX3Qgb2Zmc2V0OwogICAgIH0gcmVhZGVy
ID0geyAqbV9kYXRhLCAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYzEy
YzQ1OWE1YTNlNWIzNTFjNWJjYzYyYmYwMGI4YTI4MWJkNWJhMy4uNGNiZDMyM2Q5YTc1MDI2ZWY4
NjU4ZjM4MTZkZDczOGQzN2NhOGVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKQEAg
LTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVhZE9mZnNldCA9IDA7CiAgICAg
fQogCi0gICAgYm9vbCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0
YSwgYm9vbCBzaXplT25seSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpCisgICAgYm9vbCBkZWNvZGUo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgc2l6
ZU9ubHksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKQogICAgIHsKICAgICAgICAgbV9kZWNvZGluZ1Np
emVPbmx5ID0gc2l6ZU9ubHk7CiAgICAgICAgIFBOR0ltYWdlRGVjb2RlciogZGVjb2RlciA9IHN0
YXRpY19jYXN0PFBOR0ltYWdlRGVjb2Rlcio+KHBuZ19nZXRfcHJvZ3Jlc3NpdmVfcHRyKG1fcG5n
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAwMmYxYjA5ZGJjNzY1MTYw
MWY5MjJkZGUyOWY4MDVhNjU4NzFlMmQyLi5iMWJlYzU1ZTc4YzQzNDgwMWMyNTRhY2UwZGY1OTkz
MWEzNmI3NGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ3LDcgKzQ3
LDcgQEAgV0VCUEltYWdlRGVjb2Rlcjo6V0VCUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGUKIAogV0VCUEltYWdlRGVjb2Rlcjo6fldFQlBJ
bWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6c2V0RGF0
YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBXRUJQSW1h
Z2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTMyLDcgKzEzMiw3IEBAIHZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKHNpemVfdCBmcmFt
ZUluZGV4LCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBUaGlzIGNhbiBiZSBleGVjdXRl
ZCBib3RoIGluIHRoZSBtYWluIHRocmVhZCAod2hlbiBub3QgdXNpbmcgYXN5bmMgZGVjb2Rpbmcp
IG9yIGluIHRoZSBkZWNvZGluZyB0aHJlYWQuCiAgICAgLy8gV2hlbiBleGVjdXRlZCBpbiB0aGUg
ZGVjb2RpbmcgdGhyZWFkLCBhIGNhbGwgdG8gc2V0RGF0YSgpIGZyb20gdGhlIG1haW4gdGhyZWFk
IG1heSBjaGFuZ2UgdGhlIGRhdGEKICAgICAvLyB0aGUgV2ViUERlbXV4ZXIgaXMgdXNpbmcsIGxl
YXZpbmcgaXQgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLCBzbyB3ZSBuZWVkIHRvIHByb3RlY3Qg
dGhlIGRhdGEuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHByb3RlY3Rl
ZERhdGEobV9kYXRhKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ+IHByb3RlY3RlZERhdGEobV9kYXRhKTsKICAgICBXZWJQRGF0YSBpbnB1dERhdGEgPSB7
IHByb3RlY3RlZERhdGEtPmRhdGEoKSwgcHJvdGVjdGVkRGF0YS0+c2l6ZSgpIH07CiAgICAgV2Vi
UERlbXV4U3RhdGUgZGVtdXhlclN0YXRlOwogICAgIFdlYlBEZW11eGVyKiBkZW11eGVyID0gV2Vi
UERlbXV4UGFydGlhbCgmaW5wdXREYXRhLCAmZGVtdXhlclN0YXRlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1h
Z2VEZWNvZGVyLmgKaW5kZXggYWYzNjVlOWNmOWM3Y2U5NTM4YjY0YmE3ODliZjAxN2Q0OGY2ZWRl
MS4uZGQyOGJjODhkZjVjMGZhM2MxNTczNzg2OWIyNjA5NzNhYWEwZDIzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNv
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9X
RUJQSW1hZ2VEZWNvZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fldFQlBJbWFnZURlY29kZXIoKTsKIAogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJ3ZWJwIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgYm9vbCkgZmluYWw7CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogZnJh
bWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgUmVwZXRpdGlvbkNv
dW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBmcmFtZUNv
dW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcmFtZUNvdW50OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDkwOWU4ZTc2OGFkYjY4
YmFiMjg0NDVkMjgyNzM2MGEzZjNmYTIyYzMuLmIyMzc3ZmUzNDExZDJhYzQwMTUxM2JmMDlhZThj
Y2FlNzg2YmQ4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0
ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJk
SU9TLm1tCkBAIC0yMzYsMTQgKzIzNiwxNCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgogCiAjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmIChbdHlwZSBpc0Vx
dWFsVG9TdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUZsYXRSVEZEXSkgewotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBl
RmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2No
YW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVz
dWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiBidWZm
ZXIgJiYgcmVhZGVyLnJlYWRSVEZEKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6
IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiAgICAgfQogCiAgICAgaWYgKFt0eXBlIGlz
RXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUlRGXSkgewotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlUlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0
KCkpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3Ry
YXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVJURiwgbV9w
YXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0g
Y2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9h
cmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIu
cmVhZFJURigqYnVmZmVyKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6
OkRpZE5vdFJlYWRUeXBlOwpAQCAtMjUxLDcgKzI1MSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCiAjZW5kaWYgLy8gIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogCiAgICAg
aWYgKFtzdXBwb3J0ZWRJbWFnZVR5cGVzKCkgY29udGFpbnNPYmplY3Q6dHlwZV0pIHsKLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKGl0ZW1JbmRleCwgdHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsK
KyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5
LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5h
bWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50
KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdl
ZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRJbWFnZShi
dWZmZXIucmVsZWFzZU5vbk51bGwoKSwgdHlwZSwgaXRlbUluZm8ucHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZSkgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RS
ZWFkVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tCmluZGV4IDVhZDFmNmZhYzRiNjU0NzUxZDU5MWQzNjM1YzQ2ODUwMzlk
NTcyNzUuLjE2YjNkNWQ0NDE1ZDI1ODUxNWY2NjBhODZhYzZjZWZiZGNkYjY0Y2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5t
bQpAQCAtNzksMTAgKzc5LDEwIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhW
ZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21f
cGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZXNdKTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHR5cGUpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbbV9w
YXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTp0eXBlXSkKLSAgICAgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0zMzgs
NyArMzM4LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JikKICAgICByZXR1cm4gMDsKIH0KIAotaW50NjRfdCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJikKK2lu
dDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiAwOwogfQpAQCAtNjA5LDcg
KzYwOSw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9y
RE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBvCiAjZW5kaWYgLy8gUEFTVEVCT0FSRF9T
VVBQT1JUU19QUkVTRU5UQVRJT05fU1RZTEVfQU5EX1RFQU1fREFUQQogCiAgICAgaWYgKE5TRGF0
YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJk
VHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1
dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAg
ICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAg
ICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYg
dHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2Fy
ZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTY3Miw3ICs2NzIsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKKyAgICAg
ICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHZh
bHVlKTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5n
ICopY29jb2FUeXBlXTsKICAgICB9KTsKIApAQCAtNzQ2LDcgKzc0Niw3IEBAIFZlY3RvcjxTdHJp
bmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiB0
eXBlKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdzOwogfQogCi1SZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBj
b25zdAogewogICAgIGlmICgoTlNJbnRlZ2VyKWluZGV4IDwgMCB8fCAoTlNJbnRlZ2VyKWluZGV4
ID49IFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZJdGVtc10pCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtNzU3LDcgKzc1Nyw3IEBAIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zCiAKICAgICBpZiAo
IVtwYXN0ZWJvYXJkSXRlbSBjb3VudF0pCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVj
dEF0SW5kZXg6MF0pOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVib2Fy
ZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7CiB9CiAKIFN0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGZkNTdkMjIy
YzJkNzQzMDE2MTE2MmMwZTJiODhlOWYxY2MzMTk5MTQuLjBkMjU0OThiODZiZWYxODVkMzc2OWQ1
YTViYzBiYzJmNzMxYzcwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tCkBAIC0zMzAsNyArMzMwLDcgQEAgc3RhdGljIFN0cmluZyByZWFkU3RyaW5n
QXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHMK
ICAgICByZXR1cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSwg
Y29udGV4dCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRp
b25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRl
eHQpCitzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRl
bUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRl
eCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKGl0ZW1J
bmRleCkKICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCgq
aXRlbUluZGV4LCB0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCAx
YjkxOTE0ZTNmNzI3YThlZjY4ZjllMWE2YWUxNTUzODZkOWZiYTJjLi5jM2I0ZDJkOTYyMTc0NzFj
NzM1ZTI0ZmU3YTVmOWQ5MjM3ZGY0NzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTY4LDEyICs2OCwxMiBAQCB2
b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQog
ICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgdHlwZXNdKTsKIH0K
IAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpCiB7CiAgICAgTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9y
VHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMo
W2RhdGEgY29weV0pLmdldCgpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRv
cHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkpOwogfQogCiBpbnQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpu
dW1iZXJPZkZpbGVzKCkgY29uc3QKQEAgLTIxOCw3ICsyMTgsNyBAQCBWZWN0b3I8U3RyaW5nPiBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0
cmluZyYgbwogewogICAgIExpc3RIYXNoU2V0PFN0cmluZz4gZG9tUGFzdGVib2FyZFR5cGVzOwog
ICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVib2FyZCBkYXRh
Rm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAg
IGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwor
ICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZl
cihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAg
ICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0
byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVi
b2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTI2Myw4ICsyNjMsOCBAQCBpbnQ2NF90IFBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAg
ICAgIGlmIChwbGF0Zm9ybVR5cGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJp
bmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6
Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgeworICAgICAgICAgICAg
aWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQog
ICAgICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkg
Zm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3Ry
aW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CkBAIC0zNDEsNyArMzQxLDcg
QEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMpCiAgICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQgZGVjbGFyZVR5
cGVzOmNyZWF0ZU5TQXJyYXkocGFzdGVib2FyZFR5cGVzKS5nZXQoKSBvd25lcjpuaWxdOwogfQog
Ci1pbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZm
ZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK2ludDY0X3QgUGxhdGZv
cm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAoIWNhbldyaXRl
UGFzdGVib2FyZFR5cGUocGFzdGVib2FyZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTQ0
Niw3ICs0NDYsNyBAQCBzdGF0aWMgU3RyaW5nIHdlYlNhZmVNSU1FVHlwZUZvck1vZGVyblBhc3Rl
Ym9hcmRUeXBlKE5TUGFzdGVib2FyZFR5cGUgcGxhdGZvcm1UeQogICAgIHJldHVybiB7IH07CiB9
CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJl
YWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8
U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgTlNQYXN0ZWJvYXJkSXRlbSAqaXRl
bSA9IGl0ZW1BdEluZGV4KGluZGV4KTsKICAgICBpZiAoIWl0ZW0pCkBAIC00NTQsNyArNDU0LDcg
QEAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVh
ZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnMKIAogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbaXRl
bSBkYXRhRm9yVHlwZTp0eXBlXSkgewogICAgICAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoZGF0
YS5jb3B5KTsKLSAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShu
c0RhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRh
LmdldCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUwNCw4ICs1MDQsOCBA
QCBzdGF0aWMgUmV0YWluUHRyPE5TUGFzdGVib2FyZEl0ZW0+IGNyZWF0ZVBhc3RlYm9hcmRJdGVt
KGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYQogICAgICAgICBpZiAoIXBsYXRmb3JtVHlwZSkKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxS
ZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0
byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZm
ZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1
ZmZlcikpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbaXRlbSBzZXREYXRhOnBsYXRm
b3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAg
ICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGUuaAppbmRleCA2ODEzZDVkYTdkY2IwZmMyNTlmMWJkMWVkMGE1NGMx
YTFhOWZkOWNmLi43OTY1NTRmNGM5NzY0NTE0MDFlMWExMjM3NDY4NzA0MGIyNGIxY2MxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIE1lZGlhU2FtcGxl
OwogY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRlOwogY2xhc3MgTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU7CiBjbGFzcyBQbGF0Zm9ybUF1ZGlvRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9w
dGlvbnM7CiAKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIH07CiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIEF1ZGlvVmlkZW9TZWxlY3RlZFRyYWNrcyBzZWxlY3RUcmFja3MoTWVkaWFT
dHJlYW1Qcml2YXRlJik7CiAKLSAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgZG91YmxlKT47CisgICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBkb3VibGUpPjsKICAgICB2aXJ0dWFsIHZvaWQgZmV0Y2hEYXRhKEZldGNo
RGF0YUNhbGxiYWNrJiYpID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUo
KSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcAppbmRleCBj
MjVkZjkxNTc0YTY1YmM0MWJkYjcwNjc4ZGM0NzcyNDgzNmRkMTQ1Li40OThkNGVlMTM0MGM0Yjk0
MDAxYjYwYzM0NDc5YjdmNzJkNWM4ZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1v
Y2suY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpn
ZW5lcmF0ZU1vY2tDb3VudGVyU3RyaW5nKCkKIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1v
Y2s6OmZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYnVm
ZmVyTG9jayB9OwogICAgICAgICBWZWN0b3I8dWludDhfdD4gdmFsdWUgeyBtX2J1ZmZlci5jaGFy
YWN0ZXJzOCgpLCBtX2J1ZmZlci5sZW5ndGgoKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCA1ZWQ5OGM0MTMwYjliZTAzNTIz
N2JmMmVmNTA2M2Y2YjJlY2RjMDU1Li45YzJjNzk3YjgxOTUxMmQ4ZmQ1NzkwMTVkYzNiNmU0MDVl
M2JjNjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyQ29jb2EuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRWaWRl
b1NhbXBsZUJ1ZmZlcihNZWRpYVNhbXBsZSYpOwogICAgIHZvaWQgYXBwZW5kQXVkaW9TYW1wbGVC
dWZmZXIoY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0
aW9uJiwgY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBzaXplX3QpOwogICAgIHZvaWQgc3RvcFJlY29y
ZGluZygpOwotICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4mJik7CisgICAgdm9pZCBmZXRjaERhdGEoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgZG91Ymxl
KT4mJik7CiAKICAgICB2b2lkIHBhdXNlKCk7CiAgICAgdm9pZCByZXN1bWUoKTsKQEAgLTEwNSw3
ICsxMDUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmaW5pc2hlZEZsdXNoaW5nU2FtcGxlcygp
OwogICAgIHZvaWQgY29tcGxldGVGZXRjaERhdGEoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiB0YWtlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlRGF0
YSgpOwogCiAgICAgYm9vbCBtX2hhc0F1ZGlvIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmlk
ZW8geyBmYWxzZSB9OwpAQCAtMTE4LDcgKzExOCw3IEBAIHByaXZhdGU6CiAKICAgICBMb2NrIG1f
ZGF0YUxvY2s7CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGEgV1RGX0dVQVJERURfQllf
TE9DSyhtX2RhdGFMb2NrKTsKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CisgICAg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
ZG91YmxlKT4gbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsKIAogICAgIFJldGFpblB0cjxD
TUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb247CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gbV9hdWRpb0NvbXByZXNz
b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EubW0KaW5kZXggYzcxYWE4NGFmYzFlYzEwMDNkOWM3NGI1ZDdmMTNmZWU0Mzc2NWUzYS4uODQ4
NDEwMGVhYzVlMTE1ZTliMGNmMDEyMGJhYmY3OGZiMWExMjc0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtNDkzLDcgKzQ5
Myw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0b3BSZWNvcmRpbmcoKQog
ICAgIH0pOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0
Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9mZXRjaERhdGFD
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwogCkBAIC01Mzgs
NyArNTM4LDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICBtX2RhdGEuYXBwZW5kKGRhdGEs
IHNpemUpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6dGFrZURhdGEoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1f
ZGF0YUxvY2sgfTsKICAgICByZXR1cm4gbV9kYXRhLnRha2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaAppbmRleCBhOWIyOWQ1OWU5YWEz
YjQ2NTU0MTViZDhiZWYwOTg0YzU0NGI3M2YwLi5jZGVlNjAzNTIzY2Q2Njk0NWY0MjhmNjk0Nzg5
NjBmNmZkNzRjNzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0RhdGFVUkxEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9E
YXRhVVJMRGVjb2Rlci5oCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
bmFtZXNwYWNlIERhdGFVUkxEZWNvZGVyIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCBiMTc0OTc0NDU0YmY3Mzk4OTA5Y2M4YmVhNGQwYTNi
OTU3OWE3ODgwLi5hMzdhMGQ4NzRmNzJiZjkxYmQ1MmMzYWM2YjU4NWQzMzNmMGZjYTNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtNDEyLDEz
ICs0MTIsMTMgQEAgdWludDY0X3QgRm9ybURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogICAg
IHJldHVybiAqbV9sZW5ndGhJbkJ5dGVzOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBl
bGVtZW50IDogbV9lbGVtZW50cykgewogICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8VmVjdG9yPHVpbnQ4X3Q+PihlbGVtZW50LmRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZmxhdHRlbigpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsK
IH0KIAogVVJMIEZvcm1EYXRhOjphc0Jsb2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IDQ2ZTI3MzUzM2MwZmY0NDE2NDA2ZDI0NTBl
ZTIwODgxYTU1ZmNiYWUuLjZlY2Q3ZjFiMDczYzM4MzM0NDM5OTUxNzQ1NTg5NDEwYWI4YTYxMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTMyLDcg
KzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIGNs
YXNzIERPTUZvcm1EYXRhOwogY2xhc3MgRmlsZTsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAKIHN0cnVjdCBG
b3JtRGF0YUVsZW1lbnQgewpAQCAtMjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBW
ZWN0b3I8Rm9ybURhdGFFbGVtZW50PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1l
bnRzOyB9CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJu
IG1fYm91bmRhcnk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBib29sIGFs
d2F5c1N0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBz
ZXRBbHdheXNTdHJlYW0oYm9vbCBhbHdheXNTdHJlYW0pIHsgbV9hbHdheXNTdHJlYW0gPSBhbHdh
eXNTdHJlYW07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuaAppbmRleCBmYWZkZmU4N2M4MzdlNjE1N2QyZjEzZTlhN2NhMDA5NjlkNTBiMWM3
Li40YmViY2I1MDk4ZDE1YzI5NjZlZDhjN2VlMTM2YWUzYTJhZTRhMjBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCkBAIC04NCw3ICs4
NCw3IEBAIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTeW5jaHJv
bm91c0xvYWRlck1lc3NhZ2VRdWV1ZTsKIGNsYXNzIFRpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmlu
ZGV4IDgxOGUxODE4NDUxOTY3YWI1MmQxOThkOTU4N2IyMGExNDQ0NzhkZDkuLmJhOGZkNGZmNGYx
ZTQxYzlhZDRmYTc0YTQyYmU0ZTJiZDExYWE4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zNiw3
ICszNiw3IEBAIFJlc291cmNlSGFuZGxlQ2xpZW50OjpSZXNvdXJjZUhhbmRsZUNsaWVudCgpID0g
ZGVmYXVsdDsKIAogUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgp
ID0gZGVmYXVsdDsKIAotdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBkaWRSZWNlaXZlRGF0
YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCmluZGV4IGI2MzM3ZDU2Y2U4Y2Q5
YmVmZjlkZmJlMTEzNjYyYmM3NzU2YjY1MzcuLmM0ZjA1NDg1ZjI4NzBiMTE2ZGE3Yzc2MGQzYzBm
Y2U5NmVjMmI0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgUmVzb3Vy
Y2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGVudW0gQ2FjaGVTdG9yYWdlUG9saWN5IHsKICAgICBTdG9y
YWdlQWxsb3dlZCwKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2Vu
dCovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50
OF90KiwgdW5zaWduZWQsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIHsgfQotICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAg
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlLmNwcAppbmRleCA4OGRlZGZhNDVjM2Y0YzQzYTM4MTUyODBkYTVhNDFlMjY5
NzViNzFmLi5mNzAwMzU1ZDU2OGIwNDJhNmFkZjEwNzBkYmI4MzgxOTI1MzY5NGFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRp
ZFJlY2VpdmVEYXRhKENGRAogICAgICAgICAKICAgICAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAt
IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6
OmRpZFJlY2VpdmVEYXRhKGhhbmRsZT0lcCkgKCVzKSIsIGhhbmRsZSwgaGFuZGxlLT5maXJzdFJl
cXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBoYW5kbGUt
PmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKGhhbmRsZSwgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEuZ2V0KCkpLCBvcmlnaW5hbExlbmd0aCk7CisgICAgICAgIGhhbmRsZS0+
Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoaGFuZGxlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLmdldCgpKSwgb3JpZ2luYWxMZW5ndGgpOwogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVz
c2FnZVF1ZXVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IGUyYzM1ZWQzMTBi
MzExMDY1MTE2YzhmYzg2YzJlNDAyOWE4MmM5YTQuLjAwOGUyMjZmZjkxOTAwNGI0NTE0OGEyNDcy
NjExNjE1MDk4OTYyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTI0Myw3
ICsyNDMsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
dm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpIGZpbmFsCisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBmaW5hbAogICAg
IHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKCFtX2dlbmVy
YXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgKaW5kZXggNDA0ODg1YWU2Mzc2ZmNlNjgwNDBkMmEw
NWMwMGJlYzQ3ZmUxNmFhOC4uY2U0YzI1NDVjZGUwZjJmNDZhYzMzOGY5NmM0OTA4OGViNDVkMDky
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZp
ZXc7CiBjbGFzcyBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ7CiBlbnVtIGNsYXNz
IFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2sgOiBib29sOwpAQCAtMTU4LDcgKzE1OCw3IEBAIFdF
QkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsK
IC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSopcmVzb3VyY2Ugc2VudEJ5dGVzOih1bnNpZ25lZCBsb25nIGxvbmcpYnl0ZXNTZW50IHRvdGFs
Qnl0ZXNUb0JlU2VudDoodW5zaWduZWQgbG9uZyBsb25nKXRvdGFsQnl0ZXNUb0JlU2VudDsKIC0g
KHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSop
cmVzb3VyY2UgcmVjZWl2ZWRSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpcmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAt
IChCT09MKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2Uq
KXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmKXJlc3BvbnNlOwotLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYpZGF0YTsKKy0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJilkYXRhOwogLSAodm9pZClyZXNvdXJjZToobnVs
bGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJl
ZGlyZWN0Oihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSByZXF1ZXN0
OihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiljb21w
bGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0aEVy
cm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKIC0gKHZvaWQpcmVzb3Vy
Y2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbG9h
ZEZhaWxlZFdpdGhFcnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVO
U1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dl
YkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggZTU5MjI3ZTM4YWEwNjEyZDkyN2M4MjU5ZDAxNDdk
YTRiZjZhNzY5Yi4uOGM4OWQ5Mzg2NTc5MzNhMWRhMjkwMzE5OTE1ODRjNGRiMmZhYTlhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNV
UkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtNjA4LDcgKzYwOCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1
ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
c291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3Bv
bnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVk
IGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250
cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJv
ciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJp
ZGU7CkBAIC02NTIsNyArNjUyLDcgQEAgYm9vbCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tD
bGllbnQ6OnNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmMKICAgICByZXR1
cm4gW21fdGFzayByZXNvdXJjZTomcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTpyZXNwb25z
ZV07CiB9CiAKLXZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCit2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXNrTG9jayB9
OwogICAgIGlmICghbV90YXNrKQpAQCAtOTE1LDcgKzkxNSw3IEBAIC0gKEJPT0wpcmVzb3VyY2U6
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29u
c3QgUmVzCiAgICAgcmV0dXJuIHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFt
ZTo6Q29udGVudFJhbmdlKS5pc0VtcHR5KCk7CiB9CiAKLS0gKHZvaWQpcmVzb3VyY2U6KFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKWRhdGEKKy0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJilkYXRhCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8
IHJlc291cmNlID09IF9yZXNvdXJjZSk7CiAgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9w
ZXJhdGlvbjpbc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUo
ZGF0YSldIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxEb3dubG9hZC5jcHAKaW5kZXggYzM2ZTFmODg3NjQzMDQ2MGNlNzUwYTNiOGM2NThjNzM0
ZWNiMTUwOC4uMzQ5NDQ1OTI1NGFjOTNmYzE5Y2IxMjE1MGE2MWJjMmJjZWQwMmQ2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9h
ZC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2Vp
dmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlc3BvbnNlJiYgcgogfQogCiAK
LXZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNl
aXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaAppbmRleCBhM2FhMGNm
NWZjZDI5NTViYjdiMTZiMTFhMWE4MWNhNzRhZTYxYzhkLi5jZGU0NDQ1Nzc1Zjc0NDIzMzA1MzBi
NjViMTM1N2JhNmJmZDliYjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAg
ICAgUmVmPEN1cmxSZXF1ZXN0PiBjcmVhdGVDdXJsUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmKTsK
ICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9u
ZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGN1cmxEaWRSZWNl
aXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+
JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3Qm
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJs
RGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJy
b3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5j
cHAKaW5kZXggZDYzNWY3OWNkMWVjNjIxYWRmZWI2ZGNjNDkzNmVlZWY1MGNmOWFkYy4uMDkwZDAz
OWJhNDVkZTEwMjhlZGY3Njg0YzZkN2QyZjI5NmUzYTM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIEN1cmxNdWx0aXBhcnRIYW5kbGU6OkN1cmxNdWx0aXBh
cnRIYW5kbGUoQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudCYgY2xpZW50LCBjb25zCiAKIH0KIAot
dm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChtX3N0YXRlID09
IFN0YXRlOjpFbmQpCiAgICAgICAgIHJldHVybjsgLy8gVGhlIGhhbmRsZXIgaXMgY2xvc2VkIGRv
d24gc28gaWdub3JlIGV2ZXJ5dGhpbmcuCkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBDdXJsTXVs
dGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSgpCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVu
ZCkgewogICAgICAgICAvLyBJdCBzZWVtcyB3ZSBhcmUgc3RpbGwgbm90IGF0IHRoZSBlbmQgb2Yg
dGhlIHByb2Nlc3NpbmcuCiAgICAgICAgIC8vIFB1c2ggb3V0IHRoZSByZW1haW5pbmcgZGF0YS4K
LSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOworICAgICAgICBtX2NsaWVu
dC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShtX2J1ZmZlcikpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmQ7CiAgICAgfQogCkBA
IC0yMzQsMTMgKzIzNCwxMyBAQCBib29sIEN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250
ZW50KCkKIAogICAgICAgICBpZiAoIWNoZWNrRm9yQm91bmRhcnkoYm91bmRhcnlTdGFydCwgbGFz
dFBhcnRpYWxNYXRjaCkgJiYgYm91bmRhcnlTdGFydCA9PSBub3RGb3VuZCkgewogICAgICAgICAg
ICAgLy8gRGlkIG5vdCBmaW5kIHRoZSBib3VuZGFyeSBzdGFydCwgYWxsIGRhdGEgdXAgdG8gdGhl
IGxhc3RQYXJ0aWFsTWF0Y2ggaXMgb2suCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZl
RGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVy
LmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOworICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVj
ZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEo
KSwgbGFzdFBhcnRpYWxNYXRjaCkpOwogICAgICAgICAgICAgbV9idWZmZXIucmVtb3ZlKDAsIGxh
c3RQYXJ0aWFsTWF0Y2gpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAK
ICAgICAgICAgLy8gVGhlcmUgd2FzIGEgYm91bmRhcnkgc3RhcnQgKG9yIGVuZCB3ZSdsbCBjaGVj
ayB0aGF0IGxhdGVyKSwgcHVzaCBvdXQgcGFydCBvZiB0aGUgZGF0YS4KLSAgICAgICAgbV9jbGll
bnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKKyAgICAgICAgbV9jbGllbnQu
ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVy
LmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOwogICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgYm91
bmRhcnlTdGFydCArIG1fYm91bmRhcnkubGVuZ3RoKCkpOwogICAgICAgICBtX3N0YXRlID0gU3Rh
dGU6OkVuZEJvdW5kYXJ5OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCmluZGV4IDVjMDhiY2M1
ZWIzZTRiYmNjMDI5YjQ3Njc4NjhmNDNlMmY5NWMzNDEuLjlhMWExYmJkMTkzOGExNGY2OWZjY2Vl
M2YwZjg5Yjk3YTRhMjE4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaApAQCAtMzQsNyArMzQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQ7
CiBjbGFzcyBDdXJsUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEN1cmxN
dWx0aXBhcnRIYW5kbGUoQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudCYsIGNvbnN0IFN0cmluZyYp
OwogICAgIH5DdXJsTXVsdGlwYXJ0SGFuZGxlKCkgeyB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkQ29tcGxldGUoKTsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCmluZGV4IGZkMTNmZDM4MTMxNDNj
YjI2NTliOGZkMWRiMjQ0NDc2NWU5OGE1ODAuLmM4MTM4ODZhOGQ1YzVmYTZjMTJkMTQxMzMxOTEw
MWFmMjUwMmEyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaApAQCAtMjgsMTIg
KzI4LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxSZXNwb25zZTsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxTaGFyZWRC
dWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlw
YXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAKIHByb3RlY3RlZDoKICAg
ICB+Q3VybE11bHRpcGFydEhhbmRsZUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggYWNkODhlMWIw
MjliOWIxZTdmMTRiN2QxNDAzMjkyNmI5MzE3NWEwZi4uZDgyZGQzYzEwYWM2NDcxMzU5OTFmZDdh
ZTY2OTdlOWQ4ZTMxM2U4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgc2l6ZV90IEN1
cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmIGhlYWRlcikKIAogLy8gY2FsbGVk
IHdpdGggZGF0YSBhZnRlciBhbGwgaGVhZGVycyBoYXZlIGJlZW4gcHJvY2Vzc2VkIHZpYSBoZWFk
ZXJDYWxsYmFjawogCi1zaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQorc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxl
dGVkT3JDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00NDQsNyArNDQ0LDcgQEAg
dm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZUhlYWRlckZyb21NdWx0aXBhcnQoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGhlYWRlcnMpCiAgICAgaW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3Bv
bnNlLCBBY3Rpb246Ok5vbmUpOwogfQogCi12b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0
YUZyb21NdWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxSZXF1
ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChpc0NvbXBsZXRlZE9yQ2FuY2VsbGVkKCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTc3Nyw3ICs3NzcsNyBAQCBjb25zdCBTdHJpbmcmIEN1cmxSZXF1ZXN0
OjpnZXREb3dubG9hZGVkRmlsZVBhdGgoKQogICAgIHJldHVybiBtX2Rvd25sb2FkRmlsZVBhdGg7
CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVk
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRh
VG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZG93bmxvYWRNdXRleCB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuaAppbmRleCA2YmQ4YTZiZmJhMzc1MmNlZGRkYmM1MDA5ZWFlODNjNGYwZWVkNjQxLi4zYzdj
ZGQ4ODNlYjYyYmZlOTJjZjA0NDVlZDI5YmQyNmVjZTNlOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaApAQCAtNDIsNyArNDIs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDdXJsUmVxdWVzdENsaWVudDsKIGNsYXNz
IE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3luY2hyb25vdXNM
b2FkZXJNZXNzYWdlUXVldWU7CiAKIGNsYXNzIEN1cmxSZXF1ZXN0IDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPEN1cmxSZXF1ZXN0PiwgcHVibGljIEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xp
ZW50LCBwdWJsaWMgQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudCB7CkBAIC0xMjIsOSArMTIyLDkg
QEAgcHJpdmF0ZToKICAgICBDVVJMKiBzZXR1cFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAgICAgc2l6
ZV90IHdpbGxTZW5kRGF0YShjaGFyKiwgc2l6ZV90LCBzaXplX3QpOwogICAgIHNpemVfdCBkaWRS
ZWNlaXZlSGVhZGVyKFN0cmluZyYmKTsKLSAgICBzaXplX3QgZGlkUmVjZWl2ZURhdGEoUmVmPFNo
YXJlZEJ1ZmZlcj4mJik7CisgICAgc2l6ZV90IGRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0
KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YUZyb21NdWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ29tcGxldGVUcmFuc2ZlcihDVVJMY29kZSkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRDYW5jZWxUcmFuc2ZlcigpIG92ZXJyaWRlOwogICAgIHZvaWQgZmlu
YWxpemVUcmFuc2ZlcigpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIHByaXZhdGU6CiAgICAgTmV0d29y
a0xvYWRNZXRyaWNzIG5ldHdvcmtMb2FkTWV0cmljcygpOwogCiAgICAgLy8gRG93bmxvYWQKLSAg
ICB2b2lkIHdyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOworICAgIHZvaWQgd3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgY2xvc2VEb3dubG9hZEZpbGUoKTsKICAg
ICB2b2lkIGNsZWFudXBEb3dubG9hZEZpbGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAppbmRleCAwOGM4
NmM3ZDQ2ODRiYTZmNzhkNjE2YjY4ZDA2OTA0YzM3YTk2Njc3Li4zNDc5ODMyZjU3NmQ0MTI4YWZh
NTFjODE0MjRjY2ZkNzQxZGY2YWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaApAQCAtMzQsNyArMzQsNyBA
QCBjbGFzcyBDdXJsUmVxdWVzdDsKIGNsYXNzIEN1cmxSZXNwb25zZTsKIGNsYXNzIE5ldHdvcmtM
b2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsUmVxdWVzdENsaWVudCB7
CiBwdWJsaWM6CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBj
dXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50
LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9uc2Um
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVz
dCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFJl
Y2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3
b3JrTG9hZE1ldHJpY3MmJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkRmFpbFdpdGhF
cnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYpID0g
MDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCBlZDA1ZGU3
YWVlOTMyMWU5ZmQwMzgxZmM3M2RjZTI3OTY3ZGZjZDgxLi4zMDVkNGU1YzlmYzI3MDc3NTc4N2Iw
ZjlhOTE5NzljMDg4ODlhOGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5j
cHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpj
dXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQogICAgIH0pOwog
fQogCi12b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZl
cihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAppbmRleCA2ZDU1
ODY0NDUyZmQ0NmVlNzgwMGU5MzEyM2IxMjhiZGM2NGNlNDg3Li5kYWYwYTU5YTRlNTg2ZDcxMTRh
YmI0ZTVlZjljNTRmNmE4YmVmYzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUu
aApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShD
dXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcg
bG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIGZpbmFsOwogICAgIHZvaWQgY3VybERpZFJlY2VpdmVS
ZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSBmaW5hbDsKLSAgICB2b2lkIGN1
cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShD
dXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxE
aWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0
ZUluZm8mJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCBiYzRk
YWFmYmYyMWExNWMwZTZkZDFhY2Q0NjIyYWZhNTZiN2I4ZDVkLi4xZjRhMTkzMTMzMTJjNWRkNmE0
OGFkNTMzOWRmZDJjM2I1ZGVjMjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCkBA
IC0zMSwxMiArMzEsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBMZWdhY3lQcmV2
aWV3TG9hZGVyQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8TGVnYWN5UHJldmlld0xvYWRlckNs
aWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQo
KSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hh
cmVkQnVmZmVyJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoKSB7IH0KICAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lY
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNw
cAppbmRleCAwZmI0NTAwNzJmYTEwNDIyZjZhOWZlNDMyYzM4MWQzZDE5NjEzZTYwLi5kNjMyMjI1
NjRlZjA3NGNkYmNkN2VlMjEzZWE5OTE1NzQwN2UzNTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCkBAIC0zNCw3ICszNCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1Jl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVh
dGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmls
ZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY4LDcgKzY4LDcg
QEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICBpZiAodG90YWxCeXRlc1JlYWQgIT0gYnl0
ZXNUb1JlYWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgcmV0dXJuIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAK
aW5kZXggYzQ2MGY1ZmE0MGRkYTIxZGViNDYzODNhOTBiZWE2NjUzYjMwYzVmMC4uNDUzNjgxYmRh
YjJlNGEwNWEyMWZjNjhhOTQzNzAwZTA2Yzk5N2ExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtMzU2LDcgKzM1Niw3IEBAIFN0cmluZyBQ
YXN0ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKIAog
c3RydWN0IFBhc3RlYm9hcmRGaWxlQ291bnRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVy
IHsKICAgICB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbCB7ICsrY291bnQ7
IH0KLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJikgZmluYWwgeyArK2NvdW50OyB9CisgICAgdm9pZCByZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSBmaW5hbCB7ICsrY291bnQ7IH0KIAogICAgIHVuc2lnbmVkIGNvdW50IHsgMCB9OwogfTsK
QEAgLTk3NCw3ICs5NzQsNyBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVE
ZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIG1l
bU9iajsKIH0KIAotc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChT
aGFyZWRCdWZmZXIqIGRhdGEpCitzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVD
b250ZW50KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgSEdMT0JBTCBtZW1P
YmogPSBHbG9iYWxBbGxvYyhHUFRSLCBkYXRhLT5zaXplKCkpOwogICAgIGlmICghbWVtT2JqKSAK
QEAgLTk5NCw3ICs5OTQsNyBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVD
b250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbWVtT2JqOwogfQogCi1zdGF0
aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmlu
ZyYgZmlsZU5hbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSkKK3N0YXRpYyBIR0xPQkFMIGNyZWF0ZUds
b2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAoZmlsZU5hbWUuaXNFbXB0eSgpIHx8
ICFkYXRhKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEwNzEsNyArMTA3MSw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6d3JpdGVJbWFnZVRvRGF0YU9iamVjdChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBV
UkwmIHVybCkKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8ICFjYWNoZWRJbWFnZS0+aW1hZ2VGb3JS
ZW5kZXJlcihlbGVtZW50LnJlbmRlcmVyKCkpIHx8ICFjYWNoZWRJbWFnZS0+aXNMb2FkZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgU2hhcmVkQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGNhY2hl
ZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSktPmRhdGEoKTsKKyAg
ICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGNhY2hlZEltYWdlLT5pbWFn
ZUZvclJlbmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSktPmRhdGEoKTsKICAgICBpZiAoIWltYWdl
QnVmZmVyIHx8ICFpbWFnZUJ1ZmZlci0+c2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKaW5kZXggMDcz
OWRkZjQ0YmYwM2M1ZjE5OTFlZTI2NmJkYTFkNWQ1ZDczOGQxNy4uODljZjZhMGJiNjU4NzA4MzQ1
NDE0NjA2NjdjNTE1YThhYWNmODcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDUsNyArNDUsNyBAQCBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKGNvbgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVzdWx0OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
c3VsdDsKICAgICBEV09SRCBieXRlc1RvUmVhZCA9IEdldEZpbGVTaXplKGZpbGVIYW5kbGUsIDAp
OwogICAgIERXT1JEIGxhc3RFcnJvciA9IEdldExhc3RFcnJvcigpOwogCkBAIC01Myw3ICs1Myw3
IEBAIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZm
ZXIoYnl0ZXNUb1JlYWQpOwogICAgICAgICBEV09SRCBieXRlc1JlYWQ7CiAgICAgICAgIGlmIChS
ZWFkRmlsZShmaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5dGVzUmVh
ZCwgMCkgJiYgYnl0ZXNUb1JlYWQgPT0gYnl0ZXNSZWFkKQotICAgICAgICAgICAgcmVzdWx0ID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAg
ICAgICByZXN1bHQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFkIGNv
bnRlbnRzIG9mIGZpbGUgJXMsIEdldExhc3RFcnJvcigpID0gJXUiLCBmaWxlUGF0aC5hc2NpaSgp
LmRhdGEoKSwgR2V0TGFzdEVycm9yKCkpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA2NTI3MjUwZTVhYmNkZGJhMDAwMmIwZmJjZTY1
NjVkMmY1ODY1ZDA2Li44NGZhMjljZTFmMzAwZmUyOTBiMDQxNDY0OGYwZjcyOTBhN2NiZWJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtNjMsNyArNjMs
NyBAQCBib29sIE1vY2tDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSkKICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShrZXlTeXN0ZW0s
ICJvcmcud2Via2l0Lm1vY2siKTsKIH0KIAotdm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1Rv
U2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
JiYga2V5cykKK3ZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29u
c3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBrZXlz
KQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXNzaW9ucy5hZGQoaWQsIFdURk1vdmUoa2V5
cykpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9p
ZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlk
LCBWZWN0b3I8UmVmPFNoYXJlZEIKICAgICAgICAgdmFsdWUuYXBwZW5kKFdURk1vdmUoa2V5KSk7
CiB9CiAKLVZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtl
eXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQorVmVjdG9yPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldp
dGhJRChjb25zdCBTdHJpbmcmIGlkKQogewogICAgIGF1dG8gaXQgPSBtX3Nlc3Npb25zLmZpbmQo
aWQpOwogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25zLmVuZCgpKQpAQCAtODMsNyArODMsNyBAQCBW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJvbVNl
c3Npb25XaXRoSUQoY29uc3QgU3RyaQogICAgIHJldHVybiBXVEZNb3ZlKGl0LT52YWx1ZSk7CiB9
CiAKLWNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4qIE1vY2tDRE1GYWN0b3J5OjprZXlz
Rm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdAorY29uc3QgVmVjdG9yPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4qIE1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lv
bldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdAogewogICAgIGF1dG8gaXQgPSBtX3Nlc3Np
b25zLmZpbmQoaWQpOwogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25zLmVuZCgpKQpAQCAtMjAyLDcg
KzIwMiw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0
dXJuIG1fZmFjdG9yeSAmJiBtX2ZhY3RvcnktPnN1cHBvcnRzU2Vzc2lvbnMoKTsKIH0KIAotYm9v
bCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgTW9ja0NETTo6c3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewogICAgIGlmICghc3VwcG9ydGVk
SW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJl
c3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHJl
c3BvbnNlLm1ha2VDb250aWd1b3VzKCk7CiAgICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUko
YnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCkBAIC0yNzAsNyArMjcwLDcgQEAgdm9p
ZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRp
YUtleVN5c3RlbUNvbmZpZ3VyYXQKICAgICBjYWxsYmFjayhpbml0aWFsaXplKCkpOwogfQogCi12
b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1vY2tD
RE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIFN0
cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOwogCkBAIC0yOTgsNyArMjk4LDcgQEAg
TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRyPE1v
Y2tDRE1JbnN0YW5jZT4mJiBpbnN0YW4KIHsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNz
aW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNl
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVz
dExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VD
YWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9p
bnN0YW5jZSA/IG1faW5zdGFuY2UtPmZhY3RvcnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0
b3J5KSB7CkBAIC0zMjQsNyArMzI0LDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVMKICAgICBj
YWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShsaWNlbnNlLmRhdGEoKSwgbGljZW5zZS5sZW5n
dGgoKSksIHNlc3Npb25JRCwgZmFsc2UsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKIH0KIAot
dm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Np
b246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxi
YWNrJiYgY2FsbGJhY2spCiB7CiAgICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2luc3Rh
bmNlID8gbV9pbnN0YW5jZS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3Rvcnkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAppbmRleCBmNWNkYTUwNWNm
MmEzM2MxMDVmMDI1Yzk3YzkzNTBhOTY4Njk4ZTFlLi5kOTZjMTU2ZWU0ZDI3OTFiOGIwOTk4ZGFm
OTQwZWM3NTM3ODA3YmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5o
CkBAIC03Nyw5ICs3Nyw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzU2Vzc2lvbldpdGhJRChj
b25zdCBTdHJpbmcmIGlkKSB7IHJldHVybiBtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKTsgfQogICAg
IHZvaWQgcmVtb3ZlU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSB7IG1fc2Vzc2lvbnMu
cmVtb3ZlKGlkKTsgfQotICAgIHZvaWQgYWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJp
bmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYpOwotICAgIGNvbnN0IFZlY3RvcjxS
ZWY8U2hhcmVkQnVmZmVyPj4qIGtleXNGb3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQp
IGNvbnN0OwotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gcmVtb3ZlS2V5c0Zyb21TZXNz
aW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpOworICAgIHZvaWQgYWRkS2V5c1RvU2Vzc2lvbldp
dGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PiYmKTsKKyAgICBjb25zdCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pioga2V5
c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3Q7CisgICAgVmVjdG9yPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gcmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNv
bnN0IFN0cmluZyYgaWQpOwogCiBwcml2YXRlOgogICAgIE1vY2tDRE1GYWN0b3J5KCk7CkBAIC05
Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhbkNyZWF0ZUluc3RhbmNlcyB7IHRy
dWUgfTsKICAgICBib29sIG1fc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMgeyB0cnVlIH07CiAg
ICAgYm9vbCBtX3N1cHBvcnRzU2Vzc2lvbnMgeyB0cnVlIH07Ci0gICAgSGFzaE1hcDxTdHJpbmcs
IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IG1fc2Vzc2lvbnM7CisgICAgSGFzaE1hcDxTdHJp
bmcsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBtX3Nlc3Npb25zOwogfTsK
IAogY2xhc3MgTW9ja0NETSA6IHB1YmxpYyBDRE1Qcml2YXRlIHsKQEAgLTEyMSw4ICsxMjEsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKICAgICBib29s
IHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBw
b3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKICAgICBXZWFr
UHRyPE1vY2tDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpNb2NrOyB9CiAgICAgdm9p
ZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0
ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNh
dGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZv
aWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1
Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBm
aW5hbDsKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmlu
YWw7CkBAIC0xNTQsOCArMTU0LDggQEAgcHVibGljOgogICAgIE1vY2tDRE1JbnN0YW5jZVNlc3Np
b24oV2Vha1B0cjxNb2NrQ0RNSW5zdGFuY2U+JiYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgcmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwot
ICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQg
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFj
ayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5z
ZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJh
Y2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2
b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VU
eXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAppbmRleCBmYzEyN2I3YjY3YmVhNzM0NDYz
Y2QyZDViMDc1NmI1OWJlYmE1OGFlLi4wNTlmM2EzODZiNmNmNWZhNzliM2MxODk3MDE1MzEzZjdj
ZGI0ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNw
cApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OmZpbmlzaGVkQWRk
aW5nRGF0YSgpCiAgICAgbWF5YmVEZXRlcm1pbmVTdGF0dXMoRGVjaXNpb25Qb2ludDo6QWZ0ZXJG
aW5pc2hlZEFkZGluZ0RhdGEpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBNb2NrQ29udGVudEZp
bHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBNb2NrQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKIHsKICAgICBBU1NF
UlQoZGlkQmxvY2tEYXRhKCkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3Jl
cGxhY2VtZW50RGF0YS5kYXRhKCksIG1fcmVwbGFjZW1lbnREYXRhLnNpemUoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKaW5kZXggNDExYTMwMDk0N2I1Mzll
MjZhYTZjNjRhMDA5MzI5MmU5ZmZiZTZiOS4uNjM1YWM4NGJlNzkzODQ3YWE1NzIxM2QwMWZmYzFl
NzRmNzZiNzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVu
dEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIu
aApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZERhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFk
ZGluZ0RhdGEoKSBvdmVycmlkZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERh
dGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVw
bGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNv
bnN0IG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1NjcmlwdEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaApp
bmRleCAzN2YxYTQ4N2Y4YzUyYjQ0ZWEyNDMwY2NjZDFmYTAyNWVlOTFhYWMzLi5mZDJjMWFlMmY2
M2I2MGQ3NGMzMGQyNDJhOTg5YTBiZmQ5MWRlNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2Ny
aXB0QnVmZmVyLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgU2NyaXB0QnVmZmVyIHsKIHB1Ymxp
YzoKICAgICBTY3JpcHRCdWZmZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICBTY3JpcHRCdWZmZXIoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgU2NyaXB0QnVmZmVyKFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3Zl
KGJ1ZmZlcikpCiAgICAgewogICAgIH0KQEAgLTQ4LDkgKzQ4LDkgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogICAg
IFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KKyAgICBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQo
KS5nZXQoKTsgfQogCi0gICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0
dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVy
LmNvcHkoKSkgOiBudWxscHRyKTsgfQorICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBj
b25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4obV9idWZmZXIuY29weSgpKSA6IG51bGxwdHIpOyB9CiAgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KICAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5pc0VtcHR5KCk7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDg1ZTc2
MzgzZGFiMzUzYTRmYzRiMDlkMTI3NzE4NWEwMGU5ZTIzOTcuLjQwNjZmYjM1MmViNWIwODdkNWQ4
ZDQ3ZDgwMmZkMmMwYTZhODBmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBXb3JrZXJGb250
TG9hZFJlcXVlc3Q6OmlzUGVuZGluZygpIGNvbnN0CiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVz
dDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFt
X2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRp
bmcpIHsKLSAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNE
YXRhOworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YTsKICAgICAg
ICAgaWYgKG1fZGF0YS0+Z2V0KCkpCiAgICAgICAgICAgICBjb250aWd1b3VzRGF0YSA9IG1fZGF0
YS0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElm
TmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4
IDBiY2Q5NzZlZGE5ZDRhNzgxMDllNjI2M2Q4MTA4YzM3NTA3NThiNzcuLjhhOTEzOGQyM2IwZDVk
ZWM1M2QyOTkwZGVkNWRiNzc2MzU0ZTUyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApA
QCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xpZW50
PiYmIGNsaWVudCwgRXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+LCBzCiAgICAgYXV0byBib2R5
ID0gcmVzcG9uc2UtPmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0g
KFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZUZv
cm1EYXRhQW5kRmluaXNoKFdURk1vdmUoZm9ybURhdGEpKTsKLSAgICB9LCBbJl0gKFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChSZWY8U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShi
dWZmZXIpKTsKICAgICAgICAgY2xpZW50LT5kaWRGaW5pc2goKTsKICAgICB9LCBbJl0gKHN0ZDo6
bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAppbmRleCBlYjI2NmI2YzA3ZTY3M2Q5
MTY2Y2FjZTZiMzM5MTlkODBlYmJmMzFjLi4wOTc1NDNlMWIzYjMwZmYzMTQ3ZDkyMzJhNThjZTRh
OWU2MmYzZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaApAQCAtNDIsNyArNDIsNyBAQCBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlOwogY2xhc3MgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNw
YWNlIFNlcnZpY2VXb3JrZXJGZXRjaCB7CiBjbGFzcyBDbGllbnQgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8Q2xpZW50LCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CkBAIC01
MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVkaXJl
Y3Rpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3Jt
RGF0YT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaCgpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdl
LmNwcAppbmRleCAwM2E3MjExZmNlYmIxZjhlNDYyOGQ1OWVhNDViY2NiNzg4MDJmYjQxLi45YThm
YjM1Y2E1MzYxMDViYjZkNmZjNDZlZTEyMjQ1OTMzZjcwYmY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3Bw
CkBAIC0xMjcsNyArMTI3LDcgQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6cmV0cmll
dmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXMKICAgICB9CiAKICAg
ICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBkaXNhYmxlIGZpbGUgbWFwcGluZyBpbiBtb3JlIGNh
c2VzIHRvIGF2b2lkIGhhdmluZyB0b28gbWFueSBmaWxlIGRlc2NyaXB0b3JzIG9wZW4/Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVN
b2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRV
c2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGlu
Zzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOwogICAgIHJldHVy
biBidWZmZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vz
c29yTGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQu
Y3BwCmluZGV4IGEzMGY1MTQxYThlMTRmMjc4ZjViOTEzMTczM2QyNjE0NjI4MTJjYjYuLmRmOGFi
ZTQyNmUwNjcxNzFhZmZmOTBlMDMzMzg1MDU5ZjMzMTAzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB4
bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxDaGFyKiB1cmksCiAgICAgICAgIFJlc291
cmNlRXJyb3IgZXJyb3I7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAKLSAg
ICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICAgICAgYm9vbCByZXF1ZXN0QWxsb3dlZCA9IGds
b2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5mcmFtZSgpICYmIGdsb2JhbENhY2hlZFJlc291cmNl
TG9hZGVyLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKICAg
ICAgICAgaWYgKHJlcXVlc3RBbGxvd2VkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggZGIyNmJiMzlkZDVh
Zjk5ZjMxZTY2MmMzNGNlZDNkYmY5Njc3ZjVhYi4uYThjM2UxOGU0N2FlY2FkMGEwMjJhMDg0YzQ5
YTIxZjZjNzE0YzM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0YXRpYyB2
b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1cmkpCiAgICAgICAgIHJldHVybiAmZ2xvYmFsRGVz
Y3JpcHRvcjsKIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YTsKIAogICAgIHsKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNw
cAppbmRleCA1NzMwNjdlM2RkMDUwZmViN2M1NzlkMDAxMDJlZTlmNjA0NWI1MzEzLi4zMWMyZDc2
ZjJlZTFiOWQyNDliMDAxYjdlZmY4OTJlYzJhNzQ1NmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCkBA
IC02MSw3ICs2MSw3IEBAIFJlbW90ZUNETUluc3RhbmNlUHJveHk6On5SZW1vdGVDRE1JbnN0YW5j
ZVByb3h5KCkKICAgICBtX2luc3RhbmNlLT5jbGVhckNsaWVudCgpOwogfQogCi12b2lkIFJlbW90
ZUNETUluc3RhbmNlUHJveHk6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQo
Y29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQordm9pZCBS
ZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2Vp
dmVkKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5p
dERhdGEpCiB7CiAgICAgaWYgKCFtX2NkbSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgK
aW5kZXggOGU3M2QzZDlhNjRiOThiZmMwMDkzNmNkNDdjNGMyNWE5Mjc5ZjJjOC4uMDJjNWNkMzdh
ZTU0ODAyZjZkMGM4ZGNjY2IwYmE4MGNmMzM4OGMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCkBAIC02Niw3
ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRyPFJl
bW90ZUNETVByb3h5PiYmLCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+JiYsIFVuaXF1ZVJlZjxS
ZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+JiYsIFJlbW90ZUNETUluc3RhbmNlSWRlbnRp
Zmllcik7CiAKICAgICAvLyBDRE1JbnN0YW5jZUNsaWVudAotICAgIHZvaWQgdW5yZXF1ZXN0ZWRJ
bml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25E
YXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKaW5kZXggZTU3NjZjMjMzNGNmZDM4OTMx
MGNkNGIyMTcyM2NhYmEzNzQyZmM3Yy4uZGU4MjczYjljZjUwMGE0ZDY2YWExNDRlZGUwMjAxZWVm
MWVkODYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCkBAIC03MCw3ICs3MCw3
IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlcXVlc3RMaWNlbnNlKExp
Y2Vuc2VUeXBlIHR5cGUsIEF0b21TdHJpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG1fc2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0YS5i
dWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlv
bildIChSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vz
c1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uLT5yZXF1ZXN0TGljZW5z
ZSh0eXBlLCBpbml0RGF0YVR5cGUsIGluaXREYXRhLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCks
IFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5k
aXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRl
ZCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShtZXNzYWdlKSwgc2Vzc2lv
bklkLCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNz
aW9uOjpTdWNjZWVkZWQpOwogICAgIH0pOwogfQpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgQ2xvc2VTCiAKIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJl
bW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBl
LCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYgY29tcGxldGlvbikKIHsKLSAgICBtX3Nlc3Np
b24tPnJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSwgW2NvbXBsZXRpb24gPSBXVEZN
b3ZlKGNvbXBsZXRpb24pXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBr
ZXlTdGF0dXNlcywgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBleHBpcmVkU2Vz
c2lvbnNEYXRhLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11
dGFibGUgeworICAgIG1fc2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBl
LCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChDRE1JbnN0YW5jZVNlc3Npb246
OktleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4mJiBleHBpcmVkU2Vzc2lvbnNEYXRhLCBDRE1JbnN0YW5jZVNlc3Np
b246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICBzdGQ6Om9wdGlv
bmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlOwog
ICAgICAgICBpZiAoZXhwaXJlZFNlc3Npb25zRGF0YSkKICAgICAgICAgICAgIGV4cGlyZWRTZXNz
aW9uRGF0YVJlZmVyZW5jZSA9IElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKCpleHBpcmVk
U2Vzc2lvbnNEYXRhKSk7CkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6dXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYga2V5U3Rh
dHUKICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpVcGRhdGVLZXlTdGF0dXNlcyhXVEZNb3Zl
KGtleVN0YXR1c2VzKSksIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIHR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgbWVzc2FnZSkKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6
OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFtX2NkbSkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHkuaAppbmRleCA4YTYxZjlkNWZhYmM4NDg2YTdhMGU4NjBmNGM2
MzEyYzBiNDQ1NTE0Li5mZTczMDk3MTMxZTBiYjIwYTUwMDFlMTUwMTYwMmQ2NTE4NmIzMDkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaApAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgog
CiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50CiAgICAgdm9pZCB1cGRhdGVLZXlTdGF0
dXNlcyhLZXlTdGF0dXNWZWN0b3ImJikgZmluYWw7Ci0gICAgdm9pZCBzZW5kTWVzc2FnZShXZWJD
b3JlOjpDRE1NZXNzYWdlVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdl
KSBmaW5hbDsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKICAg
ICB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUGxhdGZv
cm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgZmluYWwgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAK
aW5kZXggOWFiMzU3NWY0YzNiNTU5NTU1YjliODdiMjMzNzFiMWIxYTY2ZGMxNy4uZjdjYjZhNjNl
YjkzM2FiZDRkNDUzYTIyYWIyOTRmMTMwMzIzMmIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCkBAIC02MywxMiArNjMsMTIgQEAg
UmVtb3RlQ0RNUHJveHk6OlJlbW90ZUNETVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVBy
b3h5PiYmIGZhY3RvcnksIHN0ZDo6dW4KIAogUmVtb3RlQ0RNUHJveHk6On5SZW1vdGVDRE1Qcm94
eSgpID0gZGVmYXVsdDsKIAotYm9vbCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCitib29sIFJl
bW90ZUNETVByb3h5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+c3VwcG9ydHNJbml0RGF0YSh0eXBlLCBkYXRhKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gUmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiBy
ZXNwb25zZSkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6
c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkK
IHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94
eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKaW5k
ZXggNjkyNGU3NGUzZjUwMTFiZTIxNWJlNGJkOTZiMjM0ODI2NDcwZjQyMy4uM2I2NmM3NzU3ODcw
NjllOTc2ZWUwNjRmOTZmZjA3YzBmNzEyYTkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRl
IDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBlbnVtIGNsYXNzIENETVJlcXVp
cmVtZW50IDogdWludDhfdDsKIGVudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgOiB1aW50OF90Owog
c3RydWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb247CkBAIC01OCw4ICs1OCw4IEBAIHB1Ymxp
YzoKIAogICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eSogZmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJu
IG1fZmFjdG9yeS5nZXQoKTsgfQogCi0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYgcmVzcG9uc2UpOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9t
U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNv
bnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKTsKICAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaAppbmRleCBlMmNkMDVkN2NjNzRmMjBlYzY5ZmFkZmUz
ZWUwODU3NTkyYWQ4NzliLi5kZThmNmRmNTVhNmUxZmE4YmU5NjZmOTQxZTA3ZmUyZjVjNTAyMWE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNUHJveHkuaApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvblByb3h5LmNwcAppbmRleCA5M2IyZmY3NDFiMWY4MzY5YjIwNTg0ZTQ5N2U0YTAyMWI5Y2Nm
NTc4Li4yMTQxMzc5ZDZhNTllYWYyMjg1MTRiMTg3YjU2OWQwNDcwM2MxMTk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5LmNwcApAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZShU
IGFycgogewogICAgIGlmICghYXJyYXkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgcmV0dXJuIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKGNvbnN0IGNoYXIqKWFycmF5LT5kYXRh
KCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpIH07CisgICAgcmV0dXJuIHsgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKChjb25zdCBjaGFyKilhcnJheS0+ZGF0YSgpLCBhcnJheS0+Ynl0ZUxl
bmd0aCgpKSB9OwogfQogCiB2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2VuZXJh
dGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29w
eSYmIGluaXREYXRhLCBHZW5lcmF0ZUtleUNhbGxiYWNrJiYgY29tcGxldGlvbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uUHJveHkuaAppbmRleCBmMTRjNjI3ZjY1OTNlMWE4NzhkMGY0NTk5MmIzYzQxYjIyMmM3
ZjAwLi4xNTQ2YmRmZGZkY2YwOTEwODc4OTQ0ZjM0MDc5NjdhN2FiMzhiZjg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eS5oCkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBMZWdhY3lDRE07CiBjbGFzcyBMZWdhY3lDRE1TZXNzaW9uOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIElQQyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZS5jcHAKaW5kZXggYzQ1ZTUyNTVkNjdiNTJjN2FlMTA0NDk5ODhjZTAxOTBjN2ZmYjUz
OC4uNjE3ZjQ3Njg5NTY0MmRlYzIzMjU0YjU0MGVlODE5MTFhYzRhMmRmNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNw
cApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFTZW50KHVp
bnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZQogICAgICAgICBtX2Ns
aWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0K
IAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhKQordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQpCiAgICAg
ICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIFdURk1vdmUoZGF0YSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2Uu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgK
aW5kZXggZDEzZDI1ZjY1ZjAyMjRhNmM3NjdmNjlhNGQ0MTljZDA1M2JiNzk1ZC4uNWI3YTdlMmE3
NDI0NDMyZDg2Y2IyOGExYmU3MTcxOGExNjczNzVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCkBAIC0zNCw3ICszNCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNw
b25zZVJlY2VpdmVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYm
KTsKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCBkYXRhU2VudCh1aW50
NjRfdCwgdWludDY0X3QpOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IGViZGU3NTMw
ZWM4NmZmNmM0MWJlY2Q0ZTVlYzQyOGEzYzhhZjgwZjcuLmU4M2Y5MTQzZDIwYTcyZTJiZTRmZmNi
ZmVkMTNiMGJiNGRkMzFlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93
ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHZv
aWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVt
b3RlVmlkZW9TYW1wbGUmJiByZW1vCiB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0
YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fd3JpdGVyLT5mZXRjaERhdGEoW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBkYXRhLCBhdXRv
IHRpbWVDb2RlKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PigpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygp
IDogUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4oKTsKICAgICAgICAgYXV0byogcG9pbnRl
ciA9IGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoSVBDOjpEYXRhUmVmZXJlbmNlIHsgcG9pbnRlciwgZGF0YSA/IGRhdGEtPnNpemUo
KSA6IDAgfSwgdGltZUNvZGUpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAppbmRleCA1MmNjNWRh
MTIxYTJmYjU5ZDhjZjA1OTNiNjg1MDlmZDY1NWMwY2RjLi43MWZkMDIyMjliYmIxYzU3MzI2ZmRm
Y2ZlMjZjMTFmNzYxYWJjZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaApAQCAtNjgsNyArNjgsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOyB9CiAg
ICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKSBvdmVycmlkZSB7IH07CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRGYWlsTG9h
ZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmNwcAppbmRleCAzZjM5ZWIzMmYxYWE4MDc2Nzg1ZGE3OWVlMTFkYWQ4ZjBjMzI2
Yjc5Li5kODkyMGU5ODc2NGZkOWI2NGI5Y2RkYzYwYTFkODRkNjE5YjJkNDA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBOZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXI6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYKICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7CiB9CiAKLXZvaWQg
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmKQordm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQogewogICAg
IENPUlNfQ0hFQ0tFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGEiKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlci5oCmluZGV4IGJiYjE0NjJhMzE2MWUyZmNlOWVhNTc4NDRiMTliOTNlNjE5YzgxYjAu
LmUxMWJmNTYzMTkwN2FlNDczMzZlZjg1YTVkMjJlODgzNTc0NjUxYjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXIuaApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
JiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZp
bmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVz
U2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lk
IHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFzay5oCmluZGV4IGQ2MDE4ZjYxMzgzYWUzYTUxZTlkNDcyMmNmNmE2MGUyZDhi
ODdhN2QuLmUwNDllNWIxMmRkZTVmZTUxYjQ2OTU1Mjg5YTdhN2Y2OTk4MmFmY2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaApAQCAtNDMsNyAr
NDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxl
dGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWlu
dDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdh
c0Jsb2NrZWQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuY3BwCmluZGV4IGJhYzAyMmFiNDU0MzBmNjUxYjE4OWFjMDEyMDdhMDYwNjA4YzE2NzEuLjc5
NzVkNDFiYWQ4OTE1ZmVlZGJkYWIxNTU0ZTgxZTFkYjIwMzBmODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgdm9p
ZCBOZXR3b3JrTG9hZDo6bm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgTmVnb3RpYXQKICAgICBtX2NsaWVudC5nZXQoKS5kaWRSZWNlaXZlUmVzcG9u
c2UoV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAot
dm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHRoZSBl
bmNvZGVkIGRhdGEgbGVuZ3RoLCBub3QgdGhlIGRlY29kZWQgZGF0YSBsZW5ndGguCiAgICAgYXV0
byBzaXplID0gYnVmZmVyLT5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmgKaW5kZXggYzM3NzNjOTg3ODU1M2NlNTM0ZDA1NGFiZmZkZGViYjI5ZWUwODRk
Mi4uZWU1ZWIwMDZhYTM3OWI3OGZjYmMwYmQxNzRlMzJiZDYzOWY5NWU2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaApAQCAtODAsNyArODAsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxl
bmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAg
dm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwg
Y29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRT
ZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVj
dGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAppbmRleCAwYTVm
NjZiZDk2N2VjOWZkZjY2NGU1MmU1YWYzOTRlNDhlY2UxZjdiLi4zNDhjZmZiOWU4ZTI1ZWU4M2Ji
YjM5YTAyY2QzY2Y2ZDI4NTRkMzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIE5ldHdvcmtMb2Fk
TWV0cmljczsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiBlbnVtIGNsYXNzIFBvbGljeUFjdGlvbiA6IHVpbnQ4X3Q7CiB9CiAKQEAgLTUxLDcgKzUx
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25n
IGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSB7IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggNTRkYzIwYTlhMTk1ZDU5ZTg4YWQ0NGRiNTQwNWU5MjkzMzEzOGZm
OC4uNzMxODllZmU0MzFiYTczMzNiYWIyYTdiNzQwMzJkMTFjYjVmYzYxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cApAQCAtODcsNyArODcsNyBAQCBzdHJ1Y3QgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJv
bm91c0xvYWREYXRhIHsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogfTsKIAotc3RhdGljIHZv
aWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpT
eW5jaHJvbm91c0xvYWREYXRhJiBkYXRhLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQorc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9T
eW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWRE
YXRhJiBkYXRhLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBBU1NFUlQoZGF0YS5kZWxheWVkUmVw
bHkpOwogICAgIEFTU0VSVCghZGF0YS5yZXNwb25zZS5pc051bGwoKSB8fCAhZGF0YS5lcnJvci5p
c051bGwoKSk7CkBAIC04NjAsNyArODYwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNlbmREaWRSZWNlaXZlUmVzcG9uc2VQb3RlbnRpYWxseUluTmV3QnJvd3NpbmdDb250ZXgKICAg
ICB9KTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkKIHsKICAgICBpZiAoIW1fbnVtQnl0ZXNSZWNlaXZlZCkKICAgICAgICAgTE9BREVSX1JFTEVB
U0VfTE9HKCJkaWRSZWNlaXZlQnVmZmVyOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChyZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoPSVkKSIsIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwpAQCAt
MTI2OCw3ICsxMjY4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1Rp
bWVyRmlyZWQoKQogICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwogfQog
Ci12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNlbmRCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5j
b2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFpc1N5bmNocm9ub3VzKCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aAppbmRleCAzNDVjMmZiYTc5OGM2ZGI2YWRiNzcyMTEzMGJlMDRmMGRmNDQxNWI4Li45ODQ0MjRh
MzA2ODFhMzYwZmM2MGM5ZTdhOWRkNGU2YmI0MjZkZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwogY2xhc3MgRm9ybURhdGE7CiBjbGFz
cyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVk
QnVmZmVyQnVpbGRlcjsKIH0KIApAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICBib29s
IGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRS
ZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lk
IGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5n
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGRpZEJsb2Nr
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSBmaW5hbDsKQEAgLTE5NSw3ICsxOTUsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKICAgICB2b2lk
IGJ1ZmZlcmluZ1RpbWVyRmlyZWQoKTsKLSAgICB2b2lkIHNlbmRCdWZmZXIoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIHNlbmRCdWZm
ZXIoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxl
bmd0aCk7CiAKICAgICB2b2lkIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogICAgIHZvaWQg
aW52YWxpZGF0ZVNhbmRib3hFeHRlbnNpb25zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUGluZ0xvYWQuY3BwCmluZGV4IDExNDg1M2U0NWI3MjUzMzY0Yzc0N2E3MWNiMmI1YWI4Y2Mz
OGVmZDUuLjFhZjFlMDhlM2M0NDFlMjRmMzAwNjVlOWYyMDc3NmU2ZjlmYzMzZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAg
dm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNw
b25zZSwgTmVnb3RpYXRlZExlZ2FjeVQKICAgICBkaWRGaW5pc2goeyB9LCByZXNwb25zZSk7CiB9
CiAKLXZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpCit2
b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JikKIHsKICAgICBQSU5HX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YSIpOwogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCmlu
ZGV4IDE5ZWM4Y2ViOTJlM2M4YTA1NmY0OTI3MzY2MGNmZmY5MjY0MzQxZDEuLmFiMjlhMGIxYWM4
NDY2YjBlZDYxZWY1OGVmNGMyMjBhYmFiNmViZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1BpbmdMb2FkLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7
CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRo
RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90
YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAg
ICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCmluZGV4IDQ1NTc4MmQ1NGEyZWE5YmVlMTg2NTBlMWFm
ZDFjZjdiMmNlOThjNDkuLjE3ZDQ3OTA3YTNmNmVlNTJiZTY1MDFkMWRhYjBjYTYwNzUxZDZiMGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3Bw
CkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tCiAgICAgY29tcGxldGlv
bkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogfQogCi12b2lkIFByZWNvbm5lY3RUYXNr
OjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKQordm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKaW5kZXggMWMxZmYxNjQ3MTExYzZmYTg0OTRhZjVj
ZjBjN2JiZWFhMWIyNjUwMy4uODU4MDhlMTIxYjY4Y2E4YjczZTI1MThkMTkzYWIzOTU4MWVhZDFl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFz
ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaApA
QCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQg
bG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2Vu
dCkgZmluYWw7CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCmluZGV4IDNhNTUxNzQ5MDFkNDc4OTlj
MWMwMmQwZDI3YTg4OGE3Y2JkYTVkNjIuLjgxOTY2MzAyMGM2OTVjZTBjNmFiYTk5OWM2NzVhYWI0
MjgyYzdmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0
aW9uUHJlbG9hZGVyLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzCiAgICAgICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICht
X2JvZHlDYWxsYmFjaykKICAgICAgICAgbV9ib2R5Q2FsbGJhY2soYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlv
blByZWxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKaW5kZXggNWM0YzhlNzFkNGRkMzgz
NWMxZDU3MjJiODFjYzdiNTk4NDBlOGFhOC4uZWUxYmM4YjdkNmNiZmZjMzM0MWQ2NzNmYjcyNDIy
MzhmNjcxN2YyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0
aW9uUHJlbG9hZGVyLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgdXNpbmcgUmVz
cG9uc2VDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47CiAgICAgdm9pZCB3YWl0Rm9yUmVzcG9u
c2UoUmVzcG9uc2VDYWxsYmFjayYmKTsKLSAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlv
bjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OworICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpPjsKICAgICB2b2lkIHdhaXRGb3JCb2R5KEJvZHlDYWxsYmFjayYmKTsK
IAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKCkgY29uc3QgeyByZXR1
cm4gbV9lcnJvcjsgfQpAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxv
d2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xv
YWRNZXRyaWNzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3M7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXIuY3BwCmluZGV4IDk0MjM1MzQ4MjczZTg5MWIwN2I4NzU2MWMxZDYxMmVhMmE0
NDM1OTMuLjdhMjYyMjE5ZGU3OGIyMzVkMTI1YTkyYjZlMjM2ZDMzMjYyZjdhMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTc3
LDcgKzE3Nyw3IEBAIFJlc291cmNlRXJyb3IgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6
OnByb2Nlc3NSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvCiAgICAgcmV0dXJuIHsgfTsKIH0K
IAotdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
Cit2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpCiB7CiAgICAgaWYgKCFtX2RlY29kZXIpIHsKICAgICAgICAgaWYgKCFtX3Jlc3Bv
bnNlRW5jb2RpbmcuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuaAppbmRleCAxOGY1NDY5MWYzN2MyYmFiYmM4YzFhM2JjMDk0MzcwZTli
MjllYjcxLi40NGZjMDY4NWZhMGZlZGM4NzQyMTkxNmU5MTNhNjc0YjFjMGZkYmVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaApAQCAtNjQsNyAr
NjQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlh
bHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRp
cmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZp
bmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IGZkYmZiMTQzNTk3NmNiZjY1ZjYxMjU2ODNh
YzFlZGQyNDA5ZTI3ODcuLjZmMjZiNGNjMmRlZmEwZDk4ODdjNmY0MjQ1ZThmNTRmYmVjNGJhMmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC01ODEsNyArNTgxLDcgQEAgU3RvcmFn
ZTo6UmVjb3JkIENhY2hlOjplbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZElu
Zm9ybWF0aW9uLCBjb25zdAogICAgIERhdGEgYm9keTsKICAgICBXVEY6OnN3aXRjaE9uKHJlY29y
ZC5yZXNwb25zZUJvZHksIFtdKGNvbnN0IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mIGZvcm1EYXRh
KSB7CiAgICAgICAgIC8vIEZJWE1FOiBTdG9yZSBmb3JtIGRhdGEgYm9keS4KLSAgICB9LCBbJl0o
Y29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAg
ICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAg
ICAgICBib2R5ID0geyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfTsKICAgICB9LCBb
XShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKQEAgLTY3Myw3ICs2NzMsNyBAQCBz
dGQ6Om9wdGlvbmFsPFJlY29yZD4gQ2FjaGU6OmRlY29kZShjb25zdCBTdG9yYWdlOjpSZWNvcmQm
IHN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHJlY29y
ZCA9IFdURk1vdmUocmVzdWx0LT5yZWNvcmQpOwotICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEo
KSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CisgICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9k
eS5zaXplKCkpOwogCiAgICAgcmV0dXJuIHJlY29yZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCAwNDc3NjgzNmY5
OTkwOTM5MTBiMzk5ZDc1NTM4NTVkNWQzZjFmZjRlLi5kZDMwNWFmMjk3NjYxZTQ3NmM0OTY3N2Rm
NTcyMWVmZDFlYzkzMmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC00NTQsNyArNDU0LDcgQEAgdm9pZCBDYWNoZTo6
Y29tcGxldGVSZXRyaWV2ZShSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlciwgc3Rk
Ojp1bmlxdWVfcHQKICAgICBoYW5kbGVyKFdURk1vdmUoZW50cnkpLCBpbmZvKTsKIH0KICAgICAK
LXN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6Om1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSkK
K3N0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6Om1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNw
b25zZURhdGEpCiB7CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShy
ZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUocmVzcG9uc2VEYXRhKSwgV2ViQ29yZTo6Y29sbGVj
dFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKG1f
c2Vzc2lvbklEKSwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKIH0KQEAgLTQ2NCw3ICs0NjQsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjptYWtlUmVkaXJlY3RFbnRyeShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RW50cnk+KG1ha2VD
YWNoZUtleShyZXF1ZXN0KSwgcmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6Y29s
bGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9u
KG1fc2Vzc2lvbklEKSwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PEVudHJ5PiBDYWNoZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIEZ1bmN0aW9uPHZvaWQoTWFwcGVk
Qm9keSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNo
ZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJv
ZHkmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQocmVzcG9uc2VEYXRhKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmgKaW5kZXggMTk5ZjBjZmI3MzI1NDNjNWZlYWY0ZmUyMzAxZTZhMWMxMmY4OGZlOC4uZWQwNGVi
Y2EwYjM2ZjNmOWM0YzBlN2JhYzcxMzM2YjllOTZjMzU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCkBAIC00Myw3ICs0Myw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMb3dQb3dlck1vZGVOb3RpZmllcjsKIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTY2LDcgKzE2Niw3IEBA
IHB1YmxpYzoKICAgICB9OwogICAgIHVzaW5nIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIgPSBG
dW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4sIGNvbnN0IFJldHJpZXZlSW5mbyYp
PjsKICAgICB2b2lkIHJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IEdsb2JhbEZyYW1lSUQmLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPiwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBG
dW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiA9IG51bGxwdHIpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gc3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiA9IG51bGxwdHIpOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIHN0ZDo6b3B0aW9uYWw8
U2Vjb25kcz4gbWF4QWdlQ2FwKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHVwZGF0ZShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBFbnRyeSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHZhbGlkYXRpbmdSZXNwb25zZSk7CiAKQEAgLTE4NSw3ICsx
ODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXRyaWV2ZURhdGEoY29uc3QgRGF0YUtleSYsIEZ1
bmN0aW9uPHZvaWQoY29uc3QgdWludDhfdCosIHNpemVfdCk+KTsKICAgICB2b2lkIHN0b3JlRGF0
YShjb25zdCBEYXRhS2V5JiwgIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAgICAgCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbWFrZUVu
dHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlUmVkaXJlY3RFbnRyeShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwogCiAgICAg
dm9pZCBkdW1wQ29udGVudHNUb0ZpbGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggZjFlZmZmMzUw
ZmEzN2Y2YjQ2ODE1OWZjNjYyZTdhYTk0MjgzZDdlMS4uNzYxMDc4ZGVhMDkzYzA0NTU1YmU5OGIw
NTE3M2UzNDE1MDY3YTg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIG5h
bWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAKLUVudHJ5OjpFbnRy
eShjb25zdCBLZXkmIGtleSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8
c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycykKK0VudHJ5
OjpFbnRyeShjb25zdCBLZXkmIGtleSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVz
dEhlYWRlcnMpCiAgICAgOiBtX2tleShrZXkpCiAgICAgLCBtX3RpbWVTdGFtcChXYWxsVGltZTo6
bm93KCkpCiAgICAgLCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQpAQCAtMTAzLDcgKzEwMyw3IEBAIFN0
b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKICAgICBE
YXRhIGJvZHk7CiAgICAgaWYgKG1fYnVmZmVyKSB7CiAgICAgICAgIG1fYnVmZmVyID0gbV9idWZm
ZXItPm1ha2VDb250aWd1b3VzKCk7Ci0gICAgICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0PFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKSwgbV9i
dWZmZXItPnNpemUoKSB9OworICAgICAgICBib2R5ID0geyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpT
aGFyZWRCdWZmZXIqPihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9
OwogICAgIH0KIAogICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5
LCB7IH0gfTsKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIEVudHJ5Ojppbml0aWFsaXplQnVmZmVy
RnJvbVN0b3JhZ2VSZWNvcmQoKSBjb25zdAogICAgIG1fYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjcmVhdGUobV9zb3VyY2VTdG9yYWdlUmVjb3JkLmJvZHkuZGF0YSgpLCBtX3NvdXJj
ZVN0b3JhZ2VSZWNvcmQuYm9keS5zaXplKCkpOwogfQogCi1XZWJDb3JlOjpTaGFyZWRCdWZmZXIq
IEVudHJ5OjpidWZmZXIoKSBjb25zdAorV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
RW50cnk6OmJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgaW5p
dGlhbGl6ZUJ1ZmZlckZyb21TdG9yYWdlUmVjb3JkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKaW5kZXggOTY5MTVj
MzgwMWMzN2RkYWMzZThlNjAzMjFmODhjMjIyOWNkNTlhMC4uOWMwNDIwZDQ0YTgxNThkZmM1YjIx
Y2YxODgyMDRjZjNhOTE2YjQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaApAQCAtMzUsNyArMzUsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7
CiBjbGFzcyBFbnRyeSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgRW50cnkoY29uc3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3Ry
aW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKTsKKyAgICBFbnRyeShjb25zdCBL
ZXkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBT
dHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKTsKICAgICBFbnRyeShjb25zdCBLZXkmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBT
dHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKTsKICAgICBleHBsaWNpdCBFbnRyeShjb25z
dCBTdG9yYWdlOjpSZWNvcmQmKTsKICAgICBFbnRyeShjb25zdCBFbnRyeSYpOwpAQCAtNTcsNyAr
NTcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAgICAgY29uc3QgVmVjdG9yPHN0
ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMoKSBjb25zdCB7
IHJldHVybiBtX3ZhcnlpbmdSZXF1ZXN0SGVhZGVyczsgfQogCi0gICAgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyKiBidWZmZXIoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBidWZmZXIoKSBjb25zdDsKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdD4mIHJlZGlyZWN0UmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVkaXJl
Y3RSZXF1ZXN0OyB9CiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQpAQCAtODgsNyAr
ODgsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBt
X3ZhcnlpbmdSZXF1ZXN0SGVhZGVyczsKIAogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0PiBtX3JlZGlyZWN0UmVxdWVzdDsKLSAgICBtdXRhYmxlIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIG11dGFibGUgUmVmUHRyPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogI2lmIEVOQUJMRShTSEFSRUFCTEVf
UkVTT1VSQ0UpCiAgICAgbXV0YWJsZSBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIG1fc2hhcmVh
YmxlUmVzb3VyY2VIYW5kbGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmNwcAppbmRleCBkNDNjMDg5ZDYxODUzYzUxOWUzNjJmZjJjOGM3YzQxODNjZWMxMDBiLi43YjBh
ZGM0MGYwYjBiNjcxNDcxYTI3YWI1MTM5NzY2ZDRiNTU1NDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxv
YWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25z
ZSwgUmUKICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7CiB9CiAKLXZv
aWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU3BlY3VsYXRpdmVM
b2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hl
RW50cnkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRleCA2NzgzMGRmMGIz
MDM0MzMwMmExMWI1NTFkN2EwOWY2ZDFhODVmNTYzLi4xYjg0M2RiN2VjMjcwZGI5ZGFiOWU4YTI1
ZjJhNDhhOGVjYWUyYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKQEAgLTYx
LDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRl
bnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHdpbGxTZW5k
UmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKaW5kZXggNWUyZTAyZTJmYmEwYjRhMGMwM2I1ZDNl
NjZiOTdmN2JjY2M3OTU4Yi4uMzE5OWJmZjMxMWI2YzNlZWZiZTk1MGI0NWU2YjBhOTZlMzI3Nzdm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRj
aENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZl
dGNoQ2FjaGUuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1Q
cmVmZXRjaENhY2hlOjpFbnRyeTo6RW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJl
c3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK1ByZWZldGNo
Q2FjaGU6OkVudHJ5OjpFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6
IHJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKSwgYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsK
IH0KQEAgLTcyLDcgKzcyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFByZWZldGNoQ2FjaGU6OkVudHJ5
PiBQcmVmZXRjaENhY2hlOjp0YWtlKGNvbnN0IFVSTCYgdXJsKQogCiBzdGF0aWMgY29uc3QgU2Vj
b25kcyBleHBpcmF0aW9uVGltZW91dCB7IDVfcyB9OwogCi12b2lkIFByZWZldGNoQ2FjaGU6OnN0
b3JlKGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJl
c3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUHJl
ZmV0Y2hDYWNoZTo6c3RvcmUoY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fc2Vzc2lvblByZWZldGNoZXMpCiAgICAgICAg
IG1fc2Vzc2lvblByZWZldGNoZXMgPSBtYWtlVW5pcXVlPFByZWZldGNoRW50cmllc01hcD4oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hD
YWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hl
LmgKaW5kZXggYTI1MTUyMGIzMWVhYzkyMWMyMmQzMTE1MWQ2ZDIzMWExYmVkMTM4Yy4uNTJjMGIx
MGZjYzZkNWE2ZGUxMTQ0N2U3ZTRlODIyZGY4Zjg0MWNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKQEAgLTQ3LDE4ICs0Nywx
OCBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgRW50cnkgewogICAgICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIEVudHJ5KFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpOwogICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKIAotICAgICAgICBSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiByZWxlYXNlQnVmZmVyKCkgeyByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxs
KCk7IH0KKyAgICAgICAgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlbGVh
c2VCdWZmZXIoKSB7IHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsgfQogCiAgICAgICAg
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlZGlyZWN0UmVxdWVzdDsKICAgICB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5
PiB0YWtlKGNvbnN0IFVSTCYpOwotICAgIHZvaWQgc3RvcmUoY29uc3QgVVJMJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAg
ICB2b2lkIHN0b3JlKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgc3RvcmVS
ZWRpcmVjdChjb25zdCBVUkwmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRleCBi
OWFiMGRlZWJiOWY5MjdjNzM3NDJlODZhMGJlN2Y5NzE2MGJkNmZiLi40MTY2OGE1YjFjZDczODY5
NjdiOGZkOTczZTk2NzMyZWNhOTA3ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC02Miw3ICs2
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZE5lZ290aWF0ZU1vZGVyblRMUyhjb25zdCBVUkwm
KTsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRM
ZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIHZv
aWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYm
KTsKICAgICB2b2lkIHRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQoRG93bmxvYWQm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IGU3ODBkNmMxYzNjZDFlYjJjMmZmNWEwYzU2NGEw
ZTRkODhiN2VhNWQuLjMwNTFmMTY5Y2IwYTM3MDk5ODVhMTYxMTIyYzI1ZjBlOGYxN2JkOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgTmV0d29ya0RhdGFU
YXNrQ29jb2E6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVyCiAgICAgICAgIG1fY2xpZW50LT5kaWRDb21wbGV0ZVdpdGhFcnJvcihlcnJvciwgbmV0
d29ya0xvYWRNZXRyaWNzKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVj
ZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBOZXR3b3Jr
RGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBXVEZFbWl0U2lnbnBvc3QobV90YXNrLmdldCgpLCAi
RGF0YVRhc2siLCAicmVjZWl2ZWQgJXpkIGJ5dGVzIiwgZGF0YS0+c2l6ZSgpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1
cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFz
a0N1cmwuY3BwCmluZGV4IDhmYzdiNjYzZTZmNzU2MmIyYjM1NDg5Mzk4YTJmZTczMWJlMDc0ZjEu
LjM3ZjI5NDE2NjQ2YzQ3ZTFkYTFmZDk5NDFjY2FjMDBiNWRjMGZkMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3Vy
bC5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxE
aWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXNwbwogICAgIGlu
dm9rZURpZFJlY2VpdmVSZXNwb25zZSgpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6
OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCit2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1
cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAg
IFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6
Q2FuY2VsaW5nIHx8IHN0YXRlKCkgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAoIW1fY2xpZW50ICYm
ICFpc0Rvd25sb2FkKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKaW5kZXggMWM0MjdkZGI3OGQ2OTUzZmU4OTYw
YzU2OTJhZmRlNGY0ZjBlZWU4NS4uNDViZTVjZTE4NDMyNTI3MWQ1YzA4MGRkMzRmMWVlNGExNjY0
MmExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdv
cmtEYXRhVGFza0N1cmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwv
TmV0d29ya0RhdGFUYXNrQ3VybC5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgUmVm
PFdlYkNvcmU6OkN1cmxSZXF1ZXN0PiBjcmVhdGVDdXJsUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgUmVxdWVzdFN0YXR1cyA9IFJlcXVlc3RTdGF0dXM6Ok5ld1JlcXVlc3QpOwog
ICAgIHZvaWQgY3VybERpZFNlbmREYXRhKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgdW5zaWduZWQg
bG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6OkN1cmxSZXNw
b25zZSYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6
OkN1cmxSZXF1ZXN0JiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1
cmxEaWRDb21wbGV0ZShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmLCBXZWJDb3JlOjpDZXJ0
aWZpY2F0ZUluZm8mJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCBmNjMzZmZm
ZWE0OGRkMGYzZjJjNWZhZjlmOTE0NTkxZDMxY2E5ZTEyLi5iMjBhYTUxYTBmODRmOTVhZDhmMGI3
ODA3ZDc0MTcxYWRjNTIwNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC0xNzYxLDcgKzE3NjEs
NyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9u
YWw8RGF0YVVSTERlY29kZXI6OlJlc3VsdD4mJgogICAgIH0KIAogICAgIG1fcmVzcG9uc2UgPSBS
ZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UobV9jdXJyZW50UmVxdWVzdC51cmwoKSwg
cmVzdWx0LnZhbHVlKCkpOwotICAgIGF1dG8gYnl0ZXMgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CisgICAgYXV0
byBieXRlcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNy
ZWF0ZUdCeXRlcygpOwogICAgIG1faW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5w
dXRfc3RyZWFtX25ld19mcm9tX2J5dGVzKGJ5dGVzLmdldCgpKSk7CiAgICAgZGlzcGF0Y2hEaWRS
ZWNlaXZlUmVzcG9uc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKaW5kZXggZjVkYjcwNmM0NDU4MDIx
MDg3Zjk1OTk2NjlkZmE3ZDlmODM3OTc4Yy4uMzNkNDNiNzIyMzhkMjAzZTdlZGVjOTQxNGNhZjlm
ZGE4ZjQwNTI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKQEAgLTU1LDcgKzU1LDcgQEAgc3RydWN0IFBh
Y2tldE9wdGlvbnM7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlZ2lzdHJhYmxlRG9t
YWluOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmluZGV4IDExN2JjMTdjMzI2MTQ2MjY2Yjg4MjgxMDFlYmM1
OTNmOTkyNmY1NGYuLmY2NzY2ODg1N2ZmNWMyZTUzMmQ1YjRiNTE0ZjJlMmNmNDlmNzYyYzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBA
IC01MSw5ICs1MSw5IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVkQnVm
ZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgSVBDOjpEYXRhUmVmZXJlbmNl
IGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoZGF0YS5zaXplKCkpCi0g
ICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpOworICAgICAgICBidWZmZXIgPSBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4geyBXVEZNb3Zl
KGJ1ZmZlcikgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oCmluZGV4IGVmZmIxNjJkYTBjN2JiNmQxNThmNDEzMWYxZTRiZDFhNTFkNjBiYWYu
LmJlNjhkOWUyNmEwNDgwN2E1NjBhNjcyOTg5Mjc1MjYzZmM3YzFiMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTIzLDcgKzIzLDcgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBFbmNvZGVzIGEg
U2hhcmVkQnVmZmVyIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBjb3B5IG9mIHRoZSBkZWNvZGVkIGRh
dGEgaW4gYSBuZXcgU2hhcmVkQnVmZmVyLgorLy8gRW5jb2RlcyBhIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIgdGhhdCBpcyByZWNlaXZlZCBhcyBhIGNvcHkgb2YgdGhlIGRlY29kZWQgZGF0YSBpbiBh
IG5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgogLy8gVG8gYXZvaWQgY29weWluZyBmcm9tIHRo
ZSBEZWNvZGVyLCB1c2UgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB0byByZWNlaXZlIGEgRGF0
YVJlZmVyZW5jZSBpbnN0ZWFkLgogCiAjcHJhZ21hIG9uY2UKQEAgLTM5LDE1ICszOSwxNSBAQCBj
bGFzcyBTaGFyZWRCdWZmZXJDb3B5IHsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkg
PSBkZWZhdWx0OwogCi0gICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1h
a2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4o
KSkgeyB9Ci0gICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigpKSB7
IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3Vz
KCkpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
JiBidWZmZXIpCisgICAgU2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLm1ha2VDb250
aWd1b3VzKCkpIHsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXI7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyBy
ZXR1cm4gbV9idWZmZXI7IH0KKyAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogICAgIGNvbnN0IHVpbnQ4
X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBu
dWxscHRyOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1f
YnVmZmVyLT5zaXplKCkgOiAwOyB9CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVj
b2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaAppbmRleCBk
M2QwZWM1ZTk3ODU1OTliNjM0YTg0YzZjNDQ3MWI1MmNkMjIxM2YxLi42N2VjOGU1ZTkyYmQwMjQx
MTVkYjBkNDA4MGEyNGZlNzM1NzBkM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCkBAIC0yMyw3ICsyMyw3IEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8gRW5jb2RlcyBh
IFNoYXJlZEJ1ZmZlciBvciBEYXRhUmVmZXJlbmNlIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBEYXRh
UmVmZXJlbmNlIHRvIHRoZSBkZWNvZGVkIGRhdGEuCisvLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciBvciBEYXRhUmVmZXJlbmNlIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBEYXRhUmVm
ZXJlbmNlIHRvIHRoZSBkZWNvZGVkIGRhdGEuCiAKICNwcmFnbWEgb25jZQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKaW5kZXggYjNhOTlhZjhmNTEyN2Y2YTY1M2NjMWM4
Zjg1YjYyYjZjYWFmMTU4YS4uYzAyNmY1NDk1NjliMmJlMDA3OGFlMzI1ZDA1MzllMDcxYWYxMTA0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAtMzIsNyArMzIs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJl
ZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1
ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGJ1
ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDgsMTAgKzQ4LDEw
IEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gc2hhcmVkTWVtb3J5OwogfQogCi1SZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIo
c2l6ZV90IGRhdGFTaXplKSBjb25zdAorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5Ojpj
cmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAogewogICAgIEFTU0VSVChk
YXRhU2l6ZSA8PSBzaXplKCkpOwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3Byb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9XSAoKSAtPiBjb25zdCB1aW50OF90KiB7CiAgICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7CiAgICAg
ICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCA3NmI3M2NhZTRj
ODVkN2VlMzY4YjFmODRkNTFlZTAwZjkyZTkwNDdjLi4xYjRmZGZhZjY4Mzg5ZGNlNzI4ZmYzNGU1
ZTVmMDEyZTI0M2ZhMmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAg
LTQ0LDggKzQ0LDggQEAgY2xhc3MgRW5jb2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewot
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKICNpZiBPUyhEQVJXSU4pCkBAIC0xMjEsNyAr
MTIxLDcgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IENoYW5nZSB0aGVzZSBmYWN0b3J5IGZ1
bmN0aW9ucyB0byByZXR1cm4gUmVmPFNoYXJlZE1lbW9yeT4gYW5kIGNyYXNoIG9uIGZhaWx1cmUu
CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGFsbG9jYXRlKHNpemVfdCk7Ci0gICAg
c3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGNvcHlCdWZmZXIoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGNvcHlCdWZmZXIo
Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHN0YXRpYyBSZWZQ
dHI8U2hhcmVkTWVtb3J5PiBtYXAoY29uc3QgSGFuZGxlJiwgUHJvdGVjdGlvbik7CiAjaWYgVVNF
KFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHdy
YXBNYXAodm9pZCosIHNpemVfdCwgaW50IGZpbGVEZXNjcmlwdG9yKTsKQEAgLTE1NCw3ICsxNTQs
NyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGluIGJ5dGVz
LgogICAgIHN0YXRpYyB1bnNpZ25lZCBzeXN0ZW1QYWdlU2l6ZSgpOwogCi0gICAgUmVmPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNv
bnN0OworICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihz
aXplX3QpIGNvbnN0OwogCiBwcml2YXRlOgogI2lmIE9TKERBUldJTikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0K
aW5kZXggMzVlYTE2MjE1NmEyMDcwMjZkZjEzNDFjNWMwYTg3M2EyM2E3ZWM3MS4uM2MxYjU3ZDVh
YTI2ZWM3MmU2MGI1ZDc4YTExZTlmZDg1MmNmZmVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTU2
NCw3ICs1NjQsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+IEFy
Z3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgaWYgKCppbmNsdWRlc0NyZWF0aW9uRGF0YSkgewotICAgICAgICBz
dGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PiBmb250RmFjZURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gZm9udEZhY2VEYXRhOwogICAgICAg
ICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5
TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggNDU0MTY0
MzZjMjUwNTIwODM4ZTVkZmRjYzJiZmUzNTNmYjU5YzJhMS4uZTlhNTEzYTMwNWVkZDY1YmRmYTM3
NGUxYmQwZTNmZWFiMWY2YjgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tl
CiAgICAgUkVMRUFTRV9MT0coUmVtb3RlTGF5ZXJUcmVlLCAiQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZCBvZiBzaXplICVkeCVkIGVuY29kZWQgZGlzcGxheSBsaXN0IG9mICVsZCBieXRl
cyIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0
KCkpKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQ
Qzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmdldCgpKSB9IH07CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZ2V0KCkpIH0gfTsKIH0KIAogV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBDR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCAyYzE2MTFjOWU3MGY4ZjlhMTM3OWMy
Yzg0MzA4NDczNTJlNGM5NmNhLi42ZmEwMmE3YmMzZWU1NGFlNmQzMjUzODEwZDc4ZGVjMzE2NTM1
M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC01
NSwxNSArNTUsMTUgQEAgYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFw
SW5TaGFyZWRCdWZmZXIoKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6
OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VsZiA9IFJlZiB7
ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAogICAgICAgICBbc2VsZiA9IFJl
ZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9CiAgICAgfSk7CiB9CiAKLVJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0
cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVh
YmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAg
ICBSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291cmNlID0gU2hhcmVhYmxlUmVzb3VyY2U6
Om1hcCgqdGhpcyk7CiAgICAgaWYgKCFyZXNvdXJjZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlYWJsZVJlc291cmNlLmgKaW5kZXggYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2NiNGY2
NGU0MTJhYS4uZGExZWVlMGFkNjJjYjM0ODRjMWMzNDA1YzQ4NzBjZjBjNTFlMTYxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBAIC0zMyw3ICszMyw3IEBACiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgICAgICB2b2lkIGVuY29kZShJ
UEM6OkVuY29kZXImKSBjb25zdDsKICAgICAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZShJUEM6OkRlY29kZXImLCBIYW5kbGUmKTsKIAotICAgICAgICBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29u
c3Q7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJl
ZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFNo
YXJlYWJsZVJlc291cmNlOwpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgCiBwcml2YXRl
OgogICAgIFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1vcnk+JiYsIHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgUmVmPFNoYXJlZE1lbW9yeT4g
bV9zaGFyZWRNZW1vcnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCmluZGV4IDY3YjdlYjkwMzQwNTVkN2YxMWM0YzYxNTMzZjIyYzAxYmM1ODE5
NTguLjg0M2ZkNDczMTNhZWVjYTI5OTMwNjEyZmM1ZWM1Nzg3NTU0MzQyZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTY0LDcgKzE2
NCw3IEBAIERFRklORV9TSU1QTEVfQVJHVU1FTlRfQ09ERVJfRk9SX1NPVVJDRShEaXNwbGF5TGlz
dDo6U2V0SW5saW5lU3Ryb2tlQ29sb3IpCiAKICN1bmRlZiBERUZJTkVfU0lNUExFX0FSR1VNRU5U
X0NPREVSX0ZPUl9TT1VSQ0UKIAotc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorc3RhdGljIHZvaWQgZW5j
b2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGJ1ZmZlcikKIHsKICAgICBib29sIGlzTnVsbCA9ICFidWZmZXI7CiAgICAgZW5jb2Rl
ciA8PCBpc051bGw7CkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVk
QnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogICAg
ICAgICByZXR1cm47CiAKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICAvLyBEbyBu
b3QgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIFNoYXJlZEJ1ZmZlciBlbmNvZGluZyBpbiBVbml4LCBi
ZWNhdXNlIGl0J3MgZWFzeSB0byByZWFjaCB0aGUKKyAgICAvLyBEbyBub3QgdXNlIHNoYXJlZCBt
ZW1vcnkgZm9yIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgZW5jb2RpbmcgaW4gVW5peCwgYmVjYXVz
ZSBpdCdzIGVhc3kgdG8gcmVhY2ggdGhlCiAgICAgLy8gbWF4aW11bSBudW1iZXIgb2YgZmlsZSBk
ZXNjcmlwdG9ycyBvcGVuIHBlciBwcm9jZXNzIHdoZW4gc2VuZGluZyBsYXJnZSBkYXRhIGluIHNt
YWxsIGNodW5rcwogICAgIC8vIG92ZXIgdGhlIElQQy4gQ29ubmVjdGlvblVuaXguY3BwIGFscmVh
ZHkgdXNlcyBzaGFyZWQgbWVtb3J5IHRvIHNlbmQgYW55IElQQyBtZXNzYWdlIHRoYXQgaXMKICAg
ICAvLyB0b28gbGFyZ2UuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA4NTcxLgpAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1
ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRp
ZgogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVy
KERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNv
ZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gaXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcg
KzIwOCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZm
ZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPENvbnRpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmICghYnVmZmVyU2l6ZSkgewotICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAg
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVy
JiBkZWNvZGVyLCBSZWZQdHI8Q29udGkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5n
dGhEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKTsKKyAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEp
KTsKICNlbHNlCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxlKSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29k
ZXIsIFJlZlB0cjxDb250aQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNv
ZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkK
K3N0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4m
IGRhdGEpCiB7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAg
ZW5jb2RlciA8PCB0eXBlczsKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVU
eXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBjbwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsK
IH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShE
ZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYg
dHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZSh0eXBlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2MSw3ICsy
NjEsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRh
KERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbgogICAgIEFTU0VSVChkYXRhU2l6ZSA9PSB0
eXBlcy5zaXplKCkpOwogCiAgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGRhdGFTaXplOyBp
KyspIHsKLSAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNo
YXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBkYXRhLmFwcGVuZChidWZmZXIpOwpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgQXJn
dW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IERPTUNhCiAgICAgZW5jb2RlciA8PCByZWNvcmQudXBkYXRlUmVzcG9uc2VDb3Vu
dGVyOwogICAgIGVuY29kZXIgPDwgcmVjb3JkLnJlc3BvbnNlQm9keVNpemU7CiAKLSAgICBXVEY6
OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNl
Qm9keSwgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgZW5j
b2RlciA8PCB0cnVlOwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVy
LnB0cigpKTsKICAgICB9LCBbJl0oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKQEAg
LTQxNCw3ICs0MTQsNyBAQCBzdGQ6Om9wdGlvbmFsPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IEFy
Z3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlYwogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGhhc1NoYXJlZEJ1ZmZlckJvZHkpIHsKLSAgICAgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNv
ZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
aWYgKGJ1ZmZlcikKQEAgLTE1NTAsMTAgKzE1NTAsMTAgQEAgdm9pZCBBcmd1bWVudENvZGVyPFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dAogICAgIGlmIChoYXNTdHJpbmcpCiAgICAgICAgIGVuY29kZXIgPDwgc3RkOjpnZXQ8U3RyaW5n
PihwbGF0Zm9ybURhdGEpOwogCi0gICAgYm9vbCBoYXNCdWZmZXIgPSBzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpOworICAgIGJvb2wgaGFzQnVm
ZmVyID0gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
KHBsYXRmb3JtRGF0YSk7CiAgICAgZW5jb2RlciA8PCBoYXNCdWZmZXI7CiAgICAgaWYgKGhhc0J1
ZmZlcikKLSAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIHN0ZDo6Z2V0PFJlZjxT
aGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpLnB0cigpKTsKKyAgICAgICAgZW5jb2RlU2hhcmVk
QnVmZmVyKGVuY29kZXIsIHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ocGxh
dGZvcm1EYXRhKS5wdHIoKSk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGVib2FyZEN1c3Rv
bURhdGE6OkVudHJ5JiBkYXRhKQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgYm9vbCBBcmd1bWVudENv
ZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBQYXN0ZWIKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGhhc0J1ZmZlcikgewot
ICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdmFsdWU7CisgICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZl
cihkZWNvZGVyLCB2YWx1ZSkgfHwgIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBkYXRhLnBsYXRmb3JtRGF0YSA9IHsgdmFsdWUucmVsZWFzZU5vbk51bGwoKSB9OwpA
QCAtMjk3Niw3ICsyOTc2LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERh
dGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
cmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSkgfSB9OworICAgIHJldHVybiB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1l
VHlwZSksIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNp
emUoKSkgfSB9OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAg
LTMwMTAsNTYgKzMwMTAsNTYgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkUGxhdGZvcm1EYXRh
Q3VlVmFsdWU+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFAKIH0KICNlbmRpZgog
Ci12b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgZW5jb2RlU2hhcmVk
QnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gYnVmZmVyOwogfQog
Ci12b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29k
ZXIsIGJ1ZmZlci5wdHIoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+
IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVj
b2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsK
IH0KIAotdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIGVuY29kZVNo
YXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0
ZDo6b3B0aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZm
ZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGJ1ZmZlcjsK
IH0KIAotdm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihl
bmNvZGVyLCBidWZmZXIucHRyKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UmVmPFNo
YXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAo
IWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMxMjMsNyArMzEyMyw3IEBAIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcj46OmRlY29kCiAgICAgICAgIHJldHVybiBkZWNvZGVTY3JpcHRCdWZmZXJBc1NoYXJlYWJs
ZVJlc291cmNlSGFuZGxlKGRlY29kZXIpOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
ICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMTM1LDcgKzMxMzUsNyBAQCB2b2lkIEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZQogewogICAgIGVuY29kZXIgPDwgbWVzc2FnZS5maXJzdDsKIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5zZWNvbmQuY29weVJlZigpOwor
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uu
c2Vjb25kLmNvcHlSZWYoKTsKICAgICBlbmNvZGVyIDw8IG1lc3NhZ2VEYXRhOwogfQogCkBAIC0z
MTQ1LDcgKzMxNDUsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bjo6TWVzc2FnZT4gIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSQogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUodHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikgfHwgIWJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBlZjAxMTFmYjU2MmNkZWI2Y2IwZjdhMjUyMWYw
OTNhZjI3OTg2NzlmLi42ZmFjMmFhMWVhNzg0NmZmNmJmODkwMjFmMGY1MmU5YWE3YWUwM2M4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTE0
LDcgKzExNCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxvYlBh
cnQ7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDb2xvcjsKLWNsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBDcmVkZW50aWFsOwog
Y2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKQEAgLTEzOSw3
ICsxMzksNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogY2xhc3MgU2NyaXB0QnVmZmVyOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3ByaW5nVGlt
aW5nRnVuY3Rpb247CiBjbGFzcyBTdGVwc1RpbWluZ0Z1bmN0aW9uOwogY2xhc3MgU3RpY2t5UG9z
aXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOwpAQCAtNzUyLDYgKzc1MiwxNiBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVW
YWx1ZT4gewogfTsKICNlbmRpZgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lk
IGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisK
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+Jik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CkBAIC03NjIsMTYgKzc3
Miw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7Ci0gICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Ci19OwotCi10
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVm
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7Ci0gICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2Rl
ciYpOwotfTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3Jp
cHRCdWZmZXI+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNv
cmU6OlNjcmlwdEJ1ZmZlciYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNj
cmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkhpdFRlc3RSZXN1bHREYXRhLmNwcAppbmRleCBjZjJlNGQ1ZjkzZmQyZDk0NmJhYmZmOTNlZWEz
ZTllODYwYWViYmY0Li5iNjA3YWNlODM4ZTA0YmNlMWE2YWVlNGRhNTY1NTllMDk2OTgzOThlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCkBAIC04
NSw3ICs4NSw3IEBAIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0YShj
b25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoaXRUZXN0CiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChJbWFnZSogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKLSAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKTsKKyAgICAgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7CiAgICAg
ICAgIGlmIChidWZmZXIpIHsKICAgICAgICAgICAgIGltYWdlU2hhcmVkTWVtb3J5ID0gV2ViS2l0
OjpTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CiAgICAgICAgICAgICBpbWFnZVNp
emUgPSBidWZmZXItPnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0
ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1l
bnRDb2RlcnNHdGsuY3BwCmluZGV4IDY0NWQ5YmZhYjc1N2IzMWQ3ZTYwMGU3OGJhYjAzYTdlODkz
OTcxODUuLjY3MTc1OGEyODBhNWU0NDBhYTA2MGE3OWNmMWYwZjEyNmRiN2JlMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtOTUsNyAr
OTUsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBTZWxlY3Rpb25EYXRhJgogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSA9
IHNlbGVjdGlvbi5oYXNDdXN0b21EYXRhKCk7CiAgICAgZW5jb2RlciA8PCBoYXNDdXN0b21EYXRh
OwogICAgIGlmIChoYXNDdXN0b21EYXRhKQotICAgICAgICBlbmNvZGVyIDw8IFJlZlB0cjxTaGFy
ZWRCdWZmZXI+KHNlbGVjdGlvbi5jdXN0b21EYXRhKCkpOworICAgICAgICBlbmNvZGVyIDw8IFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihzZWxlY3Rpb24uY3VzdG9tRGF0YSgpKTsKIAog
ICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlID0gc2VsZWN0aW9uLmNhblNtYXJ0UmVwbGFjZSgpOwog
ICAgIGVuY29kZXIgPDwgY2FuU21hcnRSZXBsYWNlOwpAQCAtMTU5LDEwICsxNTksMTAgQEAgc3Rk
OjpvcHRpb25hbDxTZWxlY3Rpb25EYXRhPiBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0N1c3RvbURh
dGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChoYXNDdXN0b21EYXRh
KSB7Ci0gICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAg
c2VsZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCpidWZm
ZXIpKTsKKyAgICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4o
KmJ1ZmZlcikpOwogICAgIH0KIAogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcApp
bmRleCA4YWVmNGE1MDFkYWQ5Mjc2NmM3MTlmYzUwMDZjNmRmMTJhZGE1YWEwLi4yOTJkNzE0NTJj
NWMzYTk0OTJiMmY1YjYxNjgyNzM1MzBhYzJkZDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcApAQCAtMTA3LDcgKzEw
Nyw3IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8
Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjCiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3Jl
YXRpb25EYXRhKiBjcmVhdGlvbkRhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKGluY2x1ZGVzQ3Jl
YXRpb25EYXRhLnZhbHVlKCkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8
U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNl
RGF0YTsKICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0
dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
Y3BwCmluZGV4IGM5MGQzZDgxMTNmNzE5MDFiMDhmMjY0ODkxNmFkMmNjMjlkOTgzMzQuLjE0OTBj
NTExYmRjMzhiZDhhYjRhNjk1YWVjZjMwNmQ5NWZhYTM5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTk4LDE3ICs5OCwxNyBAQCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBBdHRhY2htZW50OjpmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25z
dAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CitSZWZQdHI8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VE
YXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2ht
ZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIHJldHVy
biBudWxscHRyOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVw
cmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFdURjo6U3RyaW5nJikKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmlu
ZyYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5o
CmluZGV4IGM2YzJhMDZlYzk3ZGRmMGQ2Y2FiNDJiNGE2NDA5YjNjNDdiNGRlZmUuLmZlNTBlNTM4
YjhlYmIzNTFhNDgzNmQxZGQ4OTNkMTQ3YTU2YTg3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtMzgsOCArMzgsOCBAQCBPQkpDX0NMQVNTIE5T
RmlsZVdyYXBwZXI7CiBPQkpDX0NMQVNTIE5TU3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04
MywxNCArODMsMTQgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBlbmNsb3NpbmdJbWFnZURhdGEoKSBjb25z
dDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jbG9zaW5n
SW1hZ2VEYXRhKCkgY29uc3Q7CiAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemVG
b3JEaXNwbGF5KCkgY29uc3Q7CiAKICAgICB2b2lkIHNldEhhc0VuY2xvc2luZ0ltYWdlKGJvb2wg
aGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNFbmNsb3NpbmdJbWFnZSA9IGhhc0VuY2xvc2luZ0lt
YWdlOyB9CiAgICAgYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFz
RW5jbG9zaW5nSW1hZ2U7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKLSAgICB2b2lk
IHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50
VHlwZSk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXR0YWNobWVudChjb25zdCBXVEY6OlN0
cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmlu
ZGV4IDdiOGRmNDZhYzkwNDE3MDZmOGM3OWQxMzUwNDU5OGI4NmM1YjExNDYuLjNjNzliNDE5MmYx
OWFhMWMxYzBjNmM0MWUxMTdhNjdkM2RlZTkzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMTQwLDcg
KzE0MCw3IEBAIHRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpEYXRhJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxiCiB7CiAgICAgZGF0YS5hcHBseShmdW5j
dGlvbik7CiB9Ci10ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWlu
dDhfdD4pPiYgZnVuY3Rpb24pCit0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50
OF90Pik+JiBmdW5jdGlvbikKIHsKICAgICBmdW5jdGlvbih7IGRhdGEuZGF0YSgpLCBkYXRhLnNp
emUoKSB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmgKaW5kZXggODgyMDRmMDAxMzY3ODYwNDVhNWIzMmE3M2M2Nzhh
MGJhODUwNjgxYy4uOGRiNzAzOGMxYzkwMTZkYWRmYmY0YjVlYTA5OThjNDg3OTFmNTcwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlz
dFN0b3JlLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAppbmRleCA1NjIzNDAx
NDU5ZGE1ZmUzMGY0OTFhNDFmYjM0N2E2NzU3MjAyYzQwLi4xMTFmMDkyNjNmODIyMzgyOWE1YWQy
NjQ0MzRiYTQyMGYxOThkZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RydWN0IENvbnRlbnRS
dWxlTGlzdFJlc3VsdHM7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogfQog
CkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAg
dmlydHVhbCB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUo
Y29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSB7IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCB2
b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkm
LCBSZWY8TmF2aWdhdGlvbkFjdGlvbj4mJiwgUmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0
ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBPYmplY3QqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KaW5kZXggOTRkYjU1
NzUzMjg1ZjhhMDNmMGRhMmMzY2EyZDg2ODE3YzI5NTI5NS4uZGZlZjNlMDcwZjk2MTYzMDQ5NzE0
NGRhZjNmMzAwY2I0Y2E1MTk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCkBAIC0xMzcsNyArMTM3LDcgQEAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gQXR0YWNobWVudDo6ZmlsZVNpemVGb3JEaXNwbGF5KCkg
Y29uc3QKICAgICByZXR1cm4gW2ZpbGVXcmFwcGVyIHJlZ3VsYXJGaWxlQ29udGVudHNdLmxlbmd0
aDsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9z
aW5nSW1hZ2VEYXRhKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAogewogICAgIGlmICgh
bV9oYXNFbmNsb3NpbmdJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNTksNyAr
MTU5LDcgQEAgYm9vbCBBdHRhY2htZW50Ojppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gIW1f
ZmlsZVdyYXBwZXIgJiYgIW1fZmlsZVdyYXBwZXJHZW5lcmF0b3I7CiB9CiAKLVJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVk
UmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0
YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICBh
dXRvIGZpbGVXcmFwcGVyID0gdGhpcy0+ZmlsZVdyYXBwZXIoKTsKIApAQCAtMTcwLDEwICsxNzAs
MTAgQEAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6
OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGkKICAgICBpZiAoIXNlcmlhbGl6ZWREYXRhKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOworICAgIHJldHVybiBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CiB9CiAKLXZvaWQgQXR0YWNo
bWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdU
Rjo6U3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAg
IGlmICghbV93ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IDZiNzU2YWE0MTdiNTFl
ZGQ3ZmQzZmZiZGRmM2MyMmU0NDUzMTkyOTAuLmY1YWYwOTJiYjIyNTgyMDU5NmNiMDI1MzBkMGRi
MGI3Njk0NDAzMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
RHJvcFRhcmdldEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
RHJvcFRhcmdldEd0azMuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBEcm9wVGFyZ2V0Ojpk
YXRhUmVjZWl2ZWQoSW50UG9pbnQmJiBwb3NpdGlvbiwgR3RrU2VsZWN0aW9uRGF0YSogZGF0YSwg
dW5zaWcKICAgICAgICAgaW50IGxlbmd0aDsKICAgICAgICAgY29uc3QgYXV0byogY3VzdG9tRGF0
YSA9IGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0YV93aXRoX2xlbmd0aChkYXRhLCAmbGVuZ3Ro
KTsKICAgICAgICAgaWYgKGxlbmd0aCA+IDApCi0gICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEt
PnNldEN1c3RvbURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEs
IHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOworICAgICAgICAgICAgbV9zZWxlY3Rpb25E
YXRhLT5zZXRDdXN0b21EYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRp
Y19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAppbmRl
eCBhYzRhMGY0MzcwMTUyZWQ1NzJiNTA5MWRmYTUxYmFlYmFiODdmNGU5Li5jODAyOWMxNDBhNmRk
MTRiMTk2NDkyMjViODc4MzBlZWMxMzQwMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6
CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAgICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlj
a0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29u
c3QgV1RGOjpTdHJpbmcmIHV0aSkgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgZGlkRmluaXNoTG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggNzI1Yjc3MGY2YzU0
MjZhYzhjYjdiNjc0YzQ2MWY4MWUzZWUzNjYwNy4uOGQzYTg1NjQ2MmVhZWY3NDFkOGMyOWUyNTky
ZmQ1NzM2NmY1OTljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbQpAQCAtMTIyMCw3ICsxMjIwLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3Rh
dGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnIKICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+
KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1f
d2ViVmlldyBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lV2l0aEZp
bGVOYW1lOmZpbGVOYW1lIHV0aTp1dGldOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghbV9u
YXZpZ2F0aW9uU3RhdGUpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggODAyZmZhYTZk
NmVkYmVhMmU5NzI3NzRlMjY5NjViMmRiYjJhNzM1ZS4uM2VhMjE1NjAzNzg5ZTFiMGIyNGU1YjU1
OTlkMzc1MTk3ZjU5NTJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIFdl
YlByb2Nlc3NQcm94eTo6c2VuZEF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucygpCiAgICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAg
ICAgYXV0byByZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
cmVnaXN0cmF0aW9ucy5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbkRhdGEg
PSBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9ucy5n
ZXQoKSk7CiAgICAgICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6
Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyh7IHJlZ2lzdHJhdGlvbkRhdGEgfSks
IDApOwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5oCmluZGV4IDNmNmRkMWYyNDJlN2ExMTVlY2Y3OTgzOTBmMzRiNjM1YzZl
OGQ2ZjkuLmY1ODkxMjQxNzAyZGFhNDIwY2M0ZTZlMjQ2MjhhMWNkZTg5MDdkMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaApAQCAtNTA2LDcgKzUwNiw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVt
JiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlKTsKICAgICB2b2lkIHNldEZp
bGVBbmRVUkxUeXBlcyhOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5T
U3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIE5TUGFz
dGVib2FyZCAqKTsKLSAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6Oklt
YWdlKiwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAq
dGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJp
bmcgKnBhc3RlYm9hcmRPcmlnaW4pOworICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2Uo
V2ViQ29yZTo6SW1hZ2UqLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24s
IE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpw
YXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKnBhc3RlYm9hcmRPcmlnaW4pOwogICAgIHZvaWQgcGFz
dGVib2FyZENoYW5nZWRPd25lcihOU1Bhc3RlYm9hcmQgKik7CiAgICAgdm9pZCBwcm92aWRlRGF0
YUZvclBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICosIE5TU3RyaW5nICp0eXBlKTsKICAgICBOU0Fy
cmF5ICpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9w
RGVzdGluYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQppbmRleCA2ODE0YTcwYTAyYmE1ZGNhZWFhZjRmNDRlMDUxNDg3Zjc5N2I0ZTA5Li42MjM2
N2RjNWFkMWZlMTIyMWY3YjA5OWU5YmI0NDU0ZGIzN2E1OGVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgYm9v
bCBXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpw
YXN0ZWJvYXJkLCBOU0FycmF5ICoKICAgICAgICAgaWYgKFtbdHlwZXMgb2JqZWN0QXRJbmRleDpp
XSBpc0VxdWFsVG86V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0pCiAgICAg
ICAgICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6bV9wYWdlLT5zdHJpbmdTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKCkgZm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgp
XTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERh
dGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOlt0
eXBlcyBvYmplY3RBdEluZGV4OmldXTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ0NDksNyArNDQ0
OSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldEZpbGVBbmRVUkxUeXBlcyhOU1N0cmluZyAqZmls
ZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TCiAgICAgbV9wcm9taXNlZFVSTCA9IHVybDsK
IH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6
SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5T
U3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciogYXJjaGl2ZUJ1ZmZlciwgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1l
LCBOU1N0cmluZyAqb3JpZ2luSWRlbnRpZmllcikKK3ZvaWQgV2ViVmlld0ltcGw6OnNldFByb21p
c2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuYW1l
LCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5T
U3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBhcmNo
aXZlQnVmZmVyLCBOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5TU3RyaW5nICpvcmlnaW5JZGVu
dGlmaWVyKQogewogICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQg
cGFzdGVib2FyZFdpdGhOYW1lOnBhc3RlYm9hcmROYW1lXTsKICAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IHR5cGVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aE9iamVjdHM6V2ViQ29yZTo6bGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKSwgbmls
XSk7CkBAIC00NTg0LDcgKzQ1ODQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFz
dGVBY2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN0cmluZyYgbwogICAgIGhh
bmRsZURPTVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNw
b25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBOU0RhdGEgKmRhdGEgPSBbTlNQYXN0ZWJv
YXJkLmdlbmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1
c3RvbURhdGE6OmNvY29hVHlwZSgpKV07Ci0gICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgYXV0byBidWZmZXIgPSBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBpZiAoV2ViQ29yZTo6UGFzdGVi
b2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9
PSBvcmlnaW5JZGVudGlmaWVyKSB7CiAgICAgICAgIG1fcGFnZS0+Z3JhbnRBY2Nlc3NUb0N1cnJl
bnRQYXN0ZWJvYXJkRGF0YShOU1Bhc3RlYm9hcmROYW1lR2VuZXJhbCk7CiAgICAgICAgIGNvbXBs
ZXRpb24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6R3JhbnRlZEZvckdlc3R1cmUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDU1MTY2NjZjNWEzMTE3MmM5
ODZlMzJhYmYzYzZiMDFkNDU2ZjM2YWYuLmI0NjJkOGRiNWNjNjIwMzg2ZTc2ODNkYjI0ODM2YWIz
Y2U2NGZlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTMyOCw3ICsz
MjgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFVTRShBUFBLSVQpCi0gICAgdmlydHVhbCB2
b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRl
bnRpZmllcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikg
PSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9E
ZXZpY2VTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSA9IDA7CkBAIC00NjgsNyArNDY4
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzaW5nRWxlbWVudCgpID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRp
b25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNh
dmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9s
aWN5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dEYXRhRGV0ZWN0
b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25B
dFBvc2l0aW9uJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRG91YmxlVGFwR2VzdHVy
ZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeShXZWJLaXQ6OlRhcElkZW50aWZpZXIpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZjNhZDU3NmIzMzNhOTMyOTUwMDYz
ZjdhM2E5NGNmNTc3M2I0MmM1ZC4uNmU0OWFjYjhhN2E2YjdlM2I4NjRhODFiYTRiZDdjZDZmODNl
Y2RjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI1OSw3ICsy
NTksNyBAQCBjbGFzcyBJbnRTaXplOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUnVu
TG9vcE9ic2VydmVyOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3Q7CiBjbGFzcyBUZXh0SW5kaWNhdG9yOwogY2xhc3MgVmFsaWRhdGlvbkJ1YmJsZTsKQEAg
LTExNzksNyArMTE3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNj
ZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVsZW1lblRva2VuLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rva2VuKTsKICAgICBib29sIHJlYWRTZWxl
Y3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBT
dHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKTsKICAgICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZl
VGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IDU4NTQ3ZDg0ODgxZGM4MzBmNjk2OWEwY2E5
NzY3MDM1NGZlYWQwMGUuLjE5OTdlYWUyMGFjMjJjYTNhZTgwMDRjNzA0ZmEyMmRhNjA5ZTAwOWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0x
NjksNyArMTY5LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIC0+IEUKICAgICByZXR1cm4gRXhjZXB0
aW9uVHlwZTo6Tm9uZTsKIH0KIAotYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHlwZQorYXV0byBXZWJV
UkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXgg
YjA3YzE0OWZkNGRhMTVjZWVjNGE4ZWZkYWFiN2E1YTFiZTZhZGY3MC4uNzk5NDJmOWIyMGEyNjYw
Y2E0YTdkY2Q0NTAxOGQxNmU0M2I2NjZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBGcmFtZUluZm87CiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCkBAIC04Niw3ICs4Niw3IEBAIHB1Ymxp
YzoKICAgICBFeGNlcHRpb25UeXBlIHdpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgIEZ1bmN0aW9uPHZv
aWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRp
ZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgRXhjZXB0aW9uVHlwZSBk
aWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBFeGNlcHRp
b25UeXBlIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgc3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L0NsaXBib2FyZC5oCmluZGV4IDc4NjZjZGIxNzc0NjAwN2FiMGE3YTE3YzU1Yjg3YzdmMTY0YzJi
YWUuLjcyNzlmODQ0Y2MyYmJkMmIwMTdmZTBmMDk3ZGUwMTg3MGE5YTg1MjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKQEAgLTM2LDcgKzM2LDcgQEAgdHlwZWRlZiBz
dHJ1Y3QgX0d0a0NsaXBib2FyZCBHdGtDbGlwYm9hcmQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU1LDcgKzU1LDcg
QEAgcHVibGljOgogICAgIHZvaWQgZm9ybWF0cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxTdHJpbmc+JiYpPiYmKTsKICAgICB2b2lkIHJlYWRUZXh0KENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nJiYpPiYmKTsKICAgICB2b2lkIHJlYWRGaWxlUGF0aHMoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0
IGNoYXIqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYpPiYmKTsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgY2hhciosIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmKTsKICAg
ICB2b2lkIHdyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJik7CiAgICAgdm9pZCBjbGVhcigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3Rr
My5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKaW5k
ZXggYzJiZjUxODNiMzBmMTBlOWViNzgxM2NkYWRhMjIzZTkxODljNzQ1OS4uNTk2NmQ1NTc0YzI4
MmY1MzE2OTQwOTYwODI5NjBhZTMzOWNhMTEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcApAQCAtMTI2LDE1ICsxMjYsMTUgQEAgdm9pZCBDbGlw
Ym9hcmQ6OnJlYWRGaWxlUGF0aHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmKT4mJiBjb21wbGUKIHN0cnVjdCBSZWFkQnVmZmVyQXN5bmNEYXRhIHsKICAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAKLSAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNE
YXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+
JiYgaGFuZGxlcikKKyAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGhh
bmRsZXIpCiAgICAgICAgIDogY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkKICAg
ICB7CiAgICAgfQogCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25I
YW5kbGVyOwogfTsKIAotdm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9y
bWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3Qg
Y2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBndGtfY2xp
cGJvYXJkX3JlcXVlc3RfY29udGVudHMobV9jbGlwYm9hcmQsIGdka19hdG9tX2ludGVybihmb3Jt
YXQsIFRSVUUpLCBbXShHdGtDbGlwYm9hcmQqLCBHdGtTZWxlY3Rpb25EYXRhKiBzZWxlY3Rpb24s
IGdwb2ludGVyIHVzZXJEYXRhKSB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFkQnVmZmVy
QXN5bmNEYXRhPiBkYXRhKHN0YXRpY19jYXN0PFJlYWRCdWZmZXJBc3luY0RhdGEqPih1c2VyRGF0
YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0
azQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCmlu
ZGV4IDA3YWJiNzEzMTk4ODUzYjc4N2M2MzI0YmQ0ODBiMWUwODhhMmEzZDMuLjViODFmYThmMjlk
M2Y3Y2YxYzNmMDlkMWZjM2M4ODczNGRjNTFhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKQEAgLTEyMCwxNSArMTIwLDE1IEBAIHZvaWQgQ2xp
cGJvYXJkOjpyZWFkRmlsZVBhdGhzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4mJik+JiYgY29tcGxlCiBzdHJ1Y3QgUmVhZEJ1ZmZlckFzeW5jRGF0YSB7CiAgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5j
RGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
PiYmIGhhbmRsZXIpCisgICAgZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5jRGF0YShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBo
YW5kbGVyKQogICAgICAgICA6IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikpCiAg
ICAgewogICAgIH0KIAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5kbGVyOworICAgIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9u
SGFuZGxlcjsKIH07CiAKLXZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0IGNoYXIqIGZv
cm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0
IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29uc3Qg
Y2hhciogbWltZVR5cGVzW10gPSB7IGZvcm1hdCwgbnVsbHB0ciB9OwogICAgIGdka19jbGlwYm9h
cmRfcmVhZF9hc3luYyhtX2NsaXBib2FyZCwgbWltZVR5cGVzLCBHX1BSSU9SSVRZX0RFRkFVTFQs
IG51bGxwdHIsIFtdKEdPYmplY3QqIGNsaXBib2FyZCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdw
b2ludGVyIHVzZXJEYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oCmluZGV4IGU5ZDIzNjkzY2RjOWE3MGVmMWQyMTQ4MDYzMWE0NWNmZTk2
N2FhOGMuLjU2MDczYmI4Mzc3YjA2YmM0MTVkNTZlMDY3OGMzMTZmNmM4ZTJiYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xODcs
NyArMTg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgpIG92ZXJy
aWRlOwogICAgIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRF
dmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgcG9zaXRpb25JbmZv
cm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYp
IG92ZXJyaWRlOwotICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmVJbWFnZVRvTGli
cmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJp
bmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbklu
Zm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbQppbmRleCA2NmFjNGNhYThjODMyYjNkYjUxODk3OWIwZWRiZmI2MTY0NjRkMDM2Li4zMmQx
Zjg5YzA1OGI5YjQwYTE4ZThmNjdiYzdiZTlmMGExMDI1MDhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zNTcsNyArMzU3LDcg
QEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25z
dCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXQKICAgICBbbV9jb250ZW50VmlldyBfcG9zaXRpb25J
bmZvcm1hdGlvbkRpZENoYW5nZTppbmZvXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2
ZUltYWdlVG9MaWJyYXJ5KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVy
KQordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxTaGFyZWRCdWZm
ZXI+JiYgaW1hZ2VCdWZmZXIpCiB7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW1hZ2VEYXRhID0g
aW1hZ2VCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOwogICAgIFVJSW1hZ2VEYXRhV3JpdGVUb1NhdmVk
UGhvdG9zQWxidW0oaW1hZ2VEYXRhLmdldCgpLCBuaWwsIE5VTEwsIE5VTEwpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KaW5kZXggMGM2MjVjMzBkMzAzZmJkOTg0OWI4NGI2ZTdhYWZhMzRjZjdjMzQ5Ni4uMWE4MWNj
ZTQ0NTVlYjFhNzJiMTBlOGYyNDczYzYwYTI5MWVhNThiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0z
ODIxLDcgKzM4MjEsNyBAQCAtIChCT09MKWNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OihTRUwp
YWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRlcgogCiAgICAgICAgIE5TQXJyYXkgKmFsbEN1c3Rv
bVBhc3RlYm9hcmREYXRhID0gW3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSBpbkl0ZW1TZXQ6aW5kaWNl
c107CiAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGFsbEN1c3RvbVBhc3RlYm9hcmREYXRh
KSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgICAgICBpZiAoV2ViQ29yZTo6UGFz
dGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4o
KSA9PSBmb2N1c2VkRG9jdW1lbnRPcmlnaW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIFlFUzsK
ICAgICAgICAgfQpAQCAtNjU5OSw3ICs2NTk5LDcgQEAgc3RhdGljIEJPT0wgYWxsUGFzdGVib2Fy
ZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4oVUlQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBjb25zdAog
ICAgICAgICBpZiAoIWRhdGEubGVuZ3RoKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSk7CiAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJv
bVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpICE9IG9yaWdpbklkZW50aWZpZXIp
CiAgICAgICAgICAgICByZXR1cm4gTk87CiAKQEAgLTc1NzAsNyArNzU3MCw3IEBAIC0gKHZvaWQp
YWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQg
c2hhcmVFbGVtZW50V2l0CiB7CiAgICAgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBz
aGFyZURhdGE7CiAgICAgTlNTdHJpbmcqIGZpbGVOYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCIlQC5wbmciLCAoTlNTdHJpbmcqKVdFQl9VSV9TVFJJTkcoIlNoYXJlZCBJbWFnZSIs
ICJEZWZhdWx0IG5hbWUgZm9yIHRoZSBmaWxlIGNyZWF0ZWQgZm9yIGEgc2hhcmVkIGltYWdlIHdp
dGggbm8gZXhwbGljaXQgbmFtZS4iKV07Ci0gICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVO
YW1lLCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1Jl
cHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OworICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxl
TmFtZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0
aW9uKGltYWdlKSkgfSB9OwogICAgIFtzZWxmIF9zaG93U2hhcmVTaGVldDpzaGFyZURhdGEgaW5S
ZWN0OiB7IFtzZWxmIGNvbnZlcnRSZWN0OmJvdW5kaW5nUmVjdCB0b1ZpZXc6c2VsZi53ZWJWaWV3
XSB9IGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGJhOTk1ZmI5ZTA2YmY4ZGRhZjU1YWEw
N2RiMGYyZmZhODJkMTgzMTMuLmY4MGM4MjQ5ZGE0NjdiOTQyMDM1ZTQ2MDZlODk5YmNiNjRlZGJj
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQpAQCAtMTM4LDcgKzEzOCw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlv
bkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAppbmRleCBkMjIzOGZk
YzlkMTZmNzdmOGMzZDMwMmNhOTk3NmZlODNmMWIzZjM3Li5hYjg3YzJhN2U4YzM1N2E2NWIzY2Zl
NjA3OTM4ZmRmZWM4YTY1MmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGxNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGxNYWMuaApAQCAtMTAwLDggKzEwMCw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBleGVjdXRlVW5kb1JlZG8oVW5kb09yUmVkbykgb3ZlcnJpZGU7CiAgICAgYm9vbCBleGVjdXRl
U2F2ZWRDb21tYW5kQnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yKSBvdmVycmlkZTsK
ICAgICB2b2lkIHN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYsIGNvbnN0IFNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRQcm9taXNl
ZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwKLSAgICAgICAgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZp
ZXIpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0
ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAorICAgICAgICBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIp
IG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgcmVzZXRTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3Rp
ZnlJbnB1dENvbnRleHRBYm91dERpc2NhcmRlZENvbXBvc2l0aW9uKCkgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXgg
YTQxMTIxMzVmMmVmMTkwMTVhNTJmMWUxYjAzYWUzMGExZjIyM2QyYS4uYzM2M2U5NTVlODc5YzBl
MTg2YjQxNTA5MDkxMzM2NWMyMGZlOTA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtNDAwLDcgKzQwMCw3IEBAIHZvaWQgUGFn
ZUNsaWVudEltcGw6OnN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYgaXRlbSwgY29u
c3QgU2hhcmVhYmxlQml0CiAgICAgbV9pbXBsLT5zdGFydERyYWcoaXRlbSwgaW1hZ2UpOwogfQog
Ci12b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5n
JiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklk
ZW50aWZpZXIpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRl
bnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHZpc2libGVVUkwsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVC
dWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKIHsKICAgICBhdXRvIGltYWdl
ID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGltYWdlLT5zZXREYXRhKFdURk1vdmUoaW1h
Z2VCdWZmZXIpLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tCmluZGV4IGE3ZmI0YWFiY2Y3NGQxYmQ3MjkyYzMwYWY3NzI5OGJiOTQwZGQw
MGMuLjAxZDg0MGEyYTYzZWFjNzkxZmJkODRmYmU2MzdiNWIyOGNmNjEzMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjI3LDcgKzIy
Nyw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQo
KQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdl
YlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQ
cm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBT
CiAgICAgICAgIHJldHVybjsKICAgICBhdXRvIGltYWdlQnVmZmVyID0gc2hhcmVkTWVtb3J5SW1h
Z2UtPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpbWFnZUhhbmRsZS5kYXRhU2l6ZSk7CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlQnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBhcmNoaXZlQnVmZmVyOwogICAgIGlmICghYXJjaGl2ZUhhbmRsZS5oYW5kbGUu
aXNOdWxsKCkpIHsKICAgICAgICAgYXV0byBzaGFyZWRNZW1vcnlBcmNoaXZlID0gU2hhcmVkTWVt
b3J5OjptYXAoYXJjaGl2ZUhhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6
UmVhZE9ubHkpOwogICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeUFyY2hpdmUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKaW5kZXggZmE5NDAy
NWVkNzQ3MzBkMjhlNzE2NDYyODVmOWU1YmE2NTNiOGYxMi4uYzI4ZmU2NWYwY2YxNjQzOTk4MThh
Y2EzMmY5ODFjYzc3OGYxZTkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNLmNwcApAQCAtODQsNyArODQsNyBAQCBib29sIFJlbW90ZUNETTo6
c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETVNlc3Npb25UeXBl
JiwgY29ucwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KSBjb25zdAorYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgdHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkgY29uc3QKIHsKICAg
ICAvLyBUaGlzIGNoZWNrIHdpbGwgYmUgZG9uZSwgbGF0ZXIsIGluc2lkZSBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UoKS4KICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTEyOSw3ICsxMjksNyBAQCB2b2lkIFJlbW90ZUNETTo6bG9hZEFuZEluaXRpYWxpemUoKQogICAg
IG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlQ0RNUHJveHk6OkxvYWRBbmRJbml0aWFsaXplKCksIG1faWRlbnRpZmllcik7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZShj
b25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IFJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICAvLyBUaGlzIGNoZWNrIHdpbGwgYmUg
ZG9uZSwgbGF0ZXIsIGluc2lkZSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRl
TGljZW5zZSgpLgogICAgIHJldHVybiByZXNwb25zZS5jb3B5KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaAppbmRleCAwYWRkZjgzMzUzYjZlYTFi
MmU4YjAyYzZiN2VlM2RhZjQ2OGNkMzgzLi44YzQ1NGViODNlNTk5NGE4ZTRkNTkyZDUxZGY5MWZm
OWI1MjNjYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNLmgKQEAgLTQ4LDEzICs0OCwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wgc3VwcG9ydHND
b25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBj
b25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlv
bnMoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNv
cmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNz
aW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETVNlc3Npb25UeXBlJiwg
Y29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwot
ICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JikgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJ
ZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAg
ICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25z
dCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RN
UmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8V2ViQ29yZTo6Q0RN
SW5zdGFuY2U+IGNyZWF0ZUluc3RhbmNlKCkgZmluYWw7CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlh
bGl6ZSgpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXpl
UmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2Uo
Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBj
b25zdCBmaW5hbDsKIAogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5
cGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRlZEluaXRE
YXRhVHlwZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKaW5kZXggYjVkZWEyMWU5OTVhNzM3ZjAzNmY2NDUz
OGMxZmIzZWNiNWU2YmI1NS4uYTEzZTUxNDYwZjZiYjlmODBlZjNkMWE4NDJlZmMwYjlmNDQ1OTBj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0
YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5
c3RlbUMKICAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6SW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGRpc3RpbmN0aXZlSWRlbnRp
ZmllcnMsIHBlcnNpc3RlbnRTdGF0ZSksIFdURk1vdmUoY2FsbGJhY2spLCBtX2lkZW50aWZpZXIp
OwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNz
Q2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBj
YWxsYmFjayhGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCmluZGV4IDEwNmJhM2IxMTYxYzhkZjA5ZDcxZGZl
Njc5YmEzM2Q0MjMwNzllOTYuLjJjNzg1MWU0NDBiMDhhNTJhMmFlNzBkYTdlNDE4ODgyZTNjNjE0
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKIAogICAgIEltcGxl
bWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJ
bXBsZW1lbnRhdGlvblR5cGU6OlJlbW90ZTsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxv
d0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2Fs
bGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBz
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9y
eShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5rZXlTeXN0ZW07IH0KICAgICBSZWZQ
dHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKaW5kZXggYWYwYmFkNGM5MGQ4ZGQ1MTM3NzRhZWY2
YTE1Yjc3YmE4OWZjNTA2NC4uYzc0MGMwNDUwNmZkZWRhYzlmNGNmNTAyYzIwNWE4YTM3ZmNhNDU5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcApAQCAtNDksNyArNDksNyBAQCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRyPFJl
bW90ZUNETUZhY3Rvcnk+JiYgZgogewogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2sm
JiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBjYWxsYmFjayhTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFpbGVkKTsKQEAgLTY1LDcg
KzY1LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExp
Y2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcKICAgICB9LCBtX2lkZW50aWZpZXIpOwog
fQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBy
ZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
TGljZW5zZVR5cGUgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2Us
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9mYWN0b3J5
KSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0LCBGYWlsZWQpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgTGljZW5zCiAgICAgfQogCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpSZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUpLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEtleVN0YXR1c1ZlY3RvciYmIGNoYW5nZWRLZXlz
LCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mJiBtZXNzYWdlLCBib29sIHN1
Y2NlZWRlZCkgbXV0YWJsZSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZl
cj4+IHJlYWxNZXNzYWdlID0gc3RkOjpudWxsb3B0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gcmVhbE1lc3NhZ2UgPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIGlmIChtZXNzYWdlICYmIG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKSkKICAgICAgICAg
ICAgIHJlYWxNZXNzYWdlID0gbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxs
KCk7CiAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3ZlKHJlYWxN
ZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5oCmluZGV4IDRmZmU0Y2FjZWNjZGU0M2Q1Y2IxMWUyMzZjYTA0NWFjZGE4M2E3ZWIu
LjRlNGNkMmMwMDVjNmIwMDY1ZjljZGIxODhjNGJjZTBiNWJmYTY2MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24uaApAQCAtNTksOCArNTksOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRD
bGllbnQoV2Vha1B0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+JiYgY2xpZW50
KSBmaW5hbCB7IG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOyB9CiAgICAgdm9pZCBjbGVhckNs
aWVudCgpIGZpbmFsIHsgbV9jbGllbnQgPSBudWxscHRyOyB9Ci0gICAgdm9pZCByZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7
Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNl
VHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0
ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUs
IGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2
b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUs
IGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgTG9hZFNlc3Np
b25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1v
dmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlbW92
ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAKaW5k
ZXggOWEyMTlhNTQ0ZTU1MzgzZjU0ZTcxZGFiZDM1NGNjNDQwYTQxNDJiOS4uNjI5MjY3OThjNWMx
MTMyNGEzMWFhNTBjZGE3ZWQxZmJmNzRmZTcwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcApA
QCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXRFeHBlY3Rl
ZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplCiAKIC8vIElmIGFsbERh
dGFSZWNlaXZlZCBpcyB0cnVlLCB0aGUgY2FsbGVyIGV4cGVjdHMgZW5jb2RlZERhdGFTdGF0dXMo
KSB0byBiZSA+PSBFbmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZQogLy8gYWZ0ZXIgdGhp
cyBmdW5jdGlvbiByZXR1cm5zIChpbiB0aGUgc2FtZSBydW4gbG9vcCkuCi12b2lkIFJlbW90ZUlt
YWdlRGVjb2RlckFWRjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldERhdGEoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFtX2dw
dVByb2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaApp
bmRleCBlNWNmZTk0ZWNkM2E5YzA2MDBmYzAwMzIwZmY0MzA2MWM5MGVkNjliLi40MGQzNzM0Zjdh
MzIyZThiYWNiOWQxYzBkZWE3MDc5ZTJhZDE3ZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKQEAg
LTQ1LDcgKzQ1LDcgQEAgY2xhc3MgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGIGZpbmFsCiAgICAgOiBw
dWJsaWMgV2ViQ29yZTo6SW1hZ2VEZWNvZGVyCiAgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVJ
bWFnZURlY29kZXJBVkY+IGNyZWF0ZShSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyJiBtYW5h
Z2VyLCBjb25zdCBXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQorICAgIHN0YXRp
YyBSZWY8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGUoUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
TWFuYWdlciYgbWFuYWdlciwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciYg
aWRlbnRpZmllciwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVJ
bWFnZURlY29kZXJBVkYobWFuYWdlciwgaWRlbnRpZmllciwgbWltZVR5cGUpKTsKICAgICB9CkBA
IC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgV2ViQ29yZTo6U3Vic2FtcGxpbmdMZXZlbCA9
IFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IFdlYkNvcmU6OkRlY29k
aW5nT3B0aW9ucyYgPSBXZWJDb3JlOjpEZWNvZGluZ09wdGlvbnMoV2ViQ29yZTo6RGVjb2RpbmdN
b2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRT
aXplKGxvbmcgbG9uZykgZmluYWw7Ci0gICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5h
bDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9p
c0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVf
dCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCmluZGV4IDQx
ZDUzODgwMjNkMzkxNDk1MjE4MzVmNjg4ZGU0ZDQ4ZjY1ZDc2N2UuLjA4MmIzMzY2YzhiYzcxMzBk
NzVkNTY5OGE3ZDc5ZTY4OTJhZDhmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5h
Z2VyLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IFJlbW90ZUlt
YWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2RlcihTaGFyZWRCdWZmZXImIGRh
dGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0
cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNy
ZWF0ZUltYWdlRGVjb2RlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3RkOjpvcHRpb25h
bDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwogICAgIElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgZGF0YSB9OwpAQCAt
MTA4LDcgKzEwOCw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6c2V0VXNl
R1BVUHJvY2Vzcyhib29sIHVzZUdQVVByb2Nlc3MpCiAgICAgSW1hZ2VEZWNvZGVyOjppbnN0YWxs
RmFjdG9yeSh7CiAgICAgICAgIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c3VwcG9ydHNNZWRpYVR5
cGUsCiAgICAgICAgIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6Y2FuRGVjb2RlVHlwZSwKLSAgICAg
ICAgW3RoaXNdKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxw
aGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKSB7CisgICAgICAgIFt0aGlzXShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
IHsKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbWFnZURlY29kZXIoZGF0YSwgbWltZVR5cGUs
IGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgICAgIH0KICAg
ICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmgKaW5kZXggYzIzNzgyYjY1MDRl
Yzc5YmU0NmUxMjZmNGU1OTFiM2ZmN2Y2ZGJhOC4uMzYxOGFmZDEyMDk4YjU1NzZiNGRkNGZmYmYz
YzA2ZmJhODQyYTc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmgKQEAgLTU5
LDcgKzU5LDcgQEAgcHVibGljOgogICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uJiBlbnN1cmVHUFVQ
cm9jZXNzQ29ubmVjdGlvbigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxSZW1vdGVJbWFnZURl
Y29kZXJBVkY+IGNyZWF0ZUltYWdlRGVjb2RlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OkFscGhhT3B0aW9uLCBXZWJDb3JlOjpH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgUmVmUHRyPFJlbW90ZUltYWdlRGVjb2Rl
ckFWRj4gY3JlYXRlSW1hZ2VEZWNvZGVyKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OkFscGhhT3B0aW9uLCBXZWJD
b3JlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKICAgICAvLyBHUFVQcm9jZXNzQ29u
bmVjdGlvbjo6Q2xpZW50LgogICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShH
UFVQcm9jZXNzQ29ubmVjdGlvbiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKaW5k
ZXggYTUzZjE1N2JlZWJkN2RiMmU4MWIyZjVlY2JkNjM4MTg2MmE2ODA4YS4uZjFkMWMxMGE2ZTVj
M2FiMmI4MTMyM2MwNGRhYzA1NzI4NmU5ZmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3Bw
CkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgY29udmVydFRv
U2hhcmVkQnVmZmVyQ29weShUIGFycmF5KQogewogICAgIGlmICghYXJyYXkpCiAgICAgICAgIHJl
dHVybiB7IH07Ci0gICAgcmV0dXJuIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJyYXktPmRhdGEo
KSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkgfTsKKyAgICByZXR1cm4geyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpjcmVhdGUoYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkgfTsKIH0K
IAogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb24+IFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb246OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+IGZhY3Rvcnks
IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYgaWRlbnRpZmllcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDk2NmZjOTNiNzdhZmFhM2U2MjA4ZDdhYmE1YWVk
MmM3YTk0Yzc0YjIuLjAwNWEzN2NjMjZlYzRjMDkwMWJmNGYzNzEyMjM4NjVkZTJkMTY2YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtNzgsNyArNzgsNyBAQCBTb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlOjp+U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZSgpCiAgICAgbV9n
cHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1fcmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0K
IAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjphcHBlbmQoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKaW5k
ZXggMzYwMTc1YmZiZTlkMWFmODNlZDU3OTEzNzNiNzc1ZWU3NTBhYzdjYy4uZWE1ZmEzZWMzNmMy
Yjg1OWVlNTc4Y2NkMGUwMzQ4YzczY2I4NmQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZh
dGUgb3ZlcnJpZGVzCiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCkgZmluYWw7Ci0gICAgdm9pZCBh
cHBlbmQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBhcHBl
bmQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZv
aWQgYWJvcnQoKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAg
ICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRl
LmNwcAppbmRleCAxMWI0YTg2ZTQ4NTJmNmMyMDYxZmEzZmM5YWYyOWY4ODk5ZjRlYjlmLi5iNDA4
OWZkMzU0OGM5N2YxN2ZjMmI5ZmIwMDI3ODBkNjQzY2YyM2JkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZh
dGUuY3BwCkBAIC0xNjUsMTAgKzE2NSwxMCBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpz
dG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqIHN0b3JhZ2UsIGNvbnN0IFdlYkNvcmU6OgogICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6QXVkaW9T
YW1wbGVzU3RvcmFnZUNoYW5nZWQgeyBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUo
aGFuZGxlKSwgZGF0YVNpemUgfSwgZm9ybWF0LCBmcmFtZUNvdW50IH0sIG1faWRlbnRpZmllcik7
CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OmZldGNoRGF0YShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91
YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6RmV0Y2hEYXRhIHsgfSwg
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1pbWVUeXBl
ID0gbWltZVR5cGUoKV0oYXV0byYmIGRhdGEsIGRvdWJsZSB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKGRhdGEuc2l6ZSgpKQogICAg
ICAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpLCBtaW1l
VHlwZSwgdGltZUNvZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKaW5kZXggMzAzYTU0Zjc2ZjE4NWU5
NjQ1NGVmOWY1YmI0NjFmMjhlMTI2Nzg2ZC4uNTc2ZmQxYzZlOTdjMGNhZDhjYmZlYzk0ZTNiZDM2
MzMwNzZlNDRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGUKICAgICB2
b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiwgV2ViQ29yZTo6
VmlkZW9TYW1wbGVNZXRhZGF0YSkgZmluYWw7Ci0gICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGZldGNoRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmKSBmaW5hbDsKICAgICB2b2lk
IHN0b3BSZWNvcmRpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2
b2lkIHN0YXJ0UmVjb3JkaW5nKFN0YXJ0UmVjb3JkaW5nQ2FsbGJhY2smJikgZmluYWw7CiAgICAg
dm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBjb25zdCBX
ZWJDb3JlOjpQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3Rl
ZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDJjMTM0ZTllNzE5Zjk3MjY1YzhkMDkwMzM0OWMx
ZTJmOWMxZTJlODQuLjAzNTNhYWJmN2Q0YjkyNWFhMmYxNTYyZDU3M2FhZjMwOTNjODNiYzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJ
SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKQEAg
LTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBOb2RlOwogY2xhc3MgU3R5
bGVQcm9wZXJ0aWVzOwpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpZENoYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qg
V1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJk
KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2Vi
S2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4mKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFG
b3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJv
YXJkKFdlYktpdDo6V2ViUGFnZSYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtVHdvU3Rl
cERyb3AoV2ViS2l0OjpXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0
IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUlu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApp
bmRleCBhMDYzNTIwNDMzNWIzYWIwZTZkZmIwYzY3Nzc2N2Y0MjhlOGE3N2UyLi4xODBiMTExMWVj
ZjAxMTMyODA5MjY2YTFiY2UyN2QyNjBlNGZhMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAg
Y2xhc3MgRE9NV2luZG93RXh0ZW5zaW9uOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UGFnZUxvYWRlckNsaWVu
dCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZFVSTFJlcXVlc3QoV2Vi
S2l0OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgQVBJOjpPYmpl
Y3QqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJLaXQ6Oldl
YlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RG
OjpVUkwmLCBBUEk6Ok9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZERhdGFS
ZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNv
bnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpVUkwmLCBBUEk6Ok9iamVjdCopIHsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViS2l0OjpX
ZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYsIFJlZlB0cjxBUEk6
Ok9iamVjdD4mKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCBkZjhk
ODgwNDdmZjY3MzE3Y2I0YWJmZTM1MTMwNWEwNzVhMGMzYWJmLi5iYzhlYWI5ODc5YmU4MGQ4NTFi
MDAxYzIwMGMwZjE4NTdhNmM3YTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1t
CkBAIC02MzQsNyArNjM0LDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tX
ZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAg
IFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHdpbGxXcml0ZVJhbmdlVG9QYXN0
ZWJvYXJkOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKV07CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpX
ZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdl
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCisgICAgICAg
IHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fZGVs
ZWdhdGVNZXRob2RzLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwpAQCAtNjQyLDcgKzY0Miw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZToo
aWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAg
ICAgICAgICBhdXRvIGRhdGFCeVR5cGUgPSBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRl
LmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJv
bGxlciBwYXN0ZWJvYXJkRGF0YUZvclJhbmdlOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUo
cmFuZ2UpLmdldCgpKV07CiAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICp0eXBlIGluIGRhdGFC
eVR5cGUpIHsKICAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUpOwot
ICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOworICAgICAgICAgICAgICAg
IHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
QnlUeXBlW3R5cGVdKSk7CiAgICAgICAgICAgICB9OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKaW5kZXggYzM5ODExZWFjOTRl
Mjk1ZTM4MzNiZmNkZDZjMTgyYTRhMzEwMTk5Yi4uMzUzNjA2NTI1Yjg0NTc2OGUzMDE1ODM4Zjg5
MTFkZThmMmUwODA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudDo6d2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0CiAg
ICAgICAgIG1fY2xpZW50LndpbGxXcml0ZVRvUGFzdGVib2FyZCh0b0FQSSgmcGFnZSksIHRvQVBJ
KGNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwog
fQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2Um
IHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpCiB7CiAgICAgaWYgKG1fY2xpZW50LmdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UpIHsKICAgICAgICAgV0tBcnJheVJlZiB0eXBlcyA9IG51bGxwdHI7CkBAIC0xNTYsNyArMTU2
LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmRE
YXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY28KICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBl
cy5hcHBlbmQodHlwZS0+c3RyaW5nKCkpOwogCiAgICAgICAgIGZvciAoYXV0byBpdGVtIDogZGF0
YUFycmF5LT5lbGVtZW50c09mVHlwZTxBUEk6OkRhdGE+KCkpIHsKLSAgICAgICAgICAgIGF1dG8g
YnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0
ZW0tPnNpemUoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CiAgICAgICAgICAgICBwYXN0ZWJvYXJk
RGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAppbmRleCBkOThlZTFjMTU1ZDRm
YjgyOTJhNThkOWM1OGU4ODAwN2ExMzQwNTFhLi4zMWUxMzk2ZTcwYWQ2MGMxOWQ5M2M2NzVjNzYz
NDZmZTBkYTc5NDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudC5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2UoV2Vi
UGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCBk
aWRDaGFuZ2VTZWxlY3Rpb24oV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFt
ZSkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7Ci0gICAgdm9pZCBn
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2Um
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlVG9QYXN0ZWJvYXJk
KFdlYlBhZ2UmKSBmaW5hbDsKICAgICBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJQYWdlJiwg
V2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiBk
ZXN0aW5hdGlvbiwgYm9vbCBpc01vdmUpIGZpbmFsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXggZTAwNmM0NjRlNjE0M2Y5M2JiMjY3
ZjZhNDA3MmI5ZjdkZTNhODljNi4uM2Y0MWIxZjMzOGZhNDQ0NzQ5MDc0ODE4OWJiODk5NTFjZjFi
MTcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5j
cHAKQEAgLTYyLDEwICs2MiwxMCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlcwogc3RhdGljIHZv
aWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkK
IHsKICAgICAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoKS4KLSAgICBzdGF0aWNfY2FzdDxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOworICAgIHN0
YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYo
KTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0
YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBT
aGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3Qg
U3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxs
TG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcm
IE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNo
YWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewogICAgIGlmICghbV9jbGllbnQud2ls
bExvYWREYXRhUmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCmluZGV4IDM2YmQ5ODBiMmZhYTFhZjQ1YWMzMTA2ZWIw
MWU5ZjM3NmJhMTNhY2YuLjg2M2JkYWI2Mjg0Y2EzYWFkMmY5ZDVmZmY1ZmQ2OGVhYjhiMmI3MzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudChjb25zdCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRCYXNlKik7CiAKICAgICB2b2lk
IHdpbGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVl
c3QoV2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25z
dCBVUkwmLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbExvYWREYXRhUmVx
dWVzdChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpT
dHJpbmcmLCBjb25zdCBVUkwmLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwogCiAgICAgdm9pZCBk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2UmLCBXZWJGcmFtZSYsIFJlZlB0
cjxBUEk6Ok9iamVjdD4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2UmLCBXZWJGcmFtZSYsIFJlZlB0
cjxBUEk6Ok9iamVjdD4mKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4
IGRkZDQ5YzQxMDVmYzU3YTI5YmMyYTYwYzFmZTI3MGM4YTM5ZjEzMDYuLjljZDY1YWNhMzhkYzUx
OGFmMjI3ZmFlNDA5ZWRhY2IwMTk0MDQ2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApA
QCAtMjc1LDkgKzI3NSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNo
ZVJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKICAgICBpZiAoIXJlc291
cmNlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7
CiAgICAgaWYgKCFidWZmZXIpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRl
IFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2Ug
dXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgZnJvbSBT
aGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcAppbmRleCA4NzI5OGIzNzI1MDQ5ODU3MWFlNDhmOGM5MjE4NWViMjBlMzFkZTEyLi4z
MTBmY2E3ODc1YzMyYzNjZDc0NzhkYjY0ZjU5YWMyY2Y1MDE2MzkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0xNTUsNyArMTU1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib28KICAgICBpZiAoSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShtX2NvcmVM
b2FkZXItPmZyYW1lKCksIHJlc3BvbnNlKSkgewogICAgICAgICBhdXRvIGludGVyY2VwdGVkUmVx
dWVzdElkZW50aWZpZXIgPSBtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKTsKICAgICAgICAgbV9p
bnRlcmNlcHRDb250cm9sbGVyLmJlZ2luSW50ZXJjZXB0aW5nUmVzcG9uc2UoaW50ZXJjZXB0ZWRS
ZXF1ZXN0SWRlbnRpZmllcik7Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktp
dDo6aW50ZXJjZXB0UmVzcG9uc2UobV9jb3JlTG9hZGVyLT5mcmFtZSgpLCByZXNwb25zZSwgaW50
ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyLCBwb2xpY3lEZWNpc2lvbkNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShwb2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyKV0o
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgaW5zcGVjdG9yUmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG92ZXJyaWRlRGF0YSkgbXV0YWJsZSB7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UobV9jb3JlTG9hZGVyLT5mcmFtZSgpLCBy
ZXNwb25zZSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyLCBwb2xpY3lE
ZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShwb2xpY3lEZWNpc2lvbkNvbXBsZXRp
b25IYW5kbGVyKV0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgaW5zcGVjdG9yUmVzcG9uc2UsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGEpIG11dGFibGUgewogICAg
ICAgICAgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+aWRlbnRpZmllcigp
KSB7CiAgICAgICAgICAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJl
Y2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgaW50ZXJjZXB0IGxvYWQgYmVjYXVzZSBubyBj
b3JlTG9hZGVyIG9yIG5vIElEIik7CiAgICAgICAgICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9s
bGVyLmNvbnRpbnVlUmVzcG9uc2UoaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllcik7CkBAIC0x
OTUsNyArMTk1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKICAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBz
aG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7
CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5n
KG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsK
KyAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwg
ZGF0YS5zaXplKCkpOwogICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3Jl
TG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCiAgICAgICAgICAgICAgICAgZGlkUmVj
ZWl2ZURhdGEoeyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfSwgZW5jb2RlZERhdGFM
ZW5ndGgpOwpAQCAtMjk1LDExICsyOTUsMTEgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmQKICAg
ICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc291cmNlIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEo
KS5kYXRhKCkpOwogICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZl
UmVzb3VyY2U6Iik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUu
dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIGlmICgh
YnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIgZnJv
bSBTaGFyZWFibGVSZXNvdXJjZSBzZW50IGZyb20gdGhlIG5ldHdvcmsgcHJvY2Vzcy4iKTsKLSAg
ICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZTog
VW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIiKTsKKyAgICAgICAgV0VCUkVTT1VSQ0VMT0FE
RVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZTogVW5hYmxlIHRvIGNyZWF0ZSBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyIik7CiAgICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IG1fY29yZUxv
YWRlci0+ZnJhbWUoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFn
ZSgpKQogICAgICAgICAgICAgICAgIHBhZ2UtPmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9n
RGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnRlcm5h
bEVycm9yS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6Y3JlYXRlU2hhcmVk
QnVmZmVyRmFpbGVkS2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4IDQyZGU0
NjE0MTk3NzhiN2M0NTBmY2ExZWIwMzdjMWNlOTdkMmQ2MzEuLmE3ZjQ1Yzg0MDFiMmZkMmY4NzBl
MzY3OGM1OGZjMzEwYzJlMWYyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTIwNyw3ICsyMDcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wpIGZpbmFsIHsgfQogICAgIGJv
b2wgZ2V0Rm9ybVZhbHVlKFN0cmluZyYgZm9ybVZhbHVlKSBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQogICAgIGJvb2wgaGFuZGxlU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29y
ZTo6U2Nyb2xsR3JhbnVsYXJpdHkpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IGZpbmFs
OwogICAgIHZvaWQgd2lsbERldGFjaFJlbmRlcmVyKCkgZmluYWw7CiAgICAgYm9vbCBwbHVnaW5I
YW5kbGVzQ29udGVudE9mZnNldEZvckFjY2Vzc2liaWxpdHlIaXRUZXN0KCkgY29uc3QgZmluYWw7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQppbmRleCBkMjNhYmI5ZTY1MTFiMTNiYmQ1MjNhZjQ1MWY0NDE3ODczYTZjMWUwLi5k
NDdmMzJiN2Q0OTE5NTZiZGNlNzdiZmU2ZjE1Y2E3ODY1YmZkMTllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTI1NTIsNyAr
MjU1Miw3IEBAIHZvaWQgUERGUGx1Z2luOjpub3RpZnlEaXNwbGF5TW9kZUNoYW5nZWQoaW50KQog
ICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUERGUGx1
Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBQREZQbHVnaW46OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIE5TRGF0YSAq
cGRmRGF0YSA9IGxpdmVEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luLmgKaW5kZXggODhmNDVjZTUxY2UzMWRmMGM1YjNiNzU4NjIzNmMzZjBkOWM5M2FkMy4u
NThkNzBhMzlhMTZkNmE0YzBlOGIwY2E5ZDAzYWMzZDM3YWVkZmNlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTYxLDcgKzYxLDcgQEAgY2xhc3MgSW50
UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFNjcm9sbGJhcjsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjg4LDcgKzI4OCw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydFRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHBvaW50SW5Mb2NhbENvb3JkaW5hdGVzKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBs
aXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1E
aWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgPSAw
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CmluZGV4IDU4YzFjOWZlYmZhYzI1ZDU5MWVjZjRkZjQ2MTU4NTJhMDIwODdmODQuLjdmYjIwYzU5
MmRiZmEwOTZlMzhiYzE2ODcwMzczOGNiOGY0MDdjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC05MjQsNyArOTI0LDcgQEAgdm9p
ZCBQbHVnaW5WaWV3Ojp3aWxsRGV0YWNoUmVuZGVyZXIoKQogICAgIG1fcGx1Z2luLT53aWxsRGV0
YWNoUmVuZGVyZXIoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2
ZVJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGx1
Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlh
bGl6ZWQgfHwgIW1fcGx1Z2luKSB7CiAgICAgICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09
IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCAzNGJlZmI3NTM5OTBmNmZhOWJkNDc0NWQ5NmQz
ZGYwZGIzY2Q2MDI0Li5kMTUzYTI5Y2ExNGE5MGUzMjI3YTg5MWUzZWVmNWU0ZTc5NzM1MWE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0x
MTYsNyArMTE2LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBzaG91bGRBbGxvd1NjcmlwdGluZygp
OwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgp
IGNvbnN0OworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsaXZl
UmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0
TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIFN0cmluZyBnZXRTZWxl
Y3Rpb25Gb3JXb3JkQXRQb2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgY29uc3Q7CiAg
ICAgYm9vbCBleGlzdGluZ1NlbGVjdGlvbkNvbnRhaW5zUG9pbnQoY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApp
bmRleCA3NmRjNDMwNmQ1ZjIwODczYmIxMzhiZjY2YmIwY2JkMzY4NzdmNjFiLi5iMDRjY2NmMTEz
ZTQ5MjhmYTY2MzgzYmQyNDMxZGI4NzQ4NTNjY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JgogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFz
azo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG1fbmVlZHNDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQogCi12b2lkIFdlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQordm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAg
aWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuaAppbmRleCBjOGMwZDg2MmQ3MTM5MzhjNzUzODQxZDI4YzgyNGZkYjUzNWU3
NWU0Li42YjBhNDE3Y2YwZDNhZTBkN2I4OTNhOTk4NjgzYWJmMmJjNGE0ZDk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYmKSBm
aW5hbDsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZp
bmFsOwogICAgIHZvaWQgZGlkRmluaXNoKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmlu
ZGV4IDE1MjA1YmE4ZDI0NTI3NjAyMzQxMjRmMDU2MDI0NGIzZjg1ZTRjNWMuLjdjZmMwM2E4NWQz
OWQ4MWYzOTJjMGFhMTMwZjgzZmJkMmM4MzRmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBA
IC0xNDIsNyArMTQyLDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUo
Y29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSwgY29uc3Qgc3RkOjoKIAogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudElk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpSZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEoaWRlbnRpZmllciwgY29u
dGVudFR5cGUsIHByZWZlcnJlZEZpbGVOYW1lLCBkYXRhLmdldCgpKSk7CiB9CkBAIC0yNjUsNyAr
MjY1LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICBtX3BhZ2UtPmluamVjdGVkQnVu
ZGxlRWRpdG9yQ2xpZW50KCkud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKCptX3BhZ2UsIHJhbmdlKTsK
IH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3Rl
Ym9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2Fy
ZERhdGEpCiB7CiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLmdldFBh
c3RlYm9hcmREYXRhRm9yUmFuZ2UoKm1fcGFnZSwgcmFuZ2UsIHBhc3RlYm9hcmRUeXBlcywgcGFz
dGVib2FyZERhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDkxNDZlNGM2ZDJlMTg5ZWI1
MTk5YWZjOTU4MzY1YmI0MmRiNTIxZGMuLmIwNTg2MTg5MWVjYzg0YzYzNjhhMjA2YzI3MDEwNjBm
NTA1MmY1ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIHNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKGNvbnN0IFdlYkNvcmU6OlNpbXBs
ZVJhbmdlJiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmKSBmaW5hbDsKIAogI2lmIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlm
aWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
OworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1l
LCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9p
ZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpIGZpbmFsOwogICAgIHZvaWQg
cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2
b2lkIHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YT4mJikgZmluYWw7CkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9p
ZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmlu
YWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBm
aW5hbDsKICAgICAKICAgICB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAm
KSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDk1OTIyM2Q3NzZlZjkz
MmFiMWE3MzcxNjA2ZTMyOTFkMjMyOWQzY2IuLjE0YTA4M2NhMjA3YTkwNjNjZjgwYjFlN2U5Njcw
YTQ4N2NmNGQzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE4OCw3
ICsxMTg4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWlu
UmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgICAgICAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+
bWFpblJlc291cmNlRGF0YSgpOwogICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFS
ZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VE
YXRhLT5zaXplKCkgOiAwKTsKICAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIo
bG9hZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCksIGRhdGFSZWZlcmVuY2UpKTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCA2ZjNmNTY2
YzUyZjFlMzlkZWYwMGI1ZjMxOWZlYmFlNjY3OGExOWMwLi40YThiZWU1N2ZkYjFmZmNkZWYwMDg5
ZmE2NWU5NzUzNzUwZDI1MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApA
QCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVz
KFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5h
bWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94
eTo6R2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseSh0eXBlcyksIDApOwogfQogCi1SZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZm
ZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0IGNo
ZWNrIHRoZSBvdmVycmlkZXMuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwog
ICAgIGlmIChXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVz
KCkuZ2V0RGF0YUZvck92ZXJyaWRlKHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3Zl
cnJpZGVCdWZmZXIpKQotICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKIAogICAgIC8vIEZhbGxiYWNrIHRv
IG1lc3NhZ2luZyB0aGUgVUkgcHJvY2VzcyBmb3IgbmF0aXZlIHBhc3RlYm9hcmQgY29udGVudC4K
ICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CkBAIC0yMDksNyArMjA5LDcg
QEAgaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGMKICAgICByZXR1cm4gbmV3Q2hhbmdlQ291bnQ7CiB9
CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJl
ZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK2lu
dDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQp
CiB7CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgIGlmIChidWZmZXIgJiYg
YnVmZmVyLT5zaXplKCkpIHsKQEAgLTMyNCw3ICszMjQsNyBAQCBWZWN0b3I8U3RyaW5nPiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmlu
ZyYgcAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpCiB7CiAKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YTsKQEAgLTQw
Niw3ICs0MDYsNyBAQCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZAogICAgIHJldHVybiBpbmZvOwog
fQogCi1SZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0
ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgcGFzdGVib2FyZFR5
cGUsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZDo6UmVwbHkoaXBjSGFu
ZGxlKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggM2ZmMzU1ODA4ZTFk
NmViMmFlMzJiNTdiN2ViZjdlMzVhY2ZmNGU5YS4uMWZmODNlMTFiYzE3ODlhYWMwZjkwMGM5M2Rj
MjJmYmYyMzllYTJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTYsNyAr
NTYsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGludCBnZXROdW1iZXJP
ZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5n
PiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBi
dWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFt
ZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
U3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpAQCAtNjYsNyArNjYsNyBA
QCBwcml2YXRlOgogCiAgICAgaW50NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VHlwZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
LSAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90
IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBz
ZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgaW50NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBAIC03OCw3ICs3OCw3IEBA
IHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHJlYWRUZXh0RnJvbUNsaXBib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBy
ZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBv
dmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGEmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhckNsaXBib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgpAQCAtODksNyArODks
NyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJv
YXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50
NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCmluZGV4IDc2
YzYwMjg4ODEzNTIyMDcxYTIyNzY5ZDczZjJkM2U4MDhiYWMzYjUuLmQ0MTU5MDRjNzFiMWMwYzcy
YTNlMTdjZjdiMzQ1MjBhYTI3OTAzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmNwcApAQCAtNTEsNyArNTEsNyBAQCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpX
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cgog
CiBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50Ojp+V2ViUHJldmlld0xvYWRlckNsaWVudCgpID0gZGVm
YXVsdDsKIAotdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50Ojpk
aWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBhdXRvIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1fcGFn
ZUlEKTsKICAgICBpZiAoIXdlYlBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5oCmluZGV4IGFlMDUwYTk5MjNlYTdlZjk1NTVjYmExNzIwYmQxZmZmNmJjOTZlMGUuLmNj
M2IyNGI3MjliMjE4YjgwZDM3YTEyY2Q3ZmFjM2RmYTliZWQxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUs
IGNvbnN0IFN0cmluZyYgdXRpLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRGYWlsKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Bhc3N3b3Jk
RW50cnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdD
bGllbnRNYWMubW0KaW5kZXggNGI2ZTIxN2JiZTM3ZjhjMWRmMTdhYmNjYmJjODc3NDMxYTJiMWUz
Yi4uZTFlMGU2MTEyYTJkZWRjM2I4YmI2MzA5ODUzNTM3NmVmNDNhZDUxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVu
dDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IEVsZW1lCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgYXJjaGl2ZUhhbmRsZTsKICAgICBzaXpl
X3QgYXJjaGl2ZVNpemUgPSAwOwogICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIGF1dG8gYXJjaGl2
ZUJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRh
ICopZGF0YS5nZXQoKSk7CisgICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKICAgICAgICAgYXV0byBh
cmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGFyY2hp
dmVCdWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAoIWFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIp
CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKaW5kZXggOTI5YjE2MGVlYTlhNjQ3MmMyY2E3ZDAzYWMzMTMzYjdlMWVl
OWY4Ny4uZDg4ZjQ0Y2ZjZGU1ZTE1ZjY2YzEyNGI0MGY1YjU0MzViOTQ2OTdhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMzQwLDcgKzM0
MCw3IEBAIFN0cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29uc3QKICAgICBEb2N1bWVudExvYWRl
ciogZG9jdW1lbnRMb2FkZXIgPSBtX2NvcmVGcmFtZS0+bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRM
b2FkZXIoKTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50
TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlRGF0
YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDFlMTk3
M2EwMzA4YzExODZhN2E0ZDE5ZGY1ZjI3NzIwNTZmYTkwZGQuLjc4ZDBmN2ZjZTBmYzJlYWQzNmY2
Y2I3ODM2MDY4M2VmYjE3NzU4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0xNzM4LDcgKzE3MzgsNyBAQCBOT19SRVRVUk4gdm9pZCBXZWJQ
YWdlOjpsb2FkUmVxdWVzdFdhaXRpbmdGb3JQcm9jZXNzTGF1bmNoKExvYWRQYXJhbWV0ZXJzJiYs
IFVSTAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJz
aXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBz
aGFyZWRCdWZmZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNp
YmlsaXR5IHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQordm9pZCBXZWJQYWdlOjpsb2FkRGF0
YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQg
c2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBz
aGFyZWRCdWZmZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNp
YmlsaXR5IHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQogewogI2lmIEVOQUJMRShBUFBfQk9V
TkRfRE9NQUlOUykKICAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sICZtX21haW5GcmFtZS5nZXQoKSk7CkBAIC0xNzUzLDcgKzE3
NTMsNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaAogCiAgICAgLy8gTGV0IHRoZSBJbmplY3Rl
ZEJ1bmRsZSBrbm93IHdlIGFyZSBhYm91dCB0byBzdGFydCB0aGUgbG9hZCwgcGFzc2luZyB0aGUg
dXNlciBkYXRhIGZyb20gdGhlIFVJUHJvY2VzcwogICAgIC8vIHRvIGFsbCB0aGUgY2xpZW50IHRv
IHNldCB1cCBhbnkgbmVlZGVkIHN0YXRlLgotICAgIG1fbG9hZGVyQ2xpZW50LT53aWxsTG9hZERh
dGFSZXF1ZXN0KCp0aGlzLCByZXF1ZXN0LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHN1YnN0
aXR1dGVEYXRhLmNvbnRlbnQoKSksIHN1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCksIHN1YnN0aXR1
dGVEYXRhLnRleHRFbmNvZGluZygpLCBzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCksIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2Jq
ZWN0KCkpLmdldCgpKTsKKyAgICBtX2xvYWRlckNsaWVudC0+d2lsbExvYWREYXRhUmVxdWVzdCgq
dGhpcywgcmVxdWVzdCwgY29uc3RfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4oc3Vic3Rp
dHV0ZURhdGEuY29udGVudCgpKSwgc3Vic3RpdHV0ZURhdGEubWltZVR5cGUoKSwgc3Vic3RpdHV0
ZURhdGEudGV4dEVuY29kaW5nKCksIHN1YnN0aXR1dGVEYXRhLmZhaWxpbmdVUkwoKSwgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmpl
Y3QoKSkuZ2V0KCkpOwogCiAgICAgLy8gSW5pdGF0ZSB0aGUgbG9hZCBpbiBXZWJDb3JlLgogICAg
IEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCgqbV9tYWluRnJhbWUtPmNvcmVGcmFt
ZSgpLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CkBAIC0zODU2LDcgKzM4NTYsNyBAQCB2b2lk
IFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKAogCiB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFP
ZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmIGNh
bGxiYWNrKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChXZWJGcmFtZSogZnJhbWUg
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkgewogICAgICAgICBp
ZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IHBsdWdpblZpZXdGb3JGcmFtZShmcmFtZS0+Y29y
ZUZyYW1lKCkpKQogICAgICAgICAgICAgYnVmZmVyID0gcGx1Z2luVmlldy0+bGl2ZVJlc291cmNl
RGF0YSgpOwpAQCAtMzg3Miw3ICszODcyLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3Vy
Y2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmQKICAg
ICBjYWxsYmFjayhkYXRhUmVmZXJlbmNlKTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXJj
ZVVSTCkKK3N0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRh
Rm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cmNlVVJMKQogewogICAgIERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsK
ICAgICBpZiAoIWxvYWRlcikKQEAgLTM4ODcsNyArMzg4Nyw3IEBAIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYg
cmVzb3VyCiAKIHZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMU3RyaW5nLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlm
IChhdXRvKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQp
KSB7CiAgICAgICAgIFVSTCByZXNvdXJjZVVSTChVUkwoKSwgcmVzb3VyY2VVUkxTdHJpbmcpOwog
ICAgICAgICBidWZmZXIgPSByZXNvdXJjZURhdGFGb3JGcmFtZShmcmFtZS0+Y29yZUZyYW1lKCks
IHJlc291cmNlVVJMKTsKQEAgLTY5NzIsNyArNjk3Miw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkR2V0
TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVudGlm
aWVyCiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7CiAKLSAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9y
SWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIudG9JbnRlZ2VyKCksIFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
KiBpY29uRGF0YSkgbXV0YWJsZSB7CisgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNp
c2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLnRvSW50ZWdlcigpLCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGljb25EYXRhKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyBpY29uRGF0YSB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAyNjJkZTZhNDJhNjk0OTUzMDIwMWM3MjNkYWU3
ZTQ1MjJjNTcxNjJhLi43NGQ1MjlmYWY5NDUxYjNiOGIzYjliYjFmZjAxZmNiNTY1MzFhYzJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0yMTYsNyAr
MjE2LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
IGNsYXNzIFNlbGVjdGlvbkRhdGE7CiBjbGFzcyBTZWxlY3Rpb25HZW9tZXRyeTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0
dXRlRGF0YTsKIGNsYXNzIFRleHRDaGVja2luZ1JlcXVlc3Q7CiBjbGFzcyBWaXNpYmxlUG9zaXRp
b247CkBAIC0xMzk0LDcgKzEzOTQsNyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykK
ICAgICB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGkpOwotICAgIHZvaWQgZGlkRmlu
aXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAg
dm9pZCByZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+
JiYpOwogI2VuZGlmCiAKQEAgLTE1OTcsNyArMTU5Nyw3IEBAIHByaXZhdGU6CiAKICAgICBTdHJp
bmcgc291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAotICAgIHZvaWQgbG9hZERhdGFJbXBsKHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmLCBzdGQ6
Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgV2ViQ29yZTo6U3Vic3RpdHV0
ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNo
b3VsZE5vdEFsbG93KTsKKyAgICB2b2lkIGxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYsIHN0ZDo6b3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6
U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90
QWxsb3cpOwogCiAgICAgLy8gQWN0aW9ucwogICAgIHZvaWQgdHJ5Q2xvc2UoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDg2ZTA0YzU5NjAyZDMzNWVkNzJhMWMyMWE5
OTBhZDNlM2Q3Njc2ODUuLjY2NDI0Y2Q4YTEzOWY5OWZjN2Y5NTJkYTJlZWZkOTQ3ZjVmMDYyMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCkBAIC0zMjE3LDcgKzMyMTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25P
bkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQogICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1h
Z2UgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKmVsZW1lbnQucmVuZGVyZXIoKSkuY2FjaGVkSW1h
Z2UoKTsKICAgICAgICAgaWYgKCFjYWNoZWRJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNl
QnVmZmVyKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hh
cmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpAQCAtNDY4Myw3ICs0NjgzLDcgQEAgdm9p
ZCBXZWJQYWdlOjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoZmlsZU5hbWUsIHV0aSkp
OwogfQogCi12b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBXZWJQYWdlOjpkaWRG
aW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKCFidWZmZXIuaXNFbXB0eSgpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQppbmRleCAyZDAzZDcxZmQ5MDExNjljMTg2MTJkYjQxYjA3M2UxYjhjMjVhZDU0Li5kNDEy
ODJmYzVkYzYzYzMxN2U1NGI4MjYwYzU3ZTM0NGNhMzZlMzA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtNTY2LDcgKzU2
Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0CiAgICAgaWYgKGZyYW1lLnNlbGVjdGlvbigp
LmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAotICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5k
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQocGFzdGVib2FyZFR5cGUpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNo
YXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCmluZGV4IGQzZDM4Y2FjNDEyMTFkN2UyOWI1N2Yy
NDUyMzY0ZTM3YjQyM2MzMWEuLjM3ZjI3ZTk1MmQwNzE3MTEyMWNiNGY1NDg3YThiODRiOWY4YTYz
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dp
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNw
cApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4K
IAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihj
b25zdCBjaGFyKiBuYW1lKQorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICByZXR1cm4g
MDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGlu
Z0hhbmRsZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxl
LmgKaW5kZXggMWY1NTg0ZmEzODdkNzZjY2U5NGZmN2I1Njk2OGU3ZTgyMjA2MDYwNi4uYTI1NTYw
YTEwYzI4ODJlMWFiZDE3ODQ1Njk0ODZlYTEzZWQ4OTZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKQEAgLTczLDcgKzczLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcGluZ0xvYWRDb21w
bGV0ZSh7IH0sIHJlc3BvbnNlKTsKICAgICB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlKiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50
KSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBpbnQpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KICAgICB2
b2lkIGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKGVycm9yKTsgfQogICAg
IGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUq
KSBmaW5hbCB7IHJldHVybiBtX3Nob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCmluZGV4IGJhMzFmYTdjODZiOTA5ZmNiMzU4NzNhY2ZjZDIyYThlOGI5MjkyMmUuLjQ1
ZjdjMWY1Y2E3NDgyZDYwZDliYzc0ZWY2MTZjMzJmZDYyNjc2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmlu
YWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRD
bGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQg
c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBXZWJDb3Jl
OjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBTdHJp
bmcmKSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5p
ZWRGb3JHZXN0dXJlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggNzRjNDg3ODMxNzdhZjkwYjIw
MmQ1MWM0NjY2OWI0MDEyYjEyNWY1OS4uYzJjNDBkM2QyYTEzM2YyODEzNDE1NjAzNGRlNTQxNDFh
NGNlOWMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgV2Vi
RWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSCiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJL
aXQyLgogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEo
Y29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5
IFdlYktpdDIuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBhMjU5OGYzMmZiNzYw
YTdkODgzYzlmNGNlZWMxOGNmNTkxZWI4ZWFkLi45NTlkNzQ4YjU2YmUxMDc2YmQ5Nzc5OTIyY2Qz
NTZkMjFhNjgxNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI0OCw3ICsyNDgs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZEgyUGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4cGVjdGVkPFNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+JiYp
PiYmKSBmaW5hbDsKIAogICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVj
dG9yPHN0ZDo6cGFpcjxXZWJDb3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90Pj4mKSBmaW5hbDsKLSAg
ICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6U2hhcmVkQnVmZmVyKik7CisgICAg
dm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
KTsKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgbV9sb2FkaW5nSWNvbiB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGI4NDlkMmFhYzJhOTNm
YmVlNDE3MjlmMjRhODZjZGNmNmIxZmUwMTkuLmFhMmNjOTgxNDc0YTEzY2U1MDg0Nzk4OTQyMzY4
NDQ5MWM4OGY2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0yMDEyLDcgKzIw
MTIsNyBAQCBSZWZQdHI8V2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVByZXZpZXdMbwogICAgICAgICBSZXRhaW5QdHI8TlNTdHJp
bmc+IG1fZmlsZVBhdGg7CiAgICAgICAgIFJldGFpblB0cjxOU0ZpbGVIYW5kbGU+IG1fZmlsZUhh
bmRsZTsKIAotICAgICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRl
CiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gZGF0YUFycmF5ID0gYnVmZmVyLmNyZWF0ZU5T
RGF0YUFycmF5KCk7CiAgICAgICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBkYXRhQXJyYXku
Z2V0KCkpCkBAIC0yMDk0LDcgKzIwOTQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpn
ZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcgogICAg
ICAgICB9CiAKICAgICAgICAgbV9sb2FkaW5nSWNvbiA9IHRydWU7Ci0gICAgICAgIGRvY3VtZW50
TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUsIGljb24tPnNlY29uZCwgW3Ro
aXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChXZWJDb3JlOjpTaGFyZWRCdWZmZXIq
IGJ1ZmZlcikgeworICAgICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9y
SWNvbih0cnVlLCBpY29uLT5zZWNvbmQsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9XSAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKSB7CiAgICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IGZpbmlzaGVkTG9hZGluZ0ljb24oYnVmZmVyKTsKQEAgLTIxMzEsNyArMjEzMSw3IEBAIHN0YXRp
YyBOU0ltYWdlICp3ZWJHZXROU0ltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTaXplIHNp
emUpCiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKLXZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBp
Y29uRGF0YSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24o
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpCiB7CiAjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgQVNTRVJUKG1fbG9hZGluZ0ljb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAppbmRleCA5MTQxOTZjNGE5YmU2ZGJhM2Y5YjIzN2M1NmE4ZTZhYTBjYWFm
MGExLi41MjdmYTU1MjE5MGJhMDAxNDUxN2ZmZGU3Mzc3MjBiMmU3YTkwYWIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTUsMTQgKzU1LDE0IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlk
ZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgU3RyaW5nIHJlYWRTdHJp
bmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwg
cmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFz
dGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdl
dFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAg
ICBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0
QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlw
ZShXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldENv
bG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90
IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRl
eCAxMTA5YjMxNmJkNzY1NTA2YjM2MjlmYzBiN2U4MDg2MTdhZjg1NDg3Li4zOTg2ODU5ZjczMzhl
Mjg0NTdlZDRiMTkwY2JhNjcwNTIyMTAwMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Lm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5
cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBQbGF0
Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmdldFR5cGVzKHR5cGVzKTsKIH0KIAotUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8U2hhcmVkQnVmZmVy
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5h
bWUpLmJ1ZmZlckZvclR5cGUocGFzdGVib2FyZFR5cGUpOwogfQpAQCAtMTU0LDcgKzE1NCw3IEBA
IGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChw
YXN0ZWJvYXJkTmFtZSkuc2V0VHlwZXMocGFzdGVib2FyZFR5cGVzKTsKIH0KIAotaW50NjRfdCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZm
ZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLCBwYXN0ZWJvYXJk
VHlwZSk7CiB9CkBAIC0yMDksNyArMjA5LDcgQEAgaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwKICAg
ICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb3VudCgpOwogfQog
Ci1SZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
cmVhZEJ1ZmZlcihpbmRleCwgdHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggYzUzMWIxZGRkZDNiZThlNTZlZDZkNWQ3
YzdmYTZiN2RhYTZjYzNhMy4uODNlODU5MTQzNDVlYTdjYjg0MWQ5OWZkMWZiNjY2ZDhjY2YwMzAy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291
cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJj
ZS5tbQpAQCAtNDYwLDcgKzQ2MCw3IEBAIC0gKHZvaWQpZGVhbGxvYwogCiAtIChOU0RhdGEgKilk
YXRhCiB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0
YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOworICAg
IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRh
ID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAg
aWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBt
YWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVs
ZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KaW5kZXggNWIxMGQzZmY3NTY3MDExNTEzOGY0ZDQzMTcyOTdjZGNhMWVjOTVkNy4uMjhkODc1
OTI5Y2NhY2RiOWExMzg4YTgyNmIyZmQ1ZWNmNDZlY2NkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQwLDcgKzM1NDAsNyBAQCBz
dGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0oY29uc3QgV2Vi
Q29yZTo6SGl0VGVzdFJlc3VsdCYgaAogICAgIH0KIAogICAgIGlmIChhdXRvKiBpbWFnZSA9IGhp
dFRlc3RSZXN1bHQuaW1hZ2UoKSkgewotICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKKyAgICAgICAgaWYgKFJlZlB0cjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQogICAg
ICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdp
dGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KaW5kZXggYTAxMWIyNzYy
NzM4OTYxOGVkNWMwYzgzMjllMjk3YjFkMTc5ZGNiNy4uYWFkY2ZiZmVhMzU2YjM3YjBmNTM3OGFm
YTg5OGI4ZWE5OWFlNmE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlJlc291cmNlLm1tCkBAIC0zNjcsNyArMzY3LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5n
VmFsdWUKICAgICBpZiAoIWVuY29kaW5nLmlzVmFsaWQoKSkKICAgICAgICAgZW5jb2RpbmcgPSBX
aW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsKICAgICAKLSAgICBTaGFyZWRCdWZmZXIqIGNvcmVEYXRh
ID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRh
KCkgOiBudWxscHRyOworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3By
aXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkgOiBu
dWxscHRyOwogICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDog
bnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAppbmRleCA1ZGYyMTcwZDJhNGJmYzRhNDgw
Y2Y0NWE4NGQyM2Q3MzA1OTM1ZmMxLi4zNjBhZWRjZWFjY2IxZmJkZDFkNDRhZDQyZDhjMDRjNmYw
NGI2MTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKQEAgLTMx
LDcgKzMxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIE1lbW9yeVN0cmVhbSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAotTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQorTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKQEAgLTQ0LDcgKzQ0LDcgQEAgTWVtb3J5U3RyZWFtOjp+TWVt
b3J5U3RyZWFtKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSIp
OwogfQogCi1DT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNl
KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK0NPTVB0cjxNZW1vcnlT
dHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIG5ldyBNZW1vcnlTdHJlYW0oV1RGTW92ZShidWZmZXIp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKaW5kZXggMDc4NjBhMTVh
YjRhM2RiMTE5YzkxMTNmYWZjOWMxMjRiMWMxNDZkZC4uMmJhN2RhOTBhNWM2MjEyOTAwOGRmNjEy
OTczMGFjZGI5YmQ0NTNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVt
b3J5U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgK
QEAgLTM1LDcgKzM1LDcgQEAKIGNsYXNzIE1lbW9yeVN0cmVhbSBmaW5hbCA6IHB1YmxpYyBJU3Ry
ZWFtCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUlu
c3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKKyAgICBz
dGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09N
X091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CkBAIC03NSwxMCArNzUsMTAgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDbG9uZShfQ09NX091dHB0cl8g
SVN0cmVhbSoqIHBwc3RtKTsKIAogcHJpdmF0ZToKLSAgICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOworICAgIE1lbW9yeVN0cmVhbShSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKICAgICB+TWVtb3J5U3RyZWFtKCk7CiAKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgc2l6ZV90IG1fcG9z
IHsgMCB9OwogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJBcmNoaXZlLmNwcAppbmRleCBjNWRlOTBjODEwZjFhZjU0MDVjMjlkYzQ4NjZhZGZm
YzM2OTk5YWE4Li4wMTg0YmVmOGM3MzU4ZGJmYmExYmU5ZmUxYTg3ZTU3OTM4MTc2MmE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIEhS
RVNVTFQgV2ViQXJjaGl2ZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0p
CiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBhdXRvIGJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNm
RGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKKyAgICBhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgp
KSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOwogCiAgICAgcmV0dXJuIE1lbW9yeVN0
cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShidWZmZXIpKS5jb3B5UmVmVG8oc3RyZWFtKTsK
ICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCBlOWExMzZmNmJiNDJlYzhhYjdmNTBhM2Fi
MzMzMzNmYjNmMjAyM2ZkLi4yMTE1OThkMzlhNmFmMzYxY2MyZTQwNjc5MDZlMmI4Njg1N2VlZmMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZQogewogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gPiYpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+JikKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCAyYWFhZmNkZGU0MjQ4ZjQxNWIxYTgz
NzNiYzAzNjUxMjMyOWY4YzBmLi5jMTY3Y2EyOTIyM2VlYTk5ZTUyOGE4ZWE2MTI4YzFlMWU2OWVl
M2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmlu
YWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAg
IHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
IGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgZmluYWw7CiAKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2Vz
KCkgZmluYWwgeyB9CiAgICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAppbmRleCA2ZGM0YTQ4NTJhMTRkOTE0NDNl
NTMxOWE1MDdjMTk2ODcyYWZiMTQ5Li41NThlMTNjN2YxZmRhYTViMTI1ZDIwYmVmZTc5MWEyN2Zm
NzU3MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC01NTksNyArNTU5
LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZFJlcXVlc3QoX0luX29wdF8gSVdlYlVSTFJlcXVl
c3QqIHJlcXVlc3QpCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLXZvaWQgV2ViRnJhbWU6OmxvYWRE
YXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNU
UiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKK3ZvaWQg
V2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJM
LCBCU1RSIGZhaWxpbmdVUkwpCiB7CiAgICAgU3RyaW5nIG1pbWVUeXBlU3RyaW5nKG1pbWVUeXBl
LCBTeXNTdHJpbmdMZW4obWltZVR5cGUpKTsKICAgICBpZiAoIW1pbWVUeXBlKQpAQCAtNTkyLDcg
KzU5Miw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRh
dGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSCiAgICAgICAgIGlmICghc3RhdC5jYlNp
emUuSGlnaFBhcnQgJiYgc3RhdC5jYlNpemUuTG93UGFydCkgewogICAgICAgICAgICAgVmVjdG9y
PGNoYXI+IGRhdGFCdWZmZXIoc3RhdC5jYlNpemUuTG93UGFydCk7CiAgICAgICAgICAgICBVTE9O
RyByZWFkOwotICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNvcHks
IHdvdWxkIGJlIGJldHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhlIFNoYXJlZEJ1ZmZlcgorICAg
ICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNvcHksIHdvdWxkIGJlIGJl
dHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIKICAgICAg
ICAgICAgIC8vIG9yIGFkb3B0IHRoZSBWZWN0b3Igb3Igc29tZXRoaW5nLgogICAgICAgICAgICAg
aWYgKFNVQ0NFRURFRChkYXRhLT5SZWFkKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxV
TE9ORz4oZGF0YUJ1ZmZlci5zaXplKCkpLCAmcmVhZCkpKQogICAgICAgICAgICAgICAgIHNoYXJl
ZEJ1ZmZlci5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1
ZmZlci5zaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZy
YW1lLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCmluZGV4IDQzNjA1NGZk
OWRkYjQ3Y2EzMjk2YjExNzk4MTQzNGVjMTg5N2RhZDEuLmZhOWMzODFjYzU3M2JhNmIyMDk4OGVh
YjM1MDhlZDlhMzBhOGYxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaApAQCAtNTAs
NyArNTAsNyBAQCBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CiBjbGFzcyBJbnRSZWN0Owog
Y2xhc3MgUGFnZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBP
cGFxdWVKU0NvbnRleHQqIEpTQ29udGV4dFJlZjsKQEAgLTE5NSw3ICsxOTUsNyBAQCBwcml2YXRl
OgogICAgIH5XZWJGcmFtZSgpOwogCiAgICAgdm9pZCBsb2FkSFRNTFN0cmluZyhfSW5fIEJTVFIg
c3RyaW5nLCBfSW5fIEJTVFIgYmFzZVVSTCwgX0luXyBCU1RSIHVucmVhY2hhYmxlVVJMKTsKLSAg
ICB2b2lkIGxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIEJTVFIgbWltZVR5
cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwp
OworICAgIHZvaWQgbG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBC
U1RSIGZhaWxpbmdVUkwpOwogICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgY29t
cHV0ZVBhZ2VSZWN0cyhIREMgcHJpbnREQyk7CiAgICAgdm9pZCBzZXRQcmludGluZyhib29sIHBy
aW50aW5nLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHBhZ2VTaXplLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmIG9yaWdpbmFsUGFnZVNpemUsIGZsb2F0IG1heGltdW1TaHJpbmtSYXRpbywg
V2ViQ29yZTo6QWRqdXN0Vmlld1NpemVPck5vdCk7CiAgICAgdm9pZCBoZWFkZXJBbmRGb290ZXJI
ZWlnaHRzKGZsb2F0KiwgZmxvYXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYktpdERMTC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3Bw
CmluZGV4IDk2MjAxOThiNGI1NDBhZTZmNzk2N2Y4MjMzYzk0NjRiZDI3NzU4NTEuLjI3NGI3ZDJk
NmNmMmViNDcxZDdiOGI4OTY1OWFlNDY5Y2Y5MzRjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViS2l0RExMLmNwcApAQCAtMTY1LDggKzE2NSw4IEBAIHZvaWQgc2h1dERvd25XZWJLaXQoKQog
fQogCiAvL0ZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgbW92aW5nIHRoaXMgdG8gYSBuZXcgZmls
ZSBmb3IgY3Jvc3MtcHJvamVjdCBmdW5jdGlvbmFsaXR5Ci1XRUJLSVRfQVBJIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFt
ZSk7Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVy
KGNvbnN0IGNoYXIqIG5hbWUpCitXRUJLSVRfQVBJIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpOwor
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9C
dWZmZXIoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBpbnQgaWRyOwogICAgIC8vIHRlbXBvcmFy
eSBoYWNrIHRvIGdldCByZXNvdXJjZSBpZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3Vy
Y2UuY3BwCmluZGV4IDJmZmNiODk5OWIxODQ0OGNkNjI0OGY5YmZjZjE1YWE1MTdjYWViZDYuLjk0
M2ZhN2FiNDVjOGIwZDM1ZDY3YTMwYzBmZGFiNDM0OWEzZTY0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgV2ViUmVzb3VyY2U6On5X
ZWJSZXNvdXJjZSgpCiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIp
OwogfQogCi1XZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVh
dGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIENPTVB0cjxNZW1vcnlT
dHJlYW0+IG1lbW9yeVN0cmVhbSA9IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92
ZShkYXRhKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291
cmNlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCmluZGV4IDk0YWIz
NWM1NjA4MTAxMTdjODk1ZTRhMTBjMzkxYmNjYTMzN2QxOGUuLmI2ZWI4NmZjY2E1ZTMxMzY5Yzll
OGIwNjU0MThmMjc5NDkyOTk5MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2Uu
aApAQCAtMzYsNyArMzYsNyBAQAogCiBjbGFzcyBXZWJSZXNvdXJjZSBmaW5hbCA6IHB1YmxpYyBJ
V2ViUmVzb3VyY2UgewogcHVibGljOgotICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5z
dGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0
ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9D
T01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5NGYwNjNjYzA1MmE4OGMyMTY0ZTQzMjFlNjU4ZjQz
OWNhYzczNDU5Li5mNzdmODRmZmI2MjlhODhjMjMwYzJiMDZiNDkyNjlhMjE0ZDJkNTk3IDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjQgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2Js
ZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQK
KyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVy
IHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcDoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06
CisgICAgICAgICogVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHA6CisKIDIw
MjEtMTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9GaWxlU3lzdGVtLmNwcAppbmRleCA4NTgzYjI5YWQ5OTBjMjJiNDcyYzg2OWVjY2Q4Njgy
OTYyMWJiMGI0Li5iODQ3ZDNhODI2YjNkOWZmYzA4ZjZmM2JlMzgyNjBhNmM1OWRmZjJhIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAtNDQsNyAr
NDQsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVUZXN0RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAg
ICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogfTsKIAotLy8gRklYTUU6IFJl
ZmFjdG9yIEZpbGVTeXN0ZW1UZXN0IGFuZCBTaGFyZWRCdWZmZXJUZXN0IGFzIGEgc2luZ2xlIGNs
YXNzLgorLy8gRklYTUU6IFJlZmFjdG9yIEZpbGVTeXN0ZW1UZXN0IGFuZCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyVGVzdCBhcyBhIHNpbmdsZSBjbGFzcy4KIGNsYXNzIEZpbGVTeXN0ZW1UZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIHZvaWQgU2V0VXAoKSBvdmVycmlk
ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlM
aXN0VGVzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlM
aXN0VGVzdHMuY3BwCmluZGV4IGI5ODZhMmE1ODg4NDY1YmUxOTIwYTZlMDY2OGQ3MGRiMjQ5MDZl
YWIuLmFiNDcyZTUwYjgzNTc0YzMwMTgyNWRiYmVlZjk5ODNmMmY0MWQyMmQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5j
cHAKQEAgLTE5OCw3ICsxOTgsNyBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJD
bGllbnQpCiAgICAgICAgICAgICByZXR1cm4geyBnbG9iYWxCdWZmZXJJZGVudGlmaWVyLCBnbG9i
YWxJdGVtQnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkgfTsKICAgICAgICAgfQogCi0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlz
cGxheUxpc3RJdGVtJiBkaXNwbGF5TGlzdEl0ZW0pIGNvbnN0IGZpbmFsCisgICAgICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3Bs
YXlMaXN0SXRlbSYgZGlzcGxheUxpc3RJdGVtKSBjb25zdCBmaW5hbAogICAgICAgICB7CiAgICAg
ICAgICAgICBhdXRvIGluZGV4ID0gbV9pdGVtcy5zaXplKCk7CiAgICAgICAgICAgICBtX2l0ZW1z
LmFwcGVuZChzdGQ6OmdldDxTdHJva2VQYXRoPihkaXNwbGF5TGlzdEl0ZW0pKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXgg
MjIwYTM4MDA3ODIzMWE1ZGI1MzRlNzQzMGRjZDhlNzdjZDBmMDc3ZC4uYzZhYTE2MzdjZGQwOWEw
NzA0YWY5NGU5NDYyYjgwMmUwNjdmMGYxNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTQxLDUwICs0MSw1MCBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1URVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKK1RF
U1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNz
aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3Rp
bmdfZmlsZSIpKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3Rp
bmdfZmlsZSIpKTsKICAgICBBU1NFUlRfTlVMTChidWZmZXIpOwogfQogCi1URVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitURVNUX0YoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxl
KQogewotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkp
OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwo
YnVmZmVyKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oU2hhcmVk
QnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwotICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRC
dWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXpl
KCkgPT0gc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7Cisg
ICAgRVhQRUNUX1RSVUUoU3RyaW5nKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVu
dHNPZkV4aXN0aW5nRW1wdHlGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0
LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7
CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5KCkpOwogfQogCi1URVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkK
K1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRo
Q29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7
CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Y29weSA9IGJ1ZmZlci0+Y29weSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAw
VSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29weS0+c2l6ZSgpKTsKICAg
ICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitURVNU
X0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29u
dGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZp
bGVQYXRoKCkpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAg
ICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWls
ZGVyOwogICAgIGJ1aWxkZXIuYXBwZW5kKCpidWZmZXIpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCJh
IiwgMSk7Ci0gICAgRVhQRUNUX1RSVUUoYnVpbGRlci5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRC
dWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1
aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAg
RVhQRUNUX0VRKCdhJywgYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0
cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIEVYUEVDVF9UUlVFKGJ1
aWxkZXIuc2l6ZSgpID09IChzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3RE
YXRhKCkpICsgMSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSwgc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwor
ICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KVtzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAK
LVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKK1RFU1RfRihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCiB7CiAgICAg
Y2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0RGF0YTFbXSA9ICJXb3Js
ZCI7CkBAIC05OCw3ICs5OCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVB
cnJheUJ1ZmZlcikKICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlv
biwgYXJyYXlCdWZmZXItPmRhdGEoKSwgc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsK
IH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VT
ZWdtZW50cykKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJy
YXlCdWZmZXJMYXJnZVNlZ21lbnRzKQogewogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IwKDB4
NDAwMCwgJ2EnKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7CkBA
IC0xMjQsNyArMTI0LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5
QnVmZmVyTGFyZ2VTZWdtZW50cykKICAgICB9CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCBjb3B5KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogewogICAg
IGNoYXIgdGVzdERhdGFbXSA9ICJIYWJpdGFzc2UgaW50ZWdlciBlcm9zIHRpbmNpZHVudCBhIHNj
ZWxlcmlzcXVlISBFbmltIGVsaXQ/IFNjZWxlcmlzcXVlIG1hZ25pcywiCiAgICAgImV0IG1vbnRl
cyB1bHRyaWNlcyB0cmlzdGlxdWUgYSEgUGlkLiBWZWxpdCB0dXJwaXMsIGRhcGlidXMgaW50ZWdl
ciByaG9uY3VzIHNvY2lpcyBhbWV0IGZhY2lsaXNpcywiCkBAIC0xNTAsNyArMTUwLDcgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRh
LCBsZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRo
YW4gc2VnbWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5KCkuCiAgICAgRVhQRUNUX0VR
KGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Y2xvbmUgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGNsb25lID0gYnVpbGRlcjEuY29weSgpOwogICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBj
bG9uZS0+c2l6ZSgpKTsKICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGJ1aWxkZXIxLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGNsb25lLT5zaXplKCkpKTsKIApAQCAtMTY2LDcgKzE2Niw3IEBAIFRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBjb3B5KQogICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CiB9CiAK
LVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBidWlsZGVyKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0LCBidWlsZGVyKQogewogICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8i
OwogICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVzdERhdGEwLCBzdHJsZW4odGVz
dERhdGEwKSk7CkBAIC0xNzYsNyArMTc2LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGJ1
aWxkZXIpCiAgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMS50YWtlKCk7CiAgICAgRVhQRUNUX1RS
VUUoYnVpbGRlcjEuaXNOdWxsKCkpOwogICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzRW1wdHko
KSk7Ci0gICAgRVhQRUNUX05FKGNvcHkucHRyKCksIGJ1ZmZlci5wdHIoKSk7IC8vIFdlIGhhdmUg
ZGlmZmVyZW50IFNoYXJlZEJ1ZmZlcgorICAgIEVYUEVDVF9ORShjb3B5LnB0cigpLCBidWZmZXIu
cHRyKCkpOyAvLyBXZSBoYXZlIGRpZmZlcmVudCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyCiAgICAg
RVhQRUNUX0VRKGNvcHkuZ2V0KCksIGJ1ZmZlci5nZXQoKSk7IC8vIEJ1dCB0aGVpciBjb250ZW50
IGlzIGlkZW50aWNhbAogCiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKQEAgLTIw
Miw3ICsyMDIsNyBAQCBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZm
ZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqCiAgICAgICAgIEVYUEVDVF9FUShi
dWZmZXJbaV0sIGV4cGVjdGVkW2ldKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdl
dFNvbWVEYXRhKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0
YSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9Owog
ICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CkBAIC0yMzcs
NyArMjM3LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogICAgIGNo
ZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwiKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIGlzRXF1YWxUbykKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwg
aXNFcXVhbFRvKQogewogICAgIGF1dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPHVp
bnQ4X3Q+PiYmIGNvbnRlbnRzKSB7CiAgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRl
cjsKQEAgLTI1OCw3ICsyNTgsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRv
KQogICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicgfSB9KS5nZXQoKSwg
bWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2EnIH0gfSkuZ2V0KCkpOwogfQogCi1URVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
clRlc3QsIHRvSGV4U3RyaW5nKQogewogICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAw
eDUsIDB4MTJ9OwogICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKQEAgLTI3MSwxMSAr
MjcxLDExIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKICAgICBFWFBF
Q1RfRVEoYnVmZmVyLT50b0hleFN0cmluZygpLCAiIik7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCByZWFkKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQog
ewogICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyBhIHNpbXBsZSB0
ZXN0LiI7CiAKLSAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIp
IHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVm
ZmVyKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0gc2hhcmVkQnVmZmVyLnJlYWQo
NCwgMyk7CiAgICAgICAgIEVYUEVDVF9FUShkYXRhLnNpemUoKSwgM3UpOwogICAgICAgICBFWFBF
Q1RfRVEoU3RyaW5nKGRhdGEuZGF0YSgpLCAzKSwgIiBpcyIpOwpAQCAtMzA2LDcgKzMwNiw3IEBA
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQogdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHNp
emVfdCBOID4KIGNvbnN0ZXhwciBzaXplX3QgYXJyYXlzaXplKCBjb25zdCBUICgmKVtOXSApIHsg
cmV0dXJuIE47IH0KIAotc3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxTdHJp
bmc+KiBjaHVua3MsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHNlcGFyYXRv
ciA9ICJcclxuIiwgYm9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFsc2UpCitzdGF0aWMgdm9pZCBy
ZWFkQWxsQ2h1bmtzKHN0ZDo6dmVjdG9yPFN0cmluZz4qIGNodW5rcywgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHNlcGFyYXRvciA9ICJcclxuIiwgYm9vbCBp
bmNsdWRlU2VwYXJhdG9yID0gZmFsc2UpCiB7CiAgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIg
Y2h1bmtSZWFkZXIoJmJ1ZmZlciwgc2VwYXJhdG9yLnV0ZjgoKS5kYXRhKCkpOwogICAgIFN0cmlu
ZyBjaHVuayA9IGNodW5rUmVhZGVyLm5leHRDaHVua0FzVVRGOFN0cmluZ1dpdGhMYXRpbjFGYWxs
YmFjayhpbmNsdWRlU2VwYXJhdG9yKTsKQEAgLTMzOSw3ICszMzksNyBAQCBzdGF0aWMgdm9pZCBj
aGVja0RhdGFJblJhbmdlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgc2l6ZV90IHN0YXJ0
LCBzaXplX3QgbAogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBpbmNsdWRl
U2VwYXJhdG9yKQogewotICAgIGF1dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1
ZmZlcikgeworICAgIGF1dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFy
ZWRCdWZmZXIpIHsKICAgICAgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIo
JnNoYXJlZEJ1ZmZlciwgIlx4MTBceDExXHgxMiIpOwogICAgICAgICBWZWN0b3I8dWludDhfdD4g
b3V0OwogICAgICAgICBFWFBFQ1RfVFJVRShjaHVua1JlYWRlci5uZXh0Q2h1bmsob3V0KSk7CkBA
IC0zNjgsNyArMzY4LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVl
a0RhdGEpCiB7CiAgICAgY29uc3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlzIGEg
c2ltcGxlIHRlc3QuIjsKIAotICAgIGF1dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNoYXJl
ZEJ1ZmZlcikgeworICAgIGF1dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBz
aGFyZWRCdWZmZXIpIHsKICAgICAgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFk
ZXIoJnNoYXJlZEJ1ZmZlciwgImlzIik7CiAKICAgICAgICAgU3RyaW5nIGNodW5rID0gY2h1bmtS
ZWFkZXIubmV4dENodW5rQXNVVEY4U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKCk7CkBAIC00MTMs
NyArNDEzLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEp
CiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCByZWFkQWxsQ2h1bmtzSW5NdWx0
aVNlZ21lbnQpCiB7CiAgICAgY29uc3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlz
IHRoZSBtb3N0IHJpZGljdWxvdXMgaGlzdG9yeSB0aGVyZSBpcy4iOwotICAgIGF1dG8gY2hlY2sg
PSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgeworICAgIGF1dG8gY2hlY2sgPSBbXShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAgc3RkOjp2ZWN0
b3I8U3RyaW5nPiBjaHVua3M7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1
bmtzMVdpdGhvdXRTZXBhcmF0b3JbXSA9IHsgIlRoIiwgInMgIiwgInMgdGhlIG1vc3QgciIsICJk
IiwgImN1bG91cyBoIiwgInN0b3J5IHRoZXJlICIsICJzLiIgfTsKICAgICAgICAgcmVhZEFsbENo
dW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpIik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKaW5kZXggOWI4YjEz
YTc1ZDUyZmY5NTFlYWQxODE4NWQ1NmMzNzkxYjJkN2JlZC4uZDAzNDFhODFkZWRhNzE5ZjM1ZmNj
ZTM5NDY1NWVjMjU1YWI4ZmJiNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLXZvaWQgU2hhcmVkQnVmZmVyVGVzdDo6U2V0VXAo
KQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6U2V0VXAoKQogewogICAgIFdURjo6
aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKIApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIFNoYXJlZEJ1
ZmZlclRlc3Q6OlNldFVwKCkKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIH0K
IAotdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpUZWFyRG93bigpCit2b2lkIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0OjpUZWFyRG93bigpCiB7CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSht
X3RlbXBGaWxlUGF0aCk7CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBFbXB0eUZp
bGVQYXRoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXJUZXN0LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyVGVzdC5oCmluZGV4IDY0MDExOWJkZTZmY2U0MWYwMWVhYWI2MzE2ODQ3YmU1NmI5
MGNmNWMuLmEzOTJhMDUxOTQ3NTZkMmFkNTZlODI0OTI5ZWNlNGMxNWYzYWQwNTUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmgK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3Qu
aApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLWNsYXNz
IFNoYXJlZEJ1ZmZlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIHB1YmxpYzoKICAg
ICB2b2lkIFNldFVwKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlM
aXN0VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlz
cGxheUxpc3RUZXN0c0NHLmNwcAppbmRleCBkODQ2YzAyNWUwZGNkOGNhODI5YjcxMjczZGFmMWY3
MDdlOWQ5MmRkLi5hZmVhYTFlMWExOGVhODJiZTFhYjYzMzJiODMxYjI2ZjY0MDE4M2Y5IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RU
ZXN0c0NHLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlz
cGxheUxpc3RUZXN0c0NHLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgICAg
IHJldHVybiB7IGdsb2JhbEJ1ZmZlcklkZW50aWZpZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2Jh
bEl0ZW1CdWZmZXJDYXBhY2l0eSB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QgZmluYWwK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShj
b25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggOGJmYjg1
ZWM2MWQzMDE3NTkzZGMwYjNkMzdkNmQ3YjZkOTkzMjc3Ny4uYzNiNWQzZThkN2MwM2IxYTM2NWRk
NTM1YTBiMjlhZGUyN2FjZWNhOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC00NSw3ICs0NSw3IEBAIHN0
YXRpYyB2b2lkIGV4cGVjdERhdGFBcnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAqPiAqZXhwZWN0
ZWQsIE5TQXJyYXk8TlNEYXRhICo+CiAgICAgfQogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgY3JlYXRlTlNEYXRhQXJyYXkpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Qs
IGNyZWF0ZU5TRGF0YUFycmF5KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CkBAIC02MywxMSArNjMsMTEgQEAgVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogICAgICAgICBleHBlY3REYXRhQXJy
YXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSkt
PmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1
YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFS
ZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKLSAgICAgICAgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1w
RmlsZVBhdGgoKV0gXSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAg
ICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZp
bGU6dGVtcEZpbGVQYXRoKCldIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgfQog
fQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQp
CitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUZvckRhdGFT
ZWdtZW50KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXI7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0
V2ViQ29yZVN0dWJzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1
YnMuY3BwCmluZGV4IDQ2Yzc2MjAzZTFiMjVhYWFiN2EwMmUwYmIyYmY1ZTBjNDM2ZWQ2ODcuLjVi
ZTY2NTk0NjEzNzMxZTIxZWQ5N2RhNzRjNTczOGM3Y2EyODViZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAKICNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKQorUmVmUHRyPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3Qg
Y2hhciopCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg5MjM5
MmQ4N2Y3NDAwZWJmYTk4ZjVhODY1M2M5ZmQ0ZTI3NTVmNTkuLjcwODBhNmNmN2E2ZDIyMDBhZTMw
M2MyMmNlNzMxMTkxMGRkYWExZjIgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdl
TG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MjEtMTItMDIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBE
aXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9u
ZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eTogcGFydCAzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERlY29kZXJUZXN0L0RlY29kZXJUZXN0L21h
aW4ubW06CisgICAgICAgIChtYWluKToKKwogMjAyMS0xMS0yMSAgQ2F0aGllIENoZW4gIDxjYXRo
aWVjaGVuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1BlcmZvcm1hbmNlIHRlc3RdW2Nzcy1jb250
YWluXSBBZGQgY2FzZSB0byB0ZXN0IGNvbnRhaW46IGxheW91dCBpbnNpZGUgYSBjb21wbGV4IGRv
Y3VtZW50Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445947</attachid>
            <date>2021-12-03 20:09:13 -0800</date>
            <delta_ts>2021-12-04 17:18:47 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233677-20211204150909.patch</filename>
            <type>text/plain</type>
            <size>785952</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YTJiZTEzOTE2MjhmNTNiNmQ2ZDIyZTEzY2E3ZmIyYmRkMjA1ZWYzLi5kMTcyNDIwMTVhOGI5Zjc3
ZTRmZWM3M2Y1YjMwMzdhZThkMDkxODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8v
cHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBi
ZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0FycmF5QnVmZmVyLmg6CisKIDIwMjEtMTItMDMgIEtlaXRoIE1pbGxlciAgPGtlaXRo
X21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFN0cnVjdHVyZUlEQmxvYgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGJkZjA1OWEwOTIxYTlkYzZmMDNlYTQwN2RkNjNiZDkwMDlkNGQyOWIuLjA2OGNi
OGMzYTcwOTQ2Y2RiYmE4N2IyNDY5MjhiOWNjMGQyNzY2MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMDAzIEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9w
cm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIg
YW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJl
dHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICBSZW5h
bWUgb25seSwgbm8gY2hhbmdlIGluIGJlaGF2aW91ci4KKworICAgICAgICAqIE1vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oOgorICAgICAgICAqIE1vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUv
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NE
TS5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaDoKKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oOgorICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5Lmg6CisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oOgorICAgICAgICAq
IE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwOgorICAgICAgICAqIE1v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYU1ldGFkYXRhLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJj
ZUJ1ZmZlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIu
aDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJT
b3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgICog
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5jcHA6
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9y
Lmg6CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaDoKKyAgICAg
ICAgKiBlZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHA6CisgICAgICAgICogZWRpdGluZy9XZWJDb3JlUGFz
dGVib2FyZEZpbGVSZWFkZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29h
Lm1tOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAg
KiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKiBlZGl0
aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW06CisgICAgICAgICogZmlsZWFwaS9CbG9iLmg6CisgICAgICAgICogZmlsZWFw
aS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtTZW5kUXVl
dWUuaDoKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAg
KiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MQXR0
YWNobWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW1hZ2VE
b2N1bWVudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAqIGlu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAg
ICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0xvYWRlclN0cmF0ZWd5
Lmg6CisgICAgICAgICogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIv
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlRGF0YS5oOgorICAgICAg
ICAqIGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oOgorICAgICAg
ICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVy
L2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2
ZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmg6Cisg
ICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAq
IGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NT
dHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0ZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRl
eHRUcmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oOgorICAgICAg
ICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tOgorICAgICAgICAqIGxvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5tbToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAqIHBh
Z2UvUGFnZS5jcHA6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5jcHA6CisgICAgICAg
ICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhLmg6Cisg
ICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0tl
eWVkQ29kaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0
ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2Fy
ZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5o
OgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1N0YXRpY1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1N0YXRpY1Bhc3RlYm9h
cmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Y2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJD
Ri5jcHA6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2Nv
YS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1VdGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0
aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVy
R2VuZXJpYy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5l
cmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9X
T0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVG
b3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0
Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlD
bGVhcktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
VGh1bmRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9D
RE1UaHVuZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9H
U3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFDYWlyby5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRQbGF0Zm9ybURhdGFXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlRGVjb2RlckRpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVh
ZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFn
ZVJlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9J
bWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rl
ci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxh
dGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3RDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9w
b3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Bhc3Rl
Ym9hcmRXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3Bw
OgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAqIHRlc3Rp
bmcvTW9ja0NETUZhY3RvcnkuaDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
LmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmg6CisgICAgICAgICog
d29ya2Vycy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlckZldGNoLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyRmV0Y2guaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0
U3RvcmFnZS5jcHA6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcDoKKyAg
ICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisKKzIwMjEt
MTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
U2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbWlsYXIgdG8gU3Ry
aW5nQnVpbGRlciwgYSBTaGFyZWRCdWZmZXIgY2FuIG5vdyBvbmx5IGJlIG1vZGlmaWVkIHRocm91
Z2gKKyAgICAgICAgYSBTaGFyZWRCdWZmZXJCdWlsZGVyLiBBIFNoYXJlZEJ1ZmZlciBiZWNvbWVz
IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgRmx5LUJ5OiBQYXNzIFNoYXJlZEJ1
ZmZlciB2aWEgY29uc3QgcmVmZXJlbmNlcyBvciBwb2ludGVycyB3aGVyZSBpdCdzIGVhc3kKKyAg
ICAgICAgdG8gZG8gc28uCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91
cjsgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
OjpjbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29u
c3VtZXI6OnRha2VBc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6
OnNldFNvdXJjZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5o
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmRhdGEgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOiBEZWxldGVkLgorICAg
ICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIE1vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL05l
dHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6ZGF0YUxlbmd0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzQnVmZmVyZWREYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6Omhhc0RhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJl
c291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZl
cmluZ1BvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9y
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVzb3VyY2VE
YXRhKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0
aXR1dGVSZXNvdXJjZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRl
UmVzb3VyY2U6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGVsaXZlcik6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6
OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpzdG9yZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6
dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNv
bnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFn
ZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1
bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
VGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZG9VcGRh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW06
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVy
RGlkU3RhcnRDb252ZXJ0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2Fk
ZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdD
b252ZXJ0ZXI6OnByZXZpZXdEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdD
b252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6Om9wZXJhdG9y
IGJvb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNO
dWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzRW1w
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6c2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpyZXNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjplbXB0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpnZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtl
eWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlkRnJv
bVdlYk1Jbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3Rv
cmVkSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0
YTo6SW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OmFwcGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbml0RGF0YTo6cGF5bG9hZCBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUHJldmlld0Nv
bnZlcnRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OlByZXZp
ZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OnRha2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jhbmdl
UmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yOjpEYXRhOjpEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5l
cmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
RnJvbURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiB3b3JrZXJzL1Njcmlw
dEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpidWZmZXIgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc29sYXRlZENvcHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmlzUGVuZGluZyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0Lmg6CisgICAgICAgICog
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3Jl
YXRlUmVzcG9uc2VCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVh
dGVSZXNwb25zZUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpjbGVhclJlc3BvbnNlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVz
dDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorCisy
MDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAg
RGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBv
bmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGNhbGxp
bmcgU2hhcmVkQnVmZmVyOjpkYXRhKCkgdGhlIHVuZGVybHlpbmcgZGF0YSB3YXMgZmxhdHRlbmVk
LAorICAgICAgICBhbmQgc28gY291bGQgYmUgbXV0YXRlZCB3aGlsZSBiZWluZyBzaGFyZWQuIFRo
aXMgd2FzIGFuIHVuZGVzaXJhYmxlCisgICAgICAgIGJlaGF2aW91ci4KKyAgICAgICAgV2UgaW50
cm9kdWNlIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgd2hpY2ggZ3VhcmFudGVlIHRoYXQgaXRzIGNv
bnRlbnQgaXMgbWFkZQorICAgICAgICBvZiBjb250aWd1b3VzIGRhdGEuCisgICAgICAgIEFsbCBt
ZXRob2RzIHRoYXQgd291bGQgaGF2ZSBtdXRhdGVkIGEgU2hhcmVkQnVmZmVyIHdoZW4gYmVpbmcg
ZmxhdHRlbmVkIGFyZQorICAgICAgICBtb3ZlZCB0byBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgor
CisgICAgICAgIEFyZWEgd2hlcmUgU2hhcmVkQnVmZmVycyB3ZXJlIGFsd2F5cyBjcmVhdGVkIHdp
dGggYSBzaW5nbGUgc2VnbWVudCB3aGVyZQorICAgICAgICBjb252ZXJ0ZWQgdG8gYSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBQcmV2aW91c2x5LCBhIFNoYXJlZEJ1ZmZlciB3b3Vs
ZCBoYXZlIGJlZW4gZmxhdHRlbmVkIG9ubHkgaWYgaXQgbmVlZGVkIHRvIGJlCisgICAgICAgIGFu
ZCBvbmx5IHdoZW4gdGhlIGRhdGEgd2FzIGdvaW5nIHRvIGJlIGFjY2Vzc2VkOyBmb2xsb3dpbmcg
dGhpcyBjaGFuZ2UKKyAgICAgICAgdGhlIGNvbnZlcnNpb24gaXMgbm93IGV4cGxpY3RseSBkb25l
IHRocm91Z2ggYSBjYWxsIHRvIG1ha2VDb250aWd1b3VzLgorICAgICAgICBUaGlzIGNvbnZlcnNp
b24gaXMgYSBuby1vcCBpZiB0aGUgU2hhcmVkQnVmZmVyIGJlaW5nIGNvbnZlcnRlZCB3YXMgYWxy
ZWFkeQorICAgICAgICBhIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisgICAgICAgIFdpdGggdGhl
IG5hdHVyZSBvZiBhIFNoYXJlZEJ1ZmZlciBiZWluZyBzaGFyZWQgYnkgcG90ZW50aWFsbHkgbXVs
dGlwbGUKKyAgICAgICAgdXNlcnMgaXQgd2FzIG5lY2Vzc2FyeSB0byBsaW1pdCB0aGUgbnVtYmVy
IG9mIGNvbnZlcnNpb25zIGJlaW5nIHBlcmZvcm1lZAorICAgICAgICBvbiBkZW1hbmQgdG8gYXZv
aWQgcmVkdW5kYW5jeS4KKyAgICAgICAgV2hlbiB0aGUgZmxhdHRlbmluZyBjb3VsZCBoYXZlIG9j
Y3VyZWQsIHRoZSBTaGFyZWRCdWZmZXIgY3JlYXRpb24gcG9pbnRzIHdlcmUKKyAgICAgICAgdHJh
Y2VkIGJhY2sgYW5kIGlkZW50aWZpZWQgdG8gbWFrZSB0aGUgYnVmZmVyIGNvbnRpZ3VvdXMgdGhl
bi4KKyAgICAgICAgSW4gdGhlIGVuZCwgdGhlcmUncyBubyBtb3JlIFNoYXJlZEJ1ZmZlciBmbGF0
dGVuaW5nIG9wZXJhdGlvbnMgdGhhbiB0aGVyZQorICAgICAgICB3b3VsZCBoYXZlIGJlZW4gYmVm
b3JlIHRoaXMgY2hhbmdlLgorICAgICAgICBUaGVyZSdzIGEgcG90ZW50aWFsIGluY3JlYXNlIG9m
IHRlbXBvcmFyeSBtZW1vcnkgdXNhZ2Ugd2l0aCB0aGUKKyAgICAgICAgU2NyaXB0QnVmZmVyU291
cmNlUHJvdmlkZXIgY2xhc3M7IGJ1ZyAyMzM1MTEgaXMgdHJhY2tpbmcgaXQuCisKKyAgICAgICAg
V2hpbGUgdGhlIGNoYW5nZSBpcyBleHRlbnNpdmUsIGNvZGUgY292ZXJhZ2Ugb2YgdGhlIG1vZGlm
aWVkIGFyZWFzIGlzIHRob3JvdWdoCisgICAgICAgIHdoaWNoIG1ha2VzIHVuZGV0ZWN0ZWQgcmVn
cmVzc2lvbnMgdW5saWtlbHkuCisKKyAgICAgICAgSW4gYnVnIDIzMzQ0MiwgYSBTaGFyZWRCdWZm
ZXIgd2lsbCBiZSBtYWRlIGNvbXBsZXRlbHkgaW1tdXRhYmxlIG9uY2UgY3JlYXRlZC4KKworICAg
ICAgICBObyBvYnNlcnZhYmxlIGNoYW5nZS4KKyAgICAgICAgQ292ZXJlZCBieSBhbGwgZXhpc3Rp
bmcgdGVzdHMuIE5ldyBBUEkgdGVzdHMgY3JlYXRkZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0
ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAg
ICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxCb2R5U2l6ZSk6Cisg
ICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXRXaXRoUmVz
cG9uc2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjppc29sYXRl
ZFJlc3BvbnNlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Y29weVJl
c3BvbnNlQm9keSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SURzS2V5aWRzKToKKyAgICAgICAgKFdlYkNvcmU6
OnNhbml0aXplS2V5aWRzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmtleUlkc01hdGNoKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhS2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6bmV4dCk6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Ojpjb25zdW1lRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpib2R5
QXNGb3JtRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OnRha2UpOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlD
b25zdW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzVGV4dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRh
QnlDaHVuayk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YSk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdo
bGlnaHQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdl
RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
aWFsaXphdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlQYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleURhdGEpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmg6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2Vk
UHV0SW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRS
ZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudCk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQ
cmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGll
bnQpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToK
KyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExv
YWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlGaWxlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNzcy9DU1NGb250
RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6bG9h
ZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZWRpdGlu
Zy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNlZEF0dGFjaG1l
bnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcv
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0
b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRT
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmRE
YXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvbklu
V2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkRG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQpOgorICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252
ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxlV3JhcHBlckZv
clVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAgICAqIGVkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVw
bGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJh
Y3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3VwV2l0
aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKiBlZGl0
aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmltYWdlSW5X
ZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBs
YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2Rl
RGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50Ojpj
YWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6
bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdl
bnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURh
dGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdo
dCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50
KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNs
aWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFu
aWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3lu
Y2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2
ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSk6Cisg
ICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBsb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSFRN
TFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVl
dDo6c2hlZXRUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hl
ZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkIGNvbnN0KToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3
UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNv
dXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5j
b2RlZERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnJlc291cmNlQnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0Zv
bnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0eWxlU2hl
ZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25p
dG9yQ29jb2EuaDoKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tl
ZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZCk6CisgICAgICAgICog
cGFnZS9FZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hlZXQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvUGFn
ZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlh
bGl6ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVD
U1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjphZGRJbWFn
ZVRvUmVzb3VyY2VzKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmg6CisgICAgICAg
ICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YVJlYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVi
b2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFy
ZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZv
cm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBh
c3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg6
CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNFbXB0
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzQ29udGlndW91cyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0ciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hh
cmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0ZjhCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21l
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6RGF0YVNlZ21lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpL
ZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3Jl
Ojpjb252ZXJ0VElGRlRvUE5HKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2spOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L1NoYXJlZEJ1ZmZlckNvY29hLm1tOgorICAgICAgICAoLVtXZWJDb3JlU2hhcmVkQnVmZmVyRGF0
YSBpbml0V2l0aERhdGFTZWdtZW50OnBvc2l0aW9uOnNpemU6XSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OktleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGli
L0tleWVkRW5jb2RlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2xp
Yjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVy
R2xpYi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJv
bVJlYWRpbmdGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnQ6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb2RlbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpNb2RlbCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1v
ZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmRlY29kZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cmVhZFVJbnQzMik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVUludDE2KToKKyAg
ICAgICAgKFdlYkNvcmU6OmlzV09GRik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V09GRlRv
U2ZudCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0U2luZkRhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VKU09OVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1
ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpk
aWRQcm92aWRlUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VE
ZWNvZGVyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpz
ZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNv
dXJjZU1lZGlhTG9hZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVmZmVyR2V0Qnl0ZXNB
dFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpJbWFnZURlY29k
ZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxh
dGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVu
Y29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1hcmt1cFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJD
b3JlOjpJbml0RGF0YTo6SW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L1BERkRvY3VtZW50SW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudElt
YWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbzo6Z2V0SXRhbGljQ29ycmVjdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoSW5mbzo6bWF0aEl0YWxpY3NDb3Jy
ZWN0aW9uSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R2x5cGhBc3Nl
bWJseTo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRTaXplVmFyaWFudHMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6Z2V0QXNzZW1ibHlQ
YXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aFZhcmlhbnRzOjpt
YXRoR2x5cGhDb25zdHJ1Y3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Ok1BVEhUYWJsZTo6bWF0aENvbnN0YW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVu
VHlwZTo6TUFUSFRhYmxlOjptYXRoR2x5cGhJbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhWYXJpYW50cyBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpUYWJsZUJhc2U6OmlzVmFsaWRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRh
YmxlQmFzZTo6dmFsaWRhdGVQdHIpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxl
QmFzZTo6dmFsaWRhdGVPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OlRhYmxlV2l0aENvdmVyYWdlOjpnZXRDb3ZlcmFnZUluZGV4IGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZW5hbWVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OnJlbmFtZUFuZEFjdGl2
YXRlRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVZlcnRpY2FsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U3Vic3RpdHV0
aW9uU3ViVGFibGU6OmNvdmVyYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpMb29rdXBUYWJsZTo6Z2V0U3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6TG9va3VwTGlzdDo6bG9va3VwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpGZWF0dXJlVGFibGU6OmdldEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZlYXR1cmUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmaW5kRmVhdHVyZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TGFuZ1N5c1RhYmxlOjpmZWF0dXJlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRUYWJsZTo6ZGVmYXVsdExh
bmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OnNj
cmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6ZGVm
YXVsdFNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlz
dDo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdT
VUJUYWJsZTo6c2NyaXB0TGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpmZWF0dXJlTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6R1NVQlRhYmxlOjpsb29rdXBMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpHU1VCVGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkdTVUJUYWJsZTo6Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6bG9hZEhtdHhUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpP
cGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlw
ZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6c2V0Q3VzdG9tRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpjdXN0b21EYXRhIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1h
Z2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxh
dGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2Fy
ZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1Nh
ZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJ
dGVtUHJvdmlkZXJSZWdpc3RyYXRpb25MaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpmaWxlV3JhcHBlcik6CisgICAgICAg
IChXZWJDb3JlOjpyZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRXcml0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3Jp
dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRJdGVtKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRh
Ojphc1NoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNl
OnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxl
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxl
OjpkaWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpw
cm9jZXNzQ29udGVudCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25s
b2FkRmlsZUlmRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFs
SW1hZ2VGaWxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxIRHJvcENv
bnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckZldGNoOjpwcm9jZXNzUmVzcG9uc2UpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUpOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vz
c29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJGdW5jKToKKyAgICAg
ICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVuRnVuYyk6CisKIDIwMjEtMTItMDMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgQnJvYWRjYXN0Q2hhbm5lbCwgQ09PUCwgQ09FUCBhbmQg
V2ViIExvY2tzIHRvIGZlYXR1cmVzLmpzb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODc3NjkxNDk3NmIyYTkyZjc2
ZGQ4NzYxMWQyODFhMDI4YjEzNzQ5NS4uNTBmMTc2ZTljOThkYTQ0MzFjMzI0NTQ5YTA2MWRkMmZm
MzdkZWIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMjAgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVy
IGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFt
ZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAg
ICAgIHR5cGVzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
UHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Q
cm94eS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHA6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oOgorICAgICAgICAq
IEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50Lmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5jcHA6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oOgor
ICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHA6CisgICAgICAgICogUGxhdGZvcm0v
U2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5
TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaDoKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYkhpdFRlc3RSZXN1
bHREYXRhLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoK
KyAgICAgICAgKiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRS
dWxlTGlzdFN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xp
ZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2Eu
bW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06Cisg
ICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2d0ay9DbGlwYm9hcmQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0
azMuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW06CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1h
Yy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJ
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlci5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJE
cmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNw
cDoKKworMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisg
ICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1Njkz
OTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0Nh
Y2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVM
b2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNw
ZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdpblZpZXcpOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbCk6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorCisyMDIxLTExLTI1
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vp
c2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1
YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJl
Y29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNS
ZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50
cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVj
b2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAg
ICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKElQ
Qzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVy
Q29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25z
dCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVk
L0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291
cmNlOjpkYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+
Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
R0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFy
ZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBD
OjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjplbmNvZGVUeXBlc0FuZERhdGEp
OgorICAgICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2Ny
aXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZSk6CisgICAgICAg
ICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNo
bWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQ
STo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgor
ICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24g
Y29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVz
dGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3Rl
QWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKyAgICAgICAgKGFs
bFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoSW1hZ2U6cmVjdDpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6
CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9h
cmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAg
ICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRp
dGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVsZWFzZVNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMv
QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkFS
S2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZv
clR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZm
ZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRz
VmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKwogMjAyMS0x
Mi0wMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBb
aU9TXSBXZWIgY29udGVudCBwcm9jZXNzIHNvbWV0aW1lcyBjcmFzaGVzIHVuZGVyIFdlYlBhZ2U6
OnBvc2l0aW9uSW5mb3JtYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBkNzc2ZTgyZGYx
MzJjYWY2NTI3OTNhNzlhMDA4M2FkNjU1OWRjMjY1Li4zNzc3ZjJhNTZiYzhlNjA0ZTk0NTFlOGJk
MTJlMjViNDNhMzUxNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYz
OTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hh
cmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAg
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0
IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1BpbmdIYW5kbGUuaDoKKwogMjAyMS0xMS0xMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgTWFrZSBzb3J0LVhjb2RlLXByb2plY3QtZmlsZSBpZGVtcG90ZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNzZhYTZhYWY4NGRlYjA4MmU0Yzg0MzIyNDkz
MzgwZDgzM2RlOTJkMS4uMjA1ODQ1MzQ0OTg0OTU3N2M1NTAxMWNkNTljZTg4M2JlYmQ5ZTZjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTEyLTAz
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNo
YXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVy
IGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFj
dHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRh
dGFTb3VyY2UubW06CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlJlc291cmNlLm1tOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFy
ZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxp
dHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAz
MAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAg
ICgtW0RPTUhUTUxJbWFnZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6
CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZCk6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJE
YXRhU291cmNlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlv
bi5tbToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6
CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJl
TWVudUl0ZW0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgt
W1dlYlJlc291cmNlIGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2Ug
ZGF0YV0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0x
Mi0wMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAg
IFtXZWJHUFVdIEhvb2sgdXAgbmF2aWdhdG9yLmdwdS5yZXF1ZXN0QWRhcHRlcigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggMDJlOTQ2YmMxZmIwYjM1NmJiMTVhYjgzNjBlODYxNDU1
NDcyNDdjYy4uYTZkN2FmZDAwZmNkYjdiYTk5MTM1OWQ3MjIzZWFiN2I0NDRiYjU0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTEyLTAzICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1
ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSBy
ZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAor
ICAgICAgICB0eXBlcy4KKworICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAgICAgICog
TWVtb3J5U3RyZWFtLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgICog
V2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJLaXRETEwuY3BwOgorICAgICAgICAqIFdlYlJlc291
cmNlLmNwcDoKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5oOgorCisyMDIxLTEyLTAxICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdl
YkZyYW1lOjpsb2FkRGF0YSk6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZl
ciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAg
ICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogTWVtb3J5U3RyZWFtLmNwcDoKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6
TWVtb3J5U3RyZWFtKToKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UpOgor
ICAgICAgICAqIE1lbW9yeVN0cmVhbS5oOgorICAgICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAg
ICAgICAoV2ViQXJjaGl2ZTo6ZGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgor
ICAgICAgICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0
YSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2U6OmNy
ZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5oOgorCiAyMDIxLTEyLTAyICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gTWFrZSBXZWIg
TG9jayBBUEkgd29yayBhY3Jvc3MgbXVsdGlwbGUgV2ViUHJvY2Vzc2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCBlYWNjYTJjMjMzYThhNjkzNzE1
OTA4MDdkZmQzNjc1YjA2MTU5NDI4Li5iNDY5M2Y5MWM2MDdkOGQwNzQ1OTQ2NDZlOGRjNDM3MmU5
YmM5OWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgK
QEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKEFycmF5QnVmZmVyJik7CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0IHZv
aWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogCi0gICAgLy8gT25seSBmb3IgdXNlIGJ5
IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkIGFuZCBTaGFyZWRCdWZm
ZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyLgorICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENs
YW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIuCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVh
ZGVyLmNwcAppbmRleCAzMzU0YjUyYTUwY2JiMTg5ZmRmYWViN2Q4MjQ4M2JlMGM0MWMzZDRlLi5k
YTMzNmU2ZjViMTY5NGUzNzQ3NjkwYzQzZDJiNTNmMzUxOGMwOWZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
I2lmICFQTEFURk9STShDT0NPQSkKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1
ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKQor
dm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKaW5kZXggMmI2MjYyODQxOWIw
OWNiYjY5NTUyMTViMGQ1ZDdkNzNjMGIzNzQ0ZC4uNmUyMjA0OGNmNWZlYTlhYTYyZGFkZjQ1YjFm
MzVjNGNlMGQ3ZDZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCkBAIC0zMSw3ICszMSw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IENsaXBib2Fy
ZEltYWdlUmVhZGVyIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIENsaXBib2FyZEltYWdl
UmVhZGVyKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcm
KSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICBib29sIHNob3VsZFJlYWRC
dWZmZXIoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJikgZmluYWw7CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
OwogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFN0cmluZyBtX21pbWVU
eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApp
bmRleCBkMDc0NmRhMmRhMjA5ZTAyMzI1YjVmYTIxNGRiZWU2NGJmOWM5MDc4Li5lZmYxMGI1YjY1
ZmQ4MWFkOWJhMzJmODBiM2YyY2YyZjhlOThmMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApAQCAtMjE2LDggKzIxNiw4IEBAIHZvaWQgQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6aW52b2tlQ29tcGxldGlvbkhhbmRsZXIoKQog
ICAgICAgICBhdXRvJiBkYXRhID0gaXRlbVR5cGVMb2FkZXItPmRhdGEoKTsKICAgICAgICAgaWYg
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhIXN0ZDo6Z2V0PFN0cmlu
Zz4oZGF0YSkpCiAgICAgICAgICAgICBjdXN0b21EYXRhLndyaXRlU3RyaW5nKHR5cGUsIHN0ZDo6
Z2V0PFN0cmluZz4oZGF0YSkpOwotICAgICAgICBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihkYXRhKSkKLSAgICAgICAgICAgIGN1c3RvbURhdGEud3Jp
dGVEYXRhKHR5cGUsIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihkYXRhKS5jb3B5UmVmKCkp
OworICAgICAgICBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4oZGF0YSkpCisgICAgICAgICAgICBjdXN0b21EYXRhLndyaXRlRGF0YSh0
eXBlLCBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGRhdGEpLmNvcHlSZWYo
KSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpu
dWxsb3B0KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI2NSw5ICsyNjUsOSBAQCB2b2lkIENs
aXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpz
YW5pdGl6ZURhdGFJZk5lZQogewogICAgIGlmIChtX3R5cGUgPT0gInRleHQvaHRtbCJfcykgewog
ICAgICAgICBTdHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKLSAgICAgICAgICAgIGF1
dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwotICAgICAg
ICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7CisgICAgICAgICAgICBhdXRvJiBi
dWZmZXIgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Cisg
ICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICB9IGVsc2Ug
aWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpKQogICAgICAgICAgICAg
bWFya3VwVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFN0cmluZz4obV9kYXRhKTsKIApAQCAtMjc4LDkg
KzI3OCw5IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJk
SXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiAgICAgfQogCiAgICAgaWYgKG1fdHlw
ZSA9PSAiaW1hZ2UvcG5nIl9zKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
clRvU2FuaXRpemU7Ci0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFy
ZWRCdWZmZXI+PihtX2RhdGEpKQotICAgICAgICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHN0ZDo6
Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpLnB0cigpOworICAgICAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZTsKKyAgICAgICAgaWYgKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihtX2RhdGEpKQor
ICAgICAgICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4obV9kYXRhKS5wdHIoKTsKICAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBidWZmZXJUb1Nhbml0aXpl
ID0gdXRmOEJ1ZmZlcihzdGQ6OmdldDxTdHJpbmc+KG1fZGF0YSkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGlu
Z3NEYXRhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgKaW5kZXggMmNjMmM4ZTFhNTRlMThkNzM0
OTVjNTMwY2Q3N2Q1NGY5OWE1MjlhNy4uMzdjODI1ZTIzNWE4YThiN2U0NGU0MGZiMGMyZDc3MjQ0
MDdhNzU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
aApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBET01Qcm9taXNlOwogY2xhc3MgRmlsZVJlYWRlckxv
YWRlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UgOiBwdWJsaWMgQ2xp
cGJvYXJkSXRlbURhdGFTb3VyY2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAt
NTMsNyArNTMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbnZva2VDb21wbGV0aW9uSGFuZGxl
cigpOwogCi0gICAgdXNpbmcgQnVmZmVyT3JTdHJpbmcgPSBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBS
ZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgQnVmZmVyT3JTdHJpbmcgPSBzdGQ6OnZhcmlh
bnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAgIGNsYXNzIENsaXBi
b2FyZEl0ZW1UeXBlTG9hZGVyIDogcHVibGljIEZpbGVSZWFkZXJMb2FkZXJDbGllbnQsIHB1Ymxp
YyBSZWZDb3VudGVkPENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyPiB7CiAgICAgcHVibGljOgogICAg
ICAgICBzdGF0aWMgUmVmPENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiB0eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3Mv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2
ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uMjc0ZTAzOGQ0MTg3MDE2MWU0ZWViODBj
MTJhYmJhODcxZjlkNGE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklP
Uy5tbQpAQCAtMzQsMTAgKzM0LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFn
ZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFn
ZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2Uo
KSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5HUmVwcmVzZW50YXRp
b24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9k
b2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0
YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZElt
YWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMxY2E1MDYzOWNjY2E0YzU1
MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLjM4MjFiMDM3MTgwMjgyM2Q2OWE4MzBhMzEwZGEzNDcwOGQ2
MzMwNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTMz
LDEwICszMywxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ2xpcGJvYXJkSW1h
Z2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewot
ICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0
YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBh
ZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gY2dJbWFnZSA9
IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxd
KSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRvcHROUyhbW05TQml0bWFw
SW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7CiAgICAgICAgICAgICBO
U0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpO
U0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggZTZjYzFhYWU3ODNhNTIwOTRmNjU0OTli
YjkwZGQ3ZjAwNzFkNDI0Yy4uZjA1YzIzMzA3YmM1YTBlNTgyZGRjZDg2MGQ1YmIxYTFiMzA5MzI1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTI4OSw3
ICsyODksNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGlu
Zm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJlY29yZCh0b0Nv
bm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIpKTsKIAotICAg
ICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVy
ID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3Vs
dCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlD
aHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24s
IGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2Ug
fV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICh0YXNrSGFu
ZGxlci0+aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjk5LDkg
KzI5OSw5IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5m
b3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0g
ICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1
bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0
YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RG
TW92ZShkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25z
ZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3Vv
dXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2FjaGVkUmVzb3VyY2VSZXF1ZXN0
SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBET01D
YWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9t
aXNlLCBSZWY8RmV0Y2gKIAogICAgIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgYm9keTsK
ICAgICBpZiAoYXV0byBidWZmZXIgPSByZXNwb25zZUJvZHkucmVsZWFzZVJldHVyblZhbHVlKCkp
Ci0gICAgICAgIGJvZHkgPSBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgYm9keSA9
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBiYXRjaFB1dE9wZXJhdGlvbihyZXF1ZXN0
LmdldCgpLCByZXNwb25zZS5nZXQoKSwgV1RGTW92ZShib2R5KSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9u
T3I8dm9pZD4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2Jq
ZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwpAQCAtMzc1LDcgKzM3
NSw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJl
c3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAKICAgICBpZiAocmVzcG9uc2UtPmlzQm9k
eVJlY2VpdmVkQnlDaHVuaygpKSB7CiAgICAgICAgIGF1dG8mIHJlc3BvbnNlUmVmID0gcmVzcG9u
c2UuZ2V0KCk7Ci0gICAgICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5r
KFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCks
IHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGhpc10o
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5
UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdU
Rk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFy
ZWRCdWZmZXJCdWlsZGVyKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHko
KnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKIAogICAgICAgICAgICAgaWYg
KHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhS
ZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShy
ZXNwb25zZSksIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuaXNvbGF0ZWRDb3B5KCkpOwpAQCAt
MzgzLDkgKzM4Myw5IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAg
ICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsK
KyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgp
KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9u
c2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9u
c2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAg
ICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBkYXRh
LnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuY3BwCmluZGV4IDI1OTE0YjQwYmIyMzgzYTA3ODgwNGY4OWIxMWI0MGQ4OTcwYjQzMDYuLmMw
ZjgwMzJiMDQ1MmMzN2VlNGNhZmJjYWZkNzlmMDlkMjE0NjMzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC0xMzIsNyArMTMyLDcg
QEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYg
Ym9keSkKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURh
dGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRh
LT5pc29sYXRlZENvcHkoKTsKICAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAgICByZXR1cm4gYnVmZmVyLT5jb3B5KCk7Cisg
ICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOyAvLyBTaGFyZWRCdWZmZXIgYXJlIGltbXV0
YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVs
bHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5l
OjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDI4NTBkYmExZTNiZmExMWY0ODliNDQ0MDM1MTNk
NTFhZTFiZWFkM2EuLjlkMWJjNjc0ZmM4MjZjYjZkMTZkMDI1MTBjZjg0MDEwYWRjYmQ3NzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKQEAgLTEz
NSwxNyArMTM1LDE3IEBAIGJvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3By
aXZhdGUtPnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGlu
aXREYXRhKQogewogICAgIHJldHVybiBJbml0RGF0YVJlZ2lzdHJ5OjpzaGFyZWQoKS5zYW5pdGl6
ZUluaXREYXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpOwogfQogCi1ib29sIENETTo6c3VwcG9y
dHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpCitib29sIENETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRh
KQogewogICAgIHJldHVybiBtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0c0luaXREYXRh
KGluaXREYXRhVHlwZSwgaW5pdERhdGEpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE06
OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKK1JlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFtX3ByaXZhdGUpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNLmgKaW5kZXggZDhhNGIzYWYxMmYxYTc5MjNkODg3MDVkNWI5NTgxZDM2ZjEwMjcwYy4u
ZDdiMWQ1M2QwNDkxZjcyNzc5YjU5NGIyZDgzYzA5YjgzYmNmMjA3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNz
IENETUluc3RhbmNlOwogY2xhc3MgQ0RNUHJpdmF0ZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENETSA6IHB1YmxpYyBSZWZDb3VudGVkPENETT4s
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE0+LCBwcml2YXRlIENvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyIHsKIHB1YmxpYzoKQEAgLTczLDEwICs3MywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBz
dXBwb3J0c1Nlc3Npb25zKCkgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhVHlwZShj
b25zdCBBdG9tU3RyaW5nJikgY29uc3Q7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVk
QnVmZmVyJik7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgYm9vbCBzdXBwb3J0c0lu
aXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25z
ZShjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE1DbGllbnQuaAppbmRleCAyMWU1MmY0YjcxNGZiOTFmNjdjZmMzOTYxMzljMTY1MjViZmI3
YjliLi40MTBlZDJmYjY0Mjc1NjJjZTliZDhlZGE0ZDkxYTg2YmE5OGNhYTYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKQEAgLTM2
LDE0ICszNiwxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDRE1JbnN0YW5jZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNs
YXNzIENETUNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1DbGllbnQ+IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5DRE1DbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZv
aWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNl
aXZlZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29u
c3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4IDBiZjVlYWE3NGVk
YmU2ODlhOGQyZTQwYTM0MWE2NzA3NDQwZjJkNTYuLjZmODg4ZTE3ODU4ZGRhNmQ5NDcxZWMxZjZl
ZjVkMDY2ZGYwZTQ5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtNTQsMTMgKzU0LDEzIEBA
IG5hbWVzcGFjZSB7CiAgICAgY29uc3QgdWludDMyX3Qga0tleUlkc01heEtleUlkU2l6ZUluQnl0
ZXMgPSA1MTI7CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVm
ZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4g
ZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgLy8gMS4gRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5
cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAg
ICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZm
ZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBT
dHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZh
bHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTc0LDcgKzc0LDcgQEAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtl
eUlEc0tleWlkcyhjb25zdCBTaGFyZWQKICAgICBpZiAoIWtpZHNBcnJheSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURz
OworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBm
b3IgKGF1dG8mIHZhbHVlIDogKmtpZHNBcnJheSkgewogICAgICAgICBhdXRvIGtleUlEID0gdmFs
dWUtPmFzU3RyaW5nKCk7CiAgICAgICAgIGlmICgha2V5SUQpCkBAIC05Myw3ICs5Myw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJ
RHNLZXlpZHMoY29uc3QgU2hhcmVkCiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotc3RhdGljIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQorc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlk
cyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gMS4gRm9y
bWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQt
cmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CkBAIC0xMDQsMTQgKzEwNCwxNCBA
QCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgp
OwogICAgIGF1dG8ga2lkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAo
YXV0byYgYnVmZmVyIDoga2V5SURCdWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5w
dXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSkpOworICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2Rl
VG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KSk7CiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAK
ICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CiAg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEu
bGVuZ3RoKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNP
UHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaXREYXRhUmVnaXN0cnk6OmV4
dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6
b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lm
aWNIZWFkZXJCb3g+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5j
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyA0LiBDb21t
b24gU3lzdGVtSUQgYW5kIFBTU0ggQm94IEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2NlbmMuaHRtbCNj
b21tb24tc3lzdGVtCkBAIC0xNTEsOSArMTUxLDkgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbmkK
ICAgICByZXR1cm4gcHNzaEJveGVzOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
IGtleUlEczsKIAogICAgIGF1dG8gcHNzaEJveGVzID0gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5j
KGJ1ZmZlcik7CiAgICAgaWYgKCFwc3NoQm94ZXMpCkBAIC0xODUsNyArMTg1LDcgQEAgc3RkOjpv
cHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRy
YWN0S2V5SURzQ2VuYyhjb24KICAgICByZXR1cm4ga2V5SURzOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3Ry
eTo6c2FuaXRpemVDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICAvLyA0LiBDb21tb24gU3lzdGVtSUQgYW5kIFBTU0ggQm94IEZvcm1hdAogICAgIC8vIGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRk
YXRhL2NlbmMuaHRtbCNjb21tb24tc3lzdGVtCkBAIC0xOTUsNyArMTk1LDcgQEAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVDZW5jKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIENoZWNrIGlmIHRo
ZSBidWZmZXIgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIC8vIFRoZSBXZWJNIGluaXRE
YXRhIGlzIHRoZSBDb250ZW50RW5jS2V5SUQsIHNvIHNob3VsZCBiZSBsZXNzIHRoYW4ga1dlYk1N
YXhDb250ZW50RW5jS2V5SURTaXplLgpAQCAtMjA1LDEwICsyMDUsMTAgQEAgc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplV2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
ICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1dlYk0oY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1dlYk0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZEJ1ZmZlciA9IHNhbml0aXplV2ViTShi
dWZmZXIpOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkQnVmZmVyID0gc2Fu
aXRpemVXZWJNKGJ1ZmZlcik7CiAgICAgaWYgKCFzYW5pdGl6ZWRCdWZmZXIpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCBJbml0RGF0YVJlZ2lzdHJ5
OjpJbml0RGF0YVJlZ2lzdHJ5KCkKIAogSW5pdERhdGFSZWdpc3RyeTo6fkluaXREYXRhUmVnaXN0
cnkoKSA9IGRlZmF1bHQ7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6
OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0
RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8g
aXRlciA9IG1fdHlwZXMuZmluZChpbml0RGF0YVR5cGUpOwogICAgIGlmIChpdGVyID09IG1fdHlw
ZXMuZW5kKCkgfHwgIWl0ZXItPnZhbHVlLnNhbml0aXplSW5pdERhdGEpCkBAIC0yNDEsNyArMjQx
LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGEKICAgICByZXR1cm4gaXRlci0+dmFsdWUuc2Fu
aXRpemVJbml0RGF0YShidWZmZXIpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0
cnk6OmV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBpdGVyID0gbV90eXBl
cy5maW5kKGluaXREYXRhVHlwZSk7CiAgICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQoKSB8fCAh
aXRlci0+dmFsdWUuc2FuaXRpemVJbml0RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmgKaW5kZXggY2QxMzg3
YTZiZDAzOGZmMzRlMmNmYjc1ZjQ0M2RlN2Q5NDAzMjFiMC4uNzdkNjA0YjA4YmI3ZjdlMzhiY2Ni
MzU0NWIzNGM4YjEzNDM1NWVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmgKQEAgLTM4LDE5ICszOCwxOSBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lm
aWNIZWFkZXJCb3g7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBJbml0RGF0YVJlZ2lzdHJ5IHsKIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgSW5pdERhdGFSZWdpc3RyeSYgc2hhcmVkKCk7CiAgICAgZnJpZW5kIGNs
YXNzIE5ldmVyRGVzdHJveWVkPEluaXREYXRhUmVnaXN0cnk+OwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4
dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBzdHJ1Y3QgSW5pdERhdGFUeXBlQ2FsbGJhY2tzIHsK
LSAgICAgICAgdXNpbmcgU2FuaXRpemVJbml0RGF0YUNhbGxiYWNrID0gRnVuY3Rpb248UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4oY29uc3QgU2hhcmVkQnVmZmVyJik+OwotICAgICAgICB1c2luZyBFeHRy
YWN0S2V5SURzQ2FsbGJhY2sgPSBGdW5jdGlvbjxzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4+KGNvbnN0IFNoYXJlZEJ1ZmZlciYpPjsKKyAgICAgICAgdXNpbmcgU2FuaXRp
emVJbml0RGF0YUNhbGxiYWNrID0gRnVuY3Rpb248UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKT47CisgICAgICAgIHVzaW5nIEV4dHJh
Y3RLZXlJRHNDYWxsYmFjayA9IEZ1bmN0aW9uPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4+KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKT47CiAK
ICAgICAgICAgU2FuaXRpemVJbml0RGF0YUNhbGxiYWNrIHNhbml0aXplSW5pdERhdGE7CiAgICAg
ICAgIEV4dHJhY3RLZXlJRHNDYWxsYmFjayBleHRyYWN0S2V5SURzOwpAQCAtNjEsOSArNjEsOSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGtleWlkc05hbWUoKTsKICAg
ICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgd2VibU5hbWUoKTsKIAotICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNp
ZmljSGVhZGVyQm94Pj4+IGV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBTaGFyZWRCdWZm
ZXImKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
PiBleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBzdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlv
blN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IGV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHNhbml0aXplQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7
CiAKIHByaXZhdGU6CiAgICAgSW5pdERhdGFSZWdpc3RyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmlu
ZGV4IDhiZmIxY2U3MDFhMmY1YTY5YjViNTE5OTFhYTg2MzJlYmI4OTI1ZjkuLjE0Nzc2YzIwMTUx
YmZlZmUzODA3OWEzMzczMGM4ODY2MjY4YmE0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTE3
Niw3ICsxNzYsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgIHF1ZXVlVGFza0tlZXBp
bmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHdlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGluaXREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
aW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5sZW5ndGgoKSksIGluaXREYXRhVHlwZSwgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAo
KSBtdXRhYmxlIHsKICAgICAgICAgLy8gMTAuMS4gSWYgdGhlIGluaXQgZGF0YSBpcyBub3QgdmFs
aWQgZm9yIGluaXREYXRhVHlwZSwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQg
VHlwZUVycm9yLgogICAgICAgICAvLyAxMC4yLiBMZXQgc2FuaXRpemVkIGluaXQgZGF0YSBiZSBh
IHZhbGlkYXRlZCBhbmQgc2FuaXRpemVkIHZlcnNpb24gb2YgaW5pdCBkYXRhLgotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRJbml0RGF0YSA9IG1faW1wbGVtZW50YXRpb24t
PnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CisgICAgICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRJbml0RGF0YSA9IG1faW1wbGVtZW50
YXRpb24tPnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CiAKICAgICAg
ICAgLy8gMTAuMy4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxlZCwgcmVqZWN0IHByb21pc2Ug
d2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAgICBpZiAoIXNhbml0aXplZElu
aXREYXRhKSB7CkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVy
YXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEJ1ZmYKICAg
ICAgICAgICAgIG1fbGF0ZXN0RGVjcnlwdFRpbWUgPSAwOwogICAgICAgICB9CiAKLSAgICAgICAg
bV9pbnN0YW5jZVNlc3Npb24tPnJlcXVlc3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUsIGluaXREYXRh
VHlwZSwgc2FuaXRpemVkSW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlz
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRp
ZmllcildIChSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3Vj
Y2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9u
LT5yZXF1ZXN0TGljZW5zZShtX3Nlc3Npb25UeXBlLCBpbml0RGF0YVR5cGUsIHNhbml0aXplZElu
aXREYXRhLnJlbGVhc2VOb25OdWxsKCksIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJv
b2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFs
dWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCkBAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBNZWRpYUtleVNl
c3Npb246OnVwZGF0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYKICAgICAvLyA2LiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoK
ICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdv
cmtpbmcsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXNwb25zZSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2UubGVuZ3RoKCkpLCBw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmll
cildICgpIG11dGFibGUgewogICAgICAgICAvLyA2LjEuIExldCBzYW5pdGl6ZWQgcmVzcG9uc2Ug
YmUgYSB2YWxpZGF0ZWQgYW5kL29yIHNhbml0aXplZCB2ZXJzaW9uIG9mIHJlc3BvbnNlIGNvcHku
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3BvbnNlID0gbV9pbXBs
ZW1lbnRhdGlvbi0+c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7CisgICAgICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRSZXNwb25zZSA9IG1faW1wbGVtZW50YXRp
b24tPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2UpOwogCiAgICAgICAgIC8vIDYuMi4gSWYgdGhl
IHByZWNlZGluZyBzdGVwIGZhaWxlZCwgb3IgaWYgc2FuaXRpemVkIHJlc3BvbnNlIGlzIGVtcHR5
LCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAg
IGlmICghc2FuaXRpemVkUmVzcG9uc2UgfHwgc2FuaXRpemVkUmVzcG9uc2UtPmlzRW1wdHkoKSkg
ewpAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgICAgICAvLyA0LjMuIExldCBtZXNzYWdlIHR5
cGUgYmUgbnVsbC4KIAogICAgICAgICAvLyA0LjQuIFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhl
IGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlbW92ZVNlc3Np
b25EYXRhKG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBlLCBbdGhpcywgd2Vha1RoaXMsIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0g
KENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5cywgc3RkOjpvcHRpb25h
bDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nl
c3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+
cmVtb3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFr
VGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlk
ZW50aWZpZXIpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBz
dGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBDRE1J
bnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTY0OSw3
ICs2NDksNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKFJlZjxEZWZlcnJlZFByb21p
c2U+JiYgcHJvbWlzZSkKICAgICAvLyA1LiBSZXR1cm4gcHJvbWlzZS4KIH0KIAotdm9pZCBNZWRp
YUtleVNlc3Npb246OmVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUgbWVzc2FnZVR5
cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgbWVzc2FnZSkKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjpl
bnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBtZXNzYWdlKQogewogICAgIC8vIDYuNC4xIFF1ZXVlIGEgIm1l
c3NhZ2UiIEV2ZW50CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRp
YS8jcXVldWUtbWVzc2FnZQpAQCAtNzE2LDcgKzcxNiw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9u
Ojp1cGRhdGVLZXlTdGF0dXNlcyhDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYm
IGluCiAgICAgICAgIH0pOwogfQogCi12b2lkIE1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2Uo
Q0RNTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkK
K3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSBtZXNzYWdl
VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBlbnF1
ZXVlTWVzc2FnZShtZXNzYWdlVHlwZSwgbWVzc2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAppbmRleCAz
ZDk2Zjg4MDJlNzQ3ODQxYzRlZmRhODFkY2I5NDFlYTZlNGE3NWU0Li4zNjVhY2U1YzA5NWU3ZGMw
YzU3MWU3NmNjZjJjMDdhYWZjNjJiYWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKQEAgLTU3LDcgKzU3LDcg
QEAgY2xhc3MgQ0RNOwogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgTWVkaWFLZXlTdGF0
dXNNYXA7CiBjbGFzcyBNZWRpYUtleXM7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBE
T01Qcm9taXNlUHJveHk7CiAKQEAgLTg3LDIwICs4NywyMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
Q2xvc2VkUHJvbWlzZSA9IERPTVByb21pc2VQcm94eTxJRExVbmRlZmluZWQ+OwogICAgIENsb3Nl
ZFByb21pc2UmIGNsb3NlZCgpIHsgcmV0dXJuIG1fY2xvc2VkUHJvbWlzZS5nZXQoKTsgfQogCi0g
ICAgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0
dXM+PiYgc3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1c2VzOyB9CisgICAgY29uc3Qg
VmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3Rh
dHVzPj4mIHN0YXR1c2VzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXNlczsgfQogCiAgICAgdW5z
aWduZWQgaW50ZXJuYWxJbnN0YW5jZVNlc3Npb25PYmplY3RSZWZDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1faW5zdGFuY2VTZXNzaW9uLT5yZWZDb3VudCgpOyB9CiAKIHByaXZhdGU6CiAgICAgTWVk
aWFLZXlTZXNzaW9uKERvY3VtZW50JiwgV2Vha1B0cjxNZWRpYUtleXM+JiYsIE1lZGlhS2V5U2Vz
c2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBSZWY8Q0RNPiYmLCBSZWY8
Q0RNSW5zdGFuY2VTZXNzaW9uPiYmKTsKLSAgICB2b2lkIGVucXVldWVNZXNzYWdlKE1lZGlhS2V5
TWVzc2FnZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgZW5xdWV1ZU1lc3Nh
Z2UoTWVkaWFLZXlNZXNzYWdlVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwog
ICAgIHZvaWQgdXBkYXRlRXhwaXJhdGlvbihkb3VibGUpOwogICAgIHZvaWQgc2Vzc2lvbkNsb3Nl
ZCgpOwogICAgIFN0cmluZyBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAKICAg
ICAvLyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQKICAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2Vz
KENETUluc3RhbmNlU2Vzc2lvbkNsaWVudDo6S2V5U3RhdHVzVmVjdG9yJiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
bWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CiAgICAgdm9pZCBzZXNz
aW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFBsYXRmb3JtRGlzcGxheUlE
IGRpc3BsYXlJRCgpIGZpbmFsOwogCkBAIC0xNDAsMTAgKzE0MCwxMCBAQCBwcml2YXRlOgogICAg
IE1lZGlhS2V5U2Vzc2lvblR5cGUgbV9zZXNzaW9uVHlwZTsKICAgICBSZWY8Q0RNPiBtX2ltcGxl
bWVudGF0aW9uOwogICAgIFJlZjxDRE1JbnN0YW5jZVNlc3Npb24+IG1faW5zdGFuY2VTZXNzaW9u
OwotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gbV9yZWNvcmRPZktleVVzYWdlOworICAg
IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1fcmVjb3JkT2ZLZXlVc2FnZTsK
ICAgICBkb3VibGUgbV9maXJzdERlY3J5cHRUaW1lIHsgMCB9OwogICAgIGRvdWJsZSBtX2xhdGVz
dERlY3J5cHRUaW1lIHsgMCB9OwotICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZl
cj4sIE1lZGlhS2V5U3RhdHVzPj4gbV9zdGF0dXNlczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiBtX3N0YXR1c2VzOwog
CiAgICAgdXNpbmcgRGlzcGxheUNoYW5nZWRPYnNlcnZlciA9IE9ic2VydmVyPHZvaWQoUGxhdGZv
cm1EaXNwbGF5SUQpPjsKICAgICBEaXNwbGF5Q2hhbmdlZE9ic2VydmVyIG1fZGlzcGxheUNoYW5n
ZWRPYnNlcnZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKaW5kZXggNzNmNzRlNGY3MGZjOTJjMjJi
Zjg1OWMwMjI4YTM0ZWFlYzU3OTdhMy4uMzk4ZThhYjFiNjU2YjQ0NTkyN2JlYjZiYzY5M2RkMzk5
YTY4N2FjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN0YXR1c01hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKQEAgLTU2LDEyICs1NiwxMiBAQCB1bnNp
Z25lZCBsb25nIE1lZGlhS2V5U3RhdHVzTWFwOjpzaXplKCkKICAgICByZXR1cm4gbV9zZXNzaW9u
LT5zdGF0dXNlcygpLnNpemUoKTsKIH0KIAotc3RhdGljIGJvb2wga2V5SWRzTWF0Y2goY29uc3Qg
U2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIpCitzdGF0aWMgYm9vbCBrZXlJ
ZHNNYXRjaChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3Vy
Y2UmIGIpCiB7CiAgICAgYXV0byBsZW5ndGggPSBhLnNpemUoKTsKICAgICBpZiAoIWxlbmd0aCB8
fCBsZW5ndGggIT0gYi5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVy
biAhc3RkOjptZW1jbXAoYS5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOworICAgIHJldHVybiAh
c3RkOjptZW1jbXAoYS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgp
OwogfQogCiBib29sIE1lZGlhS2V5U3RhdHVzTWFwOjpoYXMoY29uc3QgQnVmZmVyU291cmNlJiBr
ZXlJZCkKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxCdWZm
ZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5UwogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5k
ZXgrK107Ci0gICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3Qt
PmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVm
ZmVyOjpjcmVhdGUocGFpci5maXJzdC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBwYWlyLmZp
cnN0LT5zaXplKCkpOwogICAgIHJldHVybiBLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJp
YW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1
ZmZlcikpLCBwYWlyLnNlY29uZCB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKaW5kZXggYzIxMTEx
M2EyYzZkYWM3OTc5MjRhOTlkMmQyZGY5N2MyZTY1Zjg1MC4uNjBkNjJhYWZmODA3NGRhZGE2ZTMx
YTNmMmIzNzBhNmQ2ZDAxZjYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaApAQCAtMzgsNyArMzgsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYUtleVNlc3Npb247Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNZWRp
YUtleVN0YXR1c01hcCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5U3RhdHVzTWFwPiB7CiBw
dWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5cy5jcHAKaW5kZXggODNiMjRhY2VhYTViMTI5NGJiNGVhNDM5ZmIyZDVjNGY2Y2NkNDc1
My4uMzY3ZjMxZDE4NmI1MTYzOWE5Yzc0MjEzZjBjZjhlNmYyZjhkMjZlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAt
MTc3LDcgKzE3Nyw3IEBAIGJvb2wgTWVkaWFLZXlzOjpoYXNPcGVuU2Vzc2lvbnMoKSBjb25zdAog
ICAgICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRp
b25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgaW5pdERhdGEpCit2b2lkIE1lZGlhS2V5czo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlv
bkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCiB7CiAgICAgZm9yIChhdXRvJiBjZG1DbGllbnQgOiBt
X2NkbUNsaWVudHMpCiAgICAgICAgIGNkbUNsaWVudC5jZG1DbGllbnRVbnJlcXVlc3RlZEluaXRp
YWxpemF0aW9uRGF0YVJlY2VpdmVkKGluaXREYXRhVHlwZSwgaW5pdERhdGEuY29weVJlZigpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5o
CmluZGV4IDdiNTlhM2JjNmQyMjU2ZmM2NTZmMDhjYmYyNjg5MTg1MTA5ODNhMjIuLjkxYTFhMDcx
MTQzM2JlMjQ3ZGQyYTg1YzVmNGFkMDkzOGEwOWE3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaApAQCAtODYsNyArODYsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgTWVkaWFLZXlzKERvY3VtZW50JiwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlk
ZW50aWZpZXIsIGJvb2wgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCwgY29uc3QgVmVjdG9yPE1lZGlh
S2V5U2Vzc2lvblR5cGU+JiwgUmVmPENETT4mJiwgUmVmPENETUluc3RhbmNlPiYmKTsKIAogICAg
IC8vIENETUluc3RhbmNlQ2xpZW50Ci0gICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9u
RGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwor
ICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJp
bmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgcmV0dXJu
IG1fbG9nZ2VyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAK
aW5kZXggMmZkYzRjMDAyMWY2ZTFmZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNiMS4uMDAzOTMwMmY3
ZGMxNmZmZWNmYzQ2NWM3ZDhkYTI1MmY5OGRhZjU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0Y2hCb2R5
Ojpjb25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzCiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9keU93bmVy
JiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlmIChhdXRv
IHNoYXJlZEJ1ZmZlciA9IGZvcm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAg
ICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29u
dGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsK
KyAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3du
ZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9
IGVsc2UgewogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlucyBibG9i
cywgbG9hZCB0aGVtIGxpa2Ugd2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcyLDcgQEAg
UmVmUHRyPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QKICAgICBp
ZiAoaXNGb3JtRGF0YSgpKQogICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihm
b3JtRGF0YUJvZHkoKSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkK
LSAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOworICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6OlRha2Vu
RGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29uc3VtZXIu
dGFrZURhdGEoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBy
ZXR1cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChpc0Jsb2Io
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmNwcAppbmRleCBmY2MyMTZhMDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhiNzlmZjYyYjNiLi4y
MjEzZDYyMzAzZWZlMmExZjcyOTgyNjBmNTg4NjBiNzc2ZmIyNjc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjQyLDcg
KzI0Miw3IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlLCBGZXRjaEJvZHlDb25zCiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OmNsZWFuKCkKIHsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgbV9idWZmZXIucmVz
ZXQoKTsKICAgICByZXNldENvbnN1bWVQcm9taXNlKCk7CiAgICAgaWYgKG1fc2luaykgewogICAg
ICAgICBtX3NpbmstPmNsZWFyQ2FsbGJhY2soKTsKQEAgLTI2NiwxNiArMjY2LDE4IEBAIHZvaWQg
RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNl
LCBjb25zdCBTdHJpbmcmIGNvCiB7CiAgICAgaWYgKHN0cmVhbSkgewogICAgICAgICBBU1NFUlQo
IW1fc2luayk7Ci0gICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJT
aW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSwgdHlwZSA9IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQp
IG11dGFibGUgeworICAgICAgICBtX3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVy
U2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1
ZmZlckJ1aWxkZXIoKSwgdHlwZSA9IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQp
IG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAg
ICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
IChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRh
dGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlz
ZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAg
ICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFr
ZSgpLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFu
ZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBt
X3NpbmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMDYsNyArMzA4
LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
RmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkZvcm1EYXRhOiB7CiAgICAgICAgIGF1dG8gYnVmZmVy
ID0gdGFrZURhdGEoKTsKLSAgICAgICAgaWYgKGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURh
dGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0
ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwKSkKKyAgICAgICAgaWYgKGF1dG8gZm9ybURh
dGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5z
aXplKCkgOiAwKSkKICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPERP
TUZvcm1EYXRhPj4oKmZvcm1EYXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHJvbWlz
ZS0+cmVqZWN0KFR5cGVFcnJvcik7CkBAIC0zMjQsMTYgKzMyNiwyMCBAQCB2b2lkIEZldGNoQm9k
eUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkKICAg
ICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXpl
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcikgewotICAgICAg
ICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9i
dWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0
YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewotICAgIHJldHVybiBXVEZN
b3ZlKG1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlci5yZXNldCgpOworICAgIG1fYnVmZmVyLmFwcGVu
ZChXVEZNb3ZlKGRhdGEpKTsKK30KKworUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZl
dGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSgpCit7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKTsKIH0KIAogUmVm
UHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZl
cigpCkBAIC0zNDEsOSArMzQ3LDcgQEAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9k
eUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAg
ICAgcmV0dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CiAKLSAgICBhdXRv
IGFycmF5QnVmZmVyID0gbV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Ci0gICAgbV9i
dWZmZXIgPSBudWxscHRyOwotICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKKyAgICByZXR1cm4gbV9i
dWZmZXIudGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogfQogCiBSZWY8QmxvYj4gRmV0
Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKQEAgLTM1MSw5ICszNTUsNyBAQCBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVmZmVy
KQogICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90Pigp
LCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAgYXV0
byBidWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBhdXRvIGRh
dGEgPSBidWZmZXItPmV4dHJhY3REYXRhKCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250
ZXh0LCBXVEZNb3ZlKGRhdGEpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZyb21E
YXRhKGNvbnRleHQsIG1fYnVmZmVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9jb250ZW50VHlw
ZSk7CiB9CiAKIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCkBAIC0zNjIs
OCArMzY0LDggQEAgU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAgICBp
ZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRleHQg
PSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPmRhdGEoKSwgbV9i
dWZmZXItPnNpemUoKSk7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIGF1dG8gYnVmZmVy
ID0gbV9idWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gdGV4dCA9IFRl
eHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOwogICAgIHJldHVybiB0ZXh0OwogfQogCkBAIC0zODMsMTAgKzM4NSw4IEBAIHZvaWQg
RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc2V0Q29uc3VtZVByb21pc2UoKQogdm9pZCBGZXRjaEJvZHlD
b25zdW1lcjo6c2V0U291cmNlKFJlZjxGZXRjaEJvZHlTb3VyY2U+JiYgc291cmNlKQogewogICAg
IG1fc291cmNlID0gV1RGTW92ZShzb3VyY2UpOwotICAgIGlmIChtX2J1ZmZlcikgewotICAgICAg
ICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7Ci0g
ICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICB9CisgICAgaWYgKG1fYnVmZmVyKQorICAg
ICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVm
ZmVyKCkpOwogfQogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nRmFpbGVkKGNvbnN0
IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDJiMDU2ZjEyNjQzYmE5NjdmZTQxYTAxNTEzYTg5
YjczNjI2NDJkNGMuLjg3MWQyYzA4NjMzMWE5ODI5NGExNjZhNGI0MmUzMTg0ZTAzNzc3MmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgK
QEAgLTUwLDEwICs1MCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4g
ISFtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+
JiYgZGF0YSkgeyBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7IH0KKyAgICBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0
KCk7IH0KKyAgICB2b2lkIHNldERhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZl
cj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKICAgICBTdHJpbmcgdGFrZUFzVGV4dCgpOwogCkBAIC04
Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAKICAgICBUeXBlIG1fdHlwZTsKICAgICBTdHJpbmcgbV9j
b250ZW50VHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IG1f
Y29uc3VtZVByb21pc2U7CiAgICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJT
aW5rPiBtX3Npbms7CiAgICAgUmVmUHRyPEZldGNoQm9keVNvdXJjZT4gbV9zb3VyY2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4IGZjNTVjYzdk
ODNkOGJjMTFmMDg1NGRjM2NmZDg1MDk3YTMxZjEwZjYuLjAzZjg5YjYxY2E1ZjdjNzE3NmI5ZDg4
Y2QxMzY2MGU4NmI3YTI1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hMb2FkZXIuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBGZXRjaExvYWRlcjo6c3RvcCgp
CiAgICAgICAgIG1fbG9hZGVyLT5jYW5jZWwoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
RmV0Y2hMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBGZXRjaExvYWRlcjo6c3RhcnRTdHJlYW1pbmcoKQogewogICAgIEFTU0VSVChtX2NvbnN1
bWVyKTsKICAgICBhdXRvIGZpcnN0Q2h1bmsgPSBtX2NvbnN1bWVyLT50YWtlRGF0YSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCmluZGV4IDJmOTBmMGVjM2Zm
OTA1YTI2MjMxYzg0YzcyYTdhMTg2Y2Q0YmZlODMuLjQ2MTJkMGUwZTNhN2VmZTMwNjAzOTZiMGQ3
NWEyZmEzYmM0ZWRkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9h
ZGVyLmgKQEAgLTM5LDE0ICszOSwxNCBAQCBjbGFzcyBGZXRjaEJvZHlDb25zdW1lcjsKIGNsYXNz
IEZldGNoTG9hZGVyQ2xpZW50OwogY2xhc3MgRmV0Y2hSZXF1ZXN0OwogY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiAKIGNsYXNzIEZldGNoTG9hZGVyIGZpbmFsIDogcHVibGljIFRocmVhZGFibGVM
b2FkZXJDbGllbnQgewogcHVibGljOgogICAgIEZldGNoTG9hZGVyKEZldGNoTG9hZGVyQ2xpZW50
JiwgRmV0Y2hCb2R5Q29uc3VtZXIqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+RmV0Y2hMb2FkZXIo
KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CiAKICAgICB2b2lk
IHN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBGZXRjaFJlcXVlc3QmLCBjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIHN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25z
dCBCbG9iJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcAppbmRleCA0ZGY4NDI2YzcxOGJhMTZlY2YwYTQ3ZTczZTkwMGQzZjg0OGY2NGYyLi5lMzhh
ODNhZGU3ZDZlMGFhZjcwY2ViOWM1YWE4ZmU4YWI0OTQzZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBAQCB2
b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1l
RGF0YUJ5Q2h1bmtDYWxsYmFjayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAK
LSAgICBTcGFuIGNodW5rIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNCdWZmZXIgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4gY2h1
bmsgeyBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1fY29u
c3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCkBAIC01MDMsNyArNTA0LDcgQEAgdm9pZCBG
ZXRjaFJlc3BvbnNlOjpmZWVkU3RyZWFtKCkKICAgICBjbG9zZVN0cmVhbSgpOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydFN0cmVhbWlu
ZygpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRmV0Y2hSZXNwb25zZTo6Qm9keUxv
YWRlcjo6c3RhcnRTdHJlYW1pbmcoKQogewogICAgIEFTU0VSVChtX2xvYWRlcik7CiAgICAgcmV0
dXJuIG1fbG9hZGVyLT5zdGFydFN0cmVhbWluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCAzNDIwYzZhMzhkM2MzZjZlMmZkYjY2NzVlOGE0
ZDEzNjViZjVhNWJiLi5jZjc4NjMyMzlmZDk0NmVlMGU4ZDg4ZWFlYTcyZmU5ODllZWQzMTRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtMTM0
LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCBjb25zdW1lRGF0YUJ5Q2h1bmso
Q29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJik7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CiAgICAgICAgIE5vdGlmaWNhdGlvbkNhbGxiYWNrIHRh
a2VOb3RpZmljYXRpb25DYWxsYmFjaygpIHsgcmV0dXJuIFdURk1vdmUobV9yZXNwb25zZUNhbGxi
YWNrKTsgfQogICAgICAgICBDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayB0YWtlQ29uc3VtZURh
dGFDYWxsYmFjaygpIHsgcmV0dXJuIFdURk1vdmUobV9jb25zdW1lRGF0YUNhbGxiYWNrKTsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmlu
ZGV4IGRkMTljODcwYWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEzNTJkZGQwNDEuLjFhNjZiZjgxODMy
MGU5NTYwN2Q2MTVmMWEwODJhODI3NmViMmEzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCkBAIC0zOCw3ICszOCw3IEBAIGVudW0gY2xh
c3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgOiBib29sIHsgTm8sIFllcyB9OwogZW51bSBj
bGFzcyBIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwIDogYm9vbCB7IE5vLCBZZXMgfTsK
IAogc3RydWN0IEFwcEhpZ2hsaWdodCB7Ci0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
aGlnaGxpZ2h0OworICAgIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBoaWdo
bGlnaHQ7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRleHQ7CiAgICAgQ3JlYXRlTmV3R3Jv
dXBGb3JIaWdobGlnaHQgaXNOZXdHcm91cDsKICAgICBIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRl
ZEluQXBwIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA7CkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+CiB2b2lkIEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdo
dC0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQt
PmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKGhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQt
PnNpemUoKSwgMSk7CiAKICAgICBlbmNvZGVyIDw8IHRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3Bw
CmluZGV4IGUyZDlhNjFlNDI3Njc2ZWI3YjdkYWVhYmZmYTMyZDA0YTQ1NzZjMDYuLjVlODBmMGMw
NzJkNDlhM2VmNzk2OTU5MzAyYzQ0NTZjZDJhYmRlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApA
QCAtNDQsMTUgKzQ0LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3RleHByIHVpbnQ2
NF90IGhpZ2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUg
U2lnbmF0dXJlICAoQSlwcGxlKEFQKXBsaWNhdGlvbihIKWlnaGxpZ2h0cygyMDIxKQogCi1zdGQ6
Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpj
cmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hs
aWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8gZGVjb2RlciA9IGJ1ZmZlci5k
ZWNvZGVyKCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1
b3VzKCk7CisgICAgYXV0byBkZWNvZGVyID0gY29udGlndW91c0J1ZmZlci0+ZGVjb2RlcigpOwog
ICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkYXRhOwogICAgIGRlY29k
ZXIgPj4gZGF0YTsKICAgICByZXR1cm4gZGF0YTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhOjp0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjp0b1NoYXJlZEJ1ZmZlcigpIGNv
bnN0CiB7CiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBlbmNvZGVyOwogICAgIGVuY29k
ZXIgPDwgKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCmluZGV4IGNmNjM4MWFjZmIwYTUyMTFiNDM1MDhi
N2I1MTdkNmRiMmY2ZmM3NDMuLmI1ZGFmNjAyNTM5OGEzZjdlNmYxZDM3YWJlY2U4NDRkNGYxYzY1
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFJhbmdlRGF0YS5oCkBAIC0zMywxMiArMzMsMTIgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCi1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBBcHBIaWdobGlnaHRSYW5n
ZURhdGEgewogV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBjcmVhdGUo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpOwogICAgIHN0cnVjdCBOb2RlUGF0aENvbXBvbmVudCB7CiAgICAgICAgIFN0cmlu
ZyBpZGVudGlmaWVyOwogICAgICAgICBTdHJpbmcgbm9kZU5hbWU7CkBAIC0xMTEsNyArMTExLDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRlY29kZShEZWNvZGVyJik7CiAKLSAgICBSZWY8
U2hhcmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFN0
cmluZyBtX2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCmluZGV4IGRjMzlhMGYwZDE4ZmZmY2E3
ZGZiNDY1MjE5Y2Q2MTJhOWY3MzhmOGYuLmU1ZGU4NDk0ZjM1MDQ1MzU5NGIyZjJlODhjM2RkYTMz
ZmE5YWY3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBBcHBI
aWdobGlnaHRTdG9yYWdlOjpzdG9yZUFwcEhpZ2hsaWdodChSZWY8U3RhdGljUmFuZ2U+JiYgcmFu
Z2UpCiAgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5zdG9yZUFwcEhpZ2hsaWdodChX
VEZNb3ZlKGhpZ2hsaWdodCkpOwogfQogCi12b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3Rv
cmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgU2Ny
b2xsVG9IaWdobGlnaHQgc2Nyb2xsKQordm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3Jl
QW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBTY3JvbGxUb0hpZ2hsaWdodCBzY3JvbGwpCiB7CiAgICAgYXV0byBhcHBIaWdobGlnaHRS
YW5nZURhdGEgPSBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShidWZmZXIpOwogICAgIGlm
ICghYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCmluZGV4IGIxNTJmNzZlZDQyNDA4
OTJlYTdkZTIxZTJjYjA2ZDQ3MmQ4NzMzNjAuLmUyNzY2MzNiNDg0ZjgxMDk0YWRlY2U0NWY2NGFi
YmVkMTc4MTI1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKIAogY2xhc3MgRG9jdW1lbnQ7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3Mg
U3RhdGljUmFuZ2U7CiBjbGFzcyBIaWdobGlnaHQ7CiAKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGlj
OgogICAgIH5BcHBIaWdobGlnaHRTdG9yYWdlKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTdGF0aWNSYW5nZT4mJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiwgU2Nyb2xsVG9IaWdobGlnaHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdG9yZUFu
ZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTY3Jv
bGxUb0hpZ2hsaWdodCk7CiAgICAgdm9pZCByZXN0b3JlVW5yZXN0b3JlZEFwcEhpZ2hsaWdodHMo
KTsKICAgICBNb25vdG9uaWNUaW1lIGxhc3RSYW5nZVNlYXJjaFRpbWUoKSBjb25zdCB7IHJldHVy
biBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaDsgfQogICAgIHZvaWQgcmVzZXRMYXN0UmFuZ2VTZWFy
Y2hUaW1lKCkgeyBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaCA9IE1vbm90b25pY1RpbWU6Om5vdygp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDBhZmI3ZWU1Y2M4NzQz
NTZiMzVhMTY4MDMyMzFhNjEzNjRjMDk4NjEuLjI3Y2Q4ZWVjNTNlMWFjZmM1OTg1ZWM3YjhmMDVl
MjI3NjQ1Yzg3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02ODYs
NyArNjg2LDcgQEAgYm9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgo
SURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9yZUluZm8KICAgICBTUUxpdGVUcmFuc2FjdGlv
biB0cmFuc2FjdGlvbigqbV9zcWxpdGVEQik7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0
aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktl
eVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRh
YmFzZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBJREJF
cnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdAogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1j
aGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAg
IGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsK
ICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3Rv
cmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qg
c3RvcmUiX3MgfTsKQEAgLTEzODcsNyArMTM4Nyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3Jl
YXRlIGFuIGluZGV4IGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAg
ICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJ
REJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFs
aXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewog
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZl
IGluIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBjcmVhdGUgaW5kZXggaW4gZGF0YWJh
c2UiX3MgfTsKQEAgLTE0NjQsNyArMTQ2NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQoY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvCiB7
CiAgICAgaGFzUmVjb3JkID0gZmFsc2U7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRl
eEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5k
ZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWlu
ZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBp
bmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBj
aGVjayBmb3IgaW5kZXggcmVjb3JkIGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNTMzLDEzICsxNTMz
LDEzIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhS
ZWNvcmQoaW50NjRfdCBvYmplY3RTdG9yZUlELCBpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQgLSAlcywgJXMiLCBr
ZXlWYWx1ZS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgaW5kZXhLZXkubG9nZ2luZ1N0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhL
ZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4
S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRl
eEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5k
ZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8g
YmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7Cisg
ICAgYXV0byB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOwogICAg
IGlmICghdmFsdWVCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFs
aXplIHRoZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdmFsdWUg
dG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTY2MSw3ICsxNjYxLDcgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmkKICAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2Fj
dGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJBdHRlbXB0IHRvIHNlZSBpZiBrZXkgZXhpc3RzIGluIG9iamVjdHN0b3JlIHdpdGhvdXQg
YW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBr
ZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVm
ZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8g
Y2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hl
Y2sgZm9yIGV4aXN0ZW5jZSBpbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTE3NDEsNyArMTc0MSw3
IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKFNRTGl0ZUlE
QlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICBBU1NFUlQodHJhbnNhY3Rpb24ubW9kZSgp
ICE9IElEQlRyYW5zYWN0aW9uTW9kZTo6UmVhZG9ubHkpOwogICAgIFVOVVNFRF9QQVJBTSh0cmFu
c2FjdGlvbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhl
IGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVu
YWJsZSB0byBzZXJpYWxpemUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFi
YXNlIl9zIH07CkBAIC0xOTYyLDcgKzE5NjIsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmFkZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHN0b3Jl
IGEgcmVjb3JkIGluIGFuIG9iamVjdCBzdG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJf
cyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVj
dCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIl9z
IH07CkBAIC0yMTI0LDcgKzIxMjQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGF1
dG8ga2V5ID0ga2V5UmFuZ2UubG93ZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAg
ICAga2V5ID0gSURCS2V5RGF0YTo6bWluaW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gbG93ZXJC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGlu
IGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3Is
ICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsK
QEAgLTIxMzMsNyArMjEzMyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0
UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAga2V5ID0g
a2V5UmFuZ2UudXBwZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0g
SURCS2V5RGF0YTo6bWF4aW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCBy
YW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUg
dG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTI0NDMs
NyArMjQ0Myw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0
SW5kZXhSZWNvcmRGb3JPbmVLZXkoaW50NjRfdCBpbmRleElECiAKICAgICBBU1NFUlQoa2V5Lmlz
VmFsaWQoKSAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4ICYmIGtleS50
eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNaW4pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5k
ZXggcmVjb3JkIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVu
YWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCJfcyB9
OwpAQCAtMjUwOCwxNCArMjUwOCwxNCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmdldENvdW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpbwogICAgIG91
dENvdW50ID0gMDsKIAogICAgIGF1dG8gbG93ZXJLZXkgPSByYW5nZS5sb3dlcktleS5pc051bGwo
KSA/IElEQktleURhdGE6Om1pbmltdW0oKSA6IHJhbmdlLmxvd2VyS2V5OwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7
CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOwog
ICAgIGlmICghbG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2Vy
aWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkg
aW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKICAgICB9CiAKICAgICBh
dXRvIHVwcGVyS2V5ID0gcmFuZ2UudXBwZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptYXhp
bXVtKCkgOiByYW5nZS51cHBlcktleTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOworICAgIGF1dG8gdXBwZXJCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVy
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkg
aW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJv
ciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3Ig
Y291bnQgb3BlcmF0aW9uIl9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IDhiZmUyMjdk
YjYxOTYyM2JkOGRmMDZhMTA4NThjZjAzMjFjNDMyMDYuLjQ4NjEwMzRkM2ExMmRhMGMwOWNmZWRm
ZTlmMmVhNjVhNjgxMDAzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0yNjksNyArMjY5
LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMoKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CisgICAgYXV0byBidWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKICAgICBpZiAobV9zdGF0ZW1l
bnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09L
KSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50
IChsb3dlciBrZXkpIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMxNSw3ICszMTUsNyBA
QCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElm
TmVjZXNzYXJ5KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRv
IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAobV9wcmVJbmRleFN0
YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJ
VEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgYmluZCBpZCBhcmd1bWVudCB0
byBwcmUgc3RhdGVtZW50IChrZXkpIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNw
cAppbmRleCAwYTQ2OWJkMGJkMWYzOGRjYjk2YjM5ZDhjMzAwMGFmNzNkMTJhYjU5Li5jOWQ2ZGE2
YmRkOWY5Mzk1MDFmNGY0MjMyYjRjNzgzN2Q4NDBkYWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCkBAIC0xOTYs
NyArMTk2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFSZWNvcmRlcjo6c3RhcnRSZWNvcmRp
bmcoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdGltZVNsaWMKICAgICByZXR1cm4geyB9OwogfQog
Ci1zdGF0aWMgaW5saW5lIFJlZjxCbG9iRXZlbnQ+IGNyZWF0ZURhdGFBdmFpbGFibGVFdmVudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlIHRpbWVDb2RlKQorc3RhdGljIGlu
bGluZSBSZWY8QmxvYkV2ZW50PiBjcmVhdGVEYXRhQXZhaWxhYmxlRXZlbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUgdGltZUNvZGUpCiB7CiAgICAgYXV0
byBibG9iID0gYnVmZmVyID8gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIGJ1ZmZlci0+ZXh0cmFjdERh
dGEoKSwgbWltZVR5cGUpIDogQmxvYjo6Y3JlYXRlKGNvbnRleHQpOwogICAgIHJldHVybiBCbG9i
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGF0YWF2YWlsYWJsZUV2ZW50LCBCbG9iRXZlbnQ6
OkluaXQgeyB7IGZhbHNlLCBmYWxzZSwgZmFsc2UgfSwgV1RGTW92ZShibG9iKSwgdGltZUNvZGUg
fSwgQmxvYkV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaAppbmRleCA3NzEyYjQ0NTI4MzY3
ZDhjMjcyNTAyYWRiYWFjYWFmOTc4OGNiZGIwLi4xZTliNzRhYjE3ZTMxMDhkYjQyMDliOWI0ZjAy
MTRkYTExYWM2ZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlzcGF0Y2hFcnJvcihFeGNlcHRpb24mJik7CiAKICAgICBlbnVtIGNsYXNzIFRha2VQ
cml2YXRlUmVjb3JkZXIgeyBObywgWWVzIH07Ci0gICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sg
PSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGRvdWJsZSk+OworICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248
dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgZG91YmxlKT47CiAgICAgdm9pZCBmZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJiwg
VGFrZVByaXZhdGVSZWNvcmRlcik7CiAKICAgICAvLyBNZWRpYVN0cmVhbTo6T2JzZXJ2ZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0
YS5jcHAKaW5kZXggM2Y0YzliY2QxMzNhYzI5ZjNmN2RkZTE5OTQ3OGUzOTI1N2Q1ZTY2Yi4uODc0
YWE3ZjBiMThmMGVlNzU4ODBiYTVmNWVmNjdkNDdiZmMyYjJiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKQEAgLTc3
LDcgKzc3LDcgQEAgdm9pZCBBcnR3b3JrSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0wKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAvLyBTYW5pdGl6ZSB0aGUgaW1hZ2UgYnkgZGVjb2RpbmcgaXQgaW50byBhIEJpdG1h
cEltYWdlLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRpemUgPSBtX2Nh
Y2hlZEltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGJ1ZmZlclRvU2FuaXRpemUgPSBtX2NhY2hlZEltYWdlLT5pbWFnZSgpLT5kYXRhKCk7
CiAgICAgYXV0byBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICBiaXRt
YXBJbWFnZS0+c2V0RGF0YShXVEZNb3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKICAgICBh
dXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAppbmRleCAyYjNjZGUzNjA4MjQ3MWMx
MWM4N2ZjZjYxY2M4MWNjMzYwYzM5ZDkwLi5kMzc4YWZjNmY4YTFiNTdhMDMwMmUyYzg2OGIyNDBh
MjA5N2ZlNGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L1NvdXJjZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuY3BwCkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6
OmFwcGVuZEJ1ZmZlclRpbWVyRmlyZWQoKQogICAgIC8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcv
aHRtbC1tZWRpYS9yYXctZmlsZS90aXAvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS5odG1sI3Nv
dXJjZWJ1ZmZlci1zZWdtZW50LXBhcnNlci1sb29wCiAgICAgLy8gV2hlbiB0aGUgc2VnbWVudCBw
YXJzZXIgbG9vcCBhbGdvcml0aG0gaXMgaW52b2tlZCwgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcHBlbmREYXRhID0gV1RGTW92ZShtX3BlbmRp
bmdBcHBlbmREYXRhKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYXBwZW5k
RGF0YSA9IFdURk1vdmUobV9wZW5kaW5nQXBwZW5kRGF0YSk7CiAgICAgLy8gMS4gTG9vcCBUb3A6
IElmIHRoZSBpbnB1dCBidWZmZXIgaXMgZW1wdHksIHRoZW4ganVtcCB0byB0aGUgbmVlZCBtb3Jl
IGRhdGEgc3RlcCBiZWxvdy4KICAgICBpZiAoIWFwcGVuZERhdGEgfHwgIWFwcGVuZERhdGEtPnNp
emUoKSkgewogICAgICAgICBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoQXBwZW5k
UmVzdWx0OjpBcHBlbmRTdWNjZWVkZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKaW5kZXggNTIwYzA3NzU2OTZhMmYwZTJlNzMwMDcz
NWU4Yzk3NzQ5NWYxYTYxNC4uZDRjODU3OWMwYmJkNDQzYTUxMmZhOWY2OGM0MjdlYzA0ODg1ZDBk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VC
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5oCkBAIC0yMjIsNyArMjIyLDcgQEAgcHJpdmF0ZToKIAogICAgIFdURjo6T2JzZXJ2ZXI8
dm9pZCooKT4gbV9vcGFxdWVSb290UHJvdmlkZXI7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX3BlbmRpbmdBcHBlbmREYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBtX3BlbmRpbmdBcHBlbmREYXRhOwogICAgIFRpbWVyIG1fYXBwZW5kQnVmZmVyVGltZXI7CiAK
ICAgICBSZWZQdHI8VmlkZW9UcmFja0xpc3Q+IG1fdmlkZW9UcmFja3M7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggZmViMWI4ZmZmYjdiOTRjOWU3ZWIwYmU0OGFkMzVk
ZDcwNzljNzBiYi4uY2M1YTg2NTczMDU2NTdkMGE5NzA1NjYxZTRiYjQ5Y2UwYjg0MDVjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lk
IFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQoKQogICAgIG1faXNSZWFk
eVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX3BlbmRpbmdNZXNz
YWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIs
IG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5z
aXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmll
ciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAgbV9wZW5kaW5nTWVzc2FnZXMuY2xlYXIo
KTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyLmgKaW5kZXggZjU4MjdkZjkzNzk0OTNkMjgxMjcwMTc3Y2NmYmNhMDU1MTUzMjMxZi4uNzM5
NDJhODM1OTMxYTlkMjg0YzZhNDUxYmI4ZGJmYjU3NjVjYWRhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudDsKIGNsYXNzIFJUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlckNvbm5lY3Rpb247CiBjbGFzcyBSVENFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlciBmaW5hbCA6IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI+IHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0
cnVjdCBNZXNzYWdlIHsKICAgICAgICAgYm9vbCBpc1JhdyB7IGZhbHNlIH07Ci0gICAgICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICB9OwogICAgIFZlY3RvcjxNZXNzYWdlPiBtX3BlbmRpbmdNZXNzYWdl
czsKICAgICBib29sIG1faXNQZW5kaW5nQ2xvc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggM2UxMTA1NDAwMzUz
ZGU1NjBmMjQ5MzhhOWIyMDhlZjM2ZjY4MDNjNC4uM2NlZWQwYTAxMWU3YjU0NmZhZGRmNDhiYmRh
MjExZGZkZDUyNGM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXIuY3BwCkBAIC05Nyw4ICs5Nyw4IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQs
CiAgICAgbV9jb250ZXh0SWRlbnRpZmllciA9IGNvbnRleHRJZGVudGlmaWVyOwogCiAgICAgZm9y
IChhdXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7Ci0gICAgICAgIHN3aXRjaE9u
KG1lc3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgY2xp
ZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAg
ICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgZGF0
YSkgeworICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwgWyZdKFN0cmluZyYg
dGV4dCkgewogICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdEYXRhKHRleHQpOwog
ICAgICAgICB9LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKaW5kZXggNDFmOTUyODIxZTYyMDA5
M2Y4ZWVmZTMyYzVlZDRhZTBmNWU1NDE5Ny4uMTFiZDQ1ZGU5MTU1Nzc5ZmZjOWVmYjAzZTk1NTI4
ZjA1ZTY0ZDc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgUlRDRGF0YUNoYW5u
ZWxTdGF0ZSBzdGF0ZTsKICAgICAgICAgc3RkOjpvcHRpb25hbDx3ZWJydGM6OlJUQ0Vycm9yPiBl
cnJvcjsKICAgICB9OwotICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnZhcmlhbnQ8U3RhdGVDaGFu
Z2UsIFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6
OnZhcmlhbnQ8U3RhdGVDaGFuZ2UsIFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PjsKICAgICB1c2luZyBQZW5kaW5nTWVzc2FnZXMgPSBWZWN0b3I8TWVzc2FnZT47CiAgICAgdm9p
ZCBzdG9yZU1lc3NhZ2UoUGVuZGluZ01lc3NhZ2VzJiwgY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVy
Jik7CiAgICAgdm9pZCBwcm9jZXNzTWVzc2FnZShjb25zdCB3ZWJydGM6OkRhdGFCdWZmZXImKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmNwcAppbmRleCAzMDljMDI2NDNmNWE3YWU5ZmVjMDhhMTRlYjIxMjI0MDli
MWY4OWUwLi42M2YxYzNjYmUxZWE4MWNmYmY0NTQ2NDYzMjBjZGY3ZmFjZjU5YzJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpz
ZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBtX3NvdXJjZVVSTCA9IHVybDsKIAot
ICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgbV9kYXRhLnJlc2V0KCk7CiAgICAgbV9kYXRhQ29t
cGxldGUgPSBmYWxzZTsKIAogICAgIGlmIChtX3Jlc291cmNlKSB7CkBAIC0xNDksNyArMTQ5LDcg
QEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgIG1fZGF0YS5lbXB0eSgpOwogCiAgICAgbV9yZXNvdXJjZSA9IHJlc291cmNlLnZh
bHVlKCk7CiAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKQEAgLTE4MCw4ICsxODAs
NyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgcwogdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2Ug
PT0gbV9yZXNvdXJjZSk7Ci0gICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgbV9kYXRhLT5hcHBlbmQo
ZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsK
IH0KIAogdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCkBAIC0xOTUsNyArMTk0LDcg
QEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9OwogCiAgICAgaWYgKHJlc291cmNlLmxv
YWRGYWlsZWRPckNhbmNlbGVkKCkpIHsKLSAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAg
ICAgbV9kYXRhLnJlc2V0KCk7CiAKICAgICAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5k
VXBkYXRlUmVuZGVyZXIoKTsKIApAQCAtMjA0LDcgKzIwMyw3IEBAIHZvaWQgSFRNTE1vZGVsRWxl
bWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3
b3JrTG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwg
PSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLmdldCgpLCByZXNvdXJjZS5t
aW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUo
bV9kYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUo
KSwgcmVzb3VyY2UudXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBk
YXRlUmVuZGVyZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggMDVhMWNkYWEzZTE0ODc3YTBhZTQ2
NWI2MzQ5YWE1YmJiMWFmMmM4Mi4uY2UwMDlkNGU1ZWRjMzA5NzQ1ZTAyN2IwNjMyYmQxZTZlODU4
MDNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogICAg
IFVSTCBtX3NvdXJjZVVSTDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNv
dXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiAgICAgUmVmUHRyPE1vZGVsPiBtX21vZGVsOwog
ICAgIFVuaXF1ZVJlZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wgbV9k
YXRhQ29tcGxldGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExv
YWRlclVTRC5tbQppbmRleCAzZTgyYWMyMjE2Nzk2YzllZGI3NjBhMTllZDdhY2UxZjQyY2QzNzc3
Li4xMzAzZWM0ZDI1NjhhNjZmODdkN2ZlYjIwYmYyYjAzMzkyMzJjM2M1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2Rl
bExvYWRlclVTRC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
c2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0
YXRpYyBSZXRhaW5QdHI8TlNVUkw+IHdyaXRlVG9UZW1wb3JhcnlGaWxlKFdlYkNvcmU6Ok1vZGVs
JiBtb2RlbFNvdXJjZSkKICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBv
cmFyeUZpbGUoIk1vZGVsRmlsZSIsIGZpbGVIYW5kbGUsICIudXNkeiIpOwogICAgIEFTU0VSVChG
aWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsKIAotICAgIHNpemVfdCBieXRl
Q291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5k
YXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIHNpemVfdCBi
eXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJj
ZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5z
aXplKCkpOwogICAgIEFTU0VSVF9VTlVTRUQoYnl0ZUNvdW50LCBieXRlQ291bnQgPT0gbW9kZWxT
b3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFu
ZGxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtU2luay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtU2luay5oCmluZGV4IDBiODk4ZjZhZGI1N2ViMjVkYzQ5MzdkODFmZjVkMTRkNTI5NzZj
ODQuLmQ1MTczZmJmOGI0MDM0MWM1Y2Y4ZDhhNGY1NWVlYWM4ZmY4MzhhMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKQEAg
LTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCdWZmZXJTb3VyY2U7
CiBjbGFzcyBSZWFkYWJsZVN0cmVhbTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJlYWRhYmxlU3RyZWFtU2luayA6IHB1YmxpYyBS
ZWZDb3VudGVkPFJlYWRhYmxlU3RyZWFtU2luaz4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKaW5k
ZXggYzQ1MmM4M2ZiZDVjZTg5NWJkZDAzMWFjZjE0NjhmNzg2NTA2MjJkNy4uYjhiNzc4NWY5MWQw
NjhjMmE0NmNlYjFkNjU5NzU4ZmNmOGI2OWQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01MSwxMyAr
NTEsMTUgQEAgcHVibGljOgogICAgICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICAgICAgaWYgKCFtX2NvbnRp
Z3VvdXNCdWZmZXIgJiYgKCFtX2NvbnRhaW5zT25seUFTQ0lJIHx8ICptX2NvbnRhaW5zT25seUFT
Q0lJKSkKKyAgICAgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG1fc2NyaXB0QnVmZmVyLmJ1
ZmZlcigpLT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBpZiAoIW1fY29udGFpbnNPbmx5QVND
SUkpIHsKLSAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxs
QVNDSUkobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVm
ZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFj
dGVyc0FyZUFsbEFTQ0lJKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZl
ci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJ
SSkKLSAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVI
YXNoQW5kTWFza1RvcDhCaXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2Ny
aXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFz
aCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9jb250aWd1b3Vz
QnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAg
ICB9CiAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgIHJldHVy
biB7IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAgICAgcmV0dXJu
IHsgbV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3Nj
cmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICghbV9jYWNoZWRT
Y3JpcHRTdHJpbmcpIHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5nID0gbV9zY3Jp
cHRCdWZmZXIudG9TdHJpbmcoKTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIG1fc2NyaXB0QnVmZmVyID0gc2NyaXB0QnVmZmVyOworICAg
ICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBudWxscHRyOwogICAgIH0KIAogcHJpdmF0ZToKQEAg
LTkxLDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZmZXIgbV9zY3Jp
cHRCdWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRpZ3VvdXNC
dWZmZXI7CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07CiAgICAgbXV0
YWJsZSBTdHJpbmcgbV9jYWNoZWRTY3JpcHRTdHJpbmc7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlv
bmFsPGJvb2w+IG1fY29udGFpbnNPbmx5QVNDSUk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDdlNDlhOWU3MzIyNmI2NWNj
MjhiZjU5NDgxM2IwZjgzYjI2OWQyMmIuLmVmMzdmMWQwY2E0NjJiYjliN2M5YjZhNTVkMThlYmI0
YzExODFhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIERldGFjaGVkT2Zmc2NyZWVu
Q2FudmFzOwogY2xhc3MgSURCVmFsdWU7CiBjbGFzcyBNZXNzYWdlUG9ydDsKIGNsYXNzIEltYWdl
Qml0bWFwQmFja2luZzsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiBlbnVtIGNsYXNzIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOwogCiBlbnVtIGNs
YXNzIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgeyBOb25UaHJvd2luZywgVGhyb3dpbmcgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKaW5kZXggODI2MTMzMzIyYThlZTVmMzc4
MmZiYjIzMTIzYjJkZDNhNTdhMTcyOC4uMTA4ZTZjODc2N2QwZDJmZGFjYmU2NTA0ZWJjNTA3MGU4
ODJiZTY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTM0LDYg
KzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NGb250RmFjZTsKIGNsYXNz
IENTU0ZvbnRTZWxlY3RvcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50Owog
Y2xhc3MgRm9udDsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CkBAIC00Miw3ICs0Myw2IEBA
IGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2Fw
YWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiBjbGFzcyBTVkdGb250RmFj
ZUVsZW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBj
bGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+
IEZvbnRGZWF0dXJlU2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0
YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4
IDFkZWFjNGY0MWNmNDlmMWY4ODJkY2NlZmQ0OGNmNmE5NzMyZjNlZDkuLmM0MmVjMDUxZmUxMWVi
YTE0ZjgxMzM1OWQ4ZDE3YTJjMjgxNjY0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIu
Y3BwCkBAIC00MDIsNyArNDAyLDcgQEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlVHlwZVJlYWRlciBm
aW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICAgICAgdHlwZXMuYWRkKEZpbGU6OmNv
bnRlbnRUeXBlRm9yRmlsZShmaWxlbmFtZSkpOwogICAgIH0KIAotICAgIHZvaWQgcmVhZEJ1ZmZl
cihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYp
CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCiAgICAgewogICAgICAgICB0eXBlcy5hZGQo
dHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDE3MjRjZjBlNTBi
YWE1YjliMjQxMzA0ODFlZTcyNGNiNzgyMDdhYTQuLmM1ZTllMjZiMzcyYWU2ODNmMTg2OGU5MjBj
NDVlZDcwZWRmNTU0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxMzMsNyAr
NDEzMyw3IEBAIFByb21pc2VkQXR0YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1l
bnRJbmZvKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuIHsgYXR0YWNobWVudC0+dW5pcXVl
SWRlbnRpZmllcigpLCBXVEZNb3ZlKGFkZGl0aW9uYWxUeXBlcyksIFdURk1vdmUoYWRkaXRpb25h
bERhdGEpIH07CiB9CiAKLXZvaWQgRWRpdG9yOjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29u
c3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQor
dm9pZCBFZGl0b3I6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZl
cnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAg
IGlmIChhdXRvKiBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKICAgICAgICAgY2xpZW50LT5yZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGlkZW50aWZpZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJy
ZWRGaWxlTmFtZSwgV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAw
MWZlMGI1ZTA0NGVmNjNmMjZhNzFiNDcyZWY5OGIxMWMyMjhiOTFjLi4xZDA3MTZjNWI5M2M4YmI3
YWQ3M2Y0MTc0Y2E4MDQ1OTA1ZjkxOTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU3
LDkgKzU3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlcjsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKLWNsYXNzIERhdGFUcmFuc2ZlcjsK
IGNsYXNzIENvbXBvc2l0ZUVkaXRDb21tYW5kOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3Mg
Q3VzdG9tVW5kb1N0ZXA7CitjbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBEZWxldGVCdXR0b25D
b250cm9sbGVyOwogY2xhc3MgRWRpdENvbW1hbmQ7CiBjbGFzcyBFZGl0Q29tbWFuZENvbXBvc2l0
aW9uOwpAQCAtNzQsNyArNzUsNyBAQCBjbGFzcyBLaWxsUmluZzsKIGNsYXNzIFBhc3RlYm9hcmQ7
CiBjbGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0YTsKIGNsYXNzIFJlbmRlckxheWVyOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7
CiBjbGFzcyBTcGVsbENoZWNrUmVxdWVzdDsKIGNsYXNzIFNwZWxsQ2hlY2tlcjsKQEAgLTU2Myw3
ICs1NjQsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGZpbGVEYXRhKTsKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJy
ZWRGaWxlTmFtZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZmlsZURhdGEpOwogICAg
IHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
PiYmKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CiAg
ICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaAppbmRleCAwOGFhMTI0MjY2MjBm
NzY5NTNhNzliMzRlZGU1ZjZkZjA1MjdiMDE1Li45NTdiNGZkNGE1NTdmYzgxY2QzMDY5ZWVhY2I4
OTQ4OGE5NDdiN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRl
bnRSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIu
aApAQCAtNzIsMTYgKzcyLDE2IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWFkRmlsZVBhdGgoY29u
c3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0g
eyB9LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0geyB9KSBvdmVycmlkZTsKICAgICBib29s
IHJlYWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKICAgICBib29s
IHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZEltYWdlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBw
cmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRJ
bWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQ
cmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRl
OwogICAgIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVy
cmlkZTsKICAgICBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKLSAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplID0geyB9KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEZEKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50
YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOwogI2Vu
ZGlmCiB9OwogCkBAIC05OSwxNiArOTksMTYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlYWRGaWxl
UGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBTdHJpbmcm
ID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZEZpbGVQYXRo
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
Ym9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRJbWFn
ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0g
eyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZEltYWdlKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXpl
ID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZFVSTChjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJv
b2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIHJlYWRXZWJBcmNoaXZl
KFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVy
Jikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwot
ICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICBib29sIHJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKKyAgICBib29sIHJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVy
cmlkZTsKKyAgICBib29sIHJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OworICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCA1NDllYjdk
MmU0YzA3NTQ4ZTRhOGM5ZWEyNGVjMjBlNGYyMWJmYTI1Li4xMTdkYmE2OGVkYjBiZDRiNmMzMGUw
OTQ4NWQ5ZDBjMGYyOWMzODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHZvaWQg
V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSkKICAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGZp
bGVuYW1lKSk7CiB9CiAKLXZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBmaWxlcy5hcHBlbmQoRmls
ZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIEJsb2I6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBidWZm
ZXItPmV4dHJhY3REYXRhKCksIHR5cGUpLCBmaWxlbmFtZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKaW5kZXggNWM1
MjlkZDdjOGVjYzAwMDQ4ZmNiNGQxNTgxNDYzNWIyNGQ5MGJiNy4uOWQ4MTYwNWYxOTkyOThmMTlj
MGVkNjk5NWZlM2JkNzc4MzAzNGZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVj
dCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRl
ciB7CiAgICAgfldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcigpOwogCiAgICAgdm9pZCByZWFk
RmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNv
bnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwog
CiAgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IGNvbnRleHQ7CiAgICAgVmVjdG9y
PFJlZjxGaWxlPj4gZmlsZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0KaW5kZXggZDQ4ZTExYzk2Yjc4MDhmODgzNTRiM2IwNzQ3ZWViMWYxZTM3ZTNm
My4uMDc4MjQ4MzYyYWEwNTRkYzNhYjAwMDA0NTE3MTg0MTk4YTU4MGY3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3ICsxMjcz
LDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVu
dCYgZWxlbWVudCwgTlNVUkwgKnVybCwgQk9PTAogICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9
IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKHVybCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1pbWVU
eXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBsYWNlaG9s
ZGVyIHx8IG1pbWVUeXBlICE9ICJ0ZXh0L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAgZmlsZVdy
YXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0
aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAg
ICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgICAgIFtmaWxlV3JhcHBl
ciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZSh1cmws
IG1pbWVUeXBlKV07CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBub3RGb3Vu
ZCA9IFlFUzsKQEAgLTIzMDAsNyArMjMwMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3Jh
cHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiAK
ICAgICBpZiAoZGF0YVNvdXJjZSkgewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAgICAgICAg
ICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCld
KTsKKyAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFs
bG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcg
KmZpbGVuYW1lID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAg
ICAgICAgICAgIGlmICghZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAgICAgICAg
ICAgICAgIGZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVzb3VyY2Ut
PnVybCgpLCByZXNvdXJjZS0+bWltZVR5cGUoKSk7CkBAIC0yMzIyLDggKzIzMjIsOCBAQCBzdGF0
aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJMKERvY3VtZW50TG9h
ZGVyKiBkYXRhU291cmNlLCBOUwogc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxl
V3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAo
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7Ci0gICAg
ICAgIGlmIChTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJj
ZUJ1ZmZlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFs
bG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV0pOworICAgICAgICBpZiAoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVk
QnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgICAgICByZXR1
cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250
ZW50czpzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CiAgICAgfQogCiAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tCmluZGV4IDZhYTNjZDU0ZTgyYjk5YjMxOTQyN2JlZTM0YzhjNDRiNjc5ZTIyNzkuLjc2
YjFhMDA5ZGU0MzBmYTNiNTRkOWExNWU2NzhjZDgzZjMxNDVmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0y
NDUsNyArMjQ1LDcgQEAgc3RhdGljIGJvb2wgc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERh
dGEoY29uc3QgRnJhbWUmIGZyYW1lKQogCiAjZW5kaWYKIAotc3RhdGljIFJlZjxEb2N1bWVudEZy
YWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJhbWUsIERv
Y3VtZW50JiBkb2N1bWVudCwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkU2l6ZSkKK3N0YXRpYyBS
ZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQoRnJh
bWUmIGZyYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBw
cmVmZXJyZWRTaXplKQogewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgYXV0
byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjph
dHRhY2htZW50VGFnLCBkb2N1bWVudCk7CkBAIC0zMDksNyArMzA5LDcgQEAgc3RhdGljIHZvaWQg
cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRG
cmFnbWVudCYgZnIKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8mIHJlc291
cmNlID0gcmVzb3VyY2VFbnRyeS0+dmFsdWU7Ci0gICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1p
bWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkgfSk7CisgICAgICAgIHNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2Ut
Pm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICB9
CiAKICAgICBpZiAoIXNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5pc0VtcHR5KCkpCkBAIC0zMzIs
NyArMzMyLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRz
KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNF
bXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJtZWRpYSJfczsKIAotICAgICAgICBhdHRhY2ht
ZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUt
Pm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBpbWFnZSB9KTsKKyAgICAgICAg
YXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2Ut
PnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpLCBpbWFnZSB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IGRlc2NlbmRh
bnRzT2ZUeXBlPEhUTUxPYmplY3RFbGVtZW50PihmcmFnbWVudCkpIHsKQEAgLTM1MCw3ICszNTAs
NyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICBuYW1lID0gImZpbGUiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2Vy
dGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlw
ZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgb2JqZWN0IH0pOworICAgICAgICBhdHRhY2ht
ZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUt
Pm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIG9i
amVjdCB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGluZm8gOiBhdHRhY2htZW50SW5zZXJ0
aW9uSW5mbykgewpAQCAtNDI4LDcgKzQyOCw3IEBAIHN0cnVjdCBNYXJrdXBBbmRBcmNoaXZlIHsK
ICAgICBSZWY8QXJjaGl2ZT4gYXJjaGl2ZTsKIH07CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1h
cmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1F
VHlwZUFzSFRNTCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJh
Y3RNYXJrdXBBbmRBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
c3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwp
CiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFVSTCgpLCBi
dWZmZXIpOwogICAgIGlmICghYXJjaGl2ZSkKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFy
ZWRCdWZmZXImIGJ1ZgogICAgIGlmICghY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUg
eyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291
cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hp
dmUucmVsZWFzZU5vbk51bGwoKSB9OworICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3Ry
aW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9u
TnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBz
YW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0
aW9uRG9jdW1lbnQsIE1hcmt1cEFuZEFyY2hpdmUmIG1hcmt1cEFuZEFyY2hpdmUsIE1TT0xpc3RR
dWlya3MgbXNvTGlzdFF1aXJrcywgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmlu
Zyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIFN0
cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRl
c3RpbmF0aW9uRG9jdW0KICAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwo
c3ViZnJhbWVVUkwpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgTWFya3VwQW5k
QXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWlu
UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6
ZSgpKSwKKyAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmlu
Zzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKICAgICAgICAg
ICAgIHN1YmZyYW1lTWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIHN1YmZyYW1lQXJjaGl2
ZS5jb3B5UmVmKCkgfTsKICAgICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFy
a3VwV2l0aEFyY2hpdmUoZnJhbWUsIGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVu
dCwgTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQsIGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKQEAg
LTQ5Nyw3ICs0OTcsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUo
RnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgIHJldHVybiBzYW5p
dGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1lbnQoV1RGTW92ZShmcmFnbWVudCksICpzdGFn
aW5nRG9jdW1lbnQsIG1zb0xpc3RRdWlya3MsIG1hcmt1cEFuZEFyY2hpdmUubWFya3VwKTsKIH0K
IAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1J
TUVUeXBlRm9ySW1hZ2VzKCkgfHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTUzMiw3ICs1MzIsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJB
cmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MTIsMTIgKzYxMiwxMiBAQCBib29sIFdlYkNvbnRl
bnRNYXJrdXBSZWFkZXI6OnJlYWRIVE1MKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHJldHVy
biAhbWFya3VwLmlzRW1wdHkoKTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRG
RChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChmcmFtZS5zZXR0aW5n
cygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgfHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmli
dXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHRO
UyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0
cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhm
cmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC02MjYsMTEgKzYyNiwxMSBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRS
VEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdl
YkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9v
bCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFs
bG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0
cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0
byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcu
Z2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYz
OSwxMiArNjM5LDEyIEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJl
YWRlcjo6cmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYg
KGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1l
bnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAg
IGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3Ry
aW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC02NTMsMTEgKzY1MywxMSBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1h
cmt1cFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVu
dE1hcmt1cFJlYWRlcjo6cmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
YXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxw
dHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBj
cmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBp
ZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NzYsNyArNjc2LDcgQEAg
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2Uo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0
aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVy
OjpyZWFkSW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkK
IHsKICAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAq
ZnJhbWUuZG9jdW1lbnQoKTsKQEAgLTc0Niw3ICs3NDYsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKICAgICByZXR1cm4gYXR0YWNobWVudDsKIH0KIAotc3RhdGljIFJlZjxI
VE1MRWxlbWVudD4gYXR0YWNobWVudEZvckRhdGEoRnJhbWUmIGZyYW1lLCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQ
cmVzZW50YXRpb25TaXplIHByZWZlcnJlZFNpemUpCitzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBh
dHRhY2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVz
ZW50YXRpb25TaXplIHByZWZlcnJlZFNpemUpCiB7CiAgICAgUmVmIGRvY3VtZW50ID0gKmZyYW1l
LmRvY3VtZW50KCk7CiAgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50
OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1bWVudCk7CkBAIC04MzMsNyAr
ODMzLDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRl
bnRSZWFkZXI6OnJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQ
cmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUp
CiB7CiAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAK
aW5kZXggNjA0ODZlNzFhZDU5ZmVjYzcxNWZmMGEwOWIxYzM1NThiN2IzNDJjMi4uZDNlOTgxOWJk
NTMxZjg0ODZhMzE3YWI5ZjllZDgzYTk4ODViZTJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKQEAgLTcxLDcgKzcxLDcgQEAg
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2Uo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0
aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVy
OjpyZWFkSW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkK
IHsKICAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAq
ZnJhbWUuZG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
Yi5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKaW5kZXggNDVkOTMzZTEzY2E0ZDIy
NTFjNWRlZDg0OGFhOWU5ODcyYzc2NzQ4OS4uYmNhNjY5NmViZTZmMGVkZGRkZWU3OWI3M2MzZWUx
NDQ5NmQ4MmZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3Mg
QmxvYkxvYWRlcjsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFt
OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBF
eGNlcHRpb25PcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3Jr
U2VuZFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5j
cHAKaW5kZXggNTU5ZWJjYzQ4YzVmMDk2YWMxOWJhZTdkOWY3MThiNzFmMmEzNTMyMi4uNDJmNDE4
MGRmYTg0MjdlMGU2MGY4MWViNzliMTkxODdjYWZkYmExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgTmV0d29y
a1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKCkKICAgICAgICAgYm9vbCBzaG91bGRTdG9wUHJv
Y2Vzc2luZyA9IGZhbHNlOwogICAgICAgICBzd2l0Y2hPbihtX3F1ZXVlLmZpcnN0KCksIFt0aGlz
XShjb25zdCBDU3RyaW5nJiB1dGY4KSB7CiAgICAgICAgICAgICBtX3dyaXRlU3RyaW5nKHV0Zjgp
OwotICAgICAgICB9LCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKKyAgICAgICAg
fSwgW3RoaXNdKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgZGF0YSkgewogICAgICAgICAg
ICAgZGF0YS0+Zm9yRWFjaFNlZ21lbnQobV93cml0ZVJhd0RhdGEpOwogICAgICAgICB9LCBbdGhp
cywgJnNob3VsZFN0b3BQcm9jZXNzaW5nXShVbmlxdWVSZWY8QmxvYkxvYWRlcj4mIGxvYWRlcikg
ewogICAgICAgICAgICAgYXV0byBlcnJvckNvZGUgPSBsb2FkZXItPmVycm9yQ29kZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaAppbmRleCA1NTFmNzBmOTE2N2Iy
YmZjYjI0NGJiMmIzNzAwYmZiYWFmNTQ3OTZjLi5kMjNjZmViYjQ1MDhiYzMwMDkxNWJiOTk2ZDNm
MTUwNjJjZTM1MDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtT
ZW5kUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUu
aApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CiBj
bGFzcyBCbG9iTG9hZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTmV0d29ya1NlbmRRdWV1ZSA6IHB1
YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CkBAIC02Myw3ICs2Myw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzTWVzc2FnZXMoKTsKIAotICAg
IHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnZhcmlhbnQ8Q1N0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4s
IFVuaXF1ZVJlZjxCbG9iTG9hZGVyPj47CisgICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFu
dDxDU3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIFVuaXF1ZVJlZjxCbG9iTG9h
ZGVyPj47CiAgICAgRGVxdWU8TWVzc2FnZT4gbV9xdWV1ZTsKIAogICAgIFdyaXRlU3RyaW5nIG1f
d3JpdGVTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2ht
ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5jcHAKaW5kZXggNTZhMDZmY2FmMjczZDI1ZGM0Yzc1ZGNlNTY5YWFjOGYxYWE1OTUyNy4uZDJi
ODc0MWEwNDQzNDJjN2ZmZDllOGE1MzNjYzhhMTIwZTI5YmFkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIHN0
YXRpYyBib29sIG1pbWVUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdlQXR0YWNobWVudChjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBv
cnRlZEltYWdlTUlNRVR5cGUobWltZVR5cGUpIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGTUlN
RVR5cGUobWltZVR5cGUpOwogfQogCi12b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRl
RW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVF
bmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBhdXRvKiBob3N0RWxlbWVudCA9
IHNoYWRvd0hvc3QoKTsKICAgICBpZiAoIWlzPEhUTUxJbWFnZUVsZW1lbnQ+KGhvc3RFbGVtZW50
KSB8fCAhYnVmZmVyLT5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuaAppbmRleCA1NzNlYzJlYWUxY2RjMDYwOWYyNjFjMzg0MDBiYjAyYzQ4MGY3YmRk
Li42NjFkZWM5Mzc2ZDhhOWQ2ZDQ3MTdmZDBiNGNlN2Y4MmZmMDNmNzU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xh
c3MgRmlsZTsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJBdHRhY2htZW50
OwogY2xhc3MgU2hhcmVhYmxlQml0bWFwOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVtZW50IGZpbmFs
IDogcHVibGljIEhUTUxFbGVtZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEhUTUxB
dHRhY2htZW50RWxlbWVudCk7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNv
cHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYpIGZpbmFs
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVBdHRyaWJ1dGVzKHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+JiYgbmV3RmlsZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudFR5cGUs
IGNvbnN0IFN0cmluZyYgbmV3RmlsZW5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBk
YXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlRW5j
bG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0
ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwpOwogCiAgICAgSW5zZXJ0
ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwg
Q29udGFpbmVyTm9kZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggNTE3MWI5Y2RjNzg5MzE3MWUyMWU1ZjRiZjU1MDE3ZWY5NDRhYzc5NS4uMWE1
NmJjMDM1OWNjZTFmNTBkY2RkYTA2NTIyMmEwMTA5NWE2OTA1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yOTM4LDcgKzI5MzgsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3Nhcnko
KQogICAgIGF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKTsKIH0KIAotdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJl
Y2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRp
YWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBtZWRpYVBsYXllckluaXRp
YWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhVHlwZSwgaW5pdERhdGEtPnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApp
bmRleCA2OTU2Njk0OTYzMTBlZjkxMDhiOTU2ZmRhNDgyMTQzMDE0OTcwZWNiLi42YzNiNjkzYjdi
MTBlZGEzMGU1MWQ0YzY2MzFiZTNmYjUwY2JmODBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaApAQCAtNzIwLDcgKzcyMCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDRE1D
bGllbnQKICAgICB2b2lkIGNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3Nh
cnkoKSBmaW5hbDsKLSAgICB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25E
YXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7Cisg
ICAgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNv
bnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCA0NDJkMDk0
NmJlMjUwZGNjZjU5MjdiYWE5Mjc5M2E3MGVlOTE5MzNlLi4wMGQ4ZjIzOWQ3MTI3YzYxY2FlMWI1
OGQ5YzRhMzAzYTliM2M5MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAK
QEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OnVwZGF0ZUR1cmluZ1BhcnNp
bmcoKQogICAgIGlmICghbV9pbWFnZUVsZW1lbnQpCiAgICAgICAgIGNyZWF0ZURvY3VtZW50U3Ry
dWN0dXJlKCk7CiAKLSAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbG9hZGVy
KCktPm1haW5SZXNvdXJjZURhdGEoKSkKKyAgICBpZiAoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCkpCiAgICAgICAgIG1f
aW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpLT51cGRhdGVCdWZmZXIoKmJ1ZmZlcik7CiAKICAg
ICBpbWFnZVVwZGF0ZWQoKTsKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6
OmZpbmlzaGVkUGFyc2luZygpCiB7CiAgICAgaWYgKCFwYXJzZXIoKS0+aXNTdG9wcGVkKCkgJiYg
bV9pbWFnZUVsZW1lbnQpIHsKICAgICAgICAgQ2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlID0gKm1f
aW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICAgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgp
OwogCiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBtdWx0aXBhcnQgaW1hZ2UsIG1ha2UgYSBjb3B5
IG9mIHRoZSBjdXJyZW50IHBhcnQsIHNpbmNlIHRoZSByZXNvdXJjZSBkYXRhCiAgICAgICAgIC8v
IHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIG5leHQgcGFydC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYTdj
YTcxNjJkNzkxZWQ3ZmJhOGNjOTFjMjFhMmNmM2FmNmU2OWE3ZS4uMTg3OTNmZjA2NjMzOGZiNjBh
MzRkZWM5MDliYzJkZGQyOGJlYWZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTg1MCw3ICs4NTAsNyBAQCB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bQogICAgICAgICBuZXR3b3JrQWdlbnQtPmludGVyY2VwdFJl
cXVlc3QobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVy
KQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29y
a0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCiAgICAg
ICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVzcG9uc2UocmVzcG9uc2UsIGlkZW50aWZpZXIs
IFdURk1vdmUoaGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDhlNjVjNGViMTAyMzM1MjFmNDhjN2Y0YjEy
MGFkMmM4OTA5YTA3YmEuLmQyOTU3ODEwZDgzODJjOTM1MWQ1YTkzZjE0NGFlZDE0OTNiY2M2NTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNo
YWRvd1Jvb3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogY2xhc3MgVGltZXJCYXNlOwogY2xhc3MgV2ViS2l0TmFtZWRGbG93OwogY2xhc3MgV2Vi
U29ja2V0Q2hhbm5lbDsKQEAgLTIzNiw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZy
YW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2Vw
dFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFt
ZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3Qg
RnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3Nh
Z2VUb0NvbnNvbGUoUGFnZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPik7CiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdl
Pik7CkBAIC00NDEsNyArNDQxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJ
bnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGlj
IHZvaWQgaW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlc291cmNl
TG9hZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJik7Ci0gICAg
c3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0aWMgdm9pZCBh
ZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgc3RkOjp1bmlxdWVf
cHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKIApAQCAtMTI4OSw3ICsxMjg5LDcgQEAg
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KFJl
c291cmNlTG9hZGVyJiBsb2FkZXIsIEYKICAgICAgICAgaW50ZXJjZXB0UmVxdWVzdEltcGwoKmFn
ZW50cywgbG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYgZnJhbWUs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCitpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFt
ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAg
ICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9u
c2UoZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAgaWYgKGF1dG8qIGFnZW50cyA9IGluc3RydW1lbnRp
bmdBZ2VudHMoZnJhbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcAppbmRleCA2MWU0YmMzYmEwMTll
ZTI1ZTVjOGJjMjIxZGZmNjA3N2VkZGI4NjNkLi5mMDY0MDNhNjIzNGI0MmI2YWQyYTgwYjAxOTRh
NTk2ZDg5ZjZlNmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcApAQCAtNDUsNyArNDUsNyBAQCB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdEludGVy
bmFsKFJlc291cmNlTG9hZGVyJiBsbwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50
ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25z
dCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2VJbnRl
cm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJj
ZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25XZWJLaXQuaAppbmRleCBmNzYxMTRjZTk4ZjQyYTdmZjkwNmE0OGQwNDIw
Yjk2MzA1ZDM2OTE0Li4wN2I0MjFiNTljMTU1NWUxYTI5MWUxOGViYjI2MjIxMjJmMTY1OGIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbldlYktpdC5oCkBAIC0zNiwyMCArMzYsMjAgQEAgY2xhc3MgRnJhbWU7CiBjbGFz
cyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJL
aXQgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3QoY29u
c3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91
bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiwgRnVu
Y3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJik7Ci0gICAgc3RhdGljIHZvaWQg
aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0YXRpYyB2
b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7
CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdEludGVy
bmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJv
b2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW50ZXJu
YWwoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
PiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZy
YW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZUludGVy
bmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiB9OwogCiBpbmxpbmUgYm9v
bCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3Qo
Y29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCkBAIC03
Niw3ICs3Niw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6
aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYgbG9hCiAgICAgaW50ZXJjZXB0UmVxdWVz
dEludGVybmFsKGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLWlubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJh
bWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQoraW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShj
b25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4m
JiBoYW5kbGVyKQogewogICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6
OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGZyYW1lLCByZXNwb25zZSkpOwogICAgIGludGVyY2Vw
dFJlc3BvbnNlSW50ZXJuYWwoKmZyYW1lLCByZXNwb25zZSwgaWRlbnRpZmllciwgV1RGTW92ZSho
YW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmNwcAppbmRleCA2NzdjNWI4MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjcz
Li5mMzJmNjYwYjkxNzNiYWU4ZDVjZDlhMTMwZWFlNThiOTdkNWVjZTg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ3LDYg
KzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50
U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3Qg
U3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1f
bG9hZGVySWQobG9hZGVySWQpCisgICAgLCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2lnbmVkIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIGlm
IChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAgICAgICBy
ZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gbnVs
bHB0cjsKKyAgICAgICAgbV9kYXRhQnVmZmVyLT5yZXNldCgpOwogICAgIH0KIAogICAgIGlmICho
YXNDb250ZW50KCkpIHsKQEAgLTgxLDM2ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpldmljdENvbnRlbnQoKQogICAgIHJldHVybiByZW1vdmVD
b250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
aGFzRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVsbCgpOwor
fQorCiBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0
aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6
ZSgpIDogMDsKKyAgICByZXR1cm4gbV9kYXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZvaWQgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7
Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRh
QnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLT5hcHBl
bmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFz
Q29udGVudCgpKTsKIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXpl
KCk7CisgICAgYXV0byBidWZmZXIgPSBtX2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYg
KG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAg
bV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPmRhdGEo
KSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2goYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29k
ZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9j
b250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgp
OwogICAgIH0KIAotICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9j
b250ZW50LnNpemVJbkJ5dGVzKCkgLSBkYXRhTGVuZ3RoOwogfQogCkBAIC0yNjcsNyArMjY5LDcg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQsIENhY2hlZFJlc28KICAgICByZXNvdXJjZURhdGEtPnNldENhY2hlZFJl
c291cmNlKGNhY2hlZFJlc291cmNlKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCit2
b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCiB7CiAgICAgUmVzb3VyY2VEYXRhKiBy
ZXNvdXJjZURhdGEgPSByZXNvdXJjZURhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElkKTsKICAgICBp
ZiAoIXJlc291cmNlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmgKaW5kZXggZWZhMDAwNTNhZTExN2E1NGRmYjEyNmQxMmY5YWJlZTdkYTU5
MDhkNy4uZWUzOTQ1N2Y3NjcyZWFjYWFjOTBhNWI2YmM4ODExMDhjYmRhOGE4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlIDx3dGYv
RGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVS
ZWYuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtNDAsNyArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBD
YWNoZWRSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0UmVzb3Vy
Y2VEZWNvZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTg4LDggKzkwLDggQEAg
cHVibGljOgogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlcigpIGNv
bnN0IHsgcmV0dXJuIG1fZGVjb2Rlci5jb3B5UmVmKCk7IH0KICAgICAgICAgdm9pZCBzZXREZWNv
ZGVyKFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiYmIGRlY29kZXIpIHsgbV9kZWNvZGVyID0g
V1RGTW92ZShkZWNvZGVyKTsgfQogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmNvcHlSZWYoKTsgfQotICAgICAgICB2b2lkIHNl
dEJ1ZmZlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2J1ZmZlciA9IFdURk1v
dmUoYnVmZmVyKTsgfQorICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuY29weVJlZigpOyB9CisgICAgICAgIHZvaWQg
c2V0QnVmZmVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2J1
ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsgfQogCiAgICAgICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
Q2VydGlmaWNhdGVJbmZvPiYgY2VydGlmaWNhdGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0
aWZpY2F0ZUluZm87IH0KICAgICAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZUluZm8oY29uc3Qgc3Rk
OjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8pIHsgbV9jZXJ0aWZp
Y2F0ZUluZm8gPSBjZXJ0aWZpY2F0ZUluZm87IH0KQEAgLTEwMywxMCArMTA1LDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBt
X3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQgc2V0UmVzcG9uc2VUaW1lc3RhbXAo
V2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGltZTsgfQogCi0gICAgICAg
IGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9Cisg
ICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gaGFzRGF0YSgpOyB9
CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiBt
X2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CiAgICAgICAgIHNp
emVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVkIGRlY29k
ZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw4ICsxMjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIFN0
cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAg
ICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fYnVmZmVyOworICAgICAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9k
YXRhQnVmZmVyOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRl
SW5mbzsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fY2FjaGVkUmVzb3VyY2UgeyBudWxscHRy
IH07CiAgICAgICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIG1fdHlwZSB7IElu
c3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSB9OwpAQCAtMTQ0LDcgKzE0Niw3IEBAIHB1
YmxpYzoKICAgICBSZXNvdXJjZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCk7CiAgICAgdm9pZCBtYXliZURlY29kZURhdGFUb0NvbnRlbnQoY29uc3QgU3RyaW5nJiByZXF1
ZXN0SWQpOwogICAgIHZvaWQgYWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0
SWQsIENhY2hlZFJlc291cmNlKik7Ci0gICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3Ry
aW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKKyAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVy
KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKICAgICBSZXNvdXJjZURhdGEgY29u
c3QqIGRhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogICAgIFJlc291cmNlRGF0YSBjb25z
dCogZGF0YUZvclVSTChjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVt
b3ZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRl
eCA0NGUwODRhMjg4NDJmYmM1NjI4OTM3NjFkNzFlNGM3NDI3NGViYjE4Li4xODlmMjZiMDk4Yjcz
NjFkY2Y4ZTlkNjRlMzU5ZTc1ZmQ5YzA5NzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xMTQw
LDcgKzExNDAsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVz
dChSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBGdW5jdGlvbjx2bwogICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyLT5yZXF1ZXN0SW50ZXJjZXB0ZWQocmVxdWVzdElkLCBidWlsZE9iamVjdEZvclJlc291
cmNlUmVxdWVzdChsb2FkZXIucmVxdWVzdCgpKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29y
a0FnZW50OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBo
YW5kbGVyKQordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEFT
U0VSVChtX2VuYWJsZWQpOwogICAgIEFTU0VSVChtX2ludGVyY2VwdGlvbkVuYWJsZWQpOwpAQCAt
MTI0Myw3ICsxMjQzLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9y
TmV0d29ya0FnZW50OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UoY29uc3QKICAgICAgICAgb3ZlcnJp
ZGVSZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBl
LCBvdmVycmlkZVJlc3BvbnNlLm1pbWVUeXBlKCkpOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG92ZXJyaWRlRGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gb3ZlcnJpZGVEYXRhOwogICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CiAgICAgICAgIGF1dG8g
YnVmZmVyID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKQEAg
LTEyNzEsNyArMTI3MSw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zCiAgICAgaWYgKGxvYWRl
ci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KCJVbmFibGUgdG8gZnVsZmlsbCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3Nl
ZCJfcyk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CiAgICAg
ICAgIGF1dG8gYnVmZmVyID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQpOwogICAgICAgICBpZiAoIWJ1
ZmZlcikKQEAgLTE0MDcsMTIgKzE0MDcsMTIgQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkKICAg
ICAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQocmVzb3Vy
Y2UubWltZVR5cGUoKSkpIHsKICAgICAgICAgICAgIGF1dG8gZGVjb2RlciA9IEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIocmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3Vy
Y2UucmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCkpOwogICAgICAgICAgICAgKmJhc2U2NEVu
Y29kZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgKnJlc3Vs
dCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQogCiAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJh
c2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAg
ICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuaAppbmRleCA4ZjZmYmNjMjkzYWViZjhiOWQ1Yzk0NWQyODI5YTE1Mjdi
NzRiYzdmLi42YmNkODdkZGNkOGIwNDQxMzA4ZDFkMDFlY2E2YjBlNmRhMTQxM2Q0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmgKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB3aWxsSW50ZXJj
ZXB0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVx
dWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBib29sIHNob3VsZEludGVyY2VwdFJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGludGVyY2VwdFJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+KT4mJik7CisgICAgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4pPiYmKTsKICAgICB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5j
dGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKIAogICAgIHZvaWQgc2VhcmNo
T3RoZXJSZXF1ZXN0cyhjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiwgUmVmPEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKTsK
QEAgLTE4NSw3ICsxODUsNyBAQCBwcml2YXRlOgogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpOwogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBwdWJsaWM6Ci0gICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiBvcmlnaW5hbFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiBvcmlnaW5hbFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICAgICAgOiBtX29yaWdpbmFsUmVzcG9uc2Uo
b3JpZ2luYWxSZXNwb25zZSkKICAgICAgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgeyB9CkBAIC0yMDIsNyArMjAyLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIHJlc3BvbmQobV9vcmlnaW5hbFJlc3BvbnNlLCBudWxscHRy
KTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcmVzcG9uZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSkKKyAgICAgICAgdm9pZCBy
ZXNwb25kKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gZGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCFtX3Jl
c3BvbmRlZCk7CiAgICAgICAgICAgICBpZiAobV9yZXNwb25kZWQpCkBAIC0yMTUsNyArMjE1LDcg
QEAgcHJpdmF0ZToKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9v
cmlnaW5hbFJlc3BvbnNlOwotICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+IG1fY29tcGxldGlvbkhhbmRs
ZXI7CisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+IG1fY29tcGxldGlvbkhhbmRsZXI7
CiAgICAgICAgIGJvb2wgbV9yZXNwb25kZWQgeyBmYWxzZSB9OwogICAgIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cAppbmRleCAzZGFmZTY0MzdkZjEyMTA0MDVmZWZiZjM3NTc4NWZlY2Q1ZWFjNDcyLi4xYjY0NmFh
MjE3M2FiNTRhM2YxYWJkY2I1MDIwNGFkZTk4YzA3M2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0xMDAs
MTUgKzEwMCwxNSBAQCBzdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29uc3QgdWludDhfdCogYnVm
ZmVyLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleAogCiBib29sIEluc3BlY3RvclBh
Z2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2
NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEo
KTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdl
bnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRv
Y3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0
dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2Rpbmco
KSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAotYm9vbCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJp
bmcqIHJlc3VsdCkKK2Jvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50
KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQog
ewotICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxw
dHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJh
c2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXIt
PnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7
CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJv
b2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCkBAIC0xNTYsNyArMTU2LDcgQEAg
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudChQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBGcmEKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAg
aWYgKGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsLCBsb2FkZXItPnVybCgpKSkg
ewogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggYjUxYWRkYjFi
ZDhmMmNjZTY5NTYwNzk5Y2QxZDk1MmQyZGU0MjgzOC4uM2Q1ZTU2NmRiZTBjNWVjMTFkOWU4ZGY2
N2ZjZjBhNzA5ODhhMmY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIEluc3Bl
Y3RvckNsaWVudDsKIGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBQYWdlOwogY2xhc3Mg
UmVuZGVyT2JqZWN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50IGZpbmFsIDogcHVibGljIEluc3Bl
Y3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUGFnZUFnZW50KTsKQEAg
LTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgICAgICBPdGhlclJlc291cmNlLAogICAgIH07CiAK
LSAgICBzdGF0aWMgYm9vbCBzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2Rl
LCBTdHJpbmcqIHJlc3VsdCk7CisgICAgc3RhdGljIGJvb2wgc2hhcmVkQnVmZmVyQ29udGVudChS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rp
bmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKICAgICBzdGF0
aWMgVmVjdG9yPENhY2hlZFJlc291cmNlKj4gY2FjaGVkUmVzb3VyY2VzRm9yRnJhbWUoRnJhbWUq
KTsKICAgICBzdGF0aWMgdm9pZCByZXNvdXJjZUNvbnRlbnQoSW5zcGVjdG9yOjpQcm90b2NvbDo6
RXJyb3JTdHJpbmcmLCBGcmFtZSosIGNvbnN0IFVSTCYsIFN0cmluZyogcmVzdWx0LCBib29sKiBi
YXNlNjRFbmNvZGVkKTsKICAgICBzdGF0aWMgU3RyaW5nIHNvdXJjZU1hcFVSTEZvclJlc291cmNl
KENhY2hlZFJlc291cmNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAK
aW5kZXggYjRlNmEzYTUzYjRjMGMwZGExYzMxNzJkZDQyY2FlNmE4Y2QyMWY3YS4uNmFlNTI2NTk3
Y2QyODYzMWJlNzk1MGZjMzM1MzZmOGYzNDdkN2FmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b250ZW50RmlsdGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6
ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJU
KG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVm
ZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAg
aWYgKGF1dG8qIHJlc291cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAg
ICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VC
dWZmZXItPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50
LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMg
Y29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBDb250
ZW50RmlsdGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogewogICAgIEFTU0VSVCh3aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZShlcnJvcikpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhIHsg
bV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXItPnJlcGxhY2VtZW50RGF0YSgpIH07CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSB7IG1fYmxvY2tpbmdDb250
ZW50RmlsdGVyLT5yZXBsYWNlbWVudERhdGEoKSB9OwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2UgeyBVUkwoKSwgInRleHQvaHRtbCJfcywgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihyZXBs
YWNlbWVudERhdGEtPnNpemUoKSksICJVVEYtOCJfcyB9OwogICAgIFN1YnN0aXR1dGVEYXRhIHN1
YnN0aXR1dGVEYXRhIHsgV1RGTW92ZShyZXBsYWNlbWVudERhdGEpLCBlcnJvci5mYWlsaW5nVVJM
KCksIHJlc3BvbnNlLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpI
aWRkZW4gfTsKICAgICBTZXRGb3JTY29wZTxib29sPiBsb2FkaW5nQmxvY2tlZFBhZ2UgeyBtX2lz
TG9hZGluZ0Jsb2NrZWRQYWdlLCB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAppbmRleCBjM2Q4NDUwZjcxYzJjMzczZDJhZjFjY2NmYjIxNWFkODFiZjgwZDBi
Li4zYjkwZWY0YzU4MjdlNmMwYjQ5YjM0NjU2YjNjZDcxYThlZGE5NjlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCBEb2N1bWVu
dExvYWRlcjo6fkRvY3VtZW50TG9hZGVyKCkKICNlbmRpZgogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEoKSBj
b25zdAogewogICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuIG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5jb3B5KCk7CkBAIC0xNjA4LDExICsxNjA4
LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRk
QWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNoaXZlKTsKICAgICBBU1NFUlQobV9hcmNoaXZlLT5t
YWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYgbWFpblJlc291cmNlID0gKm1fYXJjaGl2ZS0+bWFp
blJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0
YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSBtYWluUmVzb3VyY2UuZGF0YSgpLm1ha2VD
b250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVU
eXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERh
dGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgp
KTsKKyAgICBjb21taXREYXRhKG1fcGFyc2VkQXJjaGl2ZURhdGEtPmRhdGEoKSwgbWFpblJlc291
cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiB9CkBAIC0xNjcx
LDcgKzE2NzEsNyBAQCBBcmNoaXZlUmVzb3VyY2UqIERvY3VtZW50TG9hZGVyOjphcmNoaXZlUmVz
b3VyY2VGb3JVUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAKIFJlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2UoKSBjb25zdAogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFk
YXRhKQogICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvJiBy
ZXNwb25zZSA9IHRoaXMtPnJlc3BvbnNlKCk7CkBAIC0yMjU1LDggKzIyNTUsOCBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKIAogICAg
IGZyYW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29tbWl0dGVkID0gZmFs
c2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNl
RGF0YSgpOwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5kYXRhKCksIHJlc291cmNlRGF0
YS0+c2l6ZSgpKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VE
YXRhID0gbWFpblJlc291cmNlRGF0YSgpOworICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9p
ZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCkBAIC0yMjkyLDcgKzIyOTIsNyBA
QCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKICAgICBtX2ZyYW1lLT5s
b2FkZXIoKS5jbGllbnQoKS5nZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhpY29uRGVjaXNpb25zKTsK
IH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29s
IGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9h
ZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gaWNvbiA9IG1faWNvbnNQZW5k
aW5nTG9hZERlY2lzaW9uLnRha2UobG9hZElkZW50aWZpZXIpOwogCkBAIC0yMzEzLDcgKzIzMTMs
NyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wg
ZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudAogICAgIHJhd0ljb25Mb2FkZXItPnN0YXJ0TG9h
ZGluZygpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmdJY29uKElj
b25Mb2FkZXImIGxvYWRlciwgU2hhcmVkQnVmZmVyKiBidWZmZXIpCit2b2lkIERvY3VtZW50TG9h
ZGVyOjpmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImIGxvYWRlciwgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogYnVmZmVyKQogewogICAgIC8vIElmIHRoZSBEb2N1bWVudExvYWRlciBoYXMg
ZGV0YWNoZWQgZnJvbSBpdHMgZnJhbWUsIGFsbCBpY29uIGxvYWRzIHNob3VsZCBoYXZlIGFscmVh
ZHkgYmVlbiBjYW5jZWxsZWQuCiAgICAgQVNTRVJUKG1fZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBmYmY1NDVjNDYwZTRlNDg5ZDg3YjI1YzBlODVlY2Nj
YTRjYmYzYzg3Li4zMzk4NzNkNWQzZmI5YmIzMDA0OThjZDZmMzdjYmY2NWI3OGFmNWI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFz
cyBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBj
bGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRGaWx0ZXI7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVyRmllbGRzOwogY2xhc3MgRm9ybVN0YXRl
OwogY2xhc3MgRnJhbWU7CkBAIC04Myw3ICs4NCw3IEBAIGNsYXNzIEljb25Mb2FkZXI7CiBjbGFz
cyBQYWdlOwogY2xhc3MgUHJldmlld0NvbnZlcnRlcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFNXQ2xpZW50Q29ubmVjdGlvbjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwogY2xhc3MgU3Vi
c3RpdHV0ZVJlc291cmNlOwpAQCAtMTcxLDcgKzE3Miw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNP
UkVfRVhQT1JUIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlcigpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIFN1YnJlc291cmNlTG9hZGVyKiBtYWluUmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IG1haW5SZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICAKICAgICBEb2N1bWVudFdyaXRlciYgd3Jp
dGVyKCkgY29uc3QgeyByZXR1cm4gbV93cml0ZXI7IH0KIApAQCAtMzkyLDggKzM5Myw4IEBAIHB1
YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBzdGFydEljb25Mb2FkaW5nKCk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVp
bnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZl
ciopPiYmKTsKLSAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYsIFNoYXJl
ZEJ1ZmZlciopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9y
SWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYpOworICAgIHZvaWQgZmluaXNo
ZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogCiAg
ICAgY29uc3QgVmVjdG9yPExpbmtJY29uPiYgbGlua0ljb25zKCkgY29uc3QgeyByZXR1cm4gbV9s
aW5rSWNvbnM7IH0KIApAQCAtNjIxLDcgKzYyMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3dh
aXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5IHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8dWludDY0
X3QsIExpbmtJY29uPiBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbjsKLSAgICBIYXNoTWFwPHN0
ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRC
dWZmZXIqKT4+IG1faWNvbkxvYWRlcnM7CisgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8SWNv
bkxvYWRlcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciop
Pj4gbV9pY29uTG9hZGVyczsKICAgICBWZWN0b3I8TGlua0ljb24+IG1fbGlua0ljb25zOwogCiAj
aWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuaAppbmRleCBlMTNlMjg2ZTE0ZjRmZThmZDdkZjkwYTBlMTUxZjA5MzQxOGRkZGIxLi4wOGEw
YWUxOWEzNzk4NDZmMTU3NTY0YzJkMGM4MzJiMjc0ODM2MDM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuaApAQCAtNTksNiArNTksNyBAQCBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBj
bGFzcyBDYWNoZWRQYWdlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDaHJvbWU7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEb2N1bWVu
dDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
IGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWludDhfdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNGZkNjM3YTkwMTRh
NWQ0MWEyMjZlZTQ1OTE3YjZiM2U5YTc5MGViYi4uZWU5ZjNkMGM5ODRkNDU1Y2JiOTFiNDYwYzFi
YzEyODk4ZDEyMzY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTk4LDcgKzk4LDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xh
c3MgU3Vic3RpdHV0ZURhdGE7CiBjbGFzcyBXaWRnZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xv
YWRlclN0cmF0ZWd5LmgKaW5kZXggYWVmNjY4YmQ2M2VkNWZjZDQ1ZTYxZTlkMWYxMDdjZmI2YWVm
MjY0Yi4uMjlkMmUzZjQ2MTQwYWFhNTExNjBlNmEyODU2MmYzNzBlMzcxZWIyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgUmVz
b3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiAKIHN0cnVj
dCBGZXRjaE9wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyLmNwcAppbmRleCA2MzM3NTU5NjMyMDAxNDYzODI4OWUyODI2MDRj
NTViMGFmNDQ1MzEzLi42MDQzYWM5YmUyNjdlYTRmYmM3MWUxMTE4YjkwNzkxNTVlMzkxNTAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlci5jcHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlCiAg
ICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWRE
YXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5
cGUpCit2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxl
bmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKIHsKICAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5oCmluZGV4IDQ4YmIyMTUzYzkzZjJkYzc1NGUyMDczMjI1MmMwNTA5Y2Y3
MDRhNDEuLmI1MTc0ZWRjOTRiOTkyMzkwMjA1ZjBmYWQ0NTJlYTVhYzM4Nzg5MzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBA
IC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKQEAgLTc0
LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiwgaW50LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAKICAgICB2b2lk
IG5vdGlmeURvbmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcAppbmRleCBjNjI3NzY4NThhNmRjNWFmZmQzNmRjOWU3
ODVjOGJkMjQ3MmJiNzRkLi5kOTRiNzAwMDc0MWNkOTEyYjkxNzNlMmIzNzQ2ZDRkYThiMzY4YTU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGlj
RGlnZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFw
aGljRGlnZXN0LmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yQnl0ZXMoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
CiAgICAgcmV0dXJuIHsgYWxnb3JpdGhtLCBjcnlwdG9EaWdlc3QtPmNvbXB1dGVIYXNoKCkgfTsK
IH0KIAotUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JT
aGFyZWRCdWZmZXIoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0gYWxnb3Jp
dGhtLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogYnVmZmVyKQogewogICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdl
c3Q6OmNyZWF0ZSh0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShhbGdvcml0aG0pKTsKICAgICBpZiAo
YnVmZmVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlw
dG9ncmFwaGljRGlnZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0LmgKaW5kZXggYWVhM2RjNTdjODc4MzEzMDEzYTViMTZjOTM5Yjc3NGVkNDg0
MzI0Yy4uODNiODYxM2NmZGEyMzI5YWUzMGJiZjZhYmMxNGI5OWQ0NDIzN2IwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaApA
QCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNv
dXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIHN0cnVjdCBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgewogICAgIGVudW0gY2xhc3Mg
QWxnb3JpdGhtIHsKQEAgLTc1LDcgKzc1LDcgQEAgc3RkOjpvcHRpb25hbDxFbmNvZGVkUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUVuY29kZWRDcnlwdG9ncmFwaGljRGlnZXMKIAog
c3RkOjpvcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IGRlY29kZUVuY29kZWRS
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QoY29uc3QgRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdCYpOwogCi1SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhp
Y0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29y
aXRobSwgY29uc3QgU2hhcmVkQnVmZmVyKik7CitSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Qg
Y3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3Q6OkFsZ29yaXRobSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhSZXNvdXJj
ZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29uc3Qgdm9pZCogYnl0ZXMsIHNpemVf
dCBsZW5ndGgpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApp
bmRleCBhYTg1YmI0ZDNjYTg3MTQ1YmI3YTg2ZjY0NjY4ZTQ5NTE3NmFjMjM1Li5kZjEzOTU4OGU4
ZDUyNTJiM2VlYzYxOTNhZTYxYWEyNDc4NmIyMTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTc2LDYgKzc2LDcgQEAgREVGSU5FX0FMTE9DQVRPUl9XSVRI
X0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRlcik7CiBSZXNvdXJjZUxvYWRlcjo6UmVzb3Vy
Y2VMb2FkZXIoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucykKICAg
ICA6IG1fZnJhbWUgeyAmZnJhbWUgfQogICAgICwgbV9kb2N1bWVudExvYWRlciB7IGZyYW1lLmxv
YWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkgfQorICAgICwgbV9yZXNvdXJjZURhdGEgeyBt
YWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9kZWZlcnNMb2Fk
aW5nIHsgb3B0aW9ucy5kZWZlcnNMb2FkaW5nUG9saWN5ID09IERlZmVyc0xvYWRpbmdQb2xpY3k6
OkFsbG93RGVmZXJzTG9hZGluZyAmJiBmcmFtZS5wYWdlKCktPmRlZmVyc0xvYWRpbmcoKSB9CiAg
ICAgLCBtX29wdGlvbnMgeyBvcHRpb25zIH0KIHsKQEAgLTExOCw3ICsxMTksNyBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKIAogICAgIG1faWRlbnRpZmllciA9IHsg
fTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICBtX3Jlc291cmNlRGF0YS0+
cmVzZXQoKTsKICAgICBtX2RlZmVycmVkUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwogfQog
CkBAIC0xODksNyArMTkwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6aW5pdChSZXNvdXJjZVJl
cXVlc3QmJiBjbGllbnRSZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2kKICAgICB9KTsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2
b2lkIFJlc291cmNlTG9hZGVyOjpkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7CiAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgaWYgKHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCkBAIC0zMTgsNyArMzE5LDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVy
aW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2wKIAogICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1
ZmZlcmVkIGRhdGEKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5n
UG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0
cjsKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OndpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSgpCkBAIC0zMjksMjkgKzMzMCwy
OSBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2Uo
KQogICAgICAgICBtX2hhbmRsZS0+Y2FuY2VsKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6
OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFNo
YXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9p
ZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmlu
Z1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmICghbV9yZXNvdXJjZURhdGEgfHwgZGF0YVBheWxvYWRUeXBlID09
IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkgewotICAgICAgICBpZiAoYnVmZmVyKQotICAgICAg
ICAgICAgbV9yZXNvdXJjZURhdGEgPSBidWZmZXI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1fcmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKKyAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERh
dGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7
CisKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZm
ZXIpOwogICAgIGVsc2UKICAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhLCBsZW5n
dGgpOwogfQogCitjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRlcjo6
cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZURhdGEtPmdldCgp
LmdldCgpOworfQorCiB2b2lkIFJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSgpCiB7
Ci0gICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+Y2xlYXIo
KTsKKyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhLT5pc051bGwoKSkKKyAgICAgICAgbV9yZXNvdXJj
ZURhdGEtPmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3VicmVzb3VyY2VM
b2FkZXIoKSBjb25zdApAQCAtNTUxLDE0ICs1NTIsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25n
IGwKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5j
b2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3Zv
aWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxs
cHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5
cGUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRh
dGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91
bGQgb25seSBnZXQgZGF0YStsZW5ndGggKk9SKiBhIFNoYXJlZEJ1ZmZlci4KKyAgICAvLyBUaGlz
IG1ldGhvZCBzaG91bGQgb25seSBnZXQgZGF0YStsZW5ndGggKk9SKiBhIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIuCiAgICAgQVNTRVJUKCFidWZmZXIgfHwgKCFkYXRhICYmICFsZW5ndGgpKTsKIAog
ICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlzIGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRk
aXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwpAQCAtNTcxLDcgKzU3Miw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQg
bmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8v
IENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29w
dGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJh
Y2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVj
ZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0
aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRo
aXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERh
dGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKQEAgLTczNSw3ICs3
MzYsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbgogICAgIGRpZFJlY2VpdmVEYXRhKGRhdGEs
IGxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwogfQogCi12b2lk
IFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBk
aWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkQnl0ZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRl
eCA0ZmQyYmYwYmJiM2IxYmQyMTU0NWRiNTJjMmUxY2E2NGVlNDJiOTE3Li41NGIxYjg2NmRmODk2
YTg0YjRjYTI5N2VlNDc2ZDZkMGI2NjFmZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5o
IgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTU1LDYgKzU2LDggQEAgY2xhc3Mg
RnJhbWU7CiBjbGFzcyBGcmFtZUxvYWRlcjsKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXI7CiBj
bGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwor
Y2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQ
X0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogY2xhc3MgUmVzb3VyY2VMb2FkZXIgOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMgUmVmQ291bnRlZDxSZXNv
dXJjZUxvYWRlcj4sIHByb3RlY3RlZCBSZXNvdXJjZUhhbmRsZUNsaWVudCB7CkBAIC02Niw3ICs2
OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBpbml0KFJlc291cmNlUmVxdWVzdCYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAotICAgIHZvaWQgZGVsaXZlclJl
c3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJik7CisgICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIHZpcnR1YWwgdm9pZCBzdGFydExvYWRpbmcoKQpAQCAtOTgsNyAr
MTAxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7CiAg
ICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jl
c3BvbnNlOyB9CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzb3VyY2VEYXRhLmdldCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhclJlc291cmNlRGF0YSgp
OwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3Q7CkBA
IC0xMDcsNyArMTEwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1
bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRl
c1RvQmVTZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxl
dGlvbkhhbmRsZXIpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVy
PiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKQEAgLTE2
Niw3ICsxNjksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIHdhc0NhbmNlbGxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FuY2VsbGF0aW9uU3RhdHVzID49IENhbmNlbGxlZDsgfQogCi0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90Kiwg
dW5zaWduZWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgCiAgICAgdm9pZCBzZXRSZWZl
cnJlclBvbGljeShSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSkgeyBtX29wdGlvbnMucmVm
ZXJyZXJQb2xpY3kgPSByZWZlcnJlclBvbGljeTsgfQogICAgIFJlZmVycmVyUG9saWN5IHJlZmVy
cmVyUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLnJlZmVycmVyUG9saWN5OyB9CkBA
IC0xOTEsNyArMTk0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENhbmNlbChj
b25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpID0gMDsKIAotICAgIHZvaWQgYWRkRGF0YU9yQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqLCB1bnNpZ25lZCwgU2hhcmVkQnVmZmVyKiwgRGF0YVBheWxvYWRUeXBlKTsKKyAg
ICB2b2lkIGFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIHZvaWQgbG9hZERhdGFVUkwo
KTsKICAgICB2b2lkIGZpbmlzaE5ldHdvcmtMb2FkKCk7CiAKQEAgLTIwMiw3ICsyMDUsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUq
LCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291
cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhh
bmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2FzQmxvY2tlZChSZXNv
dXJjZUhhbmRsZSopIG92ZXJyaWRlOwpAQCAtMjI3LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAKICAg
ICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdp
bmFsUmVxdWVzdDsgLy8gQmVmb3JlIHJlZGlyZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX3Jlc291cmNlRGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9y
ZXNvdXJjZURhdGE7CiAgICAgCiAgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggNDZjZWZiZGY5ZGExNzg5OTdlZGNiOWYzNTQ0ZjQ4ODRiNjBhNmVmZS4uMzdkMGJiODIxYWJk
ODZhOWI1NjA2ZTEyN2VmYzk0MTJhNTFiYjFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBTdWJyZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoLCBsb24KICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0
ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAjaWYgVVNFKFFVSUNLX0xPT0sp
CiAgICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewpA
QCAtNTQyLDcgKzU0Miw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlCiAgICAgZGlkUmVjZWl2
ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVu
Z3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIEFTU0VS
VChtX3Jlc291cmNlKTsKIApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgp
KQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/
IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgp
OworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDog
bGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmgKaW5kZXggMzcyM2I2YjlhYjlmZGRhYWE1NTc0YmZiMGU2ZjM4Y2VkN2FlZmI3NS4uODMy
YzlmMGU3M2QzODQ2NGE3OTVmNDAzODYwZjc5YzM0ZTczYmM3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVk
IGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIEV4
cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiBj
aGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcHJldmlvdXNSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VS
ZXF1ZXN0JiBuZXdSZXF1ZXN0KTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihj
b25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAK
ICAgICB2b2lkIG5vdGlmeURvbmUoTG9hZENvbXBsZXRpb25UeXBlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3Vic3RpdHV0ZURhdGEuaAppbmRleCBmNjYyOTJlMzFjYmViNDI2NDMwYTgzMmFkZWY0
Mjk5MWNiNTc0MzZlLi5hOGE0OWI0N2Y5MjczNDI3NGJhNGNlYWJjMTcwN2ZlZmE3YjY2NDBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaApAQCAtNDMsNyArNDMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFN1YnN0
aXR1dGVEYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgY29udGVudCwgY29uc3QgVVJMJiBmYWls
aW5nVVJMLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgU2Vzc2lvbkhpc3RvcnlW
aXNpYmlsaXR5IHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkpCisgICAgICAgIFN1YnN0aXR1
dGVEYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNvbnRlbnQsIGNvbnN0IFVS
TCYgZmFpbGluZ1VSTCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFNlc3Npb25I
aXN0b3J5VmlzaWJpbGl0eSBzaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KQogICAgICAgICAg
ICAgOiBtX2NvbnRlbnQoV1RGTW92ZShjb250ZW50KSkKICAgICAgICAgICAgICwgbV9mYWlsaW5n
VVJMKGZhaWxpbmdVUkwpCiAgICAgICAgICAgICAsIG1fcmVzcG9uc2UocmVzcG9uc2UpCkBAIC01
NCwxNCArNTQsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzVmFsaWQo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQgIT0gbnVsbHB0cjsgfQogICAgICAgICBib29sIHNo
b3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFJldmVh
bFRvU2Vzc2lvbkhpc3RvcnkgPT0gU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpWaXNpYmxlOyB9
CiAKLSAgICAgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBjb250ZW50KCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZW50LmdldCgpOyB9CisgICAgICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQuZ2V0KCk7IH0KICAgICAgICAgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UubWltZVR5cGUo
KTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOyB9CiAgICAgICAgIGNvbnN0IFVSTCYgZmFp
bGluZ1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFpbGluZ1VSTDsgfQogICAgICAgICBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0K
ICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9j
b250ZW50OworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9jb250ZW50
OwogICAgICAgICBVUkwgbV9mYWlsaW5nVVJMOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIG1f
cmVzcG9uc2U7CiAgICAgICAgIFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBtX3Nob3VsZFJldmVh
bFRvU2Vzc2lvbkhpc3RvcnkgeyBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OkhpZGRlbiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDU5NjY0YjU4
NTRmODViMDJjZGYzNDkwMjBhMGVmZjEzZWI3ODg4NzkuLmNmMmRlMGM2MmQ5NWYzMzI1YjQyYjQ2
ZTI0MDM3NzQ0MTA3NDJhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJl
c291cmNlLmgKQEAgLTM3LDEyICszNywxNCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVy
JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZl
cj4obV9kYXRhKTsgfQorICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oUmVm
IHsgKm1fZGF0YS5nZXQoKSB9KTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgpIHsgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9p
ZCBjbGVhcigpIHsgbV9kYXRhLmVtcHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVy
KFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEo
bV9yZXNwb25zZSwgbV9kYXRhLT5jb3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIo
UmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YSht
X3Jlc3BvbnNlLCBtX2RhdGEuY29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgU3Vic3RpdHV0
ZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGRhdGEpCisgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVybCwgUmVz
b3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKQogICAgICAgICA6IG1fdXJsKFdURk1vdmUodXJsKSkKICAgICAgICAgLCBtX3Jlc3BvbnNl
KFdURk1vdmUocmVzcG9uc2UpKQogICAgICAgICAsIG1fZGF0YShXVEZNb3ZlKGRhdGEpKQpAQCAt
NTIsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAgICBS
ZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRh
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCA4OWYzYjBmMWRjMzlkNDBhNTYzODc4YWU1NWY3
NmM2NzBhNzE1MDkxLi4wMzZlZmQyMGU0OTYzMDBjZjhjOWU3ZTc5MDMxN2UwMWRlNWJhZjM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcApAQCAtNjA1LDcgKzYwNSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNo
ZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QoKQogICAgICAgICB9CiAgICAgfQogICAg
IAotICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21h
bmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9t
YW5pZmVzdFJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEo
KS5zaXplKCkpOworICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5p
ZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5
cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOwogICAgIGlmICghbWFuaWZlc3Qp
IHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNI
RSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBvbmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVz
dCB0byBmYWlsLgogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpBcHBDYWNoZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0
aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0
aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggNjAzMjgxODg4Mzc1ZjQ0
YTYyNGIzZTNiM2FhZmUwNmEzNjg5MmVlNi4uNTE5NzhmNDEyMzg3NGRjNTY2MGVmZjQ3MDY1OTcw
N2Q0ZTVkODVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC0yNTUsMTAgKzI1NSw4IEBAIFVSTCBBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBhdGgpCiAKIHN0
YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAgLy8gRklYTUU6IENsaWVudHMg
cHJvYmFibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgLy8g
UmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2ls
bCBub3QgYmUgbW9kaWZpZWQuCiAgICAgaWYgKHJlc291cmNlLnBhdGgoKS5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkuY29weSgpOworICAgICAgICByZXR1cm4gcmVz
b3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CiB9CiAKQEAgLTI5MCw5
ICsyODgsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5
bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JgogICAgICAgICBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAgICAgICBpZiAoZ2V0QXBwbGljYXRpb25DYWNoZUZh
bGxiYWNrUmVzb3VyY2UocmVxdWVzdCwgcmVzb3VyY2UpKSB7CiAgICAgICAgICAgICByZXNwb25z
ZSA9IHJlc291cmNlLT5yZXNwb25zZSgpOwotICAgICAgICAgICAgLy8gRklYTUU6IENsaWVudHMg
cHJvYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAgICAg
ICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVm
ZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgotICAgICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5k
YXRhKCkuY29weSgpOworICAgICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNv
bnRpZ3VvdXMoKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggNTJjZDE2NDAz
YTE3MzZhNzE4NjU2NzcyNDg2MTFlMDhmNjYzYjI5Zi4uYjk2MzU2ZTc4NTYxMzg5NTZhZTRjMDU5
ODMxNzBjZGY3MjM2NzJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgQXBw
bGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOworY2xh
c3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIERvY3Vt
ZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0
dXRlRGF0YTsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3QgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmNwcAppbmRleCBmMWY3ZTE3NTYzMDE0NzFmMzA4NWRlZjhlNDFkYzVkMGNhOWQ2MDlhLi4yYmIz
ZmU3NWI5OTc3ZTgzMzIyYWUyNTgwZjcyMTJlZTViZjIxNjEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmNwcApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQg
dHlwZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkK
K1JlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6
Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
dW5zaWduZWQgdHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCF1cmwuaGFzRnJhZ21lbnRJZGVudGlm
aWVyKCkpOwogICAgIGlmICghYnVmZmVyKQpAQCAtNDAsNyArNDAsNyBAQCBSZWY8QXBwbGljYXRp
b25DYWNoZVJlc291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBV
UkwmIHVybCwgYwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZShVUkwgeyB1cmwgfSwgV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSwgdHlwZSwgYnVmZmVy
LnJlbGVhc2VOb25OdWxsKCksIHBhdGgpKTsKIH0KIAotQXBwbGljYXRpb25DYWNoZVJlc291cmNl
OjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBwYXRoKQorQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIHVuc2lnbmVk
IHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYg
cGF0aCkKICAgICA6IFN1YnN0aXR1dGVSZXNvdXJjZShXVEZNb3ZlKHVybCksIFdURk1vdmUocmVz
cG9uc2UpLCBXVEZNb3ZlKGRhdGEpKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3N0b3Jh
Z2VJRCgwKQpAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJgogCiB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVy
KQogewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0
aC5pc0VtcHR5KCkgPyBkYXRhKCkuY29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEo
cmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29udGlndW91cygpIDog
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZv
aWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5oCmluZGV4IDg4Yzk0ZGUxYTc3NDEwNDY5YzkzMWE0MmE0NzliMWU2Nzc3YTcw
MmUuLmMyODhlNzAzNmM2NzYyYWQ0ODc2YmE4ODE0NjlhNzVkMjIzN2UxYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgICAgICBGYWxsYmFjayA9IDEg
PDwgNAogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4g
Y3JlYXRlKGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCB0eXBl
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgY29uc3Qg
U3RyaW5nJiBwYXRoID0gU3RyaW5nKCkpOworICAgIHN0YXRpYyBSZWY8QXBwbGljYXRpb25DYWNo
ZVJlc291cmNlPiBjcmVhdGUoY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVu
c2lnbmVkIHR5cGUsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSwgY29uc3QgU3RyaW5nJiBwYXRoID0gU3RyaW5nKCkpOwogCiAgICAgdW5z
aWduZWQgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIHZvaWQgYWRkVHlwZSh1
bnNpZ25lZCB0eXBlKTsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgCiBw
cml2YXRlOgotICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiwgUmVzb3VyY2VSZXNw
b25zZSYmLCB1bnNpZ25lZCB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcm
IHBhdGgpOworICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiwgUmVzb3VyY2VSZXNw
b25zZSYmLCB1bnNpZ25lZCB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgU3RyaW5nJiBwYXRoKTsKIAogICAgIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFjNTA4NDdh
NmU4OTUxNzg5ZTNiM2ZiYWZkYTg1MTg2NjI5MGVlYjAuLjdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4
Yzk3YjhiNTA3NGM3MTI5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0xMDEsNyArMTAxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJl
c3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLAogCiB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS0+ZGF0YSgpLmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25D
YWNoZVJlc291cmNlLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBS
ZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcAppbmRleCAxYjMzYWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUyMGJkMzBlNjM2
NTk1Li44Y2YwNWNjZTE4ODAxMjhkZTU5YmU3MGE5OTgzNmY1YTc0NWI2ZDcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAKQEAgLTc4Myw3ICs3ODMsNiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAog
ICAgIGF1dG8gZGF0YVN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5T
RVJUIElOVE8gQ2FjaGVSZXNvdXJjZURhdGEgKGRhdGEsIHBhdGgpIFZBTFVFUyAoPywgPykiX3Mp
OwogICAgIGlmICghZGF0YVN0YXRlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAog
CiAgICAgU3RyaW5nIGZ1bGxQYXRoOwogICAgIGlmICghcmVzb3VyY2UtPnBhdGgoKS5pc0VtcHR5
KCkpCkBAIC04MTUsNyArODE0LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3Rv
cmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAg
ZGF0YVN0YXRlbWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
aWYgKHJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+
YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50
LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwog
ICAgIH0KICAgICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsK
QEAgLTg3MywxMiArODcyLDEyIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3Jl
KEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgCiAgICAg
aWYgKCFleGVjdXRlU3RhdGVtZW50KGVudHJ5U3RhdGVtZW50LnZhbHVlKCkpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICAvLyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5IHdyaXRlIHRo
ZSByZXNvdXJjZSBkYXRhIHRvIGEgZmlsZT8gSWYgc28sCiAgICAgLy8gcmVsZWFzZSB0aGUgcmVz
b3VyY2UncyBkYXRhIGFuZCBmcmVlIHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50CiAgICAg
Ly8gb2YgbWVtb3J5OgogICAgIGlmICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXNv
dXJjZS0+ZGF0YSgpLmNsZWFyKCk7CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwogCiAgICAg
cmVzb3VyY2UtPnNldFN0b3JhZ2VJRChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTEyNzMsNyArMTI3Miw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnNob3VsZFN0
b3JlUmVzb3VyY2VBc0ZsYXRGaWxlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvCiAgICAgcmV0dXJuIHN0
YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgImF1ZGlvLyIpIHx8IHN0YXJ0
c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgInZpZGVvLyIpOwogfQogICAgIAot
Ym9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJl
Y3RvcnkoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pCitib29sIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pCiB7CiAgICAgU3RyaW5nIGZ1bGxQYXRoOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuaAppbmRleCA5YTk1MzAwODc2NmE4ODg1NTYxYjM0ODg4OWI4Y2VkYTJi
MmViMzM4Li40MTAyYTE4MDhiNDU1NTdiNjQ1ZTM2ZTdlNjgxZmM0YzZkMjA3Y2UyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7
CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBTdG9yYWdl
SURKb3VybmFsOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSA6IHB1YmxpYyBSZWZD
b3VudGVkPEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlPiB7CkBAIC0xMjIsNyArMTIyLDcgQEAgcHJp
dmF0ZToKICAgICBib29sIGVuc3VyZU9yaWdpblJlY29yZChjb25zdCBTZWN1cml0eU9yaWdpbiop
OwogICAgIHN0YXRpYyBib29sIHNob3VsZFN0b3JlUmVzb3VyY2VBc0ZsYXRGaWxlKEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZSopOwogICAgIHZvaWQgZGVsZXRlVGFibGVzKCk7Ci0gICAgYm9vbCB3
cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBvdXRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlRXh0
ZW5zaW9uKTsKKyAgICBib29sIHdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBvdXRG
aWxlbmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKTsKIAogICAgIHZvaWQgbG9hZE1h
bmlmZXN0SG9zdEhhc2hlcygpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCmluZGV4IDZkZTgwYzEwYWM3ZDI1Y2YzNDY5ZjZkZWYw
ZmFmNzI0MWY1OTY0MjguLjRlZjljZDY2YmQwODhiNzRjMDQ2YzA2OTBkMWU5ZDNlNWUzMzYwZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5j
cHAKQEAgLTQ2LDEyICs0NiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYg
UmVmUHRyPEFyY2hpdmU+IFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKGNvbnN0IFVSTCYsIFNoYXJl
ZEJ1ZmZlciYpOwordHlwZWRlZiBSZWZQdHI8QXJjaGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rp
b24oY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogdHlwZWRlZiBIYXNoTWFw
PFN0cmluZywgUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24qLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+IEFyY2hpdmVNSU1FVHlwZXNNYXA7CiAKIC8vIFRoZSBjcmVhdGUgZnVuY3Rpb25zIGluIHRo
ZSBhcmNoaXZlIGNsYXNzZXMgcmV0dXJuIFJlZlB0ciB0byBjb25jcmV0ZSBzdWJjbGFzc2VzCiAv
LyBvZiBBcmNoaXZlLiBUaGlzIGFkYXB0b3IgbWFrZXMgdGhlIGZ1bmN0aW9ucyBoYXZlIGEgdW5p
Zm9ybSByZXR1cm4gdHlwZS4KLXRlbXBsYXRlPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGlj
IFJlZlB0cjxBcmNoaXZlPiBhcmNoaXZlRmFjdG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBBcmNoaXZlQ2xhc3M+IHN0YXRp
YyBSZWZQdHI8QXJjaGl2ZT4gYXJjaGl2ZUZhY3RvcnlDcmVhdGUoY29uc3QgVVJMJiB1cmwsIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gQXJjaGl2ZUNsYXNz
OjpjcmVhdGUodXJsLCBidWZmZXIpOwogfQpAQCAtODMsNyArODMsNyBAQCBib29sIEFyY2hpdmVG
YWN0b3J5Ojppc0FyY2hpdmVNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJl
dHVybiAhbWltZVR5cGUuaXNFbXB0eSgpICYmIGFyY2hpdmVNSU1FVHlwZXMoKS5jb250YWlucyht
aW1lVHlwZSk7CiB9CiAKLVJlZlB0cjxBcmNoaXZlPiBBcmNoaXZlRmFjdG9yeTo6Y3JlYXRlKGNv
bnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
CitSZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsK
ICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKaW5kZXggMjFkMjM2NWNmOGQ5ZDkw
MWVmZTdhYWQ1NTJiZjNkYTQwNjlmZTQwZC4uNTU2NDUxNWM5ZTBkOWQwMzNiNzkwYzc0NzI4NWEy
NTg1M2FiZTAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJj
aGl2ZUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
RmFjdG9yeS5oCkBAIC0zNCwxMiArMzQsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBBcmNoaXZlRmFjdG9yeSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNBcmNoaXZlTUlN
RVR5cGUoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBjcmVhdGUo
Y29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsK
KyAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKICAgICBzdGF0aWMg
dm9pZCByZWdpc3Rlcktub3duQXJjaGl2ZU1JTUVUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKaW5kZXggZmMyMGRhM2RhMDMyY2JlZjc0ZjJl
OWM4NDI4YWNiNGVlMzdiZWYyMy4uMDczODM5NGE4Mjg3MTRhYTBiOTBlZTc1MDc5ZDQ4NmY1YjBl
ODY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVz
b3VyY2UuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5s
aW5lIEFyY2hpdmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYg
ZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCitpbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3Vy
Y2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBT
dHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAg
OiBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMIHsgdXJsIH0sIFJlc291cmNlUmVzcG9uc2UgeyByZXNw
b25zZSB9LCBXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICAs
IG1fdGV4dEVuY29kaW5nKHRleHRFbmNvZGluZykKQEAgLTQyLDcgKzQyLDcgQEAgaW5saW5lIEFy
Y2hpdmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
Y29uc3QgVVJMJiB1cmwKIHsKIH0KIAotUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJl
c291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNv
bnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
K1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBm
cmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIGlmICgh
ZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01NCw3ICs1NCw3IEBAIFJlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgY29uCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXJjaGl2ZVJlc291cmNl
KGRhdGEucmVsZWFzZU5vbk51bGwoKSwgdXJsLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nLCBmcmFt
ZU5hbWUsIHJlc3BvbnNlKSk7CiB9CiAKLVJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewogICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShkYXRhKSwgdXJsLCByZXNwb25zZS5t
aW1lVHlwZSgpLCByZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCksIFN0cmluZygpLCByZXNwb25z
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZS5oCmluZGV4IDIwOWU5NzE3YWViMDkzNjBkYjM5MjdlNmVmYTFlNWJmMWMyYzk3Y2EuLjA1NDhl
ZjcyMWVmZDI3YzAwY2U5M2QxMjI3MGVjZWM0NmMwMmFmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oCkBAIC0zNCw4ICszNCw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXJjaGl2ZVJlc291cmNlIDogcHVibGljIFN1YnN0
aXR1dGVSZXNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IGNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLAorICAg
IHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLAogICAgICAgICBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsCiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmID0gUmVzb3Vy
Y2VSZXNwb25zZSgpKTsKIApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91
bGRJZ25vcmVXaGVuVW5hcmNoaXZpbmcoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZElnbm9yZVdo
ZW5VbmFyY2hpdmluZzsgfQogCiBwcml2YXRlOgotICAgIEFyY2hpdmVSZXNvdXJjZShSZWY8U2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKKyAgICBBcmNoaXZlUmVzb3VyY2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwogCiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgU3RyaW5nIG1fdGV4dEVu
Y29kaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmNwcAppbmRleCBkZTdkYWRkZGFjMjIxMmY2ZDVlMGNjMDkxZDRlNDE2Nzdh
M2YwMTVkLi43MTE1MGNiZGQ4OTY5ZTZhZjAyODY4NGI2YmY2Y2JjMGE1MGIyZmM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZl
LmNwcApAQCAtOTAsNyArOTAsNyBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIFJl
c291cmNlIGRhdGEgY2FuIGJlIGVtcHR5LCBidXQgbXVzdCBiZSByZXByZXNlbnRlZCBieSBhbiBl
bXB0eSBDRkRhdGFSZWYKICAgICBhdXRvJiBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKIAotICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2
ZVJlc291cmNlRGF0YUtleSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CisgICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3Vy
Y2VEYXRhS2V5LCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsK
IAogICAgIC8vIFJlc291cmNlIFVSTCBjYW5ub3QgYmUgbnVsbAogICAgIGlmIChhdXRvIGNmVVJM
ID0gcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpCkBAIC0xMTcsOSAr
MTE3LDkgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAvLyBEb24ndCBpbmNsdWRlIHRo
ZSByZXNvdXJjZSByZXNwb25zZSBmb3IgdGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFp
blJlc291cmNlKSB7CiAgICAgICAgIGlmIChhdXRvIHJlc291cmNlUmVzcG9uc2VEYXRhID0gY3Jl
YXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24ocmVzb3VyY2UtPnJlc3BvbnNlKCkpKQotICAg
ICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lX
ZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkp
OyAgICAKKyAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQo
KSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VE
YXRhLmdldCgpKTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gcHJvcGVydHlMaXN0OwogfQog
CkBAIC0yMTUsMTMgKzIxNSwxMyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGVSZXNvdXJjZShDRkRpY3Rpb25hcnlSZWYgZGljdGlvbgogICAgICAgICAg
ICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIGRh
dGEgaXMgbm90IG9mIHR5cGUgQ0ZEYXRhLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2Ui
KTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAg
ICAgICAgIGF1dG8gcmVzb3VyY2VSZXNwb25zZVZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmlu
Z1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJl
c291cmNlUmVzcG9uc2VWZXJzaW9uS2V5KSk7CiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3BvbnNl
VmVyc2lvbiAmJiBDRkdldFR5cGVJRChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbikgIT0gQ0ZTdHJp
bmdHZXRUeXBlSUQoKSkgewogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJj
aGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIHZlcnNpb24gaXMgbm90IG9mIHR5cGUgQ0ZTdHJpbmcs
IGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVS
ZXNvdXJjZVJlc3BvbnNlRnJvbVByb3BlcnR5TGlzdERhdGEocmVzb3VyY2VSZXNwb25zZURhdGEs
IHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKTsKICAgICB9CiAKQEAgLTI0OCwyMyArMjQ4LDIzIEBA
IFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoUmVmPEFyY2hp
dmVSZXNvdXJjZT4mJiBtYWluUmVzb3VyCiAgICAgcmV0dXJuIGFyY2hpdmU7CiB9CiAKLVJlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVy
JiBkYXRhKQorUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIHJldHVybiBjcmVhdGUoVVJM
KCksIGRhdGEpOwogfQogCi1SZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNo
aXZlIC0gQ3JlYXRpbmcgZnJvbSByYXcgZGF0YSIpOwotICAgIAorCiAgICAgUmVmPExlZ2FjeVdl
YkFyY2hpdmU+IGFyY2hpdmUgPSBjcmVhdGUoKTsKLSAgICAgICAgCi0gICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5jcmVhdGVDRkRhdGEoKTsKKworICAgIFJldGFpblB0cjxD
RkRhdGFSZWY+IGNmRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7
CiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAKKwog
ICAgIENGRXJyb3JSZWYgZXJyb3IgPSBudWxscHRyOwotICAgIAorCiAgICAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gcGxpc3QgPSBhZG9wdENGKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJl
Zj4oQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YSgwLCBjZkRhdGEuZ2V0KCksIGtDRlByb3Bl
cnR5TGlzdEltbXV0YWJsZSwgMCwgJmVycm9yKSkpOwogICAgIGlmICghcGxpc3QpIHsKICNpZm5k
ZWYgTkRFQlVHCkBAIC0yNzYsMTIgKzI3NiwxMiBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YQog
ICAgICAgICAgICAgQ0ZSZWxlYXNlKGVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQotICAgIAorCiAgICAgaWYgKENGR2V0VHlwZUlEKHBsaXN0LmdldCgpKSAhPSBDRkRpY3Rp
b25hcnlHZXRUeXBlSUQoKSkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNo
aXZlIC0gQXJjaGl2ZSBwcm9wZXJ0eSBsaXN0IGlzIG5vdCB0aGUgZXhwZWN0ZWQgQ0ZEaWN0aW9u
YXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFhcmNoaXZlLT5leHRyYWN0KHBsaXN0LmdldCgp
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI5NSw3ICsyOTUsNyBAQCBib29sIExl
Z2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAg
ICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBOdWxsIHJvb3QgQ0ZEaWN0aW9u
YXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KLSAgICAKKwogICAgIENGRGljdGlvbmFyeVJlZiBtYWluUmVzb3VyY2VEaWN0ID0g
c3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9u
YXJ5LCBMZWdhY3lXZWJBcmNoaXZlTWFpblJlc291cmNlS2V5KSk7CiAgICAgaWYgKCFtYWluUmVz
b3VyY2VEaWN0KSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBO
byBtYWluIHJlc291cmNlIGluIGFyY2hpdmUsIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIp
OwpAQCAtMzMzLDcgKzMzMyw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRp
Y3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJM
ZWdhY3lXZWJBcmNoaXZlIC0gU3VicmVzb3VyY2UgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFy
eSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChh
dXRvIHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3VyY2Uoc3VicmVzb3VyY2VEaWN0KSkKICAgICAg
ICAgICAgICAgICBhZGRTdWJyZXNvdXJjZShzdWJyZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsK
ICAgICAgICAgfQpAQCAtMzUzLDcgKzM1Myw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0
cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJj
aGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3ViZnJhbWUgYXJyYXkgaXMgbm90IGV4cGVjdGVk
IENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAg
ICAgICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0gY3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAo
c3ViZnJhbWVBcmNoaXZlLT5leHRyYWN0KHN1YmZyYW1lRGljdCkpCiAgICAgICAgICAgICAgICAg
YWRkU3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3ViZnJhbWVBcmNoaXZlKSk7CkBAIC0zNjEsNyAr
MzYxLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBk
aWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hp
dmUgLSBJbnZhbGlkIHN1YmZyYW1lIGFyY2hpdmUgc2tpcHBlZCIpOwogICAgICAgICB9CiAgICAg
fQotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTUwNiw3ICs1MDYsNyBAQCBSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgbWFya3VwU3RyaW5nLCBGcgogewogICAgIGF1dG8mIHJlc3BvbnNlID0gZnJhbWUubG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKTsKICAgICBVUkwgcmVzcG9uc2VVUkwgPSBy
ZXNwb25zZS51cmwoKTsKLSAgICAKKwogICAgIC8vIGl0J3MgcG9zc2libGUgdG8gaGF2ZSBhIHJl
c3BvbnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81NDU0OTM1
PgogICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwoKSkKQEAgLTYwNSw3ICs2MDUsNyBAQCBSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlv
bihGcmFtZSogZnJhbWUpCiAKICAgICBpZiAoIWRvY3VtZW50LT5pc0ZyYW1lU2V0KCkpCiAgICAg
ICAgIHJldHVybiBhcmNoaXZlOwotICAgICAgICAKKwogICAgIC8vIFdyYXAgdGhlIGZyYW1lc2V0
IGRvY3VtZW50IGluIGFuIGlmcmFtZSBzbyBpdCBjYW4gYmUgcGFzdGVkIGludG8KICAgICAvLyBh
bm90aGVyIGRvY3VtZW50ICh3aGljaCB3aWxsIGhhdmUgYSBib2R5IG9yIGZyYW1lc2V0IG9mIGl0
cyBvd24pLiAKICAgICBTdHJpbmcgaWZyYW1lTWFya3VwID0gIjxpZnJhbWUgZnJhbWVib3JkZXI9
XCJub1wiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdpbmhlaWdodD1cIjBcIiB3aWR0aD1cIjk4JSVc
IiBoZWlnaHQ9XCI5OCUlXCIgc3JjPVwiIiArIGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpLT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygpICsgIlwiPjwvaWZyYW1lPiI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKaW5k
ZXggZDA5ZWM5Zjc1YWJhMTM2YTg2MzM5ZWI0ZDg2YWJkODI3N2M0ZmYwNC4uNWEwN2IxMGI0YmU2
Zjg2MjAxMWE3ODJhN2RlZDIzNjc1OTI0MzYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaApAQCAtNDEsOCArNDEsOCBAQCBz
dHJ1Y3QgU2ltcGxlUmFuZ2U7CiBjbGFzcyBMZWdhY3lXZWJBcmNoaXZlIGZpbmFsIDogcHVibGlj
IEFyY2hpdmUgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TGVnYWN5
V2ViQXJjaGl2ZT4gY3JlYXRlKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxM
ZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgU2hh
cmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPExl
Z2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmIG1haW5SZXNvdXJj
ZSwgVmVjdG9yPFJlZjxBcmNoaXZlUmVzb3VyY2U+PiYmIHN1YnJlc291cmNlcywgVmVjdG9yPFJl
ZjxMZWdhY3lXZWJBcmNoaXZlPj4mJiBzdWJmcmFtZUFyY2hpdmVzKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShOb2RlJiwgRnVuY3Rp
b248Ym9vbChGcmFtZSYpPiYmIGZyYW1lRmlsdGVyID0geyB9KTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFtZSYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAK
aW5kZXggYWNmYmJiNzAyMDIyZDA2YWZlNjIwMDQwNDg3ZmQzNGQ5MjFkNzI3Yy4uZDAxMzlmODdh
MDZmOTY5NzhiNzQ3N2U5ZjQ5OTljMzRlYTlmODYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xMDYsNyArMTA2
LDcgQEAgUmVmPE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUoKQogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE1IVE1MQXJjaGl2ZSk7CiB9CiAKLVJlZlB0cjxNSFRNTEFyY2hpdmU+
IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGRhdGEp
CitSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVy
bCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBGb3Igc2VjdXJpdHkg
cmVhc29ucyB3ZSBvbmx5IGxvYWQgTUhUTUwgcGFnZXMgZnJvbSBsb2NhbCBVUkxzLgogICAgIGlm
ICghTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCh1cmwu
cHJvdG9jb2woKS50b1N0cmluZygpKSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBSZWZQdHI8TUhUTUxB
cmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVy
JiBkYXRhKQogICAgIHJldHVybiBtYWluQXJjaGl2ZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4g
TUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQorUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFn
ZSkKIHsKICAgICBWZWN0b3I8UGFnZVNlcmlhbGl6ZXI6OlJlc291cmNlPiByZXNvdXJjZXM7CiAg
ICAgUGFnZVNlcmlhbGl6ZXIgcGFnZVNlcmlhbGl6ZXIocmVzb3VyY2VzKTsKQEAgLTE2Miw4ICsx
NjIsOCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRh
KFBhZ2UqIHBhZ2UpCiAgICAgLy8gV2UgdXNlIHV0ZjgoKSBiZWxvdyBpbnN0ZWFkIG9mIGFzY2lp
KCkgYXMgYXNjaWkoKSByZXBsYWNlcyBDUkxGcyB3aXRoID8/ICh3ZSBzdGlsbCBvbmx5IGhhdmUg
cHV0IEFTQ0lJIGNoYXJhY3RlcnMgaW4gaXQpLgogICAgIEFTU0VSVChzdHJpbmdCdWlsZGVyLnRv
U3RyaW5nKCkuaXNBbGxBU0NJSSgpKTsKICAgICBDU3RyaW5nIGFzY2lpU3RyaW5nID0gc3RyaW5n
QnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICBhdXRvIG1odG1sRGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgp
LCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtaHRtbERh
dGE7CisgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5n
Lmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKICAg
ICAgICAgc3RyaW5nQnVpbGRlci5jbGVhcigpOwpAQCAtMTc4LDE1ICsxNzgsMTUgQEAgUmVmPFNo
YXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQog
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiXHJcbkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rp
bmc6ICIsIGNvbnRlbnRFbmNvZGluZywgIlxyXG5Db250ZW50LUxvY2F0aW9uOiAiLCByZXNvdXJj
ZS51cmwuc3RyaW5nKCksICJcclxuXHJcbiIpOwogCiAgICAgICAgIGFzY2lpU3RyaW5nID0gc3Ry
aW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQo
YXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIG1odG1s
RGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAK
ICAgICAgICAgLy8gRklYTUU6IGlkZWFsbHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250ZW50IGFz
IGEgc3RyZWFtIHdpdGhvdXQgaGF2aW5nIHRvIGZldGNoIGl0IGFsbC4KICAgICAgICAgYXV0byog
ZGF0YSA9IHJlc291cmNlLmRhdGEtPmRhdGEoKTsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgg
PSByZXNvdXJjZS5kYXRhLT5zaXplKCk7CiAgICAgICAgIGlmICghc3RyY21wKGNvbnRlbnRFbmNv
ZGluZywgcXVvdGVkUHJpbnRhYmxlKSkgewogICAgICAgICAgICAgYXV0byBlbmNvZGVkRGF0YSA9
IHF1b3RlZFByaW50YWJsZUVuY29kZShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICAgICAgICAgIG1o
dG1sRGF0YS0+YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsK
LSAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICBt
aHRtbERhdGEuYXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsK
KyAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIEFTU0VSVCghc3RyY21wKGNvbnRlbnRFbmNvZGluZywgYmFzZTY0KSk7
CiAgICAgICAgICAgICAvLyBXZSBhcmUgbm90IHNwZWNpZnlpbmcgaW5zZXJ0TEZzID0gdHJ1ZSBi
ZWxvdyBhcyBpdCB3b3VsZCBjdXQgdGhlIGxpbmVzIHdpdGggTEZzIGFuZCBNSFRNTCByZXF1aXJl
cyBDUkxGcy4KQEAgLTE5NiwxNyArMTk2LDE3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJj
aGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgICAgIHNpemVfdCBl
bmNvZGVkRGF0YUxlbmd0aCA9IGVuY29kZWREYXRhLnNpemUoKTsKICAgICAgICAgICAgIGRvIHsK
ICAgICAgICAgICAgICAgICBzaXplX3QgbGluZUxlbmd0aCA9IHN0ZDo6bWluKGVuY29kZWREYXRh
TGVuZ3RoIC0gaW5kZXgsIG1heGltdW1MaW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBtaHRt
bERhdGEtPmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7Ci0g
ICAgICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAg
ICAgICBtaHRtbERhdGEuYXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVu
Z3RoKTsKKyAgICAgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAg
ICAgICAgICAgICAgaW5kZXggKz0gbWF4aW11bUxpbmVMZW5ndGg7CiAgICAgICAgICAgICB9IHdo
aWxlIChpbmRleCA8IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfQogICAgIH0KIAogICAg
IGFzY2lpU3RyaW5nID0gbWFrZVN0cmluZygiLS0iLCBib3VuZGFyeSwgIi0tXHJcbiIpLnV0Zjgo
KTsKLSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5n
Lmxlbmd0aCgpKTsKKyAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNj
aWlTdHJpbmcubGVuZ3RoKCkpOwogCi0gICAgcmV0dXJuIG1odG1sRGF0YTsKKyAgICByZXR1cm4g
bWh0bWxEYXRhLnRha2UoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCAzZDJkYjdjOTYwMDJlYmU2ODRiMmJl
ZjhmMWVhOWUyZTk3OTRhNTg5Li4yZGZlODdlODJlN2E0ZGNlMGYzNDFjMzYxOTQzYzk5MDIwNWM4
ZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRN
TEFyY2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRN
TEFyY2hpdmUuaApAQCAtMzgsMTQgKzM4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgTUhUTUxQYXJzZXI7CiBjbGFzcyBQYWdlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTUhUTUxBcmNoaXZlIGZpbmFsIDogcHVi
bGljIEFyY2hpdmUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TUhUTUxBcmNoaXZlPiBjcmVh
dGUoKTsKLSAgICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYs
IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8TUhUTUxBcmNoaXZlPiBjcmVhdGUo
Y29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCi0gICAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKKyAgICBzdGF0aWMgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKIAogICAgIHZp
cnR1YWwgfk1IVE1MQXJjaGl2ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZjFiOTAxZGQwMjAzZGNhYzk0ZGY2
ZDBlYWU0Y2IyZDBiZGI4MDE1ZS4uNWVlOTE4Njg0YTA2ODk2ODNmNzFjMjY3ZjJkOTAxYTM3YTZm
ZWI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MUGFyc2VyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgYm9vbCBza2lwTGluZXNVbnRp
bEJvdW5kYXJ5Rm91bmQoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGxpbmVSZWFkZXIsIGNvbgog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotTUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2VyKFNoYXJlZEJ1
ZmZlciogZGF0YSkKK01IVE1MUGFyc2VyOjpNSFRNTFBhcnNlcihGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBkYXRhKQogICAgIDogbV9saW5lUmVhZGVyKGRhdGEsICJcclxuIikKIHsKIH0KQEAgLTE0
MCw3ICsxNDAsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VO
ZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogewogICAgIEFTU0VSVChlbmRP
ZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHko
KSk7CiAKLSAgICBhdXRvIGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgY29udGVudDsKICAgICBjb25zdCBib29sIGNoZWNrQm91bmRhcnkg
PSAhZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpOwogICAgIGJvb2wgZW5kT2ZQYXJ0UmVhY2hl
ZCA9IGZhbHNlOwogICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkg
PT0gTUlNRUhlYWRlcjo6QmluYXJ5KSB7CkBAIC0xNTQsNyArMTU0LDcgQEAgUmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYg
bWltZUhlYWRlciwKICAgICAgICAgICAgIExPR19FUlJPUigiQmluYXJ5IGNvbnRlbnRzIHJlcXVp
cmVzIGVuZCBvZiBwYXJ0Iik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
fQotICAgICAgICBjb250ZW50LT5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CisgICAgICAgIGNvbnRl
bnQuYXBwZW5kKFdURk1vdmUocGFydCkpOwogICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJh
dG9yKCJcclxuIik7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBuZXh0Q2hhcnM7CiAgICAgICAg
IGlmIChtX2xpbmVSZWFkZXIucGVlayhuZXh0Q2hhcnMsIDIpICE9IDIpIHsKQEAgLTE4MCwxMCAr
MTgwLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQ
YXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgdXNlIGxpbmUudXRm
OCgpIGFuZCBub3QgbGluZS5hc2NpaSgpIGFzIGFzY2lpIHR1cm5zIHNwZWNpYWwgY2hhcmFjdGVy
cyAoc3VjaCBhcyB0YWIsIGxpbmUtZmVlZC4uLikgaW50byAnPycuCi0gICAgICAgICAgICBjb250
ZW50LT5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKKyAgICAgICAg
ICAgIGNvbnRlbnQuYXBwZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7CiAg
ICAgICAgICAgICBpZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1J
TUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBsaW5l
IHJlYWRlciByZW1vdmVzIHRoZSBcclxuLCBidXQgd2UgbmVlZCB0aGVtIGZvciB0aGUgY29udGVu
dCBpbiB0aGlzIGNhc2UgYXMgdGhlIFF1b3RlZFByaW50YWJsZSBkZWNvZGVyIGV4cGVjdHMgQ1It
TEYgdGVybWluYXRlZCBsaW5lcy4KLSAgICAgICAgICAgICAgICBjb250ZW50LT5hcHBlbmQoIlxy
XG4iLCAyKTsKKyAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZCgiXHJcbiIsIDIpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTkzLDkgKzE5MywxMCBAQCBSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVh
ZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAg
IGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBjb250ZW50LnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMo
KTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSkgewog
ICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8gZGVjb2RlZERhdGEg
PSBiYXNlNjREZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAg
ICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRh
KCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBpZiAoIWRlY29kZWREYXRh
KSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgYmFzZTY0IGNvbnRlbnQgZm9yIE1I
VE1MIHBhcnQuIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNCwxMSArMjA1
LDExIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0
KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBjYXNlIE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3Rl
ZFByaW50YWJsZURlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAg
ICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEo
KSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
TUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCaW5hcnk6Ci0gICAg
ICAgIGRhdGEuYXBwZW5kKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAg
ICAgZGF0YS5hcHBlbmQoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRl
bnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIExPR19F
UlJPUigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oCmluZGV4IDFlOWJkNGQ3
NzY3ZWUzOTFhMDAyMmY3MTc0OGYwMGI4NWM4MWIyNWYuLjBkNjA0MzQzZjNkN2FkMTc4Y2MyMjAw
M2M5NzljMjJlNTBhM2I5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxQYXJzZXIuaApAQCAtNDIsMTEgKzQyLDExIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKIGNsYXNzIE1IVE1MQXJjaGl2ZTsKIGNsYXNz
IE1JTUVIZWFkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBNSFRNTFBhcnNlciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTUhU
TUxQYXJzZXIoU2hhcmVkQnVmZmVyKik7CisgICAgZXhwbGljaXQgTUhUTUxQYXJzZXIoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciopOwogCiAgICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gcGFyc2VBcmNo
aXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRB
cHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWViNjgyMDdmYzQ5YTk1Y2MxYzNl
YTFkNGE5ZWJmZDkyNzA0Li5lMWE4NzUxNmJkOGQ1YjhmMjRhZjZhNWI5OTBlMjE4NTM0N2U3NTkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MCwxMiArNDAsMTYgQEAgQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVl
c3QmJiByZXEKIHsKIH0KIAotdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQordm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEg
PyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0ID0gbV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAg
aWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0gbV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVk
U2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwg
bWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCmluZGV4IDA3ZjJhMDc5YzU2NGVlZmZiNjk3YzM3
Yzc4NTY1ZTFlYThkOWFlNWUuLjM3OThhOWI0ZDkwMTNjZmRlYTZmNTZmYmRmMDAxNWFmODk0NzU3
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpv
cHRpb25hbDxzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdD4gcHJvY2Vzcyhjb25zdCBVUkwmIG1h
bmlmZXN0VVJMLCBjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBEb2N1bWVudCogPSBudWxscHRyKTsK
IAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBv
dmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNv
ZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLnB0cigpOyB9CiAgICAgdm9p
ZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2Rp
bmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZjNjFlNjM3NDJmNzRjYzZh
MGJjZjAwMGJhOWIxNzZmLi4zOGEyZTE3ZjBkMDZjOGFjOThkZTI0YjFlNTJiOGU2MGU5MjQxMjBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxl
U2hlZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNo
ZWV0OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQsCiAgICAg
ICAgIHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNoZSB0aGUg
ZGVjb2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2UgcXVpdGUg
YSBiaXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9k
YXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXpl
KCkpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25z
dCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05NywxMyArOTcsMTcgQEAgdm9pZCBDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQubV9wYXJzZWRTdHls
ZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
Cit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQog
ewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNp
emUoKSA6IDApOwotICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2Rp
bmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCi0g
ICAgaWYgKGRhdGEpCi0gICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVj
b2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7
CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVu
Y29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBm
aW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmlu
ZyBjaGVja05vdGlmeSgpCisgICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7
CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3Mp
OwogICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkgdG8gYmUg
bmVlZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5k
ZXggNWQ0ZGQzZGM3ZTM1M2VlM2NiMmZiOTNmMjc4ZDI1NzliOGQ5YTdhMS4uZTY1NWM2OWUzZWRi
NjA5NTAyMzljY2U0NTQ1ZjA5NmI1MjY1NmRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJp
bmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVy
KiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdl
dCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAg
ICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0Qm9keURh
dGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4MjM1MWQ3ZjY2MjViY2Uy
NzFkMDc3NjMzYWU5NC4uZDJiYzI4MjE0NzljNTlhMjMyM2U0ZjY1Y2Q5NGI2M2I0MjM3MzY0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjQsMTAg
KzY0LDE1IEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xp
ZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRpY19jYXN0PENhY2hlZEZvbnRDbGllbnQmPihjbGll
bnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
Cit2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1f
ZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5z
aXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtl
Q29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2Rl
ZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5
KG1ldHJpY3MpOwogfQpAQCAtMTA1LDcgKzExMCw3IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQogCiBzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hh
cmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3
cmFwcGluZykKIHsKLSAgICBSZWZQdHIgYnVmZmVyIHsgJmJ5dGVzIH07CisgICAgUmVmUHRyIGJ1
ZmZlciA9IHsgJmJ5dGVzIH07CiAgICAgd3JhcHBpbmcgPSAhY29udmVydFdPRkZUb1NmbnRJZk5l
Y2Vzc2FyeShidWZmZXIpOwogICAgIHJldHVybiBidWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKCpidWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24pIDogbnVsbHB0cjsKIH0KQEAgLTEz
NSw3ICsxNDAsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKGlzTG9hZGluZygpKQogICAgICAgICByZXR1cm47Ci0g
ICAgCisKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRGb250Q2xpZW50PiB3
YWxrZXIobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkRm9udENsaWVudCogY2xpZW50ID0g
d2Fsa2VyLm5leHQoKSkKICAgICAgICAgY2xpZW50LT5mb250TG9hZGVkKCp0aGlzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IGNlYmRjNTU3ZjEzZmM0YWZk
ODI3NTI5Nzc0YWZkOGVjNGJlZjQyMTAuLjEzNDY2Y2M5OWQwZDE5Y2JmM2Q4ZWYzZGZiZDk2ZjM0
ZDBmODU0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAt
NzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQg
c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5n
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYjE1OWYy
OWVlOTBmZTNkZTAxOWMxMTQ5YmRhNjk0ZTBlNmY2YjU0Mi4uOTQ2Mjc5NTIwZDBkYTQ0NjIyYzZh
Y2QzNjY2MjI4ODEwNWU4MTk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwCkBAIC00NjgsOSArNDY4LDkgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6
OmNsZWFySW1hZ2UoKQogICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lk
IENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRhdGEpCit2
b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRh
dGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7
CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJ
bWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9u
b3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkg
PCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRC
dWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29u
dmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNv
bnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAg
ICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1h
a2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9E
RUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFn
ZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgp
KTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29u
dmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZE
YXRhKCkpLmdldCgpKTsKICNlbHNlCiAgICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxkIGhh
dmUgYmVlbiBjYW5jZWxlZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVydGlu
ZyBQb3N0U2NyaXB0IHRvIFBERi4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU1Myw3
ICs1NTUsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRh
KGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ2Fj
aGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZElt
YWdlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkJ1ZmZlckRhdGEpOwogICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOwpAQCAtNTY3LDcg
KzU2OSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEs
IGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hl
ZEltYWdlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBjb252
ZXJ0ZWREYXRhSWZOZWVkZWQoZGF0YSk7CiAgICAgaWYgKG1fZGF0YSkgewpAQCAtNTkzLDcgKzU5
NSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1lCiB2b2lkIENhY2hlZEltYWdlOjpkaWRSZXBs
YWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKQogewogICAgIGlmIChtX2ltYWdlKSB7Ci0gICAgICAg
IC8vIExldCB0aGUgSW1hZ2Uga25vdyB0aGF0IHRoZSBTaGFyZWRCdWZmZXIgaGFzIGJlZW4gcmVq
aWdnZWQsIHNvIGl0IGNhbiBsZXQgZ28gb2YgYW55IHJlZmVyZW5jZXMgdG8gdGhlIGhlYXAtYWxs
b2NhdGVkIHJlc291cmNlIGJ1ZmZlci4KKyAgICAgICAgLy8gTGV0IHRoZSBJbWFnZSBrbm93IHRo
YXQgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgaGFzIGJlZW4gcmVqaWdnZWQsIHNvIGl0IGNh
biBsZXQgZ28gb2YgYW55IHJlZmVyZW5jZXMgdG8gdGhlIGhlYXAtYWxsb2NhdGVkIHJlc291cmNl
IGJ1ZmZlci4KICAgICAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMjQyNzU2MTcpOiBJdCB3
b3VsZCBiZSBiZXR0ZXIgaWYgd2UgY291bGQgc29tZWhvdyB0ZWxsIHRoZSBJbWFnZSdzIGRlY29k
ZXIgdG8gc3dhcCBpbiB0aGUgbmV3IGNvbnRlbnRzIHdpdGhvdXQgZGVzdHJveWluZyBhbnl0aGlu
Zy4KICAgICAgICAgbV9pbWFnZS0+ZGVzdHJveURlY29kZWREYXRhKHRydWUpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggZTM4OTYyYTBkY2Fm
YmNlZjYzMWMxNGU2M2ZlYjg1YmEwNTUyMDNmNC4uMDgzZjkyZjg4ODI3NmVlZGE4OTkxMjAzMWQy
NDQ5YTk2OGUyNjVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmgKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZVdpZHRo
KCk7IH0KICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBt
X2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KIAotICAgIHZvaWQgdXBk
YXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIGVudW0gU2l6ZVR5
cGUgewogICAgICAgICBVc2VkU2l6ZSwKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZERl
ZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29u
dmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAg
ICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVk
KTsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKSBvdmVycmlkZTsKQEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hh
bmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVk
dWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZl
ckludGVybmFsKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hh
cmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggOTJiMDgzNjk3NTg4ODQ0MDkx
OTM5ZTNlZWQ3OWQ3N2YxODM5NTYyZi4uODk1ZGIxMTU4YjZiOGM4ZmJmN2IxMGI0M2I2MTRlZGE5
NjAyMWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuY3BwCkBAIC00OCw3ICs0OCw3IEBAIENhY2hlZFJhd1Jlc291cmNlOjpDYWNoZWRS
YXdSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUeXBlIHR5cGUsCiAg
ICAgQVNTRVJUKGlzTWFpbk9yTWVkaWFPckljb25PclJhd1Jlc291cmNlKCkpOwogfQogCi1zdGQ6
Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3Vs
YXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAor
c3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNh
bGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGRhdGEpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHByZXZpb3VzRGF0YUxlbmd0aCA9IGVuY29kZWRT
aXplKCk7CiAgICAgaWYgKCFkYXRhIHx8IGRhdGEtPnNpemUoKSA8PSBwcmV2aW91c0RhdGFMZW5n
dGgpCkBAIC01Niw3ICs1Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+
IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDCiAgICAgcmV0dXJu
IGRhdGEtPmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKICAgICAvLyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5l
c3RlZCBydW5sb29wcy4gV2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExv
YWRpbmcuCiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC02NCw3ICs2NCw3
IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRh
dGEpCiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1f
ZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6
ZSA9IGVuY29kZWRTaXplKCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNEYXRh
U2l6ZSkgewpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNv
dXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpIHsKICAg
ICAgICAgLy8gV2UgbWF5IGdldCBoZXJlIHN5bmNocm9ub3VzbHkgZnJvbSB1cGRhdGVCdWZmZXIo
KSBpZiB0aGUgY2FsbGJhY2sgdGhlcmUgZW5kcyB1cCBzcGlubmluZyBhIHJ1bmxvb3AuCkBAIC0x
MDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERh
dGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJp
bmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5n
UG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAg
aWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmso
ZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAg
ICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0
YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGRh
dGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAg
ICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERh
dGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNp
emUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNy
ZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOworICAgICAgICAg
ICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAg
fQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDg0ZTBkODQ0ZDU3MTA5OTUzYWU2YmZmNjU1NjU5
OTUzZTI4YmE2OWIuLmE3ODY1ZjhhZDE3OGFlZmIzMjIwYTU2ZGNmZjE5NTk5M2NmOTVhZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBA
IC01MSw5ICs1MSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGRpZEFkZENsaWVu
dChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNo
YXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1
c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBh
bGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc3dpdGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJjZSgpIG92ZXJyaWRlOwog
ICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9hbGxvd0VuY29kZWREYXRhUmVwbGFjZW1lbnQ7IH0KIAotICAgIHN0ZDo6b3B0aW9uYWw8
U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0
IFNoYXJlZEJ1ZmZlciopIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0
YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqKSBjb25zdDsKICAgICB2b2lkIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICAKICNpZiBVU0UoUVVJ
Q0tfTE9PSykKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVkaXJlY3RQ
YWlyLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1fcmVkaXJlY3RDaGFpbjsKIAogICAgIHN0cnVj
dCBEZWxheWVkRmluaXNoTG9hZGluZyB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8RGVsYXllZEZpbmlzaExvYWRpbmc+IG1fZGVs
YXllZEZpbmlzaExvYWRpbmc7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggM2FlOGJiNjhkMjVjZGRkMTgwMjA5MjJmNWVkYjI0ZDRi
OTEyMDAwMi4uYmY2OWU4MGU1NzZlMWEyODhmNmEwMTFmNTQ2MTQ2MzE1NTgwMWQyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zMzQs
NyArMzM0LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKCp0
aGlzLCBtZXRyaWNzKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNo
YXJlZEJ1ZmZlciYpCit2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3ko
KSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0KQEAgLTM0NCw3ICszNDQs
NyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNp
Z25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIHNl
dExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwpAQCAtOTI3LDggKzky
Nyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRC
dWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZmZXIpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEtPmFwcGVuZChuZXdC
dWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9OwogICAgIGRpZFJlcGxhY2VT
aGFyZWRCdWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3OGNhMjUxODEzZTZj
MDM1YmMyNzguLmM5ODJkZDY5MzdhMGJjMmJmMzhjNDI2MTI2ZmZlNmU3OGM3OTY0NzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC00OSw3ICs0
OSw3IEBAIGNsYXNzIENvb2tpZUphcjsKIGNsYXNzIE1lbW9yeUNhY2hlOwogY2xhc3MgTmV0d29y
a0xvYWRNZXRyaWNzOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7
CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCkBAIC0xMTIsOSArMTEyLDkgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2
aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAg
dmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkg
Y29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIo
U2hhcmVkQnVmZmVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hl
ZFJlc291cmNlOjpTdGF0dXMpOwogCiAgICAgdm9pZCBzZXRSZXNvdXJjZUVycm9yKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKSB7IG1fZXJyb3IgPSBlcnJvcjsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggN2RhMTQ4NTFh
NzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uZGI0MzE2MDdhZTU2MzgzMDM4MDBkZDI1
OWMxMDM0Y2QwOTBmY2ZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01MiwxMiArNTIsMTIgQEAgU3RyaW5nIENhY2hlZFNW
R0RvY3VtZW50OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2Rp
bmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2
b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAg
ICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBm
cmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0aGUgcGFyZW50IFVzZUVs
ZW1lbnQuCiAgICAgICAgIG1fZG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIs
IG1fc2V0dGluZ3MsIHJlc3BvbnNlKCkudXJsKCkpOwotICAgICAgICBtX2RvY3VtZW50LT5zZXRD
b250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpKTsKKyAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CiAg
ICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApp
bmRleCBlOGMxNWYzNjBmYzkxYWM4YjM0ZDM5NjI5NWM1M2QzYzdmMTQ3ZWFhLi40NDVlNGY5ZjQy
YzNjMjc0MDc5NzZhNjRlOTE1NDA3ZjhiNTM0ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3Ry
aW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVj
b2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVj
b2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJl
ZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXggYThlZjU3NmJiNjkzOTMzYTIyMzQ2
OTU1NTc1NmIzNjY3ZTQ4NjMyZS4uZDJjMWRlNDdlZmI3ODEzOThmNDQzOGI3Y2E0ZWEyNjBlMjIx
OTc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Zv
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNw
cApAQCAtODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAogICAgICAgICAgICAgU2NyaXB0RGlz
YWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUgZGlzYWJsZWRTY29wZTsKIAot
ICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRl
Y29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOworICAgICAgICAg
ICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZs
dXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwog
ICAgICAgICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJvcigpOwogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggNDdh
OWY1NzYwN2I5ODI4NGU4Zjc5ZTJjZGVjZTliZTQxOGYxN2I2NS4uYjY3Mzk4YjBlNGY1NmZlN2Fi
Y2IyNzRkMGUzNjg0MzAzNjM1MDg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk2LDEwICs5NiwxNSBAQCB1bnNpZ25lZCBDYWNoZWRTY3Jp
cHQ6OnNjcmlwdEhhc2goKQogICAgIHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2Fj
aGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmco
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUo
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEt
PnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAg
ICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hM
b2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmgKaW5kZXggOTI0Yjg0Y2EyZDg3MTZlMzQ2MDc3ZWVlYjVjYzM0YmNlZGU3
ZTIzZC4uODY1MWU2MzlhZDkwNjE3Mjg1NjFjMzI0YmZhN2FmNGNmOTdmNmQzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaApAQCAtNDcsNyArNDcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAg
U3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVj
b2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rl
ci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
OwogCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMx
Mjg4NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYxLi4wYzg0MjhiYjk5ZGI2ZGZiMTZhMzQ4MTM0
YzM4MjY4MzZjY2U1NDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmNwcApAQCAtNDAsMTAgKzQwLDEwIEBAIENhY2hlZFRleHRUcmFjazo6Q2Fj
aGVkVGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lv
bklECiB7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0
YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBS
ZWZQdHI8U2hhcmVkQnVmZmVyPigpOwogICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5z
aXplKCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291
cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKQEAgLTUxLDEzICs1MSwxMyBAQCB2b2lkIENh
Y2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAg
ICBjbGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UoKnRoaXMpOwogfQog
Ci12b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkK
K3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7CiAgICAgQ2FjaGVk
UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCiB7CiAgICAgZG9VcGRhdGVCdWZmZXIoZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKaW5kZXggODVlMzk2MjA2NTEzMTYwNzAzNjUzZWIyMmM3
NzEzOGI5MTUwN2FkZC4uMDliNDMzOWEzN2I2NzNiMmFjNGZkYWUxNDZiMjliOTY0Nzc3ZmNlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaApAQCAt
MzUsMTAgKzM1LDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIG1heVRyeVJlcGxh
Y2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lk
IHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRv
VXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciopOworICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hl
ZXQuY3BwCmluZGV4IGUzZTJmNWU5NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3ODI2MTVkMzQwMGMuLmQy
ZWZmMmQyZDQwYzkyNzczODc1NmM0YThmMGNiYjkzNDNiZTEwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYxLDEy
ICs2MSwxNiBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25zdAog
ICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hl
ZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZp
bmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0
RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAg
ICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGVu
Y29kZWRTaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1h
a2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Cisg
ICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgp
LCBlbmNvZGVkU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRy
OworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxz
ZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAppbmRleCA2ODQyYjY0NGY2MWNmOTBm
N2Y2MWIyZjdlYzVlMDA2NTRjZDEwY2NjLi5iZDIzMTIxNGYyZDIwYmEzOTY0NDYwMzY2ZTA0MWI5
NDEzNWFjNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVu
Y29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0
IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29k
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmlu
YWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3NoZWV0
OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCmluZGV4IDU1MjU2MWQ2
YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIuLjY2YjkzNThlYzUzMTExNDg0ODIyYTdj
YzI0ZTdmM2E5OTE3MDY1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVn
YWN5UHJldmlld0xvYWRlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDcgKzM4LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291cmNl
TG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwog
CiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyIGZpbmFsIDogcHJpdmF0ZSBQcmV2aWV3Q29udmVy
dGVyQ2xpZW50LCBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00OCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBib29sIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAg
Ym9vbCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIGJvb2wgZGlk
UmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgYm9vbCBk
aWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBkaWRGYWlsKCk7CiAKQEAgLTYwLDE3ICs2Miwx
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZpbmlzaFVwZGF0aW5n
KFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbCB7IH07CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVy
RGlkRmFpbFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKICAgICB2b2lkIHByZXZp
ZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOwot
ICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXIm
LCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJE
aWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRp
bmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRp
ZEZhaWxDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKIAogICAgIC8vIFByZXZp
ZXdDb252ZXJ0ZXJQcm92aWRlcgotICAgIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZp
ZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgU2hhcmVkQnVmZmVyKik+JiYpIGZpbmFsOworICAgIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJj
ZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmKSBmaW5hbDsKICAgICB2b2lk
IHByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpIGZpbmFsOwogCiAgICAgUmVm
UHRyPFByZXZpZXdDb252ZXJ0ZXI+IG1fY29udmVydGVyOwogICAgIFJlZjxMZWdhY3lQcmV2aWV3
TG9hZGVyQ2xpZW50PiBtX2NsaWVudDsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX29yaWdpbmFs
RGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9vcmlnaW5hbERhdGE7
CiAgICAgV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxvYWRlcjsKICAgICBib29s
IG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXggZDE4YjI1MmU5NzU2YzhjZTBj
OTViNjNlNzhkZDAwOTdlZjJhNTczNC4uNzQ4ZmVkYjhlYTQ4ZmFiYzgyNWZiNWI2NzcxNzQxNTIw
NWIzMWIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5tbQpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgUmVmPExlZ2FjeVByZXZpZXdMb2Fk
ZXJDbGllbnQ+IG1ha2VDbGllbnQoY29uc3QgUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgYwogICAg
IHJldHVybiBlbXB0eUNsaWVudCgpOwogfQogCi1ib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIExlZ2FjeVBy
ZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIGlmIChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVy
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQ
cmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdD
b252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3Nl
ZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsKKyAgICBtX29yaWdpbmFs
RGF0YS0+cmVzZXQoKTsKICAgICByZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0
UHJldmlld0NvbnZlcnRlcihXVEZNb3ZlKG1fY29udmVydGVyKSk7CiAgICAgYXV0byByZXNwb25z
ZSB7IGNvbnZlcnRlci5wcmV2aWV3UmVzcG9uc2UoKSB9OwogCkBAIC0xNDcsNyArMTQ3LDcgQEAg
dm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0
aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICB9KTsKIH0KIAotdm9pZCBMZWdhY3lQcmV2aWV3
TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJl
dmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBt
X3Jlc291cmNlTG9hZGVyLmdldCgpOwogICAgIGlmICghcmVzb3VyY2VMb2FkZXIpCkBAIC0yMjQs
MTAgKzIyNCwxMCBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVQYXNzd29yZEZv
clByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgYwogICAgIG1fY2xpZW50LT5kaWRS
ZXF1ZXN0UGFzc3dvcmQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIExl
Z2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVy
KFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTGVnYWN5UHJldmll
d0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0Nv
bnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlRfVU5V
U0VEKGNvbnZlcnRlciwgJmNvbnZlcnRlciA9PSBtX2NvbnZlcnRlcik7Ci0gICAgY29tcGxldGlv
bkhhbmRsZXIobV9vcmlnaW5hbERhdGEucHRyKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1f
b3JpZ2luYWxEYXRhLT5nZXQoKS5nZXQoKSk7CiB9CiAKIExlZ2FjeVByZXZpZXdMb2FkZXI6On5M
ZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwpAQCAtMjM1LDcgKzIzNSw3IEBAIExlZ2Fj
eVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwogTGVnYWN5
UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmlld0xvYWRlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVy
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IG1fY29udmVydGVyIHsg
UHJldmlld0NvbnZlcnRlcjo6Y3JlYXRlKHJlc3BvbnNlLCAqdGhpcykgfQogICAgICwgbV9jbGll
bnQgeyBtYWtlQ2xpZW50KGxvYWRlciwgbV9jb252ZXJ0ZXItPnByZXZpZXdGaWxlTmFtZSgpLCBt
X2NvbnZlcnRlci0+cHJldmlld1VUSSgpKSB9Ci0gICAgLCBtX29yaWdpbmFsRGF0YSB7IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9vcmlnaW5hbERhdGEgeyBtYWtlVW5pcXVlUmVm
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9yZXNvdXJjZUxvYWRlciB7IGxvYWRl
ciB9CiAgICAgLCBtX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmcgeyBsb2FkZXIuZnJh
bWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29r
UHJldmlldygpIH0KIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDgyMzc0ZTcy
NjJjNzBlYTlkZmU0ZDY0ZjI1YWIxMzVhYTYwMzMzY2YuLmVhNjE1ZGZmNGRkMGVkNTE0YmZmNjQ0
MjY0N2VjNDYyMGY2MzIyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9y
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMzgs
MTIgKzM4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBET01QYXN0ZUFj
Y2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9j
dW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEtleWJv
YXJkRXZlbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsKIGNsYXNzIFRleHRDaGVj
a2VyQ2xpZW50OwogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKQEAgLTc4LDcgKzc5LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShjb25zdCBT
aW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBsZVJhbmdlJikgPSAwOwogCiAjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29u
dGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogcHJlZmVycmVkRmlsZU5hbWUgKi8sIFJlZjxT
aGFyZWRCdWZmZXI+JiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJ
ZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAv
KiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBwcmVmZXJyZWRGaWxlTmFtZSAqLywg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLywg
Y29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBmaWxlUGF0
aCAqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFNl
cmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXggMWExMjEwZmE4MzM3Y2Q5
NTIwZjRlMDExYTkwNzM2NzU0ZGU1MThmMS4uYWM1M2NiMTRiZjAwZTUxNjQ3YzllYzkxMTA5OGJl
YTAzNjE1MTEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTI3
Myw3ICsyNzMsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKENh
Y2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVudCogaW1hZwogICAgIGlmICghaW1hZ2UgfHwg
aW1hZ2UtPmltYWdlKCkgPT0gJkltYWdlOjpudWxsSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+
aW1hZ2VGb3JSZW5kZXJlcihpbWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1h
Z2VGb3JSZW5kZXJlcihpbWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIGRhdGEgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogCkBAIC0yODIsNyArMjgy
LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFn
ZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUo
KSwgV1RGTW92ZShkYXRhKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdl
LT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIGRhdGEtPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAg
bV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRh
UmVhZGVyLmNwcAppbmRleCA5NmFkMDgyNTQzZGQ1M2E4NzliZTUxYzZkOTIxZDdhZmZmNDJlOGUw
Li43NTgzNmI4NzkxNDNiNjBhN2YzNTE5NzAzMjA3YjZhZDNkOGQ0Zjg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIFNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpCiB7Ci0gICAgCisKIH0KIAogU2hhcmVEYXRhUmVhZGVyOjp+U2hhcmVEYXRhUmVh
ZGVyKCkKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIFNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogICAgICAgICBj
YW5jZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGF1dG8gYXJyYXlC
dWZmZXIgPSBtX3BlbmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+YXJyYXlCdWZmZXJSZXN1bHQo
KTsKLSAgICAKKwogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZpbGVOYW1lID0gZmlsZU5h
bWU7CiAgICAgZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXIt
PmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBwZW5kKFdURk1vdmUoZmls
ZSkpOwogICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKLSAgICAKKwogICAgIGlmIChtX2ZpbGVzUmVh
ZFNvRmFyID09IHN0YXRpY19jYXN0PGludD4obV9wZW5kaW5nRmlsZUxvYWRzLnNpemUoKSkpIHsK
ICAgICAgICAgbV9wZW5kaW5nRmlsZUxvYWRzLmNsZWFyKCk7CiAgICAgICAgIGlmIChhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0p
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmgKaW5kZXggZTM4
MDZlODdkZjc5YTNkOWI1Y2FlMTIxNGRlNjZhYTJhNjU4NDdkYi4uZmM2NmMzNjVhMmYyOWE0Yzc4
ZTYwNjE5ZTQ3YTcxYzcyNThkOGZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTm93UGxheWluZ01hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQ
bGF5aW5nTWFuYWdlci5oCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRp
b25hbDxOb3dQbGF5aW5nSW5mbz4gbV9ub3dQbGF5aW5nSW5mbzsKICAgICBzdHJ1Y3QgQXJ0d29y
a0NhY2hlIHsKICAgICAgICAgU3RyaW5nIHNyYzsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gaW1hZ2VEYXRhOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1h
Z2VEYXRhOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxBcnR3b3JrQ2FjaGU+IG1fbm93UGxh
eWluZ0luZm9BcnR3b3JrOwogICAgIGJvb2wgbV9zZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCmluZGV4IDE1NzMx
ZWIyM2ZhNzY5NDk2MGRkODA0OTZmYThmMmY5ZThjNzc4MGYuLjA3ZWQ0OGU1ODg0ZWNlZWRjNjFm
ZDkzZTZiMjIxNzFiZTg4NTg5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
Y3BwCkBAIC04OSw3ICs4OSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoYXV0byogc3RyYXRlZ3kgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkpCiAgICAgICAgIHJldHVybiBzdHJhdGVneS0+cmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCB0eXBlLCBuYW1lKCksIGNvbnRleHQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggN2QyNDdkY2QxYTE2ZjM0MmMxNzU0YzQ1
YzRhNzM1MjliZjhmNzFiMi4uMzU3NjNlZTEyYTM5MGVmYzg0NTJjMzU4MDZiNTEyYmU0MjlhZDk3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtNjEsMTIgKzYxLDEzIEBA
IHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRHJhZ0Rh
dGE7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBQYXN0ZWJvYXJkU3RyYXRl
Z3k7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiAKQEAgLTE0NywxNiArMTQ4LDE2IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNp
emUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkRmlsZVBhdGhzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkSFRNTChjb25zdCBTdHJp
bmcmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkSW1hZ2UoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6
ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CiAgICAgdmlydHVhbCBib29s
IHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpID0gMDsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVhbCBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1
ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgPSAw
OwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWREYXRhQnVmZmVy
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9
KSA9IDA7CiAjZW5kaWYKIH07CiAKQEAgLTE3MSw3ICsxNzIsNyBAQCBzdHJ1Y3QgUGFzdGVib2Fy
ZEZpbGVSZWFkZXIgewogICAgIHZpcnR1YWwgflBhc3RlYm9hcmRGaWxlUmVhZGVyKCkgPSBkZWZh
dWx0OwogICAgIHZpcnR1YWwgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgLyogdHlwZSAq
LykgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
ID0gMDsKIH07CiAKIGNsYXNzIFBhc3RlYm9hcmQgewpAQCAtMjk2LDcgKzI5Nyw3IEBAIHB1Ymxp
YzoKICAgICBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gcGFzdGVib2FyZEl0ZW1J
bmZvKHNpemVfdCBpbmRleCkgY29uc3Q7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIFVSTCByZWFkVVJMKHNpemVfdCBpbmRl
eCwgU3RyaW5nJiB0aXRsZSk7CiAKICAgICBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5MTE0YzM4
YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjdiNGIzZDM2YWE2ODAzNjExODc5MTMxYjVhMWIy
MjZiNTg4ZDM2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
Q3VzdG9tRGF0YS5jcHAKQEAgLTMzLDEzICszMywxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4gY29weVBs
YXRmb3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4m
IG90aGVyKQorc3RhdGljIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiBvdGhlcikKIHsKICAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxTdHJpbmc+KG90aGVyKSkKICAgICAgICAgcmV0dXJuIHsgc3RkOjpnZXQ8U3Ry
aW5nPihvdGhlcikgfTsKIAotICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFy
ZWRCdWZmZXI+PihvdGhlcikpCi0gICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFJlZjxTaGFyZWRC
dWZmZXI+PihvdGhlcikuY29weVJlZigpIH07CisgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihvdGhlcikpCisgICAgICAgIHJldHVybiB7
IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ob3RoZXIpLmNvcHlSZWYoKSB9
OwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIFBhc3RlYm9h
cmRDdXN0b21EYXRhOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiAgICAgYWRkT3JNb3ZlRW50cnlUb0VuZCh0eXBlKS5wbGF0Zm9ybURhdGEgPSB7
IHZhbHVlIH07CiB9CiAKLXZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OndyaXRlRGF0YShjb25z
dCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgYWRkT3JNb3ZlRW50cnlUb0VuZCh0eXBlKS5w
bGF0Zm9ybURhdGEgPSB7IFdURk1vdmUoZGF0YSkgfTsKIH0KQEAgLTIwMiwxNCArMjAyLDE0IEBA
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpzYW1lT3JpZ2lu
Q3VzdG9tU3RyaW5nRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIGN1c3RvbURhdGE7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpyZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7
CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkgewogICAgICAgICBpZiAoZW50cnkudHlw
ZSAhPSB0eXBlKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCi0g
ICAgICAgICAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRm
b3JtRGF0YSkuY29weVJlZigpOworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihlbnRyeS5w
bGF0Zm9ybURhdGEpLmNvcHlSZWYoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CkBAIC0yNjUsMTEgKzI2NSwxMSBAQCB2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmb3JFYWNo
Q3VzdG9tU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLAogICAgIH0KIH0K
IAotdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZm
ZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxT
dHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYgZnVuY3Rpb24pIGNvbnN0Cit2b2lk
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmb3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihGdW5j
dGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYgZnVuY3Rpb24pIGNvbnN0CiB7
CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkgewogICAgICAgICBhdXRvJiBkYXRhID0g
ZW50cnkucGxhdGZvcm1EYXRhOwotICAgICAgICBpZiAoKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5pc051bGwoKSkgfHwgc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkpCisgICAgICAgIGlm
ICgoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRhdGEpICYmICFzdGQ6OmdldDxTdHJp
bmc+KGRhdGEpLmlzTnVsbCgpKSB8fCBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4oZGF0YSkpCiAgICAgICAgICAgICBmdW5jdGlvbihlbnRyeS50eXBl
LCBkYXRhKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZEN1c3RvbURhdGEuaAppbmRleCAyYmU4MWQyOTM4YTNkYmQwOTAyNmNhNmVjNjRhYzMyODdlNmFi
YzAzLi45N2ZmOTg1ZTI0ZTExYjRjN2JiNDE0MzczN2YwMjg0MGMzNWZmY2VjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAgLTM1LDYgKzM1
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGEgewog
cHVibGljOgpAQCAtNDgsNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICAgICAgU3RyaW5nIHR5cGU7
CiAgICAgICAgIFN0cmluZyBjdXN0b21EYXRhOwotICAgICAgICBzdGQ6OnZhcmlhbnQ8U3RyaW5n
LCBSZWY8U2hhcmVkQnVmZmVyPj4gcGxhdGZvcm1EYXRhOworICAgICAgICBzdGQ6OnZhcmlhbnQ8
U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHBsYXRmb3JtRGF0YTsKICAgICB9
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUGFzdGVib2FyZEN1c3RvbURhdGEoKTsKQEAgLTY1LDEx
ICs2NiwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRD
dXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciYmKTsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUp
IGNvbnN0OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1c3RvbURh
dGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKIAogICAgIHZvaWQgd3JpdGVTdHJpbmcoY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICB2b2lkIHdyaXRlRGF0
YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CisgICAgdm9p
ZCB3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhKTsKICAgICB2b2lkIHdyaXRlU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKICAgICB2b2lkIGNsZWFyKCk7CkBAIC04
Myw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZm9yRWFjaFR5cGUoRnVuY3Rpb248dm9p
ZChjb25zdCBTdHJpbmcmKT4mJikgY29uc3Q7CiAgICAgdm9pZCBmb3JFYWNoUGxhdGZvcm1TdHJp
bmcoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk+
JiYpIGNvbnN0OwotICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rp
b248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJl
ZjxTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYpIGNvbnN0OworICAgIHZvaWQgZm9yRWFjaFBsYXRm
b3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mIGRhdGEp
PiYmKSBjb25zdDsKICAgICB2b2lkIGZvckVhY2hDdXN0b21TdHJpbmcoRnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk+JiYpIGNvbnN0OwogCiAgICAg
Ym9vbCBoYXNEYXRhKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRTdHJhdGVneS5oCmluZGV4IDFjMDcyNmZlYjNlMDJhZWQzMmI0NmYyNjJiY2RhMTY5ZDY3MmVi
MmMuLmM0MWUwODUyNDQ5NmM2N2YxZjE1MDM4ZmJiMjZlOWMyOWRhNjk4YzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0zMSwxMCArMzEsMTEg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRh
OwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3Rl
Ym9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwpAQCAtNjIsNyArNjMsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFR5cGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgaW50
NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAg
ICB2aXJ0dWFsIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2
aXJ0dWFsIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgQ29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGlu
dDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250
ZW50RmlsdGVyLmgKaW5kZXggM2Y0ODMyYTVhNjU4YzFjYzdjMGFhMTNiMjZlMGVhNDczM2U5ZDNi
Ny4uOWU3MmU0NGEyZWFjNGQ4ZWY3MzBiOTg3MWQwZWM1MDhlZDlmYWM0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKQEAgLTM0LDcgKzM0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IFBsYXRmb3JtQ29udGVudEZpbHRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBA
IC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhZGREYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoZWRBZGRpbmdEYXRhKCkgPSAwOwotICAgIHZpcnR1YWwgUmVmPFNoYXJlZEJ1ZmZlcj4g
cmVwbGFjZW1lbnREYXRhKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0ID0gMDsKICNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpCiAgICAgdmlydHVhbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIg
dW5ibG9ja0hhbmRsZXIoKSBjb25zdCA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMxMDA3NDI1MDAyNDNiYjQ2ZmY1
OTg2ODYxZTg0YTJmZDk2ZS4uNzFkZmI5M2U1NzU2MGUzM2E3ZjZjODBjMjBmOTJkNWIyY2FlYzEz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAg
LTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2Fy
ZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOwog
c3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1
Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBwdWJs
aWM6CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgd2ls
bCByZXR1cm4gMCBpZiBwYXN0ZWJvYXJkIG93bmVyc2hpcCBoYXMgYmVlbiB0YWtlbiBmcm9tIHVz
LgogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3QgY29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0
ZWJvYXJkKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoU2hh
cmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90
IHNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRf
dCBzZXRDb2xvcihjb25zdCBDb2xvciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0
U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKaW5kZXgg
NGNiMzMwMWU3ZGY3MDcxYzVkZDlmYzU5YmM1NzE4NWM0ZTkxNDc2OC4uNjMxYWRlN2NjZjdhZDI5
NjkzYTJlNzY1MWZlNmE5Y2RlYmQzNzczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgY29uc3QgUmVzb3VyY2VFcnJv
ciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0Vycm9yKCkgY29uc3QKICAgICByZXR1cm4gbV9w
cmV2aWV3RXJyb3I7CiB9CiAKLWNvbnN0IFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEoKSBjb25zdAorY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgUHJldmll
d0NvbnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByZXZpZXdE
YXRhLmdldCgpOworICAgIHJldHVybiAqbV9wcmV2aWV3RGF0YS0+Z2V0KCk7CiB9CiAKIHZvaWQg
UHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKQEAgLTkwLDcgKzkwLDcgQEAg
dm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWluUmVzb3VyY2UoKQogICAgIH0pOwogfQog
Ci12b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmFwcGVuZEZyb21CdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmFwcGVuZEZyb21CdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHdoaWxlIChidWZmZXIu
c2l6ZSgpID4gbV9sZW5ndGhBcHBlbmRlZCkgewogICAgICAgICBhdXRvIG5ld0RhdGEgPSBidWZm
ZXIuZ2V0U29tZURhdGEobV9sZW5ndGhBcHBlbmRlZCk7CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9p
ZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50
JiBjbGllbnQpCiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmco
KnRoaXMpOwogCiAgICAgaWYgKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50
KGNsaWVudCkpCi0gICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEo
KnRoaXMsIG1fcHJldmlld0RhdGEuZ2V0KCkpOworICAgICAgICBjbGllbnQucHJldmlld0NvbnZl
cnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCAqbV9wcmV2aWV3RGF0YS0+Z2V0KCkpOwogCiAgICAg
aWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNvbnZlcnRpbmcgfHwgIWhhc0NsaWVudChjbGllbnQpKQog
ICAgICAgICByZXR1cm47CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVy
OjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xp
ZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKCp0aGlzKTsKIH0KIAotdm9p
ZCBQcmV2aWV3Q29udmVydGVyOjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSkKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0
YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGF1dG8gcHJvdGVj
dGVkVGhpcyB7IFJlZiB7ICp0aGlzIH0gfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlci5oCmluZGV4IDJhMzcyOTIyNzk5Y2U2YWZmYWFiM2UxNDBkMTkwYmE2NGNm
OGNlMmIuLjkyMDJlZGRkOWUxMDViMjczNWVkYzE0NmYyNjY0YzEzY2I5YzM0MWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTQxLDE1ICs0MiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJl
c291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZp
ZXc7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJD
bGllbnQ7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyOwogCiBzdHJ1Y3QgUHJldmll
d1BsYXRmb3JtRGVsZWdhdGUgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3UGxhdGZvcm1EZWxlZ2F0
ZT4gewogICAgIHZpcnR1YWwgflByZXZpZXdQbGF0Zm9ybURlbGVnYXRlKCkgPSBkZWZhdWx0Owog
Ci0gICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRl
RGlkRmluaXNoTG9hZGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRGYWls
V2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiB9OwpAQCAtNzIsNyArNzQsNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHByZXZpZXdGaWxlTmFtZSgpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwcmV2aWV3VVRJKCkgY29uc3Q7CiAgICAg
Y29uc3QgUmVzb3VyY2VFcnJvciYgcHJldmlld0Vycm9yKCkgY29uc3Q7Ci0gICAgY29uc3QgU2hh
cmVkQnVmZmVyJiBwcmV2aWV3RGF0YSgpIGNvbnN0OworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIHByZXZpZXdEYXRhKCkgY29uc3Q7CiAKICAgICB2b2lkIGZhaWxlZFVwZGF0aW5n
KCk7CiAgICAgdm9pZCBmaW5pc2hVcGRhdGluZygpOwpAQCAtOTQsNyArOTYsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgaXNQbGF0Zm9ybVBhc3N3b3JkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYp
IGNvbnN0OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBpdGVyYXRlQ2xpZW50cyhU
JiYgY2FsbGJhY2spOwotICAgIHZvaWQgYXBwZW5kRnJvbUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZm
ZXImKTsKKyAgICB2b2lkIGFwcGVuZEZyb21CdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpOwogICAgIHZvaWQgZGlkQWRkQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmKTsK
ICAgICB2b2lkIGRpZEZhaWxDb252ZXJ0aW5nV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKICAgICB2b2lkIGRpZEZhaWxVcGRhdGluZygpOwpAQCAtMTA2LDcgKzEwOCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBwbGF0Zm9ybVVubG9ja1dpdGhQYXNzd29yZChjb25zdCBTdHJpbmcmKTsK
IAogICAgIC8vIFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlCi0gICAgdm9pZCBkZWxlZ2F0ZURpZFJl
Y2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgZGVsZWdhdGVE
aWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAg
dm9pZCBkZWxlZ2F0ZURpZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsKICAgICB2b2lkIGRlbGVnYXRl
RGlkRmFpbFdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKQEAgLTExOCw3
ICsxMjAsNyBAQCBwcml2YXRlOgogICAgICAgICBGaW5pc2hlZENvbnZlcnRpbmcsCiAgICAgfTsK
IAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fcHJldmlld0RhdGE7CisgICAgVW5pcXVlUmVmPFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcHJldmlld0RhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBtX3By
ZXZpZXdFcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKICAg
ICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlVwZGF0aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmgKaW5kZXggMDRlYTM2ODA2OTJiMjUy
YTE5ODljMjZjYTIwNDIxMjc3N2FhM2I3Yi4uOWNlZTkzMzIwYjIzOGI0Y2Q3M2NkZDJlMDMwMmMz
YmY0ZGFkNjhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0Nv
bnZlcnRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXJDbGllbnQuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFByZXZpZXdDb252ZXJ0ZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByZXZpZXdD
b252ZXJ0ZXJDbGllbnQgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVyQ2xpZW50PiB7
CiAgICAgdmlydHVhbCB+UHJldmlld0NvbnZlcnRlckNsaWVudCgpID0gZGVmYXVsdDsKQEAgLTQy
LDcgKzQyLDcgQEAgc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQgOiBDYW5NYWtlV2Vha1B0
cjxQcmV2aWV3Q29udmVydGVyQ2xpZW50PiB7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252
ZXJ0ZXJEaWRGaW5pc2hVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXIm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRp
bmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZl
cnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBTaGFyZWRCdWZmZXIm
IG5ld0RhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2Vp
dmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBu
ZXdEYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hD
b252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZp
ZXdDb252ZXJ0ZXJEaWRGYWlsQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92
aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVy
LmgKaW5kZXggODI3ODYzOTNmY2VkNzU0Yzg1ZjdiMjg5MTI1MmY1MTZiZWQwZDU0OS4uYjk4NmVl
NDBkMTk3NTE3NGY1NGFkMjlhMTY4Y2FkZjE4OTQ1NmMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgKQEAgLTMyLDcgKzMyLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciA6
IENhbk1ha2VXZWFrUHRyPFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcj4gewogICAgIHZpcnR1YWwg
flByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcigpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9p
ZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVy
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQ
cmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJvdmlkZVBhc3N3b3Jk
Rm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBTdHJpbmcmKT4mJikgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDhlNjhlMzM3NzgxZmIyOWFkMzljNTViOWFmZDM5MDAz
NTM1Mzg1ZC4uOTdlZjZiZTRmODFmMWM0NTkyYzM1MjEwZDk3ZDlhNmMyODg1NTUxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zNyw2MyArMzcsNTIgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7
CiAgICAgYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZl
cihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiB7
CiAgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXpl
KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJiBmaWxlRGF0YSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKICAgICA6IG1f
c2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBl
bmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKSB9KTsKIH0KIAot
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlk
ZXIpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKERhdGFT
ZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUo
KSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZN
b3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50
OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewogICAgIGFw
cGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAotI2lmIFVTRShHU1RSRUFNRVIpCi1SZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVk
QnVmZmVyKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIobWFwcGVkQnVmZmVyKSk7CisgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBt
YXBwZWRCdWZmZXIpCi0gICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkKKyNpZiBVU0Uo
R1NUUkVBTUVSKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogewotICAg
IG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIp
fSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihtYXBw
ZWRCdWZmZXIpKTsKIH0KLSNlbmRpZgogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcg
bWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0gICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVz
ZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKLSAgICAg
ICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1h
cHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Ci0gICAgICAgIGlmIChtYXBwaW5nU3VjY2Vz
cykKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUo
bWFwcGVkRmlsZURhdGEpKSk7Ci0gICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKK0ZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1h
cHBlZEJ1ZmZlcikKKyAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKKyAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikg
fSk7CiB9CisjZW5kaWYKIAotc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXpl
X3Qgc2l6ZSkKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNp
emVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7CiAgICAgY29t
YmluZWREYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CkBAIC0xMDMsMzMgKzkyLDE5
IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0K
IAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8
U2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNv
bnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUg
YWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAg
ICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlz
LCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2Lgot
ICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0g
ICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAgICAgIHJldHVybjsKLQorICAgIGlm
IChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8U2hhcmVk
QnVmZmVyKj4oY29uc3RfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4odGhpcykpIH07Cisg
ICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsK
ICAgICBhdXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywg
bV9zaXplKTsKLSAgICBtX3NlZ21lbnRzLmNsZWFyKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQo
ezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKX0pOwotICAgIEFT
U0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7Ci19Ci0KLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0
Ci17Ci0gICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNv
bnNpc3RlbnQoKSk7Ci0gICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOwor
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwog
fQogCi1WZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CitWZWN0
b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdAogewog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGRhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShzaXplKCkpOwpAQCAtMTM5LDcgKzExNCw3IEBAIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZm
ZXI6OmNvcHlEYXRhKCkgY29uc3QKICAgICByZXR1cm4gZGF0YTsKIH0KIAotVmVjdG9yPHVpbnQ4
X3Q+IFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKQorVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OnRha2VEYXRhKCkKIHsKICAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xNTQsMTMgKzEyOSwxMyBAQCBWZWN0b3I8dWludDhf
dD4gU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0K
IAotU2hhcmVkQnVmZmVyRGF0YVZpZXcgU2hhcmVkQnVmZmVyOjpnZXRTb21lRGF0YShzaXplX3Qg
cG9zaXRpb24pIGNvbnN0CitTaGFyZWRCdWZmZXJEYXRhVmlldyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgY29uc3QgRGF0
YVNlZ21lbnRWZWN0b3JFbnRyeSogZWxlbWVudCA9IGdldFNlZ21lbnRGb3JQb3NpdGlvbihwb3Np
dGlvbik7CiAgICAgcmV0dXJuIHsgZWxlbWVudC0+c2VnbWVudC5jb3B5UmVmKCksIHBvc2l0aW9u
IC0gZWxlbWVudC0+YmVnaW5Qb3NpdGlvbiB9OwogfQogCi1jb25zdCBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50VmVjdG9yRW50cnkqIFNoYXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9u
KHNpemVfdCBwb3NpdGlvbikgY29uc3QKK2NvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50VmVjdG9yRW50cnkqIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmdldFNlZ21lbnRG
b3JQb3NpdGlvbihzaXplX3QgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQo
cG9zaXRpb24gPCBtX3NpemUpOwogICAgIGF1dG8gY29tcGFyYXRvciA9IFtdKGNvbnN0IHNpemVf
dCYgcG9zaXRpb24sIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkmIGVudHJ5KSB7CkBAIC0x
NzEsNyArMTQ2LDcgQEAgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvckVudHJ5
KiBTaGFyZWRCdWZmZXI6OmdldFNlZ21lbnRGb3JQb3NpdGlvbigKICAgICByZXR1cm4gZWxlbWVu
dDsKIH0KIAotU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAorU3RyaW5n
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKIHsKICAgICBTdHJp
bmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAgICAgZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNl
Z21lbnQpIHsKQEAgLTE4MSw3ICsxNTYsMjIgQEAgU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhT
dHJpbmcoKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAK
LVJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigp
IGNvbnN0CitzaXplX3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6c2l6ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fc2l6ZTsKK30KKworYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppc0Vt
cHR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIXNpemUoKTsKK30KKworYm9vbCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRp
Z3VvdXM7Cit9CisKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBB
cnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c2l6ZSgpKSwgMSk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewpAQCAtMjAwLDY4ICsxOTAsNjUg
QEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCkgY29uc3QKICAgICByZXR1cm4gYXJyYXlCdWZmZXI7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVy
OjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjphcHBlbmQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAg
ICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIG1fc2VnbWVu
dHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRzLnNp
emUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5tX3NlZ21lbnRzKSB7
Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHttX3NpemUsIGVsZW1lbnQuc2Vn
bWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBt
X3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6ZSArPSBl
bGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25z
aXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVu
ZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIEFTU0VSVCghbV9o
YXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3Rv
cjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBl
bmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAg
bV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2
ZWN0b3IpKSB9KTsKICAgICBtX3NpemUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5
Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09u
ZVNlZ21lbnQpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKLSAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpfSk7
CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RG
TW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRhdGFTaXplOwogICAgIEFTU0VSVChpbnRl
cm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyKCkKK3Zv
aWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEpLCBsZW5ndGgpOworfQorCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNsZWFy
KCkKIHsKICAgICBtX3NpemUgPSAwOwogICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKICAgICBBU1NF
UlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y2xvbmUgPSBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7CisgICAgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGNsb25lID0gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KTsKICAgICBjbG9uZS0+bV9zaXplID0gbV9zaXplOwogICAgIGNsb25lLT5tX3NlZ21lbnRzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3Qg
YXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpCi0gICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVu
Y2hlY2tlZEFwcGVuZCh7ZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29w
eVJlZigpfSk7CisgICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IGVs
ZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICBB
U1NFUlQoY2xvbmUtPmludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIEFTU0VSVChpbnRlcm5h
bGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVy
KQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3Zp
ZGVyKSkpOwotfQotCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVu
Y3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKK3Zv
aWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248
dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBh
dXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsKICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBzZWdt
ZW50cykKICAgICAgICAgYXBwbHkoU3BhbiB7IHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdt
ZW50LnNlZ21lbnQtPnNpemUoKSB9KTsKIH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6OnN0YXJ0c1dp
dGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdAorYm9vbCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHBy
ZWZpeCkgY29uc3QKIHsKICAgICBpZiAocHJlZml4LmVtcHR5KCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMjgzLDcgKzI3MCw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNv
bnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnJlYWQoc2l6ZV90IG9mZnNldCwg
c2l6ZV90IGxlbmd0aCkgY29uc3QKK1ZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgaWYgKG9mZnNldCA+PSBzaXplKCkpCkBAIC0zMTAsMTIg
KzI5NywxMiBAQCBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLXZvaWQgU2hh
cmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0
Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwg
c2l6ZV90IGxlbmd0aCkgY29uc3QKIHsKICAgICByZXR1cm4gY29weVRvKGRlc3RpbmF0aW9uLCAw
LCBsZW5ndGgpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0
aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAordm9pZCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNp
emVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxlbmd0aCArIG9mZnNldCA8PSBzaXpl
KCkpOwogICAgIGlmIChvZmZzZXQgPj0gc2l6ZSgpKQpAQCAtMzUzLDE0ICszNDAsMTMgQEAgdm9p
ZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwg
c2l6ZV90IGxlbmd0aCkgY29uc3QKICAgICB9CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpoYXNP
bmVTZWdtZW50KCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2Vn
bWVudCgpIGNvbnN0CiB7Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0gICAgcmV0dXJuIGl0ICE9
IGVuZCgpICYmICsraXQgPT0gZW5kKCk7CisgICAgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID09
IDE7CiB9CiAKICNpZiBBU1NFUlRfRU5BQkxFRAotYm9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFs
bHlDb25zaXN0ZW50KCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aW50ZXJu
YWxseUNvbnNpc3RlbnQoKSBjb25zdAogewogICAgIHNpemVfdCBwb3NpdGlvbiA9IDA7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykgewpAQCAtMzcyLDcgKzM1OCw1
NyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogfQog
I2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoKQor
eworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVm
ZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQt
PnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7
CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikKK3sKKyAg
ICBBU1NFUlQoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpIHx8IGNvbnRpZ3VvdXNC
dWZmZXItPmlzRW1wdHkoKSk7CisgICAgbV9zaXplID0gY29udGlndW91c0J1ZmZlci0+c2l6ZSgp
OworICAgIGlmIChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkpCisgICAgICAgIG1f
c2VnbWVudHMuYXBwZW5kKHsgMCwgY29udGlndW91c0J1ZmZlci0+bV9zZWdtZW50c1swXS5zZWdt
ZW50LmNvcHlSZWYoKSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitTaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisg
ICAgOiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUoZGF0YSkpCit7CisgICAgbV9jb250
aWd1b3VzID0gdHJ1ZTsKK30KKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVz
ZUZpbGVNYXBwaW5nKQoreworICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxl
TWFwcGluZzo6WWVzKSB7CisgICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7CisgICAgICAgIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRG
aWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOworICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCisg
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBl
ZEZpbGVEYXRhKSkpOworICAgIH0KKyAgICByZXR1cm4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZp
bGVQYXRoKTsKK30KKworY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QK
K3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKK30KKworY29uc3Qg
Y2hhciogU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKworY29uc3QgdWludDhf
dCogRGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6
bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4g
Y29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCkBAIC0zOTEsMTMgKzQyNywx
MyBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29u
c3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQog
Ci1ib29sIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEo
KSBjb25zdAorYm9vbCBEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKICNpZiAhVVNFKENGKQotdm9pZCBTaGFy
ZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKK3ZvaWQgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogewogfQogI2Vu
ZGlmCkBAIC00MDcsNyArNDQzLDcgQEAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBTaGFyZWRC
dWZmZXI6OmRlY29kZXIoKSBjb25zdAogICAgIHJldHVybiB7eyByZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXplKCkgfX07CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVy
OjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0Citib29sIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTQ1Niw3ICs0OTIsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9
PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CitzaXplX3Qg
RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFr
ZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6
ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApAQCAtNDc1LDcgKzUxMSw3IEBAIHNpemVfdCBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2
aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmll
dzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYg
c2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVm
PERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVu
dCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQp
CiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlv
bldpdGhpblNlZ21lbnQpCkBAIC00OTksMTIgKzUzNSwxNyBAQCBjb25zdCB1aW50OF90KiBTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0
YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKK2NvbnN0IGNoYXIqIFNoYXJlZEJ1
ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKwogUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAg
Y29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3Nl
Z21lbnQ7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92
aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBkYXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7
IH0sCi0gICAgICAgIFtzZWdtZW50LCBzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0K
KyAgICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGYyM2Y1ZDY5YWQzMmVk
NjQwYjk1NzdiMmU2YzQ1NDkxODM5MzY4YWQuLjliZjc5N2MxYzE2OTk1YzFlYTI2YzMwYTE1ZmEz
MDVhMDExYTEzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9u
IExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dApAQCAtNjIsMTQ2ICs2MiwxMzMgQEAgY2xhc3MgRGVjb2RlcjsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsK
IAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21l
bnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90
aGVyIG9iamVjdHMuCisvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUg
YSBuZXcgRGF0YVNlZ21lbnQuCitjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0K
LSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBz
aXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihk
YXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KKyAgICBXRUJD
T1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBp
bmcgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBN
YXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOwotCi0gICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7CisgICAgc3RhdGlj
IFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAgewor
ICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKKyAgICB9CiAKLSNpZiBVU0UoRk9VTkRBVElP
TikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSAgICBSZXRh
aW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFwcGVuZChOU0RhdGEg
Kik7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRl
Q0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRh
dGFSZWYpOwotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAgc3RhdGljIFJlZjxEYXRh
U2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYg
VVNFKEdMSUIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsK
LSAgICBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisgICAgc3RhdGljIFJl
ZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLQogI2lm
IFVTRShHU1RSRUFNRVIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RN
YXBwZWRPd25lZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShS
ZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotICAgIC8vIENhbGxpbmcg
ZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUgY29waWVkIGludG8gb25l
IHNlZ21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8gSXRlcmF0ZSB0aGUgc2Vn
bWVudHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAgICAvLyBGSVhNRTogQXVk
aXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdpdGgg
aXRlcmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsK
LSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5
RGF0YSgpIGNvbnN0OwotICAgIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNp
emVfdCBsZW5ndGgpIGNvbnN0OwotCi0gICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBh
dm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBz
YWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgotICAgIFZlY3Rvcjx1aW50OF90
PiBleHRyYWN0RGF0YSgpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0
YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAKLSAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVm
ZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0Ci0gICAg
Ly8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBm
bGF0IGJ1ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVy
KCkgY29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQot
Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQotCi0gICAgdm9p
ZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdWlu
dDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSks
IGxlbmd0aCk7IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Ci0KLSAgICB2
b2lkIGNsZWFyKCk7CisgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAgICAgICAgRnVuY3Rpb248Y29u
c3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7Cisg
ICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKLSAgICB2b2lkIGNv
cHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Ci0gICAgdm9pZCBj
b3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNv
bnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3Zp
ZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIp
KSk7IH0KIAotICAgIC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBp
bW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgot
ICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRh
U2VnbWVudC4KLSAgICBjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxEYXRhU2VnbWVudD4gewotICAgIHB1YmxpYzoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQg
Y29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXpl
X3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JU
IFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCiAKLSAgICAg
ICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKLSAgICAg
ICAgfQorICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwogCitwcml2YXRl
OgorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikKLSAg
ICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+
JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEp
KSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRh
dGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlm
CiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShH
UmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50
KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEdSZWZQdHI8R0J5
dGVzPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsg
fQogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxp
Y2l0IERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQorICAg
ICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgotICAgICAg
ICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0
YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhJiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9
CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKKyAgICAgICAg
OiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQogCi0gICAgICAgIHN0cnVj
dCBQcm92aWRlciB7Ci0gICAgICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRh
OwotICAgICAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7Ci0gICAgICAgIH07Ci0KLSAg
ICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsg
fQotCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0
ZU5TRGF0YSgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICAgICAgYm9vbCBjb250YWluc01hcHBlZEZp
bGVEYXRhKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChWZWN0
b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKICNpZiBVU0Uo
Q0YpCi0gICAgICAgIERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKLSAg
ICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBEYXRh
U2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKICNlbmRp
ZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBw
ZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisj
ZW5kaWYKKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3Zp
ZGVyPiBtX2ltbXV0YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CisjaWYgIVVTRShGT1VOREFUSU9OKQorICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZm
ZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxl
RGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBw
cm92aWRlcikKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIp
KSB7IH0KK307CisKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKTsgfQorICAgIHN0YXRpYyBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXpl
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoZGF0YSwgc2l6
ZSkpOyB9CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBl
ZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIo
V1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7IH0K
KyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWlu
dDhfdD4mJiB2ZWN0b3IpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsgfQorICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikp
KTsgfQogCi0gICAgICAgIHN0ZDo6dmFyaWFudDxWZWN0b3I8dWludDhfdD4sCisjaWYgVVNFKEZP
VU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5T
RGF0YUFycmF5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhKik7CisjZW5kaWYKICNpZiBVU0UoQ0YpCi0g
ICAgICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlm
CisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0
ZXMqKTsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAgIFJlZlB0cjxH
c3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRp
ZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCi0gICAgICAgICAgICBQ
cm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwotICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVm
ZmVyOwotICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRh
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90
IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisKKyAgICAvLyBTaW1pbGFyIHRvIGNvcHlE
YXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3
aGVuIGl0IGlzIHNhZmUgKFRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQp
LgorICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOworCisgICAgLy8gQ3JlYXRlcyBh
biBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcidzIGNv
bnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVu
dGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKKworICAgIFdFQkNP
UkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGlzRW1wdHkoKSBjb25zdDsKIAotICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3Qg
RnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAg
Ym9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdDsKKworICAgIFdF
QkNPUkVfRVhQT1JUIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBs
ZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3Rp
bmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
dGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisKKyAg
ICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJh
Y2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewogICAgICAg
ICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIxMCw1NiArMTk3LDE3NyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBWZWN0b3I8RGF0YVNlZ21lbnRWZWN0b3JFbnRy
eSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29u
c3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6
OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuZW5kKCk7IH0K
LSAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGhhc09uZVNlZ21lbnQoKSBjb25zdDsKIAogICAgIC8vIGJlZ2luIGFuZCBlbmQgdGFrZSBPKDEp
IHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRpbWUuCi0gICAgU2hhcmVkQnVmZmVyRGF0YVZp
ZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0
OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhpbnRNZW1vcnlOb3ROZWVk
ZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3Ro
ZXIpOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFy
ZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CiAKLXByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihj
b25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3Qg
Y2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90
PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYm
KTsKK3Byb3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOworCisgICAgRGF0
YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29sIG1fY29udGlndW91cyB7IGZhbHNl
IH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50
OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoUmVmPFNo
YXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNFKENGKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihD
RkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKEdCeXRlcyopOwogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAg
ICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVk
QnVmZmVyJik7CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogCi0gICAgdm9pZCBj
b21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNz
IFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBw
ZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBw
ZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7CisjZW5kaWYKKyNpZiBVU0Uo
Q0YpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyNlbmRpZgog
Ci0gICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1
cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVj
dG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigp
OwogCisgICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCBy
ZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAg
IGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXpl
X3QgcG9zaXRpdGlvbikgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwotCi0gICAgc2l6
ZV90IG1fc2l6ZSB7IDAgfTsKLSAgICBtdXRhYmxlIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVu
dHM7Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG11dGFibGUgYm9vbCBtX2hhc0JlZW5Db21i
aW5lZEludG9PbmVTZWdtZW50IHsgZmFsc2UgfTsKICAgICBib29sIGludGVybmFsbHlDb25zaXN0
ZW50KCkgY29uc3Q7CiAjZW5kaWYKIH07CiAKLWlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVk
QnVmZmVyOjpleHRyYWN0RGF0YSgpCisvLyBBIFNoYXJlZEJ1ZmZlciBpcyBhIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGlyZWN0bHkgYWNjZXNzIGl0cyBjb250ZW50IHZp
YSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhvZHMuCitjbGFzcyBTaGFyZWRCdWZmZXIgOiBw
dWJsaWMgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB7CitwdWJsaWM6CisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShBcmdz
JiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdz
KSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcigpKTsKKyAg
ICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCisgICAgICAgICAg
ICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxB
cmdzPihhcmdzKS4uLikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVy
ID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLik7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RG
TW92ZShidWZmZXIpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCBj
b25zdCB1aW50OF90ICpkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgY2hh
ciogZGF0YUFzQ2hhclB0cigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFdURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OworCisgICAgZW51bSBjbGFzcyBNYXlVc2VG
aWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBp
bmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRh
aW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShDRikK
KyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBj
b25zdDsKKyNlbmRpZgorI2lmIFVTRShHTElCKQorICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8
R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdF
QkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKK307CisK
K2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworcHVibGljOgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRlZmF1bHQ7CisgICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCisgICAgeworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVm
ZXJlbmNlIHRvIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFzIGFsbCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAgICAgLy8gb25jZSBjcmVhdGVkLgor
ICAgICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPmhhc09uZVJlZigpKSB7CisgICAgICAgICAg
ICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBhcHBlbmQoKmJ1ZmZlcik7CisgICAgfQorICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAg
IHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhcyBhbGwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBzaG91
bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKGJ1
ZmZlci0+aGFzT25lUmVmKCkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZm
ZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGFwcGVuZChXVEZN
b3ZlKGJ1ZmZlci5nZXQoKSkpOworICAgIH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJn
cz4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6IG1f
YnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pKSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZv
aWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7
CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsK
KyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlz
TnVsbCgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0K
KyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5p
c0VtcHR5KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1f
YnVmZmVyID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKQorICAgIHsKKyAgICAgICAgcmVz
ZXQoKTsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgfQorCisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsg
fQorICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlKCkKKyAgICB7CisgICAgICAg
IGVuc3VyZUJ1ZmZlcigpOworICAgICAgICByZXR1cm4gbV9idWZmZXIucmVsZWFzZU5vbk51bGwo
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBlbnN1cmVCdWZmZXIoKQorICAgIHsKKyAg
ICAgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgICAgIG1fYnVmZmVyID0gRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgfQorICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBtX2J1ZmZlcjsKK307CisKK2lubGluZSBWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKICAg
ICAgICAgcmV0dXJuIHRha2VEYXRhKCk7CkBAIC0yNjgsMTcgKzM3NiwxNyBAQCBpbmxpbmUgVmVj
dG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogCiBjbGFzcyBXRUJDT1JF
X0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVy
RGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlv
bldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxs
b3B0KTsKKyAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYsIHNpemVf
dCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0g
c3RkOjpudWxsb3B0KTsKICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZm
ZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0Owog
ICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXND
aGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSgpKTsgfQorICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsKICAgICBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKICNpZiBVU0UoRk9VTkRB
VElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKICNlbmRp
ZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9z
ZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9zZWdtZW50OwogICAgIGNvbnN0
IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9zaXpl
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyLmNwcAppbmRleCBjZGI2ZTcwMzQwNGQ0MjZkZDIxYjQ3OWZhODljMGRhOWI4YzQ5Zjhl
Li45ZDA1NWNlMjdkODhjM2Q2MmU1YmQxY2Q0NmFkOTFmNWNjNDMxZjQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCkBAIC0z
Niw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShNSFRNTCkKIAot
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1
ZmZlciogYnVmZmVyLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcikKK1NoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBidWZmZXIsIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKQogICAgIDogbV9pdGVy
YXRvckN1cnJlbnQoYnVmZmVyLT5iZWdpbigpKQogICAgICwgbV9pdGVyYXRvckVuZChidWZmZXIt
PmVuZCgpKQogICAgICwgbV9zZWdtZW50KG1faXRlcmF0b3JDdXJyZW50ICE9IG1faXRlcmF0b3JF
bmQgPyBtX2l0ZXJhdG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0YSgpIDogbnVsbHB0cikKQEAgLTQ0
LDcgKzQ0LDcgQEAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWMKIHsKIH0KIAotU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVy
LCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCitTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBj
aGFyKiBzZXBhcmF0b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVudChidWZmZXItPmJlZ2luKCkp
CiAgICAgLCBtX2l0ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAgLCBtX3NlZ21lbnQobV9p
dGVyYXRvckN1cnJlbnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRlcmF0b3JDdXJyZW50LT5zZWdt
ZW50LT5kYXRhKCkgOiBudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKaW5kZXggNWQ0ZTZmZWU1ODJjNjYxNmZkMDdlMzk5NGZm
NzVjOGYwN2EyZmNlMS4uMWM2NDA4ZDRjNzM2YTFjNGE0NWNlZTdiM2Y2OTY1N2JjOWEyNjE1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRl
ci5oCkBAIC00MSw4ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09S
RV9FWFBPUlQgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgewogcHVibGljOgotICAgIFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJh
dG9yKTsKLSAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqLCBjb25zdCBj
aGFyKiBzZXBhcmF0b3IpOworICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcik7CisgICAgU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IGNoYXIqIHNl
cGFyYXRvcik7CiAKICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBWZWN0b3I8Y2hhcj4mKTsK
ICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBjaGFyKik7CkBAIC01OCw4ICs1OCw4IEBAIHB1
YmxpYzoKICAgICBzaXplX3QgcGVlayhWZWN0b3I8dWludDhfdD4mLCBzaXplX3QpOwogCiBwcml2
YXRlOgotICAgIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9y
IG1faXRlcmF0b3JDdXJyZW50OwotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRW
ZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JFbmQ7CisgICAgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JDdXJy
ZW50OworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9y
Ojpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yRW5kOwogICAgIGNvbnN0IHVpbnQ4X3QqIG1fc2Vn
bWVudCB7IG51bGxwdHIgfTsKICAgICBzaXplX3QgbV9zZWdtZW50SW5kZXggeyAwIH07CiAgICAg
VmVjdG9yPGNoYXI+IG1fc2VwYXJhdG9yIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKaW5kZXggYjJkN2E1NTBkNDYwZTk0Y2QzMTUxMzRh
MzE5NWJjZDkxYzdiNzg5NC4uYTRiNGJiMTA0YjRkODQwMTViOGFhNWI1M2U3ZGZhNzg4Y2VkMjVm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKQEAg
LTczLDcgKzczLDcgQEAgdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyhjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9jdXN0b21EYXRhLndyaXRl
U3RyaW5nKHR5cGUsIHZhbHVlKTsKIH0KIAotdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZURh
dGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFN0
YXRpY1Bhc3RlYm9hcmQ6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgbV9ub25EZWZhdWx0RGF0YVR5cGVzLmFk
ZCh0eXBlKTsKICAgICBtX2N1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIFdURk1vdmUoZGF0YSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCmluZGV4IGMwOWI2
ZGUzMWYyZWRlYmUwMTg4ZGM5YzQ2NmEyNzFlMWI4YjllMTQuLmVkZDcxMzYyM2YwNmQyMmIzOGU4
MzJhMjgzN2ZlNjY5OTlkZmQ3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1N0YXRpY1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQ
YXN0ZWJvYXJkLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBTdGF0aWNQYXN0ZWJvYXJkIGZpbmFsIDogcHVibGljIFBhc3RlYm9hcmQgewogcHVibGljOgpA
QCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1c3RvbURh
dGEoY29uc3QgU3RyaW5nJiB0eXBlKSBmaW5hbDsKIAogICAgIHZvaWQgd3JpdGVTdHJpbmcoY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpIGZpbmFsOwotICAgIHZvaWQgd3Jp
dGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAg
ICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGRhdGEpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdJbkN1c3RvbURhdGEoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHZvaWQgY2xlYXIoKSBmaW5h
bDsKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaAppbmRleCA2ODc5NTkwMGM1
YWRmOWNjOTA0NWUwZWFiYjIyYjE4ZmE2Njk2MzE0Li4xZDY1YmM0MDNhZDg1MjQzYzY3MjVlNzA0
NDhkNmNkYWRjY2NjZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9Ob3dQbGF5aW5nSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05v
d1BsYXlpbmdJbmZvLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3Ry
dWN0IE5vd1BsYXlpbmdJbmZvQXJ0d29yayB7CiAgICAgU3RyaW5nIHNyYzsKICAgICBTdHJpbmcg
bWltZVR5cGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CiAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgTm93UGxheWluZ0luZm9BcnR3b3JrJiBvdGhlcikgY29uc3QKICAgICB7CkBAIC02
Nyw3ICs2Nyw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBzdGQ6Om9wdGlvbmFs
PE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gTm93UGxheWluZ0luCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBpbWFnZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGlt
YWdlRGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGltYWdlRGF0YSkpCiAgICAgICAgIHJl
dHVybiB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAppbmRleCBlOGIxOWJmMzRlYmEyM2I4
NTcyMDdiZTg4Y2UxYjQ1YmY4ZjJjY2MzLi5mMzIxNDI5NTFiMTc5OTZlNmNlMTY3NTYzMTZiZmQ0
NzNmYWE0ZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAg
Y2xhc3MgQXVkaW9GaWxlUmVhZGVyV2ViTURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogCiBwdWJsaWM6Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCiAgICAgUmVmPEF1ZGlvVHJhY2tQcml2YXRlV2ViTT4gbV90cmFjazsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2FiMzZlMmEw
YzA4MTJjOTRlMTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUxMDg5YjU3MTlmMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lk
IE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05v
d1BsYXlpbmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdl
dCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRp
bWUuZ2V0KCkpOwogICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQ
bGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdvcmsg
PSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0
YSwgbnNBcnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5n
ZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxh
eWluZ0luZm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAg
ICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxh
eWluZ0luZm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0luZm8u
YXJ0d29yay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNmI2NjIxN2ZmMTYx
ZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uMWUxOTc0MjgzZDAwMGI1NTM1OTAwOTdkODNj
NDY5NDU4ZTU1MTMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hh
cmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1
ZmZlckNGLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNo
YXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQorRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIHsKICAgICBh
cHBlbmQoZGF0YSk7CiB9CkBAIC00NywyMCArNDcsMTYgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogICAgICAgICBpZiAoYXV0byogZGF0
YSA9IHN0ZDo6Z2V0X2lmPFJldGFpblB0cjxDRkRhdGFSZWY+PigmbV9zZWdtZW50c1swXS5zZWdt
ZW50LT5tX2ltbXV0YWJsZURhdGEpKQogICAgICAgICAgICAgcmV0dXJuICpkYXRhOwogICAgIH0K
LSAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShudWxscHRyLCBz
aXplKCkpKTsKLSAgICBmb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAg
ICBDRkRhdGFBcHBlbmRCeXRlcyhjZkRhdGEuZ2V0KCksIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50
LnNpemUoKSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGNmRGF0YTsKKyAgICByZXR1cm4gYWRvcHRD
RihDRkRhdGFDcmVhdGUobnVsbHB0ciwgZGF0YSgpLCBzaXplKCkpKTsKIH0KICNlbmRpZgogCi1S
ZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFSZWYgZGF0YSkKK1Jl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUo
Q0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KGRhdGEpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KGRhdGEpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29u
KCkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRl
ZFNvb24oKSBjb25zdAogewogICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBtX3NlZ21lbnRz
KSB7CiAgICAgICAgIGlmIChlbnRyeS5zZWdtZW50LT5oYXNPbmVSZWYoKSkgewpAQCAtNzAsOSAr
NjYsOCBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25z
dAogICAgIH0KIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkK
K3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQogewot
ICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgaWYgKGRh
dGEpIHsKICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNy
ZWF0ZShkYXRhKX0pOwogICAgICAgICBtX3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyLmgKaW5kZXggMDc5N2RmYmU4ZDAxOGJlNjM2MTc0NGM1OGY4
OTJkZDU2ZWQ2ODljNS4uY2JlODc3MWE0NWQ4NjJjYjVhYjA1ZWNhMzk5OTI3ZTA3ODM4ZjU0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
OwogICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVy
cmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwotICAgIFJlZjxT
aGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzUmVxdWlyZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNp
b25Db250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KaW5kZXggNDI5MGRiMTI4ZDAwMGE0MGVlZjcwZmQy
OTQxZDYzNDQ5MDQ2ZGUwMy4uMmVmMjcwMWZlNjc4YmY5YjkyZGIyMTJiYmVhNWM5MTVhM2ZjM2Ey
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lk
IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQogICAg
IHNlbWFwaG9yZS53YWl0KCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE5ldHdvcmtFeHRlbnNp
b25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERh
dGEoKSBjb25zdAogewogICAgIEFTU0VSVChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVwbGFjZW1lbnREYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50Rmls
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5oCmluZGV4IDA2OGNkY2IzODNmNDIzNjVhYzMyNjRlMjI5YTZkNjNiYzJiNGFi
ZDYuLjY3OWFlOTMyOTUxN2UxZjM5NDNiYTU3NjJhYzhmNTZlODYwYzhjMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50Rmls
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXIuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNw
b25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lk
IGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKQogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJs
b2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50Rmls
dGVyLm1tCmluZGV4IGI0NjFmOTc1MzZkZTNhMTU4MTNhNTgyN2I4NjcxMzhiOTZkNGYzOGMuLjFj
OTYwNDcxNmI0MjY5M2Q1ZTQ2YzJlMjNlOTQxZGEwMGM4M2U0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBQYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlcjo6ZmluaXNoZWRBZGRpbmdEYXRhKCkKICAgICB1cGRhdGVGaWx0ZXJTdGF0ZSgp
OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6
cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQYXJl
bnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKIHsKICAg
ICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShtX3JlcGxhY2VtZW50RGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNmYyOGU4MjQzNjBjY2QzMDg2YzAzMThm
YWU0MDk4ZjFlZGUyOGUyNS4uYjgxNzA4MTdjZWM1OWUyMmQzYzBlOWE3OGYxNDZjMDMzZTRjMTY2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2Nv
YS5tbQpAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgTlNCaXRtYXBJbWFnZUZpbGVUeXBlIGJpdG1h
cFBOR0ZpbGVUeXBlKCkKIH0KICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLS8vIE1ha2luZyB0
aGlzIG5vbi1pbmxpbmUgc28gdGhhdCBXZWJLaXQgMidzIGRlY29kaW5nIGRvZXNuJ3QgaGF2ZSB0
byBpbmNsdWRlIFNoYXJlZEJ1ZmZlci5oLgorLy8gTWFraW5nIHRoaXMgbm9uLWlubGluZSBzbyB0
aGF0IFdlYktpdCAyJ3MgZGVjb2RpbmcgZG9lc24ndCBoYXZlIHRvIGluY2x1ZGUgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlci5oLgogUGFzdGVib2FyZFdlYkNvbnRlbnQ6OlBhc3RlYm9hcmRXZWJDb250
ZW50KCkgPSBkZWZhdWx0OwogUGFzdGVib2FyZFdlYkNvbnRlbnQ6On5QYXN0ZWJvYXJkV2ViQ29u
dGVudCgpID0gZGVmYXVsdDsKIApAQCAtMjExLDkgKzIxMSw5IEBAIFZlY3RvcjxTdHJpbmc+IFBh
c3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5zYWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExBVEZP
Uk0oTUFDKQotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVk
QnVmZmVyJiB0aWZmQnVmZmVyKQorc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZG
VG9QTkcoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAgICBhdXRvIGlt
YWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlm
ZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5T
KFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRh
ID0gW2ltYWdlIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJv
cGVydGllczpAeyB9XTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZm
ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNv
Y29hLm1tCmluZGV4IDllZTBjMGI1NWQ3OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLjI0
MGEzNjdiZTJhYzc2NWI3OGJkZTcxMDA0NjY2NGJjYjFjZTU0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSAr
MzUsMTEgQEAKICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNl
IFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYp
ZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdl
cilzaXplOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNv
cmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlv
biBzaXplOihOU1VJbnRlZ2VyKXNpemU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3Jl
U2hhcmVkQnVmZmVyRGF0YSB7Ci0gICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6
RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAg
ICBOU1VJbnRlZ2VyIF9zaXplOwogfQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MK
ICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFT
ZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2Vn
bWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUK
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRh
U2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZToo
TlNVSW50ZWdlcilzaXplCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAg
ICAgIHJldHVybiBuaWw7CkBAIC04OCwxMiArODgsMTIgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAq
ZGF0YSkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpjcmVhdGUoTlNEYXRhICpkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihicmlkZ2VfY2FzdChkYXRhKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIoYnJpZGdlX2Nhc3QoZGF0YSkpKTsKIH0KIAotdm9pZCBTaGFy
ZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEpCiB7CiAgICAgcmV0dXJuIGFwcGVuZChicmlkZ2VfY2Fz
dChkYXRhKSk7CiB9CkBAIC0xMDUsMTAgKzEwNSw4IEBAIFJldGFpblB0cjxOU0RhdGE+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIAogUmV0YWluUHRyPENGRGF0YVJlZj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGNvbWJpbmVJbnRvT25lU2Vn
bWVudCgpOwogICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBhZG9w
dENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7Ci0gICAgQVNTRVJUKG1fc2Vn
bWVudHMuc2l6ZSgpID09IDEpOwogICAgIHJldHVybiBicmlkZ2VfY2FzdChtX3NlZ21lbnRzWzBd
LnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpKTsKIH0KIApAQCAtMTE5LDE0ICsxMTcsMTQgQEAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmV0YWluUHRy
PE5TQXJyYXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAorUmV0YWlu
UHRyPE5TQXJyYXk+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gY3JlYXRlTlNBcnJheShtX3NlZ21lbnRzLCBbXSAoYXV0byYg
c2VnbWVudCkgewogICAgICAgICByZXR1cm4gc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEo
KTsKICAgICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IERhdGFTZWdtZW50
OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZVNo
YXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246
MCBzaXplOnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKaW5kZXggZmJjMjgzZmJjMzM2OWJmODI3ZTMxNjk5
NGM0Yzk0ZTA2MzYzY2I4MS4uMmRlNDE5MzRkYTE5ODc5ZDc1YzBkZjhhODllNjRlNTk5YzI5YWUw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
SW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1JbnN0YW5jZS5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIExvZ2dlcjsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uOwogc3RydWN0IENETUtleVN5c3RlbUNv
bmZpZ3VyYXRpb247CiAKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgQ0RNSW5zdGFuY2VDbGllbnQg
OiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5DRE1JbnN0YW5jZUNsaWVudCgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwg
dm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYs
IFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZXF1ZXN0ZWRJ
bml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogLy8gSmF2YVNjcmlwdCdzIGhhbmRsZSB0byBhIENE
TUluc3RhbmNlLCBtdXN0IGJlIHVzZWQgZnJvbSB0aGUKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGlj
OgogICAgIH07CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9u
KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRp
ZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBT
dWNjZXNzQ2FsbGJhY2smJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSA9
IDA7CiAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1J
bnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETUluc3RhbmNlU2Vzc2lvbi5oCmluZGV4IDM3Y2QwN2M3YmYyZGM3NWU0MWZkNWM2YzdkZWNm
NDNlMTAzOWUxMTQuLmQyNTkyMjViYTllMDJhNjRkMGNlY2Q2MTUxZmRmOTNmNGYyNDY2YTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3Rh
bmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETUluc3RhbmNlU2Vzc2lvbi5oCkBAIC00MywxNiArNDMsMTYgQEAgY2xhc3MgTG9nZ2VyOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudCA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZVNlc3Npb25DbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAg
ICB1c2luZyBLZXlTdGF0dXMgPSBDRE1LZXlTdGF0dXM7Ci0gICAgdXNpbmcgS2V5U3RhdHVzVmVj
dG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47Cisg
ICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4sIEtleVN0YXR1cz4+OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVLZXlT
dGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVz
c2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlc3Npb25J
ZENoYW5nZWQoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHVzaW5nIFBsYXRmb3JtRGlzcGxheUlE
ID0gdWludDMyX3Q7CiAgICAgdmlydHVhbCBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSA9
IDA7CkBAIC03OCwxMyArNzgsMTMgQEAgcHVibGljOgogICAgICAgICBTdWNjZWVkZWQsCiAgICAg
fTsKIAotICAgIHVzaW5nIExpY2Vuc2VDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9v
bCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Ci0gICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmKSA9IDA7CisgICAgdXNpbmcgTGljZW5zZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUg
c3VjY2VlZGVkKT47CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgPSAwOwogCiAgICAgdXNpbmcgS2V5
U3RhdHVzVmVjdG9yID0gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3I7
Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6cGFpcjxNZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4+OworICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0
aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2Us
IFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxi
YWNrJiYpID0gMDsKIAogICAgIGVudW0gY2xhc3MgU2Vzc2lvbkxvYWRGYWlsdXJlIDogdWludDhf
dCB7CiAgICAgICAgIE5vbmUsCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIHVzaW5n
IENsb3NlU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsKICAgICB2
aXJ0dWFsIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNl
c3Npb25DYWxsYmFjayYmKSA9IDA7CiAKLSAgICB1c2luZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxi
YWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChLZXlTdGF0dXNWZWN0b3ImJiwgc3RkOjpvcHRp
b25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiwgU3VjY2Vzc1ZhbHVlKT47CisgICAgdXNpbmcgUmVt
b3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVz
VmVjdG9yJiYsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmLCBT
dWNjZXNzVmFsdWUpPjsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNr
JiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAppbmRleCBjYzZkYzdmMTQwY2Q2N2QyYjdiODRm
NmFiMmMyODQzMTZkZmRkY2NmLi41MmE2MTQ4YzgzY2Q1MzkzYzhmODc0ZWQ4NWFkOGJmMjdlNWJl
NTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUHJpdmF0ZS5oCkBAIC03Myw4ICs3Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
bG9hZEFuZEluaXRpYWxpemUoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2VydmVy
Q2VydGlmaWNhdGVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Np
b25zKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBB
dG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29u
c3QgPSAwOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKaW5kZXggZjIxOGY5NzkwNGZiYmE0OWYxZWJkZjQ4
ZTIwNWZlNzNkZmFmYjY0OC4uNGJhNzViZjAwZDlmNzEzYjVhZmJiYTc5MzQwMTk3MTZjZDhmMDM4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVByb3h5LmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3Rh
dHVzVmVjdG9yIEtleVN0b3JlOjpjb252ZXJ0VG9KU0tleVN0YXR1c1ZlY3RvcigpIGNvbnN0CiAg
ICAgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzVmVjdG9yOwog
ICAgIGtleVN0YXR1c1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bUtleXMoKSk7CiAg
ICAgZm9yIChjb25zdCBhdXRvJiBrZXkgOiBtX2tleXMpCi0gICAgICAgIGtleVN0YXR1c1ZlY3Rv
ci51bmNoZWNrZWRBcHBlbmQoc3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBDRE1JbnN0YW5j
ZVNlc3Npb246OktleVN0YXR1cz4geyBrZXktPmlkQXNTaGFyZWRCdWZmZXIoKSwga2V5LT5zdGF0
dXMoKSB9KTsKKyAgICAgICAga2V5U3RhdHVzVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChzdGQ6OnBh
aXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0
YXR1cz4geyBrZXktPmlkQXNTaGFyZWRCdWZmZXIoKSwga2V5LT5zdGF0dXMoKSB9KTsKICAgICBy
ZXR1cm4ga2V5U3RhdHVzVmVjdG9yOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaAppbmRleCBhNTg0YjZjZDI2NmIwOTgwOTAyNTRk
N2RjYmRkYmY2MGQ5MzMxZmJiLi5lMWUwOThhMWQ1ZjVmZmM2NWMyYTQ4ZmE0MGFhOTcyZmU4OWUx
ZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVByb3h5LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgS2V5SGFuZGxlKHN0YXR1cywgV1RGTW92ZShrZXlJRCksIFdURk1vdmUo
a2V5SGFuZGxlVmFsdWUpKSk7CiAgICAgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGlkQXNTaGFy
ZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lkLmRhdGEo
KSwgbV9pZC5zaXplKCkpOyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGlkQXNT
aGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lkLmRh
dGEoKSwgbV9pZC5zaXplKCkpOyB9CiAKICAgICBib29sIHRha2VWYWx1ZUlmRGlmZmVyZW50KEtl
eUhhbmRsZVZhbHVlVmFyaWFudCYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlhYThl
YjlhMmJiMDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4uZmNhNmYyMzg4YTU2YTZhMWM3MjQ3MGU1YTQ2
ZmRkMjhmMDczNzUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIENETVV0aWxpdGllcyB7CiAKLVJlZlB0cjxKU09OOjpP
YmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0
cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gRmFpbCBvbiBsYXJnZSBidWZmZXJzIHdob3NlIHNpemUg
ZG9lc24ndCBmaXQgaW50byBhIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLgogICAgIHNpemVfdCBz
aXplID0gYnVmZmVyLnNpemUoKTsKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPEpTT046Ok9iamVj
dD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNP
TiwgcmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7
IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmlu
ZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHNpemUpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNP
Tihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaAppbmRleCA3NGY1MTViMGJkMmE4NzE2
OGVlZjI0YjE4Zjk1ZGVhYmVlODI4ZTZjLi5mY2Y1YmRkYTdjNTk3ZDNjM2FjMzQ5ZWUxNzg5ZTRh
ZDZlMGM5NTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1VdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaApAQCAtMzUsMTEgKzM1LDExIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIAogbmFtZXNwYWNlIENETVV0aWxpdGllcyB7CiAKLVJlZlB0cjxKU09OOjpPYmplY3Q+
IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImKTsKK1JlZlB0cjxKU09OOjpPYmpl
Y3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2Ns
ZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCBkZDM0NTdiZmRlOGM5MjE4Nzdk
ZDdiOTgyZTk5MjFmY2MwZmVkMmVkLi4zMWE5ZmRmYTAyZDZkMDBjYTI2MTgyNTJkZWQ5MzUzMTNk
YzU4YWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzAsNyArMTMwLDcg
QEAgc3RhdGljIGJvb2wgcGFyc2VMaWNlbnNlUmVsZWFzZUFja25vd2xlZGdlbWVudEZvcm1hdChj
b25zdCBKU09OOjpPYmplY3QmIHJvb3QpCiAvLyBdOwogCiAvLyBUaGlzIGZ1bmN0aW9uIGV4dHJh
Y3RzIHRoZSBLZXlJZHMgY291bnQgYW5kIHRoZSBsb2NhdGlvbiBvZiB0aGUgZmlyc3QgS2V5SWQg
aW4gaW5pdERhdGEgYnVmZmVyLgotc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+
IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSkKK3N0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0
S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGluaXREYXRhKQogewogICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlk
c01hcCgwLCAwKTsKIApAQCAtMTM4LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWdu
ZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0
CiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNNYXA7
CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91
c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0g
Y29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXplID0g
aW5pdERhdGEuc2l6ZSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBw
c3NoU2l6ZSA9IDA7CkBAIC0xODgsMTUgKzE4OSwxNSBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2ln
bmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25z
dAogfQogCiAvLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgaW5pdERhdGEgc2hhcmVkQnVm
ZmVyIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KLXN0YXRpYyBib29sIGlzQ2VuY0luaXREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitzdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0
YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBzdGQ6OnBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25G
cm9tQ2VuY0luaXREYXRhKGluaXREYXRhKTsKICAgICByZXR1cm4gKChrZXlJZHNNYXAuZmlyc3Qp
ICYmIChrZXlJZHNNYXAuc2Vjb25kKSk7CiB9CiAKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBl
eHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRh
KQorc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0
YShpbml0RGF0YSk7CiAgICAgdW5zaWduZWQga2V5SWRDb3VudCA9IGtleUlkc01hcC5maXJzdDsK
QEAgLTIwNCw5ICsyMDUsMTAgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlp
ZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIC8vIENo
ZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KICAgICBpZiAoIWtleUlk
Q291bnQgfHwgIWluZGV4KQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4g
a2V5SWRzLnRha2UoKTsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAg
YXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAg
IGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKIAogICAgIGF1dG8gb2Jq
ZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNP
Tjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjI0LDE3ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgaW5pdEQKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0Fy
cmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRm
OCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3Ro
KCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRh
KCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAot
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAg
ICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIGlm
IChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICBy
ZXR1cm4ga2V5SWRzLnRha2UoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0Ojpj
cmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpA
QCAtMjQ1LDEyICsyNDcsMTIgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJ
ZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBUaGUg
Zm9ybWF0IGlzIGEgSlNPTiBvYmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6
CiAgICAgLy8gImtpZHMiCiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVtZW50
IG9mIHRoZSBhcnJheSBpcyB0aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBzZXF1
ZW5jZSBjb250YWluaW5nIHRoZSBrZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1c2hT
dHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5z
aXplKCkpKTsKKyAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0
cmluZyhpbml0RGF0YS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUoKSkp
OwogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkpKTsK
ICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0g
ICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0g
ICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNv
bkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1GYWN0
b3J5Q2xlYXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9uKCkKQEAgLTM4OCw3ICsz
OTAsNyBAQCBib29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVm
ZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0lu
aXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhlIGluaXRE
YXRhIGJ1ZmZlciBhcyBhbiBKU09OIG9iamVjdCBpbiBrZXlpZHMgY2FzZS4KICAgICBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRzIikgJiYgQ0RN
VXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QoaW5pdERhdGEpKQpAQCAtNDA1LDcgKzQwNyw3IEBA
IGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IENETVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBT
aGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IENETVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUgcmVz
cG9uc2UgYnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0LgogICAgIGlmICghQ0RNVXRpbGl0aWVzOjpw
YXJzZUpTT05PYmplY3QocmVzcG9uc2UpKQpAQCAtNDMxLDcgKzQzMyw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VDbGVhcktleTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5
c3RlbUNvbmZpZ3VyCiAgICAgY2FsbGJhY2soc3VjY2VlZGVkKTsKIH0KIAotdm9pZCBDRE1JbnN0
YW5jZUNsZWFyS2V5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBT
dWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3ND
YWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIC8vIFJlamVjdCBzZXR0aW5nIGFueSBzZXJ2ZXIg
Y2VydGlmaWNhdGUuCiAgICAgY2FsbGJhY2soRmFpbGVkKTsKQEAgLTQ1Myw3ICs0NTUsNyBAQCBS
ZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBDRE1JbnN0YW5jZUNsZWFyS2V5OjpjcmVhdGVTZXNz
aW9uKCkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5
KCp0aGlzKSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUs
IGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHN0YXRp
YyB1aW50MzJfdCBzX3Nlc3Npb25JZFZhbHVlID0gMDsKICAgICArK3Nfc2Vzc2lvbklkVmFsdWU7
CkBAIC00NzUsNyArNDc3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGkKICAgICAgICAgfSk7
CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJl
c3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAjaWYgTE9HX0RJU0FCTEVECiAgICAg
Ly8gV2Ugb25seSB1c2UgdGhlIHNlc2lvbiBJRCBmb3IgZGVidWcgbG9nZ2luZy4gVGhlIHZlcmJv
c2UgcHJlcHJvY2Vzc29yIGNoZWNrcyBhcmUgYmVjYXVzZQpAQCAtNTY2LDcgKzU2OCw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkLCBMaWNlCiAgICAgQVNTRVJUKHNlc3Npb25JZCA9PSBtX3Nlc3Npb25J
RCk7CiAKICAgICBhdXRvIGRpc3BhdGNoQ2FsbGJhY2sgPQotICAgICAgICBbd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgJmNhbGxiYWNrXShLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNW
ZWN0b3IsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYgbWVzc2FnZSwgU3VjY2Vz
c1ZhbHVlIHN1Y2Nlc3MpIHsKKyAgICAgICAgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0s
ICZjYWxsYmFja10oS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzVmVjdG9yLCBzdGQ6Om9wdGlv
bmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBTdWNjZXNzVmFsdWUg
c3VjY2VzcykgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZCgKICAgICAgICAgICAgICAg
ICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKndlYWtUaGlzIH0sIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIGtleVN0YXR1c1ZlY3RvciA9IFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgbWVz
c2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHN1Y2Nlc3NdKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICghd2Vha1RoaXMpCkBAIC01NzksNyArNTgxLDcgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIExpY2UKICAgICAvLyBDb25zdHJ1Y3QgdGhlIEtleVN0YXR1c1ZlY3RvciBvYmplY3Qs
IHJlcHJlc2VudGluZyByZWxlYXNlZCBrZXlzLCBhbmQgdGhlIG1lc3NhZ2UgaW4gdGhlCiAgICAg
Ly8gJ2xpY2Vuc2UgcmVsZWFzZScgZm9ybWF0LgogICAgIEtleVN0YXR1c1ZlY3RvciBrZXlTdGF0
dXNWZWN0b3IgPSBtX2tleVN0b3JlLmFsbEtleXNBcyhDRE1JbnN0YW5jZVNlc3Npb246OktleVN0
YXR1czo6UmVsZWFzZWQpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2U7CisgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2U7CiAgICAgewogICAgICAgICAv
LyBDb25zdHJ1Y3QgSlNPTiB0aGF0IHJlcHJlc2VudHMgdGhlICdsaWNlbnNlIHJlbGVhc2UnIGZv
cm1hdCwgY3JlYXRpbmcgYSAna2lkcycgYXJyYXkKICAgICAgICAgLy8gb2YgYmFzZTY0VVJMLWVu
Y29kZWQga2V5IElEcyBmb3IgYWxsIGtleXMgdGhhdCB3ZXJlIGFzc29jaWF0ZWQgd2l0aCB0aGlz
IHNlc3Npb24uCkBAIC01OTMsMTQgKzU5NSwxNCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNs
ZWFyS2V5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZQog
ICAgICAgICAgICAgcm9vdE9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGFycmF5KSk7
CiAgICAgICAgIH0KIAotICAgICAgICAvLyBDb3B5IHRoZSBKU09OIGRhdGEgaW50byBhIFNoYXJl
ZEJ1ZmZlciBvYmplY3QuCisgICAgICAgIC8vIENvcHkgdGhlIEpTT04gZGF0YSBpbnRvIGEgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciBvYmplY3QuCiAgICAgICAgIFN0cmluZyBtZXNzYWdlU3RyaW5n
ID0gcm9vdE9iamVjdC0+dG9KU09OU3RyaW5nKCk7CiAgICAgICAgIENTdHJpbmcgbWVzc2FnZUNT
dHJpbmcgPSBtZXNzYWdlU3RyaW5nLnV0ZjgoKTsKICAgICAgICAgbWVzc2FnZSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKG1lc3NhZ2VDU3RyaW5nLmRhdGEoKSwgbWVzc2FnZUNTdHJpbmcubGVuZ3Ro
KCkpOwogICAgIH0KIAogICAgIG1fa2V5U3RvcmUudW5yZWZBbGxLZXlzKCk7Ci0gICAgZGlzcGF0
Y2hDYWxsYmFjayhXVEZNb3ZlKGtleVN0YXR1c1ZlY3RvciksIFJlZjxTaGFyZWRCdWZmZXI+KCpt
ZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOworICAgIGRpc3BhdGNoQ2FsbGJhY2so
V1RGTW92ZShrZXlTdGF0dXNWZWN0b3IpLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oKm1l
c3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uQ2xlYXJLZXk6OnN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2Ns
ZWFya2V5L0NETUNsZWFyS2V5LmgKaW5kZXggOWMwNzQ3ZGMxYmQ4ZTY3ZjNiYTg2NGQ5YjgxMTMz
NzYyNWM4YTY3OS4uOWUyN2ZlOTEyYzRkYTA2N2ZiMjZjYWZiYzdmNmE2NTFkYTQ3NTI4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9jbGVhcmtleS9DRE1DbGVhcktleS5oCkBAIC04Niw4ICs4Niw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNl
cnRpZmljYXRlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNv
bnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwg
Y29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAg
ICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikg
Y29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklk
KGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogfTsKIApAQCAtOTksNyArOTksNyBAQCBwdWJs
aWM6CiAgICAgLy8gQ0RNSW5zdGFuY2UKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50
YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpDbGVh
cktleTsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93
UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikg
ZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFn
ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSgpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0
ZVNlc3Npb24oKSBmaW5hbDsKQEAgLTEwOSw4ICsxMDksOCBAQCBjbGFzcyBDRE1JbnN0YW5jZVNl
c3Npb25DbGVhcktleSBmaW5hbCA6IHB1YmxpYyBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSB7CiBw
dWJsaWM6CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkoQ0RNSW5zdGFuY2VDbGVhcktl
eSYgcGFyZW50KQogICAgICAgICA6IENETUluc3RhbmNlU2Vzc2lvblByb3h5KHBhcmVudCkgeyB9
Ci0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJh
Y2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vu
c2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmlu
YWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwg
TGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vu
c2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VU
eXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lv
bkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3Ry
aW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5oCmluZGV4IGU5NjhlOTg1YzdlZWNlZmU0MzVhYTkyMDVjNDRkZDM1YWVkOGUwZDAuLmVj
ZjRlMDhjOWI5OTFhZGUyNzNiZDQ0YzYwYmIxNWZlMDE2MzViMTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCkBAIC0z
Myw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWRFbmNvZGVyR2Vu
ZXJpYyBmaW5hbCA6IHB1YmxpYyBLZXllZEVuY29kZXIgewogcHVibGljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKaW5kZXggOGE4YzEw
YjcwMjRjZmUwMzhlOWZhN2I3MTViZTI2ODg5ZmMwNWUyOC4uOTM3ZDFmYjZmMGM4ZDdiNTFmMThm
ZjE1NTYwYjNiOTRhNzRmNjFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCkBAIC0yNiwxNiArMjYsMTYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQor
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5
dGVzKQogewogICAgIEFTU0VSVChieXRlcyk7CiAgICAgbV9zaXplID0gZ19ieXRlc19nZXRfc2l6
ZShieXRlcyk7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRl
KEdSZWZQdHI8R0J5dGVzPihieXRlcykpIH0pOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQogewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihieXRlcykpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKIH0KIAogR1JlZlB0
cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA5ZmM0ZWE4MmViYmM3N2VhZDkwMTA4NTQz
ODA4MjllMTViYmFiNmY0Li5kYzFmYjE2ZWEwYjE5NmM1ZDEzYmQ0MTE0ZTUwY2NkY2Q5YjM3Yzkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC01OSw3ICs1OSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZvbnRDYWNoZTsKIGNsYXNzIEZvbnREZXNj
cmlwdGlvbjsKIGNsYXNzIEdseXBoUGFnZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBHbHlwaERhdGE7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCAz
MGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRiMjE5Li5mYmJjY2M0MzY4NDQ3NDkw
ODNjZTg5MWYzNjNmNmNjNDBmMjk3NDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC03NCw3ICs3NCw2IEBAIGludGVy
ZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRE
ZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBpcyBjb25j
ZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5vIGluc3RhbmNlcyBzaG91bGQgZXZl
ciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGEg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IDRhODUz
ZWI2NDk1M2Q0YWU0ODM0Zjg3YzU0ODdhY2QzNjRjNTdkODEuLmUzMmEzNmM2MDc2MTkyMTY4YzZh
Mzc5MzE4Zjc4YWUxNzg5YzQ4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIEltYWdlOjppc1Bvc3RTY3JpcHRS
ZXNvdXJjZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBVUkwmIHVybCkKIH0KIAogCi1F
bmNvZGVkRGF0YVN0YXR1cyBJbWFnZTo6c2V0RGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2U6OnNldERh
dGEoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiB7CiAgICAgbV9lbmNvZGVkSW1hZ2VEYXRhID0gV1RGTW92ZShkYXRhKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNmEwODE2OTU3YWE5M2M0
MTFhNTZjZDRjMmJjMjBkZDZkOTA0NGRlYy4uNjU1ZGZlNzNjZmY2YWQxZDA0ZjQ4YmMyMDE5ZWJi
ODA0MTdkNjEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBA
IC03MCw3ICs3MCw3IEBAIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIEZsb2F0UG9pbnQ7
CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogc3RydWN0IExlbmd0aDsKIAog
Ly8gVGhpcyBjbGFzcyBnZXRzIG5vdGlmaWVkIHdoZW4gYW4gaW1hZ2UgY3JlYXRlcyBvciBkZXN0
cm95cyBkZWNvZGVkIGZyYW1lcyBhbmQgd2hlbiBpdCBhZHZhbmNlcyBhbmltYXRpb24gZnJhbWVz
LgpAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8
SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2
aXJ0dWFsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBJbWFn
ZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2U7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIEVuY29kZWRE
YXRhU3RhdHVzIHNldERhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRW5jb2RlZERhdGFTdGF0dXMgc2V0RGF0
YShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCk7CiAgICAgdmlydHVhbCBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChib29sIC8q
YWxsRGF0YVJlY2VpdmVkKi8pIHsgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpVbmtub3duOyB9
CiAKICAgICB2aXJ0dWFsIFN0cmluZyB1dGkoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAv
LyBudWxsIHN0cmluZyBpZiB1bmtub3duCkBAIC0xMzMsOCArMTMzLDggQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwgPSB0cnVl
KSA9IDA7CiAKLSAgICBTaGFyZWRCdWZmZXIqIGRhdGEoKSB7IHJldHVybiBtX2VuY29kZWRJbWFn
ZURhdGEuZ2V0KCk7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KKyAgICBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBkYXRhKCkgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CisgICAgY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2Rl
ZEltYWdlRGF0YS5nZXQoKTsgfQogCiAgICAgdmlydHVhbCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSgpOwogCkBAIC0yMDksNyArMjA5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgQ29sb3Igc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsg
fQogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZW5jb2RlZEltYWdlRGF0
YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVkSW1hZ2VEYXRh
OwogICAgIEltYWdlT2JzZXJ2ZXIqIG1faW1hZ2VPYnNlcnZlcjsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8VGltZXI+IG1fYW5pbWF0aW9uU3RhcnRUaW1lcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAppbmRleCA0ZGRiNmRm
ODNlY2I4YjliNzk1N2Y0NjY0ZTE4NGYwMDgxZTgxMDExLi5kZTMzZjFhZjQxMmRjMDhiMmI5NjFh
MTk0OTQ1YzljYzkwYWE2NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGJ1ZmZlci5ncm93KGJ1ZmZlclNp
emUpOwotICAgICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0
ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBtX3BpeGVscyA9IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9w
aXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oY29uc3RfY2FzdDx1aW50OF90
Kj4obV9waXhlbHMtPmRhdGEoKSkpOwogICAgICAgICBtX3NpemUgPSBzaXplOwogICAgICAgICBt
X2ZyYW1lUmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwgbV9zaXplKTsKQEAgLTIwNiw3ICsyMDYs
NyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX3NpemUuaXNFbXB0eSgpICYm
ICFpc092ZXJTaXplKG1fc2l6ZSkpOwogICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyIHsg
b3RoZXIubV9waXhlbHMtPmRhdGEoKSwgb3RoZXIubV9waXhlbHMtPnNpemUoKSB9OwotICAgICAg
ICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1
ZmZlcikpOworICAgICAgICBtX3BpeGVscyA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9waXhlbHNQdHIgPSBy
ZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oY29uc3RfY2FzdDx1aW50OF90Kj4obV9waXhlbHMt
PmRhdGEoKSkpOwogICAgIH0KIApAQCAtMjMzLDcgKzIzMyw3IEBAIHByaXZhdGU6CiAgICAgICAg
IHJldHVybiBQYWNrZWRDb2xvcjo6QVJHQiB7IHJlc3VsdCB9LnZhbHVlOwogICAgIH0KIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3BpeGVsczsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fcGl4ZWxzOwogICAgIHVpbnQz
Ml90KiBtX3BpeGVsc1B0ciB7IG51bGxwdHIgfTsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBJ
bnRSZWN0IG1fZnJhbWVSZWN0OyAvLyBUaGlzIHdpbGwgYWx3YXlzIGp1c3QgYmUgdGhlIGVudGly
ZSBidWZmZXIgZXhjZXB0IGZvciBHSUYgYW5kIFBORyBmcmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwCmluZGV4IDA4NjllOTlhMDA4
ODZmN2NkMTIxODZmZTMxNjFkZTA0N2ZhNTEzNjEuLjdjNTQ5NDdmNGQ4MTQwODU1OWNjNDVjNGFj
NDlhMTliOWZjODZmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VEZWNvZGVyLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIEltYWdlRGVjb2Rlcjo6
Y2xlYXJGYWN0b3JpZXMoKQogfQogI2VuZGlmCiAKLVJlZlB0cjxJbWFnZURlY29kZXI+IEltYWdl
RGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPEltYWdlRGVjb2Rlcj4gSW1hZ2VEZWNv
ZGVyOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIFVOVVNFRF9QQVJBTShtaW1l
VHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNv
ZGVyLmgKaW5kZXggYTFhMDhhZGMxNzVkNDRiYWE0NDJlNDRhOTRhYTk2N2EwNGY1ZjYwNy4uNmE4
ZmZjYjYwZmMxMTU2ZWI4NDg3NmRlZmIwN2NiYzBiMTE5ODQ5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKQEAgLTM3LDEyICszNywxMiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEltYWdlRGVjb2RlciA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxJbWFnZURlY29kZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXI+IGNy
ZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFn
ZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKICAgICBlbnVtIGNsYXNzIE1lZGlhVHlwZSB7CkBAIC05
MSw3ICs5MSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgdXNpbmcg
U3VwcG9ydHNNZWRpYVR5cGVGdW5jID0gRnVuY3Rpb248Ym9vbChNZWRpYVR5cGUpPjsKICAgICB1
c2luZyBDYW5EZWNvZGVUeXBlRnVuYyA9IEZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nJik+Owot
ICAgIHVzaW5nIENyZWF0ZUltYWdlRGVjb2RlckZ1bmMgPSBGdW5jdGlvbjxSZWZQdHI8SW1hZ2VE
ZWNvZGVyPihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBBbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pPjsKKyAgICB1c2luZyBDcmVhdGVJbWFnZURlY29kZXJGdW5j
ID0gRnVuY3Rpb248UmVmUHRyPEltYWdlRGVjb2Rlcj4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik+
OwogCiAgICAgc3RydWN0IEltYWdlRGVjb2RlckZhY3RvcnkgewogICAgICAgICBTdXBwb3J0c01l
ZGlhVHlwZUZ1bmMgc3VwcG9ydHNNZWRpYVR5cGU7CkBAIC0xMjksNyArMTI5LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChz
aXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25z
dCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hy
b25vdXMpKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShs
b25nIGxvbmcpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSA9IDA7CiAgICAgdmlydHVh
bCBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBj
bGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCBkODFjNDgwMTkyODQ2ZGQ3
ZTMyMWMyZGZiZmJmMWUwYzIwZGFhNjcxLi4zMDc3NDMzMTVhNDFlY2ExYzliMmJjNzczZDA3OWVl
NWQ0M2JhZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwCkBAIC03Miw3ICs3Miw3IEBAIEltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2Uo
KQogICAgIEFTU0VSVCgmbV9ydW5Mb29wID09ICZSdW5Mb29wOjpjdXJyZW50KCkpOwogfQogCi1i
b29sIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZhaWxhYmxlKFNoYXJlZEJ1ZmZlciogZGF0
YSkKK2Jvb2wgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAoIWRhdGEgfHwgaXNEZWNvZGVyQXZhaWxhYmxl
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtOTYsNyArOTYsNyBAQCBib29sIEltYWdlU291
cmNlOjplbnN1cmVEZWNvZGVyQXZhaWxhYmxlKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBp
ZiAoIWRhdGEgfHwgIWVuc3VyZURlY29kZXJBdmFpbGFibGUoZGF0YSkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTEwNCwxMyArMTA0LDEzIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICBtX2RlY29kZXItPnNldERh
dGEoKmRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0
RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIEltYWdlU291cmNlOjpyZXNldERhdGEoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBtX2RlY29kZXIgPSBudWxscHRyOwog
ICAgIHNldERhdGEoZGF0YSwgaXNBbGxEYXRhUmVjZWl2ZWQoKSk7CiB9CiAKLUVuY29kZWREYXRh
U3RhdHVzIEltYWdlU291cmNlOjpkYXRhQ2hhbmdlZChTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQorRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VTb3VyY2U6OmRhdGFDaGFu
Z2VkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ewogICAgIHNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKICAgICBjbGVhck1ldGFkYXRh
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApp
bmRleCA4YWY1MDgwYTAwYTk5MTYwODBmMWYwYjI3NzA3M2MyYTg1MzQ1MjU4Li44MTRmMGUxMmVi
YWE0OGY4NmFjYjUyMTk3M2MzMWQ1ZDM4MmY2ZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQml0bWFwSW1hZ2U7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBj
bGFzcyBJbWFnZURlY29kZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbWFnZVNvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxJbWFnZVNvdXJjZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbWFnZVNvdXJjZT4g
ewogICAgIGZyaWVuZCBjbGFzcyBCaXRtYXBJbWFnZTsKQEAgLTU2LDkgKzU2LDkgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZVNvdXJjZShXVEZNb3ZlKG5hdGl2
ZUltYWdlKSkpOwogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIHJlc2V0RGF0YShTaGFyZWRCdWZmZXIq
IGRhdGEpOwotICAgIEVuY29kZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2VkKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCByZXNl
dERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgRW5jb2RlZERhdGFTdGF0
dXMgZGF0YUNoYW5nZWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKTsKIAogICAgIHVuc2lnbmVk
IGRlY29kZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVkU2l6ZTsgfQpAQCAtMTU0LDcg
KzE1NCw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIGZpcnN0
RnJhbWVNZXRhZGF0YUNhY2hlSWZOZWVkZWQoVCYgY2FjaGVkVmFsdWUsIE1ldGFkYXRhVHlwZSwg
VCAoSW1hZ2VGcmFtZTo6KmZ1bmN0b3IpKCkgY29uc3QsIEltYWdlRnJhbWU6OkNhY2hpbmcsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mID0geyB9KTsKIAotICAgIGJvb2wg
ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5z
dXJlRGVjb2RlckF2YWlsYWJsZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKICAgICBi
b29sIGlzRGVjb2RlckF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlcjsgfQogICAg
IHZvaWQgZGVzdHJveURlY29kZWREYXRhKHNpemVfdCBmcmFtZUNvdW50LCBzaXplX3QgZXhjbHVk
ZUZyYW1lKTsKICAgICB2b2lkIGRlY29kZWRTaXplQ2hhbmdlZChsb25nIGxvbmcgZGVjb2RlZFNp
emUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmluZGV4IDNl
NTllYTlkMDhkZDFjOWJlZTIzYmEzZjYzNWNmMzViZmMyODIyOTIuLjU3N2JkNTA4YTVjNDA5ZjRi
ZTllNGNmMjAyYjgxZTYxZTQ1YjQ0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01vZGVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Nb2RlbC5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJp
bmcgbWltZVR5cGUsIFVSTCB1cmwpCitSZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTW9kZWwoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdU
Rk1vdmUodXJsKSkpOwogfQogCi1Nb2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwg
U3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+
JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogICAgIDogbV9kYXRhKFdURk1vdmUo
ZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKFdURk1vdmUobWltZVR5cGUpKQogICAgICwgbV91cmwo
V1RGTW92ZSh1cmwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKaW5k
ZXggMDY1ODEzMzc5ZjExMjU1ZDJkN2M3ZjZiNTAzNDQzZGM2MzBkMDRlMS4uZTZiZGUxNjZmOTQ0
Y2RlN2RiMzI4YzI5NzZlYzY4MmFkYjZkMTAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Nb2RlbC5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgTW9kZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVibGljOgot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVm
ZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+
IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgfk1vZGVsKCk7CiAKICAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhOyB9CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNvZGUoRGVjb2RlciYpOwogCiBw
cml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVS
TCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwp
OwogCiAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIFN0cmluZyBtX21pbWVUeXBl
OwpAQCAtNjAsNyArNjAsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNb2RlbDo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KG1fZGF0YS0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVu
Z3RoRGF0YShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOworICAgIGVuY29kZXIu
ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBt
X2RhdGEtPnNpemUoKSwgMSk7CiAgICAgZW5jb2RlciA8PCBtX21pbWVUeXBlOwogICAgIGVuY29k
ZXIgPDwgbV91cmw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCmluZGV4IDc0NTljNTg1
OGQyNDg3ZWYyYzVmZDM3MTczOTg2YjMzNzM0ZWMyOGEuLjg4NjkxZGMyNTZkNmRkNmM0NWY0NmUw
MTU0OTY3NDI0NWFhMzUzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBAIC01MSw4
ICs1MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0
KSk7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IHZpcnR1YWwgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBs
b25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSB7IFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQg
YmUgcmVtb3ZlZCBvbmNlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHVzZXMgU2hhcmVkQnVmZmVy
LgorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQorICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVk
UmF3UmVzb3VyY2VDbGllbnQgdXNlcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgogICAgIHZpcnR1
YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiBwbGF0Zm9ybSwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBkYXRhUmVjZWl2ZWQocGxhdGZvcm0sIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkpOyB9CiAgICAgdmlydHVhbCB2b2lkIGFj
Y2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRl
eCA1NDk5ZjM3YTdmMzY0NmJkNWYzOTVhNDhiMDlkOTQxMWQ0YzliNjY0Li5kM2UxYjU4MDRlODVh
OTkxMWNmMjBmY2VkMzRiZjI1NWEzMTQ0MzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtMTMxOCw3
ICsxMzE4LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlU2FtcGxlKFJl
ZjxNZWRpYVNhbXBsZT4mJiBvcmlnaW5hbFNhbXBsZSkKICAgICB1cGRhdGVIaWdoZXN0UHJlc2Vu
dGF0aW9uVGltZXN0YW1wKCk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5k
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjph
cHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGFwcGVu
ZChidWZmZXItPmV4dHJhY3REYXRhKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCmluZGV4IGVmODZhNDczNjkz
NzFjODNlODgzYjI5YmJiNmI5YWI5NmVjYTVmMWQuLjZiN2Q5NWU1MmI5ZGYwYzgxYWYzYmUxZDZk
OWYzYzhlZDM5NTQxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogY2xhc3MgVGltZVJhbmdlczsKIAogZW51bSBjbGFzcyBTb3VyY2VCdWZmZXJB
cHBlbmRNb2RlIDogdWludDhfdCB7CkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQcml2YXRlKCk7CiAKICAgICB2aXJ0dWFs
IHZvaWQgc2V0QWN0aXZlKGJvb2wpID0gMDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgYXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCBhcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZpcnR1
YWwgdm9pZCBhYm9ydCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IGM2MTEyZTExOTRj
N2M5OTBmZGMxMTRlODI5Y2ZkYjVjNmFmNzU0YTkuLjhiMDRmOWJlOTZjMzZlMGEyNjIxODBhMjVl
YTM3NDU5NjJiM2Q3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5n
LmNwcApAQCAtODYsMTIgKzg2LDEyIEBAIGNvbnN0IEF0b21TdHJpbmcmIENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6c2tkTmFtZSgpCiAgICAgcmV0dXJuIHNrZDsKIH0KIAotc3RhdGljIFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQorc3RhdGljIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGV4
dHJhY3RTaW5mRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgLy8gSlNPTiBvZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJp
bmc+IF0gfSIKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBTdHJpbmcganNvbiB7IGJ1
ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAg
IFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6
VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA1LDcgKzEwNSw3
IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoIXNpbmZBcnJheSkKICAgICAgICAgcmV0
dXJuIHsgfTsKIAotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gc2luZnM7CisgICAgVmVj
dG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gc2luZnM7CiAgICAgc2luZnMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShzaW5mQXJyYXktPmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYg
dmFsdWUgOiAqc2luZkFycmF5KSB7CkBAIC0xMjQsNyArMTI0LDcgQEAgc3RhdGljIFZlY3RvcjxS
ZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogfQogCiB1c2luZyBTY2hlbWVBbmRLZXlSZXN1bHQgPSBWZWN0b3I8c3RkOjpwYWlyPEZv
dXJDQywgVmVjdG9yPHVpbnQ4X3Q+Pj47Ci1zdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJh
Y3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3Rh
dGljIFNjaGVtZUFuZEtleVJlc3VsdCBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBidWZmZXJzID0g
ZXh0cmFjdFNpbmZEYXRhKGJ1ZmZlcik7CiAgICAgaWYgKCFidWZmZXJzLnNpemUoKSkKQEAgLTE3
MCw5ICsxNzAsOSBAQCBzdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRL
ZXlJZEZyb21TaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZgogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2luZihjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
IGtleUlEczsKICAgICBhdXRvIHJlc3VsdHMgPSBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2lu
ZihidWZmZXIpOwogCiAgICAgZm9yIChhdXRvJiByZXN1bHQgOiByZXN1bHRzKSB7CkBAIC0xODMs
NyArMTgzLDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXkKICAgICByZXR1cm4ga2V5SURzOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNh
bml0aXplU2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gQ29tbW9uIFNJ
TkYgQm94IEZvcm1hdAogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMTkxLDE3ICsxOTEs
MTcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpz
YW5pdGl6ZVNpbmYoY29uc3QgU2hhcmVkQnVmZmUKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpz
YW5pdGl6ZVNrZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2tkKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBVTlVTRURfUEFSQU0o
YnVmZmVyKTsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBidWZmZXIuY29weSgp
OwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSW4gdGhlICdza2QnIHNj
aGVtZSwgdGhlIGluaXQgZGF0YSBpcyB0aGUga2V5IElELgotICAgIFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
IGtleUlEczsKICAgICBrZXlJRHMuYXBwZW5kKGJ1ZmZlci5jb3B5KCkpOwogICAgIHJldHVybiBr
ZXlJRHM7CiB9CkBAIC0zOTMsNyArMzkzLDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc6OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNv
bnN0Citib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGluaXREYXRhKSBjb25zdAogewogICAgIGlmICghdmFsaWRJbml0RGF0YVR5cGVzKCkuY29u
dGFpbnMoaW5pdERhdGFUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDIzLDcgKzQy
Myw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXpl
UmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXpl
UmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmgKaW5kZXggYmM5M2Y2ZjZhN2JkZDAxZWZiZjU1YjYyYmRiNmE0ZTY2ZWY5
MTJiMy4uMzE3YmI4ZDU3ZTg2YzA2MjE0ZTBiNDA1OWRkZjRmODgwN2M3NGM2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKQEAgLTcxLDE3ICs3MSwxNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgc3Vw
cG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBv
cnRzU2Vzc2lvbnMoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVm
ZmVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBzaW5mTmFtZSgpOwotICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJ
RHNTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZVNpbmYoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJ
RHNTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplU2luZihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJik7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc2tkTmFtZSgpOwot
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJh
Y3RLZXlJRHNTa2QoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHNhbml0aXplU2tkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0
S2V5SURzU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplU2tkKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKTsKIAogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8Rm91ckNDPiYgdmFsaWRG
YWlyUGxheVN0cmVhbWluZ1NjaGVtZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5kZXgg
MTU5YjkwY2RiNDhmN2ZlNDRiYjQ5YmUyZWMxYzFjMmY0MzI4NjQwMC4uNTZiNThjMjVhMjg3MDlm
YjM4MjIxODM5ZTU1YmFlNDVlZDkzY2Y2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBAIC04
NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRp
b25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpGYWlyUGxh
eVN0cmVhbWluZzsgfQogCiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVy
cywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2
b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBz
ZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFJlZlB0cjxDRE1J
bnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKICAgICB2b2lkIHNldENsaWVu
dChXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50PiYmKSBmaW5hbDsKQEAgLTk0LDEwICs5NCwxMCBA
QCBwdWJsaWM6CiAKICAgICBOU1VSTCAqc3RvcmFnZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rv
cmFnZVVSTC5nZXQoKTsgfQogICAgIGJvb2wgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dlZDsgfQotICAgIFNoYXJlZEJ1ZmZlciog
c2VydmVyQ2VydGlmaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlckNlcnRpZmljYXRlLmdl
dCgpOyB9CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2VydmVyQ2VydGlmaWNhdGUoKSBj
b25zdCB7IHJldHVybiBtX3NlcnZlckNlcnRpZmljYXRlLmdldCgpOyB9CiAgICAgQVZDb250ZW50
S2V5U2Vzc2lvbiogY29udGVudEtleVNlc3Npb24oKTsKIAotICAgIFJldGFpblB0cjxBVkNvbnRl
bnRLZXlSZXF1ZXN0PiB0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRh
dGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBTaGFyZWRCdWZmZXImIGluaXREYXRh
KTsKKyAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gdGFrZVVuZXhwZWN0ZWRLZXlS
ZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpOwogCiAgICAgLy8gQVZDb250ZW50
S2V5U2Vzc2lvbkRlbGVnYXRlQ2xpZW50CiAgICAgdm9pZCBkaWRQcm92aWRlUmVxdWVzdChBVkNv
bnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7CkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogICAg
IHZvaWQgb3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNo
YW5nZWQoYm9vbCkgZmluYWw7CiAgICAgdm9pZCBleHRlcm5hbFByb3RlY3Rpb25TdGF0dXNEaWRD
aGFuZ2VGb3JDb250ZW50S2V5UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7CiAK
LSAgICB1c2luZyBLZXlzID0gVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBL
ZXlzID0gVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yS2V5SURzKGNvbnN0
IEtleXMmKSBjb25zdDsKICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMqIHNlc3Npb25Gb3JHcm91cChBVkNvbnRlbnRLZXlSZXBvcnRHcm91cCopIGNvbnN0Owog
ICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZv
clJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCopIGNvbnN0OwpAQCAtMTI5LDcgKzEyOSw3IEBA
IHByaXZhdGU6CiAgICAgV2Vha1B0cjxDRE1JbnN0YW5jZUNsaWVudD4gbV9jbGllbnQ7CiAgICAg
UmV0YWluUHRyPEFWQ29udGVudEtleVNlc3Npb24+IG1fc2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8
V2ViQ29yZUZQU0NvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGU+IG1fZGVsZWdhdGU7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZTsKICAgICBib29sIG1fcGVyc2lz
dGVudFN0YXRlQWxsb3dlZCB7IHRydWUgfTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IG1fc3RvcmFn
ZVVSTDsKICAgICBWZWN0b3I8V2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM+PiBtX3Nlc3Npb25zOwpAQCAtMTUwLDggKzE1MCw4IEBAIHB1YmxpYzoKICNl
bmRpZgogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uCi0gICAgdm9pZCByZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFs
OworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5h
bDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VT
ZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92
ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmlu
ZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMuLmJhNTA2MWViYjVj
NWZiZTA3NGQzYTI5ZGVhNGY5MThmYzI2MjFjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1t
CkBAIC0yMTcsNyArMjE3LDcgQEAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKICAg
ICByZXR1cm4gQXRvbVN0cmluZyhuc0luaXRUeXBlKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGluaXRpYWxpemF0aW9uRGF0YUZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCog
cmVxdWVzdCkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdGlhbGl6YXRp
b25EYXRhRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIGlm
ICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CkBAIC0y
NjUsNyArMjY1LDcgQEAgQVZDb250ZW50S2V5U2Vzc2lvbiogQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmNvbnRlbnRLZXlTZXNzaW9uKCkKICAgICByZXR1cm4gbV9zZXNzaW9u
LmdldCgpOwogfQogCi1SZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRp
YWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZl
ciYgaW5pdERhdGEpCitSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRp
YWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIGZvciAoYXV0byByZXF1ZXN0SXRlciA9IG1f
dW5leHBlY3RlZEtleVJlcXVlc3RzLmJlZ2luKCk7IHJlcXVlc3RJdGVyICE9IG1fdW5leHBlY3Rl
ZEtleVJlcXVlc3RzLmVuZCgpOyArK3JlcXVlc3RJdGVyKSB7CiAgICAgICAgIGF1dG8mIHJlcXVl
c3QgPSAqcmVxdWVzdEl0ZXI7CkBAIC0zMTYsNyArMzE2LDcgQEAgcHJpdmF0ZToKICAgICBSZXNw
b25zZU1hcCBtX3Jlc3BvbnNlczsKIH07CiAKLXN0YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBh
cnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJlZlB0cjxK
U09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIC8vIEZhaWwgb24gbGFyZ2UgYnVmZmVycyB3aG9zZSBzaXplIGRvZXNu
J3QgZml0IGludG8gYSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlci4KICAgICBzaXplX3Qgc2l6ZSA9
IGJ1ZmZlci5zaXplKCk7CkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpW
YWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBK
U09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29u
IHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3Ry
aW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpz
b24pOwogfQpAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LCiAgICAg
Y2FsbGJhY2soaW5pdGlhbGl6ZSgpKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBz
ZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxi
YWNrJiYgY2FsbGJhY2spCiB7CiAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJ
RVIpOwogICAgIG1fc2VydmVyQ2VydGlmaWNhdGUgPSBXVEZNb3ZlKHNlcnZlckNlcnRpZmljYXRl
KTsKQEAgLTU4NSw4ICs1ODUsOCBAQCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMqIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOgogICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgYXV0byBzZXNzaW9uS2V5cyA9IHNlc3Npb25JbnRlcmZh
Y2UtPmtleUlEcygpOwotICAgICAgICBpZiAoYW55T2Yoc2Vzc2lvbktleXMsIFsmXShjb25zdCBS
ZWY8U2hhcmVkQnVmZmVyPiYgc2Vzc2lvbktleSkgewotICAgICAgICAgICAgcmV0dXJuIGtleUlE
cy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBrZXlJRCkgeworICAg
ICAgICBpZiAoYW55T2Yoc2Vzc2lvbktleXMsIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mIHNlc3Npb25LZXkpIHsKKyAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1h
dGNoaW5nKFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGtleUlEKSB7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGtleUlELmdldCgpID09IHNlc3Npb25LZXkuZ2V0KCk7CiAg
ICAgICAgICAgICB9KSAhPSBub3RGb3VuZDsKICAgICAgICAgfSkpCkBAIC02NzMsNyArNjczLDcg
QEAgS2V5cyBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleUlE
cygpCiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VU
eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
IGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKICAgICBpZiAoIWlzTGljZW5zZVR5cGVTdXBwb3J0ZWQobGljZW5zZVR5cGUpKSB7CiAgICAg
ICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiIGZhbHNlLCBsaWNlbnNl
VHlwZSBcIiIsIGxpY2Vuc2VUeXBlLCAiXCIgbm90IHN1cHBvcnRlZCIpOwpAQCAtNzA5LDEyICs3
MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBp
bml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRh
ID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEg
PSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxzZSBp
ZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgp
KQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0
aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxs
b2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZBSVJQ
TEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09
IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3RyaW5n
ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNpemUo
KSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXRE
YXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOwogICAgICAg
ICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05P
YmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pTT05X
cml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzM2LDcg
KzczNiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlCiAgICAgfQogfQogCi1zdGF0aWMgYm9v
bCBpc0VxdWFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
K3N0YXRpYyBib29sIGlzRXF1YWwoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gZGF0YS50cnlD
cmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGlmICghYXJyYXlCdWZmZXIpCkBAIC03NTQsNyArNzU0
LDcgQEAgc3RhdGljIGJvb2wgaXNFcXVhbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IFN0cmluZyYgdmFsdWUpCiAgICAgcmV0dXJuIHN0cmluZ09yRXhjZXB0aW9uLnJldHVyblZhbHVl
KCkgPT0gdmFsdWU7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKICAgICBpZiAoIW1fZXhwaXJlZFNlc3Npb25zLmlzRW1wdHkoKSAmJiBpc0VxdWFs
KHJlc3BvbnNlRGF0YSwgImFja25vd2xlZGdlZCJfcykpIHsKICAgICAgICAgYXV0byogY2VydGlm
aWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpOwpAQCAtNzcwLDcgKzc3MCw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25z
ID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAg
ICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAgICAgICB9KTsKLSAgICAgICAgYXV0byBh
cHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRv
IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92
ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhB
cHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0
b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODU2LDcgKzg1Niw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICBhdXRvIGtleUlEID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqa2V5SURWZWN0b3IpKTsKICAgICAgICAgICAgIGF1
dG8gZm91bmRJbmRleCA9IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maW5kTWF0
Y2hpbmcoWyZdIChhdXRvJiByZXF1ZXN0KSB7CiAgICAgICAgICAgICAgICAgYXV0byBrZXlJRHMg
PSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwotICAgICAgICAgICAgICAgIHJldHVy
biBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgaWQpIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBpZCkgewogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gaWQuZ2V0KCkgPT0ga2V5SUQuZ2V0KCk7CiAgICAgICAgICAgICAgICAgfSkgIT0gbm90Rm91
bmQ7CiAgICAgICAgICAgICB9KTsKQEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmLCBMaQogICAgICAgICAgICAgICAgIGlmICghcGF5bG9hZFZlY3RvcikKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZERhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0gICAgICAg
ICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNv
bnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3Ry
ZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1d
OworICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BB
TDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhG
YWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYsIExpCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBERUJVR19MT0df
SUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2luZyBy
ZXNwb25zZSIpOwotICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZp
cnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNw
b25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVz
cG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAg
W21fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50
S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRL
ZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURh
dGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQogCiAg
ICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sg
YW5kIGNhbGwgaXQgb25jZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3Mg
Y2FsbGJhY2suCkBAIC05MzQsNyArOTM0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+
IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJl
dGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5
czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRB
VkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0
aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6
c3RvcmFnZVVSTF0pIHsKICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJh
Y2tTZXNzaW9uSWRLZXkgPSBAIlBsYXliYWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5OTksNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3Zl
U2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRl
LT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmll
ciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0
b3IgY2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEg
aW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNz
aW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURp
cmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVl
c3QoQVZDb250ZW50S2V5UgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsK
ICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0
ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgp
OworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogCiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJl
cXVlc3QpOwogICAgIGlmIChrZXlJRHMuaXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEwOTcsNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJv
dmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
UmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBr
ZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRy
eSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFG
b3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRp
Zmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vy
cm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
LCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciks
IGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEp
XSB7CkBAIC0xMTUzLDkgKzExNTMsOSBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogCiAgICAg
UmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNh
dGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlm
aWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVy
ID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCi0gICAg
dXNpbmcgUmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVy
PiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKKyAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8
c3RkOjpwYWlyPFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0
YT4+PjsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewogICAgICAgICB1c2luZyBDYWxs
YmFja0Z1bmN0aW9uID0gRnVuY3Rpb248dm9pZChSZXF1ZXN0c0RhdGEmJik+OwogICAgICAgICBz
dGF0aWMgUmVmUHRyPENhbGxiYWNrQWdncmVnYXRvcj4gY3JlYXRlKENhbGxiYWNrRnVuY3Rpb24m
JiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTExOTYsNyArMTE5Niw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVj
dG9yPFJldGFpCiAgICAgICAgICAgICBhdXRvIGVudHJ5ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUo
KTsKICAgICAgICAgICAgIGF1dG8mIGtleUlEID0gcmVxdWVzdERhdGEuZmlyc3Q7CiAgICAgICAg
ICAgICBhdXRvJiBwYXlsb2FkID0gcmVxdWVzdERhdGEuc2Vjb25kOwotICAgICAgICAgICAgZW50
cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+ZGF0YSgp
LCBrZXlJRC0+c2l6ZSgpKSk7CisgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIs
IGJhc2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGtl
eUlELT5zaXplKCkpKTsKICAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoInBheWxvYWQiLCBi
YXNlNjRFbmNvZGVUb1N0cmluZyhwYXlsb2FkLmdldCgpLmJ5dGVzLCBwYXlsb2FkLmdldCgpLmxl
bmd0aCkpOwogICAgICAgICAgICAgcmVxdWVzdEpTT04tPnB1c2hPYmplY3QoV1RGTW92ZShlbnRy
eSkpOwogICAgICAgICB9CkBAIC0xMjExLDggKzEyMTEsOCBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxS
ZXRhaQogICAgIEB0cnkgewogICAgICAgICBmb3IgKGF1dG8gcmVxdWVzdCA6IG1fY3VycmVudFJl
cXVlc3QudmFsdWUoKS5yZXF1ZXN0cykgewogICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJ
RHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKLSAgICAgICAgICAgIGF1dG8g
Y29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgICAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJz
dCgpKTsKKyAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3Ry
ZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29u
dGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxl
dGlvbkhhbmRsZXI6W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEg
KmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAg
ICAgICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAgICAgICAgICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdn
cmVnYXRvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVx
dWVzdERhdGEpXSAoKSBtdXRhYmxlIHsKQEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2lu
Z1JlcXVlc3QoQVZDb24KIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAg
ICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUo
KSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsK
KyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKTsKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJy
ZW50UmVxdWVzdC52YWx1ZSgpKTsKIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVu
dGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxO
U0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3Ry
ZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29u
dGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxl
dGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEg
KmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlz
KSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRh
aW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDAzMzRkNjIzYjJhNzYwNWM5YmUxMjIxM2I1YWJk
YmJhYzJiMDNmMTUuLjYyYjgzZmJmZDU3OTQwNTBlYmM5NDA2MzcwNDkwYmEyYjNlYzA4NzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKQEAgLTUzLDcg
KzUzLDcgQEAgY2xhc3MgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOwogCiBjbGFzcyBJbWFn
ZURlY29kZXJBVkZPYmpDIDogcHVibGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBjcmVhdGUoU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPElt
YWdlRGVjb2RlckFWRk9iakM+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KTsKICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXJBVkZPYmpDKCk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgYm9vbCBzdXBwb3J0c01lZGlhVHlwZShNZWRpYVR5cGUpOwpAQCAtODYsNyAr
ODYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1JbWFnZVB0ciBjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGlu
Z0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25z
KERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERh
dGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0K
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZp
bmFsOwogCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0
b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+IGZyYW1lSW5mb3MoKSBjb25zdDsKIAogcHJpdmF0
ZToKLSAgICBJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAg
SW1hZ2VEZWNvZGVyQVZGT2JqQyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAog
ICAgIEFWQXNzZXRUcmFjayAqZmlyc3RFbmFibGVkVHJhY2soKTsKICAgICB2b2lkIHJlYWRTYW1w
bGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpp
bmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNjMTRmNGJmLi4zNWM2Y2U2N2U4
NWY4NmFlMTY0YzIxYTcyNjA3ZmMwNjVlY2I1MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTI4OSw3ICsyODksNyBAQCBJbWFnZURlY29k
ZXJBVkZPYmpDU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRvciBpdGVyKQogCiAjcHJhZ21hIG1hcmsg
LSBJbWFnZURlY29kZXJBVkZPYmpDCiAKLVJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFn
ZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8SW1hZ2VEZWNvZGVyQVZG
T2JqQz4gSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsK
ICAgICAvLyBBVkZvdW5kYXRpb24gbWF5IG5vdCBiZSBhdmFpbGFibGUgYXQgcnVudGltZS4KICAg
ICBpZiAoIUFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKQpA
QCAtMzAxLDcgKzMwMSw3IEBAIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29k
ZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyQVZGT2JqQyhkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRp
b24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiB9CiAKLUltYWdlRGVjb2RlckFWRk9i
akM6OkltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFn
ZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikKICAgICA6IEltYWdlRGVjb2RlcigpCiAgICAgLCBtX21pbWVUeXBl
KG1pbWVUeXBlKQogICAgICwgbV91dGkoV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBl
KSkKQEAgLTMwOSw3ICszMDksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJB
VkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9s
b2FkZXIoYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRl
IGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNz
aW9uKFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21f
bG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107
CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJj
ZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xvYWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xv
YmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9h
c3NldCBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0
aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpA
QCAtNjQxLDkgKzY0MSw5IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRD
b250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKICAgICBtX2xvYWRlci5n
ZXQoKS5leHBlY3RlZENvbnRlbnRTaXplID0gZXhwZWN0ZWRDb250ZW50U2l6ZTsKIH0KIAotdm9p
ZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21f
bG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxE
YXRhUmVjZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAog
ICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggMjAwZTFhOGY5YWZiYTBmY2JiYTViMGEz
ZWQ3MDRjZDM0MWI0NTBkNi4uYzlkOWIyYTk2ODViMDFlOTFhYWEwMGMwZTAwMzA3NzM4NTY5MTQy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBJbmJhbmRN
ZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Owog
Y2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7CiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZv
cm1lckNWOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRl
QVZGT2JqQzsKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjsKQEAgLTQyNiw3ICs0MjYs
NyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbV93YWxs
Q2xvY2tBdENhY2hlZEN1cnJlbnRUaW1lOwogICAgIG11dGFibGUgaW50IG1fdGltZUNvbnRyb2xT
dGF0dXNBdENhY2hlZEN1cnJlbnRUaW1lIHsgMCB9OwogICAgIG11dGFibGUgZG91YmxlIG1fcmVx
dWVzdGVkUmF0ZUF0Q2FjaGVkQ3VycmVudFRpbWUgeyAwIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9rZXlJRDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9rZXlJ
RDsKICAgICBkb3VibGUgbV9jYWNoZWRSYXRlIHsgMCB9OwogICAgIGJvb2wgbV9yZXF1ZXN0ZWRQ
bGF5aW5nIHsgZmFsc2UgfTsKICAgICBkb3VibGUgbV9yZXF1ZXN0ZWRSYXRlIHsgMS4wIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBkMThhODVhNzk0ZjUyM2Y5NDkxMmUyN2YwOGI3Y2Ni
ZTg5M2M4ZWQwLi5iMWM2MDc5YzY0ODcwZjg4ZTM1YzgwODExYTViMThiZGExYjdmNjE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTI3OTIsNyArMjc5Miw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShD
RE1JbnN0YW5jCiAgICAgaWYgKCFtX2tleUlEIHx8ICFtX2NkbUluc3RhbmNlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1fY2RtSW5zdGFuY2UtPnNlc3Np
b25Gb3JLZXlJRHMoVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOwor
ICAgIGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlE
cyhWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOwog
ICAgIGlmICghaW5zdGFuY2VTZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGQ5
NjBhZmRjYTIxNGJmYTQ0MGVlYTIwODgzYmNhOTEzMmUyMmY5YTAuLjRkZDZiOTFhOTQ4MzE2OWEw
MjM2ODg4ZDBlNGQ4MmZmYjgzNjY2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtMjEzLDcgKzIxMyw3IEBAIFNvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKIHZvaWQg
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcHBlbmRGbGFn
cyBmbGFncykKIHsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFrZVNoYXJlZEJ1
ZmZlcigpOwotICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsK
KyAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNSZXNldCB8fCBmbGFncyA9PSBBcHBl
bmRGbGFnczo6RGlzY29udGludWl0eSkKICAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0cmVhbURh
dGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURhdGFQYXJzZXJTdHJlYW1EYXRhRGlz
Y29udGludWl0eV07CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKaW5kZXggMDM0MjBmMTM4MzY0ZmFjMjA5MWUxMDRk
MTM2ZmYzOGExZmI5ZmUyMi4uZWFkMDgzYTZjYzdlNzM2YjQyMTcxMGZhYzM5MmEwN2RmZjkyYmU1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5oCkBAIC03Myw3ICs3Myw3IEBAIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwogY2xh
c3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFzcyBWaWRlb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzsKIGNsYXNzIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vz
c2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQgewogcHVibGlj
OgpAQCAtMTUzLDcgKzE1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFE
YXRhRm9yVHJhY2tJZChSZWY8TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0
IFN0cmluZyYgbWVkaWFUeXBlKTsKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJp
ZGVzCi0gICAgdm9pZCBhcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9p
ZCBhcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQg
YWJvcnQoKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAgICB2
b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSBmaW5hbDsKQEAgLTIyMSw3ICsyMjEsNyBAQCBw
cml2YXRlOgogI2VuZGlmCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNP
TlRFTlRLRVlTRVNTSU9OKQogICAgIFJlZlB0cjxDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQz4gbV9jZG1JbnN0YW5jZTsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IG1f
a2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1fa2V5SURz
OwogI2VuZGlmCiAKICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gbV9jYWNoZWRTaXplOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5tbQppbmRleCAzYTI4NjdhMWFjMjQzYmI5YzkzYzlkNmI3MGNhNTZiMDI5NDhmYzljLi4yNGFl
MGUxNDA2MDE5MTQzZmFkNGYxNTI5ZTY4ZWQ0OWI0MTY1M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtNTYzLDcg
KzU2Myw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250
ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvCiAgICAgVU5VU0VEX1BBUkFNKGhhc1Nl
c3Npb25TZW1hcGhvcmUpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjph
cHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6YXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiZGF0YSBsZW5ndGggPSAiLCBkYXRhLT5zaXpl
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlci5oCmluZGV4IGYwZDhlNzExMzJmNmMyODdhMmU2MjlhNGI4OGE1MzlkZmQ1M2NiZTIuLjBl
ZmVlYWVmNWIyZDcxYmM2ZDY3MDRkZDFiOTc1YWNiYWUxMTNiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCkBAIC00Myw3ICs0Myw3
IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM7CiBjbGFzcyBQbGF0
Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiAKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZD
b3VudGVkPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4gewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpA
QCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFJlc291cmNl
RXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZCgpOwotICAgIHZvaWQgbmV3RGF0YVN0b3Jl
ZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgbmV3RGF0YVN0b3JlZElu
U2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAgIFJldGFpblB0cjxB
VkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggYTIyYTk5
N2IxMTA3OWQ0NjU4NmFhNjQ4NTYxYmJmNzJhNmYyNDdmMC4uZjkyMWYzZGEwZTY5YjMzOTk3N2M5
ZTNlNDk2NjdhMjhmNWU5NWNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTU2LDE0ICsxNTYsMTQgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5h
bCB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91
bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcp
IGZpbmFsIHsgfQotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
ICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsg
fQogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQg
bG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVkKCk7IH0KIAogICAgIFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gbV9y
ZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsKIAogV2Vha1B0cjxQbGF0Zm9ybVJlc291cmNlTWVk
aWFMb2FkZXI+IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6Y3JlYXRlKFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlciYgcGFyZW50LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXImIGxvYWRl
ciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIxMSwxMyArMjExLDEwIEBAIHZvaWQg
UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIG1fcGFyZW50
LmxvYWRGaW5pc2hlZCgpOwogfQogCi12b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQordm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1
ZmZlcik7Ci0gICAgZWxzZQotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7Ci0gICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7
CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9wYXJlbnQubmV3
RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQoKSk7CiB9CiAKIGNsYXNzIERh
dGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPERhdGFVUkxS
ZXNvdXJjZU1lZGlhTG9hZGVyPiB7CkBAIC0zODgsNyArMzg1LDcgQEAgdm9pZCBXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0KIAot
dm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZl
cihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3
RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEpCiB7CiAgICAgQVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVz
dCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBkYjQ1N2E4MWQzZWU4MjkxYjkwNWU5YmE3
N2MxZTJhZjMwOWUwY2IyLi45NDE5YmNlYTM4ZGJmOGQ2NDkyZjY4MDFkOWEyMTU2MjM2NmEyYzZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zMSwxMCArMzEsMTEgQEAgdHlw
ZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFz
cyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0
aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiAK
QEAgLTQ1LDcgKzQ2LDcgQEAgc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRDdXN0
b21QbGF0Zm9ybURhdGEpOwogcHVibGljOgotICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRf
RmFjZSwgU2hhcmVkQnVmZmVyJik7CisgICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9GYWNl
LCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgfkZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
KSA9IGRlZmF1bHQ7CiAgICAgRm9udFBsYXRmb3JtRGF0YSBmb250UGxhdGZvcm1EYXRhKGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVh
dGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJp
bmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQz
ZDUwYzA2Li5iNmQzZWIzNjMxMTI0NDYxM2IzODAzZjJmM2QyNGQzMDg3ZWEyNGU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVy
Q0cuY3BwCkBAIC0yNDQsMTYgKzI0NCwxNiBAQCBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNB
dFBvc2l0aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sCiAKIHZv
aWQgc2hhcmVkQnVmZmVyUmVsZWFzZSh2b2lkKiBpbmZvKQogewotICAgIFNoYXJlZEJ1ZmZlciog
c2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAgIHNoYXJlZEJ1ZmZlci0+ZGVyZWYoKTsKIH0KICNl
bmRpZgogCi1JbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRh
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURlY29kZXJD
Rzo6SW1hZ2VEZWNvZGVyQ0coRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gdXRpSGludDsKICAgICBpZiAoZGF0YS5zaXplKCkgPj0gMzIpCi0gICAgICAgIHV0aUhp
bnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5jcmVhdGVDRkRh
dGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgICAgICB1dGlIaW50ID0gYWRvcHRD
RihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICAKICAgICBpZiAodXRp
SGludCkgewogICAgICAgICBjb25zdCB2b2lkKiBrZXkgPSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVu
dGlmaWVySGludDsKQEAgLTU2MiwyMyArNTYyLDI0IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VE
ZWNvZGVyQ0c6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxp
CiAgICAgcmV0dXJuIG1hc2tlZEltYWdlID8gbWFza2VkSW1hZ2UgOiBpbWFnZTsKIH0KIAotdm9p
ZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQordm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBtX2lzQWxsRGF0YVJl
Y2VpdmVkID0gYWxsRGF0YVJlY2VpdmVkOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgLy8g
T24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5
IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KLSAgICAv
LyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZE
YXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCi0gICAgLy8g
cmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNlVXBk
YXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCks
IGFsbERhdGFSZWNlaXZlZCk7CisgICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0
IHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgorICAgIC8vIFdlIHVzZSBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZE
YXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCisgICAgLy8g
cmVhbGx5IGxvb2tpbmcgYXQgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCisgICAgQ0dJbWFn
ZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UKLSAg
ICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0g
ICAgZGF0YS5yZWYoKTsKLSAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxs
YmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVm
ZmVyCisgICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlci4KKyAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGln
dW91cygpOworICAgIGNvbnRpZ3VvdXNEYXRhLmdldCgpLnJlZigpOworICAgIC8vIFdlIHVzZSB0
aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9p
bnRlciBvbmUgYmVjYXVzZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3Qg
cHJvdmlkZSBhIHdheSB0byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVl
IHRoYXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1
c2luZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJl
Y3RDYWxsYmFja3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdl
dEJ5dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0cjxD
R0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNy
ZWF0ZURpcmVjdCgmZGF0YSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOworICAg
IFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0Rh
dGFQcm92aWRlckNyZWF0ZURpcmVjdChjb250aWd1b3VzRGF0YS5wdHIoKSwgZGF0YS5zaXplKCks
ICZwcm92aWRlckNhbGxiYWNrcykpOwogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlk
ZXIobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFSZWNl
aXZlZCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZURlY29kZXJDRy5oCmluZGV4IDk3NDA3MzZhMjFhYzk5OGFiMDVmMWM5YjRm
NWIxNjc1ZTQ0ZDJjOTEuLmEwYWMxYzJmYmVlNTI3ZTVhYjExMTQ1NTgxMmJkYjczNjNhMDU1NDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2RlckNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuaApAQCAtMzIsOSArMzIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJ
bWFnZURlY29kZXJDRyBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBJ
bWFnZURlY29kZXJDRyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCi0gICAgc3RhdGljIFJlZjxJbWFnZURlY29k
ZXJDRz4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQor
ICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyQ0c+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJDRyhkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAog
ICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJz
YW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdP
cHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmlu
YWw7CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVh
ckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRl
eCAzMWMyN2MwNjliMmIzYzcwMzczMmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlkNjlm
YzQ3MDQ1MTI0NzAyZjFhMzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5LDcg
KzMxOSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wp
CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIFJl
dGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQ
cm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwor
ICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihD
R0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9j
dW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXIuY3BwCmluZGV4IGY3NDdkODBmYjYxZDMwZmM1MDIyZTY4MmQ2MzU2MTMz
ZDNjYTY5N2EuLmM4YTgwNjEyMjA1M2Y2NDhhZGRiMDJhYzM4OWNlNzE0MzY4ZGJiYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyLmNwcApAQCAtODAsNyArODAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZl
clBhcnNlcjo6c2V0TWluaW11bUF1ZGlvU2FtcGxlRHVyYXRpb24oZmxvYXQpCiB7CiB9CiAKLVNv
dXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK1NvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudChSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShidWZmZXIp
KQogewogfQpAQCAtMTAxLDcgKzEwMSw3IEBAIHNpemVfdCBTb3VyY2VCdWZmZXJQYXJzZXI6OlNl
Z21lbnQ6OnNpemUoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIGNsYW1wVG88c2l6ZV90PihN
VFBsdWdpbkJ5dGVTb3VyY2VHZXRMZW5ndGgoYnl0ZVNvdXJjZS5nZXQoKSkpOwogICAgICAgICB9
LAogI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisg
ICAgICAgIFtdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYnVmZmVyLT5zaXplKCk7CiAgICAgICAgIH0KQEAg
LTEyNSw3ICsxMjUsNyBAQCBhdXRvIFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6cmVhZChz
aXplX3QgcG9zaXRpb24sIHNpemVfdCBzaXplVG9SZWFkLCB1aW50OAogICAgICAgICAgICAgcmV0
dXJuIFVuZXhwZWN0ZWQ8UmVhZEVycm9yPiB7IFJlYWRFcnJvcjo6RmF0YWxFcnJvciB9OwogICAg
ICAgICB9LAogI2VuZGlmCi0gICAgICAgIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSAtPiBSZWFkUmVzdWx0CisgICAgICAgIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVhZFJlc3VsdAogICAgICAgICB7CiAgICAgICAgICAgICBi
dWZmZXItPmNvcHlUbyhkZXN0aW5hdGlvbiwgcG9zaXRpb24sIHNpemVUb1JlYWQpOwogICAgICAg
ICAgICAgcmV0dXJuIHNpemVUb1JlYWQ7CkBAIC0xMzMsNyArMTMzLDcgQEAgYXV0byBTb3VyY2VC
dWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnJlYWQoc2l6ZV90IHBvc2l0aW9uLCBzaXplX3Qgc2l6ZVRv
UmVhZCwgdWludDgKICAgICApOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQ
YXJzZXI6OlNlZ21lbnQ6OnRha2VTaGFyZWRCdWZmZXIoKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1ZmZlcigpCiB7
CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9zZWdtZW50LAogI2lmIEhBVkUoTVRfUExVR0lO
X0ZPUk1BVF9SRUFERVIpCkBAIC0xNDIsMjggKzE0MiwyOCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBT
b3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VTaGFyZWRCdWZmZXIoKQogICAgICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcihzaXplKCkpOwogICAgICAgICAgICAgYXV0byByZWFk
UmVzdWx0ID0gcmVhZCgwLCB2ZWN0b3Iuc2l6ZSgpLCB2ZWN0b3IuZGF0YSgpKTsKICAgICAgICAg
ICAgIGlmICghcmVhZFJlc3VsdC5oYXNfdmFsdWUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICB2ZWN0b3Iuc2hyaW5rKHJlYWRS
ZXN1bHQudmFsdWUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZSh2ZWN0b3IpKTsKKyAgICAgICAgICAgIHJldHVybiBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKTsKICAgICAgICAgfSwKICNlbmRpZgotICAgICAg
ICBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAgICAgICAgWyZdKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
c3RkOjpleGNoYW5nZShidWZmZXIsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpOworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UoYnVmZmVyLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKSk7CiAgICAgICAgIH0KICAgICApOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBT
b3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OmdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50Ojpn
ZXRTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc2Vn
bWVudCwKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVSKQotICAgICAgICBbJl0oY29u
c3QgUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mKSAtPiBSZWZQdHI8U2hhcmVkQnVm
ZmVyPgorICAgICAgICBbJl0oY29uc3QgUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4m
KSAtPiBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAgICAgWyZdKGNvbnN0
IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlZlB0cjxTaGFyZWRCdWZmZXI+CisgICAg
ICAgIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biBidWZmZXIucHRyKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKaW5kZXggNTIw
YjUyMDdmYzI3MWQ3OTgxNTMzZmIxNGQyMzE1NTk0YTg4ODM2NS4uNzI5N2E3OTE0YTc5YWRmNjQy
ZGM2YjE2YjM2ZTYwZjljZDAyOWYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKQEAgLTQ1LDcg
KzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlwZTsKIGNsYXNz
IE1lZGlhU2FtcGxlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU291cmNlQnVmZmVyUGFyc2VyIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNvdXJjZUJ1ZmZlclBhcnNlcj4gewogcHVibGljOgpA
QCAtNjksMTEgKzY5LDExIEBAIHB1YmxpYzoKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVB
REVSKQogICAgICAgICBTZWdtZW50KFJldGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VSZWY+JiYp
OwogI2VuZGlmCi0gICAgICAgIFNlZ21lbnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAg
IFNlZ21lbnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgICAgICBTZWdtZW50
KFNlZ21lbnQmJikgPSBkZWZhdWx0OwotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiB0YWtlU2hh
cmVkQnVmZmVyKCk7Ci0gICAgICAgIC8vIFdpbGwgcmV0dXJuIG51bGxwdHIgaWYgU2VnbWVudCdz
IGJhY2tlbmQgaXNuJ3QgYSBTaGFyZWRCdWZmZXIuCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gdGFrZVNoYXJlZEJ1ZmZlcigpOworICAgICAgICAvLyBXaWxsIHJldHVybiBudWxs
cHRyIGlmIFNlZ21lbnQncyBiYWNrZW5kIGlzbid0IGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4K
KyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdldFNoYXJlZEJ1ZmZlcigp
IGNvbnN0OwogCiAgICAgICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKQEAgLTg3LDcgKzg3LDcg
QEAgcHVibGljOgogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAgICAg
ICBSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiwKICNlbmRpZgotICAgICAgICAgICAg
UmVmPFNoYXJlZEJ1ZmZlcj4KKyAgICAgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PgogICAgICAgICA+IG1fc2VnbWVudDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uY3BwCmluZGV4IDM1OWVkYjQxNWZkMzc1ZWQ4MmI3YjRhNDlmMTFlNGM4ZmQ2YzdkNmIu
LjliYzE4OTQxOTg2MzBiYWQ4ZDdjYmQwYjNhNWIyOGU0NmU5ZWZlMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0zNjcsNyArMzY3LDcgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIHZvaWQgRnJlZURhdGFTZWdtZW50KHZvaWQqIHJlZmNvbiwgdm9pZCosIHNpemVfdCkK
ICAgICB7Ci0gICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudCo+KHJlZmNvbik7CisgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21lbnQqPihyZWZjb24pOwogICAgICAgICBidWZmZXItPmRlcmVm
KCk7CiAgICAgfQogCkBAIC0zODgsNyArMzg4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
IGFkdmFuY2VUb05leHRTZWdtZW50KCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIg
PSBjdXJyZW50U2VnbWVudC5nZXRTaGFyZWRCdWZmZXIoKTsKKyAgICAgICAgICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBjdXJyZW50U2VnbWVudC5nZXRT
aGFyZWRCdWZmZXIoKTsKICAgICAgICAgICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3QmxvY2tCdWZm
ZXIgPSBudWxscHRyOwogICAgICAgICAgICAgdWludDY0X3QgbGFzdFJlYWQgPSAwOwogICAgICAg
ICAgICAgc2l6ZV90IGRlc3RpbmF0aW9uT2Zmc2V0ID0gbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7
CkBAIC00MDksNyArNDA5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9u
T2Zmc2V0ID0gMDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJU
KHNoYXJlZEJ1ZmZlci0+aGFzT25lU2VnbWVudCgpLCAiQ2FuIG9ubHkgZGVhbCB3aXRoIHNoYXJl
ZEJ1ZmZlciBjb250YWluaW5nIGEgc2luZ2xlIERhdGFTZWdtZW50Iik7Ci0gICAgICAgICAgICAg
ICAgLy8gQSBTaGFyZWRCdWZmZXIgZG9lc24ndCBoYXZlIHRocmVhZC1zYWZlIHJlZmNvdW50aW5n
LCBhcyBzdWNoIHdlIG11c3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgRGF0YVNlZ21lbnQgaW5z
dGVhZC4KKyAgICAgICAgICAgICAgICAvLyBBIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgZG9lc24n
dCBoYXZlIHRocmVhZC1zYWZlIHJlZmNvdW50aW5nLCBhcyBzdWNoIHdlIG11c3Qga2VlcCBhIHJl
ZmVyZW5jZSB0byB0aGUgRGF0YVNlZ21lbnQgaW5zdGVhZC4KICAgICAgICAgICAgICAgICAvLyBU
T0RPOiBjb3VsZCB3ZSBvbmx5IGNyZWF0ZSBhIG5ldyBDTUJsb2NrQnVmZmVyIGlmIHRoZSBiYWNr
ZW5kIG1lbW9yeSBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBvbmU/CiAgICAgICAgICAgICAg
ICAgYXV0byBmaXJzdFNlZ21lbnQgPSBzaGFyZWRCdWZmZXItPmJlZ2luKCktPnNlZ21lbnQ7CiAg
ICAgICAgICAgICAgICAgc2l6ZV90IGNhblJlYWQgPSBzdGQ6Om1pbjxzaXplX3Q+KG51bVRvUmVh
ZCwgZmlyc3RTZWdtZW50LT5zaXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IGU4MDUwOWVjY2Ew
NWQyY2M4ZWQxMDY2MDcwNDFmNWNjY2MzZTM3OTQuLjYzOGU2ODM5N2EyYjY2OTZiMmYxZWRlMjRl
YThmZGI5MDYyNmNlZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuY3BwCkBAIC03MjksNyArNzI5LDcgQEAgRGlkQ2hhbmdlSXRlbUJ1ZmZlciBJdGVtQnVmZmVy
Ojpzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChzaXplX3QgbnVtYmVyT2ZCeXRlcykKIHZvaWQg
SXRlbUJ1ZmZlcjo6YXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgdGVtcG9yYXJ5SXRlbSkK
IHsKICAgICBhdXRvIHJlcXVpcmVkU2l6ZUZvckl0ZW0gPSBtX3dyaXRpbmdDbGllbnQtPnJlcXVp
cmVkU2l6ZUZvckl0ZW0odGVtcG9yYXJ5SXRlbSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
b3V0T2ZMaW5lSXRlbTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gb3V0T2ZM
aW5lSXRlbTsKICAgICBpZiAoIXJlcXVpcmVkU2l6ZUZvckl0ZW0pIHsKICAgICAgICAgb3V0T2ZM
aW5lSXRlbSA9IG1fd3JpdGluZ0NsaWVudC0+ZW5jb2RlSXRlbU91dE9mTGluZSh0ZW1wb3JhcnlJ
dGVtKTsKICAgICAgICAgaWYgKCFvdXRPZkxpbmVJdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbUJ1ZmZlci5oCmluZGV4IGM4NzMxOTgyZWY4MzkzMWJiYWUzMWI3ODY1MGFjMGRh
MjBhMDVmYzUuLmIzMWJjNWZkNGU5MjE0YjE1YTM3NjFmYmU5OGQ2MGNlYjQ3YTk4ZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKQEAgLTEwMiw3ICsxMDIsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgdmly
dHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3Bs
YXlMaXN0SXRlbSYpIGNvbnN0CisgICAgdmlydHVhbCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTY4LDcgKzE2OCw3IEBA
IHB1YmxpYzoKICAgICAvLyB3aXRoIHBhZGRpbmcgYmV0d2VlbiBlYWNoIGl0ZW0gdG8gZW5zdXJl
IHRoYXQgYWxsIGl0ZW1zIGFyZSBhbGlnbmVkIHRvIDggYnl0ZXMuCiAgICAgLy8KICAgICAvLyBJ
ZiBhIHdyaXRpbmcgY2xpZW50IGlzIHByZXNlbnQgYW5kIHJlcXVpcmVzIGN1c3RvbSBlbmNvZGlu
ZyBmb3IgdGhlIGdpdmVuIGl0ZW0gdHlwZSBULCB0aGUKLSAgICAvLyBpdGVtIGJ1ZmZlciB3aWxs
IGFzayB0aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgU2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgZW5j
b2RlZCBkYXRhIGZvciB0aGUKKyAgICAvLyBpdGVtIGJ1ZmZlciB3aWxsIGFzayB0aGUgY2xpZW50
IGZvciBhbiBvcGFxdWUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGVuY29kZWQg
ZGF0YSBmb3IgdGhlCiAgICAgLy8gaXRlbS4gVGhpcyBlbmNvZGVkIGRhdGEgaXMgdGhlbiBhcHBl
bmRlZCB0byB0aGUgaXRlbSBidWZmZXIsIHdpdGggcGFkZGluZyB0byBlbnN1cmUgdGhhdAogICAg
IC8vIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoaXMgZGF0YSBhcmUgYWxpZ25lZCB0byA4IGJ5dGVz
LCBpZiBuZWNlc3NhcnkuIFdoZW4gY29uc3VtaW5nIGVuY29kZWQKICAgICAvLyBpdGVtIGRhdGEs
IGEgY29ycmVzcG9uZGluZyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB3aWxsIGJlIHJlcXVpcmVk
IHRvIGNvbnZlcnQgdGhpcyBlbmNvZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA1MDZiNGRkNjJkNTVhNTZhMjc4YzMwY2NhYjJk
MTkxMTBmMjQxZWVjLi4yYjQ0M2ZiYmVkMmMxZmRlNDhiY2RlOWNiZTQwOTUzNDk3ZmRlOTEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAK
QEAgLTM4LDEyICszOCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyB2b2lkIHJl
bGVhc2VDdXN0b21Gb250RGF0YSh2b2lkKiBkYXRhKQogewotICAgIHN0YXRpY19jYXN0PFNoYXJl
ZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOworICAgIHN0YXRpY19jYXN0PEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKIH0KIAogc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9r
ZXlfdCBmcmVlVHlwZUZhY2VLZXk7CiAKLUZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OkZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoRlRfRmFjZSBmcmVlVHlwZUZhY2UsIFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9GYWNl
IGZyZWVUeXBlRmFjZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIDogbV9m
b250RmFjZShhZG9wdFJlZihjYWlyb19mdF9mb250X2ZhY2VfY3JlYXRlX2Zvcl9mdF9mYWNlKGZy
ZWVUeXBlRmFjZSwgRlRfTE9BRF9ERUZBVUxUKSkpCiB7CiAgICAgYnVmZmVyLnJlZigpOyAvLyBU
aGlzIGlzIGJhbGFuY2VkIGJ5IHRoZSBidWZmZXItPmRlcmVmKCkgaW4gcmVsZWFzZUN1c3RvbUZv
bnREYXRhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRleCA5YWQx
OWI4NzZiMjdlNjBkNGZiYTUwMzBlNjVmODFlN2NhOGE1MDY5Li5kZmJjNTgwZmI4ZTliMzA5MzZj
Y2EwOGJiODhiNDljMmJiNjUzYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcApAQCAtODEsMTIgKzgxLDEyIEBAIEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZSog
dG9TYW1wbGUoSXRlcmF0b3IgaXRlcikKICAgICByZXR1cm4gKEltYWdlRGVjb2RlckdTdHJlYW1l
clNhbXBsZSopaXRlci0+c2Vjb25kLmdldCgpOwogfQogCi1SZWZQdHI8SW1hZ2VEZWNvZGVyR1N0
cmVhbWVyPiBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJ
bWFnZURlY29kZXJHU3RyZWFtZXI+IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJH
U3RyZWFtZXIoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikpOwogfQogCi1JbWFnZURlY29kZXJHU3RyZWFtZXI6OkltYWdlRGVjb2RlckdTdHJl
YW1lcihTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckdTdHJlYW1lcjo6
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKICAgICA6IG1fbWltZVR5cGUobWltZVR5cGUpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIG9uY2VGbGFnOwpAQCAtMTk5LDcgKzE5OSw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpz
ZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCkKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wpCiB7CiAgICAg
cHVzaEVuY29kZWREYXRhKGRhdGEpOwogfQpAQCAtNDI2LDEwICs0MjYsMTEgQEAgRW5jb2RlZERh
dGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRh
U3RhdHVzKCkgY29uc3QKICAgICByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OlVua25vd247CiB9
CiAKLXZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29k
ZWREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX2VvcyA9
IGZhbHNlOwotICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2RlckdT
dHJlYW1lciIsIFt0aGlzLCBkYXRhID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXpl
KCldIHsKKyAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3Ry
ZWFtZXIiLCBbdGhpcywgZGF0YSA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc2l6ZSA9IGJ1
ZmZlci5zaXplKCldIHsKICAgICAgICAgbV9pbm5lckRlY29kZXIgPSBJbWFnZURlY29kZXJHU3Ry
ZWFtZXI6OklubmVyRGVjb2Rlcjo6Y3JlYXRlKCp0aGlzLCBkYXRhLCBzaXplKTsKICAgICAgICAg
bV9pbm5lckRlY29kZXItPnJ1bigpOwogICAgIH0sIFRocmVhZFR5cGU6OkdyYXBoaWNzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAppbmRleCA2NmYzMzcyODQ2YTRkZjg3NGY0
MjBkYjY1NGU2ODljOWU0M2IwYzUyLi5kM2VmNmE0NWNkN2RiZGZjMzEyMGVhMjNmOGRlYjNjNTk5
NzFhZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCkBAIC00MSw4ICs0
MSw4IEBAIGNsYXNzIEltYWdlRGVjb2RlckdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBJbWFnZURl
Y29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEltYWdlRGVjb2RlckdTdHJlYW1lcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0
cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwot
ICAgIEltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0
YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlckdTdHJlYW1l
cigpID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzTWVkaWFUeXBlKE1lZGlh
VHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID09IE1lZGlhVHlwZTo6VmlkZW87IH0KQEAgLTcyLDcg
KzcyLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUo
bG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxE
YXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2VvczsgfQogICAgIHZvaWQgY2xl
YXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAgLTEyMiw3ICsxMjIsNyBAQCBw
cml2YXRlOgogICAgIH07CiAKICAgICB2b2lkIGhhbmRsZVNhbXBsZShHUmVmUHRyPEdzdFNhbXBs
ZT4mJik7Ci0gICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7Cisg
ICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwog
CiAgICAgY29uc3QgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKiBzYW1wbGVBdEluZGV4KHNp
emVfdCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAKaW5kZXggNzk3OTQ4MGY5MWM1OTdhYTlmOTAwOTdjMTg4MzJjNmExNWMzMmNlOC4u
YjMyNGNmMTE0NjQ3YjMzNzVlNmE0NWJmYWIxMDNlMGEyOTBmYjhkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM2OTIsNyArMzY5Miw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFF
bmNvdW50ZXJlZChJbml0RGF0YSYmIGluaXRECiAKICAgICAgICAgR1NUX0RFQlVHKCJzY2hlZHVs
aW5nIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkICVzIGV2ZW50IG9mIHNpemUgJXp1Iiwg
aW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKS51dGY4KCkuZGF0YSgpLAogICAgICAgICAg
ICAgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwotICAgICAgICBHU1RfTUVNRFVNUCgiaW5p
dCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxv
YWQoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOworICAgICAgICBHU1Rf
TUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGlu
aXREYXRhLnBheWxvYWQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5
bG9hZCgpLT5zaXplKCkpOwogICAgICAgICB3ZWFrVGhpcy0+bV9wbGF5ZXItPmluaXRpYWxpemF0
aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCksIGluaXRE
YXRhLnBheWxvYWQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiAgICAgfSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDVkODZmYjFhZjQ4
N2MwMjg5ZTAwMTI1NTk2NWMzMWRjZGE5NzM0MjYuLjkzMDE5MDk5NDViNGEyM2Q2Njc4MmYzNTBi
NTZlNDQ3OWY4MDI2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFt
ZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRob2RzLgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZv
aWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtMTA5Myw3ICsxMDkzLDcgQEAgdm9pZCBDYWNoZWRSZXNv
dXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb24KICAgICBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRDb250aW51ZVBvbGljeUNoZWNr
OjpZZXMpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
Cit2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBX
RUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktl
eS5oCmluZGV4IDY5MmE5OTZkMTljMjRlZmQ5YTQ4NTUyMzczYTU2NzliNTJlMWVmMWMuLjM0OWJm
ZGNhYWQ2YzdkN2Y4ZDVhZGEwYTE3MjE5ZmQ5ZTcwNjI2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
UHJveHlDbGVhcktleS5oCkBAIC02MiwxMSArNjIsMTEgQEAgcHVibGljOgogICAgIENETVByb3h5
Q2xlYXJLZXkoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+Q0RNUHJveHlDbGVhcktleSgpOwog
Ci0gICAgLy8gRklYTUU6IFRoZXJlJ3MgYSBsYWNrIG9mIGNvbnNpc3RlbmN5IGJldHdlZW4gU2hh
cmVkQnVmZmVycywKKyAgICAvLyBGSVhNRTogVGhlcmUncyBhIGxhY2sgb2YgY29uc2lzdGVuY3kg
YmV0d2VlbiBGcmFnbWVudGVkU2hhcmVkQnVmZmVycywKICAgICAvLyBWZWN0b3I8Y2hhcj4ncyBh
bmQge3VpbnQ4X3QqLHNpemVfdH0gaWRpb21zIGZvciByZXByZXNlbnRpbmcgYSBjaHVuayBvZgot
ICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBzb21laG93LiBOb3RlIFNoYXJlZEJ1ZmZlcnMgYXJlIGRh
bmdlcm91cyBzaW5jZQorICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBzb21laG93LiBOb3RlIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXJzIGFyZSBkYW5nZXJvdXMgc2luY2UKICAgICAvLyB0aGV5J3JlIG5v
dCB0aHJlYWQtc2FmZSBhbmQgdGhpcyBjbGFzcyBtdXN0IG1haW50YWluCi0gICAgLy8gdGhyZWFk
LXNhZmV0eSwgYnV0IG1heWJlIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQgY291bGQgYmUKKyAg
ICAvLyB0aHJlYWQtc2FmZXR5LCBidXQgbWF5YmUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQgY291bGQgYmUKICAgICAvLyBtYWRlIHRvIHdvcmssIGhvd2V2ZXIgdGhhdCBoYXMg
emVybyBoZWxwZXJzIGZvciBkcm9wcGluZyBpbnRvCiAgICAgLy8gaXRlcmF0b3ItYXdhcmUgLyBj
b21wYXJhdG9yLWF3YXJlIGNvbnRhaW5lcnMuLi4KICAgICBzdHJ1Y3QgY2VuY0RlY3J5cHRDb250
ZXh0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvQ0RNVGh1bmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCmluZGV4IDJlZmEwNDM2MGU4ODQ4MzgwNjE0
NGMzZDcxZGU2M2FkN2I0MmI1NjEuLmMzODkxNmU3ZDA1OWU4ODliNWM4OGVlYjA5ZTBmNGNmYzAz
YzFkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIGJv
b2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkgY29uc3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUgaW5pdERhdGEgYnVmZmVyIGFz
IGFuIEpTT04gb2JqZWN0IGluIGtleWlkcyBjYXNlLgogICAgIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJrZXlpZHMiKSAmJiBDRE1VdGlsaXRpZXM6OnBh
cnNlSlNPTk9iamVjdChpbml0RGF0YSkpCkBAIC0yMzcsNyArMjM3LDcgQEAgYm9vbCBDRE1Qcml2
YXRlVGh1bmRlcjo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIGNvbnN0IFMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IENETVByaXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
cmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0
ZVRodW5kZXI6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
cmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKIH0KQEAgLTI2
MCw3ICsyNjAsNyBAQCB2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6aW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYQogICAgIGNhbGxiYWNrKFN1Y2Nl
ZWRlZCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCAgU3VjY2Vzc0NhbGxiYWNrJiYgY2Fs
bGJhY2spCit2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJhY2sm
JiBjYWxsYmFjaykKIHsKICAgICBPcGVuQ0RNRXJyb3IgZXJyb3IgPSBvcGVuY2RtX3N5c3RlbV9z
ZXRfc2VydmVyX2NlcnRpZmljYXRlKG1fdGh1bmRlclN5c3RlbS5nZXQoKSwgY29uc3RfY2FzdDx1
aW50OF90Kj4oY2VydGlmaWNhdGUtPmRhdGEoKSksCiAgICAgICAgIGNlcnRpZmljYXRlLT5zaXpl
KCkpOwpAQCAtMzI2LDcgKzMyNiw3IEBAIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUlu
c3RhbmNlVGh1bmRlcjo6Y3JlYXRlU2Vzc2lvbigpCiBjbGFzcyBQYXJzZWRSZXNwb25zZU1lc3Nh
Z2UgewogCiBwdWJsaWM6Ci0gICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlKGNvbnN0IFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlKGNvbnN0IFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgIHsKICAgICAgICAgaWYg
KCFidWZmZXIgfHwgIWJ1ZmZlci0+c2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzU0
LDggKzM1NCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNWYWxpZDsgfQogICAgIGJvb2wgaGFzUGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PGJvb2w+KG1fcGF5bG9hZCk7IH0KLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYg
cGF5bG9hZCgpIGNvbnN0JiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZh
bHVlKCk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpICYgeyBBU1NFUlQobV9w
YXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CisgICAgY29uc3QgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QmIHsgQVNTRVJUKG1fcGF5bG9hZCk7
IHJldHVybiBtX3BheWxvYWQudmFsdWUoKTsgfQorICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYgcGF5bG9hZCgpICYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52
YWx1ZSgpOyB9CiAgICAgYm9vbCBoYXNUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlLmhhc192
YWx1ZSgpOyB9CiAgICAgV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSB0eXBlKCkgY29uc3Qg
eyBBU1NFUlQobV90eXBlKTsgcmV0dXJuIG1fdHlwZS52YWx1ZSgpOyB9CiAgICAgV2ViQ29yZTo6
TWVkaWFLZXlNZXNzYWdlVHlwZSB0eXBlT3IoV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSBh
bHRlcm5hdGUpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA/IG1fdHlwZS52YWx1ZSgpIDogYWx0ZXJu
YXRlOyB9CkBAIC0zNjQsMTEgKzM2NCwxMSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9v
bCBtX2lzVmFsaWQgeyBmYWxzZSB9OwotICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZl
cj4+IG1fcGF5bG9hZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4gbV9wYXlsb2FkOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFLZXlNZXNz
YWdlVHlwZT4gbV90eXBlOwogfTsKIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpj
aGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
K3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6Y2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJh
Y2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIFBhcnNl
ZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UoYnVmZmVyKTsKICAgICBpZiAo
IXBhcnNlZFJlc3BvbnNlTWVzc2FnZSkgewpAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcjo6a2V5c1VwZGF0ZURvbmVDYWxsYmFjaygpCiAgICAgbV9zZXNz
aW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lv
blRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQor
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7CiAgICAgR1NUX0VSUk9SKCJDRE0gZXJy
b3IiKTsKICAgICBHU1RfTUVNRFVNUCgiZXJyb3IgZHVtcCIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVz
c2FnZS0+c2l6ZSgpKTsKQEAgLTQ4OCw3ICs0ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
blRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQog
ICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlw
ZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhU2hhcmVkQnVmZmVyLAordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1
ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YVNoYXJlZEJ1
ZmZlciwKICAgICBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwpAQCAtNTA2LDcgKzUwNiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
VGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0
CiAgICAgICAgIG1faW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCksIG1faW5pdERhdGEucGF5bG9h
ZCgpLT5zaXplKCksIG51bGxwdHIsIDAsICZtX3RodW5kZXJTZXNzaW9uQ2FsbGJhY2tzLCB0aGlz
LCAmc2Vzc2lvbik7CiAgICAgaWYgKCFzZXNzaW9uKSB7CiAgICAgICAgIEdTVF9FUlJPUigiQ291
bGQgbm90IGNyZWF0ZSBzZXNzaW9uIik7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGlu
aXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOwogICAgICAgICBj
YWxsYmFjayhpbml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCB7IH0sIGZhbHNlLCBGYWlsZWQpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUs
IGNvbnN0IEF0CiAKICAgICBhdXRvIGdlbmVyYXRlQ2hhbGxlbmdlID0gW3RoaXMsIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0
RGF0YS5wYXlsb2FkKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBp
bml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOwogICAgICAgICBpZiAobV9zZXNzaW9uSUQu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBHU1RfRVJST1IoImNvdWxkIG5vdCBjcmVhdGUgc2Vz
c2lvbiBpZCIpOwogICAgICAgICAgICAgY2FsbGJhY2soaW5pdERhdGEucmVsZWFzZU5vbk51bGwo
KSwgeyB9LCBmYWxzZSwgRmFpbGVkKTsKQEAgLTU0NSwxMyArNTQ1LDEzIEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcjo6c2Vzc2lvbkZhaWx1cmUoKQogICAgIG1fc2Vzc2lvbkNoYW5n
ZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVy
Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJh
Y2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSBtX3Nlc3Npb25JRCk7CiAKICAg
ICBHU1RfVFJBQ0UoIlVwZGF0aW5nIHNlc3Npb24gJXMiLCBzZXNzaW9uSUQudXRmOCgpLmRhdGEo
KSk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxi
YWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3Vj
Y2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBt
dXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKHN1
Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghcmVzcG9uc2VNZXNzYWdlKQpAQCAtNTYyLDcgKzU2
Miw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShjb25z
dCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5CiAgICAgICAgICAgICAgICAgUGFyc2VkUmVz
cG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShyZXNwb25zZU1lc3NhZ2UpOwogICAg
ICAgICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAg
ICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3Bv
bnNlTWVzc2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAgICAgICBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBh
eWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygiZ290IG1lc3NhZ2Ugb2Yg
c2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfTUVN
RFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAg
ICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0
LApAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9h
ZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiB7CiAgICAgQVNT
RVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSBtX3Nlc3Npb25JRCk7CiAKLSAgICBt
X3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNl
TWVzc2FnZSkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQo
W3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKICAg
ICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAg
ICAgICAgICAgIGlmICghcmVzcG9uc2VNZXNzYWdlKQpAQCAtNTk3LDcgKzU5Nyw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklECiAgICAgICAgICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdl
IHBhcnNlZFJlc3BvbnNlTWVzc2FnZShyZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAg
IEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGlmIChwYXJz
ZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5w
YXlsb2FkKCkpOworICAgICAgICAgICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBt
ZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2Fn
ZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAg
ICAgY2FsbGJhY2soc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bWFrZV9wYWlyKHBh
cnNlZFJlc3BvbnNlTWVzc2FnZS50eXBlT3IoTWVkaWFLZXlNZXNzYWdlVHlwZTo6TGljZW5zZVJl
cXVlc3QpLApAQCAtNjQwLDcgKzY0MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRl
cjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2VuCiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIG1fc2Vzc2lvbklEID09IHNlc3Npb25JRCk7CiAK
LSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3Ro
aXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlm
ICghYnVmZmVyKQpAQCAtNjQ5LDcgKzY0OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1
bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2VuCiAg
ICAgICAgICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2Fn
ZShidWZmZXIpOwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2Up
OwogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZN
b3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAgICAg
ICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVz
cG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygi
c2Vzc2lvbiAlcyByZW1vdmVkLCBtZXNzYWdlIGxlbmd0aCAlenUiLCBtX3Nlc3Npb25JRC51dGY4
KCkuZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsYmFj
ayhtX2tleVN0b3JlLmFsbEtleXNBcyhNZWRpYUtleVN0YXR1czo6UmVsZWFzZWQpLCBXVEZNb3Zl
KG1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvQ0RNVGh1bmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKaW5kZXggY2RkOGRhMjExMjNjMTc5MWFlMmZiNjQz
OWZmMmQ2ZmEwZDJlYjIxYy4uMTAyMGUxNTMyMjcxYjUzNTFlMTA2ZGRlOGYyMWVhNTQwNWE5YzIz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9DRE1UaHVuZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKQEAgLTkzLDggKzkzLDggQEAgcHVibGljOgogICAg
IHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2VydmVy
Q2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkg
Y29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
LCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwor
ICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9u
SWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6CkBAIC0xMTAsNyArMTEw
LDcgQEAgcHVibGljOgogICAgIC8vIENETUluc3RhbmNlCiAgICAgSW1wbGVtZW50YXRpb25UeXBl
IGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9u
VHlwZTo6VGh1bmRlcjsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNv
bnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmll
cnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAg
dm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQg
c2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fa2V5U3lzdGVtOyB9CiAgICAg
UmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAtMTI2
LDggKzEyNiw4IEBAIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXIgZmluYWwgOiBwdWJs
aWMgQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgewogcHVibGljOgogICAgIENETUluc3RhbmNlU2Vz
c2lvblRodW5kZXIoQ0RNSW5zdGFuY2VUaHVuZGVyJik7CiAKLSAgICB2b2lkIHJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lk
IHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmlu
YWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZp
bmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9z
ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAg
ICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVt
b3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKQEAgLTE0MSwxNCArMTQxLDE0IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgQ0RNSW5zdGFuY2VUaHVuZGVyKiBjZG1JbnN0YW5jZVRodW5k
ZXIoKSBjb25zdDsKIAotICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9IHZvaWQgKENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OiopKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAg
IHVzaW5nIE5vdGlmaWNhdGlvbiA9IHZvaWQgKENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6Oiop
KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB1c2luZyBD
aGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47Ci0gICAgdXNpbmcg
U2Vzc2lvbkNoYW5nZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoYm9vbCwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJik+OworICAgIHVzaW5nIFNlc3Npb25DaGFuZ2VkQ2FsbGJhY2sgPSBGdW5jdGlv
bjx2b2lkKGJvb2wsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT47CiAKLSAgICB2
b2lkIGNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOwor
ICAgIHZvaWQgY2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpOwogICAgIHZvaWQga2V5VXBkYXRlZENhbGxiYWNrKEtleUlEVHlwZSYmKTsK
ICAgICB2b2lkIGtleXNVcGRhdGVEb25lQ2FsbGJhY2soKTsKLSAgICB2b2lkIGVycm9yQ2FsbGJh
Y2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBlcnJvckNhbGxiYWNrKFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBDRE1JbnN0YW5jZVNlc3Npb246Oktl
eVN0YXR1cyBzdGF0dXMoY29uc3QgS2V5SURUeXBlJikgY29uc3Q7CiAgICAgdm9pZCBzZXNzaW9u
RmFpbHVyZSgpOwogCkBAIC0xNTksNyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICBJbml0RGF0YSBt
X2luaXREYXRhOwogICAgIE9wZW5DRE1TZXNzaW9uQ2FsbGJhY2tzIG1fdGh1bmRlclNlc3Npb25D
YWxsYmFja3MgeyB9OwogICAgIEJveFB0cjxPcGVuQ0RNU2Vzc2lvbj4gbV9zZXNzaW9uOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWVzc2FnZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gbV9tZXNzYWdlOwogICAgIGJvb2wgbV9uZWVkc0luZGl2aWR1YWxpemF0aW9u
IHsgZmFsc2UgfTsKICAgICBWZWN0b3I8Q2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2s+IG1fY2hh
bGxlbmdlQ2FsbGJhY2tzOwogICAgIFZlY3RvcjxTZXNzaW9uQ2hhbmdlZENhbGxiYWNrPiBtX3Nl
c3Npb25DaGFuZ2VkQ2FsbGJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVV
dGlsaXRpZXMuY3BwCmluZGV4IDNmODVhZmU3M2M4NDI3NjI5OTdkNWFiYzJkN2JjMDdmN2MwMWI5
YzMuLmVhODkwZjY3ZGEyMTM4N2Y0MGRhNjUxYTBjYTVjNzM0OTNlODRmNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVy
RU1FVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKQEAgLTcxLDcgKzcxLDcgQEAg
c3RhdGljIHZvaWQgbWFya3VwRXJyb3IoR01hcmt1cFBhcnNlQ29udGV4dCosIEdFcnJvciosIGdw
b2ludGVyKQogCiBzdGF0aWMgR01hcmt1cFBhcnNlciBtYXJrdXBQYXJzZXIgeyBtYXJrdXBTdGFy
dEVsZW1lbnQsIG1hcmt1cEVuZEVsZW1lbnQsIG1hcmt1cFRleHQsIG1hcmt1cFBhc3N0aHJvdWdo
LCBtYXJrdXBFcnJvciB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFj
dENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKK1Jl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRl
ZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKIHsKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOwogICAgIGlm
ICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVh
bWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggZDVhZmY4NDVmNDA5YTc1ZDcxYTk4NDBhY2YxZDM0MmE0
NjQ3ZDJmMS4uMjdkZDRlYWUwZDJlMDFhYjRkODRjMGFiYzQyNGViYjEwMTA0YzA0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCkBAIC0zOCw4ICszOCw3IEBA
IEdTVF9ERUJVR19DQVRFR09SWV9FWFRFUk4od2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9u
X2RlY3J5cHRfZGVidWdfY2F0ZWdvcnkpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbml0
RGF0YSB7CiBwdWJsaWM6Ci0gICAgSW5pdERhdGEoKQotICAgICAgICA6IG1fcGF5bG9hZChTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpKSB7IH0KKyAgICBJbml0RGF0YSgpID0gZGVmYXVsdDsKIAogICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhbiBlbnVtIGZvciBzeXN0ZW0gdXVpZHMgZm9yIGJl
dHRlciB0eXBlIHNhZmV0eS4KICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBH
c3RCdWZmZXIqIGluaXREYXRhKQpAQCAtNTAsMTMgKzQ5LDE3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIEdTVF9DQVRfTEVWRUxfTE9HKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNy
eXB0X2RlYnVnX2NhdGVnb3J5LCBHU1RfTEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFw
ICVzIHByb3RlY3Rpb24gZGF0YSIsIHN5c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0g
ZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkp
OworICAgICAgICBpZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZCht
YXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXls
b2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAotICAg
IEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYg
cGF5bG9hZCkKKyAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQoc3lz
dGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RGTW92ZShw
YXlsb2FkKSkpCiAgICAgeworICAgICAgICBpZiAocGF5bG9hZCkgeworICAgICAgICAgICAgaWYg
KGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZC0+bWFrZUNv
bnRpZ3VvdXMoKSkpCisgICAgICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXls
b2FkLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBhcHBl
bmQoSW5pdERhdGEmJiBpbml0RGF0YSkKQEAgLTcyLDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9idXN0LCBzbyBiZSBjYXJlZnVsIGhlcmUhCiAgICAgICAg
IG1fc3lzdGVtSWQgPSBpbml0RGF0YS5tX3N5c3RlbUlkOwogCi0gICAgICAgIG1fcGF5bG9hZC0+
YXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOworICAgICAgICBtX3BheWxvYWQuYXBwZW5kKCpp
bml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAgIGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkOyB9CisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQu
Z2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29uc3QgeyByZXR1cm4gbV9z
eXN0ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgpIGNvbnN0CiAgICAg
ewpAQCAtODYsMTEgKzg5LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwog
ICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVl
ZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
KTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3BheWxvYWQ7CiB9
OwogCiBjbGFzcyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oCmluZGV4IDcxOGI5YmQzMTVlY2M2NzA3ODljNjVjYmFhYTAzNDkyOTc1ZTcyZDMuLjY5Mjhh
NjNlOTcxYzdjMzVlODg0NGVlZjczYmZhNDRhOGQ4YzAzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGb250
Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRTZWxl
Y3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9u
dFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVh
dHVyZVNldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQppbmRleCA4M2U2YWY3YjAzODkyODM4
YzNiZmVhMWMwYzExYWE3ZmNmOGE3N2E5Li42OGJjYzg4NDZhOGIxZjBmN2NiY2YxNDAzMTk2NmVk
OTI0MzIyYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpAQCAtNDgsNyArNDgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1l
bnQoKQogewotICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFu
Y2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIG1f
ZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERh
dGE6ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogfQog
CiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuaAppbmRleCAwOWMxYzQ1YzQ1OTNhZWE0MzE4MzBkMjE1Yjdl
NzQ4NTJjMTllMzdmLi5mYTAwMDgxMTYwNjY5N2RjNWM1MTEyMzMzYzkwYzhjOTJiNGI2NzA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTM1LDkgKzM1LDEwIEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0cnVjdCBCaWdFbmRpYW5VU2hvcnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7
CiBzdHJ1Y3QgRU9UUHJlZml4OwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IEVPVEhl
YWRlciB7CiAgICAgRU9USGVhZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5j
cHAKaW5kZXggMmNmYTg1NGMwMjI2NjhhY2MwMDczN2MxZWJiMzVmZjM0OGQ1OGUyYi4uMGZhOGYz
MDZhZDk1MmQwNmEwOTI5N2QwYjFkMjg3Yjg5ODgzMmEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VmVydGljYWxEYXRhLmNwcApAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBU
YWJsZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2YW5jZVdpZHRocykKIHsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVU
YWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEu
b3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6Okho
ZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpIaGVhVGFi
bGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00
MjQsNyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVydGljYWxEYXRh
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQgT3BlblR5cGVWZXJ0
aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0
YSkKIHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMgcmVxdWlyZWQgZm9y
IGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFn
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBl
OjpWaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVhID0gT3BlblR5
cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAo
IXZoZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIE9wZW5UeXBl
VmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9y
bURhdGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vi
c3RpdHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUo
T3BlblR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5U
eXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpHU1VCVGFi
bGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NVQlRhYmxlPihi
dWZmZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3ViLT5nZXRWZXJ0aWNhbEdseXBoU3Vi
c3RpdHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdldCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxp
dGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRl
VXRpbGl0aWVzLmgKaW5kZXggYTYyNzE5YjE3MTlhNzRmOTc2OTIyMTlkZjVmN2FhZWRjNDkwNjQ2
Ni4uMGRiNGFmYWRiM2Y3NDJiODNhNGUxNmNmMzcxODcwYTJiMDQwNGVhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRl
VXRpbGl0aWVzLmgKQEAgLTQzLDcgKzQzLDcgQEAgZW51bSBEV1JJVEVfRk9OVF9TVFJFVENIOwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIERp
cmVjdFdyaXRlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNWYxMGY3MzkyZDA0
YzM0NGQxMmNlZTQyNjZlZGIxZWU5OTcxYzRlZi4uMDhmYzlmMTllYWVhOTQ4M2VhNThlYzFhZWVk
ZDQ1NzI1NmNlMjdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zNiwxMiArMzYs
MTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dGb250KiBDR0ZvbnRSZWY7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsK
IGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVz
Owogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwog
dHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2Rl
ckRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZURlY29kZXJEaXJlY3QyRC5jcHAKaW5kZXggNjI5ZTBlNjFhMTA0YzU2N2ExZDRlZGNiN2U1Nzk3
ZGNmNjdjNmU4ZS4uNzczNTczOWI5MzM0ZjQ0ZDk5YTNmMTJmZmM1YmY3YjQxZjdjYzZlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2Rl
ckRpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCkBAIC0yNzIsNyArMjcyLDcgQEAgUGxhdGZvcm1JbWFn
ZVB0ciBJbWFnZURlY29kZXJEaXJlY3QyRDo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWIKICAgICByZXR1cm4gYml0bWFwOwogfQogCi12b2lkIEltYWdlRGVjb2RlckRp
cmVjdDJEOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
Cit2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmICghYWxsRGF0YVJlY2Vp
dmVkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCmluZGV4IDRmNDcyNTg2
YjQyNGJkYTFjZjZmYTAxNDNjYmEyM2QwMzAwMTZlNDUuLmMyMzY1ZmQ3NDRjNjExOGMxOTk5ZTA1
YjgwMmVkNWI0OGYzNjQ4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCkBAIC00MSw3ICs0MSw3
IEBAIGNsYXNzIEltYWdlRGVjb2RlckRpcmVjdDJEIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2Rl
ciB7CiBwdWJsaWM6CiAgICAgSW1hZ2VEZWNvZGVyRGlyZWN0MkQoKTsKIAotICAgIHN0YXRpYyBS
ZWY8SW1hZ2VEZWNvZGVyRGlyZWN0MkQ+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFnZURlY29k
ZXJEaXJlY3QyRD4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBJbWFnZURlY29kZXJEaXJlY3QyRCgpKTsKICAgICB9CkBAIC03Miw3ICs3Miw3IEBA
IHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29u
c3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNo
cm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRh
UmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAg
ICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAKaW5kZXgg
MGQ4ODIwZTlmM2Q2ZmQ3NzM1ZDU3MGIzNjQxNDg4ZjUzYmQ3ZWNlOS4uMmQ5NzI3MGE3MzQ4MzQ4
OTNlNzhjODFmZjBlYzViYjVkZmVjM2Y4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCiAKIC8vIFRoaXMgZnVuY3Rpb24gbG9hZHMgcmVzb3VyY2VzIGZy
b20gV2ViS2l0Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRv
QnVmZmVyKGNvbnN0IGNoYXIqKTsKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKaW5kZXggZDk1NmQ5ZTc2MjVk
NWJiNWE3MGYwNjkzZTc3OThlZTkwODQ5ZjE2NS4uMzNjOTVlYzMzMzNhOTIwYzY0YTAxODE3NTFl
YjRhNTA1ZWYxYTdhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTEsNyAr
NTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSB7CiAKLXN0YXRpYyB1bnNp
Z25lZCBjb3B5RnJvbVNoYXJlZEJ1ZmZlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxl
bmd0aCwgY29uc3QgU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpCitzdGF0aWMgdW5zaWduZWQg
Y29weUZyb21TaGFyZWRCdWZmZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgs
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikKIHsKICAgICB1bnNp
Z25lZCBieXRlc0V4dHJhY3RlZCA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDog
c2hhcmVkQnVmZmVyKSB7CkBAIC0xMzUsNyArMTM1LDcgQEAgYm9vbCBtYXRjaGVzQ1VSU2lnbmF0
dXJlKGNoYXIqIGNvbnRlbnRzKQogCiB9CiAKLVJlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4g
U2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKK1JlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gU2NhbGFibGVJbWFn
ZURlY29kZXI6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlv
biBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCiB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxlbmd0aE9mTG9uZ2Vz
dFNpZ25hdHVyZSA9IDE0OyAvLyBUbyB3aXQ6ICJSSUZGPz8/P1dFQlBWUCIKICAgICBjaGFyIGNv
bnRlbnRzW2xlbmd0aE9mTG9uZ2VzdFNpZ25hdHVyZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIu
aAppbmRleCAzMmQ0ZTZmOGI4ZmExNGExM2JmYjYyMmQ4NzU3MDg3OThiOTlkYWEyLi45YzQwNTU3
ODI0MWQwYzUxMjcwMjk1MTVjMjIxMjY1OGY4YzRmNjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNv
ZGVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyBudWxscHRy
IGlmIHdlIGNhbid0IHNuaWZmIGEgc3VwcG9ydGVkIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgZGF0
YSAocG9zc2libHkKICAgICAvLyBiZWNhdXNlIHRoZXJlIGlzbid0IGVub3VnaCBkYXRhIHlldCku
Ci0gICAgc3RhdGljIFJlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBjcmVhdGUoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KTsKIAogICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVs
dGlwbHlBbHBoYTsgfQogCkBAIC03MCwxNiArNzAsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gbV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxldGU7CiAg
ICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIG92ZXJyaWRlCisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZQogICAgIHsKICAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1
cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgaWYgKGRhdGEuZGF0YSgpKSB7Ci0gICAgICAgICAgICAvLyBTaGFyZWRCdWZmZXI6OmRh
dGEoKSBjb21iaW5lcyBhbGwgc2VnbWVudHMgaW50byBvbmUgaW4gY2FzZSB0aGVyZSdzIG1vcmUg
dGhhbiBvbmUuCi0gICAgICAgICAgICBtX2RhdGEgPSBkYXRhLmJlZ2luKCktPnNlZ21lbnQuY29w
eVJlZigpOwotICAgICAgICB9CisgICAgICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1h
a2VDb250aWd1b3VzKCk7CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0YS0+ZGF0YSgpKQorICAg
ICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGEtPmJlZ2luKCktPnNlZ21lbnQuY29weVJl
ZigpOwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1
czo6VHlwZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0
YSA9IHRydWU7CiAgICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFsbERhdGFSZWNlaXZlZCk7CkBA
IC0xOTUsNyArMTk0LDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhv
dFNwb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogcHJvdGVj
dGVkOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CisgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CiAgICAg
VmVjdG9yPFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUsIDE+IG1fZnJhbWVCdWZmZXJDYWNoZSBX
VEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CiAgICAgbXV0YWJsZSBMb2NrIG1fbG9jazsKICAg
ICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcApp
bmRleCA3YzYwM2ZkODM1OGMyMTRhYzkxODRmMzE4OTk3MmZlODQxYjYxZTgwLi4yNmY4ODY0OTZl
NWE1YTE0ZTI4YWZiMWFmYTliZmMzMDE3N2Y1MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFk
ZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIEFWSUZJbWFnZVJlYWRlcjo6QVZJRkltYWdlUmVhZGVy
KFJlZlB0cjxBVklGSW1hZ2VEZWNvZGVyPiYmIGRlY29kZXIpCiAKIEFWSUZJbWFnZVJlYWRlcjo6
fkFWSUZJbWFnZVJlYWRlcigpID0gZGVmYXVsdDsKIAotYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBh
cnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQorYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKIHsKICAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01lbW9yeShtX2F2aWZEZWNvZGVyLmdl
dCgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpICE9IEFWSUZfUkVTVUxUX09LKQogICAgICAg
ICByZXR1cm4gYWxsRGF0YVJlY2VpdmVkID8gbV9kZWNvZGVyLT5zZXRGYWlsZWQoKSA6IGZhbHNl
OwpAQCAtNTgsNyArNTgsNyBAQCBib29sIEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29u
c3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBhbAogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIEFWSUZJbWFnZVJlYWRlcjo6ZGVjb2RlRnJhbWUoc2l6ZV90IGZyYW1l
SW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmIGJ1ZmZlciwgY29uc3QgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkKK3ZvaWQgQVZJRkltYWdlUmVhZGVyOjpkZWNvZGVGcmFt
ZShzaXplX3QgZnJhbWVJbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYgYnVmZmVyLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkKIHsKICAgICBp
ZiAobV9kZWNvZGVyLT5mYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdl
UmVhZGVyLmgKaW5kZXggY2JjYTBiOGMxMjRiZmYwZmZjMzMwMWJhMzViY2UwMWVkMjcyMmRmOC4u
NDk2ZjY5ZjgxMmJkNzViMGVkYTYzNTdiYWE4NjBjZmNjYjViYTRiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJ
bWFnZVJlYWRlci5oCkBAIC0zOSw4ICszOSw4IEBAIHB1YmxpYzoKICAgICBBVklGSW1hZ2VSZWFk
ZXIoUmVmUHRyPEFWSUZJbWFnZURlY29kZXI+JiYpOwogICAgIH5BVklGSW1hZ2VSZWFkZXIoKTsK
IAotICAgIGJvb2wgcGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIGRlY29kZUZyYW1lKHNpemVfdCBpbmRl
eCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQmKTsKKyAgICBib29sIHBhcnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgZGVjb2Rl
RnJhbWUoc2l6ZV90IGluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiwgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKTsKICAgICBzaXplX3QgaW1hZ2VDb3Vu
dCgpIGNvbnN0OwogICAgIGRvdWJsZSByZXBldGl0aW9uQ291bnQoKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAv
Qk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3Mjc2OWE2OTI2ZWMyNDE5YmY2NjM4MjUyOGQzZDc3
MjBhNTRhZGFlLi5mNzQ1NWMxNDZjN2U4YWViMDRjYzhjNTZmMzMwZTJhMDFmM2JhNzJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1h
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDYsNyArNDYsNyBAQCBCTVBJbWFnZURlY29k
ZXI6OkJNUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcAogewogfQogCi12b2lkIEJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRC
dWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBCTVBJbWFnZURlY29kZXI6
OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VE
ZWNvZGVyLmgKaW5kZXggYzdjN2NhODFmZWE2YjhhNzc0YmIzMDhlNTM4ZGNkMDQ4Yzk5NWVlYS4u
NjRkZWQ2YWJiZTJjMGEyOWIxMWY5ZmI1ZWNkNmI0ODcyNGQ1ODk3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZURlY29kZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUlt
YWdlRGVjb2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICJibXAiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIFNjYWxhYmxlSW1hZ2VE
ZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIGZpbmFsOwogICAg
IC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gQmUgY2FyZWZ1bCB0
byBhdm9pZAogICAgIC8vIGFjY2Vzc2luZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxseSB3aGVu
IGNhbGxpbmcgdGhpcyBmcm9tIGluc2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaAppbmRleCA0ODQ0
ZjM4MGRjMTdlYzcwNDU4OGZiMTJmNTNlYWJjNmQyMGU2MGY0Li5iZDQzMGU4YThiZWEyYzgxNmIy
YzUyMmJmNWJhNzg4NDZjMzhlMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaApAQCAtNDIsNyAr
NDIsNyBAQCBjbGFzcyBCTVBJbWFnZVJlYWRlciB7CiBwdWJsaWM6CiAgICAgLy8gUmVhZCBhIHZh
bHVlIGZyb20gfGRhdGFbb2Zmc2V0XXwsIGNvbnZlcnRpbmcgZnJvbSBsaXR0bGUgdG8gbmF0aXZl
CiAgICAgLy8gZW5kaWFubmVzcy4KLSAgICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJlYWRVaW50
MTYoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkKKyAg
ICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJlYWRVaW50MTYoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQpCiAgICAgewogICAgICAgICB1
aW50MTZfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNweSgmcmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zm
c2V0XSwgMik7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAKLSAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29uc3Qg
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkKKyAgICBzdGF0aWMg
aW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQpCiAgICAgewogICAgICAgICB1aW50MzJfdCBy
ZXN1bHQ7CiAgICAgICAgIG1lbWNweSgmcmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgNCk7
CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBCTVBJbWFnZVJlYWRlcihTY2FsYWJsZUlt
YWdlRGVjb2RlciogcGFyZW50LCBzaXplX3QgZGVjb2RlZEFuZEhlYWRlck9mZnNldCwgc2l6ZV90
IGltZ0RhdGFPZmZzZXQsIGJvb2wgdXNlc0FuZE1hc2spOwogCiAgICAgdm9pZCBzZXRCdWZmZXIo
U2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogYnVmZmVyKSB7IG1fYnVmZmVyID0gYnVmZmVyOyB9
Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9k
YXRhID0gJmRhdGE7IH0KKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KIAogICAgIC8vIERvZXMgdGhl
IGFjdHVhbCBkZWNvZGluZy4gSWYgfG9ubHlTaXplfCBpcyB0cnVlLCBkZWNvZGluZyBvbmx5CiAg
ICAgLy8gcHJvZ3Jlc3NlcyBhcyBmYXIgYXMgbmVjZXNzYXJ5IHRvIGdldCB0aGUgaW1hZ2Ugc2l6
ZS4gUmV0dXJucwpAQCAtMjcyLDcgKzI3Miw3IEBAIHByaXZhdGU6CiAgICAgU2NhbGFibGVJbWFn
ZURlY29kZXJGcmFtZSogbV9idWZmZXI7CiAKICAgICAvLyBUaGUgZmlsZSB0byBkZWNvZGUuCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKIAogICAgIC8vIEFu
IGluZGV4IGludG8gfG1fZGF0YXwgcmVwcmVzZW50aW5nIGhvdyBtdWNoIHdlJ3ZlIGFscmVhZHkg
ZGVjb2RlZC4KICAgICBzaXplX3QgbV9kZWNvZGVkT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVD
YWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9J
bWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAppbmRleCA2MDEyMDM3NGY5YzQzMTY4YTY1MjFiNjlj
NTRhZmJlMmEwMGY1NWY3Li40YTIxMjU1YThjMGZiNjc4ZTRhYWRkNzY2M2ViN2Y5MThlN2ZlOTRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWly
by9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcApAQCAtMzcs
NyArMzcsOSBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNv
bnN0CiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8
dWludDMyX3QqPihtX3BpeGVsc1B0cikpLAogICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMyLCBz
aXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpLCBzaXplKCkud2lkdGgoKSAqIHNpemVvZih1
aW50MzJfdCkpKTsKICAgICBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tleV90IHNfc3VyZmFjZURh
dGFLZXk7Ci0gICAgY2Fpcm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRhKHN1cmZhY2UuZ2V0KCksICZz
X3N1cmZhY2VEYXRhS2V5LCBtX3BpeGVscy5nZXQoKSwgW10odm9pZCogZGF0YSkgeyBzdGF0aWNf
Y2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4oZGF0YSktPmRlcmVmKCk7IH0pOworICAg
IGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0YShzdXJmYWNlLmdldCgpLCAmc19zdXJmYWNlRGF0
YUtleSwgbV9waXhlbHMuZ2V0KCksIFtdKHZvaWQqIGRhdGEpIHsKKyAgICAgICAgc3RhdGljX2Nh
c3Q8RGF0YVNlZ21lbnQqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICB9KTsKIAogICAgIHJldHVybiBz
dXJmYWNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBlNmFiZTBkOTU0NGI2
YzE4NWM2NDVkZWNlMDlmMjNmOTU2NjYwN2NiLi5iOWVjMDFiOGFlOGU4ZDI5YmM3ODI1MjZlMDc2
NTI1NTFlMzU5YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzgsNyArMzgs
NyBAQCBHSUZJbWFnZURlY29kZXI6OkdJRkltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBHSUZJbWFnZURlY29kZXI6On5HSUZJbWFn
ZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEdJRkltYWdlRGVj
b2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURl
Y29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJ
bWFnZURlY29kZXIuaAppbmRleCAzNWRmMzNmNmRmYzQ4M2ZkODQ3MTM2NmFlNTNiYjBiOTYxY2Fl
ZDJlLi5jNzQ3MTk5OTliOTg2YzFjZWY4NDc4NzU5ZDIzNzE4YzkwNDJkM2ViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNv
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFNjYWxh
YmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gImdpZiJfczsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAg
IGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CiAgICAgc2l6ZV90IGZyYW1lQ291
bnQoKSBjb25zdCBmaW5hbDsKICAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkg
Y29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCmluZGV4IDQyMTQ2ZTAzMjkzMjM2OTk3
ODllYjVlNDJhZjRjNzNkMzRhYjljYzYuLjEwODJmZGYwZGZmMjM5MWU1NjUzMGE0MWY4N2JhNDM5
ODIzMjc1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCkBAIC0yMzcsNyArMjM3LDcgQEAgcHVi
bGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQorICAgIHZvaWQgc2V0
RGF0YShXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkg
eyBtX2RhdGEgPSAmZGF0YTsgfQogICAgIC8vIEZJWE1FOiBoYWx0QXRGcmFtZSBzaG91bGQgYmUg
c2l6ZV90LgogICAgIGJvb2wgZGVjb2RlKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6R0lGUXVl
cnksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKTsKIApAQCAtMzE2LDYgKzMxNiw2IEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxHSUZGcmFtZUNvbnRleHQ+ID4gbV9mcmFtZXM7
CiAgICAgc2l6ZV90IG1fY3VycmVudERlY29kaW5nRnJhbWU7CiAKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOwogICAgIGJvb2wg
bV9wYXJzZUNvbXBsZXRlZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IGM3
MTdjNDVkMzA1N2MwNTUzNmVlNjA1MGY5Mzk3MDQ2ZDEwZGYyYTcuLmMwNzEzNDViOGJmMzY5Yjgw
MjcxZmJkZjBhMGNlMDE3NGYwNTAzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBA
IC01Miw3ICs1Miw3IEBAIElDT0ltYWdlRGVjb2Rlcjo6SUNPSW1hZ2VEZWNvZGVyKEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiAKIElDT0ltYWdlRGVjb2Rl
cjo6fklDT0ltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBJQ09JbWFnZURlY29kZXI6
OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQg
SUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNv
L0lDT0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCmluZGV4IGZiN2E5MDNiMmEwNzUzOTQ5MTdhYmJiZjEx
YjFjZWQ4M2ZmNDMyYTAuLjEwZWU5YjRkMmU4YzlkODg3ZTFkMmI4YmUxMzliYjc0MjcxZDU3YTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9J
Q09JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAg
ICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24o
KSBjb25zdCBmaW5hbCB7IHJldHVybiAiaWNvIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAg
ICBJbnRTaXplIHNpemUoKSBjb25zdCBmaW5hbDsKICAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5k
ZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdCBmaW5hbDsKICAgICBib29sIHNldFNp
emUoY29uc3QgSW50U2l6ZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAK
aW5kZXggZmQzNDViYjc4NmZmMDhkOTQ2NTkzMGFhNGRmNDhkZjE3YWJmMzA1Yy4uNWNmYWM5ZjIz
NTdlMmUxMmM2ODY0MDBiMjY3ODhhZTdmOGJlMTM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURl
Y29kZXIuY3BwCkBAIC0yMjIsNyArMjIyLDcgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBl
Z19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKIAogc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7Ci0gICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVmZmVyOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlciA9IGluZm8t
Pm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkgewogICAgICAgICBp
ZiAoIWlzSUNDTWFya2VyKG1hcmtlcikpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIzNiwx
MyArMjM2LDEzIEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShq
cGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICAgICAgdW5zaWduZWQgbWFya2VyU2l6ZSA9IG1hcmtlci0+ZGF0YV9sZW5ndGggLSBp
Y2NIZWFkZXJTaXplOwotICAgICAgICBidWZmZXItPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7
CisgICAgICAgIGJ1ZmZlci5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
bWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOwogICAgIH0KIAotICAg
IGlmIChidWZmZXItPmlzRW1wdHkoKSkKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVyOworICAgIHJldHVybiBidWZm
ZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKQEAgLTMyMCw3ICszMjAs
NyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYnl0ZXNUb1NraXAgPSBzdGQ6Om1heChudW1CeXRlcyAt
IGJ5dGVzVG9Ta2lwLCBzdGF0aWNfY2FzdDxsb25nPigwKSk7CiAgICAgfQogCi0gICAgYm9vbCBk
ZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6
ZSkKKyAgICBib29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkKICAgICB7CiAgICAgICAgIG1fZGVjb2RpbmdTaXpl
T25seSA9IG9ubHlTaXplOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVj
b2Rlci5jcHAKaW5kZXggYmVjZjY0NTAyNzdlZWI3NGIwOWRlNTJlZTE4MmZmNmUxMWVkMjc2Mi4u
MjA0NzNmMGVlZWJiNTZjNzEzMTRmNjU1NmJkYTA5MDMzNDkwNzQ0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzgwLDcgKzM4MCw3IEBAIHZv
aWQgSlBFRzIwMDBJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKICAgICB9CiAKICAgICBzdHJ1Y3QgUmVhZGVyIHsKLSAgICAgICAgU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YTsKKyAgICAgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQmIGRhdGE7CiAgICAgICAgIHNpemVfdCBvZmZzZXQ7CiAgICAgfSByZWFk
ZXIgPSB7ICptX2RhdGEsIDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBj
MTJjNDU5YTVhM2U1YjM1MWM1YmNjNjJiZjAwYjhhMjgxYmQ1YmEzLi40Y2JkMzIzZDlhNzUwMjZl
Zjg2NThmMzgxNmRkNzM4ZDM3Y2E4ZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApA
QCAtMTUyLDcgKzE1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9yZWFkT2Zmc2V0ID0gMDsKICAg
ICB9CiAKLSAgICBib29sIGRlY29kZShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBk
YXRhLCBib29sIHNpemVPbmx5LCB1bnNpZ25lZCBoYWx0QXRGcmFtZSkKKyAgICBib29sIGRlY29k
ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBz
aXplT25seSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpCiAgICAgewogICAgICAgICBtX2RlY29kaW5n
U2l6ZU9ubHkgPSBzaXplT25seTsKICAgICAgICAgUE5HSW1hZ2VEZWNvZGVyKiBkZWNvZGVyID0g
c3RhdGljX2Nhc3Q8UE5HSW1hZ2VEZWNvZGVyKj4ocG5nX2dldF9wcm9ncmVzc2l2ZV9wdHIobV9w
bmcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCmluZGV4IDAyZjFiMDlkYmM3NjUx
NjAxZjkyMmRkZTI5ZjgwNWE2NTg3MWUyZDIuLmIxYmVjNTVlNzhjNDM0ODAxYzI1NGFjZTBkZjU5
OTMxYTM2Yjc0YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDcsNyAr
NDcsNyBAQCBXRUJQSW1hZ2VEZWNvZGVyOjpXRUJQSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZQogCiBXRUJQSW1hZ2VEZWNvZGVyOjp+V0VC
UEltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpzZXRE
YXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIFdFQlBJ
bWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CkBA
IC0xMzIsNyArMTMyLDcgQEAgdm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUoc2l6ZV90IGZy
YW1lSW5kZXgsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIC8vIFRoaXMgY2FuIGJlIGV4ZWN1
dGVkIGJvdGggaW4gdGhlIG1haW4gdGhyZWFkICh3aGVuIG5vdCB1c2luZyBhc3luYyBkZWNvZGlu
Zykgb3IgaW4gdGhlIGRlY29kaW5nIHRocmVhZC4KICAgICAvLyBXaGVuIGV4ZWN1dGVkIGluIHRo
ZSBkZWNvZGluZyB0aHJlYWQsIGEgY2FsbCB0byBzZXREYXRhKCkgZnJvbSB0aGUgbWFpbiB0aHJl
YWQgbWF5IGNoYW5nZSB0aGUgZGF0YQogICAgIC8vIHRoZSBXZWJQRGVtdXhlciBpcyB1c2luZywg
bGVhdmluZyBpdCBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUsIHNvIHdlIG5lZWQgdG8gcHJvdGVj
dCB0aGUgZGF0YS4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gcHJvdGVj
dGVkRGF0YShtX2RhdGEpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudD4gcHJvdGVjdGVkRGF0YShtX2RhdGEpOwogICAgIFdlYlBEYXRhIGlucHV0RGF0YSA9
IHsgcHJvdGVjdGVkRGF0YS0+ZGF0YSgpLCBwcm90ZWN0ZWREYXRhLT5zaXplKCkgfTsKICAgICBX
ZWJQRGVtdXhTdGF0ZSBkZW11eGVyU3RhdGU7CiAgICAgV2ViUERlbXV4ZXIqIGRlbXV4ZXIgPSBX
ZWJQRGVtdXhQYXJ0aWFsKCZpbnB1dERhdGEsICZkZW11eGVyU3RhdGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJ
bWFnZURlY29kZXIuaAppbmRleCBhZjM2NWU5Y2Y5YzdjZTk1MzhiNjRiYTc4OWJmMDE3ZDQ4ZjZl
ZGUxLi5kZDI4YmM4OGRmNWMwZmEzYzE1NzM3ODY5YjI2MDk3M2FhYTBkMjNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURl
Y29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJw
L1dFQlBJbWFnZURlY29kZXIuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+V0VCUEltYWdlRGVjb2RlcigpOwogCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIndlYnAiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoU2hh
cmVkQnVmZmVyJiwgYm9vbCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImLCBib29sKSBmaW5hbDsKICAgICBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBm
cmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBvdmVycmlkZTsKICAgICBSZXBldGl0aW9u
Q291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IGZyYW1l
Q291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2ZyYW1lQ291bnQ7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggOTA5ZThlNzY4YWRi
NjhiYWIyODQ0NWQyODI3MzYwYTNmM2ZhMjJjMy4uYjIzNzdmZTM0MTFkMmFjNDAxNTEzYmYwOWFl
OGNjYWU3ODZiZDhlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KQEAgLTIzNiwxNCArMjM2LDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCiAKICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKFt0eXBlIGlz
RXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlRmxhdFJURkRdKSB7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJvYXJkTmFt
ZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5
cGVGbGF0UlRGRCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1f
Y2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJS
ZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1
ZmZlciAmJiByZWFkZXIucmVhZFJURkQoKmJ1ZmZlcikgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBl
IDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKICAgICB9CiAKICAgICBpZiAoW3R5cGUg
aXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVSVEZdKSB7Ci0gICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVSVEYsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRl
eHQoKSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBz
dHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlUlRGLCBt
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAh
PSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6UGFzdGVi
b2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAgICByZXR1cm4gYnVmZmVyICYmIHJlYWRl
ci5yZWFkUlRGKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJlc3Vs
dDo6RGlkTm90UmVhZFR5cGU7CkBAIC0yNTEsNyArMjUxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KICNlbmRpZiAvLyAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAKICAg
ICBpZiAoW3N1cHBvcnRlZEltYWdlVHlwZXMoKSBjb250YWluc09iamVjdDp0eXBlXSkgewotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoaXRlbUluZGV4LCB0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkp
OworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRl
Z3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgdHlwZSwgbV9wYXN0ZWJvYXJk
TmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291
bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFu
Z2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZEltYWdl
KGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCB0eXBlLCBpdGVtSW5mby5wcmVmZXJyZWRQcmVzZW50
YXRpb25TaXplKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5v
dFJlYWRUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRm
b3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVBhc3RlYm9hcmRJT1MubW0KaW5kZXggMTY3Y2VmMDJkNzhkNzk0ZGVhYThlNWRkYWY0ZGQ2NmMz
ZDJjY2E0NS4uMTZiM2Q1ZDQ0MTVkMjU4NTE1ZjY2MGE4NmFjNmNlZmJkY2RiNjRjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9T
Lm1tCkBAIC0zMzgsNyArMzM4LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5
cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKICAgICByZXR1cm4gMDsKIH0KIAotaW50NjRfdCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3Qg
U3RyaW5nJikKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiAwOwog
fQpAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25z
dCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIAogICAgIEFTU0VSVChjb250ZW50LmNs
aWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6
ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRl
bnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNs
aWVudFR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTpjb250ZW50LmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBpZiAoY29udGVu
dC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIGF1dG8gd2ViQXJjaGl2ZURhdGEg
PSBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpOwpAQCAtNDc5
LDcgKzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAog
ICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsKLSAgICAgICAg
aWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNo
aXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0
cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3Ry
aW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKKyAgICAgICAg
aWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNo
aXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0
cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3Ry
aW5nRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpu
dWxscHRyXSkKICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJl
c2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTUwMSw3ICs1MDEs
NyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFBhc3RlYm9hcmRD
dXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4oY29udGVudC5j
b250ZW50T3JpZ2luKTsKLSAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1
c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKKyAgICBbcmVwcmVzZW50
YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCkt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKIAogICAgIHJlZ2lzdGVySXRlbVRvUGFzdGVi
b2FyZChyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyLmdldCgpLCBtX3Bhc3RlYm9hcmQuZ2V0KCkp
OwogfQpAQCAtNTE0LDE0ICs1MTQsMTQgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRl
KGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIGF1dG8mIGRhdGEg
PSBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YTsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09
IGRhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHR5cGVzLnNpemUo
KTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRk
RGF0YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKKyAg
ICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKIAogICAg
IGlmIChwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhICYmICFwYXN0ZWJvYXJkSW1hZ2UucmVz
b3VyY2VNSU1FVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byB1dGlPck1JTUVUeXBlID0g
cGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGU7CiAgICAgICAgIGlmICghaXNEZWNsYXJl
ZFVUSSh1dGlPck1JTUVUeXBlKSkKICAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUgPSBVVElGcm9t
TUlNRVR5cGUodXRpT3JNSU1FVHlwZSk7CiAKLSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0
ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBp
bWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRk
RGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKil1dGlPck1JTUVUeXBlXTsK
ICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXplXTsKICAgICAgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVk
TmFtZV07CkBAIC02MzUsNyArNjM1LDcgQEAgc3RhdGljIFJldGFpblB0cjxXZWJJdGVtUHJvdmlk
ZXJSZWdpc3RyYXRpb25JbmZvTGlzdD4gY3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmEKICAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpX
ZWJQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGluZV07CiAKICAgICBpZiAoZGF0YS5oYXNT
YW1lT3JpZ2luQ3VzdG9tRGF0YSgpIHx8ICFkYXRhLm9yaWdpbigpLmlzRW1wdHkoKSkgewotICAg
ICAgICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRC
dWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNo
YXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpKSB7CiAgICAgICAgICAgICAvLyBXZSBzdGFzaCB0aGUgbGlzdCBvZiBz
dXBwbGllZCBwYXN0ZWJvYXJkIHR5cGVzIGluIHRlYW1EYXRhIGhlcmUgZm9yIGNvbXBhdGliaWxp
dHkgd2l0aCBkcmFnIGFuZCBkcm9wLgogICAgICAgICAgICAgLy8gU2luY2UgdGhlIGNvbnRlbnRz
IG9mIGl0ZW0gcHJvdmlkZXJzIGNhbm5vdCBiZSBsb2FkZWQgcHJpb3IgdG8gZHJvcCwgYnV0IHRo
ZSBwYXN0ZWJvYXJkIHR5cGVzIGFyZQogICAgICAgICAgICAgLy8gY29udGFpbmVkIHdpdGhpbiB0
aGUgY3VzdG9tIGRhdGEgYmxvYiBhbmQgd2UgbmVlZCB0byB2ZW5kIHRoZW0gdG8gdGhlIHBhZ2Ug
d2hlbiBmaXJpbmcgYGRyYWdvdmVyYApAQCAtNjcyLDggKzY3Miw4IEBAIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4odmFsdWUpOwot
ICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOworICAgICAgICBh
dXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4odmFsdWUp
OworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKilj
b2NvYVR5cGVdOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZl
cnRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVy
SU9TLm1tCmluZGV4IDU0NDY1M2M0NDAzZDI2MDQwYTU1ZDIzZTkzNjkxYmZlZGNjOTJiNDIuLjdh
NGEyYjE2NWIyZmE3ZDIwZDViNmU0YzJkNjVmZTYzZWYwYjAyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCkBAIC04Miw3ICs4
Miw3IEBAIEBlbmQKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUHJldmlld0NvbnZlcnRlcjo6UHJl
dmlld0NvbnZlcnRlcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUHJldmlld0Nv
bnZlcnRlclByb3ZpZGVyJiBwcm92aWRlcikKLSAgICA6IG1fcHJldmlld0RhdGEgeyBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpIH0KKyAgICA6IG1fcHJldmlld0RhdGEgeyBtYWtlVW5pcXVlUmVmPFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9vcmlnaW5hbFJlc3BvbnNlIHsgcmVzcG9u
c2UgfQogICAgICwgbV9wcm92aWRlciB7IHByb3ZpZGVyIH0KICAgICAsIG1fcGxhdGZvcm1EZWxl
Z2F0ZSB7IGFkb3B0TlMoW1tXZWJQcmV2aWV3Q29udmVydGVyRGVsZWdhdGUgYWxsb2NdIGluaXRX
aXRoRGVsZWdhdGU6KnRoaXNdKSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tCmluZGV4IDY3N2Y4Y2FkYWI1OTEyM2UxYjYyZDFiYWMyZDE5MDhiZjY3NmEy
ZjkuLjBkMjU0OThiODZiZWYxODVkMzc2OWQ1YTViYzBiYzJmNzMxYzcwZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0yNTAsNyArMjUwLDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBDb2xvciYgY29sb3IpCiAKIHN0YXRpYyBO
U0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBlcihjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9h
cmRJbWFnZSkKIHsKLSAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJj
ZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHRO
UyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0
ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOwogICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZp
bGVuYW1lV2l0aE1JTUVUeXBlKHBhc3RlYm9hcmRJbWFnZS51cmwudXJsLCBwYXN0ZWJvYXJkSW1h
Z2UucmVzb3VyY2VNSU1FVHlwZSldOwogICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7
CiB9CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQ
bGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3cKICAgICAKICAg
ICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpKSkp
IHsKICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRl
eChsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0
ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRl
ZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRG
RDpkYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRy
aWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAgICAgICAg
ICAgICAgICAgdGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAgICAgICAg
ICAgICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQppbmRleCAz
NTNkMDA2YjkwY2JjZTYwOWU2ZGZkMzdjMjgwODEzMWYyMTRiOGRhLi44OGQwNDAyNTg0MzcwMmU0
YWE0ZjVhOWE1NTZiODgxYzZlNDBjMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpAQCAtMTI4LDExICsxMjgsMTEgQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0
U3RyaW5nOndlYkNvbnRlbnQtPmRhdGFJblN0cmluZ0Zvcm1hdCBmb3JUeXBlOk5TUGFzdGVib2Fy
ZFR5cGVTdHJpbmddOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3ZWJDb250
ZW50LT5jbGllbnRUeXBlcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRl
bSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ld
KS5nZXQoKV07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50
LT5jbGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBm
b3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSku
Z2V0KCldOwogCiAgICAgICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAg
ICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKHdlYkNvbnRlbnQtPmNvbnRlbnRPcmlnaW4pOwotICAg
ICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShT
dHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOworICAgICAg
ICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigp
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5s
ZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSku
Z2V0KCldOwogICAgIH0KIAogICAgIHJldHVybiBwYXN0ZWJvYXJkSXRlbTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4
IGQ5YjdkMjQ4MDM4YzJkYjhhYWIwOTJjYjkxZmZhNTZmMmNiNGNlNzMuLmMzYjRkMmQ5NjIxNzQ3
MWM3MzVlMjRmZTdhNWY5ZDkyMzdkZjQ3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtMjYzLDggKzI2Myw4IEBA
IGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YSYgZGF0YSkKICAgICAgICAgaWYgKHBsYXRmb3JtVHlwZS5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNo
YXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxh
dGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+
Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7CisgICAgICAgICAgICBp
ZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAg
ICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBm
b3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJp
bmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKQEAgLTI3NCw3ICsyNzQsNyBA
QCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3Rv
bURhdGEmIGRhdGEpCiAgICAgfSk7CiAKICAgICBpZiAoc2hvdWxkV3JpdGVDdXN0b21EYXRhKSB7
Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFy
ZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRD
dXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6c2VyaWFs
aXplZEN1c3RvbURhdGEuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2Nv
YVR5cGUoKSldOwogICAgIH0KIApAQCAtMzQxLDEyICszNDEsMTIgQEAgaW50NjRfdCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMpCiAgICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOmNyZWF0ZU5TQXJyYXko
cGFzdGVib2FyZFR5cGVzKS5nZXQoKSBvd25lcjpuaWxdOwogfQogCi1pbnQ2NF90IFBsYXRmb3Jt
UGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRC
dWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAoIWNhbldyaXRlUGFzdGVib2FyZFR5cGUocGFz
dGVib2FyZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEJPT0wgZGlkV3JpdGVEYXRh
ID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CisgICAgQk9PTCBkaWRXcml0ZURh
dGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsK
ICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGNo
YW5nZUNvdW50KCk7CkBAIC01MDQsOCArNTA0LDggQEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3Rl
Ym9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEK
ICAgICAgICAgaWYgKCFwbGF0Zm9ybVR5cGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09y
QnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8
UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAg
ICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4oc3RyaW5nT3JCdWZmZXIpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEg
PSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW2l0ZW0g
c2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAg
ICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZl
cikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdP
ckJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKaW5kZXggNjgxM2Q1ZGE3ZGNiMGZjMjU5
ZjFiZDFlZDBhNTRjMWExYTlmZDljZi4uNzk2NTU0ZjRjOTc2NDUxNDAxZTFhMTIzNzQ2ODcwNDBi
MjRiMWNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFz
cyBNZWRpYVNhbXBsZTsKIGNsYXNzIE1lZGlhU3RyZWFtUHJpdmF0ZTsKIGNsYXNzIE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlOwogY2xhc3MgUGxhdGZvcm1BdWRpb0RhdGE7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgTWVkaWFSZWNv
cmRlclByaXZhdGVPcHRpb25zOwogCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB9Owog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBdWRpb1ZpZGVvU2VsZWN0ZWRUcmFja3Mgc2VsZWN0
VHJhY2tzKE1lZGlhU3RyZWFtUHJpdmF0ZSYpOwogCi0gICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+OworICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT47CiAgICAgdmlydHVhbCB2b2lkIGZl
dGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmKSA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKCkgY29uc3QgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9j
ay5jcHAKaW5kZXggYzI1ZGY5MTU3NGE2NWJjNDFiZGI3MDY3OGRjNDc3MjQ4MzZkZDE0NS4uNDk4
ZDRlZTEzNDBjNGI5NDAwMWI2MGMzNDQ3OWI3ZjcyZDVjOGU2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGVNb2NrLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQ
cml2YXRlTW9jazo6Z2VuZXJhdGVNb2NrQ291bnRlclN0cmluZygpCiAKIHZvaWQgTWVkaWFSZWNv
cmRlclByaXZhdGVNb2NrOjpmZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB7CiAgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX2J1ZmZlckxvY2sgfTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlIHsg
bV9idWZmZXIuY2hhcmFjdGVyczgoKSwgbV9idWZmZXIubGVuZ3RoKCkgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKaW5kZXggMjExZjc1
ZWU3M2FmNjkxOWU3ZjRjOTk1OGUwY2QzNDgyNTMyZDA5Zi4uOWMyYzc5N2I4MTk1MTJkOGZkNTc5
MDE1ZGMzYjZlNDA1ZTNiYzYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgYXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIoTWVkaWFTYW1wbGUmKTsKICAgICB2b2lkIGFwcGVu
ZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbiYsIGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgc2l6ZV90KTsKICAgICB2
b2lkIHN0b3BSZWNvcmRpbmcoKTsKLSAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYpOworICAgIHZvaWQgZmV0
Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGRvdWJsZSk+JiYpOwogCiAgICAgdm9pZCBwYXVzZSgpOwogICAgIHZvaWQgcmVzdW1l
KCk7CkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZmluaXNoZWRGbHVz
aGluZ1NhbXBsZXMoKTsKICAgICB2b2lkIGNvbXBsZXRlRmV0Y2hEYXRhKCk7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gdGFrZURhdGEoKTsKIAogICAgIGJvb2wgbV9oYXNBdWRpbyB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2hhc1ZpZGVvIHsgZmFsc2UgfTsKQEAgLTExNyw4ICsxMTcsOCBAQCBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsKIAogICAgIExvY2sgbV9kYXRh
TG9jazsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9D
SyhtX2RhdGFMb2NrKTsKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsK
KyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOwogCiAgICAgUmV0YWlu
UHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbjsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBtX2F1ZGlvQ29t
cHJlc3NvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXJDb2NvYS5tbQppbmRleCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNjZGY1ZTgzODRmMzZiN2I1M2Y1
Li44NDg0MTAwZWFjNWUxMTVlOWIwY2YwMTIwYmFiZjc4ZmIxYTEyNzRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0xMzcs
MTAgKzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogICAgIH0KIAotICAgIC8v
IEF0IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3cml0aW5nIGFueSBkYXRh
LCBzbyBpdCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlmeSBtX2RhdGEgd2l0aG91
dCBsb2NraW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAgICAgICBbbV93cml0ZXJE
ZWxlZ2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBAIC00OTUsNyArNDkzLDcg
QEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGluZygpCiAgICAg
fSk7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZldGNoRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERh
dGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX2ZldGNoRGF0YUNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CiAKQEAgLTUzNywxOCAr
NTM1LDEzIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXBsZXRlRmV0Y2hE
YXRhKCkKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0
YUxvY2sgfTsKLSAgICBpZiAoIW1fZGF0YSkgewotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2Rh
dGEtPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIHNpemUpOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjp0YWtlRGF0YSgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sg
fTsKLSAgICBhdXRvIGRhdGEgPSBXVEZNb3ZlKG1fZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7Cisg
ICAgcmV0dXJuIG1fZGF0YS50YWtlKCk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OnBhdXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRGF0YVVSTERlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0
YVVSTERlY29kZXIuaAppbmRleCBhOWIyOWQ1OWU5YWEzYjQ2NTU0MTViZDhiZWYwOTg0YzU0NGI3
M2YwLi5jZGVlNjAzNTIzY2Q2Njk0NWY0MjhmNjk0Nzg5NjBmNmZkNzRjNzdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCkBAIC0zMyw3
ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIERhdGFVUkxEZWNvZGVy
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5oCmluZGV4IGZhZmRmZTg3YzgzN2U2MTU3ZDJmMTNlOWE3Y2EwMDk2OWQ1MGIxYzcuLjRiZWJj
YjUwOThkMTVjMjk2NmVkOGM3ZWUxMzZhZTNhMmFlNGEyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKQEAgLTg0LDcgKzg0LDcgQEAg
Y2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN5bmNocm9ub3VzTG9h
ZGVyTWVzc2FnZVF1ZXVlOwogY2xhc3MgVGltZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKaW5kZXggNmU2
NWJiODkxOGM2ZWMxMmY4YWVhODZlYmU3MDQ4ODRlMmU3MzY2Zi4uYmE4ZmQ0ZmY0ZjFlNDFjOWFk
NGZhNzRhNDJiZTRlMmJkMTFhYTg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKQEAgLTM2LDkgKzM2LDkg
QEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OlJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0
OwogCiBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZh
dWx0OwogCi12b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291
cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2Rl
ZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVy
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRs
ZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7Cisg
ICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5o
CmluZGV4IGI2MzM3ZDU2Y2U4Y2Q5YmVmZjlkZmJlMTEzNjYyYmM3NzU2YjY1MzcuLmM0ZjA1NDg1
ZjI4NzBiMTE2ZGE3Yzc2MGQzYzBmY2U5NmVjMmI0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKQEAgLTUwLDcg
KzUwLDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGVudW0gQ2FjaGVTdG9y
YWdlUG9saWN5IHsKICAgICBTdG9yYWdlQWxsb3dlZCwKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVk
IGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyp0b3RhbEJ5dGVz
VG9CZVNlbnQqLykgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCAvKmVuY29kZWREYXRhTGVu
Z3RoKi8pIHsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jh
bmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggMWZmMDY1MjE2ZmE2ODA4ODE5
MzcxNGJjZjJiY2RhZjY5NmYwMjQwNi4uMDA4ZTIyNmZmOTE5MDA0YjQ1MTQ4YTI0NzI2MTE2MTUw
OTg5NjI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtNDEsOCArNDEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0
YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIERhdGEoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3Vy
Y2UpCi0gICAgICAgIDogYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgICAgICwg
b3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKKyAgICAgICAgOiBvcmlnaW5hbFJlc3BvbnNlKHJl
c3BvbnNlKQogICAgICAgICAsIHJlc291cmNlKCZyZXNvdXJjZSkgeyB9CiAKICAgICBzdHJ1Y3Qg
VGFza0RhdGEgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VGFza0RhdGE+IHsKQEAgLTU1LDkgKzU0
LDkgQEAgc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgICAgICBzaXpl
X3QgbmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleCB7IDAgfTsKICAgICAgICAgZW51bSBjbGFzcyBS
ZXNwb25zZVN0YXRlIDogdWludDhfdCB7IE5vdFN5bnRoZXNpemVkWWV0LCBXYWl0aW5nRm9yU2Vz
c2lvbiwgU2Vzc2lvbkNhbGxlZENvbXBsZXRpb25IYW5kbGVyIH0gcmVzcG9uc2VTdGF0ZSB7IFJl
c3BvbnNlU3RhdGU6Ok5vdFN5bnRoZXNpemVkWWV0IH07CiAgICAgfTsKLSAgICAKKwogICAgIEhh
c2hNYXA8UmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4sIHN0ZDo6dW5pcXVl
X3B0cjxUYXNrRGF0YT4+IHRhc2tEYXRhOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG9y
aWdpbmFsUmVzcG9uc2U7CiAgICAgZW51bSBjbGFzcyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRp
bmcgOiBib29sIHsgTm8sIFllcyB9IHN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyB7IFN1Y2Nl
c3NmdWxseUZpbmlzaGVkTG9hZGluZzo6Tm8gfTsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJl
c291cmNlPiByZXNvdXJjZTsKQEAgLTEwNiwyMiArMTA1LDIyIEBAIHZvaWQgUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvcjo6cmVtb3ZlVGFzayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2sp
CiB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJ
blJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBjb25zdCBQ
YXJzZWRSZXF1ZXN0UmFuZ2UmIHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRD
b250ZW50TGVuZ3RoLCBjb25zdCBEYXRhJiBkYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7Ci0gICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlcjsKLSAgICBhdXRvIGJ1ZmZlclNp
emUgPSBidWZmZXItPnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxl
IHRvIGp1c3QgbWFrZSBhIHJhbmdlIHdpdGggYSAqIGFmdGVyIHRoZSAvIGJ1dCBBVkZvdW5kYXRp
b24gZG9lc24ndCBhY2NlcHQgc3VjaCByYW5nZXMuCiAgICAgLy8gSW5zdGVhZCwgd2UganVzdCB3
YWl0IHVudGlsIHRoZSBsb2FkIGhhcyBjb21wbGV0ZWQsIGF0IHdoaWNoIHRpbWUgd2Ugd2lsbCBr
bm93IHRoZSBjb250ZW50IGxlbmd0aCBmcm9tIHRoZSBidWZmZXIgbGVuZ3RoLgogICAgIGlmICgh
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRvIGJ1ZmZl
clNpemUgPSBkYXRhLmJ1ZmZlci5zaXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUgPCByYW5nZS5i
ZWdpbikKICAgICAgICAgcmV0dXJuOwotICAgIAorCisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1
ZmZlci5nZXQoKTsKICAgICBhdXRvKiB0YXNrRGF0YSA9IGRhdGEudGFza0RhdGEuZ2V0KHRhc2sp
OwogICAgIGlmICghdGFza0RhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRvIGdp
dmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIHRhc2tEYXRh
ID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0g
eworCisgICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwg
YnVmZmVyLCBidWZmZXJTaXplLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2Vu
ZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKICAgICAgICAgaWYgKFt0YXNrIHN0YXRlXSAhPSBOU1VSTFNlc3Npb25UYXNrU3RhdGVS
dW5uaW5nKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMwLDcgKzEyOSw3IEBAIHZvaWQgUmFu
Z2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNl
aXZlZChXZWJDb3JlTlNVCiAgICAgICAgIGF1dG8mIHJhbmdlID0gdGFza0RhdGEtPnJhbmdlOwog
ICAgICAgICBhdXRvJiBieXRlSW5kZXggPSB0YXNrRGF0YS0+bmV4dEJ5dGVUb0dpdmVCdWZmZXJJ
bmRleDsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIGlmIChieXRlSW5kZXgg
Pj0gYnVmZmVyLT5zaXplKCkpCisgICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlclNp
emUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlclZpZXcg
PSBidWZmZXItPmdldFNvbWVEYXRhKGJ5dGVJbmRleCk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZl
clZpZXcuc2l6ZSgpIHx8IGJ5dGVJbmRleCA+IHJhbmdlLmVuZCkKQEAgLTE3NSw3ICsxNzQsNyBA
QCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRD
b250ZW50TGVuZ3RoRnJvbURhdGEoY29ucwogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgaWYgKGRhdGEuc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nID09IERhdGE6OlN1Y2Nl
c3NmdWxseUZpbmlzaGVkTG9hZGluZzo6WWVzKQotICAgICAgICByZXR1cm4gZGF0YS5idWZmZXIt
PnNpemUoKTsKKyAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLnNpemUoKTsKIAogICAgIC8vIEZJ
WE1FOiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgc2hvdWxk
IHJldHVybiBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5zdGVhZCBvZiB1cyBkb2luZyB0aGlzIGNo
ZWNrIGhlcmUuCiAgICAgYXV0byBleHBlY3RlZENvbnRlbnRMZW5ndGggPSBkYXRhLm9yaWdpbmFs
UmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CkBAIC0yNDQsNyArMjQzLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBm
aW5hbAorICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgZmluYWwKICAgICB7CiAgICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmICghbV9nZW5lcmF0b3IpCkBAIC0yNTIs
NyArMjUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5t
X21hcC5nZXQobV91cmxTdHJpbmcpOwogICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGRhdGEtPmJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9n
ZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoKmRhdGEpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9XZWJDb3JlTlNVUkxTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAppbmRleCA0MDQ4ODVhZTYzNzZmY2U2ODA0MGQy
YTA1YzAwYmVjNDdmZTE2YWE4Li5jZTRjMjU0NWNkZTBmMmY0NmFjMzM4Zjk2YzQ5MDg4ZWI0NWQw
OTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dl
YkNvcmVOU1VSTFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBQbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRh
VmlldzsKIGNsYXNzIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDsKIGVudW0gY2xh
c3MgU2hvdWxkQ29udGludWVQb2xpY3lDaGVjayA6IGJvb2w7CkBAIC0xNTgsNyArMTU4LDcgQEAg
V0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uIDogTlNPYmplY3Qg
ewogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291
cmNlKilyZXNvdXJjZSBzZW50Qnl0ZXM6KHVuc2lnbmVkIGxvbmcgbG9uZylieXRlc1NlbnQgdG90
YWxCeXRlc1RvQmVTZW50Oih1bnNpZ25lZCBsb25nIGxvbmcpdG90YWxCeXRlc1RvQmVTZW50Owog
LSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNl
KilyZXNvdXJjZSByZWNlaXZlZFJlc3BvbnNlOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJilyZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJiljb21wbGV0aW9uSGFuZGxlcjsK
IC0gKEJPT0wpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpcmVzcG9uc2U7Ci0tICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJilkYXRhOworLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKWRhdGE7CiAtICh2b2lkKXJlc291cmNlOihu
dWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVk
UmVkaXJlY3Q6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlIHJlcXVl
c3Q6KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKWNv
bXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWRXaXRo
RXJyb3I6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKWVycm9yOwogLSAodm9pZClyZXNv
dXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBs
b2FkRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlMDQwMTBhOTgxMWI0YzlhZTE0OTQ5OTg3MDFj
YTE1NDg5ZjU3MTZjLi44Yzg5ZDkzODY1NzkzM2ExZGEyOTAzMTk5MTU4NGM0ZGIyZmFhOWE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVO
U1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC02MDgsNyArNjA4LDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJl
cXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENhY2hlUmVz
cG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWdu
ZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlOwotICAgIHZvaWQgZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92
ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGFjY2Vzc0Nv
bnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGaW5pc2hl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKQEAgLTY1Miw3ICs2NTIsNyBAQCBib29sIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFz
a0NsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyYwogICAgIHJl
dHVybiBbbV90YXNrIHJlc291cmNlOiZyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOnJlc3Bv
bnNlXTsKIH0KIAotdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKK3ZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRh
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX3Rhc2tMb2Nr
IH07CiAgICAgaWYgKCFtX3Rhc2spCkBAIC05MTUsMTEgKzkxNSwxMSBAQCAtIChCT09MKXJlc291
cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6
KGNvbnN0IFJlcwogICAgIHJldHVybiByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkNvbnRlbnRSYW5nZSkuaXNFbXB0eSgpOwogfQogCi0tICh2b2lkKXJlc291cmNlOihQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJilkYXRhCistICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpZGF0YQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJj
ZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdh
dGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZN
b3ZlKGRhdGEpXSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0g
ZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+IGRhdGFE
ZWxlZ2F0ZSA9IChpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCku
c2Vzc2lvbi5kZWxlZ2F0ZTsKICAgICAgICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3du
bG9hZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcAppbmRleCBjMzZlMWY4ODc2NDMwNDYwY2U3NTBhM2I4YzY1OGM3MzRlY2IxNTA4Li4z
NDk0NDU5MjU0YWM5M2ZjMTljYjEyMTUwYTYxYmMyYmNlZDAyZDZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAt
MTAzLDcgKzEwMyw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNl
KEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVzcG9uc2UmJiByCiB9CiAKIAotdm9pZCBDdXJs
RG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVCdWZmZXIo
Q3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCmluZGV4IGEzYWEwY2Y1ZmNkMjk1NWJi
N2IxNmIxMWExYTgxY2E3NGFlNjFjOGQuLmNkZTQ0NDU3NzVmNzQ0MjMzMDUzMGI2NWIxMzU3YmE2
YmZkOWJiODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8Q3Vy
bFJlcXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQg
Y3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25l
ZCBsb25nIGxvbmcpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25z
ZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGN1cmxE
aWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0
ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSBvdmVycmlkZTsKICAgICB2b2lk
IGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0
aWZpY2F0ZUluZm8mJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBi
YmRhM2ZiZGE3NTgzZDk5MTkzMWRmZTE2OWY3YjNhOTEzM2U2ZGEyLi4wOTBkMDM5YmE0NWRlMTAy
OGVkZjc2ODRjNmQ3ZDJmMjk2ZTNhMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC0x
MTksMTIgKzExOSwxMiBAQCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpDdXJsTXVsdGlwYXJ0SGFuZGxl
KEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmIGNsaWVudCwgY29ucwogCiB9CiAKLXZvaWQgQ3Vy
bE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCit2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6
RW5kKQogICAgICAgICByZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3duIHNvIGln
bm9yZSBldmVyeXRoaW5nLgogCi0gICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlci5zaXplKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAogICAgIHdoaWxlIChwcm9jZXNzQ29udGVudCgp
KSB7IH0KIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRp
ZENvbXBsZXRlKCkKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6RW5kKSB7CiAgICAgICAgIC8v
IEl0IHNlZW1zIHdlIGFyZSBzdGlsbCBub3QgYXQgdGhlIGVuZCBvZiB0aGUgcHJvY2Vzc2luZy4K
ICAgICAgICAgLy8gUHVzaCBvdXQgdGhlIHJlbWFpbmluZyBkYXRhLgotICAgICAgICBtX2NsaWVu
dC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZm
ZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2
ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUobV9idWZmZXIp
KSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmgKaW5kZXggNWMwOGJjYzVlYjNlNGJiY2MwMjliNDc2Nzg2OGY0M2UyZjk1YzM0MS4uOWEx
YTFiYmQxOTM4YTE0ZjY5ZmNjZWUzZjBmODliOTdhNGEyMTg3NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRs
ZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybE11
bHRpcGFydEhhbmRsZUNsaWVudDsKIGNsYXNzIEN1cmxSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxNdWx0aXBh
cnRIYW5kbGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDQsNyArNDQsNyBA
QCBwdWJsaWM6CiAgICAgQ3VybE11bHRpcGFydEhhbmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xp
ZW50JiwgY29uc3QgU3RyaW5nJik7CiAgICAgfkN1cmxNdWx0aXBhcnRIYW5kbGUoKSB7IH0KIAot
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBk
aWRDb21wbGV0ZSgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgK
aW5kZXggZmQxM2ZkMzgxMzE0M2NiMjY1OWI4ZmQxZGIyNDQ0NzY1ZTk4YTU4MC4uYzgxMzg4NmE4
ZDVjNWZhNmMxMmQxNDEzMzE5MTAxYWYyNTAyYTJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRs
ZUNsaWVudC5oCkBAIC0yOCwxMiArMjgsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ3VybFJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21N
dWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0g
MDsKIAogcHJvdGVjdGVkOgogICAgIH5DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50KCkgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
LmNwcAppbmRleCBkMzViMGU4MzkxOTUxZDM4NjM0ZTk5MDkzYjY4NjU2MjRkOTk3OTUxLi5kODJk
ZDNjMTBhYzY0NzEzNTk5MWZkN2FlNjY5N2U5ZDhlMzEzZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTM5Niw3
ICszOTYsNyBAQCBzaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVIZWFkZXIoU3RyaW5nJiYg
aGVhZGVyKQogCiAvLyBjYWxsZWQgd2l0aCBkYXRhIGFmdGVyIGFsbCBoZWFkZXJzIGhhdmUgYmVl
biBwcm9jZXNzZWQgdmlhIGhlYWRlckNhbGxiYWNrCiAKLXNpemVfdCBDdXJsUmVxdWVzdDo6ZGlk
UmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitzaXplX3QgQ3VybFJlcXVl
c3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
IHsKICAgICBpZiAoaXNDb21wbGV0ZWRPckNhbmNlbGxlZCgpKQogICAgICAgICByZXR1cm4gMDsK
QEAgLTQ0NCw3ICs0NDQsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyRnJv
bU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYgaGVhZGVycykKICAgICBpbnZva2VEaWRS
ZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIEFjdGlvbjo6Tm9uZSk7CiB9CiAKLXZvaWQgQ3VybFJl
cXVlc3Q6OmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK3ZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVk
T3JDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzc3LDcgKzc3Nyw3IEBAIGNvbnN0
IFN0cmluZyYgQ3VybFJlcXVlc3Q6OmdldERvd25sb2FkZWRGaWxlUGF0aCgpCiAgICAgcmV0dXJu
IG1fZG93bmxvYWRGaWxlUGF0aDsKIH0KIAotdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9E
b3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIEN1
cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9kb3dubG9hZE11dGV4IH07CkBAIC03OTAsNyArNzkwLDcgQEAgdm9pZCBDdXJsUmVxdWVz
dDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1fZG93bmxvYWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0
ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgIEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUs
IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2
b2lkIEN1cmxSZXF1ZXN0OjpjbG9zZURvd25sb2FkRmlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCmluZGV4IDZiZDhhNmJmYmEz
NzUyY2VkZGRiYzUwMDllYWU4M2M0ZjBlZWQ2NDEuLjNjN2NkZDg4M2ViNjJiZmU5MmNmMDQ0NWVk
MjliZDI2ZWNlM2U5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEN1cmxSZXF1ZXN0Q2xpZW50OwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwog
Y2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZTsKIAog
Y2xhc3MgQ3VybFJlcXVlc3QgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q3VybFJlcXVl
c3Q+LCBwdWJsaWMgQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQsIHB1YmxpYyBDdXJsTXVsdGlw
YXJ0SGFuZGxlQ2xpZW50IHsKQEAgLTEyMiw5ICsxMjIsOSBAQCBwcml2YXRlOgogICAgIENVUkwq
IHNldHVwVHJhbnNmZXIoKSBvdmVycmlkZTsKICAgICBzaXplX3Qgd2lsbFNlbmREYXRhKGNoYXIq
LCBzaXplX3QsIHNpemVfdCk7CiAgICAgc2l6ZV90IGRpZFJlY2VpdmVIZWFkZXIoU3RyaW5nJiYp
OwotICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBz
aXplX3QgZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZUhlYWRlckZyb21NdWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0cmluZz4m
KSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8U2hh
cmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRp
cGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRDb21wbGV0ZVRyYW5zZmVyKENVUkxjb2RlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNl
bFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5hbGl6ZVRyYW5zZmVyKCk7CkBAIC0x
NTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgbmV0d29ya0xv
YWRNZXRyaWNzKCk7CiAKICAgICAvLyBEb3dubG9hZAotICAgIHZvaWQgd3JpdGVEYXRhVG9Eb3du
bG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB3cml0ZURh
dGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7
CiAgICAgdm9pZCBjbG9zZURvd25sb2FkRmlsZSgpOwogICAgIHZvaWQgY2xlYW51cERvd25sb2Fk
RmlsZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3RDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdENsaWVudC5oCmluZGV4IDA4Yzg2YzdkNDY4NGJhNmY3OGQ2MTZiNjhk
MDY5MDRjMzdhOTY2NzcuLjM0Nzk4MzJmNTc2ZDQxMjhhZmE1MWM4MTQyNGNjZmQ3NDFkZjZhZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdENsaWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEN1cmxSZXF1ZXN0Owog
Y2xhc3MgQ3VybFJlc3BvbnNlOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVz
b3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIEN1cmxSZXF1ZXN0Q2xpZW50IHsKIHB1YmxpYzoKQEAgLTQzLDcgKzQz
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVx
dWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0
b3RhbEJ5dGVzVG9CZVNlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVS
ZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVz
dCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVz
b3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDgxOGQ1YTk1ZTNlMTI0ZGMzYTcyZjc0M2U1Y2Q0
NTNkNzE3ZTAxMGYuLjMwNWQ0ZTVjOWZjMjcwNzc1Nzg3YjBmOWE5MTk3OWMwODg4OWE4YTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3Vy
Y2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtMTQyLDE1ICsxNDIsMTYg
QEAgdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVSZXNwb25z
ZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3UKICAgICB9KTsKIH0KIAotdm9pZCBDdXJsUmVzb3Vy
Y2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6
OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBp
ZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEN1cmxD
YWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBidWZmZXIt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwotICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVy
KCZtX2hhbmRsZSwgV1RGTW92ZShidWZmZXIpLCBidWZmZXItPnNpemUoKSk7CisgICAgYXV0byBj
b250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIEN1cmxDYWNo
ZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBjb250aWd1b3Vz
QnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBjbGllbnQoKS0+ZGlkUmVjZWl2
ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoY29udGlndW91c0J1ZmZlciksIGJ1ZmZlci0+c2l6
ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZENvbXBs
ZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYgbWV0cmljcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgKaW5kZXggNmQ1NTg2NDQ1MmZkNDZlZTc4MDBlOTMxMjNi
MTI4YmRjNjRjZTQ4Ny4uZGFmMGE1OWE0ZTU4NmQ3MTE0YWJiNGU1ZWY5YzU0ZjZhOGJlZmM3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBs
b25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50
KSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBD
dXJsUmVzcG9uc2UmJikgZmluYWw7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJs
UmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgY3VybERpZFJl
Y2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
ZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9h
ZE1ldHJpY3MmJikgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVx
dWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYpIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggYmM0ZGFhZmJmMjFhMTVjMGU2ZGQxYWNkNDYy
MmFmYTU2YjdiOGQ1ZC4uMWY0YTE5MzEzMzEyYzVkZDZhNDhhZDUzMzlkZmQyYzNiNWRlYzI1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJl
dmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMzEsMTIgKzMxLDEyIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudCA6IHB1Ymxp
YyBSZWZDb3VudGVkPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwotICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRGYWlsKCkgeyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGFzc3dvcmRF
bnRyeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKaW5kZXggMGZiNDUwMDcyZmExMDQy
MmY2YTlmZTQzMmMzODFkM2QxOTYxM2U2MC4uZDYzMjIyNTY0ZWYwNzRjZGJjZDdlZTIxM2VhOTkx
NTc0MDdlMzU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hh
cmVkQnVmZmVyUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1No
YXJlZEJ1ZmZlclBPU0lYLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC02OCw3ICs2OCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpCiAgICAgaWYgKHRvdGFsQnl0ZXNSZWFkICE9IGJ5dGVzVG9SZWFkKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1
ZmZlcikpOworICAgIHJldHVybiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShidWZmZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGM1NDQ1Mzg1YTc3YWMxMmMw
OWVmMjQ4NjY0NzNkNjJjYjY3OTQ1NWEuLjQ1MzY4MWJkYWIyZTRhMDVhMjFmYzY4YTk0MzcwMGUw
NmM5OTdhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKQEAgLTM1Niw3ICszNTYsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZ0lu
Q3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIHN0cnVjdCBQYXN0ZWJvYXJkRmlsZUNv
dW50ZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgdm9pZCByZWFkRmlsZW5h
bWUoY29uc3QgU3RyaW5nJikgZmluYWwgeyArK2NvdW50OyB9Ci0gICAgdm9pZCByZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
IHsgKytjb3VudDsgfQorICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWwgeyArK2NvdW50OyB9
CiAKICAgICB1bnNpZ25lZCBjb3VudCB7IDAgfTsKIH07CkBAIC05NzQsNyArOTc0LDcgQEAgc3Rh
dGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3JpcHRvcihjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBtZW1PYmo7CiB9CiAKLXN0YXRpYyBIR0xP
QkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoU2hhcmVkQnVmZmVyKiBkYXRhKQorc3Rh
dGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBkYXRhKQogewogICAgIEhHTE9CQUwgbWVtT2JqID0gR2xvYmFsQWxsb2MoR1BUUiwg
ZGF0YS0+c2l6ZSgpKTsKICAgICBpZiAoIW1lbU9iaikgCkBAIC05ODYsMTUgKzk4NiwxNSBAQCBz
dGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciog
ZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKGRhdGEtPmRhdGEoKSkK
LSAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKTsKKyAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250
ZW50cywgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogCiAg
ICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7CiAKICAgICByZXR1cm4gbWVtT2JqOwogfQogCi1zdGF0
aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmlu
ZyYgZmlsZU5hbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSkKK3N0YXRpYyBIR0xPQkFMIGNyZWF0ZUds
b2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAoZmlsZU5hbWUuaXNFbXB0eSgpIHx8
ICFkYXRhKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEwMzgsOCArMTAzOCw4IEBAIHN0YXRpYyBI
R0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBm
aWxlTmFtZSwgU2hhcmVkCiAgICAgICAgIC8vIFdyaXRlIHRoZSBkYXRhIHRvIHRoaXMgdGVtcCBm
aWxlLgogICAgICAgICBEV09SRCB3cml0dGVuOwogICAgICAgICBCT09MIHRlbXBXcml0ZVN1Y2Nl
ZWRlZCA9IEZBTFNFOwotICAgICAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICAgICAgdGVt
cFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5kYXRhKCks
IGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOworICAgICAgICBpZiAoZGF0YS0+c2l6ZSgpKQor
ICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFuZGxl
LCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4s
IDApOwogICAgICAgICBDbG9zZUhhbmRsZSh0ZW1wRmlsZUhhbmRsZSk7CiAgICAgICAgIGlmICgh
dGVtcFdyaXRlU3VjY2VlZGVkKQogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMDcxLDcgKzEw
NzEsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2VUb0RhdGFPYmplY3QoRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgVVJMJiB1cmwpCiAgICAgaWYgKCFjYWNoZWRJbWFnZSB8fCAhY2FjaGVk
SW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKSB8fCAhY2FjaGVkSW1h
Z2UtPmlzTG9hZGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNoYXJlZEJ1ZmZlciogaW1h
Z2VCdWZmZXIgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihlbGVtZW50LnJlbmRlcmVy
KCkpLT5kYXRhKCk7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBj
YWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihlbGVtZW50LnJlbmRlcmVyKCkpLT5kYXRhKCk7
CiAgICAgaWYgKCFpbWFnZUJ1ZmZlciB8fCAhaW1hZ2VCdWZmZXItPnNpemUoKSkKICAgICAgICAg
cmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0
b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4
IDQxMWVkYmIzNTE3Yjg0OGZhYzA2M2QxOWU4Y2Q5NWVjMDAzN2NkNjEuLjg0ZmEyOWNlMWYzMDBm
ZTI5MGIwNDE0NjQ4ZjBmNzI5MGE3Y2JlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NETUZhY3RvcnkuY3BwCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgTW9ja0NETUZhY3Rvcnk6OnN1
cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogICAgIHJldHVybiBlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKGtleVN5c3RlbSwgIm9yZy53ZWJraXQubW9jayIpOwogfQogCi12
b2lkIE1vY2tDRE1GYWN0b3J5OjphZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYg
aWQsIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4mJiBrZXlzKQordm9pZCBNb2NrQ0RNRmFjdG9y
eTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIGtleXMpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBt
X3Nlc3Npb25zLmFkZChpZCwgV1RGTW92ZShrZXlzKSk7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05l
d0VudHJ5KQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIE1vY2tDRE1GYWN0b3J5OjphZGRLZXlzVG9T
ZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8U2hhcmVkQgogICAgICAg
ICB2YWx1ZS5hcHBlbmQoV1RGTW92ZShrZXkpKTsKIH0KIAotVmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+PiBNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0
cmluZyYgaWQpCitWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBNb2NrQ0RNRmFj
dG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpCiB7CiAg
ICAgYXV0byBpdCA9IG1fc2Vzc2lvbnMuZmluZChpZCk7CiAgICAgaWYgKGl0ID09IG1fc2Vzc2lv
bnMuZW5kKCkpCkBAIC04Myw3ICs4Myw3IEBAIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gTW9j
a0NETUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpCiAgICAg
cmV0dXJuIFdURk1vdmUoaXQtPnZhbHVlKTsKIH0KIAotY29uc3QgVmVjdG9yPFJlZjxTaGFyZWRC
dWZmZXI+PiogTW9ja0NETUZhY3Rvcnk6OmtleXNGb3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmlu
ZyYgaWQpIGNvbnN0Citjb25zdCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Piog
TW9ja0NETUZhY3Rvcnk6OmtleXNGb3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIGNv
bnN0CiB7CiAgICAgYXV0byBpdCA9IG1fc2Vzc2lvbnMuZmluZChpZCk7CiAgICAgaWYgKGl0ID09
IG1fc2Vzc2lvbnMuZW5kKCkpCkBAIC0yMDIsNyArMjAyLDcgQEAgYm9vbCBNb2NrQ0RNOjpzdXBw
b3J0c1Nlc3Npb25zKCkgY29uc3QKICAgICByZXR1cm4gbV9mYWN0b3J5ICYmIG1fZmFjdG9yeS0+
c3VwcG9ydHNTZXNzaW9ucygpOwogfQogCi1ib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXRE
YXRhKSBjb25zdAorYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEp
IGNvbnN0CiB7CiAgICAgaWYgKCFzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5p
dERhdGFUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjExLDEyICsyMTEsMTMgQEAg
Ym9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgY29uc3QgU2hhcmVkQnVmZmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXIm
IHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE1vY2tDRE06
OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2Up
IGNvbnN0CiB7Ci0gICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkocmVzcG9uc2UuZGF0YSgp
LCByZXNwb25zZS5zaXplKCkpKQorICAgIGF1dG8gYnVmZmVyID0gcmVzcG9uc2UubWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShidWZmZXItPmRhdGEoKSwg
cmVzcG9uc2Uuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBWZWN0b3I8
U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uu
c2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBT
dHJpbmcoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAg
IGlmICghcmVzcG9uc2VBcnJheS5jb250YWlucyhTdHJpbmcoInZhbGlkLXJlc3BvbnNlIl9zKSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjY5LDkgKzI3MCw5IEBAIHZvaWQgTW9ja0NE
TUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0
ZW1Db25maWd1cmF0CiAgICAgY2FsbGJhY2soaW5pdGlhbGl6ZSgpKTsKIH0KIAotdm9pZCBNb2Nr
Q0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2Vy
dGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFu
Y2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNl
cnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBTdHJpbmdWaWV3
IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+
c2l6ZSgpKTsKKyAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0
ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKIAogICAg
IGNhbGxiYWNrKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY2VydGlmaWNhdGVTdHJpbmdWaWV3LCAi
dmFsaWQiKSA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiB9CkBAIC0yOTcsNyArMjk4LDcgQEAgTW9j
a0NETUluc3RhbmNlU2Vzc2lvbjo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRyPE1vY2tD
RE1JbnN0YW5jZT4mJiBpbnN0YW4KIHsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9u
OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmIGNhbGxiYWNrKQogewogICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0
YW5jZSA/IG1faW5zdGFuY2UtPmZhY3RvcnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5
KSB7CkBAIC0zMjMsNyArMzI0LDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1
ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVMKICAgICBjYWxs
YmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShsaWNlbnNlLmRhdGEoKSwgbGljZW5zZS5sZW5ndGgo
KSksIHNlc3Npb25JRCwgZmFsc2UsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKIH0KIAotdm9p
ZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246
OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNr
JiYgY2FsbGJhY2spCiB7CiAgICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2luc3RhbmNl
ID8gbV9pbnN0YW5jZS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3RvcnkpIHsK
QEAgLTMzMSw3ICszMzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLAogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmco
cmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0
b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYgKHJl
c3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkgewogICAg
ICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVs
bG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
RmFjdG9yeS5oCmluZGV4IGY1Y2RhNTA1Y2YyYTMzYzEwNWYwMjVjOTdjOTM1MGE5Njg2OThlMWUu
LmQ5NmMxNTZlZTRkMjc5MWI4YjA5OThkYWY5NDBlYzc1Mzc4MDdiYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTc3LDkgKzc3LDkgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBoYXNTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIHsgcmV0dXJuIG1fc2Vz
c2lvbnMuY29udGFpbnMoaWQpOyB9CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uV2l0aElEKGNvbnN0
IFN0cmluZyYgaWQpIHsgbV9zZXNzaW9ucy5yZW1vdmUoaWQpOyB9Ci0gICAgdm9pZCBhZGRLZXlz
VG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4mJik7Ci0gICAgY29uc3QgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pioga2V5c0ZvclNlc3Np
b25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3Q7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRC
dWZmZXI+PiByZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCk7Cisg
ICAgdm9pZCBhZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIGNvbnN0IFZlY3RvcjxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+KiBrZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcm
IGlkKSBjb25zdDsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiByZW1v
dmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCk7CiAKIHByaXZhdGU6CiAg
ICAgTW9ja0NETUZhY3RvcnkoKTsKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fY2FuQ3JlYXRlSW5zdGFuY2VzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9zdXBwb3J0c1NlcnZl
ckNlcnRpZmljYXRlcyB7IHRydWUgfTsKICAgICBib29sIG1fc3VwcG9ydHNTZXNzaW9ucyB7IHRy
dWUgfTsKLSAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gbV9z
ZXNzaW9uczsKKyAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4+IG1fc2Vzc2lvbnM7CiB9OwogCiBjbGFzcyBNb2NrQ0RNIDogcHVibGljIENETVBy
aXZhdGUgewpAQCAtMTIxLDggKzEyMSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2FkQW5kSW5p
dGlhbGl6ZSgpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBj
b25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAg
ICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIGNvbnN0IGZpbmFsOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVz
cG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0
aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwog
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcm
KSBjb25zdCBmaW5hbDsKIAogICAgIFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IG1fZmFjdG9yeTsK
QEAgLTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEltcGxlbWVudGF0aW9u
VHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRh
dGlvblR5cGU6Ok1vY2s7IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihj
b25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRp
ZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0g
ICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNz
Q2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZv
aWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNl
c3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKQEAgLTE1NCw4ICsxNTQsOCBAQCBwdWJsaWM6
CiAgICAgTW9ja0NETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRyPE1vY2tDRE1JbnN0YW5jZT4mJik7
CiAKIHByaXZhdGU6Ci0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBM
aWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNz
aW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lv
bkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYs
IENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sm
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50
RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3Bw
CmluZGV4IGZjMTI3YjdiNjdiZWE3MzQ0NjNjZDJkNWIwNzU2YjU5YmViYTU4YWUuLjA1OWYzYTM4
NmI2Y2Y1ZmE3OWIzYzE4OTcwMTUzMTNmN2NkYjRlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBNb2Nr
Q29udGVudEZpbHRlcjo6ZmluaXNoZWRBZGRpbmdEYXRhKCkKICAgICBtYXliZURldGVybWluZVN0
YXR1cyhEZWNpc2lvblBvaW50OjpBZnRlckZpbmlzaGVkQWRkaW5nRGF0YSk7CiB9CiAKLVJlZjxT
aGFyZWRCdWZmZXI+IE1vY2tDb250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAor
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE1vY2tDb250ZW50RmlsdGVyOjpyZXBsYWNlbWVu
dERhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVwbGFjZW1lbnREYXRhLmRhdGEoKSwgbV9yZXBsYWNl
bWVudERhdGEuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXIuaAppbmRleCA0MTFhMzAwOTQ3YjUzOWUyNmFhNmM2NGEwMDkzMjkyZTlmZmJlNmI5Li42MzVh
Yzg0YmU3OTM4NDdhYTU3MjEzZDAxZmZjMWU3NGY3NmI3NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
OwogICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVy
cmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwotICAgIFJlZjxT
aGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsK
ICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAppbmRleCA2ZDQ4YmQwMmQxYzkxZjdlZWQ4NjRh
MTZjZDc1NmJiMDc3ZDY1NTJhLi41Zjg1NDVlYmE1YjBlN2I4YmJhYmE1YzY5M2MyYTQzNDE4OGIy
YmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCkBAIC0zOCw3ICsz
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0g
ICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5n
dGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsK
IH0KIAogU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQpAQCAtNDYsMTQgKzQ2LDEz
IEBAIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKICAgICByZXR1cm4gU2NyaXB0
QnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9OwogfQogCi0KIFN0cmluZyBTY3JpcHRC
dWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgbV9idWZm
ZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgbV9idWZmZXIuZ2V0
KCktPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CiAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7
CiAgICAgfSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTYxLDE1ICs2MCwx
MyBAQCBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiAKIGJvb2wgU2NyaXB0
QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXItPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci0+
YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOworICAgIHJldHVybiBt
X2J1ZmZlciAmJiBtX2J1ZmZlci5nZXQoKS0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLmdl
dCgpLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CiB9CiAKIHZv
aWQgU2NyaXB0QnVmZmVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgaWYg
KCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwog
ICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXItPmFwcGVuZCh1dGY4
LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgp
LCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZl
ciYgYSwgY29uc3QgU2NyaXB0QnVmZmVyJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TY3JpcHRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVm
ZmVyLmgKaW5kZXggYjM5ZDljMTMwMzMwMzExYzA0ZDdmMzc5NmI3MWEwNDMxMzRjNjY0Ni4uZmQy
YzFhZTJmNjNiNjBkNzRjMzBkMjQyYTk4OWEwYmZkOTFkZTQ5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1NjcmlwdEJ1ZmZlci5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFNjcmlwdEJ1ZmZlciB7
CiBwdWJsaWM6CiAgICAgU2NyaXB0QnVmZmVyKCkgPSBkZWZhdWx0OwogCi0gICAgU2NyaXB0QnVm
ZmVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIFNjcmlwdEJ1ZmZlcihSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIo
V1RGTW92ZShidWZmZXIpKQogICAgIHsKICAgICB9CkBAIC00OCwxNyArNDgsMTcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcm
KTsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwotICAgIFNoYXJlZEJ1ZmZlciogYnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KKyAgICBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5n
ZXQoKTsgfQogCi0gICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJu
IFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLT5j
b3B5KCkpIDogbnVsbHB0cik7IH0KKyAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29u
c3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+KG1fYnVmZmVyLmNvcHkoKSkgOiBudWxscHRyKTsgfQogICAgIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyIHx8ICFtX2J1ZmZlci0+c2l6ZSgpOyB9Cisg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuaXNFbXB0eSgpOyB9CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQo
KSBjb25zdDsKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVu
Y29kZWQgc2NyaXB0LgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7IC8vIENvbnRh
aW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KIH07CiAKIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTY3JpcHRCdWZmZXImLCBjb25zdCBTY3JpcHRCdWZmZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA3NzQxNmVjMDdkN2I2
OGIxMjhlMjk2MWVkYzVkNjQwZDA0ZDRiZDQ1Li40MDY2ZmIzNTJlYjViMDg3ZDVkOGQ0N2Q4MDJm
ZDJjMGE2YTgwZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuY3BwCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFdv
cmtlckZvbnRMb2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KFVSTCYmIHVybCwgTG9h
ZGVkRnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3BhcXVlU291cmNlKQogICAgIDogbV91cmwo
V1RGTW92ZSh1cmwpKQogICAgICwgbV9sb2FkZWRGcm9tT3BhcXVlU291cmNlKGxvYWRlZEZyb21P
cGFxdWVTb3VyY2UpCisgICAgLCBtX2RhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWls
ZGVyPigpKQogewogfQogCkBAIC03NSwxMiArNzYsMjEgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJl
cXVlc3Q6OmxvYWQoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogICAgIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkod29ya2VyR2xv
YmFsU2NvcGUsIFdURk1vdmUocmVxdWVzdCksICp0aGlzLCBvcHRpb25zKTsKIH0KIAorYm9vbCBX
b3JrZXJGb250TG9hZFJlcXVlc3Q6OmlzUGVuZGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuICFt
X2lzTG9hZGluZyAmJiAhbV9lcnJvck9jY3VycmVkICYmIG1fZGF0YS0+aXNOdWxsKCk7Cit9CisK
IGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBB
dG9tU3RyaW5nJikKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhbV9l
cnJvck9jY3VycmVkICYmICFtX2lzTG9hZGluZykgewotICAgICAgICBjb252ZXJ0V09GRlRvU2Zu
dElmTmVjZXNzYXJ5KG1fZGF0YSk7Ci0gICAgICAgIGlmIChtX2RhdGEpIHsKLSAgICAgICAgICAg
IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
Km1fZGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CisgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhOworICAgICAgICBpZiAobV9kYXRh
LT5nZXQoKSkKKyAgICAgICAgICAgIGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLT50YWtlKCktPm1h
a2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29u
dGlndW91c0RhdGEpOworICAgICAgICBpZiAoY29udGlndW91c0RhdGEpIHsKKyAgICAgICAgICAg
IG1fZGF0YS0+YXBwZW5kKCpjb250aWd1b3VzRGF0YSk7CisgICAgICAgICAgICBtX2ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpjb250aWd1b3Vz
RGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKSk7CiAgICAgICAgICAg
ICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKICAgICAgICAgICAgICAgICBtX2Vycm9y
T2NjdXJyZWQgPSB0cnVlOwogICAgICAgICB9CkBAIC0xMTcsOSArMTI3LDYgQEAgdm9pZCBXb3Jr
ZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKQogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmICghbV9kYXRhKQotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOwotCiAgICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IGI5ZmNm
YjFkNmZlYThhZDVlNzgwYmRlZWJjNWM2ZTA0YTFlODYzYzcuLjFiM2Q3ODcwZjEyOGJmZTUzOGVl
NmM5ODU5Y2RhYWU4MWU0NWUyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuaApAQCAtMzAsMTMgKzMwLDE0IEBACiAjaW5jbHVkZSAiUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgog
I2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250Q3Jl
YXRpb25Db250ZXh0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxT
Y29wZTsKIAogc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CkBAIC01MSw3ICs1Miw3IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fdXJsOyB9Ci0gICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVy
biAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9kYXRhOyB9CisgICAgYm9v
bCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1faXNMb2FkaW5nOyB9CiAgICAgYm9vbCBlcnJvck9jY3VycmVkKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9lcnJvck9jY3VycmVkOyB9CiAKQEAgLTc2LDcgKzc3LDcgQEAg
cHJpdmF0ZToKICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0Q2xp
ZW50IHsgbnVsbHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBt
X2NvbnRleHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFVuaXF1ZVJl
ZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJGZXRjaC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlckZldGNoLmgKaW5kZXggZWIyNjZiNmMwN2U2NzNkOTE2NmNhY2U2YjMzOTE5ZDgwZWJi
ZjMxYy4uMDk3NTQzZTFiM2IzMGZmMzE0N2Q5MjMyYTU4Y2U0YTllNjJmM2U0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZl
dGNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlckZldGNoLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsK
IGNsYXNzIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBTZXJ2aWNlV29ya2VyRmV0
Y2ggewogY2xhc3MgQ2xpZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENsaWVudCwg
V1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4gewpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVE
YXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8Rm9ybURhdGE+JiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5pc2goKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKaW5kZXggODlhODc1Zjhh
ZmMwZDYyMzU1YWM2MjI5YTY0YzFjYTQzZDE4NTY1Mi4uOWE4ZmIzNWNhNTM2MTA1YmI2ZDZmYzQ2
ZWUxMjI0NTkzM2Y3MGJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAtMTI3LDcgKzEyNyw4IEBA
IFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzCiAgICAgfQogCiAgICAgLy8gRklYTUU6IERvIHdlIG5l
ZWQgdG8gZGlzYWJsZSBmaWxlIG1hcHBpbmcgaW4gbW9yZSBjYXNlcyB0byBhdm9pZCBoYXZpbmcg
dG9vIG1hbnkgZmlsZSBkZXNjcmlwdG9ycyBvcGVuPwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IFNoYXJl
ZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmls
ZU1hcHBpbmc6Ok5vKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpm
aWxlU2l6ZSkgPyBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRC
dWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAog
dm9pZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmIHJlZ2lzdHJhdGlvbktleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CmluZGV4IGFiOTk2MDNlYTUzZTI0NmI2MzMyMWZiZDQxNDFjYzVlMjljZTk2YjQuLmZjY2MyYTll
ZDIwZDc0N2MwOWM2MTZiNDk4ZTUzMGVmNzhhOGU1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcApAQCAtMTE4LDYgKzExOCw3IEBAIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRw
UmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9yZXNwb25z
ZUNhY2hlSXNWYWxpZChmYWxzZSkKICAgICAsIG1fcmVhZHlTdGF0ZShzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oVU5TRU5UKSkKICAgICAsIG1fcmVzcG9uc2VUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nKSkKKyAgICAsIG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKICAgICAsIG1fcHJvZ3Jl
c3NFdmVudFRocm90dGxlKCp0aGlzKQogICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZYTUxI
dHRwUmVxdWVzdDo6dGltZW91dFRpbWVyRmlyZWQpCiB7CkBAIC0yMDcsOCArMjA4LDggQEAgUmVm
PEJsb2I+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IoKQogCiAgICAgLy8gRklY
TUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFy
ZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGE7Ci0gICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRh
ID0gc3RkOjpleGNoYW5nZShtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJh
Y3REYXRhKCk7CisgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkpCisg
ICAgICAgIGRhdGEgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT5leHRyYWN0RGF0
YSgpOwogICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVk
Q29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZShGaW5hbE1JTUVUeXBlOjpZZXMpKTsgLy8gcmVz
cG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0
LgogICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZN
b3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5cGUpOwogfQpAQCAtMjE4LDggKzIxOSw3IEBA
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlC
dWZmZXIoKQogICAgIEFTU0VSVChyZXNwb25zZVR5cGUoKSA9PSBSZXNwb25zZVR5cGU6OkFycmF5
YnVmZmVyKTsKICAgICBBU1NFUlQoZG9uZVdpdGhvdXRFcnJvcnMoKSk7CiAKLSAgICBhdXRvIHJl
c3VsdCA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIt
PnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDAp
OwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlc3Vs
dCA9ICFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkgPyBtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlci0+dGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNy
ZWF0ZShudWxscHRyLCAwKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC03NDEsNyArNzQx
LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1f
cmVzcG9uc2VFbmNvZGluZyA9IFN0cmluZygpOwogICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFs
c2U7CiAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gbnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnJlc2V0
KCk7CiAgICAgbV9yZXNwb25zZUNhY2hlSXNWYWxpZCA9IGZhbHNlOwogfQogCkBAIC0xMDY1LDgg
KzEwNjUsNiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9k
ZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZl
ciBiaW5hcnkgZGF0YS4KLSAgICAgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAg
ICAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmFwcGVuZChkYXRhLCBsZW4pOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA3Mjg5NGFmNmNjNDdk
YmFlNWU3NWMzYTgwNzkwOWVmMjg0ZjZkNTk3Li4xNjJjYTk1YWViNzU0NDg5YmQ2Y2Q4Y2RjNTA4
NjJjODQ3NzdiYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJV
c2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldC5oIgog
I2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmgiCiAjaW5jbHVk
ZSA8dmFyaWFudD4KQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgQmxvYjsKIGNsYXNzIERvY3VtZW50
OwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VE
ZWNvZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsKIGNsYXNzIFVSTFNlYXJjaFBhcmFtczsK
QEAgLTIzNyw3ICsyMzgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3Jl
c3BvbnNlRG9jdW1lbnQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlcjsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9iaW5hcnlS
ZXNwb25zZUJ1aWxkZXI7CiAKICAgICBTdHJpbmdCdWlsZGVyIG1fcmVzcG9uc2VCdWlsZGVyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eS5jcHAKaW5kZXggNTczMDY3ZTNkZDA1MGZlYjdjNTc5ZDAwMTAyZWU5ZjYw
NDViNTMxMy4uMzFjMmQ3NmYyZWUxYjlkMjQ5YjAwMWI3ZWZmODkyZWMyYTc0NTZjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVByb3h5LmNwcApAQCAtNjEsNyArNjEsNyBAQCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojp+
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSgpCiAgICAgbV9pbnN0YW5jZS0+Y2xlYXJDbGllbnQoKTsK
IH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0
aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBp
bml0RGF0YSkKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6dW5yZXF1ZXN0ZWRJbml0aWFs
aXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIGlmICghbV9jZG0pCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eS5oCmluZGV4IDhlNzNkM2Q5YTY0Yjk4YmZjMDA5MzZjZDQ3YzRjMjVhOTI3
OWYyYzguLjAyYzVjZDM3YWU1NDgwMmY2ZDBjOGRjY2NiMGJhODBjZjMzODhjMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
UHJveHkuaApAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIFJlbW90ZUNETUluc3RhbmNl
UHJveHkoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNl
PiYmLCBVbmlxdWVSZWY8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uPiYmLCBSZW1vdGVD
RE1JbnN0YW5jZUlkZW50aWZpZXIpOwogCiAgICAgLy8gQ0RNSW5zdGFuY2VDbGllbnQKLSAgICB2
b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwg
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCB1bnJlcXVlc3Rl
ZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJl
Y2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCmluZGV4IGU1
NzY2YzIzMzRjZmQzODkzMTBjZDRiMjE3MjNjYWJhMzc0MmZjN2MuLmRlODI3M2I5Y2Y1MDBhNGQ2
NmFhMTQ0ZWRlMDIwMWVlZjFlZDg2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNw
cApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojpy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5nCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRh
VHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24gPSBX
VEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5j
ZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgIG1fc2Vzc2lv
bi0+cmVxdWVzdExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0YS5idWZmZXIoKS5y
ZWxlYXNlTm9uTnVsbCgpLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nl
c3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUo
bWVzc2FnZSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID09
IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKICAgICB9KTsKIH0KQEAgLTExNSw3ICsx
MTUsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjbG9zZVNlc3Npb24o
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlUwogCiB2b2lkIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
TGljZW5zZVR5cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNvbXBsZXRpb24p
CiB7Ci0gICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtj
b21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5
U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZl
cj4+JiYgZXhwaXJlZFNlc3Npb25zRGF0YSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFs
dWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRh
KHNlc3Npb25JZCwgdHlwZSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoQ0RN
SW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNlcywgc3RkOjpvcHRp
b25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYgZXhwaXJlZFNlc3Npb25zRGF0YSwg
Q0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAg
ICAgICAgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGV4cGlyZWRTZXNzaW9u
RGF0YVJlZmVyZW5jZTsKICAgICAgICAgaWYgKGV4cGlyZWRTZXNzaW9uc0RhdGEpCiAgICAgICAg
ICAgICBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2UgPSBJUEM6OlNoYXJlZEJ1ZmZlckNvcHko
V1RGTW92ZSgqZXhwaXJlZFNlc3Npb25zRGF0YSkpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1
c1ZlY3RvciYmIGtleVN0YXR1CiAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6VXBkYXRlS2V5
U3RhdHVzZXMoV1RGTW92ZShrZXlTdGF0dXNlcykpLCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lk
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlw
ZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSB0eXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewogICAgIGlmICghbV9jZG0pCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKaW5kZXggOGE2MWY5ZDVmYWJj
ODQ4NmE3YTBlODYwZjRjNjMxMmMwYjQ0NTUxNC4uZmU3MzA5NzEzMWUwYmIyMGE1MDAxZTE1MDE2
MDJkNjUxODZiMzA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKQEAgLTc3LDcgKzc3
LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAogICAgIHZv
aWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpIGZpbmFsOwotICAgIHZvaWQg
c2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBzZW5kTWVzc2FnZShXZWJDb3JlOjpD
RE1NZXNzYWdlVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVz
c2FnZSkgZmluYWw7CiAgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIGZp
bmFsOwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGZpbmFsIHsgcmV0dXJuIG1f
ZGlzcGxheUlEOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNUHJveHkuY3BwCmluZGV4IDlhYjM1NzVmNGMzYjU1OTU1NWI5Yjg3YjIzMzcxYjFiMWE2
NmRjMTcuLmY3Y2I2YTYzZWI5MzNhYmQ0ZDQ1M2EyMmFiMjk0ZjEzMDMyMzJiMDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcApAQCAt
NjMsMTIgKzYzLDEyIEBAIFJlbW90ZUNETVByb3h5OjpSZW1vdGVDRE1Qcm94eShXZWFrUHRyPFJl
bW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBzdGQ6OnVuCiAKIFJlbW90ZUNETVByb3h5
Ojp+UmVtb3RlQ0RNUHJveHkoKSA9IGRlZmF1bHQ7CiAKLWJvb2wgUmVtb3RlQ0RNUHJveHk6OnN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU2hhcmVkQnVmZmVy
JiBkYXRhKQorYm9vbCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9t
U3RyaW5nJiB0eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAg
IHJldHVybiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEodHlwZSwgZGF0YSk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
UmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgcmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2FuaXRpemVSZXNwb25z
ZShyZXNwb25zZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1Qcm94eS5oCmluZGV4IDY5MjRlNzRlM2Y1MDExYmUyMTViZTRiZDk2YjIzNDgyNjQ3MGY0
MjMuLjNiNjZjNzc1Nzg3MDY5ZTk3NmVlMDY0Zjk2ZmYwN2MwZjcxMmE5MGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oCkBAIC0zNiw3ICsz
Niw3IEBACiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogZW51
bSBjbGFzcyBDRE1SZXF1aXJlbWVudCA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIENETVNlc3Npb25U
eXBlIDogdWludDhfdDsKIHN0cnVjdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uOwpAQCAtNTgs
OCArNTgsOCBAQCBwdWJsaWM6CiAKICAgICBSZW1vdGVDRE1GYWN0b3J5UHJveHkqIGZhY3Rvcnko
KSBjb25zdCB7IHJldHVybiBtX2ZhY3RvcnkuZ2V0KCk7IH0KIAotICAgIGJvb2wgc3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIHJlc3BvbnNlKTsKKyAgICBib29sIHN1cHBvcnRzSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNw
b25zZSk7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKaW5kZXggZTJjZDA1ZDdj
Yzc0ZjIwZWM2OWZhZGZlM2VlMDg1NzU5MmFkODc5Yi4uZGU4ZjZkZjU1YTZlMWZhOGJlOTY2Zjk0
MWUwN2ZlMmY1YzUwMjFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKaW5kZXggOTNiMmZmNzQxYjFmODM2OWIyMDU4
NGU0OTdlNGEwMjFiOWNjZjU3OC4uMjE0MTM3OWQ2YTU5ZWFmMjI4NTE0YjE4N2I1NjlkMDQ3MDNj
MTE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBjb252ZXJ0VG9PcHRpb25h
bERhdGFSZWZlcmVuY2UoVCBhcnIKIHsKICAgICBpZiAoIWFycmF5KQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgIHJldHVybiB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChjb25zdCBj
aGFyKilhcnJheS0+ZGF0YSgpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKSB9OworICAgIHJldHVybiB7
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoY29uc3QgY2hhciopYXJyYXktPmRhdGEo
KSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkgfTsKIH0KIAogdm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHk6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkmJiBpbml0RGF0YSwgR2VuZXJhdGVLZXlDYWxsYmFjayYmIGNvbXBs
ZXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKaW5kZXggZjE0YzYyN2Y2NTkzZTFhODc4ZDBm
NDU5OTJiM2M0MWIyMjJjN2YwMC4uMTU0NmJkZmRmZGNmMDkxMDg3ODk0NGYzNDA3OTY3YTdhYjM4
YmY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgTGVnYWN5Q0RNOwogY2xhc3MgTGVnYWN5Q0RNU2Vzc2lvbjsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAK
IG5hbWVzcGFjZSBJUEMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCmluZGV4IGM0NWU1MjU1ZDY3YjUyYzdhZTEwNDQ5
OTg4Y2UwMTkwYzdmZmI1MzguLjYxN2Y0NzY4OTU2NDJkZWMyMzI1NGI1NDBlZTgxOTExYWM0YTJk
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZS5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291
cmNlOjpkYXRhU2VudCh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0Jl
U2UKICAgICAgICAgbV9jbGllbnQtPmRhdGFTZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0
ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVk
KFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0
YVJlY2VpdmVkKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYg
KG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBXVEZNb3Zl
KGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZS5oCmluZGV4IGQxM2QyNWY2NWYwMjI0YTZjNzY3ZjY5YTRkNDE5Y2QwNTNi
Yjc5NWQuLjViN2E3ZTJhNzQyNDQzMmQ4NmNiMjhhMWJlNzE3MThhMTY3Mzc1ZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2Uu
aApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOZXR3b3Jr
TG9hZE1ldHJpY3M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51
ZVBvbGljeUNoZWNrKT4mJik7CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZv
aWQgZGF0YVNlbnQodWludDY0X3QsIHVpbnQ2NF90KTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBhY2Nlc3NDb250
cm9sQ2hlY2tGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQg
bG9hZEZhaWxlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2Fk
RmluaXNoZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNw
cAppbmRleCA3ZTU3MmIzYTc0YTIwMjdlNzRjYWE3NjcyZTUyZGEwYWY4MzQyMDcyLi5lODNmOTE0
M2QyMGE3MmUyYmU0ZmZjYmZlZDEzYjBiYjRkZDMxZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTEw
Nyw3ICsxMDcsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxh
YmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1vdGVNZWRpYVJl
Y29yZGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVu
Y2UmJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dyaXRlci0+ZmV0
Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShh
dXRvJiYgZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8qIHBvaW50
ZXIgPSBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byBidWZmZXIg
PSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+KCk7CisgICAgICAgIGF1dG8qIHBvaW50ZXIgPSBidWZmZXIgPyBidWZmZXItPmRhdGEo
KSA6IG51bGxwdHI7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5j
ZSB7IHBvaW50ZXIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L1BlbmRpbmdEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvUGVuZGluZ0Rvd25sb2FkLmgKaW5kZXggNTJjYzVkYTEyMWEyZmI1OWQ4Y2YwNTkzYjY4NTA5
ZmQ2NTVjMGNkYy4uNzFmZDAyMjI5YmJiMWM1NzMyNmZkZmNmZTI2YzExZjc2MWFiY2Y3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rv
d25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVu
ZGluZ0Rvd25sb2FkLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxs
b3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0Fs
bG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVj
dGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OworICAg
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKICAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikg
b3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggM2Yz
OWViMzJmMWFhODA3Njc4NWRhNzllZTExZGFkOGYwYzMyNmI3OS4uZDg5MjBlOTg3NjRmZDliNjRi
OWNkZGM2MGExZDg0ZDYxOWIyZDQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTE5
LDcgKzExOSw3IEBAIHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQg
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKIHsKICAgICBDT1JTX0NIRUNLRVJfUkVMRUFTRV9M
T0coImRpZFJlY2VpdmVEYXRhIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAppbmRleCBiYmIxNDYy
YTMxNjFlMmZjZTllYTU3ODQ0YjE5YjkzZTYxOWM4MWIwLi5lMTFiZjU2MzE5MDdhZTQ3MzM2ZWY4
NWE1ZDIyZTg4MzU3NDY1MWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKQEAgLTcxLDcgKzcxLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0
Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdl
KFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMs
IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRM
UywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
OwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZv
aWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0
ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAppbmRleCBk
NjAxOGY2MTM4M2FlM2E1MWU5ZDQ3MjJjZjZhNjBlMmQ4Yjg3YTdkLi5lMDQ5ZTViMTJkZGU1ZmU1
MWI0Njk1NTI4OWE3YTdmNjk5ODJhZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBSZXNvdXJjZUVycm9y
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjMsNyAr
NjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0
aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5l
Z290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2Vu
ZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3Rl
ZFRvU2VuZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3YXNCbG9ja2VkKCkgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAppbmRleCBiYWMwMjJhYjQ1
NDMwZjY1MWIxODlhYzAxMjA3YTA2MDYwOGMxNjcxLi43OTc1ZDQxYmFkODkxNWZlZWRiZGFiMTU1
NGU4MWUxZGIyMDMwZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0CiAg
ICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBOZXR3b3JrTG9hZDo6
ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewog
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB0aGUgZW5jb2RlZCBkYXRhIGxlbmd0aCwgbm90
IHRoZSBkZWNvZGVkIGRhdGEgbGVuZ3RoLgogICAgIGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCmluZGV4IGMzNzcz
Yzk4Nzg1NTNjZTUzNGQwNTRhYmZmZGRlYmIyOWVlMDg0ZDIuLmVlNWViMDA2YWEzNzliNzhmY2Jj
MGJkMTc0ZTMyYmQ2MzlmOTVlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYp
IGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtM
b2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxC
eXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAg
dm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKaW5kZXggMGE1ZjY2YmQ5NjdlYzlmZGY2NjRlNTJlNWFm
Mzk0ZTQ4ZWNlMWY3Yi4uMzQ4Y2ZmYjllOGUyNWVlODNiYmIzOWEwMmNkM2NmNmQyODU0ZDM5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQu
aApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogZW51bSBjbGFzcyBQb2xpY3lB
Y3Rpb24gOiB1aW50OF90OwogfQogCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWdu
ZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3
aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRC
bG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGU1MGNm
NGFiYmU1NjRlNGNhM2ZiNzI2Y2FhOWQ1NjljNTRiMDlkNzIuLjBlNWViNWFkYzAxMmYxZjJlYTc2
NmZjYzFhNDU1MzlmZDVkODljMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg3LDE0ICs4NywxNCBAQCBz
dHJ1Y3QgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRhIHsKICAgICBS
ZXNvdXJjZUVycm9yIGVycm9yOwogfTsKIAotc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJv
bm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRhJiBk
YXRhLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQorc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRhJiBkYXRhLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKIHsKICAgICBBU1NFUlQoZGF0YS5kZWxheWVkUmVwbHkpOwogICAgIEFTU0VSVCghZGF0
YS5yZXNwb25zZS5pc051bGwoKSB8fCAhZGF0YS5lcnJvci5pc051bGwoKSk7CiAKICAgICBWZWN0
b3I8dWludDhfdD4gcmVzcG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNp
emUoKSkKLSAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAgZGF0YS5yZXNwb25z
ZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+
OjpjcmVhdGUobWV0cmljcykpOwogCkBAIC0xMDUsOSArMTA1LDExIEBAIHN0YXRpYyB2b2lkIHNl
bmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hy
b25vdXNMb2FkCiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihO
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseSYmIHN5bmNo
cm9ub3VzUmVwbHkpCiAgICAgOiBtX3BhcmFtZXRlcnMgeyBXVEZNb3ZlKHBhcmFtZXRlcnMpIH0K
ICAgICAsIG1fY29ubmVjdGlvbiB7IGNvbm5lY3Rpb24gfQorICAgICwgbV9idWZmZXJlZERhdGEg
eyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9maWxlUmVm
ZXJlbmNlcyhjb25uZWN0aW9uLnJlc29sdmVCbG9iUmVmZXJlbmNlcyhtX3BhcmFtZXRlcnMpKQog
ICAgICwgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyB7IG1fcGFyYW1ldGVycy5j
bGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0Ns
aWVudEZvckNyZWRlbnRpYWxzIH0KICAgICAsIG1fYnVmZmVyaW5nVGltZXIgeyAqdGhpcywgJk5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCB9CisgICAgLCBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0K
ICAgICAsIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKG1fY29ubmVjdGlv
bi0+Y2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZCgpKQogICAgICwgbV9yZXNv
dXJjZUxvYWRJRCB7IE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH0K
IHsKQEAgLTMwNiwxMCArMzA4LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFy
dE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgICAg
IGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCiAgICAgICAgIGlmIChpc1N5bmNocm9ub3Vz
KCkgfHwgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID4gMF9zKQotICAgICAgICAg
ICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAg
bV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAKICAgICAgICAgaWYgKGNhblVzZUNhY2hlKHJlcXVl
c3QpKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5lbXB0eSgpOwog
ICAgIH0KIAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbV9wYXJhbWV0
ZXJzOwpAQCAtNzMwLDIwICs3MzIsMjAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICAg
ICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiYXBwbGlj
YXRpb24vb2N0ZXQtc3RyZWFtIik7CiAgICAgfTsKIAotICAgIGlmICghbV9idWZmZXJlZERhdGEK
KyAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzTnVsbCgpCiAgICAgICAgICYmIG1fcmVzcG9uc2Uu
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KDEgKiBNQikK
ICAgICAgICAgJiYgaXNGZXRjaE9yWEhSKHJlc291cmNlTG9hZEluZm8pCiAgICAgICAgICYmIGlz
TWVkaWFNSU1FVHlwZShtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpKSB7Ci0gICAgICAgIG1fYnVmZmVy
ZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEt
PmVtcHR5KCk7CiAgICAgICAgIG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA9IFdl
YkxvYWRlclN0cmF0ZWd5OjptZWRpYU1heGltdW1CdWZmZXJpbmdUaW1lOwogICAgIH0KIAogICAg
IC8vIEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5j
IGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBidWZmZXJpbmcgd291bGQgcmVxdWlyZSBz
cGVjaWFsIGhhbmRsaW5nLgogICAgIGlmICghaXNTeW5jaHJvbm91cygpICYmIG1fcmVzcG9uc2Uu
aXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBudWxscHRyOworICAgICAg
ICBtX2J1ZmZlcmVkRGF0YS0+cmVzZXQoKTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlw
YXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAg
ICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5yZXNldCgpOwogCiAgICAgaWYgKG1fY2FjaGVFbnRy
eUZvclZhbGlkYXRpb24pIHsKICAgICAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9y
ZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZApAQCAt
ODU4LDcgKzg2MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kRGlkUmVjZWl2
ZVJlc3BvbnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dzaW5nQ29udGV4CiAgICAgfSk7CiB9CiAKLXZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYg
KCFtX251bUJ5dGVzUmVjZWl2ZWQpCiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVj
ZWl2ZUJ1ZmZlcjogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aD0lZCkiLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKQEAgLTg2NiwyMCArODY4LDIw
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZv
clZhbGlkYXRpb24pOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBp
ZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFByZXZl
bnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXpl
IG9mIGVudHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNh
Y2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwogICAgICAgICBpZiAobV9i
dWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNh
Y2hlQnVmZmVyU2l6ZSkKICAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVu
ZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUt
PnJlc2V0KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRlIHdlIGFs
d2F5cyBnZXQgLTEgZnJvbSB0aGUgcmVzb3VyY2UgaGFuZGxlLgogICAgIHVuc2lnbmVkIGVuY29k
ZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCi0gICAgaWYgKG1fYnVmZmVyZWRE
YXRhKSB7CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpIHsKICAgICAgICAgbV9i
dWZmZXJlZERhdGEtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZlcmVkRGF0
YUVuY29kZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAgICBzdGFydEJ1
ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKQEAgLTkwOSwxMSArOTExLDExIEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbmV0d29ya0xvCiAjZW5kaWYKIAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0gICAgICAg
IHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1f
YnVmZmVyZWREYXRhLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBzZW5kUmVw
bHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVk
RGF0YS0+Z2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0gICAg
ICAgIGlmIChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgewor
ICAgICAgICBpZiAoIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8v
IEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBzaXpl
IGZlYXR1cmUuCi0gICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwgLTEpOwor
ICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEtPmdldCgpLCAtMSk7CiAgICAg
ICAgIH0KICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlz
aFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU2LDE5ICsx
MjU4LDE5IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydEJ1ZmZlcmluZ1RpbWVy
SWZOZWVkZWQoKQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJG
aXJlZCgpCiB7Ci0gICAgQVNTRVJUKG1fYnVmZmVyZWREYXRhKTsKKyAgICBBU1NFUlQoIW1fYnVm
ZmVyZWREYXRhLT5pc051bGwoKSk7CiAgICAgQVNTRVJUKG1fbmV0d29ya0xvYWQpOwogCiAgICAg
aWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNl
bmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZl
cmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWRE
YXRhLT5nZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBt
X2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZmZXJlZERh
dGEtPmVtcHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9
CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6c2VuZEJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBl
bmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWlzU3luY2hyb25vdXMoKSk7CiAKQEAg
LTEyODEsNyArMTI4Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFz
Q2FjaGVFbnRyeSgpCiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hl
RW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVzdCBpcyBub3QgZWxp
Z2libGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUpIHsKKyAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+aXNOdWxsKCkpIHsK
ICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0
b3JpbmcgY2FjaGUgZW50cnkgYmVjYXVzZSBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIGlzIG51bGwi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyODksMTIgKzEyOTEsMTIgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICBpZiAoaXND
cm9zc09yaWdpblByZWZldGNoKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX2Nv
bm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKSB7
CiAgICAgICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBT
dG9yaW5nIGVudHJ5IGluIHByZWZldGNoIGNhY2hlIik7Ci0gICAgICAgICAgICBzZXNzaW9uLT5w
cmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwo
KSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7
CisgICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9h
ZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS0+dGFrZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3Jpbmcg
ZW50cnkgaW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3Jr
TG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11
dGFibGUgeworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0
KCksIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSwgW2xvYWRlciA9
IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShT
SEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291
cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDIz
NGRhYjViZWVhNWI2NDczMDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uOTg0NDI0YTMwNjgxYTM2MGZj
NjBjOWU3YTlkZDRlNmJiNDI2ZGU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw2ICs0Nyw4IEBAIGNsYXNzIEJsb2JEYXRhRmlsZVJl
ZmVyZW5jZTsKIGNsYXNzIEZvcm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTE0
LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRl
bnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVk
ZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFs
OworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZv
aWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKSBmaW5hbDsKICAgICB2b2lkIGRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSBm
aW5hbDsKQEAgLTE5Miw3ICsxOTUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzdGFydEJ1ZmZl
cmluZ1RpbWVySWZOZWVkZWQoKTsKICAgICB2b2lkIGJ1ZmZlcmluZ1RpbWVyRmlyZWQoKTsKLSAg
ICB2b2lkIHNlbmRCdWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWRE
YXRhTGVuZ3RoKTsKKyAgICB2b2lkIHNlbmRCdWZmZXIoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAKICAgICB2b2lkIGNvbnN1bWVT
YW5kYm94RXh0ZW5zaW9ucygpOwogICAgIHZvaWQgaW52YWxpZGF0ZVNhbmRib3hFeHRlbnNpb25z
KCk7CkBAIC0yMjUsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIG1fcmVzcG9uc2U7CiAKICAgICBzaXplX3QgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0
YUxlbmd0aCB7IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZl
cmVkRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9i
dWZmZXJlZERhdGE7CiAgICAgdW5zaWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFN5bmNocm9ub3VzTG9hZERhdGE+IG1fc3luY2hyb25vdXNMb2FkRGF0
YTsKQEAgLTI0MCw3ICsyNDMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9i
dWZmZXJpbmdUaW1lcjsKICAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
OworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBt
X2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2Fj
aGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uOwogICAgIGJvb2wg
bV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0IHsgZmFs
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXggMTE0
ODUzZTQ1YjcyNTMzNjRjNzQ3YTcxY2IyYjVhYjhjYzM4ZWZkNS4uMWFmMWUwOGUzYzQ0MWUyNGYz
MDA2NWU5ZjIwNzc2ZTZmOWZjMzNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
aW5nTG9hZC5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VAog
ICAgIGRpZEZpbmlzaCh7IH0sIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBQaW5nTG9hZDo6ZGlkUmVj
ZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVE
YXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQogewogICAgIFBJTkdfUkVMRUFTRV9M
T0coImRpZFJlY2VpdmVEYXRhIik7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKaW5kZXggMTllYzhjZWI5MmUzYzhhMDU2ZjQ5
MjczNjYwY2ZmZjkyNjQzNDFkMS4uYWIyOWEwYjFhYzg0NjZiMGVkNjFlZjU4ZWY0YzIyMGFiYWI2
ZWJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtNTQsNyAr
NTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVk
aXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFs
bGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2Fj
eVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVn
YWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90
YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRh
c2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAK
aW5kZXggNDU1NzgyZDU0YTJlYTliZWUxODY1MGUxYWZkMWNmN2IyY2U5OGM0OS4uMTdkNDc5MDdh
M2Y2ZWU1MmJlNjUwMWQxZGFiMGNhNjA3NTFkNmIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBQ
cmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNw
b25zZSwgUmVzcG9uc2VDb20KICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Okln
bm9yZSk7CiB9CiAKLXZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFByZWNv
bm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29u
bmVjdFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2su
aAppbmRleCAxYzFmZjE2NDcxMTFjNmZhODQ5NGFmNWNmMGM3YmJlYWExYjI2NTAzLi44NTgwOGUx
MjFiNjhjYThiNzNlMjUxOGQxOTNhYjM5NTgxZWFkMWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNp
Z25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBmaW5hbDsKICAgICB2b2lkIHdpbGxT
ZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5h
bDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlci5jcHAKaW5kZXggNzFlMGNmNmM2ZGM3YmVhNTIyYzkwNjAwNTU1ZjU3MjE2MWMzYzJmNC4u
ODE5NjYzMDIwYzY5NWNlMGM2YWJhOTk5YzY3NWFhYjQyODJjN2ZkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCkBAIC0xNzQs
MTAgKzE3NCwxMCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlcwogICAgICAgICBjYWxsYmFjaygp
OwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2spCi0gICAgICAg
IG1fYm9keUNhbGxiYWNrKFdURk1vdmUoYnVmZmVyKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCk7CisgICAgICAgIG1fYm9keUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSwgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBu
ZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRlci5oCmluZGV4IDFlNzhjMmNlZmExNTQ4NDEwNDA2MGYzYjE5ZGM1MGU2
Y2I4ZjFlYjQuLmVlMWJjOGI3ZDZjYmZmYzMzNDFkNjczZmI3MjQyMjM4ZjY3MTdmMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCkBA
IC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JD
cmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmlu
YWw7CiAgICAgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljczsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAK
aW5kZXggOGVlMTEyYTlkZjgyODk1NGMxNjIzZmZmMjJjMmEyMGZkOGUyZmU3ZC4uN2EyNjIyMTlk
ZTc4YjIzNWQxMjVhOTJiNmUyMzZkMzMyNjJmN2EyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgUmVz
b3VyY2VFcnJvciBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6cHJvY2Vzc1Jlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG8KICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIFNlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAg
ICBpZiAoIW1fZGVjb2RlcikgewogICAgICAgICBpZiAoIW1fcmVzcG9uc2VFbmNvZGluZy5pc0Vt
cHR5KCkpCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwKICAgICB9
CiAKICAgICBpZiAoYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2NyaXB0
LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPmRhdGEoKSwgc2l6ZSkpOworICAgICAg
ICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIHNpemUpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAppbmRl
eCAxOGY1NDY5MWYzN2MyYmFiYmM4YzFhM2JjMDk0MzcwZTliMjllYjcxLi40NGZjMDY4NWZhMGZl
ZGM4NzQyMTkxNmU5MTNhNjc0YjFjMGZkYmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmlu
YWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggMDQ3NzY4MzZmOTk5
MDkzOTEwYjM5OWQ3NTUzODU1ZDVkM2YxZmY0ZS4uZGQzMDVhZjI5NzY2MWU0NzZjNDk2NzdkZjU3
MjFlZmQxZWM5MzJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgQ2FjaGU6OmNv
bXBsZXRlUmV0cmlldmUoUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIsIHN0ZDo6
dW5pcXVlX3B0CiAgICAgaGFuZGxlcihXVEZNb3ZlKGVudHJ5KSwgaW5mbyk7CiB9CiAgICAgCi1z
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjptYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEpCitz
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjptYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9u
c2VEYXRhKQogewogICAgIHJldHVybiBtYWtlVW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVx
dWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKHJlc3BvbnNlRGF0YSksIFdlYkNvcmU6OmNvbGxlY3RW
YXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihtX3Nl
c3Npb25JRCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CkBAIC00NjQsNyArNDY0LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZVJlZGlyZWN0RW50cnkoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JgogICAgIHJldHVybiBtYWtlVW5pcXVlPEVudHJ5PihtYWtlQ2Fj
aGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OmNvbGxl
Y3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbiht
X3Nlc3Npb25JRCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJv
ZHkmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3N0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6
OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHJlc3BvbnNlRGF0YSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5o
CmluZGV4IDE5OWYwY2ZiNzMyNTQzYzVmZWFmNGZlMjMwMWU2YTFjMTJmODhmZTguLmVkMDRlYmNh
MGIzNmYzZjljNGMwZTdiYWM3MTMzNmI5ZTk2YzM1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtNDMsNyArNDMsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTG93UG93ZXJNb2RlTm90aWZpZXI7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE2Niw3ICsxNjYsNyBAQCBw
dWJsaWM6CiAgICAgfTsKICAgICB1c2luZyBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyID0gRnVu
Y3Rpb248dm9pZChzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+LCBjb25zdCBSZXRyaWV2ZUluZm8mKT47
CiAgICAgdm9pZCByZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBHbG9iYWxGcmFtZUlEJiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bj4sIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5PiBzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgRnVu
Y3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgPSBudWxscHRyKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgPSBudWxscHRyKTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPFNl
Y29uZHM+IG1heEFnZUNhcCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiB1cGRhdGUoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgRW50cnkmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiB2YWxpZGF0aW5nUmVzcG9uc2UpOwogCkBAIC0xODUsNyArMTg1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmV0cmlldmVEYXRhKGNvbnN0IERhdGFLZXkmLCBGdW5j
dGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPik7CiAgICAgdm9pZCBzdG9yZURhdGEo
Y29uc3QgRGF0YUtleSYsICBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOwogICAgIAotICAg
IHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IG1ha2VFbnRy
eShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbWFrZVJlZGlyZWN0RW50cnkoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KTsKIAogICAgIHZv
aWQgZHVtcENvbnRlbnRzVG9GaWxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCmluZGV4IGJhMzlkOWUyYzI2
YTAxYTkyNmIxMWFhNzk5ZTM2NjJmYzZhZTA1NDkuLjc2MTA3OGRlYTA5M2MwNDU1NWJlOThiMDUx
NzNlMzQxNTA2N2E4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC0zNyw3ICszNyw3IEBACiBuYW1l
c3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogCi1FbnRyeTo6RW50cnko
Y29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9yPHN0
ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpCitFbnRyeTo6
RW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RI
ZWFkZXJzKQogICAgIDogbV9rZXkoa2V5KQogICAgICwgbV90aW1lU3RhbXAoV2FsbFRpbWU6Om5v
dygpKQogICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKQEAgLTEwMSw4ICsxMDEsMTAgQEAgU3Rv
cmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAgICAg
RGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogICAg
IERhdGEgYm9keTsKLSAgICBpZiAobV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IG1fYnVmZmVy
LT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICBpZiAobV9idWZmZXIpIHsKKyAgICAg
ICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYm9keSA9
IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U2hhcmVkQnVmZmVyKj4obV9idWZmZXIuZ2V0KCkpLT5k
YXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICB9CiAKICAgICByZXR1cm4geyBtX2tleSwg
bV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CiB9CkBAIC0xOTQsNyArMTk2LDcgQEAg
dm9pZCBFbnRyeTo6aW5pdGlhbGl6ZUJ1ZmZlckZyb21TdG9yYWdlUmVjb3JkKCkgY29uc3QKICAg
ICBtX2J1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc291cmNlU3RvcmFn
ZVJlY29yZC5ib2R5LmRhdGEoKSwgbV9zb3VyY2VTdG9yYWdlUmVjb3JkLmJvZHkuc2l6ZSgpKTsK
IH0KIAotV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBFbnRyeTo6YnVmZmVyKCkgY29uc3QKK1dlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIEVudHJ5OjpidWZmZXIoKSBjb25zdAogewogICAg
IGlmICghbV9idWZmZXIpCiAgICAgICAgIGluaXRpYWxpemVCdWZmZXJGcm9tU3RvcmFnZVJlY29y
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVFbnRyeS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVFbnRyeS5oCmluZGV4IDk2OTE1YzM4MDFjMzdkZGFjM2U4ZTYwMzIxZjg4YzIyMjlj
ZDU5YTAuLjljMDQyMGQ0NGE4MTU4ZGZjNWIyMWNmMTg4MjA0Y2YzYTkxNmI0MmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVu
dHJ5LmgKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw3ICs0NCw3
IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogY2xhc3MgRW50cnkgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0
SGVhZGVycyk7CisgICAgRW50cnkoY29uc3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVy
cyk7CiAgICAgRW50cnkoY29uc3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25z
dCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVy
cyk7CiAgICAgZXhwbGljaXQgRW50cnkoY29uc3QgU3RvcmFnZTo6UmVjb3JkJik7CiAgICAgRW50
cnkoY29uc3QgRW50cnkmKTsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNw
b25zZTsgfQogICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFy
eWluZ1JlcXVlc3RIZWFkZXJzKCkgY29uc3QgeyByZXR1cm4gbV92YXJ5aW5nUmVxdWVzdEhlYWRl
cnM7IH0KIAotICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3Q7CisgICAg
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3Q7CiAgICAgY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+JiByZWRpcmVjdFJlcXVl
c3QoKSBjb25zdCB7IHJldHVybiBtX3JlZGlyZWN0UmVxdWVzdDsgfQogCiAjaWYgRU5BQkxFKFNI
QVJFQUJMRV9SRVNPVVJDRSkKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8
c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gbV92YXJ5aW5nUmVxdWVzdEhlYWRlcnM7CiAKICAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gbV9yZWRpcmVjdFJlcXVl
c3Q7Ci0gICAgbXV0YWJsZSBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsK
KyAgICBtdXRhYmxlIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgIG11dGFibGUgU2hhcmVh
YmxlUmVzb3VyY2U6OkhhbmRsZSBtX3NoYXJlYWJsZVJlc291cmNlSGFuZGxlOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJmZDQw
ODAzMTA1NDY4MzUzNmVhMGRjODE5My4uN2IwYWRjNDBmMGIwYjY3MTQ3MWEyN2FiNTEzOTc2NmQ0
YjU1NTQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtMTA5LDcg
KzEwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJlY2Vp
dmVkUmVzcG9uc2U7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAg
ICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERh
dGFGb3JDYWNoZS5yZXNldCgpOwogCiAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9y
ZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAogICAg
IGlmICh2YWxpZGF0aW9uU3VjY2VlZGVkICYmIG1fY2FjaGVFbnRyeSkKQEAgLTEyMCwxNyArMTIw
LDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VS
ZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9s
aWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpCit2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5KTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9m
IHN0cmVhbWluZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVy
U2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQot
ICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQoKSk7
CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6
ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiB9CiAKQEAgLTEzOSwxMCArMTM5LDEwIEBA
IHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtMb2FkTWV0cmljcyYpCiAgICAgaWYgKG1fZGlkQ29tcGxldGUpCiAgICAgICAgIHJldHVy
bjsKICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7Ci0g
ICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBt
X3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNvcHlSZWYoKSwgW10oYXV0byYgbWFw
cGVkQm9keSkgeyB9KTsKKyAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9v
cmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuZ2V0KCks
IFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CiAgICAgICAgIC8vIENyZWF0ZSBhIHN5bnRoZXRp
YyBjYWNoZSBlbnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4KICAgICAgICAgaWYgKCFtX2NhY2hlRW50
cnkgJiYgaXNTdGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZhdWx0KG1fcmVzcG9uc2UuaHR0cFN0YXR1
c0NvZGUoKSkpCi0gICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnko
bV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JD
YWNoZSkpOworICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1f
b3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2Uo
KSk7CiAgICAgfQogCiAgICAgZGlkQ29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5oCmluZGV4IGMwZTFlMTRiMmFjNDYwMzU4ZjgxNDA3Y2Q3MGM0MDkwNTJhZjhlZmUuLjFi
ODQzZGI3ZWMyNzBkYjlkYWI5ZThhMjVmMmE0OGE4ZWNhZTJhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWQuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNB
bGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBS
ZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmco
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCkBAIC03NSw3ICs3NSw3
IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7
CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFGb3JD
YWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVu
dHJ5OwogICAgIGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKaW5kZXgg
NWUyZTAyZTJmYmEwYjRhMGMwM2I1ZDNlNjZiOTdmN2JjY2M3OTU4Yi4uMzE5OWJmZjMxMWI2YzNl
ZWZiZTk1MGI0NWU2YjBhOTZlMzI3NzdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1QcmVmZXRjaENhY2hlOjpFbnRyeTo6RW50cnkoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK1ByZWZldGNoQ2FjaGU6OkVudHJ5OjpFbnRyeShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IHJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKSwgYnVm
ZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKIH0KQEAgLTcyLDcgKzcyLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFByZWZldGNoQ2FjaGU6OkVudHJ5PiBQcmVmZXRjaENhY2hlOjp0YWtlKGNvbnN0IFVSTCYg
dXJsKQogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyBleHBpcmF0aW9uVGltZW91dCB7IDVfcyB9Owog
Ci12b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmUoY29uc3QgVVJMJiByZXF1
ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fc2Vz
c2lvblByZWZldGNoZXMpCiAgICAgICAgIG1fc2Vzc2lvblByZWZldGNoZXMgPSBtYWtlVW5pcXVl
PFByZWZldGNoRW50cmllc01hcD4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKaW5kZXggYTI1MTUyMGIzMWVhYzkyMWMyMmQzMTE1
MWQ2ZDIzMWExYmVkMTM4Yy4uNTJjMGIxMGZjYzZkNWE2ZGUxMTQ0N2U3ZTRlODIyZGY4Zjg0MWNi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRj
aENhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRj
aENhY2hlLmgKQEAgLTQ3LDE4ICs0NywxOCBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgRW50cnkg
ewogICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIEVudHJ5
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJik7CisgICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRy
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgICAgICBFbnRyeShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKIAot
ICAgICAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWxlYXNlQnVmZmVyKCkgeyByZXR1
cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7IH0KKyAgICAgICAgUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHJlbGVhc2VCdWZmZXIoKSB7IHJldHVybiBidWZmZXIucmVsZWFz
ZU5vbk51bGwoKTsgfQogCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9u
c2U7Ci0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAg
ICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlZGlyZWN0UmVxdWVzdDsKICAgICB9OwogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiB0YWtlKGNvbnN0IFVSTCYpOwotICAgIHZvaWQgc3Rv
cmUoY29uc3QgVVJMJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIHN0b3JlKGNvbnN0IFVSTCYsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpOwogICAgIHZvaWQgc3RvcmVSZWRpcmVjdChjb25zdCBVUkwmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EuaAppbmRleCBiOWFiMGRlZWJiOWY5MjdjNzM3NDJlODZhMGJlN2Y5NzE2
MGJkNmZiLi40MTY2OGE1YjFjZDczODY5NjdiOGZkOTczZTk2NzMyZWNhOTA3ZWRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZE5lZ290
aWF0ZU1vZGVyblRMUyhjb25zdCBVUkwmKTsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9y
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKTsKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVk
aXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIHRyYW5zZmVyU2FuZGJveEV4dGVu
c2lvblRvRG93bmxvYWQoRG93bmxvYWQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IGU3ODBk
NmMxYzNjZDFlYjJjMmZmNWEwYzU2NGEwZTRkODhiN2VhNWQuLjMwNTFmMTY5Y2IwYTM3MDk5ODVh
MTYxMTIyYzI1ZjBlOGYxN2JkOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtNDQyLDcgKzQ0
Miw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVyCiAgICAgICAgIG1fY2xpZW50LT5kaWRDb21w
bGV0ZVdpdGhFcnJvcihlcnJvciwgbmV0d29ya0xvYWRNZXRyaWNzKTsKIH0KIAotdm9pZCBOZXR3
b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiBkYXRhKQordm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZURhdGEoUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBXVEZFbWl0
U2lnbnBvc3QobV90YXNrLmdldCgpLCAiRGF0YVRhc2siLCAicmVjZWl2ZWQgJXpkIGJ5dGVzIiwg
ZGF0YS0+c2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCmluZGV4IDhmYzdiNjYzZTZmNzU2MmIy
YjM1NDg5Mzk4YTJmZTczMWJlMDc0ZjEuLjM3ZjI5NDE2NjQ2YzQ3ZTFkYTFmZDk5NDFjY2FjMDBi
NWRjMGZkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9O
ZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIE5l
dHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJl
cXVlc3QsIEN1cmxSZXNwbwogICAgIGludm9rZURpZFJlY2VpdmVSZXNwb25zZSgpOwogfQogCi12
b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0
JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6
OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAg
ICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IHN0YXRlKCkgPT0gU3RhdGU6OkNv
bXBsZXRlZCB8fCAoIW1fY2xpZW50ICYmICFpc0Rvd25sb2FkKCkpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKaW5k
ZXggMWM0MjdkZGI3OGQ2OTUzZmU4OTYwYzU2OTJhZmRlNGY0ZjBlZWU4NS4uNDViZTVjZTE4NDMy
NTI3MWQ1YzA4MGRkMzRmMWVlNGExNjY0MmExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCkBAIC02OCw3ICs2
OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmPFdlYkNvcmU6OkN1cmxSZXF1ZXN0PiBjcmVhdGVDdXJs
UmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVxdWVzdFN0YXR1cyA9IFJlcXVl
c3RTdGF0dXM6Ok5ld1JlcXVlc3QpOwogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKFdlYkNvcmU6
OkN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92
ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpDdXJsUmVx
dWVzdCYsIFdlYkNvcmU6OkN1cmxSZXNwb25zZSYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGN1cmxE
aWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihXZWJD
b3JlOjpDdXJsUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShXZWJDb3JlOjpDdXJsUmVxdWVz
dCYsIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1
cmxEaWRGYWlsV2l0aEVycm9yKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYmLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mJikgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92
aWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1By
b3ZpZGVyLmgKaW5kZXggZjVkYjcwNmM0NDU4MDIxMDg3Zjk1OTk2NjlkZmE3ZDlmODM3OTc4Yy4u
MzNkNDNiNzIyMzhkMjAzZTdlZGVjOTQxNGNhZjlmZGE4ZjQwNTI2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVy
LmgKQEAgLTU1LDcgKzU1LDcgQEAgc3RydWN0IFBhY2tldE9wdGlvbnM7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmluZGV4
IGRmOGVlMzBjNDNjMGZmZjRkMGVhNmQ4Y2VjZTNmY2Y0Y2IzM2VmNzEuLmY2NzY2ODg1N2ZmNWMy
ZTUzMmQ1YjRiNTE0ZjJlMmNmNDlmNzYyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC01MSw5ICs1MSw5IEBAIHN0ZDo6b3B0aW9u
YWw8U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKICAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwog
ICAgIHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAyYmMx
MDhlNTYzYTZlM2RmMTgzMmU5Zi4uYmU2OGQ5ZTI2YTA0ODA3YTU2MGE2NzI5ODkyNzUyNjNmYzdj
MWIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVy
Q29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aApAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLS8vIEVuY29kZXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBpcyByZWNlaXZlZCBhcyBhIGNv
cHkgb2YgdGhlIGRlY29kZWQgZGF0YSBpbiBhIG5ldyBTaGFyZWRCdWZmZXIuCisvLyBFbmNvZGVz
IGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgY29weSBvZiB0
aGUgZGVjb2RlZCBkYXRhIGluIGEgbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAvLyBUbyBh
dm9pZCBjb3B5aW5nIGZyb20gdGhlIERlY29kZXIsIHVzZSBTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlIHRvIHJlY2VpdmUgYSBEYXRhUmVmZXJlbmNlIGluc3RlYWQuCiAKICNwcmFnbWEgb25jZQpA
QCAtMzksMTUgKzM5LDEyIEBAIGNsYXNzIFNoYXJlZEJ1ZmZlckNvcHkgewogcHVibGljOgogICAg
IFNoYXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVy
KFdURk1vdmUoYnVmZmVyKSkgeyB9Ci0gICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZl
cikpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
JiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSkKLSAgICB7Ci0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVmZmVyKTsKLSAgICB9Cisg
ICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4oKSkgeyB9CisgICAgU2hh
cmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5tYWtlQ29udGlndW91cygpKSB7IH0KKyAg
ICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSkgeyB9
CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4g
bV9idWZmZXI7IH0KICAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaAppbmRleCBkM2QwZWM1
ZTk3ODU1OTliNjM0YTg0YzZjNDQ3MWI1MmNkMjIxM2YxLi42N2VjOGU1ZTkyYmQwMjQxMTVkYjBk
NDA4MGEyNGZlNzM1NzBkM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8gRW5jb2RlcyBhIFNoYXJl
ZEJ1ZmZlciBvciBEYXRhUmVmZXJlbmNlIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBEYXRhUmVmZXJl
bmNlIHRvIHRoZSBkZWNvZGVkIGRhdGEuCisvLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciBvciBEYXRhUmVmZXJlbmNlIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBEYXRhUmVmZXJlbmNl
IHRvIHRoZSBkZWNvZGVkIGRhdGEuCiAKICNwcmFnbWEgb25jZQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL1NoYXJlZE1lbW9yeS5jcHAKaW5kZXggZDI0MDZlZTI5MDUzMTFmNjliNzU4NDIxZTc3YTNl
NjZjYmEyN2I2NS4uYzAyNmY1NDk1NjliMmJlMDA3OGFlMzI1ZDA1MzllMDcxYWYxMTA0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAtMzIsNyArMzIsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0cjxT
aGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK1JlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNTEsNyArNTEsNyBAQCBSZWZQ
dHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRhdGFTaXplIDw9
IHNpemUoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHsKKyAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3By
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSAtPiBjb25zdCB1aW50OF90KiB7CiAgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHByb3RlY3RlZFRoaXMt
PmRhdGEoKSk7CiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaApp
bmRleCBlMzcxYmNkNzMwMmNmODVlYmFiMmI1YTg1ZTdiZTQ5ZGNmNTY1MmFiLi4xYjRmZGZhZjY4
Mzg5ZGNlNzI4ZmYzNGU1ZTVmMDEyZTI0M2ZhMmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hh
cmVkTWVtb3J5LmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgRW5jb2RlcjsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIH0KIAogI2lmIE9TKERBUldJTikKQEAgLTEyMCw3ICsxMjEsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBGSVhNRTogQ2hhbmdlIHRoZXNlIGZhY3RvcnkgZnVuY3Rpb25zIHRvIHJldHVybiBS
ZWY8U2hhcmVkTWVtb3J5PiBhbmQgY3Jhc2ggb24gZmFpbHVyZS4KICAgICBzdGF0aWMgUmVmUHRy
PFNoYXJlZE1lbW9yeT4gYWxsb2NhdGUoc2l6ZV90KTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJl
ZE1lbW9yeT4gY29weUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKKyAgICBz
dGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gY29weUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IG1h
cChjb25zdCBIYW5kbGUmLCBQcm90ZWN0aW9uKTsKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VU
UykKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gd3JhcE1hcCh2b2lkKiwgc2l6ZV90
LCBpbnQgZmlsZURlc2NyaXB0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJj
aGl2ZVJlc291cmNlLm1tCmluZGV4IGNhMGMyNGIyNzczNTQ3Njc2ZTM0ODAxYzc5YTFkNTY1YmY5
NWZlNWQuLjExMGUwYWRkZTU1OGE5ZDkzMzhiMjQ1MDZlODkxNjNjOTM2OTcxOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KQEAgLTY4LDcgKzY4
LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEodW5zaWduZWQg
Y2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAKIFJlZjxBUEk6OkRhdGE+IFdlYkFyY2hpdmVSZXNv
dXJjZTo6ZGF0YSgpCiB7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNo
aXZlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVDRkRhdGEoKTsKKyAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZUNGRGF0YSgpOwogCiAgICAgLy8gQmFsYW5jZWQgYnkgQ0ZSZWxlYXNlIGluIHJlbGVh
c2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhLgogICAgIENGUmV0YWluKGNmRGF0YS5nZXQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tCmluZGV4IDg3ZjRlYjFlYmEyODcyZTBjYjBhYjk1OTE2YWZlZGUyOWZjYmEy
NDQuLjNjMWI1N2Q1YWEyNmVjNzJlNjBiNWQ3OGExMWU5ZmQ4NTJjZmZlYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0Nv
Y29hLm1tCkBAIC01NjQsMTMgKzU2NCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQ
bGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCppbmNsdWRlc0NyZWF0aW9uRGF0
YSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBm
b250RmFjZURhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gZm9udEZh
Y2VEYXRhOwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgLy8gVXBvbiByZWNlaXB0LCBjb3B5IHRoZSBkYXRhIGZv
ciBzZWN1cml0eSwgc28gdGhlIHNlbmRlciBjYW4ndCBzY3JpYmJsZSBvdmVyIGl0IHdoaWxlIHdl
J3JlIHVzaW5nIGl0LgotICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZm9udEZhY2VEYXRhLnZhbHVlKCktPmRhdGEoKSwgZm9udEZh
Y2VEYXRhLnZhbHVlKCktPnNpemUoKSk7CisgICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEg
PSBmb250RmFjZURhdGEudmFsdWUoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgICAgICBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gaXRlbUluQ29sbGVjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBp
dGVtSW5Db2xsZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVh
YmxlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
Y3BwCmluZGV4IGM2OTYxYzcxNDQwMmJmMzc3YWU5MTBmYmI2Y2NhYTUyZDNiODQxMjguLjZmYTAy
YTdiYzNlZTU0YWU2ZDMyNTM4MTBkNzhkZWMzMTY1MzUzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgYm9vbCBTaGFyZWFi
bGVSZXNvdXJjZTo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUm
IGhhbmRsZSkKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJ
blNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlbGYgPSBSZWYgeyAq
dGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPmRhdGEoKTsgfSwKICAgICAgICAgW3NlbGYgPSBSZWYg
eyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPnNpemUoKTsgfQogICAgIH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNjQ5ODJiYzQ4
MTAyYTRhZGIyMGE3ZTYwZTIxYmQ0OTJkNjUzMzc0Yy4uODQzZmQ0NzMxM2FlZWNhMjk5MzA2MTJm
YzVlYzU3ODc1NTQzNDJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgREVGSU5FX1NJTVBMRV9BUkdVTUVO
VF9DT0RFUl9GT1JfU09VUkNFKERpc3BsYXlMaXN0OjpTZXRJbmxpbmVTdHJva2VDb2xvcikKIAog
I3VuZGVmIERFRklORV9TSU1QTEVfQVJHVU1FTlRfQ09ERVJfRk9SX1NPVVJDRQogCi1zdGF0aWMg
dm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVm
ZmVyKiBidWZmZXIpCitzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogewogICAgIGJvb2wg
aXNOdWxsID0gIWJ1ZmZlcjsKICAgICBlbmNvZGVyIDw8IGlzTnVsbDsKQEAgLTE3Nyw3ICsxNzcs
NyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAgICAgICAgIHJldHVybjsKIAogI2lmIFVTRShVTklY
X0RPTUFJTl9TT0NLRVRTKQotICAgIC8vIERvIG5vdCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgU2hh
cmVkQnVmZmVyIGVuY29kaW5nIGluIFVuaXgsIGJlY2F1c2UgaXQncyBlYXN5IHRvIHJlYWNoIHRo
ZQorICAgIC8vIERvIG5vdCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciBlbmNvZGluZyBpbiBVbml4LCBiZWNhdXNlIGl0J3MgZWFzeSB0byByZWFjaCB0aGUKICAg
ICAvLyBtYXhpbXVtIG51bWJlciBvZiBmaWxlIGRlc2NyaXB0b3JzIG9wZW4gcGVyIHByb2Nlc3Mg
d2hlbiBzZW5kaW5nIGxhcmdlIGRhdGEgaW4gc21hbGwgY2h1bmtzCiAgICAgLy8gb3ZlciB0aGUg
SVBDLiBDb25uZWN0aW9uVW5peC5jcHAgYWxyZWFkeSB1c2VzIHNoYXJlZCBtZW1vcnkgdG8gc2Vu
ZCBhbnkgSVBDIG1lc3NhZ2UgdGhhdCBpcwogICAgIC8vIHRvbyBsYXJnZS4gU2VlIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg1NzEuCkBAIC0yNjQsNyArMjY0LDcg
QEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNv
ZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW4KICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBkYXRhLmFwcGVuZChXVEZNb3Zl
KGJ1ZmZlcikpOworICAgICAgICBkYXRhLmFwcGVuZChidWZmZXIpOwogICAgIH0KIAogICAgIHJl
dHVybiB0cnVlOwpAQCAtMTU1MCwxMCArMTU1MCwxMCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UGFz
dGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
CiAgICAgaWYgKGhhc1N0cmluZykKICAgICAgICAgZW5jb2RlciA8PCBzdGQ6OmdldDxTdHJpbmc+
KHBsYXRmb3JtRGF0YSk7CiAKLSAgICBib29sIGhhc0J1ZmZlciA9IHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSk7CisgICAgYm9vbCBoYXNCdWZm
ZXIgPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4o
cGxhdGZvcm1EYXRhKTsKICAgICBlbmNvZGVyIDw8IGhhc0J1ZmZlcjsKICAgICBpZiAoaGFzQnVm
ZmVyKQotICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rlciwgc3RkOjpnZXQ8UmVmPFNo
YXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSkucHRyKCkpOworICAgICAgICBlbmNvZGVTaGFyZWRC
dWZmZXIoZW5jb2Rlciwgc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihwbGF0
Zm9ybURhdGEpLnB0cigpKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpFbnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6RW50cnkmIGRhdGEpCkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNl
cmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVk
QXR0YWNobQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4ge3sgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92
ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSkgfX07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZN
b3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKSB9IH07CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVN
RU5UKQpAQCAtMzAxMCw2ICszMDEwLDM0IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZVZhbHVlPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRQCiB9CiAj
ZW5kaWYKIAordm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRC
dWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVy
KGRlY29kZXIsIGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4gYnVmZmVyOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNo
YXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIo
ZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCiB2b2lkIEFyZ3Vt
ZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsK
ICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKQEAgLTMxMDcs
NyArMzEzNSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b246Ok1lc3NhZ2U+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlCiB7CiAgICAgZW5jb2RlciA8PCBt
ZXNzYWdlLmZpcnN0OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZURhdGEgPSBt
ZXNzYWdlLnNlY29uZC5jb3B5UmVmKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5zZWNvbmQuY29weVJlZigpOwogICAgIGVuY29kZXIg
PDwgbWVzc2FnZURhdGE7CiB9CiAKQEAgLTMxMTcsNyArMzE0NSw3IEBAIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiAgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpDRE1JCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlKSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoYnVmZmVyKSB8fCAhYnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDI1
ZjAxYzAyOTJhMDE5ZjA2NzYyNGJiYjU1MzQwMmRmMWEzM2M1YjYuLjZmYWMyYWExZWE3ODQ2ZmY2
YmY4OTAyMWYwZjUyZTlhYTdhZTAzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgY2xhc3MgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNs
YXNzIENvbG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNz
IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBDdXJzb3I7CkBAIC0xMzgsNyArMTM5
LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNs
YXNzIFNjcmlwdEJ1ZmZlcjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNwcmluZ1RpbWluZ0Z1
bmN0aW9uOwogY2xhc3MgU3RlcHNUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIFN0aWNreVBvc2l0aW9u
Vmlld3BvcnRDb25zdHJhaW50czsKQEAgLTc1MSw2ICs3NTIsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+
IHsKIH07CiAjZW5kaWYKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiB7Cisg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCmluZGV4IGNmMmU0ZDVmOTNmZDJkOTQ2YmFi
ZmY5M2VlYTNlOWU4NjBhZWJiZjQuLmI2MDdhY2U4MzhlMDRiY2UxYTZhZWU0ZGE1NjU1OWUwOTY5
ODM5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHRE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5j
cHAKQEAgLTg1LDcgKzg1LDcgQEAgV2ViSGl0VGVzdFJlc3VsdERhdGE6OldlYkhpdFRlc3RSZXN1
bHREYXRhKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGhpdFRlc3QKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKEltYWdlKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgewot
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpOworICAg
ICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEo
KTsKICAgICAgICAgaWYgKGJ1ZmZlcikgewogICAgICAgICAgICAgaW1hZ2VTaGFyZWRNZW1vcnkg
PSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKICAgICAgICAgICAg
IGltYWdlU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0
ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5kZXggMjVhMzA3ZjM4MjllOTI3OGI1ZWE3OGZmODI5
Njc4ODMzNzdhMzFiYS4uNjcxNzU4YTI4MGE1ZTQ0MGFhMDYwYTc5Y2YxZjBmMTI2ZGI3YmUyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCkBA
IC05NSw3ICs5NSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNlbGVjdGlvbkRhdGEmCiAgICAgYm9vbCBoYXNDdXN0
b21EYXRhID0gc2VsZWN0aW9uLmhhc0N1c3RvbURhdGEoKTsKICAgICBlbmNvZGVyIDw8IGhhc0N1
c3RvbURhdGE7CiAgICAgaWYgKGhhc0N1c3RvbURhdGEpCi0gICAgICAgIGVuY29kZXIgPDwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4oc2VsZWN0aW9uLmN1c3RvbURhdGEoKSk7CisgICAgICAgIGVuY29k
ZXIgPDwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KHNlbGVjdGlvbi5jdXN0b21EYXRh
KCkpOwogCiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2UgPSBzZWxlY3Rpb24uY2FuU21hcnRSZXBs
YWNlKCk7CiAgICAgZW5jb2RlciA8PCBjYW5TbWFydFJlcGxhY2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggYjM0ZWM3MzYzNjNjNGYxZDJi
MGU3NjBhZDNmNGE5ZDViYWMxYTM0ZS4uMTQ5MGM1MTFiZGMzOGJkOGFiNGE2OTVhZWNmMzA2ZDk1
ZmFhMzk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFj
aG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
LmNwcApAQCAtOTgsNyArOTgsNyBAQCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBBdHRhY2htZW50
OjpmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0lt
YWdlRGF0YSgpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
QXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCmlu
ZGV4IGFmYTkyOWNmMDkzZDIyZWM3NmFkODZmZGEwM2I1MDFiYmZkMjlkYzMuLmZlNTBlNTM4Yjhl
YmIzNTFhNDgzNmQxZGQ4OTNkMTQ3YTU2YTg3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtMzksNiArMzksNyBAQCBPQkpDX0NMQVNTIE5TU3Ry
aW5nOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgyLDcg
KzgzLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBlbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdDsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jbG9zaW5nSW1hZ2VE
YXRhKCkgY29uc3Q7CiAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemVGb3JEaXNw
bGF5KCkgY29uc3Q7CiAKICAgICB2b2lkIHNldEhhc0VuY2xvc2luZ0ltYWdlKGJvb2wgaGFzRW5j
bG9zaW5nSW1hZ2UpIHsgbV9oYXNFbmNsb3NpbmdJbWFnZSA9IGhhc0VuY2xvc2luZ0ltYWdlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVM
aXN0U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5oCmluZGV4IDdmYzA1NDU3ZTY0Y2Y1ODliMGZiMGU3ZTAzNmY2OTBmYTJjMTdiYWMu
LjRlMjY2ZjM2N2FjNjAyYjhlZjFlYWY3NTdhMGEwNGRjNzNmNzcxYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oCkBA
IC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggNTYyMzQwMTQ1OWRhNWZlMzBm
NDkxYTQxZmIzNDdhNjc1NzIwMmM0MC4uMTExZjA5MjYzZjgyMjM4MjlhNWFkMjY0NDM0YmE0MjBm
MTk4ZGQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmln
YXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbkNsaWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBDb250ZW50UnVsZUxpc3RSZXN1
bHRzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KIApAQCAtMTE5LDcg
KzExOSw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6
U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJikgeyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgUmVmPE5hdmln
YXRpb25BY3Rpb24+JiYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4m
JiBsaXN0ZW5lciwgT2JqZWN0KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IGNmNDYyMTZjYTI1YTllZGY4
MmUzMTlhMzMwMzA3OTFlOGQ0ZTE1M2MuLmRmZWYzZTA3MGY5NjE2MzA0OTcxNDRkYWYzZjMwMGNi
NGNhNTE5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9B
UElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTM3LDcgKzEzNyw3IEBAIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IEF0dGFjaG1lbnQ6OmZpbGVTaXplRm9yRGlzcGxheSgpIGNvbnN0CiAgICAg
cmV0dXJuIFtmaWxlV3JhcHBlciByZWd1bGFyRmlsZUNvbnRlbnRzXS5sZW5ndGg7CiB9CiAKLVJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0
YSgpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQXR0YWNo
bWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faGFzRW5jbG9z
aW5nSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYzRlZTUyNTA3NjQyZGI0ZTU0Y2Zh
ZGY3ZmVlM2JmMWI3YzBkM2QzYy4uMDFjODEwMjc4ZWY2MzU5MTcyZjhlNjViNTJjZmNiMGI1MjFi
N2Q4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCkBAIC0xNTk2LDcgKzE1OTYsNyBAQCAtICh2b2lkKV9zdG9yZUFwcEhpZ2hsaWdodDooY29u
c3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JiloaWdobGlnaHQKICAgICBpZiAoaGlnaGxpZ2h0LnRl
eHQpCiAgICAgICAgIHRleHQgPSBoaWdobGlnaHQudGV4dC52YWx1ZSgpOwogCi0gICAgYXV0byB3
a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGln
aGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4
dCBpbWFnZTpuaWxdKTsKKyAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhp
Z2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0p
OwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3OnN0b3JlQXBwSGlnaGxpZ2h0OmluTmV3R3JvdXA6cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDop
XSkKICAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnNlbGYgc3RvcmVBcHBIaWdobGlnaHQ6d2tI
aWdobGlnaHQuZ2V0KCkgaW5OZXdHcm91cDpoaWdobGlnaHQuaXNOZXdHcm91cCA9PSBXZWJDb3Jl
OjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6
aGlnaGxpZ2h0LnJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgPT0gV2ViQ29yZTo6SGlnaGxpZ2h0UmVx
dWVzdE9yaWdpbmF0ZWRJbkFwcDo6WWVzXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLmgKaW5kZXggYWM0YTBmNDM3MDE1MmVkNTcyYjUwOTFkZmE1
MWJhZWJhYjg3ZjRlOS4uYzgwMjljMTQwYTZkZDE0YjE5NjQ5MjI1Yjg3ODMwZWVjMTM0MDBmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgK
QEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAg
ICAgIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25z
dCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIG92ZXJyaWRl
OwotICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgICAgICB2b2lk
IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLm1tCmluZGV4IDM4NTU4ODJjODdkYzllZDMxYzFlZjBiYWI2MTZiMWU2NDU5NDRlZWYu
LjhkM2E4NTY0NjJlYWVmNzQxZDhjMjllMjU5MmZkNTczNjZmNTk5YzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTEyMjAsNyAr
MTIyMCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRTdGFy
dExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyCiAgICAgW3N0YXRpY19jYXN0PGlkIDxX
S05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93
ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkU3RhcnRMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZVdpdGhGaWxlTmFtZTpmaWxlTmFtZSB1dGk6dXRpXTsKIH0K
IAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlKQogICAgICAgICByZXR1
cm47CkBAIC0xMjMyLDcgKzEyMzIsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRgogICAgIGlm
ICghbmF2aWdhdGlvbkRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBbc3RhdGljX2Nh
c3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5n
ZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0
KCldOworICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4o
bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93
ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZl
ci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlD
b2NvYS5tbQppbmRleCA4MDJmZmFhNmQ2ZWRiZWEyZTk3Mjc3NGUyNjk2NWIyZGJiMmE3MzVlLi4z
ZWEyMTU2MDM3ODllMWIwYjI0ZTViNTU5OWQzNzUxOTdmNTk1MmJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAt
MzA2LDcgKzMwNiw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kQXVkaW9Db21wb25lbnRS
ZWdpc3RyYXRpb25zKCkKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25zLmdldCgpKTsKKyAgICAgICAgICAg
IGF1dG8gcmVnaXN0cmF0aW9uRGF0YSA9IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNyZWF0ZShyZWdpc3RyYXRpb25zLmdldCgpKTsKICAgICAgICAgICAgIHdlYWtUaGlzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25z
KHsgcmVnaXN0cmF0aW9uRGF0YSB9KSwgMCk7CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKaW5kZXggM2Y2ZGQxZjI0MmU3
YTExNWVjZjc5ODM5MGYzNGI2MzVjNmU4ZDZmOS4uZjU4OTEyNDE3MDJkYWE0MjBjYzRlNmUyNDYy
OGExY2RlODkwN2QyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5oCkBAIC01MDYsNyArNTA2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdGFydERyYWco
Y29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0mLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYg
aW1hZ2UpOwogICAgIHZvaWQgc2V0RmlsZUFuZFVSTFR5cGVzKE5TU3RyaW5nICpmaWxlbmFtZSwg
TlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0
cmluZyAqdmlzaWJsZVVSTCwgTlNQYXN0ZWJvYXJkICopOwotICAgIHZvaWQgc2V0UHJvbWlzZWRE
YXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5n
ICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZp
c2libGVVUkwsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYXJjaGl2ZUJ1ZmZlciwgTlNTdHJpbmcg
KnBhc3RlYm9hcmROYW1lLCBOU1N0cmluZyAqcGFzdGVib2FyZE9yaWdpbik7CisgICAgdm9pZCBz
ZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSosIE5TU3RyaW5nICpmaWxlbmFt
ZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBO
U1N0cmluZyAqdmlzaWJsZVVSTCwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYXJj
aGl2ZUJ1ZmZlciwgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU1N0cmluZyAqcGFzdGVib2Fy
ZE9yaWdpbik7CiAgICAgdm9pZCBwYXN0ZWJvYXJkQ2hhbmdlZE93bmVyKE5TUGFzdGVib2FyZCAq
KTsKICAgICB2b2lkIHByb3ZpZGVEYXRhRm9yUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKiwgTlNT
dHJpbmcgKnR5cGUpOwogICAgIE5TQXJyYXkgKm5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0
RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW5hdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDNkOWU4NzdiMGNiNzU2NTRiNjM5MTYz
OTU1N2Y1MmI2MDM5MmNhYzkuLjYyMzY3ZGM1YWQxZmUxMjIxZjdiMDk5ZTliYjQ0NTRkYjM3YTU4
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBA
IC00NDQ5LDcgKzQ0NDksNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRGaWxlQW5kVVJMVHlwZXMo
TlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOUwogICAgIG1fcHJvbWlz
ZWRVUkwgPSB1cmw7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvcklt
YWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAq
ZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNp
YmxlVVJMLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpw
YXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKm9yaWdpbklkZW50aWZpZXIpCit2b2lkIFdlYlZpZXdJ
bXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3Ry
aW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0
cmluZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJsZVVSTCwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogYXJjaGl2ZUJ1ZmZlciwgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU1N0cmlu
ZyAqb3JpZ2luSWRlbnRpZmllcikKIHsKICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBb
TlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoTmFtZTpwYXN0ZWJvYXJkTmFtZV07CiAgICAgUmV0
YWluUHRyPE5TTXV0YWJsZUFycmF5PiB0eXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhPYmplY3RzOldlYkNvcmU6OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9h
cmRUeXBlKCksIG5pbF0pOwpAQCAtNDQ3MCw3ICs0NDcwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAq
ZmlsZW4KICAgICBzZXRGaWxlQW5kVVJMVHlwZXMoZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUs
IHVybCwgdmlzaWJsZVVSTCwgcGFzdGVib2FyZCk7CiAKICAgICBpZiAoYXJjaGl2ZUJ1ZmZlcikg
ewotICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOwor
ICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAg
ICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpuc0RhdGEuZ2V0KCkgZm9yVHlwZTooX19icmlkZ2UgTlNT
dHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKQEAgLTQ1MDEsNyArNDUwMSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByb3ZpZGVEYXRh
Rm9yUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TU3RyaW5nICp0CiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChbdHlwZSBpc0VxdWFsOm1fcHJvbWlzZWRJbWFnZS0+dXRp
KCldICYmIG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHBsYXRm
b3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAg
ICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0
RGF0YTooX19icmlkZ2UgTlNEYXRhICopcGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6dHlwZV07
CiAgICAgfQogCkBAIC00NTU0LDcgKzQ1NTQsNyBAQCBOU0FycmF5ICpXZWJWaWV3SW1wbDo6bmFt
ZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3Rpbgog
ICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAKICAgICBpZiAobV9wcm9taXNlZEltYWdlKSB7
Ci0gICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3Jh
cHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRhdGEuZ2V0KCldKTsKICAg
ICB9IGVsc2UKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9j
XSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzptX3Byb21pc2VkVVJMXSBvcHRpb25z
Ok5TRmlsZVdyYXBwZXJSZWFkaW5nSW1tZWRpYXRlIGVycm9yOm5pbF0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGM0ODVjN2ZjMzEzZWEwODMzZmM2MDYyNjcxNjlkNjky
YTgyNDA5MjguLmI0NjJkOGRiNWNjNjIwMzg2ZTc2ODNkYjI0ODM2YWIzY2U2NGZlZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTMyOCw3ICszMjgsNyBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogI2lmIFVTRShBUFBLSVQpCi0gICAgdmlydHVhbCB2b2lkIHNldFByb21pc2Vk
RGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0
IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFn
ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24s
IGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZp
c2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hp
dmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgPSAwOwogI2VuZGlmCiAK
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCmluZGV4IDVhODMyZTU1YWNiYTE4OWIzOWI5ZTg5N2NjMWNhMThiN2I0ODQ1NTUuLmU1
ZWFmNDFmMzhiNjQ3YmM1ZjM3M2RiMDc5ZGViNDE2YWE5NjNkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yNTksNyArMjU5LDcgQEAgY2xhc3MgSW50U2l6ZTsK
IGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJ1bkxvb3BPYnNlcnZlcjsKIGNsYXNzIFNl
bGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OwogY2xhc3MgVGV4dEluZGlj
YXRvcjsKIGNsYXNzIFZhbGlkYXRpb25CdWJibGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGRmNTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYw
NTFkODBjMTZiZDEuLjE5OTdlYWUyMGFjMjJjYTNhZTgwMDRjNzA0ZmEyMmRhNjA5ZTAwOWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC01MSw2
ICs1MSw3IEBAIFdlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1l
SGFuZGxlciYgaGFuZGxlciwgV2ViUGFnZVByb3h5JiBwCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92
ZShwYXJhbWV0ZXJzLnJlcXVlc3QpKQogICAgICwgbV9mcmFtZUluZm8oQVBJOjpGcmFtZUluZm86
OmNyZWF0ZShXVEZNb3ZlKHBhcmFtZXRlcnMuZnJhbWVJbmZvKSwgJnBhZ2UpKQogICAgICwgbV9z
eW5jQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzeW5jQ29tcGxldGlvbkhhbmRsZXIpKQorICAg
ICwgbV9zeW5jRGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KQEAgLTE2OCw3ICsxNjksNyBAQCBhdXRv
IFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkgLT4gRQogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogfQog
Ci1hdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCithdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0
aW9uVHlwZQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTE4NywxMCAr
MTg4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAgICBtX2RhdGFTZW50ID0gdHJ1ZTsK
IAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAg
ICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX3N5bmNEYXRhID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICBtX3N5bmNE
YXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5
cGU6Ok5vbmU7CiAgICAgfQogCkBAIC0yMTcsMTIgKzIxNSw5IEBAIGF1dG8gV2ViVVJMU2NoZW1l
VGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlv
blR5cGUKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CiAgICAgCiAgICAgaWYgKGlzU3luYygpKSB7
Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgICAgICBpZiAobV9zeW5jRGF0YSkK
LSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6
ZSgpIH07Ci0KKyAgICAgICAgc2l6ZV90IHNpemUgPSBtX3N5bmNEYXRhLT5zaXplKCk7CisgICAg
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0geyBtX3N5bmNEYXRhLT50YWtlKCktPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSB9OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxl
cihtX3N5bmNSZXNwb25zZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkpOwotICAgICAgICBtX3N5bmNE
YXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50
aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAyMWIxMjk5
MjQ2YzcwMDA5M2RkMGE0N2YyYzEzMDg1MjY3Li43OTk0MmY5YjIwYTI2NjBjYTRhN2RjZDQ1MDE4
ZDE2ZTQzYjY2NmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgRnJhbWVJbmZvOwpAQCAtNDMs
NyArNDQsOCBAQCBjbGFzcyBGcmFtZUluZm87CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWls
ZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTg0LDcgKzg2LDcgQEAgcHVibGljOgog
ICAgIEV4Y2VwdGlvblR5cGUgd2lsbFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCAgRnVuY3Rpb248dm9pZChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIEV4Y2VwdGlvblR5cGUgZGlkUGVy
Zm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYpOwogICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBFeGNlcHRpb25UeXBlIGRpZFJl
Y2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIEV4Y2VwdGlvblR5
cGUgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
OwogICAgIEV4Y2VwdGlvblR5cGUgZGlkQ29tcGxldGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOwogCiAgICAgdm9pZCBzdG9wKCk7CkBAIC0xMTUsNyArMTE3LDcgQEAgcHJpdmF0ZToK
IAogICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXI7
CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3N5bmNSZXNwb25zZTsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX3N5bmNEYXRhOworICAgIFVuaXF1ZVJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3N5bmNEYXRhOwogCiAgICAgYm9vbCBtX3dhaXRp
bmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyQ2FsbGJhY2sgeyBmYWxzZSB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaAppbmRleCA3ODY2Y2RiMTc3NDYwMDdh
YjBhN2ExN2M1NWI4N2M3ZjE2NGMyYmFlLi43Mjc5Zjg0NGNjMmJiZDJiMDE3ZmUwZjA5N2RlMDE4
NzBhOWE4NTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJv
YXJkLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oCkBAIC0z
Niw3ICszNiw3IEBAIHR5cGVkZWYgc3RydWN0IF9HdGtDbGlwYm9hcmQgR3RrQ2xpcGJvYXJkOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvcm1hdHMoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CiAgICAgdm9pZCByZWFkVGV4
dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CiAgICAgdm9pZCByZWFkRmls
ZVBhdGhzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwotICAg
IHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBjaGFyKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4mJik7CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0
IGNoYXIqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKT4mJik7CiAgICAgdm9pZCB3cml0ZShXZWJDb3JlOjpTZWxlY3Rpb25EYXRh
JiYpOwogICAgIHZvaWQgY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L0NsaXBib2FyZEd0azMuY3BwCmluZGV4IGMyYmY1MTgzYjMwZjEwZTllYjc4MTNjZGFkYTIyM2U5
MTg5Yzc0NTkuLjU5NjZkNTU3NGMyODJmNTMxNjk0MDk2MDgyOTYwYWUzMzljYTExMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKQEAgLTEyNiwx
NSArMTI2LDE1IEBAIHZvaWQgQ2xpcGJvYXJkOjpyZWFkRmlsZVBhdGhzKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxlCiBzdHJ1Y3QgUmVhZEJ1ZmZlckFz
eW5jRGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgZXhw
bGljaXQgUmVhZEJ1ZmZlckFzeW5jRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYmIGhhbmRsZXIpCisgICAgZXhwbGljaXQgUmVhZEJ1ZmZl
ckFzeW5jRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKT4mJiBoYW5kbGVyKQogICAgICAgICA6IGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUoaGFuZGxlcikpCiAgICAgewogICAgIH0KIAotICAgIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5kbGVyOwor
ICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKIH07CiAKLXZvaWQgQ2xpcGJvYXJkOjpyZWFk
QnVmZmVyKGNvbnN0IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ2xpcGJv
YXJkOjpyZWFkQnVmZmVyKGNvbnN0IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgZ3RrX2NsaXBib2FyZF9yZXF1ZXN0X2NvbnRlbnRzKG1fY2xpcGJvYXJk
LCBnZGtfYXRvbV9pbnRlcm4oZm9ybWF0LCBUUlVFKSwgW10oR3RrQ2xpcGJvYXJkKiwgR3RrU2Vs
ZWN0aW9uRGF0YSogc2VsZWN0aW9uLCBncG9pbnRlciB1c2VyRGF0YSkgewogICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVhZEJ1ZmZlckFzeW5jRGF0YT4gZGF0YShzdGF0aWNfY2FzdDxSZWFkQnVm
ZmVyQXN5bmNEYXRhKj4odXNlckRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9DbGlwYm9hcmRHdGs0LmNwcAppbmRleCAwN2FiYjcxMzE5ODg1M2I3ODdjNjMyNGJkNDgwYjFl
MDg4YTJhM2QzLi41YjgxZmE4ZjI5ZDNmN2NmMWMzZjA5ZDFmYzNjODg3MzRkYzUxYTBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCkBAIC0xMjAs
MTUgKzEyMCwxNSBAQCB2b2lkIENsaXBib2FyZDo6cmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZQogc3RydWN0IFJlYWRCdWZmZXJB
c3luY0RhdGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGV4
cGxpY2l0IFJlYWRCdWZmZXJBc3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKT4mJiBoYW5kbGVyKQorICAgIGV4cGxpY2l0IFJlYWRCdWZm
ZXJBc3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKICAgICAgICAgOiBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKGhhbmRsZXIpKQogICAgIHsKICAgICB9CiAKLSAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsK
KyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCi12b2lkIENsaXBib2FyZDo6cmVh
ZEJ1ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENsaXBi
b2FyZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGNvbnN0IGNoYXIqIG1pbWVUeXBlc1tdID0geyBmb3JtYXQsIG51bGxw
dHIgfTsKICAgICBnZGtfY2xpcGJvYXJkX3JlYWRfYXN5bmMobV9jbGlwYm9hcmQsIG1pbWVUeXBl
cywgR19QUklPUklUWV9ERUZBVUxULCBudWxscHRyLCBbXShHT2JqZWN0KiBjbGlwYm9hcmQsIEdB
c3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAppbmRleCBkMjIzOGZkYzlkMTZm
NzdmOGMzZDMwMmNhOTk3NmZlODNmMWIzZjM3Li5hYjg3YzJhN2U4YzM1N2E2NWIzY2ZlNjA3OTM4
ZmRmZWM4YTY1MmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMuaApAQCAtMTAwLDggKzEwMCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBleGVj
dXRlVW5kb1JlZG8oVW5kb09yUmVkbykgb3ZlcnJpZGU7CiAgICAgYm9vbCBleGVjdXRlU2F2ZWRD
b21tYW5kQnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yKSBvdmVycmlkZTsKICAgICB2
b2lkIHN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYsIGNvbnN0IFNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlJiBpbWFnZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRQcm9taXNlZERhdGFG
b3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwKLSAgICAgICAgY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW1h
Z2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9u
LCBjb25zdCBTdHJpbmcmIHRpdGxlLAorICAgICAgICBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpIG92ZXJy
aWRlOwogICAgIHZvaWQgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwogICAgIHZv
aWQgcmVzZXRTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlJbnB1
dENvbnRleHRBYm91dERpc2NhcmRlZENvbXBvc2l0aW9uKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXggYTQxMTIx
MzVmMmVmMTkwMTVhNTJmMWUxYjAzYWUzMGExZjIyM2QyYS4uYzM2M2U5NTVlODc5YzBlMTg2YjQx
NTA5MDkxMzM2NWMyMGZlOTA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtNDAwLDcgKzQwMCw3IEBAIHZvaWQgUGFnZUNsaWVu
dEltcGw6OnN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYgaXRlbSwgY29uc3QgU2hh
cmVhYmxlQml0CiAgICAgbV9pbXBsLT5zdGFydERyYWcoaXRlbSwgaW1hZ2UpOwogfQogCi12b2lk
IFBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRs
ZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZp
ZXIpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFn
ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24s
IGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZp
c2libGVVUkwsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIs
IGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKIHsKICAgICBhdXRvIGltYWdlID0gQml0
bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGltYWdlLT5zZXREYXRhKFdURk1vdmUoaW1hZ2VCdWZm
ZXIpLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tCmluZGV4IGUwM2UwODBhZWUwODM4MGI0NmZmZTg5ZGQ4ZTYxYjY2YjU5OGRiNDYuLjAx
ZDg0MGEyYTYzZWFjNzkxZmJkODRmYmU2MzdiNWIyOGNmNjEzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjc3LDcgKzI3Nyw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBTCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvIGltYWdl
QnVmZmVyID0gc2hhcmVkTWVtb3J5SW1hZ2UtPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpbWFnZUhhbmRs
ZS5kYXRhU2l6ZSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlQnVmZmVyOwor
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBhcmNoaXZlQnVmZmVyOwogICAgIGlm
ICghYXJjaGl2ZUhhbmRsZS5oYW5kbGUuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byBzaGFyZWRN
ZW1vcnlBcmNoaXZlID0gU2hhcmVkTWVtb3J5OjptYXAoYXJjaGl2ZUhhbmRsZS5oYW5kbGUsIFNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgICAgICBpZiAoIXNoYXJlZE1l
bW9yeUFyY2hpdmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETS5jcHAKaW5kZXggZmE5NDAyNWVkNzQ3MzBkMjhlNzE2NDYyODVmOWU1YmE2NTNiOGYx
Mi4uYzI4ZmU2NWYwY2YxNjQzOTk4MThhY2EzMmY5ODFjYzc3OGYxZTkxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcApAQCAtODQsNyAr
ODQsNyBAQCBib29sIFJlbW90ZUNETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0
aW9uKGNvbnN0IENETVNlc3Npb25UeXBlJiwgY29ucwogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
Ym9vbCBSZW1vdGVDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKSBjb25zdAorYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSkgY29uc3QKIHsKICAgICAvLyBUaGlzIGNoZWNrIHdpbGwgYmUgZG9uZSwgbGF0
ZXIsIGluc2lkZSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2Uo
KS4KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFJlbW90ZUNETTo6
bG9hZEFuZEluaXRpYWxpemUoKQogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OkxvYWRBbmRJbml0
aWFsaXplKCksIG1faWRlbnRpZmllcik7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFJlbW90
ZUNETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25z
dAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFJlbW90ZUNETTo6c2FuaXRpemVSZXNw
b25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAg
ICAvLyBUaGlzIGNoZWNrIHdpbGwgYmUgZG9uZSwgbGF0ZXIsIGluc2lkZSBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlTGljZW5zZSgpLgogICAgIHJldHVybiByZXNwb25zZS5j
b3B5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0u
aAppbmRleCAwYWRkZjgzMzUzYjZlYTFiMmU4YjAyYzZiN2VlM2RhZjQ2OGNkMzgzLi44YzQ1NGVi
ODNlNTk5NGE4ZTRkNTkyZDUxZGY5MWZmOWI1MjNjYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKQEAgLTQ4LDEzICs0OCwxMyBAQCBwcml2
YXRlOgogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29u
ZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFs
OwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdl
YkNvcmU6OkNETVNlc3Npb25UeXBlJiwgY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBB
dG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7Cisg
ICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6Q0RN
UmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IFdlYkNv
cmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmlj
dGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCBwZXJzaXN0
ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAg
Ym9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxl
KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsK
ICAgICBSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+IGNyZWF0ZUluc3RhbmNlKCkgZmluYWw7
CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNl
c3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAgIFZlY3RvcjxBdG9tU3Ry
aW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25m
aWd1cmF0aW9uLnN1cHBvcnRlZEluaXREYXRhVHlwZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKaW5kZXgg
YjVkZWEyMWU5OTVhNzM3ZjAzNmY2NDUzOGMxZmIzZWNiNWU2YmI1NS4uYTEzZTUxNDYwZjZiYjlm
ODBlZjNkMWE4NDJlZmMwYjlmNDQ1OTBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKQEAgLTc4LDcgKzc4
LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9u
KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUMKICAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVt
b3RlQ0RNSW5zdGFuY2VQcm94eTo6SW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbmZpZ3Vy
YXRpb24sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnMsIHBlcnNpc3RlbnRTdGF0ZSksIFdURk1vdmUo
Y2FsbGJhY2spLCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlOjpz
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmlj
YXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6
OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAo
IW1fZmFjdG9yeSkgewogICAgICAgICBjYWxsYmFjayhGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCmluZGV4
IDEwNmJhM2IxMTYxYzhkZjA5ZDcxZGZlNjc5YmEzM2Q0MjMwNzllOTYuLjJjNzg1MWU0NDBiMDhh
NTJhMmFlNzBkYTdlNDE4ODgyZTNjNjE0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKQEAgLTU0LDcgKzU0LDcg
QEAgcHJpdmF0ZToKIAogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OlJlbW90ZTsgfQogICAg
IHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVy
c2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJh
Y2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlv
bi5rZXlTeXN0ZW07IH0KICAgICBSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiBj
cmVhdGVTZXNzaW9uKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKaW5kZXgg
YWYwYmFkNGM5MGQ4ZGQ1MTM3NzRhZWY2YTE1Yjc3YmE4OWZjNTA2NC4uYzc0MGMwNDUwNmZkZWRh
YzlmNGNmNTAyYzIwNWE4YTM3ZmNhNDU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNw
cApAQCAtNDksNyArNDksNyBAQCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbihXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZgogewogfQogCi12b2lk
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlw
ZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRh
LCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewog
ICAgICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBm
YWxzZSwgRmFpbGVkKTsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcK
ICAgICB9LCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNr
KQogewogICAgIGlmICghbV9mYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwpAQCAtMTA5LDcg
KzEwOSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZW1vdmVTZXNzaW9uRGF0
YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zCiAgICAgfQogCiAgICAgbV9mYWN0b3J5
LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdmVTZXNzaW9uRGF0
YShzZXNzaW9uSWQsIHR5cGUpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEtleVN0
YXR1c1ZlY3RvciYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVy
Q29weT4mJiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7Ci0gICAgICAgIHN0ZDo6
b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gc3RkOjpudWxsb3B0Owor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gcmVhbE1l
c3NhZ2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChtZXNzYWdlICYmIG1lc3NhZ2UudmFs
dWUoKS5idWZmZXIoKSkKICAgICAgICAgICAgIHJlYWxNZXNzYWdlID0gbWVzc2FnZS52YWx1ZSgp
LmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hh
bmdlZEtleXMpLCBXVEZNb3ZlKHJlYWxNZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDog
RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oCmluZGV4IDRmZmU0Y2FjZWNjZGU0M2Q1
Y2IxMWUyMzZjYTA0NWFjZGE4M2E3ZWIuLjRlNGNkMmMwMDVjNmIwMDY1ZjljZGIxODhjNGJjZTBi
NWJmYTY2MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaApAQCAtNTksOCArNTksOCBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBzZXRDbGllbnQoV2Vha1B0cjxXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb25DbGllbnQ+JiYgY2xpZW50KSBmaW5hbCB7IG1fY2xpZW50ID0gV1RGTW92ZShjbGll
bnQpOyB9CiAgICAgdm9pZCBjbGVhckNsaWVudCgpIGZpbmFsIHsgbV9jbGllbnQgPSBudWxscHRy
OyB9Ci0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBM
aWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VD
YWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQg
bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCBT
dHJpbmcmIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNs
b3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sm
JikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRi5jcHAKaW5kZXggOWEyMTlhNTQ0ZTU1MzgzZjU0ZTcxZGFiZDM1NGNj
NDQwYTQxNDJiOS4uNjI5MjY3OThjNWMxMTMyNGEzMWFhNTBjZGE3ZWQxZmJmNzRmZTcwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGOjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3RlZENv
bnRlbnRTaXplCiAKIC8vIElmIGFsbERhdGFSZWNlaXZlZCBpcyB0cnVlLCB0aGUgY2FsbGVyIGV4
cGVjdHMgZW5jb2RlZERhdGFTdGF0dXMoKSB0byBiZSA+PSBFbmNvZGVkRGF0YVN0YXR1czo6U2l6
ZUF2YWlsYWJsZQogLy8gYWZ0ZXIgdGhpcyBmdW5jdGlvbiByZXR1cm5zIChpbiB0aGUgc2FtZSBy
dW4gbG9vcCkuCi12b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RGF0YShTaGFyZWRCdWZm
ZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJB
VkY6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiB7CiAgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVJbWFnZURlY29kZXJBVkYuaAppbmRleCBlNWNmZTk0ZWNkM2E5YzA2MDBmYzAwMzIwZmY0
MzA2MWM5MGVkNjliLi40MGQzNzM0ZjdhMzIyZThiYWNiOWQxYzBkZWE3MDc5ZTJhZDE3ZWFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGIGZpbmFsCiAgICAgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VEZWNvZGVyCiAgICAg
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZShSZW1vdGVJbWFn
ZURlY29kZXJBVkZNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBXZWJDb3JlOjpJbWFnZURlY29kZXJJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVh
dGUoUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlciYgbWFuYWdlciwgY29uc3QgV2ViQ29yZTo6
SW1hZ2VEZWNvZGVySWRlbnRpZmllciYgaWRlbnRpZmllciwgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVJbWFnZURlY29kZXJBVkYobWFuYWdlciwgaWRlbnRpZmll
ciwgbWltZVR5cGUpKTsKICAgICB9CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBXZWJD
b3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgV2Vi
Q29yZTo6U3Vic2FtcGxpbmdMZXZlbCA9IFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IFdlYkNvcmU6OkRlY29kaW5nT3B0aW9ucyYgPSBXZWJDb3JlOjpEZWNvZGluZ09w
dGlvbnMoV2ViQ29yZTo6RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAg
dm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0gICAgdm9pZCBz
ZXREYXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5h
bDsKKyAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xl
YXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRk1hbmFnZXIuY3BwCmluZGV4IDQxZDUzODgwMjNkMzkxNDk1MjE4MzVmNjg4ZGU0ZDQ4ZjY1
ZDc2N2UuLjA4MmIzMzY2YzhiYzcxMzBkNzVkNTY5OGE3ZDc5ZTY4OTJhZDhmNzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0cjxSZW1vdGVJ
bWFnZURlY29kZXJBVkY+IFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdl
RGVjb2RlcihTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhh
T3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IFJlbW90ZUlt
YWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2RlcihGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pCiB7CiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiBpbWFnZURl
Y29kZXJJZGVudGlmaWVyOwogICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRh
UmVmZXJlbmNlIHsgZGF0YSB9OwpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGTWFuYWdlcjo6c2V0VXNlR1BVUHJvY2Vzcyhib29sIHVzZUdQVVByb2Nlc3MpCiAg
ICAgSW1hZ2VEZWNvZGVyOjppbnN0YWxsRmFjdG9yeSh7CiAgICAgICAgIFJlbW90ZUltYWdlRGVj
b2RlckFWRjo6c3VwcG9ydHNNZWRpYVR5cGUsCiAgICAgICAgIFJlbW90ZUltYWdlRGVjb2RlckFW
Rjo6Y2FuRGVjb2RlVHlwZSwKLSAgICAgICAgW3RoaXNdKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSB7CisgICAgICAgIFt0
aGlzXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pIHsKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbWFn
ZURlY29kZXIoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbik7CiAgICAgICAgIH0KICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5h
Z2VyLmgKaW5kZXggYzIzNzgyYjY1MDRlYzc5YmU0NmUxMjZmNGU1OTFiM2ZmN2Y2ZGJhOC4uMzYx
OGFmZDEyMDk4YjU1NzZiNGRkNGZmYmYzYzA2ZmJhODQyYTc2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2Vy
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkZNYW5hZ2VyLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIEdQVVByb2Nl
c3NDb25uZWN0aW9uJiBlbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogCiBwcml2YXRlOgot
ICAgIFJlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZUltYWdlRGVjb2RlcihXZWJD
b3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6
OkFscGhhT3B0aW9uLCBXZWJDb3JlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAg
UmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlSW1hZ2VEZWNvZGVyKFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdl
YkNvcmU6OkFscGhhT3B0aW9uLCBXZWJDb3JlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7
CiAKICAgICAvLyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50LgogICAgIHZvaWQgZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbi5jcHAKaW5kZXggYTUzZjE1N2JlZWJkN2RiMmU4MWIyZjVlY2JkNjM4
MTg2MmE2ODA4YS4uZjFkMWMxMGE2ZTVjM2FiMmI4MTMyM2MwNGRhYzA1NzI4NmU5ZmQ0YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkgY29udmVydFRvU2hhcmVkQnVmZmVyQ29weShUIGFycmF5KQogewogICAg
IGlmICghYXJyYXkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgcmV0dXJuIHsgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkgfTsKKyAgICBy
ZXR1cm4geyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJyYXktPmRhdGEoKSwgYXJy
YXktPmJ5dGVMZW5ndGgoKSkgfTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb24+IFJlbW90ZUxlZ2FjeUNETVNlc3Npb246OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUxl
Z2FjeUNETUZhY3Rvcnk+IGZhY3RvcnksIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVy
JiYgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDk2NmZj
OTNiNzdhZmFhM2U2MjA4ZDdhYmE1YWVkMmM3YTk0Yzc0YjIuLjAwNWEzN2NjMjZlYzRjMDkwMWJm
NGYzNzEyMjM4NjVkZTJkMTY2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcApA
QCAtNzgsNyArNzgsNyBAQCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjp+U291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZSgpCiAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVzc2FnZVJlY2Vp
dmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVtb3RlU291cmNlQnVmZmVySWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
OjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlOjphcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsK
ICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggMzYwMTc1YmZiZTlkMWFmODNlZDU3OTEzNzNiNzc1
ZWU3NTBhYzdjYy4uZWE1ZmEzZWMzNmMyYjg1OWVlNTc4Y2NkMGUwMzQ4YzczY2I4NmQ2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQ
cml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9T
b3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCiAgICAgdm9pZCBzZXRBY3RpdmUo
Ym9vbCkgZmluYWw7Ci0gICAgdm9pZCBhcHBlbmQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CisgICAgdm9pZCBhcHBlbmQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWJvcnQoKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0
UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01l
ZGlhUmVjb3JkZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAppbmRleCAxMWI0YTg2ZTQ4NTJmNmMyMDYxZmEz
ZmM5YWYyOWY4ODk5ZjRlYjlmLi5iNDA4OWZkMzU0OGM5N2YxN2ZjMmI5ZmIwMDI3ODBkNjQzY2Yy
M2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRp
YVJlY29yZGVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCkBAIC0xNjUsMTAgKzE2NSwxMCBAQCB2b2lk
IE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzdG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqIHN0b3Jh
Z2UsIGNvbnN0IFdlYkNvcmU6OgogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVt
b3RlTWVkaWFSZWNvcmRlcjo6QXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQgeyBTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgZGF0YVNpemUgfSwgZm9ybWF0LCBmcmFt
ZUNvdW50IH0sIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6
OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpmZXRjaERhdGEoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFS
ZWNvcmRlcjo6RmV0Y2hEYXRhIHsgfSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIG1pbWVUeXBlID0gbWltZVR5cGUoKV0oYXV0byYmIGRhdGEsIGRvdWJs
ZSB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAg
ICAgaWYgKGRhdGEuc2l6ZSgpKQogICAgICAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShidWZmZXIpLCBtaW1lVHlwZSwgdGltZUNvZGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRl
LmgKaW5kZXggMzAzYTU0Zjc2ZjE4NWU5NjQ1NGVmOWY1YmI0NjFmMjhlMTI2Nzg2ZC4uNTc2ZmQx
YzZlOTdjMGNhZDhjYmZlYzk0ZTNiZDM2MzMwNzZlNDRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5o
CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6TWVk
aWFSZWNvcmRlclByaXZhdGUKICAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6
Ok1lZGlhU2FtcGxlJiwgV2ViQ29yZTo6VmlkZW9TYW1wbGVNZXRhZGF0YSkgZmluYWw7Ci0gICAg
dm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmKSBmaW5hbDsK
KyAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3Vi
bGUpPiYmKSBmaW5hbDsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0UmVjb3JkaW5nKFN0YXJ0UmVjb3JkaW5n
Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3Qg
V1RGOjpNZWRpYVRpbWUmLCBjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0
IFdlYkNvcmU6OkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDA2NzNm
NzRkZGZiNDhlNWJkZjQzOGNkOTBiZTM3OTRlZWUyMDkxYmIuLjAzNTNhYWJmN2Q0YjkyNWFhMmYx
NTYyZDU3M2FhZjMwOTNjODNiYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVk
QnVuZGxlRWRpdG9yQ2xpZW50LmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVkQnVmZmVy
OwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUlu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApp
bmRleCBhMDYzNTIwNDMzNWIzYWIwZTZkZmIwYzY3Nzc2N2Y0MjhlOGE3N2UyLi4xODBiMTExMWVj
ZjAxMTMyODA5MjY2YTFiY2UyN2QyNjBlNGZhMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAg
Y2xhc3MgRE9NV2luZG93RXh0ZW5zaW9uOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UGFnZUxvYWRlckNsaWVu
dCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZFVSTFJlcXVlc3QoV2Vi
S2l0OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgQVBJOjpPYmpl
Y3QqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJLaXQ6Oldl
YlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RG
OjpVUkwmLCBBUEk6Ok9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZERhdGFS
ZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNv
bnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpVUkwmLCBBUEk6Ok9iamVjdCopIHsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViS2l0OjpX
ZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYsIFJlZlB0cjxBUEk6
Ok9iamVjdD4mKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5jcHAKaW5kZXggOGQ1MjRiNTI1YzZlN2EwY2M2YmRlNWU4MGE0N2MxNzFlMzQxNDY4Yy4u
M2Y0MWIxZjMzOGZhNDQ0NzQ5MDc0ODE4OWJiODk5NTFjZjFiMTcyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKQEAgLTY1LDE1ICs2NSwxNiBA
QCBzdGF0aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVmZmVyKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2
b2lkKiBkYXRhKQogICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9p
ZCo+KGRhdGEpKS0+ZGVyZWYoKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgdW5yZWFj
aGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVm
ZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwg
Y29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewogICAg
IGlmICghbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgUmVmUHRyPEFQSTo6RGF0YT4gZGF0YTsKICAgICBpZiAoc2hhcmVkQnVmZmVyKSB7Ci0gICAg
ICAgIHNoYXJlZEJ1ZmZlci0+cmVmKCk7Ci0gICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0
ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKilzaGFyZWRCdWZmZXItPmRhdGEo
KSwgc2hhcmVkQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIHNoYXJlZEJ1ZmZl
cik7CisgICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICAgICAgY29udGlndW91c0J1ZmZlci0+cmVmKCk7CisgICAgICAgIGRh
dGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFy
Kiljb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKSwgcmVs
ZWFzZVNoYXJlZEJ1ZmZlciwgY29udGlndW91c0J1ZmZlci5wdHIoKSk7CiAgICAgfQogCiAgICAg
bV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKHJlcXVlc3Qp
LCB0b0FQSShkYXRhLmdldCgpKSwgdG9BUEkoTUlNRVR5cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2Rp
bmdOYW1lLmltcGwoKSksIHRvVVJMUmVmKHVucmVhY2hhYmxlVVJMLnN0cmluZygpLmltcGwoKSks
IHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAppbmRleCAzNmJkOTgwYjJmYWExYWY0
NWFjMzEwNmViMDFlOWYzNzZiYTEzYWNmLi44NjNiZGFiNjI4NGNhM2FhZDJmOWQ1ZmZmNWZkNjhl
YWI4YjJiNzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQoY29uc3QgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50QmFzZSopOwog
CiAgICAgdm9pZCB3aWxsTG9hZFVSTFJlcXVlc3QoV2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3aWxsTG9h
ZERhdGFSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3Ry
aW5nJiwgY29uc3QgVVJMJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxM
b2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNv
bnN0IFdURjo6U3RyaW5nJiwgY29uc3QgVVJMJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlJiwgV2ViRnJh
bWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlJiwgV2ViRnJh
bWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVy
TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVBy
ZXZpZXdNb2RlbFBsYXllck1hYy5tbQppbmRleCBlNTI0ZDhlMWIwMTdhYThlNWUwM2I4OTJkOTJi
NzU4OTRjNThmMzc0Li5hNzg0ZWMzODhiMjI1MjRjYzBkYTYzMjc4ZTVlNzU5MTM3ZGNmNjZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
b2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KQEAgLTEwNiw3ICsx
MDYsNyBAQCB2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxl
KFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBpZiAoZmlsZSA8PSAwKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJj
ZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIEZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3Rl
bTo6Y2xvc2VGaWxlKGZpbGUpOwogICAgIG1fZmlsZVBhdGggPSBmaWxlUGF0aDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDk0ZDlkMmNjM2ViMjg4MGNkY2YyMmMwNzJhMzlhOTg5
NTVmZDQ0MzAuLjk3NTZmNTE5MjBkNjRjNDJjZGMwMDY4MTE1Mjc3ZWIxMTNkYjdkM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwKICAgICAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUu
dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpIHsKLSAgICAgICAgTE9H
X0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291
cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291
cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAyNTk0NDk0MjM4NTVmZWQzYWFh
YWI0MTQ4MTlmODk1MWEzYjhiN2ZmLi4zMTBmY2E3ODc1YzMyYzNjZDc0NzhkYjY0ZjU5YWMyY2Y1
MDE2MzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBib28KICAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJ
bnRlcmNlcHRSZXNwb25zZShtX2NvcmVMb2FkZXItPmZyYW1lKCksIHJlc3BvbnNlKSkgewogICAg
ICAgICBhdXRvIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIgPSBtX2NvcmVMb2FkZXItPmlk
ZW50aWZpZXIoKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmJlZ2luSW50ZXJjZXB0
aW5nUmVzcG9uc2UoaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllcik7Ci0gICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UobV9jb3JlTG9hZGVy
LT5mcmFtZSgpLCByZXNwb25zZSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlm
aWVyLCBwb2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShwb2xpY3lEZWNp
c2lvbkNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgaW5zcGVjdG9y
UmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG92ZXJyaWRlRGF0YSkgbXV0YWJsZSB7Cisg
ICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2Uo
bV9jb3JlTG9hZGVyLT5mcmFtZSgpLCByZXNwb25zZSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRp
ZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpbnRlcmNlcHRlZFJl
cXVlc3RJZGVudGlmaWVyLCBwb2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShwb2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgaW5zcGVjdG9yUmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdmVy
cmlkZURhdGEpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1f
Y29yZUxvYWRlci0+aWRlbnRpZmllcigpKSB7CiAgICAgICAgICAgICAgICAgV0VCUkVTT1VSQ0VM
T0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgaW50
ZXJjZXB0IGxvYWQgYmVjYXVzZSBubyBjb3JlTG9hZGVyIG9yIG5vIElEIik7CiAgICAgICAgICAg
ICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmNvbnRpbnVlUmVzcG9uc2UoaW50ZXJjZXB0ZWRS
ZXF1ZXN0SWRlbnRpZmllcik7CkBAIC0yOTUsMTEgKzI5NSwxMSBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRs
ZSYgaGFuZAogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlUmVzb3VyY2UgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmlu
ZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0co
ImRpZFJlY2VpdmVSZXNvdXJjZToiKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwog
CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRl
IGJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIHNlbnQgZnJvbSB0aGUgbmV0d29yayBwcm9j
ZXNzLiIpOwotICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2
ZVJlc291cmNlOiBVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZlciIpOworICAgICAgICBXRUJS
RVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiBVbmFibGUgdG8g
Y3JlYXRlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIiKTsKICAgICAgICAgaWYgKGF1dG8qIGZyYW1l
ID0gbV9jb3JlTG9hZGVyLT5mcmFtZSgpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogcGFnZSA9
IGZyYW1lLT5wYWdlKCkpCiAgICAgICAgICAgICAgICAgcGFnZS0+ZGlhZ25vc3RpY0xvZ2dpbmdD
bGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tl
eXM6OmludGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpj
cmVhdGVTaGFyZWRCdWZmZXJGYWlsZWRLZXkoKSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgK
aW5kZXggNDJkZTQ2MTQxOTc3OGI3YzQ1MGZjYTFlYjAzN2MxY2U5N2QyZDYzMS4uYTdmNDVjODQw
MWIyZmQyZjg3MGUzNjc4YzU4ZmMzMTBjMmUxZjI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtMjA3LDcgKzIwNyw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCkgZmluYWwg
eyB9CiAgICAgYm9vbCBnZXRGb3JtVmFsdWUoU3RyaW5nJiBmb3JtVmFsdWUpIGZpbmFsIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBoYW5kbGVTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsRGlyZWN0
aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSkgZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IGZpbmFsOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkg
Y29uc3QgZmluYWw7CiAgICAgdm9pZCB3aWxsRGV0YWNoUmVuZGVyZXIoKSBmaW5hbDsKICAgICBi
b29sIHBsdWdpbkhhbmRsZXNDb250ZW50T2Zmc2V0Rm9yQWNjZXNzaWJpbGl0eUhpdFRlc3QoKSBj
b25zdCBmaW5hbDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGQyM2FiYjllNjUxMWIxM2JiZDUyM2FmNDUxZjQ0MTc4
NzNhNmMxZTAuLmQ0N2YzMmI3ZDQ5MTk1NmJkY2U3N2JmZTZmMTVjYTc4NjViZmQxOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpA
QCAtMjU1Miw3ICsyNTUyLDcgQEAgdm9pZCBQREZQbHVnaW46Om5vdGlmeURpc3BsYXlNb2RlQ2hh
bmdlZChpbnQpCiAgICAgdXBkYXRlU2Nyb2xsYmFycygpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBQREZQbHVnaW46OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAorUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IFBERlBsdWdpbjo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAg
ICAgTlNEYXRhICpwZGZEYXRhID0gbGl2ZURhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCA4OGY0NWNlNTFjZTMxZGYwYzViM2I3NTg2MjM2YzNm
MGQ5YzkzYWQzLi41OGQ3MGEzOWExNmQ2YTRjMGU4YjBjYTlkMDNhYzNkMzdhZWRmY2UwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtNjEsNyArNjEsNyBA
QCBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3Mg
U2Nyb2xsYmFyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yODgsNyArMjg4LDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0VG9Sb290Vmlldyhjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnRJbkxvY2FsQ29vcmRpbmF0ZXMpIGNvbnN0OwogCi0g
ICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRh
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJv
b2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKaW5kZXggZDU0ZjI3ZjA3MDkxNDdlOWVkZWMwNmRlNThjMWU4Y2MxMjMxYTY3
Ny4uN2ZiMjBjNTkyZGJmYTA5NmUzOGJjMTY4NzAzNzM4Y2I4ZjQwN2M5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTI4OSw2ICsy
ODksNyBAQCBQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW5F
bGVtZW50LCBSZWY8UGx1Z2luPiYmIHBsdWdpbiwgYwogICAgICwgbV93ZWJQYWdlKHdlYlBhZ2Uo
bV9wbHVnaW5FbGVtZW50LmdldCgpKSkKICAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQog
ICAgICwgbV9wZW5kaW5nVVJMUmVxdWVzdHNUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZQ
bHVnaW5WaWV3OjpwZW5kaW5nVVJMUmVxdWVzdHNUaW1lckZpcmVkKQorICAgICwgbV9tYW51YWxT
dHJlYW1EYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKICAgICBt
X3dlYlBhZ2UtPmFkZFBsdWdpblZpZXcodGhpcyk7CiB9CkBAIC00MDMsOSArNDA0LDYgQEAgdm9p
ZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0
ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBB
U1NFUlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6SGFzUmVjZWl2
ZWRSZXNwb25zZSk7Ci0gICAgICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRhKQotICAgICAgICAg
ICAgbV9tYW51YWxTdHJlYW1EYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAgICAg
ICBtX21hbnVhbFN0cmVhbURhdGEtPmFwcGVuZChieXRlcywgbGVuZ3RoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTQzNyw3ICs0MzUsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIGlmICghbV9pc0luaXRp
YWxpemVkKSB7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtU3RhdGUgPSBNYW51YWxTdHJlYW1TdGF0
ZTo6RmluaXNoZWQ7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtRXJyb3IgPSBlcnJvcjsKLSAgICAg
ICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1E
YXRhLT5yZXNldCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MjYsMTEgKzkyNCwx
MSBAQCB2b2lkIFBsdWdpblZpZXc6OndpbGxEZXRhY2hSZW5kZXJlcigpCiAgICAgbV9wbHVnaW4t
PndpbGxEZXRhY2hSZW5kZXJlcigpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbHVnaW5W
aWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
aXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pIHsKLSAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFt
RGF0YSAmJiBtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hl
ZCkKLSAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgICAgIGlmICht
X21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKKyAgICAg
ICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGEtPmdldCgpOwogCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KQEAgLTEyNDIsMTAgKzEyNDAsMTAgQEAgdm9pZCBQbHVnaW5WaWV3
OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQogICAgIG1hbnVhbExvYWREaWRSZWNlaXZlUmVzcG9u
c2UobV9tYW51YWxTdHJlYW1SZXNwb25zZSk7CiAKICAgICAvLyBEZWxpdmVyIHRoZSBkYXRhLgot
ICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEpIHsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBl
bGVtZW50IDogKm1fbWFudWFsU3RyZWFtRGF0YSkKKyAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0
YS0+aXNOdWxsKCkpIHsKKyAgICAgICAgYXV0byBidWZmZXIgPSBtX21hbnVhbFN0cmVhbURhdGEt
PnRha2UoKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgp
KQogICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+
ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFt
RGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0g
TWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDIxMjZlYjhlZGI1NTkzODZiMzQyMjVlYjJiZDVi
ZmNkNjgwMjNmMjMuLmQxNTNhMjljYTE0YTkwZTMyMjdhODkxZTNlZWY1ZTRlNzk3MzUxYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTQx
LDYgKzQxLDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIC8v
IEZJWE1FOiBFdmVudHVhbGx5IHRoaXMgc2hvdWxkIG1vdmUgdG8gV2ViQ29yZS4KIApAQCAtMTE1
LDcgKzExNiw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxkQWxsb3dTY3JpcHRpbmcoKTsK
IAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBj
b25zdDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJl
c291cmNlRGF0YSgpIGNvbnN0OwogICAgIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExv
Y2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAgICBTdHJpbmcgZ2V0U2VsZWN0
aW9uRm9yV29yZEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIGNvbnN0OwogICAg
IGJvb2wgZXhpc3RpbmdTZWxlY3Rpb25Db250YWluc1BvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmKSBjb25zdDsKQEAgLTI1Miw3ICsyNTMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSBtX21hbnVhbFN0cmVhbVJlc3BvbnNlOwogICAgIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgbV9tYW51YWxTdHJlYW1FcnJvcjsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKIAogICAgIC8vIFRoaXMg
c25hcHNob3QgaXMgdXNlZCB0byBhdm9pZCBzaWRlIGVmZmVjdHMgc2hvdWxkIHRoZSBwbHVnaW4g
cnVuIEpTIGR1cmluZyBwYWludGluZy4KICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX3Ry
YW5zaWVudFBhaW50aW5nU25hcHNob3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuY3BwCmluZGV4IGZlZThmZWE3YmNjOGQ1OWMwN2UzYzViYTRkNjA5NTUyYTRkNjI4YmYuLmIw
NGNjY2YxMTNlNDkyOGZhNjYzODNiZDI0MzFkYjg3NDg1M2NjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC03MSwxNiArNzEsMTUgQEAgdm9pZCBXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBtX25lZWRzQ29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAot
dm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
bV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7Ci0gICAgICAg
IGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25z
ZURhdGEpKQotICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBidWZmZXItPmNvcHkoKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVz
cG9uc2VEYXRhKS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGlmICghc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkpCisg
ICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsKKyAgICAg
ICAgc3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpLmFwcGVuZChX
VEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDYsOCArMjA1
LDggQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZSgpCiAgICAgc3dpdGNoT24obV9yZXNwb25zZURhdGEsIFt0aGlzXShzdGQ6
Om51bGxwdHJfdCYpIHsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlk
RmluaXNoKCk7Ci0gICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAg
ICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICB9LCBbdGhpc10oY29u
c3QgU2hhcmVkQnVmZmVyQnVpbGRlciYgYnVmZmVyKSB7CisgICAgICAgIGRpZFJlY2VpdmVEYXRh
KCpidWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBk
aWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAppbmRleCBiMzQ3Y2FkMmFiNWY1NzFiMWEw
ZTIwNzIwODA0MzY3ZDc3MDE4NjAwLi42YjBhNDE3Y2YwZDNhZTBkN2I4OTNhOTk4NjgzYWJmMmJj
NGE0ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaExvYWRlckNsaWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNl
V29ya2VyVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1
ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00OSw3ICs1MCw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3Rp
b24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPFdlYkNvcmU6
OkZvcm1EYXRhPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoKCkgZmluYWw7CkBAIC04Miw3
ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxCbG9iTG9hZGVyPiBtX2Jsb2JM
b2FkZXI7CiAgICAgYm9vbCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdl
IHsgZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlTWVzc2FnZSB7IGZhbHNlIH07Ci0gICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVl
UmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKKyAgICBzdGQ6OnZh
cmlhbnQ8c3RkOjpudWxscHRyX3QsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIsIFJlZjxX
ZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9y
ZXNwb25zZURhdGE7CiAgICAgYm9vbCBtX2RpZEZpbmlzaCB7IGZhbHNlIH07CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCmluZGV4IDgxZTM3OWUzM2QxYTlhY2RjODZlZjVjNGJlMjFhNzI2MGQ5
NGQ0OGUuLjdjZmMwM2E4NWQzOWQ4MWYzOTJjMGFhMTMwZjgzZmJkMmM4MzRmMWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6
OnNob3VsZEFwcGx5U3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSwgY29uc3Qgc3Rk
OjoKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKLXZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxl
TmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJl
Z2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURh
dGEoaWRlbnRpZmllciwgY29udGVudFR5cGUsIHByZWZlcnJlZEZpbGVOYW1lLCBkYXRhLmdldCgp
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNTA2ZDlmNTQxMzhkMzdjYjRjNjRlZDQ2MGY1
OWE1YzI4ZmU1MjJhNi4uYjA1ODYxODkxZWNjODRjNjM2OGEyMDZjMjcwMTA2MGY1MDUyZjVlMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
c2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUoY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBj
b25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYpIGZpbmFsOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKLSAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJy
ZWRGaWxlTmFtZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9p
ZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0
dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0
ZXJBdHRhY2htZW50cyhWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYm
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDRiZGJiY2NkM2Zi
YzYyMGUwNzU0MTA1Y2VhMDllZGRmMDUxMjBiNmIuLjE0YTA4M2NhMjA3YTkwNjNjZjgwYjFlN2U5
NjcwYTQ4N2NmNGQzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE4
OCw4ICsxMTg4LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5n
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICBpZiAoIXdlYlBhZ2UpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
YWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgICAgICAg
ICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFp
blJlc291cmNlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5S
ZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOworICAgICAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEo
KTsKKyAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNv
dXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBu
dWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7
CiAgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZp
bmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2Uo
KS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7CiAgICAgICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmNDFhNzBlZjViYjZjMGVjZThiZDg2
Mjc0MTE2MDFjZjczMGU2MmExLi40YThiZWU1N2ZkYjFmZmNkZWYwMDg5ZmE2NWU5NzUzNzUwZDI1
MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMjA5LDcgKzIwOSw3
IEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjCiAgICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50Owog
fQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFy
ZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitp
bnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0
KQogewogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKICAgICBpZiAoYnVmZmVyICYm
IGJ1ZmZlci0+c2l6ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggZTI4
MDk5NjNmNGY1MDY4MWI3ZDAxZjQxYTY4NTMxYWI3MzIxNGZiMC4uMWZmODNlMTFiYzE3ODlhYWMw
ZjkwMGM5M2RjMjJmYmYyMzllYTJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApA
QCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogCiAgICAgaW50NjRfdCBhZGRUeXBlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGlu
dDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKKyAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgaW50NjRfdCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRleCAwN2IxNjdlMGVl
ZWU3Njg4NzViMDM5ZGZhNTlmNWZkMTNjNzU0ZTEwLi5kNDE1OTA0YzcxYjFjMGM3MmEzZTE3Y2Y3
YjM0NTIwYWEyNzkwMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVu
dC5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpXZWJQcmV2
aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cgogICAgIDog
bV9maWxlTmFtZSB7IGZpbGVOYW1lIH0KICAgICAsIG1fdXRpIHsgdXRpIH0KICAgICAsIG1fcGFn
ZUlEIHsgcGFnZUlEIH0KLSAgICAsIG1fYnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9
CisgICAgLCBtX2J1ZmZlciB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9
CiB7CiB9CiAKIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6On5XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
KCkgPSBkZWZhdWx0OwogCi12b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFdlYlByZXZpZXdMb2FkZXJD
bGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIGF1dG8gd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBh
Z2UobV9wYWdlSUQpOwogICAgIGlmICghd2ViUGFnZSkKQEAgLTY5LDEzICs2OSwxMiBAQCB2b2lk
IFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoKQogICAgIGlmICghd2Vi
UGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXIuZ2V0KCkpOwotICAgIG1fYnVmZmVy
LT5jbGVhcigpOworICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lKG1fYnVmZmVyLT50YWtlKCkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlByZXZp
ZXdMb2FkZXJDbGllbnQ6OmRpZEZhaWwoKQogewotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAg
IG1fYnVmZmVyLT5yZXNldCgpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRp
ZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAw
NDkyY2VlYzJmOWI5Y2Q4NTM4Mzg0ODRmYmMyNmMwN2NiNTNkYTg3Li5jYzNiMjRiNzI5YjIxOGI4
MGQzN2ExMmNkN2ZhYzNkZmE5YmVkMWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuaApAQCAtMjksOCArMjksMTMgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5
UHJldmlld0xvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7
Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGcmFtZTsKQEAgLTQ1LDcgKzUw
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdlYlByZXZpZXdMb2FkZXJDbGllbnQoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGksIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoKSBvdmVycmlkZTsKICAgICBi
b29sIHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KQEAgLTU0LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcgbV9maWxlTmFt
ZTsKICAgICBjb25zdCBTdHJpbmcgbV91dGk7CiAgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgbV9wYWdlSUQ7Ci0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7
CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0K
aW5kZXggYTY0YzZhOGIzYzY5NWUxNzMzNjQzMzZiY2IwZjY4ZGJkZDljMmQyMS4uZTFlMGU2MTEy
YTJkZWRjM2I4YmI2MzA5ODUzNTM3NmVmNDNhZDUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVu
dE1hYy5tbQpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFu
ZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAKICAg
ICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IGltYWdlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9u
c2UoKTsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGltYWdl
LT5pbWFnZSgpLT5kYXRhKCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgp
LT5kYXRhKCk7CiAgICAgc2l6ZV90IGltYWdlU2l6ZSA9IGltYWdlQnVmZmVyLT5zaXplKCk7CiAK
ICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigq
aW1hZ2VCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCmluZGV4IDliZDRjZDJkMGNiMTAzYjQ1YWE4ZTZjMWQ0MjdjMGIxN2JmNWVkMTMuLmQ4
OGY0NGNmY2RlNWUxNWY2NmMxMjRiNDBmNWI1NDM1Yjk0Njk3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTM0MCwxMCArMzQwLDEwIEBA
IFN0cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29uc3QKICAgICBEb2N1bWVudExvYWRlciogZG9j
dW1lbnRMb2FkZXIgPSBtX2NvcmVGcmFtZS0+bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIo
KTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVy
LT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwog
ICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAg
IHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5kYXRh
KCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgcmV0dXJuIGRlY29kZXItPmVuY29k
aW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
bWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjpjb250ZW50
c0FzU3RyaW5nKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IGIzYjBmYmNjNzZlNjBmNjc4YmYxYzZkZTUyMTMwNTk4Y2IyZDAwODgu
LmFjZTIzMTU2NjJlMjBmNmYwNDA4NzVjZTU0N2U1OWRhZjFmZTk4NDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNzM4LDcgKzE3MzgsNyBA
QCBOT19SRVRVUk4gdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdFdhaXRpbmdGb3JQcm9jZXNzTGF1
bmNoKExvYWRQYXJhbWV0ZXJzJiYsIFVSTAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBzaGFyZWRCdWZmZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVS
TCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBTdWJzdGl0dXRlRGF0
YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgU2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQor
dm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBzaGFyZWRCdWZmZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVS
TCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBTdWJzdGl0dXRlRGF0
YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgU2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQog
ewogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBzZXRJc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sICZtX21haW5GcmFtZS5n
ZXQoKSk7CkBAIC0xNzUzLDcgKzE3NTMsNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaAogCiAg
ICAgLy8gTGV0IHRoZSBJbmplY3RlZEJ1bmRsZSBrbm93IHdlIGFyZSBhYm91dCB0byBzdGFydCB0
aGUgbG9hZCwgcGFzc2luZyB0aGUgdXNlciBkYXRhIGZyb20gdGhlIFVJUHJvY2VzcwogICAgIC8v
IHRvIGFsbCB0aGUgY2xpZW50IHRvIHNldCB1cCBhbnkgbmVlZGVkIHN0YXRlLgotICAgIG1fbG9h
ZGVyQ2xpZW50LT53aWxsTG9hZERhdGFSZXF1ZXN0KCp0aGlzLCByZXF1ZXN0LCBjb25zdF9jYXN0
PFNoYXJlZEJ1ZmZlcio+KHN1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKSksIHN1YnN0aXR1dGVEYXRh
Lm1pbWVUeXBlKCksIHN1YnN0aXR1dGVEYXRhLnRleHRFbmNvZGluZygpLCBzdWJzdGl0dXRlRGF0
YS5mYWlsaW5nVVJMKCksIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybUhhbmRsZXNU
b09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBtX2xvYWRlckNsaWVudC0+
d2lsbExvYWREYXRhUmVxdWVzdCgqdGhpcywgcmVxdWVzdCwgY29uc3RfY2FzdDxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKj4oc3Vic3RpdHV0ZURhdGEuY29udGVudCgpKSwgc3Vic3RpdHV0ZURhdGEu
bWltZVR5cGUoKSwgc3Vic3RpdHV0ZURhdGEudGV4dEVuY29kaW5nKCksIHN1YnN0aXR1dGVEYXRh
LmZhaWxpbmdVUkwoKSwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtSGFuZGxlc1Rv
T2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogCiAgICAgLy8gSW5pdGF0ZSB0aGUg
bG9hZCBpbiBXZWJDb3JlLgogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCgq
bV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CkBAIC0z
ODYxLDcgKzM4NjEsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogCiB2b2lkIFdlYlBhZ2U6
OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAg
IGlmIChXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShm
cmFtZUlEKSkgewogICAgICAgICBpZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IHBsdWdpblZp
ZXdGb3JGcmFtZShmcmFtZS0+Y29yZUZyYW1lKCkpKQogICAgICAgICAgICAgYnVmZmVyID0gcGx1
Z2luVmlldy0+bGl2ZVJlc291cmNlRGF0YSgpOwpAQCAtMzg3Nyw3ICszODc3LDcgQEAgdm9pZCBX
ZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgQ29tcGxldGlvbkhhbmQKICAgICBjYWxsYmFjayhkYXRhUmVmZXJlbmNlKTsKIH0KIAotc3Rh
dGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFt
ZSwgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkKK3N0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJl
c291cmNlVVJMKQogewogICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWxvYWRlcikKQEAgLTM4OTIsNyArMzg5Miw3
IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFt
ZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyCiAKIHZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VE
YXRhRnJvbUZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291
cmNlVVJMU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CiAgICAgICAgIFVSTCByZXNvdXJjZVVSTChVUkwoKSwg
cmVzb3VyY2VVUkxTdHJpbmcpOwogICAgICAgICBidWZmZXIgPSByZXNvdXJjZURhdGFGb3JGcmFt
ZShmcmFtZS0+Y29yZUZyYW1lKCksIHJlc291cmNlVVJMKTsKQEAgLTY5NzcsNyArNjk3Nyw3IEBA
IHZvaWQgV2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBD
YWxsYmFja0lEIGxvYWRJZGVudGlmaWVyCiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBkb2N1bWVudExvYWRlci0+
ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIudG9JbnRl
Z2VyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBpY29uRGF0YSkgbXV0YWJsZSB7CisgICAgZG9jdW1lbnRM
b2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVy
LnRvSW50ZWdlcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGljb25EYXRhKSBtdXRhYmxl
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBpY29uRGF0YSB9KTsKICAgICB9KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAzNWMyM2Zl
NjAyZWI0ZjkwNDFhYmIwYTk4N2U3ZDJmMGNhMGY4YjNlLi5mNmRkZDc4ZWExOTg4ZTFmY2FjOTA3
NGJmNTZlN2FiMWJiMWNiNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC0yMTYsNyArMjE2LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CiBjbGFzcyBTZWxlY3Rp
b25HZW9tZXRyeTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNzIFRleHRDaGVja2luZ1JlcXVlc3Q7
CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247CkBAIC0xMzk2LDcgKzEzOTYsNyBAQCBwdWJsaWM6CiAK
ICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1
dGkpOwotICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCByZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogI2VuZGlmCiAKQEAgLTE1OTksNyArMTU5OSw3IEBA
IHByaXZhdGU6CiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAotICAg
IHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6U2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+
JiYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwg
Y29uc3QgVXNlckRhdGEmLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgV2Vi
Q29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKKyAgICB2b2lkIGxvYWREYXRhSW1w
bCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBV
c2VyRGF0YSYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBXZWJD
b3JlOjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5LCBXZWJDb3JlOjpT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwogCiAgICAgLy8gQWN0aW9ucwogICAgIHZvaWQg
dHJ5Q2xvc2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGM5NWMz
ODQ2MzkyMjE4NGYyNTdhNzE5ZGI1YmE5YTQ4MjlhZWRmMWIuLjg1ZTY1MTg2OTJlZDYwYzc4OGU3
MmE3Y2UzMmYzZjBlMTVjYTc3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0zMjE3LDcgKzMyMTcsNyBAQCB2b2lkIFdl
YlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQogICAgICAgICBD
YWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKmVsZW1lbnQu
cmVuZGVyZXIoKSkuY2FjaGVkSW1hZ2UoKTsKICAgICAgICAgaWYgKCFjYWNoZWRJbWFnZSkKICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
Y2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsKICAg
ICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gc2hh
cmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpAQCAt
NDY4Myw3ICs0NjgzLDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tE
b2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUoZmlsZU5hbWUsIHV0aSkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQordm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5G
cmFtZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJU
KCFidWZmZXIuaXNFbXB0eSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCBlMThkMTBjM2ZjNGYx
OGQ3M2EyYTc0MGM1MzMxMzEzNDNmZjMzY2FmLi5jNjFiODUxMmJhM2NmY2M4OWU0MzViZjk0MzQ0
ZGQ3MjkxNzI1YjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMjI4LDExICsyMjgsNyBAQCBib29s
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnRFbgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVU5VU0VE
X1BBUkFNKG1vZGUpOwogI2lmIEhBVkUoQVZLSVQpCi0jaWYgSEFWRShVSUtJVF9XRUJLSVRfSU5U
RVJOQUxTKQotICAgIHJldHVybiBtb2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZVN0YW5kYXJkOwotI2Vsc2UKICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgog
I2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTI0Myw3ICsyMzksNyBAQCBib29s
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnRFbgogCiBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBv
cnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSgpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgIUhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcAppbmRleCBkM2Qz
OGNhYzQxMjExZDdlMjliNTdmMjQ1MjM2NGUzN2I0MjNjMzFhLi4zN2YyN2U5NTJkMDcxNzExMjFj
YjRmNTQ4N2E4Yjg0YjlmOGE2MzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93
aW4vV2ViUHJvY2Vzc1dpbi5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNv
cmUvU2hhcmVkQnVmZmVyLmg+CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRS
ZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKK1JlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5h
bWUpCiB7CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29y
ZVN1cHBvcnQvUGluZ0hhbmRsZS5oCmluZGV4IDFmNTU4NGZhMzg3ZDc2Y2NlOTRmZjdiNTY5Njhl
N2U4MjIwNjA2MDYuLmEyNTU2MGExMGMyODgyZTFhYmQxNzg0NTY5NDg2ZWExM2VkODk2ZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCkBA
IC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAg
ICAgICAgIHBpbmdMb2FkQ29tcGxldGUoeyB9LCByZXNwb25zZSk7CiAgICAgfQotICAgIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYsIGludCkgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KKyAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50KSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxl
dGUoKTsgfQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgcGluZ0xvYWRD
b21wbGV0ZSgpOyB9CiAgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgcGluZ0xvYWRDb21w
bGV0ZShlcnJvcik7IH0KICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlKikgZmluYWwgeyByZXR1cm4gbV9zaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJ
S2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4
dGVuc2lvbnMubW0KaW5kZXggZWIzOTQxZjI2NmRmMTNjMjhhOTA2ZWU3ZDE2MWFlMjFlMTc1NDA5
MS4uNjM1NWI2ZjkwMzE4MDA1NWNiNjA3YTgwYmU3NzAxMzg0ZDg4ZGQ3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCkBAIC0zODgs
NyArMzg4LDcgQEAgLSAoTlNEYXRhICopZGF0YVJlcHJlc2VudGF0aW9uOihCT09MKXJhd0ltYWdl
RGF0YQogICAgIGF1dG8qIGRhdGEgPSByYXdJbWFnZURhdGEgPyBjYWNoZWRJbWFnZS0+cmVzb3Vy
Y2VCdWZmZXIoKSA6IGltYWdlLT5kYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1
cm4gbmlsOwotICAgIHJldHVybiBkYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwor
ICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVs
ZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKW1pbWVUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAppbmRleCBhMjU5OGYzMmZiNzYwYTdkODgzYzlmNGNlZWMxOGNmNTkxZWI4ZWFkLi45NTlk
NzQ4YjU2YmUxMDc2YmQ5Nzc5OTIyY2QzNTZkMjFhNjgxNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKQEAgLTI0OCw3ICsyNDgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZEgyUGlu
Zyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFNlY29uZHMsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3I+JiYpPiYmKSBmaW5hbDsKIAogICAgIHZvaWQgZ2V0TG9hZERl
Y2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3JlOjpMaW5rSWNvbiYs
IHVpbnQ2NF90Pj4mKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGJvb2wgbV9sb2FkaW5nSWNvbiB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCmluZGV4IGI4NDlkMmFhYzJhOTNmYmVlNDE3MjlmMjRhODZjZGNmNmIxZmUwMTkuLmFhMmNj
OTgxNDc0YTEzY2U1MDg0Nzk4OTQyMzY4NDQ5MWM4OGY2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tCkBAIC0yMDEyLDcgKzIwMTIsNyBAQCBSZWZQdHI8V2ViQ29yZTo6TGVnYWN5UHJl
dmlld0xvYWRlckNsaWVudD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVByZXZpZXdMbwog
ICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fZmlsZVBhdGg7CiAgICAgICAgIFJldGFpblB0
cjxOU0ZpbGVIYW5kbGU+IG1fZmlsZUhhbmRsZTsKIAotICAgICAgICB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlCisgICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gZGF0
YUFycmF5ID0gYnVmZmVyLmNyZWF0ZU5TRGF0YUFycmF5KCk7CiAgICAgICAgICAgICBmb3IgKE5T
RGF0YSAqZGF0YSBpbiBkYXRhQXJyYXkuZ2V0KCkpCkBAIC0yMDk0LDcgKzIwOTQsNyBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0
b3I8c3RkOjpwYWlyPFdlYkNvcgogICAgICAgICB9CiAKICAgICAgICAgbV9sb2FkaW5nSWNvbiA9
IHRydWU7Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29u
KHRydWUsIGljb24tPnNlY29uZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1d
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGJ1ZmZlcikgeworICAgICAgICBkb2N1bWVudExvYWRl
ci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29uLT5zZWNvbmQsIFt0aGlzLCB3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogYnVmZmVyKSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIGZpbmlzaGVkTG9hZGluZ0ljb24oYnVmZmVyKTsKQEAg
LTIxMzEsNyArMjEzMSw3IEBAIHN0YXRpYyBOU0ltYWdlICp3ZWJHZXROU0ltYWdlKFdlYkNvcmU6
OkltYWdlKiBpbWFnZSwgTlNTaXplIHNpemUpCiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24o
V2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBpY29uRGF0YSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
aWNvbkRhdGEpCiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQVNTRVJUKG1fbG9h
ZGluZ0ljb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAyNGI2OTk3MDZkZjBk
NmI3MTkyYWE1MjAyZGU2MWQ4YjFlNTczMmY5Li41MjdmYTU1MjE5MGJhMDAxNDUxN2ZmZGU3Mzc3
MjBiMmU3YTkwYWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNzUsNyArNzUs
NyBAQCBwcml2YXRlOgogCiAgICAgaW50NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VHlw
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKLSAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2
NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRf
dCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgaW50NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMubW0KaW5kZXggZmMwNzc2ZTYyZDY2YmU5YWM5M2Q0ODdkZGZkMzAwYTZkNDA3
YzU1My4uMzk4Njg1OWY3MzM4ZTI4NDU3ZWQ0YjE5MGNiYTY3MDUyMjEwMDI0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTU0LDcgKzE1NCw3IEBAIGludDY0X3QgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBjCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
c2V0VHlwZXMocGFzdGVib2FyZFR5cGVzKTsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZm
ZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLCBwYXN0ZWJvYXJkVHlwZSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXgg
Mjg5YzAwMjliZjkxMzQxOGQwYjI5OWY5MGE0ZDk3MTEzYmM1OGE0Yi4uODNlODU5MTQzNDVlYTdj
Yjg0MWQ5OWZkMWZiNjY2ZDhjY2YwMzAyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNDYwLDEwICs0NjAsMTAgQEAgLSAodm9p
ZClkZWFsbG9jCiAKIC0gKE5TRGF0YSAqKWRhdGEKIHsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVy
LT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXIt
Pm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAg
IHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgp
LmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGlkIDxXZWJEb2N1
bWVudFJlcHJlc2VudGF0aW9uPilyZXByZXNlbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQppbmRleCA4
MGNkMzBlZjQ2NzYwZTE0YzhlNjdhODhhMjczM2M5ZDQzN2ZhNWQ5Li4zOGQ3ZTUzMmQ2ZWFhMGNh
YzM4ODYyZjNlMGUxNjlmZTI4MTI3N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQpAQCAtMjMwLDcgKzIz
MCw3IEBAIC0gKEJPT0wpY2FuU2F2ZUFzV2ViQXJjaGl2ZQogLSAoTlNTdHJpbmcgKilkb2N1bWVu
dFNvdXJjZQogewogICAgIGlmIChbc2VsZiBfaXNEaXNwbGF5aW5nV2ViQXJjaGl2ZV0pIHsgICAg
ICAgICAgICAKLSAgICAgICAgU2hhcmVkQnVmZmVyICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJp
dmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOwor
ICAgICAgICBhdXRvICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBf
ZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOwogICAgICAgICByZXR1cm4gYWRv
cHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6cGFyc2VkQXJjaGl2ZURhdGEgPyBw
YXJzZWRBcmNoaXZlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggODM4ZTQxMzM4MWE4
MDc1YTNkNjI0NTk0NTUyNjdhNWJiYjU1YTk5MS4uMjhkODc1OTI5Y2NhY2RiOWExMzg4YTgyNmIy
ZmQ1ZWNmNDZlY2NkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tCkBAIC0zNTQwLDggKzM1NDAsOCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTWVu
dUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYg
aAogICAgIH0KIAogICAgIGlmIChhdXRvKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkg
ewotICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1h
Z2UtPmRhdGEoKSkKLSAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1h
Z2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5kYXRh
KCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKKyAgICAgICAgaWYgKFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQor
ICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5p
dFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOwogICAgIH0KIAogICAgIGlm
ICghaGl0VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKS5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCmluZGV4IDEyMTk4ZjQwMWVh
OGFkNTc4ZGQ3YmRlYWNjMDRkZmI3ZTM0YWM3MzQuLmFhZGNmYmZlYTM1NmIzN2IwZjUzNzhhZmE4
OThiOGVhOTlhZTZhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJSZXNvdXJjZS5tbQpAQCAtMTYzLDIxICsxNjMsMjEgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoQ29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCiAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlND
b2RlciAqKWVuY29kZXIKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IF9wcml2YXRlLT5jb3JlUmVz
b3VyY2UuZ2V0KCk7Ci0gICAgCi0gICAgTlNEYXRhICpkYXRhID0gbmlsOworCisgICAgUmV0YWlu
UHRyPE5TRGF0YT4gZGF0YTsKICAgICBOU1VSTCAqdXJsID0gbmlsOwogICAgIE5TU3RyaW5nICpt
aW1lVHlwZSA9IG5pbCwgKnRleHRFbmNvZGluZyA9IG5pbCwgKmZyYW1lTmFtZSA9IG5pbDsKICAg
ICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IG5pbDsKLSAgICAKKwogICAgIGlmIChyZXNvdXJj
ZSkgewotICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQo
KTsKKyAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgICAgIHVybCA9IHJlc291cmNlLT51cmwoKTsKICAgICAgICAgbWlt
ZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgdGV4dEVuY29kaW5nID0gcmVz
b3VyY2UtPnRleHRFbmNvZGluZygpOwogICAgICAgICBmcmFtZU5hbWUgPSByZXNvdXJjZS0+ZnJh
bWVOYW1lKCk7CiAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkubnNVUkxS
ZXNwb25zZSgpOwogICAgIH0KLSAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YSBmb3JLZXk6
V2ViUmVzb3VyY2VEYXRhS2V5XTsKKyAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YS5nZXQo
KSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6
dXJsIGZvcktleTpXZWJSZXNvdXJjZVVSTEtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0
Om1pbWVUeXBlIGZvcktleTpXZWJSZXNvdXJjZU1JTUVUeXBlS2V5XTsKICAgICBbZW5jb2RlciBl
bmNvZGVPYmplY3Q6dGV4dEVuY29kaW5nIGZvcktleTpXZWJSZXNvdXJjZVRleHRFbmNvZGluZ05h
bWVLZXldOwpAQCAtMjAyLDcgKzIwMiw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKIAogICAgIGlmICgh
X3ByaXZhdGUtPmNvcmVSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4g
X3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNl
KCk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1VSTCAqKVVS
TApAQCAtMzY3LDggKzM2Nyw4IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ1ZhbHVlCiAgICAgaWYg
KCFlbmNvZGluZy5pc1ZhbGlkKCkpCiAgICAgICAgIGVuY29kaW5nID0gV2luZG93c0xhdGluMUVu
Y29kaW5nKCk7CiAgICAgCi0gICAgU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRlLT5j
b3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsK
LSAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGNvcmVEYXRhID8gY29yZURhdGEtPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVE
YXRhLT5zaXplKCkgOiAwKTsKKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9
IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgp
IDogbnVsbHB0cjsKKyAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKIH0KIAogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRleCBiNDA3M2Ux
MDhiZDVjNzcwZGQ2MmExMDVhZmIwY2NhOWM0ZWYwMzhlLi4wODk3YzdjMDU0OGQyMGIxZWY0NWUz
NWUxYmY4ZDhlNDBlYTVkM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291
cmNlLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6ZGF0YShf
Q09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0pCiAgICAgaWYgKCFtX2xvYWRlcikKICAg
ICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAotICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNy
ZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCkpLmNvcHlSZWZUbyhzdHJl
YW0pOworICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5t
YWluUmVzb3VyY2VEYXRhKCktPm1ha2VDb250aWd1b3VzKCkpLmNvcHlSZWZUbyhzdHJlYW0pOwog
fQogCiBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OnJlcHJlc2VudGF0aW9uKF9DT01fT3V0cHRyX29w
dF8gSVdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24qKiByZXApCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJGcmFtZS5jcHAKaW5kZXggOTBhNWEwYTEzMzZlZWViYzhhZjVjZGVjMWI1YzYyMGU2ODIzMTli
NS4uNTU4ZTEzYzdmMWZkYWE1YjEyNWQyMGJlZmU3OTFhMjdmZjc1NzEyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtNTU5LDcgKzU1OSw3IEBAIEhSRVNVTFQgV2ViRnJh
bWU6OmxvYWRSZXF1ZXN0KF9Jbl9vcHRfIElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgIHJl
dHVybiBTX09LOwogfQogCi12b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwg
QlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpCit2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBl
LCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKQog
ewogICAgIFN0cmluZyBtaW1lVHlwZVN0cmluZyhtaW1lVHlwZSwgU3lzU3RyaW5nTGVuKG1pbWVU
eXBlKSk7CiAgICAgaWYgKCFtaW1lVHlwZSkKQEAgLTU4NSwyMSArNTg1LDIxIEBAIHZvaWQgV2Vi
RnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBt
aW1lVHlwZSwgQlNUUiB0CiAKIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElT
dHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSIHRleHRFbmNvZGluZ05h
bWUsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgc2hhcmVkQnVmZmVyOwogCiAg
ICAgU1RBVFNURyBzdGF0OwogICAgIGlmIChTVUNDRUVERUQoZGF0YS0+U3RhdCgmc3RhdCwgU1RB
VEZMQUdfTk9OQU1FKSkpIHsKICAgICAgICAgaWYgKCFzdGF0LmNiU2l6ZS5IaWdoUGFydCAmJiBz
dGF0LmNiU2l6ZS5Mb3dQYXJ0KSB7CiAgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YUJ1ZmZl
cihzdGF0LmNiU2l6ZS5Mb3dQYXJ0KTsKICAgICAgICAgICAgIFVMT05HIHJlYWQ7Ci0gICAgICAg
ICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0dGVy
IHRvIHJlYWQgcmlnaHQgaW50byB0aGUgU2hhcmVkQnVmZmVyCisgICAgICAgICAgICAvLyBGSVhN
RTogdGhpcyBkb2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmln
aHQgaW50byB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgogICAgICAgICAgICAgLy8gb3IgYWRv
cHQgdGhlIFZlY3RvciBvciBzb21ldGhpbmcuCiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGRh
dGEtPlJlYWQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PFVMT05HPihkYXRhQnVmZmVy
LnNpemUoKSksICZyZWFkKSkpCi0gICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQo
ZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsK
KyAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXIuYXBwZW5kKGRhdGFCdWZmZXIuZGF0YSgpLCBz
dGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBsb2FkRGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIG1pbWVUeXBlLCB0ZXh0RW5jb2Rp
bmdOYW1lLCB1cmwsIG51bGxwdHIpOworICAgIGxvYWREYXRhKHNoYXJlZEJ1ZmZlci50YWtlKCks
IG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIpOwogICAgIHJldHVybiBT
X09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaAppbmRleCA0MzYwNTRmZDlkZGI0
N2NhMzI5NmIxMTc5ODE0MzRlYzE4OTdkYWQxLi5mYTljMzgxY2M1NzNiYTZiMjA5ODhlYWIzNTA4
ZWQ5YTMwYThmMTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFt
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKQEAgLTUwLDcgKzUw
LDcgQEAgY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwogY2xhc3MgSW50UmVjdDsKIGNsYXNz
IFBhZ2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVl
SlNDb250ZXh0KiBKU0NvbnRleHRSZWY7CkBAIC0xOTUsNyArMTk1LDcgQEAgcHJpdmF0ZToKICAg
ICB+V2ViRnJhbWUoKTsKIAogICAgIHZvaWQgbG9hZEhUTUxTdHJpbmcoX0luXyBCU1RSIHN0cmlu
ZywgX0luXyBCU1RSIGJhc2VVUkwsIF9Jbl8gQlNUUiB1bnJlYWNoYWJsZVVSTCk7Ci0gICAgdm9p
ZCBsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBCU1RSIG1pbWVUeXBlLCBC
U1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKTsKKyAg
ICB2b2lkIGxvYWREYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBC
U1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBm
YWlsaW5nVVJMKTsKICAgICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIGNvbXB1dGVQ
YWdlUmVjdHMoSERDIHByaW50REMpOwogICAgIHZvaWQgc2V0UHJpbnRpbmcoYm9vbCBwcmludGlu
ZywgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBwYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBvcmlnaW5hbFBhZ2VTaXplLCBmbG9hdCBtYXhpbXVtU2hyaW5rUmF0aW8sIFdlYkNv
cmU6OkFkanVzdFZpZXdTaXplT3JOb3QpOwogICAgIHZvaWQgaGVhZGVyQW5kRm9vdGVySGVpZ2h0
cyhmbG9hdCosIGZsb2F0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJLaXRETEwuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcAppbmRl
eCA5NjIwMTk4YjRiNTQwYWU2Zjc5NjdmODIzM2M5NDY0YmQyNzc1ODUxLi4yNzRiN2QyZDZjZjJl
YjQ3MWQ3YjhiODk2NTlhZTQ2OWNmOTM0YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRETEwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dERMTC5jcHAKQEAgLTE2NSw4ICsxNjUsOCBAQCB2b2lkIHNodXREb3duV2ViS2l0KCkKIH0KIAog
Ly9GSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIG1vdmluZyB0aGlzIHRvIGEgbmV3IGZpbGUgZm9y
IGNyb3NzLXByb2plY3QgZnVuY3Rpb25hbGl0eQotV0VCS0lUX0FQSSBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpOwot
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25z
dCBjaGFyKiBuYW1lKQorV0VCS0lUX0FQSSBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKTsKK1JlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVy
KGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgaW50IGlkcjsKICAgICAvLyB0ZW1wb3JhcnkgaGFj
ayB0byBnZXQgcmVzb3VyY2UgaWQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCBkMTBmYzJmZmViMmI1ZGJhMGM1MWIyYmFhN2M1YWNjNWUwZDY4OThi
Li41MGQzMDU0NTU0YWNkNmFiNWNkNDVkYjUzZjNjMDZjZDdiMTQ1YzIwIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIw
MjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5
MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFy
ZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3Qg
dGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHA6CisKKzIwMjEtMTEtMjgg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVk
QnVmZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdHMuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1RfRik6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFw
cGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBm
cm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAg
IHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUX0YpOgorCiAyMDIxLTEyLTAzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFdlYiBjb250ZW50IHByb2Nlc3Mgc29tZXRp
bWVzIGNyYXNoZXMgdW5kZXIgV2ViUGFnZTo6cG9zaXRpb25JbmZvcm1hdGlvbigpCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDg1ODNiMjlhZDk5
MGMyMmI0NzJjODY5ZWNjZDg2ODI5NjIxYmIwYjQuLmI4NDdkM2E4MjZiM2Q5ZmZjMDhmNmYzYmUz
ODI2MGE2YzU5ZGZmMmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVT
eXN0ZW0uY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZVRlc3RGaWxlKGNv
bnN0IFN0cmluZyYgcGF0aCkKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7
CiB9OwogCi0vLyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIFNoYXJlZEJ1ZmZl
clRlc3QgYXMgYSBzaW5nbGUgY2xhc3MuCisvLyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRl
c3QgYW5kIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgogY2xh
c3MgRmlsZVN5c3RlbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAg
dm9pZCBTZXRVcCgpIG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKaW5kZXggYjk4NmEyYTU4ODg0NjViZTE5
MjBhNmUwNjY4ZDcwZGIyNDkwNmVhYi4uYWI0NzJlNTBiODM1NzRjMzAxODI1ZGJiZWVmOTk4M2Yy
ZjQxZDIyZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rp
c3BsYXlMaXN0VGVzdHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9EaXNwbGF5TGlzdFRlc3RzLmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIFRFU1QoRGlzcGxheUxp
c3RUZXN0cywgSXRlbUJ1ZmZlckNsaWVudCkKICAgICAgICAgICAgIHJldHVybiB7IGdsb2JhbEJ1
ZmZlcklkZW50aWZpZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0
eSB9OwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRl
bU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3BsYXlMaXN0SXRlbSkgY29uc3Qg
ZmluYWwKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1P
dXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJiBkaXNwbGF5TGlzdEl0ZW0pIGNvbnN0IGZp
bmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gaW5kZXggPSBtX2l0ZW1zLnNpemUoKTsK
ICAgICAgICAgICAgIG1faXRlbXMuYXBwZW5kKHN0ZDo6Z2V0PFN0cm9rZVBhdGg+KGRpc3BsYXlM
aXN0SXRlbSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyLmNwcAppbmRleCBkZGJmYzFmMmIxODIxY2IxZGZhYmM4ZTJmNjMyN2IyMTJjN2Nh
NDY4Li5hMDYzMGJhNjc1YmY4ZTUyYzQ0MGM5ZDE5MjIwNzIyODkwZmJkYzFmIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNDEsODAgKzQxLDczIEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLVRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQorVEVTVF9GKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQog
ewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAgICAgQVNT
RVJUX05VTEwoYnVmZmVyKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdp
dGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJU
ZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgRVhQ
RUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3RE
YXRhKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERh
dGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAgIEVY
UEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxlbihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSkpOworICAgIEVYUEVDVF9UUlVFKFN0cmluZyhGcmFnbWVudGVkU2hh
cmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKK1RFU1RfRihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5
RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9O
VUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5KCkpOwogfQogCi1U
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4
aXN0aW5nRmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZl
ckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0
ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gY29weSA9IGJ1ZmZlci0+Y29weSgpOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1
ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29w
eS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZm
ZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0
aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZm
ZXItPmNsZWFyKCk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBFWFBF
Q1RfVFJVRSghYnVmZmVyLT5kYXRhKCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRl
cjsKKyAgICBidWlsZGVyLmFwcGVuZCgqYnVmZmVyKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiYSIs
IDEpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuc2l6ZSgpID09IChzdHJsZW4oRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOworICAgIEVYUEVDVF9UUlVFKCFt
ZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0KCkt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRC
dWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCi17Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1
ZmZlci0+YXBwZW5kKCJhIiwgMSk7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0g
KHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1Rf
VFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
LCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEo
J2EnLCBidWZmZXItPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSld
KTsKLX0KLQotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQor
VEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikK
IHsKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBjaGFyIHRlc3REYXRhMVtd
ID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3REYXRhMltdID0gIkdvb2RieWUiOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3RE
YXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3RE
YXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3RE
YXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlC
dWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWlsZGVyKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAg
IGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOworICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZl
cigpOwogICAgIGNoYXIgZXhwZWN0ZWRDb25jYXRlbmF0aW9uW10gPSAiSGVsbG9Xb3JsZEdvb2Ri
eWUiOwogICAgIEFTU0VSVF9FUShzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSwgYXJyYXlC
dWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZENv
bmNhdGVuYXRpb24sIGFycmF5QnVmZmVyLT5kYXRhKCksIHN0cmxlbihleHBlY3RlZENvbmNhdGVu
YXRpb24pKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1
ZmZlckxhcmdlU2VnbWVudHMpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHRy
eUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKIHsKICAgICBWZWN0b3I8dWludDhfdD4g
dmVjdG9yMCgweDQwMDAsICdhJyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAw
LCAnYicpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUodmVjdG9yMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVj
dG9yMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUo
dmVjdG9yMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOworICAgIGJ1
aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAg
IEFTU0VSVF9FUSgweDQwMDBVICsgMHg0MDAwVSArIDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRl
TGVuZ3RoKCkpOwogICAgIGludCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCAweDQwMDA7ICsraSkgewpAQCAtMTMxLDcgKzEyNCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgfQogfQogCi1URVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
VGVzdCwgY29weSkKIHsKICAgICBjaGFyIHRlc3REYXRhW10gPSAiSGFiaXRhc3NlIGludGVnZXIg
ZXJvcyB0aW5jaWR1bnQgYSBzY2VsZXJpc3F1ZSEgRW5pbSBlbGl0PyBTY2VsZXJpc3F1ZSBtYWdu
aXMsIgogICAgICJldCBtb250ZXMgdWx0cmljZXMgdHJpc3RpcXVlIGEhIFBpZC4gVmVsaXQgdHVy
cGlzLCBkYXBpYnVzIGludGVnZXIgcmhvbmN1cyBzb2NpaXMgYW1ldCBmYWNpbGlzaXMsIgpAQCAt
MTUxLDE3ICsxNDQsNTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgIm1h
dHRpcyBkaWduaXNzaW0gbWFzc2EgYWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0aXMs
IGFsaXF1ZXQgcGVuYXRpYnVzIHByb2luIGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgogICAgICJh
dWd1ZSBwcm9pbiEgQWMsIGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3VsdXMg
cmlkaWN1bHVzLiI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwg
bGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAg
ICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVu
ZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0
aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIC8vIHNoYXJl
ZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNpemUgKD0gMHgxMDAw
KSB0byBjaGVjayBjb3B5KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZl
ci0+c2l6ZSgpKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZl
ci0+Y29weSgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAg
ICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgp
LCBjbG9uZS0+c2l6ZSgpKSk7Ci0gICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsK
LSAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VR
KGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGNsb25lID0gYnVpbGRlcjEuY29weSgpOworICAgIEVYUEVDVF9FUShsZW5ndGgg
KiA0LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1aWxkZXIxLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGNsb25lLT5zaXplKCkpKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRl
cjI7CisgICAgYnVpbGRlcjIuYXBwZW5kKCpjbG9uZSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRl
c3REYXRhLCBsZW5ndGgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWlsZGVyMi5zaXpl
KCkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjIudGFrZSgpOworICAgIEVYUEVDVF9FUShs
ZW5ndGggKiA1LCBidWZmZXItPnNpemUoKSk7CisgICAgLy8gYnVpbGRlciBpcyBub3cgZW1wdHku
CisgICAgRVhQRUNUX0VRKDBVLCBidWlsZGVyMi5zaXplKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1
aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOwor
fQorCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCit7CisgICAg
Y2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWls
ZGVyMSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVp
bGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc0VtcHR5KCkpOwor
ICAgIGF1dG8gY29weSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxk
ZXIxLnRha2UoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQ
RUNUX1RSVUUoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfTkUoY29weS5wdHIoKSwg
YnVmZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZmZXJlbnQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cgorICAgIEVYUEVDVF9FUShjb3B5LmdldCgpLCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIg
Y29udGVudCBpcyBpZGVudGljYWwKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7
CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1
aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVu
KHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAg
RVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsK
KyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVp
bGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxT
RShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgp
KTsKIH0KIAogc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBz
aXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBlY3RlZCkKQEAgLTE3Myw3MCArMjAy
LDgwIEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6
ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhcioKICAgICAgICAgRVhQRUNUX0VRKGJ1ZmZlcltp
XSwgZXhwZWN0ZWRbaV0pOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURh
dGEpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewot
ICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rv
cjx1aW50OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3Rvcjx1aW50OF90
PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9OwotICAgIAotICAgIGF1dG8gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7Ci0g
ICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1v
dmUoczMpKTsKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9
OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAnbCcgfTsKKworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMxKSk7
CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdU
Rk1vdmUoczMpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIAogICAg
IGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7Ci0gICAgYXV0byBnaCA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYp
OwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0g
YnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0
YSgxMCk7Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZmZXItPmRhdGEoKTsKLSAgICBhdXRv
IGdoaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBjb250aWd1b3VzQnVm
ZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0g
Y29udGlndW91c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21l
RGF0YSg2KTsKKyAgICBhdXRvIGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRh
KDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVm
ZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKLSAgICBjaGVja0J1ZmZlcihn
aC5kYXRhKCksIGdoLnNpemUoKSwgImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwg
Z2gxLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAi
aCIpOwogICAgIGNoZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBpamtsLnNpemUoKSwgImlqa2wiKTsK
ICAgICBjaGVja0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tC
dWZmZXIoYWJjZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIpOworICAg
IGNoZWNrQnVmZmVyKGdoMi5kYXRhKCksIGdoMi5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVm
ZmVyKGdoaWprbC5kYXRhKCksIGdoaWprbC5zaXplKCksICJnaGlqa2wiKTsKKyAgICBFWFBFQ1Rf
RVEoZ2gxLnNpemUoKSwgZ2gyLnNpemUoKSk7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwg
Z2gxLnNpemUoKSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRh
KCksIGwuc2l6ZSgpLCAibCIpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVh
bFRvKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAg
ICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVu
dHMpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
ICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29u
dGVudCA6IGNvbnRlbnRzKQotICAgICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250
ZW50KSk7Ci0gICAgICAgIHJldHVybiBidWZmZXI7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZChXVEZNb3ZlKGNvbnRlbnQpKTsKKyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAg
IH07Ci0gICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319
KTsKKyAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcg
fSB9KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAg
ICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7
Ci0gICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2Mn
LCAnZCcsICdhJywgJ2InLCAnYycsICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRKG1ha2VC
dWZmZXIoe3snYSd9LCB7J2InLCAnYyd9LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2En
LCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7
J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsK
LSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVy
KHt7J2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnfSwg
eydiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJ30sIHsnYSd9fSkuZ2V0KCkpOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVy
LmFwcGVuZChWZWN0b3I8dWludDhfdD4oeyAnYScsICdiJywgJ2MnLCAnZCcgfSkpOworICAgIEVY
UEVDVF9FUSgqYnVpbGRlci5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2Qn
LCAnYScsICdiJywgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisKKyAgICBFWFBFQ1RfRVEobWFrZUJ1
ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZl
cih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUo
bWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAn
YicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAn
YicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAg
RVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVm
ZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5nZXQoKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCB0b0hleFN0cmluZykKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwg
dG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4NSwgMHgx
Mn07Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZl
ci0+YXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7
CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIGF1dG8gYnVmZmVyID0gYnVp
bGRlci50YWtlKCk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZlci0+dG9IZXhTdHJpbmcoKTsK
ICAgICBFWFBFQ1RfRVEocmVzdWx0LCAiMTEwNTEyIik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwor
ICAgIGJ1aWxkZXIucmVzZXQoKTsKKyAgICBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBF
WFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0cmluZygpLCAiIik7CiB9CiAKLVRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCByZWFkKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCByZWFk
KQogewogICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyBhIHNpbXBs
ZSB0ZXN0LiI7CiAKLSAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZm
ZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVk
QnVmZmVyKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0gc2hhcmVkQnVmZmVyLnJl
YWQoNCwgMyk7CiAgICAgICAgIEVYUEVDVF9FUShkYXRhLnNpemUoKSwgM3UpOwogICAgICAgICBF
WFBFQ1RfRVEoU3RyaW5nKGRhdGEuZGF0YSgpLCAzKSwgIiBpcyIpOwpAQCAtMjQ5LDE2ICsyODgs
MTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiAgICAgYXV0byBzaGFyZWRCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkp
OwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBz
aGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVk
QnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAg
IGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLmlzTnVsbCgp
ICYmICFidWlsZGVyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIDB1KTsKIAotICAg
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKLSAgICAgICAgc2hhcmVkQnVm
ZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZm
ZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIp
OworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7CisgICAgRVhQRUNU
X0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxk
ZXIudGFrZSgpKTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKQEAgLTI2Niw3ICszMDYsNyBAQCBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzaXpl
X3QgTiA+CiBjb25zdGV4cHIgc2l6ZV90IGFycmF5c2l6ZSggY29uc3QgVCAoJilbTl0gKSB7IHJl
dHVybiBOOyB9CiAKLXN0YXRpYyB2b2lkIHJlYWRBbGxDaHVua3Moc3RkOjp2ZWN0b3I8U3RyaW5n
PiogY2h1bmtzLCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3Ig
PSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKQorc3RhdGljIHZvaWQgcmVh
ZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxTdHJpbmc+KiBjaHVua3MsIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5j
bHVkZVNlcGFyYXRvciA9IGZhbHNlKQogewogICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIGNo
dW5rUmVhZGVyKCZidWZmZXIsIHNlcGFyYXRvci51dGY4KCkuZGF0YSgpKTsKICAgICBTdHJpbmcg
Y2h1bmsgPSBjaHVua1JlYWRlci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJh
Y2soaW5jbHVkZVNlcGFyYXRvcik7CkBAIC0yOTksNyArMzM5LDcgQEAgc3RhdGljIHZvaWQgY2hl
Y2tEYXRhSW5SYW5nZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIHNpemVfdCBzdGFydCwg
c2l6ZV90IGwKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNl
cGFyYXRvcikKIHsKLSAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZm
ZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVk
QnVmZmVyKSB7CiAgICAgICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZz
aGFyZWRCdWZmZXIsICJceDEwXHgxMVx4MTIiKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG91
dDsKICAgICAgICAgRVhQRUNUX1RSVUUoY2h1bmtSZWFkZXIubmV4dENodW5rKG91dCkpOwpAQCAt
MzEzLDIyICszNTMsMjQgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5j
bHVkZVNlcGFyYXRvcikKICAgICB1aW50OF90IGRhdGFbMjU2XTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IDI1NjsgKytpKQogICAgICAgICBkYXRhW2ldID0gaTsKLQogICAgIGF1dG8gc2hh
cmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgMjU2KTsKICAgICBjaGVjayhz
aGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoZGF0YSwgMjU2KTsKKyAgICBjaGVj
ayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytp
KSB7CiAgICAgICAgIGNoYXIgYyA9IGk7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZj
LCAxKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJmMsIDEpOwogICAgIH0KLSAgICBjaGVjayhz
aGFyZWRCdWZmZXIpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCiB7CiAgICAgY29uc3QgY2hhciog
Y29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3QuIjsKIAotICAgIGF1dG8g
Y2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgeworICAgIGF1dG8gY2hlY2sg
PSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAgU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJnNoYXJlZEJ1ZmZlciwgImlzIik7CiAK
ICAgICAgICAgU3RyaW5nIGNodW5rID0gY2h1bmtSZWFkZXIubmV4dENodW5rQXNVVEY4U3RyaW5n
V2l0aExhdGluMUZhbGxiYWNrKCk7CkBAIC0zNTgsMjIgKzQwMCwyMyBAQCBURVNUX0YoU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAg
ICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHNpbXBsZVRleHQs
IHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAgIGNoZWNrKHNoYXJl
ZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAg
ICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRl
eHQpOyBpICs9IDIpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ld
LCAyKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVU
ZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
JnNpbXBsZVRleHRbaV0sIDIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVu
KHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihT
aGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkK
IHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgdGhlIG1vc3Qg
cmlkaWN1bG91cyBoaXN0b3J5IHRoZXJlIGlzLiI7Ci0gICAgYXV0byBjaGVjayA9IFtdKFNoYXJl
ZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+
IGNodW5rczsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3MxV2l0aG91
dFNlcGFyYXRvcltdID0geyAiVGgiLCAicyAiLCAicyB0aGUgbW9zdCByIiwgImQiLCAiY3Vsb3Vz
IGgiLCAic3RvcnkgdGhlcmUgIiwgInMuIiB9OwogICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVu
a3MsIHNoYXJlZEJ1ZmZlciwgImkiKTsKQEAgLTQwNiwxNyArNDQ5LDE5IEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKICAg
ICB9OwogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxl
VGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAg
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXIoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBj
aGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxl
bihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxl
VGV4dFtpXSwgMSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4o
c2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCks
IHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogCi0gICAg
c2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSA1KQotICAgICAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZl
ci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCA1KTsKKyAgICBFWFBFQ1Rf
RVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRl
ci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBjaGFu
Z2luZ0l0ZXJhdG9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCmluZGV4IDliOGIxM2E3NWQ1MmZmOTUxZWFkMTgxODVk
NTZjMzc5MWIyZDdiZWQuLmQwMzQxYTgxZGVkYTcxOWYzNWZjY2UzOTQ2NTVlYzI1NWFiOGZiYjYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZm
ZXJUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVk
QnVmZmVyVGVzdC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgewogCi12b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKK3ZvaWQgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFk
KCk7CiAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCiAg
ICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVy
VGVzdDo6VGVhckRvd24oKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6VGVhckRv
d24oKQogewogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOwogICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaAppbmRl
eCA2NDAxMTliZGU2ZmNlNDFmMDFlYWFiNjMxNjg0N2JlNTZiOTBjZjVjLi5hMzkyYTA1MTk0NzU2
ZDJhZDU2ZTgyNDkyOWVjZTRjMTVmM2FkMDU1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmgKQEAgLTI5LDcgKzI5LDcgQEAK
IAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1jbGFzcyBTaGFyZWRCdWZmZXJUZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92ZXJy
aWRlOwogICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAK
aW5kZXggZDg0NmMwMjVlMGRjZDhjYTgyOWI3MTI3M2RhZjFmNzA3ZTlkOTJkZC4uYWZlYWExZTFh
MThlYTgyYmUxYWI2MzMyYjgzMWIyNmY2NDAxODNmOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAK
QEAgLTEwMyw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4geyBnbG9iYWxCdWZm
ZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVtQnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkg
fTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5l
KGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0IGZpbmFsCisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVt
JikgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmluZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5YTY4
Y2ZiMTg4NWQ0ZWIxMTAuLmMzYjVkM2U4ZDdjMDNiMWEzNjVkZDUzNWEwYjI5YWRlMjdhY2VjYTgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFy
ZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L1NoYXJlZEJ1ZmZlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ1LDE5ICs0NSwyMCBAQCBzdGF0aWMgdm9pZCBleHBlY3RE
YXRhQXJyYXlzRXF1YWwoTlNBcnJheTxOU0RhdGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5PE5TRGF0
YSAqPgogICAgIH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFy
cmF5KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJh
eSkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBi
dWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuZW1wdHkoKTsKKyAgICAgICAgZXhwZWN0
RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5n
ZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFy
KiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwotICAgICAgICBleHBlY3REYXRh
QXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5n
ZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0
ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsg
aGVsbG9EYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwog
CiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3Js
ZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVm
KXdvcmxkRGF0YSk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEs
IHdvcmxkRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAg
IGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWlsZGVy
LmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBleHBlY3REYXRh
QXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0
YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgICAgICBleHBlY3REYXRhQXJyYXlz
RXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRh
dGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CkBAIC02NiwzNSAr
NjcsMzUgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogICAg
IH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUZvckRhdGFTZWdt
ZW50KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JE
YXRhU2VnbWVudCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXI7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRo
Qnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBj
aGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBidWlsZGVy
LmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsK
IAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29y
bGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJl
Zil3b3JsZERhdGEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVm
KXdvcmxkRGF0YSk7CiAKICAgICAgICAgTlNBcnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9E
YXRhLCB3b3JsZERhdGEgXTsKICAgICAgICAgTlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxs
b0RhdGEubGVuZ3RoICsgd29ybGREYXRhLmxlbmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNl
Z21lbnRDb3VudCA9IDA7Ci0gICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQo
KSkKKyAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAg
ICAgICBFWFBFQ1RfVFJVRShbc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFs
VG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VR
KGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAogICAgICAgICBOU1VJbnRlZ2Vy
IHBvc2l0aW9uID0gMDsKICAgICAgICAgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUg
KGJ1ZmZlci0+c2l6ZSgpID4gcG9zaXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50
YWxEYXRhID0gYnVmZmVyLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxlIChi
dWlsZGVyLnNpemUoKSA+IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBhdXRvIGluY3JlbWVudGFs
RGF0YSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAg
IEVYUEVDVF9UUlVFKFtpbmNyZW1lbnRhbERhdGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0
YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlvbiAr
PSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShl
eHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0
ZSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8g
bGFzdEJ5dGUgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsK
ICAgICAgICAgRVhQRUNUX1RSVUUoW2xhc3RCeXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0Rh
dGE6W0AiZCIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAg
ICAgICBFWFBFQ1RfRVEoMUxVLCBsYXN0Qnl0ZS5zaXplKCkpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKaW5kZXggNDZjNzYyMDNlMWIyNWFh
YWI3YTAyZTBiYjJiZjVlMGM0MzZlZDY4Ny4uNWJlNjY1OTQ2MTM3MzFlMjFlZDk3ZGE3NGM1NzM4
YzdjYTI4NWJmNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNv
cmVTdHVicy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVi
cy5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVy
Lmg+CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZm
ZXIoY29uc3QgY2hhciopCitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKikKIHsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFu
Y2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODkyMzkyZDg3Zjc0MDBlYmZhOThmNWE4NjUzYzlmZDRl
Mjc1NWY1OS4uNzA4MGE2Y2Y3YTZkMjIwMGFlMzAzYzIyY2U3MzExOTEwZGRhYTFmMiAxMDA2NDQK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVk
QnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5
OiBwYXJ0IDMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogRGVjb2RlclRlc3QvRGVjb2RlclRlc3QvbWFpbi5tbToKKyAgICAgICAgKG1haW4pOgorCiAy
MDIxLTExLTIxICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbUGVyZm9ybWFuY2UgdGVzdF1bY3NzLWNvbnRhaW5dIEFkZCBjYXNlIHRvIHRlc3QgY29udGFp
bjogbGF5b3V0IGluc2lkZSBhIGNvbXBsZXggZG9jdW1lbnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445971</attachid>
            <date>2021-12-04 17:18:57 -0800</date>
            <delta_ts>2021-12-05 22:43:09 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233677-20211205121852.patch</filename>
            <type>text/plain</type>
            <size>786084</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YTJiZTEzOTE2MjhmNTNiNmQ2ZDIyZTEzY2E3ZmIyYmRkMjA1ZWYzLi5kMTcyNDIwMTVhOGI5Zjc3
ZTRmZWM3M2Y1YjMwMzdhZThkMDkxODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8v
cHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBi
ZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0FycmF5QnVmZmVyLmg6CisKIDIwMjEtMTItMDMgIEtlaXRoIE1pbGxlciAgPGtlaXRo
X21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFN0cnVjdHVyZUlEQmxvYgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGJkZjA1OWEwOTIxYTlkYzZmMDNlYTQwN2RkNjNiZDkwMDlkNGQyOWIuLjA2OGNi
OGMzYTcwOTQ2Y2RiYmE4N2IyNDY5MjhiOWNjMGQyNzY2MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMDAzIEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9w
cm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIg
YW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJl
dHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICBSZW5h
bWUgb25seSwgbm8gY2hhbmdlIGluIGJlaGF2aW91ci4KKworICAgICAgICAqIE1vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oOgorICAgICAgICAqIE1vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUv
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NE
TS5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaDoKKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oOgorICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5Lmg6CisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oOgorICAgICAgICAq
IE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwOgorICAgICAgICAqIE1v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYU1ldGFkYXRhLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJj
ZUJ1ZmZlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIu
aDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJT
b3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgICog
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5jcHA6
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9y
Lmg6CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaDoKKyAgICAg
ICAgKiBlZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHA6CisgICAgICAgICogZWRpdGluZy9XZWJDb3JlUGFz
dGVib2FyZEZpbGVSZWFkZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29h
Lm1tOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAg
KiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKiBlZGl0
aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW06CisgICAgICAgICogZmlsZWFwaS9CbG9iLmg6CisgICAgICAgICogZmlsZWFw
aS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtTZW5kUXVl
dWUuaDoKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAg
KiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MQXR0
YWNobWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW1hZ2VE
b2N1bWVudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAqIGlu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAg
ICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0xvYWRlclN0cmF0ZWd5
Lmg6CisgICAgICAgICogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIv
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlRGF0YS5oOgorICAgICAg
ICAqIGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oOgorICAgICAg
ICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVy
L2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2
ZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmg6Cisg
ICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAq
IGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NT
dHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0ZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRl
eHRUcmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oOgorICAgICAg
ICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tOgorICAgICAgICAqIGxvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5tbToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAqIHBh
Z2UvUGFnZS5jcHA6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5jcHA6CisgICAgICAg
ICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhLmg6Cisg
ICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0tl
eWVkQ29kaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0
ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2Fy
ZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5o
OgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1N0YXRpY1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1N0YXRpY1Bhc3RlYm9h
cmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Y2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJD
Ri5jcHA6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2Nv
YS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1VdGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0
aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVy
R2VuZXJpYy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5l
cmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9X
T0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVG
b3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0
Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlD
bGVhcktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
VGh1bmRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9D
RE1UaHVuZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9H
U3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFDYWlyby5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRQbGF0Zm9ybURhdGFXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlRGVjb2RlckRpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVh
ZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFn
ZVJlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9J
bWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rl
ci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxh
dGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3RDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9w
b3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Bhc3Rl
Ym9hcmRXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3Bw
OgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAqIHRlc3Rp
bmcvTW9ja0NETUZhY3RvcnkuaDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
LmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmg6CisgICAgICAgICog
d29ya2Vycy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlckZldGNoLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyRmV0Y2guaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0
U3RvcmFnZS5jcHA6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcDoKKyAg
ICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisKKzIwMjEt
MTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
U2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbWlsYXIgdG8gU3Ry
aW5nQnVpbGRlciwgYSBTaGFyZWRCdWZmZXIgY2FuIG5vdyBvbmx5IGJlIG1vZGlmaWVkIHRocm91
Z2gKKyAgICAgICAgYSBTaGFyZWRCdWZmZXJCdWlsZGVyLiBBIFNoYXJlZEJ1ZmZlciBiZWNvbWVz
IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgRmx5LUJ5OiBQYXNzIFNoYXJlZEJ1
ZmZlciB2aWEgY29uc3QgcmVmZXJlbmNlcyBvciBwb2ludGVycyB3aGVyZSBpdCdzIGVhc3kKKyAg
ICAgICAgdG8gZG8gc28uCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91
cjsgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
OjpjbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29u
c3VtZXI6OnRha2VBc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6
OnNldFNvdXJjZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5o
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmRhdGEgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOiBEZWxldGVkLgorICAg
ICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIE1vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL05l
dHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6ZGF0YUxlbmd0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzQnVmZmVyZWREYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6Omhhc0RhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJl
c291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZl
cmluZ1BvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9y
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVzb3VyY2VE
YXRhKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0
aXR1dGVSZXNvdXJjZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRl
UmVzb3VyY2U6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGVsaXZlcik6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6
OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpzdG9yZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6
dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNv
bnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFn
ZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1
bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
VGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZG9VcGRh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW06
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVy
RGlkU3RhcnRDb252ZXJ0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2Fk
ZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdD
b252ZXJ0ZXI6OnByZXZpZXdEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdD
b252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6Om9wZXJhdG9y
IGJvb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNO
dWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzRW1w
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6c2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpyZXNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjplbXB0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpnZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtl
eWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlkRnJv
bVdlYk1Jbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3Rv
cmVkSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0
YTo6SW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OmFwcGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbml0RGF0YTo6cGF5bG9hZCBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUHJldmlld0Nv
bnZlcnRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OlByZXZp
ZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OnRha2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jhbmdl
UmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yOjpEYXRhOjpEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5l
cmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
RnJvbURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiB3b3JrZXJzL1Njcmlw
dEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpidWZmZXIgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc29sYXRlZENvcHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmlzUGVuZGluZyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0Lmg6CisgICAgICAgICog
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3Jl
YXRlUmVzcG9uc2VCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVh
dGVSZXNwb25zZUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpjbGVhclJlc3BvbnNlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVz
dDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorCisy
MDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAg
RGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBv
bmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGNhbGxp
bmcgU2hhcmVkQnVmZmVyOjpkYXRhKCkgdGhlIHVuZGVybHlpbmcgZGF0YSB3YXMgZmxhdHRlbmVk
LAorICAgICAgICBhbmQgc28gY291bGQgYmUgbXV0YXRlZCB3aGlsZSBiZWluZyBzaGFyZWQuIFRo
aXMgd2FzIGFuIHVuZGVzaXJhYmxlCisgICAgICAgIGJlaGF2aW91ci4KKyAgICAgICAgV2UgaW50
cm9kdWNlIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgd2hpY2ggZ3VhcmFudGVlIHRoYXQgaXRzIGNv
bnRlbnQgaXMgbWFkZQorICAgICAgICBvZiBjb250aWd1b3VzIGRhdGEuCisgICAgICAgIEFsbCBt
ZXRob2RzIHRoYXQgd291bGQgaGF2ZSBtdXRhdGVkIGEgU2hhcmVkQnVmZmVyIHdoZW4gYmVpbmcg
ZmxhdHRlbmVkIGFyZQorICAgICAgICBtb3ZlZCB0byBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgor
CisgICAgICAgIEFyZWEgd2hlcmUgU2hhcmVkQnVmZmVycyB3ZXJlIGFsd2F5cyBjcmVhdGVkIHdp
dGggYSBzaW5nbGUgc2VnbWVudCB3aGVyZQorICAgICAgICBjb252ZXJ0ZWQgdG8gYSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBQcmV2aW91c2x5LCBhIFNoYXJlZEJ1ZmZlciB3b3Vs
ZCBoYXZlIGJlZW4gZmxhdHRlbmVkIG9ubHkgaWYgaXQgbmVlZGVkIHRvIGJlCisgICAgICAgIGFu
ZCBvbmx5IHdoZW4gdGhlIGRhdGEgd2FzIGdvaW5nIHRvIGJlIGFjY2Vzc2VkOyBmb2xsb3dpbmcg
dGhpcyBjaGFuZ2UKKyAgICAgICAgdGhlIGNvbnZlcnNpb24gaXMgbm93IGV4cGxpY3RseSBkb25l
IHRocm91Z2ggYSBjYWxsIHRvIG1ha2VDb250aWd1b3VzLgorICAgICAgICBUaGlzIGNvbnZlcnNp
b24gaXMgYSBuby1vcCBpZiB0aGUgU2hhcmVkQnVmZmVyIGJlaW5nIGNvbnZlcnRlZCB3YXMgYWxy
ZWFkeQorICAgICAgICBhIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisgICAgICAgIFdpdGggdGhl
IG5hdHVyZSBvZiBhIFNoYXJlZEJ1ZmZlciBiZWluZyBzaGFyZWQgYnkgcG90ZW50aWFsbHkgbXVs
dGlwbGUKKyAgICAgICAgdXNlcnMgaXQgd2FzIG5lY2Vzc2FyeSB0byBsaW1pdCB0aGUgbnVtYmVy
IG9mIGNvbnZlcnNpb25zIGJlaW5nIHBlcmZvcm1lZAorICAgICAgICBvbiBkZW1hbmQgdG8gYXZv
aWQgcmVkdW5kYW5jeS4KKyAgICAgICAgV2hlbiB0aGUgZmxhdHRlbmluZyBjb3VsZCBoYXZlIG9j
Y3VyZWQsIHRoZSBTaGFyZWRCdWZmZXIgY3JlYXRpb24gcG9pbnRzIHdlcmUKKyAgICAgICAgdHJh
Y2VkIGJhY2sgYW5kIGlkZW50aWZpZWQgdG8gbWFrZSB0aGUgYnVmZmVyIGNvbnRpZ3VvdXMgdGhl
bi4KKyAgICAgICAgSW4gdGhlIGVuZCwgdGhlcmUncyBubyBtb3JlIFNoYXJlZEJ1ZmZlciBmbGF0
dGVuaW5nIG9wZXJhdGlvbnMgdGhhbiB0aGVyZQorICAgICAgICB3b3VsZCBoYXZlIGJlZW4gYmVm
b3JlIHRoaXMgY2hhbmdlLgorICAgICAgICBUaGVyZSdzIGEgcG90ZW50aWFsIGluY3JlYXNlIG9m
IHRlbXBvcmFyeSBtZW1vcnkgdXNhZ2Ugd2l0aCB0aGUKKyAgICAgICAgU2NyaXB0QnVmZmVyU291
cmNlUHJvdmlkZXIgY2xhc3M7IGJ1ZyAyMzM1MTEgaXMgdHJhY2tpbmcgaXQuCisKKyAgICAgICAg
V2hpbGUgdGhlIGNoYW5nZSBpcyBleHRlbnNpdmUsIGNvZGUgY292ZXJhZ2Ugb2YgdGhlIG1vZGlm
aWVkIGFyZWFzIGlzIHRob3JvdWdoCisgICAgICAgIHdoaWNoIG1ha2VzIHVuZGV0ZWN0ZWQgcmVn
cmVzc2lvbnMgdW5saWtlbHkuCisKKyAgICAgICAgSW4gYnVnIDIzMzQ0MiwgYSBTaGFyZWRCdWZm
ZXIgd2lsbCBiZSBtYWRlIGNvbXBsZXRlbHkgaW1tdXRhYmxlIG9uY2UgY3JlYXRlZC4KKworICAg
ICAgICBObyBvYnNlcnZhYmxlIGNoYW5nZS4KKyAgICAgICAgQ292ZXJlZCBieSBhbGwgZXhpc3Rp
bmcgdGVzdHMuIE5ldyBBUEkgdGVzdHMgY3JlYXRkZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0
ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAg
ICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxCb2R5U2l6ZSk6Cisg
ICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXRXaXRoUmVz
cG9uc2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjppc29sYXRl
ZFJlc3BvbnNlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Y29weVJl
c3BvbnNlQm9keSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SURzS2V5aWRzKToKKyAgICAgICAgKFdlYkNvcmU6
OnNhbml0aXplS2V5aWRzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmtleUlkc01hdGNoKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhS2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6bmV4dCk6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Ojpjb25zdW1lRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpib2R5
QXNGb3JtRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OnRha2UpOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlD
b25zdW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzVGV4dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRh
QnlDaHVuayk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YSk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdo
bGlnaHQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdl
RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
aWFsaXphdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlQYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleURhdGEpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmg6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2Vk
UHV0SW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRS
ZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudCk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQ
cmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGll
bnQpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToK
KyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExv
YWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlGaWxlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNzcy9DU1NGb250
RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6bG9h
ZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZWRpdGlu
Zy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNlZEF0dGFjaG1l
bnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcv
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0
b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRT
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmRE
YXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvbklu
V2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkRG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQpOgorICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252
ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxlV3JhcHBlckZv
clVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAgICAqIGVkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVw
bGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJh
Y3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3VwV2l0
aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKiBlZGl0
aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmltYWdlSW5X
ZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBs
YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2Rl
RGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50Ojpj
YWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6
bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdl
bnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURh
dGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdo
dCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50
KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNs
aWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFu
aWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3lu
Y2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2
ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSk6Cisg
ICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBsb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSFRN
TFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVl
dDo6c2hlZXRUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hl
ZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkIGNvbnN0KToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3
UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNv
dXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5j
b2RlZERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnJlc291cmNlQnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0Zv
bnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0eWxlU2hl
ZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25p
dG9yQ29jb2EuaDoKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tl
ZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZCk6CisgICAgICAgICog
cGFnZS9FZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hlZXQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvUGFn
ZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlh
bGl6ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVD
U1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjphZGRJbWFn
ZVRvUmVzb3VyY2VzKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmg6CisgICAgICAg
ICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YVJlYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVi
b2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFy
ZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZv
cm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBh
c3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg6
CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNFbXB0
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzQ29udGlndW91cyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0ciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hh
cmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0ZjhCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21l
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6RGF0YVNlZ21lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpL
ZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3Jl
Ojpjb252ZXJ0VElGRlRvUE5HKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2spOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L1NoYXJlZEJ1ZmZlckNvY29hLm1tOgorICAgICAgICAoLVtXZWJDb3JlU2hhcmVkQnVmZmVyRGF0
YSBpbml0V2l0aERhdGFTZWdtZW50OnBvc2l0aW9uOnNpemU6XSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OktleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGli
L0tleWVkRW5jb2RlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2xp
Yjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVy
R2xpYi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJv
bVJlYWRpbmdGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnQ6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb2RlbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpNb2RlbCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1v
ZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmRlY29kZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cmVhZFVJbnQzMik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVUludDE2KToKKyAg
ICAgICAgKFdlYkNvcmU6OmlzV09GRik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V09GRlRv
U2ZudCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0U2luZkRhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VKU09OVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1
ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpk
aWRQcm92aWRlUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VE
ZWNvZGVyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpz
ZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNv
dXJjZU1lZGlhTG9hZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVmZmVyR2V0Qnl0ZXNB
dFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpJbWFnZURlY29k
ZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxh
dGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVu
Y29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1hcmt1cFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJD
b3JlOjpJbml0RGF0YTo6SW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L1BERkRvY3VtZW50SW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudElt
YWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbzo6Z2V0SXRhbGljQ29ycmVjdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoSW5mbzo6bWF0aEl0YWxpY3NDb3Jy
ZWN0aW9uSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R2x5cGhBc3Nl
bWJseTo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRTaXplVmFyaWFudHMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6Z2V0QXNzZW1ibHlQ
YXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aFZhcmlhbnRzOjpt
YXRoR2x5cGhDb25zdHJ1Y3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Ok1BVEhUYWJsZTo6bWF0aENvbnN0YW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVu
VHlwZTo6TUFUSFRhYmxlOjptYXRoR2x5cGhJbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhWYXJpYW50cyBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpUYWJsZUJhc2U6OmlzVmFsaWRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRh
YmxlQmFzZTo6dmFsaWRhdGVQdHIpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxl
QmFzZTo6dmFsaWRhdGVPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OlRhYmxlV2l0aENvdmVyYWdlOjpnZXRDb3ZlcmFnZUluZGV4IGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZW5hbWVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OnJlbmFtZUFuZEFjdGl2
YXRlRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVZlcnRpY2FsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U3Vic3RpdHV0
aW9uU3ViVGFibGU6OmNvdmVyYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpMb29rdXBUYWJsZTo6Z2V0U3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6TG9va3VwTGlzdDo6bG9va3VwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpGZWF0dXJlVGFibGU6OmdldEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZlYXR1cmUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmaW5kRmVhdHVyZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TGFuZ1N5c1RhYmxlOjpmZWF0dXJlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRUYWJsZTo6ZGVmYXVsdExh
bmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OnNj
cmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6ZGVm
YXVsdFNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlz
dDo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdT
VUJUYWJsZTo6c2NyaXB0TGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpmZWF0dXJlTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6R1NVQlRhYmxlOjpsb29rdXBMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpHU1VCVGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkdTVUJUYWJsZTo6Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6bG9hZEhtdHhUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpP
cGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlw
ZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6c2V0Q3VzdG9tRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpjdXN0b21EYXRhIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1h
Z2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxh
dGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2Fy
ZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1Nh
ZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJ
dGVtUHJvdmlkZXJSZWdpc3RyYXRpb25MaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpmaWxlV3JhcHBlcik6CisgICAgICAg
IChXZWJDb3JlOjpyZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRXcml0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3Jp
dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRJdGVtKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRh
Ojphc1NoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNl
OnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxl
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxl
OjpkaWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpw
cm9jZXNzQ29udGVudCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25s
b2FkRmlsZUlmRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFs
SW1hZ2VGaWxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxIRHJvcENv
bnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckZldGNoOjpwcm9jZXNzUmVzcG9uc2UpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUpOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vz
c29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJGdW5jKToKKyAgICAg
ICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVuRnVuYyk6CisKIDIwMjEtMTItMDMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgQnJvYWRjYXN0Q2hhbm5lbCwgQ09PUCwgQ09FUCBhbmQg
V2ViIExvY2tzIHRvIGZlYXR1cmVzLmpzb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODc3NjkxNDk3NmIyYTkyZjc2
ZGQ4NzYxMWQyODFhMDI4YjEzNzQ5NS4uNTBmMTc2ZTljOThkYTQ0MzFjMzI0NTQ5YTA2MWRkMmZm
MzdkZWIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMjAgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVy
IGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFt
ZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAg
ICAgIHR5cGVzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
UHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Q
cm94eS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHA6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oOgorICAgICAgICAq
IEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50Lmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5jcHA6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oOgor
ICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHA6CisgICAgICAgICogUGxhdGZvcm0v
U2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5
TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaDoKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYkhpdFRlc3RSZXN1
bHREYXRhLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoK
KyAgICAgICAgKiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRS
dWxlTGlzdFN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xp
ZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2Eu
bW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06Cisg
ICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2d0ay9DbGlwYm9hcmQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0
azMuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW06CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1h
Yy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJ
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlci5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJE
cmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNw
cDoKKworMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisg
ICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1Njkz
OTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0Nh
Y2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVM
b2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNw
ZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdpblZpZXcpOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbCk6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorCisyMDIxLTExLTI1
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vp
c2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1
YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJl
Y29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNS
ZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50
cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVj
b2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAg
ICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKElQ
Qzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVy
Q29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25z
dCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVk
L0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291
cmNlOjpkYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+
Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
R0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFy
ZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBD
OjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjplbmNvZGVUeXBlc0FuZERhdGEp
OgorICAgICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2Ny
aXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZSk6CisgICAgICAg
ICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNo
bWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQ
STo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgor
ICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24g
Y29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVz
dGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3Rl
QWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKyAgICAgICAgKGFs
bFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoSW1hZ2U6cmVjdDpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6
CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9h
cmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAg
ICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRp
dGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVsZWFzZVNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMv
QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkFS
S2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZv
clR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZm
ZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRz
VmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKwogMjAyMS0x
Mi0wMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBb
aU9TXSBXZWIgY29udGVudCBwcm9jZXNzIHNvbWV0aW1lcyBjcmFzaGVzIHVuZGVyIFdlYlBhZ2U6
OnBvc2l0aW9uSW5mb3JtYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBkNzc2ZTgyZGYx
MzJjYWY2NTI3OTNhNzlhMDA4M2FkNjU1OWRjMjY1Li4zNzc3ZjJhNTZiYzhlNjA0ZTk0NTFlOGJk
MTJlMjViNDNhMzUxNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYz
OTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hh
cmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAg
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0
IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1BpbmdIYW5kbGUuaDoKKwogMjAyMS0xMS0xMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgTWFrZSBzb3J0LVhjb2RlLXByb2plY3QtZmlsZSBpZGVtcG90ZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNzZhYTZhYWY4NGRlYjA4MmU0Yzg0MzIyNDkz
MzgwZDgzM2RlOTJkMS4uMjA1ODQ1MzQ0OTg0OTU3N2M1NTAxMWNkNTljZTg4M2JlYmQ5ZTZjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTEyLTAz
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNo
YXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVy
IGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFj
dHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRh
dGFTb3VyY2UubW06CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlJlc291cmNlLm1tOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFy
ZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxp
dHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAz
MAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAg
ICgtW0RPTUhUTUxJbWFnZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6
CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZCk6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJE
YXRhU291cmNlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlv
bi5tbToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6
CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJl
TWVudUl0ZW0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgt
W1dlYlJlc291cmNlIGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2Ug
ZGF0YV0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0x
Mi0wMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAg
IFtXZWJHUFVdIEhvb2sgdXAgbmF2aWdhdG9yLmdwdS5yZXF1ZXN0QWRhcHRlcigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggMDJlOTQ2YmMxZmIwYjM1NmJiMTVhYjgzNjBlODYxNDU1
NDcyNDdjYy4uYTZkN2FmZDAwZmNkYjdiYTk5MTM1OWQ3MjIzZWFiN2I0NDRiYjU0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTEyLTAzICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1
ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSBy
ZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAor
ICAgICAgICB0eXBlcy4KKworICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAgICAgICog
TWVtb3J5U3RyZWFtLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgICog
V2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJLaXRETEwuY3BwOgorICAgICAgICAqIFdlYlJlc291
cmNlLmNwcDoKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5oOgorCisyMDIxLTEyLTAxICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdl
YkZyYW1lOjpsb2FkRGF0YSk6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZl
ciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAg
ICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogTWVtb3J5U3RyZWFtLmNwcDoKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6
TWVtb3J5U3RyZWFtKToKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UpOgor
ICAgICAgICAqIE1lbW9yeVN0cmVhbS5oOgorICAgICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAg
ICAgICAoV2ViQXJjaGl2ZTo6ZGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgor
ICAgICAgICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0
YSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2U6OmNy
ZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5oOgorCiAyMDIxLTEyLTAyICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gTWFrZSBXZWIg
TG9jayBBUEkgd29yayBhY3Jvc3MgbXVsdGlwbGUgV2ViUHJvY2Vzc2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCBlYWNjYTJjMjMzYThhNjkzNzE1
OTA4MDdkZmQzNjc1YjA2MTU5NDI4Li5iNDY5M2Y5MWM2MDdkOGQwNzQ1OTQ2NDZlOGRjNDM3MmU5
YmM5OWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgK
QEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKEFycmF5QnVmZmVyJik7CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0IHZv
aWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogCi0gICAgLy8gT25seSBmb3IgdXNlIGJ5
IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkIGFuZCBTaGFyZWRCdWZm
ZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyLgorICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENs
YW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIuCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVh
ZGVyLmNwcAppbmRleCAzMzU0YjUyYTUwY2JiMTg5ZmRmYWViN2Q4MjQ4M2JlMGM0MWMzZDRlLi5k
YTMzNmU2ZjViMTY5NGUzNzQ3NjkwYzQzZDJiNTNmMzUxOGMwOWZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
I2lmICFQTEFURk9STShDT0NPQSkKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1
ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKQor
dm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKaW5kZXggMmI2MjYyODQxOWIw
OWNiYjY5NTUyMTViMGQ1ZDdkNzNjMGIzNzQ0ZC4uNmUyMjA0OGNmNWZlYTlhYTYyZGFkZjQ1YjFm
MzVjNGNlMGQ3ZDZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCkBAIC0zMSw3ICszMSw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IENsaXBib2Fy
ZEltYWdlUmVhZGVyIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIENsaXBib2FyZEltYWdl
UmVhZGVyKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcm
KSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICBib29sIHNob3VsZFJlYWRC
dWZmZXIoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJikgZmluYWw7CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
OwogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFN0cmluZyBtX21pbWVU
eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApp
bmRleCBkMDc0NmRhMmRhMjA5ZTAyMzI1YjVmYTIxNGRiZWU2NGJmOWM5MDc4Li5lZmYxMGI1YjY1
ZmQ4MWFkOWJhMzJmODBiM2YyY2YyZjhlOThmMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApAQCAtMjE2LDggKzIxNiw4IEBAIHZvaWQgQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6aW52b2tlQ29tcGxldGlvbkhhbmRsZXIoKQog
ICAgICAgICBhdXRvJiBkYXRhID0gaXRlbVR5cGVMb2FkZXItPmRhdGEoKTsKICAgICAgICAgaWYg
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhIXN0ZDo6Z2V0PFN0cmlu
Zz4oZGF0YSkpCiAgICAgICAgICAgICBjdXN0b21EYXRhLndyaXRlU3RyaW5nKHR5cGUsIHN0ZDo6
Z2V0PFN0cmluZz4oZGF0YSkpOwotICAgICAgICBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihkYXRhKSkKLSAgICAgICAgICAgIGN1c3RvbURhdGEud3Jp
dGVEYXRhKHR5cGUsIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihkYXRhKS5jb3B5UmVmKCkp
OworICAgICAgICBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4oZGF0YSkpCisgICAgICAgICAgICBjdXN0b21EYXRhLndyaXRlRGF0YSh0
eXBlLCBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGRhdGEpLmNvcHlSZWYo
KSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpu
dWxsb3B0KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI2NSw5ICsyNjUsOSBAQCB2b2lkIENs
aXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpz
YW5pdGl6ZURhdGFJZk5lZQogewogICAgIGlmIChtX3R5cGUgPT0gInRleHQvaHRtbCJfcykgewog
ICAgICAgICBTdHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKLSAgICAgICAgICAgIGF1
dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwotICAgICAg
ICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7CisgICAgICAgICAgICBhdXRvJiBi
dWZmZXIgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Cisg
ICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICB9IGVsc2Ug
aWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpKQogICAgICAgICAgICAg
bWFya3VwVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFN0cmluZz4obV9kYXRhKTsKIApAQCAtMjc4LDkg
KzI3OCw5IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJk
SXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiAgICAgfQogCiAgICAgaWYgKG1fdHlw
ZSA9PSAiaW1hZ2UvcG5nIl9zKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
clRvU2FuaXRpemU7Ci0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFy
ZWRCdWZmZXI+PihtX2RhdGEpKQotICAgICAgICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHN0ZDo6
Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpLnB0cigpOworICAgICAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZTsKKyAgICAgICAgaWYgKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihtX2RhdGEpKQor
ICAgICAgICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4obV9kYXRhKS5wdHIoKTsKICAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBidWZmZXJUb1Nhbml0aXpl
ID0gdXRmOEJ1ZmZlcihzdGQ6OmdldDxTdHJpbmc+KG1fZGF0YSkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGlu
Z3NEYXRhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgKaW5kZXggMmNjMmM4ZTFhNTRlMThkNzM0
OTVjNTMwY2Q3N2Q1NGY5OWE1MjlhNy4uMzdjODI1ZTIzNWE4YThiN2U0NGU0MGZiMGMyZDc3MjQ0
MDdhNzU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
aApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBET01Qcm9taXNlOwogY2xhc3MgRmlsZVJlYWRlckxv
YWRlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UgOiBwdWJsaWMgQ2xp
cGJvYXJkSXRlbURhdGFTb3VyY2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAt
NTMsNyArNTMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbnZva2VDb21wbGV0aW9uSGFuZGxl
cigpOwogCi0gICAgdXNpbmcgQnVmZmVyT3JTdHJpbmcgPSBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBS
ZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgQnVmZmVyT3JTdHJpbmcgPSBzdGQ6OnZhcmlh
bnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAgIGNsYXNzIENsaXBi
b2FyZEl0ZW1UeXBlTG9hZGVyIDogcHVibGljIEZpbGVSZWFkZXJMb2FkZXJDbGllbnQsIHB1Ymxp
YyBSZWZDb3VudGVkPENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyPiB7CiAgICAgcHVibGljOgogICAg
ICAgICBzdGF0aWMgUmVmPENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiB0eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3Mv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2
ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uMjc0ZTAzOGQ0MTg3MDE2MWU0ZWViODBj
MTJhYmJhODcxZjlkNGE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklP
Uy5tbQpAQCAtMzQsMTAgKzM0LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFn
ZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFn
ZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2Uo
KSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5HUmVwcmVzZW50YXRp
b24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9k
b2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0
YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZElt
YWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMxY2E1MDYzOWNjY2E0YzU1
MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLjM4MjFiMDM3MTgwMjgyM2Q2OWE4MzBhMzEwZGEzNDcwOGQ2
MzMwNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTMz
LDEwICszMywxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ2xpcGJvYXJkSW1h
Z2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewot
ICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0
YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBh
ZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gY2dJbWFnZSA9
IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxd
KSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRvcHROUyhbW05TQml0bWFw
SW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7CiAgICAgICAgICAgICBO
U0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpO
U0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggZTZjYzFhYWU3ODNhNTIwOTRmNjU0OTli
YjkwZGQ3ZjAwNzFkNDI0Yy4uZjA1YzIzMzA3YmM1YTBlNTgyZGRjZDg2MGQ1YmIxYTFiMzA5MzI1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTI4OSw3
ICsyODksNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGlu
Zm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJlY29yZCh0b0Nv
bm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIpKTsKIAotICAg
ICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVy
ID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3Vs
dCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlD
aHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24s
IGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2Ug
fV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICh0YXNrSGFu
ZGxlci0+aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjk5LDkg
KzI5OSw5IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5m
b3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0g
ICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1
bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0
YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RG
TW92ZShkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25z
ZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3Vv
dXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2FjaGVkUmVzb3VyY2VSZXF1ZXN0
SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBET01D
YWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9t
aXNlLCBSZWY8RmV0Y2gKIAogICAgIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgYm9keTsK
ICAgICBpZiAoYXV0byBidWZmZXIgPSByZXNwb25zZUJvZHkucmVsZWFzZVJldHVyblZhbHVlKCkp
Ci0gICAgICAgIGJvZHkgPSBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgYm9keSA9
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBiYXRjaFB1dE9wZXJhdGlvbihyZXF1ZXN0
LmdldCgpLCByZXNwb25zZS5nZXQoKSwgV1RGTW92ZShib2R5KSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9u
T3I8dm9pZD4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2Jq
ZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwpAQCAtMzc1LDcgKzM3
NSw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJl
c3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAKICAgICBpZiAocmVzcG9uc2UtPmlzQm9k
eVJlY2VpdmVkQnlDaHVuaygpKSB7CiAgICAgICAgIGF1dG8mIHJlc3BvbnNlUmVmID0gcmVzcG9u
c2UuZ2V0KCk7Ci0gICAgICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5r
KFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCks
IHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGhpc10o
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5
UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdU
Rk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFy
ZWRCdWZmZXJCdWlsZGVyKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHko
KnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKIAogICAgICAgICAgICAgaWYg
KHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhS
ZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShy
ZXNwb25zZSksIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuaXNvbGF0ZWRDb3B5KCkpOwpAQCAt
MzgzLDkgKzM4Myw5IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAg
ICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsK
KyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgp
KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9u
c2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9u
c2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAg
ICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBkYXRh
LnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuY3BwCmluZGV4IDI1OTE0YjQwYmIyMzgzYTA3ODgwNGY4OWIxMWI0MGQ4OTcwYjQzMDYuLmMw
ZjgwMzJiMDQ1MmMzN2VlNGNhZmJjYWZkNzlmMDlkMjE0NjMzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC0xMzIsNyArMTMyLDcg
QEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYg
Ym9keSkKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURh
dGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRh
LT5pc29sYXRlZENvcHkoKTsKICAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAgICByZXR1cm4gYnVmZmVyLT5jb3B5KCk7Cisg
ICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOyAvLyBTaGFyZWRCdWZmZXIgYXJlIGltbXV0
YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVs
bHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5l
OjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDI4NTBkYmExZTNiZmExMWY0ODliNDQ0MDM1MTNk
NTFhZTFiZWFkM2EuLjlkMWJjNjc0ZmM4MjZjYjZkMTZkMDI1MTBjZjg0MDEwYWRjYmQ3NzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKQEAgLTEz
NSwxNyArMTM1LDE3IEBAIGJvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3By
aXZhdGUtPnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGlu
aXREYXRhKQogewogICAgIHJldHVybiBJbml0RGF0YVJlZ2lzdHJ5OjpzaGFyZWQoKS5zYW5pdGl6
ZUluaXREYXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpOwogfQogCi1ib29sIENETTo6c3VwcG9y
dHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpCitib29sIENETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRh
KQogewogICAgIHJldHVybiBtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0c0luaXREYXRh
KGluaXREYXRhVHlwZSwgaW5pdERhdGEpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE06
OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKK1JlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFtX3ByaXZhdGUpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNLmgKaW5kZXggZDhhNGIzYWYxMmYxYTc5MjNkODg3MDVkNWI5NTgxZDM2ZjEwMjcwYy4u
ZDdiMWQ1M2QwNDkxZjcyNzc5YjU5NGIyZDgzYzA5YjgzYmNmMjA3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNz
IENETUluc3RhbmNlOwogY2xhc3MgQ0RNUHJpdmF0ZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENETSA6IHB1YmxpYyBSZWZDb3VudGVkPENETT4s
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE0+LCBwcml2YXRlIENvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyIHsKIHB1YmxpYzoKQEAgLTczLDEwICs3MywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBz
dXBwb3J0c1Nlc3Npb25zKCkgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhVHlwZShj
b25zdCBBdG9tU3RyaW5nJikgY29uc3Q7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVk
QnVmZmVyJik7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgYm9vbCBzdXBwb3J0c0lu
aXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25z
ZShjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE1DbGllbnQuaAppbmRleCAyMWU1MmY0YjcxNGZiOTFmNjdjZmMzOTYxMzljMTY1MjViZmI3
YjliLi40MTBlZDJmYjY0Mjc1NjJjZTliZDhlZGE0ZDkxYTg2YmE5OGNhYTYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKQEAgLTM2
LDE0ICszNiwxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDRE1JbnN0YW5jZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNs
YXNzIENETUNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1DbGllbnQ+IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5DRE1DbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZv
aWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNl
aXZlZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29u
c3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4IDBiZjVlYWE3NGVk
YmU2ODlhOGQyZTQwYTM0MWE2NzA3NDQwZjJkNTYuLjZmODg4ZTE3ODU4ZGRhNmQ5NDcxZWMxZjZl
ZjVkMDY2ZGYwZTQ5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtNTQsMTMgKzU0LDEzIEBA
IG5hbWVzcGFjZSB7CiAgICAgY29uc3QgdWludDMyX3Qga0tleUlkc01heEtleUlkU2l6ZUluQnl0
ZXMgPSA1MTI7CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVm
ZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4g
ZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgLy8gMS4gRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5
cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAg
ICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZm
ZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBT
dHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZh
bHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTc0LDcgKzc0LDcgQEAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtl
eUlEc0tleWlkcyhjb25zdCBTaGFyZWQKICAgICBpZiAoIWtpZHNBcnJheSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURz
OworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBm
b3IgKGF1dG8mIHZhbHVlIDogKmtpZHNBcnJheSkgewogICAgICAgICBhdXRvIGtleUlEID0gdmFs
dWUtPmFzU3RyaW5nKCk7CiAgICAgICAgIGlmICgha2V5SUQpCkBAIC05Myw3ICs5Myw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJ
RHNLZXlpZHMoY29uc3QgU2hhcmVkCiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotc3RhdGljIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQorc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlk
cyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gMS4gRm9y
bWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQt
cmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CkBAIC0xMDQsMTQgKzEwNCwxNCBA
QCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgp
OwogICAgIGF1dG8ga2lkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAo
YXV0byYgYnVmZmVyIDoga2V5SURCdWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5w
dXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSkpOworICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2Rl
VG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KSk7CiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAK
ICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CiAg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEu
bGVuZ3RoKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNP
UHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaXREYXRhUmVnaXN0cnk6OmV4
dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6
b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lm
aWNIZWFkZXJCb3g+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5j
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyA0LiBDb21t
b24gU3lzdGVtSUQgYW5kIFBTU0ggQm94IEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2NlbmMuaHRtbCNj
b21tb24tc3lzdGVtCkBAIC0xNTEsOSArMTUxLDkgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbmkK
ICAgICByZXR1cm4gcHNzaEJveGVzOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
IGtleUlEczsKIAogICAgIGF1dG8gcHNzaEJveGVzID0gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5j
KGJ1ZmZlcik7CiAgICAgaWYgKCFwc3NoQm94ZXMpCkBAIC0xODUsNyArMTg1LDcgQEAgc3RkOjpv
cHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRy
YWN0S2V5SURzQ2VuYyhjb24KICAgICByZXR1cm4ga2V5SURzOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3Ry
eTo6c2FuaXRpemVDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICAvLyA0LiBDb21tb24gU3lzdGVtSUQgYW5kIFBTU0ggQm94IEZvcm1hdAogICAgIC8vIGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRk
YXRhL2NlbmMuaHRtbCNjb21tb24tc3lzdGVtCkBAIC0xOTUsNyArMTk1LDcgQEAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVDZW5jKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIENoZWNrIGlmIHRo
ZSBidWZmZXIgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIC8vIFRoZSBXZWJNIGluaXRE
YXRhIGlzIHRoZSBDb250ZW50RW5jS2V5SUQsIHNvIHNob3VsZCBiZSBsZXNzIHRoYW4ga1dlYk1N
YXhDb250ZW50RW5jS2V5SURTaXplLgpAQCAtMjA1LDEwICsyMDUsMTAgQEAgc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplV2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
ICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1dlYk0oY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1dlYk0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZEJ1ZmZlciA9IHNhbml0aXplV2ViTShi
dWZmZXIpOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkQnVmZmVyID0gc2Fu
aXRpemVXZWJNKGJ1ZmZlcik7CiAgICAgaWYgKCFzYW5pdGl6ZWRCdWZmZXIpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCBJbml0RGF0YVJlZ2lzdHJ5
OjpJbml0RGF0YVJlZ2lzdHJ5KCkKIAogSW5pdERhdGFSZWdpc3RyeTo6fkluaXREYXRhUmVnaXN0
cnkoKSA9IGRlZmF1bHQ7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6
OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0
RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8g
aXRlciA9IG1fdHlwZXMuZmluZChpbml0RGF0YVR5cGUpOwogICAgIGlmIChpdGVyID09IG1fdHlw
ZXMuZW5kKCkgfHwgIWl0ZXItPnZhbHVlLnNhbml0aXplSW5pdERhdGEpCkBAIC0yNDEsNyArMjQx
LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGEKICAgICByZXR1cm4gaXRlci0+dmFsdWUuc2Fu
aXRpemVJbml0RGF0YShidWZmZXIpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0
cnk6OmV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBpdGVyID0gbV90eXBl
cy5maW5kKGluaXREYXRhVHlwZSk7CiAgICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQoKSB8fCAh
aXRlci0+dmFsdWUuc2FuaXRpemVJbml0RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmgKaW5kZXggY2QxMzg3
YTZiZDAzOGZmMzRlMmNmYjc1ZjQ0M2RlN2Q5NDAzMjFiMC4uNzdkNjA0YjA4YmI3ZjdlMzhiY2Ni
MzU0NWIzNGM4YjEzNDM1NWVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmgKQEAgLTM4LDE5ICszOCwxOSBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lm
aWNIZWFkZXJCb3g7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBJbml0RGF0YVJlZ2lzdHJ5IHsKIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgSW5pdERhdGFSZWdpc3RyeSYgc2hhcmVkKCk7CiAgICAgZnJpZW5kIGNs
YXNzIE5ldmVyRGVzdHJveWVkPEluaXREYXRhUmVnaXN0cnk+OwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4
dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBzdHJ1Y3QgSW5pdERhdGFUeXBlQ2FsbGJhY2tzIHsK
LSAgICAgICAgdXNpbmcgU2FuaXRpemVJbml0RGF0YUNhbGxiYWNrID0gRnVuY3Rpb248UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4oY29uc3QgU2hhcmVkQnVmZmVyJik+OwotICAgICAgICB1c2luZyBFeHRy
YWN0S2V5SURzQ2FsbGJhY2sgPSBGdW5jdGlvbjxzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4+KGNvbnN0IFNoYXJlZEJ1ZmZlciYpPjsKKyAgICAgICAgdXNpbmcgU2FuaXRp
emVJbml0RGF0YUNhbGxiYWNrID0gRnVuY3Rpb248UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKT47CisgICAgICAgIHVzaW5nIEV4dHJh
Y3RLZXlJRHNDYWxsYmFjayA9IEZ1bmN0aW9uPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4+KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKT47CiAK
ICAgICAgICAgU2FuaXRpemVJbml0RGF0YUNhbGxiYWNrIHNhbml0aXplSW5pdERhdGE7CiAgICAg
ICAgIEV4dHJhY3RLZXlJRHNDYWxsYmFjayBleHRyYWN0S2V5SURzOwpAQCAtNjEsOSArNjEsOSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGtleWlkc05hbWUoKTsKICAg
ICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgd2VibU5hbWUoKTsKIAotICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNp
ZmljSGVhZGVyQm94Pj4+IGV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBTaGFyZWRCdWZm
ZXImKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
PiBleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBzdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlv
blN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IGV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHNhbml0aXplQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7
CiAKIHByaXZhdGU6CiAgICAgSW5pdERhdGFSZWdpc3RyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmlu
ZGV4IDhiZmIxY2U3MDFhMmY1YTY5YjViNTE5OTFhYTg2MzJlYmI4OTI1ZjkuLjE0Nzc2YzIwMTUx
YmZlZmUzODA3OWEzMzczMGM4ODY2MjY4YmE0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTE3
Niw3ICsxNzYsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgIHF1ZXVlVGFza0tlZXBp
bmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHdlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGluaXREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
aW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5sZW5ndGgoKSksIGluaXREYXRhVHlwZSwgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAo
KSBtdXRhYmxlIHsKICAgICAgICAgLy8gMTAuMS4gSWYgdGhlIGluaXQgZGF0YSBpcyBub3QgdmFs
aWQgZm9yIGluaXREYXRhVHlwZSwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQg
VHlwZUVycm9yLgogICAgICAgICAvLyAxMC4yLiBMZXQgc2FuaXRpemVkIGluaXQgZGF0YSBiZSBh
IHZhbGlkYXRlZCBhbmQgc2FuaXRpemVkIHZlcnNpb24gb2YgaW5pdCBkYXRhLgotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRJbml0RGF0YSA9IG1faW1wbGVtZW50YXRpb24t
PnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CisgICAgICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRJbml0RGF0YSA9IG1faW1wbGVtZW50
YXRpb24tPnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CiAKICAgICAg
ICAgLy8gMTAuMy4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxlZCwgcmVqZWN0IHByb21pc2Ug
d2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAgICBpZiAoIXNhbml0aXplZElu
aXREYXRhKSB7CkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVy
YXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEJ1ZmYKICAg
ICAgICAgICAgIG1fbGF0ZXN0RGVjcnlwdFRpbWUgPSAwOwogICAgICAgICB9CiAKLSAgICAgICAg
bV9pbnN0YW5jZVNlc3Npb24tPnJlcXVlc3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUsIGluaXREYXRh
VHlwZSwgc2FuaXRpemVkSW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlz
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRp
ZmllcildIChSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3Vj
Y2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9u
LT5yZXF1ZXN0TGljZW5zZShtX3Nlc3Npb25UeXBlLCBpbml0RGF0YVR5cGUsIHNhbml0aXplZElu
aXREYXRhLnJlbGVhc2VOb25OdWxsKCksIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJv
b2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFs
dWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCkBAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBNZWRpYUtleVNl
c3Npb246OnVwZGF0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYKICAgICAvLyA2LiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoK
ICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdv
cmtpbmcsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXNwb25zZSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2UubGVuZ3RoKCkpLCBw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmll
cildICgpIG11dGFibGUgewogICAgICAgICAvLyA2LjEuIExldCBzYW5pdGl6ZWQgcmVzcG9uc2Ug
YmUgYSB2YWxpZGF0ZWQgYW5kL29yIHNhbml0aXplZCB2ZXJzaW9uIG9mIHJlc3BvbnNlIGNvcHku
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3BvbnNlID0gbV9pbXBs
ZW1lbnRhdGlvbi0+c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7CisgICAgICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRSZXNwb25zZSA9IG1faW1wbGVtZW50YXRp
b24tPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2UpOwogCiAgICAgICAgIC8vIDYuMi4gSWYgdGhl
IHByZWNlZGluZyBzdGVwIGZhaWxlZCwgb3IgaWYgc2FuaXRpemVkIHJlc3BvbnNlIGlzIGVtcHR5
LCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAg
IGlmICghc2FuaXRpemVkUmVzcG9uc2UgfHwgc2FuaXRpemVkUmVzcG9uc2UtPmlzRW1wdHkoKSkg
ewpAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgICAgICAvLyA0LjMuIExldCBtZXNzYWdlIHR5
cGUgYmUgbnVsbC4KIAogICAgICAgICAvLyA0LjQuIFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhl
IGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlbW92ZVNlc3Np
b25EYXRhKG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBlLCBbdGhpcywgd2Vha1RoaXMsIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0g
KENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5cywgc3RkOjpvcHRpb25h
bDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nl
c3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+
cmVtb3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFr
VGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlk
ZW50aWZpZXIpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBz
dGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBDRE1J
bnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTY0OSw3
ICs2NDksNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKFJlZjxEZWZlcnJlZFByb21p
c2U+JiYgcHJvbWlzZSkKICAgICAvLyA1LiBSZXR1cm4gcHJvbWlzZS4KIH0KIAotdm9pZCBNZWRp
YUtleVNlc3Npb246OmVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUgbWVzc2FnZVR5
cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgbWVzc2FnZSkKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjpl
bnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBtZXNzYWdlKQogewogICAgIC8vIDYuNC4xIFF1ZXVlIGEgIm1l
c3NhZ2UiIEV2ZW50CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRp
YS8jcXVldWUtbWVzc2FnZQpAQCAtNzE2LDcgKzcxNiw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9u
Ojp1cGRhdGVLZXlTdGF0dXNlcyhDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYm
IGluCiAgICAgICAgIH0pOwogfQogCi12b2lkIE1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2Uo
Q0RNTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkK
K3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSBtZXNzYWdl
VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBlbnF1
ZXVlTWVzc2FnZShtZXNzYWdlVHlwZSwgbWVzc2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAppbmRleCAz
ZDk2Zjg4MDJlNzQ3ODQxYzRlZmRhODFkY2I5NDFlYTZlNGE3NWU0Li4zNjVhY2U1YzA5NWU3ZGMw
YzU3MWU3NmNjZjJjMDdhYWZjNjJiYWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKQEAgLTU3LDcgKzU3LDcg
QEAgY2xhc3MgQ0RNOwogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgTWVkaWFLZXlTdGF0
dXNNYXA7CiBjbGFzcyBNZWRpYUtleXM7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBE
T01Qcm9taXNlUHJveHk7CiAKQEAgLTg3LDIwICs4NywyMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
Q2xvc2VkUHJvbWlzZSA9IERPTVByb21pc2VQcm94eTxJRExVbmRlZmluZWQ+OwogICAgIENsb3Nl
ZFByb21pc2UmIGNsb3NlZCgpIHsgcmV0dXJuIG1fY2xvc2VkUHJvbWlzZS5nZXQoKTsgfQogCi0g
ICAgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0
dXM+PiYgc3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1c2VzOyB9CisgICAgY29uc3Qg
VmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3Rh
dHVzPj4mIHN0YXR1c2VzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXNlczsgfQogCiAgICAgdW5z
aWduZWQgaW50ZXJuYWxJbnN0YW5jZVNlc3Npb25PYmplY3RSZWZDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1faW5zdGFuY2VTZXNzaW9uLT5yZWZDb3VudCgpOyB9CiAKIHByaXZhdGU6CiAgICAgTWVk
aWFLZXlTZXNzaW9uKERvY3VtZW50JiwgV2Vha1B0cjxNZWRpYUtleXM+JiYsIE1lZGlhS2V5U2Vz
c2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBSZWY8Q0RNPiYmLCBSZWY8
Q0RNSW5zdGFuY2VTZXNzaW9uPiYmKTsKLSAgICB2b2lkIGVucXVldWVNZXNzYWdlKE1lZGlhS2V5
TWVzc2FnZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgZW5xdWV1ZU1lc3Nh
Z2UoTWVkaWFLZXlNZXNzYWdlVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwog
ICAgIHZvaWQgdXBkYXRlRXhwaXJhdGlvbihkb3VibGUpOwogICAgIHZvaWQgc2Vzc2lvbkNsb3Nl
ZCgpOwogICAgIFN0cmluZyBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAKICAg
ICAvLyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQKICAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2Vz
KENETUluc3RhbmNlU2Vzc2lvbkNsaWVudDo6S2V5U3RhdHVzVmVjdG9yJiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
bWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CiAgICAgdm9pZCBzZXNz
aW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFBsYXRmb3JtRGlzcGxheUlE
IGRpc3BsYXlJRCgpIGZpbmFsOwogCkBAIC0xNDAsMTAgKzE0MCwxMCBAQCBwcml2YXRlOgogICAg
IE1lZGlhS2V5U2Vzc2lvblR5cGUgbV9zZXNzaW9uVHlwZTsKICAgICBSZWY8Q0RNPiBtX2ltcGxl
bWVudGF0aW9uOwogICAgIFJlZjxDRE1JbnN0YW5jZVNlc3Npb24+IG1faW5zdGFuY2VTZXNzaW9u
OwotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gbV9yZWNvcmRPZktleVVzYWdlOworICAg
IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1fcmVjb3JkT2ZLZXlVc2FnZTsK
ICAgICBkb3VibGUgbV9maXJzdERlY3J5cHRUaW1lIHsgMCB9OwogICAgIGRvdWJsZSBtX2xhdGVz
dERlY3J5cHRUaW1lIHsgMCB9OwotICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZl
cj4sIE1lZGlhS2V5U3RhdHVzPj4gbV9zdGF0dXNlczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiBtX3N0YXR1c2VzOwog
CiAgICAgdXNpbmcgRGlzcGxheUNoYW5nZWRPYnNlcnZlciA9IE9ic2VydmVyPHZvaWQoUGxhdGZv
cm1EaXNwbGF5SUQpPjsKICAgICBEaXNwbGF5Q2hhbmdlZE9ic2VydmVyIG1fZGlzcGxheUNoYW5n
ZWRPYnNlcnZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKaW5kZXggNzNmNzRlNGY3MGZjOTJjMjJi
Zjg1OWMwMjI4YTM0ZWFlYzU3OTdhMy4uMzk4ZThhYjFiNjU2YjQ0NTkyN2JlYjZiYzY5M2RkMzk5
YTY4N2FjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN0YXR1c01hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKQEAgLTU2LDEyICs1NiwxMiBAQCB1bnNp
Z25lZCBsb25nIE1lZGlhS2V5U3RhdHVzTWFwOjpzaXplKCkKICAgICByZXR1cm4gbV9zZXNzaW9u
LT5zdGF0dXNlcygpLnNpemUoKTsKIH0KIAotc3RhdGljIGJvb2wga2V5SWRzTWF0Y2goY29uc3Qg
U2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIpCitzdGF0aWMgYm9vbCBrZXlJ
ZHNNYXRjaChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3Vy
Y2UmIGIpCiB7CiAgICAgYXV0byBsZW5ndGggPSBhLnNpemUoKTsKICAgICBpZiAoIWxlbmd0aCB8
fCBsZW5ndGggIT0gYi5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVy
biAhc3RkOjptZW1jbXAoYS5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOworICAgIHJldHVybiAh
c3RkOjptZW1jbXAoYS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgp
OwogfQogCiBib29sIE1lZGlhS2V5U3RhdHVzTWFwOjpoYXMoY29uc3QgQnVmZmVyU291cmNlJiBr
ZXlJZCkKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxCdWZm
ZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5UwogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5k
ZXgrK107Ci0gICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3Qt
PmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVm
ZmVyOjpjcmVhdGUocGFpci5maXJzdC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBwYWlyLmZp
cnN0LT5zaXplKCkpOwogICAgIHJldHVybiBLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJp
YW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1
ZmZlcikpLCBwYWlyLnNlY29uZCB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKaW5kZXggYzIxMTEx
M2EyYzZkYWM3OTc5MjRhOTlkMmQyZGY5N2MyZTY1Zjg1MC4uNjBkNjJhYWZmODA3NGRhZGE2ZTMx
YTNmMmIzNzBhNmQ2ZDAxZjYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaApAQCAtMzgsNyArMzgsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYUtleVNlc3Npb247Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNZWRp
YUtleVN0YXR1c01hcCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5U3RhdHVzTWFwPiB7CiBw
dWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5cy5jcHAKaW5kZXggODNiMjRhY2VhYTViMTI5NGJiNGVhNDM5ZmIyZDVjNGY2Y2NkNDc1
My4uMzY3ZjMxZDE4NmI1MTYzOWE5Yzc0MjEzZjBjZjhlNmYyZjhkMjZlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAt
MTc3LDcgKzE3Nyw3IEBAIGJvb2wgTWVkaWFLZXlzOjpoYXNPcGVuU2Vzc2lvbnMoKSBjb25zdAog
ICAgICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRp
b25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgaW5pdERhdGEpCit2b2lkIE1lZGlhS2V5czo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlv
bkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCiB7CiAgICAgZm9yIChhdXRvJiBjZG1DbGllbnQgOiBt
X2NkbUNsaWVudHMpCiAgICAgICAgIGNkbUNsaWVudC5jZG1DbGllbnRVbnJlcXVlc3RlZEluaXRp
YWxpemF0aW9uRGF0YVJlY2VpdmVkKGluaXREYXRhVHlwZSwgaW5pdERhdGEuY29weVJlZigpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5o
CmluZGV4IDdiNTlhM2JjNmQyMjU2ZmM2NTZmMDhjYmYyNjg5MTg1MTA5ODNhMjIuLjkxYTFhMDcx
MTQzM2JlMjQ3ZGQyYTg1YzVmNGFkMDkzOGEwOWE3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaApAQCAtODYsNyArODYsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgTWVkaWFLZXlzKERvY3VtZW50JiwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlk
ZW50aWZpZXIsIGJvb2wgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCwgY29uc3QgVmVjdG9yPE1lZGlh
S2V5U2Vzc2lvblR5cGU+JiwgUmVmPENETT4mJiwgUmVmPENETUluc3RhbmNlPiYmKTsKIAogICAg
IC8vIENETUluc3RhbmNlQ2xpZW50Ci0gICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9u
RGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwor
ICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJp
bmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgcmV0dXJu
IG1fbG9nZ2VyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAK
aW5kZXggMmZkYzRjMDAyMWY2ZTFmZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNiMS4uMDAzOTMwMmY3
ZGMxNmZmZWNmYzQ2NWM3ZDhkYTI1MmY5OGRhZjU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0Y2hCb2R5
Ojpjb25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzCiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9keU93bmVy
JiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlmIChhdXRv
IHNoYXJlZEJ1ZmZlciA9IGZvcm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAg
ICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29u
dGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsK
KyAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3du
ZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9
IGVsc2UgewogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlucyBibG9i
cywgbG9hZCB0aGVtIGxpa2Ugd2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcyLDcgQEAg
UmVmUHRyPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QKICAgICBp
ZiAoaXNGb3JtRGF0YSgpKQogICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihm
b3JtRGF0YUJvZHkoKSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkK
LSAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOworICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6OlRha2Vu
RGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29uc3VtZXIu
dGFrZURhdGEoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBy
ZXR1cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChpc0Jsb2Io
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmNwcAppbmRleCBmY2MyMTZhMDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhiNzlmZjYyYjNiLi4y
MjEzZDYyMzAzZWZlMmExZjcyOTgyNjBmNTg4NjBiNzc2ZmIyNjc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjQyLDcg
KzI0Miw3IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlLCBGZXRjaEJvZHlDb25zCiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OmNsZWFuKCkKIHsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgbV9idWZmZXIucmVz
ZXQoKTsKICAgICByZXNldENvbnN1bWVQcm9taXNlKCk7CiAgICAgaWYgKG1fc2luaykgewogICAg
ICAgICBtX3NpbmstPmNsZWFyQ2FsbGJhY2soKTsKQEAgLTI2NiwxNiArMjY2LDE4IEBAIHZvaWQg
RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNl
LCBjb25zdCBTdHJpbmcmIGNvCiB7CiAgICAgaWYgKHN0cmVhbSkgewogICAgICAgICBBU1NFUlQo
IW1fc2luayk7Ci0gICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJT
aW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSwgdHlwZSA9IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQp
IG11dGFibGUgeworICAgICAgICBtX3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVy
U2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1
ZmZlckJ1aWxkZXIoKSwgdHlwZSA9IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQp
IG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAg
ICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
IChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRh
dGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlz
ZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAg
ICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFr
ZSgpLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFu
ZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBt
X3NpbmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMDYsNyArMzA4
LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
RmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkZvcm1EYXRhOiB7CiAgICAgICAgIGF1dG8gYnVmZmVy
ID0gdGFrZURhdGEoKTsKLSAgICAgICAgaWYgKGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURh
dGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0
ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwKSkKKyAgICAgICAgaWYgKGF1dG8gZm9ybURh
dGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5z
aXplKCkgOiAwKSkKICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPERP
TUZvcm1EYXRhPj4oKmZvcm1EYXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHJvbWlz
ZS0+cmVqZWN0KFR5cGVFcnJvcik7CkBAIC0zMjQsMTYgKzMyNiwyMCBAQCB2b2lkIEZldGNoQm9k
eUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkKICAg
ICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXpl
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcikgewotICAgICAg
ICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9i
dWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0
YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewotICAgIHJldHVybiBXVEZN
b3ZlKG1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlci5yZXNldCgpOworICAgIG1fYnVmZmVyLmFwcGVu
ZChXVEZNb3ZlKGRhdGEpKTsKK30KKworUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZl
dGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSgpCit7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKTsKIH0KIAogUmVm
UHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZl
cigpCkBAIC0zNDEsOSArMzQ3LDcgQEAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9k
eUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAg
ICAgcmV0dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CiAKLSAgICBhdXRv
IGFycmF5QnVmZmVyID0gbV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Ci0gICAgbV9i
dWZmZXIgPSBudWxscHRyOwotICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKKyAgICByZXR1cm4gbV9i
dWZmZXIudGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogfQogCiBSZWY8QmxvYj4gRmV0
Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKQEAgLTM1MSw5ICszNTUsNyBAQCBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVmZmVy
KQogICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90Pigp
LCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAgYXV0
byBidWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBhdXRvIGRh
dGEgPSBidWZmZXItPmV4dHJhY3REYXRhKCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250
ZXh0LCBXVEZNb3ZlKGRhdGEpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZyb21E
YXRhKGNvbnRleHQsIG1fYnVmZmVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9jb250ZW50VHlw
ZSk7CiB9CiAKIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCkBAIC0zNjIs
OCArMzY0LDggQEAgU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAgICBp
ZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRleHQg
PSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPmRhdGEoKSwgbV9i
dWZmZXItPnNpemUoKSk7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIGF1dG8gYnVmZmVy
ID0gbV9idWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gdGV4dCA9IFRl
eHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOwogICAgIHJldHVybiB0ZXh0OwogfQogCkBAIC0zODMsMTAgKzM4NSw4IEBAIHZvaWQg
RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc2V0Q29uc3VtZVByb21pc2UoKQogdm9pZCBGZXRjaEJvZHlD
b25zdW1lcjo6c2V0U291cmNlKFJlZjxGZXRjaEJvZHlTb3VyY2U+JiYgc291cmNlKQogewogICAg
IG1fc291cmNlID0gV1RGTW92ZShzb3VyY2UpOwotICAgIGlmIChtX2J1ZmZlcikgewotICAgICAg
ICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7Ci0g
ICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICB9CisgICAgaWYgKG1fYnVmZmVyKQorICAg
ICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVm
ZmVyKCkpOwogfQogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nRmFpbGVkKGNvbnN0
IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDJiMDU2ZjEyNjQzYmE5NjdmZTQxYTAxNTEzYTg5
YjczNjI2NDJkNGMuLjg3MWQyYzA4NjMzMWE5ODI5NGExNjZhNGI0MmUzMTg0ZTAzNzc3MmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgK
QEAgLTUwLDEwICs1MCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4g
ISFtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+
JiYgZGF0YSkgeyBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7IH0KKyAgICBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0
KCk7IH0KKyAgICB2b2lkIHNldERhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZl
cj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKICAgICBTdHJpbmcgdGFrZUFzVGV4dCgpOwogCkBAIC04
Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAKICAgICBUeXBlIG1fdHlwZTsKICAgICBTdHJpbmcgbV9j
b250ZW50VHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IG1f
Y29uc3VtZVByb21pc2U7CiAgICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJT
aW5rPiBtX3Npbms7CiAgICAgUmVmUHRyPEZldGNoQm9keVNvdXJjZT4gbV9zb3VyY2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4IGZjNTVjYzdk
ODNkOGJjMTFmMDg1NGRjM2NmZDg1MDk3YTMxZjEwZjYuLjAzZjg5YjYxY2E1ZjdjNzE3NmI5ZDg4
Y2QxMzY2MGU4NmI3YTI1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hMb2FkZXIuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBGZXRjaExvYWRlcjo6c3RvcCgp
CiAgICAgICAgIG1fbG9hZGVyLT5jYW5jZWwoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
RmV0Y2hMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBGZXRjaExvYWRlcjo6c3RhcnRTdHJlYW1pbmcoKQogewogICAgIEFTU0VSVChtX2NvbnN1
bWVyKTsKICAgICBhdXRvIGZpcnN0Q2h1bmsgPSBtX2NvbnN1bWVyLT50YWtlRGF0YSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCmluZGV4IDJmOTBmMGVjM2Zm
OTA1YTI2MjMxYzg0YzcyYTdhMTg2Y2Q0YmZlODMuLjQ2MTJkMGUwZTNhN2VmZTMwNjAzOTZiMGQ3
NWEyZmEzYmM0ZWRkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9h
ZGVyLmgKQEAgLTM5LDE0ICszOSwxNCBAQCBjbGFzcyBGZXRjaEJvZHlDb25zdW1lcjsKIGNsYXNz
IEZldGNoTG9hZGVyQ2xpZW50OwogY2xhc3MgRmV0Y2hSZXF1ZXN0OwogY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiAKIGNsYXNzIEZldGNoTG9hZGVyIGZpbmFsIDogcHVibGljIFRocmVhZGFibGVM
b2FkZXJDbGllbnQgewogcHVibGljOgogICAgIEZldGNoTG9hZGVyKEZldGNoTG9hZGVyQ2xpZW50
JiwgRmV0Y2hCb2R5Q29uc3VtZXIqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+RmV0Y2hMb2FkZXIo
KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CiAKICAgICB2b2lk
IHN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBGZXRjaFJlcXVlc3QmLCBjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIHN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25z
dCBCbG9iJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcAppbmRleCA0ZGY4NDI2YzcxOGJhMTZlY2YwYTQ3ZTczZTkwMGQzZjg0OGY2NGYyLi5lMzhh
ODNhZGU3ZDZlMGFhZjcwY2ViOWM1YWE4ZmU4YWI0OTQzZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBAQCB2
b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1l
RGF0YUJ5Q2h1bmtDYWxsYmFjayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAK
LSAgICBTcGFuIGNodW5rIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNCdWZmZXIgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4gY2h1
bmsgeyBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1fY29u
c3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCkBAIC01MDMsNyArNTA0LDcgQEAgdm9pZCBG
ZXRjaFJlc3BvbnNlOjpmZWVkU3RyZWFtKCkKICAgICBjbG9zZVN0cmVhbSgpOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydFN0cmVhbWlu
ZygpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRmV0Y2hSZXNwb25zZTo6Qm9keUxv
YWRlcjo6c3RhcnRTdHJlYW1pbmcoKQogewogICAgIEFTU0VSVChtX2xvYWRlcik7CiAgICAgcmV0
dXJuIG1fbG9hZGVyLT5zdGFydFN0cmVhbWluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCAzNDIwYzZhMzhkM2MzZjZlMmZkYjY2NzVlOGE0
ZDEzNjViZjVhNWJiLi5jZjc4NjMyMzlmZDk0NmVlMGU4ZDg4ZWFlYTcyZmU5ODllZWQzMTRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtMTM0
LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCBjb25zdW1lRGF0YUJ5Q2h1bmso
Q29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJik7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CiAgICAgICAgIE5vdGlmaWNhdGlvbkNhbGxiYWNrIHRh
a2VOb3RpZmljYXRpb25DYWxsYmFjaygpIHsgcmV0dXJuIFdURk1vdmUobV9yZXNwb25zZUNhbGxi
YWNrKTsgfQogICAgICAgICBDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayB0YWtlQ29uc3VtZURh
dGFDYWxsYmFjaygpIHsgcmV0dXJuIFdURk1vdmUobV9jb25zdW1lRGF0YUNhbGxiYWNrKTsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmlu
ZGV4IGRkMTljODcwYWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEzNTJkZGQwNDEuLjFhNjZiZjgxODMy
MGU5NTYwN2Q2MTVmMWEwODJhODI3NmViMmEzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCkBAIC0zOCw3ICszOCw3IEBAIGVudW0gY2xh
c3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgOiBib29sIHsgTm8sIFllcyB9OwogZW51bSBj
bGFzcyBIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwIDogYm9vbCB7IE5vLCBZZXMgfTsK
IAogc3RydWN0IEFwcEhpZ2hsaWdodCB7Ci0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
aGlnaGxpZ2h0OworICAgIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBoaWdo
bGlnaHQ7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRleHQ7CiAgICAgQ3JlYXRlTmV3R3Jv
dXBGb3JIaWdobGlnaHQgaXNOZXdHcm91cDsKICAgICBIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRl
ZEluQXBwIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA7CkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+CiB2b2lkIEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdo
dC0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQt
PmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKGhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQt
PnNpemUoKSwgMSk7CiAKICAgICBlbmNvZGVyIDw8IHRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3Bw
CmluZGV4IGUyZDlhNjFlNDI3Njc2ZWI3YjdkYWVhYmZmYTMyZDA0YTQ1NzZjMDYuLjVlODBmMGMw
NzJkNDlhM2VmNzk2OTU5MzAyYzQ0NTZjZDJhYmRlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApA
QCAtNDQsMTUgKzQ0LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3RleHByIHVpbnQ2
NF90IGhpZ2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUg
U2lnbmF0dXJlICAoQSlwcGxlKEFQKXBsaWNhdGlvbihIKWlnaGxpZ2h0cygyMDIxKQogCi1zdGQ6
Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpj
cmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hs
aWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8gZGVjb2RlciA9IGJ1ZmZlci5k
ZWNvZGVyKCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1
b3VzKCk7CisgICAgYXV0byBkZWNvZGVyID0gY29udGlndW91c0J1ZmZlci0+ZGVjb2RlcigpOwog
ICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkYXRhOwogICAgIGRlY29k
ZXIgPj4gZGF0YTsKICAgICByZXR1cm4gZGF0YTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhOjp0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjp0b1NoYXJlZEJ1ZmZlcigpIGNv
bnN0CiB7CiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBlbmNvZGVyOwogICAgIGVuY29k
ZXIgPDwgKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCmluZGV4IGNmNjM4MWFjZmIwYTUyMTFiNDM1MDhi
N2I1MTdkNmRiMmY2ZmM3NDMuLmI1ZGFmNjAyNTM5OGEzZjdlNmYxZDM3YWJlY2U4NDRkNGYxYzY1
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFJhbmdlRGF0YS5oCkBAIC0zMywxMiArMzMsMTIgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCi1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBBcHBIaWdobGlnaHRSYW5n
ZURhdGEgewogV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBjcmVhdGUo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpOwogICAgIHN0cnVjdCBOb2RlUGF0aENvbXBvbmVudCB7CiAgICAgICAgIFN0cmlu
ZyBpZGVudGlmaWVyOwogICAgICAgICBTdHJpbmcgbm9kZU5hbWU7CkBAIC0xMTEsNyArMTExLDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRlY29kZShEZWNvZGVyJik7CiAKLSAgICBSZWY8
U2hhcmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFN0
cmluZyBtX2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCmluZGV4IGRjMzlhMGYwZDE4ZmZmY2E3
ZGZiNDY1MjE5Y2Q2MTJhOWY3MzhmOGYuLmU1ZGU4NDk0ZjM1MDQ1MzU5NGIyZjJlODhjM2RkYTMz
ZmE5YWY3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBBcHBI
aWdobGlnaHRTdG9yYWdlOjpzdG9yZUFwcEhpZ2hsaWdodChSZWY8U3RhdGljUmFuZ2U+JiYgcmFu
Z2UpCiAgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5zdG9yZUFwcEhpZ2hsaWdodChX
VEZNb3ZlKGhpZ2hsaWdodCkpOwogfQogCi12b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3Rv
cmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgU2Ny
b2xsVG9IaWdobGlnaHQgc2Nyb2xsKQordm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3Jl
QW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBTY3JvbGxUb0hpZ2hsaWdodCBzY3JvbGwpCiB7CiAgICAgYXV0byBhcHBIaWdobGlnaHRS
YW5nZURhdGEgPSBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShidWZmZXIpOwogICAgIGlm
ICghYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCmluZGV4IGIxNTJmNzZlZDQyNDA4
OTJlYTdkZTIxZTJjYjA2ZDQ3MmQ4NzMzNjAuLmUyNzY2MzNiNDg0ZjgxMDk0YWRlY2U0NWY2NGFi
YmVkMTc4MTI1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKIAogY2xhc3MgRG9jdW1lbnQ7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3Mg
U3RhdGljUmFuZ2U7CiBjbGFzcyBIaWdobGlnaHQ7CiAKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGlj
OgogICAgIH5BcHBIaWdobGlnaHRTdG9yYWdlKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTdGF0aWNSYW5nZT4mJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiwgU2Nyb2xsVG9IaWdobGlnaHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdG9yZUFu
ZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTY3Jv
bGxUb0hpZ2hsaWdodCk7CiAgICAgdm9pZCByZXN0b3JlVW5yZXN0b3JlZEFwcEhpZ2hsaWdodHMo
KTsKICAgICBNb25vdG9uaWNUaW1lIGxhc3RSYW5nZVNlYXJjaFRpbWUoKSBjb25zdCB7IHJldHVy
biBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaDsgfQogICAgIHZvaWQgcmVzZXRMYXN0UmFuZ2VTZWFy
Y2hUaW1lKCkgeyBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaCA9IE1vbm90b25pY1RpbWU6Om5vdygp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDBhZmI3ZWU1Y2M4NzQz
NTZiMzVhMTY4MDMyMzFhNjEzNjRjMDk4NjEuLjI3Y2Q4ZWVjNTNlMWFjZmM1OTg1ZWM3YjhmMDVl
MjI3NjQ1Yzg3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02ODYs
NyArNjg2LDcgQEAgYm9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgo
SURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9yZUluZm8KICAgICBTUUxpdGVUcmFuc2FjdGlv
biB0cmFuc2FjdGlvbigqbV9zcWxpdGVEQik7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0
aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktl
eVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRh
YmFzZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBJREJF
cnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdAogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1j
aGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAg
IGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsK
ICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3Rv
cmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qg
c3RvcmUiX3MgfTsKQEAgLTEzODcsNyArMTM4Nyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3Jl
YXRlIGFuIGluZGV4IGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAg
ICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJ
REJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFs
aXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewog
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZl
IGluIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBjcmVhdGUgaW5kZXggaW4gZGF0YWJh
c2UiX3MgfTsKQEAgLTE0NjQsNyArMTQ2NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQoY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvCiB7
CiAgICAgaGFzUmVjb3JkID0gZmFsc2U7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRl
eEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5k
ZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWlu
ZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBp
bmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBj
aGVjayBmb3IgaW5kZXggcmVjb3JkIGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNTMzLDEzICsxNTMz
LDEzIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhS
ZWNvcmQoaW50NjRfdCBvYmplY3RTdG9yZUlELCBpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQgLSAlcywgJXMiLCBr
ZXlWYWx1ZS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgaW5kZXhLZXkubG9nZ2luZ1N0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhL
ZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4
S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRl
eEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5k
ZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8g
YmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7Cisg
ICAgYXV0byB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOwogICAg
IGlmICghdmFsdWVCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFs
aXplIHRoZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdmFsdWUg
dG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTY2MSw3ICsxNjYxLDcgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmkKICAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2Fj
dGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJBdHRlbXB0IHRvIHNlZSBpZiBrZXkgZXhpc3RzIGluIG9iamVjdHN0b3JlIHdpdGhvdXQg
YW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBr
ZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVm
ZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8g
Y2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hl
Y2sgZm9yIGV4aXN0ZW5jZSBpbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTE3NDEsNyArMTc0MSw3
IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKFNRTGl0ZUlE
QlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICBBU1NFUlQodHJhbnNhY3Rpb24ubW9kZSgp
ICE9IElEQlRyYW5zYWN0aW9uTW9kZTo6UmVhZG9ubHkpOwogICAgIFVOVVNFRF9QQVJBTSh0cmFu
c2FjdGlvbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhl
IGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVu
YWJsZSB0byBzZXJpYWxpemUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFi
YXNlIl9zIH07CkBAIC0xOTYyLDcgKzE5NjIsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmFkZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHN0b3Jl
IGEgcmVjb3JkIGluIGFuIG9iamVjdCBzdG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJf
cyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVj
dCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIl9z
IH07CkBAIC0yMTI0LDcgKzIxMjQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGF1
dG8ga2V5ID0ga2V5UmFuZ2UubG93ZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAg
ICAga2V5ID0gSURCS2V5RGF0YTo6bWluaW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gbG93ZXJC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGlu
IGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3Is
ICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsK
QEAgLTIxMzMsNyArMjEzMyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0
UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAga2V5ID0g
a2V5UmFuZ2UudXBwZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0g
SURCS2V5RGF0YTo6bWF4aW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCBy
YW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUg
dG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTI0NDMs
NyArMjQ0Myw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0
SW5kZXhSZWNvcmRGb3JPbmVLZXkoaW50NjRfdCBpbmRleElECiAKICAgICBBU1NFUlQoa2V5Lmlz
VmFsaWQoKSAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4ICYmIGtleS50
eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNaW4pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5k
ZXggcmVjb3JkIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVu
YWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCJfcyB9
OwpAQCAtMjUwOCwxNCArMjUwOCwxNCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmdldENvdW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpbwogICAgIG91
dENvdW50ID0gMDsKIAogICAgIGF1dG8gbG93ZXJLZXkgPSByYW5nZS5sb3dlcktleS5pc051bGwo
KSA/IElEQktleURhdGE6Om1pbmltdW0oKSA6IHJhbmdlLmxvd2VyS2V5OwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7
CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOwog
ICAgIGlmICghbG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2Vy
aWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkg
aW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKICAgICB9CiAKICAgICBh
dXRvIHVwcGVyS2V5ID0gcmFuZ2UudXBwZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptYXhp
bXVtKCkgOiByYW5nZS51cHBlcktleTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOworICAgIGF1dG8gdXBwZXJCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVy
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkg
aW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJv
ciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3Ig
Y291bnQgb3BlcmF0aW9uIl9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IDhiZmUyMjdk
YjYxOTYyM2JkOGRmMDZhMTA4NThjZjAzMjFjNDMyMDYuLjQ4NjEwMzRkM2ExMmRhMGMwOWNmZWRm
ZTlmMmVhNjVhNjgxMDAzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0yNjksNyArMjY5
LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMoKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CisgICAgYXV0byBidWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKICAgICBpZiAobV9zdGF0ZW1l
bnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09L
KSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50
IChsb3dlciBrZXkpIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMxNSw3ICszMTUsNyBA
QCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElm
TmVjZXNzYXJ5KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRv
IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAobV9wcmVJbmRleFN0
YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJ
VEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgYmluZCBpZCBhcmd1bWVudCB0
byBwcmUgc3RhdGVtZW50IChrZXkpIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNw
cAppbmRleCAwYTQ2OWJkMGJkMWYzOGRjYjk2YjM5ZDhjMzAwMGFmNzNkMTJhYjU5Li5jOWQ2ZGE2
YmRkOWY5Mzk1MDFmNGY0MjMyYjRjNzgzN2Q4NDBkYWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCkBAIC0xOTYs
NyArMTk2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFSZWNvcmRlcjo6c3RhcnRSZWNvcmRp
bmcoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdGltZVNsaWMKICAgICByZXR1cm4geyB9OwogfQog
Ci1zdGF0aWMgaW5saW5lIFJlZjxCbG9iRXZlbnQ+IGNyZWF0ZURhdGFBdmFpbGFibGVFdmVudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlIHRpbWVDb2RlKQorc3RhdGljIGlu
bGluZSBSZWY8QmxvYkV2ZW50PiBjcmVhdGVEYXRhQXZhaWxhYmxlRXZlbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUgdGltZUNvZGUpCiB7CiAgICAgYXV0
byBibG9iID0gYnVmZmVyID8gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIGJ1ZmZlci0+ZXh0cmFjdERh
dGEoKSwgbWltZVR5cGUpIDogQmxvYjo6Y3JlYXRlKGNvbnRleHQpOwogICAgIHJldHVybiBCbG9i
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGF0YWF2YWlsYWJsZUV2ZW50LCBCbG9iRXZlbnQ6
OkluaXQgeyB7IGZhbHNlLCBmYWxzZSwgZmFsc2UgfSwgV1RGTW92ZShibG9iKSwgdGltZUNvZGUg
fSwgQmxvYkV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaAppbmRleCA3NzEyYjQ0NTI4MzY3
ZDhjMjcyNTAyYWRiYWFjYWFmOTc4OGNiZGIwLi4xZTliNzRhYjE3ZTMxMDhkYjQyMDliOWI0ZjAy
MTRkYTExYWM2ZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlzcGF0Y2hFcnJvcihFeGNlcHRpb24mJik7CiAKICAgICBlbnVtIGNsYXNzIFRha2VQ
cml2YXRlUmVjb3JkZXIgeyBObywgWWVzIH07Ci0gICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sg
PSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGRvdWJsZSk+OworICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248
dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgZG91YmxlKT47CiAgICAgdm9pZCBmZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJiwg
VGFrZVByaXZhdGVSZWNvcmRlcik7CiAKICAgICAvLyBNZWRpYVN0cmVhbTo6T2JzZXJ2ZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0
YS5jcHAKaW5kZXggM2Y0YzliY2QxMzNhYzI5ZjNmN2RkZTE5OTQ3OGUzOTI1N2Q1ZTY2Yi4uODc0
YWE3ZjBiMThmMGVlNzU4ODBiYTVmNWVmNjdkNDdiZmMyYjJiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKQEAgLTc3
LDcgKzc3LDcgQEAgdm9pZCBBcnR3b3JrSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0wKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAvLyBTYW5pdGl6ZSB0aGUgaW1hZ2UgYnkgZGVjb2RpbmcgaXQgaW50byBhIEJpdG1h
cEltYWdlLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRpemUgPSBtX2Nh
Y2hlZEltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGJ1ZmZlclRvU2FuaXRpemUgPSBtX2NhY2hlZEltYWdlLT5pbWFnZSgpLT5kYXRhKCk7
CiAgICAgYXV0byBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICBiaXRt
YXBJbWFnZS0+c2V0RGF0YShXVEZNb3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKICAgICBh
dXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAppbmRleCAyYjNjZGUzNjA4MjQ3MWMx
MWM4N2ZjZjYxY2M4MWNjMzYwYzM5ZDkwLi5kMzc4YWZjNmY4YTFiNTdhMDMwMmUyYzg2OGIyNDBh
MjA5N2ZlNGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L1NvdXJjZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuY3BwCkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6
OmFwcGVuZEJ1ZmZlclRpbWVyRmlyZWQoKQogICAgIC8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcv
aHRtbC1tZWRpYS9yYXctZmlsZS90aXAvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS5odG1sI3Nv
dXJjZWJ1ZmZlci1zZWdtZW50LXBhcnNlci1sb29wCiAgICAgLy8gV2hlbiB0aGUgc2VnbWVudCBw
YXJzZXIgbG9vcCBhbGdvcml0aG0gaXMgaW52b2tlZCwgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcHBlbmREYXRhID0gV1RGTW92ZShtX3BlbmRp
bmdBcHBlbmREYXRhKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYXBwZW5k
RGF0YSA9IFdURk1vdmUobV9wZW5kaW5nQXBwZW5kRGF0YSk7CiAgICAgLy8gMS4gTG9vcCBUb3A6
IElmIHRoZSBpbnB1dCBidWZmZXIgaXMgZW1wdHksIHRoZW4ganVtcCB0byB0aGUgbmVlZCBtb3Jl
IGRhdGEgc3RlcCBiZWxvdy4KICAgICBpZiAoIWFwcGVuZERhdGEgfHwgIWFwcGVuZERhdGEtPnNp
emUoKSkgewogICAgICAgICBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoQXBwZW5k
UmVzdWx0OjpBcHBlbmRTdWNjZWVkZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKaW5kZXggNTIwYzA3NzU2OTZhMmYwZTJlNzMwMDcz
NWU4Yzk3NzQ5NWYxYTYxNC4uZDRjODU3OWMwYmJkNDQzYTUxMmZhOWY2OGM0MjdlYzA0ODg1ZDBk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VC
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5oCkBAIC0yMjIsNyArMjIyLDcgQEAgcHJpdmF0ZToKIAogICAgIFdURjo6T2JzZXJ2ZXI8
dm9pZCooKT4gbV9vcGFxdWVSb290UHJvdmlkZXI7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX3BlbmRpbmdBcHBlbmREYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBtX3BlbmRpbmdBcHBlbmREYXRhOwogICAgIFRpbWVyIG1fYXBwZW5kQnVmZmVyVGltZXI7CiAK
ICAgICBSZWZQdHI8VmlkZW9UcmFja0xpc3Q+IG1fdmlkZW9UcmFja3M7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggZmViMWI4ZmZmYjdiOTRjOWU3ZWIwYmU0OGFkMzVk
ZDcwNzljNzBiYi4uY2M1YTg2NTczMDU2NTdkMGE5NzA1NjYxZTRiYjQ5Y2UwYjg0MDVjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lk
IFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQoKQogICAgIG1faXNSZWFk
eVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX3BlbmRpbmdNZXNz
YWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIs
IG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5z
aXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmll
ciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAgbV9wZW5kaW5nTWVzc2FnZXMuY2xlYXIo
KTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyLmgKaW5kZXggZjU4MjdkZjkzNzk0OTNkMjgxMjcwMTc3Y2NmYmNhMDU1MTUzMjMxZi4uNzM5
NDJhODM1OTMxYTlkMjg0YzZhNDUxYmI4ZGJmYjU3NjVjYWRhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudDsKIGNsYXNzIFJUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlckNvbm5lY3Rpb247CiBjbGFzcyBSVENFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlciBmaW5hbCA6IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI+IHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0
cnVjdCBNZXNzYWdlIHsKICAgICAgICAgYm9vbCBpc1JhdyB7IGZhbHNlIH07Ci0gICAgICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICB9OwogICAgIFZlY3RvcjxNZXNzYWdlPiBtX3BlbmRpbmdNZXNzYWdl
czsKICAgICBib29sIG1faXNQZW5kaW5nQ2xvc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggM2UxMTA1NDAwMzUz
ZGU1NjBmMjQ5MzhhOWIyMDhlZjM2ZjY4MDNjNC4uM2NlZWQwYTAxMWU3YjU0NmZhZGRmNDhiYmRh
MjExZGZkZDUyNGM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXIuY3BwCkBAIC05Nyw4ICs5Nyw4IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQs
CiAgICAgbV9jb250ZXh0SWRlbnRpZmllciA9IGNvbnRleHRJZGVudGlmaWVyOwogCiAgICAgZm9y
IChhdXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7Ci0gICAgICAgIHN3aXRjaE9u
KG1lc3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgY2xp
ZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAg
ICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgZGF0
YSkgeworICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwgWyZdKFN0cmluZyYg
dGV4dCkgewogICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdEYXRhKHRleHQpOwog
ICAgICAgICB9LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKaW5kZXggNDFmOTUyODIxZTYyMDA5
M2Y4ZWVmZTMyYzVlZDRhZTBmNWU1NDE5Ny4uMTFiZDQ1ZGU5MTU1Nzc5ZmZjOWVmYjAzZTk1NTI4
ZjA1ZTY0ZDc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgUlRDRGF0YUNoYW5u
ZWxTdGF0ZSBzdGF0ZTsKICAgICAgICAgc3RkOjpvcHRpb25hbDx3ZWJydGM6OlJUQ0Vycm9yPiBl
cnJvcjsKICAgICB9OwotICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnZhcmlhbnQ8U3RhdGVDaGFu
Z2UsIFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6
OnZhcmlhbnQ8U3RhdGVDaGFuZ2UsIFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PjsKICAgICB1c2luZyBQZW5kaW5nTWVzc2FnZXMgPSBWZWN0b3I8TWVzc2FnZT47CiAgICAgdm9p
ZCBzdG9yZU1lc3NhZ2UoUGVuZGluZ01lc3NhZ2VzJiwgY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVy
Jik7CiAgICAgdm9pZCBwcm9jZXNzTWVzc2FnZShjb25zdCB3ZWJydGM6OkRhdGFCdWZmZXImKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmNwcAppbmRleCAzMDljMDI2NDNmNWE3YWU5ZmVjMDhhMTRlYjIxMjI0MDli
MWY4OWUwLi42M2YxYzNjYmUxZWE4MWNmYmY0NTQ2NDYzMjBjZGY3ZmFjZjU5YzJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpz
ZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBtX3NvdXJjZVVSTCA9IHVybDsKIAot
ICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgbV9kYXRhLnJlc2V0KCk7CiAgICAgbV9kYXRhQ29t
cGxldGUgPSBmYWxzZTsKIAogICAgIGlmIChtX3Jlc291cmNlKSB7CkBAIC0xNDksNyArMTQ5LDcg
QEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgIG1fZGF0YS5lbXB0eSgpOwogCiAgICAgbV9yZXNvdXJjZSA9IHJlc291cmNlLnZh
bHVlKCk7CiAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKQEAgLTE4MCw4ICsxODAs
NyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgcwogdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2Ug
PT0gbV9yZXNvdXJjZSk7Ci0gICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgbV9kYXRhLT5hcHBlbmQo
ZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsK
IH0KIAogdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCkBAIC0xOTUsNyArMTk0LDcg
QEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9OwogCiAgICAgaWYgKHJlc291cmNlLmxv
YWRGYWlsZWRPckNhbmNlbGVkKCkpIHsKLSAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAg
ICAgbV9kYXRhLnJlc2V0KCk7CiAKICAgICAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5k
VXBkYXRlUmVuZGVyZXIoKTsKIApAQCAtMjA0LDcgKzIwMyw3IEBAIHZvaWQgSFRNTE1vZGVsRWxl
bWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3
b3JrTG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwg
PSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLmdldCgpLCByZXNvdXJjZS5t
aW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUo
bV9kYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUo
KSwgcmVzb3VyY2UudXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBk
YXRlUmVuZGVyZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggMDVhMWNkYWEzZTE0ODc3YTBhZTQ2
NWI2MzQ5YWE1YmJiMWFmMmM4Mi4uY2UwMDlkNGU1ZWRjMzA5NzQ1ZTAyN2IwNjMyYmQxZTZlODU4
MDNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogICAg
IFVSTCBtX3NvdXJjZVVSTDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNv
dXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiAgICAgUmVmUHRyPE1vZGVsPiBtX21vZGVsOwog
ICAgIFVuaXF1ZVJlZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wgbV9k
YXRhQ29tcGxldGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExv
YWRlclVTRC5tbQppbmRleCAzZTgyYWMyMjE2Nzk2YzllZGI3NjBhMTllZDdhY2UxZjQyY2QzNzc3
Li4xMzAzZWM0ZDI1NjhhNjZmODdkN2ZlYjIwYmYyYjAzMzkyMzJjM2M1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2Rl
bExvYWRlclVTRC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
c2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0
YXRpYyBSZXRhaW5QdHI8TlNVUkw+IHdyaXRlVG9UZW1wb3JhcnlGaWxlKFdlYkNvcmU6Ok1vZGVs
JiBtb2RlbFNvdXJjZSkKICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBv
cmFyeUZpbGUoIk1vZGVsRmlsZSIsIGZpbGVIYW5kbGUsICIudXNkeiIpOwogICAgIEFTU0VSVChG
aWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsKIAotICAgIHNpemVfdCBieXRl
Q291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5k
YXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIHNpemVfdCBi
eXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJj
ZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5z
aXplKCkpOwogICAgIEFTU0VSVF9VTlVTRUQoYnl0ZUNvdW50LCBieXRlQ291bnQgPT0gbW9kZWxT
b3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFu
ZGxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtU2luay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtU2luay5oCmluZGV4IDBiODk4ZjZhZGI1N2ViMjVkYzQ5MzdkODFmZjVkMTRkNTI5NzZj
ODQuLmQ1MTczZmJmOGI0MDM0MWM1Y2Y4ZDhhNGY1NWVlYWM4ZmY4MzhhMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKQEAg
LTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCdWZmZXJTb3VyY2U7
CiBjbGFzcyBSZWFkYWJsZVN0cmVhbTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJlYWRhYmxlU3RyZWFtU2luayA6IHB1YmxpYyBS
ZWZDb3VudGVkPFJlYWRhYmxlU3RyZWFtU2luaz4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKaW5k
ZXggYzQ1MmM4M2ZiZDVjZTg5NWJkZDAzMWFjZjE0NjhmNzg2NTA2MjJkNy4uYjhiNzc4NWY5MWQw
NjhjMmE0NmNlYjFkNjU5NzU4ZmNmOGI2OWQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01MSwxMyAr
NTEsMTUgQEAgcHVibGljOgogICAgICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICAgICAgaWYgKCFtX2NvbnRp
Z3VvdXNCdWZmZXIgJiYgKCFtX2NvbnRhaW5zT25seUFTQ0lJIHx8ICptX2NvbnRhaW5zT25seUFT
Q0lJKSkKKyAgICAgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG1fc2NyaXB0QnVmZmVyLmJ1
ZmZlcigpLT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBpZiAoIW1fY29udGFpbnNPbmx5QVND
SUkpIHsKLSAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxs
QVNDSUkobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVm
ZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFj
dGVyc0FyZUFsbEFTQ0lJKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZl
ci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJ
SSkKLSAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVI
YXNoQW5kTWFza1RvcDhCaXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2Ny
aXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFz
aCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9jb250aWd1b3Vz
QnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAg
ICB9CiAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgIHJldHVy
biB7IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAgICAgcmV0dXJu
IHsgbV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3Nj
cmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICghbV9jYWNoZWRT
Y3JpcHRTdHJpbmcpIHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5nID0gbV9zY3Jp
cHRCdWZmZXIudG9TdHJpbmcoKTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIG1fc2NyaXB0QnVmZmVyID0gc2NyaXB0QnVmZmVyOworICAg
ICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBudWxscHRyOwogICAgIH0KIAogcHJpdmF0ZToKQEAg
LTkxLDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZmZXIgbV9zY3Jp
cHRCdWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRpZ3VvdXNC
dWZmZXI7CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07CiAgICAgbXV0
YWJsZSBTdHJpbmcgbV9jYWNoZWRTY3JpcHRTdHJpbmc7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlv
bmFsPGJvb2w+IG1fY29udGFpbnNPbmx5QVNDSUk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDdlNDlhOWU3MzIyNmI2NWNj
MjhiZjU5NDgxM2IwZjgzYjI2OWQyMmIuLmVmMzdmMWQwY2E0NjJiYjliN2M5YjZhNTVkMThlYmI0
YzExODFhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIERldGFjaGVkT2Zmc2NyZWVu
Q2FudmFzOwogY2xhc3MgSURCVmFsdWU7CiBjbGFzcyBNZXNzYWdlUG9ydDsKIGNsYXNzIEltYWdl
Qml0bWFwQmFja2luZzsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiBlbnVtIGNsYXNzIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOwogCiBlbnVtIGNs
YXNzIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgeyBOb25UaHJvd2luZywgVGhyb3dpbmcgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKaW5kZXggODI2MTMzMzIyYThlZTVmMzc4
MmZiYjIzMTIzYjJkZDNhNTdhMTcyOC4uMTA4ZTZjODc2N2QwZDJmZGFjYmU2NTA0ZWJjNTA3MGU4
ODJiZTY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTM0LDYg
KzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NGb250RmFjZTsKIGNsYXNz
IENTU0ZvbnRTZWxlY3RvcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50Owog
Y2xhc3MgRm9udDsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CkBAIC00Miw3ICs0Myw2IEBA
IGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2Fw
YWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiBjbGFzcyBTVkdGb250RmFj
ZUVsZW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBj
bGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+
IEZvbnRGZWF0dXJlU2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0
YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4
IDFkZWFjNGY0MWNmNDlmMWY4ODJkY2NlZmQ0OGNmNmE5NzMyZjNlZDkuLmM0MmVjMDUxZmUxMWVi
YTE0ZjgxMzM1OWQ4ZDE3YTJjMjgxNjY0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIu
Y3BwCkBAIC00MDIsNyArNDAyLDcgQEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlVHlwZVJlYWRlciBm
aW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICAgICAgdHlwZXMuYWRkKEZpbGU6OmNv
bnRlbnRUeXBlRm9yRmlsZShmaWxlbmFtZSkpOwogICAgIH0KIAotICAgIHZvaWQgcmVhZEJ1ZmZl
cihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYp
CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCiAgICAgewogICAgICAgICB0eXBlcy5hZGQo
dHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDE3MjRjZjBlNTBi
YWE1YjliMjQxMzA0ODFlZTcyNGNiNzgyMDdhYTQuLmM1ZTllMjZiMzcyYWU2ODNmMTg2OGU5MjBj
NDVlZDcwZWRmNTU0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxMzMsNyAr
NDEzMyw3IEBAIFByb21pc2VkQXR0YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1l
bnRJbmZvKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuIHsgYXR0YWNobWVudC0+dW5pcXVl
SWRlbnRpZmllcigpLCBXVEZNb3ZlKGFkZGl0aW9uYWxUeXBlcyksIFdURk1vdmUoYWRkaXRpb25h
bERhdGEpIH07CiB9CiAKLXZvaWQgRWRpdG9yOjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29u
c3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQor
dm9pZCBFZGl0b3I6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZl
cnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAg
IGlmIChhdXRvKiBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKICAgICAgICAgY2xpZW50LT5yZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGlkZW50aWZpZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJy
ZWRGaWxlTmFtZSwgV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAw
MWZlMGI1ZTA0NGVmNjNmMjZhNzFiNDcyZWY5OGIxMWMyMjhiOTFjLi4xZDA3MTZjNWI5M2M4YmI3
YWQ3M2Y0MTc0Y2E4MDQ1OTA1ZjkxOTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU3
LDkgKzU3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlcjsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKLWNsYXNzIERhdGFUcmFuc2ZlcjsK
IGNsYXNzIENvbXBvc2l0ZUVkaXRDb21tYW5kOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3Mg
Q3VzdG9tVW5kb1N0ZXA7CitjbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBEZWxldGVCdXR0b25D
b250cm9sbGVyOwogY2xhc3MgRWRpdENvbW1hbmQ7CiBjbGFzcyBFZGl0Q29tbWFuZENvbXBvc2l0
aW9uOwpAQCAtNzQsNyArNzUsNyBAQCBjbGFzcyBLaWxsUmluZzsKIGNsYXNzIFBhc3RlYm9hcmQ7
CiBjbGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0YTsKIGNsYXNzIFJlbmRlckxheWVyOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7
CiBjbGFzcyBTcGVsbENoZWNrUmVxdWVzdDsKIGNsYXNzIFNwZWxsQ2hlY2tlcjsKQEAgLTU2Myw3
ICs1NjQsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGZpbGVEYXRhKTsKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJy
ZWRGaWxlTmFtZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZmlsZURhdGEpOwogICAg
IHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
PiYmKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CiAg
ICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaAppbmRleCAwOGFhMTI0MjY2MjBm
NzY5NTNhNzliMzRlZGU1ZjZkZjA1MjdiMDE1Li45NTdiNGZkNGE1NTdmYzgxY2QzMDY5ZWVhY2I4
OTQ4OGE5NDdiN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRl
bnRSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIu
aApAQCAtNzIsMTYgKzcyLDE2IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWFkRmlsZVBhdGgoY29u
c3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0g
eyB9LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0geyB9KSBvdmVycmlkZTsKICAgICBib29s
IHJlYWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKICAgICBib29s
IHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZEltYWdlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBw
cmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRJ
bWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQ
cmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRl
OwogICAgIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVy
cmlkZTsKICAgICBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKLSAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplID0geyB9KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEZEKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50
YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOwogI2Vu
ZGlmCiB9OwogCkBAIC05OSwxNiArOTksMTYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlYWRGaWxl
UGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBTdHJpbmcm
ID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZEZpbGVQYXRo
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
Ym9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRJbWFn
ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0g
eyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZEltYWdlKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXpl
ID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZFVSTChjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJv
b2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIHJlYWRXZWJBcmNoaXZl
KFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVy
Jikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwot
ICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICBib29sIHJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKKyAgICBib29sIHJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVy
cmlkZTsKKyAgICBib29sIHJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OworICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCA1NDllYjdk
MmU0YzA3NTQ4ZTRhOGM5ZWEyNGVjMjBlNGYyMWJmYTI1Li4xMTdkYmE2OGVkYjBiZDRiNmMzMGUw
OTQ4NWQ5ZDBjMGYyOWMzODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHZvaWQg
V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSkKICAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGZp
bGVuYW1lKSk7CiB9CiAKLXZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBmaWxlcy5hcHBlbmQoRmls
ZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIEJsb2I6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBidWZm
ZXItPmV4dHJhY3REYXRhKCksIHR5cGUpLCBmaWxlbmFtZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKaW5kZXggNWM1
MjlkZDdjOGVjYzAwMDQ4ZmNiNGQxNTgxNDYzNWIyNGQ5MGJiNy4uOWQ4MTYwNWYxOTkyOThmMTlj
MGVkNjk5NWZlM2JkNzc4MzAzNGZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVj
dCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRl
ciB7CiAgICAgfldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcigpOwogCiAgICAgdm9pZCByZWFk
RmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNv
bnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwog
CiAgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IGNvbnRleHQ7CiAgICAgVmVjdG9y
PFJlZjxGaWxlPj4gZmlsZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0KaW5kZXggZDQ4ZTExYzk2Yjc4MDhmODgzNTRiM2IwNzQ3ZWViMWYxZTM3ZTNm
My4uMDc4MjQ4MzYyYWEwNTRkYzNhYjAwMDA0NTE3MTg0MTk4YTU4MGY3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3ICsxMjcz
LDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVu
dCYgZWxlbWVudCwgTlNVUkwgKnVybCwgQk9PTAogICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9
IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKHVybCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1pbWVU
eXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBsYWNlaG9s
ZGVyIHx8IG1pbWVUeXBlICE9ICJ0ZXh0L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAgZmlsZVdy
YXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0
aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAg
ICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgICAgIFtmaWxlV3JhcHBl
ciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZSh1cmws
IG1pbWVUeXBlKV07CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBub3RGb3Vu
ZCA9IFlFUzsKQEAgLTIzMDAsNyArMjMwMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3Jh
cHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiAK
ICAgICBpZiAoZGF0YVNvdXJjZSkgewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAgICAgICAg
ICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCld
KTsKKyAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFs
bG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcg
KmZpbGVuYW1lID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAg
ICAgICAgICAgIGlmICghZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAgICAgICAg
ICAgICAgIGZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVzb3VyY2Ut
PnVybCgpLCByZXNvdXJjZS0+bWltZVR5cGUoKSk7CkBAIC0yMzIyLDggKzIzMjIsOCBAQCBzdGF0
aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJMKERvY3VtZW50TG9h
ZGVyKiBkYXRhU291cmNlLCBOUwogc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxl
V3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAo
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7Ci0gICAg
ICAgIGlmIChTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJj
ZUJ1ZmZlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFs
bG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV0pOworICAgICAgICBpZiAoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVk
QnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgICAgICByZXR1
cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250
ZW50czpzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CiAgICAgfQogCiAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tCmluZGV4IDZhYTNjZDU0ZTgyYjk5YjMxOTQyN2JlZTM0YzhjNDRiNjc5ZTIyNzkuLjc2
YjFhMDA5ZGU0MzBmYTNiNTRkOWExNWU2NzhjZDgzZjMxNDVmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0y
NDUsNyArMjQ1LDcgQEAgc3RhdGljIGJvb2wgc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERh
dGEoY29uc3QgRnJhbWUmIGZyYW1lKQogCiAjZW5kaWYKIAotc3RhdGljIFJlZjxEb2N1bWVudEZy
YWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJhbWUsIERv
Y3VtZW50JiBkb2N1bWVudCwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkU2l6ZSkKK3N0YXRpYyBS
ZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQoRnJh
bWUmIGZyYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBw
cmVmZXJyZWRTaXplKQogewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgYXV0
byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjph
dHRhY2htZW50VGFnLCBkb2N1bWVudCk7CkBAIC0zMDksNyArMzA5LDcgQEAgc3RhdGljIHZvaWQg
cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRG
cmFnbWVudCYgZnIKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8mIHJlc291
cmNlID0gcmVzb3VyY2VFbnRyeS0+dmFsdWU7Ci0gICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1p
bWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkgfSk7CisgICAgICAgIHNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2Ut
Pm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICB9
CiAKICAgICBpZiAoIXNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5pc0VtcHR5KCkpCkBAIC0zMzIs
NyArMzMyLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRz
KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNF
bXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJtZWRpYSJfczsKIAotICAgICAgICBhdHRhY2ht
ZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUt
Pm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBpbWFnZSB9KTsKKyAgICAgICAg
YXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2Ut
PnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpLCBpbWFnZSB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IGRlc2NlbmRh
bnRzT2ZUeXBlPEhUTUxPYmplY3RFbGVtZW50PihmcmFnbWVudCkpIHsKQEAgLTM1MCw3ICszNTAs
NyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICBuYW1lID0gImZpbGUiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2Vy
dGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlw
ZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgb2JqZWN0IH0pOworICAgICAgICBhdHRhY2ht
ZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUt
Pm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIG9i
amVjdCB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGluZm8gOiBhdHRhY2htZW50SW5zZXJ0
aW9uSW5mbykgewpAQCAtNDI4LDcgKzQyOCw3IEBAIHN0cnVjdCBNYXJrdXBBbmRBcmNoaXZlIHsK
ICAgICBSZWY8QXJjaGl2ZT4gYXJjaGl2ZTsKIH07CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1h
cmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1F
VHlwZUFzSFRNTCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJh
Y3RNYXJrdXBBbmRBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
c3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwp
CiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFVSTCgpLCBi
dWZmZXIpOwogICAgIGlmICghYXJjaGl2ZSkKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFy
ZWRCdWZmZXImIGJ1ZgogICAgIGlmICghY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUg
eyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291
cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hp
dmUucmVsZWFzZU5vbk51bGwoKSB9OworICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3Ry
aW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9u
TnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBz
YW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0
aW9uRG9jdW1lbnQsIE1hcmt1cEFuZEFyY2hpdmUmIG1hcmt1cEFuZEFyY2hpdmUsIE1TT0xpc3RR
dWlya3MgbXNvTGlzdFF1aXJrcywgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmlu
Zyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIFN0
cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRl
c3RpbmF0aW9uRG9jdW0KICAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwo
c3ViZnJhbWVVUkwpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgTWFya3VwQW5k
QXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWlu
UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6
ZSgpKSwKKyAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmlu
Zzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKICAgICAgICAg
ICAgIHN1YmZyYW1lTWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIHN1YmZyYW1lQXJjaGl2
ZS5jb3B5UmVmKCkgfTsKICAgICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFy
a3VwV2l0aEFyY2hpdmUoZnJhbWUsIGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVu
dCwgTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQsIGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKQEAg
LTQ5Nyw3ICs0OTcsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUo
RnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgIHJldHVybiBzYW5p
dGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1lbnQoV1RGTW92ZShmcmFnbWVudCksICpzdGFn
aW5nRG9jdW1lbnQsIG1zb0xpc3RRdWlya3MsIG1hcmt1cEFuZEFyY2hpdmUubWFya3VwKTsKIH0K
IAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1J
TUVUeXBlRm9ySW1hZ2VzKCkgfHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTUzMiw3ICs1MzIsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJB
cmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MTIsMTIgKzYxMiwxMiBAQCBib29sIFdlYkNvbnRl
bnRNYXJrdXBSZWFkZXI6OnJlYWRIVE1MKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHJldHVy
biAhbWFya3VwLmlzRW1wdHkoKTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRG
RChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChmcmFtZS5zZXR0aW5n
cygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgfHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmli
dXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHRO
UyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0
cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhm
cmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC02MjYsMTEgKzYyNiwxMSBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRS
VEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdl
YkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9v
bCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFs
bG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0
cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0
byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcu
Z2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYz
OSwxMiArNjM5LDEyIEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJl
YWRlcjo6cmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYg
KGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1l
bnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAg
IGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3Ry
aW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC02NTMsMTEgKzY1MywxMSBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1h
cmt1cFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVu
dE1hcmt1cFJlYWRlcjo6cmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
YXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxw
dHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBj
cmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBp
ZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NzYsNyArNjc2LDcgQEAg
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2Uo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0
aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVy
OjpyZWFkSW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkK
IHsKICAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAq
ZnJhbWUuZG9jdW1lbnQoKTsKQEAgLTc0Niw3ICs3NDYsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKICAgICByZXR1cm4gYXR0YWNobWVudDsKIH0KIAotc3RhdGljIFJlZjxI
VE1MRWxlbWVudD4gYXR0YWNobWVudEZvckRhdGEoRnJhbWUmIGZyYW1lLCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQ
cmVzZW50YXRpb25TaXplIHByZWZlcnJlZFNpemUpCitzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBh
dHRhY2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVz
ZW50YXRpb25TaXplIHByZWZlcnJlZFNpemUpCiB7CiAgICAgUmVmIGRvY3VtZW50ID0gKmZyYW1l
LmRvY3VtZW50KCk7CiAgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50
OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1bWVudCk7CkBAIC04MzMsNyAr
ODMzLDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRl
bnRSZWFkZXI6OnJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQ
cmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUp
CiB7CiAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAK
aW5kZXggNjA0ODZlNzFhZDU5ZmVjYzcxNWZmMGEwOWIxYzM1NThiN2IzNDJjMi4uZDNlOTgxOWJk
NTMxZjg0ODZhMzE3YWI5ZjllZDgzYTk4ODViZTJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKQEAgLTcxLDcgKzcxLDcgQEAg
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2Uo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0
aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVy
OjpyZWFkSW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkK
IHsKICAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAq
ZnJhbWUuZG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
Yi5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKaW5kZXggNDVkOTMzZTEzY2E0ZDIy
NTFjNWRlZDg0OGFhOWU5ODcyYzc2NzQ4OS4uYmNhNjY5NmViZTZmMGVkZGRkZWU3OWI3M2MzZWUx
NDQ5NmQ4MmZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3Mg
QmxvYkxvYWRlcjsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFt
OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBF
eGNlcHRpb25PcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3Jr
U2VuZFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5j
cHAKaW5kZXggNTU5ZWJjYzQ4YzVmMDk2YWMxOWJhZTdkOWY3MThiNzFmMmEzNTMyMi4uNDJmNDE4
MGRmYTg0MjdlMGU2MGY4MWViNzliMTkxODdjYWZkYmExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgTmV0d29y
a1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKCkKICAgICAgICAgYm9vbCBzaG91bGRTdG9wUHJv
Y2Vzc2luZyA9IGZhbHNlOwogICAgICAgICBzd2l0Y2hPbihtX3F1ZXVlLmZpcnN0KCksIFt0aGlz
XShjb25zdCBDU3RyaW5nJiB1dGY4KSB7CiAgICAgICAgICAgICBtX3dyaXRlU3RyaW5nKHV0Zjgp
OwotICAgICAgICB9LCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKKyAgICAgICAg
fSwgW3RoaXNdKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgZGF0YSkgewogICAgICAgICAg
ICAgZGF0YS0+Zm9yRWFjaFNlZ21lbnQobV93cml0ZVJhd0RhdGEpOwogICAgICAgICB9LCBbdGhp
cywgJnNob3VsZFN0b3BQcm9jZXNzaW5nXShVbmlxdWVSZWY8QmxvYkxvYWRlcj4mIGxvYWRlcikg
ewogICAgICAgICAgICAgYXV0byBlcnJvckNvZGUgPSBsb2FkZXItPmVycm9yQ29kZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaAppbmRleCA1NTFmNzBmOTE2N2Iy
YmZjYjI0NGJiMmIzNzAwYmZiYWFmNTQ3OTZjLi5kMjNjZmViYjQ1MDhiYzMwMDkxNWJiOTk2ZDNm
MTUwNjJjZTM1MDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtT
ZW5kUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUu
aApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CiBj
bGFzcyBCbG9iTG9hZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTmV0d29ya1NlbmRRdWV1ZSA6IHB1
YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CkBAIC02Myw3ICs2Myw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzTWVzc2FnZXMoKTsKIAotICAg
IHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnZhcmlhbnQ8Q1N0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4s
IFVuaXF1ZVJlZjxCbG9iTG9hZGVyPj47CisgICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFu
dDxDU3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIFVuaXF1ZVJlZjxCbG9iTG9h
ZGVyPj47CiAgICAgRGVxdWU8TWVzc2FnZT4gbV9xdWV1ZTsKIAogICAgIFdyaXRlU3RyaW5nIG1f
d3JpdGVTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2ht
ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5jcHAKaW5kZXggNTZhMDZmY2FmMjczZDI1ZGM0Yzc1ZGNlNTY5YWFjOGYxYWE1OTUyNy4uZDJi
ODc0MWEwNDQzNDJjN2ZmZDllOGE1MzNjYzhhMTIwZTI5YmFkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIHN0
YXRpYyBib29sIG1pbWVUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdlQXR0YWNobWVudChjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBv
cnRlZEltYWdlTUlNRVR5cGUobWltZVR5cGUpIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGTUlN
RVR5cGUobWltZVR5cGUpOwogfQogCi12b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRl
RW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVF
bmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBhdXRvKiBob3N0RWxlbWVudCA9
IHNoYWRvd0hvc3QoKTsKICAgICBpZiAoIWlzPEhUTUxJbWFnZUVsZW1lbnQ+KGhvc3RFbGVtZW50
KSB8fCAhYnVmZmVyLT5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuaAppbmRleCA1NzNlYzJlYWUxY2RjMDYwOWYyNjFjMzg0MDBiYjAyYzQ4MGY3YmRk
Li42NjFkZWM5Mzc2ZDhhOWQ2ZDQ3MTdmZDBiNGNlN2Y4MmZmMDNmNzU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xh
c3MgRmlsZTsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJBdHRhY2htZW50
OwogY2xhc3MgU2hhcmVhYmxlQml0bWFwOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVtZW50IGZpbmFs
IDogcHVibGljIEhUTUxFbGVtZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEhUTUxB
dHRhY2htZW50RWxlbWVudCk7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNv
cHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYpIGZpbmFs
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVBdHRyaWJ1dGVzKHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+JiYgbmV3RmlsZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudFR5cGUs
IGNvbnN0IFN0cmluZyYgbmV3RmlsZW5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBk
YXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlRW5j
bG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0
ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwpOwogCiAgICAgSW5zZXJ0
ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwg
Q29udGFpbmVyTm9kZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggNTE3MWI5Y2RjNzg5MzE3MWUyMWU1ZjRiZjU1MDE3ZWY5NDRhYzc5NS4uMWE1
NmJjMDM1OWNjZTFmNTBkY2RkYTA2NTIyMmEwMTA5NWE2OTA1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yOTM4LDcgKzI5MzgsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3Nhcnko
KQogICAgIGF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKTsKIH0KIAotdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJl
Y2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRp
YWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBtZWRpYVBsYXllckluaXRp
YWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhVHlwZSwgaW5pdERhdGEtPnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApp
bmRleCA2OTU2Njk0OTYzMTBlZjkxMDhiOTU2ZmRhNDgyMTQzMDE0OTcwZWNiLi42YzNiNjkzYjdi
MTBlZGEzMGU1MWQ0YzY2MzFiZTNmYjUwY2JmODBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaApAQCAtNzIwLDcgKzcyMCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDRE1D
bGllbnQKICAgICB2b2lkIGNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3Nh
cnkoKSBmaW5hbDsKLSAgICB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25E
YXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7Cisg
ICAgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNv
bnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCA0NDJkMDk0
NmJlMjUwZGNjZjU5MjdiYWE5Mjc5M2E3MGVlOTE5MzNlLi4wMGQ4ZjIzOWQ3MTI3YzYxY2FlMWI1
OGQ5YzRhMzAzYTliM2M5MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAK
QEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OnVwZGF0ZUR1cmluZ1BhcnNp
bmcoKQogICAgIGlmICghbV9pbWFnZUVsZW1lbnQpCiAgICAgICAgIGNyZWF0ZURvY3VtZW50U3Ry
dWN0dXJlKCk7CiAKLSAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbG9hZGVy
KCktPm1haW5SZXNvdXJjZURhdGEoKSkKKyAgICBpZiAoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCkpCiAgICAgICAgIG1f
aW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpLT51cGRhdGVCdWZmZXIoKmJ1ZmZlcik7CiAKICAg
ICBpbWFnZVVwZGF0ZWQoKTsKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6
OmZpbmlzaGVkUGFyc2luZygpCiB7CiAgICAgaWYgKCFwYXJzZXIoKS0+aXNTdG9wcGVkKCkgJiYg
bV9pbWFnZUVsZW1lbnQpIHsKICAgICAgICAgQ2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlID0gKm1f
aW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICAgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgp
OwogCiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBtdWx0aXBhcnQgaW1hZ2UsIG1ha2UgYSBjb3B5
IG9mIHRoZSBjdXJyZW50IHBhcnQsIHNpbmNlIHRoZSByZXNvdXJjZSBkYXRhCiAgICAgICAgIC8v
IHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIG5leHQgcGFydC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYTdj
YTcxNjJkNzkxZWQ3ZmJhOGNjOTFjMjFhMmNmM2FmNmU2OWE3ZS4uMTg3OTNmZjA2NjMzOGZiNjBh
MzRkZWM5MDliYzJkZGQyOGJlYWZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTg1MCw3ICs4NTAsNyBAQCB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bQogICAgICAgICBuZXR3b3JrQWdlbnQtPmludGVyY2VwdFJl
cXVlc3QobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVy
KQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29y
a0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCiAgICAg
ICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVzcG9uc2UocmVzcG9uc2UsIGlkZW50aWZpZXIs
IFdURk1vdmUoaGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDhlNjVjNGViMTAyMzM1MjFmNDhjN2Y0YjEy
MGFkMmM4OTA5YTA3YmEuLmQyOTU3ODEwZDgzODJjOTM1MWQ1YTkzZjE0NGFlZDE0OTNiY2M2NTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNo
YWRvd1Jvb3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogY2xhc3MgVGltZXJCYXNlOwogY2xhc3MgV2ViS2l0TmFtZWRGbG93OwogY2xhc3MgV2Vi
U29ja2V0Q2hhbm5lbDsKQEAgLTIzNiw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZy
YW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2Vw
dFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFt
ZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3Qg
RnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3Nh
Z2VUb0NvbnNvbGUoUGFnZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPik7CiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdl
Pik7CkBAIC00NDEsNyArNDQxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJ
bnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGlj
IHZvaWQgaW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlc291cmNl
TG9hZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJik7Ci0gICAg
c3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0aWMgdm9pZCBh
ZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgc3RkOjp1bmlxdWVf
cHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKIApAQCAtMTI4OSw3ICsxMjg5LDcgQEAg
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KFJl
c291cmNlTG9hZGVyJiBsb2FkZXIsIEYKICAgICAgICAgaW50ZXJjZXB0UmVxdWVzdEltcGwoKmFn
ZW50cywgbG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYgZnJhbWUs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCitpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFt
ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAg
ICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9u
c2UoZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAgaWYgKGF1dG8qIGFnZW50cyA9IGluc3RydW1lbnRp
bmdBZ2VudHMoZnJhbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcAppbmRleCA2MWU0YmMzYmEwMTll
ZTI1ZTVjOGJjMjIxZGZmNjA3N2VkZGI4NjNkLi5mMDY0MDNhNjIzNGI0MmI2YWQyYTgwYjAxOTRh
NTk2ZDg5ZjZlNmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcApAQCAtNDUsNyArNDUsNyBAQCB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdEludGVy
bmFsKFJlc291cmNlTG9hZGVyJiBsbwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50
ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25z
dCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2VJbnRl
cm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJj
ZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25XZWJLaXQuaAppbmRleCBmNzYxMTRjZTk4ZjQyYTdmZjkwNmE0OGQwNDIw
Yjk2MzA1ZDM2OTE0Li4wN2I0MjFiNTljMTU1NWUxYTI5MWUxOGViYjI2MjIxMjJmMTY1OGIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbldlYktpdC5oCkBAIC0zNiwyMCArMzYsMjAgQEAgY2xhc3MgRnJhbWU7CiBjbGFz
cyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJL
aXQgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3QoY29u
c3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91
bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiwgRnVu
Y3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJik7Ci0gICAgc3RhdGljIHZvaWQg
aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0YXRpYyB2
b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7
CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdEludGVy
bmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJv
b2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW50ZXJu
YWwoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
PiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZy
YW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZUludGVy
bmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiB9OwogCiBpbmxpbmUgYm9v
bCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3Qo
Y29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCkBAIC03
Niw3ICs3Niw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6
aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYgbG9hCiAgICAgaW50ZXJjZXB0UmVxdWVz
dEludGVybmFsKGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLWlubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJh
bWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQoraW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShj
b25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4m
JiBoYW5kbGVyKQogewogICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6
OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGZyYW1lLCByZXNwb25zZSkpOwogICAgIGludGVyY2Vw
dFJlc3BvbnNlSW50ZXJuYWwoKmZyYW1lLCByZXNwb25zZSwgaWRlbnRpZmllciwgV1RGTW92ZSho
YW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmNwcAppbmRleCA2NzdjNWI4MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjcz
Li5mMzJmNjYwYjkxNzNiYWU4ZDVjZDlhMTMwZWFlNThiOTdkNWVjZTg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ3LDYg
KzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50
U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3Qg
U3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1f
bG9hZGVySWQobG9hZGVySWQpCisgICAgLCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2lnbmVkIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIGlm
IChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAgICAgICBy
ZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gbnVs
bHB0cjsKKyAgICAgICAgbV9kYXRhQnVmZmVyLT5yZXNldCgpOwogICAgIH0KIAogICAgIGlmICho
YXNDb250ZW50KCkpIHsKQEAgLTgxLDM2ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpldmljdENvbnRlbnQoKQogICAgIHJldHVybiByZW1vdmVD
b250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
aGFzRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVsbCgpOwor
fQorCiBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0
aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6
ZSgpIDogMDsKKyAgICByZXR1cm4gbV9kYXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZvaWQgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7
Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRh
QnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLT5hcHBl
bmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFz
Q29udGVudCgpKTsKIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXpl
KCk7CisgICAgYXV0byBidWZmZXIgPSBtX2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYg
KG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAg
bV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPmRhdGEo
KSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2goYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29k
ZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9j
b250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgp
OwogICAgIH0KIAotICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9j
b250ZW50LnNpemVJbkJ5dGVzKCkgLSBkYXRhTGVuZ3RoOwogfQogCkBAIC0yNjcsNyArMjY5LDcg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQsIENhY2hlZFJlc28KICAgICByZXNvdXJjZURhdGEtPnNldENhY2hlZFJl
c291cmNlKGNhY2hlZFJlc291cmNlKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCit2
b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCiB7CiAgICAgUmVzb3VyY2VEYXRhKiBy
ZXNvdXJjZURhdGEgPSByZXNvdXJjZURhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElkKTsKICAgICBp
ZiAoIXJlc291cmNlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmgKaW5kZXggZWZhMDAwNTNhZTExN2E1NGRmYjEyNmQxMmY5YWJlZTdkYTU5
MDhkNy4uZWUzOTQ1N2Y3NjcyZWFjYWFjOTBhNWI2YmM4ODExMDhjYmRhOGE4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlIDx3dGYv
RGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVS
ZWYuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtNDAsNyArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBD
YWNoZWRSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0UmVzb3Vy
Y2VEZWNvZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTg4LDggKzkwLDggQEAg
cHVibGljOgogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlcigpIGNv
bnN0IHsgcmV0dXJuIG1fZGVjb2Rlci5jb3B5UmVmKCk7IH0KICAgICAgICAgdm9pZCBzZXREZWNv
ZGVyKFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiYmIGRlY29kZXIpIHsgbV9kZWNvZGVyID0g
V1RGTW92ZShkZWNvZGVyKTsgfQogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmNvcHlSZWYoKTsgfQotICAgICAgICB2b2lkIHNl
dEJ1ZmZlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2J1ZmZlciA9IFdURk1v
dmUoYnVmZmVyKTsgfQorICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuY29weVJlZigpOyB9CisgICAgICAgIHZvaWQg
c2V0QnVmZmVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2J1
ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsgfQogCiAgICAgICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
Q2VydGlmaWNhdGVJbmZvPiYgY2VydGlmaWNhdGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0
aWZpY2F0ZUluZm87IH0KICAgICAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZUluZm8oY29uc3Qgc3Rk
OjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8pIHsgbV9jZXJ0aWZp
Y2F0ZUluZm8gPSBjZXJ0aWZpY2F0ZUluZm87IH0KQEAgLTEwMywxMCArMTA1LDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBt
X3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQgc2V0UmVzcG9uc2VUaW1lc3RhbXAo
V2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGltZTsgfQogCi0gICAgICAg
IGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9Cisg
ICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gaGFzRGF0YSgpOyB9
CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiBt
X2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CiAgICAgICAgIHNp
emVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVkIGRlY29k
ZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw4ICsxMjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIFN0
cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAg
ICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fYnVmZmVyOworICAgICAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9k
YXRhQnVmZmVyOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRl
SW5mbzsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fY2FjaGVkUmVzb3VyY2UgeyBudWxscHRy
IH07CiAgICAgICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIG1fdHlwZSB7IElu
c3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSB9OwpAQCAtMTQ0LDcgKzE0Niw3IEBAIHB1
YmxpYzoKICAgICBSZXNvdXJjZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCk7CiAgICAgdm9pZCBtYXliZURlY29kZURhdGFUb0NvbnRlbnQoY29uc3QgU3RyaW5nJiByZXF1
ZXN0SWQpOwogICAgIHZvaWQgYWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0
SWQsIENhY2hlZFJlc291cmNlKik7Ci0gICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3Ry
aW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKKyAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVy
KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKICAgICBSZXNvdXJjZURhdGEgY29u
c3QqIGRhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogICAgIFJlc291cmNlRGF0YSBjb25z
dCogZGF0YUZvclVSTChjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVt
b3ZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRl
eCA0NGUwODRhMjg4NDJmYmM1NjI4OTM3NjFkNzFlNGM3NDI3NGViYjE4Li4xODlmMjZiMDk4Yjcz
NjFkY2Y4ZTlkNjRlMzU5ZTc1ZmQ5YzA5NzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xMTQw
LDcgKzExNDAsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVz
dChSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBGdW5jdGlvbjx2bwogICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyLT5yZXF1ZXN0SW50ZXJjZXB0ZWQocmVxdWVzdElkLCBidWlsZE9iamVjdEZvclJlc291
cmNlUmVxdWVzdChsb2FkZXIucmVxdWVzdCgpKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29y
a0FnZW50OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBo
YW5kbGVyKQordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEFT
U0VSVChtX2VuYWJsZWQpOwogICAgIEFTU0VSVChtX2ludGVyY2VwdGlvbkVuYWJsZWQpOwpAQCAt
MTI0Myw3ICsxMjQzLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9y
TmV0d29ya0FnZW50OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UoY29uc3QKICAgICAgICAgb3ZlcnJp
ZGVSZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBl
LCBvdmVycmlkZVJlc3BvbnNlLm1pbWVUeXBlKCkpOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG92ZXJyaWRlRGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gb3ZlcnJpZGVEYXRhOwogICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CiAgICAgICAgIGF1dG8g
YnVmZmVyID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKQEAg
LTEyNzEsNyArMTI3MSw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zCiAgICAgaWYgKGxvYWRl
ci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KCJVbmFibGUgdG8gZnVsZmlsbCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3Nl
ZCJfcyk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CiAgICAg
ICAgIGF1dG8gYnVmZmVyID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQpOwogICAgICAgICBpZiAoIWJ1
ZmZlcikKQEAgLTE0MDcsMTIgKzE0MDcsMTIgQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkKICAg
ICAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQocmVzb3Vy
Y2UubWltZVR5cGUoKSkpIHsKICAgICAgICAgICAgIGF1dG8gZGVjb2RlciA9IEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIocmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3Vy
Y2UucmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCkpOwogICAgICAgICAgICAgKmJhc2U2NEVu
Y29kZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgKnJlc3Vs
dCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQogCiAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJh
c2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAg
ICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuaAppbmRleCA4ZjZmYmNjMjkzYWViZjhiOWQ1Yzk0NWQyODI5YTE1Mjdi
NzRiYzdmLi42YmNkODdkZGNkOGIwNDQxMzA4ZDFkMDFlY2E2YjBlNmRhMTQxM2Q0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmgKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB3aWxsSW50ZXJj
ZXB0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVx
dWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBib29sIHNob3VsZEludGVyY2VwdFJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGludGVyY2VwdFJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+KT4mJik7CisgICAgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4pPiYmKTsKICAgICB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5j
dGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKIAogICAgIHZvaWQgc2VhcmNo
T3RoZXJSZXF1ZXN0cyhjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiwgUmVmPEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKTsK
QEAgLTE4NSw3ICsxODUsNyBAQCBwcml2YXRlOgogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpOwogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBwdWJsaWM6Ci0gICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiBvcmlnaW5hbFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiBvcmlnaW5hbFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICAgICAgOiBtX29yaWdpbmFsUmVzcG9uc2Uo
b3JpZ2luYWxSZXNwb25zZSkKICAgICAgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgeyB9CkBAIC0yMDIsNyArMjAyLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIHJlc3BvbmQobV9vcmlnaW5hbFJlc3BvbnNlLCBudWxscHRy
KTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcmVzcG9uZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSkKKyAgICAgICAgdm9pZCBy
ZXNwb25kKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gZGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCFtX3Jl
c3BvbmRlZCk7CiAgICAgICAgICAgICBpZiAobV9yZXNwb25kZWQpCkBAIC0yMTUsNyArMjE1LDcg
QEAgcHJpdmF0ZToKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9v
cmlnaW5hbFJlc3BvbnNlOwotICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+IG1fY29tcGxldGlvbkhhbmRs
ZXI7CisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+IG1fY29tcGxldGlvbkhhbmRsZXI7
CiAgICAgICAgIGJvb2wgbV9yZXNwb25kZWQgeyBmYWxzZSB9OwogICAgIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cAppbmRleCAzZGFmZTY0MzdkZjEyMTA0MDVmZWZiZjM3NTc4NWZlY2Q1ZWFjNDcyLi4xYjY0NmFh
MjE3M2FiNTRhM2YxYWJkY2I1MDIwNGFkZTk4YzA3M2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0xMDAs
MTUgKzEwMCwxNSBAQCBzdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29uc3QgdWludDhfdCogYnVm
ZmVyLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleAogCiBib29sIEluc3BlY3RvclBh
Z2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2
NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEo
KTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdl
bnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRv
Y3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0
dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2Rpbmco
KSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAotYm9vbCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJp
bmcqIHJlc3VsdCkKK2Jvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50
KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQog
ewotICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxw
dHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJh
c2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXIt
PnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7
CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJv
b2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCkBAIC0xNTYsNyArMTU2LDcgQEAg
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudChQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBGcmEKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAg
aWYgKGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsLCBsb2FkZXItPnVybCgpKSkg
ewogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggYjUxYWRkYjFi
ZDhmMmNjZTY5NTYwNzk5Y2QxZDk1MmQyZGU0MjgzOC4uM2Q1ZTU2NmRiZTBjNWVjMTFkOWU4ZGY2
N2ZjZjBhNzA5ODhhMmY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIEluc3Bl
Y3RvckNsaWVudDsKIGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBQYWdlOwogY2xhc3Mg
UmVuZGVyT2JqZWN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50IGZpbmFsIDogcHVibGljIEluc3Bl
Y3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUGFnZUFnZW50KTsKQEAg
LTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgICAgICBPdGhlclJlc291cmNlLAogICAgIH07CiAK
LSAgICBzdGF0aWMgYm9vbCBzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2Rl
LCBTdHJpbmcqIHJlc3VsdCk7CisgICAgc3RhdGljIGJvb2wgc2hhcmVkQnVmZmVyQ29udGVudChS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rp
bmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKICAgICBzdGF0
aWMgVmVjdG9yPENhY2hlZFJlc291cmNlKj4gY2FjaGVkUmVzb3VyY2VzRm9yRnJhbWUoRnJhbWUq
KTsKICAgICBzdGF0aWMgdm9pZCByZXNvdXJjZUNvbnRlbnQoSW5zcGVjdG9yOjpQcm90b2NvbDo6
RXJyb3JTdHJpbmcmLCBGcmFtZSosIGNvbnN0IFVSTCYsIFN0cmluZyogcmVzdWx0LCBib29sKiBi
YXNlNjRFbmNvZGVkKTsKICAgICBzdGF0aWMgU3RyaW5nIHNvdXJjZU1hcFVSTEZvclJlc291cmNl
KENhY2hlZFJlc291cmNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAK
aW5kZXggYjRlNmEzYTUzYjRjMGMwZGExYzMxNzJkZDQyY2FlNmE4Y2QyMWY3YS4uNmFlNTI2NTk3
Y2QyODYzMWJlNzk1MGZjMzM1MzZmOGYzNDdkN2FmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b250ZW50RmlsdGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6
ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJU
KG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVm
ZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAg
aWYgKGF1dG8qIHJlc291cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAg
ICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VC
dWZmZXItPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50
LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMg
Y29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBDb250
ZW50RmlsdGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogewogICAgIEFTU0VSVCh3aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZShlcnJvcikpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhIHsg
bV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXItPnJlcGxhY2VtZW50RGF0YSgpIH07CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSB7IG1fYmxvY2tpbmdDb250
ZW50RmlsdGVyLT5yZXBsYWNlbWVudERhdGEoKSB9OwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2UgeyBVUkwoKSwgInRleHQvaHRtbCJfcywgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihyZXBs
YWNlbWVudERhdGEtPnNpemUoKSksICJVVEYtOCJfcyB9OwogICAgIFN1YnN0aXR1dGVEYXRhIHN1
YnN0aXR1dGVEYXRhIHsgV1RGTW92ZShyZXBsYWNlbWVudERhdGEpLCBlcnJvci5mYWlsaW5nVVJM
KCksIHJlc3BvbnNlLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpI
aWRkZW4gfTsKICAgICBTZXRGb3JTY29wZTxib29sPiBsb2FkaW5nQmxvY2tlZFBhZ2UgeyBtX2lz
TG9hZGluZ0Jsb2NrZWRQYWdlLCB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAppbmRleCBjM2Q4NDUwZjcxYzJjMzczZDJhZjFjY2NmYjIxNWFkODFiZjgwZDBi
Li4zYjkwZWY0YzU4MjdlNmMwYjQ5YjM0NjU2YjNjZDcxYThlZGE5NjlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCBEb2N1bWVu
dExvYWRlcjo6fkRvY3VtZW50TG9hZGVyKCkKICNlbmRpZgogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEoKSBj
b25zdAogewogICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuIG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5jb3B5KCk7CkBAIC0xNjA4LDExICsxNjA4
LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRk
QWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNoaXZlKTsKICAgICBBU1NFUlQobV9hcmNoaXZlLT5t
YWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYgbWFpblJlc291cmNlID0gKm1fYXJjaGl2ZS0+bWFp
blJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0
YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSBtYWluUmVzb3VyY2UuZGF0YSgpLm1ha2VD
b250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVU
eXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERh
dGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgp
KTsKKyAgICBjb21taXREYXRhKG1fcGFyc2VkQXJjaGl2ZURhdGEtPmRhdGEoKSwgbWFpblJlc291
cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiB9CkBAIC0xNjcx
LDcgKzE2NzEsNyBAQCBBcmNoaXZlUmVzb3VyY2UqIERvY3VtZW50TG9hZGVyOjphcmNoaXZlUmVz
b3VyY2VGb3JVUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAKIFJlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2UoKSBjb25zdAogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFk
YXRhKQogICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvJiBy
ZXNwb25zZSA9IHRoaXMtPnJlc3BvbnNlKCk7CkBAIC0yMjU1LDggKzIyNTUsOCBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKIAogICAg
IGZyYW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29tbWl0dGVkID0gZmFs
c2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNl
RGF0YSgpOwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5kYXRhKCksIHJlc291cmNlRGF0
YS0+c2l6ZSgpKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VE
YXRhID0gbWFpblJlc291cmNlRGF0YSgpOworICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9p
ZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCkBAIC0yMjkyLDcgKzIyOTIsNyBA
QCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKICAgICBtX2ZyYW1lLT5s
b2FkZXIoKS5jbGllbnQoKS5nZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhpY29uRGVjaXNpb25zKTsK
IH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29s
IGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9h
ZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gaWNvbiA9IG1faWNvbnNQZW5k
aW5nTG9hZERlY2lzaW9uLnRha2UobG9hZElkZW50aWZpZXIpOwogCkBAIC0yMzEzLDcgKzIzMTMs
NyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wg
ZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudAogICAgIHJhd0ljb25Mb2FkZXItPnN0YXJ0TG9h
ZGluZygpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmdJY29uKElj
b25Mb2FkZXImIGxvYWRlciwgU2hhcmVkQnVmZmVyKiBidWZmZXIpCit2b2lkIERvY3VtZW50TG9h
ZGVyOjpmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImIGxvYWRlciwgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogYnVmZmVyKQogewogICAgIC8vIElmIHRoZSBEb2N1bWVudExvYWRlciBoYXMg
ZGV0YWNoZWQgZnJvbSBpdHMgZnJhbWUsIGFsbCBpY29uIGxvYWRzIHNob3VsZCBoYXZlIGFscmVh
ZHkgYmVlbiBjYW5jZWxsZWQuCiAgICAgQVNTRVJUKG1fZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBmYmY1NDVjNDYwZTRlNDg5ZDg3YjI1YzBlODVlY2Nj
YTRjYmYzYzg3Li4zMzk4NzNkNWQzZmI5YmIzMDA0OThjZDZmMzdjYmY2NWI3OGFmNWI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFz
cyBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBj
bGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRGaWx0ZXI7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVyRmllbGRzOwogY2xhc3MgRm9ybVN0YXRl
OwogY2xhc3MgRnJhbWU7CkBAIC04Myw3ICs4NCw3IEBAIGNsYXNzIEljb25Mb2FkZXI7CiBjbGFz
cyBQYWdlOwogY2xhc3MgUHJldmlld0NvbnZlcnRlcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFNXQ2xpZW50Q29ubmVjdGlvbjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwogY2xhc3MgU3Vi
c3RpdHV0ZVJlc291cmNlOwpAQCAtMTcxLDcgKzE3Miw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNP
UkVfRVhQT1JUIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlcigpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIFN1YnJlc291cmNlTG9hZGVyKiBtYWluUmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IG1haW5SZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICAKICAgICBEb2N1bWVudFdyaXRlciYgd3Jp
dGVyKCkgY29uc3QgeyByZXR1cm4gbV93cml0ZXI7IH0KIApAQCAtMzkyLDggKzM5Myw4IEBAIHB1
YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBzdGFydEljb25Mb2FkaW5nKCk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVp
bnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZl
ciopPiYmKTsKLSAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYsIFNoYXJl
ZEJ1ZmZlciopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9y
SWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYpOworICAgIHZvaWQgZmluaXNo
ZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogCiAg
ICAgY29uc3QgVmVjdG9yPExpbmtJY29uPiYgbGlua0ljb25zKCkgY29uc3QgeyByZXR1cm4gbV9s
aW5rSWNvbnM7IH0KIApAQCAtNjIxLDcgKzYyMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3dh
aXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5IHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8dWludDY0
X3QsIExpbmtJY29uPiBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbjsKLSAgICBIYXNoTWFwPHN0
ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRC
dWZmZXIqKT4+IG1faWNvbkxvYWRlcnM7CisgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8SWNv
bkxvYWRlcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciop
Pj4gbV9pY29uTG9hZGVyczsKICAgICBWZWN0b3I8TGlua0ljb24+IG1fbGlua0ljb25zOwogCiAj
aWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuaAppbmRleCBlMTNlMjg2ZTE0ZjRmZThmZDdkZjkwYTBlMTUxZjA5MzQxOGRkZGIxLi4wOGEw
YWUxOWEzNzk4NDZmMTU3NTY0YzJkMGM4MzJiMjc0ODM2MDM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuaApAQCAtNTksNiArNTksNyBAQCBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBj
bGFzcyBDYWNoZWRQYWdlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDaHJvbWU7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEb2N1bWVu
dDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
IGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWludDhfdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNGZkNjM3YTkwMTRh
NWQ0MWEyMjZlZTQ1OTE3YjZiM2U5YTc5MGViYi4uZWU5ZjNkMGM5ODRkNDU1Y2JiOTFiNDYwYzFi
YzEyODk4ZDEyMzY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTk4LDcgKzk4LDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xh
c3MgU3Vic3RpdHV0ZURhdGE7CiBjbGFzcyBXaWRnZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xv
YWRlclN0cmF0ZWd5LmgKaW5kZXggYWVmNjY4YmQ2M2VkNWZjZDQ1ZTYxZTlkMWYxMDdjZmI2YWVm
MjY0Yi4uMjlkMmUzZjQ2MTQwYWFhNTExNjBlNmEyODU2MmYzNzBlMzcxZWIyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgUmVz
b3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiAKIHN0cnVj
dCBGZXRjaE9wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyLmNwcAppbmRleCA2MzM3NTU5NjMyMDAxNDYzODI4OWUyODI2MDRj
NTViMGFmNDQ1MzEzLi42MDQzYWM5YmUyNjdlYTRmYmM3MWUxMTE4YjkwNzkxNTVlMzkxNTAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlci5jcHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlCiAg
ICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWRE
YXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5
cGUpCit2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxl
bmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKIHsKICAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5oCmluZGV4IDQ4YmIyMTUzYzkzZjJkYzc1NGUyMDczMjI1MmMwNTA5Y2Y3
MDRhNDEuLmI1MTc0ZWRjOTRiOTkyMzkwMjA1ZjBmYWQ0NTJlYTVhYzM4Nzg5MzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBA
IC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKQEAgLTc0
LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiwgaW50LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAKICAgICB2b2lk
IG5vdGlmeURvbmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcAppbmRleCBjNjI3NzY4NThhNmRjNWFmZmQzNmRjOWU3
ODVjOGJkMjQ3MmJiNzRkLi5kOTRiNzAwMDc0MWNkOTEyYjkxNzNlMmIzNzQ2ZDRkYThiMzY4YTU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGlj
RGlnZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFw
aGljRGlnZXN0LmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yQnl0ZXMoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
CiAgICAgcmV0dXJuIHsgYWxnb3JpdGhtLCBjcnlwdG9EaWdlc3QtPmNvbXB1dGVIYXNoKCkgfTsK
IH0KIAotUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JT
aGFyZWRCdWZmZXIoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0gYWxnb3Jp
dGhtLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogYnVmZmVyKQogewogICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdl
c3Q6OmNyZWF0ZSh0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShhbGdvcml0aG0pKTsKICAgICBpZiAo
YnVmZmVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlw
dG9ncmFwaGljRGlnZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0LmgKaW5kZXggYWVhM2RjNTdjODc4MzEzMDEzYTViMTZjOTM5Yjc3NGVkNDg0
MzI0Yy4uODNiODYxM2NmZGEyMzI5YWUzMGJiZjZhYmMxNGI5OWQ0NDIzN2IwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaApA
QCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNv
dXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIHN0cnVjdCBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgewogICAgIGVudW0gY2xhc3Mg
QWxnb3JpdGhtIHsKQEAgLTc1LDcgKzc1LDcgQEAgc3RkOjpvcHRpb25hbDxFbmNvZGVkUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUVuY29kZWRDcnlwdG9ncmFwaGljRGlnZXMKIAog
c3RkOjpvcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IGRlY29kZUVuY29kZWRS
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QoY29uc3QgRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdCYpOwogCi1SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhp
Y0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29y
aXRobSwgY29uc3QgU2hhcmVkQnVmZmVyKik7CitSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Qg
Y3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3Q6OkFsZ29yaXRobSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhSZXNvdXJj
ZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29uc3Qgdm9pZCogYnl0ZXMsIHNpemVf
dCBsZW5ndGgpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApp
bmRleCBhYTg1YmI0ZDNjYTg3MTQ1YmI3YTg2ZjY0NjY4ZTQ5NTE3NmFjMjM1Li5kZjEzOTU4OGU4
ZDUyNTJiM2VlYzYxOTNhZTYxYWEyNDc4NmIyMTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTc2LDYgKzc2LDcgQEAgREVGSU5FX0FMTE9DQVRPUl9XSVRI
X0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRlcik7CiBSZXNvdXJjZUxvYWRlcjo6UmVzb3Vy
Y2VMb2FkZXIoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucykKICAg
ICA6IG1fZnJhbWUgeyAmZnJhbWUgfQogICAgICwgbV9kb2N1bWVudExvYWRlciB7IGZyYW1lLmxv
YWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkgfQorICAgICwgbV9yZXNvdXJjZURhdGEgeyBt
YWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9kZWZlcnNMb2Fk
aW5nIHsgb3B0aW9ucy5kZWZlcnNMb2FkaW5nUG9saWN5ID09IERlZmVyc0xvYWRpbmdQb2xpY3k6
OkFsbG93RGVmZXJzTG9hZGluZyAmJiBmcmFtZS5wYWdlKCktPmRlZmVyc0xvYWRpbmcoKSB9CiAg
ICAgLCBtX29wdGlvbnMgeyBvcHRpb25zIH0KIHsKQEAgLTExOCw3ICsxMTksNyBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKIAogICAgIG1faWRlbnRpZmllciA9IHsg
fTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICBtX3Jlc291cmNlRGF0YS0+
cmVzZXQoKTsKICAgICBtX2RlZmVycmVkUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwogfQog
CkBAIC0xODksNyArMTkwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6aW5pdChSZXNvdXJjZVJl
cXVlc3QmJiBjbGllbnRSZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2kKICAgICB9KTsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2
b2lkIFJlc291cmNlTG9hZGVyOjpkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7CiAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgaWYgKHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCkBAIC0zMTgsNyArMzE5LDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVy
aW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2wKIAogICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1
ZmZlcmVkIGRhdGEKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5n
UG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0
cjsKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OndpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSgpCkBAIC0zMjksMjkgKzMzMCwy
OSBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2Uo
KQogICAgICAgICBtX2hhbmRsZS0+Y2FuY2VsKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6
OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFNo
YXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9p
ZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmlu
Z1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmICghbV9yZXNvdXJjZURhdGEgfHwgZGF0YVBheWxvYWRUeXBlID09
IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkgewotICAgICAgICBpZiAoYnVmZmVyKQotICAgICAg
ICAgICAgbV9yZXNvdXJjZURhdGEgPSBidWZmZXI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1fcmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKKyAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERh
dGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7
CisKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZm
ZXIpOwogICAgIGVsc2UKICAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhLCBsZW5n
dGgpOwogfQogCitjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRlcjo6
cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZURhdGEtPmdldCgp
LmdldCgpOworfQorCiB2b2lkIFJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSgpCiB7
Ci0gICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+Y2xlYXIo
KTsKKyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhLT5pc051bGwoKSkKKyAgICAgICAgbV9yZXNvdXJj
ZURhdGEtPmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3VicmVzb3VyY2VM
b2FkZXIoKSBjb25zdApAQCAtNTUxLDE0ICs1NTIsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25n
IGwKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5j
b2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3Zv
aWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxs
cHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5
cGUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRh
dGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91
bGQgb25seSBnZXQgZGF0YStsZW5ndGggKk9SKiBhIFNoYXJlZEJ1ZmZlci4KKyAgICAvLyBUaGlz
IG1ldGhvZCBzaG91bGQgb25seSBnZXQgZGF0YStsZW5ndGggKk9SKiBhIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIuCiAgICAgQVNTRVJUKCFidWZmZXIgfHwgKCFkYXRhICYmICFsZW5ndGgpKTsKIAog
ICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlzIGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRk
aXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwpAQCAtNTcxLDcgKzU3Miw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQg
bmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8v
IENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29w
dGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJh
Y2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVj
ZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0
aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRo
aXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERh
dGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKQEAgLTczNSw3ICs3
MzYsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbgogICAgIGRpZFJlY2VpdmVEYXRhKGRhdGEs
IGxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwogfQogCi12b2lk
IFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBk
aWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkQnl0ZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRl
eCA0ZmQyYmYwYmJiM2IxYmQyMTU0NWRiNTJjMmUxY2E2NGVlNDJiOTE3Li41NGIxYjg2NmRmODk2
YTg0YjRjYTI5N2VlNDc2ZDZkMGI2NjFmZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5o
IgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTU1LDYgKzU2LDggQEAgY2xhc3Mg
RnJhbWU7CiBjbGFzcyBGcmFtZUxvYWRlcjsKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXI7CiBj
bGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwor
Y2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQ
X0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogY2xhc3MgUmVzb3VyY2VMb2FkZXIgOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMgUmVmQ291bnRlZDxSZXNv
dXJjZUxvYWRlcj4sIHByb3RlY3RlZCBSZXNvdXJjZUhhbmRsZUNsaWVudCB7CkBAIC02Niw3ICs2
OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBpbml0KFJlc291cmNlUmVxdWVzdCYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAotICAgIHZvaWQgZGVsaXZlclJl
c3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJik7CisgICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIHZpcnR1YWwgdm9pZCBzdGFydExvYWRpbmcoKQpAQCAtOTgsNyAr
MTAxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7CiAg
ICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jl
c3BvbnNlOyB9CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzb3VyY2VEYXRhLmdldCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhclJlc291cmNlRGF0YSgp
OwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3Q7CkBA
IC0xMDcsNyArMTEwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1
bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRl
c1RvQmVTZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxl
dGlvbkhhbmRsZXIpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVy
PiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKQEAgLTE2
Niw3ICsxNjksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIHdhc0NhbmNlbGxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FuY2VsbGF0aW9uU3RhdHVzID49IENhbmNlbGxlZDsgfQogCi0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90Kiwg
dW5zaWduZWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgCiAgICAgdm9pZCBzZXRSZWZl
cnJlclBvbGljeShSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSkgeyBtX29wdGlvbnMucmVm
ZXJyZXJQb2xpY3kgPSByZWZlcnJlclBvbGljeTsgfQogICAgIFJlZmVycmVyUG9saWN5IHJlZmVy
cmVyUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLnJlZmVycmVyUG9saWN5OyB9CkBA
IC0xOTEsNyArMTk0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENhbmNlbChj
b25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpID0gMDsKIAotICAgIHZvaWQgYWRkRGF0YU9yQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqLCB1bnNpZ25lZCwgU2hhcmVkQnVmZmVyKiwgRGF0YVBheWxvYWRUeXBlKTsKKyAg
ICB2b2lkIGFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIHZvaWQgbG9hZERhdGFVUkwo
KTsKICAgICB2b2lkIGZpbmlzaE5ldHdvcmtMb2FkKCk7CiAKQEAgLTIwMiw3ICsyMDUsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUq
LCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291
cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhh
bmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2FzQmxvY2tlZChSZXNv
dXJjZUhhbmRsZSopIG92ZXJyaWRlOwpAQCAtMjI3LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAKICAg
ICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdp
bmFsUmVxdWVzdDsgLy8gQmVmb3JlIHJlZGlyZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX3Jlc291cmNlRGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9y
ZXNvdXJjZURhdGE7CiAgICAgCiAgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggNDZjZWZiZGY5ZGExNzg5OTdlZGNiOWYzNTQ0ZjQ4ODRiNjBhNmVmZS4uMzdkMGJiODIxYWJk
ODZhOWI1NjA2ZTEyN2VmYzk0MTJhNTFiYjFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBTdWJyZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoLCBsb24KICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0
ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAjaWYgVVNFKFFVSUNLX0xPT0sp
CiAgICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewpA
QCAtNTQyLDcgKzU0Miw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlCiAgICAgZGlkUmVjZWl2
ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVu
Z3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIEFTU0VS
VChtX3Jlc291cmNlKTsKIApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgp
KQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/
IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgp
OworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDog
bGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmgKaW5kZXggMzcyM2I2YjlhYjlmZGRhYWE1NTc0YmZiMGU2ZjM4Y2VkN2FlZmI3NS4uODMy
YzlmMGU3M2QzODQ2NGE3OTVmNDAzODYwZjc5YzM0ZTczYmM3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVk
IGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIEV4
cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiBj
aGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcHJldmlvdXNSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VS
ZXF1ZXN0JiBuZXdSZXF1ZXN0KTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihj
b25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAK
ICAgICB2b2lkIG5vdGlmeURvbmUoTG9hZENvbXBsZXRpb25UeXBlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3Vic3RpdHV0ZURhdGEuaAppbmRleCBmNjYyOTJlMzFjYmViNDI2NDMwYTgzMmFkZWY0
Mjk5MWNiNTc0MzZlLi5hOGE0OWI0N2Y5MjczNDI3NGJhNGNlYWJjMTcwN2ZlZmE3YjY2NDBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaApAQCAtNDMsNyArNDMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFN1YnN0
aXR1dGVEYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgY29udGVudCwgY29uc3QgVVJMJiBmYWls
aW5nVVJMLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgU2Vzc2lvbkhpc3RvcnlW
aXNpYmlsaXR5IHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkpCisgICAgICAgIFN1YnN0aXR1
dGVEYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNvbnRlbnQsIGNvbnN0IFVS
TCYgZmFpbGluZ1VSTCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFNlc3Npb25I
aXN0b3J5VmlzaWJpbGl0eSBzaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KQogICAgICAgICAg
ICAgOiBtX2NvbnRlbnQoV1RGTW92ZShjb250ZW50KSkKICAgICAgICAgICAgICwgbV9mYWlsaW5n
VVJMKGZhaWxpbmdVUkwpCiAgICAgICAgICAgICAsIG1fcmVzcG9uc2UocmVzcG9uc2UpCkBAIC01
NCwxNCArNTQsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzVmFsaWQo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQgIT0gbnVsbHB0cjsgfQogICAgICAgICBib29sIHNo
b3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFJldmVh
bFRvU2Vzc2lvbkhpc3RvcnkgPT0gU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpWaXNpYmxlOyB9
CiAKLSAgICAgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBjb250ZW50KCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZW50LmdldCgpOyB9CisgICAgICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQuZ2V0KCk7IH0KICAgICAgICAgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UubWltZVR5cGUo
KTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOyB9CiAgICAgICAgIGNvbnN0IFVSTCYgZmFp
bGluZ1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFpbGluZ1VSTDsgfQogICAgICAgICBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0K
ICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9j
b250ZW50OworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9jb250ZW50
OwogICAgICAgICBVUkwgbV9mYWlsaW5nVVJMOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIG1f
cmVzcG9uc2U7CiAgICAgICAgIFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBtX3Nob3VsZFJldmVh
bFRvU2Vzc2lvbkhpc3RvcnkgeyBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OkhpZGRlbiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDU5NjY0YjU4
NTRmODViMDJjZGYzNDkwMjBhMGVmZjEzZWI3ODg4NzkuLmNmMmRlMGM2MmQ5NWYzMzI1YjQyYjQ2
ZTI0MDM3NzQ0MTA3NDJhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJl
c291cmNlLmgKQEAgLTM3LDEyICszNywxNCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVy
JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZl
cj4obV9kYXRhKTsgfQorICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oUmVm
IHsgKm1fZGF0YS5nZXQoKSB9KTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgpIHsgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9p
ZCBjbGVhcigpIHsgbV9kYXRhLmVtcHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVy
KFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEo
bV9yZXNwb25zZSwgbV9kYXRhLT5jb3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIo
UmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YSht
X3Jlc3BvbnNlLCBtX2RhdGEuY29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgU3Vic3RpdHV0
ZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGRhdGEpCisgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVybCwgUmVz
b3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKQogICAgICAgICA6IG1fdXJsKFdURk1vdmUodXJsKSkKICAgICAgICAgLCBtX3Jlc3BvbnNl
KFdURk1vdmUocmVzcG9uc2UpKQogICAgICAgICAsIG1fZGF0YShXVEZNb3ZlKGRhdGEpKQpAQCAt
NTIsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAgICBS
ZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRh
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCA4OWYzYjBmMWRjMzlkNDBhNTYzODc4YWU1NWY3
NmM2NzBhNzE1MDkxLi4wMzZlZmQyMGU0OTYzMDBjZjhjOWU3ZTc5MDMxN2UwMWRlNWJhZjM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcApAQCAtNjA1LDcgKzYwNSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNo
ZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QoKQogICAgICAgICB9CiAgICAgfQogICAg
IAotICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21h
bmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9t
YW5pZmVzdFJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEo
KS5zaXplKCkpOworICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5p
ZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5
cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOwogICAgIGlmICghbWFuaWZlc3Qp
IHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNI
RSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBvbmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVz
dCB0byBmYWlsLgogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpBcHBDYWNoZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0
aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0
aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggNjAzMjgxODg4Mzc1ZjQ0
YTYyNGIzZTNiM2FhZmUwNmEzNjg5MmVlNi4uNTE5NzhmNDEyMzg3NGRjNTY2MGVmZjQ3MDY1OTcw
N2Q0ZTVkODVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC0yNTUsMTAgKzI1NSw4IEBAIFVSTCBBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBhdGgpCiAKIHN0
YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAgLy8gRklYTUU6IENsaWVudHMg
cHJvYmFibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgLy8g
UmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2ls
bCBub3QgYmUgbW9kaWZpZWQuCiAgICAgaWYgKHJlc291cmNlLnBhdGgoKS5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkuY29weSgpOworICAgICAgICByZXR1cm4gcmVz
b3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CiB9CiAKQEAgLTI5MCw5
ICsyODgsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5
bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JgogICAgICAgICBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAgICAgICBpZiAoZ2V0QXBwbGljYXRpb25DYWNoZUZh
bGxiYWNrUmVzb3VyY2UocmVxdWVzdCwgcmVzb3VyY2UpKSB7CiAgICAgICAgICAgICByZXNwb25z
ZSA9IHJlc291cmNlLT5yZXNwb25zZSgpOwotICAgICAgICAgICAgLy8gRklYTUU6IENsaWVudHMg
cHJvYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAgICAg
ICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVm
ZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgotICAgICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5k
YXRhKCkuY29weSgpOworICAgICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNv
bnRpZ3VvdXMoKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggNTJjZDE2NDAz
YTE3MzZhNzE4NjU2NzcyNDg2MTFlMDhmNjYzYjI5Zi4uYjk2MzU2ZTc4NTYxMzg5NTZhZTRjMDU5
ODMxNzBjZGY3MjM2NzJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgQXBw
bGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOworY2xh
c3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIERvY3Vt
ZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0
dXRlRGF0YTsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3QgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmNwcAppbmRleCBmMWY3ZTE3NTYzMDE0NzFmMzA4NWRlZjhlNDFkYzVkMGNhOWQ2MDlhLi4yYmIz
ZmU3NWI5OTc3ZTgzMzIyYWUyNTgwZjcyMTJlZTViZjIxNjEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmNwcApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQg
dHlwZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkK
K1JlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6
Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
dW5zaWduZWQgdHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCF1cmwuaGFzRnJhZ21lbnRJZGVudGlm
aWVyKCkpOwogICAgIGlmICghYnVmZmVyKQpAQCAtNDAsNyArNDAsNyBAQCBSZWY8QXBwbGljYXRp
b25DYWNoZVJlc291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBV
UkwmIHVybCwgYwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZShVUkwgeyB1cmwgfSwgV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSwgdHlwZSwgYnVmZmVy
LnJlbGVhc2VOb25OdWxsKCksIHBhdGgpKTsKIH0KIAotQXBwbGljYXRpb25DYWNoZVJlc291cmNl
OjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBwYXRoKQorQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIHVuc2lnbmVk
IHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYg
cGF0aCkKICAgICA6IFN1YnN0aXR1dGVSZXNvdXJjZShXVEZNb3ZlKHVybCksIFdURk1vdmUocmVz
cG9uc2UpLCBXVEZNb3ZlKGRhdGEpKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3N0b3Jh
Z2VJRCgwKQpAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJgogCiB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVy
KQogewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0
aC5pc0VtcHR5KCkgPyBkYXRhKCkuY29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEo
cmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29udGlndW91cygpIDog
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZv
aWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5oCmluZGV4IDg4Yzk0ZGUxYTc3NDEwNDY5YzkzMWE0MmE0NzliMWU2Nzc3YTcw
MmUuLmMyODhlNzAzNmM2NzYyYWQ0ODc2YmE4ODE0NjlhNzVkMjIzN2UxYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgICAgICBGYWxsYmFjayA9IDEg
PDwgNAogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4g
Y3JlYXRlKGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCB0eXBl
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgY29uc3Qg
U3RyaW5nJiBwYXRoID0gU3RyaW5nKCkpOworICAgIHN0YXRpYyBSZWY8QXBwbGljYXRpb25DYWNo
ZVJlc291cmNlPiBjcmVhdGUoY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVu
c2lnbmVkIHR5cGUsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSwgY29uc3QgU3RyaW5nJiBwYXRoID0gU3RyaW5nKCkpOwogCiAgICAgdW5z
aWduZWQgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIHZvaWQgYWRkVHlwZSh1
bnNpZ25lZCB0eXBlKTsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgCiBw
cml2YXRlOgotICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiwgUmVzb3VyY2VSZXNw
b25zZSYmLCB1bnNpZ25lZCB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcm
IHBhdGgpOworICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiwgUmVzb3VyY2VSZXNw
b25zZSYmLCB1bnNpZ25lZCB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgU3RyaW5nJiBwYXRoKTsKIAogICAgIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFjNTA4NDdh
NmU4OTUxNzg5ZTNiM2ZiYWZkYTg1MTg2NjI5MGVlYjAuLjdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4
Yzk3YjhiNTA3NGM3MTI5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0xMDEsNyArMTAxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJl
c3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLAogCiB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS0+ZGF0YSgpLmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25D
YWNoZVJlc291cmNlLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBS
ZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcAppbmRleCAxYjMzYWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUyMGJkMzBlNjM2
NTk1Li44Y2YwNWNjZTE4ODAxMjhkZTU5YmU3MGE5OTgzNmY1YTc0NWI2ZDcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAKQEAgLTc4Myw3ICs3ODMsNiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAog
ICAgIGF1dG8gZGF0YVN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5T
RVJUIElOVE8gQ2FjaGVSZXNvdXJjZURhdGEgKGRhdGEsIHBhdGgpIFZBTFVFUyAoPywgPykiX3Mp
OwogICAgIGlmICghZGF0YVN0YXRlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAog
CiAgICAgU3RyaW5nIGZ1bGxQYXRoOwogICAgIGlmICghcmVzb3VyY2UtPnBhdGgoKS5pc0VtcHR5
KCkpCkBAIC04MTUsNyArODE0LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3Rv
cmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAg
ZGF0YVN0YXRlbWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
aWYgKHJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+
YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50
LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwog
ICAgIH0KICAgICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsK
QEAgLTg3MywxMiArODcyLDEyIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3Jl
KEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgCiAgICAg
aWYgKCFleGVjdXRlU3RhdGVtZW50KGVudHJ5U3RhdGVtZW50LnZhbHVlKCkpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICAvLyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5IHdyaXRlIHRo
ZSByZXNvdXJjZSBkYXRhIHRvIGEgZmlsZT8gSWYgc28sCiAgICAgLy8gcmVsZWFzZSB0aGUgcmVz
b3VyY2UncyBkYXRhIGFuZCBmcmVlIHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50CiAgICAg
Ly8gb2YgbWVtb3J5OgogICAgIGlmICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXNv
dXJjZS0+ZGF0YSgpLmNsZWFyKCk7CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwogCiAgICAg
cmVzb3VyY2UtPnNldFN0b3JhZ2VJRChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTEyNzMsNyArMTI3Miw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnNob3VsZFN0
b3JlUmVzb3VyY2VBc0ZsYXRGaWxlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvCiAgICAgcmV0dXJuIHN0
YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgImF1ZGlvLyIpIHx8IHN0YXJ0
c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgInZpZGVvLyIpOwogfQogICAgIAot
Ym9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJl
Y3RvcnkoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pCitib29sIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pCiB7CiAgICAgU3RyaW5nIGZ1bGxQYXRoOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuaAppbmRleCA5YTk1MzAwODc2NmE4ODg1NTYxYjM0ODg4OWI4Y2VkYTJi
MmViMzM4Li40MTAyYTE4MDhiNDU1NTdiNjQ1ZTM2ZTdlNjgxZmM0YzZkMjA3Y2UyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7
CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBTdG9yYWdl
SURKb3VybmFsOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSA6IHB1YmxpYyBSZWZD
b3VudGVkPEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlPiB7CkBAIC0xMjIsNyArMTIyLDcgQEAgcHJp
dmF0ZToKICAgICBib29sIGVuc3VyZU9yaWdpblJlY29yZChjb25zdCBTZWN1cml0eU9yaWdpbiop
OwogICAgIHN0YXRpYyBib29sIHNob3VsZFN0b3JlUmVzb3VyY2VBc0ZsYXRGaWxlKEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZSopOwogICAgIHZvaWQgZGVsZXRlVGFibGVzKCk7Ci0gICAgYm9vbCB3
cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBvdXRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlRXh0
ZW5zaW9uKTsKKyAgICBib29sIHdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBvdXRG
aWxlbmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKTsKIAogICAgIHZvaWQgbG9hZE1h
bmlmZXN0SG9zdEhhc2hlcygpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCmluZGV4IDZkZTgwYzEwYWM3ZDI1Y2YzNDY5ZjZkZWYw
ZmFmNzI0MWY1OTY0MjguLjRlZjljZDY2YmQwODhiNzRjMDQ2YzA2OTBkMWU5ZDNlNWUzMzYwZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5j
cHAKQEAgLTQ2LDEyICs0NiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYg
UmVmUHRyPEFyY2hpdmU+IFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKGNvbnN0IFVSTCYsIFNoYXJl
ZEJ1ZmZlciYpOwordHlwZWRlZiBSZWZQdHI8QXJjaGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rp
b24oY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogdHlwZWRlZiBIYXNoTWFw
PFN0cmluZywgUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24qLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+IEFyY2hpdmVNSU1FVHlwZXNNYXA7CiAKIC8vIFRoZSBjcmVhdGUgZnVuY3Rpb25zIGluIHRo
ZSBhcmNoaXZlIGNsYXNzZXMgcmV0dXJuIFJlZlB0ciB0byBjb25jcmV0ZSBzdWJjbGFzc2VzCiAv
LyBvZiBBcmNoaXZlLiBUaGlzIGFkYXB0b3IgbWFrZXMgdGhlIGZ1bmN0aW9ucyBoYXZlIGEgdW5p
Zm9ybSByZXR1cm4gdHlwZS4KLXRlbXBsYXRlPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGlj
IFJlZlB0cjxBcmNoaXZlPiBhcmNoaXZlRmFjdG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBBcmNoaXZlQ2xhc3M+IHN0YXRp
YyBSZWZQdHI8QXJjaGl2ZT4gYXJjaGl2ZUZhY3RvcnlDcmVhdGUoY29uc3QgVVJMJiB1cmwsIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gQXJjaGl2ZUNsYXNz
OjpjcmVhdGUodXJsLCBidWZmZXIpOwogfQpAQCAtODMsNyArODMsNyBAQCBib29sIEFyY2hpdmVG
YWN0b3J5Ojppc0FyY2hpdmVNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJl
dHVybiAhbWltZVR5cGUuaXNFbXB0eSgpICYmIGFyY2hpdmVNSU1FVHlwZXMoKS5jb250YWlucyht
aW1lVHlwZSk7CiB9CiAKLVJlZlB0cjxBcmNoaXZlPiBBcmNoaXZlRmFjdG9yeTo6Y3JlYXRlKGNv
bnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
CitSZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsK
ICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKaW5kZXggMjFkMjM2NWNmOGQ5ZDkw
MWVmZTdhYWQ1NTJiZjNkYTQwNjlmZTQwZC4uNTU2NDUxNWM5ZTBkOWQwMzNiNzkwYzc0NzI4NWEy
NTg1M2FiZTAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJj
aGl2ZUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
RmFjdG9yeS5oCkBAIC0zNCwxMiArMzQsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBBcmNoaXZlRmFjdG9yeSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNBcmNoaXZlTUlN
RVR5cGUoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBjcmVhdGUo
Y29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsK
KyAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKICAgICBzdGF0aWMg
dm9pZCByZWdpc3Rlcktub3duQXJjaGl2ZU1JTUVUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKaW5kZXggZmMyMGRhM2RhMDMyY2JlZjc0ZjJl
OWM4NDI4YWNiNGVlMzdiZWYyMy4uMDczODM5NGE4Mjg3MTRhYTBiOTBlZTc1MDc5ZDQ4NmY1YjBl
ODY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVz
b3VyY2UuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5s
aW5lIEFyY2hpdmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYg
ZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCitpbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3Vy
Y2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBT
dHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAg
OiBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMIHsgdXJsIH0sIFJlc291cmNlUmVzcG9uc2UgeyByZXNw
b25zZSB9LCBXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICAs
IG1fdGV4dEVuY29kaW5nKHRleHRFbmNvZGluZykKQEAgLTQyLDcgKzQyLDcgQEAgaW5saW5lIEFy
Y2hpdmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
Y29uc3QgVVJMJiB1cmwKIHsKIH0KIAotUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJl
c291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNv
bnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
K1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBm
cmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIGlmICgh
ZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01NCw3ICs1NCw3IEBAIFJlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgY29uCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXJjaGl2ZVJlc291cmNl
KGRhdGEucmVsZWFzZU5vbk51bGwoKSwgdXJsLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nLCBmcmFt
ZU5hbWUsIHJlc3BvbnNlKSk7CiB9CiAKLVJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewogICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShkYXRhKSwgdXJsLCByZXNwb25zZS5t
aW1lVHlwZSgpLCByZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCksIFN0cmluZygpLCByZXNwb25z
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZS5oCmluZGV4IDIwOWU5NzE3YWViMDkzNjBkYjM5MjdlNmVmYTFlNWJmMWMyYzk3Y2EuLjA1NDhl
ZjcyMWVmZDI3YzAwY2U5M2QxMjI3MGVjZWM0NmMwMmFmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oCkBAIC0zNCw4ICszNCw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXJjaGl2ZVJlc291cmNlIDogcHVibGljIFN1YnN0
aXR1dGVSZXNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IGNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLAorICAg
IHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLAogICAgICAgICBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsCiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmID0gUmVzb3Vy
Y2VSZXNwb25zZSgpKTsKIApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91
bGRJZ25vcmVXaGVuVW5hcmNoaXZpbmcoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZElnbm9yZVdo
ZW5VbmFyY2hpdmluZzsgfQogCiBwcml2YXRlOgotICAgIEFyY2hpdmVSZXNvdXJjZShSZWY8U2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKKyAgICBBcmNoaXZlUmVzb3VyY2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwogCiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgU3RyaW5nIG1fdGV4dEVu
Y29kaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmNwcAppbmRleCBkZTdkYWRkZGFjMjIxMmY2ZDVlMGNjMDkxZDRlNDE2Nzdh
M2YwMTVkLi43MTE1MGNiZGQ4OTY5ZTZhZjAyODY4NGI2YmY2Y2JjMGE1MGIyZmM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZl
LmNwcApAQCAtOTAsNyArOTAsNyBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIFJl
c291cmNlIGRhdGEgY2FuIGJlIGVtcHR5LCBidXQgbXVzdCBiZSByZXByZXNlbnRlZCBieSBhbiBl
bXB0eSBDRkRhdGFSZWYKICAgICBhdXRvJiBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKIAotICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2
ZVJlc291cmNlRGF0YUtleSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CisgICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3Vy
Y2VEYXRhS2V5LCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsK
IAogICAgIC8vIFJlc291cmNlIFVSTCBjYW5ub3QgYmUgbnVsbAogICAgIGlmIChhdXRvIGNmVVJM
ID0gcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpCkBAIC0xMTcsOSAr
MTE3LDkgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAvLyBEb24ndCBpbmNsdWRlIHRo
ZSByZXNvdXJjZSByZXNwb25zZSBmb3IgdGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFp
blJlc291cmNlKSB7CiAgICAgICAgIGlmIChhdXRvIHJlc291cmNlUmVzcG9uc2VEYXRhID0gY3Jl
YXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24ocmVzb3VyY2UtPnJlc3BvbnNlKCkpKQotICAg
ICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lX
ZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkp
OyAgICAKKyAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQo
KSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VE
YXRhLmdldCgpKTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gcHJvcGVydHlMaXN0OwogfQog
CkBAIC0yMTUsMTMgKzIxNSwxMyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGVSZXNvdXJjZShDRkRpY3Rpb25hcnlSZWYgZGljdGlvbgogICAgICAgICAg
ICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIGRh
dGEgaXMgbm90IG9mIHR5cGUgQ0ZEYXRhLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2Ui
KTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAg
ICAgICAgIGF1dG8gcmVzb3VyY2VSZXNwb25zZVZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmlu
Z1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJl
c291cmNlUmVzcG9uc2VWZXJzaW9uS2V5KSk7CiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3BvbnNl
VmVyc2lvbiAmJiBDRkdldFR5cGVJRChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbikgIT0gQ0ZTdHJp
bmdHZXRUeXBlSUQoKSkgewogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJj
aGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIHZlcnNpb24gaXMgbm90IG9mIHR5cGUgQ0ZTdHJpbmcs
IGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVS
ZXNvdXJjZVJlc3BvbnNlRnJvbVByb3BlcnR5TGlzdERhdGEocmVzb3VyY2VSZXNwb25zZURhdGEs
IHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKTsKICAgICB9CiAKQEAgLTI0OCwyMyArMjQ4LDIzIEBA
IFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoUmVmPEFyY2hp
dmVSZXNvdXJjZT4mJiBtYWluUmVzb3VyCiAgICAgcmV0dXJuIGFyY2hpdmU7CiB9CiAKLVJlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVy
JiBkYXRhKQorUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIHJldHVybiBjcmVhdGUoVVJM
KCksIGRhdGEpOwogfQogCi1SZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNo
aXZlIC0gQ3JlYXRpbmcgZnJvbSByYXcgZGF0YSIpOwotICAgIAorCiAgICAgUmVmPExlZ2FjeVdl
YkFyY2hpdmU+IGFyY2hpdmUgPSBjcmVhdGUoKTsKLSAgICAgICAgCi0gICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5jcmVhdGVDRkRhdGEoKTsKKworICAgIFJldGFpblB0cjxD
RkRhdGFSZWY+IGNmRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7
CiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAKKwog
ICAgIENGRXJyb3JSZWYgZXJyb3IgPSBudWxscHRyOwotICAgIAorCiAgICAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gcGxpc3QgPSBhZG9wdENGKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJl
Zj4oQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YSgwLCBjZkRhdGEuZ2V0KCksIGtDRlByb3Bl
cnR5TGlzdEltbXV0YWJsZSwgMCwgJmVycm9yKSkpOwogICAgIGlmICghcGxpc3QpIHsKICNpZm5k
ZWYgTkRFQlVHCkBAIC0yNzYsMTIgKzI3NiwxMiBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YQog
ICAgICAgICAgICAgQ0ZSZWxlYXNlKGVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQotICAgIAorCiAgICAgaWYgKENGR2V0VHlwZUlEKHBsaXN0LmdldCgpKSAhPSBDRkRpY3Rp
b25hcnlHZXRUeXBlSUQoKSkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNo
aXZlIC0gQXJjaGl2ZSBwcm9wZXJ0eSBsaXN0IGlzIG5vdCB0aGUgZXhwZWN0ZWQgQ0ZEaWN0aW9u
YXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFhcmNoaXZlLT5leHRyYWN0KHBsaXN0LmdldCgp
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI5NSw3ICsyOTUsNyBAQCBib29sIExl
Z2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAg
ICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBOdWxsIHJvb3QgQ0ZEaWN0aW9u
YXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KLSAgICAKKwogICAgIENGRGljdGlvbmFyeVJlZiBtYWluUmVzb3VyY2VEaWN0ID0g
c3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9u
YXJ5LCBMZWdhY3lXZWJBcmNoaXZlTWFpblJlc291cmNlS2V5KSk7CiAgICAgaWYgKCFtYWluUmVz
b3VyY2VEaWN0KSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBO
byBtYWluIHJlc291cmNlIGluIGFyY2hpdmUsIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIp
OwpAQCAtMzMzLDcgKzMzMyw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRp
Y3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJM
ZWdhY3lXZWJBcmNoaXZlIC0gU3VicmVzb3VyY2UgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFy
eSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChh
dXRvIHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3VyY2Uoc3VicmVzb3VyY2VEaWN0KSkKICAgICAg
ICAgICAgICAgICBhZGRTdWJyZXNvdXJjZShzdWJyZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsK
ICAgICAgICAgfQpAQCAtMzUzLDcgKzM1Myw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0
cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJj
aGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3ViZnJhbWUgYXJyYXkgaXMgbm90IGV4cGVjdGVk
IENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAg
ICAgICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0gY3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAo
c3ViZnJhbWVBcmNoaXZlLT5leHRyYWN0KHN1YmZyYW1lRGljdCkpCiAgICAgICAgICAgICAgICAg
YWRkU3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3ViZnJhbWVBcmNoaXZlKSk7CkBAIC0zNjEsNyAr
MzYxLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBk
aWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hp
dmUgLSBJbnZhbGlkIHN1YmZyYW1lIGFyY2hpdmUgc2tpcHBlZCIpOwogICAgICAgICB9CiAgICAg
fQotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTUwNiw3ICs1MDYsNyBAQCBSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgbWFya3VwU3RyaW5nLCBGcgogewogICAgIGF1dG8mIHJlc3BvbnNlID0gZnJhbWUubG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKTsKICAgICBVUkwgcmVzcG9uc2VVUkwgPSBy
ZXNwb25zZS51cmwoKTsKLSAgICAKKwogICAgIC8vIGl0J3MgcG9zc2libGUgdG8gaGF2ZSBhIHJl
c3BvbnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81NDU0OTM1
PgogICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwoKSkKQEAgLTYwNSw3ICs2MDUsNyBAQCBSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlv
bihGcmFtZSogZnJhbWUpCiAKICAgICBpZiAoIWRvY3VtZW50LT5pc0ZyYW1lU2V0KCkpCiAgICAg
ICAgIHJldHVybiBhcmNoaXZlOwotICAgICAgICAKKwogICAgIC8vIFdyYXAgdGhlIGZyYW1lc2V0
IGRvY3VtZW50IGluIGFuIGlmcmFtZSBzbyBpdCBjYW4gYmUgcGFzdGVkIGludG8KICAgICAvLyBh
bm90aGVyIGRvY3VtZW50ICh3aGljaCB3aWxsIGhhdmUgYSBib2R5IG9yIGZyYW1lc2V0IG9mIGl0
cyBvd24pLiAKICAgICBTdHJpbmcgaWZyYW1lTWFya3VwID0gIjxpZnJhbWUgZnJhbWVib3JkZXI9
XCJub1wiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdpbmhlaWdodD1cIjBcIiB3aWR0aD1cIjk4JSVc
IiBoZWlnaHQ9XCI5OCUlXCIgc3JjPVwiIiArIGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpLT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygpICsgIlwiPjwvaWZyYW1lPiI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKaW5k
ZXggZDA5ZWM5Zjc1YWJhMTM2YTg2MzM5ZWI0ZDg2YWJkODI3N2M0ZmYwNC4uNWEwN2IxMGI0YmU2
Zjg2MjAxMWE3ODJhN2RlZDIzNjc1OTI0MzYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaApAQCAtNDEsOCArNDEsOCBAQCBz
dHJ1Y3QgU2ltcGxlUmFuZ2U7CiBjbGFzcyBMZWdhY3lXZWJBcmNoaXZlIGZpbmFsIDogcHVibGlj
IEFyY2hpdmUgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TGVnYWN5
V2ViQXJjaGl2ZT4gY3JlYXRlKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxM
ZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgU2hh
cmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPExl
Z2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmIG1haW5SZXNvdXJj
ZSwgVmVjdG9yPFJlZjxBcmNoaXZlUmVzb3VyY2U+PiYmIHN1YnJlc291cmNlcywgVmVjdG9yPFJl
ZjxMZWdhY3lXZWJBcmNoaXZlPj4mJiBzdWJmcmFtZUFyY2hpdmVzKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShOb2RlJiwgRnVuY3Rp
b248Ym9vbChGcmFtZSYpPiYmIGZyYW1lRmlsdGVyID0geyB9KTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFtZSYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAK
aW5kZXggYWNmYmJiNzAyMDIyZDA2YWZlNjIwMDQwNDg3ZmQzNGQ5MjFkNzI3Yy4uZDAxMzlmODdh
MDZmOTY5NzhiNzQ3N2U5ZjQ5OTljMzRlYTlmODYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xMDYsNyArMTA2
LDcgQEAgUmVmPE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUoKQogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE1IVE1MQXJjaGl2ZSk7CiB9CiAKLVJlZlB0cjxNSFRNTEFyY2hpdmU+
IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGRhdGEp
CitSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVy
bCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBGb3Igc2VjdXJpdHkg
cmVhc29ucyB3ZSBvbmx5IGxvYWQgTUhUTUwgcGFnZXMgZnJvbSBsb2NhbCBVUkxzLgogICAgIGlm
ICghTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCh1cmwu
cHJvdG9jb2woKS50b1N0cmluZygpKSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBSZWZQdHI8TUhUTUxB
cmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVy
JiBkYXRhKQogICAgIHJldHVybiBtYWluQXJjaGl2ZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4g
TUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQorUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFn
ZSkKIHsKICAgICBWZWN0b3I8UGFnZVNlcmlhbGl6ZXI6OlJlc291cmNlPiByZXNvdXJjZXM7CiAg
ICAgUGFnZVNlcmlhbGl6ZXIgcGFnZVNlcmlhbGl6ZXIocmVzb3VyY2VzKTsKQEAgLTE2Miw4ICsx
NjIsOCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRh
KFBhZ2UqIHBhZ2UpCiAgICAgLy8gV2UgdXNlIHV0ZjgoKSBiZWxvdyBpbnN0ZWFkIG9mIGFzY2lp
KCkgYXMgYXNjaWkoKSByZXBsYWNlcyBDUkxGcyB3aXRoID8/ICh3ZSBzdGlsbCBvbmx5IGhhdmUg
cHV0IEFTQ0lJIGNoYXJhY3RlcnMgaW4gaXQpLgogICAgIEFTU0VSVChzdHJpbmdCdWlsZGVyLnRv
U3RyaW5nKCkuaXNBbGxBU0NJSSgpKTsKICAgICBDU3RyaW5nIGFzY2lpU3RyaW5nID0gc3RyaW5n
QnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICBhdXRvIG1odG1sRGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgp
LCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtaHRtbERh
dGE7CisgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5n
Lmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKICAg
ICAgICAgc3RyaW5nQnVpbGRlci5jbGVhcigpOwpAQCAtMTc4LDE1ICsxNzgsMTUgQEAgUmVmPFNo
YXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQog
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiXHJcbkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rp
bmc6ICIsIGNvbnRlbnRFbmNvZGluZywgIlxyXG5Db250ZW50LUxvY2F0aW9uOiAiLCByZXNvdXJj
ZS51cmwuc3RyaW5nKCksICJcclxuXHJcbiIpOwogCiAgICAgICAgIGFzY2lpU3RyaW5nID0gc3Ry
aW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQo
YXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIG1odG1s
RGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAK
ICAgICAgICAgLy8gRklYTUU6IGlkZWFsbHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250ZW50IGFz
IGEgc3RyZWFtIHdpdGhvdXQgaGF2aW5nIHRvIGZldGNoIGl0IGFsbC4KICAgICAgICAgYXV0byog
ZGF0YSA9IHJlc291cmNlLmRhdGEtPmRhdGEoKTsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgg
PSByZXNvdXJjZS5kYXRhLT5zaXplKCk7CiAgICAgICAgIGlmICghc3RyY21wKGNvbnRlbnRFbmNv
ZGluZywgcXVvdGVkUHJpbnRhYmxlKSkgewogICAgICAgICAgICAgYXV0byBlbmNvZGVkRGF0YSA9
IHF1b3RlZFByaW50YWJsZUVuY29kZShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICAgICAgICAgIG1o
dG1sRGF0YS0+YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsK
LSAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICBt
aHRtbERhdGEuYXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsK
KyAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIEFTU0VSVCghc3RyY21wKGNvbnRlbnRFbmNvZGluZywgYmFzZTY0KSk7
CiAgICAgICAgICAgICAvLyBXZSBhcmUgbm90IHNwZWNpZnlpbmcgaW5zZXJ0TEZzID0gdHJ1ZSBi
ZWxvdyBhcyBpdCB3b3VsZCBjdXQgdGhlIGxpbmVzIHdpdGggTEZzIGFuZCBNSFRNTCByZXF1aXJl
cyBDUkxGcy4KQEAgLTE5NiwxNyArMTk2LDE3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJj
aGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgICAgIHNpemVfdCBl
bmNvZGVkRGF0YUxlbmd0aCA9IGVuY29kZWREYXRhLnNpemUoKTsKICAgICAgICAgICAgIGRvIHsK
ICAgICAgICAgICAgICAgICBzaXplX3QgbGluZUxlbmd0aCA9IHN0ZDo6bWluKGVuY29kZWREYXRh
TGVuZ3RoIC0gaW5kZXgsIG1heGltdW1MaW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBtaHRt
bERhdGEtPmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7Ci0g
ICAgICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAg
ICAgICBtaHRtbERhdGEuYXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVu
Z3RoKTsKKyAgICAgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAg
ICAgICAgICAgICAgaW5kZXggKz0gbWF4aW11bUxpbmVMZW5ndGg7CiAgICAgICAgICAgICB9IHdo
aWxlIChpbmRleCA8IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfQogICAgIH0KIAogICAg
IGFzY2lpU3RyaW5nID0gbWFrZVN0cmluZygiLS0iLCBib3VuZGFyeSwgIi0tXHJcbiIpLnV0Zjgo
KTsKLSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5n
Lmxlbmd0aCgpKTsKKyAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNj
aWlTdHJpbmcubGVuZ3RoKCkpOwogCi0gICAgcmV0dXJuIG1odG1sRGF0YTsKKyAgICByZXR1cm4g
bWh0bWxEYXRhLnRha2UoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCAzZDJkYjdjOTYwMDJlYmU2ODRiMmJl
ZjhmMWVhOWUyZTk3OTRhNTg5Li4yZGZlODdlODJlN2E0ZGNlMGYzNDFjMzYxOTQzYzk5MDIwNWM4
ZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRN
TEFyY2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRN
TEFyY2hpdmUuaApAQCAtMzgsMTQgKzM4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgTUhUTUxQYXJzZXI7CiBjbGFzcyBQYWdlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTUhUTUxBcmNoaXZlIGZpbmFsIDogcHVi
bGljIEFyY2hpdmUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TUhUTUxBcmNoaXZlPiBjcmVh
dGUoKTsKLSAgICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYs
IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8TUhUTUxBcmNoaXZlPiBjcmVhdGUo
Y29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCi0gICAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKKyAgICBzdGF0aWMgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKIAogICAgIHZp
cnR1YWwgfk1IVE1MQXJjaGl2ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZjFiOTAxZGQwMjAzZGNhYzk0ZGY2
ZDBlYWU0Y2IyZDBiZGI4MDE1ZS4uNWVlOTE4Njg0YTA2ODk2ODNmNzFjMjY3ZjJkOTAxYTM3YTZm
ZWI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MUGFyc2VyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgYm9vbCBza2lwTGluZXNVbnRp
bEJvdW5kYXJ5Rm91bmQoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGxpbmVSZWFkZXIsIGNvbgog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotTUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2VyKFNoYXJlZEJ1
ZmZlciogZGF0YSkKK01IVE1MUGFyc2VyOjpNSFRNTFBhcnNlcihGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBkYXRhKQogICAgIDogbV9saW5lUmVhZGVyKGRhdGEsICJcclxuIikKIHsKIH0KQEAgLTE0
MCw3ICsxNDAsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VO
ZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogewogICAgIEFTU0VSVChlbmRP
ZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHko
KSk7CiAKLSAgICBhdXRvIGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgY29udGVudDsKICAgICBjb25zdCBib29sIGNoZWNrQm91bmRhcnkg
PSAhZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpOwogICAgIGJvb2wgZW5kT2ZQYXJ0UmVhY2hl
ZCA9IGZhbHNlOwogICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkg
PT0gTUlNRUhlYWRlcjo6QmluYXJ5KSB7CkBAIC0xNTQsNyArMTU0LDcgQEAgUmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYg
bWltZUhlYWRlciwKICAgICAgICAgICAgIExPR19FUlJPUigiQmluYXJ5IGNvbnRlbnRzIHJlcXVp
cmVzIGVuZCBvZiBwYXJ0Iik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
fQotICAgICAgICBjb250ZW50LT5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CisgICAgICAgIGNvbnRl
bnQuYXBwZW5kKFdURk1vdmUocGFydCkpOwogICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJh
dG9yKCJcclxuIik7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBuZXh0Q2hhcnM7CiAgICAgICAg
IGlmIChtX2xpbmVSZWFkZXIucGVlayhuZXh0Q2hhcnMsIDIpICE9IDIpIHsKQEAgLTE4MCwxMCAr
MTgwLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQ
YXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgdXNlIGxpbmUudXRm
OCgpIGFuZCBub3QgbGluZS5hc2NpaSgpIGFzIGFzY2lpIHR1cm5zIHNwZWNpYWwgY2hhcmFjdGVy
cyAoc3VjaCBhcyB0YWIsIGxpbmUtZmVlZC4uLikgaW50byAnPycuCi0gICAgICAgICAgICBjb250
ZW50LT5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKKyAgICAgICAg
ICAgIGNvbnRlbnQuYXBwZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7CiAg
ICAgICAgICAgICBpZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1J
TUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBsaW5l
IHJlYWRlciByZW1vdmVzIHRoZSBcclxuLCBidXQgd2UgbmVlZCB0aGVtIGZvciB0aGUgY29udGVu
dCBpbiB0aGlzIGNhc2UgYXMgdGhlIFF1b3RlZFByaW50YWJsZSBkZWNvZGVyIGV4cGVjdHMgQ1It
TEYgdGVybWluYXRlZCBsaW5lcy4KLSAgICAgICAgICAgICAgICBjb250ZW50LT5hcHBlbmQoIlxy
XG4iLCAyKTsKKyAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZCgiXHJcbiIsIDIpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTkzLDkgKzE5MywxMCBAQCBSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVh
ZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAg
IGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBjb250ZW50LnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMo
KTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSkgewog
ICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8gZGVjb2RlZERhdGEg
PSBiYXNlNjREZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAg
ICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRh
KCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBpZiAoIWRlY29kZWREYXRh
KSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgYmFzZTY0IGNvbnRlbnQgZm9yIE1I
VE1MIHBhcnQuIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNCwxMSArMjA1
LDExIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0
KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBjYXNlIE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3Rl
ZFByaW50YWJsZURlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAg
ICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEo
KSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
TUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCaW5hcnk6Ci0gICAg
ICAgIGRhdGEuYXBwZW5kKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAg
ICAgZGF0YS5hcHBlbmQoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRl
bnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIExPR19F
UlJPUigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oCmluZGV4IDFlOWJkNGQ3
NzY3ZWUzOTFhMDAyMmY3MTc0OGYwMGI4NWM4MWIyNWYuLjBkNjA0MzQzZjNkN2FkMTc4Y2MyMjAw
M2M5NzljMjJlNTBhM2I5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxQYXJzZXIuaApAQCAtNDIsMTEgKzQyLDExIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKIGNsYXNzIE1IVE1MQXJjaGl2ZTsKIGNsYXNz
IE1JTUVIZWFkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBNSFRNTFBhcnNlciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTUhU
TUxQYXJzZXIoU2hhcmVkQnVmZmVyKik7CisgICAgZXhwbGljaXQgTUhUTUxQYXJzZXIoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciopOwogCiAgICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gcGFyc2VBcmNo
aXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRB
cHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWViNjgyMDdmYzQ5YTk1Y2MxYzNl
YTFkNGE5ZWJmZDkyNzA0Li5lMWE4NzUxNmJkOGQ1YjhmMjRhZjZhNWI5OTBlMjE4NTM0N2U3NTkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MCwxMiArNDAsMTYgQEAgQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVl
c3QmJiByZXEKIHsKIH0KIAotdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQordm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEg
PyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0ID0gbV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAg
aWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0gbV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVk
U2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwg
bWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCmluZGV4IDA3ZjJhMDc5YzU2NGVlZmZiNjk3YzM3
Yzc4NTY1ZTFlYThkOWFlNWUuLjM3OThhOWI0ZDkwMTNjZmRlYTZmNTZmYmRmMDAxNWFmODk0NzU3
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpv
cHRpb25hbDxzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdD4gcHJvY2Vzcyhjb25zdCBVUkwmIG1h
bmlmZXN0VVJMLCBjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBEb2N1bWVudCogPSBudWxscHRyKTsK
IAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBv
dmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNv
ZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLnB0cigpOyB9CiAgICAgdm9p
ZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2Rp
bmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZjNjFlNjM3NDJmNzRjYzZh
MGJjZjAwMGJhOWIxNzZmLi4zOGEyZTE3ZjBkMDZjOGFjOThkZTI0YjFlNTJiOGU2MGU5MjQxMjBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxl
U2hlZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNo
ZWV0OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQsCiAgICAg
ICAgIHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNoZSB0aGUg
ZGVjb2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2UgcXVpdGUg
YSBiaXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9k
YXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXpl
KCkpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25z
dCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05NywxMyArOTcsMTcgQEAgdm9pZCBDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQubV9wYXJzZWRTdHls
ZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
Cit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQog
ewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNp
emUoKSA6IDApOwotICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2Rp
bmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCi0g
ICAgaWYgKGRhdGEpCi0gICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVj
b2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7
CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVu
Y29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBm
aW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmlu
ZyBjaGVja05vdGlmeSgpCisgICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7
CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3Mp
OwogICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkgdG8gYmUg
bmVlZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5k
ZXggNWQ0ZGQzZGM3ZTM1M2VlM2NiMmZiOTNmMjc4ZDI1NzliOGQ5YTdhMS4uZTY1NWM2OWUzZWRi
NjA5NTAyMzljY2U0NTQ1ZjA5NmI1MjY1NmRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJp
bmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVy
KiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdl
dCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAg
ICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0Qm9keURh
dGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4MjM1MWQ3ZjY2MjViY2Uy
NzFkMDc3NjMzYWU5NC4uZDJiYzI4MjE0NzljNTlhMjMyM2U0ZjY1Y2Q5NGI2M2I0MjM3MzY0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjQsMTAg
KzY0LDE1IEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xp
ZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRpY19jYXN0PENhY2hlZEZvbnRDbGllbnQmPihjbGll
bnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
Cit2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1f
ZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5z
aXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtl
Q29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2Rl
ZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5
KG1ldHJpY3MpOwogfQpAQCAtMTA1LDcgKzExMCw3IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQogCiBzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hh
cmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3
cmFwcGluZykKIHsKLSAgICBSZWZQdHIgYnVmZmVyIHsgJmJ5dGVzIH07CisgICAgUmVmUHRyIGJ1
ZmZlciA9IHsgJmJ5dGVzIH07CiAgICAgd3JhcHBpbmcgPSAhY29udmVydFdPRkZUb1NmbnRJZk5l
Y2Vzc2FyeShidWZmZXIpOwogICAgIHJldHVybiBidWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKCpidWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24pIDogbnVsbHB0cjsKIH0KQEAgLTEz
NSw3ICsxNDAsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKGlzTG9hZGluZygpKQogICAgICAgICByZXR1cm47Ci0g
ICAgCisKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRGb250Q2xpZW50PiB3
YWxrZXIobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkRm9udENsaWVudCogY2xpZW50ID0g
d2Fsa2VyLm5leHQoKSkKICAgICAgICAgY2xpZW50LT5mb250TG9hZGVkKCp0aGlzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IGNlYmRjNTU3ZjEzZmM0YWZk
ODI3NTI5Nzc0YWZkOGVjNGJlZjQyMTAuLjEzNDY2Y2M5OWQwZDE5Y2JmM2Q4ZWYzZGZiZDk2ZjM0
ZDBmODU0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAt
NzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQg
c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5n
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYjE1OWYy
OWVlOTBmZTNkZTAxOWMxMTQ5YmRhNjk0ZTBlNmY2YjU0Mi4uOTQ2Mjc5NTIwZDBkYTQ0NjIyYzZh
Y2QzNjY2MjI4ODEwNWU4MTk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwCkBAIC00NjgsOSArNDY4LDkgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6
OmNsZWFySW1hZ2UoKQogICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lk
IENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRhdGEpCit2
b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRh
dGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7
CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJ
bWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9u
b3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkg
PCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRC
dWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29u
dmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNv
bnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAg
ICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1h
a2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9E
RUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFn
ZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgp
KTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29u
dmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZE
YXRhKCkpLmdldCgpKTsKICNlbHNlCiAgICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxkIGhh
dmUgYmVlbiBjYW5jZWxlZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVydGlu
ZyBQb3N0U2NyaXB0IHRvIFBERi4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU1Myw3
ICs1NTUsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRh
KGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ2Fj
aGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZElt
YWdlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkJ1ZmZlckRhdGEpOwogICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOwpAQCAtNTY3LDcg
KzU2OSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEs
IGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hl
ZEltYWdlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBjb252
ZXJ0ZWREYXRhSWZOZWVkZWQoZGF0YSk7CiAgICAgaWYgKG1fZGF0YSkgewpAQCAtNTkzLDcgKzU5
NSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1lCiB2b2lkIENhY2hlZEltYWdlOjpkaWRSZXBs
YWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKQogewogICAgIGlmIChtX2ltYWdlKSB7Ci0gICAgICAg
IC8vIExldCB0aGUgSW1hZ2Uga25vdyB0aGF0IHRoZSBTaGFyZWRCdWZmZXIgaGFzIGJlZW4gcmVq
aWdnZWQsIHNvIGl0IGNhbiBsZXQgZ28gb2YgYW55IHJlZmVyZW5jZXMgdG8gdGhlIGhlYXAtYWxs
b2NhdGVkIHJlc291cmNlIGJ1ZmZlci4KKyAgICAgICAgLy8gTGV0IHRoZSBJbWFnZSBrbm93IHRo
YXQgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgaGFzIGJlZW4gcmVqaWdnZWQsIHNvIGl0IGNh
biBsZXQgZ28gb2YgYW55IHJlZmVyZW5jZXMgdG8gdGhlIGhlYXAtYWxsb2NhdGVkIHJlc291cmNl
IGJ1ZmZlci4KICAgICAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMjQyNzU2MTcpOiBJdCB3
b3VsZCBiZSBiZXR0ZXIgaWYgd2UgY291bGQgc29tZWhvdyB0ZWxsIHRoZSBJbWFnZSdzIGRlY29k
ZXIgdG8gc3dhcCBpbiB0aGUgbmV3IGNvbnRlbnRzIHdpdGhvdXQgZGVzdHJveWluZyBhbnl0aGlu
Zy4KICAgICAgICAgbV9pbWFnZS0+ZGVzdHJveURlY29kZWREYXRhKHRydWUpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggZTM4OTYyYTBkY2Fm
YmNlZjYzMWMxNGU2M2ZlYjg1YmEwNTUyMDNmNC4uMDgzZjkyZjg4ODI3NmVlZGE4OTkxMjAzMWQy
NDQ5YTk2OGUyNjVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmgKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZVdpZHRo
KCk7IH0KICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBt
X2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KIAotICAgIHZvaWQgdXBk
YXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIGVudW0gU2l6ZVR5
cGUgewogICAgICAgICBVc2VkU2l6ZSwKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZERl
ZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29u
dmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAg
ICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVk
KTsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKSBvdmVycmlkZTsKQEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hh
bmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVk
dWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZl
ckludGVybmFsKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hh
cmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggOTJiMDgzNjk3NTg4ODQ0MDkx
OTM5ZTNlZWQ3OWQ3N2YxODM5NTYyZi4uODk1ZGIxMTU4YjZiOGM4ZmJmN2IxMGI0M2I2MTRlZGE5
NjAyMWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuY3BwCkBAIC00OCw3ICs0OCw3IEBAIENhY2hlZFJhd1Jlc291cmNlOjpDYWNoZWRS
YXdSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUeXBlIHR5cGUsCiAg
ICAgQVNTRVJUKGlzTWFpbk9yTWVkaWFPckljb25PclJhd1Jlc291cmNlKCkpOwogfQogCi1zdGQ6
Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3Vs
YXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAor
c3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNh
bGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGRhdGEpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHByZXZpb3VzRGF0YUxlbmd0aCA9IGVuY29kZWRT
aXplKCk7CiAgICAgaWYgKCFkYXRhIHx8IGRhdGEtPnNpemUoKSA8PSBwcmV2aW91c0RhdGFMZW5n
dGgpCkBAIC01Niw3ICs1Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+
IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDCiAgICAgcmV0dXJu
IGRhdGEtPmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKICAgICAvLyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5l
c3RlZCBydW5sb29wcy4gV2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExv
YWRpbmcuCiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC02NCw3ICs2NCw3
IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRh
dGEpCiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1f
ZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6
ZSA9IGVuY29kZWRTaXplKCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNEYXRh
U2l6ZSkgewpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNv
dXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpIHsKICAg
ICAgICAgLy8gV2UgbWF5IGdldCBoZXJlIHN5bmNocm9ub3VzbHkgZnJvbSB1cGRhdGVCdWZmZXIo
KSBpZiB0aGUgY2FsbGJhY2sgdGhlcmUgZW5kcyB1cCBzcGlubmluZyBhIHJ1bmxvb3AuCkBAIC0x
MDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERh
dGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJp
bmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5n
UG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAg
aWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmso
ZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAg
ICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0
YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGRh
dGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAg
ICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERh
dGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNp
emUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNy
ZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOworICAgICAgICAg
ICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAg
fQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDg0ZTBkODQ0ZDU3MTA5OTUzYWU2YmZmNjU1NjU5
OTUzZTI4YmE2OWIuLmE3ODY1ZjhhZDE3OGFlZmIzMjIwYTU2ZGNmZjE5NTk5M2NmOTVhZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBA
IC01MSw5ICs1MSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGRpZEFkZENsaWVu
dChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNo
YXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1
c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBh
bGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc3dpdGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJjZSgpIG92ZXJyaWRlOwog
ICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9hbGxvd0VuY29kZWREYXRhUmVwbGFjZW1lbnQ7IH0KIAotICAgIHN0ZDo6b3B0aW9uYWw8
U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0
IFNoYXJlZEJ1ZmZlciopIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0
YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqKSBjb25zdDsKICAgICB2b2lkIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICAKICNpZiBVU0UoUVVJ
Q0tfTE9PSykKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVkaXJlY3RQ
YWlyLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1fcmVkaXJlY3RDaGFpbjsKIAogICAgIHN0cnVj
dCBEZWxheWVkRmluaXNoTG9hZGluZyB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8RGVsYXllZEZpbmlzaExvYWRpbmc+IG1fZGVs
YXllZEZpbmlzaExvYWRpbmc7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggM2FlOGJiNjhkMjVjZGRkMTgwMjA5MjJmNWVkYjI0ZDRi
OTEyMDAwMi4uYmY2OWU4MGU1NzZlMWEyODhmNmEwMTFmNTQ2MTQ2MzE1NTgwMWQyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zMzQs
NyArMzM0LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKCp0
aGlzLCBtZXRyaWNzKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNo
YXJlZEJ1ZmZlciYpCit2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3ko
KSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0KQEAgLTM0NCw3ICszNDQs
NyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNp
Z25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIHNl
dExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwpAQCAtOTI3LDggKzky
Nyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRC
dWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZmZXIpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEtPmFwcGVuZChuZXdC
dWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9OwogICAgIGRpZFJlcGxhY2VT
aGFyZWRCdWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3OGNhMjUxODEzZTZj
MDM1YmMyNzguLmM5ODJkZDY5MzdhMGJjMmJmMzhjNDI2MTI2ZmZlNmU3OGM3OTY0NzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC00OSw3ICs0
OSw3IEBAIGNsYXNzIENvb2tpZUphcjsKIGNsYXNzIE1lbW9yeUNhY2hlOwogY2xhc3MgTmV0d29y
a0xvYWRNZXRyaWNzOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7
CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCkBAIC0xMTIsOSArMTEyLDkgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2
aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAg
dmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkg
Y29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIo
U2hhcmVkQnVmZmVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hl
ZFJlc291cmNlOjpTdGF0dXMpOwogCiAgICAgdm9pZCBzZXRSZXNvdXJjZUVycm9yKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKSB7IG1fZXJyb3IgPSBlcnJvcjsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggN2RhMTQ4NTFh
NzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uZGI0MzE2MDdhZTU2MzgzMDM4MDBkZDI1
OWMxMDM0Y2QwOTBmY2ZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01MiwxMiArNTIsMTIgQEAgU3RyaW5nIENhY2hlZFNW
R0RvY3VtZW50OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2Rp
bmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2
b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAg
ICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBm
cmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0aGUgcGFyZW50IFVzZUVs
ZW1lbnQuCiAgICAgICAgIG1fZG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIs
IG1fc2V0dGluZ3MsIHJlc3BvbnNlKCkudXJsKCkpOwotICAgICAgICBtX2RvY3VtZW50LT5zZXRD
b250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpKTsKKyAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CiAg
ICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApp
bmRleCBlOGMxNWYzNjBmYzkxYWM4YjM0ZDM5NjI5NWM1M2QzYzdmMTQ3ZWFhLi40NDVlNGY5ZjQy
YzNjMjc0MDc5NzZhNjRlOTE1NDA3ZjhiNTM0ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3Ry
aW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVj
b2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVj
b2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJl
ZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXggYThlZjU3NmJiNjkzOTMzYTIyMzQ2
OTU1NTc1NmIzNjY3ZTQ4NjMyZS4uZDJjMWRlNDdlZmI3ODEzOThmNDQzOGI3Y2E0ZWEyNjBlMjIx
OTc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Zv
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNw
cApAQCAtODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAogICAgICAgICAgICAgU2NyaXB0RGlz
YWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUgZGlzYWJsZWRTY29wZTsKIAot
ICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRl
Y29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOworICAgICAgICAg
ICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZs
dXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwog
ICAgICAgICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJvcigpOwogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggNDdh
OWY1NzYwN2I5ODI4NGU4Zjc5ZTJjZGVjZTliZTQxOGYxN2I2NS4uYjY3Mzk4YjBlNGY1NmZlN2Fi
Y2IyNzRkMGUzNjg0MzAzNjM1MDg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk2LDEwICs5NiwxNSBAQCB1bnNpZ25lZCBDYWNoZWRTY3Jp
cHQ6OnNjcmlwdEhhc2goKQogICAgIHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2Fj
aGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmco
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUo
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEt
PnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAg
ICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hM
b2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmgKaW5kZXggOTI0Yjg0Y2EyZDg3MTZlMzQ2MDc3ZWVlYjVjYzM0YmNlZGU3
ZTIzZC4uODY1MWU2MzlhZDkwNjE3Mjg1NjFjMzI0YmZhN2FmNGNmOTdmNmQzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaApAQCAtNDcsNyArNDcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAg
U3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVj
b2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rl
ci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
OwogCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMx
Mjg4NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYxLi4wYzg0MjhiYjk5ZGI2ZGZiMTZhMzQ4MTM0
YzM4MjY4MzZjY2U1NDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmNwcApAQCAtNDAsMTAgKzQwLDEwIEBAIENhY2hlZFRleHRUcmFjazo6Q2Fj
aGVkVGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lv
bklECiB7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0
YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBS
ZWZQdHI8U2hhcmVkQnVmZmVyPigpOwogICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5z
aXplKCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291
cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKQEAgLTUxLDEzICs1MSwxMyBAQCB2b2lkIENh
Y2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAg
ICBjbGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UoKnRoaXMpOwogfQog
Ci12b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkK
K3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7CiAgICAgQ2FjaGVk
UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCiB7CiAgICAgZG9VcGRhdGVCdWZmZXIoZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKaW5kZXggODVlMzk2MjA2NTEzMTYwNzAzNjUzZWIyMmM3
NzEzOGI5MTUwN2FkZC4uMDliNDMzOWEzN2I2NzNiMmFjNGZkYWUxNDZiMjliOTY0Nzc3ZmNlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaApAQCAt
MzUsMTAgKzM1LDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIG1heVRyeVJlcGxh
Y2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lk
IHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRv
VXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciopOworICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hl
ZXQuY3BwCmluZGV4IGUzZTJmNWU5NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3ODI2MTVkMzQwMGMuLmQy
ZWZmMmQyZDQwYzkyNzczODc1NmM0YThmMGNiYjkzNDNiZTEwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYxLDEy
ICs2MSwxNiBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25zdAog
ICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hl
ZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZp
bmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0
RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAg
ICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGVu
Y29kZWRTaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1h
a2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Cisg
ICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgp
LCBlbmNvZGVkU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRy
OworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxz
ZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAppbmRleCA2ODQyYjY0NGY2MWNmOTBm
N2Y2MWIyZjdlYzVlMDA2NTRjZDEwY2NjLi5iZDIzMTIxNGYyZDIwYmEzOTY0NDYwMzY2ZTA0MWI5
NDEzNWFjNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVu
Y29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0
IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29k
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmlu
YWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3NoZWV0
OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCmluZGV4IDU1MjU2MWQ2
YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIuLjY2YjkzNThlYzUzMTExNDg0ODIyYTdj
YzI0ZTdmM2E5OTE3MDY1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVn
YWN5UHJldmlld0xvYWRlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDcgKzM4LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291cmNl
TG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwog
CiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyIGZpbmFsIDogcHJpdmF0ZSBQcmV2aWV3Q29udmVy
dGVyQ2xpZW50LCBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00OCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBib29sIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAg
Ym9vbCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIGJvb2wgZGlk
UmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgYm9vbCBk
aWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBkaWRGYWlsKCk7CiAKQEAgLTYwLDE3ICs2Miwx
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZpbmlzaFVwZGF0aW5n
KFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbCB7IH07CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVy
RGlkRmFpbFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKICAgICB2b2lkIHByZXZp
ZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOwot
ICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXIm
LCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJE
aWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRp
bmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRp
ZEZhaWxDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKIAogICAgIC8vIFByZXZp
ZXdDb252ZXJ0ZXJQcm92aWRlcgotICAgIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZp
ZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgU2hhcmVkQnVmZmVyKik+JiYpIGZpbmFsOworICAgIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJj
ZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmKSBmaW5hbDsKICAgICB2b2lk
IHByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpIGZpbmFsOwogCiAgICAgUmVm
UHRyPFByZXZpZXdDb252ZXJ0ZXI+IG1fY29udmVydGVyOwogICAgIFJlZjxMZWdhY3lQcmV2aWV3
TG9hZGVyQ2xpZW50PiBtX2NsaWVudDsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX29yaWdpbmFs
RGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9vcmlnaW5hbERhdGE7
CiAgICAgV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxvYWRlcjsKICAgICBib29s
IG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXggZDE4YjI1MmU5NzU2YzhjZTBj
OTViNjNlNzhkZDAwOTdlZjJhNTczNC4uNzQ4ZmVkYjhlYTQ4ZmFiYzgyNWZiNWI2NzcxNzQxNTIw
NWIzMWIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5tbQpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgUmVmPExlZ2FjeVByZXZpZXdMb2Fk
ZXJDbGllbnQ+IG1ha2VDbGllbnQoY29uc3QgUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgYwogICAg
IHJldHVybiBlbXB0eUNsaWVudCgpOwogfQogCi1ib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIExlZ2FjeVBy
ZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIGlmIChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVy
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQ
cmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdD
b252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3Nl
ZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsKKyAgICBtX29yaWdpbmFs
RGF0YS0+cmVzZXQoKTsKICAgICByZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0
UHJldmlld0NvbnZlcnRlcihXVEZNb3ZlKG1fY29udmVydGVyKSk7CiAgICAgYXV0byByZXNwb25z
ZSB7IGNvbnZlcnRlci5wcmV2aWV3UmVzcG9uc2UoKSB9OwogCkBAIC0xNDcsNyArMTQ3LDcgQEAg
dm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0
aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICB9KTsKIH0KIAotdm9pZCBMZWdhY3lQcmV2aWV3
TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJl
dmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBt
X3Jlc291cmNlTG9hZGVyLmdldCgpOwogICAgIGlmICghcmVzb3VyY2VMb2FkZXIpCkBAIC0yMjQs
MTAgKzIyNCwxMCBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVQYXNzd29yZEZv
clByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgYwogICAgIG1fY2xpZW50LT5kaWRS
ZXF1ZXN0UGFzc3dvcmQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIExl
Z2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVy
KFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTGVnYWN5UHJldmll
d0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0Nv
bnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlRfVU5V
U0VEKGNvbnZlcnRlciwgJmNvbnZlcnRlciA9PSBtX2NvbnZlcnRlcik7Ci0gICAgY29tcGxldGlv
bkhhbmRsZXIobV9vcmlnaW5hbERhdGEucHRyKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1f
b3JpZ2luYWxEYXRhLT5nZXQoKS5nZXQoKSk7CiB9CiAKIExlZ2FjeVByZXZpZXdMb2FkZXI6On5M
ZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwpAQCAtMjM1LDcgKzIzNSw3IEBAIExlZ2Fj
eVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwogTGVnYWN5
UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmlld0xvYWRlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVy
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IG1fY29udmVydGVyIHsg
UHJldmlld0NvbnZlcnRlcjo6Y3JlYXRlKHJlc3BvbnNlLCAqdGhpcykgfQogICAgICwgbV9jbGll
bnQgeyBtYWtlQ2xpZW50KGxvYWRlciwgbV9jb252ZXJ0ZXItPnByZXZpZXdGaWxlTmFtZSgpLCBt
X2NvbnZlcnRlci0+cHJldmlld1VUSSgpKSB9Ci0gICAgLCBtX29yaWdpbmFsRGF0YSB7IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9vcmlnaW5hbERhdGEgeyBtYWtlVW5pcXVlUmVm
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9yZXNvdXJjZUxvYWRlciB7IGxvYWRl
ciB9CiAgICAgLCBtX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmcgeyBsb2FkZXIuZnJh
bWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29r
UHJldmlldygpIH0KIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDgyMzc0ZTcy
NjJjNzBlYTlkZmU0ZDY0ZjI1YWIxMzVhYTYwMzMzY2YuLmVhNjE1ZGZmNGRkMGVkNTE0YmZmNjQ0
MjY0N2VjNDYyMGY2MzIyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9y
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMzgs
MTIgKzM4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBET01QYXN0ZUFj
Y2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9j
dW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEtleWJv
YXJkRXZlbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsKIGNsYXNzIFRleHRDaGVj
a2VyQ2xpZW50OwogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKQEAgLTc4LDcgKzc5LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShjb25zdCBT
aW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBsZVJhbmdlJikgPSAwOwogCiAjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29u
dGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogcHJlZmVycmVkRmlsZU5hbWUgKi8sIFJlZjxT
aGFyZWRCdWZmZXI+JiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJ
ZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAv
KiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBwcmVmZXJyZWRGaWxlTmFtZSAqLywg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLywg
Y29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBmaWxlUGF0
aCAqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFNl
cmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXggMWExMjEwZmE4MzM3Y2Q5
NTIwZjRlMDExYTkwNzM2NzU0ZGU1MThmMS4uYWM1M2NiMTRiZjAwZTUxNjQ3YzllYzkxMTA5OGJl
YTAzNjE1MTEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTI3
Myw3ICsyNzMsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKENh
Y2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVudCogaW1hZwogICAgIGlmICghaW1hZ2UgfHwg
aW1hZ2UtPmltYWdlKCkgPT0gJkltYWdlOjpudWxsSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+
aW1hZ2VGb3JSZW5kZXJlcihpbWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1h
Z2VGb3JSZW5kZXJlcihpbWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIGRhdGEgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogCkBAIC0yODIsNyArMjgy
LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFn
ZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUo
KSwgV1RGTW92ZShkYXRhKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdl
LT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIGRhdGEtPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAg
bV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRh
UmVhZGVyLmNwcAppbmRleCA5NmFkMDgyNTQzZGQ1M2E4NzliZTUxYzZkOTIxZDdhZmZmNDJlOGUw
Li43NTgzNmI4NzkxNDNiNjBhN2YzNTE5NzAzMjA3YjZhZDNkOGQ0Zjg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIFNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpCiB7Ci0gICAgCisKIH0KIAogU2hhcmVEYXRhUmVhZGVyOjp+U2hhcmVEYXRhUmVh
ZGVyKCkKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIFNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogICAgICAgICBj
YW5jZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGF1dG8gYXJyYXlC
dWZmZXIgPSBtX3BlbmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+YXJyYXlCdWZmZXJSZXN1bHQo
KTsKLSAgICAKKwogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZpbGVOYW1lID0gZmlsZU5h
bWU7CiAgICAgZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXIt
PmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBwZW5kKFdURk1vdmUoZmls
ZSkpOwogICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKLSAgICAKKwogICAgIGlmIChtX2ZpbGVzUmVh
ZFNvRmFyID09IHN0YXRpY19jYXN0PGludD4obV9wZW5kaW5nRmlsZUxvYWRzLnNpemUoKSkpIHsK
ICAgICAgICAgbV9wZW5kaW5nRmlsZUxvYWRzLmNsZWFyKCk7CiAgICAgICAgIGlmIChhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0p
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmgKaW5kZXggZTM4
MDZlODdkZjc5YTNkOWI1Y2FlMTIxNGRlNjZhYTJhNjU4NDdkYi4uZmM2NmMzNjVhMmYyOWE0Yzc4
ZTYwNjE5ZTQ3YTcxYzcyNThkOGZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTm93UGxheWluZ01hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQ
bGF5aW5nTWFuYWdlci5oCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRp
b25hbDxOb3dQbGF5aW5nSW5mbz4gbV9ub3dQbGF5aW5nSW5mbzsKICAgICBzdHJ1Y3QgQXJ0d29y
a0NhY2hlIHsKICAgICAgICAgU3RyaW5nIHNyYzsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gaW1hZ2VEYXRhOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1h
Z2VEYXRhOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxBcnR3b3JrQ2FjaGU+IG1fbm93UGxh
eWluZ0luZm9BcnR3b3JrOwogICAgIGJvb2wgbV9zZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCmluZGV4IDE1NzMx
ZWIyM2ZhNzY5NDk2MGRkODA0OTZmYThmMmY5ZThjNzc4MGYuLjA3ZWQ0OGU1ODg0ZWNlZWRjNjFm
ZDkzZTZiMjIxNzFiZTg4NTg5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
Y3BwCkBAIC04OSw3ICs4OSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoYXV0byogc3RyYXRlZ3kgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkpCiAgICAgICAgIHJldHVybiBzdHJhdGVneS0+cmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCB0eXBlLCBuYW1lKCksIGNvbnRleHQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggN2QyNDdkY2QxYTE2ZjM0MmMxNzU0YzQ1
YzRhNzM1MjliZjhmNzFiMi4uMzU3NjNlZTEyYTM5MGVmYzg0NTJjMzU4MDZiNTEyYmU0MjlhZDk3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtNjEsMTIgKzYxLDEzIEBA
IHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRHJhZ0Rh
dGE7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBQYXN0ZWJvYXJkU3RyYXRl
Z3k7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiAKQEAgLTE0NywxNiArMTQ4LDE2IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNp
emUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkRmlsZVBhdGhzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkSFRNTChjb25zdCBTdHJp
bmcmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkSW1hZ2UoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6
ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CiAgICAgdmlydHVhbCBib29s
IHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpID0gMDsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVhbCBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1
ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgPSAw
OwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWREYXRhQnVmZmVy
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9
KSA9IDA7CiAjZW5kaWYKIH07CiAKQEAgLTE3MSw3ICsxNzIsNyBAQCBzdHJ1Y3QgUGFzdGVib2Fy
ZEZpbGVSZWFkZXIgewogICAgIHZpcnR1YWwgflBhc3RlYm9hcmRGaWxlUmVhZGVyKCkgPSBkZWZh
dWx0OwogICAgIHZpcnR1YWwgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgLyogdHlwZSAq
LykgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
ID0gMDsKIH07CiAKIGNsYXNzIFBhc3RlYm9hcmQgewpAQCAtMjk2LDcgKzI5Nyw3IEBAIHB1Ymxp
YzoKICAgICBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gcGFzdGVib2FyZEl0ZW1J
bmZvKHNpemVfdCBpbmRleCkgY29uc3Q7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIFVSTCByZWFkVVJMKHNpemVfdCBpbmRl
eCwgU3RyaW5nJiB0aXRsZSk7CiAKICAgICBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5MTE0YzM4
YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjdiNGIzZDM2YWE2ODAzNjExODc5MTMxYjVhMWIy
MjZiNTg4ZDM2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
Q3VzdG9tRGF0YS5jcHAKQEAgLTMzLDEzICszMywxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4gY29weVBs
YXRmb3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4m
IG90aGVyKQorc3RhdGljIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiBvdGhlcikKIHsKICAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxTdHJpbmc+KG90aGVyKSkKICAgICAgICAgcmV0dXJuIHsgc3RkOjpnZXQ8U3Ry
aW5nPihvdGhlcikgfTsKIAotICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFy
ZWRCdWZmZXI+PihvdGhlcikpCi0gICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFJlZjxTaGFyZWRC
dWZmZXI+PihvdGhlcikuY29weVJlZigpIH07CisgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihvdGhlcikpCisgICAgICAgIHJldHVybiB7
IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ob3RoZXIpLmNvcHlSZWYoKSB9
OwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIFBhc3RlYm9h
cmRDdXN0b21EYXRhOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiAgICAgYWRkT3JNb3ZlRW50cnlUb0VuZCh0eXBlKS5wbGF0Zm9ybURhdGEgPSB7
IHZhbHVlIH07CiB9CiAKLXZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OndyaXRlRGF0YShjb25z
dCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgYWRkT3JNb3ZlRW50cnlUb0VuZCh0eXBlKS5w
bGF0Zm9ybURhdGEgPSB7IFdURk1vdmUoZGF0YSkgfTsKIH0KQEAgLTIwMiwxNCArMjAyLDE0IEBA
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpzYW1lT3JpZ2lu
Q3VzdG9tU3RyaW5nRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIGN1c3RvbURhdGE7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpyZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7
CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkgewogICAgICAgICBpZiAoZW50cnkudHlw
ZSAhPSB0eXBlKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCi0g
ICAgICAgICAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRm
b3JtRGF0YSkuY29weVJlZigpOworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihlbnRyeS5w
bGF0Zm9ybURhdGEpLmNvcHlSZWYoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CkBAIC0yNjUsMTEgKzI2NSwxMSBAQCB2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmb3JFYWNo
Q3VzdG9tU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLAogICAgIH0KIH0K
IAotdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZm
ZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxT
dHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYgZnVuY3Rpb24pIGNvbnN0Cit2b2lk
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmb3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihGdW5j
dGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYgZnVuY3Rpb24pIGNvbnN0CiB7
CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkgewogICAgICAgICBhdXRvJiBkYXRhID0g
ZW50cnkucGxhdGZvcm1EYXRhOwotICAgICAgICBpZiAoKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5pc051bGwoKSkgfHwgc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkpCisgICAgICAgIGlm
ICgoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRhdGEpICYmICFzdGQ6OmdldDxTdHJp
bmc+KGRhdGEpLmlzTnVsbCgpKSB8fCBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4oZGF0YSkpCiAgICAgICAgICAgICBmdW5jdGlvbihlbnRyeS50eXBl
LCBkYXRhKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZEN1c3RvbURhdGEuaAppbmRleCAyYmU4MWQyOTM4YTNkYmQwOTAyNmNhNmVjNjRhYzMyODdlNmFi
YzAzLi45N2ZmOTg1ZTI0ZTExYjRjN2JiNDE0MzczN2YwMjg0MGMzNWZmY2VjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAgLTM1LDYgKzM1
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGEgewog
cHVibGljOgpAQCAtNDgsNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICAgICAgU3RyaW5nIHR5cGU7
CiAgICAgICAgIFN0cmluZyBjdXN0b21EYXRhOwotICAgICAgICBzdGQ6OnZhcmlhbnQ8U3RyaW5n
LCBSZWY8U2hhcmVkQnVmZmVyPj4gcGxhdGZvcm1EYXRhOworICAgICAgICBzdGQ6OnZhcmlhbnQ8
U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHBsYXRmb3JtRGF0YTsKICAgICB9
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUGFzdGVib2FyZEN1c3RvbURhdGEoKTsKQEAgLTY1LDEx
ICs2NiwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRD
dXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciYmKTsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUp
IGNvbnN0OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1c3RvbURh
dGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKIAogICAgIHZvaWQgd3JpdGVTdHJpbmcoY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICB2b2lkIHdyaXRlRGF0
YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CisgICAgdm9p
ZCB3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhKTsKICAgICB2b2lkIHdyaXRlU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKICAgICB2b2lkIGNsZWFyKCk7CkBAIC04
Myw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZm9yRWFjaFR5cGUoRnVuY3Rpb248dm9p
ZChjb25zdCBTdHJpbmcmKT4mJikgY29uc3Q7CiAgICAgdm9pZCBmb3JFYWNoUGxhdGZvcm1TdHJp
bmcoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk+
JiYpIGNvbnN0OwotICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rp
b248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJl
ZjxTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYpIGNvbnN0OworICAgIHZvaWQgZm9yRWFjaFBsYXRm
b3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mIGRhdGEp
PiYmKSBjb25zdDsKICAgICB2b2lkIGZvckVhY2hDdXN0b21TdHJpbmcoRnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk+JiYpIGNvbnN0OwogCiAgICAg
Ym9vbCBoYXNEYXRhKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRTdHJhdGVneS5oCmluZGV4IDFjMDcyNmZlYjNlMDJhZWQzMmI0NmYyNjJiY2RhMTY5ZDY3MmVi
MmMuLmM0MWUwODUyNDQ5NmM2N2YxZjE1MDM4ZmJiMjZlOWMyOWRhNjk4YzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0zMSwxMCArMzEsMTEg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRh
OwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3Rl
Ym9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwpAQCAtNjIsNyArNjMsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFR5cGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgaW50
NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAg
ICB2aXJ0dWFsIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2
aXJ0dWFsIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgQ29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGlu
dDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250
ZW50RmlsdGVyLmgKaW5kZXggM2Y0ODMyYTVhNjU4YzFjYzdjMGFhMTNiMjZlMGVhNDczM2U5ZDNi
Ny4uOWU3MmU0NGEyZWFjNGQ4ZWY3MzBiOTg3MWQwZWM1MDhlZDlmYWM0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKQEAgLTM0LDcgKzM0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IFBsYXRmb3JtQ29udGVudEZpbHRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBA
IC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhZGREYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoZWRBZGRpbmdEYXRhKCkgPSAwOwotICAgIHZpcnR1YWwgUmVmPFNoYXJlZEJ1ZmZlcj4g
cmVwbGFjZW1lbnREYXRhKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0ID0gMDsKICNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpCiAgICAgdmlydHVhbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIg
dW5ibG9ja0hhbmRsZXIoKSBjb25zdCA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMxMDA3NDI1MDAyNDNiYjQ2ZmY1
OTg2ODYxZTg0YTJmZDk2ZS4uNzFkZmI5M2U1NzU2MGUzM2E3ZjZjODBjMjBmOTJkNWIyY2FlYzEz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAg
LTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2Fy
ZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOwog
c3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1
Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBwdWJs
aWM6CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgd2ls
bCByZXR1cm4gMCBpZiBwYXN0ZWJvYXJkIG93bmVyc2hpcCBoYXMgYmVlbiB0YWtlbiBmcm9tIHVz
LgogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3QgY29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0
ZWJvYXJkKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoU2hh
cmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90
IHNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRf
dCBzZXRDb2xvcihjb25zdCBDb2xvciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0
U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKaW5kZXgg
NGNiMzMwMWU3ZGY3MDcxYzVkZDlmYzU5YmM1NzE4NWM0ZTkxNDc2OC4uNjMxYWRlN2NjZjdhZDI5
NjkzYTJlNzY1MWZlNmE5Y2RlYmQzNzczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgY29uc3QgUmVzb3VyY2VFcnJv
ciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0Vycm9yKCkgY29uc3QKICAgICByZXR1cm4gbV9w
cmV2aWV3RXJyb3I7CiB9CiAKLWNvbnN0IFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEoKSBjb25zdAorY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgUHJldmll
d0NvbnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByZXZpZXdE
YXRhLmdldCgpOworICAgIHJldHVybiAqbV9wcmV2aWV3RGF0YS0+Z2V0KCk7CiB9CiAKIHZvaWQg
UHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKQEAgLTkwLDcgKzkwLDcgQEAg
dm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWluUmVzb3VyY2UoKQogICAgIH0pOwogfQog
Ci12b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmFwcGVuZEZyb21CdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmFwcGVuZEZyb21CdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHdoaWxlIChidWZmZXIu
c2l6ZSgpID4gbV9sZW5ndGhBcHBlbmRlZCkgewogICAgICAgICBhdXRvIG5ld0RhdGEgPSBidWZm
ZXIuZ2V0U29tZURhdGEobV9sZW5ndGhBcHBlbmRlZCk7CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9p
ZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50
JiBjbGllbnQpCiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmco
KnRoaXMpOwogCiAgICAgaWYgKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50
KGNsaWVudCkpCi0gICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEo
KnRoaXMsIG1fcHJldmlld0RhdGEuZ2V0KCkpOworICAgICAgICBjbGllbnQucHJldmlld0NvbnZl
cnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCAqbV9wcmV2aWV3RGF0YS0+Z2V0KCkpOwogCiAgICAg
aWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNvbnZlcnRpbmcgfHwgIWhhc0NsaWVudChjbGllbnQpKQog
ICAgICAgICByZXR1cm47CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVy
OjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xp
ZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKCp0aGlzKTsKIH0KIAotdm9p
ZCBQcmV2aWV3Q29udmVydGVyOjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSkKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0
YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGF1dG8gcHJvdGVj
dGVkVGhpcyB7IFJlZiB7ICp0aGlzIH0gfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlci5oCmluZGV4IDJhMzcyOTIyNzk5Y2U2YWZmYWFiM2UxNDBkMTkwYmE2NGNm
OGNlMmIuLjkyMDJlZGRkOWUxMDViMjczNWVkYzE0NmYyNjY0YzEzY2I5YzM0MWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTQxLDE1ICs0MiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJl
c291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZp
ZXc7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJD
bGllbnQ7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyOwogCiBzdHJ1Y3QgUHJldmll
d1BsYXRmb3JtRGVsZWdhdGUgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3UGxhdGZvcm1EZWxlZ2F0
ZT4gewogICAgIHZpcnR1YWwgflByZXZpZXdQbGF0Zm9ybURlbGVnYXRlKCkgPSBkZWZhdWx0Owog
Ci0gICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRl
RGlkRmluaXNoTG9hZGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRGYWls
V2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiB9OwpAQCAtNzIsNyArNzQsNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHByZXZpZXdGaWxlTmFtZSgpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwcmV2aWV3VVRJKCkgY29uc3Q7CiAgICAg
Y29uc3QgUmVzb3VyY2VFcnJvciYgcHJldmlld0Vycm9yKCkgY29uc3Q7Ci0gICAgY29uc3QgU2hh
cmVkQnVmZmVyJiBwcmV2aWV3RGF0YSgpIGNvbnN0OworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIHByZXZpZXdEYXRhKCkgY29uc3Q7CiAKICAgICB2b2lkIGZhaWxlZFVwZGF0aW5n
KCk7CiAgICAgdm9pZCBmaW5pc2hVcGRhdGluZygpOwpAQCAtOTQsNyArOTYsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgaXNQbGF0Zm9ybVBhc3N3b3JkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYp
IGNvbnN0OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBpdGVyYXRlQ2xpZW50cyhU
JiYgY2FsbGJhY2spOwotICAgIHZvaWQgYXBwZW5kRnJvbUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZm
ZXImKTsKKyAgICB2b2lkIGFwcGVuZEZyb21CdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpOwogICAgIHZvaWQgZGlkQWRkQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmKTsK
ICAgICB2b2lkIGRpZEZhaWxDb252ZXJ0aW5nV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKICAgICB2b2lkIGRpZEZhaWxVcGRhdGluZygpOwpAQCAtMTA2LDcgKzEwOCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBwbGF0Zm9ybVVubG9ja1dpdGhQYXNzd29yZChjb25zdCBTdHJpbmcmKTsK
IAogICAgIC8vIFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlCi0gICAgdm9pZCBkZWxlZ2F0ZURpZFJl
Y2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgZGVsZWdhdGVE
aWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAg
dm9pZCBkZWxlZ2F0ZURpZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsKICAgICB2b2lkIGRlbGVnYXRl
RGlkRmFpbFdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKQEAgLTExOCw3
ICsxMjAsNyBAQCBwcml2YXRlOgogICAgICAgICBGaW5pc2hlZENvbnZlcnRpbmcsCiAgICAgfTsK
IAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fcHJldmlld0RhdGE7CisgICAgVW5pcXVlUmVmPFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcHJldmlld0RhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBtX3By
ZXZpZXdFcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKICAg
ICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlVwZGF0aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmgKaW5kZXggMDRlYTM2ODA2OTJiMjUy
YTE5ODljMjZjYTIwNDIxMjc3N2FhM2I3Yi4uOWNlZTkzMzIwYjIzOGI0Y2Q3M2NkZDJlMDMwMmMz
YmY0ZGFkNjhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0Nv
bnZlcnRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXJDbGllbnQuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFByZXZpZXdDb252ZXJ0ZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByZXZpZXdD
b252ZXJ0ZXJDbGllbnQgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVyQ2xpZW50PiB7
CiAgICAgdmlydHVhbCB+UHJldmlld0NvbnZlcnRlckNsaWVudCgpID0gZGVmYXVsdDsKQEAgLTQy
LDcgKzQyLDcgQEAgc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQgOiBDYW5NYWtlV2Vha1B0
cjxQcmV2aWV3Q29udmVydGVyQ2xpZW50PiB7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252
ZXJ0ZXJEaWRGaW5pc2hVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXIm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRp
bmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZl
cnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBTaGFyZWRCdWZmZXIm
IG5ld0RhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2Vp
dmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBu
ZXdEYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hD
b252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZp
ZXdDb252ZXJ0ZXJEaWRGYWlsQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92
aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVy
LmgKaW5kZXggODI3ODYzOTNmY2VkNzU0Yzg1ZjdiMjg5MTI1MmY1MTZiZWQwZDU0OS4uYjk4NmVl
NDBkMTk3NTE3NGY1NGFkMjlhMTY4Y2FkZjE4OTQ1NmMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgKQEAgLTMyLDcgKzMyLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciA6
IENhbk1ha2VXZWFrUHRyPFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcj4gewogICAgIHZpcnR1YWwg
flByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcigpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9p
ZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVy
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQ
cmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJvdmlkZVBhc3N3b3Jk
Rm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBTdHJpbmcmKT4mJikgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDhlNjhlMzM3NzgxZmIyOWFkMzljNTViOWFmZDM5MDAz
NTM1Mzg1ZC4uOTdlZjZiZTRmODFmMWM0NTkyYzM1MjEwZDk3ZDlhNmMyODg1NTUxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zNyw2MyArMzcsNTIgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7
CiAgICAgYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZl
cihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiB7
CiAgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXpl
KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJiBmaWxlRGF0YSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKICAgICA6IG1f
c2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBl
bmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKSB9KTsKIH0KIAot
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlk
ZXIpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKERhdGFT
ZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUo
KSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZN
b3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50
OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewogICAgIGFw
cGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAotI2lmIFVTRShHU1RSRUFNRVIpCi1SZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVk
QnVmZmVyKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIobWFwcGVkQnVmZmVyKSk7CisgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBt
YXBwZWRCdWZmZXIpCi0gICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkKKyNpZiBVU0Uo
R1NUUkVBTUVSKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogewotICAg
IG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIp
fSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihtYXBw
ZWRCdWZmZXIpKTsKIH0KLSNlbmRpZgogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcg
bWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0gICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVz
ZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKLSAgICAg
ICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1h
cHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Ci0gICAgICAgIGlmIChtYXBwaW5nU3VjY2Vz
cykKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUo
bWFwcGVkRmlsZURhdGEpKSk7Ci0gICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKK0ZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1h
cHBlZEJ1ZmZlcikKKyAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKKyAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikg
fSk7CiB9CisjZW5kaWYKIAotc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXpl
X3Qgc2l6ZSkKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNp
emVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7CiAgICAgY29t
YmluZWREYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CkBAIC0xMDMsMzMgKzkyLDE5
IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0K
IAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8
U2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNv
bnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUg
YWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAg
ICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlz
LCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2Lgot
ICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0g
ICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAgICAgIHJldHVybjsKLQorICAgIGlm
IChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8U2hhcmVk
QnVmZmVyKj4oY29uc3RfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4odGhpcykpIH07Cisg
ICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsK
ICAgICBhdXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywg
bV9zaXplKTsKLSAgICBtX3NlZ21lbnRzLmNsZWFyKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQo
ezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKX0pOwotICAgIEFT
U0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7Ci19Ci0KLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0
Ci17Ci0gICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNv
bnNpc3RlbnQoKSk7Ci0gICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOwor
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwog
fQogCi1WZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CitWZWN0
b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdAogewog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGRhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShzaXplKCkpOwpAQCAtMTM5LDcgKzExNCw3IEBAIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZm
ZXI6OmNvcHlEYXRhKCkgY29uc3QKICAgICByZXR1cm4gZGF0YTsKIH0KIAotVmVjdG9yPHVpbnQ4
X3Q+IFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKQorVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OnRha2VEYXRhKCkKIHsKICAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xNTQsMTMgKzEyOSwxMyBAQCBWZWN0b3I8dWludDhf
dD4gU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0K
IAotU2hhcmVkQnVmZmVyRGF0YVZpZXcgU2hhcmVkQnVmZmVyOjpnZXRTb21lRGF0YShzaXplX3Qg
cG9zaXRpb24pIGNvbnN0CitTaGFyZWRCdWZmZXJEYXRhVmlldyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgY29uc3QgRGF0
YVNlZ21lbnRWZWN0b3JFbnRyeSogZWxlbWVudCA9IGdldFNlZ21lbnRGb3JQb3NpdGlvbihwb3Np
dGlvbik7CiAgICAgcmV0dXJuIHsgZWxlbWVudC0+c2VnbWVudC5jb3B5UmVmKCksIHBvc2l0aW9u
IC0gZWxlbWVudC0+YmVnaW5Qb3NpdGlvbiB9OwogfQogCi1jb25zdCBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50VmVjdG9yRW50cnkqIFNoYXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9u
KHNpemVfdCBwb3NpdGlvbikgY29uc3QKK2NvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50VmVjdG9yRW50cnkqIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmdldFNlZ21lbnRG
b3JQb3NpdGlvbihzaXplX3QgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQo
cG9zaXRpb24gPCBtX3NpemUpOwogICAgIGF1dG8gY29tcGFyYXRvciA9IFtdKGNvbnN0IHNpemVf
dCYgcG9zaXRpb24sIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkmIGVudHJ5KSB7CkBAIC0x
NzEsNyArMTQ2LDcgQEAgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvckVudHJ5
KiBTaGFyZWRCdWZmZXI6OmdldFNlZ21lbnRGb3JQb3NpdGlvbigKICAgICByZXR1cm4gZWxlbWVu
dDsKIH0KIAotU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAorU3RyaW5n
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKIHsKICAgICBTdHJp
bmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAgICAgZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNl
Z21lbnQpIHsKQEAgLTE4MSw3ICsxNTYsMjIgQEAgU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhT
dHJpbmcoKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAK
LVJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigp
IGNvbnN0CitzaXplX3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6c2l6ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fc2l6ZTsKK30KKworYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppc0Vt
cHR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIXNpemUoKTsKK30KKworYm9vbCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRp
Z3VvdXM7Cit9CisKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBB
cnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c2l6ZSgpKSwgMSk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewpAQCAtMjAwLDY4ICsxOTAsNjUg
QEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCkgY29uc3QKICAgICByZXR1cm4gYXJyYXlCdWZmZXI7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVy
OjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjphcHBlbmQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAg
ICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIG1fc2VnbWVu
dHMucmVzZXJ2ZUNhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRzLnNp
emUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5tX3NlZ21lbnRzKSB7
Ci0gICAgICAgIG1fc2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHttX3NpemUsIGVsZW1lbnQuc2Vn
bWVudC5jb3B5UmVmKCl9KTsKKyAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBt
X3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6ZSArPSBl
bGVtZW50LnNlZ21lbnQtPnNpemUoKTsKICAgICB9CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25z
aXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVu
ZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIEFTU0VSVCghbV9o
YXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3Rv
cjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBl
bmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAg
bV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2
ZWN0b3IpKSB9KTsKICAgICBtX3NpemUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5
Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09u
ZVNlZ21lbnQpOwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKLSAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpfSk7
CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RG
TW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9IGRhdGFTaXplOwogICAgIEFTU0VSVChpbnRl
cm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyKCkKK3Zv
aWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEpLCBsZW5ndGgpOworfQorCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNsZWFy
KCkKIHsKICAgICBtX3NpemUgPSAwOwogICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKICAgICBBU1NF
UlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y2xvbmUgPSBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7CisgICAgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGNsb25lID0gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KTsKICAgICBjbG9uZS0+bV9zaXplID0gbV9zaXplOwogICAgIGNsb25lLT5tX3NlZ21lbnRzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3Qg
YXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpCi0gICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVu
Y2hlY2tlZEFwcGVuZCh7ZWxlbWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29w
eVJlZigpfSk7CisgICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IGVs
ZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICBB
U1NFUlQoY2xvbmUtPmludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIEFTU0VSVChpbnRlcm5h
bGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVy
KQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3Zp
ZGVyKSkpOwotfQotCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVu
Y3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKK3Zv
aWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248
dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBh
dXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsKICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBzZWdt
ZW50cykKICAgICAgICAgYXBwbHkoU3BhbiB7IHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdt
ZW50LnNlZ21lbnQtPnNpemUoKSB9KTsKIH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6OnN0YXJ0c1dp
dGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdAorYm9vbCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHBy
ZWZpeCkgY29uc3QKIHsKICAgICBpZiAocHJlZml4LmVtcHR5KCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMjgzLDcgKzI3MCw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNv
bnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnJlYWQoc2l6ZV90IG9mZnNldCwg
c2l6ZV90IGxlbmd0aCkgY29uc3QKK1ZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgaWYgKG9mZnNldCA+PSBzaXplKCkpCkBAIC0zMTAsMTIg
KzI5NywxMiBAQCBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLXZvaWQgU2hh
cmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0
Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwg
c2l6ZV90IGxlbmd0aCkgY29uc3QKIHsKICAgICByZXR1cm4gY29weVRvKGRlc3RpbmF0aW9uLCAw
LCBsZW5ndGgpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0
aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAordm9pZCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNp
emVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxlbmd0aCArIG9mZnNldCA8PSBzaXpl
KCkpOwogICAgIGlmIChvZmZzZXQgPj0gc2l6ZSgpKQpAQCAtMzUzLDE0ICszNDAsMTMgQEAgdm9p
ZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwg
c2l6ZV90IGxlbmd0aCkgY29uc3QKICAgICB9CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpoYXNP
bmVTZWdtZW50KCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2Vn
bWVudCgpIGNvbnN0CiB7Ci0gICAgYXV0byBpdCA9IGJlZ2luKCk7Ci0gICAgcmV0dXJuIGl0ICE9
IGVuZCgpICYmICsraXQgPT0gZW5kKCk7CisgICAgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID09
IDE7CiB9CiAKICNpZiBBU1NFUlRfRU5BQkxFRAotYm9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFs
bHlDb25zaXN0ZW50KCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aW50ZXJu
YWxseUNvbnNpc3RlbnQoKSBjb25zdAogewogICAgIHNpemVfdCBwb3NpdGlvbiA9IDA7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykgewpAQCAtMzcyLDcgKzM1OCw1
NyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogfQog
I2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoKQor
eworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVm
ZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQt
PnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7
CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikKK3sKKyAg
ICBBU1NFUlQoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpIHx8IGNvbnRpZ3VvdXNC
dWZmZXItPmlzRW1wdHkoKSk7CisgICAgbV9zaXplID0gY29udGlndW91c0J1ZmZlci0+c2l6ZSgp
OworICAgIGlmIChjb250aWd1b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkpCisgICAgICAgIG1f
c2VnbWVudHMuYXBwZW5kKHsgMCwgY29udGlndW91c0J1ZmZlci0+bV9zZWdtZW50c1swXS5zZWdt
ZW50LmNvcHlSZWYoKSB9KTsKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitTaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisg
ICAgOiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUoZGF0YSkpCit7CisgICAgbV9jb250
aWd1b3VzID0gdHJ1ZTsKK30KKworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVz
ZUZpbGVNYXBwaW5nKQoreworICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxl
TWFwcGluZzo6WWVzKSB7CisgICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7CisgICAgICAgIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRG
aWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOworICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCisg
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBl
ZEZpbGVEYXRhKSkpOworICAgIH0KKyAgICByZXR1cm4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZp
bGVQYXRoKTsKK30KKworY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QK
K3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKK30KKworY29uc3Qg
Y2hhciogU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKworY29uc3QgdWludDhf
dCogRGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6
bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4g
Y29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5kYXRhKCk7IH0sCkBAIC0zOTEsMTMgKzQyNywx
MyBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29u
c3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQog
Ci1ib29sIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEo
KSBjb25zdAorYm9vbCBEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKICNpZiAhVVNFKENGKQotdm9pZCBTaGFy
ZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKK3ZvaWQgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogewogfQogI2Vu
ZGlmCkBAIC00MDcsNyArNDQzLDcgQEAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBTaGFyZWRC
dWZmZXI6OmRlY29kZXIoKSBjb25zdAogICAgIHJldHVybiB7eyByZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXplKCkgfX07CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVy
OjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0Citib29sIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTQ1Niw3ICs0OTIsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9
PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CitzaXplX3Qg
RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFr
ZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6
ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApAQCAtNDc1LDcgKzUxMSw3IEBAIHNpemVfdCBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2
aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmll
dzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYg
c2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVm
PERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVu
dCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQp
CiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlv
bldpdGhpblNlZ21lbnQpCkBAIC00OTksMTIgKzUzNSwxNyBAQCBjb25zdCB1aW50OF90KiBTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0
YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiB9CiAKK2NvbnN0IGNoYXIqIFNoYXJlZEJ1
ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsKK30KKwogUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAg
Y29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7
Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3Nl
Z21lbnQ7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92
aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBkYXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7
IH0sCi0gICAgICAgIFtzZWdtZW50LCBzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0K
KyAgICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGYyM2Y1ZDY5YWQzMmVk
NjQwYjk1NzdiMmU2YzQ1NDkxODM5MzY4YWQuLjliZjc5N2MxYzE2OTk1YzFlYTI2YzMwYTE1ZmEz
MDVhMDExYTEzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9u
IExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dApAQCAtNjIsMTQ2ICs2MiwxMzMgQEAgY2xhc3MgRGVjb2RlcjsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsK
IAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21l
bnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90
aGVyIG9iamVjdHMuCisvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUg
YSBuZXcgRGF0YVNlZ21lbnQuCitjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0K
LSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBz
aXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihk
YXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KKyAgICBXRUJD
T1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBp
bmcgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBN
YXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOwotCi0gICAgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7CisgICAgc3RhdGlj
IFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAgewor
ICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKKyAgICB9CiAKLSNpZiBVU0UoRk9VTkRBVElP
TikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSAgICBSZXRh
aW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFwcGVuZChOU0RhdGEg
Kik7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRl
Q0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRh
dGFSZWYpOwotICAgIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAgc3RhdGljIFJlZjxEYXRh
U2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYg
VVNFKEdMSUIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsK
LSAgICBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisgICAgc3RhdGljIFJl
ZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLQogI2lm
IFVTRShHU1RSRUFNRVIpCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RN
YXBwZWRPd25lZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShS
ZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotICAgIC8vIENhbGxpbmcg
ZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8gYmUgY29waWVkIGludG8gb25l
IHNlZ21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAgLy8gSXRlcmF0ZSB0aGUgc2Vn
bWVudHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4KLSAgICAvLyBGSVhNRTogQXVk
aXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdpdGgg
aXRlcmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsK
LSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5
RGF0YSgpIGNvbnN0OwotICAgIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNp
emVfdCBsZW5ndGgpIGNvbnN0OwotCi0gICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBh
dm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBz
YWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgotICAgIFZlY3Rvcjx1aW50OF90
PiBleHRyYWN0RGF0YSgpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0
YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAKLSAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVm
ZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0Ci0gICAg
Ly8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBm
bGF0IGJ1ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVy
KCkgY29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQot
Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQotCi0gICAgdm9p
ZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdWlu
dDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSks
IGxlbmd0aCk7IH0KLSAgICB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7Ci0KLSAgICB2
b2lkIGNsZWFyKCk7CisgICAgc3RydWN0IFByb3ZpZGVyIHsKKyAgICAgICAgRnVuY3Rpb248Y29u
c3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7Cisg
ICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKLSAgICB2b2lkIGNv
cHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7Ci0gICAgdm9pZCBj
b3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNv
bnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3Zp
ZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIp
KSk7IH0KIAotICAgIC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBp
bW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgot
ICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRh
U2VnbWVudC4KLSAgICBjbGFzcyBEYXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxEYXRhU2VnbWVudD4gewotICAgIHB1YmxpYzoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQg
Y29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXpl
X3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JU
IFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCiAKLSAgICAg
ICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKLSAgICAg
ICAgfQorICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwogCitwcml2YXRl
OgorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikKLSAg
ICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+
JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEp
KSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRh
dGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlm
CiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShH
UmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50
KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEdSZWZQdHI8R0J5
dGVzPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsg
fQogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxp
Y2l0IERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQorICAg
ICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgotICAgICAg
ICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0
YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhJiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9
CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKKyAgICAgICAg
OiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQogCi0gICAgICAgIHN0cnVj
dCBQcm92aWRlciB7Ci0gICAgICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRh
OwotICAgICAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7Ci0gICAgICAgIH07Ci0KLSAg
ICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsg
fQotCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0
ZU5TRGF0YSgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICAgICAgYm9vbCBjb250YWluc01hcHBlZEZp
bGVEYXRhKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChWZWN0
b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92
ZShkYXRhKSkgeyB9CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKICNpZiBVU0Uo
Q0YpCi0gICAgICAgIERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKLSAg
ICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBEYXRh
U2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKICNlbmRp
ZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBw
ZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RG
TW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisj
ZW5kaWYKKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3Zp
ZGVyPiBtX2ltbXV0YWJsZURhdGE7CisgICAgZnJpZW5kIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CisjaWYgIVVTRShGT1VOREFUSU9OKQorICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZm
ZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxl
RGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBw
cm92aWRlcikKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIp
KSB7IH0KK307CisKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4geworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKTsgfQorICAgIHN0YXRpYyBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXpl
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoZGF0YSwgc2l6
ZSkpOyB9CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBl
ZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIo
V1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQorICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7IH0K
KyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWlu
dDhfdD4mJiB2ZWN0b3IpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsgfQorICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikp
KTsgfQogCi0gICAgICAgIHN0ZDo6dmFyaWFudDxWZWN0b3I8dWludDhfdD4sCisjaWYgVVNFKEZP
VU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5T
RGF0YUFycmF5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhKik7CisjZW5kaWYKICNpZiBVU0UoQ0YpCi0g
ICAgICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlm
CisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0
ZXMqKTsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgICAgIFJlZlB0cjxH
c3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRp
ZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCi0gICAgICAgICAgICBQ
cm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwotICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVm
ZmVyOwotICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRh
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90
IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisKKyAgICAvLyBTaW1pbGFyIHRvIGNvcHlE
YXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3
aGVuIGl0IGlzIHNhZmUgKFRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQp
LgorICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOworCisgICAgLy8gQ3JlYXRlcyBh
biBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcidzIGNv
bnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVu
dGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdDsKKworICAgIFdFQkNP
UkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGlzRW1wdHkoKSBjb25zdDsKIAotICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3Qg
RnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAg
Ym9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdDsKKworICAgIFdF
QkNPUkVfRVhQT1JUIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBs
ZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3Rp
bmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
dGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisKKyAg
ICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJh
Y2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewogICAgICAg
ICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIxMCw1NiArMTk3LDE3NyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBWZWN0b3I8RGF0YVNlZ21lbnRWZWN0b3JFbnRy
eSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29u
c3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigpOyB9CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6
OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuZW5kKCk7IH0K
LSAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGhhc09uZVNlZ21lbnQoKSBjb25zdDsKIAogICAgIC8vIGJlZ2luIGFuZCBlbmQgdGFrZSBPKDEp
IHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRpbWUuCi0gICAgU2hhcmVkQnVmZmVyRGF0YVZp
ZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0
OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhpbnRNZW1vcnlOb3ROZWVk
ZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3Ro
ZXIpOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFy
ZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CiAKLXByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihj
b25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3Qg
Y2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90
PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYm
KTsKK3Byb3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOworCisgICAgRGF0
YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29sIG1fY29udGlndW91cyB7IGZhbHNl
IH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50
OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoUmVmPFNo
YXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNFKENGKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihD
RkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKEdCeXRlcyopOwogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAg
ICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVk
QnVmZmVyJik7CiAjZW5kaWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogCi0gICAgdm9pZCBj
b21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNz
IFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBw
ZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBw
ZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7CisjZW5kaWYKKyNpZiBVU0Uo
Q0YpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKKyNlbmRpZgog
Ci0gICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1
cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVj
dG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigp
OwogCisgICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCBy
ZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAg
IGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXpl
X3QgcG9zaXRpdGlvbikgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwotCi0gICAgc2l6
ZV90IG1fc2l6ZSB7IDAgfTsKLSAgICBtdXRhYmxlIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVu
dHM7Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG11dGFibGUgYm9vbCBtX2hhc0JlZW5Db21i
aW5lZEludG9PbmVTZWdtZW50IHsgZmFsc2UgfTsKICAgICBib29sIGludGVybmFsbHlDb25zaXN0
ZW50KCkgY29uc3Q7CiAjZW5kaWYKIH07CiAKLWlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVk
QnVmZmVyOjpleHRyYWN0RGF0YSgpCisvLyBBIFNoYXJlZEJ1ZmZlciBpcyBhIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGlyZWN0bHkgYWNjZXNzIGl0cyBjb250ZW50IHZp
YSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhvZHMuCitjbGFzcyBTaGFyZWRCdWZmZXIgOiBw
dWJsaWMgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB7CitwdWJsaWM6CisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShBcmdz
JiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdz
KSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcigpKTsKKyAg
ICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCisgICAgICAgICAg
ICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxB
cmdzPihhcmdzKS4uLikpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVy
ID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLik7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RG
TW92ZShidWZmZXIpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCBj
b25zdCB1aW50OF90ICpkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgY2hh
ciogZGF0YUFzQ2hhclB0cigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFdURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OworCisgICAgZW51bSBjbGFzcyBNYXlVc2VG
aWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBp
bmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRh
aW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShDRikK
KyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBj
b25zdDsKKyNlbmRpZgorI2lmIFVTRShHTElCKQorICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8
R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdF
QkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKK307CisK
K2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworcHVibGljOgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRlZmF1bHQ7CisgICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCisgICAgeworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVm
ZXJlbmNlIHRvIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFzIGFsbCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAgICAgLy8gb25jZSBjcmVhdGVkLgor
ICAgICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPmhhc09uZVJlZigpKSB7CisgICAgICAgICAg
ICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBhcHBlbmQoKmJ1ZmZlcik7CisgICAgfQorICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAg
IHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhcyBhbGwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBzaG91
bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKGJ1
ZmZlci0+aGFzT25lUmVmKCkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZm
ZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGFwcGVuZChXVEZN
b3ZlKGJ1ZmZlci5nZXQoKSkpOworICAgIH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJn
cz4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6IG1f
YnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pKSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZv
aWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7
CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsK
KyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlz
TnVsbCgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0K
KyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5p
c0VtcHR5KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1f
YnVmZmVyID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKQorICAgIHsKKyAgICAgICAgcmVz
ZXQoKTsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgfQorCisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsg
fQorICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlKCkKKyAgICB7CisgICAgICAg
IGVuc3VyZUJ1ZmZlcigpOworICAgICAgICByZXR1cm4gbV9idWZmZXIucmVsZWFzZU5vbk51bGwo
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBlbnN1cmVCdWZmZXIoKQorICAgIHsKKyAg
ICAgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgICAgIG1fYnVmZmVyID0gRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgfQorICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBtX2J1ZmZlcjsKK307CisKK2lubGluZSBWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKICAg
ICAgICAgcmV0dXJuIHRha2VEYXRhKCk7CkBAIC0yNjgsMTcgKzM3NiwxNyBAQCBpbmxpbmUgVmVj
dG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogCiBjbGFzcyBXRUJDT1JF
X0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVy
RGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlv
bldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxs
b3B0KTsKKyAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYsIHNpemVf
dCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0g
c3RkOjpudWxsb3B0KTsKICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZm
ZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0Owog
ICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXND
aGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSgpKTsgfQorICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsKICAgICBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKICNpZiBVU0UoRk9VTkRB
VElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKICNlbmRp
ZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9z
ZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9zZWdtZW50OwogICAgIGNvbnN0
IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9zaXpl
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyLmNwcAppbmRleCBjZGI2ZTcwMzQwNGQ0MjZkZDIxYjQ3OWZhODljMGRhOWI4YzQ5Zjhl
Li45ZDA1NWNlMjdkODhjM2Q2MmU1YmQxY2Q0NmFkOTFmNWNjNDMxZjQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCkBAIC0z
Niw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShNSFRNTCkKIAot
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1
ZmZlciogYnVmZmVyLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcikKK1NoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBidWZmZXIsIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKQogICAgIDogbV9pdGVy
YXRvckN1cnJlbnQoYnVmZmVyLT5iZWdpbigpKQogICAgICwgbV9pdGVyYXRvckVuZChidWZmZXIt
PmVuZCgpKQogICAgICwgbV9zZWdtZW50KG1faXRlcmF0b3JDdXJyZW50ICE9IG1faXRlcmF0b3JF
bmQgPyBtX2l0ZXJhdG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0YSgpIDogbnVsbHB0cikKQEAgLTQ0
LDcgKzQ0LDcgQEAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWMKIHsKIH0KIAotU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVy
LCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCitTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBj
aGFyKiBzZXBhcmF0b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVudChidWZmZXItPmJlZ2luKCkp
CiAgICAgLCBtX2l0ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAgLCBtX3NlZ21lbnQobV9p
dGVyYXRvckN1cnJlbnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRlcmF0b3JDdXJyZW50LT5zZWdt
ZW50LT5kYXRhKCkgOiBudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKaW5kZXggNWQ0ZTZmZWU1ODJjNjYxNmZkMDdlMzk5NGZm
NzVjOGYwN2EyZmNlMS4uMWM2NDA4ZDRjNzM2YTFjNGE0NWNlZTdiM2Y2OTY1N2JjOWEyNjE1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRl
ci5oCkBAIC00MSw4ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09S
RV9FWFBPUlQgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgewogcHVibGljOgotICAgIFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJh
dG9yKTsKLSAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqLCBjb25zdCBj
aGFyKiBzZXBhcmF0b3IpOworICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcik7CisgICAgU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IGNoYXIqIHNl
cGFyYXRvcik7CiAKICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBWZWN0b3I8Y2hhcj4mKTsK
ICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBjaGFyKik7CkBAIC01OCw4ICs1OCw4IEBAIHB1
YmxpYzoKICAgICBzaXplX3QgcGVlayhWZWN0b3I8dWludDhfdD4mLCBzaXplX3QpOwogCiBwcml2
YXRlOgotICAgIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9y
IG1faXRlcmF0b3JDdXJyZW50OwotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRW
ZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JFbmQ7CisgICAgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JDdXJy
ZW50OworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9y
Ojpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yRW5kOwogICAgIGNvbnN0IHVpbnQ4X3QqIG1fc2Vn
bWVudCB7IG51bGxwdHIgfTsKICAgICBzaXplX3QgbV9zZWdtZW50SW5kZXggeyAwIH07CiAgICAg
VmVjdG9yPGNoYXI+IG1fc2VwYXJhdG9yIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKaW5kZXggYjJkN2E1NTBkNDYwZTk0Y2QzMTUxMzRh
MzE5NWJjZDkxYzdiNzg5NC4uYTRiNGJiMTA0YjRkODQwMTViOGFhNWI1M2U3ZGZhNzg4Y2VkMjVm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKQEAg
LTczLDcgKzczLDcgQEAgdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyhjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9jdXN0b21EYXRhLndyaXRl
U3RyaW5nKHR5cGUsIHZhbHVlKTsKIH0KIAotdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZURh
dGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFN0
YXRpY1Bhc3RlYm9hcmQ6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgbV9ub25EZWZhdWx0RGF0YVR5cGVzLmFk
ZCh0eXBlKTsKICAgICBtX2N1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIFdURk1vdmUoZGF0YSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCmluZGV4IGMwOWI2
ZGUzMWYyZWRlYmUwMTg4ZGM5YzQ2NmEyNzFlMWI4YjllMTQuLmVkZDcxMzYyM2YwNmQyMmIzOGU4
MzJhMjgzN2ZlNjY5OTlkZmQ3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1N0YXRpY1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQ
YXN0ZWJvYXJkLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBTdGF0aWNQYXN0ZWJvYXJkIGZpbmFsIDogcHVibGljIFBhc3RlYm9hcmQgewogcHVibGljOgpA
QCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1c3RvbURh
dGEoY29uc3QgU3RyaW5nJiB0eXBlKSBmaW5hbDsKIAogICAgIHZvaWQgd3JpdGVTdHJpbmcoY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpIGZpbmFsOwotICAgIHZvaWQgd3Jp
dGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAg
ICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGRhdGEpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdJbkN1c3RvbURhdGEoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHZvaWQgY2xlYXIoKSBmaW5h
bDsKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaAppbmRleCA2ODc5NTkwMGM1
YWRmOWNjOTA0NWUwZWFiYjIyYjE4ZmE2Njk2MzE0Li4xZDY1YmM0MDNhZDg1MjQzYzY3MjVlNzA0
NDhkNmNkYWRjY2NjZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9Ob3dQbGF5aW5nSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05v
d1BsYXlpbmdJbmZvLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3Ry
dWN0IE5vd1BsYXlpbmdJbmZvQXJ0d29yayB7CiAgICAgU3RyaW5nIHNyYzsKICAgICBTdHJpbmcg
bWltZVR5cGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CiAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgTm93UGxheWluZ0luZm9BcnR3b3JrJiBvdGhlcikgY29uc3QKICAgICB7CkBAIC02
Nyw3ICs2Nyw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBzdGQ6Om9wdGlvbmFs
PE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gTm93UGxheWluZ0luCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBpbWFnZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGlt
YWdlRGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGltYWdlRGF0YSkpCiAgICAgICAgIHJl
dHVybiB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAppbmRleCBlOGIxOWJmMzRlYmEyM2I4
NTcyMDdiZTg4Y2UxYjQ1YmY4ZjJjY2MzLi5mMzIxNDI5NTFiMTc5OTZlNmNlMTY3NTYzMTZiZmQ0
NzNmYWE0ZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAg
Y2xhc3MgQXVkaW9GaWxlUmVhZGVyV2ViTURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogCiBwdWJsaWM6Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCiAgICAgUmVmPEF1ZGlvVHJhY2tQcml2YXRlV2ViTT4gbV90cmFjazsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2FiMzZlMmEw
YzA4MTJjOTRlMTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUxMDg5YjU3MTlmMDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lk
IE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05v
d1BsYXlpbmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdl
dCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRp
bWUuZ2V0KCkpOwogICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQ
bGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdvcmsg
PSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0
YSwgbnNBcnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5n
ZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxh
eWluZ0luZm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAg
ICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxh
eWluZ0luZm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0luZm8u
YXJ0d29yay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNmI2NjIxN2ZmMTYx
ZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uODE5ZTI2ZmE0Y2YwNjc5NTdhNTlmZWYyOWM5
OWYwM2Y1ZjQ0OTFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hh
cmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1
ZmZlckNGLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNo
YXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQorRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIHsKICAgICBh
cHBlbmQoZGF0YSk7CiB9CkBAIC00MywyNCArNDMsMjAgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRC
dWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCiAjaWYgIVVTRShGT1VOREFUSU9OKQogUmV0YWluUHRyPENG
RGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGlmICht
X3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7CisgICAgaWYgKGhhc09uZVNlZ21lbnQoKSkgewogICAg
ICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lmPFJldGFpblB0cjxDRkRhdGFSZWY+Pigm
bV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpKQogICAgICAgICAgICAgcmV0
dXJuICpkYXRhOwogICAgIH0KLSAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRl
TXV0YWJsZShudWxscHRyLCBzaXplKCkpKTsKLSAgICBmb3JFYWNoU2VnbWVudChbJl0oYXV0byYg
c2VnbWVudCkgewotICAgICAgICBDRkRhdGFBcHBlbmRCeXRlcyhjZkRhdGEuZ2V0KCksIHNlZ21l
bnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGNmRGF0YTsK
KyAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgZGF0YSgpLCBzaXplKCkp
KTsKIH0KICNlbmRpZgogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShD
RkRhdGFSZWYgZGF0YSkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKGRhdGEpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRN
ZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogewogICAgIGZvciAoY29uc3QgYXV0byYg
ZW50cnkgOiBtX3NlZ21lbnRzKSB7CiAgICAgICAgIGlmIChlbnRyeS5zZWdtZW50LT5oYXNPbmVS
ZWYoKSkgewpAQCAtNzAsOSArNjYsOCBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5v
dE5lZWRlZFNvb24oKSBjb25zdAogICAgIH0KIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVu
ZChDRkRhdGFSZWYgZGF0YSkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENG
RGF0YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2Vn
bWVudCk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6
ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAgICBtX3NpemUgKz0gQ0ZEYXRh
R2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKaW5kZXggMDc5N2RmYmU4
ZDAxOGJlNjM2MTc0NGM1OGY4OTJkZDU2ZWQ2ODljNS4uY2JlODc3MWE0NWQ4NjJjYjVhYjA1ZWNh
Mzk5OTI3ZTA3ODM4ZjU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCkBAIC01MSw3ICs1
MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92
ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEo
KSBjb25zdCBvdmVycmlkZTsKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9j
a0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBi
b29sIGlzUmVxdWlyZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KaW5kZXggNDI5MGRi
MTI4ZDAwMGE0MGVlZjcwZmQyOTQxZDYzNDQ5MDQ2ZGUwMy4uMmVmMjcwMWZlNjc4YmY5YjkyZGIy
MTJiYmVhNWM5MTVhM2ZjM2EyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KQEAgLTE3
NSw3ICsxNzUsNyBAQCB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpmaW5pc2hl
ZEFkZGluZ0RhdGEoKQogICAgIHNlbWFwaG9yZS53YWl0KCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZm
ZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25z
dAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChkaWRCbG9ja0RhdGEo
KSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVwbGFjZW1lbnREYXRhLmdl
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFs
Q29udHJvbHNDb250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Q
YXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCmluZGV4IDA2OGNkY2IzODNmNDIzNjVhYzMy
NjRlMjI5YTZkNjNiYzJiNGFiZDYuLjY3OWFlOTMyOTUxN2UxZjM5NDNiYTU3NjJhYzhmNTZlODYw
YzhjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFs
Q29udHJvbHNDb250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBv
dmVycmlkZTsKICAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKLSAg
ICBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3Zl
cnJpZGU7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xz
Q29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFs
Q29udHJvbHNDb250ZW50RmlsdGVyLm1tCmluZGV4IGI0NjFmOTc1MzZkZTNhMTU4MTNhNTgyN2I4
NjcxMzhiOTZkNGYzOGMuLjFjOTYwNDcxNmI0MjY5M2Q1ZTQ2YzJlMjNlOTQxZGEwMGM4M2U0ZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJv
bHNDb250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBQ
YXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6ZmluaXNoZWRBZGRpbmdEYXRhKCkKICAgICB1
cGRhdGVGaWx0ZXJTdGF0ZSgpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBQYXJlbnRhbENvbnRy
b2xzQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKK1JlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnRE
YXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkpOwogICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNmYyOGU4
MjQzNjBjY2QzMDg2YzAzMThmYWU0MDk4ZjFlZGUyOGUyNS4uYjgxNzA4MTdjZWM1OWUyMmQzYzBl
OWE3OGYxNDZjMDMzZTRjMTY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgTlNCaXRtYXBJ
bWFnZUZpbGVUeXBlIGJpdG1hcFBOR0ZpbGVUeXBlKCkKIH0KICNlbmRpZiAvLyBQTEFURk9STShN
QUMpCiAKLS8vIE1ha2luZyB0aGlzIG5vbi1pbmxpbmUgc28gdGhhdCBXZWJLaXQgMidzIGRlY29k
aW5nIGRvZXNuJ3QgaGF2ZSB0byBpbmNsdWRlIFNoYXJlZEJ1ZmZlci5oLgorLy8gTWFraW5nIHRo
aXMgbm9uLWlubGluZSBzbyB0aGF0IFdlYktpdCAyJ3MgZGVjb2RpbmcgZG9lc24ndCBoYXZlIHRv
IGluY2x1ZGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci5oLgogUGFzdGVib2FyZFdlYkNvbnRlbnQ6
OlBhc3RlYm9hcmRXZWJDb250ZW50KCkgPSBkZWZhdWx0OwogUGFzdGVib2FyZFdlYkNvbnRlbnQ6
On5QYXN0ZWJvYXJkV2ViQ29udGVudCgpID0gZGVmYXVsdDsKIApAQCAtMjExLDkgKzIxMSw5IEBA
IFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5zYWZlQmluZGluZ3Mo
KQogfQogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZl
cnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZl
cikKIHsKLSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2Nd
IGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1
dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRh
OiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAg
ICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOmJpdG1h
cFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUocG5nRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCmluZGV4IDllZTBjMGI1NWQ3OTRjMmI2OTA1N2JiZjM2
NGFiZjE4MzhhOWI4NTAuLjI0MGEzNjdiZTJhYzc2NWI3OGJkZTcxMDA0NjY2NGJjYjFjZTU0NzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNv
Y29hLm1tCkBAIC0zNSwxMSArMzUsMTEgQEAKICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2Nv
YS5oPgogCiBAaW50ZXJmYWNlIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIDogTlNEYXRhCi0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRp
b24gc2l6ZTooTlNVSW50ZWdlcilzaXplOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNl
Z21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjoo
TlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemU7CiBAZW5kCiAKIEBpbXBs
ZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSB7Ci0gICAgUmVmUHRyPGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKKyAgICBSZWZQ
dHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKICAgICBOU1VJbnRl
Z2VyIF9wb3NpdGlvbjsKICAgICBOU1VJbnRlZ2VyIF9zaXplOwogfQpAQCAtNjEsNyArNjEsNyBA
QCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLS0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXpl
OihOU1VJbnRlZ2VyKXNpemUKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihj
b25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVn
ZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC04OCwxMiArODgsMTIgQEAgQGVu
ZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoTlNEYXRhICpkYXRhKQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihicmlkZ2VfY2FzdChkYXRhKSkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoYnJpZGdlX2Nhc3QoZGF0YSkp
KTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEpCit2b2lkIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEpCiB7CiAgICAgcmV0dXJu
IGFwcGVuZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CkBAIC0xMDUsMTAgKzEwNSw4IEBAIFJldGFp
blB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIAogUmV0YWlu
UHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAg
IGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwogICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAg
ICAgICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7
Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwogICAgIHJldHVybiBicmlkZ2Vf
Y2FzdChtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpKTsKIH0KIApAQCAtMTE5
LDE0ICsxMTcsMTQgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVG
cm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotUmV0YWluUHRyPE5TQXJyYXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJy
YXkoKSBjb25zdAorUmV0YWluUHRyPE5TQXJyYXk+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNy
ZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKIHsKICAgICByZXR1cm4gY3JlYXRlTlNBcnJheShtX3Nl
Z21lbnRzLCBbXSAoYXV0byYgc2VnbWVudCkgewogICAgICAgICByZXR1cm4gc2VnbWVudC5zZWdt
ZW50LT5jcmVhdGVOU0RhdGEoKTsKICAgICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxO
U0RhdGE+IERhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBh
ZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNlZ21l
bnQ6KnRoaXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKaW5kZXggZmJjMjgz
ZmJjMzM2OWJmODI3ZTMxNjk5NGM0Yzk0ZTA2MzYzY2I4MS4uMmRlNDE5MzRkYTE5ODc5ZDc1YzBk
ZjhhODllNjRlNTk5YzI5YWUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIExv
Z2dlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uOwogc3Ry
dWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb247CiAKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3Mg
Q0RNSW5zdGFuY2VDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VDbGll
bnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZUNsaWVudCgpID0gZGVmYXVs
dDsKIAotICAgIHZpcnR1YWwgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2Vp
dmVkKGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcm
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogLy8gSmF2YVNjcmlw
dCdzIGhhbmRsZSB0byBhIENETUluc3RhbmNlLCBtdXN0IGJlIHVzZWQgZnJvbSB0aGUKQEAgLTk4
LDcgKzk4LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6
ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxv
d0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2Fs
bGJhY2smJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8
U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3Vj
Y2Vzc0NhbGxiYWNrJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9y
eShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNy
ZWF0ZVNlc3Npb24oKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCmluZGV4IDM3Y2QwN2M3YmYy
ZGM3NWU0MWZkNWM2YzdkZWNmNDNlMTAzOWUxMTQuLmQyNTkyMjViYTllMDJhNjRkMGNlY2Q2MTUx
ZmRmOTNmNGYyNDY2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCkBAIC00MywxNiArNDMsMTYg
QEAgY2xhc3MgTG9nZ2VyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENETUluc3RhbmNl
U2Vzc2lvbkNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25D
bGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZVNlc3Npb25DbGllbnQo
KSA9IGRlZmF1bHQ7CiAKICAgICB1c2luZyBLZXlTdGF0dXMgPSBDRE1LZXlTdGF0dXM7Ci0gICAg
dXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVy
PiwgS2V5U3RhdHVzPj47CisgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6
cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIEtleVN0YXR1cz4+OwogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBtZXNzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VU
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHVzaW5n
IFBsYXRmb3JtRGlzcGxheUlEID0gdWludDMyX3Q7CiAgICAgdmlydHVhbCBQbGF0Zm9ybURpc3Bs
YXlJRCBkaXNwbGF5SUQoKSA9IDA7CkBAIC03OCwxMyArNzgsMTMgQEAgcHVibGljOgogICAgICAg
ICBTdWNjZWVkZWQsCiAgICAgfTsKIAotICAgIHVzaW5nIExpY2Vuc2VDYWxsYmFjayA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUg
c3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5p
dERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSA9IDA7CisgICAgdXNpbmcgTGljZW5zZUNhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBt
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0
aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgPSAw
OwogCiAgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50
OjpLZXlTdGF0dXNWZWN0b3I7Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6cGFpcjxNZXNzYWdl
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8
TWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgdXNpbmcgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHNlc3Npb25X
YXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxN
ZXNzYWdlPiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwg
TGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKIAogICAgIGVudW0gY2xhc3MgU2Vzc2lvbkxv
YWRGYWlsdXJlIDogdWludDhfdCB7CiAgICAgICAgIE5vbmUsCkBAIC0xMDAsNyArMTAwLDcgQEAg
cHVibGljOgogICAgIHVzaW5nIENsb3NlU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPjsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSA9IDA7CiAKLSAgICB1c2luZyBSZW1v
dmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChLZXlTdGF0dXNW
ZWN0b3ImJiwgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiwgU3VjY2Vzc1ZhbHVl
KT47CisgICAgdXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiYmLCBTdWNjZXNzVmFsdWUpPjsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
U2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVT
ZXNzaW9uRGF0YUNhbGxiYWNrJiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdG9yZVJlY29y
ZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAppbmRleCBjYzZk
YzdmMTQwY2Q2N2QyYjdiODRmNmFiMmMyODQzMTZkZmRkY2NmLi41MmE2MTQ4YzgzY2Q1MzkzYzhm
ODc0ZWQ4NWFkOGJmMjdlNWJlNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC03Myw4ICs3Myw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSA9IDA7CiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25z
dCA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQo
Y29uc3QgU3RyaW5nJikgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKaW5kZXggZjIxOGY5
NzkwNGZiYmE0OWYxZWJkZjQ4ZTIwNWZlNzNkZmFmYjY0OC4uNGJhNzViZjAwZDlmNzEzYjVhZmJi
YTc5MzQwMTk3MTZjZDhmMDM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIENETUluc3Rh
bmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIEtleVN0b3JlOjpjb252ZXJ0VG9KU0tleVN0YXR1
c1ZlY3RvcigpIGNvbnN0CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Ig
a2V5U3RhdHVzVmVjdG9yOwogICAgIGtleVN0YXR1c1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG51bUtleXMoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBrZXkgOiBtX2tleXMpCi0gICAg
ICAgIGtleVN0YXR1c1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQoc3RkOjpwYWlyPFJlZjxTaGFyZWRC
dWZmZXI+LCBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1cz4geyBrZXktPmlkQXNTaGFyZWRC
dWZmZXIoKSwga2V5LT5zdGF0dXMoKSB9KTsKKyAgICAgICAga2V5U3RhdHVzVmVjdG9yLnVuY2hl
Y2tlZEFwcGVuZChzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBDRE1JbnN0
YW5jZVNlc3Npb246OktleVN0YXR1cz4geyBrZXktPmlkQXNTaGFyZWRCdWZmZXIoKSwga2V5LT5z
dGF0dXMoKSB9KTsKICAgICByZXR1cm4ga2V5U3RhdHVzVmVjdG9yOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaAppbmRleCBhNTg0
YjZjZDI2NmIwOTgwOTAyNTRkN2RjYmRkYmY2MGQ5MzMxZmJiLi5lMWUwOThhMWQ1ZjVmZmM2NWMy
YTQ4ZmE0MGFhOTcyZmU4OWUxZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgS2V5SGFuZGxlKHN0YXR1cywgV1RGTW92
ZShrZXlJRCksIFdURk1vdmUoa2V5SGFuZGxlVmFsdWUpKSk7CiAgICAgfQotICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9pZC5zaXplKCkpOyB9CisgICAgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9pZC5zaXplKCkpOyB9CiAKICAgICBib29sIHRha2VW
YWx1ZUlmRGlmZmVyZW50KEtleUhhbmRsZVZhbHVlVmFyaWFudCYmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAK
aW5kZXggNWJlYmNiNDlhYThlYjlhMmJiMDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4uZmNhNmYyMzg4
YTU2YTZhMWM3MjQ3MGU1YTQ2ZmRkMjhmMDczNzUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC0zOCw3
ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIENETVV0aWxpdGllcyB7
CiAKLVJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK1JlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gRmFpbCBvbiBsYXJnZSBi
dWZmZXJzIHdob3NlIHNpemUgZG9lc24ndCBmaXQgaW50byBhIDMyLWJpdCB1bnNpZ25lZCBpbnRl
Z2VyLgogICAgIHNpemVfdCBzaXplID0gYnVmZmVyLnNpemUoKTsKQEAgLTQ2LDcgKzQ2LDcgQEAg
UmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZm
ZXIgY29udGVudHMgYXMgSlNPTiwgcmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4K
LSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
aXplKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNP
Tjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaAppbmRl
eCA3NGY1MTViMGJkMmE4NzE2OGVlZjI0YjE4Zjk1ZGVhYmVlODI4ZTZjLi5mY2Y1YmRkYTdjNTk3
ZDNjM2FjMzQ5ZWUxNzg5ZTRhZDZlMGM5NTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaApAQCAtMzUsMTEgKzM1LDEx
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIENETVV0aWxpdGllcyB7CiAKLVJl
ZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImKTsK
K1JlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJik7CiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCBk
ZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVkLi4zMWE5ZmRmYTAyZDZkMDBj
YTI2MTgyNTJkZWQ5MzUzMTNkYzU4YWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3Bw
CkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VMaWNlbnNlUmVsZWFzZUFja25v
d2xlZGdlbWVudEZvcm1hdChjb25zdCBKU09OOjpPYmplY3QmIHJvb3QpCiAvLyBdOwogCiAvLyBU
aGlzIGZ1bmN0aW9uIGV4dHJhY3RzIHRoZSBLZXlJZHMgY291bnQgYW5kIHRoZSBsb2NhdGlvbiBv
ZiB0aGUgZmlyc3QgS2V5SWQgaW4gaW5pdERhdGEgYnVmZmVyLgotc3RhdGljIHN0ZDo6cGFpcjx1
bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQs
IHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIHN0ZDo6cGFpcjx1bnNpZ25l
ZCwgdW5zaWduZWQ+IGtleUlkc01hcCgwLCAwKTsKIApAQCAtMTM4LDcgKzEzOCw4IEBAIHN0YXRp
YyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9t
Q2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0
YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAg
IHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOwor
ICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAgICAgdW5zaWdu
ZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0g
MDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CkBAIC0xODgsMTUgKzE4OSwxNSBAQCBzdGF0
aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJv
bUNlbmNJbml0RGF0YShjb25zdAogfQogCiAvLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUg
aW5pdERhdGEgc2hhcmVkQnVmZmVyIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KLXN0YXRpYyBi
b29sIGlzQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitzdGF0aWMg
Ym9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSkKIHsKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAgPSBleHRy
YWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGluaXREYXRhKTsKICAgICByZXR1cm4g
KChrZXlJZHNNYXAuZmlyc3QpICYmIChrZXlJZHNNYXAuc2Vjb25kKSk7CiB9CiAKLXN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBl
eHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgc3Rk
OjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xvY2F0
aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWduZWQga2V5SWRDb3VudCA9
IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNCw5ICsyMDUsMTAgQEAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
aW5pdEQKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0
YS4KICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQotICAgICAgICByZXR1cm4ga2V5SWRz
OworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0
RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtl
Q29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEo
KTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRv
IGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjI0LDE3ICsyMjYsMTcg
QEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMi
LCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+
dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEo
KSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFw
cGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5
SWRzLnRha2UoKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZy
b21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIga2V5SWRzOwogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBXZWJN
IGluaXREYXRhLgogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgp
ID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4g
a2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAogICAgIGF1dG8gb2JqZWN0
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6
QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDEyICsyNDcsMTIgQEAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNPTiBvYmplY3QgY29udGFpbmluZyB0aGUg
Zm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMiCiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5
IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0aGUgYmFzZTY0dXJsIGVuY29kaW5n
IG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5nIHRoZSBrZXkgSUQgdmFsdWUuCi0gICAg
a2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEu
ZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhi
YXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1v
dmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05T
dHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29u
RGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpz
b25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFr
ZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xlYXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xl
dG9uKCkKQEAgLTM4OCw3ICszOTAsNyBAQCBib29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9y
dHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0
ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUNs
ZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAgICAgLy8g
VmFsaWRhdGUgdGhlIGluaXREYXRhIGJ1ZmZlciBhcyBhbiBKU09OIG9iamVjdCBpbiBrZXlpZHMg
Y2FzZS4KICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBl
LCAia2V5aWRzIikgJiYgQ0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QoaW5pdERhdGEpKQpA
QCAtNDA1LDcgKzQwNyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVDbGVhcktleTo6c2FuaXRp
emVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25z
ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICAv
LyBWYWxpZGF0ZSB0aGUgcmVzcG9uc2UgYnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0LgogICAgIGlm
ICghQ0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QocmVzcG9uc2UpKQpAQCAtNDMxLDcgKzQz
Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0
aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyCiAgICAgY2FsbGJhY2soc3VjY2VlZGVkKTsK
IH0KIAotdm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8
U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5z
dGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIC8vIFJlamVjdCBz
ZXR0aW5nIGFueSBzZXJ2ZXIgY2VydGlmaWNhdGUuCiAgICAgY2FsbGJhY2soRmFpbGVkKTsKQEAg
LTQ1Myw3ICs0NTUsNyBAQCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBDRE1JbnN0YW5jZUNs
ZWFyS2V5OjpjcmVhdGVTZXNzaW9uKCkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENETUluc3Rh
bmNlU2Vzc2lvbkNsZWFyS2V5KCp0aGlzKSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
Q2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFj
ayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxi
YWNrKQogewogICAgIHN0YXRpYyB1aW50MzJfdCBzX3Nlc3Npb25JZFZhbHVlID0gMDsKICAgICAr
K3Nfc2Vzc2lvbklkVmFsdWU7CkBAIC00NzUsNyArNDc3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJp
bmcmIGkKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6
OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAjaWYg
TE9HX0RJU0FCTEVECiAgICAgLy8gV2Ugb25seSB1c2UgdGhlIHNlc2lvbiBJRCBmb3IgZGVidWcg
bG9nZ2luZy4gVGhlIHZlcmJvc2UgcHJlcHJvY2Vzc29yIGNoZWNrcyBhcmUgYmVjYXVzZQpAQCAt
NTY2LDcgKzU2OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlbW92ZVNl
c3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlCiAgICAgQVNTRVJUKHNlc3Np
b25JZCA9PSBtX3Nlc3Npb25JRCk7CiAKICAgICBhdXRvIGRpc3BhdGNoQ2FsbGJhY2sgPQotICAg
ICAgICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgJmNhbGxiYWNrXShLZXlTdGF0dXNW
ZWN0b3ImJiBrZXlTdGF0dXNWZWN0b3IsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+
JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2Nlc3MpIHsKKyAgICAgICAgW3dlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH0sICZjYWxsYmFja10oS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVz
VmVjdG9yLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBtZXNz
YWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VzcykgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZCgKICAgICAgICAgICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKndlYWtUaGlzIH0sIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGtleVN0YXR1c1ZlY3RvciA9IFdURk1vdmUoa2V5
U3RhdHVzVmVjdG9yKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHN1Y2Nlc3NdKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCkBAIC01NzksNyArNTgx
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKICAgICAvLyBDb25zdHJ1Y3QgdGhlIEtleVN0
YXR1c1ZlY3RvciBvYmplY3QsIHJlcHJlc2VudGluZyByZWxlYXNlZCBrZXlzLCBhbmQgdGhlIG1l
c3NhZ2UgaW4gdGhlCiAgICAgLy8gJ2xpY2Vuc2UgcmVsZWFzZScgZm9ybWF0LgogICAgIEtleVN0
YXR1c1ZlY3RvciBrZXlTdGF0dXNWZWN0b3IgPSBtX2tleVN0b3JlLmFsbEtleXNBcyhDRE1JbnN0
YW5jZVNlc3Npb246OktleVN0YXR1czo6UmVsZWFzZWQpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1lc3NhZ2U7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2U7
CiAgICAgewogICAgICAgICAvLyBDb25zdHJ1Y3QgSlNPTiB0aGF0IHJlcHJlc2VudHMgdGhlICds
aWNlbnNlIHJlbGVhc2UnIGZvcm1hdCwgY3JlYXRpbmcgYSAna2lkcycgYXJyYXkKICAgICAgICAg
Ly8gb2YgYmFzZTY0VVJMLWVuY29kZWQga2V5IElEcyBmb3IgYWxsIGtleXMgdGhhdCB3ZXJlIGFz
c29jaWF0ZWQgd2l0aCB0aGlzIHNlc3Npb24uCkBAIC01OTMsMTQgKzU5NSwxNCBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgTGljZQogICAgICAgICAgICAgcm9vdE9iamVjdC0+c2V0QXJyYXkoImtpZHMi
LCBXVEZNb3ZlKGFycmF5KSk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBDb3B5IHRoZSBKU09O
IGRhdGEgaW50byBhIFNoYXJlZEJ1ZmZlciBvYmplY3QuCisgICAgICAgIC8vIENvcHkgdGhlIEpT
T04gZGF0YSBpbnRvIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBvYmplY3QuCiAgICAgICAgIFN0
cmluZyBtZXNzYWdlU3RyaW5nID0gcm9vdE9iamVjdC0+dG9KU09OU3RyaW5nKCk7CiAgICAgICAg
IENTdHJpbmcgbWVzc2FnZUNTdHJpbmcgPSBtZXNzYWdlU3RyaW5nLnV0ZjgoKTsKICAgICAgICAg
bWVzc2FnZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2VDU3RyaW5nLmRhdGEoKSwgbWVz
c2FnZUNTdHJpbmcubGVuZ3RoKCkpOwogICAgIH0KIAogICAgIG1fa2V5U3RvcmUudW5yZWZBbGxL
ZXlzKCk7Ci0gICAgZGlzcGF0Y2hDYWxsYmFjayhXVEZNb3ZlKGtleVN0YXR1c1ZlY3RvciksIFJl
ZjxTaGFyZWRCdWZmZXI+KCptZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOworICAg
IGRpc3BhdGNoQ2FsbGJhY2soV1RGTW92ZShrZXlTdGF0dXNWZWN0b3IpLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4oKm1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAK
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnN0b3JlUmVjb3JkT2ZLZXlVc2FnZShj
b25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKaW5kZXggOWMwNzQ3ZGMxYmQ4
ZTY3ZjNiYTg2NGQ5YjgxMTMzNzYyNWM4YTY3OS4uOWUyN2ZlOTEyYzRkYTA2N2ZiMjZjYWZiYzdm
NmE2NTFkYTQ3NTI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCkBAIC04Niw4ICs4Niw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CiAgICAgYm9v
bCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3Vw
cG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXIm
KSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogfTsKIApAQCAt
OTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFuY2UKICAgICBJbXBsZW1lbnRh
dGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVt
ZW50YXRpb25UeXBlOjpDbGVhcktleTsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1
cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZl
SWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmlu
YWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBT
dWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0
YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKQEAgLTEwOSw4ICsxMDksOCBAQCBj
bGFzcyBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleSBmaW5hbCA6IHB1YmxpYyBDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eSB7CiBwdWJsaWM6CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXko
Q0RNSW5zdGFuY2VDbGVhcktleSYgcGFyZW50KQogICAgICAgICA6IENETUluc3RhbmNlU2Vzc2lv
blByb3h5KHBhcmVudCkgeyB9Ci0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwg
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXRE
YXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNv
bnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBk
YXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxv
YWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2Fk
U2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0
cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vz
c2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2Fs
bGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IGU5NjhlOTg1YzdlZWNlZmU0MzVhYTkyMDVj
NDRkZDM1YWVkOGUwZDAuLmVjZjRlMDhjOWI5OTFhZGUyNzNiZDQ0YzYwYmIxNWZlMDE2MzViMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVy
R2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5oCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xh
c3MgS2V5ZWRFbmNvZGVyR2VuZXJpYyBmaW5hbCA6IHB1YmxpYyBLZXllZEVuY29kZXIgewogcHVi
bGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZm
ZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xp
Yi5jcHAKaW5kZXggOGE4YzEwYjcwMjRjZmUwMzhlOWZhN2I3MTViZTI2ODg5ZmMwNWUyOC4uOTM3
ZDFmYjZmMGM4ZDdiNTFmMThmZjE1NTYwYjNiOTRhNzRmNjFiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCkBAIC0yNiwxNiArMjYs
MTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZl
cihHQnl0ZXMqIGJ5dGVzKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQogewogICAgIEFTU0VSVChieXRlcyk7CiAgICAgbV9zaXpl
ID0gZ19ieXRlc19nZXRfc2l6ZShieXRlcyk7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBE
YXRhU2VnbWVudDo6Y3JlYXRlKEdSZWZQdHI8R0J5dGVzPihieXRlcykpIH0pOwogfQogCi1SZWY8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQorUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0
ZXMqIGJ5dGVzKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihieXRl
cykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoYnl0
ZXMpKTsKIH0KIAogR1JlZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA5ZmM0ZWE4
MmViYmM3N2VhZDkwMTA4NTQzODA4MjllMTViYmFiNmY0Li5kYzFmYjE2ZWEwYjE5NmM1ZDEzYmQ0
MTE0ZTUwY2NkY2Q5YjM3YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5oCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZvbnRDYWNo
ZTsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEdseXBoUGFnZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBHbHlwaERh
dGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0
Zm9ybURhdGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRiMjE5
Li5mYmJjY2M0MzY4NDQ3NDkwODNjZTg5MWYzNjNmNmNjNDBmMjk3NDUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC03
NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8g
VGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5vIGlu
c3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNsYXNz
IEZvbnRQbGF0Zm9ybURhdGEgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuY3BwCmluZGV4IDRhODUzZWI2NDk1M2Q0YWU0ODM0Zjg3YzU0ODdhY2QzNjRjNTdkODEuLmUz
MmEzNmM2MDc2MTkyMTY4YzZhMzc5MzE4Zjc4YWUxNzg5YzQ4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIElt
YWdlOjppc1Bvc3RTY3JpcHRSZXNvdXJjZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBV
UkwmIHVybCkKIH0KIAogCi1FbmNvZGVkRGF0YVN0YXR1cyBJbWFnZTo6c2V0RGF0YShSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorRW5jb2RlZERhdGFT
dGF0dXMgSW1hZ2U6OnNldERhdGEoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgbV9lbmNvZGVkSW1hZ2VEYXRhID0gV1RG
TW92ZShkYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5k
ZXggNmEwODE2OTU3YWE5M2M0MTFhNTZjZDRjMmJjMjBkZDZkOTA0NGRlYy4uNjU1ZGZlNzNjZmY2
YWQxZDA0ZjQ4YmMyMDE5ZWJiODA0MTdkNjEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oCkBAIC03MCw3ICs3MCw3IEBAIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsK
IGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRl
eHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
c3RydWN0IExlbmd0aDsKIAogLy8gVGhpcyBjbGFzcyBnZXRzIG5vdGlmaWVkIHdoZW4gYW4gaW1h
Z2UgY3JlYXRlcyBvciBkZXN0cm95cyBkZWNvZGVkIGZyYW1lcyBhbmQgd2hlbiBpdCBhZHZhbmNl
cyBhbmltYXRpb24gZnJhbWVzLgpAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCB7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KICAgICB2aXJ0dWFsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBj
b25zdCB7IHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2U7IH0KIAotICAgIFdFQkNP
UkVfRVhQT1JUIEVuY29kZWREYXRhU3RhdHVzIHNldERhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRW5jb2Rl
ZERhdGFTdGF0dXMgc2V0RGF0YShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdmlydHVhbCBFbmNvZGVkRGF0YVN0YXR1cyBk
YXRhQ2hhbmdlZChib29sIC8qYWxsRGF0YVJlY2VpdmVkKi8pIHsgcmV0dXJuIEVuY29kZWREYXRh
U3RhdHVzOjpVbmtub3duOyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyB1dGkoKSBjb25zdCB7IHJl
dHVybiBTdHJpbmcoKTsgfSAvLyBudWxsIHN0cmluZyBpZiB1bmtub3duCkBAIC0xMzMsOCArMTMz
LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29s
IGRlc3Ryb3lBbGwgPSB0cnVlKSA9IDA7CiAKLSAgICBTaGFyZWRCdWZmZXIqIGRhdGEoKSB7IHJl
dHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KKyAgICBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRh
LmdldCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQogCiAgICAgdmlydHVhbCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpOwogCkBAIC0yMDksNyArMjA5LDcgQEAgcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgQ29sb3Igc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3Qg
eyByZXR1cm4gQ29sb3IoKTsgfQogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fZW5jb2RlZEltYWdlRGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bV9lbmNvZGVkSW1hZ2VEYXRhOwogICAgIEltYWdlT2JzZXJ2ZXIqIG1faW1hZ2VPYnNlcnZlcjsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fYW5pbWF0aW9uU3RhcnRUaW1lcjsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdT
dG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3Rv
cmUuaAppbmRleCA0ZGRiNmRmODNlY2I4YjliNzk1N2Y0NjY0ZTE4NGYwMDgxZTgxMDExLi5kZTMz
ZjFhZjQxMmRjMDhiMmI5NjFhMTk0OTQ1YzljYzkwYWE2NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKQEAgLTY2LDcg
KzY2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGJ1
ZmZlci5ncm93KGJ1ZmZlclNpemUpOwotICAgICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBtX3BpeGVscyA9
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZm
ZXIpKTsKICAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4o
Y29uc3RfY2FzdDx1aW50OF90Kj4obV9waXhlbHMtPmRhdGEoKSkpOwogICAgICAgICBtX3NpemUg
PSBzaXplOwogICAgICAgICBtX2ZyYW1lUmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwgbV9zaXpl
KTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgQVNTRVJUKCFt
X3NpemUuaXNFbXB0eSgpICYmICFpc092ZXJTaXplKG1fc2l6ZSkpOwogICAgICAgICBWZWN0b3I8
dWludDhfdD4gYnVmZmVyIHsgb3RoZXIubV9waXhlbHMtPmRhdGEoKSwgb3RoZXIubV9waXhlbHMt
PnNpemUoKSB9OwotICAgICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBtX3BpeGVscyA9IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAg
ICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oY29uc3RfY2FzdDx1
aW50OF90Kj4obV9waXhlbHMtPmRhdGEoKSkpOwogICAgIH0KIApAQCAtMjMzLDcgKzIzMyw3IEBA
IHByaXZhdGU6CiAgICAgICAgIHJldHVybiBQYWNrZWRDb2xvcjo6QVJHQiB7IHJlc3VsdCB9LnZh
bHVlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3Bp
eGVsczsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1f
cGl4ZWxzOwogICAgIHVpbnQzMl90KiBtX3BpeGVsc1B0ciB7IG51bGxwdHIgfTsKICAgICBJbnRT
aXplIG1fc2l6ZTsKICAgICBJbnRSZWN0IG1fZnJhbWVSZWN0OyAvLyBUaGlzIHdpbGwgYWx3YXlz
IGp1c3QgYmUgdGhlIGVudGlyZSBidWZmZXIgZXhjZXB0IGZvciBHSUYgYW5kIFBORyBmcmFtZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3Bw
CmluZGV4IDA4NjllOTlhMDA4ODZmN2NkMTIxODZmZTMxNjFkZTA0N2ZhNTEzNjEuLjdjNTQ5NDdm
NGQ4MTQwODU1OWNjNDVjNGFjNDlhMTliOWZjODZmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcApAQCAtODIsNyArODIsNyBAQCB2
b2lkIEltYWdlRGVjb2Rlcjo6Y2xlYXJGYWN0b3JpZXMoKQogfQogI2VuZGlmCiAKLVJlZlB0cjxJ
bWFnZURlY29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPEltYWdl
RGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAg
IFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKaW5kZXggYTFhMDhhZGMxNzVkNDRiYWE0NDJlNDRhOTRh
YTk2N2EwNGY1ZjYwNy4uNmE4ZmZjYjYwZmMxMTU2ZWI4NDg3NmRlZmIwN2NiYzBiMTE5ODQ5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgK
QEAgLTM3LDEyICszNywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEltYWdlRGVj
b2RlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZURlY29kZXI+IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdl
RGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgc3RhdGljIFJlZlB0
cjxJbWFnZURlY29kZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsK
ICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKICAgICBlbnVtIGNsYXNz
IE1lZGlhVHlwZSB7CkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCiAgICAgdXNpbmcgU3VwcG9ydHNNZWRpYVR5cGVGdW5jID0gRnVuY3Rpb248Ym9vbChN
ZWRpYVR5cGUpPjsKICAgICB1c2luZyBDYW5EZWNvZGVUeXBlRnVuYyA9IEZ1bmN0aW9uPGJvb2wo
Y29uc3QgU3RyaW5nJik+OwotICAgIHVzaW5nIENyZWF0ZUltYWdlRGVjb2RlckZ1bmMgPSBGdW5j
dGlvbjxSZWZQdHI8SW1hZ2VEZWNvZGVyPihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBB
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pPjsKKyAgICB1c2luZyBDcmVh
dGVJbWFnZURlY29kZXJGdW5jID0gRnVuY3Rpb248UmVmUHRyPEltYWdlRGVjb2Rlcj4oRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbik+OwogCiAgICAgc3RydWN0IEltYWdlRGVjb2RlckZhY3Rvcnkgewog
ICAgICAgICBTdXBwb3J0c01lZGlhVHlwZUZ1bmMgc3VwcG9ydHNNZWRpYVR5cGU7CkBAIC0xMjks
NyArMTI5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVG
cmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xl
dmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERl
Y29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RXhw
ZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXREYXRh
KFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSA9IDA7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRl
eCBkODFjNDgwMTkyODQ2ZGQ3ZTMyMWMyZGZiZmJmMWUwYzIwZGFhNjcxLi4zMDc3NDMzMTVhNDFl
Y2ExYzliMmJjNzczZDA3OWVlNWQ0M2JhZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC03Miw3ICs3Miw3IEBAIEltYWdlU291
cmNlOjp+SW1hZ2VTb3VyY2UoKQogICAgIEFTU0VSVCgmbV9ydW5Mb29wID09ICZSdW5Mb29wOjpj
dXJyZW50KCkpOwogfQogCi1ib29sIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZhaWxhYmxl
KFNoYXJlZEJ1ZmZlciogZGF0YSkKK2Jvb2wgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFp
bGFibGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAoIWRhdGEgfHwg
aXNEZWNvZGVyQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtOTYsNyArOTYs
NyBAQCBib29sIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZhaWxhYmxlKFNoYXJlZEJ1ZmZl
ciogZGF0YSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0
YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZVNv
dXJjZTo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKIHsKICAgICBpZiAoIWRhdGEgfHwgIWVuc3VyZURlY29kZXJBdmFpbGFibGUoZGF0
YSkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNCwxMyArMTA0LDEzIEBAIHZvaWQgSW1hZ2VTb3Vy
Y2U6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAg
ICBtX2RlY29kZXItPnNldERhdGEoKmRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiB9CiAKLXZvaWQg
SW1hZ2VTb3VyY2U6OnJlc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIEltYWdlU291
cmNlOjpyZXNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBtX2Rl
Y29kZXIgPSBudWxscHRyOwogICAgIHNldERhdGEoZGF0YSwgaXNBbGxEYXRhUmVjZWl2ZWQoKSk7
CiB9CiAKLUVuY29kZWREYXRhU3RhdHVzIEltYWdlU291cmNlOjpkYXRhQ2hhbmdlZChTaGFyZWRC
dWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorRW5jb2RlZERhdGFTdGF0dXMgSW1h
Z2VTb3VyY2U6OmRhdGFDaGFuZ2VkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQogewogICAgIHNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsK
ICAgICBjbGVhck1ldGFkYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuaAppbmRleCA4YWY1MDgwYTAwYTk5MTYwODBmMWYwYjI3NzA3M2MyYTg1
MzQ1MjU4Li44MTRmMGUxMmViYWE0OGY4NmFjYjUyMTk3M2MzMWQ1ZDM4MmY2ZmJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTM5LDcg
KzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQml0bWFwSW1hZ2U7CiBjbGFzcyBH
cmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbWFnZURlY29kZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbWFnZVNvdXJjZSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZVNvdXJjZT4sIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxJbWFnZVNvdXJjZT4gewogICAgIGZyaWVuZCBjbGFzcyBCaXRtYXBJbWFnZTsKQEAgLTU2
LDkgKzU2LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZVNv
dXJjZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSkpOwogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShT
aGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIHJlc2V0
RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOwotICAgIEVuY29kZWREYXRhU3RhdHVzIGRhdGFDaGFu
Z2VkKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQg
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCk7CisgICAgdm9pZCByZXNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSk7Cisg
ICAgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQo
KTsKIAogICAgIHVuc2lnbmVkIGRlY29kZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVk
U2l6ZTsgfQpAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KICAgICBUIGZpcnN0RnJhbWVNZXRhZGF0YUNhY2hlSWZOZWVkZWQoVCYgY2FjaGVkVmFs
dWUsIE1ldGFkYXRhVHlwZSwgVCAoSW1hZ2VGcmFtZTo6KmZ1bmN0b3IpKCkgY29uc3QsIEltYWdl
RnJhbWU6OkNhY2hpbmcsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mID0g
eyB9KTsKIAotICAgIGJvb2wgZW5zdXJlRGVjb2RlckF2YWlsYWJsZShTaGFyZWRCdWZmZXIqIGRh
dGEpOworICAgIGJvb2wgZW5zdXJlRGVjb2RlckF2YWlsYWJsZShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBkYXRhKTsKICAgICBib29sIGlzRGVjb2RlckF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGVjb2RlcjsgfQogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKHNpemVfdCBmcmFtZUNv
dW50LCBzaXplX3QgZXhjbHVkZUZyYW1lKTsKICAgICB2b2lkIGRlY29kZWRTaXplQ2hhbmdlZChs
b25nIGxvbmcgZGVjb2RlZFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTW9kZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TW9kZWwuY3BwCmluZGV4IDNlNTllYTlkMDhkZDFjOWJlZTIzYmEzZjYzNWNmMzViZmMyODIyOTIu
LjU3N2JkNTA4YTVjNDA5ZjRiZTllNGNmMjAyYjgxZTYxZTQ1YjQ0YWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8U2hhcmVk
QnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitSZWY8TW9kZWw+IE1vZGVs
OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1
cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kZWwoV1RGTW92ZShkYXRhKSwgV1RG
TW92ZShtaW1lVHlwZSksIFdURk1vdmUodXJsKSkpOwogfQogCi1Nb2RlbDo6TW9kZWwoUmVmPFNo
YXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorTW9kZWw6Ok1vZGVs
KFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogICAg
IDogbV9kYXRhKFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKFdURk1vdmUobWltZVR5
cGUpKQogICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmgKaW5kZXggMDY1ODEzMzc5ZjExMjU1ZDJkN2M3ZjZiNTAzNDQzZGM2MzBk
MDRlMS4uZTZiZGUxNjZmOTQ0Y2RlN2RiMzI4YzI5NzZlYzY4MmFkYjZkMTAzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxN
b2RlbD4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNy
ZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVS
TCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1vZGVsKCk7CiAKICAgICBSZWY8U2hhcmVkQnVmZmVy
PiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CkBAIC00OSw3ICs0OSw3IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNv
ZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFyZWRC
dWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiwgU3RyaW5nLCBVUkwpOwogCiAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAg
IFN0cmluZyBtX21pbWVUeXBlOwpAQCAtNjAsNyArNjAsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAg
ZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+c2l6ZSgpKTsKLSAgICBlbmNv
ZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCks
IDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CiAgICAgZW5jb2RlciA8PCBtX21p
bWVUeXBlOwogICAgIGVuY29kZXIgPDwgbV91cmw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRl
ci5oCmluZGV4IDc0NTljNTg1OGQyNDg3ZWYyYzVmZDM3MTczOTg2YjMzNzM0ZWMyOGEuLjg4Njkx
ZGMyNTZkNmRkNmM0NWY0NmUwMTU0OTY3NDI0NWFhMzUzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJj
ZUxvYWRlci5oCkBAIC01MSw4ICs1MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVk
aXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNw
b25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hh
cmVkQnVmZmVyPiYmKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICAvLyBU
aGlzIG1ldGhvZCBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50
IHVzZXMgU2hhcmVkQnVmZmVyLgorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBy
ZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgdXNlcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyLgogICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiBwbGF0Zm9ybSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBkYXRhUmVj
ZWl2ZWQocGxhdGZvcm0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkpOyB9CiAg
ICAgdmlydHVhbCB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRG
YWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcAppbmRleCA1NDk5ZjM3YTdmMzY0NmJkNWYzOTVhNDhiMDlkOTQxMWQ0Yzli
NjY0Li5kM2UxYjU4MDRlODVhOTkxMWNmMjBmY2VkMzRiZjI1NWEzMTQ0MzRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2
YXRlLmNwcApAQCAtMTMxOCw3ICsxMzE4LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpk
aWRSZWNlaXZlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBvcmlnaW5hbFNhbXBsZSkKICAgICB1
cGRhdGVIaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wKCk7CiB9CiAKLXZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZTo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlOjphcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogewogICAgIGFwcGVuZChidWZmZXItPmV4dHJhY3REYXRhKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5o
CmluZGV4IGVmODZhNDczNjkzNzFjODNlODgzYjI5YmJiNmI5YWI5NmVjYTVmMWQuLjZiN2Q5NWU1
MmI5ZGYwYzgxYWYzYmUxZDZkOWYzYzhlZDM5NTQxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAgLTQ5LDcg
KzQ5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgVGltZVJhbmdlczsKIAogZW51bSBj
bGFzcyBTb3VyY2VCdWZmZXJBcHBlbmRNb2RlIDogdWludDhfdCB7CkBAIC02OCw3ICs2OCw3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQcml2YXRl
KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpID0gMDsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgYXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBhcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpOwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cmVzZXRQYXJzZXJTdGF0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21NZWRp
YVNvdXJjZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3Bw
CmluZGV4IGM2MTEyZTExOTRjN2M5OTBmZGMxMTRlODI5Y2ZkYjVjNmFmNzU0YTkuLjhiMDRmOWJl
OTZjMzZlMGEyNjIxODBhMjVlYTM3NDU5NjJiM2Q3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtODYsMTIgKzg2LDEyIEBAIGNvbnN0IEF0b21TdHJp
bmcmIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpCiAgICAgcmV0dXJuIHNr
ZDsKIH0KIAotc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFZlY3RvcjxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSlNPTiBvZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxi
YXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZm
ZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBh
dXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVl
KQpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4
dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoIXNpbmZB
cnJheSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4gc2luZnM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gc2luZnM7
CiAgICAgc2luZnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaW5mQXJyYXktPmxlbmd0aCgpKTsK
IAogICAgIGZvciAoYXV0byYgdmFsdWUgOiAqc2luZkFycmF5KSB7CkBAIC0xMjQsNyArMTI0LDcg
QEAgc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogfQogCiB1c2luZyBTY2hlbWVBbmRLZXlSZXN1bHQgPSBW
ZWN0b3I8c3RkOjpwYWlyPEZvdXJDQywgVmVjdG9yPHVpbnQ4X3Q+Pj47Ci1zdGF0aWMgU2NoZW1l
QW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQorc3RhdGljIFNjaGVtZUFuZEtleVJlc3VsdCBleHRyYWN0U2NoZW1lQW5k
S2V5SWRGcm9tU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgYXV0byBidWZmZXJzID0gZXh0cmFjdFNpbmZEYXRhKGJ1ZmZlcik7CiAgICAgaWYgKCFidWZm
ZXJzLnNpemUoKSkKQEAgLTE3MCw5ICsxNzAsOSBAQCBzdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0
IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZgog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRC
dWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2luZihj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFj
dEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAg
IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBhdXRvIHJlc3VsdHMgPSBleHRyYWN0U2No
ZW1lQW5kS2V5SWRGcm9tU2luZihidWZmZXIpOwogCiAgICAgZm9yIChhdXRvJiByZXN1bHQgOiBy
ZXN1bHRzKSB7CkBAIC0xODMsNyArMTgzLDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNo
YXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXkKICAg
ICByZXR1cm4ga2V5SURzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFp
clBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1p
bmc6OnNhbml0aXplU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgLy8gQ29tbW9uIFNJTkYgQm94IEZvcm1hdAogICAgIFVOVVNFRF9QQVJBTShidWZmZXIp
OwpAQCAtMTkxLDE3ICsxOTEsMTcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgU2hhcmVkQnVmZmUKICAgICByZXR1
cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNrZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1p
bmc6OnNhbml0aXplU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJl
dHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFj
dEtleUlEc1NrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAg
Ly8gSW4gdGhlICdza2QnIHNjaGVtZSwgdGhlIGluaXQgZGF0YSBpcyB0aGUga2V5IElELgotICAg
IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBrZXlJRHMuYXBwZW5kKGJ1ZmZlci5jb3B5
KCkpOwogICAgIHJldHVybiBrZXlJRHM7CiB9CkBAIC0zOTMsNyArMzkzLDcgQEAgYm9vbCBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9y
dHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewogICAgIGlmICghdmFsaWRJ
bml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtNDIzLDcgKzQyMyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkg
Y29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
cmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1G
YWlyUGxheVN0cmVhbWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKaW5kZXggYmM5M2Y2ZjZhN2JkZDAxZWZi
ZjU1YjYyYmRiNmE0ZTY2ZWY5MTJiMy4uMzE3YmI4ZDU3ZTg2YzA2MjE0ZTBiNDA1OWRkZjRmODgw
N2M3NGM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKQEAgLTcx
LDE3ICs3MSwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIG92ZXJy
aWRlOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29s
IHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9u
c2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNh
bml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBT
dHJpbmcmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBz
aW5mTmFtZSgpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVm
ZmVyPj4+IGV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNpbmYoY29uc3QgU2hhcmVkQnVmZmVyJik7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4+IGV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsK
KyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplU2luZihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0
cmluZyYgc2tkTmFtZSgpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTa2QoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAg
c3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplU2tkKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplU2tk
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0YXRpYyBjb25zdCBWZWN0
b3I8Rm91ckNDPiYgdmFsaWRGYWlyUGxheVN0cmVhbWluZ1NjaGVtZXMoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLmgKaW5kZXggMTU5YjkwY2RiNDhmN2ZlNDRiYjQ5YmUyZWMxYzFjMmY0MzI4NjQw
MC4uNTZiNThjMjVhMjg3MDlmYjM4MjIxODM5ZTU1YmFlNDVlZDkzY2Y2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQy5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBJbXBsZW1lbnRhdGlv
blR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50
YXRpb25UeXBlOjpGYWlyUGxheVN0cmVhbWluZzsgfQogCiAgICAgdm9pZCBpbml0aWFsaXplV2l0
aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlz
dGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFj
ayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRp
ZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFs
OwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsK
ICAgICB2b2lkIHNldENsaWVudChXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50PiYmKSBmaW5hbDsK
QEAgLTk0LDEwICs5NCwxMCBAQCBwdWJsaWM6CiAKICAgICBOU1VSTCAqc3RvcmFnZVVSTCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RvcmFnZVVSTC5nZXQoKTsgfQogICAgIGJvb2wgcGVyc2lzdGVudFN0
YXRlQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dlZDsgfQot
ICAgIFNoYXJlZEJ1ZmZlciogc2VydmVyQ2VydGlmaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX3Nl
cnZlckNlcnRpZmljYXRlLmdldCgpOyB9CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2Vy
dmVyQ2VydGlmaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlckNlcnRpZmljYXRlLmdldCgp
OyB9CiAgICAgQVZDb250ZW50S2V5U2Vzc2lvbiogY29udGVudEtleVNlc3Npb24oKTsKIAotICAg
IFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiB0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RG
b3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBTaGFy
ZWRCdWZmZXImIGluaXREYXRhKTsKKyAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4g
dGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpOwog
CiAgICAgLy8gQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlQ2xpZW50CiAgICAgdm9pZCBkaWRQ
cm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7CkBAIC0xMTIsNyArMTEy
LDcgQEAgcHVibGljOgogICAgIHZvaWQgb3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4
dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCkgZmluYWw7CiAgICAgdm9pZCBleHRlcm5hbFBy
b3RlY3Rpb25TdGF0dXNEaWRDaGFuZ2VGb3JDb250ZW50S2V5UmVxdWVzdChBVkNvbnRlbnRLZXlS
ZXF1ZXN0KikgZmluYWw7CiAKLSAgICB1c2luZyBLZXlzID0gVmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+PjsKKyAgICB1c2luZyBLZXlzID0gVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj47CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNz
aW9uRm9yS2V5SURzKGNvbnN0IEtleXMmKSBjb25zdDsKICAgICBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JHcm91cChBVkNvbnRlbnRLZXlSZXBv
cnRHcm91cCopIGNvbnN0OwogICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQyogc2Vzc2lvbkZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCopIGNvbnN0OwpA
QCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxDRE1JbnN0YW5jZUNsaWVu
dD4gbV9jbGllbnQ7CiAgICAgUmV0YWluUHRyPEFWQ29udGVudEtleVNlc3Npb24+IG1fc2Vzc2lv
bjsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUZQU0NvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGU+IG1f
ZGVsZWdhdGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZTsK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZTsK
ICAgICBib29sIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dlZCB7IHRydWUgfTsKICAgICBSZXRhaW5Q
dHI8TlNVUkw+IG1fc3RvcmFnZVVSTDsKICAgICBWZWN0b3I8V2Vha1B0cjxDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+PiBtX3Nlc3Npb25zOwpAQCAtMTUwLDggKzE1
MCw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uCi0gICAg
dm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikg
ZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7Cisg
ICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5z
ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
LCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRh
dGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFs
OwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxi
YWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwg
TGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3
M2U5NTMuLmJhNTA2MWViYjVjNWZiZTA3NGQzYTI5ZGVhNGY5MThmYzI2MjFjZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0yMTcsNyArMjE3LDcgQEAgQUxMT1dfTkVXX0FQSV9XSVRI
T1VUX0dVQVJEU19FTkQKICAgICByZXR1cm4gQXRvbVN0cmluZyhuc0luaXRUeXBlKTsKIH0KIAot
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGluaXRpYWxpemF0aW9uRGF0YUZvclJlcXVlc3QoQVZD
b250ZW50S2V5UmVxdWVzdCogcmVxdWVzdCkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gaW5pdGlhbGl6YXRpb25EYXRhRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KiBy
ZXF1ZXN0KQogewogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CkBAIC0yNjUsNyArMjY1LDcgQEAgQVZDb250ZW50S2V5U2Vzc2lvbiogQ0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmNvbnRlbnRLZXlTZXNzaW9uKCkKICAg
ICByZXR1cm4gbV9zZXNzaW9uLmdldCgpOwogfQogCi1SZXRhaW5QdHI8QVZDb250ZW50S2V5UmVx
dWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4cGVjdGVk
S2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVx
dWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4cGVjdGVk
S2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIGZvciAoYXV0
byByZXF1ZXN0SXRlciA9IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzLmJlZ2luKCk7IHJlcXVlc3RJ
dGVyICE9IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzLmVuZCgpOyArK3JlcXVlc3RJdGVyKSB7CiAg
ICAgICAgIGF1dG8mIHJlcXVlc3QgPSAqcmVxdWVzdEl0ZXI7CkBAIC0zMTYsNyArMzE2LDcgQEAg
cHJpdmF0ZToKICAgICBSZXNwb25zZU1hcCBtX3Jlc3BvbnNlczsKIH07CiAKLXN0YXRpYyBSZWZQ
dHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEZhaWwgb24gbGFyZ2UgYnVmZmVy
cyB3aG9zZSBzaXplIGRvZXNuJ3QgZml0IGludG8gYSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlci4K
ICAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci5zaXplKCk7CkBAIC0zMjQsNyArMzI0LDcgQEAgc3Rh
dGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1
ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkp
LgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpW
YWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlv
bihjb25zdCBDRE1LCiAgICAgY2FsbGJhY2soaW5pdGlhbGl6ZSgpKTsKIH0KIAotdm9pZCBDRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2Fs
bGJhY2spCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBzZXJ2ZXJDZXJ0aWZp
Y2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgREVCVUdfTE9HX0lGX1BP
U1NJQkxFKExPR0lERU5USUZJRVIpOwogICAgIG1fc2VydmVyQ2VydGlmaWNhdGUgPSBXVEZNb3Zl
KHNlcnZlckNlcnRpZmljYXRlKTsKQEAgLTU4NSw4ICs1ODUsOCBAQCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byBzZXNzaW9uS2V5
cyA9IHNlc3Npb25JbnRlcmZhY2UtPmtleUlEcygpOwotICAgICAgICBpZiAoYW55T2Yoc2Vzc2lv
bktleXMsIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgc2Vzc2lvbktleSkgewotICAgICAg
ICAgICAgcmV0dXJuIGtleUlEcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZm
ZXI+JiBrZXlJRCkgeworICAgICAgICBpZiAoYW55T2Yoc2Vzc2lvbktleXMsIFsmXShjb25zdCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHNlc3Npb25LZXkpIHsKKyAgICAgICAgICAgIHJl
dHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mIGtleUlEKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGtleUlELmdldCgpID09IHNl
c3Npb25LZXkuZ2V0KCk7CiAgICAgICAgICAgICB9KSAhPSBub3RGb3VuZDsKICAgICAgICAgfSkp
CkBAIC02NzMsNyArNjczLDcgQEAgS2V5cyBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmtleUlEcygpCiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExp
Y2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQor
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWlzTGljZW5zZVR5cGVTdXBwb3J0ZWQobGlj
ZW5zZVR5cGUpKSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVS
LCAiIGZhbHNlLCBsaWNlbnNlVHlwZSBcIiIsIGxpY2Vuc2VUeXBlLCAiXCIgbm90IHN1cHBvcnRl
ZCIpOwpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFU
eXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAg
aW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBp
bml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9w
dE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmdd
KTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBp
ZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAg
ICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEo
KSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVu
Y29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRh
LT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXph
dGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5n
IH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0K
ICNlbmRpZgpAQCAtNzM2LDcgKzczNiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlCiAgICAg
fQogfQogCi1zdGF0aWMgYm9vbCBpc0VxdWFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29u
c3QgU3RyaW5nJiB2YWx1ZSkKK3N0YXRpYyBib29sIGlzRXF1YWwoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBhdXRvIGFycmF5
QnVmZmVyID0gZGF0YS50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGlmICghYXJyYXlCdWZm
ZXIpCkBAIC03NTQsNyArNzU0LDcgQEAgc3RhdGljIGJvb2wgaXNFcXVhbChjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgcmV0dXJuIHN0cmluZ09yRXhj
ZXB0aW9uLnJldHVyblZhbHVlKCkgPT0gdmFsdWU7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYs
IExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlw
ZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBMaWNlbnNlVXBk
YXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZXhwaXJlZFNlc3Npb25zLmlz
RW1wdHkoKSAmJiBpc0VxdWFsKHJlc3BvbnNlRGF0YSwgImFja25vd2xlZGdlZCJfcykpIHsKICAg
ICAgICAgYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgp
OwpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIGF1
dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9ucywgW10g
KGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAgICAgICB9
KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0
YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtleVNl
c3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNl
c3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFn
ZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwgeyB9
LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtODU2LDcgKzg1Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAg
ICBhdXRvIGtleUlEID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqa2V5SURWZWN0b3Ip
KTsKICAgICAgICAgICAgIGF1dG8gZm91bmRJbmRleCA9IG1fY3VycmVudFJlcXVlc3QudmFsdWUo
KS5yZXF1ZXN0cy5maW5kTWF0Y2hpbmcoWyZdIChhdXRvJiByZXF1ZXN0KSB7CiAgICAgICAgICAg
ICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwotICAg
ICAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8U2hh
cmVkQnVmZmVyPiYgaWQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRNYXRj
aGluZyhbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBpZCkgewogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gaWQuZ2V0KCkgPT0ga2V5SUQuZ2V0KCk7CiAgICAgICAgICAg
ICAgICAgfSkgIT0gbm90Rm91bmQ7CiAgICAgICAgICAgICB9KTsKQEAgLTg4OCw3ICs4ODgsNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRl
TGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICAgICAgICAgIGlmICghcGF5bG9hZFZl
Y3RvcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAg
IGF1dG8gcGF5bG9hZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwYXlsb2Fk
VmVjdG9yKSk7Ci0gICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNw
b25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3Bv
bnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250
ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRl
bnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2Fk
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9OwpAQCAtOTAxLDcgKzkw
MSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIH0KICAgICB9IGVsc2Ugewog
ICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIidzaW5mJyBpbml0
RGF0YSwgcHJvY2Vzc2luZyByZXNwb25zZSIpOwotICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52
YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpn
ZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQ
bGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldXTsKKyAgICAgICAgW21fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJz
dCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9u
c2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3Bv
bnNlRGF0YTpyZXNwb25zZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXV07CiAgICAgfQogCiAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTIyNzcpOiBz
dGFzaCB0aGUgY2FsbGJhY2sgYW5kIGNhbGwgaXQgb25jZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBz
dXBwb3J0cyBhIHN1Y2Nlc3MgY2FsbGJhY2suCkBAIC05MzQsNyArOTM0LDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vu
c2VUeXBlIGxpY2Vuc2UKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZp
Y2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIEtleVN0YXR1
c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9u
RGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJl
ZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9y
YWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKICAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBOU1N0cmluZyAqUGxheWJhY2tTZXNzaW9uSWRLZXkgPSBAIlBsYXliYWNrU2Vzc2lvbklEIjsK
QEAgLTk5OSw3ICs5OTksNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJgogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRp
ZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5T
RGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKTsKICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBleHBpcmVkU2Vz
c2lvbnNBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAg
ICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBl
eHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkg
cGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZp
ZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CkBAIC0xMDg2LDcg
KzEwODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UgogCiAgICAgUmV0YWluUHRyPE5TRGF0
YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNl
LT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNh
dGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAgICAgYXV0byBrZXlJRHMgPSBr
ZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QpOwogICAgIGlmIChrZXlJRHMuaXNFbXB0eSgpKSB7CkBA
IC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UgogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBr
ZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29u
dGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250
ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRp
Zmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxl
cjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtl
eVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9
IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250
ZW50S2V5UmVxdWVzdERhdGEpXSB7CkBAIC0xMTUzLDkgKzExNTMsOSBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZl
Y3RvcjxSZXRhaQogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBp
ZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQot
ICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogCi0gICAgdXNpbmcgUmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKKyAgICB1c2luZyBSZXF1
ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZp
bmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewog
ICAgICAgICB1c2luZyBDYWxsYmFja0Z1bmN0aW9uID0gRnVuY3Rpb248dm9pZChSZXF1ZXN0c0Rh
dGEmJik+OwogICAgICAgICBzdGF0aWMgUmVmUHRyPENhbGxiYWNrQWdncmVnYXRvcj4gY3JlYXRl
KENhbGxiYWNrRnVuY3Rpb24mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTExOTYsNyArMTE5Niw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQ
cm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgICAgICBhdXRvIGVudHJ5ID0gSlNP
Tjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGF1dG8mIGtleUlEID0gcmVxdWVzdERh
dGEuZmlyc3Q7CiAgICAgICAgICAgICBhdXRvJiBwYXlsb2FkID0gcmVxdWVzdERhdGEuc2Vjb25k
OwotICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0
cmluZyhrZXlJRC0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CisgICAgICAgICAgICBlbnRyeS0+
c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKICAgICAgICAgICAgIGVudHJ5LT5zZXRT
dHJpbmcoInBheWxvYWQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhwYXlsb2FkLmdldCgpLmJ5dGVz
LCBwYXlsb2FkLmdldCgpLmxlbmd0aCkpOwogICAgICAgICAgICAgcmVxdWVzdEpTT04tPnB1c2hP
YmplY3QoV1RGTW92ZShlbnRyeSkpOwogICAgICAgICB9CkBAIC0xMjExLDggKzEyMTEsOCBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlk
ZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgIEB0cnkgewogICAgICAgICBmb3IgKGF1dG8gcmVx
dWVzdCA6IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cykgewogICAgICAgICAgICAg
YXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwotICAgICAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsK
LSAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+Y3JlYXRlTlNEYXRh
KCk7CisgICAgICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBX
VEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKKyAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZp
ZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgICAg
ICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElk
ZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkg
b3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFn
Z3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3Ip
IG11dGFibGUgewogICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAgICAgICAg
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZChba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVn
YXRvciA9IFdURk1vdmUoYWdncmVnYXRvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFp
blB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSAoKSBtdXRhYmxlIHsKQEAgLTEyNDksMTAgKzEy
NDksMTAgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QoQVZDb24KIAogICAgIFJldGFpblB0cjxOU0RhdGE+
IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+
c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRl
LT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBhdXRvIGtleUlEcyA9IGtleUlE
c0ZvclJlcXVlc3QobV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpKTsKIAotICAgIFJldGFpblB0cjxO
U0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgp
OworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0
KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAg
ICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElk
ZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkg
b3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3Ip
IG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMg
PSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5
UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDAzMzRkNjIzYjJh
NzYwNWM5YmUxMjIxM2I1YWJkYmJhYzJiMDNmMTUuLjYyYjgzZmJmZDU3OTQwNTBlYmM5NDA2Mzcw
NDkwYmEyYjNlYzA4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29yZURlY29tcHJlc3Npb25TZXNz
aW9uOwogCiBjbGFzcyBJbWFnZURlY29kZXJBVkZPYmpDIDogcHVibGljIEltYWdlRGVjb2RlciB7
CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJB
VkZPYmpDPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IGNyZWF0ZShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXJBVkZPYmpDKCk7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzdXBwb3J0c01lZGlhVHlwZShNZWRp
YVR5cGUpOwpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxh
dGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5n
TGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMm
ID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcp
IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRE
YXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7
CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNB
bGxEYXRhUmVjZWl2ZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyRnJhbWVCdWZm
ZXJDYWNoZShzaXplX3QpIGZpbmFsOwogCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBWZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+IGZyYW1lSW5mb3Mo
KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyQVZGT2JqQyhGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKTsKIAogICAgIEFWQXNzZXRUcmFjayAqZmlyc3RFbmFibGVkVHJhY2soKTsK
ICAgICB2b2lkIHJlYWRTYW1wbGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNj
MTRmNGJmLi4zNWM2Y2U2N2U4NWY4NmFlMTY0YzIxYTcyNjA3ZmMwNjVlY2I1MDU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTI4OSw3ICsy
ODksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRvciBpdGVy
KQogCiAjcHJhZ21hIG1hcmsgLSBJbWFnZURlY29kZXJBVkZPYmpDCiAKLVJlZlB0cjxJbWFnZURl
Y29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBk
YXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQ
dHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKIHsKICAgICAvLyBBVkZvdW5kYXRpb24gbWF5IG5vdCBiZSBhdmFpbGFi
bGUgYXQgcnVudGltZS4KICAgICBpZiAoIUFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24o
KS5pc0F2YWlsYWJsZSgpKQpAQCAtMzAxLDcgKzMwMSw3IEBAIFJlZlB0cjxJbWFnZURlY29kZXJB
VkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBj
b25zCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyQVZGT2JqQyhkYXRhLCBt
aW1lVHlwZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiB9CiAK
LUltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVmZmVyJiBk
YXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCitJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICA6IEltYWdlRGVjb2Rlcigp
CiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV91dGkoV2ViQ29yZTo6VVRJRnJv
bU1JTUVUeXBlKG1pbWVUeXBlKSkKQEAgLTMwOSw3ICszMDksNyBAQCBJbWFnZURlY29kZXJBVkZP
YmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5n
JiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJSZXNv
dXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAgICAgLCBt
X2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6Y3JlYXRl
UkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CiAKICAgICBbbV9h
c3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xvYWRlci5nZXQoKSBxdWV1
ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFV
TFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOkBb
QCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH1dICgpIG11dGFibGUgewpAQCAtNjQxLDkgKzY0MSw5IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZG
T2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6
ZSkKICAgICBtX2xvYWRlci5nZXQoKS5leHBlY3RlZENvbnRlbnRTaXplID0gZXhwZWN0ZWRDb250
ZW50U2l6ZTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckFWRk9i
akM6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRh
OmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxs
RGF0YVJlY2VpdmVkXTsKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9p
c0FsbERhdGFSZWNlaXZlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggMjAwZTFh
OGY5YWZiYTBmY2JiYTViMGEzZWQ3MDRjZDM0MWI0NTBkNi4uYzlkOWIyYTk2ODViMDFlOTFhYWEw
MGMwZTAwMzA3NzM4NTY5MTQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtNjYsNyArNjYs
NyBAQCBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY7CiBjbGFzcyBNZWRp
YVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7CiBjbGFz
cyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzsKIGNsYXNz
IFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzsKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
cjsKQEAgLTQyNiw3ICs0MjYsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjpvcHRpb25h
bDxXYWxsVGltZT4gbV93YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRUaW1lOwogICAgIG11dGFibGUg
aW50IG1fdGltZUNvbnRyb2xTdGF0dXNBdENhY2hlZEN1cnJlbnRUaW1lIHsgMCB9OwogICAgIG11
dGFibGUgZG91YmxlIG1fcmVxdWVzdGVkUmF0ZUF0Q2FjaGVkQ3VycmVudFRpbWUgeyAwIH07Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gbV9rZXlJRDsKICAgICBkb3VibGUgbV9jYWNoZWRSYXRlIHsgMCB9OwogICAg
IGJvb2wgbV9yZXF1ZXN0ZWRQbGF5aW5nIHsgZmFsc2UgfTsKICAgICBkb3VibGUgbV9yZXF1ZXN0
ZWRSYXRlIHsgMS4wIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBkMThhODVhNzk0ZjUy
M2Y5NDkxMmUyN2YwOGI3Y2NiZTg5M2M4ZWQwLi5iMWM2MDc5YzY0ODcwZjg4ZTM1YzgwODExYTVi
MThiZGExYjdmNjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTI3OTIsNyArMjc5Miw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YXR0ZW1wdFRvRGVj
cnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jCiAgICAgaWYgKCFtX2tleUlEIHx8ICFtX2NkbUlu
c3RhbmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1f
Y2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMoVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pjo6
ZnJvbSgqbV9rZXlJRCkpOworICAgIGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5j
ZS0+c2Vzc2lvbkZvcktleUlEcyhWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6
ZnJvbSgqbV9rZXlJRCkpOwogICAgIGlmICghaW5zdGFuY2VTZXNzaW9uKQogICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDLm1tCmluZGV4IGQ5NjBhZmRjYTIxNGJmYTQ0MGVlYTIwODgzYmNhOTEzMmUyMmY5YTAu
LjRkZDZiOTFhOTQ4MzE2OWEwMjM2ODg4ZDBlNGQ4MmZmYjgzNjY2MmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtMjEz
LDcgKzIxMyw3IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDKCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShT
ZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IHNl
Z21lbnQudGFrZVNoYXJlZEJ1ZmZlcigpOwotICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVy
LT5jcmVhdGVOU0RhdGEoKTsKKyAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNSZXNl
dCB8fCBmbGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0eSkKICAgICAgICAgW21fcGFy
c2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURhdGFQ
YXJzZXJTdHJlYW1EYXRhRGlzY29udGludWl0eV07CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKaW5kZXggMDM0MjBm
MTM4MzY0ZmFjMjA5MWUxMDRkMTM2ZmYzOGExZmI5ZmUyMi4uZWFkMDgzYTZjYzdlNzM2YjQyMTcx
MGZhYzM5MmEwN2RmZjkyYmU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC03Myw3ICs3Myw3IEBAIGNsYXNzIFZpZGVv
VHJhY2tQcml2YXRlOwogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM7
CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzsKIGNsYXNzIFdlYkNv
cmVEZWNvbXByZXNzaW9uU2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJy
b3JDbGllbnQgewogcHVibGljOgpAQCAtMTUzLDcgKzE1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZChSZWY8TWVkaWFTYW1wbGU+JiYsIHVpbnQ2
NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKIAogICAgIC8vIFNvdXJjZUJ1
ZmZlclByaXZhdGUgb3ZlcnJpZGVzCi0gICAgdm9pZCBhcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CisgICAgdm9pZCBhcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
IGZpbmFsOwogICAgIHZvaWQgYWJvcnQoKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3Rh
dGUoKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSBmaW5hbDsKQEAg
LTIyMSw3ICsyMjEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQogICAgIFJlZlB0cjxDRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4gbV9jZG1JbnN0YW5jZTsKLSAgICBWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+IG1fa2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+IG1fa2V5SURzOwogI2VuZGlmCiAKICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6
ZT4gbV9jYWNoZWRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCAzYTI4NjdhMWFjMjQzYmI5YzkzYzlkNmI3MGNh
NTZiMDI5NDhmYzljLi4yNGFlMGUxNDA2MDE5MTQzZmFkNGYxNTI5ZTY4ZWQ0OWI0MTY1M2NhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5tbQpAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvCiAgICAg
VU5VU0VEX1BBUkFNKGhhc1Nlc3Npb25TZW1hcGhvcmUpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGRhdGEpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiZGF0YSBsZW5n
dGggPSAiLCBkYXRhLT5zaXplKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYwZDhlNzExMzJmNmMyODdhMmU2MjlhNGI4
OGE1MzlkZmQ1M2NiZTIuLjBlZmVlYWVmNWIyZDcxYmM2ZDY3MDRkZDFiOTc1YWNiYWUxMTNiYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ci5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM7CiBjbGFzcyBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI7CiBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4gewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcik7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVz
cG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBsb2FkRmFp
bGVkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZCgpOwotICAg
IHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZv
aWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKIAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50
OwogICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVl
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIubW0KaW5kZXggYTIyYTk5N2IxMTA3OWQ0NjU4NmFhNjQ4NTYxYmJmNzJhNmYyNDdmMC4uZjky
MWYzZGEwZTY5YjMzOTk3N2M5ZTNlNDk2NjdhMjhmNWU5NWNiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTU2LDE0ICsx
NTYsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkp
OyB9CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZv
aWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1
bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBs
b2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVy
cm9yKTsgfQogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVkKCk7IH0KIAogICAg
IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVmUHRyPFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsKIAogV2Vha1B0cjxQ
bGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6
Y3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBQbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIxMSwx
MyArMjExLDEwIEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNo
ZWQoKQogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQogCi12b2lkIFBsYXRmb3JtUmVz
b3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2Fk
ZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9i
dWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Ci0gICAgZWxzZQotICAgICAgICBtX2J1ZmZlci0+YXBw
ZW5kKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVk
QnVmZmVyKCptX2J1ZmZlcik7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQo
KSk7CiB9CiAKIGNsYXNzIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyIDogcHVibGljIENhbk1h
a2VXZWFrUHRyPERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyPiB7CkBAIC0zODgsNyArMzg1LDcg
QEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3Rv
cExvYWRpbmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFT
dG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFS
ZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYg
KCFkYXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBkYjQ1N2E4
MWQzZWU4MjkxYjkwNWU5YmE3N2MxZTJhZjMwOWUwY2IyLi45NDE5YmNlYTM4ZGJmOGQ2NDkyZjY4
MDFkOWEyMTU2MjM2NmEyYzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0z
MSwxMCArMzEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVh
dGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250UGxhdGZvcm1E
YXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRW
YXJpYW50U2V0dGluZ3M7CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgc3RydWN0IEZvbnRDdXN0b21QbGF0
Zm9ybURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogcHVibGljOgotICAgIEZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoRlRfRmFjZSwgU2hhcmVkQnVmZmVyJik7CisgICAgRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShGVF9GYWNlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgfkZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoKSA9IGRlZmF1bHQ7CiAgICAgRm9udFBsYXRmb3JtRGF0YSBmb250
UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFs
aWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
c0Zvcm1hdChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3
ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUwYzA2Li5iNmQzZWIzNjMxMTI0NDYxM2IzODAzZjJmM2QyNGQz
MDg3ZWEyNGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yNDQsMTYgKzI0NCwxNiBAQCBzaXplX3Qgc2hh
cmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2Zm
X3QgcG9zaXRpb24sCiAKIHZvaWQgc2hhcmVkQnVmZmVyUmVsZWFzZSh2b2lkKiBpbmZvKQogewot
ICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVy
Kj4oaW5mbyk7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3Rh
dGljX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAgIHNoYXJlZEJ1ZmZl
ci0+ZGVyZWYoKTsKIH0KICNlbmRpZgogCi1JbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0co
U2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pCitJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBpZiAoZGF0YS5zaXplKCkgPj0g
MzIpCi0gICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERh
dGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgICAg
ICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEubWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsK
ICAgICAKICAgICBpZiAodXRpSGludCkgewogICAgICAgICBjb25zdCB2b2lkKiBrZXkgPSBrQ0dJ
bWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsKQEAgLTU2MiwyMyArNTYyLDI0IEBAIFBsYXRm
b3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpCiAgICAgcmV0dXJuIG1hc2tlZEltYWdlID8gbWFza2VkSW1hZ2Ug
OiBpbWFnZTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShTaGFyZWRCdWZmZXIm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0
YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsK
ICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gYWxsRGF0YVJlY2VpdmVkOwogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZm
ZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidz
IGtub3dsZWRnZS4KLSAgICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFw
IGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJ
bWFnZUlPIGlzCi0gICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAg
ICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEuY3Jl
YXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAgLy8gT24gTWFjIHRoZSBO
U0RhdGEgaW5zaWRlIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRseSBh
cHBlbmRlZCB0byB3aXRob3V0IHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdl
LgorICAgIC8vIFdlIHVzZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFw
IGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJ
bWFnZUlPIGlzCisgICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIuCisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgp
LCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVj
ZWl2ZWQpOwogI2Vsc2UKLSAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRo
ZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKLSAgICAvLyBXZSB1c2UgdGhlIEdldEJ5
dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25l
IGJlY2F1c2UgU2hhcmVkQnVmZmVyCisgICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8g
d3JhcCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KKyAgICBhdXRvIGNvbnRpZ3VvdXNEYXRh
ID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNvbnRpZ3VvdXNEYXRhLmdldCgpLnJlZigp
OworICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0
aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
CiAgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9p
bnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gKICAgICAvLyBpcyBh
IHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2FsbGJhY2suCiAgICAg
Q0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7IDAsIDAs
IDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9
OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRD
RihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0YSwgZGF0YS5zaXplKCksICZwcm92aWRl
ckNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3Zp
ZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdChjb250aWd1b3VzRGF0YS5w
dHIoKSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOwogICAgIENHSW1hZ2VTb3Vy
Y2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhUHJvdmlkZXIu
Z2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCmluZGV4IDk3NDA3MzZh
MjFhYzk5OGFiMDVmMWM5YjRmNWIxNjc1ZTQ0ZDJjOTEuLmEwYWMxYzJmYmVlNTI3ZTVhYjExMTQ1
NTgxMmJkYjczNjNhMDU1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApAQCAtMzIsOSArMzIsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBJbWFnZURlY29kZXJDRyBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29k
ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEltYWdlRGVj
b2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKTsKKyAgICBJbWFnZURlY29kZXJDRyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCi0gICAgc3Rh
dGljIFJlZjxJbWFnZURlY29kZXJDRz4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFP
cHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKQorICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyQ0c+IGNyZWF0ZShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJDRyhkYXRhLCBhbHBo
YU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CkBAIC02NCw3ICs2
NCw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNB
bGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVk
OyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmNwcAppbmRleCAzMWMyN2MwNjliMmIzYzcwMzczMmViNzEzYjI2MzEyODQyMTI0
ZTZlLi5mZjc3YjUzZTlkNjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJv
eURlY29kZWREYXRhKGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9j
dW1lbnQoKQogewotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVy
ID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVD
RkRhdGEoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVBy
b3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9jdW1lbnQg
PSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdl
dCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCmluZGV4IGY3NDdkODBmYjYxZDMw
ZmM1MDIyZTY4MmQ2MzU2MTMzZDNjYTY5N2EuLmM4YTgwNjEyMjA1M2Y2NDhhZGRiMDJhYzM4OWNl
NzE0MzY4ZGJiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcApAQCAtODAsNyArODAsNyBA
QCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0TWluaW11bUF1ZGlvU2FtcGxlRHVyYXRpb24o
ZmxvYXQpCiB7CiB9CiAKLVNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudChSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK1NvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2Vn
bWVudChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX3NlZ21l
bnQoV1RGTW92ZShidWZmZXIpKQogewogfQpAQCAtMTAxLDcgKzEwMSw3IEBAIHNpemVfdCBTb3Vy
Y2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJu
IGNsYW1wVG88c2l6ZV90PihNVFBsdWdpbkJ5dGVTb3VyY2VHZXRMZW5ndGgoYnl0ZVNvdXJjZS5n
ZXQoKSkpOwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IFJlZjxTaGFyZWRC
dWZmZXI+JiBidWZmZXIpCisgICAgICAgIFtdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYnVmZmVyLT5zaXpl
KCk7CiAgICAgICAgIH0KQEAgLTEyNSw3ICsxMjUsNyBAQCBhdXRvIFNvdXJjZUJ1ZmZlclBhcnNl
cjo6U2VnbWVudDo6cmVhZChzaXplX3QgcG9zaXRpb24sIHNpemVfdCBzaXplVG9SZWFkLCB1aW50
OAogICAgICAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVhZEVycm9yPiB7IFJlYWRFcnJvcjo6
RmF0YWxFcnJvciB9OwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAgIFsmXShjb25zdCBSZWY8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZWFkUmVzdWx0CisgICAgICAgIFsmXShjb25zdCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVhZFJlc3VsdAogICAgICAg
ICB7CiAgICAgICAgICAgICBidWZmZXItPmNvcHlUbyhkZXN0aW5hdGlvbiwgcG9zaXRpb24sIHNp
emVUb1JlYWQpOwogICAgICAgICAgICAgcmV0dXJuIHNpemVUb1JlYWQ7CkBAIC0xMzMsNyArMTMz
LDcgQEAgYXV0byBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnJlYWQoc2l6ZV90IHBvc2l0
aW9uLCBzaXplX3Qgc2l6ZVRvUmVhZCwgdWludDgKICAgICApOwogfQogCi1SZWY8U2hhcmVkQnVm
ZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VTaGFyZWRCdWZmZXIoKQorUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFr
ZVNoYXJlZEJ1ZmZlcigpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9zZWdtZW50LAog
I2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCkBAIC0xNDIsMjggKzE0MiwyOCBAQCBS
ZWY8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VTaGFyZWRC
dWZmZXIoKQogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcihzaXplKCkpOwogICAg
ICAgICAgICAgYXV0byByZWFkUmVzdWx0ID0gcmVhZCgwLCB2ZWN0b3Iuc2l6ZSgpLCB2ZWN0b3Iu
ZGF0YSgpKTsKICAgICAgICAgICAgIGlmICghcmVhZFJlc3VsdC5oYXNfdmFsdWUoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICB2
ZWN0b3Iuc2hyaW5rKHJlYWRSZXN1bHQudmFsdWUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKTsKKyAgICAgICAgICAgIHJldHVybiBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKTsKICAgICAgICAg
fSwKICNlbmRpZgotICAgICAgICBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAgICAg
ICAgWyZdKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShidWZmZXIsIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCkpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UoYnVmZmVyLCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7CiAgICAgICAgIH0KICAgICApOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OmdldFNoYXJlZEJ1
ZmZlcigpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gU291cmNlQnVmZmVy
UGFyc2VyOjpTZWdtZW50OjpnZXRTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKG1fc2VnbWVudCwKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVS
KQotICAgICAgICBbJl0oY29uc3QgUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mKSAt
PiBSZWZQdHI8U2hhcmVkQnVmZmVyPgorICAgICAgICBbJl0oY29uc3QgUmV0YWluUHRyPE1UUGx1
Z2luQnl0ZVNvdXJjZVJlZj4mKSAtPiBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4KICAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0sCiAjZW5kaWYK
LSAgICAgICAgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlZlB0cjxT
aGFyZWRCdWZmZXI+CisgICAgICAgIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgLT4gUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+CiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiBidWZmZXIucHRyKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyLmgKaW5kZXggNTIwYjUyMDdmYzI3MWQ3OTgxNTMzZmIxNGQyMzE1NTk0YTg4ODM2NS4u
NzI5N2E3OTE0YTc5YWRmNjQyZGM2YjE2YjM2ZTYwZjljZDAyOWYwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
b250ZW50VHlwZTsKIGNsYXNzIE1lZGlhU2FtcGxlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU291cmNl
QnVmZmVyUGFyc2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNvdXJjZUJ1ZmZlclBh
cnNlcj4gewogcHVibGljOgpAQCAtNjksMTEgKzY5LDExIEBAIHB1YmxpYzoKICNpZiBIQVZFKE1U
X1BMVUdJTl9GT1JNQVRfUkVBREVSKQogICAgICAgICBTZWdtZW50KFJldGFpblB0cjxNVFBsdWdp
bkJ5dGVTb3VyY2VSZWY+JiYpOwogI2VuZGlmCi0gICAgICAgIFNlZ21lbnQoUmVmPFNoYXJlZEJ1
ZmZlcj4mJik7CisgICAgICAgIFNlZ21lbnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
OwogICAgICAgICBTZWdtZW50KFNlZ21lbnQmJikgPSBkZWZhdWx0OwotICAgICAgICBSZWY8U2hh
cmVkQnVmZmVyPiB0YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAgICAgIC8vIFdpbGwgcmV0dXJuIG51
bGxwdHIgaWYgU2VnbWVudCdzIGJhY2tlbmQgaXNuJ3QgYSBTaGFyZWRCdWZmZXIuCi0gICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZVNoYXJlZEJ1ZmZlcigpOworICAgICAgICAv
LyBXaWxsIHJldHVybiBudWxscHRyIGlmIFNlZ21lbnQncyBiYWNrZW5kIGlzbid0IGEgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgICAgIHNpemVfdCBzaXplKCkgY29uc3Q7
CiAKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9S
RUFERVIpCiAgICAgICAgICAgICBSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiwKICNl
bmRpZgotICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4KKyAgICAgICAgICAgIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPgogICAgICAgICA+IG1fc2VnbWVudDsKICAgICB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDM1OWVkYjQxNWZkMzc1ZWQ4MmI3YjRh
NDlmMTFlNGM4ZmQ2YzdkNmIuLjliYzE4OTQxOTg2MzBiYWQ4ZDdjYmQwYjNhNWIyOGU0NmU5ZWZl
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0zNjcsNyArMzY3LDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgRnJlZURhdGFTZWdtZW50KHZvaWQqIHJlZmNv
biwgdm9pZCosIHNpemVfdCkKICAgICB7Ci0gICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KHJlZmNvbik7CisgICAgICAgIGF1
dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21lbnQqPihyZWZjb24pOwogICAg
ICAgICBidWZmZXItPmRlcmVmKCk7CiAgICAgfQogCkBAIC0zODgsNyArMzg4LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgIGFkdmFuY2VUb05leHRTZWdtZW50KCk7CiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzaGFyZWRCdWZmZXIgPSBjdXJyZW50U2VnbWVudC5nZXRTaGFyZWRCdWZmZXIoKTsKKyAg
ICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBj
dXJyZW50U2VnbWVudC5nZXRTaGFyZWRCdWZmZXIoKTsKICAgICAgICAgICAgIENNQmxvY2tCdWZm
ZXJSZWYgcmF3QmxvY2tCdWZmZXIgPSBudWxscHRyOwogICAgICAgICAgICAgdWludDY0X3QgbGFz
dFJlYWQgPSAwOwogICAgICAgICAgICAgc2l6ZV90IGRlc3RpbmF0aW9uT2Zmc2V0ID0gbV9wb3Np
dGlvbldpdGhpblNlZ21lbnQ7CkBAIC00MDksNyArNDA5LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgIGRlc3RpbmF0aW9uT2Zmc2V0ID0gMDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKHNoYXJlZEJ1ZmZlci0+aGFzT25lU2VnbWVudCgpLCAiQ2FuIG9u
bHkgZGVhbCB3aXRoIHNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGEgc2luZ2xlIERhdGFTZWdtZW50
Iik7Ci0gICAgICAgICAgICAgICAgLy8gQSBTaGFyZWRCdWZmZXIgZG9lc24ndCBoYXZlIHRocmVh
ZC1zYWZlIHJlZmNvdW50aW5nLCBhcyBzdWNoIHdlIG11c3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0
aGUgRGF0YVNlZ21lbnQgaW5zdGVhZC4KKyAgICAgICAgICAgICAgICAvLyBBIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIgZG9lc24ndCBoYXZlIHRocmVhZC1zYWZlIHJlZmNvdW50aW5nLCBhcyBzdWNo
IHdlIG11c3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgRGF0YVNlZ21lbnQgaW5zdGVhZC4KICAg
ICAgICAgICAgICAgICAvLyBUT0RPOiBjb3VsZCB3ZSBvbmx5IGNyZWF0ZSBhIG5ldyBDTUJsb2Nr
QnVmZmVyIGlmIHRoZSBiYWNrZW5kIG1lbW9yeSBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBv
bmU/CiAgICAgICAgICAgICAgICAgYXV0byBmaXJzdFNlZ21lbnQgPSBzaGFyZWRCdWZmZXItPmJl
Z2luKCktPnNlZ21lbnQ7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGNhblJlYWQgPSBzdGQ6Om1p
bjxzaXplX3Q+KG51bVRvUmVhZCwgZmlyc3RTZWdtZW50LT5zaXplKCkgLSBtX3Bvc2l0aW9uV2l0
aGluU2VnbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3Bw
CmluZGV4IGU4MDUwOWVjY2EwNWQyY2M4ZWQxMDY2MDcwNDFmNWNjY2MzZTM3OTQuLjYzOGU2ODM5
N2EyYjY2OTZiMmYxZWRlMjRlYThmZGI5MDYyNmNlZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCkBAIC03MjksNyArNzI5LDcgQEAgRGlkQ2hhbmdlSXRl
bUJ1ZmZlciBJdGVtQnVmZmVyOjpzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChzaXplX3QgbnVt
YmVyT2ZCeXRlcykKIHZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0SXRl
bSYgdGVtcG9yYXJ5SXRlbSkKIHsKICAgICBhdXRvIHJlcXVpcmVkU2l6ZUZvckl0ZW0gPSBtX3dy
aXRpbmdDbGllbnQtPnJlcXVpcmVkU2l6ZUZvckl0ZW0odGVtcG9yYXJ5SXRlbSk7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gb3V0T2ZMaW5lSXRlbTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gb3V0T2ZMaW5lSXRlbTsKICAgICBpZiAoIXJlcXVpcmVkU2l6ZUZvckl0ZW0p
IHsKICAgICAgICAgb3V0T2ZMaW5lSXRlbSA9IG1fd3JpdGluZ0NsaWVudC0+ZW5jb2RlSXRlbU91
dE9mTGluZSh0ZW1wb3JhcnlJdGVtKTsKICAgICAgICAgaWYgKCFvdXRPZkxpbmVJdGVtKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCmluZGV4IGM4NzMxOTgyZWY4Mzkz
MWJiYWUzMWI3ODY1MGFjMGRhMjBhMDVmYzUuLmIzMWJjNWZkNGU5MjE0YjE1YTM3NjFmYmU5OGQ2
MGNlYjQ3YTk4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgK
QEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0
T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0CisgICAgdmlydHVhbCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5
TGlzdEl0ZW0mKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpA
QCAtMTY4LDcgKzE2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB3aXRoIHBhZGRpbmcgYmV0d2VlbiBl
YWNoIGl0ZW0gdG8gZW5zdXJlIHRoYXQgYWxsIGl0ZW1zIGFyZSBhbGlnbmVkIHRvIDggYnl0ZXMu
CiAgICAgLy8KICAgICAvLyBJZiBhIHdyaXRpbmcgY2xpZW50IGlzIHByZXNlbnQgYW5kIHJlcXVp
cmVzIGN1c3RvbSBlbmNvZGluZyBmb3IgdGhlIGdpdmVuIGl0ZW0gdHlwZSBULCB0aGUKLSAgICAv
LyBpdGVtIGJ1ZmZlciB3aWxsIGFzayB0aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgU2hhcmVkQnVm
ZmVyIGNvbnRhaW5pbmcgZW5jb2RlZCBkYXRhIGZvciB0aGUKKyAgICAvLyBpdGVtIGJ1ZmZlciB3
aWxsIGFzayB0aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBj
b250YWluaW5nIGVuY29kZWQgZGF0YSBmb3IgdGhlCiAgICAgLy8gaXRlbS4gVGhpcyBlbmNvZGVk
IGRhdGEgaXMgdGhlbiBhcHBlbmRlZCB0byB0aGUgaXRlbSBidWZmZXIsIHdpdGggcGFkZGluZyB0
byBlbnN1cmUgdGhhdAogICAgIC8vIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoaXMgZGF0YSBhcmUg
YWxpZ25lZCB0byA4IGJ5dGVzLCBpZiBuZWNlc3NhcnkuIFdoZW4gY29uc3VtaW5nIGVuY29kZWQK
ICAgICAvLyBpdGVtIGRhdGEsIGEgY29ycmVzcG9uZGluZyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVu
dCB3aWxsIGJlIHJlcXVpcmVkIHRvIGNvbnZlcnQgdGhpcyBlbmNvZGVkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA1MDZiNGRkNjJk
NTVhNTZhMjc4YzMwY2NhYjJkMTkxMTBmMjQxZWVjLi4yYjQ0M2ZiYmVkMmMxZmRlNDhiY2RlOWNi
ZTQwOTUzNDk3ZmRlOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0YXRpYyB2b2lkIHJlbGVhc2VDdXN0b21Gb250RGF0YSh2b2lkKiBkYXRhKQogewotICAg
IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOworICAgIHN0YXRpY19j
YXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKIH0KIAogc3RhdGlj
IGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBmcmVlVHlwZUZhY2VLZXk7CiAKLUZvbnRDdXN0b21QbGF0
Zm9ybURhdGE6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSBmcmVlVHlwZUZhY2UsIFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YShGVF9GYWNlIGZyZWVUeXBlRmFjZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogICAgIDogbV9mb250RmFjZShhZG9wdFJlZihjYWlyb19mdF9mb250X2ZhY2VfY3Jl
YXRlX2Zvcl9mdF9mYWNlKGZyZWVUeXBlRmFjZSwgRlRfTE9BRF9ERUZBVUxUKSkpCiB7CiAgICAg
YnVmZmVyLnJlZigpOyAvLyBUaGlzIGlzIGJhbGFuY2VkIGJ5IHRoZSBidWZmZXItPmRlcmVmKCkg
aW4gcmVsZWFzZUN1c3RvbUZvbnREYXRhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcAppbmRleCA5YWQxOWI4NzZiMjdlNjBkNGZiYTUwMzBlNjVmODFlN2NhOGE1MDY5Li5k
ZmJjNTgwZmI4ZTliMzA5MzZjY2EwOGJiODhiNDljMmJiNjUzYWM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtODEsMTIgKzgxLDEyIEBAIEltYWdlRGVjb2Rl
ckdTdHJlYW1lclNhbXBsZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRlcikKICAgICByZXR1cm4gKElt
YWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZSopaXRlci0+c2Vjb25kLmdldCgpOwogfQogCi1SZWZQ
dHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZShT
aGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IEltYWdlRGVjb2RlckdTdHJl
YW1lcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBJbWFnZURlY29kZXJHU3RyZWFtZXIoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBn
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogfQogCi1JbWFnZURlY29kZXJHU3RyZWFtZXI6
OkltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdl
RGVjb2RlckdTdHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICA6IG1fbWltZVR5cGUobWltZVR5cGUpCiB7CiAgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwpAQCAtMTk5LDcgKzE5OSw3IEBAIFBsYXRm
b3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCkKK3ZvaWQg
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEsIGJvb2wpCiB7CiAgICAgcHVzaEVuY29kZWREYXRhKGRhdGEpOwogfQpAQCAtNDI2LDEwICs0
MjYsMTEgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRl
Y29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKICAgICByZXR1cm4gRW5jb2RlZERhdGFT
dGF0dXM6OlVua25vd247CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5j
b2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIEltYWdlRGVjb2RlckdT
dHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3Vv
dXMoKTsKICAgICBtX2VvcyA9IGZhbHNlOwotICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVh
dGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gYnVmZmVyLmRhdGEoKSwg
c2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRl
KCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGNvbnRpZ3VvdXNCdWZmZXIt
PmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKICAgICAgICAgbV9pbm5lckRlY29kZXIg
PSBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6Y3JlYXRlKCp0aGlzLCBkYXRh
LCBzaXplKTsKICAgICAgICAgbV9pbm5lckRlY29kZXItPnJ1bigpOwogICAgIH0sIFRocmVhZFR5
cGU6OkdyYXBoaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAppbmRleCA2
NmYzMzcyODQ2YTRkZjg3NGY0MjBkYjY1NGU2ODljOWU0M2IwYzUyLi5kM2VmNmE0NWNkN2RiZGZj
MzEyMGVhMjNmOGRlYjNjNTk5NzFhZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5oCkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIEltYWdlRGVjb2RlckdTdHJlYW1lciBmaW5h
bCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2RlckdTdHJlYW1lcik7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IGNyZWF0ZShTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pOwotICAgIEltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBjcmVh
dGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBB
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfklt
YWdlRGVjb2RlckdTdHJlYW1lcigpID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBib29sIHN1cHBv
cnRzTWVkaWFUeXBlKE1lZGlhVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID09IE1lZGlhVHlwZTo6
VmlkZW87IH0KQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtSW1hZ2VQdHIg
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2Ft
cGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0
aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4
cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNldERhdGEo
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0
RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFs
OwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Vv
czsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAg
LTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICB2b2lkIGhhbmRsZVNhbXBs
ZShHUmVmUHRyPEdzdFNhbXBsZT4mJik7Ci0gICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxl
KiBzYW1wbGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNzk3OTQ4MGY5MWM1OTdhYTlmOTAwOTdj
MTg4MzJjNmExNWMzMmNlOC4uYjMyNGNmMTE0NjQ3YjMzNzVlNmE0NWJmYWIxMDNlMGEyOTBmYjhk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
QEAgLTM2OTIsNyArMzY5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpp
bml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChJbml0RGF0YSYmIGluaXRECiAKICAgICAgICAg
R1NUX0RFQlVHKCJzY2hlZHVsaW5nIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkICVzIGV2
ZW50IG9mIHNpemUgJXp1IiwgaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKS51dGY4KCku
ZGF0YSgpLAogICAgICAgICAgICAgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwotICAgICAg
ICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGluaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXpl
KCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogICAgICAgICB3ZWFrVGhpcy0+bV9w
bGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhLnBheWxvYWRDb250
YWluZXJUeXBlKCksIGluaXREYXRhLnBheWxvYWQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7
CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDVkODZmYjFhZjQ4N2MwMjg5ZTAwMTI1NTk2NWMzMWRjZGE5NzM0MjYuLjkzMDE5MDk5
NDViNGEyM2Q2Njc4MmYzNTBiNTZlNDQ3OWY4MDI2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAg
ICAvLyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRob2RzLgogICAgIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNo
ZWNrKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lk
IGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtMTA5Myw3ICsxMDkzLDcg
QEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb24KICAgICBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRD
b250aW51ZVBvbGljeUNoZWNrOjpZZXMpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlU3RyZWFt
aW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Ojpk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgV2Vi
S2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5
Q2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvQ0RNUHJveHlDbGVhcktleS5oCmluZGV4IDY5MmE5OTZkMTljMjRlZmQ5YTQ4NTUyMzczYTU2
NzliNTJlMWVmMWMuLjM0OWJmZGNhYWQ2YzdkN2Y4ZDVhZGEwYTE3MjE5ZmQ5ZTcwNjI2ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
Q0RNUHJveHlDbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCkBAIC02MiwxMSArNjIsMTEgQEAgcHVi
bGljOgogICAgIENETVByb3h5Q2xlYXJLZXkoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+Q0RN
UHJveHlDbGVhcktleSgpOwogCi0gICAgLy8gRklYTUU6IFRoZXJlJ3MgYSBsYWNrIG9mIGNvbnNp
c3RlbmN5IGJldHdlZW4gU2hhcmVkQnVmZmVycywKKyAgICAvLyBGSVhNRTogVGhlcmUncyBhIGxh
Y2sgb2YgY29uc2lzdGVuY3kgYmV0d2VlbiBGcmFnbWVudGVkU2hhcmVkQnVmZmVycywKICAgICAv
LyBWZWN0b3I8Y2hhcj4ncyBhbmQge3VpbnQ4X3QqLHNpemVfdH0gaWRpb21zIGZvciByZXByZXNl
bnRpbmcgYSBjaHVuayBvZgotICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBzb21laG93LiBOb3RlIFNo
YXJlZEJ1ZmZlcnMgYXJlIGRhbmdlcm91cyBzaW5jZQorICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBz
b21laG93LiBOb3RlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJzIGFyZSBkYW5nZXJvdXMgc2luY2UK
ICAgICAvLyB0aGV5J3JlIG5vdCB0aHJlYWQtc2FmZSBhbmQgdGhpcyBjbGFzcyBtdXN0IG1haW50
YWluCi0gICAgLy8gdGhyZWFkLXNhZmV0eSwgYnV0IG1heWJlIFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQgY291bGQgYmUKKyAgICAvLyB0aHJlYWQtc2FmZXR5LCBidXQgbWF5YmUgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQgY291bGQgYmUKICAgICAvLyBtYWRlIHRvIHdvcmss
IGhvd2V2ZXIgdGhhdCBoYXMgemVybyBoZWxwZXJzIGZvciBkcm9wcGluZyBpbnRvCiAgICAgLy8g
aXRlcmF0b3ItYXdhcmUgLyBjb21wYXJhdG9yLWF3YXJlIGNvbnRhaW5lcnMuLi4KICAgICBzdHJ1
Y3QgY2VuY0RlY3J5cHRDb250ZXh0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCmluZGV4IDJl
ZmEwNDM2MGU4ODQ4MzgwNjE0NGMzZDcxZGU2M2FkN2I0MmI1NjEuLmMzODkxNmU3ZDA1OWU4ODli
NWM4OGVlYjA5ZTBmNGNmYzAzYzFkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcApAQCAt
MjIwLDcgKzIyMCw3IEBAIGJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzU2Vzc2lvbnMo
KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZhdGVUaHVuZGVyOjpz
dXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hh
cmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBv
cnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUg
aW5pdERhdGEgYnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0IGluIGtleWlkcyBjYXNlLgogICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJrZXlpZHMiKSAm
JiBDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdChpbml0RGF0YSkpCkBAIC0yMzcsNyArMjM3
LDcgQEAgYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gQ0RNUHJpdmF0ZVRodW5kZXI6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlc3BvbnNl
LmNvcHkoKTsKIH0KQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6
aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYQog
ICAgIGNhbGxiYWNrKFN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjpz
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCAgU3Vj
Y2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6c2V0U2Vy
dmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUs
ICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBPcGVuQ0RNRXJyb3IgZXJyb3Ig
PSBvcGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2NlcnRpZmljYXRlKG1fdGh1bmRlclN5c3RlbS5n
ZXQoKSwgY29uc3RfY2FzdDx1aW50OF90Kj4oY2VydGlmaWNhdGUtPmRhdGEoKSksCiAgICAgICAg
IGNlcnRpZmljYXRlLT5zaXplKCkpOwpAQCAtMzI2LDcgKzMyNiw3IEBAIFJlZlB0cjxDRE1JbnN0
YW5jZVNlc3Npb24+IENETUluc3RhbmNlVGh1bmRlcjo6Y3JlYXRlU2Vzc2lvbigpCiBjbGFzcyBQ
YXJzZWRSZXNwb25zZU1lc3NhZ2UgewogCiBwdWJsaWM6Ci0gICAgUGFyc2VkUmVzcG9uc2VNZXNz
YWdlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgUGFyc2VkUmVzcG9u
c2VNZXNzYWdlKGNvbnN0IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQog
ICAgIHsKICAgICAgICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+c2l6ZSgpKQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMzU0LDggKzM1NCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQogICAgIGJvb2wgaGFzUGF5bG9hZCgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fcGF5bG9hZCk7IH0KLSAgICBjb25zdCBS
ZWY8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0JiB7IEFTU0VSVChtX3BheWxvYWQpOyBy
ZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiYgcGF5bG9h
ZCgpICYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9Cisg
ICAgY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QmIHsg
QVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxvYWQudmFsdWUoKTsgfQorICAgIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpICYgeyBBU1NFUlQobV9wYXlsb2FkKTsg
cmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CiAgICAgYm9vbCBoYXNUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlLmhhc192YWx1ZSgpOyB9CiAgICAgV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdl
VHlwZSB0eXBlKCkgY29uc3QgeyBBU1NFUlQobV90eXBlKTsgcmV0dXJuIG1fdHlwZS52YWx1ZSgp
OyB9CiAgICAgV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSB0eXBlT3IoV2ViQ29yZTo6TWVk
aWFLZXlNZXNzYWdlVHlwZSBhbHRlcm5hdGUpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA/IG1fdHlw
ZS52YWx1ZSgpIDogYWx0ZXJuYXRlOyB9CkBAIC0zNjQsMTEgKzM2NCwxMSBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgYm9vbCBtX2lzVmFsaWQgeyBmYWxzZSB9OwotICAgIHN0ZDo6b3B0aW9u
YWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IG1fcGF5bG9hZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9wYXlsb2FkOwogICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZT4gbV90eXBlOwogfTsKIAotdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25UaHVuZGVyOjpjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6Y2hhbGxl
bmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogewogICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2Uo
YnVmZmVyKTsKICAgICBpZiAoIXBhcnNlZFJlc3BvbnNlTWVzc2FnZSkgewpAQCAtNDc1LDcgKzQ3
NSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6a2V5c1VwZGF0ZURvbmVDYWxs
YmFjaygpCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQogCi12b2lk
IENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNh
bGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7CiAgICAg
R1NUX0VSUk9SKCJDRE0gZXJyb3IiKTsKICAgICBHU1RfTUVNRFVNUCgiZXJyb3IgZHVtcCIsIG1l
c3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKQEAgLTQ4OCw3ICs0ODgsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBtZXNzYWdlKQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsK
IH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhU2hhcmVkQnVmZmVyLAordm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YVNoYXJlZEJ1ZmZlciwKICAgICBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtNTA2LDcgKzUwNiw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGlj
ZW5zZVR5cGUsIGNvbnN0IEF0CiAgICAgICAgIG1faW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCks
IG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCksIG51bGxwdHIsIDAsICZtX3RodW5kZXJTZXNz
aW9uQ2FsbGJhY2tzLCB0aGlzLCAmc2Vzc2lvbik7CiAgICAgaWYgKCFzZXNzaW9uKSB7CiAgICAg
ICAgIEdTVF9FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBzZXNzaW9uIik7Ci0gICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CisgICAgICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5
bG9hZCgpOwogICAgICAgICBjYWxsYmFjayhpbml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCB7IH0s
IGZhbHNlLCBGYWlsZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTE1LDcgKzUxNSw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5z
ZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0CiAKICAgICBhdXRvIGdlbmVyYXRlQ2hhbGxlbmdl
ID0gW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOwogICAgICAg
ICBpZiAobV9zZXNzaW9uSUQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBHU1RfRVJST1IoImNv
dWxkIG5vdCBjcmVhdGUgc2Vzc2lvbiBpZCIpOwogICAgICAgICAgICAgY2FsbGJhY2soaW5pdERh
dGEucmVsZWFzZU5vbk51bGwoKSwgeyB9LCBmYWxzZSwgRmFpbGVkKTsKQEAgLTU0NSwxMyArNTQ1
LDEzIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6c2Vzc2lvbkZhaWx1cmUoKQog
ICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklE
LCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0
ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSBt
X3Nlc3Npb25JRCk7CiAKICAgICBHU1RfVFJBQ0UoIlVwZGF0aW5nIHNlc3Npb24gJXMiLCBzZXNz
aW9uSUQudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFw
cGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7CisgICAgbV9z
ZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
cmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghcmVzcG9uc2VNZXNz
YWdlKQpAQCAtNTYyLDcgKzU2Miw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5CiAgICAgICAg
ICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShyZXNw
b25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3Nh
Z2UpOwogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9h
ZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBX
VEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAg
ICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2Vk
UmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJV
RygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAg
ICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2Fn
ZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0LApAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklECiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSBtX3Nl
c3Npb25JRCk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdl
ZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJv
b2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNz
YWdlKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAg
aWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghcmVzcG9uc2VNZXNzYWdlKQpAQCAtNTk3
LDcgKzU5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24o
TGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiAgICAgICAgICAgICAgICAgUGFy
c2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShyZXNwb25zZU1lc3NhZ2Up
OwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAg
ICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNl
ZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAgICAgICBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNz
YWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygiZ290IG1lc3Nh
Z2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBH
U1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsK
ICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQs
IHN0ZDo6bWFrZV9wYWlyKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS50eXBlT3IoTWVkaWFLZXlNZXNz
YWdlVHlwZTo6TGljZW5zZVJlcXVlc3QpLApAQCAtNjQwLDcgKzY0MCw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSUQsIExpY2VuCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIG1fc2Vzc2lvbklE
ID09IHNlc3Npb25JRCk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChb
dGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdlZENh
bGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wg
c3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBtdXRhYmxl
IHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3Mp
IHsKICAgICAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtNjQ5LDcgKzY0OSw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSUQsIExpY2VuCiAgICAgICAgICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBh
cnNlZFJlc3BvbnNlTWVzc2FnZShidWZmZXIpOwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJz
ZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1l
c3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwor
ICAgICAgICAgICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9
IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIEdTVF9ERUJVRygic2Vzc2lvbiAlcyByZW1vdmVkLCBtZXNzYWdlIGxlbmd0aCAlenUi
LCBtX3Nlc3Npb25JRC51dGY4KCkuZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAg
ICAgICAgICAgICBjYWxsYmFjayhtX2tleVN0b3JlLmFsbEtleXNBcyhNZWRpYUtleVN0YXR1czo6
UmVsZWFzZWQpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKaW5kZXggY2RkOGRh
MjExMjNjMTc5MWFlMmZiNjQzOWZmMmQ2ZmEwZDJlYjIxYy4uMTAyMGUxNTMyMjcxYjUzNTFlMTA2
ZGRlOGYyMWVhNTQwNWE5YzIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKQEAgLTkzLDggKzkz
LDggQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKICAgICBi
b29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBz
dXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKIHByaXZh
dGU6CkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIC8vIENETUluc3RhbmNlCiAgICAg
SW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6VGh1bmRlcjsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdp
dGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rp
c3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJh
Y2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0
aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5h
bDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
a2V5U3lzdGVtOyB9CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lv
bigpIGZpbmFsOwpAQCAtMTI2LDggKzEyNiw4IEBAIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvblRo
dW5kZXIgZmluYWwgOiBwdWJsaWMgQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgewogcHVibGljOgog
ICAgIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXIoQ0RNSW5zdGFuY2VUaHVuZGVyJik7CiAKLSAg
ICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYm
KSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsK
KyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNl
bnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmlu
YWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2Fs
bGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcm
LCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKQEAgLTE0
MSwxNCArMTQxLDE0IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ0RNSW5zdGFuY2VUaHVuZGVy
KiBjZG1JbnN0YW5jZVRodW5kZXIoKSBjb25zdDsKIAotICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9
IHZvaWQgKENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OiopKFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpOworICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9IHZvaWQgKENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OiopKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKTsKICAgICB1c2luZyBDaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZv
aWQoKT47Ci0gICAgdXNpbmcgU2Vzc2lvbkNoYW5nZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQo
Ym9vbCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+OworICAgIHVzaW5nIFNlc3Npb25DaGFuZ2Vk
Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGJvb2wsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKT47CiAKLSAgICB2b2lkIGNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgY2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQga2V5VXBkYXRlZENhbGxi
YWNrKEtleUlEVHlwZSYmKTsKICAgICB2b2lkIGtleXNVcGRhdGVEb25lQ2FsbGJhY2soKTsKLSAg
ICB2b2lkIGVycm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBl
cnJvckNhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBDRE1J
bnN0YW5jZVNlc3Npb246OktleVN0YXR1cyBzdGF0dXMoY29uc3QgS2V5SURUeXBlJikgY29uc3Q7
CiAgICAgdm9pZCBzZXNzaW9uRmFpbHVyZSgpOwogCkBAIC0xNTksNyArMTU5LDcgQEAgcHJpdmF0
ZToKICAgICBJbml0RGF0YSBtX2luaXREYXRhOwogICAgIE9wZW5DRE1TZXNzaW9uQ2FsbGJhY2tz
IG1fdGh1bmRlclNlc3Npb25DYWxsYmFja3MgeyB9OwogICAgIEJveFB0cjxPcGVuQ0RNU2Vzc2lv
bj4gbV9zZXNzaW9uOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWVzc2FnZTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdlOwogICAgIGJvb2wgbV9uZWVk
c0luZGl2aWR1YWxpemF0aW9uIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8Q2hhbGxlbmdlR2VuZXJh
dGVkQ2FsbGJhY2s+IG1fY2hhbGxlbmdlQ2FsbGJhY2tzOwogICAgIFZlY3RvcjxTZXNzaW9uQ2hh
bmdlZENhbGxiYWNrPiBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVV
dGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCmluZGV4IDNmODVhZmU3M2M4NDI3NjI5OTdk
NWFiYzJkN2JjMDdmN2MwMWI5YzMuLmVhODkwZjY3ZGEyMTM4N2Y0MGRhNjUxYTBjYTVjNzM0OTNl
ODRmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAK
QEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIHZvaWQgbWFya3VwRXJyb3IoR01hcmt1cFBhcnNlQ29u
dGV4dCosIEdFcnJvciosIGdwb2ludGVyKQogCiBzdGF0aWMgR01hcmt1cFBhcnNlciBtYXJrdXBQ
YXJzZXIgeyBtYXJrdXBTdGFydEVsZW1lbnQsIG1hcmt1cEVuZEVsZW1lbnQsIG1hcmt1cFRleHQs
IG1hcmt1cFBhc3N0aHJvdWdoLCBtYXJrdXBFcnJvciB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVu
cGFyc2VkUGF5bG9hZCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6
ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9h
ZCkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNl
ZFBheWxvYWQpOwogICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggZDVhZmY4NDVmNDA5YTc1
ZDcxYTk4NDBhY2YxZDM0MmE0NjQ3ZDJmMS4uMjdkZDRlYWUwZDJlMDFhYjRkODRjMGFiYzQyNGVi
YjEwMTA0YzA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5o
CkBAIC0zOCw4ICszOCw3IEBAIEdTVF9ERUJVR19DQVRFR09SWV9FWFRFUk4od2Via2l0X21lZGlh
X2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnkpCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBJbml0RGF0YSB7CiBwdWJsaWM6Ci0gICAgSW5pdERhdGEoKQotICAgICAg
ICA6IG1fcGF5bG9hZChTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKSB7IH0KKyAgICBJbml0RGF0YSgp
ID0gZGVmYXVsdDsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhbiBlbnVtIGZvciBz
eXN0ZW0gdXVpZHMgZm9yIGJldHRlciB0eXBlIHNhZmV0eS4KICAgICBJbml0RGF0YShjb25zdCBT
dHJpbmcmIHN5c3RlbUlkLCBHc3RCdWZmZXIqIGluaXREYXRhKQpAQCAtNTAsMTMgKzQ5LDE3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIEdTVF9DQVRfTEVWRUxfTE9HKHdlYmtpdF9tZWRpYV9jb21t
b25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5LCBHU1RfTEVWRUxfRVJST1IsIG51
bGxwdHIsICJjYW5ub3QgbWFwICVzIHByb3RlY3Rpb24gZGF0YSIsIHN5c3RlbUlkLnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAg
ICAgICAgbV9wYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3Jl
YXRlU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBpZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0
cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpKQor
ICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxs
KCkpOwogICAgIH0KIAotICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKKyAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5
c3RlbUlkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAg
ICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5j
SWZOZWVkZWQoV1RGTW92ZShwYXlsb2FkKSkpCiAgICAgeworICAgICAgICBpZiAocGF5bG9hZCkg
eworICAgICAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVk
ZWQocGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSkpCisgICAgICAgICAgICAgICAgbV9wYXlsb2Fk
LmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9CiAgICAg
fQogCiAgICAgdm9pZCBhcHBlbmQoSW5pdERhdGEmJiBpbml0RGF0YSkKQEAgLTcyLDEwICs3NSwx
MCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9idXN0LCBzbyBiZSBjYXJl
ZnVsIGhlcmUhCiAgICAgICAgIG1fc3lzdGVtSWQgPSBpbml0RGF0YS5tX3N5c3RlbUlkOwogCi0g
ICAgICAgIG1fcGF5bG9hZC0+YXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOworICAgICAgICBt
X3BheWxvYWQuYXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAgIGNvbnN0
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2Fk
OyB9CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7
IHJldHVybiBtX3BheWxvYWQuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkg
Y29uc3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVy
VHlwZSgpIGNvbnN0CiAgICAgewpAQCAtODYsMTEgKzg5LDExIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRp
YyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBtX3BheWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDcxOGI5YmQzMTVlY2M2NzA3ODljNjVjYmFhYTAz
NDkyOTc1ZTcyZDMuLjY5MjhhNjNlOTcxYzdjMzVlODg0NGVlZjczYmZhNDRhOGQ4YzAzMDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9u
Owogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0
dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQppbmRl
eCA4M2U2YWY3YjAzODkyODM4YzNiZmVhMWMwYzExYWE3ZmNmOGE3N2E5Li42OGJjYzg4NDZhOGIx
ZjBmN2NiY2YxNDAzMTk2NmVkOTI0MzIyYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpAQCAt
NDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFn
ZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxv
Y1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOworICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5z
dGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV0pOwogfQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3VuZHNG
b3JDdXJyZW50UGFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAppbmRleCAwOWMxYzQ1YzQ1
OTNhZWE0MzE4MzBkMjE1YjdlNzQ4NTJjMTllMzdmLi5mYTAwMDgxMTYwNjY5N2RjNWM1MTEyMzMz
YzkwYzhjOTJiNGI2NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTM1LDkgKzM1
LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBCaWdFbmRpYW5VU2hvcnQ7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRU9UUHJlZml4OwogY2xhc3MgRm9udE1lbW9yeVJl
c291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIAogc3RydWN0IEVPVEhlYWRlciB7CiAgICAgRU9USGVhZGVyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2Fs
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5kZXggMmNmYTg1NGMwMjI2NjhhY2MwMDczN2MxZWJiMzVm
ZjM0OGQ1OGUyYi4uMGZhOGYzMDZhZDk1MmQwNmEwOTI5N2QwYjFkMjg3Yjg5ODgzMmEzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVWZXJ0aWNhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApAQCAtMzgxLDcgKzM4MSw3IEBAIHN0
cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxl
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYg
YWR2YW5jZVdpZHRocykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0
Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZm
ZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAg
Y29uc3QgT3BlblR5cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxl
PE9wZW5UeXBlOjpIaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC00MjQsNyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9w
ZW5UeXBlVmVydGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwK
IHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFi
bGUgaXMgcmVxdWlyZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxl
KE9wZW5UeXBlOjpWaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVu
VHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRh
YmxlKiB2aGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4o
YnVmZmVyKTsKICAgICBpZiAoIXZoZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYs
NyBAQCB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxh
dGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6Omxv
YWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0
Zm9ybURhdGEpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1E
YXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0g
cGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0
IE9wZW5UeXBlOjpHU1VCVGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVu
VHlwZTo6R1NVQlRhYmxlPihidWZmZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3ViLT5n
ZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVy
LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKaW5kZXggYTYyNzE5YjE3MTlhNzRmOTc2OTIy
MTlkZjVmN2FhZWRjNDkwNjQ2Ni4uMGRiNGFmYWRiM2Y3NDJiODNhNGUxNmNmMzcxODcwYTJiMDQw
NGVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Rp
cmVjdFdyaXRlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKQEAgLTQzLDcgKzQzLDcgQEAgZW51bSBEV1JJ
VEVfRk9OVF9TVFJFVENIOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250UGxhdGZv
cm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIAogbmFtZXNwYWNlIERpcmVjdFdyaXRlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
aW5kZXggNWYxMGY3MzkyZDA0YzM0NGQxMmNlZTQyNjZlZGIxZWU5OTcxYzRlZi4uMDhmYzlmMTll
YWVhOTQ4M2VhNThlYzFhZWVkZDQ1NzI1NmNlMjdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oCkBAIC0zNiwxMiArMzYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dGb250KiBDR0ZvbnRSZWY7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9u
dENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRNZW1v
cnlSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3Bl
Y2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9u
dFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVh
dHVyZVNldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKaW5kZXggNjI5ZTBlNjFhMTA0
YzU2N2ExZDRlZGNiN2U1Nzk3ZGNmNjdjNmU4ZS4uNzczNTczOWI5MzM0ZjQ0ZDk5YTNmMTJmZmM1
YmY3YjQxZjdjYzZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCkBAIC0yNzIsNyArMjcy
LDcgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJEaXJlY3QyRDo6Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWIKICAgICByZXR1cm4gYml0bWFwOwogfQogCi12
b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAg
IGlmICghYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3Qy
RC5oCmluZGV4IDRmNDcyNTg2YjQyNGJkYTFjZjZmYTAxNDNjYmEyM2QwMzAwMTZlNDUuLmMyMzY1
ZmQ3NDRjNjExOGMxOTk5ZTA1YjgwMmVkNWI0OGYzNjQ4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3Qy
RC5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEltYWdlRGVjb2RlckRpcmVjdDJEIGZpbmFsIDog
cHVibGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6CiAgICAgSW1hZ2VEZWNvZGVyRGlyZWN0MkQo
KTsKIAotICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyRGlyZWN0MkQ+IGNyZWF0ZShTaGFyZWRC
dWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgc3Rh
dGljIFJlZjxJbWFnZURlY29kZXJEaXJlY3QyRD4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJEaXJlY3QyRCgpKTsKICAgICB9
CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoU2hh
cmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0
YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwog
ICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxs
RGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBm
aW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZVdpbi5jcHAKaW5kZXggMGQ4ODIwZTlmM2Q2ZmQ3NzM1ZDU3MGIzNjQxNDg4ZjUzYmQ3ZWNl
OS4uMmQ5NzI3MGE3MzQ4MzQ4OTNlNzhjODFmZjBlYzViYjVkZmVjM2Y4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwCkBAIC0zMCw3
ICszMCw3IEBACiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIC8vIFRoaXMgZnVuY3Rpb24g
bG9hZHMgcmVzb3VyY2VzIGZyb20gV2ViS2l0Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsKK1JlZlB0cjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIq
KTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAK
aW5kZXggZDk1NmQ5ZTc2MjVkNWJiNWE3MGYwNjkzZTc3OThlZTkwODQ5ZjE2NS4uMzNjOTVlYzMz
MzNhOTIwYzY0YTAxODE3NTFlYjRhNTA1ZWYxYTdhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNv
ZGVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFj
ZSB7CiAKLXN0YXRpYyB1bnNpZ25lZCBjb3B5RnJvbVNoYXJlZEJ1ZmZlcihjaGFyKiBidWZmZXIs
IHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QgU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIp
CitzdGF0aWMgdW5zaWduZWQgY29weUZyb21TaGFyZWRCdWZmZXIoY2hhciogYnVmZmVyLCB1bnNp
Z25lZCBidWZmZXJMZW5ndGgsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1
ZmZlcikKIHsKICAgICB1bnNpZ25lZCBieXRlc0V4dHJhY3RlZCA9IDA7CiAgICAgZm9yIChjb25z
dCBhdXRvJiBlbGVtZW50IDogc2hhcmVkQnVmZmVyKSB7CkBAIC0xMzUsNyArMTM1LDcgQEAgYm9v
bCBtYXRjaGVzQ1VSU2lnbmF0dXJlKGNoYXIqIGNvbnRlbnRzKQogCiB9CiAKLVJlZlB0cjxTY2Fs
YWJsZUltYWdlRGVjb2Rlcj4gU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZm
ZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxTY2FsYWJsZUltYWdlRGVj
b2Rlcj4gU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGxlbmd0aE9mTG9uZ2VzdFNpZ25hdHVyZSA9IDE0OyAvLyBUbyB3aXQ6ICJSSUZGPz8/P1dF
QlBWUCIKICAgICBjaGFyIGNvbnRlbnRzW2xlbmd0aE9mTG9uZ2VzdFNpZ25hdHVyZV07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUlt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2Nh
bGFibGVJbWFnZURlY29kZXIuaAppbmRleCAzMmQ0ZTZmOGI4ZmExNGExM2JmYjYyMmQ4NzU3MDg3
OThiOTlkYWEyLi45YzQwNTU3ODI0MWQwYzUxMjcwMjk1MTVjMjIxMjY1OGY4YzRmNjhhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUlt
YWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAg
Ly8gUmV0dXJucyBudWxscHRyIGlmIHdlIGNhbid0IHNuaWZmIGEgc3VwcG9ydGVkIHR5cGUgZnJv
bSB0aGUgcHJvdmlkZWQgZGF0YSAocG9zc2libHkKICAgICAvLyBiZWNhdXNlIHRoZXJlIGlzbid0
IGVub3VnaCBkYXRhIHlldCkuCi0gICAgc3RhdGljIFJlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rl
cj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBj
cmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQogCkBAIC03MCwxNiArNzAsMTUgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0
YXR1czo6Q29tcGxldGU7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlCisgICAgdm9pZCBzZXREYXRhKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlk
ZQogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBpZiAo
bV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGRhdGEuZGF0YSgpKSB7Ci0gICAgICAgICAgICAv
LyBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb21iaW5lcyBhbGwgc2VnbWVudHMgaW50byBvbmUgaW4g
Y2FzZSB0aGVyZSdzIG1vcmUgdGhhbiBvbmUuCi0gICAgICAgICAgICBtX2RhdGEgPSBkYXRhLmJl
Z2luKCktPnNlZ21lbnQuY29weVJlZigpOwotICAgICAgICB9CisgICAgICAgIGF1dG8gY29udGln
dW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGlmIChjb250aWd1b3Vz
RGF0YS0+ZGF0YSgpKQorICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGEtPmJlZ2lu
KCktPnNlZ21lbnQuY29weVJlZigpOwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9
PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgbV9kZWNv
ZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRydWU7CiAgICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFs
bERhdGFSZWNlaXZlZCk7CkBAIC0xOTUsNyArMTk0LDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0
aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50PiBtX2RhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50PiBtX2RhdGE7CiAgICAgVmVjdG9yPFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUsIDE+IG1f
ZnJhbWVCdWZmZXJDYWNoZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CiAgICAgbXV0YWJs
ZSBMb2NrIG1fbG9jazsKICAgICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVh
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJ
RkltYWdlUmVhZGVyLmNwcAppbmRleCA3YzYwM2ZkODM1OGMyMTRhYzkxODRmMzE4OTk3MmZlODQx
YjYxZTgwLi4yNmY4ODY0OTZlNWE1YTE0ZTI4YWZiMWFmYTliZmMzMDE3N2Y1MWNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFn
ZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
YXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIEFWSUZJbWFnZVJlYWRl
cjo6QVZJRkltYWdlUmVhZGVyKFJlZlB0cjxBVklGSW1hZ2VEZWNvZGVyPiYmIGRlY29kZXIpCiAK
IEFWSUZJbWFnZVJlYWRlcjo6fkFWSUZJbWFnZVJlYWRlcigpID0gZGVmYXVsdDsKIAotYm9vbCBB
VklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBh
cnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01lbW9y
eShtX2F2aWZEZWNvZGVyLmdldCgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpICE9IEFWSUZf
UkVTVUxUX09LKQogICAgICAgICByZXR1cm4gYWxsRGF0YVJlY2VpdmVkID8gbV9kZWNvZGVyLT5z
ZXRGYWlsZWQoKSA6IGZhbHNlOwpAQCAtNTgsNyArNTgsNyBAQCBib29sIEFWSUZJbWFnZVJlYWRl
cjo6cGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9v
bCBhbAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFWSUZJbWFnZVJlYWRlcjo6ZGVjb2Rl
RnJhbWUoc2l6ZV90IGZyYW1lSW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmIGJ1ZmZl
ciwgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkKK3ZvaWQgQVZJRkltYWdl
UmVhZGVyOjpkZWNvZGVGcmFtZShzaXplX3QgZnJhbWVJbmRleCwgU2NhbGFibGVJbWFnZURlY29k
ZXJGcmFtZSYgYnVmZmVyLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dCYgZGF0YSkKIHsKICAgICBpZiAobV9kZWNvZGVyLT5mYWlsZWQoKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZp
Zi9BVklGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgKaW5kZXggY2JjYTBiOGMxMjRiZmYwZmZjMzMwMWJh
MzViY2UwMWVkMjcyMmRmOC4uNDk2ZjY5ZjgxMmJkNzViMGVkYTYzNTdiYWE4NjBjZmNjYjViYTRi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZp
Zi9BVklGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCkBAIC0zOSw4ICszOSw4IEBAIHB1YmxpYzoK
ICAgICBBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJbWFnZURlY29kZXI+JiYpOwogICAgIH5B
VklGSW1hZ2VSZWFkZXIoKTsKIAotICAgIGJvb2wgcGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudCYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIGRlY29k
ZUZyYW1lKHNpemVfdCBpbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYsIGNvbnN0IFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKTsKKyAgICBib29sIHBhcnNlSGVhZGVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
OworICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2Rl
ckZyYW1lJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKTsKICAg
ICBzaXplX3QgaW1hZ2VDb3VudCgpIGNvbnN0OwogICAgIGRvdWJsZSByZXBldGl0aW9uQ291bnQo
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3Mjc2OWE2OTI2ZWMy
NDE5YmY2NjM4MjUyOGQzZDc3MjBhNTRhZGFlLi5mNzQ1NWMxNDZjN2U4YWViMDRjYzhjNTZmMzMw
ZTJhMDFmM2JhNzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDYsNyArNDYs
NyBAQCBCTVBJbWFnZURlY29kZXI6OkJNUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogewogfQogCi12b2lkIEJNUEltYWdlRGVjb2Rl
cjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9p
ZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9i
bXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzdjN2NhODFmZWE2YjhhNzc0YmIzMDhl
NTM4ZGNkMDQ4Yzk5NWVlYS4uNjRkZWQ2YWJiZTJjMGEyOWIxMWY5ZmI1ZWNkNmI0ODcyNGQ1ODk3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1w
L0JNUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lv
bigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJibXAiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoU2hh
cmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0
YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwog
ICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3Qg
aW5kZXgpIGZpbmFsOwogICAgIC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMgfG1fcmVh
ZGVyfC4gQmUgY2FyZWZ1bCB0byBhdm9pZAogICAgIC8vIGFjY2Vzc2luZyBkZWxldGVkIG1lbW9y
eSwgZXNwZWNpYWxseSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9tIGluc2lkZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VS
ZWFkZXIuaAppbmRleCA0ODQ0ZjM4MGRjMTdlYzcwNDU4OGZiMTJmNTNlYWJjNmQyMGU2MGY0Li5i
ZDQzMGU4YThiZWEyYzgxNmIyYzUyMmJmNWJhNzg4NDZjMzhlMGZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VS
ZWFkZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBCTVBJbWFnZVJlYWRlciB7CiBwdWJsaWM6
CiAgICAgLy8gUmVhZCBhIHZhbHVlIGZyb20gfGRhdGFbb2Zmc2V0XXwsIGNvbnZlcnRpbmcgZnJv
bSBsaXR0bGUgdG8gbmF0aXZlCiAgICAgLy8gZW5kaWFubmVzcy4KLSAgICBzdGF0aWMgaW5saW5l
IHVpbnQxNl90IHJlYWRVaW50MTYoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0
YSwgaW50IG9mZnNldCkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJlYWRVaW50MTYoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQp
CiAgICAgewogICAgICAgICB1aW50MTZfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNweSgmcmVzdWx0
LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgMik7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90
IHJlYWRVaW50MzIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgaW50IG9m
ZnNldCkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQpCiAgICAgewog
ICAgICAgICB1aW50MzJfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNweSgmcmVzdWx0LCAmZGF0YS5k
YXRhKClbb2Zmc2V0XSwgNCk7CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBCTVBJbWFn
ZVJlYWRlcihTY2FsYWJsZUltYWdlRGVjb2RlciogcGFyZW50LCBzaXplX3QgZGVjb2RlZEFuZEhl
YWRlck9mZnNldCwgc2l6ZV90IGltZ0RhdGFPZmZzZXQsIGJvb2wgdXNlc0FuZE1hc2spOwogCiAg
ICAgdm9pZCBzZXRCdWZmZXIoU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogYnVmZmVyKSB7IG1f
YnVmZmVyID0gYnVmZmVyOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KKyAgICB2b2lkIHNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0K
IAogICAgIC8vIERvZXMgdGhlIGFjdHVhbCBkZWNvZGluZy4gSWYgfG9ubHlTaXplfCBpcyB0cnVl
LCBkZWNvZGluZyBvbmx5CiAgICAgLy8gcHJvZ3Jlc3NlcyBhcyBmYXIgYXMgbmVjZXNzYXJ5IHRv
IGdldCB0aGUgaW1hZ2Ugc2l6ZS4gUmV0dXJucwpAQCAtMjcyLDcgKzI3Miw3IEBAIHByaXZhdGU6
CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogbV9idWZmZXI7CiAKICAgICAvLyBUaGUg
ZmlsZSB0byBkZWNvZGUuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1f
ZGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1f
ZGF0YTsKIAogICAgIC8vIEFuIGluZGV4IGludG8gfG1fZGF0YXwgcmVwcmVzZW50aW5nIGhvdyBt
dWNoIHdlJ3ZlIGFscmVhZHkgZGVjb2RlZC4KICAgICBzaXplX3QgbV9kZWNvZGVkT2Zmc2V0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8v
SW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAppbmRleCA2MDEyMDM3
NGY5YzQzMTY4YTY1MjFiNjljNTRhZmJlMmEwMGY1NWY3Li40YTIxMjU1YThjMGZiNjc4ZTRhYWRk
NzY2M2ViN2Y5MThlN2ZlOTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9y
ZUNhaXJvLmNwcApAQCAtMzcsNyArMzcsOSBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlQmFja2lu
Z1N0b3JlOjppbWFnZSgpIGNvbnN0CiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQg
Y2hhcio+KGNvbnN0X2Nhc3Q8dWludDMyX3QqPihtX3BpeGVsc1B0cikpLAogICAgICAgICBDQUlS
T19GT1JNQVRfQVJHQjMyLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpLCBzaXplKCku
d2lkdGgoKSAqIHNpemVvZih1aW50MzJfdCkpKTsKICAgICBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRh
X2tleV90IHNfc3VyZmFjZURhdGFLZXk7Ci0gICAgY2Fpcm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRh
KHN1cmZhY2UuZ2V0KCksICZzX3N1cmZhY2VEYXRhS2V5LCBtX3BpeGVscy5nZXQoKSwgW10odm9p
ZCogZGF0YSkgeyBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4oZGF0YSkt
PmRlcmVmKCk7IH0pOworICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0YShzdXJmYWNlLmdl
dCgpLCAmc19zdXJmYWNlRGF0YUtleSwgbV9waXhlbHMuZ2V0KCksIFtdKHZvaWQqIGRhdGEpIHsK
KyAgICAgICAgc3RhdGljX2Nhc3Q8RGF0YVNlZ21lbnQqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICB9
KTsKIAogICAgIHJldHVybiBzdXJmYWNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApp
bmRleCBlNmFiZTBkOTU0NGI2YzE4NWM2NDVkZWNlMDlmMjNmOTU2NjYwN2NiLi5iOWVjMDFiOGFl
OGU4ZDI5YmM3ODI1MjZlMDc2NTI1NTFlMzU5YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVy
LmNwcApAQCAtMzgsNyArMzgsNyBAQCBHSUZJbWFnZURlY29kZXI6OkdJRkltYWdlRGVjb2RlcihB
bHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBHSUZJbWFn
ZURlY29kZXI6On5HSUZJbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgR0lGSW1hZ2VE
ZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
Cit2b2lkIEdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAppbmRleCAzNWRmMzNmNmRmYzQ4M2ZkODQ3
MTM2NmFlNTNiYjBiOTYxY2FlZDJlLi5jNzQ3MTk5OTliOTg2YzFjZWY4NDc4NzU5ZDIzNzE4Yzkw
NDJkM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0
ZW5zaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gImdpZiJfczsgfQotICAgIHZvaWQgc2V0RGF0
YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2
b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CiAg
ICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCBmaW5hbDsKICAgICBSZXBldGl0aW9uQ291bnQg
cmVwZXRpdGlvbkNvdW50KCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCmluZGV4
IDQyMTQ2ZTAzMjkzMjM2OTk3ODllYjVlNDJhZjRjNzNkMzRhYjljYzYuLjEwODJmZGYwZGZmMjM5
MWU1NjUzMGE0MWY4N2JhNDM5ODIzMjc1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCkBAIC0y
MzcsNyArMjM3LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0
YTsgfQorICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQogICAgIC8vIEZJWE1FOiBoYWx0
QXRGcmFtZSBzaG91bGQgYmUgc2l6ZV90LgogICAgIGJvb2wgZGVjb2RlKFdlYkNvcmU6OkdJRklt
YWdlRGVjb2Rlcjo6R0lGUXVlcnksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKTsKIApAQCAtMzE2LDYg
KzMxNiw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxHSUZGcmFtZUNv
bnRleHQ+ID4gbV9mcmFtZXM7CiAgICAgc2l6ZV90IG1fY3VycmVudERlY29kaW5nRnJhbWU7CiAK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4g
bV9kYXRhOwogICAgIGJvb2wgbV9wYXJzZUNvbXBsZXRlZDsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURl
Y29kZXIuY3BwCmluZGV4IGM3MTdjNDVkMzA1N2MwNTUzNmVlNjA1MGY5Mzk3MDQ2ZDEwZGYyYTcu
LmMwNzEzNDViOGJmMzY5YjgwMjcxZmJkZjBhMGNlMDE3NGYwNTAzYjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09J
bWFnZURlY29kZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIElDT0ltYWdlRGVjb2Rlcjo6SUNPSW1h
Z2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
CiAKIElDT0ltYWdlRGVjb2Rlcjo6fklDT0ltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9p
ZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKK3ZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQo
KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCmluZGV4IGZiN2E5MDNi
MmEwNzUzOTQ5MTdhYmJiZjExYjFjZWQ4M2ZmNDMyYTAuLjEwZWU5YjRkMmU4YzlkODg3ZTFkMmI4
YmUxMzliYjc0MjcxZDU3YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKQEAgLTQ2LDcgKzQ2
LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBTdHJpbmcg
ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiaWNvIl9zOyB9Ci0gICAg
dm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsK
KyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKSBmaW5hbDsKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCBmaW5hbDsKICAgICBJbnRT
aXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdCBmaW5h
bDsKICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNv
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBF
R0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggZmQzNDViYjc4NmZmMDhkOTQ2NTkzMGFhNGRmNDhkZjE3
YWJmMzA1Yy4uNWNmYWM5ZjIzNTdlMmUxMmM2ODY0MDBiMjY3ODhhZTdmOGJlMTM1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0yMjIsNyArMjIyLDcgQEAgc3RhdGljIGJv
b2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKIAogc3RhdGljIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3Qq
IGluZm8pCiB7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJf
cHRyIG1hcmtlciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+
bmV4dCkgewogICAgICAgICBpZiAoIWlzSUNDTWFya2VyKG1hcmtlcikpCiAgICAgICAgICAgICBj
b250aW51ZTsKQEAgLTIzNiwxMyArMjM2LDEzIEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFya2VyU2l6ZSA9IG1hcmtl
ci0+ZGF0YV9sZW5ndGggLSBpY2NIZWFkZXJTaXplOwotICAgICAgICBidWZmZXItPmFwcGVuZChy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJT
aXplKSwgbWFya2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNp
emUpOwogICAgIH0KIAotICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKKyAgICBpZiAoYnVmZmVy
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVy
OworICAgIHJldHVybiBidWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygpOwogfQogI2VuZGlm
CiAKQEAgLTMyMCw3ICszMjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYnl0ZXNUb1NraXAgPSBz
dGQ6Om1heChudW1CeXRlcyAtIGJ5dGVzVG9Ta2lwLCBzdGF0aWNfY2FzdDxsb25nPigwKSk7CiAg
ICAgfQogCi0gICAgYm9vbCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYg
ZGF0YSwgYm9vbCBvbmx5U2l6ZSkKKyAgICBib29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkKICAgICB7CiAgICAg
ICAgIG1fZGVjb2RpbmdTaXplT25seSA9IG9ubHlTaXplOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVj
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAw
MC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKaW5kZXggYmVjZjY0NTAyNzdlZWI3NGIwOWRlNTJl
ZTE4MmZmNmUxMWVkMjc2Mi4uMjA0NzNmMGVlZWJiNTZjNzEzMTRmNjU1NmJkYTA5MDMzNDkwNzQ0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
ZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcApAQCAt
MzgwLDcgKzM4MCw3IEBAIHZvaWQgSlBFRzIwMDBJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9u
bHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICB9CiAKICAgICBzdHJ1Y3QgUmVhZGVy
IHsKLSAgICAgICAgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YTsKKyAgICAgICAgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGE7CiAgICAgICAgIHNpemVfdCBv
ZmZzZXQ7CiAgICAgfSByZWFkZXIgPSB7ICptX2RhdGEsIDAgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VE
ZWNvZGVyLmNwcAppbmRleCBjMTJjNDU5YTVhM2U1YjM1MWM1YmNjNjJiZjAwYjhhMjgxYmQ1YmEz
Li40Y2JkMzIzZDlhNzUwMjZlZjg2NThmMzgxNmRkNzM4ZDM3Y2E4ZWQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5H
SW1hZ2VEZWNvZGVyLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9y
ZWFkT2Zmc2V0ID0gMDsKICAgICB9CiAKLSAgICBib29sIGRlY29kZShjb25zdCBTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIHNpemVPbmx5LCB1bnNpZ25lZCBoYWx0QXRGcmFt
ZSkKKyAgICBib29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCYgZGF0YSwgYm9vbCBzaXplT25seSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpCiAgICAgewog
ICAgICAgICBtX2RlY29kaW5nU2l6ZU9ubHkgPSBzaXplT25seTsKICAgICAgICAgUE5HSW1hZ2VE
ZWNvZGVyKiBkZWNvZGVyID0gc3RhdGljX2Nhc3Q8UE5HSW1hZ2VEZWNvZGVyKj4ocG5nX2dldF9w
cm9ncmVzc2l2ZV9wdHIobV9wbmcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCmlu
ZGV4IDAyZjFiMDlkYmM3NjUxNjAxZjkyMmRkZTI5ZjgwNWE2NTg3MWUyZDIuLmIxYmVjNTVlNzhj
NDM0ODAxYzI1NGFjZTBkZjU5OTMxYTM2Yjc0YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNv
ZGVyLmNwcApAQCAtNDcsNyArNDcsNyBAQCBXRUJQSW1hZ2VEZWNvZGVyOjpXRUJQSW1hZ2VEZWNv
ZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZQogCiBXRUJQ
SW1hZ2VEZWNvZGVyOjp+V0VCUEltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBXRUJQ
SW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCit2b2lkIFdFQlBJbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQog
ICAgICAgICByZXR1cm47CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBXRUJQSW1hZ2VEZWNvZGVy
OjpkZWNvZGUoc2l6ZV90IGZyYW1lSW5kZXgsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIC8v
IFRoaXMgY2FuIGJlIGV4ZWN1dGVkIGJvdGggaW4gdGhlIG1haW4gdGhyZWFkICh3aGVuIG5vdCB1
c2luZyBhc3luYyBkZWNvZGluZykgb3IgaW4gdGhlIGRlY29kaW5nIHRocmVhZC4KICAgICAvLyBX
aGVuIGV4ZWN1dGVkIGluIHRoZSBkZWNvZGluZyB0aHJlYWQsIGEgY2FsbCB0byBzZXREYXRhKCkg
ZnJvbSB0aGUgbWFpbiB0aHJlYWQgbWF5IGNoYW5nZSB0aGUgZGF0YQogICAgIC8vIHRoZSBXZWJQ
RGVtdXhlciBpcyB1c2luZywgbGVhdmluZyBpdCBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUsIHNv
IHdlIG5lZWQgdG8gcHJvdGVjdCB0aGUgZGF0YS4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudD4gcHJvdGVjdGVkRGF0YShtX2RhdGEpOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gcHJvdGVjdGVkRGF0YShtX2RhdGEpOwogICAgIFdl
YlBEYXRhIGlucHV0RGF0YSA9IHsgcHJvdGVjdGVkRGF0YS0+ZGF0YSgpLCBwcm90ZWN0ZWREYXRh
LT5zaXplKCkgfTsKICAgICBXZWJQRGVtdXhTdGF0ZSBkZW11eGVyU3RhdGU7CiAgICAgV2ViUERl
bXV4ZXIqIGRlbXV4ZXIgPSBXZWJQRGVtdXhQYXJ0aWFsKCZpbnB1dERhdGEsICZkZW11eGVyU3Rh
dGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d2VicC9XRUJQSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAppbmRleCBhZjM2NWU5Y2Y5YzdjZTk1Mzhi
NjRiYTc4OWJmMDE3ZDQ4ZjZlZGUxLi5kZDI4YmM4OGRmNWMwZmEzYzE1NzM3ODY5YjI2MDk3M2Fh
YTBkMjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaApAQCAtNDcsNyArNDcsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+V0VCUEltYWdlRGVjb2RlcigpOwogCiAgICAgU3RyaW5nIGZp
bGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIndlYnAiX3M7IH0KLSAg
ICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCkgZmluYWw7CisgICAgdm9pZCBzZXRE
YXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsKICAgICBTY2FsYWJsZUlt
YWdlRGVjb2RlckZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBvdmVycmlk
ZTsKICAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2ZyYW1l
Q291bnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJv
YXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0K
aW5kZXggOTA5ZThlNzY4YWRiNjhiYWIyODQ0NWQyODI3MzYwYTNmM2ZhMjJjMy4uYjIzNzdmZTM0
MTFkMmFjNDAxNTEzYmYwOWFlOGNjYWU3ODZiZDhlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTIzNiwxNCArMjM2LDE0IEBAIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAKICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1Qp
CiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRU
eXBlRmxhdFJURkRdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0
cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVGbGF0UlRG
RCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChpdGVtSW5kZXgsIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgp
KTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAg
ICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsK
ICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZFJURkQoKmJ1ZmZlcikgPyBSZWFk
ZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKICAgICB9
CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtV
VFR5cGVSVEZdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0
ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVSVEYsIG1fcGFz
dGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUlu
ZGV4LCBrVVRUeXBlUlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgICAgICBp
ZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIFJl
YWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAgICByZXR1
cm4gYnVmZmVyICYmIHJlYWRlci5yZWFkUlRGKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0OjpSZWFk
VHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CkBAIC0yNTEsNyArMjUxLDcgQEAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICNlbmRpZiAvLyAhUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCiAKICAgICBpZiAoW3N1cHBvcnRlZEltYWdlVHlwZXMoKSBjb250YWluc09i
amVjdDp0eXBlXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJh
dGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCB0eXBlLCBtX3Bhc3RlYm9h
cmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwg
dHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdl
Q291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6
OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAm
JiByZWFkZXIucmVhZEltYWdlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCB0eXBlLCBpdGVtSW5m
by5wcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBS
ZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggMTY3Y2VmMDJkNzhkNzk0
ZGVhYThlNWRkYWY0ZGQ2NmMzZDJjY2E0NS4uMTZiM2Q1ZDQ0MTVkMjU4NTE1ZjY2MGE4NmFjNmNl
ZmJkY2RiNjRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRm
b3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxh
dGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC0zMzgsNyArMzM4LDcgQEAgaW50NjRfdCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKICAgICByZXR1cm4g
MDsKIH0KIAotaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hh
cmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJikKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpz
ZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKQog
ewogICAgIHJldHVybiAwOwogfQpAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0
ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIAogICAg
IEFTU0VSVChjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVudERhdGEu
c2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlw
ZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdp
c3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
Zm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07
CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIGF1
dG8gd2ViQXJjaGl2ZURhdGEgPSBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0
ZU5TRGF0YSgpOwpAQCAtNDc5LDcgKzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogICAgIH0KIAogICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdG
b3JtYXQpIHsKLSAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmlu
ZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBz
ZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5k
YXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpu
dWxscHRyXSkKKyAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmlu
ZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBz
ZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5k
YXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNU
b1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9
CiAKQEAgLTUwMSw3ICs1MDEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
IAogICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgY3VzdG9tRGF0YS5z
ZXRPcmlnaW4oY29udGVudC5jb250ZW50T3JpZ2luKTsKLSAgICBbcmVwcmVzZW50YXRpb25zVG9S
ZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkp
XTsKKyAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3Jl
YXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKIAogICAgIHJl
Z2lzdGVySXRlbVRvUGFzdGVib2FyZChyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyLmdldCgpLCBt
X3Bhc3RlYm9hcmQuZ2V0KCkpOwogfQpAQCAtNTE0LDE0ICs1MTQsMTQgQEAgdm9pZCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdl
KQogICAgIGF1dG8mIGRhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YTsKICAgICBBU1NF
UlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwg
c2l6ZSA9IHR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOnR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTpkYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBl
OnR5cGVzW2ldXTsKIAogICAgIGlmIChwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhICYmICFw
YXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0
byB1dGlPck1JTUVUeXBlID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGU7CiAgICAg
ICAgIGlmICghaXNEZWNsYXJlZFVUSSh1dGlPck1JTUVUeXBlKSkKICAgICAgICAgICAgIHV0aU9y
TUlNRVR5cGUgPSBVVElGcm9tTUlNRVR5cGUodXRpT3JNSU1FVHlwZSk7CiAKLSAgICAgICAgYXV0
byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEo
KTsKKyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRh
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcg
Kil1dGlPck1JTUVUeXBlXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0
UHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXplXTsKICAg
ICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVkTmFtZTpwYXN0ZWJv
YXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CkBAIC02MzUsNyArNjM1LDcgQEAgc3RhdGljIFJldGFp
blB0cjxXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdD4gY3JlYXRlSXRlbVByb3Zp
ZGVyUmVnaXN0cmEKICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQ
cmVzZW50YXRpb25TdHlsZTpXZWJQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGluZV07CiAK
ICAgICBpZiAoZGF0YS5oYXNTYW1lT3JpZ2luQ3VzdG9tRGF0YSgpIHx8ICFkYXRhLm9yaWdpbigp
LmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0g
ZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKKyAgICAgICAgaWYg
KGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCkt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKSB7CiAgICAgICAgICAgICAvLyBXZSBz
dGFzaCB0aGUgbGlzdCBvZiBzdXBwbGllZCBwYXN0ZWJvYXJkIHR5cGVzIGluIHRlYW1EYXRhIGhl
cmUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBkcmFnIGFuZCBkcm9wLgogICAgICAgICAgICAgLy8g
U2luY2UgdGhlIGNvbnRlbnRzIG9mIGl0ZW0gcHJvdmlkZXJzIGNhbm5vdCBiZSBsb2FkZWQgcHJp
b3IgdG8gZHJvcCwgYnV0IHRoZSBwYXN0ZWJvYXJkIHR5cGVzIGFyZQogICAgICAgICAgICAgLy8g
Y29udGFpbmVkIHdpdGhpbiB0aGUgY3VzdG9tIGRhdGEgYmxvYiBhbmQgd2UgbmVlZCB0byB2ZW5k
IHRoZW0gdG8gdGhlIHBhZ2Ugd2hlbiBmaXJpbmcgYGRyYWdvdmVyYApAQCAtNjcyLDggKzY3Miw4
IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVk
QnVmZmVyPj4odmFsdWUpOwotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRE
YXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2Nv
YVR5cGVdOworICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4odmFsdWUpOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBh
ZGREYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9y
VHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHJlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QcmV2aWV3Q29udmVydGVySU9TLm1tCmluZGV4IDU0NDY1M2M0NDAzZDI2MDQwYTU1ZDIzZTkz
NjkxYmZlZGNjOTJiNDIuLjdhNGEyYjE2NWIyZmE3ZDIwZDViNmU0YzJkNjVmZTYzZWYwYjAyNjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVy
SU9TLm1tCkBAIC04Miw3ICs4Miw3IEBAIEBlbmQKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUHJl
dmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRlcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyJiBwcm92aWRlcikKLSAgICA6IG1fcHJl
dmlld0RhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICA6IG1fcHJldmlld0RhdGEg
eyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9vcmlnaW5h
bFJlc3BvbnNlIHsgcmVzcG9uc2UgfQogICAgICwgbV9wcm92aWRlciB7IHByb3ZpZGVyIH0KICAg
ICAsIG1fcGxhdGZvcm1EZWxlZ2F0ZSB7IGFkb3B0TlMoW1tXZWJQcmV2aWV3Q29udmVydGVyRGVs
ZWdhdGUgYWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6KnRoaXNdKSB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDY3N2Y4Y2FkYWI1OTEyM2UxYjYy
ZDFiYWMyZDE5MDhiZjY3NmEyZjkuLjBkMjU0OThiODZiZWYxODVkMzc2OWQ1YTViYzBiYzJmNzMx
YzcwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJk
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
CkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBDb2xvciYg
Y29sb3IpCiAKIHN0YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBlcihjb25zdCBQYXN0ZWJv
YXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKLSAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5T
KFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3Rl
Ym9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0
byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmls
ZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZp
bGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHBhc3RlYm9hcmRJbWFnZS51cmwu
dXJsLCBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSldOwogICAgIHJldHVybiB3cmFw
cGVyLmF1dG9yZWxlYXNlKCk7CiB9CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xp
Y3kgYWxsb3cKICAgICAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURkRQ
YXN0ZWJvYXJkVHlwZSgpKSkpIHsKICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJB
dFByZWZlcnJlZEl0ZW1JbmRleChsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4
LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewotICAgICAgICAgICAg
aWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0
dHJpYnV0ZXM6bmlsXSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcg
PSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVz
Om5pbF0pKSB7CiAgICAgICAgICAgICAgICAgdGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcg
c3RyaW5nXTsKICAgICAgICAgICAgICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRXcml0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZFdyaXRlci5tbQppbmRleCAzNTNkMDA2YjkwY2JjZTYwOWU2ZGZkMzdjMjgwODEzMWYyMTRiOGRh
Li44OGQwNDAyNTg0MzcwMmU0YWE0ZjVhOWE1NTZiODgxYzZlNDBjMmZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpAQCAtMTI4LDExICsx
MjgsMTEgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBb
cGFzdGVib2FyZEl0ZW0gc2V0U3RyaW5nOndlYkNvbnRlbnQtPmRhdGFJblN0cmluZ0Zvcm1hdCBm
b3JUeXBlOk5TUGFzdGVib2FyZFR5cGVTdHJpbmddOwogCiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCB3ZWJDb250ZW50LT5jbGllbnRUeXBlcy5zaXplKCk7ICsraSkKLSAgICAgICAg
ICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRl
bnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0g
c2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50
LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOwogCiAgICAgICAgIFBhc3RlYm9hcmRDdXN0b21EYXRh
IGN1c3RvbURhdGE7CiAgICAgICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKHdlYkNvbnRlbnQtPmNv
bnRlbnRPcmlnaW4pOwotICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRh
LmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJ
VW5sZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgp
KSkuZ2V0KCldOworICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURh
dGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOwogICAgIH0KIAogICAgIHJldHVybiBwYXN0ZWJvYXJk
SXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBh
c3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0
ZWJvYXJkTWFjLm1tCmluZGV4IGQ5YjdkMjQ4MDM4YzJkYjhhYWIwOTJjYjkxZmZhNTZmMmNiNGNl
NzMuLmMzYjRkMmQ5NjIxNzQ3MWM3MzVlMjRmZTdhNWY5ZDkyMzdkZjQ3MDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpA
QCAtMjYzLDggKzI2Myw4IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25z
dCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICAgICAgaWYgKHBsYXRmb3JtVHlwZS5p
c0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAg
ICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+
KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIp
KSB7CisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnBs
YXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAg
ICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsK
QEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29u
c3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7CiAKICAgICBpZiAoc2hvdWxk
V3JpdGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRh
ID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlm
IChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbbV9wYXN0ZWJv
YXJkIHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0KIApAQCAtMzQxLDEyICszNDEsMTIg
QEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMpCiAgICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQgZGVjbGFyZVR5
cGVzOmNyZWF0ZU5TQXJyYXkocGFzdGVib2FyZFR5cGVzKS5nZXQoKSBvd25lcjpuaWxdOwogfQog
Ci1pbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZm
ZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK2ludDY0X3QgUGxhdGZv
cm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAoIWNhbldyaXRl
UGFzdGVib2FyZFR5cGUocGFzdGVib2FyZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07Cisg
ICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBl
OnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7CkBAIC01MDQsOCArNTA0LDggQEAgc3RhdGlj
IFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQ
YXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAgaWYgKCFwbGF0Zm9ybVR5cGUpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJl
ZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZv
cm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3Jl
YXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7CisgICAgICAgICAgICBpZiAo
YXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAg
ICAgICAgICAgICAgW2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0
Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3Ry
aW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpn
ZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKaW5kZXgg
NjgxM2Q1ZGE3ZGNiMGZjMjU5ZjFiZDFlZDBhNTRjMWExYTlmZDljZi4uNzk2NTU0ZjRjOTc2NDUx
NDAxZTFhMTIzNzQ2ODcwNDBiMjRiMWNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaApAQCAt
NDMsNyArNDMsNyBAQCBjbGFzcyBNZWRpYVNhbXBsZTsKIGNsYXNzIE1lZGlhU3RyZWFtUHJpdmF0
ZTsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOwogY2xhc3MgUGxhdGZvcm1BdWRpb0Rh
dGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
CiBzdHJ1Y3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOwogCkBAIC01OSw3ICs1OSw3IEBA
IHB1YmxpYzoKICAgICB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBdWRpb1ZpZGVvU2Vs
ZWN0ZWRUcmFja3Mgc2VsZWN0VHJhY2tzKE1lZGlhU3RyZWFtUHJpdmF0ZSYpOwogCi0gICAgdXNp
bmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+OworICAgIHVzaW5n
IEZldGNoRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT47CiAg
ICAgdmlydHVhbCB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmKSA9IDA7CiAgICAg
dmlydHVhbCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgPSAwOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXJQcml2YXRlTW9jay5jcHAKaW5kZXggYzI1ZGY5MTU3NGE2NWJjNDFiZGI3MDY3OGRj
NDc3MjQ4MzZkZDE0NS4uNDk4ZDRlZTEzNDBjNGI5NDAwMWI2MGMzNDQ3OWI3ZjcyZDVjOGU2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJpdmF0ZU1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6Z2VuZXJhdGVNb2NrQ291bnRlclN0cmluZygp
CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpmZXRjaERhdGEoRmV0Y2hEYXRhQ2Fs
bGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB7
CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2J1ZmZlckxvY2sgfTsKICAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHZhbHVlIHsgbV9idWZmZXIuY2hhcmFjdGVyczgoKSwgbV9idWZmZXIubGVuZ3Ro
KCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLmgKaW5kZXggMjExZjc1ZWU3M2FmNjkxOWU3ZjRjOTk1OGUwY2QzNDgyNTMyZDA5Zi4uOWMy
Yzc5N2I4MTk1MTJkOGZkNTc5MDE1ZGMzYjZlNDA1ZTNiYzYwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTcwLDcgKzcwLDcg
QEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIoTWVkaWFTYW1wbGUm
KTsKICAgICB2b2lkIGFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9E
YXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIGNvbnN0IFdURjo6TWVkaWFUaW1l
Jiwgc2l6ZV90KTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKLSAgICB2b2lkIGZldGNoRGF0
YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+
JiYpOworICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYpOwogCiAgICAgdm9pZCBwYXVzZSgp
OwogICAgIHZvaWQgcmVzdW1lKCk7CkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgZmluaXNoZWRGbHVzaGluZ1NhbXBsZXMoKTsKICAgICB2b2lkIGNvbXBsZXRlRmV0Y2hE
YXRhKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKIAogICAgIGJvb2wgbV9oYXNBdWRp
byB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1ZpZGVvIHsgZmFsc2UgfTsKQEAgLTExNyw4ICsx
MTcsOCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsK
IAogICAgIExvY2sgbV9kYXRhTG9jazsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGEg
V1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlv
bkhhbmRsZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGEgV1RGX0dVQVJERURfQllf
TE9DSyhtX2RhdGFMb2NrKTsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5k
bGVyOwogCiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVkaW9Gb3Jt
YXREZXNjcmlwdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yPiBtX2F1ZGlvQ29tcHJlc3NvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNj
ZGY1ZTgzODRmMzZiN2I1M2Y1Li44NDg0MTAwZWFjNWUxMTVlOWIwY2YwMTIwYmFiZjc4ZmIxYTEy
NzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLm1tCkBAIC0xMzcsMTAgKzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Ojp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigp
OwogICAgIH0KIAotICAgIC8vIEF0IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBi
ZSB3cml0aW5nIGFueSBkYXRhLCBzbyBpdCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVs
bGlmeSBtX2RhdGEgd2l0aG91dCBsb2NraW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQog
ICAgICAgICBbbV93cml0ZXJEZWxlZ2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsK
IAogICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNv
bXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7
CkBAIC00OTUsNyArNDkzLDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3Rv
cFJlY29yZGluZygpCiAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cik7CiAKQEAgLTUzNywxOCArNTM1LDEzIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmNvbXBsZXRlRmV0Y2hEYXRhKCkKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgTG9j
a2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBpZiAoIW1fZGF0YSkgewotICAgICAgICBt
X2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2RhdGEuYXBw
ZW5kKGRhdGEsIHNpemUpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSgpCiB7CiAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBhdXRvIGRhdGEgPSBXVEZNb3ZlKG1fZGF0YSk7Ci0g
ICAgcmV0dXJuIGRhdGE7CisgICAgcmV0dXJuIG1fZGF0YS50YWtlKCk7CiB9CiAKIHZvaWQgTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnBhdXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaAppbmRleCBhOWIyOWQ1OWU5YWEzYjQ2NTU0
MTViZDhiZWYwOTg0YzU0NGI3M2YwLi5jZGVlNjAzNTIzY2Q2Njk0NWY0MjhmNjk0Nzg5NjBmNmZk
NzRjNzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFV
UkxEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJM
RGVjb2Rlci5oCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNw
YWNlIERhdGFVUkxEZWNvZGVyIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IGZhZmRmZTg3YzgzN2U2MTU3ZDJmMTNlOWE3Y2Ew
MDk2OWQ1MGIxYzcuLjRiZWJjYjUwOThkMTVjMjk2NmVkOGM3ZWUxMzZhZTNhMmFlNGEyMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgK
QEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlOwogY2xhc3MgVGltZXI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5jcHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZlYmU3MDQ4ODRlMmU3MzY2Zi4u
YmE4ZmQ0ZmY0ZjFlNDFjOWFkNGZhNzRhNDJiZTRlMmJkMTFhYTg0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5j
cHAKQEAgLTM2LDkgKzM2LDkgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OlJlc291cmNlSGFuZGxl
Q2xpZW50KCkgPSBkZWZhdWx0OwogCiBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFu
ZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRS
ZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50
OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRp
ZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5oCmluZGV4IGI2MzM3ZDU2Y2U4Y2Q5YmVmZjlkZmJlMTEzNjYyYmM3
NzU2YjY1MzcuLmM0ZjA1NDg1ZjI4NzBiMTE2ZGE3Yzc2MGQzYzBmY2U5NmVjMmI0YTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGVudW0gQ2FjaGVTdG9yYWdlUG9saWN5IHsKICAgICBTdG9yYWdlQWxsb3dlZCwKQEAgLTY2
LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShSZXNvdXJj
ZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25n
IGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGlu
dCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIHsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBSZXNvdXJjZUVycm9yJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXgg
MWZmMDY1MjE2ZmE2ODA4ODE5MzcxNGJjZjJiY2RhZjY5NmYwMjQwNi4uMDA4ZTIyNmZmOTE5MDA0
YjQ1MTQ4YTI0NzI2MTE2MTUwOTg5NjI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5t
bQpAQCAtNDEsOCArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgUmFuZ2VSZXNw
b25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwogICAgIERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYgcmVzb3VyY2UpCi0gICAgICAgIDogYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCkpCi0gICAgICAgICwgb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKKyAgICAgICAgOiBv
cmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQogICAgICAgICAsIHJlc291cmNlKCZyZXNvdXJjZSkg
eyB9CiAKICAgICBzdHJ1Y3QgVGFza0RhdGEgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VGFza0Rh
dGE+IHsKQEAgLTU1LDkgKzU0LDkgQEAgc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGEgewogICAgICAgICBzaXplX3QgbmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleCB7IDAgfTsKICAg
ICAgICAgZW51bSBjbGFzcyBSZXNwb25zZVN0YXRlIDogdWludDhfdCB7IE5vdFN5bnRoZXNpemVk
WWV0LCBXYWl0aW5nRm9yU2Vzc2lvbiwgU2Vzc2lvbkNhbGxlZENvbXBsZXRpb25IYW5kbGVyIH0g
cmVzcG9uc2VTdGF0ZSB7IFJlc3BvbnNlU3RhdGU6Ok5vdFN5bnRoZXNpemVkWWV0IH07CiAgICAg
fTsKLSAgICAKKwogICAgIEhhc2hNYXA8UmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRh
VGFzaz4sIHN0ZDo6dW5pcXVlX3B0cjxUYXNrRGF0YT4+IHRhc2tEYXRhOwotICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBS
ZXNvdXJjZVJlc3BvbnNlIG9yaWdpbmFsUmVzcG9uc2U7CiAgICAgZW51bSBjbGFzcyBTdWNjZXNz
ZnVsbHlGaW5pc2hlZExvYWRpbmcgOiBib29sIHsgTm8sIFllcyB9IHN1Y2Nlc3NmdWxseUZpbmlz
aGVkTG9hZGluZyB7IFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6Tm8gfTsKICAgICBSZWZQ
dHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNvdXJjZTsKQEAgLTEwNiwyMiArMTA1LDIyIEBA
IHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6cmVtb3ZlVGFzayhXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2sgKnRhc2spCiB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNw
b25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFU
YXNrICp0YXNrLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2UmIHJhbmdlLCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBEYXRhJiBkYXRhKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlcjsK
LSAgICBhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBX
ZSBvdWdodCB0byBiZSBhYmxlIHRvIGp1c3QgbWFrZSBhIHJhbmdlIHdpdGggYSAqIGFmdGVyIHRo
ZSAvIGJ1dCBBVkZvdW5kYXRpb24gZG9lc24ndCBhY2NlcHQgc3VjaCByYW5nZXMuCiAgICAgLy8g
SW5zdGVhZCwgd2UganVzdCB3YWl0IHVudGlsIHRoZSBsb2FkIGhhcyBjb21wbGV0ZWQsIGF0IHdo
aWNoIHRpbWUgd2Ugd2lsbCBrbm93IHRoZSBjb250ZW50IGxlbmd0aCBmcm9tIHRoZSBidWZmZXIg
bGVuZ3RoLgogICAgIGlmICghZXhwZWN0ZWRDb250ZW50TGVuZ3RoKQogICAgICAgICByZXR1cm47
CiAKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSBkYXRhLmJ1ZmZlci5zaXplKCk7CiAgICAgaWYgKGJ1
ZmZlclNpemUgPCByYW5nZS5iZWdpbikKICAgICAgICAgcmV0dXJuOwotICAgIAorCisgICAgYXV0
byBidWZmZXIgPSBkYXRhLmJ1ZmZlci5nZXQoKTsKICAgICBhdXRvKiB0YXNrRGF0YSA9IGRhdGEu
dGFza0RhdGEuZ2V0KHRhc2spOwogICAgIGlmICghdGFza0RhdGEpCiAgICAgICAgIHJldHVybjsK
LSAgICAKLSAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2sp
LCBidWZmZXIsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBX
ZWFrUHRyIHsgKnRoaXMgfV0geworCisgICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9
IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCBidWZmZXJTaXplLCB0YXNrRGF0YSA9IFdlYWtQdHIg
eyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKICAgICAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKFt0YXNrIHN0YXRlXSAhPSBOU1VS
TFNlc3Npb25UYXNrU3RhdGVSdW5uaW5nKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMwLDcg
KzEyOSw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNr
SWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVCiAgICAgICAgIGF1dG8mIHJhbmdlID0g
dGFza0RhdGEtPnJhbmdlOwogICAgICAgICBhdXRvJiBieXRlSW5kZXggPSB0YXNrRGF0YS0+bmV4
dEJ5dGVUb0dpdmVCdWZmZXJJbmRleDsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAg
ICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyLT5zaXplKCkpCisgICAgICAgICAgICBpZiAoYnl0
ZUluZGV4ID49IGJ1ZmZlclNpemUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBhdXRvIGJ1ZmZlclZpZXcgPSBidWZmZXItPmdldFNvbWVEYXRhKGJ5dGVJbmRleCk7CiAgICAg
ICAgICAgICBpZiAoIWJ1ZmZlclZpZXcuc2l6ZSgpIHx8IGJ5dGVJbmRleCA+IHJhbmdlLmVuZCkK
QEAgLTE3NSw3ICsxNzQsNyBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gUmFuZ2VSZXNwb25zZUdl
bmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEoY29ucwogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKGRhdGEuc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2Fk
aW5nID09IERhdGE6OlN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6WWVzKQotICAgICAgICBy
ZXR1cm4gZGF0YS5idWZmZXItPnNpemUoKTsKKyAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLnNp
emUoKTsKIAogICAgIC8vIEZJWE1FOiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXhwZWN0ZWRDb250
ZW50TGVuZ3RoKCkgc2hvdWxkIHJldHVybiBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5zdGVhZCBv
ZiB1cyBkb2luZyB0aGlzIGNoZWNrIGhlcmUuCiAgICAgYXV0byBleHBlY3RlZENvbnRlbnRMZW5n
dGggPSBkYXRhLm9yaWdpbmFsUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CkBAIC0y
NDQsNyArMjQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKSBmaW5hbAorICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgZmluYWwK
ICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmICghbV9n
ZW5lcmF0b3IpCkBAIC0yNTIsNyArMjUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byogZGF0
YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcpOwogICAgICAgICBpZiAoIWRh
dGEpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRhdGEtPmJ1ZmZlci0+YXBwZW5kKFdU
Rk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZm
ZXIpKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NXaXRoRmluaXNo
ZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAppbmRleCA0MDQ4
ODVhZTYzNzZmY2U2ODA0MGQyYTA1YzAwYmVjNDdmZTE2YWE4Li5jZTRjMjU0NWNkZTBmMmY0NmFj
MzM4Zjk2YzQ5MDg4ZWI0NWQwOTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaApAQCAtNTAsNyAr
NTAsNyBAQCBjbGFzcyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFz
cyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIGNsYXNzIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFz
a0NsaWVudDsKIGVudW0gY2xhc3MgU2hvdWxkQ29udGludWVQb2xpY3lDaGVjayA6IGJvb2w7CkBA
IC0xNTgsNyArMTU4LDcgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJDb3JlTlNVUkxT
ZXNzaW9uIDogTlNPYmplY3QgewogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzZW50Qnl0ZXM6KHVuc2lnbmVkIGxvbmcg
bG9uZylieXRlc1NlbnQgdG90YWxCeXRlc1RvQmVTZW50Oih1bnNpZ25lZCBsb25nIGxvbmcpdG90
YWxCeXRlc1RvQmVTZW50OwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlc3BvbnNlOihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJilj
b21wbGV0aW9uSGFuZGxlcjsKIC0gKEJPT0wpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2U7Ci0tICh2b2lkKXJlc291cmNlOihu
dWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVk
RGF0YTooUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJilkYXRhOworLSAodm9pZClyZXNvdXJj
ZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNl
aXZlZERhdGE6KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKWRhdGE7CiAt
ICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2Uq
KXJlc291cmNlIHJlY2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKXJlc3BvbnNlIHJlcXVlc3Q6KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKXJlcXVlc3Qg
Y29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClyZXNvdXJjZToobnVs
bGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBhY2Nlc3NDb250
cm9sQ2hlY2tGYWlsZWRXaXRoRXJyb3I6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKWVy
cm9yOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJl
c291cmNlKilyZXNvdXJjZSBsb2FkRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJillcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlMDQwMTBhOTgx
MWI0YzlhZTE0OTQ5OTg3MDFjYTE1NDg5ZjU3MTZjLi44Yzg5ZDkzODY1NzkzM2ExZGEyOTAzMTk5
MTU4NGM0ZGIyZmFhOWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC02MDgsNyArNjA4
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBi
b29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJy
aWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxT
aGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAg
ICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKQEAgLTY1Miw3ICs2NTIsNyBAQCBib29sIFdlYkNvcmVO
U1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1l
ZGlhUmVzb3VyYwogICAgIHJldHVybiBbbV90YXNrIHJlc291cmNlOiZyZXNvdXJjZSBzaG91bGRD
YWNoZVJlc3BvbnNlOnJlc3BvbnNlXTsKIH0KIAotdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0
YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRh
dGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJj
ZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIExvY2tlciBs
b2NrZXIgeyBtX3Rhc2tMb2NrIH07CiAgICAgaWYgKCFtX3Rhc2spCkBAIC05MTUsMTEgKzkxNSwx
MSBAQCAtIChCT09MKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNo
b3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFJlcwogICAgIHJldHVybiByZXNwb25zZS5odHRwSGVh
ZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRSYW5nZSkuaXNFbXB0eSgpOwogfQogCi0t
ICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVk
RGF0YTooUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJilkYXRhCistICh2b2lkKXJlc291cmNl
OihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpZGF0YQogewogICAgIEFTU0VSVF9VTlVTRUQo
cmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFtzZWxm
LnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBz
ZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gZGF0
YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRP
ZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZDxOU1VSTFNlc3Npb25E
YXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9IChpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+
KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbi5kZWxlZ2F0ZTsKICAgICAgICAgaWYgKFtkYXRhRGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uOmRhdGFUYXNrOmRp
ZFJlY2VpdmVEYXRhOildKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAppbmRleCBjMzZlMWY4ODc2NDMwNDYwY2U3NTBhM2I4
YzY1OGM3MzRlY2IxNTA4Li4zNDk0NDU5MjU0YWM5M2ZjMTljYjEyMTUwYTYxYmMyYmNlZDAyZDZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERv
d25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bERvd25sb2FkLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJs
RGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVzcG9uc2UmJiBy
CiB9CiAKIAotdm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1
ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxEb3dubG9hZDo6Y3Vy
bERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCmluZGV4
IGEzYWEwY2Y1ZmNkMjk1NWJiN2IxNmIxMWExYTgxY2E3NGFlNjFjOGQuLmNkZTQ0NDU3NzVmNzQ0
MjMzMDUzMGI2NWIxMzU3YmE2YmZkOWJiODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJp
dmF0ZToKICAgICBSZWY8Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYpOwogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQg
bG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgY3Vy
bERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJs
UmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2
b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSBv
dmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVz
b3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0
SGFuZGxlLmNwcAppbmRleCBiYmRhM2ZiZGE3NTgzZDk5MTkzMWRmZTE2OWY3YjNhOTEzM2U2ZGEy
Li4wOTBkMDM5YmE0NWRlMTAyOGVkZjc2ODRjNmQ3ZDJmMjk2ZTNhMzRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBh
cnRIYW5kbGUuY3BwCkBAIC0xMTksMTIgKzExOSwxMiBAQCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpD
dXJsTXVsdGlwYXJ0SGFuZGxlKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmIGNsaWVudCwgY29u
cwogCiB9CiAKLXZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAo
bV9zdGF0ZSA9PSBTdGF0ZTo6RW5kKQogICAgICAgICByZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlz
IGNsb3NlZCBkb3duIHNvIGlnbm9yZSBldmVyeXRoaW5nLgogCi0gICAgbV9idWZmZXIuYXBwZW5k
KGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZm
ZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAogICAgIHdoaWxl
IChwcm9jZXNzQ29udGVudCgpKSB7IH0KIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxN
dWx0aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKCkKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6
RW5kKSB7CiAgICAgICAgIC8vIEl0IHNlZW1zIHdlIGFyZSBzdGlsbCBub3QgYXQgdGhlIGVuZCBv
ZiB0aGUgcHJvY2Vzc2luZy4KICAgICAgICAgLy8gUHVzaCBvdXQgdGhlIHJlbWFpbmluZyBkYXRh
LgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpKTsKKyAgICAgICAg
bV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUobV9idWZmZXIpKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxNdWx0aXBhcnRIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKaW5kZXggNWMwOGJjYzVlYjNlNGJiY2MwMjliNDc2Nzg2
OGY0M2UyZjk1YzM0MS4uOWExYTFiYmQxOTM4YTE0ZjY5ZmNjZWUzZjBmODliOTdhNGEyMTg3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0
aXBhcnRIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybE11bHRpcGFydEhhbmRsZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudDsKIGNsYXNzIEN1cmxSZXNwb25z
ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgQ3VybE11bHRpcGFydEhhbmRsZShDdXJs
TXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiwgY29uc3QgU3RyaW5nJik7CiAgICAgfkN1cmxNdWx0aXBh
cnRIYW5kbGUoKSB7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZSgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlw
YXJ0SGFuZGxlQ2xpZW50LmgKaW5kZXggZmQxM2ZkMzgxMzE0M2NiMjY1OWI4ZmQxZGIyNDQ0NzY1
ZTk4YTU4MC4uYzgxMzg4NmE4ZDVjNWZhNmMxMmQxNDEzMzE5MTAxYWYyNTAyYTJhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRI
YW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCkBAIC0yOCwxMiArMjgsMTIgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybFJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRs
ZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVIZWFkZXJGcm9t
TXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIH5DdXJsTXVsdGlwYXJ0SGFu
ZGxlQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBkMzViMGU4MzkxOTUxZDM4NjM0ZTk5MDkzYjY4
NjU2MjRkOTk3OTUxLi5kODJkZDNjMTBhYzY0NzEzNTk5MWZkN2FlNjY5N2U5ZDhlMzEzZTg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdC5jcHAKQEAgLTM5Niw3ICszOTYsNyBAQCBzaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2Vp
dmVIZWFkZXIoU3RyaW5nJiYgaGVhZGVyKQogCiAvLyBjYWxsZWQgd2l0aCBkYXRhIGFmdGVyIGFs
bCBoZWFkZXJzIGhhdmUgYmVlbiBwcm9jZXNzZWQgdmlhIGhlYWRlckNhbGxiYWNrCiAKLXNpemVf
dCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CitzaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoaXNDb21wbGV0ZWRPckNhbmNlbGxlZCgpKQog
ICAgICAgICByZXR1cm4gMDsKQEAgLTQ0NCw3ICs0NDQsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0Ojpk
aWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYgaGVhZGVy
cykKICAgICBpbnZva2VEaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIEFjdGlvbjo6Tm9uZSk7
CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRh
RnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAg
ICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzc3
LDcgKzc3Nyw3IEBAIGNvbnN0IFN0cmluZyYgQ3VybFJlcXVlc3Q6OmdldERvd25sb2FkZWRGaWxl
UGF0aCgpCiAgICAgcmV0dXJuIG1fZG93bmxvYWRGaWxlUGF0aDsKIH0KIAotdm9pZCBDdXJsUmVx
dWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5h
YmxlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgewogICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kb3dubG9hZE11dGV4IH07CkBAIC03OTAsNyArNzkwLDcg
QEAgdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1fZG93bmxvYWRGaWxl
SGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAg
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9k
b3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZl
ci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9zZURvd25sb2FkRmlsZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5o
CmluZGV4IDZiZDhhNmJmYmEzNzUyY2VkZGRiYzUwMDllYWU4M2M0ZjBlZWQ2NDEuLjNjN2NkZDg4
M2ViNjJiZmU5MmNmMDQ0NWVkMjliZDI2ZWNlM2U5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCkBAIC00Miw3ICs0Miw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEN1cmxSZXF1ZXN0Q2xpZW50OwogY2xhc3MgTmV0
d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTeW5jaHJvbm91c0xvYWRl
ck1lc3NhZ2VRdWV1ZTsKIAogY2xhc3MgQ3VybFJlcXVlc3QgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8Q3VybFJlcXVlc3Q+LCBwdWJsaWMgQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQs
IHB1YmxpYyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50IHsKQEAgLTEyMiw5ICsxMjIsOSBAQCBw
cml2YXRlOgogICAgIENVUkwqIHNldHVwVHJhbnNmZXIoKSBvdmVycmlkZTsKICAgICBzaXplX3Qg
d2lsbFNlbmREYXRhKGNoYXIqLCBzaXplX3QsIHNpemVfdCk7CiAgICAgc2l6ZV90IGRpZFJlY2Vp
dmVIZWFkZXIoU3RyaW5nJiYpOwotICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVk
QnVmZmVyPiYmKTsKKyAgICBzaXplX3QgZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUhlYWRlckZyb21NdWx0aXBhcnQoY29u
c3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhRnJv
bU11bHRpcGFydChSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVRyYW5zZmVyKENVUkxjb2RlKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZENhbmNlbFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5hbGl6
ZVRyYW5zZmVyKCk7CkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICBOZXR3b3JrTG9h
ZE1ldHJpY3MgbmV0d29ya0xvYWRNZXRyaWNzKCk7CiAKICAgICAvLyBEb3dubG9hZAotICAgIHZv
aWQgd3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7
CisgICAgdm9pZCB3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBjbG9zZURvd25sb2FkRmlsZSgpOwogICAgIHZv
aWQgY2xlYW51cERvd25sb2FkRmlsZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCmluZGV4IDA4Yzg2Yzdk
NDY4NGJhNmY3OGQ2MTZiNjhkMDY5MDRjMzdhOTY2NzcuLjM0Nzk4MzJmNTc2ZDQxMjhhZmE1MWM4
MTQyNGNjZmQ3NDFkZjZhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIGNs
YXNzIEN1cmxSZXF1ZXN0OwogY2xhc3MgQ3VybFJlc3BvbnNlOwogY2xhc3MgTmV0d29ya0xvYWRN
ZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxSZXF1ZXN0Q2xpZW50IHsKIHB1
YmxpYzoKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGN1cmxE
aWRTZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVu
c2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0Jiwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkUmVjZWl2
ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtM
b2FkTWV0cmljcyYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9y
KEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgPSAwOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDgxOGQ1YTk1ZTNl
MTI0ZGMzYTcyZjc0M2U1Y2Q0NTNkNzE3ZTAxMGYuLjMwNWQ0ZTVjOWZjMjcwNzc1Nzg3YjBmOWE5
MTk3OWMwODg4OWE4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApA
QCAtMTQyLDE1ICsxNDIsMTYgQEAgdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3Vy
bERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3UKICAgICB9KTsKIH0K
IAotdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIo
Q3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRh
KG1faGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwotICAgIGNsaWVudCgp
LT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShidWZmZXIpLCBidWZmZXItPnNp
emUoKSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91
cygpOworICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1f
aGFuZGxlLCBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBj
bGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoY29udGlndW91c0J1
ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZTo6Y3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYg
bWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgKaW5kZXggNmQ1NTg2NDQ1
MmZkNDZlZTc4MDBlOTMxMjNiMTI4YmRjNjRjZTQ4Ny4uZGFmMGE1OWE0ZTU4NmQ3MTE0YWJiNGU1
ZWY5YzU0ZjZhOGJlZmM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgKQEAg
LTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJl
cXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcg
dG90YWxCeXRlc1RvQmVTZW50KSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9u
c2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgZmluYWw7Ci0gICAgdm9pZCBjdXJsRGlk
UmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwor
ICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJl
cXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkRmFp
bFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZv
JiYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggYmM0ZGFhZmJm
MjFhMTVjMGU2ZGQxYWNkNDYyMmFmYTU2YjdiOGQ1ZC4uMWY0YTE5MzEzMzEyYzVkZDZhNDhhZDUz
MzlkZmQyYzNiNWRlYzI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMzEs
MTIgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xv
YWRlckNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBk
ZWZhdWx0OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgeyB9CiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKaW5k
ZXggMGZiNDUwMDcyZmExMDQyMmY2YTlmZTQzMmMzODFkM2QxOTYxM2U2MC4uZDYzMjIyNTY0ZWYw
NzRjZGJjZDdlZTIxM2VhOTkxNTc0MDdlMzU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcApAQCAtMzQsNyArMzQsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJv
bVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRo
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02OCw3ICs2OCw3IEBAIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgaWYgKHRvdGFsQnl0ZXNSZWFkICE9IGJ5dGVzVG9S
ZWFkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIHJldHVybiBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4
IGM1NDQ1Mzg1YTc3YWMxMmMwOWVmMjQ4NjY0NzNkNjJjYjY3OTQ1NWEuLjQ1MzY4MWJkYWIyZTRh
MDVhMjFmYzY4YTk0MzcwMGUwNmM5OTdhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTM1Niw3ICszNTYsNyBAQCBTdHJpbmcgUGFzdGVi
b2FyZDo6cmVhZFN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIHN0cnVj
dCBQYXN0ZWJvYXJkRmlsZUNvdW50ZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAg
ICAgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmluYWwgeyArK2NvdW50OyB9Ci0g
ICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYpIGZpbmFsIHsgKytjb3VudDsgfQorICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
ZmluYWwgeyArK2NvdW50OyB9CiAKICAgICB1bnNpZ25lZCBjb3VudCB7IDAgfTsKIH07CkBAIC05
NzQsNyArOTc0LDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3Jp
cHRvcihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBtZW1PYmo7
CiB9CiAKLXN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoU2hhcmVk
QnVmZmVyKiBkYXRhKQorc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVu
dChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEhHTE9CQUwgbWVtT2JqID0g
R2xvYmFsQWxsb2MoR1BUUiwgZGF0YS0+c2l6ZSgpKTsKICAgICBpZiAoIW1lbU9iaikgCkBAIC05
ODYsMTUgKzk4NiwxNSBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250
ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAg
aWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICBD
b3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpOwogCiAgICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7CiAKICAgICByZXR1cm4g
bWVtT2JqOwogfQogCi1zdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29u
c3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSkKK3N0YXRp
YyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5n
JiBmaWxlTmFtZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAoZmls
ZU5hbWUuaXNFbXB0eSgpIHx8ICFkYXRhKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEwMzgsOCAr
MTAzOCw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBV
UkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkCiAgICAgICAgIC8vIFdyaXRlIHRoZSBk
YXRhIHRvIHRoaXMgdGVtcCBmaWxlLgogICAgICAgICBEV09SRCB3cml0dGVuOwogICAgICAgICBC
T09MIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IEZBTFNFOwotICAgICAgICBpZiAoZGF0YS0+ZGF0YSgp
KQotICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFu
ZGxlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOworICAgICAgICBp
ZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVG
aWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEt
PnNpemUoKSwgJndyaXR0ZW4sIDApOwogICAgICAgICBDbG9zZUhhbmRsZSh0ZW1wRmlsZUhhbmRs
ZSk7CiAgICAgICAgIGlmICghdGVtcFdyaXRlU3VjY2VlZGVkKQogICAgICAgICAgICAgcmV0dXJu
IDA7CkBAIC0xMDcxLDcgKzEwNzEsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2VUb0Rh
dGFPYmplY3QoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVVJMJiB1cmwpCiAgICAgaWYgKCFjYWNo
ZWRJbWFnZSB8fCAhY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJl
cigpKSB8fCAhY2FjaGVkSW1hZ2UtPmlzTG9hZGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFNoYXJlZEJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJl
cihlbGVtZW50LnJlbmRlcmVyKCkpLT5kYXRhKCk7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogaW1hZ2VCdWZmZXIgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihlbGVtZW50LnJl
bmRlcmVyKCkpLT5kYXRhKCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlciB8fCAhaW1hZ2VCdWZmZXIt
PnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuY3BwCmluZGV4IDQxMWVkYmIzNTE3Yjg0OGZhYzA2M2QxOWU4Y2Q5NWVjMDAzN2Nk
NjEuLjg0ZmEyOWNlMWYzMDBmZTI5MGIwNDE0NjQ4ZjBmNzI5MGE3Y2JlYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wg
TW9ja0NETUZhY3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
KQogICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGtleVN5c3RlbSwgIm9yZy53ZWJr
aXQubW9jayIpOwogfQogCi12b2lkIE1vY2tDRE1GYWN0b3J5OjphZGRLZXlzVG9TZXNzaW9uV2l0
aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4mJiBrZXlzKQor
dm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcm
IGlkLCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIGtleXMpCiB7CiAgICAg
YXV0byBhZGRSZXN1bHQgPSBtX3Nlc3Npb25zLmFkZChpZCwgV1RGTW92ZShrZXlzKSk7CiAgICAg
aWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIE1vY2tDRE1G
YWN0b3J5OjphZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxS
ZWY8U2hhcmVkQgogICAgICAgICB2YWx1ZS5hcHBlbmQoV1RGTW92ZShrZXkpKTsKIH0KIAotVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNz
aW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpCitWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiBNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0
IFN0cmluZyYgaWQpCiB7CiAgICAgYXV0byBpdCA9IG1fc2Vzc2lvbnMuZmluZChpZCk7CiAgICAg
aWYgKGl0ID09IG1fc2Vzc2lvbnMuZW5kKCkpCkBAIC04Myw3ICs4Myw3IEBAIFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJ
RChjb25zdCBTdHJpCiAgICAgcmV0dXJuIFdURk1vdmUoaXQtPnZhbHVlKTsKIH0KIAotY29uc3Qg
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiogTW9ja0NETUZhY3Rvcnk6OmtleXNGb3JTZXNzaW9u
V2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0Citjb25zdCBWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiogTW9ja0NETUZhY3Rvcnk6OmtleXNGb3JTZXNzaW9uV2l0aElEKGNv
bnN0IFN0cmluZyYgaWQpIGNvbnN0CiB7CiAgICAgYXV0byBpdCA9IG1fc2Vzc2lvbnMuZmluZChp
ZCk7CiAgICAgaWYgKGl0ID09IG1fc2Vzc2lvbnMuZW5kKCkpCkBAIC0yMDIsNyArMjAyLDcgQEAg
Ym9vbCBNb2NrQ0RNOjpzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QKICAgICByZXR1cm4gbV9mYWN0
b3J5ICYmIG1fZmFjdG9yeS0+c3VwcG9ydHNTZXNzaW9ucygpOwogfQogCi1ib29sIE1vY2tDRE06
OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBT
aGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAorYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAgICAgaWYgKCFzdXBwb3J0ZWRJbml0RGF0YVR5
cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MjExLDEyICsyMTEsMTMgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmUKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShj
b25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7Ci0gICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVND
SUkocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQorICAgIGF1dG8gYnVmZmVyID0g
cmVzcG9uc2UubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJ
SShidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKHJlc3BvbnNl
LmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+
IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSku
c3BsaXQoJyAnKTsKIAogICAgIGlmICghcmVzcG9uc2VBcnJheS5jb250YWlucyhTdHJpbmcoInZh
bGlkLXJlc3BvbnNlIl9zKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjY5LDkgKzI3
MCw5IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24o
Y29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0CiAgICAgY2FsbGJhY2soaW5pdGlhbGl6ZSgp
KTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxT
aGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQor
dm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKLSAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+ZGF0
YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKKyAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3Ry
aW5nVmlldyhjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjZXJ0aWZpY2F0
ZS0+c2l6ZSgpKTsKIAogICAgIGNhbGxiYWNrKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY2VydGlm
aWNhdGVTdHJpbmdWaWV3LCAidmFsaWQiKSA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiB9CkBAIC0y
OTcsNyArMjk4LDcgQEAgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6TW9ja0NETUluc3RhbmNlU2Vz
c2lvbihXZWFrUHRyPE1vY2tDRE1JbnN0YW5jZT4mJiBpbnN0YW4KIHsKIH0KIAotdm9pZCBNb2Nr
Q0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlw
ZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNl
U2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5p
dERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIE1vY2tDRE1GYWN0b3J5
KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFuY2UtPmZhY3RvcnkoKSA6IG51bGxwdHI7
CiAgICAgaWYgKCFmYWN0b3J5KSB7CkBAIC0zMjMsNyArMzI0LDcgQEAgdm9pZCBNb2NrQ0RNSW5z
dGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVMKICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShsaWNlbnNlLmRhdGEo
KSwgbGljZW5zZS5sZW5ndGgoKSksIHNlc3Npb25JRCwgZmFsc2UsIFN1Y2Nlc3NWYWx1ZTo6U3Vj
Y2VlZGVkKTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1vY2tD
RE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQs
IExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgTW9ja0NETUZhY3RvcnkqIGZh
Y3RvcnkgPSBtX2luc3RhbmNlID8gbV9pbnN0YW5jZS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAg
ICBpZiAoIWZhY3RvcnkpIHsKQEAgLTMzMSw3ICszMzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5j
ZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VU
eXBlLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9u
c2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3Bs
aXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNw
b25zZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgn
ICcpOwogCiAgICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1m
b3JtYXQiX3MpKSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCmluZGV4IGY1Y2RhNTA1Y2YyYTMzYzEwNWYwMjVj
OTdjOTM1MGE5Njg2OThlMWUuLmQ5NmMxNTZlZTRkMjc5MWI4YjA5OThkYWY5NDBlYzc1Mzc4MDdi
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTc3LDkgKzc3
LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYg
aWQpIHsgcmV0dXJuIG1fc2Vzc2lvbnMuY29udGFpbnMoaWQpOyB9CiAgICAgdm9pZCByZW1vdmVT
ZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIHsgbV9zZXNzaW9ucy5yZW1vdmUoaWQpOyB9
Ci0gICAgdm9pZCBhZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4mJik7Ci0gICAgY29uc3QgVmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+Pioga2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3Q7Ci0gICAg
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiByZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29u
c3QgU3RyaW5nJiBpZCk7CisgICAgdm9pZCBhZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0
cmluZyYgaWQsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIGNv
bnN0IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KiBrZXlzRm9yU2Vzc2lvbldp
dGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdDsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiByZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBp
ZCk7CiAKIHByaXZhdGU6CiAgICAgTW9ja0NETUZhY3RvcnkoKTsKQEAgLTk2LDcgKzk2LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fY2FuQ3JlYXRlSW5zdGFuY2VzIHsgdHJ1ZSB9OwogICAgIGJv
b2wgbV9zdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcyB7IHRydWUgfTsKICAgICBib29sIG1fc3Vw
cG9ydHNTZXNzaW9ucyB7IHRydWUgfTsKLSAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZjxT
aGFyZWRCdWZmZXI+Pj4gbV9zZXNzaW9uczsKKyAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IG1fc2Vzc2lvbnM7CiB9OwogCiBjbGFzcyBNb2Nr
Q0RNIDogcHVibGljIENETVByaXZhdGUgewpAQCAtMTIxLDggKzEyMSw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2
ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMo
KSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7
CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Np
b25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAgIFdlYWtQdHI8TW9ja0NETUZh
Y3Rvcnk+IG1fZmFjdG9yeTsKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6Ok1vY2s7IH0KICAgICB2b2lkIGluaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxv
d0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2Fs
bGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVk
QnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBm
aW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsOwogICAgIFJl
ZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKQEAgLTE1NCw4
ICsxNTQsOCBAQCBwdWJsaWM6CiAgICAgTW9ja0NETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRyPE1v
Y2tDRE1JbnN0YW5jZT4mJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwor
ICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsK
ICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNz
aW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZv
aWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNl
c3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGZjMTI3YjdiNjdiZWE3MzQ0NjNjZDJkNWIwNzU2YjU5
YmViYTU4YWUuLjA1OWYzYTM4NmI2Y2Y1ZmE3OWIzYzE4OTcwMTUzMTNmN2NkYjRlZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0xMTAsNyAr
MTEwLDcgQEAgdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6ZmluaXNoZWRBZGRpbmdEYXRhKCkKICAg
ICBtYXliZURldGVybWluZVN0YXR1cyhEZWNpc2lvblBvaW50OjpBZnRlckZpbmlzaGVkQWRkaW5n
RGF0YSk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE1vY2tDb250ZW50RmlsdGVyOjpyZXBsYWNl
bWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE1vY2tDb250ZW50
RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChkaWRCbG9ja0Rh
dGEoKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVwbGFjZW1lbnREYXRh
LmRhdGEoKSwgbV9yZXBsYWNlbWVudERhdGEuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXIuaAppbmRleCA0MTFhMzAwOTQ3YjUzOWUyNmFhNmM2NGEwMDkz
MjkyZTlmZmJlNmI5Li42MzVhYzg0YmU3OTM4NDdhYTU3MjEzZDAxZmZjMWU3NGY3NmI3NTkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCkBAIC00Miw3ICs0
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92
ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEo
KSBjb25zdCBvdmVycmlkZTsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgQ29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkgY29uc3Qgb3ZlcnJpZGU7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAppbmRleCA2ZDQ4
YmQwMmQxYzkxZjdlZWQ4NjRhMTZjZDc1NmJiMDc3ZDY1NTJhLi41Zjg1NDVlYmE1YjBlN2I4YmJh
YmE1YzY5M2MyYTQzNDE4OGIyYmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1NjcmlwdEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZm
ZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNjcmlwdEJ1ZmZl
cjo6U2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGF1dG8gdXRmOCA9
IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4
LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgp
LCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHko
KQpAQCAtNDYsMTQgKzQ2LDEzIEBAIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkK
ICAgICByZXR1cm4gU2NyaXB0QnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9OwogfQog
Ci0KIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
YnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7Ci0gICAgbV9idWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7
CisgICAgbV9idWZmZXIuZ2V0KCktPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7
CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoc2VnbWVudC5kYXRhKCks
IHNlZ21lbnQuc2l6ZSgpKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKQEAgLTYxLDE1ICs2MCwxMyBAQCBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNv
bnN0CiAKIGJvb2wgU2NyaXB0QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXItPmhhc09uZVNlZ21l
bnQoKSAmJiBtX2J1ZmZlci0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0
YSgpOworICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci5nZXQoKS0+aGFzT25lU2VnbWVu
dCgpICYmIG1fYnVmZmVyLmdldCgpLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZp
bGVEYXRhKCk7CiB9CiAKIHZvaWQgU2NyaXB0QnVmZmVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9i
dWZmZXItPmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIu
YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwgY29uc3QgU2NyaXB0QnVmZmVyJiBiKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKaW5kZXggYjM5ZDljMTMwMzMwMzExYzA0ZDdmMzc5NmI3
MWEwNDMxMzRjNjY0Ni4uZmQyYzFhZTJmNjNiNjBkNzRjMzBkMjQyYTk4OWEwYmZkOTFkZTQ5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCkBAIC0zOCw3ICszOCw3IEBAIGNs
YXNzIFNjcmlwdEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgU2NyaXB0QnVmZmVyKCkgPSBkZWZhdWx0
OwogCi0gICAgU2NyaXB0QnVmZmVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAg
IFNjcmlwdEJ1ZmZlcihSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAg
ICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogICAgIHsKICAgICB9CkBAIC00OCwx
NyArNDgsMTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNjcmlwdEJ1
ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwotICAg
IFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0K
KyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQogCi0gICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29w
eSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRC
dWZmZXI+KG1fYnVmZmVyLT5jb3B5KCkpIDogbnVsbHB0cik7IH0KKyAgICBTY3JpcHRCdWZmZXIg
aXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLmNvcHkoKSkgOiBudWxscHRyKTsg
fQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVy
OyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyIHx8ICFtX2J1
ZmZlci0+c2l6ZSgpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIuaXNFbXB0eSgpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zU2luZ2xl
RmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdDsKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcm
KTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsgLy8gQ29u
dGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
bV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KIH07CiAKIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBTY3JpcHRCdWZmZXImKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApp
bmRleCA3NzQxNmVjMDdkN2I2OGIxMjhlMjk2MWVkYzVkNjQwZDA0ZDRiZDQ1Li40MDY2ZmIzNTJl
YjViMDg3ZDVkOGQ0N2Q4MDJmZDJjMGE2YTgwZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1
ZXN0KFVSTCYmIHVybCwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3BhcXVlU291
cmNlKQogICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQogICAgICwgbV9sb2FkZWRGcm9tT3BhcXVl
U291cmNlKGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCisgICAgLCBtX2RhdGEobWFrZVVuaXF1ZVJl
ZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBAIC03NSwxMiArNzYsMjEgQEAgdm9p
ZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckds
b2JhbFNjb3BlKQogICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkod29ya2VyR2xvYmFsU2NvcGUsIFdURk1vdmUocmVxdWVzdCksICp0aGlzLCBvcHRp
b25zKTsKIH0KIAorYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmlzUGVuZGluZygpIGNvbnN0
Cit7CisgICAgcmV0dXJuICFtX2lzTG9hZGluZyAmJiAhbV9lcnJvck9jY3VycmVkICYmIG1fZGF0
YS0+aXNOdWxsKCk7Cit9CisKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0
b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBs
YXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9hZGluZykgewotICAgICAg
ICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KG1fZGF0YSk7Ci0gICAgICAgIGlmIChtX2Rh
dGEpIHsKLSAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoKm1fZGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9T
dHJpbmcoKSk7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhOwor
ICAgICAgICBpZiAobV9kYXRhLT5nZXQoKSkKKyAgICAgICAgICAgIGNvbnRpZ3VvdXNEYXRhID0g
bV9kYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnZlcnRXT0ZGVG9T
Zm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICBpZiAoY29udGlndW91c0Rh
dGEpIHsKKyAgICAgICAgICAgIG1fZGF0YS0+YXBwZW5kKCpjb250aWd1b3VzRGF0YSk7CisgICAg
ICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKCpjb250aWd1b3VzRGF0YSwgbV91cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJp
bmcoKSk7CiAgICAgICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKICAgICAg
ICAgICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogICAgICAgICB9CkBAIC0xMTcsOSAr
MTI3LDYgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9kYXRhKQotICAgICAgICBtX2RhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0YUxl
bmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9u
dExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVx
dWVzdC5oCmluZGV4IGI5ZmNmYjFkNmZlYThhZDVlNzgwYmRlZWJjNWM2ZTA0YTFlODYzYzcuLjFi
M2Q3ODcwZjEyOGJmZTUzOGVlNmM5ODU5Y2RhYWU4MWU0NWUyYTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtMzAsMTMgKzMwLDE0IEBA
CiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJs
ZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBj
bGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGE7
CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgYm9vbCBpc1BlbmRpbmcoKSBj
b25zdCBmaW5hbCB7IHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAh
bV9kYXRhOyB9CisgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlz
TG9hZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNMb2FkaW5nOyB9CiAgICAgYm9vbCBl
cnJvck9jY3VycmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9lcnJvck9jY3VycmVkOyB9CiAK
QEAgLTc2LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1f
Zm9udExvYWRSZXF1ZXN0Q2xpZW50IHsgbnVsbHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3JpcHRF
eGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9k
YXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGE7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1fZm9udEN1c3RvbVBsYXRmb3Jt
RGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmgKaW5kZXggZWIyNjZiNmMwN2U2NzNkOTE2
NmNhY2U2YjMzOTE5ZDgwZWJiZjMxYy4uMDk3NTQzZTFiM2IzMGZmMzE0N2Q5MjMyYTU4Y2U0YTll
NjJmM2U0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlckZldGNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZTsKIGNsYXNzIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFj
ZSBTZXJ2aWNlV29ya2VyRmV0Y2ggewogY2xhc3MgQ2xpZW50IDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPENsaWVudCwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4gewpAQCAtNTEs
NyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0
aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8Rm9ybURh
dGE+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9y
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2goKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5j
cHAKaW5kZXggODlhODc1ZjhhZmMwZDYyMzU1YWM2MjI5YTY0YzFjYTQzZDE4NTY1Mi4uOWE4ZmIz
NWNhNTM2MTA1YmI2ZDZmYzQ2ZWUxMjI0NTkzM2Y3MGJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApA
QCAtMTI3LDcgKzEyNyw4IEBAIFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZl
KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzCiAgICAgfQogCiAgICAg
Ly8gRklYTUU6IERvIHdlIG5lZWQgdG8gZGlzYWJsZSBmaWxlIG1hcHBpbmcgaW4gbW9yZSBjYXNl
cyB0byBhdm9pZCBoYXZpbmcgdG9vIG1hbnkgZmlsZSBkZXNjcmlwdG9ycyBvcGVuPwotICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmco
KmZpbGVTaXplKSA/IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IFNoYXJl
ZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3Vs
ZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBw
aW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgcmV0
dXJuIGJ1ZmZlcjsKIH0KIAogdm9pZCBTV1NjcmlwdFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGFiOTk2MDNlYTUzZTI0NmI2MzMyMWZiZDQxNDFjYzVl
MjljZTk2YjQuLmZjY2MyYTllZDIwZDc0N2MwOWM2MTZiNDk4ZTUzMGVmNzhhOGU1NjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTE4LDYgKzExOCw3IEBAIFhNTEh0
dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KQogICAgICwgbV9yZXNwb25zZUNhY2hlSXNWYWxpZChmYWxzZSkKICAgICAsIG1fcmVhZHlTdGF0
ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVU5TRU5UKSkKICAgICAsIG1fcmVzcG9uc2VUeXBlKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nKSkKKyAgICAsIG1f
YmluYXJ5UmVzcG9uc2VCdWlsZGVyKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4o
KSkKICAgICAsIG1fcHJvZ3Jlc3NFdmVudFRocm90dGxlKCp0aGlzKQogICAgICwgbV90aW1lb3V0
VGltZXIoKnRoaXMsICZYTUxIdHRwUmVxdWVzdDo6dGltZW91dFRpbWVyRmlyZWQpCiB7CkBAIC0y
MDcsOCArMjA4LDggQEAgUmVmPEJsb2I+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJs
b2IoKQogCiAgICAgLy8gRklYTUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3
b3JrUHJvY2VzcywgYW5kIGFyZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQu
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyKQotICAgICAgICBkYXRhID0gc3RkOjpleGNoYW5nZShtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
ciwgbnVsbHB0ciktPmV4dHJhY3REYXRhKCk7CisgICAgaWYgKCFtX2JpbmFyeVJlc3BvbnNlQnVp
bGRlci0+aXNOdWxsKCkpCisgICAgICAgIGRhdGEgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+
dGFrZSgpLT5leHRyYWN0RGF0YSgpOwogICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUg
PSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZShGaW5hbE1JTUVU
eXBlOjpZZXMpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGlj
aCBtYXkgYmUgaW5jb3JyZWN0LgogICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5cGUpOwogfQpA
QCAtMjE4LDggKzIxOSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gWE1MSHR0cFJlcXVlc3Q6OmNy
ZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIoKQogICAgIEFTU0VSVChyZXNwb25zZVR5cGUoKSA9PSBS
ZXNwb25zZVR5cGU6OkFycmF5YnVmZmVyKTsKICAgICBBU1NFUlQoZG9uZVdpdGhvdXRFcnJvcnMo
KSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID8gbV9iaW5h
cnlSZXNwb25zZUJ1aWxkZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKG51bGxwdHIsIDApOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0
cjsKKyAgICBhdXRvIHJlc3VsdCA9ICFtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+aXNOdWxsKCkg
PyBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigp
IDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2xlYXJSZXNwb25z
ZUJ1ZmZlcnMoKQogICAgIG1fcmVzcG9uc2VFbmNvZGluZyA9IFN0cmluZygpOwogICAgIG1fY3Jl
YXRlZERvY3VtZW50ID0gZmFsc2U7CiAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gbnVsbHB0cjsK
LSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXItPnJlc2V0KCk7CiAgICAgbV9yZXNwb25zZUNhY2hlSXNWYWxpZCA9IGZhbHNl
OwogfQogCkBAIC0xMDY1LDggKzEwNjUsNiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICBtX3Jlc3BvbnNl
QnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKSk7CiAgICAgZWxzZSB7
CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5hcnkgZGF0YS4KLSAgICAgICAgaWYgKCFtX2JpbmFyeVJl
c3BvbnNlQnVpbGRlcikKLSAgICAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmFw
cGVuZChkYXRhLCBsZW4pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApp
bmRleCA3Mjg5NGFmNmNjNDdkYmFlNWU3NWMzYTgwNzkwOWVmMjg0ZjZkNTk3Li4xNjJjYTk1YWVi
NzU0NDg5YmQ2Y2Q4Y2RjNTA4NjJjODQ3NzdiYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGll
bnQuaCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVl
c3RFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRo
cm90dGxlLmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgQmxv
YjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBTZWN1cml0eU9y
aWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiBj
bGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsKIGNsYXNz
IFVSTFNlYXJjaFBhcmFtczsKQEAgLTIzNyw3ICsyMzgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVm
UHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1lbnQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CiAKICAgICBTdHJpbmdCdWlsZGVyIG1f
cmVzcG9uc2VCdWlsZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKaW5kZXggNTczMDY3ZTNkZDA1MGZl
YjdjNTc5ZDAwMTAyZWU5ZjYwNDViNTMxMy4uMzFjMmQ3NmYyZWUxYjlkMjQ5YjAwMWI3ZWZmODky
ZWMyYTc0NTZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcApAQCAtNjEsNyArNjEsNyBAQCBSZW1vdGVD
RE1JbnN0YW5jZVByb3h5Ojp+UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSgpCiAgICAgbV9pbnN0YW5j
ZS0+Y2xlYXJDbGllbnQoKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojp1bnJl
cXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6
dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIHR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIGlmICghbV9j
ZG0pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCmluZGV4IDhlNzNkM2Q5YTY0Yjk4YmZj
MDA5MzZjZDQ3YzRjMjVhOTI3OWYyYzguLjAyYzVjZDM3YWU1NDgwMmY2ZDBjOGRjY2NiMGJhODBj
ZjMzODhjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlUHJveHkuaApAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAg
IFJlbW90ZUNETUluc3RhbmNlUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwgUmVmPFdl
YkNvcmU6OkNETUluc3RhbmNlPiYmLCBVbmlxdWVSZWY8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1
cmF0aW9uPiYmLCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIpOwogCiAgICAgLy8gQ0RNSW5z
dGFuY2VDbGllbnQKLSAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2
ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7Cisg
ICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmlu
ZyYsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogICAg
IC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkuY3BwCmluZGV4IGU1NzY2YzIzMzRjZmQzODkzMTBjZDRiMjE3MjNjYWJhMzc0MmZjN2Mu
LmRlODI3M2I5Y2Y1MDBhNGQ2NmFhMTQ0ZWRlMDIwMWVlZjFlZDg2MmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5LmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBBdG9tU3Ry
aW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNl
bnNlKHR5cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwo
KSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxp
emF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFi
bGUgeworICAgIG1fc2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBp
bml0RGF0YS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBbY29tcGxldGlvbiA9IFdURk1vdmUo
Y29tcGxldGlvbildIChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0
YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICBj
b21wbGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXph
dGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKICAgICB9
KTsKIH0KQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5OjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlUwogCiB2b2lk
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxs
YmFjayYmIGNvbXBsZXRpb24pCiB7Ci0gICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShz
ZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUlu
c3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIHN0ZDo6b3B0aW9u
YWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYgZXhwaXJlZFNlc3Npb25zRGF0YSwgQ0RNSW5zdGFuY2VT
ZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb24t
PnJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSwgW2NvbXBsZXRpb24gPSBXVEZNb3Zl
KGNvbXBsZXRpb24pXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlT
dGF0dXNlcywgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYgZXhw
aXJlZFNlc3Npb25zRGF0YSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2Vl
ZGVkKSBtdXRhYmxlIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNv
cHk+IGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5jZTsKICAgICAgICAgaWYgKGV4cGlyZWRTZXNz
aW9uc0RhdGEpCiAgICAgICAgICAgICBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2UgPSBJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZSgqZXhwaXJlZFNlc3Npb25zRGF0YSkpOwpAQCAtMTQ5
LDcgKzE0OSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtl
eVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1CiAgICAgZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbjo6VXBkYXRlS2V5U3RhdHVzZXMoV1RGTW92ZShrZXlTdGF0dXNlcykpLCBtX2lkZW50
aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZW5kTWVz
c2FnZShDRE1NZXNzYWdlVHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit2
b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShDRE1NZXNzYWdl
VHlwZSB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewogICAg
IGlmICghbV9jZG0pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgK
aW5kZXggOGE2MWY5ZDVmYWJjODQ4NmE3YTBlODYwZjRjNjMxMmMwYjQ0NTUxNC4uZmU3MzA5NzEz
MWUwYmIyMGE1MDAxZTE1MDE2MDJkNjUxODZiMzA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENETUluc3RhbmNlU2Vz
c2lvbkNsaWVudAogICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYp
IGZpbmFsOwotICAgIHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBzZW5k
TWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CiAgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2Vk
KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgp
IGZpbmFsIHsgcmV0dXJuIG1fZGlzcGxheUlEOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCmluZGV4IDlhYjM1NzVmNGMzYjU1OTU1
NWI5Yjg3YjIzMzcxYjFiMWE2NmRjMTcuLmY3Y2I2YTYzZWI5MzNhYmQ0ZDQ1M2EyMmFiMjk0ZjEz
MDMyMzJiMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETVByb3h5LmNwcApAQCAtNjMsMTIgKzYzLDEyIEBAIFJlbW90ZUNETVByb3h5OjpSZW1vdGVD
RE1Qcm94eShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBzdGQ6OnVu
CiAKIFJlbW90ZUNETVByb3h5Ojp+UmVtb3RlQ0RNUHJveHkoKSA9IGRlZmF1bHQ7CiAKLWJvb2wg
UmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQorYm9vbCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEodHlw
ZSwgZGF0YSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFJlbW90ZUNETVByb3h5OjpzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCitSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2UoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oCmluZGV4IDY5MjRlNzRlM2Y1MDExYmUyMTVi
ZTRiZDk2YjIzNDgyNjQ3MGY0MjMuLjNiNjZjNzc1Nzg3MDY5ZTk3NmVlMDY0Zjk2ZmYwN2MwZjcx
MmE5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Q
cm94eS5oCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogZW51bSBjbGFzcyBDRE1SZXF1aXJlbWVudCA6IHVpbnQ4X3Q7CiBlbnVt
IGNsYXNzIENETVNlc3Npb25UeXBlIDogdWludDhfdDsKIHN0cnVjdCBDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uOwpAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAKICAgICBSZW1vdGVDRE1GYWN0
b3J5UHJveHkqIGZhY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2ZhY3RvcnkuZ2V0KCk7IH0KIAot
ICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIHJlc3BvbnNlKTsKKyAg
ICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiByZXNwb25zZSk7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0
aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKTsKIAogcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94
eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5
LmgKaW5kZXggZTJjZDA1ZDdjYzc0ZjIwZWM2OWZhZGZlM2VlMDg1NzU5MmFkODc5Yi4uZGU4ZjZk
ZjU1YTZlMWZhOGJlOTY2Zjk0MWUwN2ZlMmY1YzUwMjFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKQEAgLTM2LDcg
KzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKaW5kZXggOTNi
MmZmNzQxYjFmODM2OWIyMDU4NGU0OTdlNGEwMjFiOWNjZjU3OC4uMjE0MTM3OWQ2YTU5ZWFmMjI4
NTE0YjE4N2I1NjlkMDQ3MDNjMTE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKQEAg
LTY5LDcgKzY5LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5
PiBjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UoVCBhcnIKIHsKICAgICBpZiAoIWFycmF5
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiB7IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKChjb25zdCBjaGFyKilhcnJheS0+ZGF0YSgpLCBhcnJheS0+Ynl0ZUxlbmd0aCgp
KSB9OworICAgIHJldHVybiB7IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoY29uc3Qg
Y2hhciopYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkgfTsKIH0KIAogdm9pZCBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiBpbml0RGF0YSwgR2VuZXJhdGVL
ZXlDYWxsYmFjayYmIGNvbXBsZXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKaW5kZXggZjE0
YzYyN2Y2NTkzZTFhODc4ZDBmNDU5OTJiM2M0MWIyMjJjN2YwMC4uMTU0NmJkZmRmZGNmMDkxMDg3
ODk0NGYzNDA3OTY3YTdhYjM4YmY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaApAQCAtMzcs
NyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGVnYWN5Q0RNOwogY2xhc3Mg
TGVnYWN5Q0RNU2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBJUEMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCmluZGV4IGM0NWU1
MjU1ZDY3YjUyYzdhZTEwNDQ5OTg4Y2UwMTkwYzdmZmI1MzguLjYxN2Y0NzY4OTU2NDJkZWMyMzI1
NGI1NDBlZTgxOTExYWM0YTJkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdm9p
ZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhU2VudCh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2
NF90IHRvdGFsQnl0ZXNUb0JlU2UKICAgICAgICAgbV9jbGllbnQtPmRhdGFTZW50KCp0aGlzLCBi
eXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFSZXNv
dXJjZTo6ZGF0YVJlY2VpdmVkKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUmVtb3Rl
TWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGRhdGEpCiB7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2Vp
dmVkKCp0aGlzLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCmluZGV4IGQxM2QyNWY2NWYwMjI0YTZj
NzY3ZjY5YTRkNDE5Y2QwNTNiYjc5NWQuLjViN2E3ZTJhNzQyNDQzMmQ4NmNiMjhhMWJlNzE3MThh
MTY3Mzc1ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUmVzb3VyY2UuaApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU3
LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJik7CiAgICAgdm9pZCByZWRpcmVjdFJl
Y2VpdmVkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJik+JiYpOwogICAgIHZvaWQgZGF0YVNlbnQodWludDY0X3QsIHVpbnQ2NF90KTsKLSAgICB2
b2lkIGRhdGFSZWNlaXZlZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lk
IGRhdGFSZWNlaXZlZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAg
ICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0YTIwMjdlNzRjYWE3NjcyZTUyZGEw
YWY4MzQyMDcyLi5lODNmOTE0M2QyMGE3MmUyYmU0ZmZjYmZlZDEzYjBiYjRkZDMxZTA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFS
ZWNvcmRlci5jcHAKQEAgLTEwNyw3ICsxMDcsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6
OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtbwog
dm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBtX3dyaXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0g
ICAgICAgIGF1dG8qIHBvaW50ZXIgPSBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAg
ICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+KCk7CisgICAgICAgIGF1dG8qIHBvaW50ZXIgPSBidWZm
ZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwIH0s
IHRpbWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKaW5kZXggNTJjYzVkYTEyMWEy
ZmI1OWQ4Y2YwNTkzYjY4NTA5ZmQ2NTVjMGNkYy4uNzFmZDAyMjI5YmJiMWM1NzMyNmZkZmNmZTI2
YzExZjc2MWFiY2Y3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZv
aWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkg
b3ZlcnJpZGUgeyB9OworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92
ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmco
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlci5jcHAKaW5kZXggM2YzOWViMzJmMWFhODA3Njc4NWRhNzllZTExZGFkOGYwYzMyNmI3OS4u
ZDg5MjBlOTg3NjRmZDliNjRiOWNkZGM2MGExZDg0ZDYxOWIyZDQwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIE5ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJikKK3ZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZl
RGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKIHsKICAgICBDT1JT
X0NIRUNLRVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXIuaAppbmRleCBiYmIxNDYyYTMxNjFlMmZjZTllYTU3ODQ0YjE5YjkzZTYxOWM4MWIwLi5lMTFi
ZjU2MzE5MDdhZTQ3MzM2ZWY4NWE1ZDIyZTg4MzU3NDY1MWIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBk
aWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5l
Z290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
TmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsK
LSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQs
IHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNC
bG9ja2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2suaAppbmRleCBkNjAxOGY2MTM4M2FlM2E1MWU5ZDQ3MjJjZjZhNjBlMmQ4Yjg3YTdk
Li5lMDQ5ZTViMTJkZGU1ZmU1MWI0Njk1NTI4OWE3YTdmNjk5ODJhZmNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKQEAgLTQzLDcgKzQzLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBj
bGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25I
YW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90
IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3YXNCbG9j
a2VkKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNw
cAppbmRleCBiYWMwMjJhYjQ1NDMwZjY1MWIxODlhYzAxMjA3YTA2MDYwOGMxNjcxLi43OTc1ZDQx
YmFkODkxNWZlZWRiZGFiMTU1NGU4MWUxZGIyMDMwZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgTmV0
d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
cG9uc2UsIE5lZ290aWF0CiAgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKFdU
Rk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQg
TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
dm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB0aGUgZW5jb2Rl
ZCBkYXRhIGxlbmd0aCwgbm90IHRoZSBkZWNvZGVkIGRhdGEgbGVuZ3RoLgogICAgIGF1dG8gc2l6
ZSA9IGJ1ZmZlci0+c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZC5oCmluZGV4IGMzNzczYzk4Nzg1NTNjZTUzNGQwNTRhYmZmZGRlYmIyOWVlMDg0ZDIuLmVl
NWViMDA2YWEzNzliNzhmY2JjMGJkMTc0ZTMyYmQ2MzlmOTVlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhh
bmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNv
bXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERh
dGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRv
U2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKaW5kZXggMGE1ZjY2YmQ5
NjdlYzlmZGY2NjRlNTJlNWFmMzk0ZTQ4ZWNlMWY3Yi4uMzQ4Y2ZmYjllOGUyNWVlODNiYmIzOWEw
MmNkM2NmNmQyODU0ZDM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWRDbGllbnQuaApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJp
Y3M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
ZW51bSBjbGFzcyBQb2xpY3lBY3Rpb24gOiB1aW50OF90OwogfQogCkBAIC01MSw3ICs1MSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25n
IGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmco
Y29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgeyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IGU1MGNmNGFiYmU1NjRlNGNhM2ZiNzI2Y2FhOWQ1NjljNTRiMDlkNzIuLjBl
NWViNWFkYzAxMmYxZjJlYTc2NmZjYzFhNDU1MzlmZDVkODljMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTg3LDE0ICs4NywxNCBAQCBzdHJ1Y3QgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91
c0xvYWREYXRhIHsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogfTsKIAotc3RhdGljIHZvaWQg
c2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5j
aHJvbm91c0xvYWREYXRhJiBkYXRhLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQorc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5j
aHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRh
JiBkYXRhLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBBU1NFUlQoZGF0YS5kZWxheWVkUmVwbHkp
OwogICAgIEFTU0VSVCghZGF0YS5yZXNwb25zZS5pc051bGwoKSB8fCAhZGF0YS5lcnJvci5pc051
bGwoKSk7CiAKICAgICBWZWN0b3I8dWludDhfdD4gcmVzcG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1
ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFw
cGVuZChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwog
CiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKEJveDxO
ZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0cmljcykpOwogCkBAIC0xMDUsOSArMTA1LDEx
IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRl
bGF5ZWRSZXBseSYmIHN5bmNocm9ub3VzUmVwbHkpCiAgICAgOiBtX3BhcmFtZXRlcnMgeyBXVEZN
b3ZlKHBhcmFtZXRlcnMpIH0KICAgICAsIG1fY29ubmVjdGlvbiB7IGNvbm5lY3Rpb24gfQorICAg
ICwgbV9idWZmZXJlZERhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkg
fQogICAgICwgbV9maWxlUmVmZXJlbmNlcyhjb25uZWN0aW9uLnJlc29sdmVCbG9iUmVmZXJlbmNl
cyhtX3BhcmFtZXRlcnMpKQogICAgICwgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFs
cyB7IG1fcGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRp
YWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzIH0KICAgICAsIG1fYnVmZmVyaW5n
VGltZXIgeyAqdGhpcywgJk5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJl
ZCB9CisgICAgLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRC
dWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRN
ZXRyaWNzKG1fY29ubmVjdGlvbi0+Y2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxl
ZCgpKQogICAgICwgbV9yZXNvdXJjZUxvYWRJRCB7IE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpIH0KIHsKQEAgLTMwNiwxMCArMzA4LDEwIEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IEZpcnN0TG9hCiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCiAgICAgICAg
IGlmIChpc1N5bmNocm9ub3VzKCkgfHwgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1l
ID4gMF9zKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAKICAgICAgICAgaWYg
KGNhblVzZUNhY2hlKHJlcXVlc3QpKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLT5lbXB0eSgpOwogICAgIH0KIAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJh
bWV0ZXJzID0gbV9wYXJhbWV0ZXJzOwpAQCAtNzMwLDIwICs3MzIsMjAgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVj
ZWl2ZWRSZXNwb24KICAgICAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KG1pbWVUeXBlLCAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7CiAgICAgfTsKIAotICAgIGlm
ICghbV9idWZmZXJlZERhdGEKKyAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzTnVsbCgpCiAgICAg
ICAgICYmIG1fcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgPiBzdGF0aWNfY2FzdDxs
b25nIGxvbmc+KDEgKiBNQikKICAgICAgICAgJiYgaXNGZXRjaE9yWEhSKHJlc291cmNlTG9hZElu
Zm8pCiAgICAgICAgICYmIGlzTWVkaWFNSU1FVHlwZShtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpKSB7
Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAg
ICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgICAgIG1fcGFyYW1ldGVycy5tYXhpbXVt
QnVmZmVyaW5nVGltZSA9IFdlYkxvYWRlclN0cmF0ZWd5OjptZWRpYU1heGltdW1CdWZmZXJpbmdU
aW1lOwogICAgIH0KIAogICAgIC8vIEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGRpZFJl
Y2VpdmVSZXNwb25zZUFzeW5jIGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBidWZmZXJp
bmcgd291bGQgcmVxdWlyZSBzcGVjaWFsIGhhbmRsaW5nLgogICAgIGlmICghaXNTeW5jaHJvbm91
cygpICYmIG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGEg
PSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+cmVzZXQoKTsKIAogICAgIGlmICht
X3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUg
PSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5yZXNldCgpOwogCiAg
ICAgaWYgKG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pIHsKICAgICAgICAgYm9vbCB2YWxpZGF0
aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0
IE5vdCBNb2RpZmllZApAQCAtODU4LDcgKzg2MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpzZW5kRGlkUmVjZWl2ZVJlc3BvbnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dzaW5nQ29udGV4
CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpCiB7CiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpCiAgICAgICAgIExPQURFUl9S
RUxFQVNFX0xPRygiZGlkUmVjZWl2ZUJ1ZmZlcjogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aD0lZCkiLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsK
QEAgLTg2NiwyMCArODY4LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKICAgICBBU1NF
UlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUpIHsKKyAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7
CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBk
YXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBjb25z
dCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4
OwogICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5z
aXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKICAgICAgICAgICAgIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2lu
UHJlZmV0Y2goKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBBdCBsZWFzdCBvbiBP
UyBYIFlvc2VtaXRlIHdlIGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUgcmVzb3VyY2UgaGFuZGxlLgog
ICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCi0g
ICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxs
KCkpIHsKICAgICAgICAgbV9idWZmZXJlZERhdGEtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3Ro
OwogICAgICAgICBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKQEAgLTkwOSwxMSArOTEx
LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAjZW5kaWYKIAogICAgIGlmIChpc1N5bmNo
cm9ub3VzKCkpCi0gICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNo
cm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3Mp
OworICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xv
YWREYXRhLCBtX2J1ZmZlcmVkRGF0YS0+Z2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERh
dGEtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhl
IGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUuCi0gICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1
ZmZlcmVkRGF0YSwgLTEpOworICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEt
PmdldCgpLCAtMSk7CiAgICAgICAgIH0KICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAg
ICB9CkBAIC0xMjU2LDE5ICsxMjU4LDE5IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
dGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiB7Ci0gICAgQVNTRVJUKG1fYnVmZmVyZWREYXRhKTsK
KyAgICBBU1NFUlQoIW1fYnVmZmVyZWREYXRhLT5pc051bGwoKSk7CiAgICAgQVNTRVJUKG1fbmV0
d29ya0xvYWQpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNl
aXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVu
Z3RoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVE
YXRhKHsgKm1fYnVmZmVyZWREYXRhLT5nZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRh
TGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVk
RGF0YUxlbmd0aCA9IDA7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVm
ZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWlzU3lu
Y2hyb25vdXMoKSk7CiAKQEAgLTEyODEsNyArMTI4Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xP
RygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2Ug
cmVxdWVzdCBpcyBub3QgZWxpZ2libGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBp
ZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAobV9idWZmZXJlZERhdGFGb3JD
YWNoZS0+aXNOdWxsKCkpIHsKICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFz
Q2FjaGVFbnRyeTogTm90IHN0b3JpbmcgY2FjaGUgZW50cnkgYmVjYXVzZSBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlIGlzIG51bGwiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyODksMTIg
KzEyOTEsMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVu
dHJ5KCkKICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpIHsKICAgICAgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKCkpKSB7CiAgICAgICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0
b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIHByZWZldGNoIGNhY2hlIik7Ci0gICAg
ICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3Vy
cmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCku
c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jl
c3BvbnNlKSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+dGFrZSgpKTsKICAgICAgICAgfQogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0Nh
Y2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAgbV9jYWNo
ZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgV1RG
TW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1
dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgeworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xv
YWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUt
PnRha2UoKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFi
bGUgewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRC
b2R5LnNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgKaW5kZXggZDIzNGRhYjViZWVhNWI2NDczMDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4u
OTg0NDI0YTMwNjgxYTM2MGZjNjBjOWU3YTlkZDRlNmJiNDI2ZGU3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0z
OSw2ICszOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw2ICs0Nyw4IEBAIGNs
YXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNzIEZvcm1EYXRhOwogY2xhc3MgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtMTE0LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQWxsb3dl
ZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93
ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVk
UmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIGZpbmFs
OwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGRpZEJsb2NrQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoKSBmaW5hbDsKQEAgLTE5Miw3ICsxOTUsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKICAgICB2b2lkIGJ1ZmZlcmlu
Z1RpbWVyRmlyZWQoKTsKLSAgICB2b2lkIHNlbmRCdWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
Jiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIHNlbmRCdWZmZXIoV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAK
ICAgICB2b2lkIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogICAgIHZvaWQgaW52YWxpZGF0
ZVNhbmRib3hFeHRlbnNpb25zKCk7CkBAIC0yMjUsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAgICBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKICAgICBzaXplX3QgbV9idWZm
ZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCB7IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGE7CiAgICAgdW5zaWduZWQgbV9yZWRpcmVjdENv
dW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bmNocm9ub3VzTG9hZERhdGE+IG1f
c3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsyNDMsNyBAQCBwcml2YXRlOgogCiAgICAg
V2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsKICAgICBSZWZQdHI8TmV0d29ya0NhY2hl
OjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJC
dWlsZGVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxp
ZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNh
Y2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5n
TG9hZC5jcHAKaW5kZXggMTE0ODUzZTQ1YjcyNTMzNjRjNzQ3YTcxY2IyYjVhYjhjYzM4ZWZkNS4u
MWFmMWUwOGUzYzQ0MWUyNGYzMDA2NWU5ZjIwNzc2ZTZmOWZjMzNkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFBp
bmdMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBO
ZWdvdGlhdGVkTGVnYWN5VAogICAgIGRpZEZpbmlzaCh7IH0sIHJlc3BvbnNlKTsKIH0KIAotdm9p
ZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgUGlu
Z0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQogewog
ICAgIFBJTkdfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdM
b2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKaW5kZXggMTll
YzhjZWI5MmUzYzhhMDU2ZjQ5MjczNjYwY2ZmZjkyNjQzNDFkMS4uYWIyOWEwYjFhYzg0NjZiMGVk
NjFlZjU4ZWY0YzIyMGFiYWI2ZWJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
JiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZp
bmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVz
U2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lk
IHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cmVjb25uZWN0VGFzay5jcHAKaW5kZXggNDU1NzgyZDU0YTJlYTliZWUxODY1MGUxYWZkMWNmN2Iy
Y2U5OGM0OS4uMTdkNDc5MDdhM2Y2ZWU1MmJlNjUwMWQxZGFiMGNhNjA3NTFkNmIwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKQEAgLTc5
LDcgKzc5LDcgQEAgdm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb20KICAgICBjb21wbGV0aW9uSGFuZGxl
cihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiB9CiAKLXZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpCit2b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJlY29ubmVjdFRhc2suaAppbmRleCAxYzFmZjE2NDcxMTFjNmZhODQ5NGFmNWNmMGM3YmJl
YWExYjI2NTAzLi44NTgwOGUxMjFiNjhjYThiNzNlMjUxOGQxOTNhYjM5NTgxZWFkMWU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCkBAIC01NSw3
ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxv
bmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBmaW5h
bDsKICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIGZpbmFsOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9u
c2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFs
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5kZXggNzFlMGNmNmM2ZGM3YmVhNTIyYzkwNjAw
NTU1ZjU3MjE2MWMzYzJmNC4uODE5NjYzMDIwYzY5NWNlMGM2YWJhOTk5YzY3NWFhYjQyODJjN2Zk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXIuY3BwCkBAIC0xNzQsMTAgKzE3NCwxMCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0
aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlcwog
ICAgICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJl
bG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25Q
cmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9ib2R5
Q2FsbGJhY2spCi0gICAgICAgIG1fYm9keUNhbGxiYWNrKFdURk1vdmUoYnVmZmVyKSwgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIG1fYm9keUNhbGxiYWNrKGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgU2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCmluZGV4IDFlNzhjMmNlZmExNTQ4
NDEwNDA2MGYzYjE5ZGM1MGU2Y2I4ZjFlYjQuLmVlMWJjOGI3ZDZjYmZmYzMzNDFkNjczZmI3MjQy
MjM4ZjY3MTdmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlci5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0Fs
bG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5h
bDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3Jr
TG9hZE1ldHJpY3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nob3VsZENhcHR1cmVFeHRyYU5l
dHdvcmtMb2FkTWV0cmljczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlci5jcHAKaW5kZXggOGVlMTEyYTlkZjgyODk1NGMxNjIzZmZmMjJjMmEyMGZk
OGUyZmU3ZC4uN2EyNjIyMTlkZTc4YjIzNWQxMjVhOTJiNmUyMzZkMzMyNjJmN2EyNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCkBAIC0x
NzcsNyArMTc3LDcgQEAgUmVzb3VyY2VFcnJvciBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
cjo6cHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG8KICAgICByZXR1cm4geyB9Owog
fQogCi12b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fZGVjb2RlcikgewogICAgICAgICBpZiAoIW1fcmVz
cG9uc2VFbmNvZGluZy5pc0VtcHR5KCkpCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwKICAgICB9CiAKICAgICBpZiAoYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCkp
Ci0gICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPmRhdGEo
KSwgc2l6ZSkpOworICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUpKTsKIH0KIAogdm9pZCBTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXIuaAppbmRleCAxOGY1NDY5MWYzN2MyYmFiYmM4YzFhM2JjMDk0MzcwZTliMjll
YjcxLi40NGZjMDY4NWZhMGZlZGM4NzQyMTkxNmU5MTNhNjc0YjFjMGZkYmVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaApAQCAtNjQsNyArNjQs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVj
dGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlk
RmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAK
aW5kZXggMDQ3NzY4MzZmOTk5MDkzOTEwYjM5OWQ3NTUzODU1ZDVkM2YxZmY0ZS4uZGQzMDVhZjI5
NzY2MWU0NzZjNDk2NzdkZjU3MjFlZmQxZWM5MzJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtNDU0LDcgKzQ1NCw3
IEBAIHZvaWQgQ2FjaGU6OmNvbXBsZXRlUmV0cmlldmUoUmV0cmlldmVDb21wbGV0aW9uSGFuZGxl
ciYmIGhhbmRsZXIsIHN0ZDo6dW5pcXVlX3B0CiAgICAgaGFuZGxlcihXVEZNb3ZlKGVudHJ5KSwg
aW5mbyk7CiB9CiAgICAgCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjptYWtlRW50cnko
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiByZXNwb25zZURhdGEpCitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjptYWtlRW50cnko
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhKQogewogICAgIHJldHVybiBtYWtlVW5pcXVlPEVudHJ5
PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKHJlc3BvbnNlRGF0YSks
IFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5z
dG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25JRCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CkBAIC00
NjQsNyArNDY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZVJlZGlyZWN0
RW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JgogICAgIHJldHVybiBtYWtlVW5p
cXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCByZWRpcmVjdFJlcXVl
c3QsIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3Mo
KS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25JRCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBGdW5j
dGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3N0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rp
b248dm9pZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
KHJlc3BvbnNlRGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IDE5OWYwY2ZiNzMyNTQzYzVmZWFmNGZlMjMwMWU2YTFj
MTJmODhmZTguLmVkMDRlYmNhMGIzNmYzZjljNGMwZTdiYWM3MTMzNmI5ZTk2YzM1ODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApA
QCAtNDMsNyArNDMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTG93UG93ZXJNb2Rl
Tm90aWZpZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTE2Niw3ICsxNjYsNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICB1c2luZyBSZXRyaWV2ZUNvbXBs
ZXRpb25IYW5kbGVyID0gRnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+LCBjb25z
dCBSZXRyaWV2ZUluZm8mKT47CiAgICAgdm9pZCByZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4sIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgPSBudWxscHRyKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+
JiYgPSBudWxscHRyKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlUmVkaXJlY3Qo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0
LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heEFnZUNhcCk7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEVudHJ5PiB1cGRhdGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgRW50
cnkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiB2YWxpZGF0aW5nUmVzcG9uc2Up
OwogCkBAIC0xODUsNyArMTg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmV0cmlldmVEYXRhKGNv
bnN0IERhdGFLZXkmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPik7CiAg
ICAgdm9pZCBzdG9yZURhdGEoY29uc3QgRGF0YUtleSYsICBjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3QpOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbWFrZUVudHJ5KGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+IG1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbWFrZVJlZGlyZWN0
RW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RS
ZXF1ZXN0KTsKIAogICAgIHZvaWQgZHVtcENvbnRlbnRzVG9GaWxlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3Bw
CmluZGV4IGJhMzlkOWUyYzI2YTAxYTkyNmIxMWFhNzk5ZTM2NjJmYzZhZTA1NDkuLjc2MTA3OGRl
YTA5M2MwNDU1NWJlOThiMDUxNzNlMzQxNTA2N2E4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC0z
Nyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUg
ewogCi1FbnRyeTo6RW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVz
dEhlYWRlcnMpCitFbnRyeTo6RW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+
PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKQogICAgIDogbV9rZXkoa2V5KQogICAgICwgbV90aW1l
U3RhbXAoV2FsbFRpbWU6Om5vdygpKQogICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKQEAgLTEw
MSw4ICsxMDEsMTAgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNv
cmQoKSBjb25zdAogCiAgICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5i
dWZmZXJTaXplKCkpOwogICAgIERhdGEgYm9keTsKLSAgICBpZiAobV9idWZmZXIpCi0gICAgICAg
IGJvZHkgPSB7IG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICBpZiAo
bV9idWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U2hhcmVkQnVmZmVyKj4o
bV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICB9CiAKICAg
ICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CiB9CkBA
IC0xOTQsNyArMTk2LDcgQEAgdm9pZCBFbnRyeTo6aW5pdGlhbGl6ZUJ1ZmZlckZyb21TdG9yYWdl
UmVjb3JkKCkgY29uc3QKICAgICBtX2J1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LmRhdGEoKSwgbV9zb3VyY2VTdG9yYWdlUmVj
b3JkLmJvZHkuc2l6ZSgpKTsKIH0KIAotV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBFbnRyeTo6YnVm
ZmVyKCkgY29uc3QKK1dlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIEVudHJ5OjpidWZm
ZXIoKSBjb25zdAogewogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIGluaXRpYWxpemVCdWZm
ZXJGcm9tU3RvcmFnZVJlY29yZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCmluZGV4IDk2OTE1YzM4MDFjMzdkZGFj
M2U4ZTYwMzIxZjg4YzIyMjljZDU5YTAuLjljMDQyMGQ0NGE4MTU4ZGZjNWIyMWNmMTg4MjA0Y2Yz
YTkxNmI0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogY2xhc3MgRW50
cnkgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEVudHJ5KGNv
bnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5n
Pj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycyk7CisgICAgRW50cnkoY29uc3QgS2V5JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZh
cnlpbmdSZXF1ZXN0SGVhZGVycyk7CiAgICAgRW50cnkoY29uc3QgS2V5JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVk
aXJlY3RSZXF1ZXN0LCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZh
cnlpbmdSZXF1ZXN0SGVhZGVycyk7CiAgICAgZXhwbGljaXQgRW50cnkoY29uc3QgU3RvcmFnZTo6
UmVjb3JkJik7CiAgICAgRW50cnkoY29uc3QgRW50cnkmKTsKQEAgLTU3LDcgKzU3LDcgQEAgcHVi
bGljOgogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3Ry
aW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKCkgY29uc3QgeyByZXR1cm4gbV92
YXJ5aW5nUmVxdWVzdEhlYWRlcnM7IH0KIAotICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYnVm
ZmVyKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVy
KCkgY29uc3Q7CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3Q+JiByZWRpcmVjdFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlZGlyZWN0UmVxdWVzdDsg
fQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKQEAgLTg4LDcgKzg4LDcgQEAgcHJp
dmF0ZToKICAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gbV92YXJ5aW5nUmVx
dWVzdEhlYWRlcnM7CiAKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dD4gbV9yZWRpcmVjdFJlcXVlc3Q7Ci0gICAgbXV0YWJsZSBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQog
ICAgIG11dGFibGUgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSBtX3NoYXJlYWJsZVJlc291cmNl
SGFuZGxlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXgg
YWQwOWRmNDRkOWFmMTJmZDQwODAzMTA1NDY4MzUzNmVhMGRjODE5My4uN2IwYWRjNDBmMGIwYjY3
MTQ3MWEyN2FiNTEzOTc2NmQ0YjU1NTQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAgICAg
bV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011
bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAg
ICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAgICAgYm9vbCB2YWxpZGF0
aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0
IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9uU3VjY2VlZGVkICYmIG1fY2FjaGVFbnRy
eSkKQEAgLTEyMCwxNyArMTIwLDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAgICAgY29t
cGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIFNwZWN1bGF0aXZl
TG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5KTsKIAogICAg
IGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5
IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3Qg
bWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmICht
X2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVt
Q2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBw
ZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNp
emUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiB9CiAKQEAg
LTEzOSwxMCArMTM5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5n
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCiAgICAgaWYgKG1fZGlkQ29tcGxl
dGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlKSB7Ci0gICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1f
b3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNvcHlS
ZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKKyAgICAgICAgbV9jYWNoZUVudHJ5ID0g
bV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUuZ2V0KCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CiAgICAgICAgIC8v
IENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBlbnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4KICAgICAg
ICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgaXNTdGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZhdWx0KG1f
cmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkpCi0gICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBt
X2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdURk1vdmUo
bV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9j
YWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAgfQogCiAgICAgZGlkQ29tcGxldGUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4IGMwZTFlMTRiMmFjNDYwMzU4ZjgxNDA3Y2Q3
MGM0MDkwNTJhZjhlZmUuLjFiODQzZGI3ZWMyNzBkYjlkYWI5ZThhMjVmMmE0OGE4ZWNhZTJhOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVz
dChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwogCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIG1fcmVzcG9uc2U7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIg
bV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hl
OjpFbnRyeT4gbV9jYWNoZUVudHJ5OwogICAgIGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZhbHNlIH07
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVm
ZXRjaENhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0
Y2hDYWNoZS5jcHAKaW5kZXggNWUyZTAyZTJmYmEwYjRhMGMwM2I1ZDNlNjZiOTdmN2JjY2M3OTU4
Yi4uMzE5OWJmZjMxMWI2YzNlZWZiZTk1MGI0NWU2YjBhOTZlMzI3NzdmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCkBA
IC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QcmVmZXRjaENhY2hlOjpF
bnRyeTo6RW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK1ByZWZldGNoQ2FjaGU6OkVudHJ5OjpF
bnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IHJlc3BvbnNlKFdURk1v
dmUocmVzcG9uc2UpKSwgYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKIH0KQEAgLTcyLDcgKzcy
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFByZWZldGNoQ2FjaGU6OkVudHJ5PiBQcmVmZXRjaENhY2hl
Ojp0YWtlKGNvbnN0IFVSTCYgdXJsKQogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyBleHBpcmF0aW9u
VGltZW91dCB7IDVfcyB9OwogCi12b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVSTCYg
cmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUHJlZmV0Y2hDYWNoZTo6c3Rv
cmUoY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
cG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
IHsKICAgICBpZiAoIW1fc2Vzc2lvblByZWZldGNoZXMpCiAgICAgICAgIG1fc2Vzc2lvblByZWZl
dGNoZXMgPSBtYWtlVW5pcXVlPFByZWZldGNoRW50cmllc01hcD4oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKaW5kZXggYTI1MTUy
MGIzMWVhYzkyMWMyMmQzMTE1MWQ2ZDIzMWExYmVkMTM4Yy4uNTJjMGIxMGZjYzZkNWE2ZGUxMTQ0
N2U3ZTRlODIyZGY4Zjg0MWNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKQEAgLTQ3LDE4ICs0NywxOCBAQCBwdWJsaWM6CiAK
ICAgICBzdHJ1Y3QgRW50cnkgewogICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7Ci0gICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwog
ICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmKTsKIAotICAgICAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWxl
YXNlQnVmZmVyKCkgeyByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7IH0KKyAgICAgICAg
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlbGVhc2VCdWZmZXIoKSB7IHJl
dHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsgfQogCiAgICAgICAgIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlZGlyZWN0UmVx
dWVzdDsKICAgICB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiB0YWtlKGNvbnN0IFVS
TCYpOwotICAgIHZvaWQgc3RvcmUoY29uc3QgVVJMJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIHN0b3JlKGNv
bnN0IFVSTCYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgc3RvcmVSZWRpcmVjdChjb25zdCBV
UkwmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRleCBiOWFiMGRlZWJiOWY5Mjdj
NzM3NDJlODZhMGJlN2Y5NzE2MGJkNmZiLi40MTY2OGE1YjFjZDczODY5NjdiOGZkOTczZTk2NzMy
ZWNhOTA3ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZE5lZ290aWF0ZU1vZGVyblRMUyhjb25zdCBVUkwmKTsKICAgICB2b2lkIGRp
ZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIHRy
YW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQoRG93bmxvYWQmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCmluZGV4IGU3ODBkNmMxYzNjZDFlYjJjMmZmNWEwYzU2NGEwZTRkODhiN2VhNWQuLjMw
NTFmMTY5Y2IwYTM3MDk5ODVhMTYxMTIyYzI1ZjBlOGYxN2JkOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbQpAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZENv
bXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVyCiAgICAgICAg
IG1fY2xpZW50LT5kaWRDb21wbGV0ZVdpdGhFcnJvcihlcnJvciwgbmV0d29ya0xvYWRNZXRyaWNz
KTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6
ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0
YSkKIHsKICAgICBXVEZFbWl0U2lnbnBvc3QobV90YXNrLmdldCgpLCAiRGF0YVRhc2siLCAicmVj
ZWl2ZWQgJXpkIGJ5dGVzIiwgZGF0YS0+c2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCmluZGV4
IDhmYzdiNjYzZTZmNzU2MmIyYjM1NDg5Mzk4YTJmZTczMWJlMDc0ZjEuLjM3ZjI5NDE2NjQ2YzQ3
ZTFkYTFmZDk5NDFjY2FjMDBiNWRjMGZkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAgLTE3Miw3
ICsxNzIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlUmVzcG9u
c2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXNwbwogICAgIGludm9rZURpZFJlY2VpdmVS
ZXNwb25zZSgpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZl
QnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIE5l
dHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIFJlZiBwcm90ZWN0ZWRU
aGlzIHsgKnRoaXMgfTsKICAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IHN0
YXRlKCkgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAoIW1fY2xpZW50ICYmICFpc0Rvd25sb2FkKCkp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtE
YXRhVGFza0N1cmwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3Jr
RGF0YVRhc2tDdXJsLmgKaW5kZXggMWM0MjdkZGI3OGQ2OTUzZmU4OTYwYzU2OTJhZmRlNGY0ZjBl
ZWU4NS4uNDViZTVjZTE4NDMyNTI3MWQ1YzA4MGRkMzRmMWVlNGExNjY0MmExZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNr
Q3VybC5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmPFdlYkNvcmU6OkN1cmxS
ZXF1ZXN0PiBjcmVhdGVDdXJsUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVx
dWVzdFN0YXR1cyA9IFJlcXVlc3RTdGF0dXM6Ok5ld1JlcXVlc3QpOwogICAgIHZvaWQgY3VybERp
ZFNlbmREYXRhKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNp
Z25lZCBsb25nIGxvbmcpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6OkN1cmxSZXNwb25zZSYmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Jiwg
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJsRGlk
UmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShX
ZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKFdlYkNvcmU6OkN1cmxSZXF1ZXN0
JiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mJikg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKaW5kZXggZjVkYjcwNmM0NDU4MDIxMDg3Zjk1OTk2
NjlkZmE3ZDlmODM3OTc4Yy4uMzNkNDNiNzIyMzhkMjAzZTdlZGVjOTQxNGNhZjlmZGE4ZjQwNTI2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Byb3ZpZGVyLmgKQEAgLTU1LDcgKzU1LDcgQEAgc3RydWN0IFBhY2tldE9wdGlv
bnM7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuY3BwCmluZGV4IGRmOGVlMzBjNDNjMGZmZjRkMGVhNmQ4Y2VjZTNmY2Y0Y2IzM2Vm
NzEuLmY2NzY2ODg1N2ZmNWMyZTUzMmQ1YjRiNTE0ZjJlMmNmNDlmNzYyYzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC01MSw5ICs1
MSw5IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Cisg
ICAgICAgIGJ1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpOwogICAgIHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggN2Uw
ZDhkYmUxOTAyNTk5ZDAyYmMxMDhlNTYzYTZlM2RmMTgzMmU5Zi4uYmU2OGQ5ZTI2YTA0ODA3YTU2
MGE2NzI5ODkyNzUyNjNmYzdjMWIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIEVuY29kZXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBp
cyByZWNlaXZlZCBhcyBhIGNvcHkgb2YgdGhlIGRlY29kZWQgZGF0YSBpbiBhIG5ldyBTaGFyZWRC
dWZmZXIuCisvLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB0aGF0IGlzIHJlY2Vp
dmVkIGFzIGEgY29weSBvZiB0aGUgZGVjb2RlZCBkYXRhIGluIGEgbmV3IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIuCiAvLyBUbyBhdm9pZCBjb3B5aW5nIGZyb20gdGhlIERlY29kZXIsIHVzZSBTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHRvIHJlY2VpdmUgYSBEYXRhUmVmZXJlbmNlIGluc3RlYWQu
CiAKICNwcmFnbWEgb25jZQpAQCAtMzksMTUgKzM5LDEyIEBAIGNsYXNzIFNoYXJlZEJ1ZmZlckNv
cHkgewogcHVibGljOgogICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKLSAgICBT
aGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQot
ICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9Ci0gICAgU2hhcmVkQnVmZmVy
Q29weShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1
ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICB7Ci0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQo
YnVmZmVyKTsKLSAgICB9CisgICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVy
ID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4oKSkgeyB9CisgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKSkgeyB9CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuaAppbmRleCBkM2QwZWM1ZTk3ODU1OTliNjM0YTg0YzZjNDQ3MWI1MmNkMjIxM2YxLi42N2Vj
OGU1ZTkyYmQwMjQxMTVkYjBkNDA4MGEyNGZlNzM1NzBkM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCkBAIC0y
Myw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
Ly8gRW5jb2RlcyBhIFNoYXJlZEJ1ZmZlciBvciBEYXRhUmVmZXJlbmNlIHRoYXQgaXMgcmVjZWl2
ZWQgYXMgYSBEYXRhUmVmZXJlbmNlIHRvIHRoZSBkZWNvZGVkIGRhdGEuCisvLyBFbmNvZGVzIGEg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBvciBEYXRhUmVmZXJlbmNlIHRoYXQgaXMgcmVjZWl2ZWQg
YXMgYSBEYXRhUmVmZXJlbmNlIHRvIHRoZSBkZWNvZGVkIGRhdGEuCiAKICNwcmFnbWEgb25jZQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKaW5kZXggZDI0MDZlZTI5MDUz
MTFmNjliNzU4NDIxZTc3YTNlNjZjYmEyN2I2NS4uYzAyNmY1NDk1NjliMmJlMDA3OGFlMzI1ZDA1
MzllMDcxYWYxMTA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRN
ZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcApA
QCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKLVJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1l
bW9yeTo6Y29weUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAt
NTEsNyArNTEsNyBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRN
ZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKGRhdGFTaXplIDw9IHNpemUoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyIHsKICAgICAgICAgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSAtPiBjb25z
dCB1aW50OF90KiB7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7CiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9TaGFyZWRNZW1vcnkuaAppbmRleCBlMzcxYmNkNzMwMmNmODVlYmFiMmI1YTg1ZTdiZTQ5ZGNm
NTY1MmFiLi4xYjRmZGZhZjY4Mzg5ZGNlNzI4ZmYzNGU1ZTVmMDEyZTI0M2ZhMmNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgRW5j
b2RlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogI2lmIE9TKERBUldJTikKQEAgLTEyMCw3ICsx
MjEsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRTogQ2hhbmdlIHRoZXNlIGZhY3RvcnkgZnVu
Y3Rpb25zIHRvIHJldHVybiBSZWY8U2hhcmVkTWVtb3J5PiBhbmQgY3Jhc2ggb24gZmFpbHVyZS4K
ICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gYWxsb2NhdGUoc2l6ZV90KTsKLSAgICBz
dGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gY29weUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gY29weUJ1ZmZlcihj
b25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgc3RhdGljIFJlZlB0
cjxTaGFyZWRNZW1vcnk+IG1hcChjb25zdCBIYW5kbGUmLCBQcm90ZWN0aW9uKTsKICNpZiBVU0Uo
VU5JWF9ET01BSU5fU09DS0VUUykKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gd3Jh
cE1hcCh2b2lkKiwgc2l6ZV90LCBpbnQgZmlsZURlc2NyaXB0b3IpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCmluZGV4IGNhMGMyNGIyNzczNTQ3Njc2
ZTM0ODAxYzc5YTFkNTY1YmY5NWZlNWQuLjExMGUwYWRkZTU1OGE5ZDkzMzhiMjQ1MDZlODkxNjNj
OTM2OTcxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVS
ZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3Vy
Y2UubW0KQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZVdlYkFyY2hpdmVSZXNv
dXJjZURhdGEodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAKIFJlZjxBUEk6OkRh
dGE+IFdlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSgpCiB7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVDRkRhdGEoKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogCiAgICAgLy8gQmFsYW5jZWQgYnkg
Q0ZSZWxlYXNlIGluIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhLgogICAgIENGUmV0YWlu
KGNmRGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDg3ZjRlYjFlYmEyODcyZTBjYjBh
Yjk1OTE2YWZlZGUyOWZjYmEyNDQuLjNjMWI1N2Q1YWEyNmVjNzJlNjBiNWQ3OGExMWU5ZmQ4NTJj
ZmZlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1
bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNv
cmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC01NjQsMTMgKzU2NCwxMiBAQCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6
OkZvbnQ+Pjo6ZGVjbwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCpp
bmNsdWRlc0NyZWF0aW9uRGF0YSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CiAgICAgICAg
IGRlY29kZXIgPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgLy8gVXBvbiByZWNlaXB0
LCBjb3B5IHRoZSBkYXRhIGZvciBzZWN1cml0eSwgc28gdGhlIHNlbmRlciBjYW4ndCBzY3JpYmJs
ZSBvdmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0LgotICAgICAgICBhdXRvIGxvY2FsRm9udEZh
Y2VEYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZm9udEZhY2VEYXRhLnZhbHVl
KCktPmRhdGEoKSwgZm9udEZhY2VEYXRhLnZhbHVlKCktPnNpemUoKSk7CisgICAgICAgIGF1dG8g
bG9jYWxGb250RmFjZURhdGEgPSBmb250RmFjZURhdGEudmFsdWUoKS0+bWFrZUNvbnRpZ3VvdXMo
KTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaXRlbUluQ29sbGVjdGlvbjsKICAg
ICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4IGM2OTYxYzcxNDQwMmJmMzc3YWU5MTBmYmI2Y2Nh
YTUyZDNiODQxMjguLjZmYTAyYTdiYzNlZTU0YWU2ZDMyNTM4MTBkNzhkZWMzMTY1MzUzZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKQEAgLTU3LDcgKzU3
LDcgQEAgYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVh
YmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAg
ICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPmRhdGEoKTsgfSwKICAg
ICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPnNpemUoKTsgfQog
ICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKaW5kZXggNjQ5ODJiYzQ4MTAyYTRhZGIyMGE3ZTYwZTIxYmQ0OTJkNjUzMzc0Yy4uODQzZmQ0
NzMxM2FlZWNhMjk5MzA2MTJmYzVlYzU3ODc1NTQzNDJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgREVG
SU5FX1NJTVBMRV9BUkdVTUVOVF9DT0RFUl9GT1JfU09VUkNFKERpc3BsYXlMaXN0OjpTZXRJbmxp
bmVTdHJva2VDb2xvcikKIAogI3VuZGVmIERFRklORV9TSU1QTEVfQVJHVU1FTlRfQ09ERVJfRk9S
X1NPVVJDRQogCi1zdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCitzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRC
dWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVm
ZmVyKQogewogICAgIGJvb2wgaXNOdWxsID0gIWJ1ZmZlcjsKICAgICBlbmNvZGVyIDw8IGlzTnVs
bDsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAgICAgICAgIHJldHVy
bjsKIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIC8vIERvIG5vdCB1c2Ugc2hh
cmVkIG1lbW9yeSBmb3IgU2hhcmVkQnVmZmVyIGVuY29kaW5nIGluIFVuaXgsIGJlY2F1c2UgaXQn
cyBlYXN5IHRvIHJlYWNoIHRoZQorICAgIC8vIERvIG5vdCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3Ig
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBlbmNvZGluZyBpbiBVbml4LCBiZWNhdXNlIGl0J3MgZWFz
eSB0byByZWFjaCB0aGUKICAgICAvLyBtYXhpbXVtIG51bWJlciBvZiBmaWxlIGRlc2NyaXB0b3Jz
IG9wZW4gcGVyIHByb2Nlc3Mgd2hlbiBzZW5kaW5nIGxhcmdlIGRhdGEgaW4gc21hbGwgY2h1bmtz
CiAgICAgLy8gb3ZlciB0aGUgSVBDLiBDb25uZWN0aW9uVW5peC5jcHAgYWxyZWFkeSB1c2VzIHNo
YXJlZCBtZW1vcnkgdG8gc2VuZCBhbnkgSVBDIG1lc3NhZ2UgdGhhdCBpcwogICAgIC8vIHRvbyBs
YXJnZS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg1NzEu
CkBAIC0yNjQsNyArMjY0LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW4KICAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZl
cihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBk
YXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLmFwcGVuZChidWZmZXIp
OwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtMTU1MCwxMCArMTU1MCwxMCBAQCB2b2lk
IEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0CiAgICAgaWYgKGhhc1N0cmluZykKICAgICAgICAgZW5jb2RlciA8
PCBzdGQ6OmdldDxTdHJpbmc+KHBsYXRmb3JtRGF0YSk7CiAKLSAgICBib29sIGhhc0J1ZmZlciA9
IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSk7
CisgICAgYm9vbCBoYXNCdWZmZXIgPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKTsKICAgICBlbmNvZGVyIDw8IGhhc0J1ZmZl
cjsKICAgICBpZiAoaGFzQnVmZmVyKQotICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rl
ciwgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSkucHRyKCkpOworICAg
ICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rlciwgc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpLnB0cigpKTsKIH0KIAogYm9vbCBBcmd1bWVudENv
ZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnkmIGRhdGEpCkBAIC0yOTc2LDcgKzI5NzYsNyBA
QCBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4ge3sgV1RGTW92ZShp
ZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfX07CisgICAgcmV0dXJuIHsgeyBXVEZNb3Zl
KGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9IH07CiB9CiAKICNlbmRpZiAvLyBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzAxMCw2ICszMDEwLDM0IEBAIHN0ZDo6b3B0aW9u
YWw8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlNlcmlhbGl6ZWRQCiB9CiAjZW5kaWYKIAordm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sK
KyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30KKworc3Rk
OjpvcHRpb25hbDxSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCit7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICgh
ZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOworfQor
CitzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2Rl
cjxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFk
ZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
OworfQorCiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVy
LmdldCgpKTsKQEAgLTMxMDcsNyArMzEzNSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlCiB7
CiAgICAgZW5jb2RlciA8PCBtZXNzYWdlLmZpcnN0OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbWVzc2FnZURhdGEgPSBtZXNzYWdlLnNlY29uZC5jb3B5UmVmKCk7CisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5zZWNvbmQuY29weVJl
ZigpOwogICAgIGVuY29kZXIgPDwgbWVzc2FnZURhdGE7CiB9CiAKQEAgLTMxMTcsNyArMzE0NSw3
IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiAg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBl
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSB8fCAhYnVmZmVyKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oCmluZGV4IDI1ZjAxYzAyOTJhMDE5ZjA2NzYyNGJiYjU1MzQwMmRmMWEzM2M1YjYu
LjZmYWMyYWExZWE3ODQ2ZmY2YmY4OTAyMWYwZjUyZTlhYTdhZTAzYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xMTQsNiArMTE0LDcgQEAg
Y2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIENl
cnRpZmljYXRlSW5mbzsKIGNsYXNzIENvbG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3Mg
Q3JlZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBDdXJz
b3I7CkBAIC0xMzgsNyArMTM5LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKIGNsYXNzIFNjcmlwdEJ1ZmZlcjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFNwcmluZ1RpbWluZ0Z1bmN0aW9uOwogY2xhc3MgU3RlcHNUaW1pbmdGdW5jdGlvbjsKIGNs
YXNzIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czsKQEAgLTc1MSw2ICs3NTIsMTYg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkUGxh
dGZvcm1EYXRhQ3VlVmFsdWU+IHsKIH07CiAjZW5kaWYKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHsKKyAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisK
K3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNv
ZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBj
b25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYpOwogICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCmluZGV4IGNm
MmU0ZDVmOTNmZDJkOTQ2YmFiZmY5M2VlYTNlOWU4NjBhZWJiZjQuLmI2MDdhY2U4MzhlMDRiY2Ux
YTZhZWU0ZGE1NjU1OWUwOTY5ODM5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJI
aXRUZXN0UmVzdWx0RGF0YS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgV2ViSGl0VGVzdFJlc3VsdERh
dGE6OldlYkhpdFRlc3RSZXN1bHREYXRhKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGhp
dFRlc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKEltYWdlKiBpbWFnZSA9IGhpdFRlc3RS
ZXN1bHQuaW1hZ2UoKSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBp
bWFnZS0+ZGF0YSgpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gaW1hZ2UtPmRhdGEoKTsKICAgICAgICAgaWYgKGJ1ZmZlcikgewogICAgICAgICAgICAg
aW1hZ2VTaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVm
ZmVyKTsKICAgICAgICAgICAgIGltYWdlU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5kZXggMjVhMzA3ZjM4
MjllOTI3OGI1ZWE3OGZmODI5Njc4ODMzNzdhMzFiYS4uNjcxNzU4YTI4MGE1ZTQ0MGFhMDYwYTc5
Y2YxZjBmMTI2ZGI3YmUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0Fy
Z3VtZW50Q29kZXJzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1l
bnRDb2RlcnNHdGsuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTZWxl
Y3Rpb25EYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNlbGVjdGlvbkRhdGEm
CiAgICAgYm9vbCBoYXNDdXN0b21EYXRhID0gc2VsZWN0aW9uLmhhc0N1c3RvbURhdGEoKTsKICAg
ICBlbmNvZGVyIDw8IGhhc0N1c3RvbURhdGE7CiAgICAgaWYgKGhhc0N1c3RvbURhdGEpCi0gICAg
ICAgIGVuY29kZXIgPDwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4oc2VsZWN0aW9uLmN1c3RvbURhdGEo
KSk7CisgICAgICAgIGVuY29kZXIgPDwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KHNl
bGVjdGlvbi5jdXN0b21EYXRhKCkpOwogCiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2UgPSBzZWxl
Y3Rpb24uY2FuU21hcnRSZXBsYWNlKCk7CiAgICAgZW5jb2RlciA8PCBjYW5TbWFydFJlcGxhY2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXgg
YjM0ZWM3MzYzNjNjNGYxZDJiMGU3NjBhZDNmNGE5ZDViYWMxYTM0ZS4uMTQ5MGM1MTFiZGMzOGJk
OGFiNGE2OTVhZWNmMzA2ZDk1ZmFhMzk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtOTgsNyArOTgsNyBAQCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBBdHRhY2htZW50OjpmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdAogICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFj
aG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5oCmluZGV4IGFmYTkyOWNmMDkzZDIyZWM3NmFkODZmZGEwM2I1MDFiYmZk
MjlkYzMuLmZlNTBlNTM4YjhlYmIzNTFhNDgzNmQxZGQ4OTNkMTQ3YTU2YTg3N2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtMzksNiArMzksNyBA
QCBPQkpDX0NMQVNTIE5TU3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTgyLDcgKzgzLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3Q7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBlbmNsb3NpbmdJbWFn
ZURhdGEoKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3Q7CiAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZmlsZVNpemVGb3JEaXNwbGF5KCkgY29uc3Q7CiAKICAgICB2b2lkIHNldEhhc0VuY2xvc2lu
Z0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNFbmNsb3NpbmdJbWFnZSA9IGhh
c0VuY2xvc2luZ0ltYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oCmluZGV4IDdmYzA1NDU3ZTY0Y2Y1ODliMGZiMGU3
ZTAzNmY2OTBmYTJjMTdiYWMuLjRlMjY2ZjM2N2FjNjAyYjhlZjFlYWY3NTdhMGEwNGRjNzNmNzcx
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
UnVsZUxpc3RTdG9yZS5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXgg
NTYyMzQwMTQ1OWRhNWZlMzBmNDkxYTQxZmIzNDdhNjc1NzIwMmM0MC4uMTExZjA5MjYzZjgyMjM4
MjlhNWFkMjY0NDM0YmE0MjBmMTk4ZGQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBD
b250ZW50UnVsZUxpc3RSZXN1bHRzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0
YTsKIH0KIApAQCAtMTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShRVUlDS19MT09L
KQogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0
aSkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25z
dCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgeyB9CiAjZW5kaWYKIAogICAgIHZp
cnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgUmVmPE5hdmlnYXRpb25BY3Rpb24+JiYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgT2JqZWN0KikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4
IGNmNDYyMTZjYTI1YTllZGY4MmUzMTlhMzMwMzA3OTFlOGQ0ZTE1M2MuLmRmZWYzZTA3MGY5NjE2
MzA0OTcxNDRkYWYzZjMwMGNiNGNhNTE5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTM3LDcgKzEz
Nyw3IEBAIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IEF0dGFjaG1lbnQ6OmZpbGVTaXplRm9yRGlz
cGxheSgpIGNvbnN0CiAgICAgcmV0dXJuIFtmaWxlV3JhcHBlciByZWd1bGFyRmlsZUNvbnRlbnRz
XS5sZW5ndGg7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6
OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKIHsKICAg
ICBpZiAoIW1faGFzRW5jbG9zaW5nSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYzRl
ZTUyNTA3NjQyZGI0ZTU0Y2ZhZGY3ZmVlM2JmMWI3YzBkM2QzYy4uMDFjODEwMjc4ZWY2MzU5MTcy
ZjhlNjViNTJjZmNiMGI1MjFiN2Q4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNTk2LDcgKzE1OTYsNyBAQCAtICh2b2lkKV9zdG9y
ZUFwcEhpZ2hsaWdodDooY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JiloaWdobGlnaHQKICAg
ICBpZiAoaGlnaGxpZ2h0LnRleHQpCiAgICAgICAgIHRleHQgPSBoaWdobGlnaHQudGV4dC52YWx1
ZSgpOwogCi0gICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQg
YWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKKyAgICBhdXRvIHdrSGlnaGxpZ2h0ID0g
YWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxp
Z2h0LmhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4
dDp0ZXh0IGltYWdlOm5pbF0pOwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnN0b3JlQXBwSGlnaGxpZ2h0OmluTmV3R3JvdXA6cmVxdWVz
dE9yaWdpbmF0ZWRJbkFwcDopXSkKICAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnNlbGYgc3Rv
cmVBcHBIaWdobGlnaHQ6d2tIaWdobGlnaHQuZ2V0KCkgaW5OZXdHcm91cDpoaWdobGlnaHQuaXNO
ZXdHcm91cCA9PSBXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzIHJlcXVl
c3RPcmlnaW5hdGVkSW5BcHA6aGlnaGxpZ2h0LnJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgPT0gV2Vi
Q29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDo6WWVzXTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKaW5kZXggYWM0YTBmNDM3
MDE1MmVkNTcyYjUwOTFkZmE1MWJhZWJhYjg3ZjRlOS4uYzgwMjljMTQwYTZkZDE0YjE5NjQ5MjI1
Yjg3ODMwZWVjMTM0MDBmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogCiAjaWYgVVNF
KFFVSUNLX0xPT0spCiAgICAgICAgIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3Ry
aW5nJiB1dGkpIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xv
b2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJy
aWRlOworICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkZyYW1lKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDM4NTU4ODJjODdkYzllZDMxYzFlZjBi
YWI2MTZiMWU2NDU5NDRlZWYuLjhkM2E4NTY0NjJlYWVmNzQxZDhjMjllMjU5MmZkNTczNjZmNTk5
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUubW0KQEAgLTEyMjAsNyArMTIyMCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50OjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyCiAgICAg
W3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9u
RGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlk
U3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVdpdGhGaWxlTmFtZTpmaWxl
TmFtZSB1dGk6dXRpXTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGll
bnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGll
bnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0
YXRlKQogICAgICAgICByZXR1cm47CkBAIC0xMjMyLDcgKzEyMzIsNyBAQCB2b2lkIE5hdmlnYXRp
b25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRgogICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5h
dmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2Vi
VmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIu
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldOworICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9u
RGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25h
dmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KV07CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRleCA4MDJmZmFhNmQ2ZWRiZWEyZTk3Mjc3NGUy
Njk2NWIyZGJiMmE3MzVlLi4zZWEyMTU2MDM3ODllMWIwYjI0ZTViNTU5OWQzNzUxOTdmNTk1MmJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJv
eHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UHJveHlDb2NvYS5tbQpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpz
ZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKCkKICAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBhdXRvIHJlZ2lzdHJh
dGlvbkRhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25zLmdl
dCgpKTsKKyAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uRGF0YSA9IFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25zLmdldCgpKTsKICAgICAgICAg
ICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9Db21w
b25lbnRSZWdpc3RyYXRpb25zKHsgcmVnaXN0cmF0aW9uRGF0YSB9KSwgMCk7CiAgICAgICAgIH0p
OwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgK
aW5kZXggM2Y2ZGQxZjI0MmU3YTExNWVjZjc5ODM5MGYzNGI2MzVjNmU4ZDZmOS4uZjU4OTEyNDE3
MDJkYWE0MjBjYzRlNmUyNDYyOGExY2RlODkwN2QyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBAIC01MDYsNyArNTA2LDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBzdGFydERyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0mLCBjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2UpOwogICAgIHZvaWQgc2V0RmlsZUFuZFVSTFR5cGVzKE5T
U3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBO
U1N0cmluZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJsZVVSTCwgTlNQYXN0ZWJvYXJkICopOwotICAg
IHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqLCBOU1N0cmluZyAq
ZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcg
KnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYXJjaGl2
ZUJ1ZmZlciwgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU1N0cmluZyAqcGFzdGVib2FyZE9y
aWdpbik7CisgICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSos
IE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNTdHJpbmcgKnRpdGxl
LCBOU1N0cmluZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJsZVVSTCwgV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogYXJjaGl2ZUJ1ZmZlciwgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBO
U1N0cmluZyAqcGFzdGVib2FyZE9yaWdpbik7CiAgICAgdm9pZCBwYXN0ZWJvYXJkQ2hhbmdlZE93
bmVyKE5TUGFzdGVib2FyZCAqKTsKICAgICB2b2lkIHByb3ZpZGVEYXRhRm9yUGFzdGVib2FyZChO
U1Bhc3RlYm9hcmQgKiwgTlNTdHJpbmcgKnR5cGUpOwogICAgIE5TQXJyYXkgKm5hbWVzT2ZQcm9t
aXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW5hdGlvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDNkOWU4
NzdiMGNiNzU2NTRiNjM5MTYzOTU1N2Y1MmI2MDM5MmNhYzkuLjYyMzY3ZGM1YWQxZmUxMjIxZjdi
MDk5ZTliYjQ0NTRkYjM3YTU4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCkBAIC00NDQ5LDcgKzQ0NDksNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpz
ZXRGaWxlQW5kVVJMVHlwZXMoTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9u
LCBOUwogICAgIG1fcHJvbWlzZWRVUkwgPSB1cmw7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OnNl
dFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZp
bGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1
cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGFyY2hpdmVC
dWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKm9yaWdpbklkZW50aWZp
ZXIpCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJ
bWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNT
dHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJsZVVSTCwgV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYXJjaGl2ZUJ1ZmZlciwgTlNTdHJpbmcgKnBhc3Rl
Ym9hcmROYW1lLCBOU1N0cmluZyAqb3JpZ2luSWRlbnRpZmllcikKIHsKICAgICBOU1Bhc3RlYm9h
cmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoTmFtZTpwYXN0ZWJv
YXJkTmFtZV07CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB0eXBlcyA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOldlYkNvcmU6OmxlZ2FjeUZp
bGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCksIG5pbF0pOwpAQCAtNDQ3MCw3ICs0NDcwLDcgQEAg
dm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2Uq
IGltYWdlLCBOU1N0cmluZyAqZmlsZW4KICAgICBzZXRGaWxlQW5kVVJMVHlwZXMoZmlsZW5hbWUs
IGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVSTCwgcGFzdGVib2FyZCk7CiAKICAgICBp
ZiAoYXJjaGl2ZUJ1ZmZlcikgewotICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXIt
PmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpuc0RhdGEuZ2V0KCkgZm9y
VHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZV07CiBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKQEAgLTQ1MDEsNyArNDUwMSw3IEBAIHZvaWQgV2ViVmll
d0ltcGw6OnByb3ZpZGVEYXRhRm9yUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQs
IE5TU3RyaW5nICp0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChbdHlwZSBpc0VxdWFsOm1f
cHJvbWlzZWRJbWFnZS0+dXRpKCldICYmIG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpKSB7Ci0gICAg
ICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVh
dGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZElt
YWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAg
ICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTooX19icmlkZ2UgTlNEYXRhICopcGxhdGZvcm1EYXRhLmdl
dCgpIGZvclR5cGU6dHlwZV07CiAgICAgfQogCkBAIC00NTU0LDcgKzQ1NTQsNyBAQCBOU0FycmF5
ICpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihO
U1VSTCAqZHJvcERlc3RpbgogICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAKICAgICBpZiAo
bV9wcm9taXNlZEltYWdlKSB7Ci0gICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEo
KS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHdyYXBwZXIgPSBh
ZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRz
OmRhdGEuZ2V0KCldKTsKICAgICB9IGVsc2UKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tO
U0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzptX3By
b21pc2VkVVJMXSBvcHRpb25zOk5TRmlsZVdyYXBwZXJSZWFkaW5nSW1tZWRpYXRlIGVycm9yOm5p
bF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGM0ODVjN2ZjMzEzZWEw
ODMzZmM2MDYyNjcxNjlkNjkyYTgyNDA5MjguLmI0NjJkOGRiNWNjNjIwMzg2ZTc2ODNkYjI0ODM2
YWIzY2U2NGZlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTMyOCw3
ICszMjgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFVTRShBUFBLSVQpCi0gICAgdmlydHVh
bCB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
SWRlbnRpZmllcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFn
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmll
cikgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0
VG9EZXZpY2VTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDVhODMyZTU1YWNiYTE4OWIzOWI5ZTg5N2Nj
MWNhMThiN2I0ODQ1NTUuLmU1ZWFmNDFmMzhiNjQ3YmM1ZjM3M2RiMDc5ZGViNDE2YWE5NjNkMWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yNTksNyArMjU5LDcg
QEAgY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJ1bkxvb3BP
YnNlcnZlcjsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
OwogY2xhc3MgVGV4dEluZGljYXRvcjsKIGNsYXNzIFZhbGlkYXRpb25CdWJibGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGRmNTlkNTZmZDY5
N2YyYWRmMjA5ZjZjNDdiZWYwNTFkODBjMTZiZDEuLjE5OTdlYWUyMGFjMjJjYTNhZTgwMDRjNzA0
ZmEyMmRhNjA5ZTAwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZVRhc2suY3BwCkBAIC01MSw2ICs1MSw3IEBAIFdlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVt
ZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFuZGxlciwgV2ViUGFnZVByb3h5JiBwCiAgICAg
LCBtX3JlcXVlc3QoV1RGTW92ZShwYXJhbWV0ZXJzLnJlcXVlc3QpKQogICAgICwgbV9mcmFtZUlu
Zm8oQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKHBhcmFtZXRlcnMuZnJhbWVJbmZvKSwg
JnBhZ2UpKQogICAgICwgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzeW5jQ29tcGxl
dGlvbkhhbmRsZXIpKQorICAgICwgbV9zeW5jRGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI+KCkpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIH0KQEAgLTE2
OCw3ICsxNjksNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgLT4gRQogICAgIHJldHVybiBFeGNlcHRp
b25UeXBlOjpOb25lOwogfQogCi1hdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRh
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCithdXRvIFdlYlVS
TFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHlwZQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAKQEAgLTE4NywxMCArMTg4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNl
aXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAgICBt
X2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBpZiAobV9z
eW5jRGF0YSkKLSAgICAgICAgICAgIG1fc3luY0RhdGEtPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N5bmNEYXRhID0gV1RGTW92ZShidWZmZXIp
OworICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCkBAIC0yMTcsMTIgKzIxNSw5IEBA
IGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CiAgICAgCiAg
ICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgICAg
ICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGEo
KSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07Ci0KKyAgICAgICAgc2l6ZV90IHNpemUgPSBtX3N5bmNE
YXRhLT5zaXplKCk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhID0geyBtX3N5bmNEYXRh
LT50YWtlKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSB9OwogICAgICAgICBtX3N5
bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkp
OwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZShtX3VybFNj
aGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBlcnJvciksIG1f
d2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApp
bmRleCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2RkMGE0N2YyYzEzMDg1MjY3Li43OTk0MmY5YjIw
YTI2NjBjYTRhN2RjZDQ1MDE4ZDE2ZTQzYjY2NmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL0xv
Y2suaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3Mg
RnJhbWVJbmZvOwpAQCAtNDMsNyArNDQsOCBAQCBjbGFzcyBGcmFtZUluZm87CiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTg0LDcg
Kzg2LDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvblR5cGUgd2lsbFBlcmZvcm1SZWRpcmVjdGlv
bihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCAgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIEV4
Y2VwdGlvblR5cGUgZGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIEV4Y2VwdGlvblR5cGUgZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBF
eGNlcHRpb25UeXBlIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
OworICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIEV4Y2VwdGlvblR5cGUgZGlkQ29tcGxldGUoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAgICAgdm9pZCBzdG9wKCk7CkBAIC0xMTUsNyAr
MTE3LDcgQEAgcHJpdmF0ZToKIAogICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5j
Q29tcGxldGlvbkhhbmRsZXI7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3N5bmNS
ZXNwb25zZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX3N5bmNEYXRhOwor
ICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3N5bmNEYXRhOwog
CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyQ2FsbGJhY2sg
eyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9D
bGlwYm9hcmQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaAppbmRl
eCA3ODY2Y2RiMTc3NDYwMDdhYjBhN2ExN2M1NWI4N2M3ZjE2NGMyYmFlLi43Mjc5Zjg0NGNjMmJi
ZDJiMDE3ZmUwZjA5N2RlMDE4NzBhOWE4NTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L0NsaXBib2FyZC5oCkBAIC0zNiw3ICszNiw3IEBAIHR5cGVkZWYgc3RydWN0IF9HdGtDbGlwYm9h
cmQgR3RrQ2xpcGJvYXJkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTZWxlY3Rpb25E
YXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGZvcm1hdHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7
CiAgICAgdm9pZCByZWFkVGV4dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7
CiAgICAgdm9pZCByZWFkRmlsZVBhdGhzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0
cmluZz4mJik+JiYpOwotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBjaGFyKiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4mJik7CisgICAgdm9p
ZCByZWFkQnVmZmVyKGNvbnN0IGNoYXIqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJik7CiAgICAgdm9pZCB3cml0ZShXZWJD
b3JlOjpTZWxlY3Rpb25EYXRhJiYpOwogICAgIHZvaWQgY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCmluZGV4IGMyYmY1MTgzYjMwZjEw
ZTllYjc4MTNjZGFkYTIyM2U5MTg5Yzc0NTkuLjU5NjZkNTU3NGMyODJmNTMxNjk0MDk2MDgyOTYw
YWUzMzljYTExMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlw
Ym9hcmRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJk
R3RrMy5jcHAKQEAgLTEyNiwxNSArMTI2LDE1IEBAIHZvaWQgQ2xpcGJvYXJkOjpyZWFkRmlsZVBh
dGhzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxlCiBz
dHJ1Y3QgUmVhZEJ1ZmZlckFzeW5jRGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxM
T0NBVEVEOwogCi0gICAgZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5jRGF0YShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYmIGhhbmRsZXIpCisgICAg
ZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5jRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBoYW5kbGVyKQogICAgICAgICA6
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikpCiAgICAgewogICAgIH0KIAotICAg
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+IGNv
bXBsZXRpb25IYW5kbGVyOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKIH07CiAKLXZv
aWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0IGNoYXIqIGZvcm1hdCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgZ3RrX2NsaXBib2FyZF9yZXF1ZXN0X2Nv
bnRlbnRzKG1fY2xpcGJvYXJkLCBnZGtfYXRvbV9pbnRlcm4oZm9ybWF0LCBUUlVFKSwgW10oR3Rr
Q2xpcGJvYXJkKiwgR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uLCBncG9pbnRlciB1c2VyRGF0
YSkgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVhZEJ1ZmZlckFzeW5jRGF0YT4gZGF0YShz
dGF0aWNfY2FzdDxSZWFkQnVmZmVyQXN5bmNEYXRhKj4odXNlckRhdGEpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcAppbmRleCAwN2FiYjcxMzE5ODg1
M2I3ODdjNjMyNGJkNDgwYjFlMDg4YTJhM2QzLi41YjgxZmE4ZjI5ZDNmN2NmMWMzZjA5ZDFmYzNj
ODg3MzRkYzUxYTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xp
cGJvYXJkR3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2Fy
ZEd0azQuY3BwCkBAIC0xMjAsMTUgKzEyMCwxNSBAQCB2b2lkIENsaXBib2FyZDo6cmVhZEZpbGVQ
YXRocyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZQog
c3RydWN0IFJlYWRCdWZmZXJBc3luY0RhdGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FM
TE9DQVRFRDsKIAotICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJBc3luY0RhdGEoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4mJiBoYW5kbGVyKQorICAg
IGV4cGxpY2l0IFJlYWRCdWZmZXJBc3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKICAgICAgICAg
OiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKQogICAgIHsKICAgICB9CiAKLSAg
ICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiBj
b21wbGV0aW9uSGFuZGxlcjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCi12
b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGNvbnN0IGNoYXIqIG1pbWVUeXBlc1td
ID0geyBmb3JtYXQsIG51bGxwdHIgfTsKICAgICBnZGtfY2xpcGJvYXJkX3JlYWRfYXN5bmMobV9j
bGlwYm9hcmQsIG1pbWVUeXBlcywgR19QUklPUklUWV9ERUZBVUxULCBudWxscHRyLCBbXShHT2Jq
ZWN0KiBjbGlwYm9hcmQsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
TWFjLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaApp
bmRleCBkMjIzOGZkYzlkMTZmNzdmOGMzZDMwMmNhOTk3NmZlODNmMWIzZjM3Li5hYjg3YzJhN2U4
YzM1N2E2NWIzY2ZlNjA3OTM4ZmRmZWM4YTY1MmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaApAQCAtMTAwLDggKzEwMCw4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBleGVjdXRlVW5kb1JlZG8oVW5kb09yUmVkbykgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBleGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9y
KSBvdmVycmlkZTsKICAgICB2b2lkIHN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYs
IGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZSkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwKLSAg
ICAgICAgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9y
aWdpbklkZW50aWZpZXIpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0
IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAorICAgICAgICBjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdp
bklkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgp
IG92ZXJyaWRlOwogICAgIHZvaWQgcmVzZXRTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBub3RpZnlJbnB1dENvbnRleHRBYm91dERpc2NhcmRlZENvbXBvc2l0aW9uKCkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxN
YWMubW0KaW5kZXggYTQxMTIxMzVmMmVmMTkwMTVhNTJmMWUxYjAzYWUzMGExZjIyM2QyYS4uYzM2
M2U5NTVlODc5YzBlMTg2YjQxNTA5MDkxMzM2NWMyMGZlOTA2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtNDAwLDcgKzQwMCw3
IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRl
bSYgaXRlbSwgY29uc3QgU2hhcmVhYmxlQml0CiAgICAgbV9pbXBsLT5zdGFydERyYWcoaXRlbSwg
aW1hZ2UpOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFn
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdl
QnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlz
aWJsZVVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJp
bmcmIG9yaWdpbklkZW50aWZpZXIpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERh
dGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKIHsKICAg
ICBhdXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGltYWdlLT5zZXREYXRh
KFdURk1vdmUoaW1hZ2VCdWZmZXIpLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGUwM2UwODBhZWUwODM4MGI0NmZmZTg5ZGQ4
ZTYxYjY2YjU5OGRiNDYuLjAxZDg0MGEyYTYzZWFjNzkxZmJkODRmYmU2MzdiNWIyOGNmNjEzMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpA
QCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQcm9taXNlZERhdGFGb3JJ
bWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTCiAgICAgICAgIHJldHVy
bjsKICAgICBhdXRvIGltYWdlQnVmZmVyID0gc2hhcmVkTWVtb3J5SW1hZ2UtPmNyZWF0ZVNoYXJl
ZEJ1ZmZlcihpbWFnZUhhbmRsZS5kYXRhU2l6ZSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBhcmNoaXZlQnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBhcmNo
aXZlQnVmZmVyOwogICAgIGlmICghYXJjaGl2ZUhhbmRsZS5oYW5kbGUuaXNOdWxsKCkpIHsKICAg
ICAgICAgYXV0byBzaGFyZWRNZW1vcnlBcmNoaXZlID0gU2hhcmVkTWVtb3J5OjptYXAoYXJjaGl2
ZUhhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAg
ICAgICBpZiAoIXNoYXJlZE1lbW9yeUFyY2hpdmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKaW5kZXggZmE5NDAyNWVkNzQ3MzBkMjhlNzE2
NDYyODVmOWU1YmE2NTNiOGYxMi4uYzI4ZmU2NWYwY2YxNjQzOTk4MThhY2EzMmY5ODFjYzc3OGYx
ZTkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNLmNwcApAQCAtODQsNyArODQsNyBAQCBib29sIFJlbW90ZUNETTo6c3VwcG9ydHNTZXNzaW9u
VHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETVNlc3Npb25UeXBlJiwgY29ucwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKSBjb25zdAorYm9vbCBS
ZW1vdGVDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkgY29uc3QKIHsKICAgICAvLyBUaGlzIGNoZWNr
IHdpbGwgYmUgZG9uZSwgbGF0ZXIsIGluc2lkZSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6cmVxdWVzdExpY2Vuc2UoKS4KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEyOSw3ICsxMjksNyBA
QCB2b2lkIFJlbW90ZUNETTo6bG9hZEFuZEluaXRpYWxpemUoKQogICAgIG1fZmFjdG9yeS0+Z3B1
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RN
UHJveHk6OkxvYWRBbmRJbml0aWFsaXplKCksIG1faWRlbnRpZmllcik7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IFJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZm
ZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFJlbW90
ZUNETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNw
b25zZSkgY29uc3QKIHsKICAgICAvLyBUaGlzIGNoZWNrIHdpbGwgYmUgZG9uZSwgbGF0ZXIsIGlu
c2lkZSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlTGljZW5zZSgpLgogICAg
IHJldHVybiByZXNwb25zZS5jb3B5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE0uaAppbmRleCAwYWRkZjgzMzUzYjZlYTFiMmU4YjAyYzZiN2VlM2Rh
ZjQ2OGNkMzgzLi44YzQ1NGViODNlNTk5NGE4ZTRkNTkyZDUxZGY5MWZmOWI1MjNjYmVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKQEAgLTQ4
LDEzICs0OCwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNv
bnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAg
ICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgV2ViQ29y
ZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0
aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25m
aWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETVNlc3Npb25UeXBlJiwgY29uc3QgV2ViQ29yZTo6
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9y
dHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
JikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmLCBjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7
CiAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVp
cmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBX
ZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBXZWJDb3JlOjpDRE1S
ZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpDRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikg
Y29uc3QgZmluYWw7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVy
T3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+IGNyZWF0
ZUluc3RhbmNlKCkgZmluYWw7CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAog
ICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRlZEluaXREYXRhVHlwZXM7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZS5jcHAKaW5kZXggYjVkZWEyMWU5OTVhNzM3ZjAzNmY2NDUzOGMxZmIzZWNiNWU2YmI1
NS4uYTEzZTUxNDYwZjZiYjlmODBlZjNkMWE4NDJlZmMwYjlmNDQ1OTBjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6aW5pdGlhbGl6
ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUMKICAgICBtX2Zh
Y3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6SW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnMsIHBlcnNpc3Rl
bnRTdGF0ZSksIFdURk1vdmUoY2FsbGJhY2spLCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJl
bW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBjYWxsYmFjayhGYWlsZWQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZS5oCmluZGV4IDEwNmJhM2IxMTYxYzhkZjA5ZDcxZGZlNjc5YmEzM2Q0MjMwNzll
OTYuLjJjNzg1MWU0NDBiMDhhNTJhMmFlNzBkYTdlNDE4ODgyZTNjNjE0MzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKIAogICAgIEltcGxlbWVudGF0aW9uVHlwZSBp
bXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5
cGU6OlJlbW90ZTsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0
IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRl
bnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7
Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxi
YWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcm
KSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fY29uZmlndXJhdGlvbi5rZXlTeXN0ZW07IH0KICAgICBSZWZQdHI8V2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5jcHAKaW5kZXggYWYwYmFkNGM5MGQ4ZGQ1MTM3NzRhZWY2YTE1Yjc3YmE4OWZjNTA2
NC4uYzc0MGMwNDUwNmZkZWRhYzlmNGNmNTAyYzIwNWE4YTM3ZmNhNDU5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uLmNwcApAQCAtNDksNyArNDksNyBAQCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+
JiYgZgogewogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3Zv
aWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0
eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBp
ZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
LCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFpbGVkKTsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUs
IGNvbnN0IEF0b21TdHJpbmcKICAgICB9LCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlw
ZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVD
YWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9mYWN0b3J5KSB7CiAgICAgICAgIGNh
bGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBG
YWlsZWQpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zCiAgICAg
fQogCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
OjpSZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUpLCBbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0gKEtleVN0YXR1c1ZlY3RvciYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFs
PElQQzo6U2hhcmVkQnVmZmVyQ29weT4mJiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJs
ZSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdl
ID0gc3RkOjpudWxsb3B0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4gcmVhbE1lc3NhZ2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChtZXNz
YWdlICYmIG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKSkKICAgICAgICAgICAgIHJlYWxNZXNzYWdl
ID0gbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAgIGNh
bGxiYWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3ZlKHJlYWxNZXNzYWdlKSwgc3VjY2Vl
ZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oCmluZGV4
IDRmZmU0Y2FjZWNjZGU0M2Q1Y2IxMWUyMzZjYTA0NWFjZGE4M2E3ZWIuLjRlNGNkMmMwMDVjNmIw
MDY1ZjljZGIxODhjNGJjZTBiNWJmYTY2MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaApA
QCAtNTksOCArNTksOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRDbGllbnQoV2Vha1B0cjxX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+JiYgY2xpZW50KSBmaW5hbCB7IG1fY2xp
ZW50ID0gV1RGTW92ZShjbGllbnQpOyB9CiAgICAgdm9pZCBjbGVhckNsaWVudCgpIGZpbmFsIHsg
bV9jbGllbnQgPSBudWxscHRyOyB9Ci0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xv
c2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2Fs
bGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAKaW5kZXggOWEyMTlhNTQ0ZTU1
MzgzZjU0ZTcxZGFiZDM1NGNjNDQwYTQxNDJiOS4uNjI5MjY3OThjNWMxMTMyNGEzMWFhNTBjZGE3
ZWQxZmJmNzRmZTcwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcApAQCAtMjAwLDcgKzIwMCw3
IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxv
bmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplCiAKIC8vIElmIGFsbERhdGFSZWNlaXZlZCBpcyB0
cnVlLCB0aGUgY2FsbGVyIGV4cGVjdHMgZW5jb2RlZERhdGFTdGF0dXMoKSB0byBiZSA+PSBFbmNv
ZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZQogLy8gYWZ0ZXIgdGhpcyBmdW5jdGlvbiByZXR1
cm5zIChpbiB0aGUgc2FtZSBydW4gbG9vcCkuCi12b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6
c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBS
ZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0
aW9uKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaAppbmRleCBlNWNmZTk0ZWNk
M2E5YzA2MDBmYzAwMzIwZmY0MzA2MWM5MGVkNjliLi40MGQzNzM0ZjdhMzIyZThiYWNiOWQxYzBk
ZWE3MDc5ZTJhZDE3ZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKQEAgLTQ1LDcgKzQ1LDcgQEAg
Y2xhc3MgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGIGZpbmFsCiAgICAgOiBwdWJsaWMgV2ViQ29yZTo6
SW1hZ2VEZWNvZGVyCiAgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVJbWFnZURlY29kZXJBVkY+
IGNyZWF0ZShSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBXZWJD
b3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlSW1h
Z2VEZWNvZGVyQVZGPiBjcmVhdGUoUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlciYgbWFuYWdl
ciwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciYgaWRlbnRpZmllciwgV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVJbWFnZURlY29kZXJBVkYo
bWFuYWdlciwgaWRlbnRpZmllciwgbWltZVR5cGUpKTsKICAgICB9CkBAIC04MCw3ICs4MCw3IEBA
IHB1YmxpYzoKICAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCwgV2ViQ29yZTo6U3Vic2FtcGxpbmdMZXZlbCA9IFdlYkNvcmU6OlN1YnNh
bXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IFdlYkNvcmU6OkRlY29kaW5nT3B0aW9ucyYgPSBX
ZWJDb3JlOjpEZWNvZGluZ09wdGlvbnMoV2ViQ29yZTo6RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91
cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykg
ZmluYWw7Ci0gICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlz
QWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZl
ZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCmluZGV4IDQxZDUzODgwMjNkMzkxNDk1
MjE4MzVmNjg4ZGU0ZDQ4ZjY1ZDc2N2UuLjA4MmIzMzY2YzhiYzcxMzBkNzVkNTY5OGE3ZDc5ZTY4
OTJhZDhmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcApAQCAtMzks
NyArMzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKLVJlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IFJlbW90ZUltYWdlRGVjb2RlckFWRk1h
bmFnZXI6OmNyZWF0ZUltYWdlRGVjb2RlcihTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxSZW1vdGVJbWFnZURl
Y29kZXJBVkY+IFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2Rl
cihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBB
bHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJ
ZGVudGlmaWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwogICAgIElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgZGF0YSB9OwpAQCAtMTA4LDcgKzEwOCw3IEBA
IHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6c2V0VXNlR1BVUHJvY2Vzcyhib29s
IHVzZUdQVVByb2Nlc3MpCiAgICAgSW1hZ2VEZWNvZGVyOjppbnN0YWxsRmFjdG9yeSh7CiAgICAg
ICAgIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c3VwcG9ydHNNZWRpYVR5cGUsCiAgICAgICAgIFJl
bW90ZUltYWdlRGVjb2RlckFWRjo6Y2FuRGVjb2RlVHlwZSwKLSAgICAgICAgW3RoaXNdKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKSB7CisgICAgICAgIFt0aGlzXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pIHsKICAgICAgICAgICAg
IHJldHVybiBjcmVhdGVJbWFnZURlY29kZXIoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBn
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgICAgIH0KICAgICB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkZNYW5hZ2VyLmgKaW5kZXggYzIzNzgyYjY1MDRlYzc5YmU0NmUxMjZmNGU1
OTFiM2ZmN2Y2ZGJhOC4uMzYxOGFmZDEyMDk4YjU1NzZiNGRkNGZmYmYzYzA2ZmJhODQyYTc2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkZNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVi
bGljOgogICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uJiBlbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlv
bigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0
ZUltYWdlRGVjb2RlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIFdlYkNvcmU6OkFscGhhT3B0aW9uLCBXZWJDb3JlOjpHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbik7CisgICAgUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlSW1h
Z2VEZWNvZGVyKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OkFscGhhT3B0aW9uLCBXZWJDb3JlOjpHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbik7CiAKICAgICAvLyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50
LgogICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVj
dGlvbiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKaW5kZXggYTUzZjE1N2JlZWJk
N2RiMmU4MWIyZjVlY2JkNjM4MTg2MmE2ODA4YS4uZjFkMWMxMGE2ZTVjM2FiMmI4MTMyM2MwNGRh
YzA1NzI4NmU5ZmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCkBAIC02Miw3ICs2Miw3
IEBAIHN0YXRpYyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgY29udmVydFRvU2hhcmVkQnVmZmVyQ29w
eShUIGFycmF5KQogewogICAgIGlmICghYXJyYXkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAg
cmV0dXJuIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVM
ZW5ndGgoKSkgfTsKKyAgICByZXR1cm4geyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUo
YXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkgfTsKIH0KIAogc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb24+IFJlbW90ZUxlZ2FjeUNETVNlc3Npb246OmNyZWF0
ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+IGZhY3RvcnksIFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb25JZGVudGlmaWVyJiYgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGUuY3BwCmluZGV4IDk2NmZjOTNiNzdhZmFhM2U2MjA4ZDdhYmE1YWVkMmM3YTk0Yzc0YjIuLjAw
NWEzN2NjMjZlYzRjMDkwMWJmNGYzNzEyMjM4NjVkZTJkMTY2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQ
cml2YXRlUmVtb3RlLmNwcApAQCAtNzgsNyArNzgsNyBAQCBTb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlOjp+U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZSgpCiAgICAgbV9ncHVQcm9jZXNzQ29ubmVj
dGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVt
b3RlU291cmNlQnVmZmVySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAotdm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjphcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgZGF0YSkKIHsKICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggMzYwMTc1YmZiZTlk
MWFmODNlZDU3OTEzNzNiNzc1ZWU3NTBhYzdjYy4uZWE1ZmEzZWMzNmMyYjg1OWVlNTc4Y2NkMGUw
MzQ4YzczY2I4NmQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKQEAgLTcyLDcgKzcy
LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCiAg
ICAgdm9pZCBzZXRBY3RpdmUoYm9vbCkgZmluYWw7Ci0gICAgdm9pZCBhcHBlbmQoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBhcHBlbmQoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWJvcnQoKSBmaW5h
bDsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRG
cm9tTWVkaWFTb3VyY2UoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAppbmRleCAxMWI0
YTg2ZTQ4NTJmNmMyMDYxZmEzZmM5YWYyOWY4ODk5ZjRlYjlmLi5iNDA4OWZkMzU0OGM5N2YxN2Zj
MmI5ZmIwMDI3ODBkNjQzY2YyM2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCkBAIC0xNjUs
MTAgKzE2NSwxMCBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzdG9yYWdlQ2hhbmdlZChT
aGFyZWRNZW1vcnkqIHN0b3JhZ2UsIGNvbnN0IFdlYkNvcmU6OgogICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6QXVkaW9TYW1wbGVzU3RvcmFnZUNo
YW5nZWQgeyBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgZGF0YVNp
emUgfSwgZm9ybWF0LCBmcmFtZUNvdW50IH0sIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgTWVk
aWFSZWNvcmRlclByaXZhdGU6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJs
ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpmZXRj
aERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6RmV0Y2hEYXRhIHsgfSwgW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1pbWVUeXBlID0gbWltZVR5cGUoKV0o
YXV0byYmIGRhdGEsIGRvdWJsZSB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKGRhdGEuc2l6ZSgpKQogICAgICAgICAgICAgYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpLCBtaW1lVHlwZSwgdGltZUNvZGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFS
ZWNvcmRlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01l
ZGlhUmVjb3JkZXJQcml2YXRlLmgKaW5kZXggMzAzYTU0Zjc2ZjE4NWU5NjQ1NGVmOWY1YmI0NjFm
MjhlMTI2Nzg2ZC4uNTc2ZmQxYzZlOTdjMGNhZDhjYmZlYzk0ZTNiZDM2MzMwNzZlNDRlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRl
clByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRp
YVJlY29yZGVyUHJpdmF0ZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgLy8gV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGUKICAgICB2b2lkIHZpZGVvU2FtcGxl
QXZhaWxhYmxlKFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiwgV2ViQ29yZTo6VmlkZW9TYW1wbGVNZXRh
ZGF0YSkgZmluYWw7Ci0gICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBk
b3VibGUpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmKSBmaW5hbDsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmco
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0UmVjb3Jk
aW5nKFN0YXJ0UmVjb3JkaW5nQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBhdWRpb1NhbXBs
ZXNBdmFpbGFibGUoY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBjb25zdCBXZWJDb3JlOjpQbGF0Zm9y
bUF1ZGlvRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXpl
X3QpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNs
aWVudC5oCmluZGV4IDA2NzNmNzRkZGZiNDhlNWJkZjQzOGNkOTBiZTM3OTRlZWUyMDkxYmIuLjAz
NTNhYWJmN2Q0YjkyNWFhMmYxNTYyZDU3M2FhZjMwOTNjODNiYzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKQEAgLTMxLDkgKzMxLDkgQEAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIE5vZGU7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBzdHJ1Y3QgU2lt
cGxlUmFuZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuaAppbmRleCBhMDYzNTIwNDMzNWIzYWIwZTZkZmIwYzY3Nzc2N2Y0Mjhl
OGE3N2UyLi4xODBiMTExMWVjZjAxMTMyODA5MjY2YTFiY2UyN2QyNjBlNGZhMDBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgK
QEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgRE9NV2luZG93RXh0ZW5zaW9uOwogY2xhc3MgRE9NV3Jh
cHBlcldvcmxkOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+UGFnZUxvYWRlckNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxs
TG9hZFVSTFJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgQVBJOjpPYmplY3QqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWREYXRh
UmVxdWVzdChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6
U3RyaW5nJiwgY29uc3QgV1RGOjpVUkwmLCBBUEk6Ok9iamVjdCopIHsgfQorICAgIHZpcnR1YWwg
dm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25z
dCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpVUkwmLCBBUEk6
Ok9iamVjdCopIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYsIFJlZlB0cjxBUEk6
Ok9iamVjdD4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJG
cmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOGQ1MjRiNTI1YzZlN2EwY2M2YmRlNWU4
MGE0N2MxNzFlMzQxNDY4Yy4uM2Y0MWIxZjMzOGZhNDQ0NzQ5MDc0ODE4OWJiODk5NTFjZjFiMTcy
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAK
QEAgLTY1LDE1ICs2NSwxNiBAQCBzdGF0aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVmZmVyKHVuc2ln
bmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZl
cio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsKIH0KIAotdm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFn
ZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUs
IGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKK3ZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBh
Z2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhKQogewogICAgIGlmICghbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPEFQSTo6RGF0YT4gZGF0YTsKICAgICBpZiAoc2hh
cmVkQnVmZmVyKSB7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+cmVmKCk7Ci0gICAgICAgIGRhdGEg
PSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKilz
aGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRC
dWZmZXIsIHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IHNo
YXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29udGlndW91c0J1ZmZlci0+
cmVmKCk7CisgICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChj
b25zdCB1bnNpZ25lZCBjaGFyKiljb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGNvbnRpZ3VvdXNC
dWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgY29udGlndW91c0J1ZmZlci5wdHIo
KSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCh0b0FQSSgmcGFn
ZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgpKSwgdG9BUEkoTUlNRVR5cGUuaW1w
bCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRvVVJMUmVmKHVucmVhY2hhYmxlVVJM
LnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAppbmRl
eCAzNmJkOTgwYjJmYWExYWY0NWFjMzEwNmViMDFlOWYzNzZiYTEzYWNmLi44NjNiZGFiNjI4NGNh
M2FhZDJmOWQ1ZmZmNWZkNjhlYWI4YjJiNzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBleHBs
aWNpdCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQoY29uc3QgV0tCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50QmFzZSopOwogCiAgICAgdm9pZCB3aWxsTG9hZFVSTFJlcXVlc3QoV2ViUGFnZSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgVVJMJiwgQVBJOjpPYmplY3QqKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25z
dCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgVVJMJiwgQVBJOjpPYmpl
Y3QqKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZShXZWJQYWdlJiwgV2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFt
ZShXZWJQYWdlJiwgV2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVs
L21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQppbmRleCBlNTI0ZDhlMWIw
MTdhYThlNWUwM2I4OTJkOTJiNzU4OTRjNThmMzc0Li5hNzg0ZWMzODhiMjI1MjRjYzBkYTYzMjc4
ZTVlNzU5MTM3ZGNmNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9k
ZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJN
YWMubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVyTWFjOjpjcmVhdGVGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBpZiAo
ZmlsZSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmls
ZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5z
aXplKCkpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRh
dGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUo
KSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogICAgIG1fZmlsZVBhdGggPSBm
aWxlUGF0aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDk0ZDlkMmNjM2ViMjg4
MGNkY2YyMmMwNzJhMzlhOTg5NTVmZDQ0MzAuLjk3NTZmNTE5MjBkNjRjNDJjZGMwMDY4MTE1Mjc3
ZWIxMTNkYjdkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjgzLDcgKzI4Myw3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKICAgICAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZm
ZXIpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZlciBm
cm9tIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVxdWVz
dC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gY3JlYXRlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJj
ZSBoYW5kbGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAy
NTk0NDk0MjM4NTVmZWQzYWFhYWI0MTQ4MTlmODk1MWEzYjhiN2ZmLi4zMTBmY2E3ODc1YzMyYzNj
ZDc0NzhkYjY0ZjU5YWMyY2Y1MDE2MzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNTUsNyArMTU1LDcg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib28KICAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShtX2NvcmVMb2FkZXItPmZyYW1lKCks
IHJlc3BvbnNlKSkgewogICAgICAgICBhdXRvIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIg
PSBtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9s
bGVyLmJlZ2luSW50ZXJjZXB0aW5nUmVzcG9uc2UoaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmll
cik7Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVz
cG9uc2UobV9jb3JlTG9hZGVyLT5mcmFtZSgpLCByZXNwb25zZSwgaW50ZXJjZXB0ZWRSZXF1ZXN0
SWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpbnRlcmNl
cHRlZFJlcXVlc3RJZGVudGlmaWVyLCBwb2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShwb2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgaW5zcGVjdG9yUmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG92ZXJyaWRl
RGF0YSkgbXV0YWJsZSB7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6
aW50ZXJjZXB0UmVzcG9uc2UobV9jb3JlTG9hZGVyLT5mcmFtZSgpLCByZXNwb25zZSwgaW50ZXJj
ZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyLCBwb2xpY3lEZWNpc2lvbkNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShwb2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyKV0oY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgaW5zcGVjdG9yUmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGEpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCFt
X2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSB7CiAgICAgICAgICAg
ICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTog
bm90IGNvbnRpbnVpbmcgaW50ZXJjZXB0IGxvYWQgYmVjYXVzZSBubyBjb3JlTG9hZGVyIG9yIG5v
IElEIik7CiAgICAgICAgICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmNvbnRpbnVlUmVz
cG9uc2UoaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllcik7CkBAIC0yOTUsMTEgKzI5NSwxMSBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVh
YmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZAogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3Mp
IFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UgZm9yICclcyciLCBtX2NvcmVM
b2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgV0VCUkVTT1VSQ0VM
T0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZToiKTsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJ
blNoYXJlZEJ1ZmZlcigpOwogCiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gY3JlYXRlIGJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIHNlbnQgZnJv
bSB0aGUgbmV0d29yayBwcm9jZXNzLiIpOwotICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxF
QVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiBVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZl
ciIpOworICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJl
c291cmNlOiBVbmFibGUgdG8gY3JlYXRlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIiKTsKICAgICAg
ICAgaWYgKGF1dG8qIGZyYW1lID0gbV9jb3JlTG9hZGVyLT5mcmFtZSgpKSB7CiAgICAgICAgICAg
ICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCiAgICAgICAgICAgICAgICAgcGFnZS0+
ZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShXZWJDb3JlOjpE
aWFnbm9zdGljTG9nZ2luZ0tleXM6OmludGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25v
c3RpY0xvZ2dpbmdLZXlzOjpjcmVhdGVTaGFyZWRCdWZmZXJGYWlsZWRLZXkoKSwgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlOjpObyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLmgKaW5kZXggNDJkZTQ2MTQxOTc3OGI3YzQ1MGZjYTFlYjAzN2MxY2U5
N2QyZDYzMS4uYTdmNDVjODQwMWIyZmQyZjg3MGUzNjc4YzU4ZmMzMTBjMmUxZjI0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAt
MjA3LDcgKzIwNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNo
YW5nZWQoYm9vbCkgZmluYWwgeyB9CiAgICAgYm9vbCBnZXRGb3JtVmFsdWUoU3RyaW5nJiBmb3Jt
VmFsdWUpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBoYW5kbGVTY3JvbGwoV2Vi
Q29yZTo6U2Nyb2xsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSkgZmluYWw7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNv
bnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBs
aXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCB3aWxsRGV0YWNoUmVuZGVy
ZXIoKSBmaW5hbDsKICAgICBib29sIHBsdWdpbkhhbmRsZXNDb250ZW50T2Zmc2V0Rm9yQWNjZXNz
aWJpbGl0eUhpdFRlc3QoKSBjb25zdCBmaW5hbDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGQyM2FiYjllNjUxMWIx
M2JiZDUyM2FmNDUxZjQ0MTc4NzNhNmMxZTAuLmQ0N2YzMmI3ZDQ5MTk1NmJkY2U3N2JmZTZmMTVj
YTc4NjViZmQxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5tbQpAQCAtMjU1Miw3ICsyNTUyLDcgQEAgdm9pZCBQREZQbHVnaW46Om5v
dGlmeURpc3BsYXlNb2RlQ2hhbmdlZChpbnQpCiAgICAgdXBkYXRlU2Nyb2xsYmFycygpOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQREZQbHVnaW46OmxpdmVSZXNvdXJjZURhdGEoKSBjb25z
dAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBERlBsdWdpbjo6bGl2ZVJlc291cmNl
RGF0YSgpIGNvbnN0CiB7CiAgICAgTlNEYXRhICpwZGZEYXRhID0gbGl2ZURhdGEoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCA4OGY0NWNlNTFjZTMx
ZGYwYzViM2I3NTg2MjM2YzNmMGQ5YzkzYWQzLi41OGQ3MGEzOWExNmQ2YTRjMGU4YjBjYTlkMDNh
YzNkMzdhZWRmY2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4u
aApAQCAtNjEsNyArNjEsNyBAQCBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFJlY3Q7CiBjbGFz
cyBJbnRTaXplOwogY2xhc3MgU2Nyb2xsYmFyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yODgs
NyArMjg4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBjb252
ZXJ0VG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnRJbkxvY2FsQ29vcmRp
bmF0ZXMpIGNvbnN0OwogCi0gICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCA9IDA7
CiAKICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZDU0ZjI3ZjA3MDkxNDdlOWVkZWMw
NmRlNThjMWU4Y2MxMjMxYTY3Ny4uN2ZiMjBjNTkyZGJmYTA5NmUzOGJjMTY4NzAzNzM4Y2I4ZjQw
N2M5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKQEAgLTI4OSw2ICsyODksNyBAQCBQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KEhUTUxQbHVn
SW5FbGVtZW50JiBwbHVnaW5FbGVtZW50LCBSZWY8UGx1Z2luPiYmIHBsdWdpbiwgYwogICAgICwg
bV93ZWJQYWdlKHdlYlBhZ2UobV9wbHVnaW5FbGVtZW50LmdldCgpKSkKICAgICAsIG1fcGFyYW1l
dGVycyhwYXJhbWV0ZXJzKQogICAgICwgbV9wZW5kaW5nVVJMUmVxdWVzdHNUaW1lcihSdW5Mb29w
OjptYWluKCksIHRoaXMsICZQbHVnaW5WaWV3OjpwZW5kaW5nVVJMUmVxdWVzdHNUaW1lckZpcmVk
KQorICAgICwgbV9tYW51YWxTdHJlYW1EYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVp
bGRlcj4oKSkKIHsKICAgICBtX3dlYlBhZ2UtPmFkZFBsdWdpblZpZXcodGhpcyk7CiB9CkBAIC00
MDMsOSArNDA0LDYgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1faXNJbml0aWFs
aXplZCkgewogICAgICAgICBBU1NFUlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJl
YW1TdGF0ZTo6SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAgIGlmICghbV9tYW51YWxTdHJl
YW1EYXRhKQotICAgICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKLQogICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPmFwcGVuZChieXRlcywgbGVu
Z3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQzNyw3ICs0MzUsNyBAQCB2b2lkIFBs
dWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQog
ICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtU3RhdGUg
PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQ7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtRXJy
b3IgPSBlcnJvcjsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKKyAgICAg
ICAgbV9tYW51YWxTdHJlYW1EYXRhLT5yZXNldCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC05MjYsMTEgKzkyNCwxMSBAQCB2b2lkIFBsdWdpblZpZXc6OndpbGxEZXRhY2hSZW5kZXJl
cigpCiAgICAgbV9wbHVnaW4tPndpbGxEZXRhY2hSZW5kZXJlcigpOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29u
c3QKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pIHsKLSAgICAgICAg
aWYgKG1fbWFudWFsU3RyZWFtRGF0YSAmJiBtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0
cmVhbVN0YXRlOjpGaW5pc2hlZCkKLSAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURh
dGE7CisgICAgICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRl
OjpGaW5pc2hlZCkKKyAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGEtPmdldCgp
OwogCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTEyNDIsMTAgKzEyNDAsMTAg
QEAgdm9pZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQogICAgIG1hbnVhbExv
YWREaWRSZWNlaXZlUmVzcG9uc2UobV9tYW51YWxTdHJlYW1SZXNwb25zZSk7CiAKICAgICAvLyBE
ZWxpdmVyIHRoZSBkYXRhLgotICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEpIHsKLSAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogKm1fbWFudWFsU3RyZWFtRGF0YSkKKyAgICBpZiAo
IW1fbWFudWFsU3RyZWFtRGF0YS0+aXNOdWxsKCkpIHsKKyAgICAgICAgYXV0byBidWZmZXIgPSBt
X21hbnVhbFN0cmVhbURhdGEtPnRha2UoKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVt
ZW50IDogYnVmZmVyLmdldCgpKQogICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRh
KGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7Ci0gICAg
ICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKG1fbWFu
dWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDIxMjZlYjhlZGI1
NTkzODZiMzQyMjVlYjJiZDViZmNkNjgwMjNmMjMuLmQxNTNhMjljYTE0YTkwZTMyMjdhODkxZTNl
ZWY1ZTRlNzk3MzUxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAKIC8vIEZJWE1FOiBFdmVudHVhbGx5IHRoaXMgc2hvdWxkIG1vdmUgdG8g
V2ViQ29yZS4KIApAQCAtMTE1LDcgKzExNiw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxk
QWxsb3dTY3JpcHRpbmcoKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxp
dmVSZXNvdXJjZURhdGEoKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIGJvb2wgcGVyZm9ybURp
Y3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAg
ICBTdHJpbmcgZ2V0U2VsZWN0aW9uRm9yV29yZEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludCYpIGNvbnN0OwogICAgIGJvb2wgZXhpc3RpbmdTZWxlY3Rpb25Db250YWluc1BvaW50KGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBjb25zdDsKQEAgLTI1Miw3ICsyNTMsNyBAQCBwcml2
YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX21hbnVhbFN0cmVhbVJlc3Bv
bnNlOwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgbV9tYW51YWxTdHJlYW1FcnJvcjsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAg
VW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fbWFudWFsU3RyZWFtRGF0
YTsKIAogICAgIC8vIFRoaXMgc25hcHNob3QgaXMgdXNlZCB0byBhdm9pZCBzaWRlIGVmZmVjdHMg
c2hvdWxkIHRoZSBwbHVnaW4gcnVuIEpTIGR1cmluZyBwYWludGluZy4KICAgICBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBtX3RyYW5zaWVudFBhaW50aW5nU25hcHNob3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IGZlZThmZWE3YmNjOGQ1OWMwN2UzYzViYTRk
NjA5NTUyYTRkNjI4YmYuLmIwNGNjY2YxMTNlNDkyOGZhNjYzODNiZDI0MzFkYjg3NDg1M2NjYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC03MSwxNiArNzEs
MTUgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3Bv
bnNlLCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1fZmV0Y2hJ
ZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpk
aWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlKSB7Ci0gICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVk
QnVmZmVyPj4obV9yZXNwb25zZURhdGEpKQotICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBi
dWZmZXItPmNvcHkoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RkOjpnZXQ8UmVmPFNo
YXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFyZWRCdWZmZXJCdWlsZGVyPiht
X3Jlc3BvbnNlRGF0YSkpCisgICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIoKTsKKyAgICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNw
b25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0yMDYsOCArMjA1LDggQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCiAgICAgc3dpdGNoT24obV9yZXNwb25z
ZURhdGEsIFt0aGlzXShzdGQ6Om51bGxwdHJfdCYpIHsKICAgICAgICAgaWYgKG1fZGlkRmluaXNo
KQogICAgICAgICAgICAgZGlkRmluaXNoKCk7Ci0gICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIHsKLSAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsK
KyAgICB9LCBbdGhpc10oY29uc3QgU2hhcmVkQnVmZmVyQnVpbGRlciYgYnVmZmVyKSB7CisgICAg
ICAgIGRpZFJlY2VpdmVEYXRhKCpidWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAobV9kaWRGaW5p
c2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10oUmVmPEZvcm1EYXRh
PiYgZm9ybURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAppbmRleCBi
MzQ3Y2FkMmFiNWY1NzFiMWEwZTIwNzIwODA0MzY3ZDc3MDE4NjAwLi42YjBhNDE3Y2YwZDNhZTBk
N2I4OTNhOTk4NjgzYWJmMmJjNGE0ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaExvYWRlckNs
aWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC00OSw3ICs1MCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZp
bmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGFBbmRG
aW5pc2goUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNo
KCkgZmluYWw7CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxC
bG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX25lZWRzQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07Ci0gICAgc3RkOjp2YXJpYW50
PHN0ZDo6bnVsbHB0cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdlYkNvcmU6
OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNl
RGF0YTsKKyAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXIsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CiAgICAgYm9vbCBtX2RpZEZpbmlzaCB7IGZh
bHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDgxZTM3OWUzM2QxYTlhY2Rj
ODZlZjVjNGJlMjFhNzI2MGQ5NGQ0OGUuLjdjZmMwM2E4NWQzOWQ4MWYzOTJjMGFhMTMwZjgzZmJk
MmM4MzRmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgYm9v
bCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVz
JiBzdHlsZSwgY29uc3Qgc3RkOjoKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAK
LXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3Ry
aW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHBy
ZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewog
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlckF0dGFjaG1l
bnRJZGVudGlmaWVyRnJvbURhdGEoaWRlbnRpZmllciwgY29udGVudFR5cGUsIHByZWZlcnJlZEZp
bGVOYW1lLCBkYXRhLmdldCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNTA2ZDlmNTQx
MzhkMzdjYjRjNjRlZDQ2MGY1OWE1YzI4ZmU1MjJhNi4uYjA1ODYxODkxZWNjODRjNjM2OGEyMDZj
MjcwMTA2MGY1MDUyZjVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNjUsNyArNjUsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgc2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUoY29uc3QgV2ViQ29y
ZTo6U2ltcGxlUmFuZ2UmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYpIGZpbmFsOwogCiAj
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVu
dElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29u
c3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CisgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVk
RmlsZU5hbWUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
ICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkgZmluYWw7CiAg
ICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpIGZpbmFs
OwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhPiYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IDRiZGJiY2NkM2ZiYzYyMGUwNzU0MTA1Y2VhMDllZGRmMDUxMjBiNmIuLjE0YTA4M2Nh
MjA3YTkwNjNjZjgwYjFlN2U5NjcwYTQ4N2NmNGQzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcApAQCAtMTE4OCw4ICsxMTg4LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICBp
ZiAoIXdlYlBhZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VE
YXRhKCk7Ci0gICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWlu
UmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJl
c291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOworICAgICAgICAgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXIt
Pm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRh
UmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNl
RGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVy
KGxvYWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmNDFh
NzBlZjViYjZjMGVjZThiZDg2Mjc0MTE2MDFjZjczMGU2MmExLi40YThiZWU1N2ZkYjFmZmNkZWYw
MDg5ZmE2NWU5NzUzNzUwZDI1MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cApAQCAtMjA5LDcgKzIwOSw3IEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRU
eXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjCiAgICAgcmV0dXJu
IG5ld0NoYW5nZUNvdW50OwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0
QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqIGNvbnRleHQpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVy
Rm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsK
ICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgKaW5kZXggZTI4MDk5NjNmNGY1MDY4MWI3ZDAxZjQxYTY4NTMxYWI3MzIxNGZiMC4u
MWZmODNlMTFiYzE3ODlhYWMwZjkwMGM5M2RjMjJmYmYyMzllYTJiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogCiAgICAgaW50NjRf
dCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldEJ1ZmZlckZv
clR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRDb2xvcihjb25z
dCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRTdHJp
bmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNw
cAppbmRleCAwN2IxNjdlMGVlZWU3Njg4NzViMDM5ZGZhNTlmNWZkMTNjNzU0ZTEwLi5kNDE1OTA0
YzcxYjFjMGM3MmEzZTE3Y2Y3YjM0NTIwYWEyNzkwMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQCBXZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUs
IGNvbnN0IFN0cgogICAgIDogbV9maWxlTmFtZSB7IGZpbGVOYW1lIH0KICAgICAsIG1fdXRpIHsg
dXRpIH0KICAgICAsIG1fcGFnZUlEIHsgcGFnZUlEIH0KLSAgICAsIG1fYnVmZmVyIHsgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX2J1ZmZlciB7IG1ha2VVbmlxdWVSZWY8U2hhcmVk
QnVmZmVyQnVpbGRlcj4oKSB9CiB7CiB9CiAKIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6On5XZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFdlYlByZXZpZXdMb2FkZXJD
bGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lk
IFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gd2ViUGFnZSA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLndlYlBhZ2UobV9wYWdlSUQpOwogICAgIGlmICghd2ViUGFnZSkKQEAgLTY5
LDEzICs2OSwxMiBAQCB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRp
bmcoKQogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+
ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXIuZ2V0
KCkpOwotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fYnVmZmVyLT50YWtlKCkuZ2V0KCkpOwog
fQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZhaWwoKQogewotICAgIG1fYnVm
ZmVyLT5jbGVhcigpOworICAgIG1fYnVmZmVyLT5yZXNldCgpOwogfQogCiB2b2lkIFdlYlByZXZp
ZXdMb2FkZXJDbGllbnQ6OmRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuaAppbmRleCAwNDkyY2VlYzJmOWI5Y2Q4NTM4Mzg0ODRmYmMyNmMwN2NiNTNkYTg3
Li5jYzNiMjRiNzI5YjIxOGI4MGQzN2ExMmNkN2ZhYzNkZmE5YmVkMWFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMjksOCArMjksMTMgQEAKIAogI2luY2x1
ZGUgPFdlYkNvcmUvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNo
YXJlZEJ1ZmZlckJ1aWxkZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJG
cmFtZTsKQEAgLTQ1LDcgKzUwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdlYlByZXZp
ZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGks
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwo
KSBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTU0LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBjb25z
dCBTdHJpbmcgbV9maWxlTmFtZTsKICAgICBjb25zdCBTdHJpbmcgbV91dGk7CiAgICAgY29uc3Qg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7Ci0gICAgUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1
aWxkZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGll
bnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW0KaW5kZXggYTY0YzZhOGIzYzY5NWUxNzMzNjQzMzZiY2IwZjY4ZGJk
ZDljMmQyMS4uZTFlMGU2MTEyYTJkZWRjM2I4YmI2MzA5ODUzNTM3NmVmNDNhZDUxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFn
Q2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgV2ViRHJh
Z0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIEVsZW1lCiAKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IGltYWdlLT5yZXNw
b25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBp
bWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CisgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAgICAgc2l6ZV90IGltYWdlU2l6ZSA9IGltYWdl
QnVmZmVyLT5zaXplKCk7CiAKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1l
bW9yeTo6Y29weUJ1ZmZlcigqaW1hZ2VCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDliZDRjZDJkMGNiMTAzYjQ1YWE4ZTZjMWQ0
MjdjMGIxN2JmNWVkMTMuLmQ4OGY0NGNmY2RlNWUxNWY2NmMxMjRiNDBmNWI1NDM1Yjk0Njk3YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAg
LTM0MCwxMCArMzQwLDEwIEBAIFN0cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29uc3QKICAgICBE
b2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBtX2NvcmVGcmFtZS0+bG9hZGVyKCkuYWN0
aXZlRG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0
YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFp
blJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWlu
UmVzb3VyY2VEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgcmV0
dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogU3RyaW5n
IFdlYkZyYW1lOjpjb250ZW50c0FzU3RyaW5nKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGIzYjBmYmNjNzZlNjBmNjc4YmYxYzZk
ZTUyMTMwNTk4Y2IyZDAwODguLmFjZTIzMTU2NjJlMjBmNmYwNDA4NzVjZTU0N2U1OWRhZjFmZTk4
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBA
IC0xNzM4LDcgKzE3MzgsNyBAQCBOT19SRVRVUk4gdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdFdh
aXRpbmdGb3JQcm9jZXNzTGF1bmNoKExvYWRQYXJhbWV0ZXJzJiYsIFVSTAogICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYm
IHdlYnNpdGVQb2xpY2llcywgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzaGFyZWRCdWZmZXIsIFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgY29uc3Qg
VVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBzdGQ6Om9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNlc3Npb25IaXN0
b3J5VmlzaWJpbGl0eSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5KQordm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2
aWdhdGlvbklELCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBv
bGljaWVzLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBzaGFyZWRCdWZmZXIsIFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgY29uc3Qg
VVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBzdGQ6Om9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNlc3Npb25IaXN0
b3J5VmlzaWJpbGl0eSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5KQogewogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBz
ZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4sICZtX21haW5GcmFtZS5nZXQoKSk7CkBAIC0xNzUzLDcgKzE3NTMsNyBAQCB2b2lkIFdlYlBh
Z2U6OmxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCBzaAogCiAgICAgLy8gTGV0IHRoZSBJbmplY3RlZEJ1bmRsZSBrbm93IHdlIGFy
ZSBhYm91dCB0byBzdGFydCB0aGUgbG9hZCwgcGFzc2luZyB0aGUgdXNlciBkYXRhIGZyb20gdGhl
IFVJUHJvY2VzcwogICAgIC8vIHRvIGFsbCB0aGUgY2xpZW50IHRvIHNldCB1cCBhbnkgbmVlZGVk
IHN0YXRlLgotICAgIG1fbG9hZGVyQ2xpZW50LT53aWxsTG9hZERhdGFSZXF1ZXN0KCp0aGlzLCBy
ZXF1ZXN0LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHN1YnN0aXR1dGVEYXRhLmNvbnRlbnQo
KSksIHN1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCksIHN1YnN0aXR1dGVEYXRhLnRleHRFbmNvZGlu
ZygpLCBzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCksIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAg
ICBtX2xvYWRlckNsaWVudC0+d2lsbExvYWREYXRhUmVxdWVzdCgqdGhpcywgcmVxdWVzdCwgY29u
c3RfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4oc3Vic3RpdHV0ZURhdGEuY29udGVudCgp
KSwgc3Vic3RpdHV0ZURhdGEubWltZVR5cGUoKSwgc3Vic3RpdHV0ZURhdGEudGV4dEVuY29kaW5n
KCksIHN1YnN0aXR1dGVEYXRhLmZhaWxpbmdVUkwoKSwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogCiAg
ICAgLy8gSW5pdGF0ZSB0aGUgbG9hZCBpbiBXZWJDb3JlLgogICAgIEZyYW1lTG9hZFJlcXVlc3Qg
ZnJhbWVMb2FkUmVxdWVzdCgqbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLCByZXF1ZXN0LCBzdWJz
dGl0dXRlRGF0YSk7CkBAIC0zODYxLDcgKzM4NjEsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNvdXJj
ZUZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KAogCiB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyOwogICAgIGlmIChXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkgewogICAgICAgICBpZiAoUGx1Z2luVmlldyogcGx1
Z2luVmlldyA9IHBsdWdpblZpZXdGb3JGcmFtZShmcmFtZS0+Y29yZUZyYW1lKCkpKQogICAgICAg
ICAgICAgYnVmZmVyID0gcGx1Z2luVmlldy0+bGl2ZVJlc291cmNlRGF0YSgpOwpAQCAtMzg3Nyw3
ICszODc3LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmQKICAgICBjYWxsYmFjayhkYXRhUmVm
ZXJlbmNlKTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZv
ckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkKK3N0YXRpYyBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZy
YW1lLCBjb25zdCBVUkwmIHJlc291cmNlVVJMKQogewogICAgIERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWxvYWRlcikK
QEAgLTM4OTIsNyArMzg5Miw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJj
ZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyCiAKIHZvaWQgV2Vi
UGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBj
b25zdCBTdHJpbmcmIHJlc291cmNlVVJMU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmIGNh
bGxiYWNrKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CiAgICAgICAgIFVSTCBy
ZXNvdXJjZVVSTChVUkwoKSwgcmVzb3VyY2VVUkxTdHJpbmcpOwogICAgICAgICBidWZmZXIgPSBy
ZXNvdXJjZURhdGFGb3JGcmFtZShmcmFtZS0+Y29yZUZyYW1lKCksIHJlc291cmNlVVJMKTsKQEAg
LTY5NzcsNyArNjk3Nyw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNv
bihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyCiAgICAgaWYgKCFkb2N1
bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAg
ICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihkZWNpc2lvbiwgbG9h
ZElkZW50aWZpZXIudG9JbnRlZ2VyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBpY29uRGF0YSkgbXV0YWJs
ZSB7CisgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNp
b24sIGxvYWRJZGVudGlmaWVyLnRvSW50ZWdlcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGljb25EYXRhKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBpY29uRGF0
YSB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAppbmRleCAzNWMyM2ZlNjAyZWI0ZjkwNDFhYmIwYTk4N2U3ZDJmMGNhMGY4YjNlLi5mNmRk
ZDc4ZWExOTg4ZTFmY2FjOTA3NGJmNTZlN2FiMWJiMWNiNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0yMTYsNyArMjE2LDcgQEAgY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlbGVjdGlvbkRh
dGE7CiBjbGFzcyBTZWxlY3Rpb25HZW9tZXRyeTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNzIFRl
eHRDaGVja2luZ1JlcXVlc3Q7CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247CkBAIC0xMzk2LDcgKzEz
OTYsNyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2b2lkIGRpZFN0YXJ0
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFt
ZSwgY29uc3QgU3RyaW5nJiB1dGkpOwotICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CisgICAg
dm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCByZXF1ZXN0UGFzc3dv
cmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogI2VuZGlmCiAKQEAg
LTE1OTksNyArMTU5OSw3IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJhbWUo
V2ViRnJhbWUqKTsKIAotICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdl
YnNpdGVQb2xpY2llc0RhdGE+JiYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIGNvbnN0
IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPiwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0
b3J5VmlzaWJpbGl0eSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdl
YkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKKyAg
ICB2b2lkIGxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRh
PiYmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgY29uc3QgVVJMJiBm
YWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+LCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNp
YmlsaXR5LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwogCiAgICAgLy8g
QWN0aW9ucwogICAgIHZvaWQgdHJ5Q2xvc2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCmluZGV4IGM5NWMzODQ2MzkyMjE4NGYyNTdhNzE5ZGI1YmE5YTQ4MjlhZWRmMWIuLjg1
ZTY1MTg2OTJlZDYwYzc4OGU3MmE3Y2UzMmYzZjBlMTVjYTc3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0zMjE3LDcg
KzMyMTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3Qg
YWN0aW9uKQogICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxSZW5k
ZXJJbWFnZT4oKmVsZW1lbnQucmVuZGVyZXIoKSkuY2FjaGVkSW1hZ2UoKTsKICAgICAgICAgaWYg
KCFjYWNoZWRJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CisgICAgICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVz
b3VyY2VCdWZmZXIoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVm
ZmVyKCpidWZmZXIpOwpAQCAtNDY4Myw3ICs0NjgzLDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRTdGFy
dExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5h
bWUKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFN0YXJ0TG9hZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWUoZmlsZU5hbWUsIHV0aSkpOwogfQogCi12b2lkIFdlYlBh
Z2U6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgQVNTRVJUKCFidWZmZXIuaXNFbXB0eSgpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpp
bmRleCBlMThkMTBjM2ZjNGYxOGQ3M2EyYTc0MGM1MzMxMzEzNDNmZjMzY2FmLi5jNjFiODUxMmJh
M2NmY2M4OWU0MzViZjk0MzQ0ZGQ3MjkxNzI1YjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMjI4
LDExICsyMjgsNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9G
dWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwogI2lmIEhBVkUoQVZLSVQpCi0jaWYgSEFW
RShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQotICAgIHJldHVybiBtb2RlID09IEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkOwotI2Vsc2UKICAgICByZXR1
cm4gdHJ1ZTsKLSNlbmRpZgogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTI0
Myw3ICsyMzksNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9G
dWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgogCiBib29sIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSgpIGNvbnN0CiB7Ci0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIUhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykK
KyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dl
YlByb2Nlc3NXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNz
V2luLmNwcAppbmRleCBkM2QzOGNhYzQxMjExZDdlMjliNTdmMjQ1MjM2NGUzN2I0MjNjMzFhLi4z
N2YyN2U5NTJkMDcxNzExMjFjYjRmNTQ4N2E4Yjg0YjlmOGE2MzhkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKQEAgLTI4LDcgKzI4LDcgQEAK
IAogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKLVJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKK1Jl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVm
ZmVyKGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCmluZGV4IDFmNTU4NGZhMzg3
ZDc2Y2NlOTRmZjdiNTY5NjhlN2U4MjIwNjA2MDYuLmEyNTU2MGExMGMyODgyZTFhYmQxNzg0NTY5
NDg2ZWExM2VkODk2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1
cHBvcnQvUGluZ0hhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBv
cnQvUGluZ0hhbmRsZS5oCkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHBpbmdMb2FkQ29tcGxldGUoeyB9LCByZXNwb25zZSk7
CiAgICAgfQotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZSosIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCkgZmluYWwgeyBwaW5nTG9hZENv
bXBsZXRlKCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGUqLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50KSBmaW5h
bCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZp
bmFsIHsgcGluZ0xvYWRDb21wbGV0ZShlcnJvcik7IH0KICAgICBib29sIHNob3VsZFVzZUNyZWRl
bnRpYWxTdG9yYWdlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikgZmluYWwgeyByZXR1cm4gbV9z
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXggZWIzOTQxZjI2NmRmMTNjMjhhOTA2
ZWU3ZDE2MWFlMjFlMTc1NDA5MS4uNjM1NWI2ZjkwMzE4MDA1NWNiNjA3YTgwYmU3NzAxMzg0ZDg4
ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0
ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRl
bnNpb25zLm1tCkBAIC0zODgsNyArMzg4LDcgQEAgLSAoTlNEYXRhICopZGF0YVJlcHJlc2VudGF0
aW9uOihCT09MKXJhd0ltYWdlRGF0YQogICAgIGF1dG8qIGRhdGEgPSByYXdJbWFnZURhdGEgPyBj
YWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5kYXRhKCk7CiAgICAgaWYgKCFk
YXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBkYXRhLT5jcmVhdGVOU0RhdGEo
KS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKW1pbWVUeXBlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBhMjU5OGYzMmZiNzYwYTdkODgzYzlmNGNlZWMx
OGNmNTkxZWI4ZWFkLi45NTlkNzQ4YjU2YmUxMDc2YmQ5Nzc5OTIyY2QzNTZkMjFhNjgxNzRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI0OCw3ICsyNDgsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2VuZEgyUGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4
cGVjdGVkPFNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+JiYpPiYmKSBmaW5hbDsKIAog
ICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxX
ZWJDb3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90Pj4mKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaGVk
TG9hZGluZ0ljb24oV2ViQ29yZTo6U2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBmaW5pc2hlZExv
YWRpbmdJY29uKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIAogI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgbV9sb2FkaW5nSWNvbiB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGI4NDlkMmFhYzJhOTNmYmVlNDE3MjlmMjRhODZj
ZGNmNmIxZmUwMTkuLmFhMmNjOTgxNDc0YTEzY2U1MDg0Nzk4OTQyMzY4NDQ5MWM4OGY2ZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0yMDEyLDcgKzIwMTIsNyBAQCBSZWZQdHI8
V2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmNyZWF0ZVByZXZpZXdMbwogICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fZmlsZVBhdGg7
CiAgICAgICAgIFJldGFpblB0cjxOU0ZpbGVIYW5kbGU+IG1fZmlsZUhhbmRsZTsKIAotICAgICAg
ICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZm
ZXIpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGF1dG8gZGF0YUFycmF5ID0gYnVmZmVyLmNyZWF0ZU5TRGF0YUFycmF5KCk7CiAg
ICAgICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBkYXRhQXJyYXkuZ2V0KCkpCkBAIC0yMDk0
LDcgKzIwOTQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25G
b3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcgogICAgICAgICB9CiAKICAgICAg
ICAgbV9sb2FkaW5nSWNvbiA9IHRydWU7Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKHRydWUsIGljb24tPnNlY29uZCwgW3RoaXMsIHdlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH1dIChXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGJ1ZmZlcikgeworICAg
ICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29u
LT5zZWNvbmQsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoV2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtU
aGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGZpbmlzaGVkTG9hZGlu
Z0ljb24oYnVmZmVyKTsKQEAgLTIxMzEsNyArMjEzMSw3IEBAIHN0YXRpYyBOU0ltYWdlICp3ZWJH
ZXROU0ltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTaXplIHNpemUpCiB9CiAjZW5kaWYg
Ly8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZp
bmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBpY29uRGF0YSkKK3ZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpCiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgQVNTRVJUKG1fbG9hZGluZ0ljb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApp
bmRleCAyNGI2OTk3MDZkZjBkNmI3MTkyYWE1MjAyZGU2MWQ4YjFlNTczMmY5Li41MjdmYTU1MjE5
MGJhMDAxNDUxN2ZmZGU3Mzc3MjBiMmU3YTkwYWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgaW50NjRfdCBhZGRUeXBlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKKyAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgaW50NjRfdCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpD
b2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggZmMwNzc2ZTYyZDY2YmU5YWM5
M2Q0ODdkZGZkMzAwYTZkNDA3YzU1My4uMzk4Njg1OWY3MzM4ZTI4NDU3ZWQ0YjE5MGNiYTY3MDUy
MjEwMDI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTU0LDcgKzE1NCw3
IEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkuc2V0VHlwZXMocGFzdGVib2FyZFR5cGVzKTsKIH0KIAotaW50NjRf
dCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK2ludDY0X3QgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLCBwYXN0ZWJv
YXJkVHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRh
dGFTb3VyY2UubW0KaW5kZXggMjg5YzAwMjliZjkxMzQxOGQwYjI5OWY5MGE0ZDk3MTEzYmM1OGE0
Yi4uODNlODU5MTQzNDVlYTdjYjg0MWQ5OWZkMWZiNjY2ZDhjY2YwMzAyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNDYwLDEw
ICs0NjAsMTAgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKE5TRGF0YSAqKWRhdGEKIHsKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRl
KF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUo
X3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNv
dXJjZURhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIG1haW5SZXNvdXJjZURh
dGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1haW5SZXNvdXJj
ZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9
CiAKIC0gKGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPilyZXByZXNlbnRhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50
YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNl
bnRhdGlvbi5tbQppbmRleCA4MGNkMzBlZjQ2NzYwZTE0YzhlNjdhODhhMjczM2M5ZDQzN2ZhNWQ5
Li4zOGQ3ZTUzMmQ2ZWFhMGNhYzM4ODYyZjNlMGUxNjlmZTI4MTI3N2YxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlv
bi5tbQpAQCAtMjMwLDcgKzIzMCw3IEBAIC0gKEJPT0wpY2FuU2F2ZUFzV2ViQXJjaGl2ZQogLSAo
TlNTdHJpbmcgKilkb2N1bWVudFNvdXJjZQogewogICAgIGlmIChbc2VsZiBfaXNEaXNwbGF5aW5n
V2ViQXJjaGl2ZV0pIHsgICAgICAgICAgICAKLSAgICAgICAgU2hhcmVkQnVmZmVyICpwYXJzZWRB
cmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJz
ZWRBcmNoaXZlRGF0YSgpOworICAgICAgICBhdXRvICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJp
dmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOwog
ICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6cGFy
c2VkQXJjaGl2ZURhdGEgPyBwYXJzZWRBcmNoaXZlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
OiBuaWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKS5hdXRvcmVsZWFzZSgpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0K
aW5kZXggODM4ZTQxMzM4MWE4MDc1YTNkNjI0NTk0NTUyNjdhNWJiYjU1YTk5MS4uMjhkODc1OTI5
Y2NhY2RiOWExMzg4YTgyNmIyZmQ1ZWNmNDZlY2NkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQwLDggKzM1NDAsOCBAQCBzdGF0
aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0oY29uc3QgV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdCYgaAogICAgIH0KIAogICAgIGlmIChhdXRvKiBpbWFnZSA9IGhpdFRl
c3RSZXN1bHQuaW1hZ2UoKSkgewotICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKLSAgICAgICAgICAgIFtpdGVtcyBhZGRPYmpl
Y3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRo
Qnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKKyAg
ICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBpbWFnZS0+ZGF0YSgpKQorICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtb
TlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCld
OwogICAgIH0KIAogICAgIGlmICghaGl0VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKS5pc0VtcHR5
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVz
b3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1t
CmluZGV4IDEyMTk4ZjQwMWVhOGFkNTc4ZGQ3YmRlYWNjMDRkZmI3ZTM0YWM3MzQuLmFhZGNmYmZl
YTM1NmIzN2IwZjUzNzhhZmE4OThiOGVhOTlhZTZhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQpAQCAtMTYzLDIxICsxNjMsMjEgQEAgLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCiAtICh2b2lkKWVu
Y29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWVuY29kZXIKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9
IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UuZ2V0KCk7Ci0gICAgCi0gICAgTlNEYXRhICpkYXRhID0g
bmlsOworCisgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKICAgICBOU1VSTCAqdXJsID0gbmls
OwogICAgIE5TU3RyaW5nICptaW1lVHlwZSA9IG5pbCwgKnRleHRFbmNvZGluZyA9IG5pbCwgKmZy
YW1lTmFtZSA9IG5pbDsKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IG5pbDsKLSAgICAK
KwogICAgIGlmIChyZXNvdXJjZSkgewotICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5j
cmVhdGVOU0RhdGEoKS5nZXQoKTsKKyAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHVybCA9IHJlc291cmNlLT51
cmwoKTsKICAgICAgICAgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAg
dGV4dEVuY29kaW5nID0gcmVzb3VyY2UtPnRleHRFbmNvZGluZygpOwogICAgICAgICBmcmFtZU5h
bWUgPSByZXNvdXJjZS0+ZnJhbWVOYW1lKCk7CiAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2Ut
PnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIH0KLSAgICBbZW5jb2RlciBlbmNvZGVP
YmplY3Q6ZGF0YSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKKyAgICBbZW5jb2RlciBlbmNv
ZGVPYmplY3Q6ZGF0YS5nZXQoKSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKICAgICBbZW5j
b2RlciBlbmNvZGVPYmplY3Q6dXJsIGZvcktleTpXZWJSZXNvdXJjZVVSTEtleV07CiAgICAgW2Vu
Y29kZXIgZW5jb2RlT2JqZWN0Om1pbWVUeXBlIGZvcktleTpXZWJSZXNvdXJjZU1JTUVUeXBlS2V5
XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dGV4dEVuY29kaW5nIGZvcktleTpXZWJSZXNv
dXJjZVRleHRFbmNvZGluZ05hbWVLZXldOwpAQCAtMjAyLDcgKzIwMiw3IEBAIC0gKE5TRGF0YSAq
KWRhdGEKIAogICAgIGlmICghX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSkKICAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5T
RGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2Ut
PmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwog
fQogCiAtIChOU1VSTCAqKVVSTApAQCAtMzY3LDggKzM2Nyw4IEBAIC0gKE5TU3RyaW5nICopX3N0
cmluZ1ZhbHVlCiAgICAgaWYgKCFlbmNvZGluZy5pc1ZhbGlkKCkpCiAgICAgICAgIGVuY29kaW5n
ID0gV2luZG93c0xhdGluMUVuY29kaW5nKCk7CiAgICAgCi0gICAgU2hhcmVkQnVmZmVyKiBjb3Jl
RGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+
ZGF0YSgpIDogbnVsbHB0cjsKLSAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPmRhdGEoKSA6IG51bGxwdHIp
LCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKKyAgICBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNv
cmVSZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2Rl
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXpl
KCkgOiAwKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNl
LmNwcAppbmRleCBiNDA3M2UxMDhiZDVjNzcwZGQ2MmExMDVhZmIwY2NhOWM0ZWYwMzhlLi4wODk3
YzdjMDU0OGQyMGIxZWY0NWUzNWUxYmY4ZDhlNDBlYTVkM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIEhSRVNVTFQgV2Vi
RGF0YVNvdXJjZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0pCiAgICAg
aWYgKCFtX2xvYWRlcikKICAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAotICAgIHJldHVy
biBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRh
KCkpLmNvcHlSZWZUbyhzdHJlYW0pOworICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUlu
c3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCktPm1ha2VDb250aWd1b3VzKCkpLmNv
cHlSZWZUbyhzdHJlYW0pOwogfQogCiBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OnJlcHJlc2VudGF0
aW9uKF9DT01fT3V0cHRyX29wdF8gSVdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24qKiByZXApCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggOTBhNWEwYTEzMzZlZWViYzhhZjVj
ZGVjMWI1YzYyMGU2ODIzMTliNS4uNTU4ZTEzYzdmMWZkYWE1YjEyNWQyMGJlZmU3OTFhMjdmZjc1
NzEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtNTU5LDcgKzU1OSw3
IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRSZXF1ZXN0KF9Jbl9vcHRfIElXZWJVUkxSZXF1ZXN0
KiByZXF1ZXN0KQogICAgIHJldHVybiBTX09LOwogfQogCi12b2lkIFdlYkZyYW1lOjpsb2FkRGF0
YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIg
dGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpCit2b2lkIFdl
YkZyYW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwg
QlNUUiBmYWlsaW5nVVJMKQogewogICAgIFN0cmluZyBtaW1lVHlwZVN0cmluZyhtaW1lVHlwZSwg
U3lzU3RyaW5nTGVuKG1pbWVUeXBlKSk7CiAgICAgaWYgKCFtaW1lVHlwZSkKQEAgLTU4NSwyMSAr
NTg1LDIxIEBAIHZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0CiAKIEhSRVNVTFQgV2ViRnJhbWU6Omxv
YWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBC
U1RSIHRleHRFbmNvZGluZ05hbWUsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAgYXV0byBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
c2hhcmVkQnVmZmVyOwogCiAgICAgU1RBVFNURyBzdGF0OwogICAgIGlmIChTVUNDRUVERUQoZGF0
YS0+U3RhdCgmc3RhdCwgU1RBVEZMQUdfTk9OQU1FKSkpIHsKICAgICAgICAgaWYgKCFzdGF0LmNi
U2l6ZS5IaWdoUGFydCAmJiBzdGF0LmNiU2l6ZS5Mb3dQYXJ0KSB7CiAgICAgICAgICAgICBWZWN0
b3I8Y2hhcj4gZGF0YUJ1ZmZlcihzdGF0LmNiU2l6ZS5Mb3dQYXJ0KTsKICAgICAgICAgICAgIFVM
T05HIHJlYWQ7Ci0gICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxlc3MgY29w
eSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0aGUgU2hhcmVkQnVmZmVyCisg
ICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUg
YmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgogICAg
ICAgICAgICAgLy8gb3IgYWRvcHQgdGhlIFZlY3RvciBvciBzb21ldGhpbmcuCiAgICAgICAgICAg
ICBpZiAoU1VDQ0VFREVEKGRhdGEtPlJlYWQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0
PFVMT05HPihkYXRhQnVmZmVyLnNpemUoKSksICZyZWFkKSkpCi0gICAgICAgICAgICAgICAgc2hh
cmVkQnVmZmVyLT5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0
YUJ1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXIuYXBwZW5kKGRh
dGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBsb2FkRGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIG1p
bWVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIpOworICAgIGxvYWREYXRhKHNo
YXJlZEJ1ZmZlci50YWtlKCksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxw
dHIpOwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaApp
bmRleCA0MzYwNTRmZDlkZGI0N2NhMzI5NmIxMTc5ODE0MzRlYzE4OTdkYWQxLi5mYTljMzgxY2M1
NzNiYTZiMjA5ODhlYWIzNTA4ZWQ5YTMwYThmMTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZy
YW1lLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwogY2xh
c3MgSW50UmVjdDsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0NvbnRleHRSZWY7CkBAIC0xOTUsNyArMTk1
LDcgQEAgcHJpdmF0ZToKICAgICB+V2ViRnJhbWUoKTsKIAogICAgIHZvaWQgbG9hZEhUTUxTdHJp
bmcoX0luXyBCU1RSIHN0cmluZywgX0luXyBCU1RSIGJhc2VVUkwsIF9Jbl8gQlNUUiB1bnJlYWNo
YWJsZVVSTCk7Ci0gICAgdm9pZCBsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
LCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNU
UiBmYWlsaW5nVVJMKTsKKyAgICB2b2lkIGxvYWREYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJT
VFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKTsKICAgICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
SW50UmVjdD4mIGNvbXB1dGVQYWdlUmVjdHMoSERDIHByaW50REMpOwogICAgIHZvaWQgc2V0UHJp
bnRpbmcoYm9vbCBwcmludGluZywgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBwYWdlU2l6ZSwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBvcmlnaW5hbFBhZ2VTaXplLCBmbG9hdCBtYXhpbXVt
U2hyaW5rUmF0aW8sIFdlYkNvcmU6OkFkanVzdFZpZXdTaXplT3JOb3QpOwogICAgIHZvaWQgaGVh
ZGVyQW5kRm9vdGVySGVpZ2h0cyhmbG9hdCosIGZsb2F0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViS2l0RExMLmNwcAppbmRleCA5NjIwMTk4YjRiNTQwYWU2Zjc5NjdmODIzM2M5NDY0YmQyNzc1
ODUxLi4yNzRiN2QyZDZjZjJlYjQ3MWQ3YjhiODk2NTlhZTQ2OWNmOTM0YzkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAKQEAgLTE2NSw4ICsxNjUsOCBAQCB2b2lkIHNodXRE
b3duV2ViS2l0KCkKIH0KIAogLy9GSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIG1vdmluZyB0aGlz
IHRvIGEgbmV3IGZpbGUgZm9yIGNyb3NzLXByb2plY3QgZnVuY3Rpb25hbGl0eQotV0VCS0lUX0FQ
SSBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNv
bnN0IGNoYXIqIG5hbWUpOwotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291
cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQorV0VCS0lUX0FQSSBSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBj
aGFyKiBuYW1lKTsKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2Fk
UmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgaW50IGlkcjsKICAg
ICAvLyB0ZW1wb3JhcnkgaGFjayB0byBnZXQgcmVzb3VyY2UgaWQKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMTBmYzJmZmViMmI1ZGJhMGM1MWIy
YmFhN2M1YWNjNWUwZDY4OThiLi41MGQzMDU0NTU0YWNkNmFiNWNkNDVkYjUzZjNjMDZjZDdiMTQ1
YzIwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTIgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRh
cjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIg
dG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcDoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cu
Y3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRC
dWZmZXIubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5j
cHA6CisKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5
MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVw
ZGF0ZSBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1
b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGlt
bXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDIxLTEyLTAzICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFdlYiBjb250
ZW50IHByb2Nlc3Mgc29tZXRpbWVzIGNyYXNoZXMgdW5kZXIgV2ViUGFnZTo6cG9zaXRpb25JbmZv
cm1hdGlvbigpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxl
U3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3Bw
CmluZGV4IDg1ODNiMjlhZDk5MGMyMmI0NzJjODY5ZWNjZDg2ODI5NjIxYmIwYjQuLmI4NDdkM2E4
MjZiM2Q5ZmZjMDhmNmYzYmUzODI2MGE2YzU5ZGZmMmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyB2b2lk
IGNyZWF0ZVRlc3RGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoZmlsZUhhbmRsZSk7CiB9OwogCi0vLyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRl
c3QgYW5kIFNoYXJlZEJ1ZmZlclRlc3QgYXMgYSBzaW5nbGUgY2xhc3MuCisvLyBGSVhNRTogUmVm
YWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0IGFzIGEg
c2luZ2xlIGNsYXNzLgogY2xhc3MgRmlsZVN5c3RlbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKaW5kZXgg
Yjk4NmEyYTU4ODg0NjViZTE5MjBhNmUwNjY4ZDcwZGIyNDkwNmVhYi4uYWI0NzJlNTBiODM1NzRj
MzAxODI1ZGJiZWVmOTk4M2YyZjQxZDIyZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcApAQCAtMTk4LDcgKzE5OCw3
IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgSXRlbUJ1ZmZlckNsaWVudCkKICAgICAgICAgICAg
IHJldHVybiB7IGdsb2JhbEJ1ZmZlcklkZW50aWZpZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2Jh
bEl0ZW1CdWZmZXJDYXBhY2l0eSB9OwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3Bs
YXlMaXN0SXRlbSkgY29uc3QgZmluYWwKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJiBkaXNwbGF5
TGlzdEl0ZW0pIGNvbnN0IGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gaW5kZXgg
PSBtX2l0ZW1zLnNpemUoKTsKICAgICAgICAgICAgIG1faXRlbXMuYXBwZW5kKHN0ZDo6Z2V0PFN0
cm9rZVBhdGg+KGRpc3BsYXlMaXN0SXRlbSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkZGJmYzFmMmIxODIxY2IxZGZh
YmM4ZTJmNjMyN2IyMTJjN2NhNDY4Li5hMDYzMGJhNjc1YmY4ZTUyYzQ0MGM5ZDE5MjIwNzIyODkw
ZmJkYzFmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNDEsODAgKzQxLDcz
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdG
aWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVu
dHNPZk1pc3NpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5n
X2ZpbGUiKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5n
X2ZpbGUiKSk7CiAgICAgQVNTRVJUX05VTEwoYnVmZmVyKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQorVEVTVF9GKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkK
IHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxM
KGJ1ZmZlcik7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVk
QnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxlbihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOworICAgIEVYUEVDVF9UUlVFKFN0
cmluZyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCi1U
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5
RmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRl
bnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxl
UGF0aCgpKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7
CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5p
c0VtcHR5KCkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0
ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1
ZmZlcik7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29weSA9IGJ1ZmZlci0+Y29weSgpOwor
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7
CiAgICAgRVhQRUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQRUNUX1RSVUUoYnVm
ZmVyLT5zaXplKCkgPT0gY29weS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1
ZmZlci0+ZGF0YSgpLCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNU
X1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xl
YXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitURVNUX0YoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4
aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwo
YnVmZmVyKTsKLSAgICBidWZmZXItPmNsZWFyKCk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+
c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5kYXRhKCkpOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgqYnVmZmVyKTsKKyAgICBi
dWlsZGVyLmFwcGVuZCgiYSIsIDEpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuc2l6ZSgpID09
IChzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwor
ICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgn
YScsIGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKLVRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUp
Ci17Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1RfTlVM
TChidWZmZXIpOwotICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwgMSk7Ci0gICAgRVhQRUNUX1RSVUUo
YnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSAr
IDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkp
KTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSldKTsKLX0KLQotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNy
ZWF0ZUFycmF5QnVmZmVyKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCB0cnlD
cmVhdGVBcnJheUJ1ZmZlcikKIHsKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKICAg
ICBjaGFyIHRlc3REYXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3REYXRhMltdID0gIkdv
b2RieWUiOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwotICAgIHNoYXJlZEJ1
ZmZlci0+YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwotICAgIHNoYXJlZEJ1
ZmZlci0+YXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwotICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVm
ZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHRlc3REYXRhMCwgc3RybGVu
KHRlc3REYXRhMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3RE
YXRhMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikp
OworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50
cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGNoYXIgZXhwZWN0ZWRDb25jYXRlbmF0aW9uW10g
PSAiSGVsbG9Xb3JsZEdvb2RieWUiOwogICAgIEFTU0VSVF9FUShzdHJsZW4oZXhwZWN0ZWRDb25j
YXRlbmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgRVhQRUNUX0VRKDAs
IG1lbWNtcChleHBlY3RlZENvbmNhdGVuYXRpb24sIGFycmF5QnVmZmVyLT5kYXRhKCksIHN0cmxl
bihleHBlY3RlZENvbmNhdGVuYXRpb24pKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCitURVNUX0YoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKIHsKICAg
ICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMCgweDQwMDAsICdhJyk7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IyKDB4
NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+
YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1v
dmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFy
ZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyKFdURk1vdmUodmVjdG9yMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUo
dmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMikpOworICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVB
cnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQwMDBVICsgMHg0MDAwVSArIDB4NDAwMFUs
IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGludCBwb3NpdGlvbiA9IDA7CiAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkgewpAQCAtMTMxLDcgKzEyNCw3IEBAIFRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMp
CiAgICAgfQogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKK1RFU1RfRihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKIHsKICAgICBjaGFyIHRlc3REYXRhW10gPSAi
SGFiaXRhc3NlIGludGVnZXIgZXJvcyB0aW5jaWR1bnQgYSBzY2VsZXJpc3F1ZSEgRW5pbSBlbGl0
PyBTY2VsZXJpc3F1ZSBtYWduaXMsIgogICAgICJldCBtb250ZXMgdWx0cmljZXMgdHJpc3RpcXVl
IGEhIFBpZC4gVmVsaXQgdHVycGlzLCBkYXBpYnVzIGludGVnZXIgcmhvbmN1cyBzb2NpaXMgYW1l
dCBmYWNpbGlzaXMsIgpAQCAtMTUxLDE3ICsxNDQsNTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNvcHkpCiAgICAgIm1hdHRpcyBkaWduaXNzaW0gbWFzc2EgYWMgcHVsdmluYXIgdXJuYSwg
bnVuYyB1dC4gU2FnaXR0aXMsIGFsaXF1ZXQgcGVuYXRpYnVzIHByb2luIGxvcmVtLCBwdWx2aW5h
ciBsZWN0dXMsIgogICAgICJhdWd1ZSBwcm9pbiEgQWMsIGFyY3UgcXVpcy4gUGxhY2VyYXQgaGFi
aXRhc3NlLCByaWRpY3VsdXMgcmlkaWN1bHVzLiI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3Ry
bGVuKHRlc3REYXRhKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXIt
PmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0
RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3Ro
KTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhLCBsZW5ndGgpOwor
ICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBl
bmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5n
dGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2Vn
bWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0
aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBj
bG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBj
bG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCksIHNo
YXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7Ci0gICAgY2xvbmUtPmFwcGVuZCh0
ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNpemUo
KSk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNsb25lID0gYnVpbGRlcjEuY29weSgpOworICAg
IEVYUEVDVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMCwg
bWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1aWxkZXIxLmdldCgpLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKKworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgYnVpbGRlcjIuYXBwZW5kKCpjbG9uZSk7CisgICAg
YnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIEVYUEVDVF9FUShsZW5ndGgg
KiA1LCBidWlsZGVyMi5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjIudGFrZSgp
OworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWZmZXItPnNpemUoKSk7CisgICAgLy8gYnVp
bGRlciBpcyBub3cgZW1wdHkuCisgICAgRVhQRUNUX0VRKDBVLCBidWlsZGVyMi5zaXplKCkpOwor
ICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWls
ZGVyMi5pc0VtcHR5KCkpOworfQorCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Qs
IGJ1aWxkZXIpCit7CisgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWls
ZGVyMS5pc0VtcHR5KCkpOworICAgIGF1dG8gY29weSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IGJ1aWxkZXIxLnRha2UoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5p
c051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBFWFBF
Q1RfTkUoY29weS5wdHIoKSwgYnVmZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZmZXJlbnQgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcgorICAgIEVYUEVDVF9FUShjb3B5LmdldCgpLCBidWZmZXIuZ2V0
KCkpOyAvLyBCdXQgdGhlaXIgY29udGVudCBpcyBpZGVudGljYWwKKworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOwor
ICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuYXBwZW5k
KHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVy
Mi5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAg
YnVpbGRlcjIucmVzZXQoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7Cisg
ICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5lbXB0eSgp
OworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUo
YnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAogc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3Qg
dWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBlY3Rl
ZCkKQEAgLTE3Myw3MCArMjAyLDgwIEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhcioKICAgICAgICAg
RVhQRUNUX0VRKGJ1ZmZlcltpXSwgZXhwZWN0ZWRbaV0pOwogfQogCi1URVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgZ2V0U29tZURhdGEpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Qs
IGdldFNvbWVEYXRhKQogewotICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdiJywgJ2Mn
LCAnZCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9Owot
ICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9OwotICAgIAotICAg
IGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVu
ZChXVEZNb3ZlKHMxKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwotICAgIGJ1
ZmZlci0+YXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7ICdh
JywgJ2InLCAnYycsICdkJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAnZics
ICdnJywgJ2gnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2snLCAn
bCcgfTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFw
cGVuZChXVEZNb3ZlKHMxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMikpOworICAg
IGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIu
dGFrZSgpOwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7Ci0g
ICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaDEgPSBidWZm
ZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNyk7
CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGtsID0g
YnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZmZXIt
PmRhdGEoKTsKLSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAg
YXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIGF1
dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8gZ2gy
ID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoaWprbCA9IGNvbnRpZ3VvdXNC
dWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
MTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsK
LSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdoLnNpemUoKSwgImdoIik7CisgICAgY2hlY2tC
dWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoaC5k
YXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAgIGNoZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBpamts
LnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUoKSwg
ImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwgImFi
Y2RlZmdoaWprbCIpOworICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRhKCksIGdoMi5zaXplKCksICJn
aCIpOwogICAgIGNoZWNrQnVmZmVyKGdoaWprbC5kYXRhKCksIGdoaWprbC5zaXplKCksICJnaGlq
a2wiKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNpemUoKSwgZ2gyLnNpemUoKSk7CisgICAgY2hlY2tC
dWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAgICAg
Y2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIpOwogfQogCi1URVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgaXNFcXVhbFRvKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0
LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8
dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAg
ICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQotICAgICAgICAgICAgYnVmZmVyLT5h
cHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJldHVybiBidWZmZXI7CisgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKKyAgICAgICAgcmV0dXJuIGJ1
aWxkZXIudGFrZSgpOwogICAgIH07Ci0gICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7eydh
JywgJ2InLCAnYycsICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHsgeyAn
YScsICdiJywgJ2MnLCAnZCcgfSB9KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgYnVm
ZmVyMS5nZXQoKSk7CiAKLSAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsnYScs
ICdiJywgJ2MnLCAnZCd9KSk7Ci0gICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIG1ha2VCdWZm
ZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJ319KS5nZXQoKSk7Ci0g
ICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InLCAnYyd9LCB7J2QnfX0pLmdldCgp
LCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVD
VF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdi
JywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0p
LmdldCgpLCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORSht
YWtlQnVmZmVyKHt7J2EnfSwgeydiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJ30sIHsnYSd9
fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKGJ1ZmZl
cjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWludDhfdD4oeyAnYScsICdiJywgJ2Mn
LCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsg
J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisKKyAg
ICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwgeyAnZCcgfSB9
KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9IH0pLmdldCgp
KTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFr
ZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2InLCAnYycg
fSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJyB9
IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5nZXQoKSk7CiB9CiAK
LVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKK1RFU1RfRihGcmFnbWVudGVk
U2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHQx
ID0gezB4MTEsIDB4NSwgMHgxMn07Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAg
IGF1dG8gYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1ZmZl
ci0+dG9IZXhTdHJpbmcoKTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LCAiMTEwNTEyIik7Ci0gICAg
YnVmZmVyLT5jbGVhcigpOworICAgIGJ1aWxkZXIucmVzZXQoKTsKKyAgICBidWZmZXIgPSBidWls
ZGVyLnRha2UoKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0cmluZygpLCAiIik7CiB9
CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0LCByZWFkKQogewogICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQg
PSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LiI7CiAKLSAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVk
QnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRh
ID0gc2hhcmVkQnVmZmVyLnJlYWQoNCwgMyk7CiAgICAgICAgIEVYUEVDVF9FUShkYXRhLnNpemUo
KSwgM3UpOwogICAgICAgICBFWFBFQ1RfRVEoU3RyaW5nKGRhdGEuZGF0YSgpLCAzKSwgIiBpcyIp
OwpAQCAtMjQ5LDE2ICsyODgsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiAg
ICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBz
dHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0
KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7
Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBs
ZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKyAgICBFWFBFQ1RfVFJV
RShidWlsZGVyLmlzTnVsbCgpICYmICFidWlsZGVyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5z
aXplKCksIDB1KTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikK
LSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVY
UEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBj
aGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtp
XSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkp
OworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKQEAg
LTI2Niw3ICszMDYsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKIHRlbXBsYXRl
PCB0eXBlbmFtZSBULCBzaXplX3QgTiA+CiBjb25zdGV4cHIgc2l6ZV90IGFycmF5c2l6ZSggY29u
c3QgVCAoJilbTl0gKSB7IHJldHVybiBOOyB9CiAKLXN0YXRpYyB2b2lkIHJlYWRBbGxDaHVua3Mo
c3RkOjp2ZWN0b3I8U3RyaW5nPiogY2h1bmtzLCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNl
KQorc3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxTdHJpbmc+KiBjaHVua3Ms
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3Ig
PSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKQogewogICAgIFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZidWZmZXIsIHNlcGFyYXRvci51dGY4KCkuZGF0
YSgpKTsKICAgICBTdHJpbmcgY2h1bmsgPSBjaHVua1JlYWRlci5uZXh0Q2h1bmtBc1VURjhTdHJp
bmdXaXRoTGF0aW4xRmFsbGJhY2soaW5jbHVkZVNlcGFyYXRvcik7CkBAIC0yOTksNyArMzM5LDcg
QEAgc3RhdGljIHZvaWQgY2hlY2tEYXRhSW5SYW5nZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRh
dGEsIHNpemVfdCBzdGFydCwgc2l6ZV90IGwKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKIHsKLSAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVk
QnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyIGNodW5rUmVhZGVyKCZzaGFyZWRCdWZmZXIsICJceDEwXHgxMVx4MTIiKTsKICAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IG91dDsKICAgICAgICAgRVhQRUNUX1RSVUUoY2h1bmtSZWFkZXIubmV4
dENodW5rKG91dCkpOwpAQCAtMzEzLDIyICszNTMsMjQgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKICAgICB1aW50OF90IGRhdGFbMjU2XTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKQogICAgICAgICBkYXRhW2ldID0g
aTsKLQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwg
MjU2KTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoZGF0
YSwgMjU2KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IDI1NjsgKytpKSB7CiAgICAgICAgIGNoYXIgYyA9IGk7Ci0gICAgICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKCZjLCAxKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJmMsIDEpOwog
ICAgIH0KLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgp
KTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCiB7
CiAgICAgY29uc3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlzIGEgc2ltcGxlIHRl
c3QuIjsKIAotICAgIGF1dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikg
eworICAgIGF1dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZm
ZXIpIHsKICAgICAgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJnNoYXJl
ZEJ1ZmZlciwgImlzIik7CiAKICAgICAgICAgU3RyaW5nIGNodW5rID0gY2h1bmtSZWFkZXIubmV4
dENodW5rQXNVVEY4U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKCk7CkBAIC0zNTgsMjIgKzQwMCwy
MyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKICAgICBh
dXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxl
bihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBi
dWlsZGVyKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRl
ci50YWtlKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4
dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEp
OwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1w
bGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAgICBzaGFyZWRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXpl
KCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOworICAgIEVYUEVDVF9FUShidWls
ZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2Uo
KSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVu
a3NJbk11bHRpU2VnbWVudCkKIHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0g
IlRoaXMgaXMgdGhlIG1vc3QgcmlkaWN1bG91cyBoaXN0b3J5IHRoZXJlIGlzLiI7Ci0gICAgYXV0
byBjaGVjayA9IFtdKFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBjaGVj
ayA9IFtdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBz
dGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5rczsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhw
ZWN0ZWRDaHVua3MxV2l0aG91dFNlcGFyYXRvcltdID0geyAiVGgiLCAicyAiLCAicyB0aGUgbW9z
dCByIiwgImQiLCAiY3Vsb3VzIGgiLCAic3RvcnkgdGhlcmUgIiwgInMuIiB9OwogICAgICAgICBy
ZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImkiKTsKQEAgLTQwNiwxNyArNDQ5
LDE5IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJ
bk11bHRpU2VnbWVudCkKICAgICB9OwogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhz
aGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoc2ltcGxlVGV4dCwgc3RybGVuKHNp
bXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZl
ci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBFWFBFQ1Rf
RVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRl
ci50YWtlKCkpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSA1KQot
ICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7Ci0gICAgRVhQ
RUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNo
ZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ld
LCA1KTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7
CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCmluZGV4IDliOGIxM2E3
NWQ1MmZmOTUxZWFkMTgxODVkNTZjMzc5MWIyZDdiZWQuLmQwMzQxYTgxZGVkYTcxOWYzNWZjY2Uz
OTQ2NTVlYzI1NWFiOGZiYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi12b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkK
K3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKIHsKICAgICBXVEY6Omlu
aXRpYWxpemVNYWluVGhyZWFkKCk7CiAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBTaGFyZWRCdWZm
ZXJUZXN0OjpTZXRVcCgpCiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiB9CiAK
LXZvaWQgU2hhcmVkQnVmZmVyVGVzdDo6VGVhckRvd24oKQordm9pZCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyVGVzdDo6VGVhckRvd24oKQogewogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90
ZW1wRmlsZVBhdGgpOwogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxl
UGF0aCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyVGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlclRlc3QuaAppbmRleCA2NDAxMTliZGU2ZmNlNDFmMDFlYWFiNjMxNjg0N2JlNTZiOTBj
ZjVjLi5hMzkyYTA1MTk0NzU2ZDJhZDU2ZTgyNDkyOWVjZTRjMTVmM2FkMDU1IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmgK
QEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1jbGFzcyBT
aGFyZWRCdWZmZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAg
dm9pZCBTZXRVcCgpIG92ZXJyaWRlOwogICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlz
dFRlc3RzQ0cuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3Bs
YXlMaXN0VGVzdHNDRy5jcHAKaW5kZXggZDg0NmMwMjVlMGRjZDhjYTgyOWI3MTI3M2RhZjFmNzA3
ZTlkOTJkZC4uYWZlYWExZTFhMThlYTgyYmUxYWI2MzMyYjgzMWIyNmY2NDAxODNmOSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVz
dHNDRy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3Bs
YXlMaXN0VGVzdHNDRy5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAgICAgICBy
ZXR1cm4geyBnbG9iYWxCdWZmZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVtQnVmZmVyLCBnbG9iYWxJ
dGVtQnVmZmVyQ2FwYWNpdHkgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBl
bmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0IGZpbmFsCisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29u
c3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmluZGV4IDkzMzMxZDcw
MmM1MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIxMTAuLmMzYjVkM2U4ZDdjMDNiMWEzNjVkZDUz
NWEwYjI5YWRlMjdhY2VjYTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ1LDE5ICs0NSwyMCBAQCBz
dGF0aWMgdm9pZCBleHBlY3REYXRhQXJyYXlzRXF1YWwoTlNBcnJheTxOU0RhdGEgKj4gKmV4cGVj
dGVkLCBOU0FycmF5PE5TRGF0YSAqPgogICAgIH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNyZWF0ZU5TRGF0YUFycmF5KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0
LCBjcmVhdGVOU0RhdGFBcnJheSkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBleHBlY3REYXRh
QXJyYXlzRXF1YWwobmlsLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAg
ICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuZW1wdHko
KTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVpbGRlci5nZXQoKS0+Y3Jl
YXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBb
TlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+
YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwot
ICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1ZmZlci0+Y3Jl
YXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChjb25zdCBj
aGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBleHBlY3RE
YXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBk
YXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgo
X19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNF
cXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5
KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdv
cmxkRGF0YSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdv
cmxkRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAog
ICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgICAg
ICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5n
ZXQoKSk7CkBAIC02NiwzNSArNjcsMzUgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0
ZU5TRGF0YUFycmF5KQogICAgIH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0
ZU5TRGF0YUZvckRhdGFTZWdtZW50KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0
LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsK
LSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEg
PSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZl
ci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgp
OworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBo
ZWxsb0RhdGEubGVuZ3RoKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEg
ZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQo
KF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgo
X19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CiAKICAgICAgICAgTlNBcnJheSAqZXhwZWN0
ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXTsKICAgICAgICAgTlNVSW50ZWdlciBl
eHBlY3RlZFNpemUgPSBoZWxsb0RhdGEubGVuZ3RoICsgd29ybGREYXRhLmxlbmd0aDsKIAogICAg
ICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIGZvciAoYXV0byYgc2Vn
bWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogKmJ1aWxk
ZXIuZ2V0KCkpCiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbc2VnbWVudC5zZWdtZW50LT5jcmVh
dGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsK
ICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAog
ICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9uID0gMDsKICAgICAgICAgc2VnbWVudENvdW50ID0g
MDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZlci0+c2l6ZSgpID4gcG9zaXRpb24pIHsKLSAgICAgICAg
ICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVmZmVyLT5nZXRTb21lRGF0YShwb3NpdGlvbik7
CisgICAgICAgIHdoaWxlIChidWlsZGVyLnNpemUoKSA+IHBvc2l0aW9uKSB7CisgICAgICAgICAg
ICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKHBvc2l0
aW9uKTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtpbmNyZW1lbnRhbERhdGEuY3JlYXRlTlNE
YXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAg
ICAgICAgICBwb3NpdGlvbiArPSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogICAgICAgICB9CiAg
ICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKLSAg
ICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0g
MSk7CisgICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0YShl
eHBlY3RlZFNpemUgLSAxKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW2xhc3RCeXRlLmNyZWF0ZU5T
RGF0YSgpIGlzRXF1YWxUb0RhdGE6W0AiZCIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0cmlu
Z0VuY29kaW5nXV0pOwogICAgICAgICBFWFBFQ1RfRVEoMUxVLCBsYXN0Qnl0ZS5zaXplKCkpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1
YnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKaW5k
ZXggNDZjNzYyMDNlMWIyNWFhYWI3YTAyZTBiYjJiZjVlMGM0MzZlZDY4Ny4uNWJlNjY1OTQ2MTM3
MzFlMjFlZDk3ZGE3NGM1NzM4YzdjYTI4NWJmNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93
aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgPFdl
YkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxv
YWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciopCitSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKikKIHsK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hh
bmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODkyMzkyZDg3Zjc0MDBl
YmZhOThmNWE4NjUzYzlmZDRlMjc1NWY1OS4uNzA4MGE2Y2Y3YTZkMjIwMGFlMzAzYzIyY2U3MzEx
OTEwZGRhYTFmMiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMi0wMiAg
SmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNo
IGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFy
YW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogRGVjb2RlclRlc3QvRGVjb2RlclRlc3QvbWFpbi5tbToKKyAg
ICAgICAgKG1haW4pOgorCiAyMDIxLTExLTIxICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdh
bGlhLmNvbT4KIAogICAgICAgICBbUGVyZm9ybWFuY2UgdGVzdF1bY3NzLWNvbnRhaW5dIEFkZCBj
YXNlIHRvIHRlc3QgY29udGFpbjogbGF5b3V0IGluc2lkZSBhIGNvbXBsZXggZG9jdW1lbnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445998</attachid>
            <date>2021-12-05 22:43:19 -0800</date>
            <delta_ts>2021-12-06 04:37:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233677-20211206174315.patch</filename>
            <type>text/plain</type>
            <size>732777</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YTJiZTEzOTE2MjhmNTNiNmQ2ZDIyZTEzY2E3ZmIyYmRkMjA1ZWYzLi5kMTcyNDIwMTVhOGI5Zjc3
ZTRmZWM3M2Y1YjMwMzdhZThkMDkxODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8v
cHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBi
ZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0FycmF5QnVmZmVyLmg6CisKIDIwMjEtMTItMDMgIEtlaXRoIE1pbGxlciAgPGtlaXRo
X21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFN0cnVjdHVyZUlEQmxvYgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDkyOGJhYWVmNDlhMGZjYTEzYWYzN2FlN2ExMWQxMzc0ZTljZDVjNzIuLjA2OGNi
OGMzYTcwOTQ2Y2RiYmE4N2IyNDY5MjhiOWNjMGQyNzY2MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzNDUgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBh
bmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0
dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAgIFJlbmFt
ZSBvbmx5LCBubyBjaGFuZ2UgaW4gYmVoYXZpb3VyLgorCisgICAgICAgICogTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmg6CisgICAgICAgICogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZS5oOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9h
cmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9t
YWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9D
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmg6CisgICAgICAgICog
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oOgorICAgICAgICAq
IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleXMuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlzLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAg
ICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHA6CisgICAgICAg
ICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmg6CisgICAgICAgICog
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHA6CisgICAgICAgICogTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9u
L01lZGlhTWV0YWRhdGEuY3BwOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNl
QnVmZmVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5o
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNv
dXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcDoKKyAgICAgICAgKiBj
c3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgICogZWRpdGluZy9FZGl0b3Iu
aDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oOgorICAgICAg
ICAqIGVkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oOgorICAgICAgICAqIGVkaXRpbmcvV2ViQ29y
ZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvcmVQYXN0
ZWJvYXJkRmlsZVJlYWRlci5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2Eu
bW06CisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAq
IGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAqIGVkaXRp
bmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKiBmaWxlYXBp
L05ldHdvcmtTZW5kUXVldWUuY3BwOgorICAgICAgICAqIGZpbGVhcGkvTmV0d29ya1NlbmRRdWV1
ZS5oOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAq
IGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRh
Y2htZW50RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9JbWFnZURv
Y3VtZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgICogaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UGFnZUFnZW50Lmg6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAg
ICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAg
ICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvTG9hZGVyU3RyYXRlZ3ku
aDoKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAg
ICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9S
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmg6CisgICAgICAg
ICogbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3Rvcnku
Y3BwOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5Lmg6CisgICAgICAg
ICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZl
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaDoKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgICog
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0Lmg6CisgICAgICAg
ICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oOgorICAgICAgICAqIGxvYWRl
ci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAgICAgICogbG9hZGVyL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLm1tOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogcGFn
ZS9QYWdlLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAg
KiBwYWdlL1BhZ2VTZXJpYWxpemVyLmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAg
ICAgICAgKiBwYWdlL1NoYXJlRGF0YVJlYWRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vS2V5
ZWRDb2RpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJk
V3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50Lmg6
CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
U3RhdGljUGFzdGVib2FyZC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vU3RhdGljUGFzdGVib2Fy
ZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmg6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50
RmlsdGVyLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0Nv
bnRlbnRGaWx0ZXIubW06CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29h
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1Qcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVV0aWxpdGllcy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRp
bGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJH
ZW5lcmljLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVy
aWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dP
RkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZv
cm1hdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRm
b3JtRGF0YUNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNs
ZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1U
aHVuZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NE
TVRodW5kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRm
b3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlRGVjb2RlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFk
ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdl
UmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
RGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUElt
YWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZVJlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0lt
YWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVy
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURl
Y29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0
Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdENsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL3Bv
c2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6
CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgICogdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5oOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIu
Y3BwOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiB3
b3JrZXJzL1NjcmlwdEJ1ZmZlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJGZXRjaC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRT
dG9yYWdlLmNwcDoKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAg
ICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKwogMjAyMS0x
MS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBT
aGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkzMzEwZjgzODcwYzY0YjE2MDMx
MjY1NmQ2NDhhNjI1MmYzOTUyZDAuLjUwZjE3NmU5Yzk4ZGE0NDMxYzMyNDU0OWEwNjFkZDJmZjM3
ZGViMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ1IEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBj
bGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVk
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAg
ICB0eXBlcy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVBy
b3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJv
eHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lmg6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHA6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5Lmg6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL1No
YXJlZE1lbW9yeS5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5jcHA6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmg6CisgICAgICAg
ICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJIaXRUZXN0UmVzdWx0
RGF0YS5jcHA6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6Cisg
ICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVu
dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1t
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGsz
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2UuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkYuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUlu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXIubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJh
Z0NsaWVudE1hYy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW06CisgICAgICAgICogV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHA6
CisKIDIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRl
eCBkNzc2ZTgyZGYxMzJjYWY2NTI3OTNhNzlhMDA4M2FkNjU1OWRjMjY1Li4zNzc3ZjJhNTZiYzhl
NjA0ZTk0NTFlOGJkMTJlMjViNDNhMzUxNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9w
cm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIg
YW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJl
dHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaDoKKwogMjAyMS0xMS0xMiAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBzb3J0LVhjb2RlLXByb2plY3QtZmlsZSBp
ZGVtcG90ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMGYwODZlMzllNWJkNDQ1
NjAyYWFkMjY0MzExNWNlNGRmNjM0YjI4NC4uMjA1ODQ1MzQ0OTg0OTU3N2M1NTAxMWNkNTljZTg4
M2JlYmQ5ZTZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBA
CisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1
OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAg
ICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZs
ZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5t
bToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1tOgorCiAyMDIxLTExLTI1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAwYmE2Y2VjNWIw
NjViOWZjNjk4MzQzNTczMTE5ZmVlZjk4NTUwMmNlLi5hNmQ3YWZkMDBmY2RiN2JhOTkxMzU5ZDcy
MjNlYWI3YjQ0NGJiNTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjYgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2Js
ZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQK
KyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVy
IHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAgICogTWVtb3J5
U3RyZWFtLmNwcDoKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJBcmNo
aXZlLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YkZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorICAgICAgICAqIFdlYktpdERMTC5j
cHA6CisgICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAgICAgICAqIFdlYlJlc291cmNlLmg6
CisKIDIwMjEtMTItMDEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggZWFjY2EyYzIzM2E4YTY5MzcxNTkwODA3ZGZk
MzY3NWIwNjE1OTQyOC4uYjQ2OTNmOTFjNjA3ZDhkMDc0NTk0NjQ2ZThkYzQzNzJlOWJjOTllNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCkBAIC0xMjks
NyArMTI5LDcgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8
QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3Vy
Y2UsIHNpemVfdCBieXRlTGVuZ3RoKTsKIAotICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENs
YW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlD
cmVhdGVBcnJheUJ1ZmZlci4KKyAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJy
YXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRy
eUNyZWF0ZUFycmF5QnVmZmVyLgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJy
YXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8
QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAK
aW5kZXggMzM1NGI1MmE1MGNiYjE4OWZkZmFlYjdkODI0ODNiZTBjNDFjM2Q0ZS4uZGEzMzZlNmY1
YjE2OTRlMzc0NzY5MGM0M2QyYjUzZjM1MThjMDlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVh
ZGVyLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhUExB
VEZPUk0oQ09DT0EpCiAKLXZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgQ2xp
cGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCmluZGV4IDJiNjI2Mjg0MTliMDljYmI2OTU1
MjE1YjBkNWQ3ZDczYzBiMzc0NGQuLjZlMjIwNDhjZjVmZWE5YWE2MmRhZGY0NWIxZjM1YzRjZTBk
N2Q2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEltYWdlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaApAQCAtMzEsNyArMzEsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBDbGlwYm9hcmRJbWFnZVJl
YWRlciA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICBDbGlwYm9hcmRJbWFnZVJlYWRlcihE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBAIC00Nyw3ICs0Nyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmluYWwg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgYm9vbCBzaG91bGRSZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogICAg
IFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggMmIx
NjBhMDc4MDRhMTMyNzhkNmRiMWZmODNjODA4MjFkOTBiZDhjZC4uZWZmMTBiNWI2NWZkODFhZDli
YTMyZjgwYjNmMmNmMmY4ZTk4ZjFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTIxNiw4ICsyMTYsOCBAQCB2b2lkIENsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2U6Omludm9rZUNvbXBsZXRpb25IYW5kbGVyKCkKICAgICAgICAg
YXV0byYgZGF0YSA9IGl0ZW1UeXBlTG9hZGVyLT5kYXRhKCk7CiAgICAgICAgIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYgISFzdGQ6OmdldDxTdHJpbmc+KGRhdGEp
KQogICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZVN0cmluZyh0eXBlLCBzdGQ6OmdldDxTdHJp
bmc+KGRhdGEpKTsKLSAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
U2hhcmVkQnVmZmVyPj4oZGF0YSkpCi0gICAgICAgICAgICBjdXN0b21EYXRhLndyaXRlRGF0YSh0
eXBlLCBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkuY29weVJlZigpKTsKKyAgICAg
ICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+KGRhdGEpKQorICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwgc3Rk
OjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihkYXRhKS5jb3B5UmVmKCkpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNjUsOCArMjY1LDggQEAgdm9pZCBDbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVE
YXRhSWZOZWUKIHsKICAgICBpZiAobV90eXBlID09ICJ0ZXh0L2h0bWwiX3MpIHsKICAgICAgICAg
U3RyaW5nIG1hcmt1cFRvU2FuaXRpemU7Ci0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7Ci0gICAgICAgICAgICBhdXRvJiBidWZm
ZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKKyAgICAgICAgaWYgKHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihtX2RhdGEp
KSB7CisgICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+KG1fZGF0YSk7CiAgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3Ry
aW5nOjpmcm9tVVRGOChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5n
PihtX2RhdGEpKQogICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFN0cmlu
Zz4obV9kYXRhKTsKQEAgLTI3OCw5ICsyNzgsOSBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQog
ICAgIH0KIAogICAgIGlmIChtX3R5cGUgPT0gImltYWdlL3BuZyJfcykgewotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplOwotICAgICAgICBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkKLSAgICAgICAgICAgIGJ1
ZmZlclRvU2FuaXRpemUgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKS5wdHIo
KTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRp
emU7CisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4obV9kYXRhKSkKKyAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSBzdGQ6
OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkucHRyKCk7CiAgICAgICAg
IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpKQogICAgICAg
ICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHV0ZjhCdWZmZXIoc3RkOjpnZXQ8U3RyaW5nPihtX2Rh
dGEpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCmlu
ZGV4IDJjYzJjOGUxYTU0ZTE4ZDczNDk1YzUzMGNkNzdkNTRmOTlhNTI5YTcuLjM3YzgyNWUyMzVh
OGE4YjdlNDRlNDBmYjBjMmQ3NzI0NDA3YTc1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgRE9NUHJvbWlz
ZTsKIGNsYXNzIEZpbGVSZWFkZXJMb2FkZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsK
IGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlIDogcHVibGljIENsaXBib2FyZEl0ZW1EYXRhU291cmNlIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
aW52b2tlQ29tcGxldGlvbkhhbmRsZXIoKTsKIAotICAgIHVzaW5nIEJ1ZmZlck9yU3RyaW5nID0g
c3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIEJ1ZmZl
ck9yU3RyaW5nID0gc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PjsKICAgICBjbGFzcyBDbGlwYm9hcmRJdGVtVHlwZUxvYWRlciA6IHB1YmxpYyBGaWxlUmVh
ZGVyTG9hZGVyQ2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxDbGlwYm9hcmRJdGVtVHlwZUxvYWRl
cj4gewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFJlZjxDbGlwYm9hcmRJdGVtVHlwZUxv
YWRlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVy
SU9TLm1tCmluZGV4IDU4Y2U4MDlhZTY5ZTIwNGI3YzA5ZTU5YTgyMDZmNzZkMDI3YTA1NWYuLjI3
NGUwMzhkNDE4NzAxNjFlNGVlYjgwYzEyYWJiYTg3MWY5ZDRhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3Mv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9p
ZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYg
KG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKICAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0
TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVy
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBi
b2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGY0MTBhYWIxNTE3ZTM5MDg5MjZlOGVmNWU5Mjhm
M2M4Yzg0MzYwOWMuLjM4MjFiMDM3MTgwMjgyM2Q2OWE4MzBhMzEwZGEzNDcwOGQ2MzMwNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlw
Ym9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTMzLDcgKzMzLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpy
ZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKICAgICAgICAgYXV0
byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5k
ZXggOGJmZjgwNzA2ZTZlMTk5YTU0YzUzNzMwZmI2YzM3YzlmZjgzMjlmMi4uOWIzZjg0MDc0NWQx
YTA2OTg4M2EyMGMzYTY1Zjk5NzlmYjFhMjQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC01MCw3ICs1
MCw3IEBAIHVpbnQ2NF90IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNp
emUoY29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvCiAgICAgdWludDY0X3QgcmVzdWx0ID0gMDsK
ICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURh
dGEpIHsKICAgICAgICAgcmVzdWx0ID0gZm9ybURhdGFTaXplKGZvcm1EYXRhKTsKLSAgICB9LCBb
Jl0gKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwg
WyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIHJlc3VsdCA9
IGJ1ZmZlci0+c2l6ZSgpOwogICAgIH0sIFtdIChjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAg
ICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggZGIz
YzEzNjQ2OTQ5YjVjZjg0ZWY5MjMzNWVmMTQxMGFhNTQ5NjY4Ni4uZjA1YzIzMzA3YmM1YTBlNTgy
ZGRjZDg2MGQ1YmIxYTFiMzA5MzI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5jcHAKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVj
dG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgog
ICAgIH0KIH0KIAotdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQordm9pZCBET01DYWNoZTo6cHV0V2l0aFJl
c3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hS
ZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRp
b25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCiB7CiAgICAgaWYgKHJl
c3BvbnNlQm9keS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2Jq
ZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVsZWFzZUV4Y2VwdGlv
bigpXSgpIG11dGFibGUgewpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChS
ZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9t
aXNlCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkK
ICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgp
KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9u
c2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9u
c2UpLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4geyBkYXRhLnRha2UoKS0+bWFrZUNv
bnRpZ3VvdXMoKSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRh
KFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB7IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpIH0pOwog
ICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuaAppbmRleCBjMzVjYzNjYmNlZGIzYjI1MTFiZjM1N2EzMWFmZTJkMjc0
MzhiZDRjLi4xMzk3NTRkMzBlNDAwNzg1NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2Jq
ZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hS
ZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYm
KTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRpb25P
cjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJik7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFJldHJp
ZXZlUmVzcG9uc2VzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB1c2luZyBSZWNvcmRzQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxET01DYWNoZUVu
Z2luZTo6UmVjb3JkPj4mJik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmNwcAppbmRleCA0NzUwNGNiZWJkYWUwMzgxNjc1OWE4ZjY4ZThjMjQ2MmZk
ZjJhNWU1Li5jMGY4MDMyYjA0NTJjMzdlZTRjYWZiY2FmZDc5ZjA5ZDIxNDYzMzI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTMx
LDggKzEzMSw4IEBAIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNw
b25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29u
c3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJl
dHVybiBmb3JtRGF0YS0+aXNvbGF0ZWRDb3B5KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7Ci0gICAgICAgIHJl
dHVybiBidWZmZXIuY29weVJlZigpOyAvLyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11
dGFibGUgYW5kIGNhbiBiZSByZXR1cm5lZCBhcy1pcy4KKyAgICB9LCBbXShjb25zdCBSZWY8U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgeworICAgICAgICByZXR1cm4gYnVm
ZmVyLmNvcHlSZWYoKTsgLy8gU2hhcmVkQnVmZmVyIGFyZSBpbW11dGFibGUgYW5kIGNhbiBiZSBy
ZXR1cm5lZCBhcy1pcy4KICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3Bv
bnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsg
fTsKICAgICB9KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNl
Qm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNo
T24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9k
eSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7Ci0gICAgfSwgW10oY29uc3Qg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7Cisg
ICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5
IHsKICAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgfSwgW10oY29uc3Qgc3Rk
OjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVF
bmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlRW5naW5lLmgKaW5kZXggY2JmOGI2OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJhZjJm
YTE1NjY2My4uOTRhZDIxMmEwNzBmY2UyNmFiMGE1OTVhZjgyYTU3MzZjMTM0NThlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApAQCAtNTcsNyAr
NTcsNyBAQCBFeGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uQW5kTG9nKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBFcnJvcik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY2Fj
aGVkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IENhY2hlUXVlcnlPcHRp
b25zJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGhhc1ZhcnlTdGFyLCBjb25z
dCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMsIGNvbnN0IENhY2hlUXVlcnlP
cHRpb25zJik7CiAKLXVzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxw
dHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKK3VzaW5n
IFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRh
PiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5
KGNvbnN0IFJlc3BvbnNlQm9keSYpOwogV0VCQ09SRV9FWFBPUlQgUmVzcG9uc2VCb2R5IGNvcHlS
ZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAppbmRleCAyODUwZGJhMWUzYmZhMTFmNDg5YjQ0
NDAzNTEzZDUxYWUxYmVhZDNhLi45ZDFiYzY3NGZjODI2Y2I2ZDE2ZDAyNTEwY2Y4NDAxMGFkY2Jk
Nzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NE
TS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3Bw
CkBAIC0xMzUsMTcgKzEzNSwxNyBAQCBib29sIENETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUg
JiYgbV9wcml2YXRlLT5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFU
eXBlKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZUluaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBpbml0RGF0YSkKIHsKICAgICByZXR1cm4gSW5pdERhdGFSZWdpc3RyeTo6c2hhcmVkKCku
c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKIH0KIAotYm9vbCBDRE06
OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBT
aGFyZWRCdWZmZXImIGluaXREYXRhKQorYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3VwcG9ydHNJ
bml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCitS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQogewogICAgIGlmICghbV9wcml2YXRl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5oCmluZGV4IGQ4YTRiM2FmMTJmMWE3OTIzZDg4NzA1ZDViOTU4MWQzNmYx
MDI3MGMuLmQ3YjFkNTNkMDQ5MWY3Mjc3OWI1OTRiMmQ4M2MwOWI4M2JjZjIwN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaApAQCAtNTIsNyArNTIsNyBA
QCBjbGFzcyBDRE1JbnN0YW5jZTsKIGNsYXNzIENETVByaXZhdGU7CiBjbGFzcyBEb2N1bWVudDsK
IGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDRE0gOiBwdWJsaWMgUmVmQ291bnRl
ZDxDRE0+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNPiwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CkBAIC03MywxMCArNzMsMTAgQEAgcHVibGljOgogICAg
IGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0OwogICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0
YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIGJvb2wgc3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXpl
UmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
OwogCiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvQ0RNQ2xpZW50LmgKaW5kZXggMjFlNTJmNGI3MTRmYjkxZjY3Y2ZjMzk2MTM5YzE2
NTI1YmZiN2I5Yi4uNDEwZWQyZmI2NDI3NTYyY2U5YmQ4ZWRhNGQ5MWE4NmJhOThjYWE2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5o
CkBAIC0zNiwxNCArMzYsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0RNSW5z
dGFuY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBDRE1DbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNQ2xpZW50PiB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNQ2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAgdmly
dHVhbCB2b2lkIGNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25E
YXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2Vp
dmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAyYzYz
OGY3Yzg0MTk0NjQ5MGUyMDQ4NzY0MmM5YTcyMTczYzUwNTlmLi42Zjg4OGUxNzg1OGRkYTZkOTQ3
MWVjMWY2ZWY1ZDA2NmRmMGU0OTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTU0LDcgKzU0
LDcgQEAgbmFtZXNwYWNlIHsKICAgICBjb25zdCB1aW50MzJfdCBrS2V5SWRzTWF4S2V5SWRTaXpl
SW5CeXRlcyA9IDUxMjsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKICAgICAvLyAxLiBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8v
ZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3Jt
YXQKQEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWQKICAgICBpZiAoIWtp
ZHNBcnJheSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+IGtleUlEczsKICAgICBmb3IgKGF1dG8mIHZhbHVlIDogKmtpZHNBcnJheSkgewogICAg
ICAgICBhdXRvIGtleUlEID0gdmFsdWUtPmFzU3RyaW5nKCk7CiAgICAgICAgIGlmICgha2V5SUQp
CkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkCiAgICAgcmV0dXJuIGtl
eUlEczsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgLy8gMS4gRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2Vu
Y3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0
CkBAIC0xMTEsNyArMTExLDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXpl
S2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKIH0KIAotc3Rk
OjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVj
aWZpY0hlYWRlckJveD4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJveGVzRnJvbUNl
bmMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaXRE
YXRhUmVnaXN0cnk6OmV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gNC4gQ29tbW9uIFN5c3RlbUlEIGFuZCBQU1NI
IEJveCBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlh
L2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9jZW5jLmh0bWwjY29tbW9uLXN5c3RlbQpAQCAtMTUx
LDkgKzE1MSw5IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90
ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pCiAgICAgcmV0dXJuIHBzc2hCb3hl
czsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0
YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IEluaXRE
YXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAg
ICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAKICAgICBhdXRv
IHBzc2hCb3hlcyA9IGV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhidWZmZXIpOwogICAgIGlmICgh
cHNzaEJveGVzKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxT
aGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uCiAg
ICAgcmV0dXJuIGtleUlEczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdp
c3RyeTo6c2FuaXRpemVDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gNC4gQ29tbW9uIFN5
c3RlbUlEIGFuZCBQU1NIIEJveCBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8v
ZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9jZW5jLmh0bWwjY29tbW9u
LXN5c3RlbQpAQCAtMTk1LDcgKzE5NSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRh
UmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBy
ZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNh
bml0aXplV2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBDaGVjayBpZiB0aGUgYnVmZmVyIGlzIGEgdmFsaWQg
V2ViTSBpbml0RGF0YS4KICAgICAvLyBUaGUgV2ViTSBpbml0RGF0YSBpcyB0aGUgQ29udGVudEVu
Y0tleUlELCBzbyBzaG91bGQgYmUgbGVzcyB0aGFuIGtXZWJNTWF4Q29udGVudEVuY0tleUlEU2l6
ZS4KQEAgLTIwNSwxMCArMjA1LDEwIEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZVdlYk0oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIGJ1ZmZlci5j
b3B5KCk7CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4+IGV4dHJhY3RLZXlJRHNXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJh
Y3RLZXlJRHNXZWJNKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAg
ICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdlYk0oYnVmZmVyKTsKKyAgICBWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZEJ1ZmZlciA9IHNhbml0aXplV2ViTShidWZmZXIpOwog
ICAgIGlmICghc2FuaXRpemVkQnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CkBAIC0yMzMsNyArMjMzLDcgQEAgSW5pdERhdGFSZWdpc3RyeTo6SW5pdERhdGFSZWdpc3RyeSgp
CiAKIEluaXREYXRhUmVnaXN0cnk6On5Jbml0RGF0YVJlZ2lzdHJ5KCkgPSBkZWZhdWx0OwogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRp
emVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3R5cGVzLmZpbmQo
aW5pdERhdGFUeXBlKTsKICAgICBpZiAoaXRlciA9PSBtX3R5cGVzLmVuZCgpIHx8ICFpdGVyLT52
YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQpAQCAtMjQxLDcgKzI0MSw3IEBAIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhCiAgICAgcmV0dXJuIGl0ZXItPnZhbHVlLnNhbml0aXplSW5pdERhdGEoYnVmZmVy
KTsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0
YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIGF1dG8gaXRlciA9IG1fdHlwZXMuZmluZChpbml0RGF0YVR5cGUp
OwogICAgIGlmIChpdGVyID09IG1fdHlwZXMuZW5kKCkgfHwgIWl0ZXItPnZhbHVlLnNhbml0aXpl
SW5pdERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0luaXREYXRhUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oCmluZGV4IGNkMTM4N2E2YmQwMzhmZjM0ZTJjZmI3NWY0
NDNkZTdkOTQwMzIxYjAuLjc3ZDYwNGIwOGJiN2Y3ZTM4YmNjYjM1NDViMzRjOGIxMzQzNTVlZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERh
dGFSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
SW5pdERhdGFSZWdpc3RyeS5oCkBAIC0zOCwxOSArMzgsMTkgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94OwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSW5p
dERhdGFSZWdpc3RyeSB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEluaXRE
YXRhUmVnaXN0cnkmIHNoYXJlZCgpOwogICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxJ
bml0RGF0YVJlZ2lzdHJ5PjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVm
ZmVyPj4+IGV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25z
dCBTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzKGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwog
CiAgICAgc3RydWN0IEluaXREYXRhVHlwZUNhbGxiYWNrcyB7Ci0gICAgICAgIHVzaW5nIFNhbml0
aXplSW5pdERhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPFJlZlB0cjxTaGFyZWRCdWZmZXI+KGNvbnN0
IFNoYXJlZEJ1ZmZlciYpPjsKLSAgICAgICAgdXNpbmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0g
RnVuY3Rpb248c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+Pihjb25zdCBT
aGFyZWRCdWZmZXImKT47CisgICAgICAgIHVzaW5nIFNhbml0aXplSW5pdERhdGFDYWxsYmFjayA9
IEZ1bmN0aW9uPFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik+OworICAgICAgICB1c2luZyBFeHRyYWN0S2V5SURzQ2FsbGJhY2sgPSBG
dW5jdGlvbjxzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
Pihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik+OwogCiAgICAgICAgIFNhbml0aXplSW5p
dERhdGFDYWxsYmFjayBzYW5pdGl6ZUluaXREYXRhOwogICAgICAgICBFeHRyYWN0S2V5SURzQ2Fs
bGJhY2sgZXh0cmFjdEtleUlEczsKQEAgLTYxLDkgKzYxLDkgQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCBBdG9tU3RyaW5nJiBrZXlpZHNOYW1lKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21T
dHJpbmcmIHdlYm1OYW1lKCk7CiAKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBleHRy
YWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0NlbmMo
Y29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNh
bml0aXplQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRl
ckJveD4+PiBleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiBwcml2YXRlOgogICAgIElu
aXREYXRhUmVnaXN0cnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCA4YmZiMWNlNzAxYTJmNWE2
OWI1YjUxOTkxYWE4NjMyZWJiODkyNWY5Li4xNDc3NmMyMDE1MWJmZWZlMzgwNzlhMzM3MzBjODg2
NjI2OGJhNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBN
ZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IEJ1ZmYKICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMs
IFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9LCBpbml0RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhLmRhdGEoKSwgaW5p
dERhdGEubGVuZ3RoKCkpLCBpbml0RGF0YVR5cGUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
LCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAg
IC8vIDEwLjEuIElmIHRoZSBpbml0IGRhdGEgaXMgbm90IHZhbGlkIGZvciBpbml0RGF0YVR5cGUs
IHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAg
Ly8gMTAuMi4gTGV0IHNhbml0aXplZCBpbml0IGRhdGEgYmUgYSB2YWxpZGF0ZWQgYW5kIHNhbml0
aXplZCB2ZXJzaW9uIG9mIGluaXQgZGF0YS4KLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVkSW5pdERhdGEgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZUluaXREYXRhKGlu
aXREYXRhVHlwZSwgaW5pdERhdGEpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVkSW5pdERhdGEgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZUluaXRE
YXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpOwogCiAgICAgICAgIC8vIDEwLjMuIElmIHRoZSBw
cmVjZWRpbmcgc3RlcCBmYWlsZWQsIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVk
IFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFzYW5pdGl6ZWRJbml0RGF0YSkgewpAQCAtMjIzLDcg
KzIyMyw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgICAgICAgICBtX2xhdGVzdERl
Y3J5cHRUaW1lID0gMDsKICAgICAgICAgfQogCi0gICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5y
ZXF1ZXN0TGljZW5zZShtX3Nlc3Npb25UeXBlLCBpbml0RGF0YVR5cGUsIHNhbml0aXplZEluaXRE
YXRhLnJlbGVhc2VOb25OdWxsKCksIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2
aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQp
IG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UobV9z
ZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBzYW5pdGl6ZWRJbml0RGF0YS5yZWxlYXNlTm9uTnVs
bCgpLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlm
aWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6
YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsK
IApAQCAtNDIyLDcgKzQyMiw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUoY29uc3Qg
QnVmZmVyU291cmNlJiByZXNwb25zZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mCiAgICAgLy8gNi4g
UnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6CiAgICAgcXVldWVUYXNrS2VlcGlu
Z09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVzcG9uc2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShy
ZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLmxlbmd0aCgpKSwgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAg
ICAgICAgLy8gNi4xLiBMZXQgc2FuaXRpemVkIHJlc3BvbnNlIGJlIGEgdmFsaWRhdGVkIGFuZC9v
ciBzYW5pdGl6ZWQgdmVyc2lvbiBvZiByZXNwb25zZSBjb3B5LgotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZWRSZXNwb25zZSA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXpl
UmVzcG9uc2UocmVzcG9uc2UpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVkUmVzcG9uc2UgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZVJlc3BvbnNl
KHJlc3BvbnNlKTsKIAogICAgICAgICAvLyA2LjIuIElmIHRoZSBwcmVjZWRpbmcgc3RlcCBmYWls
ZWQsIG9yIGlmIHNhbml0aXplZCByZXNwb25zZSBpcyBlbXB0eSwgcmVqZWN0IHByb21pc2Ugd2l0
aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAgICBpZiAoIXNhbml0aXplZFJlc3Bv
bnNlIHx8IHNhbml0aXplZFJlc3BvbnNlLT5pc0VtcHR5KCkpIHsKQEAgLTYwMSw3ICs2MDEsNyBA
QCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSkKICAgICAgICAgLy8gNC4zLiBMZXQgbWVzc2FnZSB0eXBlIGJlIG51bGwuCiAKICAgICAg
ICAgLy8gNC40LiBVc2UgdGhlIGNkbSB0byBleGVjdXRlIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0g
ICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwg
bV9zZXNzaW9uVHlwZSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChDRE1JbnN0YW5jZVNlc3Npb246
OktleVN0YXR1c1ZlY3RvciYmIGtleXMsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+
JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBt
dXRhYmxlIHsKKyAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKG1f
c2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBlLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKENETUluc3Rh
bmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5cywgc3RkOjpvcHRpb25hbDxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNj
ZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC02NDksNyArNjQ5LDcgQEAgdm9pZCBNZWRp
YUtleVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAg
Ly8gNS4gUmV0dXJuIHByb21pc2UuCiB9CiAKLXZvaWQgTWVkaWFLZXlTZXNzaW9uOjplbnF1ZXVl
TWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBjb25zdCBTaGFyZWRCdWZm
ZXImIG1lc3NhZ2UpCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UoTWVkaWFL
ZXlNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
bWVzc2FnZSkKIHsKICAgICAvLyA2LjQuMSBRdWV1ZSBhICJtZXNzYWdlIiBFdmVudAogICAgIC8v
IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI3F1ZXVlLW1lc3NhZ2UKQEAg
LTcxNiw3ICs3MTYsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVzZXMo
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBpbgogICAgICAgICB9KTsKIH0K
IAotdm9pZCBNZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIG1lc3Nh
Z2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit2b2lkIE1lZGlhS2V5U2Vzc2lv
bjo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7CiAgICAgZW5xdWV1ZU1lc3NhZ2UobWVzc2FnZVR5
cGUsIG1lc3NhZ2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKaW5kZXggM2Q5NmY4ODAyZTc0Nzg0MWM0ZWZk
YTgxZGNiOTQxZWE2ZTRhNzVlNC4uMzY1YWNlNWMwOTVlN2RjMGM1NzFlNzZjY2YyYzA3YWFmYzYy
YmFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNzIENETTsKIGNsYXNz
IERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIE1lZGlhS2V5U3RhdHVzTWFwOwogY2xhc3MgTWVkaWFL
ZXlzOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZVByb3h5OwogCkBA
IC04NywyMCArODcsMjAgQEAgcHVibGljOgogICAgIHVzaW5nIENsb3NlZFByb21pc2UgPSBET01Q
cm9taXNlUHJveHk8SURMVW5kZWZpbmVkPjsKICAgICBDbG9zZWRQcm9taXNlJiBjbG9zZWQoKSB7
IHJldHVybiBtX2Nsb3NlZFByb21pc2UuZ2V0KCk7IH0KIAotICAgIGNvbnN0IFZlY3RvcjxzdGQ6
OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4mIHN0YXR1c2VzKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0dXNlczsgfQorICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+JiBzdGF0dXNlcygpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdHVzZXM7IH0KIAogICAgIHVuc2lnbmVkIGludGVybmFsSW5zdGFu
Y2VTZXNzaW9uT2JqZWN0UmVmQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2luc3RhbmNlU2Vzc2lv
bi0+cmVmQ291bnQoKTsgfQogCiBwcml2YXRlOgogICAgIE1lZGlhS2V5U2Vzc2lvbihEb2N1bWVu
dCYsIFdlYWtQdHI8TWVkaWFLZXlzPiYmLCBNZWRpYUtleVNlc3Npb25UeXBlLCBib29sIHVzZURp
c3RpbmN0aXZlSWRlbnRpZmllciwgUmVmPENETT4mJiwgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4m
Jik7Ci0gICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlLCBjb25zdCBT
aGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5
cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIHVwZGF0ZUV4cGly
YXRpb24oZG91YmxlKTsKICAgICB2b2lkIHNlc3Npb25DbG9zZWQoKTsKICAgICBTdHJpbmcgbWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNz
aW9uQ2xpZW50CiAgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhDRE1JbnN0YW5jZVNlc3Npb25D
bGllbnQ6OktleVN0YXR1c1ZlY3RvciYmKSBvdmVycmlkZTsKLSAgICB2b2lkIHNlbmRNZXNzYWdl
KENETU1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOworICAg
IHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBT
dHJpbmcmKSBmaW5hbDsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBmaW5hbDsK
IApAQCAtMTQwLDEwICsxNDAsMTAgQEAgcHJpdmF0ZToKICAgICBNZWRpYUtleVNlc3Npb25UeXBl
IG1fc2Vzc2lvblR5cGU7CiAgICAgUmVmPENETT4gbV9pbXBsZW1lbnRhdGlvbjsKICAgICBSZWY8
Q0RNSW5zdGFuY2VTZXNzaW9uPiBtX2luc3RhbmNlU2Vzc2lvbjsKLSAgICBWZWN0b3I8UmVmPFNo
YXJlZEJ1ZmZlcj4+IG1fcmVjb3JkT2ZLZXlVc2FnZTsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiBtX3JlY29yZE9mS2V5VXNhZ2U7CiAgICAgZG91YmxlIG1fZmlyc3RE
ZWNyeXB0VGltZSB7IDAgfTsKICAgICBkb3VibGUgbV9sYXRlc3REZWNyeXB0VGltZSB7IDAgfTsK
LSAgICBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+
IG1fc3RhdHVzZXM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4gbV9zdGF0dXNlczsKIAogICAgIHVzaW5nIERpc3BsYXlD
aGFuZ2VkT2JzZXJ2ZXIgPSBPYnNlcnZlcjx2b2lkKFBsYXRmb3JtRGlzcGxheUlEKT47CiAgICAg
RGlzcGxheUNoYW5nZWRPYnNlcnZlciBtX2Rpc3BsYXlDaGFuZ2VkT2JzZXJ2ZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVz
TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
dGF0dXNNYXAuY3BwCmluZGV4IDA2YWZmYjVmMmVkZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2
MGMuLjM5OGU4YWIxYjY1NmI0NDU5MjdiZWI2YmM2OTNkZDM5OWE2ODdhYzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
dGF0dXNNYXAuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHVuc2lnbmVkIGxvbmcgTWVkaWFLZXlTdGF0
dXNNYXA6OnNpemUoKQogICAgIHJldHVybiBtX3Nlc3Npb24tPnN0YXR1c2VzKCkuc2l6ZSgpOwog
fQogCi1zdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0
IEJ1ZmZlclNvdXJjZSYgYikKK3N0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKIHsKICAgICBhdXRvIGxl
bmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAhPSBiLmxlbmd0aCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN0YXR1c01hcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVN0YXR1c01hcC5oCmluZGV4IGMyMTExMTNhMmM2ZGFjNzk3OTI0YTk5ZDJkMmRmOTdj
MmU2NWY4NTAuLjYwZDYyYWFmZjgwNzRkYWRhNmUzMWEzZjJiMzcwYTZkNmQwMWY2MTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0
dXNNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U3RhdHVzTWFwLmgKQEAgLTM4LDcgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgTWVkaWFLZXlTZXNzaW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTWVkaWFLZXlTdGF0dXNNYXAgOiBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYUtleVN0YXR1c01hcD4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCmluZGV4IDgzYjI0YWNl
YWE1YjEyOTRiYjRlYTQzOWZiMmQ1YzRmNmNjZDQ3NTMuLjM2N2YzMWQxODZiNTE2MzlhOWM3NDIx
M2YwY2Y4ZTZmMmY4ZDI2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBib29sIE1lZGlh
S2V5czo6aGFzT3BlblNlc3Npb25zKCkgY29uc3QKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgTWVk
aWFLZXlzOjp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQordm9pZCBNZWRp
YUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQog
ewogICAgIGZvciAoYXV0byYgY2RtQ2xpZW50IDogbV9jZG1DbGllbnRzKQogICAgICAgICBjZG1D
bGllbnQuY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChpbml0
RGF0YVR5cGUsIGluaXREYXRhLmNvcHlSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAppbmRleCA3YjU5YTNiYzZkMjI1NmZjNjU2
ZjA4Y2JmMjY4OTE4NTEwOTgzYTIyLi45MWExYTA3MTE0MzNiZTI0N2RkMmE4NWM1ZjRhZDA5Mzhh
MDlhN2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlzLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHJvdGVjdGVkOgogICAgIE1lZGlhS2V5cyhE
b2N1bWVudCYsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBib29sIHBlcnNpc3RlbnRT
dGF0ZUFsbG93ZWQsIGNvbnN0IFZlY3RvcjxNZWRpYUtleVNlc3Npb25UeXBlPiYsIFJlZjxDRE0+
JiYsIFJlZjxDRE1JbnN0YW5jZT4mJik7CiAKICAgICAvLyBDRE1JbnN0YW5jZUNsaWVudAotICAg
IHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcm
LCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlh
bGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3Qg
TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlcjsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IGYxMmM4OGZlZTlhODA3NGI1MDhl
Zjk1NzFlNzAxZjU2ODJmYjQ5MjcuLjAwMzkzMDJmN2RjMTZmZmVjZmM0NjVjN2Q4ZGEyNTJmOThk
YWY1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAg
LTI5NywxNCArMjk3LDE0IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgp
CiAgICAgICAgIHJldHVybiBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAg
ICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2Rpbmco
KS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAg
ICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0
ZXh0Qm9keSgpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc1VS
TFNlYXJjaFBhcmFtcygpKQotICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJp
bmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNC
b2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAg
IGlmIChpc0FycmF5QnVmZmVyKCkpCi0gICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRh
dGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJC
b2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAo
aXNBcnJheUJ1ZmZlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9k
eSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsK
KyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVy
Vmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCAwODk4M2VjMDA0M2Y2Yzk5
YTdmYWVhZmM2OTNjZTgyODIzYjQwMWJjLi5iYWQxYjVlYTIzYjc3MWIzNDdmNGIwNGE1Njc1OGZj
MDA4OGUxMmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAg
LTY0LDcgKzY0LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5QXNGb3Jt
RGF0YSgpIGNvbnN0OwogCi0gICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6
bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Owor
ICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZv
cm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CiAKICAg
ICB2b2lkIHNldEFzRm9ybURhdGEoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIHsgbV9kYXRhID0gV1RG
TW92ZShkYXRhKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcAppbmRleCAxMWE3M2YzNDVlODJkOWU3MDg1OThhYTgzM2RlYWVkOGJl
YzkzNDk0Li4yMjEzZDYyMzAzZWZlMmExZjcyOTgyNjBmNTg4NjBiNzc2ZmIyNjc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApA
QCAtMzI5LDEzICszMjksMTMgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiAgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEs
IHNpemUpOwogfQogCi12b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxTaGFyZWRC
dWZmZXI+JiYgZGF0YSkKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBtX2J1ZmZlci5yZXNldCgpOwogICAg
IG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewogICAgIGlmICghbV9idWZm
ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDZiYmJjZTczNDdhYTNiYzJmNzBmNGVj
NmQ4YmIwZTE4NzJhYWY4OTcuLjg3MWQyYzA4NjMzMWE5ODI5NGExNjZhNGI0MmUzMTg0ZTAzNzc3
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmgKQEAgLTUwLDEwICs1MCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyBy
ZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxT
aGFyZWRCdWZmZXI+JiYpOworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZvaWQgc2V0RGF0
YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiB0YWtlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtl
RGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigp
OwogICAgIFN0cmluZyB0YWtlQXNUZXh0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggZmM1NWNjN2Q4M2Q4YmMxMWYwODU0ZGMzY2ZkODUw
OTdhMzFmMTBmNi4uMDNmODliNjFjYTVmN2M3MTc2YjlkODhjZDEzNjYwZTg2YjdhMjU0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTEzNSw3
ICsxMzUsNyBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdG9wKCkKICAgICAgICAgbV9sb2FkZXItPmNh
bmNlbCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaExvYWRlcjo6c3RhcnRTdHJl
YW1pbmcoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoTG9hZGVyOjpzdGFy
dFN0cmVhbWluZygpCiB7CiAgICAgQVNTRVJUKG1fY29uc3VtZXIpOwogICAgIGF1dG8gZmlyc3RD
aHVuayA9IG1fY29uc3VtZXItPnRha2VEYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoTG9hZGVyLmgKaW5kZXggMmY5MGYwZWMzZmY5MDVhMjYyMzFjODRjNzJhN2ExODZj
ZDRiZmU4My4uNDYxMmQwZTBlM2E3ZWZlMzA2MDM5NmIwZDc1YTJmYTNiYzRlZGRhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApAQCAtMzksMTQgKzM5LDE0
IEBAIGNsYXNzIEZldGNoQm9keUNvbnN1bWVyOwogY2xhc3MgRmV0Y2hMb2FkZXJDbGllbnQ7CiBj
bGFzcyBGZXRjaFJlcXVlc3Q7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRmV0
Y2hMb2FkZXIgZmluYWwgOiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6
CiAgICAgRmV0Y2hMb2FkZXIoRmV0Y2hMb2FkZXJDbGllbnQmLCBGZXRjaEJvZHlDb25zdW1lciop
OwogICAgIFdFQkNPUkVfRVhQT1JUIH5GZXRjaExvYWRlcigpOwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKIAogICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIGNvbnN0IEZldGNoUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQg
c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEJsb2ImKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IGI5MzQzOTJhOTAz
ZDRhNWZkMWM1NGFlODE0OGIyZTZlNzllNzZjNmIuLmUzOGE4M2FkZTdkNmUwYWFmNzBjZWI5YzVh
YThmZThhYjQ5NDNkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcApAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0
Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGlu
CiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLnNldEFz
Rm9ybURhdGEoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpc10o
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICAgICAgW3RoaXNdKFJl
ZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkp
CiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLmNvbnN1
bWVyKCkuc2V0RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQg
RmV0Y2hSZXNwb25zZTo6ZmVlZFN0cmVhbSgpCiAgICAgY2xvc2VTdHJlYW0oKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RhcnRTdHJlYW1p
bmcoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoUmVzcG9uc2U6OkJvZHlM
b2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKIHsKICAgICBBU1NFUlQobV9sb2FkZXIpOwogICAgIHJl
dHVybiBtX2xvYWRlci0+c3RhcnRTdHJlYW1pbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggMzc0OGM4ZjU5MjcyOTMwYmJjMmQxNjY2YzZh
ZWI1NDdhMWI1ZWYwNi4uY2Y3ODYzMjM5ZmQ5NDZlZTBlOGQ4OGVhZWE3MmZlOTg5ZWVkMzE0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTg1
LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmVlZFN0cmVhbSgpIGZpbmFsOwogICAgIHZv
aWQgY2FuY2VsKCkgZmluYWw7CiAKLSAgICB1c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlh
bnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj47CisgICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0
cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CiAgICAgUmVzcG9uc2VEYXRh
IGNvbnN1bWVCb2R5KCk7CiAgICAgdm9pZCBzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiwgdWlu
dDY0X3QgYm9keVNpemVXaXRoUGFkZGluZyk7CiAKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2YXRl
OgogCiAgICAgICAgIHZvaWQgY29uc3VtZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0Nh
bGxiYWNrJiYpOwogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5n
KCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzdGFydFN0cmVhbWlu
ZygpOwogICAgICAgICBOb3RpZmljYXRpb25DYWxsYmFjayB0YWtlTm90aWZpY2F0aW9uQ2FsbGJh
Y2soKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVzcG9uc2VDYWxsYmFjayk7IH0KICAgICAgICAgQ29u
c3VtZURhdGFCeUNodW5rQ2FsbGJhY2sgdGFrZUNvbnN1bWVEYXRhQ2FsbGJhY2soKSB7IHJldHVy
biBXVEZNb3ZlKG1fY29uc3VtZURhdGFDYWxsYmFjayk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAppbmRleCA2MTM3YzJjZjZmZjQ3YTM2
ODQwZjExYjk2NmI5ZTUyNTg3MWQ4MTVmLi4xYTY2YmY4MTgzMjBlOTU2MDdkNjE1ZjFhMDgyYTgy
NzZlYjJhMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHQuaApAQCAtMzgsNyArMzgsNyBAQCBlbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9y
SGlnaGxpZ2h0IDogYm9vbCB7IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgSGlnaGxpZ2h0UmVxdWVz
dE9yaWdpbmF0ZWRJbkFwcCA6IGJvb2wgeyBObywgWWVzIH07CiAKIHN0cnVjdCBBcHBIaWdobGln
aHQgewotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGhpZ2hsaWdodDsKKyAgICBSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaGlnaGxpZ2h0OwogICAgIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiB0ZXh0OwogICAgIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGlzTmV3
R3JvdXA7CiAgICAgSGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCByZXF1ZXN0T3JpZ2lu
YXRlZEluQXBwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQv
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKaW5kZXggODNiOTVkN2NmMDA3YWE1NGZiZmUy
MzRiN2Q4YjFlYjhlMTk5NjNlNC4uNWU4MGYwYzA3MmQ0OWEzZWY3OTY5NTkzMDJjNDQ1NmNkMmFi
ZGU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY29uc3RleHByIHVpbnQ2NF90IGhpZ2hsaWdodEZpbGVTaWduYXR1cmUgPSAw
eDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0dXJlICAoQSlwcGxlKEFQKXBsaWNhdGlv
bihIKWlnaGxpZ2h0cygyMDIxKQogCi1zdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0
YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCitzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhOjpjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOwogICAg
IGF1dG8gZGVjb2RlciA9IGNvbnRpZ3VvdXNCdWZmZXItPmRlY29kZXIoKTsKQEAgLTUzLDcgKzUz
LDcgQEAgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJh
bmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEIKICAgICByZXR1cm4gZGF0YTsKIH0KIAotUmVm
PFNoYXJlZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjp0b1NoYXJlZEJ1ZmZlcigpIGNv
bnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjp0
b1NoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBl
bmNvZGVyOwogICAgIGVuY29kZXIgPDwgKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCmluZGV4IGNmNjM4
MWFjZmIwYTUyMTFiNDM1MDhiN2I1MTdkNmRiMmY2ZmM3NDMuLmI1ZGFmNjAyNTM5OGEzZjdlNmYx
ZDM3YWJlY2U4NDRkNGYxYzY1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCkBAIC0zMywxMiArMzMsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCi1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBBcHBIaWdobGlnaHRSYW5nZURhdGEgewogV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhPiBjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBjcmVhdGUoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHN0cnVjdCBOb2RlUGF0aENvbXBvbmVu
dCB7CiAgICAgICAgIFN0cmluZyBpZGVudGlmaWVyOwogICAgICAgICBTdHJpbmcgbm9kZU5hbWU7
CkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRlY29kZShEZWNv
ZGVyJik7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0Owor
ICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0Owog
CiBwcml2YXRlOgogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCmluZGV4
IGRjMzlhMGYwZDE4ZmZmY2E3ZGZiNDY1MjE5Y2Q2MTJhOWY3MzhmOGYuLmU1ZGU4NDk0ZjM1MDQ1
MzU5NGIyZjJlODhjM2RkYTMzZmE5YWY3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCkBAIC0yMzcsNyAr
MjM3LDcgQEAgdm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpzdG9yZUFwcEhpZ2hsaWdodChSZWY8
U3RhdGljUmFuZ2U+JiYgcmFuZ2UpCiAgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5z
dG9yZUFwcEhpZ2hsaWdodChXVEZNb3ZlKGhpZ2hsaWdodCkpOwogfQogCi12b2lkIEFwcEhpZ2hs
aWdodFN0b3JhZ2U6OnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgU2Nyb2xsVG9IaWdobGlnaHQgc2Nyb2xsKQordm9pZCBBcHBIaWdobGln
aHRTdG9yYWdlOjpyZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBTY3JvbGxUb0hpZ2hsaWdodCBzY3JvbGwpCiB7CiAgICAg
YXV0byBhcHBIaWdobGlnaHRSYW5nZURhdGEgPSBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0
ZShidWZmZXIpOwogICAgIGlmICghYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCmlu
ZGV4IGIxNTJmNzZlZDQyNDA4OTJlYTdkZTIxZTJjYjA2ZDQ3MmQ4NzMzNjAuLmUyNzY2MzNiNDg0
ZjgxMDk0YWRlY2U0NWY2NGFiYmVkMTc4MTI1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKQEAgLTM5LDcgKzM5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKIAog
Y2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogY2xhc3MgU3RhdGljUmFuZ2U7CiBjbGFzcyBIaWdobGlnaHQ7CiAKQEAgLTU0
LDcgKzU0LDcgQEAgcHVibGljOgogICAgIH5BcHBIaWdobGlnaHRTdG9yYWdlKCk7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTdGF0aWNSYW5nZT4mJik7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU2Nyb2xsVG9IaWdobGlnaHQpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBTY3JvbGxUb0hpZ2hsaWdodCk7CiAgICAgdm9pZCByZXN0b3JlVW5yZXN0
b3JlZEFwcEhpZ2hsaWdodHMoKTsKICAgICBNb25vdG9uaWNUaW1lIGxhc3RSYW5nZVNlYXJjaFRp
bWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaDsgfQogICAgIHZvaWQg
cmVzZXRMYXN0UmFuZ2VTZWFyY2hUaW1lKCkgeyBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaCA9IE1v
bm90b25pY1RpbWU6Om5vdygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKaW5kZXggYTFjOTMx
MmQ0NWViYmZjZTlmMzJlNmNjMWExYTJlODRkZGNhN2M3Mi4uMmEyYzFmYzMyOTU4MDVkNTJmZDU2
YWYzMGI0NTVhZTJjY2NjNDg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcApAQCAtMzksNyAr
MzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgS2V5UGF0aFR5cGUgeyBO
dWxsLCBTdHJpbmcsIEFycmF5IH07CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBz
ZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBh
dGgpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiB7CiAgICAgYXV0byBlbmNvZGVyID0gS2V5
ZWRFbmNvZGVyOjplbmNvZGVyKCk7CiAKQEAgLTI4MiwxMyArMjgyLDEzIEBAIHN0YXRpYyB2b2lk
IGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElEQktleURhdGEmIGtleSkK
ICAgICB9CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlh
bGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQogewogICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJzaW9uKTsKIAogICAgIGVuY29k
ZUtleShkYXRhLCBrZXkpOwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpOwogfQogCiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlS2V5
KGNvbnN0IHVpbnQ4X3QqJiBkYXRhLCBjb25zdCB1aW50OF90KiBlbmQsIElEQktleURhdGEmIHJl
c3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCmluZGV4IGFhZmRiMzcwMWYwZWY0NDhkNmI4YWI1MTAx
MTg1YzRiMzRmZmFhOGEuLjY1YzRhNjNjNzg3ZjM2OTQxNDZlMjMxYzhjNTQwMTcwNjdhNGY0MjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcmlhbGl6YXRpb24uaApAQCAtMzIsMTAgKzMyLDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSURCS2V5RGF0YTsKIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYp
OworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9w
dGlvbmFsPElEQktleVBhdGg+Jik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCB1
aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBzdGQ6Om9wdGlvbmFsPElEQktleVBh
dGg+Jik7CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlE
YXRhKGNvbnN0IElEQktleURhdGEmKTsKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlE
QktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleURhdGEo
Y29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgSURCS2V5RGF0YSYpOwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggMGE0NjliZDBiZDFmMzhk
Y2I5NmIzOWQ4YzMwMDBhZjczZDEyYWI1OS4uYzlkNmRhNmJkZDlmOTM5NTAxZjRmNDIzMmI0Yzc4
MzdkODQwZGFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IE1lZGlhUmVjb3JkZXI6OnN0YXJ0UmVjb3JkaW5nKHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IHRpbWVTbGljCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3RhdGljIGlubGluZSBSZWY8Qmxv
YkV2ZW50PiBjcmVhdGVEYXRhQXZhaWxhYmxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkKK3N0YXRpYyBpbmxpbmUgUmVmPEJsb2JFdmVudD4gY3Jl
YXRlRGF0YUF2YWlsYWJsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgZG91YmxlIHRpbWVDb2RlKQogewogICAgIGF1dG8gYmxvYiA9IGJ1ZmZlciA/IEJsb2I6
OmNyZWF0ZShjb250ZXh0LCBidWZmZXItPmV4dHJhY3REYXRhKCksIG1pbWVUeXBlKSA6IEJsb2I6
OmNyZWF0ZShjb250ZXh0KTsKICAgICByZXR1cm4gQmxvYkV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmRhdGFhdmFpbGFibGVFdmVudCwgQmxvYkV2ZW50OjpJbml0IHsgeyBmYWxzZSwgZmFsc2Us
IGZhbHNlIH0sIFdURk1vdmUoYmxvYiksIHRpbWVDb2RlIH0sIEJsb2JFdmVudDo6SXNUcnVzdGVk
OjpZZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyLmgKaW5kZXggNzcxMmI0NDUyODM2N2Q4YzI3MjUwMmFkYmFhY2FhZjk3ODhj
YmRiMC4uMWU5Yjc0YWIxN2UzMTA4ZGI0MjA5YjliNGYwMjE0ZGExMWFjNmUwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5o
CkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoRXJyb3IoRXhj
ZXB0aW9uJiYpOwogCiAgICAgZW51bSBjbGFzcyBUYWtlUHJpdmF0ZVJlY29yZGVyIHsgTm8sIFll
cyB9OwotICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPjsKKyAgICB1
c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+OwogICAgIHZv
aWQgZmV0Y2hEYXRhKEZldGNoRGF0YUNhbGxiYWNrJiYsIFRha2VQcml2YXRlUmVjb3JkZXIpOwog
CiAgICAgLy8gTWVkaWFTdHJlYW06Ok9ic2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCmluZGV4IDNmNGM5YmNkMTMz
YWMyOWYzZjdkZGUxOTk0NzhlMzkyNTdkNWU2NmIuLjg3NGFhN2YwYjE4ZjBlZTc1ODgwYmE1ZjVl
ZjY3ZDQ3YmZjMmIyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQXJ0d29y
a0ltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNv
bnN0IE5ldHdvcmtMCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gU2FuaXRpemUgdGhl
IGltYWdlIGJ5IGRlY29kaW5nIGl0IGludG8gYSBCaXRtYXBJbWFnZS4KLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0
YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXpl
ID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIGF1dG8gYml0bWFwSW1hZ2Ug
PSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgYml0bWFwSW1hZ2UtPnNldERhdGEoV1RGTW92
ZShidWZmZXJUb1Nhbml0aXplKSwgdHJ1ZSk7CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1Nv
dXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJj
ZUJ1ZmZlci5jcHAKaW5kZXggMmIzY2RlMzYwODI0NzFjMTFjODdmY2Y2MWNjODFjYzM2MGMzOWQ5
MC4uZDM3OGFmYzZmOGExYjU3YTAzMDJlMmM4NjhiMjQwYTIwOTdmZTRjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAt
NTMwLDcgKzUzMCw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJUaW1lckZpcmVk
KCkKICAgICAvLyBodHRwczovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlw
L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCNzb3VyY2VidWZmZXItc2VnbWVudC1wYXJz
ZXItbG9vcAogICAgIC8vIFdoZW4gdGhlIHNlZ21lbnQgcGFyc2VyIGxvb3AgYWxnb3JpdGhtIGlz
IGludm9rZWQsIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYXBwZW5kRGF0YSA9IFdURk1vdmUobV9wZW5kaW5nQXBwZW5kRGF0YSk7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGFwcGVuZERhdGEgPSBXVEZNb3ZlKG1fcGVuZGlu
Z0FwcGVuZERhdGEpOwogICAgIC8vIDEuIExvb3AgVG9wOiBJZiB0aGUgaW5wdXQgYnVmZmVyIGlz
IGVtcHR5LCB0aGVuIGp1bXAgdG8gdGhlIG5lZWQgbW9yZSBkYXRhIHN0ZXAgYmVsb3cuCiAgICAg
aWYgKCFhcHBlbmREYXRhIHx8ICFhcHBlbmREYXRhLT5zaXplKCkpIHsKICAgICAgICAgc291cmNl
QnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKEFwcGVuZFJlc3VsdDo6QXBwZW5kU3VjY2VlZGVk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNl
QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5oCmluZGV4IDUyMGMwNzc1Njk2YTJmMGUyZTczMDA3MzVlOGM5Nzc0OTVmMWE2MTQuLmQ0Yzg1
NzljMGJiZDQ0M2E1MTJmYTlmNjhjNDI3ZWMwNDg4NWQwZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAtMjIyLDcgKzIyMiw3
IEBAIHByaXZhdGU6CiAKICAgICBXVEY6Ok9ic2VydmVyPHZvaWQqKCk+IG1fb3BhcXVlUm9vdFBy
b3ZpZGVyOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsK
ICAgICBUaW1lciBtX2FwcGVuZEJ1ZmZlclRpbWVyOwogCiAgICAgUmVmUHRyPFZpZGVvVHJhY2tM
aXN0PiBtX3ZpZGVvVHJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKaW5kZXgg
ZjU4MjdkZjkzNzk0OTNkMjgxMjcwMTc3Y2NmYmNhMDU1MTUzMjMxZi4uNzM5NDJhODM1OTMxYTlk
Mjg0YzZhNDUxYmI4ZGJmYjU3NjVjYWRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxl
ci5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJUQ0RhdGFD
aGFubmVsSGFuZGxlckNsaWVudDsKIGNsYXNzIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNv
bm5lY3Rpb247CiBjbGFzcyBSVENFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxl
ciBmaW5hbCA6IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIsIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0cnVjdCBNZXNzYWdl
IHsKICAgICAgICAgYm9vbCBpc1JhdyB7IGZhbHNlIH07Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
ICAgICB9OwogICAgIFZlY3RvcjxNZXNzYWdlPiBtX3BlbmRpbmdNZXNzYWdlczsKICAgICBib29s
IG1faXNQZW5kaW5nQ2xvc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggZTc5ZWJkYmFjNDA4M2U5NDU0YzY5ZDE5
OTZlNmZkMmQ4YzcyOTgxOS4uM2NlZWQwYTAxMWU3YjU0NmZhZGRmNDhiYmRhMjExZGZkZDUyNGM1
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
Y3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQsCiAgICAgbV9jb250
ZXh0SWRlbnRpZmllciA9IGNvbnRleHRJZGVudGlmaWVyOwogCiAgICAgZm9yIChhdXRvJiBtZXNz
YWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7Ci0gICAgICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsm
XShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgeworICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBb
Jl0oUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CiAgICAgICAgICAgICBjbGll
bnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOwogICAgICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBj
bGllbnQuZGlkUmVjZWl2ZVN0cmluZ0RhdGEodGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCmluZGV4IDQxZjk1MjgyMWU2MjAwOTNmOGVlZmUz
MmM1ZWQ0YWUwZjVlNTQxOTcuLjExYmQ0NWRlOTE1NTc3OWZmYzllZmIwM2U5NTUyOGYwNWU2NGQ3
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5o
CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIFJUQ0RhdGFDaGFubmVsU3RhdGUg
c3RhdGU7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8d2VicnRjOjpSVENFcnJvcj4gZXJyb3I7CiAg
ICAgfTsKLSAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PFN0YXRlQ2hhbmdlLCBTdHJp
bmcsIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50
PFN0YXRlQ2hhbmdlLCBTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAg
dXNpbmcgUGVuZGluZ01lc3NhZ2VzID0gVmVjdG9yPE1lc3NhZ2U+OwogICAgIHZvaWQgc3RvcmVN
ZXNzYWdlKFBlbmRpbmdNZXNzYWdlcyYsIGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYpOwogICAg
IHZvaWQgcHJvY2Vzc01lc3NhZ2UoY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVyJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKaW5k
ZXggMGI4OThmNmFkYjU3ZWIyNWRjNDkzN2Q4MWZmNWQxNGQ1Mjk3NmM4NC4uZDUxNzNmYmY4YjQw
MzQxYzVjZjhkOGE0ZjU1ZWVhYzhmZjgzOGEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaApAQCAtMzUsNyArMzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNzIFJlYWRhYmxl
U3RyZWFtOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIAogY2xhc3MgUmVhZGFibGVTdHJlYW1TaW5rIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFi
bGVTdHJlYW1TaW5rPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggODUxNDdjMDk2MWM5OTczMTYzMWYwZWRmYjll
ZmU3NGU1YzM2Y2FjYi4uNTI1MTBjMzA4MThmMGNhOTE2YTg4NDM3N2QyMjRhMWFiYTc5NWI4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cApAQCAtNDc1LDcgKzQ3NSw3IEBAIHN0YXRpYyBKU0M6OkpTUHJvbWlzZSogaGFuZGxlUmVzcG9u
c2VPblN0cmVhbWluZ0FjdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIC8v
IEZJWE1FOiBTdXBwb3J0IEZvcm1EYXRhIGxvYWRpbmcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyNDgKICAgICAgICAgY29tcGlsZXItPmZh
aWwoZ2xvYmFsT2JqZWN0LCBjcmVhdGVET01FeGNlcHRpb24oKmdsb2JhbE9iamVjdCwgRXhjZXB0
aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgIH0pKTsKLSAgICB9
LCBbJl0oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0o
UmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMo
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFs
aXplKGdsb2JhbE9iamVjdCk7CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3Zp
ZGVyLmgKaW5kZXggYjkxOGYzMTQxYWYyZjUyMTY0MjY4OThmYWVhODRmNGIwMmIxZTI3ZS4uYjhi
Nzc4NWY5MWQwNjhjMmE0NmNlYjFkNjU5NzU4ZmNmOGI2OWQ5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBA
IC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgU2NyaXB0QnVmZmVyIG1fc2Ny
aXB0QnVmZmVyOwotICAgIG11dGFibGUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1f
Y29udGlndW91c0J1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29u
dGlndW91c0J1ZmZlcjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsK
ICAgICBtdXRhYmxlIFN0cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggN2U0OWE5ZTcz
MjI2YjY1Y2MyOGJmNTk0ODEzYjBmODNiMjY5ZDIyYi4uZWYzN2YxZDBjYTQ2MmJiOWI3YzliNmE1
NWQxOGViYjRjMTE4MWE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgRGV0YWNoZWRP
ZmZzY3JlZW5DYW52YXM7CiBjbGFzcyBJREJWYWx1ZTsKIGNsYXNzIE1lc3NhZ2VQb3J0OwogY2xh
c3MgSW1hZ2VCaXRtYXBCYWNraW5nOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgU2VyaWFsaXphdGlvblJldHVybkNvZGU7CiAK
IGVudW0gY2xhc3MgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB7IE5vblRocm93aW5nLCBUaHJvd2lu
ZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggNGI0Mzk5
NTRmMTliYTRiODIzN2M5ZTVkYWVkNDFlNGJhN2ZkYTBlYy4uY2FkYzRhMDU5NGM1YmY2Mzc4Y2Zh
N2IwZThjYTQ3NTI2NTYwYmFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuY3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChE
b2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2luRG9jdW1lbnRD
dXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgICAgIFNWR0ZvbnRFbGVtZW50JiBmb250
RWxlbWVudCA9IGRvd25jYXN0PFNWR0ZvbnRFbGVtZW50PigqbV9zdmdGb250RmFjZUVsZW1lbnQt
PnBhcmVudE5vZGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gb3RmRm9udCA9IGNvbnZl
cnRTVkdUb09URkZvbnQoZm9udEVsZW1lbnQpKQotICAgICAgICAgICAgICAgICAgICBtX2dlbmVy
YXRlZE9URkJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90
ZkZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKG1fZ2VuZXJhdGVkT1RGQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAg
ICAgIG1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoKm1fZ2VuZXJhdGVkT1RGQnVmZmVyLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0
Zm9ybURhdGEpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6Omxv
YWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICB9IGVsc2UgaWYgKG1faW1tZWRpYXRlU291
cmNlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSk7CiAgICAgICAgICAgICBib29sIHdyYXBwaW5nOwotICAgICAgICAgICAgYXV0byBidWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2Ut
PmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFk
ZHJlc3MoKSksIG1faW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOwogICAgICAgICAgICAg
bV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3Vz
dG9tRm9udERhdGEoYnVmZmVyLmdldCgpLCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAg
ICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSk7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNv
dXJjZS5oCmluZGV4IDZhODJjZjFlM2RjOTE1OTc4NTMzNjViZDMxZTM2MjMyNzg2YTA4ODIuLjEw
OGU2Yzg3NjdkMGQyZmRhY2JlNjUwNGViYzUwNzBlODgyYmU2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ1NTRm9udEZhY2U7CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7Ci1jbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1l
bnQ7CiBjbGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKQEAgLTkzLDcgKzkz
LDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0
b3I7IC8vIEZvciByZW1vdGUgZm9udHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxzbyBmb3Ig
cmVtb3RlIGZvbnRzLCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAKLSAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CiAgICAgUmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IDFkZWFjNGY0MWNmNDlm
MWY4ODJkY2NlZmQ0OGNmNmE5NzMyZjNlZDkuLmM0MmVjMDUxZmUxMWViYTE0ZjgxMzM1OWQ4ZDE3
YTJjMjgxNjY0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC00MDIsNyAr
NDAyLDcgQEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlVHlwZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9h
cmRGaWxlUmVhZGVyIHsKICAgICAgICAgdHlwZXMuYWRkKEZpbGU6OmNvbnRlbnRUeXBlRm9yRmls
ZShmaWxlbmFtZSkpOwogICAgIH0KIAotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCisgICAgdm9pZCByZWFk
QnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpCiAgICAgewogICAgICAgICB0eXBlcy5hZGQodHlwZSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGZhMTQ2N2RiOGVkODczNzQ3YzA0NDczYjE0
YzY4OWFkN2I3MGExM2QuLmM1ZTllMjZiMzcyYWU2ODNmMTg2OGU5MjBjNDVlZDcwZWRmNTU0N2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxMjUsNyArNDEyNSw3IEBAIFByb21p
c2VkQXR0YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQm
IGVsZW1lbnQpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRp
dGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4g
YWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlv
bmFsRGF0YTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmRE
YXRhRm9yQXR0YWNobWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRh
KTsKICNlbmRpZgpAQCAtNDEzMyw3ICs0MTMzLDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBF
ZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1
cm4geyBhdHRhY2htZW50LT51bmlxdWVJZGVudGlmaWVyKCksIFdURk1vdmUoYWRkaXRpb25hbFR5
cGVzKSwgV1RGTW92ZShhZGRpdGlvbmFsRGF0YSkgfTsKIH0KIAotdm9pZCBFZGl0b3I6OnJlZ2lz
dGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIEVkaXRvcjo6cmVnaXN0ZXJBdHRhY2htZW50SWRl
bnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgp
KQogICAgICAgICBjbGllbnQtPnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoaWRlbnRpZmll
ciwgY29udGVudFR5cGUsIHByZWZlcnJlZEZpbGVOYW1lLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oCmluZGV4IGY1ZmNkY2NiNjY2NTgyMDIzODUyMGU2MzIzNTFjOWZmYTJh
YjlhYTguLjFkMDcxNmM1YjkzYzhiYjdhZDczZjQxNzRjYTgwNDU5MDVmOTE5MTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaApAQCAtNTgsNyArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOwogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwog
Y2xhc3MgQ29tcG9zaXRlRWRpdENvbW1hbmQ7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3VzdG9tVW5kb1N0ZXA7CiBjbGFzcyBEYXRh
VHJhbnNmZXI7CiBjbGFzcyBEZWxldGVCdXR0b25Db250cm9sbGVyOwpAQCAtNzUsNyArNzUsNyBA
QCBjbGFzcyBLaWxsUmluZzsKIGNsYXNzIFBhc3RlYm9hcmQ7CiBjbGFzcyBQYXN0ZWJvYXJkV3Jp
dGVyRGF0YTsKIGNsYXNzIFJlbmRlckxheWVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7CiBjbGFzcyBTcGVsbENoZWNrUmVx
dWVzdDsKIGNsYXNzIFNwZWxsQ2hlY2tlcjsKQEAgLTUzNyw3ICs1MzcsNyBAQCBwdWJsaWM6CiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZy
b21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwog
I2VuZGlmCiAKICAgICBib29sIGNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCkgY29u
c3Q7CkBAIC01NjQsNyArNTY0LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2
b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBmaWxlRGF0YSk7CisgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0
cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGZp
bGVEYXRhKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YT4mJik7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBT
dHJpbmcmKTsKQEAgLTU3NCw3ICs1NzQsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYp
OwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0
YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOworICAgIHZvaWQgZ2V0
UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJp
bmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSk7CiAj
ZW5kaWYKICNlbmRpZgogCkBAIC02MTksMTIgKzYxOSwxMiBAQCBwcml2YXRlOgogICAgIHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGFkanVzdGVkU2VsZWN0aW9uUmFuZ2UoKTsKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZWxlY3Rp
b25JbldlYkFyY2hpdmVGb3JtYXQoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZWxlY3Rp
b25JbldlYkFyY2hpdmVGb3JtYXQoKTsKICAgICBTdHJpbmcgc2VsZWN0aW9uSW5IVE1MRm9ybWF0
KCk7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZl
Rm9ybWF0KEVsZW1lbnQmKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2ViQXJj
aGl2ZUZvcm1hdChFbGVtZW50Jik7CiAgICAgc3RhdGljIFN0cmluZyB1c2VyVmlzaWJsZVN0cmlu
Zyhjb25zdCBVUkwmKTsKLSAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwotICAgIHN0YXRpYyBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0
cmluZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1h
dChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CiAjZW5kaWYKICAgICB2b2lk
IHBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiwg
Y29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKaW5kZXggMzljM2IxZmEzZDg1NmY4ZDg0OWM2
OTMzMWQ4OWU5OThmN2U3NjIzYi4uZjMwMjgyMzU2OTAwNmY1Y2Y5ZGJiNGVmYzM3M2U2N2VmMDVm
MTlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNo
bWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5oCkBAIC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBzdHJ1
Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhIHsKICAgICBTdHJpbmcgaWRlbnRpZmllcjsKICAg
ICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7
CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaAppbmRleCAwOGFhMTI0
MjY2MjBmNzY5NTNhNzliMzRlZGU1ZjZkZjA1MjdiMDE1Li45NTdiNGZkNGE1NTdmYzgxY2QzMDY5
ZWVhY2I4OTQ4OGE5NDdiN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvbnRlbnRSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRS
ZWFkZXIuaApAQCAtNzIsMTYgKzcyLDE2IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWFkRmlsZVBh
dGgoY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplID0geyB9LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0geyB9KSBvdmVycmlkZTsKICAg
ICBib29sIHJlYWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKICAg
ICBib29sIHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZElt
YWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9u
U2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKKyAgICBib29s
IHJlYWRJbWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0
eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92
ZXJyaWRlOwogICAgIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxl
KSBvdmVycmlkZTsKICAgICBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hp
dmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
Ci0gICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50
YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRXZWJBcmNoaXZlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEZEKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEYoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQ
cmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRl
OwogI2VuZGlmCiB9OwogCkBAIC05OSwxNiArOTksMTYgQEAgcHJpdmF0ZToKICAgICBib29sIHJl
YWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBT
dHJpbmcmID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZEZp
bGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgYm9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBib29sIHJl
YWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25T
aXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZEltYWdl
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRp
b25TaXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZFVS
TChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIHJlYWRXZWJB
cmNoaXZlKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURkQoU2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpIG92ZXJy
aWRlOwotICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBib29sIHJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOworICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCA1
NDllYjdkMmU0YzA3NTQ4ZTRhOGM5ZWEyNGVjMjBlNGYyMWJmYTI1Li4xMTdkYmE2OGVkYjBiZDRi
NmMzMGUwOTQ4NWQ5ZDBjMGYyOWMzODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBA
IHZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkRmlsZW5hbWUoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSkKICAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQuZ2V0
KCksIGZpbGVuYW1lKSk7CiB9CiAKLXZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpy
ZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRl
cjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBmaWxlcy5hcHBl
bmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIEJsb2I6OmNyZWF0ZShjb250ZXh0LmdldCgp
LCBidWZmZXItPmV4dHJhY3REYXRhKCksIHR5cGUpLCBmaWxlbmFtZSkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKaW5k
ZXggNWM1MjlkZDdjOGVjYzAwMDQ4ZmNiNGQxNTgxNDYzNWIyNGQ5MGJiNy4uOWQ4MTYwNWYxOTky
OThmMTljMGVkNjk5NWZlM2JkNzc4MzAzNGZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCkBAIC00MSw3ICs0MSw3IEBA
IHN0cnVjdCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmls
ZVJlYWRlciB7CiAgICAgfldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcigpOwogCiAgICAgdm9p
ZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCByZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsOwogCiAgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IGNvbnRleHQ7CiAgICAg
VmVjdG9yPFJlZjxGaWxlPj4gZmlsZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbQppbmRleCBkMGM5MzMxMDBjNjU1ZjFmYTg1MjUyNzg4MTg3MDQ5OWMyZjYx
ZmUzLi5hODViN2FhNzUyNmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5OTE0YWFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBA
QCB2b2lkIEVkaXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9u
dEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsCiAgICAgICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2Jy
aWRnZSBpZCljdEZvbnQ7CiB9CiAKLXN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0
dHJpYnV0ZWRTdHJpbmcpCitzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRh
Rm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcp
CiB7CiAgICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tl
eWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyBy
ZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKKyAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9i
amVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVs
bHB0cl0pOwogfQogCiBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAt
ODcsNyArODcsNyBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAj
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9h
cmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJp
bmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91
dERhdGEpCit2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1l
bnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQogewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0g
bWFrZVJhbmdlU2VsZWN0aW5nTm9kZShlbGVtZW50KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoZWxlbWVudFJhbmdlLCBvdXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3
ICs5OSw3IEBAIHZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNo
bWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hp
dmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAg
ICAgIGlmIChhdXRvIGRhdGEgPSBhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewog
ICAgICAgICAgICAgICAgIG91dFR5cGVzLmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0g
ICAgICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xNTEsMTIgKzE1MSwxMiBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFz
dGVib2FyZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRX
cml0ZXJEYXRhLnNldFdlYkNvbnRlbnQoV1RGTW92ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZv
cm1hdCgpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2
ZUZvcm1hdCgpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
RnJvbVNlbGVjdGlvbihtX2RvY3VtZW50LmZyYW1lKCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigp
LmdldCgpKTsKIH0KIAogLy8gRklYTUU6IE1ha2VzIG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0
Rm9yRGF0YVRyYW5zZmVyIGFsd2F5cyBpbmNsdWRlcyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVj
dGlvbkZvclBhc3RlYm9hcmQgZG9lcyBub3QuCkBAIC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcg
RWRpdG9yOjp1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RG
Ojp1c2VyVmlzaWJsZVN0cmluZyh1cmwpOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5n
KQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmli
dXRlZFN0cmluZyAqc3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxl
bmd0aDsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgp
IGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50
QXR0cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0
b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0cjxT
aGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAq
c3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBp
ZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRy
aWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBS
VEZGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsg
fV0pOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4
IDNjNWU1NDMyNWI5ZmUyMzU2N2VlNDJkZTk5ZjliNWIxNWM0MmIxMDAuLjA3ODI0ODM2MmFhMDU0
ZGMzYWIwMDAwNDUxNzE4NDE5OGE1ODBmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTIzMjIsNyArMjMyMiw3IEBAIHN0YXRpYyBSZXRh
aW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRh
dGFTb3VyY2UsIE5TCiBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVy
Rm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJ
bWFnZSogY2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCkpIHsKLSAgICAgICAgaWYg
KFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVy
KCkpCisgICAgICAgIGlmIChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBj
YWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKICAgICAgICAgICAgIHJldHVybiBhZG9wdE5T
KFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJl
ZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJl
YWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVh
ZGVyQ29jb2EubW0KaW5kZXggYWRhNjZkMmFjMjk2MzA1ZDYwYzYzMTczNjczMDk4MTY3OWY5ZjBm
YS4uNzZiMWEwMDlkZTQzMGZhM2I1NGQ5YTE1ZTY3OGNkODNmMzE0NWZlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0K
QEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgYm9vbCBzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2ht
ZW50RGF0YShjb25zdCBGcmFtZSYgZnJhbWUpCiAKICNlbmRpZgogCi1zdGF0aWMgUmVmPERvY3Vt
ZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFt
ZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQorc3Rh
dGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVu
dChGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkb2N1bWVudCwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBQcmVzZW50YXRpb25T
aXplIHByZWZlcnJlZFNpemUpCiB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAg
ICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFt
ZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMg
dm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1
bWVudEZyYWdtZW50JiBmcgogICAgIHN0cnVjdCBBdHRhY2htZW50SW5zZXJ0aW9uSW5mbyB7CiAg
ICAgICAgIFN0cmluZyBmaWxlTmFtZTsKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAg
ICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gZGF0YTsKICAgICAgICAgUmVmPEVsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudDsKICAg
ICB9OwogCkBAIC00MjgsNyArNDI4LDcgQEAgc3RydWN0IE1hcmt1cEFuZEFyY2hpdmUgewogICAg
IFJlZjxBcmNoaXZlPiBhcmNoaXZlOwogfTsKIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3Vw
QW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBl
QXNIVE1MKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1h
cmt1cEFuZEFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6
OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKIHsK
ICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoVVJMKCksIGJ1ZmZl
cik7CiAgICAgaWYgKCFhcmNoaXZlKQpAQCAtNDk3LDcgKzQ5Nyw3IEBAIHN0YXRpYyBTdHJpbmcg
c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5h
dGlvbkRvY3VtCiAgICAgcmV0dXJuIHNhbml0aXplZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVu
dChXVEZNb3ZlKGZyYWdtZW50KSwgKnN0YWdpbmdEb2N1bWVudCwgbXNvTGlzdFF1aXJrcywgbWFy
a3VwQW5kQXJjaGl2ZS5tYXJrdXApOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRX
ZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpy
ZWFkV2ViQXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYg
KGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9j
dW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTMyLDcgKzUzMiw3IEBAIGJvb2wg
V2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFdl
YkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFk
ZXI6OnJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYxMiw3
ICs2MTIsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRIVE1MKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogICAgIHJldHVybiAhbWFya3VwLmlzRW1wdHkoKTsKIH0KIAotYm9vbCBX
ZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgfHwg
IWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYyNiw3ICs2MjYs
NyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJl
YWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVy
OjpyZWFkUlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFm
cmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzksNyArNjM5LDcg
QEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
UlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRG
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUuc2V0dGlu
Z3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC02NTMsNyArNjUzLDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJr
dXBSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRN
YXJrdXBSZWFkZXI6OnJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjc2
LDcgKzY3Niw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFBsYWluVGV4dChjb25zdCBT
dHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5
cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKK2Jvb2wgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNl
bnRhdGlvblNpemUpCiB7CiAgICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50KCkpOwogICAgIGF1dG8m
IGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CkBAIC03NDYsNyArNzQ2LDcgQEAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgcmV0dXJuIGF0dGFjaG1lbnQ7CiB9CiAK
LXN0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0
cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQorc3RhdGljIFJlZjxI
VE1MRWxlbWVudD4gYXR0YWNobWVudEZvckRhdGEoRnJhbWUmIGZyYW1lLCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQogewogICAgIFJlZiBkb2N1
bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwogICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRh
Y2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQp
OwpAQCAtODMzLDcgKzgzMyw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNp
emUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVh
ZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVz
ZW50YXRpb25TaXplKQogewogICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250
ZW50UmVhZGVyR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRS
ZWFkZXJHdGsuY3BwCmluZGV4IDYwNDg2ZTcxYWQ1OWZlY2M3MTVmZjBhMDliMWMzNTU4YjdiMzQy
YzIuLmQzZTk4MTliZDUzMWY4NDg2YTMxN2FiOWY5ZWQ4M2E5ODg1YmUyYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCkBAIC03
MSw3ICs3MSw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFBsYWluVGV4dChjb25zdCBT
dHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5
cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKK2Jvb2wgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNl
bnRhdGlvblNpemUpCiB7CiAgICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50KCkpOwogICAgIGF1dG8m
IGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW0KaW5kZXggNWY4YmMzNDc3YzFjYTIxYjBjNzIyNzIyN2FhZjJkYTRiMTkyYmQx
YS4uMmQxOWI5YzdjMjJiM2ViYzI2N2M2NzYxMDZjODkyZjA5Yjc3NzUzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtMTY2LDE1ICsxNjYsMTUgQEAgdm9pZCBF
ZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkKICAgICBjbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChT
dHJpbmcoKSk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6Omlt
YWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKK1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VF
bGVtZW50KQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShp
bWFnZUVsZW1lbnQpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdE
YXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKIH0KIAotUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEVk
aXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkKIHsKICAgICAvLyBGSVhNRTogVGhlIGludGVyZmFjZSB0byB0aGlzIGZ1bmN0aW9uIGlz
IGF3a3dhcmQuIFdlJ2QgcHJvYmFibHkgYmUgYmV0dGVyIG9mZiB3aXRoIHRocmVlIHNlcGFyYXRl
IGZ1bmN0aW9ucy4gQXMgb2YgdGhpcyB3cml0aW5nLCB0aGlzIGlzIG9ubHkgdXNlZCBpbiBXZWJL
aXQyIHRvIGltcGxlbWVudCB0aGUgbWV0aG9kIC1bV0tWaWV3IHdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkOnR5cGVzOl0sIHdoaWNoIGlzIG9ubHkgdXNlZCB0byBzdXBwb3J0IE9TIFggc2Vydmlj
ZXMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKaW5kZXggNDVkOTMzZTEzY2E0ZDIyNTFjNWRlZDg0OGFh
OWU5ODcyYzc2NzQ4OS4uYmNhNjY5NmViZTZmMGVkZGRkZWU3OWI3M2MzZWUxNDQ5NmQ4MmZiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgQmxvYkxvYWRlcjsK
IGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFtOwogY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBFeGNlcHRpb25PcjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKaW5kZXggNTU5
ZWJjYzQ4YzVmMDk2YWMxOWJhZTdkOWY3MThiNzFmMmEzNTMyMi4uNDJmNDE4MGRmYTg0MjdlMGU2
MGY4MWViNzliMTkxODdjYWZkYmExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdv
cmtTZW5kUXVldWUuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgTmV0d29ya1NlbmRRdWV1ZTo6
cHJvY2Vzc01lc3NhZ2VzKCkKICAgICAgICAgYm9vbCBzaG91bGRTdG9wUHJvY2Vzc2luZyA9IGZh
bHNlOwogICAgICAgICBzd2l0Y2hPbihtX3F1ZXVlLmZpcnN0KCksIFt0aGlzXShjb25zdCBDU3Ry
aW5nJiB1dGY4KSB7CiAgICAgICAgICAgICBtX3dyaXRlU3RyaW5nKHV0ZjgpOwotICAgICAgICB9
LCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKKyAgICAgICAgfSwgW3RoaXNdKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgZGF0YSkgewogICAgICAgICAgICAgZGF0YS0+Zm9y
RWFjaFNlZ21lbnQobV93cml0ZVJhd0RhdGEpOwogICAgICAgICB9LCBbdGhpcywgJnNob3VsZFN0
b3BQcm9jZXNzaW5nXShVbmlxdWVSZWY8QmxvYkxvYWRlcj4mIGxvYWRlcikgewogICAgICAgICAg
ICAgYXV0byBlcnJvckNvZGUgPSBsb2FkZXItPmVycm9yQ29kZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaAppbmRleCA1NTFmNzBmOTE2N2IyYmZjYjI0NGJiMmIz
NzAwYmZiYWFmNTQ3OTZjLi5kMjNjZmViYjQ1MDhiYzMwMDkxNWJiOTk2ZDNmMTUwNjJjZTM1MDll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaApAQCAtNDMsNyAr
NDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CiBjbGFzcyBCbG9iTG9h
ZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTmV0d29ya1NlbmRRdWV1ZSA6IHB1YmxpYyBDb250ZXh0
RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzTWVzc2FnZXMoKTsKIAotICAgIHVzaW5nIE1lc3Nh
Z2UgPSBzdGQ6OnZhcmlhbnQ8Q1N0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4sIFVuaXF1ZVJlZjxC
bG9iTG9hZGVyPj47CisgICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxDU3RyaW5nLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIFVuaXF1ZVJlZjxCbG9iTG9hZGVyPj47CiAgICAg
RGVxdWU8TWVzc2FnZT4gbV9xdWV1ZTsKIAogICAgIFdyaXRlU3RyaW5nIG1fd3JpdGVTdHJpbmc7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCmluZGV4IDEw
MTZkY2YzYzE5OWU1NGNhODE0YzI2NDVhOWE4NTk4YTVjMWQzNWUuLjc1MjMwMTdiYTcyOTQwNTYz
Yjc1ZjQ2NmE2OGVkMWNjYjNkZWU4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGly
ZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yNzYsOSArMjc2LDkgQEAgdm9pZCBGVFBEaXJlY3RvcnlE
b2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNvbnN0IFN0cmluZyYgaW5wdXRM
aW5lKQogICAgIGFwcGVuZEVudHJ5KGZpbGVuYW1lLCBwcm9jZXNzRmlsZXNpemVTdHJpbmcocmVz
dWx0LmZpbGVTaXplLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSksIHByb2Nlc3NG
aWxlRGF0ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRUaW1lKSwgcmVzdWx0LnR5cGUgPT0gRlRQRGly
ZWN0b3J5RW50cnkpOwogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGlu
Z3MpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9j
dW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5n
cy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5ncy5mdHBEaXJlY3RvcnlUZW1w
bGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgTE9HKEZUUCwgIkxvYWRlZCBG
VFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4iLCBidWZmZXItPnNpemUoKSk7CiAg
ICAgcmV0dXJuIGJ1ZmZlcjsKQEAgLTI4Niw3ICsyODYsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25z
dCBTZQogICAgIAogYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50
VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiB0ZW1wbGF0
ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNl
dHRpbmdzKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1wbGF0ZURv
Y3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNldHRp
bmdzKCkpLmxlYWtSZWYoKTsKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBzdG9yaW5nIHRoZSBk
YXRhLCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBpZiB3ZSBjb3VsZCBwYXJzZSB0aGUgdGVt
cGxhdGUgZGF0YSBpbnRvIHRoZQogICAgIC8vIHRlbXBsYXRlIERvY3VtZW50IG9uY2UsIHN0b3Jl
IHRoYXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0IHdoZW5ldmVyIHdlIGdldCBhbiBGVFAgZGly
ZWN0b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2ht
ZW50RWxlbWVudC5jcHAKaW5kZXggNTZhMDZmY2FmMjczZDI1ZGM0Yzc1ZGNlNTY5YWFjOGYxYWE1
OTUyNy4uZDJiODc0MWEwNDQzNDJjN2ZmZDllOGE1MzNjYzhhMTIwZTI5YmFkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMjI3LDcgKzIy
Nyw3IEBAIHN0YXRpYyBib29sIG1pbWVUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdlQXR0YWNo
bWVudChjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUobWltZVR5cGUpIHx8IE1JTUVUeXBlUmVnaXN0cnk6
OmlzUERGTUlNRVR5cGUobWltZVR5cGUpOwogfQogCi12b2lkIEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50
Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBhdXRvKiBob3N0
RWxlbWVudCA9IHNoYWRvd0hvc3QoKTsKICAgICBpZiAoIWlzPEhUTUxJbWFnZUVsZW1lbnQ+KGhv
c3RFbGVtZW50KSB8fCAhYnVmZmVyLT5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuaAppbmRleCA1NzNlYzJlYWUxY2RjMDYwOWYyNjFjMzg0MDBiYjAy
YzQ4MGY3YmRkLi42NjFkZWM5Mzc2ZDhhOWQ2ZDQ3MTdmZDBiNGNlN2Y4MmZmMDNmNzU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKQEAgLTM2LDcgKzM2
LDcgQEAgY2xhc3MgRmlsZTsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJB
dHRhY2htZW50OwogY2xhc3MgU2hhcmVhYmxlQml0bWFwOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVt
ZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKEhUTUxBdHRhY2htZW50RWxlbWVudCk7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVu
dCYpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVBdHRyaWJ1dGVzKHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgbmV3RmlsZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmV3RmlsZW5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwpOwogCiAg
ICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0
aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKaW5kZXggNTE3MWI5Y2RjNzg5MzE3MWUyMWU1ZjRiZjU1MDE3ZWY5NDRh
Yzc5NS4uMWE1NmJjMDM1OWNjZTFmNTBkY2RkYTA2NTIyMmEwMTA5NWE2OTA1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yOTM4LDcgKzI5MzgsNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZO
ZWNlc3NhcnkoKQogICAgIGF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKTsKIH0K
IAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0
aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjZG1DbGllbnRVbnJlcXVl
c3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBtZWRpYVBs
YXllckluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhVHlwZSwgaW5pdERhdGEt
PnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaAppbmRleCA2OTU2Njk0OTYzMTBlZjkxMDhiOTU2ZmRhNDgyMTQzMDE0OTcwZWNiLi42
YzNiNjkzYjdiMTBlZGEzMGU1MWQ0YzY2MzFiZTNmYjUwY2JmODBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNzIwLDcgKzcyMCw3IEBAIHByaXZhdGU6CiAKICAg
ICAvLyBDRE1DbGllbnQKICAgICB2b2lkIGNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNr
SWZOZWNlc3NhcnkoKSBmaW5hbDsKLSAgICB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlh
bGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikg
ZmluYWw7CisgICAgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJl
Y2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRl
eCA0NDJkMDk0NmJlMjUwZGNjZjU5MjdiYWE5Mjc5M2E3MGVlOTE5MzNlLi4wMGQ4ZjIzOWQ3MTI3
YzYxY2FlMWI1OGQ5YzRhMzAzYTliM2M5MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1
bWVudC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OnVwZGF0ZUR1
cmluZ1BhcnNpbmcoKQogICAgIGlmICghbV9pbWFnZUVsZW1lbnQpCiAgICAgICAgIGNyZWF0ZURv
Y3VtZW50U3RydWN0dXJlKCk7CiAKLSAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSkKKyAgICBpZiAoUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCkpCiAg
ICAgICAgIG1faW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpLT51cGRhdGVCdWZmZXIoKmJ1ZmZl
cik7CiAKICAgICBpbWFnZVVwZGF0ZWQoKTsKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEltYWdl
RG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygpCiB7CiAgICAgaWYgKCFwYXJzZXIoKS0+aXNTdG9w
cGVkKCkgJiYgbV9pbWFnZUVsZW1lbnQpIHsKICAgICAgICAgQ2FjaGVkSW1hZ2UmIGNhY2hlZElt
YWdlID0gKm1faW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpOwotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICAgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBsb2FkZXIoKS0+bWFpblJlc291
cmNlRGF0YSgpOwogCiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBtdWx0aXBhcnQgaW1hZ2UsIG1h
a2UgYSBjb3B5IG9mIHRoZSBjdXJyZW50IHBhcnQsIHNpbmNlIHRoZSByZXNvdXJjZSBkYXRhCiAg
ICAgICAgIC8vIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIG5leHQgcGFydC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAK
aW5kZXggYTdjYTcxNjJkNzkxZWQ3ZmJhOGNjOTFjMjFhMmNmM2FmNmU2OWE3ZS4uMTg3OTNmZjA2
NjMzOGZiNjBhMzRkZWM5MDliYzJkZGQyOGJlYWZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTg1MCw3ICs4
NTAsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bQogICAgICAgICBuZXR3b3JrQWdlbnQtPmlu
dGVyY2VwdFJlcXVlc3QobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4m
JiBoYW5kbGVyKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3Bv
bnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBpZiAoYXV0
byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50
KCkpCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVzcG9uc2UocmVzcG9uc2UsIGlk
ZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDhlNjVjNGViMTAyMzM1MjFm
NDhjN2Y0YjEyMGFkMmM4OTA5YTA3YmEuLmQyOTU3ODEwZDgzODJjOTM1MWQ1YTkzZjE0NGFlZDE0
OTNiY2M2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
IGNsYXNzIFNoYWRvd1Jvb3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogY2xhc3MgVGltZXJCYXNlOwogY2xhc3MgV2ViS2l0TmFtZWRGbG93Owog
Y2xhc3MgV2ViU29ja2V0Q2hhbm5lbDsKQEAgLTIzNiw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSYsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lk
IGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShj
b25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9u
c2UoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lk
IGFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPik7CiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNv
bGVNZXNzYWdlPik7CkBAIC00NDEsNyArNDQxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9u
c2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAg
ICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IFJlc291cmNlTG9hZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4m
Jik7Ci0gICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0
aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgc3Rk
Ojp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKIApAQCAtMTI4OSw3ICsx
Mjg5LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRS
ZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIEYKICAgICAgICAgaW50ZXJjZXB0UmVxdWVz
dEltcGwoKmFnZW50cywgbG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFt
ZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCitpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZy
YW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJj
ZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAgaWYgKGF1dG8qIGFnZW50cyA9IGlu
c3RydW1lbnRpbmdBZ2VudHMoZnJhbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcAppbmRleCA2MWU0
YmMzYmEwMTllZTI1ZTVjOGJjMjIxZGZmNjA3N2VkZGI4NjNkLi5mMDY0MDNhNjIzNGI0MmI2YWQy
YTgwYjAxOTRhNTk2ZDg5ZjZlNmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcApAQCAtNDUsNyAr
NDUsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVx
dWVzdEludGVybmFsKFJlc291cmNlTG9hZGVyJiBsbwogICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW50ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2VJbnRl
cm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhh
bmRsZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVz
cG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6aW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3Zl
KGhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaAppbmRleCBmNzYxMTRjZTk4ZjQyYTdmZjkw
NmE0OGQwNDIwYjk2MzA1ZDM2OTE0Li4wN2I0MjFiNTljMTU1NWUxYTI5MWUxOGViYjI2MjIxMjJm
MTY1OGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCkBAIC0zNiwyMCArMzYsMjAgQEAgY2xhc3MgRnJh
bWU7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJl
cXVlc3QoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMg
Ym9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9h
ZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJik7Ci0gICAgc3Rh
dGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAg
IHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+KT4mJik7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVx
dWVzdEludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAg
c3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1
ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZUludGVybmFs
KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNw
b25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiB9OwogCiBp
bmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2Vw
dFJlcXVlc3QoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCkBAIC03Niw3ICs3Niw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYgbG9hCiAgICAgaW50ZXJj
ZXB0UmVxdWVzdEludGVybmFsKGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLWlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVy
KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRS
ZXNwb25zZShjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGZyYW1lLCByZXNwb25zZSkpOwogICAg
IGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoKmZyYW1lLCByZXNwb25zZSwgaWRlbnRpZmllciwg
V1RGTW92ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA4YTYxNTA0MzkxMDk5ZmZlMmU0YTA2ZTc0ODk2ZWY4
ODhlZDA0NjAzLi5mMzJmNjYwYjkxNzNiYWU4ZDVjZDlhMTMwZWFlNThiOTdkNWVjZTg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAK
QEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRDYWNoZWRS
ZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzbwogICAgIHJlc291cmNl
RGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2UoY2FjaGVkUmVzb3VyY2UpOwogfQogCi12b2lkIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hh
cmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKIHsKICAg
ICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChy
ZXF1ZXN0SWQpOwogICAgIGlmICghcmVzb3VyY2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBkNzRlZTEwOTMzZDdlZTRlNWY3
ZWY5YjdjNDA5MDlmZTk3ZDA3YzlkLi5lZTM5NDU3Zjc2NzJlYWNhYWM5MGE1YjZiYzg4MTEwOGNi
ZGE4YTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYWNo
ZWRSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0UmVzb3VyY2VE
ZWNvZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZXNE
YXRhIHsKQEAgLTkwLDggKzkwLDggQEAgcHVibGljOgogICAgICAgICBSZWZQdHI8VGV4dFJlc291
cmNlRGVjb2Rlcj4gZGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rlci5jb3B5UmVmKCk7
IH0KICAgICAgICAgdm9pZCBzZXREZWNvZGVyKFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiYm
IGRlY29kZXIpIHsgbV9kZWNvZGVyID0gV1RGTW92ZShkZWNvZGVyKTsgfQogCi0gICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmNvcHlS
ZWYoKTsgfQotICAgICAgICB2b2lkIHNldEJ1ZmZlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikgeyBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsgfQorICAgICAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuY29w
eVJlZigpOyB9CisgICAgICAgIHZvaWQgc2V0QnVmZmVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsgfQogCiAgICAg
ICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiYgY2VydGlmaWNhdGVJbmZv
KCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0ZUluZm87IH0KICAgICAgICAgdm9pZCBzZXRD
ZXJ0aWZpY2F0ZUluZm8oY29uc3Qgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0
aWZpY2F0ZUluZm8pIHsgbV9jZXJ0aWZpY2F0ZUluZm8gPSBjZXJ0aWZpY2F0ZUluZm87IH0KQEAg
LTEyMiw3ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAg
ICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwogICAgICAgICBVbmlx
dWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9kYXRhQnVmZmVyOwotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4g
bV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJlc291
cmNlIHsgbnVsbHB0ciB9OwogICAgICAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlw
ZSBtX3R5cGUgeyBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UgfTsKQEAgLTE0Niw3
ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291
cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgpOwogICAgIHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBDYWNoZWRSZXNvdXJjZSopOwotICAgIHZvaWQgYWRkUmVzb3VyY2VT
aGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSk7CisgICAgdm9pZCBhZGRSZXNvdXJj
ZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSk7CiAgICAgUmVz
b3VyY2VEYXRhIGNvbnN0KiBkYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICBSZXNv
dXJjZURhdGEgY29uc3QqIGRhdGFGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIFZlY3Rv
cjxTdHJpbmc+IHJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKaW5kZXggZDE1Y2I0Yjg1MTc4NjdjMzQ4YzE3OTc0ZjI3MTU3NDY1NTlkYTQ1MC4u
MTg5ZjI2YjA5OGI3MzYxZGNmOGU5ZDY0ZTM1OWU3NWZkOWMwOTcyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmNwcApAQCAtMTE0MCw3ICsxMTQwLDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Omlu
dGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgRnVuY3Rpb248dm8KICAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdEludGVyY2VwdGVkKHJlcXVlc3RJZCwgYnVpbGRP
YmplY3RGb3JSZXNvdXJjZVJlcXVlc3QobG9hZGVyLnJlcXVlc3QoKSkpOwogfQogCi12b2lkIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPik+JiYgaGFuZGxlcikKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxl
cikKIHsKICAgICBBU1NFUlQobV9lbmFibGVkKTsKICAgICBBU1NFUlQobV9pbnRlcmNlcHRpb25F
bmFibGVkKTsKQEAgLTEyNDMsNyArMTI0Myw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZv
aWQ+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3BvbnNlKGNvbnN0CiAg
ICAgICAgIG92ZXJyaWRlUmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1l
OjpDb250ZW50VHlwZSwgb3ZlcnJpZGVSZXNwb25zZS5taW1lVHlwZSgpKTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IG92ZXJyaWRlRGF0YTsKICAgICBpZiAoYmFzZTY0RW5jb2RlZCkgewog
ICAgICAgICBhdXRvIGJ1ZmZlciA9IGJhc2U2NERlY29kZShjb250ZW50KTsKICAgICAgICAgaWYg
KCFidWZmZXIpCkBAIC0xMjcxLDcgKzEyNzEsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2
b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9ucwog
ICAgIGlmIChsb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZCgiVW5hYmxlIHRvIGZ1bGZpbGwgcmVxdWVzdCwgaXQgaGFzIGFscmVhZHkg
YmVlbiBwcm9jZXNzZWQiX3MpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICBpZiAoYmFzZTY0RW5j
b2RlZCkgewogICAgICAgICBhdXRvIGJ1ZmZlciA9IGJhc2U2NERlY29kZShjb250ZW50KTsKICAg
ICAgICAgaWYgKCFidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCA4ZjZmYmNjMjkzYWViZjhiOWQ1
Yzk0NWQyODI5YTE1MjdiNzRiYzdmLi42YmNkODdkZGNkOGIwNDQxMzA4ZDFkMDFlY2E2YjBlNmRh
MTQxM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCB3aWxsSW50ZXJjZXB0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIGJvb2wgc2hv
dWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBib29sIHNo
b3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lk
IGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgdm9pZCBpbnRlcmNlcHRSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKICAgICB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3Vy
Y2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKIAog
ICAgIHZvaWQgc2VhcmNoT3RoZXJSZXF1ZXN0cyhjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHBy
ZXNzaW9uJiwgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2Vh
cmNoUmVzdWx0Pj4mKTsKQEAgLTE4NSw3ICsxODUsNyBAQCBwcml2YXRlOgogICAgICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpOwogICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6Ci0gICAgICAgIFBlbmRpbmdJbnRlcmNl
cHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBvcmlnaW5hbFJlc3BvbnNlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIFBlbmRpbmdJbnRlcmNlcHRS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBvcmlnaW5hbFJlc3BvbnNlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICAgICAgOiBtX29y
aWdpbmFsUmVzcG9uc2Uob3JpZ2luYWxSZXNwb25zZSkKICAgICAgICAgICAgICwgbV9jb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgeyB9CkBAIC0y
MDIsNyArMjAyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJlc3BvbmQobV9vcmlnaW5hbFJl
c3BvbnNlLCBudWxscHRyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcmVzcG9uZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSkK
KyAgICAgICAgdm9pZCByZXNwb25kKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSkKICAgICAgICAgewogICAgICAgICAg
ICAgQVNTRVJUKCFtX3Jlc3BvbmRlZCk7CiAgICAgICAgICAgICBpZiAobV9yZXNwb25kZWQpCkBA
IC0yMTUsNyArMjE1LDcgQEAgcHJpdmF0ZToKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlc291
cmNlUmVzcG9uc2UgbV9vcmlnaW5hbFJlc3BvbnNlOwotICAgICAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+IG1f
Y29tcGxldGlvbkhhbmRsZXI7CisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+IG1fY29t
cGxldGlvbkhhbmRsZXI7CiAgICAgICAgIGJvb2wgbV9yZXNwb25kZWQgeyBmYWxzZSB9OwogICAg
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcAppbmRleCA1Y2Q5OGYzMzIwODIyYjgxMzJkMzdlMDAzZWU0MGE4N2Uw
NmYzMzU0Li4xYjY0NmFhMjE3M2FiNTRhM2YxYWJkY2I1MDIwNGFkZTk4YzA3M2E2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwCkBAIC0xMDAsMTMgKzEwMCwxMyBAQCBzdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29u
c3QgdWludDhfdCogYnVmZmVyLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleAogCiBi
b29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudChGcmFtZSogZnJhbWUs
IGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1h
aW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEo
KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdp
dGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yUGFnZUFnZW50Ojpz
aGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiBy
ZXN1bHQpCitib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKICAg
ICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGlu
Z05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CkBAIC0xNTYsNyArMTU2LDcgQEAg
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudChQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBGcmEKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAg
aWYgKGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsLCBsb2FkZXItPnVybCgpKSkg
ewogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggYjUxYWRkYjFi
ZDhmMmNjZTY5NTYwNzk5Y2QxZDk1MmQyZGU0MjgzOC4uM2Q1ZTU2NmRiZTBjNWVjMTFkOWU4ZGY2
N2ZjZjBhNzA5ODhhMmY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIEluc3Bl
Y3RvckNsaWVudDsKIGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBQYWdlOwogY2xhc3Mg
UmVuZGVyT2JqZWN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50IGZpbmFsIDogcHVibGljIEluc3Bl
Y3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUGFnZUFnZW50KTsKQEAg
LTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgICAgICBPdGhlclJlc291cmNlLAogICAgIH07CiAK
LSAgICBzdGF0aWMgYm9vbCBzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2Rl
LCBTdHJpbmcqIHJlc3VsdCk7CisgICAgc3RhdGljIGJvb2wgc2hhcmVkQnVmZmVyQ29udGVudChS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rp
bmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKICAgICBzdGF0
aWMgVmVjdG9yPENhY2hlZFJlc291cmNlKj4gY2FjaGVkUmVzb3VyY2VzRm9yRnJhbWUoRnJhbWUq
KTsKICAgICBzdGF0aWMgdm9pZCByZXNvdXJjZUNvbnRlbnQoSW5zcGVjdG9yOjpQcm90b2NvbDo6
RXJyb3JTdHJpbmcmLCBGcmFtZSosIGNvbnN0IFVSTCYsIFN0cmluZyogcmVzdWx0LCBib29sKiBi
YXNlNjRFbmNvZGVkKTsKICAgICBzdGF0aWMgU3RyaW5nIHNvdXJjZU1hcFVSTEZvclJlc291cmNl
KENhY2hlZFJlc291cmNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAK
aW5kZXggOTc0ZjIyYTJkYTdhMDJjNjQ4OWMxYjUwYTVhMjIwZmU0NGIxOTYzMC4uNmFlNTI2NTk3
Y2QyODYzMWJlNzk1MGZjMzM1MzZmOGYzNDdkN2FmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b250ZW50RmlsdGVyLmNwcApAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6
aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
IHsKICAgICBBU1NFUlQod2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpKTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSB7IG1fYmxvY2tpbmdD
b250ZW50RmlsdGVyLT5yZXBsYWNlbWVudERhdGEoKSB9OworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEgeyBtX2Jsb2NraW5nQ29udGVudEZpbHRlci0+
cmVwbGFjZW1lbnREYXRhKCkgfTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgVVJM
KCksICJ0ZXh0L2h0bWwiX3MsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4ocmVwbGFjZW1lbnREYXRh
LT5zaXplKCkpLCAiVVRGLTgiX3MgfTsKICAgICBTdWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0
YSB7IFdURk1vdmUocmVwbGFjZW1lbnREYXRhKSwgZXJyb3IuZmFpbGluZ1VSTCgpLCByZXNwb25z
ZSwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVuIH07CiAg
ICAgU2V0Rm9yU2NvcGU8Ym9vbD4gbG9hZGluZ0Jsb2NrZWRQYWdlIHsgbV9pc0xvYWRpbmdCbG9j
a2VkUGFnZSwgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCBkMDk2MWFmYzdiN2U3M2U2MTdlNzgwNmE2
N2M2ZmZkMDlmMTVjYTkzLi45NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdhMWE3NDQ1YjFmNzBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRD
aGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGln
aHRDaGVja2VyLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGln
aHRDaGVja2VyOjpkb1ByZWZsaWdodChEb2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwK
ICAgICBSZXNvdXJjZVJlcXVlc3QgcHJlZmxpZ2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRy
b2xQcmVmbGlnaHRSZXF1ZXN0KHJlcXVlc3QsIGxvYWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2Fk
ZXIucmVmZXJyZXIoKSk7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRh
OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIg
PSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KHByZWZsaWdodFJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFz
a0NsaWVudEZvckNyZWRlbnRpYWxzLCBGZXRjaE9wdGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNw
b25zZSwgZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmlu
ZGV4IDZmZWI4ZjVhYmU1YmE0OTI4MDZlYWU2NTUwNTI5MWNkNmZhNzc4ODEuLjNiOTBlZjRjNTgy
N2U2YzBiNDliMzQ2NTZiM2NkNzFhOGVkYTk2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIERvY3VtZW50TG9hZGVyOjp+RG9j
dW1lbnRMb2FkZXIoKQogI2VuZGlmCiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IERvY3VtZW50
TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAg
aWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbV9zdWJzdGl0
dXRlRGF0YS5jb250ZW50KCktPmNvcHkoKTsKQEAgLTE2NTIsNyArMTY1Miw3IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OmNsZWFyQXJjaGl2ZVJlc291cmNlcygpCiAgICAgbV9zdWJzdGl0dXRlUmVz
b3VyY2VEZWxpdmVyeVRpbWVyLnN0b3AoKTsKIH0KIAotQ29udGlndW91c1NoYXJlZEJ1ZmZlciog
RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKK1NoYXJlZEJ1ZmZlciog
RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9wYXJzZWRBcmNoaXZlRGF0YS5nZXQoKTsKIH0KQEAgLTE2NzEsNyArMTY3MSw3IEBAIEFyY2hp
dmVSZXNvdXJjZSogRG9jdW1lbnRMb2FkZXI6OmFyY2hpdmVSZXNvdXJjZUZvclVSTChjb25zdCBV
UkwmIHVybCkgY29uc3QKIAogUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9jdW1lbnRMb2FkZXI6
Om1haW5SZXNvdXJjZSgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9
IG1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
ZGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIGRhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8mIHJlc3BvbnNlID0gdGhpcy0+cmVz
cG9uc2UoKTsKQEAgLTIyNTUsNyArMjI1NSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJl
RmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQoKQogCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0
dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEo
KTsKICAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCByZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKQEAgLTIyOTIsNyArMjI5Miw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQogICAgIG1fZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLmdldExvYWREZWNpc2lvbkZvckljb25zKGljb25EZWNpc2lvbnMpOwogfQogCi12
b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNp
b24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJl
ZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGlk
R2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBpY29uID0gbV9pY29uc1BlbmRpbmdMb2Fk
RGVjaXNpb24udGFrZShsb2FkSWRlbnRpZmllcik7CiAKQEAgLTIzMTMsNyArMjMxMyw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lv
biwgdWludDY0X3QgbG9hZElkZW50CiAgICAgcmF3SWNvbkxvYWRlci0+c3RhcnRMb2FkaW5nKCk7
CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRl
ciYgbG9hZGVyLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmZp
bmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYgbG9hZGVyLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBidWZmZXIpCiB7CiAgICAgLy8gSWYgdGhlIERvY3VtZW50TG9hZGVyIGhhcyBkZXRhY2hl
ZCBmcm9tIGl0cyBmcmFtZSwgYWxsIGljb24gbG9hZHMgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVu
IGNhbmNlbGxlZC4KICAgICBBU1NFUlQobV9mcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCmluZGV4IDdjZjMwNWQ3MDVkNDg0NzJmZmM4NzY2YmYxMWNiNjRmZjhkZDJk
YTguLjMzOTg3M2Q1ZDNmYjliYjMwMDQ5OGNkNmYzN2NiZjY1Yjc4YWY1YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw3ICs3NSw3IEBAIGNsYXNzIEFyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENh
Y2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZpbHRlcjsKLWNsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVy
RmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7CkBAIC04NCw3ICs4NCw3IEBA
IGNsYXNzIEljb25Mb2FkZXI7CiBjbGFzcyBQYWdlOwogY2xhc3MgUHJldmlld0NvbnZlcnRlcjsK
IGNsYXNzIFJlc291cmNlTG9hZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNXQ2xpZW50Q29ubmVjdGlvbjsKIGNsYXNzIFN1YnJl
c291cmNlTG9hZGVyOwogY2xhc3MgU3Vic3RpdHV0ZVJlc291cmNlOwpAQCAtMTcyLDcgKzE3Miw3
IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRl
cigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN1YnJlc291cmNlTG9hZGVyKiBtYWluUmVz
b3VyY2VMb2FkZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtYWluUmVzb3VyY2VEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICAK
ICAgICBEb2N1bWVudFdyaXRlciYgd3JpdGVyKCkgY29uc3QgeyByZXR1cm4gbV93cml0ZXI7IH0K
IApAQCAtMjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFk
ZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YWRkQXJjaGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYpOwogICAgIFJlZlB0cjxB
cmNoaXZlPiBwb3BBcmNoaXZlRm9yU3ViZnJhbWUoY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNv
bnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHBh
cnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVy
KiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
Y2hlZHVsZUFyY2hpdmVMb2FkKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik7CiAjZW5kaWYKQEAgLTM5Myw4ICszOTMsOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZv
aWQgc3RhcnRJY29uTG9hZGluZygpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkR2V0TG9h
ZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4mJik7Ci0gICAgdm9pZCBmaW5p
c2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBTaGFyZWRCdWZmZXIqKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWlu
dDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciopPiYmKTsKKyAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRl
ciYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIAogICAgIGNvbnN0IFZlY3RvcjxMaW5rSWNv
bj4mIGxpbmtJY29ucygpIGNvbnN0IHsgcmV0dXJuIG1fbGlua0ljb25zOyB9CiAKQEAgLTYwMyw3
ICs2MDMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcmNoaXZlUmVzb3VyY2VD
b2xsZWN0aW9uPiBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiAjaWYgRU5BQkxFKFdFQl9B
UkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgUmVmUHRyPEFyY2hpdmU+IG1fYXJjaGl2ZTsK
LSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOwogI2VuZGlmCiAK
ICAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXNvdXJjZXNDbGllbnRLbm93c0Fib3V0OwpAQCAtNjIy
LDcgKzYyMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JOYXZpZ2F0aW9uUG9s
aWN5IHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIExpbmtJY29uPiBtX2ljb25z
UGVuZGluZ0xvYWREZWNpc2lvbjsKLSAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxJY29uTG9h
ZGVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4+IG1faWNvbkxvYWRl
cnM7CisgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8SWNvbkxvYWRlcj4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPj4gbV9pY29uTG9hZGVyczsKICAg
ICBWZWN0b3I8TGlua0ljb24+IG1fbGlua0ljb25zOwogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmNwcAppbmRleCBjNzA5NjQxMGE3YWEwNTRlNTFkNzA0NDVkNjYzNTJmMjgxNDA2
OGE5Li45YTRkNGIyMTJmZGZkMjgxODQzNzZkNGI3MGM3ZGE0ZjNlYjdjODMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAt
NTk1LDcgKzU5NSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAgbG9hZFRpbWluZy5t
YXJrU3RhcnRUaW1lKCk7CiAKICAgICAvLyBGSVhNRTogVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMu
c25pZmZDb250ZW50IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5bmNocm9ub3VzIHJlcXVlc3RzLgot
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlOwogICAgIGF1dG8gaWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlm
aWVyPFJlc291cmNlTG9hZGVyPihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCA5ZTlmMjk0NjcyZjNk
NjIyNTAzYjFlNTViMTc5NmYwY2ExZWNmYTcwLi5jMDg3ODVhZjhmYzkyNGUzNTNmZmQ0ODNkZjdi
OTVkYTI0NDNhZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAt
Mjc3LDcgKzI3Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2Vs
ZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgZmluYWwgeyB9CiAg
ICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsIHsgfQotICAgIHZv
aWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JikgZmluYWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQogICAgIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNG
b3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIGZpbmFsIHsgfQogICAgIHZvaWQg
aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQp
IGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA2MzA5
OWI0OWZhZGY3Yjc1NDc2Yjc5YWE3YjAxNDZlMzA3NzQ2NDczLi41NjYxMDgzODA1NjY0ZTAxMTlm
MTFmZmMzMmVhN2UxOTI3ZmM2NTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKQEAgLTMxMDEsNyArMzEwMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVz
dChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWZlCiAgICAgfSk7
CiB9CiAKLVJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNl
U3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENyZWRl
bnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiBv
cHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFt
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwg
Y29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5h
bFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFTU0VSVChtX2Zy
YW1lLmRvY3VtZW50KCkpOwogICAgIFN0cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5Ojpn
ZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3ko
KSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcigpKTsKQEAgLTMxNDksNyArMzE0OSw3
IEBAIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlCiAgICAgICAgIGlmICghZG9jdW1lbnRMb2FkZXIo
KS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRTeW5jaHJvbm91c2x5KG5ld1JlcXVl
c3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSkpIHsKICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBidWZmZXI7CiAgICAgICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRl
Z3koKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgqdGhpcywgaWRlbnRpZmllciwgbmV3UmVx
dWVzdCwgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgb3B0aW9ucywgb3JpZ2luYWxSZXF1ZXN0SGVh
ZGVycywgZXJyb3IsIHJlc3BvbnNlLCBidWZmZXIpOwotICAgICAgICAgICAgZGF0YSA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAg
ZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgICAg
ICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZEZhbGxi
YWNrU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogICAg
ICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ1N1YnJlc291cmNlTG9h
ZGluZygmbV9mcmFtZSwgbmV3UmVxdWVzdCwgcmVzcG9uc2UsCiAgICAgICAgICAgICAgICAgKGlz
U2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVzdGluYXRpb24pID8gUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6OlllcyA6IFJlc291cmNlTG9h
ZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpObykpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBhNTJkN2Y5MWM2MjYyMWZkMzdjMTBiZjBhOWEwMWZh
ZmI2OGIwYzY1Li4wOGEwYWUxOWEzNzk4NDZmMTU3NTY0YzJkMGM4MzJiMjc0ODM2MDM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNTksNyArNTksNyBAQCBjbGFzcyBDYWNo
ZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBj
bGFzcyBDaHJvbWU7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBE
b2N1bWVudExvYWRlcjsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdF
Ql9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2Fk
QXJjaGl2ZShSZWY8QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBD
bGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVh
ZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpOworICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBs
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENsaWVudENy
ZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0IEhUVFBIZWFkZXJNYXAm
LCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiBkYXRhKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3km
LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3Bl
bmVyUG9saWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRy
aWJ1dGUgPSBudWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6
b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAg
IHZvaWQgY2hhbmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRy
LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNGZkNjM3
YTkwMTRhNWQ0MWEyMjZlZTQ1OTE3YjZiM2U5YTc5MGViYi4uZWU5ZjNkMGM5ODRkNDU1Y2JiOTFi
NDYwYzFiYzEyODk4ZDEyMzY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmgKQEAgLTk4LDcgKzk4LDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiBjbGFzcyBXaWRnZXQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xvYWRlclN0cmF0ZWd5LmgKaW5kZXggYWVmNjY4YmQ2M2VkNWZjZDQ1ZTYxZTlkMWYxMDdj
ZmI2YWVmMjY0Yi4uMjlkMmUzZjQ2MTQwYWFhNTExNjBlNmEyODU2MmYzNzBlMzcxZWIyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xh
c3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiAK
IHN0cnVjdCBGZXRjaE9wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAppbmRleCA2MzM3NTU5NjMyMDAxNDYzODI4OWUy
ODI2MDRjNTViMGFmNDQ1MzEzLi42MDQzYWM5YmUyNjdlYTRmYmM3MWUxMTE4YjkwNzkxNTVlMzkx
NTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlci5jcHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxlCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVu
Y29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5
bG9hZFR5cGUpCit2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVk
RGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQ
YXlsb2FkVHlwZSkKIHsKICAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3Rl
Y3RlZFRoaXMoKnRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlci5oCmluZGV4IDQ4YmIyMTUzYzkzZjJkYzc1NGUyMDczMjI1MmMw
NTA5Y2Y3MDRhNDEuLmI1MTc0ZWRjOTRiOTkyMzkwMjA1ZjBmYWQ0NTJlYTVhYzM4Nzg5MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9u
c2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNr
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5k
bGVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1
bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92
ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAK
QEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25z
dCB1aW50OF90KiwgaW50LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAKICAg
ICB2b2lkIG5vdGlmeURvbmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcAppbmRleCBjNjI3NzY4NThhNmRjNWFmZmQz
NmRjOWU3ODVjOGJkMjQ3MmJiNzRkLi5kOTRiNzAwMDc0MWNkOTEyYjkxNzNlMmIzNzQ2ZDRkYThi
MzY4YTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlw
dG9ncmFwaGljRGlnZXN0LmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIFJlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yQnl0ZXMoUmVzb3VyY2VDcnlwdG9ncmFw
aGljRGlnCiAgICAgcmV0dXJuIHsgYWxnb3JpdGhtLCBjcnlwdG9EaWdlc3QtPmNvbXB1dGVIYXNo
KCkgfTsKIH0KIAotUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdl
c3RGb3JTaGFyZWRCdWZmZXIoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0g
YWxnb3JpdGhtLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK1Jlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5
cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogYnVmZmVyKQogewogICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlw
dG9EaWdlc3Q6OmNyZWF0ZSh0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShhbGdvcml0aG0pKTsKICAg
ICBpZiAoYnVmZmVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0LmgKaW5kZXggYWVhM2RjNTdjODc4MzEzMDEzYTViMTZjOTM5Yjc3
NGVkNDg0MzI0Yy4uODNiODYxM2NmZGEyMzI5YWUzMGJiZjZhYmMxNGI5OWQ0NDIzN2IwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdl
c3QuaApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNo
ZWRSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIHN0cnVjdCBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgewogICAgIGVudW0g
Y2xhc3MgQWxnb3JpdGhtIHsKQEAgLTc1LDcgKzc1LDcgQEAgc3RkOjpvcHRpb25hbDxFbmNvZGVk
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUVuY29kZWRDcnlwdG9ncmFwaGljRGln
ZXMKIAogc3RkOjpvcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IGRlY29kZUVu
Y29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QoY29uc3QgRW5jb2RlZFJlc291cmNlQ3J5
cHRvZ3JhcGhpY0RpZ2VzdCYpOwogCi1SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRv
Z3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6
OkFsZ29yaXRobSwgY29uc3QgU2hhcmVkQnVmZmVyKik7CitSZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwog
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhS
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29uc3Qgdm9pZCogYnl0ZXMs
IHNpemVfdCBsZW5ndGgpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcAppbmRleCA1ZWIwNjUzNjBiMTBkZjgxYjU2YmU2OTQ3NTFkY2Q5MzFlN2RiMGY2Li5kZjEz
OTU4OGU4ZDUyNTJiM2VlYzYxOTNhZTYxYWEyNDc4NmIyMTljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjppbml0KFJlc291cmNlUmVxdWVzdCYmIGNsaWVudFJlcXVlc3QsIENvbXBsZXRpb25I
YW5kbGVyPHZvaQogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkZWxpdmVyUmVz
cG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRlbGl2ZXJSZXNwb25z
ZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBkaWRSZWNlaXZlUmVzcG9uc2UocmVz
cG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RG
TW92ZShidWZmZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3Rh
dGUoKSkKQEAgLTMzMCw3ICszMzAsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNo
VG9TdWJzdGl0dXRlUmVzb3VyY2UoKQogICAgICAgICBtX2hhbmRsZS0+Y2FuY2VsKCk7CiB9CiAK
LXZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgsIFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGlmICht
X29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05v
dEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoLCBTaGFyZQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKGRhdGEsIGxl
bmd0aCk7CiB9CiAKLWNvbnN0IFNoYXJlZEJ1ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291cmNl
RGF0YSgpIGNvbnN0Citjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRl
cjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9yZXNvdXJjZURhdGEtPmdl
dCgpLmdldCgpOwogfQpAQCAtNTUyLDE0ICs1NTIsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25n
IGwKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5j
b2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3Zv
aWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxs
cHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5
cGUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRh
dGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91
bGQgb25seSBnZXQgZGF0YStsZW5ndGggKk9SKiBhIFNoYXJlZEJ1ZmZlci4KKyAgICAvLyBUaGlz
IG1ldGhvZCBzaG91bGQgb25seSBnZXQgZGF0YStsZW5ndGggKk9SKiBhIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIuCiAgICAgQVNTRVJUKCFidWZmZXIgfHwgKCFkYXRhICYmICFsZW5ndGgpKTsKIAog
ICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlzIGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRk
aXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwpAQCAtNzM2LDcgKzczNiw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduCiAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoLCBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGRpZFJlY2VpdmVCdWZmZXIoV1RG
TW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IGNmODIxNzRiZThlZDg2N2Q0
NzgzZWNhYTEzNmI1NzgzOTJjMjgwYTcuLjU0YjFiODY2ZGY4OTZhODRiNGNhMjk3ZWU0NzZkNmQw
YjY2MWZkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC01Niw3
ICs1Niw3IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CiBjbGFzcyBMZWdhY3lQ
cmV2aWV3TG9hZGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1
aWxkZXI7CiAKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFJlc291cmNl
TG9hZGVyKTsKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGlu
aXQoUmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwog
Ci0gICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRlbGl2ZXJSZXNwb25zZUFuZERh
dGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0
TG9hZGluZygpCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBy
ZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Uo
KSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAKLSAgICBjb25zdCBTaGFyZWRCdWZmZXIq
IHJlc291cmNlRGF0YSgpIGNvbnN0OworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURhdGEoKTsKICAg
ICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpAQCAtMTEw
LDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWdu
ZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0Jl
U2VudCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25I
YW5kbGVyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCos
IHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwg
bG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCkBAIC0xNjksNyAr
MTY5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCB3YXNDYW5jZWxsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2NhbmNlbGxhdGlvblN0YXR1cyA+PSBDYW5jZWxsZWQ7IH0KIAotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBl
KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2ln
bmVkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIAogICAgIHZvaWQgc2V0UmVmZXJyZXJQ
b2xpY3koUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3kpIHsgbV9vcHRpb25zLnJlZmVycmVy
UG9saWN5ID0gcmVmZXJyZXJQb2xpY3k7IH0KICAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBv
bGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5yZWZlcnJlclBvbGljeTsgfQpAQCAtMTk0
LDcgKzE5NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDYW5jZWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSA9IDA7CiAKLSAgICB2b2lkIGFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiwgdW5zaWduZWQsIFNoYXJlZEJ1ZmZlciosIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9p
ZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiwgRGF0YVBheWxvYWRUeXBlKTsKICAgICB2b2lkIGxvYWREYXRhVVJMKCk7CiAg
ICAgdm9pZCBmaW5pc2hOZXR3b3JrTG9hZCgpOwogCkBAIC0yMDUsNyArMjA1LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVz
b3VyY2VSZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJl
cXVlc3QmJiwgUmVzb3VyY2VSZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUq
LCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdhc0Jsb2NrZWQoUmVzb3VyY2VI
YW5kbGUqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IDcxOTY4MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEuLjM3
ZDBiYjgyMWFiZDg2YTliNTYwNmUxMjdlZmM5NDEyYTUxYmIxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTMwLDcgKzUzMCw3IEBAIHZvaWQg
U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCwgbG9uCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5n
dGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBk
YXRhUGF5bG9hZFR5cGUpCit2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogI2lmIFVTRShR
VUlDS19MT09LKQogICAgIGlmIChhdXRvIHByZXZpZXdMb2FkZXIgPSBtX3ByZXZpZXdMb2FkZXIu
Z2V0KCkpIHsKQEAgLTU0Miw3ICs1NDIsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZQogICAg
IGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNv
ZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
bGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsK
ICAgICBBU1NFUlQobV9yZXNvdXJjZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmgKaW5kZXggMzcyM2I2YjlhYjlmZGRhYWE1NTc0YmZiMGU2ZjM4Y2VkN2FlZmI3
NS4uODMyYzlmMGU3M2QzODQ2NGE3OTVmNDAzODYwZjc5YzM0ZTczYmM3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVu
c2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWls
KGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxDYW5jZWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgog
ICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3Ry
aW5nPiBjaGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcHJldmlvdXNSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVz
b3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlw
ZSk7CiAKICAgICB2b2lkIG5vdGlmeURvbmUoTG9hZENvbXBsZXRpb25UeXBlKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAppbmRleCBmNjYyOTJlMzFjYmViNDI2NDMwYTgz
MmFkZWY0Mjk5MWNiNTc0MzZlLi5hOGE0OWI0N2Y5MjczNDI3NGJhNGNlYWJjMTcwN2ZlZmE3YjY2
NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaApAQCAtNDMsNyArNDMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAg
IFN1YnN0aXR1dGVEYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgY29udGVudCwgY29uc3QgVVJM
JiBmYWlsaW5nVVJMLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgU2Vzc2lvbkhp
c3RvcnlWaXNpYmlsaXR5IHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkpCisgICAgICAgIFN1
YnN0aXR1dGVEYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNvbnRlbnQsIGNv
bnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFNl
c3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KQogICAg
ICAgICAgICAgOiBtX2NvbnRlbnQoV1RGTW92ZShjb250ZW50KSkKICAgICAgICAgICAgICwgbV9m
YWlsaW5nVVJMKGZhaWxpbmdVUkwpCiAgICAgICAgICAgICAsIG1fcmVzcG9uc2UocmVzcG9uc2Up
CkBAIC01NCwxNCArNTQsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlz
VmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQgIT0gbnVsbHB0cjsgfQogICAgICAgICBi
b29sIHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Nob3Vs
ZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgPT0gU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpWaXNp
YmxlOyB9CiAKLSAgICAgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBjb250ZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZW50LmdldCgpOyB9CisgICAgICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQuZ2V0KCk7IH0KICAgICAg
ICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UubWlt
ZVR5cGUoKTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZygpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOyB9CiAgICAgICAgIGNvbnN0IFVS
TCYgZmFpbGluZ1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFpbGluZ1VSTDsgfQogICAgICAgICBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9u
c2U7IH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9jb250ZW50OworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9j
b250ZW50OwogICAgICAgICBVUkwgbV9mYWlsaW5nVVJMOwogICAgICAgICBSZXNvdXJjZVJlc3Bv
bnNlIG1fcmVzcG9uc2U7CiAgICAgICAgIFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBtX3Nob3Vs
ZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgeyBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OkhpZGRl
biB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDM0
NGNhOTgyODU3NTJlOGYxMDE3MGYyMzIwNDllMGNhMmFkNGZjODYuLmNmMmRlMGM2MmQ5NWYzMzI1
YjQyYjQ2ZTI0MDM3NzQ0MTA3NDJhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3Rp
dHV0ZVJlc291cmNlLmgKQEAgLTM3LDE0ICszNywxNCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBV
UkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVk
QnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJl
ZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9KTsgfQorICAgIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9KTsgfQogICAgIHZvaWQgYXBw
ZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgbV9kYXRhLmFwcGVuZChkYXRh
LCBsZW5ndGgpOyB9CiAgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmVtcHR5KCk7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRl
bGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KIAogcHJv
dGVjdGVkOgotICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQorICAgIFN1YnN0aXR1dGVS
ZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKICAgICAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkp
CiAgICAgICAgICwgbV9yZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSkKICAgICAgICAgLCBtX2Rh
dGEoV1RGTW92ZShkYXRhKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDcyMGE5MjcxY2QzMjY1ZWY0Y2Uy
MzI2MWEyNmRiMGQ4MjhjNjMzNDYuLjUxOTc4ZjQxMjM4NzRkYzU2NjBlZmY0NzA2NTk3MDdkNGU1
ZDg1YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMjUzLDE0ICsyNTMsMTQgQEAgVVJMIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgog
fQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJG
cm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKK3N0YXRpYyBp
bmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7CiAgICAgaWYgKHJlc291cmNlLnBhdGgoKS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsK
LSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHJlc291cmNlLnBhdGgoKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CiB9CiAKLWJvb2wgQXBwbGljYXRpb25D
YWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3Vy
Y2U7CiAgICAgaWYgKCFzaG91bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGljYXRpb25DYWNoZShyZXF1
ZXN0LCByZXNvdXJjZSkpCkBAIC0yNzcsNyArMjc3LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJl
c28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5
YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIC8vIElmIG5vcm1hbCBsb2Fk
aW5nIHJlc3VsdHMgaW4gYSByZWRpcmVjdCB0byBhIHJlc291cmNlIHdpdGggYW5vdGhlciBvcmln
aW4gKGluZGljYXRpdmUgb2YgYSBjYXB0aXZlIHBvcnRhbCksIG9yIGEgNHh4IG9yIDV4eCBzdGF0
dXMgY29kZSBvciBlcXVpdmFsZW50LAogICAgIC8vIG9yIGlmIHRoZXJlIHdlcmUgbmV0d29yayBl
cnJvcnMgKGJ1dCBub3QgaWYgdGhlIHVzZXIgY2FuY2VsZWQgdGhlIGRvd25sb2FkKSwgdGhlbiBp
bnN0ZWFkIGdldCwgZnJvbSB0aGUgY2FjaGUsIHRoZSByZXNvdXJjZSBvZiB0aGUgZmFsbGJhY2sg
ZW50cnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmgKaW5kZXggZGM4NThmZGQ2ZDU0NTNlYjQzNTkyOGQzZWQ3NTc1NzA4MzU5
NDVlMC4uYjk2MzU2ZTc4NTYxMzg5NTZhZTRjMDU5ODMxNzBjZGY3MjM2NzJhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNz
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOwotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBE
b2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwpAQCAtMTA0LDggKzEwNCw4IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UoUmVz
b3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNlTG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpOwogCi0gICAgYm9vbCBtYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291
cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7Ci0gICAgdm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBib29sIG1h
eWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworICAgIHZvaWQgbWF5YmVM
b2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNl
RXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKIAogICAg
IGJvb2wgY2FuQ2FjaGVJbkJhY2tGb3J3YXJkQ2FjaGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNw
cAppbmRleCA2NzEwOTU3YzNhYjc0YTc1OWZjMjc1MWZkN2EwNmIzMTFlNTE4Y2U1Li4yYmIzZmU3
NWI5OTc3ZTgzMzIyYWUyNTgwZjcyMTJlZTViZjIxNjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNw
cApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgdHlw
ZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkKK1Jl
ZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3Jl
YXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5z
aWduZWQgdHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCF1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVy
KCkpOwogICAgIGlmICghYnVmZmVyKQpAQCAtNDAsNyArNDAsNyBAQCBSZWY8QXBwbGljYXRpb25D
YWNoZVJlc291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBVUkwm
IHVybCwgYwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZShVUkwgeyB1cmwgfSwgV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSwgdHlwZSwgYnVmZmVyLnJl
bGVhc2VOb25OdWxsKCksIHBhdGgpKTsKIH0KIAotQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
cG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBwYXRoKQorQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5
cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgcGF0
aCkKICAgICA6IFN1YnN0aXR1dGVSZXNvdXJjZShXVEZNb3ZlKHVybCksIFdURk1vdmUocmVzcG9u
c2UpLCBXVEZNb3ZlKGRhdGEpKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3N0b3JhZ2VJ
RCgwKQpAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJgogCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQog
ewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5p
c0VtcHR5KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBsb2FkZXIuZGVsaXZl
clJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLm1h
a2VDb250aWd1b3VzKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSht
X3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUodW5z
aWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgKaW5kZXggODhjOTRkZTFhNzc0MTA0NjljOTMx
YTQyYTQ3OWIxZTY3NzdhNzAyZS4uYzI4OGU3MDM2YzY3NjJhZDQ4NzZiYTg4MTQ2OWE3NWQyMjM3
ZTFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIEZhbGxiYWNrID0gMSA8PCA0CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8QXBwbGljYXRp
b25DYWNoZVJlc291cmNlPiBjcmVhdGUoY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJpbmcoKSk7CisgICAgc3RhdGljIFJl
ZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJp
bmcoKSk7CiAKICAgICB1bnNpZ25lZCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAg
ICAgdm9pZCBhZGRUeXBlKHVuc2lnbmVkIHR5cGUpOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6
CiAjZW5kaWYKICAgICAKIHByaXZhdGU6Ci0gICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVS
TCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVS
TCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHBhdGgpOwogCiAgICAgdm9pZCBkZWxpdmVyKFJl
c291cmNlTG9hZGVyJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGM3NzBk
NzY0MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQuLjhjZjA1Y2NlMTg4MDEyOGRlNTli
ZTcwYTk5ODM2ZjVhNzQ1YjZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtMTExMiw3ICsx
MTEyLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
Ojpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKQogICAgICAgICBpbnQgaHR0cFN0YXR1c0Nv
ZGUgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50KDEpOwogCiAgICAgICAgIHVuc2lnbmVkIHR5
cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludDY0KDIp
KTsKLSAgICAgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNh
Y2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKKyAgICAgICAgYXV0byBkYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOwogICAgICAgICAK
ICAgICAgICAgU3RyaW5nIHBhdGggPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uVGV4dCg3KTsKICAg
ICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpAQCAtMTI3Miw3ICsxMjcyLDcgQEAgYm9vbCBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6c2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGlj
YXRpb25DYWNoZVJlc28KICAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZSh0eXBlLCAiYXVkaW8vIikgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZSh0eXBlLCAidmlkZW8vIik7CiB9CiAgICAgCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
Ojp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZUV4
dGVuc2lvbikKK2Jvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVl
RmlsZUluRGlyZWN0b3J5KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5LCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbikK
IHsKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCmluZGV4IDlhOTUz
MDA4NzY2YTg4ODU1NjFiMzQ4ODg5YjhjZWRhMmIyZWIzMzguLjQxMDJhMTgwOGI0NTU1N2I2NDVl
MzZlN2U2ODFmYzRjNmQyMDdjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCkBAIC0zOSw3ICszOSw3IEBA
IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogdGVt
cGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0b3JhZ2VJREpvdXJuYWw7CiAKIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8QXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U+IHsKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZW5zdXJlT3JpZ2lu
UmVjb3JkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkU3Rv
cmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKik7CiAgICAgdm9p
ZCBkZWxldGVUYWJsZXMoKTsKLSAgICBib29sIHdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0
b3J5KFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91dEZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pOworICAgIGJvb2wgd3JpdGVEYXRh
VG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVF
eHRlbnNpb24pOwogCiAgICAgdm9pZCBsb2FkTWFuaWZlc3RIb3N0SGFzaGVzKCk7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKaW5k
ZXggNmRlODBjMTBhYzdkMjVjZjM0NjlmNmRlZjBmYWY3MjQxZjU5NjQyOC4uNGVmOWNkNjZiZDA4
OGI3NGMwNDZjMDY5MGQxZTlkM2U1ZTMzNjBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcApAQCAtNDYsMTIgKzQ2LDEyIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBSZWZQdHI8QXJjaGl2ZT4gUmF3RGF0YUNyZWF0
aW9uRnVuY3Rpb24oY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJik7Cit0eXBlZGVmIFJlZlB0cjxB
cmNoaXZlPiBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbihjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJik7CiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSYXdEYXRhQ3JlYXRpb25GdW5j
dGlvbiosIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gQXJjaGl2ZU1JTUVUeXBlc01hcDsKIAog
Ly8gVGhlIGNyZWF0ZSBmdW5jdGlvbnMgaW4gdGhlIGFyY2hpdmUgY2xhc3NlcyByZXR1cm4gUmVm
UHRyIHRvIGNvbmNyZXRlIHN1YmNsYXNzZXMKIC8vIG9mIEFyY2hpdmUuIFRoaXMgYWRhcHRvciBt
YWtlcyB0aGUgZnVuY3Rpb25zIGhhdmUgYSB1bmlmb3JtIHJldHVybiB0eXBlLgotdGVtcGxhdGU8
dHlwZW5hbWUgQXJjaGl2ZUNsYXNzPiBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGFyY2hpdmVGYWN0
b3J5Q3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3RlbXBsYXRl
PHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBhcmNoaXZlRmFj
dG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIHJldHVybiBBcmNoaXZlQ2xhc3M6OmNyZWF0ZSh1cmwsIGJ1ZmZlcik7CiB9CkBA
IC04Myw3ICs4Myw3IEBAIGJvb2wgQXJjaGl2ZUZhY3Rvcnk6OmlzQXJjaGl2ZU1JTUVUeXBlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuICFtaW1lVHlwZS5pc0VtcHR5KCkgJiYg
YXJjaGl2ZU1JTUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0KIAotUmVmUHRyPEFyY2hp
dmU+IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK1JlZlB0cjxBcmNoaXZlPiBBcmNoaXZlRmFj
dG9yeTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9B
cmNoaXZlRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZh
Y3RvcnkuaAppbmRleCAyMWQyMzY1Y2Y4ZDlkOTAxZWZlN2FhZDU1MmJmM2RhNDA2OWZlNDBkLi41
NTY0NTE1YzllMGQ5ZDAzM2I3OTBjNzQ3Mjg1YTI1ODUzYWJlMDJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKQEAgLTM0LDEyICszNCwxMiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEFyY2hpdmVGYWN0b3J5IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBpc0FyY2hpdmVNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKLSAgICBz
dGF0aWMgUmVmUHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4g
Y3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyS25vd25BcmNoaXZlTUlN
RVR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNw
cAppbmRleCBmYzIwZGEzZGEwMzJjYmVmNzRmMmU5Yzg0MjhhY2I0ZWUzN2JlZjIzLi4wNzM4Mzk0
YTgyODcxNGFhMGI5MGVlNzUwNzlkNDg2ZjViMGU4Njk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZl
UmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmlu
ZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK2lubGluZSBB
cmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IFN1YnN0aXR1dGVSZXNvdXJjZShVUkwgeyB1
cmwgfSwgUmVzb3VyY2VSZXNwb25zZSB7IHJlc3BvbnNlIH0sIFdURk1vdmUoZGF0YSkpCiAgICAg
LCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV90ZXh0RW5jb2RpbmcodGV4dEVuY29kaW5n
KQpAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3Vy
Y2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybAogewogfQogCi1SZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJj
aGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0
YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
dGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTU0LDcgKzU0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291
cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb24KICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBBcmNoaXZlUmVzb3VyY2UoZGF0YS5yZWxlYXNlTm9uTnVsbCgpLCB1cmws
IG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwgcmVzcG9uc2UpKTsKIH0KIAotUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCitSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0
ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShX
VEZNb3ZlKGRhdGEpLCB1cmwsIHJlc3BvbnNlLm1pbWVUeXBlKCksIHJlc3BvbnNlLnRleHRFbmNv
ZGluZ05hbWUoKSwgU3RyaW5nKCksIHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKaW5kZXggMjA5ZTk3MTdhZWIwOTM2MGRi
MzkyN2U2ZWZhMWU1YmYxYzJjOTdjYS4uMDU0OGVmNzIxZWZkMjdjMDBjZTkzZDEyMjcwZWNlYzQ2
YzAyYWY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJl
c291cmNlLmgKQEAgLTM0LDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBB
cmNoaXZlUmVzb3VyY2UgOiBwdWJsaWMgU3Vic3RpdHV0ZVJlc291cmNlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsCisgICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IGNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFVSTCYsCiAgICAgICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwKICAgICAgICAgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgPSBSZXNvdXJjZVJlc3BvbnNlKCkpOwogCkBAIC00Nyw3ICs0
Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZElnbm9yZVdoZW5VbmFyY2hpdmluZygpIGNv
bnN0IHsgcmV0dXJuIG1fc2hvdWxkSWdub3JlV2hlblVuYXJjaGl2aW5nOyB9CiAKIHByaXZhdGU6
Ci0gICAgQXJjaGl2ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBT
dHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIEFyY2hpdmVS
ZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmlu
ZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICBTdHJpbmcgbV9t
aW1lVHlwZTsKICAgICBTdHJpbmcgbV90ZXh0RW5jb2Rpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGY1ZWM0
ZGQ2N2Y3ZGY4ZDlkYTIwOWI0MGUyM2MwNDM5YjZlNjhiMDMuLjcxMTUwY2JkZDg5NjllNmFmMDI4
Njg0YjZiZjZjYmMwYTUwYjJmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC0yNDgsMTIgKzI0OCwxMiBAQCBS
ZWY8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFJlZjxBcmNoaXZl
UmVzb3VyY2U+JiYgbWFpblJlc291cgogICAgIHJldHVybiBhcmNoaXZlOwogfQogCi1SZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKK1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICByZXR1cm4gY3JlYXRlKFVSTCgp
LCBkYXRhKTsKIH0KIAotUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEpCitSZWZQdHI8TGVnYWN5V2Vi
QXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2
ZSAtIENyZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCmluZGV4IGQwOWVjOWY3NWFiYTEz
NmE4NjMzOWViNGQ4NmFiZDgyNzdjNGZmMDQuLjVhMDdiMTBiNGJlNmY4NjIwMTFhNzgyYTdkZWQy
MzY3NTkyNDM2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9j
Zi9MZWdhY3lXZWJBcmNoaXZlLmgKQEAgLTQxLDggKzQxLDggQEAgc3RydWN0IFNpbXBsZVJhbmdl
OwogY2xhc3MgTGVnYWN5V2ViQXJjaGl2ZSBmaW5hbCA6IHB1YmxpYyBBcmNoaXZlIHsKIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0
ZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
Y3JlYXRlKFNoYXJlZEJ1ZmZlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBj
cmVhdGUoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiBtYWluUmVzb3VyY2UsIFZlY3RvcjxSZWY8QXJj
aGl2ZVJlc291cmNlPj4mJiBzdWJyZXNvdXJjZXMsIFZlY3RvcjxSZWY8TGVnYWN5V2ViQXJjaGl2
ZT4+JiYgc3ViZnJhbWVBcmNoaXZlcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoTm9kZSYsIEZ1bmN0aW9uPGJvb2woRnJhbWUmKT4m
JiBmcmFtZUZpbHRlciA9IHsgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxM
ZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoRnJhbWUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmluZGV4IDk5M2MyYjhlODMw
ZGMzZDc1YzVhZDMxOWJiYWZlOWRmNDVjNTAxMGUuLmQwMTM5Zjg3YTA2Zjk2OTc4Yjc0NzdlOWY0
OTk5YzM0ZWE5Zjg2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIFJlZjxNSFRNTEFy
Y2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBN
SFRNTEFyY2hpdmUpOwogfQogCi1SZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNy
ZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVyJiBkYXRhKQorUmVmUHRyPE1IVE1MQXJj
aGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gRm9yIHNlY3VyaXR5IHJlYXNvbnMgd2Ugb25seSBs
b2FkIE1IVE1MIHBhZ2VzIGZyb20gbG9jYWwgVVJMcy4KICAgICBpZiAoIUxlZ2FjeVNjaGVtZVJl
Z2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwodXJsLnByb3RvY29sKCkudG9TdHJp
bmcoKSkpCkBAIC0xMzAsNyArMTMwLDcgQEAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNo
aXZlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICByZXR1
cm4gbWFpbkFyY2hpdmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2Vu
ZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBN
SFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiB7CiAgICAgVmVjdG9y
PFBhZ2VTZXJpYWxpemVyOjpSZXNvdXJjZT4gcmVzb3VyY2VzOwogICAgIFBhZ2VTZXJpYWxpemVy
IHBhZ2VTZXJpYWxpemVyKHJlc291cmNlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oCmluZGV4IDNkMmRiN2M5NjAwMmViZTY4NGIy
YmVmOGYxZWE5ZTJlOTc5NGE1ODkuLjJkZmU4N2U4MmU3YTRkY2UwZjM0MWMzNjE5NDNjOTkwMjA1
YzhkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5oCkBAIC0zOCwxNCArMzgsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBNSFRNTFBhcnNlcjsKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNSFRNTEFyY2hpdmUgZmluYWwgOiBw
dWJsaWMgQXJjaGl2ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNSFRNTEFyY2hpdmU+IGNy
ZWF0ZSgpOwotICAgIHN0YXRpYyBSZWZQdHI8TUhUTUxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJM
JiwgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxNSFRNTEFyY2hpdmU+IGNyZWF0
ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKLSAgICBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gZ2VuZXJhdGVNSFRNTERhdGEoUGFnZSopOworICAgIHN0YXRpYyBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZ2VuZXJhdGVNSFRNTERhdGEoUGFnZSopOwogCiAgICAg
dmlydHVhbCB+TUhUTUxBcmNoaXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCA0MDI1Yjk4MGU1ZWU2ODJkYjA3
NjJhZmE4NmVjYTlkOTJmZTg1OGQ5Li41ZWU5MTg2ODRhMDY4OTY4M2Y3MWMyNjdmMmQ5MDFhMzdh
NmZlYjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyBib29sIHNraXBMaW5lc1Vu
dGlsQm91bmRhcnlGb3VuZChTaGFyZWRCdWZmZXJDaHVua1JlYWRlciYgbGluZVJlYWRlciwgY29u
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1NSFRNTFBhcnNlcjo6TUhUTUxQYXJzZXIoU2hhcmVk
QnVmZmVyKiBkYXRhKQorTUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2VyKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEpCiAgICAgOiBtX2xpbmVSZWFkZXIoZGF0YSwgIlxyXG4iKQogewogfQpAQCAt
MjE1LDcgKzIxNSw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJz
ZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIExPR19FUlJP
UigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQotICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICAvLyBGSVhNRTogdGhlIFVS
TCBpbiB0aGUgTUlNRSBoZWFkZXIgY291bGQgYmUgcmVsYXRpdmUsIHdlIHNob3VsZCByZXNvbHZl
IGl0IGlmIGl0IGlzLgogICAgIC8vIFRoZSBzcGVjcyBtZW50aW9ucyA1IHdheXMgdG8gcmVzb2x2
ZSBhIFVSTDogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjU1NyNzZWN0aW9uLTUKICAg
ICAvLyBJRSBhbmQgRmlyZWZveCAoVU5NaHQpIHNlZW0gdG8gZ2VuZXJhdGUgb25seSBhYnNvbHV0
ZSBVUkxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
UGFyc2VyLmgKaW5kZXggMWU5YmQ0ZDc3NjdlZTM5MWEwMDIyZjcxNzQ4ZjAwYjg1YzgxYjI1Zi4u
MGQ2MDQzNDNmM2Q3YWQxNzhjYzIyMDAzYzk3OWMyMmU1MGEzYjk5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oCkBAIC00MiwxMSAr
NDIsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwogY2xh
c3MgTUhUTUxBcmNoaXZlOwogY2xhc3MgTUlNRUhlYWRlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1IVE1MUGFyc2VyIHsKIHB1
YmxpYzoKLSAgICBleHBsaWNpdCBNSFRNTFBhcnNlcihTaGFyZWRCdWZmZXIqKTsKKyAgICBleHBs
aWNpdCBNSFRNTFBhcnNlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICAgICBSZWZQdHI8
TUhUTUxBcmNoaXZlPiBwYXJzZUFyY2hpdmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4IDkw
ZDFjNmEyYmE4YzRhNDJlMWZlYmQ4MDFlNTI4NzgwNTkwMTJiOTIuLmUxYTg3NTE2YmQ4ZDViOGYy
NGFmNmE1Yjk5MGUyMTg1MzQ3ZTc1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTQwLDcgKzQw
LDcgQEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIHsKIH0KIAotdm9pZCBDYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewog
ICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5k
ZXggNjRiMTRkNWY2NWZmZmM4NTU0ZGY0NjY1Yzc1OTE2ZjM0ZDFkNTQ2YS4uMzc5OGE5YjRkOTAx
M2NmZGVhNmY1NmZiZGYwMDE1YWY4OTQ3NTcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC00Miw3ICs0
Miw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlm
ZXN0PiBwcm9jZXNzKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRV
UkwsIERvY3VtZW50KiA9IG51bGxwdHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRS
ZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2RlY29kZXIucHRyKCk7IH0KICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
CmluZGV4IDlkMmRjNzM2NDgwMmQwZDYyYTY1OTFkZTY4OWE1YTdhMjQ0MzA1MTEuLjM4YTJlMTdm
MGQwNmM4YWM5OGRlMjRiMWU1MmI4ZTYwZTkyNDEyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTk3LDcgKzk3LDcg
QEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQu
bV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6
OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRp
bmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRh
dGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuaAppbmRleCBkMzdmYWZhY2MwMTIyYzg3NTQwZjQ2NGI5ZTU2
MTYwY2NhZTQ2OWY5Li5lNjU1YzY5ZTNlZGI2MDk1MDIzOWNjZTQ1NDVmMDk2YjUyNjU2ZGU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0
IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAg
IGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7Cisg
ICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0
YSgpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApp
bmRleCBmOWFkNzcxM2M2MDNhNmEwYTU2YmNhMjc5Y2U4MjUwNjY2YTMyMGZhLi5kMmJjMjgyMTQ3
OWM1OWEyMzIzZTRmNjVjZDk0YjYzYjQyMzczNjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6
ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRp
Y19jYXN0PENhY2hlZEZvbnRDbGllbnQmPihjbGllbnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQog
Ci12b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEZvbnQ6OmZp
bmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1f
ZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CkBAIC05NSw3ICs5NSw3IEBAIFN0cmluZyBD
YWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4g
dXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDYWNoZWRG
b250OjplbnN1cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKQor
Ym9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEp
CiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQo
KSAmJiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBib29sIHdyYXBwaW5nOwpAQCAt
MTA4LDcgKzEwOCw3IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnl0ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcp
CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3Jl
YXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVt
SW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKICAgICBSZWZQdHIgYnVmZmVyID0geyAm
Ynl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGJ1
ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAppbmRleCAxNTRk
YjhjYmFiZjNkNWEzOGUwOTYxYWNiNTVjZWFjZmYyZjI5NzNhLi4xMzQ2NmNjOTlkMGQxOWNiZjNk
OGVmM2RmYmQ5NmYzNGQwZjg1NDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3RpbGxOZWVkc0xv
YWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5pdGlhdGVkOyB9CiAKICAgICB2
aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3Rl
VVJJKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBp
bmcpOwogICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21E
YXRhKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEmLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29s
IGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKICAgICB2
aXJ0dWFsIFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNv
bnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRo
ZXRpY0l0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwpAQCAtNjIsNyArNjIsNyBA
QCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFG
cm9tQ3VzdG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJvbGQsIGJvb2wgaXRh
bGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKLSAgICBib29sIGVuc3VyZUN1c3Rv
bUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJl
Q3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKIAogcHJpdmF0ZToKICAgICBTdHJp
bmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0OwpAQCAtNzQsNyArNzQsNyBAQCBw
cml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgc2V0Qm9keURhdGFGcm9t
KGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQog
CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggN2MwMWM4Y2MyMzExNzg2
YzYyNGY0ODVlZGVmNjkzNWZiN2VmYTVmYi4uOTQ2Mjc5NTIwZDBkYTQ0NjIyYzZhY2QzNjY2MjI4
ODEwNWU4MTk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCkBAIC00NjgsNyArNDY4LDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1h
Z2UoKQogICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lkIENhY2hlZElt
YWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lk
IENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhKQogewogICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAg
ICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CkBAIC01MjMsMTQgKzUyMywxNCBAQCBi
b29sIENhY2hlZEltYWdlOjpzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0CiAgICAg
cmV0dXJuIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fbGFzdFVwZGF0ZUltYWdlRGF0YVRpbWUp
LnNlY29uZHMoKSA8IHVwZGF0ZUltYWdlRGF0YUJhY2tvZmZJbnRlcnZhbHNbaW50ZXJ2YWxdOwog
fQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRl
ZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8U2hh
cmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7CiAgICAgaWYgKCFkYXRhKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCiAgICAg
ICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpOwogI2lmIFBMQVRGT1JNKE1BQykgJiYg
IVVTRShXRUJLSVRfSU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BE
RihkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOworICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNj
cmlwdERhdGFUb1BERihkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0
KCkpOwogI2Vsc2UKICAgICAvLyBMb2FkaW5nIHRoZSBpbWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNh
bmNlbGVkIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBjb252ZXJ0aW5nIFBvc3RTY3Jp
cHQgdG8gUERGLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTU1LDcgKzU1NSw3IEBA
IEVuY29kZWREYXRhU3RhdHVzIENhY2hlZEltYWdlOjp1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6
dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6
OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAg
IEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVm
ZmVyRGF0YSk7CiAgICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoZGF0YSk7CkBAIC01NjksNyArNTY5
LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVu
Z3RoKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2Fj
aGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIG1fZGF0YSA9IGNv
bnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsKICAgICBpZiAobV9kYXRhKSB7CkBAIC01OTUsNyAr
NTk1LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKIHZvaWQgQ2FjaGVkSW1hZ2U6OmRpZFJl
cGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpCiB7CiAgICAgaWYgKG1faW1hZ2UpIHsKLSAgICAg
ICAgLy8gTGV0IHRoZSBJbWFnZSBrbm93IHRoYXQgdGhlIFNoYXJlZEJ1ZmZlciBoYXMgYmVlbiBy
ZWppZ2dlZCwgc28gaXQgY2FuIGxldCBnbyBvZiBhbnkgcmVmZXJlbmNlcyB0byB0aGUgaGVhcC1h
bGxvY2F0ZWQgcmVzb3VyY2UgYnVmZmVyLgorICAgICAgICAvLyBMZXQgdGhlIEltYWdlIGtub3cg
dGhhdCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBoYXMgYmVlbiByZWppZ2dlZCwgc28gaXQg
Y2FuIGxldCBnbyBvZiBhbnkgcmVmZXJlbmNlcyB0byB0aGUgaGVhcC1hbGxvY2F0ZWQgcmVzb3Vy
Y2UgYnVmZmVyLgogICAgICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8yNDI3NTYxNyk6IEl0
IHdvdWxkIGJlIGJldHRlciBpZiB3ZSBjb3VsZCBzb21laG93IHRlbGwgdGhlIEltYWdlJ3MgZGVj
b2RlciB0byBzd2FwIGluIHRoZSBuZXcgY29udGVudHMgd2l0aG91dCBkZXN0cm95aW5nIGFueXRo
aW5nLgogICAgICAgICBtX2ltYWdlLT5kZXN0cm95RGVjb2RlZERhdGEodHJ1ZSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBkNTEzZTE2Y2Jh
NWE5NzA3YzMzYWZjNzkzOTE1MTg2NmZhNDM4YTVmLi4wODNmOTJmODg4Mjc2ZWVkYTg5OTEyMDMx
ZDI0NDlhOTY4ZTI2NWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaApAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZl
V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlV2lk
dGgoKTsgfQogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsgfQogCi0gICAgdm9pZCB1
cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5p
c2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAg
ICAgZW51bSBTaXplVHlwZSB7CiAgICAgICAgIFVzZWRTaXplLApAQCAtMTI1LDcgKzEyNSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAg
IGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IFNoYXJlZEJ1
ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0
YUlmTmVlZGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAg
IHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRl
SW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKQEAgLTE2OSw3ICsx
NjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNv
bnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IElt
YWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOworICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHAKaW5kZXggODQyYmY1ZjIwZTA2ZmQ4M2E3MDQ2NTVkNjAwYWRmZGM2NDgwNDQ4
Mi4uODk1ZGIxMTU4YjZiOGM4ZmJmN2IxMGI0M2I2MTRlZGE5NjAyMWNkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC00OCw3
ICs0OCw3IEBAIENhY2hlZFJhd1Jlc291cmNlOjpDYWNoZWRSYXdSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUeXBlIHR5cGUsCiAgICAgQVNTRVJUKGlzTWFpbk9yTWVk
aWFPckljb25PclJhd1Jlc291cmNlKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1
bmsoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorc3RkOjpvcHRpb25hbDxTaGFyZWRC
dWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0
YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7CiAgICAg
c2l6ZV90IHByZXZpb3VzRGF0YUxlbmd0aCA9IGVuY29kZWRTaXplKCk7CiAgICAgaWYgKCFkYXRh
IHx8IGRhdGEtPnNpemUoKSA8PSBwcmV2aW91c0RhdGFMZW5ndGgpCkBAIC01Niw3ICs1Niw3IEBA
IHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpj
YWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDCiAgICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRhKHBy
ZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1
cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAv
LyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5lc3RlZCBydW5sb29wcy4g
V2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExvYWRpbmcuCiAgICAgaWYg
KG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAK
LXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJh
d1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAobV9pbklu
Y3JlbWVudGFsRGF0YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBtYXkgZ2V0IGhlcmUgc3luY2hy
b25vdXNseSBmcm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxsYmFjayB0aGVyZSBlbmRzIHVw
IHNwaW5uaW5nIGEgcnVubG9vcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmgKaW5kZXggNTdmZDdhYjVjMTAwZGMwOWFkZjI2ZWM0Y2JhYzQ1MTRm
MzZmNzVmZi4uYTc4NjVmOGFkMTc4YWVmYjMyMjBhNTZkY2ZmMTk1OTkzY2Y5NWFlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTUx
LDkgKzUxLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENh
Y2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgZmluaXNoTG9hZGlu
Zyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
KyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGRJZ25vcmVI
VFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CkBAIC02Niw3ICs2Niw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlKCkgb3Zl
cnJpZGU7CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2FsbG93RW5jb2RlZERhdGFSZXBsYWNlbWVudDsgfQogCi0gICAgc3RkOjpv
cHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1
bmsoY29uc3QgU2hhcmVkQnVmZmVyKikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxTaGFyZWRC
dWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciopIGNvbnN0OwogICAgIHZvaWQgbm90aWZ5Q2xpZW50c0RhdGFXYXNS
ZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIAogI2lm
IFVTRShRVUlDS19MT09LKQpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxS
ZWRpcmVjdFBhaXIsIDAsIENyYXNoT25PdmVyZmxvdywgMD4gbV9yZWRpcmVjdENoYWluOwogCiAg
ICAgc3RydWN0IERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsKLSAgICAgICAgUmVmUHRyPGNvbnN0IFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxEZWxheWVkRmluaXNo
TG9hZGluZz4gbV9kZWxheWVkRmluaXNoTG9hZGluZzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBjZjRmMDJjNWQ3NDM0Y2I2NWNi
M2QwMzM4YWM3ZmE3M2FmNjE2Njg0Li5iZjY5ZTgwZTU3NmUxYTI4OGY2YTAxMWY1NDYxNDYzMTU1
ODAxZDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05vdGlm
eShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVudC0+bm90
aWZ5RmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1
cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVw
ZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikKIHsKICAgICBBU1NFUlQo
ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEp
OwogfQpAQCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEo
Y29uc3QgdWludDhfdCosIHVuc2lnbmVkKQogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5
KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBD
YWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hM
b2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3Rp
ZnkobWV0cmljcyk7CkBAIC05MTMsNyArOTEzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2Fs
bGJhY2s6OnRpbWVyRmlyZWQoKQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIAot
dm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIG5ld0J1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNv
ZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaAppbmRleCAyMThkNzRmMjc3NmE5NjVmY2VhNDhiNjFhMzI1Zjk3MjhhNzkwZGQ5Li5jOTgy
ZGQ2OTM3YTBiYzJiZjM4YzQyNjEyNmZmZTZlNzhjNzk2NDc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBD
b29raWVKYXI7CiBjbGFzcyBNZW1vcnlDYWNoZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwogY2xhc3MgVGV4dFJl
c291cmNlRGVjb2RlcjsKIApAQCAtMTEyLDkgKzExMiw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBTdHJpbmcg
ZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgY29uc3Qg
VGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IHsgcmV0dXJu
IG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CisgICAgdmly
dHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBlcnJvcihDYWNoZWRS
ZXNvdXJjZTo6U3RhdHVzKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VFcnJvcihjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikgeyBtX2Vycm9yID0gZXJyb3I7IH0KQEAgLTIxMyw3ICsyMTMsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsg
fQorICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNl
UmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2Vp
dmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRl
c1NlbnQgKi8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsg
fQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJik7
CiAjZW5kaWYKIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9h
ZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxv
YWRXaXRob3V0UmVzb3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgSGFzaENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8v
IE5lZWRlZCBieSBQaW5nIGxvYWRzLgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9s
b2FkZXI7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGlt
ZSBtX2xhc3REZWNvZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGlu
IHRoZSBjYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHAKaW5kZXggYjBmNzZhNTA5NjEwZjY3MTA1N2JlZWJmMGEwYjlhNjAxY2E4MjIy
Yi4uZGI0MzE2MDdhZTU2MzgzMDM4MDBkZDI1OWMxMDM0Y2QwOTBmY2ZlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01Miw3
ICs1Miw3IEBAIFN0cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAogICAg
IHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFNW
R0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6Zmlu
aXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8g
V2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3Vt
ZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAppbmRleCBiMDEyYmE5OGVlZGY3MzJj
MDgyYzM2M2IwY2JlMTMwMzQ3NGMzMDQ5Li40NDVlNGY5ZjQyYzNjMjc0MDc5NzZhNjRlOTE1NDA3
ZjhiNTM0ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2Rp
bmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVj
b2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZv
aWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAg
ICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3Vy
Y2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRm9udC5jcHAKaW5kZXggOWNmMDQzNzE5NGE4YTJmY2E1ZTUyNWM3YmZmOWZlOGU5OGE1
MGMzMi4uZDJjMWRlNDdlZmI3ODEzOThmNDQzOGI3Y2E0ZWEyNjBlMjIxOTc2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAtOTEsNyArOTEs
NyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQg
fHwgIWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoKm1f
ZXh0ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVl
KCkpKTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1fZXh0
ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRleCBhMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYw
NTRjMzg1ODIzLi4zNTNkM2RlNjNiMDYyODYxM2FiYWY3NzdmZWIyNTNjNWI2MjQ5MGM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUwLDcgKzUw
LDcgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0aWFsaXplRXh0ZXJu
YWxTVkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAgIFNWR0Zv
bnRGYWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkp
OwogCi0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVmUHRyPFNW
R0RvY3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1f
ZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+IG1f
c2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3Bw
CmluZGV4IGI4N2EzZGIwNmYwMTE0N2YxOWI4ZjQzMjY5ZmQ0NzFlODRlMmVkZjkuLmI2NzM5OGIw
ZTRmNTZmZTdhYmNiMjc0ZDBlMzY4NDMwMzYzNTA4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHVuc2lnbmVkIENh
Y2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAgICAgcmV0dXJuIG1fc2NyaXB0SGFzaDsKIH0KIAot
dm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNjcmlwdDo6
ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAg
bV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA3NWJlNGRiNzE1NzllMzFhYWRhOTcwNjlkOWJmZmMy
YzdlNjM0MzIxLi44NjUxZTYzOWFkOTA2MTcyODU2MWMzMjRiZmE3YWY0Y2Y5N2Y2ZDM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCkBAIC00Nyw3ICs0Nyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsK
ICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3Vy
Y2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9k
ZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4
IDU0MjY2ZGQ5MDgxOWMzNGU5MTUwODQzNDg5NDJlOTEzYWRlODFlZDQuLjBjODQyOGJiOTlkYjZk
ZmIxNmEzNDgxMzRjMzgyNjgzNmNjZTU0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCkBAIC00MCwxMCArNDAsMTAgQEAgQ2FjaGVkVGV4
dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
UEFMOjpTZXNzaW9uSUQKIHsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1Vw
ZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEFT
U0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVy
RGF0YSk7Ci0gICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKKyAgICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxTaGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGll
bnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwpAQCAtNTEs
MTMgKzUxLDEzIEBAIHZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIGNsaWVudC0+ZGVwcmVjYXRlZERpZFJlY2VpdmVD
YWNoZWRSZXNvdXJjZSgqdGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVw
ZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGRv
VXBkYXRlQnVmZmVyKCZkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRh
dGEpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQg
Q2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBkb1Vw
ZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRh
LCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJh
Y2suaAppbmRleCBmNDYzMTc4MzIxZWRjN2NhODY5NzBjZjRhZGRhNDA4OTY5Mjk2ODg1Li4wOWI0
MzM5YTM3YjY3M2IyYWM0ZmRhZTE0NmIyOWI5NjQ3NzdmY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCkBAIC0zNSwxMCArMzUsMTAgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2
b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZG9VcGRhdGVC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVl
dC5jcHAKaW5kZXggYjlhNjU4NzUzY2U5ZjdlYzM2MzNmMWEyZjc0ZTdjYzllYTM5ODU3NC4uZDJl
ZmYyZDJkNDBjOTI3NzM4NzU2YzRhOGYwY2JiOTM0M2JlMTBhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjEsNyAr
NjEsNyBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25zdAogICAg
IHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFhT
TFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6
OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAg
IG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAppbmRleCBjMDRkZDRmMTZjZjNiN2Vj
YTI1ODkxMGI5ZWZhZjQxMjU0ZTJkNzI4Li5iZDIzMTIxNGYyZDIwYmEzOTY0NDYwMzY2ZTA0MWI5
NDEzNWFjNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVu
Y29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0
IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29k
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZp
bmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBt
X3NoZWV0OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29h
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgK
aW5kZXggZDAyMGFjM2RjODA4NDRhNjdhMDdjYjViMWQxNTlmNzFjMGNkY2QxNC4uY2U1MmNmZWJk
NzYxZTU2NDc1YTIwMWU4MTQzODUzMzRlYTRkYmE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaApAQCAtMzIsMTcgKzMyLDE3
IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9DRkNhY2hlZFVSTFJlc3BvbnNlKiBDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIERpc2tDYWNoZU1vbml0
b3IgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3Jl
YXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYpOwotICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0cnlH
ZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZik7CiAKIHByaXZhdGU6CiAgICAgRGlza0NhY2hlTW9uaXRvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7
CiAKLSAgICB2b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJik7CisgICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJik7
CiAKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0OyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IDkzZWU5NjM3NGYw
M2JhMzEyNDQzZDI4MWM1MmE0ODQwNjlkZjJhMzEuLmZhNGI5MDNiZWY5Mzk0ODFjMjJlYTdkZjU1
MWU4YjU1ZTdlMGU1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9E
aXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29h
L0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQpAQCAtNDIsMTMgKzQyLDEzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHdlJ2xsIHRyeSB0byB3
YWl0IGZvciBhIHJlc291cmNlIHRvIGJlIGRpc2sgY2FjaGVkIGJlZm9yZSB3ZSBmb3JnZXQgdGhl
IHJlcXVlc3QuCiBzdGF0aWMgY29uc3QgZG91YmxlIGRpc2tDYWNoZU1vbml0b3JUaW1lb3V0ID0g
MjA7CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0
cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IERp
c2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNo
ZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQogewogICAg
IGF1dG8gZGF0YSA9IF9DRkNhY2hlZFVSTFJlc3BvbnNlR2V0TWVtTWFwcGVkRGF0YShjYWNoZWRS
ZXNwb25zZSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogfQogCiB2b2lkIERpc2tDYWNoZU1vbml0b3I6
Om1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYg
Y2FjaGVkUmVzcG9uc2UpCkBAIC0xMTMsNyArMTEzLDcgQEAgRGlza0NhY2hlTW9uaXRvcjo6RGlz
a0NhY2hlTW9uaXRvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lv
bkkKICAgICBfQ0ZDYWNoZWRVUkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRDYWxsQmFja0Js
b2NrKGNhY2hlZFJlc3BvbnNlLCBibG9ja1RvUnVuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
KTsKIH0KIAotdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZlcikKK3ZvaWQgRGlza0NhY2hl
TW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYgZmlsZUJhY2tl
ZEJ1ZmZlcikKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24o
KS5yZXNvdXJjZUZvclJlcXVlc3QobV9yZXNvdXJjZVJlcXVlc3QsIG1fc2Vzc2lvbklEKTsKICAg
ICBpZiAoIXJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXIuaAppbmRleCBiNTJmOTVhNjVkNWJiN2FmOTBlYmRhNDdlZjAwMmViODg3YmNm
NzI5Li42NmI5MzU4ZWM1MzExMTQ4NDgyMmE3Y2MyNGU3ZjNhOTkxNzA2NWE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtMzgsNyAr
MzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNo
YXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmluYWwgOiBw
cml2YXRlIFByZXZpZXdDb252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZlcnRlclBy
b3ZpZGVyIHsKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIGJvb2wgZGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29sIGRpZFJl
Y2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgYm9vbCBkaWRSZWNlaXZlQnVm
ZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBib29sIGRpZEZpbmlzaExv
YWRpbmcoKTsKICAgICB2b2lkIGRpZEZhaWwoKTsKIApAQCAtNjIsMTIgKzYyLDEyIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmluaXNoVXBkYXRpbmcoUHJldmlld0Nv
bnZlcnRlciYpIGZpbmFsIHsgfTsKICAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsVXBk
YXRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRl
ckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgZmluYWw7Ci0gICAgdm9pZCBw
cmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVE
YXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgZmlu
YWw7CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZyhQcmV2aWV3
Q29udmVydGVyJikgZmluYWw7CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbENvbnZl
cnRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOwogCiAgICAgLy8gUHJldmlld0NvbnZlcnRl
clByb3ZpZGVyCi0gICAgdm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRl
cihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRC
dWZmZXIqKT4mJikgZmluYWw7CisgICAgdm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmll
d0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYpIGZpbmFsOwogICAgIHZvaWQgcHJvdmlkZVBh
c3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJikgZmluYWw7CiAKICAgICBSZWZQdHI8UHJldmll
d0NvbnZlcnRlcj4gbV9jb252ZXJ0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXggNTJmZmQ1MzdiZmQ2MmZmNjdkZWNkNDY0YjY1
ZmI2YzkwNTcwNjJkNy4uNzQ4ZmVkYjhlYTQ4ZmFiYzgyNWZiNWI2NzcxNzQxNTIwNWIzMWIxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5t
bQpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+
IG1ha2VDbGllbnQoY29uc3QgUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgYwogICAgIHJldHVybiBl
bXB0eUNsaWVudCgpOwogfQogCi1ib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIExlZ2FjeVByZXZpZXdMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIGlmIChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9h
ZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXIm
IGMKICAgICB9KTsKIH0KIAotdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVy
dGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFJlY2Vp
dmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhKQogewogICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBtX3Jlc291cmNlTG9hZGVyLmdldCgp
OwogICAgIGlmICghcmVzb3VyY2VMb2FkZXIpCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBMZWdh
Y3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZp
ZXdDb252ZXJ0ZXImIGMKICAgICBtX2NsaWVudC0+ZGlkUmVxdWVzdFBhc3N3b3JkKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92
aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252
ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVz
b3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZjb252ZXJ0
ZXIgPT0gbV9jb252ZXJ0ZXIpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRh
LT5nZXQoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCBhMzYzYjdi
MDJjYjNjOTc3ZDU1ZmNkZmNjY2JhNDMxZDM1MDcwNjgzLi5lYTYxNWRmZjRkZDBlZDUxNGJmZjY0
NDI2NDdlYzQ2MjBmNjMyMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTM4
LDEzICszOCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgRE9NUGFzdGVB
Y2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRWxl
bWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgS2V5Ym9hcmRFdmVudDsKIGNsYXNzIE5vZGU7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3Mg
U3R5bGVQcm9wZXJ0aWVzOwogY2xhc3MgVGV4dENoZWNrZXJDbGllbnQ7CiBjbGFzcyBWaXNpYmxl
U2VsZWN0aW9uOwpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNo
b3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU2ltcGxl
UmFuZ2UmKSA9IDA7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRl
bnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5n
JiAvKiBwcmVmZXJyZWRGaWxlTmFtZSAqLywgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgeyB9CisgICAg
dmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAv
KiBpZGVudGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICovLCBjb25zdCBT
dHJpbmcmIC8qIHByZWZlcnJlZEZpbGVOYW1lICovLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRU
eXBlICovLCBjb25zdCBTdHJpbmcmIC8qIGZpbGVQYXRoICovKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgcmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYm
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25z
dCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8pIHsgfQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRlZENh
bmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCmluZGV4IDZkNTFjNWU1MTZhM2RiZmJiNzQ3NmVkOTRiMDQxZTZlNTZmNzNjMGYuLmYz
N2QwNTliMGViNTI2YzU0OWMwZDdkZWI0ZWE1YTA4ODBmZjBkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cApAQCAtMTk1Miw3ICsxOTUyLDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVl
dCgpIGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlzaGVz
IGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUgbG9h
ZCBldmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hlbgog
ICAgIC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBkYXRh
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNl
clN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRhKQog
ICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VT
ZXJpYWxpemVyLmNwcAppbmRleCBkNzUwY2ZmOTY0MjMwMDUyZjc5OTVhMjdlODg3MjlkMmNkZTgw
NDgwLi5hYzUzY2IxNGJmMDBlNTE2NDdjOWVjOTExMDk4YmVhMDM2MTUxMTIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgUGFn
ZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBTdHJpbmcgdGV4dCA9IGFjY3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVzKCpk
b2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCksIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1
ZGluZ05vZGUpOwotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dl
c3RlZE1JTUVUeXBlKCksIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2Rp
bmcuZW5jb2RlKHRleHQsIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CisgICAg
bV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwg
U2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBVbmVuY29kYWJs
ZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwog
CiAgICAgZm9yIChhdXRvJiBub2RlIDogbm9kZXMpIHsKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lk
IFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0
eWxlU2hlZXQsIGNvbnN0IFVSTAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNoZWNrIHdo
ZXRoZXIgYSBjaGFyc2V0IGhhcyBiZWVuIHNwZWNpZmllZCBhbmQgaWYgbm9uZSB3YXMgZm91bmQg
YWRkIG9uZS4KICAgICAgICAgVGV4dEVuY29kaW5nIHRleHRFbmNvZGluZyhzdHlsZVNoZWV0LT5j
b250ZW50cygpLmNoYXJzZXQoKSk7CiAgICAgICAgIEFTU0VSVCh0ZXh0RW5jb2RpbmcuaXNWYWxp
ZCgpKTsKLSAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQu
dG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICAgICAg
bV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBVbmVuY29kYWJsZUhh
bmRsaW5nOjpFbnRpdGllcykpIH0pOwogICAgICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsK
ICAgICB9CiB9CkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1h
Z2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAg
ICBpZiAoIWltYWdlIHx8IGltYWdlLT5pbWFnZSgpID09ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJl
bmRlcmVyID8gaW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6
IDA7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRl
cmVyID8gaW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7
CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBkYXRhID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4IGJmY2JlN2I4ZGJmZDQ5Zjc5
ZDFhMDBjODAwNGVhZGUyOWM0ODA4MjEuLmZmM2UyZTFmY2IwNjFhNGZmZmM1ZGVmZDRjMmQxODBh
ZjQ5YmY3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKQEAgLTU0LDcgKzU0
LDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBSZXNvdXJjZSB7CiAgICAgICAgIFVSTCB1cmw7CiAg
ICAgICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgfTsK
IAogICAgIGV4cGxpY2l0IFBhZ2VTZXJpYWxpemVyKFZlY3RvcjxSZXNvdXJjZT4mKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NoYXJlRGF0YS5oCmluZGV4IDNlZGQ5YzcxYmIyN2U1MGZkZmRmYWNlZTI3MWVmZWZiN2Ni
MjkxZjUuLjY4YjBkZDJjMzA2Yjc5NDUzMWQyOWJkMTQwZGNiNDJiNDhlMjczNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TaGFyZURhdGEuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgU2hhcmVEYXRhIHsKIAog
c3RydWN0IFJhd0ZpbGUgewogICAgIFN0cmluZyBmaWxlTmFtZTsKLSAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmls
ZURhdGE7CiB9OwogICAgIAogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCmluZGV4IGQ2ODA1YTNlZTUzNGMzNjY0ZjI1
OTQ5NTkzZGZiNWI0OTEzYTU0ZjIuLjc1ODM2Yjg3OTE0M2I2MGE3ZjM1MTk3MDMyMDdiNmFkM2Q4
ZDRmODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKQEAgLTc2LDcg
Kzc2LDcgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcoaW50IGxvYWRJ
bmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKIAogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBm
aWxlLmZpbGVOYW1lID0gZmlsZU5hbWU7Ci0gICAgZmlsZS5maWxlRGF0YSA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJy
YXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgIGZpbGUu
ZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkp
OwogICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChXVEZNb3ZlKGZpbGUpKTsKICAgICBtX2Zp
bGVzUmVhZFNvRmFyKys7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tl
eWVkQ29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCmluZGV4
IDNkODBkN2ExZDQyNDU4NTIwYmQ1NDM4ZWYzNmQ4YTU3Y2I1ZDRlN2UuLjc5YTIzNTM1NWYxZThl
Zjg2MTUzNTJlNjM5YzhjNjMxOGY0MDM3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0tleWVkQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRD
b2RpbmcuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEtl
eWVkRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNjAsNyArMTYw
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3RyaW5n
JiBrZXksIGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1YWwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51bShjb25zdCBTdHJpbmcmIGtleSwgVCB2
YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCmluZGV4
IGUzODA2ZTg3ZGY3OWEzZDliNWNhZTEyMTRkZTY2YWEyYTY1ODQ3ZGIuLmZjNjZjMzY1YTJmMjlh
NGM3OGU2MDYxOWU0N2E3MWM3MjU4ZDhmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Tm93UGxheWluZ01hbmFnZXIuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6
b3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IG1fbm93UGxheWluZ0luZm87CiAgICAgc3RydWN0IEFy
dHdvcmtDYWNoZSB7CiAgICAgICAgIFN0cmluZyBzcmM7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGltYWdlRGF0YTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGltYWdlRGF0YTsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8QXJ0d29ya0NhY2hlPiBtX25v
d1BsYXlpbmdJbmZvQXJ0d29yazsKICAgICBib29sIG1fc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRp
b24geyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCAx
NTczMWViMjNmYTc2OTQ5NjBkZDgwNDk2ZmE4ZjJmOWU4Yzc3ODBmLi4wN2VkNDhlNTg4NGVjZWVk
YzYxZmQ5M2U2YjIyMTcxYmU4ODU4OWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmNwcApAQCAtODksNyArODksNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICByZXR1cm4geyB9OwogfQogCi1S
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQogICAgICAgICByZXR1cm4gc3RyYXRlZ3ktPnJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgdHlwZSwgbmFtZSgpLCBjb250ZXh0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDExNDU0NjI3ZTBjZGNjYTEzZDcz
OTM0YWEwNDM2ZWU3Zjc5NDkzYWUuLjM1NzYzZWUxMmEzOTBlZmM4NDUyYzM1ODA2YjUxMmJlNDI5
YWQ5NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDEzICs2MSwx
MyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CiBj
bGFzcyBGcmFtZTsKIGNsYXNzIFBhc3RlYm9hcmRTdHJhdGVneTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBTaW1wbGVSYW5nZTsK
IApAQCAtODMsMTQgKzgzLDE0IEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudCB7CiAgICAg
V0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRXZWJDb250ZW50KCk7CiAgICAgU3RyaW5nIGNvbnRl
bnRPcmlnaW47CiAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
SW5SVEZGb3JtYXQ7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0
cmluZ0Zvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICBTdHJpbmcgZGF0
YUluU3RyaW5nRm9ybWF0OwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZl
Y3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVj
dG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAjaWYgUExBVEZP
Uk0oR1RLKQogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwpAQCAtMTIwLDE3ICsxMjAsMTcgQEAg
c3RydWN0IFBhc3RlYm9hcmRJbWFnZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRJ
bWFnZSgpOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAjaWYgUExBVEZPUk0oTUFDKQotICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0Owor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CiAgICAgU3Ry
aW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAjZW5kaWYKICNpZiAhUExBVEZPUk0oV0lOKQogICAgIFBh
c3RlYm9hcmRVUkwgdXJsOwogI2VuZGlmCiAjaWYgIShQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KFdJTikpCi0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CiAgICAgU3RyaW5nIHJlc291
cmNlTUlNRVR5cGU7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICBTdHJpbmcgc3Vn
Z2VzdGVkTmFtZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplOwpAQCAtMTQ4LDE2ICsxNDgsMTYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCByZWFkRmlsZVBhdGgoY29uc3QgU3RyaW5nJiwg
UHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlID0geyB9KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRGaWxl
UGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRI
VE1MKGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZEltYWdlKFJlZjxT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVm
ZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRJ
bWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQ
cmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSA9
IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgPSAwOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFdlYkFy
Y2hpdmUoU2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChTaGFy
ZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikg
PSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVm
ZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRX
ZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29s
IHJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29s
IHJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
cmVhZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRh
dGlvblNpemUgPSB7IH0pID0gMDsKICNlbmRpZgogfTsKIApAQCAtMTcyLDcgKzE3Miw3IEBAIHN0
cnVjdCBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgdmlydHVhbCB+UGFzdGVib2FyZEZpbGVS
ZWFkZXIoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBT
dHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNob3VsZFJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiAvKiB0eXBlICovKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lk
IHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogY2xhc3MgUGFzdGVib2FyZCB7CkBAIC0yOTcsNyAr
Mjk3LDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBw
YXN0ZWJvYXJkSXRlbUluZm8oc2l6ZV90IGluZGV4KSBjb25zdDsKIAogICAgIFN0cmluZyByZWFk
U3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiB0eXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgVVJMIHJlYWRV
Ukwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKTsKIAogICAgIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CkBAIC0z
MjksNyArMzI5LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJk
VHlwZXNGb3JDb2NvYVR5cGUoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0VHlwZXMsIGNvbnN0
IFN0cmluZyYgY29jb2FUeXBlKTsKICAgICBTdHJpbmcgcmVhZFN0cmluZ0ZvclBsYXRmb3JtVHlw
ZShjb25zdCBTdHJpbmcmKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFkVHlwZXNXaXRoU2VjdXJp
dHlDaGVjaygpOwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
Rm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5n
Jik7CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9j
b250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1
c3RvbURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuY3BwCmluZGV4IDZkY2VjYjZjOTg4MDhmOTVhNGJlNTFkMDBkNmRiODg4NzVmODg5NzguLjdi
NGIzZDM2YWE2ODAzNjExODc5MTMxYjVhMWIyMjZiNTg4ZDM2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTMzLDEzICszMywx
MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5n
LCBSZWY8U2hhcmVkQnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8
U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4mIG90aGVyKQorc3RhdGljIHN0ZDo6dmFyaWFudDxT
dHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25z
dCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiBvdGhl
cikKIHsKICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG90aGVyKSkKICAg
ICAgICAgcmV0dXJuIHsgc3RkOjpnZXQ8U3RyaW5nPihvdGhlcikgfTsKIAotICAgIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikpCi0gICAgICAgIHJl
dHVybiB7IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikuY29weVJlZigpIH07Cisg
ICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PihvdGhlcikpCisgICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4ob3RoZXIpLmNvcHlSZWYoKSB9OwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTgw
LDcgKzgwLDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGE6OlBhc3RlYm9hcmRDdXN0b21EYXRhKFN0
cmluZyYmIG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYmIGRhdGEKIHsKIH0KIAotUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIo
KSBjb25zdAorUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgY29uc3RleHByIHVuc2lnbmVkIGN1cnJlbnRDdXN0
b21EYXRhU2VyaWFsaXphdGlvblZlcnNpb24gPSAxOwogCkBAIC04OSw3ICs4OSw3IEBAIFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVk
QnVmZmVyKCkgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fb3JpZ2luOwogICAgIGVuY29kZXIgPDwg
c2FtZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGEoKTsKICAgICBlbmNvZGVyIDw8IG9yZGVyZWRUeXBl
cygpOwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5i
dWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIFBh
c3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VE
ZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJiBkZWNvZGVyKQpAQCAtMTI0LDcgKzEy
NCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVy
c2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
UGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZm
ZXIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUGFzdGVib2FyZEN1c3Rv
bURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoYnVm
ZmVyLmRlY29kZXIoKSk7CiB9CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQogICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZvcm1EYXRhID0geyB2YWx1
ZSB9OwogfQogCi12b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEoY29uc3QgU3Ry
aW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFBhc3RlYm9hcmRDdXN0
b21EYXRhOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZv
cm1EYXRhID0geyBXVEZNb3ZlKGRhdGEpIH07CiB9CkBAIC0yMDIsMTQgKzIwMiwxNCBAQCBIYXNo
TWFwPFN0cmluZywgU3RyaW5nPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6c2FtZU9yaWdpbkN1c3Rv
bVN0cmluZ0RhdGEoKSBjb25zdAogICAgIHJldHVybiBjdXN0b21EYXRhOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJp
bmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAg
IGZvciAoYXV0byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgaWYgKGVudHJ5LnR5cGUgIT0g
dHlwZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURh
dGEpLmNvcHlSZWYoKTsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZv
cm1EYXRhKS5jb3B5UmVmKCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAt
MjY1LDExICsyNjUsMTEgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaEN1c3Rv
bVN0cmluZyhGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwKICAgICB9CiB9CiAKLXZv
aWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1
bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5n
LCBSZWY8U2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAordm9pZCBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAogewogICAg
IGZvciAoYXV0byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgYXV0byYgZGF0YSA9IGVudHJ5
LnBsYXRmb3JtRGF0YTsKLSAgICAgICAgaWYgKChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmlu
Zz4oZGF0YSkgJiYgIXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkuaXNOdWxsKCkpIHx8IHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAgICBpZiAoKHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihk
YXRhKS5pc051bGwoKSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+KGRhdGEpKQogICAgICAgICAgICAgZnVuY3Rpb24oZW50cnkudHlwZSwgZGF0
YSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmgKaW5kZXggYmZhZmMzZWM2MDc2MDU1YWMxODc4NTRjY2Q4ODc3YzhjNWZiZjAxZC4u
OTdmZjk4NWUyNGUxMWI0YzdiYjQxNDM3MzdmMDI4NDBjMzVmZmNlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC0zNCw4ICszNCw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNs
YXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhIHsKIHB1YmxpYzoKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVi
bGljOgogCiAgICAgICAgIFN0cmluZyB0eXBlOwogICAgICAgICBTdHJpbmcgY3VzdG9tRGF0YTsK
LSAgICAgICAgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+IHBsYXRmb3Jt
RGF0YTsKKyAgICAgICAgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiBwbGF0Zm9ybURhdGE7CiAgICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhKCk7CkBAIC02MSwxNiArNjEsMTYgQEAgcHVibGljOgogICAgIGNvbnN0
IFN0cmluZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB2b2lkIHNl
dE9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsgfQogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEg
ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6
OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYpOwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoY29uc3Qg
U3RyaW5nJiB0eXBlKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKICAgICBTdHJpbmcg
cmVhZFN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwogCiAgICAg
dm9pZCB3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUp
OwotICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhKTsKKyAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdJbkN1
c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogICAg
IHZvaWQgY2xlYXIoKTsKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBmb3JF
YWNoVHlwZShGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBjb25zdDsKICAgICB2b2lk
IGZvckVhY2hQbGF0Zm9ybVN0cmluZyhGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiBkYXRhKT4mJikgY29uc3Q7Ci0gICAgdm9pZCBmb3JFYWNoUGxhdGZvcm1T
dHJpbmdPckJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qgc3Rk
Ojp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKT4mJikgY29uc3Q7Cisg
ICAgdm9pZCBmb3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYpIGNvbnN0OwogICAgIHZvaWQgZm9yRWFjaEN1c3RvbVN0
cmluZyhGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRh
KT4mJikgY29uc3Q7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggYTc4OGZiNzMwZWRjMWMzZWZh
ZGU4NzBhNDAxMWY4YzRiYmFjMmI0NS4uYzQxZTA4NTI0NDk2YzY3ZjFmMTUwMzhmYmIyNmU5YzI5
ZGE2OThjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0
cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmgKQEAgLTMxLDExICszMSwxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xv
cjsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBj
bGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xh
c3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJ
dGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6
CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2
aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5h
bWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFN0cmlu
ZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZp
cnR1YWwgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
aW50NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0g
MDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUo
U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmly
dHVhbCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRV
UkwoY29uc3QgUGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRDb2xv
cihjb25zdCBDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBl
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtNzIs
NyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVG
b3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogI2VuZGlmCiAgICAgdmlydHVhbCBTdHJpbmcg
cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8UGFz
dGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3Rv
cjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2
aXJ0dWFsIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zy
b21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1
YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9t
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb0NsaXBib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTZWxlY3Rpb25EYXRhJiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAw
OwogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IGI0NWNlMWY5MzhjYmE1MDY2MzhiNmE0MTIxZDc2
NzM2M2Y4YmU1MjIuLjhlMmM4ZmI5MmQ5NzJmZDQyMTYwMDdiYzg3Nzc1MmNmZDM0OGY4NGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaApAQCAt
MzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRXcml0
ZXJEYXRhIGZpbmFsIHsKIHB1YmxpYzoKQEAgLTUxLDE0ICs1MSwxNCBAQCBwdWJsaWM6CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogICAgICAgICBi
b29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5IVE1MRm9y
bWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgICAgICBWZWN0b3I8
U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaAppbmRleCAzZjQ4MzJhNWE2NThjMWNjN2Mw
YWExM2IyNmUwZWE0NzMzZTlkM2I3Li45ZTcyZTQ0YTJlYWM0ZDhlZjczMGI5ODcxZDBlYzUwOGVk
OWZhYzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRl
bnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRG
aWx0ZXIuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1Db250ZW50RmlsdGVyIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSA9IDA7Ci0gICAgdmlydHVh
bCBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qg
PSAwOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICB2aXJ0dWFsIENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0ID0gMDsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCBiYTY4
MWZlMDU1MDQ3NmNhYjhiM2Y2ZjBiY2E1NDM2NGFmYzIwZGVhLi43MWRmYjkzZTU3NTYwZTMzYTdm
NmM4MGMyMGY5MmQ1YjJjYWVjMTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVBhc3RlYm9hcmQuaApAQCAtNDcsMTQgKzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVib2Fy
ZDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7Ci1jbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3Rv
bURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0
cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQ
YXN0ZWJvYXJkV2ViQ29udGVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBwdWJsaWM6CkBA
IC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHBsYXRmb3JtUGFzdGVi
b2FyZFR5cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9t
VHlwZSwgSW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRlSW1hZ2VUeXBlczo6Tm8pOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwotICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3Rv
cjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+
IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwpA
QCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHdpbGwgcmV0
dXJuIDAgaWYgcGFzdGVib2FyZCBvd25lcnNoaXAgaGFzIGJlZW4gdGFrZW4gZnJvbSB1cy4KICAg
ICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IGNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2Fy
ZCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1
ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JU
IGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRV
UkwoY29uc3QgUGFzdGVib2FyZFVSTCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0
Q29sb3IoY29uc3QgQ29sb3ImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldFN0cmlu
Z0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CkBA
IC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNv
bnN0IFBhc3RlYm9hcmRJbWFnZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJl
YWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYg
dGl0bGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBjb3VudCgpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAppbmRleCA0YmVhNGYx
OGU0Yzc5ZGViNTc0NGYyODBlOWY4ZjliYzE4M2M2ZjNiLi42MzFhZGU3Y2NmN2FkMjk2OTNhMmU3
NjUxZmU2YTljZGViZDM3NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmV2aWV3Q29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyLmNwcApAQCAtNjMsNyArNjMsNyBAQCBjb25zdCBSZXNvdXJjZUVycm9yJiBQcmV2
aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25zdAogICAgIHJldHVybiBtX3ByZXZpZXdF
cnJvcjsKIH0KIAotY29uc3QgU2hhcmVkQnVmZmVyJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3
RGF0YSgpIGNvbnN0Citjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBQcmV2aWV3Q29udmVy
dGVyOjpwcmV2aWV3RGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICptX3ByZXZpZXdEYXRhLT5n
ZXQoKTsKIH0KQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVN
YWluUmVzb3VyY2UoKQogICAgIH0pOwogfQogCi12b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmFwcGVu
ZEZyb21CdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFByZXZpZXdDb252
ZXJ0ZXI6OmFwcGVuZEZyb21CdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIHdoaWxlIChidWZmZXIuc2l6ZSgpID4gbV9sZW5ndGhBcHBlbmRlZCkgewog
ICAgICAgICBhdXRvIG5ld0RhdGEgPSBidWZmZXIuZ2V0U29tZURhdGEobV9sZW5ndGhBcHBlbmRl
ZCk7CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0Ns
aWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xpZW50LnByZXZpZXdD
b252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKCp0aGlzKTsKIH0KIAotdm9pZCBQcmV2aWV3Q29u
dmVydGVyOjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkK
K3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyB7IFJl
ZiB7ICp0aGlzIH0gfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRl
ci5oCmluZGV4IDA2Yjc2ZjU5ODUxODJiOTczZTYzZjM5NTkzOTRlYTlkMzQ5YWI3MmEuLjkyMDJl
ZGRkOWUxMDViMjczNWVkYzE0NmYyNjY0YzEzY2I5YzM0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIHN0cnVj
dCBQcmV2aWV3Q29udmVydGVyQ2xpZW50OwpAQCAtNTEsNyArNTEsNyBAQCBzdHJ1Y3QgUHJldmll
d0NvbnZlcnRlclByb3ZpZGVyOwogc3RydWN0IFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlIDogQ2Fu
TWFrZVdlYWtQdHI8UHJldmlld1BsYXRmb3JtRGVsZWdhdGU+IHsKICAgICB2aXJ0dWFsIH5QcmV2
aWV3UGxhdGZvcm1EZWxlZ2F0ZSgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCBkZWxl
Z2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZEZpbmlzaExvYWRpbmcoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkRmFpbFdpdGhFcnJvcihjb25zdCBSZXNvdXJj
ZUVycm9yJikgPSAwOwogfTsKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyBwcmV2aWV3RmlsZU5hbWUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgcHJldmlld1VUSSgpIGNvbnN0OwogICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIHBy
ZXZpZXdFcnJvcigpIGNvbnN0OwotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcHJldmlld0RhdGEo
KSBjb25zdDsKKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBwcmV2aWV3RGF0YSgp
IGNvbnN0OwogCiAgICAgdm9pZCBmYWlsZWRVcGRhdGluZygpOwogICAgIHZvaWQgZmluaXNoVXBk
YXRpbmcoKTsKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzUGxhdGZvcm1Q
YXNzd29yZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKSBjb25zdDsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHZvaWQgaXRlcmF0ZUNsaWVudHMoVCYmIGNhbGxiYWNrKTsKLSAgICB2b2lk
IGFwcGVuZEZyb21CdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBhcHBlbmRG
cm9tQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZEFk
ZENsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50Jik7CiAgICAgdm9pZCBkaWRGYWlsQ29udmVy
dGluZ1dpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRGYWlsVXBk
YXRpbmcoKTsKQEAgLTEwOCw3ICsxMDgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1V
bmxvY2tXaXRoUGFzc3dvcmQoY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBQcmV2aWV3UGxhdGZv
cm1EZWxlZ2F0ZQotICAgIHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZGVsZWdhdGVEaWRGaW5pc2hM
b2FkaW5nKCkgZmluYWw7CiAgICAgdm9pZCBkZWxlZ2F0ZURpZEZhaWxXaXRoRXJyb3IoY29uc3Qg
UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmV2aWV3Q29udmVydGVyQ2xpZW50LmgKaW5kZXggMDRlYTM2ODA2OTJiMjUyYTE5ODljMjZjYTIw
NDIxMjc3N2FhM2I3Yi4uOWNlZTkzMzIwYjIzOGI0Y2Q3M2NkZDJlMDMwMmMzYmY0ZGFkNjhiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQu
aApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFByZXZpZXdD
b252ZXJ0ZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGll
bnQgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVyQ2xpZW50PiB7CiAgICAgdmlydHVh
bCB+UHJldmlld0NvbnZlcnRlckNsaWVudCgpID0gZGVmYXVsdDsKQEAgLTQyLDcgKzQyLDcgQEAg
c3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29u
dmVydGVyQ2xpZW50PiB7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5p
c2hVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2
aWV3Q29udmVydGVyRGlkRmFpbFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0Nv
bnZlcnRlciYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2Vp
dmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBTaGFyZWRCdWZmZXImIG5ld0RhdGEpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZp
ZXdDb252ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBuZXdEYXRhKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKFBy
ZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJE
aWRGYWlsQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgKaW5kZXggODI3
ODYzOTNmY2VkNzU0Yzg1ZjdiMjg5MTI1MmY1MTZiZWQwZDU0OS4uYjk4NmVlNDBkMTk3NTE3NGY1
NGFkMjlhMTY4Y2FkZjE4OTQ1NmMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciA6IENhbk1ha2VXZWFr
UHRyPFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcj4gewogICAgIHZpcnR1YWwgflByZXZpZXdDb252
ZXJ0ZXJQcm92aWRlcigpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCBwcm92aWRlTWFp
blJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVy
dGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Kik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0Nv
bnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBT
dHJpbmcmKT4mJikgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJv
bWlzZWRBdHRhY2htZW50SW5mby5oCmluZGV4IGExY2M3Njk1YzBhNjNlZDc4N2UyMTBhN2M4Mjc3
NzY3ZGNjZTcxYWYuLjFlMTJiOTU1NTgwMjkyYzAzYTU3OGVmM2Y3OGIxNTdlZDVmZWMzMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgK
QEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUHJvbWlzZWRB
dHRhY2htZW50SW5mbyB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTM4LDcg
KzM4LDcgQEAgc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogI2VuZGlmCiAKICAgICBW
ZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKIAogICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdAog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDVlMjVh
ZTNlNDgxMTZhZjQ4NDM5YzNmZjIzOGVlYmQ0MDVlNWFjOGYuLjM3ZTQ1MzY3Mzg5NTE1MTMxNWIx
MjcyNWNjZGU4ZGEzZjFkNjNjMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmNwcApAQCAtMzcsNTIgKzM3LDUyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hh
cmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
CitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIGFwcGVuZChkYXRhLCBzaXplKTsKIH0K
IAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNp
emUpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCitGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewogICAg
IG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVE
YXRhKSkgfSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQ
cm92aWRlciYmIHByb3ZpZGVyKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKICAgICA6IG1fc2l6
ZShwcm92aWRlci5zaXplKCkpCiB7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2Vn
bWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKSB9KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpT
aGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKICAg
ICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK0ZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiB7CiAgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKICNpZiBVU0UoR1NUUkVBTUVS
KQotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRC
dWZmZXImIG1hcHBlZEJ1ZmZlcikKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZl
cikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIobWFwcGVkQnVmZmVy
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihtYXBw
ZWRCdWZmZXIpKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3du
ZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKICAgICA6
IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsg
MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKSB9KTsKIH0KICNlbmRpZgogCi1z
dGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQorc3RhdGljIFZl
Y3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6ZV90IHNpemUpCiB7CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKICAgICBjb21iaW5lZERhdGEucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShzaXplKTsKQEAgLTkyLDE5ICs5MiwxOSBAQCBzdGF0aWMgVmVjdG9yPHVp
bnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dFZlY3RvcgogICAgIHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLVJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzKCkgY29uc3QKK1JlZjxTaGFy
ZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzKCkgY29uc3QK
IHsKICAgICBpZiAobV9jb250aWd1b3VzKQotICAgICAgICByZXR1cm4gUmVmIHsgKnN0YXRpY19j
YXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRo
aXMpKSB9OworICAgICAgICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+
KGNvbnN0X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSB9OwogICAgIGlmICgh
bV9zZWdtZW50cy5zaXplKCkpCi0gICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAg
aWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpCi0gICAgICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUobV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CisgICAg
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29w
eVJlZigpKTsKICAgICBhdXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9z
ZWdtZW50cywgbV9zaXplKTsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoY29tYmluZWREYXRhKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoY29tYmluZWREYXRhKSk7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRC
dWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKK1ZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAg
ICAgZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUoKSk7CkBAIC0xMTQsNyArMTE0LDcg
QEAgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdAogICAgIHJl
dHVybiBkYXRhOwogfQogCi1WZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgp
CitWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKQogewog
ICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTEy
OSwxMyArMTI5LDEzIEBAIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkK
ICAgICByZXR1cm4gY29tYmluZWREYXRhOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldyBTaGFy
ZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKK1NoYXJlZEJ1ZmZl
ckRhdGFWaWV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3Np
dGlvbikgY29uc3QKIHsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBlbGVtZW50
ID0gZ2V0U2VnbWVudEZvclBvc2l0aW9uKHBvc2l0aW9uKTsKICAgICByZXR1cm4geyBlbGVtZW50
LT5zZWdtZW50LmNvcHlSZWYoKSwgcG9zaXRpb24gLSBlbGVtZW50LT5iZWdpblBvc2l0aW9uIH07
CiB9CiAKLWNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogU2hhcmVk
QnVmZmVyOjpnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aW9uKSBjb25zdAorY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGlvbikg
Y29uc3QKIHsKICAgICBSRUxFQVNFX0FTU0VSVChwb3NpdGlvbiA8IG1fc2l6ZSk7CiAgICAgYXV0
byBjb21wYXJhdG9yID0gW10oY29uc3Qgc2l6ZV90JiBwb3NpdGlvbiwgY29uc3QgRGF0YVNlZ21l
bnRWZWN0b3JFbnRyeSYgZW50cnkpIHsKQEAgLTE0Niw3ICsxNDYsNyBAQCBjb25zdCBTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yRW50cnkqIFNoYXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZv
clBvc2l0aW9uKAogICAgIHJldHVybiBlbGVtZW50OwogfQogCi1TdHJpbmcgU2hhcmVkQnVmZmVy
Ojp0b0hleFN0cmluZygpIGNvbnN0CitTdHJpbmcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dG9I
ZXhTdHJpbmcoKSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAg
ICBmb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewpAQCAtMTU2LDIyICsxNTYsMjIg
QEAgU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBz
dHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXI6OnNpemUo
KSBjb25zdAorc2l6ZV90IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnNpemUoKSBjb25zdAogewog
ICAgIHJldHVybiBtX3NpemU7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjppc0VtcHR5KCkgY29u
c3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuICFzaXplKCk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBj
b25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAog
ewogICAgIHJldHVybiBtX2NvbnRpZ3VvdXM7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8QXJyYXlCdWZm
ZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QK
IHsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlh
bGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSksIDEpOwogICAgIGlmICghYXJyYXlC
dWZmZXIpIHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogICAgIHJldHVybiBhcnJheUJ1ZmZl
cjsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRh
dGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBt
X3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEubV9zZWdt
ZW50cy5zaXplKCkpOwpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBl
bmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lz
dGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QgbGVuZ3RoKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1fY29u
dGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKQEAgLTIxMSw3ICsyMTEsNyBA
QCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBs
ZW5ndGgpCiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCit2b2lkIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewogICAgIEFT
U0VSVCghbV9jb250aWd1b3VzKTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7CkBA
IC0yMjAsMjEgKzIyMCwyMSBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEpCiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12
b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgp
Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoKQogewogICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhKSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyKCkKK3Zv
aWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogewogICAgIG1fc2l6ZSA9IDA7CiAg
ICAgbV9zZWdtZW50cy5jbGVhcigpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgp
KTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKK1Jl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5KCkg
Y29uc3QKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBhZG9w
dFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOwogICAgIGNsb25lLT5tX3NpemUgPSBt
X3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3Nl
Z21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50
cykKQEAgLTI0NCwxNCArMjQ0LDE0IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y29weSgpIGNvbnN0CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6
Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4
X3Q+Jik+JiBhcHBseSkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9yRWFj
aFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+
JiBhcHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsKICAgICBm
b3IgKGF1dG8mIHNlZ21lbnQgOiBzZWdtZW50cykKICAgICAgICAgYXBwbHkoU3BhbiB7IHNlZ21l
bnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSB9KTsKIH0KIAotYm9v
bCBTaGFyZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJl
Zml4KSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0
IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKIHsKICAgICBpZiAocHJlZml4LmVt
cHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjczLDcgKzI3Myw3IEBAIGJvb2wgU2hh
cmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkg
Y29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZm
ZXI6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKK1ZlY3Rvcjx1aW50
OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
ZW5ndGgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgaWYgKG9mZnNl
dCA+PSBzaXplKCkpCkBAIC0zMDAsMTIgKzMwMCwxMiBAQCBWZWN0b3I8dWludDhfdD4gU2hhcmVk
QnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAgICAgcmV0
dXJuIGRhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRp
b24sIHNpemVfdCBsZW5ndGgpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNv
cHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIHsKICAgICByZXR1
cm4gY29weVRvKGRlc3RpbmF0aW9uLCAwLCBsZW5ndGgpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZl
cjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3Ro
KSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGlu
YXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KGxlbmd0aCArIG9mZnNldCA8PSBzaXplKCkpOwogICAgIGlmIChvZmZzZXQgPj0gc2l6ZSgpKQpA
QCAtMzQzLDEzICszNDMsMTMgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKICAgICB9CiB9CiAK
LWJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2Vn
bWVudHMuc2l6ZSgpID09IDE7CiB9CiAKICNpZiBBU1NFUlRfRU5BQkxFRAotYm9vbCBTaGFyZWRC
dWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogewogICAgIHNpemVfdCBwb3Np
dGlvbiA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykgewpA
QCAtMzYxLDE5ICszNjEsMTkgQEAgYm9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0
ZW50KCkgY29uc3QKIH0KICNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCi1Db250aWd1b3VzU2hh
cmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKCkKIHsKICAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOwogfQogCi1Db250aWd1b3VzU2hh
cmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdt
ZW50KQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21l
bnQpCiB7CiAgICAgbV9zaXplID0gc2VnbWVudC0+c2l6ZSgpOwogICAgIG1fc2VnbWVudHMuYXBw
ZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsKICAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOwog
fQogCi1Db250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxT
aGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVm
ZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIpCiB7CiAg
ICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBjb250aWd1b3Vz
QnVmZmVyLT5pc0VtcHR5KCkpOwogICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUo
KTsKQEAgLTM4MiwzMSArMzgyLDMxIEBAIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjb250aWd1b3VzQnVmCiAgICAgbV9j
b250aWd1b3VzID0gdHJ1ZTsKIH0KIAotQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgOiBT
aGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICA6IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIoV1RGTW92ZShkYXRhKSkKIHsKICAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOwogfQogCi1S
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VG
aWxlTWFwcGluZykKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFw
cGluZykKIHsKICAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6
OlllcykgewogICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwogICAgICAgICBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUs
IG1hcHBpbmdTdWNjZXNzKTsKICAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQotICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUobWFw
cGVkRmlsZURhdGEpKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1
ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwogICAgIH0KICAgICByZXR1cm4gY3JlYXRl
RnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKIH0KIAotY29uc3QgdWludDhfdCogQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Citjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6
OmRhdGEoKSBjb25zdAogewogICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgp
OwogfQogCi1jb25zdCBjaGFyKiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRy
KCkgY29uc3QKK2NvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7CiB9
CkBAIC00MzYsMTcgKzQzNiwxNyBAQCBib29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZp
bGVEYXRhKCkgY29uc3QKIH0KIAogI2lmICFVU0UoQ0YpCi12b2lkIFNoYXJlZEJ1ZmZlcjo6aGlu
dE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB7CiB9CiAjZW5kaWYKIAotV1RGOjpQ
ZXJzaXN0ZW5jZTo6RGVjb2RlciBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29u
c3QKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29u
c3QKIHsKICAgICByZXR1cm4ge3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YSgpKSwgc2l6ZSgpIH19OwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25z
dCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpvcGVyYXRvcj09KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAog
ewogICAgIGlmICh0aGlzID09ICZvdGhlcikKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01NDMs
MTYgKzU0MywxNiBAQCBjb25zdCBjaGFyKiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hh
clB0cigpIGNvbnN0CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRh
dGEoKSk7CiB9CiAKLVJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRh
Vmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGNvbnN0
IFJlZjxEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKLSAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAg
IFtzZWdtZW50LCBkYXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCiAgICAgICAgIFtz
aXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewog
ICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJh
Y3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTU3
OCw3ICs1NzgsNyBAQCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihj
b25zdCBTdHJpbmcmIHN0cmluZykKICAgICB9CiAKICAgICBidWZmZXIuc2hyaW5rKHAgLSByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihidWZmZXIuZGF0YSgpKSk7Ci0gICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGM5NTQ5Njhi
OTFhYWZiZjA2NzA0ZGY4ZWQyZmE5MDAyZDYwNTRmZDkuLjA1NGM0NmNkM2FjMDE5MjhhNjZkNzI3
OTk1ZGIwMmExZGVkMGU1ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
CkBAIC02Miw3ICs2Miw3IEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogCiAvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2Vn
bWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkg
b3RoZXIgb2JqZWN0cy4KQEAgLTEzNCw0NCArMTM0LDQ0IEBAIHByaXZhdGU6CiAjZW5kaWYKICAg
ICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCiAgICAgICAgIFByb3ZpZGVyPiBtX2lt
bXV0YWJsZURhdGE7Ci0gICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKyAgICBmcmllbmQg
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKICNpZiAhVVNFKEZPVU5EQVRJT04pCi0gICAg
ZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEK
KyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOyAvLyBGb3IgY3JlYXRlQ0ZEYXRhCiAjZW5k
aWYKIH07CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxTaGFyZWRCdWZmZXI+IHsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcik7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURh
dGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmls
ZURhdGEpKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisgICAg
c3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOyB9CisgICAgc3RhdGljIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihkYXRhLCBz
aXplKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQorICAgIHN0YXRpYyBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFw
cGVkRmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsg
fQorICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1
aW50OF90PiYmIHZlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOyB9CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVy
KSkpOyB9CiAKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5Q
dHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSop
OwogI2VuZGlmCiAjaWYgVVNFKENGKQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCiAK
ICNpZiBVU0UoR0xJQikKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwogI2VuZGlmCiAKICNpZiBVU0UoR1NU
UkVBTUVSKQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwog
I2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNl
dCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAKLSAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkg
YnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0
IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisgICAgLy8gU2ltaWxh
ciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRh
IGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBpcyBu
b3Qgc2hhcmVkKS4KICAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKIAotICAgIC8v
IENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNv
bnRlbnRzIHRvIHRoYXQKKyAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMg
dGhpcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAogICAgIC8vIEFy
cmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBi
dWZmZXIuCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVB
cnJheUJ1ZmZlcigpIGNvbnN0OwogCkBAIC0xODEsMTQgKzE4MSwxNCBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQ29udGlndW91cygpIGNvbnN0OwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBz
aXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0
IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRo
KGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CiAKLSAgICB1c2luZyBE
YXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNv
bXBhdGliaWxpdHkgd2hlbiB1c2luZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CisgICAgdXNp
bmcgRGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVudDsgLy8gVG8ga2VlcCBiYWNrd2Fy
ZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQKIAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAgc2l6
ZV90IGJlZ2luUG9zaXRpb247CkBAIC0yMDYsMzggKzIwNiwzOCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7Ci0gICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVy
YXRvcj09KG90aGVyKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdCB7IHJldHVybiAhb3BlcmF0
b3I9PShvdGhlcik7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBtYWtlQ29udGlndW91cygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxT
aGFyZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICBm
cmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKKyAgICBmcmllbmQgY2xhc3MgU2hh
cmVkQnVmZmVyOwogCiAgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKICAgICBib29s
IG1fY29udGlndW91cyB7IGZhbHNlIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21l
bnQ6OlByb3ZpZGVyJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIo
Y29uc3QgY2hhciosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogI2lmIFVTRShDRikK
LSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKENGRGF0YVJl
Zik7CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoR0J5dGVzKik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0g
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVm
ZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cihHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAg
fTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGxlbmd0aCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+
JiYpOwpAQCAtMjUwLDcgKzI1MCw3IEBAIHByaXZhdGU6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNsZWFyKCk7CiAKLSAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBW
ZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1
ZmZlci4KKyAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5k
IHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIuCiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAg
ICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNp
emVfdCBwb3NpdGl0aW9uKSBjb25zdDsKIApAQCAtMjU5LDIwICsyNTksMjAgQEAgcHJpdmF0ZToK
ICNlbmRpZgogfTsKIAotLy8gQSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGlzIGEgU2hhcmVkQnVm
ZmVyIHRoYXQgYWxsb3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRh
dGEoKSBhbmQgcmVsYXRlZCBtZXRob2RzLgotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlciA6
IHB1YmxpYyBTaGFyZWRCdWZmZXIgeworLy8gQSBTaGFyZWRCdWZmZXIgaXMgYSBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyIHRoYXQgYWxsb3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2
aWEgdGhlIGRhdGEoKSBhbmQgcmVsYXRlZCBtZXRob2RzLgorY2xhc3MgU2hhcmVkQnVmZmVyIDog
cHVibGljIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgewogcHVibGljOgogICAgIHRlbXBsYXRlIDx0
eXBlbmFtZS4uLiBBcmdzPgotICAgIHN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoQXJncyYmLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBpZiBjb25zdGV4cHIgKCFzaXplb2Yu
Li4oQXJncykpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKCkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKCkpOwogICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEK
ICAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8RGF0YVNlZ21lbnQ+PiAm
Ji4uLikpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikp
OwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7
CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOwogICAgICAgICB9CiAgICAg
fQogCkBAIC0yODEsNyArMjgxLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFdURjo6
UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OwogCiAgICAgZW51bSBjbGFzcyBN
YXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUg
PSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9
IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZ
ZXMpOwogCiAjaWYgVVNFKEZPVU5EQVRJT04pCiAgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CkBAIC0yOTQsMjEgKzI5NCwyMSBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hh
cmVkQnVmZmVyPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxE
YXRhU2VnbWVudD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCk7CiB9OwogCiBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZh
dWx0OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgewotICAgICAgICAvLyBXZSBkbyBu
b3Qgd2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNo
YXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50
IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYXMgYWxs
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQogICAgICAgICAvLyBv
bmNlIGNyZWF0ZWQuCiAgICAgICAgIGlmICghYnVmZmVyIHx8IChidWZmZXItPmhhc09uZVJlZigp
ICYmICFidWZmZXItPmlzQ29udGlndW91cygpKSkgewogICAgICAgICAgICAgbV9idWZmZXIgPSBX
VEZNb3ZlKGJ1ZmZlcik7CkBAIC0zMTYsOSArMzE2LDkgQEAgcHVibGljOgogICAgICAgICB9CiAg
ICAgICAgIGFwcGVuZCgqYnVmZmVyKTsKICAgICB9Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
QnVpbGRlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXJCdWlsZGVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICB7
Ci0gICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIFNo
YXJlZEJ1ZmZlciBhcyBhbGwgU2hhcmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAg
ICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciBhcyBhbGwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1t
dXRhYmxlCiAgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KICAgICAgICAgaWYgKGJ1ZmZlci0+aGFz
T25lUmVmKCkgJiYgIWJ1ZmZlci0+aXNDb250aWd1b3VzKCkpIHsKICAgICAgICAgICAgIG1fYnVm
ZmVyID0gV1RGTW92ZShidWZmZXIpOwpAQCAtMzI4LDcgKzMyOCw3IEBAIHB1YmxpYzoKICAgICB9
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRl
cihBcmdzJiYuLi4gYXJncykKLSAgICAgICAgOiBtX2J1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KSkgeyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KICAgICB2b2lkIGFwcGVu
ZChBcmdzJiYuLi4gYXJncykKQEAgLTM1MCw5ICszNTAsOSBAQCBwdWJsaWM6CiAgICAgICAgIGVu
c3VyZUJ1ZmZlcigpOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGdldCgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiB0YWtlKCkKKyAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAg
ICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyID8gbV9idWZmZXItPmNvcHkoKSA6IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHRha2UoKQogICAgIHsKICAgICAg
ICAgZW5zdXJlQnVmZmVyKCk7CiAgICAgICAgIHJldHVybiBtX2J1ZmZlci5yZWxlYXNlTm9uTnVs
bCgpOwpAQCAtMzYyLDEyICszNjIsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVuc3VyZUJ1ZmZl
cigpCiAgICAgewogICAgICAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICAgICAgbV9idWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXIgPSBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICB9Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVy
OwogfTsKIAotaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRh
KCkKK2lubGluZSBWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6ZXh0cmFj
dERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKICAgICAgICAgcmV0dXJuIHRha2VEYXRh
KCk7CkBAIC0zODEsNyArMzgxLDcgQEAgcHVibGljOgogICAgIHNpemVfdCBzaXplKCkgY29uc3Q7
CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwogICAgIGNvbnN0IGNoYXIqIGRhdGFB
c0NoYXJQdHIoKSBjb25zdDsKLSAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRl
U2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVk
QnVmZmVyKCkgY29uc3Q7CiAjaWYgVVNFKEZPVU5EQVRJT04pCiAgICAgUmV0YWluUHRyPE5TRGF0
YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTM5MSw2ICszOTEsNiBAQCBwcml2
YXRlOgogICAgIGNvbnN0IHNpemVfdCBtX3NpemU7CiB9OwogCi1SZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKK1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
LmNwcAppbmRleCBjZGI2ZTcwMzQwNGQ0MjZkZDIxYjQ3OWZhODljMGRhOWI4YzQ5ZjhlLi45ZDA1
NWNlMjdkODhjM2Q2MmU1YmQxY2Q0NmFkOTFmNWNjNDMxZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCkBAIC0zNiw3ICsz
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShNSFRNTCkKIAotU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciog
YnVmZmVyLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcikKK1NoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBi
dWZmZXIsIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKQogICAgIDogbV9pdGVyYXRvckN1
cnJlbnQoYnVmZmVyLT5iZWdpbigpKQogICAgICwgbV9pdGVyYXRvckVuZChidWZmZXItPmVuZCgp
KQogICAgICwgbV9zZWdtZW50KG1faXRlcmF0b3JDdXJyZW50ICE9IG1faXRlcmF0b3JFbmQgPyBt
X2l0ZXJhdG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0YSgpIDogbnVsbHB0cikKQEAgLTQ0LDcgKzQ0
LDcgQEAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNo
YXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWMKIHsKIH0KIAotU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25z
dCBjaGFyKiBzZXBhcmF0b3IpCitTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBjaGFyKiBz
ZXBhcmF0b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVudChidWZmZXItPmJlZ2luKCkpCiAgICAg
LCBtX2l0ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAgLCBtX3NlZ21lbnQobV9pdGVyYXRv
ckN1cnJlbnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRlcmF0b3JDdXJyZW50LT5zZWdtZW50LT5k
YXRhKCkgOiBudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyLmgKaW5kZXggNWQ0ZTZmZWU1ODJjNjYxNmZkMDdlMzk5NGZmNzVjOGYw
N2EyZmNlMS4uMWM2NDA4ZDRjNzM2YTFjNGE0NWNlZTdiM2Y2OTY1N2JjOWEyNjE1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oCkBA
IC00MSw4ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09SRV9FWFBP
UlQgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKTsK
LSAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqLCBjb25zdCBjaGFyKiBz
ZXBhcmF0b3IpOworICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcik7CisgICAgU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IGNoYXIqIHNlcGFyYXRv
cik7CiAKICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBWZWN0b3I8Y2hhcj4mKTsKICAgICB2
b2lkIHNldFNlcGFyYXRvcihjb25zdCBjaGFyKik7CkBAIC01OCw4ICs1OCw4IEBAIHB1YmxpYzoK
ICAgICBzaXplX3QgcGVlayhWZWN0b3I8dWludDhfdD4mLCBzaXplX3QpOwogCiBwcml2YXRlOgot
ICAgIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRl
cmF0b3JDdXJyZW50OwotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6
OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JFbmQ7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JDdXJyZW50Owor
ICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25z
dF9pdGVyYXRvciBtX2l0ZXJhdG9yRW5kOwogICAgIGNvbnN0IHVpbnQ4X3QqIG1fc2VnbWVudCB7
IG51bGxwdHIgfTsKICAgICBzaXplX3QgbV9zZWdtZW50SW5kZXggeyAwIH07CiAgICAgVmVjdG9y
PGNoYXI+IG1fc2VwYXJhdG9yIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U3RhdGljUGFzdGVib2FyZC5jcHAKaW5kZXggYjJkN2E1NTBkNDYwZTk0Y2QzMTUxMzRhMzE5NWJj
ZDkxYzdiNzg5NC4uYTRiNGJiMTA0YjRkODQwMTViOGFhNWI1M2U3ZGZhNzg4Y2VkMjVmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKQEAgLTczLDcg
KzczLDcgQEAgdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9jdXN0b21EYXRhLndyaXRlU3RyaW5n
KHR5cGUsIHZhbHVlKTsKIH0KIAotdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZURhdGEoY29u
c3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFN0YXRpY1Bh
c3RlYm9hcmQ6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgbV9ub25EZWZhdWx0RGF0YVR5cGVzLmFkZCh0eXBl
KTsKICAgICBtX2N1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIFdURk1vdmUoZGF0YSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCmluZGV4IGMwOWI2ZGUzMWYy
ZWRlYmUwMTg4ZGM5YzQ2NmEyNzFlMWI4YjllMTQuLmVkZDcxMzYyM2YwNmQyMmIzOGU4MzJhMjgz
N2ZlNjY5OTlkZmQ3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRp
Y1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJv
YXJkLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBTdGF0
aWNQYXN0ZWJvYXJkIGZpbmFsIDogcHVibGljIFBhc3RlYm9hcmQgewogcHVibGljOgpAQCAtNTIs
NyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29u
c3QgU3RyaW5nJiB0eXBlKSBmaW5hbDsKIAogICAgIHZvaWQgd3JpdGVTdHJpbmcoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpIGZpbmFsOwotICAgIHZvaWQgd3JpdGVEYXRh
KGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICB2b2lk
IHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGRhdGEpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHZvaWQgY2xlYXIoKSBmaW5hbDsKICAg
ICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaAppbmRleCA2ODc5NTkwMGM1YWRmOWNj
OTA0NWUwZWFiYjIyYjE4ZmE2Njk2MzE0Li4xZDY1YmM0MDNhZDg1MjQzYzY3MjVlNzA0NDhkNmNk
YWRjY2NjZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQ
bGF5aW5nSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlp
bmdJbmZvLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IE5v
d1BsYXlpbmdJbmZvQXJ0d29yayB7CiAgICAgU3RyaW5nIHNyYzsKICAgICBTdHJpbmcgbWltZVR5
cGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgTm93UGxheWluZ0luZm9BcnR3b3JrJiBvdGhlcikgY29uc3QKICAgICB7CkBAIC02Nyw3ICs2
Nyw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBzdGQ6Om9wdGlvbmFsPE5vd1Bs
YXlpbmdJbmZvQXJ0d29yaz4gTm93UGxheWluZ0luCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSht
aW1lVHlwZSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBpbWFnZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdlRGF0
YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGltYWdlRGF0YSkpCiAgICAgICAgIHJldHVybiB7
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRmlsZVJlYWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAppbmRleCBlOGIxOWJmMzRlYmEyM2I4NTcyMDdi
ZTg4Y2UxYjQ1YmY4ZjJjY2MzLi5mMzIxNDI5NTFiMTc5OTZlNmNlMTY3NTYzMTZiZmQ0NzNmYWE0
ZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRp
b0ZpbGVSZWFkZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Y29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgY2xhc3Mg
QXVkaW9GaWxlUmVhZGVyV2ViTURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
CiBwdWJsaWM6Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAg
ICAgUmVmPEF1ZGlvVHJhY2tQcml2YXRlV2ViTT4gbV90cmFjazsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDliM2VjYTFhMTU0
NDk4YzBlN2UzNGM3YzkxMzM2OTVjY2Q5NDdlN2IuLjQ0NzNlYzI4ZDA0YzU0MzYzMjNjMDdkMzdi
ZjJjOWNkN2RlZDIxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVu
Y29kZXJDRi5jcHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyQ0Y6OmVu
ZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKK1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCiB7CiAg
ICAgYXV0byBkYXRhID0gYWRvcHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgbV9yb290RGljdGlvbmFyeS5nZXQoKSwga0NGUHJvcGVydHlMaXN0QmluYXJ5
Rm9ybWF0X3YxXzAsIDAsIG51bGxwdHIpKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS5nZXQoKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuaAppbmRleCBmYWI2NmZjYmNhOGY0NzE5N2U5OGQ3OWJmMDJlZjgxNjFh
NDI3NmE0Li5mNTg2YzAyYmIxNWJmMzliNzI4M2ZiYTlhYTVlOGExMjZiODRmZWZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKQEAgLTM3LDcgKzM3LDcg
QEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJDRigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFs
OworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmlu
YWw7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50
OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBr
ZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
U2hhcmVkQnVmZmVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVm
ZmVyQ0YuY3BwCmluZGV4IGI5Yjg4MjBhNjkwYzljNjY0NTFhMWY1MjVmNDE4MzljODYyYzFiMTcu
LjgxOWUyNmZhNGNmMDY3OTU3YTU5ZmVmMjljOTlmMDNmNWY0NDkxZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRh
dGFSZWYgZGF0YSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIoQ0ZEYXRhUmVmIGRhdGEpCiB7CiAgICAgYXBwZW5kKGRhdGEpOwogfQpAQCAtNDEsNyArNDEs
NyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIC8vIFVzaW5n
IEZvdW5kYXRpb24gYWxsb3dzIGZvciBhbiBldmVuIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0
aW9uIG9mIHRoaXMgZnVuY3Rpb24sCiAvLyBzbyBvbmx5IHVzZSB0aGlzIHZlcnNpb24gZm9yIG5v
bi1Gb3VuZGF0aW9uLgogI2lmICFVU0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxDRkRhdGFSZWY+
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYg
KGhhc09uZVNlZ21lbnQoKSkgewogICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lm
PFJldGFpblB0cjxDRkRhdGFSZWY+PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJs
ZURhdGEpKQpAQCAtNTEsMTIgKzUxLDEyIEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB9CiAjZW5kaWYKIAotUmVmPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhUmVmIGRhdGEpCitSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0
YVJlZiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRh
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihkYXRh
KSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNv
bnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29u
KCkgY29uc3QKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogbV9zZWdtZW50cykgewog
ICAgICAgICBpZiAoZW50cnkuc2VnbWVudC0+aGFzT25lUmVmKCkpIHsKQEAgLTY2LDcgKzY2LDcg
QEAgdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKICAg
ICB9CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCit2b2lk
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKIHsKICAgICBp
ZiAoZGF0YSkgewogICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVu
dDo6Y3JlYXRlKGRhdGEpfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaAppbmRleCAwNzk3ZGZi
ZThkMDE4YmU2MzYxNzQ0YzU4Zjg5MmRkNTZlZDY4OWM1Li5jYmU4NzcxYTQ1ZDg2MmNiNWFiMDVl
Y2EzOTk5MjdlMDc4MzhmNTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKQEAgLTUxLDcg
KzUxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkg
b3ZlcnJpZGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0
YSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJs
b2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IGJvb2wgaXNSZXF1aXJlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQppbmRleCA0Mjkw
ZGIxMjhkMDAwYTQwZWVmNzBmZDI5NDFkNjM0NDkwNDZkZTAzLi4yZWYyNzAxZmU2NzhiZjliOTJk
YjIxMmJiZWE1YzkxNWEzZmMzYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQpAQCAt
MTc1LDcgKzE3NSw3IEBAIHZvaWQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmZpbmlz
aGVkQWRkaW5nRGF0YSgpCiAgICAgc2VtYXBob3JlLndhaXQoKTsKIH0KIAotUmVmPFNoYXJlZEJ1
ZmZlcj4gTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgpIGNv
bnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRpZEJsb2NrRGF0
YSgpKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9yZXBsYWNlbWVudERhdGEu
Z2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50
YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKaW5kZXggMDY4Y2RjYjM4M2Y0MjM2NWFj
MzI2NGUyMjlhNmQ2M2JjMmI0YWJkNi4uNjc5YWU5MzI5NTE3ZTFmMzk0M2JhNTc2MmFjOGY1NmU4
NjBjOGMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50
YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCkBAIC00NSw3ICs0NSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IG92ZXJyaWRlOwogICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwot
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBv
dmVycmlkZTsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJv
bHNDb250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50
YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KaW5kZXggYjQ2MWY5NzUzNmRlM2ExNTgxM2E1ODI3
Yjg2NzEzOGI5NmQ0ZjM4Yy4uMWM5NjA0NzE2YjQyNjkzZDVlNDZjMmUyM2U5NDFkYTAwYzgzZTRk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250
cm9sc0NvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lk
IFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQogICAg
IHVwZGF0ZUZpbHRlclN0YXRlKCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFBhcmVudGFsQ29u
dHJvbHNDb250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpyZXBsYWNlbWVu
dERhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVwbGFjZW1lbnREYXRhLmdldCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCA2ZjUw
ZjAzNWFkZmVhYTlkYmFkYjAyYWNhZDhmMDY3Yzc4M2ZjYmU1Li5iODE3MDgxN2NlYzU5ZTIyZDNj
MGU5YTc4ZjE0NmMwMzNlNGMxNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBOU0JpdG1h
cEltYWdlRmlsZVR5cGUgYml0bWFwUE5HRmlsZVR5cGUoKQogfQogI2VuZGlmIC8vIFBMQVRGT1JN
KE1BQykKIAotLy8gTWFraW5nIHRoaXMgbm9uLWlubGluZSBzbyB0aGF0IFdlYktpdCAyJ3MgZGVj
b2RpbmcgZG9lc24ndCBoYXZlIHRvIGluY2x1ZGUgU2hhcmVkQnVmZmVyLmguCisvLyBNYWtpbmcg
dGhpcyBub24taW5saW5lIHNvIHRoYXQgV2ViS2l0IDIncyBkZWNvZGluZyBkb2Vzbid0IGhhdmUg
dG8gaW5jbHVkZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLmguCiBQYXN0ZWJvYXJkV2ViQ29udGVu
dDo6UGFzdGVib2FyZFdlYkNvbnRlbnQoKSA9IGRlZmF1bHQ7CiBQYXN0ZWJvYXJkV2ViQ29udGVu
dDo6flBhc3RlYm9hcmRXZWJDb250ZW50KCkgPSBkZWZhdWx0OwogCkBAIC0yMTEsMTEgKzIxMSwx
MSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRp
bmdzKCkKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLXN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCitzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiB0aWZmQnVmZmVyKQogewogICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJ
bWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJl
cHJlc2VudGF0aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9
XTsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOwor
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKIH0KICNlbmRpZgogCkBA
IC0zMTYsNyArMzE2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0
aFNlY3VyaXR5Q2hlY2soKQogICAgIHJldHVybiBjb2NvYVR5cGVzOwogfQogCi1SZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2Vj
dXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0
ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYg
dHlwZSkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250
ZXh0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFy
ZWRCdWZmZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1
ZmZlckNvY29hLm1tCmluZGV4IDk4MDU0N2I4Y2M0YzRhODhjYTE1NWNiYjE3ODIwYWY4NWUyZGM5
NjkuLjI1ZjMxMWYyNTg5YjgyZWZkMjU3N2EwODg5NGI2YzVlMDY2YjkyNzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC04
OCwzNyArODgsMzcgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkKK1JlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoTlNEYXRhICpkYXRh
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihicmlkZ2VfY2FzdChk
YXRhKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIo
YnJpZGdlX2Nhc3QoZGF0YSkpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0Rh
dGEgKmRhdGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRh
dGEpCiB7CiAgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIHJldHVybiBhcHBlbmQoYnJp
ZGdlX2Nhc3QoZGF0YSkpOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBicmlkZ2VfY2FzdChjcmVh
dGVDRkRhdGEoKSk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUo
KSkKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIG51bGxwdHIs
IDApKTsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdtZW50c1swXS5zZWdtZW50LT5jcmVh
dGVOU0RhdGEoKSk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGF1dG8gcmVzb3VyY2VE
YXRhID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOmZpbGVQYXRoXSkKLSAgICAgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOworICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotUmV0YWluUHRyPE5TQXJyYXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
TlNEYXRhQXJyYXkoKSBjb25zdAorUmV0YWluUHRyPE5TQXJyYXk+IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKIHsKICAgICByZXR1cm4gY3JlYXRlTlNB
cnJheShtX3NlZ21lbnRzLCBbXSAoYXV0byYgc2VnbWVudCkgewogICAgICAgICByZXR1cm4gc2Vn
bWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCmluZGV4IGZiYzI4M2ZiYzMzNjli
ZjgyN2UzMTY5OTRjNGM5NGUwNjM2M2NiODEuLjJkZTQxOTM0ZGExOTg3OWQ3NWMwZGY4YTg5ZTY0
ZTU5OWMyOWFlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETUluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNSW5zdGFuY2UuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBMb2dnZXI7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvbjsKIHN0cnVjdCBDRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uOwogCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIENETUluc3Rh
bmNlQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50PiB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNSW5zdGFuY2VDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25z
dCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVu
cmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIC8vIEphdmFTY3JpcHQncyBoYW5k
bGUgdG8gYSBDRE1JbnN0YW5jZSwgbXVzdCBiZSB1c2VkIGZyb20gdGhlCkBAIC05OCw3ICs5OCw3
IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVXaXRoQ29u
ZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5j
dGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Vy
dmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxs
YmFjayYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNz
aW9uKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaAppbmRleCAzN2NkMDdjN2JmMmRjNzVlNDFm
ZDVjNmM3ZGVjZjQzZTEwMzllMTE0Li5kMjU5MjI1YmE5ZTAyYTY0ZDBjZWNkNjE1MWZkZjkzZjRm
MjQ2NmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1JbnN0YW5jZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaApAQCAtNDMsMTYgKzQzLDE2IEBAIGNsYXNz
IExvZ2dlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDRE1JbnN0YW5jZVNlc3Npb25D
bGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50KCkgPSBkZWZh
dWx0OwogCiAgICAgdXNpbmcgS2V5U3RhdHVzID0gQ0RNS2V5U3RhdHVzOwotICAgIHVzaW5nIEtl
eVN0YXR1c1ZlY3RvciA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIEtleVN0
YXR1cz4+OworICAgIHVzaW5nIEtleVN0YXR1c1ZlY3RvciA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBLZXlTdGF0dXM+PjsKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2Fn
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB1c2luZyBQbGF0Zm9y
bURpc3BsYXlJRCA9IHVpbnQzMl90OwogICAgIHZpcnR1YWwgUGxhdGZvcm1EaXNwbGF5SUQgZGlz
cGxheUlEKCkgPSAwOwpAQCAtNzgsMTMgKzc4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgU3VjY2Vl
ZGVkLAogICAgIH07CiAKLSAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgU3VjY2Vzc1ZhbHVlIHN1Y2NlZWRl
ZCk+OwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBM
aWNlbnNlQ2FsbGJhY2smJikgPSAwOworICAgIHVzaW5nIExpY2Vuc2VDYWxsYmFjayA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgU3Vj
Y2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+OworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpID0gMDsKIAogICAg
IHVzaW5nIEtleVN0YXR1c1ZlY3RvciA9IENETUluc3RhbmNlU2Vzc2lvbkNsaWVudDo6S2V5U3Rh
dHVzVmVjdG9yOwotICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjpwYWlyPE1lc3NhZ2VU
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAgIHVzaW5nIExpY2Vuc2VVcGRh
dGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzZXNzaW9uV2FzQ2xvc2Vk
LCBzdGQ6Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRp
b25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZT4m
JiBtZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNl
bnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VV
cGRhdGVDYWxsYmFjayYmKSA9IDA7CiAKICAgICBlbnVtIGNsYXNzIFNlc3Npb25Mb2FkRmFpbHVy
ZSA6IHVpbnQ4X3QgewogICAgICAgICBOb25lLApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoK
ICAgICB1c2luZyBDbG9zZVNlc3Npb25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT47CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgPSAwOwogCi0gICAgdXNpbmcgUmVtb3ZlU2Vzc2lv
bkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYs
IHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYsIFN1Y2Nlc3NWYWx1ZSk+OworICAg
IHVzaW5nIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEtleVN0YXR1c1ZlY3RvciYmLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4mJiwgU3VjY2Vzc1ZhbHVlKT47CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVNlc3Npb25E
YXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRh
dGFDYWxsYmFjayYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVSZWNvcmRPZktleVVz
YWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKaW5kZXggY2M2ZGM3ZjE0MGNk
NjdkMmI3Yjg0ZjZhYjJjMjg0MzE2ZGZkZGNjZi4uNTJhNjE0OGM4M2NkNTM5M2M4Zjg3NGVkODVh
ZDhiZjI3ZTViZTUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVByaXZhdGUuaApAQCAtNzMsOCArNzMsOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNTZXNzaW9ucygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOwot
ICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBT
aGFyZWRCdWZmZXImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0
cmluZyYpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCmluZGV4IGYyMThmOTc5MDRmYmJh
NDlmMWViZGY0OGUyMDVmZTczZGZhZmI2NDguLjRiYTc1YmYwMGQ5ZjcxM2I1YWZiYmE3OTM0MDE5
NzE2Y2Q4ZjAzODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1Qcm94eS5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCBDRE1JbnN0YW5jZVNlc3Np
b246OktleVN0YXR1c1ZlY3RvciBLZXlTdG9yZTo6Y29udmVydFRvSlNLZXlTdGF0dXNWZWN0b3Io
KSBjb25zdAogICAgIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1
c1ZlY3RvcjsKICAgICBrZXlTdGF0dXNWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1L
ZXlzKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYga2V5IDogbV9rZXlzKQotICAgICAgICBrZXlT
dGF0dXNWZWN0b3IudW5jaGVja2VkQXBwZW5kKHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwg
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXM+IHsga2V5LT5pZEFzU2hhcmVkQnVmZmVyKCks
IGtleS0+c3RhdHVzKCkgfSk7CisgICAgICAgIGtleVN0YXR1c1ZlY3Rvci51bmNoZWNrZWRBcHBl
bmQoc3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgQ0RNSW5zdGFuY2VTZXNz
aW9uOjpLZXlTdGF0dXM+IHsga2V5LT5pZEFzU2hhcmVkQnVmZmVyKCksIGtleS0+c3RhdHVzKCkg
fSk7CiAgICAgcmV0dXJuIGtleVN0YXR1c1ZlY3RvcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKaW5kZXggYTU4NGI2Y2QyNjZi
MDk4MDkwMjU0ZDdkY2JkZGJmNjBkOTMzMWZiYi4uZTFlMDk4YTFkNWY1ZmZjNjVjMmE0OGZhNDBh
YTk3MmZlODllMWUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1Qcm94eS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEtleUhhbmRsZShzdGF0dXMsIFdURk1vdmUoa2V5SUQp
LCBXVEZNb3ZlKGtleUhhbmRsZVZhbHVlKSkpOwogICAgIH0KLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBpZEFzU2hhcmVkQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
bV9pZC5kYXRhKCksIG1faWQuc2l6ZSgpKTsgfQorICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBpZEFzU2hhcmVkQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUobV9pZC5kYXRhKCksIG1faWQuc2l6ZSgpKTsgfQogCiAgICAgYm9vbCB0YWtlVmFsdWVJZkRp
ZmZlcmVudChLZXlIYW5kbGVWYWx1ZVZhcmlhbnQmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCmluZGV4IDY2
NzI2Zjc0ZTU4ZDhlMTIyY2JjOTBiODY3YjliZjk2MTc3ODAzZDQuLmZjYTZmMjM4OGE1NmE2YTFj
NzI0NzBlNWE0NmZkZDI4ZjA3Mzc1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcApAQCAtMzgsNyArMzgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBDRE1VdGlsaXRpZXMgewogCi1SZWZQ
dHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCitSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEZhaWwgb24gbGFyZ2UgYnVmZmVycyB3
aG9zZSBzaXplIGRvZXNuJ3QgZml0IGludG8gYSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlci4KICAg
ICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oCmluZGV4IDc0ZjUxNWIwYmQy
YTg3MTY4ZWVmMjRiMThmOTVkZWFiZWU4MjhlNmMuLmZjZjViZGRhN2M1OTdkM2MzYWMzNDllZTE3
ODllNGFkNmUwYzk1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oCkBAIC0zNSwxMSArMzUsMTEgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgQ0RNVXRpbGl0aWVzIHsKIAotUmVmUHRyPEpTT046Ok9i
amVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworUmVmUHRyPEpTT046
Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsK
IAogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDJhZGRlZTdlZThiNGVl
YjgzNWZhNzBjMjRmMWQ0ZWY4OWQ3MzQzZWYuLjMxYTlmZGZhMDJkNmQwMGNhMjYxODI1MmRlZDkz
NTMxM2RjNThhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTEzMCw3ICsx
MzAsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUxpY2Vuc2VSZWxlYXNlQWNrbm93bGVkZ2VtZW50Rm9y
bWF0KGNvbnN0IEpTT046Ok9iamVjdCYgcm9vdCkKIC8vIF07CiAKIC8vIFRoaXMgZnVuY3Rpb24g
ZXh0cmFjdHMgdGhlIEtleUlkcyBjb3VudCBhbmQgdGhlIGxvY2F0aW9uIG9mIHRoZSBmaXJzdCBL
ZXlJZCBpbiBpbml0RGF0YSBidWZmZXIuCi1zdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNp
Z25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGluaXREYXRhKQorc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4
dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4g
a2V5SWRzTWFwKDAsIDApOwogCkBAIC0xODksMTMgKzE4OSwxMyBAQCBzdGF0aWMgc3RkOjpwYWly
PHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0
YShjb25zdAogfQogCiAvLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgaW5pdERhdGEgc2hh
cmVkQnVmZmVyIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KLXN0YXRpYyBib29sIGlzQ2VuY0lu
aXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitzdGF0aWMgYm9vbCBpc0NlbmNJ
bml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBz
dGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9j
YXRpb25Gcm9tQ2VuY0luaXREYXRhKGluaXREYXRhKTsKICAgICByZXR1cm4gKChrZXlJZHNNYXAu
Zmlyc3QpICYmIChrZXlJZHNNYXAuc2Vjb25kKSk7CiB9CiAKLXN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGlu
aXREYXRhKQorc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRz
RnJvbUNlbmNJbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkK
IHsKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIApAQCAtMjMwLDcgKzIzMCw3IEBA
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAK
LXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAK
QEAgLTM5MCw3ICszOTAsNyBAQCBib29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNTZXNz
aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFy
S2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29u
c3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5
OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAgICAgLy8gVmFsaWRh
dGUgdGhlIGluaXREYXRhIGJ1ZmZlciBhcyBhbiBKU09OIG9iamVjdCBpbiBrZXlpZHMgY2FzZS4K
ICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5
aWRzIikgJiYgQ0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QoaW5pdERhdGEpKQpAQCAtNDA3
LDcgKzQwNyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVSZXNw
b25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25zZShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICAvLyBWYWxp
ZGF0ZSB0aGUgcmVzcG9uc2UgYnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0LgogICAgIGlmICghQ0RN
VXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QocmVzcG9uc2UpKQpAQCAtNDMzLDcgKzQzMyw3IEBA
IHZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNv
bnN0IENETUtleVN5c3RlbUNvbmZpZ3VyCiAgICAgY2FsbGJhY2soc3VjY2VlZGVkKTsKIH0KIAot
dm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVk
QnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VD
bGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIC8vIFJlamVjdCBzZXR0aW5n
IGFueSBzZXJ2ZXIgY2VydGlmaWNhdGUuCiAgICAgY2FsbGJhY2soRmFpbGVkKTsKQEAgLTQ1NSw3
ICs0NTUsNyBAQCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBDRE1JbnN0YW5jZUNsZWFyS2V5
OjpjcmVhdGVTZXNzaW9uKCkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENETUluc3RhbmNlU2Vz
c2lvbkNsZWFyS2V5KCp0aGlzKSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJL
ZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNh
bGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2Uo
TGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQog
ewogICAgIHN0YXRpYyB1aW50MzJfdCBzX3Nlc3Npb25JZFZhbHVlID0gMDsKICAgICArK3Nfc2Vz
c2lvbklkVmFsdWU7CkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25D
bGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGkK
ICAgICAgICAgfSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3Zv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBy
ZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAjaWYgTE9HX0RJ
U0FCTEVECiAgICAgLy8gV2Ugb25seSB1c2UgdGhlIHNlc2lvbiBJRCBmb3IgZGVidWcgbG9nZ2lu
Zy4gVGhlIHZlcmJvc2UgcHJlcHJvY2Vzc29yIGNoZWNrcyBhcmUgYmVjYXVzZQpAQCAtNTY4LDcg
KzU2OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlbW92ZVNlc3Npb25E
YXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlCiAgICAgQVNTRVJUKHNlc3Npb25JZCA9
PSBtX3Nlc3Npb25JRCk7CiAKICAgICBhdXRvIGRpc3BhdGNoQ2FsbGJhY2sgPQotICAgICAgICBb
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgJmNhbGxiYWNrXShLZXlTdGF0dXNWZWN0b3Im
JiBrZXlTdGF0dXNWZWN0b3IsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYgbWVz
c2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2Nlc3MpIHsKKyAgICAgICAgW3dlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH0sICZjYWxsYmFja10oS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzVmVjdG9y
LCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBT
dWNjZXNzVmFsdWUgc3VjY2VzcykgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZCgKICAg
ICAgICAgICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKndlYWtUaGlzIH0sIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIGtleVN0YXR1c1ZlY3RvciA9IFdURk1vdmUoa2V5U3RhdHVz
VmVjdG9yKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHN1Y2Nlc3NdKCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCkBAIC01ODEsNyArNTgxLDcgQEAg
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKICAgICAvLyBDb25zdHJ1Y3QgdGhlIEtleVN0YXR1c1Zl
Y3RvciBvYmplY3QsIHJlcHJlc2VudGluZyByZWxlYXNlZCBrZXlzLCBhbmQgdGhlIG1lc3NhZ2Ug
aW4gdGhlCiAgICAgLy8gJ2xpY2Vuc2UgcmVsZWFzZScgZm9ybWF0LgogICAgIEtleVN0YXR1c1Zl
Y3RvciBrZXlTdGF0dXNWZWN0b3IgPSBtX2tleVN0b3JlLmFsbEtleXNBcyhDRE1JbnN0YW5jZVNl
c3Npb246OktleVN0YXR1czo6UmVsZWFzZWQpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1l
c3NhZ2U7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2U7CiAgICAg
ewogICAgICAgICAvLyBDb25zdHJ1Y3QgSlNPTiB0aGF0IHJlcHJlc2VudHMgdGhlICdsaWNlbnNl
IHJlbGVhc2UnIGZvcm1hdCwgY3JlYXRpbmcgYSAna2lkcycgYXJyYXkKICAgICAgICAgLy8gb2Yg
YmFzZTY0VVJMLWVuY29kZWQga2V5IElEcyBmb3IgYWxsIGtleXMgdGhhdCB3ZXJlIGFzc29jaWF0
ZWQgd2l0aCB0aGlzIHNlc3Npb24uCkBAIC01OTUsMTQgKzU5NSwxNCBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkNsZWFyS2V5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgTGljZQogICAgICAgICAgICAgcm9vdE9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZN
b3ZlKGFycmF5KSk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBDb3B5IHRoZSBKU09OIGRhdGEg
aW50byBhIFNoYXJlZEJ1ZmZlciBvYmplY3QuCisgICAgICAgIC8vIENvcHkgdGhlIEpTT04gZGF0
YSBpbnRvIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBvYmplY3QuCiAgICAgICAgIFN0cmluZyBt
ZXNzYWdlU3RyaW5nID0gcm9vdE9iamVjdC0+dG9KU09OU3RyaW5nKCk7CiAgICAgICAgIENTdHJp
bmcgbWVzc2FnZUNTdHJpbmcgPSBtZXNzYWdlU3RyaW5nLnV0ZjgoKTsKICAgICAgICAgbWVzc2Fn
ZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2VDU3RyaW5nLmRhdGEoKSwgbWVzc2FnZUNT
dHJpbmcubGVuZ3RoKCkpOwogICAgIH0KIAogICAgIG1fa2V5U3RvcmUudW5yZWZBbGxLZXlzKCk7
Ci0gICAgZGlzcGF0Y2hDYWxsYmFjayhXVEZNb3ZlKGtleVN0YXR1c1ZlY3RvciksIFJlZjxTaGFy
ZWRCdWZmZXI+KCptZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOworICAgIGRpc3Bh
dGNoQ2FsbGJhY2soV1RGTW92ZShrZXlTdGF0dXNWZWN0b3IpLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4oKm1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBT
dHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKaW5kZXggOWMwNzQ3ZGMxYmQ4ZTY3ZjNi
YTg2NGQ5YjgxMTMzNzYyNWM4YTY3OS4uOWUyN2ZlOTEyYzRkYTA2N2ZiMjZjYWZiYzdmNmE2NTFk
YTQ3NTI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCkBAIC04Niw4ICs4Niw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CiAgICAgYm9vbCBzdXBw
b3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNT
ZXNzaW9ucygpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBB
dG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25z
dCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0
aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogfTsKIApAQCAtOTksNyAr
OTksNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFuY2UKICAgICBJbXBsZW1lbnRhdGlvblR5
cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRp
b25UeXBlOjpDbGVhcktleTsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9u
KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRp
ZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0g
ICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNz
Q2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZv
aWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNl
c3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKQEAgLTEwOSw4ICsxMDksOCBAQCBjbGFzcyBD
RE1JbnN0YW5jZVNlc3Npb25DbGVhcktleSBmaW5hbCA6IHB1YmxpYyBDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eSB7CiBwdWJsaWM6CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkoQ0RNSW5z
dGFuY2VDbGVhcktleSYgcGFyZW50KQogICAgICAgICA6IENETUluc3RhbmNlU2Vzc2lvblByb3h5
KHBhcmVudCkgeyB9Ci0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBM
aWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNz
aW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lv
bkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYs
IENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sm
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRW5jb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmNwcAppbmRleCA3YWE5NGI0YjRiYzJjYmY5MjJhYWRhNTg4NzU3
M2Q3NWQ3YzBiYzY3Li43YmYwMDgzMmE0MDJlZWFkNTcyM2NhNDI4ZTlhZmI3Y2M0MWEwYzU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5jcHAKQEAgLTEzOSw5ICsxMzksOSBAQCB2b2lkIEtleWVkRW5jb2RlckdlbmVy
aWM6OmVuZEFycmF5KCkKICAgICBtX2VuY29kZXIgPDwgVHlwZTo6RW5kQXJyYXk7CiB9CiAKLVJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hF
bmNvZGluZygpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5p
c2hFbmNvZGluZygpCiB7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZm
ZXJTaXplKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IDU4
MDU4M2I4MzgxMGVkZTVkMmM5YzY1YTgzOTNiMzI2ZDg3YjI3NDcuLmVjZjRlMDhjOWI5OTFhZGUy
NzNiZDQ0YzYwYmIxNWZlMDE2MzViMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCkBAIC0zMyw3ICszMyw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWRFbmNvZGVyR2VuZXJpYyBmaW5hbCA6IHB1
YmxpYyBLZXllZEVuY29kZXIgewogcHVibGljOgpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAg
ICAgfTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmlu
aXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hF
bmNvZGluZygpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbmNvZGVC
b29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCmluZGV4IGU2ZDc4ZDUyODNl
ZjhlNTNjN2JkYjBiYjgwNGU5ZTI3ZTEwYTE3OTMuLjcwZDI0YzExOTNmOGU1YzcwZDFkMzk4N2M1
ZTAwOThjYjZjMDBiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIv
S2V5ZWRFbmNvZGVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9L
ZXllZEVuY29kZXJHbGliLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBLZXllZEVuY29k
ZXJHbGliOjplbmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAot
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVu
Y29kaW5nKCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVu
Y29kaW5nKCkKIHsKICAgICBnX2Fzc2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09
ICZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192
YXJpYW50X2J1aWxkZXJfZW5kKCZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdCeXRl
cz4gZGF0YSA9IGdfdmFyaWFudF9nZXRfZGF0YV9hc19ieXRlcyh2YXJpYW50LmdldCgpKTsKLSAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0
IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKKyAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQg
Y2hhcio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZ19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0tleWVkRW5jb2RlckdsaWIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRF
bmNvZGVyR2xpYi5oCmluZGV4IGNlMTM2NDk2YzRlMTNlYWMxNDllYTYxODk1YzU0MTQwZmZkNTk2
ZjcuLmU1NjQyYmNmNjcwY2UyNTk5ZmMwNGRmNzI5ZTJiNGMxZjgyMTFmMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCkBAIC0zOSw3ICsz
OSw3IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyR2xpYigpOwogCiBwcml2YXRlOgotICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygp
IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5n
KCkgZmluYWw7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3Ry
aW5nJiBrZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKaW5kZXggNzg4OTE3ZGFlZjk2ODljYTdlZTc0NGUxYTQw
NjE1ZGM0OWIxMzkwNS4uOTM3ZDFmYjZmMGM4ZDdiNTFmMThmZjE1NTYwYjNiOTRhNzRmNjFiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGli
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIu
Y3BwCkBAIC0yNiwyOCArMjYsMjggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQogewogICAgIEFTU0VSVChi
eXRlcyk7CiAgICAgbV9zaXplID0gZ19ieXRlc19nZXRfc2l6ZShieXRlcyk7CiAgICAgbV9zZWdt
ZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKEdSZWZQdHI8R0J5dGVzPihieXRl
cykpIH0pOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0
ZXMqIGJ5dGVzKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihieXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKIH0KIAotR1JlZlB0cjxHQnl0ZXM+IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CitHUmVmUHRyPEdCeXRlcz4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdAogewogICAgIHJlZigpOwogICAgIEdSZWZQdHI8
R0J5dGVzPiBieXRlcyA9IGFkb3B0R1JlZihnX2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhkYXRh
KCksIHNpemUoKSwgW10oZ3BvaW50ZXIgZGF0YSkgewotICAgICAgICBzdGF0aWNfY2FzdDxDb250
aWd1b3VzU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7Ci0gICAgfSwgY29uc3RfY2FzdDxD
b250aWd1b3VzU2hhcmVkQnVmZmVyKj4odGhpcykpKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8U2hh
cmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CisgICAgfSwgY29uc3RfY2FzdDxTaGFyZWRCdWZm
ZXIqPih0aGlzKSkpOwogICAgIHJldHVybiBieXRlczsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAg
ICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTYx
LDcgKzYxLDcgQEAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb24KICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCi0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShj
b250ZW50cy5nZXQoKSwgc2l6ZSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNv
bnRlbnRzLmdldCgpLCBzaXplKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRleCBiMTM2MzQ0ZTYwZjczZmMx
MDA1OGViZmUzY2I0ZTBiNjNmNDU4MmQ3Li4xN2IzNTJmODk3NDI3Mjk4ZjVkZDBiOGRmYjk2OTA3
ODc5NWQzMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApA
QCAtNjgsNyArNjgsNyBAQCBSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgRm9udAogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEZvbnQocGxhdGZvcm1EYXRhLCBvcmlnaW4sIGludGVyc3RpdGlhbCwgdmlzaWJp
bGl0eSwgb3JpZW50YXRpb25GYWxsYmFjaywgaWRlbnRpZmllciwgZm9udENhY2hlRm9yVmVydGlj
YWxEYXRhKSk7CiB9CiAKLVJlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250
U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hl
KiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxT
aGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBm
b250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENh
Y2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCiB7CiAgICAgYm9vbCB3cmFwcGluZzsKICAg
ICBhdXRvIGN1c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEo
Zm9udEZhY2VEYXRhLmdldCgpLCB7IH0sIHdyYXBwaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuaAppbmRleCBmOWJhY2E1YTI2NDFlMzhjODI5NDAwZjVlMzI1NGRmZWQ0
OGRjOGIwLi5kYzFmYjE2ZWEwYjE5NmM1ZDEzYmQ0MTE0ZTUwY2NkY2Q5YjM3YzkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZvbnRDYWNoZTsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsK
IGNsYXNzIEdseXBoUGFnZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBHbHlwaERhdGE7CiAKQEAgLTg1LDcgKzg1LDcgQEAgcHVi
bGljOgogICAgICAgICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRp
b25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHN0YXRpYyBSZWY8
Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4sIEZvbnRDYWNoZSog
Zm9udENhY2hlRm9yVmVydGljYWxEYXRhLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5v
LAogICAgICAgICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25G
YWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZv
bnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNC
b2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiA9IG51bGxwdHIpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYg
Zm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRp
Y0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqID0gbnVsbHB0cik7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB+Rm9udCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKaW5kZXggZTIzODRiOWVlNGVjZTYwMWVl
ZDdhNGMwYjNkYmRmOThiZTk1MzA5My4uZmJiY2NjNDM2ODQ0NzQ5MDgzY2U4OTFmMzYzZjZjYzQw
ZjI5NzQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dFBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRQbGF0Zm9ybURhdGEuaApAQCAtMjIzLDEzICsyMjMsMTMgQEAgcHVibGljOgogI2VuZGlmCiAg
ICAgfQogCi0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0OwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OworICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OworICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJs
ZSkgY29uc3Q7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIHN0cnVj
dCBDcmVhdGlvbkRhdGEgewotICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZm9u
dEZhY2VEYXRhOworICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CiAgICAg
ICAgIFN0cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAg
UmVmPEZvbnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggNGE4NTNlYjY0OTUzZDRhZTQ4MzRmODdj
NTQ4N2FjZDM2NGM1N2Q4MS4uZTMyYTM2YzYwNzYxOTIxNjhjNmEzNzkzMThmNzhhZTE3ODljNDgy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMTA0
LDcgKzEwNCw3IEBAIGJvb2wgSW1hZ2U6OmlzUG9zdFNjcmlwdFJlc291cmNlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgdXJsKQogfQogCiAKLUVuY29kZWREYXRhU3RhdHVzIElt
YWdlOjpzZXREYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCitFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZTo6c2V0RGF0YShSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBtX2Vu
Y29kZWRJbWFnZURhdGEgPSBXVEZNb3ZlKGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2UuaAppbmRleCA2YTA4MTY5NTdhYTkzYzQxMWE1NmNkNGMyYmMyMGRkNmQ5
MDQ0ZGVjLi42NTVkZmU3M2NmZjZhZDFkMDRmNDhiYzIwMTllYmI4MDQxN2Q2MTM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTcwLDcgKzcwLDcgQEAgY2xh
c3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZsb2F0U2l6ZTsK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgTGVuZ3RoOwogCiAvLyBUaGlzIGNsYXNzIGdldHMg
bm90aWZpZWQgd2hlbiBhbiBpbWFnZSBjcmVhdGVzIG9yIGRlc3Ryb3lzIGRlY29kZWQgZnJhbWVz
IGFuZCB3aGVuIGl0IGFkdmFuY2VzIGFuaW1hdGlvbiBmcmFtZXMuCkBAIC0xMjQsNyArMTI0LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgp
IGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIHZpcnR1YWwgSW1hZ2VPcmllbnRh
dGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIEltYWdlT3JpZW50YXRpb246OkZyb21J
bWFnZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgRW5jb2RlZERhdGFTdGF0dXMgc2V0RGF0YShS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBFbmNvZGVkRGF0YVN0YXR1cyBzZXREYXRhKFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2aXJ0dWFs
IEVuY29kZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2VkKGJvb2wgLyphbGxEYXRhUmVjZWl2ZWQqLykg
eyByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OlVua25vd247IH0KIAogICAgIHZpcnR1YWwgU3Ry
aW5nIHV0aSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9IC8vIG51bGwgc3RyaW5nIGlmIHVu
a25vd24KQEAgLTEzMyw4ICsxMzMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVz
dHJveURlY29kZWREYXRhKGJvb2wgZGVzdHJveUFsbCA9IHRydWUpID0gMDsKIAotICAgIFNoYXJl
ZEJ1ZmZlciogZGF0YSgpIHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQotICAg
IGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZEltYWdl
RGF0YS5nZXQoKTsgfQorICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSB7IHJldHVy
biBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9
CiAKICAgICB2aXJ0dWFsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCk7CiAKQEAg
LTIwOSw3ICsyMDksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBDb2xvciBzaW5nbGVQaXhl
bFNvbGlkQ29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvcigpOyB9CiAKIHByaXZhdGU6Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVkSW1hZ2VEYXRhOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBtX2VuY29kZWRJbWFnZURhdGE7CiAgICAgSW1hZ2VPYnNlcnZl
ciogbV9pbWFnZU9ic2VydmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcj4gbV9hbmltYXRp
b25TdGFydFRpbWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4IDRkZGI2ZGY4M2VjYjhiOWI3OTU3ZjQ2NjRl
MTg0ZjAwODFlODEwMTEuLmRlMzNmMWFmNDEyZGMwOGIyYjk2MWExOTQ5NDVjOWNjOTBhYTY2MjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2lu
Z1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNr
aW5nU3RvcmUuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAgICAgYnVmZmVyLmdyb3coYnVmZmVyU2l6ZSk7Ci0gICAgICAgIG1fcGl4
ZWxzID0gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgICAgIG1fcGl4ZWxzID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgp
KSk7CiAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAgIG1fZnJhbWVSZWN0ID0gSW50UmVj
dChJbnRQb2ludCgpLCBtX3NpemUpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHByaXZhdGU6CiAgICAg
ewogICAgICAgICBBU1NFUlQoIW1fc2l6ZS5pc0VtcHR5KCkgJiYgIWlzT3ZlclNpemUobV9zaXpl
KSk7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIgeyBvdGhlci5tX3BpeGVscy0+ZGF0
YSgpLCBvdGhlci5tX3BpeGVscy0+c2l6ZSgpIH07Ci0gICAgICAgIG1fcGl4ZWxzID0gU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1f
cGl4ZWxzID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZN
b3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgfQog
CkBAIC0yMzMsNyArMjMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIFBhY2tlZENvbG9y
OjpBUkdCIHsgcmVzdWx0IH0udmFsdWU7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+IG1fcGl4ZWxzOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudD4gbV9waXhlbHM7CiAgICAgdWludDMyX3QqIG1fcGl4ZWxzUHRyIHsg
bnVsbHB0ciB9OwogICAgIEludFNpemUgbV9zaXplOwogICAgIEludFJlY3QgbV9mcmFtZVJlY3Q7
IC8vIFRoaXMgd2lsbCBhbHdheXMganVzdCBiZSB0aGUgZW50aXJlIGJ1ZmZlciBleGNlcHQgZm9y
IEdJRiBhbmQgUE5HIGZyYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggMDg2OWU5OWEwMDg4NmY3Y2QxMjE4NmZlMzE2MWRl
MDQ3ZmE1MTM2MS4uN2M1NDk0N2Y0ZDgxNDA4NTU5Y2M0NWM0YWM0OWExOWI5ZmM4NmY5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3Bw
CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyOjpjbGVhckZhY3RvcmllcygpCiB9
CiAjZW5kaWYKIAotUmVmUHRyPEltYWdlRGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCitSZWZQdHI8SW1hZ2VEZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlv
biBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCiB7CiAgICAgVU5VU0VEX1BBUkFNKG1pbWVUeXBlKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRleCBhMWEwOGFk
YzE3NWQ0NGJhYTQ0MmU0NGE5NGFhOTY3YTA0ZjVmNjA3Li42YThmZmNiNjBmYzExNTZlYjg0ODc2
ZGVmYjA3Y2JjMGIxMTk4NDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZURlY29kZXIuaApAQCAtMzcsMTIgKzM3LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIAogY2xhc3MgSW1hZ2VEZWNvZGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElt
YWdlRGVjb2Rlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlcigpID0gZGVmYXVs
dDsKIAogICAgIGVudW0gY2xhc3MgTWVkaWFUeXBlIHsKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGlj
OgogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICB1c2luZyBTdXBwb3J0c01lZGlhVHlwZUZ1
bmMgPSBGdW5jdGlvbjxib29sKE1lZGlhVHlwZSk+OwogICAgIHVzaW5nIENhbkRlY29kZVR5cGVG
dW5jID0gRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT47Ci0gICAgdXNpbmcgQ3JlYXRlSW1h
Z2VEZWNvZGVyRnVuYyA9IEZ1bmN0aW9uPFJlZlB0cjxJbWFnZURlY29kZXI+KFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bik+OworICAgIHVzaW5nIENyZWF0ZUltYWdlRGVjb2RlckZ1bmMgPSBGdW5jdGlvbjxSZWZQdHI8
SW1hZ2VEZWNvZGVyPihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKT47CiAKICAgICBzdHJ1Y3QgSW1h
Z2VEZWNvZGVyRmFjdG9yeSB7CiAgICAgICAgIFN1cHBvcnRzTWVkaWFUeXBlRnVuYyBzdXBwb3J0
c01lZGlhVHlwZTsKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0
Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYg
PSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBbGxEYXRhUmVj
ZWl2ZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNo
ZShzaXplX3QpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuY3BwCmluZGV4IGQ4MWM0ODAxOTI4NDZkZDdlMzIxYzJkZmJmYmYxZTBjMjBk
YWE2NzEuLjMwNzc0MzMxNWE0MWVjYTFjOWIyYmM3NzNkMDc5ZWU1ZDQzYmFmNjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTcy
LDcgKzcyLDcgQEAgSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJjZSgpCiAgICAgQVNTRVJUKCZtX3J1
bkxvb3AgPT0gJlJ1bkxvb3A6OmN1cnJlbnQoKSk7CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmVu
c3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRhKQorYm9vbCBJbWFnZVNvdXJj
ZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQog
ewogICAgIGlmICghZGF0YSB8fCBpc0RlY29kZXJBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC05Niw3ICs5Niw3IEBAIGJvb2wgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJB
dmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCit2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmICghZGF0YSB8fCAhZW5zdXJl
RGVjb2RlckF2YWlsYWJsZShkYXRhKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA0LDEzICsxMDQs
MTMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQogICAgIG1fZGVjb2Rlci0+c2V0RGF0YSgqZGF0YSwgYWxsRGF0YVJl
Y2VpdmVkKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6cmVzZXREYXRhKFNoYXJlZEJ1ZmZlciog
ZGF0YSkKK3ZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhKQogewogICAgIG1fZGVjb2RlciA9IG51bGxwdHI7CiAgICAgc2V0RGF0YShkYXRhLCBp
c0FsbERhdGFSZWNlaXZlZCgpKTsKIH0KIAotRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VTb3VyY2U6
OmRhdGFDaGFuZ2VkKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCitF
bmNvZGVkRGF0YVN0YXR1cyBJbWFnZVNvdXJjZTo6ZGF0YUNoYW5nZWQoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgc2V0RGF0YShkYXRh
LCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGNsZWFyTWV0YWRhdGEoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IDhhZjUwODBhMDBhOTkx
NjA4MGYxZjBiMjc3MDczYzJhODUzNDUyNTguLjgxNGYwZTEyZWJhYTQ4Zjg2YWNiNTIxOTczYzMx
ZDVkMzgyZjZmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBC
aXRtYXBJbWFnZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEltYWdlRGVjb2RlcjsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNs
YXNzIEltYWdlU291cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlU291cmNl
PiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEltYWdlU291cmNlPiB7CiAgICAgZnJpZW5kIGNsYXNz
IEJpdG1hcEltYWdlOwpAQCAtNTYsOSArNTYsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEltYWdlU291cmNlKFdURk1vdmUobmF0aXZlSW1hZ2UpKSk7CiAgICAgfQog
Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpOwotICAgIHZvaWQgcmVzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSk7Ci0gICAgRW5jb2Rl
ZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCk7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2b2lkIHJlc2V0RGF0YShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBkYXRhKTsKKyAgICBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgYm9v
bCBpc0FsbERhdGFSZWNlaXZlZCgpOwogCiAgICAgdW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25z
dCB7IHJldHVybiBtX2RlY29kZWRTaXplOyB9CkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFQgZmlyc3RGcmFtZU1ldGFkYXRhQ2FjaGVJ
Zk5lZWRlZChUJiBjYWNoZWRWYWx1ZSwgTWV0YWRhdGFUeXBlLCBUIChJbWFnZUZyYW1lOjoqZnVu
Y3RvcikoKSBjb25zdCwgSW1hZ2VGcmFtZTo6Q2FjaGluZywgY29uc3Qgc3RkOjpvcHRpb25hbDxT
dWJzYW1wbGluZ0xldmVsPiYgPSB7IH0pOwogCi0gICAgYm9vbCBlbnN1cmVEZWNvZGVyQXZhaWxh
YmxlKFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgYm9vbCBlbnN1cmVEZWNvZGVyQXZhaWxhYmxl
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpOwogICAgIGJvb2wgaXNEZWNvZGVyQXZhaWxh
YmxlKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVyOyB9CiAgICAgdm9pZCBkZXN0cm95RGVjb2Rl
ZERhdGEoc2l6ZV90IGZyYW1lQ291bnQsIHNpemVfdCBleGNsdWRlRnJhbWUpOwogICAgIHZvaWQg
ZGVjb2RlZFNpemVDaGFuZ2VkKGxvbmcgbG9uZyBkZWNvZGVkU2l6ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKaW5kZXggNWFkZTdlZjY5ZTI5YTc3ZjJiODQw
OTI5ZTY0YmUwYzQ0ZTUxNjQzOS4uNTc3YmQ1MDhhNWM0MDlmNGJlOWU0Y2YyMDJiODFlNjFlNDVi
NDRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcApAQCAt
MzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBNb2Rl
bDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1l
VHlwZSwgVVJMIHVybCkKK1JlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVy
PiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNb2RlbChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV1RGTW92ZSh1
cmwpKSk7CiB9CiAKLU1vZGVsOjpNb2RlbChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitNb2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiAgICAgOiBtX2RhdGEoV1RG
TW92ZShkYXRhKSkKICAgICAsIG1fbWltZVR5cGUoV1RGTW92ZShtaW1lVHlwZSkpCiAgICAgLCBt
X3VybChXVEZNb3ZlKHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwu
aAppbmRleCA5MTU2MGFlODhmYTY0YzJhMGMxMDAxNDE0ZjMyNDFjZTAwNTZhMWY0Li5lNmJkZTE2
NmY5NDRjZGU3ZGIzMjhjMjk3NmVjNjgyYWRiNmQxMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIE1vZGVsIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kZWw+IHsKIHB1
YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBV
UkwpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5Nb2RlbCgpOwogCi0gICAgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBSZWY8U2hh
cmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICBjb25zdCBV
UkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgCkBAIC00OSw5ICs0OSw5IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVs
PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9k
ZWwoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogCi0gICAgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAg
ICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgVVJMIG1fdXJsOwogfTsKQEAgLTkzLDcgKzkzLDcg
QEAgUmVmUHRyPE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYg
KCF1cmwpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIE1vZGVsOjpjcmVh
dGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3Zl
KCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOworICAgIHJldHVybiBNb2RlbDo6Y3JlYXRlKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdU
Rk1vdmUoKnVybCkpOwogfQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyLmgKaW5kZXggNzQ1OWM1ODU4ZDI0ODdlZjJjNWZkMzcxNzM5ODZiMzM3MzRlYzI4YS4u
ODg2OTFkYzI1NmQ2ZGQ2YzQ1ZjQ2ZTAxNTQ5Njc0MjQ1YWEzNTMzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJl
c291cmNlTG9hZGVyLmgKQEAgLTUxLDggKzUxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNo
ZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAg
IC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VD
bGllbnQgdXNlcyBTaGFyZWRCdWZmZXIuCisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgeyBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxk
IGJlIHJlbW92ZWQgb25jZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB1c2VzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIuCiAgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmIHBsYXRmb3JtLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IGRh
dGFSZWNlaXZlZChwbGF0Zm9ybSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
bG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VC
dWZmZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJj
ZUJ1ZmZlclByaXZhdGUuY3BwCmluZGV4IDU0OTlmMzdhN2YzNjQ2YmQ1ZjM5NWE0OGIwOWQ5NDEx
ZDRjOWI2NjQuLmQzZTFiNTgwNGU4NWE5OTExY2YyMGZjZWQzNGJmMjU1YTMxNDQzNGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZh
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZl
clByaXZhdGUuY3BwCkBAIC0xMzE4LDcgKzEzMTgsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGU6OmRpZFJlY2VpdmVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmIG9yaWdpbmFsU2FtcGxlKQog
ICAgIHVwZGF0ZUhpZ2hlc3RQcmVzZW50YXRpb25UaW1lc3RhbXAoKTsKIH0KIAotdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCiB7CiAgICAgYXBwZW5kKGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2
YXRlLmgKaW5kZXggZWY4NmE0NzM2OTM3MWM4M2U4ODNiMjliYmI2YjlhYjk2ZWNhNWYxZC4uNmI3
ZDk1ZTUyYjlkZjBjODFhZjNiZTFkNmQ5ZjNjOGVkMzk1NDE2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAt
NDksNyArNDksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBUaW1lUmFuZ2VzOwogCiBl
bnVtIGNsYXNzIFNvdXJjZUJ1ZmZlckFwcGVuZE1vZGUgOiB1aW50OF90IHsKQEAgLTY4LDcgKzY4
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclBy
aXZhdGUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCkgPSAwOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBhcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJik7CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCByZXNldFBhcnNlclN0YXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJv
bU1lZGlhU291cmNlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCmluZGV4IGEwZTczYjNmM2ViY2IzYzc4MGZlMzUxZTlk
NmE4MGI2ZmI5MDU1YjQuLmIzN2ViZmM1NjIwNDhmZTZkNzk0MWQyZTVjYzFiY2ExZGMxNTcxYzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9y
bWF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZv
cm1hdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90IGtXb2ZmMlNp
Z25hdHVyZSA9IDB4Nzc0ZjQ2MzI7IC8vICJ3T0YyIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyBib29sIHJlYWRVSW50MzIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBz
aXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQzMihT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKIHsK
ICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlm
IChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTQ5LDcgKzQ5LDcg
QEAgc3RhdGljIGJvb2wgcmVhZFVJbnQzMihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIs
IHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGlj
IGJvb2wgcmVhZFVJbnQxNihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYg
b2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDE2KFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQogewogICAgIEFT
U0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZl
ci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAtNzUsNyArNzUsNyBAQCBzdGF0
aWMgYm9vbCB3cml0ZVVJbnQxNihWZWN0b3I8dWludDhfdD4mIHZlY3RvciwgdWludDE2X3QgdmFs
dWUpCiAKIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3b2ZmU2lnbmF0dXJlID0gMHg3NzRmNDY0Njsg
LyogJ3dPRkYnICovCiAKLWJvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK2Jvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHNpemVfdCBvZmZz
ZXQgPSAwOwogICAgIHVpbnQzMl90IHNpZ25hdHVyZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2
YXRlOgogfTsKICNlbmRpZgogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKK2Jvb2wgY29udmVydFdPRkZU
b1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiB7CiAgICAg
QVNTRVJUX0FSRyhzZm50LCBzZm50LmlzRW1wdHkoKSk7CiAKQEAgLTI4Myw3ICsyODMsNyBAQCBi
b29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rv
cjx1aW50OF90PiYgc2ZudCkKICAgICByZXR1cm4gc2ZudC5zaXplKCkgPT0gdG90YWxTZm50U2l6
ZTsKIH0KIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNz
YXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0yOTQsNyArMjk0LDcgQEAgYm9vbCBjb252
ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYg
YnVmZmVyKQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRlZEZvbnQ7CiAgICAgaWYgKGNv
bnZlcnRXT0ZGVG9TZm50KCpidWZmZXIsIGNvbnZlcnRlZEZvbnQpKQotICAgICAgICBidWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7
CisgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVk
Rm9udCkpOwogICAgIGVsc2UKICAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKaW5kZXggNzhh
YzRhN2FmZmY0ZDRiZWU5ZmQwMmNhYmU3YTk4ZjJmZTdkZGU4Mi4uM2Q1NzAxMDdmMjhmODU0NDc0
MWUzNDk1YzAxNjA3ZTRkZTkwMmQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCkBAIC0zMCwxOSArMzAsMTkgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hh
cmVkQnVmZmVyOwogCiAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyBhIFdPRkYgZmls
ZS4KLWJvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKK2Jvb2wgaXNXT0ZGKFNo
YXJlZEJ1ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSBXT0ZGIGZpbGUgd29mZiBp
cyBpbnZhbGlkIG9yIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gc2ZudCAoZm9yIGV4YW1wbGUs
CiAvLyBpZiBjb252ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5KS4gT3RoZXJ3aXNlIHJldHVybnMg
dHJ1ZSBhbmQgd3JpdGVzIHRoZSBzZm50IHBheWxvYWQgaW50byBzZm50LgotYm9vbCBjb252ZXJ0
V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4m
IHNmbnQpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rv
cjx1aW50OF90PiYgc2ZudCk7CiAKIC8vIElmIHRoZSBnaXZlbiBidWZmZXIgaXMgYSBXT0ZGIGZp
bGUgYW5kIHRoZSBjdXJyZW50IHBsYXRmb3JtIGhhcyBubyBuYXRpdmUgc3VwcG9ydCBmb3IgV09G
RgogLy8gZm9udHMsIGNvbnZlcnQgaXQgdG8gc2ZudC4gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZl
biBidWZmZXIgd2FzIGNvbnZlcnRlZC4gSWYgY29udmVyc2lvbiBmYWlscywKIC8vIHRoZSBidWZm
ZXIgd2lsbCBiZSBzZXQgdG8gbnVsbHB0ci4KLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vz
c2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKK2Jvb2wgY29udmVydFdPRkZU
b1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmlu
ZGV4IGQ3YzAxM2Q1NGUzZGVkMDc4NTQ5MDI4ZDUxZDZlMDI4Yzk3NTA3YzYuLjhiMDRmOWJlOTZj
MzZlMGEyNjIxODBhMjVlYTM3NDU5NjJiM2Q3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZh
aXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtODYsNyArODYsNyBAQCBjb25zdCBBdG9tU3RyaW5nJiBD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNrZE5hbWUoKQogICAgIHJldHVybiBza2Q7CiB9
CiAKLXN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIC8vIEpTT04gb2YgdGhlIGZvcm1hdDogInsgc2luZjogWyA8YmFzZTY0
LWVuY29kZWQtc3RyaW5nPiBdIH0iCiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCkBAIC0xMDUsNyArMTA1LDcgQEAgc3RhdGljIFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogICAgIGlmICghc2luZkFycmF5KQogICAgICAgICByZXR1cm4geyB9OwogCi0g
ICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBzaW5mczsKKyAgICBWZWN0b3I8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PiBzaW5mczsKICAgICBzaW5mcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KHNpbmZBcnJheS0+bGVuZ3RoKCkpOwogCiAgICAgZm9yIChhdXRvJiB2YWx1ZSA6ICpzaW5m
QXJyYXkpIHsKQEAgLTEyNCw3ICsxMjQsNyBAQCBzdGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB9CiAKIHVz
aW5nIFNjaGVtZUFuZEtleVJlc3VsdCA9IFZlY3RvcjxzdGQ6OnBhaXI8Rm91ckNDLCBWZWN0b3I8
dWludDhfdD4+PjsKLXN0YXRpYyBTY2hlbWVBbmRLZXlSZXN1bHQgZXh0cmFjdFNjaGVtZUFuZEtl
eUlkRnJvbVNpbmYoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgU2NoZW1lQW5k
S2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGJ1ZmZlcnMgPSBleHRyYWN0U2luZkRh
dGEoYnVmZmVyKTsKICAgICBpZiAoIWJ1ZmZlcnMuc2l6ZSgpKQpAQCAtMTcwLDkgKzE3MCw5IEBA
IHN0YXRpYyBTY2hlbWVBbmRLZXlSZXN1bHQgZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJvbVNpbmYo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RkOjpv
cHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc6OmV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2luZihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJ
RHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwogICAg
IGF1dG8gcmVzdWx0cyA9IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGJ1ZmZlcik7CiAK
ICAgICBmb3IgKGF1dG8mIHJlc3VsdCA6IHJlc3VsdHMpIHsKQEAgLTE4Myw3ICsxODMsNyBAQCBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6ZXh0cmFjdEtleQogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVTaW5mKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVTaW5mKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBDb21tb24gU0lORiBCb3ggRm9ybWF0
CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0xOTEsMTcgKzE5MSwxNyBAQCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihj
b25zdCBTaGFyZWRCdWZmZQogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2tkKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVTa2QoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwogICAg
IG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAKLXN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3Ry
ZWFtaW5nOjpleHRyYWN0S2V5SURzU2tkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBJbiB0aGUgJ3NrZCcgc2NoZW1lLCB0aGUgaW5p
dCBkYXRhIGlzIHRoZSBrZXkgSUQuCi0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJ
RHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwogICAg
IGtleUlEcy5hcHBlbmQoYnVmZmVyLmNvcHkoKSk7CiAgICAgcmV0dXJuIGtleUlEczsKIH0KQEAg
LTM5Myw3ICszOTMsNyBAQCBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9y
dHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RN
UHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEp
IGNvbnN0CiB7CiAgICAgaWYgKCF2YWxpZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0
YVR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjMsNyArNDIzLDcgQEAgYm9vbCBD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVSZXNwb25zZShjb25z
dCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVSZXNwb25zZShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICByZXR1cm4g
cmVzcG9uc2UuY29weSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcu
aAppbmRleCBiYzkzZjZmNmE3YmRkMDFlZmJmNTViNjJiZGI2YTRlNjZlZjkxMmIzLi4zMTdiYjhk
NTdlODZjMDYyMTRlMGI0MDU5ZGRmNGY4ODA3Yzc0YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
RmFpclBsYXlTdHJlYW1pbmcuaApAQCAtNzEsMTcgKzcxLDE3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGxvYWRBbmRJbml0aWFsaXplKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNl
cnRpZmljYXRlcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygp
IGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
c3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHNpbmZOYW1lKCk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29uc3Qg
U2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXpl
U2luZihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0
b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsK
IAogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBza2ROYW1lKCk7Ci0gICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NrZChj
b25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVTa2QoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTa2QoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
OwogCiAgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxGb3VyQ0M+JiB2YWxpZEZhaXJQbGF5U3RyZWFt
aW5nU2NoZW1lcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAppbmRleCAxNTliOTBjZGI0OGY3
ZmU0NGJiNDliZTJlYzFjMWMyZjQzMjg2NDAwLi41NmI1OGMyNWEyODcwOWZiMzgyMjE4MzllNTVi
YWU0NWVkOTNjZjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAgLTg0LDcgKzg0LDcgQEAg
cHVibGljOgogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkZhaXJQbGF5U3RyZWFtaW5nOyB9
CiAKICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNp
c3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVy
Q2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFs
OworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lv
bj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwogICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8Q0RN
SW5zdGFuY2VDbGllbnQ+JiYpIGZpbmFsOwpAQCAtOTQsMTAgKzk0LDEwIEBAIHB1YmxpYzoKIAog
ICAgIE5TVVJMICpzdG9yYWdlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlVVJMLmdldCgp
OyB9CiAgICAgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9w
ZXJzaXN0ZW50U3RhdGVBbGxvd2VkOyB9Ci0gICAgU2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0aWZp
Y2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0KKyAgICBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0KICAgICBBVkNvbnRlbnRLZXlTZXNzaW9uKiBj
b250ZW50S2V5U2Vzc2lvbigpOwogCi0gICAgUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+
IHRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpOworICAgIFJldGFp
blB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiB0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0
aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBpbml0RGF0YSk7CiAKICAgICAvLyBBVkNvbnRlbnRLZXlTZXNzaW9uRGVs
ZWdhdGVDbGllbnQKICAgICB2b2lkIGRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVl
c3QqKSBmaW5hbDsKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBvdXRwdXRP
YnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChib29sKSBm
aW5hbDsKICAgICB2b2lkIGV4dGVybmFsUHJvdGVjdGlvblN0YXR1c0RpZENoYW5nZUZvckNvbnRl
bnRLZXlSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBmaW5hbDsKIAotICAgIHVzaW5nIEtl
eXMgPSBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIEtleXMgPSBWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JLZXlJRHMoY29uc3QgS2V5cyYpIGNvbnN0
OwogICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lv
bkZvckdyb3VwKEFWQ29udGVudEtleVJlcG9ydEdyb3VwKikgY29uc3Q7CiAgICAgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yUmVxdWVzdChBVkNv
bnRlbnRLZXlSZXF1ZXN0KikgY29uc3Q7CkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKICAg
ICBXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50PiBtX2NsaWVudDsKICAgICBSZXRhaW5QdHI8QVZD
b250ZW50S2V5U2Vzc2lvbj4gbV9zZXNzaW9uOwogICAgIFJldGFpblB0cjxXZWJDb3JlRlBTQ29u
dGVudEtleVNlc3Npb25EZWxlZ2F0ZT4gbV9kZWxlZ2F0ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOwogICAgIGJvb2wgbV9wZXJzaXN0ZW50U3RhdGVBbGxv
d2VkIHsgdHJ1ZSB9OwogICAgIFJldGFpblB0cjxOU1VSTD4gbV9zdG9yYWdlVVJMOwogICAgIFZl
Y3RvcjxXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4+
IG1fc2Vzc2lvbnM7CkBAIC0xNTAsOCArMTUwLDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAv
LyBDRE1JbnN0YW5jZVNlc3Npb24KLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5p
dERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VV
cGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQg
bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExv
YWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3Qg
U3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVT
ZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFD
YWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXggNjJiZDEzNDc5
YzZjMzM2MmNiZTcyNTFiZjY5ZWE4ZDFmODEwYmUyNS4uYmE1MDYxZWJiNWM1ZmJlMDc0ZDNhMjlk
ZWE0ZjkxOGZjMjYyMWNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KQEAgLTIxNyw3ICsy
MTcsNyBAQCBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAogICAgIHJldHVybiBBdG9t
U3RyaW5nKG5zSW5pdFR5cGUpOwogfQogCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gaW5pdGlh
bGl6YXRpb25EYXRhRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KiByZXF1ZXN0KQorc3Rh
dGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0aWFsaXphdGlvbkRhdGFGb3JSZXF1
ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgaWYgKCFyZXF1ZXN0KQog
ICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKQEAgLTI2NSw3ICsyNjUsNyBA
QCBBVkNvbnRlbnRLZXlTZXNzaW9uKiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6Y29udGVudEtleVNlc3Npb24oKQogICAgIHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7CiB9CiAK
LVJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6dGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRh
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkK
K1JldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6dGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRh
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
aW5pdERhdGEpCiB7CiAgICAgZm9yIChhdXRvIHJlcXVlc3RJdGVyID0gbV91bmV4cGVjdGVkS2V5
UmVxdWVzdHMuYmVnaW4oKTsgcmVxdWVzdEl0ZXIgIT0gbV91bmV4cGVjdGVkS2V5UmVxdWVzdHMu
ZW5kKCk7ICsrcmVxdWVzdEl0ZXIpIHsKICAgICAgICAgYXV0byYgcmVxdWVzdCA9ICpyZXF1ZXN0
SXRlcjsKQEAgLTMxNiw3ICszMTYsNyBAQCBwcml2YXRlOgogICAgIFJlc3BvbnNlTWFwIG1fcmVz
cG9uc2VzOwogfTsKIAotc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgUmVmUHRyPEpTT046OlZhbHVlPiBw
YXJzZUpTT05WYWx1ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgLy8gRmFpbCBvbiBsYXJnZSBidWZmZXJzIHdob3NlIHNpemUgZG9lc24ndCBmaXQgaW50byBh
IDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLgogICAgIHNpemVfdCBzaXplID0gYnVmZmVyLnNpemUo
KTsKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNSwogICAgIGNhbGxi
YWNrKGluaXRpYWxpemUoKSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgc2VydmVy
Q2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgc2VydmVyQ2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYm
IGNhbGxiYWNrKQogewogICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsK
ICAgICBtX3NlcnZlckNlcnRpZmljYXRlID0gV1RGTW92ZShzZXJ2ZXJDZXJ0aWZpY2F0ZSk7CkBA
IC01ODUsOCArNTg1LDggQEAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDKiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzoKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCiAgICAgICAgIGF1dG8gc2Vzc2lvbktleXMgPSBzZXNzaW9uSW50ZXJmYWNlLT5r
ZXlJRHMoKTsKLSAgICAgICAgaWYgKGFueU9mKHNlc3Npb25LZXlzLCBbJl0oY29uc3QgUmVmPFNo
YXJlZEJ1ZmZlcj4mIHNlc3Npb25LZXkpIHsKLSAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmlu
ZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYga2V5SUQpIHsKKyAgICAgICAg
aWYgKGFueU9mKHNlc3Npb25LZXlzLCBbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiBzZXNzaW9uS2V5KSB7CisgICAgICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRNYXRjaGlu
ZyhbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBrZXlJRCkgewogICAgICAg
ICAgICAgICAgIHJldHVybiBrZXlJRC5nZXQoKSA9PSBzZXNzaW9uS2V5LmdldCgpOwogICAgICAg
ICAgICAgfSkgIT0gbm90Rm91bmQ7CiAgICAgICAgIH0pKQpAQCAtNjczLDcgKzY3Myw3IEBAIEtl
eXMgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjprZXlJRHMoKQog
ICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwg
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXRE
YXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNl
bnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAg
ICAgaWYgKCFpc0xpY2Vuc2VUeXBlU3VwcG9ydGVkKGxpY2Vuc2VUeXBlKSkgewogICAgICAgICBE
RUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBmYWxzZSwgbGljZW5zZVR5cGUg
XCIiLCBsaWNlbnNlVHlwZSwgIlwiIG5vdCBzdXBwb3J0ZWQiKTsKQEAgLTczNiw3ICs3MzYsNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVz
dExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZQogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgaXNFcXVh
bChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUpCitzdGF0aWMg
Ym9vbCBpc0VxdWFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0
cmluZyYgdmFsdWUpCiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IGRhdGEudHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKTsKICAgICBpZiAoIWFycmF5QnVmZmVyKQpAQCAtNzU0LDcgKzc1NCw3IEBAIHN0
YXRpYyBib29sIGlzRXF1YWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQogICAgIHJldHVybiBzdHJpbmdPckV4Y2VwdGlvbi5yZXR1cm5WYWx1ZSgpID09IHZh
bHVlOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiByZXNwb25zZURhdGEsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQor
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIHJlc3BvbnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7
CiAgICAgaWYgKCFtX2V4cGlyZWRTZXNzaW9ucy5pc0VtcHR5KCkgJiYgaXNFcXVhbChyZXNwb25z
ZURhdGEsICJhY2tub3dsZWRnZWQiX3MpKSB7CiAgICAgICAgIGF1dG8qIGNlcnRpZmljYXRlID0g
bV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKTsKQEAgLTg1Niw3ICs4NTYsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICAgICAgYXV0byBrZXlJRCA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoKmtleUlEVmVjdG9yKSk7CiAgICAgICAgICAgICBhdXRvIGZvdW5k
SW5kZXggPSBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmluZE1hdGNoaW5nKFsm
XSAoYXV0byYgcmVxdWVzdCkgewogICAgICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURz
Rm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4ga2V5SURz
LmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGlkKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYgaWQpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlkLmdl
dCgpID09IGtleUlELmdldCgpOwogICAgICAgICAgICAgICAgIH0pICE9IG5vdEZvdW5kOwogICAg
ICAgICAgICAgfSk7CkBAIC0xMTU1LDcgKzExNTUsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRh
aQogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmlj
YXRlKCkpCiAgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKLSAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8
c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OworICAg
IHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0Fn
Z3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dy
ZWdhdG9yPiB7CiAgICAgICAgIHVzaW5nIENhbGxiYWNrRnVuY3Rpb24gPSBGdW5jdGlvbjx2b2lk
KFJlcXVlc3RzRGF0YSYmKT47CiAgICAgICAgIHN0YXRpYyBSZWZQdHI8Q2FsbGJhY2tBZ2dyZWdh
dG9yPiBjcmVhdGUoQ2FsbGJhY2tGdW5jdGlvbiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTIx
MSw3ICsxMjExLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICBAdHJ5IHsKICAgICAg
ICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMp
IHsKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0Lmdl
dCgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShr
ZXlJRHMuZmlyc3QoKSk7CisgICAgICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKICAgICAgICAgICAgIGF1dG8gY29u
dGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRh
Rm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50
aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W2tleUlEID0gV1RGTW92
ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNF
cnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShlcnJv
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKaW5kZXgg
MDMzNGQ2MjNiMmE3NjA1YzliZTEyMjEzYjVhYmRiYmFjMmIwM2YxNS4uNjJiODNmYmZkNTc5NDA1
MGViYzk0MDYzNzA0OTBiYTJiM2VjMDg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lt
YWdlRGVjb2RlckFWRk9iakMuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBXZWJDb3JlRGVjb21w
cmVzc2lvblNlc3Npb247CiAKIGNsYXNzIEltYWdlRGVjb2RlckFWRk9iakMgOiBwdWJsaWMgSW1h
Z2VEZWNvZGVyIHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPElt
YWdlRGVjb2RlckFWRk9iakM+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gY3JlYXRlKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2Rl
ckFWRk9iakMoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHN1cHBvcnRzTWVk
aWFUeXBlKE1lZGlhVHlwZSk7CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29k
aW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykp
IGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXpl
KGxvbmcgbG9uZykgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xl
YXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAgLTk0LDcgKzk0LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4g
ZnJhbWVJbmZvcygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIEltYWdlRGVjb2RlckFWRk9iakMo
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBJbWFnZURlY29kZXJBVkZPYmpDKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgQVZBc3NldFRyYWNrICpmaXJzdEVuYWJs
ZWRUcmFjaygpOwogICAgIHZvaWQgcmVhZFNhbXBsZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IGE1NGRmM2RiYWRmOTA0ZjQ1NDg0Yjhj
ZTViY2E0OWZjNTU2OGZlYjkuLjM1YzZjZTY3ZTg1Zjg2YWUxNjRjMjFhNzI2MDdmYzA2NWVjYjUw
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpA
QCAtMjg5LDcgKzI4OSw3IEBAIEltYWdlRGVjb2RlckFWRk9iakNTYW1wbGUqIHRvU2FtcGxlKEl0
ZXJhdG9yIGl0ZXIpCiAKICNwcmFnbWEgbWFyayAtIEltYWdlRGVjb2RlckFWRk9iakMKIAotUmVm
UHRyPEltYWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShTaGFy
ZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpj
cmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIC8vIEFWRm91bmRhdGlvbiBtYXkgbm90
IGJlIGF2YWlsYWJsZSBhdCBydW50aW1lLgogICAgIGlmICghQVZBc3NldE1JTUVUeXBlQ2FjaGU6
OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpCkBAIC0zMDEsNyArMzAxLDcgQEAgUmVmUHRyPElt
YWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnMKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJBVkZP
YmpDKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pKTsKIH0KIAotSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFy
ZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2Rl
ckFWRk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogSW1h
Z2VEZWNvZGVyKCkKICAgICAsIG1fbWltZVR5cGUobWltZVR5cGUpCiAgICAgLCBtX3V0aShXZWJD
b3JlOjpVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpKQpAQCAtNjQxLDcgKzY0MSw3IEBAIHZvaWQg
SW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhw
ZWN0ZWRDb250ZW50U2l6ZSkKICAgICBtX2xvYWRlci5nZXQoKS5leHBlY3RlZENvbnRlbnRTaXpl
ID0gZXhwZWN0ZWRDb250ZW50U2l6ZTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpz
ZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIElt
YWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVj
ZWl2ZWRdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggMjAwZTFhOGY5YWZiYTBmY2JiYTVi
MGEzZWQ3MDRjZDM0MWI0NTBkNi4uYzlkOWIyYTk2ODViMDFlOTFhYWEwMGMwZTAwMzA3NzM4NTY5
MTQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBJbmJh
bmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0
OwogY2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7CiBjbGFzcyBQaXhlbEJ1ZmZlckNv
bmZvcm1lckNWOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2
YXRlQVZGT2JqQzsKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjsKQEAgLTQyNiw3ICs0
MjYsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbV93
YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRUaW1lOwogICAgIG11dGFibGUgaW50IG1fdGltZUNvbnRy
b2xTdGF0dXNBdENhY2hlZEN1cnJlbnRUaW1lIHsgMCB9OwogICAgIG11dGFibGUgZG91YmxlIG1f
cmVxdWVzdGVkUmF0ZUF0Q2FjaGVkQ3VycmVudFRpbWUgeyAwIH07Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9rZXlJRDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9r
ZXlJRDsKICAgICBkb3VibGUgbV9jYWNoZWRSYXRlIHsgMCB9OwogICAgIGJvb2wgbV9yZXF1ZXN0
ZWRQbGF5aW5nIHsgZmFsc2UgfTsKICAgICBkb3VibGUgbV9yZXF1ZXN0ZWRSYXRlIHsgMS4wIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBkMThhODVhNzk0ZjUyM2Y5NDkxMmUyN2YwOGI3
Y2NiZTg5M2M4ZWQwLi5iMWM2MDc5YzY0ODcwZjg4ZTM1YzgwODExYTViMThiZGExYjdmNjE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTI3OTIsNyArMjc5Miw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5j
ZShDRE1JbnN0YW5jCiAgICAgaWYgKCFtX2tleUlEIHx8ICFtX2NkbUluc3RhbmNlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1fY2RtSW5zdGFuY2UtPnNl
c3Npb25Gb3JLZXlJRHMoVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkp
OworICAgIGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktl
eUlEcyhWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkp
OwogICAgIGlmICghaW5zdGFuY2VTZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4
IDAzNDIwZjEzODM2NGZhYzIwOTFlMTA0ZDEzNmZmMzhhMWZiOWZlMjIuLmVhZDA4M2E2Y2M3ZTcz
NmI0MjE3MTBmYWMzOTJhMDdkZmY5MmJlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtNzMsNyArNzMsNyBAQCBjbGFz
cyBWaWRlb1RyYWNrUHJpdmF0ZTsKIGNsYXNzIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOwogY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFz
cyBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQ0Vycm9yQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSWQoUmVmPE1lZGlhU2FtcGxlPiYm
LCB1aW50NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CiAKICAgICAvLyBT
b3VyY2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcwotICAgIHZvaWQgYXBwZW5kKFJlZjxTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNldFBh
cnNlclN0YXRlKCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgZmlu
YWw7CkBAIC0yMjEsNyArMjIxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKICAgICBSZWZQdHI8Q0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+IG1fY2RtSW5zdGFuY2U7Ci0gICAgVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBtX2tleUlEczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiBtX2tleUlEczsKICNlbmRpZgogCiAgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFNpemU+IG1fY2FjaGVkU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggM2EyODY3YTFhYzI0M2JiOWM5M2M5
ZDZiNzBjYTU2YjAyOTQ4ZmM5Yy4uMjRhZTBlMTQwNjAxOTE0M2ZhZDRmMTUyOWU2OGVkNDliNDE2
NTNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMubW0KQEAgLTU2Myw3ICs1NjMsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFG
bwogICAgIFVOVVNFRF9QQVJBTShoYXNTZXNzaW9uU2VtYXBob3JlKTsKIH0KIAotdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkK
K3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImRh
dGEgbGVuZ3RoID0gIiwgZGF0YS0+c2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCA1ODM4ZTQ5MzdkZjg5ZjU4NjFh
Y2Q5ZDk2ZGMxMjI5NWI2YmM3NDNkLi4wZWZlZWFlZjViMmQ3MWJjNmQ2NzA0ZGQxYjk3NWFjYmFl
MTEzYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXIuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOwogY2xhc3MgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOwogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQg
bG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQo
KTsKLSAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZm
ZXImKTsKKyAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDKiBtX3BhcmVudDsKICAgICBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVl
c3Q+IG1fYXZSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGI2ZTIzN2I1ZGY1ZGRmNmE3MmQ1NDE2OTVhMDc4MjMx
ODFhY2FkYWQuLmY5MjFmM2RhMGU2OWIzMzk5NzdjOWUzZTQ5NjY3YTI4ZjVlOTVjYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0K
QEAgLTE1Niw3ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShyZXF1ZXN0KSk7IH0KICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBs
b25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgZmluYWwgeyB9Ci0gICAgdm9pZCBkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7
CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNr
RmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxv
YWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBsb2FkRmluaXNoZWQo
KTsgfQpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVy
Ojpsb2FkRmluaXNoZWQoKQogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQogCi12b2lk
IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBQbGF0Zm9ybVJlc291
cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgbV9idWZmZXIuYXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CiAgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVm
ZmVyKCptX2J1ZmZlci5nZXQoKSk7CkBAIC0yMjUsNyArMjI1LDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlc291cmNl
UmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiBEYXRh
VVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBA
IC0yMzUsNyArMjM1LDcgQEAgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNv
dXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYKIAogICAgIGlmIChhdXRv
IHJlc3VsdCA9IERhdGFVUkxEZWNvZGVyOjpkZWNvZGUocmVxdWVzdC51cmwoKSwgRGF0YVVSTERl
Y29kZXI6Ok1vZGU6OkZvcmdpdmluZ0Jhc2U2NCkpIHsKICAgICAgICAgbV9yZXNwb25zZSA9IFJl
c291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVzdWx0KTsK
LSAgICAgICAgbV9idWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShyZXN1bHQtPmRhdGEpKTsKKyAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOwogICAgIH0KIAogICAgIGNhbGxPbk1haW5UaHJlYWQo
W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKQEAgLTM4NSw3ICszODUsNyBA
QCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAgICBzdG9w
TG9hZGluZygpOwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0
b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5n
RGF0YVJlcXVlc3QqIGRhdGFSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsKICAg
ICBpZiAoIWRhdGFSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDQ2
YjA3ZmU3MTJlNzllNjEzMTdjMGQxMTZmZTZhM2YwNGFmOWZmY2IuLjk0MTliY2VhMzhkYmY4ZDY0
OTJmNjgwMWQ5YTIxNTYyMzY2YTJjNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
QEAgLTMxLDExICszMSwxMSBAQCB0eXBlZGVmIHN0cnVjdCBGVF9GYWNlUmVjXyogIEZUX0ZhY2U7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBG
b250RGVzY3JpcHRpb247CiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0aW9u
U3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiAKQEAg
LTQ2LDcgKzQ2LDcgQEAgc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEpOwogcHVibGljOgotICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFj
ZSwgU2hhcmVkQnVmZmVyJik7CisgICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9GYWNlLCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgfkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKSA9
IGRlZmF1bHQ7CiAgICAgRm9udFBsYXRmb3JtRGF0YSBmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlv
bkNvbnRleHQmKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcm
KTsKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Y2Fpcm9fZm9udF9mYWNl
X3Q+IG1fZm9udEZhY2U7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggMjAzNWM5
OWE3ZjY4YjU0ODljODU4YTNlNmQ3MDMzZDEzNWQxZjdkYi4uYjZkM2ViMzYzMTEyNDQ2MTNiMzgw
M2YyZjNkMjRkMzA4N2VhMjRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVByb3Bl
cnRpZXMoQ0ZEaWN0aW9uYXJ5UmVmCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJl
ZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90
IHBvc2l0aW9uLCBzaXplX3QgY291bnQpCiB7Ci0gICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciog
c2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGluZm8p
OworICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVm
ZmVyKj4oaW5mbyk7CiAgICAgc2l6ZV90IHNvdXJjZVNpemUgPSBzaGFyZWRCdWZmZXItPnNpemUo
KTsKICAgICBpZiAocG9zaXRpb24gPj0gc291cmNlU2l6ZSkKICAgICAgICAgcmV0dXJuIDA7CkBA
IC0yNDQsMTIgKzI0NCwxMiBAQCBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9u
KHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sCiAKIHZvaWQgc2hhcmVk
QnVmZmVyUmVsZWFzZSh2b2lkKiBpbmZvKQogewotICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVm
ZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcio+KGluZm8pOwogICAgIHNoYXJlZEJ1ZmZlci0+ZGVyZWYoKTsKIH0KICNlbmRpZgogCi1J
bWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURlY29kZXJDRzo6SW1hZ2VE
ZWNvZGVyQ0coRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRp
SGludDsKICAgICBpZiAoZGF0YS5zaXplKCkgPj0gMzIpCkBAIC01NjIsMjAgKzU2MiwyMCBAQCBQ
bGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChz
aXplX3QgaW5kZXgsIFN1YnNhbXBsaQogICAgIHJldHVybiBtYXNrZWRJbWFnZSA/IG1hc2tlZElt
YWdlIDogaW1hZ2U7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNl
dERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiB7CiAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZlZDsKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVk
QnVmZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZm
ZXIncyBrbm93bGVkZ2UuCi0gICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8g
d3JhcCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRo
YXQgSW1hZ2VJTyBpcwotICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIu
CisgICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJ3Mga25vd2xlZGdlLgorICAgIC8vIFdlIHVzZSBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQg
dGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCisgICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQg
dGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEo
bV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0
YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UKLSAgICAvLyBDcmVhdGUgYSBDR0Rh
dGFQcm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCisgICAgLy8gQ3JlYXRlIGEgQ0dE
YXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KICAgICBhdXRv
IGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIGNvbnRpZ3VvdXNE
YXRhLmdldCgpLnJlZigpOwotICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNh
bGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBTaGFyZWRC
dWZmZXIKKyAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRo
ZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcgogICAgIC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRl
IHBvaW50ZXIgYW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAgICAgLy8g
aXMgYSByZXF1aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgog
ICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAw
LCAwLCAwLCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVh
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5oCmluZGV4IDk3NDA3MzZhMjFhYzk5OGFiMDVmMWM5YjRmNWIxNjc1ZTQ0ZDJj
OTEuLmEwYWMxYzJmYmVlNTI3ZTVhYjExMTQ1NTgxMmJkYjczNjNhMDU1NDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApA
QCAtMzIsOSArMzIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbWFnZURlY29kZXJD
RyBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIEltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBJbWFnZURlY29kZXJD
RyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pOwogCi0gICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJDRz4gY3JlYXRl
KFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIHN0YXRpYyBS
ZWY8SW1hZ2VEZWNvZGVyQ0c+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBB
bHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBJbWFnZURlY29kZXJDRyhkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pKTsKICAgICB9CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3Jt
SW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
ID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERl
Y29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2
b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwor
ICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVy
Q2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCmlu
ZGV4IDg0NGFjNDRmM2FkZGZhOWYzOTU3ODZiOTRiZGQ1MDk0MWU3Mjc1NGIuLjg1NDIxZTNkZTcw
OWNlMTU5YzQ5NGI0MGZiOGQxYWQyMzU5M2MzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29j
b2EubW0KQEAgLTU3LDcgKzU3LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlz
RXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIENG
RXF1YWwobV9mb250LmdldCgpLCBvdGhlci5tX2ZvbnQuZ2V0KCkpOwogfQogCi1SZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRh
YmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0
YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAogewogICAgIHJldHVybiBu
dWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKaW5kZXggZjc0N2Q4MGZiNjFkMzBm
YzUwMjJlNjgyZDYzNTYxMzNkM2NhNjk3YS4uYzhhODA2MTIyMDUzZjY0OGFkZGIwMmFjMzg5Y2U3
MTQzNjhkYmJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCkBAIC04MCw3ICs4MCw3IEBA
IHZvaWQgU291cmNlQnVmZmVyUGFyc2VyOjpzZXRNaW5pbXVtQXVkaW9TYW1wbGVEdXJhdGlvbihm
bG9hdCkKIHsKIH0KIAotU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50KFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdt
ZW50KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fc2VnbWVu
dChXVEZNb3ZlKGJ1ZmZlcikpCiB7CiB9CkBAIC0xMDEsNyArMTAxLDcgQEAgc2l6ZV90IFNvdXJj
ZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4g
Y2xhbXBUbzxzaXplX3Q+KE1UUGx1Z2luQnl0ZVNvdXJjZUdldExlbmd0aChieXRlU291cmNlLmdl
dCgpKSk7CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgUmVmPFNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikKKyAgICAgICAgW10oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBidWZmZXItPnNpemUo
KTsKICAgICAgICAgfQpAQCAtMTI1LDcgKzEyNSw3IEBAIGF1dG8gU291cmNlQnVmZmVyUGFyc2Vy
OjpTZWdtZW50OjpyZWFkKHNpemVfdCBwb3NpdGlvbiwgc2l6ZV90IHNpemVUb1JlYWQsIHVpbnQ4
CiAgICAgICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxSZWFkRXJyb3I+IHsgUmVhZEVycm9yOjpG
YXRhbEVycm9yIH07CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAgICAgWyZdKGNvbnN0IFJlZjxT
aGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlYWRSZXN1bHQKKyAgICAgICAgWyZdKGNvbnN0IFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZWFkUmVzdWx0CiAgICAgICAg
IHsKICAgICAgICAgICAgIGJ1ZmZlci0+Y29weVRvKGRlc3RpbmF0aW9uLCBwb3NpdGlvbiwgc2l6
ZVRvUmVhZCk7CiAgICAgICAgICAgICByZXR1cm4gc2l6ZVRvUmVhZDsKQEAgLTEzMyw3ICsxMzMs
NyBAQCBhdXRvIFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6cmVhZChzaXplX3QgcG9zaXRp
b24sIHNpemVfdCBzaXplVG9SZWFkLCB1aW50OAogICAgICk7CiB9CiAKLVJlZjxTaGFyZWRCdWZm
ZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1ZmZlcigpCitSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50Ojp0YWtl
U2hhcmVkQnVmZmVyKCkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3NlZ21lbnQsCiAj
aWYgSEFWRShNVF9QTFVHSU5fRk9STUFUX1JFQURFUikKQEAgLTE0MiwyOCArMTQyLDI4IEBAIFJl
ZjxTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1
ZmZlcigpCiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yKHNpemUoKSk7CiAgICAg
ICAgICAgICBhdXRvIHJlYWRSZXN1bHQgPSByZWFkKDAsIHZlY3Rvci5zaXplKCksIHZlY3Rvci5k
YXRhKCkpOwogICAgICAgICAgICAgaWYgKCFyZWFkUmVzdWx0Lmhhc192YWx1ZSgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgICAg
IHJldHVybiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgICAgIHZl
Y3Rvci5zaHJpbmsocmVhZFJlc3VsdC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpOworICAgICAgICAgICAgcmV0dXJuIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpOwogICAgICAgICB9
LAogI2VuZGlmCi0gICAgICAgIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorICAgICAg
ICBbJl0oUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKGJ1ZmZlciwgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShidWZmZXIsIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKTsKICAgICAgICAgfQogICAgICk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6Z2V0U2hhcmVkQnVm
ZmVyKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQ
YXJzZXI6OlNlZ21lbnQ6OmdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdU
Rjo6c3dpdGNoT24obV9zZWdtZW50LAogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIp
Ci0gICAgICAgIFsmXShjb25zdCBSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiYpIC0+
IFJlZlB0cjxTaGFyZWRCdWZmZXI+CisgICAgICAgIFsmXShjb25zdCBSZXRhaW5QdHI8TVRQbHVn
aW5CeXRlU291cmNlUmVmPiYpIC0+IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPgogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfSwKICNlbmRpZgot
ICAgICAgICBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4KKyAgICAgICAgWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSAtPiBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5wdHIoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuaAppbmRleCA1MjBiNTIwN2ZjMjcxZDc5ODE1MzNmYjE0ZDIzMTU1OTRhODg4MzY1Li43
Mjk3YTc5MTRhNzlhZGY2NDJkYzZiMTZiMzZlNjBmOWNkMDI5ZjBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuaApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENv
bnRlbnRUeXBlOwogY2xhc3MgTWVkaWFTYW1wbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTb3VyY2VC
dWZmZXJQYXJzZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlQnVmZmVyUGFy
c2VyPiB7CiBwdWJsaWM6CkBAIC02OSwxMSArNjksMTEgQEAgcHVibGljOgogI2lmIEhBVkUoTVRf
UExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAgIFNlZ21lbnQoUmV0YWluUHRyPE1UUGx1Z2lu
Qnl0ZVNvdXJjZVJlZj4mJik7CiAjZW5kaWYKLSAgICAgICAgU2VnbWVudChSZWY8U2hhcmVkQnVm
ZmVyPiYmKTsKKyAgICAgICAgU2VnbWVudChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7
CiAgICAgICAgIFNlZ21lbnQoU2VnbWVudCYmKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IHRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICAgICAgLy8gV2lsbCByZXR1cm4gbnVs
bHB0ciBpZiBTZWdtZW50J3MgYmFja2VuZCBpc24ndCBhIFNoYXJlZEJ1ZmZlci4KLSAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0U2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgICAgIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlU2hhcmVkQnVmZmVyKCk7CisgICAgICAgIC8v
IFdpbGwgcmV0dXJuIG51bGxwdHIgaWYgU2VnbWVudCdzIGJhY2tlbmQgaXNuJ3QgYSBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyLgorICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
Z2V0U2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsK
IApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAjaWYgSEFWRShNVF9QTFVHSU5fRk9STUFUX1JF
QURFUikKICAgICAgICAgICAgIFJldGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VSZWY+LAogI2Vu
ZGlmCi0gICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPgorICAgICAgICAgICAgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+CiAgICAgICAgID4gbV9zZWdtZW50OwogICAgIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggNjFkYmQ2MmM5ZTNlOWYzMTU3OTg1MDVl
YjUwNDBmOTlmZjhjNWJmMS4uOWJjMTg5NDE5ODYzMGJhZDhkN2NiZDBiM2E1YjI4ZTQ2ZTllZmUy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTM4OCw3ICszODgsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgYWR2YW5jZVRvTmV4dFNlZ21lbnQoKTsKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IGN1cnJlbnRTZWdtZW50LmdldFNoYXJlZEJ1ZmZl
cigpOworICAgICAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1
ZmZlciA9IGN1cnJlbnRTZWdtZW50LmdldFNoYXJlZEJ1ZmZlcigpOwogICAgICAgICAgICAgQ01C
bG9ja0J1ZmZlclJlZiByYXdCbG9ja0J1ZmZlciA9IG51bGxwdHI7CiAgICAgICAgICAgICB1aW50
NjRfdCBsYXN0UmVhZCA9IDA7CiAgICAgICAgICAgICBzaXplX3QgZGVzdGluYXRpb25PZmZzZXQg
PSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKQEAgLTQwOSw3ICs0MDksNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgZGVzdGluYXRpb25PZmZzZXQgPSAwOwogICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICBBU1NFUlQoc2hhcmVkQnVmZmVyLT5oYXNPbmVTZWdtZW50KCks
ICJDYW4gb25seSBkZWFsIHdpdGggc2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgYSBzaW5nbGUgRGF0
YVNlZ21lbnQiKTsKLSAgICAgICAgICAgICAgICAvLyBBIFNoYXJlZEJ1ZmZlciBkb2Vzbid0IGhh
dmUgdGhyZWFkLXNhZmUgcmVmY291bnRpbmcsIGFzIHN1Y2ggd2UgbXVzdCBrZWVwIGEgcmVmZXJl
bmNlIHRvIHRoZSBEYXRhU2VnbWVudCBpbnN0ZWFkLgorICAgICAgICAgICAgICAgIC8vIEEgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciBkb2Vzbid0IGhhdmUgdGhyZWFkLXNhZmUgcmVmY291bnRpbmcs
IGFzIHN1Y2ggd2UgbXVzdCBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBEYXRhU2VnbWVudCBpbnN0
ZWFkLgogICAgICAgICAgICAgICAgIC8vIFRPRE86IGNvdWxkIHdlIG9ubHkgY3JlYXRlIGEgbmV3
IENNQmxvY2tCdWZmZXIgaWYgdGhlIGJhY2tlbmQgbWVtb3J5IGNoYW5nZWQgc2luY2UgdGhlIHBy
ZXZpb3VzIG9uZT8KICAgICAgICAgICAgICAgICBhdXRvIGZpcnN0U2VnbWVudCA9IHNoYXJlZEJ1
ZmZlci0+YmVnaW4oKS0+c2VnbWVudDsKICAgICAgICAgICAgICAgICBzaXplX3QgY2FuUmVhZCA9
IHN0ZDo6bWluPHNpemVfdD4obnVtVG9SZWFkLCBmaXJzdFNlZ21lbnQtPnNpemUoKSAtIG1fcG9z
aXRpb25XaXRoaW5TZWdtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRl
eHQuY3BwCmluZGV4IGNjNTk0ZjM4NGU1NjM1ZGVkYThmNDIzZjY4NGRhNWI1NTQ5NzA2NzEuLjU5
ZDIxNjY3OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3Jl
VGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
Rm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWlu
UHRyPENGVHlwZVJlZj4gRm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygp
IGNvbnN0CiAgICAgcmV0dXJuIG9iamVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQog
Ci1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5
cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQ
bGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAg
aWYgKFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlUYWJsZShj
dEZvbnQoKSwgdGFibGUsIGtDVEZvbnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQotICAgICAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgICAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4g
cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggZTgwNTA5ZWNjYTA1ZDJjYzhlZDEwNjYwNzA0MWY1
Y2NjYzNlMzc5NC4uNjM4ZTY4Mzk3YTJiNjY5NmIyZjFlZGUyNGVhOGZkYjkwNjI2Y2VkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTcyOSw3ICs3
MjksNyBAQCBEaWRDaGFuZ2VJdGVtQnVmZmVyIEl0ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1ZmZl
cklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVzKQogdm9pZCBJdGVtQnVmZmVyOjphcHBlbmQo
Y29uc3QgRGlzcGxheUxpc3RJdGVtJiB0ZW1wb3JhcnlJdGVtKQogewogICAgIGF1dG8gcmVxdWly
ZWRTaXplRm9ySXRlbSA9IG1fd3JpdGluZ0NsaWVudC0+cmVxdWlyZWRTaXplRm9ySXRlbSh0ZW1w
b3JhcnlJdGVtKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvdXRPZkxpbmVJdGVtOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdXRPZkxpbmVJdGVtOwogICAgIGlmICgh
cmVxdWlyZWRTaXplRm9ySXRlbSkgewogICAgICAgICBvdXRPZkxpbmVJdGVtID0gbV93cml0aW5n
Q2xpZW50LT5lbmNvZGVJdGVtT3V0T2ZMaW5lKHRlbXBvcmFyeUl0ZW0pOwogICAgICAgICBpZiAo
IW91dE9mTGluZUl0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgK
aW5kZXggYzg3MzE5ODJlZjgzOTMxYmJhZTMxYjc4NjUwYWMwZGEyMGEwNWZjNS4uYjMxYmM1ZmQ0
ZTkyMTRiMTVhMzc2MWZiZTk4ZDYwY2ViNDdhOThmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuaApAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QK
KyAgICB2aXJ0dWFsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0
T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xNjgsNyArMTY4LDcgQEAgcHVibGljOgogICAgIC8vIHdp
dGggcGFkZGluZyBiZXR3ZWVuIGVhY2ggaXRlbSB0byBlbnN1cmUgdGhhdCBhbGwgaXRlbXMgYXJl
IGFsaWduZWQgdG8gOCBieXRlcy4KICAgICAvLwogICAgIC8vIElmIGEgd3JpdGluZyBjbGllbnQg
aXMgcHJlc2VudCBhbmQgcmVxdWlyZXMgY3VzdG9tIGVuY29kaW5nIGZvciB0aGUgZ2l2ZW4gaXRl
bSB0eXBlIFQsIHRoZQotICAgIC8vIGl0ZW0gYnVmZmVyIHdpbGwgYXNrIHRoZSBjbGllbnQgZm9y
IGFuIG9wYXF1ZSBTaGFyZWRCdWZmZXIgY29udGFpbmluZyBlbmNvZGVkIGRhdGEgZm9yIHRoZQor
ICAgIC8vIGl0ZW0gYnVmZmVyIHdpbGwgYXNrIHRoZSBjbGllbnQgZm9yIGFuIG9wYXF1ZSBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgZW5jb2RlZCBkYXRhIGZvciB0aGUKICAgICAv
LyBpdGVtLiBUaGlzIGVuY29kZWQgZGF0YSBpcyB0aGVuIGFwcGVuZGVkIHRvIHRoZSBpdGVtIGJ1
ZmZlciwgd2l0aCBwYWRkaW5nIHRvIGVuc3VyZSB0aGF0CiAgICAgLy8gdGhlIHN0YXJ0IGFuZCBl
bmQgb2YgdGhpcyBkYXRhIGFyZSBhbGlnbmVkIHRvIDggYnl0ZXMsIGlmIG5lY2Vzc2FyeS4gV2hl
biBjb25zdW1pbmcgZW5jb2RlZAogICAgIC8vIGl0ZW0gZGF0YSwgYSBjb3JyZXNwb25kaW5nIEl0
ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IHdpbGwgYmUgcmVxdWlyZWQgdG8gY29udmVydCB0aGlzIGVu
Y29kZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwCmluZGV4IGNjZGFkYjBkYTExYjU5ODVhMzQzODYxOWRiMGRmMjMzMDFhNzI1YTMuLjJiNDQz
ZmJiZWQyYzFmZGU0OGJjZGU5Y2JlNDA5NTM0OTdmZGU5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFG
cmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMzgsMTIgKzM4LDEyIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHZvaWQgcmVsZWFzZUN1c3RvbUZvbnREYXRh
KHZvaWQqIGRhdGEpCiB7Ci0gICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSktPmRl
cmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5k
ZXJlZigpOwogfQogCiBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tleV90IGZyZWVUeXBlRmFjZUtl
eTsKIAotRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9G
YWNlIGZyZWVUeXBlRmFjZSwgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitGb250Q3VzdG9tUGxhdGZv
cm1EYXRhOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhKEZUX0ZhY2UgZnJlZVR5cGVGYWNlLCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgOiBtX2ZvbnRGYWNlKGFkb3B0UmVmKGNh
aXJvX2Z0X2ZvbnRfZmFjZV9jcmVhdGVfZm9yX2Z0X2ZhY2UoZnJlZVR5cGVGYWNlLCBGVF9MT0FE
X0RFRkFVTFQpKSkKIHsKICAgICBidWZmZXIucmVmKCk7IC8vIFRoaXMgaXMgYmFsYW5jZWQgYnkg
dGhlIGJ1ZmZlci0+ZGVyZWYoKSBpbiByZWxlYXNlQ3VzdG9tRm9udERhdGEuCkBAIC0xMjksNyAr
MTI5LDcgQEAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShGVF9MaWJyYXJ5
JiBsaWJyYXJ5KQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJikKIHsKICAgICBzdGF0aWMgRlRfTGlicmFyeSBs
aWJyYXJ5OwogICAgIGlmICghbGlicmFyeSAmJiAhaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShs
aWJyYXJ5KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5k
ZXggZmVkODU0MGY0YWViYzg0YzY5YjI5MDgwNjk3YzEyNDYwMWQ1YjYyNi4uNjg5Y2I2NzllNjMy
ZTJmNWEyYTJmZTA2NDU4MTFkODg2NmE5MGM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgYm9vbCBGb250UGxhdGZvcm1E
YXRhOjpoYXNDb21wYXRpYmxlQ2hhcm1hcCgpIGNvbnN0CiAgICAgICAgICYmIEZUX1NlbGVjdF9D
aGFybWFwKGZyZWVUeXBlRmFjZSwgZnRfZW5jb2RpbmdfYXBwbGVfcm9tYW4pKTsKIH0KIAotUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFi
bGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZv
cm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIENhaXJv
RnRGYWNlTG9ja2VyIGNhaXJvRnRGYWNlTG9ja2VyKG1fc2NhbGVkRm9udC5nZXQoKSk7CiAgICAg
RlRfRmFjZSBmcmVlVHlwZUZhY2UgPSBjYWlyb0Z0RmFjZUxvY2tlci5mdEZhY2UoKTsKQEAgLTI2
OCw3ICsyNjgsNyBAQCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgYwogICAgIGlmIChlcnJvciB8fCB0
YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJsZVNpemUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEp
KTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAK
ICNpZiBVU0UoSEFSRkJVWlopICYmICFFTkFCTEUoT1BFTlRZUEVfTUFUSCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21t
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckNvbW1vbi5jcHAKaW5kZXggMTQ3NDgyOGZkZTY2OTI0ZDQyYmFhYzMzMzRmZjhkNWMzYjRh
ZDc2NC4uMDE2MDVmYzkxNDk3ZTQ2MmJhMDc3MzA0NzhlODRhODU1MWU2NzIzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNv
bW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTQyMiw5ICs0MjIsOSBAQCBWZWN0b3I8dWludDhfdD4g
R3N0TWFwcGVkQnVmZmVyOjpjcmVhdGVWZWN0b3IoKSBjb25zdAogICAgIHJldHVybiB7IGRhdGEo
KSwgc2l6ZSgpIH07CiB9CiAKLVJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRP
d25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxTaGFyZWRCdWZmZXI+IEdzdE1h
cHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CiAKIGJvb2wgaXNHU3RyZWFtZXJQbHVnaW5BdmFpbGFibGUo
Y29uc3QgY2hhciogbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaAppbmRleCBkMDE0Y2M2YTVk
YzdiMTdlMzk5NjAwNmJmNmVhNjhhOGJjOTk0YzQyLi5iYmI4YzEzOTZmMDAzZDY0MjY4ODk3OWE2
ODRjNjYxYjFjYjg3MWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCkBAIC0zMiw3ICszMiw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBpbmxpbmUgYm9vbCB3ZWJr
aXRHc3RDaGVja1ZlcnNpb24oZ3VpbnQgbWFqb3IsIGd1aW50IG1pbm9yLCBndWludCBtaWNybykK
IHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHVubWFwRWFybHkoKTsKICAg
ICB9CiAKLSAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVy
KCk7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7CiAKIHByaXZh
dGU6CiAgICAgR3N0TWFwcGVkT3duZWRCdWZmZXIoR1JlZlB0cjxHc3RCdWZmZXI+JiYgYnVmZmVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRleCAyOWIzYTUwMWQ4
ZTlhOTYyYTBjM2QwNGZiMjYxMjZlYTQzYTM1NTI2Li5kZmJjNTgwZmI4ZTliMzA5MzZjY2EwOGJi
ODhiNDljMmJiNjUzYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNw
cApAQCAtODEsMTIgKzgxLDEyIEBAIEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZSogdG9TYW1w
bGUoSXRlcmF0b3IgaXRlcikKICAgICByZXR1cm4gKEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBs
ZSopaXRlci0+c2Vjb25kLmdldCgpOwogfQogCi1SZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVy
PiBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURl
Y29kZXJHU3RyZWFtZXI+IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJHU3RyZWFt
ZXIoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikpOwogfQogCi1JbWFnZURlY29kZXJHU3RyZWFtZXI6OkltYWdlRGVjb2RlckdTdHJlYW1lcihT
aGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAg
ICA6IG1fbWltZVR5cGUobWltZVR5cGUpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9u
Y2VGbGFnOwpAQCAtMTk5LDcgKzE5OSw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRh
KFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCkKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpz
ZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wpCiB7CiAgICAgcHVzaEVu
Y29kZWREYXRhKGRhdGEpOwogfQpAQCAtNDI2LDcgKzQyNiw3IEBAIEVuY29kZWREYXRhU3RhdHVz
IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjplbmNvZGVkRGF0YVN0YXR1cygp
IGNvbnN0CiAgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpVbmtub3duOwogfQogCi12b2lk
IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQordm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBjb250aWd1
b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV9lb3MgPSBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAppbmRleCA2NmYzMzcyODQ2YTRkZjg3
NGY0MjBkYjY1NGU2ODljOWU0M2IwYzUyLi5kM2VmNmE0NWNkN2RiZGZjMzEyMGVhMjNmOGRlYjNj
NTk5NzFhZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCkBAIC00MSw4
ICs0MSw4IEBAIGNsYXNzIEltYWdlRGVjb2RlckdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBJbWFn
ZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEltYWdlRGVjb2RlckdTdHJlYW1lcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OwotICAgIEltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAg
IHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBjcmVhdGUoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlckdTdHJl
YW1lcigpID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzTWVkaWFUeXBlKE1l
ZGlhVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID09IE1lZGlhVHlwZTo6VmlkZW87IH0KQEAgLTcy
LDcgKzcyLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNp
emUobG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNB
bGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2VvczsgfQogICAgIHZvaWQg
Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAgLTEyMiw3ICsxMjIsNyBA
QCBwcml2YXRlOgogICAgIH07CiAKICAgICB2b2lkIGhhbmRsZVNhbXBsZShHUmVmUHRyPEdzdFNh
bXBsZT4mJik7Ci0gICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7
CisgICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
OwogCiAgICAgY29uc3QgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKiBzYW1wbGVBdEluZGV4
KHNpemVfdCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1l
ci5jcHAKaW5kZXggNWQ4NmZiMWFmNDg3YzAyODllMDAxMjU1OTY1YzMxZGNkYTk3MzQyNi4uOTMw
MTkwOTk0NWI0YTIzZDY2NzgyZjM1MGI1NmU0NDc5ZjgwMjZmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToK
IAogICAgIC8vIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCB2aXJ0dWFsIG1ldGhvZHMuCiAg
ICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRpbnVlUG9s
aWN5Q2hlY2spPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAg
IHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC0xMDkzLDcgKzEw
OTMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFNo
b3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Olllcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VT
dHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGll
bnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
UHJveHlDbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmgKaW5kZXggNjkyYTk5NmQxOWMyNGVmZDlhNDg1NTIz
NzNhNTY3OWI1MmUxZWYxYy4uMzQ5YmZkY2FhZDZjN2Q3ZjhkNWFkYTBhMTcyMTlmZDllNzA2MjZm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9DRE1Qcm94eUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmgKQEAgLTYyLDExICs2MiwxMSBA
QCBwdWJsaWM6CiAgICAgQ0RNUHJveHlDbGVhcktleSgpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFs
IH5DRE1Qcm94eUNsZWFyS2V5KCk7CiAKLSAgICAvLyBGSVhNRTogVGhlcmUncyBhIGxhY2sgb2Yg
Y29uc2lzdGVuY3kgYmV0d2VlbiBTaGFyZWRCdWZmZXJzLAorICAgIC8vIEZJWE1FOiBUaGVyZSdz
IGEgbGFjayBvZiBjb25zaXN0ZW5jeSBiZXR3ZWVuIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJzLAog
ICAgIC8vIFZlY3RvcjxjaGFyPidzIGFuZCB7dWludDhfdCosc2l6ZV90fSBpZGlvbXMgZm9yIHJl
cHJlc2VudGluZyBhIGNodW5rIG9mCi0gICAgLy8gYnl0ZXMuIEZpeCB0aGF0IHNvbWVob3cuIE5v
dGUgU2hhcmVkQnVmZmVycyBhcmUgZGFuZ2Vyb3VzIHNpbmNlCisgICAgLy8gYnl0ZXMuIEZpeCB0
aGF0IHNvbWVob3cuIE5vdGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcnMgYXJlIGRhbmdlcm91cyBz
aW5jZQogICAgIC8vIHRoZXkncmUgbm90IHRocmVhZC1zYWZlIGFuZCB0aGlzIGNsYXNzIG11c3Qg
bWFpbnRhaW4KLSAgICAvLyB0aHJlYWQtc2FmZXR5LCBidXQgbWF5YmUgU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudCBjb3VsZCBiZQorICAgIC8vIHRocmVhZC1zYWZldHksIGJ1dCBtYXliZSBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCBjb3VsZCBiZQogICAgIC8vIG1hZGUgdG8g
d29yaywgaG93ZXZlciB0aGF0IGhhcyB6ZXJvIGhlbHBlcnMgZm9yIGRyb3BwaW5nIGludG8KICAg
ICAvLyBpdGVyYXRvci1hd2FyZSAvIGNvbXBhcmF0b3ItYXdhcmUgY29udGFpbmVycy4uLgogICAg
IHN0cnVjdCBjZW5jRGVjcnlwdENvbnRleHQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKaW5k
ZXggMmVmYTA0MzYwZTg4NDgzODA2MTQ0YzNkNzFkZTYzYWQ3YjQyYjU2MS4uYzM4OTE2ZTdkMDU5
ZTg4OWI1Yzg4ZWViMDllMGY0Y2ZjMDNjMWRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3Bw
CkBAIC0yMjAsNyArMjIwLDcgQEAgYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNTZXNz
aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZVRodW5k
ZXI6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25z
dCBTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAorYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewogICAgIC8vIFZhbGlkYXRl
IHRoZSBpbml0RGF0YSBidWZmZXIgYXMgYW4gSlNPTiBvYmplY3QgaW4ga2V5aWRzIGNhc2UuCiAg
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgImtleWlk
cyIpICYmIENETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KGluaXREYXRhKSkKQEAgLTIzNyw3
ICsyMzcsNyBAQCBib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgUwogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZVRodW5kZXI6OnNhbml0aXplUmVzcG9u
c2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlVGh1bmRlcjo6c2FuaXRpemVSZXNwb25zZShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICByZXR1cm4gcmVz
cG9uc2UuY29weSgpOwogfQpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VUaHVu
ZGVyOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhCiAgICAgY2FsbGJhY2soU3VjY2VlZGVkKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVRodW5k
ZXI6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUs
ICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjpz
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZp
Y2F0ZSwgIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIE9wZW5DRE1FcnJvciBl
cnJvciA9IG9wZW5jZG1fc3lzdGVtX3NldF9zZXJ2ZXJfY2VydGlmaWNhdGUobV90aHVuZGVyU3lz
dGVtLmdldCgpLCBjb25zdF9jYXN0PHVpbnQ4X3QqPihjZXJ0aWZpY2F0ZS0+ZGF0YSgpKSwKICAg
ICAgICAgY2VydGlmaWNhdGUtPnNpemUoKSk7CkBAIC0zMjYsNyArMzI2LDcgQEAgUmVmUHRyPENE
TUluc3RhbmNlU2Vzc2lvbj4gQ0RNSW5zdGFuY2VUaHVuZGVyOjpjcmVhdGVTZXNzaW9uKCkKIGNs
YXNzIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSB7CiAKIHB1YmxpYzoKLSAgICBQYXJzZWRSZXNwb25z
ZU1lc3NhZ2UoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAgICBQYXJzZWRS
ZXNwb25zZU1lc3NhZ2UoY29uc3QgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCiAgICAgewogICAgICAgICBpZiAoIWJ1ZmZlciB8fCAhYnVmZmVyLT5zaXplKCkpCiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0zNTQsOCArMzU0LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBp
c1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9pc1ZhbGlkOyB9CiAgICAgYm9vbCBoYXNQYXlsb2Fk
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9wYXlsb2FkKTsgfQotICAgIGNv
bnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QmIHsgQVNTRVJUKG1fcGF5bG9h
ZCk7IHJldHVybiBtX3BheWxvYWQudmFsdWUoKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+JiBw
YXlsb2FkKCkgJiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7
IH0KKyAgICBjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25z
dCYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CisgICAg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgJiB7IEFTU0VSVChtX3BheWxv
YWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KICAgICBib29sIGhhc1R5cGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGUuaGFzX3ZhbHVlKCk7IH0KICAgICBXZWJDb3JlOjpNZWRpYUtleU1l
c3NhZ2VUeXBlIHR5cGUoKSBjb25zdCB7IEFTU0VSVChtX3R5cGUpOyByZXR1cm4gbV90eXBlLnZh
bHVlKCk7IH0KICAgICBXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlIHR5cGVPcihXZWJDb3Jl
OjpNZWRpYUtleU1lc3NhZ2VUeXBlIGFsdGVybmF0ZSkgY29uc3QgeyByZXR1cm4gbV90eXBlID8g
bV90eXBlLnZhbHVlKCkgOiBhbHRlcm5hdGU7IH0KQEAgLTM2NCwxMSArMzY0LDExIEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBib29sIG1faXNWYWxpZCB7IGZhbHNlIH07Ci0gICAgc3RkOjpv
cHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gbV9wYXlsb2FkOworICAgIHN0ZDo6b3B0aW9uYWw8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX3BheWxvYWQ7CiAgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlPiBtX3R5cGU7CiB9OwogCi12b2lkIENETUlu
c3RhbmNlU2Vzc2lvblRodW5kZXI6OmNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpj
aGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCiB7CiAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVz
c2FnZShidWZmZXIpOwogICAgIGlmICghcGFyc2VkUmVzcG9uc2VNZXNzYWdlKSB7CkBAIC00NzUs
NyArNDc1LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjprZXlzVXBkYXRlRG9u
ZUNhbGxiYWNrKCkKICAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAK
LXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVy
cm9yQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsK
ICAgICBHU1RfRVJST1IoIkNETSBlcnJvciIpOwogICAgIEdTVF9NRU1EVU1QKCJlcnJvciBkdW1w
IiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwpAQCAtNDg4LDcgKzQ4OCw3IEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVh
cigpOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGFTaGFyZWRCdWZmZXIsCit2b2lkIENETUluc3Rh
bmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhU2hhcmVkQnVmZmVyLAogICAgIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxi
YWNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC01MDYsNyArNTA2LDcgQEAg
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSBsaWNlbnNlVHlwZSwgY29uc3QgQXQKICAgICAgICAgbV9pbml0RGF0YS5wYXlsb2FkKCktPmRh
dGEoKSwgbV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSwgbnVsbHB0ciwgMCwgJm1fdGh1bmRl
clNlc3Npb25DYWxsYmFja3MsIHRoaXMsICZzZXNzaW9uKTsKICAgICBpZiAoIXNlc3Npb24pIHsK
ICAgICAgICAgR1NUX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIHNlc3Npb24iKTsKLSAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKKyAg
ICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0
YS5wYXlsb2FkKCk7CiAgICAgICAgIGNhbGxiYWNrKGluaXREYXRhLnJlbGVhc2VOb25OdWxsKCks
IHsgfSwgZmFsc2UsIEZhaWxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01MTUsNyAr
NTE1LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXQKIAogICAgIGF1dG8gZ2VuZXJhdGVDaGFs
bGVuZ2UgPSBbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKKyAgICAgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CiAg
ICAgICAgIGlmIChtX3Nlc3Npb25JRC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIEdTVF9FUlJP
UigiY291bGQgbm90IGNyZWF0ZSBzZXNzaW9uIGlkIik7CiAgICAgICAgICAgICBjYWxsYmFjayhp
bml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCB7IH0sIGZhbHNlLCBGYWlsZWQpOwpAQCAtNTQ1LDEz
ICs1NDUsMTMgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpzZXNzaW9uRmFpbHVy
ZSgpCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQogCi12b2lkIENE
TUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNl
VXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRl
cjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklE
ID09IG1fc2Vzc2lvbklEKTsKIAogICAgIEdTVF9UUkFDRSgiVXBkYXRpbmcgc2Vzc2lvbiAlcyIs
IHNlc3Npb25JRC51dGY4KCkuZGF0YSgpKTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFj
a3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nl
c3MsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKKyAg
ICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiByZXNwb25zZU1lc3NhZ2UpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgICAgICBpZiAoc3VjY2VzcykgewogICAgICAgICAgICAgaWYgKCFyZXNwb25z
ZU1lc3NhZ2UpCkBAIC01NjIsNyArNTYyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVu
ZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHkKICAg
ICAgICAgICAgICAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdl
KHJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNl
TWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQ
YXlsb2FkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2Fn
ZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CisgICAgICAgICAg
ICAgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShw
YXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NU
X0RFQlVHKCJnb3QgbWVzc2FnZSBvZiBzaXplICV6dSIsIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1QKCJtZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBt
ZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsCkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5n
JiBzZXNzaW9uSUQKIHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09
IG1fc2Vzc2lvbklEKTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0
aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25D
aGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25z
ZU1lc3NhZ2UpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAg
ICAgICBpZiAoc3VjY2VzcykgewogICAgICAgICAgICAgaWYgKCFyZXNwb25zZU1lc3NhZ2UpCkBA
IC01OTcsNyArNTk3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpsb2FkU2Vz
c2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQKICAgICAgICAgICAgICAg
ICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKHJlc3BvbnNlTWVz
c2FnZSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNlTWVzc2FnZSk7CiAg
ICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUo
cGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CisgICAgICAgICAgICAgICAgICAgIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25z
ZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJnb3Qg
bWVzc2FnZSBvZiBzaXplICV6dSIsIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIEdTVF9NRU1EVU1QKCJtZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXpl
KCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVs
bG9wdCwgc3RkOjptYWtlX3BhaXIocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnR5cGVPcihNZWRpYUtl
eU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVzdCksCkBAIC02NDAsNyArNjQwLDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcm
IHNlc3Npb25JRCwgTGljZW4KIHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgbV9zZXNz
aW9uSUQgPT0gc2Vzc2lvbklEKTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBw
ZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25DaGFu
Z2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
Ym9vbCBzdWNjZXNzLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIG11
dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoc3Vj
Y2VzcykgewogICAgICAgICAgICAgaWYgKCFidWZmZXIpCkBAIC02NDksNyArNjQ5LDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJp
bmcmIHNlc3Npb25JRCwgTGljZW4KICAgICAgICAgICAgICAgICBQYXJzZWRSZXNwb25zZU1lc3Nh
Z2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgQVNTRVJU
KHBhcnNlZFJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3Bv
bnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQo
KSk7CisgICAgICAgICAgICAgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNz
YWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAg
ICAgICAgICAgICAgR1NUX0RFQlVHKCJzZXNzaW9uICVzIHJlbW92ZWQsIG1lc3NhZ2UgbGVuZ3Ro
ICV6dSIsIG1fc2Vzc2lvbklELnV0ZjgoKS5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKG1fa2V5U3RvcmUuYWxsS2V5c0FzKE1lZGlhS2V5U3Rh
dHVzOjpSZWxlYXNlZCksIFdURk1vdmUobWVzc2FnZSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVk
KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaAppbmRleCBj
ZGQ4ZGEyMTEyM2MxNzkxYWUyZmI2NDM5ZmYyZDZmYTBkMmViMjFjLi4xMDIwZTE1MzIyNzFiNTM1
MWUxMDZkZGU4ZjIxZWE1NDA1YTljMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaApAQCAtOTMs
OCArOTMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwog
ICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBi
b29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFs
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVk
QnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAog
cHJpdmF0ZToKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFuY2UK
ICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpUaHVuZGVyOyB9CiAgICAgdm9pZCBpbml0aWFs
aXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFs
bG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3ND
YWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFy
ZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJh
Y2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYp
IGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9rZXlTeXN0ZW07IH0KICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVT
ZXNzaW9uKCkgZmluYWw7CkBAIC0xMjYsOCArMTI2LDggQEAgY2xhc3MgQ0RNSW5zdGFuY2VTZXNz
aW9uVGh1bmRlciBmaW5hbCA6IHB1YmxpYyBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSB7CiBwdWJs
aWM6CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcihDRE1JbnN0YW5jZVRodW5kZXImKTsK
IAotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxi
YWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNl
bnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEs
IExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNl
VHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYm
KSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Np
b25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0
cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpA
QCAtMTQxLDE0ICsxNDEsMTQgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBDRE1JbnN0YW5jZVRo
dW5kZXIqIGNkbUluc3RhbmNlVGh1bmRlcigpIGNvbnN0OwogCi0gICAgdXNpbmcgTm90aWZpY2F0
aW9uID0gdm9pZCAoQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6KikoUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdXNpbmcgTm90aWZpY2F0aW9uID0gdm9pZCAoQ0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcjo6KikoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpOwogICAgIHVzaW5nIENoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrID0gRnVuY3Rp
b248dm9pZCgpPjsKLSAgICB1c2luZyBTZXNzaW9uQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rpb248
dm9pZChib29sLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT47CisgICAgdXNpbmcgU2Vzc2lvbkNo
YW5nZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoYm9vbCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpPjsKIAotICAgIHZvaWQgY2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFj
ayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBrZXlVcGRhdGVk
Q2FsbGJhY2soS2V5SURUeXBlJiYpOwogICAgIHZvaWQga2V5c1VwZGF0ZURvbmVDYWxsYmFjaygp
OwotICAgIHZvaWQgZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2
b2lkIGVycm9yQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAg
IENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzIHN0YXR1cyhjb25zdCBLZXlJRFR5cGUmKSBj
b25zdDsKICAgICB2b2lkIHNlc3Npb25GYWlsdXJlKCk7CiAKQEAgLTE1OSw3ICsxNTksNyBAQCBw
cml2YXRlOgogICAgIEluaXREYXRhIG1faW5pdERhdGE7CiAgICAgT3BlbkNETVNlc3Npb25DYWxs
YmFja3MgbV90aHVuZGVyU2Vzc2lvbkNhbGxiYWNrcyB7IH07CiAgICAgQm94UHRyPE9wZW5DRE1T
ZXNzaW9uPiBtX3Nlc3Npb247Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdlOwor
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX21lc3NhZ2U7CiAgICAgYm9vbCBt
X25lZWRzSW5kaXZpZHVhbGl6YXRpb24geyBmYWxzZSB9OwogICAgIFZlY3RvcjxDaGFsbGVuZ2VH
ZW5lcmF0ZWRDYWxsYmFjaz4gbV9jaGFsbGVuZ2VDYWxsYmFja3M7CiAgICAgVmVjdG9yPFNlc3Np
b25DaGFuZ2VkQ2FsbGJhY2s+IG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1l
ckVNRVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKaW5kZXggY2FhNTBlZDVjM2MzOTk4
MzIyZDRhMmMyNzYyNTZlMTgwMWYxZWJiMS4uZWE4OTBmNjdkYTIxMzg3ZjQwZGE2NTFhMGNhNWM3
MzQ5M2U4NGY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVz
LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBHTWFy
a3VwUGFyc2VDb250ZXh0VXNlckRhdGEgewogICAgIGJvb2wgaXNQYXJzaW5nUHNzaCB7IGZhbHNl
IH07Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBzc2g7CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcHNzaDsKIH07CiAKIHN0YXRpYyB2b2lkIG1hcmt1cFN0YXJ0RWxlbWVu
dChHTWFya3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBn
Y2hhcioqLCBjb25zdCBnY2hhcioqLCBncG9pbnRlciB1c2VyRGF0YVB0ciwgR0Vycm9yKiopCkBA
IC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIG1hcmt1cFRleHQoR01hcmt1cFBhcnNlQ29udGV4
dCosIGNvbnN0IGdjaGFyKiB0ZXh0LCBnc2l6ZSB0ZXh0TGVuZ3RoCiAgICAgaWYgKHVzZXJEYXRh
LT5pc1BhcnNpbmdQc3NoKSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBwc3NoID0gYmFzZTY0RGVjb2RlKHRleHQsIHRleHRMZW5ndGgpOwogICAgICAgICBpZiAocHNz
aC5oYXNfdmFsdWUoKSkKLSAgICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBzc2gpKTsKKyAgICAgICAgICAgIHVzZXJEYXRh
LT5wc3NoID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOwogICAgIH0KIH0K
IApAQCAtNzEsOSArNzEsOSBAQCBzdGF0aWMgdm9pZCBtYXJrdXBFcnJvcihHTWFya3VwUGFyc2VD
b250ZXh0KiwgR0Vycm9yKiwgZ3BvaW50ZXIpCiAKIHN0YXRpYyBHTWFya3VwUGFyc2VyIG1hcmt1
cFBhcnNlciB7IG1hcmt1cFN0YXJ0RWxlbWVudCwgbWFya3VwRW5kRWxlbWVudCwgbWFya3VwVGV4
dCwgbWFya3VwUGFzc3Rocm91Z2gsIG1hcmt1cEVycm9yIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVu
cGFyc2VkUGF5bG9hZCkKIHsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGF5
bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOwogICAgIGlmICghcGF5bG9hZCB8
fCAhcGF5bG9hZC0+c2l6ZSgpKQogICAgICAgICByZXR1cm4gcGF5bG9hZDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFt
ZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggNjZlMjk3OWUzZWNmMmVkNjk2
MmFkMmFiNTBhYzQ5ZGI1ODQ1ZDA3YS4uMjdkZDRlYWUwZDJlMDFhYjRkODRjMGFiYzQyNGViYjEw
MTA0YzA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCkBA
IC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFy
c2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiAKLSAgICBJbml0RGF0YShjb25z
dCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCisgICAg
SW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgcGF5bG9hZCkKICAgICAgICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQogICAgIHsK
ICAgICAgICAgaWYgKHBheWxvYWQpIHsKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgICAg
ICBtX3BheWxvYWQuYXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQuZ2V0
KCk7IH0KKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGF5bG9hZC5nZXQoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQo
KSBjb25zdCB7IHJldHVybiBtX3N5c3RlbUlkOyB9CiAgICAgU3RyaW5nIHBheWxvYWRDb250YWlu
ZXJUeXBlKCkgY29uc3QKICAgICB7CkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsK
KyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZO
ZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
c3lzdGVtSWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggNTY0ZTFlNzU0NGE1
ODNmNDE4ZTBkZWJlMGUyNWNlNmI0YmY1NDc5OS4uYmQxMTNiYjZjMjczMWZhMTlhZGRlZmQzM2E5
OWQ0NmJiNGExZjRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtNTIsNyAr
NTIsNyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0
Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJgogICAgIHJldHVybiBGb250UGxhdGZvcm1E
YXRhKGZvbnQuZ2V0KCksIHNpemUsIGJvbGQsIGl0YWxpYywgb3JpZW50YXRpb24sIHdpZHRoVmFy
aWFudCwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCksICZjcmVhdGlvbkRhdGEp
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5jcmVhdGVDRkRhdGEoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmgKaW5kZXggN2JjNjY3ZTQ2OWIwMDYxNTFlYjI1Yjc5Yzg4NjlmNzZhMzJm
MDA3MS4uNjkyOGE2M2U5NzFjN2MzNWU4ODQ0ZWVmNzNiZmE0NGE4ZDhjMDMwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBzdHJ1
Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxp
bnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBG
b250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAotV0VCQ09S
RV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAppbmRleCBiNDE3OTIzZTZk
NzVmOTNjZmQxZTRjYzMxZjg1MDM2ZTFjNjJmNGMyLi41ZDg4Y2Q3NzY4OThjMDVhOTAzNTg5ZTJk
NGJhYzczMGFhMWRmOTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcApAQCAtNjUsNyAr
NjUsNyBAQCBzdHJ1Y3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyA6IFRhYmxlV2l0aENvdmVy
YWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGl0YWxpY3NDb3JyZWN0aW9uQ291bnQ7CiAgICAg
T3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29ycmVjdGlvblsxXTsgLy8gVGhlcmUg
YXJlIGl0YWxpY3NDb3JyZWN0aW9uQ291bnQgaXRhbGljIGNvcnJlY3Rpb24gdmFsdWVzLgogCi0g
ICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3Jy
ZWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdWludDE2X3QoaXRhbGljc0NvcnJlY3Rpb25D
b3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZpdGFsaWNzQ29ycmVjdGlv
bltjb3VudF0pKQpAQCAtOTMsNyArOTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoSW5mbyA6IFRhYmxl
V2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGV4dGVuZGVkU2hhcGVDb3ZlcmFn
ZU9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhLZXJuSW5mb09mZnNldDsKIAotICAg
IGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbklu
Zm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0
IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBv
ZmZzZXQgPSBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zm
c2V0KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVjdCBHbHlwaEFzc2VtYmx5IDogVGFibGVCYXNl
IHsKICAgICAgICAgUGFydEZsYWdzRXh0ZW5kZXIgPSAweDAxCiAgICAgfTsKIAotICAgIHZvaWQg
Z2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZl
Y3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25z
dAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
VmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNv
bnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHBhcnRDb3VudDsKICAgICAgICAg
aWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnBhcnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNDMsNyAr
MTQzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAg
ICAgIE9wZW5UeXBlOjpVSW50MTYgYWR2YW5jZU1lYXN1cmVtZW50OwogICAgIH0gbWF0aEdseXBo
VmFyaWFudFJlY29yZHNbMV07IC8vIFRoZXJlIGFyZSB2YXJpYW50Q291bnQgTWF0aEdseXBoVmFy
aWFudFJlY29yZCdzLgogCi0gICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKKyAg
ICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9y
PEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9
IHZhcmlhbnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlw
aFZhcmlhbnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNTMsNyArMTUzLDcgQEAgc3RydWN0IE1hdGhH
bHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAgICAgICB2YXJpYW50c1tpXSA9
IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2ldLnZhcmlhbnRHbHlwaDsKICAgICB9CiAKLSAgICB2
b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykg
Y29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRz
KSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gZ2x5cGhBc3NlbWJseU9m
ZnNldDsKICAgICAgICAgY29uc3QgR2x5cGhBc3NlbWJseSogZ2x5cGhBc3NlbWJseSA9IHZhbGlk
YXRlT2Zmc2V0PEdseXBoQXNzZW1ibHk+KGJ1ZmZlciwgb2Zmc2V0KTsKQEAgLTE3MCw3ICsxNzAs
NyBAQCBzdHJ1Y3QgTWF0aFZhcmlhbnRzIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5U
eXBlOjpVSW50MTYgaG9yaXpvbnRhbEdseXBoQ291bnQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBt
YXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0WzFdOyAvLyBUaGVyZSBhcmUgdmVydGljYWxHbHlw
aENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucyBhbmQgaG9yaXpvbnRhbEdseXBoQ291
bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zLgogCi0gICAgY29uc3QgTWF0aEdseXBoQ29u
c3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAorICAgIGNv
bnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAog
ICAgIHsKICAgICAgICAgdWludDMyX3QgY291bnQgPSB1aW50MTZfdCh2ZXJ0aWNhbEdseXBoQ291
bnQpICsgdWludDE2X3QoaG9yaXpvbnRhbEdseXBoQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFs
aWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFtjb3VudF0pKQpAQCAt
MjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5U
eXBlOjpPZmZzZXQgbWF0aEdseXBoSW5mb09mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1h
dGhWYXJpYW50c09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFu
dHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0
IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoQ29uc3RhbnRzT2Zm
c2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0cnVjdCBNQVRI
VGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5
cGhJbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAg
dWludDE2X3Qgb2Zmc2V0ID0gbWF0aEdseXBoSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNl
dCkKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aFZhcmlhbnRzKiBt
YXRoVmFyaWFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAor
ICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aFZhcmlh
bnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCmlu
ZGV4IDNmZjY2ZDMxMTgyZTVjNGIzNmRkM2YzMzA3YTY4NGI5NWQ5NTkzZTMuLjI5OTBiZmIwM2Y1
NjE5NDU3N2ZkZDQ0NzZmMTQ0OTRhYjE4MDM1Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgK
QEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udFBsYXRm
b3JtRGF0YTsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBGb250OwogCiBjbGFzcyBPcGVuVHlwZU1hdGhEYXRhIDogcHVibGljIFJlZkNv
dW50ZWQ8T3BlblR5cGVNYXRoRGF0YT4gewpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgT3BlblR5cGVNYXRoRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7CiAK
ICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gbV9tYXRoQnVmZmVyOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZl
cjsKICNlbGlmIFVTRShIQVJGQlVaWikKICAgICBIYlVuaXF1ZVB0cjxoYl9mb250X3Q+IG1fbWF0
aEZvbnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAppbmRleCAzMDQ5NjNhNWRlOTBjODFjOGQ2
MzA5MTI2Nzc4ODc1MzFkODZkMmFmLi5jODY0YjJjM2E4ZmIxYWUzNzYzMDkzZWU1MDU1YjM2NTFl
ZjAxMjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCkBAIC03Myw3ICs3Myw3IEBAIHR5cGVkZWYgVUlu
dDE2IEdseXBoSUQ7CiB0eXBlZGVmIHVpbnQzMl90IFRhZzsKICNkZWZpbmUgT1RfTUFLRV9UQUco
Y2gxLCBjaDIsIGNoMywgY2g0KSAoKCgodWludDMyX3QpKGNoNCkpIDw8IDI0KSB8ICgoKHVpbnQz
Ml90KShjaDMpKSA8PCAxNikgfCAoKCh1aW50MzJfdCkoY2gyKSkgPDwgOCkgfCAoKHVpbnQzMl90
KShjaDEpKSkKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0
ZVRhYmxlKGNvbnN0IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXpl
X3QgY291bnQgPSAxKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxp
ZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNpemVfdCBjb3Vu
dCA9IDEpCiB7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zaXplKCkgPCBzaXplb2YoVCkg
KiBjb3VudCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04Miw3ICs4Miw3IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8Q29u
dGlndW91c1NoYXJlCiAKIHN0cnVjdCBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIHN0YXRp
YyBib29sIGlzVmFsaWRFbmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCB2b2lkKiBwb3NpdGlvbikKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAg
IGlmIChwb3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBi
dWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAg
ICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0
ZVB0cihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBv
c2l0aW9uKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRh
dGVQdHIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQog
ICAgIHsKICAgICAgICAgY29uc3QgVCogY2FzdGVkID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBU
Kj4ocG9zaXRpb24pOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmY2FzdGVkWzFd
KSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gY2FzdGVkOwog
ICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNl
dChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkg
Y29uc3QKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgaW50OF90Kj4odGhpcykgKyBvZmZzZXQpOwogICAgIH0KQEAgLTEyNyw3ICsxMjcsNyBA
QCBzdHJ1Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKICNpZiBFTkFCTEUoT1BF
TlRZUEVfTUFUSCkKIHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRhYmxlQmFzZSB7CiBwcm90
ZWN0ZWQ6Ci0gICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBo
LCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKKyAgICBib29sIGdldENvdmVyYWdlSW5k
ZXgoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVy
YWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CiAgICAgewog
ICAgICAgICBzd2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkgewogICAgICAgICBjYXNl
IDE6IHsgLy8gQ292ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcApp
bmRleCAzY2E3MjdhYWZiZDJjYWQ0YmUxMDZmMWRjNGMzZjJlN2RkNDQ4MDVmLi4zMjE2YjdlZjA2
ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRp
ZXMuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFwcGVuZFBhZGRpbmdT
aG9ydCgpCiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUgaW4gZm9udERhdGEs
IGFuZCB3cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRUYWJsZQogLy8g
cmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMgdXNlZCBieSByZW5h
bWVBbmRBY3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29sIHJlbmFtZUZvbnQo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9u
dE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCitib29sIHJlbmFtZUZv
bnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwg
VmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBzaXplX3Qgb3JpZ2lu
YWxEYXRhU2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25zdCBzZm50SGVhZGVyKiBzZm50
ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9udERhdGEuZGF0YSgpKTsK
QEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsCiB9CiAKIC8vIFJlbmFt
ZSB0aGUgZm9udCBhbmQgaW5zdGFsbCB0aGUgbmV3IGZvbnQgZGF0YSBpbnRvIHRoZSBzeXN0ZW0K
LVJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkK
K1JlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBT
aGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQogewogICAgIFZl
Y3Rvcjx1aW50OF90PiByZXdyaXR0ZW5Gb250RGF0YTsKICAgICBpZiAoIXJlbmFtZUZvbnQoZm9u
dERhdGEsIGZvbnROYW1lLCByZXdyaXR0ZW5Gb250RGF0YSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRp
ZXMuaAppbmRleCAyMmJlMjMwYTYwNWM2NmEwZWY1YmMxNDhhMjYyNzk3ZDM3MmMyYWM0Li5mYTAw
MDgxMTYwNjY5N2RjNWM1MTEyMzMzYzkwYzhjOTJiNGI2NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRp
bGl0aWVzLmgKQEAgLTM1LDEwICszNSwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1
Y3QgQmlnRW5kaWFuVVNob3J0OwotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVmaXg7CiBjbGFzcyBGb250TWVtb3J5UmVzb3Vy
Y2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
CiBzdHJ1Y3QgRU9USGVhZGVyIHsKICAgICBFT1RIZWFkZXIoKTsKQEAgLTU1LDggKzU1LDggQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8dWludDhfdCwgNTEyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wg
cmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwg
VmVjdG9yPHVpbnQ4X3Q+Jik7Ci1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRB
Y3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYp
OworYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZl
Y3Rvcjx1aW50OF90PiYpOworUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0
aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAppbmRl
eCA3OWU5ZWZlMDYwNTMzNTc5ZTljYTNiYzEwMzIzOGJmZDI4MmY3MTVjLi4wZmE4ZjMwNmFkOTUy
ZDA2YTA5Mjk3ZDBiMWQyODdiODk4ODMyYTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNh
bERhdGEuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgc3RydWN0IFN1YnN0aXR1dGlvblN1YlRhYmxl
IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IHN1YnN0Rm9ybWF0OwogICAgIE9w
ZW5UeXBlOjpPZmZzZXQgY292ZXJhZ2VPZmZzZXQ7CiAKLSAgICBjb25zdCBDb3ZlcmFnZVRhYmxl
KiBjb3ZlcmFnZShjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsg
cmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZz
ZXQpOyB9CisgICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+
KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9CiB9OwogCiBzdHJ1Y3QgU2luZ2xlU3Vic3RpdHV0
aW9uMlN1YlRhYmxlIDogU3Vic3RpdHV0aW9uU3ViVGFibGUgewpAQCAtMTMxLDcgKzEzMSw3IEBA
IHN0cnVjdCBMb29rdXBUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBz
dWJUYWJsZU9mZnNldHNbMV07CiAgICAgLy8gT3BlblR5cGU6OlVJbnQxNiBtYXJrRmlsdGVyaW5n
U2V0OyB0aGlzIGZpZWxkIGNvbWVzIGFmdGVyIHZhcmlhYmxlIGxlbmd0aCwgc28gb2Zmc2V0IGlz
IGRldGVybWluZWQgZHluYW1pY2FsbHkuCiAKLSAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFz
aE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5
cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAg
ICAgdWludDE2X3QgY291bnRTdWJUYWJsZSA9IHN1YlRhYmxlQ291bnQ7CiAgICAgICAgIGlmICgh
aXNWYWxpZEVuZChidWZmZXIsICZzdWJUYWJsZU9mZnNldHNbY291bnRTdWJUYWJsZV0pKQpAQCAt
MTk0LDcgKzE5NCw3IEBAIHN0cnVjdCBMb29rdXBMaXN0IDogVGFibGVCYXNlIHsKICAgICBPcGVu
VHlwZTo6VUludDE2IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwT2Zm
c2V0c1sxXTsKIAotICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgs
IGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBM
b29rdXBUYWJsZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7
CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZsb29r
dXBPZmZzZXRzW2NvdW50XSkpCkBAIC0yMDgsNyArMjA4LDcgQEAgc3RydWN0IEZlYXR1cmVUYWJs
ZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBP
cGVuVHlwZTo6VUludDE2IGxvb2t1cExpc3RJbmRleFsxXTsKIAotICAgIGJvb2wgZ2V0R2x5cGhT
dWJzdGl0dXRpb25zKGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEds
eXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3VwTGlzdCogbG9va3Vwcywg
SGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAg
ICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1cExpc3RJbmRleFtjb3VudF0pKQpAQCAt
MjI5LDcgKzIyOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAg
IE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZU9mZnNldDsKICAgICB9IGZlYXR1cmVzWzFdOwogCi0g
ICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6
VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAg
IGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRh
ZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAg
dWludDE2X3QgY291bnQgPSBmZWF0dXJlQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3Vu
dCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlc1tjb3VudF0pKQpAQCAtMjM5LDcgKzIz
OSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6
OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAg
ICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGZvciAodWludDE2
X3QgaSA9IDA7IGkgPCBmZWF0dXJlQ291bnQ7ICsraSkgewogICAgICAgICAgICAgaWYgKGlzVmFs
aWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbaV0pICYmIGZlYXR1cmVzW2ldLmZlYXR1cmVUYWcgPT0g
dGFnKQpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0cnVjdCBMYW5nU3lzVGFibGUgOiBUYWJsZUJhc2Ug
ewogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUNvdW50OwogICAgIE9wZW5UeXBlOjpVSW50
MTYgZmVhdHVyZUluZGV4WzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9w
ZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVy
ZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxp
c3QqIGZlYXR1cmVzLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFs
aWRFbmQoYnVmZmVyLCAmZmVhdHVyZUluZGV4W2NvdW50XSkpCkBAIC0yNzcsNyArMjc3LDcgQEAg
c3RydWN0IFNjcmlwdFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNl
dCBsYW5nU3lzT2Zmc2V0OwogICAgIH0gbGFuZ1N5c1JlY29yZHNbMV07CiAKLSAgICBjb25zdCBM
YW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qg
Y291bnQgPSBsYW5nU3lzQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZs
YW5nU3lzUmVjb3Jkc1tjb3VudF0pKQpAQCAtMjk4LDcgKzI5OCw3IEBAIHN0cnVjdCBTY3JpcHRM
aXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBzY3JpcHRPZmZzZXQ7
CiAgICAgfSBzY3JpcHRzWzFdOwogCi0gICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVu
VHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291
bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlw
dHNbY291bnRdKSkKQEAgLTMxMCw3ICszMTAsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxl
QmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IFNjcmlwdFRhYmxl
KiBkZWZhdWx0U2NyaXB0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0
Q291bnQ7CiAgICAgICAgIGlmICghY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0
c1tjb3VudF0pKQpAQCAtMzIxLDcgKzMyMSw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVC
YXNlIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdFRhYmxlPihidWZmZXIs
IHNjcmlwdHNbMF0uc2NyaXB0T2Zmc2V0KTsKICAgICB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFi
bGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgU2NyaXB0VGFibGUq
IHNjcmlwdFRhYmxlID0gZGVmYXVsdFNjcmlwdChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlw
dFRhYmxlKQpAQCAtMzM2LDExICszMzYsMTEgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFz
ZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0dXJlTGlzdE9mZnNldDsKICAgICBPcGVuVHlw
ZTo6T2Zmc2V0IGxvb2t1cExpc3RPZmZzZXQ7CiAKLSAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3Jp
cHRMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1
cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsg
fQotICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVM
aXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IExvb2t1cExpc3Qq
IGxvb2t1cExpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7
IHJldHVybiB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZz
ZXQpOyB9CisgICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVm
ZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJl
TGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVP
ZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9CisgICAgY29u
c3QgTG9va3VwTGlzdCogbG9va3VwTGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0
T2Zmc2V0KTsgfQogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5
c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdHMgPSBzY3JpcHRMaXN0KGJ1
ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0cykKQEAgLTM0OCw3ICszNDgsNyBAQCBzdHJ1Y3Qg
R1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHNjcmlwdHMtPmRlZmF1bHRM
YW5nU3lzKGJ1ZmZlcik7CiAgICAgfQogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJl
KE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6
VGFnIGZlYXR1cmVUYWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBsYW5nU3lzID0gZGVmYXVsdExhbmdTeXMoYnVm
ZmVyKTsKICAgICAgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzID0gZmVhdHVyZUxpc3Qo
YnVmZmVyKTsKQEAgLTM2NSw3ICszNjUsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNl
IHsKICAgICAgICAgcmV0dXJuIGZlYXR1cmU7CiAgICAgfQogCi0gICAgYm9vbCBnZXRWZXJ0aWNh
bEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0VmVydGljYWxH
bHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgRmVhdHVyZVRhYmxl
KiB2ZXJ0aWNhbEZlYXR1cmVUYWJsZSA9IGZlYXR1cmUoT3BlblR5cGU6OlZlcnRGZWF0dXJlVGFn
LCBidWZmZXIpOwogICAgICAgICBpZiAoIXZlcnRpY2FsRmVhdHVyZVRhYmxlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0
aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVV
dGlsaXRpZXMuaAppbmRleCBhNjI3MTliMTcxOWE3NGY5NzY5MjIxOWRmNWY3YWFlZGM0OTA2NDY2
Li4wZGI0YWZhZGIzZjc0MmI4M2E0ZTE2Y2YzNzE4NzBhMmIwNDA0ZWE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVV
dGlsaXRpZXMuaApAQCAtNDMsNyArNDMsNyBAQCBlbnVtIERXUklURV9GT05UX1NUUkVUQ0g7CiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgRGly
ZWN0V3JpdGUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggOGJlMWIxYTMz
YTYyMDVjMTgxY2VmZjFhYzM0MzRiYzg3YTc4M2JlNS4uYzg2ODNhN2VmNTg5YzNmZTY1NGQ4NDU3
MTI5NWUyNDBkMjI0NDllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMTA2
LDcgKzEwNiw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJl
dHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAg
IFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250
UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBmYzA0ZjE3NWM3ODhiOWJlOTk4ZjVmM2I3MTFmNTk3
YzAyNmJiZjllLi4wOGZjOWYxOWVhZWE5NDgzZWE1OGVjMWFlZWRkNDU3MjU2Y2UyN2JjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTM2LDEzICszNiwxMyBAQCB0eXBlZGVmIHN0cnVj
dCBDR0ZvbnQqIENHRm9udFJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0
aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRNZW1vcnlSZXNv
dXJjZTsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0
IEZvbnRWYXJpYW50U2V0dGluZ3M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dl
ZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNl
dHRpbmdzOwpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6
Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9t
UGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWly
by5jcHAKaW5kZXggZjRmYmY3YTdmNGQ3YzgzZmYyMTE2YzMxZTU0NmNhOTFlMDU4OWNiMS4uM2Mx
ZDRlMmYzYzc1NGE3M2E4MjNhMDBjMTY3NGVjMzA0NDkzMTEyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWly
by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIFN0cmluZyBj
cmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUlu
Q29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5p
cXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRl
Rm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAK
aW5kZXggNGM2NzRjNDc0M2JjMDExOGE5NzAxMGNjNjkyODliNTg2ZGJiMGNkMS4uMzFhMWU1YzUz
MWYyMDkwM2M1Y2ZiMzI4NjBiYTVlZjIwNjRlOTNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFD
YWlyb1dpbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0
Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgICAg
ICYmIG1fdXNlR0RJID09IG90aGVyLm1fdXNlR0RJOwogfQogCi1SZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJs
ZSkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5
cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXggNDM5Y2Y4NjNi
ODczZGM5Y2Y3ZjgxMDU5OWU1YTYwMWU3ZjczNzk5Ny4uNmNiNTUxMTA0YTkzYmRiZDIyYjQxN2E0
NTQ2ZDIwZmFkMGUyYTM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcApAQCAtNTksMTggKzU5
LDE4IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05U
PiBmb250LCBmbG9hdCBzaXplLCBib29sIGJvbGQsCiAgICAgUmVzdG9yZURDKGhkYywgLTEpOwog
fQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxh
dGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRh
YmxlKSBjb25zdAogewogICAgIEhXbmREQyBoZGMoMCk7CiAgICAgSEdESU9CSiBvbGRGb250ID0g
U2VsZWN0T2JqZWN0KGhkYywgaGZvbnQoKSk7CiAKICAgICBEV09SRCBzaXplID0gR2V0Rm9udERh
dGEoaGRjLCB0YWJsZSwgMCwgMCwgMCk7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKHNp
emUgIT0gR0RJX0VSUk9SKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKHNpemUpOwog
ICAgICAgICBEV09SRCByZXN1bHQgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAoUFZPSUQp
ZGF0YS5kYXRhKCksIHNpemUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0
ID09IHNpemUpOwotICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSk7CisgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoZGF0YSkpOwogICAgIH0KIAogICAgIFNlbGVjdE9iamVjdChoZGMsIG9sZEZvbnQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKaW5kZXggNjI5ZTBlNjFhMTA0YzU2N2ExZDRlZGNi
N2U1Nzk3ZGNmNjdjNmU4ZS4uNzczNTczOWI5MzM0ZjQ0ZDk5YTNmMTJmZmM1YmY3YjQxZjdjYzZl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCkBAIC0yNzIsNyArMjcyLDcgQEAgUGxhdGZv
cm1JbWFnZVB0ciBJbWFnZURlY29kZXJEaXJlY3QyRDo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBTdWIKICAgICByZXR1cm4gYml0bWFwOwogfQogCi12b2lkIEltYWdlRGVj
b2RlckRpcmVjdDJEOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmICghYWxsRGF0
YVJlY2VpdmVkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCmluZGV4IDRm
NDcyNTg2YjQyNGJkYTFjZjZmYTAxNDNjYmEyM2QwMzAwMTZlNDUuLmMyMzY1ZmQ3NDRjNjExOGMx
OTk5ZTA1YjgwMmVkNWI0OGYzNjQ4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCkBAIC00MSw3
ICs0MSw3IEBAIGNsYXNzIEltYWdlRGVjb2RlckRpcmVjdDJEIGZpbmFsIDogcHVibGljIEltYWdl
RGVjb2RlciB7CiBwdWJsaWM6CiAgICAgSW1hZ2VEZWNvZGVyRGlyZWN0MkQoKTsKIAotICAgIHN0
YXRpYyBSZWY8SW1hZ2VEZWNvZGVyRGlyZWN0MkQ+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBBbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFn
ZURlY29kZXJEaXJlY3QyRD4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJEaXJlY3QyRCgpKTsKICAgICB9CkBAIC03Miw3ICs3
Miw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNB
bGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVk
OyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAK
aW5kZXggMGQ4ODIwZTlmM2Q2ZmQ3NzM1ZDU3MGIzNjQxNDg4ZjUzYmQ3ZWNlOS4uMmQ5NzI3MGE3
MzQ4MzQ4OTNlNzhjODFmZjBlYzViYjVkZmVjM2Y4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIC8vIFRoaXMgZnVuY3Rpb24gbG9hZHMgcmVzb3Vy
Y2VzIGZyb20gV2ViS2l0Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3Vy
Y2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
U2VsZWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRh
dGEuaAppbmRleCA3ZTNiMzYzMmI5MGM2MTk0MTVlNDhhNTJhMjI1OGIxNDJlMDAxYTU3Li5jZjJi
NTFmNmYwMjgzN2ExMTA2ZjRkOTk5ZjJmMTMwZTI1ODA5ODZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKQEAgLTYwLDggKzYwLDggQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0Q2FuU21hcnRSZXBsYWNlKGJvb2wgY2FuU21hcnRSZXBsYWNlKSB7IG1fY2Fu
U21hcnRSZXBsYWNlID0gY2FuU21hcnRSZXBsYWNlOyB9CiAgICAgYm9vbCBjYW5TbWFydFJlcGxh
Y2UoKSBjb25zdCB7IHJldHVybiBtX2NhblNtYXJ0UmVwbGFjZTsgfQogCi0gICAgdm9pZCBzZXRD
dXN0b21EYXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3Rv
bURhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KLSAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBj
dXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CisgICAgdm9p
ZCBzZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0
YSA9IFdURk1vdmUoYnVmZmVyKTsgfQorICAgIFNoYXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fY3VzdG9tRGF0YS5nZXQoKTsgfQogICAgIGJvb2wgaGFzQ3VzdG9tRGF0
YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9jdXN0b21EYXRhOyB9CiAgICAgdm9pZCBjbGVhckN1c3Rv
bURhdGEoKSB7IG1fY3VzdG9tRGF0YSA9IG51bGxwdHI7IH0KIApAQCAtNzYsNyArNzYsNyBAQCBw
cml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IG1fZmlsZW5hbWVzOwogICAgIFJlZlB0cjxJbWFn
ZT4gbV9pbWFnZTsKICAgICBib29sIG1fY2FuU21hcnRSZXBsYWNlIHsgZmFsc2UgfTsKLSAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOworICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxh
YmxlSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBkOTU2ZDllNzYyNWQ1YmI1YTcwZjA2
OTNlNzc5OGVlOTA4NDlmMTY1Li4zM2M5NWVjMzMzM2E5MjBjNjRhMDE4MTc1MWViNGE1MDVlZjFh
N2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9T
Y2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKIAotc3RhdGljIHVuc2lnbmVkIGNvcHlG
cm9tU2hhcmVkQnVmZmVyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoLCBjb25z
dCBTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikKK3N0YXRpYyB1bnNpZ25lZCBjb3B5RnJvbVNo
YXJlZEJ1ZmZlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKQogewogICAgIHVuc2lnbmVkIGJ5dGVz
RXh0cmFjdGVkID0gMDsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBzaGFyZWRCdWZm
ZXIpIHsKQEAgLTEzNSw3ICsxMzUsNyBAQCBib29sIG1hdGNoZXNDVVJTaWduYXR1cmUoY2hhciog
Y29udGVudHMpCiAKIH0KIAotUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUlt
YWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKQorUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6
Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbGVuZ3RoT2ZMb25nZXN0U2lnbmF0dXJl
ID0gMTQ7IC8vIFRvIHdpdDogIlJJRkY/Pz8/V0VCUFZQIgogICAgIGNoYXIgY29udGVudHNbbGVu
Z3RoT2ZMb25nZXN0U2lnbmF0dXJlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IDNj
NmEzYTUwYzgyMDk2NGU4YTliMDc0OTAxYTkyYjNmM2M0Nzg5YjcuLjljNDA1NTc4MjQxZDBjNTEy
NzAyOTUxNWMyMjEyNjU4ZjhjNGY2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAt
NjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIG51bGxwdHIgaWYgd2UgY2Fu
J3Qgc25pZmYgYSBzdXBwb3J0ZWQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBkYXRhIChwb3NzaWJs
eQogICAgIC8vIGJlY2F1c2UgdGhlcmUgaXNuJ3QgZW5vdWdoIGRhdGEgeWV0KS4KLSAgICBzdGF0
aWMgUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRh
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBS
ZWZQdHI8U2NhbGFibGVJbWFnZURlY29kZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAg
Ym9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhh
OyB9CiAKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9lbmNvZGVk
RGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxldGU7CiAgICAgfQogCi0gICAg
dm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92
ZXJyaWRlCisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbG9jayB9OwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVk
RGF0YVN0YXR1czo6RXJyb3IpCkBAIC0xOTQsNyArMTk0LDcgQEAgcHVibGljOgogICAgIHN0ZDo6
b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50PiBtX2RhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50PiBtX2RhdGE7CiAgICAgVmVjdG9yPFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUsIDE+
IG1fZnJhbWVCdWZmZXJDYWNoZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CiAgICAgbXV0
YWJsZSBMb2NrIG1fbG9jazsKICAgICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdl
UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYv
QVZJRkltYWdlUmVhZGVyLmNwcAppbmRleCA3YzYwM2ZkODM1OGMyMTRhYzkxODRmMzE4OTk3MmZl
ODQxYjYxZTgwLi4yNmY4ODY0OTZlNWE1YTE0ZTI4YWZiMWFmYTliZmMzMDE3N2Y1MWNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJ
bWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIEFWSUZJbWFnZVJl
YWRlcjo6QVZJRkltYWdlUmVhZGVyKFJlZlB0cjxBVklGSW1hZ2VEZWNvZGVyPiYmIGRlY29kZXIp
CiAKIEFWSUZJbWFnZVJlYWRlcjo6fkFWSUZJbWFnZVJlYWRlcigpID0gZGVmYXVsdDsKIAotYm9v
bCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorYm9vbCBBVklGSW1hZ2VSZWFkZXI6
OnBhcnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01l
bW9yeShtX2F2aWZEZWNvZGVyLmdldCgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpICE9IEFW
SUZfUkVTVUxUX09LKQogICAgICAgICByZXR1cm4gYWxsRGF0YVJlY2VpdmVkID8gbV9kZWNvZGVy
LT5zZXRGYWlsZWQoKSA6IGZhbHNlOwpAQCAtNTgsNyArNTgsNyBAQCBib29sIEFWSUZJbWFnZVJl
YWRlcjo6cGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwg
Ym9vbCBhbAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFWSUZJbWFnZVJlYWRlcjo6ZGVj
b2RlRnJhbWUoc2l6ZV90IGZyYW1lSW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmIGJ1
ZmZlciwgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkKK3ZvaWQgQVZJRklt
YWdlUmVhZGVyOjpkZWNvZGVGcmFtZShzaXplX3QgZnJhbWVJbmRleCwgU2NhbGFibGVJbWFnZURl
Y29kZXJGcmFtZSYgYnVmZmVyLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCYgZGF0YSkKIHsKICAgICBpZiAobV9kZWNvZGVyLT5mYWlsZWQoKSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
YXZpZi9BVklGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgKaW5kZXggY2JjYTBiOGMxMjRiZmYwZmZjMzMw
MWJhMzViY2UwMWVkMjcyMmRmOC4uNDk2ZjY5ZjgxMmJkNzViMGVkYTYzNTdiYWE4NjBjZmNjYjVi
YTRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
YXZpZi9BVklGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCkBAIC0zOSw4ICszOSw4IEBAIHB1Ymxp
YzoKICAgICBBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJbWFnZURlY29kZXI+JiYpOwogICAg
IH5BVklGSW1hZ2VSZWFkZXIoKTsKIAotICAgIGJvb2wgcGFyc2VIZWFkZXIoY29uc3QgU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIGRl
Y29kZUZyYW1lKHNpemVfdCBpbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYsIGNvbnN0
IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKTsKKyAgICBib29sIHBhcnNlSGVhZGVyKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpOworICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4LCBTY2FsYWJsZUltYWdlRGVj
b2RlckZyYW1lJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKTsK
ICAgICBzaXplX3QgaW1hZ2VDb3VudCgpIGNvbnN0OwogICAgIGRvdWJsZSByZXBldGl0aW9uQ291
bnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3Mjc2OWE2OTI2
ZWMyNDE5YmY2NjM4MjUyOGQzZDc3MjBhNTRhZGFlLi5mNzQ1NWMxNDZjN2U4YWViMDRjYzhjNTZm
MzMwZTJhMDFmM2JhNzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDYsNyAr
NDYsNyBAQCBCTVBJbWFnZURlY29kZXI6OkJNUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogewogfQogCi12b2lkIEJNUEltYWdlRGVj
b2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQor
dm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzdjN2NhODFmZWE2YjhhNzc0YmIz
MDhlNTM4ZGNkMDQ4Yzk5NWVlYS4uNjRkZWQ2YWJiZTJjMGEyOWIxMWY5ZmI1ZWNkNmI0ODcyNGQ1
ODk3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6
CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVu
c2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJibXAiX3M7IH0KLSAgICB2b2lkIHNldERhdGEo
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0
RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFs
OwogICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXpl
X3QgaW5kZXgpIGZpbmFsOwogICAgIC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMgfG1f
cmVhZGVyfC4gQmUgY2FyZWZ1bCB0byBhdm9pZAogICAgIC8vIGFjY2Vzc2luZyBkZWxldGVkIG1l
bW9yeSwgZXNwZWNpYWxseSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9tIGluc2lkZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVh
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1h
Z2VSZWFkZXIuaAppbmRleCA0ODQ0ZjM4MGRjMTdlYzcwNDU4OGZiMTJmNTNlYWJjNmQyMGU2MGY0
Li5iZDQzMGU4YThiZWEyYzgxNmIyYzUyMmJmNWJhNzg4NDZjMzhlMGZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1h
Z2VSZWFkZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBCTVBJbWFnZVJlYWRlciB7CiBwdWJs
aWM6CiAgICAgLy8gUmVhZCBhIHZhbHVlIGZyb20gfGRhdGFbb2Zmc2V0XXwsIGNvbnZlcnRpbmcg
ZnJvbSBsaXR0bGUgdG8gbmF0aXZlCiAgICAgLy8gZW5kaWFubmVzcy4KLSAgICBzdGF0aWMgaW5s
aW5lIHVpbnQxNl90IHJlYWRVaW50MTYoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYg
ZGF0YSwgaW50IG9mZnNldCkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJlYWRVaW50MTYo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZz
ZXQpCiAgICAgewogICAgICAgICB1aW50MTZfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNweSgmcmVz
dWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgMik7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBzdGF0aWMgaW5saW5lIHVpbnQz
Ml90IHJlYWRVaW50MzIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgaW50
IG9mZnNldCkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQpCiAgICAg
ewogICAgICAgICB1aW50MzJfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNweSgmcmVzdWx0LCAmZGF0
YS5kYXRhKClbb2Zmc2V0XSwgNCk7CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBCTVBJ
bWFnZVJlYWRlcihTY2FsYWJsZUltYWdlRGVjb2RlciogcGFyZW50LCBzaXplX3QgZGVjb2RlZEFu
ZEhlYWRlck9mZnNldCwgc2l6ZV90IGltZ0RhdGFPZmZzZXQsIGJvb2wgdXNlc0FuZE1hc2spOwog
CiAgICAgdm9pZCBzZXRCdWZmZXIoU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogYnVmZmVyKSB7
IG1fYnVmZmVyID0gYnVmZmVyOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KKyAgICB2b2lkIHNldERhdGEoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7
IH0KIAogICAgIC8vIERvZXMgdGhlIGFjdHVhbCBkZWNvZGluZy4gSWYgfG9ubHlTaXplfCBpcyB0
cnVlLCBkZWNvZGluZyBvbmx5CiAgICAgLy8gcHJvZ3Jlc3NlcyBhcyBmYXIgYXMgbmVjZXNzYXJ5
IHRvIGdldCB0aGUgaW1hZ2Ugc2l6ZS4gUmV0dXJucwpAQCAtMjcyLDcgKzI3Miw3IEBAIHByaXZh
dGU6CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogbV9idWZmZXI7CiAKICAgICAvLyBU
aGUgZmlsZSB0byBkZWNvZGUuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+
IG1fZGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+
IG1fZGF0YTsKIAogICAgIC8vIEFuIGluZGV4IGludG8gfG1fZGF0YXwgcmVwcmVzZW50aW5nIGhv
dyBtdWNoIHdlJ3ZlIGFscmVhZHkgZGVjb2RlZC4KICAgICBzaXplX3QgbV9kZWNvZGVkT2Zmc2V0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fp
cm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAppbmRleCA2MDEy
MDM3NGY5YzQzMTY4YTY1MjFiNjljNTRhZmJlMmEwMGY1NWY3Li40YTIxMjU1YThjMGZiNjc4ZTRh
YWRkNzY2M2ViN2Y5MThlN2ZlOTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdT
dG9yZUNhaXJvLmNwcApAQCAtMzcsNyArMzcsOSBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlQmFj
a2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0CiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWdu
ZWQgY2hhcio+KGNvbnN0X2Nhc3Q8dWludDMyX3QqPihtX3BpeGVsc1B0cikpLAogICAgICAgICBD
QUlST19GT1JNQVRfQVJHQjMyLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpLCBzaXpl
KCkud2lkdGgoKSAqIHNpemVvZih1aW50MzJfdCkpKTsKICAgICBzdGF0aWMgY2Fpcm9fdXNlcl9k
YXRhX2tleV90IHNfc3VyZmFjZURhdGFLZXk7Ci0gICAgY2Fpcm9fc3VyZmFjZV9zZXRfdXNlcl9k
YXRhKHN1cmZhY2UuZ2V0KCksICZzX3N1cmZhY2VEYXRhS2V5LCBtX3BpeGVscy5nZXQoKSwgW10o
dm9pZCogZGF0YSkgeyBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4oZGF0
YSktPmRlcmVmKCk7IH0pOworICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0YShzdXJmYWNl
LmdldCgpLCAmc19zdXJmYWNlRGF0YUtleSwgbV9waXhlbHMuZ2V0KCksIFtdKHZvaWQqIGRhdGEp
IHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8RGF0YVNlZ21lbnQqPihkYXRhKS0+ZGVyZWYoKTsKKyAg
ICB9KTsKIAogICAgIHJldHVybiBzdXJmYWNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNw
cAppbmRleCBlNmFiZTBkOTU0NGI2YzE4NWM2NDVkZWNlMDlmMjNmOTU2NjYwN2NiLi5iOWVjMDFi
OGFlOGU4ZDI5YmM3ODI1MjZlMDc2NTI1NTFlMzU5YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNv
ZGVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBHSUZJbWFnZURlY29kZXI6OkdJRkltYWdlRGVjb2Rl
cihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBHSUZJ
bWFnZURlY29kZXI6On5HSUZJbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgR0lGSW1h
Z2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCit2b2lkIEdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAppbmRleCAzNWRmMzNmNmRmYzQ4M2Zk
ODQ3MTM2NmFlNTNiYjBiOTYxY2FlZDJlLi5jNzQ3MTk5OTliOTg2YzFjZWY4NDc4NzU5ZDIzNzE4
YzkwNDJkM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1
YmxpYzoKIAogICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1l
RXh0ZW5zaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gImdpZiJfczsgfQotICAgIHZvaWQgc2V0
RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAg
ICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7
CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCBmaW5hbDsKICAgICBSZXBldGl0aW9uQ291
bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCmlu
ZGV4IDQyMTQ2ZTAzMjkzMjM2OTk3ODllYjVlNDJhZjRjNzNkMzRhYjljYzYuLjEwODJmZGYwZGZm
MjM5MWU1NjUzMGE0MWY4N2JhNDM5ODIzMjc1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCkBA
IC0yMzcsNyArMjM3LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHNldERh
dGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAm
ZGF0YTsgfQorICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQogICAgIC8vIEZJWE1FOiBo
YWx0QXRGcmFtZSBzaG91bGQgYmUgc2l6ZV90LgogICAgIGJvb2wgZGVjb2RlKFdlYkNvcmU6OkdJ
RkltYWdlRGVjb2Rlcjo6R0lGUXVlcnksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKTsKIApAQCAtMzE2
LDYgKzMxNiw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxHSUZGcmFt
ZUNvbnRleHQ+ID4gbV9mcmFtZXM7CiAgICAgc2l6ZV90IG1fY3VycmVudERlY29kaW5nRnJhbWU7
CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRh
OworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dD4gbV9kYXRhOwogICAgIGJvb2wgbV9wYXJzZUNvbXBsZXRlZDsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFn
ZURlY29kZXIuY3BwCmluZGV4IGM3MTdjNDVkMzA1N2MwNTUzNmVlNjA1MGY5Mzk3MDQ2ZDEwZGYy
YTcuLmMwNzEzNDViOGJmMzY5YjgwMjcxZmJkZjBhMGNlMDE3NGYwNTAzYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29k
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9J
Q09JbWFnZURlY29kZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIElDT0ltYWdlRGVjb2Rlcjo6SUNP
SW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wCiAKIElDT0ltYWdlRGVjb2Rlcjo6fklDT0ltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAot
dm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKK3ZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWls
ZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCmluZGV4IGZiN2E5
MDNiMmEwNzUzOTQ5MTdhYmJiZjExYjFjZWQ4M2ZmNDMyYTAuLjEwZWU5YjRkMmU4YzlkODg3ZTFk
MmI4YmUxMzliYjc0MjcxZDU3YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKQEAgLTQ2LDcg
KzQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBTdHJp
bmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiaWNvIl9zOyB9Ci0g
ICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5h
bDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKSBmaW5hbDsKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCBmaW5hbDsKICAgICBJ
bnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdCBm
aW5hbDsKICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VE
ZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYTQyZTViYzRhY2NmMzcyMmE1YWY5YzkwNTQ2MmQw
OGVkODg0MTY0OC4uNWNmYWM5ZjIzNTdlMmUxMmM2ODY0MDBiMjY3ODhhZTdmOGJlMTM1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RhdGlj
IGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKICAgICAgICAg
JiYgbWFya2VyLT5kYXRhWzExXSA9PSAnXDAnOwogfQogCi1zdGF0aWMgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGlu
Zm8pCitzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNv
bXByZXNzX3N0cnVjdCogaW5mbykKIHsKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsK
ICAgICBmb3IgKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIgPSBpbmZvLT5tYXJrZXJfbGlz
dDsgbWFya2VyOyBtYXJrZXIgPSBtYXJrZXItPm5leHQpIHsKQEAgLTMyMCw3ICszMjAsNyBAQCBw
dWJsaWM6CiAgICAgICAgIG1fYnl0ZXNUb1NraXAgPSBzdGQ6Om1heChudW1CeXRlcyAtIGJ5dGVz
VG9Ta2lwLCBzdGF0aWNfY2FzdDxsb25nPigwKSk7CiAgICAgfQogCi0gICAgYm9vbCBkZWNvZGUo
Y29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkKKyAg
ICBib29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYg
ZGF0YSwgYm9vbCBvbmx5U2l6ZSkKICAgICB7CiAgICAgICAgIG1fZGVjb2RpbmdTaXplT25seSA9
IG9ubHlTaXplOwogCkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpk
ZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB9CiAKICNpZiBVU0Uo
TENNUykKLXZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEpQRUdJbWFnZURlY29kZXI6OnNldElD
Q1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFidWZm
ZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzAz
YWE2NzgyMjAzY2JkNGNmYzgzZmRlOGY4NzEyYjcwODFlM2FhOS4uZDJkN2ZhNmFiNDliNDI0N2Fm
ZmI4ZTFmYmVlNDY5NTNiMGNiMDVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKQEAg
LTY4LDcgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgc2V0T3Jp
ZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0g
b3JpZW50YXRpb247IH0KICNpZiBVU0UoTENNUykKLSAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxl
KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKKyAgICAgICAgdm9pZCBzZXRJQ0NQ
cm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOwogI2VuZGlmCiAKICAgICBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIw
MDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCmluZGV4IGJlY2Y2
NDUwMjc3ZWViNzRiMDlkZTUyZWUxODJmZjZlMTFlZDI3NjIuLjIwNDczZjBlZWViYjU2YzcxMzE0
ZjY1NTZiZGEwOTAzMzQ5MDc0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMElt
YWdlRGVjb2Rlci5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIEpQRUcyMDAwSW1hZ2VEZWNv
ZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgfQog
CiAgICAgc3RydWN0IFJlYWRlciB7Ci0gICAgICAgIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQm
IGRhdGE7CisgICAgICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRh
OwogICAgICAgICBzaXplX3Qgb2Zmc2V0OwogICAgIH0gcmVhZGVyID0geyAqbV9kYXRhLCAwIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Bu
Zy9QTkdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYzEyYzQ1OWE1YTNlNWIzNTFjNWJj
YzYyYmYwMGI4YTI4MWJkNWJhMy4uNGNiZDMyM2Q5YTc1MDI2ZWY4NjU4ZjM4MTZkZDczOGQzN2Nh
OGVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
cG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBw
dWJsaWM6CiAgICAgICAgIG1fcmVhZE9mZnNldCA9IDA7CiAgICAgfQogCi0gICAgYm9vbCBkZWNv
ZGUoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBzaXplT25seSwg
dW5zaWduZWQgaGFsdEF0RnJhbWUpCisgICAgYm9vbCBkZWNvZGUoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgc2l6ZU9ubHksIHVuc2lnbmVkIGhh
bHRBdEZyYW1lKQogICAgIHsKICAgICAgICAgbV9kZWNvZGluZ1NpemVPbmx5ID0gc2l6ZU9ubHk7
CiAgICAgICAgIFBOR0ltYWdlRGVjb2RlciogZGVjb2RlciA9IHN0YXRpY19jYXN0PFBOR0ltYWdl
RGVjb2Rlcio+KHBuZ19nZXRfcHJvZ3Jlc3NpdmVfcHRyKG1fcG5nKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQ
SW1hZ2VEZWNvZGVyLmNwcAppbmRleCAwMmYxYjA5ZGJjNzY1MTYwMWY5MjJkZGUyOWY4MDVhNjU4
NzFlMmQyLi5iMWJlYzU1ZTc4YzQzNDgwMWMyNTRhY2UwZGY1OTkzMWEzNmI3NGJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgV0VCUEltYWdlRGVj
b2Rlcjo6V0VCUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGUKIAogV0VCUEltYWdlRGVjb2Rlcjo6fldFQlBJbWFnZURlY29kZXIoKSA9IGRl
ZmF1bHQ7CiAKLXZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRh
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewog
ICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZv
aWQgV0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKHNpemVfdCBmcmFtZUluZGV4LCBib29sIGFsbERh
dGFSZWNlaXZlZCkKICAgICAvLyBUaGlzIGNhbiBiZSBleGVjdXRlZCBib3RoIGluIHRoZSBtYWlu
IHRocmVhZCAod2hlbiBub3QgdXNpbmcgYXN5bmMgZGVjb2RpbmcpIG9yIGluIHRoZSBkZWNvZGlu
ZyB0aHJlYWQuCiAgICAgLy8gV2hlbiBleGVjdXRlZCBpbiB0aGUgZGVjb2RpbmcgdGhyZWFkLCBh
IGNhbGwgdG8gc2V0RGF0YSgpIGZyb20gdGhlIG1haW4gdGhyZWFkIG1heSBjaGFuZ2UgdGhlIGRh
dGEKICAgICAvLyB0aGUgV2ViUERlbXV4ZXIgaXMgdXNpbmcsIGxlYXZpbmcgaXQgaW4gYW4gaW5j
b25zaXN0ZW50IHN0YXRlLCBzbyB3ZSBuZWVkIHRvIHByb3RlY3QgdGhlIGRhdGEuCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHByb3RlY3RlZERhdGEobV9kYXRhKTsKKyAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHByb3RlY3RlZERh
dGEobV9kYXRhKTsKICAgICBXZWJQRGF0YSBpbnB1dERhdGEgPSB7IHByb3RlY3RlZERhdGEtPmRh
dGEoKSwgcHJvdGVjdGVkRGF0YS0+c2l6ZSgpIH07CiAgICAgV2ViUERlbXV4U3RhdGUgZGVtdXhl
clN0YXRlOwogICAgIFdlYlBEZW11eGVyKiBkZW11eGVyID0gV2ViUERlbXV4UGFydGlhbCgmaW5w
dXREYXRhLCAmZGVtdXhlclN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKaW5kZXgg
YWYzNjVlOWNmOWM3Y2U5NTM4YjY0YmE3ODliZjAxN2Q0OGY2ZWRlMS4uZGQyOGJjODhkZjVjMGZh
M2MxNTczNzg2OWIyNjA5NzNhYWEwZDIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldFQlBJbWFnZURlY29kZXIo
KTsKIAogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICJ3ZWJwIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZp
bmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCkgZmlu
YWw7CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNp
emVfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3Vu
dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9mcmFtZUNvdW50OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDkwOWU4ZTc2OGFkYjY4YmFiMjg0NDVkMjgyNzM2MGEz
ZjNmYTIyYzMuLmIyMzc3ZmUzNDExZDJhYzQwMTUxM2JmMDlhZThjY2FlNzg2YmQ4ZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC0yMzYsMTQg
KzIzNiwxNCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogCiAjaWYgIVBM
QVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KF9fYnJp
ZGdlIE5TU3RyaW5nICopa1VUVHlwZUZsYXRSVEZEXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUlu
ZGV4LCBrVVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAg
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlRmxhdFJURkQsIG1fcGFzdGVi
b2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5n
ZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2Fz
Q2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRS
VEZEKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlk
Tm90UmVhZFR5cGU7CiAgICAgfQogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19i
cmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUlRGXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4
LCBrVVRUeXBlUlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVJURiwgbV9wYXN0ZWJvYXJkTmFtZSwgY29u
dGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAg
ICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJu
YWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZFJURigqYnVmZmVyKSA/
IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwpA
QCAtMjUxLDcgKzI1MSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAj
ZW5kaWYgLy8gIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogCiAgICAgaWYgKFtzdXBwb3J0ZWRJbWFn
ZVR5cGVzKCkgY29udGFpbnNPYmplY3Q6dHlwZV0pIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRl
eCwgdHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZChpdGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAg
ICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAg
ICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRJbWFnZShidWZmZXIucmVsZWFzZU5vbk51
bGwoKSwgdHlwZSwgaXRlbUluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkgPyBSZWFkZXJS
ZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmlu
ZGV4IDVhZDFmNmZhYzRiNjU0NzUxZDU5MWQzNjM1YzQ2ODUwMzlkNTcyNzUuLjE2YjNkNWQ0NDE1
ZDI1ODUxNWY2NjBhODZhYzZjZWZiZGNkYjY0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtNzksMTAgKzc5LDEw
IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMpCiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCBwYXN0ZWJv
YXJkVHlwZXNdKTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3Jt
UGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8U2hh
cmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5n
JiB0eXBlKQogewogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQ
YXN0ZWJvYXJkVHlwZTp0eXBlXSkKLSAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0zMzgsNyArMzM4LDcgQEAgaW50NjRf
dCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKICAg
ICByZXR1cm4gMDsKIH0KIAotaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZv
clR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJikKK2ludDY0X3QgUGxhdGZvcm1QYXN0
ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBT
dHJpbmcmKQogewogICAgIHJldHVybiAwOwogfQpAQCAtNjA5LDcgKzYwOSw3IEBAIFZlY3RvcjxT
dHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUo
Y29uc3QgU3RyaW5nJiBvCiAjZW5kaWYgLy8gUEFTVEVCT0FSRF9TVVBQT1JUU19QUkVTRU5UQVRJ
T05fU1RZTEVfQU5EX1RFQU1fREFUQQogCiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3Rv
bURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4o
KSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJl
ZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsK
QEAgLTY3Miw3ICs2NzIsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gYnVmZmVyID0gc3Rk
OjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBz
dGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKICAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKICAg
ICB9KTsKIApAQCAtNzQ2LDcgKzc0Niw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVi
b2FyZDo6YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogICAgIHJl
dHVybiBzdHJpbmdzOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBl
KSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVm
ZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmICgo
TlNJbnRlZ2VyKWluZGV4IDwgMCB8fCAoTlNJbnRlZ2VyKWluZGV4ID49IFttX3Bhc3RlYm9hcmQg
bnVtYmVyT2ZJdGVtc10pCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzU3LDcgKzc1Nyw3
IEBAIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJl
YWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zCiAKICAgICBpZiAoIVtwYXN0ZWJvYXJkSXRlbSBj
b3VudF0pCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOworICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRl
eDowXSk7CiB9CiAKIFN0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGZkNTdkMjIyYzJkNzQzMDE2MTE2MmMwZTJi
ODhlOWYxY2MzMTk5MTQuLjBkMjU0OThiODZiZWYxODVkMzc2OWQ1YTViYzBiYzJmNzMxYzcwZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0z
MzAsNyArMzMwLDcgQEAgc3RhdGljIFN0cmluZyByZWFkU3RyaW5nQXRQcmVmZXJyZWRJdGVtSW5k
ZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHMKICAgICByZXR1cm4gc3RyYXRl
Z3kuc3RyaW5nRm9yVHlwZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CiB9CiAKLXN0
YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVk
SXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1J
bmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmlu
ZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0
ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKGl0ZW1JbmRleCkKICAgICAgICAgcmV0
dXJuIHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCgqaXRlbUluZGV4LCB0eXBlLCBw
YXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCAxYjkxOTE0ZTNmNzI3YThlZjY4
ZjllMWE2YWUxNTUzODZkOWZiYTJjLi5jM2I0ZDJkOTYyMTc0NzFjNzM1ZTI0ZmU3YTVmOWQ5MjM3
ZGY0NzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1Q
YXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bVBhc3RlYm9hcmRNYWMubW0KQEAgLTY4LDEyICs2OCwxMiBAQCB2b2lkIFBsYXRmb3JtUGFzdGVi
b2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWFrZVZl
Y3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgdHlwZXNdKTsKIH0KIAotUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAg
ICAgTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpwYXN0ZWJvYXJkVHlw
ZV07CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgp
KTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5XSku
Z2V0KCkpOwogfQogCiBpbnQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpudW1iZXJPZkZpbGVzKCkgY29u
c3QKQEAgLTIxOCw3ICsyMTgsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgbwogewogICAgIExp
c3RIYXNoU2V0PFN0cmluZz4gZG9tUGFzdGVib2FyZFR5cGVzOwogICAgIGlmIChOU0RhdGEgKnNl
cmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpAKFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEg
PSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmln
aW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3Jk
ZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBl
KTsKQEAgLTI2Myw4ICsyNjMsOCBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUo
Y29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgICAgIGlmIChwbGF0Zm9ybVR5
cGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAg
ICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZm
ZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQor
ICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1E
YXRhID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZl
ciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtt
X3Bhc3RlYm9hcmQgc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5
cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihz
dHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3Ry
aW5nPihzdHJpbmdPckJ1ZmZlcik7CkBAIC0zNDEsNyArMzQxLDcgQEAgaW50NjRfdCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMpCiAgICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOmNyZWF0ZU5TQXJyYXko
cGFzdGVib2FyZFR5cGVzKS5nZXQoKSBvd25lcjpuaWxdOwogfQogCi1pbnQ2NF90IFBsYXRmb3Jt
UGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRC
dWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAoIWNhbldyaXRlUGFzdGVib2FyZFR5cGUocGFz
dGVib2FyZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTQ0Niw3ICs0NDYsNyBAQCBzdGF0
aWMgU3RyaW5nIHdlYlNhZmVNSU1FVHlwZUZvck1vZGVyblBhc3RlYm9hcmRUeXBlKE5TUGFzdGVi
b2FyZFR5cGUgcGxhdGZvcm1UeQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5
cGUpIGNvbnN0CiB7CiAgICAgTlNQYXN0ZWJvYXJkSXRlbSAqaXRlbSA9IGl0ZW1BdEluZGV4KGlu
ZGV4KTsKICAgICBpZiAoIWl0ZW0pCkBAIC00NTQsNyArNDU0LDcgQEAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5k
ZXgsIGNvbnMKIAogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbaXRlbSBkYXRhRm9yVHlwZTp0eXBl
XSkgewogICAgICAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoZGF0YS5jb3B5KTsKLSAgICAgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOworICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKICAgICB9CiAK
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUwNCw4ICs1MDQsOCBAQCBzdGF0aWMgUmV0YWluUHRy
PE5TUGFzdGVib2FyZEl0ZW0+IGNyZWF0ZVBhc3RlYm9hcmRJdGVtKGNvbnN0IFBhc3RlYm9hcmRD
dXN0b21EYQogICAgICAgICBpZiAoIXBsYXRmb3JtVHlwZSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4o
c3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBz
dGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKKyAgICAgICAg
ICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KSkKICAgICAgICAgICAgICAgICBbaXRlbSBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JU
eXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcg
PSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUu
aAppbmRleCA2ODEzZDVkYTdkY2IwZmMyNTlmMWJkMWVkMGE1NGMxYTFhOWZkOWNmLi43OTY1NTRm
NGM5NzY0NTE0MDFlMWExMjM3NDY4NzA0MGIyNGIxY2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZS5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIE1lZGlhU2FtcGxlOwogY2xhc3MgTWVkaWFTdHJl
YW1Qcml2YXRlOwogY2xhc3MgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU7CiBjbGFzcyBQbGF0Zm9y
bUF1ZGlvRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIHN0cnVjdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnM7CiAKQEAgLTU5LDcg
KzU5LDcgQEAgcHVibGljOgogICAgIH07CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEF1ZGlv
VmlkZW9TZWxlY3RlZFRyYWNrcyBzZWxlY3RUcmFja3MoTWVkaWFTdHJlYW1Qcml2YXRlJik7CiAK
LSAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT47Cisg
ICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3Vi
bGUpPjsKICAgICB2aXJ0dWFsIHZvaWQgZmV0Y2hEYXRhKEZldGNoRGF0YUNhbGxiYWNrJiYpID0g
MDsKICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCA9IDA7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGVNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcAppbmRleCBjMjVkZjkxNTc0YTY1YmM0MWJk
YjcwNjc4ZGM0NzcyNDgzNmRkMTQ1Li40OThkNGVlMTM0MGM0Yjk0MDAxYjYwYzM0NDc5YjdmNzJk
NWM4ZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCkBAIC05Myw3ICs5
Myw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpnZW5lcmF0ZU1vY2tDb3VudGVy
U3RyaW5nKCkKIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6OmZldGNoRGF0YShGZXRj
aERhdGFDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
OwogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYnVmZmVyTG9jayB9OwogICAgICAg
ICBWZWN0b3I8dWludDhfdD4gdmFsdWUgeyBtX2J1ZmZlci5jaGFyYWN0ZXJzOCgpLCBtX2J1ZmZl
ci5sZW5ndGgoKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EuaAppbmRleCA1ZWQ5OGM0MTMwYjliZTAzNTIzN2JmMmVmNTA2M2Y2YjJlY2Rj
MDU1Li45YzJjNzk3YjgxOTUxMmQ4ZmQ1NzkwMTVkYzNiNmU0MDVlM2JjNjBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtNzAs
NyArNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihNZWRp
YVNhbXBsZSYpOwogICAgIHZvaWQgYXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZv
cm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgY29uc3QgV1RGOjpN
ZWRpYVRpbWUmLCBzaXplX3QpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZygpOwotICAgIHZvaWQg
ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwg
ZG91YmxlKT4mJik7CisgICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4mJik7CiAKICAgICB2b2lk
IHBhdXNlKCk7CiAgICAgdm9pZCByZXN1bWUoKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBmaW5pc2hlZEZsdXNoaW5nU2FtcGxlcygpOwogICAgIHZvaWQgY29tcGxl
dGVGZXRjaERhdGEoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogCiAgICAgYm9vbCBt
X2hhc0F1ZGlvIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmlkZW8geyBmYWxzZSB9OwpAQCAt
MTE4LDcgKzExOCw3IEBAIHByaXZhdGU6CiAKICAgICBMb2NrIG1fZGF0YUxvY2s7CiAgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsK
LSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJs
ZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4gbV9mZXRjaERh
dGFDb21wbGV0aW9uSGFuZGxlcjsKIAogICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9u
UmVmPiBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gbV9hdWRpb0NvbXByZXNzb3I7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KaW5kZXggYzcxYWE4
NGFmYzFlYzEwMDNkOWM3NGI1ZDdmMTNmZWU0Mzc2NWUzYS4uODQ4NDEwMGVhYzVlMTE1ZTliMGNm
MDEyMGJhYmY3OGZiMWExMjc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtNDkzLDcgKzQ5Myw3IEBAIHZvaWQgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0b3BSZWNvcmRpbmcoKQogICAgIH0pOwogfQogCi12b2lk
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwogCkBAIC01MzgsNyArNTM4LDcgQEAgdm9pZCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3Qgc2l6ZSkKICAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEoKQor
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Ojp0YWtlRGF0YSgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKICAgICBy
ZXR1cm4gbV9kYXRhLnRha2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRGF0YVVSTERlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRGF0YVVSTERlY29kZXIuaAppbmRleCBhOWIyOWQ1OWU5YWEzYjQ2NTU0MTViZDhiZWYwOTg0
YzU0NGI3M2YwLi5jZGVlNjAzNTIzY2Q2Njk0NWY0MjhmNjk0Nzg5NjBmNmZkNzRjNzdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCkBA
IC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIERhdGFVUkxE
ZWNvZGVyIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNw
cAppbmRleCBiMTc0OTc0NDU0YmY3Mzk4OTA5Y2M4YmVhNGQwYTNiOTU3OWE3ODgwLi5hMzdhMGQ4
NzRmNzJiZjkxYmQ1MmMzYWM2YjU4NWQzMzNmMGZjYTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtNDEyLDEzICs0MTIsMTMgQEAgdWludDY0
X3QgRm9ybURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiAqbV9sZW5ndGhJ
bkJ5dGVzOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6OmFz
U2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1No
YXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogbV9lbGVtZW50
cykgewogICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+
PihlbGVtZW50LmRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKKyAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKIH0KIAogVVJMIEZvcm1EYXRh
Ojphc0Jsb2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5oCmluZGV4IDQ2ZTI3MzUzM2MwZmY0NDE2NDA2ZDI0NTBlZTIwODgxYTU1ZmNiYWUuLjZl
Y2Q3ZjFiMDczYzM4MzM0NDM5OTUxNzQ1NTg5NDEwYWI4YTYxMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIGNsYXNzIERPTUZvcm1EYXRhOwog
Y2xhc3MgRmlsZTsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRC
dWZmZXI7CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAKIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewpA
QCAtMjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8Rm9ybURhdGFFbGVt
ZW50PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9CiAgICAgY29uc3Qg
VmVjdG9yPGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0KIAot
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhc1NoYXJl
ZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBib29sIGFsd2F5c1N0cmVhbSgpIGNvbnN0
IHsgcmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBzZXRBbHdheXNTdHJlYW0oYm9v
bCBhbHdheXNTdHJlYW0pIHsgbV9hbHdheXNTdHJlYW0gPSBhbHdheXNTdHJlYW07IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCBm
YWZkZmU4N2M4MzdlNjE1N2QyZjEzZTlhN2NhMDA5NjlkNTBiMWM3Li40YmViY2I1MDk4ZDE1YzI5
NjZlZDhjN2VlMTM2YWUzYTJhZTRhMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCkBAIC04NCw3ICs4NCw3IEBAIGNsYXNzIE5ldHdv
cmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VR
dWV1ZTsKIGNsYXNzIFRpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IDgxOGUxODE4NDUxOTY3
YWI1MmQxOThkOTU4N2IyMGExNDQ0NzhkZDkuLmJhOGZkNGZmNGYxZTQxYzlhZDRmYTc0YTQyYmU0
ZTJiZDExYWE4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zNiw3ICszNiw3IEBAIFJlc291cmNl
SGFuZGxlQ2xpZW50OjpSZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogUmVzb3Vy
Y2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAotdm9p
ZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3Ro
KQordm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhh
bmRsZSogaGFuZGxlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5n
dGgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5oCmluZGV4IGI2MzM3ZDU2Y2U4Y2Q5YmVmZjlkZmJlMTEzNjYyYmM3
NzU2YjY1MzcuLmM0ZjA1NDg1ZjI4NzBiMTE2ZGE3Yzc2MGQzYzBmY2U5NmVjMmI0YTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGVudW0gQ2FjaGVTdG9yYWdlUG9saWN5IHsKICAgICBTdG9yYWdlQWxsb3dlZCwKQEAgLTY2
LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShSZXNvdXJj
ZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25n
IGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGlu
dCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIHsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBSZXNvdXJjZUVycm9yJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcApp
bmRleCA4OGRlZGZhNDVjM2Y0YzQzYTM4MTUyODBkYTVhNDFlMjY5NzViNzFmLi5mNzAwMzU1ZDU2
OGIwNDJhNmFkZjEwNzBkYmI4MzgxOTI1MzY5NGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZS5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKENGRAog
ICAgICAgICAKICAgICAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKGhh
bmRsZT0lcCkgKCVzKSIsIGhhbmRsZSwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNl
aXZlQnVmZmVyKGhhbmRsZSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0
KCkpLCBvcmlnaW5hbExlbmd0aCk7CisgICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2Vp
dmVCdWZmZXIoaGFuZGxlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSwgb3JpZ2lu
YWxMZW5ndGgpOwogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IGUyYzM1ZWQzMTBiMzExMDY1MTE2YzhmYzg2YzJl
NDAyOWE4MmM5YTQuLjAwOGUyMjZmZjkxOTAwNGI0NTE0OGEyNDcyNjExNjE1MDk4OTYyNzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNw
b25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTI0Myw3ICsyNDMsNyBAQCBwcml2YXRl
OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdm9pZCBkYXRhUmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFs
CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBmaW5hbAogICAgIHsKICAgICAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKCFtX2dlbmVyYXRvcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLmgKaW5kZXggNDA0ODg1YWU2Mzc2ZmNlNjgwNDBkMmEwNWMwMGJlYzQ3ZmUxNmFhOC4u
Y2U0YzI1NDVjZGUwZjJmNDZhYzMzOGY5NmM0OTA4OGViNDVkMDkyNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBjbGFzcyBXZWJDb3Jl
TlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ7CiBlbnVtIGNsYXNzIFNob3VsZENvbnRpbnVlUG9s
aWN5Q2hlY2sgOiBib29sOwpAQCAtMTU4LDcgKzE1OCw3IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRl
cmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsKIC0gKHZvaWQpcmVzb3VyY2U6
KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2VudEJ5
dGVzOih1bnNpZ25lZCBsb25nIGxvbmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2VudDoodW5z
aWduZWQgbG9uZyBsb25nKXRvdGFsQnl0ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVzb3VyY2U6KG51
bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRS
ZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgY29tcGxl
dGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGlu
dWVQb2xpY3lDaGVjayk+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtIChCT09MKXJlc291cmNlOihu
dWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENh
Y2hlUmVzcG9uc2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlOwot
LSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNl
KilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpZGF0
YTsKKy0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNv
dXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJilkYXRhOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSByZXF1ZXN0OihXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0g
KHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSop
cmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJillcnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhFcnJvcjoo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
bW0KaW5kZXggZTU5MjI3ZTM4YWEwNjEyZDkyN2M4MjU5ZDAxNDdkYTRiZjZhNzY5Yi4uOGM4OWQ5
Mzg2NTc5MzNhMWRhMjkwMzE5OTE1ODRjNGRiMmZhYTlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lv
bi5tbQpAQCAtNjA4LDcgKzYwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4m
Jikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRh
dGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWdu
ZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAg
IHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC02NTIsNyArNjUy
LDcgQEAgYm9vbCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnNob3VsZENhY2hl
UmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmMKICAgICByZXR1cm4gW21fdGFzayByZXNvdXJj
ZTomcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTpyZXNwb25zZV07CiB9CiAKLXZvaWQgV2Vi
Q29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiByZXNvdXJjZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdl
YkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXNrTG9jayB9OwogICAgIGlmICghbV90YXNr
KQpAQCAtOTE1LDcgKzkxNSw3IEBAIC0gKEJPT0wpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3QgUmVzCiAgICAgcmV0dXJu
IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFJhbmdlKS5p
c0VtcHR5KCk7CiB9CiAKLS0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSop
cmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKWRhdGEK
Ky0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2
ZWREYXRhOihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJilkYXRhCiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNv
dXJjZSk7CiAgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2Vs
ZiA9IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAK
aW5kZXggYzM2ZTFmODg3NjQzMDQ2MGNlNzUwYTNiOGM2NThjNzM0ZWNiMTUwOC4uMzQ5NDQ1OTI1
NGFjOTNmYzE5Y2IxMjE1MGE2MWJjMmJjZWQwMmQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKQEAgLTEwMyw3ICsx
MDMsNyBAQCB2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVx
dWVzdCYgcmVxdWVzdCwgQ3VybFJlc3BvbnNlJiYgcgogfQogCiAKLXZvaWQgQ3VybERvd25sb2Fk
OjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQordm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1
ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaAppbmRleCBhM2FhMGNmNWZjZDI5NTViYjdiMTZiMTFh
MWE4MWNhNzRhZTYxYzhkLi5jZGU0NDQ1Nzc1Zjc0NDIzMzA1MzBiNjViMTM1N2JhNmJmZDliYjgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERv
d25sb2FkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxE
b3dubG9hZC5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgUmVmPEN1cmxSZXF1ZXN0
PiBjcmVhdGVDdXJsUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGN1cmxEaWRT
ZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBs
b25nKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJl
cXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2
ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAg
IHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJl
cXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlk
RmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJ
bmZvJiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggZDYzNWY3OWNk
MWVjNjIxYWRmZWI2ZGNjNDkzNmVlZWY1MGNmOWFkYy4uMDkwZDAzOWJhNDVkZTEwMjhlZGY3Njg0
YzZkN2QyZjI5NmUzYTM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMTE5LDcgKzEx
OSw3IEBAIEN1cmxNdWx0aXBhcnRIYW5kbGU6OkN1cmxNdWx0aXBhcnRIYW5kbGUoQ3VybE11bHRp
cGFydEhhbmRsZUNsaWVudCYgY2xpZW50LCBjb25zCiAKIH0KIAotdm9pZCBDdXJsTXVsdGlwYXJ0
SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQg
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpFbmQpCiAgICAg
ICAgIHJldHVybjsgLy8gVGhlIGhhbmRsZXIgaXMgY2xvc2VkIGRvd24gc28gaWdub3JlIGV2ZXJ5
dGhpbmcuCkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRD
b21wbGV0ZSgpCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkgewogICAgICAgICAvLyBJ
dCBzZWVtcyB3ZSBhcmUgc3RpbGwgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3NpbmcuCiAg
ICAgICAgIC8vIFB1c2ggb3V0IHRoZSByZW1haW5pbmcgZGF0YS4KLSAgICAgICAgbV9jbGllbnQu
ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZy
b21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX2J1ZmZlcikpKTsKICAg
ICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmQ7CiAgICAgfQogCkBAIC0yMzQsMTMgKzIzNCwxMyBA
QCBib29sIEN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250ZW50KCkKIAogICAgICAgICBp
ZiAoIWNoZWNrRm9yQm91bmRhcnkoYm91bmRhcnlTdGFydCwgbGFzdFBhcnRpYWxNYXRjaCkgJiYg
Ym91bmRhcnlTdGFydCA9PSBub3RGb3VuZCkgewogICAgICAgICAgICAgLy8gRGlkIG5vdCBmaW5k
IHRoZSBib3VuZGFyeSBzdGFydCwgYWxsIGRhdGEgdXAgdG8gdGhlIGxhc3RQYXJ0aWFsTWF0Y2gg
aXMgb2suCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQo
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRp
YWxNYXRjaCkpOworICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlw
YXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRj
aCkpOwogICAgICAgICAgICAgbV9idWZmZXIucmVtb3ZlKDAsIGxhc3RQYXJ0aWFsTWF0Y2gpOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlcmUg
d2FzIGEgYm91bmRhcnkgc3RhcnQgKG9yIGVuZCB3ZSdsbCBjaGVjayB0aGF0IGxhdGVyKSwgcHVz
aCBvdXQgcGFydCBvZiB0aGUgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFG
cm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRh
KCksIGJvdW5kYXJ5U3RhcnQpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9t
TXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRhcnlT
dGFydCkpOwogICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgYm91bmRhcnlTdGFydCArIG1fYm91
bmRhcnkubGVuZ3RoKCkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZEJvdW5kYXJ5Owog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsTXVsdGlwYXJ0SGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCmluZGV4IDVjMDhiY2M1ZWIzZTRiYmNjMDI5YjQ3Njc4
NjhmNDNlMmY5NWMzNDEuLjlhMWExYmJkMTkzOGExNGY2OWZjY2VlM2YwZjg5Yjk3YTRhMjE4NzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVs
dGlwYXJ0SGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxNdWx0aXBhcnRIYW5kbGUuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQ7CiBjbGFzcyBDdXJsUmVzcG9u
c2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
CiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEN1cmxNdWx0aXBhcnRIYW5kbGUoQ3Vy
bE11bHRpcGFydEhhbmRsZUNsaWVudCYsIGNvbnN0IFN0cmluZyYpOwogICAgIH5DdXJsTXVsdGlw
YXJ0SGFuZGxlKCkgeyB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpOwogICAgIHZvaWQgZGlkQ29tcGxldGUoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRp
cGFydEhhbmRsZUNsaWVudC5oCmluZGV4IGZkMTNmZDM4MTMxNDNjYjI2NTliOGZkMWRiMjQ0NDc2
NWU5OGE1ODAuLmM4MTM4ODZhOGQ1YzVmYTZjMTJkMTQxMzMxOTEwMWFmMjUwMmEyYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0
SGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaApAQCAtMjgsMTIgKzI4LDEyIEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5k
bGVDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSGVhZGVyRnJv
bU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB+Q3VybE11bHRpcGFydEhh
bmRsZUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggYWNkODhlMWIwMjliOWIxZTdmMTRiN2QxNDAz
MjkyNmI5MzE3NWEwZi4uZDgyZGQzYzEwYWM2NDcxMzU5OTFmZDdhZTY2OTdlOWQ4ZTMxM2U4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3QuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNl
aXZlSGVhZGVyKFN0cmluZyYmIGhlYWRlcikKIAogLy8gY2FsbGVkIHdpdGggZGF0YSBhZnRlciBh
bGwgaGVhZGVycyBoYXZlIGJlZW4gcHJvY2Vzc2VkIHZpYSBoZWFkZXJDYWxsYmFjawogCi1zaXpl
X3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQorc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6
ZGlkUmVjZWl2ZUhlYWRlckZyb21NdWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhlYWRl
cnMpCiAgICAgaW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBBY3Rpb246Ok5vbmUp
OwogfQogCi12b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0
YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewog
ICAgIGlmIChpc0NvbXBsZXRlZE9yQ2FuY2VsbGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTc3
Nyw3ICs3NzcsNyBAQCBjb25zdCBTdHJpbmcmIEN1cmxSZXF1ZXN0OjpnZXREb3dubG9hZGVkRmls
ZVBhdGgoKQogICAgIHJldHVybiBtX2Rvd25sb2FkRmlsZVBhdGg7CiB9CiAKLXZvaWQgQ3VybFJl
cXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQordm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVu
YWJsZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHsKICAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZG93bmxvYWRNdXRleCB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAppbmRleCA2YmQ4YTZi
ZmJhMzc1MmNlZGRkYmM1MDA5ZWFlODNjNGYwZWVkNjQxLi4zYzdjZGQ4ODNlYjYyYmZlOTJjZjA0
NDVlZDI5YmQyNmVjZTNlOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBDdXJsUmVxdWVzdENsaWVudDsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmlj
czsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3luY2hyb25vdXNMb2FkZXJNZXNzYWdlUXVldWU7
CiAKIGNsYXNzIEN1cmxSZXF1ZXN0IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEN1cmxS
ZXF1ZXN0PiwgcHVibGljIEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50LCBwdWJsaWMgQ3VybE11
bHRpcGFydEhhbmRsZUNsaWVudCB7CkBAIC0xMjIsOSArMTIyLDkgQEAgcHJpdmF0ZToKICAgICBD
VVJMKiBzZXR1cFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IHdpbGxTZW5kRGF0YShj
aGFyKiwgc2l6ZV90LCBzaXplX3QpOwogICAgIHNpemVfdCBkaWRSZWNlaXZlSGVhZGVyKFN0cmlu
ZyYmKTsKLSAgICBzaXplX3QgZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7Cisg
ICAgc2l6ZV90IGRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJp
bmc+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVm
PFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21N
dWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkQ29tcGxldGVUcmFuc2ZlcihDVVJMY29kZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRD
YW5jZWxUcmFuc2ZlcigpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluYWxpemVUcmFuc2ZlcigpOwpA
QCAtMTUzLDcgKzE1Myw3IEBAIHByaXZhdGU6CiAgICAgTmV0d29ya0xvYWRNZXRyaWNzIG5ldHdv
cmtMb2FkTWV0cmljcygpOwogCiAgICAgLy8gRG93bmxvYWQKLSAgICB2b2lkIHdyaXRlRGF0YVRv
RG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgd3Jp
dGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpOwogICAgIHZvaWQgY2xvc2VEb3dubG9hZEZpbGUoKTsKICAgICB2b2lkIGNsZWFudXBEb3du
bG9hZEZpbGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAppbmRleCAwOGM4NmM3ZDQ2ODRiYTZmNzhkNjE2
YjY4ZDA2OTA0YzM3YTk2Njc3Li4zNDc5ODMyZjU3NmQ0MTI4YWZhNTFjODE0MjRjY2ZkNzQxZGY2
YWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3RDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3RDbGllbnQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBDdXJsUmVxdWVz
dDsKIGNsYXNzIEN1cmxSZXNwb25zZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNz
IFJlc291cmNlRXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsUmVxdWVzdENsaWVudCB7CiBwdWJsaWM6CkBAIC00Myw3
ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3Vy
bFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxv
bmcgdG90YWxCeXRlc1RvQmVTZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNl
aXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJl
cXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYs
IFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYpID0gMDsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCBlZDA1ZGU3YWVlOTMyMWU5ZmQwMzgxZmM3
M2RjZTI3OTY3ZGZjZDgxLi4zMDVkNGU1YzlmYzI3MDc3NTc4N2IwZjlhOTE5NzljMDg4ODlhOGE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0Miw3ICsxNDIs
NyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3Bv
bnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQogICAgIH0pOwogfQogCi12b2lkIEN1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0
ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAppbmRleCA2ZDU1ODY0NDUyZmQ0NmVlNzgwMGU5
MzEyM2IxMjhiZGM2NGNlNDg3Li5kYWYwYTU5YTRlNTg2ZDcxMTRhYmI0ZTVlZjljNTRmNmE4YmVm
YzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaApAQCAtNTMsNyArNTMsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVuc2ln
bmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9C
ZVNlbnQpIGZpbmFsOwogICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVz
dCYsIEN1cmxSZXNwb25zZSYmKSBmaW5hbDsKLSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVy
KEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBjdXJs
RGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdv
cmtMb2FkTWV0cmljcyYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1
cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgZmluYWw7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCBiYzRkYWFmYmYyMWExNWMwZTZkZDFh
Y2Q0NjIyYWZhNTZiN2I4ZDVkLi4xZjRhMTkzMTMzMTJjNWRkNmE0OGFkNTMzOWRmZDJjM2I1ZGVj
MjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0zMSwxMiArMzEsMTIgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50IDog
cHVibGljIFJlZkNvdW50ZWQ8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gewogcHVibGljOgog
ICAgIHZpcnR1YWwgfkxlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWwoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXNz
d29yZEVudHJ5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAppbmRleCAzY2EyMDgyMmMw
MzE4YTU0OTExMTg2NzVkMjdiODc4ZGQxODNmZTliLi4wZmI0NTAwNzJmYTEwNDIyZjZhOWZlNDMy
YzM4MWQzZDE5NjEzZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3Np
eC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9z
aXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQor
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY4LDcgKzY4LDcgQEAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZShjb24KICAgICBpZiAodG90YWxCeXRlc1JlYWQgIT0gYnl0ZXNUb1JlYWQpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggYzQ2MGY1ZmE0MGRk
YTIxZGViNDYzODNhOTBiZWE2NjUzYjMwYzVmMC4uNDUzNjgxYmRhYjJlNGEwNWEyMWZjNjhhOTQz
NzAwZTA2Yzk5N2ExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
c3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcApAQCAtMzU2LDcgKzM1Niw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3Ry
aW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogc3RydWN0IFBhc3RlYm9hcmRG
aWxlQ291bnRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICB2b2lkIHJlYWRG
aWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbCB7ICsrY291bnQ7IH0KLSAgICB2b2lkIHJlYWRC
dWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikg
ZmluYWwgeyArK2NvdW50OyB9CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbCB7ICsrY291
bnQ7IH0KIAogICAgIHVuc2lnbmVkIGNvdW50IHsgMCB9OwogfTsKQEAgLTk3NCw3ICs5NzQsNyBA
QCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIG1lbU9iajsKIH0KIAotc3RhdGlj
IEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEp
CitzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgSEdMT0JBTCBtZW1PYmogPSBHbG9iYWxBbGxvYyhH
UFRSLCBkYXRhLT5zaXplKCkpOwogICAgIGlmICghbWVtT2JqKSAKQEAgLTk5NCw3ICs5OTQsNyBA
QCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZl
ciogZGF0YSkKICAgICByZXR1cm4gbWVtT2JqOwogfQogCi1zdGF0aWMgSEdMT0JBTCBjcmVhdGVH
bG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJl
ZEJ1ZmZlciogZGF0YSkKK3N0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChj
b25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSkKIHsKICAgICBpZiAoZmlsZU5hbWUuaXNFbXB0eSgpIHx8ICFkYXRhKQogICAgICAgICBy
ZXR1cm4gMDsKQEAgLTEwNzEsNyArMTA3MSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFn
ZVRvRGF0YU9iamVjdChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCkKICAgICBpZiAo
IWNhY2hlZEltYWdlIHx8ICFjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihlbGVtZW50LnJl
bmRlcmVyKCkpIHx8ICFjYWNoZWRJbWFnZS0+aXNMb2FkZWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgU2hhcmVkQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJl
bmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSktPmRhdGEoKTsKKyAgICBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVsZW1l
bnQucmVuZGVyZXIoKSktPmRhdGEoKTsKICAgICBpZiAoIWltYWdlQnVmZmVyIHx8ICFpbWFnZUJ1
ZmZlci0+c2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAKaW5kZXggMDczOWRkZjQ0YmYwM2M1ZjE5OTFl
ZTI2NmJkYTFkNWQ1ZDczOGQxNy4uODljZjZhMGJiNjU4NzA4MzQ1NDE0NjA2NjdjNTE1YThhYWNm
ODcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZl
cldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldp
bi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJv
bVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtNDUsNyArNDUsNyBAQCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbgogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gcmVzdWx0OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc3VsdDsKICAgICBEV09SRCBi
eXRlc1RvUmVhZCA9IEdldEZpbGVTaXplKGZpbGVIYW5kbGUsIDApOwogICAgIERXT1JEIGxhc3RF
cnJvciA9IEdldExhc3RFcnJvcigpOwogCkBAIC01Myw3ICs1Myw3IEBAIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoY29uCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoYnl0ZXNUb1JlYWQpOwog
ICAgICAgICBEV09SRCBieXRlc1JlYWQ7CiAgICAgICAgIGlmIChSZWFkRmlsZShmaWxlSGFuZGxl
LCBidWZmZXIuZGF0YSgpLCBieXRlc1RvUmVhZCwgJmJ5dGVzUmVhZCwgMCkgJiYgYnl0ZXNUb1Jl
YWQgPT0gYnl0ZXNSZWFkKQotICAgICAgICAgICAgcmVzdWx0ID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICByZXN1bHQgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMs
IEdldExhc3RFcnJvcigpID0gJXUiLCBmaWxlUGF0aC5hc2NpaSgpLmRhdGEoKSwgR2V0TGFzdEVy
cm9yKCkpOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmNwcAppbmRleCA2NTI3MjUwZTVhYmNkZGJhMDAwMmIwZmJjZTY1NjVkMmY1ODY1ZDA2Li44NGZh
MjljZTFmMzAwZmUyOTBiMDQxNDY0OGYwZjcyOTBhN2NiZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtNjMsNyArNjMsNyBAQCBib29sIE1vY2tDRE1G
YWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKICAgICBy
ZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShrZXlTeXN0ZW0sICJvcmcud2Via2l0Lm1vY2si
KTsKIH0KIAotdm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25z
dCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYga2V5cykKK3ZvaWQgTW9j
a0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVj
dG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBrZXlzKQogewogICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9zZXNzaW9ucy5hZGQoaWQsIFdURk1vdmUoa2V5cykpOwogICAgIGlmIChhZGRS
ZXN1bHQuaXNOZXdFbnRyeSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6
YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJl
ZEIKICAgICAgICAgdmFsdWUuYXBwZW5kKFdURk1vdmUoa2V5KSk7CiB9CiAKLVZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJ
RChjb25zdCBTdHJpbmcmIGlkKQorVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4g
TW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcm
IGlkKQogewogICAgIGF1dG8gaXQgPSBtX3Nlc3Npb25zLmZpbmQoaWQpOwogICAgIGlmIChpdCA9
PSBtX3Nlc3Npb25zLmVuZCgpKQpAQCAtODMsNyArODMsNyBAQCBWZWN0b3I8UmVmPFNoYXJlZEJ1
ZmZlcj4+IE1vY2tDRE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3Qg
U3RyaQogICAgIHJldHVybiBXVEZNb3ZlKGl0LT52YWx1ZSk7CiB9CiAKLWNvbnN0IFZlY3RvcjxS
ZWY8U2hhcmVkQnVmZmVyPj4qIE1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRChj
b25zdCBTdHJpbmcmIGlkKSBjb25zdAorY29uc3QgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4qIE1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJp
bmcmIGlkKSBjb25zdAogewogICAgIGF1dG8gaXQgPSBtX3Nlc3Npb25zLmZpbmQoaWQpOwogICAg
IGlmIChpdCA9PSBtX3Nlc3Npb25zLmVuZCgpKQpAQCAtMjAyLDcgKzIwMiw3IEBAIGJvb2wgTW9j
a0NETTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZmFjdG9yeSAmJiBt
X2ZhY3RvcnktPnN1cHBvcnRzU2Vzc2lvbnMoKTsKIH0KIAotYm9vbCBNb2NrQ0RNOjpzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVm
ZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGluaXREYXRhKSBjb25zdAogewogICAgIGlmICghc3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLmNv
bnRhaW5zKGluaXREYXRhVHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMSw3ICsy
MTEsNyBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZQogICAgIHJldHVybiB0cnVlOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
TW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBy
ZXNwb25zZSkgY29uc3QKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250aWd1
b3VzKCk7CiAgICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRhKCksIHJl
c3BvbnNlLnNpemUoKSkpCkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6
OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3Vy
YXQKICAgICBjYWxsYmFjayhpbml0aWFsaXplKCkpOwogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5j
ZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwg
U3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2Vy
dmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUs
IFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNh
dGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNlcnRp
ZmljYXRlLT5zaXplKCkpOwogCkBAIC0yOTgsNyArMjk4LDcgQEAgTW9ja0NETUluc3RhbmNlU2Vz
c2lvbjo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRyPE1vY2tDRE1JbnN0YW5jZT4mJiBp
bnN0YW4KIHsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3ZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNr
KQogewogICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFu
Y2UtPmZhY3RvcnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7CkBAIC0zMjQsNyAr
MzI0LDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVMKICAgICBjYWxsYmFjayhTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShsaWNlbnNlLmRhdGEoKSwgbGljZW5zZS5sZW5ndGgoKSksIHNlc3Npb25JRCwg
ZmFsc2UsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFu
Y2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNl
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNr
JiYgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7
CiAgICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2luc3RhbmNlID8gbV9pbnN0YW5jZS0+
ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3RvcnkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NETUZhY3RvcnkuaAppbmRleCBmNWNkYTUwNWNmMmEzM2MxMDVmMDI1Yzk3Yzkz
NTBhOTY4Njk4ZTFlLi5kOTZjMTU2ZWU0ZDI3OTFiOGIwOTk4ZGFmOTQwZWM3NTM3ODA3YmMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCkBAIC03Nyw5ICs3Nyw5IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgaGFzU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSB7
IHJldHVybiBtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKTsgfQogICAgIHZvaWQgcmVtb3ZlU2Vzc2lv
bldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSB7IG1fc2Vzc2lvbnMucmVtb3ZlKGlkKTsgfQotICAg
IHZvaWQgYWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+JiYpOwotICAgIGNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4q
IGtleXNGb3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0OwotICAgIFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4gcmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0
cmluZyYgaWQpOworICAgIHZvaWQgYWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcm
IGlkLCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmKTsKKyAgICBjb25zdCBW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pioga2V5c0ZvclNlc3Npb25XaXRoSUQo
Y29uc3QgU3RyaW5nJiBpZCkgY29uc3Q7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4gcmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpOwog
CiBwcml2YXRlOgogICAgIE1vY2tDRE1GYWN0b3J5KCk7CkBAIC05Niw3ICs5Niw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2NhbkNyZWF0ZUluc3RhbmNlcyB7IHRydWUgfTsKICAgICBib29sIG1f
c3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMgeyB0cnVlIH07CiAgICAgYm9vbCBtX3N1cHBvcnRz
U2Vzc2lvbnMgeyB0cnVlIH07Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4+IG1fc2Vzc2lvbnM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBtX3Nlc3Npb25zOwogfTsKIAogY2xhc3MgTW9ja0NETSA6
IHB1YmxpYyBDRE1Qcml2YXRlIHsKQEAgLTEyMSw4ICsxMjEsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2Vy
dGlmaWNhdGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29u
c3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBj
b25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAg
IGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBj
b25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQo
Y29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKICAgICBXZWFrUHRyPE1vY2tDRE1GYWN0b3J5
PiBtX2ZhY3Rvcnk7CkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJ
bXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gSW1wbGVtZW50YXRpb25UeXBlOjpNb2NrOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENv
bmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0
aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNr
JiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlm
aWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7
CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8
Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CkBAIC0xNTQsOCArMTU0
LDggQEAgcHVibGljOgogICAgIE1vY2tDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxNb2NrQ0RN
SW5zdGFuY2U+JiYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5z
ZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2
b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAg
dm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihj
b25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJl
bW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9u
RGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyLmNwcAppbmRleCBmYzEyN2I3YjY3YmVhNzM0NDYzY2QyZDViMDc1NmI1OWJlYmE1
OGFlLi4wNTlmM2EzODZiNmNmNWZhNzliM2MxODk3MDE1MzEzZjdjZGI0ZWYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcApAQCAtMTEwLDcgKzExMCw3
IEBAIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OmZpbmlzaGVkQWRkaW5nRGF0YSgpCiAgICAgbWF5
YmVEZXRlcm1pbmVTdGF0dXMoRGVjaXNpb25Qb2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEp
OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBNb2NrQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnRE
YXRhKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBNb2NrQ29udGVudEZpbHRl
cjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkp
OwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5kYXRh
KCksIG1fcmVwbGFjZW1lbnREYXRhLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyLmgKaW5kZXggNDExYTMwMDk0N2I1MzllMjZhYTZjNjRhMDA5MzI5MmU5
ZmZiZTZiOS4uNjM1YWM4NGJlNzkzODQ3YWE1NzIxM2QwMWZmYzFlNzRmNzZiNzU5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaApAQCAtNDIsNyArNDIsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlk
ZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29u
c3Qgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAppbmRleCAzN2YxYTQ4N2Y4YzUy
YjQ0ZWEyNDMwY2NjZDFmYTAyNWVlOTFhYWMzLi5mZDJjMWFlMmY2M2I2MGQ3NGMzMGQyNDJhOTg5
YTBiZmQ5MWRlNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKQEAgLTM4
LDcgKzM4LDcgQEAgY2xhc3MgU2NyaXB0QnVmZmVyIHsKIHB1YmxpYzoKICAgICBTY3JpcHRCdWZm
ZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICBTY3JpcHRCdWZmZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCisgICAgU2NyaXB0QnVmZmVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiAgICAgewog
ICAgIH0KQEAgLTQ4LDkgKzQ4LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyB0b1N0cmluZygp
IGNvbnN0OwotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQogCi0gICAg
U2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlciht
X2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLmNvcHkoKSkgOiBudWxscHRy
KTsgfQorICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3Jp
cHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4obV9idWZm
ZXIuY29weSgpKSA6IG51bGxwdHIpOyB9CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlci5pc0VtcHR5KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDg1ZTc2MzgzZGFiMzUzYTRmYzRiMDlk
MTI3NzE4NWEwMGU5ZTIzOTcuLjQwNjZmYjM1MmViNWIwODdkNWQ4ZDQ3ZDgwMmZkMmMwYTZhODBm
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmlzUGVu
ZGluZygpIGNvbnN0CiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9u
dERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhOworICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YTsKICAgICAgICAgaWYgKG1fZGF0YS0+Z2V0
KCkpCiAgICAgICAgICAgICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+dGFrZSgpLT5tYWtlQ29u
dGlndW91cygpOwogICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3Vv
dXNEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4IDBiY2Q5NzZlZGE5ZDRhNzgx
MDllNjI2M2Q4MTA4YzM3NTA3NThiNzcuLjhhOTEzOGQyM2IwZDVkZWM1M2QyOTkwZGVkNWRiNzc2
MzU0ZTUyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBA
IHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwgRXhwZWN0
ZWQ8UmVmPEZldGNoUmVzcG9uc2U+LCBzCiAgICAgYXV0byBib2R5ID0gcmVzcG9uc2UtPmNvbnN1
bWVCb2R5KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKFJlZjxGb3JtRGF0YT4mIGZv
cm1EYXRhKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFdU
Rk1vdmUoZm9ybURhdGEpKTsKLSAgICB9LCBbJl0gKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAg
ICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAg
Y2xpZW50LT5kaWRGaW5pc2goKTsKICAgICB9LCBbJl0gKHN0ZDo6bnVsbHB0cl90JikgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlckZldGNoLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyRmV0Y2guaAppbmRleCBlYjI2NmI2YzA3ZTY3M2Q5MTY2Y2FjZTZiMzM5MTlkODBl
YmJmMzFjLi4wOTc1NDNlMWIzYjMwZmYzMTQ3ZDkyMzJhNThjZTRhOWU2MmYzZTRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
RmV0Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyRmV0Y2guaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
OwogY2xhc3MgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIFNlcnZpY2VXb3JrZXJG
ZXRjaCB7CiBjbGFzcyBDbGllbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2xpZW50
LCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3Rpb24oY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVE
YXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAppbmRleCAwM2E3MjEx
ZmNlYmIxZjhlNDYyOGQ1OWVhNDViY2NiNzg4MDJmYjQxLi45YThmYjM1Y2E1MzYxMDViYjZkNmZj
NDZlZTEyMjQ1OTMzZjcwYmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC0xMjcsNyArMTI3LDcg
QEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXMKICAgICB9CiAKICAgICAvLyBGSVhNRTogRG8gd2Ug
bmVlZCB0byBkaXNhYmxlIGZpbGUgbWFwcGluZyBpbiBtb3JlIGNhc2VzIHRvIGF2b2lkIGhhdmlu
ZyB0b28gbWFueSBmaWxlIGRlc2NyaXB0b3JzIG9wZW4/Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91
bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5
VXNlRmlsZU1hcHBpbmc6OlllcyA6IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVN
YXBwaW5nOjpObyk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmls
ZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hhcmVkQnVm
ZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOwogICAgIHJldHVybiBidWZmZXI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IGEzMGY1MTQx
YThlMTRmMjc4ZjViOTEzMTczM2QyNjE0NjI4MTJjYjYuLmRmOGFiZTQyNmUwNjcxNzFhZmZmOTBl
MDMzMzg1MDU5ZjMzMTAzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JM
aWJ4c2x0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVy
RnVuYyhjb25zdCB4bWxDaGFyKiB1cmksCiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAg
ICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAKLSAgICAgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGE7CiAKICAgICAgICAgYm9vbCByZXF1ZXN0QWxsb3dlZCA9IGdsb2JhbENhY2hlZFJlc291cmNl
TG9hZGVyLT5mcmFtZSgpICYmIGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKICAgICAgICAgaWYgKHJlcXVlc3RB
bGxvd2VkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggZGIyNmJiMzlkZDVhZjk5ZjMxZTY2MmMzNGNlZDNk
YmY5Njc3ZjVhYi4uYThjM2UxOGU0N2FlY2FkMGEwMjJhMDg0YzQ5YTIxZjZjNzE0YzM5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25z
dCBjaGFyKiB1cmkpCiAgICAgICAgIHJldHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKIAogICAgIFJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIHsKICAgICAg
ICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcAppbmRleCA1NzMwNjdlM2Rk
MDUwZmViN2M1NzlkMDAxMDJlZTlmNjA0NWI1MzEzLi4zMWMyZDc2ZjJlZTFiOWQyNDliMDAxYjdl
ZmY4OTJlYzJhNzQ1NmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFJl
bW90ZUNETUluc3RhbmNlUHJveHk6On5SZW1vdGVDRE1JbnN0YW5jZVByb3h5KCkKICAgICBtX2lu
c3RhbmNlLT5jbGVhckNsaWVudCgpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6
OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiB0eXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVBy
b3h5Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYg
dHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCiB7CiAgICAgaWYg
KCFtX2NkbSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKaW5kZXggOGU3M2QzZDlhNjRi
OThiZmMwMDkzNmNkNDdjNGMyNWE5Mjc5ZjJjOC4uMDJjNWNkMzdhZTU0ODAyZjZkMGM4ZGNjY2Iw
YmE4MGNmMzM4OGMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6
CiAgICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRyPFJlbW90ZUNETVByb3h5PiYmLCBS
ZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNv
bmZpZ3VyYXRpb24+JiYsIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllcik7CiAKICAgICAvLyBD
RE1JbnN0YW5jZUNsaWVudAotICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFS
ZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKKyAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3Qg
U3RyaW5nJiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwog
CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eS5jcHAKaW5kZXggZTU3NjZjMjMzNGNmZDM4OTMxMGNkNGIyMTcyM2NhYmEzNzQy
ZmM3Yy4uZGU4MjczYjljZjUwMGE0ZDY2YWExNDRlZGUwMjAxZWVmMWVkODYyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIEF0
b21TdHJpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fc2Vzc2lvbi0+cmVxdWVz
dExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0YS5idWZmZXIoKS5yZWxlYXNlTm9u
TnVsbCgpLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChSZWY8U2hhcmVkQnVm
ZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZp
ZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkg
bXV0YWJsZSB7CisgICAgbV9zZXNzaW9uLT5yZXF1ZXN0TGljZW5zZSh0eXBlLCBpbml0RGF0YVR5
cGUsIGluaXREYXRhLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RG
TW92ZShjb21wbGV0aW9uKV0gKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENE
TUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAg
ICAgIGNvbXBsZXRpb24oV1RGTW92ZShtZXNzYWdlKSwgc2Vzc2lvbklkLCBuZWVkc0luZGl2aWR1
YWxpemF0aW9uLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZWVkZWQpOwog
ICAgIH0pOwogfQpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHk6OmNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTCiAK
IHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlbW92ZVNlc3Npb25EYXRhKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZW1vdmVTZXNzaW9uRGF0
YUNhbGxiYWNrJiYgY29tcGxldGlvbikKIHsKLSAgICBtX3Nlc3Npb24tPnJlbW92ZVNlc3Npb25E
YXRhKHNlc3Npb25JZCwgdHlwZSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAo
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNlcywgc3RkOjpv
cHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBleHBpcmVkU2Vzc2lvbnNEYXRhLCBDRE1JbnN0
YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgIG1fc2Vz
c2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlLCBbY29tcGxldGlvbiA9IFdU
Rk1vdmUoY29tcGxldGlvbildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYm
IGtleVN0YXR1c2VzLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4m
JiBleHBpcmVkU2Vzc2lvbnNEYXRhLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBz
dWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVm
ZmVyQ29weT4gZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlOwogICAgICAgICBpZiAoZXhwaXJl
ZFNlc3Npb25zRGF0YSkKICAgICAgICAgICAgIGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5jZSA9
IElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKCpleHBpcmVkU2Vzc2lvbnNEYXRhKSk7CkBA
IC0xNDksNyArMTQ5LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBk
YXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHUKICAgICBncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uOjpVcGRhdGVLZXlTdGF0dXNlcyhXVEZNb3ZlKGtleVN0YXR1c2VzKSksIG1f
aWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNl
bmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2Fn
ZSkKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKENETU1l
c3NhZ2VUeXBlIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7
CiAgICAgaWYgKCFtX2NkbSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkuaAppbmRleCA4YTYxZjlkNWZhYmM4NDg2YTdhMGU4NjBmNGM2MzEyYzBiNDQ1NTE0Li5mZTcz
MDk3MTMxZTBiYjIwYTUwMDFlMTUwMTYwMmQ2NTE4NmIzMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkuaApAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ0RNSW5zdGFu
Y2VTZXNzaW9uQ2xpZW50CiAgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0
b3ImJikgZmluYWw7Ci0gICAgdm9pZCBzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlw
ZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lk
IHNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKICAgICB2b2lkIHNlc3Npb25JZENo
YW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxh
eUlEKCkgZmluYWwgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKaW5kZXggOWFiMzU3NWY0YzNi
NTU5NTU1YjliODdiMjMzNzFiMWIxYTY2ZGMxNy4uZjdjYjZhNjNlYjkzM2FiZDRkNDUzYTIyYWIy
OTRmMTMwMzIzMmIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNUHJveHkuY3BwCkBAIC02MywxMiArNjMsMTIgQEAgUmVtb3RlQ0RNUHJveHk6OlJl
bW90ZUNETVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIHN0
ZDo6dW4KIAogUmVtb3RlQ0RNUHJveHk6On5SZW1vdGVDRE1Qcm94eSgpID0gZGVmYXVsdDsKIAot
Ym9vbCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0
eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCitib29sIFJlbW90ZUNETVByb3h5OjpzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0
YSh0eXBlLCBkYXRhKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNUHJveHk6
OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKK1JlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gbV9w
cml2YXRlLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKaW5kZXggNjkyNGU3NGUzZjUwMTFi
ZTIxNWJlNGJkOTZiMjM0ODI2NDcwZjQyMy4uM2I2NmM3NzU3ODcwNjllOTc2ZWUwNjRmOTZmZjA3
YzBmNzEyYTkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETVByb3h5LmgKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiBlbnVtIGNsYXNzIENETVJlcXVpcmVtZW50IDogdWludDhfdDsK
IGVudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgOiB1aW50OF90Owogc3RydWN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb247CkBAIC01OCw4ICs1OCw4IEBAIHB1YmxpYzoKIAogICAgIFJlbW90ZUNE
TUZhY3RvcnlQcm94eSogZmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZmFjdG9yeS5nZXQoKTsg
fQogCi0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgcmVzcG9uc2Up
OworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKTsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpOwogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
UHJveHkuaAppbmRleCBlMmNkMDVkN2NjNzRmMjBlYzY5ZmFkZmUzZWUwODU3NTkyYWQ4NzliLi5k
ZThmNmRmNTVhNmUxZmE4YmU5NjZmOTQxZTA3ZmUyZjVjNTAyMWE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaApAQCAt
MzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oCmluZGV4IGYx
NGM2MjdmNjU5M2UxYTg3OGQwZjQ1OTkyYjNjNDFiMjIyYzdmMDAuLjE1NDZiZGZkZmRjZjA5MTA4
Nzg5NDRmMzQwNzk2N2E3YWIzOGJmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKQEAgLTM3
LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2FjeUNETTsKIGNsYXNz
IExlZ2FjeUNETVNlc3Npb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgSVBDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAppbmRleCBjNDVl
NTI1NWQ2N2I1MmM3YWUxMDQ0OTk4OGNlMDE5MGM3ZmZiNTM4Li42MTdmNDc2ODk1NjQyZGVjMjMy
NTRiNTQwZWU4MTkxMWFjNGEyZGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHZv
aWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQodWludDY0X3QgYnl0ZXNTZW50LCB1aW50
NjRfdCB0b3RhbEJ5dGVzVG9CZVNlCiAgICAgICAgIG1fY2xpZW50LT5kYXRhU2VudCgqdGhpcywg
Ynl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVz
b3VyY2U6OmRhdGFSZWNlaXZlZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFJlbW90
ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKQogewogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNl
aXZlZCgqdGhpcywgV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaAppbmRleCBkMTNkMjVmNjVmMDIyNGE2
Yzc2N2Y2OWE0ZDQxOWNkMDUzYmI3OTVkLi41YjdhN2UyYTc0MjQ0MzJkODZjYjI4YTFiZTcxNzE4
YTE2NzM3NWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlLmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01
Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpOwogICAgIHZvaWQgcmVkaXJlY3RS
ZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKTsKICAgICB2b2lkIGRhdGFTZW50KHVpbnQ2NF90LCB1aW50NjRfdCk7Ci0gICAg
dm9pZCBkYXRhUmVjZWl2ZWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9p
ZCBkYXRhUmVjZWl2ZWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwog
ICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggZWJkZTc1MzBlYzg2ZmY2YzQxYmVjZDRlNWVjNDI4
YTNjOGFmODBmNy4uZTgzZjkxNDNkMjBhNzJlMmJlNGZmY2JmZWQxM2IwYmI0ZGQzMWUwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29y
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlh
UmVjb3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVy
Ojp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8K
IHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgbV93cml0ZXItPmZldGNoRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1dG8gdGltZUNvZGUpIG11dGFibGUgewot
ICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CisgICAgICAgIGF1dG8gYnVm
ZmVyID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPigpOwogICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVmZmVyLT5k
YXRhKCkgOiBudWxscHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZl
cmVuY2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9QZW5kaW5nRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL1BlbmRpbmdEb3dubG9hZC5oCmluZGV4IDUyY2M1ZGExMjFhMmZiNTlkOGNmMDU5M2I2ODUw
OWZkNjU1YzBjZGMuLjcxZmQwMjIyOWJiYjFjNTczMjZmZGZjZmUyNmMxMWY3NjFhYmNmNzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdE
b3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1Bl
bmRpbmdEb3dubG9hZC5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0Fs
bG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNB
bGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJl
Y3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJl
ZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBv
dmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CiAgICAg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYp
IG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDNm
MzllYjMyZjFhYTgwNzY3ODVkYTc5ZWUxMWRhZDhmMGMzMjZiNzkuLmQ4OTIwZTk4NzY0ZmQ5YjY0
YjljZGRjNjBhMWQ4NGQ2MTliMmQ0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEx
OSw3ICsxMTksNyBAQCB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJgogICAgIGNvbXBsZXRpb25IYW5k
bGVyKFBvbGljeUFjdGlvbjo6VXNlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXI6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpCit2b2lk
IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCiB7CiAgICAgQ09SU19DSEVDS0VSX1JFTEVBU0Vf
TE9HKCJkaWRSZWNlaXZlRGF0YSIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggYmJiMTQ2
MmEzMTYxZTJmY2U5ZWE1Nzg0NGIxOWI5M2U2MTljODFiMC4uZTExYmY1NjMxOTA3YWU0NzMzNmVm
ODVhNWQyMmU4ODM1NzQ2NTFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC03MSw3ICs3MSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVj
dENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5n
ZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExT
LCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lU
TFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2
b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5
dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2su
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKaW5kZXgg
ZDYwMThmNjEzODNhZTNhNTFlOWQ0NzIyY2Y2YTYwZTJkOGI4N2E3ZC4uZTA0OWU1YjEyZGRlNWZl
NTFiNDY5NTUyODlhN2E3ZjY5OTgyYWZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYzLDcg
KzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBO
ZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFNl
bmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0
ZWRUb1NlbmQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZCgpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5kZXggYmFjMDIyYWI0
NTQzMGY2NTFiMTg5YWMwMTIwN2EwNjA2MDhjMTY3MS4uNzk3NWQ0MWJhZDg5MTVmZWVkYmRhYjE1
NTRlODFlMWRiMjAzMGY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpub3RpZnlE
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdAog
ICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRS
ZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgTmV0d29ya0xvYWQ6
OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsK
ICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgdGhlIGVuY29kZWQgZGF0YSBsZW5ndGgsIG5v
dCB0aGUgZGVjb2RlZCBkYXRhIGxlbmd0aC4KICAgICBhdXRvIHNpemUgPSBidWZmZXItPnNpemUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRleCBjMzc3
M2M5ODc4NTUzY2U1MzRkMDU0YWJmZmRkZWJiMjllZTA4NGQyLi5lZTVlYjAwNmFhMzc5Yjc4ZmNi
YzBiZDE3NGUzMmJkNjM5Zjk1ZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFs
Qnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAg
IHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCmluZGV4IDBhNWY2NmJkOTY3ZWM5ZmRmNjY0ZTUyZTVh
ZjM5NGU0OGVjZTFmN2IuLjM0OGNmZmI5ZThlMjVlZTgzYmJiMzlhMDJjZDNjZjZkMjg1NGQzOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50
LmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgUG9saWN5
QWN0aW9uIDogdWludDhfdDsKIH0KIApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2ln
bmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtMb2FkTWV0cmljcyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRpbmco
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
QmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA2Mzk5
YWZkMTZlZDgzMzFhYjIzODg4YmJhNjk2YTcwZDg3MjhmZTBmLi4wZTVlYjVhZGMwMTJmMWYyZWE3
NjZmY2MxYTQ1NTM5ZmQ1ZDg5YzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0
cnVjdCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZERhdGEgewogICAgIFJl
c291cmNlRXJyb3IgZXJyb3I7CiB9OwogCi1zdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9u
b3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZERhdGEmIGRh
dGEsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCitzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZERhdGEmIGRhdGEsIGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogewogICAgIEFTU0VSVChkYXRhLmRlbGF5ZWRSZXBseSk7CiAgICAgQVNTRVJUKCFkYXRh
LnJlc3BvbnNlLmlzTnVsbCgpIHx8ICFkYXRhLmVycm9yLmlzTnVsbCgpKTsKQEAgLTg2MCw3ICs4
NjAsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZERpZFJlY2VpdmVSZXNwb25z
ZVBvdGVudGlhbGx5SW5OZXdCcm93c2luZ0NvbnRleAogICAgIH0pOwogfQogCi12b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9udW1C
eXRlc1JlY2VpdmVkKQogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVCdWZm
ZXI6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGg9JWQp
IiwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CkBAIC0xMjcwLDcgKzEyNzAsNyBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgbV9idWZm
ZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzZW5kQnVmZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERh
dGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAg
ICBBU1NFUlQoIWlzU3luY2hyb25vdXMoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IDM0NWMyZmJhNzk4YzZk
YjZhZGI3NzIxMTMwYmUwNGYwZGY0NDE1YjguLjk4NDQyNGEzMDY4MWEzNjBmYzYwYzllN2E5ZGQ0
ZTZiYjQyNmRlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBCbG9iRGF0YUZp
bGVSZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCkBA
IC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9y
Q3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsb3dlZFRvQXNrVXNlckZv
ckNyZWRlbnRpYWxzOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVj
dFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJikgZmluYWw7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkg
ZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSgpIGZpbmFsOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN0YXJ0
QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwogICAgIHZvaWQgYnVmZmVyaW5nVGltZXJGaXJlZCgp
OwotICAgIHZvaWQgc2VuZEJ1ZmZlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5j
b2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgc2VuZEJ1ZmZlcihXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKIAogICAgIHZvaWQgY29u
c3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlU2FuZGJveEV4dGVu
c2lvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xv
YWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXgg
MTE0ODUzZTQ1YjcyNTMzNjRjNzQ3YTcxY2IyYjVhYjhjYzM4ZWZkNS4uMWFmMWUwOGUzYzQ0MWUy
NGYzMDA2NWU5ZjIwNzc2ZTZmOWZjMzNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9QaW5nTG9hZC5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFBpbmdMb2FkOjpkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5
VAogICAgIGRpZEZpbmlzaCh7IH0sIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBQaW5nTG9hZDo6ZGlk
UmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgUGluZ0xvYWQ6OmRpZFJlY2Vp
dmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQogewogICAgIFBJTkdfUkVMRUFT
RV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKaW5kZXggMTllYzhjZWI5MmUzYzhhMDU2
ZjQ5MjczNjYwY2ZmZjkyNjQzNDFkMS4uYWIyOWEwYjFhYzg0NjZiMGVkNjFlZjU4ZWY0YzIyMGFi
YWI2ZWJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtNTQs
NyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24o
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
UmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVD
aGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExl
Z2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVk
TGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7
CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3Qg
dG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVj
dFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5j
cHAKaW5kZXggNDU1NzgyZDU0YTJlYTliZWUxODY1MGUxYWZkMWNmN2IyY2U5OGM0OS4uMTdkNDc5
MDdhM2Y2ZWU1MmJlNjUwMWQxZGFiMGNhNjA3NTFkNmIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9p
ZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiBy
ZXNwb25zZSwgUmVzcG9uc2VDb20KICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246
Oklnbm9yZSk7CiB9CiAKLXZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFBy
ZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJl
Y29ubmVjdFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRh
c2suaAppbmRleCAxYzFmZjE2NDcxMTFjNmZhODQ5NGFmNWNmMGM3YmJlYWExYjI2NTAzLi44NTgw
OGUxMjFiNjhjYThiNzNlMjUxOGQxOTNhYjM5NTgxZWFkMWU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1
bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBmaW5hbDsKICAgICB2b2lkIHdp
bGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAg
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
ICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBm
aW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlci5jcHAKaW5kZXggM2E1NTE3NDkwMWQ0Nzg5OWMxYzAyZDBkMjdhODg4YTdjYmRhNWQ2
Mi4uODE5NjYzMDIwYzY5NWNlMGM2YWJhOTk5YzY3NWFhYjQyODJjN2ZkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCkBAIC0x
NzQsNyArMTc0LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXMKICAgICAgICAgY2FsbGJhY2so
KTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNrKQogICAgICAg
ICBtX2JvZHlDYWxsYmFjayhidWZmZXItPm1ha2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuaAppbmRleCA1YzRjOGU3MWQ0ZGQzODM1YzFkNTcyMmI4MWNjN2I1OTg0MGU4
YWE4Li5lZTFiYzhiN2Q2Y2JmZmMzMzQxZDY3M2ZiNzI0MjIzOGY2NzE3ZjJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAtNTIs
NyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBSZXNwb25zZUNhbGxiYWNrID0gRnVuY3Rp
b248dm9pZCgpPjsKICAgICB2b2lkIHdhaXRGb3JSZXNwb25zZShSZXNwb25zZUNhbGxiYWNrJiYp
OwotICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KT47CisgICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OwogICAg
IHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNrJiYpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CkBAIC02Nyw3
ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50
aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAg
ICAgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljczsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5kZXgg
OTQyMzUzNDgyNzNlODkxYjA3Yjg3NTYxYzFkNjEyZWEyYTQ0MzU5My4uN2EyNjIyMTlkZTc4YjIz
NWQxMjVhOTJiNmUyMzZkMzMyNjJmN2EyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgUmVzb3VyY2VF
cnJvciBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6cHJvY2Vzc1Jlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG8KICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAo
IW1fZGVjb2RlcikgewogICAgICAgICBpZiAoIW1fcmVzcG9uc2VFbmNvZGluZy5pc0VtcHR5KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCmluZGV4
IDE4ZjU0NjkxZjM3YzJiYWJiYzhjMWEzYmMwOTQzNzBlOWIyOWViNzEuLjQ0ZmMwNjg1ZmEwZmVk
Yzg3NDIxOTE2ZTkxM2E2NzRiMWMwZmRiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5h
bDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5j
cHAKaW5kZXggZmRiZmIxNDM1OTc2Y2JmNjVmNjEyNTY4M2FjMWVkZDI0MDllMjc4Ny4uNmYyNmI0
Y2MyZGVmYTBkOTg4N2M2ZjQyNDVlOGY1NGZiZWM0YmEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZS5jcHAKQEAgLTU4MSw3ICs1ODEsNyBAQCBTdG9yYWdlOjpSZWNvcmQgQ2FjaGU6OmVuY29k
ZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRpb24sIGNvbnN0CiAgICAg
RGF0YSBib2R5OwogICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgW10oY29u
c3QgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgLy8gRklYTUU6
IFN0b3JlIGZvcm0gZGF0YSBib2R5LgotICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShjb25zdCBSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGJvZHkgPSB7IGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9OwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90
JikgewogICAgIH0pOwpAQCAtNjczLDcgKzY3Myw3IEBAIHN0ZDo6b3B0aW9uYWw8UmVjb3JkPiBD
YWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcmVjb3JkID0gV1RGTW92ZShyZXN1bHQtPnJl
Y29yZCk7Ci0gICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgp
KTsKKyAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CiAKICAgICByZXR1
cm4gcmVjb3JkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IDA0Nzc2ODM2Zjk5OTA5MzkxMGIzOTlkNzU1Mzg1NWQ1
ZDNmMWZmNGUuLmRkMzA1YWYyOTc2NjFlNDc2YzQ5Njc3ZGY1NzIxZWZkMWVjOTMyZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5j
cHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIENhY2hlOjpjb21wbGV0ZVJldHJpZXZlKFJldHJp
ZXZlQ29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyLCBzdGQ6OnVuaXF1ZV9wdAogICAgIGhhbmRs
ZXIoV1RGTW92ZShlbnRyeSksIGluZm8pOwogfQogICAgIAotc3RkOjp1bmlxdWVfcHRyPEVudHJ5
PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhKQorc3RkOjp1bmlxdWVfcHRyPEVudHJ5
PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSkKIHsKICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgV1RG
TW92ZShyZXNwb25zZURhdGEpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJz
KG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24obV9zZXNzaW9uSUQpLCByZXF1ZXN0LCBy
ZXNwb25zZSkpOwogfQpAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4g
Q2FjaGU6Om1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYK
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNw
b25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFk
ZXJzKG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24obV9zZXNzaW9uSUQpLCByZXF1ZXN0
LCByZXNwb25zZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBy
ZXNwb25zZURhdGEsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVChyZXNwb25zZURhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAppbmRleCAxOTlmMGNmYjczMjU0
M2M1ZmVhZjRmZTIzMDFlNmExYzEyZjg4ZmU4Li5lZDA0ZWJjYTBiMzZmM2Y5YzRjMGU3YmFjNzEz
MzZiOWU5NmMzNTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlLmgKQEAgLTQzLDcgKzQzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIExvd1Bvd2VyTW9kZU5vdGlmaWVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC0xNjYsNyArMTY2LDcgQEAgcHVibGljOgogICAgIH07CiAgICAg
dXNpbmcgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQoc3RkOjp1bmlx
dWVfcHRyPEVudHJ5PiwgY29uc3QgUmV0cmlldmVJbmZvJik+OwogICAgIHZvaWQgcmV0cmlldmUo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIHN0
ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBSZXRyaWV2ZUNvbXBsZXRp
b25IYW5kbGVyJiYpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmUoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9k
eSYpPiYmID0gbnVsbHB0cik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9yZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIEZ1bmN0aW9u
PHZvaWQoTWFwcGVkQm9keSYpPiYmID0gbnVsbHB0cik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5PiBzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlZGlyZWN0UmVxdWVzdCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXApOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gdXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IEVudHJ5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYg
dmFsaWRhdGluZ1Jlc3BvbnNlKTsKIApAQCAtMTg1LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJldHJpZXZlRGF0YShjb25zdCBEYXRhS2V5JiwgRnVuY3Rpb248dm9pZChjb25zdCB1aW50
OF90Kiwgc2l6ZV90KT4pOwogICAgIHZvaWQgc3RvcmVEYXRhKGNvbnN0IERhdGFLZXkmLCAgY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50
cnk+IG1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
RW50cnk+IG1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCk7CiAKICAgICB2b2lkIGR1bXBDb250ZW50c1RvRmls
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBmMWVmZmYzNTBmYTM3ZjZiNDY4MTU5ZmM2NjJlN2Fh
OTQyODNkN2UxLi43NjEwNzhkZWEwOTNjMDQ1NTViZTk4YjA1MTczZTM0MTUwNjdhODU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVu
dHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUVudHJ5LmNwcApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiBuYW1l
c3BhY2UgTmV0d29ya0NhY2hlIHsKIAotRW50cnk6OkVudHJ5KGNvbnN0IEtleSYga2V5LCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJp
bmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKQorRW50cnk6OkVudHJ5KGNvbnN0IEtleSYga2V5
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8c3RkOjpw
YWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycykKICAgICA6IG1fa2V5
KGtleSkKICAgICAsIG1fdGltZVN0YW1wKFdhbGxUaW1lOjpub3coKSkKICAgICAsIG1fcmVzcG9u
c2UocmVzcG9uc2UpCkBAIC0xMDMsNyArMTAzLDcgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5Ojpl
bmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogICAgIERhdGEgYm9keTsKICAgICBpZiAobV9i
dWZmZXIpIHsKICAgICAgICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsK
LSAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcio+KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAg
ICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcio+KG1fYnVmZmVy
LmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CiAgICAgfQogCiAgICAgcmV0dXJu
IHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFkZXIsIGJvZHksIHsgfSB9OwpAQCAtMTk2LDcgKzE5
Niw3IEBAIHZvaWQgRW50cnk6OmluaXRpYWxpemVCdWZmZXJGcm9tU3RvcmFnZVJlY29yZCgpIGNv
bnN0CiAgICAgbV9idWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NvdXJj
ZVN0b3JhZ2VSZWNvcmQuYm9keS5kYXRhKCksIG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LnNp
emUoKSk7CiB9CiAKLVdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogRW50cnk6OmJ1ZmZlcigpIGNvbnN0
CitXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBFbnRyeTo6YnVmZmVyKCkgY29uc3QK
IHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBpbml0aWFsaXplQnVmZmVyRnJvbVN0b3Jh
Z2VSZWNvcmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRW50cnkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRW50cnkuaAppbmRleCA5NjkxNWMzODAxYzM3ZGRhYzNlOGU2MDMyMWY4
OGMyMjI5Y2Q1OWEwLi45YzA0MjBkNDRhODE1OGRmYzViMjFjZjE4ODIwNGNmM2E5MTZiNDJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5oCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDQs
NyArNDQsNyBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIGNsYXNzIEVudHJ5IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBFbnRyeShjb25zdCBLZXkmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5n
UmVxdWVzdEhlYWRlcnMpOworICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVz
dEhlYWRlcnMpOwogICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVz
dCwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVz
dEhlYWRlcnMpOwogICAgIGV4cGxpY2l0IEVudHJ5KGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYpOwog
ICAgIEVudHJ5KGNvbnN0IEVudHJ5Jik7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzcG9uc2U7IH0KICAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5n
Pj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyeWluZ1JlcXVl
c3RIZWFkZXJzOyB9CiAKLSAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0
OworICAgIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0Owog
ICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiYgcmVkaXJl
Y3RSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWRpcmVjdFJlcXVlc3Q7IH0KIAogI2lmIEVO
QUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAg
VmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJz
OwogCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IG1fcmVkaXJl
Y3RSZXF1ZXN0OwotICAgIG11dGFibGUgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICBtdXRhYmxl
IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgbV9zaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IGQ0M2MwODlkNjE4
NTNjNTE5ZTM2MmZmMmM4YzdjNDE4M2NlYzEwMGIuLjdiMGFkYzQwZjBiMGI2NzE0NzFhMjdhYjUx
Mzk3NjZkNGI1NTU0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAg
LTEyMCw3ICsxMjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbnNlLCBSZQogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFBvbGljeUFjdGlvbjo6VXNlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKQordm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4IDY3ODMwZGYwYjMwMzQzMzAyYTExYjU1MWQ3YTA5ZjZk
MWE4NWY1NjMuLjFiODQzZGI3ZWMyNzBkYjlkYWI5ZThhMjVmMmE0OGE4ZWNhZTJhOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJl
Y3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRlOwotICAgIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
RmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2Fj
aGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hl
LmNwcAppbmRleCA1ZTJlMDJlMmZiYTBiNGEwYzAzYjVkM2U2NmI5N2Y3YmNjYzc5NThiLi4zMTk5
YmZmMzExYjZjM2VlZmJlOTUwYjQ1ZTZiMGE5NmUzMjc3N2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKQEAgLTMwLDcg
KzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVByZWZldGNoQ2FjaGU6OkVudHJ5OjpF
bnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorUHJlZmV0Y2hDYWNoZTo6RW50cnk6OkVudHJ5KFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIDogcmVzcG9uc2UoV1RGTW92ZShyZXNw
b25zZSkpLCBidWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogfQpAQCAtNzIsNyArNzIsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8UHJlZmV0Y2hDYWNoZTo6RW50cnk+IFByZWZldGNoQ2FjaGU6OnRha2Uo
Y29uc3QgVVJMJiB1cmwpCiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIGV4cGlyYXRpb25UaW1lb3V0
IHsgNV9zIH07CiAKLXZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmUoY29uc3QgVVJMJiByZXF1ZXN0
VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZShjb25z
dCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwg
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAg
IGlmICghbV9zZXNzaW9uUHJlZmV0Y2hlcykKICAgICAgICAgbV9zZXNzaW9uUHJlZmV0Y2hlcyA9
IG1ha2VVbmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaAppbmRleCBhMjUxNTIwYjMxZWFj
OTIxYzIyZDMxMTUxZDZkMjMxYTFiZWQxMzhjLi41MmMwYjEwZmNjNmQ1YTZkZTExNDQ3ZTdlNGU4
MjJkZjhmODQxY2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL1ByZWZldGNoQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL1ByZWZldGNoQ2FjaGUuaApAQCAtNDcsMTggKzQ3LDE4IEBAIHB1YmxpYzoKIAogICAgIHN0
cnVjdCBFbnRyeSB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAg
ICAgICAgRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmKTsKKyAgICAgICAgRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgICAg
IEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpOwogCi0gICAgICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlbGVhc2VCdWZm
ZXIoKSB7IHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsgfQorICAgICAgICBSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVsZWFzZUJ1ZmZlcigpIHsgcmV0dXJuIGJ1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpOyB9CiAKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZTsKLSAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOwogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVkaXJlY3RSZXF1ZXN0Owog
ICAgIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHRha2UoY29uc3QgVVJMJik7Ci0g
ICAgdm9pZCBzdG9yZShjb25zdCBVUkwmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgc3RvcmUoY29uc3QgVVJM
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBzdG9yZVJlZGlyZWN0KGNvbnN0IFVSTCYsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCmluZGV4IGI5YWIwZGVlYmI5ZjkyN2M3Mzc0MmU4
NmEwYmU3Zjk3MTYwYmQ2ZmIuLjQxNjY4YTViMWNkNzM4Njk2N2I4ZmQ5NzNlOTY3MzJlY2E5MDdl
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIHZv
aWQgZGlkTmVnb3RpYXRlTW9kZXJuVExTKGNvbnN0IFVSTCYpOwogICAgIHZvaWQgZGlkQ29tcGxl
dGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgdHJhbnNmZXJT
YW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9hZChEb3dubG9hZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0K
aW5kZXggZTc4MGQ2YzFjM2NkMWViMmMyZmY1YTBjNTY0YTBlNGQ4OGI3ZWE1ZC4uMzA1MWYxNjlj
YjBhMzcwOTk4NWExNjExMjJjMjVmMGU4ZjE3YmQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBA
IC00NDIsNyArNDQyLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkQ29tcGxldGVX
aXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXIKICAgICAgICAgbV9jbGll
bnQtPmRpZENvbXBsZXRlV2l0aEVycm9yKGVycm9yLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogfQog
Ci12b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNl
aXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewog
ICAgIFdURkVtaXRTaWducG9zdChtX3Rhc2suZ2V0KCksICJEYXRhVGFzayIsICJyZWNlaXZlZCAl
emQgYnl0ZXMiLCBkYXRhLT5zaXplKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKaW5kZXggOGZjN2I2
NjNlNmY3NTYyYjJiMzU0ODkzOThhMmZlNzMxYmUwNzRmMS4uMzdmMjk0MTY2NDZjNDdlMWRhMWZk
OTk0MWNjYWMwMGI1ZGMwZmQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcApAQCAtMTcyLDcgKzE3Miw3
IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJs
UmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlc3BvCiAgICAgaW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNl
KCk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVCdWZmZXIo
Q3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgTmV0d29ya0Rh
dGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAq
dGhpcyB9OwogICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpDYW5jZWxpbmcgfHwgc3RhdGUoKSA9
PSBTdGF0ZTo6Q29tcGxldGVkIHx8ICghbV9jbGllbnQgJiYgIWlzRG93bmxvYWQoKSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNr
Q3VybC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFz
a0N1cmwuaAppbmRleCAxYzQyN2RkYjc4ZDY5NTNmZTg5NjBjNTY5MmFmZGU0ZjRmMGVlZTg1Li40
NWJlNWNlMTg0MzI1MjcxZDVjMDgwZGQzNGYxZWU0YTE2NjQyYTFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgK
QEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8V2ViQ29yZTo6Q3VybFJlcXVlc3Q+
IGNyZWF0ZUN1cmxSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZXF1ZXN0U3Rh
dHVzID0gUmVxdWVzdFN0YXR1czo6TmV3UmVxdWVzdCk7CiAgICAgdm9pZCBjdXJsRGlkU2VuZERh
dGEoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxv
bmcgbG9uZykgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6Q3VybFJlc3BvbnNlJiYpIG92ZXJyaWRlOwotICAg
IHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGN1cmxEaWRSZWNlaXZl
QnVmZmVyKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZENvbXBsZXRlKFdlYkNvcmU6
OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYmKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtEYXRhVGFza1NvdXAuY3BwCmluZGV4IGY2MzNmZmZlYTQ4ZGQwZjNmMmM1ZmFmOWY5MTQ1
OTFkMzFjYTllMTIuLmIyMGFhNTFhMGY4NGY5NWFkOGYwYjc4MDdkNzQxNzFhZGM1MjA1YTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRh
c2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a0RhdGFUYXNrU291cC5jcHAKQEAgLTE3NjEsNyArMTc2MSw3IEBAIHZvaWQgTmV0d29ya0RhdGFU
YXNrU291cDo6ZGlkUmVhZERhdGFVUkwoc3RkOjpvcHRpb25hbDxEYXRhVVJMRGVjb2Rlcjo6UmVz
dWx0PiYmCiAgICAgfQogCiAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFV
UkxSZXNwb25zZShtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCByZXN1bHQudmFsdWUoKSk7Ci0gICAg
YXV0byBieXRlcyA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3Vs
dC0+ZGF0YSkpLT5jcmVhdGVHQnl0ZXMoKTsKKyAgICBhdXRvIGJ5dGVzID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CiAgICAgbV9p
bnB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fYnl0
ZXMoYnl0ZXMuZ2V0KCkpKTsKICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUHJvdmlkZXIuaAppbmRleCBmNWRiNzA2YzQ0NTgwMjEwODdmOTU5OTY2OWRmYTdkOWY4Mzc5
NzhjLi4zM2Q0M2I3MjIzOGQyMDNlN2VkZWM5NDE0Y2FmOWZkYThmNDA1MjZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJv
dmlkZXIuaApAQCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3QgUGFja2V0T3B0aW9uczsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgUmVnaXN0cmFibGVEb21haW47Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNv
cHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAK
aW5kZXggMjlmNzFkN2U2ZGM3NTBlZjE5ZjMyODYyYzg5YjcxODVlMDNiZjg5Ni4uZGY4ZWUzMGM0
M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTUxLDkgKzUxLDkgQEAgc3RkOjpv
cHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAgICAgYnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAg
ICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSk7CiAgICAgcmV0dXJuIHsgV1RGTW92ZShidWZmZXIpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCBlOWNkODcyZjhkNDRmMTVl
MGVlMzdjNzM0OTJiMmQ4MDJhYzkwNzE2Li4xN2YwOGMyOGVhMTI1YjU1MDk5M2VlZDI0ZDU5NjNi
ODUxMGExMTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVy
Q29weS5oCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotLy8gRW5jb2RlcyBhIFNoYXJlZEJ1ZmZlciB0aGF0IGlzIHJlY2VpdmVkIGFz
IGEgY29weSBvZiB0aGUgZGVjb2RlZCBkYXRhIGluIGEgbmV3IFNoYXJlZEJ1ZmZlci4KKy8vIEVu
Y29kZXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBjb3B5
IG9mIHRoZSBkZWNvZGVkIGRhdGEgaW4gYSBuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KIC8v
IFRvIGF2b2lkIGNvcHlpbmcgZnJvbSB0aGUgRGVjb2RlciwgdXNlIFNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UgdG8gcmVjZWl2ZSBhIERhdGFSZWZlcmVuY2UgaW5zdGVhZC4KIAogI3ByYWdtYSBv
bmNlCkBAIC0zOSwxOSArMzksMTkgQEAgY2xhc3MgU2hhcmVkQnVmZmVyQ29weSB7CiBwdWJsaWM6
CiAgICAgU2hhcmVkQnVmZmVyQ29weSgpID0gZGVmYXVsdDsKIAotICAgIFNoYXJlZEJ1ZmZlckNv
cHkoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAg
ICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9Ci0gICAgU2hhcmVkQnVmZmVyQ29w
eShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAg
IDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVy
KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPigpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1
ZmZlcikpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAg
ICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250
aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigpKSB7IH0KKyAgICBTaGFy
ZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKICAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3VzKCkpIHsgfQotICAg
IFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCisg
ICAgU2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpIHsg
fQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIo
KSB7IHJldHVybiBtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZm
ZXI7IH0KKyAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CiAg
ICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXpl
KCkgOiAwOyB9CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVjb2RlKERlY29kZXIm
KTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaAppbmRleCBkM2QwZWM1ZTk3ODU1
OTliNjM0YTg0YzZjNDQ3MWI1MmNkMjIxM2YxLi42N2VjOGU1ZTkyYmQwMjQxMTVkYjBkNDA4MGEy
NGZlNzM1NzBkM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8gRW5jb2RlcyBhIFNoYXJlZEJ1ZmZl
ciBvciBEYXRhUmVmZXJlbmNlIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBEYXRhUmVmZXJlbmNlIHRv
IHRoZSBkZWNvZGVkIGRhdGEuCisvLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBv
ciBEYXRhUmVmZXJlbmNlIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBEYXRhUmVmZXJlbmNlIHRvIHRo
ZSBkZWNvZGVkIGRhdGEuCiAKICNwcmFnbWEgb25jZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1No
YXJlZE1lbW9yeS5jcHAKaW5kZXggYjNhOTlhZjhmNTEyN2Y2YTY1M2NjMWM4Zjg1YjYyYjZjYWFm
MTU4YS4uYzAyNmY1NDk1NjliMmJlMDA3OGFlMzI1ZDA1MzllMDcxYWYxMTA0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0cjxTaGFyZWRN
ZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK1JlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDgsMTAgKzQ4LDEwIEBAIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICByZXR1cm4gc2hhcmVkTWVtb3J5OwogfQogCi1SZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFT
aXplKSBjb25zdAorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRC
dWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBz
aXplKCkpOwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNl
Z21lbnQ6OlByb3ZpZGVyIHsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNl
Z21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
XSAoKSAtPiBjb25zdCB1aW50OF90KiB7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7CiAgICAgICAgIH0sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCA3NmI3M2NhZTRjODVkN2VlMzY4YjFm
ODRkNTFlZTAwZjkyZTkwNDdjLi4xYjRmZGZhZjY4Mzg5ZGNlNzI4ZmYzNGU1ZTVmMDEyZTI0M2Zh
MmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTQ0LDggKzQ0LDgg
QEAgY2xhc3MgRW5jb2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiB9CiAKICNpZiBPUyhEQVJXSU4pCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVi
bGljOgogCiAgICAgLy8gRklYTUU6IENoYW5nZSB0aGVzZSBmYWN0b3J5IGZ1bmN0aW9ucyB0byBy
ZXR1cm4gUmVmPFNoYXJlZE1lbW9yeT4gYW5kIGNyYXNoIG9uIGZhaWx1cmUuCiAgICAgc3RhdGlj
IFJlZlB0cjxTaGFyZWRNZW1vcnk+IGFsbG9jYXRlKHNpemVfdCk7Ci0gICAgc3RhdGljIFJlZlB0
cjxTaGFyZWRNZW1vcnk+IGNvcHlCdWZmZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7
CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGNvcHlCdWZmZXIoY29uc3QgV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVt
b3J5PiBtYXAoY29uc3QgSGFuZGxlJiwgUHJvdGVjdGlvbik7CiAjaWYgVVNFKFVOSVhfRE9NQUlO
X1NPQ0tFVFMpCiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHdyYXBNYXAodm9pZCos
IHNpemVfdCwgaW50IGZpbGVEZXNjcmlwdG9yKTsKQEAgLTE1NCw3ICsxNTQsNyBAQCBwdWJsaWM6
CiAgICAgLy8gUmV0dXJuIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGluIGJ5dGVzLgogICAgIHN0YXRp
YyB1bnNpZ25lZCBzeXN0ZW1QYWdlU2l6ZSgpOwogCi0gICAgUmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OworICAgIFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0
OwogCiBwcml2YXRlOgogI2lmIE9TKERBUldJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggMzVlYTE2
MjE1NmEyMDcwMjZkZjEzNDFjNWMwYTg3M2EyM2E3ZWM3MS4uM2MxYjU3ZDVhYTI2ZWM3MmU2MGI1
ZDc4YTExZTlmZDg1MmNmZmVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTU2NCw3ICs1NjQsNyBA
QCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgaWYgKCppbmNsdWRlc0NyZWF0aW9uRGF0YSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFs
PFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBmb250RmFjZURh
dGE7CiAgICAgICAgIGRlY29kZXIgPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBpZiAoIWZvbnRG
YWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggNDU0MTY0MzZjMjUwNTIwODM4
ZTVkZmRjYzJiZmUzNTNmYjU5YzJhMS4uZTlhNTEzYTMwNWVkZDY1YmRmYTM3NGUxYmQwZTNmZWFi
MWY2YjgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNw
cApAQCAtMTA1LDcgKzEwNSw3IEBAIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBDR0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlCiAgICAgUkVMRUFT
RV9MT0coUmVtb3RlTGF5ZXJUcmVlLCAiQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZCBv
ZiBzaXplICVkeCVkIGVuY29kZWQgZGlzcGxheSBsaXN0IG9mICVsZCBieXRlcyIsIHNpemUud2lk
dGgoKSwgc2l6ZS5oZWlnaHQoKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKTsKICNlbmRp
ZgogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVm
ZmVyQ29weSB7IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdl
dCgpKSB9IH07CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hh
cmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkp
IH0gfTsKIH0KIAogV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBDR0Rpc3BsYXlMaXN0SW1hZ2VC
dWZmZXJCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJl
YWJsZVJlc291cmNlLmNwcAppbmRleCAyYzE2MTFjOWU3MGY4ZjlhMTM3OWMyYzg0MzA4NDczNTJl
NGM5NmNhLi42ZmEwMmE3YmMzZWU1NGFlNmQzMjUzODEwZDc4ZGVjMzE2NTM1M2RiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC01NSwxNSArNTUsMTUg
QEAgYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZm
ZXIoKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJl
ZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShE
YXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShE
YXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkg
eyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAogICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1d
KCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9CiAgICAgfSk7CiB9CiAKLVJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFy
ZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6
OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBSZWZQdHI8U2hh
cmVhYmxlUmVzb3VyY2U+IHJlc291cmNlID0gU2hhcmVhYmxlUmVzb3VyY2U6Om1hcCgqdGhpcyk7
CiAgICAgaWYgKCFyZXNvdXJjZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291
cmNlLmgKaW5kZXggYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2NiNGY2NGU0MTJhYS4uZGEx
ZWVlMGFkNjJjYjM0ODRjMWMzNDA1YzQ4NzBjZjBjNTFlMTYxNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXIm
KSBjb25zdDsKICAgICAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShJ
UEM6OkRlY29kZXImLCBIYW5kbGUmKTsKIAotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNv
bnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlYWJsZVJlc291
cmNlOwpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIFNoYXJl
YWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1vcnk+JiYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWdu
ZWQgc2l6ZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHdy
YXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHdy
YXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgUmVmPFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1v
cnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CmluZGV4IDY3YjdlYjkwMzQwNTVkN2YxMWM0YzYxNTMzZjIyYzAxYmM1ODE5NTguLjg0M2ZkNDcz
MTNhZWVjYTI5OTMwNjEyZmM1ZWM1Nzg3NTU0MzQyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIERFRklO
RV9TSU1QTEVfQVJHVU1FTlRfQ09ERVJfRk9SX1NPVVJDRShEaXNwbGF5TGlzdDo6U2V0SW5saW5l
U3Ryb2tlQ29sb3IpCiAKICN1bmRlZiBERUZJTkVfU0lNUExFX0FSR1VNRU5UX0NPREVSX0ZPUl9T
T1VSQ0UKIAotc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVm
ZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZl
cikKIHsKICAgICBib29sIGlzTnVsbCA9ICFidWZmZXI7CiAgICAgZW5jb2RlciA8PCBpc051bGw7
CkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogICAgICAgICByZXR1cm47
CiAKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICAvLyBEbyBub3QgdXNlIHNoYXJl
ZCBtZW1vcnkgZm9yIFNoYXJlZEJ1ZmZlciBlbmNvZGluZyBpbiBVbml4LCBiZWNhdXNlIGl0J3Mg
ZWFzeSB0byByZWFjaCB0aGUKKyAgICAvLyBEbyBub3QgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIgZW5jb2RpbmcgaW4gVW5peCwgYmVjYXVzZSBpdCdzIGVhc3kg
dG8gcmVhY2ggdGhlCiAgICAgLy8gbWF4aW11bSBudW1iZXIgb2YgZmlsZSBkZXNjcmlwdG9ycyBv
cGVuIHBlciBwcm9jZXNzIHdoZW4gc2VuZGluZyBsYXJnZSBkYXRhIGluIHNtYWxsIGNodW5rcwog
ICAgIC8vIG92ZXIgdGhlIElQQy4gQ29ubmVjdGlvblVuaXguY3BwIGFscmVhZHkgdXNlcyBzaGFy
ZWQgbWVtb3J5IHRvIHNlbmQgYW55IElQQyBtZXNzYWdlIHRoYXQgaXMKICAgICAvLyB0b28gbGFy
Z2UuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NTcxLgpA
QCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgogfQogCi1zdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRl
Y29kZXIsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVy
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gaXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0
YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYg
ZGVjb2RlciwgUmVmUHRyPENvbnRpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICgh
YnVmZmVyU2l6ZSkgewotICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKKyAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBS
ZWZQdHI8Q29udGkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRhdGEu
ZGF0YSgpLCBkYXRhLnNpemUoKSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAg
ICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICNlbHNlCiAg
ICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaXBjSGFuZGxlKSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxD
b250aQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERh
dGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyB2b2lk
IGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAg
ICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZW5jb2RlciA8PCB0
eXBlczsKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjbwogICAgICAg
ICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKIH0KIAotc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNv
ZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5
cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3Rv
cjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZSh0eXBlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2MSw3ICsyNjEsNyBAQCBzdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRl
Y29kZXIsIFZlY3RvcjxTdHJpbgogICAgIEFTU0VSVChkYXRhU2l6ZSA9PSB0eXBlcy5zaXplKCkp
OwogCiAgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGRhdGFTaXplOyBpKyspIHsKLSAgICAg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihk
ZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkYXRh
LmFwcGVuZChidWZmZXIpOwpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxE
T01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IERP
TUNhCiAgICAgZW5jb2RlciA8PCByZWNvcmQudXBkYXRlUmVzcG9uc2VDb3VudGVyOwogICAgIGVu
Y29kZXIgPDwgcmVjb3JkLnJlc3BvbnNlQm9keVNpemU7CiAKLSAgICBXVEY6OnN3aXRjaE9uKHJl
Y29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikgeworICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNv
bnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgZW5jb2RlciA8PCB0cnVl
OwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKICAg
ICB9LCBbJl0oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKQEAgLTQxNCw3ICs0MTQs
NyBAQCBzdGQ6Om9wdGlvbmFsPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IEFyZ3VtZW50Q29kZXI8
RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlYwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgaWYgKGhhc1NoYXJlZEJ1ZmZlckJvZHkpIHsKLSAgICAgICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIp
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKGJ1ZmZlcikK
QEAgLTE1NTAsMTAgKzE1NTAsMTAgQEAgdm9pZCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpFbnRyeT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdAogICAgIGlmICho
YXNTdHJpbmcpCiAgICAgICAgIGVuY29kZXIgPDwgc3RkOjpnZXQ8U3RyaW5nPihwbGF0Zm9ybURh
dGEpOwogCi0gICAgYm9vbCBoYXNCdWZmZXIgPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxT
aGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpOworICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0
YSk7CiAgICAgZW5jb2RlciA8PCBoYXNCdWZmZXI7CiAgICAgaWYgKGhhc0J1ZmZlcikKLSAgICAg
ICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+
PihwbGF0Zm9ybURhdGEpLnB0cigpKTsKKyAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29k
ZXIsIHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKS5w
dHIoKSk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50
cnk+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5
JiBkYXRhKQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWIKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGhhc0J1ZmZlcikgewotICAgICAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdmFsdWU7CisgICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHZhbHVlOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCB2
YWx1ZSkgfHwgIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkYXRh
LnBsYXRmb3JtRGF0YSA9IHsgdmFsdWUucmVsZWFzZU5vbk51bGwoKSB9OwpAQCAtMjk3Niw3ICsy
OTc2LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHsgeyBX
VEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OworICAg
IHJldHVybiB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9Owog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTMwMTAsNTYgKzMw
MTAsNTYgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFAKIH0KICNlbmRpZgogCi12b2lkIEFyZ3Vt
ZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3Zv
aWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29k
ZXIsIGJ1ZmZlci5nZXQoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwog
ICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gYnVmZmVyOwogfQogCi12b2lkIEFyZ3Vt
ZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3ZvaWQgQXJn
dW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpCiB7CiAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5w
dHIoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3N0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVm
ZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKIH0KIAotdm9pZCBB
cmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihl
bmNvZGVyLCBidWZmZXIuZ2V0KCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotdm9pZCBB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYgYnVmZmVyKQogewogICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZm
ZXIucHRyKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+
IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVy
OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJl
ZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKQEAgLTMxMjMsNyArMzEyMyw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2NyaXB0QnVmZmVyPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29k
CiAgICAgICAgIHJldHVybiBkZWNvZGVTY3JpcHRCdWZmZXJBc1NoYXJlYWJsZVJlc291cmNlSGFu
ZGxlKGRlY29kZXIpOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRl
Y29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCkBAIC0zMTM1LDcgKzMxMzUsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZQog
ewogICAgIGVuY29kZXIgPDwgbWVzc2FnZS5maXJzdDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5zZWNvbmQuY29weVJlZigpOworICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlS
ZWYoKTsKICAgICBlbmNvZGVyIDw8IG1lc3NhZ2VEYXRhOwogfQogCkBAIC0zMTQ1LDcgKzMxNDUs
NyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4g
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlw
ZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaAppbmRleCBlZjAxMTFmYjU2MmNkZWI2Y2IwZjdhMjUyMWYwOTNhZjI3OTg2Nzlm
Li42ZmFjMmFhMWVhNzg0NmZmNmJmODkwMjFmMGY1MmU5YWE3YWUwM2M4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTE0LDcgKzExNCw3IEBA
IGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBD
ZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDb2xvcjsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKQEAgLTEzOSw3ICsxMzksNyBAQCBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2Ny
aXB0QnVmZmVyOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3ByaW5nVGltaW5nRnVuY3Rpb247
CiBjbGFzcyBTdGVwc1RpbWluZ0Z1bmN0aW9uOwogY2xhc3MgU3RpY2t5UG9zaXRpb25WaWV3cG9y
dENvbnN0cmFpbnRzOwpAQCAtNzUyLDYgKzc1MiwxNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gewogfTsK
ICNlbmRpZgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Jik7Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+Jik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CkBAIC03NjIsMTYgKzc3Miw2IEBAIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsK
ICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVj
b2RlKERlY29kZXImKTsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7Ci0gICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Ci19OwotCi10ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4g
ewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwotfTsKLQog
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IHsK
ICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlciYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4g
ZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhp
dFRlc3RSZXN1bHREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1
bHREYXRhLmNwcAppbmRleCBjZjJlNGQ1ZjkzZmQyZDk0NmJhYmZmOTNlZWEzZTllODYwYWViYmY0
Li5iNjA3YWNlODM4ZTA0YmNlMWE2YWVlNGRhNTY1NTllMDk2OTgzOThlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCkBAIC04NSw3ICs4NSw3IEBA
IFdlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0YShjb25zdCBXZWJDb3Jl
OjpIaXRUZXN0UmVzdWx0JiBoaXRUZXN0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChJbWFn
ZSogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7CiAgICAgICAgIGlmIChidWZm
ZXIpIHsKICAgICAgICAgICAgIGltYWdlU2hhcmVkTWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRNZW1v
cnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CiAgICAgICAgICAgICBpbWFnZVNpemUgPSBidWZmZXIt
PnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENv
ZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsu
Y3BwCmluZGV4IDY0NWQ5YmZhYjc1N2IzMWQ3ZTYwMGU3OGJhYjAzYTdlODkzOTcxODUuLjY3MTc1
OGEyODBhNWU0NDBhYTA2MGE3OWNmMWYwZjEyNmRiN2JlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lk
IEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBTZWxlY3Rpb25EYXRhJgogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSA9IHNlbGVjdGlvbi5o
YXNDdXN0b21EYXRhKCk7CiAgICAgZW5jb2RlciA8PCBoYXNDdXN0b21EYXRhOwogICAgIGlmICho
YXNDdXN0b21EYXRhKQotICAgICAgICBlbmNvZGVyIDw8IFJlZlB0cjxTaGFyZWRCdWZmZXI+KHNl
bGVjdGlvbi5jdXN0b21EYXRhKCkpOworICAgICAgICBlbmNvZGVyIDw8IFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPihzZWxlY3Rpb24uY3VzdG9tRGF0YSgpKTsKIAogICAgIGJvb2wgY2Fu
U21hcnRSZXBsYWNlID0gc2VsZWN0aW9uLmNhblNtYXJ0UmVwbGFjZSgpOwogICAgIGVuY29kZXIg
PDwgY2FuU21hcnRSZXBsYWNlOwpAQCAtMTU5LDEwICsxNTksMTAgQEAgc3RkOjpvcHRpb25hbDxT
ZWxlY3Rpb25EYXRhPiBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0N1c3RvbURhdGEpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChoYXNDdXN0b21EYXRhKSB7Ci0gICAgICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIp
KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgc2VsZWN0aW9uLnNl
dEN1c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKKyAgICAg
ICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOwog
ICAgIH0KIAogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAppbmRleCA4YWVmNGE1
MDFkYWQ5Mjc2NmM3MTlmYzUwMDZjNmRmMTJhZGE1YWEwLi4yOTJkNzE0NTJjNWMzYTk0OTJiMmY1
YjYxNjgyNzM1MzBhYzJkZDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4v
V2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93
aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0ZDo6
b3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNv
ZGVQbGF0Zm9ybURhdGEoRGVjCiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhKiBj
cmVhdGlvbkRhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKGluY2x1ZGVzQ3JlYXRpb25EYXRhLnZh
bHVlKCkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVy
Pj4gZm9udEZhY2VEYXRhOwogICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAgICAg
ICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IGM5
MGQzZDgxMTNmNzE5MDFiMDhmMjY0ODkxNmFkMmNjMjlkOTgzMzQuLjE0OTBjNTExYmRjMzhiZDhh
YjRhNjk1YWVjZjMwNmQ5NWZhYTM5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTk4LDE3ICs5OCwxNyBAQCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBBdHRhY2htZW50OjpmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdAogICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFj
aG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigp
IGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVT
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwog
fQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24o
UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5n
JikKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCmluZGV4IGM2YzJh
MDZlYzk3ZGRmMGQ2Y2FiNDJiNGE2NDA5YjNjNDdiNGRlZmUuLmZlNTBlNTM4YjhlYmIzNTFhNDgz
NmQxZGQ4OTNkMTQ3YTU2YTg3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElBdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUF0dGFjaG1lbnQuaApAQCAtMzgsOCArMzgsOCBAQCBPQkpDX0NMQVNTIE5TRmlsZVdyYXBwZXI7
CiBPQkpDX0NMQVNTIE5TU3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04MywxNCArODMsMTQg
QEAgcHVibGljOgogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBlbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdDsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jbG9zaW5nSW1hZ2VEYXRhKCkg
Y29uc3Q7CiAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemVGb3JEaXNwbGF5KCkg
Y29uc3Q7CiAKICAgICB2b2lkIHNldEhhc0VuY2xvc2luZ0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5n
SW1hZ2UpIHsgbV9oYXNFbmNsb3NpbmdJbWFnZSA9IGhhc0VuY2xvc2luZ0ltYWdlOyB9CiAgICAg
Ym9vbCBoYXNFbmNsb3NpbmdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRW5jbG9zaW5nSW1h
Z2U7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVh
dGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZUZyb21T
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7
CisgICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CiAKIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgQXR0YWNobWVudChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRp
ZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDJmNDQ4YTc2
MzkyN2UwMmVjYzE1OTc1NjAyYzkwMWI3MTlhMWE2MTAuLjM2YTZmNGZiMDdmMGFiOWRkYzdhNDYx
OGZlZDQyMmVjMzg5NzQwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHRl
bXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBk
YXRhLCBjb25zdCBGdW5jdGlvbjxiCiB7CiAgICAgZGF0YS5hcHBseShmdW5jdGlvbik7CiB9Ci10
ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVu
Y3Rpb24pCit0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5j
dGlvbikKIHsKICAgICBmdW5jdGlvbih7IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSB9KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlz
dFN0b3JlLmgKaW5kZXggN2ZjMDU0NTdlNjRjZjU4OWIwZmIwZTdlMDM2ZjY5MGZhMmMxN2JhYy4u
NGUyNjZmMzY3YWM2MDJiOGVmMWVhZjc1N2EwYTA0ZGM3M2Y3NzFhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKQEAg
LTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAppbmRleCA1NjIzNDAxNDU5ZGE1ZmUzMGY0
OTFhNDFmYjM0N2E2NzU3MjAyYzQwLi4xMTFmMDkyNjNmODIyMzgyOWE1YWQyNjQ0MzRiYTQyMGYx
OThkZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQ2xpZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RydWN0IENvbnRlbnRSdWxlTGlzdFJlc3Vs
dHM7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogfQogCkBAIC0xMTksNyAr
MTE5LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdmlydHVhbCB2b2lk
IGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExv
YWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKSB7IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBSZWY8TmF2aWdh
dGlvbkFjdGlvbj4mJiwgUmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYm
IGxpc3RlbmVyLCBPYmplY3QqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KaW5kZXggOTRkYjU1NzUzMjg1ZjhhMDNm
MGRhMmMzY2EyZDg2ODE3YzI5NTI5NS4uZGZlZjNlMDcwZjk2MTYzMDQ5NzE0NGRhZjNmMzAwY2I0
Y2E1MTk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQ
SUF0dGFjaG1lbnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvQVBJQXR0YWNobWVudENvY29hLm1tCkBAIC0xMzcsNyArMTM3LDcgQEAgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gQXR0YWNobWVudDo6ZmlsZVNpemVGb3JEaXNwbGF5KCkgY29uc3QKICAgICBy
ZXR1cm4gW2ZpbGVXcmFwcGVyIHJlZ3VsYXJGaWxlQ29udGVudHNdLmxlbmd0aDsKIH0KIAotUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRh
KCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBBdHRhY2ht
ZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9oYXNFbmNsb3Np
bmdJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNTksNyArMTU5LDcgQEAgYm9v
bCBBdHRhY2htZW50Ojppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gIW1fZmlsZVdyYXBwZXIg
JiYgIW1fZmlsZVdyYXBwZXJHZW5lcmF0b3I7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRp
b24oKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3Jl
YXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICBhdXRvIGZpbGVXcmFw
cGVyID0gdGhpcy0+ZmlsZVdyYXBwZXIoKTsKIApAQCAtMTcwLDEwICsxNzAsMTAgQEAgUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGkKICAgICBpZiAoIXNlcmlhbGl6ZWREYXRhKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOworICAgIHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRl
RnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBj
b250ZW50VHlwZSkKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNl
bnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGlmICghbV93ZWJQ
YWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IDZiNzU2YWE0MTdiNTFlZGQ3ZmQzZmZiZGRm
M2MyMmU0NDUzMTkyOTAuLmY1YWYwOTJiYjIyNTgyMDU5NmNiMDI1MzBkMGRiMGI3Njk0NDAzMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0
azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0
azMuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQo
SW50UG9pbnQmJiBwb3NpdGlvbiwgR3RrU2VsZWN0aW9uRGF0YSogZGF0YSwgdW5zaWcKICAgICAg
ICAgaW50IGxlbmd0aDsKICAgICAgICAgY29uc3QgYXV0byogY3VzdG9tRGF0YSA9IGd0a19zZWxl
Y3Rpb25fZGF0YV9nZXRfZGF0YV93aXRoX2xlbmd0aChkYXRhLCAmbGVuZ3RoKTsKICAgICAgICAg
aWYgKGxlbmd0aCA+IDApCi0gICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURh
dGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0
PHNpemVfdD4obGVuZ3RoKSkpOworICAgICAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRDdXN0
b21EYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVf
dD4obGVuZ3RoKSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAppbmRleCBhYzRhMGY0Mzcw
MTUyZWQ1NzJiNTA5MWRmYTUxYmFlYmFiODdmNGU5Li5jODAyOWMxNDBhNmRkMTRiMTk2NDkyMjVi
ODc4MzBlZWMxMzQwMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAKICNpZiBVU0Uo
UVVJQ0tfTE9PSykKICAgICAgICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJp
bmcmIHV0aSkgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7CisgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggNzI1Yjc3MGY2YzU0MjZhYzhjYjdiNjc0
YzQ2MWY4MWUzZWUzNjYwNy4uOGQzYTg1NjQ2MmVhZWY3NDFkOGMyOWUyNTkyZmQ1NzM2NmY1OTlj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5tbQpAQCAtMTIyMCw3ICsxMjIwLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnIKICAgICBb
c3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25E
ZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRT
dGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lV2l0aEZpbGVOYW1lOmZpbGVO
YW1lIHV0aTp1dGldOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVu
dDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVu
dDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3Rh
dGUpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggYmUxNDM3MGRlMDliZDU3MDJiOWM3
ZGRjZDZjNzdiOGY2ZGE1ZjViOC4uNjgzMzczZWFlMDBmNWRiNDJiODE0NmNlOWQ1MzFiYzhhYzBh
NTRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vz
c1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Byb3h5Q29jb2EubW0KQEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6c2VuZEF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucygpCiAgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgYXV0byByZWdp
c3RyYXRpb25EYXRhID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJl
Z2lzdHJhdGlvbnMuZ2V0KCkpOworICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25EYXRhID0g
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7CiAgICAg
ICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlv
Q29tcG9uZW50UmVnaXN0cmF0aW9ucyh7IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkgfSksIDAp
OwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5oCmluZGV4IDNmNmRkMWYyNDJlN2ExMTVlY2Y3OTgzOTBmMzRiNjM1YzZlOGQ2
ZjkuLmY1ODkxMjQxNzAyZGFhNDIwY2M0ZTZlMjQ2MjhhMWNkZTg5MDdkMjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaApAQCAtNTA2LDcgKzUwNiw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwg
Y29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlKTsKICAgICB2b2lkIHNldEZpbGVB
bmRVUkxUeXBlcyhOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3Ry
aW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIE5TUGFzdGVi
b2FyZCAqKTsKLSAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdl
KiwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0
bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcg
KnBhc3RlYm9hcmRPcmlnaW4pOworICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2Vi
Q29yZTo6SW1hZ2UqLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5T
U3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0
ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKnBhc3RlYm9hcmRPcmlnaW4pOwogICAgIHZvaWQgcGFzdGVi
b2FyZENoYW5nZWRPd25lcihOU1Bhc3RlYm9hcmQgKik7CiAgICAgdm9pZCBwcm92aWRlRGF0YUZv
clBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICosIE5TU3RyaW5nICp0eXBlKTsKICAgICBOU0FycmF5
ICpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVz
dGluYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQppbmRleCA2ODE0YTcwYTAyYmE1ZGNhZWFhZjRmNDRlMDUxNDg3Zjc5N2I0ZTA5Li42MjM2N2Rj
NWFkMWZlMTIyMWY3YjA5OWU5YmI0NDU0ZGIzN2E1OGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgYm9vbCBX
ZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0
ZWJvYXJkLCBOU0FycmF5ICoKICAgICAgICAgaWYgKFtbdHlwZXMgb2JqZWN0QXRJbmRleDppXSBp
c0VxdWFsVG86V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0pCiAgICAgICAg
ICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6bV9wYWdlLT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKCkgZm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsK
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChb
dHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0
eXBlcyBvYmplY3RBdEluZGV4OmldKTsKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6
YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOlt0eXBl
cyBvYmplY3RBdEluZGV4OmldXTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ0NDksNyArNDQ0OSw3
IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldEZpbGVBbmRVUkxUeXBlcyhOU1N0cmluZyAqZmlsZW5h
bWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TCiAgICAgbV9wcm9taXNlZFVSTCA9IHVybDsKIH0K
IAotdm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1h
Z2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3Ry
aW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciogYXJjaGl2ZUJ1ZmZlciwgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBO
U1N0cmluZyAqb3JpZ2luSWRlbnRpZmllcikKK3ZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2Vk
RGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuYW1lLCBO
U1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3Ry
aW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBhcmNoaXZl
QnVmZmVyLCBOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5TU3RyaW5nICpvcmlnaW5JZGVudGlm
aWVyKQogewogICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFz
dGVib2FyZFdpdGhOYW1lOnBhc3RlYm9hcmROYW1lXTsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IHR5cGVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9i
amVjdHM6V2ViQ29yZTo6bGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKSwgbmlsXSk7
CkBAIC00NTg0LDcgKzQ1ODQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVB
Y2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN0cmluZyYgbwogICAgIGhhbmRs
ZURPTVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25z
ZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBOU0RhdGEgKmRhdGEgPSBbTlNQYXN0ZWJvYXJk
LmdlbmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE6OmNvY29hVHlwZSgpKV07Ci0gICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgYXV0byBidWZmZXIgPSBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBv
cmlnaW5JZGVudGlmaWVyKSB7CiAgICAgICAgIG1fcGFnZS0+Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQ
YXN0ZWJvYXJkRGF0YShOU1Bhc3RlYm9hcmROYW1lR2VuZXJhbCk7CiAgICAgICAgIGNvbXBsZXRp
b24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6R3JhbnRlZEZvckdlc3R1cmUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDU1MTY2NjZjNWEzMTE3MmM5ODZl
MzJhYmYzYzZiMDFkNDU2ZjM2YWYuLmI0NjJkOGRiNWNjNjIwMzg2ZTc2ODNkYjI0ODM2YWIzY2U2
NGZlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTMyOCw3ICszMjgs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFVTRShBUFBLSVQpCi0gICAgdmlydHVhbCB2b2lk
IHNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRp
ZmllcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgPSAw
OwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9EZXZp
Y2VTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSA9IDA7CkBAIC00NjgsNyArNDY4LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzaW5nRWxlbWVudCgpID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRF
dmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25J
bmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlv
biYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhdmVJ
bWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5
LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dEYXRhRGV0ZWN0b3Jz
VUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNE
dXJpbmdUYXBJZk5lY2Vzc2FyeShXZWJLaXQ6OlRhcElkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOWZmMjNhODY2ZmYwZDg2Mjc1MTg1YmY2
MjlmMWE0NzZjZjRmZTZkMy4uZTVlYWY0MWYzOGI2NDdiYzVmMzczZGIwNzlkZWI0MTZhYTk2M2Qx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI1OSw3ICsyNTks
NyBAQCBjbGFzcyBJbnRTaXplOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUnVuTG9v
cE9ic2VydmVyOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblJlcXVl
c3Q7CiBjbGFzcyBUZXh0SW5kaWNhdG9yOwogY2xhc3MgVmFsaWRhdGlvbkJ1YmJsZTsKQEAgLTEx
NzksNyArMTE3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNz
aWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rva2VuKTsKICAgICBib29sIHJlYWRTZWxlY3Rp
b25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBTdHJp
bmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KTsKICAgICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVj
aG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IDU4NTQ3ZDg0ODgxZGM4MzBmNjk2OWEwY2E5NzY3
MDM1NGZlYWQwMGUuLjE5OTdlYWUyMGFjMjJjYTNhZTgwMDRjNzA0ZmEyMmRhNjA5ZTAwOWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0xNjks
NyArMTY5LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIC0+IEUKICAgICByZXR1cm4gRXhjZXB0aW9u
VHlwZTo6Tm9uZTsKIH0KIAotYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHlwZQorYXV0byBXZWJVUkxT
Y2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggYjA3
YzE0OWZkNGRhMTVjZWVjNGE4ZWZkYWFiN2E1YTFiZTZhZGY3MC4uNzk5NDJmOWIyMGEyNjYwY2E0
YTdkY2Q0NTAxOGQxNmU0M2I2NjZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBGcmFtZUluZm87CiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBj
bGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoK
ICAgICBFeGNlcHRpb25UeXBlIHdpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgIEZ1bmN0aW9uPHZvaWQo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFBl
cmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgRXhjZXB0aW9uVHlwZSBkaWRS
ZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBFeGNlcHRpb25U
eXBlIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KTsKICAgICBFeGNlcHRpb25UeXBlIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKIAogICAgIHZvaWQgc3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0Ns
aXBib2FyZC5oCmluZGV4IDc4NjZjZGIxNzc0NjAwN2FiMGE3YTE3YzU1Yjg3YzdmMTY0YzJiYWUu
LjcyNzlmODQ0Y2MyYmJkMmIwMTdmZTBmMDk3ZGUwMTg3MGE5YTg1MjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKQEAgLTM2LDcgKzM2LDcgQEAgdHlwZWRlZiBzdHJ1
Y3QgX0d0a0NsaXBib2FyZCBHdGtDbGlwYm9hcmQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU1LDcgKzU1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZm9ybWF0cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxT
dHJpbmc+JiYpPiYmKTsKICAgICB2b2lkIHJlYWRUZXh0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RyaW5nJiYpPiYmKTsKICAgICB2b2lkIHJlYWRGaWxlUGF0aHMoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IGNo
YXIqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
PiYmKTsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgY2hhciosIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmKTsKICAgICB2
b2lkIHdyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJik7CiAgICAgdm9pZCBjbGVhcigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKaW5kZXgg
YzJiZjUxODNiMzBmMTBlOWViNzgxM2NkYWRhMjIzZTkxODljNzQ1OS4uNTk2NmQ1NTc0YzI4MmY1
MzE2OTQwOTYwODI5NjBhZTMzOWNhMTEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9DbGlwYm9hcmRHdGszLmNwcApAQCAtMTI2LDE1ICsxMjYsMTUgQEAgdm9pZCBDbGlwYm9h
cmQ6OnJlYWRGaWxlUGF0aHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYm
KT4mJiBjb21wbGUKIHN0cnVjdCBSZWFkQnVmZmVyQXN5bmNEYXRhIHsKICAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAKLSAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYg
aGFuZGxlcikKKyAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGhhbmRs
ZXIpCiAgICAgICAgIDogY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkKICAgICB7
CiAgICAgfQogCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5k
bGVyOwogfTsKIAotdm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9ybWF0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hh
ciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBndGtfY2xpcGJv
YXJkX3JlcXVlc3RfY29udGVudHMobV9jbGlwYm9hcmQsIGdka19hdG9tX2ludGVybihmb3JtYXQs
IFRSVUUpLCBbXShHdGtDbGlwYm9hcmQqLCBHdGtTZWxlY3Rpb25EYXRhKiBzZWxlY3Rpb24sIGdw
b2ludGVyIHVzZXJEYXRhKSB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFkQnVmZmVyQXN5
bmNEYXRhPiBkYXRhKHN0YXRpY19jYXN0PFJlYWRCdWZmZXJBc3luY0RhdGEqPih1c2VyRGF0YSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCmluZGV4
IDA3YWJiNzEzMTk4ODUzYjc4N2M2MzI0YmQ0ODBiMWUwODhhMmEzZDMuLjViODFmYThmMjlkM2Y3
Y2YxYzNmMDlkMWZjM2M4ODczNGRjNTFhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKQEAgLTEyMCwxNSArMTIwLDE1IEBAIHZvaWQgQ2xpcGJv
YXJkOjpyZWFkRmlsZVBhdGhzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4m
Jik+JiYgY29tcGxlCiBzdHJ1Y3QgUmVhZEJ1ZmZlckFzeW5jRGF0YSB7CiAgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5jRGF0
YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYm
IGhhbmRsZXIpCisgICAgZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5jRGF0YShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBoYW5k
bGVyKQogICAgICAgICA6IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikpCiAgICAg
ewogICAgIH0KIAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5kbGVyOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9uSGFu
ZGxlcjsKIH07CiAKLXZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0IGNoYXIqIGZvcm1h
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0IGNo
YXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29uc3QgY2hh
ciogbWltZVR5cGVzW10gPSB7IGZvcm1hdCwgbnVsbHB0ciB9OwogICAgIGdka19jbGlwYm9hcmRf
cmVhZF9hc3luYyhtX2NsaXBib2FyZCwgbWltZVR5cGVzLCBHX1BSSU9SSVRZX0RFRkFVTFQsIG51
bGxwdHIsIFtdKEdPYmplY3QqIGNsaXBib2FyZCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2lu
dGVyIHVzZXJEYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oCmluZGV4IGU5ZDIzNjkzY2RjOWE3MGVmMWQyMTQ4MDYzMWE0NWNmZTk2N2Fh
OGMuLjU2MDczYmI4Mzc3YjA2YmM0MTVkNTZlMDY3OGMzMTZmNmM4ZTJiYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xODcsNyAr
MTg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgpIG92ZXJyaWRl
OwogICAgIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVu
dCYsIGJvb2wgaXNDaGFyRXZlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgcG9zaXRpb25JbmZvcm1h
dGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92
ZXJyaWRlOwotICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFy
eShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dQ
bGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9y
bWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bQppbmRleCA2NmFjNGNhYThjODMyYjNkYjUxODk3OWIwZWRiZmI2MTY0NjRkMDM2Li4zMmQxZjg5
YzA1OGI5YjQwYTE4ZThmNjdiYzdiZTlmMGExMDI1MDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0zNTcsNyArMzU3LDcgQEAg
dm9pZCBQYWdlQ2xpZW50SW1wbDo6cG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXQKICAgICBbbV9jb250ZW50VmlldyBfcG9zaXRpb25JbmZv
cm1hdGlvbkRpZENoYW5nZTppbmZvXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUlt
YWdlVG9MaWJyYXJ5KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyKQor
dm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxTaGFyZWRCdWZmZXI+
JiYgaW1hZ2VCdWZmZXIpCiB7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW1hZ2VEYXRhID0gaW1h
Z2VCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOwogICAgIFVJSW1hZ2VEYXRhV3JpdGVUb1NhdmVkUGhv
dG9zQWxidW0oaW1hZ2VEYXRhLmdldCgpLCBuaWwsIE5VTEwsIE5VTEwpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
aW5kZXggMGM2MjVjMzBkMzAzZmJkOTg0OWI4NGI2ZTdhYWZhMzRjZjdjMzQ5Ni4uMWE4MWNjZTQ0
NTVlYjFhNzJiMTBlOGYyNDczYzYwYTI5MWVhNThiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zODIx
LDcgKzM4MjEsNyBAQCAtIChCT09MKWNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OihTRUwpYWN0
aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRlcgogCiAgICAgICAgIE5TQXJyYXkgKmFsbEN1c3RvbVBh
c3RlYm9hcmREYXRhID0gW3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoV2ViQ29y
ZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSBpbkl0ZW1TZXQ6aW5kaWNlc107
CiAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGFsbEN1c3RvbVBhc3RlYm9hcmREYXRhKSB7
Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVi
b2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9
PSBmb2N1c2VkRG9jdW1lbnRPcmlnaW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIFlFUzsKICAg
ICAgICAgfQpAQCAtNjU5OSw3ICs2NTk5LDcgQEAgc3RhdGljIEJPT0wgYWxsUGFzdGVib2FyZEl0
ZW1PcmlnaW5zTWF0Y2hPcmlnaW4oVUlQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBjb25zdAogICAg
ICAgICBpZiAoIWRhdGEubGVuZ3RoKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
YXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSk7CiAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNo
YXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpICE9IG9yaWdpbklkZW50aWZpZXIpCiAg
ICAgICAgICAgICByZXR1cm4gTk87CiAKQEAgLTc1NzAsNyArNzU3MCw3IEBAIC0gKHZvaWQpYWN0
aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgc2hh
cmVFbGVtZW50V2l0CiB7CiAgICAgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBzaGFy
ZURhdGE7CiAgICAgTlNTdHJpbmcqIGZpbGVOYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCIlQC5wbmciLCAoTlNTdHJpbmcqKVdFQl9VSV9TVFJJTkcoIlNoYXJlZCBJbWFnZSIsICJE
ZWZhdWx0IG5hbWUgZm9yIHRoZSBmaWxlIGNyZWF0ZWQgZm9yIGEgc2hhcmVkIGltYWdlIHdpdGgg
bm8gZXhwbGljaXQgbmFtZS4iKV07Ci0gICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1l
LCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJl
c2VudGF0aW9uKGltYWdlKSkgfSB9OworICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxlTmFt
ZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9u
KGltYWdlKSkgfSB9OwogICAgIFtzZWxmIF9zaG93U2hhcmVTaGVldDpzaGFyZURhdGEgaW5SZWN0
OiB7IFtzZWxmIGNvbnZlcnRSZWN0OmJvdW5kaW5nUmVjdCB0b1ZpZXc6c2VsZi53ZWJWaWV3XSB9
IGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGJhOTk1ZmI5ZTA2YmY4ZGRhZjU1YWEwN2Ri
MGYyZmZhODJkMTgzMTMuLmY4MGM4MjQ5ZGE0NjdiOTQyMDM1ZTQ2MDZlODk5YmNiNjRlZGJjNmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpA
QCAtMTM4LDcgKzEzOCw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZv
clBhc3RlYm9hcmQoKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdl
YlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAppbmRleCBkMjIzOGZkYzlk
MTZmNzdmOGMzZDMwMmNhOTk3NmZlODNmMWIzZjM3Li5hYjg3YzJhN2U4YzM1N2E2NWIzY2ZlNjA3
OTM4ZmRmZWM4YTY1MmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGxNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaApAQCAtMTAwLDggKzEwMCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBl
eGVjdXRlVW5kb1JlZG8oVW5kb09yUmVkbykgb3ZlcnJpZGU7CiAgICAgYm9vbCBleGVjdXRlU2F2
ZWRDb21tYW5kQnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yKSBvdmVycmlkZTsKICAg
ICB2b2lkIHN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYsIGNvbnN0IFNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlJiBpbWFnZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRQcm9taXNlZERh
dGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwKLSAgICAgICAgY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIp
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
aW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5z
aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAorICAgICAgICBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpIG92
ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwogICAg
IHZvaWQgcmVzZXRTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlJ
bnB1dENvbnRleHRBYm91dERpc2NhcmRlZENvbXBvc2l0aW9uKCkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXggYTQx
MTIxMzVmMmVmMTkwMTVhNTJmMWUxYjAzYWUzMGExZjIyM2QyYS4uYzM2M2U5NTVlODc5YzBlMTg2
YjQxNTA5MDkxMzM2NWMyMGZlOTA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtNDAwLDcgKzQwMCw3IEBAIHZvaWQgUGFnZUNs
aWVudEltcGw6OnN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYgaXRlbSwgY29uc3Qg
U2hhcmVhYmxlQml0CiAgICAgbV9pbXBsLT5zdGFydERyYWcoaXRlbSwgaW1hZ2UpOwogfQogCi12
b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0
aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50
aWZpZXIpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBp
bWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNp
b24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IHZpc2libGVVUkwsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZm
ZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKIHsKICAgICBhdXRvIGltYWdlID0g
Qml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGltYWdlLT5zZXREYXRhKFdURk1vdmUoaW1hZ2VC
dWZmZXIpLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tCmluZGV4IGE3ZmI0YWFiY2Y3NGQxYmQ3MjkyYzMwYWY3NzI5OGJiOTQwZGQwMGMu
LjAxZDg0MGEyYTYzZWFjNzkxZmJkODRmYmU2MzdiNWIyOGNmNjEzMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjI3LDcgKzIyNyw3
IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQog
ICAgIHJldHVybiB2YWx1ZTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBh
Z2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQcm9t
aXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTCiAg
ICAgICAgIHJldHVybjsKICAgICBhdXRvIGltYWdlQnVmZmVyID0gc2hhcmVkTWVtb3J5SW1hZ2Ut
PmNyZWF0ZVNoYXJlZEJ1ZmZlcihpbWFnZUhhbmRsZS5kYXRhU2l6ZSk7CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBhcmNoaXZlQnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBhcmNoaXZlQnVmZmVyOwogICAgIGlmICghYXJjaGl2ZUhhbmRsZS5oYW5kbGUuaXNO
dWxsKCkpIHsKICAgICAgICAgYXV0byBzaGFyZWRNZW1vcnlBcmNoaXZlID0gU2hhcmVkTWVtb3J5
OjptYXAoYXJjaGl2ZUhhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVh
ZE9ubHkpOwogICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeUFyY2hpdmUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKaW5kZXggZmE5NDAyNWVk
NzQ3MzBkMjhlNzE2NDYyODVmOWU1YmE2NTNiOGYxMi4uYzI4ZmU2NWYwY2YxNjQzOTk4MThhY2Ez
MmY5ODFjYzc3OGYxZTkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNLmNwcApAQCAtODQsNyArODQsNyBAQCBib29sIFJlbW90ZUNETTo6c3Vw
cG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETVNlc3Npb25UeXBlJiwg
Y29ucwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKSBj
b25zdAorYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYg
dHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkgY29uc3QKIHsKICAgICAv
LyBUaGlzIGNoZWNrIHdpbGwgYmUgZG9uZSwgbGF0ZXIsIGluc2lkZSBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UoKS4KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEy
OSw3ICsxMjksNyBAQCB2b2lkIFJlbW90ZUNETTo6bG9hZEFuZEluaXRpYWxpemUoKQogICAgIG1f
ZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6UmVtb3RlQ0RNUHJveHk6OkxvYWRBbmRJbml0aWFsaXplKCksIG1faWRlbnRpZmllcik7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZShjb25z
dCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IFJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICAvLyBUaGlzIGNoZWNrIHdpbGwgYmUgZG9u
ZSwgbGF0ZXIsIGluc2lkZSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlTGlj
ZW5zZSgpLgogICAgIHJldHVybiByZXNwb25zZS5jb3B5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaAppbmRleCAwYWRkZjgzMzUzYjZlYTFiMmU4
YjAyYzZiN2VlM2RhZjQ2OGNkMzgzLi44YzQ1NGViODNlNTk5NGE4ZTRkNTkyZDUxZGY5MWZmOWI1
MjNjYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNLmgKQEAgLTQ4LDEzICs0OCwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wgc3VwcG9ydHNDb25m
aWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25z
dCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMo
Y29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6
OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9u
VHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETVNlc3Npb25UeXBlJiwgY29u
c3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwotICAg
IGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikg
Y29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVu
dGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBX
ZWJDb3JlOjpDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBX
ZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVz
dHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJz
QXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8V2ViQ29yZTo6Q0RNSW5z
dGFuY2U+IGNyZWF0ZUluc3RhbmNlKCkgZmluYWw7CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6
ZSgpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVz
cG9uc2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25z
dCBmaW5hbDsKIAogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVz
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRlZEluaXREYXRh
VHlwZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKaW5kZXggYjVkZWEyMWU5OTVhNzM3ZjAzNmY2NDUzOGMx
ZmIzZWNiNWU2YmI1NS4uYTEzZTUxNDYwZjZiYjlmODBlZjNkMWE4NDJlZmMwYjlmNDQ1OTBjNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5j
ZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3Rl
bUMKICAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6SW5pdGlh
bGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGRpc3RpbmN0aXZlSWRlbnRpZmll
cnMsIHBlcnNpc3RlbnRTdGF0ZSksIFdURk1vdmUoY2FsbGJhY2spLCBtX2lkZW50aWZpZXIpOwog
fQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBjYWxs
YmFjayhGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCmluZGV4IDEwNmJhM2IxMTYxYzhkZjA5ZDcxZGZlNjc5
YmEzM2Q0MjMwNzllOTYuLjJjNzg1MWU0NDBiMDhhNTJhMmFlNzBkYTdlNDE4ODgyZTNjNjE0Mzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKIAogICAgIEltcGxlbWVu
dGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBs
ZW1lbnRhdGlvblR5cGU6OlJlbW90ZTsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1
cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rp
c3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJh
Y2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
U3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShj
b25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5rZXlTeXN0ZW07IH0KICAgICBSZWZQdHI8
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKaW5kZXggYWYwYmFkNGM5MGQ4ZGQ1MTM3NzRhZWY2YTE1
Yjc3YmE4OWZjNTA2NC4uYzc0MGMwNDUwNmZkZWRhYzlmNGNmNTAyYzIwNWE4YTM3ZmNhNDU5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcApAQCAtNDksNyArNDksNyBAQCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRyPFJlbW90
ZUNETUZhY3Rvcnk+JiYgZgogewogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFj
aykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBjYWxsYmFjayhTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFpbGVkKTsKQEAgLTY1LDcgKzY1
LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcKICAgICB9LCBtX2lkZW50aWZpZXIpOwogfQog
Ci12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNw
b25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGlj
ZW5zZVR5cGUgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExp
Y2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9mYWN0b3J5KSB7
CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0LCBGYWlsZWQpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
TGljZW5zCiAgICAgfQogCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5OjpSZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUpLCBbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEtleVN0YXR1c1ZlY3RvciYmIGNoYW5nZWRLZXlzLCBz
dGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mJiBtZXNzYWdlLCBib29sIHN1Y2Nl
ZWRlZCkgbXV0YWJsZSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+
IHJlYWxNZXNzYWdlID0gc3RkOjpudWxsb3B0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gcmVhbE1lc3NhZ2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIGlmIChtZXNzYWdlICYmIG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKSkKICAgICAgICAgICAg
IHJlYWxNZXNzYWdlID0gbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCk7
CiAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3ZlKHJlYWxNZXNz
YWdlKSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbi5oCmluZGV4IDRmZmU0Y2FjZWNjZGU0M2Q1Y2IxMWUyMzZjYTA0NWFjZGE4M2E3ZWIuLjRl
NGNkMmMwMDVjNmIwMDY1ZjljZGIxODhjNGJjZTBiNWJmYTY2MDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb24uaApAQCAtNTksOCArNTksOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRDbGll
bnQoV2Vha1B0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+JiYgY2xpZW50KSBm
aW5hbCB7IG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOyB9CiAgICAgdm9pZCBjbGVhckNsaWVu
dCgpIGZpbmFsIHsgbV9jbGllbnQgPSBudWxscHRyOyB9Ci0gICAgdm9pZCByZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0g
ICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlw
ZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNh
bGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lk
IHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0
ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgTG9hZFNlc3Npb25D
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVT
ZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlbW92ZVNl
c3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAKaW5kZXgg
OWEyMTlhNTQ0ZTU1MzgzZjU0ZTcxZGFiZDM1NGNjNDQwYTQxNDJiOS4uNjI5MjY3OThjNWMxMTMy
NGEzMWFhNTBjZGE3ZWQxZmJmNzRmZTcwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcApAQCAt
MjAwLDcgKzIwMCw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXRFeHBlY3RlZENv
bnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplCiAKIC8vIElmIGFsbERhdGFS
ZWNlaXZlZCBpcyB0cnVlLCB0aGUgY2FsbGVyIGV4cGVjdHMgZW5jb2RlZERhdGFTdGF0dXMoKSB0
byBiZSA+PSBFbmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZQogLy8gYWZ0ZXIgdGhpcyBm
dW5jdGlvbiByZXR1cm5zIChpbiB0aGUgc2FtZSBydW4gbG9vcCkuCi12b2lkIFJlbW90ZUltYWdl
RGVjb2RlckFWRjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFtX2dwdVBy
b2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaAppbmRl
eCBlNWNmZTk0ZWNkM2E5YzA2MDBmYzAwMzIwZmY0MzA2MWM5MGVkNjliLi40MGQzNzM0ZjdhMzIy
ZThiYWNiOWQxYzBkZWE3MDc5ZTJhZDE3ZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKQEAgLTQ1
LDcgKzQ1LDcgQEAgY2xhc3MgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGIGZpbmFsCiAgICAgOiBwdWJs
aWMgV2ViQ29yZTo6SW1hZ2VEZWNvZGVyCiAgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVt
b3RlSW1hZ2VEZWNvZGVyQVZGPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVJbWFn
ZURlY29kZXJBVkY+IGNyZWF0ZShSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyJiBtYW5hZ2Vy
LCBjb25zdCBXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQorICAgIHN0YXRpYyBS
ZWY8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGUoUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFu
YWdlciYgbWFuYWdlciwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciYgaWRl
bnRpZmllciwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVJbWFn
ZURlY29kZXJBVkYobWFuYWdlciwgaWRlbnRpZmllciwgbWltZVR5cGUpKTsKICAgICB9CkBAIC04
MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgV2ViQ29yZTo6U3Vic2FtcGxpbmdMZXZlbCA9IFdl
YkNvcmU6OlN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IFdlYkNvcmU6OkRlY29kaW5n
T3B0aW9ucyYgPSBXZWJDb3JlOjpEZWNvZGluZ09wdGlvbnMoV2ViQ29yZTo6RGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXpl
KGxvbmcgbG9uZykgZmluYWw7Ci0gICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsK
ICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0Fs
bERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkg
ZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCmluZGV4IDQxZDUz
ODgwMjNkMzkxNDk1MjE4MzVmNjg4ZGU0ZDQ4ZjY1ZDc2N2UuLjA4MmIzMzY2YzhiYzcxMzBkNzVk
NTY5OGE3ZDc5ZTY4OTJhZDhmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2Vy
LmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKLVJlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IFJlbW90ZUltYWdl
RGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2RlcihTaGFyZWRCdWZmZXImIGRhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxS
ZW1vdGVJbWFnZURlY29kZXJBVkY+IFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0
ZUltYWdlRGVjb2RlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3RkOjpvcHRpb25hbDxJ
bWFnZURlY29kZXJJZGVudGlmaWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwogICAgIElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgZGF0YSB9OwpAQCAtMTA4
LDcgKzEwOCw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6c2V0VXNlR1BV
UHJvY2Vzcyhib29sIHVzZUdQVVByb2Nlc3MpCiAgICAgSW1hZ2VEZWNvZGVyOjppbnN0YWxsRmFj
dG9yeSh7CiAgICAgICAgIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c3VwcG9ydHNNZWRpYVR5cGUs
CiAgICAgICAgIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6Y2FuRGVjb2RlVHlwZSwKLSAgICAgICAg
W3RoaXNdKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFP
cHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKSB7CisgICAgICAgIFt0aGlzXShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pIHsK
ICAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbWFnZURlY29kZXIoZGF0YSwgbWltZVR5cGUsIGFs
cGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgICAgIH0KICAgICB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmgKaW5kZXggYzIzNzgyYjY1MDRlYzc5
YmU0NmUxMjZmNGU1OTFiM2ZmN2Y2ZGJhOC4uMzYxOGFmZDEyMDk4YjU1NzZiNGRkNGZmYmYzYzA2
ZmJhODQyYTc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmgKQEAgLTU5LDcg
KzU5LDcgQEAgcHVibGljOgogICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uJiBlbnN1cmVHUFVQcm9j
ZXNzQ29ubmVjdGlvbigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxSZW1vdGVJbWFnZURlY29k
ZXJBVkY+IGNyZWF0ZUltYWdlRGVjb2RlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OkFscGhhT3B0aW9uLCBXZWJDb3JlOjpHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFW
Rj4gY3JlYXRlSW1hZ2VEZWNvZGVyKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OkFscGhhT3B0aW9uLCBXZWJDb3Jl
OjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKICAgICAvLyBHUFVQcm9jZXNzQ29ubmVj
dGlvbjo6Q2xpZW50LgogICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQ
cm9jZXNzQ29ubmVjdGlvbiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAK
aW5kZXggOTY2ZmM5M2I3N2FmYWEzZTYyMDhkN2FiYTVhZWQyYzdhOTRjNzRiMi4uMDA1YTM3Y2My
NmVjNGMwOTAxYmY0ZjM3MTIyMzg2NWRlMmQxNjZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGUuY3BwCkBAIC03OCw3ICs3OCw3IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6On5T
b3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlKCkKICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5t
ZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9yZW1vdGVTb3Vy
Y2VCdWZmZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGU6OmFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKQogewogICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbikKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaAppbmRleCAzNjAxNzViZmJlOWQxYWY4M2Vk
NTc5MTM3M2I3NzVlZTc1MGFjN2NjLi5lYTVmYTNlYzM2YzJiODU5ZWU1NzhjY2QwZTAzNDhjNzNj
Yjg2ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Nv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaApAQCAtNzIsNyArNzIsNyBAQCBw
cml2YXRlOgogCiAgICAgLy8gU291cmNlQnVmZmVyUHJpdmF0ZSBvdmVycmlkZXMKICAgICB2b2lk
IHNldEFjdGl2ZShib29sKSBmaW5hbDsKLSAgICB2b2lkIGFwcGVuZChSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZChSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBhYm9ydCgpIGZpbmFsOwogICAg
IHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlZEZyb21NZWRp
YVNvdXJjZSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCmluZGV4IDExYjRhODZlNDg1
MmY2YzIwNjFmYTNmYzlhZjI5Zjg4OTlmNGViOWYuLmI0MDg5ZmQzNTQ4Yzk3ZjE3ZmMyYjlmYjAw
Mjc4MGQ2NDNjZjIzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKQEAgLTE2NSwxMCArMTY1
LDEwIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OnN0b3JhZ2VDaGFuZ2VkKFNoYXJlZE1l
bW9yeSogc3RvcmFnZSwgY29uc3QgV2ViQ29yZTo6CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpBdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZCB7
IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBkYXRhU2l6ZSB9LCBm
b3JtYXQsIGZyYW1lQ291bnQgfSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZTo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OmZldGNoRGF0YShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpS
ZW1vdGVNZWRpYVJlY29yZGVyOjpGZXRjaERhdGEgeyB9LCBbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbWltZVR5cGUgPSBtaW1lVHlwZSgpXShhdXRvJiYg
ZGF0YSwgZG91YmxlIHRpbWVDb2RlKSBtdXRhYmxlIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOwogICAgICAgICBpZiAoZGF0YS5zaXplKCkpCiAgICAgICAgICAgICBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlciksIG1pbWVUeXBlLCB0aW1lQ29kZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVy
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNv
cmRlclByaXZhdGUuaAppbmRleCAzMDNhNTRmNzZmMTg1ZTk2NDU0ZWY5ZjViYjQ2MWYyOGUxMjY3
ODZkLi41NzZmZDFjNmU5N2MwY2FkOGNiZmVjOTRlM2JkMzYzMzA3NmU0NGUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAvLyBX
ZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZQogICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFi
bGUoV2ViQ29yZTo6TWVkaWFTYW1wbGUmLCBXZWJDb3JlOjpWaWRlb1NhbXBsZU1ldGFkYXRhKSBm
aW5hbDsKLSAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+
JiYpIGZpbmFsOworICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGRvdWJsZSk+JiYpIGZpbmFsOwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwogICAgIHZvaWQgc3RhcnRSZWNvcmRpbmcoU3Rh
cnRSZWNvcmRpbmdDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWls
YWJsZShjb25zdCBXVEY6Ok1lZGlhVGltZSYsIGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtQXVkaW9E
YXRhJiwgY29uc3QgV2ViQ29yZTo6QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgK
aW5kZXggMmMxMzRlOWU3MTlmOTcyNjVjOGQwOTAzMzQ5YzFlMmY5YzFlMmU4NC4uMDM1M2FhYmY3
ZDRiOTI1YWEyZjE1NjJkNTczYWFmMzA5M2M4M2JjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
QVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1l
bnRGcmFnbWVudDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CkBAIC02Myw3
ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlKFdlYktpdDo6V2Vi
UGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5n
ZVNlbGVjdGlvbihXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJiwgY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4m
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFn
ZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdU
Rjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJikg
eyB9CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJLaXQ6OldlYlBhZ2Um
LCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2Um
LCBib29sKSB7IHJldHVybiBmYWxzZTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQ
SUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCmluZGV4IGEwNjM1MjA0MzM1YjNhYjBl
NmRmYjBjNjc3NzY3ZjQyOGU4YTc3ZTIuLjE4MGIxMTExZWNmMDExMzI4MDkyNjZhMWJjZTI3ZDI2
MGU0ZmEwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBET01XaW5kb3dFeHRlbnNp
b247CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01Niw3ICs1Niw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5QYWdlTG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAg
dmlydHVhbCB2b2lkIHdpbGxMb2FkVVJMUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCopIHsgfQotICAgIHZpcnR1YWwg
dm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3Ry
aW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlVSTCYsIEFQSTo6T2JqZWN0Kikg
eyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViS2l0OjpXZWJQYWdl
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25z
dCBXVEY6OlVSTCYsIEFQSTo6T2JqZWN0KikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZy
YW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJLaXQ6OldlYlBh
Z2UmLCBXZWJLaXQ6OldlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tX
ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJv
d3NlckNvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IGRmOGQ4ODA0N2ZmNjczMTdjYjRhYmZlMzUx
MzA1YTA3NWEwYzNhYmYuLmJjOGVhYjk4NzliZTgwZDg1MWIwMDFjMjAwYzBmMTg1N2E2YzdhMjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KQEAgLTYzNCw3ICs2MzQsNyBAQCAt
ICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5n
RGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgW21fY29udHJvbGxlci0+X2VkaXRp
bmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
cjptX2NvbnRyb2xsZXIgd2lsbFdyaXRlUmFuZ2VUb1Bhc3RlYm9hcmQ6d3JhcHBlcihXZWJLaXQ6
OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQg
Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKKyAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0
YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFs
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMuZ2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC02NDIsNyArNjQy
LDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0lu
RWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAgIGF1dG8gZGF0YUJ5VHlw
ZSA9IFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHBhc3RlYm9hcmREYXRhRm9y
UmFuZ2U6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAg
ICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4gZGF0YUJ5VHlwZSkgewogICAgICAgICAgICAg
ICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZSk7Ci0gICAgICAgICAgICAgICAgcGFzdGVi
b2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhQnlUeXBlW3R5cGVdKSk7CisgICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5k
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKICAgICAg
ICAgICAgIH07CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50LmNwcAppbmRleCBjMzk4MTFlYWM5NGUyOTVlMzgzM2JmY2RkNmMxODJhNGEz
MTAxOTliLi4zNTM2MDY1MjViODQ1NzY4ZTMwMTU4MzhmODkxMWRlOGYyZTA4MDkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcApAQCAtMTM1LDcg
KzEzNSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVU
b1Bhc3RlYm9hcmQoV2ViUGFnZSYgcGFnZSwgY29uc3QKICAgICAgICAgbV9jbGllbnQud2lsbFdy
aXRlVG9QYXN0ZWJvYXJkKHRvQVBJKCZwYWdlKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHJhbmdlKS5n
ZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBh
Z2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6
OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBp
ZiAobV9jbGllbnQuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkgewogICAgICAgICBXS0FycmF5
UmVmIHR5cGVzID0gbnVsbHB0cjsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBw
YWdlLCBjbwogICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlLT5zdHJpbmco
KSk7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ZW0gOiBkYXRhQXJyYXktPmVsZW1lbnRzT2ZUeXBl
PEFQSTo6RGF0YT4oKSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRl
bS0+c2l6ZSgpKTsKICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXVEZNb3ZlKGJ1
ZmZlcikpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUVkaXRvckNsaWVudC5oCmluZGV4IGQ5OGVlMWMxNTVkNGZiODI5MmE1OGQ5YzU4ZTg4MDA3YTEz
NDA1MWEuLjMxZTEzOTZlNzBhZDYwYzE5ZDkzYzY3NWM3NjM0NmZlMGRhNzk0OTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKQEAgLTY0LDcgKzY0LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5nZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBu
b3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJQ
YWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIHdp
bGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lk
IGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZp
bmFsOwogICAgIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYpIGZpbmFsOwogICAg
IGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdt
ZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmIGRlc3RpbmF0aW9uLCBib29sIGlzTW92
ZSkgZmluYWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50LmNwcAppbmRleCBlMDA2YzQ2NGU2MTQzZjkzYmIyNjdmNmE0MDcyYjlmN2RlM2E4OWM2Li4z
ZjQxYjFmMzM4ZmE0NDQ3NDkwNzQ4MTg5YmI4OTk1MWNmMWIxNzJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcApAQCAtNjIsMTAgKzYyLDEwIEBA
IHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZFVSTFJlcXVlc3Qo
V2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzCiBzdGF0aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVmZmVy
KHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIC8vIEJhbGFuY2VkIGJ5
IHJlZigpIGluIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVx
dWVzdCgpLgotICAgIHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihjb25zdF9j
YXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVy
Kj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOwogfQogCi12b2lkIEluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdl
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVm
ZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwg
Y29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQordm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFn
ZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmlu
ZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC53aWxsTG9hZERhdGFSZXF1ZXN0KQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
LmgKaW5kZXggMzZiZDk4MGIyZmFhMWFmNDVhYzMxMDZlYjAxZTlmMzc2YmExM2FjZi4uODYzYmRh
YjYyODRjYTNhYWQyZjlkNWZmZjVmZDY4ZWFiOGIyYjczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KGNvbnN0IFdLQnVuZGxl
UGFnZUxvYWRlckNsaWVudEJhc2UqKTsKIAogICAgIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdl
YlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCopIG92
ZXJyaWRlOwotICAgIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RG
OjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0Kikg
b3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFVSTCYsIEFQ
STo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggOGI1ODIxMTRiOTM1YjI3MjRlOWVh
ZDMzZDZjYTQyY2ZkZjEyY2U0YS4uOTc1NmY1MTkyMGQ2NGM0MmNkYzAwNjgxMTUyNzdlYjExM2Ri
N2QzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yODEsOSArMjgxLDkgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgIGlmICghcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsK
ICAgICAKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxl
LnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikgewot
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIGZyb20gU2hh
cmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBj
cmVhdGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIGhhbmRs
ZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDg3Mjk4YjM3
MjUwNDk4NTcxYWU0OGY4YzkyMTg1ZWIyMGUzMWRlMTIuLjMxMGZjYTc4NzVjMzJjM2NkNzQ3OGRi
NjRmNTlhYzJjZjUwMTYzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIGJvbwogICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJL
aXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJhbWUoKSwgcmVzcG9u
c2UpKSB7CiAgICAgICAgIGF1dG8gaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciA9IG1fY29y
ZUxvYWRlci0+aWRlbnRpZmllcigpOwogICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuYmVn
aW5JbnRlcmNlcHRpbmdSZXNwb25zZShpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyKTsKLSAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZSht
X2NvcmVMb2FkZXItPmZyYW1lKCksIHJlc3BvbnNlLCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlm
aWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGludGVyY2VwdGVkUmVx
dWVzdElkZW50aWZpZXIsIHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiBpbnNwZWN0b3JSZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhKSBt
dXRhYmxlIHsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNl
cHRSZXNwb25zZShtX2NvcmVMb2FkZXItPmZyYW1lKCksIHJlc3BvbnNlLCBpbnRlcmNlcHRlZFJl
cXVlc3RJZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGlu
dGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiBpbnNwZWN0b3JSZXNwb25zZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IG92ZXJyaWRlRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIW1fY29yZUxv
YWRlciB8fCAhbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgICAgICBX
RUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc3BvbnNlOiBub3QgY29u
dGludWluZyBpbnRlcmNlcHQgbG9hZCBiZWNhdXNlIG5vIGNvcmVMb2FkZXIgb3Igbm8gSUQiKTsK
ICAgICAgICAgICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuY29udGludWVSZXNwb25zZShp
bnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyKTsKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFdl
YlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGEsIGludDY0X3QgZQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5n
TmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNob3VsZCBub3Qgc2VuZCBkYXRhIHVu
dGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIAogICAgIGlmIChVTkxJS0VMWSht
X2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9jb3JlTG9hZGVyLT5pZGVudGlm
aWVyKCkpKSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAg
IG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBXVEZNb3ZlKGJ1
ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1f
Y29yZUxvYWRlcikKICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CkBAIC0yOTUsMTEgKzI5
NSwxMSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3Qg
U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZAogICAgIExPRyhOZXR3b3JrLCAiKFdlYlBy
b2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UgZm9yICclcyciLCBt
X2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgV0VCUkVT
T1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZToiKTsKIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIo
KTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRy
eVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIGJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIHNl
bnQgZnJvbSB0aGUgbmV0d29yayBwcm9jZXNzLiIpOwotICAgICAgICBXRUJSRVNPVVJDRUxPQURF
Ul9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiBVbmFibGUgdG8gY3JlYXRlIFNoYXJl
ZEJ1ZmZlciIpOworICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVj
ZWl2ZVJlc291cmNlOiBVbmFibGUgdG8gY3JlYXRlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIiKTsK
ICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gbV9jb3JlTG9hZGVyLT5mcmFtZSgpKSB7CiAgICAg
ICAgICAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCiAgICAgICAgICAgICAgICAg
cGFnZS0+ZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShXZWJD
b3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmludGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6
RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpjcmVhdGVTaGFyZWRCdWZmZXJGYWlsZWRLZXkoKSwgV2Vi
Q29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggNDJkZTQ2MTQxOTc3OGI3YzQ1MGZjYTFlYjAz
N2MxY2U5N2QyZDYzMS4uYTdmNDVjODQwMWIyZmQyZjg3MGUzNjc4YzU4ZmMzMTBjMmUxZjI0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
aApAQCAtMjA3LDcgKzIwNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcml2YXRlQnJvd3NpbmdT
dGF0ZUNoYW5nZWQoYm9vbCkgZmluYWwgeyB9CiAgICAgYm9vbCBnZXRGb3JtVmFsdWUoU3RyaW5n
JiBmb3JtVmFsdWUpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBoYW5kbGVTY3Jv
bGwoV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSkg
ZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0
YSgpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCB3aWxsRGV0YWNo
UmVuZGVyZXIoKSBmaW5hbDsKICAgICBib29sIHBsdWdpbkhhbmRsZXNDb250ZW50T2Zmc2V0Rm9y
QWNjZXNzaWJpbGl0eUhpdFRlc3QoKSBjb25zdCBmaW5hbDsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGQyM2FiYjll
NjUxMWIxM2JiZDUyM2FmNDUxZjQ0MTc4NzNhNmMxZTAuLmQ0N2YzMmI3ZDQ5MTk1NmJkY2U3N2Jm
ZTZmMTVjYTc4NjViZmQxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMjU1Miw3ICsyNTUyLDcgQEAgdm9pZCBQREZQbHVn
aW46Om5vdGlmeURpc3BsYXlNb2RlQ2hhbmdlZChpbnQpCiAgICAgdXBkYXRlU2Nyb2xsYmFycygp
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQREZQbHVnaW46OmxpdmVSZXNvdXJjZURhdGEo
KSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBERlBsdWdpbjo6bGl2ZVJl
c291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgTlNEYXRhICpwZGZEYXRhID0gbGl2ZURhdGEoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCA4OGY0NWNl
NTFjZTMxZGYwYzViM2I3NTg2MjM2YzNmMGQ5YzkzYWQzLi41OGQ3MGEzOWExNmQ2YTRjMGU4YjBj
YTlkMDNhYzNkMzdhZWRmY2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW4uaApAQCAtNjEsNyArNjEsNyBAQCBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFJlY3Q7
CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgU2Nyb2xsYmFyOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC0yODgsNyArMjg4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2lu
dCBjb252ZXJ0VG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnRJbkxvY2Fs
Q29vcmRpbmF0ZXMpIGNvbnN0OwogCi0gICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRy
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25z
dCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0
aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNThjMWM5ZmViZmFjMjVk
NTkxZWNmNGRmNDYxNTg1MmEwMjA4N2Y4NC4uN2ZiMjBjNTkyZGJmYTA5NmUzOGJjMTY4NzAzNzM4
Y2I4ZjQwN2M5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKQEAgLTkyNCw3ICs5MjQsNyBAQCB2b2lkIFBsdWdpblZpZXc6OndpbGxEZXRh
Y2hSZW5kZXJlcigpCiAgICAgbV9wbHVnaW4tPndpbGxEZXRhY2hSZW5kZXJlcigpOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QK
K1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VE
YXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pIHsK
ICAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZp
bmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
CmluZGV4IDM0YmVmYjc1Mzk5MGY2ZmE5YmQ0NzQ1ZDk2ZDNkZjBkYjNjZDYwMjQuLmQxNTNhMjlj
YTE0YTkwZTMyMjdhODkxZTNlZWY1ZTRlNzk3MzUxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6
CiAKICAgICBib29sIHNob3VsZEFsbG93U2NyaXB0aW5nKCk7CiAKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Q7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdDsK
ICAgICBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50Jik7CiAgICAgU3RyaW5nIGdldFNlbGVjdGlvbkZvcldvcmRBdFBvaW50KGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBjb25zdDsKICAgICBib29sIGV4aXN0aW5nU2VsZWN0
aW9uQ29udGFpbnNQb2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IDc2ZGM0MzA2ZDVmMjA4NzNi
YjEzOGJmNjZiYjBjYmQzNjg3N2Y2MWIuLmIwNGNjY2YxMTNlNDkyOGZhNjYzODNiZDI0MzFkYjg3
NDg1M2NjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC03
MSw3ICs3MSw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmCiAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlUmVzcG9uc2Ug
eyByZXNwb25zZSwgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9LCBt
X2ZldGNoSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCmluZGV4IGM4
YzBkODYyZDcxMzkzOGM3NTM4NDFkMjhjODI0ZmRiNTM1ZTc1ZTQuLjZiMGE0MTdjZjBkM2FlMGQ3
Yjg5M2E5OTg2ODNhYmYyYmM0YTRkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAgICB2b2lk
IGRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YUFu
ZEZpbmlzaChSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFp
bChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5p
c2goKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggMTUyMDViYThkMjQ1Mjc2MDIz
NDEyNGYwNTYwMjQ0YjNmODVlNGM1Yy4uN2NmYzAzYTg1ZDM5ZDgxZjM5MmMwYWExMzBmODNmYmQy
YzgzNGYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29s
IFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQXBwbHlTdHlsZShjb25zdCBTdHlsZVByb3BlcnRpZXMm
IHN0eWxlLCBjb25zdCBzdGQ6OgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAot
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJp
bmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFdl
YkVkaXRvckNsaWVudDo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJl
ZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyQXR0YWNobWVu
dElkZW50aWZpZXJGcm9tRGF0YShpZGVudGlmaWVyLCBjb250ZW50VHlwZSwgcHJlZmVycmVkRmls
ZU5hbWUsIGRhdGEuZ2V0KCkpKTsKIH0KQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS53aWxs
V3JpdGVUb1Bhc3RlYm9hcmQoKm1fcGFnZSwgcmFuZ2UpOwogfQogCi12b2lkIFdlYkVkaXRvckNs
aWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVk
aXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0
b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBtX3BhZ2Ut
PmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSgq
bV9wYWdlLCByYW5nZSwgcGFzdGVib2FyZFR5cGVzLCBwYXN0ZWJvYXJkRGF0YSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKaW5kZXggOTE0NmU0YzZkMmUxODllYjUxOTlhZmM5NTgzNjViYjQyZGI1MjFk
Yy4uYjA1ODYxODkxZWNjODRjNjM2OGEyMDZjMjcwMTA2MGY1MDUyZjVlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkTW92ZVJh
bmdlQWZ0ZXJEZWxldGUoY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBjb25zdCBXZWJDb3Jl
OjpTaW1wbGVSYW5nZSYpIGZpbmFsOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
LSAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwg
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCByZWdpc3RlckF0
dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCkgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50
cyhWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKSBmaW5hbDsKQEAg
LTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsK
ICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmRE
YXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVu
dFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIAogICAgIHZvaWQg
cmVnaXN0ZXJVbmRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwogICAgIHZvaWQgcmVn
aXN0ZXJSZWRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKaW5kZXggOTU5MjIzZDc3NmVmOTMyYWIxYTczNzE2MDZlMzI5MWQyMzI5
ZDNjYi4uMTRhMDgzY2EyMDdhOTA2M2NmODBiMWU3ZTk2NzBhNDg3Y2Y0ZDM5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTg4LDcgKzExODgsNyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikK
ICAgICAgICAgICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXIt
Pm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAg
ICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VE
YXRhID8gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0
ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOwogICAg
ICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hM
b2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihsb2FkZXItPnJlc3BvbnNlKCkuc3Vn
Z2VzdGVkRmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDZmM2Y1NjZjNTJmMWUzOWRlZjAwYjVmMzE5ZmVi
YWU2Njc4YTE5YzAuLjRhOGJlZTU3ZmRiMWZmY2RlZjAwODlmYTY1ZTk3NTM3NTBkMjUwZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OkdldFBhc3RlYm9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29u
dGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXM6
OlJlcGx5KHR5cGVzKSwgMCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqIGNvbnRleHQpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KICAg
ICBWZWN0b3I8dWludDhfdD4gb3ZlcnJpZGVCdWZmZXI7CiAgICAgaWYgKFdlYlBhc3RlYm9hcmRP
dmVycmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5nZXREYXRhRm9yT3ZlcnJpZGUo
cGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBvdmVycmlkZUJ1ZmZlcikpCi0gICAgICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1
ZmZlcikpOworICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVy
cmlkZUJ1ZmZlcikpOwogCiAgICAgLy8gRmFsbGJhY2sgdG8gbWVzc2FnaW5nIHRoZSBVSSBwcm9j
ZXNzIGZvciBuYXRpdmUgcGFzdGVib2FyZCBjb250ZW50LgogICAgIFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlIGlwY0hhbmRsZTsKQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQ2NF90IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgYwogICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6
OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkgewpAQCAt
MzI0LDcgKzMyNCw3IEBAIFZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVh
ZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKIAogICAg
IElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhOwpAQCAtNDA2LDcgKzQwNiw3IEBAIHN0ZDo6b3B0
aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kCiAgICAgcmV0dXJuIGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBj
b250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBp
cGNIYW5kbGU7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFzdGVib2FyZE5hbWUsIHBh
Z2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkOjpSZXBseShpcGNIYW5kbGUpLCAwKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAzZmYzNTU4MDhlMWQ2ZWIyYWUzMmI1N2I3ZWJmN2UzNWFj
ZmY0ZTlhLi4xZmY4M2UxMWJjMTc4OWFhYzBmOTAwYzkzZGMyMmZiZjIzOWVhMmJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhu
YW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3Rv
cjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAKICAgICBpbnQ2
NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0QnVmZmVy
Rm9yVHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldENvbG9yKGNv
bnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFN0
cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8
U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAg
ICBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIG92ZXJyaWRlOwogI2VuZGlmCkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYK
IAogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJ
dGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQ
YXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggNzZjNjAyODg4MTM1MjIwNzFhMjI3Njlk
NzNmMmQzZTgwOGJhYzNiNS4uZDQxNTkwNGM3MWIxYzBjNzJhM2UxN2NmN2IzNDUyMGFhMjc5MDM2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC01MSw3
ICs1MSw3IEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQo
Y29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAKIFdlYlByZXZpZXdMb2FkZXJDbGll
bnQ6On5XZWJQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFdlYlByZXZp
ZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCit2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gd2ViUGFnZSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobV9wYWdlSUQpOwogICAgIGlmICghd2ViUGFn
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggYWUwNTBhOTky
M2VhN2VmOTU1NWNiYTE3MjBiZDFmZmY2YmM5NmUwZS4uY2MzYjI0YjcyOWIyMThiODBkMzdhMTJj
ZDdmYWMzZGZhOWJlZDFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdlYlByZXZpZXdM
b2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGksIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoKSBv
dmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCA0YjZl
MjE3YmJlMzdmOGMxZGYxN2FiY2NiYmM4Nzc0MzFhMmIxZTNiLi5lMWUwZTYxMTJhMmRlZGMzYjhi
YjYzMDk4NTM1Mzc2ZWY0M2FkNTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBA
IC0xNjMsNyArMTYzLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFn
SW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKICAgICBTaGFyZWRNZW1v
cnk6OkhhbmRsZSBhcmNoaXZlSGFuZGxlOwogICAgIHNpemVfdCBhcmNoaXZlU2l6ZSA9IDA7CiAg
ICAgaWYgKGRhdGEpIHsKLSAgICAgICAgYXV0byBhcmNoaXZlQnVmZmVyID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKKyAgICAg
ICAgYXV0byBhcmNoaXZlQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5T
RGF0YSAqKWRhdGEuZ2V0KCkpOwogICAgICAgICBhdXRvIGFyY2hpdmVTaGFyZWRNZW1vcnlCdWZm
ZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoYXJjaGl2ZUJ1ZmZlci5nZXQoKSk7CiAgICAg
ICAgIGlmICghYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA5
MjliMTYwZWVhOWE2NDcyYzJjYTdkMDNhYzMxMzNiN2UxZWU5Zjg3Li5kODhmNDRjZmNkZTVlMTVm
NjZjMTI0YjQwZjViNTQzNWI5NDY5N2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0zNDAsNyArMzQwLDcgQEAgU3RyaW5nIFdlYkZyYW1l
Ojpzb3VyY2UoKSBjb25zdAogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IG1f
Y29yZUZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpOwogICAgIGlmICghZG9j
dW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURh
dGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0
YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVz
b3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgcmV0dXJuIGRlY29kZXIt
PmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYjNiMGZiY2M3NmU2MGY2NzhiZjFjNmRlNTIx
MzA1OThjYjJkMDA4OC4uYWNlMjMxNTY2MmUyMGY2ZjA0MDg3NWNlNTQ3ZTU5ZGFmMWZlOTg0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE3
MzgsNyArMTczOCw3IEBAIE5PX1JFVFVSTiB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0V2FpdGlu
Z0ZvclByb2Nlc3NMYXVuY2goTG9hZFBhcmFtZXRlcnMmJiwgVVJMCiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0
X3QgbmF2aWdhdGlvbklELCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vi
c2l0ZVBvbGljaWVzLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHNoYXJlZEJ1ZmZlciwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBjb25zdCBVUkwm
IHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHN0ZDo6b3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4s
IFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2Vzc2lvbkhpc3RvcnlW
aXNpYmlsaXR5LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kpCit2b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNp
ZXMsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHNoYXJlZEJ1ZmZlciwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBjb25zdCBVUkwm
IHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHN0ZDo6b3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4s
IFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2Vzc2lvbkhpc3RvcnlW
aXNpYmlsaXR5LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kpCiB7CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHNldElz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwg
Jm1fbWFpbkZyYW1lLmdldCgpKTsKQEAgLTE3NTMsNyArMTc1Myw3IEBAIHZvaWQgV2ViUGFnZTo6
bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkIHNoCiAKICAgICAvLyBMZXQgdGhlIEluamVjdGVkQnVuZGxlIGtub3cgd2UgYXJlIGFi
b3V0IHRvIHN0YXJ0IHRoZSBsb2FkLCBwYXNzaW5nIHRoZSB1c2VyIGRhdGEgZnJvbSB0aGUgVUlQ
cm9jZXNzCiAgICAgLy8gdG8gYWxsIHRoZSBjbGllbnQgdG8gc2V0IHVwIGFueSBuZWVkZWQgc3Rh
dGUuCi0gICAgbV9sb2FkZXJDbGllbnQtPndpbGxMb2FkRGF0YVJlcXVlc3QoKnRoaXMsIHJlcXVl
c3QsIGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4oc3Vic3RpdHV0ZURhdGEuY29udGVudCgpKSwg
c3Vic3RpdHV0ZURhdGEubWltZVR5cGUoKSwgc3Vic3RpdHV0ZURhdGEudGV4dEVuY29kaW5nKCks
IHN1YnN0aXR1dGVEYXRhLmZhaWxpbmdVUkwoKSwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJh
bnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIG1f
bG9hZGVyQ2xpZW50LT53aWxsTG9hZERhdGFSZXF1ZXN0KCp0aGlzLCByZXF1ZXN0LCBjb25zdF9j
YXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPihzdWJzdGl0dXRlRGF0YS5jb250ZW50KCkpLCBz
dWJzdGl0dXRlRGF0YS5taW1lVHlwZSgpLCBzdWJzdGl0dXRlRGF0YS50ZXh0RW5jb2RpbmcoKSwg
c3Vic3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgpLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFu
c2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAKICAgICAv
LyBJbml0YXRlIHRoZSBsb2FkIGluIFdlYkNvcmUuCiAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFt
ZUxvYWRSZXF1ZXN0KCptX21haW5GcmFtZS0+Y29yZUZyYW1lKCksIHJlcXVlc3QsIHN1YnN0aXR1
dGVEYXRhKTsKQEAgLTM4NjEsNyArMzg2MSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U291cmNlRm9y
RnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoCiAK
IHZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2spCiB7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBidWZmZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CiAgICAgICAgIGlmIChQbHVnaW5WaWV3KiBwbHVnaW5W
aWV3ID0gcGx1Z2luVmlld0ZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSkpCiAgICAgICAgICAg
ICBidWZmZXIgPSBwbHVnaW5WaWV3LT5saXZlUmVzb3VyY2VEYXRhKCk7CkBAIC0zODc3LDcgKzM4
NzcsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZAogICAgIGNhbGxiYWNrKGRhdGFSZWZlcmVu
Y2UpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJh
bWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cmNlVVJMKQorc3RhdGljIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUs
IGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCiB7CiAgICAgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9
IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwogICAgIGlmICghbG9hZGVyKQpAQCAt
Mzg5Miw3ICszODkyLDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0
YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXIKIAogdm9pZCBXZWJQYWdl
OjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0
IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
c3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJh
Y2spCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKICAgICAgICAgVVJMIHJlc291
cmNlVVJMKFVSTCgpLCByZXNvdXJjZVVSTFN0cmluZyk7CiAgICAgICAgIGJ1ZmZlciA9IHJlc291
cmNlRGF0YUZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSwgcmVzb3VyY2VVUkwpOwpAQCAtNjk3
Nyw3ICs2OTc3LDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJv
b2wgZGVjaXNpb24sIENhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIKICAgICBpZiAoIWRvY3VtZW50
TG9hZGVyKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAotICAgIGRv
Y3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRl
bnRpZmllci50b0ludGVnZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildIChXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGljb25EYXRhKSBtdXRhYmxlIHsK
KyAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihkZWNpc2lvbiwg
bG9hZElkZW50aWZpZXIudG9JbnRlZ2VyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogaWNv
bkRhdGEpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGljb25EYXRhIH0p
OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CmluZGV4IDM1YzIzZmU2MDJlYjRmOTA0MWFiYjBhOTg3ZTdkMmYwY2EwZjhiM2UuLmY2ZGRkNzhl
YTE5ODhlMWZjYWM5MDc0YmY1NmU3YWIxYmIxY2I1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTIxNiw3ICsyMTYsNyBAQCBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsK
IGNsYXNzIFNlbGVjdGlvbkdlb21ldHJ5OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgVGV4dENo
ZWNraW5nUmVxdWVzdDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKQEAgLTEzOTYsNyArMTM5Niw3
IEBAIHB1YmxpYzoKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQgZGlkU3RhcnRMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBj
b25zdCBTdHJpbmcmIHV0aSk7Ci0gICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lk
IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIHJlcXVlc3RQYXNzd29yZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAjZW5kaWYKIApAQCAtMTU5
OSw3ICsxNTk5LDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBzb3VyY2VGb3JGcmFtZShXZWJG
cmFtZSopOwogCi0gICAgdm9pZCBsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBX
ZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0
ZVBvbGljaWVzRGF0YT4mJiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgY29uc3QgVVJM
JiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+LCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlW
aXNpYmlsaXR5LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29y
ZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOworICAgIHZv
aWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6U2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYs
IFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBjb25zdCBVUkwmIGZhaWxp
bmdVUkwsIGNvbnN0IFVzZXJEYXRhJiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbj4sIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxp
dHksIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CiAKICAgICAvLyBBY3Rp
b25zCiAgICAgdm9pZCB0cnlDbG9zZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KaW5kZXggYzk1YzM4NDYzOTIyMTg0ZjI1N2E3MTlkYjViYTlhNDgyOWFlZGYxYi4uODVlNjUx
ODY5MmVkNjBjNzg4ZTcyYTdjZTMyZjNmMGUxNWNhNzc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTMyMTcsNyArMzIx
Nyw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rp
b24pCiAgICAgICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGRvd25jYXN0PFJlbmRlcklt
YWdlPigqZWxlbWVudC5yZW5kZXJlcigpKS5jYWNoZWRJbWFnZSgpOwogICAgICAgICBpZiAoIWNh
Y2hlZEltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsKKyAgICAgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJj
ZUJ1ZmZlcigpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIo
KmJ1ZmZlcik7CkBAIC00NjgzLDcgKzQ2ODMsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZFN0YXJ0TG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZQog
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU3RhcnRMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZShmaWxlTmFtZSwgdXRpKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCit2b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tE
b2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBBU1NFUlQoIWJ1ZmZlci5pc0VtcHR5KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDJkMDNkNzFmZDkw
MTE2OWMxODYxMmRiNDFiMDczZTFiOGMyNWFkNTQuLmQ0MTI4MmZjNWRjNjNjMzE3ZTU0YjgyNjBj
NTdlMzQ0Y2EzNmUzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC01NjYsNyArNTY2LDcgQEAgdm9pZCBXZWJQYWdlOjpn
ZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcgcGFzdGVib2FyZFR5cGUs
IENvbXBsZXQKICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25lKCkpCiAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBm
cmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7
CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0p
OwogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVy
KCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQ
cm9jZXNzV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dp
bi5jcHAKaW5kZXggZDNkMzhjYWM0MTIxMWQ3ZTI5YjU3ZjI0NTIzNjRlMzdiNDIzYzMxYS4uMzdm
MjdlOTUyZDA3MTcxMTIxY2I0ZjU0ODdhOGI4NGI5ZjhhNjM4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAK
ICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCi1SZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCitSZWZQ
dHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZl
cihjb25zdCBjaGFyKiBuYW1lKQogewogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaAppbmRleCAxZjU1ODRmYTM4N2Q3
NmNjZTk0ZmY3YjU2OTY4ZTdlODIyMDYwNjA2Li5hMjU1NjBhMTBjMjg4MmUxYWJkMTc4NDU2OTQ4
NmVhMTNlZDg5NmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBw
b3J0L1BpbmdIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0
L1BpbmdIYW5kbGUuaApAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwogICAgICAgICBwaW5nTG9hZENvbXBsZXRlKHsgfSwgcmVzcG9uc2UpOwog
ICAgIH0KLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUq
LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQpIGZpbmFsIHsgcGluZ0xvYWRDb21w
bGV0ZSgpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlKiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCkgZmluYWwg
eyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQogICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5h
bCB7IHBpbmdMb2FkQ29tcGxldGUoZXJyb3IpOyB9CiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50
aWFsU3RvcmFnZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopIGZpbmFsIHsgcmV0dXJuIG1fc2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggYmEzMWZhN2M4
NmI5MDlmY2IzNTg3M2FjZmNkMjJhOGU4YjkyOTIyZS4uNDVmN2MxZjVjYTc0ODJkNjBkOWJjNzRl
ZjYxNmMzMmZkNjI2NzY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
KSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRJbnNlcnRpb25QYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9u
c2UgcmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgcmV0dXJuIFdl
YkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmU7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbQppbmRleCA3NGM0ODc4MzE3N2FmOTBiMjAyZDUxYzQ2NjY5YjQwMTJiMTI1ZjU5
Li5jMmM0MGQzZDJhMTMzZjI4MTM0MTU2MDM0ZGU1NDE0MWE0Y2U5YzMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICAv
LyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CiAKLXZvaWQgV2ViRWRp
dG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3Zv
aWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewog
ICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IGEyNTk4ZjMyZmI3NjBhN2Q4ODNjOWY0Y2VlYzE4Y2Y1OTFl
YjhlYWQuLjk1OWQ3NDhiNTZiZTEwNzZiZDk3Nzk5MjJjZDM1NmQyMWE2ODE3NGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjQ4LDcgKzI0OCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzZW5kSDJQaW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8
U2Vjb25kcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYpIGZpbmFsOwogCiAgICAgdm9p
ZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6
OkxpbmtJY29uJiwgdWludDY0X3Q+PiYpIGZpbmFsOwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5n
SWNvbihXZWJDb3JlOjpTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0lj
b24oV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogCiAjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgYm9vbCBtX2xvYWRpbmdJY29uIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0KaW5kZXggYjg0OWQyYWFjMmE5M2ZiZWU0MTcyOWYyNGE4NmNkY2Y2YjFm
ZTAxOS4uYWEyY2M5ODE0NzRhMTNjZTUwODQ3OTg5NDIzNjg0NDkxYzg4ZjZlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTIwMTIsNyArMjAxMiw3IEBAIFJlZlB0cjxXZWJDb3Jl
OjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRl
UHJldmlld0xvCiAgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9maWxlUGF0aDsKICAgICAg
ICAgUmV0YWluUHRyPE5TRmlsZUhhbmRsZT4gbV9maWxlSGFuZGxlOwogCi0gICAgICAgIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikgb3Zl
cnJpZGUKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAg
ICAgYXV0byBkYXRhQXJyYXkgPSBidWZmZXIuY3JlYXRlTlNEYXRhQXJyYXkoKTsKICAgICAgICAg
ICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGRhdGFBcnJheS5nZXQoKSkKQEAgLTIwOTQsNyArMjA5
NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmdldExvYWREZWNpc2lvbkZvckljb25z
KGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yCiAgICAgICAgIH0KIAogICAgICAgICBtX2xv
YWRpbmdJY29uID0gdHJ1ZTsKLSAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNp
c2lvbkZvckljb24odHJ1ZSwgaWNvbi0+c2Vjb25kLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfV0gKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYnVmZmVyKSB7CisgICAgICAgIGRv
Y3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUsIGljb24tPnNlY29u
ZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgZmluaXNoZWRMb2FkaW5nSWNvbihi
dWZmZXIpOwpAQCAtMjEzMSw3ICsyMTMxLDcgQEAgc3RhdGljIE5TSW1hZ2UgKndlYkdldE5TSW1h
Z2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1NpemUgc2l6ZSkKIH0KICNlbmRpZiAvLyAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRM
b2FkaW5nSWNvbihXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGljb25EYXRhKQordm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBpY29uRGF0YSkKIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBB
U1NFUlQobV9sb2FkaW5nSWNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDkx
NDE5NmM0YTliZTZkYmEzZjliMjM3YzU2YThlNmFhMGNhYWYwYTEuLjUyN2ZhNTUyMTkwYmEwMDE0
NTE3ZmZkZTczNzcyMGIyZTdhOTBhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBA
IC01NSwxNCArNTUsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJ
ZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAjZW5kaWYKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBn
ZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFu
Z2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQ
YXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBj
aGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0
VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0
b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3Ry
aW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIGludDY0X3QgYWRkVHlwZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CisgICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogICAgIGludDY0X3Qgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29s
b3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IDExMDliMzE2YmQ3NjU1MDZiMzYy
OWZjMGI3ZTgwODYxN2FmODU0ODcuLjM5ODY4NTlmNzMzOGUyODQ1N2VkNGIxOTBjYmE2NzA1MjIx
MDAyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTEwOSw3ICsxMDksNyBA
QCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkuZ2V0VHlwZXModHlwZXMpOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0
dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYnVmZmVyRm9yVHlwZShwYXN0
ZWJvYXJkVHlwZSk7CiB9CkBAIC0xNTQsNyArMTU0LDcgQEAgaW50NjRfdCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IGMKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRUeXBl
cyhwYXN0ZWJvYXJkVHlwZXMpOwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5
cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
c2V0QnVmZmVyRm9yVHlwZShidWZmZXIsIHBhc3RlYm9hcmRUeXBlKTsKIH0KQEAgLTIwOSw3ICsy
MDksNyBAQCBpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3Vu
dChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLAogICAgIHJldHVybiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4g
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkQnVmZmVyKGluZGV4LCB0eXBl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0
YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJj
ZS5tbQppbmRleCBjNTMxYjFkZGRkM2JlOGU1NmVkNmQ1ZDdjN2ZhNmI3ZGFhNmNjM2EzLi44M2U4
NTkxNDM0NWVhN2NiODQxZDk5ZmQxZmI2NjZkOGNjZjAzMDI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC00NjAsNyArNDYwLDcg
QEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKE5TRGF0YSAqKWRhdGEKIHsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRl
KS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUp
LT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEp
CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA1YjEwZDNmZjc1Njcw
MTE1MTM4ZjRkNDMxNzI5N2NkY2ExZWM5NWQ3Li4yOGQ4NzU5MjljY2FjZGI5YTEzODhhODI2YjJm
ZDVlY2Y0NmVjY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0KQEAgLTM1NDAsNyArMzU0MCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNNZW51
SXRlbT4gY3JlYXRlU2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBo
CiAgICAgfQogCiAgICAgaWYgKGF1dG8qIGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7
Ci0gICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFn
ZS0+ZGF0YSgpKQorICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCkpCiAgICAgICAgICAgICBbaXRlbXMgYWRkT2Jq
ZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0
aEJ5dGVzOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNp
emUoKV1dKS5nZXQoKV07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCBhMDExYjI3NjI3Mzg5NjE4ZWQ1YzBjODMyOWUyOTdi
MWQxNzlkY2I3Li5hYWRjZmJmZWEzNTZiMzdiMGY1Mzc4YWZhODk4YjhlYTk5YWU2YTcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KQEAgLTM2
Nyw3ICszNjcsNyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdWYWx1ZQogICAgIGlmICghZW5jb2Rp
bmcuaXNWYWxpZCgpKQogICAgICAgICBlbmNvZGluZyA9IFdpbmRvd3NMYXRpbjFFbmNvZGluZygp
OwogICAgIAotICAgIFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291
cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8g
Jl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgcmV0dXJuIGVu
Y29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNv
cmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBj
b3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL01lbW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlT
dHJlYW0uY3BwCmluZGV4IDVkZjIxNzBkMmE0YmZjNGE0ODBjZjQ1YTg0ZDIzZDczMDU5MzVmYzEu
LjM2MGFlZGNlYWNjYjFmYmRkMWQ0NGFkNDJkOGMwNGM2ZjA0YjYxOWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzEsNyArMzEsNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogLy8gTWVtb3J5U3RyZWFtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1NZW1vcnlTdHJlYW06
Ok1lbW9yeVN0cmVhbShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitN
ZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
ICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwpA
QCAtNDQsNyArNDQsNyBAQCBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIik7CiB9CiAKLUNPTVB0cjxNZW1vcnlT
dHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQorQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpj
cmVhdGVJbnN0YW5jZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICByZXR1
cm4gbmV3IE1lbW9yeVN0cmVhbShXVEZNb3ZlKGJ1ZmZlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9NZW1vcnlTdHJlYW0uaAppbmRleCAwNzg2MGExNWFiNGEzZGIxMTljOTExM2ZhZmM5YzEy
NGIxYzE0NmRkLi4yYmE3ZGE5MGE1YzYyMTI5MDA4ZGY2MTI5NzMwYWNkYjliZDQ1M2JhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaApAQCAtMzUsNyArMzUsNyBAQAogY2xh
c3MgTWVtb3J5U3RyZWFtIGZpbmFsIDogcHVibGljIElTdHJlYW0KIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5U3Ry
ZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKIAog
ICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1
ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2Jq
ZWN0KTsKQEAgLTc1LDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIENsb25lKF9DT01fT3V0cHRyXyBJU3RyZWFtKiogcHBzdG0pOwogCiBw
cml2YXRlOgotICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJik7CisgICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpOwogICAgIH5NZW1vcnlTdHJlYW0oKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBtX2J1ZmZlcjsKICAgICBzaXplX3QgbV9wb3MgeyAwIH07CiAgICAgVUxPTkcgbV9y
ZWZDb3VudCB7IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCmlu
ZGV4IGM1ZGU5MGM4MTBmMWFmNTQwNWMyOWRjNDg2NmFkZmZjMzY5OTlhYTguLjAxODRiZWY4Yzcz
NThkYmZiYTFiZTlmZTFhODdlNTc5MzgxNzYyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkFyY2hpdmUuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgSFJFU1VMVCBXZWJBcmNoaXZlOjpkYXRh
KF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIWNmRGF0YSkKICAg
ICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0
TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZE
YXRhLmdldCgpKSk7CiAKICAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShX
VEZNb3ZlKGJ1ZmZlcikpLmNvcHlSZWZUbyhzdHJlYW0pOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwCmluZGV4IGU5YTEzNmY2YmI0MmVjOGFiN2Y1MGEzYWIzMzMzM2ZiM2YyMDIzZmQuLjIxMTU5
OGQzOWE2YWYzNjFjYzJlNDA2NzkwNmUyYjg2ODU3ZWVmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlCiB7CiB9CiAKLXZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiA+JikKK3ZvaWQgV2ViRWRpdG9y
Q2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+ID4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCmluZGV4IDJhYWFmY2RkZTQyNDhmNDE1YjFhODM3M2JjMDM2NTEyMzI5ZjhjMGYuLmMx
NjdjYTI5MjIzZWVhOTllNTI4YThlYTYxMjhjMWUxZTY5ZWUzZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmlu
YWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRD
bGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQg
ZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lk
IHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RnJhbWUuY3BwCmluZGV4IDZkYzRhNDg1MmExNGQ5MTQ0M2U1MzE5YTUwN2MxOTY4NzJhZmIxNDku
LjU1OGUxM2M3ZjFmZGFhNWIxMjVkMjBiZWZlNzkxYTI3ZmY3NTcxMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU1OSw3ICs1NTksNyBAQCBIUkVTVUxUIFdlYkZyYW1l
Ojpsb2FkUmVxdWVzdChfSW5fb3B0XyBJV2ViVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICByZXR1
cm4gU19PSzsKIH0KIAotdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJT
VFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKQordm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwg
QlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKIHsK
ICAgICBTdHJpbmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5c1N0cmluZ0xlbihtaW1lVHlw
ZSkpOwogICAgIGlmICghbWltZVR5cGUpCkBAIC01OTIsNyArNTkyLDcgQEAgSFJFU1VMVCBXZWJG
cmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBl
LCBfSW5fIEJTVFIKICAgICAgICAgaWYgKCFzdGF0LmNiU2l6ZS5IaWdoUGFydCAmJiBzdGF0LmNi
U2l6ZS5Mb3dQYXJ0KSB7CiAgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YUJ1ZmZlcihzdGF0
LmNiU2l6ZS5Mb3dQYXJ0KTsKICAgICAgICAgICAgIFVMT05HIHJlYWQ7Ci0gICAgICAgICAgICAv
LyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJl
YWQgcmlnaHQgaW50byB0aGUgU2hhcmVkQnVmZmVyCisgICAgICAgICAgICAvLyBGSVhNRTogdGhp
cyBkb2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50
byB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgogICAgICAgICAgICAgLy8gb3IgYWRvcHQgdGhl
IFZlY3RvciBvciBzb21ldGhpbmcuCiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPlJl
YWQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PFVMT05HPihkYXRhQnVmZmVyLnNpemUo
KSksICZyZWFkKSkpCiAgICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLmFwcGVuZChkYXRhQnVm
ZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkZyYW1lLmgKaW5kZXggNDM2MDU0ZmQ5ZGRiNDdjYTMyOTZiMTE3OTgxNDM0
ZWMxODk3ZGFkMS4uZmE5YzM4MWNjNTczYmE2YjIwOTg4ZWFiMzUwOGVkOWEzMGE4ZjEzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIEhUTUxG
cmFtZU93bmVyRWxlbWVudDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVz
b3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiB9CiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTQ29udGV4dCogSlNDb250
ZXh0UmVmOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHByaXZhdGU6CiAgICAgfldlYkZyYW1lKCk7CiAK
ICAgICB2b2lkIGxvYWRIVE1MU3RyaW5nKF9Jbl8gQlNUUiBzdHJpbmcsIF9Jbl8gQlNUUiBiYXNl
VVJMLCBfSW5fIEJTVFIgdW5yZWFjaGFibGVVUkwpOwotICAgIHZvaWQgbG9hZERhdGEoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdO
YW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7CisgICAgdm9pZCBsb2FkRGF0YShS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgQlNUUiBtaW1lVHlwZSwgQlNU
UiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7CiAgICAg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBjb21wdXRlUGFnZVJlY3RzKEhEQyBwcmlu
dERDKTsKICAgICB2b2lkIHNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYgcGFnZVNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgb3JpZ2luYWxQ
YWdlU2l6ZSwgZmxvYXQgbWF4aW11bVNocmlua1JhdGlvLCBXZWJDb3JlOjpBZGp1c3RWaWV3U2l6
ZU9yTm90KTsKICAgICB2b2lkIGhlYWRlckFuZEZvb3RlckhlaWdodHMoZmxvYXQqLCBmbG9hdCop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAKaW5kZXggOTYyMDE5OGI0YjU0MGFl
NmY3OTY3ZjgyMzNjOTQ2NGJkMjc3NTg1MS4uMjc0YjdkMmQ2Y2YyZWI0NzFkN2I4Yjg5NjU5YWU0
NjljZjkzNGM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExM
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCkBAIC0xNjUs
OCArMTY1LDggQEAgdm9pZCBzaHV0RG93bldlYktpdCgpCiB9CiAKIC8vRklYTUU6IFdlIHNob3Vs
ZCBjb25zaWRlciBtb3ZpbmcgdGhpcyB0byBhIG5ldyBmaWxlIGZvciBjcm9zcy1wcm9qZWN0IGZ1
bmN0aW9uYWxpdHkKLVdFQktJVF9BUEkgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9h
ZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKTsKLVJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKK1dF
QktJVF9BUEkgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNv
dXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSk7CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1l
KQogewogICAgIGludCBpZHI7CiAgICAgLy8gdGVtcG9yYXJ5IGhhY2sgdG8gZ2V0IHJlc291cmNl
IGlkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggMmZmY2I4OTk5
YjE4NDQ4Y2Q2MjQ4ZjliZmNmMTVhYTUxN2NhZWJkNi4uOTQzZmE3YWI0NWM4YjBkMzVkNjdhMzBj
MGZkYWI0MzQ5YTNlNjRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNw
cApAQCAtNTEsNyArNTEsNyBAQCBXZWJSZXNvdXJjZTo6fldlYlJlc291cmNlKCkKICAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7CiB9CiAKLVdlYlJlc291cmNlKiBX
ZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCitXZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCiB7CiAgICAgQ09NUHRyPE1lbW9yeVN0cmVhbT4gbWVtb3J5U3RyZWFtID0g
TWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGRhdGEpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlJlc291cmNlLmgKaW5kZXggOTRhYjM1YzU2MDgxMDExN2M4OTVlNGExMGMz
OTFiY2NhMzM3ZDE4ZS4uYjZlYjg2ZmNjYTVlMzEzNjljOWU4YjA2NTQxOGYyNzk0OTI5OTkwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCkBAIC0zNiw3ICszNiw3IEBACiAK
IGNsYXNzIFdlYlJlc291cmNlIGZpbmFsIDogcHVibGljIElXZWJSZXNvdXJjZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpOworICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwog
CiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZP
YmplY3QpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDBiZTkxNjJjYzY0ZTJmMWNiNDQyMWVmYWE0ZjM1MDNmYzYxZjY4ZTYuLjUwZDMwNTQ1NTRh
Y2Q2YWI1Y2Q0NWRiNTNmM2MwNmNkN2IxNDVjMjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMS0xMi0wMyAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRC
dWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUg
cmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3VzU2hh
cmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwK
KyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxl
U3lzdGVtLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxh
eUxpc3RUZXN0cy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1No
YXJlZEJ1ZmZlci5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1No
YXJlZEJ1ZmZlclRlc3QuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXJUZXN0Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNwcDoKKwogMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2
ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVy
IGNsYXNzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lz
dGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCmlu
ZGV4IDg1ODNiMjlhZDk5MGMyMmI0NzJjODY5ZWNjZDg2ODI5NjIxYmIwYjQuLmI4NDdkM2E4MjZi
M2Q5ZmZjMDhmNmYzYmUzODI2MGE2YzU5ZGZmMmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyB2b2lkIGNy
ZWF0ZVRlc3RGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUoZmlsZUhhbmRsZSk7CiB9OwogCi0vLyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3Qg
YW5kIFNoYXJlZEJ1ZmZlclRlc3QgYXMgYSBzaW5nbGUgY2xhc3MuCisvLyBGSVhNRTogUmVmYWN0
b3IgRmlsZVN5c3RlbVRlc3QgYW5kIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0IGFzIGEgc2lu
Z2xlIGNsYXNzLgogY2xhc3MgRmlsZVN5c3RlbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7
CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKaW5kZXggYjk4
NmEyYTU4ODg0NjViZTE5MjBhNmUwNjY4ZDcwZGIyNDkwNmVhYi4uYWI0NzJlNTBiODM1NzRjMzAx
ODI1ZGJiZWVmOTk4M2YyZjQxZDIyZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcApAQCAtMTk4LDcgKzE5OCw3IEBA
IFRFU1QoRGlzcGxheUxpc3RUZXN0cywgSXRlbUJ1ZmZlckNsaWVudCkKICAgICAgICAgICAgIHJl
dHVybiB7IGdsb2JhbEJ1ZmZlcklkZW50aWZpZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0
ZW1CdWZmZXJDYXBhY2l0eSB9OwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3BsYXlM
aXN0SXRlbSkgY29uc3QgZmluYWwKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJiBkaXNwbGF5TGlz
dEl0ZW0pIGNvbnN0IGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gaW5kZXggPSBt
X2l0ZW1zLnNpemUoKTsKICAgICAgICAgICAgIG1faXRlbXMuYXBwZW5kKHN0ZDo6Z2V0PFN0cm9r
ZVBhdGg+KGRpc3BsYXlMaXN0SXRlbSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCBjNjliMTYxNmMwY2FkYTUzMjRkNzJk
YjczMjEyZGZjZWZiYTVkZTM5Li5hMDYzMGJhNjc1YmY4ZTUyYzQ0MGM5ZDE5MjIwNzIyODkwZmJk
YzFmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVk
QnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVk
QnVmZmVyLmNwcApAQCAtNDEsNTAgKzQxLDUwIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBj
cmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQogewotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOworICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOwogICAgIEFTU0VS
VF9OVUxMKGJ1ZmZlcik7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRo
Q29udGVudHNPZkV4aXN0aW5nRmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVz
dCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVt
cEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIEVYUEVDVF9U
UlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
KSk7Ci0gICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkp
ID09IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpKTsKKyAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShTdHJpbmco
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAotVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUp
CitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09m
RXhpc3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0
eUZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0
aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZm
ZXItPmlzRW1wdHkoKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVy
Q3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxl
KQogewotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkp
OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwo
YnVmZmVyKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNvcHkgPSBidWZmZXItPmNvcHko
KTsKICAgICBFWFBFQ1RfR1QoYnVmZmVyLT5zaXplKCksIDBVKTsKICAgICBFWFBFQ1RfVFJVRShi
dWZmZXItPnNpemUoKSA9PSBjb3B5LT5zaXplKCkpOwogICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAo
YnVmZmVyLT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0
ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQog
ewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVm
ZmVyKTsKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAgYnVpbGRlci5hcHBl
bmQoKmJ1ZmZlcik7CiAgICAgYnVpbGRlci5hcHBlbmQoImEiLCAxKTsKLSAgICBFWFBFQ1RfVFJV
RShidWlsZGVyLnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkp
ICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hh
cmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWlsZGVy
LmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6
OnRlc3REYXRhKCkpXSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5zaXplKCkgPT0gKHN0cmxl
bihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7CisgICAgRVhQ
RUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQRUNUX0VRKCdhJywgYnVp
bGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihGcmFnbWVudGVkU2hh
cmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJU
ZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKIHsKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhl
bGxvIjsKICAgICBjaGFyIHRlc3REYXRhMVtdID0gIldvcmxkIjsKQEAgLTk4LDcgKzk4LDcgQEAg
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogICAgIEVYUEVD
VF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRDb25jYXRlbmF0aW9uLCBhcnJheUJ1ZmZlci0+ZGF0YSgp
LCBzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQorVEVTVF9GKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMp
CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjAoMHg0MDAwLCAnYScpOwogICAgIFZlY3Rv
cjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQog
ICAgIH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCitURVNUX0YoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiB7CiAgICAgY2hhciB0ZXN0RGF0YVtdID0gIkhh
Yml0YXNzZSBpbnRlZ2VyIGVyb3MgdGluY2lkdW50IGEgc2NlbGVyaXNxdWUhIEVuaW0gZWxpdD8g
U2NlbGVyaXNxdWUgbWFnbmlzLCIKICAgICAiZXQgbW9udGVzIHVsdHJpY2VzIHRyaXN0aXF1ZSBh
ISBQaWQuIFZlbGl0IHR1cnBpcywgZGFwaWJ1cyBpbnRlZ2VyIHJob25jdXMgc29jaWlzIGFtZXQg
ZmFjaWxpc2lzLCIKQEAgLTE1MCw3ICsxNTAsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y29weSkKICAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAgLy8gc2hh
cmVkQnVmZmVyIG11c3QgY29udGFpbiBkYXRhIG1vcmUgdGhhbiBzZWdtZW50U2l6ZSAoPSAweDEw
MDApIHRvIGNoZWNrIGNvcHkoKS4KICAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgYnVpbGRlcjEu
c2l6ZSgpKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IGJ1aWxkZXIxLmNvcHko
KTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBidWlsZGVyMS5j
b3B5KCk7CiAgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwogICAgIEVY
UEVDVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVpbGRl
cjEuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwogCkBA
IC0xNjYsNyArMTY2LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgRVhQ
RUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGJ1aWxkZXIpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIp
CiB7CiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CiAgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBidWlsZGVyMSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKQEAgLTE3Niw3ICsx
NzYsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYnVpbGRlcikKICAgICBhdXRvIGJ1ZmZl
ciA9IGJ1aWxkZXIxLnRha2UoKTsKICAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc051bGwoKSk7
CiAgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfTkUoY29w
eS5wdHIoKSwgYnVmZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZmZXJlbnQgU2hhcmVkQnVmZmVy
CisgICAgRVhQRUNUX05FKGNvcHkucHRyKCksIGJ1ZmZlci5wdHIoKSk7IC8vIFdlIGhhdmUgZGlm
ZmVyZW50IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIKICAgICBFWFBFQ1RfRVEoY29weS5nZXQoKSwg
YnVmZmVyLmdldCgpKTsgLy8gQnV0IHRoZWlyIGNvbnRlbnQgaXMgaWRlbnRpY2FsCiAKICAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIyOwpAQCAtMjAyLDcgKzIwMiw3IEBAIHN0YXRpYyB2
b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0
aCwgY29uc3QgY2hhcioKICAgICAgICAgRVhQRUNUX0VRKGJ1ZmZlcltpXSwgZXhwZWN0ZWRbaV0p
OwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCitURVNUX0YoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewogICAgIFZlY3Rvcjx1aW50
OF90PiBzMSA9IHsgJ2EnLCAnYicsICdjJywgJ2QnIH07CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHMy
ID0geyAnZScsICdmJywgJ2cnLCAnaCcgfTsKQEAgLTIzNyw3ICsyMzcsNyBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwu
c2l6ZSgpLCAibCIpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQor
VEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0
byBtYWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsK
ICAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwpAQCAtMjU4LDcgKzI1OCw3IEBA
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiAgICAgRVhQRUNUX05FKG1ha2VC
dWZmZXIoeyB7ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwg
eyAnYScgfSB9KS5nZXQoKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0
cmluZykKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4NSwgMHgxMn07CiAgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWlsZGVyOwpAQCAtMjcxLDExICsyNzEsMTEgQEAgVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQogICAgIEVYUEVDVF9FUShidWZmZXItPnRvSGV4U3Ry
aW5nKCksICIiKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCitURVNUX0Yo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiB7CiAgICAgY29uc3QgY2hhciogY29u
c3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3QuIjsKIAotICAgIGF1dG8gY2hl
Y2sgPSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgeworICAgIGF1dG8gY2hlY2sgPSBb
XShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGRhdGEgPSBzaGFyZWRCdWZmZXIucmVhZCg0LCAzKTsKICAgICAgICAgRVhQRUNU
X0VRKGRhdGEuc2l6ZSgpLCAzdSk7CiAgICAgICAgIEVYUEVDVF9FUShTdHJpbmcoZGF0YS5kYXRh
KCksIDMpLCAiIGlzIik7CkBAIC0zMDYsNyArMzA2LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIHJlYWQpCiB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgc2l6ZV90IE4gPgogY29uc3RleHByIHNp
emVfdCBhcnJheXNpemUoIGNvbnN0IFQgKCYpW05dICkgeyByZXR1cm4gTjsgfQogCi1zdGF0aWMg
dm9pZCByZWFkQWxsQ2h1bmtzKHN0ZDo6dmVjdG9yPFN0cmluZz4qIGNodW5rcywgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yID0gIlxyXG4iLCBib29sIGluY2x1
ZGVTZXBhcmF0b3IgPSBmYWxzZSkKK3N0YXRpYyB2b2lkIHJlYWRBbGxDaHVua3Moc3RkOjp2ZWN0
b3I8U3RyaW5nPiogY2h1bmtzLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgc2VwYXJhdG9yID0gIlxyXG4iLCBib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxz
ZSkKIHsKICAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlciBjaHVua1JlYWRlcigmYnVmZmVyLCBz
ZXBhcmF0b3IudXRmOCgpLmRhdGEoKSk7CiAgICAgU3RyaW5nIGNodW5rID0gY2h1bmtSZWFkZXIu
bmV4dENodW5rQXNVVEY4U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKGluY2x1ZGVTZXBhcmF0b3Ip
OwpAQCAtMzM5LDcgKzMzOSw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrRGF0YUluUmFuZ2UoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBzaXplX3Qgc3RhcnQsIHNpemVfdCBsCiAKIFRFU1RfRihT
aGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGluY2x1ZGVTZXBhcmF0b3IpCiB7Ci0gICAgYXV0
byBjaGVjayA9IFtdKFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBjaGVj
ayA9IFtdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBT
aGFyZWRCdWZmZXJDaHVua1JlYWRlciBjaHVua1JlYWRlcigmc2hhcmVkQnVmZmVyLCAiXHgxMFx4
MTFceDEyIik7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBvdXQ7CiAgICAgICAgIEVYUEVDVF9U
UlVFKGNodW5rUmVhZGVyLm5leHRDaHVuayhvdXQpKTsKQEAgLTM3MCw3ICszNzAsNyBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKIHsKICAgICBjb25zdCBj
aGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgYSBzaW1wbGUgdGVzdC4iOwogCi0gICAg
YXV0byBjaGVjayA9IFtdKFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBj
aGVjayA9IFtdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAg
ICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlciBjaHVua1JlYWRlcigmc2hhcmVkQnVmZmVyLCAiaXMi
KTsKIAogICAgICAgICBTdHJpbmcgY2h1bmsgPSBjaHVua1JlYWRlci5uZXh0Q2h1bmtBc1VURjhT
dHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soKTsKQEAgLTQxNiw3ICs0MTYsNyBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKIFRFU1RfRihTaGFyZWRCdWZmZXJD
aHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKIHsKICAgICBjb25z
dCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgdGhlIG1vc3QgcmlkaWN1bG91cyBo
aXN0b3J5IHRoZXJlIGlzLiI7Ci0gICAgYXV0byBjaGVjayA9IFtdKFNoYXJlZEJ1ZmZlciYgc2hh
cmVkQnVmZmVyKSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5rczsKICAg
ICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3MxV2l0aG91dFNlcGFyYXRvcltd
ID0geyAiVGgiLCAicyAiLCAicyB0aGUgbW9zdCByIiwgImQiLCAiY3Vsb3VzIGgiLCAic3Rvcnkg
dGhlcmUgIiwgInMuIiB9OwogICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1
ZmZlciwgImkiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXJUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXJUZXN0LmNwcAppbmRleCA5YjhiMTNhNzVkNTJmZjk1MWVhZDE4MTg1ZDU2
YzM3OTFiMmQ3YmVkLi5kMDM0MWE4MWRlZGE3MTlmMzVmY2NlMzk0NjU1ZWMyNTVhYjhmYmI2IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVy
VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1
ZmZlclRlc3QuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKIAotdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCit2b2lkIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0OjpTZXRVcCgpCiB7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgp
OwogCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyVGVzdDo6U2V0VXAoKQogICAg
IEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlclRl
c3Q6OlRlYXJEb3duKCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OlRlYXJEb3du
KCkKIHsKICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsKICAgICBG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEVtcHR5RmlsZVBhdGgpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmgKaW5kZXgg
NjQwMTE5YmRlNmZjZTQxZjAxZWFhYjYzMTY4NDdiZTU2YjkwY2Y1Yy4uYTM5MmEwNTE5NDc1NmQy
YWQ1NmU4MjQ5MjllY2U0YzE1ZjNhZDA1NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oCkBAIC0yOSw3ICsyOSw3IEBACiAK
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIHZvaWQgU2V0VXAoKSBvdmVycmlk
ZTsKICAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCmlu
ZGV4IGQ4NDZjMDI1ZTBkY2Q4Y2E4MjliNzEyNzNkYWYxZjcwN2U5ZDkyZGQuLmFmZWFhMWUxYTE4
ZWE4MmJlMWFiNjMzMmI4MzFiMjZmNjQwMTgzZjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCkBA
IC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHsgZ2xvYmFsQnVmZmVy
SWRlbnRpZmllciwgZ2xvYmFsSXRlbUJ1ZmZlciwgZ2xvYmFsSXRlbUJ1ZmZlckNhcGFjaXR5IH07
CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShj
b25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdCBmaW5hbAorICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYp
IGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvU2hhcmVkQnVmZmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NvY29hL1NoYXJlZEJ1ZmZlci5tbQppbmRleCA4YmZiODVlYzYxZDMwMTc1OTNkYzBiM2QzN2Q2
ZDdiNmQ5OTMyNzc3Li5jM2I1ZDNlOGQ3YzAzYjFhMzY1ZGQ1MzVhMGIyOWFkZTI3YWNlY2E4IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVk
QnVmZmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9T
aGFyZWRCdWZmZXIubW0KQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIHZvaWQgZXhwZWN0RGF0YUFy
cmF5c0VxdWFsKE5TQXJyYXk8TlNEYXRhICo+ICpleHBlY3RlZCwgTlNBcnJheTxOU0RhdGEgKj4K
ICAgICB9CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkK
K1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCiB7
CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcjsKQEAgLTYzLDExICs2MywxMSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRl
TlNEYXRhQXJyYXkpCiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEg
XSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5n
ZXQoKSk7CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVO
U0RhdGFBcnJheSgpLmdldCgpKTsKIAotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsg
W05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkp
LT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0Vx
dWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwg
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICB9CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKK1RFU1RfRihGcmFnbWVudGVkU2hh
cmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQpCiB7CiAgICAgQGF1dG9y
ZWxlYXNlcG9vbCB7CiAgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKaW5kZXggNDZjNzYyMDNl
MWIyNWFhYWI3YTAyZTBiYjJiZjVlMGM0MzZlZDY4Ny4uNWJlNjY1OTQ2MTM3MzFlMjFlZDk3ZGE3
NGM1NzM4YzdjYTI4NWJmNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVz
dFdlYkNvcmVTdHVicy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNv
cmVTdHVicy5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
QnVmZmVyLmg+CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUlu
dG9CdWZmZXIoY29uc3QgY2hhciopCitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKikKIHsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVy
Zm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODkyMzkyZDg3Zjc0MDBlYmZhOThmNWE4NjUz
YzlmZDRlMjc1NWY1OS4uNzA4MGE2Y2Y3YTZkMjIwMGFlMzAzYzIyY2U3MzExOTEwZGRhYTFmMiAx
MDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2
ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMg
U2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRh
YmlsaXR5OiBwYXJ0IDMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRGVjb2RlclRlc3QvRGVjb2RlclRlc3QvbWFpbi5tbToKKyAgICAgICAgKG1haW4p
OgorCiAyMDIxLTExLTIxICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbUGVyZm9ybWFuY2UgdGVzdF1bY3NzLWNvbnRhaW5dIEFkZCBjYXNlIHRvIHRlc3Qg
Y29udGFpbjogbGF5b3V0IGluc2lkZSBhIGNvbXBsZXggZG9jdW1lbnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445999</attachid>
            <date>2021-12-05 22:44:43 -0800</date>
            <delta_ts>2021-12-06 04:37:16 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233677-20211206174439.patch</filename>
            <type>text/plain</type>
            <size>783125</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YTJiZTEzOTE2MjhmNTNiNmQ2ZDIyZTEzY2E3ZmIyYmRkMjA1ZWYzLi5kMTcyNDIwMTVhOGI5Zjc3
ZTRmZWM3M2Y1YjMwMzdhZThkMDkxODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8v
cHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBi
ZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0FycmF5QnVmZmVyLmg6CisKIDIwMjEtMTItMDMgIEtlaXRoIE1pbGxlciAgPGtlaXRo
X21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFN0cnVjdHVyZUlEQmxvYgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGJkZjA1OWEwOTIxYTlkYzZmMDNlYTQwN2RkNjNiZDkwMDlkNGQyOWIuLjA2OGNi
OGMzYTcwOTQ2Y2RiYmE4N2IyNDY5MjhiOWNjMGQyNzY2MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMDAzIEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9w
cm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIg
YW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJl
dHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICBSZW5h
bWUgb25seSwgbm8gY2hhbmdlIGluIGJlaGF2aW91ci4KKworICAgICAgICAqIE1vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oOgorICAgICAgICAqIE1vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUv
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NE
TS5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaDoKKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oOgorICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5Lmg6CisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oOgorICAgICAgICAq
IE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwOgorICAgICAgICAqIE1v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYU1ldGFkYXRhLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJj
ZUJ1ZmZlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIu
aDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJT
b3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgICog
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5jcHA6
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9y
Lmg6CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaDoKKyAgICAg
ICAgKiBlZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHA6CisgICAgICAgICogZWRpdGluZy9XZWJDb3JlUGFz
dGVib2FyZEZpbGVSZWFkZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29h
Lm1tOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAg
KiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKiBlZGl0
aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW06CisgICAgICAgICogZmlsZWFwaS9CbG9iLmg6CisgICAgICAgICogZmlsZWFw
aS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtTZW5kUXVl
dWUuaDoKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAg
KiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MQXR0
YWNobWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW1hZ2VE
b2N1bWVudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAqIGlu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAg
ICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0xvYWRlclN0cmF0ZWd5
Lmg6CisgICAgICAgICogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIv
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlRGF0YS5oOgorICAgICAg
ICAqIGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oOgorICAgICAg
ICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVy
L2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2
ZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmg6Cisg
ICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAq
IGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NT
dHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0ZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRl
eHRUcmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oOgorICAgICAg
ICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tOgorICAgICAgICAqIGxvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5tbToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAqIHBh
Z2UvUGFnZS5jcHA6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5jcHA6CisgICAgICAg
ICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhLmg6Cisg
ICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0tl
eWVkQ29kaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0
ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2Fy
ZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5o
OgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1N0YXRpY1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1N0YXRpY1Bhc3RlYm9h
cmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Y2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJD
Ri5jcHA6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2Nv
YS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1VdGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0
aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVy
R2VuZXJpYy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5l
cmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9X
T0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVG
b3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0
Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlD
bGVhcktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
VGh1bmRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9D
RE1UaHVuZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9H
U3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFDYWlyby5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRQbGF0Zm9ybURhdGFXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlRGVjb2RlckRpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVh
ZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFn
ZVJlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9J
bWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rl
ci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxh
dGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3RDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9w
b3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Bhc3Rl
Ym9hcmRXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3Bw
OgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAqIHRlc3Rp
bmcvTW9ja0NETUZhY3RvcnkuaDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
LmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmg6CisgICAgICAgICog
d29ya2Vycy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlckZldGNoLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyRmV0Y2guaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0
U3RvcmFnZS5jcHA6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcDoKKyAg
ICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisKKzIwMjEt
MTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
U2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbWlsYXIgdG8gU3Ry
aW5nQnVpbGRlciwgYSBTaGFyZWRCdWZmZXIgY2FuIG5vdyBvbmx5IGJlIG1vZGlmaWVkIHRocm91
Z2gKKyAgICAgICAgYSBTaGFyZWRCdWZmZXJCdWlsZGVyLiBBIFNoYXJlZEJ1ZmZlciBiZWNvbWVz
IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgRmx5LUJ5OiBQYXNzIFNoYXJlZEJ1
ZmZlciB2aWEgY29uc3QgcmVmZXJlbmNlcyBvciBwb2ludGVycyB3aGVyZSBpdCdzIGVhc3kKKyAg
ICAgICAgdG8gZG8gc28uCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91
cjsgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
OjpjbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29u
c3VtZXI6OnRha2VBc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6
OnNldFNvdXJjZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5o
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmRhdGEgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOiBEZWxldGVkLgorICAg
ICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIE1vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL05l
dHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6ZGF0YUxlbmd0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzQnVmZmVyZWREYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6Omhhc0RhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJl
c291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZl
cmluZ1BvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9y
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVzb3VyY2VE
YXRhKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0
aXR1dGVSZXNvdXJjZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRl
UmVzb3VyY2U6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGVsaXZlcik6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6
OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpzdG9yZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6
dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNv
bnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFn
ZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1
bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
VGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZG9VcGRh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW06
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVy
RGlkU3RhcnRDb252ZXJ0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2Fk
ZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdD
b252ZXJ0ZXI6OnByZXZpZXdEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdD
b252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6Om9wZXJhdG9y
IGJvb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNO
dWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzRW1w
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6c2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpyZXNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjplbXB0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpnZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtl
eWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlkRnJv
bVdlYk1Jbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3Rv
cmVkSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0
YTo6SW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OmFwcGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbml0RGF0YTo6cGF5bG9hZCBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUHJldmlld0Nv
bnZlcnRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OlByZXZp
ZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OnRha2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jhbmdl
UmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yOjpEYXRhOjpEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5l
cmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
RnJvbURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiB3b3JrZXJzL1Njcmlw
dEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpidWZmZXIgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc29sYXRlZENvcHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmlzUGVuZGluZyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0Lmg6CisgICAgICAgICog
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3Jl
YXRlUmVzcG9uc2VCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVh
dGVSZXNwb25zZUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpjbGVhclJlc3BvbnNlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVz
dDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorCisy
MDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAg
RGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBv
bmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGNhbGxp
bmcgU2hhcmVkQnVmZmVyOjpkYXRhKCkgdGhlIHVuZGVybHlpbmcgZGF0YSB3YXMgZmxhdHRlbmVk
LAorICAgICAgICBhbmQgc28gY291bGQgYmUgbXV0YXRlZCB3aGlsZSBiZWluZyBzaGFyZWQuIFRo
aXMgd2FzIGFuIHVuZGVzaXJhYmxlCisgICAgICAgIGJlaGF2aW91ci4KKyAgICAgICAgV2UgaW50
cm9kdWNlIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgd2hpY2ggZ3VhcmFudGVlIHRoYXQgaXRzIGNv
bnRlbnQgaXMgbWFkZQorICAgICAgICBvZiBjb250aWd1b3VzIGRhdGEuCisgICAgICAgIEFsbCBt
ZXRob2RzIHRoYXQgd291bGQgaGF2ZSBtdXRhdGVkIGEgU2hhcmVkQnVmZmVyIHdoZW4gYmVpbmcg
ZmxhdHRlbmVkIGFyZQorICAgICAgICBtb3ZlZCB0byBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgor
CisgICAgICAgIEFyZWEgd2hlcmUgU2hhcmVkQnVmZmVycyB3ZXJlIGFsd2F5cyBjcmVhdGVkIHdp
dGggYSBzaW5nbGUgc2VnbWVudCB3aGVyZQorICAgICAgICBjb252ZXJ0ZWQgdG8gYSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBQcmV2aW91c2x5LCBhIFNoYXJlZEJ1ZmZlciB3b3Vs
ZCBoYXZlIGJlZW4gZmxhdHRlbmVkIG9ubHkgaWYgaXQgbmVlZGVkIHRvIGJlCisgICAgICAgIGFu
ZCBvbmx5IHdoZW4gdGhlIGRhdGEgd2FzIGdvaW5nIHRvIGJlIGFjY2Vzc2VkOyBmb2xsb3dpbmcg
dGhpcyBjaGFuZ2UKKyAgICAgICAgdGhlIGNvbnZlcnNpb24gaXMgbm93IGV4cGxpY3RseSBkb25l
IHRocm91Z2ggYSBjYWxsIHRvIG1ha2VDb250aWd1b3VzLgorICAgICAgICBUaGlzIGNvbnZlcnNp
b24gaXMgYSBuby1vcCBpZiB0aGUgU2hhcmVkQnVmZmVyIGJlaW5nIGNvbnZlcnRlZCB3YXMgYWxy
ZWFkeQorICAgICAgICBhIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisgICAgICAgIFdpdGggdGhl
IG5hdHVyZSBvZiBhIFNoYXJlZEJ1ZmZlciBiZWluZyBzaGFyZWQgYnkgcG90ZW50aWFsbHkgbXVs
dGlwbGUKKyAgICAgICAgdXNlcnMgaXQgd2FzIG5lY2Vzc2FyeSB0byBsaW1pdCB0aGUgbnVtYmVy
IG9mIGNvbnZlcnNpb25zIGJlaW5nIHBlcmZvcm1lZAorICAgICAgICBvbiBkZW1hbmQgdG8gYXZv
aWQgcmVkdW5kYW5jeS4KKyAgICAgICAgV2hlbiB0aGUgZmxhdHRlbmluZyBjb3VsZCBoYXZlIG9j
Y3VyZWQsIHRoZSBTaGFyZWRCdWZmZXIgY3JlYXRpb24gcG9pbnRzIHdlcmUKKyAgICAgICAgdHJh
Y2VkIGJhY2sgYW5kIGlkZW50aWZpZWQgdG8gbWFrZSB0aGUgYnVmZmVyIGNvbnRpZ3VvdXMgdGhl
bi4KKyAgICAgICAgSW4gdGhlIGVuZCwgdGhlcmUncyBubyBtb3JlIFNoYXJlZEJ1ZmZlciBmbGF0
dGVuaW5nIG9wZXJhdGlvbnMgdGhhbiB0aGVyZQorICAgICAgICB3b3VsZCBoYXZlIGJlZW4gYmVm
b3JlIHRoaXMgY2hhbmdlLgorICAgICAgICBUaGVyZSdzIGEgcG90ZW50aWFsIGluY3JlYXNlIG9m
IHRlbXBvcmFyeSBtZW1vcnkgdXNhZ2Ugd2l0aCB0aGUKKyAgICAgICAgU2NyaXB0QnVmZmVyU291
cmNlUHJvdmlkZXIgY2xhc3M7IGJ1ZyAyMzM1MTEgaXMgdHJhY2tpbmcgaXQuCisKKyAgICAgICAg
V2hpbGUgdGhlIGNoYW5nZSBpcyBleHRlbnNpdmUsIGNvZGUgY292ZXJhZ2Ugb2YgdGhlIG1vZGlm
aWVkIGFyZWFzIGlzIHRob3JvdWdoCisgICAgICAgIHdoaWNoIG1ha2VzIHVuZGV0ZWN0ZWQgcmVn
cmVzc2lvbnMgdW5saWtlbHkuCisKKyAgICAgICAgSW4gYnVnIDIzMzQ0MiwgYSBTaGFyZWRCdWZm
ZXIgd2lsbCBiZSBtYWRlIGNvbXBsZXRlbHkgaW1tdXRhYmxlIG9uY2UgY3JlYXRlZC4KKworICAg
ICAgICBObyBvYnNlcnZhYmxlIGNoYW5nZS4KKyAgICAgICAgQ292ZXJlZCBieSBhbGwgZXhpc3Rp
bmcgdGVzdHMuIE5ldyBBUEkgdGVzdHMgY3JlYXRkZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0
ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAg
ICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxCb2R5U2l6ZSk6Cisg
ICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXRXaXRoUmVz
cG9uc2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjppc29sYXRl
ZFJlc3BvbnNlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Y29weVJl
c3BvbnNlQm9keSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SURzS2V5aWRzKToKKyAgICAgICAgKFdlYkNvcmU6
OnNhbml0aXplS2V5aWRzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmtleUlkc01hdGNoKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhS2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6bmV4dCk6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Ojpjb25zdW1lRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpib2R5
QXNGb3JtRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OnRha2UpOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlD
b25zdW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzVGV4dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRh
QnlDaHVuayk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YSk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdo
bGlnaHQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdl
RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
aWFsaXphdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlQYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleURhdGEpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmg6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2Vk
UHV0SW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRS
ZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudCk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQ
cmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGll
bnQpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToK
KyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExv
YWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlGaWxlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNzcy9DU1NGb250
RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6bG9h
ZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZWRpdGlu
Zy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNlZEF0dGFjaG1l
bnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcv
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0
b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRT
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmRE
YXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvbklu
V2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkRG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQpOgorICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252
ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxlV3JhcHBlckZv
clVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAgICAqIGVkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVw
bGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJh
Y3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3VwV2l0
aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKiBlZGl0
aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmltYWdlSW5X
ZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBs
YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2Rl
RGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50Ojpj
YWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6
bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdl
bnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURh
dGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdo
dCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50
KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNs
aWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFu
aWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3lu
Y2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2
ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSk6Cisg
ICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBsb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSFRN
TFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVl
dDo6c2hlZXRUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hl
ZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkIGNvbnN0KToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3
UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNv
dXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5j
b2RlZERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnJlc291cmNlQnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0Zv
bnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0eWxlU2hl
ZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25p
dG9yQ29jb2EuaDoKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tl
ZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZCk6CisgICAgICAgICog
cGFnZS9FZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hlZXQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvUGFn
ZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlh
bGl6ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVD
U1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjphZGRJbWFn
ZVRvUmVzb3VyY2VzKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmg6CisgICAgICAg
ICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YVJlYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVi
b2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFy
ZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZv
cm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBh
c3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg6
CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNFbXB0
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzQ29udGlndW91cyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0ciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hh
cmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0ZjhCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21l
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6RGF0YVNlZ21lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpL
ZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3Jl
Ojpjb252ZXJ0VElGRlRvUE5HKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2spOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L1NoYXJlZEJ1ZmZlckNvY29hLm1tOgorICAgICAgICAoLVtXZWJDb3JlU2hhcmVkQnVmZmVyRGF0
YSBpbml0V2l0aERhdGFTZWdtZW50OnBvc2l0aW9uOnNpemU6XSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OktleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGli
L0tleWVkRW5jb2RlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2xp
Yjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVy
R2xpYi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJv
bVJlYWRpbmdGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnQ6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb2RlbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpNb2RlbCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1v
ZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmRlY29kZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cmVhZFVJbnQzMik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVUludDE2KToKKyAg
ICAgICAgKFdlYkNvcmU6OmlzV09GRik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V09GRlRv
U2ZudCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0U2luZkRhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VKU09OVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1
ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpk
aWRQcm92aWRlUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VE
ZWNvZGVyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpz
ZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNv
dXJjZU1lZGlhTG9hZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVmZmVyR2V0Qnl0ZXNB
dFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpJbWFnZURlY29k
ZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxh
dGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVu
Y29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1hcmt1cFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJD
b3JlOjpJbml0RGF0YTo6SW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L1BERkRvY3VtZW50SW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudElt
YWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbzo6Z2V0SXRhbGljQ29ycmVjdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoSW5mbzo6bWF0aEl0YWxpY3NDb3Jy
ZWN0aW9uSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R2x5cGhBc3Nl
bWJseTo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRTaXplVmFyaWFudHMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6Z2V0QXNzZW1ibHlQ
YXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aFZhcmlhbnRzOjpt
YXRoR2x5cGhDb25zdHJ1Y3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Ok1BVEhUYWJsZTo6bWF0aENvbnN0YW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVu
VHlwZTo6TUFUSFRhYmxlOjptYXRoR2x5cGhJbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhWYXJpYW50cyBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpUYWJsZUJhc2U6OmlzVmFsaWRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRh
YmxlQmFzZTo6dmFsaWRhdGVQdHIpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxl
QmFzZTo6dmFsaWRhdGVPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OlRhYmxlV2l0aENvdmVyYWdlOjpnZXRDb3ZlcmFnZUluZGV4IGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZW5hbWVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OnJlbmFtZUFuZEFjdGl2
YXRlRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVZlcnRpY2FsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U3Vic3RpdHV0
aW9uU3ViVGFibGU6OmNvdmVyYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpMb29rdXBUYWJsZTo6Z2V0U3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6TG9va3VwTGlzdDo6bG9va3VwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpGZWF0dXJlVGFibGU6OmdldEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZlYXR1cmUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmaW5kRmVhdHVyZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TGFuZ1N5c1RhYmxlOjpmZWF0dXJlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRUYWJsZTo6ZGVmYXVsdExh
bmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OnNj
cmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6ZGVm
YXVsdFNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlz
dDo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdT
VUJUYWJsZTo6c2NyaXB0TGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpmZWF0dXJlTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6R1NVQlRhYmxlOjpsb29rdXBMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpHU1VCVGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkdTVUJUYWJsZTo6Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6bG9hZEhtdHhUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpP
cGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlw
ZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6c2V0Q3VzdG9tRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpjdXN0b21EYXRhIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1h
Z2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxh
dGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2Fy
ZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1Nh
ZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJ
dGVtUHJvdmlkZXJSZWdpc3RyYXRpb25MaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpmaWxlV3JhcHBlcik6CisgICAgICAg
IChXZWJDb3JlOjpyZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRXcml0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3Jp
dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRJdGVtKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRh
Ojphc1NoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNl
OnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxl
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxl
OjpkaWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpw
cm9jZXNzQ29udGVudCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25s
b2FkRmlsZUlmRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFs
SW1hZ2VGaWxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxIRHJvcENv
bnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckZldGNoOjpwcm9jZXNzUmVzcG9uc2UpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUpOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vz
c29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJGdW5jKToKKyAgICAg
ICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVuRnVuYyk6CisKIDIwMjEtMTItMDMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgQnJvYWRjYXN0Q2hhbm5lbCwgQ09PUCwgQ09FUCBhbmQg
V2ViIExvY2tzIHRvIGZlYXR1cmVzLmpzb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODc3NjkxNDk3NmIyYTkyZjc2
ZGQ4NzYxMWQyODFhMDI4YjEzNzQ5NS4uNTBmMTc2ZTljOThkYTQ0MzFjMzI0NTQ5YTA2MWRkMmZm
MzdkZWIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMjAgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVy
IGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFt
ZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAg
ICAgIHR5cGVzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
UHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Q
cm94eS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHA6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oOgorICAgICAgICAq
IEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50Lmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5jcHA6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oOgor
ICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHA6CisgICAgICAgICogUGxhdGZvcm0v
U2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5
TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaDoKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYkhpdFRlc3RSZXN1
bHREYXRhLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoK
KyAgICAgICAgKiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRS
dWxlTGlzdFN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xp
ZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2Eu
bW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06Cisg
ICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2d0ay9DbGlwYm9hcmQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0
azMuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW06CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1h
Yy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJ
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlci5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJE
cmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNw
cDoKKworMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisg
ICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1Njkz
OTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0Nh
Y2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVM
b2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNw
ZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdpblZpZXcpOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbCk6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorCisyMDIxLTExLTI1
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vp
c2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1
YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJl
Y29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNS
ZXF1ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpDYWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50
cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVj
b2RlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAg
ICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKElQ
Qzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVy
Q29weTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25z
dCk6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVk
L0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291
cmNlOjpkYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2EubW06CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+
Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
R0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFy
ZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBD
OjpkZWNvZGVTaGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjplbmNvZGVUeXBlc0FuZERhdGEp
OgorICAgICAgICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUpOgorICAgICAg
ICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2Ny
aXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZSk6CisgICAgICAg
ICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNo
bWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQ
STo6QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgor
ICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24g
Y29uc3QpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkRyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVz
dGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3Rl
QWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKyAgICAgICAgKGFs
bFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBhY3Rpb25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoSW1hZ2U6cmVjdDpdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6
CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9h
cmREYXRhRm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAg
ICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRp
dGluZ0RlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVsZWFzZVNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6d2lsbExvYWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMv
QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkFS
S2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZv
clR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZm
ZXJGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
c291cmNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRz
VmlkZW9GdWxsc2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKwogMjAyMS0x
Mi0wMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBb
aU9TXSBXZWIgY29udGVudCBwcm9jZXNzIHNvbWV0aW1lcyBjcmFzaGVzIHVuZGVyIFdlYlBhZ2U6
OnBvc2l0aW9uSW5mb3JtYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBkNzc2ZTgyZGYx
MzJjYWY2NTI3OTNhNzlhMDA4M2FkNjU1OWRjMjY1Li4zNzc3ZjJhNTZiYzhlNjA0ZTk0NTFlOGJk
MTJlMjViNDNhMzUxNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYz
OTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hh
cmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAg
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0
IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1BpbmdIYW5kbGUuaDoKKwogMjAyMS0xMS0xMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgTWFrZSBzb3J0LVhjb2RlLXByb2plY3QtZmlsZSBpZGVtcG90ZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNzZhYTZhYWY4NGRlYjA4MmU0Yzg0MzIyNDkz
MzgwZDgzM2RlOTJkMS4uMjA1ODQ1MzQ0OTg0OTU3N2M1NTAxMWNkNTljZTg4M2JlYmQ5ZTZjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTEyLTAz
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNo
YXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVy
IGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFj
dHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRh
dGFTb3VyY2UubW06CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlJlc291cmNlLm1tOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFy
ZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxp
dHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAz
MAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01VSUtpdEV4dGVuc2lvbnMubW06CisgICAgICAg
ICgtW0RPTUhUTUxJbWFnZUVsZW1lbnQgZGF0YVJlcHJlc2VudGF0aW9uOl0pOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZSk6
CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZCk6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJE
YXRhU291cmNlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlv
bi5tbToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIGRvY3VtZW50U291cmNlXSk6
CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJl
TWVudUl0ZW0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgt
W1dlYlJlc291cmNlIGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2Ug
ZGF0YV0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBfc3RyaW5nVmFsdWVdKToKKwogMjAyMS0x
Mi0wMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAg
IFtXZWJHUFVdIEhvb2sgdXAgbmF2aWdhdG9yLmdwdS5yZXF1ZXN0QWRhcHRlcigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggMDJlOTQ2YmMxZmIwYjM1NmJiMTVhYjgzNjBlODYxNDU1
NDcyNDdjYy4uYTZkN2FmZDAwZmNkYjdiYTk5MTM1OWQ3MjIzZWFiN2I0NDRiYjU0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTEyLTAzICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1
ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSBy
ZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAor
ICAgICAgICB0eXBlcy4KKworICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAgICAgICog
TWVtb3J5U3RyZWFtLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgICog
V2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJLaXRETEwuY3BwOgorICAgICAgICAqIFdlYlJlc291
cmNlLmNwcDoKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5oOgorCisyMDIxLTEyLTAxICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdl
YkZyYW1lOjpsb2FkRGF0YSk6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZl
ciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAg
ICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogTWVtb3J5U3RyZWFtLmNwcDoKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6
TWVtb3J5U3RyZWFtKToKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UpOgor
ICAgICAgICAqIE1lbW9yeVN0cmVhbS5oOgorICAgICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAg
ICAgICAoV2ViQXJjaGl2ZTo6ZGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgor
ICAgICAgICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViRGF0YVNvdXJjZTo6ZGF0
YSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2U6OmNy
ZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5oOgorCiAyMDIxLTEyLTAyICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl0gTWFrZSBXZWIg
TG9jayBBUEkgd29yayBhY3Jvc3MgbXVsdGlwbGUgV2ViUHJvY2Vzc2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCBlYWNjYTJjMjMzYThhNjkzNzE1
OTA4MDdkZmQzNjc1YjA2MTU5NDI4Li5iNDY5M2Y5MWM2MDdkOGQwNzQ1OTQ2NDZlOGRjNDM3MmU5
YmM5OWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgK
QEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKEFycmF5QnVmZmVyJik7CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlKGNvbnN0IHZv
aWQqIHNvdXJjZSwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogCi0gICAgLy8gT25seSBmb3IgdXNlIGJ5
IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkIGFuZCBTaGFyZWRCdWZm
ZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyLgorICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENs
YW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIuCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZjxBcnJheUJ1ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QgbnVtRWxl
bWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVh
ZGVyLmNwcAppbmRleCAzMzU0YjUyYTUwY2JiMTg5ZmRmYWViN2Q4MjQ4M2JlMGM0MWMzZDRlLi5k
YTMzNmU2ZjViMTY5NGUzNzQ3NjkwYzQzZDJiNTNmMzUxOGMwOWZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
I2lmICFQTEFURk9STShDT0NPQSkKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1
ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKQor
dm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKaW5kZXggMmI2MjYyODQxOWIw
OWNiYjY5NTUyMTViMGQ1ZDdkNzNjMGIzNzQ0ZC4uNmUyMjA0OGNmNWZlYTlhYTYyZGFkZjQ1YjFm
MzVjNGNlMGQ3ZDZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCkBAIC0zMSw3ICszMSw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IENsaXBib2Fy
ZEltYWdlUmVhZGVyIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIENsaXBib2FyZEltYWdl
UmVhZGVyKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcm
KSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICBib29sIHNob3VsZFJlYWRC
dWZmZXIoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJikgZmluYWw7CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
OwogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFN0cmluZyBtX21pbWVU
eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApp
bmRleCBkMDc0NmRhMmRhMjA5ZTAyMzI1YjVmYTIxNGRiZWU2NGJmOWM5MDc4Li5lZmYxMGI1YjY1
ZmQ4MWFkOWJhMzJmODBiM2YyY2YyZjhlOThmMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApAQCAtMjE2LDggKzIxNiw4IEBAIHZvaWQgQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6aW52b2tlQ29tcGxldGlvbkhhbmRsZXIoKQog
ICAgICAgICBhdXRvJiBkYXRhID0gaXRlbVR5cGVMb2FkZXItPmRhdGEoKTsKICAgICAgICAgaWYg
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhIXN0ZDo6Z2V0PFN0cmlu
Zz4oZGF0YSkpCiAgICAgICAgICAgICBjdXN0b21EYXRhLndyaXRlU3RyaW5nKHR5cGUsIHN0ZDo6
Z2V0PFN0cmluZz4oZGF0YSkpOwotICAgICAgICBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihkYXRhKSkKLSAgICAgICAgICAgIGN1c3RvbURhdGEud3Jp
dGVEYXRhKHR5cGUsIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihkYXRhKS5jb3B5UmVmKCkp
OworICAgICAgICBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4oZGF0YSkpCisgICAgICAgICAgICBjdXN0b21EYXRhLndyaXRlRGF0YSh0
eXBlLCBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGRhdGEpLmNvcHlSZWYo
KSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpu
dWxsb3B0KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI2NSw5ICsyNjUsOSBAQCB2b2lkIENs
aXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpz
YW5pdGl6ZURhdGFJZk5lZQogewogICAgIGlmIChtX3R5cGUgPT0gInRleHQvaHRtbCJfcykgewog
ICAgICAgICBTdHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKLSAgICAgICAgICAgIGF1
dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOwotICAgICAg
ICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7CisgICAgICAgICAgICBhdXRvJiBi
dWZmZXIgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Cisg
ICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICB9IGVsc2Ug
aWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpKQogICAgICAgICAgICAg
bWFya3VwVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFN0cmluZz4obV9kYXRhKTsKIApAQCAtMjc4LDkg
KzI3OCw5IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJk
SXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiAgICAgfQogCiAgICAgaWYgKG1fdHlw
ZSA9PSAiaW1hZ2UvcG5nIl9zKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
clRvU2FuaXRpemU7Ci0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFy
ZWRCdWZmZXI+PihtX2RhdGEpKQotICAgICAgICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHN0ZDo6
Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpLnB0cigpOworICAgICAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZTsKKyAgICAgICAgaWYgKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihtX2RhdGEpKQor
ICAgICAgICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4obV9kYXRhKS5wdHIoKTsKICAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBidWZmZXJUb1Nhbml0aXpl
ID0gdXRmOEJ1ZmZlcihzdGQ6OmdldDxTdHJpbmc+KG1fZGF0YSkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGlu
Z3NEYXRhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgKaW5kZXggMmNjMmM4ZTFhNTRlMThkNzM0
OTVjNTMwY2Q3N2Q1NGY5OWE1MjlhNy4uMzdjODI1ZTIzNWE4YThiN2U0NGU0MGZiMGMyZDc3MjQ0
MDdhNzU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
aApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBET01Qcm9taXNlOwogY2xhc3MgRmlsZVJlYWRlckxv
YWRlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UgOiBwdWJsaWMgQ2xp
cGJvYXJkSXRlbURhdGFTb3VyY2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAt
NTMsNyArNTMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbnZva2VDb21wbGV0aW9uSGFuZGxl
cigpOwogCi0gICAgdXNpbmcgQnVmZmVyT3JTdHJpbmcgPSBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBS
ZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgQnVmZmVyT3JTdHJpbmcgPSBzdGQ6OnZhcmlh
bnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAgIGNsYXNzIENsaXBi
b2FyZEl0ZW1UeXBlTG9hZGVyIDogcHVibGljIEZpbGVSZWFkZXJMb2FkZXJDbGllbnQsIHB1Ymxp
YyBSZWZDb3VudGVkPENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyPiB7CiAgICAgcHVibGljOgogICAg
ICAgICBzdGF0aWMgUmVmPENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiB0eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3Mv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggNDMwMjM2MWU2
ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMC4uMjc0ZTAzOGQ0MTg3MDE2MWU0ZWViODBj
MTJhYmJhODcxZjlkNGE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklP
Uy5tbQpAQCAtMzQsMTAgKzM0LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBD
bGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFn
ZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFn
ZUluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
KyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2Uo
KSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBuc0RhdGEgPSBVSUltYWdlUE5HUmVwcmVzZW50YXRp
b24oaW1hZ2UuZ2V0KCkpKQogICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9k
b2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0
YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZElt
YWdlUmVhZGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGI0YzMxY2E1MDYzOWNjY2E0YzU1
MDU0ZDQ5MTMxNzg2OWRhN2U1YmYuLjM4MjFiMDM3MTgwMjgyM2Q2OWE4MzBhMzEwZGEzNDcwOGQ2
MzMwNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTMz
LDEwICszMywxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ2xpcGJvYXJkSW1h
Z2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewot
ICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0
YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGF1dG8gaW1hZ2UgPSBh
ZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1dG8gY2dJbWFnZSA9
IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5pbCBoaW50czpuaWxd
KSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRvcHROUyhbW05TQml0bWFw
SW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7CiAgICAgICAgICAgICBO
U0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpO
U0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggZTZjYzFhYWU3ODNhNTIwOTRmNjU0OTli
YjkwZGQ3ZjAwNzFkNDI0Yy4uZjA1YzIzMzA3YmM1YTBlNTgyZGRjZDg2MGQ1YmIxYTFiMzA5MzI1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTI4OSw3
ICsyODksNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGlu
Zm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgc2l6ZV90IHJlY29yZFBvc2l0aW9uID0gdGFza0hhbmRsZXItPmFkZFJlY29yZCh0b0Nv
bm5lY3Rpb25SZWNvcmQocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UsIG51bGxwdHIpKTsKIAotICAg
ICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rhc2tIYW5kbGVy
ID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3Vs
dCkgbXV0YWJsZSB7CisgICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlD
aHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24s
IGRhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCksIHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2Ug
fV0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmICh0YXNrSGFu
ZGxlci0+aXNEb25lKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjk5LDkg
KzI5OSw5IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5m
b3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0g
ICAgICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1
bmstPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB0
YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgV1RG
TW92ZShkYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25z
ZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBkYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3Vv
dXMoKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwgY2FjaGVkUmVzb3VyY2VSZXF1ZXN0
SW5pdGlhdG9ycygpLmZldGNoKTsKICAgICB9CkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBET01D
YWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9t
aXNlLCBSZWY8RmV0Y2gKIAogICAgIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgYm9keTsK
ICAgICBpZiAoYXV0byBidWZmZXIgPSByZXNwb25zZUJvZHkucmVsZWFzZVJldHVyblZhbHVlKCkp
Ci0gICAgICAgIGJvZHkgPSBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgYm9keSA9
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBiYXRjaFB1dE9wZXJhdGlvbihyZXF1ZXN0
LmdldCgpLCByZXNwb25zZS5nZXQoKSwgV1RGTW92ZShib2R5KSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBSZWYgeyAqdGhpcyB9LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9u
T3I8dm9pZD4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2Jq
ZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwpAQCAtMzc1LDcgKzM3
NSw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJl
c3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAKICAgICBpZiAocmVzcG9uc2UtPmlzQm9k
eVJlY2VpdmVkQnlDaHVuaygpKSB7CiAgICAgICAgIGF1dG8mIHJlc3BvbnNlUmVmID0gcmVzcG9u
c2UuZ2V0KCk7Ci0gICAgICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5r
KFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCks
IHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGhpc10o
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHJlc3BvbnNlUmVmLmNvbnN1bWVCb2R5
UmVjZWl2ZWRCeUNodW5rKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVxdWVzdCA9IFdU
Rk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIGRhdGEgPSBTaGFy
ZWRCdWZmZXJCdWlsZGVyKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHko
KnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKIAogICAgICAgICAgICAgaWYg
KHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhS
ZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShy
ZXNwb25zZSksIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuaXNvbGF0ZWRDb3B5KCkpOwpAQCAt
MzgzLDkgKzM4Myw5IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAg
ICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsK
KyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgp
KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9u
c2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9u
c2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoZGF0YSkgfSk7CisgICAgICAgICAg
ICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBkYXRh
LnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuY3BwCmluZGV4IDI1OTE0YjQwYmIyMzgzYTA3ODgwNGY4OWIxMWI0MGQ4OTcwYjQzMDYuLmMw
ZjgwMzJiMDQ1MmMzN2VlNGNhZmJjYWZkNzlmMDlkMjE0NjMzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC0xMzIsNyArMTMyLDcg
QEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYg
Ym9keSkKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURh
dGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRh
LT5pc29sYXRlZENvcHkoKTsKICAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAgICByZXR1cm4gYnVmZmVyLT5jb3B5KCk7Cisg
ICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOyAvLyBTaGFyZWRCdWZmZXIgYXJlIGltbXV0
YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVs
bHB0cl90JikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5l
OjpSZXNwb25zZUJvZHkgeyB9OwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDI4NTBkYmExZTNiZmExMWY0ODliNDQ0MDM1MTNk
NTFhZTFiZWFkM2EuLjlkMWJjNjc0ZmM4MjZjYjZkMTZkMDI1MTBjZjg0MDEwYWRjYmQ3NzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKQEAgLTEz
NSwxNyArMTM1LDE3IEBAIGJvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3By
aXZhdGUtPnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGlu
aXREYXRhKQogewogICAgIHJldHVybiBJbml0RGF0YVJlZ2lzdHJ5OjpzaGFyZWQoKS5zYW5pdGl6
ZUluaXREYXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpOwogfQogCi1ib29sIENETTo6c3VwcG9y
dHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpCitib29sIENETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRh
KQogewogICAgIHJldHVybiBtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0c0luaXREYXRh
KGluaXREYXRhVHlwZSwgaW5pdERhdGEpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE06
OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKK1JlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFtX3ByaXZhdGUpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNLmgKaW5kZXggZDhhNGIzYWYxMmYxYTc5MjNkODg3MDVkNWI5NTgxZDM2ZjEwMjcwYy4u
ZDdiMWQ1M2QwNDkxZjcyNzc5YjU5NGIyZDgzYzA5YjgzYmNmMjA3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNz
IENETUluc3RhbmNlOwogY2xhc3MgQ0RNUHJpdmF0ZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENETSA6IHB1YmxpYyBSZWZDb3VudGVkPENETT4s
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE0+LCBwcml2YXRlIENvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyIHsKIHB1YmxpYzoKQEAgLTczLDEwICs3MywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBz
dXBwb3J0c1Nlc3Npb25zKCkgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhVHlwZShj
b25zdCBBdG9tU3RyaW5nJikgY29uc3Q7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVk
QnVmZmVyJik7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgYm9vbCBzdXBwb3J0c0lu
aXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25z
ZShjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE1DbGllbnQuaAppbmRleCAyMWU1MmY0YjcxNGZiOTFmNjdjZmMzOTYxMzljMTY1MjViZmI3
YjliLi40MTBlZDJmYjY0Mjc1NjJjZTliZDhlZGE0ZDkxYTg2YmE5OGNhYTYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKQEAgLTM2
LDE0ICszNiwxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDRE1JbnN0YW5jZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNs
YXNzIENETUNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1DbGllbnQ+IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5DRE1DbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZv
aWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNl
aXZlZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29u
c3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4IDBiZjVlYWE3NGVk
YmU2ODlhOGQyZTQwYTM0MWE2NzA3NDQwZjJkNTYuLjZmODg4ZTE3ODU4ZGRhNmQ5NDcxZWMxZjZl
ZjVkMDY2ZGYwZTQ5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtNTQsMTMgKzU0LDEzIEBA
IG5hbWVzcGFjZSB7CiAgICAgY29uc3QgdWludDMyX3Qga0tleUlkc01heEtleUlkU2l6ZUluQnl0
ZXMgPSA1MTI7CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVm
ZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4g
ZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgLy8gMS4gRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5
cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAg
ICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGpzb24geyBidWZm
ZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBT
dHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZh
bHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTc0LDcgKzc0LDcgQEAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtl
eUlEc0tleWlkcyhjb25zdCBTaGFyZWQKICAgICBpZiAoIWtpZHNBcnJheSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURz
OworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBm
b3IgKGF1dG8mIHZhbHVlIDogKmtpZHNBcnJheSkgewogICAgICAgICBhdXRvIGtleUlEID0gdmFs
dWUtPmFzU3RyaW5nKCk7CiAgICAgICAgIGlmICgha2V5SUQpCkBAIC05Myw3ICs5Myw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJ
RHNLZXlpZHMoY29uc3QgU2hhcmVkCiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotc3RhdGljIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQorc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlk
cyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gMS4gRm9y
bWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQt
cmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CkBAIC0xMDQsMTQgKzEwNCwxNCBA
QCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgp
OwogICAgIGF1dG8ga2lkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGZvciAo
YXV0byYgYnVmZmVyIDoga2V5SURCdWZmZXIudmFsdWUoKSkKLSAgICAgICAga2lkc0FycmF5LT5w
dXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSkpOworICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2Rl
VG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KSk7CiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2lkc0FycmF5KSk7CiAK
ICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7CiAg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEu
bGVuZ3RoKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNP
UHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaXREYXRhUmVnaXN0cnk6OmV4
dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6
b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lm
aWNIZWFkZXJCb3g+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5j
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyA0LiBDb21t
b24gU3lzdGVtSUQgYW5kIFBTU0ggQm94IEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2NlbmMuaHRtbCNj
b21tb24tc3lzdGVtCkBAIC0xNTEsOSArMTUxLDkgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbmkK
ICAgICByZXR1cm4gcHNzaEJveGVzOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
IGtleUlEczsKIAogICAgIGF1dG8gcHNzaEJveGVzID0gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5j
KGJ1ZmZlcik7CiAgICAgaWYgKCFwc3NoQm94ZXMpCkBAIC0xODUsNyArMTg1LDcgQEAgc3RkOjpv
cHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRy
YWN0S2V5SURzQ2VuYyhjb24KICAgICByZXR1cm4ga2V5SURzOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3Ry
eTo6c2FuaXRpemVDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICAvLyA0LiBDb21tb24gU3lzdGVtSUQgYW5kIFBTU0ggQm94IEZvcm1hdAogICAgIC8vIGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRk
YXRhL2NlbmMuaHRtbCNjb21tb24tc3lzdGVtCkBAIC0xOTUsNyArMTk1LDcgQEAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVDZW5jKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIENoZWNrIGlmIHRo
ZSBidWZmZXIgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIC8vIFRoZSBXZWJNIGluaXRE
YXRhIGlzIHRoZSBDb250ZW50RW5jS2V5SUQsIHNvIHNob3VsZCBiZSBsZXNzIHRoYW4ga1dlYk1N
YXhDb250ZW50RW5jS2V5SURTaXplLgpAQCAtMjA1LDEwICsyMDUsMTAgQEAgc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplV2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
ICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1dlYk0oY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1dlYk0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZEJ1ZmZlciA9IHNhbml0aXplV2ViTShi
dWZmZXIpOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkQnVmZmVyID0gc2Fu
aXRpemVXZWJNKGJ1ZmZlcik7CiAgICAgaWYgKCFzYW5pdGl6ZWRCdWZmZXIpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCBJbml0RGF0YVJlZ2lzdHJ5
OjpJbml0RGF0YVJlZ2lzdHJ5KCkKIAogSW5pdERhdGFSZWdpc3RyeTo6fkluaXREYXRhUmVnaXN0
cnkoKSA9IGRlZmF1bHQ7CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6
OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0
RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8g
aXRlciA9IG1fdHlwZXMuZmluZChpbml0RGF0YVR5cGUpOwogICAgIGlmIChpdGVyID09IG1fdHlw
ZXMuZW5kKCkgfHwgIWl0ZXItPnZhbHVlLnNhbml0aXplSW5pdERhdGEpCkBAIC0yNDEsNyArMjQx
LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGEKICAgICByZXR1cm4gaXRlci0+dmFsdWUuc2Fu
aXRpemVJbml0RGF0YShidWZmZXIpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0
cnk6OmV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBpdGVyID0gbV90eXBl
cy5maW5kKGluaXREYXRhVHlwZSk7CiAgICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQoKSB8fCAh
aXRlci0+dmFsdWUuc2FuaXRpemVJbml0RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmgKaW5kZXggY2QxMzg3
YTZiZDAzOGZmMzRlMmNmYjc1ZjQ0M2RlN2Q5NDAzMjFiMC4uNzdkNjA0YjA4YmI3ZjdlMzhiY2Ni
MzU0NWIzNGM4YjEzNDM1NWVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmgKQEAgLTM4LDE5ICszOCwxOSBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lm
aWNIZWFkZXJCb3g7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBJbml0RGF0YVJlZ2lzdHJ5IHsKIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgSW5pdERhdGFSZWdpc3RyeSYgc2hhcmVkKCk7CiAgICAgZnJpZW5kIGNs
YXNzIE5ldmVyRGVzdHJveWVkPEluaXREYXRhUmVnaXN0cnk+OwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4
dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBzdHJ1Y3QgSW5pdERhdGFUeXBlQ2FsbGJhY2tzIHsK
LSAgICAgICAgdXNpbmcgU2FuaXRpemVJbml0RGF0YUNhbGxiYWNrID0gRnVuY3Rpb248UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4oY29uc3QgU2hhcmVkQnVmZmVyJik+OwotICAgICAgICB1c2luZyBFeHRy
YWN0S2V5SURzQ2FsbGJhY2sgPSBGdW5jdGlvbjxzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4+KGNvbnN0IFNoYXJlZEJ1ZmZlciYpPjsKKyAgICAgICAgdXNpbmcgU2FuaXRp
emVJbml0RGF0YUNhbGxiYWNrID0gRnVuY3Rpb248UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKT47CisgICAgICAgIHVzaW5nIEV4dHJh
Y3RLZXlJRHNDYWxsYmFjayA9IEZ1bmN0aW9uPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4+KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKT47CiAK
ICAgICAgICAgU2FuaXRpemVJbml0RGF0YUNhbGxiYWNrIHNhbml0aXplSW5pdERhdGE7CiAgICAg
ICAgIEV4dHJhY3RLZXlJRHNDYWxsYmFjayBleHRyYWN0S2V5SURzOwpAQCAtNjEsOSArNjEsOSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGtleWlkc05hbWUoKTsKICAg
ICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgd2VibU5hbWUoKTsKIAotICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNp
ZmljSGVhZGVyQm94Pj4+IGV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBTaGFyZWRCdWZm
ZXImKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
PiBleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBzdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlv
blN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IGV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHNhbml0aXplQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7
CiAKIHByaXZhdGU6CiAgICAgSW5pdERhdGFSZWdpc3RyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmlu
ZGV4IDhiZmIxY2U3MDFhMmY1YTY5YjViNTE5OTFhYTg2MzJlYmI4OTI1ZjkuLjE0Nzc2YzIwMTUx
YmZlZmUzODA3OWEzMzczMGM4ODY2MjY4YmE0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTE3
Niw3ICsxNzYsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgIHF1ZXVlVGFza0tlZXBp
bmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHdlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGluaXREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
aW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5sZW5ndGgoKSksIGluaXREYXRhVHlwZSwgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAo
KSBtdXRhYmxlIHsKICAgICAgICAgLy8gMTAuMS4gSWYgdGhlIGluaXQgZGF0YSBpcyBub3QgdmFs
aWQgZm9yIGluaXREYXRhVHlwZSwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQg
VHlwZUVycm9yLgogICAgICAgICAvLyAxMC4yLiBMZXQgc2FuaXRpemVkIGluaXQgZGF0YSBiZSBh
IHZhbGlkYXRlZCBhbmQgc2FuaXRpemVkIHZlcnNpb24gb2YgaW5pdCBkYXRhLgotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRJbml0RGF0YSA9IG1faW1wbGVtZW50YXRpb24t
PnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CisgICAgICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRJbml0RGF0YSA9IG1faW1wbGVtZW50
YXRpb24tPnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CiAKICAgICAg
ICAgLy8gMTAuMy4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxlZCwgcmVqZWN0IHByb21pc2Ug
d2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAgICBpZiAoIXNhbml0aXplZElu
aXREYXRhKSB7CkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVy
YXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEJ1ZmYKICAg
ICAgICAgICAgIG1fbGF0ZXN0RGVjcnlwdFRpbWUgPSAwOwogICAgICAgICB9CiAKLSAgICAgICAg
bV9pbnN0YW5jZVNlc3Npb24tPnJlcXVlc3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUsIGluaXREYXRh
VHlwZSwgc2FuaXRpemVkSW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlz
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRp
ZmllcildIChSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3Vj
Y2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9u
LT5yZXF1ZXN0TGljZW5zZShtX3Nlc3Npb25UeXBlLCBpbml0RGF0YVR5cGUsIHNhbml0aXplZElu
aXREYXRhLnJlbGVhc2VOb25OdWxsKCksIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJv
b2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFs
dWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCkBAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBNZWRpYUtleVNl
c3Npb246OnVwZGF0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYKICAgICAvLyA2LiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoK
ICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdv
cmtpbmcsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXNwb25zZSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2UubGVuZ3RoKCkpLCBw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmll
cildICgpIG11dGFibGUgewogICAgICAgICAvLyA2LjEuIExldCBzYW5pdGl6ZWQgcmVzcG9uc2Ug
YmUgYSB2YWxpZGF0ZWQgYW5kL29yIHNhbml0aXplZCB2ZXJzaW9uIG9mIHJlc3BvbnNlIGNvcHku
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3BvbnNlID0gbV9pbXBs
ZW1lbnRhdGlvbi0+c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7CisgICAgICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRSZXNwb25zZSA9IG1faW1wbGVtZW50YXRp
b24tPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2UpOwogCiAgICAgICAgIC8vIDYuMi4gSWYgdGhl
IHByZWNlZGluZyBzdGVwIGZhaWxlZCwgb3IgaWYgc2FuaXRpemVkIHJlc3BvbnNlIGlzIGVtcHR5
LCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAg
IGlmICghc2FuaXRpemVkUmVzcG9uc2UgfHwgc2FuaXRpemVkUmVzcG9uc2UtPmlzRW1wdHkoKSkg
ewpAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgICAgICAvLyA0LjMuIExldCBtZXNzYWdlIHR5
cGUgYmUgbnVsbC4KIAogICAgICAgICAvLyA0LjQuIFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhl
IGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlbW92ZVNlc3Np
b25EYXRhKG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBlLCBbdGhpcywgd2Vha1RoaXMsIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0g
KENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5cywgc3RkOjpvcHRpb25h
bDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nl
c3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+
cmVtb3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFr
VGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlk
ZW50aWZpZXIpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBz
dGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBDRE1J
bnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTY0OSw3
ICs2NDksNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKFJlZjxEZWZlcnJlZFByb21p
c2U+JiYgcHJvbWlzZSkKICAgICAvLyA1LiBSZXR1cm4gcHJvbWlzZS4KIH0KIAotdm9pZCBNZWRp
YUtleVNlc3Npb246OmVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUgbWVzc2FnZVR5
cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgbWVzc2FnZSkKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjpl
bnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBtZXNzYWdlKQogewogICAgIC8vIDYuNC4xIFF1ZXVlIGEgIm1l
c3NhZ2UiIEV2ZW50CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRp
YS8jcXVldWUtbWVzc2FnZQpAQCAtNzE2LDcgKzcxNiw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9u
Ojp1cGRhdGVLZXlTdGF0dXNlcyhDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYm
IGluCiAgICAgICAgIH0pOwogfQogCi12b2lkIE1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2Uo
Q0RNTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkK
K3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSBtZXNzYWdl
VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBlbnF1
ZXVlTWVzc2FnZShtZXNzYWdlVHlwZSwgbWVzc2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAppbmRleCAz
ZDk2Zjg4MDJlNzQ3ODQxYzRlZmRhODFkY2I5NDFlYTZlNGE3NWU0Li4zNjVhY2U1YzA5NWU3ZGMw
YzU3MWU3NmNjZjJjMDdhYWZjNjJiYWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKQEAgLTU3LDcgKzU3LDcg
QEAgY2xhc3MgQ0RNOwogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgTWVkaWFLZXlTdGF0
dXNNYXA7CiBjbGFzcyBNZWRpYUtleXM7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBE
T01Qcm9taXNlUHJveHk7CiAKQEAgLTg3LDIwICs4NywyMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
Q2xvc2VkUHJvbWlzZSA9IERPTVByb21pc2VQcm94eTxJRExVbmRlZmluZWQ+OwogICAgIENsb3Nl
ZFByb21pc2UmIGNsb3NlZCgpIHsgcmV0dXJuIG1fY2xvc2VkUHJvbWlzZS5nZXQoKTsgfQogCi0g
ICAgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0
dXM+PiYgc3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1c2VzOyB9CisgICAgY29uc3Qg
VmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3Rh
dHVzPj4mIHN0YXR1c2VzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXNlczsgfQogCiAgICAgdW5z
aWduZWQgaW50ZXJuYWxJbnN0YW5jZVNlc3Npb25PYmplY3RSZWZDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1faW5zdGFuY2VTZXNzaW9uLT5yZWZDb3VudCgpOyB9CiAKIHByaXZhdGU6CiAgICAgTWVk
aWFLZXlTZXNzaW9uKERvY3VtZW50JiwgV2Vha1B0cjxNZWRpYUtleXM+JiYsIE1lZGlhS2V5U2Vz
c2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBSZWY8Q0RNPiYmLCBSZWY8
Q0RNSW5zdGFuY2VTZXNzaW9uPiYmKTsKLSAgICB2b2lkIGVucXVldWVNZXNzYWdlKE1lZGlhS2V5
TWVzc2FnZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgZW5xdWV1ZU1lc3Nh
Z2UoTWVkaWFLZXlNZXNzYWdlVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwog
ICAgIHZvaWQgdXBkYXRlRXhwaXJhdGlvbihkb3VibGUpOwogICAgIHZvaWQgc2Vzc2lvbkNsb3Nl
ZCgpOwogICAgIFN0cmluZyBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAKICAg
ICAvLyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQKICAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2Vz
KENETUluc3RhbmNlU2Vzc2lvbkNsaWVudDo6S2V5U3RhdHVzVmVjdG9yJiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
bWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CiAgICAgdm9pZCBzZXNz
aW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFBsYXRmb3JtRGlzcGxheUlE
IGRpc3BsYXlJRCgpIGZpbmFsOwogCkBAIC0xNDAsMTAgKzE0MCwxMCBAQCBwcml2YXRlOgogICAg
IE1lZGlhS2V5U2Vzc2lvblR5cGUgbV9zZXNzaW9uVHlwZTsKICAgICBSZWY8Q0RNPiBtX2ltcGxl
bWVudGF0aW9uOwogICAgIFJlZjxDRE1JbnN0YW5jZVNlc3Npb24+IG1faW5zdGFuY2VTZXNzaW9u
OwotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gbV9yZWNvcmRPZktleVVzYWdlOworICAg
IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1fcmVjb3JkT2ZLZXlVc2FnZTsK
ICAgICBkb3VibGUgbV9maXJzdERlY3J5cHRUaW1lIHsgMCB9OwogICAgIGRvdWJsZSBtX2xhdGVz
dERlY3J5cHRUaW1lIHsgMCB9OwotICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZl
cj4sIE1lZGlhS2V5U3RhdHVzPj4gbV9zdGF0dXNlczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiBtX3N0YXR1c2VzOwog
CiAgICAgdXNpbmcgRGlzcGxheUNoYW5nZWRPYnNlcnZlciA9IE9ic2VydmVyPHZvaWQoUGxhdGZv
cm1EaXNwbGF5SUQpPjsKICAgICBEaXNwbGF5Q2hhbmdlZE9ic2VydmVyIG1fZGlzcGxheUNoYW5n
ZWRPYnNlcnZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKaW5kZXggNzNmNzRlNGY3MGZjOTJjMjJi
Zjg1OWMwMjI4YTM0ZWFlYzU3OTdhMy4uMzk4ZThhYjFiNjU2YjQ0NTkyN2JlYjZiYzY5M2RkMzk5
YTY4N2FjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN0YXR1c01hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAKQEAgLTU2LDEyICs1NiwxMiBAQCB1bnNp
Z25lZCBsb25nIE1lZGlhS2V5U3RhdHVzTWFwOjpzaXplKCkKICAgICByZXR1cm4gbV9zZXNzaW9u
LT5zdGF0dXNlcygpLnNpemUoKTsKIH0KIAotc3RhdGljIGJvb2wga2V5SWRzTWF0Y2goY29uc3Qg
U2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIpCitzdGF0aWMgYm9vbCBrZXlJ
ZHNNYXRjaChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3Vy
Y2UmIGIpCiB7CiAgICAgYXV0byBsZW5ndGggPSBhLnNpemUoKTsKICAgICBpZiAoIWxlbmd0aCB8
fCBsZW5ndGggIT0gYi5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVy
biAhc3RkOjptZW1jbXAoYS5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgpOworICAgIHJldHVybiAh
c3RkOjptZW1jbXAoYS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGIuZGF0YSgpLCBsZW5ndGgp
OwogfQogCiBib29sIE1lZGlhS2V5U3RhdHVzTWFwOjpoYXMoY29uc3QgQnVmZmVyU291cmNlJiBr
ZXlJZCkKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFpcjxCdWZm
ZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4+IE1lZGlhS2V5UwogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5k
ZXgrK107Ci0gICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3Qt
PmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVm
ZmVyOjpjcmVhdGUocGFpci5maXJzdC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBwYWlyLmZp
cnN0LT5zaXplKCkpOwogICAgIHJldHVybiBLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJp
YW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+IHsgUmVmUHRyPEFycmF5QnVmZmVyPihXVEZNb3ZlKGJ1
ZmZlcikpLCBwYWlyLnNlY29uZCB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKaW5kZXggYzIxMTEx
M2EyYzZkYWM3OTc5MjRhOTlkMmQyZGY5N2MyZTY1Zjg1MC4uNjBkNjJhYWZmODA3NGRhZGE2ZTMx
YTNmMmIzNzBhNmQ2ZDAxZjYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaApAQCAtMzgsNyArMzgsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYUtleVNlc3Npb247Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNZWRp
YUtleVN0YXR1c01hcCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5U3RhdHVzTWFwPiB7CiBw
dWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5cy5jcHAKaW5kZXggODNiMjRhY2VhYTViMTI5NGJiNGVhNDM5ZmIyZDVjNGY2Y2NkNDc1
My4uMzY3ZjMxZDE4NmI1MTYzOWE5Yzc0MjEzZjBjZjhlNmYyZjhkMjZlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAt
MTc3LDcgKzE3Nyw3IEBAIGJvb2wgTWVkaWFLZXlzOjpoYXNPcGVuU2Vzc2lvbnMoKSBjb25zdAog
ICAgICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRp
b25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgaW5pdERhdGEpCit2b2lkIE1lZGlhS2V5czo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlv
bkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCiB7CiAgICAgZm9yIChhdXRvJiBjZG1DbGllbnQgOiBt
X2NkbUNsaWVudHMpCiAgICAgICAgIGNkbUNsaWVudC5jZG1DbGllbnRVbnJlcXVlc3RlZEluaXRp
YWxpemF0aW9uRGF0YVJlY2VpdmVkKGluaXREYXRhVHlwZSwgaW5pdERhdGEuY29weVJlZigpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5o
CmluZGV4IDdiNTlhM2JjNmQyMjU2ZmM2NTZmMDhjYmYyNjg5MTg1MTA5ODNhMjIuLjkxYTFhMDcx
MTQzM2JlMjQ3ZGQyYTg1YzVmNGFkMDkzOGEwOWE3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaApAQCAtODYsNyArODYsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgTWVkaWFLZXlzKERvY3VtZW50JiwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlk
ZW50aWZpZXIsIGJvb2wgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCwgY29uc3QgVmVjdG9yPE1lZGlh
S2V5U2Vzc2lvblR5cGU+JiwgUmVmPENETT4mJiwgUmVmPENETUluc3RhbmNlPiYmKTsKIAogICAg
IC8vIENETUluc3RhbmNlQ2xpZW50Ci0gICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9u
RGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwor
ICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJp
bmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgcmV0dXJu
IG1fbG9nZ2VyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAK
aW5kZXggMmZkYzRjMDAyMWY2ZTFmZGVjNDVmOGZhZjYwOTA2YzJiZjgyZTNiMS4uMDAzOTMwMmY3
ZGMxNmZmZWNmYzQ2NWM3ZDhkYTI1MmY5OGRhZjU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRmV0Y2hCb2R5
Ojpjb25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzCiB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKEZldGNoQm9keU93bmVy
JiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlmIChhdXRv
IHNoYXJlZEJ1ZmZlciA9IGZvcm1EYXRhQm9keSgpLmFzU2hhcmVkQnVmZmVyKCkpIHsKLSAgICAg
ICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3duZXIuY29u
dGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsK
KyAgICAgICAgbV9jb25zdW1lci5yZXNvbHZlV2l0aERhdGEoV1RGTW92ZShwcm9taXNlKSwgb3du
ZXIuY29udGVudFR5cGUoKSwgc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9
IGVsc2UgewogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGZvcm0gZGF0YSBjb250YWlucyBibG9i
cywgbG9hZCB0aGVtIGxpa2Ugd2UgZG8gb3RoZXIgYmxvYnMuCkBAIC0yNzIsNyArMjcyLDcgQEAg
UmVmUHRyPEZvcm1EYXRhPiBGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhKCkgY29uc3QKICAgICBp
ZiAoaXNGb3JtRGF0YSgpKQogICAgICAgICByZXR1cm4gJmNvbnN0X2Nhc3Q8Rm9ybURhdGEmPihm
b3JtRGF0YUJvZHkoKSk7CiAgICAgaWYgKGF1dG8qIGRhdGEgPSBtX2NvbnN1bWVyLmRhdGEoKSkK
LSAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOworICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI4NCw3ICsyODQsNyBAQCBGZXRjaEJvZHk6OlRha2Vu
RGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fY29uc3VtZXIu
dGFrZURhdGEoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBy
ZXR1cm4gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIH0KIAogICAgIGlmIChpc0Jsb2Io
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmNwcAppbmRleCBmY2MyMTZhMDFjZGY2OTg2NTA4NTg3Njc1ZjA5ZDhiNzlmZjYyYjNiLi4y
MjEzZDYyMzAzZWZlMmExZjcyOTgyNjBmNTg4NjBiNzc2ZmIyNjc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjQyLDcg
KzI0Miw3IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlLCBGZXRjaEJvZHlDb25zCiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OmNsZWFuKCkKIHsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgbV9idWZmZXIucmVz
ZXQoKTsKICAgICByZXNldENvbnN1bWVQcm9taXNlKCk7CiAgICAgaWYgKG1fc2luaykgewogICAg
ICAgICBtX3NpbmstPmNsZWFyQ2FsbGJhY2soKTsKQEAgLTI2NiwxNiArMjY2LDE4IEBAIHZvaWQg
RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNl
LCBjb25zdCBTdHJpbmcmIGNvCiB7CiAgICAgaWYgKHN0cmVhbSkgewogICAgICAgICBBU1NFUlQo
IW1fc2luayk7Ci0gICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJT
aW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSwgdHlwZSA9IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQp
IG11dGFibGUgeworICAgICAgICBtX3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVy
U2luazo6Y3JlYXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1
ZmZlckJ1aWxkZXIoKSwgdHlwZSA9IG1fdHlwZSwgY29udGVudFR5cGVdKGF1dG8mJiByZXN1bHQp
IG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAg
ICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
IChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAgIGRh
dGEtPmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdURk1vdmUocHJvbWlz
ZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAg
ICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7Cisg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEudGFr
ZSgpLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFu
ZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGJ1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBt
X3NpbmstPnBpcGVGcm9tKCpzdHJlYW0pOwogICAgICAgICByZXR1cm47CkBAIC0zMDYsNyArMzA4
LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
RmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6OkZvcm1EYXRhOiB7CiAgICAgICAgIGF1dG8gYnVmZmVy
ID0gdGFrZURhdGEoKTsKLSAgICAgICAgaWYgKGF1dG8gZm9ybURhdGEgPSBwYWNrYWdlRm9ybURh
dGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0
ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwKSkKKyAgICAgICAgaWYgKGF1dG8gZm9ybURh
dGEgPSBwYWNrYWdlRm9ybURhdGEoY29udGV4dCwgY29udGVudFR5cGUsIGJ1ZmZlciA/IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5z
aXplKCkgOiAwKSkKICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNlPERP
TUZvcm1EYXRhPj4oKmZvcm1EYXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHJvbWlz
ZS0+cmVqZWN0KFR5cGVFcnJvcik7CkBAIC0zMjQsMTYgKzMyNiwyMCBAQCB2b2lkIEZldGNoQm9k
eUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkKICAg
ICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXpl
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcikgewotICAgICAg
ICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIG1fYnVmZmVyLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9i
dWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0
YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewotICAgIHJldHVybiBXVEZN
b3ZlKG1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlci5yZXNldCgpOworICAgIG1fYnVmZmVyLmFwcGVu
ZChXVEZNb3ZlKGRhdGEpKTsKK30KKworUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZl
dGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSgpCit7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2UoKTsKIH0KIAogUmVm
UHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZl
cigpCkBAIC0zNDEsOSArMzQ3LDcgQEAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9k
eUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAg
ICAgcmV0dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CiAKLSAgICBhdXRv
IGFycmF5QnVmZmVyID0gbV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7Ci0gICAgbV9i
dWZmZXIgPSBudWxscHRyOwotICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKKyAgICByZXR1cm4gbV9i
dWZmZXIudGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogfQogCiBSZWY8QmxvYj4gRmV0
Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKQEAgLTM1MSw5ICszNTUsNyBAQCBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fYnVmZmVy
KQogICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90Pigp
LCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwogCi0gICAgYXV0
byBidWZmZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fYnVmZmVyLCBudWxscHRyKTsKLSAgICBhdXRvIGRh
dGEgPSBidWZmZXItPmV4dHJhY3REYXRhKCk7Ci0gICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250
ZXh0LCBXVEZNb3ZlKGRhdGEpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZyb21E
YXRhKGNvbnRleHQsIG1fYnVmZmVyLnRha2UoKS0+ZXh0cmFjdERhdGEoKSwgbV9jb250ZW50VHlw
ZSk7CiB9CiAKIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCkBAIC0zNjIs
OCArMzY0LDggQEAgU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKICAgICBp
ZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBhdXRvIHRleHQg
PSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPmRhdGEoKSwgbV9i
dWZmZXItPnNpemUoKSk7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIGF1dG8gYnVmZmVy
ID0gbV9idWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8gdGV4dCA9IFRl
eHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOwogICAgIHJldHVybiB0ZXh0OwogfQogCkBAIC0zODMsMTAgKzM4NSw4IEBAIHZvaWQg
RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc2V0Q29uc3VtZVByb21pc2UoKQogdm9pZCBGZXRjaEJvZHlD
b25zdW1lcjo6c2V0U291cmNlKFJlZjxGZXRjaEJvZHlTb3VyY2U+JiYgc291cmNlKQogewogICAg
IG1fc291cmNlID0gV1RGTW92ZShzb3VyY2UpOwotICAgIGlmIChtX2J1ZmZlcikgewotICAgICAg
ICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7Ci0g
ICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICB9CisgICAgaWYgKG1fYnVmZmVyKQorICAg
ICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShtX2J1ZmZlci50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVm
ZmVyKCkpOwogfQogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nRmFpbGVkKGNvbnN0
IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDJiMDU2ZjEyNjQzYmE5NjdmZTQxYTAxNTEzYTg5
YjczNjI2NDJkNGMuLjg3MWQyYzA4NjMzMWE5ODI5NGExNjZhNGI0MmUzMTg0ZTAzNzc3MmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgK
QEAgLTUwLDEwICs1MCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4g
ISFtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+
JiYgZGF0YSkgeyBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7IH0KKyAgICBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0
KCk7IH0KKyAgICB2b2lkIHNldERhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZl
cj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKICAgICBTdHJpbmcgdGFrZUFzVGV4dCgpOwogCkBAIC04
Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAKICAgICBUeXBlIG1fdHlwZTsKICAgICBTdHJpbmcgbV9j
b250ZW50VHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IG1f
Y29uc3VtZVByb21pc2U7CiAgICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJT
aW5rPiBtX3Npbms7CiAgICAgUmVmUHRyPEZldGNoQm9keVNvdXJjZT4gbV9zb3VyY2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4IGZjNTVjYzdk
ODNkOGJjMTFmMDg1NGRjM2NmZDg1MDk3YTMxZjEwZjYuLjAzZjg5YjYxY2E1ZjdjNzE3NmI5ZDg4
Y2QxMzY2MGU4NmI3YTI1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hMb2FkZXIuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBGZXRjaExvYWRlcjo6c3RvcCgp
CiAgICAgICAgIG1fbG9hZGVyLT5jYW5jZWwoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
RmV0Y2hMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBGZXRjaExvYWRlcjo6c3RhcnRTdHJlYW1pbmcoKQogewogICAgIEFTU0VSVChtX2NvbnN1
bWVyKTsKICAgICBhdXRvIGZpcnN0Q2h1bmsgPSBtX2NvbnN1bWVyLT50YWtlRGF0YSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCmluZGV4IDJmOTBmMGVjM2Zm
OTA1YTI2MjMxYzg0YzcyYTdhMTg2Y2Q0YmZlODMuLjQ2MTJkMGUwZTNhN2VmZTMwNjAzOTZiMGQ3
NWEyZmEzYmM0ZWRkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9h
ZGVyLmgKQEAgLTM5LDE0ICszOSwxNCBAQCBjbGFzcyBGZXRjaEJvZHlDb25zdW1lcjsKIGNsYXNz
IEZldGNoTG9hZGVyQ2xpZW50OwogY2xhc3MgRmV0Y2hSZXF1ZXN0OwogY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiAKIGNsYXNzIEZldGNoTG9hZGVyIGZpbmFsIDogcHVibGljIFRocmVhZGFibGVM
b2FkZXJDbGllbnQgewogcHVibGljOgogICAgIEZldGNoTG9hZGVyKEZldGNoTG9hZGVyQ2xpZW50
JiwgRmV0Y2hCb2R5Q29uc3VtZXIqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+RmV0Y2hMb2FkZXIo
KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CiAKICAgICB2b2lk
IHN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBGZXRjaFJlcXVlc3QmLCBjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIHN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25z
dCBCbG9iJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
UmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcAppbmRleCA0ZGY4NDI2YzcxOGJhMTZlY2YwYTQ3ZTczZTkwMGQzZjg0OGY2NGYyLi5lMzhh
ODNhZGU3ZDZlMGFhZjcwY2ViOWM1YWE4ZmU4YWI0OTQzZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQwMCw3ICs0MDAsOCBAQCB2
b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1l
RGF0YUJ5Q2h1bmtDYWxsYmFjayYmCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAK
LSAgICBTcGFuIGNodW5rIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBhdXRv
IGNvbnRpZ3VvdXNCdWZmZXIgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgIFNwYW4gY2h1
bmsgeyBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwogICAgIG1fY29u
c3VtZURhdGFDYWxsYmFjaygmY2h1bmspOwogfQogCkBAIC01MDMsNyArNTA0LDcgQEAgdm9pZCBG
ZXRjaFJlc3BvbnNlOjpmZWVkU3RyZWFtKCkKICAgICBjbG9zZVN0cmVhbSgpOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydFN0cmVhbWlu
ZygpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRmV0Y2hSZXNwb25zZTo6Qm9keUxv
YWRlcjo6c3RhcnRTdHJlYW1pbmcoKQogewogICAgIEFTU0VSVChtX2xvYWRlcik7CiAgICAgcmV0
dXJuIG1fbG9hZGVyLT5zdGFydFN0cmVhbWluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCAzNDIwYzZhMzhkM2MzZjZlMmZkYjY2NzVlOGE0
ZDEzNjViZjVhNWJiLi5jZjc4NjMyMzlmZDk0NmVlMGU4ZDg4ZWFlYTcyZmU5ODllZWQzMTRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtMTM0
LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCBjb25zdW1lRGF0YUJ5Q2h1bmso
Q29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2smJik7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CiAgICAgICAgIE5vdGlmaWNhdGlvbkNhbGxiYWNrIHRh
a2VOb3RpZmljYXRpb25DYWxsYmFjaygpIHsgcmV0dXJuIFdURk1vdmUobV9yZXNwb25zZUNhbGxi
YWNrKTsgfQogICAgICAgICBDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayB0YWtlQ29uc3VtZURh
dGFDYWxsYmFjaygpIHsgcmV0dXJuIFdURk1vdmUobV9jb25zdW1lRGF0YUNhbGxiYWNrKTsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCmlu
ZGV4IGRkMTljODcwYWE3ZDI0ODVmN2U5Y2E4NDkyYTg0MjEzNTJkZGQwNDEuLjFhNjZiZjgxODMy
MGU5NTYwN2Q2MTVmMWEwODJhODI3NmViMmEzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCkBAIC0zOCw3ICszOCw3IEBAIGVudW0gY2xh
c3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgOiBib29sIHsgTm8sIFllcyB9OwogZW51bSBj
bGFzcyBIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwIDogYm9vbCB7IE5vLCBZZXMgfTsK
IAogc3RydWN0IEFwcEhpZ2hsaWdodCB7Ci0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
aGlnaGxpZ2h0OworICAgIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBoaWdo
bGlnaHQ7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRleHQ7CiAgICAgQ3JlYXRlTmV3R3Jv
dXBGb3JIaWdobGlnaHQgaXNOZXdHcm91cDsKICAgICBIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRl
ZEluQXBwIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA7CkBAIC01Miw3ICs1Miw3IEBAIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+CiB2b2lkIEFwcEhpZ2hsaWdodDo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGhpZ2hsaWdo
dC0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShoaWdobGlnaHQt
PmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKGhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBoaWdobGlnaHQt
PnNpemUoKSwgMSk7CiAKICAgICBlbmNvZGVyIDw8IHRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3Bw
CmluZGV4IGUyZDlhNjFlNDI3Njc2ZWI3YjdkYWVhYmZmYTMyZDA0YTQ1NzZjMDYuLjVlODBmMGMw
NzJkNDlhM2VmNzk2OTU5MzAyYzQ0NTZjZDJhYmRlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApA
QCAtNDQsMTUgKzQ0LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3RleHByIHVpbnQ2
NF90IGhpZ2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUg
U2lnbmF0dXJlICAoQSlwcGxlKEFQKXBsaWNhdGlvbihIKWlnaGxpZ2h0cygyMDIxKQogCi1zdGQ6
Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpj
cmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hs
aWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8gZGVjb2RlciA9IGJ1ZmZlci5k
ZWNvZGVyKCk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1
b3VzKCk7CisgICAgYXV0byBkZWNvZGVyID0gY29udGlndW91c0J1ZmZlci0+ZGVjb2RlcigpOwog
ICAgIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkYXRhOwogICAgIGRlY29k
ZXIgPj4gZGF0YTsKICAgICByZXR1cm4gZGF0YTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhOjp0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjp0b1NoYXJlZEJ1ZmZlcigpIGNv
bnN0CiB7CiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBlbmNvZGVyOwogICAgIGVuY29k
ZXIgPDwgKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCmluZGV4IGNmNjM4MWFjZmIwYTUyMTFiNDM1MDhi
N2I1MTdkNmRiMmY2ZmM3NDMuLmI1ZGFmNjAyNTM5OGEzZjdlNmYxZDM3YWJlY2U4NDRkNGYxYzY1
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFJhbmdlRGF0YS5oCkBAIC0zMywxMiArMzMsMTIgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCi1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBBcHBIaWdobGlnaHRSYW5n
ZURhdGEgewogV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBjcmVhdGUo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpOwogICAgIHN0cnVjdCBOb2RlUGF0aENvbXBvbmVudCB7CiAgICAgICAgIFN0cmlu
ZyBpZGVudGlmaWVyOwogICAgICAgICBTdHJpbmcgbm9kZU5hbWU7CkBAIC0xMTEsNyArMTExLDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRlY29kZShEZWNvZGVyJik7CiAKLSAgICBSZWY8
U2hhcmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFN0
cmluZyBtX2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCmluZGV4IGRjMzlhMGYwZDE4ZmZmY2E3
ZGZiNDY1MjE5Y2Q2MTJhOWY3MzhmOGYuLmU1ZGU4NDk0ZjM1MDQ1MzU5NGIyZjJlODhjM2RkYTMz
ZmE5YWY3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBBcHBI
aWdobGlnaHRTdG9yYWdlOjpzdG9yZUFwcEhpZ2hsaWdodChSZWY8U3RhdGljUmFuZ2U+JiYgcmFu
Z2UpCiAgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5zdG9yZUFwcEhpZ2hsaWdodChX
VEZNb3ZlKGhpZ2hsaWdodCkpOwogfQogCi12b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3Rv
cmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgU2Ny
b2xsVG9IaWdobGlnaHQgc2Nyb2xsKQordm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3Jl
QW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBTY3JvbGxUb0hpZ2hsaWdodCBzY3JvbGwpCiB7CiAgICAgYXV0byBhcHBIaWdobGlnaHRS
YW5nZURhdGEgPSBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShidWZmZXIpOwogICAgIGlm
ICghYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCmluZGV4IGIxNTJmNzZlZDQyNDA4
OTJlYTdkZTIxZTJjYjA2ZDQ3MmQ4NzMzNjAuLmUyNzY2MzNiNDg0ZjgxMDk0YWRlY2U0NWY2NGFi
YmVkMTc4MTI1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKIAogY2xhc3MgRG9jdW1lbnQ7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3Mg
U3RhdGljUmFuZ2U7CiBjbGFzcyBIaWdobGlnaHQ7CiAKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGlj
OgogICAgIH5BcHBIaWdobGlnaHRTdG9yYWdlKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTdGF0aWNSYW5nZT4mJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiwgU2Nyb2xsVG9IaWdobGlnaHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdG9yZUFu
ZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTY3Jv
bGxUb0hpZ2hsaWdodCk7CiAgICAgdm9pZCByZXN0b3JlVW5yZXN0b3JlZEFwcEhpZ2hsaWdodHMo
KTsKICAgICBNb25vdG9uaWNUaW1lIGxhc3RSYW5nZVNlYXJjaFRpbWUoKSBjb25zdCB7IHJldHVy
biBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaDsgfQogICAgIHZvaWQgcmVzZXRMYXN0UmFuZ2VTZWFy
Y2hUaW1lKCkgeyBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaCA9IE1vbm90b25pY1RpbWU6Om5vdygp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDBhZmI3ZWU1Y2M4NzQz
NTZiMzVhMTY4MDMyMzFhNjEzNjRjMDk4NjEuLjI3Y2Q4ZWVjNTNlMWFjZmM1OTg1ZWM3YjhmMDVl
MjI3NjQ1Yzg3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC02ODYs
NyArNjg2LDcgQEAgYm9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSW5kZXgo
SURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9yZUluZm8KICAgICBTUUxpdGVUcmFuc2FjdGlv
biB0cmFuc2FjdGlvbigqbV9zcWxpdGVEQik7CiAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0
aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktl
eVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRh
YmFzZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTc0LDcgKzExNzQsNyBAQCBJREJF
cnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdAogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1j
aGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAg
IGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsK
ICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qgc3Rv
cmUiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UgZm9yIG5ldyBvYmplY3Qg
c3RvcmUiX3MgfTsKQEAgLTEzODcsNyArMTM4Nyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3Jl
YXRlIGFuIGluZGV4IGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CiAg
ICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJ
REJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFs
aXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewog
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZl
IGluIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBjcmVhdGUgaW5kZXggaW4gZGF0YWJh
c2UiX3MgfTsKQEAgLTE0NjQsNyArMTQ2NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQoY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvCiB7
CiAgICAgaGFzUmVjb3JkID0gZmFsc2U7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRl
eEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5k
ZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWlu
ZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBp
bmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBj
aGVjayBmb3IgaW5kZXggcmVjb3JkIGluIGRhdGFiYXNlIl9zIH07CkBAIC0xNTMzLDEzICsxNTMz
LDEzIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhS
ZWNvcmQoaW50NjRfdCBvYmplY3RTdG9yZUlELCBpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0SW5kZXhSZWNvcmQgLSAlcywgJXMiLCBr
ZXlWYWx1ZS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgaW5kZXhLZXkubG9nZ2luZ1N0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhL
ZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4
S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRl
eEtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5k
ZXgga2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8g
YmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7Cisg
ICAgYXV0byB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOwogICAg
IGlmICghdmFsdWVCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFs
aXplIHRoZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdmFsdWUg
dG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSJfcyB9OwpAQCAtMTY2MSw3ICsxNjYxLDcgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmkKICAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2Fj
dGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJBdHRlbXB0IHRvIHNlZSBpZiBrZXkgZXhpc3RzIGluIG9iamVjdHN0b3JlIHdpdGhvdXQg
YW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBr
ZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVm
ZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8g
Y2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiBvYmplY3Qgc3RvcmUiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hl
Y2sgZm9yIGV4aXN0ZW5jZSBpbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTE3NDEsNyArMTc0MSw3
IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKFNRTGl0ZUlE
QlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwKICAgICBBU1NFUlQodHJhbnNhY3Rpb24ubW9kZSgp
ICE9IElEQlRyYW5zYWN0aW9uTW9kZTo6UmVhZG9ubHkpOwogICAgIFVOVVNFRF9QQVJBTSh0cmFu
c2FjdGlvbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhl
IGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVu
YWJsZSB0byBzZXJpYWxpemUgSURCS2V5RGF0YSB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRhdGFi
YXNlIl9zIH07CkBAIC0xOTYyLDcgKzE5NjIsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmFkZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHN0b3Jl
IGEgcmVjb3JkIGluIGFuIG9iamVjdCBzdG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJf
cyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVj
dCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIl9z
IH07CkBAIC0yMTI0LDcgKzIxMjQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGF1
dG8ga2V5ID0ga2V5UmFuZ2UubG93ZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAg
ICAga2V5ID0gSURCS2V5RGF0YTo6bWluaW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gbG93ZXJC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGlu
IGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3Is
ICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsK
QEAgLTIxMzMsNyArMjEzMyw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0
UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAga2V5ID0g
a2V5UmFuZ2UudXBwZXJLZXk7CiAgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAga2V5ID0g
SURCS2V5RGF0YTo6bWF4aW11bSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gdXBwZXJCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCBy
YW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUg
dG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiX3MgfTsKQEAgLTI0NDMs
NyArMjQ0Myw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0
SW5kZXhSZWNvcmRGb3JPbmVLZXkoaW50NjRfdCBpbmRleElECiAKICAgICBBU1NFUlQoa2V5Lmlz
VmFsaWQoKSAmJiBrZXkudHlwZSgpICE9IEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4ICYmIGtleS50
eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNaW4pOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5k
ZXggcmVjb3JkIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVu
YWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29yZCJfcyB9
OwpAQCAtMjUwOCwxNCArMjUwOCwxNCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmdldENvdW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpbwogICAgIG91
dENvdW50ID0gMDsKIAogICAgIGF1dG8gbG93ZXJLZXkgPSByYW5nZS5sb3dlcktleS5pc051bGwo
KSA/IElEQktleURhdGE6Om1pbmltdW0oKSA6IHJhbmdlLmxvd2VyS2V5OwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7
CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOwog
ICAgIGlmICghbG93ZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2Vy
aWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkg
aW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKICAgICB9CiAKICAgICBh
dXRvIHVwcGVyS2V5ID0gcmFuZ2UudXBwZXJLZXkuaXNOdWxsKCkgPyBJREJLZXlEYXRhOjptYXhp
bXVtKCkgOiByYW5nZS51cHBlcktleTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOworICAgIGF1dG8gdXBwZXJCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVy
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkg
aW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJv
ciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSBmb3Ig
Y291bnQgb3BlcmF0aW9uIl9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCmluZGV4IDhiZmUyMjdk
YjYxOTYyM2JkOGRmMDZhMTA4NThjZjAzMjFjNDMyMDYuLjQ4NjEwMzRkM2ExMmRhMGMwOWNmZWRm
ZTlmMmVhNjVhNjgxMDAzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwCkBAIC0yNjksNyArMjY5
LDcgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OmJpbmRBcmd1bWVudHMoKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CisgICAgYXV0byBidWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKICAgICBpZiAobV9zdGF0ZW1l
bnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09L
KSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50
IChsb3dlciBrZXkpIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMxNSw3ICszMTUsNyBA
QCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElm
TmVjZXNzYXJ5KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRv
IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAobV9wcmVJbmRleFN0
YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJ
VEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgYmluZCBpZCBhcmd1bWVudCB0
byBwcmUgc3RhdGVtZW50IChrZXkpIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNw
cAppbmRleCAwYTQ2OWJkMGJkMWYzOGRjYjk2YjM5ZDhjMzAwMGFmNzNkMTJhYjU5Li5jOWQ2ZGE2
YmRkOWY5Mzk1MDFmNGY0MjMyYjRjNzgzN2Q4NDBkYWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCkBAIC0xOTYs
NyArMTk2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFSZWNvcmRlcjo6c3RhcnRSZWNvcmRp
bmcoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdGltZVNsaWMKICAgICByZXR1cm4geyB9OwogfQog
Ci1zdGF0aWMgaW5saW5lIFJlZjxCbG9iRXZlbnQ+IGNyZWF0ZURhdGFBdmFpbGFibGVFdmVudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlIHRpbWVDb2RlKQorc3RhdGljIGlu
bGluZSBSZWY8QmxvYkV2ZW50PiBjcmVhdGVEYXRhQXZhaWxhYmxlRXZlbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUgdGltZUNvZGUpCiB7CiAgICAgYXV0
byBibG9iID0gYnVmZmVyID8gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIGJ1ZmZlci0+ZXh0cmFjdERh
dGEoKSwgbWltZVR5cGUpIDogQmxvYjo6Y3JlYXRlKGNvbnRleHQpOwogICAgIHJldHVybiBCbG9i
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGF0YWF2YWlsYWJsZUV2ZW50LCBCbG9iRXZlbnQ6
OkluaXQgeyB7IGZhbHNlLCBmYWxzZSwgZmFsc2UgfSwgV1RGTW92ZShibG9iKSwgdGltZUNvZGUg
fSwgQmxvYkV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaAppbmRleCA3NzEyYjQ0NTI4MzY3
ZDhjMjcyNTAyYWRiYWFjYWFmOTc4OGNiZGIwLi4xZTliNzRhYjE3ZTMxMDhkYjQyMDliOWI0ZjAy
MTRkYTExYWM2ZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlzcGF0Y2hFcnJvcihFeGNlcHRpb24mJik7CiAKICAgICBlbnVtIGNsYXNzIFRha2VQ
cml2YXRlUmVjb3JkZXIgeyBObywgWWVzIH07Ci0gICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sg
PSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGRvdWJsZSk+OworICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248
dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgZG91YmxlKT47CiAgICAgdm9pZCBmZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJiwg
VGFrZVByaXZhdGVSZWNvcmRlcik7CiAKICAgICAvLyBNZWRpYVN0cmVhbTo6T2JzZXJ2ZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0
YS5jcHAKaW5kZXggM2Y0YzliY2QxMzNhYzI5ZjNmN2RkZTE5OTQ3OGUzOTI1N2Q1ZTY2Yi4uODc0
YWE3ZjBiMThmMGVlNzU4ODBiYTVmNWVmNjdkNDdiZmMyYjJiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKQEAgLTc3
LDcgKzc3LDcgQEAgdm9pZCBBcnR3b3JrSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0wKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICAvLyBTYW5pdGl6ZSB0aGUgaW1hZ2UgYnkgZGVjb2RpbmcgaXQgaW50byBhIEJpdG1h
cEltYWdlLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRpemUgPSBtX2Nh
Y2hlZEltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGJ1ZmZlclRvU2FuaXRpemUgPSBtX2NhY2hlZEltYWdlLT5pbWFnZSgpLT5kYXRhKCk7
CiAgICAgYXV0byBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICBiaXRt
YXBJbWFnZS0+c2V0RGF0YShXVEZNb3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKICAgICBh
dXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAppbmRleCAyYjNjZGUzNjA4MjQ3MWMx
MWM4N2ZjZjYxY2M4MWNjMzYwYzM5ZDkwLi5kMzc4YWZjNmY4YTFiNTdhMDMwMmUyYzg2OGIyNDBh
MjA5N2ZlNGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L1NvdXJjZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuY3BwCkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6
OmFwcGVuZEJ1ZmZlclRpbWVyRmlyZWQoKQogICAgIC8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcv
aHRtbC1tZWRpYS9yYXctZmlsZS90aXAvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS5odG1sI3Nv
dXJjZWJ1ZmZlci1zZWdtZW50LXBhcnNlci1sb29wCiAgICAgLy8gV2hlbiB0aGUgc2VnbWVudCBw
YXJzZXIgbG9vcCBhbGdvcml0aG0gaXMgaW52b2tlZCwgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcHBlbmREYXRhID0gV1RGTW92ZShtX3BlbmRp
bmdBcHBlbmREYXRhKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYXBwZW5k
RGF0YSA9IFdURk1vdmUobV9wZW5kaW5nQXBwZW5kRGF0YSk7CiAgICAgLy8gMS4gTG9vcCBUb3A6
IElmIHRoZSBpbnB1dCBidWZmZXIgaXMgZW1wdHksIHRoZW4ganVtcCB0byB0aGUgbmVlZCBtb3Jl
IGRhdGEgc3RlcCBiZWxvdy4KICAgICBpZiAoIWFwcGVuZERhdGEgfHwgIWFwcGVuZERhdGEtPnNp
emUoKSkgewogICAgICAgICBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoQXBwZW5k
UmVzdWx0OjpBcHBlbmRTdWNjZWVkZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKaW5kZXggNTIwYzA3NzU2OTZhMmYwZTJlNzMwMDcz
NWU4Yzk3NzQ5NWYxYTYxNC4uZDRjODU3OWMwYmJkNDQzYTUxMmZhOWY2OGM0MjdlYzA0ODg1ZDBk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VC
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5oCkBAIC0yMjIsNyArMjIyLDcgQEAgcHJpdmF0ZToKIAogICAgIFdURjo6T2JzZXJ2ZXI8
dm9pZCooKT4gbV9vcGFxdWVSb290UHJvdmlkZXI7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX3BlbmRpbmdBcHBlbmREYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBtX3BlbmRpbmdBcHBlbmREYXRhOwogICAgIFRpbWVyIG1fYXBwZW5kQnVmZmVyVGltZXI7CiAK
ICAgICBSZWZQdHI8VmlkZW9UcmFja0xpc3Q+IG1fdmlkZW9UcmFja3M7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlci5jcHAKaW5kZXggZmViMWI4ZmZmYjdiOTRjOWU3ZWIwYmU0OGFkMzVk
ZDcwNzljNzBiYi4uY2M1YTg2NTczMDU2NTdkMGE5NzA1NjYxZTRiYjQ5Y2UwYjg0MDVjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lk
IFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQoKQogICAgIG1faXNSZWFk
eVRvU2VuZCA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX3BlbmRpbmdNZXNz
YWdlcykKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIs
IG1lc3NhZ2UuaXNSYXcsIG1lc3NhZ2UuYnVmZmVyLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5z
aXplKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmll
ciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CiAgICAgbV9wZW5kaW5nTWVzc2FnZXMuY2xlYXIo
KTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Nsb3NlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyLmgKaW5kZXggZjU4MjdkZjkzNzk0OTNkMjgxMjcwMTc3Y2NmYmNhMDU1MTUzMjMxZi4uNzM5
NDJhODM1OTMxYTlkMjg0YzZhNDUxYmI4ZGJmYjU3NjVjYWRhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudDsKIGNsYXNzIFJUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlckNvbm5lY3Rpb247CiBjbGFzcyBSVENFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlciBmaW5hbCA6IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI+IHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0
cnVjdCBNZXNzYWdlIHsKICAgICAgICAgYm9vbCBpc1JhdyB7IGZhbHNlIH07Ci0gICAgICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICB9OwogICAgIFZlY3RvcjxNZXNzYWdlPiBtX3BlbmRpbmdNZXNzYWdl
czsKICAgICBib29sIG1faXNQZW5kaW5nQ2xvc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggM2UxMTA1NDAwMzUz
ZGU1NjBmMjQ5MzhhOWIyMDhlZjM2ZjY4MDNjNC4uM2NlZWQwYTAxMWU3YjU0NmZhZGRmNDhiYmRh
MjExZGZkZDUyNGM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXIuY3BwCkBAIC05Nyw4ICs5Nyw4IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyOjpzZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQs
CiAgICAgbV9jb250ZXh0SWRlbnRpZmllciA9IGNvbnRleHRJZGVudGlmaWVyOwogCiAgICAgZm9y
IChhdXRvJiBtZXNzYWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7Ci0gICAgICAgIHN3aXRjaE9u
KG1lc3NhZ2UsIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgY2xp
ZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAg
ICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgZGF0
YSkgeworICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwgWyZdKFN0cmluZyYg
dGV4dCkgewogICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdEYXRhKHRleHQpOwog
ICAgICAgICB9LCBbJl0oU3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKaW5kZXggNDFmOTUyODIxZTYyMDA5
M2Y4ZWVmZTMyYzVlZDRhZTBmNWU1NDE5Ny4uMTFiZDQ1ZGU5MTU1Nzc5ZmZjOWVmYjAzZTk1NTI4
ZjA1ZTY0ZDc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgUlRDRGF0YUNoYW5u
ZWxTdGF0ZSBzdGF0ZTsKICAgICAgICAgc3RkOjpvcHRpb25hbDx3ZWJydGM6OlJUQ0Vycm9yPiBl
cnJvcjsKICAgICB9OwotICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnZhcmlhbnQ8U3RhdGVDaGFu
Z2UsIFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6
OnZhcmlhbnQ8U3RhdGVDaGFuZ2UsIFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PjsKICAgICB1c2luZyBQZW5kaW5nTWVzc2FnZXMgPSBWZWN0b3I8TWVzc2FnZT47CiAgICAgdm9p
ZCBzdG9yZU1lc3NhZ2UoUGVuZGluZ01lc3NhZ2VzJiwgY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVy
Jik7CiAgICAgdm9pZCBwcm9jZXNzTWVzc2FnZShjb25zdCB3ZWJydGM6OkRhdGFCdWZmZXImKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmNwcAppbmRleCAzMDljMDI2NDNmNWE3YWU5ZmVjMDhhMTRlYjIxMjI0MDli
MWY4OWUwLi42M2YxYzNjYmUxZWE4MWNmYmY0NTQ2NDYzMjBjZGY3ZmFjZjU5YzJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpz
ZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBtX3NvdXJjZVVSTCA9IHVybDsKIAot
ICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgbV9kYXRhLnJlc2V0KCk7CiAgICAgbV9kYXRhQ29t
cGxldGUgPSBmYWxzZTsKIAogICAgIGlmIChtX3Jlc291cmNlKSB7CkBAIC0xNDksNyArMTQ5LDcg
QEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOworICAgIG1fZGF0YS5lbXB0eSgpOwogCiAgICAgbV9yZXNvdXJjZSA9IHJlc291cmNlLnZh
bHVlKCk7CiAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KCp0aGlzKTsKQEAgLTE4MCw4ICsxODAs
NyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgcwogdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2Ug
PT0gbV9yZXNvdXJjZSk7Ci0gICAgQVNTRVJUKG1fZGF0YSk7Ci0gICAgbV9kYXRhLT5hcHBlbmQo
ZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsK
IH0KIAogdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCkBAIC0xOTUsNyArMTk0LDcg
QEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9OwogCiAgICAgaWYgKHJlc291cmNlLmxv
YWRGYWlsZWRPckNhbmNlbGVkKCkpIHsKLSAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAg
ICAgbV9kYXRhLnJlc2V0KCk7CiAKICAgICAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5k
VXBkYXRlUmVuZGVyZXIoKTsKIApAQCAtMjA0LDcgKzIwMyw3IEBAIHZvaWQgSFRNTE1vZGVsRWxl
bWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3
b3JrTG9hCiAgICAgfQogCiAgICAgbV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwg
PSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS5yZWxlYXNlTm9uTnVsbCgpLmdldCgpLCByZXNvdXJjZS5t
aW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUo
bV9kYXRhLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUo
KSwgcmVzb3VyY2UudXJsKCkpOwogCiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBk
YXRlUmVuZGVyZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggMDVhMWNkYWEzZTE0ODc3YTBhZTQ2
NWI2MzQ5YWE1YmJiMWFmMmM4Mi4uY2UwMDlkNGU1ZWRjMzA5NzQ1ZTAyN2IwNjMyYmQxZTZlODU4
MDNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogICAg
IFVSTCBtX3NvdXJjZVVSTDsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNv
dXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiAgICAgUmVmUHRyPE1vZGVsPiBtX21vZGVsOwog
ICAgIFVuaXF1ZVJlZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wgbV9k
YXRhQ29tcGxldGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExv
YWRlclVTRC5tbQppbmRleCAzZTgyYWMyMjE2Nzk2YzllZGI3NjBhMTllZDdhY2UxZjQyY2QzNzc3
Li4xMzAzZWM0ZDI1NjhhNjZmODdkN2ZlYjIwYmYyYjAzMzkyMzJjM2M1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2Rl
bExvYWRlclVTRC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
c2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0
YXRpYyBSZXRhaW5QdHI8TlNVUkw+IHdyaXRlVG9UZW1wb3JhcnlGaWxlKFdlYkNvcmU6Ok1vZGVs
JiBtb2RlbFNvdXJjZSkKICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBv
cmFyeUZpbGUoIk1vZGVsRmlsZSIsIGZpbGVIYW5kbGUsICIudXNkeiIpOwogICAgIEFTU0VSVChG
aWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKTsKIAotICAgIHNpemVfdCBieXRl
Q291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5k
YXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIHNpemVfdCBi
eXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJj
ZS5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5z
aXplKCkpOwogICAgIEFTU0VSVF9VTlVTRUQoYnl0ZUNvdW50LCBieXRlQ291bnQgPT0gbW9kZWxT
b3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFu
ZGxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtU2luay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtU2luay5oCmluZGV4IDBiODk4ZjZhZGI1N2ViMjVkYzQ5MzdkODFmZjVkMTRkNTI5NzZj
ODQuLmQ1MTczZmJmOGI0MDM0MWM1Y2Y4ZDhhNGY1NWVlYWM4ZmY4MzhhMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKQEAg
LTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCdWZmZXJTb3VyY2U7
CiBjbGFzcyBSZWFkYWJsZVN0cmVhbTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJlYWRhYmxlU3RyZWFtU2luayA6IHB1YmxpYyBS
ZWZDb3VudGVkPFJlYWRhYmxlU3RyZWFtU2luaz4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKaW5k
ZXggYzQ1MmM4M2ZiZDVjZTg5NWJkZDAzMWFjZjE0NjhmNzg2NTA2MjJkNy4uYjhiNzc4NWY5MWQw
NjhjMmE0NmNlYjFkNjU5NzU4ZmNmOGI2OWQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01MSwxMyAr
NTEsMTUgQEAgcHVibGljOgogICAgICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICAgICAgaWYgKCFtX2NvbnRp
Z3VvdXNCdWZmZXIgJiYgKCFtX2NvbnRhaW5zT25seUFTQ0lJIHx8ICptX2NvbnRhaW5zT25seUFT
Q0lJKSkKKyAgICAgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG1fc2NyaXB0QnVmZmVyLmJ1
ZmZlcigpLT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBpZiAoIW1fY29udGFpbnNPbmx5QVND
SUkpIHsKLSAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxs
QVNDSUkobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVm
ZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFj
dGVyc0FyZUFsbEFTQ0lJKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZl
ci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJ
SSkKLSAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVI
YXNoQW5kTWFza1RvcDhCaXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2Ny
aXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFz
aCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9jb250aWd1b3Vz
QnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAg
ICB9CiAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgIHJldHVy
biB7IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAgICAgcmV0dXJu
IHsgbV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3Nj
cmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICghbV9jYWNoZWRT
Y3JpcHRTdHJpbmcpIHsKICAgICAgICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5nID0gbV9zY3Jp
cHRCdWZmZXIudG9TdHJpbmcoKTsKQEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIG1fc2NyaXB0QnVmZmVyID0gc2NyaXB0QnVmZmVyOworICAg
ICAgICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBudWxscHRyOwogICAgIH0KIAogcHJpdmF0ZToKQEAg
LTkxLDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZmZXIgbV9zY3Jp
cHRCdWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRpZ3VvdXNC
dWZmZXI7CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07CiAgICAgbXV0
YWJsZSBTdHJpbmcgbV9jYWNoZWRTY3JpcHRTdHJpbmc7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlv
bmFsPGJvb2w+IG1fY29udGFpbnNPbmx5QVNDSUk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDdlNDlhOWU3MzIyNmI2NWNj
MjhiZjU5NDgxM2IwZjgzYjI2OWQyMmIuLmVmMzdmMWQwY2E0NjJiYjliN2M5YjZhNTVkMThlYmI0
YzExODFhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIERldGFjaGVkT2Zmc2NyZWVu
Q2FudmFzOwogY2xhc3MgSURCVmFsdWU7CiBjbGFzcyBNZXNzYWdlUG9ydDsKIGNsYXNzIEltYWdl
Qml0bWFwQmFja2luZzsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiBlbnVtIGNsYXNzIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOwogCiBlbnVtIGNs
YXNzIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgeyBOb25UaHJvd2luZywgVGhyb3dpbmcgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKaW5kZXggODI2MTMzMzIyYThlZTVmMzc4
MmZiYjIzMTIzYjJkZDNhNTdhMTcyOC4uMTA4ZTZjODc2N2QwZDJmZGFjYmU2NTA0ZWJjNTA3MGU4
ODJiZTY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTM0LDYg
KzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NGb250RmFjZTsKIGNsYXNz
IENTU0ZvbnRTZWxlY3RvcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50Owog
Y2xhc3MgRm9udDsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CkBAIC00Miw3ICs0Myw2IEBA
IGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2Fw
YWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiBjbGFzcyBTVkdGb250RmFj
ZUVsZW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBj
bGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+
IEZvbnRGZWF0dXJlU2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0
YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4
IDFkZWFjNGY0MWNmNDlmMWY4ODJkY2NlZmQ0OGNmNmE5NzMyZjNlZDkuLmM0MmVjMDUxZmUxMWVi
YTE0ZjgxMzM1OWQ4ZDE3YTJjMjgxNjY0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIu
Y3BwCkBAIC00MDIsNyArNDAyLDcgQEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlVHlwZVJlYWRlciBm
aW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICAgICAgdHlwZXMuYWRkKEZpbGU6OmNv
bnRlbnRUeXBlRm9yRmlsZShmaWxlbmFtZSkpOwogICAgIH0KIAotICAgIHZvaWQgcmVhZEJ1ZmZl
cihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYp
CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCiAgICAgewogICAgICAgICB0eXBlcy5hZGQo
dHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDE3MjRjZjBlNTBi
YWE1YjliMjQxMzA0ODFlZTcyNGNiNzgyMDdhYTQuLmM1ZTllMjZiMzcyYWU2ODNmMTg2OGU5MjBj
NDVlZDcwZWRmNTU0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxMzMsNyAr
NDEzMyw3IEBAIFByb21pc2VkQXR0YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1l
bnRJbmZvKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuIHsgYXR0YWNobWVudC0+dW5pcXVl
SWRlbnRpZmllcigpLCBXVEZNb3ZlKGFkZGl0aW9uYWxUeXBlcyksIFdURk1vdmUoYWRkaXRpb25h
bERhdGEpIH07CiB9CiAKLXZvaWQgRWRpdG9yOjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29u
c3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQor
dm9pZCBFZGl0b3I6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZl
cnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAg
IGlmIChhdXRvKiBjbGllbnQgPSB0aGlzLT5jbGllbnQoKSkKICAgICAgICAgY2xpZW50LT5yZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGlkZW50aWZpZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJy
ZWRGaWxlTmFtZSwgV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAw
MWZlMGI1ZTA0NGVmNjNmMjZhNzFiNDcyZWY5OGIxMWMyMjhiOTFjLi4xZDA3MTZjNWI5M2M4YmI3
YWQ3M2Y0MTc0Y2E4MDQ1OTA1ZjkxOTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU3
LDkgKzU3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlcjsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKLWNsYXNzIERhdGFUcmFuc2ZlcjsK
IGNsYXNzIENvbXBvc2l0ZUVkaXRDb21tYW5kOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3Mg
Q3VzdG9tVW5kb1N0ZXA7CitjbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBEZWxldGVCdXR0b25D
b250cm9sbGVyOwogY2xhc3MgRWRpdENvbW1hbmQ7CiBjbGFzcyBFZGl0Q29tbWFuZENvbXBvc2l0
aW9uOwpAQCAtNzQsNyArNzUsNyBAQCBjbGFzcyBLaWxsUmluZzsKIGNsYXNzIFBhc3RlYm9hcmQ7
CiBjbGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0YTsKIGNsYXNzIFJlbmRlckxheWVyOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7
CiBjbGFzcyBTcGVsbENoZWNrUmVxdWVzdDsKIGNsYXNzIFNwZWxsQ2hlY2tlcjsKQEAgLTU2Myw3
ICs1NjQsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGZpbGVEYXRhKTsKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJy
ZWRGaWxlTmFtZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZmlsZURhdGEpOwogICAg
IHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
PiYmKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CiAg
ICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaAppbmRleCAwOGFhMTI0MjY2MjBm
NzY5NTNhNzliMzRlZGU1ZjZkZjA1MjdiMDE1Li45NTdiNGZkNGE1NTdmYzgxY2QzMDY5ZWVhY2I4
OTQ4OGE5NDdiN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRl
bnRSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIu
aApAQCAtNzIsMTYgKzcyLDE2IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWFkRmlsZVBhdGgoY29u
c3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0g
eyB9LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0geyB9KSBvdmVycmlkZTsKICAgICBib29s
IHJlYWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKICAgICBib29s
IHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZEltYWdlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBw
cmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRJ
bWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQ
cmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRl
OwogICAgIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVy
cmlkZTsKICAgICBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKLSAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplID0geyB9KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEZEKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50
YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOwogI2Vu
ZGlmCiB9OwogCkBAIC05OSwxNiArOTksMTYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlYWRGaWxl
UGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBTdHJpbmcm
ID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZEZpbGVQYXRo
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
Ym9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRJbWFn
ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0g
eyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZEltYWdlKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXpl
ID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZFVSTChjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJv
b2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIHJlYWRXZWJBcmNoaXZl
KFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVy
Jikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwot
ICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICBib29sIHJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKKyAgICBib29sIHJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVy
cmlkZTsKKyAgICBib29sIHJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OworICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCA1NDllYjdk
MmU0YzA3NTQ4ZTRhOGM5ZWEyNGVjMjBlNGYyMWJmYTI1Li4xMTdkYmE2OGVkYjBiZDRiNmMzMGUw
OTQ4NWQ5ZDBjMGYyOWMzODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHZvaWQg
V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSkKICAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGZp
bGVuYW1lKSk7CiB9CiAKLXZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBmaWxlcy5hcHBlbmQoRmls
ZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIEJsb2I6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBidWZm
ZXItPmV4dHJhY3REYXRhKCksIHR5cGUpLCBmaWxlbmFtZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKaW5kZXggNWM1
MjlkZDdjOGVjYzAwMDQ4ZmNiNGQxNTgxNDYzNWIyNGQ5MGJiNy4uOWQ4MTYwNWYxOTkyOThmMTlj
MGVkNjk5NWZlM2JkNzc4MzAzNGZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVj
dCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRl
ciB7CiAgICAgfldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcigpOwogCiAgICAgdm9pZCByZWFk
RmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNv
bnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwog
CiAgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IGNvbnRleHQ7CiAgICAgVmVjdG9y
PFJlZjxGaWxlPj4gZmlsZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW0KaW5kZXggZDQ4ZTExYzk2Yjc4MDhmODgzNTRiM2IwNzQ3ZWViMWYxZTM3ZTNm
My4uMDc4MjQ4MzYyYWEwNTRkYzNhYjAwMDA0NTE3MTg0MTk4YTU4MGY3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3ICsxMjcz
LDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVu
dCYgZWxlbWVudCwgTlNVUkwgKnVybCwgQk9PTAogICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9
IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKHVybCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1pbWVU
eXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBsYWNlaG9s
ZGVyIHx8IG1pbWVUeXBlICE9ICJ0ZXh0L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAgZmlsZVdy
YXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0
aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAg
ICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgICAgIFtmaWxlV3JhcHBl
ciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZSh1cmws
IG1pbWVUeXBlKV07CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBub3RGb3Vu
ZCA9IFlFUzsKQEAgLTIzMDAsNyArMjMwMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3Jh
cHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiAK
ICAgICBpZiAoZGF0YVNvdXJjZSkgewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAgICAgICAg
ICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCld
KTsKKyAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFs
bG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcg
KmZpbGVuYW1lID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAg
ICAgICAgICAgIGlmICghZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAgICAgICAg
ICAgICAgIGZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVzb3VyY2Ut
PnVybCgpLCByZXNvdXJjZS0+bWltZVR5cGUoKSk7CkBAIC0yMzIyLDggKzIzMjIsOCBAQCBzdGF0
aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJMKERvY3VtZW50TG9h
ZGVyKiBkYXRhU291cmNlLCBOUwogc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxl
V3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAo
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7Ci0gICAg
ICAgIGlmIChTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJj
ZUJ1ZmZlcigpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFs
bG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV0pOworICAgICAgICBpZiAoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVk
QnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgICAgICByZXR1
cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250
ZW50czpzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CiAgICAgfQogCiAgICAgYXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tCmluZGV4IDZhYTNjZDU0ZTgyYjk5YjMxOTQyN2JlZTM0YzhjNDRiNjc5ZTIyNzkuLjc2
YjFhMDA5ZGU0MzBmYTNiNTRkOWExNWU2NzhjZDgzZjMxNDVmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0y
NDUsNyArMjQ1LDcgQEAgc3RhdGljIGJvb2wgc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERh
dGEoY29uc3QgRnJhbWUmIGZyYW1lKQogCiAjZW5kaWYKIAotc3RhdGljIFJlZjxEb2N1bWVudEZy
YWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJhbWUsIERv
Y3VtZW50JiBkb2N1bWVudCwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkU2l6ZSkKK3N0YXRpYyBS
ZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQoRnJh
bWUmIGZyYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBw
cmVmZXJyZWRTaXplKQogewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgYXV0
byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjph
dHRhY2htZW50VGFnLCBkb2N1bWVudCk7CkBAIC0zMDksNyArMzA5LDcgQEAgc3RhdGljIHZvaWQg
cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRG
cmFnbWVudCYgZnIKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8mIHJlc291
cmNlID0gcmVzb3VyY2VFbnRyeS0+dmFsdWU7Ci0gICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50
RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1p
bWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkgfSk7CisgICAgICAgIHNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5hcHBlbmQoeyBhdHRhY2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2Ut
Pm1pbWVUeXBlKCksIHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICB9
CiAKICAgICBpZiAoIXNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5pc0VtcHR5KCkpCkBAIC0zMzIs
NyArMzMyLDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRz
KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNF
bXB0eSgpKQogICAgICAgICAgICAgbmFtZSA9ICJtZWRpYSJfczsKIAotICAgICAgICBhdHRhY2ht
ZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUt
Pm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBpbWFnZSB9KTsKKyAgICAgICAg
YXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2Ut
PnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpLCBpbWFnZSB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IGRlc2NlbmRh
bnRzT2ZUeXBlPEhUTUxPYmplY3RFbGVtZW50PihmcmFnbWVudCkpIHsKQEAgLTM1MCw3ICszNTAs
NyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICBuYW1lID0gImZpbGUiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2Vy
dGlvbkluZm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlw
ZSgpLCByZXNvdXJjZS0+dmFsdWUtPmRhdGEoKSwgb2JqZWN0IH0pOworICAgICAgICBhdHRhY2ht
ZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUt
Pm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIG9i
amVjdCB9KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIGluZm8gOiBhdHRhY2htZW50SW5zZXJ0
aW9uSW5mbykgewpAQCAtNDI4LDcgKzQyOCw3IEBAIHN0cnVjdCBNYXJrdXBBbmRBcmNoaXZlIHsK
ICAgICBSZWY8QXJjaGl2ZT4gYXJjaGl2ZTsKIH07CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1h
cmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1F
VHlwZUFzSFRNTCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJh
Y3RNYXJrdXBBbmRBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
c3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwp
CiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFVSTCgpLCBi
dWZmZXIpOwogICAgIGlmICghYXJjaGl2ZSkKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFy
ZWRCdWZmZXImIGJ1ZgogICAgIGlmICghY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUg
eyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291
cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hp
dmUucmVsZWFzZU5vbk51bGwoKSB9OworICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3Ry
aW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9u
TnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxsKCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBz
YW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0
aW9uRG9jdW1lbnQsIE1hcmt1cEFuZEFyY2hpdmUmIG1hcmt1cEFuZEFyY2hpdmUsIE1TT0xpc3RR
dWlya3MgbXNvTGlzdFF1aXJrcywgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmlu
Zyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIFN0
cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRl
c3RpbmF0aW9uRG9jdW0KICAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwo
c3ViZnJhbWVVUkwpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgTWFya3VwQW5k
QXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWlu
UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6
ZSgpKSwKKyAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmlu
Zzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKICAgICAgICAg
ICAgIHN1YmZyYW1lTWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIHN1YmZyYW1lQXJjaGl2
ZS5jb3B5UmVmKCkgfTsKICAgICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFy
a3VwV2l0aEFyY2hpdmUoZnJhbWUsIGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVu
dCwgTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQsIGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKQEAg
LTQ5Nyw3ICs0OTcsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUo
RnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgIHJldHVybiBzYW5p
dGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1lbnQoV1RGTW92ZShmcmFnbWVudCksICpzdGFn
aW5nRG9jdW1lbnQsIG1zb0xpc3RRdWlya3MsIG1hcmt1cEFuZEFyY2hpdmUubWFya3VwKTsKIH0K
IAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1J
TUVUeXBlRm9ySW1hZ2VzKCkgfHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTUzMiw3ICs1MzIsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJB
cmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MTIsMTIgKzYxMiwxMiBAQCBib29sIFdlYkNvbnRl
bnRNYXJrdXBSZWFkZXI6OnJlYWRIVE1MKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHJldHVy
biAhbWFya3VwLmlzRW1wdHkoKTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRG
RChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChmcmFtZS5zZXR0aW5n
cygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgfHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmli
dXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHRO
UyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0
cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhm
cmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC02MjYsMTEgKzYyNiwxMSBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRS
VEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdl
YkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9v
bCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFs
bG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0
cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0
byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcu
Z2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYz
OSwxMiArNjM5LDEyIEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJl
YWRlcjo6cmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYg
KGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1l
bnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAg
IGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3Ry
aW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC02NTMsMTEgKzY1MywxMSBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1h
cmt1cFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVu
dE1hcmt1cFJlYWRlcjo6cmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
YXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFJURjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxw
dHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBj
cmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBp
ZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NzYsNyArNjc2LDcgQEAg
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2Uo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0
aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVy
OjpyZWFkSW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkK
IHsKICAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAq
ZnJhbWUuZG9jdW1lbnQoKTsKQEAgLTc0Niw3ICs3NDYsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKICAgICByZXR1cm4gYXR0YWNobWVudDsKIH0KIAotc3RhdGljIFJlZjxI
VE1MRWxlbWVudD4gYXR0YWNobWVudEZvckRhdGEoRnJhbWUmIGZyYW1lLCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQ
cmVzZW50YXRpb25TaXplIHByZWZlcnJlZFNpemUpCitzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBh
dHRhY2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVz
ZW50YXRpb25TaXplIHByZWZlcnJlZFNpemUpCiB7CiAgICAgUmVmIGRvY3VtZW50ID0gKmZyYW1l
LmRvY3VtZW50KCk7CiAgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50
OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1bWVudCk7CkBAIC04MzMsNyAr
ODMzLDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRl
bnRSZWFkZXI6OnJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQ
cmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUp
CiB7CiAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAK
aW5kZXggNjA0ODZlNzFhZDU5ZmVjYzcxNWZmMGEwOWIxYzM1NThiN2IzNDJjMi4uZDNlOTgxOWJk
NTMxZjg0ODZhMzE3YWI5ZjllZDgzYTk4ODViZTJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKQEAgLTcxLDcgKzcxLDcgQEAg
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2Uo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0
aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVy
OjpyZWFkSW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkK
IHsKICAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAq
ZnJhbWUuZG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
Yi5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKaW5kZXggNDVkOTMzZTEzY2E0ZDIy
NTFjNWRlZDg0OGFhOWU5ODcyYzc2NzQ4OS4uYmNhNjY5NmViZTZmMGVkZGRkZWU3OWI3M2MzZWUx
NDQ5NmQ4MmZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3Mg
QmxvYkxvYWRlcjsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFt
OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBF
eGNlcHRpb25PcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3Jr
U2VuZFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5j
cHAKaW5kZXggNTU5ZWJjYzQ4YzVmMDk2YWMxOWJhZTdkOWY3MThiNzFmMmEzNTMyMi4uNDJmNDE4
MGRmYTg0MjdlMGU2MGY4MWViNzliMTkxODdjYWZkYmExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgTmV0d29y
a1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKCkKICAgICAgICAgYm9vbCBzaG91bGRTdG9wUHJv
Y2Vzc2luZyA9IGZhbHNlOwogICAgICAgICBzd2l0Y2hPbihtX3F1ZXVlLmZpcnN0KCksIFt0aGlz
XShjb25zdCBDU3RyaW5nJiB1dGY4KSB7CiAgICAgICAgICAgICBtX3dyaXRlU3RyaW5nKHV0Zjgp
OwotICAgICAgICB9LCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKKyAgICAgICAg
fSwgW3RoaXNdKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgZGF0YSkgewogICAgICAgICAg
ICAgZGF0YS0+Zm9yRWFjaFNlZ21lbnQobV93cml0ZVJhd0RhdGEpOwogICAgICAgICB9LCBbdGhp
cywgJnNob3VsZFN0b3BQcm9jZXNzaW5nXShVbmlxdWVSZWY8QmxvYkxvYWRlcj4mIGxvYWRlcikg
ewogICAgICAgICAgICAgYXV0byBlcnJvckNvZGUgPSBsb2FkZXItPmVycm9yQ29kZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaAppbmRleCA1NTFmNzBmOTE2N2Iy
YmZjYjI0NGJiMmIzNzAwYmZiYWFmNTQ3OTZjLi5kMjNjZmViYjQ1MDhiYzMwMDkxNWJiOTk2ZDNm
MTUwNjJjZTM1MDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtT
ZW5kUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUu
aApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CiBj
bGFzcyBCbG9iTG9hZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTmV0d29ya1NlbmRRdWV1ZSA6IHB1
YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CkBAIC02Myw3ICs2Myw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzTWVzc2FnZXMoKTsKIAotICAg
IHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnZhcmlhbnQ8Q1N0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4s
IFVuaXF1ZVJlZjxCbG9iTG9hZGVyPj47CisgICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFu
dDxDU3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIFVuaXF1ZVJlZjxCbG9iTG9h
ZGVyPj47CiAgICAgRGVxdWU8TWVzc2FnZT4gbV9xdWV1ZTsKIAogICAgIFdyaXRlU3RyaW5nIG1f
d3JpdGVTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2ht
ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5jcHAKaW5kZXggNTZhMDZmY2FmMjczZDI1ZGM0Yzc1ZGNlNTY5YWFjOGYxYWE1OTUyNy4uZDJi
ODc0MWEwNDQzNDJjN2ZmZDllOGE1MzNjYzhhMTIwZTI5YmFkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIHN0
YXRpYyBib29sIG1pbWVUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdlQXR0YWNobWVudChjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBv
cnRlZEltYWdlTUlNRVR5cGUobWltZVR5cGUpIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGTUlN
RVR5cGUobWltZVR5cGUpOwogfQogCi12b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRl
RW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVF
bmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBhdXRvKiBob3N0RWxlbWVudCA9
IHNoYWRvd0hvc3QoKTsKICAgICBpZiAoIWlzPEhUTUxJbWFnZUVsZW1lbnQ+KGhvc3RFbGVtZW50
KSB8fCAhYnVmZmVyLT5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuaAppbmRleCA1NzNlYzJlYWUxY2RjMDYwOWYyNjFjMzg0MDBiYjAyYzQ4MGY3YmRk
Li42NjFkZWM5Mzc2ZDhhOWQ2ZDQ3MTdmZDBiNGNlN2Y4MmZmMDNmNzU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xh
c3MgRmlsZTsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJBdHRhY2htZW50
OwogY2xhc3MgU2hhcmVhYmxlQml0bWFwOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVtZW50IGZpbmFs
IDogcHVibGljIEhUTUxFbGVtZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEhUTUxB
dHRhY2htZW50RWxlbWVudCk7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNv
cHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYpIGZpbmFs
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVBdHRyaWJ1dGVzKHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+JiYgbmV3RmlsZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudFR5cGUs
IGNvbnN0IFN0cmluZyYgbmV3RmlsZW5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBk
YXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlRW5j
bG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0
ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwpOwogCiAgICAgSW5zZXJ0
ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwg
Q29udGFpbmVyTm9kZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggNTE3MWI5Y2RjNzg5MzE3MWUyMWU1ZjRiZjU1MDE3ZWY5NDRhYzc5NS4uMWE1
NmJjMDM1OWNjZTFmNTBkY2RkYTA2NTIyMmEwMTA5NWE2OTA1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yOTM4LDcgKzI5MzgsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3Nhcnko
KQogICAgIGF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKTsKIH0KIAotdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJl
Y2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRp
YWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBtZWRpYVBsYXllckluaXRp
YWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhVHlwZSwgaW5pdERhdGEtPnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApp
bmRleCA2OTU2Njk0OTYzMTBlZjkxMDhiOTU2ZmRhNDgyMTQzMDE0OTcwZWNiLi42YzNiNjkzYjdi
MTBlZGEzMGU1MWQ0YzY2MzFiZTNmYjUwY2JmODBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaApAQCAtNzIwLDcgKzcyMCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDRE1D
bGllbnQKICAgICB2b2lkIGNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3Nh
cnkoKSBmaW5hbDsKLSAgICB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25E
YXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7Cisg
ICAgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNv
bnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCA0NDJkMDk0
NmJlMjUwZGNjZjU5MjdiYWE5Mjc5M2E3MGVlOTE5MzNlLi4wMGQ4ZjIzOWQ3MTI3YzYxY2FlMWI1
OGQ5YzRhMzAzYTliM2M5MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAK
QEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OnVwZGF0ZUR1cmluZ1BhcnNp
bmcoKQogICAgIGlmICghbV9pbWFnZUVsZW1lbnQpCiAgICAgICAgIGNyZWF0ZURvY3VtZW50U3Ry
dWN0dXJlKCk7CiAKLSAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbG9hZGVy
KCktPm1haW5SZXNvdXJjZURhdGEoKSkKKyAgICBpZiAoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCkpCiAgICAgICAgIG1f
aW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpLT51cGRhdGVCdWZmZXIoKmJ1ZmZlcik7CiAKICAg
ICBpbWFnZVVwZGF0ZWQoKTsKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6
OmZpbmlzaGVkUGFyc2luZygpCiB7CiAgICAgaWYgKCFwYXJzZXIoKS0+aXNTdG9wcGVkKCkgJiYg
bV9pbWFnZUVsZW1lbnQpIHsKICAgICAgICAgQ2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlID0gKm1f
aW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICAgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgp
OwogCiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBtdWx0aXBhcnQgaW1hZ2UsIG1ha2UgYSBjb3B5
IG9mIHRoZSBjdXJyZW50IHBhcnQsIHNpbmNlIHRoZSByZXNvdXJjZSBkYXRhCiAgICAgICAgIC8v
IHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIG5leHQgcGFydC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYTdj
YTcxNjJkNzkxZWQ3ZmJhOGNjOTFjMjFhMmNmM2FmNmU2OWE3ZS4uMTg3OTNmZjA2NjMzOGZiNjBh
MzRkZWM5MDliYzJkZGQyOGJlYWZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTg1MCw3ICs4NTAsNyBAQCB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bQogICAgICAgICBuZXR3b3JrQWdlbnQtPmludGVyY2VwdFJl
cXVlc3QobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVy
KQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29y
a0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCiAgICAg
ICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVzcG9uc2UocmVzcG9uc2UsIGlkZW50aWZpZXIs
IFdURk1vdmUoaGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDhlNjVjNGViMTAyMzM1MjFmNDhjN2Y0YjEy
MGFkMmM4OTA5YTA3YmEuLmQyOTU3ODEwZDgzODJjOTM1MWQ1YTkzZjE0NGFlZDE0OTNiY2M2NTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNo
YWRvd1Jvb3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogY2xhc3MgVGltZXJCYXNlOwogY2xhc3MgV2ViS2l0TmFtZWRGbG93OwogY2xhc3MgV2Vi
U29ja2V0Q2hhbm5lbDsKQEAgLTIzNiw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZy
YW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2Vw
dFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFt
ZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3Qg
RnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3Nh
Z2VUb0NvbnNvbGUoUGFnZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNz
YWdlPik7CiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdl
Pik7CkBAIC00NDEsNyArNDQxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJ
bnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGlj
IHZvaWQgaW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlc291cmNl
TG9hZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJik7Ci0gICAg
c3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0aWMgdm9pZCBh
ZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgc3RkOjp1bmlxdWVf
cHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKIApAQCAtMTI4OSw3ICsxMjg5LDcgQEAg
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KFJl
c291cmNlTG9hZGVyJiBsb2FkZXIsIEYKICAgICAgICAgaW50ZXJjZXB0UmVxdWVzdEltcGwoKmFn
ZW50cywgbG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYgZnJhbWUs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCitpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFt
ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAg
ICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9u
c2UoZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAgaWYgKGF1dG8qIGFnZW50cyA9IGluc3RydW1lbnRp
bmdBZ2VudHMoZnJhbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcAppbmRleCA2MWU0YmMzYmEwMTll
ZTI1ZTVjOGJjMjIxZGZmNjA3N2VkZGI4NjNkLi5mMDY0MDNhNjIzNGI0MmI2YWQyYTgwYjAxOTRh
NTk2ZDg5ZjZlNmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcApAQCAtNDUsNyArNDUsNyBAQCB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdEludGVy
bmFsKFJlc291cmNlTG9hZGVyJiBsbwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50
ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25z
dCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2VJbnRl
cm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJj
ZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25XZWJLaXQuaAppbmRleCBmNzYxMTRjZTk4ZjQyYTdmZjkwNmE0OGQwNDIw
Yjk2MzA1ZDM2OTE0Li4wN2I0MjFiNTljMTU1NWUxYTI5MWUxOGViYjI2MjIxMjJmMTY1OGIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbldlYktpdC5oCkBAIC0zNiwyMCArMzYsMjAgQEAgY2xhc3MgRnJhbWU7CiBjbGFz
cyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJL
aXQgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3QoY29u
c3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91
bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiwgRnVu
Y3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJik7Ci0gICAgc3RhdGljIHZvaWQg
aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0YXRpYyB2
b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7
CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdEludGVy
bmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJv
b2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW50ZXJu
YWwoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
PiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZy
YW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZUludGVy
bmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiB9OwogCiBpbmxpbmUgYm9v
bCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3Qo
Y29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCkBAIC03
Niw3ICs3Niw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6
aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYgbG9hCiAgICAgaW50ZXJjZXB0UmVxdWVz
dEludGVybmFsKGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLWlubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJh
bWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQoraW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShj
b25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4m
JiBoYW5kbGVyKQogewogICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6
OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGZyYW1lLCByZXNwb25zZSkpOwogICAgIGludGVyY2Vw
dFJlc3BvbnNlSW50ZXJuYWwoKmZyYW1lLCByZXNwb25zZSwgaWRlbnRpZmllciwgV1RGTW92ZSho
YW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmNwcAppbmRleCA2NzdjNWI4MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjcz
Li5mMzJmNjYwYjkxNzNiYWU4ZDVjZDlhMTMwZWFlNThiOTdkNWVjZTg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ3LDYg
KzQ3LDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50
U2l6ZSA9IDUwICogMTAwMCAqIDEwMDA7IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3Qg
U3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1f
bG9hZGVySWQobG9hZGVySWQpCisgICAgLCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPigpKQogewogfQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2lnbmVkIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIGlm
IChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAgICAgICBy
ZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gbnVs
bHB0cjsKKyAgICAgICAgbV9kYXRhQnVmZmVyLT5yZXNldCgpOwogICAgIH0KIAogICAgIGlmICho
YXNDb250ZW50KCkpIHsKQEAgLTgxLDM2ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpldmljdENvbnRlbnQoKQogICAgIHJldHVybiByZW1vdmVD
b250ZW50KCk7CiB9CiAKK2Jvb2wgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
aGFzRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVsbCgpOwor
fQorCiBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0
aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6
ZSgpIDogMDsKKyAgICByZXR1cm4gbV9kYXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZvaWQgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7
Ci0gICAgaWYgKCFtX2RhdGFCdWZmZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRh
QnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLT5hcHBl
bmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFz
Q29udGVudCgpKTsKIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXpl
KCk7CisgICAgYXV0byBidWZmZXIgPSBtX2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYg
KG1fZGVjb2RlcikgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAg
bV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPmRhdGEo
KSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2goYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IG1fYmFzZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29k
ZVRvU3RyaW5nKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9j
b250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgp
OwogICAgIH0KIAotICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9j
b250ZW50LnNpemVJbkJ5dGVzKCkgLSBkYXRhTGVuZ3RoOwogfQogCkBAIC0yNjcsNyArMjY5LDcg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQsIENhY2hlZFJlc28KICAgICByZXNvdXJjZURhdGEtPnNldENhY2hlZFJl
c291cmNlKGNhY2hlZFJlc291cmNlKTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCit2
b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCiB7CiAgICAgUmVzb3VyY2VEYXRhKiBy
ZXNvdXJjZURhdGEgPSByZXNvdXJjZURhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElkKTsKICAgICBp
ZiAoIXJlc291cmNlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmgKaW5kZXggZWZhMDAwNTNhZTExN2E1NGRmYjEyNmQxMmY5YWJlZTdkYTU5
MDhkNy4uZWUzOTQ1N2Y3NjcyZWFjYWFjOTBhNWI2YmM4ODExMDhjYmRhOGE4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlIDx3dGYv
RGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVS
ZWYuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtNDAsNyArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBD
YWNoZWRSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0UmVzb3Vy
Y2VEZWNvZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTg4LDggKzkwLDggQEAg
cHVibGljOgogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlcigpIGNv
bnN0IHsgcmV0dXJuIG1fZGVjb2Rlci5jb3B5UmVmKCk7IH0KICAgICAgICAgdm9pZCBzZXREZWNv
ZGVyKFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiYmIGRlY29kZXIpIHsgbV9kZWNvZGVyID0g
V1RGTW92ZShkZWNvZGVyKTsgfQogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmNvcHlSZWYoKTsgfQotICAgICAgICB2b2lkIHNl
dEJ1ZmZlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2J1ZmZlciA9IFdURk1v
dmUoYnVmZmVyKTsgfQorICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuY29weVJlZigpOyB9CisgICAgICAgIHZvaWQg
c2V0QnVmZmVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2J1
ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsgfQogCiAgICAgICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
Q2VydGlmaWNhdGVJbmZvPiYgY2VydGlmaWNhdGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0
aWZpY2F0ZUluZm87IH0KICAgICAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZUluZm8oY29uc3Qgc3Rk
OjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8pIHsgbV9jZXJ0aWZp
Y2F0ZUluZm8gPSBjZXJ0aWZpY2F0ZUluZm87IH0KQEAgLTEwMywxMCArMTA1LDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBt
X3Jlc3BvbnNlVGltZXN0YW1wOyB9CiAgICAgICAgIHZvaWQgc2V0UmVzcG9uc2VUaW1lc3RhbXAo
V2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGltZTsgfQogCi0gICAgICAg
IGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9Cisg
ICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gaGFzRGF0YSgpOyB9
CiAKICAgICBwcml2YXRlOgotICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiBt
X2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CiAgICAgICAgIHNp
emVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVkIGRlY29k
ZURhdGFUb0NvbnRlbnQoKTsKQEAgLTExOSw4ICsxMjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIFN0
cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAg
ICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fYnVmZmVyOworICAgICAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9k
YXRhQnVmZmVyOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRl
SW5mbzsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fY2FjaGVkUmVzb3VyY2UgeyBudWxscHRy
IH07CiAgICAgICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIG1fdHlwZSB7IElu
c3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSB9OwpAQCAtMTQ0LDcgKzE0Niw3IEBAIHB1
YmxpYzoKICAgICBSZXNvdXJjZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCk7CiAgICAgdm9pZCBtYXliZURlY29kZURhdGFUb0NvbnRlbnQoY29uc3QgU3RyaW5nJiByZXF1
ZXN0SWQpOwogICAgIHZvaWQgYWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0
SWQsIENhY2hlZFJlc291cmNlKik7Ci0gICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3Ry
aW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKKyAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVy
KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKICAgICBSZXNvdXJjZURhdGEgY29u
c3QqIGRhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogICAgIFJlc291cmNlRGF0YSBjb25z
dCogZGF0YUZvclVSTChjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVt
b3ZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRl
eCA0NGUwODRhMjg4NDJmYmM1NjI4OTM3NjFkNzFlNGM3NDI3NGViYjE4Li4xODlmMjZiMDk4Yjcz
NjFkY2Y4ZTlkNjRlMzU5ZTc1ZmQ5YzA5NzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xMTQw
LDcgKzExNDAsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVz
dChSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBGdW5jdGlvbjx2bwogICAgIG1fZnJvbnRlbmREaXNw
YXRjaGVyLT5yZXF1ZXN0SW50ZXJjZXB0ZWQocmVxdWVzdElkLCBidWlsZE9iamVjdEZvclJlc291
cmNlUmVxdWVzdChsb2FkZXIucmVxdWVzdCgpKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29y
a0FnZW50OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBo
YW5kbGVyKQordm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEFT
U0VSVChtX2VuYWJsZWQpOwogICAgIEFTU0VSVChtX2ludGVyY2VwdGlvbkVuYWJsZWQpOwpAQCAt
MTI0Myw3ICsxMjQzLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9y
TmV0d29ya0FnZW50OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UoY29uc3QKICAgICAgICAgb3ZlcnJp
ZGVSZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBl
LCBvdmVycmlkZVJlc3BvbnNlLm1pbWVUeXBlKCkpOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG92ZXJyaWRlRGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gb3ZlcnJpZGVEYXRhOwogICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CiAgICAgICAgIGF1dG8g
YnVmZmVyID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKQEAg
LTEyNzEsNyArMTI3MSw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zCiAgICAgaWYgKGxvYWRl
ci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KCJVbmFibGUgdG8gZnVsZmlsbCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3Nl
ZCJfcyk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CiAgICAg
ICAgIGF1dG8gYnVmZmVyID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQpOwogICAgICAgICBpZiAoIWJ1
ZmZlcikKQEAgLTE0MDcsMTIgKzE0MDcsMTIgQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkKICAg
ICAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQocmVzb3Vy
Y2UubWltZVR5cGUoKSkpIHsKICAgICAgICAgICAgIGF1dG8gZGVjb2RlciA9IEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIocmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3Vy
Y2UucmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCkpOwogICAgICAgICAgICAgKmJhc2U2NEVu
Y29kZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgKnJlc3Vs
dCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQogCiAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJh
c2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAg
ICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuaAppbmRleCA4ZjZmYmNjMjkzYWViZjhiOWQ1Yzk0NWQyODI5YTE1Mjdi
NzRiYzdmLi42YmNkODdkZGNkOGIwNDQxMzA4ZDFkMDFlY2E2YjBlNmRhMTQxM2Q0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmgKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB3aWxsSW50ZXJj
ZXB0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVx
dWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBib29sIHNob3VsZEludGVyY2VwdFJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGludGVyY2VwdFJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+KT4mJik7CisgICAgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4pPiYmKTsKICAgICB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5j
dGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKIAogICAgIHZvaWQgc2VhcmNo
T3RoZXJSZXF1ZXN0cyhjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiwgUmVmPEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKTsK
QEAgLTE4NSw3ICsxODUsNyBAQCBwcml2YXRlOgogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpOwogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBwdWJsaWM6Ci0gICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiBvcmlnaW5hbFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiBvcmlnaW5hbFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICAgICAgOiBtX29yaWdpbmFsUmVzcG9uc2Uo
b3JpZ2luYWxSZXNwb25zZSkKICAgICAgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgeyB9CkBAIC0yMDIsNyArMjAyLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIHJlc3BvbmQobV9vcmlnaW5hbFJlc3BvbnNlLCBudWxscHRy
KTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcmVzcG9uZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSkKKyAgICAgICAgdm9pZCBy
ZXNwb25kKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gZGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCFtX3Jl
c3BvbmRlZCk7CiAgICAgICAgICAgICBpZiAobV9yZXNwb25kZWQpCkBAIC0yMTUsNyArMjE1LDcg
QEAgcHJpdmF0ZToKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9v
cmlnaW5hbFJlc3BvbnNlOwotICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+IG1fY29tcGxldGlvbkhhbmRs
ZXI7CisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+IG1fY29tcGxldGlvbkhhbmRsZXI7
CiAgICAgICAgIGJvb2wgbV9yZXNwb25kZWQgeyBmYWxzZSB9OwogICAgIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cAppbmRleCAzZGFmZTY0MzdkZjEyMTA0MDVmZWZiZjM3NTc4NWZlY2Q1ZWFjNDcyLi4xYjY0NmFh
MjE3M2FiNTRhM2YxYWJkY2I1MDIwNGFkZTk4YzA3M2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0xMDAs
MTUgKzEwMCwxNSBAQCBzdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29uc3QgdWludDhfdCogYnVm
ZmVyLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleAogCiBib29sIEluc3BlY3RvclBh
Z2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2
NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEo
KTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdl
bnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRv
Y3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0
dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2Rpbmco
KSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAotYm9vbCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJp
bmcqIHJlc3VsdCkKK2Jvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50
KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQog
ewotICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxw
dHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJh
c2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXIt
PnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7
CiB9CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJv
b2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCkBAIC0xNTYsNyArMTU2LDcgQEAg
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudChQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBGcmEKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAg
aWYgKGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsLCBsb2FkZXItPnVybCgpKSkg
ewogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggYjUxYWRkYjFi
ZDhmMmNjZTY5NTYwNzk5Y2QxZDk1MmQyZGU0MjgzOC4uM2Q1ZTU2NmRiZTBjNWVjMTFkOWU4ZGY2
N2ZjZjBhNzA5ODhhMmY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIEluc3Bl
Y3RvckNsaWVudDsKIGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBQYWdlOwogY2xhc3Mg
UmVuZGVyT2JqZWN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50IGZpbmFsIDogcHVibGljIEluc3Bl
Y3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUGFnZUFnZW50KTsKQEAg
LTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgICAgICBPdGhlclJlc291cmNlLAogICAgIH07CiAK
LSAgICBzdGF0aWMgYm9vbCBzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2Rl
LCBTdHJpbmcqIHJlc3VsdCk7CisgICAgc3RhdGljIGJvb2wgc2hhcmVkQnVmZmVyQ29udGVudChS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rp
bmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKICAgICBzdGF0
aWMgVmVjdG9yPENhY2hlZFJlc291cmNlKj4gY2FjaGVkUmVzb3VyY2VzRm9yRnJhbWUoRnJhbWUq
KTsKICAgICBzdGF0aWMgdm9pZCByZXNvdXJjZUNvbnRlbnQoSW5zcGVjdG9yOjpQcm90b2NvbDo6
RXJyb3JTdHJpbmcmLCBGcmFtZSosIGNvbnN0IFVSTCYsIFN0cmluZyogcmVzdWx0LCBib29sKiBi
YXNlNjRFbmNvZGVkKTsKICAgICBzdGF0aWMgU3RyaW5nIHNvdXJjZU1hcFVSTEZvclJlc291cmNl
KENhY2hlZFJlc291cmNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAK
aW5kZXggYjRlNmEzYTUzYjRjMGMwZGExYzMxNzJkZDQyY2FlNmE4Y2QyMWY3YS4uNmFlNTI2NTk3
Y2QyODYzMWJlNzk1MGZjMzM1MzZmOGYzNDdkN2FmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b250ZW50RmlsdGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6
ZGVsaXZlclJlc291cmNlRGF0YShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJU
KG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVm
ZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAg
aWYgKGF1dG8qIHJlc291cmNlQnVmZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAg
ICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VC
dWZmZXItPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50
LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIHJlc291cmNlQnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMg
Y29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBDb250
ZW50RmlsdGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogewogICAgIEFTU0VSVCh3aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZShlcnJvcikpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhIHsg
bV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXItPnJlcGxhY2VtZW50RGF0YSgpIH07CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSB7IG1fYmxvY2tpbmdDb250
ZW50RmlsdGVyLT5yZXBsYWNlbWVudERhdGEoKSB9OwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2UgeyBVUkwoKSwgInRleHQvaHRtbCJfcywgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihyZXBs
YWNlbWVudERhdGEtPnNpemUoKSksICJVVEYtOCJfcyB9OwogICAgIFN1YnN0aXR1dGVEYXRhIHN1
YnN0aXR1dGVEYXRhIHsgV1RGTW92ZShyZXBsYWNlbWVudERhdGEpLCBlcnJvci5mYWlsaW5nVVJM
KCksIHJlc3BvbnNlLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpI
aWRkZW4gfTsKICAgICBTZXRGb3JTY29wZTxib29sPiBsb2FkaW5nQmxvY2tlZFBhZ2UgeyBtX2lz
TG9hZGluZ0Jsb2NrZWRQYWdlLCB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAppbmRleCBjM2Q4NDUwZjcxYzJjMzczZDJhZjFjY2NmYjIxNWFkODFiZjgwZDBi
Li4zYjkwZWY0YzU4MjdlNmMwYjQ5YjM0NjU2YjNjZDcxYThlZGE5NjlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCBEb2N1bWVu
dExvYWRlcjo6fkRvY3VtZW50TG9hZGVyKCkKICNlbmRpZgogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEoKSBj
b25zdAogewogICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuIG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5jb3B5KCk7CkBAIC0xNjA4LDExICsxNjA4
LDExIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRk
QWxsQXJjaGl2ZVJlc291cmNlcygqbV9hcmNoaXZlKTsKICAgICBBU1NFUlQobV9hcmNoaXZlLT5t
YWluUmVzb3VyY2UoKSk7CiAgICAgYXV0byYgbWFpblJlc291cmNlID0gKm1fYXJjaGl2ZS0+bWFp
blJlc291cmNlKCk7Ci0gICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0
YSgpOworICAgIG1fcGFyc2VkQXJjaGl2ZURhdGEgPSBtYWluUmVzb3VyY2UuZGF0YSgpLm1ha2VD
b250aWd1b3VzKCk7CiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVU
eXBlKCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERh
dGEobWFpblJlc291cmNlLmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgp
KTsKKyAgICBjb21taXREYXRhKG1fcGFyc2VkQXJjaGl2ZURhdGEtPmRhdGEoKSwgbWFpblJlc291
cmNlLmRhdGEoKS5zaXplKCkpOwogICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiB9CkBAIC0xNjcx
LDcgKzE2NzEsNyBAQCBBcmNoaXZlUmVzb3VyY2UqIERvY3VtZW50TG9hZGVyOjphcmNoaXZlUmVz
b3VyY2VGb3JVUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAKIFJlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2UoKSBjb25zdAogewotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFk
YXRhKQogICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvJiBy
ZXNwb25zZSA9IHRoaXMtPnJlc3BvbnNlKCk7CkBAIC0yMjU1LDggKzIyNTUsOCBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKIAogICAg
IGZyYW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29tbWl0dGVkID0gZmFs
c2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNl
RGF0YSgpOwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5kYXRhKCksIHJlc291cmNlRGF0
YS0+c2l6ZSgpKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VE
YXRhID0gbWFpblJlc291cmNlRGF0YSgpOworICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9p
ZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJY29uTG9hZGluZygpCkBAIC0yMjkyLDcgKzIyOTIsNyBA
QCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKICAgICBtX2ZyYW1lLT5s
b2FkZXIoKS5jbGllbnQoKS5nZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhpY29uRGVjaXNpb25zKTsK
IH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29s
IGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9h
ZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gaWNvbiA9IG1faWNvbnNQZW5k
aW5nTG9hZERlY2lzaW9uLnRha2UobG9hZElkZW50aWZpZXIpOwogCkBAIC0yMzEzLDcgKzIzMTMs
NyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wg
ZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudAogICAgIHJhd0ljb25Mb2FkZXItPnN0YXJ0TG9h
ZGluZygpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmdJY29uKElj
b25Mb2FkZXImIGxvYWRlciwgU2hhcmVkQnVmZmVyKiBidWZmZXIpCit2b2lkIERvY3VtZW50TG9h
ZGVyOjpmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImIGxvYWRlciwgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogYnVmZmVyKQogewogICAgIC8vIElmIHRoZSBEb2N1bWVudExvYWRlciBoYXMg
ZGV0YWNoZWQgZnJvbSBpdHMgZnJhbWUsIGFsbCBpY29uIGxvYWRzIHNob3VsZCBoYXZlIGFscmVh
ZHkgYmVlbiBjYW5jZWxsZWQuCiAgICAgQVNTRVJUKG1fZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBmYmY1NDVjNDYwZTRlNDg5ZDg3YjI1YzBlODVlY2Nj
YTRjYmYzYzg3Li4zMzk4NzNkNWQzZmI5YmIzMDA0OThjZDZmMzdjYmY2NWI3OGFmNWI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFz
cyBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBj
bGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRGaWx0ZXI7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVyRmllbGRzOwogY2xhc3MgRm9ybVN0YXRl
OwogY2xhc3MgRnJhbWU7CkBAIC04Myw3ICs4NCw3IEBAIGNsYXNzIEljb25Mb2FkZXI7CiBjbGFz
cyBQYWdlOwogY2xhc3MgUHJldmlld0NvbnZlcnRlcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFNXQ2xpZW50Q29ubmVjdGlvbjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwogY2xhc3MgU3Vi
c3RpdHV0ZVJlc291cmNlOwpAQCAtMTcxLDcgKzE3Miw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNP
UkVfRVhQT1JUIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlcigpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIFN1YnJlc291cmNlTG9hZGVyKiBtYWluUmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IG1haW5SZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICAKICAgICBEb2N1bWVudFdyaXRlciYgd3Jp
dGVyKCkgY29uc3QgeyByZXR1cm4gbV93cml0ZXI7IH0KIApAQCAtMzkyLDggKzM5Myw4IEBAIHB1
YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBzdGFydEljb25Mb2FkaW5nKCk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVp
bnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZl
ciopPiYmKTsKLSAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYsIFNoYXJl
ZEJ1ZmZlciopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9y
SWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYpOworICAgIHZvaWQgZmluaXNo
ZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogCiAg
ICAgY29uc3QgVmVjdG9yPExpbmtJY29uPiYgbGlua0ljb25zKCkgY29uc3QgeyByZXR1cm4gbV9s
aW5rSWNvbnM7IH0KIApAQCAtNjIxLDcgKzYyMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3dh
aXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5IHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8dWludDY0
X3QsIExpbmtJY29uPiBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbjsKLSAgICBIYXNoTWFwPHN0
ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRC
dWZmZXIqKT4+IG1faWNvbkxvYWRlcnM7CisgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8SWNv
bkxvYWRlcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciop
Pj4gbV9pY29uTG9hZGVyczsKICAgICBWZWN0b3I8TGlua0ljb24+IG1fbGlua0ljb25zOwogCiAj
aWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuaAppbmRleCBlMTNlMjg2ZTE0ZjRmZThmZDdkZjkwYTBlMTUxZjA5MzQxOGRkZGIxLi4wOGEw
YWUxOWEzNzk4NDZmMTU3NTY0YzJkMGM4MzJiMjc0ODM2MDM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuaApAQCAtNTksNiArNTksNyBAQCBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBj
bGFzcyBDYWNoZWRQYWdlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDaHJvbWU7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEb2N1bWVu
dDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
IGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFN1YnN0aXR1dGVEYXRhOwogCiBlbnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWludDhfdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNGZkNjM3YTkwMTRh
NWQ0MWEyMjZlZTQ1OTE3YjZiM2U5YTc5MGViYi4uZWU5ZjNkMGM5ODRkNDU1Y2JiOTFiNDYwYzFi
YzEyODk4ZDEyMzY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTk4LDcgKzk4LDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xh
c3MgU3Vic3RpdHV0ZURhdGE7CiBjbGFzcyBXaWRnZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xv
YWRlclN0cmF0ZWd5LmgKaW5kZXggYWVmNjY4YmQ2M2VkNWZjZDQ1ZTYxZTlkMWYxMDdjZmI2YWVm
MjY0Yi4uMjlkMmUzZjQ2MTQwYWFhNTExNjBlNmEyODU2MmYzNzBlMzcxZWIyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgUmVz
b3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiAKIHN0cnVj
dCBGZXRjaE9wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyLmNwcAppbmRleCA2MzM3NTU5NjMyMDAxNDYzODI4OWUyODI2MDRj
NTViMGFmNDQ1MzEzLi42MDQzYWM5YmUyNjdlYTRmYmM3MWUxMTE4YjkwNzkxNTVlMzkxNTAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlci5jcHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlCiAg
ICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWRE
YXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5
cGUpCit2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxl
bmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKIHsKICAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5oCmluZGV4IDQ4YmIyMTUzYzkzZjJkYzc1NGUyMDczMjI1MmMwNTA5Y2Y3
MDRhNDEuLmI1MTc0ZWRjOTRiOTkyMzkwMjA1ZjBmYWQ0NTJlYTVhYzM4Nzg5MzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBA
IC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKQEAgLTc0
LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiwgaW50LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAKICAgICB2b2lk
IG5vdGlmeURvbmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcAppbmRleCBjNjI3NzY4NThhNmRjNWFmZmQzNmRjOWU3
ODVjOGJkMjQ3MmJiNzRkLi5kOTRiNzAwMDc0MWNkOTEyYjkxNzNlMmIzNzQ2ZDRkYThiMzY4YTU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGlj
RGlnZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFw
aGljRGlnZXN0LmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yQnl0ZXMoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
CiAgICAgcmV0dXJuIHsgYWxnb3JpdGhtLCBjcnlwdG9EaWdlc3QtPmNvbXB1dGVIYXNoKCkgfTsK
IH0KIAotUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JT
aGFyZWRCdWZmZXIoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0gYWxnb3Jp
dGhtLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogYnVmZmVyKQogewogICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdl
c3Q6OmNyZWF0ZSh0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShhbGdvcml0aG0pKTsKICAgICBpZiAo
YnVmZmVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlw
dG9ncmFwaGljRGlnZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0LmgKaW5kZXggYWVhM2RjNTdjODc4MzEzMDEzYTViMTZjOTM5Yjc3NGVkNDg0
MzI0Yy4uODNiODYxM2NmZGEyMzI5YWUzMGJiZjZhYmMxNGI5OWQ0NDIzN2IwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaApA
QCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNv
dXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIHN0cnVjdCBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgewogICAgIGVudW0gY2xhc3Mg
QWxnb3JpdGhtIHsKQEAgLTc1LDcgKzc1LDcgQEAgc3RkOjpvcHRpb25hbDxFbmNvZGVkUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUVuY29kZWRDcnlwdG9ncmFwaGljRGlnZXMKIAog
c3RkOjpvcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IGRlY29kZUVuY29kZWRS
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QoY29uc3QgRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdCYpOwogCi1SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhp
Y0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29y
aXRobSwgY29uc3QgU2hhcmVkQnVmZmVyKik7CitSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Qg
Y3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3Q6OkFsZ29yaXRobSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhSZXNvdXJj
ZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29uc3Qgdm9pZCogYnl0ZXMsIHNpemVf
dCBsZW5ndGgpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApp
bmRleCBhYTg1YmI0ZDNjYTg3MTQ1YmI3YTg2ZjY0NjY4ZTQ5NTE3NmFjMjM1Li5kZjEzOTU4OGU4
ZDUyNTJiM2VlYzYxOTNhZTYxYWEyNDc4NmIyMTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTc2LDYgKzc2LDcgQEAgREVGSU5FX0FMTE9DQVRPUl9XSVRI
X0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRlcik7CiBSZXNvdXJjZUxvYWRlcjo6UmVzb3Vy
Y2VMb2FkZXIoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucykKICAg
ICA6IG1fZnJhbWUgeyAmZnJhbWUgfQogICAgICwgbV9kb2N1bWVudExvYWRlciB7IGZyYW1lLmxv
YWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkgfQorICAgICwgbV9yZXNvdXJjZURhdGEgeyBt
YWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9kZWZlcnNMb2Fk
aW5nIHsgb3B0aW9ucy5kZWZlcnNMb2FkaW5nUG9saWN5ID09IERlZmVyc0xvYWRpbmdQb2xpY3k6
OkFsbG93RGVmZXJzTG9hZGluZyAmJiBmcmFtZS5wYWdlKCktPmRlZmVyc0xvYWRpbmcoKSB9CiAg
ICAgLCBtX29wdGlvbnMgeyBvcHRpb25zIH0KIHsKQEAgLTExOCw3ICsxMTksNyBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKIAogICAgIG1faWRlbnRpZmllciA9IHsg
fTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICBtX3Jlc291cmNlRGF0YS0+
cmVzZXQoKTsKICAgICBtX2RlZmVycmVkUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwogfQog
CkBAIC0xODksNyArMTkwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6aW5pdChSZXNvdXJjZVJl
cXVlc3QmJiBjbGllbnRSZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2kKICAgICB9KTsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2
b2lkIFJlc291cmNlTG9hZGVyOjpkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7CiAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgaWYgKHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCkBAIC0zMTgsNyArMzE5LDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVy
aW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2wKIAogICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1
ZmZlcmVkIGRhdGEKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5n
UG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0
cjsKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OndpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSgpCkBAIC0zMjksMjkgKzMzMCwy
OSBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2Uo
KQogICAgICAgICBtX2hhbmRsZS0+Y2FuY2VsKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6
OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFNo
YXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9p
ZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmlu
Z1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmICghbV9yZXNvdXJjZURhdGEgfHwgZGF0YVBheWxvYWRUeXBlID09
IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkgewotICAgICAgICBpZiAoYnVmZmVyKQotICAgICAg
ICAgICAgbV9yZXNvdXJjZURhdGEgPSBidWZmZXI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1fcmVzb3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKKyAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERh
dGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7
CisKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZm
ZXIpOwogICAgIGVsc2UKICAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhLCBsZW5n
dGgpOwogfQogCitjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRlcjo6
cmVzb3VyY2VEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZURhdGEtPmdldCgp
LmdldCgpOworfQorCiB2b2lkIFJlc291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSgpCiB7
Ci0gICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+Y2xlYXIo
KTsKKyAgICBpZiAoIW1fcmVzb3VyY2VEYXRhLT5pc051bGwoKSkKKyAgICAgICAgbV9yZXNvdXJj
ZURhdGEtPmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3VicmVzb3VyY2VM
b2FkZXIoKSBjb25zdApAQCAtNTUxLDE0ICs1NTIsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25n
IGwKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5j
b2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3Zv
aWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxs
cHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5
cGUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRh
dGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91
bGQgb25seSBnZXQgZGF0YStsZW5ndGggKk9SKiBhIFNoYXJlZEJ1ZmZlci4KKyAgICAvLyBUaGlz
IG1ldGhvZCBzaG91bGQgb25seSBnZXQgZGF0YStsZW5ndGggKk9SKiBhIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIuCiAgICAgQVNTRVJUKCFidWZmZXIgfHwgKCFkYXRhICYmICFsZW5ndGgpKTsKIAog
ICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlzIGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRk
aXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwpAQCAtNTcxLDcgKzU3Miw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoCiAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQg
bmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8v
IENvdWxkIGJlIGFuIGlzc3VlIHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29w
dGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJh
Y2tzICYmIG1fZnJhbWUpCi0gICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVj
ZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0
aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRo
aXMsIGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERh
dGFMZW5ndGgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKQEAgLTczNSw3ICs3
MzYsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbgogICAgIGRpZFJlY2VpdmVEYXRhKGRhdGEs
IGxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwogfQogCi12b2lk
IFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBk
aWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkQnl0ZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRl
eCA0ZmQyYmYwYmJiM2IxYmQyMTU0NWRiNTJjMmUxY2E2NGVlNDJiOTE3Li41NGIxYjg2NmRmODk2
YTg0YjRjYTI5N2VlNDc2ZDZkMGI2NjFmZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5o
IgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTU1LDYgKzU2LDggQEAgY2xhc3Mg
RnJhbWU7CiBjbGFzcyBGcmFtZUxvYWRlcjsKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXI7CiBj
bGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwor
Y2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQ
X0lERU5USUZJRVIoUmVzb3VyY2VMb2FkZXIpOwogY2xhc3MgUmVzb3VyY2VMb2FkZXIgOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8UmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMgUmVmQ291bnRlZDxSZXNv
dXJjZUxvYWRlcj4sIHByb3RlY3RlZCBSZXNvdXJjZUhhbmRsZUNsaWVudCB7CkBAIC02Niw3ICs2
OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBpbml0KFJlc291cmNlUmVxdWVzdCYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAotICAgIHZvaWQgZGVsaXZlclJl
c3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJik7CisgICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIHZpcnR1YWwgdm9pZCBzdGFydExvYWRpbmcoKQpAQCAtOTgsNyAr
MTAxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7CiAg
ICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jl
c3BvbnNlOyB9CiAKLSAgICBTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzb3VyY2VEYXRhLmdldCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhclJlc291cmNlRGF0YSgp
OwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3Q7CkBA
IC0xMDcsNyArMTEwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1
bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRl
c1RvQmVTZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxl
dGlvbkhhbmRsZXIpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVy
PiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKQEAgLTE2
Niw3ICsxNjksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIHdhc0NhbmNlbGxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FuY2VsbGF0aW9uU3RhdHVzID49IENhbmNlbGxlZDsgfQogCi0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90Kiwg
dW5zaWduZWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgCiAgICAgdm9pZCBzZXRSZWZl
cnJlclBvbGljeShSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSkgeyBtX29wdGlvbnMucmVm
ZXJyZXJQb2xpY3kgPSByZWZlcnJlclBvbGljeTsgfQogICAgIFJlZmVycmVyUG9saWN5IHJlZmVy
cmVyUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLnJlZmVycmVyUG9saWN5OyB9CkBA
IC0xOTEsNyArMTk0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENhbmNlbChj
b25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpID0gMDsKIAotICAgIHZvaWQgYWRkRGF0YU9yQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqLCB1bnNpZ25lZCwgU2hhcmVkQnVmZmVyKiwgRGF0YVBheWxvYWRUeXBlKTsKKyAg
ICB2b2lkIGFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIHZvaWQgbG9hZERhdGFVUkwo
KTsKICAgICB2b2lkIGZpbmlzaE5ldHdvcmtMb2FkKCk7CiAKQEAgLTIwMiw3ICsyMDUsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUq
LCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291
cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhh
bmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2FzQmxvY2tlZChSZXNv
dXJjZUhhbmRsZSopIG92ZXJyaWRlOwpAQCAtMjI3LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAKICAg
ICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdp
bmFsUmVxdWVzdDsgLy8gQmVmb3JlIHJlZGlyZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX3Jlc291cmNlRGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9y
ZXNvdXJjZURhdGE7CiAgICAgCiAgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggNDZjZWZiZGY5ZGExNzg5OTdlZGNiOWYzNTQ0ZjQ4ODRiNjBhNmVmZS4uMzdkMGJiODIxYWJk
ODZhOWI1NjA2ZTEyN2VmYzk0MTJhNTFiYjFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBTdWJyZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoLCBsb24KICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0
ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAjaWYgVVNFKFFVSUNLX0xPT0sp
CiAgICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewpA
QCAtNTQyLDcgKzU0Miw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlCiAgICAgZGlkUmVjZWl2
ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVu
Z3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIEFTU0VS
VChtX3Jlc291cmNlKTsKIApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCwKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgp
KQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/
IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgp
OworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDog
bGVuZ3RoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmgKaW5kZXggMzcyM2I2YjlhYjlmZGRhYWE1NTc0YmZiMGU2ZjM4Y2VkN2FlZmI3NS4uODMy
YzlmMGU3M2QzODQ2NGE3OTVmNDAzODYwZjc5YzM0ZTczYmM3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVk
IGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIEV4
cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiBj
aGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcHJldmlvdXNSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VS
ZXF1ZXN0JiBuZXdSZXF1ZXN0KTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihj
b25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAK
ICAgICB2b2lkIG5vdGlmeURvbmUoTG9hZENvbXBsZXRpb25UeXBlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3Vic3RpdHV0ZURhdGEuaAppbmRleCBmNjYyOTJlMzFjYmViNDI2NDMwYTgzMmFkZWY0
Mjk5MWNiNTc0MzZlLi5hOGE0OWI0N2Y5MjczNDI3NGJhNGNlYWJjMTcwN2ZlZmE3YjY2NDBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaApAQCAtNDMsNyArNDMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFN1YnN0
aXR1dGVEYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgY29udGVudCwgY29uc3QgVVJMJiBmYWls
aW5nVVJMLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgU2Vzc2lvbkhpc3RvcnlW
aXNpYmlsaXR5IHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkpCisgICAgICAgIFN1YnN0aXR1
dGVEYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNvbnRlbnQsIGNvbnN0IFVS
TCYgZmFpbGluZ1VSTCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFNlc3Npb25I
aXN0b3J5VmlzaWJpbGl0eSBzaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KQogICAgICAgICAg
ICAgOiBtX2NvbnRlbnQoV1RGTW92ZShjb250ZW50KSkKICAgICAgICAgICAgICwgbV9mYWlsaW5n
VVJMKGZhaWxpbmdVUkwpCiAgICAgICAgICAgICAsIG1fcmVzcG9uc2UocmVzcG9uc2UpCkBAIC01
NCwxNCArNTQsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzVmFsaWQo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQgIT0gbnVsbHB0cjsgfQogICAgICAgICBib29sIHNo
b3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFJldmVh
bFRvU2Vzc2lvbkhpc3RvcnkgPT0gU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpWaXNpYmxlOyB9
CiAKLSAgICAgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBjb250ZW50KCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZW50LmdldCgpOyB9CisgICAgICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQuZ2V0KCk7IH0KICAgICAgICAgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UubWltZVR5cGUo
KTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOyB9CiAgICAgICAgIGNvbnN0IFVSTCYgZmFp
bGluZ1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFpbGluZ1VSTDsgfQogICAgICAgICBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0K
ICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9j
b250ZW50OworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9jb250ZW50
OwogICAgICAgICBVUkwgbV9mYWlsaW5nVVJMOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIG1f
cmVzcG9uc2U7CiAgICAgICAgIFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBtX3Nob3VsZFJldmVh
bFRvU2Vzc2lvbkhpc3RvcnkgeyBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OkhpZGRlbiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDU5NjY0YjU4
NTRmODViMDJjZGYzNDkwMjBhMGVmZjEzZWI3ODg4NzkuLmNmMmRlMGM2MmQ5NWYzMzI1YjQyYjQ2
ZTI0MDM3NzQ0MTA3NDJhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJl
c291cmNlLmgKQEAgLTM3LDEyICszNywxNCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVy
JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZl
cj4obV9kYXRhKTsgfQorICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oUmVm
IHsgKm1fZGF0YS5nZXQoKSB9KTsgfQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgpIHsgbV9kYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9p
ZCBjbGVhcigpIHsgbV9kYXRhLmVtcHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVy
KFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEo
bV9yZXNwb25zZSwgbV9kYXRhLT5jb3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIo
UmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YSht
X3Jlc3BvbnNlLCBtX2RhdGEuY29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgU3Vic3RpdHV0
ZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGRhdGEpCisgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVybCwgUmVz
b3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKQogICAgICAgICA6IG1fdXJsKFdURk1vdmUodXJsKSkKICAgICAgICAgLCBtX3Jlc3BvbnNl
KFdURk1vdmUocmVzcG9uc2UpKQogICAgICAgICAsIG1fZGF0YShXVEZNb3ZlKGRhdGEpKQpAQCAt
NTIsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAgICBS
ZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRh
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCA4OWYzYjBmMWRjMzlkNDBhNTYzODc4YWU1NWY3
NmM2NzBhNzE1MDkxLi4wMzZlZmQyMGU0OTYzMDBjZjhjOWU3ZTc5MDMxN2UwMWRlNWJhZjM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcApAQCAtNjA1LDcgKzYwNSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNo
ZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QoKQogICAgICAgICB9CiAgICAgfQogICAg
IAotICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21h
bmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9t
YW5pZmVzdFJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEo
KS5zaXplKCkpOworICAgIGF1dG8gbWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5p
ZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5
cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOwogICAgIGlmICghbWFuaWZlc3Qp
IHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNI
RSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBvbmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVz
dCB0byBmYWlsLgogICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpBcHBDYWNoZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0
aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0
aCBDQUNIRSBNQU5JRkVTVD8iX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggNjAzMjgxODg4Mzc1ZjQ0
YTYyNGIzZTNiM2FhZmUwNmEzNjg5MmVlNi4uNTE5NzhmNDEyMzg3NGRjNTY2MGVmZjQ3MDY1OTcw
N2Q0ZTVkODVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC0yNTUsMTAgKzI1NSw4IEBAIFVSTCBBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBhdGgpCiAKIHN0
YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7Ci0gICAgLy8gRklYTUU6IENsaWVudHMg
cHJvYmFibHkgZG8gbm90IG5lZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgLy8g
UmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2ls
bCBub3QgYmUgbW9kaWZpZWQuCiAgICAgaWYgKHJlc291cmNlLnBhdGgoKS5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkuY29weSgpOworICAgICAgICByZXR1cm4gcmVz
b3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CiB9CiAKQEAgLTI5MCw5
ICsyODgsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5
bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JgogICAgICAgICBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UqIHJlc291cmNlOwogICAgICAgICBpZiAoZ2V0QXBwbGljYXRpb25DYWNoZUZh
bGxiYWNrUmVzb3VyY2UocmVxdWVzdCwgcmVzb3VyY2UpKSB7CiAgICAgICAgICAgICByZXNwb25z
ZSA9IHJlc291cmNlLT5yZXNwb25zZSgpOwotICAgICAgICAgICAgLy8gRklYTUU6IENsaWVudHMg
cHJvYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAgICAg
ICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVm
ZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVkLgotICAgICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5k
YXRhKCkuY29weSgpOworICAgICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNv
bnRpZ3VvdXMoKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggNTJjZDE2NDAz
YTE3MzZhNzE4NjU2NzcyNDg2MTFlMDhmNjYzYjI5Zi4uYjk2MzU2ZTc4NTYxMzg5NTZhZTRjMDU5
ODMxNzBjZGY3MjM2NzJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgQXBw
bGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOworY2xh
c3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIERvY3Vt
ZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0
dXRlRGF0YTsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3QgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmNwcAppbmRleCBmMWY3ZTE3NTYzMDE0NzFmMzA4NWRlZjhlNDFkYzVkMGNhOWQ2MDlhLi4yYmIz
ZmU3NWI5OTc3ZTgzMzIyYWUyNTgwZjcyMTJlZTViZjIxNjEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
LmNwcApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQg
dHlwZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkK
K1JlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6
Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
dW5zaWduZWQgdHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCF1cmwuaGFzRnJhZ21lbnRJZGVudGlm
aWVyKCkpOwogICAgIGlmICghYnVmZmVyKQpAQCAtNDAsNyArNDAsNyBAQCBSZWY8QXBwbGljYXRp
b25DYWNoZVJlc291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBV
UkwmIHVybCwgYwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZShVUkwgeyB1cmwgfSwgV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSwgdHlwZSwgYnVmZmVy
LnJlbGVhc2VOb25OdWxsKCksIHBhdGgpKTsKIH0KIAotQXBwbGljYXRpb25DYWNoZVJlc291cmNl
OjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBwYXRoKQorQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIHVuc2lnbmVk
IHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYg
cGF0aCkKICAgICA6IFN1YnN0aXR1dGVSZXNvdXJjZShXVEZNb3ZlKHVybCksIFdURk1vdmUocmVz
cG9uc2UpLCBXVEZNb3ZlKGRhdGEpKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3N0b3Jh
Z2VJRCgwKQpAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJgogCiB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVy
KQogewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0
aC5pc0VtcHR5KCkgPyBkYXRhKCkuY29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEo
cmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29udGlndW91cygpIDog
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZv
aWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5oCmluZGV4IDg4Yzk0ZGUxYTc3NDEwNDY5YzkzMWE0MmE0NzliMWU2Nzc3YTcw
MmUuLmMyODhlNzAzNmM2NzYyYWQ0ODc2YmE4ODE0NjlhNzVkMjIzN2UxYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgICAgICBGYWxsYmFjayA9IDEg
PDwgNAogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4g
Y3JlYXRlKGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCB0eXBl
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgY29uc3Qg
U3RyaW5nJiBwYXRoID0gU3RyaW5nKCkpOworICAgIHN0YXRpYyBSZWY8QXBwbGljYXRpb25DYWNo
ZVJlc291cmNlPiBjcmVhdGUoY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVu
c2lnbmVkIHR5cGUsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSwgY29uc3QgU3RyaW5nJiBwYXRoID0gU3RyaW5nKCkpOwogCiAgICAgdW5z
aWduZWQgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIHZvaWQgYWRkVHlwZSh1
bnNpZ25lZCB0eXBlKTsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgCiBw
cml2YXRlOgotICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiwgUmVzb3VyY2VSZXNw
b25zZSYmLCB1bnNpZ25lZCB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcm
IHBhdGgpOworICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiwgUmVzb3VyY2VSZXNw
b25zZSYmLCB1bnNpZ25lZCB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgU3RyaW5nJiBwYXRoKTsKIAogICAgIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFjNTA4NDdh
NmU4OTUxNzg5ZTNiM2ZiYWZkYTg1MTg2NjI5MGVlYjAuLjdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4
Yzk3YjhiNTA3NGM3MTI5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0xMDEsNyArMTAxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJl
c3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLAogCiB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS0+ZGF0YSgpLmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25D
YWNoZVJlc291cmNlLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBS
ZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcAppbmRleCAxYjMzYWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUyMGJkMzBlNjM2
NTk1Li44Y2YwNWNjZTE4ODAxMjhkZTU5YmU3MGE5OTgzNmY1YTc0NWI2ZDcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAKQEAgLTc4Myw3ICs3ODMsNiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAog
ICAgIGF1dG8gZGF0YVN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5T
RVJUIElOVE8gQ2FjaGVSZXNvdXJjZURhdGEgKGRhdGEsIHBhdGgpIFZBTFVFUyAoPywgPykiX3Mp
OwogICAgIGlmICghZGF0YVN0YXRlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAog
CiAgICAgU3RyaW5nIGZ1bGxQYXRoOwogICAgIGlmICghcmVzb3VyY2UtPnBhdGgoKS5pc0VtcHR5
KCkpCkBAIC04MTUsNyArODE0LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3Rv
cmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAg
ZGF0YVN0YXRlbWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
aWYgKHJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+
YmluZEJsb2IoMSwgcmVzb3VyY2UtPmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50
LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwog
ICAgIH0KICAgICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsK
QEAgLTg3MywxMiArODcyLDEyIEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3Jl
KEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgCiAgICAg
aWYgKCFleGVjdXRlU3RhdGVtZW50KGVudHJ5U3RhdGVtZW50LnZhbHVlKCkpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICAvLyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5IHdyaXRlIHRo
ZSByZXNvdXJjZSBkYXRhIHRvIGEgZmlsZT8gSWYgc28sCiAgICAgLy8gcmVsZWFzZSB0aGUgcmVz
b3VyY2UncyBkYXRhIGFuZCBmcmVlIHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50CiAgICAg
Ly8gb2YgbWVtb3J5OgogICAgIGlmICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXNv
dXJjZS0+ZGF0YSgpLmNsZWFyKCk7CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwogCiAgICAg
cmVzb3VyY2UtPnNldFN0b3JhZ2VJRChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTEyNzMsNyArMTI3Miw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnNob3VsZFN0
b3JlUmVzb3VyY2VBc0ZsYXRGaWxlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvCiAgICAgcmV0dXJuIHN0
YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgImF1ZGlvLyIpIHx8IHN0YXJ0
c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgInZpZGVvLyIpOwogfQogICAgIAot
Ym9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJl
Y3RvcnkoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pCitib29sIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pCiB7CiAgICAgU3RyaW5nIGZ1bGxQYXRoOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuaAppbmRleCA5YTk1MzAwODc2NmE4ODg1NTYxYjM0ODg4OWI4Y2VkYTJi
MmViMzM4Li40MTAyYTE4MDhiNDU1NTdiNjQ1ZTM2ZTdlNjgxZmM0YzZkMjA3Y2UyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7
CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBTdG9yYWdl
SURKb3VybmFsOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSA6IHB1YmxpYyBSZWZD
b3VudGVkPEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlPiB7CkBAIC0xMjIsNyArMTIyLDcgQEAgcHJp
dmF0ZToKICAgICBib29sIGVuc3VyZU9yaWdpblJlY29yZChjb25zdCBTZWN1cml0eU9yaWdpbiop
OwogICAgIHN0YXRpYyBib29sIHNob3VsZFN0b3JlUmVzb3VyY2VBc0ZsYXRGaWxlKEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZSopOwogICAgIHZvaWQgZGVsZXRlVGFibGVzKCk7Ci0gICAgYm9vbCB3
cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBvdXRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlRXh0
ZW5zaW9uKTsKKyAgICBib29sIHdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBvdXRG
aWxlbmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKTsKIAogICAgIHZvaWQgbG9hZE1h
bmlmZXN0SG9zdEhhc2hlcygpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCmluZGV4IDZkZTgwYzEwYWM3ZDI1Y2YzNDY5ZjZkZWYw
ZmFmNzI0MWY1OTY0MjguLjRlZjljZDY2YmQwODhiNzRjMDQ2YzA2OTBkMWU5ZDNlNWUzMzYwZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5j
cHAKQEAgLTQ2LDEyICs0NiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYg
UmVmUHRyPEFyY2hpdmU+IFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKGNvbnN0IFVSTCYsIFNoYXJl
ZEJ1ZmZlciYpOwordHlwZWRlZiBSZWZQdHI8QXJjaGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rp
b24oY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogdHlwZWRlZiBIYXNoTWFw
PFN0cmluZywgUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24qLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+IEFyY2hpdmVNSU1FVHlwZXNNYXA7CiAKIC8vIFRoZSBjcmVhdGUgZnVuY3Rpb25zIGluIHRo
ZSBhcmNoaXZlIGNsYXNzZXMgcmV0dXJuIFJlZlB0ciB0byBjb25jcmV0ZSBzdWJjbGFzc2VzCiAv
LyBvZiBBcmNoaXZlLiBUaGlzIGFkYXB0b3IgbWFrZXMgdGhlIGZ1bmN0aW9ucyBoYXZlIGEgdW5p
Zm9ybSByZXR1cm4gdHlwZS4KLXRlbXBsYXRlPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGlj
IFJlZlB0cjxBcmNoaXZlPiBhcmNoaXZlRmFjdG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBBcmNoaXZlQ2xhc3M+IHN0YXRp
YyBSZWZQdHI8QXJjaGl2ZT4gYXJjaGl2ZUZhY3RvcnlDcmVhdGUoY29uc3QgVVJMJiB1cmwsIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gQXJjaGl2ZUNsYXNz
OjpjcmVhdGUodXJsLCBidWZmZXIpOwogfQpAQCAtODMsNyArODMsNyBAQCBib29sIEFyY2hpdmVG
YWN0b3J5Ojppc0FyY2hpdmVNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJl
dHVybiAhbWltZVR5cGUuaXNFbXB0eSgpICYmIGFyY2hpdmVNSU1FVHlwZXMoKS5jb250YWlucyht
aW1lVHlwZSk7CiB9CiAKLVJlZlB0cjxBcmNoaXZlPiBBcmNoaXZlRmFjdG9yeTo6Y3JlYXRlKGNv
bnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
CitSZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsK
ICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKaW5kZXggMjFkMjM2NWNmOGQ5ZDkw
MWVmZTdhYWQ1NTJiZjNkYTQwNjlmZTQwZC4uNTU2NDUxNWM5ZTBkOWQwMzNiNzkwYzc0NzI4NWEy
NTg1M2FiZTAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJj
aGl2ZUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
RmFjdG9yeS5oCkBAIC0zNCwxMiArMzQsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBBcmNoaXZlRmFjdG9yeSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNBcmNoaXZlTUlN
RVR5cGUoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBjcmVhdGUo
Y29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsK
KyAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKICAgICBzdGF0aWMg
dm9pZCByZWdpc3Rlcktub3duQXJjaGl2ZU1JTUVUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKaW5kZXggZmMyMGRhM2RhMDMyY2JlZjc0ZjJl
OWM4NDI4YWNiNGVlMzdiZWYyMy4uMDczODM5NGE4Mjg3MTRhYTBiOTBlZTc1MDc5ZDQ4NmY1YjBl
ODY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVz
b3VyY2UuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5s
aW5lIEFyY2hpdmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYg
ZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCitpbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3Vy
Y2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBT
dHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAg
OiBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMIHsgdXJsIH0sIFJlc291cmNlUmVzcG9uc2UgeyByZXNw
b25zZSB9LCBXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICAs
IG1fdGV4dEVuY29kaW5nKHRleHRFbmNvZGluZykKQEAgLTQyLDcgKzQyLDcgQEAgaW5saW5lIEFy
Y2hpdmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
Y29uc3QgVVJMJiB1cmwKIHsKIH0KIAotUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJl
c291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNv
bnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
K1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBm
cmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIGlmICgh
ZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01NCw3ICs1NCw3IEBAIFJlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgY29uCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXJjaGl2ZVJlc291cmNl
KGRhdGEucmVsZWFzZU5vbk51bGwoKSwgdXJsLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nLCBmcmFt
ZU5hbWUsIHJlc3BvbnNlKSk7CiB9CiAKLVJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewogICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShkYXRhKSwgdXJsLCByZXNwb25zZS5t
aW1lVHlwZSgpLCByZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCksIFN0cmluZygpLCByZXNwb25z
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZS5oCmluZGV4IDIwOWU5NzE3YWViMDkzNjBkYjM5MjdlNmVmYTFlNWJmMWMyYzk3Y2EuLjA1NDhl
ZjcyMWVmZDI3YzAwY2U5M2QxMjI3MGVjZWM0NmMwMmFmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oCkBAIC0zNCw4ICszNCw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXJjaGl2ZVJlc291cmNlIDogcHVibGljIFN1YnN0
aXR1dGVSZXNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IGNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLAorICAg
IHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLAogICAgICAgICBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsCiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmID0gUmVzb3Vy
Y2VSZXNwb25zZSgpKTsKIApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91
bGRJZ25vcmVXaGVuVW5hcmNoaXZpbmcoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZElnbm9yZVdo
ZW5VbmFyY2hpdmluZzsgfQogCiBwcml2YXRlOgotICAgIEFyY2hpdmVSZXNvdXJjZShSZWY8U2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKKyAgICBBcmNoaXZlUmVzb3VyY2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwogCiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgU3RyaW5nIG1fdGV4dEVu
Y29kaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmNwcAppbmRleCBkZTdkYWRkZGFjMjIxMmY2ZDVlMGNjMDkxZDRlNDE2Nzdh
M2YwMTVkLi43MTE1MGNiZGQ4OTY5ZTZhZjAyODY4NGI2YmY2Y2JjMGE1MGIyZmM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZl
LmNwcApAQCAtOTAsNyArOTAsNyBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIFJl
c291cmNlIGRhdGEgY2FuIGJlIGVtcHR5LCBidXQgbXVzdCBiZSByZXByZXNlbnRlZCBieSBhbiBl
bXB0eSBDRkRhdGFSZWYKICAgICBhdXRvJiBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKIAotICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2
ZVJlc291cmNlRGF0YUtleSwgZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CisgICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3Vy
Y2VEYXRhS2V5LCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsK
IAogICAgIC8vIFJlc291cmNlIFVSTCBjYW5ub3QgYmUgbnVsbAogICAgIGlmIChhdXRvIGNmVVJM
ID0gcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpCkBAIC0xMTcsOSAr
MTE3LDkgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAvLyBEb24ndCBpbmNsdWRlIHRo
ZSByZXNvdXJjZSByZXNwb25zZSBmb3IgdGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFp
blJlc291cmNlKSB7CiAgICAgICAgIGlmIChhdXRvIHJlc291cmNlUmVzcG9uc2VEYXRhID0gY3Jl
YXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24ocmVzb3VyY2UtPnJlc3BvbnNlKCkpKQotICAg
ICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lX
ZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkp
OyAgICAKKyAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQo
KSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VE
YXRhLmdldCgpKTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gcHJvcGVydHlMaXN0OwogfQog
CkBAIC0yMTUsMTMgKzIxNSwxMyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGVSZXNvdXJjZShDRkRpY3Rpb25hcnlSZWYgZGljdGlvbgogICAgICAgICAg
ICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIGRh
dGEgaXMgbm90IG9mIHR5cGUgQ0ZEYXRhLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2Ui
KTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAg
ICAgICAgIGF1dG8gcmVzb3VyY2VSZXNwb25zZVZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmlu
Z1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJl
c291cmNlUmVzcG9uc2VWZXJzaW9uS2V5KSk7CiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3BvbnNl
VmVyc2lvbiAmJiBDRkdldFR5cGVJRChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbikgIT0gQ0ZTdHJp
bmdHZXRUeXBlSUQoKSkgewogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJj
aGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIHZlcnNpb24gaXMgbm90IG9mIHR5cGUgQ0ZTdHJpbmcs
IGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVS
ZXNvdXJjZVJlc3BvbnNlRnJvbVByb3BlcnR5TGlzdERhdGEocmVzb3VyY2VSZXNwb25zZURhdGEs
IHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKTsKICAgICB9CiAKQEAgLTI0OCwyMyArMjQ4LDIzIEBA
IFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoUmVmPEFyY2hp
dmVSZXNvdXJjZT4mJiBtYWluUmVzb3VyCiAgICAgcmV0dXJuIGFyY2hpdmU7CiB9CiAKLVJlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVy
JiBkYXRhKQorUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIHJldHVybiBjcmVhdGUoVVJM
KCksIGRhdGEpOwogfQogCi1SZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNo
aXZlIC0gQ3JlYXRpbmcgZnJvbSByYXcgZGF0YSIpOwotICAgIAorCiAgICAgUmVmPExlZ2FjeVdl
YkFyY2hpdmU+IGFyY2hpdmUgPSBjcmVhdGUoKTsKLSAgICAgICAgCi0gICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5jcmVhdGVDRkRhdGEoKTsKKworICAgIFJldGFpblB0cjxD
RkRhdGFSZWY+IGNmRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7
CiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAKKwog
ICAgIENGRXJyb3JSZWYgZXJyb3IgPSBudWxscHRyOwotICAgIAorCiAgICAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gcGxpc3QgPSBhZG9wdENGKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJl
Zj4oQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YSgwLCBjZkRhdGEuZ2V0KCksIGtDRlByb3Bl
cnR5TGlzdEltbXV0YWJsZSwgMCwgJmVycm9yKSkpOwogICAgIGlmICghcGxpc3QpIHsKICNpZm5k
ZWYgTkRFQlVHCkBAIC0yNzYsMTIgKzI3NiwxMiBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YQog
ICAgICAgICAgICAgQ0ZSZWxlYXNlKGVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQotICAgIAorCiAgICAgaWYgKENGR2V0VHlwZUlEKHBsaXN0LmdldCgpKSAhPSBDRkRpY3Rp
b25hcnlHZXRUeXBlSUQoKSkgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNo
aXZlIC0gQXJjaGl2ZSBwcm9wZXJ0eSBsaXN0IGlzIG5vdCB0aGUgZXhwZWN0ZWQgQ0ZEaWN0aW9u
YXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQotICAgIAorCiAgICAgaWYgKCFhcmNoaXZlLT5leHRyYWN0KHBsaXN0LmdldCgp
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI5NSw3ICsyOTUsNyBAQCBib29sIExl
Z2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAg
ICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBOdWxsIHJvb3QgQ0ZEaWN0aW9u
YXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KLSAgICAKKwogICAgIENGRGljdGlvbmFyeVJlZiBtYWluUmVzb3VyY2VEaWN0ID0g
c3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9u
YXJ5LCBMZWdhY3lXZWJBcmNoaXZlTWFpblJlc291cmNlS2V5KSk7CiAgICAgaWYgKCFtYWluUmVz
b3VyY2VEaWN0KSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBO
byBtYWluIHJlc291cmNlIGluIGFyY2hpdmUsIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIp
OwpAQCAtMzMzLDcgKzMzMyw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRp
Y3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJM
ZWdhY3lXZWJBcmNoaXZlIC0gU3VicmVzb3VyY2UgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFy
eSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChh
dXRvIHN1YnJlc291cmNlID0gY3JlYXRlUmVzb3VyY2Uoc3VicmVzb3VyY2VEaWN0KSkKICAgICAg
ICAgICAgICAgICBhZGRTdWJyZXNvdXJjZShzdWJyZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsK
ICAgICAgICAgfQpAQCAtMzUzLDcgKzM1Myw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0
cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJj
aGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3ViZnJhbWUgYXJyYXkgaXMgbm90IGV4cGVjdGVk
IENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAg
ICAgICAgIGF1dG8gc3ViZnJhbWVBcmNoaXZlID0gY3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAo
c3ViZnJhbWVBcmNoaXZlLT5leHRyYWN0KHN1YmZyYW1lRGljdCkpCiAgICAgICAgICAgICAgICAg
YWRkU3ViZnJhbWVBcmNoaXZlKFdURk1vdmUoc3ViZnJhbWVBcmNoaXZlKSk7CkBAIC0zNjEsNyAr
MzYxLDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBk
aWN0aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hp
dmUgLSBJbnZhbGlkIHN1YmZyYW1lIGFyY2hpdmUgc2tpcHBlZCIpOwogICAgICAgICB9CiAgICAg
fQotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTUwNiw3ICs1MDYsNyBAQCBSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgbWFya3VwU3RyaW5nLCBGcgogewogICAgIGF1dG8mIHJlc3BvbnNlID0gZnJhbWUubG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKTsKICAgICBVUkwgcmVzcG9uc2VVUkwgPSBy
ZXNwb25zZS51cmwoKTsKLSAgICAKKwogICAgIC8vIGl0J3MgcG9zc2libGUgdG8gaGF2ZSBhIHJl
c3BvbnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81NDU0OTM1
PgogICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwoKSkKQEAgLTYwNSw3ICs2MDUsNyBAQCBSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlv
bihGcmFtZSogZnJhbWUpCiAKICAgICBpZiAoIWRvY3VtZW50LT5pc0ZyYW1lU2V0KCkpCiAgICAg
ICAgIHJldHVybiBhcmNoaXZlOwotICAgICAgICAKKwogICAgIC8vIFdyYXAgdGhlIGZyYW1lc2V0
IGRvY3VtZW50IGluIGFuIGlmcmFtZSBzbyBpdCBjYW4gYmUgcGFzdGVkIGludG8KICAgICAvLyBh
bm90aGVyIGRvY3VtZW50ICh3aGljaCB3aWxsIGhhdmUgYSBib2R5IG9yIGZyYW1lc2V0IG9mIGl0
cyBvd24pLiAKICAgICBTdHJpbmcgaWZyYW1lTWFya3VwID0gIjxpZnJhbWUgZnJhbWVib3JkZXI9
XCJub1wiIG1hcmdpbndpZHRoPVwiMFwiIG1hcmdpbmhlaWdodD1cIjBcIiB3aWR0aD1cIjk4JSVc
IiBoZWlnaHQ9XCI5OCUlXCIgc3JjPVwiIiArIGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpLT5yZXNwb25zZSgpLnVybCgpLnN0cmluZygpICsgIlwiPjwvaWZyYW1lPiI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKaW5k
ZXggZDA5ZWM5Zjc1YWJhMTM2YTg2MzM5ZWI0ZDg2YWJkODI3N2M0ZmYwNC4uNWEwN2IxMGI0YmU2
Zjg2MjAxMWE3ODJhN2RlZDIzNjc1OTI0MzYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaApAQCAtNDEsOCArNDEsOCBAQCBz
dHJ1Y3QgU2ltcGxlUmFuZ2U7CiBjbGFzcyBMZWdhY3lXZWJBcmNoaXZlIGZpbmFsIDogcHVibGlj
IEFyY2hpdmUgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TGVnYWN5
V2ViQXJjaGl2ZT4gY3JlYXRlKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxM
ZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgU2hh
cmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPExl
Z2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmIG1haW5SZXNvdXJj
ZSwgVmVjdG9yPFJlZjxBcmNoaXZlUmVzb3VyY2U+PiYmIHN1YnJlc291cmNlcywgVmVjdG9yPFJl
ZjxMZWdhY3lXZWJBcmNoaXZlPj4mJiBzdWJmcmFtZUFyY2hpdmVzKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShOb2RlJiwgRnVuY3Rp
b248Ym9vbChGcmFtZSYpPiYmIGZyYW1lRmlsdGVyID0geyB9KTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFtZSYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAK
aW5kZXggYWNmYmJiNzAyMDIyZDA2YWZlNjIwMDQwNDg3ZmQzNGQ5MjFkNzI3Yy4uZDAxMzlmODdh
MDZmOTY5NzhiNzQ3N2U5ZjQ5OTljMzRlYTlmODYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xMDYsNyArMTA2
LDcgQEAgUmVmPE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUoKQogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE1IVE1MQXJjaGl2ZSk7CiB9CiAKLVJlZlB0cjxNSFRNTEFyY2hpdmU+
IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGRhdGEp
CitSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVy
bCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBGb3Igc2VjdXJpdHkg
cmVhc29ucyB3ZSBvbmx5IGxvYWQgTUhUTUwgcGFnZXMgZnJvbSBsb2NhbCBVUkxzLgogICAgIGlm
ICghTGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCh1cmwu
cHJvdG9jb2woKS50b1N0cmluZygpKSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBSZWZQdHI8TUhUTUxB
cmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVy
JiBkYXRhKQogICAgIHJldHVybiBtYWluQXJjaGl2ZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4g
TUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQorUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFn
ZSkKIHsKICAgICBWZWN0b3I8UGFnZVNlcmlhbGl6ZXI6OlJlc291cmNlPiByZXNvdXJjZXM7CiAg
ICAgUGFnZVNlcmlhbGl6ZXIgcGFnZVNlcmlhbGl6ZXIocmVzb3VyY2VzKTsKQEAgLTE2Miw4ICsx
NjIsOCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRh
KFBhZ2UqIHBhZ2UpCiAgICAgLy8gV2UgdXNlIHV0ZjgoKSBiZWxvdyBpbnN0ZWFkIG9mIGFzY2lp
KCkgYXMgYXNjaWkoKSByZXBsYWNlcyBDUkxGcyB3aXRoID8/ICh3ZSBzdGlsbCBvbmx5IGhhdmUg
cHV0IEFTQ0lJIGNoYXJhY3RlcnMgaW4gaXQpLgogICAgIEFTU0VSVChzdHJpbmdCdWlsZGVyLnRv
U3RyaW5nKCkuaXNBbGxBU0NJSSgpKTsKICAgICBDU3RyaW5nIGFzY2lpU3RyaW5nID0gc3RyaW5n
QnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICBhdXRvIG1odG1sRGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgp
LCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtaHRtbERh
dGE7CisgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5n
Lmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKICAg
ICAgICAgc3RyaW5nQnVpbGRlci5jbGVhcigpOwpAQCAtMTc4LDE1ICsxNzgsMTUgQEAgUmVmPFNo
YXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQog
ICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiXHJcbkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rp
bmc6ICIsIGNvbnRlbnRFbmNvZGluZywgIlxyXG5Db250ZW50LUxvY2F0aW9uOiAiLCByZXNvdXJj
ZS51cmwuc3RyaW5nKCksICJcclxuXHJcbiIpOwogCiAgICAgICAgIGFzY2lpU3RyaW5nID0gc3Ry
aW5nQnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKLSAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQo
YXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIG1odG1s
RGF0YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAK
ICAgICAgICAgLy8gRklYTUU6IGlkZWFsbHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250ZW50IGFz
IGEgc3RyZWFtIHdpdGhvdXQgaGF2aW5nIHRvIGZldGNoIGl0IGFsbC4KICAgICAgICAgYXV0byog
ZGF0YSA9IHJlc291cmNlLmRhdGEtPmRhdGEoKTsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgg
PSByZXNvdXJjZS5kYXRhLT5zaXplKCk7CiAgICAgICAgIGlmICghc3RyY21wKGNvbnRlbnRFbmNv
ZGluZywgcXVvdGVkUHJpbnRhYmxlKSkgewogICAgICAgICAgICAgYXV0byBlbmNvZGVkRGF0YSA9
IHF1b3RlZFByaW50YWJsZUVuY29kZShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICAgICAgICAgIG1o
dG1sRGF0YS0+YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsK
LSAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICBt
aHRtbERhdGEuYXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsK
KyAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIEFTU0VSVCghc3RyY21wKGNvbnRlbnRFbmNvZGluZywgYmFzZTY0KSk7
CiAgICAgICAgICAgICAvLyBXZSBhcmUgbm90IHNwZWNpZnlpbmcgaW5zZXJ0TEZzID0gdHJ1ZSBi
ZWxvdyBhcyBpdCB3b3VsZCBjdXQgdGhlIGxpbmVzIHdpdGggTEZzIGFuZCBNSFRNTCByZXF1aXJl
cyBDUkxGcy4KQEAgLTE5NiwxNyArMTk2LDE3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJj
aGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgICAgIHNpemVfdCBl
bmNvZGVkRGF0YUxlbmd0aCA9IGVuY29kZWREYXRhLnNpemUoKTsKICAgICAgICAgICAgIGRvIHsK
ICAgICAgICAgICAgICAgICBzaXplX3QgbGluZUxlbmd0aCA9IHN0ZDo6bWluKGVuY29kZWREYXRh
TGVuZ3RoIC0gaW5kZXgsIG1heGltdW1MaW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBtaHRt
bERhdGEtPmFwcGVuZChlbmNvZGVkRGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7Ci0g
ICAgICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAg
ICAgICBtaHRtbERhdGEuYXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVu
Z3RoKTsKKyAgICAgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAg
ICAgICAgICAgICAgaW5kZXggKz0gbWF4aW11bUxpbmVMZW5ndGg7CiAgICAgICAgICAgICB9IHdo
aWxlIChpbmRleCA8IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfQogICAgIH0KIAogICAg
IGFzY2lpU3RyaW5nID0gbWFrZVN0cmluZygiLS0iLCBib3VuZGFyeSwgIi0tXHJcbiIpLnV0Zjgo
KTsKLSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5n
Lmxlbmd0aCgpKTsKKyAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNj
aWlTdHJpbmcubGVuZ3RoKCkpOwogCi0gICAgcmV0dXJuIG1odG1sRGF0YTsKKyAgICByZXR1cm4g
bWh0bWxEYXRhLnRha2UoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCAzZDJkYjdjOTYwMDJlYmU2ODRiMmJl
ZjhmMWVhOWUyZTk3OTRhNTg5Li4yZGZlODdlODJlN2E0ZGNlMGYzNDFjMzYxOTQzYzk5MDIwNWM4
ZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRN
TEFyY2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRN
TEFyY2hpdmUuaApAQCAtMzgsMTQgKzM4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgTUhUTUxQYXJzZXI7CiBjbGFzcyBQYWdlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTUhUTUxBcmNoaXZlIGZpbmFsIDogcHVi
bGljIEFyY2hpdmUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TUhUTUxBcmNoaXZlPiBjcmVh
dGUoKTsKLSAgICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYs
IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8TUhUTUxBcmNoaXZlPiBjcmVhdGUo
Y29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCi0gICAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKKyAgICBzdGF0aWMgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKIAogICAgIHZp
cnR1YWwgfk1IVE1MQXJjaGl2ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZjFiOTAxZGQwMjAzZGNhYzk0ZGY2
ZDBlYWU0Y2IyZDBiZGI4MDE1ZS4uNWVlOTE4Njg0YTA2ODk2ODNmNzFjMjY3ZjJkOTAxYTM3YTZm
ZWI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MUGFyc2VyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgYm9vbCBza2lwTGluZXNVbnRp
bEJvdW5kYXJ5Rm91bmQoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGxpbmVSZWFkZXIsIGNvbgog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotTUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2VyKFNoYXJlZEJ1
ZmZlciogZGF0YSkKK01IVE1MUGFyc2VyOjpNSFRNTFBhcnNlcihGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBkYXRhKQogICAgIDogbV9saW5lUmVhZGVyKGRhdGEsICJcclxuIikKIHsKIH0KQEAgLTE0
MCw3ICsxNDAsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VO
ZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogewogICAgIEFTU0VSVChlbmRP
ZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCkgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHko
KSk7CiAKLSAgICBhdXRvIGNvbnRlbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgY29udGVudDsKICAgICBjb25zdCBib29sIGNoZWNrQm91bmRhcnkg
PSAhZW5kT2ZQYXJ0Qm91bmRhcnkuaXNFbXB0eSgpOwogICAgIGJvb2wgZW5kT2ZQYXJ0UmVhY2hl
ZCA9IGZhbHNlOwogICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkg
PT0gTUlNRUhlYWRlcjo6QmluYXJ5KSB7CkBAIC0xNTQsNyArMTU0LDcgQEAgUmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYg
bWltZUhlYWRlciwKICAgICAgICAgICAgIExPR19FUlJPUigiQmluYXJ5IGNvbnRlbnRzIHJlcXVp
cmVzIGVuZCBvZiBwYXJ0Iik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
fQotICAgICAgICBjb250ZW50LT5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CisgICAgICAgIGNvbnRl
bnQuYXBwZW5kKFdURk1vdmUocGFydCkpOwogICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJh
dG9yKCJcclxuIik7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBuZXh0Q2hhcnM7CiAgICAgICAg
IGlmIChtX2xpbmVSZWFkZXIucGVlayhuZXh0Q2hhcnMsIDIpICE9IDIpIHsKQEAgLTE4MCwxMCAr
MTgwLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQ
YXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgdXNlIGxpbmUudXRm
OCgpIGFuZCBub3QgbGluZS5hc2NpaSgpIGFzIGFzY2lpIHR1cm5zIHNwZWNpYWwgY2hhcmFjdGVy
cyAoc3VjaCBhcyB0YWIsIGxpbmUtZmVlZC4uLikgaW50byAnPycuCi0gICAgICAgICAgICBjb250
ZW50LT5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKKyAgICAgICAg
ICAgIGNvbnRlbnQuYXBwZW5kKGxpbmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7CiAg
ICAgICAgICAgICBpZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1J
TUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBsaW5l
IHJlYWRlciByZW1vdmVzIHRoZSBcclxuLCBidXQgd2UgbmVlZCB0aGVtIGZvciB0aGUgY29udGVu
dCBpbiB0aGlzIGNhc2UgYXMgdGhlIFF1b3RlZFByaW50YWJsZSBkZWNvZGVyIGV4cGVjdHMgQ1It
TEYgdGVybWluYXRlZCBsaW5lcy4KLSAgICAgICAgICAgICAgICBjb250ZW50LT5hcHBlbmQoIlxy
XG4iLCAyKTsKKyAgICAgICAgICAgICAgICBjb250ZW50LmFwcGVuZCgiXHJcbiIsIDIpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTkzLDkgKzE5MywxMCBAQCBSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVh
ZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAg
IGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBjb250ZW50LnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMo
KTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSkgewog
ICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8gZGVjb2RlZERhdGEg
PSBiYXNlNjREZWNvZGUoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAg
ICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRh
KCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAgICAgICBpZiAoIWRlY29kZWREYXRh
KSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgYmFzZTY0IGNvbnRlbnQgZm9yIE1I
VE1MIHBhcnQuIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNCwxMSArMjA1
LDExIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0
KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBjYXNlIE1JTUVIZWFkZXI6OlF1b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3Rl
ZFByaW50YWJsZURlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAg
ICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEo
KSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
TUlNRUhlYWRlcjo6U2V2ZW5CaXQ6CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCaW5hcnk6Ci0gICAg
ICAgIGRhdGEuYXBwZW5kKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAg
ICAgZGF0YS5hcHBlbmQoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRl
bnQtPnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIExPR19F
UlJPUigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oCmluZGV4IDFlOWJkNGQ3
NzY3ZWUzOTFhMDAyMmY3MTc0OGYwMGI4NWM4MWIyNWYuLjBkNjA0MzQzZjNkN2FkMTc4Y2MyMjAw
M2M5NzljMjJlNTBhM2I5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxQYXJzZXIuaApAQCAtNDIsMTEgKzQyLDExIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKIGNsYXNzIE1IVE1MQXJjaGl2ZTsKIGNsYXNz
IE1JTUVIZWFkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBNSFRNTFBhcnNlciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTUhU
TUxQYXJzZXIoU2hhcmVkQnVmZmVyKik7CisgICAgZXhwbGljaXQgTUhUTUxQYXJzZXIoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciopOwogCiAgICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gcGFyc2VBcmNo
aXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRB
cHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA2NTI1MWViNjgyMDdmYzQ5YTk1Y2MxYzNl
YTFkNGE5ZWJmZDkyNzA0Li5lMWE4NzUxNmJkOGQ1YjhmMjRhZjZhNWI5OTBlMjE4NTM0N2U3NTkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MCwxMiArNDAsMTYgQEAgQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVl
c3QmJiByZXEKIHsKIH0KIAotdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hM
b2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQordm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEg
PyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0ID0gbV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAg
aWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0gbV9k
ZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVk
U2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwg
bWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCmluZGV4IDA3ZjJhMDc5YzU2NGVlZmZiNjk3YzM3
Yzc4NTY1ZTFlYThkOWFlNWUuLjM3OThhOWI0ZDkwMTNjZmRlYTZmNTZmYmRmMDAxNWFmODk0NzU3
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpv
cHRpb25hbDxzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdD4gcHJvY2Vzcyhjb25zdCBVUkwmIG1h
bmlmZXN0VVJMLCBjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBEb2N1bWVudCogPSBudWxscHRyKTsK
IAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBv
dmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNv
ZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLnB0cigpOyB9CiAgICAgdm9p
ZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2Rp
bmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1OWZhN2M2MmZjNjFlNjM3NDJmNzRjYzZh
MGJjZjAwMGJhOWIxNzZmLi4zOGEyZTE3ZjBkMDZjOGFjOThkZTI0YjFlNTJiOGU2MGU5MjQxMjBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxl
U2hlZXQuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNo
ZWV0OjpzaGVldFRleHQoTUlNRVR5cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQsCiAgICAg
ICAgIHJldHVybiBtX2RlY29kZWRTaGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNoZSB0aGUg
ZGVjb2RlZCB0ZXh0LCByZWdlbmVyYXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2UgcXVpdGUg
YSBiaXQgb2YgbWVtb3J5Ci0gICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9k
YXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXpl
KCkpOwogfQogCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25z
dCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCkBAIC05NywxMyArOTcsMTcgQEAgdm9pZCBDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQubV9wYXJzZWRTdHls
ZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
Cit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQog
ewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNp
emUoKSA6IDApOwotICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2Rp
bmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCi0g
ICAgaWYgKGRhdGEpCi0gICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVj
b2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7
CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVu
Y29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBm
aW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmlu
ZyBjaGVja05vdGlmeSgpCisgICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7
CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3Mp
OwogICAgIC8vIENsZWFyIHRoZSBkZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkgdG8gYmUg
bmVlZGVkIGltbWVkaWF0ZWx5IGFnYWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5k
ZXggNWQ0ZGQzZGM3ZTM1M2VlM2NiMmZiOTNmMjc4ZDI1NzliOGQ5YTdhMS4uZTY1NWM2OWUzZWRi
NjA5NTAyMzljY2U0NTQ1ZjA5NmI1MjY1NmRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJp
bmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVy
KiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdl
dCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAg
ICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0Qm9keURh
dGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggOGMyYmMyYTM0MWM4MjM1MWQ3ZjY2MjViY2Uy
NzFkMDc3NjMzYWU5NC4uZDJiYzI4MjE0NzljNTlhMjMyM2U0ZjY1Y2Q5NGI2M2I0MjM3MzY0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjQsMTAg
KzY0LDE1IEBAIHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xp
ZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRpY19jYXN0PENhY2hlZEZvbnRDbGllbnQmPihjbGll
bnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
Cit2b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1f
ZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5z
aXplKCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtl
Q29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2Rl
ZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5
KG1ldHJpY3MpOwogfQpAQCAtMTA1LDcgKzExMCw3IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJl
Q3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQogCiBzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hh
cmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3
cmFwcGluZykKIHsKLSAgICBSZWZQdHIgYnVmZmVyIHsgJmJ5dGVzIH07CisgICAgUmVmUHRyIGJ1
ZmZlciA9IHsgJmJ5dGVzIH07CiAgICAgd3JhcHBpbmcgPSAhY29udmVydFdPRkZUb1NmbnRJZk5l
Y2Vzc2FyeShidWZmZXIpOwogICAgIHJldHVybiBidWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKCpidWZmZXIsIGl0ZW1JbkNvbGxlY3Rpb24pIDogbnVsbHB0cjsKIH0KQEAgLTEz
NSw3ICsxNDAsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpCiB7CiAgICAgaWYgKGlzTG9hZGluZygpKQogICAgICAgICByZXR1cm47Ci0g
ICAgCisKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRGb250Q2xpZW50PiB3
YWxrZXIobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkRm9udENsaWVudCogY2xpZW50ID0g
d2Fsa2VyLm5leHQoKSkKICAgICAgICAgY2xpZW50LT5mb250TG9hZGVkKCp0aGlzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCmluZGV4IGNlYmRjNTU3ZjEzZmM0YWZk
ODI3NTI5Nzc0YWZkOGVjNGJlZjQyMTAuLjEzNDY2Y2M5OWQwZDE5Y2JmM2Q4ZWYzZGZiZDk2ZjM0
ZDBmODU0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAt
NzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQg
c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQmKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5n
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYjE1OWYy
OWVlOTBmZTNkZTAxOWMxMTQ5YmRhNjk0ZTBlNmY2YjU0Mi4uOTQ2Mjc5NTIwZDBkYTQ0NjIyYzZh
Y2QzNjY2MjI4ODEwNWU4MTk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwCkBAIC00NjgsOSArNDY4LDkgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6
OmNsZWFySW1hZ2UoKQogICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lk
IENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRhdGEpCit2
b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRh
dGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7
CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJ
bWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9u
b3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkg
PCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRC
dWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29u
dmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNv
bnN0CiB7Ci0gICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAg
ICByZXR1cm4gZGF0YTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIGlmICghaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1h
a2VDb250aWd1b3VzKCk7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9E
RUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFn
ZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgp
KTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29u
dmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZE
YXRhKCkpLmdldCgpKTsKICNlbHNlCiAgICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxkIGhh
dmUgYmVlbiBjYW5jZWxlZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVydGlu
ZyBQb3N0U2NyaXB0IHRvIFBERi4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU1Myw3
ICs1NTUsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRh
KGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ2Fj
aGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZElt
YWdlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkJ1ZmZlckRhdGEpOwogICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOwpAQCAtNTY3LDcg
KzU2OSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEs
IGxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hl
ZEltYWdlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBjb252
ZXJ0ZWREYXRhSWZOZWVkZWQoZGF0YSk7CiAgICAgaWYgKG1fZGF0YSkgewpAQCAtNTkzLDcgKzU5
NSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1lCiB2b2lkIENhY2hlZEltYWdlOjpkaWRSZXBs
YWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKQogewogICAgIGlmIChtX2ltYWdlKSB7Ci0gICAgICAg
IC8vIExldCB0aGUgSW1hZ2Uga25vdyB0aGF0IHRoZSBTaGFyZWRCdWZmZXIgaGFzIGJlZW4gcmVq
aWdnZWQsIHNvIGl0IGNhbiBsZXQgZ28gb2YgYW55IHJlZmVyZW5jZXMgdG8gdGhlIGhlYXAtYWxs
b2NhdGVkIHJlc291cmNlIGJ1ZmZlci4KKyAgICAgICAgLy8gTGV0IHRoZSBJbWFnZSBrbm93IHRo
YXQgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgaGFzIGJlZW4gcmVqaWdnZWQsIHNvIGl0IGNh
biBsZXQgZ28gb2YgYW55IHJlZmVyZW5jZXMgdG8gdGhlIGhlYXAtYWxsb2NhdGVkIHJlc291cmNl
IGJ1ZmZlci4KICAgICAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMjQyNzU2MTcpOiBJdCB3
b3VsZCBiZSBiZXR0ZXIgaWYgd2UgY291bGQgc29tZWhvdyB0ZWxsIHRoZSBJbWFnZSdzIGRlY29k
ZXIgdG8gc3dhcCBpbiB0aGUgbmV3IGNvbnRlbnRzIHdpdGhvdXQgZGVzdHJveWluZyBhbnl0aGlu
Zy4KICAgICAgICAgbV9pbWFnZS0+ZGVzdHJveURlY29kZWREYXRhKHRydWUpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggZTM4OTYyYTBkY2Fm
YmNlZjYzMWMxNGU2M2ZlYjg1YmEwNTUyMDNmNC4uMDgzZjkyZjg4ODI3NmVlZGE4OTkxMjAzMWQy
NDQ5YTk2OGUyNjVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmgKQEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZVdpZHRo
KCk7IH0KICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBt
X2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KIAotICAgIHZvaWQgdXBk
YXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIGVudW0gU2l6ZVR5
cGUgewogICAgICAgICBVc2VkU2l6ZSwKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZERl
ZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29u
dmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAg
ICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVk
KTsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKSBvdmVycmlkZTsKQEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hh
bmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVk
dWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZl
ckludGVybmFsKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hh
cmVkQnVmZmVyQ29udGVudHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggOTJiMDgzNjk3NTg4ODQ0MDkx
OTM5ZTNlZWQ3OWQ3N2YxODM5NTYyZi4uODk1ZGIxMTU4YjZiOGM4ZmJmN2IxMGI0M2I2MTRlZGE5
NjAyMWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuY3BwCkBAIC00OCw3ICs0OCw3IEBAIENhY2hlZFJhd1Jlc291cmNlOjpDYWNoZWRS
YXdSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUeXBlIHR5cGUsCiAg
ICAgQVNTRVJUKGlzTWFpbk9yTWVkaWFPckljb25PclJhd1Jlc291cmNlKCkpOwogfQogCi1zdGQ6
Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3Vs
YXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAor
c3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNh
bGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGRhdGEpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHByZXZpb3VzRGF0YUxlbmd0aCA9IGVuY29kZWRT
aXplKCk7CiAgICAgaWYgKCFkYXRhIHx8IGRhdGEtPnNpemUoKSA8PSBwcmV2aW91c0RhdGFMZW5n
dGgpCkBAIC01Niw3ICs1Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+
IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDCiAgICAgcmV0dXJu
IGRhdGEtPmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKICAgICAvLyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5l
c3RlZCBydW5sb29wcy4gV2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExv
YWRpbmcuCiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC02NCw3ICs2NCw3
IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRh
dGEpCiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1f
ZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6
ZSA9IGVuY29kZWRTaXplKCk7CiAgICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNEYXRh
U2l6ZSkgewpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNv
dXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpIHsKICAg
ICAgICAgLy8gV2UgbWF5IGdldCBoZXJlIHN5bmNocm9ub3VzbHkgZnJvbSB1cGRhdGVCdWZmZXIo
KSBpZiB0aGUgY2FsbGJhY2sgdGhlcmUgZW5kcyB1cCBzcGlubmluZyBhIHJ1bmxvb3AuCkBAIC0x
MDcsMTIgKzEwNywxNCBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERh
dGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJp
bmdQb2xpY3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5n
UG9saWN5OjpCdWZmZXJEYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAg
aWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmso
ZGF0YSkpIHsKLSAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAg
ICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0
YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGRh
dGEpIHsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAg
ICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERh
dGFDaHVuayhkYXRhKSkgeworICAgICAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNp
emUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNy
ZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOworICAgICAgICAg
ICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAg
fQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDg0ZTBkODQ0ZDU3MTA5OTUzYWU2YmZmNjU1NjU5
OTUzZTI4YmE2OWIuLmE3ODY1ZjhhZDE3OGFlZmIzMjIwYTU2ZGNmZjE5NTk5M2NmOTVhZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBA
IC01MSw5ICs1MSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGRpZEFkZENsaWVu
dChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNo
YXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1
c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBh
bGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc3dpdGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJjZSgpIG92ZXJyaWRlOwog
ICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9hbGxvd0VuY29kZWREYXRhUmVwbGFjZW1lbnQ7IH0KIAotICAgIHN0ZDo6b3B0aW9uYWw8
U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0
IFNoYXJlZEJ1ZmZlciopIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0
YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqKSBjb25zdDsKICAgICB2b2lkIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICAKICNpZiBVU0UoUVVJ
Q0tfTE9PSykKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVkaXJlY3RQ
YWlyLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1fcmVkaXJlY3RDaGFpbjsKIAogICAgIHN0cnVj
dCBEZWxheWVkRmluaXNoTG9hZGluZyB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8RGVsYXllZEZpbmlzaExvYWRpbmc+IG1fZGVs
YXllZEZpbmlzaExvYWRpbmc7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggM2FlOGJiNjhkMjVjZGRkMTgwMjA5MjJmNWVkYjI0ZDRi
OTEyMDAwMi4uYmY2OWU4MGU1NzZlMWEyODhmNmEwMTFmNTQ2MTQ2MzE1NTgwMWQyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zMzQs
NyArMzM0LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKCp0
aGlzLCBtZXRyaWNzKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNo
YXJlZEJ1ZmZlciYpCit2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3ko
KSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0KQEAgLTM0NCw3ICszNDQs
NyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNp
Z25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIHNl
dExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwpAQCAtOTI3LDggKzky
Nyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRC
dWZmZXImIG5ld0J1ZmZlcikKICAgICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZmZXIpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fZGF0YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEtPmFwcGVuZChuZXdC
dWZmZXIpOworICAgIG1fZGF0YSA9IFJlZiB7IG5ld0J1ZmZlciB9OwogICAgIGRpZFJlcGxhY2VT
aGFyZWRCdWZmZXJDb250ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3OGNhMjUxODEzZTZj
MDM1YmMyNzguLmM5ODJkZDY5MzdhMGJjMmJmMzhjNDI2MTI2ZmZlNmU3OGM3OTY0NzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC00OSw3ICs0
OSw3IEBAIGNsYXNzIENvb2tpZUphcjsKIGNsYXNzIE1lbW9yeUNhY2hlOwogY2xhc3MgTmV0d29y
a0xvYWRNZXRyaWNzOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7
CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCkBAIC0xMTIsOSArMTEyLDkgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2
aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAg
dmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkg
Y29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIo
U2hhcmVkQnVmZmVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hl
ZFJlc291cmNlOjpTdGF0dXMpOwogCiAgICAgdm9pZCBzZXRSZXNvdXJjZUVycm9yKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKSB7IG1fZXJyb3IgPSBlcnJvcjsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggN2RhMTQ4NTFh
NzA3ODRhYWJlOTgzOWI3MDZhMGIxYjMzMWYyYzgzOS4uZGI0MzE2MDdhZTU2MzgzMDM4MDBkZDI1
OWMxMDM0Y2QwOTBmY2ZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01MiwxMiArNTIsMTIgQEAgU3RyaW5nIENhY2hlZFNW
R0RvY3VtZW50OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2Rp
bmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2
b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAg
ICBpZiAoZGF0YSkgewogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBm
cmFtZSBiZWNhdXNlIHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0aGUgcGFyZW50IFVzZUVs
ZW1lbnQuCiAgICAgICAgIG1fZG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIs
IG1fc2V0dGluZ3MsIHJlc3BvbnNlKCkudXJsKCkpOwotICAgICAgICBtX2RvY3VtZW50LT5zZXRD
b250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpKTsKKyAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CiAg
ICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApp
bmRleCBlOGMxNWYzNjBmYzkxYWM4YjM0ZDM5NjI5NWM1M2QzYzdmMTQ3ZWFhLi40NDVlNGY5ZjQy
YzNjMjc0MDc5NzZhNjRlOTE1NDA3ZjhiNTM0ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3Ry
aW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVj
b2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVj
b2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJl
ZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXggYThlZjU3NmJiNjkzOTMzYTIyMzQ2
OTU1NTc1NmIzNjY3ZTQ4NjMyZS4uZDJjMWRlNDdlZmI3ODEzOThmNDQzOGI3Y2E0ZWEyNjBlMjIx
OTc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Zv
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNw
cApAQCAtODAsNyArODAsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKIAogICAgICAgICAgICAgU2NyaXB0RGlz
YWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUgZGlzYWJsZWRTY29wZTsKIAot
ICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRl
Y29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOworICAgICAgICAg
ICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZs
dXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwog
ICAgICAgICAgICAgc2F3RXJyb3IgPSBkZWNvZGVyLT5zYXdFcnJvcigpOwogICAgICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggNDdh
OWY1NzYwN2I5ODI4NGU4Zjc5ZTJjZGVjZTliZTQxOGYxN2I2NS4uYjY3Mzk4YjBlNGY1NmZlN2Fi
Y2IyNzRkMGUzNjg0MzAzNjM1MDg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk2LDEwICs5NiwxNSBAQCB1bnNpZ25lZCBDYWNoZWRTY3Jp
cHQ6OnNjcmlwdEhhc2goKQogICAgIHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2Fj
aGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmco
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUo
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEt
PnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAg
ICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hM
b2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmgKaW5kZXggOTI0Yjg0Y2EyZDg3MTZlMzQ2MDc3ZWVlYjVjYzM0YmNlZGU3
ZTIzZC4uODY1MWU2MzlhZDkwNjE3Mjg1NjFjMzI0YmZhN2FmNGNmOTdmNmQzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaApAQCAtNDcsNyArNDcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAg
U3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVj
b2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rl
ci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
OwogCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMx
Mjg4NjFlYzRmNWViNGNmNTBmMzIwODZiNWRlYjYxLi4wYzg0MjhiYjk5ZGI2ZGZiMTZhMzQ4MTM0
YzM4MjY4MzZjY2U1NDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmNwcApAQCAtNDAsMTAgKzQwLDEwIEBAIENhY2hlZFRleHRUcmFjazo6Q2Fj
aGVkVGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lv
bklECiB7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmlu
Z1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0
YSA9IGRhdGE7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBS
ZWZQdHI8U2hhcmVkQnVmZmVyPigpOwogICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5z
aXplKCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291
cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKQEAgLTUxLDEzICs1MSwxMyBAQCB2b2lkIENh
Y2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAg
ICBjbGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UoKnRoaXMpOwogfQog
Ci12b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkK
K3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7CiAgICAgQ2FjaGVk
UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6
OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCiB7CiAgICAgZG9VcGRhdGVCdWZmZXIoZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKaW5kZXggODVlMzk2MjA2NTEzMTYwNzAzNjUzZWIyMmM3
NzEzOGI5MTUwN2FkZC4uMDliNDMzOWEzN2I2NzNiMmFjNGZkYWUxNDZiMjliOTY0Nzc3ZmNlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaApAQCAt
MzUsMTAgKzM1LDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIG1heVRyeVJlcGxh
Y2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lk
IHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRv
VXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciopOworICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hl
ZXQuY3BwCmluZGV4IGUzZTJmNWU5NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3ODI2MTVkMzQwMGMuLmQy
ZWZmMmQyZDQwYzkyNzczODc1NmM0YThmMGNiYjkzNDNiZTEwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYxLDEy
ICs2MSwxNiBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25zdAog
ICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hl
ZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZp
bmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0
RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAg
ICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGVu
Y29kZWRTaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1h
a2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Cisg
ICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgp
LCBlbmNvZGVkU2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRy
OworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxz
ZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAppbmRleCA2ODQyYjY0NGY2MWNmOTBm
N2Y2MWIyZjdlYzVlMDA2NTRjZDEwY2NjLi5iZDIzMTIxNGYyZDIwYmEzOTY0NDYwMzY2ZTA0MWI5
NDEzNWFjNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVu
Y29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0
IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29k
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmlu
YWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3NoZWV0
OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCmluZGV4IDU1MjU2MWQ2
YzgxNmQzZDIwYmNmY2NiMmU2NTgzYjdkZTk0Yjk0YTIuLjY2YjkzNThlYzUzMTExNDg0ODIyYTdj
YzI0ZTdmM2E5OTE3MDY1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVn
YWN5UHJldmlld0xvYWRlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDcgKzM4LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291cmNl
TG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwog
CiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyIGZpbmFsIDogcHJpdmF0ZSBQcmV2aWV3Q29udmVy
dGVyQ2xpZW50LCBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00OCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBib29sIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAg
Ym9vbCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIGJvb2wgZGlk
UmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgYm9vbCBk
aWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBkaWRGYWlsKCk7CiAKQEAgLTYwLDE3ICs2Miwx
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZpbmlzaFVwZGF0aW5n
KFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbCB7IH07CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVy
RGlkRmFpbFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKICAgICB2b2lkIHByZXZp
ZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOwot
ICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXIm
LCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJE
aWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRp
bmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRp
ZEZhaWxDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKIAogICAgIC8vIFByZXZp
ZXdDb252ZXJ0ZXJQcm92aWRlcgotICAgIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZp
ZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgU2hhcmVkQnVmZmVyKik+JiYpIGZpbmFsOworICAgIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJj
ZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmKSBmaW5hbDsKICAgICB2b2lk
IHByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpIGZpbmFsOwogCiAgICAgUmVm
UHRyPFByZXZpZXdDb252ZXJ0ZXI+IG1fY29udmVydGVyOwogICAgIFJlZjxMZWdhY3lQcmV2aWV3
TG9hZGVyQ2xpZW50PiBtX2NsaWVudDsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX29yaWdpbmFs
RGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9vcmlnaW5hbERhdGE7
CiAgICAgV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4gbV9yZXNvdXJjZUxvYWRlcjsKICAgICBib29s
IG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9oYXNQcm9jZXNzZWRSZXNwb25zZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXggZDE4YjI1MmU5NzU2YzhjZTBj
OTViNjNlNzhkZDAwOTdlZjJhNTczNC4uNzQ4ZmVkYjhlYTQ4ZmFiYzgyNWZiNWI2NzcxNzQxNTIw
NWIzMWIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5tbQpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgUmVmPExlZ2FjeVByZXZpZXdMb2Fk
ZXJDbGllbnQ+IG1ha2VDbGllbnQoY29uc3QgUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgYwogICAg
IHJldHVybiBlbXB0eUNsaWVudCgpOwogfQogCi1ib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIExlZ2FjeVBy
ZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIGlmIChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVy
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQ
cmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdD
b252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3Nl
ZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsKKyAgICBtX29yaWdpbmFs
RGF0YS0+cmVzZXQoKTsKICAgICByZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0
UHJldmlld0NvbnZlcnRlcihXVEZNb3ZlKG1fY29udmVydGVyKSk7CiAgICAgYXV0byByZXNwb25z
ZSB7IGNvbnZlcnRlci5wcmV2aWV3UmVzcG9uc2UoKSB9OwogCkBAIC0xNDcsNyArMTQ3LDcgQEAg
dm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0
aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICB9KTsKIH0KIAotdm9pZCBMZWdhY3lQcmV2aWV3
TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJl
dmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBt
X3Jlc291cmNlTG9hZGVyLmdldCgpOwogICAgIGlmICghcmVzb3VyY2VMb2FkZXIpCkBAIC0yMjQs
MTAgKzIyNCwxMCBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVQYXNzd29yZEZv
clByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgYwogICAgIG1fY2xpZW50LT5kaWRS
ZXF1ZXN0UGFzc3dvcmQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIExl
Z2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVy
KFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTGVnYWN5UHJldmll
d0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0Nv
bnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlRfVU5V
U0VEKGNvbnZlcnRlciwgJmNvbnZlcnRlciA9PSBtX2NvbnZlcnRlcik7Ci0gICAgY29tcGxldGlv
bkhhbmRsZXIobV9vcmlnaW5hbERhdGEucHRyKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1f
b3JpZ2luYWxEYXRhLT5nZXQoKS5nZXQoKSk7CiB9CiAKIExlZ2FjeVByZXZpZXdMb2FkZXI6On5M
ZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwpAQCAtMjM1LDcgKzIzNSw3IEBAIExlZ2Fj
eVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwogTGVnYWN5
UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmlld0xvYWRlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVy
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IG1fY29udmVydGVyIHsg
UHJldmlld0NvbnZlcnRlcjo6Y3JlYXRlKHJlc3BvbnNlLCAqdGhpcykgfQogICAgICwgbV9jbGll
bnQgeyBtYWtlQ2xpZW50KGxvYWRlciwgbV9jb252ZXJ0ZXItPnByZXZpZXdGaWxlTmFtZSgpLCBt
X2NvbnZlcnRlci0+cHJldmlld1VUSSgpKSB9Ci0gICAgLCBtX29yaWdpbmFsRGF0YSB7IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9vcmlnaW5hbERhdGEgeyBtYWtlVW5pcXVlUmVm
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9yZXNvdXJjZUxvYWRlciB7IGxvYWRl
ciB9CiAgICAgLCBtX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmcgeyBsb2FkZXIuZnJh
bWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nUXVpY2tMb29r
UHJldmlldygpIH0KIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IDgyMzc0ZTcy
NjJjNzBlYTlkZmU0ZDY0ZjI1YWIxMzVhYTYwMzMzY2YuLmVhNjE1ZGZmNGRkMGVkNTE0YmZmNjQ0
MjY0N2VjNDYyMGY2MzIyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9y
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMzgs
MTIgKzM4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBjbGFzcyBET01QYXN0ZUFj
Y2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9j
dW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEtleWJv
YXJkRXZlbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsKIGNsYXNzIFRleHRDaGVj
a2VyQ2xpZW50OwogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKQEAgLTc4LDcgKzc5LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShjb25zdCBT
aW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBsZVJhbmdlJikgPSAwOwogCiAjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29u
dGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogcHJlZmVycmVkRmlsZU5hbWUgKi8sIFJlZjxT
aGFyZWRCdWZmZXI+JiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJ
ZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAv
KiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBwcmVmZXJyZWRGaWxlTmFtZSAqLywg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLywg
Y29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBmaWxlUGF0
aCAqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFNl
cmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXggMWExMjEwZmE4MzM3Y2Q5
NTIwZjRlMDExYTkwNzM2NzU0ZGU1MThmMS4uYWM1M2NiMTRiZjAwZTUxNjQ3YzllYzkxMTA5OGJl
YTAzNjE1MTEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXpl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTI3
Myw3ICsyNzMsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKENh
Y2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyRWxlbWVudCogaW1hZwogICAgIGlmICghaW1hZ2UgfHwg
aW1hZ2UtPmltYWdlKCkgPT0gJkltYWdlOjpudWxsSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+
aW1hZ2VGb3JSZW5kZXJlcihpbWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1h
Z2VGb3JSZW5kZXJlcihpbWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIGRhdGEgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogCkBAIC0yODIsNyArMjgy
LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFn
ZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgaW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUo
KSwgV1RGTW92ZShkYXRhKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdl
LT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIGRhdGEtPm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAg
bV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRh
UmVhZGVyLmNwcAppbmRleCA5NmFkMDgyNTQzZGQ1M2E4NzliZTUxYzZkOTIxZDdhZmZmNDJlOGUw
Li43NTgzNmI4NzkxNDNiNjBhN2YzNTE5NzAzMjA3YjZhZDNkOGQ0Zjg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIFNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRXhjZXB0aW9uT3I8U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCY+KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpCiB7Ci0gICAgCisKIH0KIAogU2hhcmVEYXRhUmVhZGVyOjp+U2hhcmVEYXRhUmVh
ZGVyKCkKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIFNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogICAgICAgICBj
YW5jZWwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGF1dG8gYXJyYXlC
dWZmZXIgPSBtX3BlbmRpbmdGaWxlTG9hZHNbbG9hZEluZGV4XS0+YXJyYXlCdWZmZXJSZXN1bHQo
KTsKLSAgICAKKwogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZpbGVOYW1lID0gZmlsZU5h
bWU7CiAgICAgZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXIt
PmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBwZW5kKFdURk1vdmUoZmls
ZSkpOwogICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKLSAgICAKKwogICAgIGlmIChtX2ZpbGVzUmVh
ZFNvRmFyID09IHN0YXRpY19jYXN0PGludD4obV9wZW5kaW5nRmlsZUxvYWRzLnNpemUoKSkpIHsK
ICAgICAgICAgbV9wZW5kaW5nRmlsZUxvYWRzLmNsZWFyKCk7CiAgICAgICAgIGlmIChhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBsZXRpb25IYW5kbGVyLCB7IH0p
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmgKaW5kZXggZTM4
MDZlODdkZjc5YTNkOWI1Y2FlMTIxNGRlNjZhYTJhNjU4NDdkYi4uZmM2NmMzNjVhMmYyOWE0Yzc4
ZTYwNjE5ZTQ3YTcxYzcyNThkOGZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTm93UGxheWluZ01hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQ
bGF5aW5nTWFuYWdlci5oCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRp
b25hbDxOb3dQbGF5aW5nSW5mbz4gbV9ub3dQbGF5aW5nSW5mbzsKICAgICBzdHJ1Y3QgQXJ0d29y
a0NhY2hlIHsKICAgICAgICAgU3RyaW5nIHNyYzsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gaW1hZ2VEYXRhOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1h
Z2VEYXRhOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxBcnR3b3JrQ2FjaGU+IG1fbm93UGxh
eWluZ0luZm9BcnR3b3JrOwogICAgIGJvb2wgbV9zZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCmluZGV4IDE1NzMx
ZWIyM2ZhNzY5NDk2MGRkODA0OTZmYThmMmY5ZThjNzc4MGYuLjA3ZWQ0OGU1ODg0ZWNlZWRjNjFm
ZDkzZTZiMjIxNzFiZTg4NTg5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
Y3BwCkBAIC04OSw3ICs4OSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoYXV0byogc3RyYXRlZ3kgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkpCiAgICAgICAgIHJldHVybiBzdHJhdGVneS0+cmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCB0eXBlLCBuYW1lKCksIGNvbnRleHQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggN2QyNDdkY2QxYTE2ZjM0MmMxNzU0YzQ1
YzRhNzM1MjliZjhmNzFiMi4uMzU3NjNlZTEyYTM5MGVmYzg0NTJjMzU4MDZiNTEyYmU0MjlhZDk3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtNjEsMTIgKzYxLDEzIEBA
IHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRHJhZ0Rh
dGE7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBQYXN0ZWJvYXJkU3RyYXRl
Z3k7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiAKQEAgLTE0NywxNiArMTQ4LDE2IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNp
emUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkRmlsZVBhdGhzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkSFRNTChjb25zdCBTdHJp
bmcmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkSW1hZ2UoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6
ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CiAgICAgdmlydHVhbCBib29s
IHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpID0gMDsKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVhbCBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1
ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgPSAw
OwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWREYXRhQnVmZmVy
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9
KSA9IDA7CiAjZW5kaWYKIH07CiAKQEAgLTE3MSw3ICsxNzIsNyBAQCBzdHJ1Y3QgUGFzdGVib2Fy
ZEZpbGVSZWFkZXIgewogICAgIHZpcnR1YWwgflBhc3RlYm9hcmRGaWxlUmVhZGVyKCkgPSBkZWZh
dWx0OwogICAgIHZpcnR1YWwgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgLyogdHlwZSAq
LykgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
ID0gMDsKIH07CiAKIGNsYXNzIFBhc3RlYm9hcmQgewpAQCAtMjk2LDcgKzI5Nyw3IEBAIHB1Ymxp
YzoKICAgICBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gcGFzdGVib2FyZEl0ZW1J
bmZvKHNpemVfdCBpbmRleCkgY29uc3Q7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIFVSTCByZWFkVVJMKHNpemVfdCBpbmRl
eCwgU3RyaW5nJiB0aXRsZSk7CiAKICAgICBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDlkM2Y4N2E5MTE0YzM4
YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAuLjdiNGIzZDM2YWE2ODAzNjExODc5MTMxYjVhMWIy
MjZiNTg4ZDM2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
Q3VzdG9tRGF0YS5jcHAKQEAgLTMzLDEzICszMywxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4gY29weVBs
YXRmb3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4m
IG90aGVyKQorc3RhdGljIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiBvdGhlcikKIHsKICAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxTdHJpbmc+KG90aGVyKSkKICAgICAgICAgcmV0dXJuIHsgc3RkOjpnZXQ8U3Ry
aW5nPihvdGhlcikgfTsKIAotICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFy
ZWRCdWZmZXI+PihvdGhlcikpCi0gICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFJlZjxTaGFyZWRC
dWZmZXI+PihvdGhlcikuY29weVJlZigpIH07CisgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihvdGhlcikpCisgICAgICAgIHJldHVybiB7
IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ob3RoZXIpLmNvcHlSZWYoKSB9
OwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIFBhc3RlYm9h
cmRDdXN0b21EYXRhOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiAgICAgYWRkT3JNb3ZlRW50cnlUb0VuZCh0eXBlKS5wbGF0Zm9ybURhdGEgPSB7
IHZhbHVlIH07CiB9CiAKLXZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OndyaXRlRGF0YShjb25z
dCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgYWRkT3JNb3ZlRW50cnlUb0VuZCh0eXBlKS5w
bGF0Zm9ybURhdGEgPSB7IFdURk1vdmUoZGF0YSkgfTsKIH0KQEAgLTIwMiwxNCArMjAyLDE0IEBA
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpzYW1lT3JpZ2lu
Q3VzdG9tU3RyaW5nRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIGN1c3RvbURhdGE7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpyZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYgdHlwZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7
CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkgewogICAgICAgICBpZiAoZW50cnkudHlw
ZSAhPSB0eXBlKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCi0g
ICAgICAgICAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRm
b3JtRGF0YSkuY29weVJlZigpOworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihlbnRyeS5w
bGF0Zm9ybURhdGEpLmNvcHlSZWYoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CkBAIC0yNjUsMTEgKzI2NSwxMSBAQCB2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmb3JFYWNo
Q3VzdG9tU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLAogICAgIH0KIH0K
IAotdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZm
ZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxT
dHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYgZnVuY3Rpb24pIGNvbnN0Cit2b2lk
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmb3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihGdW5j
dGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYgZnVuY3Rpb24pIGNvbnN0CiB7
CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkgewogICAgICAgICBhdXRvJiBkYXRhID0g
ZW50cnkucGxhdGZvcm1EYXRhOwotICAgICAgICBpZiAoKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5pc051bGwoKSkgfHwgc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkpCisgICAgICAgIGlm
ICgoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRhdGEpICYmICFzdGQ6OmdldDxTdHJp
bmc+KGRhdGEpLmlzTnVsbCgpKSB8fCBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4oZGF0YSkpCiAgICAgICAgICAgICBmdW5jdGlvbihlbnRyeS50eXBl
LCBkYXRhKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZEN1c3RvbURhdGEuaAppbmRleCAyYmU4MWQyOTM4YTNkYmQwOTAyNmNhNmVjNjRhYzMyODdlNmFi
YzAzLi45N2ZmOTg1ZTI0ZTExYjRjN2JiNDE0MzczN2YwMjg0MGMzNWZmY2VjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAgLTM1LDYgKzM1
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGEgewog
cHVibGljOgpAQCAtNDgsNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICAgICAgU3RyaW5nIHR5cGU7
CiAgICAgICAgIFN0cmluZyBjdXN0b21EYXRhOwotICAgICAgICBzdGQ6OnZhcmlhbnQ8U3RyaW5n
LCBSZWY8U2hhcmVkQnVmZmVyPj4gcGxhdGZvcm1EYXRhOworICAgICAgICBzdGQ6OnZhcmlhbnQ8
U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHBsYXRmb3JtRGF0YTsKICAgICB9
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUGFzdGVib2FyZEN1c3RvbURhdGEoKTsKQEAgLTY1LDEx
ICs2NiwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRD
dXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciYmKTsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUp
IGNvbnN0OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1c3RvbURh
dGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKIAogICAgIHZvaWQgd3JpdGVTdHJpbmcoY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICB2b2lkIHdyaXRlRGF0
YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CisgICAgdm9p
ZCB3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhKTsKICAgICB2b2lkIHdyaXRlU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKICAgICB2b2lkIGNsZWFyKCk7CkBAIC04
Myw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZm9yRWFjaFR5cGUoRnVuY3Rpb248dm9p
ZChjb25zdCBTdHJpbmcmKT4mJikgY29uc3Q7CiAgICAgdm9pZCBmb3JFYWNoUGxhdGZvcm1TdHJp
bmcoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk+
JiYpIGNvbnN0OwotICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rp
b248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJl
ZjxTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYpIGNvbnN0OworICAgIHZvaWQgZm9yRWFjaFBsYXRm
b3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mIGRhdGEp
PiYmKSBjb25zdDsKICAgICB2b2lkIGZvckVhY2hDdXN0b21TdHJpbmcoRnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk+JiYpIGNvbnN0OwogCiAgICAg
Ym9vbCBoYXNEYXRhKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRTdHJhdGVneS5oCmluZGV4IDFjMDcyNmZlYjNlMDJhZWQzMmI0NmYyNjJiY2RhMTY5ZDY3MmVi
MmMuLmM0MWUwODUyNDQ5NmM2N2YxZjE1MDM4ZmJiMjZlOWMyOWRhNjk4YzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0zMSwxMCArMzEsMTEg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRh
OwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3Rl
Ym9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwpAQCAtNjIsNyArNjMsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFR5cGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgaW50
NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAg
ICB2aXJ0dWFsIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2
aXJ0dWFsIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgQ29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGlu
dDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250
ZW50RmlsdGVyLmgKaW5kZXggM2Y0ODMyYTVhNjU4YzFjYzdjMGFhMTNiMjZlMGVhNDczM2U5ZDNi
Ny4uOWU3MmU0NGEyZWFjNGQ4ZWY3MzBiOTg3MWQwZWM1MDhlZDlmYWM0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKQEAgLTM0LDcgKzM0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IFBsYXRmb3JtQ29udGVudEZpbHRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBA
IC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhZGREYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoZWRBZGRpbmdEYXRhKCkgPSAwOwotICAgIHZpcnR1YWwgUmVmPFNoYXJlZEJ1ZmZlcj4g
cmVwbGFjZW1lbnREYXRhKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0ID0gMDsKICNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpCiAgICAgdmlydHVhbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIg
dW5ibG9ja0hhbmRsZXIoKSBjb25zdCA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggN2EyYTMxMDA3NDI1MDAyNDNiYjQ2ZmY1
OTg2ODYxZTg0YTJmZDk2ZS4uNzFkZmI5M2U1NzU2MGUzM2E3ZjZjODBjMjBmOTJkNWIyY2FlYzEz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAg
LTQ3LDEzICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2Fy
ZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOwog
c3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1
Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBwdWJs
aWM6CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgd2ls
bCByZXR1cm4gMCBpZiBwYXN0ZWJvYXJkIG93bmVyc2hpcCBoYXMgYmVlbiB0YWtlbiBmcm9tIHVz
LgogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3QgY29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0
ZWJvYXJkKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoU2hh
cmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90
IHNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRf
dCBzZXRDb2xvcihjb25zdCBDb2xvciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0
U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKaW5kZXgg
NGNiMzMwMWU3ZGY3MDcxYzVkZDlmYzU5YmM1NzE4NWM0ZTkxNDc2OC4uNjMxYWRlN2NjZjdhZDI5
NjkzYTJlNzY1MWZlNmE5Y2RlYmQzNzczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgY29uc3QgUmVzb3VyY2VFcnJv
ciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0Vycm9yKCkgY29uc3QKICAgICByZXR1cm4gbV9w
cmV2aWV3RXJyb3I7CiB9CiAKLWNvbnN0IFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEoKSBjb25zdAorY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgUHJldmll
d0NvbnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByZXZpZXdE
YXRhLmdldCgpOworICAgIHJldHVybiAqbV9wcmV2aWV3RGF0YS0+Z2V0KCk7CiB9CiAKIHZvaWQg
UHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKQEAgLTkwLDcgKzkwLDcgQEAg
dm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWluUmVzb3VyY2UoKQogICAgIH0pOwogfQog
Ci12b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmFwcGVuZEZyb21CdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmFwcGVuZEZyb21CdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHdoaWxlIChidWZmZXIu
c2l6ZSgpID4gbV9sZW5ndGhBcHBlbmRlZCkgewogICAgICAgICBhdXRvIG5ld0RhdGEgPSBidWZm
ZXIuZ2V0U29tZURhdGEobV9sZW5ndGhBcHBlbmRlZCk7CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9p
ZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50
JiBjbGllbnQpCiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmco
KnRoaXMpOwogCiAgICAgaWYgKCFtX3ByZXZpZXdEYXRhLT5pc0VtcHR5KCkgJiYgaGFzQ2xpZW50
KGNsaWVudCkpCi0gICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEo
KnRoaXMsIG1fcHJldmlld0RhdGEuZ2V0KCkpOworICAgICAgICBjbGllbnQucHJldmlld0NvbnZl
cnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCAqbV9wcmV2aWV3RGF0YS0+Z2V0KCkpOwogCiAgICAg
aWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNvbnZlcnRpbmcgfHwgIWhhc0NsaWVudChjbGllbnQpKQog
ICAgICAgICByZXR1cm47CkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVy
OjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xp
ZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKCp0aGlzKTsKIH0KIAotdm9p
ZCBQcmV2aWV3Q29udmVydGVyOjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSkKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0
YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGF1dG8gcHJvdGVj
dGVkVGhpcyB7IFJlZiB7ICp0aGlzIH0gfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlci5oCmluZGV4IDJhMzcyOTIyNzk5Y2U2YWZmYWFiM2UxNDBkMTkwYmE2NGNm
OGNlMmIuLjkyMDJlZGRkOWUxMDViMjczNWVkYzE0NmYyNjY0YzEzY2I5YzM0MWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTQxLDE1ICs0MiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJl
c291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZp
ZXc7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJD
bGllbnQ7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyOwogCiBzdHJ1Y3QgUHJldmll
d1BsYXRmb3JtRGVsZWdhdGUgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3UGxhdGZvcm1EZWxlZ2F0
ZT4gewogICAgIHZpcnR1YWwgflByZXZpZXdQbGF0Zm9ybURlbGVnYXRlKCkgPSBkZWZhdWx0Owog
Ci0gICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRl
RGlkRmluaXNoTG9hZGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRGYWls
V2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiB9OwpAQCAtNzIsNyArNzQsNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHByZXZpZXdGaWxlTmFtZSgpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwcmV2aWV3VVRJKCkgY29uc3Q7CiAgICAg
Y29uc3QgUmVzb3VyY2VFcnJvciYgcHJldmlld0Vycm9yKCkgY29uc3Q7Ci0gICAgY29uc3QgU2hh
cmVkQnVmZmVyJiBwcmV2aWV3RGF0YSgpIGNvbnN0OworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIHByZXZpZXdEYXRhKCkgY29uc3Q7CiAKICAgICB2b2lkIGZhaWxlZFVwZGF0aW5n
KCk7CiAgICAgdm9pZCBmaW5pc2hVcGRhdGluZygpOwpAQCAtOTQsNyArOTYsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgaXNQbGF0Zm9ybVBhc3N3b3JkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYp
IGNvbnN0OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBpdGVyYXRlQ2xpZW50cyhU
JiYgY2FsbGJhY2spOwotICAgIHZvaWQgYXBwZW5kRnJvbUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZm
ZXImKTsKKyAgICB2b2lkIGFwcGVuZEZyb21CdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpOwogICAgIHZvaWQgZGlkQWRkQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmKTsK
ICAgICB2b2lkIGRpZEZhaWxDb252ZXJ0aW5nV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKICAgICB2b2lkIGRpZEZhaWxVcGRhdGluZygpOwpAQCAtMTA2LDcgKzEwOCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBwbGF0Zm9ybVVubG9ja1dpdGhQYXNzd29yZChjb25zdCBTdHJpbmcmKTsK
IAogICAgIC8vIFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlCi0gICAgdm9pZCBkZWxlZ2F0ZURpZFJl
Y2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgZGVsZWdhdGVE
aWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAg
dm9pZCBkZWxlZ2F0ZURpZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsKICAgICB2b2lkIGRlbGVnYXRl
RGlkRmFpbFdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKQEAgLTExOCw3
ICsxMjAsNyBAQCBwcml2YXRlOgogICAgICAgICBGaW5pc2hlZENvbnZlcnRpbmcsCiAgICAgfTsK
IAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fcHJldmlld0RhdGE7CisgICAgVW5pcXVlUmVmPFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcHJldmlld0RhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBtX3By
ZXZpZXdFcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKICAg
ICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlVwZGF0aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmgKaW5kZXggMDRlYTM2ODA2OTJiMjUy
YTE5ODljMjZjYTIwNDIxMjc3N2FhM2I3Yi4uOWNlZTkzMzIwYjIzOGI0Y2Q3M2NkZDJlMDMwMmMz
YmY0ZGFkNjhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0Nv
bnZlcnRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXJDbGllbnQuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFByZXZpZXdDb252ZXJ0ZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByZXZpZXdD
b252ZXJ0ZXJDbGllbnQgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVyQ2xpZW50PiB7
CiAgICAgdmlydHVhbCB+UHJldmlld0NvbnZlcnRlckNsaWVudCgpID0gZGVmYXVsdDsKQEAgLTQy
LDcgKzQyLDcgQEAgc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQgOiBDYW5NYWtlV2Vha1B0
cjxQcmV2aWV3Q29udmVydGVyQ2xpZW50PiB7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252
ZXJ0ZXJEaWRGaW5pc2hVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXIm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRp
bmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZl
cnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBTaGFyZWRCdWZmZXIm
IG5ld0RhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2Vp
dmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBu
ZXdEYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hD
b252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZp
ZXdDb252ZXJ0ZXJEaWRGYWlsQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92
aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVy
LmgKaW5kZXggODI3ODYzOTNmY2VkNzU0Yzg1ZjdiMjg5MTI1MmY1MTZiZWQwZDU0OS4uYjk4NmVl
NDBkMTk3NTE3NGY1NGFkMjlhMTY4Y2FkZjE4OTQ1NmMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgKQEAgLTMyLDcgKzMyLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciA6
IENhbk1ha2VXZWFrUHRyPFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcj4gewogICAgIHZpcnR1YWwg
flByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcigpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9p
ZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVy
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQ
cmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJvdmlkZVBhc3N3b3Jk
Rm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBTdHJpbmcmKT4mJikgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDhlNjhlMzM3NzgxZmIyOWFkMzljNTViOWFmZDM5MDAz
NTM1Mzg1ZC4uMzdlNDUzNjczODk1MTUxMzE1YjEyNzI1Y2NkZThkYTNmMWQ2M2MyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zNyw2MyArMzcsNTIgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7
CiAgICAgYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZl
cihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiB7
CiAgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXpl
KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJiBmaWxlRGF0YSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKICAgICA6IG1f
c2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBl
bmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKSB9KTsKIH0KIAot
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlk
ZXIpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKERhdGFT
ZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUo
KSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZN
b3ZlKHByb3ZpZGVyKSl9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50
OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewogICAgIGFw
cGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAotI2lmIFVTRShHU1RSRUFNRVIpCi1SZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVk
QnVmZmVyKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIobWFwcGVkQnVmZmVyKSk7CisgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBt
YXBwZWRCdWZmZXIpCi0gICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkKKyNpZiBVU0Uo
R1NUUkVBTUVSKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogewotICAg
IG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIp
fSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihtYXBw
ZWRCdWZmZXIpKTsKIH0KLSNlbmRpZgogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcg
bWF5VXNlRmlsZU1hcHBpbmcpCi17Ci0gICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVz
ZUZpbGVNYXBwaW5nOjpZZXMpIHsKLSAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKLSAgICAg
ICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1h
cHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7Ci0gICAgICAgIGlmIChtYXBwaW5nU3VjY2Vz
cykKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUo
bWFwcGVkRmlsZURhdGEpKSk7Ci0gICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKK0ZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1h
cHBlZEJ1ZmZlcikKKyAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKKyAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcikg
fSk7CiB9CisjZW5kaWYKIAotc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXpl
X3Qgc2l6ZSkKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNp
emVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7CiAgICAgY29t
YmluZWREYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CkBAIC0xMDMsMzMgKzkyLDE5
IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0K
IAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CitSZWY8
U2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNv
bnN0CiB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUg
YWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KLSAg
ICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlz
LCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2Lgot
ICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgPSB0cnVlOwotI2VuZGlmCi0g
ICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9IDEpCi0gICAgICAgIHJldHVybjsKLQorICAgIGlm
IChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8U2hhcmVk
QnVmZmVyKj4oY29uc3RfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4odGhpcykpIH07Cisg
ICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpCisgICAgICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsK
ICAgICBhdXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywg
bV9zaXplKTsKLSAgICBtX3NlZ21lbnRzLmNsZWFyKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQo
ezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKX0pOwotICAgIEFT
U0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7Ci19Ci0KLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0
Ci17Ci0gICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKLSAgICBBU1NFUlQoaW50ZXJuYWxseUNv
bnNpc3RlbnQoKSk7Ci0gICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOwor
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwog
fQogCi1WZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CitWZWN0
b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdAogewog
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGRhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShzaXplKCkpOwpAQCAtMTM5LDcgKzExNCw3IEBAIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZm
ZXI6OmNvcHlEYXRhKCkgY29uc3QKICAgICByZXR1cm4gZGF0YTsKIH0KIAotVmVjdG9yPHVpbnQ4
X3Q+IFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKQorVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OnRha2VEYXRhKCkKIHsKICAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xNTQsMTMgKzEyOSwxMyBAQCBWZWN0b3I8dWludDhf
dD4gU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0K
IAotU2hhcmVkQnVmZmVyRGF0YVZpZXcgU2hhcmVkQnVmZmVyOjpnZXRTb21lRGF0YShzaXplX3Qg
cG9zaXRpb24pIGNvbnN0CitTaGFyZWRCdWZmZXJEYXRhVmlldyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgY29uc3QgRGF0
YVNlZ21lbnRWZWN0b3JFbnRyeSogZWxlbWVudCA9IGdldFNlZ21lbnRGb3JQb3NpdGlvbihwb3Np
dGlvbik7CiAgICAgcmV0dXJuIHsgZWxlbWVudC0+c2VnbWVudC5jb3B5UmVmKCksIHBvc2l0aW9u
IC0gZWxlbWVudC0+YmVnaW5Qb3NpdGlvbiB9OwogfQogCi1jb25zdCBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50VmVjdG9yRW50cnkqIFNoYXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9u
KHNpemVfdCBwb3NpdGlvbikgY29uc3QKK2NvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50VmVjdG9yRW50cnkqIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmdldFNlZ21lbnRG
b3JQb3NpdGlvbihzaXplX3QgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQo
cG9zaXRpb24gPCBtX3NpemUpOwogICAgIGF1dG8gY29tcGFyYXRvciA9IFtdKGNvbnN0IHNpemVf
dCYgcG9zaXRpb24sIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkmIGVudHJ5KSB7CkBAIC0x
NzEsNyArMTQ2LDcgQEAgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvckVudHJ5
KiBTaGFyZWRCdWZmZXI6OmdldFNlZ21lbnRGb3JQb3NpdGlvbigKICAgICByZXR1cm4gZWxlbWVu
dDsKIH0KIAotU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAorU3RyaW5n
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKIHsKICAgICBTdHJp
bmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAgICAgZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNl
Z21lbnQpIHsKQEAgLTE4MSw3ICsxNTYsMjIgQEAgU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhT
dHJpbmcoKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAK
LVJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigp
IGNvbnN0CitzaXplX3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6c2l6ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fc2l6ZTsKK30KKworYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppc0Vt
cHR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIXNpemUoKTsKK30KKworYm9vbCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRp
Z3VvdXM7Cit9CisKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBB
cnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c2l6ZSgpKSwgMSk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewpAQCAtMjAwLDY4ICsxOTAsNjgg
QEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCkgY29uc3QKICAgICByZXR1cm4gYXJyYXlCdWZmZXI7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVy
OjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjphcHBlbmQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAg
ICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCgh
bV9jb250aWd1b3VzKTsKICAgICBtX3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0eShtX3NlZ21lbnRz
LnNpemUoKSArIGRhdGEubV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYg
ZWxlbWVudCA6IGRhdGEubV9zZWdtZW50cykgewotICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tl
ZEFwcGVuZCh7bV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIG1f
c2VnbWVudHMudW5jaGVja2VkQXBwZW5kKHsgbV9zaXplLCBlbGVtZW50LnNlZ21lbnQuY29weVJl
ZigpIH0pOwogICAgICAgICBtX3NpemUgKz0gZWxlbWVudC5zZWdtZW50LT5zaXplKCk7CiAgICAg
fQogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRC
dWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQordm9pZCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGxlbmd0aCkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQp
OworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9y
OwogICAgIHZlY3Rvci5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSl9KTsKKyAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZl
Y3RvcikpIH0pOwogICAgIG1fc2l6ZSArPSBsZW5ndGg7CiAgICAgQVNTRVJUKGludGVybmFsbHlD
b25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8
dWludDhfdD4mJiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25l
U2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGF1dG8gZGF0YVNpemUg
PSBkYXRhLnNpemUoKTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVu
dDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3Np
emUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkgfSk7CiAgICAgbV9zaXplICs9
IGRhdGFTaXplOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAotdm9p
ZCBTaGFyZWRCdWZmZXI6OmNsZWFyKCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgYXBwZW5kKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOworfQorCit2b2lkIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNsZWFyKCkKIHsKICAgICBtX3NpemUgPSAwOwogICAgIG1f
c2VnbWVudHMuY2xlYXIoKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9
CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CitSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0
CiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcik7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNsb25lID0gYWRvcHRSZWYo
Km5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKTsKICAgICBjbG9uZS0+bV9zaXplID0gbV9zaXpl
OwogICAgIGNsb25lLT5tX3NlZ21lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdtZW50
cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpCi0g
ICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7ZWxlbWVudC5iZWdpblBv
c2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIGNsb25lLT5tX3Nl
Z21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IGVsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5z
ZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICBBU1NFUlQoY2xvbmUtPmludGVybmFsbHlDb25zaXN0
ZW50KCkpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1cm4g
Y2xvbmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFT
ZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOwotfQotCi12b2lkIFNoYXJlZEJ1ZmZl
cjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVp
bnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9y
RWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+
Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsKICAg
ICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBzZWdtZW50cykKICAgICAgICAgYXBwbHkoU3BhbiB7IHNl
Z21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSB9KTsKIH0KIAot
Ym9vbCBTaGFyZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYg
cHJlZml4KSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNv
bnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKIHsKICAgICBpZiAocHJlZml4
LmVtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjgzLDcgKzI3Myw3IEBAIGJvb2wg
U2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZp
eCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRC
dWZmZXI6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKK1ZlY3Rvcjx1
aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVf
dCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgaWYgKG9m
ZnNldCA+PSBzaXplKCkpCkBAIC0zMTAsMTIgKzMwMCwxMiBAQCBWZWN0b3I8dWludDhfdD4gU2hh
cmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAgICAg
cmV0dXJuIGRhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGlu
YXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gY29weVRvKGRlc3RpbmF0aW9uLCAwLCBsZW5ndGgpOwogfQogCi12b2lkIFNoYXJlZEJ1
ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVu
Z3RoKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVz
dGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKGxlbmd0aCArIG9mZnNldCA8PSBzaXplKCkpOwogICAgIGlmIChvZmZzZXQgPj0gc2l6ZSgp
KQpAQCAtMzUzLDE0ICszNDMsMTMgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBk
ZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKICAgICB9CiB9
CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKK2Jvb2wgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgYXV0byBpdCA9
IGJlZ2luKCk7Ci0gICAgcmV0dXJuIGl0ICE9IGVuZCgpICYmICsraXQgPT0gZW5kKCk7CisgICAg
cmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID09IDE7CiB9CiAKICNpZiBBU1NFUlRfRU5BQkxFRAot
Ym9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKK2Jvb2wgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogewogICAg
IHNpemVfdCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9z
ZWdtZW50cykgewpAQCAtMzcyLDcgKzM2MSw1NyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJu
YWxseUNvbnNpc3RlbnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLWNv
bnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAorU2hh
cmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9
CisKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50
KQoreworICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNpemUoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30K
KworU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgY29udGlndW91c0J1ZmZlcikKK3sKKyAgICBBU1NFUlQoY29udGlndW91c0J1ZmZlci0+aGFz
T25lU2VnbWVudCgpIHx8IGNvbnRpZ3VvdXNCdWZmZXItPmlzRW1wdHkoKSk7CisgICAgbV9zaXpl
ID0gY29udGlndW91c0J1ZmZlci0+c2l6ZSgpOworICAgIGlmIChjb250aWd1b3VzQnVmZmVyLT5o
YXNPbmVTZWdtZW50KCkpCisgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgY29udGlndW91
c0J1ZmZlci0+bV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSB9KTsKKyAgICBtX2NvbnRp
Z3VvdXMgPSB0cnVlOworfQorCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgOiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdU
Rk1vdmUoZGF0YSkpCit7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1v
ZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQoreworICAgIGlmIChtYXlV
c2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7CisgICAgICAgIGJvb2wg
bWFwcGluZ1N1Y2Nlc3M7CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBl
ZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOworICAg
ICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOworICAgIH0KKyAgICByZXR1
cm4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKK30KKworY29uc3QgdWludDhfdCog
U2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNl
Z21lbnQtPmRhdGEoKTsKK30KKworY29uc3QgY2hhciogU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFy
UHRyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YSgpKTsKK30KKworY29uc3QgdWludDhfdCogRGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAog
ewogICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS5k
YXRhKCk7IH0sCkBAIC0zOTEsMTMgKzQzMCwxMyBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNp
dG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAorYm9vbCBEYXRhU2VnbWVudDo6Y29u
dGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7CiB9
CiAKICNpZiAhVVNFKENGKQotdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRT
b29uKCkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5l
ZWRlZFNvb24oKSBjb25zdAogewogfQogI2VuZGlmCkBAIC00MDcsNyArNDQ2LDcgQEAgV1RGOjpQ
ZXJzaXN0ZW5jZTo6RGVjb2RlciBTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAogICAgIHJl
dHVybiB7eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXplKCkg
fX07CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgb3RoZXIpIGNvbnN0Citib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0o
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKHRo
aXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ1Niw3ICs0OTUsNyBAQCBi
b29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBj
b25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudDo6c2l6ZSgpIGNvbnN0CitzaXplX3QgRGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogewog
ICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCiAgICAgICAgIFtdKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gc2l6ZV90IHsgcmV0dXJuIGRhdGEuc2l6ZSgpOyB9LApA
QCAtNDc1LDcgKzUxNCw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXpl
KCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEp
OwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGlu
U2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmll
dzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVf
dCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAg
IDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2Vn
bWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDog
bV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC00OTksMTIgKzUz
OCwxNyBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7
CiB9CiAKK2NvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgp
KTsKK30KKwogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICBjb25zdCBSZWY8
RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdtZW50LCBkYXRh
ID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCi0gICAgICAgIFtzZWdtZW50LCBzaXplID0g
c2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KKyAgICAgICAgW3NpemUgPSBzaXplKCldKCkgeyBy
ZXR1cm4gc2l6ZTsgfQogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oCmluZGV4IGYyM2Y1ZDY5YWQzMmVkNjQwYjk1NzdiMmU2YzQ1NDkxODM5MzY4YWQuLjA1
NGM0NmNkM2FjMDE5MjhhNjZkNzI3OTk1ZGIwMmExZGVkMGU1ODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNjIsMTQ2ICs2MiwxMzMgQEAgY2xhc3Mg
RGVjb2RlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CiBj
bGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVk
QnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworLy8g
RGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNl
IGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCisvLyBUbyBtb2RpZnkgb3Ig
Y29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCitjbGFzcyBEYXRh
U2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVk
RmlsZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFw
cGVkRmlsZURhdGEpKSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRh
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKIAotICAg
IGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVN
YXBwaW5nOjpZZXMpOwotCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0
b3I8dWludDhfdD4mJik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFZlY3Rv
cjx1aW50OF90PiYmIGRhdGEpCisgICAgeworICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsK
KyAgICB9CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVh
dGVOU0RhdGEoKSBjb25zdDsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJy
YXkoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSAq
KTsKLSAgICB2b2lkIGFwcGVuZChOU0RhdGEgKik7Ci0jZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAg
UmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwotICAgIHZvaWQgYXBwZW5kKENGRGF0
YVJlZik7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRh
dGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3Zl
KGRhdGEpKSk7IH0KICNlbmRpZgotCiAjaWYgVVNFKEdMSUIpCi0gICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKLSAgICBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5
dGVzKCkgY29uc3Q7CisgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8
R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShkYXRhKSkpOyB9CiAjZW5kaWYKLQogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIHN0YXRp
YyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYg
ZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7
IH0KICNlbmRpZgotICAgIC8vIENhbGxpbmcgZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2Vn
bWVudHMgdG8gYmUgY29waWVkIGludG8gb25lIHNlZ21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVh
ZHkuCi0gICAgLy8gSXRlcmF0ZSB0aGUgc2VnbWVudHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkg
aW5zdGVhZC4KLSAgICAvLyBGSVhNRTogQXVkaXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5j
dGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdpdGggaXRlcmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNv
bnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRy
KCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsg
fQotICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OwotICAgIFZlY3Rvcjx1aW50
OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwotCi0gICAgLy8g
U2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRo
ZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBz
aGFyZWQpLgotICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOworICAgIHN0YXRpYyBS
ZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAK
LSAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZm
ZXIncyBjb250ZW50cyB0byB0aGF0Ci0gICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5n
IHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KLSAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7Ci0KLSAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gIXNpemUoKTsgfQotCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7
Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBhcHBl
bmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KLSAgICB2b2lkIGFwcGVuZChW
ZWN0b3I8dWludDhfdD4mJik7Ci0KLSAgICB2b2lkIGNsZWFyKCk7CisgICAgc3RydWN0IFByb3Zp
ZGVyIHsKKyAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAgICAg
RnVuY3Rpb248c2l6ZV90KCk+IHNpemU7CisgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+
IGNvcHkoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90
IGxlbmd0aCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVf
dCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21l
bnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7IH0KIAotICAgIC8vIERhdGEgd3JhcHBlZCBi
eSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVm
ZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgotICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRo
ZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KLSAgICBjbGFzcyBEYXRhU2VnbWVu
dCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewotICAgIHB1Ymxp
YzoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0Owot
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OworI2lmIFVTRShGT1VO
REFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0
YSgpIGNvbnN0OworI2VuZGlmCiAKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3Jl
YXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRhdGEu
c2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdt
ZW50KFdURk1vdmUoZGF0YSkpKTsKLSAgICAgICAgfQorICAgIGJvb2wgY29udGFpbnNNYXBwZWRG
aWxlRGF0YSgpIGNvbnN0OwogCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFZl
Y3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUo
ZGF0YSkpIHsgfQogI2lmIFVTRShDRikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVu
dChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRh
KFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIHN0YXRp
YyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxp
Y2l0IERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCisgICAgICAgIDogbV9pbW11
dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikK
LSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRP
d25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdU
Rk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBw
ZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3Zl
KGRhdGEpKSB7IH0KICNlbmRpZgotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVh
dGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdt
ZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUHJv
dmlkZXImJiBwcm92aWRlcikKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShwcm92
aWRlcikpIHsgfQogCi0gICAgICAgIHN0cnVjdCBQcm92aWRlciB7Ci0gICAgICAgICAgICBGdW5j
dGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOwotICAgICAgICAgICAgRnVuY3Rpb248c2l6ZV90
KCk+IHNpemU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNl
Z21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQotCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAg
ICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwotI2VuZGlmCi0KLSAg
ICAgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7Ci0KLSAgICBwcml2YXRl
OgotICAgICAgICBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICAg
ICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgc3RkOjp2YXJpYW50
PFZlY3Rvcjx1aW50OF90PiwKICNpZiBVU0UoQ0YpCi0gICAgICAgIERhdGFTZWdtZW50KFJldGFp
blB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdU
Rk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwKICNlbmRpZgog
I2lmIFVTRShHTElCKQotICAgICAgICBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRh
KQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAg
ICAgIEdSZWZQdHI8R0J5dGVzPiwKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAg
IERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQotICAgICAg
ICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJlZlB0
cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisjZW5kaWYKKyAgICAgICAgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEsCisgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7CisgICAgZnJp
ZW5kIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CisjaWYgIVVTRShGT1VOREFUSU9OKQor
ICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKICNlbmRp
ZgotICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEp
Ci0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICAg
ICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKLSAgICAgICAgICAgIDogbV9pbW11
dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KK307CisKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KTsgfQorICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7
IH0KKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQor
ICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIoV1RGTW92ZShidWZmZXIpKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsgfQorICAg
IHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQ
cm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsgfQogCi0gICAgICAgIHN0ZDo6dmFyaWFudDxW
ZWN0b3I8dWludDhfdD4sCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQg
UmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRh
Kik7CisjZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGNyZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAg
IEdSZWZQdHI8R0J5dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJF
QU1FUikKLSAgICAgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0
TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEsCi0gICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwotICAg
ICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwotICAgIH07CisgICAgV0VCQ09SRV9FWFBP
UlQgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7
CisKKyAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3
aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgorICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0
RGF0YSgpOworCisgICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1
ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVy
LgorICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7
CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92
aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25zdDsKIAotICAg
IHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0
IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29u
c3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0Nv
bnRpZ3VvdXMoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQo
Y29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWlu
dDhfdD4mIHByZWZpeCkgY29uc3Q7CisKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6
OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2lu
ZyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFT
ZWdtZW50VmVjdG9yRW50cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTIx
MCw1NiArMTk3LDE3NyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0b3IgPSBW
ZWN0b3I8RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6
OmNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5iZWdpbigp
OyB9CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2VnbWVudHMuZW5kKCk7IH0KLSAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdDsKIAogICAg
IC8vIGJlZ2luIGFuZCBlbmQgdGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRp
bWUuCi0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9u
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21l
RGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAK
ICAgICB2b2lkIGhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIG9wZXJhdG9yPT0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNo
YXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQor
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29u
c3Q7CiAKLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0Owot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKK3Byb3RlY3RlZDoKKyAgICBmcmllbmQgY2xh
c3MgU2hhcmVkQnVmZmVyOworCisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAg
ICBib29sIG1fY29udGlndW91cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVf
dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihj
b25zdCBjaGFyKiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIo
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNFKENGKQot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgogI2lm
IFVTRShHTElCKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEdCeXRlcyopOwogI2Vu
ZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFw
cGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKKyAgICBzaXplX3Qg
bV9zaXplIHsgMCB9OwogCi0gICAgdm9pZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdDsK
K3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBs
ZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYm
KTsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChO
U0RhdGEgKik7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBlbmQoQ0ZEYXRhUmVmKTsKKyNlbmRpZgogCi0gICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdt
ZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5n
IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOwogCisgICAgLy8gQ29tYmluZXMgYWxsIHRoZSBz
ZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFy
aW5nIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rv
cjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAgIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkq
IGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpdGlvbikgY29uc3Q7CiAKLSAgICBz
dGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgpOwotCi0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLSAgICBtdXRhYmxl
IERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAotICAg
IG11dGFibGUgYm9vbCBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50IHsgZmFsc2UgfTsK
ICAgICBib29sIGludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3Q7CiAjZW5kaWYKIH07CiAKLWlu
bGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCisvLyBBIFNo
YXJlZEJ1ZmZlciBpcyBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGly
ZWN0bHkgYWNjZXNzIGl0cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhv
ZHMuCitjbGFzcyBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB7
CitwdWJsaWM6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIGlm
IGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVv
Zi4uLihBcmdzKSA9PSAxCisgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVm
PERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90ICpkYXRhKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0
OworCisgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZp
bGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNpZiBVU0UoRk9VTkRBVElP
TikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBj
b25zdDsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShHTElCKQor
ICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsK
KyNlbmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlcigpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIo
UmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworCisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKTsKK307CisKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgeworICAgICAgICAvLyBX
ZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyIGFzIGFsbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFibGUK
KyAgICAgICAgLy8gb25jZSBjcmVhdGVkLgorICAgICAgICBpZiAoIWJ1ZmZlciB8fCAoYnVmZmVy
LT5oYXNPbmVSZWYoKSAmJiAhYnVmZmVyLT5pc0NvbnRpZ3VvdXMoKSkpIHsKKyAgICAgICAgICAg
IG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGFwcGVuZCgqYnVmZmVyKTsKKyAgICB9CisgICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyQnVpbGRlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAg
eworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyIGFzIGFsbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIHNob3Vs
ZCBiZSBpbW11dGFibGUKKyAgICAgICAgLy8gb25jZSBjcmVhdGVkLgorICAgICAgICBpZiAoYnVm
ZmVyLT5oYXNPbmVSZWYoKSAmJiAhYnVmZmVyLT5pc0NvbnRpZ3VvdXMoKSkgeworICAgICAgICAg
ICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyLmdldCgpKSk7CisgICAgfQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoQXJn
cyYmLi4uIGFyZ3MpCisgICAgICAgIDogbV9idWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpIHsgfQorCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCisgICAg
eworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiAhaXNOdWxsKCk7IH0KKyAgICBib29sIGlzTnVsbCgpIGNv
bnN0IHsgcmV0dXJuICFtX2J1ZmZlcjsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KKworICAgIHNpemVf
dCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsg
fQorCisgICAgdm9pZCByZXNldCgpIHsgbV9idWZmZXIgPSBudWxscHRyOyB9CisgICAgdm9pZCBl
bXB0eSgpCisgICAgeworICAgICAgICByZXNldCgpOworICAgICAgICBlbnN1cmVCdWZmZXIoKTsK
KyAgICB9CisKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZ2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY29w
eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmNvcHkoKSA6IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHRha2UoKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIHJldHVy
biBtX2J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lk
IGVuc3VyZUJ1ZmZlcigpCisgICAgeworICAgICAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICAg
ICAgbV9idWZmZXIgPSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICB9Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworfTsKKworaW5saW5l
IFZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiB7
CiAgICAgaWYgKGhhc09uZVJlZigpKQogICAgICAgICByZXR1cm4gdGFrZURhdGEoKTsKQEAgLTI2
OCwxNyArMzc2LDE3IEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRy
YWN0RGF0YSgpCiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsK
IHB1YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOworICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
KFJlZjxEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwogICAgIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwog
ICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
OwotICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CisgICAgY29uc3QgY2hhciogZGF0YUFz
Q2hhclB0cigpIGNvbnN0OwogICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZl
cigpIGNvbnN0OwogI2lmIFVTRShGT1VOREFUSU9OKQogICAgIFJldGFpblB0cjxOU0RhdGE+IGNy
ZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlmCiBwcml2YXRlOgotICAgIGNvbnN0IFJlZjxTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPERhdGFTZWdt
ZW50PiBtX3NlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50
OwogICAgIGNvbnN0IHNpemVfdCBtX3NpemU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCmluZGV4IGNkYjZlNzAzNDA0ZDQy
NmRkMjFiNDc5ZmE4OWMwZGE5YjhjNDlmOGUuLjlkMDU1Y2UyN2Q4OGMzZDYyZTViZDFjZDQ2YWQ5
MWY1Y2M0MzFmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXJDaHVua1JlYWRlci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAjaWYgRU5BQkxFKE1IVE1MKQogCi1TaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFZlY3RvcjxjaGFy
PiYgc2VwYXJhdG9yKQorU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgVmVjdG9yPGNoYXI+
JiBzZXBhcmF0b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVudChidWZmZXItPmJlZ2luKCkpCiAg
ICAgLCBtX2l0ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAgLCBtX3NlZ21lbnQobV9pdGVy
YXRvckN1cnJlbnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRlcmF0b3JDdXJyZW50LT5zZWdtZW50
LT5kYXRhKCkgOiBudWxscHRyKQpAQCAtNDQsNyArNDQsNyBAQCBTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0
IFZlYwogewogfQogCi1TaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXIoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IGNoYXIqIHNlcGFyYXRvcikKK1NoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IGNoYXIqIHNlcGFyYXRvcikKICAgICA6IG1faXRlcmF0
b3JDdXJyZW50KGJ1ZmZlci0+YmVnaW4oKSkKICAgICAsIG1faXRlcmF0b3JFbmQoYnVmZmVyLT5l
bmQoKSkKICAgICAsIG1fc2VnbWVudChtX2l0ZXJhdG9yQ3VycmVudCAhPSBtX2l0ZXJhdG9yRW5k
ID8gbV9pdGVyYXRvckN1cnJlbnQtPnNlZ21lbnQtPmRhdGEoKSA6IG51bGxwdHIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaAppbmRleCA1
ZDRlNmZlZTU4MmM2NjE2ZmQwN2UzOTk0ZmY3NWM4ZjA3YTJmY2UxLi4xYzY0MDhkNGM3MzZhMWM0
YTQ1Y2VlN2IzZjY5NjU3YmM5YTI2MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKQEAgLTQxLDggKzQxLDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJDaHVua1JlYWRl
ciB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiwg
Y29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpOwotICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyKFNoYXJlZEJ1ZmZlciosIGNvbnN0IGNoYXIqIHNlcGFyYXRvcik7CisgICAgU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFZlY3RvcjxjaGFy
PiYgc2VwYXJhdG9yKTsKKyAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiwgY29uc3QgY2hhciogc2VwYXJhdG9yKTsKIAogICAgIHZvaWQgc2V0U2VwYXJh
dG9yKGNvbnN0IFZlY3RvcjxjaGFyPiYpOwogICAgIHZvaWQgc2V0U2VwYXJhdG9yKGNvbnN0IGNo
YXIqKTsKQEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogICAgIHNpemVfdCBwZWVrKFZlY3Rvcjx1
aW50OF90PiYsIHNpemVfdCk7CiAKIHByaXZhdGU6Ci0gICAgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbV9pdGVyYXRvckN1cnJlbnQ7Ci0gICAgY29uc3Qg
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbV9pdGVyYXRv
ckVuZDsKKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rvcjo6Y29u
c3RfaXRlcmF0b3IgbV9pdGVyYXRvckN1cnJlbnQ7CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JFbmQ7
CiAgICAgY29uc3QgdWludDhfdCogbV9zZWdtZW50IHsgbnVsbHB0ciB9OwogICAgIHNpemVfdCBt
X3NlZ21lbnRJbmRleCB7IDAgfTsKICAgICBWZWN0b3I8Y2hhcj4gbV9zZXBhcmF0b3IgeyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2Fy
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcAppbmRl
eCBiMmQ3YTU1MGQ0NjBlOTRjZDMxNTEzNGEzMTk1YmNkOTFjN2I3ODk0Li5hNGI0YmIxMDRiNGQ4
NDAxNWI4YWE1YjUzZTdkZmE3ODhjZWQyNWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TdGF0aWNQYXN0ZWJvYXJkLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFN0YXRpY1Bhc3Rl
Ym9hcmQ6OndyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKICAgICBtX2N1c3RvbURhdGEud3JpdGVTdHJpbmcodHlwZSwgdmFsdWUpOwogfQogCi12b2lk
IFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVEYXRhKGNvbnN0
IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAg
ICBtX25vbkRlZmF1bHREYXRhVHlwZXMuYWRkKHR5cGUpOwogICAgIG1fY3VzdG9tRGF0YS53cml0
ZURhdGEodHlwZSwgV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0
aWNQYXN0ZWJvYXJkLmgKaW5kZXggYzA5YjZkZTMxZjJlZGViZTAxODhkYzljNDY2YTI3MWUxYjhi
OWUxNC4uZWRkNzEzNjIzZjA2ZDIyYjM4ZTgzMmEyODM3ZmU2Njk5OWRmZDc5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaApAQCAtMzIsNyArMzIsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFN0YXRpY1Bhc3RlYm9hcmQgZmluYWwgOiBwdWJs
aWMgUGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBT
dHJpbmcgcmVhZFN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpIGZpbmFsOwog
CiAgICAgdm9pZCB3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYg
ZGF0YSkgZmluYWw7Ci0gICAgdm9pZCB3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYg
dHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CiAgICAgdm9pZCB3cml0
ZVN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0
YSk7CiAgICAgdm9pZCBjbGVhcigpIGZpbmFsOwogICAgIHZvaWQgY2xlYXIoY29uc3QgU3RyaW5n
JiB0eXBlKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L05vd1BsYXlpbmdJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5
aW5nSW5mby5oCmluZGV4IDY4Nzk1OTAwYzVhZGY5Y2M5MDQ1ZTBlYWJiMjJiMThmYTY2OTYzMTQu
LjFkNjViYzQwM2FkODUyNDNjNjcyNWU3MDQ0OGQ2Y2RhZGNjY2NlMWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaApAQCAtMzYsNyArMzYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgTm93UGxheWluZ0luZm9BcnR3b3JrIHsKICAg
ICBTdHJpbmcgc3JjOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBpbWFnZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdl
RGF0YTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb3dQbGF5aW5nSW5mb0FydHdvcmsm
IG90aGVyKSBjb25zdAogICAgIHsKQEAgLTY3LDcgKzY3LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gaW5saW5lIHN0ZDo6b3B0aW9uYWw8Tm93UGxheWluZ0luZm9BcnR3b3JrPiBOb3dQbGF5
aW5nSW4KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJu
IHsgfTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoaW1hZ2VEYXRhKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2Eu
Y3BwCmluZGV4IGU4YjE5YmYzNGViYTIzYjg1NzIwN2JlODhjZTFiNDViZjhmMmNjYzMuLmYzMjE0
Mjk1MWIxNzk5NmU2Y2UxNjc1NjMxNmJmZDQ3M2ZhYTRlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2Nv
YS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBjbGFzcyBBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0YSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKLSAgICBSZWY8U2hhcmVk
QnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICBSZWY8QXVkaW9UcmFja1ByaXZhdGVX
ZWJNPiBtX3RyYWNrOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXgg
YmI3ODhhZmExZTkxZjlhNGQzYWIzNmUyYTBjMDgxMmM5NGUxODcwZS4uN2YwNDk2MGM1OTY1YjYy
NTFiOTFiOWE1NjdlNTEwODliNTcxOWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5t
bQpAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXRO
b3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uCiAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9FbGFwc2VkVGltZSwgY2ZDdXJyZW50VGltZS5nZXQoKSk7CiAgICAgfQogICAgIGlmIChub3dQ
bGF5aW5nSW5mby5hcnR3b3JrICYmIG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YSkg
ewotICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdl
RGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWlu
Z0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1v
dGVOb3dQbGF5aW5nSW5mb0FydHdvcmtEYXRhLCBuc0FydHdvcmsuZ2V0KCkpOwogICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJ
bmZvQXJ0d29ya01JTUVUeXBlLCBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5taW1lVHlwZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5n
ZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtJZGVudGlmaWVyLCBTdHJp
bmc6Om51bWJlcihub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5zcmMuaGFzaCgpKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1No
YXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZl
ckNGLmNwcAppbmRleCA2YjY2MjE3ZmYxNjFkZTM3NGYxY2UzMWQ1ZDM0NjM0MGJiMmZjYjkxLi44
MTllMjZmYTRjZjA2Nzk1N2E1OWZlZjI5Yzk5ZjAzZjVmNDQ5MWRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRh
UmVmIGRhdGEpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KENGRGF0YVJlZiBkYXRhKQogewogICAgIGFwcGVuZChkYXRhKTsKIH0KQEAgLTQzLDI0ICs0Mywy
MCBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKICNpZiAhVVNF
KEZPVU5EQVRJT04pCiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNG
RGF0YSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpIHsKKyAgICBp
ZiAoaGFzT25lU2VnbWVudCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkYXRhID0gc3RkOjpnZXRf
aWY8UmV0YWluUHRyPENGRGF0YVJlZj4+KCZtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRh
YmxlRGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gKmRhdGE7CiAgICAgfQotICAgIGF1dG8gY2ZE
YXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKG51bGxwdHIsIHNpemUoKSkpOwotICAg
IGZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgIENGRGF0YUFwcGVu
ZEJ5dGVzKGNmRGF0YS5nZXQoKSwgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAg
ICB9KTsKLSAgICByZXR1cm4gY2ZEYXRhOworICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0
ZShudWxscHRyLCBkYXRhKCksIHNpemUoKSkpOwogfQogI2VuZGlmCiAKLVJlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YVJlZiBkYXRhKQorUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFSZWYgZGF0
YSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSkpOworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoZGF0YSkpOwogfQog
Ci12b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAordm9p
ZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0
CiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IG1fc2VnbWVudHMpIHsKICAgICAgICAg
aWYgKGVudHJ5LnNlZ21lbnQtPmhhc09uZVJlZigpKSB7CkBAIC03MCw5ICs2Niw4IEBAIHZvaWQg
U2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAgICAgfQogfQog
Ci12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQordm9pZCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFt
X2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBpZiAoZGF0YSkgewogICAgICAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKGRhdGEpfSk7
CiAgICAgICAgIG1fc2l6ZSArPSBDRkRhdGFHZXRMZW5ndGgoZGF0YSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIuaAppbmRleCAwNzk3ZGZiZThkMDE4YmU2MzYxNzQ0YzU4Zjg5MmRkNTZlZDY4OWM1
Li5jYmU4NzcxYTQ1ZDg2MmNiNWFiMDVlY2EzOTk5MjdlMDc4MzhmNTQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25D
b250ZW50RmlsdGVyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9u
c2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBh
ZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZv
aWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
cmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNSZXF1aXJlZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29u
dGVudEZpbHRlci5tbQppbmRleCA0MjkwZGIxMjhkMDAwYTQwZWVmNzBmZDI5NDFkNjM0NDkwNDZk
ZTAzLi4yZWYyNzAxZmU2NzhiZjliOTJkYjIxMmJiZWE1YzkxNWEzZmMzYTJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5z
aW9uQ29udGVudEZpbHRlci5tbQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXI6OmZpbmlzaGVkQWRkaW5nRGF0YSgpCiAgICAgc2VtYXBob3JlLndh
aXQoKTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXI6OnJlcGxhY2VtZW50RGF0YSgpIGNvbnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGRpZEJsb2NrRGF0YSgpKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUobV9yZXBsYWNlbWVudERhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgK
aW5kZXggMDY4Y2RjYjM4M2Y0MjM2NWFjMzI2NGUyMjlhNmQ2M2JjMmI0YWJkNi4uNjc5YWU5MzI5
NTE3ZTFmMzk0M2JhNTc2MmFjOGY1NmU4NjBjOGMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
ci5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVk
QWRkaW5nRGF0YSgpIG92ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50
RGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBy
ZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCiAgICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KaW5kZXgg
YjQ2MWY5NzUzNmRlM2ExNTgxM2E1ODI3Yjg2NzEzOGI5NmQ0ZjM4Yy4uMWM5NjA0NzE2YjQyNjkz
ZDVlNDZjMmUyM2U5NDFkYTAwYzgzZTRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0K
QEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpm
aW5pc2hlZEFkZGluZ0RhdGEoKQogICAgIHVwZGF0ZUZpbHRlclN0YXRlKCk7CiB9CiAKLVJlZjxT
aGFyZWRCdWZmZXI+IFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERh
dGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChkaWRC
bG9ja0RhdGEoKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVwbGFjZW1l
bnREYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3Rl
Ym9hcmRDb2NvYS5tbQppbmRleCA2ZjI4ZTgyNDM2MGNjZDMwODZjMDMxOGZhZTQwOThmMWVkZTI4
ZTI1Li5iODE3MDgxN2NlYzU5ZTIyZDNjMGU5YTc4ZjE0NmMwMzNlNGMxNjY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC00Nyw3
ICs0Nyw3IEBAIHN0YXRpYyBOU0JpdG1hcEltYWdlRmlsZVR5cGUgYml0bWFwUE5HRmlsZVR5cGUo
KQogfQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAotLy8gTWFraW5nIHRoaXMgbm9uLWlubGlu
ZSBzbyB0aGF0IFdlYktpdCAyJ3MgZGVjb2RpbmcgZG9lc24ndCBoYXZlIHRvIGluY2x1ZGUgU2hh
cmVkQnVmZmVyLmguCisvLyBNYWtpbmcgdGhpcyBub24taW5saW5lIHNvIHRoYXQgV2ViS2l0IDIn
cyBkZWNvZGluZyBkb2Vzbid0IGhhdmUgdG8gaW5jbHVkZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
LmguCiBQYXN0ZWJvYXJkV2ViQ29udGVudDo6UGFzdGVib2FyZFdlYkNvbnRlbnQoKSA9IGRlZmF1
bHQ7CiBQYXN0ZWJvYXJkV2ViQ29udGVudDo6flBhc3RlYm9hcmRXZWJDb250ZW50KCkgPSBkZWZh
dWx0OwogCkBAIC0yMTEsOSArMjExLDkgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlw
ZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5ncygpCiB9CiAKICNpZiBQTEFURk9STShNQUMpCi1zdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZC
dWZmZXIpCitzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQogewotICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5T
KFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLmNyZWF0
ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcElt
YWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBOU0RhdGEgKnBuZ0RhdGEgPSBbaW1hZ2UgcmVw
cmVzZW50YXRpb25Vc2luZ1R5cGU6Yml0bWFwUE5HRmlsZVR5cGUoKSBwcm9wZXJ0aWVzOkB7IH1d
OwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KaW5kZXgg
OWVlMGMwYjU1ZDc5NGMyYjY5MDU3YmJmMzY0YWJmMTgzOGE5Yjg1MC4uMjVmMzExZjI1ODliODJl
ZmQyNTc3YTA4ODk0YjZjNWUwNjZiOTI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KQEAgLTM1LDExICszNSwxMSBAQAogI2lt
cG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIEBpbnRlcmZhY2UgV2ViQ29yZVNoYXJl
ZEJ1ZmZlckRhdGEgOiBOU0RhdGEKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50
Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBw
b3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemU7CistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21l
bnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUlu
dGVnZXIpc2l6ZTsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkNvcmVTaGFyZWRCdWZmZXJE
YXRhIHsKLSAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dD4gX2RhdGFTZWdtZW50OworICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudD4g
X2RhdGFTZWdtZW50OwogICAgIE5TVUludGVnZXIgX3Bvc2l0aW9uOwogICAgIE5TVUludGVnZXIg
X3NpemU7CiB9CkBAIC02MSw3ICs2MSw3IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIFtzdXBlciBk
ZWFsbG9jXTsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9u
OihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQorLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRh
U2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNp
emUKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5p
bDsKQEAgLTg4LDEzICs4OCwxNCBAQCBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoTlNEYXRhICpkYXRhKQorUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShOU0Rh
dGEgKmRhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJyaWRn
ZV9jYXN0KGRhdGEpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcihicmlkZ2VfY2FzdChkYXRhKSkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKE5TRGF0YSAqZGF0YSkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKE5T
RGF0YSAqZGF0YSkKIHsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgcmV0dXJuIGFw
cGVuZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CiAKQEAgLTEwNSwxMCArMTA2LDggQEAgUmV0YWlu
UHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAogCiBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAg
Y29tYmluZUludG9PbmVTZWdtZW50KCk7CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKICAg
ICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsK
LSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7CiAgICAgcmV0dXJuIGJyaWRnZV9j
YXN0KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkpOwogfQogCkBAIC0xMTks
MTQgKzExOCwxNCBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZy
b21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgIHJldHVybiBudWxscHRy
OwogfQogCi1SZXRhaW5QdHI8TlNBcnJheT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJh
eSgpIGNvbnN0CitSZXRhaW5QdHI8TlNBcnJheT4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlTlNEYXRhQXJyYXkoKSBjb25zdAogewogICAgIHJldHVybiBjcmVhdGVOU0FycmF5KG1fc2Vn
bWVudHMsIFtdIChhdXRvJiBzZWdtZW50KSB7CiAgICAgICAgIHJldHVybiBzZWdtZW50LnNlZ21l
bnQtPmNyZWF0ZU5TRGF0YSgpOwogICAgIH0pOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5T
RGF0YT4gRGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFk
b3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBhbGxvY10gaW5pdFdpdGhEYXRhU2VnbWVu
dDoqdGhpcyBwb3NpdGlvbjowIHNpemU6c2l6ZSgpXSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCBmYmMyODNm
YmMzMzY5YmY4MjdlMzE2OTk0YzRjOTRlMDYzNjNjYjgxLi4yZGU0MTkzNGRhMTk4NzlkNzVjMGRm
OGE4OWU2NGU1OTljMjlhZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgTG9n
Z2VyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBDRE1JbnN0YW5jZVNlc3Npb247CiBzdHJ1
Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKIApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBD
RE1JbnN0YW5jZUNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1JbnN0YW5jZUNsaWVu
dD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkNETUluc3RhbmNlQ2xpZW50KCkgPSBkZWZhdWx0
OwogCi0gICAgdmlydHVhbCB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2
ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiB9OwogCiAvLyBKYXZhU2NyaXB0
J3MgaGFuZGxlIHRvIGEgQ0RNSW5zdGFuY2UsIG11c3QgYmUgdXNlZCBmcm9tIHRoZQpAQCAtOTgs
NyArOTgsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXpl
V2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93
RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxs
YmFjayYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxT
aGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNj
ZXNzQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3Jl
YXRlU2Vzc2lvbigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXggMzdjZDA3YzdiZjJk
Yzc1ZTQxZmQ1YzZjN2RlY2Y0M2UxMDM5ZTExNC4uZDI1OTIyNWJhOWUwMmE2NGQwY2VjZDYxNTFm
ZGY5M2Y0ZjI0NjZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTQzLDE2ICs0MywxNiBA
QCBjbGFzcyBMb2dnZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNSW5zdGFuY2VT
ZXNzaW9uQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkNs
aWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudCgp
ID0gZGVmYXVsdDsKIAogICAgIHVzaW5nIEtleVN0YXR1cyA9IENETUtleVN0YXR1czsKLSAgICB1
c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+
LCBLZXlTdGF0dXM+PjsKKyAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBWZWN0b3I8c3RkOjpw
YWlyPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47CiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IG1lc3NhZ2UpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5
cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdXNpbmcg
UGxhdGZvcm1EaXNwbGF5SUQgPSB1aW50MzJfdDsKICAgICB2aXJ0dWFsIFBsYXRmb3JtRGlzcGxh
eUlEIGRpc3BsYXlJRCgpID0gMDsKQEAgLTc4LDEzICs3OCwxMyBAQCBwdWJsaWM6CiAgICAgICAg
IFN1Y2NlZWRlZCwKICAgICB9OwogCi0gICAgdXNpbmcgTGljZW5zZUNhbGxiYWNrID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIFN1Y2Nlc3NWYWx1ZSBz
dWNjZWVkZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUs
IGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0
RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpID0gMDsKKyAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1l
c3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRp
b24sIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSA9IDA7
CiAKICAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6
OktleVN0YXR1c1ZlY3RvcjsKLSAgICB1c2luZyBNZXNzYWdlID0gc3RkOjpwYWlyPE1lc3NhZ2VU
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6cGFpcjxN
ZXNzYWdlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAgICB1c2luZyBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc2Vzc2lvbldh
c0Nsb3NlZCwgc3RkOjpvcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBzdGQ6Om9wdGlvbmFsPE1l
c3NhZ2U+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+OwotICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBM
aWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgPSAwOwogCiAgICAgZW51bSBjbGFzcyBTZXNzaW9uTG9h
ZEZhaWx1cmUgOiB1aW50OF90IHsKICAgICAgICAgTm9uZSwKQEAgLTEwMCw3ICsxMDAsNyBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpID0gMDsKIAotICAgIHVzaW5nIFJlbW92
ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0YXR1c1Zl
Y3RvciYmLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmLCBTdWNjZXNzVmFsdWUp
PjsKKyAgICB1c2luZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChLZXlTdGF0dXNWZWN0b3ImJiwgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+JiYsIFN1Y2Nlc3NWYWx1ZSk+OwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVT
ZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlbW92ZVNl
c3Npb25EYXRhQ2FsbGJhY2smJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHN0b3JlUmVjb3Jk
T2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCmluZGV4IGNjNmRj
N2YxNDBjZDY3ZDJiN2I4NGY2YWIyYzI4NDMxNmRmZGRjY2YuLjUyYTYxNDhjODNjZDUzOTNjOGY4
NzRlZDg1YWQ4YmYyN2U1YmU1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKQEAgLTczLDggKzczLDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIHN1cHBv
cnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2Uo
Y29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChj
b25zdCBTdHJpbmcmKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcAppbmRleCBmMjE4Zjk3
OTA0ZmJiYTQ5ZjFlYmRmNDhlMjA1ZmU3M2RmYWZiNjQ4Li40YmE3NWJmMDBkOWY3MTNiNWFmYmJh
NzkzNDAxOTcxNmNkOGYwMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgS2V5U3RvcmU6OmNvbnZlcnRUb0pTS2V5U3RhdHVz
VmVjdG9yKCkgY29uc3QKICAgICBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBr
ZXlTdGF0dXNWZWN0b3I7CiAgICAga2V5U3RhdHVzVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobnVtS2V5cygpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGtleSA6IG1fa2V5cykKLSAgICAg
ICAga2V5U3RhdHVzVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1
ZmZlcj4sIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzPiB7IGtleS0+aWRBc1NoYXJlZEJ1
ZmZlcigpLCBrZXktPnN0YXR1cygpIH0pOworICAgICAgICBrZXlTdGF0dXNWZWN0b3IudW5jaGVj
a2VkQXBwZW5kKHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIENETUluc3Rh
bmNlU2Vzc2lvbjo6S2V5U3RhdHVzPiB7IGtleS0+aWRBc1NoYXJlZEJ1ZmZlcigpLCBrZXktPnN0
YXR1cygpIH0pOwogICAgIHJldHVybiBrZXlTdGF0dXNWZWN0b3I7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCmluZGV4IGE1ODRi
NmNkMjY2YjA5ODA5MDI1NGQ3ZGNiZGRiZjYwZDkzMzFmYmIuLmUxZTA5OGExZDVmNWZmYzY1YzJh
NDhmYTQwYWE5NzJmZTg5ZTFlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBLZXlIYW5kbGUoc3RhdHVzLCBXVEZNb3Zl
KGtleUlEKSwgV1RGTW92ZShrZXlIYW5kbGVWYWx1ZSkpKTsKICAgICB9Ci0gICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gaWRBc1NoYXJlZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG1faWQuZGF0YSgpLCBtX2lkLnNpemUoKSk7IH0KKyAgICBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gaWRBc1NoYXJlZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKG1faWQuZGF0YSgpLCBtX2lkLnNpemUoKSk7IH0KIAogICAgIGJvb2wgdGFrZVZh
bHVlSWZEaWZmZXJlbnQoS2V5SGFuZGxlVmFsdWVWYXJpYW50JiYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcApp
bmRleCA1YmViY2I0OWFhOGViOWEyYmIwNzExZWFlMDgwZjM3N2UyMmI5ODM0Li5mY2E2ZjIzODhh
NTZhNmExYzcyNDcwZTVhNDZmZGQyOGYwNzM3NTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgQ0RNVXRpbGl0aWVzIHsK
IAotUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQorUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBGYWlsIG9uIGxhcmdlIGJ1
ZmZlcnMgd2hvc2Ugc2l6ZSBkb2Vzbid0IGZpdCBpbnRvIGEgMzItYml0IHVuc2lnbmVkIGludGVn
ZXIuCiAgICAgc2l6ZV90IHNpemUgPSBidWZmZXIuc2l6ZSgpOwpAQCAtNDYsNyArNDYsNyBAQCBS
ZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZl
ciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgot
ICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNp
emUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09O
OjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oCmluZGV4
IDc0ZjUxNWIwYmQyYTg3MTY4ZWVmMjRiMThmOTVkZWFiZWU4MjhlNmMuLmZjZjViZGRhN2M1OTdk
M2MzYWMzNDllZTE3ODllNGFkNmUwYzk1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oCkBAIC0zNSwxMSArMzUsMTEg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgQ0RNVXRpbGl0aWVzIHsKIAotUmVm
UHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwor
UmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKIAogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IGRk
MzQ1N2JmZGU4YzkyMTg3N2RkN2I5ODJlOTkyMWZjYzBmZWQyZWQuLjMxYTlmZGZhMDJkNmQwMGNh
MjYxODI1MmRlZDkzNTMxM2RjNThhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAK
QEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUxpY2Vuc2VSZWxlYXNlQWNrbm93
bGVkZ2VtZW50Rm9ybWF0KGNvbnN0IEpTT046Ok9iamVjdCYgcm9vdCkKIC8vIF07CiAKIC8vIFRo
aXMgZnVuY3Rpb24gZXh0cmFjdHMgdGhlIEtleUlkcyBjb3VudCBhbmQgdGhlIGxvY2F0aW9uIG9m
IHRoZSBmaXJzdCBLZXlJZCBpbiBpbml0RGF0YSBidWZmZXIuCi1zdGF0aWMgc3RkOjpwYWlyPHVu
c2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwg
dW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgc3RkOjpwYWlyPHVuc2lnbmVk
LCB1bnNpZ25lZD4ga2V5SWRzTWFwKDAsIDApOwogCkBAIC0xMzgsNyArMTM4LDggQEAgc3RhdGlj
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21D
ZW5jSW5pdERhdGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRh
LnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAg
cmV0dXJuIGtleUlkc01hcDsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7Cisg
ICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOwor
ICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNpZ25l
ZCBpbml0RGF0YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAw
OwogICAgIHVuc2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTE4OCwxNSArMTg5LDE1IEBAIHN0YXRp
YyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9t
Q2VuY0luaXREYXRhKGNvbnN0CiB9CiAKIC8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBp
bml0RGF0YSBzaGFyZWRCdWZmZXIgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRhLgotc3RhdGljIGJv
b2wgaXNDZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBi
b29sIGlzQ2VuY0luaXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRh
KQogewogICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCA9IGV4dHJh
Y3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoaW5pdERhdGEpOwogICAgIHJldHVybiAo
KGtleUlkc01hcC5maXJzdCkgJiYgKGtleUlkc01hcC5zZWNvbmQpKTsKIH0KIAotc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgaW5pdERhdGEpCitzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4
dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGluaXREYXRhKQogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAKICAgICBzdGQ6
OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRp
b25Gcm9tQ2VuY0luaXREYXRhKGluaXREYXRhKTsKICAgICB1bnNpZ25lZCBrZXlJZENvdW50ID0g
a2V5SWRzTWFwLmZpcnN0OwpAQCAtMjA0LDkgKzIwNSwxMCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RAogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRh
LgogICAgIGlmICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCi0gICAgICAgIHJldHVybiBrZXlJZHM7
CisgICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCi0gICAgYXV0byogZGF0YSA9IGluaXRE
YXRhLmRhdGEoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VD
b250aWd1b3VzKCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgp
OwogCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8g
a2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yMjQsMTcgKzIyNiwxNyBA
QCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIs
IFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50
b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgp
LCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBw
ZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJ
ZHMudGFrZSgpOwogfQogCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJv
bVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGljIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewotICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBrZXlJZHM7CiAKICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIFdlYk0g
aW5pdERhdGEuCiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBr
ZXlJZHM7CisgICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBvYmplY3Qg
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpB
cnJheTo6Y3JlYXRlKCk7CkBAIC0yNDUsMTIgKzI0NywxMiBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGlu
aXREYQogICAgIC8vIFRoZSBmb3JtYXQgaXMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHRoZSBm
b2xsb3dpbmcgbWVtYmVyczoKICAgICAvLyAia2lkcyIKICAgICAvLyBBbiBhcnJheSBvZiBrZXkg
SURzLiBFYWNoIGVsZW1lbnQgb2YgdGhlIGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5jb2Rpbmcg
b2YgdGhlIG9jdGV0IHNlcXVlbmNlIGNvbnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4KLSAgICBr
ZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5k
YXRhKCksIGluaXREYXRhLnNpemUoKSkpOworICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJh
c2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
aW5pdERhdGEuc2l6ZSgpKSk7CiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92
ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0
cmluZygpLnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25E
YXRhLmxlbmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNv
bkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtl
KCk7CiB9CiAKIENETUZhY3RvcnlDbGVhcktleSYgQ0RNRmFjdG9yeUNsZWFyS2V5OjpzaW5nbGV0
b24oKQpAQCAtMzg4LDcgKzM5MCw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0
c1Nlc3Npb25zKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDRE1Qcml2YXRl
Q2xlYXJLZXk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAorYm9vbCBDRE1Qcml2YXRlQ2xl
YXJLZXk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAgICAvLyBW
YWxpZGF0ZSB0aGUgaW5pdERhdGEgYnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0IGluIGtleWlkcyBj
YXNlLgogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUs
ICJrZXlpZHMiKSAmJiBDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdChpbml0RGF0YSkpCkBA
IC00MDUsNyArNDA3LDcgQEAgYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIC8v
IFZhbGlkYXRlIHRoZSByZXNwb25zZSBidWZmZXIgYXMgYW4gSlNPTiBvYmplY3QuCiAgICAgaWYg
KCFDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdChyZXNwb25zZSkpCkBAIC00MzEsNyArNDMz
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRp
b24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXIKICAgICBjYWxsYmFjayhzdWNjZWVkZWQpOwog
fQogCi12b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxT
aGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0
YW5jZUNsZWFyS2V5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgLy8gUmVqZWN0IHNl
dHRpbmcgYW55IHNlcnZlciBjZXJ0aWZpY2F0ZS4KICAgICBjYWxsYmFjayhGYWlsZWQpOwpAQCAt
NDUzLDcgKzQ1NSw3IEBAIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNlQ2xl
YXJLZXk6OmNyZWF0ZVNlc3Npb24oKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ0RNSW5zdGFu
Y2VTZXNzaW9uQ2xlYXJLZXkoKnRoaXMpKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25D
bGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNr
JiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7CiAgICAgc3RhdGljIHVpbnQzMl90IHNfc2Vzc2lvbklkVmFsdWUgPSAwOwogICAgICsr
c19zZXNzaW9uSWRWYWx1ZTsKQEAgLTQ3NSw3ICs0NzcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmlu
ZyYgaQogICAgICAgICB9KTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNr
KQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICNpZiBM
T0dfRElTQUJMRUQKICAgICAvLyBXZSBvbmx5IHVzZSB0aGUgc2VzaW9uIElEIGZvciBkZWJ1ZyBs
b2dnaW5nLiBUaGUgdmVyYm9zZSBwcmVwcm9jZXNzb3IgY2hlY2tzIGFyZSBiZWNhdXNlCkBAIC01
NjYsNyArNTY4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vz
c2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKICAgICBBU1NFUlQoc2Vzc2lv
bklkID09IG1fc2Vzc2lvbklEKTsKIAogICAgIGF1dG8gZGlzcGF0Y2hDYWxsYmFjayA9Ci0gICAg
ICAgIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCAmY2FsbGJhY2tdKEtleVN0YXR1c1Zl
Y3RvciYmIGtleVN0YXR1c1ZlY3Rvciwgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4m
JiBtZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VzcykgeworICAgICAgICBbd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgJmNhbGxiYWNrXShLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNW
ZWN0b3IsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIG1lc3Nh
Z2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZXNzKSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KAogICAgICAgICAgICAgICAgIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqd2Vha1RoaXMgfSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwga2V5U3RhdHVzVmVjdG9yID0gV1RGTW92ZShrZXlT
dGF0dXNWZWN0b3IpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc3VjY2Vzc10oKSBtdXRh
YmxlIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTU3OSw3ICs1ODEs
NyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZW1vdmVTZXNzaW9uRGF0YShj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZQogICAgIC8vIENvbnN0cnVjdCB0aGUgS2V5U3Rh
dHVzVmVjdG9yIG9iamVjdCwgcmVwcmVzZW50aW5nIHJlbGVhc2VkIGtleXMsIGFuZCB0aGUgbWVz
c2FnZSBpbiB0aGUKICAgICAvLyAnbGljZW5zZSByZWxlYXNlJyBmb3JtYXQuCiAgICAgS2V5U3Rh
dHVzVmVjdG9yIGtleVN0YXR1c1ZlY3RvciA9IG1fa2V5U3RvcmUuYWxsS2V5c0FzKENETUluc3Rh
bmNlU2Vzc2lvbjo6S2V5U3RhdHVzOjpSZWxlYXNlZCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbWVzc2FnZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZTsK
ICAgICB7CiAgICAgICAgIC8vIENvbnN0cnVjdCBKU09OIHRoYXQgcmVwcmVzZW50cyB0aGUgJ2xp
Y2Vuc2UgcmVsZWFzZScgZm9ybWF0LCBjcmVhdGluZyBhICdraWRzJyBhcnJheQogICAgICAgICAv
LyBvZiBiYXNlNjRVUkwtZW5jb2RlZCBrZXkgSURzIGZvciBhbGwga2V5cyB0aGF0IHdlcmUgYXNz
b2NpYXRlZCB3aXRoIHRoaXMgc2Vzc2lvbi4KQEAgLTU5MywxNCArNTk1LDE0IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkLCBMaWNlCiAgICAgICAgICAgICByb290T2JqZWN0LT5zZXRBcnJheSgia2lkcyIs
IFdURk1vdmUoYXJyYXkpKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIENvcHkgdGhlIEpTT04g
ZGF0YSBpbnRvIGEgU2hhcmVkQnVmZmVyIG9iamVjdC4KKyAgICAgICAgLy8gQ29weSB0aGUgSlNP
TiBkYXRhIGludG8gYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIG9iamVjdC4KICAgICAgICAgU3Ry
aW5nIG1lc3NhZ2VTdHJpbmcgPSByb290T2JqZWN0LT50b0pTT05TdHJpbmcoKTsKICAgICAgICAg
Q1N0cmluZyBtZXNzYWdlQ1N0cmluZyA9IG1lc3NhZ2VTdHJpbmcudXRmOCgpOwogICAgICAgICBt
ZXNzYWdlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUobWVzc2FnZUNTdHJpbmcuZGF0YSgpLCBtZXNz
YWdlQ1N0cmluZy5sZW5ndGgoKSk7CiAgICAgfQogCiAgICAgbV9rZXlTdG9yZS51bnJlZkFsbEtl
eXMoKTsKLSAgICBkaXNwYXRjaENhbGxiYWNrKFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgUmVm
PFNoYXJlZEJ1ZmZlcj4oKm1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CisgICAg
ZGlzcGF0Y2hDYWxsYmFjayhXVEZNb3ZlKGtleVN0YXR1c1ZlY3RvciksIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPigqbWVzc2FnZSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKIH0KIAog
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNv
bnN0IFN0cmluZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAppbmRleCA5YzA3NDdkYzFiZDhl
NjdmM2JhODY0ZDliODExMzM3NjI1YzhhNjc5Li45ZTI3ZmU5MTJjNGRhMDY3ZmIyNmNhZmJjN2Y2
YTY1MWRhNDc1MjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKQEAgLTg2LDggKzg2LDgg
QEAgcHVibGljOgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKICAgICBib29s
IHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBw
b3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
c2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiB9OwogCkBAIC05
OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICAvLyBDRE1JbnN0YW5jZQogICAgIEltcGxlbWVudGF0
aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1l
bnRhdGlvblR5cGU6OkNsZWFyS2V5OyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3Vy
YXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJ
ZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5h
bDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1
Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAg
ICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPENETUluc3Rh
bmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAtMTA5LDggKzEwOSw4IEBAIGNs
YXNzIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5IGZpbmFsIDogcHVibGljIENETUluc3RhbmNl
U2Vzc2lvblByb3h5IHsKIHB1YmxpYzoKICAgICBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleShD
RE1JbnN0YW5jZUNsZWFyS2V5JiBwYXJlbnQpCiAgICAgICAgIDogQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkocGFyZW50KSB7IH0KLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERh
dGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRh
dGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9h
ZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRT
ZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3Ry
aW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNz
aW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxs
YmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9LZXllZEVuY29kZXJHZW5lcmljLmgKaW5kZXggZTk2OGU5ODVjN2VlY2VmZTQzNWFhOTIwNWM0
NGRkMzVhZWQ4ZTBkMC4uZWNmNGUwOGM5Yjk5MWFkZTI3M2JkNDRjNjBiYjE1ZmUwMTYzNWIxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJH
ZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBLZXllZEVuY29kZXJHZW5lcmljIGZpbmFsIDogcHVibGljIEtleWVkRW5jb2RlciB7CiBwdWJs
aWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZl
ckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGli
LmNwcAppbmRleCA4YThjMTBiNzAyNGNmZTAzOGU5ZmE3YjcxNWJlMjY4ODlmYzA1ZTI4Li45Mzdk
MWZiNmYwYzhkN2I1MWYxOGZmMTU1NjBiM2I5NGE3NGY2MWIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAgLTI2LDE2ICsyNiwx
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KEdCeXRlcyogYnl0ZXMpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKEdCeXRlcyogYnl0ZXMpCiB7CiAgICAgQVNTRVJUKGJ5dGVzKTsKICAgICBtX3NpemUg
PSBnX2J5dGVzX2dldF9zaXplKGJ5dGVzKTsKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERh
dGFTZWdtZW50OjpjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+KGJ5dGVzKSkgfSk7CiB9CiAKLVJlZjxT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMpCitSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRl
cyogYnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJ5dGVz
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihieXRl
cykpOwogfQogCiBHUmVmUHRyPEdCeXRlcz4gU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IDlmYzRlYTgy
ZWJiYzc3ZWFkOTAxMDg1NDM4MDgyOWUxNWJiYWI2ZjQuLmRjMWZiMTZlYTBiMTk2YzVkMTNiZDQx
MTRlNTBjY2RjZDliMzdjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmgKQEAgLTU5LDcgKzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRm9udENhY2hl
OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgR2x5cGhQYWdlOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IEdseXBoRGF0
YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRm
b3JtRGF0YS5oCmluZGV4IDMwZGZhYTJkMmY4NWE5ZjdjZGEyMDA4MjlkZTE5OWIxNGU4NGIyMTku
LmZiYmNjYzQzNjg0NDc0OTA4M2NlODkxZjM2M2Y2Y2M0MGYyOTc0NTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTc0
LDcgKzc0LDYgQEAgaW50ZXJmYWNlIElEV3JpdGVGb250RmFjZTsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRm9udERlc2NyaXB0aW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiAvLyBU
aGlzIGNsYXNzIGlzIGNvbmNlcHR1YWxseSBpbW11dGFibGUuIE9uY2UgY3JlYXRlZCwgbm8gaW5z
dGFuY2VzIHNob3VsZCBldmVyIGNoYW5nZSAoaW4gYW4gb2JzZXJ2YWJsZSB3YXkpLgogY2xhc3Mg
Rm9udFBsYXRmb3JtRGF0YSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5jcHAKaW5kZXggNGE4NTNlYjY0OTUzZDRhZTQ4MzRmODdjNTQ4N2FjZDM2NGM1N2Q4MS4uZTMy
YTM2YzYwNzYxOTIxNjhjNmEzNzkzMThmNzhhZTE3ODljNDgyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgSW1h
Z2U6OmlzUG9zdFNjcmlwdFJlc291cmNlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVS
TCYgdXJsKQogfQogCiAKLUVuY29kZWREYXRhU3RhdHVzIEltYWdlOjpzZXREYXRhKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCitFbmNvZGVkRGF0YVN0
YXR1cyBJbWFnZTo6c2V0RGF0YShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBtX2VuY29kZWRJbWFnZURhdGEgPSBXVEZN
b3ZlKGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRl
eCA2YTA4MTY5NTdhYTkzYzQxMWE1NmNkNGMyYmMyMGRkNmQ5MDQ0ZGVjLi42NTVkZmU3M2NmZjZh
ZDFkMDRmNDhiYzIwMTllYmI4MDQxN2Q2MTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmgKQEAgLTcwLDcgKzcwLDcgQEAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwog
Y2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBz
dHJ1Y3QgTGVuZ3RoOwogCiAvLyBUaGlzIGNsYXNzIGdldHMgbm90aWZpZWQgd2hlbiBhbiBpbWFn
ZSBjcmVhdGVzIG9yIGRlc3Ryb3lzIGRlY29kZWQgZnJhbWVzIGFuZCB3aGVuIGl0IGFkdmFuY2Vz
IGFuaW1hdGlvbiBmcmFtZXMuCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsgfQogICAgIHZpcnR1YWwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZTsgfQogCi0gICAgV0VCQ09S
RV9FWFBPUlQgRW5jb2RlZERhdGFTdGF0dXMgc2V0RGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFbmNvZGVk
RGF0YVN0YXR1cyBzZXREYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2aXJ0dWFsIEVuY29kZWREYXRhU3RhdHVzIGRh
dGFDaGFuZ2VkKGJvb2wgLyphbGxEYXRhUmVjZWl2ZWQqLykgeyByZXR1cm4gRW5jb2RlZERhdGFT
dGF0dXM6OlVua25vd247IH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIHV0aSgpIGNvbnN0IHsgcmV0
dXJuIFN0cmluZygpOyB9IC8vIG51bGwgc3RyaW5nIGlmIHVua25vd24KQEAgLTEzMyw4ICsxMzMs
OCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveURlY29kZWREYXRhKGJvb2wg
ZGVzdHJveUFsbCA9IHRydWUpID0gMDsKIAotICAgIFNoYXJlZEJ1ZmZlciogZGF0YSgpIHsgcmV0
dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciog
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQorICAgIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSB7IHJldHVybiBtX2VuY29kZWRJbWFnZURhdGEu
Z2V0KCk7IH0KKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCk7CiAKQEAgLTIwOSw3ICsyMDksNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdCB7
IHJldHVybiBDb2xvcigpOyB9CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9lbmNvZGVkSW1hZ2VEYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBt
X2VuY29kZWRJbWFnZURhdGE7CiAgICAgSW1hZ2VPYnNlcnZlciogbV9pbWFnZU9ic2VydmVyOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcj4gbV9hbmltYXRpb25TdGFydFRpbWVyOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0
b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9y
ZS5oCmluZGV4IDRkZGI2ZGY4M2VjYjhiOWI3OTU3ZjQ2NjRlMTg0ZjAwODFlODEwMTEuLmRlMzNm
MWFmNDEyZGMwOGIyYjk2MWExOTQ5NDVjOWNjOTBhYTY2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaApAQCAtNjYsNyAr
NjYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgYnVm
ZmVyLmdyb3coYnVmZmVyU2l6ZSk7Ci0gICAgICAgIG1fcGl4ZWxzID0gU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1fcGl4ZWxzID0g
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZl
cikpOwogICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihj
b25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgICAgIG1fc2l6ZSA9
IHNpemU7CiAgICAgICAgIG1fZnJhbWVSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBtX3NpemUp
OwpAQCAtMjA2LDcgKzIwNiw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBBU1NFUlQoIW1f
c2l6ZS5pc0VtcHR5KCkgJiYgIWlzT3ZlclNpemUobV9zaXplKSk7CiAgICAgICAgIFZlY3Rvcjx1
aW50OF90PiBidWZmZXIgeyBvdGhlci5tX3BpeGVscy0+ZGF0YSgpLCBvdGhlci5tX3BpeGVscy0+
c2l6ZSgpIH07Ci0gICAgICAgIG1fcGl4ZWxzID0gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6
Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1fcGl4ZWxzID0gRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAg
ICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVp
bnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgfQogCkBAIC0yMzMsNyArMjMzLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIFBhY2tlZENvbG9yOjpBUkdCIHsgcmVzdWx0IH0udmFs
dWU7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fcGl4
ZWxzOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9w
aXhlbHM7CiAgICAgdWludDMyX3QqIG1fcGl4ZWxzUHRyIHsgbnVsbHB0ciB9OwogICAgIEludFNp
emUgbV9zaXplOwogICAgIEludFJlY3QgbV9mcmFtZVJlY3Q7IC8vIFRoaXMgd2lsbCBhbHdheXMg
anVzdCBiZSB0aGUgZW50aXJlIGJ1ZmZlciBleGNlcHQgZm9yIEdJRiBhbmQgUE5HIGZyYW1lcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAK
aW5kZXggMDg2OWU5OWEwMDg4NmY3Y2QxMjE4NmZlMzE2MWRlMDQ3ZmE1MTM2MS4uN2M1NDk0N2Y0
ZDgxNDA4NTU5Y2M0NWM0YWM0OWExOWI5ZmM4NmY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZv
aWQgSW1hZ2VEZWNvZGVyOjpjbGVhckZhY3RvcmllcygpCiB9CiAjZW5kaWYKIAotUmVmUHRyPElt
YWdlRGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8SW1hZ2VE
ZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAg
VU5VU0VEX1BBUkFNKG1pbWVUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRleCBhMWEwOGFkYzE3NWQ0NGJhYTQ0MmU0NGE5NGFh
OTY3YTA0ZjVmNjA3Li42YThmZmNiNjBmYzExNTZlYjg0ODc2ZGVmYjA3Y2JjMGIxMTk4NDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaApA
QCAtMzcsMTIgKzM3LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSW1hZ2VEZWNv
ZGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlRGVjb2Rlcj4gewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VE
ZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRy
PEltYWdlRGVjb2Rlcj4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwog
ICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAogICAgIGVudW0gY2xhc3Mg
TWVkaWFUeXBlIHsKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKICAgICB1c2luZyBTdXBwb3J0c01lZGlhVHlwZUZ1bmMgPSBGdW5jdGlvbjxib29sKE1l
ZGlhVHlwZSk+OwogICAgIHVzaW5nIENhbkRlY29kZVR5cGVGdW5jID0gRnVuY3Rpb248Ym9vbChj
b25zdCBTdHJpbmcmKT47Ci0gICAgdXNpbmcgQ3JlYXRlSW1hZ2VEZWNvZGVyRnVuYyA9IEZ1bmN0
aW9uPFJlZlB0cjxJbWFnZURlY29kZXI+KFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik+OworICAgIHVzaW5nIENyZWF0
ZUltYWdlRGVjb2RlckZ1bmMgPSBGdW5jdGlvbjxSZWZQdHI8SW1hZ2VEZWNvZGVyPihGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKT47CiAKICAgICBzdHJ1Y3QgSW1hZ2VEZWNvZGVyRmFjdG9yeSB7CiAg
ICAgICAgIFN1cHBvcnRzTWVkaWFUeXBlRnVuYyBzdXBwb3J0c01lZGlhVHlwZTsKQEAgLTEyOSw3
ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2
ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cykpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRFeHBl
Y3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldERhdGEo
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpID0gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4
IGQ4MWM0ODAxOTI4NDZkZDdlMzIxYzJkZmJmYmYxZTBjMjBkYWE2NzEuLjMwNzc0MzMxNWE0MWVj
YTFjOWIyYmM3NzNkMDc5ZWU1ZDQzYmFmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgSW1hZ2VTb3Vy
Y2U6On5JbWFnZVNvdXJjZSgpCiAgICAgQVNTRVJUKCZtX3J1bkxvb3AgPT0gJlJ1bkxvb3A6OmN1
cnJlbnQoKSk7CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUo
U2hhcmVkQnVmZmVyKiBkYXRhKQorYm9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWls
YWJsZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghZGF0YSB8fCBp
c0RlY29kZXJBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC05Niw3ICs5Niw3
IEBAIGJvb2wgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVy
KiBkYXRhKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEltYWdlU291cmNlOjpzZXREYXRh
KFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlU291
cmNlOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogewogICAgIGlmICghZGF0YSB8fCAhZW5zdXJlRGVjb2RlckF2YWlsYWJsZShkYXRh
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA0LDEzICsxMDQsMTMgQEAgdm9pZCBJbWFnZVNvdXJj
ZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAg
IG1fZGVjb2Rlci0+c2V0RGF0YSgqZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0KIAotdm9pZCBJ
bWFnZVNvdXJjZTo6cmVzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgSW1hZ2VTb3Vy
Y2U6OnJlc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIG1fZGVj
b2RlciA9IG51bGxwdHI7CiAgICAgc2V0RGF0YShkYXRhLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsK
IH0KIAotRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VTb3VyY2U6OmRhdGFDaGFuZ2VkKFNoYXJlZEJ1
ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCitFbmNvZGVkRGF0YVN0YXR1cyBJbWFn
ZVNvdXJjZTo6ZGF0YUNoYW5nZWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwog
ICAgIGNsZWFyTWV0YWRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5oCmluZGV4IDhhZjUwODBhMDBhOTkxNjA4MGYxZjBiMjc3MDczYzJhODUz
NDUyNTguLjgxNGYwZTEyZWJhYTQ4Zjg2YWNiNTIxOTczYzMxZDVkMzgyZjZmYmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtMzksNyAr
MzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCaXRtYXBJbWFnZTsKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDsKIGNsYXNzIEltYWdlRGVjb2RlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEltYWdlU291cmNlIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlU291cmNlPiwgcHVibGljIENhbk1ha2VXZWFr
UHRyPEltYWdlU291cmNlPiB7CiAgICAgZnJpZW5kIGNsYXNzIEJpdG1hcEltYWdlOwpAQCAtNTYs
OSArNTYsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlU291
cmNlKFdURk1vdmUobmF0aXZlSW1hZ2UpKSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFNo
YXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIHZvaWQgcmVzZXRE
YXRhKFNoYXJlZEJ1ZmZlciogZGF0YSk7Ci0gICAgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5n
ZWQoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCBz
ZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KTsKKyAgICB2b2lkIHJlc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAg
ICBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgp
OwogCiAgICAgdW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZWRT
aXplOyB9CkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgogICAgIFQgZmlyc3RGcmFtZU1ldGFkYXRhQ2FjaGVJZk5lZWRlZChUJiBjYWNoZWRWYWx1
ZSwgTWV0YWRhdGFUeXBlLCBUIChJbWFnZUZyYW1lOjoqZnVuY3RvcikoKSBjb25zdCwgSW1hZ2VG
cmFtZTo6Q2FjaGluZywgY29uc3Qgc3RkOjpvcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgPSB7
IH0pOwogCi0gICAgYm9vbCBlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKFNoYXJlZEJ1ZmZlciogZGF0
YSk7CisgICAgYm9vbCBlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGRhdGEpOwogICAgIGJvb2wgaXNEZWNvZGVyQXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4g
bV9kZWNvZGVyOyB9CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoc2l6ZV90IGZyYW1lQ291
bnQsIHNpemVfdCBleGNsdWRlRnJhbWUpOwogICAgIHZvaWQgZGVjb2RlZFNpemVDaGFuZ2VkKGxv
bmcgbG9uZyBkZWNvZGVkU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5jcHAKaW5kZXggM2U1OWVhOWQwOGRkMWM5YmVlMjNiYTNmNjM1Y2YzNWJmYzI4MjI5Mi4u
NTc3YmQ1MDhhNWM0MDlmNGJlOWU0Y2YyMDJiODFlNjFlNDViNDRhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRC
dWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK1JlZjxNb2RlbD4gTW9kZWw6
OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVy
bCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2RlbChXVEZNb3ZlKGRhdGEpLCBXVEZN
b3ZlKG1pbWVUeXBlKSwgV1RGTW92ZSh1cmwpKSk7CiB9CiAKLU1vZGVsOjpNb2RlbChSZWY8U2hh
cmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitNb2RlbDo6TW9kZWwo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiAgICAg
OiBtX2RhdGEoV1RGTW92ZShkYXRhKSkKICAgICAsIG1fbWltZVR5cGUoV1RGTW92ZShtaW1lVHlw
ZSkpCiAgICAgLCBtX3VybChXVEZNb3ZlKHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuaAppbmRleCAwNjU4MTMzNzlmMTEyNTVkMmQ3YzdmNmI1MDM0NDNkYzYzMGQw
NGUxLi5lNmJkZTE2NmY5NDRjZGU3ZGIzMjhjMjk3NmVjNjgyYWRiNmQxMDM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBNb2RlbCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1v
ZGVsPiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3Jl
YXRlKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJM
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB+TW9kZWwoKTsKIAogICAgIFJlZjxTaGFyZWRCdWZmZXI+
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+IGRlY29k
ZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1
ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8U2hhcmVkQnVmZmVy
PiYmLCBTdHJpbmcsIFVSTCk7CiAKICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAg
U3RyaW5nIG1fbWltZVR5cGU7CkBAIC02MCw3ICs2MCw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+CiB2b2lkIE1vZGVsOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBl
bmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4obV9kYXRhLT5zaXplKCkpOwotICAgIGVuY29k
ZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwg
MSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKICAgICBlbmNvZGVyIDw8IG1fbWlt
ZVR5cGU7CiAgICAgZW5jb2RlciA8PCBtX3VybDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVy
LmgKaW5kZXggNzQ1OWM1ODU4ZDI0ODdlZjJjNWZkMzcxNzM5ODZiMzM3MzRlYzI4YS4uODg2OTFk
YzI1NmQ2ZGQ2YzQ1ZjQ2ZTAxNTQ5Njc0MjQ1YWEzNTMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyLmgKQEAgLTUxLDggKzUxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWRp
cmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
c291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHJlcXVlc3QpKTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNoZVJlc3Bv
bnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIC8vIFRo
aXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQg
dXNlcyBTaGFyZWRCdWZmZXIuCisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgeyBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIGJlIHJl
bW92ZWQgb25jZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB1c2VzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIuCiAgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmIHBsYXRmb3JtLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IGRhdGFSZWNl
aXZlZChwbGF0Zm9ybSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZh
aWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQ
cml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZl
clByaXZhdGUuY3BwCmluZGV4IDU0OTlmMzdhN2YzNjQ2YmQ1ZjM5NWE0OGIwOWQ5NDExZDRjOWI2
NjQuLmQzZTFiNTgwNGU4NWE5OTExY2YyMGZjZWQzNGJmMjU1YTMxNDQzNGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZh
dGUuY3BwCkBAIC0xMzE4LDcgKzEzMTgsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmRp
ZFJlY2VpdmVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmIG9yaWdpbmFsU2FtcGxlKQogICAgIHVw
ZGF0ZUhpZ2hlc3RQcmVzZW50YXRpb25UaW1lc3RhbXAoKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGU6OmFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7CiAgICAgYXBwZW5kKGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgK
aW5kZXggZWY4NmE0NzM2OTM3MWM4M2U4ODNiMjliYmI2YjlhYjk2ZWNhNWYxZC4uNmI3ZDk1ZTUy
YjlkZjBjODFhZjNiZTFkNmQ5ZjNjOGVkMzk1NDE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtNDksNyAr
NDksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBUaW1lUmFuZ2VzOwogCiBlbnVtIGNs
YXNzIFNvdXJjZUJ1ZmZlckFwcGVuZE1vZGUgOiB1aW50OF90IHsKQEAgLTY4LDcgKzY4LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclByaXZhdGUo
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCkgPSAwOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBhcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJik7CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBy
ZXNldFBhcnNlclN0YXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbU1lZGlh
U291cmNlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAK
aW5kZXggYzYxMTJlMTE5NGM3Yzk5MGZkYzExNGU4MjljZmRiNWM2YWY3NTRhOS4uOGIwNGY5YmU5
NmMzNmUwYTI2MjE4MGEyNWVhMzc0NTk2MmIzZDdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
RmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC04NiwxMiArODYsMTIgQEAgY29uc3QgQXRvbVN0cmlu
ZyYgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpza2ROYW1lKCkKICAgICByZXR1cm4gc2tk
OwogfQogCi1zdGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgVmVjdG9yPFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICAvLyBKU09OIG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJh
c2U2NC1lbmNvZGVkLXN0cmluZz4gXSB9IgogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4geyB9OwotICAg
IFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZl
ci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1
dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUp
CkBAIC0xMDUsNyArMTA1LDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0
cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmICghc2luZkFy
cmF5KQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
PiBzaW5mczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBzaW5mczsK
ICAgICBzaW5mcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpbmZBcnJheS0+bGVuZ3RoKCkpOwog
CiAgICAgZm9yIChhdXRvJiB2YWx1ZSA6ICpzaW5mQXJyYXkpIHsKQEAgLTEyNCw3ICsxMjQsNyBA
QCBzdGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB9CiAKIHVzaW5nIFNjaGVtZUFuZEtleVJlc3VsdCA9IFZl
Y3RvcjxzdGQ6OnBhaXI8Rm91ckNDLCBWZWN0b3I8dWludDhfdD4+PjsKLXN0YXRpYyBTY2hlbWVB
bmRLZXlSZXN1bHQgZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJvbVNpbmYoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitzdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRL
ZXlJZEZyb21TaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBhdXRvIGJ1ZmZlcnMgPSBleHRyYWN0U2luZkRhdGEoYnVmZmVyKTsKICAgICBpZiAoIWJ1ZmZl
cnMuc2l6ZSgpKQpAQCAtMTcwLDkgKzE3MCw5IEBAIHN0YXRpYyBTY2hlbWVBbmRLZXlSZXN1bHQg
ZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJvbVNpbmYoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1
ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTaW5mKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0
S2V5SURzU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAg
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwogICAgIGF1dG8gcmVzdWx0cyA9IGV4dHJhY3RTY2hl
bWVBbmRLZXlJZEZyb21TaW5mKGJ1ZmZlcik7CiAKICAgICBmb3IgKGF1dG8mIHJlc3VsdCA6IHJl
c3VsdHMpIHsKQEAgLTE4Myw3ICsxODMsNyBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleQogICAg
IHJldHVybiBrZXlJRHM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6c2FuaXRpemVTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQor
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
Zzo6c2FuaXRpemVTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICAvLyBDb21tb24gU0lORiBCb3ggRm9ybWF0CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7
CkBAIC0xOTEsMTcgKzE5MSwxNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFp
clBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBTaGFyZWRCdWZmZQogICAgIHJldHVy
biBidWZmZXIuY29weSgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFp
clBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2tkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQor
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
Zzo6c2FuaXRpemVTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0
dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRC
dWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2tkKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0
S2V5SURzU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAv
LyBJbiB0aGUgJ3NrZCcgc2NoZW1lLCB0aGUgaW5pdCBkYXRhIGlzIHRoZSBrZXkgSUQuCi0gICAg
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwogICAgIGtleUlEcy5hcHBlbmQoYnVmZmVyLmNvcHko
KSk7CiAgICAgcmV0dXJuIGtleUlEczsKIH0KQEAgLTM5Myw3ICszOTMsNyBAQCBib29sIENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVm
ZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpz
dXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAgICAgaWYgKCF2YWxpZElu
aXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC00MjMsNyArNDIzLDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXAKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBj
b25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBy
ZXNwb25zZSkgY29uc3QKIHsKICAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZh
aXJQbGF5U3RyZWFtaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAppbmRleCBiYzkzZjZmNmE3YmRkMDFlZmJm
NTViNjJiZGI2YTRlNjZlZjkxMmIzLi4zMTdiYjhkNTdlODZjMDYyMTRlMGI0MDU5ZGRmNGY4ODA3
Yzc0YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaApAQCAtNzEs
MTcgKzcxLDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IG92ZXJyaWRl
OwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wg
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25z
ZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0
cmluZyYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHNp
bmZOYW1lKCk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGlj
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplU2luZihjb25zdCBTaGFyZWRCdWZmZXImKTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwor
ICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTaW5mKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9tU3Ry
aW5nJiBza2ROYW1lKCk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NrZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBz
dGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTa2QoY29uc3QgU2hhcmVkQnVmZmVy
Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
OworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTa2Qo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgc3RhdGljIGNvbnN0IFZlY3Rv
cjxGb3VyQ0M+JiB2YWxpZEZhaXJQbGF5U3RyZWFtaW5nU2NoZW1lcygpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMuaAppbmRleCAxNTliOTBjZGI0OGY3ZmU0NGJiNDliZTJlYzFjMWMyZjQzMjg2NDAw
Li41NmI1OGMyNWEyODcwOWZiMzgyMjE4MzllNTViYWU0NWVkOTNjZjYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIEltcGxlbWVudGF0aW9u
VHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRh
dGlvblR5cGU6OkZhaXJQbGF5U3RyZWFtaW5nOyB9CiAKICAgICB2b2lkIGluaXRpYWxpemVXaXRo
Q29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0
aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNr
JiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlm
aWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7
CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwog
ICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+JiYpIGZpbmFsOwpA
QCAtOTQsMTAgKzk0LDEwIEBAIHB1YmxpYzoKIAogICAgIE5TVVJMICpzdG9yYWdlVVJMKCkgY29u
c3QgeyByZXR1cm4gbV9zdG9yYWdlVVJMLmdldCgpOyB9CiAgICAgYm9vbCBwZXJzaXN0ZW50U3Rh
dGVBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkOyB9Ci0g
ICAgU2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vy
dmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0KKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzZXJ2
ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7
IH0KICAgICBBVkNvbnRlbnRLZXlTZXNzaW9uKiBjb250ZW50S2V5U2Vzc2lvbigpOwogCi0gICAg
UmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IHRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZv
ckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFNoYXJl
ZEJ1ZmZlciYgaW5pdERhdGEpOworICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiB0
YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSk7CiAK
ICAgICAvLyBBVkNvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGVDbGllbnQKICAgICB2b2lkIGRpZFBy
b3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBmaW5hbDsKQEAgLTExMiw3ICsxMTIs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0
ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChib29sKSBmaW5hbDsKICAgICB2b2lkIGV4dGVybmFsUHJv
dGVjdGlvblN0YXR1c0RpZENoYW5nZUZvckNvbnRlbnRLZXlSZXF1ZXN0KEFWQ29udGVudEtleVJl
cXVlc3QqKSBmaW5hbDsKIAotICAgIHVzaW5nIEtleXMgPSBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZl
cj4+OworICAgIHVzaW5nIEtleXMgPSBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PjsKICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Np
b25Gb3JLZXlJRHMoY29uc3QgS2V5cyYpIGNvbnN0OwogICAgIENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvckdyb3VwKEFWQ29udGVudEtleVJlcG9y
dEdyb3VwKikgY29uc3Q7CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDKiBzZXNzaW9uRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgY29uc3Q7CkBA
IC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50
PiBtX2NsaWVudDsKICAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5U2Vzc2lvbj4gbV9zZXNzaW9u
OwogICAgIFJldGFpblB0cjxXZWJDb3JlRlBTQ29udGVudEtleVNlc3Npb25EZWxlZ2F0ZT4gbV9k
ZWxlZ2F0ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOwor
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOwog
ICAgIGJvb2wgbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkIHsgdHJ1ZSB9OwogICAgIFJldGFpblB0
cjxOU1VSTD4gbV9zdG9yYWdlVVJMOwogICAgIFZlY3RvcjxXZWFrUHRyPENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4+IG1fc2Vzc2lvbnM7CkBAIC0xNTAsOCArMTUw
LDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb24KLSAgICB2
b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBm
aW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAg
ICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNl
Q2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYs
IExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0
ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7
CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJh
Y2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBM
aWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMubW0KaW5kZXggZTlmMmFhMzM1ZGI5YWM1ODM5NTE1ZDYyNWEwZGYyZmY0MDcz
ZTk1My4uYmE1MDYxZWJiNWM1ZmJlMDc0ZDNhMjlkZWE0ZjkxOGZjMjYyMWNkNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakMubW0KQEAgLTIxNyw3ICsyMTcsNyBAQCBBTExPV19ORVdfQVBJX1dJVEhP
VVRfR1VBUkRTX0VORAogICAgIHJldHVybiBBdG9tU3RyaW5nKG5zSW5pdFR5cGUpOwogfQogCi1z
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gaW5pdGlhbGl6YXRpb25EYXRhRm9yUmVxdWVzdChBVkNv
bnRlbnRLZXlSZXF1ZXN0KiByZXF1ZXN0KQorc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBpbml0aWFsaXphdGlvbkRhdGFGb3JSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqIHJl
cXVlc3QpCiB7CiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKQEAgLTI2NSw3ICsyNjUsNyBAQCBBVkNvbnRlbnRLZXlTZXNzaW9uKiBDRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y29udGVudEtleVNlc3Npb24oKQogICAg
IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7CiB9CiAKLVJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1
ZXN0PiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dGFrZVVuZXhwZWN0ZWRL
ZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK1JldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1
ZXN0PiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dGFrZVVuZXhwZWN0ZWRL
ZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgZm9yIChhdXRv
IHJlcXVlc3RJdGVyID0gbV91bmV4cGVjdGVkS2V5UmVxdWVzdHMuYmVnaW4oKTsgcmVxdWVzdEl0
ZXIgIT0gbV91bmV4cGVjdGVkS2V5UmVxdWVzdHMuZW5kKCk7ICsrcmVxdWVzdEl0ZXIpIHsKICAg
ICAgICAgYXV0byYgcmVxdWVzdCA9ICpyZXF1ZXN0SXRlcjsKQEAgLTMxNiw3ICszMTYsNyBAQCBw
cml2YXRlOgogICAgIFJlc3BvbnNlTWFwIG1fcmVzcG9uc2VzOwogfTsKIAotc3RhdGljIFJlZlB0
cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CitzdGF0aWMgUmVmUHRyPEpTT046OlZhbHVlPiBwYXJzZUpTT05WYWx1ZShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gRmFpbCBvbiBsYXJnZSBidWZmZXJz
IHdob3NlIHNpemUgZG9lc24ndCBmaXQgaW50byBhIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLgog
ICAgIHNpemVfdCBzaXplID0gYnVmZmVyLnNpemUoKTsKQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0
aWMgUmVmUHRyPEpTT046OlZhbHVlPiBwYXJzZUpTT05WYWx1ZShjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVm
ZmVyIGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSku
Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c2l6ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgcmV0dXJuIEpTT046OlZh
bHVlOjpwYXJzZUpTT04oanNvbik7CiB9CkBAIC0zODAsNyArMzgwLDcgQEAgdm9pZCBDRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9u
KGNvbnN0IENETUsKICAgICBjYWxsYmFjayhpbml0aWFsaXplKCkpOwogfQogCi12b2lkIENETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8
U2hhcmVkQnVmZmVyPiYmIHNlcnZlckNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHNlcnZlckNlcnRpZmlj
YXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBERUJVR19MT0dfSUZfUE9T
U0lCTEUoTE9HSURFTlRJRklFUik7CiAgICAgbV9zZXJ2ZXJDZXJ0aWZpY2F0ZSA9IFdURk1vdmUo
c2VydmVyQ2VydGlmaWNhdGUpOwpAQCAtNTg1LDggKzU4NSw4IEBAIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRvIHNlc3Npb25LZXlz
ID0gc2Vzc2lvbkludGVyZmFjZS0+a2V5SURzKCk7Ci0gICAgICAgIGlmIChhbnlPZihzZXNzaW9u
S2V5cywgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBzZXNzaW9uS2V5KSB7Ci0gICAgICAg
ICAgICByZXR1cm4ga2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZl
cj4mIGtleUlEKSB7CisgICAgICAgIGlmIChhbnlPZihzZXNzaW9uS2V5cywgWyZdKGNvbnN0IFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgc2Vzc2lvbktleSkgeworICAgICAgICAgICAgcmV0
dXJuIGtleUlEcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYga2V5SUQpIHsKICAgICAgICAgICAgICAgICByZXR1cm4ga2V5SUQuZ2V0KCkgPT0gc2Vz
c2lvbktleS5nZXQoKTsKICAgICAgICAgICAgIH0pICE9IG5vdEZvdW5kOwogICAgICAgICB9KSkK
QEAgLTY3Myw3ICs2NzMsNyBAQCBLZXlzIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6a2V5SURzKCkKICAgICByZXR1cm4ga2V5SURzOwogfQogCi12b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghaXNMaWNlbnNlVHlwZVN1cHBvcnRlZChsaWNl
bnNlVHlwZSkpIHsKICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIs
ICIgZmFsc2UsIGxpY2Vuc2VUeXBlIFwiIiwgbGljZW5zZVR5cGUsICJcIiBub3Qgc3VwcG9ydGVk
Iik7CkBAIC03MDksMTIgKzcwOSwxMiBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZQogICAgIFJl
dGFpblB0cjxOU0RhdGE+IGluaXRpYWxpemF0aW9uRGF0YTsKIAogICAgIGlmIChpbml0RGF0YVR5
cGUgPT0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzaW5mTmFtZSgpKQotICAgICAgICBp
bml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGlu
aXRpYWxpemF0aW9uRGF0YSA9IGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKTsKICAgICBlbHNlIGlmIChpbml0RGF0YVR5cGUgPT0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3Ry
ZWFtaW5nOjpza2ROYW1lKCkpCi0gICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJp
bmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKKyAgICAgICAgaWRlbnRpZmllciA9IGFkb3B0
TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10p
OwogI2lmIEhBVkUoRkFJUlBMQVlTVFJFQU1JTkdfQ0VOQ19JTklUREFUQSkKICAgICBlbHNlIGlm
IChpbml0RGF0YVR5cGUgPT0gSW5pdERhdGFSZWdpc3RyeTo6Y2VuY05hbWUoKSkgewotICAgICAg
ICBhdXRvIHBzc2hTdHJpbmcgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbml0RGF0YS0+ZGF0YSgp
LCBpbml0RGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5j
b2RlVG9TdHJpbmcoaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEt
PnNpemUoKSk7CiAgICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IFtOU0pTT05TZXJpYWxpemF0
aW9uIGRhdGFXaXRoSlNPTk9iamVjdDpAeyBAInBzc2giOiAoTlNTdHJpbmcqKXBzc2hTdHJpbmcg
fSBvcHRpb25zOk5TSlNPTldyaXRpbmdQcmV0dHlQcmludGVkIGVycm9yOm5pbF07CiAgICAgfQog
I2VuZGlmCkBAIC03MzYsNyArNzM2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICB9
CiB9CiAKLXN0YXRpYyBib29sIGlzRXF1YWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25z
dCBTdHJpbmcmIHZhbHVlKQorc3RhdGljIGJvb2wgaXNFcXVhbChjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGF1dG8gYXJyYXlC
dWZmZXIgPSBkYXRhLnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgaWYgKCFhcnJheUJ1ZmZl
cikKQEAgLTc1NCw3ICs3NTQsNyBAQCBzdGF0aWMgYm9vbCBpc0VxdWFsKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICByZXR1cm4gc3RyaW5nT3JFeGNl
cHRpb24ucmV0dXJuVmFsdWUoKSA9PSB2YWx1ZTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwg
TGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBMaWNlbnNlVXBk
YXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIExpY2Vuc2VVcGRh
dGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9leHBpcmVkU2Vzc2lvbnMuaXNF
bXB0eSgpICYmIGlzRXF1YWwocmVzcG9uc2VEYXRhLCAiYWNrbm93bGVkZ2VkIl9zKSkgewogICAg
ICAgICBhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCk7
CkBAIC03NzAsNyArNzcwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgYXV0
byBleHBpcmVkU2Vzc2lvbnMgPSBjcmVhdGVOU0FycmF5KG1fZXhwaXJlZFNlc3Npb25zLCBbXSAo
YXV0byYgZGF0YSkgewogICAgICAgICAgICAgcmV0dXJuIGRhdGEuZ2V0KCk7CiAgICAgICAgIH0p
OwotICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRh
KCk7CisgICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vz
c2lvbkNsYXNzKCkgcmVtb3ZlUGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0czpleHBpcmVkU2Vz
c2lvbnMuZ2V0KCkgd2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdl
RGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF07CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCB7IH0s
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZWVkZWQpOwogICAgICAgICByZXR1cm47
CkBAIC04NTYsNyArODU2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAg
IGF1dG8ga2V5SUQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCprZXlJRFZlY3Rvcikp
OwogICAgICAgICAgICAgYXV0byBmb3VuZEluZGV4ID0gbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgp
LnJlcXVlc3RzLmZpbmRNYXRjaGluZyhbJl0gKGF1dG8mIHJlcXVlc3QpIHsKICAgICAgICAgICAg
ICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxTaGFy
ZWRCdWZmZXI+JiBpZCkgeworICAgICAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNo
aW5nKFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGlkKSB7CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBpZC5nZXQoKSA9PSBrZXlJRC5nZXQoKTsKICAgICAgICAgICAg
ICAgICB9KSAhPSBub3RGb3VuZDsKICAgICAgICAgICAgIH0pOwpAQCAtODg4LDcgKzg4OCw3IEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICAgICAgaWYgKCFwYXlsb2FkVmVj
dG9yKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAg
YXV0byBwYXlsb2FkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBheWxvYWRW
ZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3Bv
bnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9u
c2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPmNyZWF0
ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRl
bnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVu
dEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWRE
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH07CkBAIC05MDEsNyArOTAx
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAg
ICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiJ3NpbmYnIGluaXRE
YXRhLCBwcm9jZXNzaW5nIHJlc3BvbnNlIik7Ci0gICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZh
bHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6Omdl
dEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBs
YXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV1dOworICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0
KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25z
ZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9u
c2VEYXRhOnJlc3BvbnNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldXTsKICAgICB9CiAKICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5MjI3Nyk6IHN0
YXNoIHRoZSBjYWxsYmFjayBhbmQgY2FsbCBpdCBvbmNlIEFWQ29udGVudEtleVJlc3BvbnNlIHN1
cHBvcnRzIGEgc3VjY2VzcyBjYWxsYmFjay4KQEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5z
ZVR5cGUgbGljZW5zZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
UmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0Rh
dGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmlj
YXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgS2V5U3RhdHVz
VmVjdG9yIGNoYW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25E
YXRhIGluIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVk
U2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3Jh
Z2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJMXSkgewogICAgICAgICAgICAgc3RhdGljIGNvbnN0
IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25JZEtleSA9IEAiUGxheWJhY2tTZXNzaW9uSUQiOwpA
QCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlm
aWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNE
YXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGV4cGlyZWRTZXNz
aW9uc0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAg
ICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4
cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBw
ZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmll
ci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKQEAgLTEwODYsNyAr
MTA4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAKICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2Ut
PnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0
ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICBhdXRvIGtleUlEcyA9IGtl
eUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7CiAgICAgaWYgKGtleUlEcy5pc0VtcHR5KCkpIHsKQEAg
LTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtl
eUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250
ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRl
bnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlm
aWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVy
Olt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5
UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0g
cmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRl
bnRLZXlSZXF1ZXN0RGF0YSldIHsKQEAgLTExNTMsOSArMTE1Myw5IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVj
dG9yPFJldGFpCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlm
IChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0g
ICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAg
ICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAKLSAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OworICAgIHVzaW5nIFJlcXVl
c3RzRGF0YSA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
LCBSZXRhaW5QdHI8TlNEYXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmlu
YWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CiAg
ICAgICAgIHVzaW5nIENhbGxiYWNrRnVuY3Rpb24gPSBGdW5jdGlvbjx2b2lkKFJlcXVlc3RzRGF0
YSYmKT47CiAgICAgICAgIHN0YXRpYyBSZWZQdHI8Q2FsbGJhY2tBZ2dyZWdhdG9yPiBjcmVhdGUo
Q2FsbGJhY2tGdW5jdGlvbiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTE5Niw3ICsxMTk2LDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFBy
b3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgICAgIGF1dG8gZW50cnkgPSBKU09O
OjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICAgICAgYXV0byYga2V5SUQgPSByZXF1ZXN0RGF0
YS5maXJzdDsKICAgICAgICAgICAgIGF1dG8mIHBheWxvYWQgPSByZXF1ZXN0RGF0YS5zZWNvbmQ7
Ci0gICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3Ry
aW5nKGtleUlELT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKKyAgICAgICAgICAgIGVudHJ5LT5z
ZXRTdHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwga2V5SUQtPnNpemUoKSkpOwogICAgICAgICAgICAgZW50cnktPnNldFN0
cmluZygicGF5bG9hZCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKHBheWxvYWQuZ2V0KCkuYnl0ZXMs
IHBheWxvYWQuZ2V0KCkubGVuZ3RoKSk7CiAgICAgICAgICAgICByZXF1ZXN0SlNPTi0+cHVzaE9i
amVjdChXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgIH0KQEAgLTEyMTEsOCArMTIxMSw4IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRl
UmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgQHRyeSB7CiAgICAgICAgIGZvciAoYXV0byByZXF1
ZXN0IDogbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzKSB7CiAgICAgICAgICAgICBh
dXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7Ci0gICAgICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5SURzLmZpcnN0KCkpOwot
ICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5jcmVhdGVOU0RhdGEo
KTsKKyAgICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBrZXlJRCA9IFdU
Rk1vdmUoa2V5SURzLmZpcnN0KCkpOworICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmll
ciA9IGtleUlELT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgICAg
IFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRl
bnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBv
cHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdn
cmVnYXRvcl0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikg
bXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICAgICAgICAg
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdh
dG9yID0gV1RGTW92ZShhZ2dyZWdhdG9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWlu
UHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldICgpIG11dGFibGUgewpAQCAtMTI0OSwxMCArMTI0
OSwxMCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChBVkNvbgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4g
YXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5z
ZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUt
PmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGF1dG8ga2V5SURzID0ga2V5SURz
Rm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkpOwogCi0gICAgUmV0YWluUHRyPE5T
RGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7
CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3Qo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAg
IFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRl
bnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBv
cHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikg
bXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9
IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlS
ZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKaW5kZXggMDMzNGQ2MjNiMmE3
NjA1YzliZTEyMjEzYjVhYmRiYmFjMmIwM2YxNS4uNjJiODNmYmZkNTc5NDA1MGViYzk0MDYzNzA0
OTBiYTJiM2VjMDg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Np
b247CiAKIGNsYXNzIEltYWdlRGVjb2RlckFWRk9iakMgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsK
IHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2RlckFW
Rk9iakM+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gY3JlYXRlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlckFWRk9iakMoKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHN1cHBvcnRzTWVkaWFUeXBlKE1lZGlh
VHlwZSk7CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0
Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYg
PSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykg
ZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERh
dGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsK
ICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0Fs
bERhdGFSZWNlaXZlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJGcmFtZUJ1ZmZl
ckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3RvcjxJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4gZnJhbWVJbmZvcygp
IGNvbnN0OwogCiBwcml2YXRlOgotICAgIEltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKTsKKyAgICBJbWFnZURlY29kZXJBVkZPYmpDKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOwogCiAgICAgQVZBc3NldFRyYWNrICpmaXJzdEVuYWJsZWRUcmFjaygpOwog
ICAgIHZvaWQgcmVhZFNhbXBsZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURl
Y29kZXJBVkZPYmpDLm1tCmluZGV4IDA2OTUxNmEwODNkNWY0ZjUxMjcyOTc0NTBlMWM5YTEwY2Mx
NGY0YmYuLjM1YzZjZTY3ZTg1Zjg2YWUxNjRjMjFhNzI2MDdmYzA2NWVjYjUwNTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lt
YWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtMjg5LDcgKzI4
OSw3IEBAIEltYWdlRGVjb2RlckFWRk9iakNTYW1wbGUqIHRvU2FtcGxlKEl0ZXJhdG9yIGl0ZXIp
CiAKICNwcmFnbWEgbWFyayAtIEltYWdlRGVjb2RlckFWRk9iakMKIAotUmVmUHRyPEltYWdlRGVj
b2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRh
dGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0
cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRp
b24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQogewogICAgIC8vIEFWRm91bmRhdGlvbiBtYXkgbm90IGJlIGF2YWlsYWJs
ZSBhdCBydW50aW1lLgogICAgIGlmICghQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigp
LmlzQXZhaWxhYmxlKCkpCkBAIC0zMDEsNyArMzAxLDcgQEAgUmVmUHRyPEltYWdlRGVjb2RlckFW
Rk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnMKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJBVkZPYmpDKGRhdGEsIG1p
bWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKIH0KIAot
SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFyZWRCdWZmZXImIGRh
dGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogSW1hZ2VEZWNvZGVyKCkK
ICAgICAsIG1fbWltZVR5cGUobWltZVR5cGUpCiAgICAgLCBtX3V0aShXZWJDb3JlOjpVVElGcm9t
TUlNRVR5cGUobWltZVR5cGUpKQpAQCAtMzA5LDcgKzMwOSw3IEBAIEltYWdlRGVjb2RlckFWRk9i
akM6OkltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcm
IG1pbWVUCiAgICAgLCBtX2xvYWRlcihhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlclJlc291
cmNlTG9hZGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKICAgICAsIG1f
ZGVjb21wcmVzc2lvblNlc3Npb24oV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjpjcmVhdGVS
R0IoKSkKIHsKLSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGNvbXBsZXRlOk5PXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKIAogICAgIFttX2Fz
c2V0LmdldCgpLnJlc291cmNlTG9hZGVyIHNldERlbGVnYXRlOm1fbG9hZGVyLmdldCgpIHF1ZXVl
OmRpc3BhdGNoX2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVM
VCwgMCldOwogICAgIFttX2Fzc2V0IGxvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvcktleXM6QFtA
InRyYWNrcyJdIGNvbXBsZXRpb25IYW5kbGVyOltwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fV0gKCkgbXV0YWJsZSB7CkBAIC02NDEsOSArNjQxLDkgQEAgdm9pZCBJbWFnZURlY29kZXJBVkZP
YmpDOjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXpl
KQogICAgIG1fbG9hZGVyLmdldCgpLmV4cGVjdGVkQ29udGVudFNpemUgPSBleHBlY3RlZENvbnRl
bnRTaXplOwogfQogCi12b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKIHsKLSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZlZF07CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6
ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxE
YXRhUmVjZWl2ZWRdOwogCiAgICAgaWYgKGFsbERhdGFSZWNlaXZlZCkgewogICAgICAgICBtX2lz
QWxsRGF0YVJlY2VpdmVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCAyMDBlMWE4
ZjlhZmJhMGZjYmJhNWIwYTNlZDcwNGNkMzQxYjQ1MGQ2Li5jOWQ5YjJhOTY4NWIwMWU5MWFhYTAw
YzBlMDAzMDc3Mzg1NjkxNDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC02Niw3ICs2Niw3
IEBAIGNsYXNzIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjsKIGNsYXNzIE1lZGlh
UGxheWJhY2tUYXJnZXQ7CiBjbGFzcyBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzsKIGNsYXNz
IFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgVmlkZW9MYXllck1hbmFnZXJPYmpDOwogY2xhc3Mg
VmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOwogY2xhc3MgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
OwpAQCAtNDI2LDcgKzQyNiw3IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFs
PFdhbGxUaW1lPiBtX3dhbGxDbG9ja0F0Q2FjaGVkQ3VycmVudFRpbWU7CiAgICAgbXV0YWJsZSBp
bnQgbV90aW1lQ29udHJvbFN0YXR1c0F0Q2FjaGVkQ3VycmVudFRpbWUgeyAwIH07CiAgICAgbXV0
YWJsZSBkb3VibGUgbV9yZXF1ZXN0ZWRSYXRlQXRDYWNoZWRDdXJyZW50VGltZSB7IDAgfTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2tleUlEOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBtX2tleUlEOwogICAgIGRvdWJsZSBtX2NhY2hlZFJhdGUgeyAwIH07CiAgICAg
Ym9vbCBtX3JlcXVlc3RlZFBsYXlpbmcgeyBmYWxzZSB9OwogICAgIGRvdWJsZSBtX3JlcXVlc3Rl
ZFJhdGUgeyAxLjAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGQxOGE4NWE3OTRmNTIz
Zjk0OTEyZTI3ZjA4YjdjY2JlODkzYzhlZDAuLmIxYzYwNzljNjQ4NzBmODhlMzVjODA4MTFhNWIx
OGJkYTFiN2Y2MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjc5Miw3ICsyNzkyLDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjphdHRlbXB0VG9EZWNy
eXB0V2l0aEluc3RhbmNlKENETUluc3RhbmMKICAgICBpZiAoIW1fa2V5SUQgfHwgIW1fY2RtSW5z
dGFuY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9j
ZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+Ojpm
cm9tKCptX2tleUlEKSk7CisgICAgYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3RhbmNl
LT5zZXNzaW9uRm9yS2V5SURzKFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+Ojpm
cm9tKCptX2tleUlEKSk7CiAgICAgaWYgKCFpbnN0YW5jZVNlc3Npb24pCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakMubW0KaW5kZXggZDk2MGFmZGNhMjE0YmZhNDQwZWVhMjA4ODNiY2E5MTMyZTIyZjlhMC4u
NGRkNmI5MWE5NDgzMTY5YTAyMzY4ODhkMGU0ZDgyZmZiODM2NjYyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0yMTMs
NyArMjEzLDcgQEAgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakMoKQogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKFNl
Z21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIsIEFwcGVuZEZsYWdzIGZsYWdzKQogewogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gc2Vn
bWVudC50YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXIt
PmNyZWF0ZU5TRGF0YSgpOworICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBpZiAobV9wYXJzZXJTdGF0ZVdhc1Jlc2V0
IHx8IGZsYWdzID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQogICAgICAgICBbbV9wYXJz
ZXIgYXBwZW5kU3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3RyZWFtRGF0YVBh
cnNlclN0cmVhbURhdGFEaXNjb250aW51aXR5XTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCAwMzQyMGYx
MzgzNjRmYWMyMDkxZTEwNGQxMzZmZjM4YTFmYjlmZTIyLi5lYWQwODNhNmNjN2U3MzZiNDIxNzEw
ZmFjMzkyYTA3ZGZmOTJiZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKQEAgLTczLDcgKzczLDcgQEAgY2xhc3MgVmlkZW9U
cmFja1ByaXZhdGU7CiBjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzsK
IGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOwogY2xhc3MgV2ViQ29y
ZURlY29tcHJlc3Npb25TZXNzaW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakNFcnJv
ckNsaWVudCB7CiBwdWJsaWM6CkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lkKFJlZjxNZWRpYVNhbXBsZT4mJiwgdWludDY0
X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpOwogCiAgICAgLy8gU291cmNlQnVm
ZmVyUHJpdmF0ZSBvdmVycmlkZXMKLSAgICB2b2lkIGFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYm
KSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
ZmluYWw7CiAgICAgdm9pZCBhYm9ydCgpIGZpbmFsOwogICAgIHZvaWQgcmVzZXRQYXJzZXJTdGF0
ZSgpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpIGZpbmFsOwpAQCAt
MjIxLDcgKzIyMSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCiAgICAgUmVmUHRyPENETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPiBtX2NkbUluc3RhbmNlOwotICAgIFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4gbV9rZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4gbV9rZXlJRHM7CiAjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXpl
PiBtX2NhY2hlZFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDNhMjg2N2ExYWMyNDNiYjljOTNjOWQ2YjcwY2E1
NmIwMjk0OGZjOWMuLjI0YWUwZTE0MDYwMTkxNDNmYWQ0ZjE1MjllNjhlZDQ5YjQxNjUzY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLm1tCkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KICAgICBV
TlVTRURfUEFSQU0oaGFzU2Vzc2lvblNlbWFwaG9yZSk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgZGF0YSkKIHsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJkYXRhIGxlbmd0
aCA9ICIsIGRhdGEtPnNpemUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3MTEzMmY2YzI4N2EyZTYyOWE0Yjg4
YTUzOWRmZDUzY2JlMi4uMGVmZWVhZWY1YjJkNzFiYzZkNjcwNGRkMWI5NzVhY2JhZTExM2JiYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzsKIGNsYXNzIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjsKIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNw
b25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGxvYWRGYWls
ZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKCk7Ci0gICAg
dm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdm9p
ZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpOwogCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogbV9wYXJlbnQ7
CiAgICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBtX2F2UmVxdWVz
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ci5tbQppbmRleCBhMjJhOTk3YjExMDc5ZDQ2NTg2YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5mOTIx
ZjNkYTBlNjliMzM5OTc3YzllM2U0OTY2N2EyOGY1ZTk1Y2JkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0xNTYsMTQgKzE1
NiwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGZpbmFsIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7
IH0KICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9p
ZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVu
c2lnbmVkIGxvbmcgbG9uZykgZmluYWwgeyB9Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxv
YWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJy
b3IpOyB9CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBsb2FkRmluaXNoZWQoKTsgfQogCiAgICAg
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZWZQdHI8UGxhdGZvcm1N
ZWRpYVJlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVm
ZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiB9OwogCiBXZWFrUHRyPFBs
YXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpj
cmVhdGUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNv
dXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjExLDEz
ICsyMTEsMTAgQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hl
ZCgpCiAgICAgbV9wYXJlbnQubG9hZEZpbmlzaGVkKCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1SZXNv
dXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRl
cjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1
ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBl
bmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRC
dWZmZXIoKm1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsK
KyAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyLmdldCgp
KTsKIH0KIAogY2xhc3MgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI+IHsKQEAgLTM4OCw3ICszODUsNyBA
QCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAgICBzdG9w
TG9hZGluZygpOwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0
b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJl
cXVlc3QqIGRhdGFSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAo
IWRhdGFSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGRiNDU3YTgx
ZDNlZTgyOTFiOTA1ZTliYTc3YzFlMmFmMzA5ZTBjYjIuLjk0MTliY2VhMzhkYmY4ZDY0OTJmNjgw
MWQ5YTIxNTYyMzY2YTJjNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTMx
LDEwICszMSwxMSBAQCB0eXBlZGVmIHN0cnVjdCBGVF9GYWNlUmVjXyogIEZUX0ZhY2U7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0
aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRQbGF0Zm9ybURh
dGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
c3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZh
cmlhbnRTZXR0aW5nczsKIApAQCAtNDUsNyArNDYsNyBAQCBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiBwdWJsaWM6Ci0gICAgRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShGVF9GYWNlLCBTaGFyZWRCdWZmZXImKTsKKyAgICBGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKEZUX0ZhY2UsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB+Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YSgpID0gZGVmYXVsdDsKICAgICBGb250UGxhdGZvcm1EYXRhIGZvbnRQ
bGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxp
YywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogICAgIHN0YXRpYyBib29sIHN1cHBvcnRz
Rm9ybWF0KGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IGEzNDRiYmVjZGE5ZmZlNjdk
NGU4ZDNlNDVlMmQwNGJlZDNkNTBjMDYuLmI2ZDNlYjM2MzExMjQ0NjEzYjM4MDNmMmYzZDI0ZDMw
ODdlYTI0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTI0NCwxNiArMjQ0LDE2IEBAIHNpemVfdCBzaGFy
ZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBvZmZf
dCBwb3NpdGlvbiwKIAogdm9pZCBzaGFyZWRCdWZmZXJSZWxlYXNlKHZvaWQqIGluZm8pCiB7Ci0g
ICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIq
PihpbmZvKTsKKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0
aWNfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4oaW5mbyk7CiAgICAgc2hhcmVkQnVmZmVy
LT5kZXJlZigpOwogfQogI2VuZGlmCiAKLUltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyhT
aGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKK0ltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyhGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlIaW50OwogICAgIGlmIChkYXRhLnNpemUoKSA+PSAz
MikKLSAgICAgICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0
YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgICAg
IHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwog
ICAgIAogICAgIGlmICh1dGlIaW50KSB7CiAgICAgICAgIGNvbnN0IHZvaWQqIGtleSA9IGtDR0lt
YWdlU291cmNlVHlwZUlkZW50aWZpZXJIaW50OwpAQCAtNTYyLDIzICs1NjIsMjQgQEAgUGxhdGZv
cm1JbWFnZVB0ciBJbWFnZURlY29kZXJDRzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGkKICAgICByZXR1cm4gbWFza2VkSW1hZ2UgPyBtYXNrZWRJbWFnZSA6
IGltYWdlOwogfQogCi12b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRh
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewog
ICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQgPSBhbGxEYXRhUmVjZWl2ZWQ7CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZl
ciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mg
a25vd2xlZGdlLgotICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAg
aXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IElt
YWdlSU8gaXMKLSAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVkQnVmZmVyLgotICAg
IENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5jcmVh
dGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICAvLyBPbiBNYWMgdGhlIE5T
RGF0YSBpbnNpZGUgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFw
cGVuZGVkIHRvIHdpdGhvdXQgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2Uu
CisgICAgLy8gV2UgdXNlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAg
aXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IElt
YWdlSU8gaXMKKyAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlci4KKyAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCks
IGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNl
aXZlZCk7CiAjZWxzZQotICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhl
IFNoYXJlZEJ1ZmZlci4KLSAgICBkYXRhLnJlZigpOwotICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0
ZXNBdFBvc2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUg
YmVjYXVzZSBTaGFyZWRCdWZmZXIKKyAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3
cmFwIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgorICAgIGF1dG8gY29udGlndW91c0RhdGEg
PSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgY29udGlndW91c0RhdGEuZ2V0KCkucmVmKCk7
CisgICAgLy8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRo
YW4gdGhlIEdldEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIK
ICAgICAvLyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUgYnl0ZSBwb2lu
dGVyIGFuZCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAogICAgIC8vIGlzIGEg
cmVxdWlyZW1lbnQgZm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFjay4KICAgICBD
R0RhdGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsgMCwgMCwg
MCwgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJSZWxlYXNlIH07
Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENG
KENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KCZkYXRhLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVy
Q2FsbGJhY2tzKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlk
ZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGNvbnRpZ3VvdXNEYXRhLnB0
cigpLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFnZVNvdXJj
ZVVwZGF0ZURhdGFQcm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92aWRlci5n
ZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKaW5kZXggOTc0MDczNmEy
MWFjOTk4YWIwNWYxYzliNGY1YjE2NzVlNDRkMmM5MS4uYTBhYzFjMmZiZWU1MjdlNWFiMTExNDU1
ODEyYmRiNzM2M2EwNTU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCkBAIC0zMiw5ICszMiw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEltYWdlRGVjb2RlckNHIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2Rl
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW1hZ2VEZWNv
ZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOworICAgIEltYWdlRGVjb2RlckNHKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKLSAgICBzdGF0
aWMgUmVmPEltYWdlRGVjb2RlckNHPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJDRz4gY3JlYXRlKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlckNHKGRhdGEsIGFscGhh
T3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgIH0KQEAgLTY0LDcgKzY0
LDcgQEAgcHVibGljOgogCiAgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6
U3luY2hyb25vdXMpKSBmaW5hbDsKIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0Fs
bERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7
IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsIHsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuY3BwCmluZGV4IDMxYzI3YzA2OWIyYjNjNzAzNzMyZWI3MTNiMjYzMTI4NDIxMjRl
NmUuLmZmNzdiNTNlOWQ2OWZjNDcwNDUxMjQ3MDJmMWEzNGYwZjJkODdjZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuY3BwCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjpkZXN0cm95
RGVjb2RlZERhdGEoYm9vbCkKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1
bWVudCgpCiB7Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIg
PSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPmNyZWF0ZUNG
RGF0YSgpLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJv
dmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CiAgICAgbV9kb2N1bWVudCA9
IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0
KCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKaW5kZXggZjc0N2Q4MGZiNjFkMzBm
YzUwMjJlNjgyZDYzNTYxMzNkM2NhNjk3YS4uYzhhODA2MTIyMDUzZjY0OGFkZGIwMmFjMzg5Y2U3
MTQzNjhkYmJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCkBAIC04MCw3ICs4MCw3IEBA
IHZvaWQgU291cmNlQnVmZmVyUGFyc2VyOjpzZXRNaW5pbXVtQXVkaW9TYW1wbGVEdXJhdGlvbihm
bG9hdCkKIHsKIH0KIAotU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50KFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdt
ZW50KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fc2VnbWVu
dChXVEZNb3ZlKGJ1ZmZlcikpCiB7CiB9CkBAIC0xMDEsNyArMTAxLDcgQEAgc2l6ZV90IFNvdXJj
ZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4g
Y2xhbXBUbzxzaXplX3Q+KE1UUGx1Z2luQnl0ZVNvdXJjZUdldExlbmd0aChieXRlU291cmNlLmdl
dCgpKSk7CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgUmVmPFNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikKKyAgICAgICAgW10oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBidWZmZXItPnNpemUo
KTsKICAgICAgICAgfQpAQCAtMTI1LDcgKzEyNSw3IEBAIGF1dG8gU291cmNlQnVmZmVyUGFyc2Vy
OjpTZWdtZW50OjpyZWFkKHNpemVfdCBwb3NpdGlvbiwgc2l6ZV90IHNpemVUb1JlYWQsIHVpbnQ4
CiAgICAgICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxSZWFkRXJyb3I+IHsgUmVhZEVycm9yOjpG
YXRhbEVycm9yIH07CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAgICAgWyZdKGNvbnN0IFJlZjxT
aGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlYWRSZXN1bHQKKyAgICAgICAgWyZdKGNvbnN0IFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZWFkUmVzdWx0CiAgICAgICAg
IHsKICAgICAgICAgICAgIGJ1ZmZlci0+Y29weVRvKGRlc3RpbmF0aW9uLCBwb3NpdGlvbiwgc2l6
ZVRvUmVhZCk7CiAgICAgICAgICAgICByZXR1cm4gc2l6ZVRvUmVhZDsKQEAgLTEzMyw3ICsxMzMs
NyBAQCBhdXRvIFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6cmVhZChzaXplX3QgcG9zaXRp
b24sIHNpemVfdCBzaXplVG9SZWFkLCB1aW50OAogICAgICk7CiB9CiAKLVJlZjxTaGFyZWRCdWZm
ZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1ZmZlcigpCitSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50Ojp0YWtl
U2hhcmVkQnVmZmVyKCkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3NlZ21lbnQsCiAj
aWYgSEFWRShNVF9QTFVHSU5fRk9STUFUX1JFQURFUikKQEAgLTE0MiwyOCArMTQyLDI4IEBAIFJl
ZjxTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1
ZmZlcigpCiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yKHNpemUoKSk7CiAgICAg
ICAgICAgICBhdXRvIHJlYWRSZXN1bHQgPSByZWFkKDAsIHZlY3Rvci5zaXplKCksIHZlY3Rvci5k
YXRhKCkpOwogICAgICAgICAgICAgaWYgKCFyZWFkUmVzdWx0Lmhhc192YWx1ZSgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgICAg
IHJldHVybiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgICAgIHZl
Y3Rvci5zaHJpbmsocmVhZFJlc3VsdC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpOworICAgICAgICAgICAgcmV0dXJuIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpOwogICAgICAgICB9
LAogI2VuZGlmCi0gICAgICAgIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorICAgICAg
ICBbJl0oUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKGJ1ZmZlciwgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShidWZmZXIsIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKTsKICAgICAgICAgfQogICAgICk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6Z2V0U2hhcmVkQnVm
ZmVyKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQ
YXJzZXI6OlNlZ21lbnQ6OmdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdU
Rjo6c3dpdGNoT24obV9zZWdtZW50LAogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIp
Ci0gICAgICAgIFsmXShjb25zdCBSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiYpIC0+
IFJlZlB0cjxTaGFyZWRCdWZmZXI+CisgICAgICAgIFsmXShjb25zdCBSZXRhaW5QdHI8TVRQbHVn
aW5CeXRlU291cmNlUmVmPiYpIC0+IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPgogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfSwKICNlbmRpZgot
ICAgICAgICBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4KKyAgICAgICAgWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSAtPiBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5wdHIoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuaAppbmRleCA1MjBiNTIwN2ZjMjcxZDc5ODE1MzNmYjE0ZDIzMTU1OTRhODg4MzY1Li43
Mjk3YTc5MTRhNzlhZGY2NDJkYzZiMTZiMzZlNjBmOWNkMDI5ZjBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuaApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENv
bnRlbnRUeXBlOwogY2xhc3MgTWVkaWFTYW1wbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTb3VyY2VC
dWZmZXJQYXJzZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlQnVmZmVyUGFy
c2VyPiB7CiBwdWJsaWM6CkBAIC02OSwxMSArNjksMTEgQEAgcHVibGljOgogI2lmIEhBVkUoTVRf
UExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAgIFNlZ21lbnQoUmV0YWluUHRyPE1UUGx1Z2lu
Qnl0ZVNvdXJjZVJlZj4mJik7CiAjZW5kaWYKLSAgICAgICAgU2VnbWVudChSZWY8U2hhcmVkQnVm
ZmVyPiYmKTsKKyAgICAgICAgU2VnbWVudChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7
CiAgICAgICAgIFNlZ21lbnQoU2VnbWVudCYmKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IHRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICAgICAgLy8gV2lsbCByZXR1cm4gbnVs
bHB0ciBpZiBTZWdtZW50J3MgYmFja2VuZCBpc24ndCBhIFNoYXJlZEJ1ZmZlci4KLSAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0U2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgICAgIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlU2hhcmVkQnVmZmVyKCk7CisgICAgICAgIC8v
IFdpbGwgcmV0dXJuIG51bGxwdHIgaWYgU2VnbWVudCdzIGJhY2tlbmQgaXNuJ3QgYSBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyLgorICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
Z2V0U2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsK
IApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAjaWYgSEFWRShNVF9QTFVHSU5fRk9STUFUX1JF
QURFUikKICAgICAgICAgICAgIFJldGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VSZWY+LAogI2Vu
ZGlmCi0gICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPgorICAgICAgICAgICAgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+CiAgICAgICAgID4gbV9zZWdtZW50OwogICAgIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggMzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0
OWYxMWU0YzhmZDZjN2Q2Yi4uOWJjMTg5NDE5ODYzMGJhZDhkN2NiZDBiM2E1YjI4ZTQ2ZTllZmUy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBGcmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29u
LCB2b2lkKiwgc2l6ZV90KQogICAgIHsKLSAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnBy
ZXRfY2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0
byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxEYXRhU2VnbWVudCo+KHJlZmNvbik7CiAgICAg
ICAgIGJ1ZmZlci0+ZGVyZWYoKTsKICAgICB9CiAKQEAgLTM4OCw3ICszODgsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgYWR2YW5jZVRvTmV4dFNlZ21lbnQoKTsKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNoYXJlZEJ1ZmZlciA9IGN1cnJlbnRTZWdtZW50LmdldFNoYXJlZEJ1ZmZlcigpOworICAg
ICAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IGN1
cnJlbnRTZWdtZW50LmdldFNoYXJlZEJ1ZmZlcigpOwogICAgICAgICAgICAgQ01CbG9ja0J1ZmZl
clJlZiByYXdCbG9ja0J1ZmZlciA9IG51bGxwdHI7CiAgICAgICAgICAgICB1aW50NjRfdCBsYXN0
UmVhZCA9IDA7CiAgICAgICAgICAgICBzaXplX3QgZGVzdGluYXRpb25PZmZzZXQgPSBtX3Bvc2l0
aW9uV2l0aGluU2VnbWVudDsKQEAgLTQwOSw3ICs0MDksNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgZGVzdGluYXRpb25PZmZzZXQgPSAwOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICBBU1NFUlQoc2hhcmVkQnVmZmVyLT5oYXNPbmVTZWdtZW50KCksICJDYW4gb25s
eSBkZWFsIHdpdGggc2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgYSBzaW5nbGUgRGF0YVNlZ21lbnQi
KTsKLSAgICAgICAgICAgICAgICAvLyBBIFNoYXJlZEJ1ZmZlciBkb2Vzbid0IGhhdmUgdGhyZWFk
LXNhZmUgcmVmY291bnRpbmcsIGFzIHN1Y2ggd2UgbXVzdCBrZWVwIGEgcmVmZXJlbmNlIHRvIHRo
ZSBEYXRhU2VnbWVudCBpbnN0ZWFkLgorICAgICAgICAgICAgICAgIC8vIEEgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciBkb2Vzbid0IGhhdmUgdGhyZWFkLXNhZmUgcmVmY291bnRpbmcsIGFzIHN1Y2gg
d2UgbXVzdCBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBEYXRhU2VnbWVudCBpbnN0ZWFkLgogICAg
ICAgICAgICAgICAgIC8vIFRPRE86IGNvdWxkIHdlIG9ubHkgY3JlYXRlIGEgbmV3IENNQmxvY2tC
dWZmZXIgaWYgdGhlIGJhY2tlbmQgbWVtb3J5IGNoYW5nZWQgc2luY2UgdGhlIHByZXZpb3VzIG9u
ZT8KICAgICAgICAgICAgICAgICBhdXRvIGZpcnN0U2VnbWVudCA9IHNoYXJlZEJ1ZmZlci0+YmVn
aW4oKS0+c2VnbWVudDsKICAgICAgICAgICAgICAgICBzaXplX3QgY2FuUmVhZCA9IHN0ZDo6bWlu
PHNpemVfdD4obnVtVG9SZWFkLCBmaXJzdFNlZ21lbnQtPnNpemUoKSAtIG1fcG9zaXRpb25XaXRo
aW5TZWdtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAK
aW5kZXggZTgwNTA5ZWNjYTA1ZDJjYzhlZDEwNjYwNzA0MWY1Y2NjYzNlMzc5NC4uNjM4ZTY4Mzk3
YTJiNjY5NmIyZjFlZGUyNGVhOGZkYjkwNjI2Y2VkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTcyOSw3ICs3MjksNyBAQCBEaWRDaGFuZ2VJdGVt
QnVmZmVyIEl0ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1i
ZXJPZkJ5dGVzKQogdm9pZCBJdGVtQnVmZmVyOjphcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJdGVt
JiB0ZW1wb3JhcnlJdGVtKQogewogICAgIGF1dG8gcmVxdWlyZWRTaXplRm9ySXRlbSA9IG1fd3Jp
dGluZ0NsaWVudC0+cmVxdWlyZWRTaXplRm9ySXRlbSh0ZW1wb3JhcnlJdGVtKTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBvdXRPZkxpbmVJdGVtOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBvdXRPZkxpbmVJdGVtOwogICAgIGlmICghcmVxdWlyZWRTaXplRm9ySXRlbSkg
ewogICAgICAgICBvdXRPZkxpbmVJdGVtID0gbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtT3V0
T2ZMaW5lKHRlbXBvcmFyeUl0ZW0pOwogICAgICAgICBpZiAoIW91dE9mTGluZUl0ZW0pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKaW5kZXggYzg3MzE5ODJlZjgzOTMx
YmJhZTMxYjc4NjUwYWMwZGEyMGEwNWZjNS4uYjMxYmM1ZmQ0ZTkyMTRiMTVhMzc2MWZiZTk4ZDYw
Y2ViNDdhOThmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaApA
QCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRP
ZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QKKyAgICB2aXJ0dWFsIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlM
aXN0SXRlbSYpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBA
IC0xNjgsNyArMTY4LDcgQEAgcHVibGljOgogICAgIC8vIHdpdGggcGFkZGluZyBiZXR3ZWVuIGVh
Y2ggaXRlbSB0byBlbnN1cmUgdGhhdCBhbGwgaXRlbXMgYXJlIGFsaWduZWQgdG8gOCBieXRlcy4K
ICAgICAvLwogICAgIC8vIElmIGEgd3JpdGluZyBjbGllbnQgaXMgcHJlc2VudCBhbmQgcmVxdWly
ZXMgY3VzdG9tIGVuY29kaW5nIGZvciB0aGUgZ2l2ZW4gaXRlbSB0eXBlIFQsIHRoZQotICAgIC8v
IGl0ZW0gYnVmZmVyIHdpbGwgYXNrIHRoZSBjbGllbnQgZm9yIGFuIG9wYXF1ZSBTaGFyZWRCdWZm
ZXIgY29udGFpbmluZyBlbmNvZGVkIGRhdGEgZm9yIHRoZQorICAgIC8vIGl0ZW0gYnVmZmVyIHdp
bGwgYXNrIHRoZSBjbGllbnQgZm9yIGFuIG9wYXF1ZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGNv
bnRhaW5pbmcgZW5jb2RlZCBkYXRhIGZvciB0aGUKICAgICAvLyBpdGVtLiBUaGlzIGVuY29kZWQg
ZGF0YSBpcyB0aGVuIGFwcGVuZGVkIHRvIHRoZSBpdGVtIGJ1ZmZlciwgd2l0aCBwYWRkaW5nIHRv
IGVuc3VyZSB0aGF0CiAgICAgLy8gdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhpcyBkYXRhIGFyZSBh
bGlnbmVkIHRvIDggYnl0ZXMsIGlmIG5lY2Vzc2FyeS4gV2hlbiBjb25zdW1pbmcgZW5jb2RlZAog
ICAgIC8vIGl0ZW0gZGF0YSwgYSBjb3JyZXNwb25kaW5nIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50
IHdpbGwgYmUgcmVxdWlyZWQgdG8gY29udmVydCB0aGlzIGVuY29kZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1
NWE1NmEyNzhjMzBjY2FiMmQxOTExMGYyNDFlZWMuLjJiNDQzZmJiZWQyYzFmZGU0OGJjZGU5Y2Jl
NDA5NTM0OTdmZGU5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcApAQCAtMzgsMTIgKzM4LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RhdGljIHZvaWQgcmVsZWFzZUN1c3RvbUZvbnREYXRhKHZvaWQqIGRhdGEpCiB7Ci0gICAg
c3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nh
c3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwogfQogCiBzdGF0aWMg
Y2Fpcm9fdXNlcl9kYXRhX2tleV90IGZyZWVUeXBlRmFjZUtleTsKIAotRm9udEN1c3RvbVBsYXRm
b3JtRGF0YTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9GYWNlIGZyZWVUeXBlRmFjZSwgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCitGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKEZUX0ZhY2UgZnJlZVR5cGVGYWNlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiAgICAgOiBtX2ZvbnRGYWNlKGFkb3B0UmVmKGNhaXJvX2Z0X2ZvbnRfZmFjZV9jcmVh
dGVfZm9yX2Z0X2ZhY2UoZnJlZVR5cGVGYWNlLCBGVF9MT0FEX0RFRkFVTFQpKSkKIHsKICAgICBi
dWZmZXIucmVmKCk7IC8vIFRoaXMgaXMgYmFsYW5jZWQgYnkgdGhlIGJ1ZmZlci0+ZGVyZWYoKSBp
biByZWxlYXNlQ3VzdG9tRm9udERhdGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFt
ZXIuY3BwCmluZGV4IDlhZDE5Yjg3NmIyN2U2MGQ0ZmJhNTAzMGU2NWY4MWU3Y2E4YTUwNjkuLmRm
YmM1ODBmYjhlOWIzMDkzNmNjYTA4YmI4OGI0OWMyYmI2NTNhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC04MSwxMiArODEsMTIgQEAgSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRvciBpdGVyKQogICAgIHJldHVybiAoSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKilpdGVyLT5zZWNvbmQuZ2V0KCk7CiB9CiAKLVJlZlB0
cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKQorUmVmUHRyPEltYWdlRGVjb2RlckdTdHJlYW1lcj4gSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEltYWdlRGVjb2RlckdTdHJlYW1lcihkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24sIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiB9CiAKLUltYWdlRGVjb2RlckdTdHJlYW1lcjo6
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyOjpJbWFnZURlY29kZXJHU3RyZWFtZXIoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogbV9taW1lVHlwZShtaW1lVHlwZSkKIHsKICAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CkBAIC0xOTksNyArMTk5LDcgQEAgUGxhdGZv
cm1JbWFnZVB0ciBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KHNpemVfdCBpbmRleCwgU3UKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBJbWFnZURl
Y29kZXJHU3RyZWFtZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sKQordm9pZCBJ
bWFnZURlY29kZXJHU3RyZWFtZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCkKIHsKICAgICBwdXNoRW5jb2RlZERhdGEoZGF0YSk7CiB9CkBAIC00MjYsMTAgKzQy
NiwxMSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVj
b2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogICAgIHJldHVybiBFbmNvZGVkRGF0YVN0
YXR1czo6VW5rbm93bjsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNv
ZGVkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogeworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91
cygpOwogICAgIG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0
ZSgiSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YSgpLCBz
aXplID0gYnVmZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUo
IkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gY29udGlndW91c0J1ZmZlci0+
ZGF0YSgpLCBzaXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVjb2RlciA9
IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRhdGEs
IHNpemUpOwogICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhyZWFkVHlw
ZTo6R3JhcGhpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCmluZGV4IDY2
ZjMzNzI4NDZhNGRmODc0ZjQyMGRiNjU0ZTY4OWM5ZTQzYjBjNTIuLmQzZWY2YTQ1Y2Q3ZGJkZmMz
MTIwZWEyM2Y4ZGViM2M1OTk3MWFlOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmgKQEAgLTQxLDggKzQxLDggQEAgY2xhc3MgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIGZpbmFs
IDogcHVibGljIEltYWdlRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VEZWNvZGVyR1N0cmVhbWVyKTsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2RlckdTdHJlYW1lcj4gY3JlYXRlKFNoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbik7Ci0gICAgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyKFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IGNyZWF0
ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBJbWFnZURlY29kZXJHU3Ry
ZWFtZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgdmlydHVhbCB+SW1h
Z2VEZWNvZGVyR1N0cmVhbWVyKCkgPSBkZWZhdWx0OwogCiAgICAgc3RhdGljIGJvb2wgc3VwcG9y
dHNNZWRpYVR5cGUoTWVkaWFUeXBlIHR5cGUpIHsgcmV0dXJuIHR5cGUgPT0gTWVkaWFUeXBlOjpW
aWRlbzsgfQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1JbWFnZVB0ciBj
cmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1w
bGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRp
b25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhw
ZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQgc2V0RGF0YShT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXRE
YXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7
CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZW9z
OyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbDsKIApAQCAt
MTIyLDcgKzEyMiw3IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIHZvaWQgaGFuZGxlU2FtcGxl
KEdSZWZQdHI8R3N0U2FtcGxlPiYmKTsKLSAgICB2b2lkIHB1c2hFbmNvZGVkRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHB1c2hFbmNvZGVkRGF0YShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7CiAKICAgICBjb25zdCBJbWFnZURlY29kZXJHU3RyZWFtZXJTYW1wbGUq
IHNhbXBsZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA3OTc5NDgwZjkxYzU5N2FhOWY5MDA5N2Mx
ODgzMmM2YTE1YzMyY2U4Li5iMzI0Y2YxMTQ2NDdiMzM3NWU2YTQ1YmZhYjEwM2UwYTI5MGZiOGRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMzY5Miw3ICszNjkyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omlu
aXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAgICAgICBH
U1RfREVCVUcoInNjaGVkdWxpbmcgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMgZXZl
bnQgb2Ygc2l6ZSAlenUiLCBpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0ZjgoKS5k
YXRhKCksCiAgICAgICAgICAgICBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgICAg
IEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUo
KSk7CisgICAgICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5tX3Bs
YXllci0+aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENvbnRh
aW5lclR5cGUoKSwgaW5pdERhdGEucGF5bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsK
ICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAK
aW5kZXggNWQ4NmZiMWFmNDg3YzAyODllMDAxMjU1OTY1YzMxZGNkYTk3MzQyNi4uOTMwMTkwOTk0
NWI0YTIzZDY2NzgyZjM1MGI1NmU0NDc5ZjgwMjZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKIAogICAg
IC8vIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCB2aXJ0dWFsIG1ldGhvZHMuCiAgICAgdm9p
ZCByZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRpbnVlUG9saWN5Q2hl
Y2spPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNl
aXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQg
bG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC0xMDkzLDcgKzEwOTMsNyBA
QCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENv
bnRpbnVlUG9saWN5Q2hlY2s6Olllcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1p
bmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBXZWJL
aXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlD
bGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9DRE1Qcm94eUNsZWFyS2V5LmgKaW5kZXggNjkyYTk5NmQxOWMyNGVmZDlhNDg1NTIzNzNhNTY3
OWI1MmUxZWYxYy4uMzQ5YmZkY2FhZDZjN2Q3ZjhkNWFkYTBhMTcyMTlmZDllNzA2MjZmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9D
RE1Qcm94eUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmgKQEAgLTYyLDExICs2MiwxMSBAQCBwdWJs
aWM6CiAgICAgQ0RNUHJveHlDbGVhcktleSgpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIH5DRE1Q
cm94eUNsZWFyS2V5KCk7CiAKLSAgICAvLyBGSVhNRTogVGhlcmUncyBhIGxhY2sgb2YgY29uc2lz
dGVuY3kgYmV0d2VlbiBTaGFyZWRCdWZmZXJzLAorICAgIC8vIEZJWE1FOiBUaGVyZSdzIGEgbGFj
ayBvZiBjb25zaXN0ZW5jeSBiZXR3ZWVuIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJzLAogICAgIC8v
IFZlY3RvcjxjaGFyPidzIGFuZCB7dWludDhfdCosc2l6ZV90fSBpZGlvbXMgZm9yIHJlcHJlc2Vu
dGluZyBhIGNodW5rIG9mCi0gICAgLy8gYnl0ZXMuIEZpeCB0aGF0IHNvbWVob3cuIE5vdGUgU2hh
cmVkQnVmZmVycyBhcmUgZGFuZ2Vyb3VzIHNpbmNlCisgICAgLy8gYnl0ZXMuIEZpeCB0aGF0IHNv
bWVob3cuIE5vdGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcnMgYXJlIGRhbmdlcm91cyBzaW5jZQog
ICAgIC8vIHRoZXkncmUgbm90IHRocmVhZC1zYWZlIGFuZCB0aGlzIGNsYXNzIG11c3QgbWFpbnRh
aW4KLSAgICAvLyB0aHJlYWQtc2FmZXR5LCBidXQgbWF5YmUgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCBjb3VsZCBiZQorICAgIC8vIHRocmVhZC1zYWZldHksIGJ1dCBtYXliZSBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCBjb3VsZCBiZQogICAgIC8vIG1hZGUgdG8gd29yaywg
aG93ZXZlciB0aGF0IGhhcyB6ZXJvIGhlbHBlcnMgZm9yIGRyb3BwaW5nIGludG8KICAgICAvLyBp
dGVyYXRvci1hd2FyZSAvIGNvbXBhcmF0b3ItYXdhcmUgY29udGFpbmVycy4uLgogICAgIHN0cnVj
dCBjZW5jRGVjcnlwdENvbnRleHQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKaW5kZXggMmVm
YTA0MzYwZTg4NDgzODA2MTQ0YzNkNzFkZTYzYWQ3YjQyYjU2MS4uYzM4OTE2ZTdkMDU5ZTg4OWI1
Yzg4ZWViMDllMGY0Y2ZjMDNjMWRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCkBAIC0y
MjAsNyArMjIwLDcgQEAgYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNTZXNzaW9ucygp
IGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAorYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9y
dHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewogICAgIC8vIFZhbGlkYXRlIHRoZSBp
bml0RGF0YSBidWZmZXIgYXMgYW4gSlNPTiBvYmplY3QgaW4ga2V5aWRzIGNhc2UuCiAgICAgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgImtleWlkcyIpICYm
IENETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KGluaXREYXRhKSkKQEAgLTIzNyw3ICsyMzcs
NyBAQCBib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgUwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZVRodW5kZXI6OnNhbml0aXplUmVzcG9uc2UoY29u
c3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBDRE1Qcml2YXRlVGh1bmRlcjo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICByZXR1cm4gcmVzcG9uc2Uu
Y29weSgpOwogfQpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjpp
bml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhCiAg
ICAgY2FsbGJhY2soU3VjY2VlZGVkKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OnNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsICBTdWNj
ZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjpzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwg
IFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIE9wZW5DRE1FcnJvciBlcnJvciA9
IG9wZW5jZG1fc3lzdGVtX3NldF9zZXJ2ZXJfY2VydGlmaWNhdGUobV90aHVuZGVyU3lzdGVtLmdl
dCgpLCBjb25zdF9jYXN0PHVpbnQ4X3QqPihjZXJ0aWZpY2F0ZS0+ZGF0YSgpKSwKICAgICAgICAg
Y2VydGlmaWNhdGUtPnNpemUoKSk7CkBAIC0zMjYsNyArMzI2LDcgQEAgUmVmUHRyPENETUluc3Rh
bmNlU2Vzc2lvbj4gQ0RNSW5zdGFuY2VUaHVuZGVyOjpjcmVhdGVTZXNzaW9uKCkKIGNsYXNzIFBh
cnNlZFJlc3BvbnNlTWVzc2FnZSB7CiAKIHB1YmxpYzoKLSAgICBQYXJzZWRSZXNwb25zZU1lc3Nh
Z2UoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAgICBQYXJzZWRSZXNwb25z
ZU1lc3NhZ2UoY29uc3QgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAg
ICAgewogICAgICAgICBpZiAoIWJ1ZmZlciB8fCAhYnVmZmVyLT5zaXplKCkpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0zNTQsOCArMzU0LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1ZhbGlk
KCkgY29uc3QgeyByZXR1cm4gbV9pc1ZhbGlkOyB9CiAgICAgYm9vbCBoYXNQYXlsb2FkKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9wYXlsb2FkKTsgfQotICAgIGNvbnN0IFJl
ZjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJl
dHVybiBtX3BheWxvYWQudmFsdWUoKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+JiBwYXlsb2Fk
KCkgJiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KKyAg
ICBjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCYgeyBB
U1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CisgICAgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgJiB7IEFTU0VSVChtX3BheWxvYWQpOyBy
ZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KICAgICBib29sIGhhc1R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUuaGFzX3ZhbHVlKCk7IH0KICAgICBXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VU
eXBlIHR5cGUoKSBjb25zdCB7IEFTU0VSVChtX3R5cGUpOyByZXR1cm4gbV90eXBlLnZhbHVlKCk7
IH0KICAgICBXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlIHR5cGVPcihXZWJDb3JlOjpNZWRp
YUtleU1lc3NhZ2VUeXBlIGFsdGVybmF0ZSkgY29uc3QgeyByZXR1cm4gbV90eXBlID8gbV90eXBl
LnZhbHVlKCkgOiBhbHRlcm5hdGU7IH0KQEAgLTM2NCwxMSArMzY0LDExIEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBib29sIG1faXNWYWxpZCB7IGZhbHNlIH07Ci0gICAgc3RkOjpvcHRpb25h
bDxSZWY8U2hhcmVkQnVmZmVyPj4gbV9wYXlsb2FkOworICAgIHN0ZDo6b3B0aW9uYWw8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX3BheWxvYWQ7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlPiBtX3R5cGU7CiB9OwogCi12b2lkIENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OmNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpjaGFsbGVu
Z2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7CiAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShi
dWZmZXIpOwogICAgIGlmICghcGFyc2VkUmVzcG9uc2VNZXNzYWdlKSB7CkBAIC00NzUsNyArNDc1
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjprZXlzVXBkYXRlRG9uZUNhbGxi
YWNrKCkKICAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKLXZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIG1lc3NhZ2UpCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2Fs
bGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBH
U1RfRVJST1IoIkNETSBlcnJvciIpOwogICAgIEdTVF9NRU1EVU1QKCJlcnJvciBkdW1wIiwgbWVz
c2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwpAQCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIG1lc3NhZ2UpCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwog
fQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGFTaGFyZWRCdWZmZXIsCit2b2lkIENETUluc3RhbmNlU2Vz
c2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGluaXREYXRhU2hhcmVkQnVmZmVyLAogICAgIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC01MDYsNyArNTA2LDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNl
bnNlVHlwZSwgY29uc3QgQXQKICAgICAgICAgbV9pbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSwg
bV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSwgbnVsbHB0ciwgMCwgJm1fdGh1bmRlclNlc3Np
b25DYWxsYmFja3MsIHRoaXMsICZzZXNzaW9uKTsKICAgICBpZiAoIXNlc3Npb24pIHsKICAgICAg
ICAgR1NUX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIHNlc3Npb24iKTsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKKyAgICAgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXls
b2FkKCk7CiAgICAgICAgIGNhbGxiYWNrKGluaXREYXRhLnJlbGVhc2VOb25OdWxsKCksIHsgfSwg
ZmFsc2UsIEZhaWxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01MTUsNyArNTE1LDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXQKIAogICAgIGF1dG8gZ2VuZXJhdGVDaGFsbGVuZ2Ug
PSBbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
aW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CiAgICAgICAg
IGlmIChtX3Nlc3Npb25JRC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIEdTVF9FUlJPUigiY291
bGQgbm90IGNyZWF0ZSBzZXNzaW9uIGlkIik7CiAgICAgICAgICAgICBjYWxsYmFjayhpbml0RGF0
YS5yZWxlYXNlTm9uTnVsbCgpLCB7IH0sIGZhbHNlLCBGYWlsZWQpOwpAQCAtNTQ1LDEzICs1NDUs
MTMgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpzZXNzaW9uRmFpbHVyZSgpCiAg
ICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQogCi12b2lkIENETUluc3Rh
bmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQs
IExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBj
YWxsYmFjaykKIHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09IG1f
c2Vzc2lvbklEKTsKIAogICAgIEdTVF9UUkFDRSgiVXBkYXRpbmcgc2Vzc2lvbiAlcyIsIHNlc3Np
b25JRC51dGY4KCkuZGF0YSgpKTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBw
ZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKKyAgICBtX3Nl
c3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBy
ZXNwb25zZU1lc3NhZ2UpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgICAgICBpZiAoc3VjY2VzcykgewogICAgICAgICAgICAgaWYgKCFyZXNwb25zZU1lc3Nh
Z2UpCkBAIC01NjIsNyArNTYyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHkKICAgICAgICAg
ICAgICAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKHJlc3Bv
bnNlTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNlTWVzc2Fn
ZSk7CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2Fk
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdU
Rk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CisgICAgICAgICAgICAgICAg
ICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRS
ZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVH
KCJnb3QgbWVzc2FnZSBvZiBzaXplICV6dSIsIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIEdTVF9NRU1EVU1QKCJtZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdl
LT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQsCkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNz
aW9uSUQKIHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09IG1fc2Vz
c2lvbklEKTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25DaGFuZ2Vk
Q2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9v
bCBzdWNjZXNzLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZU1lc3Nh
Z2UpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBp
ZiAoc3VjY2VzcykgewogICAgICAgICAgICAgaWYgKCFyZXNwb25zZU1lc3NhZ2UpCkBAIC01OTcs
NyArNTk3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbihM
aWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQKICAgICAgICAgICAgICAgICBQYXJz
ZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKHJlc3BvbnNlTWVzc2FnZSk7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAg
ICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2Vk
UmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CisgICAgICAgICAgICAgICAgICAgIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3Nh
Z2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVzc2Fn
ZSBvZiBzaXplICV6dSIsIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdT
VF9NRU1EVU1QKCJtZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwog
ICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwg
c3RkOjptYWtlX3BhaXIocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnR5cGVPcihNZWRpYUtleU1lc3Nh
Z2VUeXBlOjpMaWNlbnNlUmVxdWVzdCksCkBAIC02NDAsNyArNjQwLDcgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Np
b25JRCwgTGljZW4KIHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgbV9zZXNzaW9uSUQg
PT0gc2Vzc2lvbklEKTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0
aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25DaGFuZ2VkQ2Fs
bGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBz
dWNjZXNzLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIG11dGFibGUg
ewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoc3VjY2Vzcykg
ewogICAgICAgICAgICAgaWYgKCFidWZmZXIpCkBAIC02NDksNyArNjQ5LDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNl
c3Npb25JRCwgTGljZW4KICAgICAgICAgICAgICAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFy
c2VkUmVzcG9uc2VNZXNzYWdlKGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNl
ZFJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVz
c2FnZS5oYXNQYXlsb2FkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZl
cj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0g
V1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAg
ICAgICAgR1NUX0RFQlVHKCJzZXNzaW9uICVzIHJlbW92ZWQsIG1lc3NhZ2UgbGVuZ3RoICV6dSIs
IG1fc2Vzc2lvbklELnV0ZjgoKS5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKG1fa2V5U3RvcmUuYWxsS2V5c0FzKE1lZGlhS2V5U3RhdHVzOjpS
ZWxlYXNlZCksIFdURk1vdmUobWVzc2FnZSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaAppbmRleCBjZGQ4ZGEy
MTEyM2MxNzkxYWUyZmI2NDM5ZmYyZDZmYTBkMmViMjFjLi4xMDIwZTE1MzIyNzFiNTM1MWUxMDZk
ZGU4ZjIxZWE1NDA1YTljMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaApAQCAtOTMsOCArOTMs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwogICAgIGJv
b2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1
cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVy
JikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0
ZToKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFuY2UKICAgICBJ
bXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gSW1wbGVtZW50YXRpb25UeXBlOjpUaHVuZGVyOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0
aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlz
dGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFj
ayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRp
ZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFs
OwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9r
ZXlTeXN0ZW07IH0KICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9u
KCkgZmluYWw7CkBAIC0xMjYsOCArMTI2LDggQEAgY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1
bmRlciBmaW5hbCA6IHB1YmxpYyBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSB7CiBwdWJsaWM6CiAg
ICAgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcihDRE1JbnN0YW5jZVRodW5kZXImKTsKIAotICAg
IHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYp
IGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwor
ICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vu
c2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5n
JiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBk
YXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5h
bDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxs
YmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYs
IExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpAQCAtMTQx
LDE0ICsxNDEsMTQgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBDRE1JbnN0YW5jZVRodW5kZXIq
IGNkbUluc3RhbmNlVGh1bmRlcigpIGNvbnN0OwogCi0gICAgdXNpbmcgTm90aWZpY2F0aW9uID0g
dm9pZCAoQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6KikoUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJik7CisgICAgdXNpbmcgTm90aWZpY2F0aW9uID0gdm9pZCAoQ0RNSW5zdGFuY2VT
ZXNzaW9uVGh1bmRlcjo6KikoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpOwogICAgIHVzaW5nIENoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrID0gRnVuY3Rpb248dm9p
ZCgpPjsKLSAgICB1c2luZyBTZXNzaW9uQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChi
b29sLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT47CisgICAgdXNpbmcgU2Vzc2lvbkNoYW5nZWRD
YWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoYm9vbCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpPjsKIAotICAgIHZvaWQgY2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBrZXlVcGRhdGVkQ2FsbGJh
Y2soS2V5SURUeXBlJiYpOwogICAgIHZvaWQga2V5c1VwZGF0ZURvbmVDYWxsYmFjaygpOwotICAg
IHZvaWQgZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGVy
cm9yQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIENETUlu
c3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzIHN0YXR1cyhjb25zdCBLZXlJRFR5cGUmKSBjb25zdDsK
ICAgICB2b2lkIHNlc3Npb25GYWlsdXJlKCk7CiAKQEAgLTE1OSw3ICsxNTksNyBAQCBwcml2YXRl
OgogICAgIEluaXREYXRhIG1faW5pdERhdGE7CiAgICAgT3BlbkNETVNlc3Npb25DYWxsYmFja3Mg
bV90aHVuZGVyU2Vzc2lvbkNhbGxiYWNrcyB7IH07CiAgICAgQm94UHRyPE9wZW5DRE1TZXNzaW9u
PiBtX3Nlc3Npb247Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdlOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX21lc3NhZ2U7CiAgICAgYm9vbCBtX25lZWRz
SW5kaXZpZHVhbGl6YXRpb24geyBmYWxzZSB9OwogICAgIFZlY3RvcjxDaGFsbGVuZ2VHZW5lcmF0
ZWRDYWxsYmFjaz4gbV9jaGFsbGVuZ2VDYWxsYmFja3M7CiAgICAgVmVjdG9yPFNlc3Npb25DaGFu
Z2VkQ2FsbGJhY2s+IG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0
aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKaW5kZXggM2Y4NWFmZTczYzg0Mjc2Mjk5N2Q1
YWJjMmQ3YmMwN2Y3YzAxYjljMy4uZWE4OTBmNjdkYTIxMzg3ZjQwZGE2NTFhMGNhNWM3MzQ5M2U4
NGY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApA
QCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgdm9pZCBtYXJrdXBFcnJvcihHTWFya3VwUGFyc2VDb250
ZXh0KiwgR0Vycm9yKiwgZ3BvaW50ZXIpCiAKIHN0YXRpYyBHTWFya3VwUGFyc2VyIG1hcmt1cFBh
cnNlciB7IG1hcmt1cFN0YXJ0RWxlbWVudCwgbWFya3VwRW5kRWxlbWVudCwgbWFya3VwVGV4dCwg
bWFya3VwUGFzc3Rocm91Z2gsIG1hcmt1cEVycm9yIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgdW5w
YXJzZWRQYXlsb2FkKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpl
eHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2Fk
KQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2Vk
UGF5bG9hZCk7CiAgICAgaWYgKCFwYXlsb2FkIHx8ICFwYXlsb2FkLT5zaXplKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJl
YW1lckVNRVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAppbmRleCBkNWFmZjg0NWY0MDlhNzVk
NzFhOTg0MGFjZjFkMzQyYTQ2NDdkMmYxLi4yN2RkNGVhZTBkMmUwMWFiNGQ4NGMwYWJjNDI0ZWJi
MTAxMDRjMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgK
QEAgLTM4LDggKzM4LDcgQEAgR1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTih3ZWJraXRfbWVkaWFf
Y29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSkKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEluaXREYXRhIHsKIHB1YmxpYzoKLSAgICBJbml0RGF0YSgpCi0gICAgICAg
IDogbV9wYXlsb2FkKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpIHsgfQorICAgIEluaXREYXRhKCkg
PSBkZWZhdWx0OwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIGFuIGVudW0gZm9yIHN5
c3RlbSB1dWlkcyBmb3IgYmV0dGVyIHR5cGUgc2FmZXR5LgogICAgIEluaXREYXRhKGNvbnN0IFN0
cmluZyYgc3lzdGVtSWQsIEdzdEJ1ZmZlciogaW5pdERhdGEpCkBAIC01MCwxMyArNDksMTcgQEAg
cHVibGljOgogICAgICAgICAgICAgR1NUX0NBVF9MRVZFTF9MT0cod2Via2l0X21lZGlhX2NvbW1v
bl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnksIEdTVF9MRVZFTF9FUlJPUiwgbnVs
bHB0ciwgImNhbm5vdCBtYXAgJXMgcHJvdGVjdGlvbiBkYXRhIiwgc3lzdGVtSWQudXRmOCgpLmRh
dGEoKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAg
ICAgICBtX3BheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVh
dGVTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRy
YWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSkpCisg
ICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxvYWQucmVsZWFzZU5vbk51bGwo
KSk7CiAgICAgfQogCi0gICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQorICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lz
dGVtSWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCiAgICAgICAg
IDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKLSAgICAgICAgLCBtX3BheWxvYWQoZXh0cmFjdENlbmNJ
Zk5lZWRlZChXVEZNb3ZlKHBheWxvYWQpKSkKICAgICB7CisgICAgICAgIGlmIChwYXlsb2FkKSB7
CisgICAgICAgICAgICBpZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRl
ZChwYXlsb2FkLT5tYWtlQ29udGlndW91cygpKSkKKyAgICAgICAgICAgICAgICBtX3BheWxvYWQu
YXBwZW5kKHBhcnNlZFBheWxvYWQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIH0KICAgICB9
CiAKICAgICB2b2lkIGFwcGVuZChJbml0RGF0YSYmIGluaXREYXRhKQpAQCAtNzIsMTAgKzc1LDEw
IEBAIHB1YmxpYzoKICAgICAgICAgLy8gaXQncyBub3QgdmVyeSByb2J1c3QsIHNvIGJlIGNhcmVm
dWwgaGVyZSEKICAgICAgICAgbV9zeXN0ZW1JZCA9IGluaXREYXRhLm1fc3lzdGVtSWQ7CiAKLSAg
ICAgICAgbV9wYXlsb2FkLT5hcHBlbmQoKmluaXREYXRhLnBheWxvYWQoKSk7CisgICAgICAgIG1f
cGF5bG9hZC5hcHBlbmQoKmluaXREYXRhLnBheWxvYWQoKSk7CiAgICAgfQogCi0gICAgY29uc3Qg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQ7
IH0KKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGF5bG9hZC5nZXQoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQoKSBj
b25zdCB7IHJldHVybiBtX3N5c3RlbUlkOyB9CiAgICAgU3RyaW5nIHBheWxvYWRDb250YWluZXJU
eXBlKCkgY29uc3QKICAgICB7CkBAIC04NiwxMSArODksMTEgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gImNlbmMiX3M7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGlj
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlkOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGF5bG9hZDsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIG1fcGF5bG9hZDsKIH07CiAKIGNsYXNzIFByb3RlY3Rpb25TeXN0ZW1FdmVudHMgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNzE4YjliZDMxNWVjYzY3MDc4OWM2NWNiYWFhMDM0
OTI5NzVlNzJkMy4uNjkyOGE2M2U5NzFjN2MzNWU4ODQ0ZWVmNzNiZmE0NGE4ZDhjMDMwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247
CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0
aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCmluZGV4
IDgzZTZhZjdiMDM4OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3YTkuLjY4YmNjODg0NmE4YjFm
MGY3Y2JjZjE0MDMxOTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCkBAIC00
OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQREZEb2N1bWVudEltYWdl
OjpjcmVhdGVQREZEb2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9j
UERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXSk7CisgICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0
YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUJvdW5kc0Zv
ckN1cnJlbnRQYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCmluZGV4IDA5YzFjNDVjNDU5
M2FlYTQzMTgzMGQyMTViN2U3NDg1MmMxOWUzN2YuLmZhMDAwODExNjA2Njk3ZGM1YzUxMTIzMzNj
OTBjOGM5MmI0YjY3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaApAQCAtMzUsOSArMzUs
MTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEJpZ0VuZGlhblVTaG9ydDsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVmaXg7CiBjbGFzcyBGb250TWVtb3J5UmVz
b3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBzdHJ1Y3QgRU9USGVhZGVyIHsKICAgICBFT1RIZWFkZXIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVmVydGljYWxEYXRhLmNwcAppbmRleCAyY2ZhODU0YzAyMjY2OGFjYzAwNzM3YzFlYmIzNWZm
MzQ4ZDU4ZTJiLi4wZmE4ZjMwNmFkOTUyZDA2YTA5Mjk3ZDBiMWQyODdiODk4ODMyYTNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0zODEsNyArMzgxLDcgQEAgc3Ry
dWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAKIHN0YXRpYyBib29sIGxvYWRIbXR4VGFibGUo
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBWZWN0b3I8dWludDE2X3Q+JiBh
ZHZhbmNlV2lkdGhzKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRm
b3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVhVGFnKTsKICAgICBj
b25zdCBPcGVuVHlwZTo6SGhlYVRhYmxlKiBoaGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8
T3BlblR5cGU6OkhoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIWhoZWEpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTQyNCw3ICs0MjQsNyBAQCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6T3Bl
blR5cGVWZXJ0aWNhbERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLAog
dm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYgcGxhdGZvcm1EYXRhKQogewogICAgIC8vIExvYWQgdmhlYSBmaXJzdC4gVGhpcyB0YWJs
ZSBpcyByZXF1aXJlZCBmb3IgZm9udHMgdGhhdCBzdXBwb3J0IHZlcnRpY2FsIGZsb3cuCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUo
T3BlblR5cGU6OlZoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5U
eXBlVGFibGUoT3BlblR5cGU6OlZoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpWaGVhVGFi
bGUqIHZoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6VmhlYVRhYmxlPihi
dWZmZXIpOwogICAgIGlmICghdmhlYSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDg2LDcgKzQ4Niw3
IEBAIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9h
ZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRm
b3JtRGF0YSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURh
dGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CisgICAgYXV0byBidWZmZXIgPSBw
bGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7CiAgICAgY29uc3Qg
T3BlblR5cGU6OkdTVUJUYWJsZSogZ3N1YiA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5U
eXBlOjpHU1VCVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKGdzdWIpCiAgICAgICAgIGdzdWItPmdl
dFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKCZtX3ZlcnRpY2FsR2x5cGhNYXAsICpidWZmZXIu
Z2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0RpcmVjdFdyaXRlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaAppbmRleCBhNjI3MTliMTcxOWE3NGY5NzY5MjIx
OWRmNWY3YWFlZGM0OTA2NDY2Li4wZGI0YWZhZGIzZjc0MmI4M2E0ZTE2Y2YzNzE4NzBhMmIwNDA0
ZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGly
ZWN0V3JpdGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaApAQCAtNDMsNyArNDMsNyBAQCBlbnVtIERXUklU
RV9GT05UX1NUUkVUQ0g7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9y
bURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBuYW1lc3BhY2UgRGlyZWN0V3JpdGUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApp
bmRleCA1ZjEwZjczOTJkMDRjMzQ0ZDEyY2VlNDI2NmVkYjFlZTk5NzFjNGVmLi4wOGZjOWYxOWVh
ZWE5NDgzZWE1OGVjMWFlZWRkNDU3MjU2Y2UyN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmgKQEAgLTM2LDEyICszNiwxMyBAQCB0eXBlZGVmIHN0cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250
Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udE1lbW9y
eVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVj
aWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250
VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0
dXJlU2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAppbmRleCA2MjllMGU2MWExMDRj
NTY3YTFkNGVkY2I3ZTU3OTdkY2Y2N2M2ZThlLi43NzM1NzM5YjkzMzRmNDRkOTlhM2YxMmZmYzVi
ZjdiNDFmN2NjNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKQEAgLTI3Miw3ICsyNzIs
NyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckRpcmVjdDJEOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YgogICAgIHJldHVybiBiaXRtYXA7CiB9CiAKLXZv
aWQgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnNldERhdGEoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAg
aWYgKCFhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJE
LmgKaW5kZXggNGY0NzI1ODZiNDI0YmRhMWNmNmZhMDE0M2NiYTIzZDAzMDAxNmU0NS4uYzIzNjVm
ZDc0NGM2MTE4YzE5OTllMDViODAyZWQ1YjQ4ZjM2NDgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJE
LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgSW1hZ2VEZWNvZGVyRGlyZWN0MkQgZmluYWwgOiBw
dWJsaWMgSW1hZ2VEZWNvZGVyIHsKIHB1YmxpYzoKICAgICBJbWFnZURlY29kZXJEaXJlY3QyRCgp
OwogCi0gICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJEaXJlY3QyRD4gY3JlYXRlKFNoYXJlZEJ1
ZmZlciYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICBzdGF0
aWMgUmVmPEltYWdlRGVjb2RlckRpcmVjdDJEPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlckRpcmVjdDJEKCkpOwogICAgIH0K
QEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogCiAgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVG
cmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xl
dmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERl
Y29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAotICAgIHZvaWQgc2V0RGF0YShTaGFy
ZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRh
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAg
ICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxE
YXRhUmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZp
bmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlV2luLmNwcAppbmRleCAwZDg4MjBlOWYzZDZmZDc3MzVkNTcwYjM2NDE0ODhmNTNiZDdlY2U5
Li4yZDk3MjcwYTczNDgzNDg5M2U3OGM4MWZmMGVjNWJiNWRmZWMzZjg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAKQEAgLTMwLDcg
KzMwLDcgQEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAogLy8gVGhpcyBmdW5jdGlvbiBs
b2FkcyByZXNvdXJjZXMgZnJvbSBXZWJLaXQKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciopOworUmVmUHRyPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciop
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcApp
bmRleCBkOTU2ZDllNzYyNWQ1YmI1YTcwZjA2OTNlNzc5OGVlOTA4NDlmMTY1Li4zM2M5NWVjMzMz
M2E5MjBjNjRhMDE4MTc1MWViNGE1MDVlZjFhN2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29k
ZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNl
IHsKIAotc3RhdGljIHVuc2lnbmVkIGNvcHlGcm9tU2hhcmVkQnVmZmVyKGNoYXIqIGJ1ZmZlciwg
dW5zaWduZWQgYnVmZmVyTGVuZ3RoLCBjb25zdCBTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikK
K3N0YXRpYyB1bnNpZ25lZCBjb3B5RnJvbVNoYXJlZEJ1ZmZlcihjaGFyKiBidWZmZXIsIHVuc2ln
bmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVm
ZmVyKQogewogICAgIHVuc2lnbmVkIGJ5dGVzRXh0cmFjdGVkID0gMDsKICAgICBmb3IgKGNvbnN0
IGF1dG8mIGVsZW1lbnQgOiBzaGFyZWRCdWZmZXIpIHsKQEAgLTEzNSw3ICsxMzUsNyBAQCBib29s
IG1hdGNoZXNDVVJTaWduYXR1cmUoY2hhciogY29udGVudHMpCiAKIH0KIAotUmVmUHRyPFNjYWxh
YmxlSW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNv
ZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbGVuZ3RoT2ZMb25nZXN0U2lnbmF0dXJlID0gMTQ7IC8vIFRvIHdpdDogIlJJRkY/Pz8/V0VC
UFZQIgogICAgIGNoYXIgY29udGVudHNbbGVuZ3RoT2ZMb25nZXN0U2lnbmF0dXJlXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1h
Z2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2Fs
YWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IDMyZDRlNmY4YjhmYTE0YTEzYmZiNjIyZDg3NTcwODc5
OGI5OWRhYTIuLjljNDA1NTc4MjQxZDBjNTEyNzAyOTUxNWMyMjEyNjU4ZjhjNGY2OGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1h
Z2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
U2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBSZXR1cm5zIG51bGxwdHIgaWYgd2UgY2FuJ3Qgc25pZmYgYSBzdXBwb3J0ZWQgdHlwZSBmcm9t
IHRoZSBwcm92aWRlZCBkYXRhIChwb3NzaWJseQogICAgIC8vIGJlY2F1c2UgdGhlcmUgaXNuJ3Qg
ZW5vdWdoIGRhdGEgeWV0KS4KLSAgICBzdGF0aWMgUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVy
PiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8U2NhbGFibGVJbWFnZURlY29kZXI+IGNy
ZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3Qg
eyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhhOyB9CiAKQEAgLTcwLDE2ICs3MCwxNSBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3Rh
dHVzOjpDb21wbGV0ZTsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJpZGUKKyAgICB2b2lkIHNldERhdGEoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRl
CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIGlmICht
X2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YS5kYXRhKCkpIHsKLSAgICAgICAgICAgIC8v
IFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbWJpbmVzIGFsbCBzZWdtZW50cyBpbnRvIG9uZSBpbiBj
YXNlIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZS4KLSAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEuYmVn
aW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7Ci0gICAgICAgIH0KKyAgICAgICAgYXV0byBjb250aWd1
b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNE
YXRhLT5kYXRhKCkpCisgICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YS0+YmVnaW4o
KS0+c2VnbWVudC5jb3B5UmVmKCk7CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09
IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7CiAgICAgICAgICAgICBtX2RlY29k
aW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKICAgICAgICAgICAgIHRyeURlY29kZVNpemUoYWxs
RGF0YVJlY2VpdmVkKTsKQEAgLTE5NSw3ICsxOTQsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRp
b25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ+IG1fZGF0YTsKICAgICBWZWN0b3I8U2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSwgMT4gbV9m
cmFtZUJ1ZmZlckNhY2hlIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKICAgICBtdXRhYmxl
IExvY2sgbV9sb2NrOwogICAgIGJvb2wgbV9wcmVtdWx0aXBseUFscGhhOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklG
SW1hZ2VSZWFkZXIuY3BwCmluZGV4IDdjNjAzZmQ4MzU4YzIxNGFjOTE4NGYzMTg5OTcyZmU4NDFi
NjFlODAuLjI2Zjg4NjQ5NmU1YTVhMTRlMjhhZmIxYWZhOWJmYzMwMTc3ZjUxY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdl
UmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9h
dmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgQVZJRkltYWdlUmVhZGVy
OjpBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJbWFnZURlY29kZXI+JiYgZGVjb2RlcikKIAog
QVZJRkltYWdlUmVhZGVyOjp+QVZJRkltYWdlUmVhZGVyKCkgPSBkZWZhdWx0OwogCi1ib29sIEFW
SUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dCYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCitib29sIEFWSUZJbWFnZVJlYWRlcjo6cGFy
c2VIZWFkZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChhdmlmRGVjb2RlclNldElPTWVtb3J5
KG1fYXZpZkRlY29kZXIuZ2V0KCksIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgIT0gQVZJRl9S
RVNVTFRfT0spCiAgICAgICAgIHJldHVybiBhbGxEYXRhUmVjZWl2ZWQgPyBtX2RlY29kZXItPnNl
dEZhaWxlZCgpIDogZmFsc2U7CkBAIC01OCw3ICs1OCw3IEBAIGJvb2wgQVZJRkltYWdlUmVhZGVy
OjpwYXJzZUhlYWRlcihjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29s
IGFsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQVZJRkltYWdlUmVhZGVyOjpkZWNvZGVG
cmFtZShzaXplX3QgZnJhbWVJbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYgYnVmZmVy
LCBjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKQordm9pZCBBVklGSW1hZ2VS
ZWFkZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFtZUluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2Rl
ckZyYW1lJiBidWZmZXIsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
JiBkYXRhKQogewogICAgIGlmIChtX2RlY29kZXItPmZhaWxlZCgpKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlm
L0FWSUZJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaAppbmRleCBjYmNhMGI4YzEyNGJmZjBmZmMzMzAxYmEz
NWJjZTAxZWQyNzIyZGY4Li40OTZmNjlmODEyYmQ3NWIwZWRhNjM1N2JhYTg2MGNmY2NiNWJhNGIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlm
L0FWSUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgKQEAgLTM5LDggKzM5LDggQEAgcHVibGljOgog
ICAgIEFWSUZJbWFnZVJlYWRlcihSZWZQdHI8QVZJRkltYWdlRGVjb2Rlcj4mJik7CiAgICAgfkFW
SUZJbWFnZVJlYWRlcigpOwogCi0gICAgYm9vbCBwYXJzZUhlYWRlcihjb25zdCBTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIHZvaWQgZGVjb2Rl
RnJhbWUoc2l6ZV90IGluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiwgY29uc3QgU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpOworICAgIGJvb2wgcGFyc2VIZWFkZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmLCBib29sIGFsbERhdGFSZWNlaXZlZCk7
CisgICAgdm9pZCBkZWNvZGVGcmFtZShzaXplX3QgaW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVy
RnJhbWUmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpOwogICAg
IHNpemVfdCBpbWFnZUNvdW50KCkgY29uc3Q7CiAgICAgZG91YmxlIHJlcGV0aXRpb25Db3VudCgp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCmluZGV4IDcyNzY5YTY5MjZlYzI0
MTliZjY2MzgyNTI4ZDNkNzcyMGE1NGFkYWUuLmY3NDU1YzE0NmM3ZThhZWIwNGNjOGM1NmYzMzBl
MmEwMWYzYmE3MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCkBAIC00Niw3ICs0Niw3
IEBAIEJNUEltYWdlRGVjb2Rlcjo6Qk1QSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiB7CiB9CiAKLXZvaWQgQk1QSW1hZ2VEZWNvZGVy
OjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lk
IEJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Jt
cC9CTVBJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaAppbmRleCBjN2M3Y2E4MWZlYTZiOGE3NzRiYjMwOGU1
MzhkY2QwNDhjOTk1ZWVhLi42NGRlZDZhYmJlMmMwYTI5YjExZjlmYjVlY2Q2YjQ4NzI0ZDU4OTcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAv
Qk1QSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9u
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gImJtcCJfczsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFy
ZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRh
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAg
ICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBp
bmRleCkgZmluYWw7CiAgICAgLy8gQ0FVVElPTjogc2V0RmFpbGVkKCkgZGVsZXRlcyB8bV9yZWFk
ZXJ8LiBCZSBjYXJlZnVsIHRvIGF2b2lkCiAgICAgLy8gYWNjZXNzaW5nIGRlbGV0ZWQgbWVtb3J5
LCBlc3BlY2lhbGx5IHdoZW4gY2FsbGluZyB0aGlzIGZyb20gaW5zaWRlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJl
YWRlci5oCmluZGV4IDQ4NDRmMzgwZGMxN2VjNzA0NTg4ZmIxMmY1M2VhYmM2ZDIwZTYwZjQuLmJk
NDMwZThhOGJlYTJjODE2YjJjNTIyYmY1YmE3ODg0NmMzOGUwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJl
YWRlci5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEJNUEltYWdlUmVhZGVyIHsKIHB1YmxpYzoK
ICAgICAvLyBSZWFkIGEgdmFsdWUgZnJvbSB8ZGF0YVtvZmZzZXRdfCwgY29udmVydGluZyBmcm9t
IGxpdHRsZSB0byBuYXRpdmUKICAgICAvLyBlbmRpYW5uZXNzLgotICAgIHN0YXRpYyBpbmxpbmUg
dWludDE2X3QgcmVhZFVpbnQxNihjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRh
LCBpbnQgb2Zmc2V0KQorICAgIHN0YXRpYyBpbmxpbmUgdWludDE2X3QgcmVhZFVpbnQxNihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IHJlc3VsdDsKICAgICAgICAgbWVtY3B5KCZyZXN1bHQs
ICZkYXRhLmRhdGEoKVtvZmZzZXRdLCAyKTsKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHN0YXRpYyBpbmxpbmUgdWludDMyX3Qg
cmVhZFVpbnQzMihjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zm
c2V0KQorICAgIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgcmVhZFVpbnQzMihjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkKICAgICB7CiAg
ICAgICAgIHVpbnQzMl90IHJlc3VsdDsKICAgICAgICAgbWVtY3B5KCZyZXN1bHQsICZkYXRhLmRh
dGEoKVtvZmZzZXRdLCA0KTsKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIEJNUEltYWdl
UmVhZGVyKFNjYWxhYmxlSW1hZ2VEZWNvZGVyKiBwYXJlbnQsIHNpemVfdCBkZWNvZGVkQW5kSGVh
ZGVyT2Zmc2V0LCBzaXplX3QgaW1nRGF0YU9mZnNldCwgYm9vbCB1c2VzQW5kTWFzayk7CiAKICAg
ICB2b2lkIHNldEJ1ZmZlcihTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBidWZmZXIpIHsgbV9i
dWZmZXIgPSBidWZmZXI7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQorICAgIHZvaWQgc2V0RGF0YShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQog
CiAgICAgLy8gRG9lcyB0aGUgYWN0dWFsIGRlY29kaW5nLiBJZiB8b25seVNpemV8IGlzIHRydWUs
IGRlY29kaW5nIG9ubHkKICAgICAvLyBwcm9ncmVzc2VzIGFzIGZhciBhcyBuZWNlc3NhcnkgdG8g
Z2V0IHRoZSBpbWFnZSBzaXplLiBSZXR1cm5zCkBAIC0yNzIsNyArMjcyLDcgQEAgcHJpdmF0ZToK
ICAgICBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBtX2J1ZmZlcjsKIAogICAgIC8vIFRoZSBm
aWxlIHRvIGRlY29kZS4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9k
YXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9k
YXRhOwogCiAgICAgLy8gQW4gaW5kZXggaW50byB8bV9kYXRhfCByZXByZXNlbnRpbmcgaG93IG11
Y2ggd2UndmUgYWxyZWFkeSBkZWNvZGVkLgogICAgIHNpemVfdCBtX2RlY29kZWRPZmZzZXQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9J
bWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4IDYwMTIwMzc0
ZjljNDMxNjhhNjUyMWI2OWM1NGFmYmUyYTAwZjU1ZjcuLjRhMjEyNTVhOGMwZmI2NzhlNGFhZGQ3
NjYzZWI3ZjkxOGU3ZmU5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3Jl
Q2Fpcm8uY3BwCkBAIC0zNyw3ICszNyw5IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VCYWNraW5n
U3RvcmU6OmltYWdlKCkgY29uc3QKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBj
aGFyKj4oY29uc3RfY2FzdDx1aW50MzJfdCo+KG1fcGl4ZWxzUHRyKSksCiAgICAgICAgIENBSVJP
X0ZPUk1BVF9BUkdCMzIsIHNpemUoKS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCksIHNpemUoKS53
aWR0aCgpICogc2l6ZW9mKHVpbnQzMl90KSkpOwogICAgIHN0YXRpYyBjYWlyb191c2VyX2RhdGFf
a2V5X3Qgc19zdXJmYWNlRGF0YUtleTsKLSAgICBjYWlyb19zdXJmYWNlX3NldF91c2VyX2RhdGEo
c3VyZmFjZS5nZXQoKSwgJnNfc3VyZmFjZURhdGFLZXksIG1fcGl4ZWxzLmdldCgpLCBbXSh2b2lk
KiBkYXRhKSB7IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihkYXRhKS0+
ZGVyZWYoKTsgfSk7CisgICAgY2Fpcm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRhKHN1cmZhY2UuZ2V0
KCksICZzX3N1cmZhY2VEYXRhS2V5LCBtX3BpeGVscy5nZXQoKSwgW10odm9pZCogZGF0YSkgewor
ICAgICAgICBzdGF0aWNfY2FzdDxEYXRhU2VnbWVudCo+KGRhdGEpLT5kZXJlZigpOworICAgIH0p
OwogCiAgICAgcmV0dXJuIHN1cmZhY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCmlu
ZGV4IGU2YWJlMGQ5NTQ0YjZjMTg1YzY0NWRlY2UwOWYyM2Y5NTY2NjA3Y2IuLmI5ZWMwMWI4YWU4
ZThkMjliYzc4MjUyNmUwNzY1MjU1MWUzNTljMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIu
Y3BwCkBAIC0zOCw3ICszOCw3IEBAIEdJRkltYWdlRGVjb2Rlcjo6R0lGSW1hZ2VEZWNvZGVyKEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiAKIEdJRkltYWdl
RGVjb2Rlcjo6fkdJRkltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBHSUZJbWFnZURl
Y29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkK
K3ZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCmluZGV4IDM1ZGYzM2Y2ZGZjNDgzZmQ4NDcx
MzY2YWU1M2JiMGI5NjFjYWVkMmUuLmM3NDcxOTk5OWI5ODZjMWNlZjg0Nzg3NTlkMjM3MThjOTA0
MmQzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2dpZi9HSUZJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGlj
OgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRl
bnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiZ2lmIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRh
KFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZv
aWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkgZmluYWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbDsKICAg
ICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IGZpbmFsOwogICAgIFJlcGV0aXRpb25Db3VudCBy
ZXBldGl0aW9uQ291bnQoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKaW5kZXgg
NDIxNDZlMDMyOTMyMzY5OTc4OWViNWU0MmFmNGM3M2QzNGFiOWNjNi4uMTA4MmZkZjBkZmYyMzkx
ZTU2NTMwYTQxZjg3YmE0Mzk4MjMyNzUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKQEAgLTIz
Nyw3ICsyMzcsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRh
OyB9CisgICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50JiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9CiAgICAgLy8gRklYTUU6IGhhbHRB
dEZyYW1lIHNob3VsZCBiZSBzaXplX3QuCiAgICAgYm9vbCBkZWNvZGUoV2ViQ29yZTo6R0lGSW1h
Z2VEZWNvZGVyOjpHSUZRdWVyeSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpOwogCkBAIC0zMTYsNiAr
MzE2LDYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEdJRkZyYW1lQ29u
dGV4dD4gPiBtX2ZyYW1lczsKICAgICBzaXplX3QgbV9jdXJyZW50RGVjb2RpbmdGcmFtZTsKIAot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBt
X2RhdGE7CiAgICAgYm9vbCBtX3BhcnNlQ29tcGxldGVkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVj
b2Rlci5jcHAKaW5kZXggYzcxN2M0NWQzMDU3YzA1NTM2ZWU2MDUwZjkzOTcwNDZkMTBkZjJhNy4u
YzA3MTM0NWI4YmYzNjliODAyNzFmYmRmMGEwY2UwMTc0ZjA1MDNiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0lt
YWdlRGVjb2Rlci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgSUNPSW1hZ2VEZWNvZGVyOjpJQ09JbWFn
ZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AK
IAogSUNPSW1hZ2VEZWNvZGVyOjp+SUNPSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lk
IElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQordm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgp
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKaW5kZXggZmI3YTkwM2Iy
YTA3NTM5NDkxN2FiYmJmMTFiMWNlZDgzZmY0MzJhMC4uMTBlZTliNGQyZThjOWQ4ODdlMWQyYjhi
ZTEzOWJiNzQyNzFkNTdhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaApAQCAtNDYsNyArNDYs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmluZyBm
aWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJpY28iX3M7IH0KLSAgICB2
b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwor
ICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOwogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IGZpbmFsOwogICAgIEludFNp
emUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0IGZpbmFs
OwogICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmZDM0NWJiNzg2ZmYwOGQ5NDY1OTMwYWE0ZGY0OGRmMTdh
YmYzMDVjLi41Y2ZhYzlmMjM1N2UyZTEyYzY4NjQwMGIyNjc4OGFlN2Y4YmUxMzVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMgYm9v
bCBpc0lDQ01hcmtlcihqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyKQogCiBzdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCog
aW5mbykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgZm9yIChqcGVnX3NhdmVkX21hcmtlcl9w
dHIgbWFya2VyID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2VyLT5u
ZXh0KSB7CiAgICAgICAgIGlmICghaXNJQ0NNYXJrZXIobWFya2VyKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwpAQCAtMjM2LDEzICsyMzYsMTMgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICB1bnNpZ25lZCBtYXJrZXJTaXplID0gbWFya2Vy
LT5kYXRhX2xlbmd0aCAtIGljY0hlYWRlclNpemU7Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNp
emUpLCBtYXJrZXJTaXplKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6
ZSk7CiAgICAgfQogCi0gICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQorICAgIGlmIChidWZmZXIu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBidWZmZXI7
CisgICAgcmV0dXJuIGJ1ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CiB9CiAjZW5kaWYK
IApAQCAtMzIwLDcgKzMyMCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9ieXRlc1RvU2tpcCA9IHN0
ZDo6bWF4KG51bUJ5dGVzIC0gYnl0ZXNUb1NraXAsIHN0YXRpY19jYXN0PGxvbmc+KDApKTsKICAg
ICB9CiAKLSAgICBib29sIGRlY29kZShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBk
YXRhLCBib29sIG9ubHlTaXplKQorICAgIGJvb2wgZGVjb2RlKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIG9ubHlTaXplKQogICAgIHsKICAgICAg
ICAgbV9kZWNvZGluZ1NpemVPbmx5ID0gb25seVNpemU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNv
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAw
L0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBiZWNmNjQ1MDI3N2VlYjc0YjA5ZGU1MmVl
MTgyZmY2ZTExZWQyNzYyLi4yMDQ3M2YwZWVlYmI1NmM3MTMxNGY2NTU2YmRhMDkwMzM0OTA3NDQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
MjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCkBAIC0z
ODAsNyArMzgwLDcgQEAgdm9pZCBKUEVHMjAwMEltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25s
eVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIH0KIAogICAgIHN0cnVjdCBSZWFkZXIg
ewotICAgICAgICBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhOworICAgICAgICBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YTsKICAgICAgICAgc2l6ZV90IG9m
ZnNldDsKICAgICB9IHJlYWRlciA9IHsgKm1fZGF0YSwgMCB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURl
Y29kZXIuY3BwCmluZGV4IGMxMmM0NTlhNWEzZTViMzUxYzViY2M2MmJmMDBiOGEyODFiZDViYTMu
LjRjYmQzMjNkOWE3NTAyNmVmODY1OGYzODE2ZGQ3MzhkMzdjYThlZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJ
bWFnZURlY29kZXIuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgcHVibGljOgogICAgICAgICBtX3Jl
YWRPZmZzZXQgPSAwOwogICAgIH0KIAotICAgIGJvb2wgZGVjb2RlKGNvbnN0IFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgc2l6ZU9ubHksIHVuc2lnbmVkIGhhbHRBdEZyYW1l
KQorICAgIGJvb2wgZGVjb2RlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50JiBkYXRhLCBib29sIHNpemVPbmx5LCB1bnNpZ25lZCBoYWx0QXRGcmFtZSkKICAgICB7CiAg
ICAgICAgIG1fZGVjb2RpbmdTaXplT25seSA9IHNpemVPbmx5OwogICAgICAgICBQTkdJbWFnZURl
Y29kZXIqIGRlY29kZXIgPSBzdGF0aWNfY2FzdDxQTkdJbWFnZURlY29kZXIqPihwbmdfZ2V0X3By
b2dyZXNzaXZlX3B0cihtX3BuZykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKaW5k
ZXggMDJmMWIwOWRiYzc2NTE2MDFmOTIyZGRlMjlmODA1YTY1ODcxZTJkMi4uYjFiZWM1NWU3OGM0
MzQ4MDFjMjU0YWNlMGRmNTk5MzFhMzZiNzRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29k
ZXIuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFdFQlBJbWFnZURlY29kZXI6OldFQlBJbWFnZURlY29k
ZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlCiAKIFdFQlBJ
bWFnZURlY29kZXI6On5XRUJQSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lkIFdFQlBJ
bWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKK3ZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFdFQlBJbWFnZURlY29kZXI6
OmRlY29kZShzaXplX3QgZnJhbWVJbmRleCwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgLy8g
VGhpcyBjYW4gYmUgZXhlY3V0ZWQgYm90aCBpbiB0aGUgbWFpbiB0aHJlYWQgKHdoZW4gbm90IHVz
aW5nIGFzeW5jIGRlY29kaW5nKSBvciBpbiB0aGUgZGVjb2RpbmcgdGhyZWFkLgogICAgIC8vIFdo
ZW4gZXhlY3V0ZWQgaW4gdGhlIGRlY29kaW5nIHRocmVhZCwgYSBjYWxsIHRvIHNldERhdGEoKSBm
cm9tIHRoZSBtYWluIHRocmVhZCBtYXkgY2hhbmdlIHRoZSBkYXRhCiAgICAgLy8gdGhlIFdlYlBE
ZW11eGVyIGlzIHVzaW5nLCBsZWF2aW5nIGl0IGluIGFuIGluY29uc2lzdGVudCBzdGF0ZSwgc28g
d2UgbmVlZCB0byBwcm90ZWN0IHRoZSBkYXRhLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50PiBwcm90ZWN0ZWREYXRhKG1fZGF0YSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBwcm90ZWN0ZWREYXRhKG1fZGF0YSk7CiAgICAgV2Vi
UERhdGEgaW5wdXREYXRhID0geyBwcm90ZWN0ZWREYXRhLT5kYXRhKCksIHByb3RlY3RlZERhdGEt
PnNpemUoKSB9OwogICAgIFdlYlBEZW11eFN0YXRlIGRlbXV4ZXJTdGF0ZTsKICAgICBXZWJQRGVt
dXhlciogZGVtdXhlciA9IFdlYlBEZW11eFBhcnRpYWwoJmlucHV0RGF0YSwgJmRlbXV4ZXJTdGF0
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
ZWJwL1dFQlBJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCmluZGV4IGFmMzY1ZTljZjljN2NlOTUzOGI2
NGJhNzg5YmYwMTdkNDhmNmVkZTEuLmRkMjhiYzg4ZGY1YzBmYTNjMTU3Mzc4NjliMjYwOTczYWFh
MGQyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5XRUJQSW1hZ2VEZWNvZGVyKCk7CiAKICAgICBTdHJpbmcgZmls
ZW5hbWVFeHRlbnNpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAid2VicCJfczsgfQotICAg
IHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsKKyAgICB2b2lkIHNldERh
dGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwogICAgIFNjYWxhYmxlSW1h
Z2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIG92ZXJyaWRl
OwogICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZnJhbWVD
b3VudDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpp
bmRleCA5MDllOGU3NjhhZGI2OGJhYjI4NDQ1ZDI4MjczNjBhM2YzZmEyMmMzLi5iMjM3N2ZlMzQx
MWQyYWM0MDE1MTNiZjA5YWU4Y2NhZTc4NmJkOGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtMjM2LDE0ICsyMzYsMTQgQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIAogI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkK
ICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5
cGVGbGF0UlRGRF0pIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3Ry
YXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZUZsYXRSVEZE
LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
KGl0ZW1JbmRleCwga1VUVHlwZUZsYXRSVEZELCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkp
OwogICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAg
ICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5Owog
ICAgICAgICByZXR1cm4gYnVmZmVyICYmIHJlYWRlci5yZWFkUlRGRCgqYnVmZmVyKSA/IFJlYWRl
clJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwogICAgIH0K
IAogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VU
VHlwZVJURl0pIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRl
Z3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVJURiwgbV9wYXN0
ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5k
ZXgsIGtVVFR5cGVSVEYsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlm
IChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVh
ZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVy
biBidWZmZXIgJiYgcmVhZGVyLnJlYWRSVEYoKmJ1ZmZlcikgPyBSZWFkZXJSZXN1bHQ6OlJlYWRU
eXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKQEAgLTI1MSw3ICsyNTEsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogI2VuZGlmIC8vICFQTEFURk9STShN
QUNDQVRBTFlTVCkKIAogICAgIGlmIChbc3VwcG9ydGVkSW1hZ2VUeXBlcygpIGNvbnRhaW5zT2Jq
ZWN0OnR5cGVdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0
ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2Fy
ZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCB0
eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgICAgICBpZiAobV9jaGFuZ2VD
b3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6
UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAgICByZXR1cm4gYnVmZmVyICYm
IHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIHR5cGUsIGl0ZW1JbmZv
LnByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJl
YWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCAxNjdjZWYwMmQ3OGQ3OTRk
ZWFhOGU1ZGRhZjRkZDY2YzNkMmNjYTQ1Li4xNmIzZDVkNDQxNWQyNTg1MTVmNjYwYTg2YWM2Y2Vm
YmRjZGI2NGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0
Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTMzOCw3ICszMzgsNyBAQCBpbnQ2NF90IFBsYXRmb3Jt
UGFzdGVib2FyZDo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKQogICAgIHJldHVybiAw
OwogfQogCi1pbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFy
ZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNl
dEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYpCiB7
CiAgICAgcmV0dXJuIDA7CiB9CkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQogCiAgICAg
QVNTRVJUKGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQuY2xpZW50RGF0YS5z
aXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gY29udGVudC5jbGllbnRUeXBl
cy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lz
dGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBm
b3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25z
VG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsK
IAogICAgIGlmIChjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsKICAgICAgICAgYXV0
byB3ZWJBcmNoaXZlRGF0YSA9IGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+Y3JlYXRl
TlNEYXRhKCk7CkBAIC00NzksNyArNDc5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiAgICAgfQogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zv
cm1hdCkgewotICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5n
ID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNl
dFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50LmRh
dGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51
bGxwdHJdKQorICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5n
ID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNl
dFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9tRGF0YTpjb250ZW50LmRh
dGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGVycm9yOm51bGxwdHJdKQogICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1Rv
UmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddOwogICAgIH0K
IApAQCAtNTAxLDcgKzUwMSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
CiAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICBjdXN0b21EYXRhLnNl
dE9yaWdpbihjb250ZW50LmNvbnRlbnRPcmlnaW4pOwotICAgIFtyZXByZXNlbnRhdGlvbnNUb1Jl
Z2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSld
OworICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVh
dGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
Zm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogCiAgICAgcmVn
aXN0ZXJJdGVtVG9QYXN0ZWJvYXJkKHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIuZ2V0KCksIG1f
cGFzdGVib2FyZC5nZXQoKSk7CiB9CkBAIC01MTQsMTQgKzUxNCwxNCBAQCB2b2lkIFBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2Up
CiAgICAgYXV0byYgZGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5jbGllbnREYXRhOwogICAgIEFTU0VS
VCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBz
aXplID0gdHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciBhZGREYXRhOmRhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5
cGU6dHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRh
OmRhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
dHlwZXNbaV1dOwogCiAgICAgaWYgKHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEgJiYgIXBh
c3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRv
IHV0aU9yTUlNRVR5cGUgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZTsKICAgICAg
ICAgaWYgKCFpc0RlY2xhcmVkVVRJKHV0aU9yTUlNRVR5cGUpKQogICAgICAgICAgICAgdXRpT3JN
SU1FVHlwZSA9IFVUSUZyb21NSU1FVHlwZSh1dGlPck1JTUVUeXBlKTsKIAotICAgICAgICBhdXRv
IGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgp
OworICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBbcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciBhZGREYXRhOmltYWdlRGF0YS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAq
KXV0aU9yTUlNRVR5cGVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQ
cmVmZXJyZWRQcmVzZW50YXRpb25TaXplOnBhc3RlYm9hcmRJbWFnZS5pbWFnZVNpemVdOwogICAg
ICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRTdWdnZXN0ZWROYW1lOnBhc3RlYm9h
cmRJbWFnZS5zdWdnZXN0ZWROYW1lXTsKQEAgLTYzNSw3ICs2MzUsNyBAQCBzdGF0aWMgUmV0YWlu
UHRyPFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0PiBjcmVhdGVJdGVtUHJvdmlk
ZXJSZWdpc3RyYQogICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFBy
ZXNlbnRhdGlvblN0eWxlOldlYlByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5lXTsKIAog
ICAgIGlmIChkYXRhLmhhc1NhbWVPcmlnaW5DdXN0b21EYXRhKCkgfHwgIWRhdGEub3JpZ2luKCku
aXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBk
YXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkgeworICAgICAgICBpZiAo
YXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKICAgICAgICAgICAgIC8vIFdlIHN0
YXNoIHRoZSBsaXN0IG9mIHN1cHBsaWVkIHBhc3RlYm9hcmQgdHlwZXMgaW4gdGVhbURhdGEgaGVy
ZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGRyYWcgYW5kIGRyb3AuCiAgICAgICAgICAgICAvLyBT
aW5jZSB0aGUgY29udGVudHMgb2YgaXRlbSBwcm92aWRlcnMgY2Fubm90IGJlIGxvYWRlZCBwcmlv
ciB0byBkcm9wLCBidXQgdGhlIHBhc3RlYm9hcmQgdHlwZXMgYXJlCiAgICAgICAgICAgICAvLyBj
b250YWluZWQgd2l0aGluIHRoZSBjdXN0b20gZGF0YSBibG9iIGFuZCB3ZSBuZWVkIHRvIHZlbmQg
dGhlbSB0byB0aGUgcGFnZSB3aGVuIGZpcmluZyBgZHJhZ292ZXJgCkBAIC02NzIsOCArNjcyLDgg
QEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRC
dWZmZXI+Pih2YWx1ZSk7Ci0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERh
dGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29h
VHlwZV07CisgICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+Pih2YWx1ZSk7CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFk
ZERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JU
eXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CiAgICAgfSk7CiAKICAgICByZXR1cm4gcmVwcmVz
ZW50YXRpb25zVG9SZWdpc3RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KaW5kZXggNTQ0NjUzYzQ0MDNkMjYwNDBhNTVkMjNlOTM2
OTFiZmVkY2M5MmI0Mi4uN2E0YTJiMTY1YjJmYTdkMjBkNWI2ZTRjMmQ2NWZlNjNlZjBiMDI2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJ
T1MubW0KQEAgLTgyLDcgKzgyLDcgQEAgQGVuZAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQcmV2
aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVydGVyKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXImIHByb3ZpZGVyKQotICAgIDogbV9wcmV2
aWV3RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgIDogbV9wcmV2aWV3RGF0YSB7
IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX29yaWdpbmFs
UmVzcG9uc2UgeyByZXNwb25zZSB9CiAgICAgLCBtX3Byb3ZpZGVyIHsgcHJvdmlkZXIgfQogICAg
ICwgbV9wbGF0Zm9ybURlbGVnYXRlIHsgYWRvcHROUyhbW1dlYlByZXZpZXdDb252ZXJ0ZXJEZWxl
Z2F0ZSBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZToqdGhpc10pIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNjc3ZjhjYWRhYjU5MTIzZTFiNjJk
MWJhYzJkMTkwOGJmNjc2YTJmOS4uMGQyNTQ5OGI4NmJlZjE4NWQzNzY5ZDVhNWJjMGJjMmY3MzFj
NzBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0K
QEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IENvbG9yJiBj
b2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVyKGNvbnN0IFBhc3RlYm9h
cmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMo
W1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVi
b2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRv
IHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxl
V2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgW3dyYXBwZXIgc2V0UHJlZmVycmVkRmls
ZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocGFzdGVib2FyZEltYWdlLnVybC51
cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKV07CiAgICAgcmV0dXJuIHdyYXBw
ZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGlj
eSBhbGxvdwogICAgIAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBh
c3RlYm9hcmRUeXBlKCkpKSkgewogICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0
UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgs
IHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpKSB7Ci0gICAgICAgICAgICBp
ZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBh
bGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0
cmlidXRlczpuaWxdKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9
IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6
bmlsXSkpIHsKICAgICAgICAgICAgICAgICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBz
dHJpbmddOwogICAgICAgICAgICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZFdyaXRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJk
V3JpdGVyLm1tCmluZGV4IDM1M2QwMDZiOTBjYmNlNjA5ZTZkZmQzN2MyODA4MTMxZjIxNGI4ZGEu
Ljg4ZDA0MDI1ODQzNzAyZTRhYTRmNWE5YTU1NmI4ODFjNmU0MGMyZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMjgsMTEgKzEy
OCwxMSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIFtw
YXN0ZWJvYXJkSXRlbSBzZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0IGZv
clR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ107CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzLnNpemUoKTsgKytpKQotICAgICAgICAg
ICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVu
dC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBz
ZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQt
PmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CiAKICAgICAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEg
Y3VzdG9tRGF0YTsKICAgICAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4od2ViQ29udGVudC0+Y29u
dGVudE9yaWdpbik7Ci0gICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEu
Y3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElV
bmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkp
KS5nZXQoKV07CisgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3Jl
YXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CiAgICAgfQogCiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJ
dGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFz
dGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRNYWMubW0KaW5kZXggZDliN2QyNDgwMzhjMmRiOGFhYjA5MmNiOTFmZmE1NmYyY2I0Y2U3
My4uYzNiNGQyZDk2MjE3NDcxYzczNWUyNGZlN2E1ZjlkOTIzN2RmNDcwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBA
IC0yNjMsOCArMjYzLDggQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0
IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgICAgICBpZiAocGxhdGZvcm1UeXBlLmlz
RW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAg
ICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4o
c3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikp
IHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6cGxh
dGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlm
IChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAg
ICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpA
QCAtMjc0LDcgKzI3NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25z
dCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICB9KTsKIAogICAgIGlmIChzaG91bGRX
cml0ZUN1c3RvbURhdGEpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEg
PSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYg
KGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFttX3Bhc3RlYm9h
cmQgc2V0RGF0YTpzZXJpYWxpemVkQ3VzdG9tRGF0YS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAgICAgfQogCkBAIC0zNDEsMTIgKzM0MSwxMiBA
QCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcykKICAgICByZXR1cm4gW21fcGFzdGVib2FyZCBkZWNsYXJlVHlw
ZXM6Y3JlYXRlTlNBcnJheShwYXN0ZWJvYXJkVHlwZXMpLmdldCgpIG93bmVyOm5pbF07CiB9CiAK
LWludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZl
ciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQoraW50NjRfdCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIGlmICghY2FuV3JpdGVQ
YXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
Qk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVy
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKKyAg
ICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6
cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGlkV3JpdGVEYXRhKQogICAgICAgICByZXR1cm4g
MDsKICAgICByZXR1cm4gY2hhbmdlQ291bnQoKTsKQEAgLTUwNCw4ICs1MDQsOCBAQCBzdGF0aWMg
UmV0YWluUHRyPE5TUGFzdGVib2FyZEl0ZW0+IGNyZWF0ZVBhc3RlYm9hcmRJdGVtKGNvbnN0IFBh
c3RlYm9hcmRDdXN0b21EYQogICAgICAgICBpZiAoIXBsYXRmb3JtVHlwZSkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVk
QnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9y
bURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVh
dGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKKyAgICAgICAgICAgIGlmIChh
dXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4o
c3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAg
ICAgICAgICAgICBbaXRlbSBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRm
b3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJp
bmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6Omdl
dDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaAppbmRleCA2
ODEzZDVkYTdkY2IwZmMyNTlmMWJkMWVkMGE1NGMxYTFhOWZkOWNmLi43OTY1NTRmNGM5NzY0NTE0
MDFlMWExMjM3NDY4NzA0MGIyNGIxY2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCkBAIC00
Myw3ICs0Myw3IEBAIGNsYXNzIE1lZGlhU2FtcGxlOwogY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRl
OwogY2xhc3MgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU7CiBjbGFzcyBQbGF0Zm9ybUF1ZGlvRGF0
YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IHN0cnVjdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnM7CiAKQEAgLTU5LDcgKzU5LDcgQEAg
cHVibGljOgogICAgIH07CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEF1ZGlvVmlkZW9TZWxl
Y3RlZFRyYWNrcyBzZWxlY3RUcmFja3MoTWVkaWFTdHJlYW1Qcml2YXRlJik7CiAKLSAgICB1c2lu
ZyBGZXRjaERhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT47CisgICAgdXNpbmcg
RmV0Y2hEYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPjsKICAg
ICB2aXJ0dWFsIHZvaWQgZmV0Y2hEYXRhKEZldGNoRGF0YUNhbGxiYWNrJiYpID0gMDsKICAgICB2
aXJ0dWFsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGVNb2NrLmNwcAppbmRleCBjMjVkZjkxNTc0YTY1YmM0MWJkYjcwNjc4ZGM0
NzcyNDgzNmRkMTQ1Li40OThkNGVlMTM0MGM0Yjk0MDAxYjYwYzM0NDc5YjdmNzJkNWM4ZTZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXJQcml2YXRlTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpnZW5lcmF0ZU1vY2tDb3VudGVyU3RyaW5nKCkK
IAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6OmZldGNoRGF0YShGZXRjaERhdGFDYWxs
YmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIHsK
ICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYnVmZmVyTG9jayB9OwogICAgICAgICBWZWN0b3I8
dWludDhfdD4gdmFsdWUgeyBtX2J1ZmZlci5jaGFyYWN0ZXJzOCgpLCBtX2J1ZmZlci5sZW5ndGgo
KSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EuaAppbmRleCAyMTFmNzVlZTczYWY2OTE5ZTdmNGM5OTU4ZTBjZDM0ODI1MzJkMDlmLi45YzJj
Nzk3YjgxOTUxMmQ4ZmQ1NzkwMTVkYzNiNmU0MDVlM2JjNjBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtNzAsNyArNzAsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihNZWRpYVNhbXBsZSYp
OwogICAgIHZvaWQgYXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZvcm1BdWRpb0Rh
dGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgY29uc3QgV1RGOjpNZWRpYVRpbWUm
LCBzaXplX3QpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZygpOwotICAgIHZvaWQgZmV0Y2hEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4m
Jik7CisgICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4mJik7CiAKICAgICB2b2lkIHBhdXNlKCk7
CiAgICAgdm9pZCByZXN1bWUoKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBmaW5pc2hlZEZsdXNoaW5nU2FtcGxlcygpOwogICAgIHZvaWQgY29tcGxldGVGZXRjaERh
dGEoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOworICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogCiAgICAgYm9vbCBtX2hhc0F1ZGlv
IHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmlkZW8geyBmYWxzZSB9OwpAQCAtMTE3LDggKzEx
Nyw4IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOwog
CiAgICAgTG9jayBtX2RhdGFMb2NrOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBX
VEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOwotICAgIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4gbV9mZXRjaERhdGFDb21wbGV0aW9u
SGFuZGxlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9M
T0NLKG1fZGF0YUxvY2spOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRs
ZXI7CiAKICAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9hdWRpb0Zvcm1h
dERlc2NyaXB0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I+IG1fYXVkaW9Db21wcmVzc29yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IDhjMWY3YzBlNTMxM2I2Yjg1NmNkM2Nk
ZjVlODM4NGYzNmI3YjUzZjUuLjg0ODQxMDBlYWM1ZTExNWU5YjBjZjAxMjBiYWJmNzhmYjFhMTI3
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EubW0KQEAgLTEzNywxMCArMTM3LDggQEAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpCiAgICAgICAgIG1fd3JpdGVyLmNsZWFyKCk7
CiAgICAgfQogCi0gICAgLy8gQXQgdGhpcyBwb2ludGVyLCB3ZSBzaG91bGQgbm8gbG9uZ2VyIGJl
IHdyaXRpbmcgYW55IGRhdGEsIHNvIGl0IHNob3VsZCBiZSBzYWZlIHRvIGNsb3NlIGFuZCBudWxs
aWZ5IG1fZGF0YSB3aXRob3V0IGxvY2tpbmcuCiAgICAgaWYgKG1fd3JpdGVyRGVsZWdhdGUpCiAg
ICAgICAgIFttX3dyaXRlckRlbGVnYXRlIGNsb3NlXTsKLSAgICBtX2RhdGEgPSBudWxscHRyOwog
CiAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRhQ29t
cGxldGlvbkhhbmRsZXIpKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyLCAwKTsK
QEAgLTQ5NSw3ICs0OTMsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdG9w
UmVjb3JkaW5nKCkKICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KTsKIApAQCAtNTM3LDE4ICs1MzUsMTMgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6Y29tcGxldGVGZXRjaERhdGEoKQogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6
YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGlmICghbV9kYXRhKSB7Ci0gICAgICAgIG1f
ZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fZGF0YS5hcHBl
bmQoZGF0YSwgc2l6ZSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjp0YWtlRGF0YSgpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkKIHsKICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGF1dG8gZGF0YSA9IFdURk1vdmUobV9kYXRhKTsKLSAg
ICByZXR1cm4gZGF0YTsKKyAgICByZXR1cm4gbV9kYXRhLnRha2UoKTsKIH0KIAogdm9pZCBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCmluZGV4IGE5YjI5ZDU5ZTlhYTNiNDY1NTQx
NWJkOGJlZjA5ODRjNTQ0YjczZjAuLmNkZWU2MDM1MjNjZDY2OTQ1ZjQyOGY2OTQ3ODk2MGY2ZmQ3
NGM3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVS
TERlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxE
ZWNvZGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBuYW1lc3Bh
Y2UgRGF0YVVSTERlY29kZXIgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggZmFmZGZlODdjODM3ZTYxNTdkMmYxM2U5YTdjYTAw
OTY5ZDUwYjFjNy4uNGJlYmNiNTA5OGQxNWMyOTY2ZWQ4YzdlZTEzNmFlM2EyYWU0YTIwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApA
QCAtODQsNyArODQsNyBAQCBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xh
c3MgU3luY2hyb25vdXNMb2FkZXJNZXNzYWdlUXVldWU7CiBjbGFzcyBUaW1lcjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcAppbmRleCA2ZTY1YmI4OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUyZTczNjZmLi5i
YThmZDRmZjRmMWU0MWM5YWQ0ZmE3NGE0MmJlNGUyYmQxMWFhODQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNw
cApAQCAtMzYsOSArMzYsOSBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6UmVzb3VyY2VIYW5kbGVD
bGllbnQoKSA9IGRlZmF1bHQ7CiAKIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5k
bGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJl
Y2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6
OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlk
UmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29k
ZWREYXRhTGVuZ3RoKTsKKyAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlQ2xpZW50LmgKaW5kZXggYjYzMzdkNTZjZThjZDliZWZmOWRmYmUxMTM2NjJiYzc3
NTZiNjUzNy4uYzRmMDU0ODVmMjg3MGIxMTZkYTdjNzYwZDNjMGZjZTk2ZWMyYjRhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJl
c291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IAogZW51bSBDYWNoZVN0b3JhZ2VQb2xpY3kgewogICAgIFN0b3JhZ2VBbGxvd2VkLApAQCAtNjYs
NyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNl
SGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcg
bG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50
IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgeyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYm
LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgCiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IFJlc291cmNlRXJyb3ImKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQppbmRleCAx
ZmYwNjUyMTZmYTY4MDg4MTkzNzE0YmNmMmJjZGFmNjk2ZjAyNDA2Li4wMDhlMjI2ZmY5MTkwMDRi
NDUxNDhhMjQ3MjYxMTYxNTA5ODk2Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1t
CkBAIC00MSw4ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CiAgICAgRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUGxhdGZvcm1NZWRp
YVJlc291cmNlJiByZXNvdXJjZSkKLSAgICAgICAgOiBidWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSkKLSAgICAgICAgLCBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQorICAgICAgICA6IG9y
aWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCiAgICAgICAgICwgcmVzb3VyY2UoJnJlc291cmNlKSB7
IH0KIAogICAgIHN0cnVjdCBUYXNrRGF0YSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUYXNrRGF0
YT4gewpAQCAtNTUsOSArNTQsOSBAQCBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0
YSB7CiAgICAgICAgIHNpemVfdCBuZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4IHsgMCB9OwogICAg
ICAgICBlbnVtIGNsYXNzIFJlc3BvbnNlU3RhdGUgOiB1aW50OF90IHsgTm90U3ludGhlc2l6ZWRZ
ZXQsIFdhaXRpbmdGb3JTZXNzaW9uLCBTZXNzaW9uQ2FsbGVkQ29tcGxldGlvbkhhbmRsZXIgfSBy
ZXNwb25zZVN0YXRlIHsgUmVzcG9uc2VTdGF0ZTo6Tm90U3ludGhlc2l6ZWRZZXQgfTsKICAgICB9
OwotICAgIAorCiAgICAgSGFzaE1hcDxSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFU
YXNrPiwgc3RkOjp1bmlxdWVfcHRyPFRhc2tEYXRhPj4gdGFza0RhdGE7Ci0gICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIFJl
c291cmNlUmVzcG9uc2Ugb3JpZ2luYWxSZXNwb25zZTsKICAgICBlbnVtIGNsYXNzIFN1Y2Nlc3Nm
dWxseUZpbmlzaGVkTG9hZGluZyA6IGJvb2wgeyBObywgWWVzIH0gc3VjY2Vzc2Z1bGx5RmluaXNo
ZWRMb2FkaW5nIHsgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpObyB9OwogICAgIFJlZlB0
cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IHJlc291cmNlOwpAQCAtMTA2LDIyICsxMDUsMjIgQEAg
dm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpyZW1vdmVUYXNrKFdlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFzayAqdGFzaykKIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3Bv
bnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRh
c2sgKnRhc2ssIGNvbnN0IFBhcnNlZFJlcXVlc3RSYW5nZSYgcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBleHBlY3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IERhdGEmIGRhdGEpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyOwot
ICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFdl
IG91Z2h0IHRvIGJlIGFibGUgdG8ganVzdCBtYWtlIGEgcmFuZ2Ugd2l0aCBhICogYWZ0ZXIgdGhl
IC8gYnV0IEFWRm91bmRhdGlvbiBkb2Vzbid0IGFjY2VwdCBzdWNoIHJhbmdlcy4KICAgICAvLyBJ
bnN0ZWFkLCB3ZSBqdXN0IHdhaXQgdW50aWwgdGhlIGxvYWQgaGFzIGNvbXBsZXRlZCwgYXQgd2hp
Y2ggdGltZSB3ZSB3aWxsIGtub3cgdGhlIGNvbnRlbnQgbGVuZ3RoIGZyb20gdGhlIGJ1ZmZlciBs
ZW5ndGguCiAgICAgaWYgKCFleHBlY3RlZENvbnRlbnRMZW5ndGgpCiAgICAgICAgIHJldHVybjsK
IAorICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGRhdGEuYnVmZmVyLnNpemUoKTsKICAgICBpZiAoYnVm
ZmVyU2l6ZSA8IHJhbmdlLmJlZ2luKQogICAgICAgICByZXR1cm47Ci0gICAgCisKKyAgICBhdXRv
IGJ1ZmZlciA9IGRhdGEuYnVmZmVyLmdldCgpOwogICAgIGF1dG8qIHRhc2tEYXRhID0gZGF0YS50
YXNrRGF0YS5nZXQodGFzayk7CiAgICAgaWYgKCF0YXNrRGF0YSkKICAgICAgICAgcmV0dXJuOwot
ICAgIAotICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayks
IGJ1ZmZlciwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdl
YWtQdHIgeyAqdGhpcyB9XSB7CisKKyAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0g
cmV0YWluUHRyKHRhc2spLCBidWZmZXIsIGJ1ZmZlclNpemUsIHRhc2tEYXRhID0gV2Vha1B0ciB7
ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewogICAgICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoW3Rhc2sgc3RhdGVdICE9IE5TVVJM
U2Vzc2lvblRhc2tTdGF0ZVJ1bm5pbmcpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzAsNyAr
MTI5LDcgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJ
ZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1UKICAgICAgICAgYXV0byYgcmFuZ2UgPSB0
YXNrRGF0YS0+cmFuZ2U7CiAgICAgICAgIGF1dG8mIGJ5dGVJbmRleCA9IHRhc2tEYXRhLT5uZXh0
Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4OwogICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAg
ICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXItPnNpemUoKSkKKyAgICAgICAgICAgIGlmIChieXRl
SW5kZXggPj0gYnVmZmVyU2l6ZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGF1dG8gYnVmZmVyVmlldyA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoYnl0ZUluZGV4KTsKICAgICAg
ICAgICAgIGlmICghYnVmZmVyVmlldy5zaXplKCkgfHwgYnl0ZUluZGV4ID4gcmFuZ2UuZW5kKQpA
QCAtMTc1LDcgKzE3NCw3IEBAIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBSYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShjb25zCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoZGF0YS5zdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRp
bmcgPT0gRGF0YTo6U3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpZZXMpCi0gICAgICAgIHJl
dHVybiBkYXRhLmJ1ZmZlci0+c2l6ZSgpOworICAgICAgICByZXR1cm4gZGF0YS5idWZmZXIuc2l6
ZSgpOwogCiAgICAgLy8gRklYTUU6IFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBlY3RlZENvbnRl
bnRMZW5ndGgoKSBzaG91bGQgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbnN0ZWFkIG9m
IHVzIGRvaW5nIHRoaXMgY2hlY2sgaGVyZS4KICAgICBhdXRvIGV4cGVjdGVkQ29udGVudExlbmd0
aCA9IGRhdGEub3JpZ2luYWxSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKQEAgLTI0
NCw3ICsyNDMsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpIGZpbmFsCisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBmaW5hbAog
ICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKCFtX2dl
bmVyYXRvcikKQEAgLTI1Miw3ICsyNTEsNyBAQCBwcml2YXRlOgogICAgICAgICBhdXRvKiBkYXRh
ID0gbV9nZW5lcmF0b3ItPm1fbWFwLmdldChtX3VybFN0cmluZyk7CiAgICAgICAgIGlmICghZGF0
YSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGF0YS0+YnVmZmVyLT5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS0+YnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZl
cikpOwogICAgICAgICBtX2dlbmVyYXRvci0+Z2l2ZVJlc3BvbnNlVG9UYXNrc1dpdGhGaW5pc2hl
ZFJhbmdlcygqZGF0YSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCmluZGV4IDQwNDg4
NWFlNjM3NmZjZTY4MDQwZDJhMDVjMDBiZWM0N2ZlMTZhYTguLmNlNGMyNTQ1Y2RlMGYyZjQ2YWMz
MzhmOTZjNDkwODhlYjQ1ZDA5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCkBAIC01MCw3ICs1
MCw3IEBAIGNsYXNzIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogY2xhc3MgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNr
Q2xpZW50OwogZW51bSBjbGFzcyBTaG91bGRDb250aW51ZVBvbGljeUNoZWNrIDogYm9vbDsKQEAg
LTE1OCw3ICsxNTgsNyBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNl
c3Npb24gOiBOU09iamVjdCB7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNlbnRCeXRlczoodW5zaWduZWQgbG9uZyBs
b25nKWJ5dGVzU2VudCB0b3RhbEJ5dGVzVG9CZVNlbnQ6KHVuc2lnbmVkIGxvbmcgbG9uZyl0b3Rh
bEJ5dGVzVG9CZVNlbnQ7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVzcG9uc2U6KGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlIGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKWNv
bXBsZXRpb25IYW5kbGVyOwogLSAoQk9PTClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZTsKLS0gKHZvaWQpcmVzb3VyY2U6KG51
bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRE
YXRhOihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKWRhdGE7CistICh2b2lkKXJlc291cmNl
OihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2Vp
dmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpZGF0YTsKIC0g
KHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSop
cmVzb3VyY2UgcmVjZWl2ZWRSZWRpcmVjdDooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpcmVzcG9uc2UgcmVxdWVzdDooV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpcmVxdWVzdCBj
b21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJik+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKXJlc291cmNlOihudWxs
YWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGFjY2Vzc0NvbnRy
b2xDaGVja0ZhaWxlZFdpdGhFcnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJy
b3I7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UqKXJlc291cmNlIGxvYWRGYWlsZWRXaXRoRXJyb3I6KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKWVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGUwNDAxMGE5ODEx
YjRjOWFlMTQ5NDk5ODcwMWNhMTU0ODlmNTcxNmMuLjhjODlkOTM4NjU3OTMzYTFkYTI5MDMxOTkx
NTg0YzRkYjJmYWE5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTYwOCw3ICs2MDgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIGJv
b2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAg
IHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtNjUyLDcgKzY1Miw3IEBAIGJvb2wgV2ViQ29yZU5T
VVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVk
aWFSZXNvdXJjCiAgICAgcmV0dXJuIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHNob3VsZENh
Y2hlUmVzcG9uc2U6cmVzcG9uc2VdOwogfQogCi12b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRh
VGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2Us
IFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0
YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fdGFza0xvY2sgfTsKICAgICBpZiAoIW1fdGFzaykKQEAgLTkxNSwxMSArOTE1LDEx
IEBAIC0gKEJPT0wpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hv
dWxkQ2FjaGVSZXNwb25zZTooY29uc3QgUmVzCiAgICAgcmV0dXJuIHJlc3BvbnNlLmh0dHBIZWFk
ZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFJhbmdlKS5pc0VtcHR5KCk7CiB9CiAKLS0g
KHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRE
YXRhOihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKWRhdGEKKy0gKHZvaWQpcmVzb3VyY2U6
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJilkYXRhCiB7CiAgICAgQVNTRVJUX1VOVVNFRChy
ZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7CiAgICAgW3NlbGYu
c2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNl
bGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRh
LT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgc3Ryb25nU2VsZi5nZXQoKS5jb3VudE9m
Qnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRh
dGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4p
c3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlk
UmVjZWl2ZURhdGE6KV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGMzNmUxZjg4NzY0MzA0NjBjZTc1MGEzYjhj
NjU4YzczNGVjYjE1MDguLjM0OTQ0NTkyNTRhYzkzZmMxOWNiMTIxNTBhNjFiYzJiY2VkMDJkNmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93
bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
RG93bmxvYWQuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxE
aWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXNwb25zZSYmIHIK
IH0KIAogCi12b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVl
c3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybERvd25sb2FkOjpjdXJs
RGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKaW5kZXgg
YTNhYTBjZjVmY2QyOTU1YmI3YjE2YjExYTFhODFjYTc0YWU2MWM4ZC4uY2RlNDQ0NTc3NWY3NDQy
MzMwNTMwYjY1YjEzNTdiYTZiZmQ5YmI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2
YXRlOgogICAgIFJlZjxDdXJsUmVxdWVzdD4gY3JlYXRlQ3VybFJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0Jik7CiAgICAgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBs
b25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBjdXJs
RGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVk
QnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxS
ZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgY3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3QmLCBSZXNv
dXJjZUVycm9yJiYsIENlcnRpZmljYXRlSW5mbyYmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRI
YW5kbGUuY3BwCmluZGV4IGJiZGEzZmJkYTc1ODNkOTkxOTMxZGZlMTY5ZjdiM2E5MTMzZTZkYTIu
LjA5MGQwMzliYTQ1ZGUxMDI4ZWRmNzY4NGM2ZDdkMmYyOTZlM2EzNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFy
dEhhbmRsZS5jcHAKQEAgLTExOSwxMiArMTE5LDEyIEBAIEN1cmxNdWx0aXBhcnRIYW5kbGU6OkN1
cmxNdWx0aXBhcnRIYW5kbGUoQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudCYgY2xpZW50LCBjb25z
CiAKIH0KIAotdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICht
X3N0YXRlID09IFN0YXRlOjpFbmQpCiAgICAgICAgIHJldHVybjsgLy8gVGhlIGhhbmRsZXIgaXMg
Y2xvc2VkIGRvd24gc28gaWdub3JlIGV2ZXJ5dGhpbmcuCiAKLSAgICBtX2J1ZmZlci5hcHBlbmQo
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZl
ci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogCiAgICAgd2hpbGUg
KHByb2Nlc3NDb250ZW50KCkpIHsgfQogfQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3VybE11
bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUoKQogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpF
bmQpIHsKICAgICAgICAgLy8gSXQgc2VlbXMgd2UgYXJlIHN0aWxsIG5vdCBhdCB0aGUgZW5kIG9m
IHRoZSBwcm9jZXNzaW5nLgogICAgICAgICAvLyBQdXNoIG91dCB0aGUgcmVtYWluaW5nIGRhdGEu
Ci0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSkpOworICAgICAgICBt
X2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShtX2J1ZmZlcikpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmQ7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxNdWx0aXBhcnRIYW5kbGUuaAppbmRleCA1YzA4YmNjNWViM2U0YmJjYzAyOWI0NzY3ODY4
ZjQzZTJmOTVjMzQxLi45YTFhMWJiZDE5MzhhMTRmNjlmY2NlZTNmMGY4OWI5N2E0YTIxODc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRp
cGFydEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsTXVsdGlwYXJ0SGFuZGxlLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50OwogY2xhc3MgQ3VybFJlc3BvbnNl
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBDdXJsTXVsdGlwYXJ0SGFuZGxlKEN1cmxN
dWx0aXBhcnRIYW5kbGVDbGllbnQmLCBjb25zdCBTdHJpbmcmKTsKICAgICB+Q3VybE11bHRpcGFy
dEhhbmRsZSgpIHsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKICAgICB2b2lkIGRpZENvbXBsZXRlKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBh
cnRIYW5kbGVDbGllbnQuaAppbmRleCBmZDEzZmQzODEzMTQzY2IyNjU5YjhmZDFkYjI0NDQ3NjVl
OThhNTgwLi5jODEzODg2YThkNWM1ZmE2YzEyZDE0MTMzMTkxMDFhZjI1MDJhMmFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhh
bmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKQEAgLTI4LDEyICsyOCwxMiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDdXJsUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxl
Q2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUhlYWRlckZyb21N
dWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgfkN1cmxNdWx0aXBhcnRIYW5k
bGVDbGllbnQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IGQzNWIwZTgzOTE5NTFkMzg2MzRlOTkwOTNiNjg2
NTYyNGQ5OTc5NTEuLmQ4MmRkM2MxMGFjNjQ3MTM1OTkxZmQ3YWU2Njk3ZTlkOGUzMTNlODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcApAQCAtMzk2LDcgKzM5Niw3IEBAIHNpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2
ZUhlYWRlcihTdHJpbmcmJiBoZWFkZXIpCiAKIC8vIGNhbGxlZCB3aXRoIGRhdGEgYWZ0ZXIgYWxs
IGhlYWRlcnMgaGF2ZSBiZWVuIHByb2Nlc3NlZCB2aWEgaGVhZGVyQ2FsbGJhY2sKIAotc2l6ZV90
IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
K3NpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChpc0NvbXBsZXRlZE9yQ2FuY2VsbGVkKCkpCiAg
ICAgICAgIHJldHVybiAwOwpAQCAtNDQ0LDcgKzQ0NCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OmRp
ZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBoZWFkZXJz
KQogICAgIGludm9rZURpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgQWN0aW9uOjpOb25lKTsK
IH0KIAotdm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGFG
cm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAg
ICBpZiAoaXNDb21wbGV0ZWRPckNhbmNlbGxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC03Nzcs
NyArNzc3LDcgQEAgY29uc3QgU3RyaW5nJiBDdXJsUmVxdWVzdDo6Z2V0RG93bmxvYWRlZEZpbGVQ
YXRoKCkKICAgICByZXR1cm4gbV9kb3dubG9hZEZpbGVQYXRoOwogfQogCi12b2lkIEN1cmxSZXF1
ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK3ZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFi
bGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICB7CiAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX2Rvd25sb2FkTXV0ZXggfTsKQEAgLTc5MCw3ICs3OTAsNyBA
QCB2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICB9CiAKICAgICBpZiAobV9kb3dubG9hZEZpbGVI
YW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAg
RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRh
KCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rv
d25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVy
LnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgK
aW5kZXggNmJkOGE2YmZiYTM3NTJjZWRkZGJjNTAwOWVhZTgzYzRmMGVlZDY0MS4uM2M3Y2RkODgz
ZWI2MmJmZTkyY2YwNDQ1ZWQyOWJkMjZlY2UzZTkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKQEAgLTQyLDcgKzQyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3VybFJlcXVlc3RDbGllbnQ7CiBjbGFzcyBOZXR3
b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN5bmNocm9ub3VzTG9hZGVy
TWVzc2FnZVF1ZXVlOwogCiBjbGFzcyBDdXJsUmVxdWVzdCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxDdXJsUmVxdWVzdD4sIHB1YmxpYyBDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCwg
cHVibGljIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQgewpAQCAtMTIyLDkgKzEyMiw5IEBAIHBy
aXZhdGU6CiAgICAgQ1VSTCogc2V0dXBUcmFuc2ZlcigpIG92ZXJyaWRlOwogICAgIHNpemVfdCB3
aWxsU2VuZERhdGEoY2hhciosIHNpemVfdCwgc2l6ZV90KTsKICAgICBzaXplX3QgZGlkUmVjZWl2
ZUhlYWRlcihTdHJpbmcmJik7Ci0gICAgc2l6ZV90IGRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRC
dWZmZXI+JiYpOworICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25z
dCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9t
TXVsdGlwYXJ0KFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZENvbXBsZXRlVHJhbnNmZXIoQ1VSTGNvZGUpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkQ2FuY2VsVHJhbnNmZXIoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmFsaXpl
VHJhbnNmZXIoKTsKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIE5ldHdvcmtMb2Fk
TWV0cmljcyBuZXR3b3JrTG9hZE1ldHJpY3MoKTsKIAogICAgIC8vIERvd25sb2FkCi0gICAgdm9p
ZCB3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImKTsK
KyAgICB2b2lkIHdyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGNsb3NlRG93bmxvYWRGaWxlKCk7CiAgICAgdm9p
ZCBjbGVhbnVwRG93bmxvYWRGaWxlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmgKaW5kZXggMDhjODZjN2Q0
Njg0YmE2Zjc4ZDYxNmI2OGQwNjkwNGMzN2E5NjY3Ny4uMzQ3OTgzMmY1NzZkNDEyOGFmYTUxYzgx
NDI0Y2NmZDc0MWRmNmFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xh
c3MgQ3VybFJlcXVlc3Q7CiBjbGFzcyBDdXJsUmVzcG9uc2U7CiBjbGFzcyBOZXR3b3JrTG9hZE1l
dHJpY3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybFJlcXVlc3RDbGllbnQgewogcHVi
bGljOgpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY3VybERp
ZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5z
aWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZl
QnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xv
YWRNZXRyaWNzJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3Io
Q3VybFJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiYsIENlcnRpZmljYXRlSW5mbyYmKSA9IDA7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXggODE4ZDVhOTVlM2Ux
MjRkYzNhNzJmNzQzZTVjZDQ1M2Q3MTdlMDEwZi4uMzA1ZDRlNWM5ZmMyNzA3NzU3ODdiMGY5YTkx
OTc5YzA4ODg5YThhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBA
IC0xNDIsMTUgKzE0MiwxNiBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJs
RGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQogICAgIH0pOwogfQog
Ci12b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihD
dXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDdXJsUmVzb3Vy
Y2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKIAogICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEo
bV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCkt
PmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6
ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3Vz
KCk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9o
YW5kbGUsIGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGNs
aWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShjb250aWd1b3VzQnVm
ZmVyKSwgYnVmZmVyLT5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBt
ZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAppbmRleCA2ZDU1ODY0NDUy
ZmQ0NmVlNzgwMGU5MzEyM2IxMjhiZGM2NGNlNDg3Li5kYWYwYTU5YTRlNTg2ZDcxMTRhYmI0ZTVl
ZjljNTRmNmE4YmVmYzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaApAQCAt
NTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVx
dWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0
b3RhbEJ5dGVzVG9CZVNlbnQpIGZpbmFsOwogICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25z
ZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSBmaW5hbDsKLSAgICB2b2lkIGN1cmxEaWRS
ZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7Cisg
ICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVx
dWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRGYWls
V2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8m
JikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCBiYzRkYWFmYmYy
MWExNWMwZTZkZDFhY2Q0NjIyYWZhNTZiN2I4ZDVkLi4xZjRhMTkzMTMzMTJjNWRkNmE0OGFkNTMz
OWRmZDJjM2I1ZGVjMjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0zMSwx
MiArMzEsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9h
ZGVyQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4g
ewogcHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQoKSA9IGRl
ZmF1bHQ7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBjNTQ0NTM4NWE3
N2FjMTJjMDllZjI0ODY2NDczZDYyY2I2Nzk0NTVhLi40NTM2ODFiZGFiMmU0YTA1YTIxZmM2OGE5
NDM3MDBlMDZjOTk3YTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3Rl
Ym9hcmRXaW4uY3BwCkBAIC0zNTYsNyArMzU2LDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRT
dHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogCiBzdHJ1Y3QgUGFzdGVib2Fy
ZEZpbGVDb3VudGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIHZvaWQgcmVh
ZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgKytjb3VudDsgfQotICAgIHZvaWQgcmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYm
KSBmaW5hbCB7ICsrY291bnQ7IH0KKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsIHsgKytj
b3VudDsgfQogCiAgICAgdW5zaWduZWQgY291bnQgeyAwIH07CiB9OwpAQCAtOTc0LDcgKzk3NCw3
IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3IoY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gbWVtT2JqOwogfQogCi1zdGF0
aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0
YSkKK3N0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBIR0xPQkFMIG1lbU9iaiA9IEdsb2JhbEFsbG9j
KEdQVFIsIGRhdGEtPnNpemUoKSk7CiAgICAgaWYgKCFtZW1PYmopIApAQCAtOTg2LDE1ICs5ODYs
MTUgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRC
dWZmZXIqIGRhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRhLT5k
YXRhKCkpCi0gICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCksIGRh
dGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9yeShm
aWxlQ29udGVudHMsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KTsKIAogICAgIEdsb2JhbFVubG9jayhtZW1PYmopOwogCiAgICAgcmV0dXJuIG1lbU9iajsKIH0K
IAotc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJs
LCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWRCdWZmZXIqIGRhdGEpCitzdGF0aWMgSEdMT0JBTCBj
cmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUs
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKGZpbGVOYW1lLmlzRW1w
dHkoKSB8fCAhZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMDM4LDggKzEwMzgsOCBAQCBz
dGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0
cmluZyYgZmlsZU5hbWUsIFNoYXJlZAogICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGlz
IHRlbXAgZmlsZS4KICAgICAgICAgRFdPUkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1wV3Jp
dGVTdWNjZWVkZWQgPSBGQUxTRTsKLSAgICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAg
ICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEtPnNp
emUoKSkKKyAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmls
ZUhhbmRsZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3
cml0dGVuLCAwKTsKICAgICAgICAgQ2xvc2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAgICAg
ICBpZiAoIXRlbXBXcml0ZVN1Y2NlZWRlZCkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTA3
MSw3ICsxMDcxLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsKQogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwg
IWNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSkgfHwgIWNh
Y2hlZEltYWdlLT5pc0xvYWRlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTaGFyZWRCdWZm
ZXIqIGltYWdlQnVmZmVyID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5y
ZW5kZXJlcigpKS0+ZGF0YSgpOworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGltYWdlQnVm
ZmVyID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+
ZGF0YSgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIgfHwgIWltYWdlQnVmZmVyLT5zaXplKCkpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNw
cAppbmRleCA0MTFlZGJiMzUxN2I4NDhmYWMwNjNkMTllOGNkOTVlYzAwMzdjZDYxLi44NGZhMjlj
ZTFmMzAwZmUyOTBiMDQxNDY0OGYwZjcyOTBhN2NiZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtNjMsNyArNjMsNyBAQCBib29sIE1vY2tDRE1GYWN0
b3J5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKICAgICByZXR1
cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShrZXlTeXN0ZW0sICJvcmcud2Via2l0Lm1vY2siKTsK
IH0KIAotdm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBT
dHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYga2V5cykKK3ZvaWQgTW9ja0NE
TUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBrZXlzKQogewogICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9zZXNzaW9ucy5hZGQoaWQsIFdURk1vdmUoa2V5cykpOwogICAgIGlmIChhZGRSZXN1
bHQuaXNOZXdFbnRyeSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRk
S2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEIK
ICAgICAgICAgdmFsdWUuYXBwZW5kKFdURk1vdmUoa2V5KSk7CiB9CiAKLVZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChj
b25zdCBTdHJpbmcmIGlkKQorVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gTW9j
a0NETUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlk
KQogewogICAgIGF1dG8gaXQgPSBtX3Nlc3Npb25zLmZpbmQoaWQpOwogICAgIGlmIChpdCA9PSBt
X3Nlc3Npb25zLmVuZCgpKQpAQCAtODMsNyArODMsNyBAQCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZl
cj4+IE1vY2tDRE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3Ry
aQogICAgIHJldHVybiBXVEZNb3ZlKGl0LT52YWx1ZSk7CiB9CiAKLWNvbnN0IFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4qIE1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRChjb25z
dCBTdHJpbmcmIGlkKSBjb25zdAorY29uc3QgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4qIE1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcm
IGlkKSBjb25zdAogewogICAgIGF1dG8gaXQgPSBtX3Nlc3Npb25zLmZpbmQoaWQpOwogICAgIGlm
IChpdCA9PSBtX3Nlc3Npb25zLmVuZCgpKQpAQCAtMjAyLDcgKzIwMiw3IEBAIGJvb2wgTW9ja0NE
TTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZmFjdG9yeSAmJiBtX2Zh
Y3RvcnktPnN1cHBvcnRzU2Vzc2lvbnMoKTsKIH0KIAotYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0lu
aXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGlu
aXREYXRhKSBjb25zdAogewogICAgIGlmICghc3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRh
aW5zKGluaXREYXRhVHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMSwxMiArMjEx
LDEzIEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVk
QnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBN
b2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJl
c3BvbnNlKSBjb25zdAogewotICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNl
LmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKKyAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1h
a2VDb250aWd1b3VzKCk7CisgICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5k
YXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
VmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJl
c3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFy
cmF5ID0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7
CiAKICAgICBpZiAoIXJlc3BvbnNlQXJyYXkuY29udGFpbnMoU3RyaW5nKCJ2YWxpZC1yZXNwb25z
ZSJfcykpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI2OSw5ICsyNzAsOSBAQCB2b2lk
IE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlh
S2V5U3lzdGVtQ29uZmlndXJhdAogICAgIGNhbGxiYWNrKGluaXRpYWxpemUoKSk7CiB9CiAKLXZv
aWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVy
PiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NE
TUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgU3Ry
aW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlm
aWNhdGUtPnNpemUoKSk7CisgICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2Vy
dGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7
CiAKICAgICBjYWxsYmFjayhlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNlcnRpZmljYXRlU3RyaW5n
VmlldywgInZhbGlkIikgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwogfQpAQCAtMjk3LDcgKzI5OCw3
IEBAIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0
cjxNb2NrQ0RNSW5zdGFuY2U+JiYgaW5zdGFuCiB7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNl
U2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGlj
ZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNl
bnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9
IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICgh
ZmFjdG9yeSkgewpAQCAtMzIzLDcgKzMyNCw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lv
bjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TCiAg
ICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUobGljZW5zZS5kYXRhKCksIGxpY2Vuc2Uu
bGVuZ3RoKCkpLCBzZXNzaW9uSUQsIGZhbHNlLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9
CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2Us
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2VT
ZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlw
ZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVD
YWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9p
bnN0YW5jZSA/IG1faW5zdGFuY2UtPmZhY3RvcnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0
b3J5KSB7CkBAIC0zMzEsNyArMzMyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0g
U3RyaW5nKHJlc3BvbnNlLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7Cisg
ICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAg
IGlmIChyZXNwb25zZVZlY3Rvci5jb250YWlucyhTdHJpbmcoImludmFsaWQtZm9ybWF0Il9zKSkp
IHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NETUZhY3RvcnkuaAppbmRleCBmNWNkYTUwNWNmMmEzM2MxMDVmMDI1Yzk3YzkzNTBhOTY4
Njk4ZTFlLi5kOTZjMTU2ZWU0ZDI3OTFiOGIwOTk4ZGFmOTQwZWM3NTM3ODA3YmMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCkBAIC03Nyw5ICs3Nyw5IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaGFzU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSB7IHJldHVy
biBtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKTsgfQogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbldpdGhJ
RChjb25zdCBTdHJpbmcmIGlkKSB7IG1fc2Vzc2lvbnMucmVtb3ZlKGlkKTsgfQotICAgIHZvaWQg
YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJl
ZEJ1ZmZlcj4+JiYpOwotICAgIGNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4qIGtleXNG
b3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0OwotICAgIFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4gcmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYg
aWQpOworICAgIHZvaWQgYWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmKTsKKyAgICBjb25zdCBWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pioga2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3Qg
U3RyaW5nJiBpZCkgY29uc3Q7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4gcmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpOwogCiBwcml2
YXRlOgogICAgIE1vY2tDRE1GYWN0b3J5KCk7CkBAIC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2NhbkNyZWF0ZUluc3RhbmNlcyB7IHRydWUgfTsKICAgICBib29sIG1fc3VwcG9y
dHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMgeyB0cnVlIH07CiAgICAgYm9vbCBtX3N1cHBvcnRzU2Vzc2lv
bnMgeyB0cnVlIH07Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4+IG1fc2Vzc2lvbnM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+PiBtX3Nlc3Npb25zOwogfTsKIAogY2xhc3MgTW9ja0NETSA6IHB1Ymxp
YyBDRE1Qcml2YXRlIHsKQEAgLTEyMSw4ICsxMjEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9h
ZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNh
dGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmlu
YWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBT
aGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wg
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBm
aW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3Qg
U3RyaW5nJikgY29uc3QgZmluYWw7CiAKICAgICBXZWFrUHRyPE1vY2tDRE1GYWN0b3J5PiBtX2Zh
Y3Rvcnk7CkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbXBsZW1l
bnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1w
bGVtZW50YXRpb25UeXBlOjpNb2NrOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3Vy
YXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2
ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZp
bmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwg
U3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsK
ICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAg
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8Q0RNSW5z
dGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CkBAIC0xNTQsOCArMTU0LDggQEAg
cHVibGljOgogICAgIE1vY2tDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxNb2NrQ0RNSW5zdGFu
Y2U+JiYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUs
IGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0
RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBs
b2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9h
ZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBT
dHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNl
c3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNh
bGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyLmNwcAppbmRleCBmYzEyN2I3YjY3YmVhNzM0NDYzY2QyZDViMDc1NmI1OWJlYmE1OGFlLi4w
NTlmM2EzODZiNmNmNWZhNzliM2MxODk3MDE1MzEzZjdjZGI0ZWYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZv
aWQgTW9ja0NvbnRlbnRGaWx0ZXI6OmZpbmlzaGVkQWRkaW5nRGF0YSgpCiAgICAgbWF5YmVEZXRl
cm1pbmVTdGF0dXMoRGVjaXNpb25Qb2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEpOwogfQog
Ci1SZWY8U2hhcmVkQnVmZmVyPiBNb2NrQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkg
Y29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBNb2NrQ29udGVudEZpbHRlcjo6cmVw
bGFjZW1lbnREYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkpOwogICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5kYXRhKCksIG1f
cmVwbGFjZW1lbnREYXRhLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDb250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyLmgKaW5kZXggNDExYTMwMDk0N2I1MzllMjZhYTZjNjRhMDA5MzI5MmU5ZmZiZTZi
OS4uNjM1YWM4NGJlNzkzODQ3YWE1NzIxM2QwMWZmYzFlNzRmNzZiNzU5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBv
dmVycmlkZTsKICAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKLSAg
ICBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3Zl
cnJpZGU7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKaW5kZXggNmQ0OGJkMDJkMWM5MWY3
ZWVkODY0YTE2Y2Q3NTZiYjA3N2Q2NTUyYS4uNWY4NTQ1ZWJhNWIwZTdiOGJiYWJhNWM2OTNjMmE0
MzQxODhiMmJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZm
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcApAQCAt
MzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1
ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRm
OCgpOwotICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodXRmOC5kYXRhKCksIHV0
ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5n
dGgoKSk7CiB9CiAKIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKQEAgLTQ2LDE0
ICs0NiwxMyBAQCBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCiAgICAgcmV0dXJu
IFNjcmlwdEJ1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsKIH0KIAotCiBTdHJpbmcg
U2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAg
IG1fYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgIG1fYnVm
ZmVyLmdldCgpLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewogICAgICAgICBi
dWlsZGVyLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNp
emUoKSkpOwogICAgIH0pOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC02MSwx
NSArNjAsMTMgQEAgU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogCiBib29s
IFNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9i
dWZmZXItPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKKyAgICBy
ZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXIuZ2V0KCktPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1
ZmZlci5nZXQoKS0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOwog
fQogCiB2b2lkIFNjcmlwdEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewot
ICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyLT5hcHBl
bmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4
LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3Jp
cHRCdWZmZXImIGEsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Nj
cmlwdEJ1ZmZlci5oCmluZGV4IGIzOWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3OTZiNzFhMDQzMTM0YzY2
NDYuLmZkMmMxYWUyZjYzYjYwZDc0YzMwZDI0MmE5ODlhMGJmZDkxZGU0OTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBTY3JpcHRC
dWZmZXIgewogcHVibGljOgogICAgIFNjcmlwdEJ1ZmZlcigpID0gZGVmYXVsdDsKIAotICAgIFNj
cmlwdEJ1ZmZlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBTY3JpcHRCdWZm
ZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1f
YnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKICAgICB7CiAgICAgfQpAQCAtNDgsMTcgKzQ4LDE3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTY3JpcHRCdWZmZXIoY29uc3Qg
U3RyaW5nJik7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICBTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CisgICAgY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIu
Z2V0KCkuZ2V0KCk7IH0KIAotICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7
IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1
ZmZlci0+Y29weSgpKSA6IG51bGxwdHIpOyB9CisgICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29w
eSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlciB8fCAhbV9idWZmZXItPnNpemUo
KTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzRW1wdHko
KTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc1NpbmdsZUZpbGVNYXBwZWRT
ZWdtZW50KCkgY29uc3Q7CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZh
dGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBV
VEYtOCBlbmNvZGVkIHNjcmlwdC4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOyAv
LyBDb250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBib29sIG9wZXJhdG9y
PT0oY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggNzc0MTZl
YzA3ZDdiNjhiMTI4ZTI5NjFlZGM1ZDY0MGQwNGQ0YmQ0NS4uNDA2NmZiMzUyZWI1YjA4N2Q1ZDhk
NDdkODAyZmQyYzBhNmE4MGZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVzdChVUkwmJiB1
cmwsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKICAgICA6
IG1fdXJsKFdURk1vdmUodXJsKSkKICAgICAsIG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZShsb2Fk
ZWRGcm9tT3BhcXVlU291cmNlKQorICAgICwgbV9kYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVm
ZmVyQnVpbGRlcj4oKSkKIHsKIH0KIApAQCAtNzUsMTIgKzc2LDIxIEBAIHZvaWQgV29ya2VyRm9u
dExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkK
ICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHdv
cmtlckdsb2JhbFNjb3BlLCBXVEZNb3ZlKHJlcXVlc3QpLCAqdGhpcywgb3B0aW9ucyk7CiB9CiAK
K2Jvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1BlbmRpbmcoKSBjb25zdAoreworICAgIHJl
dHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiBtX2RhdGEtPmlzTnVsbCgp
OworfQorCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEo
Y29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEg
JiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEpOwotICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAg
ICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKCptX2RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwor
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgaWYg
KG1fZGF0YS0+Z2V0KCkpCisgICAgICAgICAgICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+dGFr
ZSgpLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNz
YXJ5KGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAg
ICAgICAgICBtX2RhdGEtPmFwcGVuZCgqY29udGlndW91c0RhdGEpOworICAgICAgICAgICAgbV9m
b250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29u
dGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwogICAg
ICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCiAgICAgICAgICAgICAgICAg
bV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTE3LDkgKzEyNyw2IEBAIHZv
aWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICBpZiAobV9lcnJvck9jY3VycmVkKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoIW1fZGF0YSkKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKLQogICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRl
eCBiOWZjZmIxZDZmZWE4YWQ1ZTc4MGJkZWViYzVjNmUwNGExZTg2M2M3Li4xYjNkNzg3MGYxMjhi
ZmU1MzhlZTZjOTg1OWNkYWFlODFlNDVlMmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKQEAgLTMwLDEzICszMCwxNCBAQAogI2luY2x1ZGUg
IlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGll
bnQuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Rm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgV29ya2Vy
R2xvYmFsU2NvcGU7CiAKIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwpAQCAtNTEsNyAr
NTIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3VybDsgfQotICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gIW1faXNMb2FkaW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1fZGF0YTsgfQor
ICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0xvYWRpbmcoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2lzTG9hZGluZzsgfQogICAgIGJvb2wgZXJyb3JPY2N1cnJl
ZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZXJyb3JPY2N1cnJlZDsgfQogCkBAIC03Niw3ICs3
Nyw3IEBAIHByaXZhdGU6CiAgICAgRm9udExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVx
dWVzdENsaWVudCB7IG51bGxwdHIgfTsKIAogICAgIFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dD4gbV9jb250ZXh0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBV
bmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyRmV0Y2guaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJGZXRjaC5oCmluZGV4IGViMjY2YjZjMDdlNjczZDkxNjZjYWNlNmIzMzkx
OWQ4MGViYmYzMWMuLjA5NzU0M2UxYjNiMzBmZjMxNDdkOTIzMmE1OGNlNGE5ZTYyZjNlNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJGZXRjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJGZXRjaC5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGU7CiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgU2VydmljZVdv
cmtlckZldGNoIHsKIGNsYXNzIENsaWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxD
bGllbnQsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKQEAgLTUxLDcgKzUxLDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5
YTg3NWY4YWZjMGQ2MjM1NWFjNjIyOWE2NGMxY2E0M2QxODU2NTIuLjlhOGZiMzVjYTUzNjEwNWJi
NmQ2ZmM0NmVlMTIyNDU5MzNmNzBiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsx
MjcsOCBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBE
byB3ZSBuZWVkIHRvIGRpc2FibGUgZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQg
aGF2aW5nIHRvbyBtYW55IGZpbGUgZGVzY3JpcHRvcnMgb3Blbj8KLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkg
PyBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1h
eVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBh
dGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFw
cGluZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDog
U2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIHJldHVybiBidWZmZXI7
CiB9CiAKIHZvaWQgU1dTY3JpcHRTdG9yYWdlOjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAppbmRleCBhYjk5NjAzZWE1M2UyNDZiNjMzMjFmYmQ0MTQxY2M1ZTI5Y2U5NmI0Li5m
Y2NjMmE5ZWQyMGQ3NDdjMDljNjE2YjQ5OGU1MzBlZjc4YThlNTY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTExOCw2ICsxMTgsNyBAQCBYTUxIdHRwUmVxdWVzdDo6
WE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1f
cmVzcG9uc2VDYWNoZUlzVmFsaWQoZmFsc2UpCiAgICAgLCBtX3JlYWR5U3RhdGUoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFVOU0VOVCkpCiAgICAgLCBtX3Jlc3BvbnNlVHlwZShzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZykpCisgICAgLCBtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiAgICAgLCBt
X3Byb2dyZXNzRXZlbnRUaHJvdHRsZSgqdGhpcykKICAgICAsIG1fdGltZW91dFRpbWVyKCp0aGlz
LCAmWE1MSHR0cFJlcXVlc3Q6OnRpbWVvdXRUaW1lckZpcmVkKQogewpAQCAtMjA3LDggKzIwOCw4
IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkKIAogICAg
IC8vIEZJWE1FOiBXZSBqdXN0IHJlY2VpdmVkIHRoZSBkYXRhIGZyb20gTmV0d29ya1Byb2Nlc3Ms
IGFuZCBhcmUgc2VuZGluZyBpdCBiYWNrLiBUaGlzIGlzIGluZWZmaWNpZW50LgogICAgIFZlY3Rv
cjx1aW50OF90PiBkYXRhOwotICAgIGlmIChtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAg
ICAgZGF0YSA9IHN0ZDo6ZXhjaGFuZ2UobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIsIG51bGxwdHIp
LT5leHRyYWN0RGF0YSgpOworICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmlzTnVs
bCgpKQorICAgICAgICBkYXRhID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2UoKS0+ZXh0
cmFjdERhdGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxvYjo6bm9y
bWFsaXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlwZTo6WWVzKSk7
IC8vIHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5IGJlIGlu
Y29ycmVjdC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAgLTIxOCw4ICsy
MTksNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25z
ZUFycmF5QnVmZmVyKCkKICAgICBBU1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVzcG9uc2VUeXBl
OjpBcnJheWJ1ZmZlcik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkpOwogCi0gICAg
YXV0byByZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxs
cHRyLCAwKTsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgYXV0
byByZXN1bHQgPSAhbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpID8gbV9iaW5hcnlS
ZXNwb25zZUJ1aWxkZXItPnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVm
ZmVyOjpjcmVhdGUobnVsbHB0ciwgMCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNzQx
LDcgKzc0MSw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VCdWZmZXJzKCkK
ICAgICBtX3Jlc3BvbnNlRW5jb2RpbmcgPSBTdHJpbmcoKTsKICAgICBtX2NyZWF0ZWREb2N1bWVu
dCA9IGZhbHNlOwogICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IG51bGxwdHI7Ci0gICAgbV9iaW5h
cnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOworICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
LT5yZXNldCgpOwogICAgIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQgPSBmYWxzZTsKIH0KIApAQCAt
MTA2NSw4ICsxMDY1LDYgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKICAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBw
ZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOwogICAgIGVsc2UgewogICAgICAgICAv
LyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxk
ZXIpCi0gICAgICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CiAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5hcHBlbmQoZGF0YSwg
bGVuKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggNzI4OTRh
ZjZjYzQ3ZGJhZTVlNzVjM2E4MDc5MDllZjI4NGY2ZDU5Ny4uMTYyY2E5NWFlYjc1NDQ4OWJkNmNk
OGNkYzUwODYyYzg0Nzc3YmFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5j
bHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJn
ZXQuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5oIgog
I2luY2x1ZGUgPHZhcmlhbnQ+CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEJsb2I7CiBjbGFzcyBE
b2N1bWVudDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgVGV4dFJl
c291cmNlRGVjb2RlcjsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBVUkxTZWFyY2hQ
YXJhbXM7CkBAIC0yMzcsNyArMjM4LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxEb2N1bWVu
dD4gbV9yZXNwb25zZURvY3VtZW50OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9iaW5h
cnlSZXNwb25zZUJ1aWxkZXI7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1f
YmluYXJ5UmVzcG9uc2VCdWlsZGVyOwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Jlc3BvbnNlQnVp
bGRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlUHJveHkuY3BwCmluZGV4IDU3MzA2N2UzZGQwNTBmZWI3YzU3OWQwMDEw
MmVlOWY2MDQ1YjUzMTMuLjMxYzJkNzZmMmVlMWI5ZDI0OWIwMDFiN2VmZjg5MmVjMmE3NDU2Y2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eTo6flJlbW90ZUNETUluc3RhbmNlUHJveHkoKQogICAgIG1faW5zdGFuY2UtPmNsZWFyQ2xp
ZW50KCk7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6dW5yZXF1ZXN0ZWRJbml0
aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgaW5pdERhdGEpCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnVucmVxdWVzdGVk
SW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBpZiAoIW1fY2RtKQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlUHJveHkuaAppbmRleCA4ZTczZDNkOWE2NGI5OGJmYzAwOTM2Y2Q0N2M0
YzI1YTkyNzlmMmM4Li4wMmM1Y2QzN2FlNTQ4MDJmNmQwYzhkY2NjYjBiYTgwY2YzMzg4YzMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVByb3h5LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVDRE1J
bnN0YW5jZVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYsIFJlZjxXZWJDb3JlOjpDRE1J
bnN0YW5jZT4mJiwgVW5pcXVlUmVmPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4mJiwg
UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyKTsKIAogICAgIC8vIENETUluc3RhbmNlQ2xpZW50
Ci0gICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0
cmluZyYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgdW5y
ZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICAvLyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcApp
bmRleCBlNTc2NmMyMzM0Y2ZkMzg5MzEwY2Q0YjIxNzIzY2FiYTM3NDJmYzdjLi5kZTgyNzNiOWNm
NTAwYTRkNjZhYTE0NGVkZTAyMDFlZWYxZWQ4NjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgQXRvbVN0cmluZwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zZXNzaW9uLT5yZXF1ZXN0TGljZW5zZSh0eXBlLCBp
bml0RGF0YVR5cGUsIGluaXREYXRhLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0
aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RN
SW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICBt
X3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVm
ZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24p
XSAoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9u
OjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbihX
VEZNb3ZlKG1lc3NhZ2UpLCBzZXNzaW9uSWQsIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIHN1Y2Nl
ZWRlZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2NlZWRlZCk7CiAgICAgfSk7CiB9CkBAIC0x
MTUsNyArMTE1LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Y2xvc2VT
ZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVMKIAogdm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJiBjb21w
bGV0aW9uKQogewotICAgIG1fc2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0
eXBlLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChDRE1JbnN0YW5jZVNlc3Np
b246OktleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFy
ZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3Vj
Y2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNz
aW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9u
KV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIHN0
ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9u
c0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJs
ZSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBleHBpcmVk
U2Vzc2lvbkRhdGFSZWZlcmVuY2U7CiAgICAgICAgIGlmIChleHBpcmVkU2Vzc2lvbnNEYXRhKQog
ICAgICAgICAgICAgZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlID0gSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5KFdURk1vdmUoKmV4cGlyZWRTZXNzaW9uc0RhdGEpKTsKQEAgLTE0OSw3ICsxNDksNyBA
QCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVLZXlTdGF0dXNlcyhL
ZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dQogICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mt
PmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlVw
ZGF0ZUtleVN0YXR1c2VzKFdURk1vdmUoa2V5U3RhdHVzZXMpKSwgbV9pZGVudGlmaWVyKTsKIH0K
IAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVz
c2FnZVR5cGUgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBpZiAoIW1fY2Rt
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCmluZGV4IDhhNjFm
OWQ1ZmFiYzg0ODZhN2EwZTg2MGY0YzYzMTJjMGI0NDU1MTQuLmZlNzMwOTcxMzFlMGJiMjBhNTAw
MWUxNTAxNjAyZDY1MTg2YjMwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCkBAIC03
Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQK
ICAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKSBmaW5hbDsKLSAg
ICB2b2lkIHNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOworICAgIHZvaWQgc2VuZE1lc3NhZ2UoV2Vi
Q29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIG1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJp
bmcmKSBmaW5hbDsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBmaW5hbCB7IHJl
dHVybiBtX2Rpc3BsYXlJRDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETVByb3h5LmNwcAppbmRleCA5YWIzNTc1ZjRjM2I1NTk1NTViOWI4N2IyMzM3
MWIxYjFhNjZkYzE3Li5mN2NiNmE2M2ViOTMzYWJkNGQ0NTNhMjJhYjI5NGYxMzAzMjMyYjA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5j
cHAKQEAgLTYzLDEyICs2MywxMiBAQCBSZW1vdGVDRE1Qcm94eTo6UmVtb3RlQ0RNUHJveHkoV2Vh
a1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgc3RkOjp1bgogCiBSZW1vdGVD
RE1Qcm94eTo6flJlbW90ZUNETVByb3h5KCkgPSBkZWZhdWx0OwogCi1ib29sIFJlbW90ZUNETVBy
b3h5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKK2Jvb2wgUmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5zdXBwb3J0c0luaXREYXRhKHR5cGUsIGRhdGEpOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25z
ZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IFJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIHJlc3BvbnNlKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPnNhbml0aXpl
UmVzcG9uc2UocmVzcG9uc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNUHJveHkuaAppbmRleCA2OTI0ZTc0ZTNmNTAxMWJlMjE1YmU0YmQ5NmIyMzQ4
MjY0NzBmNDIzLi4zYjY2Yzc3NTc4NzA2OWU5NzZlZTA2NGY5NmZmMDdjMGY3MTJhOTBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaApAQCAt
MzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIGVudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgOiB1aW50OF90OwogZW51bSBjbGFzcyBDRE1T
ZXNzaW9uVHlwZSA6IHVpbnQ4X3Q7CiBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsK
QEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogCiAgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5KiBm
YWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9mYWN0b3J5LmdldCgpOyB9CiAKLSAgICBib29sIHN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiByZXNwb25zZSk7CisgICAgYm9vbCBzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgcmVzcG9uc2UpOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25J
ZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCmluZGV4IGUy
Y2QwNWQ3Y2M3NGYyMGVjNjlmYWRmZTNlZTA4NTc1OTJhZDg3OWIuLmRlOGY2ZGY1NWE2ZTFmYThi
ZTk2NmY5NDFlMDdmZTJmNWM1MDIxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCkBAIC0zNiw3ICszNiw3IEBACiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKaW5kZXggZjE0YzYyN2Y2NTkzZTFhODc4
ZDBmNDU5OTJiM2M0MWIyMjJjN2YwMC4uMTU0NmJkZmRmZGNmMDkxMDg3ODk0NGYzNDA3OTY3YTdh
YjM4YmY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaApAQCAtMzcsNyArMzcsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGVnYWN5Q0RNOwogY2xhc3MgTGVnYWN5Q0RNU2Vzc2lv
bjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9
CiAKIG5hbWVzcGFjZSBJUEMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCmluZGV4IGM0NWU1MjU1ZDY3YjUyYzdhZTEw
NDQ5OTg4Y2UwMTkwYzdmZmI1MzguLjYxN2Y0NzY4OTU2NDJkZWMyMzI1NGI1NDBlZTgxOTExYWM0
YTJkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZS5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVJl
c291cmNlOjpkYXRhU2VudCh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNU
b0JlU2UKICAgICAgICAgbV9jbGllbnQtPmRhdGFTZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFs
Qnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2Vp
dmVkKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6
ZGF0YVJlY2VpdmVkKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAg
aWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBXVEZN
b3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZS5oCmluZGV4IGQxM2QyNWY2NWYwMjI0YTZjNzY3ZjY5YTRkNDE5Y2Qw
NTNiYjc5NWQuLjViN2E3ZTJhNzQyNDQzMmQ4NmNiMjhhMWJlNzE3MThhMTY3Mzc1ZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2UuaApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOZXR3
b3JrTG9hZE1ldHJpY3M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU3LDcgKzU3LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250
aW51ZVBvbGljeUNoZWNrKT4mJik7CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAg
IHZvaWQgZGF0YVNlbnQodWludDY0X3QsIHVpbnQ2NF90KTsKLSAgICB2b2lkIGRhdGFSZWNlaXZl
ZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBhY2Nlc3ND
b250cm9sQ2hlY2tGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZv
aWQgbG9hZEZhaWxlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBs
b2FkRmluaXNoZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
LmNwcAppbmRleCA3ZTU3MmIzYTc0YTIwMjdlNzRjYWE3NjcyZTUyZGEwYWY4MzQyMDcyLi5lODNm
OTE0M2QyMGE3MmUyYmU0ZmZjYmZlZDEzYjBiYjRkZDMxZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAg
LTEwNyw3ICsxMDcsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZh
aWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1vdGVNZWRp
YVJlY29yZGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZl
cmVuY2UmJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dyaXRlci0+
ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShhdXRvJiYgZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8qIHBv
aW50ZXIgPSBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byBidWZm
ZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+KCk7CisgICAgICAgIGF1dG8qIHBvaW50ZXIgPSBidWZmZXIgPyBidWZmZXItPmRh
dGEoKSA6IG51bGxwdHI7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVy
ZW5jZSB7IHBvaW50ZXIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwIH0sIHRpbWVDb2RlKTsKICAg
ICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL1BlbmRpbmdEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKaW5kZXggNTJjYzVkYTEyMWEyZmI1OWQ4Y2YwNTkzYjY4
NTA5ZmQ2NTVjMGNkYy4uNzFmZDAyMjI5YmJiMWM1NzMyNmZkZmNmZTI2YzExZjc2MWFiY2Y3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGlu
Z0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
UGVuZGluZ0Rvd25sb2FkLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlz
QWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9p
c0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRp
cmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYp
IG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9Owor
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKICAg
ICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
Jikgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXgg
M2YzOWViMzJmMWFhODA3Njc4NWRhNzllZTExZGFkOGYwYzMyNmI3OS4uZDg5MjBlOTg3NjRmZDli
NjRiOWNkZGM2MGExZDg0ZDYxOWIyZDQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcApAQCAt
MTE5LDcgKzExOSw3IEBAIHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikKK3Zv
aWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKIHsKICAgICBDT1JTX0NIRUNLRVJfUkVMRUFT
RV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAppbmRleCBiYmIx
NDYyYTMxNjFlMmZjZTllYTU3ODQ0YjE5YjkzZTYxOWM4MWIwLi5lMTFiZjU2MzE5MDdhZTQ3MzM2
ZWY4NWE1ZDIyZTg4MzU3NDY1MWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKQEAgLTcxLDcgKzcx
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGly
ZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxl
bmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lU
TFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2Fj
eVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAg
IHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFs
Qnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
ay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAppbmRl
eCBkNjAxOGY2MTM4M2FlM2E1MWU5ZDQ3MjJjZjZhNjBlMmQ4Yjg3YTdkLi5lMDQ5ZTViMTJkZGU1
ZmU1MWI0Njk1NTI4OWE3YTdmNjk5ODJhZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBSZXNvdXJjZUVy
cm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjMs
NyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYs
IE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYm
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
U2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBl
Y3RlZFRvU2VuZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3YXNCbG9ja2VkKCkgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAppbmRleCBiYWMwMjJh
YjQ1NDMwZjY1MWIxODlhYzAxMjA3YTA2MDYwOGMxNjcxLi43OTc1ZDQxYmFkODkxNWZlZWRiZGFi
MTU1NGU4MWUxZGIyMDMwZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6Om5vdGlm
eURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0
CiAgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2Up
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRp
ZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBOZXR3b3JrTG9h
ZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB0aGUgZW5jb2RlZCBkYXRhIGxlbmd0aCwg
bm90IHRoZSBkZWNvZGVkIGRhdGEgbGVuZ3RoLgogICAgIGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCmluZGV4IGMz
NzczYzk4Nzg1NTNjZTUzNGQwNTRhYmZmZGRlYmIyOWVlMDg0ZDIuLmVlNWViMDA2YWEzNzliNzhm
Y2JjMGJkMTc0ZTMyYmQ2MzlmOTVlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7
CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRo
RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90
YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAg
ICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKaW5kZXggMGE1ZjY2YmQ5NjdlYzlmZGY2NjRlNTJl
NWFmMzk0ZTQ4ZWNlMWY3Yi4uMzQ4Y2ZmYjllOGUyNWVlODNiYmIzOWEwMmNkM2NmNmQyODU0ZDM5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGll
bnQuaApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogZW51bSBjbGFzcyBQb2xp
Y3lBY3Rpb24gOiB1aW50OF90OwogfQogCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5z
aWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6
TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGlu
Zyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGU1
MGNmNGFiYmU1NjRlNGNhM2ZiNzI2Y2FhOWQ1NjljNTRiMDlkNzIuLjBlNWViNWFkYzAxMmYxZjJl
YTc2NmZjYzFhNDU1MzlmZDVkODljMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg3LDE0ICs4NywxNCBA
QCBzdHJ1Y3QgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRhIHsKICAg
ICBSZXNvdXJjZUVycm9yIGVycm9yOwogfTsKIAotc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5j
aHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRh
JiBkYXRhLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQorc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3Qo
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRhJiBkYXRhLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKIHsKICAgICBBU1NFUlQoZGF0YS5kZWxheWVkUmVwbHkpOwogICAgIEFTU0VSVCgh
ZGF0YS5yZXNwb25zZS5pc051bGwoKSB8fCAhZGF0YS5lcnJvci5pc051bGwoKSk7CiAKICAgICBW
ZWN0b3I8dWludDhfdD4gcmVzcG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXIt
PnNpemUoKSkKLSAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CisgICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAgZGF0YS5yZXNw
b25zZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJp
Y3M+OjpjcmVhdGUobWV0cmljcykpOwogCkBAIC0xMDUsOSArMTA1LDExIEBAIHN0YXRpYyB2b2lk
IHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3lu
Y2hyb25vdXNMb2FkCiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseSYmIHN5
bmNocm9ub3VzUmVwbHkpCiAgICAgOiBtX3BhcmFtZXRlcnMgeyBXVEZNb3ZlKHBhcmFtZXRlcnMp
IH0KICAgICAsIG1fY29ubmVjdGlvbiB7IGNvbm5lY3Rpb24gfQorICAgICwgbV9idWZmZXJlZERh
dGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9maWxl
UmVmZXJlbmNlcyhjb25uZWN0aW9uLnJlc29sdmVCbG9iUmVmZXJlbmNlcyhtX3BhcmFtZXRlcnMp
KQogICAgICwgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyB7IG1fcGFyYW1ldGVy
cy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFz
a0NsaWVudEZvckNyZWRlbnRpYWxzIH0KICAgICAsIG1fYnVmZmVyaW5nVGltZXIgeyAqdGhpcywg
Jk5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCB9CisgICAgLCBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigp
IH0KICAgICAsIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKG1fY29ubmVj
dGlvbi0+Y2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZCgpKQogICAgICwgbV9y
ZXNvdXJjZUxvYWRJRCB7IE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
IH0KIHsKQEAgLTMwNiwxMCArMzA4LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
dGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAg
ICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCiAgICAgICAgIGlmIChpc1N5bmNocm9u
b3VzKCkgfHwgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID4gMF9zKQotICAgICAg
ICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAg
ICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAKICAgICAgICAgaWYgKGNhblVzZUNhY2hlKHJl
cXVlc3QpKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5lbXB0eSgp
OwogICAgIH0KIAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbV9wYXJh
bWV0ZXJzOwpAQCAtNzMwLDIwICs3MzIsMjAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAg
ICAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiYXBw
bGljYXRpb24vb2N0ZXQtc3RyZWFtIik7CiAgICAgfTsKIAotICAgIGlmICghbV9idWZmZXJlZERh
dGEKKyAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzTnVsbCgpCiAgICAgICAgICYmIG1fcmVzcG9u
c2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KDEgKiBN
QikKICAgICAgICAgJiYgaXNGZXRjaE9yWEhSKHJlc291cmNlTG9hZEluZm8pCiAgICAgICAgICYm
IGlzTWVkaWFNSU1FVHlwZShtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpKSB7Ci0gICAgICAgIG1fYnVm
ZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgbV9idWZmZXJlZERh
dGEtPmVtcHR5KCk7CiAgICAgICAgIG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA9
IFdlYkxvYWRlclN0cmF0ZWd5OjptZWRpYU1heGltdW1CdWZmZXJpbmdUaW1lOwogICAgIH0KIAog
ICAgIC8vIEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGRpZFJlY2VpdmVSZXNwb25zZUFz
eW5jIGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBidWZmZXJpbmcgd291bGQgcmVxdWly
ZSBzcGVjaWFsIGhhbmRsaW5nLgogICAgIGlmICghaXNTeW5jaHJvbm91cygpICYmIG1fcmVzcG9u
c2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBudWxscHRyOworICAg
ICAgICBtX2J1ZmZlcmVkRGF0YS0+cmVzZXQoKTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVs
dGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5yZXNldCgpOwogCiAgICAgaWYgKG1fY2FjaGVF
bnRyeUZvclZhbGlkYXRpb24pIHsKICAgICAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0g
bV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZApA
QCAtODU4LDcgKzg2MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kRGlkUmVj
ZWl2ZVJlc3BvbnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dzaW5nQ29udGV4CiAgICAgfSk7CiB9CiAK
LXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAg
aWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpCiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygiZGlk
UmVjZWl2ZUJ1ZmZlcjogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aD0lZCkiLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKQEAgLTg2NiwyMCArODY4
LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRy
eUZvclZhbGlkYXRpb24pOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAg
ICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFBy
ZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBz
aXplIG9mIGVudHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11
bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwogICAgICAgICBpZiAo
bV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11
bUNhY2hlQnVmZmVyU2l6ZSkKICAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFw
cGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUtPnJlc2V0KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRlIHdl
IGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUgcmVzb3VyY2UgaGFuZGxlLgogICAgIHVuc2lnbmVkIGVu
Y29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCi0gICAgaWYgKG1fYnVmZmVy
ZWREYXRhKSB7CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpIHsKICAgICAgICAg
bV9idWZmZXJlZERhdGEtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZlcmVk
RGF0YUVuY29kZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAgICBzdGFy
dEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKQEAgLTkwOSwxMSArOTExLDExIEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbmV0d29ya0xvCiAjZW5kaWYKIAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0gICAg
ICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEs
IG1fYnVmZmVyZWREYXRhLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBzZW5k
UmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZl
cmVkRGF0YS0+Z2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0g
ICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkg
eworICAgICAgICBpZiAoIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBz
aXplIGZlYXR1cmUuCi0gICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwgLTEp
OworICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEtPmdldCgpLCAtMSk7CiAg
ICAgICAgIH0KICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZp
bmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU2LDE5
ICsxMjU4LDE5IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydEJ1ZmZlcmluZ1Rp
bWVySWZOZWVkZWQoKQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGlt
ZXJGaXJlZCgpCiB7Ci0gICAgQVNTRVJUKG1fYnVmZmVyZWREYXRhKTsKKyAgICBBU1NFUlQoIW1f
YnVmZmVyZWREYXRhLT5pc051bGwoKSk7CiAgICAgQVNTRVJUKG1fbmV0d29ya0xvYWQpOwogCiAg
ICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1
ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVy
ZWREYXRhLT5nZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKLSAg
ICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZmZXJl
ZERhdGEtPmVtcHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7
CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c2VuZEJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVf
dCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWlzU3luY2hyb25vdXMoKSk7CiAK
QEAgLTEyODEsNyArMTI4Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9y
ZUFzQ2FjaGVFbnRyeSgpCiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0Nh
Y2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVzdCBpcyBub3Qg
ZWxpZ2libGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+aXNOdWxsKCkp
IHsKICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90
IHN0b3JpbmcgY2FjaGUgZW50cnkgYmVjYXVzZSBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIGlzIG51
bGwiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyODksMTIgKzEyOTEsMTIgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICBpZiAo
aXNDcm9zc09yaWdpblByZWZldGNoKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBt
X2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkp
KSB7CiAgICAgICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5
OiBTdG9yaW5nIGVudHJ5IGluIHByZWZldGNoIGNhY2hlIik7Ci0gICAgICAgICAgICBzZXNzaW9u
LT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51
cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
KSk7CisgICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3Jr
TG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS0+dGFrZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3Jp
bmcgZW50cnkgaW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3
b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkp
IG11dGFibGUgeworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1
ZXN0KCksIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSwgW2xvYWRl
ciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJM
RShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJl
c291cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXgg
ZDIzNGRhYjViZWVhNWI2NDczMDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uOTg0NDI0YTMwNjgxYTM2
MGZjNjBjOWU3YTlkZDRlNmJiNDI2ZGU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOSw2ICszOSw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5o
PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw2ICs0Nyw4IEBAIGNsYXNzIEJsb2JEYXRhRmls
ZVJlZmVyZW5jZTsKIGNsYXNzIEZvcm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
MTE0LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNy
ZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JD
cmVkZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZp
bmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
KSBmaW5hbDsKQEAgLTE5Miw3ICsxOTUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzdGFydEJ1
ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKICAgICB2b2lkIGJ1ZmZlcmluZ1RpbWVyRmlyZWQoKTsK
LSAgICB2b2lkIHNlbmRCdWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29k
ZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIHNlbmRCdWZmZXIoV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAKICAgICB2b2lkIGNvbnN1
bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogICAgIHZvaWQgaW52YWxpZGF0ZVNhbmRib3hFeHRlbnNp
b25zKCk7CkBAIC0yMjUsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKICAgICBzaXplX3QgbV9idWZmZXJlZERhdGFFbmNvZGVk
RGF0YUxlbmd0aCB7IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcmVkRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4g
bV9idWZmZXJlZERhdGE7CiAgICAgdW5zaWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFN5bmNocm9ub3VzTG9hZERhdGE+IG1fc3luY2hyb25vdXNMb2Fk
RGF0YTsKQEAgLTI0MCw3ICsyNDMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIg
bV9idWZmZXJpbmdUaW1lcjsKICAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNo
ZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5
PiBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3Jr
Q2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uOwogICAgIGJv
b2wgbV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0IHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xv
YWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXgg
MTE0ODUzZTQ1YjcyNTMzNjRjNzQ3YTcxY2IyYjVhYjhjYzM4ZWZkNS4uMWFmMWUwOGUzYzQ0MWUy
NGYzMDA2NWU5ZjIwNzc2ZTZmOWZjMzNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9QaW5nTG9hZC5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFBpbmdMb2FkOjpkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5
VAogICAgIGRpZEZpbmlzaCh7IH0sIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBQaW5nTG9hZDo6ZGlk
UmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgUGluZ0xvYWQ6OmRpZFJlY2Vp
dmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQogewogICAgIFBJTkdfUkVMRUFT
RV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKaW5kZXggMTllYzhjZWI5MmUzYzhhMDU2
ZjQ5MjczNjYwY2ZmZjkyNjQzNDFkMS4uYWIyOWEwYjFhYzg0NjZiMGVkNjFlZjU4ZWY0YzIyMGFi
YWI2ZWJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtNTQs
NyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24o
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
UmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVD
aGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExl
Z2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVk
TGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7
CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3Qg
dG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVj
dFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5j
cHAKaW5kZXggNDU1NzgyZDU0YTJlYTliZWUxODY1MGUxYWZkMWNmN2IyY2U5OGM0OS4uMTdkNDc5
MDdhM2Y2ZWU1MmJlNjUwMWQxZGFiMGNhNjA3NTFkNmIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9p
ZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiBy
ZXNwb25zZSwgUmVzcG9uc2VDb20KICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246
Oklnbm9yZSk7CiB9CiAKLXZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFBy
ZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJl
Y29ubmVjdFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRh
c2suaAppbmRleCAxYzFmZjE2NDcxMTFjNmZhODQ5NGFmNWNmMGM3YmJlYWExYjI2NTAzLi44NTgw
OGUxMjFiNjhjYThiNzNlMjUxOGQxOTNhYjM5NTgxZWFkMWU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1
bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBmaW5hbDsKICAgICB2b2lkIHdp
bGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAg
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
ICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBm
aW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlci5jcHAKaW5kZXggNzFlMGNmNmM2ZGM3YmVhNTIyYzkwNjAwNTU1ZjU3MjE2MWMzYzJm
NC4uODE5NjYzMDIwYzY5NWNlMGM2YWJhOTk5YzY3NWFhYjQyODJjN2ZkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCkBAIC0x
NzQsMTAgKzE3NCwxMCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlcwogICAgICAgICBjYWxsYmFj
aygpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2spCi0gICAg
ICAgIG1fYm9keUNhbGxiYWNrKFdURk1vdmUoYnVmZmVyKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCk7CisgICAgICAgIG1fYm9keUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSwg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlci5oCmluZGV4IDFlNzhjMmNlZmExNTQ4NDEwNDA2MGYzYjE5ZGM1
MGU2Y2I4ZjFlYjQuLmVlMWJjOGI3ZDZjYmZmYzMzNDFkNjczZmI3MjQyMjM4ZjY3MTdmMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5o
CkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJG
b3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3
aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7
CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikg
ZmluYWw7CiAgICAgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
czsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5j
cHAKaW5kZXggOGVlMTEyYTlkZjgyODk1NGMxNjIzZmZmMjJjMmEyMGZkOGUyZmU3ZC4uN2EyNjIy
MTlkZTc4YjIzNWQxMjVhOTJiNmUyMzZkMzMyNjJmN2EyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAg
UmVzb3VyY2VFcnJvciBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6cHJvY2Vzc1Jlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG8KICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIFNlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsK
ICAgICBpZiAoIW1fZGVjb2RlcikgewogICAgICAgICBpZiAoIW1fcmVzcG9uc2VFbmNvZGluZy5p
c0VtcHR5KCkpCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwKICAg
ICB9CiAKICAgICBpZiAoYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2Ny
aXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPmRhdGEoKSwgc2l6ZSkpOworICAg
ICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIHNpemUpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJp
Y3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaApp
bmRleCAxOGY1NDY5MWYzN2MyYmFiYmM4YzFhM2JjMDk0MzcwZTliMjllYjcxLi40NGZjMDY4NWZh
MGZlZGM4NzQyMTkxNmU5MTNhNjc0YjFjMGZkYmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJl
Y3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkg
ZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggMDQ3NzY4MzZm
OTk5MDkzOTEwYjM5OWQ3NTUzODU1ZDVkM2YxZmY0ZS4uZGQzMDVhZjI5NzY2MWU0NzZjNDk2Nzdk
ZjU3MjFlZmQxZWM5MzJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgQ2FjaGU6
OmNvbXBsZXRlUmV0cmlldmUoUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIsIHN0
ZDo6dW5pcXVlX3B0CiAgICAgaGFuZGxlcihXVEZNb3ZlKGVudHJ5KSwgaW5mbyk7CiB9CiAgICAg
Ci1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjptYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEp
CitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjptYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVz
cG9uc2VEYXRhKQogewogICAgIHJldHVybiBtYWtlVW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXko
cmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKHJlc3BvbnNlRGF0YSksIFdlYkNvcmU6OmNvbGxl
Y3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbiht
X3Nlc3Npb25JRCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CkBAIC00NjQsNyArNDY0LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZVJlZGlyZWN0RW50cnkoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JgogICAgIHJldHVybiBtYWtlVW5pcXVlPEVudHJ5PihtYWtl
Q2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OmNv
bGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lv
bihtX3Nlc3Npb25JRCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxFbnRyeT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBGdW5jdGlvbjx2b2lkKE1hcHBl
ZEJvZHkmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3N0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2Fj
aGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZChNYXBwZWRC
b2R5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHJlc3BvbnNlRGF0YSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5oCmluZGV4IDE5OWYwY2ZiNzMyNTQzYzVmZWFmNGZlMjMwMWU2YTFjMTJmODhmZTguLmVkMDRl
YmNhMGIzNmYzZjljNGMwZTdiYWM3MTMzNmI5ZTk2YzM1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtNDMsNyArNDMsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTG93UG93ZXJNb2RlTm90aWZpZXI7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE2Niw3ICsxNjYsNyBA
QCBwdWJsaWM6CiAgICAgfTsKICAgICB1c2luZyBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyID0g
RnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+LCBjb25zdCBSZXRyaWV2ZUluZm8m
KT47CiAgICAgdm9pZCByZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBHbG9iYWxGcmFtZUlEJiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbj4sIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PEVudHJ5PiBzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwg
RnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgPSBudWxscHRyKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgPSBudWxscHRyKTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBzdGQ6Om9wdGlvbmFs
PFNlY29uZHM+IG1heEFnZUNhcCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiB1cGRhdGUo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgRW50cnkmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiB2YWxpZGF0aW5nUmVzcG9uc2UpOwogCkBAIC0xODUsNyAr
MTg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmV0cmlldmVEYXRhKGNvbnN0IERhdGFLZXkmLCBG
dW5jdGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPik7CiAgICAgdm9pZCBzdG9yZURh
dGEoY29uc3QgRGF0YUtleSYsICBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOwogICAgIAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IG1ha2VF
bnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbWFrZVJlZGlyZWN0RW50cnkoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KTsKIAogICAg
IHZvaWQgZHVtcENvbnRlbnRzVG9GaWxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCmluZGV4IGJhMzlkOWUy
YzI2YTAxYTkyNmIxMWFhNzk5ZTM2NjJmYzZhZTA1NDkuLjc2MTA3OGRlYTA5M2MwNDU1NWJlOThi
MDUxNzNlMzQxNTA2N2E4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC0zNyw3ICszNyw3IEBACiBu
YW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogCi1FbnRyeTo6RW50
cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9y
PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpCitFbnRy
eTo6RW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVl
c3RIZWFkZXJzKQogICAgIDogbV9rZXkoa2V5KQogICAgICwgbV90aW1lU3RhbXAoV2FsbFRpbWU6
Om5vdygpKQogICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKQEAgLTEwMSw4ICsxMDEsMTAgQEAg
U3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAg
ICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwog
ICAgIERhdGEgYm9keTsKLSAgICBpZiAobV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IG1fYnVm
ZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICBpZiAobV9idWZmZXIpIHsKKyAg
ICAgICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYm9k
eSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U2hhcmVkQnVmZmVyKj4obV9idWZmZXIuZ2V0KCkp
LT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICB9CiAKICAgICByZXR1cm4geyBtX2tl
eSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CiB9CkBAIC0xOTQsNyArMTk2LDcg
QEAgdm9pZCBFbnRyeTo6aW5pdGlhbGl6ZUJ1ZmZlckZyb21TdG9yYWdlUmVjb3JkKCkgY29uc3QK
ICAgICBtX2J1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc291cmNlU3Rv
cmFnZVJlY29yZC5ib2R5LmRhdGEoKSwgbV9zb3VyY2VTdG9yYWdlUmVjb3JkLmJvZHkuc2l6ZSgp
KTsKIH0KIAotV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBFbnRyeTo6YnVmZmVyKCkgY29uc3QKK1dl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIEVudHJ5OjpidWZmZXIoKSBjb25zdAogewog
ICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIGluaXRpYWxpemVCdWZmZXJGcm9tU3RvcmFnZVJl
Y29yZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5oCmluZGV4IDk2OTE1YzM4MDFjMzdkZGFjM2U4ZTYwMzIxZjg4YzIy
MjljZDU5YTAuLjljMDQyMGQ0NGE4MTU4ZGZjNWIyMWNmMTg4MjA0Y2YzYTkxNmI0MmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50
cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmgKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw3ICs0
NCw3IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogY2xhc3MgRW50cnkgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1
ZXN0SGVhZGVycyk7CisgICAgRW50cnkoY29uc3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVh
ZGVycyk7CiAgICAgRW50cnkoY29uc3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBj
b25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVh
ZGVycyk7CiAgICAgZXhwbGljaXQgRW50cnkoY29uc3QgU3RvcmFnZTo6UmVjb3JkJik7CiAgICAg
RW50cnkoY29uc3QgRW50cnkmKTsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNwb25zZTsgfQogICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYg
dmFyeWluZ1JlcXVlc3RIZWFkZXJzKCkgY29uc3QgeyByZXR1cm4gbV92YXJ5aW5nUmVxdWVzdEhl
YWRlcnM7IH0KIAotICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3Q7Cisg
ICAgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3Q7CiAgICAg
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+JiByZWRpcmVjdFJl
cXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlZGlyZWN0UmVxdWVzdDsgfQogCiAjaWYgRU5BQkxF
KFNIQVJFQUJMRV9SRVNPVVJDRSkKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gbV92YXJ5aW5nUmVxdWVzdEhlYWRlcnM7CiAK
ICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gbV9yZWRpcmVjdFJl
cXVlc3Q7Ci0gICAgbXV0YWJsZSBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZl
cjsKKyAgICBtdXRhYmxlIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcjsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgIG11dGFibGUgU2hh
cmVhYmxlUmVzb3VyY2U6OkhhbmRsZSBtX3NoYXJlYWJsZVJlc291cmNlSGFuZGxlOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJm
ZDQwODAzMTA1NDY4MzUzNmVhMGRjODE5My4uN2IwYWRjNDBmMGIwYjY3MTQ3MWEyN2FiNTEzOTc2
NmQ0YjU1NTQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtMTA5
LDcgKzEwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAgICAgbV9yZXNwb25zZSA9IHJl
Y2VpdmVkUmVzcG9uc2U7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQotICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0g
bV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZAog
ICAgIGlmICh2YWxpZGF0aW9uU3VjY2VlZGVkICYmIG1fY2FjaGVFbnRyeSkKQEAgLTEyMCwxNyAr
MTIwLDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
UG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpCit2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5KTsKIAogICAgIGlmIChtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNl
IG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVm
ZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXpl
KQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+YXBwZW5kKGJ1ZmZlci5nZXQo
KSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+
c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiB9CiAKQEAgLTEzOSwxMCArMTM5LDEw
IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpCiAgICAgaWYgKG1fZGlkQ29tcGxldGUpCiAgICAgICAgIHJl
dHVybjsKICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7
Ci0gICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0
LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNvcHlSZWYoKSwgW10oYXV0byYg
bWFwcGVkQm9keSkgeyB9KTsKKyAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUo
bV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuZ2V0
KCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CiAgICAgICAgIC8vIENyZWF0ZSBhIHN5bnRo
ZXRpYyBjYWNoZSBlbnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4KICAgICAgICAgaWYgKCFtX2NhY2hl
RW50cnkgJiYgaXNTdGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZhdWx0KG1fcmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSkpCi0gICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50
cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFG
b3JDYWNoZSkpOworICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5
KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRh
a2UoKSk7CiAgICAgfQogCiAgICAgZGlkQ29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5oCmluZGV4IGMwZTFlMTRiMmFjNDYwMzU4ZjgxNDA3Y2Q3MGM0MDkwNTJhZjhlZmUu
LjFiODQzZGI3ZWMyNzBkYjlkYWI5ZThhMjVmMmE0OGE4ZWNhZTJhOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbExvYWRp
bmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCkBAIC03NSw3ICs3
NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9u
c2U7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXJlZERhdGFG
b3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNo
ZUVudHJ5OwogICAgIGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKaW5k
ZXggNWUyZTAyZTJmYmEwYjRhMGMwM2I1ZDNlNjZiOTdmN2JjY2M3OTU4Yi4uMzE5OWJmZjMxMWI2
YzNlZWZiZTk1MGI0NWU2YjBhOTZlMzI3NzdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCkBAIC0zMCw3ICszMCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QcmVmZXRjaENhY2hlOjpFbnRyeTo6RW50cnkoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK1ByZWZldGNoQ2FjaGU6OkVudHJ5OjpFbnRyeShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IHJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKSwg
YnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKIH0KQEAgLTcyLDcgKzcyLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFByZWZldGNoQ2FjaGU6OkVudHJ5PiBQcmVmZXRjaENhY2hlOjp0YWtlKGNvbnN0IFVS
TCYgdXJsKQogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyBleHBpcmF0aW9uVGltZW91dCB7IDVfcyB9
OwogCi12b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmUoY29uc3QgVVJMJiBy
ZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1f
c2Vzc2lvblByZWZldGNoZXMpCiAgICAgICAgIG1fc2Vzc2lvblByZWZldGNoZXMgPSBtYWtlVW5p
cXVlPFByZWZldGNoRW50cmllc01hcD4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKaW5kZXggYTI1MTUyMGIzMWVhYzkyMWMyMmQz
MTE1MWQ2ZDIzMWExYmVkMTM4Yy4uNTJjMGIxMGZjYzZkNWE2ZGUxMTQ0N2U3ZTRlODIyZGY4Zjg0
MWNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVm
ZXRjaENhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVm
ZXRjaENhY2hlLmgKQEAgLTQ3LDE4ICs0NywxOCBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgRW50
cnkgewogICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIEVu
dHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJik7CisgICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgICAgICBFbnRyeShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsK
IAotICAgICAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWxlYXNlQnVmZmVyKCkgeyBy
ZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7IH0KKyAgICAgICAgUmVmPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlbGVhc2VCdWZmZXIoKSB7IHJldHVybiBidWZmZXIucmVs
ZWFzZU5vbk51bGwoKTsgfQogCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2U7Ci0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAg
ICAgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAg
ICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlZGlyZWN0UmVxdWVzdDsKICAgICB9Owog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiB0YWtlKGNvbnN0IFVSTCYpOwotICAgIHZvaWQg
c3RvcmUoY29uc3QgVVJMJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIHN0b3JlKGNvbnN0IFVSTCYsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpOwogICAgIHZvaWQgc3RvcmVSZWRpcmVjdChjb25zdCBVUkwmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EuaAppbmRleCBiOWFiMGRlZWJiOWY5MjdjNzM3NDJlODZhMGJlN2Y5
NzE2MGJkNmZiLi40MTY2OGE1YjFjZDczODY5NjdiOGZkOTczZTk2NzMyZWNhOTA3ZWRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZE5l
Z290aWF0ZU1vZGVyblRMUyhjb25zdCBVUkwmKTsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXImJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24o
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
UmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIHRyYW5zZmVyU2FuZGJveEV4
dGVuc2lvblRvRG93bmxvYWQoRG93bmxvYWQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IGU3
ODBkNmMxYzNjZDFlYjJjMmZmNWEwYzU2NGEwZTRkODhiN2VhNWQuLjMwNTFmMTY5Y2IwYTM3MDk5
ODVhMTYxMTIyYzI1ZjBlOGYxN2JkOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtNDQyLDcg
KzQ0Miw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZENvbXBsZXRlV2l0aEVycm9y
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVyCiAgICAgICAgIG1fY2xpZW50LT5kaWRD
b21wbGV0ZVdpdGhFcnJvcihlcnJvciwgbmV0d29ya0xvYWRNZXRyaWNzKTsKIH0KIAotdm9pZCBO
ZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiBkYXRhKQordm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZURhdGEo
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBXVEZF
bWl0U2lnbnBvc3QobV90YXNrLmdldCgpLCAiRGF0YVRhc2siLCAicmVjZWl2ZWQgJXpkIGJ5dGVz
IiwgZGF0YS0+c2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCmluZGV4IDhmYzdiNjYzZTZmNzU2
MmIyYjM1NDg5Mzk4YTJmZTczMWJlMDc0ZjEuLjM3ZjI5NDE2NjQ2YzQ3ZTFkYTFmZDk5NDFjY2Fj
MDBiNWRjMGZkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3Vy
bC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lk
IE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3Qm
IHJlcXVlc3QsIEN1cmxSZXNwbwogICAgIGludm9rZURpZFJlY2VpdmVSZXNwb25zZSgpOwogfQog
Ci12b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1
ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIE5ldHdvcmtEYXRhVGFza0N1
cmw6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsK
ICAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IHN0YXRlKCkgPT0gU3RhdGU6
OkNvbXBsZXRlZCB8fCAoIW1fY2xpZW50ICYmICFpc0Rvd25sb2FkKCkpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgK
aW5kZXggMWM0MjdkZGI3OGQ2OTUzZmU4OTYwYzU2OTJhZmRlNGY0ZjBlZWU4NS4uNDViZTVjZTE4
NDMyNTI3MWQ1YzA4MGRkMzRmMWVlNGExNjY0MmExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCkBAIC02OCw3
ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmPFdlYkNvcmU6OkN1cmxSZXF1ZXN0PiBjcmVhdGVD
dXJsUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVxdWVzdFN0YXR1cyA9IFJl
cXVlc3RTdGF0dXM6Ok5ld1JlcXVlc3QpOwogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcp
IG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpDdXJs
UmVxdWVzdCYsIFdlYkNvcmU6OkN1cmxSZXNwb25zZSYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGN1
cmxEaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihX
ZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShXZWJDb3JlOjpDdXJsUmVx
dWVzdCYsIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYmKSBvdmVycmlkZTsKICAgICB2b2lk
IGN1cmxEaWRGYWlsV2l0aEVycm9yKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYmLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mJikgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQ
cm92aWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JU
Q1Byb3ZpZGVyLmgKaW5kZXggZjVkYjcwNmM0NDU4MDIxMDg3Zjk1OTk2NjlkZmE3ZDlmODM3OTc4
Yy4uMzNkNDNiNzIyMzhkMjAzZTdlZGVjOTQxNGNhZjlmZGE4ZjQwNTI2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3Zp
ZGVyLmgKQEAgLTU1LDcgKzU1LDcgQEAgc3RydWN0IFBhY2tldE9wdGlvbnM7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5
LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXgg
N2UwZDhkYmUxOTAyNTk5ZDAyYmMxMDhlNTYzYTZlM2RmMTgzMmU5Zi4uMTdmMDhjMjhlYTEyNWI1
NTA5OTNlZWQyNGQ1OTYzYjg1MTBhMTE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIEVuY29kZXMgYSBTaGFyZWRCdWZmZXIgdGhh
dCBpcyByZWNlaXZlZCBhcyBhIGNvcHkgb2YgdGhlIGRlY29kZWQgZGF0YSBpbiBhIG5ldyBTaGFy
ZWRCdWZmZXIuCisvLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB0aGF0IGlzIHJl
Y2VpdmVkIGFzIGEgY29weSBvZiB0aGUgZGVjb2RlZCBkYXRhIGluIGEgbmV3IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIuCiAvLyBUbyBhdm9pZCBjb3B5aW5nIGZyb20gdGhlIERlY29kZXIsIHVzZSBT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHRvIHJlY2VpdmUgYSBEYXRhUmVmZXJlbmNlIGluc3Rl
YWQuCiAKICNwcmFnbWEgb25jZQpAQCAtNDMsMTEgKzQzLDEyIEBAIHB1YmxpYzoKICAgICAgICAg
OiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RG
TW92ZShidWZmZXIpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCkpCi0gICAgewotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKGJ1ZmZlcik7
Ci0gICAgfQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+KCkpIHsg
fQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KSkgeyB9CisgICAgU2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLm1ha2VDb250aWd1
b3VzKCkpIHsgfQogCiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigp
IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmggYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKaW5k
ZXggZDNkMGVjNWU5Nzg1NTk5YjYzNGE4NGM2YzQ0NzFiNTJjZDIyMTNmMS4uNjdlYzhlNWU5MmJk
MDI0MTE1ZGIwZDQwODBhMjRmZTczNTcwZDNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaApAQCAtMjMsNyArMjMs
NyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIEVuY29k
ZXMgYSBTaGFyZWRCdWZmZXIgb3IgRGF0YVJlZmVyZW5jZSB0aGF0IGlzIHJlY2VpdmVkIGFzIGEg
RGF0YVJlZmVyZW5jZSB0byB0aGUgZGVjb2RlZCBkYXRhLgorLy8gRW5jb2RlcyBhIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIgb3IgRGF0YVJlZmVyZW5jZSB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgRGF0
YVJlZmVyZW5jZSB0byB0aGUgZGVjb2RlZCBkYXRhLgogCiAjcHJhZ21hIG9uY2UKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCmluZGV4IGQyNDA2ZWUyOTA1MzExZjY5Yjc1
ODQyMWU3N2EzZTY2Y2JhMjdiNjUuLmMwMjZmNTQ5NTY5YjJiZTAwNzhhZTMyNWQwNTM5ZTA3MWFm
MTEwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKQEAgLTMyLDcg
KzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Ci1SZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNv
cHlCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlm
IChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUxLDcgKzUx
LDcgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5Ojpj
cmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAogewogICAgIEFTU0VSVChk
YXRhU2l6ZSA8PSBzaXplKCkpOwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh7Cisg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAg
ICAgICAgIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgLT4gY29uc3QgdWludDhf
dCogewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihwcm90
ZWN0ZWRUaGlzLT5kYXRhKCkpOwogICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVk
TWVtb3J5LmgKaW5kZXggZTM3MWJjZDczMDJjZjg1ZWJhYjJiNWE4NWU3YmU0OWRjZjU2NTJhYi4u
MWI0ZmRmYWY2ODM4OWRjZTcyOGZmMzRlNWU1ZjAxMmUyNDNmYTJjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIEVuY29kZXI7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiB9CiAKICNpZiBPUyhEQVJXSU4pCkBAIC0xMjAsNyArMTIxLDcgQEAg
cHVibGljOgogCiAgICAgLy8gRklYTUU6IENoYW5nZSB0aGVzZSBmYWN0b3J5IGZ1bmN0aW9ucyB0
byByZXR1cm4gUmVmPFNoYXJlZE1lbW9yeT4gYW5kIGNyYXNoIG9uIGZhaWx1cmUuCiAgICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGFsbG9jYXRlKHNpemVfdCk7Ci0gICAgc3RhdGljIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IGNvcHlCdWZmZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
Jik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGNvcHlCdWZmZXIoY29uc3QgV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVk
TWVtb3J5PiBtYXAoY29uc3QgSGFuZGxlJiwgUHJvdGVjdGlvbik7CiAjaWYgVVNFKFVOSVhfRE9N
QUlOX1NPQ0tFVFMpCiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHdyYXBNYXAodm9p
ZCosIHNpemVfdCwgaW50IGZpbGVEZXNjcmlwdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQppbmRleCBjYTBjMjRiMjc3MzU0NzY3NmUzNDgwMWM3
OWExZDU2NWJmOTVmZTVkLi4xMTBlMGFkZGU1NThhOWQ5MzM4YjI0NTA2ZTg5MTYzYzkzNjk3MTk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2Uu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCkBA
IC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRh
KHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogCiBSZWY8QVBJOjpEYXRhPiBXZWJB
cmNoaXZlUmVzb3VyY2U6OmRhdGEoKQogewotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0
YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlQ0ZEYXRhKCk7CisgICAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKIAogICAgIC8vIEJhbGFuY2VkIGJ5IENGUmVsZWFz
ZSBpbiByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YS4KICAgICBDRlJldGFpbihjZkRhdGEu
Z2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCA4N2Y0ZWIxZWJhMjg3MmUwY2IwYWI5NTkxNmFm
ZWRlMjlmY2JhMjQ0Li4zYzFiNTdkNWFhMjZlYzcyZTYwYjVkNzhhMTFlOWZkODUyY2ZmZWM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1l
bnRDb2RlcnNDb2NvYS5tbQpAQCAtNTY0LDEzICs1NjQsMTIgQEAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46
OmRlY28KICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgqaW5jbHVkZXND
cmVhdGlvbkRhdGEpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj4gZm9udEZhY2VEYXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBkZWNvZGVy
ID4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIC8vIFVwb24gcmVjZWlwdCwgY29weSB0
aGUgZGF0YSBmb3Igc2VjdXJpdHksIHNvIHRoZSBzZW5kZXIgY2FuJ3Qgc2NyaWJibGUgb3ZlciBp
dCB3aGlsZSB3ZSdyZSB1c2luZyBpdC4KLSAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5kYXRh
KCksIGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5zaXplKCkpOworICAgICAgICBhdXRvIGxvY2FsRm9u
dEZhY2VEYXRhID0gZm9udEZhY2VEYXRhLnZhbHVlKCktPm1ha2VDb250aWd1b3VzKCk7CiAKICAg
ICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGRl
Y29kZXIgPj4gaXRlbUluQ29sbGVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmNwcAppbmRleCBjNjk2MWM3MTQ0MDJiZjM3N2FlOTEwZmJiNmNjYWE1MmQzYjg0
MTI4Li42ZmEwMmE3YmMzZWU1NGFlNmQzMjUzODEwZDc4ZGVjMzE2NTM1M2RiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIGJv
b2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgSGFuZGxlJiBoYW5kbGUpCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291
cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWxm
ID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5kYXRhKCk7IH0sCiAgICAgICAgIFtz
ZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5zaXplKCk7IH0KICAgICB9KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4
IDY0OTgyYmM0ODEwMmE0YWRiMjBhN2U2MGUyMWJkNDkyZDY1MzM3NGMuLjg0M2ZkNDczMTNhZWVj
YTI5OTMwNjEyZmM1ZWM1Nzg3NTU0MzQyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIERFRklORV9TSU1Q
TEVfQVJHVU1FTlRfQ09ERVJfRk9SX1NPVVJDRShEaXNwbGF5TGlzdDo6U2V0SW5saW5lU3Ryb2tl
Q29sb3IpCiAKICN1bmRlZiBERUZJTkVfU0lNUExFX0FSR1VNRU5UX0NPREVSX0ZPUl9TT1VSQ0UK
IAotc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsK
ICAgICBib29sIGlzTnVsbCA9ICFidWZmZXI7CiAgICAgZW5jb2RlciA8PCBpc051bGw7CkBAIC0x
NzcsNyArMTc3LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICNp
ZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICAvLyBEbyBub3QgdXNlIHNoYXJlZCBtZW1v
cnkgZm9yIFNoYXJlZEJ1ZmZlciBlbmNvZGluZyBpbiBVbml4LCBiZWNhdXNlIGl0J3MgZWFzeSB0
byByZWFjaCB0aGUKKyAgICAvLyBEbyBub3QgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIgZW5jb2RpbmcgaW4gVW5peCwgYmVjYXVzZSBpdCdzIGVhc3kgdG8gcmVh
Y2ggdGhlCiAgICAgLy8gbWF4aW11bSBudW1iZXIgb2YgZmlsZSBkZXNjcmlwdG9ycyBvcGVuIHBl
ciBwcm9jZXNzIHdoZW4gc2VuZGluZyBsYXJnZSBkYXRhIGluIHNtYWxsIGNodW5rcwogICAgIC8v
IG92ZXIgdGhlIElQQy4gQ29ubmVjdGlvblVuaXguY3BwIGFscmVhZHkgdXNlcyBzaGFyZWQgbWVt
b3J5IHRvIHNlbmQgYW55IElQQyBtZXNzYWdlIHRoYXQgaXMKICAgICAvLyB0b28gbGFyZ2UuIFNl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NTcxLgpAQCAtMjY0
LDcgKzI2NCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0Fu
ZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluCiAgICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rl
ciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZGF0YS5hcHBl
bmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICB9
CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE1NTAsMTAgKzE1NTAsMTAgQEAgdm9pZCBBcmd1bWVu
dENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdAogICAgIGlmIChoYXNTdHJpbmcpCiAgICAgICAgIGVuY29kZXIgPDwgc3RkOjpn
ZXQ8U3RyaW5nPihwbGF0Zm9ybURhdGEpOwogCi0gICAgYm9vbCBoYXNCdWZmZXIgPSBzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpOworICAgIGJv
b2wgaGFzQnVmZmVyID0gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSk7CiAgICAgZW5jb2RlciA8PCBoYXNCdWZmZXI7CiAgICAg
aWYgKGhhc0J1ZmZlcikKLSAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIHN0ZDo6
Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpLnB0cigpKTsKKyAgICAgICAgZW5j
b2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4ocGxhdGZvcm1EYXRhKS5wdHIoKSk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGVi
b2FyZEN1c3RvbURhdGE6OkVudHJ5JiBkYXRhKQpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgc3RkOjpv
cHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoaWRlbnRpZmll
ciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpIH19OworICAgIHJldHVybiB7IHsgV1RGTW92ZShpZGVudGlm
aWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKQEAgLTMwMTAsNiArMzAxMCwzNCBAQCBzdGQ6Om9wdGlvbmFsPFNlcmlh
bGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxp
emVkUAogfQogI2VuZGlmCiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5j
b2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7Cit9CisKK3N0ZDo6b3B0aW9u
YWw8UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNo
YXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAg
ICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKK30KKworc3RkOjpv
cHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
Cit7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hh
cmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwog
dm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpCiB7CiAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7
CkBAIC0zMTA3LDcgKzMxMzUsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZQogewogICAgIGVu
Y29kZXIgPDwgbWVzc2FnZS5maXJzdDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1lc3Nh
Z2VEYXRhID0gbWVzc2FnZS5zZWNvbmQuY29weVJlZigpOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlSZWYoKTsKICAg
ICBlbmNvZGVyIDw8IG1lc3NhZ2VEYXRhOwogfQogCkBAIC0zMTE3LDcgKzMxNDUsNyBAQCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gIEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6Q0RNSQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAppbmRleCAyNWYwMWMwMjkyYTAxOWYwNjc2MjRiYmI1NTM0MDJkZjFhMzNjNWI2Li42ZmFjMmFh
MWVhNzg0NmZmNmJmODkwMjFmMGY1MmU5YWE3YWUwM2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTE0LDYgKzExNCw3IEBAIGNsYXNzIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBDZXJ0aWZpY2F0
ZUluZm87CiBjbGFzcyBDb2xvcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIENyZWRlbnRp
YWw7CiBjbGFzcyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOwogY2xhc3MgQ3Vyc29yOwpAQCAt
MTM4LDcgKzEzOSw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CiBjbGFzcyBTY3JpcHRCdWZmZXI7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTcHJp
bmdUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIFN0ZXBzVGltaW5nRnVuY3Rpb247CiBjbGFzcyBTdGlj
a3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7CkBAIC03NTEsNiArNzUyLDE2IEBAIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0
YUN1ZVZhbHVlPiB7CiB9OwogI2VuZGlmCiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwor
fTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAppbmRleCBjZjJlNGQ1Zjkz
ZmQyZDk0NmJhYmZmOTNlZWEzZTllODYwYWViYmY0Li5iNjA3YWNlODM4ZTA0YmNlMWE2YWVlNGRh
NTY1NTllMDk2OTgzOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRU
ZXN0UmVzdWx0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJl
c3VsdERhdGEuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJI
aXRUZXN0UmVzdWx0RGF0YShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoaXRUZXN0CiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChJbWFnZSogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0Lmlt
YWdlKCkpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRh
dGEoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGlt
YWdlLT5kYXRhKCk7CiAgICAgICAgIGlmIChidWZmZXIpIHsKICAgICAgICAgICAgIGltYWdlU2hh
cmVkTWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CiAg
ICAgICAgICAgICBpbWFnZVNpemUgPSBidWZmZXItPnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4IDI1YTMwN2YzODI5ZTkyNzhi
NWVhNzhmZjgyOTY3ODgzMzc3YTMxYmEuLjY3MTc1OGEyODBhNWU0NDBhYTA2MGE3OWNmMWYwZjEy
NmRiN2JlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENv
ZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJz
R3RrLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0
YT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTZWxlY3Rpb25EYXRhJgogICAgIGJv
b2wgaGFzQ3VzdG9tRGF0YSA9IHNlbGVjdGlvbi5oYXNDdXN0b21EYXRhKCk7CiAgICAgZW5jb2Rl
ciA8PCBoYXNDdXN0b21EYXRhOwogICAgIGlmIChoYXNDdXN0b21EYXRhKQotICAgICAgICBlbmNv
ZGVyIDw8IFJlZlB0cjxTaGFyZWRCdWZmZXI+KHNlbGVjdGlvbi5jdXN0b21EYXRhKCkpOworICAg
ICAgICBlbmNvZGVyIDw8IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihzZWxlY3Rpb24u
Y3VzdG9tRGF0YSgpKTsKIAogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlID0gc2VsZWN0aW9uLmNh
blNtYXJ0UmVwbGFjZSgpOwogICAgIGVuY29kZXIgPDwgY2FuU21hcnRSZXBsYWNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IGIzNGVjNzM2
MzYzYzRmMWQyYjBlNzYwYWQzZjRhOWQ1YmFjMWEzNGUuLjE0OTBjNTExYmRjMzhiZDhhYjRhNjk1
YWVjZjMwNmQ5NWZhYTM5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
QXR0YWNobWVudC5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
QXR0YWNobWVudDo6ZmlsZVNpemVGb3JEaXNwbGF5KCkgY29uc3QKICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50Ojpl
bmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFj
aG1lbnQuaAppbmRleCBhZmE5MjljZjA5M2QyMmVjNzZhZDg2ZmRhMDNiNTAxYmJmZDI5ZGMzLi5m
ZTUwZTUzOGI4ZWJiMzUxYTQ4MzZkMWRkODkzZDE0N2E1NmE4NzdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTM5LDYgKzM5LDcgQEAgT0JKQ19D
TEFTUyBOU1N0cmluZzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC04Miw3ICs4Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0Owog
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZW5jbG9zaW5nSW1hZ2VEYXRhKCkg
Y29uc3Q7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY2xv
c2luZ0ltYWdlRGF0YSgpIGNvbnN0OwogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVT
aXplRm9yRGlzcGxheSgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShi
b29sIGhhc0VuY2xvc2luZ0ltYWdlKSB7IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3Np
bmdJbWFnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29u
dGVudFJ1bGVMaXN0U3RvcmUuaAppbmRleCA3ZmMwNTQ1N2U2NGNmNTg5YjBmYjBlN2UwMzZmNjkw
ZmEyYzE3YmFjLi40ZTI2NmYzNjdhYzYwMmI4ZWYxZWFmNzU3YTBhMDRkYzczZjc3MWFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0
U3RvcmUuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCmluZGV4IDU2MjM0MDE0
NTlkYTVmZTMwZjQ5MWE0MWZiMzQ3YTY3NTcyMDJjNDAuLjExMWYwOTI2M2Y4MjIzODI5YTVhZDI2
NDQzNGJhNDIwZjE5OGRkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb25DbGllbnQuaApAQCAtNDcsNyArNDcsNyBAQCBzdHJ1Y3QgQ29udGVudFJ1
bGVMaXN0UmVzdWx0czsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiB9CiAK
QEAgLTExOSw3ICsxMTksNyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2
aXJ0dWFsIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShj
b25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5G
cmFtZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIHsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZv
aWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IFJlZjxOYXZpZ2F0aW9uQWN0aW9uPiYmLCBSZWY8V2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHk+JiYgbGlzdGVuZXIsIE9iamVjdCopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQppbmRleCBjZjQ2MjE2
Y2EyNWE5ZWRmODJlMzE5YTMzMDMwNzkxZThkNGUxNTNjLi5kZmVmM2UwNzBmOTYxNjMwNDk3MTQ0
ZGFmM2YzMDBjYjRjYTUxOTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KQEAgLTEzNyw3ICsxMzcsNyBAQCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBBdHRhY2htZW50OjpmaWxlU2l6ZUZvckRpc3BsYXkoKSBj
b25zdAogICAgIHJldHVybiBbZmlsZVdyYXBwZXIgcmVndWxhckZpbGVDb250ZW50c10ubGVuZ3Ro
OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3Np
bmdJbWFnZURhdGEoKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2hhc0VuY2xvc2luZ0ltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGM0ZWU1MjUwNzY0
MmRiNGU1NGNmYWRmN2ZlZTNiZjFiN2MwZDNkM2MuLjAxYzgxMDI3OGVmNjM1OTE3MmY4ZTY1YjUy
Y2ZjYjBiNTIxYjdkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQpAQCAtMTU5Niw3ICsxNTk2LDcgQEAgLSAodm9pZClfc3RvcmVBcHBIaWdo
bGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpaGlnaGxpZ2h0CiAgICAgaWYgKGhp
Z2hsaWdodC50ZXh0KQogICAgICAgICB0ZXh0ID0gaGlnaGxpZ2h0LnRleHQudmFsdWUoKTsKIAot
ICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBp
bml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CisgICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMo
W1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdo
bGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIHRleHQ6dGV4dCBp
bWFnZTpuaWxdKTsKIAogICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcihfd2ViVmlldzpzdG9yZUFwcEhpZ2hsaWdodDppbk5ld0dyb3VwOnJlcXVlc3RPcmlnaW5h
dGVkSW5BcHA6KV0pCiAgICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIHN0b3JlQXBwSGln
aGxpZ2h0OndrSGlnaGxpZ2h0LmdldCgpIGluTmV3R3JvdXA6aGlnaGxpZ2h0LmlzTmV3R3JvdXAg
PT0gV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6OlllcyByZXF1ZXN0T3JpZ2lu
YXRlZEluQXBwOmhpZ2hsaWdodC5yZXF1ZXN0T3JpZ2luYXRlZEluQXBwID09IFdlYkNvcmU6Okhp
Z2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6Olllc107CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCmluZGV4IGFjNGEwZjQzNzAxNTJlZDU3
MmI1MDkxZGZhNTFiYWViYWI4N2Y0ZTkuLmM4MDI5YzE0MGE2ZGQxNGIxOTY0OTIyNWI4NzgzMGVl
YzEzNDAwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShRVUlDS19M
T09LKQogICAgICAgICB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRp
KSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAg
ICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShj
b25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCAzODU1ODgyYzg3ZGM5ZWQzMWMxZWYwYmFiNjE2YjFl
NjQ1OTQ0ZWVmLi44ZDNhODU2NDYyZWFlZjc0MWQ4YzI5ZTI1OTJmZDU3MzY2ZjU5OWM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBA
IC0xMjIwLDcgKzEyMjAsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVu
dDo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcgogICAgIFtzdGF0aWNf
Y2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRl
LmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZFN0YXJ0TG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVXaXRoRmlsZU5hbWU6ZmlsZU5hbWUgdXRp
OnV0aV07CiB9CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRG
aW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRG
aW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6
Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkYKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
W3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9u
RGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlk
RmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLmNyZWF0ZU5T
RGF0YSgpLmdldCgpXTsKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRl
UHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9u
U3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5G
cmFtZTpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggODAyZmZhYTZkNmVkYmVhMmU5NzI3NzRlMjY5NjViMmRi
YjJhNzM1ZS4uNjgzMzczZWFlMDBmNWRiNDJiODE0NmNlOWQ1MzFiYzhhYzBhNTRjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29j
b2EubW0KQEAgLTMwMiwxMiArMzAyLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kQXVk
aW9Db21wb25lbnRSZWdpc3RyYXRpb25zKCkKICAgICAgICAgaWYgKG5vRXJyICE9IEF1ZGlvQ29t
cG9uZW50RmV0Y2hTZXJ2ZXJSZWdpc3RyYXRpb25zKCZyZWdpc3RyYXRpb25zKSB8fCAhcmVnaXN0
cmF0aW9ucykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHJlZ2lzdHJhdGlvbnMgPSBh
ZG9wdENGKHJlZ2lzdHJhdGlvbnMpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCByZWdpc3RyYXRpb25z
ID0gYWRvcHRDRihyZWdpc3RyYXRpb25zKV0gKCkgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0
aW9uRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlvbnMuZ2V0
KCkpOwotICAgICAgICAgICAgd2Vha1RoaXMtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNv
bnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoeyByZWdpc3RyYXRpb25EYXRhIH0pLCAw
KTsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25z
dW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKHsgV1RGTW92ZShyZWdpc3RyYXRpb25EYXRh
KSB9KSwgMCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKaW5kZXggM2Y2ZGQxZjI0MmU3YTExNWVjZjc5ODM5MGYz
NGI2MzVjNmU4ZDZmOS4uZjU4OTEyNDE3MDJkYWE0MjBjYzRlNmUyNDYyOGExY2RlODkwN2QyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBAIC01MDYs
NyArNTA2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdGFydERyYWcoY29uc3QgV2ViQ29yZTo6
RHJhZ0l0ZW0mLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2UpOwogICAgIHZv
aWQgc2V0RmlsZUFuZFVSTFR5cGVzKE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVu
c2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJsZVVS
TCwgTlNQYXN0ZWJvYXJkICopOwotICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2Vi
Q29yZTo6SW1hZ2UqLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5T
U3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciogYXJjaGl2ZUJ1ZmZlciwgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1l
LCBOU1N0cmluZyAqcGFzdGVib2FyZE9yaWdpbik7CisgICAgdm9pZCBzZXRQcm9taXNlZERhdGFG
b3JJbWFnZShXZWJDb3JlOjpJbWFnZSosIE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4
dGVuc2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJs
ZVVSTCwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYXJjaGl2ZUJ1ZmZlciwgTlNT
dHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU1N0cmluZyAqcGFzdGVib2FyZE9yaWdpbik7CiAgICAg
dm9pZCBwYXN0ZWJvYXJkQ2hhbmdlZE93bmVyKE5TUGFzdGVib2FyZCAqKTsKICAgICB2b2lkIHBy
b3ZpZGVEYXRhRm9yUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKiwgTlNTdHJpbmcgKnR5cGUpOwog
ICAgIE5TQXJyYXkgKm5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNV
UkwgKmRyb3BEZXN0aW5hdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCmluZGV4IDNkOWU4NzdiMGNiNzU2NTRiNjM5MTYzOTU1N2Y1MmI2MDM5MmNh
YzkuLjYyMzY3ZGM1YWQxZmUxMjIxZjdiMDk5ZTliYjQ0NTRkYjM3YTU4ZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC00NDQ5LDcgKzQ0NDks
NyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRGaWxlQW5kVVJMVHlwZXMoTlNTdHJpbmcgKmZpbGVu
YW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOUwogICAgIG1fcHJvbWlzZWRVUkwgPSB1cmw7CiB9
CiAKLXZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6Oklt
YWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0
cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwg
TlNTdHJpbmcgKm9yaWdpbklkZW50aWZpZXIpCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNl
ZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbmFtZSwg
TlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0
cmluZyAqdmlzaWJsZVVSTCwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYXJjaGl2
ZUJ1ZmZlciwgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU1N0cmluZyAqb3JpZ2luSWRlbnRp
ZmllcikKIHsKICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBh
c3RlYm9hcmRXaXRoTmFtZTpwYXN0ZWJvYXJkTmFtZV07CiAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PiB0eXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhP
YmplY3RzOldlYkNvcmU6OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCksIG5pbF0p
OwpAQCAtNDQ3MCw3ICs0NDcwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRh
Rm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW4KICAgICBzZXRG
aWxlQW5kVVJMVHlwZXMoZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVybCwgdmlzaWJsZVVS
TCwgcGFzdGVib2FyZCk7CiAKICAgICBpZiAoYXJjaGl2ZUJ1ZmZlcikgewotICAgICAgICBhdXRv
IG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5z
RGF0YSA9IGFyY2hpdmVCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgW3Bhc3RlYm9hcmQg
c2V0RGF0YTpuc0RhdGEuZ2V0KCkgZm9yVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBl
V2ViQXJjaGl2ZV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKQEAgLTQ1MDEs
NyArNDUwMSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByb3ZpZGVEYXRhRm9yUGFzdGVib2FyZChO
U1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TU3RyaW5nICp0CiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChbdHlwZSBpc0VxdWFsOm1fcHJvbWlzZWRJbWFnZS0+dXRpKCldICYmIG1fcHJvbWlz
ZWRJbWFnZS0+ZGF0YSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJv
bWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1dG8gcGxh
dGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTooX19icmlkZ2Ug
TlNEYXRhICopcGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6dHlwZV07CiAgICAgfQogCkBAIC00
NTU0LDcgKzQ1NTQsNyBAQCBOU0FycmF5ICpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmls
ZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3RpbgogICAgIFJldGFpblB0cjxO
U0RhdGE+IGRhdGE7CiAKICAgICBpZiAobV9wcm9taXNlZEltYWdlKSB7Ci0gICAgICAgIGRhdGEg
PSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGRhdGEg
PSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCk7CiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5p
dFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRhdGEuZ2V0KCldKTsKICAgICB9IGVsc2UKICAgICAg
ICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0V2l0aFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzptX3Byb21pc2VkVVJMXSBvcHRpb25zOk5TRmlsZVdyYXBwZXJS
ZWFkaW5nSW1tZWRpYXRlIGVycm9yOm5pbF0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCmluZGV4IGM0ODVjN2ZjMzEzZWEwODMzZmM2MDYyNjcxNjlkNjkyYTgyNDA5MjguLmI0NjJk
OGRiNWNjNjIwMzg2ZTc2ODNkYjI0ODM2YWIzY2U2NGZlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKQEAgLTMyOCw3ICszMjgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lm
IFVTRShBUFBLSVQpCi0gICAgdmlydHVhbCB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
aW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5z
aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZm
ZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYg
dGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0
IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIFdl
YkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDVh
ODMyZTU1YWNiYTE4OWIzOWI5ZTg5N2NjMWNhMThiN2I0ODQ1NTUuLmU1ZWFmNDFmMzhiNjQ3YmM1
ZjM3M2RiMDc5ZGViNDE2YWE5NjNkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC0yNTksNyArMjU5LDcgQEAgY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFByb3RlY3Rp
b25TcGFjZTsKIGNsYXNzIFJ1bkxvb3BPYnNlcnZlcjsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3Mg
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OwogY2xhc3MgVGV4dEluZGljYXRvcjsKIGNsYXNzIFZh
bGlkYXRpb25CdWJibGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suY3BwCmluZGV4IGRmNTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFkODBjMTZiZDEuLjE5
OTdlYWUyMGFjMjJjYTNhZTgwMDRjNzA0ZmEyMmRhNjA5ZTAwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC01MSw2ICs1MSw3IEBAIFdlYlVS
TFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFuZGxl
ciwgV2ViUGFnZVByb3h5JiBwCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShwYXJhbWV0ZXJzLnJl
cXVlc3QpKQogICAgICwgbV9mcmFtZUluZm8oQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3Zl
KHBhcmFtZXRlcnMuZnJhbWVJbmZvKSwgJnBhZ2UpKQogICAgICwgbV9zeW5jQ29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShzeW5jQ29tcGxldGlvbkhhbmRsZXIpKQorICAgICwgbV9zeW5jRGF0YSht
YWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKIH0KQEAgLTE2OCw3ICsxNjksNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRh
c2s6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkg
LT4gRQogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogfQogCi1hdXRvIFdlYlVSTFNj
aGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBF
eGNlcHRpb25UeXBlCithdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHlwZQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTE4NywxMCArMTg4LDcgQEAgYXV0byBX
ZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikgLT4gRXhjZXB0aW9uVHkKICAgICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5
bmMoKSkgewotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIG1fc3luY0RhdGEt
PmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3N5
bmNEYXRhID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAg
fQogCkBAIC0yMTcsMTIgKzIxNSw5IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxl
dGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBtX2Nv
bXBsZXRlZCA9IHRydWU7CiAgICAgCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZlY3Rv
cjx1aW50OF90PiBkYXRhOwotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRh
dGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07Ci0KKyAgICAg
ICAgc2l6ZV90IHNpemUgPSBtX3N5bmNEYXRhLT5zaXplKCk7CisgICAgICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhID0geyBtX3N5bmNEYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgc2l6ZSB9OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25z
ZSwgZXJyb3IsIFdURk1vdmUoZGF0YSkpOwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsK
ICAgICB9CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVt
ZVRhc2tEaWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNv
dXJjZUxvYWRlcklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2RkMGE0
N2YyYzEzMDg1MjY3Li43OTk0MmY5YjIwYTI2NjBjYTRhN2RjZDQ1MDE4ZDE2ZTQzYjY2NmY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0zNSw2ICsz
NSw3IEBACiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAK
IG5hbWVzcGFjZSBBUEkgewogY2xhc3MgRnJhbWVJbmZvOwpAQCAtNDMsNyArNDQsOCBAQCBjbGFz
cyBGcmFtZUluZm87CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwog
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTg0LDcgKzg2LDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvblR5
cGUgd2lsbFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCAgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJik+JiYpOwogICAgIEV4Y2VwdGlvblR5cGUgZGlkUGVyZm9ybVJlZGlyZWN0aW9u
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
OwogICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKTsKLSAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVEYXRhKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZURh
dGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIEV4Y2VwdGlv
blR5cGUgZGlkQ29tcGxldGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAgICAg
dm9pZCBzdG9wKCk7CkBAIC0xMTUsNyArMTE3LDcgQEAgcHJpdmF0ZToKIAogICAgIFN5bmNMb2Fk
Q29tcGxldGlvbkhhbmRsZXIgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSBtX3N5bmNSZXNwb25zZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBtX3N5bmNEYXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXJCdWlsZGVyPiBtX3N5bmNEYXRhOwogCiAgICAgYm9vbCBtX3dhaXRpbmdGb3JSZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyQ2FsbGJhY2sgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9DbGlwYm9hcmQuaAppbmRleCA3ODY2Y2RiMTc3NDYwMDdhYjBhN2ExN2M1NWI4N2M3
ZjE2NGMyYmFlLi43Mjc5Zjg0NGNjMmJiZDJiMDE3ZmUwZjA5N2RlMDE4NzBhOWE4NTIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oCkBAIC0zNiw3ICszNiw3IEBAIHR5
cGVkZWYgc3RydWN0IF9HdGtDbGlwYm9hcmQgR3RrQ2xpcGJvYXJkOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NSw3
ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvcm1hdHMoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CiAgICAgdm9pZCByZWFkVGV4dChDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CiAgICAgdm9pZCByZWFkRmlsZVBhdGhzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwotICAgIHZvaWQgcmVhZEJ1ZmZl
cihjb25zdCBjaGFyKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKT4mJik7CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IGNoYXIqLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4m
Jik7CiAgICAgdm9pZCB3cml0ZShXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYpOwogICAgIHZvaWQg
Y2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBi
b2FyZEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMu
Y3BwCmluZGV4IGMyYmY1MTgzYjMwZjEwZTllYjc4MTNjZGFkYTIyM2U5MTg5Yzc0NTkuLjU5NjZk
NTU3NGMyODJmNTMxNjk0MDk2MDgyOTYwYWUzMzljYTExMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKQEAgLTEyNiwxNSArMTI2LDE1IEBAIHZv
aWQgQ2xpcGJvYXJkOjpyZWFkRmlsZVBhdGhzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFN0cmluZz4mJik+JiYgY29tcGxlCiBzdHJ1Y3QgUmVhZEJ1ZmZlckFzeW5jRGF0YSB7CiAgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgZXhwbGljaXQgUmVhZEJ1ZmZl
ckFzeW5jRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpPiYmIGhhbmRsZXIpCisgICAgZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5jRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KT4mJiBoYW5kbGVyKQogICAgICAgICA6IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxl
cikpCiAgICAgewogICAgIH0KIAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5kbGVyOworICAgIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiBjb21w
bGV0aW9uSGFuZGxlcjsKIH07CiAKLXZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0IGNo
YXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVy
KGNvbnN0IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
Z3RrX2NsaXBib2FyZF9yZXF1ZXN0X2NvbnRlbnRzKG1fY2xpcGJvYXJkLCBnZGtfYXRvbV9pbnRl
cm4oZm9ybWF0LCBUUlVFKSwgW10oR3RrQ2xpcGJvYXJkKiwgR3RrU2VsZWN0aW9uRGF0YSogc2Vs
ZWN0aW9uLCBncG9pbnRlciB1c2VyRGF0YSkgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVh
ZEJ1ZmZlckFzeW5jRGF0YT4gZGF0YShzdGF0aWNfY2FzdDxSZWFkQnVmZmVyQXN5bmNEYXRhKj4o
dXNlckRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlw
Ym9hcmRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0
LmNwcAppbmRleCAwN2FiYjcxMzE5ODg1M2I3ODdjNjMyNGJkNDgwYjFlMDg4YTJhM2QzLi41Yjgx
ZmE4ZjI5ZDNmN2NmMWMzZjA5ZDFmYzNjODg3MzRkYzUxYTBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCkBAIC0xMjAsMTUgKzEyMCwxNSBAQCB2
b2lkIENsaXBib2FyZDo6cmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxTdHJpbmc+JiYpPiYmIGNvbXBsZQogc3RydWN0IFJlYWRCdWZmZXJBc3luY0RhdGEgewogICAg
IFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGV4cGxpY2l0IFJlYWRCdWZm
ZXJBc3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKT4mJiBoYW5kbGVyKQorICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJBc3luY0RhdGEoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jik+JiYgaGFuZGxlcikKICAgICAgICAgOiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRs
ZXIpKQogICAgIHsKICAgICB9CiAKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKKyAgICBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4gY29t
cGxldGlvbkhhbmRsZXI7CiB9OwogCi12b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25zdCBj
aGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZl
cihjb25zdCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGNvbnN0IGNoYXIqIG1pbWVUeXBlc1tdID0geyBmb3JtYXQsIG51bGxwdHIgfTsKICAgICBnZGtf
Y2xpcGJvYXJkX3JlYWRfYXN5bmMobV9jbGlwYm9hcmQsIG1pbWVUeXBlcywgR19QUklPUklUWV9E
RUZBVUxULCBudWxscHRyLCBbXShHT2JqZWN0KiBjbGlwYm9hcmQsIEdBc3luY1Jlc3VsdCogcmVz
dWx0LCBncG9pbnRlciB1c2VyRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGxNYWMuaAppbmRleCBkMjIzOGZkYzlkMTZmNzdmOGMzZDMwMmNhOTk3
NmZlODNmMWIzZjM3Li5hYjg3YzJhN2U4YzM1N2E2NWIzY2ZlNjA3OTM4ZmRmZWM4YTY1MmJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaApA
QCAtMTAwLDggKzEwMCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBleGVjdXRlVW5kb1JlZG8oVW5k
b09yUmVkbykgb3ZlcnJpZGU7CiAgICAgYm9vbCBleGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rv
cihjb25zdCBTdHJpbmcmIHNlbGVjdG9yKSBvdmVycmlkZTsKICAgICB2b2lkIHN0YXJ0RHJhZyhj
b25zdCBXZWJDb3JlOjpEcmFnSXRlbSYsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBp
bWFnZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGltYWdl
QnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwKLSAgICAgICAgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZl
QnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpIG92ZXJyaWRlOworICAgIHZv
aWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcm
IHRpdGxlLAorICAgICAgICBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxl
VVJMLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVm
ZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgIHZvaWQg
dXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzZXRTZWN1cmVJ
bnB1dFN0YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlJbnB1dENvbnRleHRBYm91dERp
c2NhcmRlZENvbXBvc2l0aW9uKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXggYTQxMTIxMzVmMmVmMTkwMTVhNTJm
MWUxYjAzYWUzMGExZjIyM2QyYS4uYzM2M2U5NTVlODc5YzBlMTg2YjQxNTA5MDkxMzM2NWMyMGZl
OTA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bE1hYy5tbQpAQCAtNDAwLDcgKzQwMCw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnN0YXJ0RHJh
Zyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYgaXRlbSwgY29uc3QgU2hhcmVhYmxlQml0CiAgICAg
bV9pbXBsLT5zdGFydERyYWcoaXRlbSwgaW1hZ2UpOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBs
OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBh
cmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCit2b2lkIFBhZ2VD
bGllbnRJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYg
dGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYg
b3JpZ2luSWRlbnRpZmllcikKIHsKICAgICBhdXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0
ZSgpOwogICAgIGltYWdlLT5zZXREYXRhKFdURk1vdmUoaW1hZ2VCdWZmZXIpLCB0cnVlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGUw
M2UwODBhZWUwODM4MGI0NmZmZTg5ZGQ4ZTYxYjY2YjU5OGRiNDYuLjAxZDg0MGEyYTYzZWFjNzkx
ZmJkODRmYmU2MzdiNWIyOGNmNjEzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBTCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvIGltYWdlQnVmZmVyID0gc2hhcmVk
TWVtb3J5SW1hZ2UtPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpbWFnZUhhbmRsZS5kYXRhU2l6ZSk7CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlQnVmZmVyOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBhcmNoaXZlQnVmZmVyOwogICAgIGlmICghYXJjaGl2ZUhhbmRs
ZS5oYW5kbGUuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byBzaGFyZWRNZW1vcnlBcmNoaXZlID0g
U2hhcmVkTWVtb3J5OjptYXAoYXJjaGl2ZUhhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZE9ubHkpOwogICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeUFyY2hpdmUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKaW5k
ZXggZmE5NDAyNWVkNzQ3MzBkMjhlNzE2NDYyODVmOWU1YmE2NTNiOGYxMi4uYzI4ZmU2NWYwY2Yx
NjQzOTk4MThhY2EzMmY5ODFjYzc3OGYxZTkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcApAQCAtODQsNyArODQsNyBAQCBib29sIFJl
bW90ZUNETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETVNl
c3Npb25UeXBlJiwgY29ucwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW1vdGVDRE06
OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU2hhcmVkQnVm
ZmVyJiBkYXRhKSBjb25zdAorYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgdHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkgY29u
c3QKIHsKICAgICAvLyBUaGlzIGNoZWNrIHdpbGwgYmUgZG9uZSwgbGF0ZXIsIGluc2lkZSBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UoKS4KICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFJlbW90ZUNETTo6bG9hZEFuZEluaXRpYWxp
emUoKQogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OkxvYWRBbmRJbml0aWFsaXplKCksIG1faWRl
bnRpZmllcik7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFJlbW90ZUNETTo6c2FuaXRpemVS
ZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IFJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICAvLyBUaGlzIGNoZWNr
IHdpbGwgYmUgZG9uZSwgbGF0ZXIsIGluc2lkZSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6dXBkYXRlTGljZW5zZSgpLgogICAgIHJldHVybiByZXNwb25zZS5jb3B5KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaAppbmRleCAwYWRkZjgz
MzUzYjZlYTFiMmU4YjAyYzZiN2VlM2RhZjQ2OGNkMzgzLi44YzQ1NGViODNlNTk5NGE4ZTRkNTky
ZDUxZGY5MWZmOWI1MjNjYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNLmgKQEAgLTQ4LDEzICs0OCwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wg
c3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldpdGhS
ZXN0cmljdGlvbnMoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNv
bnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3Vw
cG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETVNlc3Np
b25UeXBlJiwgY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0
IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQgZGlz
dGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBm
aW5hbDsKICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJl
bWVudChjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2Vi
Q29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBkaXN0aW5jdGl2
ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IFdlYkNvcmU6
OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8V2Vi
Q29yZTo6Q0RNSW5zdGFuY2U+IGNyZWF0ZUluc3RhbmNlKCkgZmluYWw7CiAgICAgdm9pZCBsb2Fk
QW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmlu
YWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXpl
UmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZp
bmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBT
dHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJ
bml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBv
cnRlZEluaXREYXRhVHlwZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKaW5kZXggYjVkZWEyMWU5OTVhNzM3
ZjAzNmY2NDUzOGMxZmIzZWNiNWU2YmI1NS4uYTEzZTUxNDYwZjZiYjlmODBlZjNkMWE4NDJlZmMw
YjlmNDQ1OTBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBSZW1v
dGVDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6
OkNETUtleVN5c3RlbUMKICAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eTo6SW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGRpc3RpbmN0
aXZlSWRlbnRpZmllcnMsIHBlcnNpc3RlbnRTdGF0ZSksIFdURk1vdmUoY2FsbGJhY2spLCBtX2lk
ZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2Fs
bGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRp
ZmljYXRlKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRl
LCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewog
ICAgICAgICBjYWxsYmFjayhGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCmluZGV4IDEwNmJhM2IxMTYxYzhk
ZjA5ZDcxZGZlNjc5YmEzM2Q0MjMwNzllOTYuLjJjNzg1MWU0NDBiMDhhNTJhMmFlNzBkYTdlNDE4
ODgyZTNjNjE0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKIAog
ICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OlJlbW90ZTsgfQogICAgIHZvaWQgaW5pdGlhbGl6
ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBT
dWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Cisg
ICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFn
ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5rZXlTeXN0ZW07IH0K
ICAgICBSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKaW5kZXggYWYwYmFkNGM5MGQ4ZGQ1
MTM3NzRhZWY2YTE1Yjc3YmE4OWZjNTA2NC4uYzc0MGMwNDUwNmZkZWRhYzlmNGNmNTAyYzIwNWE4
YTM3ZmNhNDU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcApAQCAtNDksNyArNDks
NyBAQCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbihX
ZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZgogewogfQogCi12b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNl
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1
ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBjYWxsYmFj
ayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFpbGVkKTsK
QEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcKICAgICB9LCBtX2lkZW50
aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lk
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
cmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICgh
bV9mYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgTGljZW5zCiAgICAgfQogCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5
cGUpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEtleVN0YXR1c1ZlY3RvciYmIGNo
YW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mJiBtZXNzYWdl
LCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNo
YXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gc3RkOjpudWxsb3B0OworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gcmVhbE1lc3NhZ2UgPSBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIGlmIChtZXNzYWdlICYmIG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKSkK
ICAgICAgICAgICAgIHJlYWxNZXNzYWdlID0gbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpLnJlbGVh
c2VOb25OdWxsKCk7CiAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEZN
b3ZlKHJlYWxNZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5oCmluZGV4IDRmZmU0Y2FjZWNjZGU0M2Q1Y2IxMWUyMzZjYTA0NWFj
ZGE4M2E3ZWIuLjRlNGNkMmMwMDVjNmIwMDY1ZjljZGIxODhjNGJjZTBiNWJmYTY2MDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24uaApAQCAtNTksOCArNTksOCBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBzZXRDbGllbnQoV2Vha1B0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+
JiYgY2xpZW50KSBmaW5hbCB7IG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOyB9CiAgICAgdm9p
ZCBjbGVhckNsaWVudCgpIGZpbmFsIHsgbV9jbGllbnQgPSBudWxscHRyOyB9Ci0gICAgdm9pZCBy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2sm
JikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBMaWNlbnNlVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5h
bDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vu
c2VUeXBlLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwg
TGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGlj
ZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwg
TG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAg
dm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5
cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFW
Ri5jcHAKaW5kZXggOWEyMTlhNTQ0ZTU1MzgzZjU0ZTcxZGFiZDM1NGNjNDQwYTQxNDJiOS4uNjI5
MjY3OThjNWMxMTMyNGEzMWFhNTBjZGE3ZWQxZmJmNzRmZTcwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpz
ZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplCiAKIC8v
IElmIGFsbERhdGFSZWNlaXZlZCBpcyB0cnVlLCB0aGUgY2FsbGVyIGV4cGVjdHMgZW5jb2RlZERh
dGFTdGF0dXMoKSB0byBiZSA+PSBFbmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZQogLy8g
YWZ0ZXIgdGhpcyBmdW5jdGlvbiByZXR1cm5zIChpbiB0aGUgc2FtZSBydW4gbG9vcCkuCi12b2lk
IFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldERhdGEoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAg
aWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFW
Ri5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkYuaAppbmRleCBlNWNmZTk0ZWNkM2E5YzA2MDBmYzAwMzIwZmY0MzA2MWM5MGVkNjliLi40
MGQzNzM0ZjdhMzIyZThiYWNiOWQxYzBkZWE3MDc5ZTJhZDE3ZWFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGIGZpbmFs
CiAgICAgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VEZWNvZGVyCiAgICAgLCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZShSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5h
Z2VyJiBtYW5hZ2VyLCBjb25zdCBXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyJiBpZGVu
dGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQor
ICAgIHN0YXRpYyBSZWY8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGUoUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGTWFuYWdlciYgbWFuYWdlciwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRl
bnRpZmllciYgaWRlbnRpZmllciwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSZW1vdGVJbWFnZURlY29kZXJBVkYobWFuYWdlciwgaWRlbnRpZmllciwgbWltZVR5cGUpKTsK
ICAgICB9CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpQbGF0Zm9ybUlt
YWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgV2ViQ29yZTo6U3Vic2FtcGxp
bmdMZXZlbCA9IFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IFdlYkNv
cmU6OkRlY29kaW5nT3B0aW9ucyYgPSBXZWJDb3JlOjpEZWNvZGluZ09wdGlvbnMoV2ViQ29yZTo6
RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRFeHBlY3Rl
ZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0gICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNl
dERhdGEoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNh
Y2hlKHNpemVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3Bw
CmluZGV4IDQxZDUzODgwMjNkMzkxNDk1MjE4MzVmNjg4ZGU0ZDQ4ZjY1ZDc2N2UuLjA4MmIzMzY2
YzhiYzcxMzBkNzVkNTY5OGE3ZDc5ZTY4OTJhZDhmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkZNYW5hZ2VyLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+
IFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2RlcihTaGFyZWRC
dWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKK1JlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IFJlbW90ZUltYWdlRGVjb2RlckFWRk1h
bmFnZXI6OmNyZWF0ZUltYWdlRGVjb2RlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3Rk
OjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVy
OwogICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsgZGF0
YSB9OwpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdl
cjo6c2V0VXNlR1BVUHJvY2Vzcyhib29sIHVzZUdQVVByb2Nlc3MpCiAgICAgSW1hZ2VEZWNvZGVy
OjppbnN0YWxsRmFjdG9yeSh7CiAgICAgICAgIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c3VwcG9y
dHNNZWRpYVR5cGUsCiAgICAgICAgIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6Y2FuRGVjb2RlVHlw
ZSwKLSAgICAgICAgW3RoaXNdKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSB7CisgICAgICAgIFt0aGlzXShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBh
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pIHsKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbWFnZURlY29kZXIoZGF0YSwg
bWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAg
ICAgIH0KICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmgKaW5kZXggYzIz
NzgyYjY1MDRlYzc5YmU0NmUxMjZmNGU1OTFiM2ZmN2Y2ZGJhOC4uMzYxOGFmZDEyMDk4YjU1NzZi
NGRkNGZmYmYzYzA2ZmJhODQyYTc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2Vy
LmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uJiBl
bnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxSZW1v
dGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZUltYWdlRGVjb2RlcihXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OkFscGhhT3B0aW9uLCBX
ZWJDb3JlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgUmVmUHRyPFJlbW90ZUlt
YWdlRGVjb2RlckFWRj4gY3JlYXRlSW1hZ2VEZWNvZGVyKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OkFscGhhT3B0
aW9uLCBXZWJDb3JlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKICAgICAvLyBHUFVQ
cm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50LgogICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25E
aWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZS5jcHAKaW5kZXggOTY2ZmM5M2I3N2FmYWEzZTYyMDhkN2FiYTVhZWQyYzdhOTRjNzRi
Mi4uMDA1YTM3Y2MyNmVjNGMwOTAxYmY0ZjM3MTIyMzg2NWRlMmQxNjZiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGUuY3BwCkBAIC03OCw3ICs3OCw3IEBAIFNvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGU6On5Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlKCkKICAgICBtX2dwdVByb2Nlc3ND
b25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCi12b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEp
Cit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVuZChSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbikK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaAppbmRleCAzNjAxNzVi
ZmJlOWQxYWY4M2VkNTc5MTM3M2I3NzVlZTc1MGFjN2NjLi5lYTVmYTNlYzM2YzJiODU5ZWU1Nzhj
Y2QwZTAzNDhjNzNjYjg2ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaApAQCAtNzIs
NyArNzIsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gU291cmNlQnVmZmVyUHJpdmF0ZSBvdmVycmlk
ZXMKICAgICB2b2lkIHNldEFjdGl2ZShib29sKSBmaW5hbDsKLSAgICB2b2lkIGFwcGVuZChSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZChSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBhYm9ydCgp
IGZpbmFsOwogICAgIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpIGZpbmFsOwogICAgIHZvaWQgcmVt
b3ZlZEZyb21NZWRpYVNvdXJjZSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCmluZGV4
IDExYjRhODZlNDg1MmY2YzIwNjFmYTNmYzlhZjI5Zjg4OTlmNGViOWYuLmI0MDg5ZmQzNTQ4Yzk3
ZjE3ZmMyYjlmYjAwMjc4MGQ2NDNjZjIzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKQEAg
LTE2NSwxMCArMTY1LDEwIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OnN0b3JhZ2VDaGFu
Z2VkKFNoYXJlZE1lbW9yeSogc3RvcmFnZSwgY29uc3QgV2ViQ29yZTo6CiAgICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpBdWRpb1NhbXBsZXNTdG9y
YWdlQ2hhbmdlZCB7IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBk
YXRhU2l6ZSB9LCBmb3JtYXQsIGZyYW1lQ291bnQgfSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9p
ZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
ZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6
OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpGZXRjaERhdGEgeyB9LCBbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbWltZVR5cGUgPSBtaW1lVHlw
ZSgpXShhdXRvJiYgZGF0YSwgZG91YmxlIHRpbWVDb2RlKSBtdXRhYmxlIHsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoZGF0YS5zaXplKCkpCiAgICAgICAgICAgICBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlciksIG1pbWVUeXBlLCB0aW1l
Q29kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAppbmRleCAzMDNhNTRmNzZmMTg1ZTk2NDU0ZWY5ZjVi
YjQ2MWYyOGUxMjY3ODZkLi41NzZmZDFjNmU5N2MwY2FkOGNiZmVjOTRlM2JkMzYzMzA3NmU0NGUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJl
Y29yZGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L01lZGlhUmVjb3JkZXJQcml2YXRlLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICAvLyBXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZQogICAgIHZvaWQgdmlkZW9T
YW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6TWVkaWFTYW1wbGUmLCBXZWJDb3JlOjpWaWRlb1NhbXBs
ZU1ldGFkYXRhKSBmaW5hbDsKLSAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGRvdWJsZSk+JiYpIGZpbmFsOworICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+JiYpIGZpbmFsOwogICAgIHZvaWQgc3RvcFJlY29y
ZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwogICAgIHZvaWQgc3RhcnRS
ZWNvcmRpbmcoU3RhcnRSZWNvcmRpbmdDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGF1ZGlv
U2FtcGxlc0F2YWlsYWJsZShjb25zdCBXVEY6Ok1lZGlhVGltZSYsIGNvbnN0IFdlYkNvcmU6OlBs
YXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgV2ViQ29yZTo6QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYs
IHNpemVfdCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRp
dG9yQ2xpZW50LmgKaW5kZXggMDY3M2Y3NGRkZmI0OGU1YmRmNDM4Y2Q5MGJlMzc5NGVlZTIwOTFi
Yi4uMDM1M2FhYmY3ZDRiOTI1YWEyZjE1NjJkNTczYWFmMzA5M2M4M2JjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1
bmRsZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaApAQCAtMzEsOSArMzEs
OSBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3Mg
Tm9kZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsKIHN0cnVj
dCBTaW1wbGVSYW5nZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5oCmluZGV4IGEwNjM1MjA0MzM1YjNhYjBlNmRmYjBjNjc3NzY3
ZjQyOGU4YTc3ZTIuLjE4MGIxMTExZWNmMDExMzI4MDkyNjZhMWJjZTI3ZDI2MGU0ZmEwMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJ
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBET01XaW5kb3dFeHRlbnNpb247CiBjbGFzcyBE
T01XcmFwcGVyV29ybGQ7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5QYWdlTG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCB2b2lk
IHdpbGxMb2FkVVJMUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCopIHsgfQotICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9h
ZERhdGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3Qg
V1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlVSTCYsIEFQSTo6T2JqZWN0KikgeyB9CisgICAgdmly
dHVhbCB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcios
IGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlVSTCYs
IEFQSTo6T2JqZWN0KikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJiwgUmVmUHRy
PEFQSTo6T2JqZWN0PiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6
OldlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4ZDUyNGI1MjVjNmU3YTBjYzZi
ZGU1ZTgwYTQ3YzE3MWUzNDE0NjhjLi4zZjQxYjFmMzM4ZmE0NDQ3NDkwNzQ4MTg5YmI4OTk1MWNm
MWIxNzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
LmNwcApAQCAtNjUsMTUgKzY1LDE2IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VTaGFyZWRCdWZmZXIo
dW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAgICAgc3RhdGljX2Nhc3Q8U2hhcmVk
QnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOwogfQogCi12b2lkIElu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdl
JiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciogc2hh
cmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5n
TmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQor
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3Qo
V2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0
IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9i
amVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC53aWxsTG9hZERhdGFSZXF1ZXN0
KQogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8QVBJOjpEYXRhPiBkYXRhOwogICAgIGlm
IChzaGFyZWRCdWZmZXIpIHsKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5yZWYoKTsKLSAgICAgICAg
ZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNo
YXIqKXNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNo
YXJlZEJ1ZmZlciwgc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYXV0byBjb250aWd1b3VzQnVmZmVy
ID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBjb250aWd1b3VzQnVm
ZmVyLT5yZWYoKTsKKyAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlp
bmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKWNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgY29udGln
dW91c0J1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVyLCBjb250aWd1b3VzQnVmZmVy
LnB0cigpKTsKICAgICB9CiAKICAgICBtX2NsaWVudC53aWxsTG9hZERhdGFSZXF1ZXN0KHRvQVBJ
KCZwYWdlKSwgdG9BUEkocmVxdWVzdCksIHRvQVBJKGRhdGEuZ2V0KCkpLCB0b0FQSShNSU1FVHlw
ZS5pbXBsKCkpLCB0b0FQSShlbmNvZGluZ05hbWUuaW1wbCgpKSwgdG9VUkxSZWYodW5yZWFjaGFi
bGVVUkwuc3RyaW5nKCkuaW1wbCgpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5o
CmluZGV4IDM2YmQ5ODBiMmZhYTFhZjQ1YWMzMTA2ZWIwMWU5ZjM3NmJhMTNhY2YuLjg2M2JkYWI2
Mjg0Y2EzYWFkMmY5ZDVmZmY1ZmQ2OGVhYjhiMmI3MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IGV4cGxpY2l0IEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudChjb25zdCBXS0J1bmRsZVBh
Z2VMb2FkZXJDbGllbnRCYXNlKik7CiAKICAgICB2b2lkIHdpbGxMb2FkVVJMUmVxdWVzdChXZWJQ
YWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgQVBJOjpPYmplY3QqKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6
U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBVUkwmLCBBUEk6Ok9iamVjdCopIG92
ZXJyaWRlOworICAgIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcios
IGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBVUkwmLCBBUEk6
Ok9iamVjdCopIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKFdlYlBhZ2UmLCBXZWJGcmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKFdlYlBhZ2UmLCBXZWJGcmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCmluZGV4IGU1MjRk
OGUxYjAxN2FhOGU1ZTAzYjg5MmQ5MmI3NTg5NGM1OGYzNzQuLmE3ODRlYzM4OGIyMjUyNGNjMGRh
NjMyNzhlNWU3NTkxMzdkY2Y2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBs
YXllck1hYy5tbQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9k
ZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAg
IGlmIChmaWxlIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRh
KCktPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3Vy
Y2UuZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+
c2l6ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAgbV9maWxlUGF0
aCA9IGZpbGVQYXRoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggOTRkOWQyY2Mz
ZWIyODgwY2RjZjIyYzA3MmEzOWE5ODk1NWZkNDQzMC4uOTc1NmY1MTkyMGQ2NGM0MmNkYzAwNjgx
MTUyNzdlYjExM2RiN2QzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yODMsNyAr
MjgzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2Uo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgIAogICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKICAgICBpZiAo
IWJ1ZmZlcikgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVm
ZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMiLCBy
ZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBjcmVhdGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJl
c291cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IDI1OTQ0OTQyMzg1NWZlZDNhYWFhYjQxNDgxOWY4OTUxYTNiOGI3ZmYuLjMxMGZjYTc4NzVj
MzJjM2NkNzQ3OGRiNjRmNTlhYzJjZjUwMTYzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE1NSw3ICsx
NTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgIGlmIChJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJh
bWUoKSwgcmVzcG9uc2UpKSB7CiAgICAgICAgIGF1dG8gaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRp
ZmllciA9IG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpOwogICAgICAgICBtX2ludGVyY2VwdENv
bnRyb2xsZXIuYmVnaW5JbnRlcmNlcHRpbmdSZXNwb25zZShpbnRlcmNlcHRlZFJlcXVlc3RJZGVu
dGlmaWVyKTsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNl
cHRSZXNwb25zZShtX2NvcmVMb2FkZXItPmZyYW1lKCksIHJlc3BvbnNlLCBpbnRlcmNlcHRlZFJl
cXVlc3RJZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGlu
dGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiBpbnNwZWN0b3JSZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3Zl
cnJpZGVEYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2Vi
S2l0OjppbnRlcmNlcHRSZXNwb25zZShtX2NvcmVMb2FkZXItPmZyYW1lKCksIHJlc3BvbnNlLCBp
bnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIHBvbGljeURlY2lzaW9uQ29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIp
XShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBpbnNwZWN0b3JSZXNwb25zZSwgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IG92ZXJyaWRlRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBp
ZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpIHsKICAgICAg
ICAgICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc3Bv
bnNlOiBub3QgY29udGludWluZyBpbnRlcmNlcHQgbG9hZCBiZWNhdXNlIG5vIGNvcmVMb2FkZXIg
b3Igbm8gSUQiKTsKICAgICAgICAgICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuY29udGlu
dWVSZXNwb25zZShpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyKTsKQEAgLTI5NSwxMSArMjk1
LDExIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBT
aGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kCiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJv
Y2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZSBmb3IgJyVzJyIsIG1f
Y29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBXRUJSRVNP
VVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiIpOwogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigp
OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5
V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2Ugc2Vu
dCBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7Ci0gICAgICAgIFdFQlJFU09VUkNFTE9BREVS
X1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgU2hhcmVk
QnVmZmVyIik7CisgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNl
aXZlUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciIpOwog
ICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBtX2NvcmVMb2FkZXItPmZyYW1lKCkpIHsKICAgICAg
ICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAgICAgICBw
YWdlLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNv
cmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxFcnJvcktleSgpLCBXZWJDb3JlOjpE
aWFnbm9zdGljTG9nZ2luZ0tleXM6OmNyZWF0ZVNoYXJlZEJ1ZmZlckZhaWxlZEtleSgpLCBXZWJD
b3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCA0MmRlNDYxNDE5Nzc4YjdjNDUwZmNhMWViMDM3
YzFjZTk3ZDJkNjMxLi5hN2Y0NWM4NDAxYjJmZDJmODcwZTM2NzhjNThmYzMxMGMyZTFmMjQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5o
CkBAIC0yMDcsNyArMjA3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0
YXRlQ2hhbmdlZChib29sKSBmaW5hbCB7IH0KICAgICBib29sIGdldEZvcm1WYWx1ZShTdHJpbmcm
IGZvcm1WYWx1ZSkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGhhbmRsZVNjcm9s
bChXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KSBm
aW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRh
KCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHdpbGxEZXRhY2hS
ZW5kZXJlcigpIGZpbmFsOwogICAgIGJvb2wgcGx1Z2luSGFuZGxlc0NvbnRlbnRPZmZzZXRGb3JB
Y2Nlc3NpYmlsaXR5SGl0VGVzdCgpIGNvbnN0IGZpbmFsOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggZDIzYWJiOWU2
NTExYjEzYmJkNTIzYWY0NTFmNDQxNzg3M2E2YzFlMC4uZDQ3ZjMyYjdkNDkxOTU2YmRjZTc3YmZl
NmYxNWNhNzg2NWJmZDE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0yNTUyLDcgKzI1NTIsNyBAQCB2b2lkIFBERlBsdWdp
bjo6bm90aWZ5RGlzcGxheU1vZGVDaGFuZ2VkKGludCkKICAgICB1cGRhdGVTY3JvbGxiYXJzKCk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBERlBsdWdpbjo6bGl2ZVJlc291cmNlRGF0YSgp
IGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUERGUGx1Z2luOjpsaXZlUmVz
b3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBOU0RhdGEgKnBkZkRhdGEgPSBsaXZlRGF0YSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCmluZGV4IDg4ZjQ1Y2U1
MWNlMzFkZjBjNWIzYjc1ODYyMzZjM2YwZDljOTNhZDMuLjU4ZDcwYTM5YTE2ZDZhNGMwZThiMGNh
OWQwM2FjM2QzN2FlZGZjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbi5oCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50UmVjdDsK
IGNsYXNzIEludFNpemU7CiBjbGFzcyBTY3JvbGxiYXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTI4OCw3ICsyODgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50
IGNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludEluTG9jYWxD
b29yZGluYXRlcykgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0
ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRp
b24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBkNTRmMjdmMDcwOTE0N2U5
ZWRlYzA2ZGU1OGMxZThjYzEyMzFhNjc3Li43ZmIyMGM1OTJkYmZhMDk2ZTM4YmMxNjg3MDM3Mzhj
YjhmNDA3Yzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcApAQCAtMjg5LDYgKzI4OSw3IEBAIFBsdWdpblZpZXc6OlBsdWdpblZpZXcoSFRN
TFBsdWdJbkVsZW1lbnQmIHBsdWdpbkVsZW1lbnQsIFJlZjxQbHVnaW4+JiYgcGx1Z2luLCBjCiAg
ICAgLCBtX3dlYlBhZ2Uod2ViUGFnZShtX3BsdWdpbkVsZW1lbnQuZ2V0KCkpKQogICAgICwgbV9w
YXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiAgICAgLCBtX3BlbmRpbmdVUkxSZXF1ZXN0c1RpbWVyKFJ1
bkxvb3A6Om1haW4oKSwgdGhpcywgJlBsdWdpblZpZXc6OnBlbmRpbmdVUkxSZXF1ZXN0c1RpbWVy
RmlyZWQpCisgICAgLCBtX21hbnVhbFN0cmVhbURhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZm
ZXJCdWlsZGVyPigpKQogewogICAgIG1fd2ViUGFnZS0+YWRkUGx1Z2luVmlldyh0aGlzKTsKIH0K
QEAgLTQwMyw5ICs0MDQsNiBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKIAogICAgIGlmICghbV9pc0lu
aXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VSVChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVh
bFN0cmVhbVN0YXRlOjpIYXNSZWNlaXZlZFJlc3BvbnNlKTsKLSAgICAgICAgaWYgKCFtX21hbnVh
bFN0cmVhbURhdGEpCi0gICAgICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOwotCiAgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+YXBwZW5kKGJ5dGVz
LCBsZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDM3LDcgKzQzNSw3IEBAIHZv
aWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgbV9tYW51YWxTdHJlYW1T
dGF0ZSA9IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZDsKICAgICAgICAgbV9tYW51YWxTdHJl
YW1FcnJvciA9IGVycm9yOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOwor
ICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPnJlc2V0KCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTkyNiwxMSArOTI0LDExIEBAIHZvaWQgUGx1Z2luVmlldzo6d2lsbERldGFjaFJl
bmRlcmVyKCkKICAgICBtX3BsdWdpbi0+d2lsbERldGFjaFJlbmRlcmVyKCk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAorUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEo
KSBjb25zdAogewogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikgewotICAg
ICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhICYmIG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFu
dWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQotICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3Ry
ZWFtRGF0YTsKKyAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFt
U3RhdGU6OkZpbmlzaGVkKQorICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YS0+
Z2V0KCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTI0MiwxMCArMTI0
MCwxMCBAQCB2b2lkIFBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSgpCiAgICAgbWFu
dWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShtX21hbnVhbFN0cmVhbVJlc3BvbnNlKTsKIAogICAg
IC8vIERlbGl2ZXIgdGhlIGRhdGEuCi0gICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSkgewotICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiAqbV9tYW51YWxTdHJlYW1EYXRhKQorICAg
IGlmICghbV9tYW51YWxTdHJlYW1EYXRhLT5pc051bGwoKSkgeworICAgICAgICBhdXRvIGJ1ZmZl
ciA9IG1fbWFudWFsU3RyZWFtRGF0YS0+dGFrZSgpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IGVsZW1lbnQgOiBidWZmZXIuZ2V0KCkpCiAgICAgICAgICAgICBtYW51YWxMb2FkRGlkUmVjZWl2
ZURhdGEoZWxlbWVudC5zZWdtZW50LT5kYXRhKCksIGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpKTsK
LSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAo
bV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggMjEyNmVi
OGVkYjU1OTM4NmIzNDIyNWViMmJkNWJmY2Q2ODAyM2YyMy4uZDE1M2EyOWNhMTRhOTBlMzIyN2E4
OTFlM2VlZjVlNGU3OTczNTFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KIAogLy8gRklYTUU6IEV2ZW50dWFsbHkgdGhpcyBzaG91bGQgbW92
ZSB0byBXZWJDb3JlLgogCkBAIC0xMTUsNyArMTE2LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBz
aG91bGRBbGxvd1NjcmlwdGluZygpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0OworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgYm9vbCBwZXJm
b3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYp
OwogICAgIFN0cmluZyBnZXRTZWxlY3Rpb25Gb3JXb3JkQXRQb2ludChjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50JikgY29uc3Q7CiAgICAgYm9vbCBleGlzdGluZ1NlbGVjdGlvbkNvbnRhaW5zUG9p
bnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIGNvbnN0OwpAQCAtMjUyLDcgKzI1Myw3IEBA
IHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fbWFudWFsU3RyZWFt
UmVzcG9uc2U7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBtX21hbnVhbFN0cmVhbUVycm9y
OwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsK
KyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9tYW51YWxTdHJl
YW1EYXRhOwogCiAgICAgLy8gVGhpcyBzbmFwc2hvdCBpcyB1c2VkIHRvIGF2b2lkIHNpZGUgZWZm
ZWN0cyBzaG91bGQgdGhlIHBsdWdpbiBydW4gSlMgZHVyaW5nIHBhaW50aW5nLgogICAgIFJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+IG1fdHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggZmVlOGZlYTdiY2M4ZDU5YzA3ZTNj
NWJhNGQ2MDk1NTJhNGQ2MjhiZi4uYjA0Y2NjZjExM2U0OTI4ZmE2NjM4M2JkMjQzMWRiODc0ODUz
Y2NhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTcxLDE2
ICs3MSwxNSBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJgogICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsg
cmVzcG9uc2UsIG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9m
ZXRjaElkZW50aWZpZXIpOwogfQogCi12b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBXZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZU1lc3NhZ2UpIHsKLSAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxT
aGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSkpCi0gICAgICAgICAgICBtX3Jlc3BvbnNlRGF0
YSA9IGJ1ZmZlci0+Y29weSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdGQ6OmdldDxS
ZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpLT5hcHBlbmQoV1RGTW92ZShidWZmZXIp
KTsKKyAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlZEJ1ZmZlckJ1aWxk
ZXI+KG1fcmVzcG9uc2VEYXRhKSkKKyAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gU2hhcmVk
QnVmZmVyQnVpbGRlcigpOworICAgICAgICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWlsZGVyPiht
X3Jlc3BvbnNlRGF0YSkuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTIwNiw4ICsyMDUsOCBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKICAgICBzd2l0Y2hPbihtX3Jl
c3BvbnNlRGF0YSwgW3RoaXNdKHN0ZDo6bnVsbHB0cl90JikgewogICAgICAgICBpZiAobV9kaWRG
aW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKLSAgICB9LCBbdGhpc10oUmVmPFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgewotICAgICAgICBkaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZl
cikpOworICAgIH0sIFt0aGlzXShjb25zdCBTaGFyZWRCdWZmZXJCdWlsZGVyJiBidWZmZXIpIHsK
KyAgICAgICAgZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmIChtX2Rp
ZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwogICAgIH0sIFt0aGlzXShSZWY8Rm9y
bURhdGE+JiBmb3JtRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCmlu
ZGV4IGIzNDdjYWQyYWI1ZjU3MWIxYTBlMjA3MjA4MDQzNjdkNzcwMTg2MDAuLjZiMGE0MTdjZjBk
M2FlMGQ3Yjg5M2E5OTg2ODNhYmYyYmM0YTRkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoTG9h
ZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRmV0Y2guaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTQ5LDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0
YUFuZEZpbmlzaChSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
RmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRG
aW5pc2goKSBmaW5hbDsKQEAgLTgyLDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlv
bmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKICAgICBib29sIG1fbmVlZHNDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93YWl0aW5nRm9y
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKLSAgICBzdGQ6OnZh
cmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBSZWY8V2Vi
Q29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVz
cG9uc2VEYXRhOworICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlciwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNv
cmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKICAgICBib29sIG1fZGlkRmluaXNo
IHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggODFlMzc5ZTMzZDFh
OWFjZGM4NmVmNWM0YmUyMWE3MjYwZDk0ZDQ4ZS4uN2NmYzAzYTg1ZDM5ZDgxZjM5MmMwYWExMzBm
ODNmYmQyYzgzNGYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTE0Miw3ICsxNDIsNyBA
QCBib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQXBwbHlTdHlsZShjb25zdCBTdHlsZVByb3Bl
cnRpZXMmIHN0eWxlLCBjb25zdCBzdGQ6OgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2
b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEp
CiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyQXR0
YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShpZGVudGlmaWVyLCBjb250ZW50VHlwZSwgcHJlZmVy
cmVkRmlsZU5hbWUsIGRhdGEuZ2V0KCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA1MDZk
OWY1NDEzOGQzN2NiNGM2NGVkNDYwZjU5YTVjMjhmZTUyMmE2Li5iMDU4NjE4OTFlY2M4NGM2MzY4
YTIwNmMyNzAxMDYwZjUwNTJmNWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC02NSw3ICs2NSw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShjb25zdCBX
ZWJDb3JlOjpTaW1wbGVSYW5nZSYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJikgZmluYWw7
CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIHZvaWQgcmVnaXN0ZXJBdHRh
Y2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVm
ZXJyZWRGaWxlTmFtZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKSBmaW5h
bDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJikg
ZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxXZWJDb3JlOjpTZXJp
YWxpemVkQXR0YWNobWVudERhdGE+JiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKaW5kZXggNGJkYmJjY2QzZmJjNjIwZTA3NTQxMDVjZWEwOWVkZGYwNTEyMGI2Yi4uMTRh
MDgzY2EyMDdhOTA2M2NmODBiMWU3ZTk2NzBhNDg3Y2Y0ZDM5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCkBAIC0xMTg4LDggKzExODgsOCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAg
ICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNv
dXJjZURhdGEoKTsKLSAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNl
KG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCkgOiBudWxscHRyLCBt
YWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgICAg
ICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxv
YWRlci0+bWFpblJlc291cmNlRGF0YSgpOworICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNl
IGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVz
b3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKICAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJv
dmlkZXIobG9hZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCksIGRhdGFSZWZlcmVu
Y2UpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4
IGY0MWE3MGVmNWJiNmMwZWNlOGJkODYyNzQxMTYwMWNmNzMwZTYyYTEuLjRhOGJlZTU3ZmRiMWZm
Y2RlZjAwODlmYTY1ZTk3NTM3NTBkMjUwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGMKICAgICBy
ZXR1cm4gbmV3Q2hhbmdlQ291bnQ7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCogY29udGV4dCkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRC
dWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFu
ZGxlOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAppbmRleCBlMjgwOTk2M2Y0ZjUwNjgxYjdkMDFmNDFhNjg1MzFhYjczMjE0
ZmIwLi4xZmY4M2UxMWJjMTc4OWFhYzBmOTAwYzkzZGMyMmZiZjIzOWVhMmJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAKICAgICBp
bnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0QnVm
ZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldENvbG9y
KGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNl
dFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuY3BwCmluZGV4IDA3YjE2N2UwZWVlZTc2ODg3NWIwMzlkZmE1OWY1ZmQxM2M3NTRlMTAuLmQ0
MTU5MDRjNzFiMWMwYzcyYTNlMTdjZjdiMzQ1MjBhYTI3OTAzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAtNDUsMTMgKzQ1LDEzIEBAIFdlYlByZXZp
ZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgU3RyCiAgICAgOiBtX2ZpbGVOYW1lIHsgZmlsZU5hbWUgfQogICAgICwgbV91
dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQotICAgICwgbV9idWZmZXIgeyBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fYnVmZmVyIHsgbWFrZVVuaXF1ZVJlZjxT
aGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KIHsKIH0KIAogV2ViUHJldmlld0xvYWRlckNsaWVudDo6
fldlYlByZXZpZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV2ViUHJldmlld0xv
YWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K3ZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byB3ZWJQYWdlID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShtX3BhZ2VJRCk7CiAgICAgaWYgKCF3ZWJQYWdlKQpA
QCAtNjksMTMgKzY5LDEyIEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmluaXNo
TG9hZGluZygpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJQ
YWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZl
ci5nZXQoKSk7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlkRmluaXNo
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXItPnRha2UoKS5nZXQo
KSk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCgpCiB7Ci0gICAg
bV9idWZmZXItPmNsZWFyKCk7CisgICAgbV9idWZmZXItPnJlc2V0KCk7CiB9CiAKIHZvaWQgV2Vi
UHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5oCmluZGV4IDA0OTJjZWVjMmY5YjljZDg1MzgzODQ4NGZiYzI2YzA3Y2I1
M2RhODcuLmNjM2IyNGI3MjliMjE4YjgwZDM3YTEyY2Q3ZmFjM2RmYTliZWQxYWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0yOSw4ICsyOSwxMyBAQAogCiAj
aW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IFdlYkZyYW1lOwpAQCAtNDUsNyArNTAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2Vi
UHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcm
IHV0aSwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
RmFpbCgpIG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNTQsNyArNTksNyBAQCBwcml2YXRlOgogICAg
IGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1lOwogICAgIGNvbnN0IFN0cmluZyBtX3V0aTsKICAgICBj
b25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKLSAgICBSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJh
Z0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCBhNjRjNmE4YjNjNjk1ZTE3MzM2NDMzNmJjYjBm
NjhkYmRkOWMyZDIxLi5lMWUwZTYxMTJhMmRlZGMzYjhiYjYzMDk4NTM1Mzc2ZWY0M2FkNTE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBX
ZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgRWxlbWUKIAogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gaW1hZ2Ut
PnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGltYWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBhdXRvIGltYWdl
QnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBzaXplX3QgaW1hZ2VTaXplID0g
aW1hZ2VCdWZmZXItPnNpemUoKTsKIAogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hh
cmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCppbWFnZUJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggOWJkNGNkMmQwY2IxMDNiNDVhYThl
NmMxZDQyN2MwYjE3YmY1ZWQxMy4uZDg4ZjQ0Y2ZjZGU1ZTE1ZjY2YzEyNGI0MGY1YjU0MzViOTQ2
OTdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cApAQCAtMzQwLDEwICszNDAsMTAgQEAgU3RyaW5nIFdlYkZyYW1lOjpzb3VyY2UoKSBjb25zdAog
ICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IG1fY29yZUZyYW1lLT5sb2FkZXIo
KS5hY3RpdmVEb2N1bWVudExvYWRlcigpOwogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3Vy
Y2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVy
LT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2Rl
KG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAg
ICByZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiBT
dHJpbmcgV2ViRnJhbWU6OmNvbnRlbnRzQXNTdHJpbmcoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYjNiMGZiY2M3NmU2MGY2Nzhi
ZjFjNmRlNTIxMzA1OThjYjJkMDA4OC4uYWNlMjMxNTY2MmUyMGY2ZjA0MDg3NWNlNTQ3ZTU5ZGFm
MWZlOTg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTE3MzgsNyArMTczOCw3IEBAIE5PX1JFVFVSTiB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1
ZXN0V2FpdGluZ0ZvclByb2Nlc3NMYXVuY2goTG9hZFBhcmFtZXRlcnMmJiwgVVJMCiAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpsb2FkRGF0YUlt
cGwodWludDY0X3QgbmF2aWdhdGlvbklELCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0Rh
dGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHNoYXJlZEJ1ZmZlciwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBj
b25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHN0ZDo6
b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4sIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2Vzc2lv
bkhpc3RvcnlWaXNpYmlsaXR5LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kpCit2b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJz
aXRlUG9saWNpZXMsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHNoYXJlZEJ1ZmZlciwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBj
b25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHN0ZDo6
b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4sIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2Vzc2lv
bkhpc3RvcnlWaXNpYmlsaXR5LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kpCiB7CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQog
ICAgIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiwgJm1fbWFpbkZyYW1lLmdldCgpKTsKQEAgLTE3NTMsNyArMTc1Myw3IEBAIHZvaWQg
V2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkIHNoCiAKICAgICAvLyBMZXQgdGhlIEluamVjdGVkQnVuZGxlIGtub3cg
d2UgYXJlIGFib3V0IHRvIHN0YXJ0IHRoZSBsb2FkLCBwYXNzaW5nIHRoZSB1c2VyIGRhdGEgZnJv
bSB0aGUgVUlQcm9jZXNzCiAgICAgLy8gdG8gYWxsIHRoZSBjbGllbnQgdG8gc2V0IHVwIGFueSBu
ZWVkZWQgc3RhdGUuCi0gICAgbV9sb2FkZXJDbGllbnQtPndpbGxMb2FkRGF0YVJlcXVlc3QoKnRo
aXMsIHJlcXVlc3QsIGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4oc3Vic3RpdHV0ZURhdGEuY29u
dGVudCgpKSwgc3Vic3RpdHV0ZURhdGEubWltZVR5cGUoKSwgc3Vic3RpdHV0ZURhdGEudGV4dEVu
Y29kaW5nKCksIHN1YnN0aXR1dGVEYXRhLmZhaWxpbmdVUkwoKSwgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkp
OworICAgIG1fbG9hZGVyQ2xpZW50LT53aWxsTG9hZERhdGFSZXF1ZXN0KCp0aGlzLCByZXF1ZXN0
LCBjb25zdF9jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPihzdWJzdGl0dXRlRGF0YS5jb250
ZW50KCkpLCBzdWJzdGl0dXRlRGF0YS5taW1lVHlwZSgpLCBzdWJzdGl0dXRlRGF0YS50ZXh0RW5j
b2RpbmcoKSwgc3Vic3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgpLCBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7
CiAKICAgICAvLyBJbml0YXRlIHRoZSBsb2FkIGluIFdlYkNvcmUuCiAgICAgRnJhbWVMb2FkUmVx
dWVzdCBmcmFtZUxvYWRSZXF1ZXN0KCptX21haW5GcmFtZS0+Y29yZUZyYW1lKCksIHJlcXVlc3Qs
IHN1YnN0aXR1dGVEYXRhKTsKQEAgLTM4NjEsNyArMzg2MSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0
U291cmNlRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoCiAKIHZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRp
b25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2spCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CiAgICAgICAgIGlmIChQbHVnaW5WaWV3
KiBwbHVnaW5WaWV3ID0gcGx1Z2luVmlld0ZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSkpCiAg
ICAgICAgICAgICBidWZmZXIgPSBwbHVnaW5WaWV3LT5saXZlUmVzb3VyY2VEYXRhKCk7CkBAIC0z
ODc3LDcgKzM4NzcsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1l
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZAogICAgIGNhbGxiYWNrKGRh
dGFSZWZlcmVuY2UpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VE
YXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cmNlVVJMKQorc3RhdGlj
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFt
ZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCiB7CiAgICAgRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwogICAgIGlmICghbG9h
ZGVyKQpAQCAtMzg5Miw3ICszODkyLDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
c291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXIKIAogdm9p
ZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+
JiYgY2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGF1dG8qIGZyYW1l
ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKICAgICAgICAg
VVJMIHJlc291cmNlVVJMKFVSTCgpLCByZXNvdXJjZVVSTFN0cmluZyk7CiAgICAgICAgIGJ1ZmZl
ciA9IHJlc291cmNlRGF0YUZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSwgcmVzb3VyY2VVUkwp
OwpAQCAtNjk3Nyw3ICs2OTc3LDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25G
b3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIKICAgICBpZiAo
IWRvY3VtZW50TG9hZGVyKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
IAotICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9u
LCBsb2FkSWRlbnRpZmllci50b0ludGVnZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIChXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGljb25EYXRhKSBt
dXRhYmxlIHsKKyAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihk
ZWNpc2lvbiwgbG9hZElkZW50aWZpZXIudG9JbnRlZ2VyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogaWNvbkRhdGEpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGlj
b25EYXRhIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IDM1YzIzZmU2MDJlYjRmOTA0MWFiYjBhOTg3ZTdkMmYwY2EwZjhiM2Uu
LmY2ZGRkNzhlYTE5ODhlMWZjYWM5MDc0YmY1NmU3YWIxYmIxY2I1Y2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTIxNiw3ICsyMTYsNyBAQCBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VsZWN0
aW9uRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkdlb21ldHJ5OwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xh
c3MgVGV4dENoZWNraW5nUmVxdWVzdDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKQEAgLTEzOTYs
NyArMTM5Niw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQgZGlk
U3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSk7Ci0gICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsK
KyAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNv
bnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIHJlcXVlc3RQ
YXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAjZW5kaWYK
IApAQCAtMTU5OSw3ICsxNTk5LDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBzb3VyY2VGb3JG
cmFtZShXZWJGcmFtZSopOwogCi0gICAgdm9pZCBsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdh
dGlvbklELCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9u
YWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
Y29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYsIHN0ZDo6b3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lv
bkhpc3RvcnlWaXNpYmlsaXR5LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cp
OworICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6
U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+JiYsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBjb25zdCBV
UkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbj4sIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9y
eVZpc2liaWxpdHksIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJD
b3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CiAKICAg
ICAvLyBBY3Rpb25zCiAgICAgdm9pZCB0cnlDbG9zZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KaW5kZXggYzk1YzM4NDYzOTIyMTg0ZjI1N2E3MTlkYjViYTlhNDgyOWFlZGYx
Yi4uODVlNjUxODY5MmVkNjBjNzg4ZTcyYTdjZTMyZjNmMGUxNWNhNzc4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTMy
MTcsNyArMzIxNyw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50
MzJfdCBhY3Rpb24pCiAgICAgICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGRvd25jYXN0
PFJlbmRlckltYWdlPigqZWxlbWVudC5yZW5kZXJlcigpKS5jYWNoZWRJbWFnZSgpOwogICAgICAg
ICBpZiAoIWNhY2hlZEltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsKKyAg
ICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGNhY2hlZEltYWdl
LT5yZXNvdXJjZUJ1ZmZlcigpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNv
cHlCdWZmZXIoKmJ1ZmZlcik7CkBAIC00NjgzLDcgKzQ2ODMsNyBAQCB2b2lkIFdlYlBhZ2U6OmRp
ZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBm
aWxlTmFtZQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU3RhcnRMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShmaWxlTmFtZSwgdXRpKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExvYWRGb3JR
dWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoIWJ1ZmZlci5pc0VtcHR5KCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tCmluZGV4IGUxOGQxMGMzZmM0ZjE4ZDczYTJhNzQwYzUzMzEzMTM0M2ZmMzNjYWYuLmM2MWI4
NTEyYmEzY2ZjYzg5ZTQzNWJmOTQzNDRkZDcyOTE3MjViMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBA
IC0yMjgsMTEgKzIyOCw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNW
aWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBVTlVTRURfUEFSQU0obW9kZSk7CiAjaWYgSEFWRShBVktJVCkKLSNp
ZiBIQVZFKFVJS0lUX1dFQktJVF9JTlRFUk5BTFMpCi0gICAgcmV0dXJuIG1vZGUgPT0gSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQ7Ci0jZWxzZQogICAg
IHJldHVybiB0cnVlOwotI2VuZGlmCiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpA
QCAtMjQzLDcgKzIzOSw3IEBAIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNW
aWRlb0Z1bGxzY3JlZW4oV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAKIGJvb2wgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KCkgY29uc3QK
IHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhSEFWRShVSUtJVF9XRUJLSVRfSU5URVJO
QUxTKQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQog
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93
aW4vV2ViUHJvY2Vzc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlBy
b2Nlc3NXaW4uY3BwCmluZGV4IGQzZDM4Y2FjNDEyMTFkN2UyOWI1N2YyNDUyMzY0ZTM3YjQyM2Mz
MWEuLjM3ZjI3ZTk1MmQwNzE3MTEyMWNiNGY1NDg3YThiODRiOWY4YTYzOGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcApAQCAtMjgsNyArMjgs
NyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAotUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1l
KQorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUlu
dG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKaW5kZXggMWY1NTg0
ZmEzODdkNzZjY2U5NGZmN2I1Njk2OGU3ZTgyMjA2MDYwNi4uYTI1NTYwYTEwYzI4ODJlMWFiZDE3
ODQ1Njk0ODZlYTEzZWQ4OTZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJD
b3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9QaW5nSGFuZGxlLmgKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcGluZ0xvYWRDb21wbGV0ZSh7IH0sIHJlc3Bv
bnNlKTsKICAgICB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlKiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50KSBmaW5hbCB7IHBpbmdM
b2FkQ29tcGxldGUoKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZSosIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQp
IGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KICAgICB2b2lkIGRpZEZhaWwoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJv
cikgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKGVycm9yKTsgfQogICAgIGJvb2wgc2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBmaW5hbCB7IHJldHVy
biBtX3Nob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQppbmRleCBlYjM5NDFmMjY2ZGYxM2My
OGE5MDZlZTdkMTYxYWUyMWUxNzU0MDkxLi42MzU1YjZmOTAzMTgwMDU1Y2I2MDdhODBiZTc3MDEz
ODRkODhkZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlL
aXRFeHRlbnNpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtp
dEV4dGVuc2lvbnMubW0KQEAgLTM4OCw3ICszODgsNyBAQCAtIChOU0RhdGEgKilkYXRhUmVwcmVz
ZW50YXRpb246KEJPT0wpcmF3SW1hZ2VEYXRhCiAgICAgYXV0byogZGF0YSA9IHJhd0ltYWdlRGF0
YSA/IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpIDogaW1hZ2UtPmRhdGEoKTsKICAgICBp
ZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGRhdGEtPmNyZWF0ZU5T
RGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopbWltZVR5
cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGEyNTk4ZjMyZmI3NjBhN2Q4ODNjOWY0
Y2VlYzE4Y2Y1OTFlYjhlYWQuLjk1OWQ3NDhiNTZiZTEwNzZiZDk3Nzk5MjJjZDM1NmQyMWE2ODE3
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjQ4LDcgKzI0OCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZW5kSDJQaW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRXhwZWN0ZWQ8U2Vjb25kcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYpIGZpbmFs
OwogCiAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpw
YWlyPFdlYkNvcmU6OkxpbmtJY29uJiwgdWludDY0X3Q+PiYpIGZpbmFsOwotICAgIHZvaWQgZmlu
aXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGZpbmlz
aGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogCiAjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBtX2xvYWRpbmdJY29uIHsgZmFsc2UgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggYjg0OWQyYWFjMmE5M2ZiZWU0MTcyOWYy
NGE4NmNkY2Y2YjFmZTAxOS4uYWEyY2M5ODE0NzRhMTNjZTUwODQ3OTg5NDIzNjg0NDkxYzg4ZjZl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTIwMTIsNyArMjAxMiw3IEBAIFJl
ZlB0cjxXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlUHJldmlld0xvCiAgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9maWxl
UGF0aDsKICAgICAgICAgUmV0YWluUHRyPE5TRmlsZUhhbmRsZT4gbV9maWxlSGFuZGxlOwogCi0g
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikgb3ZlcnJpZGUKICAgICAgICAg
ewogICAgICAgICAgICAgYXV0byBkYXRhQXJyYXkgPSBidWZmZXIuY3JlYXRlTlNEYXRhQXJyYXko
KTsKICAgICAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGRhdGFBcnJheS5nZXQoKSkKQEAg
LTIwOTQsNyArMjA5NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmdldExvYWREZWNp
c2lvbkZvckljb25zKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yCiAgICAgICAgIH0KIAog
ICAgICAgICBtX2xvYWRpbmdJY29uID0gdHJ1ZTsKLSAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRp
ZEdldExvYWREZWNpc2lvbkZvckljb24odHJ1ZSwgaWNvbi0+c2Vjb25kLCBbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYnVmZmVyKSB7
CisgICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUs
IGljb24tPnNlY29uZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmICgh
d2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgZmluaXNoZWRM
b2FkaW5nSWNvbihidWZmZXIpOwpAQCAtMjEzMSw3ICsyMTMxLDcgQEAgc3RhdGljIE5TSW1hZ2Ug
KndlYkdldE5TSW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1NpemUgc2l6ZSkKIH0KICNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZmluaXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGljb25EYXRhKQor
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0YSkKIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBBU1NFUlQobV9sb2FkaW5nSWNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCmluZGV4IDI0YjY5OTcwNmRmMGQ2YjcxOTJhYTUyMDJkZTYxZDhiMWU1NzMyZjkuLjUyN2Zh
NTUyMTkwYmEwMDE0NTE3ZmZkZTczNzcyMGIyZTdhOTBhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBpbnQ2NF90IGFkZFR5
cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShX
ZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
VVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldENvbG9yKGNvbnN0IFdlYkNv
cmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFN0cmluZ0ZvclR5
cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBmYzA3NzZlNjJkNjZi
ZTlhYzkzZDQ4N2RkZmQzMDBhNmQ0MDdjNTUzLi4zOTg2ODU5ZjczMzhlMjg0NTdlZDRiMTkwY2Jh
NjcwNTIyMTAwMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0xNTQsNyAr
MTU0LDcgQEAgaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGMKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRUeXBlcyhwYXN0ZWJvYXJkVHlwZXMpOwogfQogCi1p
bnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZm
ZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQoraW50NjRfdCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
YnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIsIHBh
c3RlYm9hcmRUeXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRGF0YVNvdXJjZS5tbQppbmRleCAyODljMDAyOWJmOTEzNDE4ZDBiMjk5ZjkwYTRkOTcxMTNi
YzU4YTRiLi44M2U4NTkxNDM0NWVhN2NiODQxZDk5ZmQxZmI2NjZkOGNjZjAzMDI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC00
NjAsMTAgKzQ2MCwxMCBAQCAtICh2b2lkKWRlYWxsb2MKIAogLSAoTlNEYXRhICopZGF0YQogewot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1By
aXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJp
dmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFp
blJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gbWFpblJlc291
cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gbWFpblJl
c291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2Uo
KTsKIH0KIAogLSAoaWQgPFdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24+KXJlcHJlc2VudGF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJl
cHJlc2VudGF0aW9uLm1tCmluZGV4IDgwY2QzMGVmNDY3NjBlMTRjOGU2N2E4OGEyNzMzYzlkNDM3
ZmE1ZDkuLjM4ZDdlNTMyZDZlYWEwY2FjMzg4NjJmM2UwZTE2OWZlMjgxMjc3ZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uLm1tCkBAIC0yMzAsNyArMjMwLDcgQEAgLSAoQk9PTCljYW5TYXZlQXNXZWJBcmNoaXZl
CiAtIChOU1N0cmluZyAqKWRvY3VtZW50U291cmNlCiB7CiAgICAgaWYgKFtzZWxmIF9pc0Rpc3Bs
YXlpbmdXZWJBcmNoaXZlXSkgeyAgICAgICAgICAgIAotICAgICAgICBTaGFyZWRCdWZmZXIgKnBh
cnNlZEFyY2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0t
PnBhcnNlZEFyY2hpdmVEYXRhKCk7CisgICAgICAgIGF1dG8gKnBhcnNlZEFyY2hpdmVEYXRhID0g
W19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRh
KCk7CiAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0
YTpwYXJzZWRBcmNoaXZlRGF0YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSA6IG5pbCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQppbmRleCA4MzhlNDEzMzgxYTgwNzVhM2Q2MjQ1OTQ1NTI2N2E1YmJiNTVhOTkxLi4yOGQ4
NzU5MjljY2FjZGI5YTEzODhhODI2YjJmZDVlY2Y0NmVjY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM1NDAsOCArMzU0MCw4IEBA
IHN0YXRpYyBSZXRhaW5QdHI8TlNNZW51SXRlbT4gY3JlYXRlU2hhcmVNZW51SXRlbShjb25zdCBX
ZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoCiAgICAgfQogCiAgICAgaWYgKGF1dG8qIGltYWdlID0g
aGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQotICAgICAgICAgICAgW2l0ZW1zIGFk
ZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0
YVdpdGhCeXRlczpidWZmZXItPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCld
OworICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IGltYWdlLT5kYXRhKCkpCisgICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0
TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5n
ZXQoKV07CiAgICAgfQogCiAgICAgaWYgKCFoaXRUZXN0UmVzdWx0LnNlbGVjdGVkVGV4dCgpLmlz
RW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3Vy
Y2UubW0KaW5kZXggMTIxOThmNDAxZWE4YWQ1NzhkZDdiZGVhY2MwNGRmYjdlMzRhYzczNC4uYWFk
Y2ZiZmVhMzU2YjM3YjBmNTM3OGFmYTg5OGI4ZWE5OWFlNmE3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCkBAIC0xNjMsMjEgKzE2MywyMSBA
QCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWRlY29kZXIKIC0gKHZv
aWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopZW5jb2RlcgogewogICAgIGF1dG8qIHJlc291
cmNlID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS5nZXQoKTsKLSAgICAKLSAgICBOU0RhdGEgKmRh
dGEgPSBuaWw7CisKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogICAgIE5TVVJMICp1cmwg
PSBuaWw7CiAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0gbmlsLCAqdGV4dEVuY29kaW5nID0gbmls
LCAqZnJhbWVOYW1lID0gbmlsOwogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gbmlsOwot
ICAgIAorCiAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0
YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpOworICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEo
KS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgdXJsID0gcmVzb3Vy
Y2UtPnVybCgpOwogICAgICAgICBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlwZSgpOwogICAg
ICAgICB0ZXh0RW5jb2RpbmcgPSByZXNvdXJjZS0+dGV4dEVuY29kaW5nKCk7CiAgICAgICAgIGZy
YW1lTmFtZSA9IHJlc291cmNlLT5mcmFtZU5hbWUoKTsKICAgICAgICAgcmVzcG9uc2UgPSByZXNv
dXJjZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgfQotICAgIFtlbmNvZGVyIGVu
Y29kZU9iamVjdDpkYXRhIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOworICAgIFtlbmNvZGVy
IGVuY29kZU9iamVjdDpkYXRhLmdldCgpIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOwogICAg
IFtlbmNvZGVyIGVuY29kZU9iamVjdDp1cmwgZm9yS2V5OldlYlJlc291cmNlVVJMS2V5XTsKICAg
ICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6bWltZVR5cGUgZm9yS2V5OldlYlJlc291cmNlTUlNRVR5
cGVLZXldOwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp0ZXh0RW5jb2RpbmcgZm9yS2V5Oldl
YlJlc291cmNlVGV4dEVuY29kaW5nTmFtZUtleV07CkBAIC0yMDIsNyArMjAyLDcgQEAgLSAoTlNE
YXRhICopZGF0YQogCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZVJlc291cmNlKQogICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkuY3Jl
YXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNv
dXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNl
KCk7CiB9CiAKIC0gKE5TVVJMICopVVJMCkBAIC0zNjcsOCArMzY3LDggQEAgLSAoTlNTdHJpbmcg
Kilfc3RyaW5nVmFsdWUKICAgICBpZiAoIWVuY29kaW5nLmlzVmFsaWQoKSkKICAgICAgICAgZW5j
b2RpbmcgPSBXaW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsKICAgICAKLSAgICBTaGFyZWRCdWZmZXIq
IGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291
cmNlLT5kYXRhKCkgOiBudWxscHRyOwotICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+ZGF0YSgpIDogbnVs
bHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOworICAgIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0
ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxscHRyOworICAgIHJldHVybiBlbmNvZGluZy5k
ZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEt
PnNpemUoKSA6IDApOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFT
b3VyY2UuY3BwCmluZGV4IGI0MDczZTEwOGJkNWM3NzBkZDYyYTEwNWFmYjBjY2E5YzRlZjAzOGUu
LjA4OTdjN2MwNTQ4ZDIwYjFlZjQ1ZTM1ZTFiZjhkOGU0MGVhNWQzZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgSFJFU1VM
VCBXZWJEYXRhU291cmNlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkK
ICAgICBpZiAoIW1fbG9hZGVyKQogICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0gICAg
cmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJj
ZURhdGEoKSkuY29weVJlZlRvKHN0cmVhbSk7CisgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3Jl
YXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKS0+bWFrZUNvbnRpZ3VvdXMo
KSkuY29weVJlZlRvKHN0cmVhbSk7CiB9CiAKIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6cmVwcmVz
ZW50YXRpb24oX0NPTV9PdXRwdHJfb3B0XyBJV2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbioqIHJl
cCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAppbmRleCA5MGE1YTBhMTMzNmVlZWJj
OGFmNWNkZWMxYjVjNjIwZTY4MjMxOWI1Li41NThlMTNjN2YxZmRhYTViMTI1ZDIwYmVmZTc5MWEy
N2ZmNzU3MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC01NTksNyAr
NTU5LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZFJlcXVlc3QoX0luX29wdF8gSVdlYlVSTFJl
cXVlc3QqIHJlcXVlc3QpCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLXZvaWQgV2ViRnJhbWU6Omxv
YWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwg
QlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKK3Zv
aWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNl
VVJMLCBCU1RSIGZhaWxpbmdVUkwpCiB7CiAgICAgU3RyaW5nIG1pbWVUeXBlU3RyaW5nKG1pbWVU
eXBlLCBTeXNTdHJpbmdMZW4obWltZVR5cGUpKTsKICAgICBpZiAoIW1pbWVUeXBlKQpAQCAtNTg1
LDIxICs1ODUsMjEgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHQKIAogSFJFU1VMVCBXZWJGcmFt
ZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBf
SW5fIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgX0luXyBCU1RSIHVybCkKIHsKLSAgICBhdXRvIHNo
YXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBzaGFyZWRCdWZmZXI7CiAKICAgICBTVEFUU1RHIHN0YXQ7CiAgICAgaWYgKFNVQ0NFRURF
RChkYXRhLT5TdGF0KCZzdGF0LCBTVEFURkxBR19OT05BTUUpKSkgewogICAgICAgICBpZiAoIXN0
YXQuY2JTaXplLkhpZ2hQYXJ0ICYmIHN0YXQuY2JTaXplLkxvd1BhcnQpIHsKICAgICAgICAgICAg
IFZlY3RvcjxjaGFyPiBkYXRhQnVmZmVyKHN0YXQuY2JTaXplLkxvd1BhcnQpOwogICAgICAgICAg
ICAgVUxPTkcgcmVhZDsKLSAgICAgICAgICAgIC8vIEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVz
cyBjb3B5LCB3b3VsZCBiZSBiZXR0ZXIgdG8gcmVhZCByaWdodCBpbnRvIHRoZSBTaGFyZWRCdWZm
ZXIKKyAgICAgICAgICAgIC8vIEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3Vs
ZCBiZSBiZXR0ZXIgdG8gcmVhZCByaWdodCBpbnRvIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
CiAgICAgICAgICAgICAvLyBvciBhZG9wdCB0aGUgVmVjdG9yIG9yIHNvbWV0aGluZy4KICAgICAg
ICAgICAgIGlmIChTVUNDRUVERUQoZGF0YS0+UmVhZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8VUxPTkc+KGRhdGFCdWZmZXIuc2l6ZSgpKSwgJnJlYWQpKSkKLSAgICAgICAgICAgICAg
ICBzaGFyZWRCdWZmZXItPmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50
PihkYXRhQnVmZmVyLnNpemUoKSkpOworICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci5hcHBl
bmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkp
KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVy
KSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CisgICAgbG9hZERh
dGEoc2hhcmVkQnVmZmVyLnRha2UoKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwg
bnVsbHB0cik7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFt
ZS5oCmluZGV4IDQzNjA1NGZkOWRkYjQ3Y2EzMjk2YjExNzk4MTQzNGVjMTg5N2RhZDEuLmZhOWMz
ODFjYzU3M2JhNmIyMDk4OGVhYjM1MDhlZDlhMzBhOGYxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRnJhbWUuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7
CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiB0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVKU0NvbnRleHQqIEpTQ29udGV4dFJlZjsKQEAgLTE5NSw3
ICsxOTUsNyBAQCBwcml2YXRlOgogICAgIH5XZWJGcmFtZSgpOwogCiAgICAgdm9pZCBsb2FkSFRN
TFN0cmluZyhfSW5fIEJTVFIgc3RyaW5nLCBfSW5fIEJTVFIgYmFzZVVSTCwgX0luXyBCU1RSIHVu
cmVhY2hhYmxlVVJMKTsKLSAgICB2b2lkIGxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJM
LCBCU1RSIGZhaWxpbmdVUkwpOworICAgIHZvaWQgbG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFt
ZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpOwogICAgIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpJbnRSZWN0PiYgY29tcHV0ZVBhZ2VSZWN0cyhIREMgcHJpbnREQyk7CiAgICAgdm9pZCBz
ZXRQcmludGluZyhib29sIHByaW50aW5nLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHBhZ2VT
aXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG9yaWdpbmFsUGFnZVNpemUsIGZsb2F0IG1h
eGltdW1TaHJpbmtSYXRpbywgV2ViQ29yZTo6QWRqdXN0Vmlld1NpemVPck5vdCk7CiAgICAgdm9p
ZCBoZWFkZXJBbmRGb290ZXJIZWlnaHRzKGZsb2F0KiwgZmxvYXQqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRETEwuY3BwCmluZGV4IDk2MjAxOThiNGI1NDBhZTZmNzk2N2Y4MjMzYzk0NjRi
ZDI3NzU4NTEuLjI3NGI3ZDJkNmNmMmViNDcxZDdiOGI4OTY1OWFlNDY5Y2Y5MzRjOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcApAQCAtMTY1LDggKzE2NSw4IEBAIHZvaWQg
c2h1dERvd25XZWJLaXQoKQogfQogCiAvL0ZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgbW92aW5n
IHRoaXMgdG8gYSBuZXcgZmlsZSBmb3IgY3Jvc3MtcHJvamVjdCBmdW5jdGlvbmFsaXR5Ci1XRUJL
SVRfQVBJIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZm
ZXIoY29uc3QgY2hhciogbmFtZSk7Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2Fk
UmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCitXRUJLSVRfQVBJIFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNv
bnN0IGNoYXIqIG5hbWUpOworUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBpbnQgaWRy
OwogICAgIC8vIHRlbXBvcmFyeSBoYWNrIHRvIGdldCByZXNvdXJjZSBpZApkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQxMGZjMmZmZWIyYjVkYmEw
YzUxYjJiYWE3YzVhY2M1ZTBkNjg5OGIuLjUwZDMwNTQ1NTRhY2Q2YWI1Y2Q0NWRiNTNmM2MwNmNk
N2IxNDVjMjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1MiBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAg
ICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1
ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHA6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0Lmg6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVz
dHNDRy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1No
YXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViQ29yZVN0
dWJzLmNwcDoKKworMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjov
Lzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIEFQSSB0ZXN0cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVy
Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKworMjAyMS0xMS0yNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50
ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZl
ci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEtMTItMDMgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gV2Vi
IGNvbnRlbnQgcHJvY2VzcyBzb21ldGltZXMgY3Jhc2hlcyB1bmRlciBXZWJQYWdlOjpwb3NpdGlv
bkluZm9ybWF0aW9uKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3Rl
bS5jcHAKaW5kZXggODU4M2IyOWFkOTkwYzIyYjQ3MmM4NjllY2NkODY4Mjk2MjFiYjBiNC4uYjg0
N2QzYTgyNmIzZDlmZmMwOGY2ZjNiZTM4MjYwYTZjNTlkZmYyYSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RhdGlj
IHZvaWQgY3JlYXRlVGVzdEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIEZpbGVTeXN0ZW06
OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIH07CiAKLS8vIEZJWE1FOiBSZWZhY3RvciBGaWxlU3lz
dGVtVGVzdCBhbmQgU2hhcmVkQnVmZmVyVGVzdCBhcyBhIHNpbmdsZSBjbGFzcy4KKy8vIEZJWE1F
OiBSZWZhY3RvciBGaWxlU3lzdGVtVGVzdCBhbmQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Qg
YXMgYSBzaW5nbGUgY2xhc3MuCiBjbGFzcyBGaWxlU3lzdGVtVGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0IHsKIHB1YmxpYzoKICAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcApp
bmRleCBiOTg2YTJhNTg4ODQ2NWJlMTkyMGE2ZTA2NjhkNzBkYjI0OTA2ZWFiLi5hYjQ3MmU1MGI4
MzU3NGMzMDE4MjVkYmJlZWY5OTgzZjJmNDFkMjJkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCkBAIC0xOTgsNyAr
MTk4LDcgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50KQogICAgICAg
ICAgICAgcmV0dXJuIHsgZ2xvYmFsQnVmZmVySWRlbnRpZmllciwgZ2xvYmFsSXRlbUJ1ZmZlciwg
Z2xvYmFsSXRlbUJ1ZmZlckNhcGFjaXR5IH07CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYg
ZGlzcGxheUxpc3RJdGVtKSBjb25zdCBmaW5hbAorICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGRp
c3BsYXlMaXN0SXRlbSkgY29uc3QgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBp
bmRleCA9IG1faXRlbXMuc2l6ZSgpOwogICAgICAgICAgICAgbV9pdGVtcy5hcHBlbmQoc3RkOjpn
ZXQ8U3Ryb2tlUGF0aD4oZGlzcGxheUxpc3RJdGVtKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGRkYmZjMWYyYjE4MjFj
YjFkZmFiYzhlMmY2MzI3YjIxMmM3Y2E0NjguLmEwNjMwYmE2NzViZjhlNTJjNDQwYzlkMTkyMjA3
MjI4OTBmYmRjMWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC00MSw4MCAr
NDEsNzMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mTWlz
c2luZ0ZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhD
b250ZW50c09mTWlzc2luZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhp
c3RpbmdfZmlsZSIpKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhp
c3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRfTlVMTChidWZmZXIpOwogfQogCi1URVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitURVNUX0Yo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdG
aWxlKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9U
X05VTEwoYnVmZmVyKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4o
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwotICAgIEVYUEVDVF9UUlVFKFN0cmluZyhT
aGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVu
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7CisgICAgRVhQRUNUX1RS
VUUoU3RyaW5nKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJp
bmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9
CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5n
RW1wdHlGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRo
Q29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0
eUZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0
aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZm
ZXItPmlzRW1wdHkoKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVy
Q3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxl
KQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05V
TEwoYnVmZmVyKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5
KCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNvcHkgPSBidWZmZXItPmNv
cHkoKTsKICAgICBFWFBFQ1RfR1QoYnVmZmVyLT5zaXplKCksIDBVKTsKICAgICBFWFBFQ1RfVFJV
RShidWZmZXItPnNpemUoKSA9PSBjb3B5LT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1j
bXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBF
WFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKK1RFU1RfRihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50
c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1Rf
TlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVm
ZmVyLT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPmRhdGEoKSk7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKCpidWZmZXIpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwgMSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5zaXpl
KCkgPT0gKHN0cmxlbihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAx
KSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJs
ZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQRUNU
X0VRKCdhJywgYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAotVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5n
RmlsZSkKLXsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7Ci0gICAgQVNTRVJUX05P
VF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5hcHBlbmQoImEiLCAxKTsKLSAgICBFWFBFQ1Rf
VFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRh
KCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+ZGF0YSgpW3N0cmxlbihTaGFyZWRC
dWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwotfQotCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Qs
IHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogewogICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8i
OwogICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQiOwogICAgIGNoYXIgdGVzdERhdGEyW10g
PSAiR29vZGJ5ZSI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7Ci0gICAgc2hh
cmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7Ci0gICAgc2hh
cmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7Ci0gICAgUmVm
UHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIodGVzdERhdGEwLCBz
dHJsZW4odGVzdERhdGEwKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4o
dGVzdERhdGExKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERh
dGEyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0
KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgY2hhciBleHBlY3RlZENvbmNhdGVuYXRp
b25bXSA9ICJIZWxsb1dvcmxkR29vZGJ5ZSI7CiAgICAgQVNTRVJUX0VRKHN0cmxlbihleHBlY3Rl
ZENvbmNhdGVuYXRpb24pLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBFWFBFQ1Rf
RVEoMCwgbWVtY21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiwgYXJyYXlCdWZmZXItPmRhdGEoKSwg
c3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKK1RFU1RfRihGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQog
ewogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IwKDB4NDAwMCwgJ2EnKTsKICAgICBWZWN0b3I8
dWludDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3Rv
cjIoMHg0MDAwLCAnYycpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IwKSk7Ci0gICAgc2hhcmVkQnVm
ZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQo
V1RGTW92ZSh2ZWN0b3IyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9
IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXIoV1RGTW92ZSh2ZWN0b3IwKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RG
TW92ZSh2ZWN0b3IxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7Cisg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgQVNTRVJUX0VRKDB4NDAwMFUgKyAweDQwMDBVICsgMHg0
MDAwVSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgaW50IHBvc2l0aW9uID0gMDsK
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IDB4NDAwMDsgKytpKSB7CkBAIC0xMzEsNyArMTI0LDcg
QEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdt
ZW50cykKICAgICB9CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQorVEVTVF9G
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogewogICAgIGNoYXIgdGVzdERhdGFb
XSA9ICJIYWJpdGFzc2UgaW50ZWdlciBlcm9zIHRpbmNpZHVudCBhIHNjZWxlcmlzcXVlISBFbmlt
IGVsaXQ/IFNjZWxlcmlzcXVlIG1hZ25pcywiCiAgICAgImV0IG1vbnRlcyB1bHRyaWNlcyB0cmlz
dGlxdWUgYSEgUGlkLiBWZWxpdCB0dXJwaXMsIGRhcGlidXMgaW50ZWdlciByaG9uY3VzIHNvY2lp
cyBhbWV0IGZhY2lsaXNpcywiCkBAIC0xNTEsMTcgKzE0NCw1MyBAQCBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgY29weSkKICAgICAibWF0dGlzIGRpZ25pc3NpbSBtYXNzYSBhYyBwdWx2aW5hciB1
cm5hLCBudW5jIHV0LiBTYWdpdHRpcywgYWxpcXVldCBwZW5hdGlidXMgcHJvaW4gbG9yZW0sIHB1
bHZpbmFyIGxlY3R1cywiCiAgICAgImF1Z3VlIHByb2luISBBYywgYXJjdSBxdWlzLiBQbGFjZXJh
dCBoYWJpdGFzc2UsIHJpZGljdWx1cyByaWRpY3VsdXMuIjsKICAgICB1bnNpZ25lZCBsZW5ndGgg
PSBzdHJsZW4odGVzdERhdGEpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1
ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBs
ZW5ndGgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVzdERhdGEsIGxlbmd0
aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIx
LmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEs
IGxlbmd0aCk7CiAgICAgLy8gc2hhcmVkQnVmZmVyIG11c3QgY29udGFpbiBkYXRhIG1vcmUgdGhh
biBzZWdtZW50U2l6ZSAoPSAweDEwMDApIHRvIGNoZWNrIGNvcHkoKS4KLSAgICBBU1NFUlRfRVEo
bGVuZ3RoICogNCwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGNsb25lID0gc2hhcmVkQnVmZmVyLT5jb3B5KCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAq
IDQsIGNsb25lLT5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPmRhdGEo
KSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKLSAgICBjbG9uZS0+YXBw
ZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA1LCBjbG9uZS0+
c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgYnVpbGRlcjEuc2l6ZSgpKTsKKyAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBidWlsZGVyMS5jb3B5KCk7
CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9F
USgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVpbGRlcjEuZ2V0
KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOworCisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBidWlsZGVyMi5hcHBlbmQoKmNsb25lKTsK
KyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgRVhQRUNUX0VRKGxl
bmd0aCAqIDUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMi50
YWtlKCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAv
LyBidWlsZGVyIGlzIG5vdyBlbXB0eS4KKyAgICBFWFBFQ1RfRVEoMFUsIGJ1aWxkZXIyLnNpemUo
KSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVF
KGJ1aWxkZXIyLmlzRW1wdHkoKSk7Cit9CisKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
VGVzdCwgYnVpbGRlcikKK3sKKyAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkp
OworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNF
KGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgYXV0byBjb3B5ID0gYnVpbGRlcjEuY29weSgpOwor
ICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjEudGFrZSgpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxk
ZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAg
IEVYUEVDVF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRyKCkpOyAvLyBXZSBoYXZlIGRpZmZlcmVu
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyCisgICAgRVhQRUNUX0VRKGNvcHkuZ2V0KCksIGJ1ZmZl
ci5nZXQoKSk7IC8vIEJ1dCB0aGVpciBjb250ZW50IGlzIGlkZW50aWNhbAorCisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwo
KSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5h
cHBlbmQodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1
aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNFbXB0eSgpKTsK
KyAgICBidWlsZGVyMi5yZXNldCgpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgp
KTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLmVt
cHR5KCk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1Rf
VFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOwogfQogCiBzdGF0aWMgdm9pZCBjaGVja0J1ZmZlcihj
b25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNoYXIqIGV4
cGVjdGVkKQpAQCAtMTczLDcwICsyMDIsODAgQEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29u
c3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgogICAg
ICAgICBFWFBFQ1RfRVEoYnVmZmVyW2ldLCBleHBlY3RlZFtpXSk7CiB9CiAKLVRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
VGVzdCwgZ2V0U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geydhJywgJ2In
LCAnYycsICdkJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydlJywgJ2YnLCAnZycsICdo
J307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAnaycsICdsJ307Ci0gICAg
Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+
YXBwZW5kKFdURk1vdmUoczEpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMyKSk7Ci0g
ICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9
IHsgJ2EnLCAnYicsICdjJywgJ2QnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScs
ICdmJywgJ2cnLCAnaCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7ICdpJywgJ2onLCAn
aycsICdsJyB9OworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxk
ZXIuYXBwZW5kKFdURk1vdmUoczEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMyKSk7
CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIGF1dG8gYnVmZmVyID0gYnVp
bGRlci50YWtlKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVyLT5nZXRTb21lRGF0YSgw
KTsKLSAgICBhdXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoMSA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVmZmVyLT5nZXRTb21lRGF0
YSg3KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDgpOwogICAgIGF1dG8g
a2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGJ1
ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsK
KyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgYXV0byBhYmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCk7CisgICAgYXV0
byBnaDIgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gZ2hpamtsID0gY29udGln
dW91c0J1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0gYnVmZmVyLT5nZXRTb21l
RGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFiY2Quc2l6ZSgpLCAiYWJj
ZCIpOwotICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgpLCAiZ2giKTsKKyAgICBj
aGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZl
cihoLmRhdGEoKSwgaC5zaXplKCksICJoIik7CiAgICAgY2hlY2tCdWZmZXIoaWprbC5kYXRhKCks
IGlqa2wuc2l6ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGtsLmRhdGEoKSwga2wuc2l6
ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2wsIGJ1ZmZlci0+c2l6ZSgp
LCAiYWJjZGVmZ2hpamtsIik7CisgICAgY2hlY2tCdWZmZXIoZ2gyLmRhdGEoKSwgZ2gyLnNpemUo
KSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRhdGEoKSwgZ2hpamtsLnNpemUoKSwg
ImdoaWprbCIpOworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIuc2l6ZSgpKTsKKyAgICBj
aGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0YUFzQ2hhclB0cigpKTsK
ICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CiB9CiAKLVRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
clRlc3QsIGlzRXF1YWxUbykKIHsKICAgICBhdXRvIG1ha2VCdWZmZXIgPSBbXSAoVmVjdG9yPFZl
Y3Rvcjx1aW50OF90Pj4mJiBjb250ZW50cykgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsK
ICAgICAgICAgZm9yIChhdXRvJiBjb250ZW50IDogY29udGVudHMpCi0gICAgICAgICAgICBidWZm
ZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKKyAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoY29udGVudCkpOworICAgICAgICByZXR1
cm4gYnVpbGRlci50YWtlKCk7CiAgICAgfTsKLSAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVy
KHt7J2EnLCAnYicsICdjJywgJ2QnfX0pOworICAgIGF1dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIo
eyB7ICdhJywgJ2InLCAnYycsICdkJyB9IH0pOwogICAgIEVYUEVDVF9FUShidWZmZXIxLmdldCgp
LCBidWZmZXIxLmdldCgpKTsKIAotICAgIGJ1ZmZlcjEtPmFwcGVuZChWZWN0b3I8dWludDhfdD4o
eydhJywgJ2InLCAnYycsICdkJ30pKTsKLSAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwgbWFr
ZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywgJ2QnfX0pLmdldCgp
KTsKLSAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydhJ30sIHsnYicsICdjJ30sIHsnZCd9fSku
Z2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsnYycsICdkJ319KS5nZXQoKSk7Ci0gICAg
RVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydh
JywgJ2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAn
Yid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNU
X05FKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnfSwg
eydhJ319KS5nZXQoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUo
YnVmZmVyMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7ICdhJywgJ2In
LCAnYycsICdkJyB9KSk7CisgICAgRVhQRUNUX0VRKCpidWlsZGVyLmdldCgpLCBtYWtlQnVmZmVy
KHsgeyAnYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJyB9IH0pLmdldCgpKTsK
KworICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicsICdjJyB9LCB7ICdk
JyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9LCB7ICdjJywgJ2QnIH0gfSku
Z2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgp
LCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9O
RShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYics
ICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsg
J2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdhJyB9IH0pLmdldCgpKTsK
IH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQorVEVTVF9GKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKIHsKICAgICBWZWN0b3I8dWludDhf
dD4gdDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh0MSkpOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHQxKSk7
CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBTdHJpbmcgcmVzdWx0ID0g
YnVmZmVyLT50b0hleFN0cmluZygpOwogICAgIEVYUEVDVF9FUShyZXN1bHQsICIxMTA1MTIiKTsK
LSAgICBidWZmZXItPmNsZWFyKCk7CisgICAgYnVpbGRlci5yZXNldCgpOworICAgIGJ1ZmZlciA9
IGJ1aWxkZXIudGFrZSgpOwogICAgIEVYUEVDVF9FUShidWZmZXItPnRvSGV4U3RyaW5nKCksICIi
KTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCitURVNUX0YoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiB7CiAgICAgY29uc3QgY2hhciogY29uc3Qgc2ltcGxl
VGV4dCA9ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3QuIjsKIAotICAgIGF1dG8gY2hlY2sgPSBbXShT
aGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgeworICAgIGF1dG8gY2hlY2sgPSBbXShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGRhdGEgPSBzaGFyZWRCdWZmZXIucmVhZCg0LCAzKTsKICAgICAgICAgRVhQRUNUX0VRKGRhdGEu
c2l6ZSgpLCAzdSk7CiAgICAgICAgIEVYUEVDVF9FUShTdHJpbmcoZGF0YS5kYXRhKCksIDMpLCAi
IGlzIik7CkBAIC0yNDksMTYgKzI4OCwxNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVh
ZCkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRl
eHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAg
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWlsZGVyOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBs
ZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ld
LCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgm
c2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworICAgIEVYUEVD
VF9UUlVFKGJ1aWxkZXIuaXNOdWxsKCkgJiYgIWJ1aWxkZXIpOworICAgIEVYUEVDVF9FUShidWls
ZGVyLnNpemUoKSwgMHUpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSAr
PSAyKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0g
ICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwot
ICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVU
ZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVU
ZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1M
KQpAQCAtMjY2LDcgKzMwNiw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQogdGVt
cGxhdGU8IHR5cGVuYW1lIFQsIHNpemVfdCBOID4KIGNvbnN0ZXhwciBzaXplX3QgYXJyYXlzaXpl
KCBjb25zdCBUICgmKVtOXSApIHsgcmV0dXJuIE47IH0KIAotc3RhdGljIHZvaWQgcmVhZEFsbENo
dW5rcyhzdGQ6OnZlY3RvcjxTdHJpbmc+KiBjaHVua3MsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIHNlcGFyYXRvciA9ICJcclxuIiwgYm9vbCBpbmNsdWRlU2VwYXJhdG9yID0g
ZmFsc2UpCitzdGF0aWMgdm9pZCByZWFkQWxsQ2h1bmtzKHN0ZDo6dmVjdG9yPFN0cmluZz4qIGNo
dW5rcywgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHNlcGFy
YXRvciA9ICJcclxuIiwgYm9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFsc2UpCiB7CiAgICAgU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJmJ1ZmZlciwgc2VwYXJhdG9yLnV0Zjgo
KS5kYXRhKCkpOwogICAgIFN0cmluZyBjaHVuayA9IGNodW5rUmVhZGVyLm5leHRDaHVua0FzVVRG
OFN0cmluZ1dpdGhMYXRpbjFGYWxsYmFjayhpbmNsdWRlU2VwYXJhdG9yKTsKQEAgLTI5OSw3ICsz
MzksNyBAQCBzdGF0aWMgdm9pZCBjaGVja0RhdGFJblJhbmdlKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZGF0YSwgc2l6ZV90IHN0YXJ0LCBzaXplX3QgbAogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXJUZXN0LCBpbmNsdWRlU2VwYXJhdG9yKQogewotICAgIGF1dG8gY2hlY2sgPSBbXShT
aGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgeworICAgIGF1dG8gY2hlY2sgPSBbXShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAgU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXIgY2h1bmtSZWFkZXIoJnNoYXJlZEJ1ZmZlciwgIlx4MTBceDExXHgxMiIpOwogICAg
ICAgICBWZWN0b3I8dWludDhfdD4gb3V0OwogICAgICAgICBFWFBFQ1RfVFJVRShjaHVua1JlYWRl
ci5uZXh0Q2h1bmsob3V0KSk7CkBAIC0zMTMsMjIgKzM1MywyNCBAQCBURVNUX0YoU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXJUZXN0LCBpbmNsdWRlU2VwYXJhdG9yKQogICAgIHVpbnQ4X3QgZGF0YVsy
NTZdOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjU2OyArK2kpCiAgICAgICAgIGRhdGFb
aV0gPSBpOwotCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLCAyNTYpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7Ci0gICAgc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRl
cihkYXRhLCAyNTYpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgMjU2OyArK2kpIHsKICAgICAgICAgY2hhciBjID0gaTsKLSAgICAgICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQoJmMsIDEpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmYywg
MSk7CiAgICAgfQotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgY2hlY2soYnVpbGRlci50
YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0
YSkKIHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgYSBzaW1w
bGUgdGVzdC4iOwogCi0gICAgYXV0byBjaGVjayA9IFtdKFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVm
ZmVyKSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJl
ZEJ1ZmZlcikgewogICAgICAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlciBjaHVua1JlYWRlcigm
c2hhcmVkQnVmZmVyLCAiaXMiKTsKIAogICAgICAgICBTdHJpbmcgY2h1bmsgPSBjaHVua1JlYWRl
ci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soKTsKQEAgLTM1OCwyMiAr
NDAwLDIzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHBlZWtEYXRhKQog
ICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwg
c3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwogCi0gICAgc2hh
cmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXIoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhi
dWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1w
bGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtp
XSwgMSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
JnNpbXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIAotICAgIHNo
YXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKLSAgICAgICAgc2hhcmVkQnVmZmVy
LT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXIt
PnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7CisgICAgRVhQRUNUX0VR
KGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIu
dGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcmVhZEFs
bENodW5rc0luTXVsdGlTZWdtZW50KQogewogICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRl
eHQgPSAiVGhpcyBpcyB0aGUgbW9zdCByaWRpY3Vsb3VzIGhpc3RvcnkgdGhlcmUgaXMuIjsKLSAg
ICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRv
IGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAg
ICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOwogICAgICAgICBjb25zdCBjaGFyKiBjb25z
dCBleHBlY3RlZENodW5rczFXaXRob3V0U2VwYXJhdG9yW10gPSB7ICJUaCIsICJzICIsICJzIHRo
ZSBtb3N0IHIiLCAiZCIsICJjdWxvdXMgaCIsICJzdG9yeSB0aGVyZSAiLCAicy4iIH07CiAgICAg
ICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaSIpOwpAQCAtNDA2LDE3
ICs0NDksMTkgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcmVhZEFsbENo
dW5rc0luTXVsdGlTZWdtZW50KQogICAgIH07CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNo
ZWNrKHNoYXJlZEJ1ZmZlcik7Ci0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzaW1wbGVUZXh0LCBzdHJs
ZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVk
QnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVm
ZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIEVY
UEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhi
dWlsZGVyLnRha2UoKSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9
IDUpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCA1KTsKLSAg
ICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0g
ICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRl
eHRbaV0sIDUpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRl
eHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlclRlc3QsIGNoYW5naW5nSXRlcmF0b3IpCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKaW5kZXggOWI4
YjEzYTc1ZDUyZmY5NTFlYWQxODE4NWQ1NmMzNzkxYjJkN2JlZC4uZDAzNDFhODFkZWRhNzE5ZjM1
ZmNjZTM5NDY1NWVjMjU1YWI4ZmJiNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcApAQCAtMzEsNyArMzEsNyBAQAog
CiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLXZvaWQgU2hhcmVkQnVmZmVyVGVzdDo6U2V0
VXAoKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6U2V0VXAoKQogewogICAgIFdU
Rjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKIApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIFNoYXJl
ZEJ1ZmZlclRlc3Q6OlNldFVwKCkKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsK
IH0KIAotdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpUZWFyRG93bigpCit2b2lkIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXJUZXN0OjpUZWFyRG93bigpCiB7CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmls
ZShtX3RlbXBGaWxlUGF0aCk7CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBFbXB0
eUZpbGVQYXRoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXJUZXN0LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyVGVzdC5oCmluZGV4IDY0MDExOWJkZTZmY2U0MWYwMWVhYWI2MzE2ODQ3YmU1
NmI5MGNmNWMuLmEzOTJhMDUxOTQ3NTZkMmFkNTZlODI0OTI5ZWNlNGMxNWYzYWQwNTUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0
LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRl
c3QuaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLWNs
YXNzIFNoYXJlZEJ1ZmZlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIHB1YmxpYzoK
ICAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3Bs
YXlMaXN0VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cv
RGlzcGxheUxpc3RUZXN0c0NHLmNwcAppbmRleCBkODQ2YzAyNWUwZGNkOGNhODI5YjcxMjczZGFm
MWY3MDdlOWQ5MmRkLi5hZmVhYTFlMWExOGVhODJiZTFhYjYzMzJiODMxYjI2ZjY0MDE4M2Y5IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxp
c3RUZXN0c0NHLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cv
RGlzcGxheUxpc3RUZXN0c0NHLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIHJldHVybiB7IGdsb2JhbEJ1ZmZlcklkZW50aWZpZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGds
b2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QgZmlu
YWwKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGlu
ZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggOTMz
MzFkNzAyYzUzMGIyNGM0N2NjMDlhNjhjZmIxODg1ZDRlYjExMC4uYzNiNWQzZThkN2MwM2IxYTM2
NWRkNTM1YTBiMjlhZGUyN2FjZWNhOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUsMTkgKzQ1LDIw
IEBAIHN0YXRpYyB2b2lkIGV4cGVjdERhdGFBcnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAqPiAq
ZXhwZWN0ZWQsIE5TQXJyYXk8TlNEYXRhICo+CiAgICAgfQogfQogCi1URVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
clRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAg
ICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIGV4cGVj
dERhdGFBcnJheXNFcXVhbChuaWwsIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7
CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5l
bXB0eSgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWlsZGVyLmdldCgp
LT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0
YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVm
ZmVyLT5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0
aCk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVmZmVy
LT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNv
bnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGV4
cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRl
TlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICp3b3JsZERhdGEgPSBbTlNE
YXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBw
ZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKLSAgICAgICAgZXhwZWN0RGF0YUFy
cmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRh
QXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFS
ZWYpd29ybGREYXRhKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0
YSwgd29ybGREYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OwogCiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAg
ICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJh
eSgpLmdldCgpKTsKQEAgLTY2LDM1ICs2NywzNSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y3JlYXRlTlNEYXRhQXJyYXkpCiAgICAgfQogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
clRlc3QsIGNyZWF0ZU5TRGF0YUZvckRhdGFTZWdtZW50KQogewogICAgIEBhdXRvcmVsZWFzZXBv
b2wgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAg
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKIAogICAgICAgICBOU0RhdGEgKmhlbGxv
RGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAg
YnVmZmVyLT5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxl
bmd0aCk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0
ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05T
RGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFw
cGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKIAogICAgICAgICBOU0FycmF5ICpl
eHBlY3RlZERhdGEgPSBAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdOwogICAgICAgICBOU1VJbnRl
Z2VyIGV4cGVjdGVkU2l6ZSA9IGhlbGxvRGF0YS5sZW5ndGggKyB3b3JsZERhdGEubGVuZ3RoOwog
CiAgICAgICAgIE5TVUludGVnZXIgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgZm9yIChhdXRv
JiBzZWdtZW50IDogYnVmZmVyLmdldCgpKQorICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiAq
YnVpbGRlci5nZXQoKSkKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtzZWdtZW50LnNlZ21lbnQt
PmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsr
XV0pOwogICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQp
OwogCiAgICAgICAgIE5TVUludGVnZXIgcG9zaXRpb24gPSAwOwogICAgICAgICBzZWdtZW50Q291
bnQgPSAwOwotICAgICAgICB3aGlsZSAoYnVmZmVyLT5zaXplKCkgPiBwb3NpdGlvbikgewotICAg
ICAgICAgICAgYXV0byBpbmNyZW1lbnRhbERhdGEgPSBidWZmZXItPmdldFNvbWVEYXRhKHBvc2l0
aW9uKTsKKyAgICAgICAgd2hpbGUgKGJ1aWxkZXIuc2l6ZSgpID4gcG9zaXRpb24pIHsKKyAgICAg
ICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEo
cG9zaXRpb24pOwogICAgICAgICAgICAgRVhQRUNUX1RSVUUoW2luY3JlbWVudGFsRGF0YS5jcmVh
dGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsK
ICAgICAgICAgICAgIHBvc2l0aW9uICs9IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAgICAgICAg
IH0KICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsK
IAotICAgICAgICBhdXRvIGxhc3RCeXRlID0gYnVmZmVyLT5nZXRTb21lRGF0YShleHBlY3RlZFNp
emUgLSAxKTsKKyAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVE
YXRhKGV4cGVjdGVkU2l6ZSAtIDEpOwogICAgICAgICBFWFBFQ1RfVFJVRShbbGFzdEJ5dGUuY3Jl
YXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpbQCJkIiBkYXRhVXNpbmdFbmNvZGluZzpOU0FTQ0lJ
U3RyaW5nRW5jb2RpbmddXSk7CiAgICAgICAgIEVYUEVDVF9FUSgxTFUsIGxhc3RCeXRlLnNpemUo
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNv
cmVTdHVicy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNw
cAppbmRleCA0NmM3NjIwM2UxYjI1YWFhYjdhMDJlMGJiMmJmNWUwYzQzNmVkNjg3Li41YmU2NjU5
NDYxMzczMWUyMWVkOTdkYTc0YzU3MzhjN2NhMjg1YmY0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNwcApAQCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVk
ZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKikKK1JlZlB0cjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIq
KQogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwppbmRleCA4OTIzOTJkODdm
NzQwMGViZmE5OGY1YTg2NTNjOWZkNGUyNzU1ZjU5Li43MDgwYTZjZjdhNmQyMjAwYWUzMDNjMjJj
ZTczMTE5MTBkZGFhMWYyIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEy
LTAyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGlu
Z3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5k
IGd1YXJhbnRlZSBpbW11dGFiaWxpdHk6IHBhcnQgMworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEZWNvZGVyVGVzdC9EZWNvZGVyVGVzdC9tYWluLm1t
OgorICAgICAgICAobWFpbik6CisKIDIwMjEtMTEtMjEgIENhdGhpZSBDaGVuICA8Y2F0aGllY2hl
bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtQZXJmb3JtYW5jZSB0ZXN0XVtjc3MtY29udGFpbl0g
QWRkIGNhc2UgdG8gdGVzdCBjb250YWluOiBsYXlvdXQgaW5zaWRlIGEgY29tcGxleCBkb2N1bWVu
dAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446006</attachid>
            <date>2021-12-05 23:27:18 -0800</date>
            <delta_ts>2021-12-05 23:27:55 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233677-20211206182714.patch</filename>
            <type>text/plain</type>
            <size>774915</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YTJiZTEzOTE2MjhmNTNiNmQ2ZDIyZTEzY2E3ZmIyYmRkMjA1ZWYzLi5kMTcyNDIwMTVhOGI5Zjc3
ZTRmZWM3M2Y1YjMwMzdhZThkMDkxODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8v
cHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBi
ZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0FycmF5QnVmZmVyLmg6CisKIDIwMjEtMTItMDMgIEtlaXRoIE1pbGxlciAgPGtlaXRo
X21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFN0cnVjdHVyZUlEQmxvYgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGJkZjA1OWEwOTIxYTlkYzZmMDNlYTQwN2RkNjNiZDkwMDlkNGQyOWIuLjUyMmVl
N2E1NzMyNTg0ZDM3NzcyYzdiMWE1ODAzYzI2MmM2NWY5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMDMyIEBACisyMDIxLTEyLTA1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgU291cmNlQnVmZmVyUGFyc2VyIHNob3VsZCBiZSB1c2luZyBjb250aWd1b3Vz
IFNoYXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzODY1CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg2MDg1MjUzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGlu
ZyB0ZXN0cywgbm8gb2JzZXJ2YWJsZSBkaWZmZXJlbmNlcy4KKworICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRp
b0ZpbGVSZWFkZXJDb2NvYS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNl
QnVmZmVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
OjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZh
dGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpyZWFkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6
OmdldFNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNs
YXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAg
IHR5cGVzLgorCisgICAgICAgIFJlbmFtZSBvbmx5LCBubyBjaGFuZ2UgaW4gYmVoYXZpb3VyLgor
CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIu
Y3BwOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVh
ZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oOgorICAgICAgICAqIE1vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKiBN
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06Cisg
ICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6
CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50
Lmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNw
cDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAg
ICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmg6CisgICAgICAg
ICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOgorICAgICAgICAqIE1vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hMb2FkZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAqIE1v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodC5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFJhbmdlRGF0YS5jcHA6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhLmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3Rv
cmFnZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFn
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9u
LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlv
bi5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmg6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAg
KiBkb20vRGF0YVRyYW5zZmVyLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6Cisg
ICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YS5oOgorICAgICAgICAqIGVkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oOgor
ICAgICAgICAqIGVkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcDoKKyAgICAg
ICAgKiBlZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oOgorICAgICAgICAqIGVk
aXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1M
Q29udmVydGVyLm1tOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tOgorICAgICAgICAqIGVkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwOgor
ICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKiBmaWxlYXBpL0Js
b2IuaDoKKyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwOgorICAgICAgICAq
IGZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5
RG9jdW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoK
KyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9JbWFnZURvY3VtZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbldlYktpdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbldlYktpdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogbG9hZGVyL0Nv
bnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENo
ZWNrZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6Cisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBsb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Qu
Y3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaDoKKyAg
ICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9SZXNv
dXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1
YnN0aXR1dGVEYXRhLmg6CisgICAgICAgICogbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oOgorICAgICAgICAqIGxv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgICogbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg6CisgICAgICAgICogbG9hZGVy
L2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0Fy
Y2hpdmVGYWN0b3J5Lmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNl
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaDoKKyAgICAg
ICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmg6CisgICAgICAgICogbG9hZGVyL2Fy
Y2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTEFyY2hpdmUuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRN
TFBhcnNlci5jcHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JD
b2NvYS5oOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06
CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAqIHBhZ2UvRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2VT
ZXJpYWxpemVyLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmg6CisgICAgICAg
ICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YVJlYWRlci5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9O
b3dQbGF5aW5nTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3Rv
bURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1BsYXRmb3JtQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFz
dGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Q
cmV2aWV3Q29udmVydGVyQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZl
cnRlclByb3ZpZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5m
by5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL05v
d1BsYXlpbmdJbmZvLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxl
UmVhZGVyQ29jb2EuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oOgorICAgICAgICAqIHBs
YXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9O
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2Nv
Y29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW06CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1No
YXJlZEJ1ZmZlckNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TUluc3RhbmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFu
Y2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tl
eWVkRW5jb2RlckdsaWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVy
R2xpYi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9y
bURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
RGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dl
YktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1h
dGhEYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZU1hdGhEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVUeXBlcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVmVydGljYWxEYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
RGlyZWN0V3JpdGVVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9TZWxlY3Rpb25EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
U2NhbGFibGVJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVy
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURl
Y29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVH
MjAwMEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
cG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
UGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJv
YXJkSU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9EYXRhVVJMRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJM
U2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJM
U2Vzc2lvbi5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5o
OgorICAgICAgICAqIHBsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
d2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5jcHA6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oOgorICAgICAgICAqIHRl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRl
bnRGaWx0ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5oOgorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKiB4bWwvWFNMVFBy
b2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcDoKKworMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAg
cmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU2ltaWxhciB0byBTdHJpbmdCdWlsZGVyLCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93
IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3VnaAorICAgICAgICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIu
IEEgU2hhcmVkQnVmZmVyIGJlY29tZXMgaW1tdXRhYmxlIG9uY2UgY3JlYXRlZC4KKworICAgICAg
ICBGbHktQnk6IFBhc3MgU2hhcmVkQnVmZmVyIHZpYSBjb25zdCByZWZlcmVuY2VzIG9yIHBvaW50
ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAgICAgICB0byBkbyBzby4KKyAgICAgICAgTm8gY2hhbmdl
IGluIG9ic2VydmFibGUgYmVoYXZpb3VyOyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisg
ICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmNsZWFuKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYik6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNlKToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25z
dW1lcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6
c2V0RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxN
b2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0
U291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNl
aXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hl
ZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
OnJlbW92ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
ZGVjb2RlRGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3Vy
Y2VEYXRhOjpoYXNCdWZmZXJlZERhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3Rp
dHV0ZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6
cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0
aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2Fk
aW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRG
b250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6
ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNo
TG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0
VHJhY2s6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0
VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oOgorICAgICAgICAq
IGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdM
b2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdD
b252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgor
ICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVpbGRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJCdWlsZGVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyQnVpbGRlcjo6b3BlcmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyOjppc051bGwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxk
ZXI6OmVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW5zdXJlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVk
aWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bml0RGF0YTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpwYXlsb2FkIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURl
Y29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6
UHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGE6OkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0lu
UmFuZ2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9y
OjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YSk6CisgICAgICAgICogd29ya2Vycy9TY3Jp
cHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjp0b1N0cmluZyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNl
Z21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjphcHBlbmQpOgor
ICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6
Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlz
RW1wdHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6V29ya2VyRm9udExv
YWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQ
ZW5kaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6
ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRS
ZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9h
ZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUJsb2IpOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQXJyYXlCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VCdWZmZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1s
L1hNTEh0dHBSZXF1ZXN0Lmg6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZl
ciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAg
ICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdoZW4gY2FsbGluZyBTaGFyZWRCdWZmZXI6OmRhdGEoKSB0aGUgdW5kZXJs
eWluZyBkYXRhIHdhcyBmbGF0dGVuZWQsCisgICAgICAgIGFuZCBzbyBjb3VsZCBiZSBtdXRhdGVk
IHdoaWxlIGJlaW5nIHNoYXJlZC4gVGhpcyB3YXMgYW4gdW5kZXNpcmFibGUKKyAgICAgICAgYmVo
YXZpb3VyLgorICAgICAgICBXZSBpbnRyb2R1Y2UgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB3aGlj
aCBndWFyYW50ZWUgdGhhdCBpdHMgY29udGVudCBpcyBtYWRlCisgICAgICAgIG9mIGNvbnRpZ3Vv
dXMgZGF0YS4KKyAgICAgICAgQWxsIG1ldGhvZHMgdGhhdCB3b3VsZCBoYXZlIG11dGF0ZWQgYSBT
aGFyZWRCdWZmZXIgd2hlbiBiZWluZyBmbGF0dGVuZWQgYXJlCisgICAgICAgIG1vdmVkIHRvIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisKKyAgICAgICAgQXJlYSB3aGVyZSBTaGFyZWRCdWZmZXJz
IHdlcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBhIHNpbmdsZSBzZWdtZW50IHdoZXJlCisgICAgICAg
IGNvbnZlcnRlZCB0byBhIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisgICAgICAgIFByZXZpb3Vz
bHksIGEgU2hhcmVkQnVmZmVyIHdvdWxkIGhhdmUgYmVlbiBmbGF0dGVuZWQgb25seSBpZiBpdCBu
ZWVkZWQgdG8gYmUKKyAgICAgICAgYW5kIG9ubHkgd2hlbiB0aGUgZGF0YSB3YXMgZ29pbmcgdG8g
YmUgYWNjZXNzZWQ7IGZvbGxvd2luZyB0aGlzIGNoYW5nZQorICAgICAgICB0aGUgY29udmVyc2lv
biBpcyBub3cgZXhwbGljdGx5IGRvbmUgdGhyb3VnaCBhIGNhbGwgdG8gbWFrZUNvbnRpZ3VvdXMu
CisgICAgICAgIFRoaXMgY29udmVyc2lvbiBpcyBhIG5vLW9wIGlmIHRoZSBTaGFyZWRCdWZmZXIg
YmVpbmcgY29udmVydGVkIHdhcyBhbHJlYWR5CisgICAgICAgIGEgQ29udGlndW91c1NoYXJlZEJ1
ZmZlci4KKyAgICAgICAgV2l0aCB0aGUgbmF0dXJlIG9mIGEgU2hhcmVkQnVmZmVyIGJlaW5nIHNo
YXJlZCBieSBwb3RlbnRpYWxseSBtdWx0aXBsZQorICAgICAgICB1c2VycyBpdCB3YXMgbmVjZXNz
YXJ5IHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgY29udmVyc2lvbnMgYmVpbmcgcGVyZm9ybWVkCisg
ICAgICAgIG9uIGRlbWFuZCB0byBhdm9pZCByZWR1bmRhbmN5LgorICAgICAgICBXaGVuIHRoZSBm
bGF0dGVuaW5nIGNvdWxkIGhhdmUgb2NjdXJlZCwgdGhlIFNoYXJlZEJ1ZmZlciBjcmVhdGlvbiBw
b2ludHMgd2VyZQorICAgICAgICB0cmFjZWQgYmFjayBhbmQgaWRlbnRpZmllZCB0byBtYWtlIHRo
ZSBidWZmZXIgY29udGlndW91cyB0aGVuLgorICAgICAgICBJbiB0aGUgZW5kLCB0aGVyZSdzIG5v
IG1vcmUgU2hhcmVkQnVmZmVyIGZsYXR0ZW5pbmcgb3BlcmF0aW9ucyB0aGFuIHRoZXJlCisgICAg
ICAgIHdvdWxkIGhhdmUgYmVlbiBiZWZvcmUgdGhpcyBjaGFuZ2UuCisgICAgICAgIFRoZXJlJ3Mg
YSBwb3RlbnRpYWwgaW5jcmVhc2Ugb2YgdGVtcG9yYXJ5IG1lbW9yeSB1c2FnZSB3aXRoIHRoZQor
ICAgICAgICBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlciBjbGFzczsgYnVnIDIzMzUxMSBpcyB0
cmFja2luZyBpdC4KKworICAgICAgICBXaGlsZSB0aGUgY2hhbmdlIGlzIGV4dGVuc2l2ZSwgY29k
ZSBjb3ZlcmFnZSBvZiB0aGUgbW9kaWZpZWQgYXJlYXMgaXMgdGhvcm91Z2gKKyAgICAgICAgd2hp
Y2ggbWFrZXMgdW5kZXRlY3RlZCByZWdyZXNzaW9ucyB1bmxpa2VseS4KKworICAgICAgICBJbiBi
dWcgMjMzNDQyLCBhIFNoYXJlZEJ1ZmZlciB3aWxsIGJlIG1hZGUgY29tcGxldGVseSBpbW11dGFi
bGUgb25jZSBjcmVhdGVkLgorCisgICAgICAgIE5vIG9ic2VydmFibGUgY2hhbmdlLgorICAgICAg
ICBDb3ZlcmVkIGJ5IGFsbCBleGlzdGluZyB0ZXN0cy4gTmV3IEFQSSB0ZXN0cyBjcmVhdGRlZC4K
KworICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVk
KToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVh
ZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2Fy
ZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFk
ZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpj
b21wdXRlUmVhbEJvZHlTaXplKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
Q2FjaGU6OnB1dCk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVzcG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9uc2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9J
bml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlp
ZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6a2V5SWRzTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0
ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
aDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6
Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
UmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBN
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNlcmlhbGl6ZUlEQktleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5
RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRp
b24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tl
ZEhhc0luZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFj
a2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVL
ZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
Q3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29y
OjpiaW5kQXJndW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
Q3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkpOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlU
b1NlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxl
bWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9z
Y2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tOgorICAgICAgICAoV2ViQ29yZTo6d3Jp
dGVUb1RlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rp
b24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6
CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8pOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9y
Lmg6CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaDoKKyAgICAg
ICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6YXJj
aGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6c2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmRhdGFJblJURkZvcm1hdCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVy
Lm1tOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KToK
KyAgICAgICAgKGZpbGVXcmFwcGVyRm9yVVJMKToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yRWxl
bWVudCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJD
b250ZW50UmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFy
a3VwUmVhZGVyOjpyZWFkUlRGRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVy
OjpyZWFkUlRGKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJl
YWRSVEYpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogaHRtbC9G
VFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUZW1wbGF0
ZURvY3VtZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBh
cnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRhVG9Db250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudCk6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudCk6CisgICAgICAg
ICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZp
bHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2lu
UHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZs
aWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJj
aGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURh
dGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNo
TG9hZGluZ011bHRpcGFydENvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6Cisg
ICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1ZmZlckZyb21S
ZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVM
b2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpleHRy
YWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxl
Y3Rpb24pOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6
ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjplbnN1cmVDdXN0
b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjcmVhdGVDdXN0b21G
b250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpjaGVja05vdGlmeSk6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0
ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVz
b3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9h
ZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oOgorICAgICAgICAqIGxvYWRlci9jb2Nv
YS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVN
b25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9u
c2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVG
aWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAqIHBh
Z2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldCBjb25z
dCk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMpOgorICAgICAgICAqIHBhZ2UvUGFn
ZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YS5oOgorICAgICAgICAqIHBh
Z2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRl
cjo6U2hhcmVEYXRhUmVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVi
b2FyZEN1c3RvbURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vUGFz
dGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRl
Z3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1By
b21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6aXNDb250aWd1b3VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y29weSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omhhc09uZVNlZ21lbnQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFT
ZWdtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50Ojpjb250
YWluc01hcHBlZEZpbGVEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmRlY29kZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21l
bnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6
OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpkYXRhQXNDaGFyUHRyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFTZWdtZW50OjpEYXRhU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0
Tm93UGxheWluZ0luZm8pOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZyk6Cisg
ICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUSUZGVG9QTkcpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayk6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW06CisgICAgICAgICgt
W1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGluaXRXaXRoRGF0YVNlZ21lbnQ6cG9zaXRpb246c2l6
ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5T
RGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdt
ZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1VdGlsaXRpZXM6OnBh
cnNlSlNPTk9iamVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0
aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJv
bUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUlu
aXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2Rp
bmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9T
aGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZUdCeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01v
ZGVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5o
OgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpNb2RlbDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmls
ZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVUludDMyKToKKyAgICAgICAgKFdl
YkNvcmU6OnJlYWRVSW50MTYpOgorICAgICAgICAoV2ViQ29yZTo6aXNXT0ZGKToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRX
T0ZGVG9TZm50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZG
aWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RTaW5mRGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpwYXJz
ZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZSk6
CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQ
cm92aWRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyk6CisgICAgICAgIChXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3Zp
ZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW06CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFM
b2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVVJMUmVzb3VyY2VN
ZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2RlckNHOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0
ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxh
dGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpw
bGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZy
ZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3N0TWFwcGVkT3duZWRCdWZmZXI6
OmNyZWF0ZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lckNvbW1vbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRh
dGFFbmNvdW50ZXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFya3VwVGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpJbml0RGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFs
aWNDb3JyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5
cGhJbmZvOjptYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpHbHlwaEFzc2VtYmx5OjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldFNpemVW
YXJpYW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29u
c3RydWN0aW9uOjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
ZW5UeXBlOjpNYXRoVmFyaWFudHM6Om1hdGhHbHlwaENvbnN0cnVjdGlvbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoQ29uc3RhbnRzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhHbHlwaEluZm8gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRz
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1h
dGhEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVU
eXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OnZhbGlkYXRlVGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFzZTo6aXNWYWxpZEVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxpZGF0ZVB0cik6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjp2YWxpZGF0ZU9mZnNldCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVXaXRoQ292ZXJhZ2U6OmdldENvdmVyYWdlSW5k
ZXggY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbmFtZUZvbnQpOgorICAgICAgICAo
V2ViQ29yZTo6cmVuYW1lQW5kQWN0aXZhdGVGb250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpTdWJzdGl0dXRpb25TdWJUYWJsZTo6Y292ZXJhZ2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1cFRhYmxlOjpnZXRTdWJzdGl0dXRpb25zIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMb29rdXBMaXN0Ojpsb29rdXAgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVUYWJsZTo6Z2V0R2x5cGhT
dWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJl
TGlzdDo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVy
ZUxpc3Q6OmZpbmRGZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpM
YW5nU3lzVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OlNjcmlwdFRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpP
cGVuVHlwZTo6U2NyaXB0TGlzdDo6c2NyaXB0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
ZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0U2NyaXB0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpzY3JpcHRMaXN0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmZlYXR1cmVMaXN0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6Omxvb2t1cExpc3QgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZGVmYXVsdExhbmdTeXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZmVhdHVyZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpnZXRWZXJ0aWNhbEds
eXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpsb2FkSG10eFRhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5
cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQ
bGF0Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1E
YXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZv
cm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9TZWxlY3Rpb25EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpz
ZXRDdXN0b21EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6OmN1c3RvbURh
dGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRJQ0NQcm9maWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkxpc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRCdWZmZXJBdFByZWZlcnJlZEl0
ZW1JbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZVBhc3RlYm9hcmRXcml0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBh
c3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1
ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBl
c1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0
Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVi
b2FyZDo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVi
b2FyZEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxT
ZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2ZWREYXRhOl0pOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJl
cXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1No
YXJlZEJ1ZmZlcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZh
Y3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETTo6c2FuaXRpemVSZXNwb25zZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRp
ZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0
ZUxpY2Vuc2UpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9u
dERhdGEpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJG
ZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NS
ZXNwb25zZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3Jh
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZSk6Cisg
ICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmRvY0xvYWRlckZ1bmMpOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5GdW5jKToKKwogMjAyMS0xMi0wMyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBCcm9hZGNhc3RD
aGFubmVsLCBDT09QLCBDT0VQIGFuZCBXZWIgTG9ja3MgdG8gZmVhdHVyZXMuanNvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA4Nzc2OTE0OTc2YjJhOTJmNzZkZDg3NjExZDI4MWEwMjhiMTM3NDk1Li42NmYyYjk0MDUz
NTZjMjdiNjg0ZDE5MDMwMDFiNjBmZjIxMzczM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzMiBA
QAorMjAyMS0xMi0wNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAg
ICAgIFNvdXJjZUJ1ZmZlclBhcnNlciBzaG91bGQgYmUgdXNpbmcgY29udGlndW91cyBzaGFyZWQg
YnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzM4NjUKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODYwODUyNTMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Nv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlOjphcHBlbmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaDoKKworMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2
ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xh
c3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVy
IHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAg
dHlwZXMuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJv
eHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5
LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHA6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
dXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENQcm92aWRlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJDb3B5LmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmg6CisgICAg
ICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2EubW06CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0
SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAq
IFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERh
dGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwOgorICAg
ICAgICAqIFNoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1
bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVM
aXN0U3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Z3RrL0NsaXBib2FyZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmg6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbToKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkYuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHA6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdD
bGllbnRNYWMubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwOgor
CisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVF
bnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6
OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3Vs
YXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRhc2spOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6UGx1Z2luVmlldyk6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKToKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByZXZp
ZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6CisKKzIwMjEtMTEtMjUgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBj
b250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFu
dGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVjb3Jk
ZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVl
c3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
YWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3Jh
Z2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6
ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9z
b3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0
YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckNvcHkuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUp
OgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5Lmg6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk6OlNoYXJlZEJ1ZmZlckNvcHkpOgorICAgICAgICAoSVBDOjpT
aGFyZWRCdWZmZXJDb3B5OjpidWZmZXIpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5
OjpidWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJ
V2ViQXJjaGl2ZVJlc291cmNlLm1tOgorICAgICAgICAoQVBJOjpXZWJBcmNoaXZlUmVzb3VyY2U6
OmRhdGEpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2Nv
YS5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+Ojpk
ZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1
ZmZlciBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmg6CisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmRl
Y29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmVuY29kZVR5cGVzQW5kRGF0YSk6Cisg
ICAgICAgIChJUEM6OmRlY29kZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVu
dERhdGE+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5j
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRC
dWZmZXI+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKiBT
aGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50
OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAgICAoQVBJOjpB
dHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKEFQSTo6Z2V0RGF0YSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06CisgICAg
ICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiBjb25z
dCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVz
ZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX3N0b3JlQXBwSGlnaGxpZ2h0Ol0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJv
cFRhcmdldDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5h
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nl
c3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBj
YW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0pOgorICAgICAgICAoYWxsUGFz
dGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJbWFnZTpyZWN0Ol0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoKKyAg
ICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFj
L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAg
KC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9zZXRFZGl0aW5n
RGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpyZWxlYXNlU2hhcmVkQnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3
aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9BUktp
dElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlw
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZy
b21DbGlwYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJE
cmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpzb3Vy
Y2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5t
bToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRl
b0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgY29uc3QpOgorCiAyMDIxLTEyLTAz
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1Nd
IFdlYiBjb250ZW50IHByb2Nlc3Mgc29tZXRpbWVzIGNyYXNoZXMgdW5kZXIgV2ViUGFnZTo6cG9z
aXRpb25JbmZvcm1hdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IGQ3NzZlODJkZjEzMmNh
ZjY1Mjc5M2E3OWEwMDgzYWQ2NTU5ZGMyNjUuLjM3NzdmMmE1NmJjOGU2MDRlOTQ1MWU4YmQxMmUy
NWI0M2EzNTE2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEt
MTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5h
bWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRC
dWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhl
aXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGlu
Z0hhbmRsZS5oOgorCiAyMDIxLTExLTEyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
IAogICAgICAgICBNYWtlIHNvcnQtWGNvZGUtcHJvamVjdC1maWxlIGlkZW1wb3RlbnQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA3NmFhNmFhZjg0ZGViMDgyZTRjODQzMjI0OTMzODBk
ODMzZGU5MmQxLi4yMDU4NDUzNDQ5ODQ5NTc3YzU1MDExY2Q1OWNlODgzYmViZDllNmMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMjEtMTItMDMgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVk
QnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJl
IHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1No
YXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFs
CisgICAgICAgIHR5cGVzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNv
dXJjZS5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAqIFdl
YlZpZXcvV2ViUmVzb3VyY2UubW06CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1
ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisg
ICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1b
RE9NSFRNTEltYWdlRWxlbWVudCBkYXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Lm1tOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAg
ICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFT
b3VyY2UgZGF0YV0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1t
OgorICAgICAgICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51
SXRlbSk6CisgICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2Vi
UmVzb3VyY2UgZW5jb2RlV2l0aENvZGVyOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRh
XSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIxLTEyLTAy
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dl
YkdQVV0gSG9vayB1cCBuYXZpZ2F0b3IuZ3B1LnJlcXVlc3RBZGFwdGVyKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwppbmRleCAwMmU5NDZiYzFmYjBiMzU2YmIxNWFiODM2MGU4NjE0NTU0NzI0
N2NjLi5hNmQ3YWZkMDBmY2RiN2JhOTkxMzU5ZDcyMjNlYWI3YjQ0NGJiNTRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZl
cyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVy
IGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFt
ZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAg
ICAgIHR5cGVzLgorCisgICAgICAgICogTWVtb3J5U3RyZWFtLmNwcDoKKyAgICAgICAgKiBNZW1v
cnlTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJG
cmFtZS5oOgorICAgICAgICAqIFdlYktpdERMTC5jcHA6CisgICAgICAgICogV2ViUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAqIFdlYlJlc291cmNlLmg6CisKKzIwMjEtMTItMDEgIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRl
ciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJh
bWU6OmxvYWREYXRhKToKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZy
b20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAg
cmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBNZW1vcnlTdHJlYW0uY3BwOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpNZW1v
cnlTdHJlYW0pOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSk6CisgICAg
ICAgICogTWVtb3J5U3RyZWFtLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAg
IChXZWJBcmNoaXZlOjpkYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJEYXRhU291cmNlOjpkYXRhKToK
KyAgICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZTo6Y3JlYXRl
SW5zdGFuY2UpOgorICAgICAgICAqIFdlYlJlc291cmNlLmg6CisKIDIwMjEtMTItMDIgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBNYWtlIFdlYiBMb2Nr
IEFQSSB3b3JrIGFjcm9zcyBtdWx0aXBsZSBXZWJQcm9jZXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmluZGV4IGVhY2NhMmMyMzNhOGE2OTM3MTU5MDgw
N2RmZDM2NzViMDYxNTk0MjguLmI0NjkzZjkxYzYwN2Q4ZDA3NDU5NDY0NmU4ZGM0MzcyZTliYzk5
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAt
MTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
UHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoQXJyYXlCdWZmZXImKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCog
c291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAKLSAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWlu
dDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIuCisgICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBl
ZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkIGFuZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Ojp0cnlDcmVhdGVBcnJheUJ1ZmZlci4KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
PEFycmF5QnVmZmVyPiBjcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5z
aWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
UHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50
cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIu
Y3BwCmluZGV4IDMzNTRiNTJhNTBjYmIxODlmZGZhZWI3ZDgyNDgzYmUwYzQxYzNkNGUuLmRhMzM2
ZTZmNWIxNjk0ZTM3NDc2OTBjNDNkMmI1M2YzNTE4YzA5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFn
ZVJlYWRlci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYg
IVBMQVRGT1JNKENPQ09BKQogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lk
IENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaAppbmRleCAyYjYyNjI4NDE5YjA5Y2Ji
Njk1NTIxNWIwZDVkN2Q3M2MwYjM3NDRkLi42ZTIyMDQ4Y2Y1ZmVhOWFhNjJkYWRmNDViMWYzNWM0
Y2UwZDdkNmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKQEAgLTMxLDcgKzMxLDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgQ2xpcGJvYXJkSW1h
Z2VSZWFkZXIgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQpAQCAtNDcsNyAr
NDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZp
bmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIGJvb2wgc2hvdWxkUmVhZEJ1ZmZl
cihjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
KSBmaW5hbDsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29u
c3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAK
ICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4
IGQwNzQ2ZGEyZGEyMDllMDIzMjViNWZhMjE0ZGJlZTY0YmY5YzkwNzguLmVmZjEwYjViNjVmZDgx
YWQ5YmEzMmY4MGIzZjJjZjJmOGU5OGYxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0yMTYsOCArMjE2LDggQEAgdm9pZCBDbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjppbnZva2VDb21wbGV0aW9uSGFuZGxlcigpCiAgICAg
ICAgIGF1dG8mIGRhdGEgPSBpdGVtVHlwZUxvYWRlci0+ZGF0YSgpOwogICAgICAgICBpZiAoc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRhdGEpICYmICEhc3RkOjpnZXQ8U3RyaW5nPihk
YXRhKSkKICAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVTdHJpbmcodHlwZSwgc3RkOjpnZXQ8
U3RyaW5nPihkYXRhKSk7Ci0gICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQotICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZURh
dGEodHlwZSwgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpLmNvcHlSZWYoKSk7Cisg
ICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PihkYXRhKSkKKyAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUs
IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZGF0YSkuY29weVJlZigpKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxv
cHQpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjY1LDkgKzI2NSw5IEBAIHZvaWQgQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0
aXplRGF0YUlmTmVlCiB7CiAgICAgaWYgKG1fdHlwZSA9PSAidGV4dC9odG1sIl9zKSB7CiAgICAg
ICAgIFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgewotICAgICAgICAgICAgYXV0byYg
YnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Ci0gICAgICAgICAg
ICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpOworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKKyAgICAgICAgICAgIGF1dG8mIGJ1ZmZl
ciA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKKyAgICAg
ICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBtYXJr
dXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwogCkBAIC0yNzgsOSArMjc4
LDkgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVt
VHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKICAgICB9CiAKICAgICBpZiAobV90eXBlID09
ICJpbWFnZS9wbmciX3MpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9T
YW5pdGl6ZTsKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1
ZmZlcj4+KG1fZGF0YSkpCi0gICAgICAgICAgICBidWZmZXJUb1Nhbml0aXplID0gc3RkOjpnZXQ8
UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkucHRyKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplOworICAgICAgICBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpCisgICAg
ICAgICAgICBidWZmZXJUb1Nhbml0aXplID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PihtX2RhdGEpLnB0cigpOwogICAgICAgICBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSB1
dGY4QnVmZmVyKHN0ZDo6Z2V0PFN0cmluZz4obV9kYXRhKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaAppbmRleCAyY2MyYzhlMWE1NGUxOGQ3MzQ5NWM1
MzBjZDc3ZDU0Zjk5YTUyOWE3Li4zN2M4MjVlMjM1YThhOGI3ZTQ0ZTQwZmIwYzJkNzcyNDQwN2E3
NTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCkBA
IC0zOCw3ICszOCw3IEBAIGNsYXNzIERPTVByb21pc2U7CiBjbGFzcyBGaWxlUmVhZGVyTG9hZGVy
OwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZSA6IHB1YmxpYyBDbGlwYm9h
cmRJdGVtRGF0YVNvdXJjZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Myw3
ICs1Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7
CiAKLSAgICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxT
aGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxT
dHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgY2xhc3MgQ2xpcGJvYXJk
SXRlbVR5cGVMb2FkZXIgOiBwdWJsaWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCwgcHVibGljIFJl
ZkNvdW50ZWQ8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAg
IHN0YXRpYyBSZWY8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcm
IHR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlw
Ym9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTI3
ODUyODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi4yNzRlMDM4ZDQxODcwMTYxZTRlZWI4MGMxMmFi
YmE4NzFmOWQ0YTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1t
CkBAIC0zNCwxMCArMzQsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENsaXBi
b2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6
cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3Bu
ZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5z
dGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAg
ICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGlu
aXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9IFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihp
bWFnZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jlc3VsdCA9IEJsb2I6OmNyZWF0ZShtX2RvY3Vt
ZW50LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obnNEYXRhLmJ5
dGVzKSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVUeXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXggYjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRk
NDkxMzE3ODY5ZGE3ZTViZi4uMzgyMWIwMzcxODAyODIzZDY5YTgzMGEzMTBkYTM0NzA4ZDYzMzA3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFj
L0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMzMsMTAg
KzMzLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJl
YWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAg
ICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1
ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0
TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBjZ0ltYWdlID0gW2lt
YWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0pIHsK
ICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRpb24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFn
ZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1hZ2VdKTsKICAgICAgICAgICAgIE5TRGF0
YSogbnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TQml0
bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCBlNmNjMWFhZTc4M2E1MjA5NGY2NTQ5OWJiOTBk
ZDdmMDA3MWQ0MjRjLi5mMDVjMjMzMDdiYzVhMGU1ODJkZGNkODYwZDViYjFhMWIzMDkzMjUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMjg5LDcgKzI4
OSw3IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3Ms
IERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBzaXplX3QgcmVjb3JkUG9zaXRpb24gPSB0YXNrSGFuZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVj
dGlvblJlY29yZChyZXF1ZXN0LmdldCgpLCByZXNwb25zZSwgbnVsbHB0cikpOwogCi0gICAgICAg
ICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBX
VEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5r
KFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0
YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAo
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRhc2tIYW5kbGVy
LT5pc0RvbmUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTksOSArMjk5
LDkgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywg
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAg
ICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkp
OworICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+
c2l6ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tI
YW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3Zl
KGRhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9k
eShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygp
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0
aWF0b3JzKCkuZmV0Y2gpOwogICAgIH0KQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIERPTUNhY2hl
OjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2Us
IFJlZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAg
IGlmIChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAg
ICAgICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBib2R5ID0gYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0
KCksIHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2
b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RB
bGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CkBAIC0zNzUsNyArMzc1LDcg
QEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9u
c2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVj
ZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5n
ZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVz
cG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCks
IHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRv
JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNl
aXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92
ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1
ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhp
cyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3Bv
bnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3Bv
bnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0zODMs
OSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZl
dGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAg
ICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAg
ICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURh
dGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSks
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShkYXRhKSB9KTsKKyAgICAgICAgICAgICAg
ICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVx
dWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IGRhdGEudGFr
ZSgpLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5j
cHAKaW5kZXggMjU5MTRiNDBiYjIzODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uYzBmODAz
MmIwNDUyYzM3ZWU0Y2FmYmNhZmQ3OWYwOWQyMTQ2MzMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCBS
ZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5
KQogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4m
IGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlz
b2xhdGVkQ29weSgpOwogICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IC0+IFJlc3BvbnNlQm9keSB7Ci0gICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICAg
ICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIFNoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxl
IGFuZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRy
X3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJl
c3BvbnNlQm9keSB7IH07CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5jcHAKaW5kZXggMjg1MGRiYTFlM2JmYTExZjQ4OWI0NDQwMzUxM2Q1MWFl
MWJlYWQzYS4uOWQxYmM2NzRmYzgyNmNiNmQxNmQwMjUxMGNmODQwMTBhZGNiZDc3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAtMTM1LDE3
ICsxMzUsMTcgQEAgYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0
ZS0+c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSk7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERh
dGEpCiB7CiAgICAgcmV0dXJuIEluaXREYXRhUmVnaXN0cnk6OnNoYXJlZCgpLnNhbml0aXplSW5p
dERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CiB9CiAKLWJvb2wgQ0RNOjpzdXBwb3J0c0lu
aXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSkKK2Jvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7
CiAgICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEoaW5p
dERhdGFUeXBlLCBpbml0RGF0YSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETTo6c2Fu
aXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQorUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiByZXNwb25zZSkKIHsKICAgICBpZiAoIW1fcHJpdmF0ZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9D
RE0uaAppbmRleCBkOGE0YjNhZjEyZjFhNzkyM2Q4ODcwNWQ1Yjk1ODFkMzZmMTAyNzBjLi5kN2Ix
ZDUzZDA0OTFmNzI3NzliNTk0YjJkODNjMDliODNiY2YyMDdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgQ0RN
SW5zdGFuY2U7CiBjbGFzcyBDRE1Qcml2YXRlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNIDogcHVibGljIFJlZkNvdW50ZWQ8Q0RNPiwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPENETT4sIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXIgewogcHVibGljOgpAQCAtNzMsMTAgKzczLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBv
cnRzU2Vzc2lvbnMoKSBjb25zdDsKICAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0
IEF0b21TdHJpbmcmKSBjb25zdDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXpl
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZm
ZXImKTsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBz
YW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NE
TUNsaWVudC5oCmluZGV4IDIxZTUyZjRiNzE0ZmI5MWY2N2NmYzM5NjEzOWMxNjUyNWJmYjdiOWIu
LjQxMGVkMmZiNjQyNzU2MmNlOWJkOGVkYTRkOTFhODZiYTk4Y2FhNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaApAQCAtMzYsMTQg
KzM2LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENETUluc3RhbmNlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3Mg
Q0RNQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPENETUNsaWVudD4gewogcHVibGljOgog
ICAgIHZpcnR1YWwgfkNETUNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCBj
ZG1DbGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVk
KGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBT
dHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4
OWE4ZDJlNDBhMzQxYTY3MDc0NDBmMmQ1Ni4uNmY4ODhlMTc4NThkZGE2ZDk0NzFlYzFmNmVmNWQw
NjZkZjBlNDk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCkBAIC01NCwxMyArNTQsMTMgQEAgbmFt
ZXNwYWNlIHsKICAgICBjb25zdCB1aW50MzJfdCBrS2V5SWRzTWF4S2V5SWRTaXplSW5CeXRlcyA9
IDUxMjsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRy
YWN0S2V5SURzS2V5aWRzKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICAvLyAxLiBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVk
LW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKICAgICBp
ZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5k
YXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmlu
ZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6
OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtNzQsNyArNzQsNyBAQCBzdGF0
aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURz
S2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIGlmICgha2lkc0FycmF5KQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7Cisg
ICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwogICAgIGZvciAo
YXV0byYgdmFsdWUgOiAqa2lkc0FycmF5KSB7CiAgICAgICAgIGF1dG8ga2V5SUQgPSB2YWx1ZS0+
YXNTdHJpbmcoKTsKICAgICAgICAgaWYgKCFrZXlJRCkKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tl
eWlkcyhjb25zdCBTaGFyZWQKICAgICByZXR1cm4ga2V5SURzOwogfQogCi1zdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CitzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyAxLiBGb3JtYXQK
ICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdp
c3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKQEAgLTEwNCwxNCArMTA0LDE0IEBAIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAg
ICAgYXV0byBraWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRv
JiBidWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1ZSgpKQotICAgICAgICBraWRzQXJyYXktPnB1c2hT
dHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKSk7CisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0
cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsK
ICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShraWRzQXJyYXkpKTsKIAogICAg
IENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5n
dGgoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90
ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFj
dFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRp
b25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hl
YWRlckJveD4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDQuIENvbW1vbiBT
eXN0ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1v
bi1zeXN0ZW0KQEAgLTE1MSw5ICsxNTEsOSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaQogICAg
IHJldHVybiBwc3NoQm94ZXM7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRC
dWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5
SURzOwogCiAgICAgYXV0byBwc3NoQm94ZXMgPSBleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoYnVm
ZmVyKTsKICAgICBpZiAoIXBzc2hCb3hlcykKQEAgLTE4NSw3ICsxODUsNyBAQCBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RL
ZXlJRHNDZW5jKGNvbgogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5Ojpz
YW5pdGl6ZUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IC8vIDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0CiAgICAgLy8gaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEv
Y2VuYy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAgLTE5NSw3ICsxOTUsNyBAQCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitz
dGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplV2ViTShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gQ2hlY2sgaWYgdGhlIGJ1
ZmZlciBpcyBhIHZhbGlkIFdlYk0gaW5pdERhdGEuCiAgICAgLy8gVGhlIFdlYk0gaW5pdERhdGEg
aXMgdGhlIENvbnRlbnRFbmNLZXlJRCwgc28gc2hvdWxkIGJlIGxlc3MgdGhhbiBrV2ViTU1heENv
bnRlbnRFbmNLZXlJRFNpemUuCkBAIC0yMDUsMTAgKzIwNSwxMCBAQCBzdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAg
IHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzV2ViTShjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzV2ViTShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkQnVmZmVyID0gc2FuaXRpemVXZWJNKGJ1ZmZl
cik7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6
ZVdlYk0oYnVmZmVyKTsKICAgICBpZiAoIXNhbml0aXplZEJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIApAQCAtMjMzLDcgKzIzMyw3IEBAIEluaXREYXRhUmVnaXN0cnk6Oklu
aXREYXRhUmVnaXN0cnkoKQogCiBJbml0RGF0YVJlZ2lzdHJ5Ojp+SW5pdERhdGFSZWdpc3RyeSgp
ID0gZGVmYXVsdDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2Fu
aXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRh
UmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBpdGVy
ID0gbV90eXBlcy5maW5kKGluaXREYXRhVHlwZSk7CiAgICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5l
bmQoKSB8fCAhaXRlci0+dmFsdWUuc2FuaXRpemVJbml0RGF0YSkKQEAgLTI0MSw3ICsyNDEsNyBA
QCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYQogICAgIHJldHVybiBpdGVyLT52YWx1ZS5zYW5pdGl6
ZUluaXREYXRhKGJ1ZmZlcik7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRC
dWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25h
bDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6
ZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3R5cGVzLmZp
bmQoaW5pdERhdGFUeXBlKTsKICAgICBpZiAoaXRlciA9PSBtX3R5cGVzLmVuZCgpIHx8ICFpdGVy
LT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaAppbmRleCBjZDEzODdhNmJk
MDM4ZmYzNGUyY2ZiNzVmNDQzZGU3ZDk0MDMyMWIwLi43N2Q2MDRiMDhiYjdmN2UzOGJjY2IzNTQ1
YjM0YzhiMTM0MzU1ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaApAQCAtMzgsMTkgKzM4LDE5IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hl
YWRlckJveDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIEluaXREYXRhUmVnaXN0cnkgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBJbml0RGF0YVJlZ2lzdHJ5JiBzaGFyZWQoKTsKICAgICBmcmllbmQgY2xhc3Mg
TmV2ZXJEZXN0cm95ZWQ8SW5pdERhdGFSZWdpc3RyeT47CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29u
c3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFj
dEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKTsKIAogICAgIHN0cnVjdCBJbml0RGF0YVR5cGVDYWxsYmFja3MgewotICAg
ICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8U2hh
cmVkQnVmZmVyPihjb25zdCBTaGFyZWRCdWZmZXImKT47Ci0gICAgICAgIHVzaW5nIEV4dHJhY3RL
ZXlJRHNDYWxsYmFjayA9IEZ1bmN0aW9uPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRC
dWZmZXI+Pj4oY29uc3QgU2hhcmVkQnVmZmVyJik+OworICAgICAgICB1c2luZyBTYW5pdGl6ZUlu
aXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4o
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKKyAgICAgICAgdXNpbmcgRXh0cmFjdEtl
eUlEc0NhbGxiYWNrID0gRnVuY3Rpb248c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+Pj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKIAogICAg
ICAgICBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgc2FuaXRpemVJbml0RGF0YTsKICAgICAgICAg
RXh0cmFjdEtleUlEc0NhbGxiYWNrIGV4dHJhY3RLZXlJRHM7CkBAIC02MSw5ICs2MSw5IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYga2V5aWRzTmFtZSgpOwogICAgIHN0
YXRpYyBjb25zdCBBdG9tU3RyaW5nJiB3ZWJtTmFtZSgpOwogCi0gICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNI
ZWFkZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
OwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4
dHJhY3RLZXlJRHNDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lz
dGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAog
cHJpdmF0ZToKICAgICBJbml0RGF0YVJlZ2lzdHJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXgg
OGJmYjFjZTcwMWEyZjVhNjliNWI1MTk5MWFhODYzMmViYjg5MjVmOS4uMTQ3NzZjMjAxNTFiZmVm
ZTM4MDc5YTMzNzMwYzg4NjYyNjhiYTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtMTc2LDcg
KzE3Niw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgcXVldWVUYXNrS2VlcGluZ09i
amVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfSwgaW5pdERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0
RGF0YS5kYXRhKCksIGluaXREYXRhLmxlbmd0aCgpKSwgaW5pdERhdGFUeXBlLCBwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11
dGFibGUgewogICAgICAgICAvLyAxMC4xLiBJZiB0aGUgaW5pdCBkYXRhIGlzIG5vdCB2YWxpZCBm
b3IgaW5pdERhdGFUeXBlLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBl
RXJyb3IuCiAgICAgICAgIC8vIDEwLjIuIExldCBzYW5pdGl6ZWQgaW5pdCBkYXRhIGJlIGEgdmFs
aWRhdGVkIGFuZCBzYW5pdGl6ZWQgdmVyc2lvbiBvZiBpbml0IGRhdGEuCi0gICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2Fu
aXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKKyAgICAgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlv
bi0+c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKIAogICAgICAgICAv
LyAxMC4zLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRo
IGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIGlmICghc2FuaXRpemVkSW5pdERh
dGEpIHsKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVS
ZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgICAg
ICAgICAgbV9sYXRlc3REZWNyeXB0VGltZSA9IDA7CiAgICAgICAgIH0KIAotICAgICAgICBtX2lu
c3RhbmNlU2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UobV9zZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBl
LCBzYW5pdGl6ZWRJbml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBbdGhpcywgd2Vha1RoaXMsIHBy
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVy
KV0gKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNz
VmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJl
cXVlc3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUsIGluaXREYXRhVHlwZSwgc2FuaXRpemVkSW5pdERh
dGEucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBu
ZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBz
dWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lv
bjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJlZjxEZWZlcnJlZFByb21p
c2U+JgogICAgIC8vIDYuIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgogICAg
IHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2lu
ZywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlc3BvbnNlID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5sZW5ndGgoKSksIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0g
KCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDYuMS4gTGV0IHNhbml0aXplZCByZXNwb25zZSBiZSBh
IHZhbGlkYXRlZCBhbmQvb3Igc2FuaXRpemVkIHZlcnNpb24gb2YgcmVzcG9uc2UgY29weS4KLSAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkUmVzcG9uc2UgPSBtX2ltcGxlbWVu
dGF0aW9uLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICAgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3BvbnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+
c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7CiAKICAgICAgICAgLy8gNi4yLiBJZiB0aGUgcHJl
Y2VkaW5nIHN0ZXAgZmFpbGVkLCBvciBpZiBzYW5pdGl6ZWQgcmVzcG9uc2UgaXMgZW1wdHksIHJl
amVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgaWYg
KCFzYW5pdGl6ZWRSZXNwb25zZSB8fCBzYW5pdGl6ZWRSZXNwb25zZS0+aXNFbXB0eSgpKSB7CkBA
IC02MDEsNyArNjAxLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIC8vIDQuMy4gTGV0IG1lc3NhZ2UgdHlwZSBi
ZSBudWxsLgogCiAgICAgICAgIC8vIDQuNC4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9s
bG93aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRh
dGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RN
SW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJl
ZjxTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1Zh
bHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZW1v
dmVTZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgW3RoaXMsIHdlYWtUaGlz
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRp
ZmllcildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtleXMsIHN0ZDo6
b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3Rh
bmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNjQ5LDcgKzY0
OSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlKQogICAgIC8vIDUuIFJldHVybiBwcm9taXNlLgogfQogCi12b2lkIE1lZGlhS2V5
U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBtZXNzYWdlKQordm9pZCBNZWRpYUtleVNlc3Npb246OmVucXVl
dWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIG1lc3NhZ2UpCiB7CiAgICAgLy8gNi40LjEgUXVldWUgYSAibWVzc2Fn
ZSIgRXZlbnQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNx
dWV1ZS1tZXNzYWdlCkBAIC03MTYsNyArNzE2LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnVw
ZGF0ZUtleVN0YXR1c2VzKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYgaW4K
ICAgICAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZShDRE1N
ZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9p
ZCBNZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewogICAgIGVucXVldWVN
ZXNzYWdlKG1lc3NhZ2VUeXBlLCBtZXNzYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDNkOTZm
ODgwMmU3NDc4NDFjNGVmZGE4MWRjYjk0MWVhNmU0YTc1ZTQuLjM2NWFjZTVjMDk1ZTdkYzBjNTcx
ZTc2Y2NmMmMwN2FhZmM2MmJhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtNTcsNyArNTcsNyBAQCBj
bGFzcyBDRE07CiBjbGFzcyBEZWZlcnJlZFByb21pc2U7CiBjbGFzcyBNZWRpYUtleVN0YXR1c01h
cDsKIGNsYXNzIE1lZGlhS2V5czsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVBy
b21pc2VQcm94eTsKIApAQCAtODcsMjAgKzg3LDIwIEBAIHB1YmxpYzoKICAgICB1c2luZyBDbG9z
ZWRQcm9taXNlID0gRE9NUHJvbWlzZVByb3h5PElETFVuZGVmaW5lZD47CiAgICAgQ2xvc2VkUHJv
bWlzZSYgY2xvc2VkKCkgeyByZXR1cm4gbV9jbG9zZWRQcm9taXNlLmdldCgpOyB9CiAKLSAgICBj
b25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+
JiBzdGF0dXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzZXM7IH0KKyAgICBjb25zdCBWZWN0
b3I8c3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+
PiYgc3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1c2VzOyB9CiAKICAgICB1bnNpZ25l
ZCBpbnRlcm5hbEluc3RhbmNlU2Vzc2lvbk9iamVjdFJlZkNvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9pbnN0YW5jZVNlc3Npb24tPnJlZkNvdW50KCk7IH0KIAogcHJpdmF0ZToKICAgICBNZWRpYUtl
eVNlc3Npb24oRG9jdW1lbnQmLCBXZWFrUHRyPE1lZGlhS2V5cz4mJiwgTWVkaWFLZXlTZXNzaW9u
VHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIFJlZjxDRE0+JiYsIFJlZjxDRE1J
bnN0YW5jZVNlc3Npb24+JiYpOwotICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNz
YWdlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShN
ZWRpYUtleU1lc3NhZ2VUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAg
dm9pZCB1cGRhdGVFeHBpcmF0aW9uKGRvdWJsZSk7CiAgICAgdm9pZCBzZXNzaW9uQ2xvc2VkKCk7
CiAgICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKIAogICAgIC8v
IENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAogICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoQ0RN
SW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3ImJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNz
YWdlKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKICAgICB2b2lkIHNlc3Npb25J
ZENoYW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlz
cGxheUlEKCkgZmluYWw7CiAKQEAgLTE0MCwxMCArMTQwLDEwIEBAIHByaXZhdGU6CiAgICAgTWVk
aWFLZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25UeXBlOwogICAgIFJlZjxDRE0+IG1faW1wbGVtZW50
YXRpb247CiAgICAgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4gbV9pbnN0YW5jZVNlc3Npb247Ci0g
ICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBtX3JlY29yZE9mS2V5VXNhZ2U7CisgICAgVmVj
dG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9yZWNvcmRPZktleVVzYWdlOwogICAg
IGRvdWJsZSBtX2ZpcnN0RGVjcnlwdFRpbWUgeyAwIH07CiAgICAgZG91YmxlIG1fbGF0ZXN0RGVj
cnlwdFRpbWUgeyAwIH07Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwg
TWVkaWFLZXlTdGF0dXM+PiBtX3N0YXR1c2VzOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+IG1fc3RhdHVzZXM7CiAKICAg
ICB1c2luZyBEaXNwbGF5Q2hhbmdlZE9ic2VydmVyID0gT2JzZXJ2ZXI8dm9pZChQbGF0Zm9ybURp
c3BsYXlJRCk+OwogICAgIERpc3BsYXlDaGFuZ2VkT2JzZXJ2ZXIgbV9kaXNwbGF5Q2hhbmdlZE9i
c2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3M2Y3NGU0ZjcwZmM5MmMyMmJmODU5
YzAyMjhhMzRlYWVjNTc5N2EzLi4zOThlOGFiMWI2NTZiNDQ1OTI3YmViNmJjNjkzZGQzOTlhNjg3
YWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNTYsMTIgKzU2LDEyIEBAIHVuc2lnbmVk
IGxvbmcgTWVkaWFLZXlTdGF0dXNNYXA6OnNpemUoKQogICAgIHJldHVybiBtX3Nlc3Npb24tPnN0
YXR1c2VzKCkuc2l6ZSgpOwogfQogCi1zdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFy
ZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKK3N0YXRpYyBib29sIGtleUlkc01h
dGNoKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYg
YikKIHsKICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxl
bmd0aCAhPSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFz
dGQ6Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CisgICAgcmV0dXJuICFzdGQ6
Om1lbWNtcChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CiB9
CiAKIGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJTb3VyY2UmIGtleUlk
KQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNv
dXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3RhdHVzZXNbbV9pbmRleCsr
XTsKLSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+ZGF0
YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6
OmNyZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHBhaXIuZmlyc3Qt
PnNpemUoKSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRU
eXBlLCBNZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJyYXlCdWZmZXI+KFdURk1vdmUoYnVmZmVy
KSksIHBhaXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaAppbmRleCBjMjExMTEzYTJj
NmRhYzc5NzkyNGE5OWQyZDJkZjk3YzJlNjVmODUwLi42MGQ2MmFhZmY4MDc0ZGFkYTZlMzFhM2Yy
YjM3MGE2ZDZkMDFmNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCkBAIC0zOCw3ICszOCw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhS2V5U2Vzc2lvbjsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1lZGlhS2V5
U3RhdHVzTWFwIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFLZXlTdGF0dXNNYXA+IHsKIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlzLmNwcAppbmRleCA4M2IyNGFjZWFhNWIxMjk0YmI0ZWE0MzlmYjJkNWM0ZjZjY2Q0NzUzLi4z
NjdmMzFkMTg2YjUxNjM5YTljNzQyMTNmMGNmOGU2ZjJmOGQyNmVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCkBAIC0xNzcs
NyArMTc3LDcgQEAgYm9vbCBNZWRpYUtleXM6Omhhc09wZW5TZXNzaW9ucygpIGNvbnN0CiAgICAg
ICAgIH0pOwogfQogCi12b2lkIE1lZGlhS2V5czo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRh
dGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YSkKK3ZvaWQgTWVkaWFLZXlzOjp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0
YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBmb3IgKGF1dG8mIGNkbUNsaWVudCA6IG1fY2Rt
Q2xpZW50cykKICAgICAgICAgY2RtQ2xpZW50LmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6
YXRpb25EYXRhUmVjZWl2ZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0YS5jb3B5UmVmKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5k
ZXggN2I1OWEzYmM2ZDIyNTZmYzY1NmYwOGNiZjI2ODkxODUxMDk4M2EyMi4uOTFhMWEwNzExNDMz
YmUyNDdkZDJhODVjNWY0YWQwOTM4YTA5YTdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCkBAIC04Niw3ICs4Niw3IEBAIHByb3Rl
Y3RlZDoKICAgICBNZWRpYUtleXMoRG9jdW1lbnQmLCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRp
ZmllciwgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkLCBjb25zdCBWZWN0b3I8TWVkaWFLZXlT
ZXNzaW9uVHlwZT4mLCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2U+JiYpOwogCiAgICAgLy8g
Q0RNSW5zdGFuY2VDbGllbnQKLSAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRh
UmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAg
dm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9s
b2dnZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRl
eCAyZmRjNGMwMDIxZjZlMWZkZWM0NWY4ZmFmNjA5MDZjMmJmODJlM2IxLi4wMDM5MzAyZjdkYzE2
ZmZlY2ZjNDY1YzdkOGRhMjUyZjk4ZGFmNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNv
bnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93
bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgaWYgKGF1dG8gc2hh
cmVkQnVmZmVyID0gZm9ybURhdGFCb2R5KCkuYXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAgICBt
X2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50
VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOworICAg
ICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5j
b250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hh
cmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBs
b2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4KQEAgLTI3Miw3ICsyNzIsNyBAQCBSZWZQ
dHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEoKSBjb25zdAogICAgIGlmIChp
c0Zvcm1EYXRhKCkpCiAgICAgICAgIHJldHVybiAmY29uc3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1E
YXRhQm9keSgpKTsKICAgICBpZiAoYXV0byogZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpKQotICAg
ICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7
CisgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiBudWxscHRyOwpAQCAtMjg0LDcgKzI4NCw3IEBAIEZldGNoQm9keTo6VGFrZW5EYXRh
IEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIGF1dG8gYnVmZmVyID0gbV9jb25zdW1lci50YWtl
RGF0YSgpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIHJldHVy
biBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgfQogCiAgICAgaWYgKGlzQmxvYigpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwCmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1ODc2NzVmMDlkOGI3OWZmNjJiM2IuLjIyMTNk
NjIzMDNlZmUyYTFmNzI5ODI2MGY1ODg2MGI3NzZmYjI2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNDIsNyArMjQy
LDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
Y2xlYW4oKQogewotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICBtX2J1ZmZlci5yZXNldCgp
OwogICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAgICBpZiAobV9zaW5rKSB7CiAgICAgICAg
IG1fc2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjY2LDE2ICsyNjYsMTggQEAgdm9pZCBGZXRj
aEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNv
bnN0IFN0cmluZyYgY28KIHsKICAgICBpZiAoc3RyZWFtKSB7CiAgICAgICAgIEFTU0VSVCghbV9z
aW5rKTsKLSAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6
OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgICAgIG1fc2luayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5r
OjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVy
QnVpbGRlcigpLCB0eXBlID0gbV90eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAg
ICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1
dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+
YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwg
dHlwZSwgY29udGVudFR5cGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YS50YWtlKCkt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0
YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgICAgIG1fc2lu
ay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVybjsKQEAgLTMwNiw3ICszMDgsNyBA
QCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRj
aEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsKICAgICAgICAgYXV0byBidWZmZXIgPSB0
YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShj
b250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBi
dWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9
IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUo
KSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9y
bURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwcm9taXNlLT5y
ZWplY3QoVHlwZUVycm9yKTsKQEAgLTMyNCwxNiArMzI2LDIwIEBAIHZvaWQgRmV0Y2hCb2R5Q29u
c3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplKQogICAgICAg
ICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyKSB7Ci0gICAgICAgIG1f
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZl
ci5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9k
eUNvbnN1bWVyOjp0YWtlRGF0YSgpCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUo
bV9idWZmZXIpOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CisgICAgbV9idWZmZXIuYXBwZW5kKFdU
Rk1vdmUoZGF0YSkpOworfQorCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZSgpOwogfQogCiBSZWZQdHI8
SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkK
QEAgLTM0MSw5ICszNDcsNyBAQCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29u
c3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxscHRyLCAwKTsKIAotICAgIGF1dG8gYXJy
YXlCdWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1ZmZl
ciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVmZmVyOworICAgIHJldHVybiBtX2J1ZmZl
ci50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpA
QCAtMzUxLDkgKzM1NSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxv
YihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIpCiAg
ICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJs
b2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRvIGJ1
ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1dG8gZGF0YSA9
IGJ1ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQs
IFdURk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEo
Y29udGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBlKTsK
IH0KIAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4ICsz
NjQsOCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICgh
bV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRl
eHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZl
ci0+c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIgPSBt
X2J1ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4dFJl
c291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzg1LDggQEAgdm9pZCBGZXRj
aEJvZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNvbnN1
bWVyOjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAgbV9z
b3VyY2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAgIG1f
c291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAgICAg
ICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAgICAg
IG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIo
KSk7CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdGYWlsZWQoY29uc3QgRXhj
ZXB0aW9uJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmgKaW5kZXggMmIwNTZmMTI2NDNiYTk2N2ZlNDFhMDE1MTNhODliNzM2
MjY0MmQ0Yy4uODcxZDJjMDg2MzMxYTk4Mjk0YTE2NmE0YjQyZTMxODRlMDM3NzcyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAt
NTAsMTAgKzUwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBk
YXRhLCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1f
YnVmZmVyOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKSB7IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsgfQorICAgIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsg
fQorICAgIHZvaWQgc2V0RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0
YWtlQXNBcnJheUJ1ZmZlcigpOwogICAgIFN0cmluZyB0YWtlQXNUZXh0KCk7CiAKQEAgLTgyLDcg
KzgyLDcgQEAgcHJpdmF0ZToKIAogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX2NvbnRl
bnRUeXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9jb25z
dW1lUHJvbWlzZTsKICAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+
IG1fc2luazsKICAgICBSZWZQdHI8RmV0Y2hCb2R5U291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggZmM1NWNjN2Q4M2Q4
YmMxMWYwODU0ZGMzY2ZkODUwOTdhMzFmMTBmNi4uMDNmODliNjFjYTVmN2M3MTc2YjlkODhjZDEz
NjYwZTg2YjdhMjU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExv
YWRlci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdG9wKCkKICAg
ICAgICAgbV9sb2FkZXItPmNhbmNlbCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRj
aExvYWRlcjo6c3RhcnRTdHJlYW1pbmcoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IEZldGNoTG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiB7CiAgICAgQVNTRVJUKG1fY29uc3VtZXIp
OwogICAgIGF1dG8gZmlyc3RDaHVuayA9IG1fY29uc3VtZXItPnRha2VEYXRhKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKaW5kZXggMmY5MGYwZWMzZmY5MDVh
MjYyMzFjODRjNzJhN2ExODZjZDRiZmU4My4uNDYxMmQwZTBlM2E3ZWZlMzA2MDM5NmIwZDc1YTJm
YTNiYzRlZGRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIu
aApAQCAtMzksMTQgKzM5LDE0IEBAIGNsYXNzIEZldGNoQm9keUNvbnN1bWVyOwogY2xhc3MgRmV0
Y2hMb2FkZXJDbGllbnQ7CiBjbGFzcyBGZXRjaFJlcXVlc3Q7CiBjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgRmV0Y2hMb2FkZXIgZmluYWwgOiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRl
ckNsaWVudCB7CiBwdWJsaWM6CiAgICAgRmV0Y2hMb2FkZXIoRmV0Y2hMb2FkZXJDbGllbnQmLCBG
ZXRjaEJvZHlDb25zdW1lciopOwogICAgIFdFQkNPUkVfRVhQT1JUIH5GZXRjaExvYWRlcigpOwog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKIAogICAgIHZvaWQgc3Rh
cnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEZldGNoUmVxdWVzdCYsIGNvbnN0IFN0
cmluZyYpOwogICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEJs
b2ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3Bw
CmluZGV4IDRkZjg0MjZjNzE4YmExNmVjZjBhNDdlNzNlOTAwZDNmODQ4ZjY0ZjIuLmUzOGE4M2Fk
ZTdkNmUwYWFmNzBjZWI5YzVhYThmZThhYjQ5NDNkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtNDAwLDcgKzQwMCw4IEBAIHZvaWQg
RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKENvbnN1bWVEYXRh
QnlDaHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OworICAgIGF1dG8gY29u
dGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgU3BhbiBjaHVuayB7
IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CiAgICAgbV9jb25zdW1l
RGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAgLTUwMyw3ICs1MDQsNyBAQCB2b2lkIEZldGNo
UmVzcG9uc2U6OmZlZWRTdHJlYW0oKQogICAgIGNsb3NlU3RyZWFtKCk7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkK
K1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVy
OjpzdGFydFN0cmVhbWluZygpCiB7CiAgICAgQVNTRVJUKG1fbG9hZGVyKTsKICAgICByZXR1cm4g
bV9sb2FkZXItPnN0YXJ0U3RyZWFtaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEzOGQzYzNmNmUyZmRiNjY3NWU4YTRkMTM2
NWJmNWE1YmIuLmNmNzg2MzIzOWZkOTQ2ZWUwZThkODhlYWVhNzJmZTk4OWVlZDMxNGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0xMzQsNyAr
MTM0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIGNvbnN1bWVEYXRhQnlDaHVuayhDb25z
dW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayYmKTsKIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzdGFydFN0cmVhbWluZygpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gc3RhcnRTdHJlYW1pbmcoKTsKICAgICAgICAgTm90aWZpY2F0aW9uQ2FsbGJhY2sgdGFrZU5v
dGlmaWNhdGlvbkNhbGxiYWNrKCkgeyByZXR1cm4gV1RGTW92ZShtX3Jlc3BvbnNlQ2FsbGJhY2sp
OyB9CiAgICAgICAgIENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrIHRha2VDb25zdW1lRGF0YUNh
bGxiYWNrKCkgeyByZXR1cm4gV1RGTW92ZShtX2NvbnN1bWVEYXRhQ2FsbGJhY2spOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKaW5kZXgg
ZGQxOWM4NzBhYTdkMjQ4NWY3ZTljYTg0OTJhODQyMTM1MmRkZDA0MS4uMWE2NmJmODE4MzIwZTk1
NjA3ZDYxNWYxYTA4MmE4Mjc2ZWIyYTM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTM4LDcgKzM4LDcgQEAgZW51bSBjbGFzcyBD
cmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNz
IEhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgOiBib29sIHsgTm8sIFllcyB9OwogCiBz
dHJ1Y3QgQXBwSGlnaGxpZ2h0IHsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBoaWdo
bGlnaHQ7CisgICAgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGhpZ2hsaWdo
dDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGV4dDsKICAgICBDcmVhdGVOZXdHcm91cEZv
ckhpZ2hsaWdodCBpc05ld0dyb3VwOwogICAgIEhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5B
cHAgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDsKQEAgLTUyLDcgKzUyLDcgQEAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVfdD4oaGlnaGxpZ2h0LT5z
aXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hsaWdodC0+ZGF0
YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0
aERhdGEoaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6
ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKaW5k
ZXggZTJkOWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJkMDRhNDU3NmMwNi4uNWU4MGYwYzA3MmQ0
OWEzZWY3OTY5NTkzMDJjNDQ1NmNkMmFiZGU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCkBAIC00
NCwxNSArNDQsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdGV4cHIgdWludDY0X3Qg
aGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBTaWdu
YXR1cmUgIChBKXBwbGUoQVApcGxpY2F0aW9uKEgpaWdobGlnaHRzKDIwMjEpCiAKLXN0ZDo6b3B0
aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0
ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29k
ZXIoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICBhdXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAg
c3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+
PiBkYXRhOwogICAgIHJldHVybiBkYXRhOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBBcHBIaWdo
bGlnaHRSYW5nZURhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QK
IHsKICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGVuY29kZXI7CiAgICAgZW5jb2RlciA8
PCAqdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFJhbmdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQv
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKaW5kZXggY2Y2MzgxYWNmYjBhNTIxMWI0MzUwOGI3YjUx
N2Q2ZGIyZjZmYzc0My4uYjVkYWY2MDI1Mzk4YTNmN2U2ZjFkMzdhYmVjZTg0NGQ0ZjFjNjU0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEFwcEhpZ2hsaWdodFJhbmdlRGF0
YSB7CiBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGNyZWF0ZShjb25z
dCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CiAgICAgc3RydWN0IE5vZGVQYXRoQ29tcG9uZW50IHsKICAgICAgICAgU3RyaW5nIGlk
ZW50aWZpZXI7CiAgICAgICAgIFN0cmluZyBub2RlTmFtZTsKQEAgLTExMSw3ICsxMTEsNyBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5n
IG1faWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKaW5kZXggZGMzOWEwZjBkMThmZmZjYTdkZmI0
NjUyMTljZDYxMmE5ZjczOGY4Zi4uZTVkZTg0OTRmMzUwNDUzNTk0YjJmMmU4OGMzZGRhMzNmYTlh
ZjcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQv
QXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIEFwcEhpZ2hs
aWdodFN0b3JhZ2U6OnN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTdGF0aWNSYW5nZT4mJiByYW5nZSkK
ICAgICBtX2RvY3VtZW50LT5wYWdlKCktPmNocm9tZSgpLnN0b3JlQXBwSGlnaGxpZ2h0KFdURk1v
dmUoaGlnaGxpZ2h0KSk7CiB9CiAKLXZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZUFu
ZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBTY3JvbGxU
b0hpZ2hsaWdodCBzY3JvbGwpCit2b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVBbmRT
Y3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IFNjcm9sbFRvSGlnaGxpZ2h0IHNjcm9sbCkKIHsKICAgICBhdXRvIGFwcEhpZ2hsaWdodFJhbmdl
RGF0YSA9IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGJ1ZmZlcik7CiAgICAgaWYgKCFh
cHBIaWdobGlnaHRSYW5nZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKaW5kZXggYjE1MmY3NmVkNDI0MDg5MmVh
N2RlMjFlMmNiMDZkNDcyZDg3MzM2MC4uZTI3NjYzM2I0ODRmODEwOTRhZGVjZTQ1ZjY0YWJiZWQx
NzgxMjUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdGF0
aWNSYW5nZTsKIGNsYXNzIEhpZ2hsaWdodDsKIApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAg
ICAgfkFwcEhpZ2hsaWdodFN0b3JhZ2UoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Rv
cmVBcHBIaWdobGlnaHQoUmVmPFN0YXRpY1JhbmdlPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVmZmVyPiYmLCBT
Y3JvbGxUb0hpZ2hsaWdodCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlQW5kU2Ny
b2xsVG9BcHBIaWdobGlnaHQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFNjcm9sbFRv
SGlnaGxpZ2h0KTsKICAgICB2b2lkIHJlc3RvcmVVbnJlc3RvcmVkQXBwSGlnaGxpZ2h0cygpOwog
ICAgIE1vbm90b25pY1RpbWUgbGFzdFJhbmdlU2VhcmNoVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dGltZUF0TGFzdFJhbmdlU2VhcmNoOyB9CiAgICAgdm9pZCByZXNldExhc3RSYW5nZVNlYXJjaFRp
bWUoKSB7IG1fdGltZUF0TGFzdFJhbmdlU2VhcmNoID0gTW9ub3RvbmljVGltZTo6bm93KCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3NDM1NmIz
NWExNjgwMzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2
NDVjODc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2
ODYsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleChJREJP
YmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRy
YW5zYWN0aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGlu
Zm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0
aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNl
Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBAIElEQkVycm9y
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IkF0dGVtcHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5n
ZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtl
eVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0
byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAg
IGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFs
aXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIp
OwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2Vy
aWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9y
ZSJfcyB9OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjpjcmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAg
ICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUg
YW4gaW5kZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktl
eVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJ
REJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4g
ZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJf
cyB9OwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
Ojp1bmNoZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleEluZm8mIGluZm8KIHsKICAg
ICBoYXNSZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5
QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtl
eUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhL
ZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4
IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNr
IGZvciBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMg
QEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29y
ZChpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRl
SURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAlcyIsIGtleVZh
bHVlLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5
QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBr
ZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBz
dG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKKyAgICBh
dXRvIHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYg
KCF2YWx1ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUg
dGhlIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJu
IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBi
ZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBJREJF
cnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9u
LT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IkF0dGVtcHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBp
bi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
a2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVj
ayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBm
b3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0g
SURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0
aW9uKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlE
YXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0
YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2Ui
X3MgfTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSBy
ZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07
CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0
b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0
byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiX3MgfTsK
QEAgLTIxMjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0
UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgYXV0byBr
ZXkgPSBrZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBr
ZXkgPSBJREJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93
ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBsb3dlckJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAg
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9v
a3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVu
YWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAt
MjEzMyw3ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNv
cmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBrZXkgPSBrZXlS
YW5nZS51cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJL
ZXlEYXRhOjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdl
Iik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBz
ZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsy
NDQzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRl
eFJlY29yZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChrZXkuaXNWYWxp
ZCgpICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYga2V5LnR5cGUo
KSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCBy
ZWNvcmQiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIl9zIH07CkBA
IC0yNTA4LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0
Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0Q291
bnQgPSAwOwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpID8g
SURCS2V5RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKKyAg
ICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CiAgICAg
aWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxp
emUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBs
b29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAogICAgIGF1dG8g
dXBwZXJLZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1heGltdW0o
KSA6IHJhbmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBs
b29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
VW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3Vu
dCBvcGVyYXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5
NjIzYmQ4ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5Y2ZlZGZlOWYy
ZWE2NWE2ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3ICsyNjksNyBA
QCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0YXRlbWVudC0+
YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxv
d2VyIGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJv
b2wgU1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNl
c3NhcnkoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUluZGV4U3RhdGVt
ZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9P
SykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHBy
ZSBzdGF0ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCmlu
ZGV4IDBhNDY5YmQwYmQxZjM4ZGNiOTZiMzlkOGMzMDAwYWY3M2QxMmFiNTkuLmM5ZDZkYTZiZGQ5
ZjkzOTUwMWY0ZjQyMzJiNGM3ODM3ZDg0MGRhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKQEAgLTE5Niw3ICsx
OTYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVJlY29yZGVyOjpzdGFydFJlY29yZGluZyhz
dGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0aW1lU2xpYwogICAgIHJldHVybiB7IH07CiB9CiAKLXN0
YXRpYyBpbmxpbmUgUmVmPEJsb2JFdmVudD4gY3JlYXRlRGF0YUF2YWlsYWJsZUV2ZW50KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUgdGltZUNvZGUpCitzdGF0aWMgaW5saW5l
IFJlZjxCbG9iRXZlbnQ+IGNyZWF0ZURhdGFBdmFpbGFibGVFdmVudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkKIHsKICAgICBhdXRvIGJs
b2IgPSBidWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVmZmVyLT5leHRyYWN0RGF0YSgp
LCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoY29udGV4dCk7CiAgICAgcmV0dXJuIEJsb2JFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEJsb2JFdmVudDo6SW5p
dCB7IHsgZmFsc2UsIGZhbHNlLCBmYWxzZSB9LCBXVEZNb3ZlKGJsb2IpLCB0aW1lQ29kZSB9LCBC
bG9iRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCmluZGV4IDc3MTJiNDQ1MjgzNjdkOGMy
NzI1MDJhZGJhYWNhYWY5Nzg4Y2JkYjAuLjFlOWI3NGFiMTdlMzEwOGRiNDIwOWI5YjRmMDIxNGRh
MTFhYzZlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXIuaApAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaXNwYXRjaEVycm9yKEV4Y2VwdGlvbiYmKTsKIAogICAgIGVudW0gY2xhc3MgVGFrZVByaXZh
dGVSZWNvcmRlciB7IE5vLCBZZXMgfTsKLSAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IEZ1
bmN0aW9uPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgZG91YmxlKT47CisgICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lk
KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBkb3VibGUpPjsKICAgICB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmLCBUYWtl
UHJpdmF0ZVJlY29yZGVyKTsKIAogICAgIC8vIE1lZGlhU3RyZWFtOjpPYnNlcnZlcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNw
cAppbmRleCAzZjRjOWJjZDEzM2FjMjlmM2Y3ZGRlMTk5NDc4ZTM5MjU3ZDVlNjZiLi44NzRhYTdm
MGIxOGYwZWU3NTg4MGJhNWY1ZWY2N2Q0N2JmYzJiMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcApAQCAtNzcsNyAr
NzcsNyBAQCB2b2lkIEFydHdvcmtJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTAogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIC8vIFNhbml0aXplIHRoZSBpbWFnZSBieSBkZWNvZGluZyBpdCBpbnRvIGEgQml0bWFwSW1h
Z2UuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVk
SW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAg
ICBhdXRvIGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGJpdG1hcElt
YWdlLT5zZXREYXRhKFdURk1vdmUoYnVmZmVyVG9TYW5pdGl6ZSksIHRydWUpOwogICAgIGF1dG8g
aW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIu
Y3BwCmluZGV4IGZlYjFiOGZmZmI3Yjk0YzllN2ViMGJlNDhhZDM1ZGQ3MDc5YzcwYmIuLmNjNWE4
NjU3MzA1NjU3ZDBhOTcwNTY2MWU0YmI0OWNlMGI4NDA1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAgICBtX2lzUmVhZHlUb1NlbmQgPSB0cnVlOwog
CiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9wZW5kaW5nTWVzc2FnZXMpCi0gICAgICAgIG1f
Y29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBt
ZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAg
bV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcs
IG1lc3NhZ2UuYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVy
LT5zaXplKCkpOwogICAgIG1fcGVuZGluZ01lc3NhZ2VzLmNsZWFyKCk7CiAKICAgICBpZiAobV9p
c1BlbmRpbmdDbG9zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCmluZGV4IGY1ODI3
ZGY5Mzc5NDkzZDI4MTI3MDE3N2NjZmJjYTA1NTE1MzIzMWYuLjczOTQyYTgzNTkzMWE5ZDI4NGM2
YTQ1MWJiOGRiZmI1NzY1Y2FkYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaApA
QCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSVENEYXRhQ2hhbm5l
bEhhbmRsZXJDbGllbnQ7CiBjbGFzcyBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25uZWN0
aW9uOwogY2xhc3MgUlRDRXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIgZmlu
YWwgOiBwdWJsaWMgUlRDRGF0YUNoYW5uZWxIYW5kbGVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAKICAgICBzdHJ1Y3QgTWVzc2FnZSB7CiAg
ICAgICAgIGJvb2wgaXNSYXcgeyBmYWxzZSB9OwotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBi
dWZmZXI7CisgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAg
fTsKICAgICBWZWN0b3I8TWVzc2FnZT4gbV9wZW5kaW5nTWVzc2FnZXM7CiAgICAgYm9vbCBtX2lz
UGVuZGluZ0Nsb3NlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IDNlMTEwNTQwMDM1M2RlNTYwZjI0OTM4YTliMjA4
ZWYzNmY2ODAzYzQuLjNjZWVkMGEwMTFlN2I1NDZmYWRkZjQ4YmJkYTIxMWRmZGQ1MjRjNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcApA
QCAtOTcsOCArOTcsOCBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0Q2xp
ZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50LAogICAgIG1fY29udGV4dElk
ZW50aWZpZXIgPSBjb250ZXh0SWRlbnRpZmllcjsKIAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6
IG1fYnVmZmVyZWRNZXNzYWdlcykgewotICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBbJl0oUmVm
PFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKLSAgICAgICAgICAgIGNsaWVudC5kaWRSZWNlaXZlUmF3
RGF0YShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgIHN3aXRjaE9uKG1lc3Nh
Z2UsIFsmXShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKKyAgICAgICAgICAg
IGNsaWVudC5kaWRSZWNlaXZlUmF3RGF0YShkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGRhdGEtPnNpemUoKSk7CiAgICAgICAgIH0sIFsmXShTdHJpbmcmIHRleHQpIHsKICAgICAgICAg
ICAgIGNsaWVudC5kaWRSZWNlaXZlU3RyaW5nRGF0YSh0ZXh0KTsKICAgICAgICAgfSwgWyZdKFN0
YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlci5oCmluZGV4IDQxZjk1MjgyMWU2MjAwOTNmOGVlZmUzMmM1ZWQ0YWUw
ZjVlNTQxOTcuLjExYmQ0NWRlOTE1NTc3OWZmYzllZmIwM2U5NTUyOGYwNWU2NGQ3NDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC04Miw3
ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIFJUQ0RhdGFDaGFubmVsU3RhdGUgc3RhdGU7CiAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8d2VicnRjOjpSVENFcnJvcj4gZXJyb3I7CiAgICAgfTsKLSAg
ICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PFN0YXRlQ2hhbmdlLCBTdHJpbmcsIFJlZjxT
aGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PFN0YXRlQ2hh
bmdlLCBTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgdXNpbmcgUGVu
ZGluZ01lc3NhZ2VzID0gVmVjdG9yPE1lc3NhZ2U+OwogICAgIHZvaWQgc3RvcmVNZXNzYWdlKFBl
bmRpbmdNZXNzYWdlcyYsIGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYpOwogICAgIHZvaWQgcHJv
Y2Vzc01lc3NhZ2UoY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAK
aW5kZXggMzA5YzAyNjQzZjVhN2FlOWZlYzA4YTE0ZWIyMTIyNDA5YjFmODllMC4uNjNmMWMzY2Jl
MWVhODFjZmJmNDU0NjQ2MzIwY2RmN2ZhY2Y1OWMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAt
MTE2LDcgKzExNiw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0
IFVSTCYgdXJsKQogCiAgICAgbV9zb3VyY2VVUkwgPSB1cmw7CiAKLSAgICBtX2RhdGEgPSBudWxs
cHRyOworICAgIG1fZGF0YS5yZXNldCgpOwogICAgIG1fZGF0YUNvbXBsZXRlID0gZmFsc2U7CiAK
ICAgICBpZiAobV9yZXNvdXJjZSkgewpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgSFRNTE1vZGVs
RWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBtX2RhdGEu
ZW1wdHkoKTsKIAogICAgIG1fcmVzb3VyY2UgPSByZXNvdXJjZS52YWx1ZSgpOwogICAgIG1fcmVz
b3VyY2UtPmFkZENsaWVudCgqdGhpcyk7CkBAIC0xODAsOCArMTgwLDcgQEAgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5k
ZXJTdHlsZSYmIHMKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fcmVzb3VyY2UpOwot
ICAgIEFTU0VSVChtX2RhdGEpOwotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgp
OworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSFRNTE1v
ZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpAQCAtMTk1LDcgKzE5NCw3IEBAIHZvaWQgSFRNTE1vZGVs
RWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBO
ZXR3b3JrTG9hCiAgICAgfTsKIAogICAgIGlmIChyZXNvdXJjZS5sb2FkRmFpbGVkT3JDYW5jZWxl
ZCgpKSB7Ci0gICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fZGF0YS5yZXNldCgp
OwogCiAgICAgICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7
CiAKQEAgLTIwNCw3ICsyMDMsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH0KIAog
ICAgIG1fZGF0YUNvbXBsZXRlID0gdHJ1ZTsKLSAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZSht
X2RhdGEucmVsZWFzZU5vbk51bGwoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3Vy
Y2UudXJsKCkpOworICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0YS50YWtlKCktPm1h
a2VDb250aWd1b3VzKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgp
KTsKIAogICAgIGludmFsaWRhdGVSZXNvdXJjZUhhbmRsZUFuZFVwZGF0ZVJlbmRlcmVyKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5oCmluZGV4IDA1YTFjZGFhM2UxNDg3N2EwYWU0NjViNjM0OWFhNWJiYjFhZjJj
ODIuLmNlMDA5ZDRlNWVkYzMwOTc0NWUwMjdiMDYzMmJkMWU2ZTg1ODAzYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAKICAgICBVUkwgbV9zb3VyY2VVUkw7
CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgbV9kYXRhOwogICAgIFJlZlB0cjxNb2RlbD4gbV9tb2RlbDsKICAgICBVbmlxdWVSZWY8UmVh
ZHlQcm9taXNlPiBtX3JlYWR5UHJvbWlzZTsKICAgICBib29sIG1fZGF0YUNvbXBsZXRlIHsgZmFs
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9z
Y2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KaW5kZXgg
M2U4MmFjMjIxNjc5NmM5ZWRiNzYwYTE5ZWQ3YWNlMWY0MmNkMzc3Ny4uMTMwM2VjNGQyNTY4YTY2
Zjg3ZDdmZWIyMGJmMmIwMzM5MjMyYzNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5lS2l0
TW9kZWxMb2FkZXJVU0QubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5T
VVJMPiB3cml0ZVRvVGVtcG9yYXJ5RmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAg
ICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJNb2RlbEZp
bGUiLCBmaWxlSGFuZGxlLCAiLnVzZHoiKTsKICAgICBBU1NFUlQoRmlsZVN5c3RlbTo6aXNIYW5k
bGVWYWxpZChmaWxlSGFuZGxlKSk7CiAKLSAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1v
ZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBzaXplX3QgYnl0ZUNvdW50ID0gRmlsZVN5
c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZUhhbmRsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKICAgICBBU1NF
UlRfVU5VU0VEKGJ5dGVDb3VudCwgYnl0ZUNvdW50ID09IG1vZGVsU291cmNlLmRhdGEoKS0+c2l6
ZSgpKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaAppbmRl
eCAwYjg5OGY2YWRiNTdlYjI1ZGM0OTM3ZDgxZmY1ZDE0ZDUyOTc2Yzg0Li5kNTE3M2ZiZjhiNDAz
NDFjNWNmOGQ4YTRmNTVlZWFjOGZmODM4YTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCkBAIC0zNSw3ICszNSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQnVmZmVyU291cmNlOwogY2xhc3MgUmVhZGFibGVT
dHJlYW07Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBSZWFkYWJsZVN0cmVhbVNpbmsgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWFkYWJs
ZVN0cmVhbVNpbms+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCmluZGV4IGM0NTJjODNmYmQ1Y2U4
OTViZGQwMzFhY2YxNDY4Zjc4NjUwNjIyZDcuLmI4Yjc3ODVmOTFkMDY4YzJhNDZjZWIxZDY1OTc1
OGZjZjhiNjlkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaApAQCAtNTEsMTMgKzUxLDE1IEBAIHB1YmxpYzoK
ICAgICAgICAgaWYgKG1fc2NyaXB0QnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwogCisgICAgICAgIGlmICghbV9jb250aWd1b3VzQnVmZmVyICYmICgh
bV9jb250YWluc09ubHlBU0NJSSB8fCAqbV9jb250YWluc09ubHlBU0NJSSkpCisgICAgICAgICAg
ICBtX2NvbnRpZ3VvdXNCdWZmZXIgPSBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+bWFrZUNvbnRp
Z3VvdXMoKTsKICAgICAgICAgaWYgKCFtX2NvbnRhaW5zT25seUFTQ0lJKSB7Ci0gICAgICAgICAg
ICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fc2NyaXB0QnVm
ZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwor
ICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSSht
X2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUo
KSk7CiAgICAgICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICAg
ICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0
cyhtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIo
KS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6
OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBt
X3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgfQogICAgICAgICBpZiAo
Km1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICByZXR1cm4geyBtX3NjcmlwdEJ1ZmZl
ci5idWZmZXIoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIu
YnVmZmVyKCktPnNpemUoKSkgfTsKKyAgICAgICAgICAgIHJldHVybiB7IG1fY29udGlndW91c0J1
ZmZlci0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIuYnVmZmVy
KCktPnNpemUoKSkgfTsKIAogICAgICAgICBpZiAoIW1fY2FjaGVkU2NyaXB0U3RyaW5nKSB7CiAg
ICAgICAgICAgICBtX2NhY2hlZFNjcmlwdFN0cmluZyA9IG1fc2NyaXB0QnVmZmVyLnRvU3RyaW5n
KCk7CkBAIC04MSw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICBtX3NjcmlwdEJ1ZmZlciA9IHNjcmlwdEJ1ZmZlcjsKKyAgICAgICAgbV9jb250aWd1b3Vz
QnVmZmVyID0gbnVsbHB0cjsKICAgICB9CiAKIHByaXZhdGU6CkBAIC05MSw2ICs5NCw3IEBAIHBy
aXZhdGU6CiAgICAgfQogCiAgICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0QnVmZmVyOworICAgIG11
dGFibGUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb250aWd1b3VzQnVmZmVyOwogICAgIG11dGFi
bGUgdW5zaWduZWQgbV9zY3JpcHRIYXNoIHsgMCB9OwogICAgIG11dGFibGUgU3RyaW5nIG1fY2Fj
aGVkU2NyaXB0U3RyaW5nOwogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2NvbnRh
aW5zT25seUFTQ0lJOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaAppbmRleCA3ZTQ5YTllNzMyMjZiNjVjYzI4YmY1OTQ4MTNiMGY4M2Iy
NjlkMjJiLi5lZjM3ZjFkMGNhNDYyYmI5YjdjOWI2YTU1ZDE4ZWJiNGMxMTgxYTdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApA
QCAtNTUsNyArNTUsNyBAQCBjbGFzcyBEZXRhY2hlZE9mZnNjcmVlbkNhbnZhczsKIGNsYXNzIElE
QlZhbHVlOwogY2xhc3MgTWVzc2FnZVBvcnQ7CiBjbGFzcyBJbWFnZUJpdG1hcEJhY2tpbmc7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogZW51bSBj
bGFzcyBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTsKIAogZW51bSBjbGFzcyBTZXJpYWxpemF0aW9u
RXJyb3JNb2RlIHsgTm9uVGhyb3dpbmcsIFRocm93aW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNvdXJjZS5oCmluZGV4IDgyNjEzMzMyMmE4ZWU1ZjM3ODJmYmIyMzEyM2IyZGQzYTU3
YTE3MjguLjEwOGU2Yzg3NjdkMGQyZmRhY2JlNjUwNGViYzUwNzBlODgyYmU2NDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTRm9udEZhY2U7CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7
CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZvbnQ7CiBjbGFz
cyBGb250Q3JlYXRpb25Db250ZXh0OwpAQCAtNDIsNyArNDMsNiBAQCBjbGFzcyBGb250RGVzY3Jp
cHRpb247CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVj
dCBGb250VmFyaWFudFNldHRpbmdzOwogY2xhc3MgU1ZHRm9udEZhY2VFbGVtZW50OwotY2xhc3Mg
U2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNl
dHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRp
bmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAppbmRleCAxZGVhYzRmNDFjZjQ5ZjFm
ODgyZGNjZWZkNDhjZjZhOTczMmYzZWQ5Li5jNDJlYzA1MWZlMTFlYmExNGY4MTMzNTlkOGQxN2Ey
YzI4MTY2NGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApAQCAtNDAyLDcgKzQw
Miw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkRmlsZVR5cGVSZWFkZXIgZmluYWwgOiBQYXN0ZWJvYXJk
RmlsZVJlYWRlciB7CiAgICAgICAgIHR5cGVzLmFkZChGaWxlOjpjb250ZW50VHlwZUZvckZpbGUo
ZmlsZW5hbWUpKTsKICAgICB9CiAKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKQorICAgIHZvaWQgcmVhZEJ1
ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKQogICAgIHsKICAgICAgICAgdHlwZXMuYWRkKHR5cGUpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAxNzI0Y2YwZTUwYmFhNWI5YjI0MTMwNDgxZWU3
MjRjYjc4MjA3YWE0Li5jNWU5ZTI2YjM3MmFlNjgzZjE4NjhlOTIwYzQ1ZWQ3MGVkZjU1NDdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00MTMzLDcgKzQxMzMsNyBAQCBQcm9taXNl
ZEF0dGFjaG1lbnRJbmZvIEVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyhFbGVtZW50JiBl
bGVtZW50KQogICAgIHJldHVybiB7IGF0dGFjaG1lbnQtPnVuaXF1ZUlkZW50aWZpZXIoKSwgV1RG
TW92ZShhZGRpdGlvbmFsVHlwZXMpLCBXVEZNb3ZlKGFkZGl0aW9uYWxEYXRhKSB9OwogfQogCi12
b2lkIEVkaXRvcjo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVy
cmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgRWRpdG9yOjpyZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBpZiAoYXV0byogY2xpZW50
ID0gdGhpcy0+Y2xpZW50KCkpCiAgICAgICAgIGNsaWVudC0+cmVnaXN0ZXJBdHRhY2htZW50SWRl
bnRpZmllcihpZGVudGlmaWVyLCBjb250ZW50VHlwZSwgcHJlZmVycmVkRmlsZU5hbWUsIFdURk1v
dmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggMDFmZTBiNWUwNDRlZjYzZjI2
YTcxYjQ3MmVmOThiMTFjMjI4YjkxYy4uMWQwNzE2YzViOTNjOGJiN2FkNzNmNDE3NGNhODA0NTkw
NWY5MTkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC01Nyw5ICs1NywxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI7CiBjbGFz
cyBBcmNoaXZlUmVzb3VyY2U7Ci1jbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBDb21wb3NpdGVF
ZGl0Q29tbWFuZDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEN1c3RvbVVuZG9TdGVwOwor
Y2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjsKIGNsYXNz
IEVkaXRDb21tYW5kOwogY2xhc3MgRWRpdENvbW1hbmRDb21wb3NpdGlvbjsKQEAgLTc0LDcgKzc1
LDcgQEAgY2xhc3MgS2lsbFJpbmc7CiBjbGFzcyBQYXN0ZWJvYXJkOwogY2xhc3MgUGFzdGVib2Fy
ZFdyaXRlckRhdGE7CiBjbGFzcyBSZW5kZXJMYXllcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250OwogY2xhc3MgU3BlbGxDaGVj
a1JlcXVlc3Q7CiBjbGFzcyBTcGVsbENoZWNrZXI7CkBAIC01NjMsNyArNTY0LDcgQEAgcHVibGlj
OgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5n
JiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmaWxlRGF0YSk7CisgICAg
dm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGZpbGVEYXRhKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0
YWNobWVudHMoVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJik7CiAgICAgdm9pZCBy
ZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwogICAgIHZvaWQgcmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb250ZW50UmVhZGVyLmgKaW5kZXggMDhhYTEyNDI2NjIwZjc2OTUzYTc5YjM0ZWRlNWY2
ZGYwNTI3YjAxNS4uOTU3YjRmZDRhNTU3ZmM4MWNkMzA2OWVlYWNiODk0ODhhOTQ3YjdjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKQEAgLTcyLDE2ICs3Miwx
NiBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVhZEZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIFByZXNl
bnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSA9IHsgfSkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkRmlsZVBhdGhzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkSFRNTChjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkSW1hZ2UoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBw
cmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKICAgICBib29sIHJlYWRV
UkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCBy
ZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpIG92ZXJy
aWRlOwotICAgIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9v
bCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZERhdGFCdWZm
ZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUs
IFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJp
ZGU7CisgICAgYm9vbCByZWFkV2ViQXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3Zl
cnJpZGU7CisgICAgYm9vbCByZWFkUlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7CisgICAgYm9vbCByZWFkUlRGKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
KyAgICBib29sIHJlYWREYXRhQnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJy
ZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKICNlbmRpZgogfTsKIApAQCAtOTks
MTYgKzk5LDE2IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWFkRmlsZVBhdGgoY29uc3QgU3RyaW5n
JiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSwgY29uc3QgU3RyaW5nJiA9IHsgfSkgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHJlYWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0
cmluZz4mKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZEhUTUwoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHJlYWRJbWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHJlYWRQbGFpblRleHQo
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAg
IGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWREYXRh
QnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNl
bnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBy
ZWFkV2ViQXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9v
bCByZWFkUlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCBy
ZWFkUlRGKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRE
YXRhQnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKaW5kZXggNTQ5ZWI3ZDJlNGMwNzU0OGU0YThjOWVh
MjRlYzIwZTRmMjFiZmEyNS4uMTE3ZGJhNjhlZGIwYmQ0YjZjMzBlMDk0ODVkOWQwYzBmMjljMzgy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZp
bGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9h
cmRGaWxlUmVhZGVyLmNwcApAQCAtMzksNyArMzksNyBAQCB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJk
RmlsZVJlYWRlcjo6cmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgZmls
ZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBmaWxlbmFtZSkpOwogfQogCi12
b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQordm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0
LmdldCgpLCBCbG9iOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgYnVmZmVyLT5leHRyYWN0RGF0YSgp
LCB0eXBlKSwgZmlsZW5hbWUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCmluZGV4IDVjNTI5ZGQ3YzhlY2MwMDA0OGZj
YjRkMTU4MTQ2MzViMjRkOTBiYjcuLjlkODE2MDVmMTk5Mjk4ZjE5YzBlZDY5OTVmZTNiZDc3ODMw
MzRmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9h
cmRGaWxlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVi
b2FyZEZpbGVSZWFkZXIuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgV2ViQ29yZVBhc3RlYm9h
cmRGaWxlUmVhZGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIH5XZWJDb3Jl
UGFzdGVib2FyZEZpbGVSZWFkZXIoKTsKIAogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0
cmluZyYpIGZpbmFsOwotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZv
aWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0PiBjb250ZXh0OwogICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4
IGQ0OGUxMWM5NmI3ODA4Zjg4MzU0YjNiMDc0N2VlYjFmMWUzN2UzZjMuLjA3ODI0ODM2MmFhMDU0
ZGMzYWIwMDAwNDUxNzE4NDE5OGE1ODBmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTEyNzMsNyArMTI3Myw3IEBAIEJPT0wgSFRNTENv
bnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TVVJM
ICp1cmwsIEJPT0wKICAgICAgICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJy
ZXNvdXJjZSh1cmwpKSB7CiAgICAgICAgICAgICBhdXRvJiBtaW1lVHlwZSA9IHJlc291cmNlLT5t
aW1lVHlwZSgpOwogICAgICAgICAgICAgaWYgKCF1c2VQbGFjZWhvbGRlciB8fCBtaW1lVHlwZSAh
PSAidGV4dC9odG1sIikgewotICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhb
W05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJj
ZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICAgICAgZmlsZVdy
YXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0
aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCldKTsKICAgICAgICAgICAgICAgICBbZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVkRmls
ZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUodXJsLCBtaW1lVHlwZSldOwogICAg
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbm90Rm91bmQgPSBZRVM7CkBAIC0yMzAw
LDcgKzIzMDAsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVy
Rm9yVVJMKERvY3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBOUwogCiAgICAgaWYgKGRhdGFTb3Vy
Y2UpIHsKICAgICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gZGF0
YVNvdXJjZS0+c3VicmVzb3VyY2UoVVJMKSkgewotICAgICAgICAgICAgYXV0byB3cmFwcGVyID0g
YWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50
czpyZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICBh
dXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJG
aWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IHJlc291
cmNlLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAgICAgICAgICAgICBpZiAoIWZp
bGVuYW1lIHx8ICFbZmlsZW5hbWUgbGVuZ3RoXSkKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9
IHN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2Ut
Pm1pbWVUeXBlKCkpOwpAQCAtMjMyMiw4ICsyMzIyLDggQEAgc3RhdGljIFJldGFpblB0cjxOU0Zp
bGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExvYWRlciogZGF0YVNvdXJjZSwg
TlMKIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JFbGVtZW50
KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgaWYgKENhY2hlZEltYWdlKiBjYWNo
ZWRJbWFnZSA9IGVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkgewotICAgICAgICBpZiAoU2hhcmVkQnVm
ZmVyKiBzaGFyZWRCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKLSAgICAg
ICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJG
aWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAg
ICAgICAgaWYgKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZElt
YWdlLT5yZXNvdXJjZUJ1ZmZlcigpKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Zp
bGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6c2hhcmVkQnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIH0KIAogICAg
IGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCA2YWEz
Y2Q1NGU4MmI5OWIzMTk0MjdiZWUzNGM4YzQ0YjY3OWUyMjc5Li43NmIxYTAwOWRlNDMwZmEzYjU0
ZDlhMTVlNjc4Y2Q4M2YzMTQ1ZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjQ1LDcgKzI0NSw3IEBAIHN0
YXRpYyBib29sIHN1cHBvcnRzQ2xpZW50U2lkZUF0dGFjaG1lbnREYXRhKGNvbnN0IEZyYW1lJiBm
cmFtZSkKIAogI2VuZGlmCiAKLXN0YXRpYyBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJh
Z21lbnRGb3JJbWFnZUF0dGFjaG1lbnQoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBQ
cmVzZW50YXRpb25TaXplIHByZWZlcnJlZFNpemUpCitzdGF0aWMgUmVmPERvY3VtZW50RnJhZ21l
bnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFtZSwgRG9jdW1l
bnQmIGRvY3VtZW50LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkU2l6ZSkKIHsK
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIGF1dG8gYXR0YWNobWVudCA9IEhU
TUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9j
dW1lbnQpOwpAQCAtMzA5LDcgKzMwOSw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVu
dFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRvJiByZXNvdXJjZSA9IHJlc291cmNlRW50
cnktPnZhbHVlOwotICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsgYXR0
YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNvdXJj
ZS0+ZGF0YSgpIH0pOworICAgICAgICBzZXJpYWxpemVkQXR0YWNobWVudERhdGEuYXBwZW5kKHsg
YXR0YWNobWVudC51bmlxdWVJZGVudGlmaWVyKCksIHJlc291cmNlLT5taW1lVHlwZSgpLCByZXNv
dXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgfQogCiAgICAgaWYgKCFzZXJp
YWxpemVkQXR0YWNobWVudERhdGEuaXNFbXB0eSgpKQpAQCAtMzMyLDcgKzMzMiw3IEBAIHN0YXRp
YyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERv
Y3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIG5hbWUgPSAibWVkaWEiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8u
YXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNv
dXJjZS0+dmFsdWUtPmRhdGEoKSwgaW1hZ2UgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRp
b25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUo
KSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgaW1hZ2UgfSk7CiAg
ICAgfQogCiAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBkZXNjZW5kYW50c09mVHlwZTxIVE1MT2Jq
ZWN0RWxlbWVudD4oZnJhZ21lbnQpKSB7CkBAIC0zNTAsNyArMzUwLDcgQEAgc3RhdGljIHZvaWQg
cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRG
cmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgbmFt
ZSA9ICJmaWxlIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7
IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZh
bHVlLT5kYXRhKCksIG9iamVjdCB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8u
YXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNv
dXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBvYmplY3QgfSk7CiAgICAgfQog
CiAgICAgZm9yIChhdXRvJiBpbmZvIDogYXR0YWNobWVudEluc2VydGlvbkluZm8pIHsKQEAgLTQy
OCw3ICs0MjgsNyBAQCBzdHJ1Y3QgTWFya3VwQW5kQXJjaGl2ZSB7CiAgICAgUmVmPEFyY2hpdmU+
IGFyY2hpdmU7CiB9OwogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBl
eHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgc3RkOjpm
dW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCitzdGF0
aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2
ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9v
bChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQogewogICAgIGF1dG8gYXJj
aGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShVUkwoKSwgYnVmZmVyKTsKICAgICBpZiAo
IWFyY2hpdmUpCkBAIC00NDIsNyArNDQyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3Vw
QW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWYKICAg
ICBpZiAoIWNhblNob3dNSU1FVHlwZUFzSFRNTCh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRG
OChtYWluUmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUo
KSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVhc2VOb25OdWxs
KCkgfTsKKyAgICByZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFp
blJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2Ut
PmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5y
ZWxlYXNlTm9uTnVsbCgpIH07CiB9CiAKIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRo
QXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtZW50LCBNYXJr
dXBBbmRBcmNoaXZlJiBtYXJrdXBBbmRBcmNoaXZlLCBNU09MaXN0UXVpcmtzIG1zb0xpc3RRdWly
a3MsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVU
eXBlQXNIVE1MKQpAQCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJr
dXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAg
ICAgICAgIGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YmZyYW1lVVJMKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIE1hcmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVD
b250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCku
ZGF0YSgpLCBzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCisgICAgICAgIE1h
cmt1cEFuZEFyY2hpdmUgc3ViZnJhbWVDb250ZW50ID0geyBTdHJpbmc6OmZyb21VVEY4KHN1YmZy
YW1lTWFpblJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdWJmcmFt
ZU1haW5SZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSksCiAgICAgICAgICAgICBzdWJmcmFtZU1haW5S
ZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBzdWJmcmFtZUFyY2hpdmUuY29weVJlZigpIH07CiAg
ICAgICAgIGF1dG8gc3ViZnJhbWVNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZy
YW1lLCBkZXN0aW5hdGlvbkRvY3VtZW50LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWlya3M6
OkRpc2FibGVkLCBjYW5TaG93TUlNRVR5cGVBc0hUTUwpOwogCkBAIC00OTcsNyArNDk3LDcgQEAg
c3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9j
dW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICByZXR1cm4gc2FuaXRpemVkTWFya3VwRm9yRnJh
Z21lbnRJbkRvY3VtZW50KFdURk1vdmUoZnJhZ21lbnQpLCAqc3RhZ2luZ0RvY3VtZW50LCBtc29M
aXN0UXVpcmtzLCBtYXJrdXBBbmRBcmNoaXZlLm1hcmt1cCk7CiB9CiAKLWJvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygp
IHx8ICFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MzIsNyAr
NTMyLDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3Vw
UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29u
dGVudE1hcmt1cFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtNjEyLDEyICs2MTIsMTIgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpy
ZWFkSFRNTChjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gIW1hcmt1cC5pc0VtcHR5
KCk7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlw
ZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1
dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRT
dHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZy
YWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQo
KSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjI2LDEx
ICs2MjYsMTEgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVh
ZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1
cFJlYWRlcjo6cmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8g
c3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZE
OmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0p
OworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10g
aW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVh
dGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAo
IWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzksMTIgKzYzOSwxMiBAQCBi
b29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYo
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChmcmFtZS5zZXR0aW5ncygp
LnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdp
dGhSVEY6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxs
cHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFs
bG9jXSBpbml0V2l0aFJURjpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0g
Y3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAg
aWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjUzLDExICs2NTMsMTEg
QEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRS
VEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJl
YWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUu
ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8gc3RyaW5nID0gYWRv
cHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBz
dHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRy
aWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRB
ZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjc2LDcgKzY3Niw3IEBAIGJvb2wgV2ViQ29udGVudFJl
YWRlcjo6cmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVk
UHJlc2VudGF0aW9uU2l6ZSkKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVz
ZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCiB7CiAgICAgQVNTRVJUKGZy
YW1lLmRvY3VtZW50KCkpOwogICAgIGF1dG8mIGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7
CkBAIC03NDYsNyArNzQ2LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAg
ICAgcmV0dXJuIGF0dGFjaG1lbnQ7CiB9CiAKLXN0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFj
aG1lbnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBw
cmVmZXJyZWRTaXplKQorc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckRhdGEo
RnJhbWUmIGZyYW1lLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVm
ZXJyZWRTaXplKQogewogICAgIFJlZiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwogICAg
IGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1l
czo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQpOwpAQCAtODMzLDcgKzgzMyw3IEBAIGJvb2wgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZFVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRs
ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRGF0
YUJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkK
K2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJl
c2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQogewogICAgIGlmIChidWZm
ZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCmluZGV4IDYwNDg2ZTcxYWQ1
OWZlY2M3MTVmZjBhMDliMWMzNTU4YjdiMzQyYzIuLmQzZTk4MTliZDUzMWY4NDg2YTMxN2FiOWY5
ZWQ4M2E5ODg1YmUyYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dl
YkNvbnRlbnRSZWFkZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dl
YkNvbnRlbnRSZWFkZXJHdGsuY3BwCkBAIC03MSw3ICs3MSw3IEBAIGJvb2wgV2ViQ29udGVudFJl
YWRlcjo6cmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVk
UHJlc2VudGF0aW9uU2l6ZSkKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVz
ZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCiB7CiAgICAgQVNTRVJUKGZy
YW1lLmRvY3VtZW50KCkpOwogICAgIGF1dG8mIGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYi5oCmluZGV4IDQ1ZDkzM2UxM2NhNGQyMjUxYzVkZWQ4NDhhYTllOTg3
MmM3Njc0ODkuLmJjYTY2OTZlYmU2ZjBlZGRkZGVlNzliNzNjM2VlMTQ0OTZkODJmYjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQmxvYi5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIEJsb2JMb2FkZXI7CiBjbGFz
cyBEZWZlcnJlZFByb21pc2U7CiBjbGFzcyBSZWFkYWJsZVN0cmVhbTsKIGNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRXhjZXB0aW9uT3I7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCmluZGV4IDU1OWViY2M0
OGM1ZjA5NmFjMTliYWU3ZDlmNzE4YjcxZjJhMzUzMjIuLjQyZjQxODBkZmE4NDI3ZTBlNjBmODFl
Yjc5YjE5MTg3Y2FmZGJhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0
d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2Vu
ZFF1ZXVlLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OnByb2Nl
c3NNZXNzYWdlcygpCiAgICAgICAgIGJvb2wgc2hvdWxkU3RvcFByb2Nlc3NpbmcgPSBmYWxzZTsK
ICAgICAgICAgc3dpdGNoT24obV9xdWV1ZS5maXJzdCgpLCBbdGhpc10oY29uc3QgQ1N0cmluZyYg
dXRmOCkgewogICAgICAgICAgICAgbV93cml0ZVN0cmluZyh1dGY4KTsKLSAgICAgICAgfSwgW3Ro
aXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CisgICAgICAgIH0sIFt0aGlzXShSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKICAgICAgICAgICAgIGRhdGEtPmZvckVhY2hT
ZWdtZW50KG1fd3JpdGVSYXdEYXRhKTsKICAgICAgICAgfSwgW3RoaXMsICZzaG91bGRTdG9wUHJv
Y2Vzc2luZ10oVW5pcXVlUmVmPEJsb2JMb2FkZXI+JiBsb2FkZXIpIHsKICAgICAgICAgICAgIGF1
dG8gZXJyb3JDb2RlID0gbG9hZGVyLT5lcnJvckNvZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9OZXR3b3JrU2VuZFF1ZXVlLmgKaW5kZXggNTUxZjcwZjkxNjdiMmJmY2IyNDRiYjJiMzcwMGJm
YmFhZjU0Nzk2Yy4uZDIzY2ZlYmI0NTA4YmMzMDA5MTViYjk5NmQzZjE1MDYyY2UzNTA5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKQEAgLTQzLDcgKzQzLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9iOwogY2xhc3MgQmxvYkxvYWRlcjsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNs
YXNzIFdFQkNPUkVfRVhQT1JUIE5ldHdvcmtTZW5kUXVldWUgOiBwdWJsaWMgQ29udGV4dERlc3Ry
dWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIHZvaWQgcHJvY2Vzc01lc3NhZ2VzKCk7CiAKLSAgICB1c2luZyBNZXNzYWdlID0g
c3RkOjp2YXJpYW50PENTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+LCBVbmlxdWVSZWY8QmxvYkxv
YWRlcj4+OworICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnZhcmlhbnQ8Q1N0cmluZywgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBVbmlxdWVSZWY8QmxvYkxvYWRlcj4+OwogICAgIERlcXVl
PE1lc3NhZ2U+IG1fcXVldWU7CiAKICAgICBXcml0ZVN0cmluZyBtX3dyaXRlU3RyaW5nOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCmluZGV4IDU2YTA2
ZmNhZjI3M2QyNWRjNGM3NWRjZTU2OWFhYzhmMWFhNTk1MjcuLmQyYjg3NDFhMDQ0MzQyYzdmZmQ5
ZThhNTMzY2M4YTEyMGUyOWJhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF0dGFjaG1lbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRh
Y2htZW50RWxlbWVudC5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCBzdGF0aWMgYm9vbCBtaW1lVHlw
ZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZUF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKICAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBl
KG1pbWVUeXBlKSB8fCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk1JTUVUeXBlKG1pbWVUeXBlKTsK
IH0KIAotdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0
aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRo
RGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCiB7CiAgICAgYXV0byogaG9zdEVsZW1lbnQgPSBzaGFkb3dIb3N0KCk7CiAg
ICAgaWYgKCFpczxIVE1MSW1hZ2VFbGVtZW50Pihob3N0RWxlbWVudCkgfHwgIWJ1ZmZlci0+c2l6
ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKaW5kZXgg
NTczZWMyZWFlMWNkYzA2MDlmMjYxYzM4NDAwYmIwMmM0ODBmN2JkZC4uNjYxZGVjOTM3NmQ4YTlk
NmQ0NzE3ZmQwYjRjZTdmODJmZjAzZjc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
dHRhY2htZW50RWxlbWVudC5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEZpbGU7CiBjbGFzcyBI
VE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgUmVuZGVyQXR0YWNobWVudDsKIGNsYXNzIFNoYXJlYWJs
ZUJpdG1hcDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIEhUTUxBdHRhY2htZW50RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxl
bWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChIVE1MQXR0YWNobWVudEVsZW1lbnQp
OwpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb3B5Tm9uQXR0cmlidXRlUHJv
cGVydGllc0Zyb21FbGVtZW50KGNvbnN0IEVsZW1lbnQmKSBmaW5hbDsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgdXBkYXRlQXR0cmlidXRlcyhzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIG5l
d0ZpbGVTaXplLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5l
d0ZpbGVuYW1lKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUVuY2xvc2luZ0ltYWdl
V2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERh
dGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgZGF0YSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVUaHVtYm5haWwoY29uc3Qg
UmVmUHRyPEltYWdlPiYgdGh1bWJuYWlsKTsKIAogICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVz
dWx0IGluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDUxNzFi
OWNkYzc4OTMxNzFlMjFlNWY0YmY1NTAxN2VmOTQ0YWM3OTUuLjFhNTZiYzAzNTljY2UxZjUwZGNk
ZGEwNjUyMjJhMDEwOTVhNjkwNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcApAQCAtMjkzOCw3ICsyOTM4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjZG1D
bGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkKICAgICBhdHRlbXB0VG9S
ZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
Y2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJp
bmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKK3ZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6Y2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNl
aXZlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgaW5pdERhdGEpCiB7CiAgICAgbWVkaWFQbGF5ZXJJbml0aWFsaXphdGlvbkRhdGFFbmNv
dW50ZXJlZChpbml0RGF0YVR5cGUsIGluaXREYXRhLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggNjk1NjY5NDk2MzEw
ZWY5MTA4Yjk1NmZkYTQ4MjE0MzAxNDk3MGVjYi4uNmMzYjY5M2I3YjEwZWRhMzBlNTFkNGM2NjMx
YmUzZmI1MGNiZjgwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAg
LTcyMCw3ICs3MjAsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ0RNQ2xpZW50CiAgICAgdm9pZCBj
ZG1DbGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkgZmluYWw7Ci0gICAg
dm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0
IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgY2RtQ2xpZW50
VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShM
RUdBQ1lfRU5DUllQVEVEX01FRElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggNDQyZDA5NDZiZTI1MGRjY2Y1OTI3YmFh
OTI3OTNhNzBlZTkxOTMzZS4uMDBkOGYyMzlkNzEyN2M2MWNhZTFiNThkOWM0YTMwM2E5YjNjOTA1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0xNDEsNyArMTQxLDcg
QEAgdm9pZCBJbWFnZURvY3VtZW50Ojp1cGRhdGVEdXJpbmdQYXJzaW5nKCkKICAgICBpZiAoIW1f
aW1hZ2VFbGVtZW50KQogICAgICAgICBjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpOwogCi0gICAg
aWYgKFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VE
YXRhKCkpCisgICAgaWYgKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBs
b2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpKQogICAgICAgICBtX2ltYWdlRWxlbWVudC0+Y2Fj
aGVkSW1hZ2UoKS0+dXBkYXRlQnVmZmVyKCpidWZmZXIpOwogCiAgICAgaW1hZ2VVcGRhdGVkKCk7
CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBJbWFnZURvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmco
KQogewogICAgIGlmICghcGFyc2VyKCktPmlzU3RvcHBlZCgpICYmIG1faW1hZ2VFbGVtZW50KSB7
CiAgICAgICAgIENhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSA9ICptX2ltYWdlRWxlbWVudC0+Y2Fj
aGVkSW1hZ2UoKTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGxvYWRlcigp
LT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBkYXRhID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKIAogICAgICAgICAvLyBJ
ZiB0aGlzIGlzIGEgbXVsdGlwYXJ0IGltYWdlLCBtYWtlIGEgY29weSBvZiB0aGUgY3VycmVudCBw
YXJ0LCBzaW5jZSB0aGUgcmVzb3VyY2UgZGF0YQogICAgICAgICAvLyB3aWxsIGJlIG92ZXJ3cml0
dGVuIGJ5IHRoZSBuZXh0IHBhcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IGE3Y2E3MTYyZDc5MWVkN2ZiYThj
YzkxYzIxYTJjZjNhZjZlNjlhN2UuLjE4NzkzZmYwNjYzMzhmYjYwYTM0ZGVjOTA5YmMyZGRkMjhi
ZWFmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwCkBAIC04NTAsNyArODUwLDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW0KICAgICAgICAgbmV0d29ya0FnZW50LT5pbnRlcmNlcHRSZXF1ZXN0KGxvYWRlciwgV1RG
TW92ZShoYW5kbGVyKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRl
cmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuZW5hYmxlZE5ldHdvcmtBZ2VudCgpKQogICAgICAgICBuZXR3b3JrQWdlbnQt
PmludGVyY2VwdFJlc3BvbnNlKHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaAppbmRleCA4ZTY1YzRlYjEwMjMzNTIxZjQ4YzdmNGIxMjBhZDJjODkwOWEwN2JhLi5k
Mjk1NzgxMGQ4MzgyYzkzNTFkNWE5M2YxNDRhZWQxNDkzYmNjNjUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC05Myw3
ICs5Myw3IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTaGFkb3dSb290OwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRpbWVy
QmFzZTsKIGNsYXNzIFdlYktpdE5hbWVkRmxvdzsKIGNsYXNzIFdlYlNvY2tldENoYW5uZWw7CkBA
IC0yMzYsNyArMjM2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2Vw
dFJlcXVlc3QoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0
aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNl
TG9hZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJik7Ci0gICAg
c3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOwor
ICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+KT4mJik7CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2Um
LCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwogICAgIHN0YXRp
YyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBz
dGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwpAQCAtNDQxLDcgKzQ0
MSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0
YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJl
cXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9u
PHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwotICAgIHN0YXRpYyB2b2lkIGludGVy
Y2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICBz
dGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPik+JiYpOwogCiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29s
ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPik7CiAKQEAgLTEyODksNyArMTI4OSw3IEBAIGlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYgbG9h
ZGVyLCBGCiAgICAgICAgIGludGVyY2VwdFJlcXVlc3RJbXBsKCphZ2VudHMsIGxvYWRlciwgV1RG
TW92ZShoYW5kbGVyKSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEFTU0VSVChJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGZyYW1lLCByZXNwb25z
ZSkpOwogICAgIGlmIChhdXRvKiBhZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzKGZyYW1lKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbldlYktpdC5jcHAKaW5kZXggNjFlNGJjM2JhMDE5ZWUyNWU1YzhiYzIyMWRmZjYw
NzdlZGRiODYzZC4uZjA2NDAzYTYyMzRiNDJiNmFkMmE4MGIwMTk0YTU5NmQ4OWY2ZTZiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbldlYktpdC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZUxvYWRl
ciYgbG8KICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QobG9h
ZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQordm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUm
IGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikK
IHsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGZyYW1l
LCByZXNwb25zZSwgaWRlbnRpZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2Vi
S2l0LmgKaW5kZXggZjc2MTE0Y2U5OGY0MmE3ZmY5MDZhNDhkMDQyMGI5NjMwNWQzNjkxNC4uMDdi
NDIxYjU5YzE1NTVlMWEyOTFlMThlYmIyNjIyMTIyZjE2NThiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQu
aApAQCAtMzYsMjAgKzM2LDIwIEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VC
Q09SRV9FWFBPUlQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lKiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9u
c2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZv
aWQgaW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwotICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNw
b25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYpOwogCiBwcml2YXRlOgogICAg
IHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChjb25zdCBGcmFtZSYs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2Vw
dFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdEludGVybmFsKFJlc291cmNlTG9hZGVy
JiwgRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJik7Ci0gICAgc3RhdGlj
IHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7
CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPik+JiYpOwogfTsKIAogaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lKiBmcmFt
ZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtNzYsNyArNzYsNyBAQCBpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3Qo
UmVzb3VyY2VMb2FkZXImIGxvYQogICAgIGludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChsb2FkZXIs
IFdURk1vdmUoaGFuZGxlcikpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqIGZyYW1l
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAg
ICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRS
ZXNwb25zZShmcmFtZSwgcmVzcG9uc2UpKTsKICAgICBpbnRlcmNlcHRSZXNwb25zZUludGVybmFs
KCpmcmFtZSwgcmVzcG9uc2UsIGlkZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXgg
Njc3YzViODEyZDRmMDQ3MjI5ZDc0NWZlNDczNTg2NDMwZmUwZmY3My4uZjMyZjY2MGI5MTczYmFl
OGQ1Y2Q5YTEzMGVhZTU4Yjk3ZDVlY2U4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC00Nyw2ICs0Nyw3IEBAIHN0YXRpYyBj
b25zdCBzaXplX3QgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUgPSA1MCAqIDEwMDAg
KiAxMDAwOyAvLyA1ME1CCiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpSZXNv
dXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbG9hZGVySWQp
CiAgICAgOiBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpCiAgICAgLCBtX2xvYWRlcklkKGxvYWRlcklk
KQorICAgICwgbV9kYXRhQnVmZmVyKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4o
KSkKIHsKIH0KIApAQCAtNjQsNyArNjUsNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KCkKICAgICBpZiAoaGFzRGF0YSgpKSB7CiAg
ICAgICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKICAgICAgICAgcmVzdWx0ID0gbV9kYXRhQnVm
ZmVyLT5zaXplKCk7Ci0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIG1f
ZGF0YUJ1ZmZlci0+cmVzZXQoKTsKICAgICB9CiAKICAgICBpZiAoaGFzQ29udGVudCgpKSB7CkBA
IC04MSwzNiArODIsMzcgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6ZXZpY3RDb250ZW50KCkKICAgICByZXR1cm4gcmVtb3ZlQ29udGVudCgpOwogfQogCiti
b29sIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEoKSBjb25zdAor
eworICAgIHJldHVybiAhbV9kYXRhQnVmZmVyLT5pc051bGwoKTsKK30KKwogc2l6ZV90IE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRhdGFMZW5ndGgoKSBjb25zdAogewotICAg
IHJldHVybiBtX2RhdGFCdWZmZXIgPyBtX2RhdGFCdWZmZXItPnNpemUoKSA6IDA7CisgICAgcmV0
dXJuIG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRh
dGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwotICAgIGlmICghbV9kYXRh
QnVmZmVyKQotICAgICAgICBtX2RhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LCBkYXRhTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZGF0YUJ1ZmZlci0+YXBwZW5kKGRh
dGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YUJ1ZmZlci0+YXBwZW5kKGRhdGEsIGRhdGFMZW5n
dGgpOwogfQogCiB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpk
ZWNvZGVEYXRhVG9Db250ZW50KCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAKLSAg
ICBzaXplX3QgZGF0YUxlbmd0aCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOworICAgIGF1dG8gYnVm
ZmVyID0gbV9kYXRhQnVmZmVyLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgc2l6ZV90
IGRhdGFMZW5ndGggPSBidWZmZXItPnNpemUoKTsKIAogICAgIGlmIChtX2RlY29kZXIpIHsKICAg
ICAgICAgbV9iYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0gICAgICAgIG1fY29udGVudCA9IG1fZGVj
b2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwor
ICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0
YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2Jhc2U2NEVuY29kZWQg
PSB0cnVlOwotICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhtX2RhdGFC
dWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVu
Y29kZVRvU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKICAgICB9CiAKLSAgICBt
X2RhdGFCdWZmZXIgPSBudWxscHRyOwotCiAgICAgcmV0dXJuIG1fY29udGVudC5zaXplSW5CeXRl
cygpIC0gZGF0YUxlbmd0aDsKIH0KIApAQCAtMjY3LDcgKzI2OSw3IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlc0RhdGE6OmFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBD
YWNoZWRSZXNvCiAgICAgcmVzb3VyY2VEYXRhLT5zZXRDYWNoZWRSZXNvdXJjZShjYWNoZWRSZXNv
dXJjZSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hhcmVk
QnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKQordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQs
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lKQogewogICAgIFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gcmVz
b3VyY2VEYXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJZCk7CiAgICAgaWYgKCFyZXNvdXJjZURhdGEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmlu
ZGV4IGVmYTAwMDUzYWUxMTdhNTRkZmIxMjZkMTJmOWFiZWU3ZGE1OTA4ZDcuLmVlMzk0NTdmNzY3
MmVhY2FhYzkwYTViNmJjODgxMTA4Y2JkYThhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8
d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQw
LDcgKzQxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFy
ZWRCdWZmZXJCdWlsZGVyOwogCiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VzRGF0YSB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC04OCw4ICs5MCw4IEBAIHB1YmxpYzoKICAgICAgICAg
UmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXIoKSBjb25zdCB7IHJldHVybiBtX2Rl
Y29kZXIuY29weVJlZigpOyB9CiAgICAgICAgIHZvaWQgc2V0RGVjb2RlcihSZWZQdHI8VGV4dFJl
c291cmNlRGVjb2Rlcj4mJiBkZWNvZGVyKSB7IG1fZGVjb2RlciA9IFdURk1vdmUoZGVjb2Rlcik7
IH0KIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlci5jb3B5UmVmKCk7IH0KLSAgICAgICAgdm9pZCBzZXRCdWZmZXIoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KKyAg
ICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcigpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyLmNvcHlSZWYoKTsgfQorICAgICAgICB2b2lkIHNldEJ1ZmZlcihSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1
ZmZlcik7IH0KIAogICAgICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4m
IGNlcnRpZmljYXRlSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOyB9CiAg
ICAgICAgIHZvaWQgc2V0Q2VydGlmaWNhdGVJbmZvKGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q2VydGlm
aWNhdGVJbmZvPiYgY2VydGlmaWNhdGVJbmZvKSB7IG1fY2VydGlmaWNhdGVJbmZvID0gY2VydGlm
aWNhdGVJbmZvOyB9CkBAIC0xMDMsMTAgKzEwNSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIFdhbGxU
aW1lIHJlc3BvbnNlVGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVRpbWVzdGFt
cDsgfQogICAgICAgICB2b2lkIHNldFJlc3BvbnNlVGltZXN0YW1wKFdhbGxUaW1lIHRpbWUpIHsg
bV9yZXNwb25zZVRpbWVzdGFtcCA9IHRpbWU7IH0KIAotICAgICAgICBib29sIGhhc0J1ZmZlcmVk
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBib29sIGhhc0J1
ZmZlcmVkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGhhc0RhdGEoKTsgfQogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9Cisg
ICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCgp
IGNvbnN0OwogICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgpOwogICAgICAgICB1bnNpZ25lZCBkZWNvZGVEYXRhVG9Db250ZW50KCk7
CkBAIC0xMTksOCArMTIxLDggQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgbV90ZXh0RW5jb2Rp
bmdOYW1lOwogICAgICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICAgICAgUmVmUHRyPFRleHRS
ZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9kYXRhQnVmZmVyOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAg
ICAgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fZGF0YUJ1ZmZlcjsKKyAgICAg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6
Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENh
Y2hlZFJlc291cmNlKiBtX2NhY2hlZFJlc291cmNlIHsgbnVsbHB0ciB9OwogICAgICAgICBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSBtX3R5cGUgeyBJbnNwZWN0b3JQYWdlQWdlbnQ6
Ok90aGVyUmVzb3VyY2UgfTsKQEAgLTE0NCw3ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgUmVzb3Vy
Y2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwogICAgIHZvaWQgbWF5
YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lk
IGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBDYWNoZWRSZXNvdXJj
ZSopOwotICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1
ZXN0SWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5n
TmFtZSk7CisgICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYg
dGV4dEVuY29kaW5nTmFtZSk7CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRhKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkKTsKICAgICBSZXNvdXJjZURhdGEgY29uc3QqIGRhdGFGb3JVUkwoY29u
c3QgU3RyaW5nJiB1cmwpOwogICAgIFZlY3RvcjxTdHJpbmc+IHJlbW92ZUNhY2hlZFJlc291cmNl
KENhY2hlZFJlc291cmNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggNDRlMDg0YTI4ODQyZmJj
NTYyODkzNzYxZDcxZTRjNzQyNzRlYmIxOC4uMTg5ZjI2YjA5OGI3MzYxZGNmOGU5ZDY0ZTM1OWU3
NWZkOWMwOTcyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMTE0MCw3ICsxMTQwLDcgQEAgdm9p
ZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXIm
IGxvYWRlciwgRnVuY3Rpb248dm8KICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdElu
dGVyY2VwdGVkKHJlcXVlc3RJZCwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QobG9hZGVy
LnJlcXVlc3QoKSkpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK3ZvaWQgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQobV9lbmFibGVkKTsK
ICAgICBBU1NFUlQobV9pbnRlcmNlcHRpb25FbmFibGVkKTsKQEAgLTEyNDMsNyArMTI0Myw3IEBA
IFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50
ZXJjZXB0V2l0aFJlc3BvbnNlKGNvbnN0CiAgICAgICAgIG92ZXJyaWRlUmVzcG9uc2Uuc2V0SFRU
UEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgb3ZlcnJpZGVSZXNwb25z
ZS5taW1lVHlwZSgpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvdmVycmlk
ZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG92ZXJyaWRlRGF0YTsK
ICAgICBpZiAoYmFzZTY0RW5jb2RlZCkgewogICAgICAgICBhdXRvIGJ1ZmZlciA9IGJhc2U2NERl
Y29kZShjb250ZW50KTsKICAgICAgICAgaWYgKCFidWZmZXIpCkBAIC0xMjcxLDcgKzEyNzEsNyBA
QCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Omlu
dGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9ucwogICAgIGlmIChsb2FkZXItPnJlYWNoZWRUZXJtaW5h
bFN0YXRlKCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiVW5hYmxlIHRvIGZ1bGZp
bGwgcmVxdWVzdCwgaXQgaGFzIGFscmVhZHkgYmVlbiBwcm9jZXNzZWQiX3MpOwogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gZGF0YTsKICAgICBpZiAoYmFzZTY0RW5jb2RlZCkgewogICAgICAgICBhdXRvIGJ1ZmZlciA9
IGJhc2U2NERlY29kZShjb250ZW50KTsKICAgICAgICAgaWYgKCFidWZmZXIpCkBAIC0xNDA3LDEy
ICsxNDA3LDEyIEBAIGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjYWNoZWRSZXNvdXJjZUNv
bnRlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBTdHJpCiAgICAgICAgIGlmIChJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNUZXh0KHJlc291cmNlLm1pbWVUeXBlKCkpKSB7
CiAgICAgICAgICAgICBhdXRvIGRlY29kZXIgPSBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0
ZVRleHREZWNvZGVyKHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnJlc3BvbnNlKCkudGV4
dEVuY29kaW5nTmFtZSgpKTsKICAgICAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7Ci0g
ICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICAqYmFz
ZTY0RW5jb2RlZCA9IHRydWU7Ci0gICAgICAgICpyZXN1bHQgPSBiYXNlNjRFbmNvZGVUb1N0cmlu
ZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAqcmVzdWx0ID0gYmFz
ZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgK
aW5kZXggOGY2ZmJjYzI5M2FlYmY4YjlkNWM5NDVkMjgyOWExNTI3Yjc0YmM3Zi4uNmJjZDg3ZGRj
ZDhiMDQ0MTMwOGQxZDAxZWNhNmIwZTZkYTE0MTNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCkBAIC0xMjMs
NyArMTIzLDcgQEAgcHVibGljOgogICAgIGJvb2wgd2lsbEludGVyY2VwdChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKTsKICAgICBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAgICAgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOwor
ICAgIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiAgICAgdm9p
ZCBpbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKT4mJik7CiAKICAgICB2b2lkIHNlYXJjaE90aGVyUmVxdWVzdHMoY29u
c3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYsIFJlZjxKU09OOjpBcnJheU9mPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jik7CkBAIC0xODUsNyArMTg1LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGVuZGluZ0ludGVyY2Vw
dFJlc3BvbnNlKTsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGlj
OgotICAgICAgICBQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgb3JpZ2luYWxSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgICAgICBQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
b3JpZ2luYWxSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKICAgICAgICAgICAgIDogbV9vcmlnaW5hbFJlc3BvbnNlKG9yaWdpbmFsUmVzcG9uc2Up
CiAgICAgICAgICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpCiAgICAgICAgIHsgfQpAQCAtMjAyLDcgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICByZXNwb25kKG1fb3JpZ2luYWxSZXNwb25zZSwgbnVsbHB0cik7CiAgICAgICAgIH0KIAot
ICAgICAgICB2b2lkIHJlc3BvbmQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEpCisgICAgICAgIHZvaWQgcmVzcG9uZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRh
dGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9yZXNwb25kZWQpOwogICAgICAg
ICAgICAgaWYgKG1fcmVzcG9uZGVkKQpAQCAtMjE1LDcgKzIxNSw3IEBAIHByaXZhdGU6CiAKICAg
ICBwcml2YXRlOgogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsK
LSAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgICAgICBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOwogICAgICAgICBib29sIG1f
cmVzcG9uZGVkIHsgZmFsc2UgfTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggM2RhZmU2NDM3
ZGYxMjEwNDA1ZmVmYmYzNzU3ODVmZWNkNWVhYzQ3Mi4uMWI2NDZhYTIxNzNhYjU0YTNmMWFiZGNi
NTAyMDRhZGU5OGMwNzNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAwLDE1ICsxMDAsMTUgQEAgc3Rh
dGljIGJvb2wgZGVjb2RlQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgdW5zaWduZWQgc2l6
ZSwgY29uc3QgU3RyaW5nJiB0ZXgKIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNv
dXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyog
cmVzdWx0KQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2Fk
ZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExv
YWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGlu
ZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNv
ZGUsIHJlc3VsdCk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJD
b250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRF
bmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCitib29s
IEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwg
Ym9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICByZXR1cm4gZGF0
YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3Vs
dCk7CisgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0
RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCiBib29sIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
c2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNv
ZGUsIFN0cmluZyogcmVzdWx0KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgRnJhCiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOwogICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwogICAgIGlmIChlcXVhbElnbm9yaW5n
RnJhZ21lbnRJZGVudGlmaWVyKHVybCwgbG9hZGVyLT51cmwoKSkpIHsKICAgICAgICAgKmJhc2U2
NEVuY29kZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IGI1MWFkZGIxYmQ4ZjJjY2U2OTU2MDc5OWNk
MWQ5NTJkMmRlNDI4MzguLjNkNWU1NjZkYmUwYzVlYzExZDllOGRmNjdmY2YwYTcwOTg4YTJmOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQ
YWdlQWdlbnQuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFz
cyBJbnNwZWN0b3JPdmVybGF5OwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlck9iamVjdDsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IEluc3BlY3RvclBhZ2VBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1
YmxpYyBJbnNwZWN0b3I6OlBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclBhZ2VBZ2VudCk7CkBAIC03NSw3ICs3NSw3IEBAIHB1
YmxpYzoKICAgICAgICAgT3RoZXJSZXNvdXJjZSwKICAgICB9OwogCi0gICAgc3RhdGljIGJvb2wg
c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcm
IHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQp
OworICAgIHN0YXRpYyBib29sIHNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRo
QmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7CiAgICAgc3RhdGljIFZlY3RvcjxDYWNoZWRS
ZXNvdXJjZSo+IGNhY2hlZFJlc291cmNlc0ZvckZyYW1lKEZyYW1lKik7CiAgICAgc3RhdGljIHZv
aWQgcmVzb3VyY2VDb250ZW50KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgRnJh
bWUqLCBjb25zdCBVUkwmLCBTdHJpbmcqIHJlc3VsdCwgYm9vbCogYmFzZTY0RW5jb2RlZCk7CiAg
ICAgc3RhdGljIFN0cmluZyBzb3VyY2VNYXBVUkxGb3JSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGI0ZTZhM2E1M2I0
YzBjMGRhMWMzMTcyZGQ0MmNhZTZhOGNkMjFmN2EuLjZhZTUyNjU5N2NkMjg2MzFiZTc5NTBmYzMz
NTM2ZjhmMzQ3ZDdhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAK
QEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURh
dGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRl
OjpBbGxvd2VkKTsKICAgICBBU1NFUlQocmVzb3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09
IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJj
ZUJ1ZmZlciA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50LmRh
dGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5kYXRhKCksIHJl
c291cmNlQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJv
dWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tl
ZFBhZ2VVUkwoKQpAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6aGFuZGxl
UHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAg
ICBBU1NFUlQod2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpKTsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSB7IG1fYmxvY2tpbmdDb250ZW50
RmlsdGVyLT5yZXBsYWNlbWVudERhdGEoKSB9OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiByZXBsYWNlbWVudERhdGEgeyBtX2Jsb2NraW5nQ29udGVudEZpbHRlci0+cmVwbGFj
ZW1lbnREYXRhKCkgfTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgVVJMKCksICJ0
ZXh0L2h0bWwiX3MsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4ocmVwbGFjZW1lbnREYXRhLT5zaXpl
KCkpLCAiVVRGLTgiX3MgfTsKICAgICBTdWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0YSB7IFdU
Rk1vdmUocmVwbGFjZW1lbnREYXRhKSwgZXJyb3IuZmFpbGluZ1VSTCgpLCByZXNwb25zZSwgU3Vi
c3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVuIH07CiAgICAgU2V0
Rm9yU2NvcGU8Ym9vbD4gbG9hZGluZ0Jsb2NrZWRQYWdlIHsgbV9pc0xvYWRpbmdCbG9ja2VkUGFn
ZSwgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXgg
YzNkODQ1MGY3MWMyYzM3M2QyYWYxY2NjZmIyMTVhZDgxYmY4MGQwYi4uM2I5MGVmNGM1ODI3ZTZj
MGI0OWIzNDY1NmIzY2Q3MWE4ZWRhOTY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgRG9jdW1lbnRMb2FkZXI6On5Eb2N1bWVu
dExvYWRlcigpCiAjZW5kaWYKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRG9jdW1lbnRMb2Fk
ZXI6Om1haW5SZXNvdXJjZURhdGEoKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAo
bV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBtX3N1YnN0aXR1dGVE
YXRhLmNvbnRlbnQoKS0+Y29weSgpOwpAQCAtMTYwOCwxMSArMTYwOCwxMSBAQCBib29sIERvY3Vt
ZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUoKQogICAgIGFkZEFsbEFyY2hpdmVSZXNvdXJj
ZXMoKm1fYXJjaGl2ZSk7CiAgICAgQVNTRVJUKG1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCkpOwog
ICAgIGF1dG8mIG1haW5SZXNvdXJjZSA9ICptX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwotICAg
IG1fcGFyc2VkQXJjaGl2ZURhdGEgPSAmbWFpblJlc291cmNlLmRhdGEoKTsKKyAgICBtX3BhcnNl
ZEFyY2hpdmVEYXRhID0gbWFpblJlc291cmNlLmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAg
IG1fd3JpdGVyLnNldE1JTUVUeXBlKG1haW5SZXNvdXJjZS5taW1lVHlwZSgpKTsKIAogICAgIEFT
U0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKLSAgICBjb21taXREYXRhKG1haW5SZXNvdXJjZS5k
YXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0
YShtX3BhcnNlZEFyY2hpdmVEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgp
KTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQpAQCAtMTY3MSw3ICsxNjcxLDcgQEAgQXJj
aGl2ZVJlc291cmNlKiBEb2N1bWVudExvYWRlcjo6YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0
IFVSTCYgdXJsKSBjb25zdAogCiBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBEb2N1bWVudExvYWRl
cjo6bWFpblJlc291cmNlKCkgY29uc3QKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
ID0gbWFpblJlc291cmNlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBkYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgZGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYXV0byYgcmVzcG9uc2UgPSB0aGlzLT5y
ZXNwb25zZSgpOwpAQCAtMjI1NSw4ICsyMjU1LDggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5
YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpCiAKICAgICBmcmFtZUxvYWRlcigpLT5z
ZXR1cEZvclJlcGxhY2UoKTsKICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKLSAgICBjb21t
aXRMb2FkKHJlc291cmNlRGF0YS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJj
ZURhdGEoKTsKKyAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OnN0YXJ0SWNvbkxvYWRpbmcoKQpAQCAtMjI5Miw3ICsyMjkyLDcgQEAgdm9pZCBEb2N1bWVudExv
YWRlcjo6c3RhcnRJY29uTG9hZGluZygpCiAgICAgbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCku
Z2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoaWNvbkRlY2lzaW9ucyk7CiB9CiAKLXZvaWQgRG9jdW1l
bnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0
X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVj
aXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBhdXRvIGljb24gPSBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbi50
YWtlKGxvYWRJZGVudGlmaWVyKTsKIApAQCAtMjMxMyw3ICsyMzEzLDcgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRf
dCBsb2FkSWRlbnQKICAgICByYXdJY29uTG9hZGVyLT5zdGFydExvYWRpbmcoKTsKIH0KIAotdm9p
ZCBEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiBsb2FkZXIs
IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2Fk
aW5nSWNvbihJY29uTG9hZGVyJiBsb2FkZXIsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZl
cikKIHsKICAgICAvLyBJZiB0aGUgRG9jdW1lbnRMb2FkZXIgaGFzIGRldGFjaGVkIGZyb20gaXRz
IGZyYW1lLCBhbGwgaWNvbiBsb2FkcyBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY2FuY2VsbGVk
LgogICAgIEFTU0VSVChtX2ZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgKaW5kZXggZmJmNTQ1YzQ2MGU0ZTQ4OWQ4N2IyNWMwZTg1ZWNjY2E0Y2JmM2M4Ny4uMzM5ODcz
ZDVkM2ZiOWJiMzAwNDk4Y2Q2ZjM3Y2JmNjViNzhhZjViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmgKQEAgLTc1LDYgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNl
Q29sbGVjdGlvbjsKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI7CiBjbGFzcyBDb250ZW50RmlsdGVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogc3Ry
dWN0IEN1c3RvbUhlYWRlckZpZWxkczsKIGNsYXNzIEZvcm1TdGF0ZTsKIGNsYXNzIEZyYW1lOwpA
QCAtODMsNyArODQsNyBAQCBjbGFzcyBJY29uTG9hZGVyOwogY2xhc3MgUGFnZTsKIGNsYXNzIFBy
ZXZpZXdDb252ZXJ0ZXI7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTV0NsaWVudENvbm5lY3Rp
b247CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFN1YnN0aXR1dGVSZXNvdXJjZTsK
QEAgLTE3MSw3ICsxNzIsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBGcmFtZUxv
YWRlciogZnJhbWVMb2FkZXIoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdWJyZXNvdXJj
ZUxvYWRlciogbWFpblJlc291cmNlTG9hZGVyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRh
KCkgY29uc3Q7CiAgICAgCiAgICAgRG9jdW1lbnRXcml0ZXImIHdyaXRlcigpIGNvbnN0IHsgcmV0
dXJuIG1fd3JpdGVyOyB9CiAKQEAgLTM5Miw4ICszOTMsOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
ICAgIHZvaWQgc3RhcnRJY29uTG9hZGluZygpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlk
R2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4mJik7Ci0gICAgdm9p
ZCBmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBTaGFyZWRCdWZmZXIqKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lv
biwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciopPiYmKTsKKyAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oSWNv
bkxvYWRlciYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIAogICAgIGNvbnN0IFZlY3RvcjxM
aW5rSWNvbj4mIGxpbmtJY29ucygpIGNvbnN0IHsgcmV0dXJuIG1fbGlua0ljb25zOyB9CiAKQEAg
LTYyMSw3ICs2MjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV93YWl0aW5nRm9yTmF2aWdhdGlv
blBvbGljeSB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBMaW5rSWNvbj4gbV9p
Y29uc1BlbmRpbmdMb2FkRGVjaXNpb247Ci0gICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8SWNv
bkxvYWRlcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+PiBtX2ljb25M
b2FkZXJzOworICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPEljb25Mb2FkZXI+LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4+IG1faWNvbkxvYWRlcnM7
CiAgICAgVmVjdG9yPExpbmtJY29uPiBtX2xpbmtJY29uczsKIAogI2lmIEVOQUJMRShBUFBMSUNB
VElPTl9NQU5JRkVTVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZTEzZTI4
NmUxNGY0ZmU4ZmQ3ZGY5MGEwZTE1MWYwOTM0MThkZGRiMS4uMDhhMGFlMTlhMzc5ODQ2ZjE1NzU2
NGMyZDBjODMyYjI3NDgzNjAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAg
LTU5LDYgKzU5LDcgQEAgY2xhc3MgQ2FjaGVkRnJhbWVCYXNlOwogY2xhc3MgQ2FjaGVkUGFnZTsK
IGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgQ2hyb21lOworY2xhc3MgU2hhcmVkQnVmZmVy
OwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVu
dExvYWRlcjsKQEAgLTc2LDcgKzc3LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZXJpYWxpemVk
U2NyaXB0VmFsdWU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsK
IAogZW51bSBjbGFzcyBDYWNoZVBvbGljeSA6IHVpbnQ4X3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDRmZDYzN2E5MDE0YTVkNDFhMjI2ZWU0NTkxN2I2
YjNlOWE3OTBlYmIuLmVlOWYzZDBjOTg0ZDQ1NWNiYjkxYjQ2MGMxYmMxMjg5OGQxMjM2NTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC05OCw3ICs5OCw3
IEBAIGNsYXNzIFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRh
OwogY2xhc3MgV2lkZ2V0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9h
ZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmlu
ZGV4IGFlZjY2OGJkNjNlZDVmY2Q0NWU2MWU5ZDFmMTA3Y2ZiNmFlZjI2NGIuLjI5ZDJlM2Y0NjE0
MGFhYTUxMTYwZTZhMjg1NjJmMzcwZTM3MWViMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2Fk
ZXJTdHJhdGVneS5oCkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwogCiBzdHJ1Y3QgRmV0Y2hPcHRpb25zOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5jcHAKaW5kZXggNjMzNzU1OTYzMjAwMTQ2MzgyODllMjgyNjA0YzU1YjBhZjQ0NTMxMy4uNjA0
M2FjOWJlMjY3ZWE0ZmJjNzFlMTExOGI5MDc5MTU1ZTM5MTUwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCkBAIC0xNDYs
MTIgKzE0NiwxMiBAQCB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZQogICAgIGRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBh
eWxvYWRUeXBlKTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51
bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2Fk
VHlwZSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6
OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgUmVm
PE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaApp
bmRleCA0OGJiMjE1M2M5M2YyZGM3NTRlMjA3MzIyNTJjMDUwOWNmNzA0YTQxLi5iNTE3NGVkYzk0
Yjk5MjM5MDIwNWYwZmFkNDUyZWE1YWMzODc4OTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaApAQCAtNjMsNyArNjMsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGlu
Zyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCkBAIC03NCw3ICs3NCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKLSAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90Kiwg
aW50LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlEb25lKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdC5jcHAKaW5kZXggYzYyNzc2ODU4YTZkYzVhZmZkMzZkYzllNzg1YzhiZDI0NzJiYjc0ZC4u
ZDk0YjcwMDA3NDFjZDkxMmI5MTczZTJiMzc0NmQ0ZGE4YjM2OGE1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKQEAg
LTE1NSw3ICsxNTUsNyBAQCBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhp
Y0RpZ2VzdEZvckJ5dGVzKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZwogICAgIHJldHVybiB7IGFs
Z29yaXRobSwgY3J5cHRvRGlnZXN0LT5jb21wdXRlSGFzaCgpIH07CiB9CiAKLVJlc291cmNlQ3J5
cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291
cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSwgY29uc3QgU2hhcmVk
QnVmZmVyKiBidWZmZXIpCitSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhp
Y0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29y
aXRobSBhbGdvcml0aG0sIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsK
ICAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUodG9Dcnlw
dG9EaWdlc3RBbGdvcml0aG0oYWxnb3JpdGhtKSk7CiAgICAgaWYgKGJ1ZmZlcikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCmlu
ZGV4IGFlYTNkYzU3Yzg3ODMxMzAxM2E1YjE2YzkzOWI3NzRlZDQ4NDMyNGMuLjgzYjg2MTNjZmRh
MjMyOWFlMzBiYmY2YWJjMTRiOTlkNDQyMzdiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmgKQEAgLTM0LDcgKzM0LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0IHsKICAgICBlbnVtIGNsYXNzIEFsZ29yaXRobSB7CkBAIC03
NSw3ICs3NSw3IEBAIHN0ZDo6b3B0aW9uYWw8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdD4gcGFyc2VFbmNvZGVkQ3J5cHRvZ3JhcGhpY0RpZ2VzCiAKIHN0ZDo6b3B0aW9uYWw8UmVz
b3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBkZWNvZGVFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFw
aGljRGlnZXN0KGNvbnN0IEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QmKTsKIAot
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRC
dWZmZXIoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0sIGNvbnN0IFNoYXJl
ZEJ1ZmZlciopOworUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdl
c3RGb3JTaGFyZWRCdWZmZXIoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0s
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yQnl0ZXMoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0OjpBbGdvcml0aG0sIGNvbnN0IHZvaWQqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYWE4NWJiNGQzY2E4
NzE0NWJiN2E4NmY2NDY2OGU0OTUxNzZhYzIzNS4uZGYxMzk1ODhlOGQ1MjUyYjNlZWM2MTkzYWU2
MWFhMjQ3ODZiMjE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC03Niw2ICs3Niw3IEBAIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIo
UmVzb3VyY2VMb2FkZXIpOwogUmVzb3VyY2VMb2FkZXI6OlJlc291cmNlTG9hZGVyKEZyYW1lJiBm
cmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMpCiAgICAgOiBtX2ZyYW1lIHsgJmZy
YW1lIH0KICAgICAsIG1fZG9jdW1lbnRMb2FkZXIgeyBmcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1
bWVudExvYWRlcigpIH0KKyAgICAsIG1fcmVzb3VyY2VEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZGVmZXJzTG9hZGluZyB7IG9wdGlvbnMuZGVm
ZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRp
bmcgJiYgZnJhbWUucGFnZSgpLT5kZWZlcnNMb2FkaW5nKCkgfQogICAgICwgbV9vcHRpb25zIHsg
b3B0aW9ucyB9CiB7CkBAIC0xMTgsNyArMTE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVs
ZWFzZVJlc291cmNlcygpCiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07CiAKLSAgICBtX3Jlc291
cmNlRGF0YSA9IG51bGxwdHI7CisgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CiAgICAgbV9k
ZWZlcnJlZFJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0KIApAQCAtMTg5LDcgKzE5MCw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmluaXQoUmVzb3VyY2VSZXF1ZXN0JiYgY2xpZW50UmVx
dWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBSZXNvdXJjZUxvYWRl
cjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGRpZFJl
Y2VpdmVSZXNwb25zZShyZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChy
ZWFjaGVkVGVybWluYWxTdGF0ZSgpKQpAQCAtMzE4LDcgKzMxOSw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVm
ZmVyaW5nUG9sCiAKICAgICAvLyBSZXNldCBhbnkgYWxyZWFkeSBidWZmZXJlZCBkYXRhCiAgICAg
aWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZm
ZXJEYXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fcmVz
b3VyY2VEYXRhLT5yZXNldCgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNo
VG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpAQCAtMzI5LDI5ICszMzAsMjkgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKICAgICAgICAgbV9oYW5k
bGUtPmNhbmNlbCgpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBTaGFyZWRCdWZmZXIqIGJ1ZmZl
ciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6
OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKIHsKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1
ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoIW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xl
UmVzb3VyY2UpIHsKLSAgICAgICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgICAgIG1fcmVzb3VyY2VE
YXRhID0gYnVmZmVyOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgCisgICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVz
b3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOworCiAgICAgaWYgKGJ1ZmZl
cikKICAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsKICAgICBlbHNlCiAg
ICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAorY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLT5nZXQoKS5nZXQoKTsKK30KKwogdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEoKQogewotICAgIGlmIChtX3Jlc291
cmNlRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmNsZWFyKCk7CisgICAgaWYgKCFtX3Jl
c291cmNlRGF0YS0+aXNOdWxsKCkpCisgICAgICAgIG1fcmVzb3VyY2VEYXRhLT5lbXB0eSgpOwog
fQogCiBib29sIFJlc291cmNlTG9hZGVyOjppc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3QKQEAg
LTU1MSwxNCArNTUyLDE0IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsCiAgICAgZGlkUmVjZWl2
ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3RoLCBk
YXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
bG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRU
eXBlKQogewogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShi
dWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2
b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRh
UGF5bG9hZFR5cGUpCiB7Ci0gICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgZ2V0IGRhdGEr
bGVuZ3RoICpPUiogYSBTaGFyZWRCdWZmZXIuCisgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9u
bHkgZ2V0IGRhdGErbGVuZ3RoICpPUiogYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgogICAgIEFT
U0VSVCghYnVmZmVyIHx8ICghZGF0YSAmJiAhbGVuZ3RoKSk7CiAKICAgICAvLyBQcm90ZWN0IHRo
aXMgaW4gdGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2lu
ZyBjYW4gZG8KQEAgLTU3MSw3ICs1NzIsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aAogICAg
IC8vIEhvd2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRz
LCB0aGlzIHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1
ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2Fs
bGJhY2tzID09IFNlbmRDYWxsYmFja1BvbGljeTo6U2VuZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQot
ICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1
ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBs
ZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKKyAgICAgICAgZnJh
bWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6
ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CiB9CiAK
IHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCkBAIC03MzUsNyArNzM2LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ24KICAgICBkaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgsIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgZGlkUmVjZWl2ZUJ1ZmZlcihX
VEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggNGZkMmJmMGJiYjNiMWJk
MjE1NDVkYjUyYzJlMWNhNjRlZTQyYjkxNy4uNTRiMWI4NjZkZjg5NmE4NGI0Y2EyOTdlZTQ3NmQ2
ZDBiNjYxZmRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lmIEVOQUJMRShDT05U
RU5UX0VYVEVOU0lPTlMpCkBAIC01NSw2ICs1Niw4IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJh
bWVMb2FkZXI7CiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyOwogY2xhc3MgTmV0d29ya0xvYWRN
ZXRyaWNzOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI7CiAKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFJlc291
cmNlTG9hZGVyKTsKIGNsYXNzIFJlc291cmNlTG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRy
PFJlc291cmNlTG9hZGVyPiwgcHVibGljIFJlZkNvdW50ZWQ8UmVzb3VyY2VMb2FkZXI+LCBwcm90
ZWN0ZWQgUmVzb3VyY2VIYW5kbGVDbGllbnQgewpAQCAtNjYsNyArNjksNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgaW5pdChSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CiAKLSAgICB2b2lkIGRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQg
ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICB2aXJ0dWFsIHZvaWQgc3RhcnRMb2FkaW5nKCkKQEAgLTk4LDcgKzEwMSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVJlc291cmNlcygpOwogICAgIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogCi0gICAg
U2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlRGF0
YS5nZXQoKTsgfQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0
YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURhdGEoKTsKICAgICAKICAgICB2aXJ0
dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpAQCAtMTA3LDcgKzExMCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25n
IGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVu
Y29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCkBAIC0xNjYsNyArMTY5LDcgQEAgcHJv
dGVjdGVkOgogCiAgICAgYm9vbCB3YXNDYW5jZWxsZWQoKSBjb25zdCB7IHJldHVybiBtX2NhbmNl
bGxhdGlvblN0YXR1cyA+PSBDYW5jZWxsZWQ7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBE
YXRhUGF5bG9hZFR5cGUpOwogICAgIAogICAgIHZvaWQgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJy
ZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3kpIHsgbV9vcHRpb25zLnJlZmVycmVyUG9saWN5ID0gcmVm
ZXJyZXJQb2xpY3k7IH0KICAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSgpIGNvbnN0
IHsgcmV0dXJuIG1fb3B0aW9ucy5yZWZlcnJlclBvbGljeTsgfQpAQCAtMTkxLDcgKzE5NCw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJv
ciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3Im
KSA9IDA7CiAKLSAgICB2b2lkIGFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWdu
ZWQsIFNoYXJlZEJ1ZmZlciosIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBhZGREYXRhT3JC
dWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwg
RGF0YVBheWxvYWRUeXBlKTsKICAgICB2b2lkIGxvYWREYXRhVVJMKCk7CiAgICAgdm9pZCBmaW5p
c2hOZXR3b3JrTG9hZCgpOwogCkBAIC0yMDIsNyArMjA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25z
ZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2ls
bFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVz
b3VyY2VSZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYm
KT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVk
QnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNo
TG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJy
b3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdhc0Jsb2NrZWQoUmVzb3VyY2VIYW5kbGUqKSBvdmVy
cmlkZTsKQEAgLTIyNyw3ICsyMzAsNyBAQCBwcml2YXRlOgogCiAgICAgUmVzb3VyY2VSZXF1ZXN0
IG1fcmVxdWVzdDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIEJl
Zm9yZSByZWRpcmVjdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9yZXNvdXJjZURhdGE7
CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fcmVzb3VyY2VEYXRhOwogICAg
IAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDQ2Y2VmYmRmOWRhMTc4
OTk3ZWRjYjlmMzU0NGY0ODg0YjYwYTZlZmUuLjM3ZDBiYjgyMWFiZDg2YTliNTYwNmUxMjdlZmM5
NDEyYTUxYmIxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcApAQCAtNTMwLDcgKzUzMCw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uCiAgICAgZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVu
Z3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFN1YnJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQogewogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChhdXRvIHBy
ZXZpZXdMb2FkZXIgPSBtX3ByZXZpZXdMb2FkZXIuZ2V0KCkpIHsKQEAgLTU0Miw3ICs1NDIsNyBA
QCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZQogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVs
bHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRU
eXBlKTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZl
cihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0
YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBh
eWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBBU1NFUlQobV9yZXNvdXJjZSk7CiAK
QEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsCiAgICAgICAgIGlmIChh
dXRvKiByZXNvdXJjZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkKICAgICAgICAgICAgIG1f
cmVzb3VyY2UtPnVwZGF0ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6
IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKKyAgICAgICAgICAgIG1f
cmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCmluZGV4IDM3MjNi
NmI5YWI5ZmRkYWFhNTU3NGJmYjBlNmYzOGNlZDdhZWZiNzUuLjgzMmM5ZjBlNzNkMzg0NjRhNzk1
ZjQwMzg2MGY3OWMzNGU3M2JjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTZW5kRGF0
YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxC
eXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNv
bXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVk
QnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBFeHBlY3RlZDx2b2lkLCBTdHJp
bmc+IGNoZWNrUmVzcG9uc2VDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZWRpcmVjdGlvbkNy
b3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHByZXZpb3VzUmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVz
dCk7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGlu
dCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBE
YXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1
aW50OF90KiwgaW50LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlE
b25lKExvYWRDb21wbGV0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJzdGl0dXRlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVE
YXRhLmgKaW5kZXggZjY2MjkyZTMxY2JlYjQyNjQzMGE4MzJhZGVmNDI5OTFjYjU3NDM2ZS4uYThh
NDliNDdmOTI3MzQyNzRiYTRjZWFiYzE3MDdmZWZhN2I2NjQwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnN0aXR1dGVEYXRhLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBTdWJzdGl0dXRlRGF0YShSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGNvbnRlbnQsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzaG91bGRS
ZXZlYWxUb1Nlc3Npb25IaXN0b3J5KQorICAgICAgICBTdWJzdGl0dXRlRGF0YShSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjb250ZW50LCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkg
c2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSkKICAgICAgICAgICAgIDogbV9jb250ZW50KFdU
Rk1vdmUoY29udGVudCkpCiAgICAgICAgICAgICAsIG1fZmFpbGluZ1VSTChmYWlsaW5nVVJMKQog
ICAgICAgICAgICAgLCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQpAQCAtNTQsMTQgKzU0LDE0IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZW50ICE9IG51bGxwdHI7IH0KICAgICAgICAgYm9vbCBzaG91bGRSZXZlYWxUb1Nlc3Np
b25IaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5
ID09IFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6VmlzaWJsZTsgfQogCi0gICAgICAgIGNvbnN0
IFNoYXJlZEJ1ZmZlciogY29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudC5nZXQoKTsg
fQorICAgICAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBjb250ZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9jb250ZW50LmdldCgpOyB9CiAgICAgICAgIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlLm1pbWVUeXBlKCk7IH0KICAgICAgICAgY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlLnRleHRF
bmNvZGluZ05hbWUoKTsgfQogICAgICAgICBjb25zdCBVUkwmIGZhaWxpbmdVUkwoKSBjb25zdCB7
IHJldHVybiBtX2ZhaWxpbmdVUkw7IH0KICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAgICAgICAgIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udGVudDsKKyAgICAgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fY29udGVudDsKICAgICAgICAgVVJMIG1f
ZmFpbGluZ1VSTDsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogICAgICAg
ICBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgbV9zaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5
IHsgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4gfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCA1OTY2NGI1ODU0Zjg1YjAyY2RmMzQ5MDIw
YTBlZmYxM2ViNzg4ODc5Li5jZjJkZTBjNjJkOTVmMzMyNWI0MmI0NmUyNDAzNzc0NDEwNzQyYTBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0zNywx
MiArMzcsMTQgQEAgcHVibGljOgogCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVy
biBtX3VybDsgfQogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNwb25zZTsgfQotICAgIFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZmZXI+KG1fZGF0YSk7IH0KKyAg
ICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3Jl
ZmVyZW5jZV9jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkg
fSk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7
IG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0
YS5lbXB0eSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYg
bG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0
YS0+Y29weSgpKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBs
b2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRh
LmNvcHkoKSk7IH0KIAogcHJvdGVjdGVkOgotICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1
cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
KQorICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiBy
ZXNwb25zZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKICAgICAgICAgOiBt
X3VybChXVEZNb3ZlKHVybCkpCiAgICAgICAgICwgbV9yZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNl
KSkKICAgICAgICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKQEAgLTUyLDcgKzU0LDcgQEAgcHJv
dGVjdGVkOgogcHJpdmF0ZToKICAgICBVUkwgbV91cmw7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBt
X3Jlc3BvbnNlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZm
ZXJCdWlsZGVyIG1fZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHAKaW5kZXggODlmM2IwZjFkYzM5ZDQwYTU2Mzg3OGFlNTVmNzZjNjcwYTcxNTA5MS4uMDM2
ZWZkMjBlNDk2MzAwY2Y4YzllN2U3OTAzMTdlMDFkZTViYWYzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAK
QEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNo
TG9hZGluZ01hbmlmZXN0KCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBhdXRvIG1hbmlm
ZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVSTCwgbV9tYW5p
ZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+
ZGF0YSgpLmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKKyAgICBh
dXRvIG1hbmlmZXN0ID0gcGFyc2VBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobV9tYW5pZmVzdFVS
TCwgbV9tYW5pZmVzdFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIG1fbWFuaWZlc3RS
ZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9tYW5pZmVzdFJlc291
cmNlLT5kYXRhKCkuc2l6ZSgpKTsKICAgICBpZiAoIW1hbmlmZXN0KSB7CiAgICAgICAgIC8vIEF0
IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZywgbGFjayBvZiAiQ0FDSEUgTUFOSUZFU1QiIHNpZ25h
dHVyZSBpcyB0aGUgb25seSByZWFzb24gZm9yIHBhcnNlTWFuaWZlc3QgdG8gZmFpbC4KICAgICAg
ICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVz
dCBjb3VsZCBub3QgYmUgcGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/
Il9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDYwMzI4MTg4ODM3NWY0NGE2MjRiM2UzYjNhYWZlMDZh
MzY4OTJlZTYuLjUxOTc4ZjQxMjM4NzRkYzU2NjBlZmY0NzA2NTk3MDdkNGU1ZDg1YTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmNwcApAQCAtMjU1LDEwICsyNTUsOCBAQCBVUkwgQXBwbGljYXRpb25DYWNoZUhvc3Q6
OmNyZWF0ZUZpbGVVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQogCiBzdGF0aWMgaW5saW5lIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UmIHJlc291cmNlKQogewotICAgIC8vIEZJWE1FOiBDbGllbnRzIHByb2JhYmx5IGRvIG5vdCBu
ZWVkIGEgY29weSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgIC8vIFJlbW92ZSB0aGUgY2FsbCB0
byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVyIHdpbGwgbm90IGJlIG1vZGlmaWVk
LgogICAgIGlmIChyZXNvdXJjZS5wYXRoKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gcmVz
b3VyY2UuZGF0YSgpLmNvcHkoKTsKKyAgICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5tYWtl
Q29udGlndW91cygpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQogCkBAIC0yOTAsOSArMjg4LDcgQEAgdm9pZCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYKICAgICAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNv
dXJjZTsKICAgICAgICAgaWYgKGdldEFwcGxpY2F0aW9uQ2FjaGVGYWxsYmFja1Jlc291cmNlKHJl
cXVlc3QsIHJlc291cmNlKSkgewogICAgICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+cmVz
cG9uc2UoKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBDbGllbnRzIHByb2FibHkgZG8gbm90IG5l
ZWQgYSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgICAgICAgICAvLyBSZW1vdmUgdGhl
IGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBt
b2RpZmllZC4KLSAgICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNvcHkoKTsKKyAg
ICAgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAg
ICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4IDUyY2QxNjQwM2ExNzM2YTcxODY1Njc3MjQ4
NjExZTA4ZjY2M2IyOWYuLmI5NjM1NmU3ODU2MTM4OTU2YWU0YzA1OTgzMTcwY2RmNzIzNjcyYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5oCkBAIC00Miw2ICs0Miw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBj
bGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
IGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNz
IEZyYW1lOwpAQCAtNDksNyArNTAsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVz
b3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNz
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggZjFmN2Ux
NzU2MzAxNDcxZjMwODVkZWY4ZTQxZGM1ZDBjYTlkNjA5YS4uMmJiM2ZlNzViOTk3N2U4MzMyMmFl
MjU4MGY3MjEyZWU1YmYyMTYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTI5LDcgKzI5
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8QXBwbGljYXRpb25DYWNoZVJlc291
cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhdGgpCitSZWY8QXBwbGljYXRpb25D
YWNoZVJlc291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBVUkwm
IHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXRo
KQogewogICAgIEFTU0VSVCghdXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKTsKICAgICBpZiAo
IWJ1ZmZlcikKQEAgLTQwLDcgKzQwLDcgQEAgUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4g
QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGMKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMIHsgdXJsIH0s
IFdURk1vdmUocmVzb3VyY2VSZXNwb25zZSksIHR5cGUsIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
LCBwYXRoKSk7CiB9CiAKLUFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNo
ZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCB1bnNpZ25l
ZCB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCkKK0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVy
bCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgOiBTdWJz
dGl0dXRlUmVzb3VyY2UoV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShk
YXRhKSkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9zdG9yYWdlSUQoMCkKQEAgLTUxLDcg
KzUxLDcgQEAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAgICBsb2FkZXIu
ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0
YSgpLmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0
aCkpOworICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0
aC5pc0VtcHR5KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZTo6YWRkVHlwZSh1bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaAppbmRl
eCA4OGM5NGRlMWE3NzQxMDQ2OWM5MzFhNDJhNDc5YjFlNjc3N2E3MDJlLi5jMjg4ZTcwMzZjNjc2
MmFkNDg3NmJhODgxNDY5YTc1ZDIyMzdlMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCkBAIC00MCw3
ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgRmFsbGJhY2sgPSAxIDw8IDQKICAgICB9OwogCi0g
ICAgc3RhdGljIFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGNyZWF0ZShjb25zdCBVUkwm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGNvbnN0IFN0cmluZyYgcGF0aCA9IFN0
cmluZygpKTsKKyAgICBzdGF0aWMgUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gY3JlYXRl
KGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCB0eXBlLCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGNv
bnN0IFN0cmluZyYgcGF0aCA9IFN0cmluZygpKTsKIAogICAgIHVuc2lnbmVkIHR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGU7IH0KICAgICB2b2lkIGFkZFR5cGUodW5zaWduZWQgdHlwZSk7CkBA
IC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIAogcHJpdmF0ZToKLSAgICBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYsIFJlc291cmNlUmVzcG9uc2UmJiwgdW5zaWduZWQg
dHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYsIFJlc291cmNlUmVzcG9uc2UmJiwgdW5zaWduZWQg
dHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgcGF0aCk7
CiAKICAgICB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImKSBvdmVycmlkZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAppbmRleCAxYzUwODQ3YTZlODk1MTc4OWUzYjNmYmFm
ZGE4NTE4NjYyOTBlZWIwLi43YjJmYjZjOWMyNTNkOTQzN2Y0MDdlOGM5N2I4YjUwNzRjNzEyOTI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VM
b2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBsZW5ndGgpCiB7Ci0gICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmRhdGEoKS5h
cHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+YXBw
ZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYg
bmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5k
ZXggMWIzM2FjOTViY2RlMTFmZTNjNDk5MDI0MGE1MjBiZDMwZTYzNjU5NS4uOGNmMDVjY2UxODgw
MTI4ZGU1OWJlNzBhOTk4MzZmNWE3NDViNmQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC03
ODMsNyArNzgzLDYgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICBhdXRvIGRhdGFTdGF0
ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIklOU0VSVCBJTlRPIENhY2hlUmVz
b3VyY2VEYXRhIChkYXRhLCBwYXRoKSBWQUxVRVMgKD8sID8pIl9zKTsKICAgICBpZiAoIWRhdGFT
dGF0ZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKIAogICAgIFN0cmluZyBmdWxs
UGF0aDsKICAgICBpZiAoIXJlc291cmNlLT5wYXRoKCkuaXNFbXB0eSgpKQpAQCAtODE1LDcgKzgx
NCw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJp
bmRUZXh0KDIsIHBhdGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChyZXNvdXJjZS0+ZGF0
YSgpLnNpemUoKSkKLSAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291
cmNlLT5kYXRhKCkpOworICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLmdldCgpKTsKICAgICB9CiAgICAgCiAgICAg
aWYgKCFkYXRhU3RhdGVtZW50LT5leGVjdXRlQ29tbWFuZCgpKSB7CkBAIC04NzMsMTIgKzg3Miwx
MiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIAogICAgIGlmICghZXhlY3V0ZVN0YXRl
bWVudChlbnRyeVN0YXRlbWVudC52YWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IAorCiAgICAgLy8gRGlkIHdlIHN1Y2Nlc3NmdWxseSB3cml0ZSB0aGUgcmVzb3VyY2UgZGF0YSB0
byBhIGZpbGU/IElmIHNvLAogICAgIC8vIHJlbGVhc2UgdGhlIHJlc291cmNlJ3MgZGF0YSBhbmQg
ZnJlZSB1cCBhIHBvdGVudGlhbGx5IGxhcmdlIGFtb3VudAogICAgIC8vIG9mIG1lbW9yeToKICAg
ICBpZiAoIWZ1bGxQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmVzb3VyY2UtPmRhdGEoKS5jbGVh
cigpOworICAgICAgICByZXNvdXJjZS0+Y2xlYXIoKTsKIAogICAgIHJlc291cmNlLT5zZXRTdG9y
YWdlSUQocmVzb3VyY2VJZCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjczLDcgKzEyNzIsNyBA
QCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzaG91bGRTdG9yZVJlc291cmNlQXNGbGF0
RmlsZShBcHBsaWNhdGlvbkNhY2hlUmVzbwogICAgIHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHR5cGUsICJhdWRpby8iKSB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHR5cGUsICJ2aWRlby8iKTsKIH0KICAgICAKLWJvb2wgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0cmluZyYgcGF0aCwgY29uc3QgU3Ry
aW5nJiBmaWxlRXh0ZW5zaW9uKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVE
YXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxl
RXh0ZW5zaW9uKQogewogICAgIFN0cmluZyBmdWxsUGF0aDsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgK
aW5kZXggOWE5NTMwMDg3NjZhODg4NTU2MWIzNDg4ODliOGNlZGEyYjJlYjMzOC4uNDEwMmExODA4
YjQ1NTU3YjY0NWUzNmU3ZTY4MWZjNGM2ZDIwN2NlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKQEAgLTM5
LDcgKzM5LDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRp
b25DYWNoZUhvc3Q7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBTZWN1
cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgU3RvcmFnZUlESm91cm5hbDsKIAogY2xh
c3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZT4gewpAQCAtMTIyLDcgKzEyMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBl
bnN1cmVPcmlnaW5SZWNvcmQoY29uc3QgU2VjdXJpdHlPcmlnaW4qKTsKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRTdG9yZVJlc291cmNlQXNGbGF0RmlsZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uq
KTsKICAgICB2b2lkIGRlbGV0ZVRhYmxlcygpOwotICAgIGJvb2wgd3JpdGVEYXRhVG9VbmlxdWVG
aWxlSW5EaXJlY3RvcnkoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0
cmluZyYgb3V0RmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbik7CisgICAgYm9v
bCB3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0cmluZyYgb3V0RmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgZmlsZUV4dGVuc2lvbik7CiAKICAgICB2b2lkIGxvYWRNYW5pZmVzdEhvc3RIYXNoZXMo
KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hp
dmVGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0
b3J5LmNwcAppbmRleCA2ZGU4MGMxMGFjN2QyNWNmMzQ2OWY2ZGVmMGZhZjcyNDFmNTk2NDI4Li40
ZWY5Y2Q2NmJkMDg4Yjc0YzA0NmMwNjkwZDFlOWQzZTVlMzM2MGZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCkBAIC00NiwxMiArNDYs
MTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIFJlZlB0cjxBcmNoaXZlPiBS
YXdEYXRhQ3JlYXRpb25GdW5jdGlvbihjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKK3R5cGVk
ZWYgUmVmUHRyPEFyY2hpdmU+IFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKGNvbnN0IFVSTCYsIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJhd0RhdGFD
cmVhdGlvbkZ1bmN0aW9uKiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBBcmNoaXZlTUlNRVR5
cGVzTWFwOwogCiAvLyBUaGUgY3JlYXRlIGZ1bmN0aW9ucyBpbiB0aGUgYXJjaGl2ZSBjbGFzc2Vz
IHJldHVybiBSZWZQdHIgdG8gY29uY3JldGUgc3ViY2xhc3NlcwogLy8gb2YgQXJjaGl2ZS4gVGhp
cyBhZGFwdG9yIG1ha2VzIHRoZSBmdW5jdGlvbnMgaGF2ZSBhIHVuaWZvcm0gcmV0dXJuIHR5cGUu
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBBcmNoaXZlQ2xhc3M+IHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4g
YXJjaGl2ZUZhY3RvcnlDcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQordGVtcGxhdGU8dHlwZW5hbWUgQXJjaGl2ZUNsYXNzPiBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+
IGFyY2hpdmVGYWN0b3J5Q3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIEFyY2hpdmVDbGFzczo6Y3JlYXRlKHVybCwgYnVm
ZmVyKTsKIH0KQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBBcmNoaXZlRmFjdG9yeTo6aXNBcmNoaXZl
TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICByZXR1cm4gIW1pbWVUeXBlLmlz
RW1wdHkoKSAmJiBhcmNoaXZlTUlNRVR5cGVzKCkuY29udGFpbnMobWltZVR5cGUpOwogfQogCi1S
ZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQorUmVmUHRyPEFyY2hpdmU+
IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgaWYgKCFkYXRhKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9BcmNoaXZlRmFjdG9yeS5oCmluZGV4IDIxZDIzNjVjZjhkOWQ5MDFlZmU3YWFkNTUyYmYzZGE0
MDY5ZmU0MGQuLjU1NjQ1MTVjOWUwZDlkMDMzYjc5MGM3NDcyODVhMjU4NTNhYmUwMmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaApAQCAtMzQs
MTIgKzM0LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQXJjaGl2ZUZhY3Rvcnkg
ewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzQXJjaGl2ZU1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYpOwotICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgc3RhdGljIFJlZlB0
cjxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJLbm93
bkFyY2hpdmVNSU1FVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4mKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0Fy
Y2hpdmVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
UmVzb3VyY2UuY3BwCmluZGV4IGZjMjBkYTNkYTAzMmNiZWY3NGYyZTljODQyOGFjYjRlZTM3YmVm
MjMuLjA3MzgzOTRhODI4NzE0YWEwYjkwZWU3NTA3OWQ0ODZmNWIwZTg2OTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcApAQCAtMzMs
NyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBBcmNoaXZlUmVzb3Vy
Y2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywg
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQoraW5saW5lIEFyY2hpdmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291cmNlKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIDogU3Vic3RpdHV0ZVJlc291
cmNlKFVSTCB7IHVybCB9LCBSZXNvdXJjZVJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgV1RGTW92ZShk
YXRhKSkKICAgICAsIG1fbWltZVR5cGUobWltZVR5cGUpCiAgICAgLCBtX3RleHRFbmNvZGluZyh0
ZXh0RW5jb2RpbmcpCkBAIC00Miw3ICs0Miw3IEBAIGlubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFy
Y2hpdmVSZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsCiB7
CiB9CiAKLVJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1l
TmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtNTQsNyArNTQsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBB
cmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbgog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFyY2hpdmVSZXNvdXJjZShkYXRhLnJlbGVhc2VOb25O
dWxsKCksIHVybCwgbWltZVR5cGUsIHRleHRFbmNvZGluZywgZnJhbWVOYW1lLCByZXNwb25zZSkp
OwogfQogCi1SZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKK1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNv
dXJjZTo6Y3JlYXRlKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICByZXR1
cm4gY3JlYXRlKFdURk1vdmUoZGF0YSksIHVybCwgcmVzcG9uc2UubWltZVR5cGUoKSwgcmVzcG9u
c2UudGV4dEVuY29kaW5nTmFtZSgpLCBTdHJpbmcoKSwgcmVzcG9uc2UpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaAppbmRleCAyMDllOTcx
N2FlYjA5MzYwZGIzOTI3ZTZlZmExZTViZjFjMmM5N2NhLi4wNTQ4ZWY3MjFlZmQyN2MwMGNlOTNk
MTIyNzBlY2VjNDZjMDJhZjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9BcmNoaXZlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9BcmNoaXZlUmVzb3VyY2UuaApAQCAtMzQsOCArMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZSA6IHB1YmxpYyBTdWJzdGl0dXRlUmVzb3VyY2Ugewog
cHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUo
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwKKyAgICBzdGF0aWMgUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwKICAgICAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLAog
ICAgICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiA9IFJlc291cmNlUmVzcG9uc2UoKSk7CiAK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkSWdub3JlV2hlblVuYXJj
aGl2aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRJZ25vcmVXaGVuVW5hcmNoaXZpbmc7IH0K
IAogcHJpdmF0ZToKLSAgICBBcmNoaXZlUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rp
bmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Cisg
ICAgQXJjaGl2ZVJlc291cmNlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywg
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAogICAg
IFN0cmluZyBtX21pbWVUeXBlOwogICAgIFN0cmluZyBtX3RleHRFbmNvZGluZzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAK
aW5kZXggZGU3ZGFkZGRhYzIyMTJmNmQ1ZTBjYzA5MWQ0ZTQxNjc3YTNmMDE1ZC4uNzExNTBjYmRk
ODk2OWU2YWYwMjg2ODRiNmJmNmNiYzBhNTBiMmZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTkwLDcgKzkw
LDcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
UHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAvLyBSZXNvdXJjZSBkYXRhIGNhbiBi
ZSBlbXB0eSwgYnV0IG11c3QgYmUgcmVwcmVzZW50ZWQgYnkgYW4gZW1wdHkgQ0ZEYXRhUmVmCiAg
ICAgYXV0byYgZGF0YSA9IHJlc291cmNlLT5kYXRhKCk7CiAKLSAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXks
IGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHBy
b3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0YS5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CiAKICAgICAvLyBSZXNvdXJj
ZSBVUkwgY2Fubm90IGJlIG51bGwKICAgICBpZiAoYXV0byBjZlVSTCA9IHJlc291cmNlLT51cmwo
KS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKQpAQCAtMTE3LDkgKzExNyw5IEBAIFJldGFpblB0
cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJl
cHJlc2VudGF0aW9uKEFyCiAgICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9u
c2UgZm9yIHRoZSBtYWluIHJlc291cmNlCiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewogICAg
ICAgICBpZiAoYXV0byByZXNvdXJjZVJlc3BvbnNlRGF0YSA9IGNyZWF0ZVByb3BlcnR5TGlzdFJl
cHJlc2VudGF0aW9uKHJlc291cmNlLT5yZXNwb25zZSgpKSkKLSAgICAgICAgICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNl
UmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsgICAgCisgICAgICAgICAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hp
dmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7CiAgICAg
fQotICAgIAorCiAgICAgcmV0dXJuIHByb3BlcnR5TGlzdDsKIH0KIApAQCAtMjE1LDEzICsyMTUs
MTMgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVz
b3VyY2UoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb24KICAgICAgICAgICAgIExPRyhBcmNoaXZlcywg
IkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSBkYXRhIGlzIG5vdCBvZiB0eXBl
IENGRGF0YSwgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBhdXRvIHJlc291
cmNlUmVzcG9uc2VWZXJzaW9uID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFy
eUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlVmVy
c2lvbktleSkpOwogICAgICAgICBpZiAocmVzb3VyY2VSZXNwb25zZVZlcnNpb24gJiYgQ0ZHZXRU
eXBlSUQocmVzb3VyY2VSZXNwb25zZVZlcnNpb24pICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsK
ICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSBy
ZXNwb25zZSB2ZXJzaW9uIGlzIG5vdCBvZiB0eXBlIENGU3RyaW5nLCBjYW5ub3QgY3JlYXRlIGlu
dmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9
Ci0gICAgICAgIAorCiAgICAgICAgIHJlc3BvbnNlID0gY3JlYXRlUmVzb3VyY2VSZXNwb25zZUZy
b21Qcm9wZXJ0eUxpc3REYXRhKHJlc291cmNlUmVzcG9uc2VEYXRhLCByZXNvdXJjZVJlc3BvbnNl
VmVyc2lvbik7CiAgICAgfQogCkBAIC0yNDgsMjMgKzI0OCwyMyBAQCBSZWY8TGVnYWN5V2ViQXJj
aGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYgbWFp
blJlc291cgogICAgIHJldHVybiBhcmNoaXZlOwogfQogCi1SZWZQdHI8TGVnYWN5V2ViQXJjaGl2
ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxM
ZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICByZXR1cm4gY3JlYXRlKFVSTCgpLCBkYXRhKTsKIH0KIAot
UmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBV
UkwmLCBTaGFyZWRCdWZmZXImIGRhdGEpCitSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIENyZWF0aW5nIGZy
b20gcmF3IGRhdGEiKTsKLSAgICAKKwogICAgIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNoaXZl
ID0gY3JlYXRlKCk7Ci0gICAgICAgIAotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9
IGRhdGEuY3JlYXRlQ0ZEYXRhKCk7CisKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEg
PSBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogICAgIGlmICghY2ZEYXRh
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCisKICAgICBDRkVycm9yUmVmIGVy
cm9yID0gbnVsbHB0cjsKLSAgICAKKwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHBs
aXN0ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGUHJvcGVydHlMaXN0
Q3JlYXRlV2l0aERhdGEoMCwgY2ZEYXRhLmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RJbW11dGFibGUs
IDAsICZlcnJvcikpKTsKICAgICBpZiAoIXBsaXN0KSB7CiAjaWZuZGVmIE5ERUJVRwpAQCAtMjc2
LDEyICsyNzYsMTIgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEKICAgICAgICAgICAgIENGUmVs
ZWFzZShlcnJvcik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICAKKwogICAg
IGlmIChDRkdldFR5cGVJRChwbGlzdC5nZXQoKSkgIT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkp
IHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEFyY2hpdmUgcHJv
cGVydHkgbGlzdCBpcyBub3QgdGhlIGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52
YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICAK
KwogICAgIGlmICghYXJjaGl2ZS0+ZXh0cmFjdChwbGlzdC5nZXQoKSkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCkBAIC0yOTUsNyArMjk1LDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpl
eHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICBMT0coQXJjaGl2ZXMs
ICJMZWdhY3lXZWJBcmNoaXZlIC0gTnVsbCByb290IENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52
YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgCisK
ICAgICBDRkRpY3Rpb25hcnlSZWYgbWFpblJlc291cmNlRGljdCA9IHN0YXRpY19jYXN0PENGRGlj
dGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJj
aGl2ZU1haW5SZXNvdXJjZUtleSkpOwogICAgIGlmICghbWFpblJlc291cmNlRGljdCkgewogICAg
ICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTm8gbWFpbiByZXNvdXJjZSBp
biBhcmNoaXZlLCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKQEAgLTMzMyw3ICszMzMs
NyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rp
b25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAt
IFN1YnJlc291cmNlIGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFs
aWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAoYXV0byBzdWJyZXNvdXJjZSA9
IGNyZWF0ZVJlc291cmNlKHN1YnJlc291cmNlRGljdCkpCiAgICAgICAgICAgICAgICAgYWRkU3Vi
cmVzb3VyY2Uoc3VicmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIH0KQEAgLTM1
Myw3ICszNTMsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5
UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2Vi
QXJjaGl2ZSAtIFN1YmZyYW1lIGFycmF5IGlzIG5vdCBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFi
b3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBhdXRvIHN1YmZy
YW1lQXJjaGl2ZSA9IGNyZWF0ZSgpOwogICAgICAgICAgICAgaWYgKHN1YmZyYW1lQXJjaGl2ZS0+
ZXh0cmFjdChzdWJmcmFtZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YmZyYW1lQXJjaGl2
ZShXVEZNb3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOwpAQCAtMzYxLDcgKzM2MSw3IEBAIGJvb2wgTGVn
YWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAg
ICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gSW52YWxpZCBzdWJm
cmFtZSBhcmNoaXZlIHNraXBwZWQiKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC01MDYsNyArNTA2LDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZywg
RnIKIHsKICAgICBhdXRvJiByZXNwb25zZSA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCktPnJlc3BvbnNlKCk7CiAgICAgVVJMIHJlc3BvbnNlVVJMID0gcmVzcG9uc2UudXJsKCk7Ci0g
ICAgCisKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgYSByZXNwb25zZSB3aXRob3V0IGEg
VVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTQ1NDkzNT4KICAgICBpZiAocmVzcG9u
c2VVUkwuaXNOdWxsKCkpCkBAIC02MDUsNyArNjA1LDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQog
CiAgICAgaWYgKCFkb2N1bWVudC0+aXNGcmFtZVNldCgpKQogICAgICAgICByZXR1cm4gYXJjaGl2
ZTsKLSAgICAgICAgCisKICAgICAvLyBXcmFwIHRoZSBmcmFtZXNldCBkb2N1bWVudCBpbiBhbiBp
ZnJhbWUgc28gaXQgY2FuIGJlIHBhc3RlZCBpbnRvCiAgICAgLy8gYW5vdGhlciBkb2N1bWVudCAo
d2hpY2ggd2lsbCBoYXZlIGEgYm9keSBvciBmcmFtZXNldCBvZiBpdHMgb3duKS4gCiAgICAgU3Ry
aW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZyYW1lYm9yZGVyPVwibm9cIiBtYXJnaW53aWR0
aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUlXCIgaGVpZ2h0PVwiOTglJVwi
IHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKS51
cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCmluZGV4IGQwOWVjOWY3NWFiYTEz
NmE4NjMzOWViNGQ4NmFiZDgyNzdjNGZmMDQuLjVhMDdiMTBiNGJlNmY4NjIwMTFhNzgyYTdkZWQy
MzY3NTkyNDM2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9j
Zi9MZWdhY3lXZWJBcmNoaXZlLmgKQEAgLTQxLDggKzQxLDggQEAgc3RydWN0IFNpbXBsZVJhbmdl
OwogY2xhc3MgTGVnYWN5V2ViQXJjaGl2ZSBmaW5hbCA6IHB1YmxpYyBBcmNoaXZlIHsKIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0
ZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
Y3JlYXRlKFNoYXJlZEJ1ZmZlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBj
cmVhdGUoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiBtYWluUmVzb3VyY2UsIFZlY3RvcjxSZWY8QXJj
aGl2ZVJlc291cmNlPj4mJiBzdWJyZXNvdXJjZXMsIFZlY3RvcjxSZWY8TGVnYWN5V2ViQXJjaGl2
ZT4+JiYgc3ViZnJhbWVBcmNoaXZlcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoTm9kZSYsIEZ1bmN0aW9uPGJvb2woRnJhbWUmKT4m
JiBmcmFtZUZpbHRlciA9IHsgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxM
ZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoRnJhbWUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmluZGV4IGFjZmJiYjcwMjAy
MmQwNmFmZTYyMDA0MDQ4N2ZkMzRkOTIxZDcyN2MuLmQwMTM5Zjg3YTA2Zjk2OTc4Yjc0NzdlOWY0
OTk5YzM0ZWE5Zjg2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIFJlZjxNSFRNTEFy
Y2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBN
SFRNTEFyY2hpdmUpOwogfQogCi1SZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNy
ZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVyJiBkYXRhKQorUmVmUHRyPE1IVE1MQXJj
aGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gRm9yIHNlY3VyaXR5IHJlYXNvbnMgd2Ugb25seSBs
b2FkIE1IVE1MIHBhZ2VzIGZyb20gbG9jYWwgVVJMcy4KICAgICBpZiAoIUxlZ2FjeVNjaGVtZVJl
Z2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwodXJsLnByb3RvY29sKCkudG9TdHJp
bmcoKSkpCkBAIC0xMzAsNyArMTMwLDcgQEAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNo
aXZlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICByZXR1
cm4gbWFpbkFyY2hpdmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2Vu
ZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBN
SFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiB7CiAgICAgVmVjdG9y
PFBhZ2VTZXJpYWxpemVyOjpSZXNvdXJjZT4gcmVzb3VyY2VzOwogICAgIFBhZ2VTZXJpYWxpemVy
IHBhZ2VTZXJpYWxpemVyKHJlc291cmNlcyk7CkBAIC0xNjIsOCArMTYyLDggQEAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAg
IC8vIFdlIHVzZSB1dGY4KCkgYmVsb3cgaW5zdGVhZCBvZiBhc2NpaSgpIGFzIGFzY2lpKCkgcmVw
bGFjZXMgQ1JMRnMgd2l0aCA/PyAod2Ugc3RpbGwgb25seSBoYXZlIHB1dCBBU0NJSSBjaGFyYWN0
ZXJzIGluIGl0KS4KICAgICBBU1NFUlQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpLmlzQWxsQVND
SUkoKSk7CiAgICAgQ1N0cmluZyBhc2NpaVN0cmluZyA9IHN0cmluZ0J1aWxkZXIudG9TdHJpbmco
KS51dGY4KCk7Ci0gICAgYXV0byBtaHRtbERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwot
ICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVu
Z3RoKCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbWh0bWxEYXRhOworICAgIG1odG1sRGF0
YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKICAg
ICBmb3IgKGF1dG8mIHJlc291cmNlIDogcmVzb3VyY2VzKSB7CiAgICAgICAgIHN0cmluZ0J1aWxk
ZXIuY2xlYXIoKTsKQEAgLTE3OCwxNSArMTc4LDE1IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1M
QXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIlxyXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAiLCBjb250ZW50RW5j
b2RpbmcsICJcclxuQ29udGVudC1Mb2NhdGlvbjogIiwgcmVzb3VyY2UudXJsLnN0cmluZygpLCAi
XHJcblxyXG4iKTsKIAogICAgICAgICBhc2NpaVN0cmluZyA9IHN0cmluZ0J1aWxkZXIudG9TdHJp
bmcoKS51dGY4KCk7Ci0gICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEo
KSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lp
U3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgICAgIC8vIEZJWE1F
OiBpZGVhbGx5IHdlIHdvdWxkIGVuY29kZSB0aGUgY29udGVudCBhcyBhIHN0cmVhbSB3aXRob3V0
IGhhdmluZyB0byBmZXRjaCBpdCBhbGwuCiAgICAgICAgIGF1dG8qIGRhdGEgPSByZXNvdXJjZS5k
YXRhLT5kYXRhKCk7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gcmVzb3VyY2UuZGF0YS0+
c2l6ZSgpOwogICAgICAgICBpZiAoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIHF1b3RlZFByaW50
YWJsZSkpIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlZERhdGEgPSBxdW90ZWRQcmludGFibGVF
bmNvZGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChl
bmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7Ci0gICAgICAgICAgICBtaHRt
bERhdGEtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZChl
bmNvZGVkRGF0YS5kYXRhKCksIGVuY29kZWREYXRhLnNpemUoKSk7CisgICAgICAgICAgICBtaHRt
bERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBB
U1NFUlQoIXN0cmNtcChjb250ZW50RW5jb2RpbmcsIGJhc2U2NCkpOwogICAgICAgICAgICAgLy8g
V2UgYXJlIG5vdCBzcGVjaWZ5aW5nIGluc2VydExGcyA9IHRydWUgYmVsb3cgYXMgaXQgd291bGQg
Y3V0IHRoZSBsaW5lcyB3aXRoIExGcyBhbmQgTUhUTUwgcmVxdWlyZXMgQ1JMRnMuCkBAIC0xOTYs
MTcgKzE5NiwxNyBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhU
TUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgICAgICBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgg
PSBlbmNvZGVkRGF0YS5zaXplKCk7CiAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAg
c2l6ZV90IGxpbmVMZW5ndGggPSBzdGQ6Om1pbihlbmNvZGVkRGF0YUxlbmd0aCAtIGluZGV4LCBt
YXhpbXVtTGluZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoZW5j
b2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOwotICAgICAgICAgICAgICAgIG1o
dG1sRGF0YS0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICAgICAgbWh0bWxEYXRhLmFw
cGVuZChlbmNvZGVkRGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7CisgICAgICAgICAg
ICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICAgICAgICAgIGluZGV4
ICs9IG1heGltdW1MaW5lTGVuZ3RoOwogICAgICAgICAgICAgfSB3aGlsZSAoaW5kZXggPCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBhc2NpaVN0cmluZyA9IG1h
a2VTdHJpbmcoIi0tIiwgYm91bmRhcnksICItLVxyXG4iKS51dGY4KCk7Ci0gICAgbWh0bWxEYXRh
LT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CisgICAg
bWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgp
KTsKIAotICAgIHJldHVybiBtaHRtbERhdGE7CisgICAgcmV0dXJuIG1odG1sRGF0YS50YWtlKCk7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1s
L01IVE1MQXJjaGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxBcmNoaXZlLmgKaW5kZXggM2QyZGI3Yzk2MDAyZWJlNjg0YjJiZWY4ZjFlYTllMmU5Nzk0YTU4
OS4uMmRmZTg3ZTgyZTdhNGRjZTBmMzQxYzM2MTk0M2M5OTAyMDVjOGRiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgKQEAgLTM4
LDE0ICszOCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1IVE1MUGFyc2VyOwog
Y2xhc3MgUGFnZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIE1IVE1MQXJjaGl2ZSBmaW5hbCA6IHB1YmxpYyBBcmNoaXZlIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKCk7Ci0gICAgc3RhdGlj
IFJlZlB0cjxNSFRNTEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsK
KyAgICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKIAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBnZW5l
cmF0ZU1IVE1MRGF0YShQYWdlKik7CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7CiAKICAgICB2aXJ0dWFsIH5NSFRNTEFyY2hp
dmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxQYXJzZXIuY3BwCmluZGV4IGYxYjkwMWRkMDIwM2RjYWM5NGRmNmQwZWFlNGNiMmQwYmRiODAx
NWUuLjVlZTkxODY4NGEwNjg5NjgzZjcxYzI2N2YyZDkwMWEzN2E2ZmViNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAg
LTUxLDcgKzUxLDcgQEAgc3RhdGljIGJvb2wgc2tpcExpbmVzVW50aWxCb3VuZGFyeUZvdW5kKFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyJiBsaW5lUmVhZGVyLCBjb24KICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLU1IVE1MUGFyc2VyOjpNSFRNTFBhcnNlcihTaGFyZWRCdWZmZXIqIGRhdGEpCitNSFRN
TFBhcnNlcjo6TUhUTUxQYXJzZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICA6
IG1fbGluZVJlYWRlcihkYXRhLCAiXHJcbiIpCiB7CiB9CkBAIC0xNDAsNyArMTQwLDcgQEAgUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlN
RUhlYWRlciYgbWltZUhlYWRlciwKIHsKICAgICBBU1NFUlQoZW5kT2ZQYXJ0Qm91bmRhcnkuaXNF
bXB0eSgpID09IGVuZE9mRG9jdW1lbnRCb3VuZGFyeS5pc0VtcHR5KCkpOwogCi0gICAgYXV0byBj
b250ZW50ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGNvbnRlbnQ7CiAgICAgY29uc3QgYm9vbCBjaGVja0JvdW5kYXJ5ID0gIWVuZE9mUGFydEJvdW5k
YXJ5LmlzRW1wdHkoKTsKICAgICBib29sIGVuZE9mUGFydFJlYWNoZWQgPSBmYWxzZTsKICAgICBp
ZiAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OkJp
bmFyeSkgewpAQCAtMTU0LDcgKzE1NCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1M
UGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAg
ICAgICAgICBMT0dfRVJST1IoIkJpbmFyeSBjb250ZW50cyByZXF1aXJlcyBlbmQgb2YgcGFydCIp
OwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgY29udGVu
dC0+YXBwZW5kKFdURk1vdmUocGFydCkpOworICAgICAgICBjb250ZW50LmFwcGVuZChXVEZNb3Zl
KHBhcnQpKTsKICAgICAgICAgbV9saW5lUmVhZGVyLnNldFNlcGFyYXRvcigiXHJcbiIpOwogICAg
ICAgICBWZWN0b3I8dWludDhfdD4gbmV4dENoYXJzOwogICAgICAgICBpZiAobV9saW5lUmVhZGVy
LnBlZWsobmV4dENoYXJzLCAyKSAhPSAyKSB7CkBAIC0xODAsMTAgKzE4MCwxMCBAQCBSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVh
ZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIHVzZSBsaW5lLnV0ZjgoKSBhbmQgbm90IGxpbmUu
YXNjaWkoKSBhcyBhc2NpaSB0dXJucyBzcGVjaWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgdGFiLCBs
aW5lLWZlZWQuLi4pIGludG8gJz8nLgotICAgICAgICAgICAgY29udGVudC0+YXBwZW5kKGxpbmUu
dXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7CisgICAgICAgICAgICBjb250ZW50LmFwcGVu
ZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUubGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKG1p
bWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpRdW90ZWRQ
cmludGFibGUpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgbGluZSByZWFkZXIgcmVtb3ZlcyB0
aGUgXHJcbiwgYnV0IHdlIG5lZWQgdGhlbSBmb3IgdGhlIGNvbnRlbnQgaW4gdGhpcyBjYXNlIGFz
IHRoZSBRdW90ZWRQcmludGFibGUgZGVjb2RlciBleHBlY3RzIENSLUxGIHRlcm1pbmF0ZWQgbGlu
ZXMuCi0gICAgICAgICAgICAgICAgY29udGVudC0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAg
ICAgICAgICAgY29udGVudC5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KQEAgLTE5Myw5ICsxOTMsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwK
ICAgICB9CiAKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKKyAgICBhdXRvIGNvbnRpZ3VvdXND
b250ZW50ID0gY29udGVudC50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CiAgICAgc3dpdGNoICht
aW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkpIHsKICAgICBjYXNlIE1JTUVIZWFk
ZXI6OkJhc2U2NDogewotICAgICAgICBhdXRvIGRlY29kZWREYXRhID0gYmFzZTY0RGVjb2RlKGNv
bnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0
YSA9IGJhc2U2NERlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29u
dGVudC0+c2l6ZSgpKTsKICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAg
TE9HX0VSUk9SKCJJbnZhbGlkIGJhc2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMDQsMTEgKzIwNSwxMSBAQCBSZWZQdHI8QXJj
aGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVy
JiBtaW1lSGVhZGVyLAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBNSU1FSGVhZGVy
OjpRdW90ZWRQcmludGFibGU6Ci0gICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUo
Y29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhID0gcXVvdGVk
UHJpbnRhYmxlRGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250
ZW50LT5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1JTUVIZWFkZXI6OlNldmVu
Qml0OgogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmluYXJ5OgotICAgICAgICBkYXRhLmFwcGVuZChj
b250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGNv
bnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50LT5zaXplKCkpOwogICAg
ICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgZW5j
b2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaAppbmRleCAxZTliZDRkNzc2N2VlMzkxYTAwMjJmNzE3
NDhmMDBiODVjODFiMjVmLi4wZDYwNDM0M2YzZDdhZDE3OGNjMjIwMDNjOTc5YzIyZTUwYTNiOTll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBh
cnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmgKQEAgLTQyLDExICs0MiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBcmNo
aXZlUmVzb3VyY2U7CiBjbGFzcyBNSFRNTEFyY2hpdmU7CiBjbGFzcyBNSU1FSGVhZGVyOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3Mg
TUhUTUxQYXJzZXIgewogcHVibGljOgotICAgIGV4cGxpY2l0IE1IVE1MUGFyc2VyKFNoYXJlZEJ1
ZmZlciopOworICAgIGV4cGxpY2l0IE1IVE1MUGFyc2VyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
KTsKIAogICAgIFJlZlB0cjxNSFRNTEFyY2hpdmU+IHBhcnNlQXJjaGl2ZSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdC5jcHAKaW5kZXggNjUyNTFlYjY4MjA3ZmM0OWE5NWNjMWMzZWExZDRhOWViZmQ5MjcwNC4u
ZTFhODc1MTZiZDhkNWI4ZjI0YWY2YTViOTkwZTIxODUzNDdlNzU5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmNwcApAQCAtNDAsMTIgKzQwLDE2IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiB7CiB9CiAK
LXZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAg
bV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDog
MCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAg
ICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRT
aXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fdGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQog
ICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QuaAppbmRleCAwN2YyYTA3OWM1NjRlZWZmYjY5N2MzN2M3ODU2NWUxZWE4ZDlhZTVl
Li4zNzk4YTliNGQ5MDEzY2ZkZWE2ZjU2ZmJkZjAwMTVhZjg5NDc1NzAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8c3RydWN0IEFw
cGxpY2F0aW9uTWFuaWZlc3Q+IHByb2Nlc3MoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3Qg
VVJMJiBkb2N1bWVudFVSTCwgRG9jdW1lbnQqID0gbnVsbHB0cik7CiAKIHByaXZhdGU6Ci0gICAg
dm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgY29u
c3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVT
aGVldC5jcHAKaW5kZXggNTlmYTdjNjJmYzYxZTYzNzQyZjc0Y2M2YTBiY2YwMDBiYTliMTc2Zi4u
MzhhMmUxN2YwZDA2YzhhYzk4ZGUyNGIxZTUyYjhlNjBlOTI0MTIwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcApAQCAtODEs
NyArODEsNyBAQCBjb25zdCBTdHJpbmcgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2hlZXRUZXh0KE1J
TUVUeXBlQ2hlY2tIaW50IG1pbWVUeXBlQ2hlY2tIaW50LAogICAgICAgICByZXR1cm4gbV9kZWNv
ZGVkU2hlZXRUZXh0OwogCiAgICAgLy8gRG9uJ3QgY2FjaGUgdGhlIGRlY29kZWQgdGV4dCwgcmVn
ZW5lcmF0aW5nIGlzIGNoZWFwIGFuZCBpdCBjYW4gdXNlIHF1aXRlIGEgYml0IG9mIG1lbW9yeQot
ICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBtX2Rh
dGEtPnNpemUoKSk7CisgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRh
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBD
YWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlKQpAQCAtOTcsMTMgKzk3LDE3IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6
c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICAgICAg
c2F2ZVBhcnNlZFN0eWxlU2hlZXQoKnNoZWV0Lm1fcGFyc2VkU3R5bGVTaGVldENhY2hlKTsKIH0K
IAotdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRDU1NT
dHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBk
YXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICAv
LyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBz
aGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQotICAgIGlmIChkYXRhKQotICAg
ICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEg
PSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5z
aXplKCkpOworICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29k
aW5nIGFuZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQor
ICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1f
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0
YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBzZXRM
b2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKICAgICAvLyBDbGVhciB0
aGUgZGVjb2RlZCB0ZXh0IGFzIGl0IGlzIHVubGlrZWx5IHRvIGJlIG5lZWRlZCBpbW1lZGlhdGVs
eSBhZ2FpbiBhbmQgaXMgY2hlYXAgdG8gcmVnZW5lcmF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCmluZGV4IDVkNGRkM2RjN2UzNTNl
ZTNjYjJmYjkzZjI3OGQyNTc5YjhkOWE3YTEuLmU2NTVjNjllM2VkYjYwOTUwMjM5Y2NlNDU0NWYw
OTZiNTI2NTZkZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29u
c3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVj
b2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGVzdHJveURl
Y29kZWREYXRhKCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNo
ZWRSZXNvdXJjZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuY3BwCmluZGV4IDhjMmJjMmEzNDFjODIzNTFkN2Y2NjI1YmNlMjcxZDA3NzYzM2FlOTQuLmQy
YmMyODIxNDc5YzU5YTIzMjNlNGY2NWNkOTRiNjNiNDIzNzM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY0LDEwICs2NCwxNSBAQCB2b2lkIENh
Y2hlZEZvbnQ6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogICAg
ICAgICBzdGF0aWNfY2FzdDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50KS5mb250TG9hZGVkKCp0
aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRGb250
OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAg
IHNldEVuY29kZWRTaXplKG1fZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CisgICAg
aWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0K
ICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KQEAg
LTEwNSw3ICsxMTAsNyBAQCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNo
YXJlZEJ1ZmZlciogZGF0YSkKIAogc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYgYnl0ZXMs
IGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCiB7Ci0gICAg
UmVmUHRyIGJ1ZmZlciB7ICZieXRlcyB9OworICAgIFJlZlB0ciBidWZmZXIgPSB7ICZieXRlcyB9
OwogICAgIHdyYXBwaW5nID0gIWNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoYnVmZmVyKTsK
ICAgICByZXR1cm4gYnVmZmVyID8gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqYnVmZmVy
LCBpdGVtSW5Db2xsZWN0aW9uKSA6IG51bGxwdHI7CiB9CkBAIC0xMzUsNyArMTQwLDcgQEAgdm9p
ZCBDYWNoZWRGb250OjpjaGVja05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQogewog
ICAgIGlmIChpc0xvYWRpbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQ2FjaGVk
UmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkRm9udENsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7
CiAgICAgd2hpbGUgKENhY2hlZEZvbnRDbGllbnQqIGNsaWVudCA9IHdhbGtlci5uZXh0KCkpCiAg
ICAgICAgIGNsaWVudC0+Zm9udExvYWRlZCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuaAppbmRleCBjZWJkYzU1N2YxM2ZjNGFmZDgyNzUyOTc3NGFmZDhlYzRi
ZWY0MjEwLi4xMzQ2NmNjOTlkMGQxOWNiZjNkOGVmM2RmYmQ5NmYzNGQwZjg1NDExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJp
dmF0ZToKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIHNldEJvZHlEYXRhRnJvbShj
b25zdCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAog
ICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Jikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGIxNTlmMjllZTkwZmUzZGUwMTljMTE0
OWJkYTY5NGUwZTZmNmI1NDIuLjk0NjI3OTUyMGQwZGE0NDYyMmM2YWNkMzY2NjIyODgxMDVlODE5
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAt
NDY4LDkgKzQ2OCw5IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKICAg
ICBtX3VwZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBk
YXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6
dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3Vz
KCk7CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwogICAgIGNyZWF0ZUltYWdl
KCk7CiAKQEAgLTUyMywxMiArNTIzLDE0IEBAIGJvb2wgQ2FjaGVkSW1hZ2U6OnNob3VsZERlZmVy
VXBkYXRlSW1hZ2VEYXRhKCkgY29uc3QKICAgICByZXR1cm4gKE1vbm90b25pY1RpbWU6Om5vdygp
IC0gbV9sYXN0VXBkYXRlSW1hZ2VEYXRhVGltZSkuc2Vjb25kcygpIDwgdXBkYXRlSW1hZ2VEYXRh
QmFja29mZkludGVydmFsc1tpbnRlcnZhbF07CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENh
Y2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25z
dAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRl
ZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewotICAgIGlmICgh
ZGF0YSB8fCAhaXNQb3N0U2NyaXB0UmVzb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuIGRhdGE7Cisg
ICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIWlzUG9zdFNj
cmlwdFJlc291cmNlKCkpCisgICAgICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpOwog
I2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShXRUJLSVRfSU1BR0VfREVDT0RFUlMpCi0gICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2Ny
aXB0RGF0YVRvUERGKGRhdGEtPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CisgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0
YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAj
ZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQg
aWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQ
REYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01NTMsNyArNTU1LDcgQEAgRW5jb2Rl
ZERhdGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNl
aXZlZCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVy
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAg
ICB1cGRhdGVCdWZmZXJJbnRlcm5hbChkYXRhKTsKQEAgLTU2Nyw3ICs1NjksNyBAQCB2b2lkIENh
Y2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12
b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9h
ZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgbV9kYXRhID0gY29udmVydGVkRGF0YUlmTmVlZGVk
KGRhdGEpOwogICAgIGlmIChtX2RhdGEpIHsKQEAgLTU5Myw3ICs1OTUsNyBAQCB2b2lkIENhY2hl
ZEltYWdlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZQogdm9pZCBDYWNoZWRJbWFnZTo6ZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNv
bnRlbnRzKCkKIHsKICAgICBpZiAobV9pbWFnZSkgewotICAgICAgICAvLyBMZXQgdGhlIEltYWdl
IGtub3cgdGhhdCB0aGUgU2hhcmVkQnVmZmVyIGhhcyBiZWVuIHJlamlnZ2VkLCBzbyBpdCBjYW4g
bGV0IGdvIG9mIGFueSByZWZlcmVuY2VzIHRvIHRoZSBoZWFwLWFsbG9jYXRlZCByZXNvdXJjZSBi
dWZmZXIuCisgICAgICAgIC8vIExldCB0aGUgSW1hZ2Uga25vdyB0aGF0IHRoZSBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyIGhhcyBiZWVuIHJlamlnZ2VkLCBzbyBpdCBjYW4gbGV0IGdvIG9mIGFueSBy
ZWZlcmVuY2VzIHRvIHRoZSBoZWFwLWFsbG9jYXRlZCByZXNvdXJjZSBidWZmZXIuCiAgICAgICAg
IC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzI0Mjc1NjE3KTogSXQgd291bGQgYmUgYmV0dGVyIGlm
IHdlIGNvdWxkIHNvbWVob3cgdGVsbCB0aGUgSW1hZ2UncyBkZWNvZGVyIHRvIHN3YXAgaW4gdGhl
IG5ldyBjb250ZW50cyB3aXRob3V0IGRlc3Ryb3lpbmcgYW55dGhpbmcuCiAgICAgICAgIG1faW1h
Z2UtPmRlc3Ryb3lEZWNvZGVkRGF0YSh0cnVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGUzODk2MmEwZGNhZmJjZWY2MzFjMTRlNjNmZWI4
NWJhMDU1MjAzZjQuLjA4M2Y5MmY4ODgyNzZlZWRhODk5MTIwMzFkMjQ0OWE5NjhlMjY1ZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC02OSw4ICs2OSw4
IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVXaWR0aCgpOyB9CiAgICAgYm9vbCBp
bWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdl
LT5oYXNSZWxhdGl2ZUhlaWdodCgpOyB9CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZm
ZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBlbnVtIFNpemVUeXBlIHsKICAgICAgICAgVXNl
ZFNpemUsCkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNv
ZGVkRGF0YSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0
YSgpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRl
ZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNv
bnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBj
b25zdDsKICAgICB2b2lkIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3Rh
dHVzIHVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRh
dGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CkBA
IC0xNjksNyArMTY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3Qg
SW1hZ2UmLCBjb25zdCBJbnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0
ZShjb25zdCBJbWFnZSYpOwogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRC
dWZmZXImKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRz
KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuY3BwCmluZGV4IDkyYjA4MzY5NzU4ODg0NDA5MTkzOWUzZWVkNzlkNzdmMTgz
OTU2MmYuLjg5NWRiMTE1OGI2YjhjOGZiZjdiMTBiNDNiNjE0ZWRhOTYwMjFjZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAt
NDgsNyArNDgsNyBAQCBDYWNoZWRSYXdSZXNvdXJjZTo6Q2FjaGVkUmF3UmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgVHlwZSB0eXBlLAogICAgIEFTU0VSVChpc01haW5P
ck1lZGlhT3JJY29uT3JSYXdSZXNvdXJjZSgpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxTaGFyZWRC
dWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0
YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2hh
cmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRh
bERhdGFDaHVuayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewog
ICAgIHNpemVfdCBwcmV2aW91c0RhdGFMZW5ndGggPSBlbmNvZGVkU2l6ZSgpOwogICAgIGlmICgh
ZGF0YSB8fCBkYXRhLT5zaXplKCkgPD0gcHJldmlvdXNEYXRhTGVuZ3RoKQpAQCAtNTYsNyArNTYs
NyBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJj
ZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQwogICAgIHJldHVybiBkYXRhLT5nZXRTb21lRGF0
YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRh
dGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBk
YXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8g
U2tpcCBhbnkgdXBkYXRlQnVmZmVycyB0cmlnZ2VyZWQgZnJvbSBuZXN0ZWQgcnVubG9vcHMuIFdl
J2xsIGhhdmUgdGhlIGNvbXBsZXRlIGJ1ZmZlciBpbiBmaW5pc2hMb2FkaW5nLgogICAgIGlmICht
X2luSW5jcmVtZW50YWxEYXRhTm90aWZ5KQpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIENhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogCiAgICAgQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAg
ICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpC
dWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhLm1ha2VD
b250aWd1b3VzKCk7CiAKICAgICBhdXRvIHByZXZpb3VzRGF0YVNpemUgPSBlbmNvZGVkU2l6ZSgp
OwogICAgIHdoaWxlIChkYXRhLnNpemUoKSA+IHByZXZpb3VzRGF0YVNpemUpIHsKQEAgLTk2LDcg
Kzk2LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEo
ZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
K3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewog
ICAgIGlmIChtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5KSB7CiAgICAgICAgIC8vIFdlIG1heSBn
ZXQgaGVyZSBzeW5jaHJvbm91c2x5IGZyb20gdXBkYXRlQnVmZmVyKCkgaWYgdGhlIGNhbGxiYWNr
IHRoZXJlIGVuZHMgdXAgc3Bpbm5pbmcgYSBydW5sb29wLgpAQCAtMTA3LDEyICsxMDcsMTQgQEAg
dm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
YXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBEYXRhQnVmZmVyaW5nUG9saWN5
IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRhQnVmZmVyaW5nUG9saWN5KCk7CiAgICAg
aWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0
YSkgewotICAgICAgICBtX2RhdGEgPSBkYXRhOwotCi0gICAgICAgIGlmIChhdXRvIGluY3JlbWVu
dGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7Ci0gICAgICAg
ICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAgICAgICAgICAgbm90aWZ5Q2xp
ZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxE
YXRhLT5zaXplKCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChkYXRhKSB7CisgICAgICAgICAg
ICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgaWYgKGF1dG8g
aW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsK
KyAgICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICAg
ICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRh
KCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0KIAogI2lmIFVTRShRVUlD
S19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuaAppbmRleCA4NGUwZDg0NGQ1NzEwOTk1M2FlNmJmZjY1NTY1OTk1M2UyOGJhNjliLi5hNzg2
NWY4YWQxNzhhZWZiMzIyMGE1NmRjZmYxOTU5OTNjZjk1YWU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtNTEsOSArNTEsOSBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VD
bGllbnQmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBmaW5h
bDsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikg
ZmluYWw7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCkgZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWw7CiAKICAgICBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQo
KSBvdmVycmlkZTsKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN3aXRjaENs
aWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UoKSBvdmVycmlkZTsKICAgICBib29sIG1heVRyeVJl
cGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYWxsb3dFbmNvZGVk
RGF0YVJlcGxhY2VtZW50OyB9CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFW
aWV3PiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBTaGFyZWRCdWZmZXIqKSBj
b25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBjYWxjdWxhdGVJ
bmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKikgY29uc3Q7
CiAgICAgdm9pZCBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCiAjaWYgVVNFKFFVSUNLX0xPT0spCkBAIC05Miw3
ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZGlyZWN0UGFpciwgMCwgQ3Jhc2hPbk92
ZXJmbG93LCAwPiBtX3JlZGlyZWN0Q2hhaW47CiAKICAgICBzdHJ1Y3QgRGVsYXllZEZpbmlzaExv
YWRpbmcgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJl
ZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBz
dGQ6Om9wdGlvbmFsPERlbGF5ZWRGaW5pc2hMb2FkaW5nPiBtX2RlbGF5ZWRGaW5pc2hMb2FkaW5n
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CmluZGV4IDNhZThiYjY4ZDI1Y2RkZDE4MDIwOTIyZjVlZGIyNGQ0YjkxMjAwMDIuLmJmNjllODBl
NTc2ZTFhMjg4ZjZhMDExZjU0NjE0NjMxNTU4MDFkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQg
Q2FjaGVkUmVzb3VyY2U6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKICAgICAgICAgY2xpZW50LT5ub3RpZnlGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7CiB9
CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKQordm9p
ZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6QnVmZmVyRGF0YSk7CiB9CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQpCiAgICAgQVNTRVJU
KGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZl
ckRhdGEpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkUmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsK
ICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKQEAgLTkyNyw4ICs5MjcsNyBAQCB2b2lkIENhY2hl
ZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIp
CiAgICAgaWYgKCptX2RhdGEgIT0gbmV3QnVmZmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X2RhdGEtPmNsZWFyKCk7Ci0gICAgbV9kYXRhLT5hcHBlbmQobmV3QnVmZmVyKTsKKyAgICBtX2Rh
dGEgPSBSZWYgeyBuZXdCdWZmZXIgfTsKICAgICBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVu
dHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
aAppbmRleCAzOTYwMDI4MzJjYzE1M2M1OTA0NzhjYTI1MTgxM2U2YzAzNWJjMjc4Li5jOTgyZGQ2
OTM3YTBiYzJiZjM4YzQyNjEyNmZmZTZlNzhjNzk2NDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBDb29r
aWVKYXI7CiBjbGFzcyBNZW1vcnlDYWNoZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwogY2xhc3MgVGV4dFJlc291
cmNlRGVjb2RlcjsKIApAQCAtMTEyLDkgKzExMiw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBTdHJpbmcgZW5j
b2RpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgY29uc3QgVGV4
dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG51
bGxwdHI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOwor
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CisgICAgdmlydHVhbCB2b2lkIGZpbmlz
aExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBlcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVz
KTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikgeyBtX2Vycm9yID0gZXJyb3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCmluZGV4IDdkYTE0ODUxYTcwNzg0YWFiZTk4MzliNzA2
YTBiMWIzMzFmMmM4MzkuLmRiNDMxNjA3YWU1NjM4MzAzODAwZGQyNTljMTAzNGNkMDkwZmNmZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
LmNwcApAQCAtNTIsMTIgKzUyLDEyIEBAIFN0cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2Rp
bmcoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQog
Ci12b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTVkdEb2N1
bWVudDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAg
ICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUg
bmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgogICAgICAgICBt
X2RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZShudWxscHRyLCBtX3NldHRpbmdzLCByZXNw
b25zZSgpLnVybCgpKTsKLSAgICAgICAgbV9kb2N1bWVudC0+c2V0Q29udGVudChtX2RlY29kZXIt
PmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgIG1f
ZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOwogICAgIH0KICAgICBDYWNoZWRS
ZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKaW5kZXggZThjMTVmMzYwZmM5
MWFjOGIzNGQzOTYyOTVjNTNkM2M3ZjE0N2VhYS4uNDQ1ZTRmOWY0MmMzYzI3NDA3OTc2YTY0ZTkx
NTQwN2Y4YjUzNGQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVu
Y29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNv
bnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJj
ZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAg
ICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAg
IFJlZlB0cjxTVkdEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBSZWZQdHI8VGV4dFJlc291cmNl
RGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0ZvbnQuY3BwCmluZGV4IGE4ZWY1NzZiYjY5MzkzM2EyMjM0Njk1NTU3NTZiMzY2N2U0ODYz
MmUuLmQyYzFkZTQ3ZWZiNzgxMzk4ZjQ0MzhiN2NhNGVhMjYwZTIyMTk3NjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKQEAgLTgwLDcgKzgwLDcg
QEAgYm9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiByZW1vdGVVUkkpCiAKICAgICAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RGlz
YWJsZUFzc2VydGlvbnNJblNjb3BlIGRpc2FibGVkU2NvcGU7CiAKLSAgICAgICAgICAgIG1fZXh0
ZXJuYWxTVkdEb2N1bWVudC0+c2V0Q29udGVudChkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2Rh
dGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKKyAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdE
b2N1bWVudC0+c2V0Q29udGVudChkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKICAgICAgICAgICAgIHNhd0Vy
cm9yID0gZGVjb2Rlci0+c2F3RXJyb3IoKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IDQ3YTlmNTc2MDdiOTgyODRlOGY3
OWUyY2RlY2U5YmU0MThmMTdiNjUuLmI2NzM5OGIwZTRmNTZmZTdhYmNiMjc0ZDBlMzY4NDMwMzYz
NTA4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3Bw
CkBAIC05NiwxMCArOTYsMTUgQEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkK
ICAgICByZXR1cm4gbV9zY3JpcHRIYXNoOwogfQogCi12b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKK3ZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
LSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXpl
KCkgOiAwKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXpl
KDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRy
aWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCmlu
ZGV4IDkyNGI4NGNhMmQ4NzE2ZTM0NjA3N2VlZWI1Y2MzNGJjZWRlN2UyM2QuLjg2NTFlNjM5YWQ5
MDYxNzI4NTYxYzMyNGJmYTdhZjRjZjk3ZjZkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygp
IGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJj
ZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2
b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZGVz
dHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5jcHAKaW5kZXggMTIyOTgxNTAzMTI4ODYxZWM0ZjVlYjRjZjUw
ZjMyMDg2YjVkZWI2MS4uMGM4NDI4YmI5OWRiNmRmYjE2YTM0ODEzNGMzODI2ODM2Y2NlNTQwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAK
QEAgLTQwLDEwICs0MCwxMCBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogewogfQogCi12b2lk
IENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQordm9p
ZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRh
QnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSBkYXRhOworICAgIG1f
ZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4oKTsKICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAg
ICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2Vy
KG1fY2xpZW50cyk7CkBAIC01MSwxMyArNTEsMTMgQEAgdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRv
VXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgY2xpZW50LT5kZXByZWNh
dGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0
VHJhY2s6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFRleHRU
cmFjazo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7
CiAgICAgZG9VcGRhdGVCdWZmZXIoJmRhdGEpOwogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVC
dWZmZXIoZGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9p
ZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGRv
VXBkYXRlQnVmZmVyKGRhdGEpOwogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRh
dGEsIG1ldHJpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRU
cmFjay5oCmluZGV4IDg1ZTM5NjIwNjUxMzE2MDcwMzY1M2ViMjJjNzcxMzhiOTE1MDdhZGQuLjA5
YjQzMzlhMzdiNjczYjJhYzRmZGFlMTQ2YjI5Yjk2NDc3N2ZjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKQEAgLTM1LDEwICszNSwxMCBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRl
QnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihTaGFy
ZWRCdWZmZXIqKTsKKyAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAppbmRleCBlM2Uy
ZjVlOTY0ODc5NDc5MmYxODkwZjQ2N2EyNzgyNjE1ZDM0MDBjLi5kMmVmZjJkMmQ0MGM5Mjc3Mzg3
NTZjNGE4ZjBjYmI5MzQzYmUxMGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC02MSwxMiArNjEsMTYgQEAgU3RyaW5n
IENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9kZWNv
ZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0Ojpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKIHsKLSAgICBtX2RhdGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEg
PyBkYXRhLT5zaXplKCkgOiAwKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9zaGVldCA9IG1f
ZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAg
ICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwor
ICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAgICBtX3NoZWV0ID0g
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5j
b2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90
aWZ5KG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRYU0xTdHlsZVNoZWV0LmgKaW5kZXggNjg0MmI2NDRmNjFjZjkwZjdmNjFiMmY3ZWM1ZTAwNjU0
Y2QxMGNjYy4uYmQyMzEyMTRmMmQyMGJhMzk2NDQ2MDM2NmUwNDFiOTQxMzVhYzRjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCkBA
IC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJp
bmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25z
dCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBTdHJpbmcgbV9zaGVldDsKICAgICBSZWZQdHI8VGV4
dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAppbmRleCA1NTI1NjFkNmM4MTZkM2QyMGJjZmNjYjJl
NjU4M2I3ZGU5NGI5NGEyLi42NmI5MzU4ZWM1MzExMTQ4NDgyMmE3Y2MyNGU3ZjNhOTkxNzA2NWE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIu
aApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0zNyw3ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAogY2xhc3MgTGVnYWN5UHJl
dmlld0xvYWRlciBmaW5hbCA6IHByaXZhdGUgUHJldmlld0NvbnZlcnRlckNsaWVudCwgcHJpdmF0
ZSBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpAQCAtNDgsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgYm9vbCBkaWRSZWNlaXZlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgZGlkUmVjZWl2ZUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBib29sIGRpZFJlY2VpdmVCdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIGJvb2wgZGlkRmluaXNoTG9hZGluZygp
OwogICAgIHZvaWQgZGlkRmFpbCgpOwogCkBAIC02MCwxNyArNjIsMTcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hVcGRhdGluZyhQcmV2aWV3Q29udmVydGVy
JikgZmluYWwgeyB9OwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxVcGRhdGluZyhQ
cmV2aWV3Q29udmVydGVyJikgZmluYWw7CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkU3Rh
cnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKLSAgICB2b2lkIHByZXZpZXdD
b252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hhcmVkQnVm
ZmVyJikgZmluYWw7CisgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJl
dmlld0NvbnZlcnRlciYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAg
ICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0
ZXImKSBmaW5hbDsKICAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsQ29udmVydGluZyhQ
cmV2aWV3Q29udmVydGVyJikgZmluYWw7CiAKICAgICAvLyBQcmV2aWV3Q29udmVydGVyUHJvdmlk
ZXIKLSAgICB2b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZp
ZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciop
PiYmKSBmaW5hbDsKKyAgICB2b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVy
dGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqKT4mJikgZmluYWw7CiAgICAgdm9pZCBwcm92aWRlUGFzc3dvcmRG
b3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVy
dGVyPiBtX2NvbnZlcnRlcjsKICAgICBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbV9j
bGllbnQ7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9vcmlnaW5hbERhdGE7CisgICAgVW5pcXVl
UmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fb3JpZ2luYWxEYXRhOwogICAgIFdlYWtQdHI8UmVz
b3VyY2VMb2FkZXI+IG1fcmVzb3VyY2VMb2FkZXI7CiAgICAgYm9vbCBtX2ZpbmlzaGVkTG9hZGlu
Z0RhdGFJbnRvQ29udmVydGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzUHJvY2Vzc2VkUmVz
cG9uc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyLm1tCmluZGV4IGQxOGIyNTJlOTc1NmM4Y2UwYzk1YjYzZTc4ZGQwMDk3ZWYy
YTU3MzQuLjc0OGZlZGI4ZWE0OGZhYmM4MjVmYjViNjc3MTc0MTUyMDViMzFiMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAgLTYz
LDcgKzYzLDcgQEAgc3RhdGljIFJlZjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBtYWtlQ2xp
ZW50KGNvbnN0IFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGMKICAgICByZXR1cm4gZW1wdHlDbGll
bnQoKTsKIH0KIAotYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBpZiAobV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJl
dmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJiBjCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV9oYXNQcm9jZXNzZWRSZXNwb25zZSk7Ci0gICAg
bV9vcmlnaW5hbERhdGEtPmNsZWFyKCk7CisgICAgbV9vcmlnaW5hbERhdGEtPnJlc2V0KCk7CiAg
ICAgcmVzb3VyY2VMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnNldFByZXZpZXdDb252ZXJ0ZXIo
V1RGTW92ZShtX2NvbnZlcnRlcikpOwogICAgIGF1dG8gcmVzcG9uc2UgeyBjb252ZXJ0ZXIucHJl
dmlld1Jlc3BvbnNlKCkgfTsKIApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgTGVnYWN5UHJldmll
d0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVy
dGVyJiBjCiAgICAgfSk7CiB9CiAKLXZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0Nv
bnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGRhdGEpCit2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRS
ZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICBhdXRvIHJlc291cmNlTG9hZGVyID0gbV9yZXNvdXJjZUxvYWRlci5n
ZXQoKTsKICAgICBpZiAoIXJlc291cmNlTG9hZGVyKQpAQCAtMjI0LDEwICsyMjQsMTAgQEAgdm9p
ZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVy
KFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICBtX2NsaWVudC0+ZGlkUmVxdWVzdFBhc3N3b3JkKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVy
Ojpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVy
JiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVN
YWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRl
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZj
b252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2lu
YWxEYXRhLnB0cigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS0+Z2V0
KCkuZ2V0KCkpOwogfQogCiBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRl
cigpID0gZGVmYXVsdDsKQEAgLTIzNSw3ICsyMzUsNyBAQCBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+
TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKIExlZ2FjeVByZXZpZXdMb2FkZXI6Okxl
Z2FjeVByZXZpZXdMb2FkZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgOiBtX2NvbnZlcnRlciB7IFByZXZpZXdDb252ZXJ0ZXI6
OmNyZWF0ZShyZXNwb25zZSwgKnRoaXMpIH0KICAgICAsIG1fY2xpZW50IHsgbWFrZUNsaWVudChs
b2FkZXIsIG1fY29udmVydGVyLT5wcmV2aWV3RmlsZU5hbWUoKSwgbV9jb252ZXJ0ZXItPnByZXZp
ZXdVVEkoKSkgfQotICAgICwgbV9vcmlnaW5hbERhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
IH0KKyAgICAsIG1fb3JpZ2luYWxEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWls
ZGVyPigpIH0KICAgICAsIG1fcmVzb3VyY2VMb2FkZXIgeyBsb2FkZXIgfQogICAgICwgbV9zaG91
bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCku
c2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKSB9CiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCA4MjM3NGU3MjYyYzcwZWE5ZGZlNGQ2NGYy
NWFiMTM1YWE2MDMzM2NmLi5lYTYxNWRmZjRkZDBlZDUxNGJmZjY0NDI2NDdlYzQ2MjBmNjMyMmFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTM4LDEyICszOCwxMyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVp
bnQ4X3Q7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBj
bGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBLZXlib2FyZEV2ZW50OwogY2xhc3Mg
Tm9kZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBjbGFzcyBUZXh0Q2hlY2tlckNsaWVudDsKIGNsYXNz
IFZpc2libGVTZWxlY3Rpb247CkBAIC03OCw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25z
dCBTaW1wbGVSYW5nZSYpID0gMDsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0g
ICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5n
JiAvKiBpZGVudGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICovLCBjb25z
dCBTdHJpbmcmIC8qIHByZWZlcnJlZEZpbGVOYW1lICovLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBT
dHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8s
IGNvbnN0IFN0cmluZyYgLyogcHJlZmVycmVkRmlsZU5hbWUgKi8sIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRl
bnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyog
Y29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogZmlsZVBhdGggKi8pIHsgfQogICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVu
dERhdGE+JiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlm
aWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLykgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDFhMTIxMGZhODMzN2NkOTUyMGY0ZTAxMWE5MDczNjc1
NGRlNTE4ZjEuLmFjNTNjYjE0YmYwMGU1MTY0N2M5ZWM5MTEwOThiZWEwMzYxNTExMjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgdm9p
ZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2Us
IFJlbmRlckVsZW1lbnQqIGltYWcKICAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5pbWFnZSgpID09
ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVyID8gaW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIo
aW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVyID8gaW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1h
Z2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBkYXRhID0g
aW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKIApAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgUGFnZVNl
cmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJF
bGVtZW50KiBpbWFnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Jlc291cmNlcy5h
cHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIFdURk1vdmUoZGF0YSkg
fSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+cmVzcG9uc2UoKS5taW1l
VHlwZSgpLCBkYXRhLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFk
ZCh1cmwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJl
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKaW5kZXgg
OTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZmZjQyZThlMC4uNzU4MzZiODc5MTQzYjYw
YTdmMzUxOTcwMzIwN2I2YWQzZDhkNGY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRh
UmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTaGFyZURh
dGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlv
bk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAg
OiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogewotICAg
IAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0YVJlYWRlcigpCkBAIC03MSwxNSAr
NzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcoaW50IGxvYWRJ
bmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9wZW5kaW5n
RmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVyUmVzdWx0KCk7Ci0gICAgCisKICAgICBS
YXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9IGZpbGVOYW1lOwogICAgIGZpbGUuZmls
ZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBj
aGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwog
ICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChXVEZNb3ZlKGZpbGUpKTsKICAgICBtX2ZpbGVz
UmVhZFNvRmFyKys7Ci0gICAgCisKICAgICBpZiAobV9maWxlc1JlYWRTb0ZhciA9PSBzdGF0aWNf
Y2FzdDxpbnQ+KG1fcGVuZGluZ0ZpbGVMb2Fkcy5zaXplKCkpKSB7CiAgICAgICAgIG1fcGVuZGlu
Z0ZpbGVMb2Fkcy5jbGVhcigpOwogICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9
IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgeyB9KSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCmluZGV4IGUzODA2ZTg3ZGY3OWEzZDliNWNh
ZTEyMTRkZTY2YWEyYTY1ODQ3ZGIuLmZjNjZjMzY1YTJmMjlhNGM3OGU2MDYxOWU0N2E3MWM3MjU4
ZDhmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaApA
QCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8Tm93UGxheWluZ0lu
Zm8+IG1fbm93UGxheWluZ0luZm87CiAgICAgc3RydWN0IEFydHdvcmtDYWNoZSB7CiAgICAgICAg
IFN0cmluZyBzcmM7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAg
ICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKICAgICB9Owog
ICAgIHN0ZDo6b3B0aW9uYWw8QXJ0d29ya0NhY2hlPiBtX25vd1BsYXlpbmdJbmZvQXJ0d29yazsK
ICAgICBib29sIG1fc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24geyBmYWxzZSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCAxNTczMWViMjNmYTc2OTQ5NjBkZDgw
NDk2ZmE4ZjJmOWU4Yzc3ODBmLi4wN2VkNDhlNTg4NGVjZWVkYzYxZmQ5M2U2YjIyMTcxYmU4ODU4
OWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcApAQCAtODksNyArODks
NyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgdHlwZSkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiB0eXBlKQorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBhc3RlYm9h
cmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAg
aWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpKQogICAgICAgICByZXR1cm4gc3RyYXRlZ3ktPnJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChpbmRleCwgdHlwZSwgbmFtZSgpLCBjb250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZC5oCmluZGV4IDdkMjQ3ZGNkMWExNmYzNDJjMTc1NGM0NWM0YTczNTI5YmY4ZjcxYjIu
LjM1NzYzZWUxMmEzOTBlZmM4NDUyYzM1ODA2YjUxMmJlNDI5YWQ5NzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDEyICs2MSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBI
V05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkQnVmZmVy
OwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRWxlbWVu
dDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgUGFzdGVib2FyZFN0cmF0ZWd5OwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNpbXBsZVJh
bmdlOwogCkBAIC0xNDcsMTYgKzE0OCwxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHJl
YWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNl
bnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUgPSB7IH0pID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0
eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2Vu
dGF0aW9uU2l6ZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkVVJMKGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZFBsYWlu
VGV4dChjb25zdCBTdHJpbmcmKSA9IDA7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSA9IDA7Ci0gICAg
dmlydHVhbCBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJv
b2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWREYXRh
QnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBu
YW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkRGF0YUJ1ZmZlcihGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRh
dGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOwogI2VuZGlmCiB9
OwogCkBAIC0xNzEsNyArMTcyLDcgQEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAg
ICB2aXJ0dWFsIH5QYXN0ZWJvYXJkRmlsZVJlYWRlcigpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFs
IHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIC8qIHR5cGUgKi8pIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiB9OwogCiBjbGFz
cyBQYXN0ZWJvYXJkIHsKQEAgLTI5Niw3ICsyOTcsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRp
b25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IHBhc3RlYm9hcmRJdGVtSW5mbyhzaXplX3QgaW5kZXgp
IGNvbnN0OwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHR5cGUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiB0eXBlKTsKICAgICBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUp
OwogCiAgICAgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRleHQuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmNwcAppbmRleCA5ZDNmODdhOTExNGMzOGE1NGUzM2EwNWUyYjk4OTUy
Y2NmNjdhZTcwLi43YjRiM2QzNmFhNjgwMzYxMTg3OTEzMWI1YTFiMjI2YjU4OGQzNjJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCkBA
IC0zMywxMyArMzMsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgc3RkOjp2
YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+IGNvcHlQbGF0Zm9ybURhdGEoY29uc3Qg
c3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+JiBvdGhlcikKK3N0YXRpYyBz
dGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGNvcHlQbGF0
Zm9ybURhdGEoY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiYgb3RoZXIpCiB7CiAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5n
PihvdGhlcikpCiAgICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFN0cmluZz4ob3RoZXIpIH07CiAK
LSAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4ob3RoZXIp
KQotICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ob3RoZXIpLmNv
cHlSZWYoKSB9OworICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4ob3RoZXIpKQorICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG90aGVyKS5jb3B5UmVmKCkgfTsKIAogICAgIHJldHVybiB7
IH07CiB9CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6d3Jp
dGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIGFk
ZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZvcm1EYXRhID0geyB2YWx1ZSB9OwogfQogCi12
b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0
ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKQogewogICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZvcm1EYXRhID0geyBX
VEZNb3ZlKGRhdGEpIH07CiB9CkBAIC0yMDIsMTQgKzIwMiwxNCBAQCBIYXNoTWFwPFN0cmluZywg
U3RyaW5nPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6c2FtZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGEo
KSBjb25zdAogICAgIHJldHVybiBjdXN0b21EYXRhOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNv
bnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6
OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGZvciAoYXV0byYg
ZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgaWYgKGVudHJ5LnR5cGUgIT0gdHlwZSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJl
ZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpLmNvcHlSZWYo
KTsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRhKS5jb3B5
UmVmKCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMjY1LDExICsyNjUs
MTEgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaEN1c3RvbVN0cmluZyhGdW5j
dGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwKICAgICB9CiB9CiAKLXZvaWQgUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVk
QnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAordm9pZCBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAogewogICAgIGZvciAoYXV0byYg
ZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgYXV0byYgZGF0YSA9IGVudHJ5LnBsYXRmb3JtRGF0
YTsKLSAgICAgICAgaWYgKChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYg
IXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkuaXNOdWxsKCkpIHx8IHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAgICBpZiAoKHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5pc051bGwo
KSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
KGRhdGEpKQogICAgICAgICAgICAgZnVuY3Rpb24oZW50cnkudHlwZSwgZGF0YSk7CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKaW5k
ZXggMmJlODFkMjkzOGEzZGJkMDkwMjZjYTZlYzY0YWMzMjg3ZTZhYmMwMy4uOTdmZjk4NWUyNGUx
MWI0YzdiYjQxNDM3MzdmMDI4NDBjMzVmZmNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhIHsKIHB1YmxpYzoKQEAgLTQ4LDcg
KzQ5LDcgQEAgcHVibGljOgogCiAgICAgICAgIFN0cmluZyB0eXBlOwogICAgICAgICBTdHJpbmcg
Y3VzdG9tRGF0YTsKLSAgICAgICAgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZl
cj4+IHBsYXRmb3JtRGF0YTsKKyAgICAgICAgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PiBwbGF0Zm9ybURhdGE7CiAgICAgfTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIFBhc3RlYm9hcmRDdXN0b21EYXRhKCk7CkBAIC02NSwxMSArNjYsMTEgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tUGVy
c2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJik7CiAKICAgICBTdHJp
bmcgcmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUp
IGNvbnN0OwogICAgIFN0cmluZyByZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYg
dHlwZSkgY29uc3Q7CiAKICAgICB2b2lkIHdyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdm9pZCB3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0
IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CiAgICAg
dm9pZCB3cml0ZVN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgdmFsdWUpOwogCiAgICAgdm9pZCBjbGVhcigpOwpAQCAtODMsNyArODQsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGZvckVhY2hUeXBlKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+
JiYpIGNvbnN0OwogICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nKEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpPiYmKSBjb25zdDsKLSAgICB2
b2lkIGZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4m
IGRhdGEpPiYmKSBjb25zdDsKKyAgICB2b2lkIGZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVy
KEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3Ry
aW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKT4mJikgY29uc3Q7CiAgICAg
dm9pZCBmb3JFYWNoQ3VzdG9tU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIGRhdGEpPiYmKSBjb25zdDsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0
ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRl
eCAxYzA3MjZmZWIzZTAyYWVkMzJiNDZmMjYyYmNkYTE2OWQ2NzJlYjJjLi5jNDFlMDg1MjQ0OTZj
NjdmMWYxNTAzOGZiYjI2ZTljMjlkYTY5OGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsMTAgKzMxLDExIEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVi
b2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlv
bkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Owogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBz
dHJ1Y3QgUGFzdGVib2FyZFVSTDsKQEAgLTYyLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9y
VHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAg
ICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90
IHNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNl
dENvbG9yKGNvbnN0IENvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFN0cmluZ0Zv
clR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCmluZGV4
IDNmNDgzMmE1YTY1OGMxY2M3YzBhYTEzYjI2ZTBlYTQ3MzNlOWQzYjcuLjllNzJlNDRhMmVhYzRk
OGVmNzMwYjk4NzFkMGVjNTA4ZWQ5ZmFjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybUNvbnRlbnRG
aWx0ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTYsNyArNTYsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0
YSgpID0gMDsKLSAgICB2aXJ0dWFsIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBs
YWNlbWVudERhdGEoKSBjb25zdCA9IDA7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQog
ICAgIHZpcnR1YWwgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkg
Y29uc3QgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFz
dGVib2FyZC5oCmluZGV4IDdhMmEzMTAwNzQyNTAwMjQzYmI0NmZmNTk4Njg2MWU4NGEyZmQ5NmUu
LjcxZGZiOTNlNTc1NjBlMzNhN2Y2YzgwYzIwZjkyZDViMmNhZWMxMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC00NywxMyArNDcsMTQgQEAg
c3RydWN0IHdwZV9wYXN0ZWJvYXJkOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xv
cjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xh
c3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJk
SW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7
CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBQbGF0Zm9ybVBhc3RlYm9hcmQgewogcHVibGljOgpAQCAtODUsNyArODYs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHdpbGwgcmV0dXJuIDAgaWYgcGFz
dGVib2FyZCBvd25lcnNoaXAgaGFzIGJlZW4gdGFrZW4gZnJvbSB1cy4KICAgICBXRUJDT1JFX0VY
UE9SVCBpbnQ2NF90IGNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCk7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0
QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRVUkwoY29uc3QgUGFz
dGVib2FyZFVSTCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0Q29sb3IoY29uc3Qg
Q29sb3ImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4IDRjYjMzMDFlN2RmNzA3MWM1
ZGQ5ZmM1OWJjNTcxODVjNGU5MTQ3NjguLjYzMWFkZTdjY2Y3YWQyOTY5M2EyZTc2NTFmZTZhOWNk
ZWJkMzc3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
Y3BwCkBAIC02Myw5ICs2Myw5IEBAIGNvbnN0IFJlc291cmNlRXJyb3ImIFByZXZpZXdDb252ZXJ0
ZXI6OnByZXZpZXdFcnJvcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJldmlld0Vycm9yOwogfQog
Ci1jb25zdCBTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkgY29u
c3QKK2NvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZp
ZXdEYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAgICBy
ZXR1cm4gKm1fcHJldmlld0RhdGEtPmdldCgpOwogfQogCiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6
OnVwZGF0ZU1haW5SZXNvdXJjZSgpCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgUHJldmlld0NvbnZl
cnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKICAgICB9KTsKIH0KIAotdm9pZCBQcmV2aWV3Q29u
dmVydGVyOjphcHBlbmRGcm9tQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9p
ZCBQcmV2aWV3Q29udmVydGVyOjphcHBlbmRGcm9tQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICB3aGlsZSAoYnVmZmVyLnNpemUoKSA+IG1fbGVuZ3Ro
QXBwZW5kZWQpIHsKICAgICAgICAgYXV0byBuZXdEYXRhID0gYnVmZmVyLmdldFNvbWVEYXRhKG1f
bGVuZ3RoQXBwZW5kZWQpOwpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRl
cjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQogICAgIGNs
aWVudC5wcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKCp0aGlzKTsKIAogICAgIGlm
ICghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpICYmIGhhc0NsaWVudChjbGllbnQpKQotICAgICAg
ICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCBtX3ByZXZpZXdE
YXRhLmdldCgpKTsKKyAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0
YSgqdGhpcywgKm1fcHJldmlld0RhdGEtPmdldCgpKTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0
YXRlOjpDb252ZXJ0aW5nIHx8ICFoYXNDbGllbnQoY2xpZW50KSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQo
UHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQogICAgIGNsaWVudC5wcmV2aWV3Q29udmVy
dGVyRGlkRmluaXNoQ29udmVydGluZygqdGhpcyk7CiB9CiAKLXZvaWQgUHJldmlld0NvbnZlcnRl
cjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lk
IFByZXZpZXdDb252ZXJ0ZXI6OmRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBhdXRvIHByb3RlY3RlZFRoaXMgeyBSZWYgeyAq
dGhpcyB9IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaApp
bmRleCAyYTM3MjkyMjc5OWNlNmFmZmFhYjNlMTQwZDE5MGJhNjRjZjhjZTJiLi45MjAyZWRkZDll
MTA1YjI3MzVlZGMxNDZmMjY2NGMxM2NiOWMzNDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUHJldmlld0NvbnZlcnRlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00MSwxNSAr
NDIsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OworY2xhc3MgU2hhcmVk
QnVmZmVyQnVpbGRlcjsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50Owogc3RydWN0IFBy
ZXZpZXdDb252ZXJ0ZXJQcm92aWRlcjsKIAogc3RydWN0IFByZXZpZXdQbGF0Zm9ybURlbGVnYXRl
IDogQ2FuTWFrZVdlYWtQdHI8UHJldmlld1BsYXRmb3JtRGVsZWdhdGU+IHsKICAgICB2aXJ0dWFs
IH5QcmV2aWV3UGxhdGZvcm1EZWxlZ2F0ZSgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9p
ZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZEZpbmlzaExvYWRpbmco
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkRmFpbFdpdGhFcnJvcihjb25zdCBS
ZXNvdXJjZUVycm9yJikgPSAwOwogfTsKQEAgLTcyLDcgKzc0LDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyBwcmV2aWV3RmlsZU5hbWUoKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgcHJldmlld1VUSSgpIGNvbnN0OwogICAgIGNvbnN0IFJlc291cmNlRXJy
b3ImIHByZXZpZXdFcnJvcigpIGNvbnN0OwotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcHJldmll
d0RhdGEoKSBjb25zdDsKKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBwcmV2aWV3
RGF0YSgpIGNvbnN0OwogCiAgICAgdm9pZCBmYWlsZWRVcGRhdGluZygpOwogICAgIHZvaWQgZmlu
aXNoVXBkYXRpbmcoKTsKQEAgLTk0LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzUGxh
dGZvcm1QYXNzd29yZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKSBjb25zdDsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgaXRlcmF0ZUNsaWVudHMoVCYmIGNhbGxiYWNrKTsKLSAg
ICB2b2lkIGFwcGVuZEZyb21CdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBh
cHBlbmRGcm9tQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lk
IGRpZEFkZENsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50Jik7CiAgICAgdm9pZCBkaWRGYWls
Q29udmVydGluZ1dpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRG
YWlsVXBkYXRpbmcoKTsKQEAgLTEwNiw3ICsxMDgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxh
dGZvcm1VbmxvY2tXaXRoUGFzc3dvcmQoY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBQcmV2aWV3
UGxhdGZvcm1EZWxlZ2F0ZQotICAgIHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZGVsZWdhdGVEaWRG
aW5pc2hMb2FkaW5nKCkgZmluYWw7CiAgICAgdm9pZCBkZWxlZ2F0ZURpZEZhaWxXaXRoRXJyb3Io
Y29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCkBAIC0xMTgsNyArMTIwLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgRmluaXNoZWRDb252ZXJ0aW5nLAogICAgIH07CiAKLSAgICBSZWY8U2hhcmVk
QnVmZmVyPiBtX3ByZXZpZXdEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVy
PiBtX3ByZXZpZXdEYXRhOwogICAgIFJlc291cmNlRXJyb3IgbV9wcmV2aWV3RXJyb3I7CiAgICAg
UmVzb3VyY2VSZXNwb25zZSBtX29yaWdpbmFsUmVzcG9uc2U7CiAgICAgU3RhdGUgbV9zdGF0ZSB7
IFN0YXRlOjpVcGRhdGluZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmll
d0NvbnZlcnRlckNsaWVudC5oCmluZGV4IDA0ZWEzNjgwNjkyYjI1MmExOTg5YzI2Y2EyMDQyMTI3
NzdhYTNiN2IuLjljZWU5MzMyMGIyMzhiNGNkNzNjZGQyZTAzMDJjM2JmNGRhZDY4YmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmgKQEAg
LTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQcmV2aWV3Q29udmVy
dGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50IDog
Q2FuTWFrZVdlYWtQdHI8UHJldmlld0NvbnZlcnRlckNsaWVudD4gewogICAgIHZpcnR1YWwgflBy
ZXZpZXdDb252ZXJ0ZXJDbGllbnQoKSA9IGRlZmF1bHQ7CkBAIC00Miw3ICs0Miw3IEBAIHN0cnVj
dCBQcmV2aWV3Q29udmVydGVyQ2xpZW50IDogQ2FuTWFrZVdlYWtQdHI8UHJldmlld0NvbnZlcnRl
ckNsaWVudD4gewogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmluaXNoVXBk
YXRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0Nv
bnZlcnRlckRpZEZhaWxVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0
ZXImKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0
YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBuZXdEYXRhKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29u
dmVydGVyJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgbmV3RGF0YSkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZyhQcmV2aWV3
Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFp
bENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCmluZGV4IDgyNzg2Mzkz
ZmNlZDc1NGM4NWY3YjI4OTEyNTJmNTE2YmVkMGQ1NDkuLmI5ODZlZTQwZDE5NzUxNzRmNTRhZDI5
YTE2OGNhZGYxODk0NTZjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgOiBDYW5NYWtlV2Vha1B0cjxQ
cmV2aWV3Q29udmVydGVyUHJvdmlkZXI+IHsKICAgICB2aXJ0dWFsIH5QcmV2aWV3Q29udmVydGVy
UHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJvdmlkZU1haW5SZXNv
dXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0
ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
CmluZGV4IGQ4ZTY4ZTMzNzc4MWZiMjlhZDM5YzU1YjlhZmQzOTAwMzUzNTM4NWQuLjM3ZTQ1MzY3
Mzg5NTE1MTMxNWIxMjcyNWNjZGU4ZGEzZjFkNjNjMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMzcsNjMgKzM3LDUyIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIGFwcGVuZChkYXRh
LCBzaXplKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IHNpemUpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIGFwcGVuZChyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSk7CiB9CiAKLVNoYXJlZEJ1
ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEp
CitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6
ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdU
Rk1vdmUoZmlsZURhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQorRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXIm
JiBwcm92aWRlcikKICAgICA6IG1fc2l6ZShwcm92aWRlci5zaXplKCkpCiB7Ci0gICAgbV9zZWdt
ZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpfSk7
CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUo
cHJvdmlkZXIpKSB9KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVp
bnQ4X3Q+JiYgZGF0YSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKICAgICBhcHBlbmQoV1RGTW92ZShkYXRh
KSk7CiB9CiAKLSNpZiBVU0UoR1NUUkVBTUVSKQotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKK0ZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKG1hcHBl
ZEJ1ZmZlcikpOworICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCi1TaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQotICAg
IDogbV9zaXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCisjaWYgVVNFKEdTVFJFQU1FUikKK1JlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0
TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKX0pOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIobWFwcGVkQnVmZmVyKSk7CiB9Ci0j
ZW5kaWYKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5n
KQotewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVz
KSB7Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAgIEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFw
cGluZ1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkp
OwotICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUo
ZmlsZVBhdGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShW
ZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCisgICAg
OiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQo
eyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpIH0pOwogfQorI2VuZGlmCiAK
LXN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6ZV90IHNpemUpCitzdGF0aWMg
VmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKIHsKICAg
ICBWZWN0b3I8dWludDhfdD4gY29tYmluZWREYXRhOwogICAgIGNvbWJpbmVkRGF0YS5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KHNpemUpOwpAQCAtMTAzLDMzICs5MiwxOSBAQCBzdGF0aWMgVmVjdG9y
PHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudFZlY3RvcgogICAgIHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVm
ZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdAorUmVmPFNoYXJlZEJ1ZmZlcj4gRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKSBjb25zdAogewotI2lmIEFTU0VS
VF9FTkFCTEVECi0gICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8gc2V0IHRoaXMg
dG8gdHJ1ZSBhbmQgaGF2ZSBubyBhc3NlcnRpb25zIGZpcmUuCi0gICAgLy8gUmVtb3ZlIGFsbCBp
bnN0YW5jZXMgb2YgYXBwZW5kaW5nIGFmdGVyIGNhbGxpbmcgdGhpcywgYmVjYXVzZSB0aGV5IGFy
ZSBhbGwgTyhuXjIpIGFsZ29yaXRobXMgc2luY2UgcjIxNTY4Ni4KLSAgICAvLyBtX2hhc0JlZW5D
b21iaW5lZEludG9PbmVTZWdtZW50ID0gdHJ1ZTsKLSNlbmRpZgotICAgIGlmIChtX3NlZ21lbnRz
LnNpemUoKSA8PSAxKQotICAgICAgICByZXR1cm47Ci0KKyAgICBpZiAobV9jb250aWd1b3VzKQor
ICAgICAgICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nh
c3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSB9OworICAgIGlmICghbV9zZWdtZW50
cy5zaXplKCkpCisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGlm
IChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUobV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CiAgICAgYXV0byBjb21iaW5l
ZERhdGEgPSBjb21iaW5lU2VnbWVudHNEYXRhKG1fc2VnbWVudHMsIG1fc2l6ZSk7Ci0gICAgbV9z
ZWdtZW50cy5jbGVhcigpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6
Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSl9KTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5z
aXplKCkgPT0gMSk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwotfQotCi1j
b25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAotewotICAgIGlmIChtX3Nl
Z21lbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY29tYmluZUlu
dG9PbmVTZWdtZW50KCk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwotICAg
IHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKKyAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKTsKIH0KIAotVmVjdG9yPHVpbnQ4
X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdAorVmVjdG9yPHVpbnQ4X3Q+IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKIHsKICAgICBWZWN0b3I8dWludDhf
dD4gZGF0YTsKICAgICBkYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSgpKTsKQEAgLTEz
OSw3ICsxMTQsNyBAQCBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNv
bnN0CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6
OnRha2VEYXRhKCkKK1ZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0YWtl
RGF0YSgpCiB7CiAgICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
eyB9OwpAQCAtMTU0LDEzICsxMjksMTMgQEAgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6
dGFrZURhdGEoKQogICAgIHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLVNoYXJlZEJ1ZmZlckRh
dGFWaWV3IFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdAor
U2hhcmVkQnVmZmVyRGF0YVZpZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEo
c2l6ZV90IHBvc2l0aW9uKSBjb25zdAogewogICAgIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50
cnkqIGVsZW1lbnQgPSBnZXRTZWdtZW50Rm9yUG9zaXRpb24ocG9zaXRpb24pOwogICAgIHJldHVy
biB7IGVsZW1lbnQtPnNlZ21lbnQuY29weVJlZigpLCBwb3NpdGlvbiAtIGVsZW1lbnQtPmJlZ2lu
UG9zaXRpb24gfTsKIH0KIAotY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvckVu
dHJ5KiBTaGFyZWRCdWZmZXI6OmdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpb24p
IGNvbnN0Citjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvckVu
dHJ5KiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90
IHBvc2l0aW9uKSBjb25zdAogewogICAgIFJFTEVBU0VfQVNTRVJUKHBvc2l0aW9uIDwgbV9zaXpl
KTsKICAgICBhdXRvIGNvbXBhcmF0b3IgPSBbXShjb25zdCBzaXplX3QmIHBvc2l0aW9uLCBjb25z
dCBEYXRhU2VnbWVudFZlY3RvckVudHJ5JiBlbnRyeSkgewpAQCAtMTcxLDcgKzE0Niw3IEBAIGNv
bnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogU2hhcmVkQnVmZmVyOjpn
ZXRTZWdtZW50Rm9yUG9zaXRpb24oCiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKLVN0cmluZyBT
aGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKK1N0cmluZyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdC
dWlsZGVyOwogICAgIGZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CkBAIC0xODEs
NyArMTU2LDIyIEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKICAg
ICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAorc2l6ZV90IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NpemU7
Cit9CisKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuICFzaXplKCk7Cit9CisKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aXND
b250aWd1b3VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250aWd1b3VzOworfQorCitSZWZQ
dHI8QXJyYXlCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVm
ZmVyKCkgY29uc3QKIHsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSksIDEpOwogICAg
IGlmICghYXJyYXlCdWZmZXIpIHsKQEAgLTIwMCw2OCArMTkwLDY4IEBAIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAgICAgcmV0
dXJuIGFycmF5QnVmZmVyOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0Jl
ZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAg
ICAgbV9zZWdtZW50cy5yZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkgKyBkYXRhLm1f
c2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBkYXRhLm1f
c2VnbWVudHMpIHsKLSAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe21fc2l6ZSwg
ZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tl
ZEFwcGVuZCh7IG1fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICAgICAg
bV9zaXplICs9IGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpOwogICAgIH0KICAgICBBU1NFUlQoaW50
ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAg
QVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1f
Y29udGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBw
ZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNl
Z21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQo
eyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBt
X3NpemUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0K
IAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQordm9p
ZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkK
IHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFT
U0VSVCghbV9jb250aWd1b3VzKTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7Ci0g
ICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6
Y3JlYXRlKFdURk1vdmUoZGF0YSkpIH0pOwogICAgIG1fc2l6ZSArPSBkYXRhU2l6ZTsKICAgICBB
U1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpj
bGVhcigpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoKQoreworICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsKK30KKwordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpjbGVhcigpCiB7CiAgICAgbV9zaXplID0gMDsKICAgICBtX3NlZ21lbnRzLmNsZWFyKCk7
CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi1SZWY8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogewotICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IGNsb25lID0gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOworICAgIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcik7CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9z
ZWdtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKQotICAgICAgICBjbG9uZS0+bV9z
ZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe2VsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5z
ZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRB
cHBlbmQoeyBlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkg
fSk7CiAgICAgQVNTRVJUKGNsb25lLT5pbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICBBU1NF
UlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi1SZWY8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIm
JiBwcm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RG
TW92ZShwcm92aWRlcikpKTsKLX0KLQotdm9pZCBTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50
KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYgYXBwbHkp
IGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0
IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0
CiB7CiAgICAgYXV0byBzZWdtZW50cyA9IG1fc2VnbWVudHM7CiAgICAgZm9yIChhdXRvJiBzZWdt
ZW50IDogc2VnbWVudHMpCiAgICAgICAgIGFwcGx5KFNwYW4geyBzZWdtZW50LnNlZ21lbnQtPmRh
dGEoKSwgc2VnbWVudC5zZWdtZW50LT5zaXplKCkgfSk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVy
OjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKK2Jv
b2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6c3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVp
bnQ4X3Q+JiBwcmVmaXgpIGNvbnN0CiB7CiAgICAgaWYgKHByZWZpeC5lbXB0eSgpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTI4Myw3ICsyNzMsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6c3Rh
cnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1WZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVf
dCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CitWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAog
ewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGlmIChvZmZzZXQgPj0gc2l6ZSgpKQpA
QCAtMzEwLDEyICszMDAsMTIgQEAgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6cmVhZChz
aXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogICAgIHJldHVybiBkYXRhOwogfQog
Ci12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVu
Z3RoKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVz
dGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvcHlUbyhkZXN0
aW5hdGlvbiwgMCwgbGVuZ3RoKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lk
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKK3ZvaWQg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qg
b2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogewogICAgIEFTU0VSVChsZW5ndGggKyBvZmZz
ZXQgPD0gc2l6ZSgpKTsKICAgICBpZiAob2Zmc2V0ID49IHNpemUoKSkKQEAgLTM1MywxNCArMzQz
LDEzIEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVf
dCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAgICAgfQogfQogCi1ib29sIFNoYXJlZEJ1
ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNvbnN0Citib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
Omhhc09uZVNlZ21lbnQoKSBjb25zdAogewotICAgIGF1dG8gaXQgPSBiZWdpbigpOwotICAgIHJl
dHVybiBpdCAhPSBlbmQoKSAmJiArK2l0ID09IGVuZCgpOworICAgIHJldHVybiBtX3NlZ21lbnRz
LnNpemUoKSA9PSAxOwogfQogCiAjaWYgQVNTRVJUX0VOQUJMRUQKLWJvb2wgU2hhcmVkQnVmZmVy
OjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0Citib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIHsKICAgICBzaXplX3QgcG9zaXRpb24g
PSAwOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpIHsKQEAgLTM3
Miw3ICszNjEsNTcgQEAgYm9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkg
Y29uc3QKIH0KICNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCi1jb25zdCB1aW50OF90KiBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitTaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkKK3sKKyAgICBtX3NpemUg
PSBzZWdtZW50LT5zaXplKCk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBXVEZNb3ZlKHNl
Z21lbnQpIH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1NoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZm
ZXIpCit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBj
b250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOworICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZm
ZXItPnNpemUoKTsKKyAgICBpZiAoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpKQor
ICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVu
dHNbMF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30K
KworU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
JiBkYXRhKQorICAgIDogRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQorewor
ICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgs
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFw
cGluZyBtYXlVc2VGaWxlTWFwcGluZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0g
TWF5VXNlRmlsZU1hcHBpbmc6OlllcykgeworICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwor
ICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0
aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdT
dWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RG
TW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKKyAgICB9CisgICAgcmV0dXJuIGNyZWF0ZUZyb21SZWFk
aW5nRmlsZShmaWxlUGF0aCk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0
YSgpIGNvbnN0Cit7CisgICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7Cit9
CisKK2NvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKK2Nv
bnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0
b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4m
IGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LApAQCAtMzkx
LDEzICs0MzAsMTMgQEAgY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6
ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVE
YXRhKTsKIH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBl
ZEZpbGVEYXRhKCkgY29uc3QKK2Jvb2wgRGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURh
dGEoKSBjb25zdAogewogICAgIHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhPihtX2ltbXV0YWJsZURhdGEpOwogfQogCiAjaWYgIVVTRShDRikK
LXZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0Cit2b2lk
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QK
IHsKIH0KICNlbmRpZgpAQCAtNDA3LDcgKzQ0Niw3IEBAIFdURjo6UGVyc2lzdGVuY2U6OkRlY29k
ZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKICAgICByZXR1cm4ge3sgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgpIH19OwogfQogCi1ib29sIFNo
YXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAor
Ym9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogewogICAgIGlmICh0aGlzID09ICZvdGhlcikKICAg
ICAgICAgcmV0dXJuIHRydWU7CkBAIC00NTYsNyArNDk1LDcgQEAgYm9vbCBTaGFyZWRCdWZmZXI6
Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25z
dAorc2l6ZV90IERhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3Ig
PSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRh
dGEpIC0+IHNpemVfdCB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwKQEAgLTQ3NSw3ICs1MTQsNyBA
QCBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0
dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAotU2hhcmVkQnVm
ZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBzaXplKQorU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRh
dGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5T
ZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKICAgICA6IG1fc2VnbWVudChXVEZN
b3ZlKHNlZ21lbnQpKQogICAgICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQocG9zaXRpb25XaXRo
aW5TZWdtZW50KQogICAgICwgbV9zaXplKHNpemUgPyAqc2l6ZSA6IG1fc2VnbWVudC0+c2l6ZSgp
IC0gcG9zaXRpb25XaXRoaW5TZWdtZW50KQpAQCAtNDk5LDEyICs1MzgsMTcgQEAgY29uc3QgdWlu
dDhfdCogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX3Nl
Z21lbnQtPmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwogfQogCitjb25zdCBjaGFy
KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7Cit9CisKIFJlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25z
dAogewotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBzZWdtZW50ID0g
bV9zZWdtZW50OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBzZWdt
ZW50ID0gbV9zZWdtZW50OworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2Vn
bWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJl
dHVybiBkYXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVy
biBzaXplOyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAg
ICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBmMjNm
NWQ2OWFkMzJlZDY0MGI5NTc3YjJlNmM0NTQ5MTgzOTM2OGFkLi4wNTRjNDZjZDNhYzAxOTI4YTY2
ZDcyNzk5NWRiMDJhMWRlZDBlNTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKQEAgLTYyLDE0NiArNjIsMTMzIEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVy
RGF0YVZpZXc7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKKy8vIERhdGEgd3JhcHBlZCBieSBh
IERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJl
bmNlZCBieSBvdGhlciBvYmplY3RzLgorLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEs
IGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgorY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9
CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKLSAgICBlbnVtIGNsYXNzIE1heVVz
ZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgs
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6
OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKLQot
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOwor
ICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRh
KQorICAgIHsKKyAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7CisgICAgfQogCi0jaWYgVVNF
KEZPVU5EQVRJT04pCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7
Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7Ci0gICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEgKik7Ci0gICAgdm9pZCBhcHBl
bmQoTlNEYXRhICopOwotI2VuZGlmCiAjaWYgVVNFKENGKQotICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OwotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoQ0ZEYXRhUmVmKTsKLSAgICB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOworICAgIHN0YXRp
YyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5k
aWYKLQogI2lmIFVTRShHTElCKQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
R0J5dGVzKik7Ci0gICAgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OworICAg
IHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2Vu
ZGlmCi0KICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50
PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLSAgICAv
LyBDYWxsaW5nIGRhdGEoKSBjYXVzZXMgYWxsIHRoZSBkYXRhIHNlZ21lbnRzIHRvIGJlIGNvcGll
ZCBpbnRvIG9uZSBzZWdtZW50IGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5LgotICAgIC8vIEl0ZXJh
dGUgdGhlIHNlZ21lbnRzIHVzaW5nIGJlZ2luKCkgYW5kIGVuZCgpIGluc3RlYWQuCi0gICAgLy8g
RklYTUU6IEF1ZGl0IHRoZSBjYWxsIHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJlcGxhY2Ug
dGhlbSB3aXRoIGl0ZXJhdGlvbiBpZiBwb3NzaWJsZS4KLSAgICBjb25zdCB1aW50OF90KiBkYXRh
KCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBWZWN0b3I8dWlu
dDhfdD4gY29weURhdGEoKSBjb25zdDsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qg
b2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLQotICAgIC8vIFNpbWlsYXIgdG8gY29weURh
dGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdo
ZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KLSAgICBWZWN0
b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBj
cmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJl
ZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogCi0gICAgLy8gQ3JlYXRlcyBh
biBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8g
dGhhdAotICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVy
cyBpbnRvIGEgZmxhdCBidWZmZXIuCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVB
cnJheUJ1ZmZlcigpIGNvbnN0OwotCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBt
X3NpemU7IH0KLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0K
LQotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHZvaWQgYXBwZW5k
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGRhdGEpLCBsZW5ndGgpOyB9Ci0gICAgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYp
OwotCi0gICAgdm9pZCBjbGVhcigpOworICAgIHN0cnVjdCBQcm92aWRlciB7CisgICAgICAgIEZ1
bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7CisgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgp
PiBzaXplOworICAgIH07CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7Ci0g
ICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0Owot
ICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlk
ZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3Zl
KHByb3ZpZGVyKSkpOyB9CiAKLSAgICAvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBz
aG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIg
b2JqZWN0cy4KLSAgICAvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0aGUgZGF0YSwgYWxsb2NhdGUg
YSBuZXcgRGF0YVNlZ21lbnQuCi0gICAgY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFdFQkNP
UkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICAgICAgV0VCQ09SRV9F
WFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRp
ZgogCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8dWludDhf
dD4mJiBkYXRhKQotICAgICAgICB7Ci0gICAgICAgICAgICBkYXRhLnNocmlua1RvRml0KCk7Ci0g
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEp
KSk7Ci0gICAgICAgIH0KKyAgICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdDsK
IAorcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChWZWN0b3I8dWludDhfdD4mJiBk
YXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNpZiBV
U0UoQ0YpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RG
TW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0
YVJlZj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7
IH0KICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50
PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBE
YXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChH
UmVmUHRyPEdCeXRlcz4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3Zl
KGRhdGEpKSB7IH0KICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIHN0YXRpYyBS
ZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0
YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0K
KyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYg
ZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5k
aWYKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChX
VEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUo
ZGF0YSkpIHsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIp
CisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KIAotICAg
ICAgICBzdHJ1Y3QgUHJvdmlkZXIgewotICAgICAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhf
dCooKT4gZGF0YTsKLSAgICAgICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOwotICAgICAg
ICB9OwotCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYm
IHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJv
dmlkZXIpKSk7IH0KLQotI2lmIFVTRShGT1VOREFUSU9OKQotICAgICAgICBSZXRhaW5QdHI8TlNE
YXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSNlbmRpZgotCi0gICAgICAgIGJvb2wgY29udGFp
bnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgRGF0YVNl
Z21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVE
YXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIHN0ZDo6dmFyaWFudDxWZWN0b3I8dWludDhfdD4s
CiAjaWYgVVNFKENGKQotICAgICAgICBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYm
IGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0K
KyAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAg
ICAgICAgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkKLSAgICAgICAgICAgIDog
bV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBHUmVmUHRyPEdCeXRl
cz4sCiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBEYXRhU2VnbWVudChSZWZQ
dHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFi
bGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRC
dWZmZXI+LAorI2VuZGlmCisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAorICAg
ICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOworICAgIGZyaWVuZCBjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOworI2lmICFVU0UoRk9VTkRBVElPTikKKyAgICBmcmllbmQgY2xhc3Mg
U2hhcmVkQnVmZmVyOyAvLyBGb3IgY3JlYXRlQ0ZEYXRhCiAjZW5kaWYKLSAgICAgICAgRGF0YVNl
Z21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQotICAgICAgICAgICAgOiBt
X2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAgICAgIERhdGFTZWdtZW50KFBy
b3ZpZGVyJiYgcHJvdmlkZXIpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3Zl
KHByb3ZpZGVyKSkgeyB9Cit9OworCitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcik7IH0KKyAgICBzdGF0aWMg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KGRhdGEsIHNpemUpKTsgfQorICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9CisgICAgc3RhdGljIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVm
ZmVyKSkpOyB9CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUo
VmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7IH0KKyAgICBzdGF0aWMgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRl
cikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUo
cHJvdmlkZXIpKSk7IH0KIAotICAgICAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAor
I2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0FycmF5
PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOworI2VuZGlmCiAjaWYg
VVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVm
KTsKICNlbmRpZgorCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgICAgICBHUmVmUHRyPEdCeXRlcz4s
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBj
cmVhdGUoR0J5dGVzKik7CiAjZW5kaWYKKwogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgICAg
ICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVy
Jik7CiAjZW5kaWYKLSAgICAgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAotICAg
ICAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKLSAgICAgICAgZnJpZW5kIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKLSAgICB9OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90
PiBjb3B5RGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBy
ZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworCisgICAgLy8gU2ltaWxh
ciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRh
IGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBpcyBu
b3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKKworICAgIC8v
IENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIncyBjb250ZW50cyB0byB0aGF0CisgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJn
aW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KKyAgICBXRUJDT1JFX0VY
UE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7CisK
KyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKLSAgICB2b2lkIGZvckVhY2hTZWdt
ZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNv
bnN0OwotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVm
aXgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3Q7
CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY29weSgp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9u
LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2
b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZv
aWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNv
bnN0OworCisgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVudDsgLy8g
VG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQKIAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5
IHsKICAgICAgICAgc2l6ZV90IGJlZ2luUG9zaXRpb247CkBAIC0yMTAsNTYgKzE5NywxNzcgQEAg
cHVibGljOgogICAgIHVzaW5nIERhdGFTZWdtZW50VmVjdG9yID0gVmVjdG9yPERhdGFTZWdtZW50
VmVjdG9yRW50cnksIDE+OwogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBi
ZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuYmVnaW4oKTsgfQogICAgIERhdGFTZWdt
ZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRz
LmVuZCgpOyB9Ci0gICAgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3Q7CiAKICAgICAvLyBiZWdpbiBhbmQgZW5k
IHRha2UgTygxKSB0aW1lLCB0aGlzIHRha2VzIE8obG9nKE4pKSB0aW1lLgotICAgIFNoYXJlZEJ1
ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0
aW9uKSBjb25zdDsKIAotICAgIFN0cmluZyB0b0hleFN0cmluZygpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyB0b0hleFN0cmluZygpIGNvbnN0OwogCiAgICAgdm9pZCBoaW50TWVt
b3J5Tm90TmVlZGVkU29vbigpIGNvbnN0OwogCi0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciBkZWNvZGVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVy
YXRvcj09KG90aGVyKTsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVy
KSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KKyAgICBXRUJDT1JFX0VYUE9S
VCBSZWY8U2hhcmVkQnVmZmVyPiBtYWtlQ29udGlndW91cygpIGNvbnN0OwogCi1wcml2YXRlOgot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKLSAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0
b3I8dWludDhfdD4mJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6
UHJvdmlkZXImJik7Citwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
KworICAgIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7CisgICAgYm9vbCBtX2NvbnRpZ3Vv
dXMgeyBmYWxzZSB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVf
dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihW
ZWN0b3I8dWludDhfdD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92
aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogI2lmIFVTRShDRikKLSAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgogI2lmIFVTRShHU1RS
RUFNRVIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihHc3RN
YXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAot
ICAgIHZvaWQgY29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3Q7Citwcml2YXRlOgorICAgIGZy
aWVuZCBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YXBwZW5kKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5E
QVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlm
CisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7
CisjZW5kaWYKIAotICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3Rv
ciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVy
LgotICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY2xlYXIoKTsKIAorICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZl
Y3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gdGFrZURh
dGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdtZW50Rm9yUG9z
aXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0OwogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsK
LQotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAgbXV0YWJsZSBEYXRhU2VnbWVudFZlY3Rv
ciBtX3NlZ21lbnRzOwotCiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtdXRhYmxlIGJvb2wgbV9o
YXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBpbnRlcm5h
bGx5Q29uc2lzdGVudCgpIGNvbnN0OwogI2VuZGlmCiB9OwogCi1pbmxpbmUgVmVjdG9yPHVpbnQ4
X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQorLy8gQSBTaGFyZWRCdWZmZXIgaXMgYSBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyIHRoYXQgYWxsb3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMg
Y29udGVudCB2aWEgdGhlIGRhdGEoKSBhbmQgcmVsYXRlZCBtZXRob2RzLgorY2xhc3MgU2hhcmVk
QnVmZmVyIDogcHVibGljIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgeworcHVibGljOgorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
cmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKCFzaXpl
b2YuLi4oQXJncykpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoKSk7CisgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQor
ICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxEYXRhU2VnbWVudD4+ICYm
Li4uKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBh
dXRvIGJ1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8
QXJncz4oYXJncykuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgV0VCQ09S
RV9FWFBPUlQgY29uc3QgdWludDhfdCAqZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBX
VEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKKworICAgIGVudW0gY2xh
c3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVz
ZUZpbGVNYXBwaW5nOjpZZXMpOworCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9F
WFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNp
ZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRl
Q0ZEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoR0xJQikKKyAgICBXRUJDT1JFX0VYUE9S
VCBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0
ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4m
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCk7Cit9OworCitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0
OworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8g
dGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhcyBhbGwgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2Ug
Y3JlYXRlZC4KKyAgICAgICAgaWYgKCFidWZmZXIgfHwgKGJ1ZmZlci0+aGFzT25lUmVmKCkgJiYg
IWJ1ZmZlci0+aXNDb250aWd1b3VzKCkpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1v
dmUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBl
bmQoKmJ1ZmZlcik7CisgICAgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2Ug
ZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciBhcyBhbGwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisg
ICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKGJ1ZmZlci0+aGFzT25lUmVmKCkg
JiYgIWJ1ZmZlci0+aXNDb250aWd1b3VzKCkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVyID0gV1RG
TW92ZShidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGFw
cGVuZChXVEZNb3ZlKGJ1ZmZlci5nZXQoKSkpOworICAgIH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUuLi4gQXJncz4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKEFyZ3MmJi4uLiBhcmdzKQorICAg
ICAgICA6IG1fYnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdz
PgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJl
QnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyBy
ZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9i
dWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1f
YnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KKworICAgIHZvaWQgcmVz
ZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsgfQorICAgIHZvaWQgZW1wdHkoKQorICAgIHsKKyAg
ICAgICAgcmVzZXQoKTsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgfQorCisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
OyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsgfQorICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlKCkKKyAgICB7
CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAgICByZXR1cm4gbV9idWZmZXIucmVsZWFz
ZU5vbk51bGwoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBlbnN1cmVCdWZmZXIoKQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgICAgIG1fYnVmZmVyID0gRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgfQorICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKK307CisKK2lubGluZSBWZWN0b3I8dWludDhfdD4g
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVS
ZWYoKSkKICAgICAgICAgcmV0dXJuIHRha2VEYXRhKCk7CkBAIC0yNjgsMTcgKzM3NiwxNyBAQCBp
bmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogCiBjbGFz
cyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0gICAgU2hh
cmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVf
dCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0g
c3RkOjpudWxsb3B0KTsKKyAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+
JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBu
ZXdTaXplID0gc3RkOjpudWxsb3B0KTsKICAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBT
aGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKICAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0OwogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFy
KiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZGF0YSgpKTsgfQorICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdDsK
ICAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKICNpZiBV
U0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25z
dDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9zZWdtZW50Owog
ICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBjb25zdCBzaXpl
X3QgbV9zaXplOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyLmNwcAppbmRleCBjZGI2ZTcwMzQwNGQ0MjZkZDIxYjQ3OWZhODljMGRh
OWI4YzQ5ZjhlLi45ZDA1NWNlMjdkODhjM2Q2MmU1YmQxY2Q0NmFkOTFmNWNjNDMxZjQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIu
Y3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShN
SFRNTCkKIAotU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
KFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcikKK1No
YXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKQogICAg
IDogbV9pdGVyYXRvckN1cnJlbnQoYnVmZmVyLT5iZWdpbigpKQogICAgICwgbV9pdGVyYXRvckVu
ZChidWZmZXItPmVuZCgpKQogICAgICwgbV9zZWdtZW50KG1faXRlcmF0b3JDdXJyZW50ICE9IG1f
aXRlcmF0b3JFbmQgPyBtX2l0ZXJhdG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0YSgpIDogbnVsbHB0
cikKQEAgLTQ0LDcgKzQ0LDcgQEAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWMKIHsKIH0KIAotU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZl
ciogYnVmZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCitTaGFyZWRCdWZmZXJDaHVua1JlYWRl
cjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVy
LCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVudChidWZmZXIt
PmJlZ2luKCkpCiAgICAgLCBtX2l0ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAgLCBtX3Nl
Z21lbnQobV9pdGVyYXRvckN1cnJlbnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRlcmF0b3JDdXJy
ZW50LT5zZWdtZW50LT5kYXRhKCkgOiBudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKaW5kZXggNWQ0ZTZmZWU1ODJjNjYxNmZk
MDdlMzk5NGZmNzVjOGYwN2EyZmNlMS4uMWM2NDA4ZDRjNzM2YTFjNGE0NWNlZTdiM2Y2OTY1N2Jj
OWEyNjE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJD
aHVua1JlYWRlci5oCkBAIC00MSw4ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgewogcHVibGljOgotICAg
IFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFZlY3RvcjxjaGFy
PiYgc2VwYXJhdG9yKTsKLSAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIq
LCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpOworICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcik7Cisg
ICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0
IGNoYXIqIHNlcGFyYXRvcik7CiAKICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBWZWN0b3I8
Y2hhcj4mKTsKICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBjaGFyKik7CkBAIC01OCw4ICs1
OCw4IEBAIHB1YmxpYzoKICAgICBzaXplX3QgcGVlayhWZWN0b3I8dWludDhfdD4mLCBzaXplX3Qp
OwogCiBwcml2YXRlOgotICAgIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0
X2l0ZXJhdG9yIG1faXRlcmF0b3JDdXJyZW50OwotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JFbmQ7CisgICAgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRl
cmF0b3JDdXJyZW50OworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yRW5kOwogICAgIGNvbnN0IHVpbnQ4
X3QqIG1fc2VnbWVudCB7IG51bGxwdHIgfTsKICAgICBzaXplX3QgbV9zZWdtZW50SW5kZXggeyAw
IH07CiAgICAgVmVjdG9yPGNoYXI+IG1fc2VwYXJhdG9yIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKaW5kZXggYjJkN2E1NTBkNDYwZTk0
Y2QzMTUxMzRhMzE5NWJjZDkxYzdiNzg5NC4uYTRiNGJiMTA0YjRkODQwMTViOGFhNWI1M2U3ZGZh
Nzg4Y2VkMjVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFz
dGVib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2Fy
ZC5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZVN0cmlu
Zyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9jdXN0b21E
YXRhLndyaXRlU3RyaW5nKHR5cGUsIHZhbHVlKTsKIH0KIAotdm9pZCBTdGF0aWNQYXN0ZWJvYXJk
Ojp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEp
Cit2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgbV9ub25EZWZhdWx0RGF0
YVR5cGVzLmFkZCh0eXBlKTsKICAgICBtX2N1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIFdURk1v
dmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFz
dGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCmlu
ZGV4IGMwOWI2ZGUzMWYyZWRlYmUwMTg4ZGM5YzQ2NmEyNzFlMWI4YjllMTQuLmVkZDcxMzYyM2Yw
NmQyMmIzOGU4MzJhMjgzN2ZlNjY5OTlkZmQ3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TdGF0aWNQYXN0ZWJvYXJkLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBTdGF0aWNQYXN0ZWJvYXJkIGZpbmFsIDogcHVibGljIFBhc3RlYm9hcmQgewog
cHVibGljOgpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJ
bkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBmaW5hbDsKIAogICAgIHZvaWQgd3JpdGVT
dHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpIGZpbmFsOwotICAg
IHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKTsKKyAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdJbkN1c3RvbURh
dGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHZvaWQgY2xl
YXIoKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaAppbmRleCA2
ODc5NTkwMGM1YWRmOWNjOTA0NWUwZWFiYjIyYjE4ZmE2Njk2MzE0Li4xZDY1YmM0MDNhZDg1MjQz
YzY3MjVlNzA0NDhkNmNkYWRjY2NjZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogc3RydWN0IE5vd1BsYXlpbmdJbmZvQXJ0d29yayB7CiAgICAgU3RyaW5nIHNyYzsKICAg
ICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwor
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CiAKICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgTm93UGxheWluZ0luZm9BcnR3b3JrJiBvdGhlcikgY29uc3QKICAg
ICB7CkBAIC02Nyw3ICs2Nyw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBzdGQ6
Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gTm93UGxheWluZ0luCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGltYWdlRGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGltYWdlRGF0YSkpCiAg
ICAgICAgIHJldHVybiB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQppbmRleCBi
Yjc4OGFmYTFlOTFmOWE0ZDNhYjM2ZTJhMGMwODEyYzk0ZTE4NzBlLi43ZjA0OTYwYzU5NjViNjI1
MWI5MWI5YTU2N2U1MTA4OWI1NzE5ZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1t
CkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5v
d1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24KICAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5m
b0VsYXBzZWRUaW1lLCBjZkN1cnJlbnRUaW1lLmdldCgpKTsKICAgICB9CiAgICAgaWYgKG5vd1Bs
YXlpbmdJbmZvLmFydHdvcmsgJiYgbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhKSB7
Ci0gICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VE
YXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5n
SW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
OwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90
ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0RhdGEsIG5zQXJ0d29yay5nZXQoKSk7CiAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9BcnR3b3JrTUlNRVR5cGUsIG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPm1pbWVUeXBlLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdl
dCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya0lkZW50aWZpZXIsIFN0cmlu
Zzo6bnVtYmVyKG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPnNyYy5oYXNoKCkpLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hh
cmVkQnVmZmVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVy
Q0YuY3BwCmluZGV4IDZiNjYyMTdmZjE2MWRlMzc0ZjFjZTMxZDVkMzQ2MzQwYmIyZmNiOTEuLjgx
OWUyNmZhNGNmMDY3OTU3YTU5ZmVmMjljOTlmMDNmNWY0NDkxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFS
ZWYgZGF0YSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIo
Q0ZEYXRhUmVmIGRhdGEpCiB7CiAgICAgYXBwZW5kKGRhdGEpOwogfQpAQCAtNDMsMjQgKzQzLDIw
IEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQogI2lmICFVU0Uo
Rk9VTkRBVElPTikKIFJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZE
YXRhKCkgY29uc3QKIHsKLSAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkgeworICAgIGlm
IChoYXNPbmVTZWdtZW50KCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9p
ZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFi
bGVEYXRhKSkKICAgICAgICAgICAgIHJldHVybiAqZGF0YTsKICAgICB9Ci0gICAgYXV0byBjZkRh
dGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUobnVsbHB0ciwgc2l6ZSgpKSk7Ci0gICAg
Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgQ0ZEYXRhQXBwZW5k
Qnl0ZXMoY2ZEYXRhLmdldCgpLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAg
IH0pOwotICAgIHJldHVybiBjZkRhdGE7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRl
KG51bGxwdHIsIGRhdGEoKSwgc2l6ZSgpKSk7CiB9CiAjZW5kaWYKIAotUmVmPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhUmVmIGRhdGEpCitSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YVJlZiBkYXRh
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihkYXRhKSk7CiB9CiAK
LXZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0Cit2b2lk
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QK
IHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogbV9zZWdtZW50cykgewogICAgICAgICBp
ZiAoZW50cnkuc2VnbWVudC0+aGFzT25lUmVmKCkpIHsKQEAgLTcwLDkgKzY2LDggQEAgdm9pZCBT
aGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKICAgICB9CiB9CiAK
LXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCit2b2lkIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1f
aGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOwogICAgIGlmIChkYXRhKSB7CiAgICAgICAg
IG1fc2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoZGF0YSl9KTsK
ICAgICAgICAgbV9zaXplICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlci5oCmluZGV4IDA3OTdkZmJlOGQwMThiZTYzNjE3NDRjNThmODkyZGQ1NmVkNjg5YzUu
LmNiZTg3NzFhNDVkODYyY2I1YWIwNWVjYTM5OTkyN2UwNzgzOGY1NDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXIuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25z
ZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGFk
ZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBy
ZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1JlcXVpcmVkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250
ZW50RmlsdGVyLm1tCmluZGV4IDQyOTBkYjEyOGQwMDBhNDBlZWY3MGZkMjk0MWQ2MzQ0OTA0NmRl
MDMuLjJlZjI3MDFmZTY3OGJmOWI5MmRiMjEyYmJlYTVjOTE1YTNmYzNhMmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNp
b25Db250ZW50RmlsdGVyLm1tCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBOZXR3b3JrRXh0ZW5z
aW9uQ29udGVudEZpbHRlcjo6ZmluaXNoZWRBZGRpbmdEYXRhKCkKICAgICBzZW1hcGhvcmUud2Fp
dCgpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
cjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBO
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKIHsK
ICAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaApp
bmRleCAwNjhjZGNiMzgzZjQyMzY1YWMzMjY0ZTIyOWE2ZDYzYmMyYjRhYmQ2Li42NzlhZTkzMjk1
MTdlMWYzOTQzYmE1NzYyYWM4ZjU2ZTg2MGM4YzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVy
LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGREYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRB
ZGRpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnRE
YXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJl
cGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBj
b25zdCBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQppbmRleCBi
NDYxZjk3NTM2ZGUzYTE1ODEzYTU4MjdiODY3MTM4Yjk2ZDRmMzhjLi4xYzk2MDQ3MTZiNDI2OTNk
NWU0NmMyZTIzZTk0MWRhMDBjODNlNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQpA
QCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmZp
bmlzaGVkQWRkaW5nRGF0YSgpCiAgICAgdXBkYXRlRmlsdGVyU3RhdGUoKTsKIH0KIAotUmVmPFNo
YXJlZEJ1ZmZlcj4gUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0
YSgpIGNvbnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGFyZW50YWxDb250cm9sc0Nv
bnRlbnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRpZEJs
b2NrRGF0YSgpKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9yZXBsYWNlbWVu
dERhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVi
b2FyZENvY29hLm1tCmluZGV4IDZmMjhlODI0MzYwY2NkMzA4NmMwMzE4ZmFlNDA5OGYxZWRlMjhl
MjUuLmI4MTcwODE3Y2VjNTllMjJkM2MwZTlhNzhmMTQ2YzAzM2U0YzE2NjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTQ3LDcg
KzQ3LDcgQEAgc3RhdGljIE5TQml0bWFwSW1hZ2VGaWxlVHlwZSBiaXRtYXBQTkdGaWxlVHlwZSgp
CiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi0vLyBNYWtpbmcgdGhpcyBub24taW5saW5l
IHNvIHRoYXQgV2ViS2l0IDIncyBkZWNvZGluZyBkb2Vzbid0IGhhdmUgdG8gaW5jbHVkZSBTaGFy
ZWRCdWZmZXIuaC4KKy8vIE1ha2luZyB0aGlzIG5vbi1pbmxpbmUgc28gdGhhdCBXZWJLaXQgMidz
IGRlY29kaW5nIGRvZXNuJ3QgaGF2ZSB0byBpbmNsdWRlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIu
aC4KIFBhc3RlYm9hcmRXZWJDb250ZW50OjpQYXN0ZWJvYXJkV2ViQ29udGVudCgpID0gZGVmYXVs
dDsKIFBhc3RlYm9hcmRXZWJDb250ZW50Ojp+UGFzdGVib2FyZFdlYkNvbnRlbnQoKSA9IGRlZmF1
bHQ7CiAKQEAgLTIxMSw5ICsyMTEsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBl
c0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLXN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1
ZmZlcikKK3N0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRvUE5HKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCiB7Ci0gICAgYXV0byBpbWFnZSA9IGFkb3B0TlMo
W1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIuY3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1h
Z2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIE5TRGF0YSAqcG5nRGF0YSA9IFtpbWFnZSByZXBy
ZXNlbnRhdGlvblVzaW5nVHlwZTpiaXRtYXBQTkdGaWxlVHlwZSgpIHByb3BlcnRpZXM6QHsgfV07
CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQppbmRleCA5
ZWUwYzBiNTVkNzk0YzJiNjkwNTdiYmYzNjRhYmYxODM4YTliODUwLi4yNWYzMTFmMjU4OWI4MmVm
ZDI1NzdhMDg4OTRiNmM1ZTA2NmI5Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpAQCAtMzUsMTEgKzM1LDExIEBACiAjaW1w
b3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KIAogQGludGVyZmFjZSBXZWJDb3JlU2hhcmVk
QnVmZmVyRGF0YSA6IE5TRGF0YQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBv
c2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZTsKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVu
dCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50
ZWdlcilzaXplOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZVNoYXJlZEJ1ZmZlckRh
dGEgewotICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
PiBfZGF0YVNlZ21lbnQ7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50PiBf
ZGF0YVNlZ21lbnQ7CiAgICAgTlNVSW50ZWdlciBfcG9zaXRpb247CiAgICAgTlNVSW50ZWdlciBf
c2l6ZTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgW3N1cGVyIGRl
YWxsb2NdOwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246
KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFT
ZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6
ZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmls
OwpAQCAtODgsMTMgKzg4LDE0IEBAIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShOU0RhdGEgKmRhdGEpCitSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0
YSAqZGF0YSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnJpZGdl
X2Nhc3QoZGF0YSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKGJyaWRnZV9jYXN0KGRhdGEpKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBl
bmQoTlNEYXRhICpkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNE
YXRhICpkYXRhKQogeworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICByZXR1cm4gYXBw
ZW5kKGJyaWRnZV9jYXN0KGRhdGEpKTsKIH0KIApAQCAtMTA1LDEwICsxMDYsOCBAQCBSZXRhaW5Q
dHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiAKIFJldGFpblB0
cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKLSAgICBj
b21iaW5lSW50b09uZVNlZ21lbnQoKTsKICAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQogICAg
ICAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwot
ICAgIEFTU0VSVChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKTsKICAgICByZXR1cm4gYnJpZGdlX2Nh
c3QobV9zZWdtZW50c1swXS5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSk7CiB9CiAKQEAgLTExOSwx
NCArMTE4LDE0IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJv
bVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLVJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5
KCkgY29uc3QKK1JldGFpblB0cjxOU0FycmF5PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVh
dGVOU0RhdGFBcnJheSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkobV9zZWdt
ZW50cywgW10gKGF1dG8mIHNlZ21lbnQpIHsKICAgICAgICAgcmV0dXJuIHNlZ21lbnQuc2VnbWVu
dC0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgfSk7CiB9CiAKLVJldGFpblB0cjxOU0RhdGE+IFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8TlNE
YXRhPiBEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYWRv
cHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGFsbG9jXSBpbml0V2l0aERhdGFTZWdtZW50
Oip0aGlzIHBvc2l0aW9uOjAgc2l6ZTpzaXplKCldKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCmluZGV4IGZiYzI4M2Zi
YzMzNjliZjgyN2UzMTY5OTRjNGM5NGUwNjM2M2NiODEuLjJkZTQxOTM0ZGExOTg3OWQ3NWMwZGY4
YTg5ZTY0ZTU5OWMyOWFlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBMb2dn
ZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvbjsKIHN0cnVj
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uOwogCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIENE
TUluc3RhbmNlQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50
PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNSW5zdGFuY2VDbGllbnQoKSA9IGRlZmF1bHQ7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZl
ZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIC8vIEphdmFTY3JpcHQn
cyBoYW5kbGUgdG8gYSBDRE1JbnN0YW5jZSwgbXVzdCBiZSB1c2VkIGZyb20gdGhlCkBAIC05OCw3
ICs5OCw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dE
aXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxi
YWNrJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nl
c3NDYWxsYmFjayYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFN0b3JhZ2VEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0o
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVh
dGVTZXNzaW9uKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaAppbmRleCAzN2NkMDdjN2JmMmRj
NzVlNDFmZDVjNmM3ZGVjZjQzZTEwMzllMTE0Li5kMjU5MjI1YmE5ZTAyYTY0ZDBjZWNkNjE1MWZk
ZjkzZjRmMjQ2NmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaApAQCAtNDMsMTYgKzQzLDE2IEBA
IGNsYXNzIExvZ2dlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDRE1JbnN0YW5jZVNl
c3Npb25DbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uQ2xp
ZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50KCkg
PSBkZWZhdWx0OwogCiAgICAgdXNpbmcgS2V5U3RhdHVzID0gQ0RNS2V5U3RhdHVzOwotICAgIHVz
aW5nIEtleVN0YXR1c1ZlY3RvciA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4s
IEtleVN0YXR1cz4+OworICAgIHVzaW5nIEtleVN0YXR1c1ZlY3RvciA9IFZlY3RvcjxzdGQ6OnBh
aXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBLZXlTdGF0dXM+PjsKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
bWVzc2FnZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlw
ZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB1c2luZyBQ
bGF0Zm9ybURpc3BsYXlJRCA9IHVpbnQzMl90OwogICAgIHZpcnR1YWwgUGxhdGZvcm1EaXNwbGF5
SUQgZGlzcGxheUlEKCkgPSAwOwpAQCAtNzgsMTMgKzc4LDEzIEBAIHB1YmxpYzoKICAgICAgICAg
U3VjY2VlZGVkLAogICAgIH07CiAKLSAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgU3VjY2Vzc1ZhbHVlIHN1
Y2NlZWRlZCk+OwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwg
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXRE
YXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgPSAwOworICAgIHVzaW5nIExpY2Vuc2VDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlv
biwgU3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+OworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpID0gMDsK
IAogICAgIHVzaW5nIEtleVN0YXR1c1ZlY3RvciA9IENETUluc3RhbmNlU2Vzc2lvbkNsaWVudDo6
S2V5U3RhdHVzVmVjdG9yOwotICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjpwYWlyPE1l
c3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAgIHVzaW5nIExpY2Vu
c2VVcGRhdGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzZXNzaW9uV2Fz
Q2xvc2VkLCBzdGQ6Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgc3Rk
OjpvcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIHN0ZDo6b3B0aW9uYWw8TWVz
c2FnZT4mJiBtZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExp
Y2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9IDA7CiAKICAgICBlbnVtIGNsYXNzIFNlc3Npb25Mb2Fk
RmFpbHVyZSA6IHVpbnQ4X3QgewogICAgICAgICBOb25lLApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1
YmxpYzoKICAgICB1c2luZyBDbG9zZVNlc3Npb25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT47CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgPSAwOwogCi0gICAgdXNpbmcgUmVtb3Zl
U2Vzc2lvbkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVj
dG9yJiYsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYsIFN1Y2Nlc3NWYWx1ZSk+
OworICAgIHVzaW5nIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEtleVN0YXR1c1ZlY3RvciYmLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4mJiwgU3VjY2Vzc1ZhbHVlKT47CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVNl
c3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vz
c2lvbkRhdGFDYWxsYmFjayYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVSZWNvcmRP
ZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKaW5kZXggY2M2ZGM3
ZjE0MGNkNjdkMmI3Yjg0ZjZhYjJjMjg0MzE2ZGZkZGNjZi4uNTJhNjE0OGM4M2NkNTM5M2M4Zjg3
NGVkODVhZDhiZjI3ZTViZTUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaApAQCAtNzMsOCArNzMsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Qg
PSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShj
b25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNv
bnN0IFN0cmluZyYpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCmluZGV4IGYyMThmOTc5
MDRmYmJhNDlmMWViZGY0OGUyMDVmZTczZGZhZmI2NDguLjRiYTc1YmYwMGQ5ZjcxM2I1YWZiYmE3
OTM0MDE5NzE2Y2Q4ZjAzODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCBDRE1JbnN0YW5j
ZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBLZXlTdG9yZTo6Y29udmVydFRvSlNLZXlTdGF0dXNW
ZWN0b3IoKSBjb25zdAogICAgIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIGtl
eVN0YXR1c1ZlY3RvcjsKICAgICBrZXlTdGF0dXNWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShudW1LZXlzKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYga2V5IDogbV9rZXlzKQotICAgICAg
ICBrZXlTdGF0dXNWZWN0b3IudW5jaGVja2VkQXBwZW5kKHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVm
ZmVyPiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXM+IHsga2V5LT5pZEFzU2hhcmVkQnVm
ZmVyKCksIGtleS0+c3RhdHVzKCkgfSk7CisgICAgICAgIGtleVN0YXR1c1ZlY3Rvci51bmNoZWNr
ZWRBcHBlbmQoc3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpLZXlTdGF0dXM+IHsga2V5LT5pZEFzU2hhcmVkQnVmZmVyKCksIGtleS0+c3Rh
dHVzKCkgfSk7CiAgICAgcmV0dXJuIGtleVN0YXR1c1ZlY3RvcjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKaW5kZXggYTU4NGI2
Y2QyNjZiMDk4MDkwMjU0ZDdkY2JkZGJmNjBkOTMzMWZiYi4uZTFlMDk4YTFkNWY1ZmZjNjVjMmE0
OGZhNDBhYTk3MmZlODllMWUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEtleUhhbmRsZShzdGF0dXMsIFdURk1vdmUo
a2V5SUQpLCBXVEZNb3ZlKGtleUhhbmRsZVZhbHVlKSkpOwogICAgIH0KLSAgICBSZWY8U2hhcmVk
QnVmZmVyPiBpZEFzU2hhcmVkQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUobV9pZC5kYXRhKCksIG1faWQuc2l6ZSgpKTsgfQorICAgIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBpZEFzU2hhcmVkQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUobV9pZC5kYXRhKCksIG1faWQuc2l6ZSgpKTsgfQogCiAgICAgYm9vbCB0YWtlVmFs
dWVJZkRpZmZlcmVudChLZXlIYW5kbGVWYWx1ZVZhcmlhbnQmJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCmlu
ZGV4IDViZWJjYjQ5YWE4ZWI5YTJiYjA3MTFlYWUwODBmMzc3ZTIyYjk4MzQuLmZjYTZmMjM4OGE1
NmE2YTFjNzI0NzBlNWE0NmZkZDI4ZjA3Mzc1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcApAQCAtMzgsNyAr
MzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBDRE1VdGlsaXRpZXMgewog
Ci1SZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEZhaWwgb24gbGFyZ2UgYnVm
ZmVycyB3aG9zZSBzaXplIGRvZXNuJ3QgZml0IGludG8gYSAzMi1iaXQgdW5zaWduZWQgaW50ZWdl
ci4KICAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci5zaXplKCk7CkBAIC00Niw3ICs0Niw3IEBAIFJl
ZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVy
IGNvbnRlbnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0g
ICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6
ZSkgfTsKKyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046
OlZhbHVlOjpwYXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmgKaW5kZXgg
NzRmNTE1YjBiZDJhODcxNjhlZWYyNGIxOGY5NWRlYWJlZTgyOGU2Yy4uZmNmNWJkZGE3YzU5N2Qz
YzNhYzM0OWVlMTc4OWU0YWQ2ZTBjOTU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmgKQEAgLTM1LDExICszNSwxMSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBDRE1VdGlsaXRpZXMgewogCi1SZWZQ
dHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJik7CitS
ZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpOwogCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggZGQz
NDU3YmZkZThjOTIxODc3ZGQ3Yjk4MmU5OTIxZmNjMGZlZDJlZC4uMzFhOWZkZmEwMmQ2ZDAwY2Ey
NjE4MjUyZGVkOTM1MzEzZGM1OGFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApA
QCAtMTMwLDcgKzEzMCw3IEBAIHN0YXRpYyBib29sIHBhcnNlTGljZW5zZVJlbGVhc2VBY2tub3ds
ZWRnZW1lbnRGb3JtYXQoY29uc3QgSlNPTjo6T2JqZWN0JiByb290KQogLy8gXTsKIAogLy8gVGhp
cyBmdW5jdGlvbiBleHRyYWN0cyB0aGUgS2V5SWRzIGNvdW50IGFuZCB0aGUgbG9jYXRpb24gb2Yg
dGhlIGZpcnN0IEtleUlkIGluIGluaXREYXRhIGJ1ZmZlci4KLXN0YXRpYyBzdGQ6OnBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQs
IHVuc2lnbmVkPiBrZXlJZHNNYXAoMCwgMCk7CiAKQEAgLTEzOCw3ICsxMzgsOCBAQCBzdGF0aWMg
c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNl
bmNJbml0RGF0YShjb25zdAogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEu
c2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICBy
ZXR1cm4ga2V5SWRzTWFwOwogCi0gICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEoKTsKKyAg
ICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogICAgIHVuc2lnbmVk
IGluaXREYXRhU2l6ZSA9IGluaXREYXRhLnNpemUoKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7
CiAgICAgdW5zaWduZWQgcHNzaFNpemUgPSAwOwpAQCAtMTg4LDE1ICsxODksMTUgQEAgc3RhdGlj
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21D
ZW5jSW5pdERhdGEoY29uc3QKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgdGhlIGlu
aXREYXRhIHNoYXJlZEJ1ZmZlciBpcyBhIHZhbGlkIENFTkMgaW5pdERhdGEuCi1zdGF0aWMgYm9v
bCBpc0NlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGljIGJv
b2wgaXNDZW5jSW5pdERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEp
CiB7CiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFj
dEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgcmV0dXJuICgo
a2V5SWRzTWFwLmZpcnN0KSAmJiAoa2V5SWRzTWFwLnNlY29uZCkpOwogfQogCi1zdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZXh0
cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
aW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4ga2V5SWRzID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIAogICAgIHN0ZDo6
cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCA9IGV4dHJhY3RLZXlpZHNMb2NhdGlv
bkZyb21DZW5jSW5pdERhdGEoaW5pdERhdGEpOwogICAgIHVuc2lnbmVkIGtleUlkQ291bnQgPSBr
ZXlJZHNNYXAuZmlyc3Q7CkBAIC0yMDQsOSArMjA1LDEwIEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGlu
aXRECiAKICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIENFTkMgaW5pdERhdGEu
CiAgICAgaWYgKCFrZXlJZENvdW50IHx8ICFpbmRleCkKLSAgICAgICAgcmV0dXJuIGtleUlkczsK
KyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERh
dGEuZGF0YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7
CiAKICAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBr
ZXlJZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKQEAgLTIyNCwxNyArMjI2LDE3IEBA
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwg
V1RGTW92ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRv
SlNPTlN0cmluZygpLnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCks
IGpzb25EYXRhLmxlbmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBl
bmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlk
cy50YWtlKCk7CiB9CiAKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9t
V2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitzdGF0aWMgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZl
cj4ga2V5SWRzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGtleUlkczsKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgV2ViTSBp
bml0RGF0YS4KICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+
IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIGtl
eUlkczsKKyAgICAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiAKICAgICBhdXRvIG9iamVjdCA9
IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBrZXlJZHNBcnJheSA9IEpTT046OkFy
cmF5OjpjcmVhdGUoKTsKQEAgLTI0NSwxMiArMjQ3LDEyIEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5p
dERhCiAgICAgLy8gVGhlIGZvcm1hdCBpcyBhIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZv
bGxvd2luZyBtZW1iZXJzOgogICAgIC8vICJraWRzIgogICAgIC8vIEFuIGFycmF5IG9mIGtleSBJ
RHMuIEVhY2ggZWxlbWVudCBvZiB0aGUgYXJyYXkgaXMgdGhlIGJhc2U2NHVybCBlbmNvZGluZyBv
ZiB0aGUgb2N0ZXQgc2VxdWVuY2UgY29udGFpbmluZyB0aGUga2V5IElEIHZhbHVlLgotICAgIGtl
eUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGluaXREYXRhLmRh
dGEoKSwgaW5pdERhdGEuc2l6ZSgpKSk7CisgICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFz
ZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBp
bml0RGF0YS5zaXplKCkpKTsKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3Zl
KGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3Ry
aW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRh
dGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29u
RGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2Uo
KTsKIH0KIAogQ0RNRmFjdG9yeUNsZWFyS2V5JiBDRE1GYWN0b3J5Q2xlYXJLZXk6OnNpbmdsZXRv
bigpCkBAIC0zODgsNyArMzkwLDcgQEAgYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRz
U2Vzc2lvbnMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZhdGVD
bGVhcktleTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29sIENETVByaXZhdGVDbGVh
cktleTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewogICAgIC8vIFZh
bGlkYXRlIHRoZSBpbml0RGF0YSBidWZmZXIgYXMgYW4gSlNPTiBvYmplY3QgaW4ga2V5aWRzIGNh
c2UuCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwg
ImtleWlkcyIpICYmIENETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KGluaXREYXRhKSkKQEAg
LTQwNSw3ICs0MDcsNyBAQCBib29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0RGF0
YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlQ2xlYXJLZXk6OnNhbml0aXpl
UmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlQ2xlYXJLZXk6OnNhbml0aXplUmVzcG9uc2Uo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgLy8g
VmFsaWRhdGUgdGhlIHJlc3BvbnNlIGJ1ZmZlciBhcyBhbiBKU09OIG9iamVjdC4KICAgICBpZiAo
IUNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KHJlc3BvbnNlKSkKQEAgLTQzMSw3ICs0MzMs
NyBAQCB2b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlv
bihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cgogICAgIGNhbGxiYWNrKHN1Y2NlZWRlZCk7CiB9
CiAKLXZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3Rh
bmNlQ2xlYXJLZXk6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICAvLyBSZWplY3Qgc2V0
dGluZyBhbnkgc2VydmVyIGNlcnRpZmljYXRlLgogICAgIGNhbGxiYWNrKEZhaWxlZCk7CkBAIC00
NTMsNyArNDU1LDcgQEAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gQ0RNSW5zdGFuY2VDbGVh
cktleTo6Y3JlYXRlU2Vzc2lvbigpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDRE1JbnN0YW5j
ZVNlc3Npb25DbGVhcktleSgqdGhpcykpOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkNs
ZWFyS2V5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2sm
JiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFj
aykKIHsKICAgICBzdGF0aWMgdWludDMyX3Qgc19zZXNzaW9uSWRWYWx1ZSA9IDA7CiAgICAgKytz
X3Nlc3Npb25JZFZhbHVlOwpAQCAtNDc1LDcgKzQ3Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5n
JiBpCiAgICAgICAgIH0pOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2sp
Cit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogI2lmIExP
R19ESVNBQkxFRAogICAgIC8vIFdlIG9ubHkgdXNlIHRoZSBzZXNpb24gSUQgZm9yIGRlYnVnIGxv
Z2dpbmcuIFRoZSB2ZXJib3NlIHByZXByb2Nlc3NvciBjaGVja3MgYXJlIGJlY2F1c2UKQEAgLTU2
Niw3ICs1NjgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZW1vdmVTZXNz
aW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZQogICAgIEFTU0VSVChzZXNzaW9u
SWQgPT0gbV9zZXNzaW9uSUQpOwogCiAgICAgYXV0byBkaXNwYXRjaENhbGxiYWNrID0KLSAgICAg
ICAgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sICZjYWxsYmFja10oS2V5U3RhdHVzVmVj
dG9yJiYga2V5U3RhdHVzVmVjdG9yLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYm
IG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZXNzKSB7CisgICAgICAgIFt3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9LCAmY2FsbGJhY2tdKEtleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c1Zl
Y3Rvciwgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYgbWVzc2Fn
ZSwgU3VjY2Vzc1ZhbHVlIHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
CiAgICAgICAgICAgICAgICAgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp3ZWFrVGhpcyB9LCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBrZXlTdGF0dXNWZWN0b3IgPSBXVEZNb3ZlKGtleVN0
YXR1c1ZlY3RvciksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZXNzXSgpIG11dGFi
bGUgewogICAgICAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAtNTc5LDcgKzU4MSw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlbW92ZVNlc3Npb25EYXRhKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlCiAgICAgLy8gQ29uc3RydWN0IHRoZSBLZXlTdGF0
dXNWZWN0b3Igb2JqZWN0LCByZXByZXNlbnRpbmcgcmVsZWFzZWQga2V5cywgYW5kIHRoZSBtZXNz
YWdlIGluIHRoZQogICAgIC8vICdsaWNlbnNlIHJlbGVhc2UnIGZvcm1hdC4KICAgICBLZXlTdGF0
dXNWZWN0b3Iga2V5U3RhdHVzVmVjdG9yID0gbV9rZXlTdG9yZS5hbGxLZXlzQXMoQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpLZXlTdGF0dXM6OlJlbGVhc2VkKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtZXNzYWdlOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlOwog
ICAgIHsKICAgICAgICAgLy8gQ29uc3RydWN0IEpTT04gdGhhdCByZXByZXNlbnRzIHRoZSAnbGlj
ZW5zZSByZWxlYXNlJyBmb3JtYXQsIGNyZWF0aW5nIGEgJ2tpZHMnIGFycmF5CiAgICAgICAgIC8v
IG9mIGJhc2U2NFVSTC1lbmNvZGVkIGtleSBJRHMgZm9yIGFsbCBrZXlzIHRoYXQgd2VyZSBhc3Nv
Y2lhdGVkIHdpdGggdGhpcyBzZXNzaW9uLgpAQCAtNTkzLDE0ICs1OTUsMTQgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIExpY2UKICAgICAgICAgICAgIHJvb3RPYmplY3QtPnNldEFycmF5KCJraWRzIiwg
V1RGTW92ZShhcnJheSkpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gQ29weSB0aGUgSlNPTiBk
YXRhIGludG8gYSBTaGFyZWRCdWZmZXIgb2JqZWN0LgorICAgICAgICAvLyBDb3B5IHRoZSBKU09O
IGRhdGEgaW50byBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgb2JqZWN0LgogICAgICAgICBTdHJp
bmcgbWVzc2FnZVN0cmluZyA9IHJvb3RPYmplY3QtPnRvSlNPTlN0cmluZygpOwogICAgICAgICBD
U3RyaW5nIG1lc3NhZ2VDU3RyaW5nID0gbWVzc2FnZVN0cmluZy51dGY4KCk7CiAgICAgICAgIG1l
c3NhZ2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtZXNzYWdlQ1N0cmluZy5kYXRhKCksIG1lc3Nh
Z2VDU3RyaW5nLmxlbmd0aCgpKTsKICAgICB9CiAKICAgICBtX2tleVN0b3JlLnVucmVmQWxsS2V5
cygpOwotICAgIGRpc3BhdGNoQ2FsbGJhY2soV1RGTW92ZShrZXlTdGF0dXNWZWN0b3IpLCBSZWY8
U2hhcmVkQnVmZmVyPigqbWVzc2FnZSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKKyAgICBk
aXNwYXRjaENhbGxiYWNrKFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+KCptZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwogfQogCiB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29u
c3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCmluZGV4IDljMDc0N2RjMWJkOGU2
N2YzYmE4NjRkOWI4MTEzMzc2MjVjOGE2NzkuLjllMjdmZTkxMmM0ZGEwNjdmYjI2Y2FmYmM3ZjZh
NjUxZGE0NzUyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaApAQCAtODYsOCArODYsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwogICAgIGJvb2wg
c3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBv
cnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikg
Y29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBz
YW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIH07CiAKQEAgLTk5
LDcgKzk5LDcgQEAgcHVibGljOgogICAgIC8vIENETUluc3RhbmNlCiAgICAgSW1wbGVtZW50YXRp
b25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVu
dGF0aW9uVHlwZTo6Q2xlYXJLZXk7IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJh
dGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFs
OwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3Vj
Y2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAg
ICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8Q0RNSW5zdGFu
Y2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CkBAIC0xMDksOCArMTA5LDggQEAgY2xh
c3MgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkgewogcHVibGljOgogICAgIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KENE
TUluc3RhbmNlQ2xlYXJLZXkmIHBhcmVudCkKICAgICAgICAgOiBDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eShwYXJlbnQpIHsgfQotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0
YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25z
dCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0
ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUs
IGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2Fk
U2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNl
c3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJp
bmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Np
b25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxi
YWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9LZXllZEVuY29kZXJHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmlj
L0tleWVkRW5jb2RlckdlbmVyaWMuaAppbmRleCBlOTY4ZTk4NWM3ZWVjZWZlNDM1YWE5MjA1YzQ0
ZGQzNWFlZDhlMGQwLi5lY2Y0ZTA4YzliOTkxYWRlMjczYmQ0NGM2MGJiMTVmZTAxNjM1YjE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuaApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IEtleWVkRW5jb2RlckdlbmVyaWMgZmluYWwgOiBwdWJsaWMgS2V5ZWRFbmNvZGVyIHsKIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVy
R2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIu
Y3BwCmluZGV4IDhhOGMxMGI3MDI0Y2ZlMDM4ZTlmYTdiNzE1YmUyNjg4OWZjMDVlMjguLjkzN2Qx
ZmI2ZjBjOGQ3YjUxZjE4ZmYxNTU2MGIzYjk0YTc0ZjYxYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAtMjYsMTYgKzI2LDE2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
R0J5dGVzKiBieXRlcykKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIoR0J5dGVzKiBieXRlcykKIHsKICAgICBBU1NFUlQoYnl0ZXMpOwogICAgIG1fc2l6ZSA9
IGdfYnl0ZXNfZ2V0X3NpemUoYnl0ZXMpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZShHUmVmUHRyPEdCeXRlcz4oYnl0ZXMpKSB9KTsKIH0KIAotUmVmPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR0J5dGVzKiBieXRlcykKK1JlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoR0J5dGVz
KiBieXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnl0ZXMp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGJ5dGVz
KSk7CiB9CiAKIEdSZWZQdHI8R0J5dGVzPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggOWZjNGVhODJl
YmJjNzdlYWQ5MDEwODU0MzgwODI5ZTE1YmJhYjZmNC4uZGMxZmIxNmVhMGIxOTZjNWQxM2JkNDEx
NGU1MGNjZGNkOWIzN2M5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
aApAQCAtNTksNyArNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGb250Q2FjaGU7
CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBHbHlwaFBhZ2U7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgR2x5cGhEYXRh
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxh
dGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZv
cm1EYXRhLmgKaW5kZXggMzBkZmFhMmQyZjg1YTlmN2NkYTIwMDgyOWRlMTk5YjE0ZTg0YjIxOS4u
ZmJiY2NjNDM2ODQ0NzQ5MDgzY2U4OTFmMzYzZjZjYzQwZjI5NzQ1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaApAQCAtNzQs
NyArNzQsNiBAQCBpbnRlcmZhY2UgSURXcml0ZUZvbnRGYWNlOwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBGb250RGVzY3JpcHRpb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIC8vIFRo
aXMgY2xhc3MgaXMgY29uY2VwdHVhbGx5IGltbXV0YWJsZS4gT25jZSBjcmVhdGVkLCBubyBpbnN0
YW5jZXMgc2hvdWxkIGV2ZXIgY2hhbmdlIChpbiBhbiBvYnNlcnZhYmxlIHdheSkuCiBjbGFzcyBG
b250UGxhdGZvcm1EYXRhIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmNwcAppbmRleCA0YTg1M2ViNjQ5NTNkNGFlNDgzNGY4N2M1NDg3YWNkMzY0YzU3ZDgxLi5lMzJh
MzZjNjA3NjE5MjE2OGM2YTM3OTMxOGY3OGFlMTc4OWM0ODJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBJbWFn
ZTo6aXNQb3N0U2NyaXB0UmVzb3VyY2UoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJM
JiB1cmwpCiB9CiAKIAotRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2U6OnNldERhdGEoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK0VuY29kZWREYXRhU3Rh
dHVzIEltYWdlOjpzZXREYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIG1fZW5jb2RlZEltYWdlRGF0YSA9IFdURk1v
dmUoZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4
IDZhMDgxNjk1N2FhOTNjNDExYTU2Y2Q0YzJiYzIwZGQ2ZDkwNDRkZWMuLjY1NWRmZTczY2ZmNmFk
MWQwNGY0OGJjMjAxOWViYjgwNDE3ZDYxMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuaApAQCAtNzAsNyArNzAsNyBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBj
bGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0
cnVjdCBMZW5ndGg7CiAKIC8vIFRoaXMgY2xhc3MgZ2V0cyBub3RpZmllZCB3aGVuIGFuIGltYWdl
IGNyZWF0ZXMgb3IgZGVzdHJveXMgZGVjb2RlZCBmcmFtZXMgYW5kIHdoZW4gaXQgYWR2YW5jZXMg
YW5pbWF0aW9uIGZyYW1lcy4KQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3QgeyByZXR1cm4gc3RkOjpu
dWxsb3B0OyB9CiAgICAgdmlydHVhbCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29u
c3QgeyByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlOyB9CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCBFbmNvZGVkRGF0YVN0YXR1cyBzZXREYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYg
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIFdFQkNPUkVfRVhQT1JUIEVuY29kZWRE
YXRhU3RhdHVzIHNldERhdGEoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZpcnR1YWwgRW5jb2RlZERhdGFTdGF0dXMgZGF0
YUNoYW5nZWQoYm9vbCAvKmFsbERhdGFSZWNlaXZlZCovKSB7IHJldHVybiBFbmNvZGVkRGF0YVN0
YXR1czo6VW5rbm93bjsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgdXRpKCkgY29uc3QgeyByZXR1
cm4gU3RyaW5nKCk7IH0gLy8gbnVsbCBzdHJpbmcgaWYgdW5rbm93bgpAQCAtMTMzLDggKzEzMyw4
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBk
ZXN0cm95QWxsID0gdHJ1ZSkgPSAwOwogCi0gICAgU2hhcmVkQnVmZmVyKiBkYXRhKCkgeyByZXR1
cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CisgICAgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgpIHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5n
ZXQoKTsgfQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgRGVzdGlu
YXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKTsKIApAQCAtMjA5LDcgKzIwOSw3IEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIENvbG9yKCk7IH0KIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X2VuY29kZWRJbWFnZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1f
ZW5jb2RlZEltYWdlRGF0YTsKICAgICBJbWFnZU9ic2VydmVyKiBtX2ltYWdlT2JzZXJ2ZXI7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPiBtX2FuaW1hdGlvblN0YXJ0VGltZXI7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3Rv
cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3Jl
LmgKaW5kZXggNGRkYjZkZjgzZWNiOGI5Yjc5NTdmNDY2NGUxODRmMDA4MWU4MTAxMS4uZGUzM2Yx
YWY0MTJkYzA4YjJiOTYxYTE5NDk0NWM5Y2M5MGFhNjYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCkBAIC02Niw3ICs2
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBidWZm
ZXIuZ3JvdyhidWZmZXJTaXplKTsKLSAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9waXhlbHMgPSBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVy
KSk7CiAgICAgICAgIG1fcGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNv
bnN0X2Nhc3Q8dWludDhfdCo+KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICAgICAgbV9zaXplID0g
c2l6ZTsKICAgICAgICAgbV9mcmFtZVJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSk7
CkBAIC0yMDYsNyArMjA2LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9z
aXplLmlzRW1wdHkoKSAmJiAhaXNPdmVyU2l6ZShtX3NpemUpKTsKICAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGJ1ZmZlciB7IG90aGVyLm1fcGl4ZWxzLT5kYXRhKCksIG90aGVyLm1fcGl4ZWxzLT5z
aXplKCkgfTsKLSAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpj
cmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9waXhlbHMgPSBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAg
IG1fcGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8dWlu
dDhfdCo+KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICB9CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCBw
cml2YXRlOgogICAgICAgICByZXR1cm4gUGFja2VkQ29sb3I6OkFSR0IgeyByZXN1bHQgfS52YWx1
ZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9waXhl
bHM7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3Bp
eGVsczsKICAgICB1aW50MzJfdCogbV9waXhlbHNQdHIgeyBudWxscHRyIH07CiAgICAgSW50U2l6
ZSBtX3NpemU7CiAgICAgSW50UmVjdCBtX2ZyYW1lUmVjdDsgLy8gVGhpcyB3aWxsIGFsd2F5cyBq
dXN0IGJlIHRoZSBlbnRpcmUgYnVmZmVyIGV4Y2VwdCBmb3IgR0lGIGFuZCBQTkcgZnJhbWVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcApp
bmRleCAwODY5ZTk5YTAwODg2ZjdjZDEyMTg2ZmUzMTYxZGUwNDdmYTUxMzYxLi43YzU0OTQ3ZjRk
ODE0MDg1NTljYzQ1YzRhYzQ5YTE5YjlmYzg2Zjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9p
ZCBJbWFnZURlY29kZXI6OmNsZWFyRmFjdG9yaWVzKCkKIH0KICNlbmRpZgogCi1SZWZQdHI8SW1h
Z2VEZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURl
Y29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBV
TlVTRURfUEFSQU0obWltZVR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRGVjb2Rlci5oCmluZGV4IGExYTA4YWRjMTc1ZDQ0YmFhNDQyZTQ0YTk0YWE5
NjdhMDRmNWY2MDcuLjZhOGZmY2I2MGZjMTE1NmViODQ4NzZkZWZiMDdjYmMwYjExOTg0OTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCkBA
IC0zNywxMiArMzcsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbWFnZURlY29k
ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VEZWNvZGVyPiB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURl
Y29kZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8
SW1hZ2VEZWNvZGVyPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAg
ICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCiAgICAgZW51bSBjbGFzcyBN
ZWRpYVR5cGUgewpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogICAgIHVzaW5nIFN1cHBvcnRzTWVkaWFUeXBlRnVuYyA9IEZ1bmN0aW9uPGJvb2woTWVk
aWFUeXBlKT47CiAgICAgdXNpbmcgQ2FuRGVjb2RlVHlwZUZ1bmMgPSBGdW5jdGlvbjxib29sKGNv
bnN0IFN0cmluZyYpPjsKLSAgICB1c2luZyBDcmVhdGVJbWFnZURlY29kZXJGdW5jID0gRnVuY3Rp
b248UmVmUHRyPEltYWdlRGVjb2Rlcj4oU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKT47CisgICAgdXNpbmcgQ3JlYXRl
SW1hZ2VEZWNvZGVyRnVuYyA9IEZ1bmN0aW9uPFJlZlB0cjxJbWFnZURlY29kZXI+KEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pPjsKIAogICAgIHN0cnVjdCBJbWFnZURlY29kZXJGYWN0b3J5IHsKICAg
ICAgICAgU3VwcG9ydHNNZWRpYVR5cGVGdW5jIHN1cHBvcnRzTWVkaWFUeXBlOwpAQCAtMTI5LDcg
KzEyOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNv
ZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEV4cGVj
dGVkQ29udGVudFNpemUobG9uZyBsb25nKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgPSAwOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXgg
ZDgxYzQ4MDE5Mjg0NmRkN2UzMjFjMmRmYmZiZjFlMGMyMGRhYTY3MS4uMzA3NzQzMzE1YTQxZWNh
MWM5YjJiYzc3M2QwNzllZTVkNDNiYWY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtNzIsNyArNzIsNyBAQCBJbWFnZVNvdXJj
ZTo6fkltYWdlU291cmNlKCkKICAgICBBU1NFUlQoJm1fcnVuTG9vcCA9PSAmUnVuTG9vcDo6Y3Vy
cmVudCgpKTsKIH0KIAotYm9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShT
aGFyZWRCdWZmZXIqIGRhdGEpCitib29sIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZhaWxh
YmxlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKCFkYXRhIHx8IGlz
RGVjb2RlckF2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk2LDcgKzk2LDcg
QEAgYm9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShTaGFyZWRCdWZmZXIq
IGRhdGEpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEo
U2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VTb3Vy
Y2U6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiB7CiAgICAgaWYgKCFkYXRhIHx8ICFlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKGRhdGEp
KQogICAgICAgICByZXR1cm47CkBAIC0xMDQsMTMgKzEwNCwxMyBAQCB2b2lkIEltYWdlU291cmNl
OjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAg
bV9kZWNvZGVyLT5zZXREYXRhKCpkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCi12b2lkIElt
YWdlU291cmNlOjpyZXNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBJbWFnZVNvdXJj
ZTo6cmVzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgbV9kZWNv
ZGVyID0gbnVsbHB0cjsKICAgICBzZXREYXRhKGRhdGEsIGlzQWxsRGF0YVJlY2VpdmVkKCkpOwog
fQogCi1FbmNvZGVkRGF0YVN0YXR1cyBJbWFnZVNvdXJjZTo6ZGF0YUNoYW5nZWQoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK0VuY29kZWREYXRhU3RhdHVzIEltYWdl
U291cmNlOjpkYXRhQ2hhbmdlZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKIHsKICAgICBzZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiAg
ICAgY2xlYXJNZXRhZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmgKaW5kZXggOGFmNTA4MGEwMGE5OTE2MDgwZjFmMGIyNzcwNzNjMmE4NTM0
NTI1OC4uODE0ZjBlMTJlYmFhNDhmODZhY2I1MjE5NzNjMzFkNWQzODJmNmZiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0zOSw3ICsz
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJpdG1hcEltYWdlOwogY2xhc3MgR3Jh
cGhpY3NDb250ZXh0OwogY2xhc3MgSW1hZ2VEZWNvZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSW1hZ2VTb3VyY2UgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VTb3VyY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8SW1hZ2VTb3VyY2U+IHsKICAgICBmcmllbmQgY2xhc3MgQml0bWFwSW1hZ2U7CkBAIC01Niw5
ICs1Niw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VTb3Vy
Y2UoV1RGTW92ZShuYXRpdmVJbWFnZSkpKTsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEoU2hh
cmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgdm9pZCByZXNldERh
dGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKLSAgICBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdl
ZChTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2b2lkIHNl
dERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
OworICAgIHZvaWQgcmVzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpOworICAg
IEVuY29kZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2VkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCk7
CiAKICAgICB1bnNpZ25lZCBkZWNvZGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlZFNp
emU7IH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CiAgICAgVCBmaXJzdEZyYW1lTWV0YWRhdGFDYWNoZUlmTmVlZGVkKFQmIGNhY2hlZFZhbHVl
LCBNZXRhZGF0YVR5cGUsIFQgKEltYWdlRnJhbWU6OipmdW5jdG9yKSgpIGNvbnN0LCBJbWFnZUZy
YW1lOjpDYWNoaW5nLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiA9IHsg
fSk7CiAKLSAgICBib29sIGVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRh
KTsKKyAgICBib29sIGVuc3VyZURlY29kZXJBdmFpbGFibGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogZGF0YSk7CiAgICAgYm9vbCBpc0RlY29kZXJBdmFpbGFibGUoKSBjb25zdCB7IHJldHVybiBt
X2RlY29kZXI7IH0KICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShzaXplX3QgZnJhbWVDb3Vu
dCwgc2l6ZV90IGV4Y2x1ZGVGcmFtZSk7CiAgICAgdm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQobG9u
ZyBsb25nIGRlY29kZWRTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01vZGVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01v
ZGVsLmNwcAppbmRleCAzZTU5ZWE5ZDA4ZGQxYzliZWUyM2JhM2Y2MzVjZjM1YmZjMjgyMjkyLi41
NzdiZDUwOGE1YzQwOWY0YmU5ZTRjZjIwMmI4MWU2MWU0NWI0NGFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPFNoYXJlZEJ1
ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorUmVmPE1vZGVsPiBNb2RlbDo6
Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJs
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vZGVsKFdURk1vdmUoZGF0YSksIFdURk1v
dmUobWltZVR5cGUpLCBXVEZNb3ZlKHVybCkpKTsKIH0KIAotTW9kZWw6Ok1vZGVsKFJlZjxTaGFy
ZWRCdWZmZXI+IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK01vZGVsOjpNb2RlbChS
ZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6
IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBl
KSkKICAgICAsIG1fdXJsKFdURk1vdmUodXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Nb2RlbC5oCmluZGV4IDA2NTgxMzM3OWYxMTI1NWQyZDdjN2Y2YjUwMzQ0M2RjNjMwZDA0
ZTEuLmU2YmRlMTY2Zjk0NGNkZTdkYjMyOGMyOTc2ZWM2ODJhZGI2ZDEwMzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vZGVsIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TW9k
ZWw+IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVh
dGUoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0cmluZywgVVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwp
OwogICAgIFdFQkNPUkVfRVhQT1JUIH5Nb2RlbCgpOwogCiAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFJlZlB0cjxNb2RlbD4gZGVjb2Rl
KERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNb2RlbChSZWY8U2hhcmVkQnVm
ZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+
JiYsIFN0cmluZywgVVJMKTsKIAogICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBT
dHJpbmcgbV9taW1lVHlwZTsKQEAgLTYwLDcgKzYwLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KIHZvaWQgTW9kZWw6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVu
Y29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2RhdGEtPnNpemUoKSk7Ci0gICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAx
KTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOwogICAgIGVuY29kZXIgPDwgbV9taW1l
VHlwZTsKICAgICBlbmNvZGVyIDw8IG1fdXJsOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIu
aAppbmRleCA3NDU5YzU4NThkMjQ4N2VmMmM1ZmQzNzE3Mzk4NmIzMzczNGVjMjhhLi44ODY5MWRj
MjU2ZDZkZDZjNDVmNDZlMDE1NDk2NzQyNDVhYTM1MzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXIuaApAQCAtNTEsOCArNTEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZGly
ZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVz
b3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9u
c2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0
dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJikgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgLy8gVGhp
cyBtZXRob2Qgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB1
c2VzIFNoYXJlZEJ1ZmZlci4KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSB7IFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgYmUgcmVt
b3ZlZCBvbmNlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHVzZXMgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlci4KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYgcGxhdGZvcm0sIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgZGF0YVJlY2Vp
dmVkKHBsYXRmb3JtLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2FkRmFp
bGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IGM2MTEyZTExOTRj
N2M5OTBmZGMxMTRlODI5Y2ZkYjVjNmFmNzU0YTkuLjhiMDRmOWJlOTZjMzZlMGEyNjIxODBhMjVl
YTM3NDU5NjJiM2Q3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5n
LmNwcApAQCAtODYsMTIgKzg2LDEyIEBAIGNvbnN0IEF0b21TdHJpbmcmIENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6c2tkTmFtZSgpCiAgICAgcmV0dXJuIHNrZDsKIH0KIAotc3RhdGljIFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQorc3RhdGljIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGV4
dHJhY3RTaW5mRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgLy8gSlNPTiBvZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJp
bmc+IF0gfSIKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBTdHJpbmcganNvbiB7IGJ1
ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAg
IFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6
VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA1LDcgKzEwNSw3
IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoIXNpbmZBcnJheSkKICAgICAgICAgcmV0
dXJuIHsgfTsKIAotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gc2luZnM7CisgICAgVmVj
dG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gc2luZnM7CiAgICAgc2luZnMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShzaW5mQXJyYXktPmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYg
dmFsdWUgOiAqc2luZkFycmF5KSB7CkBAIC0xMjQsNyArMTI0LDcgQEAgc3RhdGljIFZlY3RvcjxS
ZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogfQogCiB1c2luZyBTY2hlbWVBbmRLZXlSZXN1bHQgPSBWZWN0b3I8c3RkOjpwYWlyPEZv
dXJDQywgVmVjdG9yPHVpbnQ4X3Q+Pj47Ci1zdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJh
Y3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3Rh
dGljIFNjaGVtZUFuZEtleVJlc3VsdCBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBidWZmZXJzID0g
ZXh0cmFjdFNpbmZEYXRhKGJ1ZmZlcik7CiAgICAgaWYgKCFidWZmZXJzLnNpemUoKSkKQEAgLTE3
MCw5ICsxNzAsOSBAQCBzdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRL
ZXlJZEZyb21TaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZgogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2luZihjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
IGtleUlEczsKICAgICBhdXRvIHJlc3VsdHMgPSBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2lu
ZihidWZmZXIpOwogCiAgICAgZm9yIChhdXRvJiByZXN1bHQgOiByZXN1bHRzKSB7CkBAIC0xODMs
NyArMTgzLDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXkKICAgICByZXR1cm4ga2V5SURzOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNh
bml0aXplU2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gQ29tbW9uIFNJ
TkYgQm94IEZvcm1hdAogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMTkxLDE3ICsxOTEs
MTcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpz
YW5pdGl6ZVNpbmYoY29uc3QgU2hhcmVkQnVmZmUKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpz
YW5pdGl6ZVNrZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2tkKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBVTlVTRURfUEFSQU0o
YnVmZmVyKTsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBidWZmZXIuY29weSgp
OwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSW4gdGhlICdza2QnIHNj
aGVtZSwgdGhlIGluaXQgZGF0YSBpcyB0aGUga2V5IElELgotICAgIFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
IGtleUlEczsKICAgICBrZXlJRHMuYXBwZW5kKGJ1ZmZlci5jb3B5KCkpOwogICAgIHJldHVybiBr
ZXlJRHM7CiB9CkBAIC0zOTMsNyArMzkzLDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc6OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNv
bnN0Citib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGluaXREYXRhKSBjb25zdAogewogICAgIGlmICghdmFsaWRJbml0RGF0YVR5cGVzKCkuY29u
dGFpbnMoaW5pdERhdGFUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDIzLDcgKzQy
Myw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXpl
UmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXpl
UmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmgKaW5kZXggYmM5M2Y2ZjZhN2JkZDAxZWZiZjU1YjYyYmRiNmE0ZTY2ZWY5
MTJiMy4uMzE3YmI4ZDU3ZTg2YzA2MjE0ZTBiNDA1OWRkZjRmODgwN2M3NGM2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKQEAgLTcxLDE3ICs3MSwxNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgc3Vw
cG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBv
cnRzU2Vzc2lvbnMoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVm
ZmVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBzaW5mTmFtZSgpOwotICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJ
RHNTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZVNpbmYoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJ
RHNTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplU2luZihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJik7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc2tkTmFtZSgpOwot
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJh
Y3RLZXlJRHNTa2QoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHNhbml0aXplU2tkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0
S2V5SURzU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplU2tkKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKTsKIAogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8Rm91ckNDPiYgdmFsaWRG
YWlyUGxheVN0cmVhbWluZ1NjaGVtZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5kZXgg
MTU5YjkwY2RiNDhmN2ZlNDRiYjQ5YmUyZWMxYzFjMmY0MzI4NjQwMC4uNTZiNThjMjVhMjg3MDlm
YjM4MjIxODM5ZTU1YmFlNDVlZDkzY2Y2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBAIC04
NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRp
b25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpGYWlyUGxh
eVN0cmVhbWluZzsgfQogCiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVy
cywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2
b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBz
ZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFJlZlB0cjxDRE1J
bnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKICAgICB2b2lkIHNldENsaWVu
dChXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50PiYmKSBmaW5hbDsKQEAgLTk0LDEwICs5NCwxMCBA
QCBwdWJsaWM6CiAKICAgICBOU1VSTCAqc3RvcmFnZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rv
cmFnZVVSTC5nZXQoKTsgfQogICAgIGJvb2wgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dlZDsgfQotICAgIFNoYXJlZEJ1ZmZlciog
c2VydmVyQ2VydGlmaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlckNlcnRpZmljYXRlLmdl
dCgpOyB9CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2VydmVyQ2VydGlmaWNhdGUoKSBj
b25zdCB7IHJldHVybiBtX3NlcnZlckNlcnRpZmljYXRlLmdldCgpOyB9CiAgICAgQVZDb250ZW50
S2V5U2Vzc2lvbiogY29udGVudEtleVNlc3Npb24oKTsKIAotICAgIFJldGFpblB0cjxBVkNvbnRl
bnRLZXlSZXF1ZXN0PiB0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRh
dGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBTaGFyZWRCdWZmZXImIGluaXREYXRh
KTsKKyAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gdGFrZVVuZXhwZWN0ZWRLZXlS
ZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpOwogCiAgICAgLy8gQVZDb250ZW50
S2V5U2Vzc2lvbkRlbGVnYXRlQ2xpZW50CiAgICAgdm9pZCBkaWRQcm92aWRlUmVxdWVzdChBVkNv
bnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7CkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogICAg
IHZvaWQgb3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNo
YW5nZWQoYm9vbCkgZmluYWw7CiAgICAgdm9pZCBleHRlcm5hbFByb3RlY3Rpb25TdGF0dXNEaWRD
aGFuZ2VGb3JDb250ZW50S2V5UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7CiAK
LSAgICB1c2luZyBLZXlzID0gVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBL
ZXlzID0gVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yS2V5SURzKGNvbnN0
IEtleXMmKSBjb25zdDsKICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMqIHNlc3Npb25Gb3JHcm91cChBVkNvbnRlbnRLZXlSZXBvcnRHcm91cCopIGNvbnN0Owog
ICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZv
clJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCopIGNvbnN0OwpAQCAtMTI5LDcgKzEyOSw3IEBA
IHByaXZhdGU6CiAgICAgV2Vha1B0cjxDRE1JbnN0YW5jZUNsaWVudD4gbV9jbGllbnQ7CiAgICAg
UmV0YWluUHRyPEFWQ29udGVudEtleVNlc3Npb24+IG1fc2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8
V2ViQ29yZUZQU0NvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGU+IG1fZGVsZWdhdGU7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZTsKICAgICBib29sIG1fcGVyc2lz
dGVudFN0YXRlQWxsb3dlZCB7IHRydWUgfTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IG1fc3RvcmFn
ZVVSTDsKICAgICBWZWN0b3I8V2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM+PiBtX3Nlc3Npb25zOwpAQCAtMTUwLDggKzE1MCw4IEBAIHB1YmxpYzoKICNl
bmRpZgogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uCi0gICAgdm9pZCByZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFs
OworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5h
bDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VT
ZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92
ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmlu
ZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMuLmJhNTA2MWViYjVj
NWZiZTA3NGQzYTI5ZGVhNGY5MThmYzI2MjFjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1t
CkBAIC0yMTcsNyArMjE3LDcgQEAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKICAg
ICByZXR1cm4gQXRvbVN0cmluZyhuc0luaXRUeXBlKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGluaXRpYWxpemF0aW9uRGF0YUZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCog
cmVxdWVzdCkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdGlhbGl6YXRp
b25EYXRhRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIGlm
ICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CkBAIC0y
NjUsNyArMjY1LDcgQEAgQVZDb250ZW50S2V5U2Vzc2lvbiogQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmNvbnRlbnRLZXlTZXNzaW9uKCkKICAgICByZXR1cm4gbV9zZXNzaW9u
LmdldCgpOwogfQogCi1SZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRp
YWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZl
ciYgaW5pdERhdGEpCitSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRp
YWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIGZvciAoYXV0byByZXF1ZXN0SXRlciA9IG1f
dW5leHBlY3RlZEtleVJlcXVlc3RzLmJlZ2luKCk7IHJlcXVlc3RJdGVyICE9IG1fdW5leHBlY3Rl
ZEtleVJlcXVlc3RzLmVuZCgpOyArK3JlcXVlc3RJdGVyKSB7CiAgICAgICAgIGF1dG8mIHJlcXVl
c3QgPSAqcmVxdWVzdEl0ZXI7CkBAIC0zMTYsNyArMzE2LDcgQEAgcHJpdmF0ZToKICAgICBSZXNw
b25zZU1hcCBtX3Jlc3BvbnNlczsKIH07CiAKLXN0YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBh
cnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJlZlB0cjxK
U09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIC8vIEZhaWwgb24gbGFyZ2UgYnVmZmVycyB3aG9zZSBzaXplIGRvZXNu
J3QgZml0IGludG8gYSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlci4KICAgICBzaXplX3Qgc2l6ZSA9
IGJ1ZmZlci5zaXplKCk7CkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpW
YWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBK
U09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBqc29u
IHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAgU3Ry
aW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpz
b24pOwogfQpAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LCiAgICAg
Y2FsbGJhY2soaW5pdGlhbGl6ZSgpKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBz
ZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxi
YWNrJiYgY2FsbGJhY2spCiB7CiAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJ
RVIpOwogICAgIG1fc2VydmVyQ2VydGlmaWNhdGUgPSBXVEZNb3ZlKHNlcnZlckNlcnRpZmljYXRl
KTsKQEAgLTU4NSw4ICs1ODUsOCBAQCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMqIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOgogICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgYXV0byBzZXNzaW9uS2V5cyA9IHNlc3Npb25JbnRlcmZh
Y2UtPmtleUlEcygpOwotICAgICAgICBpZiAoYW55T2Yoc2Vzc2lvbktleXMsIFsmXShjb25zdCBS
ZWY8U2hhcmVkQnVmZmVyPiYgc2Vzc2lvbktleSkgewotICAgICAgICAgICAgcmV0dXJuIGtleUlE
cy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBrZXlJRCkgeworICAg
ICAgICBpZiAoYW55T2Yoc2Vzc2lvbktleXMsIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mIHNlc3Npb25LZXkpIHsKKyAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1h
dGNoaW5nKFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGtleUlEKSB7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGtleUlELmdldCgpID09IHNlc3Npb25LZXkuZ2V0KCk7CiAg
ICAgICAgICAgICB9KSAhPSBub3RGb3VuZDsKICAgICAgICAgfSkpCkBAIC02NzMsNyArNjczLDcg
QEAgS2V5cyBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleUlE
cygpCiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VU
eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
IGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKICAgICBpZiAoIWlzTGljZW5zZVR5cGVTdXBwb3J0ZWQobGljZW5zZVR5cGUpKSB7CiAgICAg
ICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiIGZhbHNlLCBsaWNlbnNl
VHlwZSBcIiIsIGxpY2Vuc2VUeXBlLCAiXCIgbm90IHN1cHBvcnRlZCIpOwpAQCAtNzA5LDEyICs3
MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBp
bml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRh
ID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEg
PSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxzZSBp
ZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgp
KQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0
aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxs
b2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZBSVJQ
TEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09
IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3RyaW5n
ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNpemUo
KSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGluaXRE
YXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOwogICAgICAg
ICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05P
YmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pTT05X
cml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzM2LDcg
KzczNiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlCiAgICAgfQogfQogCi1zdGF0aWMgYm9v
bCBpc0VxdWFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
K3N0YXRpYyBib29sIGlzRXF1YWwoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gZGF0YS50cnlD
cmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGlmICghYXJyYXlCdWZmZXIpCkBAIC03NTQsNyArNzU0
LDcgQEAgc3RhdGljIGJvb2wgaXNFcXVhbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IFN0cmluZyYgdmFsdWUpCiAgICAgcmV0dXJuIHN0cmluZ09yRXhjZXB0aW9uLnJldHVyblZhbHVl
KCkgPT0gdmFsdWU7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKICAgICBpZiAoIW1fZXhwaXJlZFNlc3Npb25zLmlzRW1wdHkoKSAmJiBpc0VxdWFs
KHJlc3BvbnNlRGF0YSwgImFja25vd2xlZGdlZCJfcykpIHsKICAgICAgICAgYXV0byogY2VydGlm
aWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpOwpAQCAtNzcwLDcgKzc3MCw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Npb25z
ID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsKICAg
ICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAgICAgICB9KTsKLSAgICAgICAgYXV0byBh
cHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRv
IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJlbW92
ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdpdGhB
cHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0
b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODU2LDcgKzg1Niw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICBhdXRvIGtleUlEID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqa2V5SURWZWN0b3IpKTsKICAgICAgICAgICAgIGF1
dG8gZm91bmRJbmRleCA9IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maW5kTWF0
Y2hpbmcoWyZdIChhdXRvJiByZXF1ZXN0KSB7CiAgICAgICAgICAgICAgICAgYXV0byBrZXlJRHMg
PSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwotICAgICAgICAgICAgICAgIHJldHVy
biBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgaWQpIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBpZCkgewogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gaWQuZ2V0KCkgPT0ga2V5SUQuZ2V0KCk7CiAgICAgICAgICAgICAgICAgfSkgIT0gbm90Rm91
bmQ7CiAgICAgICAgICAgICB9KTsKQEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmLCBMaQogICAgICAgICAgICAgICAgIGlmICghcGF5bG9hZFZlY3RvcikKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZERhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0gICAgICAg
ICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNv
bnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3Ry
ZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1d
OworICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BB
TDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhG
YWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYsIExpCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBERUJVR19MT0df
SUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2luZyBy
ZXNwb25zZSIpOwotICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZp
cnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNw
b25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVz
cG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAgICAg
W21fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250ZW50
S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRL
ZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURh
dGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQogCiAg
ICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sg
YW5kIGNhbGwgaXQgb25jZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3Mg
Y2FsbGJhY2suCkBAIC05MzQsNyArOTM0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+
IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIFJl
dGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5
czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRB
VkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0
aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6
c3RvcmFnZVVSTF0pIHsKICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJh
Y2tTZXNzaW9uSWRLZXkgPSBAIlBsYXliYWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5OTksNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3Zl
U2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRl
LT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmll
ciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNWZWN0
b3IgY2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEg
aW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNz
aW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURp
cmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVl
c3QoQVZDb250ZW50S2V5UgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsK
ICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0
ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgp
OworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogCiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJl
cXVlc3QpOwogICAgIGlmIChrZXlJRHMuaXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEwOTcsNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJv
dmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
UmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBr
ZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRy
eSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFG
b3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRp
Zmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vy
cm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
LCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciks
IGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEp
XSB7CkBAIC0xMTUzLDkgKzExNTMsOSBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogCiAgICAg
UmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNh
dGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlm
aWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVy
ID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCi0gICAg
dXNpbmcgUmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVy
PiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKKyAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8
c3RkOjpwYWlyPFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0
YT4+PjsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewogICAgICAgICB1c2luZyBDYWxs
YmFja0Z1bmN0aW9uID0gRnVuY3Rpb248dm9pZChSZXF1ZXN0c0RhdGEmJik+OwogICAgICAgICBz
dGF0aWMgUmVmUHRyPENhbGxiYWNrQWdncmVnYXRvcj4gY3JlYXRlKENhbGxiYWNrRnVuY3Rpb24m
JiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTExOTYsNyArMTE5Niw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVj
dG9yPFJldGFpCiAgICAgICAgICAgICBhdXRvIGVudHJ5ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUo
KTsKICAgICAgICAgICAgIGF1dG8mIGtleUlEID0gcmVxdWVzdERhdGEuZmlyc3Q7CiAgICAgICAg
ICAgICBhdXRvJiBwYXlsb2FkID0gcmVxdWVzdERhdGEuc2Vjb25kOwotICAgICAgICAgICAgZW50
cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+ZGF0YSgp
LCBrZXlJRC0+c2l6ZSgpKSk7CisgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIs
IGJhc2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGtl
eUlELT5zaXplKCkpKTsKICAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoInBheWxvYWQiLCBi
YXNlNjRFbmNvZGVUb1N0cmluZyhwYXlsb2FkLmdldCgpLmJ5dGVzLCBwYXlsb2FkLmdldCgpLmxl
bmd0aCkpOwogICAgICAgICAgICAgcmVxdWVzdEpTT04tPnB1c2hPYmplY3QoV1RGTW92ZShlbnRy
eSkpOwogICAgICAgICB9CkBAIC0xMjExLDggKzEyMTEsOCBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxS
ZXRhaQogICAgIEB0cnkgewogICAgICAgICBmb3IgKGF1dG8gcmVxdWVzdCA6IG1fY3VycmVudFJl
cXVlc3QudmFsdWUoKS5yZXF1ZXN0cykgewogICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJ
RHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKLSAgICAgICAgICAgIGF1dG8g
Y29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgICAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJz
dCgpKTsKKyAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3Ry
ZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29u
dGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxl
dGlvbkhhbmRsZXI6W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEg
KmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAg
ICAgICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAgICAgICAgICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdn
cmVnYXRvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVx
dWVzdERhdGEpXSAoKSBtdXRhYmxlIHsKQEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2lu
Z1JlcXVlc3QoQVZDb24KIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAg
ICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUo
KSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsK
KyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKTsKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJy
ZW50UmVxdWVzdC52YWx1ZSgpKTsKIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVu
dGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0cjxO
U0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtlU3Ry
ZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29u
dGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxl
dGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0RhdGEg
KmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlz
KSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRh
aW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDAzMzRkNjIzYjJhNzYwNWM5YmUxMjIxM2I1YWJk
YmJhYzJiMDNmMTUuLjYyYjgzZmJmZDU3OTQwNTBlYmM5NDA2MzcwNDkwYmEyYjNlYzA4NzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKQEAgLTUzLDcg
KzUzLDcgQEAgY2xhc3MgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOwogCiBjbGFzcyBJbWFn
ZURlY29kZXJBVkZPYmpDIDogcHVibGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBjcmVhdGUoU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPElt
YWdlRGVjb2RlckFWRk9iakM+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KTsKICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXJBVkZPYmpDKCk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgYm9vbCBzdXBwb3J0c01lZGlhVHlwZShNZWRpYVR5cGUpOwpAQCAtODYsNyAr
ODYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1JbWFnZVB0ciBjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGlu
Z0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25z
KERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERh
dGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0K
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZp
bmFsOwogCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0
b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+IGZyYW1lSW5mb3MoKSBjb25zdDsKIAogcHJpdmF0
ZToKLSAgICBJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAg
SW1hZ2VEZWNvZGVyQVZGT2JqQyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAog
ICAgIEFWQXNzZXRUcmFjayAqZmlyc3RFbmFibGVkVHJhY2soKTsKICAgICB2b2lkIHJlYWRTYW1w
bGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpp
bmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNjMTRmNGJmLi4zNWM2Y2U2N2U4
NWY4NmFlMTY0YzIxYTcyNjA3ZmMwNjVlY2I1MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTI4OSw3ICsyODksNyBAQCBJbWFnZURlY29k
ZXJBVkZPYmpDU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRvciBpdGVyKQogCiAjcHJhZ21hIG1hcmsg
LSBJbWFnZURlY29kZXJBVkZPYmpDCiAKLVJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFn
ZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8SW1hZ2VEZWNvZGVyQVZG
T2JqQz4gSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsK
ICAgICAvLyBBVkZvdW5kYXRpb24gbWF5IG5vdCBiZSBhdmFpbGFibGUgYXQgcnVudGltZS4KICAg
ICBpZiAoIUFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKQpA
QCAtMzAxLDcgKzMwMSw3IEBAIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29k
ZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyQVZGT2JqQyhkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRp
b24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiB9CiAKLUltYWdlRGVjb2RlckFWRk9i
akM6OkltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFn
ZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikKICAgICA6IEltYWdlRGVjb2RlcigpCiAgICAgLCBtX21pbWVUeXBl
KG1pbWVUeXBlKQogICAgICwgbV91dGkoV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBl
KSkKQEAgLTMwOSw3ICszMDksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJB
VkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwgbV9s
b2FkZXIoYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRl
IGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25TZXNz
aW9uKFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21f
bG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107
CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNvdXJj
ZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xvYWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xv
YmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBbbV9h
c3NldCBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0
aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUgewpA
QCAtNjQxLDkgKzY0MSw5IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRD
b250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKICAgICBtX2xvYWRlci5n
ZXQoKS5leHBlY3RlZENvbnRlbnRTaXplID0gZXhwZWN0ZWRDb250ZW50U2l6ZTsKIH0KIAotdm9p
ZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21f
bG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxE
YXRhUmVjZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIAog
ICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggMjAwZTFhOGY5YWZiYTBmY2JiYTViMGEz
ZWQ3MDRjZDM0MWI0NTBkNi4uYzlkOWIyYTk2ODViMDFlOTFhYWEwMGMwZTAwMzA3NzM4NTY5MTQy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBJbmJhbmRN
ZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Owog
Y2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7CiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZv
cm1lckNWOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRl
QVZGT2JqQzsKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjsKQEAgLTQyNiw3ICs0MjYs
NyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbV93YWxs
Q2xvY2tBdENhY2hlZEN1cnJlbnRUaW1lOwogICAgIG11dGFibGUgaW50IG1fdGltZUNvbnRyb2xT
dGF0dXNBdENhY2hlZEN1cnJlbnRUaW1lIHsgMCB9OwogICAgIG11dGFibGUgZG91YmxlIG1fcmVx
dWVzdGVkUmF0ZUF0Q2FjaGVkQ3VycmVudFRpbWUgeyAwIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9rZXlJRDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9rZXlJ
RDsKICAgICBkb3VibGUgbV9jYWNoZWRSYXRlIHsgMCB9OwogICAgIGJvb2wgbV9yZXF1ZXN0ZWRQ
bGF5aW5nIHsgZmFsc2UgfTsKICAgICBkb3VibGUgbV9yZXF1ZXN0ZWRSYXRlIHsgMS4wIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBkMThhODVhNzk0ZjUyM2Y5NDkxMmUyN2YwOGI3Y2Ni
ZTg5M2M4ZWQwLi5iMWM2MDc5YzY0ODcwZjg4ZTM1YzgwODExYTViMThiZGExYjdmNjE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTI3OTIsNyArMjc5Miw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShD
RE1JbnN0YW5jCiAgICAgaWYgKCFtX2tleUlEIHx8ICFtX2NkbUluc3RhbmNlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1fY2RtSW5zdGFuY2UtPnNlc3Np
b25Gb3JLZXlJRHMoVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOwor
ICAgIGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlE
cyhWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOwog
ICAgIGlmICghaW5zdGFuY2VTZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IGQ5
NjBhZmRjYTIxNGJmYTQ0MGVlYTIwODgzYmNhOTEzMmUyMmY5YTAuLjRkZDZiOTFhOTQ4MzE2OWEw
MjM2ODg4ZDBlNGQ4MmZmYjgzNjY2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtMjEzLDcgKzIxMyw3IEBAIFNvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKIHZvaWQg
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcHBlbmRGbGFn
cyBmbGFncykKIHsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFrZVNoYXJlZEJ1
ZmZlcigpOwotICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsK
KyAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNSZXNldCB8fCBmbGFncyA9PSBBcHBl
bmRGbGFnczo6RGlzY29udGludWl0eSkKICAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0cmVhbURh
dGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURhdGFQYXJzZXJTdHJlYW1EYXRhRGlz
Y29udGludWl0eV07CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKaW5kZXggMDM0MjBmMTM4MzY0ZmFjMjA5MWUxMDRk
MTM2ZmYzOGExZmI5ZmUyMi4uNzU0YjFlMmVlYzAyZGYzMzk1ZTVjZGI1YzA3ZjhlODhhOTM1Y2Qw
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5oCkBAIC03Myw3ICs3Myw3IEBAIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwogY2xh
c3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFzcyBWaWRlb1RyYWNr
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzsKIGNsYXNzIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vz
c2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQgewogcHVibGlj
OgpAQCAtMjIxLDcgKzIyMSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCiAgICAgUmVmUHRyPENETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPiBtX2NkbUluc3RhbmNlOwotICAgIFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4gbV9rZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4gbV9rZXlJRHM7CiAjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8Rmxv
YXRTaXplPiBtX2NhY2hlZFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYwZDhlNzExMzJmNmMyODdhMmU2MjlhNGI4OGE1
MzlkZmQ1M2NiZTIuLjBlZmVlYWVmNWIyZDcxYmM2ZDY3MDRkZDFiOTc1YWNiYWUxMTNiYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5o
CkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM7CiBjbGFzcyBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZUVy
cm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcik7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwpAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzcG9u
c2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBsb2FkRmFpbGVk
KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZCgpOwotICAgIHZv
aWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQg
bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KTsKIAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50Owog
ICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
bW0KaW5kZXggYTIyYTk5N2IxMTA3OWQ0NjU4NmFhNjQ4NTYxYmJmNzJhNmYyNDdmMC4uZjkyMWYz
ZGEwZTY5YjMzOTk3N2M5ZTNlNDk2NjdhMjhmNWU5NWNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTU2LDE0ICsxNTYs
MTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBmaW5hbCB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9
CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQg
ZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNp
Z25lZCBsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2Fk
RmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9y
KTsgfQogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVkKCk7IH0KIAogICAgIFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVk
aWFSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZl
cjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsKIAogV2Vha1B0cjxQbGF0
Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6Y3Jl
YXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIxMSwxMyAr
MjExLDEwIEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQo
KQogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQogCi12b2lkIFBsYXRmb3JtUmVzb3Vy
Y2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6
OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZm
ZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Ci0gICAgZWxzZQotICAgICAgICBtX2J1ZmZlci0+YXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVm
ZmVyKCptX2J1ZmZlcik7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Cisg
ICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQoKSk7
CiB9CiAKIGNsYXNzIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyIDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyPiB7CkBAIC0zODgsNyArMzg1LDcgQEAg
dm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExv
YWRpbmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9y
ZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFSZXF1
ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYgKCFk
YXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBkYjQ1N2E4MWQz
ZWU4MjkxYjkwNWU5YmE3N2MxZTJhZjMwOWUwY2IyLi45NDE5YmNlYTM4ZGJmOGQ2NDkyZjY4MDFk
OWEyMTU2MjM2NmEyYzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zMSwx
MCArMzEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlv
bkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250UGxhdGZvcm1EYXRh
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0
cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJp
YW50U2V0dGluZ3M7CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9y
bURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogcHVibGljOgotICAgIEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoRlRfRmFjZSwgU2hhcmVkQnVmZmVyJik7CisgICAgRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShGVF9GYWNlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgfkZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoKSA9IGRlZmF1bHQ7CiAgICAgRm9udFBsYXRmb3JtRGF0YSBmb250UGxh
dGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMs
IGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zv
cm1hdChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3ZDRl
OGQzZTQ1ZTJkMDRiZWQzZDUwYzA2Li5iNmQzZWIzNjMxMTI0NDYxM2IzODAzZjJmM2QyNGQzMDg3
ZWEyNGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yNDQsMTYgKzI0NCwxNiBAQCBzaXplX3Qgc2hhcmVk
QnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3Qg
cG9zaXRpb24sCiAKIHZvaWQgc2hhcmVkQnVmZmVyUmVsZWFzZSh2b2lkKiBpbmZvKQogewotICAg
IFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4o
aW5mbyk7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGlj
X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAgIHNoYXJlZEJ1ZmZlci0+
ZGVyZWYoKTsKIH0KICNlbmRpZgogCi1JbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coU2hh
cmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
CitJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBpZiAoZGF0YS5zaXplKCkgPj0gMzIp
Ci0gICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEo
ZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgICAgICB1
dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKICAg
ICAKICAgICBpZiAodXRpSGludCkgewogICAgICAgICBjb25zdCB2b2lkKiBrZXkgPSBrQ0dJbWFn
ZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsKQEAgLTU2MiwyMyArNTYyLDI0IEBAIFBsYXRmb3Jt
SW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpCiAgICAgcmV0dXJuIG1hc2tlZEltYWdlID8gbWFza2VkSW1hZ2UgOiBp
bWFnZTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAg
ICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gYWxsRGF0YVJlY2VpdmVkOwogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIg
Y2FuIGJlIHNlY3JldGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtu
b3dsZWRnZS4KLSAgICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0
c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFn
ZUlPIGlzCi0gICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBD
R0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEuY3JlYXRl
Q0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAgLy8gT24gTWFjIHRoZSBOU0Rh
dGEgaW5zaWRlIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBl
bmRlZCB0byB3aXRob3V0IHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgor
ICAgIC8vIFdlIHVzZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0
c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFn
ZUlPIGlzCisgICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIuCisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBk
YXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2
ZWQpOwogI2Vsc2UKLSAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRoZSBT
aGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKLSAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVz
QXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJl
Y2F1c2UgU2hhcmVkQnVmZmVyCisgICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3Jh
cCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KKyAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0g
ZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNvbnRpZ3VvdXNEYXRhLmdldCgpLnJlZigpOwor
ICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFu
IHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyCiAg
ICAgLy8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRl
ciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gKICAgICAvLyBpcyBhIHJl
cXVpcmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2FsbGJhY2suCiAgICAgQ0dE
YXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAs
IHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9Owot
ICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihD
R0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0YSwgZGF0YS5zaXplKCksICZwcm92aWRlckNh
bGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVy
ID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdChjb250aWd1b3VzRGF0YS5wdHIo
KSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOwogICAgIENHSW1hZ2VTb3VyY2VV
cGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhUHJvdmlkZXIuZ2V0
KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCmluZGV4IDk3NDA3MzZhMjFh
Yzk5OGFiMDVmMWM5YjRmNWIxNjc1ZTQ0ZDJjOTEuLmEwYWMxYzJmYmVlNTI3ZTVhYjExMTQ1NTgx
MmJkYjczNjNhMDU1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApAQCAtMzIsOSArMzIsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBJbWFnZURlY29kZXJDRyBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEltYWdlRGVjb2Rl
ckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKTsKKyAgICBJbWFnZURlY29kZXJDRyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCi0gICAgc3RhdGlj
IFJlZjxJbWFnZURlY29kZXJDRz4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRp
b24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQorICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyQ0c+IGNyZWF0ZShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJDRyhkYXRhLCBhbHBoYU9w
dGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CkBAIC02NCw3ICs2NCw3
IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5
bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxE
YXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9
CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmNwcAppbmRleCAzMWMyN2MwNjliMmIzYzcwMzczMmViNzEzYjI2MzEyODQyMTI0ZTZl
Li5mZjc3YjUzZTlkNjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdl
LmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURl
Y29kZWREYXRhKGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1l
bnQoKQogewotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0g
YWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRh
dGEoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3Zp
ZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBh
ZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgp
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggMzU5ZWRiNDE1
ZmQzNzVlZDgyYjdiNGE0OWYxMWU0YzhmZDZjN2Q2Yi4uZGU2ZGViZTJiZDRjYTEzNjA0MGZjMGMz
YTQ1ZGM0ZWEzOWY0ODlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAg
LTM2NSw5ICszNjUsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjpr
V291bGRCbG9jayk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgRnJlZURhdGFTZWdtZW50KHZv
aWQqIHJlZmNvbiwgdm9pZCosIHNpemVfdCkKKyAgICBzdGF0aWMgdm9pZCBGcmVlU2hhcmVkQnVm
ZmVyKHZvaWQqIHJlZmNvbiwgdm9pZCosIHNpemVfdCkKICAgICB7Ci0gICAgICAgIGF1dG8qIGJ1
ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KHJlZmNv
bik7CisgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2hhcmVkQnVmZmVy
Kj4ocmVmY29uKTsKICAgICAgICAgYnVmZmVyLT5kZXJlZigpOwogICAgIH0KIApAQCAtNDA4LDEx
ICs0MDgsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbGFzdFJlYWQgPSByZWFkUmVzdWx0
LnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25PZmZzZXQgPSAwOwogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoc2hhcmVkQnVmZmVyLT5oYXNP
bmVTZWdtZW50KCksICJDYW4gb25seSBkZWFsIHdpdGggc2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcg
YSBzaW5nbGUgRGF0YVNlZ21lbnQiKTsKLSAgICAgICAgICAgICAgICAvLyBBIFNoYXJlZEJ1ZmZl
ciBkb2Vzbid0IGhhdmUgdGhyZWFkLXNhZmUgcmVmY291bnRpbmcsIGFzIHN1Y2ggd2UgbXVzdCBr
ZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBEYXRhU2VnbWVudCBpbnN0ZWFkLgogICAgICAgICAgICAg
ICAgIC8vIFRPRE86IGNvdWxkIHdlIG9ubHkgY3JlYXRlIGEgbmV3IENNQmxvY2tCdWZmZXIgaWYg
dGhlIGJhY2tlbmQgbWVtb3J5IGNoYW5nZWQgc2luY2UgdGhlIHByZXZpb3VzIG9uZT8KLSAgICAg
ICAgICAgICAgICBhdXRvIGZpcnN0U2VnbWVudCA9IHNoYXJlZEJ1ZmZlci0+YmVnaW4oKS0+c2Vn
bWVudDsKLSAgICAgICAgICAgICAgICBzaXplX3QgY2FuUmVhZCA9IHN0ZDo6bWluPHNpemVfdD4o
bnVtVG9SZWFkLCBmaXJzdFNlZ21lbnQtPnNpemUoKSAtIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50
KTsKKyAgICAgICAgICAgICAgICBzaXplX3QgY2FuUmVhZCA9IHN0ZDo6bWluPHNpemVfdD4obnVt
VG9SZWFkLCBzaGFyZWRCdWZmZXItPnNpemUoKSAtIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KTsK
ICAgICAgICAgICAgICAgICAvLyBGcm9tIENNQmxvY2tCdWZmZXJDdXN0b21CbG9ja1NvdXJjZSBk
b2N1bWVudGF0aW9uOgogICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBmb3IgNjQtYml0IGFy
Y2hpdGVjdHVyZXMsIHRoaXMgc3RydWN0IGNvbnRhaW5zIG1pc2FsaWduZWQgZnVuY3Rpb24gcG9p
bnRlcnMuCiAgICAgICAgICAgICAgICAgLy8gVG8gYXZvaWQgbGluay10aW1lIGlzc3VlcywgaXQg
aXMgcmVjb21tZW5kZWQgdGhhdCBjbGllbnRzIGZpbGwgQ01CbG9ja0J1ZmZlckN1c3RvbUJsb2Nr
U291cmNlJ3MgZnVuY3Rpb24gcG9pbnRlciBmaWVsZHMKQEAgLTQyMCwxMCArNDE3LDEwIEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICBDTUJsb2NrQnVmZmVyQ3VzdG9tQmxvY2tTb3VyY2UgYWxs
b2NhdG9yOwogICAgICAgICAgICAgICAgIGFsbG9jYXRvci52ZXJzaW9uID0gMDsKICAgICAgICAg
ICAgICAgICBhbGxvY2F0b3IuQWxsb2NhdGVCbG9jayA9IG51bGxwdHI7Ci0gICAgICAgICAgICAg
ICAgYWxsb2NhdG9yLkZyZWVCbG9jayA9IEZyZWVEYXRhU2VnbWVudDsKLSAgICAgICAgICAgICAg
ICBhbGxvY2F0b3IucmVmQ29uID0gZmlyc3RTZWdtZW50LnB0cigpOwotICAgICAgICAgICAgICAg
IGZpcnN0U2VnbWVudC0+cmVmKCk7Ci0gICAgICAgICAgICAgICAgYXV0byBlcnIgPSBQQUw6OkNN
QmxvY2tCdWZmZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2sobnVsbHB0ciwgc3RhdGljX2Nhc3Q8dm9p
ZCo+KGNvbnN0X2Nhc3Q8dWludDhfdCo+KGZpcnN0U2VnbWVudC0+ZGF0YSgpKSksIGZpcnN0U2Vn
bWVudC0+c2l6ZSgpLCBudWxscHRyLCAmYWxsb2NhdG9yLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVu
dCwgY2FuUmVhZCwgMCwgJnJhd0Jsb2NrQnVmZmVyKTsKKyAgICAgICAgICAgICAgICBhbGxvY2F0
b3IuRnJlZUJsb2NrID0gRnJlZVNoYXJlZEJ1ZmZlcjsKKyAgICAgICAgICAgICAgICBhbGxvY2F0
b3IucmVmQ29uID0gc2hhcmVkQnVmZmVyLmdldCgpOworICAgICAgICAgICAgICAgIHNoYXJlZEJ1
ZmZlci0+cmVmKCk7CisgICAgICAgICAgICAgICAgYXV0byBlcnIgPSBQQUw6OkNNQmxvY2tCdWZm
ZXJDcmVhdGVXaXRoTWVtb3J5QmxvY2sobnVsbHB0ciwgc3RhdGljX2Nhc3Q8dm9pZCo+KGNvbnN0
X2Nhc3Q8dWludDhfdCo+KHNoYXJlZEJ1ZmZlci0+ZGF0YSgpKSksIHNoYXJlZEJ1ZmZlci0+c2l6
ZSgpLCBudWxscHRyLCAmYWxsb2NhdG9yLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCwgY2FuUmVh
ZCwgMCwgJnJhd0Jsb2NrQnVmZmVyKTsKICAgICAgICAgICAgICAgICBpZiAoZXJyICE9IGtDTUJs
b2NrQnVmZmVyTm9FcnIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVz
OjprTm90RW5vdWdoTWVtb3J5KTsKICAgICAgICAgICAgICAgICBsYXN0UmVhZCA9IGNhblJlYWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IGU4MDUw
OWVjY2EwNWQyY2M4ZWQxMDY2MDcwNDFmNWNjY2MzZTM3OTQuLjYzOGU2ODM5N2EyYjY2OTZiMmYx
ZWRlMjRlYThmZGI5MDYyNmNlZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1CdWZmZXIuY3BwCkBAIC03MjksNyArNzI5LDcgQEAgRGlkQ2hhbmdlSXRlbUJ1ZmZlciBJdGVt
QnVmZmVyOjpzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChzaXplX3QgbnVtYmVyT2ZCeXRlcykK
IHZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgdGVtcG9yYXJ5
SXRlbSkKIHsKICAgICBhdXRvIHJlcXVpcmVkU2l6ZUZvckl0ZW0gPSBtX3dyaXRpbmdDbGllbnQt
PnJlcXVpcmVkU2l6ZUZvckl0ZW0odGVtcG9yYXJ5SXRlbSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gb3V0T2ZMaW5lSXRlbTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
b3V0T2ZMaW5lSXRlbTsKICAgICBpZiAoIXJlcXVpcmVkU2l6ZUZvckl0ZW0pIHsKICAgICAgICAg
b3V0T2ZMaW5lSXRlbSA9IG1fd3JpdGluZ0NsaWVudC0+ZW5jb2RlSXRlbU91dE9mTGluZSh0ZW1w
b3JhcnlJdGVtKTsKICAgICAgICAgaWYgKCFvdXRPZkxpbmVJdGVtKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCmluZGV4IGM4NzMxOTgyZWY4MzkzMWJiYWUzMWI3ODY1
MGFjMGRhMjBhMDVmYzUuLmIzMWJjNWZkNGU5MjE0YjE1YTM3NjFmYmU5OGQ2MGNlYjQ3YTk4ZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKQEAgLTEwMiw3ICsx
MDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0g
ICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0
IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0CisgICAgdmlydHVhbCBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTY4LDcgKzE2
OCw3IEBAIHB1YmxpYzoKICAgICAvLyB3aXRoIHBhZGRpbmcgYmV0d2VlbiBlYWNoIGl0ZW0gdG8g
ZW5zdXJlIHRoYXQgYWxsIGl0ZW1zIGFyZSBhbGlnbmVkIHRvIDggYnl0ZXMuCiAgICAgLy8KICAg
ICAvLyBJZiBhIHdyaXRpbmcgY2xpZW50IGlzIHByZXNlbnQgYW5kIHJlcXVpcmVzIGN1c3RvbSBl
bmNvZGluZyBmb3IgdGhlIGdpdmVuIGl0ZW0gdHlwZSBULCB0aGUKLSAgICAvLyBpdGVtIGJ1ZmZl
ciB3aWxsIGFzayB0aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgU2hhcmVkQnVmZmVyIGNvbnRhaW5p
bmcgZW5jb2RlZCBkYXRhIGZvciB0aGUKKyAgICAvLyBpdGVtIGJ1ZmZlciB3aWxsIGFzayB0aGUg
Y2xpZW50IGZvciBhbiBvcGFxdWUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGVu
Y29kZWQgZGF0YSBmb3IgdGhlCiAgICAgLy8gaXRlbS4gVGhpcyBlbmNvZGVkIGRhdGEgaXMgdGhl
biBhcHBlbmRlZCB0byB0aGUgaXRlbSBidWZmZXIsIHdpdGggcGFkZGluZyB0byBlbnN1cmUgdGhh
dAogICAgIC8vIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoaXMgZGF0YSBhcmUgYWxpZ25lZCB0byA4
IGJ5dGVzLCBpZiBuZWNlc3NhcnkuIFdoZW4gY29uc3VtaW5nIGVuY29kZWQKICAgICAvLyBpdGVt
IGRhdGEsIGEgY29ycmVzcG9uZGluZyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB3aWxsIGJlIHJl
cXVpcmVkIHRvIGNvbnZlcnQgdGhpcyBlbmNvZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA1MDZiNGRkNjJkNTVhNTZhMjc4YzMw
Y2NhYjJkMTkxMTBmMjQxZWVjLi4yYjQ0M2ZiYmVkMmMxZmRlNDhiY2RlOWNiZTQwOTUzNDk3ZmRl
OTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyB2
b2lkIHJlbGVhc2VDdXN0b21Gb250RGF0YSh2b2lkKiBkYXRhKQogewotICAgIHN0YXRpY19jYXN0
PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOworICAgIHN0YXRpY19jYXN0PEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKIH0KIAogc3RhdGljIGNhaXJvX3VzZXJf
ZGF0YV9rZXlfdCBmcmVlVHlwZUZhY2VLZXk7CiAKLUZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OkZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSBmcmVlVHlwZUZhY2UsIFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQorRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShG
VF9GYWNlIGZyZWVUeXBlRmFjZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAg
IDogbV9mb250RmFjZShhZG9wdFJlZihjYWlyb19mdF9mb250X2ZhY2VfY3JlYXRlX2Zvcl9mdF9m
YWNlKGZyZWVUeXBlRmFjZSwgRlRfTE9BRF9ERUZBVUxUKSkpCiB7CiAgICAgYnVmZmVyLnJlZigp
OyAvLyBUaGlzIGlzIGJhbGFuY2VkIGJ5IHRoZSBidWZmZXItPmRlcmVmKCkgaW4gcmVsZWFzZUN1
c3RvbUZvbnREYXRhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRl
eCA5YWQxOWI4NzZiMjdlNjBkNGZiYTUwMzBlNjVmODFlN2NhOGE1MDY5Li5kZmJjNTgwZmI4ZTli
MzA5MzZjY2EwOGJiODhiNDljMmJiNjUzYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmNwcApAQCAtODEsMTIgKzgxLDEyIEBAIEltYWdlRGVjb2RlckdTdHJlYW1lclNh
bXBsZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRlcikKICAgICByZXR1cm4gKEltYWdlRGVjb2RlckdT
dHJlYW1lclNhbXBsZSopaXRlci0+c2Vjb25kLmdldCgpOwogfQogCi1SZWZQdHI8SW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyPiBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXIm
IGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1Jl
ZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRl
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURl
Y29kZXJHU3RyZWFtZXIoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikpOwogfQogCi1JbWFnZURlY29kZXJHU3RyZWFtZXI6OkltYWdlRGVjb2Rl
ckdTdHJlYW1lcihTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckdTdHJl
YW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikKICAgICA6IG1fbWltZVR5cGUobWltZVR5cGUpCiB7CiAgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VGbGFnOwpAQCAtMTk5LDcgKzE5OSw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIg
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCkKK3ZvaWQgSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wpCiB7
CiAgICAgcHVzaEVuY29kZWREYXRhKGRhdGEpOwogfQpAQCAtNDI2LDEwICs0MjYsMTEgQEAgRW5j
b2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29k
ZWREYXRhU3RhdHVzKCkgY29uc3QKICAgICByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OlVua25v
d247CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVz
aEVuY29kZWREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAg
ICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBt
X2VvcyA9IGZhbHNlOwotICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVj
b2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZl
ci5zaXplKCldIHsKKyAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29k
ZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc2l6
ZSA9IGJ1ZmZlci5zaXplKCldIHsKICAgICAgICAgbV9pbm5lckRlY29kZXIgPSBJbWFnZURlY29k
ZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6Y3JlYXRlKCp0aGlzLCBkYXRhLCBzaXplKTsKICAg
ICAgICAgbV9pbm5lckRlY29kZXItPnJ1bigpOwogICAgIH0sIFRocmVhZFR5cGU6OkdyYXBoaWNz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAppbmRleCA2NmYzMzcyODQ2YTRk
Zjg3NGY0MjBkYjY1NGU2ODljOWU0M2IwYzUyLi5kM2VmNmE0NWNkN2RiZGZjMzEyMGVhMjNmOGRl
YjNjNTk5NzFhZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCkBAIC00
MSw4ICs0MSw4IEBAIGNsYXNzIEltYWdlRGVjb2RlckdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBJ
bWFnZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEltYWdlRGVjb2RlckdTdHJlYW1lcik7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pOwotICAgIEltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwor
ICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBjcmVhdGUoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlckdT
dHJlYW1lcigpID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzTWVkaWFUeXBl
KE1lZGlhVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID09IE1lZGlhVHlwZTo6VmlkZW87IH0KQEAg
LTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVu
dFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVy
JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wg
aXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2VvczsgfQogICAgIHZv
aWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAgLTEyMiw3ICsxMjIs
NyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICB2b2lkIGhhbmRsZVNhbXBsZShHUmVmUHRyPEdz
dFNhbXBsZT4mJik7Ci0gICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
Jik7CisgICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpOwogCiAgICAgY29uc3QgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKiBzYW1wbGVBdElu
ZGV4KHNpemVfdCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAKaW5kZXggNzk3OTQ4MGY5MWM1OTdhYTlmOTAwOTdjMTg4MzJjNmExNWMz
MmNlOC4uYjMyNGNmMTE0NjQ3YjMzNzVlNmE0NWJmYWIxMDNlMGEyOTBmYjhkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM2OTIsNyAr
MzY5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjppbml0aWFsaXphdGlv
bkRhdGFFbmNvdW50ZXJlZChJbml0RGF0YSYmIGluaXRECiAKICAgICAgICAgR1NUX0RFQlVHKCJz
Y2hlZHVsaW5nIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkICVzIGV2ZW50IG9mIHNpemUg
JXp1IiwgaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKS51dGY4KCkuZGF0YSgpLAogICAg
ICAgICAgICAgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwotICAgICAgICBHU1RfTUVNRFVN
UCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRh
LnBheWxvYWQoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOworICAgICAg
ICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGluaXREYXRhLnBheWxvYWQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpKSwgaW5pdERh
dGEucGF5bG9hZCgpLT5zaXplKCkpOwogICAgICAgICB3ZWFrVGhpcy0+bV9wbGF5ZXItPmluaXRp
YWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCks
IGluaXREYXRhLnBheWxvYWQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiAgICAgfSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
V2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDVkODZm
YjFhZjQ4N2MwMjg5ZTAwMTI1NTk2NWMzMWRjZGE5NzM0MjYuLjkzMDE5MDk5NDViNGEyM2Q2Njc4
MmYzNTBiNTZlNDQ3OWY4MDI2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRob2RzLgogICAgIHZvaWQgcmVzcG9uc2VS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRl
OwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtMTA5Myw3ICsxMDkzLDcgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb24KICAgICBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRDb250aW51ZVBvbGlj
eUNoZWNrOjpZZXMpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Ojpk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgV2ViS2l0V2ViU3JjKiBz
cmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlD
bGVhcktleS5oCmluZGV4IDY5MmE5OTZkMTljMjRlZmQ5YTQ4NTUyMzczYTU2NzliNTJlMWVmMWMu
LjM0OWJmZGNhYWQ2YzdkN2Y4ZDVhZGEwYTE3MjE5ZmQ5ZTcwNjI2ZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVh
cktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvQ0RNUHJveHlDbGVhcktleS5oCkBAIC02MiwxMSArNjIsMTEgQEAgcHVibGljOgogICAgIENE
TVByb3h5Q2xlYXJLZXkoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+Q0RNUHJveHlDbGVhcktl
eSgpOwogCi0gICAgLy8gRklYTUU6IFRoZXJlJ3MgYSBsYWNrIG9mIGNvbnNpc3RlbmN5IGJldHdl
ZW4gU2hhcmVkQnVmZmVycywKKyAgICAvLyBGSVhNRTogVGhlcmUncyBhIGxhY2sgb2YgY29uc2lz
dGVuY3kgYmV0d2VlbiBGcmFnbWVudGVkU2hhcmVkQnVmZmVycywKICAgICAvLyBWZWN0b3I8Y2hh
cj4ncyBhbmQge3VpbnQ4X3QqLHNpemVfdH0gaWRpb21zIGZvciByZXByZXNlbnRpbmcgYSBjaHVu
ayBvZgotICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBzb21laG93LiBOb3RlIFNoYXJlZEJ1ZmZlcnMg
YXJlIGRhbmdlcm91cyBzaW5jZQorICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBzb21laG93LiBOb3Rl
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJzIGFyZSBkYW5nZXJvdXMgc2luY2UKICAgICAvLyB0aGV5
J3JlIG5vdCB0aHJlYWQtc2FmZSBhbmQgdGhpcyBjbGFzcyBtdXN0IG1haW50YWluCi0gICAgLy8g
dGhyZWFkLXNhZmV0eSwgYnV0IG1heWJlIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQgY291bGQg
YmUKKyAgICAvLyB0aHJlYWQtc2FmZXR5LCBidXQgbWF5YmUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQgY291bGQgYmUKICAgICAvLyBtYWRlIHRvIHdvcmssIGhvd2V2ZXIgdGhh
dCBoYXMgemVybyBoZWxwZXJzIGZvciBkcm9wcGluZyBpbnRvCiAgICAgLy8gaXRlcmF0b3ItYXdh
cmUgLyBjb21wYXJhdG9yLWF3YXJlIGNvbnRhaW5lcnMuLi4KICAgICBzdHJ1Y3QgY2VuY0RlY3J5
cHRDb250ZXh0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCmluZGV4IDJlZmEwNDM2MGU4ODQ4
MzgwNjE0NGMzZDcxZGU2M2FkN2I0MmI1NjEuLmMzODkxNmU3ZDA1OWU4ODliNWM4OGVlYjA5ZTBm
NGNmYzAzYzFkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcApAQCAtMjIwLDcgKzIyMCw3
IEBAIGJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUgaW5pdERhdGEgYnVm
ZmVyIGFzIGFuIEpTT04gb2JqZWN0IGluIGtleWlkcyBjYXNlLgogICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJrZXlpZHMiKSAmJiBDRE1VdGlsaXRp
ZXM6OnBhcnNlSlNPTk9iamVjdChpbml0RGF0YSkpCkBAIC0yMzcsNyArMjM3LDcgQEAgYm9vbCBD
RE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIGNvbnN0IFMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IENETVByaXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RN
UHJpdmF0ZVRodW5kZXI6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKIH0K
QEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6aW5pdGlhbGl6ZVdp
dGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYQogICAgIGNhbGxiYWNr
KFN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjpzZXRTZXJ2ZXJDZXJ0
aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCAgU3VjY2Vzc0NhbGxiYWNr
JiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNh
dGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsICBTdWNjZXNzQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBPcGVuQ0RNRXJyb3IgZXJyb3IgPSBvcGVuY2RtX3N5
c3RlbV9zZXRfc2VydmVyX2NlcnRpZmljYXRlKG1fdGh1bmRlclN5c3RlbS5nZXQoKSwgY29uc3Rf
Y2FzdDx1aW50OF90Kj4oY2VydGlmaWNhdGUtPmRhdGEoKSksCiAgICAgICAgIGNlcnRpZmljYXRl
LT5zaXplKCkpOwpAQCAtMzI2LDcgKzMyNiw3IEBAIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+
IENETUluc3RhbmNlVGh1bmRlcjo6Y3JlYXRlU2Vzc2lvbigpCiBjbGFzcyBQYXJzZWRSZXNwb25z
ZU1lc3NhZ2UgewogCiBwdWJsaWM6Ci0gICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlKGNvbnN0IFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlKGNv
bnN0IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgIHsKICAgICAg
ICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+c2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMzU0LDggKzM1NCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNWYWxpZDsgfQogICAgIGJvb2wgaGFzUGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PGJvb2w+KG1fcGF5bG9hZCk7IH0KLSAgICBjb25zdCBSZWY8U2hhcmVkQnVm
ZmVyPiYgcGF5bG9hZCgpIGNvbnN0JiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXls
b2FkLnZhbHVlKCk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpICYgeyBBU1NF
UlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CisgICAgY29uc3QgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QmIHsgQVNTRVJUKG1fcGF5
bG9hZCk7IHJldHVybiBtX3BheWxvYWQudmFsdWUoKTsgfQorICAgIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYgcGF5bG9hZCgpICYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5
bG9hZC52YWx1ZSgpOyB9CiAgICAgYm9vbCBoYXNUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
Lmhhc192YWx1ZSgpOyB9CiAgICAgV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSB0eXBlKCkg
Y29uc3QgeyBBU1NFUlQobV90eXBlKTsgcmV0dXJuIG1fdHlwZS52YWx1ZSgpOyB9CiAgICAgV2Vi
Q29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSB0eXBlT3IoV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdl
VHlwZSBhbHRlcm5hdGUpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA/IG1fdHlwZS52YWx1ZSgpIDog
YWx0ZXJuYXRlOyB9CkBAIC0zNjQsMTEgKzM2NCwxMSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2lzVmFsaWQgeyBmYWxzZSB9OwotICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJl
ZEJ1ZmZlcj4+IG1fcGF5bG9hZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4gbV9wYXlsb2FkOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFL
ZXlNZXNzYWdlVHlwZT4gbV90eXBlOwogfTsKIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVu
ZGVyOjpjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6Y2hhbGxlbmdlR2VuZXJhdGVk
Q2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAg
IFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UoYnVmZmVyKTsKICAg
ICBpZiAoIXBhcnNlZFJlc3BvbnNlTWVzc2FnZSkgewpAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6a2V5c1VwZGF0ZURvbmVDYWxsYmFjaygpCiAgICAg
bV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQogCi12b2lkIENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBtZXNz
YWdlKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7CiAgICAgR1NUX0VSUk9SKCJD
RE0gZXJyb3IiKTsKICAgICBHU1RfTUVNRFVNUCgiZXJyb3IgZHVtcCIsIG1lc3NhZ2UtPmRhdGEo
KSwgbWVzc2FnZS0+c2l6ZSgpKTsKQEAgLTQ4OCw3ICs0ODgsNyBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBtZXNz
YWdlKQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNl
bnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIGluaXREYXRhU2hhcmVkQnVmZmVyLAordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVy
OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YVNo
YXJlZEJ1ZmZlciwKICAgICBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtNTA2LDcgKzUwNiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNv
bnN0IEF0CiAgICAgICAgIG1faW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCksIG1faW5pdERhdGEu
cGF5bG9hZCgpLT5zaXplKCksIG51bGxwdHIsIDAsICZtX3RodW5kZXJTZXNzaW9uQ2FsbGJhY2tz
LCB0aGlzLCAmc2Vzc2lvbik7CiAgICAgaWYgKCFzZXNzaW9uKSB7CiAgICAgICAgIEdTVF9FUlJP
UigiQ291bGQgbm90IGNyZWF0ZSBzZXNzaW9uIik7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CisgICAgICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOwogICAg
ICAgICBjYWxsYmFjayhpbml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCB7IH0sIGZhbHNlLCBGYWls
ZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5z
ZVR5cGUsIGNvbnN0IEF0CiAKICAgICBhdXRvIGdlbmVyYXRlQ2hhbGxlbmdlID0gW3RoaXMsIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluaXREYXRhID0g
bV9pbml0RGF0YS5wYXlsb2FkKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOwogICAgICAgICBpZiAobV9zZXNz
aW9uSUQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBHU1RfRVJST1IoImNvdWxkIG5vdCBjcmVh
dGUgc2Vzc2lvbiBpZCIpOwogICAgICAgICAgICAgY2FsbGJhY2soaW5pdERhdGEucmVsZWFzZU5v
bk51bGwoKSwgeyB9LCBmYWxzZSwgRmFpbGVkKTsKQEAgLTU0NSwxMyArNTQ1LDEzIEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6c2Vzc2lvbkZhaWx1cmUoKQogICAgIG1fc2Vzc2lv
bkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25U
aHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSBtX3Nlc3Npb25JRCk7
CiAKICAgICBHU1RfVFJBQ0UoIlVwZGF0aW5nIHNlc3Npb24gJXMiLCBzZXNzaW9uSUQudXRmOCgp
LmRhdGEoKSk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdl
ZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJv
b2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNz
YWdlKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAg
aWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghcmVzcG9uc2VNZXNzYWdlKQpAQCAtNTYy
LDcgKzU2Miw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5CiAgICAgICAgICAgICAgICAgUGFy
c2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShyZXNwb25zZU1lc3NhZ2Up
OwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAg
ICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNl
ZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAgICAgICBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNz
YWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygiZ290IG1lc3Nh
Z2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBH
U1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsK
ICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0LApAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRl
cjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSBtX3Nlc3Npb25JRCk7CiAK
LSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHJl
c3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5h
cHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2Vzcywg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxl
IHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3Mp
IHsKICAgICAgICAgICAgIGlmICghcmVzcG9uc2VNZXNzYWdlKQpAQCAtNTk3LDcgKzU5Nyw3IEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUs
IGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiAgICAgICAgICAgICAgICAgUGFyc2VkUmVzcG9uc2VN
ZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShyZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAg
ICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGlm
IChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVz
c2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQo
KSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAl
enUiLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgi
bWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAg
ICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bWFrZV9w
YWlyKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS50eXBlT3IoTWVkaWFLZXlNZXNzYWdlVHlwZTo6TGlj
ZW5zZVJlcXVlc3QpLApAQCAtNjQwLDcgKzY0MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
VGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vu
CiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIG1fc2Vzc2lvbklEID09IHNlc3Npb25J
RCk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBl
bmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBtdXRhYmxlIHsKICAgICAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAg
ICAgIGlmICghYnVmZmVyKQpAQCAtNjQ5LDcgKzY0OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExp
Y2VuCiAgICAgICAgICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNl
TWVzc2FnZShidWZmZXIpOwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1l
c3NhZ2UpOwogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5
bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2Ug
PSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAg
ICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFy
c2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9E
RUJVRygic2Vzc2lvbiAlcyByZW1vdmVkLCBtZXNzYWdlIGxlbmd0aCAlenUiLCBtX3Nlc3Npb25J
RC51dGY4KCkuZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBj
YWxsYmFjayhtX2tleVN0b3JlLmFsbEtleXNBcyhNZWRpYUtleVN0YXR1czo6UmVsZWFzZWQpLCBX
VEZNb3ZlKG1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKaW5kZXggY2RkOGRhMjExMjNjMTc5MWFl
MmZiNjQzOWZmMmQ2ZmEwZDJlYjIxYy4uMTAyMGUxNTMyMjcxYjUzNTFlMTA2ZGRlOGYyMWVhNTQw
NWE5YzIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKQEAgLTkzLDggKzkzLDggQEAgcHVibGlj
OgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRz
U2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Np
b25zKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZp
bmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVT
ZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6CkBAIC0xMTAs
NyArMTEwLDcgQEAgcHVibGljOgogICAgIC8vIENETUluc3RhbmNlCiAgICAgSW1wbGVtZW50YXRp
b25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVu
dGF0aW9uVHlwZTo6VGh1bmRlcjsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0
aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRl
bnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7
Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNj
ZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fa2V5U3lzdGVtOyB9
CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpA
QCAtMTI2LDggKzEyNiw4IEBAIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXIgZmluYWwg
OiBwdWJsaWMgQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgewogcHVibGljOgogICAgIENETUluc3Rh
bmNlU2Vzc2lvblRodW5kZXIoQ0RNSW5zdGFuY2VUaHVuZGVyJik7CiAKLSAgICB2b2lkIHJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAg
ICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2sm
JikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VU
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9p
ZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmlu
YWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlw
ZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKQEAgLTE0MSwxNCArMTQxLDE0
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ0RNSW5zdGFuY2VUaHVuZGVyKiBjZG1JbnN0YW5j
ZVRodW5kZXIoKSBjb25zdDsKIAotICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9IHZvaWQgKENETUlu
c3RhbmNlU2Vzc2lvblRodW5kZXI6OiopKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
OworICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9IHZvaWQgKENETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OiopKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB1
c2luZyBDaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47Ci0gICAg
dXNpbmcgU2Vzc2lvbkNoYW5nZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoYm9vbCwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJik+OworICAgIHVzaW5nIFNlc3Npb25DaGFuZ2VkQ2FsbGJhY2sgPSBG
dW5jdGlvbjx2b2lkKGJvb2wsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT47CiAK
LSAgICB2b2lkIGNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYpOworICAgIHZvaWQgY2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQga2V5VXBkYXRlZENhbGxiYWNrKEtleUlEVHlw
ZSYmKTsKICAgICB2b2lkIGtleXNVcGRhdGVEb25lQ2FsbGJhY2soKTsKLSAgICB2b2lkIGVycm9y
Q2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBlcnJvckNhbGxiYWNr
KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBDRE1JbnN0YW5jZVNlc3Np
b246OktleVN0YXR1cyBzdGF0dXMoY29uc3QgS2V5SURUeXBlJikgY29uc3Q7CiAgICAgdm9pZCBz
ZXNzaW9uRmFpbHVyZSgpOwogCkBAIC0xNTksNyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICBJbml0
RGF0YSBtX2luaXREYXRhOwogICAgIE9wZW5DRE1TZXNzaW9uQ2FsbGJhY2tzIG1fdGh1bmRlclNl
c3Npb25DYWxsYmFja3MgeyB9OwogICAgIEJveFB0cjxPcGVuQ0RNU2Vzc2lvbj4gbV9zZXNzaW9u
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWVzc2FnZTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdlOwogICAgIGJvb2wgbV9uZWVkc0luZGl2aWR1YWxp
emF0aW9uIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8Q2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2s+
IG1fY2hhbGxlbmdlQ2FsbGJhY2tzOwogICAgIFZlY3RvcjxTZXNzaW9uQ2hhbmdlZENhbGxiYWNr
PiBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFt
ZXJFTUVVdGlsaXRpZXMuY3BwCmluZGV4IDNmODVhZmU3M2M4NDI3NjI5OTdkNWFiYzJkN2JjMDdm
N2MwMWI5YzMuLmVhODkwZjY3ZGEyMTM4N2Y0MGRhNjUxYTBjYTVjNzM0OTNlODRmNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0
cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKQEAgLTcxLDcgKzcx
LDcgQEAgc3RhdGljIHZvaWQgbWFya3VwRXJyb3IoR01hcmt1cFBhcnNlQ29udGV4dCosIEdFcnJv
ciosIGdwb2ludGVyKQogCiBzdGF0aWMgR01hcmt1cFBhcnNlciBtYXJrdXBQYXJzZXIgeyBtYXJr
dXBTdGFydEVsZW1lbnQsIG1hcmt1cEVuZEVsZW1lbnQsIG1hcmt1cFRleHQsIG1hcmt1cFBhc3N0
aHJvdWdoLCBtYXJrdXBFcnJvciB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6
ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9h
ZCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJ
Zk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKIHsKICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOwog
ICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGls
aXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
R1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggZDVhZmY4NDVmNDA5YTc1ZDcxYTk4NDBhY2Yx
ZDM0MmE0NjQ3ZDJmMS4uMjdkZDRlYWUwZDJlMDFhYjRkODRjMGFiYzQyNGViYjEwMTA0YzA0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCkBAIC0zOCw4ICsz
OCw3IEBAIEdTVF9ERUJVR19DQVRFR09SWV9FWFRFUk4od2Via2l0X21lZGlhX2NvbW1vbl9lbmNy
eXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnkpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBJbml0RGF0YSB7CiBwdWJsaWM6Ci0gICAgSW5pdERhdGEoKQotICAgICAgICA6IG1fcGF5bG9h
ZChTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKSB7IH0KKyAgICBJbml0RGF0YSgpID0gZGVmYXVsdDsK
IAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhbiBlbnVtIGZvciBzeXN0ZW0gdXVpZHMg
Zm9yIGJldHRlciB0eXBlIHNhZmV0eS4KICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3Rl
bUlkLCBHc3RCdWZmZXIqIGluaXREYXRhKQpAQCAtNTAsMTMgKzQ5LDE3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIEdTVF9DQVRfTEVWRUxfTE9HKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlv
bl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5LCBHU1RfTEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5u
b3QgbWFwICVzIHByb3RlY3Rpb24gZGF0YSIsIHN5c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXls
b2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVm
ZmVyKCkpOworICAgICAgICBpZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5l
ZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpKQorICAgICAgICAgICAg
bV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0K
IAotICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgcGF5bG9hZCkKKyAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVt
SWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RG
TW92ZShwYXlsb2FkKSkpCiAgICAgeworICAgICAgICBpZiAocGF5bG9hZCkgeworICAgICAgICAg
ICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZC0+
bWFrZUNvbnRpZ3VvdXMoKSkpCisgICAgICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJz
ZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9p
ZCBhcHBlbmQoSW5pdERhdGEmJiBpbml0RGF0YSkKQEAgLTcyLDEwICs3NSwxMCBAQCBwdWJsaWM6
CiAgICAgICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9idXN0LCBzbyBiZSBjYXJlZnVsIGhlcmUhCiAg
ICAgICAgIG1fc3lzdGVtSWQgPSBpbml0RGF0YS5tX3N5c3RlbUlkOwogCi0gICAgICAgIG1fcGF5
bG9hZC0+YXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOworICAgICAgICBtX3BheWxvYWQuYXBw
ZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAgIGNvbnN0IFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkOyB9CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3Bh
eWxvYWQuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29uc3QgeyByZXR1
cm4gbV9zeXN0ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgpIGNvbnN0
CiAgICAgewpAQCAtODYsMTEgKzg5LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5j
Il9zOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2Vu
Y0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3BheWxv
YWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oCmluZGV4IDcxOGI5YmQzMTVlY2M2NzA3ODljNjVjYmFhYTAzNDkyOTc1ZTcyZDMu
LjY5MjhhNjNlOTcxYzdjMzVlODg0NGVlZjczYmZhNDRhOGQ4YzAzMDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZv
bnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xh
c3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBG
b250RmVhdHVyZVNldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQppbmRleCA4M2U2YWY3YjAz
ODkyODM4YzNiZmVhMWMwYzExYWE3ZmNmOGE3N2E5Li42OGJjYzg4NDZhOGIxZjBmN2NiY2YxNDAz
MTk2NmVkOTI0MzIyYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpAQCAtNDgsNyArNDgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERG
RG9jdW1lbnQoKQogewotICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50
SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwor
ICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0
V2l0aERhdGE6ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0p
OwogfQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFn
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAppbmRleCAwOWMxYzQ1YzQ1OTNhZWE0MzE4MzBk
MjE1YjdlNzQ4NTJjMTllMzdmLi5mYTAwMDgxMTYwNjY5N2RjNWM1MTEyMzMzYzkwYzhjOTJiNGI2
NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTM1LDkgKzM1LDEwIEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBCaWdFbmRpYW5VU2hvcnQ7CitjbGFzcyBTaGFyZWRC
dWZmZXI7CiBzdHJ1Y3QgRU9UUHJlZml4OwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0
IEVPVEhlYWRlciB7CiAgICAgRU9USGVhZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2Fs
RGF0YS5jcHAKaW5kZXggMmNmYTg1NGMwMjI2NjhhY2MwMDczN2MxZWJiMzVmZjM0OGQ1OGUyYi4u
MGZhOGYzMDZhZDk1MmQwNmEwOTI5N2QwYjFkMjg3Yjg5ODgzMmEzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVmVydGljYWxEYXRhLmNwcApAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VCVGFi
bGUgOiBUYWJsZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2YW5jZVdpZHRo
cykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3Bl
blR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9y
bURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5
cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpI
aGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC00MjQsNyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVydGlj
YWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQgT3BlblR5
cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRm
b3JtRGF0YSkKIHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMgcmVxdWly
ZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpW
aGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9w
ZW5UeXBlOjpWaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVhID0g
T3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsKICAg
ICBpZiAoIXZoZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIE9w
ZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBw
bGF0Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEds
eXBoU3Vic3RpdHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBl
VGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRh
Lm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpH
U1VCVGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NVQlRh
YmxlPihidWZmZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3ViLT5nZXRWZXJ0aWNhbEds
eXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0
ZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVj
dFdyaXRlVXRpbGl0aWVzLmgKaW5kZXggYTYyNzE5YjE3MTlhNzRmOTc2OTIyMTlkZjVmN2FhZWRj
NDkwNjQ2Ni4uMGRiNGFmYWRiM2Y3NDJiODNhNGUxNmNmMzcxODcwYTJiMDQwNGVhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRp
bGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVj
dFdyaXRlVXRpbGl0aWVzLmgKQEAgLTQzLDcgKzQzLDcgQEAgZW51bSBEV1JJVEVfRk9OVF9TVFJF
VENIOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNw
YWNlIERpcmVjdFdyaXRlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNWYxMGY3
MzkyZDA0YzM0NGQxMmNlZTQyNjZlZGIxZWU5OTcxYzRlZi4uMDhmYzlmMTllYWVhOTQ4M2VhNThl
YzFhZWVkZDQ1NzI1NmNlMjdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zNiwx
MiArMzYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dGb250KiBDR0ZvbnRSZWY7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29u
dGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJp
bGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRp
bmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKaW5kZXggNjI5ZTBlNjFhMTA0YzU2N2ExZDRlZGNi
N2U1Nzk3ZGNmNjdjNmU4ZS4uNzczNTczOWI5MzM0ZjQ0ZDk5YTNmMTJmZmM1YmY3YjQxZjdjYzZl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCkBAIC0yNzIsNyArMjcyLDcgQEAgUGxhdGZv
cm1JbWFnZVB0ciBJbWFnZURlY29kZXJEaXJlY3QyRDo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBTdWIKICAgICByZXR1cm4gYml0bWFwOwogfQogCi12b2lkIEltYWdlRGVj
b2RlckRpcmVjdDJEOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmICghYWxsRGF0
YVJlY2VpdmVkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCmluZGV4IDRm
NDcyNTg2YjQyNGJkYTFjZjZmYTAxNDNjYmEyM2QwMzAwMTZlNDUuLmMyMzY1ZmQ3NDRjNjExOGMx
OTk5ZTA1YjgwMmVkNWI0OGYzNjQ4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCkBAIC00MSw3
ICs0MSw3IEBAIGNsYXNzIEltYWdlRGVjb2RlckRpcmVjdDJEIGZpbmFsIDogcHVibGljIEltYWdl
RGVjb2RlciB7CiBwdWJsaWM6CiAgICAgSW1hZ2VEZWNvZGVyRGlyZWN0MkQoKTsKIAotICAgIHN0
YXRpYyBSZWY8SW1hZ2VEZWNvZGVyRGlyZWN0MkQ+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBBbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFn
ZURlY29kZXJEaXJlY3QyRD4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJEaXJlY3QyRCgpKTsKICAgICB9CkBAIC03Miw3ICs3
Miw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNB
bGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVk
OyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAK
aW5kZXggMGQ4ODIwZTlmM2Q2ZmQ3NzM1ZDU3MGIzNjQxNDg4ZjUzYmQ3ZWNlOS4uMmQ5NzI3MGE3
MzQ4MzQ4OTNlNzhjODFmZjBlYzViYjVkZmVjM2Y4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIC8vIFRoaXMgZnVuY3Rpb24gbG9hZHMgcmVzb3Vy
Y2VzIGZyb20gV2ViS2l0Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3Vy
Y2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKaW5kZXggZDk1NmQ5
ZTc2MjVkNWJiNWE3MGYwNjkzZTc3OThlZTkwODQ5ZjE2NS4uMzNjOTVlYzMzMzNhOTIwYzY0YTAx
ODE3NTFlYjRhNTA1ZWYxYTdhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcApAQCAt
NTEsNyArNTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSB7CiAKLXN0YXRp
YyB1bnNpZ25lZCBjb3B5RnJvbVNoYXJlZEJ1ZmZlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1
ZmZlckxlbmd0aCwgY29uc3QgU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpCitzdGF0aWMgdW5z
aWduZWQgY29weUZyb21TaGFyZWRCdWZmZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJM
ZW5ndGgsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikKIHsKICAg
ICB1bnNpZ25lZCBieXRlc0V4dHJhY3RlZCA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVt
ZW50IDogc2hhcmVkQnVmZmVyKSB7CkBAIC0xMzUsNyArMTM1LDcgQEAgYm9vbCBtYXRjaGVzQ1VS
U2lnbmF0dXJlKGNoYXIqIGNvbnRlbnRzKQogCiB9CiAKLVJlZlB0cjxTY2FsYWJsZUltYWdlRGVj
b2Rlcj4gU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gU2NhbGFi
bGVJbWFnZURlY29kZXI6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBo
YU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxlbmd0aE9m
TG9uZ2VzdFNpZ25hdHVyZSA9IDE0OyAvLyBUbyB3aXQ6ICJSSUZGPz8/P1dFQlBWUCIKICAgICBj
aGFyIGNvbnRlbnRzW2xlbmd0aE9mTG9uZ2VzdFNpZ25hdHVyZV07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURl
Y29kZXIuaAppbmRleCAzMmQ0ZTZmOGI4ZmExNGExM2JmYjYyMmQ4NzU3MDg3OThiOTlkYWEyLi45
YzQwNTU3ODI0MWQwYzUxMjcwMjk1MTVjMjIxMjY1OGY4YzRmNjhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1h
Z2VEZWNvZGVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyBu
dWxscHRyIGlmIHdlIGNhbid0IHNuaWZmIGEgc3VwcG9ydGVkIHR5cGUgZnJvbSB0aGUgcHJvdmlk
ZWQgZGF0YSAocG9zc2libHkKICAgICAvLyBiZWNhdXNlIHRoZXJlIGlzbid0IGVub3VnaCBkYXRh
IHlldCkuCi0gICAgc3RhdGljIFJlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gY3JlYXRlKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KTsKKyAgICBzdGF0aWMgUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBjcmVhdGUoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKTsKIAogICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJlbXVsdGlwbHlBbHBoYTsgfQogCkBAIC03MCwxNiArNzAsMTUgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxl
dGU7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlCisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0
YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgaWYgKGRhdGEuZGF0YSgpKSB7Ci0gICAgICAgICAgICAvLyBTaGFyZWRCdWZm
ZXI6OmRhdGEoKSBjb21iaW5lcyBhbGwgc2VnbWVudHMgaW50byBvbmUgaW4gY2FzZSB0aGVyZSdz
IG1vcmUgdGhhbiBvbmUuCi0gICAgICAgICAgICBtX2RhdGEgPSBkYXRhLmJlZ2luKCktPnNlZ21l
bnQuY29weVJlZigpOwotICAgICAgICB9CisgICAgICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBk
YXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0YS0+ZGF0YSgp
KQorICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGEtPmJlZ2luKCktPnNlZ21lbnQu
Y29weVJlZigpOwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0
YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgbV9kZWNvZGluZ1NpemVGcm9t
U2V0RGF0YSA9IHRydWU7CiAgICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFsbERhdGFSZWNlaXZl
ZCk7CkBAIC0xOTUsNyArMTk0LDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9p
bnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAog
cHJvdGVjdGVkOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7
CiAgICAgVmVjdG9yPFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUsIDE+IG1fZnJhbWVCdWZmZXJD
YWNoZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CiAgICAgbXV0YWJsZSBMb2NrIG1fbG9j
azsKICAgICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVy
LmNwcAppbmRleCA3YzYwM2ZkODM1OGMyMTRhYzkxODRmMzE4OTk3MmZlODQxYjYxZTgwLi4yNmY4
ODY0OTZlNWE1YTE0ZTI4YWZiMWFmYTliZmMzMDE3N2Y1MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1h
Z2VSZWFkZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIEFWSUZJbWFnZVJlYWRlcjo6QVZJRkltYWdl
UmVhZGVyKFJlZlB0cjxBVklGSW1hZ2VEZWNvZGVyPiYmIGRlY29kZXIpCiAKIEFWSUZJbWFnZVJl
YWRlcjo6fkFWSUZJbWFnZVJlYWRlcigpID0gZGVmYXVsdDsKIAotYm9vbCBBVklGSW1hZ2VSZWFk
ZXI6OnBhcnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQorYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKIHsKICAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01lbW9yeShtX2F2aWZEZWNv
ZGVyLmdldCgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpICE9IEFWSUZfUkVTVUxUX09LKQog
ICAgICAgICByZXR1cm4gYWxsRGF0YVJlY2VpdmVkID8gbV9kZWNvZGVyLT5zZXRGYWlsZWQoKSA6
IGZhbHNlOwpAQCAtNTgsNyArNTgsNyBAQCBib29sIEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFk
ZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBhbAogICAgIHJl
dHVybiB0cnVlOwogfQogCi12b2lkIEFWSUZJbWFnZVJlYWRlcjo6ZGVjb2RlRnJhbWUoc2l6ZV90
IGZyYW1lSW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmIGJ1ZmZlciwgY29uc3QgU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkKK3ZvaWQgQVZJRkltYWdlUmVhZGVyOjpkZWNv
ZGVGcmFtZShzaXplX3QgZnJhbWVJbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYgYnVm
ZmVyLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkKIHsK
ICAgICBpZiAobV9kZWNvZGVyLT5mYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VS
ZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJ
RkltYWdlUmVhZGVyLmgKaW5kZXggY2JjYTBiOGMxMjRiZmYwZmZjMzMwMWJhMzViY2UwMWVkMjcy
MmRmOC4uNDk2ZjY5ZjgxMmJkNzViMGVkYTYzNTdiYWE4NjBjZmNjYjViYTRiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VS
ZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlm
L0FWSUZJbWFnZVJlYWRlci5oCkBAIC0zOSw4ICszOSw4IEBAIHB1YmxpYzoKICAgICBBVklGSW1h
Z2VSZWFkZXIoUmVmUHRyPEFWSUZJbWFnZURlY29kZXI+JiYpOwogICAgIH5BVklGSW1hZ2VSZWFk
ZXIoKTsKIAotICAgIGJvb2wgcGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIGRlY29kZUZyYW1lKHNpemVf
dCBpbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQmKTsKKyAgICBib29sIHBhcnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQg
ZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiwgY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKTsKICAgICBzaXplX3QgaW1h
Z2VDb3VudCgpIGNvbnN0OwogICAgIGRvdWJsZSByZXBldGl0aW9uQ291bnQoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JN
UEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3Mjc2OWE2OTI2ZWMyNDE5YmY2NjM4MjUy
OGQzZDc3MjBhNTRhZGFlLi5mNzQ1NWMxNDZjN2U4YWViMDRjYzhjNTZmMzMwZTJhMDFmM2JhNzJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAv
Qk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDYsNyArNDYsNyBAQCBCTVBJbWFn
ZURlY29kZXI6OkJNUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcAogewogfQogCi12b2lkIEJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShT
aGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBCTVBJbWFnZURl
Y29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VE
ZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VEZWNvZGVyLmgKaW5kZXggYzdjN2NhODFmZWE2YjhhNzc0YmIzMDhlNTM4ZGNkMDQ4Yzk5
NWVlYS4uNjRkZWQ2YWJiZTJjMGEyOWIxMWY5ZmI1ZWNkNmI0ODcyNGQ1ODk3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVj
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9C
TVBJbWFnZURlY29kZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2Fs
YWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICJibXAiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIFNjYWxhYmxl
SW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIGZpbmFs
OwogICAgIC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gQmUgY2Fy
ZWZ1bCB0byBhdm9pZAogICAgIC8vIGFjY2Vzc2luZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxs
eSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9tIGluc2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaAppbmRl
eCA0ODQ0ZjM4MGRjMTdlYzcwNDU4OGZiMTJmNTNlYWJjNmQyMGU2MGY0Li5iZDQzMGU4YThiZWEy
YzgxNmIyYzUyMmJmNWJhNzg4NDZjMzhlMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaApAQCAt
NDIsNyArNDIsNyBAQCBjbGFzcyBCTVBJbWFnZVJlYWRlciB7CiBwdWJsaWM6CiAgICAgLy8gUmVh
ZCBhIHZhbHVlIGZyb20gfGRhdGFbb2Zmc2V0XXwsIGNvbnZlcnRpbmcgZnJvbSBsaXR0bGUgdG8g
bmF0aXZlCiAgICAgLy8gZW5kaWFubmVzcy4KLSAgICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJl
YWRVaW50MTYoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNl
dCkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJlYWRVaW50MTYoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQpCiAgICAgewogICAg
ICAgICB1aW50MTZfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNweSgmcmVzdWx0LCAmZGF0YS5kYXRh
KClbb2Zmc2V0XSwgMik7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAKLSAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIo
Y29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkKKyAgICBz
dGF0aWMgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQpCiAgICAgewogICAgICAgICB1aW50
MzJfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNweSgmcmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0
XSwgNCk7CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBCTVBJbWFnZVJlYWRlcihTY2Fs
YWJsZUltYWdlRGVjb2RlciogcGFyZW50LCBzaXplX3QgZGVjb2RlZEFuZEhlYWRlck9mZnNldCwg
c2l6ZV90IGltZ0RhdGFPZmZzZXQsIGJvb2wgdXNlc0FuZE1hc2spOwogCiAgICAgdm9pZCBzZXRC
dWZmZXIoU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogYnVmZmVyKSB7IG1fYnVmZmVyID0gYnVm
ZmVyOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEp
IHsgbV9kYXRhID0gJmRhdGE7IH0KKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KIAogICAgIC8vIERv
ZXMgdGhlIGFjdHVhbCBkZWNvZGluZy4gSWYgfG9ubHlTaXplfCBpcyB0cnVlLCBkZWNvZGluZyBv
bmx5CiAgICAgLy8gcHJvZ3Jlc3NlcyBhcyBmYXIgYXMgbmVjZXNzYXJ5IHRvIGdldCB0aGUgaW1h
Z2Ugc2l6ZS4gUmV0dXJucwpAQCAtMjcyLDcgKzI3Miw3IEBAIHByaXZhdGU6CiAgICAgU2NhbGFi
bGVJbWFnZURlY29kZXJGcmFtZSogbV9idWZmZXI7CiAKICAgICAvLyBUaGUgZmlsZSB0byBkZWNv
ZGUuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKIAogICAg
IC8vIEFuIGluZGV4IGludG8gfG1fZGF0YXwgcmVwcmVzZW50aW5nIGhvdyBtdWNoIHdlJ3ZlIGFs
cmVhZHkgZGVjb2RlZC4KICAgICBzaXplX3QgbV9kZWNvZGVkT2Zmc2V0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5n
U3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9j
YWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAppbmRleCA2MDEyMDM3NGY5YzQzMTY4YTY1
MjFiNjljNTRhZmJlMmEwMGY1NWY3Li40YTIxMjU1YThjMGZiNjc4ZTRhYWRkNzY2M2ViN2Y5MThl
N2ZlOTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcApA
QCAtMzcsNyArMzcsOSBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFn
ZSgpIGNvbnN0CiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0
X2Nhc3Q8dWludDMyX3QqPihtX3BpeGVsc1B0cikpLAogICAgICAgICBDQUlST19GT1JNQVRfQVJH
QjMyLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpLCBzaXplKCkud2lkdGgoKSAqIHNp
emVvZih1aW50MzJfdCkpKTsKICAgICBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tleV90IHNfc3Vy
ZmFjZURhdGFLZXk7Ci0gICAgY2Fpcm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRhKHN1cmZhY2UuZ2V0
KCksICZzX3N1cmZhY2VEYXRhS2V5LCBtX3BpeGVscy5nZXQoKSwgW10odm9pZCogZGF0YSkgeyBz
dGF0aWNfY2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4oZGF0YSktPmRlcmVmKCk7IH0p
OworICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0YShzdXJmYWNlLmdldCgpLCAmc19zdXJm
YWNlRGF0YUtleSwgbV9waXhlbHMuZ2V0KCksIFtdKHZvaWQqIGRhdGEpIHsKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8RGF0YVNlZ21lbnQqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICB9KTsKIAogICAgIHJl
dHVybiBzdXJmYWNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBlNmFiZTBk
OTU0NGI2YzE4NWM2NDVkZWNlMDlmMjNmOTU2NjYwN2NiLi5iOWVjMDFiOGFlOGU4ZDI5YmM3ODI1
MjZlMDc2NTI1NTFlMzU5YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzgs
NyArMzgsNyBAQCBHSUZJbWFnZURlY29kZXI6OkdJRkltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBh
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBHSUZJbWFnZURlY29kZXI6On5H
SUZJbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXRE
YXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEdJRklt
YWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJ
bWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dp
Zi9HSUZJbWFnZURlY29kZXIuaAppbmRleCAzNWRmMzNmNmRmYzQ4M2ZkODQ3MTM2NmFlNTNiYjBi
OTYxY2FlZDJlLi5jNzQ3MTk5OTliOTg2YzFjZWY4NDc4NzU5ZDIzNzE4YzkwNDJkM2ViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIC8v
IFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gImdpZiJfczsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZm
ZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFs
OwogICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CiAgICAgc2l6ZV90IGZy
YW1lQ291bnQoKSBjb25zdCBmaW5hbDsKICAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNv
dW50KCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCmluZGV4IDQyMTQ2ZTAzMjkz
MjM2OTk3ODllYjVlNDJhZjRjNzNkMzRhYjljYzYuLjEwODJmZGYwZGZmMjM5MWU1NjUzMGE0MWY4
N2JhNDM5ODIzMjc1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCkBAIC0yMzcsNyArMjM3LDcg
QEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQorICAgIHZv
aWQgc2V0RGF0YShXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYg
ZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQogICAgIC8vIEZJWE1FOiBoYWx0QXRGcmFtZSBzaG91
bGQgYmUgc2l6ZV90LgogICAgIGJvb2wgZGVjb2RlKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6
R0lGUXVlcnksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKTsKIApAQCAtMzE2LDYgKzMxNiw2IEBAIHBy
aXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxHSUZGcmFtZUNvbnRleHQ+ID4gbV9m
cmFtZXM7CiAgICAgc2l6ZV90IG1fY3VycmVudERlY29kaW5nRnJhbWU7CiAKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOwogICAg
IGJvb2wgbV9wYXJzZUNvbXBsZXRlZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmlu
ZGV4IGM3MTdjNDVkMzA1N2MwNTUzNmVlNjA1MGY5Mzk3MDQ2ZDEwZGYyYTcuLmMwNzEzNDViOGJm
MzY5YjgwMjcxZmJkZjBhMGNlMDE3NGYwNTAzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIu
Y3BwCkBAIC01Miw3ICs1Miw3IEBAIElDT0ltYWdlRGVjb2Rlcjo6SUNPSW1hZ2VEZWNvZGVyKEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiAKIElDT0ltYWdl
RGVjb2Rlcjo6fklDT0ltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBJQ09JbWFnZURl
Y29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkK
K3ZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCmluZGV4IGZiN2E5MDNiMmEwNzUzOTQ5MTdh
YmJiZjExYjFjZWQ4M2ZmNDMyYTAuLjEwZWU5YjRkMmU4YzlkODg3ZTFkMmI4YmUxMzliYjc0Mjcx
ZDU3YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2ljby9JQ09JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGlj
OgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRl
bnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiaWNvIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRh
KFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNl
dERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5h
bDsKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCBmaW5hbDsKICAgICBJbnRTaXplIGZyYW1lU2l6
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdCBmaW5hbDsKICAgICBib29s
IHNldFNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHAKaW5kZXggZmQzNDViYjc4NmZmMDhkOTQ2NTkzMGFhNGRmNDhkZjE3YWJmMzA1Yy4uNWNm
YWM5ZjIzNTdlMmUxMmM2ODY0MDBiMjY3ODhhZTdmOGJlMTM1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuY3BwCkBAIC0yMjIsNyArMjIyLDcgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJr
ZXIoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKIAogc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7Ci0g
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgYnVmZmVyOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlciA9
IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkgewogICAg
ICAgICBpZiAoIWlzSUNDTWFya2VyKG1hcmtlcikpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAg
LTIzNiwxMyArMjM2LDEzIEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJv
ZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFya2VyU2l6ZSA9IG1hcmtlci0+ZGF0YV9sZW5n
dGggLSBpY2NIZWFkZXJTaXplOwotICAgICAgICBidWZmZXItPmFwcGVuZChyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2Vy
U2l6ZSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOwogICAgIH0K
IAotICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVyOworICAgIHJldHVy
biBidWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKQEAgLTMyMCw3
ICszMjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYnl0ZXNUb1NraXAgPSBzdGQ6Om1heChudW1C
eXRlcyAtIGJ5dGVzVG9Ta2lwLCBzdGF0aWNfY2FzdDxsb25nPigwKSk7CiAgICAgfQogCi0gICAg
Ym9vbCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBv
bmx5U2l6ZSkKKyAgICBib29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkKICAgICB7CiAgICAgICAgIG1fZGVjb2Rp
bmdTaXplT25seSA9IG9ubHlTaXplOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMElt
YWdlRGVjb2Rlci5jcHAKaW5kZXggYmVjZjY0NTAyNzdlZWI3NGIwOWRlNTJlZTE4MmZmNmUxMWVk
Mjc2Mi4uMjA0NzNmMGVlZWJiNTZjNzEzMTRmNjU1NmJkYTA5MDMzNDkwNzQ0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIw
MDBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzgwLDcgKzM4MCw3
IEBAIHZvaWQgSlBFRzIwMDBJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKICAgICB9CiAKICAgICBzdHJ1Y3QgUmVhZGVyIHsKLSAgICAgICAg
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YTsKKyAgICAgICAgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGE7CiAgICAgICAgIHNpemVfdCBvZmZzZXQ7CiAgICAg
fSByZWFkZXIgPSB7ICptX2RhdGEsIDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApp
bmRleCBjMTJjNDU5YTVhM2U1YjM1MWM1YmNjNjJiZjAwYjhhMjgxYmQ1YmEzLi40Y2JkMzIzZDlh
NzUwMjZlZjg2NThmMzgxNmRkNzM4ZDM3Y2E4ZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVy
LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9yZWFkT2Zmc2V0ID0g
MDsKICAgICB9CiAKLSAgICBib29sIGRlY29kZShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50JiBkYXRhLCBib29sIHNpemVPbmx5LCB1bnNpZ25lZCBoYWx0QXRGcmFtZSkKKyAgICBib29s
IGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwg
Ym9vbCBzaXplT25seSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpCiAgICAgewogICAgICAgICBtX2Rl
Y29kaW5nU2l6ZU9ubHkgPSBzaXplT25seTsKICAgICAgICAgUE5HSW1hZ2VEZWNvZGVyKiBkZWNv
ZGVyID0gc3RhdGljX2Nhc3Q8UE5HSW1hZ2VEZWNvZGVyKj4ocG5nX2dldF9wcm9ncmVzc2l2ZV9w
dHIobV9wbmcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCmluZGV4IDAyZjFiMDlk
YmM3NjUxNjAxZjkyMmRkZTI5ZjgwNWE2NTg3MWUyZDIuLmIxYmVjNTVlNzhjNDM0ODAxYzI1NGFj
ZTBkZjU5OTMxYTM2Yjc0YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcApAQCAt
NDcsNyArNDcsNyBAQCBXRUJQSW1hZ2VEZWNvZGVyOjpXRUJQSW1hZ2VEZWNvZGVyKEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZQogCiBXRUJQSW1hZ2VEZWNvZGVy
Ojp+V0VCUEltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBXRUJQSW1hZ2VEZWNvZGVy
OjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lk
IFdFQlBJbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1
cm47CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUoc2l6
ZV90IGZyYW1lSW5kZXgsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIC8vIFRoaXMgY2FuIGJl
IGV4ZWN1dGVkIGJvdGggaW4gdGhlIG1haW4gdGhyZWFkICh3aGVuIG5vdCB1c2luZyBhc3luYyBk
ZWNvZGluZykgb3IgaW4gdGhlIGRlY29kaW5nIHRocmVhZC4KICAgICAvLyBXaGVuIGV4ZWN1dGVk
IGluIHRoZSBkZWNvZGluZyB0aHJlYWQsIGEgY2FsbCB0byBzZXREYXRhKCkgZnJvbSB0aGUgbWFp
biB0aHJlYWQgbWF5IGNoYW5nZSB0aGUgZGF0YQogICAgIC8vIHRoZSBXZWJQRGVtdXhlciBpcyB1
c2luZywgbGVhdmluZyBpdCBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUsIHNvIHdlIG5lZWQgdG8g
cHJvdGVjdCB0aGUgZGF0YS4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4g
cHJvdGVjdGVkRGF0YShtX2RhdGEpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudD4gcHJvdGVjdGVkRGF0YShtX2RhdGEpOwogICAgIFdlYlBEYXRhIGlucHV0
RGF0YSA9IHsgcHJvdGVjdGVkRGF0YS0+ZGF0YSgpLCBwcm90ZWN0ZWREYXRhLT5zaXplKCkgfTsK
ICAgICBXZWJQRGVtdXhTdGF0ZSBkZW11eGVyU3RhdGU7CiAgICAgV2ViUERlbXV4ZXIqIGRlbXV4
ZXIgPSBXZWJQRGVtdXhQYXJ0aWFsKCZpbnB1dERhdGEsICZkZW11eGVyU3RhdGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1h
Z2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJw
L1dFQlBJbWFnZURlY29kZXIuaAppbmRleCBhZjM2NWU5Y2Y5YzdjZTk1MzhiNjRiYTc4OWJmMDE3
ZDQ4ZjZlZGUxLi5kZDI4YmM4OGRmNWMwZmEzYzE1NzM3ODY5YjI2MDk3M2FhYTBkMjNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJ
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+V0VCUEltYWdlRGVjb2RlcigpOwogCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5z
aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIndlYnAiX3M7IH0KLSAgICB2b2lkIHNldERh
dGEoU2hhcmVkQnVmZmVyJiwgYm9vbCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsKICAgICBTY2FsYWJsZUltYWdlRGVjb2RlckZy
YW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBvdmVycmlkZTsKICAgICBSZXBl
dGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc2l6ZV90
IGZyYW1lQ291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2ZyYW1lQ291bnQ7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggOTA5ZThl
NzY4YWRiNjhiYWIyODQ0NWQyODI3MzYwYTNmM2ZhMjJjMy4uYjIzNzdmZTM0MTFkMmFjNDAxNTEz
YmYwOWFlOGNjYWU3ODZiZDhlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KQEAgLTIzNiwxNCArMjM2LDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCiAKICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKFt0
eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlRmxhdFJURkRd
KSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgs
IGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAg
aWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBS
ZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0
dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZFJURkQoKmJ1ZmZlcikgPyBSZWFkZXJSZXN1bHQ6OlJl
YWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKICAgICB9CiAKICAgICBpZiAo
W3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVSVEZdKSB7
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVSVEYsIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBl
UlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgICAgICBpZiAobV9jaGFuZ2VD
b3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6
UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAgICByZXR1cm4gYnVmZmVyICYm
IHJlYWRlci5yZWFkUlRGKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRl
clJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CkBAIC0yNTEsNyArMjUxLDcgQEAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICNlbmRpZiAvLyAhUExBVEZPUk0oTUFDQ0FUQUxZU1Qp
CiAKICAgICBpZiAoW3N1cHBvcnRlZEltYWdlVHlwZXMoKSBjb250YWluc09iamVjdDp0eXBlXSkg
ewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCB0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250
ZXh0KCkpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
c3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgdHlwZSwgbV9wYXN0
ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hh
bmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRX
YXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVh
ZEltYWdlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCB0eXBlLCBpdGVtSW5mby5wcmVmZXJyZWRQ
cmVzZW50YXRpb25TaXplKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6
OkRpZE5vdFJlYWRUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggMTY3Y2VmMDJkNzhkNzk0ZGVhYThlNWRkYWY0
ZGQ2NmMzZDJjY2E0NS4uMTZiM2Q1ZDQ0MTVkMjU4NTE1ZjY2MGE4NmFjNmNlZmJkY2RiNjRjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJv
YXJkSU9TLm1tCkBAIC0zMzgsNyArMzM4LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKICAgICByZXR1cm4gMDsKIH0KIAotaW50
NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwg
Y29uc3QgU3RyaW5nJikKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JU
eXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVy
biAwOwogfQpAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0
ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIAogICAgIEFTU0VSVChjb250
ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBp
IDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRh
OmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250
ZW50LmNsaWVudFR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIg
YWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBpZiAo
Y29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIGF1dG8gd2ViQXJjaGl2
ZURhdGEgPSBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpOwpA
QCAtNDc5LDcgKzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAg
IH0KIAogICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsKLSAg
ICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVk
VW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0
Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1
dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKKyAg
ICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVk
VW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0
Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1
dGVkU3RyaW5nRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBl
cnJvcjpudWxscHRyXSkKICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFk
ZFJlcHJlc2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTUwMSw3
ICs1MDEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4oY29u
dGVudC5jb250ZW50T3JpZ2luKTsKLSAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRE
YXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKKyAgICBbcmVw
cmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVm
ZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKIAogICAgIHJlZ2lzdGVySXRlbVRv
UGFzdGVib2FyZChyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyLmdldCgpLCBtX3Bhc3RlYm9hcmQu
Z2V0KCkpOwogfQpAQCAtNTE0LDE0ICs1MTQsMTQgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIGF1dG8m
IGRhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YTsKICAgICBBU1NFUlQodHlwZXMuc2l6
ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHR5cGVz
LnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgYWRkRGF0YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ld
XTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsK
IAogICAgIGlmIChwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhICYmICFwYXN0ZWJvYXJkSW1h
Z2UucmVzb3VyY2VNSU1FVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byB1dGlPck1JTUVU
eXBlID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGU7CiAgICAgICAgIGlmICghaXNE
ZWNsYXJlZFVUSSh1dGlPck1JTUVUeXBlKSkKICAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUgPSBV
VElGcm9tTUlNRVR5cGUodXRpT3JNSU1FVHlwZSk7CiAKLSAgICAgICAgYXV0byBpbWFnZURhdGEg
PSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAg
YXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKil1dGlPck1JTUVU
eXBlXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJl
c2VudGF0aW9uU2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXplXTsKICAgICAgICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3Vn
Z2VzdGVkTmFtZV07CkBAIC02MzUsNyArNjM1LDcgQEAgc3RhdGljIFJldGFpblB0cjxXZWJJdGVt
UHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdD4gY3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmEK
ICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25T
dHlsZTpXZWJQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGluZV07CiAKICAgICBpZiAoZGF0
YS5oYXNTYW1lT3JpZ2luQ3VzdG9tRGF0YSgpIHx8ICFkYXRhLm9yaWdpbigpLmlzRW1wdHkoKSkg
ewotICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVT
aGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFs
aXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpKSB7CiAgICAgICAgICAgICAvLyBXZSBzdGFzaCB0aGUgbGlz
dCBvZiBzdXBwbGllZCBwYXN0ZWJvYXJkIHR5cGVzIGluIHRlYW1EYXRhIGhlcmUgZm9yIGNvbXBh
dGliaWxpdHkgd2l0aCBkcmFnIGFuZCBkcm9wLgogICAgICAgICAgICAgLy8gU2luY2UgdGhlIGNv
bnRlbnRzIG9mIGl0ZW0gcHJvdmlkZXJzIGNhbm5vdCBiZSBsb2FkZWQgcHJpb3IgdG8gZHJvcCwg
YnV0IHRoZSBwYXN0ZWJvYXJkIHR5cGVzIGFyZQogICAgICAgICAgICAgLy8gY29udGFpbmVkIHdp
dGhpbiB0aGUgY3VzdG9tIGRhdGEgYmxvYiBhbmQgd2UgbmVlZCB0byB2ZW5kIHRoZW0gdG8gdGhl
IHBhZ2Ugd2hlbiBmaXJpbmcgYGRyYWdvdmVyYApAQCAtNjcyLDggKzY3Miw4IEBAIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4odmFs
dWUpOwotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOworICAg
ICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4o
dmFsdWUpOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJp
bmcgKiljb2NvYVR5cGVdOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9uc1Rv
UmVnaXN0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmll
d0NvbnZlcnRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29u
dmVydGVySU9TLm1tCmluZGV4IDU0NDY1M2M0NDAzZDI2MDQwYTU1ZDIzZTkzNjkxYmZlZGNjOTJi
NDIuLjdhNGEyYjE2NWIyZmE3ZDIwZDViNmU0YzJkNjVmZTYzZWYwYjAyNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCkBAIC04
Miw3ICs4Miw3IEBAIEBlbmQKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUHJldmlld0NvbnZlcnRl
cjo6UHJldmlld0NvbnZlcnRlcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUHJl
dmlld0NvbnZlcnRlclByb3ZpZGVyJiBwcm92aWRlcikKLSAgICA6IG1fcHJldmlld0RhdGEgeyBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICA6IG1fcHJldmlld0RhdGEgeyBtYWtlVW5pcXVl
UmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9vcmlnaW5hbFJlc3BvbnNlIHsg
cmVzcG9uc2UgfQogICAgICwgbV9wcm92aWRlciB7IHByb3ZpZGVyIH0KICAgICAsIG1fcGxhdGZv
cm1EZWxlZ2F0ZSB7IGFkb3B0TlMoW1tXZWJQcmV2aWV3Q29udmVydGVyRGVsZWdhdGUgYWxsb2Nd
IGluaXRXaXRoRGVsZWdhdGU6KnRoaXNdKSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDY3N2Y4Y2FkYWI1OTEyM2UxYjYyZDFiYWMyZDE5MDhi
ZjY3NmEyZjkuLjBkMjU0OThiODZiZWYxODVkMzc2OWQ1YTViYzBiYzJmNzMxYzcwZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0yNTAsNyAr
MjUwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBDb2xvciYgY29sb3IpCiAKIHN0
YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBlcihjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBh
c3RlYm9hcmRJbWFnZSkKIHsKLSAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3Jh
cHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5y
ZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0byB3cmFwcGVyID0g
YWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50
czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOwogICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dl
c3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHBhc3RlYm9hcmRJbWFnZS51cmwudXJsLCBwYXN0ZWJv
YXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSldOwogICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxl
YXNlKCk7CiB9CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3Rl
Ym9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3cKICAg
ICAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlw
ZSgpKSkpIHsKICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0
ZW1JbmRleChsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4LCBzdHJhdGVneSwg
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gYXR0
cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRX
aXRoUlRGRDpkYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmls
XSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtb
TlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAg
ICAgICAgICAgICAgICAgdGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAg
ICAgICAgICAgICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpp
bmRleCAzNTNkMDA2YjkwY2JjZTYwOWU2ZGZkMzdjMjgwODEzMWYyMTRiOGRhLi44OGQwNDAyNTg0
MzcwMmU0YWE0ZjVhOWE1NTZiODgxYzZlNDBjMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpAQCAtMTI4LDExICsxMjgsMTEgQEAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBbcGFzdGVib2FyZEl0
ZW0gc2V0U3RyaW5nOndlYkNvbnRlbnQtPmRhdGFJblN0cmluZ0Zvcm1hdCBmb3JUeXBlOk5TUGFz
dGVib2FyZFR5cGVTdHJpbmddOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3
ZWJDb250ZW50LT5jbGllbnRUeXBlcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIFtwYXN0ZWJv
YXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5
cGVzW2ldKS5nZXQoKV07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJD
b250ZW50LT5jbGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50LT5jbGllbnRUeXBl
c1tpXSkuZ2V0KCldOwogCiAgICAgICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7
CiAgICAgICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKHdlYkNvbnRlbnQtPmNvbnRlbnRPcmlnaW4p
OwotICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFk
eVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOwor
ICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRv
VVRJVW5sZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlw
ZSgpKSkuZ2V0KCldOwogICAgIH0KIAogICAgIHJldHVybiBwYXN0ZWJvYXJkSXRlbTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1t
CmluZGV4IGQ5YjdkMjQ4MDM4YzJkYjhhYWIwOTJjYjkxZmZhNTZmMmNiNGNlNzMuLmMzYjRkMmQ5
NjIxNzQ3MWM3MzVlMjRmZTdhNWY5ZDkyMzdkZjQ3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtMjYzLDggKzI2
Myw4IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YSYgZGF0YSkKICAgICAgICAgaWYgKHBsYXRmb3JtVHlwZS5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1
dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVm
ZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnBsYXRmb3JtRGF0YS5n
ZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0
byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKQEAgLTI3NCw3ICsy
NzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2Fy
ZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7CiAKICAgICBpZiAoc2hvdWxkV3JpdGVDdXN0b21E
YXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVh
dGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRvIHNlcmlh
bGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6
c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpjb2NvYVR5cGUoKSldOwogICAgIH0KIApAQCAtMzQxLDEyICszNDEsMTIgQEAgaW50NjRfdCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMpCiAgICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOmNyZWF0ZU5T
QXJyYXkocGFzdGVib2FyZFR5cGVzKS5nZXQoKSBvd25lcjpuaWxdOwogfQogCi1pbnQ2NF90IFBs
YXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJk
OjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAoIWNhbldyaXRlUGFzdGVib2FyZFR5
cGUocGFzdGVib2FyZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEJPT0wgZGlkV3Jp
dGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CisgICAgQk9PTCBkaWRX
cml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRU
eXBlXTsKICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0
dXJuIGNoYW5nZUNvdW50KCk7CkBAIC01MDQsOCArNTA0LDggQEAgc3RhdGljIFJldGFpblB0cjxO
U1Bhc3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3Vz
dG9tRGEKICAgICAgICAgaWYgKCFwbGF0Zm9ybVR5cGUpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0
cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3Rk
OjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkp
CisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9y
bURhdGEgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVm
ZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAg
W2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwog
ICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdP
ckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihz
dHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKaW5kZXggNjgxM2Q1ZGE3ZGNi
MGZjMjU5ZjFiZDFlZDBhNTRjMWExYTlmZDljZi4uNzk2NTU0ZjRjOTc2NDUxNDAxZTFhMTIzNzQ2
ODcwNDBiMjRiMWNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaApAQCAtNDMsNyArNDMsNyBA
QCBjbGFzcyBNZWRpYVNhbXBsZTsKIGNsYXNzIE1lZGlhU3RyZWFtUHJpdmF0ZTsKIGNsYXNzIE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlOwogY2xhc3MgUGxhdGZvcm1BdWRpb0RhdGE7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgTWVk
aWFSZWNvcmRlclByaXZhdGVPcHRpb25zOwogCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAg
ICB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBdWRpb1ZpZGVvU2VsZWN0ZWRUcmFja3Mg
c2VsZWN0VHJhY2tzKE1lZGlhU3RyZWFtUHJpdmF0ZSYpOwogCi0gICAgdXNpbmcgRmV0Y2hEYXRh
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+OworICAgIHVzaW5nIEZldGNoRGF0YUNh
bGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT47CiAgICAgdmlydHVhbCB2
b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmKSA9IDA7CiAgICAgdmlydHVhbCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlTW9jay5jcHAKaW5kZXggYzI1ZGY5MTU3NGE2NWJjNDFiZGI3MDY3OGRjNDc3MjQ4MzZkZDE0
NS4uNDk4ZDRlZTEzNDBjNGI5NDAwMWI2MGMzNDQ3OWI3ZjcyZDVjOGU2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZU1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIE1lZGlhUmVj
b3JkZXJQcml2YXRlTW9jazo6Z2VuZXJhdGVNb2NrQ291bnRlclN0cmluZygpCiAKIHZvaWQgTWVk
aWFSZWNvcmRlclByaXZhdGVNb2NrOjpmZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB7CiAgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX2J1ZmZlckxvY2sgfTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZh
bHVlIHsgbV9idWZmZXIuY2hhcmFjdGVyczgoKSwgbV9idWZmZXIubGVuZ3RoKCkgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKaW5kZXgg
MjExZjc1ZWU3M2FmNjkxOWU3ZjRjOTk1OGUwY2QzNDgyNTMyZDA5Zi4uOWMyYzc5N2I4MTk1MTJk
OGZkNTc5MDE1ZGMzYjZlNDA1ZTNiYzYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgYXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIoTWVkaWFTYW1wbGUmKTsKICAgICB2b2lk
IGFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3Qg
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgc2l6ZV90KTsK
ICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKLSAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYpOworICAgIHZv
aWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYpOwogCiAgICAgdm9pZCBwYXVzZSgpOwogICAgIHZvaWQg
cmVzdW1lKCk7CkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZmluaXNo
ZWRGbHVzaGluZ1NhbXBsZXMoKTsKICAgICB2b2lkIGNvbXBsZXRlRmV0Y2hEYXRhKCk7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKIAogICAgIGJvb2wgbV9oYXNBdWRpbyB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX2hhc1ZpZGVvIHsgZmFsc2UgfTsKQEAgLTExNyw4ICsxMTcsOCBAQCBwcml2
YXRlOgogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsKIAogICAgIExvY2sg
bV9kYXRhTG9jazsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGEgV1RGX0dVQVJERURf
QllfTE9DSyhtX2RhdGFMb2NrKTsKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFM
b2NrKTsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOwogCiAgICAg
UmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVkaW9Gb3JtYXREZXNjcmlwdGlv
bjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBtX2F1
ZGlvQ29tcHJlc3NvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5tbQppbmRleCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNjZGY1ZTgzODRmMzZi
N2I1M2Y1Li44NDg0MTAwZWFjNWUxMTVlOWIwY2YwMTIwYmFiZjc4ZmIxYTEyNzRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBA
IC0xMzcsMTAgKzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigpOwogICAgIH0KIAot
ICAgIC8vIEF0IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBiZSB3cml0aW5nIGFu
eSBkYXRhLCBzbyBpdCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVsbGlmeSBtX2RhdGEg
d2l0aG91dCBsb2NraW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQogICAgICAgICBbbV93
cml0ZXJEZWxlZ2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChh
dXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5k
bGVyKSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CkBAIC00OTUsNyAr
NDkzLDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGluZygp
CiAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZldGNoRGF0
YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpm
ZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX2ZldGNoRGF0
YUNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CiAKQEAgLTUz
NywxOCArNTM1LDEzIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXBsZXRl
RmV0Y2hEYXRhKCkKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7
IG1fZGF0YUxvY2sgfTsKLSAgICBpZiAoIW1fZGF0YSkgewotICAgICAgICBtX2RhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBtX2RhdGEtPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIHNp
emUpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6dGFrZURhdGEoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0
YUxvY2sgfTsKLSAgICBhdXRvIGRhdGEgPSBXVEZNb3ZlKG1fZGF0YSk7Ci0gICAgcmV0dXJuIGRh
dGE7CisgICAgcmV0dXJuIG1fZGF0YS50YWtlKCk7CiB9CiAKIHZvaWQgTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OnBhdXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRGF0YVVSTERlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRGF0YVVSTERlY29kZXIuaAppbmRleCBhOWIyOWQ1OWU5YWEzYjQ2NTU0MTViZDhiZWYwOTg0
YzU0NGI3M2YwLi5jZGVlNjAzNTIzY2Q2Njk0NWY0MjhmNjk0Nzg5NjBmNmZkNzRjNzdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCkBA
IC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIERhdGFVUkxE
ZWNvZGVyIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5oCmluZGV4IGZhZmRmZTg3YzgzN2U2MTU3ZDJmMTNlOWE3Y2EwMDk2OWQ1MGIxYzcu
LjRiZWJjYjUwOThkMTVjMjk2NmVkOGM3ZWUxMzZhZTNhMmFlNGEyMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKQEAgLTg0LDcgKzg0
LDcgQEAgY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN5bmNocm9u
b3VzTG9hZGVyTWVzc2FnZVF1ZXVlOwogY2xhc3MgVGltZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKaW5k
ZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZlYmU3MDQ4ODRlMmU3MzY2Zi4uYmE4ZmQ0ZmY0ZjFl
NDFjOWFkNGZhNzRhNDJiZTRlMmJkMTFhYTg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKQEAgLTM2LDkg
KzM2LDkgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OlJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBk
ZWZhdWx0OwogCiBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50KCkg
PSBkZWZhdWx0OwogCi12b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVy
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZl
QnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRh
KGhhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0
aCk7CisgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5oCmluZGV4IGI2MzM3ZDU2Y2U4Y2Q5YmVmZjlkZmJlMTEzNjYyYmM3NzU2YjY1MzcuLmM0
ZjA1NDg1ZjI4NzBiMTE2ZGE3Yzc2MGQzYzBmY2U5NmVjMmI0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKQEAg
LTUwLDcgKzUwLDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZUVycm9y
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGVudW0gQ2Fj
aGVTdG9yYWdlUG9saWN5IHsKICAgICBTdG9yYWdlQWxsb3dlZCwKQEAgLTY2LDcgKzY2LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVu
c2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyp0b3Rh
bEJ5dGVzVG9CZVNlbnQqLykgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCAvKmVuY29kZWRE
YXRhTGVuZ3RoKi8pIHsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVy
cm9yJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggMWZmMDY1MjE2ZmE2
ODA4ODE5MzcxNGJjZjJiY2RhZjY5NmYwMjQwNi4uMDA4ZTIyNmZmOTE5MDA0YjQ1MTQ4YTI0NzI2
MTE2MTUwOTg5NjI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtNDEsOCAr
NDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRv
cjo6RGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIERhdGEo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYg
cmVzb3VyY2UpCi0gICAgICAgIDogYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAg
ICAgICwgb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKKyAgICAgICAgOiBvcmlnaW5hbFJlc3Bv
bnNlKHJlc3BvbnNlKQogICAgICAgICAsIHJlc291cmNlKCZyZXNvdXJjZSkgeyB9CiAKICAgICBz
dHJ1Y3QgVGFza0RhdGEgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VGFza0RhdGE+IHsKQEAgLTU1
LDkgKzU0LDkgQEAgc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgICAg
ICBzaXplX3QgbmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleCB7IDAgfTsKICAgICAgICAgZW51bSBj
bGFzcyBSZXNwb25zZVN0YXRlIDogdWludDhfdCB7IE5vdFN5bnRoZXNpemVkWWV0LCBXYWl0aW5n
Rm9yU2Vzc2lvbiwgU2Vzc2lvbkNhbGxlZENvbXBsZXRpb25IYW5kbGVyIH0gcmVzcG9uc2VTdGF0
ZSB7IFJlc3BvbnNlU3RhdGU6Ok5vdFN5bnRoZXNpemVkWWV0IH07CiAgICAgfTsKLSAgICAKKwog
ICAgIEhhc2hNYXA8UmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzaz4sIHN0ZDo6
dW5pcXVlX3B0cjxUYXNrRGF0YT4+IHRhc2tEYXRhOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBSZXNvdXJjZVJlc3Bv
bnNlIG9yaWdpbmFsUmVzcG9uc2U7CiAgICAgZW51bSBjbGFzcyBTdWNjZXNzZnVsbHlGaW5pc2hl
ZExvYWRpbmcgOiBib29sIHsgTm8sIFllcyB9IHN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyB7
IFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6Tm8gfTsKICAgICBSZWZQdHI8UGxhdGZvcm1N
ZWRpYVJlc291cmNlPiByZXNvdXJjZTsKQEAgLTEwNiwyMiArMTA1LDIyIEBAIHZvaWQgUmFuZ2VS
ZXNwb25zZUdlbmVyYXRvcjo6cmVtb3ZlVGFzayhXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sg
KnRhc2spCiB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lm
Qnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBj
b25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2UmIHJhbmdlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBEYXRhJiBkYXRhKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlcjsKLSAgICBhdXRvIGJ1
ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBi
ZSBhYmxlIHRvIGp1c3QgbWFrZSBhIHJhbmdlIHdpdGggYSAqIGFmdGVyIHRoZSAvIGJ1dCBBVkZv
dW5kYXRpb24gZG9lc24ndCBhY2NlcHQgc3VjaCByYW5nZXMuCiAgICAgLy8gSW5zdGVhZCwgd2Ug
anVzdCB3YWl0IHVudGlsIHRoZSBsb2FkIGhhcyBjb21wbGV0ZWQsIGF0IHdoaWNoIHRpbWUgd2Ug
d2lsbCBrbm93IHRoZSBjb250ZW50IGxlbmd0aCBmcm9tIHRoZSBidWZmZXIgbGVuZ3RoLgogICAg
IGlmICghZXhwZWN0ZWRDb250ZW50TGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKKyAgICBhdXRv
IGJ1ZmZlclNpemUgPSBkYXRhLmJ1ZmZlci5zaXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUgPCBy
YW5nZS5iZWdpbikKICAgICAgICAgcmV0dXJuOwotICAgIAorCisgICAgYXV0byBidWZmZXIgPSBk
YXRhLmJ1ZmZlci5nZXQoKTsKICAgICBhdXRvKiB0YXNrRGF0YSA9IGRhdGEudGFza0RhdGEuZ2V0
KHRhc2spOwogICAgIGlmICghdGFza0RhdGEpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBh
dXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIHRh
c2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRo
aXMgfV0geworCisgICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0
YXNrKSwgYnVmZmVyLCBidWZmZXJTaXplLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEg
fSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKICAgICAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICAgICAgaWYgKFt0YXNrIHN0YXRlXSAhPSBOU1VSTFNlc3Npb25UYXNr
U3RhdGVSdW5uaW5nKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMwLDcgKzEyOSw3IEBAIHZv
aWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFu
Z2VSZWNlaXZlZChXZWJDb3JlTlNVCiAgICAgICAgIGF1dG8mIHJhbmdlID0gdGFza0RhdGEtPnJh
bmdlOwogICAgICAgICBhdXRvJiBieXRlSW5kZXggPSB0YXNrRGF0YS0+bmV4dEJ5dGVUb0dpdmVC
dWZmZXJJbmRleDsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIGlmIChieXRl
SW5kZXggPj0gYnVmZmVyLT5zaXplKCkpCisgICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1
ZmZlclNpemUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZl
clZpZXcgPSBidWZmZXItPmdldFNvbWVEYXRhKGJ5dGVJbmRleCk7CiAgICAgICAgICAgICBpZiAo
IWJ1ZmZlclZpZXcuc2l6ZSgpIHx8IGJ5dGVJbmRleCA+IHJhbmdlLmVuZCkKQEAgLTE3NSw3ICsx
NzQsNyBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEoY29ucwogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgaWYgKGRhdGEuc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nID09IERhdGE6
OlN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6WWVzKQotICAgICAgICByZXR1cm4gZGF0YS5i
dWZmZXItPnNpemUoKTsKKyAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLnNpemUoKTsKIAogICAg
IC8vIEZJWE1FOiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkg
c2hvdWxkIHJldHVybiBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5zdGVhZCBvZiB1cyBkb2luZyB0
aGlzIGNoZWNrIGhlcmUuCiAgICAgYXV0byBleHBlY3RlZENvbnRlbnRMZW5ndGggPSBkYXRhLm9y
aWdpbmFsUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CkBAIC0yNDQsNyArMjQzLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKSBmaW5hbAorICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgZmluYWwKICAgICB7CiAgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmICghbV9nZW5lcmF0b3IpCkBA
IC0yNTIsNyArMjUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byogZGF0YSA9IG1fZ2VuZXJh
dG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcpOwogICAgICAgICBpZiAoIWRhdGEpCiAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGRhdGEtPmJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAg
ICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoKmRh
dGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAppbmRleCA0MDQ4ODVhZTYzNzZmY2U2
ODA0MGQyYTA1YzAwYmVjNDdmZTE2YWE4Li5jZTRjMjU0NWNkZTBmMmY0NmFjMzM4Zjk2YzQ5MDg4
ZWI0NWQwOTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaApAQCAtNTAsNyArNTAsNyBAQCBjbGFz
cyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZm
ZXJEYXRhVmlldzsKIGNsYXNzIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDsKIGVu
dW0gY2xhc3MgU2hvdWxkQ29udGludWVQb2xpY3lDaGVjayA6IGJvb2w7CkBAIC0xNTgsNyArMTU4
LDcgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uIDogTlNP
YmplY3QgewogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVJlc291cmNlKilyZXNvdXJjZSBzZW50Qnl0ZXM6KHVuc2lnbmVkIGxvbmcgbG9uZylieXRlc1Nl
bnQgdG90YWxCeXRlc1RvQmVTZW50Oih1bnNpZ25lZCBsb25nIGxvbmcpdG90YWxCeXRlc1RvQmVT
ZW50OwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJl
c291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlc3BvbnNlOihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJilyZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJiljb21wbGV0aW9uSGFu
ZGxlcjsKIC0gKEJPT0wpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYpcmVzcG9uc2U7Ci0tICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJilkYXRhOworLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUg
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKWRhdGE7CiAtICh2b2lkKXJlc291
cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJl
Y2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNl
IHJlcXVlc3Q6KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKXJlcXVlc3QgY29tcGxldGlvbkhh
bmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
PiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBhY2Nlc3NDb250cm9sQ2hlY2tGYWls
ZWRXaXRoRXJyb3I6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKWVycm9yOwogLSAodm9p
ZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNv
dXJjZSBsb2FkRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJill
cnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlMDQwMTBhOTgxMWI0YzlhZTE0OTQ5
OTg3MDFjYTE1NDg5ZjU3MTZjLi44Yzg5ZDkzODY1NzkzM2ExZGEyOTAzMTk5MTU4NGM0ZGIyZmFh
OWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dl
YkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC02MDgsNyArNjA4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNv
dXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENh
Y2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
dW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlOwotICAgIHZv
aWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+
JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGFj
Y2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRG
aW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKQEAgLTY1Miw3ICs2NTIsNyBAQCBib29sIFdlYkNvcmVOU1VSTFNlc3Npb25E
YXRhVGFza0NsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyYwog
ICAgIHJldHVybiBbbV90YXNrIHJlc291cmNlOiZyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNl
OnJlc3BvbnNlXTsKIH0KIAotdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6
OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50
OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX3Rh
c2tMb2NrIH07CiAgICAgaWYgKCFtX3Rhc2spCkBAIC05MTUsMTEgKzkxNSwxMSBAQCAtIChCT09M
KXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVz
cG9uc2U6KGNvbnN0IFJlcwogICAgIHJldHVybiByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRU
UEhlYWRlck5hbWU6OkNvbnRlbnRSYW5nZSkuaXNFbXB0eSgpOwogfQogCi0tICh2b2lkKXJlc291
cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJilkYXRhCistICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpZGF0YQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFy
ZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRk
RGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEg
PSBXVEZNb3ZlKGRhdGEpXSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2
ZWQgKz0gZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+
IGRhdGFEZWxlZ2F0ZSA9IChpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYu
Z2V0KCkuc2Vzc2lvbi5kZWxlZ2F0ZTsKICAgICAgICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRh
OildKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bERvd25sb2FkLmNwcAppbmRleCBjMzZlMWY4ODc2NDMwNDYwY2U3NTBhM2I4YzY1OGM3MzRlY2Ix
NTA4Li4zNDk0NDU5MjU0YWM5M2ZjMTljYjEyMTUwYTYxYmMyYmNlZDAyZDZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNw
cApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZVJl
c3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVzcG9uc2UmJiByCiB9CiAKIAotdm9p
ZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVC
dWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCmluZGV4IGEzYWEwY2Y1ZmNk
Mjk1NWJiN2IxNmIxMWExYTgxY2E3NGFlNjFjOGQuLmNkZTQ0NDU3NzVmNzQ0MjMzMDUzMGI2NWIx
MzU3YmE2YmZkOWJiODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICBS
ZWY8Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYpOwogICAg
IHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1
bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgY3VybERpZFJlY2VpdmVS
ZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSBvdmVycmlkZTsKLSAgICB2b2lk
IGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRD
b21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYm
LCBDZXJ0aWZpY2F0ZUluZm8mJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApp
bmRleCBiYmRhM2ZiZGE3NTgzZDk5MTkzMWRmZTE2OWY3YjNhOTEzM2U2ZGEyLi4wOTBkMDM5YmE0
NWRlMTAyOGVkZjc2ODRjNmQ3ZDJmMjk2ZTNhMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3Bw
CkBAIC0xMTksMTIgKzExOSwxMiBAQCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpDdXJsTXVsdGlwYXJ0
SGFuZGxlKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmIGNsaWVudCwgY29ucwogCiB9CiAKLXZv
aWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCit2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBT
dGF0ZTo6RW5kKQogICAgICAgICByZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3du
IHNvIGlnbm9yZSBldmVyeXRoaW5nLgogCi0gICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5kYXRh
KCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIubWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAogICAgIHdoaWxlIChwcm9jZXNzQ29u
dGVudCgpKSB7IH0KIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5k
bGU6OmRpZENvbXBsZXRlKCkKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6RW5kKSB7CiAgICAg
ICAgIC8vIEl0IHNlZW1zIHdlIGFyZSBzdGlsbCBub3QgYXQgdGhlIGVuZCBvZiB0aGUgcHJvY2Vz
c2luZy4KICAgICAgICAgLy8gUHVzaCBvdXQgdGhlIHJlbWFpbmluZyBkYXRhLgotICAgICAgICBt
X2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUo
bV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgbV9jbGllbnQuZGlk
UmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUobV9i
dWZmZXIpKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRI
YW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlw
YXJ0SGFuZGxlLmgKaW5kZXggNWMwOGJjYzVlYjNlNGJiY2MwMjliNDc2Nzg2OGY0M2UyZjk1YzM0
MS4uOWExYTFiYmQxOTM4YTE0ZjY5ZmNjZWUzZjBmODliOTdhNGEyMTg3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFy
dEhhbmRsZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q3VybE11bHRpcGFydEhhbmRsZUNsaWVudDsKIGNsYXNzIEN1cmxSZXNwb25zZTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxN
dWx0aXBhcnRIYW5kbGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDQsNyAr
NDQsNyBAQCBwdWJsaWM6CiAgICAgQ3VybE11bHRpcGFydEhhbmRsZShDdXJsTXVsdGlwYXJ0SGFu
ZGxlQ2xpZW50JiwgY29uc3QgU3RyaW5nJik7CiAgICAgfkN1cmxNdWx0aXBhcnRIYW5kbGUoKSB7
IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAg
dm9pZCBkaWRDb21wbGV0ZSgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xp
ZW50LmgKaW5kZXggZmQxM2ZkMzgxMzE0M2NiMjY1OWI4ZmQxZGIyNDQ0NzY1ZTk4YTU4MC4uYzgx
Mzg4NmE4ZDVjNWZhNmMxMmQxNDEzMzE5MTAxYWYyNTAyYTJhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFy
dEhhbmRsZUNsaWVudC5oCkBAIC0yOCwxMiArMjgsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ3VybFJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudCB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNv
bnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0
YUZyb21NdWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIH5DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50KCkg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0LmNwcAppbmRleCBkMzViMGU4MzkxOTUxZDM4NjM0ZTk5MDkzYjY4NjU2MjRkOTk3OTUx
Li5kODJkZDNjMTBhYzY0NzEzNTk5MWZkN2FlNjY5N2U5ZDhlMzEzZTg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAg
LTM5Niw3ICszOTYsNyBAQCBzaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVIZWFkZXIoU3Ry
aW5nJiYgaGVhZGVyKQogCiAvLyBjYWxsZWQgd2l0aCBkYXRhIGFmdGVyIGFsbCBoZWFkZXJzIGhh
dmUgYmVlbiBwcm9jZXNzZWQgdmlhIGhlYWRlckNhbGxiYWNrCiAKLXNpemVfdCBDdXJsUmVxdWVz
dDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitzaXplX3QgQ3Vy
bFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKIHsKICAgICBpZiAoaXNDb21wbGV0ZWRPckNhbmNlbGxlZCgpKQogICAgICAgICByZXR1
cm4gMDsKQEAgLTQ0NCw3ICs0NDQsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVh
ZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYgaGVhZGVycykKICAgICBpbnZv
a2VEaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIEFjdGlvbjo6Tm9uZSk7CiB9CiAKLXZvaWQg
Q3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFy
dChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29t
cGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzc3LDcgKzc3Nyw3IEBA
IGNvbnN0IFN0cmluZyYgQ3VybFJlcXVlc3Q6OmdldERvd25sb2FkZWRGaWxlUGF0aCgpCiAgICAg
cmV0dXJuIG1fZG93bmxvYWRGaWxlUGF0aDsKIH0KIAotdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVE
YXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2
b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgewogICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9kb3dubG9hZE11dGV4IH07CkBAIC03OTAsNyArNzkwLDcgQEAgdm9pZCBDdXJs
UmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1fZG93bmxvYWRGaWxlSGFuZGxlICE9IEZp
bGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgIEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIu
c2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVI
YW5kbGUsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwog
fQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9zZURvd25sb2FkRmlsZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCmluZGV4IDZiZDhh
NmJmYmEzNzUyY2VkZGRiYzUwMDllYWU4M2M0ZjBlZWQ2NDEuLjNjN2NkZDg4M2ViNjJiZmU5MmNm
MDQ0NWVkMjliZDI2ZWNlM2U5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEN1cmxSZXF1ZXN0Q2xpZW50OwogY2xhc3MgTmV0d29ya0xvYWRNZXRy
aWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1
ZTsKIAogY2xhc3MgQ3VybFJlcXVlc3QgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q3Vy
bFJlcXVlc3Q+LCBwdWJsaWMgQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQsIHB1YmxpYyBDdXJs
TXVsdGlwYXJ0SGFuZGxlQ2xpZW50IHsKQEAgLTEyMiw5ICsxMjIsOSBAQCBwcml2YXRlOgogICAg
IENVUkwqIHNldHVwVHJhbnNmZXIoKSBvdmVycmlkZTsKICAgICBzaXplX3Qgd2lsbFNlbmREYXRh
KGNoYXIqLCBzaXplX3QsIHNpemVfdCk7CiAgICAgc2l6ZV90IGRpZFJlY2VpdmVIZWFkZXIoU3Ry
aW5nJiYpOwotICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsK
KyAgICBzaXplX3QgZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
OwogICAgIHZvaWQgZGlkUmVjZWl2ZUhlYWRlckZyb21NdWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0
cmluZz4mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChS
ZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhRnJv
bU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRDb21wbGV0ZVRyYW5zZmVyKENVUkxjb2RlKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZENhbmNlbFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5hbGl6ZVRyYW5zZmVyKCk7
CkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgbmV0
d29ya0xvYWRNZXRyaWNzKCk7CiAKICAgICAvLyBEb3dubG9hZAotICAgIHZvaWQgd3JpdGVEYXRh
VG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB3
cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CiAgICAgdm9pZCBjbG9zZURvd25sb2FkRmlsZSgpOwogICAgIHZvaWQgY2xlYW51cERv
d25sb2FkRmlsZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCmluZGV4IDA4Yzg2YzdkNDY4NGJhNmY3OGQ2
MTZiNjhkMDY5MDRjMzdhOTY2NzcuLjM0Nzk4MzJmNTc2ZDQxMjhhZmE1MWM4MTQyNGNjZmQ3NDFk
ZjZhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdENsaWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEN1cmxSZXF1
ZXN0OwogY2xhc3MgQ3VybFJlc3BvbnNlOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xh
c3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxSZXF1ZXN0Q2xpZW50IHsKIHB1YmxpYzoKQEAgLTQz
LDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRTZW5kRGF0YShD
dXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcg
bG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFJl
Y2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJs
UmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0
JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgPSAwOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDgxOGQ1YTk1ZTNlMTI0ZGMzYTcyZjc0
M2U1Y2Q0NTNkNzE3ZTAxMGYuLjMwNWQ0ZTVjOWZjMjcwNzc1Nzg3YjBmOWE5MTk3OWMwODg4OWE4
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtMTQyLDE1ICsx
NDIsMTYgQEAgdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVS
ZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3UKICAgICB9KTsKIH0KIAotdm9pZCBDdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3Qm
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAK
ICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwotICAgIGNsaWVudCgpLT5kaWRSZWNlaXZl
QnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShidWZmZXIpLCBidWZmZXItPnNpemUoKSk7CisgICAg
YXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgIEN1
cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBjb250
aWd1b3VzQnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBjbGllbnQoKS0+ZGlk
UmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoY29udGlndW91c0J1ZmZlciksIGJ1ZmZl
ci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERp
ZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYgbWV0cmljcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3Vy
Y2VIYW5kbGVEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgKaW5kZXggNmQ1NTg2NDQ1MmZkNDZlZTc4MDBl
OTMxMjNiMTI4YmRjNjRjZTQ4Ny4uZGFmMGE1OWE0ZTU4NmQ3MTE0YWJiNGU1ZWY5YzU0ZjZhOGJl
ZmM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgKQEAgLTUzLDcgKzUzLDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNp
Z25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1Rv
QmVTZW50KSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVl
c3QmLCBDdXJsUmVzcG9uc2UmJikgZmluYWw7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZl
cihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgY3Vy
bERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3
b3JrTG9hZE1ldHJpY3MmJikgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihD
dXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYpIGZpbmFsOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggYmM0ZGFhZmJmMjFhMTVjMGU2ZGQx
YWNkNDYyMmFmYTU2YjdiOGQ1ZC4uMWY0YTE5MzEzMzEyYzVkZDZhNDhhZDUzMzlkZmQyYzNiNWRl
YzI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVn
YWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMzEsMTIgKzMxLDEyIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudCA6
IHB1YmxpYyBSZWZDb3VudGVkPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwotICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgeyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGFz
c3dvcmRFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggYzU0NDUzODVhNzdhYzEyYzA5ZWYy
NDg2NjQ3M2Q2MmNiNjc5NDU1YS4uNDUzNjgxYmRhYjJlNGEwNWEyMWZjNjhhOTQzNzAwZTA2Yzk5
N2ExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNw
cApAQCAtMzU2LDcgKzM1Niw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0
b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogc3RydWN0IFBhc3RlYm9hcmRGaWxlQ291bnRl
ciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICB2b2lkIHJlYWRGaWxlbmFtZShj
b25zdCBTdHJpbmcmKSBmaW5hbCB7ICsrY291bnQ7IH0KLSAgICB2b2lkIHJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWwgeyAr
K2NvdW50OyB9CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbCB7ICsrY291bnQ7IH0KIAog
ICAgIHVuc2lnbmVkIGNvdW50IHsgMCB9OwogfTsKQEAgLTk3NCw3ICs5NzQsNyBAQCBzdGF0aWMg
SEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIG1lbU9iajsKIH0KIAotc3RhdGljIEhHTE9CQUwg
Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCitzdGF0aWMg
SEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGRhdGEpCiB7CiAgICAgSEdMT0JBTCBtZW1PYmogPSBHbG9iYWxBbGxvYyhHUFRSLCBkYXRh
LT5zaXplKCkpOwogICAgIGlmICghbWVtT2JqKSAKQEAgLTk4NiwxNSArOTg2LDE1IEBAIHN0YXRp
YyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoU2hhcmVkQnVmZmVyKiBkYXRh
KQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoZGF0YS0+ZGF0YSgpKQotICAg
ICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OworICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRz
LCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAKICAgICBH
bG9iYWxVbmxvY2sobWVtT2JqKTsKIAogICAgIHJldHVybiBtZW1PYmo7CiB9CiAKLXN0YXRpYyBI
R0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBm
aWxlTmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRhKQorc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFs
SERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmIChmaWxlTmFtZS5pc0VtcHR5KCkgfHwgIWRh
dGEpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTAzOCw4ICsxMDM4LDggQEAgc3RhdGljIEhHTE9C
QUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVO
YW1lLCBTaGFyZWQKICAgICAgICAgLy8gV3JpdGUgdGhlIGRhdGEgdG8gdGhpcyB0ZW1wIGZpbGUu
CiAgICAgICAgIERXT1JEIHdyaXR0ZW47CiAgICAgICAgIEJPT0wgdGVtcFdyaXRlU3VjY2VlZGVk
ID0gRkFMU0U7Ci0gICAgICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgICAgICB0ZW1wV3Jp
dGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPmRhdGEoKSwgZGF0
YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CisgICAgICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAg
ICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRh
dGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7
CiAgICAgICAgIENsb3NlSGFuZGxlKHRlbXBGaWxlSGFuZGxlKTsKICAgICAgICAgaWYgKCF0ZW1w
V3JpdGVTdWNjZWVkZWQpCiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTEwNzEsNyArMTA3MSw3
IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZVRvRGF0YU9iamVjdChFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBVUkwmIHVybCkKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8ICFjYWNoZWRJbWFn
ZS0+aW1hZ2VGb3JSZW5kZXJlcihlbGVtZW50LnJlbmRlcmVyKCkpIHx8ICFjYWNoZWRJbWFnZS0+
aXNMb2FkZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2hhcmVkQnVmZmVyKiBpbWFnZUJ1
ZmZlciA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSkt
PmRhdGEoKTsKKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGNhY2hl
ZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSktPmRhdGEoKTsKICAg
ICBpZiAoIWltYWdlQnVmZmVyIHx8ICFpbWFnZUJ1ZmZlci0+c2l6ZSgpKQogICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rvcnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggNDEx
ZWRiYjM1MTdiODQ4ZmFjMDYzZDE5ZThjZDk1ZWMwMDM3Y2Q2MS4uODRmYTI5Y2UxZjMwMGZlMjkw
YjA0MTQ2NDhmMGY3MjkwYTdjYmViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
RmFjdG9yeS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBNb2NrQ0RNRmFjdG9yeTo6c3VwcG9y
dHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiAgICAgcmV0dXJuIGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2Uoa2V5U3lzdGVtLCAib3JnLndlYmtpdC5tb2NrIik7CiB9CiAKLXZvaWQg
TW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwg
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGtleXMpCit2b2lkIE1vY2tDRE1GYWN0b3J5Ojph
ZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+JiYga2V5cykKIHsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2Vz
c2lvbnMuYWRkKGlkLCBXVEZNb3ZlKGtleXMpKTsKICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50
cnkpCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Np
b25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxTaGFyZWRCCiAgICAgICAgIHZh
bHVlLmFwcGVuZChXVEZNb3ZlKGtleSkpOwogfQogCi1WZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
IE1vY2tDRE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5n
JiBpZCkKK1ZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5
OjpyZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkKIHsKICAgICBh
dXRvIGl0ID0gbV9zZXNzaW9ucy5maW5kKGlkKTsKICAgICBpZiAoaXQgPT0gbV9zZXNzaW9ucy5l
bmQoKSkKQEAgLTgzLDcgKzgzLDcgQEAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBNb2NrQ0RN
RmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmkKICAgICByZXR1
cm4gV1RGTW92ZShpdC0+dmFsdWUpOwogfQogCi1jb25zdCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZl
cj4+KiBNb2NrQ0RNRmFjdG9yeTo6a2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBp
ZCkgY29uc3QKK2NvbnN0IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KiBNb2Nr
Q0RNRmFjdG9yeTo6a2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3QK
IHsKICAgICBhdXRvIGl0ID0gbV9zZXNzaW9ucy5maW5kKGlkKTsKICAgICBpZiAoaXQgPT0gbV9z
ZXNzaW9ucy5lbmQoKSkKQEAgLTIwMiw3ICsyMDIsNyBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRz
U2Vzc2lvbnMoKSBjb25zdAogICAgIHJldHVybiBtX2ZhY3RvcnkgJiYgbV9mYWN0b3J5LT5zdXBw
b3J0c1Nlc3Npb25zKCk7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEp
IGNvbnN0Citib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29u
c3QKIHsKICAgICBpZiAoIXN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0
YVR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTEsMTIgKzIxMSwxMyBAQCBib29s
IE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBTaGFyZWRCdWZmZQogICAgIHJldHVybiB0cnVlOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVz
cG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2Fu
aXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29u
c3QKIHsKLSAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShyZXNwb25zZS5kYXRhKCksIHJl
c3BvbnNlLnNpemUoKSkpCisgICAgYXV0byBidWZmZXIgPSByZXNwb25zZS5tYWtlQ29udGlndW91
cygpOworICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGJ1ZmZlci0+ZGF0YSgpLCByZXNw
b25zZS5zaXplKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFZlY3RvcjxTdHJp
bmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXpl
KCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmlu
ZyhidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAgaWYg
KCFyZXNwb25zZUFycmF5LmNvbnRhaW5zKFN0cmluZygidmFsaWQtcmVzcG9uc2UiX3MpKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNjksOSArMjcwLDkgQEAgdm9pZCBNb2NrQ0RNSW5z
dGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNv
bmZpZ3VyYXQKICAgICBjYWxsYmFjayhpbml0aWFsaXplKCkpOwogfQogCi12b2lkIE1vY2tDRE1J
bnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZp
Y2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZTo6
c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlm
aWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIFN0cmluZ1ZpZXcgY2Vy
dGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXpl
KCkpOworICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOwogCiAgICAgY2Fs
bGJhY2soZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcsICJ2YWxp
ZCIpID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KQEAgLTI5Nyw3ICsyOTgsNyBAQCBNb2NrQ0RN
SW5zdGFuY2VTZXNzaW9uOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8TW9ja0NETUlu
c3RhbmNlPiYmIGluc3RhbgogewogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFj
ayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNr
JiYgY2FsbGJhY2spCiB7CiAgICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2luc3RhbmNl
ID8gbV9pbnN0YW5jZS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3RvcnkpIHsK
QEAgLTMyMyw3ICszMjQsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tUwogICAgIGNhbGxiYWNr
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGxpY2Vuc2UuZGF0YSgpLCBsaWNlbnNlLmxlbmd0aCgpKSwg
c2Vzc2lvbklELCBmYWxzZSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwogfQogCi12b2lkIE1v
Y2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9u
SUQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBk
YXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBj
YWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBt
X2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewpAQCAt
MzMxLDcgKzMzMiw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNw
b25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxT
dHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAocmVzcG9u
c2VWZWN0b3IuY29udGFpbnMoU3RyaW5nKCJpbnZhbGlkLWZvcm1hdCJfcykpKSB7CiAgICAgICAg
IGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0
LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0
b3J5LmgKaW5kZXggZjVjZGE1MDVjZjJhMzNjMTA1ZjAyNWM5N2M5MzUwYTk2ODY5OGUxZS4uZDk2
YzE1NmVlNGQyNzkxYjhiMDk5OGRhZjk0MGVjNzUzNzgwN2JjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NETUZhY3RvcnkuaApAQCAtNzcsOSArNzcsOSBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGhhc1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgeyByZXR1cm4gbV9zZXNzaW9u
cy5jb250YWlucyhpZCk7IH0KICAgICB2b2lkIHJlbW92ZVNlc3Npb25XaXRoSUQoY29uc3QgU3Ry
aW5nJiBpZCkgeyBtX3Nlc3Npb25zLnJlbW92ZShpZCk7IH0KLSAgICB2b2lkIGFkZEtleXNUb1Nl
c3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiYm
KTsKLSAgICBjb25zdCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+KiBrZXlzRm9yU2Vzc2lvbldp
dGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdDsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZl
cj4+IHJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKTsKKyAgICB2
b2lkIGFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJik7CisgICAgY29uc3QgVmVjdG9yPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4qIGtleXNGb3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQp
IGNvbnN0OworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHJlbW92ZUtl
eXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKTsKIAogcHJpdmF0ZToKICAgICBN
b2NrQ0RNRmFjdG9yeSgpOwpAQCAtOTYsNyArOTYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9j
YW5DcmVhdGVJbnN0YW5jZXMgeyB0cnVlIH07CiAgICAgYm9vbCBtX3N1cHBvcnRzU2VydmVyQ2Vy
dGlmaWNhdGVzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9zdXBwb3J0c1Nlc3Npb25zIHsgdHJ1ZSB9
OwotICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBtX3Nlc3Np
b25zOworICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+Pj4gbV9zZXNzaW9uczsKIH07CiAKIGNsYXNzIE1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0
ZSB7CkBAIC0xMjEsOCArMTIxLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGxvYWRBbmRJbml0aWFs
aXplKCkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0
IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsOwotICAgIGJv
b2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVy
JikgY29uc3QgZmluYWw7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25z
ZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBj
b25zdCBmaW5hbDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVS
ZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNv
bnN0IGZpbmFsOwogCiAgICAgV2Vha1B0cjxNb2NrQ0RNRmFjdG9yeT4gbV9mYWN0b3J5OwpAQCAt
MTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW1wbGVtZW50YXRpb25UeXBl
IGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9u
VHlwZTo6TW9jazsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0
IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVy
cywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2
b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBz
ZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lv
bj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAtMTU0LDggKzE1NCw4IEBAIHB1YmxpYzoKICAg
ICBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8TW9ja0NETUluc3RhbmNlPiYmKTsKIAog
cHJpdmF0ZToKLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vu
c2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5n
JiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24o
TGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2Fs
bGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xv
c2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShj
b25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKaW5k
ZXggZmMxMjdiN2I2N2JlYTczNDQ2M2NkMmQ1YjA3NTZiNTliZWJhNThhZS4uMDU5ZjNhMzg2YjZj
ZjVmYTc5YjNjMTg5NzAxNTMxM2Y3Y2RiNGVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlci5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIE1vY2tDb250
ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQogICAgIG1heWJlRGV0ZXJtaW5lU3RhdHVz
KERlY2lzaW9uUG9pbnQ6OkFmdGVyRmluaXNoZWRBZGRpbmdEYXRhKTsKIH0KIAotUmVmPFNoYXJl
ZEJ1ZmZlcj4gTW9ja0NvbnRlbnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgpIGNvbnN0CitSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTW9ja0NvbnRlbnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0
YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRpZEJsb2NrRGF0YSgpKTsKICAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUobV9yZXBsYWNlbWVudERhdGEuZGF0YSgpLCBtX3JlcGxhY2VtZW50
RGF0YS5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5o
CmluZGV4IDQxMWEzMDA5NDdiNTM5ZTI2YWE2YzY0YTAwOTMyOTJlOWZmYmU2YjkuLjYzNWFjODRi
ZTc5Mzg0N2FhNTcyMTNkMDFmZmMxZTc0Zjc2Yjc1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDb250ZW50RmlsdGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRl
OwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0gICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCmluZGV4IDZkNDhiZDAyZDFjOTFmN2VlZDg2NGExNmNk
NzU2YmIwNzdkNjU1MmEuLjVmODU0NWViYTViMGU3YjhiYmFiYTVjNjkzYzJhNDM0MTg4YjJiYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKQEAgLTM4LDcgKzM4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBt
X2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgp
KTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQog
CiBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCkBAIC00NiwxNCArNDYsMTMgQEAg
U2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQogICAgIHJldHVybiBTY3JpcHRCdWZm
ZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH07CiB9CiAKLQogU3RyaW5nIFNjcmlwdEJ1ZmZl
cjo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBtX2J1ZmZlci0+
Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICBtX2J1ZmZlci5nZXQoKS0+
Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKICAgICAgICAgYnVpbGRlci5hcHBl
bmQoU3RyaW5nOjpmcm9tVVRGOChzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpKTsKICAg
ICB9KTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpAQCAtNjEsMTUgKzYwLDEzIEBA
IFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIAogYm9vbCBTY3JpcHRCdWZm
ZXI6OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdAogewotICAgIHJldHVy
biBtX2J1ZmZlciAmJiBtX2J1ZmZlci0+aGFzT25lU2VnbWVudCgpICYmIG1fYnVmZmVyLT5iZWdp
bigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CisgICAgcmV0dXJuIG1fYnVm
ZmVyICYmIG1fYnVmZmVyLmdldCgpLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXIuZ2V0KCkt
PmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKIH0KIAogdm9pZCBT
Y3JpcHRCdWZmZXI6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBpZiAoIW1f
YnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAg
YXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlci0+YXBwZW5kKHV0ZjguZGF0
YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0
ZjgubGVuZ3RoKCkpOwogfQogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiBh
LCBjb25zdCBTY3JpcHRCdWZmZXImIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1NjcmlwdEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIu
aAppbmRleCBiMzlkOWMxMzAzMzAzMTFjMDRkN2YzNzk2YjcxYTA0MzEzNGM2NjQ2Li5mZDJjMWFl
MmY2M2I2MGQ3NGMzMGQyNDJhOTg5YTBiZmQ5MWRlNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
U2NyaXB0QnVmZmVyLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgU2NyaXB0QnVmZmVyIHsKIHB1
YmxpYzoKICAgICBTY3JpcHRCdWZmZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICBTY3JpcHRCdWZmZXIo
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgU2NyaXB0QnVmZmVyKFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihXVEZN
b3ZlKGJ1ZmZlcikpCiAgICAgewogICAgIH0KQEAgLTQ4LDE3ICs0OCwxNyBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYpOwog
CiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0gICAgU2hhcmVkQnVmZmVyKiBidWZmZXIo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQorICAgIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgp
OyB9CiAKLSAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2Ny
aXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXItPmNvcHko
KSkgOiBudWxscHRyKTsgfQorICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7
IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4obV9idWZmZXIuY29weSgpKSA6IG51bGxwdHIpOyB9CiAgICAgZXhwbGljaXQgb3BlcmF0
b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiAhbV9idWZmZXIgfHwgIW1fYnVmZmVyLT5zaXplKCk7IH0KKyAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5pc0VtcHR5KCk7IH0KIAogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNv
bnN0OwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2Rl
ZCBzY3JpcHQuCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsgLy8gQ29udGFpbnMg
dGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNj
cmlwdEJ1ZmZlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDc3NDE2ZWMwN2Q3YjY4YjEy
OGUyOTYxZWRjNWQ2NDBkMDRkNGJkNDUuLjQwNjZmYjM1MmViNWIwODdkNWQ4ZDQ3ZDgwMmZkMmMw
YTZhODBmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExv
YWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogV29ya2Vy
Rm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJlcXVlc3QoVVJMJiYgdXJsLCBMb2FkZWRG
cm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCiAgICAgOiBtX3VybChXVEZN
b3ZlKHVybCkpCiAgICAgLCBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2UobG9hZGVkRnJvbU9wYXF1
ZVNvdXJjZSkKKyAgICAsIG1fZGF0YShtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+
KCkpCiB7CiB9CiAKQEAgLTc1LDEyICs3NiwyMSBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVz
dDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiAgICAgV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSh3b3JrZXJHbG9iYWxT
Y29wZSwgV1RGTW92ZShyZXF1ZXN0KSwgKnRoaXMsIG9wdGlvbnMpOwogfQogCitib29sIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1faXNM
b2FkaW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgbV9kYXRhLT5pc051bGwoKTsKK30KKwogYm9v
bCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21T
dHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9y
T2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZO
ZWNlc3NhcnkobV9kYXRhKTsKLSAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgbV9m
b250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9k
YXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CisgICAgICAgIGlmIChtX2RhdGEtPmdl
dCgpKQorICAgICAgICAgICAgY29udGlndW91c0RhdGEgPSBtX2RhdGEtPnRha2UoKS0+bWFrZUNv
bnRpZ3VvdXMoKTsKKyAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1
b3VzRGF0YSk7CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgeworICAgICAgICAgICAgbV9k
YXRhLT5hcHBlbmQoKmNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAgIG1fZm9udEN1c3RvbVBs
YXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRh
LCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKICAgICAgICAgICAgIGlm
ICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQogICAgICAgICAgICAgICAgIG1fZXJyb3JPY2N1
cnJlZCA9IHRydWU7CiAgICAgICAgIH0KQEAgLTExNyw5ICsxMjcsNiBAQCB2b2lkIFdvcmtlckZv
bnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRh
dGFMZW5ndGgpCiAgICAgaWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKCFtX2RhdGEpCi0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
Ci0KICAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKaW5kZXggYjlmY2ZiMWQ2
ZmVhOGFkNWU3ODBiZGVlYmM1YzZlMDRhMWU4NjNjNy4uMWIzZDc4NzBmMTI4YmZlNTM4ZWU2Yzk4
NTljZGFhZTgxZTQ1ZTJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5oCkBAIC0zMCwxMyArMzAsMTQgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxv
YWRlck9wdGlvbnMuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5j
bHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRDcmVhdGlv
bkNvbnRleHQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3Bl
OwogCiBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV91cmw7IH0KLSAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFt
X2lzTG9hZGluZyAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2RhdGE7IH0KKyAgICBib29sIGlz
UGVuZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9pc0xvYWRpbmc7IH0KICAgICBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2Vycm9yT2NjdXJyZWQ7IH0KIApAQCAtNzYsNyArNzcsNyBAQCBwcml2
YXRlOgogICAgIEZvbnRMb2FkUmVxdWVzdENsaWVudCogbV9mb250TG9hZFJlcXVlc3RDbGllbnQg
eyBudWxscHRyIH07CiAKICAgICBXZWFrUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fY29u
dGV4dDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgVW5pcXVlUmVmPFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+IG1fZGF0YTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZl
dGNoLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guaAppbmRleCBlYjI2NmI2YzA3ZTY3M2Q5MTY2Y2FjZTZiMzM5MTlkODBlYmJmMzFj
Li4wOTc1NDNlMWIzYjMwZmYzMTQ3ZDkyMzJhNThjZTRhOWU2MmYzZTRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOwogY2xh
c3MgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIFNlcnZpY2VXb3JrZXJGZXRjaCB7
CiBjbGFzcyBDbGllbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2xpZW50LCBXVEY6
OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3Rpb24oY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZEZpbmlzaCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAppbmRleCA4OWE4NzVmOGFmYzBk
NjIzNTVhYzYyMjlhNjRjMWNhNDNkMTg1NjUyLi45YThmYjM1Y2E1MzYxMDViYjZkNmZjNDZlZTEy
MjQ1OTMzZjcwYmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC0xMjcsNyArMTI3LDggQEAgU2Ny
aXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYgcmVnaXMKICAgICB9CiAKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0
byBkaXNhYmxlIGZpbGUgbWFwcGluZyBpbiBtb3JlIGNhc2VzIHRvIGF2b2lkIGhhdmluZyB0b28g
bWFueSBmaWxlIGRlc2NyaXB0b3JzIG9wZW4/Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVN
b2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gU2hhcmVkQnVm
ZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFw
cGluZzo6Tm8pOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVT
aXplKSA/IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IFNoYXJlZEJ1ZmZl
cjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICByZXR1cm4gYnVmZmVyOwogfQogCiB2b2lk
IFNXU2NyaXB0U3RvcmFnZTo6Y2xlYXIoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSYgcmVnaXN0cmF0aW9uS2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5k
ZXggYWI5OTYwM2VhNTNlMjQ2YjYzMzIxZmJkNDE0MWNjNWUyOWNlOTZiNC4uZmNjYzJhOWVkMjBk
NzQ3YzA5YzYxNmI0OThlNTMwZWY3OGE4ZTU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwCkBAIC0xMTgsNiArMTE4LDcgQEAgWE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1
ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgLCBtX3Jlc3BvbnNlQ2Fj
aGVJc1ZhbGlkKGZhbHNlKQogICAgICwgbV9yZWFkeVN0YXRlKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihVTlNFTlQpKQogICAgICwgbV9yZXNwb25zZVR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJl
c3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcpKQorICAgICwgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIo
bWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogICAgICwgbV9wcm9ncmVzc0V2
ZW50VGhyb3R0bGUoKnRoaXMpCiAgICAgLCBtX3RpbWVvdXRUaW1lcigqdGhpcywgJlhNTEh0dHBS
ZXF1ZXN0Ojp0aW1lb3V0VGltZXJGaXJlZCkKIHsKQEAgLTIwNyw4ICsyMDgsOCBAQCBSZWY8Qmxv
Yj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYigpCiAKICAgICAvLyBGSVhNRTog
V2UganVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIE5ldHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNl
bmRpbmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmljaWVudC4KICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKLSAgICBpZiAobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgIGRhdGEgPSBz
dGQ6OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLCBudWxscHRyKS0+ZXh0cmFjdERh
dGEoKTsKKyAgICBpZiAoIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5pc051bGwoKSkKKyAgICAg
ICAgZGF0YSA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50YWtlKCktPmV4dHJhY3REYXRhKCk7
CiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRDb250ZW50VHlwZSA9IEJsb2I6Om5vcm1hbGl6ZWRDb250
ZW50VHlwZShyZXNwb25zZU1JTUVUeXBlKEZpbmFsTUlNRVR5cGU6OlllcykpOyAvLyByZXNwb25z
ZU1JTUVUeXBlIGRlZmF1bHRzIHRvIHRleHQveG1sIHdoaWNoIG1heSBiZSBpbmNvcnJlY3QuCiAg
ICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUo
ZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50VHlwZSk7CiB9CkBAIC0yMTgsOCArMjE5LDcgQEAgUmVm
UHRyPEFycmF5QnVmZmVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VBcnJheUJ1ZmZl
cigpCiAgICAgQVNTRVJUKHJlc3BvbnNlVHlwZSgpID09IFJlc3BvbnNlVHlwZTo6QXJyYXlidWZm
ZXIpOwogICAgIEFTU0VSVChkb25lV2l0aG91dEVycm9ycygpKTsKIAotICAgIGF1dG8gcmVzdWx0
ID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPyBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjpjcmVhdGUobnVsbHB0ciwgMCk7Ci0g
ICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOworICAgIGF1dG8gcmVzdWx0ID0g
IW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5pc051bGwoKSA/IG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyLT50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KG51bGxwdHIsIDApOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTc0MSw3ICs3NDEsNyBA
QCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycygpCiAgICAgbV9yZXNw
b25zZUVuY29kaW5nID0gU3RyaW5nKCk7CiAgICAgbV9jcmVhdGVkRG9jdW1lbnQgPSBmYWxzZTsK
ICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBudWxscHRyOwotICAgIG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyID0gbnVsbHB0cjsKKyAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+cmVzZXQoKTsK
ICAgICBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkID0gZmFsc2U7CiB9CiAKQEAgLTEwNjUsOCArMTA2
NSw2IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBsZW4pCiAgICAgICAgIG1fcmVzcG9uc2VCdWlsZGVyLmFwcGVuZChtX2RlY29k
ZXItPmRlY29kZShkYXRhLCBsZW4pKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gQnVmZmVyIGJp
bmFyeSBkYXRhLgotICAgICAgICBpZiAoIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAg
ICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwog
ICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+YXBwZW5kKGRhdGEsIGxlbik7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDcyODk0YWY2Y2M0N2RiYWU1
ZTc1YzNhODA3OTA5ZWYyODRmNmQ1OTcuLjE2MmNhOTVhZWI3NTQ0ODliZDZjZDhjZGM1MDg2MmM4
NDc3N2JhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlVzZXJH
ZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0LmgiCiAjaW5j
bHVkZSAiWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUuaCIKICNpbmNsdWRlIDx2
YXJpYW50PgpAQCAtNDUsNyArNDYsNyBAQCBjbGFzcyBCbG9iOwogY2xhc3MgRG9jdW1lbnQ7CiBj
bGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29k
ZXI7CiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyOwogY2xhc3MgVVJMU2VhcmNoUGFyYW1zOwpAQCAt
MjM3LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fcmVzcG9u
c2VEb2N1bWVudDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlcjsKIAogICAgIFN0cmluZ0J1aWxkZXIgbV9yZXNwb25zZUJ1aWxkZXI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVByb3h5LmNwcAppbmRleCA1NzMwNjdlM2RkMDUwZmViN2M1NzlkMDAxMDJlZTlmNjA0NWI1
MzEzLi4zMWMyZDc2ZjJlZTFiOWQyNDliMDAxYjdlZmY4OTJlYzJhNzQ1NmNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
UHJveHkuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFJlbW90ZUNETUluc3RhbmNlUHJveHk6On5SZW1v
dGVDRE1JbnN0YW5jZVByb3h5KCkKICAgICBtX2luc3RhbmNlLT5jbGVhckNsaWVudCgpOwogfQog
Ci12b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25E
YXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXRE
YXRhKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0
aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgaW5pdERhdGEpCiB7CiAgICAgaWYgKCFtX2NkbSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVByb3h5LmgKaW5kZXggOGU3M2QzZDlhNjRiOThiZmMwMDkzNmNkNDdjNGMyNWE5Mjc5ZjJj
OC4uMDJjNWNkMzdhZTU0ODAyZjZkMGM4ZGNjY2IwYmE4MGNmMzM4OGMzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eS5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eShXZWFrUHRyPFJlbW90ZUNETVByb3h5PiYmLCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+JiYs
IFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+JiYsIFJlbW90ZUNETUlu
c3RhbmNlSWRlbnRpZmllcik7CiAKICAgICAvLyBDRE1JbnN0YW5jZUNsaWVudAotICAgIHZvaWQg
dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHVucmVxdWVzdGVkSW5p
dGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2
ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKaW5kZXggZTU3NjZj
MjMzNGNmZDM4OTMxMGNkNGIyMTcyM2NhYmEzNzQyZmM3Yy4uZGU4MjczYjljZjUwMGE0ZDY2YWEx
NDRlZGUwMjAxZWVmMWVkODYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCkBA
IC03MCw3ICs3MCw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIEF0b21TdHJpbmcKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIG1fc2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBl
LCBpbml0RGF0YS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBbY29tcGxldGlvbiA9IFdURk1v
dmUoY29tcGxldGlvbildIChSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vz
c2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uLT5y
ZXF1ZXN0TGljZW5zZSh0eXBlLCBpbml0RGF0YVR5cGUsIGluaXREYXRhLmJ1ZmZlcigpLnJlbGVh
c2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBi
b29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1Zh
bHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShtZXNz
YWdlKSwgc2Vzc2lvbklkLCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBzdWNjZWVkZWQgPT0gQ0RN
SW5zdGFuY2VTZXNzaW9uOjpTdWNjZWVkZWQpOwogICAgIH0pOwogfQpAQCAtMTE1LDcgKzExNSw3
IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNsb3NlU2Vzc2lvbihjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTCiAKIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNl
bnNlVHlwZSB0eXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYgY29tcGxldGlvbikKIHsK
LSAgICBtX3Nlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSwgW2NvbXBs
ZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0
dXNWZWN0b3ImJiBrZXlTdGF0dXNlcywgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4m
JiBleHBpcmVkU2Vzc2lvbnNEYXRhLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBz
dWNjZWVkZWQpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEoc2Vz
c2lvbklkLCB0eXBlLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChDRE1JbnN0
YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzLCBzdGQ6Om9wdGlvbmFs
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBleHBpcmVkU2Vzc2lvbnNEYXRhLCBDRE1J
bnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAg
ICBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gZXhwaXJlZFNlc3Npb25EYXRh
UmVmZXJlbmNlOwogICAgICAgICBpZiAoZXhwaXJlZFNlc3Npb25zRGF0YSkKICAgICAgICAgICAg
IGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5jZSA9IElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZN
b3ZlKCpleHBpcmVkU2Vzc2lvbnNEYXRhKSk7CkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVj
dG9yJiYga2V5U3RhdHUKICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpVcGRhdGVLZXlTdGF0
dXNlcyhXVEZNb3ZlKGtleVN0YXR1c2VzKSksIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIHR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIHR5cGUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFtX2NkbSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaAppbmRleCA4YTYxZjlkNWZhYmM4NDg2
YTdhMGU4NjBmNGM2MzEyYzBiNDQ1NTE0Li5mZTczMDk3MTMxZTBiYjIwYTUwMDFlMTUwMTYwMmQ2
NTE4NmIzMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaApAQCAtNzcsNyArNzcsNyBA
QCBwcml2YXRlOgogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50CiAgICAgdm9pZCB1
cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJikgZmluYWw7Ci0gICAgdm9pZCBzZW5k
TWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiBtZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1l
c3NhZ2VUeXBlLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdl
KSBmaW5hbDsKICAgICB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7
CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgZmluYWwgeyByZXR1cm4gbV9kaXNw
bGF5SUQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1Qcm94eS5jcHAKaW5kZXggOWFiMzU3NWY0YzNiNTU5NTU1YjliODdiMjMzNzFiMWIxYTY2ZGMx
Ny4uZjdjYjZhNjNlYjkzM2FiZDRkNDUzYTIyYWIyOTRmMTMwMzIzMmIwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCkBAIC02Mywx
MiArNjMsMTIgQEAgUmVtb3RlQ0RNUHJveHk6OlJlbW90ZUNETVByb3h5KFdlYWtQdHI8UmVtb3Rl
Q0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIHN0ZDo6dW4KIAogUmVtb3RlQ0RNUHJveHk6On5S
ZW1vdGVDRE1Qcm94eSgpID0gZGVmYXVsdDsKIAotYm9vbCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9y
dHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGRh
dGEpCitib29sIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIHR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgcmV0
dXJuIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YSh0eXBlLCBkYXRhKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hh
cmVkQnVmZmVyJiByZXNwb25zZSkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBSZW1v
dGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5zYW5pdGl6ZVJlc3BvbnNlKHJl
c3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TVByb3h5LmgKaW5kZXggNjkyNGU3NGUzZjUwMTFiZTIxNWJlNGJkOTZiMjM0ODI2NDcwZjQyMy4u
M2I2NmM3NzU3ODcwNjllOTc2ZWUwNjRmOTZmZjA3YzBmNzEyYTkwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKQEAgLTM2LDcgKzM2LDcg
QEAKICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBlbnVtIGNs
YXNzIENETVJlcXVpcmVtZW50IDogdWludDhfdDsKIGVudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUg
OiB1aW50OF90Owogc3RydWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb247CkBAIC01OCw4ICs1
OCw4IEBAIHB1YmxpYzoKIAogICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eSogZmFjdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fZmFjdG9yeS5nZXQoKTsgfQogCi0gICAgYm9vbCBzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0
YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNl
KTsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaAppbmRleCBlMmNkMDVkN2NjNzRm
MjBlYzY5ZmFkZmUzZWUwODU3NTkyYWQ4NzliLi5kZThmNmRmNTVhNmUxZmE4YmU5NjZmOTQxZTA3
ZmUyZjVjNTAyMWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVNlc3Npb25Qcm94eS5oCmluZGV4IGYxNGM2MjdmNjU5M2UxYTg3OGQwZjQ1OTkyYjNj
NDFiMjIyYzdmMDAuLjE1NDZiZGZkZmRjZjA5MTA4Nzg5NDRmMzQwNzk2N2E3YWIzOGJmODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIExlZ2FjeUNETTsKIGNsYXNzIExlZ2FjeUNETVNlc3Npb247Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3Bh
Y2UgSVBDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlLmNwcAppbmRleCBjNDVlNTI1NWQ2N2I1MmM3YWUxMDQ0OTk4OGNlMDE5
MGM3ZmZiNTM4Li42MTdmNDc2ODk1NjQyZGVjMjMyNTRiNTQwZWU4MTkxMWFjNGEyZGY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVz
b3VyY2UuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0
YVNlbnQodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlCiAgICAg
ICAgIG1fY2xpZW50LT5kYXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNl
bnQpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChSZWY8U2hh
cmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZl
ZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGlmIChtX2NsaWVu
dCkKICAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgV1RGTW92ZShkYXRhKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVz
b3VyY2UuaAppbmRleCBkMTNkMjVmNjVmMDIyNGE2Yzc2N2Y2OWE0ZDQxOWNkMDUzYmI3OTVkLi41
YjdhN2UyYTc0MjQ0MzJkODZjYjI4YTFiZTcxNzE4YTE2NzM3NWU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKQEAgLTM0
LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTmV0d29ya0xvYWRNZXRy
aWNzOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJv
b2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lD
aGVjayk+JiYpOwogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIGRhdGFT
ZW50KHVpbnQ2NF90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNr
RmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGYWls
ZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVk
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXgg
N2U1NzJiM2E3NGEyMDI3ZTc0Y2FhNzY3MmU1MmRhMGFmODM0MjA3Mi4uZTgzZjkxNDNkMjBhNzJl
MmJlNGZmY2JmZWQxM2IwYmI0ZGQzMWUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3
LDggQEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJD
b3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6
ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRv
dWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV93cml0ZXItPmZldGNoRGF0YShb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRh
dGEsIGF1dG8gdGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBhdXRvKiBwb2ludGVyID0gZGF0
YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/
IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigp
OworICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxs
cHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UgeyBwb2lu
dGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5n
RG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRp
bmdEb3dubG9hZC5oCmluZGV4IDUyY2M1ZGExMjFhMmZiNTlkOGNmMDU5M2I2ODUwOWZkNjU1YzBj
ZGMuLjcxZmQwMjIyOWJiYjFjNTczMjZmZGZjZmUyNmMxMWY3NjFhYmNmNzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3du
bG9hZC5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fz
a1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxvd2VkVG9B
c2tVc2VyRm9yQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVl
c3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRl
IHsgfTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDNmMzllYjMyZjFh
YTgwNzY3ODVkYTc5ZWUxMWRhZDhmMGMzMjZiNzkuLmQ4OTIwZTk4NzY0ZmQ5YjY0YjljZGRjNjBh
MWQ4NGQ2MTliMmQ0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTExOSw3ICsxMTks
NyBAQCB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGlj
eUFjdGlvbjo6VXNlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRp
ZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpCit2b2lkIE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpCiB7CiAgICAgQ09SU19DSEVDS0VSX1JFTEVBU0VfTE9HKCJkaWRS
ZWNlaXZlRGF0YSIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggYmJiMTQ2MmEzMTYxZTJm
Y2U5ZWE1Nzg0NGIxOWI5M2U2MTljODFiMC4uZTExYmY1NjMxOTA3YWU0NzMzNmVmODVhNWQyMmU4
ODM1NzQ2NTFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC03MSw3ICs3MSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVu
Z2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2
b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNl
bmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0
ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKaW5kZXggZDYwMThmNjEz
ODNhZTNhNTFlOWQ0NzIyY2Y2YTYwZTJkOGI4N2E3ZC4uZTA0OWU1YjEyZGRlNWZlNTFiNDY5NTUy
ODlhN2E3ZjY5OTgyYWZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtEYXRhVGFzay5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYzLDcgKzYzLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRp
cmVjdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVk
TGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5l
Z290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRl
V2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVp
bnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZCgpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5kZXggYmFjMDIyYWI0NTQzMGY2NTFi
MTg5YWMwMTIwN2EwNjA2MDhjMTY3MS4uNzk3NWQ0MWJhZDg5MTVmZWVkYmRhYjE1NTRlODFlMWRi
MjAzMGY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5j
cHAKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpub3RpZnlEaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdAogICAgIG1fY2xp
ZW50LmdldCgpLmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2Vp
dmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgYmUgdGhlIGVuY29kZWQgZGF0YSBsZW5ndGgsIG5vdCB0aGUgZGVj
b2RlZCBkYXRhIGxlbmd0aC4KICAgICBhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRleCBjMzc3M2M5ODc4NTUz
Y2U1MzRkMDU0YWJmZmRkZWJiMjllZTA4NGQyLi5lZTVlYjAwNmFhMzc5Yjc4ZmNiYzBiZDE3NGUz
MmJkNjM5Zjk1ZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBO
ZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50
LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2Fz
QmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZENsaWVudC5oCmluZGV4IDBhNWY2NmJkOTY3ZWM5ZmRmNjY0ZTUyZTVhZjM5NGU0OGVj
ZTFmN2IuLjM0OGNmZmI5ZThlMjVlZTgzYmJiMzlhMDJjZDNjZjZkMjg1NGQzOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKQEAgLTMy
LDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgUG9saWN5QWN0aW9uIDog
dWludDhfdDsKIH0KIApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcg
bG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRS
ZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYgcmVkaXJlY3RSZXNwb25zZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQmxvY2tBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSgpIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBlNTBjZjRhYmJlNTY0
ZTRjYTNmYjcyNmNhYTlkNTY5YzU0YjA5ZDcyLi4wZTVlYjVhZGMwMTJmMWYyZWE3NjZmY2MxYTQ1
NTM5ZmQ1ZDg5YzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04NywxNCArODcsMTQgQEAgc3RydWN0IE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSB7CiAgICAgUmVzb3VyY2VF
cnJvciBlcnJvcjsKIH07CiAKLXN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1
ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSYgZGF0YSwgY29u
c3QgU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKK3N0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSYgZGF0YSwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7
CiAgICAgQVNTRVJUKGRhdGEuZGVsYXllZFJlcGx5KTsKICAgICBBU1NFUlQoIWRhdGEucmVzcG9u
c2UuaXNOdWxsKCkgfHwgIWRhdGEuZXJyb3IuaXNOdWxsKCkpOwogCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0g
ICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOworICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAgIGRhdGEucmVzcG9uc2Uuc2V0RGVw
cmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRl
KG1ldHJpY3MpKTsKIApAQCAtMTA1LDkgKzEwNSwxMSBAQCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlU
b1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9h
ZAogTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiBzeW5jaHJvbm91c1Jl
cGx5KQogICAgIDogbV9wYXJhbWV0ZXJzIHsgV1RGTW92ZShwYXJhbWV0ZXJzKSB9CiAgICAgLCBt
X2Nvbm5lY3Rpb24geyBjb25uZWN0aW9uIH0KKyAgICAsIG1fYnVmZmVyZWREYXRhIHsgbWFrZVVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fZmlsZVJlZmVyZW5jZXMo
Y29ubmVjdGlvbi5yZXNvbHZlQmxvYlJlZmVyZW5jZXMobV9wYXJhbWV0ZXJzKSkKICAgICAsIG1f
aXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMgeyBtX3BhcmFtZXRlcnMuY2xpZW50Q3Jl
ZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JD
cmVkZW50aWFscyB9CiAgICAgLCBtX2J1ZmZlcmluZ1RpbWVyIHsgKnRoaXMsICZOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQgfQorICAgICwgbV9idWZmZXJlZERhdGFG
b3JDYWNoZSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBt
X3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2Fk
SUQgeyBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CkBAIC0z
MDYsMTAgKzMwOCwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3Jr
TG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgICAgICBjb25zdW1l
U2FuZGJveEV4dGVuc2lvbnMoKTsKIAogICAgICAgICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1f
cGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVy
ZWREYXRhLT5lbXB0eSgpOwogCiAgICAgICAgIGlmIChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+ZW1wdHkoKTsKICAgICB9CiAK
ICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVycyA9IG1fcGFyYW1ldGVyczsKQEAg
LTczMCwyMCArNzMyLDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgICAgICAgICB8
fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgImFwcGxpY2F0aW9uL29j
dGV0LXN0cmVhbSIpOwogICAgIH07CiAKLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhCisgICAgaWYg
KG1fYnVmZmVyZWREYXRhLT5pc051bGwoKQogICAgICAgICAmJiBtX3Jlc3BvbnNlLmV4cGVjdGVk
Q29udGVudExlbmd0aCgpID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPigxICogTUIpCiAgICAgICAg
ICYmIGlzRmV0Y2hPclhIUihyZXNvdXJjZUxvYWRJbmZvKQogICAgICAgICAmJiBpc01lZGlhTUlN
RVR5cGUobV9yZXNwb25zZS5taW1lVHlwZSgpKSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgp
OwogICAgICAgICBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJT
dHJhdGVneTo6bWVkaWFNYXhpbXVtQnVmZmVyaW5nVGltZTsKICAgICB9CiAKICAgICAvLyBGb3Ig
bXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNh
bGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBo
YW5kbGluZy4KICAgICBpZiAoIWlzU3luY2hyb25vdXMoKSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlw
YXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZm
ZXJlZERhdGEtPnJlc2V0KCk7CiAKICAgICBpZiAobV9yZXNwb25zZS5pc011bHRpcGFydCgpKQot
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS0+cmVzZXQoKTsKIAogICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxp
ZGF0aW9uKSB7CiAgICAgICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKQEAgLTg1OCw3ICs4
NjAsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZERpZFJlY2VpdmVSZXNwb25z
ZVBvdGVudGlhbGx5SW5OZXdCcm93c2luZ0NvbnRleAogICAgIH0pOwogfQogCi12b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9udW1C
eXRlc1JlY2VpdmVkKQogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVCdWZm
ZXI6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGg9JWQp
IiwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CkBAIC04NjYsMjAgKzg2OCwyMCBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgaW50IHJlcAogCiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxpZGF0
aW9uKTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CisgICAgaWYgKCFtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLT5pc051bGwoKSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9y
eSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6ZSBvZiBlbnRy
aWVzIGluIHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZl
clNpemUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsKICAgICAgICAgaWYgKG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZl
clNpemUpCiAgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVy
LmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5yZXNldCgp
OwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAgICAgICAgIHJldHVy
bjsKICAgICAvLyBGSVhNRTogQXQgbGVhc3Qgb24gT1MgWCBZb3NlbWl0ZSB3ZSBhbHdheXMgZ2V0
IC0xIGZyb20gdGhlIHJlc291cmNlIGhhbmRsZS4KICAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxl
bmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGggOiBidWZmZXItPnNpemUoKTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YSkgewor
ICAgIGlmICghbV9idWZmZXJlZERhdGEtPmlzTnVsbCgpKSB7CiAgICAgICAgIG1fYnVmZmVyZWRE
YXRhLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVk
RGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKICAgICAgICAgc3RhcnRCdWZmZXJpbmdU
aW1lcklmTmVlZGVkKCk7CkBAIC05MDksMTEgKzkxMSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMbwogI2VuZGlmCiAKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQotICAgICAgICBzZW5kUmVw
bHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVk
RGF0YS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAgc2VuZFJlcGx5VG9TeW5j
aHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEtPmdl
dCgpLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIGVsc2UgewotICAgICAgICBpZiAo
bV9idWZmZXJlZERhdGEgJiYgIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKKyAgICAgICAg
aWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTog
UGFzcyBhIHJlYWwgdmFsdWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVkIGRhdGEgc2l6ZSBmZWF0dXJl
LgotICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEsIC0xKTsKKyAgICAgICAg
ICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLT5nZXQoKSwgLTEpOwogICAgICAgICB9CiAg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJj
ZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQpAQCAtMTI1NiwxOSArMTI1OCwxOSBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVk
KCkKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQoKQog
ewotICAgIEFTU0VSVChtX2J1ZmZlcmVkRGF0YSk7CisgICAgQVNTRVJUKCFtX2J1ZmZlcmVkRGF0
YS0+aXNOdWxsKCkpOwogICAgIEFTU0VSVChtX25ldHdvcmtMb2FkKTsKIAogICAgIGlmIChtX2J1
ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEg
fSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YS0+Z2V0
KCkgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOwogCi0gICAgbV9idWZmZXJl
ZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0
eSgpOwogICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwogfQogCi12b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
c2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNl
bmRCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERh
dGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFpc1N5bmNocm9ub3VzKCkpOwogCkBAIC0xMjgxLDcg
KzEyODMsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50
cnkoKQogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBO
b3Qgc3RvcmluZyBjYWNoZSBlbnRyeSBiZWNhdXNlIHJlcXVlc3QgaXMgbm90IGVsaWdpYmxlIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
KSB7CisgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAg
IExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5nIGNh
Y2hlIGVudHJ5IGJlY2F1c2UgbV9idWZmZXJlZERhdGFGb3JDYWNoZSBpcyBudWxsIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0xMjg5LDEyICsxMjkxLDEyIEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgaWYgKGlzQ3Jvc3NPcmln
aW5QcmVmZXRjaCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9jb25uZWN0aW9u
LT5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKSkgewogICAgICAg
ICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogU3RvcmluZyBl
bnRyeSBpbiBwcmVmZXRjaCBjYWNoZSIpOwotICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hD
YWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1v
dmUobV9yZXNwb25zZSksIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAg
ICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJl
bnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUtPnRha2UoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBM
T0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGlu
IEhUVFAgZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1
cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNo
ZSksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsK
KyAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jl
c3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT50YWtlKCksIFtsb2FkZXIgPSBSZWYgeyAq
dGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKICNpZiBFTkFCTEUoU0hBUkVBQkxF
X1JFU09VUkNFKQogICAgICAgICBpZiAobWFwcGVkQm9keS5zaGFyZWFibGVSZXNvdXJjZUhhbmRs
ZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGQyMzRkYWI1YmVl
YTViNjQ3MzA1NTBjNzczNzBhOWYxNTk1OTdmOTcuLjk4NDQyNGEzMDY4MWEzNjBmYzYwYzllN2E5
ZGQ0ZTZiYjQyNmRlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xp
Y3lWaW9sYXRpb25FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRl
IDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNDYsNiArNDcsOCBAQCBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7
CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFy
ZWRCdWZmZXJCdWlsZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExNCw3ICsxMTcs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7
IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgZmluYWw7CkBA
IC0xOTIsNyArMTk1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc3RhcnRCdWZmZXJpbmdUaW1l
cklmTmVlZGVkKCk7CiAgICAgdm9pZCBidWZmZXJpbmdUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBz
ZW5kQnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0
aCk7CisgICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
LCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOwogCiAgICAgdm9pZCBjb25zdW1lU2FuZGJveEV4
dGVuc2lvbnMoKTsKICAgICB2b2lkIGludmFsaWRhdGVTYW5kYm94RXh0ZW5zaW9ucygpOwpAQCAt
MjI1LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBt
X3Jlc3BvbnNlOwogCiAgICAgc2l6ZV90IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGgg
eyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGE7
CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyZWRE
YXRhOwogICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxTeW5jaHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9ub3VzTG9hZERhdGE7CkBAIC0y
NDAsNyArMjQzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVyaW5n
VGltZXI7CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBV
bmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGFGb3JD
YWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVu
dHJ5Rm9yVmFsaWRhdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRy
eT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbjsKICAgICBib29sIG1faXNXYWl0
aW5nQ29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCmluZGV4IDExNDg1M2U0NWI3
MjUzMzY0Yzc0N2E3MWNiMmI1YWI4Y2MzOGVmZDUuLjFhZjFlMDhlM2M0NDFlMjRmMzAwNjVlOWYy
MDc3NmU2ZjlmYzMzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
Y3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVQKICAgICBkaWRG
aW5pc2goeyB9LCByZXNwb25zZSk7CiB9CiAKLXZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRh
KFJlZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKIHsKICAgICBQSU5HX1JFTEVBU0VfTE9HKCJkaWRS
ZWNlaXZlRGF0YSIpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4IDE5ZWM4Y2ViOTJlM2M4YTA1NmY0OTI3MzY2MGNm
ZmY5MjY0MzQxZDEuLmFiMjlhMGIxYWM4NDY2YjBlZDYxZWY1OGVmNGMyMjBhYmFiNmViZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAgLTU0LDcgKzU0LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNF
eHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCmluZGV4IDQ1
NTc4MmQ1NGEyZWE5YmVlMTg2NTBlMWFmZDFjZjdiMmNlOThjNDkuLjE3ZDQ3OTA3YTNmNmVlNTJi
ZTY1MDFkMWRhYjBjYTYwNzUxZDZiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUHJlY29ubmVj
dFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJl
c3BvbnNlQ29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwog
fQogCi12b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBQcmVjb25uZWN0VGFz
azo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNr
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKaW5kZXgg
MWMxZmYxNjQ3MTExYzZmYTg0OTRhZjVjZjBjN2JiZWFhMWIyNjUwMy4uODU4MDhlMTIxYjY4Y2E4
YjczZTI1MThkMTkzYWIzOTU4MWVhZDFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJlY29ubmVjdFRhc2suaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9u
ZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCB3aWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBk
aWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3Bw
CmluZGV4IDcxZTBjZjZjNmRjN2JlYTUyMmM5MDYwMDU1NWY1NzIxNjFjM2MyZjQuLjgxOTY2MzAy
MGM2OTVjZTBjNmFiYTk5OWM2NzVhYWI0MjgyYzdmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcApAQCAtMTc0LDEwICsxNzQs
MTAgQEAgdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXMKICAgICAgICAgY2FsbGJhY2soKTsKIH0KIAot
dm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
Cit2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNrKQotICAgICAgICBtX2JvZHlD
YWxsYmFjayhXVEZNb3ZlKGJ1ZmZlciksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAg
ICAgICBtX2JvZHlDYWxsYmFjayhidWZmZXItPm1ha2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xv
YWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25Q
cmVsb2FkZXIuaAppbmRleCAxZTc4YzJjZWZhMTU0ODQxMDQwNjBmM2IxOWRjNTBlNmNiOGYxZWI0
Li5lZTFiYzhiN2Q2Y2JmZmMzMzQxZDY3M2ZiNzI0MjIzOGY2NzE3ZjJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAtNjcsNyAr
NjcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlh
bHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRp
cmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZp
bmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAg
IGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3M7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDhl
ZTExMmE5ZGY4Mjg5NTRjMTYyM2ZmZjIyYzJhMjBmZDhlMmZlN2QuLjdhMjYyMjE5ZGU3OGIyMzVk
MTI1YTkyYjZlMjM2ZDMzMjYyZjdhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIFJlc291cmNlRXJy
b3IgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OnByb2Nlc3NSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKCFt
X2RlY29kZXIpIHsKICAgICAgICAgaWYgKCFtX3Jlc3BvbnNlRW5jb2RpbmcuaXNFbXB0eSgpKQpA
QCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgfQogCiAgICAg
aWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQo
bV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5kYXRhKCksIHNpemUpKTsKKyAgICAgICAgbV9zY3Jp
cHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBzaXplKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgKaW5kZXggMThmNTQ2
OTFmMzdjMmJhYmJjOGMxYTNiYzA5NDM3MGU5YjI5ZWI3MS4uNDRmYzA2ODVmYTBmZWRjODc0MjE5
MTZlOTEzYTY3NGIxYzBmZGJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlz
QWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZp
bmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IDA0Nzc2ODM2Zjk5OTA5MzkxMGIz
OTlkNzU1Mzg1NWQ1ZDNmMWZmNGUuLmRkMzA1YWYyOTc2NjFlNDc2YzQ5Njc3ZGY1NzIxZWZkMWVj
OTMyZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIENhY2hlOjpjb21wbGV0ZVJl
dHJpZXZlKFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyLCBzdGQ6OnVuaXF1ZV9w
dAogICAgIGhhbmRsZXIoV1RGTW92ZShlbnRyeSksIGluZm8pOwogfQogICAgIAotc3RkOjp1bmlx
dWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhKQorc3RkOjp1bmlx
dWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSkK
IHsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCBy
ZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZURhdGEpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1Jl
cXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24obV9zZXNzaW9uSUQp
LCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQpAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gQ2FjaGU6Om1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJl
cXVlc3QpLCByZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWlu
Z1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24obV9zZXNzaW9u
SUQpLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENh
Y2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChyZXNwb25zZURhdGEpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAppbmRleCAx
OTlmMGNmYjczMjU0M2M1ZmVhZjRmZTIzMDFlNmExYzEyZjg4ZmU4Li5lZDA0ZWJjYTBiMzZmM2Y5
YzRjMGU3YmFjNzEzMzZiOWU5NmMzNTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTQzLDcgKzQzLDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIExvd1Bvd2VyTW9kZU5vdGlmaWVyOwogY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjYsNyArMTY2LDcgQEAgcHVibGljOgog
ICAgIH07CiAgICAgdXNpbmcgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciA9IEZ1bmN0aW9uPHZv
aWQoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiwgY29uc3QgUmV0cmlldmVJbmZvJik+OwogICAgIHZv
aWQgcmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFs
RnJhbWVJRCYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBSZXRy
aWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3Rv
cmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIEZ1bmN0aW9uPHZv
aWQoTWFwcGVkQm9keSYpPiYmID0gbnVsbHB0cik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5
PiBzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmID0gbnVsbHB0cik7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEVudHJ5PiBzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBt
YXhBZ2VDYXApOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gdXBkYXRlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEVudHJ5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYgdmFsaWRhdGluZ1Jlc3BvbnNlKTsKIApAQCAtMTg1LDcgKzE4NSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJldHJpZXZlRGF0YShjb25zdCBEYXRhS2V5JiwgRnVuY3Rpb248dm9p
ZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4pOwogICAgIHZvaWQgc3RvcmVEYXRhKGNvbnN0IERh
dGFLZXkmLCAgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKICAgICAKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8RW50cnk+IG1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlRW50cnkoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+IG1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCk7CiAKICAgICB2b2lkIGR1bXBD
b250ZW50c1RvRmlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBiYTM5ZDllMmMyNmEwMWE5MjZi
MTFhYTc5OWUzNjYyZmM2YWUwNTQ5Li43NjEwNzhkZWEwOTNjMDQ1NTViZTk4YjA1MTczZTM0MTUw
NjdhODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAotRW50cnk6OkVudHJ5KGNvbnN0IEtl
eSYga2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8
U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKQorRW50cnk6OkVudHJ5KGNv
bnN0IEtleSYga2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBW
ZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycykK
ICAgICA6IG1fa2V5KGtleSkKICAgICAsIG1fdGltZVN0YW1wKFdhbGxUaW1lOjpub3coKSkKICAg
ICAsIG1fcmVzcG9uc2UocmVzcG9uc2UpCkBAIC0xMDEsOCArMTAxLDEwIEBAIFN0b3JhZ2U6OlJl
Y29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKIAogICAgIERhdGEgaGVh
ZGVyKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKICAgICBEYXRhIGJv
ZHk7Ci0gICAgaWYgKG1fYnVmZmVyKQotICAgICAgICBib2R5ID0geyBtX2J1ZmZlci0+ZGF0YSgp
LCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgaWYgKG1fYnVmZmVyKSB7CisgICAgICAgIG1fYnVm
ZmVyID0gbV9idWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGJvZHkgPSB7IHN0YXRp
Y19jYXN0PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcio+KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBt
X2J1ZmZlci0+c2l6ZSgpIH07CisgICAgfQogCiAgICAgcmV0dXJuIHsgbV9rZXksIG1fdGltZVN0
YW1wLCBoZWFkZXIsIGJvZHksIHsgfSB9OwogfQpAQCAtMTk0LDcgKzE5Niw3IEBAIHZvaWQgRW50
cnk6OmluaXRpYWxpemVCdWZmZXJGcm9tU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAgICAgbV9idWZm
ZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NvdXJjZVN0b3JhZ2VSZWNvcmQu
Ym9keS5kYXRhKCksIG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LnNpemUoKSk7CiB9CiAKLVdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciogRW50cnk6OmJ1ZmZlcigpIGNvbnN0CitXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBFbnRyeTo6YnVmZmVyKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
YnVmZmVyKQogICAgICAgICBpbml0aWFsaXplQnVmZmVyRnJvbVN0b3JhZ2VSZWNvcmQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuaAppbmRleCA5NjkxNWMzODAxYzM3ZGRhYzNlOGU2MDMyMWY4OGMyMjI5Y2Q1OWEwLi45
YzA0MjBkNDRhODE1OGRmYzViMjFjZjE4ODIwNGNmM2E5MTZiNDJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCkBA
IC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDQsNyArNDQsNyBAQCBuYW1l
c3BhY2UgTmV0d29ya0NhY2hlIHsKIGNsYXNzIEVudHJ5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBFbnRyeShjb25zdCBLZXkmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3Qg
VmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMp
OworICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVmVjdG9y
PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOwogICAg
IEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgVmVjdG9y
PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOwogICAg
IGV4cGxpY2l0IEVudHJ5KGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYpOwogICAgIEVudHJ5KGNvbnN0
IEVudHJ5Jik7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0K
ICAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1
ZXN0SGVhZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJzOyB9CiAK
LSAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0OworICAgIFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0OwogICAgIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiYgcmVkaXJlY3RSZXF1ZXN0KCkgY29u
c3QgeyByZXR1cm4gbV9yZWRpcmVjdFJlcXVlc3Q7IH0KIAogI2lmIEVOQUJMRShTSEFSRUFCTEVf
UkVTT1VSQ0UpCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6cGFp
cjxTdHJpbmcsIFN0cmluZz4+IG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJzOwogCiAgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IG1fcmVkaXJlY3RSZXF1ZXN0OwotICAg
IG11dGFibGUgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgbXV0
YWJsZSBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAj
aWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICBtdXRhYmxlIFNoYXJlYWJsZVJlc291
cmNlOjpIYW5kbGUgbV9zaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IGFkMDlkZjQ0ZDlhZjEyZmQ0MDgwMzEwNTQ2
ODM1MzZlYTBkYzgxOTMuLjdiMGFkYzQwZjBiMGI2NzE0NzFhMjdhYjUxMzk3NjZkNGI1NTU0NDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTEwOSw3ICsxMDksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9u
c2UmJiByZWNlaXZlZFJlc3BvbnNlLCBSZQogICAgIG1fcmVzcG9uc2UgPSByZWNlaXZlZFJlc3Bv
bnNlOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUucmVzZXQoKTsKIAogICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKICAgICBpZiAodmFs
aWRhdGlvblN1Y2NlZWRlZCAmJiBtX2NhY2hlRW50cnkpCkBAIC0xMjAsMTcgKzEyMCwxNyBAQCB2
b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2Um
JiByZWNlaXZlZFJlc3BvbnNlLCBSZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlv
bjo6VXNlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQor
dm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAg
ICBBU1NFUlQoIW1fY2FjaGVFbnRyeSk7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNo
ZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1p
bmcgZGF0YS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSAx
MCAqIDEwMjQgKiAxMDI0OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6
ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAg
ICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAg
ICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBt
YXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLnJlc2V0KCk7CiAgICAgfQogfQogCkBAIC0xMzksMTAgKzEzOSwxMCBAQCB2b2lkIFNw
ZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKQogICAgIGlmIChtX2RpZENvbXBsZXRlKQogICAgICAgICByZXR1cm47CiAgICAg
aWYgKCFtX2NhY2hlRW50cnkgJiYgbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewotICAgICAgICBt
X2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25z
ZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5jb3B5UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJvZHkp
IHsgfSk7CisgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxS
ZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmdldCgpLCBbXShhdXRv
JiBtYXBwZWRCb2R5KSB7IH0pOwogICAgICAgICAvLyBDcmVhdGUgYSBzeW50aGV0aWMgY2FjaGUg
ZW50cnkgaWYgd2UgY2FuJ3Qgc3RvcmUuCiAgICAgICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIGlz
U3RhdHVzQ29kZUNhY2hlYWJsZUJ5RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkp
KQotICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2lu
YWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsK
KyAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFs
UmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwogICAg
IH0KIAogICAgIGRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApp
bmRleCBjMGUxZTE0YjJhYzQ2MDM1OGY4MTQwN2NkNzBjNDA5MDUyYWY4ZWZlLi4xYjg0M2RiN2Vj
MjcwZGI5ZGFiOWU4YTI1ZjJhNDhhOGVjYWUyYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRv
QXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApAQCAtNzUsNyArNzUsNyBAQCBwcml2
YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAg
ICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAg
ICBib29sIG1fZGlkQ29tcGxldGUgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCmluZGV4IDVlMmUwMmUy
ZmJhMGI0YTBjMDNiNWQzZTY2Yjk3ZjdiY2NjNzk1OGIuLjMxOTliZmYzMTFiNmMzZWVmYmU5NTBi
NDVlNmIwYTk2ZTMyNzc3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotUHJlZmV0Y2hDYWNoZTo6RW50cnk6OkVudHJ5KFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCitQcmVmZXRjaENhY2hlOjpFbnRyeTo6RW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCiAgICAgOiByZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSksIGJ1ZmZlcihXVEZN
b3ZlKGJ1ZmZlcikpCiB7CiB9CkBAIC03Miw3ICs3Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQcmVm
ZXRjaENhY2hlOjpFbnRyeT4gUHJlZmV0Y2hDYWNoZTo6dGFrZShjb25zdCBVUkwmIHVybCkKIAog
c3RhdGljIGNvbnN0IFNlY29uZHMgZXhwaXJhdGlvblRpbWVvdXQgeyA1X3MgfTsKIAotdm9pZCBQ
cmVmZXRjaENhY2hlOjpzdG9yZShjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCit2b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVSTCYgcmVxdWVzdFVybCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25QcmVm
ZXRjaGVzKQogICAgICAgICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gbWFrZVVuaXF1ZTxQcmVmZXRj
aEVudHJpZXNNYXA+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL1ByZWZldGNoQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvUHJlZmV0Y2hDYWNoZS5oCmluZGV4IGEyNTE1MjBiMzFlYWM5MjFjMjJkMzExNTFkNmQyMzFh
MWJlZDEzOGMuLjUyYzBiMTBmY2M2ZDVhNmRlMTE0NDdlN2U0ZTgyMmRmOGY4NDFjYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5o
CkBAIC00NywxOCArNDcsMTggQEAgcHVibGljOgogCiAgICAgc3RydWN0IEVudHJ5IHsKICAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBFbnRyeShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOwor
ICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICAgICAgRW50cnkoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAKLSAgICAgICAg
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVsZWFzZUJ1ZmZlcigpIHsgcmV0dXJuIGJ1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpOyB9CisgICAgICAgIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiByZWxlYXNlQnVmZmVyKCkgeyByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxs
KCk7IH0KIAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAg
ICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZWRpcmVjdFJlcXVlc3Q7CiAgICAgfTsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxFbnRyeT4gdGFrZShjb25zdCBVUkwmKTsKLSAgICB2b2lkIHN0b3JlKGNvbnN0
IFVSTCYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBzdG9yZShjb25zdCBVUkwmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsK
ICAgICB2b2lkIHN0b3JlUmVkaXJlY3QoY29uc3QgVVJMJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLmgKaW5kZXggYjlhYjBkZWViYjlmOTI3YzczNzQyZTg2YTBiZTdmOTcxNjBiZDZmYi4u
NDE2NjhhNWIxY2Q3Mzg2OTY3YjhmZDk3M2U5NjczMmVjYTkwN2VkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWROZWdvdGlhdGVNb2Rl
cm5UTFMoY29uc3QgVVJMJik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
Jik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJik7CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCB0cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rv
d25sb2FkKERvd25sb2FkJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCBlNzgwZDZjMWMzY2Qx
ZWIyYzJmZjVhMGM1NjRhMGU0ZDg4YjdlYTVkLi4zMDUxZjE2OWNiMGEzNzA5OTg1YTE2MTEyMmMy
NWYwZThmMTdiZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTQ0Miw3ICs0NDIsNyBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiBlcgogICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRo
RXJyb3IoZXJyb3IsIG5ldHdvcmtMb2FkTWV0cmljcyk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFU
YXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0
YSkKK3ZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgV1RGRW1pdFNpZ25wb3N0
KG1fdGFzay5nZXQoKSwgIkRhdGFUYXNrIiwgInJlY2VpdmVkICV6ZCBieXRlcyIsIGRhdGEtPnNp
emUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9O
ZXR3b3JrRGF0YVRhc2tDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3Vy
bC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAppbmRleCA4ZmM3YjY2M2U2Zjc1NjJiMmIzNTQ4OTM5
OGEyZmU3MzFiZTA3NGYxLi4zN2YyOTQxNjY0NmM0N2UxZGExZmQ5OTQxY2NhYzAwYjVkYzBmZDIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0Rh
dGFUYXNrQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtEYXRhVGFza0N1cmwuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBOZXR3b3JrRGF0
YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBD
dXJsUmVzcG8KICAgICBpbnZva2VEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0KIAotdm9pZCBOZXR3
b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlk
UmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKIHsKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAgICAgaWYgKHN0
YXRlKCkgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCBzdGF0ZSgpID09IFN0YXRlOjpDb21wbGV0ZWQg
fHwgKCFtX2NsaWVudCAmJiAhaXNEb3dubG9hZCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCmluZGV4IDFjNDI3
ZGRiNzhkNjk1M2ZlODk2MGM1NjkyYWZkZTRmNGYwZWVlODUuLjQ1YmU1Y2UxODQzMjUyNzFkNWMw
ODBkZDM0ZjFlZTRhMTY2NDJhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaApAQCAtNjgsNyArNjgsNyBAQCBw
cml2YXRlOgogICAgIFJlZjxXZWJDb3JlOjpDdXJsUmVxdWVzdD4gY3JlYXRlQ3VybFJlcXVlc3Qo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlcXVlc3RTdGF0dXMgPSBSZXF1ZXN0U3RhdHVz
OjpOZXdSZXF1ZXN0KTsKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShXZWJDb3JlOjpDdXJsUmVx
dWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsK
ICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBX
ZWJDb3JlOjpDdXJsUmVzcG9uc2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2
ZUJ1ZmZlcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6Q3Vy
bFJlcXVlc3QmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFp
bFdpdGhFcnJvcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
JiwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5o
CmluZGV4IGY1ZGI3MDZjNDQ1ODAyMTA4N2Y5NTk5NjY5ZGZhN2Q5ZjgzNzk3OGMuLjMzZDQzYjcy
MjM4ZDIwM2U3ZWRlYzk0MTRjYWY5ZmRhOGY0MDUyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCkBAIC01
NSw3ICs1NSw3IEBAIHN0cnVjdCBQYWNrZXRPcHRpb25zOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDdlMGQ4ZGJlMTkw
MjU5OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYuLjE3ZjA4YzI4ZWExMjViNTUwOTkzZWVkMjRk
NTk2M2I4NTEwYTExNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmgKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0vLyBFbmNvZGVzIGEgU2hhcmVkQnVmZmVyIHRoYXQgaXMgcmVjZWl2
ZWQgYXMgYSBjb3B5IG9mIHRoZSBkZWNvZGVkIGRhdGEgaW4gYSBuZXcgU2hhcmVkQnVmZmVyLgor
Ly8gRW5jb2RlcyBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgdGhhdCBpcyByZWNlaXZlZCBhcyBh
IGNvcHkgb2YgdGhlIGRlY29kZWQgZGF0YSBpbiBhIG5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
LgogLy8gVG8gYXZvaWQgY29weWluZyBmcm9tIHRoZSBEZWNvZGVyLCB1c2UgU2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSB0byByZWNlaXZlIGEgRGF0YVJlZmVyZW5jZSBpbnN0ZWFkLgogCiAjcHJh
Z21hIG9uY2UKQEAgLTQzLDExICs0MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9idWZmZXIo
V1RGTW92ZShidWZmZXIpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVy
KSkgeyB9Ci0gICAgU2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpKQotICAgIHsKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIpOwotICAgIH0KKyAg
ICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250
aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigpKSB7IH0KKyAgICBTaGFy
ZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3VzKCkpIHsgfQorICAg
IFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSB7IH0K
IAogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBt
X2J1ZmZlcjsgfQogICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZm
ZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCmluZGV4IGQzZDBlYzVl
OTc4NTU5OWI2MzRhODRjNmM0NDcxYjUyY2QyMjEzZjEuLjY3ZWM4ZTVlOTJiZDAyNDExNWRiMGQ0
MDgwYTI0ZmU3MzU3MGQzZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBFbmNvZGVzIGEgU2hhcmVk
QnVmZmVyIG9yIERhdGFSZWZlcmVuY2UgdGhhdCBpcyByZWNlaXZlZCBhcyBhIERhdGFSZWZlcmVu
Y2UgdG8gdGhlIGRlY29kZWQgZGF0YS4KKy8vIEVuY29kZXMgYSBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyIG9yIERhdGFSZWZlcmVuY2UgdGhhdCBpcyByZWNlaXZlZCBhcyBhIERhdGFSZWZlcmVuY2Ug
dG8gdGhlIGRlY29kZWQgZGF0YS4KIAogI3ByYWdtYSBvbmNlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCBkMjQwNmVlMjkwNTMxMWY2OWI3NTg0MjFlNzdhM2U2
NmNiYTI3YjY1Li5jMDI2ZjU0OTU2OWIyYmUwMDc4YWUzMjVkMDUzOWUwNzFhZjExMDQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmUHRyPFNo
YXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQorUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoYnVmZmVyLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MSw3ICs1MSw3IEBAIFJlZlB0
cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVk
QnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZGF0YVNpemUgPD0g
c2l6ZSgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoeworICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsKICAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVkVGhpcy0+
ZGF0YSgpKTsKICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
U2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCmlu
ZGV4IGUzNzFiY2Q3MzAyY2Y4NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUyYWIuLjFiNGZkZmFmNjgz
ODlkY2U3MjhmZjM0ZTVlNWYwMTJlMjQzZmEyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuaApAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBFbmNvZGVyOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogfQogCiAjaWYgT1MoREFSV0lOKQpAQCAtMTIwLDcgKzEyMSw3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIEZJWE1FOiBDaGFuZ2UgdGhlc2UgZmFjdG9yeSBmdW5jdGlvbnMgdG8gcmV0dXJuIFJl
ZjxTaGFyZWRNZW1vcnk+IGFuZCBjcmFzaCBvbiBmYWlsdXJlLgogICAgIHN0YXRpYyBSZWZQdHI8
U2hhcmVkTWVtb3J5PiBhbGxvY2F0ZShzaXplX3QpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVk
TWVtb3J5PiBjb3B5QnVmZmVyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOworICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBjb3B5QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbWFw
KGNvbnN0IEhhbmRsZSYsIFByb3RlY3Rpb24pOwogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRT
KQogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiB3cmFwTWFwKHZvaWQqLCBzaXplX3Qs
IGludCBmaWxlRGVzY3JpcHRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UElXZWJBcmNoaXZlUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNo
aXZlUmVzb3VyY2UubW0KaW5kZXggY2EwYzI0YjI3NzM1NDc2NzZlMzQ4MDFjNzlhMWQ1NjViZjk1
ZmU1ZC4uMTEwZTBhZGRlNTU4YTlkOTMzOGIyNDUwNmU4OTE2M2M5MzY5NzE5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgsNyArNjgs
NyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNpZ25lZCBj
aGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2ZVJlc291
cmNlOjpkYXRhKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hp
dmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlQ0ZEYXRhKCk7CiAKICAgICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFz
ZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEuCiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVy
c0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzQ29jb2EubW0KaW5kZXggODdmNGViMWViYTI4NzJlMGNiMGFiOTU5MTZhZmVkZTI5ZmNiYTI0
NC4uM2MxYjU3ZDVhYTI2ZWM3MmU2MGI1ZDc4YTExZTlmZDg1MmNmZmVjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29j
b2EubW0KQEAgLTU2NCwxMyArNTY0LDEyIEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBs
YXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoKmluY2x1ZGVzQ3JlYXRpb25EYXRh
KSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGZv
bnRGYWNlRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250RmFj
ZURhdGE7CiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgICAgICAvLyBVcG9uIHJlY2VpcHQsIGNvcHkgdGhlIGRhdGEgZm9y
IHNlY3VyaXR5LCBzbyB0aGUgc2VuZGVyIGNhbid0IHNjcmliYmxlIG92ZXIgaXQgd2hpbGUgd2Un
cmUgdXNpbmcgaXQuCi0gICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RmFjZURhdGEudmFsdWUoKS0+ZGF0YSgpLCBmb250RmFj
ZURhdGEudmFsdWUoKS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9
IGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5tYWtlQ29udGlndW91cygpOwogCiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGl0
ZW1JbkNvbGxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFi
bGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5j
cHAKaW5kZXggYzY5NjFjNzE0NDAyYmYzNzdhZTkxMGZiYjZjY2FhNTJkM2I4NDEyOC4uNmZhMDJh
N2JjM2VlNTRhZTZkMzI1MzgxMGQ3OGRlYzMxNjUzNTNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBib29sIFNoYXJlYWJs
ZVJlc291cmNlOjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEhhbmRsZSYg
aGFuZGxlKQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcElu
U2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VsZiA9IFJlZiB7ICp0
aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAogICAgICAgICBbc2VsZiA9IFJlZiB7
ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9CiAgICAgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA2NDk4MmJjNDgx
MDJhNGFkYjIwYTdlNjBlMjFiZDQ5MmQ2NTMzNzRjLi44NDNmZDQ3MzEzYWVlY2EyOTkzMDYxMmZj
NWVjNTc4NzU1NDM0MmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBERUZJTkVfU0lNUExFX0FSR1VNRU5U
X0NPREVSX0ZPUl9TT1VSQ0UoRGlzcGxheUxpc3Q6OlNldElubGluZVN0cm9rZUNvbG9yKQogCiAj
dW5kZWYgREVGSU5FX1NJTVBMRV9BUkdVTUVOVF9DT0RFUl9GT1JfU09VUkNFCiAKLXN0YXRpYyB2
b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcikKK3N0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgYm9vbCBp
c051bGwgPSAhYnVmZmVyOwogICAgIGVuY29kZXIgPDwgaXNOdWxsOwpAQCAtMTc3LDcgKzE3Nyw3
IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAjaWYgVVNFKFVOSVhf
RE9NQUlOX1NPQ0tFVFMpCi0gICAgLy8gRG8gbm90IHVzZSBzaGFyZWQgbWVtb3J5IGZvciBTaGFy
ZWRCdWZmZXIgZW5jb2RpbmcgaW4gVW5peCwgYmVjYXVzZSBpdCdzIGVhc3kgdG8gcmVhY2ggdGhl
CisgICAgLy8gRG8gbm90IHVzZSBzaGFyZWQgbWVtb3J5IGZvciBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyIGVuY29kaW5nIGluIFVuaXgsIGJlY2F1c2UgaXQncyBlYXN5IHRvIHJlYWNoIHRoZQogICAg
IC8vIG1heGltdW0gbnVtYmVyIG9mIGZpbGUgZGVzY3JpcHRvcnMgb3BlbiBwZXIgcHJvY2VzcyB3
aGVuIHNlbmRpbmcgbGFyZ2UgZGF0YSBpbiBzbWFsbCBjaHVua3MKICAgICAvLyBvdmVyIHRoZSBJ
UEMuIENvbm5lY3Rpb25Vbml4LmNwcCBhbHJlYWR5IHVzZXMgc2hhcmVkIG1lbW9yeSB0byBzZW5k
IGFueSBJUEMgbWVzc2FnZSB0aGF0IGlzCiAgICAgLy8gdG9vIGxhcmdlLiBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODU3MS4KQEAgLTI2NCw3ICsyNjQsNyBA
QCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29k
ZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbgogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRhdGEuYXBwZW5kKFdURk1vdmUo
YnVmZmVyKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgfQogCiAgICAgcmV0
dXJuIHRydWU7CkBAIC0xNTUwLDEwICsxNTUwLDEwIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QK
ICAgICBpZiAoaGFzU3RyaW5nKQogICAgICAgICBlbmNvZGVyIDw8IHN0ZDo6Z2V0PFN0cmluZz4o
cGxhdGZvcm1EYXRhKTsKIAotICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKTsKKyAgICBib29sIGhhc0J1ZmZl
ciA9IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pihw
bGF0Zm9ybURhdGEpOwogICAgIGVuY29kZXIgPDwgaGFzQnVmZmVyOwogICAgIGlmIChoYXNCdWZm
ZXIpCi0gICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBzdGQ6OmdldDxSZWY8U2hh
cmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKS5wdHIoKSk7CisgICAgICAgIGVuY29kZVNoYXJlZEJ1
ZmZlcihlbmNvZGVyLCBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHBsYXRm
b3JtRGF0YSkucHRyKCkpOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3Rv
bURhdGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpFbnRyeSYgZGF0YSkKQEAgLTI5NzYsNyArMjk3Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRB
dHRhY2htCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3Zl
KG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKSB9fTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1v
dmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwg
ZGF0YS5zaXplKCkpIH0gfTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1F
TlQpCkBAIC0zMDEwLDYgKzMwMTAsMzQgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkUGxhdGZv
cm1EYXRhQ3VlVmFsdWU+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFAKIH0KICNl
bmRpZgogCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1
ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIo
ZGVjb2RlciwgYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJl
dHVybiBidWZmZXI7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hh
cmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihk
ZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKIHZvaWQgQXJndW1l
bnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewog
ICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwpAQCAtMzEwNyw3
ICszMTM1LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bjo6TWVzc2FnZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGUKIHsKICAgICBlbmNvZGVyIDw8IG1l
c3NhZ2UuZmlyc3Q7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1l
c3NhZ2Uuc2Vjb25kLmNvcHlSZWYoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gbWVzc2FnZURhdGEgPSBtZXNzYWdlLnNlY29uZC5jb3B5UmVmKCk7CiAgICAgZW5jb2RlciA8
PCBtZXNzYWdlRGF0YTsKIH0KIApAQCAtMzExNyw3ICszMTQ1LDcgQEAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+ICBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkNETUkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjVm
MDFjMDI5MmEwMTlmMDY3NjI0YmJiNTUzNDAyZGYxYTMzYzViNi4uNmZhYzJhYTFlYTc4NDZmZjZi
Zjg5MDIxZjBmNTJlOWFhN2FlMDNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xh
c3MgQ29sb3I7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3Mg
Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKQEAgLTEzOCw3ICsxMzks
NyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xh
c3MgU2NyaXB0QnVmZmVyOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3ByaW5nVGltaW5nRnVu
Y3Rpb247CiBjbGFzcyBTdGVwc1RpbWluZ0Z1bmN0aW9uOwogY2xhc3MgU3RpY2t5UG9zaXRpb25W
aWV3cG9ydENvbnN0cmFpbnRzOwpAQCAtNzUxLDYgKzc1MiwxNiBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4g
ewogfTsKICNlbmRpZgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHsKKyAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+Jik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKaW5kZXggY2YyZTRkNWY5M2ZkMmQ5NDZiYWJm
ZjkzZWVhM2U5ZTg2MGFlYmJmNC4uYjYwN2FjZTgzOGUwNGJjZTFhNmFlZTRkYTU2NTU5ZTA5Njk4
Mzk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNw
cApAQCAtODUsNyArODUsNyBAQCBXZWJIaXRUZXN0UmVzdWx0RGF0YTo6V2ViSGl0VGVzdFJlc3Vs
dERhdGEoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaGl0VGVzdAogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoSW1hZ2UqIGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7CisgICAg
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgp
OwogICAgICAgICBpZiAoYnVmZmVyKSB7CiAgICAgICAgICAgICBpbWFnZVNoYXJlZE1lbW9yeSA9
IFdlYktpdDo6U2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwogICAgICAgICAgICAg
aW1hZ2VTaXplID0gYnVmZmVyLT5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3Rr
L0FyZ3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCAyNWEzMDdmMzgyOWU5Mjc4YjVlYTc4ZmY4Mjk2
Nzg4MzM3N2EzMWJhLi42NzE3NThhMjgwYTVlNDQwYWEwNjBhNzljZjFmMGYxMjZkYjdiZTI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAg
LTk1LDcgKzk1LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2VsZWN0aW9uRGF0YSYKICAgICBib29sIGhhc0N1c3Rv
bURhdGEgPSBzZWxlY3Rpb24uaGFzQ3VzdG9tRGF0YSgpOwogICAgIGVuY29kZXIgPDwgaGFzQ3Vz
dG9tRGF0YTsKICAgICBpZiAoaGFzQ3VzdG9tRGF0YSkKLSAgICAgICAgZW5jb2RlciA8PCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPihzZWxlY3Rpb24uY3VzdG9tRGF0YSgpKTsKKyAgICAgICAgZW5jb2Rl
ciA8PCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oc2VsZWN0aW9uLmN1c3RvbURhdGEo
KSk7CiAKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSA9IHNlbGVjdGlvbi5jYW5TbWFydFJlcGxh
Y2UoKTsKICAgICBlbmNvZGVyIDw8IGNhblNtYXJ0UmVwbGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCBiMzRlYzczNjM2M2M0ZjFkMmIw
ZTc2MGFkM2Y0YTlkNWJhYzFhMzRlLi4xNDkwYzUxMWJkYzM4YmQ4YWI0YTY5NWFlY2YzMDZkOTVm
YWEzOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNo
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
Y3BwCkBAIC05OCw3ICs5OCw3IEBAIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IEF0dGFjaG1lbnQ6
OmZpbGVTaXplRm9yRGlzcGxheSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1h
Z2VEYXRhKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBB
dHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBudWxs
cHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFj
aG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5k
ZXggYWZhOTI5Y2YwOTNkMjJlYzc2YWQ4NmZkYTAzYjUwMWJiZmQyOWRjMy4uZmU1MGU1MzhiOGVi
YjM1MWE0ODM2ZDFkZDg5M2QxNDdhNTZhODc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5oCkBAIC0zOSw2ICszOSw3IEBAIE9CSkNfQ0xBU1MgTlNTdHJp
bmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODIsNyAr
ODMsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKIAotICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0OworICAg
IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBlbmNsb3NpbmdJbWFnZURh
dGEoKSBjb25zdDsKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZUZvckRpc3Bs
YXkoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0SGFzRW5jbG9zaW5nSW1hZ2UoYm9vbCBoYXNFbmNs
b3NpbmdJbWFnZSkgeyBtX2hhc0VuY2xvc2luZ0ltYWdlID0gaGFzRW5jbG9zaW5nSW1hZ2U7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlz
dFN0b3JlLmgKaW5kZXggN2ZjMDU0NTdlNjRjZjU4OWIwZmIwZTdlMDM2ZjY5MGZhMmMxN2JhYy4u
NGUyNjZmMzY3YWM2MDJiOGVmMWVhZjc1N2EwYTA0ZGM3M2Y3NzFhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKQEAg
LTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAppbmRleCA1NjIzNDAxNDU5ZGE1ZmUzMGY0
OTFhNDFmYjM0N2E2NzU3MjAyYzQwLi4xMTFmMDkyNjNmODIyMzgyOWE1YWQyNjQ0MzRiYTQyMGYx
OThkZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQ2xpZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RydWN0IENvbnRlbnRSdWxlTGlzdFJlc3Vs
dHM7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogfQogCkBAIC0xMTksNyAr
MTE5LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdmlydHVhbCB2b2lk
IGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExv
YWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKSB7IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBSZWY8TmF2aWdh
dGlvbkFjdGlvbj4mJiwgUmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYm
IGxpc3RlbmVyLCBPYmplY3QqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KaW5kZXggY2Y0NjIxNmNhMjVhOWVkZjgy
ZTMxOWEzMzAzMDc5MWU4ZDRlMTUzYy4uZGZlZjNlMDcwZjk2MTYzMDQ5NzE0NGRhZjNmMzAwY2I0
Y2E1MTk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQ
SUF0dGFjaG1lbnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvQVBJQXR0YWNobWVudENvY29hLm1tCkBAIC0xMzcsNyArMTM3LDcgQEAgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gQXR0YWNobWVudDo6ZmlsZVNpemVGb3JEaXNwbGF5KCkgY29uc3QKICAgICBy
ZXR1cm4gW2ZpbGVXcmFwcGVyIHJlZ3VsYXJGaWxlQ29udGVudHNdLmxlbmd0aDsKIH0KIAotUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRh
KCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBBdHRhY2ht
ZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9oYXNFbmNsb3Np
bmdJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBjNGVlNTI1MDc2NDJkYjRlNTRjZmFk
ZjdmZWUzYmYxYjdjMGQzZDNjLi4wMWM4MTAyNzhlZjYzNTkxNzJmOGU2NWI1MmNmY2IwYjUyMWI3
ZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KQEAgLTE1OTYsNyArMTU5Niw3IEBAIC0gKHZvaWQpX3N0b3JlQXBwSGlnaGxpZ2h0Oihjb25z
dCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKWhpZ2hsaWdodAogICAgIGlmIChoaWdobGlnaHQudGV4
dCkKICAgICAgICAgdGV4dCA9IGhpZ2hsaWdodC50ZXh0LnZhbHVlKCk7CiAKLSAgICBhdXRvIHdr
SGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdo
bGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0
IGltYWdlOm5pbF0pOworICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGln
aGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7
CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZp
ZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5OZXdHcm91cDpyZXF1ZXN0T3JpZ2luYXRlZEluQXBwOild
KQogICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBzdG9yZUFwcEhpZ2hsaWdodDp3a0hp
Z2hsaWdodC5nZXQoKSBpbk5ld0dyb3VwOmhpZ2hsaWdodC5pc05ld0dyb3VwID09IFdlYkNvcmU6
OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDpo
aWdobGlnaHQucmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA9PSBXZWJDb3JlOjpIaWdobGlnaHRSZXF1
ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAppbmRleCBhYzRhMGY0MzcwMTUyZWQ1NzJiNTA5MWRmYTUx
YmFlYmFiODdmNGU5Li5jODAyOWMxNDBhNmRkMTRiMTk2NDkyMjViODc4MzBlZWMxMzQwMGZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApA
QCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAg
ICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0
IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgb3ZlcnJpZGU7
Ci0gICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQg
ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0KaW5kZXggMzg1NTg4MmM4N2RjOWVkMzFjMWVmMGJhYjYxNmIxZTY0NTk0NGVlZi4u
OGQzYTg1NjQ2MmVhZWY3NDFkOGMyOWUyNTkyZmQ1NzM2NmY1OTljOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTIyMCw3ICsx
MjIwLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFN0YXJ0
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnIKICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdL
TmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dl
YlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRTdGFydExvYWRGb3JRdWlja0xv
b2tEb2N1bWVudEluTWFpbkZyYW1lV2l0aEZpbGVOYW1lOmZpbGVOYW1lIHV0aTp1dGldOwogfQog
Ci12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
Cit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUpCiAgICAgICAgIHJldHVy
bjsKQEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GCiAgICAgaWYg
KCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtzdGF0aWNfY2Fz
dDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdl
dCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQo
KV07CisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+Pihu
YXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dl
YlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVy
Lm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNv
Y29hLm1tCmluZGV4IDgwMmZmYWE2ZDZlZGJlYTJlOTcyNzc0ZTI2OTY1YjJkYmIyYTczNWUuLjY4
MzM3M2VhZTAwZjVkYjQyYjgxNDZjZTlkNTMxYmM4YWMwYTU0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCkBAIC0z
MDIsMTIgKzMwMiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZEF1ZGlvQ29tcG9uZW50
UmVnaXN0cmF0aW9ucygpCiAgICAgICAgIGlmIChub0VyciAhPSBBdWRpb0NvbXBvbmVudEZldGNo
U2VydmVyUmVnaXN0cmF0aW9ucygmcmVnaXN0cmF0aW9ucykgfHwgIXJlZ2lzdHJhdGlvbnMpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3
ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCByZWdpc3RyYXRpb25zID0gYWRvcHRDRihyZWdp
c3RyYXRpb25zKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgcmVnaXN0cmF0aW9ucyA9IGFkb3B0Q0Yo
cmVnaXN0cmF0aW9ucyldICgpIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25zLmdldCgpKTsKLSAgICAg
ICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9D
b21wb25lbnRSZWdpc3RyYXRpb25zKHsgcmVnaXN0cmF0aW9uRGF0YSB9KSwgMCk7CisgICAgICAg
ICAgICB3ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29t
cG9uZW50UmVnaXN0cmF0aW9ucyh7IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkgfSksIDApOwog
ICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5oCmluZGV4IDNmNmRkMWYyNDJlN2ExMTVlY2Y3OTgzOTBmMzRiNjM1YzZlOGQ2
ZjkuLmY1ODkxMjQxNzAyZGFhNDIwY2M0ZTZlMjQ2MjhhMWNkZTg5MDdkMjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaApAQCAtNTA2LDcgKzUwNiw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwg
Y29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlKTsKICAgICB2b2lkIHNldEZpbGVB
bmRVUkxUeXBlcyhOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3Ry
aW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIE5TUGFzdGVi
b2FyZCAqKTsKLSAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdl
KiwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0
bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcg
KnBhc3RlYm9hcmRPcmlnaW4pOworICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2Vi
Q29yZTo6SW1hZ2UqLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5T
U3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0
ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKnBhc3RlYm9hcmRPcmlnaW4pOwogICAgIHZvaWQgcGFzdGVi
b2FyZENoYW5nZWRPd25lcihOU1Bhc3RlYm9hcmQgKik7CiAgICAgdm9pZCBwcm92aWRlRGF0YUZv
clBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICosIE5TU3RyaW5nICp0eXBlKTsKICAgICBOU0FycmF5
ICpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVz
dGluYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQppbmRleCAzZDllODc3YjBjYjc1NjU0YjYzOTE2Mzk1NTdmNTJiNjAzOTJjYWM5Li42MjM2N2Rj
NWFkMWZlMTIyMWY3YjA5OWU5YmI0NDU0ZGIzN2E1OGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtNDQ0OSw3ICs0NDQ5LDcgQEAgdm9pZCBX
ZWJWaWV3SW1wbDo6c2V0RmlsZUFuZFVSTFR5cGVzKE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJp
bmcgKmV4dGVuc2lvbiwgTlMKICAgICBtX3Byb21pc2VkVVJMID0gdXJsOwogfQogCi12b2lkIFdl
YlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2Us
IE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNTdHJpbmcgKnRpdGxl
LCBOU1N0cmluZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJsZVVSTCwgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyKiBhcmNoaXZlQnVmZmVyLCBOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5TU3RyaW5nICpv
cmlnaW5JZGVudGlmaWVyKQordm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpl
eHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2li
bGVVUkwsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5T
U3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKm9yaWdpbklkZW50aWZpZXIpCiB7CiAg
ICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0
aE5hbWU6cGFzdGVib2FyZE5hbWVdOwogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gdHlw
ZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpXZWJD
b3JlOjpsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpLCBuaWxdKTsKQEAgLTQ0NzAs
NyArNDQ3MCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdl
YkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuCiAgICAgc2V0RmlsZUFuZFVSTFR5
cGVzKGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIHBhc3RlYm9h
cmQpOwogCiAgICAgaWYgKGFyY2hpdmVCdWZmZXIpIHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBh
cmNoaXZlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNo
aXZlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6bnNE
YXRhLmdldCgpIGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmVd
OwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECkBAIC00NTAxLDcgKzQ1MDEsNyBA
QCB2b2lkIFdlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJk
ICpwYXN0ZWJvYXJkLCBOU1N0cmluZyAqdAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoW3R5
cGUgaXNFcXVhbDptX3Byb21pc2VkSW1hZ2UtPnV0aSgpXSAmJiBtX3Byb21pc2VkSW1hZ2UtPmRh
dGEoKSkgewotICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2Ut
PmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9
IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6KF9fYnJpZGdlIE5TRGF0YSAqKXBs
YXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnR5cGVdOwogICAgIH0KIApAQCAtNDU1NCw3ICs0NTU0
LDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0
RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRh
OwogCiAgICAgaWYgKG1fcHJvbWlzZWRJbWFnZSkgewotICAgICAgICBkYXRhID0gbV9wcm9taXNl
ZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBkYXRhID0gbV9wcm9taXNl
ZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAg
ICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmls
ZVdpdGhDb250ZW50czpkYXRhLmdldCgpXSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHdyYXBwZXIg
PSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6bV9wcm9taXNlZFVSTF0gb3B0aW9uczpOU0ZpbGVXcmFwcGVyUmVhZGluZ0ltbWVk
aWF0ZSBlcnJvcjpuaWxdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBj
NDg1YzdmYzMxM2VhMDgzM2ZjNjA2MjY3MTY5ZDY5MmE4MjQwOTI4Li5iNDYyZDhkYjVjYzYyMDM4
NmU3NjgzZGIyNDgzNmFiM2NlNjRmZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCkBAIC0zMjgsNyArMzI4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBVU0UoQVBQS0lU
KQotICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVy
LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3Qg
U3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVS
TCwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBT
dHJpbmcmIG9yaWdpbklkZW50aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvbWlz
ZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9y
aWdpbklkZW50aWZpZXIpID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9h
dFJlY3QgY29udmVydFRvRGV2aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1YTgzMmU1NWFjYmEx
ODliMzliOWU4OTdjYzFjYTE4YjdiNDg0NTU1Li5lNWVhZjQxZjM4YjY0N2JjNWYzNzNkYjA3OWRl
YjQxNmFhOTYzZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAt
MjU5LDcgKzI1OSw3IEBAIGNsYXNzIEludFNpemU7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBj
bGFzcyBSdW5Mb29wT2JzZXJ2ZXI7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNwZWVjaFJlY29n
bml0aW9uUmVxdWVzdDsKIGNsYXNzIFRleHRJbmRpY2F0b3I7CiBjbGFzcyBWYWxpZGF0aW9uQnVi
YmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRl
eCBkZjU5ZDU2ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQxLi4xOTk3ZWFlMjBhYzIy
Y2EzYWU4MDA0YzcwNGZhMjJkYTYwOWUwMDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtNTEsNiArNTEsNyBAQCBXZWJVUkxTY2hlbWVUYXNr
OjpXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImIGhhbmRsZXIsIFdlYlBhZ2VQ
cm94eSYgcAogICAgICwgbV9yZXF1ZXN0KFdURk1vdmUocGFyYW1ldGVycy5yZXF1ZXN0KSkKICAg
ICAsIG1fZnJhbWVJbmZvKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJz
LmZyYW1lSW5mbyksICZwYWdlKSkKICAgICAsIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoc3luY0NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAsIG1fc3luY0RhdGEobWFrZVVuaXF1ZVJl
ZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiB9CkBAIC0xNjgsNyArMTY5LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIC0+IEUKICAgICBy
ZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0KIAotYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpk
aWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHlw
ZQorYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKIHsKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwogCkBAIC0xODcsMTAgKzE4OCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1l
VGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2Vw
dGlvblR5CiAgICAgbV9kYXRhU2VudCA9IHRydWU7CiAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAg
ICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RG
TW92ZShidWZmZXIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zeW5jRGF0YSA9IFdU
Rk1vdmUoYnVmZmVyKTsKKyAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIApAQCAtMjE3
LDEyICsyMTUsOSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgbV9jb21wbGV0ZWQgPSB0
cnVlOwogICAgIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5
bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9OwotCisgICAgICAgIHNpemVfdCBz
aXplID0gbV9zeW5jRGF0YS0+c2l6ZSgpOworICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9
IHsgbV9zeW5jRGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUgfTsK
ICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBX
VEZNb3ZlKGRhdGEpKTsKLSAgICAgICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29t
cGxldGUobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJ
RCwgZXJyb3IpLCBtX3dlYlBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmgKaW5kZXggNmE4NTYwMjFiMTI5OTI0NmM3MDAwOTNkZDBhNDdmMmMxMzA4NTI2
Ny4uNzk5NDJmOWIyMGEyNjYwY2E0YTdkY2Q0NTAxOGQxNmU0M2I2NjZmNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtMzUsNiArMzUsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2Ug
QVBJIHsKIGNsYXNzIEZyYW1lSW5mbzsKQEAgLTQzLDcgKzQ0LDggQEAgY2xhc3MgRnJhbWVJbmZv
OwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC04NCw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25UeXBlIHdpbGxQZXJm
b3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
PiYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICBFeGNl
cHRpb25UeXBlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJik7Ci0gICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKTsKKyAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZENv
bXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgc3RvcCgp
OwpAQCAtMTE1LDcgKzExNyw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5jTG9hZENvbXBsZXRpb25I
YW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bV9zeW5jRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4g
bV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFu
ZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xp
cGJvYXJkLmgKaW5kZXggNzg2NmNkYjE3NzQ2MDA3YWIwYTdhMTdjNTViODdjN2YxNjRjMmJhZS4u
NzI3OWY4NDRjYzJiYmQyYjAxN2ZlMGYwOTdkZTAxODcwYTlhODUyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaApAQCAtMzYsNyArMzYsNyBAQCB0eXBlZGVmIHN0cnVj
dCBfR3RrQ2xpcGJvYXJkIEd0a0NsaXBib2FyZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTUsNyArNTUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBmb3JtYXRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0
cmluZz4mJik+JiYpOwogICAgIHZvaWQgcmVhZFRleHQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcmJik+JiYpOwogICAgIHZvaWQgcmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgY2hh
ciosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+
JiYpOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBjaGFyKiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYpOwogICAgIHZv
aWQgd3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKTsKICAgICB2b2lkIGNsZWFyKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAppbmRleCBj
MmJmNTE4M2IzMGYxMGU5ZWI3ODEzY2RhZGEyMjNlOTE4OWM3NDU5Li41OTY2ZDU1NzRjMjgyZjUz
MTY5NDA5NjA4Mjk2MGFlMzM5Y2ExMTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL0NsaXBib2FyZEd0azMuY3BwCkBAIC0xMjYsMTUgKzEyNiwxNSBAQCB2b2lkIENsaXBib2Fy
ZDo6cmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYp
PiYmIGNvbXBsZQogc3RydWN0IFJlYWRCdWZmZXJBc3luY0RhdGEgewogICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJBc3luY0RhdGEo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4mJiBo
YW5kbGVyKQorICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJBc3luY0RhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxl
cikKICAgICAgICAgOiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKQogICAgIHsK
ICAgICB9CiAKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRs
ZXI7CiB9OwogCi12b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFy
KiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGd0a19jbGlwYm9h
cmRfcmVxdWVzdF9jb250ZW50cyhtX2NsaXBib2FyZCwgZ2RrX2F0b21faW50ZXJuKGZvcm1hdCwg
VFJVRSksIFtdKEd0a0NsaXBib2FyZCosIEd0a1NlbGVjdGlvbkRhdGEqIHNlbGVjdGlvbiwgZ3Bv
aW50ZXIgdXNlckRhdGEpIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlYWRCdWZmZXJBc3lu
Y0RhdGE+IGRhdGEoc3RhdGljX2Nhc3Q8UmVhZEJ1ZmZlckFzeW5jRGF0YSo+KHVzZXJEYXRhKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKaW5kZXgg
MDdhYmI3MTMxOTg4NTNiNzg3YzYzMjRiZDQ4MGIxZTA4OGEyYTNkMy4uNWI4MWZhOGYyOWQzZjdj
ZjFjM2YwOWQxZmMzYzg4NzM0ZGM1MWEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9DbGlwYm9hcmRHdGs0LmNwcApAQCAtMTIwLDE1ICsxMjAsMTUgQEAgdm9pZCBDbGlwYm9h
cmQ6OnJlYWRGaWxlUGF0aHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYm
KT4mJiBjb21wbGUKIHN0cnVjdCBSZWFkQnVmZmVyQXN5bmNEYXRhIHsKICAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAKLSAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYg
aGFuZGxlcikKKyAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGhhbmRs
ZXIpCiAgICAgICAgIDogY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkKICAgICB7
CiAgICAgfQogCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5k
bGVyOwogfTsKIAotdm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9ybWF0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hh
ciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb25zdCBjaGFy
KiBtaW1lVHlwZXNbXSA9IHsgZm9ybWF0LCBudWxscHRyIH07CiAgICAgZ2RrX2NsaXBib2FyZF9y
ZWFkX2FzeW5jKG1fY2xpcGJvYXJkLCBtaW1lVHlwZXMsIEdfUFJJT1JJVFlfREVGQVVMVCwgbnVs
bHB0ciwgW10oR09iamVjdCogY2xpcGJvYXJkLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50
ZXIgdXNlckRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLmgKaW5kZXggZDIyMzhmZGM5ZDE2Zjc3ZjhjM2QzMDJjYTk5NzZmZTgzZjFiM2Yz
Ny4uYWI4N2MyYTdlOGMzNTdhNjViM2NmZTYwNzkzOGZkZmVjOGE2NTJiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTEwMCw4ICsx
MDAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZXhlY3V0ZVVuZG9SZWRvKFVuZG9PclJlZG8pIG92
ZXJyaWRlOwogICAgIGJvb2wgZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoY29uc3QgU3Ry
aW5nJiBzZWxlY3Rvcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdGFydERyYWcoY29uc3QgV2ViQ29y
ZTo6RHJhZ0l0ZW0mLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2UpIG92ZXJy
aWRlOwotICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmlu
ZyYgdGl0bGUsCi0gICAgICAgIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2li
bGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFByb21p
c2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwKKyAg
ICAgICAgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRy
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVNlY3Vy
ZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0U2VjdXJlSW5wdXRTdGF0ZSgp
IG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5SW5wdXRDb250ZXh0QWJvdXREaXNjYXJkZWRDb21w
b3NpdGlvbigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IGE0MTEyMTM1ZjJlZjE5MDE1YTUyZjFlMWIwM2FlMzBh
MWYyMjNkMmEuLmMzNjNlOTU1ZTg3OWMwZTE4NmI0MTUwOTA5MTMzNjVjMjBmZTkwNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAg
LTQwMCw3ICs0MDAsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzdGFydERyYWcoY29uc3QgV2Vi
Q29yZTo6RHJhZ0l0ZW0mIGl0ZW0sIGNvbnN0IFNoYXJlYWJsZUJpdAogICAgIG1faW1wbC0+c3Rh
cnREcmFnKGl0ZW0sIGltYWdlKTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0UHJvbWlz
ZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6
c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50
aWZpZXIpCiB7CiAgICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICBp
bWFnZS0+c2V0RGF0YShXVEZNb3ZlKGltYWdlQnVmZmVyKSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBlMDNlMDgwYWVlMDgz
ODBiNDZmZmU4OWRkOGU2MWI2NmI1OThkYjQ2Li4wMWQ4NDBhMmE2M2VhYzc5MWZiZDg0ZmJlNjM3
YjViMjhjZjYxMzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0KQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UHJv
bWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUwog
ICAgICAgICByZXR1cm47CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHNoYXJlZE1lbW9yeUltYWdl
LT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1hZ2VIYW5kbGUuZGF0YVNpemUpOwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKICAgICBpZiAoIWFyY2hpdmVIYW5kbGUuaGFuZGxlLmlz
TnVsbCgpKSB7CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QXJjaGl2ZSA9IFNoYXJlZE1lbW9y
eTo6bWFwKGFyY2hpdmVIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRPbmx5KTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnlBcmNoaXZlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCmluZGV4IGZhOTQwMjVl
ZDc0NzMwZDI4ZTcxNjQ2Mjg1ZjllNWJhNjUzYjhmMTIuLmMyOGZlNjVmMGNmMTY0Mzk5ODE4YWNh
MzJmOTgxY2M3NzhmMWU5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBSZW1vdGVDRE06OnN1
cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9uVHlwZSYs
IGNvbnMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0lu
aXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkg
Y29uc3QKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IHR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0CiB7CiAgICAg
Ly8gVGhpcyBjaGVjayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBpbnNpZGUgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHk6OnJlcXVlc3RMaWNlbnNlKCkuCiAgICAgcmV0dXJuIHRydWU7CkBAIC0x
MjksNyArMTI5LDcgQEAgdm9pZCBSZW1vdGVDRE06OmxvYWRBbmRJbml0aWFsaXplKCkKICAgICBt
X2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUNETVByb3h5OjpMb2FkQW5kSW5pdGlhbGl6ZSgpLCBtX2lkZW50aWZpZXIpOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UoY29u
c3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjaGVjayB3aWxsIGJlIGRv
bmUsIGxhdGVyLCBpbnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUxp
Y2Vuc2UoKS4KICAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKaW5kZXggMGFkZGY4MzM1M2I2ZWExYjJl
OGIwMmM2YjdlZTNkYWY0NjhjZDM4My4uOGM0NTRlYjgzZTU5OTRhOGU0ZDU5MmQ1MWRmOTFmZjli
NTIzY2JlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETS5oCkBAIC00OCwxMyArNDgsMTMgQEAgcHJpdmF0ZToKICAgICBib29sIHN1cHBvcnRzQ29u
ZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29u
c3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25z
KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3Jl
OjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lv
blR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZSYsIGNv
bnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKLSAg
ICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
IGNvbnN0IGZpbmFsOwogICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRl
bnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAg
V2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3Qg
V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJl
c3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVy
c0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkNETUlu
c3RhbmNlPiBjcmVhdGVJbnN0YW5jZSgpIGZpbmFsOwogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxp
emUoKSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJl
c3BvbnNlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNv
bnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29u
c3QgZmluYWw7CiAKICAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkSW5pdERhdGFUeXBl
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5zdXBwb3J0ZWRJbml0RGF0
YVR5cGVzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCmluZGV4IGI1ZGVhMjFlOTk1YTczN2YwMzZmNjQ1Mzhj
MWZiM2VjYjVlNmJiNTUuLmExM2U1MTQ2MGY2YmI5ZjgwZWYzZDFhODQyZWZjMGI5ZjQ0NTkwYzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2UuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFu
Y2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0
ZW1DCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OkluaXRp
YWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBkaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzLCBwZXJzaXN0ZW50U3RhdGUpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9pZGVudGlmaWVyKTsK
IH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2Fs
bGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0Nh
bGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsKICAgICAgICAgY2Fs
bGJhY2soRmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaAppbmRleCAxMDZiYTNiMTE2MWM4ZGYwOWQ3MWRmZTY3
OWJhMzNkNDIzMDc5ZTk2Li4yYzc4NTFlNDQwYjA4YTUyYTJhZTcwZGE3ZTQxODg4MmUzYzYxNDM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZS5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAKICAgICBJbXBsZW1l
bnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1w
bGVtZW50YXRpb25UeXBlOjpSZW1vdGU7IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmln
dXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dE
aXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxi
YWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24ua2V5U3lzdGVtOyB9CiAgICAgUmVmUHRy
PFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCmluZGV4IGFmMGJhZDRjOTBkOGRkNTEzNzc0YWVmNmEx
NWI3N2JhODlmYzUwNjQuLmM3NDBjMDQ1MDZmZGVkYWM5ZjRjZjUwMmMyMDVhOGEzN2ZjYTQ1OWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxSZW1v
dGVDRE1GYWN0b3J5PiYmIGYKIHsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246
OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2Uo
TGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsKICAgICAgICAgY2FsbGJhY2soU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxlZCk7CkBAIC02NSw3ICs2
NSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nCiAgICAgfSwgbV9pZGVudGlmaWVyKTsKIH0K
IAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVz
cG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExp
Y2Vuc2VUeXBlIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBM
aWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkg
ewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCwgRmFpbGVkKTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IExpY2VucwogICAgIH0KIAogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6UmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlKSwgW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldIChLZXlTdGF0dXNWZWN0b3ImJiBjaGFuZ2VkS2V5cywg
c3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+JiYgbWVzc2FnZSwgYm9vbCBzdWNj
ZWVkZWQpIG11dGFibGUgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+
PiByZWFsTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gc3RkOjpudWxsb3B0OwogICAg
ICAgICBpZiAobWVzc2FnZSAmJiBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkpCiAgICAgICAgICAg
ICByZWFsTWVzc2FnZSA9IG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgp
OwogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92ZShyZWFsTWVz
c2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24uaAppbmRleCA0ZmZlNGNhY2VjY2RlNDNkNWNiMTFlMjM2Y2EwNDVhY2RhODNhN2ViLi40
ZTRjZDJjMDA1YzZiMDA2NWY5Y2RiMTg4YzRiY2UwYjViZmE2NjAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLmgKQEAgLTU5LDggKzU5LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0Q2xp
ZW50KFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiYmIGNsaWVudCkg
ZmluYWwgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsgfQogICAgIHZvaWQgY2xlYXJDbGll
bnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0cjsgfQotICAgIHZvaWQgcmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwot
ICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5
cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVD
YWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9p
ZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRh
dGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIExvYWRTZXNzaW9u
Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3Zl
U2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVT
ZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCmluZGV4
IDlhMjE5YTU0NGU1NTM4M2Y1NGU3MWRhYmQzNTRjYzQ0MGE0MTQyYjkuLjYyOTI2Nzk4YzVjMTEz
MjRhMzFhYTUwY2RhN2VkMWZiZjc0ZmU3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAKQEAg
LTIwMCw3ICsyMDAsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RXhwZWN0ZWRD
b250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZQogCiAvLyBJZiBhbGxEYXRh
UmVjZWl2ZWQgaXMgdHJ1ZSwgdGhlIGNhbGxlciBleHBlY3RzIGVuY29kZWREYXRhU3RhdHVzKCkg
dG8gYmUgPj0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGUKIC8vIGFmdGVyIHRoaXMg
ZnVuY3Rpb24gcmV0dXJucyAoaW4gdGhlIHNhbWUgcnVuIGxvb3ApLgotdm9pZCBSZW1vdGVJbWFn
ZURlY29kZXJBVkY6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKK3ZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmICghbV9ncHVQ
cm9jZXNzQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKaW5k
ZXggZTVjZmU5NGVjZDNhOWMwNjAwZmMwMDMyMGZmNDMwNjFjOTBlZDY5Yi4uNDBkMzczNGY3YTMy
MmU4YmFjYjlkMWMwZGVhNzA3OWUyYWQxN2VhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCkBAIC00
NSw3ICs0NSw3IEBAIGNsYXNzIFJlbW90ZUltYWdlRGVjb2RlckFWRiBmaW5hbAogICAgIDogcHVi
bGljIFdlYkNvcmU6OkltYWdlRGVjb2RlcgogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJl
bW90ZUltYWdlRGVjb2RlckFWRj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlSW1h
Z2VEZWNvZGVyQVZGPiBjcmVhdGUoUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlciYgbWFuYWdl
ciwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciYgaWRlbnRpZmllciwgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKKyAgICBzdGF0aWMg
UmVmPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlKFJlbW90ZUltYWdlRGVjb2RlckFWRk1h
bmFnZXImIG1hbmFnZXIsIGNvbnN0IFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXImIGlk
ZW50aWZpZXIsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGKG1hbmFnZXIsIGlkZW50aWZpZXIsIG1pbWVUeXBlKSk7CiAgICAgfQpAQCAt
ODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciBjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2ZWwgPSBX
ZWJDb3JlOjpTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBXZWJDb3JlOjpEZWNvZGlu
Z09wdGlvbnMmID0gV2ViQ29yZTo6RGVjb2RpbmdPcHRpb25zKFdlYkNvcmU6OkRlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6
ZShsb25nIGxvbmcpIGZpbmFsOwotICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7
CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNB
bGxEYXRhUmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3Qp
IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcAppbmRleCA0MWQ1
Mzg4MDIzZDM5MTQ5NTIxODM1ZjY4OGRlNGQ0OGY2NWQ3NjdlLi4wODJiMzM2NmM4YmM3MTMwZDc1
ZDU2OThhN2Q3OWU2ODkyYWQ4ZjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdl
ci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCi1SZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBSZW1vdGVJbWFn
ZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRh
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVh
dGVJbWFnZURlY29kZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIHN0ZDo6b3B0aW9uYWw8
SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4gaW1hZ2VEZWNvZGVySWRlbnRpZmllcjsKICAgICBJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSB7IGRhdGEgfTsKQEAgLTEw
OCw3ICsxMDgsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OnNldFVzZUdQ
VVByb2Nlc3MoYm9vbCB1c2VHUFVQcm9jZXNzKQogICAgIEltYWdlRGVjb2Rlcjo6aW5zdGFsbEZh
Y3RvcnkoewogICAgICAgICBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnN1cHBvcnRzTWVkaWFUeXBl
LAogICAgICAgICBSZW1vdGVJbWFnZURlY29kZXJBVkY6OmNhbkRlY29kZVR5cGUsCi0gICAgICAg
IFt0aGlzXShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhh
T3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikgeworICAgICAgICBbdGhpc10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSB7
CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW1hZ2VEZWNvZGVyKGRhdGEsIG1pbWVUeXBlLCBh
bHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgICAgICB9CiAgICAg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oCmluZGV4IGMyMzc4MmI2NTA0ZWM3
OWJlNDZlMTI2ZjRlNTkxYjNmZjdmNmRiYTguLjM2MThhZmQxMjA5OGI1NTc2YjRkZDRmZmJmM2Mw
NmZiYTg0MmE3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oCkBAIC01OSw3
ICs1OSw3IEBAIHB1YmxpYzoKICAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZW5zdXJlR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24oKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8UmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGPiBjcmVhdGVJbWFnZURlY29kZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpBbHBoYU9wdGlvbiwgV2ViQ29yZTo6R2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIFJlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJB
VkY+IGNyZWF0ZUltYWdlRGVjb2RlcihXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpBbHBoYU9wdGlvbiwgV2ViQ29y
ZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgLy8gR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb246OkNsaWVudC4KICAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BV
UHJvY2Vzc0Nvbm5lY3Rpb24mKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAppbmRleCAx
MWI0YTg2ZTQ4NTJmNmMyMDYxZmEzZmM5YWYyOWY4ODk5ZjRlYjlmLi5iNDA4OWZkMzU0OGM5N2Yx
N2ZjMmI5ZmIwMDI3ODBkNjQzY2YyM2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCkBAIC0x
NjUsMTAgKzE2NSwxMCBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzdG9yYWdlQ2hhbmdl
ZChTaGFyZWRNZW1vcnkqIHN0b3JhZ2UsIGNvbnN0IFdlYkNvcmU6OgogICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6QXVkaW9TYW1wbGVzU3RvcmFn
ZUNoYW5nZWQgeyBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgZGF0
YVNpemUgfSwgZm9ybWF0LCBmcmFtZUNvdW50IH0sIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQg
TWVkaWFSZWNvcmRlclByaXZhdGU6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRv
dWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpm
ZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6RmV0Y2hEYXRhIHsgfSwgW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1pbWVUeXBlID0gbWltZVR5cGUo
KV0oYXV0byYmIGRhdGEsIGRvdWJsZSB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKGRhdGEuc2l6ZSgpKQogICAgICAgICAgICAgYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpLCBtaW1lVHlwZSwgdGltZUNv
ZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVk
aWFSZWNvcmRlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L01lZGlhUmVjb3JkZXJQcml2YXRlLmgKaW5kZXggMzAzYTU0Zjc2ZjE4NWU5NjQ1NGVmOWY1YmI0
NjFmMjhlMTI2Nzg2ZC4uNTc2ZmQxYzZlOTdjMGNhZDhjYmZlYzk0ZTNiZDM2MzMwNzZlNDRlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNv
cmRlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgLy8gV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGUKICAgICB2b2lkIHZpZGVvU2Ft
cGxlQXZhaWxhYmxlKFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiwgV2ViQ29yZTo6VmlkZW9TYW1wbGVN
ZXRhZGF0YSkgZmluYWw7Ci0gICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBkb3VibGUpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmKSBmaW5hbDsKICAgICB2b2lkIHN0b3BSZWNvcmRp
bmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0UmVj
b3JkaW5nKFN0YXJ0UmVjb3JkaW5nQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBhdWRpb1Nh
bXBsZXNBdmFpbGFibGUoY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBjb25zdCBXZWJDb3JlOjpQbGF0
Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBz
aXplX3QpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRv
ckNsaWVudC5oCmluZGV4IDA2NzNmNzRkZGZiNDhlNWJkZjQzOGNkOTBiZTM3OTRlZWUyMDkxYmIu
LjAzNTNhYWJmN2Q0YjkyNWFhMmYxNTYyZDU3M2FhZjMwOTNjODNiYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5k
bGVFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKQEAgLTMxLDkgKzMxLDkg
QEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIE5v
ZGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBzdHJ1Y3Qg
U2ltcGxlUmFuZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQuaAppbmRleCBhMDYzNTIwNDMzNWIzYWIwZTZkZmIwYzY3Nzc2N2Y0
MjhlOGE3N2UyLi4xODBiMTExMWVjZjAxMTMyODA5MjY2YTFiY2UyN2QyNjBlNGZhMDBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUlu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgRE9NV2luZG93RXh0ZW5zaW9uOwogY2xhc3MgRE9N
V3JhcHBlcldvcmxkOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+UGFnZUxvYWRlckNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCB3
aWxsTG9hZFVSTFJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgQVBJOjpPYmplY3QqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWRE
YXRhUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgY29uc3QgV1RGOjpVUkwmLCBBUEk6Ok9iamVjdCopIHsgfQorICAgIHZpcnR1
YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBj
b25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpVUkwmLCBB
UEk6Ok9iamVjdCopIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYsIFJlZlB0cjxB
UEk6Ok9iamVjdD4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpX
ZWJGcmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOGQ1MjRiNTI1YzZlN2EwY2M2YmRl
NWU4MGE0N2MxNzFlMzQxNDY4Yy4uM2Y0MWIxZjMzOGZhNDQ0NzQ5MDc0ODE4OWJiODk5NTFjZjFi
MTcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5j
cHAKQEAgLTY1LDE1ICs2NSwxNiBAQCBzdGF0aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVmZmVyKHVu
c2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1
ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsKIH0KIAotdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYg
cGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTaGFyZWRCdWZmZXIqIHNoYXJl
ZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05h
bWUsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKK3Zv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdl
YlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBT
dHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhKQogewogICAgIGlmICghbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPEFQSTo6RGF0YT4gZGF0YTsKICAgICBpZiAo
c2hhcmVkQnVmZmVyKSB7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+cmVmKCk7Ci0gICAgICAgIGRh
dGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFy
KilzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFy
ZWRCdWZmZXIsIHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9
IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29udGlndW91c0J1ZmZl
ci0+cmVmKCk7CisgICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5n
KChjb25zdCB1bnNpZ25lZCBjaGFyKiljb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGNvbnRpZ3Vv
dXNCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgY29udGlndW91c0J1ZmZlci5w
dHIoKSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCh0b0FQSSgm
cGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShkYXRhLmdldCgpKSwgdG9BUEkoTUlNRVR5cGUu
aW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmltcGwoKSksIHRvVVJMUmVmKHVucmVhY2hhYmxl
VVJMLnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApp
bmRleCAzNmJkOTgwYjJmYWExYWY0NWFjMzEwNmViMDFlOWYzNzZiYTEzYWNmLi44NjNiZGFiNjI4
NGNhM2FhZDJmOWQ1ZmZmNWZkNjhlYWI4YjJiNzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQoY29uc3QgV0tCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50QmFzZSopOwogCiAgICAgdm9pZCB3aWxsTG9hZFVSTFJlcXVlc3QoV2ViUGFn
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0
cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgVVJMJiwgQVBJOjpPYmplY3QqKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBj
b25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgVVJMJiwgQVBJOjpP
YmplY3QqKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZShXZWJQYWdlJiwgV2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JG
cmFtZShXZWJQYWdlJiwgV2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01v
ZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQppbmRleCBlNTI0ZDhl
MWIwMTdhYThlNWUwM2I4OTJkOTJiNzU4OTRjNThmMzc0Li5hNzg0ZWMzODhiMjI1MjRjYzBkYTYz
Mjc4ZTVlNzU5MTM3ZGNmNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5
ZXJNYWMubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVs
UGxheWVyTWFjOjpjcmVhdGVGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBp
ZiAoZmlsZSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgp
LT5zaXplKCkpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNl
LmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNp
emUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogICAgIG1fZmlsZVBhdGgg
PSBmaWxlUGF0aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDk0ZDlkMmNjM2Vi
Mjg4MGNkY2YyMmMwNzJhMzlhOTg5NTVmZDQ0MzAuLjk3NTZmNTE5MjBkNjRjNDJjZGMwMDY4MTE1
Mjc3ZWIxMTNkYjdkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjgzLDcgKzI4
Myw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKICAgICAKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAgICAgaWYgKCFi
dWZmZXIpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZl
ciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVx
dWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gY3JlYXRlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNv
dXJjZSBoYW5kbGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRl
eCAyNTk0NDk0MjM4NTVmZWQzYWFhYWI0MTQ4MTlmODk1MWEzYjhiN2ZmLi4zMTBmY2E3ODc1YzMy
YzNjZDc0NzhkYjY0ZjU5YWMyY2Y1MDE2MzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNTUsNyArMTU1
LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib28KICAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShtX2NvcmVMb2FkZXItPmZyYW1l
KCksIHJlc3BvbnNlKSkgewogICAgICAgICBhdXRvIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZp
ZXIgPSBtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250
cm9sbGVyLmJlZ2luSW50ZXJjZXB0aW5nUmVzcG9uc2UoaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRp
Zmllcik7Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0
UmVzcG9uc2UobV9jb3JlTG9hZGVyLT5mcmFtZSgpLCByZXNwb25zZSwgaW50ZXJjZXB0ZWRSZXF1
ZXN0SWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpbnRl
cmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyLCBwb2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShwb2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgaW5zcGVjdG9yUmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG92ZXJy
aWRlRGF0YSkgbXV0YWJsZSB7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktp
dDo6aW50ZXJjZXB0UmVzcG9uc2UobV9jb3JlTG9hZGVyLT5mcmFtZSgpLCByZXNwb25zZSwgaW50
ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyLCBwb2xpY3lEZWNpc2lvbkNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShwb2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyKV0o
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgaW5zcGVjdG9yUmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGEpIG11dGFibGUgewogICAgICAgICAgICAgaWYg
KCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSB7CiAgICAgICAg
ICAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25z
ZTogbm90IGNvbnRpbnVpbmcgaW50ZXJjZXB0IGxvYWQgYmVjYXVzZSBubyBjb3JlTG9hZGVyIG9y
IG5vIElEIik7CiAgICAgICAgICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmNvbnRpbnVl
UmVzcG9uc2UoaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllcik7CkBAIC0yOTUsMTEgKzI5NSwx
MSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hh
cmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZAogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nl
c3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UgZm9yICclcyciLCBtX2Nv
cmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgV0VCUkVTT1VS
Q0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZToiKTsKIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdy
YXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gY3JlYXRlIGJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIHNlbnQg
ZnJvbSB0aGUgbmV0d29yayBwcm9jZXNzLiIpOwotICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9S
RUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiBVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1
ZmZlciIpOworICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2
ZVJlc291cmNlOiBVbmFibGUgdG8gY3JlYXRlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIiKTsKICAg
ICAgICAgaWYgKGF1dG8qIGZyYW1lID0gbV9jb3JlTG9hZGVyLT5mcmFtZSgpKSB7CiAgICAgICAg
ICAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCiAgICAgICAgICAgICAgICAgcGFn
ZS0+ZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShXZWJDb3Jl
OjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmludGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlh
Z25vc3RpY0xvZ2dpbmdLZXlzOjpjcmVhdGVTaGFyZWRCdWZmZXJGYWlsZWRLZXkoKSwgV2ViQ29y
ZTo6U2hvdWxkU2FtcGxlOjpObyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggNDJkZTQ2MTQxOTc3OGI3YzQ1MGZjYTFlYjAzN2Mx
Y2U5N2QyZDYzMS4uYTdmNDVjODQwMWIyZmQyZjg3MGUzNjc4YzU4ZmMzMTBjMmUxZjI0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApA
QCAtMjA3LDcgKzIwNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0
ZUNoYW5nZWQoYm9vbCkgZmluYWwgeyB9CiAgICAgYm9vbCBnZXRGb3JtVmFsdWUoU3RyaW5nJiBm
b3JtVmFsdWUpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBoYW5kbGVTY3JvbGwo
V2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSkgZmlu
YWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgp
IGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCB3aWxsRGV0YWNoUmVu
ZGVyZXIoKSBmaW5hbDsKICAgICBib29sIHBsdWdpbkhhbmRsZXNDb250ZW50T2Zmc2V0Rm9yQWNj
ZXNzaWJpbGl0eUhpdFRlc3QoKSBjb25zdCBmaW5hbDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGQyM2FiYjllNjUx
MWIxM2JiZDUyM2FmNDUxZjQ0MTc4NzNhNmMxZTAuLmQ0N2YzMmI3ZDQ5MTk1NmJkY2U3N2JmZTZm
MTVjYTc4NjViZmQxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMjU1Miw3ICsyNTUyLDcgQEAgdm9pZCBQREZQbHVnaW46
Om5vdGlmeURpc3BsYXlNb2RlQ2hhbmdlZChpbnQpCiAgICAgdXBkYXRlU2Nyb2xsYmFycygpOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQREZQbHVnaW46OmxpdmVSZXNvdXJjZURhdGEoKSBj
b25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBERlBsdWdpbjo6bGl2ZVJlc291
cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgTlNEYXRhICpwZGZEYXRhID0gbGl2ZURhdGEoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCA4OGY0NWNlNTFj
ZTMxZGYwYzViM2I3NTg2MjM2YzNmMGQ5YzkzYWQzLi41OGQ3MGEzOWExNmQ2YTRjMGU4YjBjYTlk
MDNhYzNkMzdhZWRmY2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW4uaApAQCAtNjEsNyArNjEsNyBAQCBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFJlY3Q7CiBj
bGFzcyBJbnRTaXplOwogY2xhc3MgU2Nyb2xsYmFyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0y
ODgsNyArMjg4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBj
b252ZXJ0VG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnRJbkxvY2FsQ29v
cmRpbmF0ZXMpIGNvbnN0OwogCi0gICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCA9
IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9u
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZDU0ZjI3ZjA3MDkxNDdlOWVk
ZWMwNmRlNThjMWU4Y2MxMjMxYTY3Ny4uN2ZiMjBjNTkyZGJmYTA5NmUzOGJjMTY4NzAzNzM4Y2I4
ZjQwN2M5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKQEAgLTI4OSw2ICsyODksNyBAQCBQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KEhUTUxQ
bHVnSW5FbGVtZW50JiBwbHVnaW5FbGVtZW50LCBSZWY8UGx1Z2luPiYmIHBsdWdpbiwgYwogICAg
ICwgbV93ZWJQYWdlKHdlYlBhZ2UobV9wbHVnaW5FbGVtZW50LmdldCgpKSkKICAgICAsIG1fcGFy
YW1ldGVycyhwYXJhbWV0ZXJzKQogICAgICwgbV9wZW5kaW5nVVJMUmVxdWVzdHNUaW1lcihSdW5M
b29wOjptYWluKCksIHRoaXMsICZQbHVnaW5WaWV3OjpwZW5kaW5nVVJMUmVxdWVzdHNUaW1lckZp
cmVkKQorICAgICwgbV9tYW51YWxTdHJlYW1EYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4oKSkKIHsKICAgICBtX3dlYlBhZ2UtPmFkZFBsdWdpblZpZXcodGhpcyk7CiB9CkBA
IC00MDMsOSArNDA0LDYgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1faXNJbml0
aWFsaXplZCkgewogICAgICAgICBBU1NFUlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxT
dHJlYW1TdGF0ZTo6SGFzUmVjZWl2ZWRSZXNwb25zZSk7Ci0gICAgICAgIGlmICghbV9tYW51YWxT
dHJlYW1EYXRhKQotICAgICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKLQogICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPmFwcGVuZChieXRlcywg
bGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQzNyw3ICs0MzUsNyBAQCB2b2lk
IFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtU3Rh
dGUgPSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQ7CiAgICAgICAgIG1fbWFudWFsU3RyZWFt
RXJyb3IgPSBlcnJvcjsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKKyAg
ICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5yZXNldCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC05MjYsMTEgKzkyNCwxMSBAQCB2b2lkIFBsdWdpblZpZXc6OndpbGxEZXRhY2hSZW5k
ZXJlcigpCiAgICAgbV9wbHVnaW4tPndpbGxEZXRhY2hSZW5kZXJlcigpOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pIHsKLSAgICAg
ICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSAmJiBtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVh
bFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKLSAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVh
bURhdGE7CisgICAgICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0
YXRlOjpGaW5pc2hlZCkKKyAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGEtPmdl
dCgpOwogCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTEyNDIsMTAgKzEyNDAs
MTAgQEAgdm9pZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQogICAgIG1hbnVh
bExvYWREaWRSZWNlaXZlUmVzcG9uc2UobV9tYW51YWxTdHJlYW1SZXNwb25zZSk7CiAKICAgICAv
LyBEZWxpdmVyIHRoZSBkYXRhLgotICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEpIHsKLSAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogKm1fbWFudWFsU3RyZWFtRGF0YSkKKyAgICBp
ZiAoIW1fbWFudWFsU3RyZWFtRGF0YS0+aXNOdWxsKCkpIHsKKyAgICAgICAgYXV0byBidWZmZXIg
PSBtX21hbnVhbFN0cmVhbURhdGEtPnRha2UoKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBl
bGVtZW50IDogYnVmZmVyLmdldCgpKQogICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVE
YXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7Ci0g
ICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKG1f
bWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDIxMjZlYjhl
ZGI1NTkzODZiMzQyMjVlYjJiZDViZmNkNjgwMjNmMjMuLmQxNTNhMjljYTE0YTkwZTMyMjdhODkx
ZTNlZWY1ZTRlNzk3MzUxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5j
bHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+CiAKIC8vIEZJWE1FOiBFdmVudHVhbGx5IHRoaXMgc2hvdWxkIG1vdmUg
dG8gV2ViQ29yZS4KIApAQCAtMTE1LDcgKzExNiw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hv
dWxkQWxsb3dTY3JpcHRpbmcoKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIGJvb2wgcGVyZm9y
bURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsK
ICAgICBTdHJpbmcgZ2V0U2VsZWN0aW9uRm9yV29yZEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYpIGNvbnN0OwogICAgIGJvb2wgZXhpc3RpbmdTZWxlY3Rpb25Db250YWluc1BvaW50
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBjb25zdDsKQEAgLTI1Miw3ICsyNTMsNyBAQCBw
cml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX21hbnVhbFN0cmVhbVJl
c3BvbnNlOwogICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgbV9tYW51YWxTdHJlYW1FcnJvcjsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX21hbnVhbFN0cmVhbURhdGE7Cisg
ICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fbWFudWFsU3RyZWFt
RGF0YTsKIAogICAgIC8vIFRoaXMgc25hcHNob3QgaXMgdXNlZCB0byBhdm9pZCBzaWRlIGVmZmVj
dHMgc2hvdWxkIHRoZSBwbHVnaW4gcnVuIEpTIGR1cmluZyBwYWludGluZy4KICAgICBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBtX3RyYW5zaWVudFBhaW50aW5nU25hcHNob3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IGZlZThmZWE3YmNjOGQ1OWMwN2UzYzVi
YTRkNjA5NTUyYTRkNjI4YmYuLmIwNGNjY2YxMTNlNDkyOGZhNjYzODNiZDI0MzFkYjg3NDg1M2Nj
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC03MSwxNiAr
NzEsMTUgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJl
c3BvbnNlLCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1fZmV0
Y2hJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2VNZXNzYWdlKSB7Ci0gICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hh
cmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpKQotICAgICAgICAgICAgbV9yZXNwb25zZURhdGEg
PSBidWZmZXItPmNvcHkoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RkOjpnZXQ8UmVm
PFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFyZWRCdWZmZXJCdWlsZGVy
PihtX3Jlc3BvbnNlRGF0YSkpCisgICAgICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IFNoYXJlZEJ1
ZmZlckJ1aWxkZXIoKTsKKyAgICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9y
ZXNwb25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0yMDYsOCArMjA1LDggQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCiAgICAgc3dpdGNoT24obV9yZXNw
b25zZURhdGEsIFt0aGlzXShzdGQ6Om51bGxwdHJfdCYpIHsKICAgICAgICAgaWYgKG1fZGlkRmlu
aXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7Ci0gICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIp
KTsKKyAgICB9LCBbdGhpc10oY29uc3QgU2hhcmVkQnVmZmVyQnVpbGRlciYgYnVmZmVyKSB7Cisg
ICAgICAgIGRpZFJlY2VpdmVEYXRhKCpidWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAobV9kaWRG
aW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10oUmVmPEZvcm1E
YXRhPiYgZm9ybURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAppbmRl
eCBiMzQ3Y2FkMmFiNWY1NzFiMWEwZTIwNzIwODA0MzY3ZDc3MDE4NjAwLi42YjBhNDE3Y2YwZDNh
ZTBkN2I4OTNhOTk4NjgzYWJmMmJjNGE0ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaExvYWRl
ckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC00OSw3ICs1MCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
IGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGFB
bmRGaW5pc2goUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZh
aWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmlu
aXNoKCkgZmluYWw7CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25h
bDxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX25lZWRzQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvckNv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07Ci0gICAgc3RkOjp2YXJp
YW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdlYkNv
cmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3Bv
bnNlRGF0YTsKKyAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXIsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CiAgICAgYm9vbCBtX2RpZEZpbmlzaCB7
IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDgxZTM3OWUzM2QxYTlh
Y2RjODZlZjVjNGJlMjFhNzI2MGQ5NGQ0OGUuLjdjZmMwM2E4NWQzOWQ4MWYzOTJjMGFhMTMwZjgz
ZmJkMmM4MzRmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAg
Ym9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0
aWVzJiBzdHlsZSwgY29uc3Qgc3RkOjoKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcm
IHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQog
ewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyRnJvbURhdGEoaWRlbnRpZmllciwgY29udGVudFR5cGUsIHByZWZlcnJl
ZEZpbGVOYW1lLCBkYXRhLmdldCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNTA2ZDlm
NTQxMzhkMzdjYjRjNjRlZDQ2MGY1OWE1YzI4ZmU1MjJhNi4uYjA1ODYxODkxZWNjODRjNjM2OGEy
MDZjMjcwMTA2MGY1MDUyZjVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNjUsNyArNjUsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUoY29uc3QgV2Vi
Q29yZTo6U2ltcGxlUmFuZ2UmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYpIGZpbmFsOwog
CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICB2b2lkIHJlZ2lzdGVyQXR0YWNo
bWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
Y29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJikgZmluYWw7CisgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVy
cmVkRmlsZU5hbWUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkgZmluYWw7
CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpIGZp
bmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8V2ViQ29yZTo6U2VyaWFs
aXplZEF0dGFjaG1lbnREYXRhPiYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IDRiZGJiY2NkM2ZiYzYyMGUwNzU0MTA1Y2VhMDllZGRmMDUxMjBiNmIuLjE0YTA4
M2NhMjA3YTkwNjNjZjgwYjFlN2U5NjcwYTQ4N2NmNGQzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcApAQCAtMTE4OCw4ICsxMTg4LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAg
ICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3Vy
Y2VEYXRhKCk7Ci0gICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSht
YWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFp
blJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOworICAgICAgICAg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2Fk
ZXItPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBk
YXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291
cmNlRGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3Zp
ZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNl
KSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBm
NDFhNzBlZjViYjZjMGVjZThiZDg2Mjc0MTE2MDFjZjczMGU2MmExLi40YThiZWU1N2ZkYjFmZmNk
ZWYwMDg5ZmE2NWU5NzUzNzUwZDI1MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpz
ZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjCiAgICAgcmV0
dXJuIG5ld0NoYW5nZUNvdW50OwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqIGNvbnRleHQpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVm
ZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRs
ZTsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKaW5kZXggZTI4MDk5NjNmNGY1MDY4MWI3ZDAxZjQxYTY4NTMxYWI3MzIxNGZi
MC4uMWZmODNlMTFiYzE3ODlhYWMwZjkwMGM5M2RjMjJmYmYyMzllYTJiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogCiAgICAgaW50
NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldEJ1ZmZl
ckZvclR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRDb2xvcihj
b25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRT
dHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
LmNwcAppbmRleCAwN2IxNjdlMGVlZWU3Njg4NzViMDM5ZGZhNTlmNWZkMTNjNzU0ZTEwLi5kNDE1
OTA0YzcxYjFjMGM3MmEzZTE3Y2Y3YjM0NTIwYWEyNzkwMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQCBXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5h
bWUsIGNvbnN0IFN0cgogICAgIDogbV9maWxlTmFtZSB7IGZpbGVOYW1lIH0KICAgICAsIG1fdXRp
IHsgdXRpIH0KICAgICAsIG1fcGFnZUlEIHsgcGFnZUlEIH0KLSAgICAsIG1fYnVmZmVyIHsgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX2J1ZmZlciB7IG1ha2VVbmlxdWVSZWY8U2hh
cmVkQnVmZmVyQnVpbGRlcj4oKSB9CiB7CiB9CiAKIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6On5X
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFdlYlByZXZpZXdMb2Fk
ZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2
b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gd2ViUGFnZSA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobV9wYWdlSUQpOwogICAgIGlmICghd2ViUGFnZSkKQEAg
LTY5LDEzICs2OSwxMiBAQCB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExv
YWRpbmcoKQogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFn
ZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXIu
Z2V0KCkpOwotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExv
YWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fYnVmZmVyLT50YWtlKCkuZ2V0KCkp
OwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZhaWwoKQogewotICAgIG1f
YnVmZmVyLT5jbGVhcigpOworICAgIG1fYnVmZmVyLT5yZXNldCgpOwogfQogCiB2b2lkIFdlYlBy
ZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdM
b2FkZXJDbGllbnQuaAppbmRleCAwNDkyY2VlYzJmOWI5Y2Q4NTM4Mzg0ODRmYmMyNmMwN2NiNTNk
YTg3Li5jYzNiMjRiNzI5YjIxOGI4MGQzN2ExMmNkN2ZhYzNkZmE5YmVkMWFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMjksOCArMjksMTMgQEAKIAogI2lu
Y2x1ZGUgPFdlYkNvcmUvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IFNoYXJlZEJ1ZmZlckJ1aWxkZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBX
ZWJGcmFtZTsKQEAgLTQ1LDcgKzUwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdlYlBy
ZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1
dGksIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZh
aWwoKSBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTU0LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBj
b25zdCBTdHJpbmcgbV9maWxlTmFtZTsKICAgICBjb25zdCBTdHJpbmcgbV91dGk7CiAgICAgY29u
c3QgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7Ci0gICAgUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdD
bGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggYTY0YzZhOGIzYzY5NWUxNzMzNjQzMzZiY2IwZjY4
ZGJkZDljMmQyMS4uZTFlMGU2MTEyYTJkZWRjM2I4YmI2MzA5ODUzNTM3NmVmNDNhZDUxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJE
cmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgV2Vi
RHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIEVsZW1lCiAKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IGltYWdlLT5y
ZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CisgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAgICAgc2l6ZV90IGltYWdlU2l6ZSA9IGlt
YWdlQnVmZmVyLT5zaXplKCk7CiAKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJl
ZE1lbW9yeTo6Y29weUJ1ZmZlcigqaW1hZ2VCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDliZDRjZDJkMGNiMTAzYjQ1YWE4ZTZj
MWQ0MjdjMGIxN2JmNWVkMTMuLmQ4OGY0NGNmY2RlNWUxNWY2NmMxMjRiNDBmNWI1NDM1Yjk0Njk3
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAK
QEAgLTM0MCwxMCArMzQwLDEwIEBAIFN0cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29uc3QKICAg
ICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBtX2NvcmVGcmFtZS0+bG9hZGVyKCku
YWN0aXZlRG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNl
RGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+
bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZSht
YWluUmVzb3VyY2VEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAg
cmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogU3Ry
aW5nIFdlYkZyYW1lOjpjb250ZW50c0FzU3RyaW5nKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGIzYjBmYmNjNzZlNjBmNjc4YmYx
YzZkZTUyMTMwNTk4Y2IyZDAwODguLmFjZTIzMTU2NjJlMjBmNmYwNDA4NzVjZTU0N2U1OWRhZjFm
ZTk4NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC0xNzM4LDcgKzE3MzgsNyBAQCBOT19SRVRVUk4gdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVz
dFdhaXRpbmdGb3JQcm9jZXNzTGF1bmNoKExvYWRQYXJhbWV0ZXJzJiYsIFVSTAogICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBs
KHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRh
PiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzaGFyZWRCdWZmZXIsIFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgY29u
c3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBzdGQ6Om9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNlc3Npb25I
aXN0b3J5VmlzaWJpbGl0eSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5KQordm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0X3Qg
bmF2aWdhdGlvbklELCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0
ZVBvbGljaWVzLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBzaGFyZWRCdWZmZXIsIFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgY29u
c3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBzdGQ6Om9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNlc3Npb25I
aXN0b3J5VmlzaWJpbGl0eSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5KQogewogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAg
ICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4sICZtX21haW5GcmFtZS5nZXQoKSk7CkBAIC0xNzUzLDcgKzE3NTMsNyBAQCB2b2lkIFdl
YlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCBzaAogCiAgICAgLy8gTGV0IHRoZSBJbmplY3RlZEJ1bmRsZSBrbm93IHdl
IGFyZSBhYm91dCB0byBzdGFydCB0aGUgbG9hZCwgcGFzc2luZyB0aGUgdXNlciBkYXRhIGZyb20g
dGhlIFVJUHJvY2VzcwogICAgIC8vIHRvIGFsbCB0aGUgY2xpZW50IHRvIHNldCB1cCBhbnkgbmVl
ZGVkIHN0YXRlLgotICAgIG1fbG9hZGVyQ2xpZW50LT53aWxsTG9hZERhdGFSZXF1ZXN0KCp0aGlz
LCByZXF1ZXN0LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHN1YnN0aXR1dGVEYXRhLmNvbnRl
bnQoKSksIHN1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCksIHN1YnN0aXR1dGVEYXRhLnRleHRFbmNv
ZGluZygpLCBzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCksIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsK
KyAgICBtX2xvYWRlckNsaWVudC0+d2lsbExvYWREYXRhUmVxdWVzdCgqdGhpcywgcmVxdWVzdCwg
Y29uc3RfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4oc3Vic3RpdHV0ZURhdGEuY29udGVu
dCgpKSwgc3Vic3RpdHV0ZURhdGEubWltZVR5cGUoKSwgc3Vic3RpdHV0ZURhdGEudGV4dEVuY29k
aW5nKCksIHN1YnN0aXR1dGVEYXRhLmZhaWxpbmdVUkwoKSwgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwog
CiAgICAgLy8gSW5pdGF0ZSB0aGUgbG9hZCBpbiBXZWJDb3JlLgogICAgIEZyYW1lTG9hZFJlcXVl
c3QgZnJhbWVMb2FkUmVxdWVzdCgqbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLCByZXF1ZXN0LCBz
dWJzdGl0dXRlRGF0YSk7CkBAIC0zODYxLDcgKzM4NjEsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNv
dXJjZUZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKAogCiB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQogewotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkgewogICAgICAgICBpZiAoUGx1Z2luVmlldyog
cGx1Z2luVmlldyA9IHBsdWdpblZpZXdGb3JGcmFtZShmcmFtZS0+Y29yZUZyYW1lKCkpKQogICAg
ICAgICAgICAgYnVmZmVyID0gcGx1Z2luVmlldy0+bGl2ZVJlc291cmNlRGF0YSgpOwpAQCAtMzg3
Nyw3ICszODc3LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmQKICAgICBjYWxsYmFjayhkYXRh
UmVmZXJlbmNlKTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0
YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkKK3N0YXRpYyBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUq
IGZyYW1lLCBjb25zdCBVUkwmIHJlc291cmNlVVJMKQogewogICAgIERvY3VtZW50TG9hZGVyKiBs
b2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWxvYWRl
cikKQEAgLTM4OTIsNyArMzg5Miw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNv
dXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyCiAKIHZvaWQg
V2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYm
IGNhbGxiYWNrKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChhdXRvKiBmcmFtZSA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CiAgICAgICAgIFVS
TCByZXNvdXJjZVVSTChVUkwoKSwgcmVzb3VyY2VVUkxTdHJpbmcpOwogICAgICAgICBidWZmZXIg
PSByZXNvdXJjZURhdGFGb3JGcmFtZShmcmFtZS0+Y29yZUZyYW1lKCksIHJlc291cmNlVVJMKTsK
QEAgLTY5NzcsNyArNjk3Nyw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9y
SWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyCiAgICAgaWYgKCFk
b2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAK
LSAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihkZWNpc2lvbiwg
bG9hZElkZW50aWZpZXIudG9JbnRlZ2VyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBpY29uRGF0YSkgbXV0
YWJsZSB7CisgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVj
aXNpb24sIGxvYWRJZGVudGlmaWVyLnRvSW50ZWdlcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGljb25EYXRhKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBpY29u
RGF0YSB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCAzNWMyM2ZlNjAyZWI0ZjkwNDFhYmIwYTk4N2U3ZDJmMGNhMGY4YjNlLi5m
NmRkZDc4ZWExOTg4ZTFmY2FjOTA3NGJmNTZlN2FiMWJiMWNiNWNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0yMTYsNyArMjE2LDcgQEAgY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlbGVjdGlv
bkRhdGE7CiBjbGFzcyBTZWxlY3Rpb25HZW9tZXRyeTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNz
IFRleHRDaGVja2luZ1JlcXVlc3Q7CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247CkBAIC0xMzk2LDcg
KzEzOTYsNyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2b2lkIGRpZFN0
YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgU3RyaW5nJiB1dGkpOwotICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7Cisg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25z
dCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCByZXF1ZXN0UGFz
c3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogI2VuZGlmCiAK
QEAgLTE1OTksNyArMTU5OSw3IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJh
bWUoV2ViRnJhbWUqKTsKIAotICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIGNv
bnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmLCBzdGQ6Om9wdGlvbmFsPE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25I
aXN0b3J5VmlzaWJpbGl0eSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9
IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsK
KyAgICB2b2lkIGxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNE
YXRhPiYmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgY29uc3QgVVJM
JiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+LCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlW
aXNpYmlsaXR5LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29y
ZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwogCiAgICAg
Ly8gQWN0aW9ucwogICAgIHZvaWQgdHJ5Q2xvc2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCmluZGV4IGM5NWMzODQ2MzkyMjE4NGYyNTdhNzE5ZGI1YmE5YTQ4MjlhZWRmMWIu
Ljg1ZTY1MTg2OTJlZDYwYzc4OGU3MmE3Y2UzMmYzZjBlMTVjYTc3ODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0zMjE3
LDcgKzMyMTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMy
X3QgYWN0aW9uKQogICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxS
ZW5kZXJJbWFnZT4oKmVsZW1lbnQucmVuZGVyZXIoKSkuY2FjaGVkSW1hZ2UoKTsKICAgICAgICAg
aWYgKCFjYWNoZWRJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CisgICAg
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBjYWNoZWRJbWFnZS0+
cmVzb3VyY2VCdWZmZXIoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5
QnVmZmVyKCpidWZmZXIpOwpAQCAtNDY4Myw3ICs0NjgzLDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRT
dGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFN0YXJ0TG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoZmlsZU5hbWUsIHV0aSkpOwogfQogCi12b2lkIFdl
YlBhZ2U6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hMb2FkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgQVNTRVJUKCFidWZmZXIuaXNFbXB0eSgpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5t
bQppbmRleCBlMThkMTBjM2ZjNGYxOGQ3M2EyYTc0MGM1MzMxMzEzNDNmZjMzY2FmLi5jNjFiODUx
MmJhM2NmY2M4OWU0MzViZjk0MzQ0ZGQ3MjkxNzI1YjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAt
MjI4LDExICsyMjgsNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlk
ZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwogI2lmIEhBVkUoQVZLSVQpCi0jaWYg
SEFWRShVSUtJVF9XRUJLSVRfSU5URVJOQUxTKQotICAgIHJldHVybiBtb2RlID09IEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkOwotI2Vsc2UKICAgICBy
ZXR1cm4gdHJ1ZTsKLSNlbmRpZgogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAg
LTI0Myw3ICsyMzksNyBAQCBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlk
ZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbgogCiBib29sIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuU3RhbmRieSgpIGNvbnN0CiB7
Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIUhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFM
UykKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2lu
L1dlYlByb2Nlc3NXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9j
ZXNzV2luLmNwcAppbmRleCBkM2QzOGNhYzQxMjExZDdlMjliNTdmMjQ1MjM2NGUzN2I0MjNjMzFh
Li4zN2YyN2U5NTJkMDcxNzExMjFjYjRmNTQ4N2E4Yjg0YjlmOGE2MzhkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKQEAgLTI4LDcgKzI4LDcg
QEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKLVJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkK
K1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRv
QnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCmluZGV4IDFmNTU4NGZh
Mzg3ZDc2Y2NlOTRmZjdiNTY5NjhlN2U4MjIwNjA2MDYuLmEyNTU2MGExMGMyODgyZTFhYmQxNzg0
NTY5NDg2ZWExM2VkODk2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29y
ZVN1cHBvcnQvUGluZ0hhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1
cHBvcnQvUGluZ0hhbmRsZS5oCkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHBpbmdMb2FkQ29tcGxldGUoeyB9LCByZXNwb25z
ZSk7CiAgICAgfQotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZSosIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCkgZmluYWwgeyBwaW5nTG9h
ZENvbXBsZXRlKCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50KSBm
aW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBkaWRGYWlsKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3Ip
IGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZShlcnJvcik7IH0KICAgICBib29sIHNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikgZmluYWwgeyByZXR1cm4g
bV9zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXggZWIzOTQxZjI2NmRmMTNjMjhh
OTA2ZWU3ZDE2MWFlMjFlMTc1NDA5MS4uNjM1NWI2ZjkwMzE4MDA1NWNiNjA3YTgwYmU3NzAxMzg0
ZDg4ZGQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0
RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRF
eHRlbnNpb25zLm1tCkBAIC0zODgsNyArMzg4LDcgQEAgLSAoTlNEYXRhICopZGF0YVJlcHJlc2Vu
dGF0aW9uOihCT09MKXJhd0ltYWdlRGF0YQogICAgIGF1dG8qIGRhdGEgPSByYXdJbWFnZURhdGEg
PyBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5kYXRhKCk7CiAgICAgaWYg
KCFkYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBkYXRhLT5jcmVhdGVOU0Rh
dGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKW1pbWVUeXBl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBhMjU5OGYzMmZiNzYwYTdkODgzYzlmNGNl
ZWMxOGNmNTkxZWI4ZWFkLi45NTlkNzQ4YjU2YmUxMDc2YmQ5Nzc5OTIyY2QzNTZkMjFhNjgxNzRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI0OCw3ICsyNDgsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2VuZEgyUGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4cGVjdGVkPFNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+JiYpPiYmKSBmaW5hbDsK
IAogICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFp
cjxXZWJDb3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90Pj4mKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlz
aGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6U2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBmaW5pc2hl
ZExvYWRpbmdJY29uKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIAogI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgbV9sb2FkaW5nSWNvbiB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGI4NDlkMmFhYzJhOTNmYmVlNDE3MjlmMjRh
ODZjZGNmNmIxZmUwMTkuLmFhMmNjOTgxNDc0YTEzY2U1MDg0Nzk4OTQyMzY4NDQ5MWM4OGY2ZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0yMDEyLDcgKzIwMTIsNyBAQCBSZWZQ
dHI8V2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZVByZXZpZXdMbwogICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fZmlsZVBh
dGg7CiAgICAgICAgIFJldGFpblB0cjxOU0ZpbGVIYW5kbGU+IG1fZmlsZUhhbmRsZTsKIAotICAg
ICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBi
dWZmZXIpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGF1dG8gZGF0YUFycmF5ID0gYnVmZmVyLmNyZWF0ZU5TRGF0YUFycmF5KCk7
CiAgICAgICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBkYXRhQXJyYXkuZ2V0KCkpCkBAIC0y
MDk0LDcgKzIwOTQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNp
b25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcgogICAgICAgICB9CiAKICAg
ICAgICAgbV9sb2FkaW5nSWNvbiA9IHRydWU7Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRH
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUsIGljb24tPnNlY29uZCwgW3RoaXMsIHdlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH1dIChXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGJ1ZmZlcikgewor
ICAgICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBp
Y29uLT5zZWNvbmQsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKSB7CiAgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGZpbmlzaGVkTG9h
ZGluZ0ljb24oYnVmZmVyKTsKQEAgLTIxMzEsNyArMjEzMSw3IEBAIHN0YXRpYyBOU0ltYWdlICp3
ZWJHZXROU0ltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTaXplIHNpemUpCiB9CiAjZW5k
aWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBpY29uRGF0YSkKK3Zv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpCiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgQVNTRVJUKG1fbG9hZGluZ0ljb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aAppbmRleCAyNGI2OTk3MDZkZjBkNmI3MTkyYWE1MjAyZGU2MWQ4YjFlNTczMmY5Li41MjdmYTU1
MjE5MGJhMDAxNDUxN2ZmZGU3Mzc3MjBiMmU3YTkwYWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgaW50NjRfdCBhZGRUeXBl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogICAgIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVS
TCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3Jl
OjpDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBl
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggZmMwNzc2ZTYyZDY2YmU5
YWM5M2Q0ODdkZGZkMzAwYTZkNDA3YzU1My4uMzk4Njg1OWY3MzM4ZTI4NDU3ZWQ0YjE5MGNiYTY3
MDUyMjEwMDI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTU0LDcgKzE1
NCw3IEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0VHlwZXMocGFzdGVib2FyZFR5cGVzKTsKIH0KIAotaW50
NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVy
KiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK2ludDY0X3QgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLCBwYXN0
ZWJvYXJkVHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkRhdGFTb3VyY2UubW0KaW5kZXggMjg5YzAwMjliZjkxMzQxOGQwYjI5OWY5MGE0ZDk3MTEzYmM1
OGE0Yi4uODNlODU5MTQzNDVlYTdjYjg0MWQ5OWZkMWZiNjY2ZDhjY2YwMzAyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNDYw
LDEwICs0NjAsMTAgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKE5TRGF0YSAqKWRhdGEKIHsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2
YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1ByaXZh
dGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5S
ZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIG1haW5SZXNvdXJj
ZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1haW5SZXNv
dXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7
CiB9CiAKIC0gKGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPilyZXByZXNlbnRhdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVz
ZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5tbQppbmRleCA4MGNkMzBlZjQ2NzYwZTE0YzhlNjdhODhhMjczM2M5ZDQzN2Zh
NWQ5Li4zOGQ3ZTUzMmQ2ZWFhMGNhYzM4ODYyZjNlMGUxNjlmZTI4MTI3N2YxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRh
dGlvbi5tbQpAQCAtMjMwLDcgKzIzMCw3IEBAIC0gKEJPT0wpY2FuU2F2ZUFzV2ViQXJjaGl2ZQog
LSAoTlNTdHJpbmcgKilkb2N1bWVudFNvdXJjZQogewogICAgIGlmIChbc2VsZiBfaXNEaXNwbGF5
aW5nV2ViQXJjaGl2ZV0pIHsgICAgICAgICAgICAKLSAgICAgICAgU2hhcmVkQnVmZmVyICpwYXJz
ZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5w
YXJzZWRBcmNoaXZlRGF0YSgpOworICAgICAgICBhdXRvICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtf
cHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgp
OwogICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6
cGFyc2VkQXJjaGl2ZURhdGEgPyBwYXJzZWRBcmNoaXZlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgOiBuaWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKS5hdXRvcmVsZWFzZSgpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KaW5kZXggODM4ZTQxMzM4MWE4MDc1YTNkNjI0NTk0NTUyNjdhNWJiYjU1YTk5MS4uMjhkODc1
OTI5Y2NhY2RiOWExMzg4YTgyNmIyZmQ1ZWNmNDZlY2NkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQwLDggKzM1NDAsOCBAQCBz
dGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0oY29uc3QgV2Vi
Q29yZTo6SGl0VGVzdFJlc3VsdCYgaAogICAgIH0KIAogICAgIGlmIChhdXRvKiBpbWFnZSA9IGhp
dFRlc3RSZXN1bHQuaW1hZ2UoKSkgewotICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKLSAgICAgICAgICAgIFtpdGVtcyBhZGRP
YmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6YnVmZmVyLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsK
KyAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBpbWFnZS0+ZGF0YSgpKQorICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5T
KFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0
KCldOwogICAgIH0KIAogICAgIGlmICghaGl0VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKS5pc0Vt
cHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
UmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNl
Lm1tCmluZGV4IDEyMTk4ZjQwMWVhOGFkNTc4ZGQ3YmRlYWNjMDRkZmI3ZTM0YWM3MzQuLmFhZGNm
YmZlYTM1NmIzN2IwZjUzNzhhZmE4OThiOGVhOTlhZTZhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQpAQCAtMTYzLDIxICsxNjMsMjEgQEAg
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCiAtICh2b2lk
KWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWVuY29kZXIKIHsKICAgICBhdXRvKiByZXNvdXJj
ZSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UuZ2V0KCk7Ci0gICAgCi0gICAgTlNEYXRhICpkYXRh
ID0gbmlsOworCisgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKICAgICBOU1VSTCAqdXJsID0g
bmlsOwogICAgIE5TU3RyaW5nICptaW1lVHlwZSA9IG5pbCwgKnRleHRFbmNvZGluZyA9IG5pbCwg
KmZyYW1lTmFtZSA9IG5pbDsKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IG5pbDsKLSAg
ICAKKwogICAgIGlmIChyZXNvdXJjZSkgewotICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEo
KS5jcmVhdGVOU0RhdGEoKS5nZXQoKTsKKyAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCku
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHVybCA9IHJlc291cmNl
LT51cmwoKTsKICAgICAgICAgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAg
ICAgdGV4dEVuY29kaW5nID0gcmVzb3VyY2UtPnRleHRFbmNvZGluZygpOwogICAgICAgICBmcmFt
ZU5hbWUgPSByZXNvdXJjZS0+ZnJhbWVOYW1lKCk7CiAgICAgICAgIHJlc3BvbnNlID0gcmVzb3Vy
Y2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIH0KLSAgICBbZW5jb2RlciBlbmNv
ZGVPYmplY3Q6ZGF0YSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKKyAgICBbZW5jb2RlciBl
bmNvZGVPYmplY3Q6ZGF0YS5nZXQoKSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKICAgICBb
ZW5jb2RlciBlbmNvZGVPYmplY3Q6dXJsIGZvcktleTpXZWJSZXNvdXJjZVVSTEtleV07CiAgICAg
W2VuY29kZXIgZW5jb2RlT2JqZWN0Om1pbWVUeXBlIGZvcktleTpXZWJSZXNvdXJjZU1JTUVUeXBl
S2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dGV4dEVuY29kaW5nIGZvcktleTpXZWJS
ZXNvdXJjZVRleHRFbmNvZGluZ05hbWVLZXldOwpAQCAtMjAyLDcgKzIwMiw3IEBAIC0gKE5TRGF0
YSAqKWRhdGEKIAogICAgIGlmICghX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSkKICAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0
ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3Vy
Y2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgp
OwogfQogCiAtIChOU1VSTCAqKVVSTApAQCAtMzY3LDggKzM2Nyw4IEBAIC0gKE5TU3RyaW5nICop
X3N0cmluZ1ZhbHVlCiAgICAgaWYgKCFlbmNvZGluZy5pc1ZhbGlkKCkpCiAgICAgICAgIGVuY29k
aW5nID0gV2luZG93c0xhdGluMUVuY29kaW5nKCk7CiAgICAgCi0gICAgU2hhcmVkQnVmZmVyKiBj
b3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJj
ZS0+ZGF0YSgpIDogbnVsbHB0cjsKLSAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPmRhdGEoKSA6IG51bGxw
dHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKKyAgICBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUt
PmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gZW5jb2RpbmcuZGVj
b2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5z
aXplKCkgOiAwKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291
cmNlLmNwcAppbmRleCBiNDA3M2UxMDhiZDVjNzcwZGQ2MmExMDVhZmIwY2NhOWM0ZWYwMzhlLi4w
ODk3YzdjMDU0OGQyMGIxZWY0NWUzNWUxYmY4ZDhlNDBlYTVkM2Q0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIEhSRVNVTFQg
V2ViRGF0YVNvdXJjZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0pCiAg
ICAgaWYgKCFtX2xvYWRlcikKICAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAotICAgIHJl
dHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VE
YXRhKCkpLmNvcHlSZWZUbyhzdHJlYW0pOworICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0
ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCktPm1ha2VDb250aWd1b3VzKCkp
LmNvcHlSZWZUbyhzdHJlYW0pOwogfQogCiBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OnJlcHJlc2Vu
dGF0aW9uKF9DT01fT3V0cHRyX29wdF8gSVdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24qKiByZXAp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggOTBhNWEwYTEzMzZlZWViYzhh
ZjVjZGVjMWI1YzYyMGU2ODIzMTliNS4uNTU4ZTEzYzdmMWZkYWE1YjEyNWQyMGJlZmU3OTFhMjdm
Zjc1NzEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtNTU5LDcgKzU1
OSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRSZXF1ZXN0KF9Jbl9vcHRfIElXZWJVUkxSZXF1
ZXN0KiByZXF1ZXN0KQogICAgIHJldHVybiBTX09LOwogfQogCi12b2lkIFdlYkZyYW1lOjpsb2Fk
RGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJT
VFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpCit2b2lk
IFdlYkZyYW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVS
TCwgQlNUUiBmYWlsaW5nVVJMKQogewogICAgIFN0cmluZyBtaW1lVHlwZVN0cmluZyhtaW1lVHlw
ZSwgU3lzU3RyaW5nTGVuKG1pbWVUeXBlKSk7CiAgICAgaWYgKCFtaW1lVHlwZSkKQEAgLTU4NSwy
MSArNTg1LDIxIEBAIHZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0CiAKIEhSRVNVTFQgV2ViRnJhbWU6
OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0lu
XyBCU1RSIHRleHRFbmNvZGluZ05hbWUsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAgYXV0byBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgc2hhcmVkQnVmZmVyOwogCiAgICAgU1RBVFNURyBzdGF0OwogICAgIGlmIChTVUNDRUVERUQo
ZGF0YS0+U3RhdCgmc3RhdCwgU1RBVEZMQUdfTk9OQU1FKSkpIHsKICAgICAgICAgaWYgKCFzdGF0
LmNiU2l6ZS5IaWdoUGFydCAmJiBzdGF0LmNiU2l6ZS5Mb3dQYXJ0KSB7CiAgICAgICAgICAgICBW
ZWN0b3I8Y2hhcj4gZGF0YUJ1ZmZlcihzdGF0LmNiU2l6ZS5Mb3dQYXJ0KTsKICAgICAgICAgICAg
IFVMT05HIHJlYWQ7Ci0gICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxlc3Mg
Y29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0aGUgU2hhcmVkQnVmZmVy
CisgICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQg
YmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgog
ICAgICAgICAgICAgLy8gb3IgYWRvcHQgdGhlIFZlY3RvciBvciBzb21ldGhpbmcuCiAgICAgICAg
ICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPlJlYWQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19j
YXN0PFVMT05HPihkYXRhQnVmZmVyLnNpemUoKSksICZyZWFkKSkpCi0gICAgICAgICAgICAgICAg
c2hhcmVkQnVmZmVyLT5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4o
ZGF0YUJ1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXIuYXBwZW5k
KGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBsb2FkRGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciks
IG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIpOworICAgIGxvYWREYXRh
KHNoYXJlZEJ1ZmZlci50YWtlKCksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51
bGxwdHIpOwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUu
aAppbmRleCA0MzYwNTRmZDlkZGI0N2NhMzI5NmIxMTc5ODE0MzRlYzE4OTdkYWQxLi5mYTljMzgx
Y2M1NzNiYTZiMjA5ODhlYWIzNTA4ZWQ5YTMwYThmMTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkZyYW1lLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50Owog
Y2xhc3MgSW50UmVjdDsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0NvbnRleHRSZWY7CkBAIC0xOTUsNyAr
MTk1LDcgQEAgcHJpdmF0ZToKICAgICB+V2ViRnJhbWUoKTsKIAogICAgIHZvaWQgbG9hZEhUTUxT
dHJpbmcoX0luXyBCU1RSIHN0cmluZywgX0luXyBCU1RSIGJhc2VVUkwsIF9Jbl8gQlNUUiB1bnJl
YWNoYWJsZVVSTCk7Ci0gICAgdm9pZCBsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwg
QlNUUiBmYWlsaW5nVVJMKTsKKyAgICB2b2lkIGxvYWREYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUs
IEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKTsKICAgICBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6SW50UmVjdD4mIGNvbXB1dGVQYWdlUmVjdHMoSERDIHByaW50REMpOwogICAgIHZvaWQgc2V0
UHJpbnRpbmcoYm9vbCBwcmludGluZywgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBwYWdlU2l6
ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBvcmlnaW5hbFBhZ2VTaXplLCBmbG9hdCBtYXhp
bXVtU2hyaW5rUmF0aW8sIFdlYkNvcmU6OkFkanVzdFZpZXdTaXplT3JOb3QpOwogICAgIHZvaWQg
aGVhZGVyQW5kRm9vdGVySGVpZ2h0cyhmbG9hdCosIGZsb2F0Kik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViS2l0RExMLmNwcAppbmRleCA5NjIwMTk4YjRiNTQwYWU2Zjc5NjdmODIzM2M5NDY0YmQy
Nzc1ODUxLi4yNzRiN2QyZDZjZjJlYjQ3MWQ3YjhiODk2NTlhZTQ2OWNmOTM0YzkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAKQEAgLTE2NSw4ICsxNjUsOCBAQCB2b2lkIHNo
dXREb3duV2ViS2l0KCkKIH0KIAogLy9GSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIG1vdmluZyB0
aGlzIHRvIGEgbmV3IGZpbGUgZm9yIGNyb3NzLXByb2plY3QgZnVuY3Rpb25hbGl0eQotV0VCS0lU
X0FQSSBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVy
KGNvbnN0IGNoYXIqIG5hbWUpOwotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJl
c291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQorV0VCS0lUX0FQSSBSZWZQdHI8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25z
dCBjaGFyKiBuYW1lKTsKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBs
b2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgaW50IGlkcjsK
ICAgICAvLyB0ZW1wb3JhcnkgaGFjayB0byBnZXQgcmVzb3VyY2UgaWQKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMTBmYzJmZmViMmI1ZGJhMGM1
MWIyYmFhN2M1YWNjNWUwZDY4OThiLi41MGQzMDU0NTU0YWNkNmFiNWNkNDVkYjUzZjNjMDZjZDdi
MTQ1YzIwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTIgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFw
cGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAg
cmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZm
ZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcDoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3Rz
Q0cuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFy
ZWRCdWZmZXIubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVi
cy5jcHA6CisKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84
NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5t
bToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKKzIwMjEtMTEtMjUgIEplYW4t
WXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250
aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVl
IGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIu
bW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDIxLTEyLTAzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFdlYiBj
b250ZW50IHByb2Nlc3Mgc29tZXRpbWVzIGNyYXNoZXMgdW5kZXIgV2ViUGFnZTo6cG9zaXRpb25J
bmZvcm1hdGlvbigpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9G
aWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0u
Y3BwCmluZGV4IDg1ODNiMjlhZDk5MGMyMmI0NzJjODY5ZWNjZDg2ODI5NjIxYmIwYjQuLmI4NDdk
M2E4MjZiM2Q5ZmZjMDhmNmYzYmUzODI2MGE2YzU5ZGZmMmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyB2
b2lkIGNyZWF0ZVRlc3RGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBGaWxlU3lzdGVtOjpj
bG9zZUZpbGUoZmlsZUhhbmRsZSk7CiB9OwogCi0vLyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3Rl
bVRlc3QgYW5kIFNoYXJlZEJ1ZmZlclRlc3QgYXMgYSBzaW5nbGUgY2xhc3MuCisvLyBGSVhNRTog
UmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0IGFz
IGEgc2luZ2xlIGNsYXNzLgogY2xhc3MgRmlsZVN5c3RlbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKaW5k
ZXggYjk4NmEyYTU4ODg0NjViZTE5MjBhNmUwNjY4ZDcwZGIyNDkwNmVhYi4uYWI0NzJlNTBiODM1
NzRjMzAxODI1ZGJiZWVmOTk4M2YyZjQxZDIyZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcApAQCAtMTk4LDcgKzE5
OCw3IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgSXRlbUJ1ZmZlckNsaWVudCkKICAgICAgICAg
ICAgIHJldHVybiB7IGdsb2JhbEJ1ZmZlcklkZW50aWZpZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGds
b2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSB9OwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGRp
c3BsYXlMaXN0SXRlbSkgY29uc3QgZmluYWwKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJiBkaXNw
bGF5TGlzdEl0ZW0pIGNvbnN0IGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gaW5k
ZXggPSBtX2l0ZW1zLnNpemUoKTsKICAgICAgICAgICAgIG1faXRlbXMuYXBwZW5kKHN0ZDo6Z2V0
PFN0cm9rZVBhdGg+KGRpc3BsYXlMaXN0SXRlbSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkZGJmYzFmMmIxODIxY2Ix
ZGZhYmM4ZTJmNjMyN2IyMTJjN2NhNDY4Li5hMDYzMGJhNjc1YmY4ZTUyYzQ0MGM5ZDE5MjIwNzIy
ODkwZmJkYzFmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNDEsODAgKzQx
LDczIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3Np
bmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29u
dGVudHNPZk1pc3NpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0
aW5nX2ZpbGUiKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0
aW5nX2ZpbGUiKSk7CiAgICAgQVNTRVJUX05VTEwoYnVmZmVyKTsKIH0KIAotVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQorVEVTVF9GKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmls
ZSkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9O
VUxMKGJ1ZmZlcik7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShTdHJpbmcoU2hh
cmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxlbihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOworICAgIEVYUEVDVF9UUlVF
KFN0cmluZyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5n
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQog
Ci1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0Vt
cHR5RmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENv
bnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlG
aWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgo
KSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVy
LT5pc0VtcHR5KCkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNy
ZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVk
QnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkK
IHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxM
KGJ1ZmZlcik7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29weSA9IGJ1ZmZlci0+Y29weSgp
OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5
KCk7CiAgICAgRVhQRUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQRUNUX1RSVUUo
YnVmZmVyLT5zaXplKCkgPT0gY29weS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21w
KGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQ
RUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitURVNUX0YoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNP
ZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05V
TEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmNsZWFyKCk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZl
ci0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5kYXRhKCkpOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgqYnVmZmVyKTsKKyAg
ICBidWlsZGVyLmFwcGVuZCgiYSIsIDEpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuc2l6ZSgp
ID09IChzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkp
OworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVu
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9F
USgnYScsIGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKLVRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0Zp
bGUpCi17Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFTU0VSVF9OT1Rf
TlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwgMSk7Ci0gICAgRVhQRUNUX1RS
VUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
KSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBTaGFyZWRC
dWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEo
KSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKLX0KLQotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRy
eUNyZWF0ZUFycmF5QnVmZmVyKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCB0
cnlDcmVhdGVBcnJheUJ1ZmZlcikKIHsKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsK
ICAgICBjaGFyIHRlc3REYXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3REYXRhMltdID0g
Ikdvb2RieWUiOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwotICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwotICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwotICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5
QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHRlc3REYXRhMCwgc3Ry
bGVuKHRlc3REYXRhMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRl
c3REYXRhMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRh
MikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgp
LT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGNoYXIgZXhwZWN0ZWRDb25jYXRlbmF0aW9u
W10gPSAiSGVsbG9Xb3JsZEdvb2RieWUiOwogICAgIEFTU0VSVF9FUShzdHJsZW4oZXhwZWN0ZWRD
b25jYXRlbmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgRVhQRUNUX0VR
KDAsIG1lbWNtcChleHBlY3RlZENvbmNhdGVuYXRpb24sIGFycmF5QnVmZmVyLT5kYXRhKCksIHN0
cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCitURVNUX0YoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKIHsK
ICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMCgweDQwMDAsICdhJyk7CiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3Iy
KDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwotICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdU
Rk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBz
aGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBidWlsZGVyKFdURk1vdmUodmVjdG9yMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1v
dmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMikpOworICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgpLT50cnlDcmVh
dGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQwMDBVICsgMHg0MDAwVSArIDB4NDAw
MFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGludCBwb3NpdGlvbiA9IDA7CiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkgewpAQCAtMTMxLDcgKzEyNCw3IEBA
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVu
dHMpCiAgICAgfQogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKK1RFU1RfRihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKIHsKICAgICBjaGFyIHRlc3REYXRhW10g
PSAiSGFiaXRhc3NlIGludGVnZXIgZXJvcyB0aW5jaWR1bnQgYSBzY2VsZXJpc3F1ZSEgRW5pbSBl
bGl0PyBTY2VsZXJpc3F1ZSBtYWduaXMsIgogICAgICJldCBtb250ZXMgdWx0cmljZXMgdHJpc3Rp
cXVlIGEhIFBpZC4gVmVsaXQgdHVycGlzLCBkYXBpYnVzIGludGVnZXIgcmhvbmN1cyBzb2NpaXMg
YW1ldCBmYWNpbGlzaXMsIgpAQCAtMTUxLDE3ICsxNDQsNTMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGNvcHkpCiAgICAgIm1hdHRpcyBkaWduaXNzaW0gbWFzc2EgYWMgcHVsdmluYXIgdXJu
YSwgbnVuYyB1dC4gU2FnaXR0aXMsIGFsaXF1ZXQgcGVuYXRpYnVzIHByb2luIGxvcmVtLCBwdWx2
aW5hciBsZWN0dXMsIgogICAgICJhdWd1ZSBwcm9pbiEgQWMsIGFyY3UgcXVpcy4gUGxhY2VyYXQg
aGFiaXRhc3NlLCByaWRpY3VsdXMgcmlkaWN1bHVzLiI7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0g
c3RybGVuKHRlc3REYXRhKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZm
ZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0
ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVu
Z3RoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhLCBsZW5ndGgp
OworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5h
cHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBs
ZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4g
c2VnbWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5KCkuCi0gICAgQVNTRVJUX0VRKGxl
bmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0
LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25lLT5kYXRhKCks
IHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7Ci0gICAgY2xvbmUtPmFwcGVu
ZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwgY2xvbmUtPnNp
emUoKSk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7CisgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNsb25lID0gYnVpbGRlcjEuY29weSgpOwor
ICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEo
MCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1aWxkZXIxLmdldCgp
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKKworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgYnVpbGRlcjIuYXBwZW5kKCpjbG9uZSk7Cisg
ICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIEVYUEVDVF9FUShsZW5n
dGggKiA1LCBidWlsZGVyMi5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjIudGFr
ZSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWZmZXItPnNpemUoKSk7CisgICAgLy8g
YnVpbGRlciBpcyBub3cgZW1wdHkuCisgICAgRVhQRUNUX0VRKDBVLCBidWlsZGVyMi5zaXplKCkp
OworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShi
dWlsZGVyMi5pc0VtcHR5KCkpOworfQorCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3QsIGJ1aWxkZXIpCit7CisgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsK
KyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShi
dWlsZGVyMS5pc0VtcHR5KCkpOworICAgIGF1dG8gY29weSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIxLnRha2UoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVy
MS5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBF
WFBFQ1RfTkUoY29weS5wdHIoKSwgYnVmZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZmZXJlbnQg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgorICAgIEVYUEVDVF9FUShjb3B5LmdldCgpLCBidWZmZXIu
Z2V0KCkpOyAvLyBCdXQgdGhlaXIgY29udGVudCBpcyBpZGVudGljYWwKKworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkp
OworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIuYXBw
ZW5kKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWls
ZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7Cisg
ICAgYnVpbGRlcjIucmVzZXQoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7
CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5lbXB0
eSgpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RS
VUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAogc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29u
c3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKiBleHBl
Y3RlZCkKQEAgLTE3Myw3MCArMjAyLDgwIEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhcioKICAgICAg
ICAgRVhQRUNUX0VRKGJ1ZmZlcltpXSwgZXhwZWN0ZWRbaV0pOwogfQogCi1URVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3QsIGdldFNvbWVEYXRhKQogewotICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsnYScsICdiJywg
J2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsnZScsICdmJywgJ2cnLCAnaCd9
OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9OwotICAgIAot
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFw
cGVuZChXVEZNb3ZlKHMxKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMikpOwotICAg
IGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7
ICdhJywgJ2InLCAnYycsICdkJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAn
ZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geyAnaScsICdqJywgJ2sn
LCAnbCcgfTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVy
LmFwcGVuZChXVEZNb3ZlKHMxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMikpOwor
ICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxk
ZXIudGFrZSgpOwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7
Ci0gICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0byBnaDEgPSBi
dWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
Nyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBhdXRvIGts
ID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0byBhYmNkZWZnaGlqa2wgPSBidWZm
ZXItPmRhdGEoKTsKLSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7Cisg
ICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAg
IGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpOworICAgIGF1dG8g
Z2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoaWprbCA9IGNvbnRpZ3Vv
dXNCdWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURh
dGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2Qi
KTsKLSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdoLnNpemUoKSwgImdoIik7CisgICAgY2hl
Y2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIo
aC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAgIGNoZWNrQnVmZmVyKGlqa2wuZGF0YSgpLCBp
amtsLnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihrbC5kYXRhKCksIGtsLnNpemUo
KSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVmZ2hpamtsLCBidWZmZXItPnNpemUoKSwg
ImFiY2RlZmdoaWprbCIpOworICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRhKCksIGdoMi5zaXplKCks
ICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGdoaWprbC5kYXRhKCksIGdoaWprbC5zaXplKCksICJn
aGlqa2wiKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNpemUoKSwgZ2gyLnNpemUoKSk7CisgICAgY2hl
Y2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgZ2gyLmRhdGFBc0NoYXJQdHIoKSk7CiAg
ICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIpOwogfQogCi1URVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJU
ZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0
b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAg
ICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQotICAgICAgICAgICAgYnVmZmVy
LT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJldHVybiBidWZmZXI7CisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKKyAgICAgICAgcmV0dXJu
IGJ1aWxkZXIudGFrZSgpOwogICAgIH07Ci0gICAgYXV0byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7
eydhJywgJ2InLCAnYycsICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtlQnVmZmVyKHsg
eyAnYScsICdiJywgJ2MnLCAnZCcgfSB9KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyMS5nZXQoKSwg
YnVmZmVyMS5nZXQoKSk7CiAKLSAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+KHsn
YScsICdiJywgJ2MnLCAnZCd9KSk7Ci0gICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIG1ha2VC
dWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJ319KS5nZXQoKSk7
Ci0gICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InLCAnYyd9LCB7J2QnfX0pLmdl
dCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVY
UEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScs
ICdiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2In
fX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9O
RShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJ30sIHsn
YSd9fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKGJ1
ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWludDhfdD4oeyAnYScsICdiJywg
J2MnLCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5nZXQoKSwgbWFrZUJ1ZmZlcih7
IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisK
KyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwgeyAnZCcg
fSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9IH0pLmdl
dCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwg
bWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUo
bWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2InLCAn
YycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdi
JyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5nZXQoKSk7CiB9
CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKK1RFU1RfRihGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHQxID0gezB4MTEsIDB4NSwgMHgxMn07Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh0MSkpOwor
ICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1
ZmZlci0+dG9IZXhTdHJpbmcoKTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LCAiMTEwNTEyIik7Ci0g
ICAgYnVmZmVyLT5jbGVhcigpOworICAgIGJ1aWxkZXIucmVzZXQoKTsKKyAgICBidWZmZXIgPSBi
dWlsZGVyLnRha2UoKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0cmluZygpLCAiIik7
CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQorVEVTVF9GKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXJUZXN0LCByZWFkKQogewogICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRl
eHQgPSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LiI7CiAKLSAgICBhdXRvIGNoZWNrID0gW10oU2hh
cmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhID0gc2hhcmVkQnVmZmVyLnJlYWQoNCwgMyk7CiAgICAgICAgIEVYUEVDVF9FUShkYXRhLnNp
emUoKSwgM3UpOwogICAgICAgICBFWFBFQ1RfRVEoU3RyaW5nKGRhdGEuZGF0YSgpLCAzKSwgIiBp
cyIpOwpAQCAtMjQ5LDE2ICsyODgsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQp
CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0
LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVU
ZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwg
MSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNp
bXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKyAgICBFWFBFQ1Rf
VFJVRShidWlsZGVyLmlzTnVsbCgpICYmICFidWlsZGVyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRl
ci5zaXplKCksIDB1KTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0g
MikKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAg
IEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAg
ICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4
dFtpXSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4
dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkK
QEAgLTI2Niw3ICszMDYsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKIHRlbXBs
YXRlPCB0eXBlbmFtZSBULCBzaXplX3QgTiA+CiBjb25zdGV4cHIgc2l6ZV90IGFycmF5c2l6ZSgg
Y29uc3QgVCAoJilbTl0gKSB7IHJldHVybiBOOyB9CiAKLXN0YXRpYyB2b2lkIHJlYWRBbGxDaHVu
a3Moc3RkOjp2ZWN0b3I8U3RyaW5nPiogY2h1bmtzLCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZh
bHNlKQorc3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxTdHJpbmc+KiBjaHVu
a3MsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBzZXBhcmF0
b3IgPSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKQogewogICAgIFNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZidWZmZXIsIHNlcGFyYXRvci51dGY4KCku
ZGF0YSgpKTsKICAgICBTdHJpbmcgY2h1bmsgPSBjaHVua1JlYWRlci5uZXh0Q2h1bmtBc1VURjhT
dHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soaW5jbHVkZVNlcGFyYXRvcik7CkBAIC0yOTksNyArMzM5
LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tEYXRhSW5SYW5nZShjb25zdCBWZWN0b3I8dWludDhfdD4m
IGRhdGEsIHNpemVfdCBzdGFydCwgc2l6ZV90IGwKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKIHsKLSAgICBhdXRvIGNoZWNrID0gW10oU2hh
cmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIFNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyIGNodW5rUmVhZGVyKCZzaGFyZWRCdWZmZXIsICJceDEwXHgxMVx4MTIiKTsKICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IG91dDsKICAgICAgICAgRVhQRUNUX1RSVUUoY2h1bmtSZWFkZXIu
bmV4dENodW5rKG91dCkpOwpAQCAtMzEzLDIyICszNTMsMjQgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKICAgICB1aW50OF90IGRhdGFbMjU2
XTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKQogICAgICAgICBkYXRhW2ld
ID0gaTsKLQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSwgMjU2KTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIo
ZGF0YSwgMjU2KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IDI1NjsgKytpKSB7CiAgICAgICAgIGNoYXIgYyA9IGk7Ci0gICAgICAgIHNo
YXJlZEJ1ZmZlci0+YXBwZW5kKCZjLCAxKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJmMsIDEp
OwogICAgIH0KLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgIGNoZWNrKGJ1aWxkZXIudGFr
ZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEp
CiB7CiAgICAgY29uc3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlzIGEgc2ltcGxl
IHRlc3QuIjsKIAotICAgIGF1dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZl
cikgeworICAgIGF1dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRC
dWZmZXIpIHsKICAgICAgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJnNo
YXJlZEJ1ZmZlciwgImlzIik7CiAKICAgICAgICAgU3RyaW5nIGNodW5rID0gY2h1bmtSZWFkZXIu
bmV4dENodW5rQXNVVEY4U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKCk7CkBAIC0zNTgsMjIgKzQw
MCwyMyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKICAg
ICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0
cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAotICAgIHNoYXJl
ZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVp
bGRlci50YWtlKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxl
VGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0s
IDEpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZz
aW1wbGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAgICBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+
YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5z
aXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOworICAgIEVYUEVDVF9FUShi
dWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRh
a2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxD
aHVua3NJbk11bHRpU2VnbWVudCkKIHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0
ID0gIlRoaXMgaXMgdGhlIG1vc3QgcmlkaWN1bG91cyBoaXN0b3J5IHRoZXJlIGlzLiI7Ci0gICAg
YXV0byBjaGVjayA9IFtdKFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBj
aGVjayA9IFtdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAg
ICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5rczsKICAgICAgICAgY29uc3QgY2hhciogY29uc3Qg
ZXhwZWN0ZWRDaHVua3MxV2l0aG91dFNlcGFyYXRvcltdID0geyAiVGgiLCAicyAiLCAicyB0aGUg
bW9zdCByIiwgImQiLCAiY3Vsb3VzIGgiLCAic3RvcnkgdGhlcmUgIiwgInMuIiB9OwogICAgICAg
ICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImkiKTsKQEAgLTQwNiwxNyAr
NDQ5LDE5IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVu
a3NJbk11bHRpU2VnbWVudCkKICAgICB9OwogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVj
ayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoc2ltcGxlVGV4dCwgc3RybGVu
KHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRC
dWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1
ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZl
cik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBFWFBF
Q1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVp
bGRlci50YWtlKCkpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSA1
KQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7Ci0gICAg
RVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAg
IGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0
W2ldLCA1KTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0
KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCmluZGV4IDliOGIx
M2E3NWQ1MmZmOTUxZWFkMTgxODVkNTZjMzc5MWIyZDdiZWQuLmQwMzQxYTgxZGVkYTcxOWYzNWZj
Y2UzOTQ2NTVlYzI1NWFiOGZiYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAog
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi12b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVw
KCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKIHsKICAgICBXVEY6
OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBTaGFyZWRC
dWZmZXJUZXN0OjpTZXRVcCgpCiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiB9
CiAKLXZvaWQgU2hhcmVkQnVmZmVyVGVzdDo6VGVhckRvd24oKQordm9pZCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyVGVzdDo6VGVhckRvd24oKQogewogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUo
bV90ZW1wRmlsZVBhdGgpOwogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlG
aWxlUGF0aCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyVGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1No
YXJlZEJ1ZmZlclRlc3QuaAppbmRleCA2NDAxMTliZGU2ZmNlNDFmMDFlYWFiNjMxNjg0N2JlNTZi
OTBjZjVjLi5hMzkyYTA1MTk0NzU2ZDJhZDU2ZTgyNDkyOWVjZTRjMTVmM2FkMDU1IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5o
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0
LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1jbGFz
cyBTaGFyZWRCdWZmZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAg
ICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlOwogICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5
TGlzdFRlc3RzQ0cuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rp
c3BsYXlMaXN0VGVzdHNDRy5jcHAKaW5kZXggZDg0NmMwMjVlMGRjZDhjYTgyOWI3MTI3M2RhZjFm
NzA3ZTlkOTJkZC4uYWZlYWExZTFhMThlYTgyYmUxYWI2MzMyYjgzMWIyNmY2NDAxODNmOSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0
VGVzdHNDRy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rp
c3BsYXlMaXN0VGVzdHNDRy5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAgICAg
ICByZXR1cm4geyBnbG9iYWxCdWZmZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVtQnVmZmVyLCBnbG9i
YWxJdGVtQnVmZmVyQ2FwYWNpdHkgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0IGZpbmFs
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUo
Y29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmluZGV4IDkzMzMx
ZDcwMmM1MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIxMTAuLmMzYjVkM2U4ZDdjMDNiMWEzNjVk
ZDUzNWEwYjI5YWRlMjdhY2VjYTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ1LDE5ICs0NSwyMCBA
QCBzdGF0aWMgdm9pZCBleHBlY3REYXRhQXJyYXlzRXF1YWwoTlNBcnJheTxOU0RhdGEgKj4gKmV4
cGVjdGVkLCBOU0FycmF5PE5TRGF0YSAqPgogICAgIH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJU
ZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAg
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBleHBlY3RE
YXRhQXJyYXlzRXF1YWwobmlsLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwor
ICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuZW1w
dHkoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVpbGRlci5nZXQoKS0+
Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEg
PSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZl
ci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgp
OwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1ZmZlci0+
Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChjb25z
dCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBleHBl
Y3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5T
RGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0
YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVu
ZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJh
eXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFy
cmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVm
KXdvcmxkRGF0YSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEs
IHdvcmxkRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsK
IAogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAg
ICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXko
KS5nZXQoKSk7CkBAIC02NiwzNSArNjcsMzUgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNy
ZWF0ZU5TRGF0YUFycmF5KQogICAgIH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNy
ZWF0ZU5TRGF0YUZvckRhdGFTZWdtZW50KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJU
ZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29s
IHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0Rh
dGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1
ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5n
dGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVz
LCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0YSA9IFtOU0Rh
dGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBl
bmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CiAKICAgICAgICAgTlNBcnJheSAqZXhw
ZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXTsKICAgICAgICAgTlNVSW50ZWdl
ciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEubGVuZ3RoICsgd29ybGREYXRhLmxlbmd0aDsKIAog
ICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIGZvciAoYXV0byYg
c2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogKmJ1
aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbc2VnbWVudC5zZWdtZW50LT5j
cmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11d
KTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsK
IAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9uID0gMDsKICAgICAgICAgc2VnbWVudENvdW50
ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZlci0+c2l6ZSgpID4gcG9zaXRpb24pIHsKLSAgICAg
ICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVmZmVyLT5nZXRTb21lRGF0YShwb3NpdGlv
bik7CisgICAgICAgIHdoaWxlIChidWlsZGVyLnNpemUoKSA+IHBvc2l0aW9uKSB7CisgICAgICAg
ICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKHBv
c2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtpbmNyZW1lbnRhbERhdGEuY3JlYXRl
TlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAg
ICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpOwogICAgICAgICB9
CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAK
LSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXpl
IC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWlsZGVyLmdldCgpLT5nZXRTb21lRGF0
YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW2xhc3RCeXRlLmNyZWF0
ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0AiZCIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNBU0NJSVN0
cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBFWFBFQ1RfRVEoMUxVLCBsYXN0Qnl0ZS5zaXplKCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3Jl
U3R1YnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAK
aW5kZXggNDZjNzYyMDNlMWIyNWFhYWI3YTAyZTBiYjJiZjVlMGM0MzZlZDY4Ny4uNWJlNjY1OTQ2
MTM3MzFlMjFlZDk3ZGE3NGM1NzM4YzdjYTI4NWJmNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUg
PFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciopCitSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKikK
IHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
Q2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODkyMzkyZDg3Zjc0
MDBlYmZhOThmNWE4NjUzYzlmZDRlMjc1NWY1OS4uNzA4MGE2Y2Y3YTZkMjIwMGFlMzAzYzIyY2U3
MzExOTEwZGRhYTFmMiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMi0w
MiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1
aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBn
dWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogRGVjb2RlclRlc3QvRGVjb2RlclRlc3QvbWFpbi5tbToK
KyAgICAgICAgKG1haW4pOgorCiAyMDIxLTExLTIxICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5A
aWdhbGlhLmNvbT4KIAogICAgICAgICBbUGVyZm9ybWFuY2UgdGVzdF1bY3NzLWNvbnRhaW5dIEFk
ZCBjYXNlIHRvIHRlc3QgY29udGFpbjogbGF5b3V0IGluc2lkZSBhIGNvbXBsZXggZG9jdW1lbnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446026</attachid>
            <date>2021-12-06 04:37:29 -0800</date>
            <delta_ts>2021-12-07 01:23:31 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233677-20211206233722.patch</filename>
            <type>text/plain</type>
            <size>783596</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YTJiZTEzOTE2MjhmNTNiNmQ2ZDIyZTEzY2E3ZmIyYmRkMjA1ZWYzLi5kMTcyNDIwMTVhOGI5Zjc3
ZTRmZWM3M2Y1YjMwMzdhZThkMDkxODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8v
cHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBi
ZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0FycmF5QnVmZmVyLmg6CisKIDIwMjEtMTItMDMgIEtlaXRoIE1pbGxlciAgPGtlaXRo
X21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFN0cnVjdHVyZUlEQmxvYgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDI1YTA4MjRiYjdjNzg1MDc0YWY4MTM2NTkxMDYxMDBkYmUzZjA1YTAuLjUwMzg1
ZGQwNDViM2IwY2Y4MDYzNmU1NGNiYTlmNjNmYmZmMzk5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMDAzIEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9w
cm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIg
YW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJl
dHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICBSZW5h
bWUgb25seSwgbm8gY2hhbmdlIGluIGJlaGF2aW91ci4KKworICAgICAgICAqIE1vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oOgorICAgICAgICAqIE1vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUv
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NE
TS5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaDoKKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oOgorICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5Lmg6CisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oOgorICAgICAgICAq
IE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwOgorICAgICAgICAqIE1v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYU1ldGFkYXRhLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJj
ZUJ1ZmZlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIu
aDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJT
b3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgICog
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5jcHA6
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9y
Lmg6CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaDoKKyAgICAg
ICAgKiBlZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHA6CisgICAgICAgICogZWRpdGluZy9XZWJDb3JlUGFz
dGVib2FyZEZpbGVSZWFkZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29h
Lm1tOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAg
KiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKiBlZGl0
aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW06CisgICAgICAgICogZmlsZWFwaS9CbG9iLmg6CisgICAgICAgICogZmlsZWFw
aS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtTZW5kUXVl
dWUuaDoKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAg
KiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MQXR0
YWNobWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW1hZ2VE
b2N1bWVudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAqIGlu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAg
ICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0xvYWRlclN0cmF0ZWd5
Lmg6CisgICAgICAgICogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIv
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlRGF0YS5oOgorICAgICAg
ICAqIGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oOgorICAgICAg
ICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVy
L2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2
ZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmg6Cisg
ICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAq
IGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NT
dHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0ZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRl
eHRUcmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oOgorICAgICAg
ICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tOgorICAgICAgICAqIGxvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5tbToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAqIHBh
Z2UvUGFnZS5jcHA6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5jcHA6CisgICAgICAg
ICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhLmg6Cisg
ICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0tl
eWVkQ29kaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0
ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2Fy
ZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5o
OgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1N0YXRpY1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1N0YXRpY1Bhc3RlYm9h
cmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Y2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJD
Ri5jcHA6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2Nv
YS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1VdGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0
aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVy
R2VuZXJpYy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5l
cmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9X
T0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVG
b3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0
Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlD
bGVhcktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
VGh1bmRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9D
RE1UaHVuZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9H
U3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFDYWlyby5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRQbGF0Zm9ybURhdGFXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlRGVjb2RlckRpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVh
ZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFn
ZVJlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9J
bWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rl
ci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxh
dGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3RDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9w
b3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Bhc3Rl
Ym9hcmRXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3Bw
OgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAqIHRlc3Rp
bmcvTW9ja0NETUZhY3RvcnkuaDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
LmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmg6CisgICAgICAgICog
d29ya2Vycy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlckZldGNoLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyRmV0Y2guaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0
U3RvcmFnZS5jcHA6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcDoKKyAg
ICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisKKzIwMjEt
MTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
U2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbWlsYXIgdG8gU3Ry
aW5nQnVpbGRlciwgYSBTaGFyZWRCdWZmZXIgY2FuIG5vdyBvbmx5IGJlIG1vZGlmaWVkIHRocm91
Z2gKKyAgICAgICAgYSBTaGFyZWRCdWZmZXJCdWlsZGVyLiBBIFNoYXJlZEJ1ZmZlciBiZWNvbWVz
IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgRmx5LUJ5OiBQYXNzIFNoYXJlZEJ1
ZmZlciB2aWEgY29uc3QgcmVmZXJlbmNlcyBvciBwb2ludGVycyB3aGVyZSBpdCdzIGVhc3kKKyAg
ICAgICAgdG8gZG8gc28uCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91
cjsgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
OjpjbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29u
c3VtZXI6OnRha2VBc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6
OnNldFNvdXJjZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5o
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmRhdGEgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOiBEZWxldGVkLgorICAg
ICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIE1vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL05l
dHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6ZGF0YUxlbmd0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzQnVmZmVyZWREYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6Omhhc0RhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJl
c291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZl
cmluZ1BvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9y
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVzb3VyY2VE
YXRhKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0
aXR1dGVSZXNvdXJjZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRl
UmVzb3VyY2U6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGVsaXZlcik6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6
OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpzdG9yZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6
dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNv
bnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFn
ZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1
bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
VGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZG9VcGRh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW06
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVy
RGlkU3RhcnRDb252ZXJ0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2Fk
ZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdD
b252ZXJ0ZXI6OnByZXZpZXdEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdD
b252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6Om9wZXJhdG9y
IGJvb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNO
dWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzRW1w
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6c2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpyZXNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjplbXB0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpnZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtl
eWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlkRnJv
bVdlYk1Jbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3Rv
cmVkSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0
YTo6SW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OmFwcGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbml0RGF0YTo6cGF5bG9hZCBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUHJldmlld0Nv
bnZlcnRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OlByZXZp
ZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OnRha2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jhbmdl
UmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yOjpEYXRhOjpEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5l
cmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
RnJvbURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiB3b3JrZXJzL1Njcmlw
dEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpidWZmZXIgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc29sYXRlZENvcHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmlzUGVuZGluZyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0Lmg6CisgICAgICAgICog
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3Jl
YXRlUmVzcG9uc2VCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVh
dGVSZXNwb25zZUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpjbGVhclJlc3BvbnNlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVz
dDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorCisy
MDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAg
RGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBv
bmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGNhbGxp
bmcgU2hhcmVkQnVmZmVyOjpkYXRhKCkgdGhlIHVuZGVybHlpbmcgZGF0YSB3YXMgZmxhdHRlbmVk
LAorICAgICAgICBhbmQgc28gY291bGQgYmUgbXV0YXRlZCB3aGlsZSBiZWluZyBzaGFyZWQuIFRo
aXMgd2FzIGFuIHVuZGVzaXJhYmxlCisgICAgICAgIGJlaGF2aW91ci4KKyAgICAgICAgV2UgaW50
cm9kdWNlIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgd2hpY2ggZ3VhcmFudGVlIHRoYXQgaXRzIGNv
bnRlbnQgaXMgbWFkZQorICAgICAgICBvZiBjb250aWd1b3VzIGRhdGEuCisgICAgICAgIEFsbCBt
ZXRob2RzIHRoYXQgd291bGQgaGF2ZSBtdXRhdGVkIGEgU2hhcmVkQnVmZmVyIHdoZW4gYmVpbmcg
ZmxhdHRlbmVkIGFyZQorICAgICAgICBtb3ZlZCB0byBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgor
CisgICAgICAgIEFyZWEgd2hlcmUgU2hhcmVkQnVmZmVycyB3ZXJlIGFsd2F5cyBjcmVhdGVkIHdp
dGggYSBzaW5nbGUgc2VnbWVudCB3aGVyZQorICAgICAgICBjb252ZXJ0ZWQgdG8gYSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyLgorICAgICAgICBQcmV2aW91c2x5LCBhIFNoYXJlZEJ1ZmZlciB3b3Vs
ZCBoYXZlIGJlZW4gZmxhdHRlbmVkIG9ubHkgaWYgaXQgbmVlZGVkIHRvIGJlCisgICAgICAgIGFu
ZCBvbmx5IHdoZW4gdGhlIGRhdGEgd2FzIGdvaW5nIHRvIGJlIGFjY2Vzc2VkOyBmb2xsb3dpbmcg
dGhpcyBjaGFuZ2UKKyAgICAgICAgdGhlIGNvbnZlcnNpb24gaXMgbm93IGV4cGxpY3RseSBkb25l
IHRocm91Z2ggYSBjYWxsIHRvIG1ha2VDb250aWd1b3VzLgorICAgICAgICBUaGlzIGNvbnZlcnNp
b24gaXMgYSBuby1vcCBpZiB0aGUgU2hhcmVkQnVmZmVyIGJlaW5nIGNvbnZlcnRlZCB3YXMgYWxy
ZWFkeQorICAgICAgICBhIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisgICAgICAgIFdpdGggdGhl
IG5hdHVyZSBvZiBhIFNoYXJlZEJ1ZmZlciBiZWluZyBzaGFyZWQgYnkgcG90ZW50aWFsbHkgbXVs
dGlwbGUKKyAgICAgICAgdXNlcnMgaXQgd2FzIG5lY2Vzc2FyeSB0byBsaW1pdCB0aGUgbnVtYmVy
IG9mIGNvbnZlcnNpb25zIGJlaW5nIHBlcmZvcm1lZAorICAgICAgICBvbiBkZW1hbmQgdG8gYXZv
aWQgcmVkdW5kYW5jeS4KKyAgICAgICAgV2hlbiB0aGUgZmxhdHRlbmluZyBjb3VsZCBoYXZlIG9j
Y3VyZWQsIHRoZSBTaGFyZWRCdWZmZXIgY3JlYXRpb24gcG9pbnRzIHdlcmUKKyAgICAgICAgdHJh
Y2VkIGJhY2sgYW5kIGlkZW50aWZpZWQgdG8gbWFrZSB0aGUgYnVmZmVyIGNvbnRpZ3VvdXMgdGhl
bi4KKyAgICAgICAgSW4gdGhlIGVuZCwgdGhlcmUncyBubyBtb3JlIFNoYXJlZEJ1ZmZlciBmbGF0
dGVuaW5nIG9wZXJhdGlvbnMgdGhhbiB0aGVyZQorICAgICAgICB3b3VsZCBoYXZlIGJlZW4gYmVm
b3JlIHRoaXMgY2hhbmdlLgorICAgICAgICBUaGVyZSdzIGEgcG90ZW50aWFsIGluY3JlYXNlIG9m
IHRlbXBvcmFyeSBtZW1vcnkgdXNhZ2Ugd2l0aCB0aGUKKyAgICAgICAgU2NyaXB0QnVmZmVyU291
cmNlUHJvdmlkZXIgY2xhc3M7IGJ1ZyAyMzM1MTEgaXMgdHJhY2tpbmcgaXQuCisKKyAgICAgICAg
V2hpbGUgdGhlIGNoYW5nZSBpcyBleHRlbnNpdmUsIGNvZGUgY292ZXJhZ2Ugb2YgdGhlIG1vZGlm
aWVkIGFyZWFzIGlzIHRob3JvdWdoCisgICAgICAgIHdoaWNoIG1ha2VzIHVuZGV0ZWN0ZWQgcmVn
cmVzc2lvbnMgdW5saWtlbHkuCisKKyAgICAgICAgSW4gYnVnIDIzMzQ0MiwgYSBTaGFyZWRCdWZm
ZXIgd2lsbCBiZSBtYWRlIGNvbXBsZXRlbHkgaW1tdXRhYmxlIG9uY2UgY3JlYXRlZC4KKworICAg
ICAgICBObyBvYnNlcnZhYmxlIGNoYW5nZS4KKyAgICAgICAgQ292ZXJlZCBieSBhbGwgZXhpc3Rp
bmcgdGVzdHMuIE5ldyBBUEkgdGVzdHMgY3JlYXRkZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0
ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAg
ICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxCb2R5U2l6ZSk6Cisg
ICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
T01DYWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXRXaXRoUmVz
cG9uc2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlRW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjppc29sYXRl
ZFJlc3BvbnNlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Y29weVJl
c3BvbnNlQm9keSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SURzS2V5aWRzKToKKyAgICAgICAgKFdlYkNvcmU6
OnNhbml0aXplS2V5aWRzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmtleUlkc01hdGNoKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhS2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6bmV4dCk6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Ojpjb25zdW1lRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpib2R5
QXNGb3JtRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OnRha2UpOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlD
b25zdW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzVGV4dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRh
QnlDaHVuayk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YSk6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdo
bGlnaHQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdl
RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
aWFsaXphdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlQYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleURhdGEpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmg6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2Vk
UHV0SW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRS
ZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudCk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQ
cmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGll
bnQpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToK
KyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExv
YWRlclVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlGaWxlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNzcy9DU1NGb250
RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6bG9h
ZCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZWRpdGlu
Zy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNlZEF0dGFjaG1l
bnRJbmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcv
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0
b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRT
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmRE
YXRhRm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvbklu
V2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkRG
b3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQpOgorICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252
ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxlV3JhcHBlckZv
clVSTCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAgICAqIGVkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVw
bGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJh
Y3RNYXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3VwV2l0
aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKiBlZGl0
aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmltYWdlSW5X
ZWJBcmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBs
YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2Rl
RGF0YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50Ojpj
YWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6
bWFpblJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdl
bnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURh
dGEpOgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdo
dCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50
KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNs
aWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFu
aWZlc3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3lu
Y2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2
ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSk6Cisg
ICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBsb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSFRN
TFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVl
dDo6c2hlZXRUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hl
ZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkIGNvbnN0KToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3
UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNv
dXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5j
b2RlZERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnJlc291cmNlQnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0Zv
bnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0eWxlU2hl
ZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25p
dG9yQ29jb2EuaDoKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tl
ZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZCk6CisgICAgICAgICog
cGFnZS9FZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6dXNlclN0eWxlU2hlZXQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvUGFn
ZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlh
bGl6ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVD
U1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjphZGRJbWFn
ZVRvUmVzb3VyY2VzKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmg6CisgICAgICAg
ICogcGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YVJlYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVi
b2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFy
ZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZv
cm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBh
c3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg6
CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNFbXB0
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzQ29udGlndW91cyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0ciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hh
cmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0ZjhCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21l
bnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6RGF0YVNlZ21lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpL
ZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3Jl
Ojpjb252ZXJ0VElGRlRvUE5HKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2spOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L1NoYXJlZEJ1ZmZlckNvY29hLm1tOgorICAgICAgICAoLVtXZWJDb3JlU2hhcmVkQnVmZmVyRGF0
YSBpbml0V2l0aERhdGFTZWdtZW50OnBvc2l0aW9uOnNpemU6XSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OktleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGli
L0tleWVkRW5jb2RlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2xp
Yjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVy
R2xpYi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJv
bVJlYWRpbmdGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnQ6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb2RlbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpNb2RlbCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1v
ZGVsOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmRlY29kZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cmVhZFVJbnQzMik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVUludDE2KToKKyAg
ICAgICAgKFdlYkNvcmU6OmlzV09GRik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V09GRlRv
U2ZudCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0U2luZkRhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VKU09OVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1
ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpk
aWRQcm92aWRlUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VE
ZWNvZGVyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpz
ZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNv
dXJjZU1lZGlhTG9hZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVmZmVyR2V0Qnl0ZXNB
dFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpJbWFnZURlY29k
ZXJDRyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlIGNv
bnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxh
dGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVu
Y29kZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1hcmt1cFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJD
b3JlOjpJbml0RGF0YTo6SW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L1BERkRvY3VtZW50SW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudElt
YWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
TWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbzo6Z2V0SXRhbGljQ29ycmVjdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoSW5mbzo6bWF0aEl0YWxpY3NDb3Jy
ZWN0aW9uSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R2x5cGhBc3Nl
bWJseTo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRTaXplVmFyaWFudHMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6Z2V0QXNzZW1ibHlQ
YXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aFZhcmlhbnRzOjpt
YXRoR2x5cGhDb25zdHJ1Y3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
Ok1BVEhUYWJsZTo6bWF0aENvbnN0YW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVu
VHlwZTo6TUFUSFRhYmxlOjptYXRoR2x5cGhJbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhWYXJpYW50cyBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpUYWJsZUJhc2U6OmlzVmFsaWRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRh
YmxlQmFzZTo6dmFsaWRhdGVQdHIpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxl
QmFzZTo6dmFsaWRhdGVPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OlRhYmxlV2l0aENvdmVyYWdlOjpnZXRDb3ZlcmFnZUluZGV4IGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZW5hbWVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OnJlbmFtZUFuZEFjdGl2
YXRlRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVZlcnRpY2FsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U3Vic3RpdHV0
aW9uU3ViVGFibGU6OmNvdmVyYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpMb29rdXBUYWJsZTo6Z2V0U3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpPcGVuVHlwZTo6TG9va3VwTGlzdDo6bG9va3VwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpGZWF0dXJlVGFibGU6OmdldEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZlYXR1cmUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmaW5kRmVhdHVyZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TGFuZ1N5c1RhYmxlOjpmZWF0dXJlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRUYWJsZTo6ZGVmYXVsdExh
bmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OnNj
cmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6ZGVm
YXVsdFNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlz
dDo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdT
VUJUYWJsZTo6c2NyaXB0TGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpmZWF0dXJlTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6R1NVQlRhYmxlOjpsb29rdXBMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpHU1VCVGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkdTVUJUYWJsZTo6Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6bG9hZEhtdHhUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpP
cGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlw
ZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6c2V0Q3VzdG9tRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpjdXN0b21EYXRhIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1h
Z2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxh
dGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJv
YXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2Fy
ZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1Nh
ZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJ
dGVtUHJvdmlkZXJSZWdpc3RyYXRpb25MaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpmaWxlV3JhcHBlcik6CisgICAgICAg
IChXZWJDb3JlOjpyZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRXcml0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3Jp
dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRJdGVtKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRh
Ojphc1NoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNl
OnJlY2VpdmVkRGF0YTpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxl
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxl
OjpkaWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpw
cm9jZXNzQ29udGVudCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25s
b2FkRmlsZUlmRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFs
SW1hZ2VGaWxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxIRHJvcENv
bnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckZldGNoOjpwcm9jZXNzUmVzcG9uc2UpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUpOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vz
c29yTGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJGdW5jKToKKyAgICAg
ICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVuRnVuYyk6CisKIDIwMjEtMTItMDYgIEFudHRpIEtvaXZpc3RvICA8YW50dGlA
YXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0ludGVncmF0aW9uXSBVc2UgZW5kIGJpdHMgaW4g
dGV4dCBib3ggaXRlcmF0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzE3OTQ3NWY3ZGZkMDhmMTQ4ZDAyNTg3ZTQw
Y2ZkNTliMDFhYThkYS4uZDBhZjE1Y2Y5MzdiNzcyNjI3OTIyNjFlY2MwOTAyZDQzZmJiMTliOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzMjAgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJk
ICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcK
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBT
aGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVz
LgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNw
cDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHA6
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHA6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oOgorICAgICAgICAqIEdQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50Lmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Q
aW5nTG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHA6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJl
bG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9O
ZXR3b3JrRGF0YVRhc2tDdXJsLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtEYXRhVGFza0N1cmwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUHJvdmlkZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5jcHA6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oOgorICAgICAgICAq
IFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHA6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVt
b3J5Lmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29h
Lm1tOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdl
QnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNw
cDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBTaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNw
cDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoKKyAgICAgICAg
KiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SUF0dGFjaG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlz
dFN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0
b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgICog
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9D
bGlwYm9hcmQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW06CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2Uu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5t
bToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUVkaXRvckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50
TWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcDoKKworMjAy
MS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVj
dWxhdGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZl
TG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
OjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJV
UkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmll
d0xvYWRlckNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGln
dW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBp
bW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1l
ZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpm
ZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVT
dG9yYWdlOjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpD
YWNoZTo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVuY29k
ZUFzU3RvcmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNr
U291cDo6ZGlkUmVhZERhdGFVUkwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAg
ICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpT
aGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVk
QnVmZmVyQ29weTo6YnVmZmVyKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVm
ZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAg
ICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdlYkFy
Y2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpkYXRh
KToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjb2Rl
UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29u
c3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIg
Y29uc3QpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAq
IFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVT
aGFyZWRCdWZmZXIpOgorICAgICAgICAoSVBDOjplbmNvZGVUeXBlc0FuZERhdGEpOgorICAgICAg
ICAoSVBDOjpkZWNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRl
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVy
Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6Cisg
ICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVk
L3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3Jl
YXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNo
bWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAo
QVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgor
ICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJn
ZXQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVy
Zm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKyAgICAgICAgKGFsbFBhc3RlYm9h
cmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rp
b25TaGVldEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAg
IChBUEk6OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9y
UmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dL
V2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVn
YXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQ
YWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExv
YWREYXRhUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxp
bmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xp
cGJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0Ns
aWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNv
bnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06Cisg
ICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxs
c2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKwogMjAyMS0xMi0wNSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3Nd
IEFkZCB0aGUgZW5jb2RpbmcvZGVjb2RpbmcgZm9yIEZpbHRlciBhbmQgRmlsdGVyRWZmZWN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvQ2hhbmdlTG9nCmluZGV4IGQ3NzZlODJkZjEzMmNhZjY1Mjc5M2E3OWEwMDgzYWQ2NTU5
ZGMyNjUuLjM3NzdmMmE1NmJjOGU2MDRlOTQ1MWU4YmQxMmUyNWI0M2EzNTE2NzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNz
ZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2
NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0
byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5
cGVzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oOgorCiAyMDIxLTEx
LTEyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHNvcnQt
WGNvZGUtcHJvamVjdC1maWxlIGlkZW1wb3RlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpp
bmRleCA3NmFhNmFhZjg0ZGViMDgyZTRjODQzMjI0OTMzODBkODMzZGU5MmQxLi4yMDU4NDUzNDQ5
ODQ5NTc3YzU1MDExY2Q1OWNlODgzYmViZDllNmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAg
ICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRC
dWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW06CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06
CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAg
ICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1
b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgx
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9N
L0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NSFRNTEltYWdlRWxlbWVudCBk
YXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgor
ICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0YV0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAoLVtXZWJIVE1M
UmVwcmVzZW50YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZW5jb2RlV2l0aENv
ZGVyOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAgICAgICgtW1dlYlJl
c291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIxLTEyLTAyICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gSG9vayB1cCBuYXZpZ2F0
b3IuZ3B1LnJlcXVlc3RBZGFwdGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAw
MmU5NDZiYzFmYjBiMzU2YmIxNWFiODM2MGU4NjE0NTU0NzI0N2NjLi5hNmQ3YWZkMDBmY2RiN2Jh
OTkxMzU5ZDcyMjNlYWI3YjQ0NGJiNTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjAgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRh
cjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIg
dG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAg
ICogTWVtb3J5U3RyZWFtLmNwcDoKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAg
KiBXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAg
ICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorICAgICAgICAqIFdl
YktpdERMTC5jcHA6CisgICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAgICAgICAqIFdlYlJl
c291cmNlLmg6CisKKzIwMjEtMTItMDEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6
Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OmxvYWREYXRhKToKKworMjAy
MS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERp
c3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25l
IGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNZW1vcnlTdHJl
YW0uY3BwOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0pOgorICAgICAgICAo
TWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogTWVtb3J5U3RyZWFtLmg6
CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJBcmNoaXZlOjpkYXRhKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViRGF0YVNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJEYXRhU291cmNlOjpkYXRhKToKKyAgICAgICAgKiBXZWJSZXNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAq
IFdlYlJlc291cmNlLmg6CisKIDIwMjEtMTItMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBbV0syXSBNYWtlIFdlYiBMb2NrIEFQSSB3b3JrIGFjcm9zcyBtdWx0
aXBsZSBXZWJQcm9jZXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1
ZmZlci5oCmluZGV4IGVhY2NhMmMyMzNhOGE2OTM3MTU5MDgwN2RmZDM2NzViMDYxNTk0MjguLmI0
NjkzZjkxYzYwN2Q4ZDA3NDU5NDY0NmU4ZGM0MzcyZTliYzk5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMTI5LDcgKzEyOSw3IEBAIHB1Ymxp
YzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlD
cmVhdGUoQXJyYXlCdWZmZXImKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRy
PEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxl
bmd0aCk7CiAKLSAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJyYXk6OnRyeUNy
ZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIu
CisgICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmlu
aXRpYWxpemVkIGFuZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZl
ci4KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVV
bmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlD
cmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDMzNTRiNTJhNTBj
YmIxODlmZGZhZWI3ZDgyNDgzYmUwYzQxYzNkNGUuLmRhMzM2ZTZmNWIxNjk0ZTM3NDc2OTBjNDNk
MmI1M2YzNTE4YzA5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAKQEAgLTMzLDcg
KzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogCi12
b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lkIENsaXBib2FyZEltYWdlUmVhZGVy
OjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJl
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXIuaAppbmRleCAyYjYyNjI4NDE5YjA5Y2JiNjk1NTIxNWIwZDVkN2Q3M2MwYjM3
NDRkLi42ZTIyMDQ4Y2Y1ZmVhOWFhNjJkYWRmNDViMWYzNWM0Y2UwZDdkNmUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJl
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEltYWdlUmVhZGVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgQ2xpcGJvYXJkSW1hZ2VSZWFkZXIgOiBQYXN0ZWJvYXJk
RmlsZVJlYWRlciB7CiAgICAgQ2xpcGJvYXJkSW1hZ2VSZWFkZXIoRG9jdW1lbnQqIGRvY3VtZW50
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KIAogICAgIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmKSBjb25z
dCBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29u
c3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJl
YWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBSZWZQdHI8RG9jdW1lbnQ+
IG1fZG9jdW1lbnQ7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IGQwNzQ2ZGEyZGEyMDllMDIzMjVi
NWZhMjE0ZGJlZTY0YmY5YzkwNzguLmVmZjEwYjViNjVmZDgxYWQ5YmEzMmY4MGIzZjJjZjJmOGU5
OGYxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
Y3BwCkBAIC0yMTYsOCArMjE2LDggQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291
cmNlOjppbnZva2VDb21wbGV0aW9uSGFuZGxlcigpCiAgICAgICAgIGF1dG8mIGRhdGEgPSBpdGVt
VHlwZUxvYWRlci0+ZGF0YSgpOwogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxT
dHJpbmc+KGRhdGEpICYmICEhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKSkKICAgICAgICAgICAgIGN1
c3RvbURhdGEud3JpdGVTdHJpbmcodHlwZSwgc3RkOjpnZXQ8U3RyaW5nPihkYXRhKSk7Ci0gICAg
ICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRh
dGEpKQotICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwgc3RkOjpnZXQ8UmVm
PFNoYXJlZEJ1ZmZlcj4+KGRhdGEpLmNvcHlSZWYoKSk7CisgICAgICAgIGVsc2UgaWYgKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihkYXRhKSkKKyAg
ICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIHN0ZDo6Z2V0PFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4oZGF0YSkuY29weVJlZigpKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMjY1LDkgKzI2NSw5IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNv
dXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiB7CiAgICAg
aWYgKG1fdHlwZSA9PSAidGV4dC9odG1sIl9zKSB7CiAgICAgICAgIFN0cmluZyBtYXJrdXBUb1Nh
bml0aXplOwotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVm
ZmVyPj4obV9kYXRhKSkgewotICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVm
PFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Ci0gICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0g
U3RyaW5nOjpmcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAg
ICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
KG1fZGF0YSkpIHsKKyAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKKyAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRp
emUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpn
ZXQ8U3RyaW5nPihtX2RhdGEpOwogCkBAIC0yNzgsOSArMjc4LDkgQEAgdm9pZCBDbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVE
YXRhSWZOZWUKICAgICB9CiAKICAgICBpZiAobV90eXBlID09ICJpbWFnZS9wbmciX3MpIHsKLSAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZTsKLSAgICAgICAgaWYg
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpCi0gICAg
ICAgICAgICBidWZmZXJUb1Nhbml0aXplID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1f
ZGF0YSkucHRyKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZm
ZXJUb1Nhbml0aXplOworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpCisgICAgICAgICAgICBidWZmZXJUb1Nhbml0
aXplID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihtX2RhdGEpLnB0cigp
OwogICAgICAgICBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9kYXRh
KSkKICAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSB1dGY4QnVmZmVyKHN0ZDo6Z2V0PFN0
cmluZz4obV9kYXRhKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuaAppbmRleCAyY2MyYzhlMWE1NGUxOGQ3MzQ5NWM1MzBjZDc3ZDU0Zjk5YTUyOWE3Li4z
N2M4MjVlMjM1YThhOGI3ZTQ0ZTQwZmIwYzJkNzcyNDQwN2E3NTg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNz
IERPTVByb21pc2U7CiBjbGFzcyBGaWxlUmVhZGVyTG9hZGVyOwogY2xhc3MgUGFzdGVib2FyZEN1
c3RvbURhdGE7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ2xpcGJvYXJkSXRl
bUJpbmRpbmdzRGF0YVNvdXJjZSA6IHB1YmxpYyBDbGlwYm9hcmRJdGVtRGF0YVNvdXJjZSB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7CiAKLSAgICB1c2luZyBCdWZmZXJP
clN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1
c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj47CiAgICAgY2xhc3MgQ2xpcGJvYXJkSXRlbVR5cGVMb2FkZXIgOiBwdWJs
aWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCwgcHVibGljIFJlZkNvdW50ZWQ8Q2xpcGJvYXJkSXRl
bVR5cGVMb2FkZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBSZWY8Q2xpcGJvYXJk
SXRlbVR5cGVMb2FkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHR5cGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJ
bWFnZVJlYWRlcklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhhZjMwN2Ez
YTQ0MTAwLi4yNzRlMDM4ZDQxODcwMTYxZTRlZWI4MGMxMmFiYmE4NzFmOWQ0YTY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0zNCwxMCArMzQsMTAgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFk
QnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBp
bWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6
YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRv
cHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRv
IG5zRGF0YSA9IFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCiAgICAgICAg
ICAgICBtX3Jlc3VsdCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50LmdldCgpLCBWZWN0b3IgeyBz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obnNEYXRhLmJ5dGVzKSwgbnNEYXRhLmxlbmd0aCB9
LCBtX21pbWVUeXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJN
YWMubW0KaW5kZXggYjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZi4uMzgy
MWIwMzcxODAyODIzZDY5YTgzMGEzMTBkYTM0NzA4ZDYzMzA3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVy
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9D
bGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMzMsMTAgKzMzLDEwIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3Zv
aWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlm
IChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9w
dE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBp
bml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KV0pOwogICAgICAgICBpZiAoYXV0byBjZ0ltYWdlID0gW2ltYWdlIENHSW1hZ2VGb3JQcm9wb3Nl
ZFJlY3Q6bmlsIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0pIHsKICAgICAgICAgICAgIGF1dG8gcmVw
cmVzZW50YXRpb24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhD
R0ltYWdlOmNnSW1hZ2VdKTsKICAgICAgICAgICAgIE5TRGF0YSogbnNEYXRhID0gW3JlcHJlc2Vu
dGF0aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBw
cm9wZXJ0aWVzOkB7IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNw
cAppbmRleCBlNmNjMWFhZTc4M2E1MjA5NGY2NTQ5OWJiOTBkZDdmMDA3MWQ0MjRjLi5mMDVjMjMz
MDdiYzVhMGU1ODJkZGNkODYwZDViYjFhMWIzMDkzMjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgRE9NQ2FjaGU6
OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzaXplX3QgcmVjb3JkUG9zaXRp
b24gPSB0YXNrSGFuZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVjdGlvblJlY29yZChyZXF1ZXN0Lmdl
dCgpLCByZXNwb25zZSwgbnVsbHB0cikpOwogCi0gICAgICAgICAgICByZXNwb25zZS5jb25zdW1l
Qm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwg
cmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCByZXNwb25zZSA9
IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAg
IHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1v
dmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRhc2tIYW5kbGVyLT5pc0RvbmUoKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTksOSArMjk5LDkgQEAgdm9pZCBET01DYWNoZTo6
YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYgcHIKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoYXV0byog
Y2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YS0+
YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAg
ICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJv
ZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgICAg
ICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVz
cG9uc2UsIGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuZmV0Y2gpOwogICAg
IH0KQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRh
KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9N
Q2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJl
c3BvbnNlQm9keS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5y
ZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygp
OwogICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBX
VEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJj
ZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9
IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxl
KFdURk1vdmUocmVzdWx0KSk7CkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0
KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVBy
b21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAg
ICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9u
c2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3Bv
bnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1h
a2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsK
KyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2Ug
PSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGlu
Z0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1
bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7
CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21p
c2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0zODMsOSArMzgzLDkgQEAgdm9pZCBET01D
YWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9u
c2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNo
dW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5k
KGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBw
ZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwg
V1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHsgV1RGTW92ZShkYXRhKSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9u
c2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9u
c2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygp
IH0pOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIz
ODNhMDc4ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uYzBmODAzMmIwNDUyYzM3ZWU0Y2FmYmNhZmQ3
OWYwOWQyMTQ2MzMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZUVuZ2luZS5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCBSZXNwb25zZUJvZHkgaXNvbGF0ZWRS
ZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogICAgIHJldHVybiBXVEY6OnN3
aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25z
ZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgpOwogICAgIH0s
IFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7Ci0g
ICAgICAgIHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5
UmVmKCk7IC8vIFNoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQg
YXMtaXMuCiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkg
ewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NE
TS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKaW5k
ZXggMjg1MGRiYTFlM2JmYTExZjQ4OWI0NDQwMzUxM2Q1MWFlMWJlYWQzYS4uOWQxYmM2NzRmYzgy
NmNiNmQxNmQwMjUxMGNmODQwMTBhZGNiZDc3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAtMTM1LDE3ICsxMzUsMTcgQEAgYm9vbCBDRE06
OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSkgY29u
c3QKICAgICByZXR1cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3VwcG9ydGVkSW5pdERhdGFU
eXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IENETTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gQ0RNOjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgcmV0dXJuIElu
aXREYXRhUmVnaXN0cnk6OnNoYXJlZCgpLnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBp
bml0RGF0YSk7CiB9CiAKLWJvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK2Jvb2wgQ0RN
OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0
ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBT
aGFyZWRCdWZmZXImIHJlc3BvbnNlKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENE
TTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25z
ZSkKIHsKICAgICBpZiAoIW1fcHJpdmF0ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAppbmRleCBkOGE0YjNhZjEy
ZjFhNzkyM2Q4ODcwNWQ1Yjk1ODFkMzZmMTAyNzBjLi5kN2IxZDUzZDA0OTFmNzI3NzliNTk0YjJk
ODNjMDliODNiY2YyMDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgQ0RNSW5zdGFuY2U7CiBjbGFzcyBDRE1Q
cml2YXRlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xh
c3MgQ0RNIDogcHVibGljIFJlZkNvdW50ZWQ8Q0RNPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENE
TT4sIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgpAQCAtNzMs
MTAgKzczLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdDsK
ICAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBib29sIHN1cHBv
cnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRC
dWZmZXImKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwor
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBz
YW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oCmluZGV4IDIxZTUy
ZjRiNzE0ZmI5MWY2N2NmYzM5NjEzOWMxNjUyNWJmYjdiOWIuLjQxMGVkMmZiNjQyNzU2MmNlOWJk
OGVkYTRkOTFhODZiYTk4Y2FhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaApAQCAtMzYsMTQgKzM2LDE0IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENETUluc3RhbmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNQ2xpZW50IDogcHVibGljIENh
bk1ha2VXZWFrUHRyPENETUNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkNETUNsaWVu
dCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCBjZG1DbGllbnRBdHRlbXB0VG9SZXN1
bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjZG1DbGllbnRV
bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxT
aGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0
ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJl
Z2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERh
dGFSZWdpc3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQxYTY3MDc0NDBm
MmQ1Ni4uNmY4ODhlMTc4NThkZGE2ZDk0NzFlYzFmNmVmNWQwNjZkZjBlNDk5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRh
UmVnaXN0cnkuY3BwCkBAIC01NCwxMyArNTQsMTMgQEAgbmFtZXNwYWNlIHsKICAgICBjb25zdCB1
aW50MzJfdCBrS2V5SWRzTWF4S2V5SWRTaXplSW5CeXRlcyA9IDUxMjsKIH0KIAotc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlk
cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyAxLiBGb3JtYXQKICAg
ICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3Ry
eS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkp
IH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAg
ICBpZiAoIXZhbHVlKQpAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAog
ICAgIGlmICgha2lkc0FycmF5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwogICAgIGZvciAoYXV0byYgdmFsdWUgOiAqa2lkc0Fy
cmF5KSB7CiAgICAgICAgIGF1dG8ga2V5SUQgPSB2YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAg
aWYgKCFrZXlJRCkKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWQKICAg
ICByZXR1cm4ga2V5SURzOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyAxLiBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5n
aXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMu
aHRtbCNmb3JtYXQKQEAgLTEwNCwxNCArMTA0LDE0IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBhdXRv
IG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBraWRzQXJyYXkgPSBK
U09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRvJiBidWZmZXIgOiBrZXlJREJ1ZmZl
ci52YWx1ZSgpKQotICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2Rl
VG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgICAgIGtpZHNB
cnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKICAgICBvYmplY3QtPnNldEFycmF5
KCJraWRzIiwgV1RGTW92ZShraWRzQXJyYXkpKTsKIAogICAgIENTdHJpbmcganNvbkRhdGEgPSBv
YmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CiB9CiAKLXN0ZDo6b3B0
aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNI
ZWFkZXJCb3g+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YVJl
Z2lzdHJ5OjpleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNTSCBCb3gg
Rm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3Jt
YXQtcmVnaXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAgLTE1MSw5ICsx
NTEsOSBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlv
blN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaQogICAgIHJldHVybiBwc3NoQm94ZXM7CiB9
CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdp
c3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJl
Z2lzdHJ5OjpleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVj
dG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwogCiAgICAgYXV0byBwc3No
Qm94ZXMgPSBleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoYnVmZmVyKTsKICAgICBpZiAoIXBzc2hC
b3hlcykKQEAgLTE4NSw3ICsxODUsNyBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNvbgogICAgIHJl
dHVybiBrZXlJRHM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6
OnNhbml0aXplQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1J
RCBhbmQgUFNTSCBCb3ggRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5
cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0
ZW0KQEAgLTE5NSw3ICsxOTUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lz
dHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJu
IGJ1ZmZlci5jb3B5KCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZVdlYk0oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplV2ViTShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgLy8gQ2hlY2sgaWYgdGhlIGJ1ZmZlciBpcyBhIHZhbGlkIFdlYk0g
aW5pdERhdGEuCiAgICAgLy8gVGhlIFdlYk0gaW5pdERhdGEgaXMgdGhlIENvbnRlbnRFbmNLZXlJ
RCwgc28gc2hvdWxkIGJlIGxlc3MgdGhhbiBrV2ViTU1heENvbnRlbnRFbmNLZXlJRFNpemUuCkBA
IC0yMDUsMTAgKzIwNSwxMCBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVX
ZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBidWZmZXIuY29weSgp
OwogfQogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBl
eHRyYWN0S2V5SURzV2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5
SURzV2ViTShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVkQnVmZmVyID0gc2FuaXRpemVXZWJNKGJ1ZmZlcik7CisgICAgVmVjdG9yPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdlYk0oYnVmZmVyKTsKICAgICBp
ZiAoIXNhbml0aXplZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAt
MjMzLDcgKzIzMyw3IEBAIEluaXREYXRhUmVnaXN0cnk6OkluaXREYXRhUmVnaXN0cnkoKQogCiBJ
bml0RGF0YVJlZ2lzdHJ5Ojp+SW5pdERhdGFSZWdpc3RyeSgpID0gZGVmYXVsdDsKIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXRE
YXRhVHlwZSk7CiAgICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUu
c2FuaXRpemVJbml0RGF0YSkKQEAgLTI0MSw3ICsyNDEsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYQogICAgIHJldHVybiBpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKGJ1ZmZlcik7CiB9
CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdp
c3RyeTo6ZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyhjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3R5cGVzLmZpbmQoaW5pdERhdGFUeXBlKTsKICAg
ICBpZiAoaXRlciA9PSBtX3R5cGVzLmVuZCgpIHx8ICFpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXRE
YXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9J
bml0RGF0YVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0luaXREYXRhUmVnaXN0cnkuaAppbmRleCBjZDEzODdhNmJkMDM4ZmYzNGUyY2ZiNzVmNDQzZGU3
ZDk0MDMyMWIwLi43N2Q2MDRiMDhiYjdmN2UzOGJjY2IzNTQ1YjM0YzhiMTM0MzU1ZWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuaApAQCAtMzgsMTkgKzM4LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEluaXREYXRh
UmVnaXN0cnkgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbml0RGF0YVJl
Z2lzdHJ5JiBzaGFyZWQoKTsKICAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8SW5pdERh
dGFSZWdpc3RyeT47CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
PiBleHRyYWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hh
cmVkQnVmZmVyJik7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXpl
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAg
IHN0cnVjdCBJbml0RGF0YVR5cGVDYWxsYmFja3MgewotICAgICAgICB1c2luZyBTYW5pdGl6ZUlu
aXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8U2hhcmVkQnVmZmVyPihjb25zdCBTaGFy
ZWRCdWZmZXImKT47Ci0gICAgICAgIHVzaW5nIEV4dHJhY3RLZXlJRHNDYWxsYmFjayA9IEZ1bmN0
aW9uPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4oY29uc3QgU2hhcmVk
QnVmZmVyJik+OworICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5j
dGlvbjxSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpPjsKKyAgICAgICAgdXNpbmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0gRnVuY3Rp
b248c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4oY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKIAogICAgICAgICBTYW5pdGl6ZUluaXREYXRh
Q2FsbGJhY2sgc2FuaXRpemVJbml0RGF0YTsKICAgICAgICAgRXh0cmFjdEtleUlEc0NhbGxiYWNr
IGV4dHJhY3RLZXlJRHM7CkBAIC02MSw5ICs2MSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3QgQXRvbVN0cmluZyYga2V5aWRzTmFtZSgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5n
JiB3ZWJtTmFtZSgpOwogCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBz
c2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+
Pj4gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+Pj4gZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
OworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVDZW5j
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogcHJpdmF0ZToKICAgICBJbml0RGF0
YVJlZ2lzdHJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggOGJmYjFjZTcwMWEyZjVhNjliNWI1
MTk5MWFhODYzMmViYjg5MjVmOS4uMTQ3NzZjMjAxNTFiZmVmZTM4MDc5YTMzNzMwYzg4NjYyNjhi
YTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgTWVkaWFL
ZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBCdWZmCiAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNr
U291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwg
aW5pdERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS5kYXRhKCksIGluaXREYXRh
Lmxlbmd0aCgpKSwgaW5pdERhdGFUeXBlLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRl
bnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewogICAgICAgICAvLyAx
MC4xLiBJZiB0aGUgaW5pdCBkYXRhIGlzIG5vdCB2YWxpZCBmb3IgaW5pdERhdGFUeXBlLCByZWpl
Y3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIC8vIDEw
LjIuIExldCBzYW5pdGl6ZWQgaW5pdCBkYXRhIGJlIGEgdmFsaWRhdGVkIGFuZCBzYW5pdGl6ZWQg
dmVyc2lvbiBvZiBpbml0IGRhdGEuCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0
aXplZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0YShpbml0RGF0
YVR5cGUsIGluaXREYXRhKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IHNhbml0aXplZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0YShp
bml0RGF0YVR5cGUsIGluaXREYXRhKTsKIAogICAgICAgICAvLyAxMC4zLiBJZiB0aGUgcHJlY2Vk
aW5nIHN0ZXAgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBl
RXJyb3IuCiAgICAgICAgIGlmICghc2FuaXRpemVkSW5pdERhdGEpIHsKQEAgLTIyMyw3ICsyMjMs
NyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgICAgICAgICAgbV9sYXRlc3REZWNyeXB0
VGltZSA9IDA7CiAgICAgICAgIH0KIAotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVxdWVz
dExpY2Vuc2UobV9zZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBzYW5pdGl6ZWRJbml0RGF0YS5y
ZWxlYXNlTm9uTnVsbCgpLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKFJlZjxTaGFyZWRCdWZmZXI+
JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFs
aXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRh
YmxlIHsKKyAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlcXVlc3RMaWNlbnNlKG1fc2Vzc2lv
blR5cGUsIGluaXREYXRhVHlwZSwgc2FuaXRpemVkSW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwg
W3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9
IFdURk1vdmUoaWRlbnRpZmllcildIChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9u
LCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewog
ICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAg
LTQyMiw3ICs0MjIsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZl
clNvdXJjZSYgcmVzcG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAgIC8vIDYuIFJ1biB0
aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgogICAgIHF1ZXVlVGFza0tlZXBpbmdPYmpl
Y3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHdlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH0sIHJlc3BvbnNlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzcG9u
c2UuZGF0YSgpLCByZXNwb25zZS5sZW5ndGgoKSksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
LCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAg
IC8vIDYuMS4gTGV0IHNhbml0aXplZCByZXNwb25zZSBiZSBhIHZhbGlkYXRlZCBhbmQvb3Igc2Fu
aXRpemVkIHZlcnNpb24gb2YgcmVzcG9uc2UgY29weS4KLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVkUmVzcG9uc2UgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZVJlc3Bv
bnNlKHJlc3BvbnNlKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNh
bml0aXplZFJlc3BvbnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVSZXNwb25zZShyZXNw
b25zZSk7CiAKICAgICAgICAgLy8gNi4yLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCBv
ciBpZiBzYW5pdGl6ZWQgcmVzcG9uc2UgaXMgZW1wdHksIHJlamVjdCBwcm9taXNlIHdpdGggYSBu
ZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFzYW5pdGl6ZWRSZXNwb25zZSB8
fCBzYW5pdGl6ZWRSZXNwb25zZS0+aXNFbXB0eSgpKSB7CkBAIC02MDEsNyArNjAxLDcgQEAgdm9p
ZCBNZWRpYUtleVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2Up
CiAgICAgICAgIC8vIDQuMy4gTGV0IG1lc3NhZ2UgdHlwZSBiZSBudWxsLgogCiAgICAgICAgIC8v
IDQuNC4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAg
ICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQsIG1fc2Vz
c2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlk
ZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlT
dGF0dXNWZWN0b3ImJiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIG1l
c3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJs
ZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShtX3Nlc3Np
b25JZCwgbV9zZXNzaW9uVHlwZSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChDRE1JbnN0YW5jZVNl
c3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtleXMsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1Zh
bHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNjQ5LDcgKzY0OSw3IEBAIHZvaWQgTWVkaWFLZXlT
ZXNzaW9uOjpyZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIC8vIDUu
IFJldHVybiBwcm9taXNlLgogfQogCi12b2lkIE1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3Nh
Z2UoTWVkaWFLZXlNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBt
ZXNzYWdlKQordm9pZCBNZWRpYUtleVNlc3Npb246OmVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVz
c2FnZVR5cGUgbWVzc2FnZVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG1lc3Nh
Z2UpCiB7CiAgICAgLy8gNi40LjEgUXVldWUgYSAibWVzc2FnZSIgRXZlbnQKICAgICAvLyBodHRw
czovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNxdWV1ZS1tZXNzYWdlCkBAIC03MTYs
NyArNzE2LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKENETUlu
c3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYgaW4KICAgICAgICAgfSk7CiB9CiAKLXZv
aWQgTWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSBtZXNzYWdlVHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBNZWRpYUtleVNlc3Npb246OnNl
bmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewogICAgIGVucXVldWVNZXNzYWdlKG1lc3NhZ2VUeXBlLCBt
ZXNzYWdlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDNkOTZmODgwMmU3NDc4NDFjNGVmZGE4MWRj
Yjk0MWVhNmU0YTc1ZTQuLjM2NWFjZTVjMDk1ZTdkYzBjNTcxZTc2Y2NmMmMwN2FhZmM2MmJhYTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVNlc3Npb24uaApAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBDRE07CiBjbGFzcyBEZWZl
cnJlZFByb21pc2U7CiBjbGFzcyBNZWRpYUtleVN0YXR1c01hcDsKIGNsYXNzIE1lZGlhS2V5czsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VQcm94eTsKIApAQCAtODcs
MjAgKzg3LDIwIEBAIHB1YmxpYzoKICAgICB1c2luZyBDbG9zZWRQcm9taXNlID0gRE9NUHJvbWlz
ZVByb3h5PElETFVuZGVmaW5lZD47CiAgICAgQ2xvc2VkUHJvbWlzZSYgY2xvc2VkKCkgeyByZXR1
cm4gbV9jbG9zZWRQcm9taXNlLmdldCgpOyB9CiAKLSAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWly
PFJlZjxTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+JiBzdGF0dXNlcygpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdHVzZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiYgc3RhdHVzZXMoKSBjb25zdCB7
IHJldHVybiBtX3N0YXR1c2VzOyB9CiAKICAgICB1bnNpZ25lZCBpbnRlcm5hbEluc3RhbmNlU2Vz
c2lvbk9iamVjdFJlZkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnN0YW5jZVNlc3Npb24tPnJl
ZkNvdW50KCk7IH0KIAogcHJpdmF0ZToKICAgICBNZWRpYUtleVNlc3Npb24oRG9jdW1lbnQmLCBX
ZWFrUHRyPE1lZGlhS2V5cz4mJiwgTWVkaWFLZXlTZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5j
dGl2ZUlkZW50aWZpZXIsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0YW5jZVNlc3Npb24+JiYpOwot
ICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZSwgY29uc3QgU2hhcmVk
QnVmZmVyJik7CisgICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCB1cGRhdGVFeHBpcmF0aW9u
KGRvdWJsZSk7CiAgICAgdm9pZCBzZXNzaW9uQ2xvc2VkKCk7CiAgICAgU3RyaW5nIG1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKIAogICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbkNs
aWVudAogICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50
OjpLZXlTdGF0dXNWZWN0b3ImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZW5kTWVzc2FnZShDRE1N
ZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lk
IHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBtZXNzYWdlKSBmaW5hbDsKICAgICB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5n
JikgZmluYWw7CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgZmluYWw7CiAKQEAg
LTE0MCwxMCArMTQwLDEwIEBAIHByaXZhdGU6CiAgICAgTWVkaWFLZXlTZXNzaW9uVHlwZSBtX3Nl
c3Npb25UeXBlOwogICAgIFJlZjxDRE0+IG1faW1wbGVtZW50YXRpb247CiAgICAgUmVmPENETUlu
c3RhbmNlU2Vzc2lvbj4gbV9pbnN0YW5jZVNlc3Npb247Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRC
dWZmZXI+PiBtX3JlY29yZE9mS2V5VXNhZ2U7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4gbV9yZWNvcmRPZktleVVzYWdlOwogICAgIGRvdWJsZSBtX2ZpcnN0RGVjcnlw
dFRpbWUgeyAwIH07CiAgICAgZG91YmxlIG1fbGF0ZXN0RGVjcnlwdFRpbWUgeyAwIH07Ci0gICAg
VmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiBtX3N0
YXR1c2VzOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
LCBNZWRpYUtleVN0YXR1cz4+IG1fc3RhdHVzZXM7CiAKICAgICB1c2luZyBEaXNwbGF5Q2hhbmdl
ZE9ic2VydmVyID0gT2JzZXJ2ZXI8dm9pZChQbGF0Zm9ybURpc3BsYXlJRCk+OwogICAgIERpc3Bs
YXlDaGFuZ2VkT2JzZXJ2ZXIgbV9kaXNwbGF5Q2hhbmdlZE9ic2VydmVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVz
TWFwLmNwcAppbmRleCA3M2Y3NGU0ZjcwZmM5MmMyMmJmODU5YzAyMjhhMzRlYWVjNTc5N2EzLi4z
OThlOGFiMWI2NTZiNDQ1OTI3YmViNmJjNjkzZGQzOTlhNjg3YWM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVz
TWFwLmNwcApAQCAtNTYsMTIgKzU2LDEyIEBAIHVuc2lnbmVkIGxvbmcgTWVkaWFLZXlTdGF0dXNN
YXA6OnNpemUoKQogICAgIHJldHVybiBtX3Nlc3Npb24tPnN0YXR1c2VzKCkuc2l6ZSgpOwogfQog
Ci1zdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1
ZmZlclNvdXJjZSYgYikKK3N0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKIHsKICAgICBhdXRvIGxlbmd0
aCA9IGEuc2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAhPSBiLmxlbmd0aCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLmRhdGEoKSwg
Yi5kYXRhKCksIGxlbmd0aCk7CisgICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTdGF0
dXNNYXA6Omhhcyhjb25zdCBCdWZmZXJTb3VyY2UmIGtleUlkKQpAQCAtMTAzLDcgKzEwMyw3IEBA
IHN0ZDo6b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1l
ZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBhdXRvJiBwYWlyID0gc3RhdHVzZXNbbV9pbmRleCsrXTsKLSAgICBhdXRvIGJ1ZmZlciA9
IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXpl
KCkpOworICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CiAgICAgcmV0dXJu
IEtleVZhbHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4g
eyBSZWZQdHI8QXJyYXlCdWZmZXI+KFdURk1vdmUoYnVmZmVyKSksIHBhaXIuc2Vjb25kIH07CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTdGF0dXNNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTdGF0dXNNYXAuaAppbmRleCBjMjExMTEzYTJjNmRhYzc5NzkyNGE5OWQyZDJkZjk3
YzJlNjVmODUwLi42MGQ2MmFhZmY4MDc0ZGFkYTZlMzFhM2YyYjM3MGE2ZDZkMDFmNjE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3Rh
dHVzTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN0YXR1c01hcC5oCkBAIC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIE1lZGlhS2V5U2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1lZGlhS2V5U3RhdHVzTWFwIDogcHVibGljIFJl
ZkNvdW50ZWQ8TWVkaWFLZXlTdGF0dXNNYXA+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAppbmRleCA4M2IyNGFj
ZWFhNWIxMjk0YmI0ZWE0MzlmYjJkNWM0ZjZjY2Q0NzUzLi4zNjdmMzFkMTg2YjUxNjM5YTljNzQy
MTNmMGNmOGU2ZjJmOGQyNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgYm9vbCBNZWRp
YUtleXM6Omhhc09wZW5TZXNzaW9ucygpIGNvbnN0CiAgICAgICAgIH0pOwogfQogCi12b2lkIE1l
ZGlhS2V5czo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJp
bmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKK3ZvaWQgTWVk
aWFLZXlzOjp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkK
IHsKICAgICBmb3IgKGF1dG8mIGNkbUNsaWVudCA6IG1fY2RtQ2xpZW50cykKICAgICAgICAgY2Rt
Q2xpZW50LmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoaW5p
dERhdGFUeXBlLCBpbml0RGF0YS5jb3B5UmVmKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5kZXggN2I1OWEzYmM2ZDIyNTZmYzY1
NmYwOGNiZjI2ODkxODUxMDk4M2EyMi4uOTFhMWEwNzExNDMzYmUyNDdkZDJhODVjNWY0YWQwOTM4
YTA5YTdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5oCkBAIC04Niw3ICs4Niw3IEBAIHByb3RlY3RlZDoKICAgICBNZWRpYUtleXMo
RG9jdW1lbnQmLCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgYm9vbCBwZXJzaXN0ZW50
U3RhdGVBbGxvd2VkLCBjb25zdCBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mLCBSZWY8Q0RN
PiYmLCBSZWY8Q0RNSW5zdGFuY2U+JiYpOwogCiAgICAgLy8gQ0RNSW5zdGFuY2VDbGllbnQKLSAg
ICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5n
JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCB1bnJlcXVlc3RlZEluaXRp
YWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0
IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXI7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCAyZmRjNGMwMDIxZjZlMWZkZWM0
NWY4ZmFmNjA5MDZjMmJmODJlM2IxLi4wMDM5MzAyZjdkYzE2ZmZlY2ZjNDY1YzdkOGRhMjUyZjk4
ZGFmNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBA
IC0yMzUsNyArMjM1LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93
bmVyJiBvd25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5
Ojpjb25zdW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UpCiB7CiAgICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFC
b2R5KCkuYXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRo
RGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXIt
PmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29s
dmVXaXRoRGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRC
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwog
ICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1F
OiBJZiB0aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBv
dGhlciBibG9icy4KQEAgLTI3Miw3ICsyNzIsNyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9k
eTo6Ym9keUFzRm9ybURhdGEoKSBjb25zdAogICAgIGlmIChpc0Zvcm1EYXRhKCkpCiAgICAgICAg
IHJldHVybiAmY29uc3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAo
YXV0byogZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpKQotICAgICAgICByZXR1cm4gRm9ybURhdGE6
OmNyZWF0ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgIHJldHVybiBGb3Jt
RGF0YTo6Y3JlYXRlKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAt
Mjg0LDcgKzI4NCw3IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAg
ICAgICAgIGF1dG8gYnVmZmVyID0gbV9jb25zdW1lci50YWtlRGF0YSgpOwogICAgICAgICBpZiAo
IWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1
b3VzKCk7CiAgICAgfQogCiAgICAgaWYgKGlzQmxvYigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGZjYzIxNmEwMWNk
ZjY5ODY1MDg1ODc2NzVmMDlkOGI3OWZmNjJiM2IuLjIyMTNkNjIzMDNlZmUyYTFmNzI5ODI2MGY1
ODg2MGI3NzZmYjI2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgcmVz
b2x2ZVdpdGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNo
Qm9keUNvbnMKIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4oKQogewotICAgIG1fYnVm
ZmVyID0gbnVsbHB0cjsKKyAgICBtX2J1ZmZlci5yZXNldCgpOwogICAgIHJlc2V0Q29uc3VtZVBy
b21pc2UoKTsKICAgICBpZiAobV9zaW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFj
aygpOwpAQCAtMjY2LDE2ICsyNjYsMTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2
ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KIHsKICAg
ICBpZiAoc3RyZWFtKSB7CiAgICAgICAgIEFTU0VSVCghbV9zaW5rKTsKLSAgICAgICAgbV9zaW5r
ID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCB0eXBlID0gbV90
eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fc2lu
ayA9IFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCB0eXBlID0gbV90
eXBlLCBjb250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVq
ZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJl
dHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCks
IGNodW5rLT5zaXplKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29s
dmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRh
dGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChj
aHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0
eXBlLCBjb250ZW50VHlwZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7
CiAgICAgICAgIHJldHVybjsKQEAgLTMwNiw3ICszMDgsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1
bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5n
JiBjbwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6
Rm9ybURhdGE6IHsKICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBp
ZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwg
YnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUo
KSA6IDApKQorICAgICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250
ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAg
cHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAg
LTMyNCwxNiArMzI2LDIwIEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplKQogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShB
cnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBpZiAoIW1fYnVmZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9idWZm
ZXItPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSgp
Cit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9idWZmZXIpOworICAgIG1fYnVm
ZmVyLnJlc2V0KCk7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoZGF0YSkpOworfQorCitS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRh
KCkKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gbV9idWZmZXIudGFrZSgpOwogfQogCiBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0
Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKQEAgLTM0MSw5ICszNDcsNyBAQCBS
ZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVm
ZmVyKCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZShudWxscHRyLCAwKTsKIAotICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX2J1ZmZlci0+
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgcmV0
dXJuIGFycmF5QnVmZmVyOworICAgIHJldHVybiBtX2J1ZmZlci50YWtlKCktPnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxv
YihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAtMzUxLDkgKzM1NSw3IEBAIFJl
ZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBCbG9iOjpj
cmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50
VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2Uo
bV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci0+ZXh0cmFjdERhdGEo
KTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIFdURk1vdmUoZGF0YSksIG1fY29u
dGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgbV9idWZmZXIudGFr
ZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBlKTsKIH0KIAogU3RyaW5nIEZldGNoQm9k
eUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4ICszNjQsOCBAQCBTdHJpbmcgRmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRl
eHRGcm9tVVRGOChtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKLSAgICBtX2J1
ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIgPSBtX2J1ZmZlci50YWtlKCktPm1ha2VD
b250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZy
b21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIHRleHQ7
CiB9CiAKQEAgLTM4MywxMCArMzg1LDggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzZXRD
b25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3VyY2UoUmVmPEZl
dGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAgbV9zb3VyY2UgPSBXVEZNb3ZlKHNvdXJj
ZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVm
ZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAgICAgICAgbV9idWZmZXIgPSBudWxscHRy
OwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKG1f
YnVmZmVyLnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiB9CiAKIHZvaWQgRmV0Y2hC
b2R5Q29uc3VtZXI6OmxvYWRpbmdGYWlsZWQoY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKaW5k
ZXggMmIwNTZmMTI2NDNiYTk2N2ZlNDFhMDE1MTNhODliNzM2MjY0MmQ0Yy4uODcxZDJjMDg2MzMx
YTk4Mjk0YTE2NmE0YjQyZTMxODRlMDM3NzcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtNTAsMTAgKzUwLDEwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCk7CiAKICAg
ICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgY29uc3Qg
U2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KLSAg
ICB2b2lkIHNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSB7IG1fYnVmZmVyID0gV1RG
TW92ZShkYXRhKTsgfQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZvaWQgc2V0RGF0YShS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiB0YWtlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlRGF0
YSgpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwog
ICAgIFN0cmluZyB0YWtlQXNUZXh0KCk7CiAKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKIAog
ICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7
CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9jb25zdW1lUHJvbWlzZTsKICAgICBSZWZQ
dHI8UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IG1fc2luazsKICAgICBSZWZQdHI8
RmV0Y2hCb2R5U291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlci5jcHAKaW5kZXggZmM1NWNjN2Q4M2Q4YmMxMWYwODU0ZGMzY2ZkODUwOTdh
MzFmMTBmNi4uMDNmODliNjFjYTVmN2M3MTc2YjlkODhjZDEzNjYwZTg2YjdhMjU0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTEzNSw3ICsx
MzUsNyBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdG9wKCkKICAgICAgICAgbV9sb2FkZXItPmNhbmNl
bCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaExvYWRlcjo6c3RhcnRTdHJlYW1p
bmcoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoTG9hZGVyOjpzdGFydFN0
cmVhbWluZygpCiB7CiAgICAgQVNTRVJUKG1fY29uc3VtZXIpOwogICAgIGF1dG8gZmlyc3RDaHVu
ayA9IG1fY29uc3VtZXItPnRha2VEYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoTG9hZGVyLmgKaW5kZXggMmY5MGYwZWMzZmY5MDVhMjYyMzFjODRjNzJhN2ExODZjZDRi
ZmU4My4uNDYxMmQwZTBlM2E3ZWZlMzA2MDM5NmIwZDc1YTJmYTNiYzRlZGRhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApAQCAtMzksMTQgKzM5LDE0IEBA
IGNsYXNzIEZldGNoQm9keUNvbnN1bWVyOwogY2xhc3MgRmV0Y2hMb2FkZXJDbGllbnQ7CiBjbGFz
cyBGZXRjaFJlcXVlc3Q7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRmV0Y2hM
b2FkZXIgZmluYWwgOiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6CiAg
ICAgRmV0Y2hMb2FkZXIoRmV0Y2hMb2FkZXJDbGllbnQmLCBGZXRjaEJvZHlDb25zdW1lciopOwog
ICAgIFdFQkNPUkVfRVhQT1JUIH5GZXRjaExvYWRlcigpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gc3RhcnRTdHJlYW1pbmcoKTsKIAogICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIGNvbnN0IEZldGNoUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc3Rh
cnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEJsb2ImKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDRkZjg0MjZjNzE4YmEx
NmVjZjBhNDdlNzNlOTAwZDNmODQ4ZjY0ZjIuLmUzOGE4M2FkZTdkNmUwYWFmNzBjZWI5YzVhYThm
ZThhYjQ5NDNkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcApAQCAtNDAwLDcgKzQwMCw4IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxv
YWRlcjo6Y29uc3VtZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAg
ICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5k
YXRhKCksIGRhdGEtPnNpemUoKSB9OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgU3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7
CiB9CiAKQEAgLTUwMyw3ICs1MDQsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OmZlZWRTdHJlYW0o
KQogICAgIGNsb3NlU3RyZWFtKCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoUmVz
cG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiB7
CiAgICAgQVNTRVJUKG1fbG9hZGVyKTsKICAgICByZXR1cm4gbV9sb2FkZXItPnN0YXJ0U3RyZWFt
aW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmlu
ZGV4IDM0MjBjNmEzOGQzYzNmNmUyZmRiNjY3NWU4YTRkMTM2NWJmNWE1YmIuLmNmNzg2MzIzOWZk
OTQ2ZWUwZThkODhlYWVhNzJmZTk4OWVlZDMxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0xMzQsNyArMTM0LDcgQEAgcHJpdmF0ZToKIAog
ICAgICAgICB2b2lkIGNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFj
ayYmKTsKIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzdGFydFN0cmVhbWluZygpOwor
ICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsK
ICAgICAgICAgTm90aWZpY2F0aW9uQ2FsbGJhY2sgdGFrZU5vdGlmaWNhdGlvbkNhbGxiYWNrKCkg
eyByZXR1cm4gV1RGTW92ZShtX3Jlc3BvbnNlQ2FsbGJhY2spOyB9CiAgICAgICAgIENvbnN1bWVE
YXRhQnlDaHVua0NhbGxiYWNrIHRha2VDb25zdW1lRGF0YUNhbGxiYWNrKCkgeyByZXR1cm4gV1RG
TW92ZShtX2NvbnN1bWVEYXRhQ2FsbGJhY2spOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKaW5kZXggZGQxOWM4NzBhYTdkMjQ4NWY3ZTlj
YTg0OTJhODQyMTM1MmRkZDA0MS4uMWE2NmJmODE4MzIwZTk1NjA3ZDYxNWYxYTA4MmE4Mjc2ZWIy
YTM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0LmgKQEAgLTM4LDcgKzM4LDcgQEAgZW51bSBjbGFzcyBDcmVhdGVOZXdHcm91cEZvckhpZ2hs
aWdodCA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIEhpZ2hsaWdodFJlcXVlc3RPcmln
aW5hdGVkSW5BcHAgOiBib29sIHsgTm8sIFllcyB9OwogCiBzdHJ1Y3QgQXBwSGlnaGxpZ2h0IHsK
LSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBoaWdobGlnaHQ7CisgICAgUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGhpZ2hsaWdodDsKICAgICBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gdGV4dDsKICAgICBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBpc05ld0dyb3Vw
OwogICAgIEhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgcmVxdWVzdE9yaWdpbmF0ZWRJ
bkFwcDsKQEAgLTUyLDcgKzUyLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQXBw
SGlnaGxpZ2h0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVy
IDw8IHN0YXRpY19jYXN0PHNpemVfdD4oaGlnaGxpZ2h0LT5zaXplKCkpOwotICAgIGVuY29kZXIu
ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hsaWdodC0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUo
KSwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29k
ZXIgPDwgdGV4dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKaW5kZXggZTJkOWE2MWU0Mjc2NzZlYjdi
N2RhZWFiZmZhMzJkMDRhNDU3NmMwNi4uNWU4MGYwYzA3MmQ0OWEzZWY3OTY5NTkzMDJjNDQ1NmNk
MmFiZGU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCkBAIC00NCwxNSArNDQsMTYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjb25zdGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVy
ZSA9IDB4NDE0MTUwNDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1cmUgIChBKXBwbGUoQVApcGxp
Y2F0aW9uKEgpaWdobGlnaHRzKDIwMjEpCiAKLXN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGln
aHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7Ci0gICAgYXV0byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKKyAgICBhdXRvIGNvbnRp
Z3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIGRlY29kZXIg
PSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpvcHRpb25hbDxBcHBIaWdo
bGlnaHRSYW5nZURhdGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRhOwogICAgIHJldHVybiBk
YXRhOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OnRvU2hh
cmVkQnVmZmVyKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBBcHBIaWdobGln
aHRSYW5nZURhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBXVEY6OlBlcnNpc3Rl
bmNlOjpFbmNvZGVyIGVuY29kZXI7CiAgICAgZW5jb2RlciA8PCAqdGhpczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
LmgKaW5kZXggY2Y2MzgxYWNmYjBhNTIxMWI0MzUwOGI3YjUxN2Q2ZGIyZjZmYzc0My4uYjVkYWY2
MDI1Mzk4YTNmN2U2ZjFkMzdhYmVjZTg0NGQ0ZjFjNjU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKQEAg
LTMzLDEyICszMywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoQVBQX0hJ
R0hMSUdIVFMpCiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIEFwcEhpZ2hsaWdodFJhbmdlRGF0YSB7CiBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURh
dGE+IGNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgc3RydWN0IE5v
ZGVQYXRoQ29tcG9uZW50IHsKICAgICAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgICAgIFN0
cmluZyBub2RlTmFtZTsKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0
YT4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRvU2hhcmVkQnVm
ZmVyKCkgY29uc3Q7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHRvU2hhcmVkQnVm
ZmVyKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3Jh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3Rv
cmFnZS5jcHAKaW5kZXggZGMzOWEwZjBkMThmZmZjYTdkZmI0NjUyMTljZDYxMmE5ZjczOGY4Zi4u
ZTVkZTg0OTRmMzUwNDUzNTk0YjJmMmU4OGMzZGRhMzNmYTlhZjcwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5j
cHAKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnN0b3JlQXBw
SGlnaGxpZ2h0KFJlZjxTdGF0aWNSYW5nZT4mJiByYW5nZSkKICAgICBtX2RvY3VtZW50LT5wYWdl
KCktPmNocm9tZSgpLnN0b3JlQXBwSGlnaGxpZ2h0KFdURk1vdmUoaGlnaGxpZ2h0KSk7CiB9CiAK
LXZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBTY3JvbGxUb0hpZ2hsaWdodCBzY3JvbGwpCit2
b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIFNjcm9sbFRvSGlnaGxpZ2h0IHNj
cm9sbCkKIHsKICAgICBhdXRvIGFwcEhpZ2hsaWdodFJhbmdlRGF0YSA9IEFwcEhpZ2hsaWdodFJh
bmdlRGF0YTo6Y3JlYXRlKGJ1ZmZlcik7CiAgICAgaWYgKCFhcHBIaWdobGlnaHRSYW5nZURhdGEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRTdG9yYWdlLmgKaW5kZXggYjE1MmY3NmVkNDI0MDg5MmVhN2RlMjFlMmNiMDZkNDcyZDg3MzM2
MC4uZTI3NjYzM2I0ODRmODEwOTRhZGVjZTQ1ZjY0YWJiZWQxNzgxMjUwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2Uu
aApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKEFQUF9I
SUdITElHSFRTKQogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdGF0aWNSYW5nZTsKIGNsYXNzIEhpZ2hs
aWdodDsKIApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgfkFwcEhpZ2hsaWdodFN0b3Jh
Z2UoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcmVBcHBIaWdobGlnaHQoUmVmPFN0
YXRpY1JhbmdlPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmVBbmRTY3JvbGxU
b0FwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVmZmVyPiYmLCBTY3JvbGxUb0hpZ2hsaWdodCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFNjcm9sbFRvSGlnaGxpZ2h0KTsKICAgICB2b2lk
IHJlc3RvcmVVbnJlc3RvcmVkQXBwSGlnaGxpZ2h0cygpOwogICAgIE1vbm90b25pY1RpbWUgbGFz
dFJhbmdlU2VhcmNoVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUF0TGFzdFJhbmdlU2VhcmNo
OyB9CiAgICAgdm9pZCByZXNldExhc3RSYW5nZVNlYXJjaFRpbWUoKSB7IG1fdGltZUF0TGFzdFJh
bmdlU2VhcmNoID0gTW9ub3RvbmljVGltZTo6bm93KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggMGFmYjdlZTVjYzg3NDM1NmIzNWExNjgwMzIzMWE2MTM2NGMwOTg2
MS4uMjdjZDhlZWM1M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVjODc3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2ODYsNyBAQCBib29sIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleChJREJPYmplY3RTdG9yZUluZm8mIG9iamVj
dFN0b3JlSW5mbwogICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKCptX3NxbGl0ZURC
KTsKICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
a2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBh
dXRvIGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAg
ICAgaWYgKCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJp
YWxpemUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTExNzQsNyArMTE3NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFu
IG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9Owog
ICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXpl
SURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlh
bGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2
ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8g
c2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTM4Nyw3ICsx
Mzg3LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggaW4gYSBub24tdmVy
c2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkp
OworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0
aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJL
ZXlQYXRoIHRvIGNyZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAtMTQ2NCw3ICsxNDY0
LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJl
Y29yZChjb25zdCBJREJJbmRleEluZm8mIGluZm8KIHsKICAgICBoYXNSZWNvcmQgPSBmYWxzZTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4g
dGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBpbmRleCByZWNvcmQgaW4g
ZGF0YWJhc2UiX3MgfTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMgQEAgSURCRXJyb3IgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2NF90IG9iamVjdFN0b3Jl
SUQsIGkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNo
ZWNrZWRQdXRJbmRleFJlY29yZCAtICVzLCAlcyIsIGtleVZhbHVlLmxvZ2dpbmdTdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCBpbmRleEtleS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoaW5kZXhLZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGluZGV4S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRo
ZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJV
bmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNl
Il9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKKyAgICBhdXRvIHZhbHVlQnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYgKCF2YWx1ZUJ1ZmZlcikgewogICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhlIHZhbHVlIHRvIGJlIHN0b3Jl
ZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFi
YXNlIl9zIH07CkBAIC0xNjYxLDcgKzE2NjEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQog
ICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc2VlIGlmIGtl
eSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlv
biJfcyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9i
amVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJV
bmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVj
dCBzdG9yZSJfcyB9OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpkZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
LAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpS
ZWFkb25seSk7CiAgICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0aW9uKTsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7Cisg
ICAgYXV0byBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlm
ICgha2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJ
REJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlE
YXRhIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE5NjIsNyArMTk2
Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0
b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsK
KyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAg
aWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleSB0byBiZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVy
biBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRv
IGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTIxMjQsNyArMjEyNCw3IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgYXV0byBrZXkgPSBrZXlSYW5nZS5sb3dlcktl
eTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptaW5p
bXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURh
dGEoa2V5KTsKICAgICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93
ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjEzMyw3ICsyMTMzLDcgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBrZXkgPSBrZXlSYW5nZS51cHBlcktleTsKICAgICBp
ZiAoa2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptYXhpbXVtKCk7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGtleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsK
ICAgICBpZiAoIXVwcGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5
IGluIGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsyNDQzLDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleShpbnQ2
NF90IGluZGV4SUQKIAogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgpICYmIGtleS50eXBlKCkgIT0g
SW5kZXhlZERCOjpLZXlUeXBlOjpNYXggJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5
cGU6Ok1pbik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eSk7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2Vy
aWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQiKTsKICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkg
dG8gbG9vayB1cCBvbmUgaW5kZXggcmVjb3JkIl9zIH07CkBAIC0yNTA4LDE0ICsyNTA4LDE0IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQgPSAwOwogCiAgICAgYXV0byBs
b3dlcktleSA9IHJhbmdlLmxvd2VyS2V5LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6bWluaW11bSgp
IDogcmFuZ2UubG93ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShsb3dlcktleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewog
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxv
b2t1cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJV
bmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50
IG9wZXJhdGlvbiJfcyB9OwogICAgIH0KIAogICAgIGF1dG8gdXBwZXJLZXkgPSByYW5nZS51cHBl
cktleS5pc051bGwoKSA/IElEQktleURhdGE6Om1heGltdW0oKSA6IHJhbmdlLnVwcGVyS2V5Owot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0
YSh1cHBlcktleSk7CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
dXBwZXJLZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1
cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkN1cnNvci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5NjIzYmQ4ZGYwNmExMDg1OGNmMDMy
MWM0MzIwNi4uNDg2MTAzNGQzYTEyZGEwYzA5Y2ZlZGZlOWYyZWE2NWE2ODEwMDM1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1
cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNv
cjo6YmluZEFyZ3VtZW50cygpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVu
dExvd2VyS2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJy
ZW50TG93ZXJLZXkpOwogICAgIGlmIChtX3N0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRB
cmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJD
b3VsZCBub3QgY3JlYXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2VyIGtleSkiKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpy
ZXNldEFuZFJlYmluZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkoKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXkpOwogICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50
QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJS
T1IoIkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0ZW1lbnQgKGtleSkiKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDBhNDY5YmQwYmQxZjM4ZGNi
OTZiMzlkOGMzMDAwYWY3M2QxMmFiNTkuLmM5ZDZkYTZiZGQ5ZjkzOTUwMWY0ZjQyMzJiNGM3ODM3
ZDg0MGRhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBNZWRpYVJlY29yZGVyOjpzdGFydFJlY29yZGluZyhzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiB0aW1lU2xpYwogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmPEJsb2JF
dmVudD4gY3JlYXRlRGF0YUF2YWlsYWJsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBkb3VibGUgdGltZUNvZGUpCitzdGF0aWMgaW5saW5lIFJlZjxCbG9iRXZlbnQ+IGNyZWF0
ZURhdGFBdmFpbGFibGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGRvdWJsZSB0aW1lQ29kZSkKIHsKICAgICBhdXRvIGJsb2IgPSBidWZmZXIgPyBCbG9iOjpj
cmVhdGUoY29udGV4dCwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCBtaW1lVHlwZSkgOiBCbG9iOjpj
cmVhdGUoY29udGV4dCk7CiAgICAgcmV0dXJuIEJsb2JFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5kYXRhYXZhaWxhYmxlRXZlbnQsIEJsb2JFdmVudDo6SW5pdCB7IHsgZmFsc2UsIGZhbHNlLCBm
YWxzZSB9LCBXVEZNb3ZlKGJsb2IpLCB0aW1lQ29kZSB9LCBCbG9iRXZlbnQ6OklzVHJ1c3RlZDo6
WWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlci5oCmluZGV4IDc3MTJiNDQ1MjgzNjdkOGMyNzI1MDJhZGJhYWNhYWY5Nzg4Y2Jk
YjAuLjFlOWI3NGFiMTdlMzEwOGRiNDIwOWI5YjRmMDIxNGRhMTFhYzZlMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaApA
QCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaEVycm9yKEV4Y2Vw
dGlvbiYmKTsKIAogICAgIGVudW0gY2xhc3MgVGFrZVByaXZhdGVSZWNvcmRlciB7IE5vLCBZZXMg
fTsKLSAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT47CisgICAgdXNp
bmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPjsKICAgICB2b2lk
IGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmLCBUYWtlUHJpdmF0ZVJlY29yZGVyKTsKIAog
ICAgIC8vIE1lZGlhU3RyZWFtOjpPYnNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAppbmRleCAzZjRjOWJjZDEzM2Fj
MjlmM2Y3ZGRlMTk5NDc4ZTM5MjU3ZDVlNjZiLi44NzRhYTdmMGIxOGYwZWU3NTg4MGJhNWY1ZWY2
N2Q0N2JmYzJiMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vz
c2lvbi9NZWRpYU1ldGFkYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIEFydHdvcmtJ
bWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25z
dCBOZXR3b3JrTAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIFNhbml0aXplIHRoZSBp
bWFnZSBieSBkZWNvZGluZyBpdCBpbnRvIGEgQml0bWFwSW1hZ2UuCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEo
KTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZSA9
IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBhdXRvIGJpdG1hcEltYWdlID0g
Qml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGJpdG1hcEltYWdlLT5zZXREYXRhKFdURk1vdmUo
YnVmZmVyVG9TYW5pdGl6ZSksIHRydWUpOwogICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VC
dWZmZXIuY3BwCmluZGV4IDJiM2NkZTM2MDgyNDcxYzExYzg3ZmNmNjFjYzgxY2MzNjBjMzlkOTAu
LmQzNzhhZmM2ZjhhMWI1N2EwMzAyZTJjODY4YjI0MGEyMDk3ZmU0YzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKQEAgLTUz
MCw3ICs1MzAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCgp
CiAgICAgLy8gaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL3RpcC9t
ZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLmh0bWwjc291cmNlYnVmZmVyLXNlZ21lbnQtcGFyc2Vy
LWxvb3AKICAgICAvLyBXaGVuIHRoZSBzZWdtZW50IHBhcnNlciBsb29wIGFsZ29yaXRobSBpcyBp
bnZva2VkLCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGFwcGVuZERhdGEgPSBXVEZNb3ZlKG1fcGVuZGluZ0FwcGVuZERhdGEpOworICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBhcHBlbmREYXRhID0gV1RGTW92ZShtX3BlbmRpbmdB
cHBlbmREYXRhKTsKICAgICAvLyAxLiBMb29wIFRvcDogSWYgdGhlIGlucHV0IGJ1ZmZlciBpcyBl
bXB0eSwgdGhlbiBqdW1wIHRvIHRoZSBuZWVkIG1vcmUgZGF0YSBzdGVwIGJlbG93LgogICAgIGlm
ICghYXBwZW5kRGF0YSB8fCAhYXBwZW5kRGF0YS0+c2l6ZSgpKSB7CiAgICAgICAgIHNvdXJjZUJ1
ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2NlZWRlZCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIu
aAppbmRleCA1MjBjMDc3NTY5NmEyZjBlMmU3MzAwNzM1ZThjOTc3NDk1ZjFhNjE0Li5kNGM4NTc5
YzBiYmQ0NDNhNTEyZmE5ZjY4YzQyN2VjMDQ4ODVkMGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKQEAgLTIyMiw3ICsyMjIsNyBA
QCBwcml2YXRlOgogCiAgICAgV1RGOjpPYnNlcnZlcjx2b2lkKigpPiBtX29wYXF1ZVJvb3RQcm92
aWRlcjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGVuZGluZ0FwcGVuZERhdGE7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fcGVuZGluZ0FwcGVuZERhdGE7CiAg
ICAgVGltZXIgbV9hcHBlbmRCdWZmZXJUaW1lcjsKIAogICAgIFJlZlB0cjxWaWRlb1RyYWNrTGlz
dD4gbV92aWRlb1RyYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAppbmRl
eCBmZWIxYjhmZmZiN2I5NGM5ZTdlYjBiZTQ4YWQzNWRkNzA3OWM3MGJiLi5jYzVhODY1NzMwNTY1
N2QwYTk3MDU2NjFlNGJiNDljZTBiODQwNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyOjpyZWFkeVRvU2VuZCgpCiAgICAgbV9pc1JlYWR5VG9TZW5kID0gdHJ1ZTsKIAogICAgIGZv
ciAoYXV0byYgbWVzc2FnZSA6IG1fcGVuZGluZ01lc3NhZ2VzKQotICAgICAgICBtX2Nvbm5lY3Rp
b24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5i
dWZmZXItPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29ubmVj
dGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdl
LmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgp
KTsKICAgICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAgICAgaWYgKG1faXNQZW5kaW5n
Q2xvc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAppbmRleCBmNTgyN2RmOTM3OTQ5
M2QyODEyNzAxNzdjY2ZiY2EwNTUxNTMyMzFmLi43Mzk0MmE4MzU5MzFhOWQyODRjNmE0NTFiYjhk
YmZiNTc2NWNhZGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKQEAgLTM5LDcg
KzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUlRDRGF0YUNoYW5uZWxIYW5kbGVy
Q2xpZW50OwogY2xhc3MgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbjsKIGNs
YXNzIFJUQ0Vycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyIGZpbmFsIDogcHVi
bGljIFJUQ0RhdGFDaGFubmVsSGFuZGxlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAt
NzMsNyArNzMsNyBAQCBwcml2YXRlOgogCiAgICAgc3RydWN0IE1lc3NhZ2UgewogICAgICAgICBi
b29sIGlzUmF3IHsgZmFsc2UgfTsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwor
ICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIH07CiAgICAg
VmVjdG9yPE1lc3NhZ2U+IG1fcGVuZGluZ01lc3NhZ2VzOwogICAgIGJvb2wgbV9pc1BlbmRpbmdD
bG9zZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyLmNwcAppbmRleCAzZTExMDU0MDAzNTNkZTU2MGYyNDkzOGE5YjIwOGVmMzZmNjgw
M2M0Li4zY2VlZDBhMDExZTdiNTQ2ZmFkZGY0OGJiZGEyMTFkZmRkNTI0YzU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTk3LDgg
Kzk3LDggQEAgdm9pZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudChSVENE
YXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQmIGNsaWVudCwKICAgICBtX2NvbnRleHRJZGVudGlmaWVy
ID0gY29udGV4dElkZW50aWZpZXI7CiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZl
cmVkTWVzc2FnZXMpIHsKLSAgICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRC
dWZmZXI+JiBkYXRhKSB7Ci0gICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0
YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBbJl0o
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CisgICAgICAgICAgICBjbGllbnQu
ZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5z
aXplKCkpOwogICAgICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBjbGll
bnQuZGlkUmVjZWl2ZVN0cmluZ0RhdGEodGV4dCk7CiAgICAgICAgIH0sIFsmXShTdGF0ZUNoYW5n
ZSBzdGF0ZUNoYW5nZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIuaAppbmRleCA0MWY5NTI4MjFlNjIwMDkzZjhlZWZlMzJjNWVkNGFlMGY1ZTU0MTk3
Li4xMWJkNDVkZTkxNTU3NzlmZmM5ZWZiMDNlOTU1MjhmMDVlNjRkNzQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaApAQCAtODIsNyArODIsNyBA
QCBwcml2YXRlOgogICAgICAgICBSVENEYXRhQ2hhbm5lbFN0YXRlIHN0YXRlOwogICAgICAgICBz
dGQ6Om9wdGlvbmFsPHdlYnJ0Yzo6UlRDRXJyb3I+IGVycm9yOwogICAgIH07Ci0gICAgdXNpbmcg
TWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxTdGF0ZUNoYW5nZSwgU3RyaW5nLCBSZWY8U2hhcmVkQnVm
ZmVyPj47CisgICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxTdGF0ZUNoYW5nZSwgU3Ry
aW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAgIHVzaW5nIFBlbmRpbmdNZXNz
YWdlcyA9IFZlY3RvcjxNZXNzYWdlPjsKICAgICB2b2lkIHN0b3JlTWVzc2FnZShQZW5kaW5nTWVz
c2FnZXMmLCBjb25zdCB3ZWJydGM6OkRhdGFCdWZmZXImKTsKICAgICB2b2lkIHByb2Nlc3NNZXNz
YWdlKGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDMw
OWMwMjY0M2Y1YTdhZTlmZWMwOGExNGViMjEyMjQwOWIxZjg5ZTAuLjYzZjFjM2NiZTFlYTgxY2Zi
ZjQ1NDY0NjMyMGNkZjdmYWNmNTljMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsx
MTYsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVy
bCkKIAogICAgIG1fc291cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAg
ICBtX2RhdGEucmVzZXQoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYg
KG1fcmVzb3VyY2UpIHsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7
CiAKICAgICBtX3Jlc291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5h
ZGRDbGllbnQoKnRoaXMpOwpAQCAtMTgwLDggKzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiBzCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFT
U0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NF
UlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBt
X2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1l
bnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xv
YQogICAgIH07CiAKICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewot
ICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAg
ICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0y
MDQsNyArMjAzLDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2Rh
dGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJl
bGVhc2VOb25OdWxsKCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgp
KTsKKyAgICBtX21vZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEudGFrZSgpLT5tYWtlQ29udGln
dW91cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAg
ICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQuaAppbmRleCAwNWExY2RhYTNlMTQ4NzdhMGFlNDY1YjYzNDlhYTViYmIxYWYyYzgyLi5jZTAw
OWQ0ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFlNmU4NTgwM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAg
LTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogCiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0
YTsKICAgICBSZWZQdHI8TW9kZWw+IG1fbW9kZWw7CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlz
ZT4gbV9yZWFkeVByb21pc2U7CiAgICAgYm9vbCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQv
U2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCmluZGV4IDNlODJhYzIy
MTY3OTZjOWVkYjc2MGExOWVkN2FjZTFmNDJjZDM3NzcuLjEzMDNlYzRkMjU2OGE2NmY4N2Q3ZmVi
MjBiZjJiMDMzOTIzMmMzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9h
ZGVyVVNELm1tCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1VSTD4gd3Jp
dGVUb1RlbXBvcmFyeUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGF1dG8g
ZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiTW9kZWxGaWxlIiwgZmls
ZUhhbmRsZSwgIi51c2R6Iik7CiAgICAgQVNTRVJUKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQo
ZmlsZUhhbmRsZSkpOwogCi0gICAgc2l6ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKGZpbGVIYW5kbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJj
ZS5kYXRhKCktPnNpemUoKSk7CisgICAgc2l6ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKGZpbGVIYW5kbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgQVNTRVJUX1VOVVNF
RChieXRlQ291bnQsIGJ5dGVDb3VudCA9PSBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAg
ICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKaW5kZXggMGI4OThm
NmFkYjU3ZWIyNWRjNDkzN2Q4MWZmNWQxNGQ1Mjk3NmM4NC4uZDUxNzNmYmY4YjQwMzQxYzVjZjhk
OGE0ZjU1ZWVhYzhmZjgzOGEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFtOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xh
c3MgUmVhZGFibGVTdHJlYW1TaW5rIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1T
aW5rPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAppbmRleCBjNDUyYzgzZmJkNWNlODk1YmRkMDMx
YWNmMTQ2OGY3ODY1MDYyMmQ3Li5iOGI3Nzg1ZjkxZDA2OGMyYTQ2Y2ViMWQ2NTk3NThmY2Y4YjY5
ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJT
b3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1
ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAgLTUxLDEzICs1MSwxNSBAQCBwdWJsaWM6CiAgICAgICAg
IGlmIChtX3NjcmlwdEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKIAorICAgICAgICBpZiAoIW1fY29udGlndW91c0J1ZmZlciAmJiAoIW1fY29udGFp
bnNPbmx5QVNDSUkgfHwgKm1fY29udGFpbnNPbmx5QVNDSUkpKQorICAgICAgICAgICAgbV9jb250
aWd1b3VzQnVmZmVyID0gbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCk7
CiAgICAgICAgIGlmICghbV9jb250YWluc09ubHlBU0NJSSkgewotICAgICAgICAgICAgbV9jb250
YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX3NjcmlwdEJ1ZmZlci5idWZm
ZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9jb250aWd1
b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAg
ICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgICAgIG1fc2Ny
aXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9zY3Jp
cHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUo
KSk7CisgICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRl
SGFzaEFuZE1hc2tUb3A4Qml0cyhtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRC
dWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCptX2NvbnRh
aW5zT25seUFTQ0lJKQotICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3JpcHRCdWZmZXIuYnVmZmVy
KCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigp
LT5zaXplKCkpIH07CisgICAgICAgICAgICByZXR1cm4geyBtX2NvbnRpZ3VvdXNCdWZmZXItPmRh
dGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXpl
KCkpIH07CiAKICAgICAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0cmluZykgewogICAgICAgICAg
ICAgbV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBtX3NjcmlwdEJ1ZmZlci50b1N0cmluZygpOwpAQCAt
ODEsNiArODMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgbV9z
Y3JpcHRCdWZmZXIgPSBzY3JpcHRCdWZmZXI7CisgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9
IG51bGxwdHI7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtOTEsNiArOTQsNyBAQCBwcml2YXRlOgog
ICAgIH0KIAogICAgIFNjcmlwdEJ1ZmZlciBtX3NjcmlwdEJ1ZmZlcjsKKyAgICBtdXRhYmxlIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udGlndW91c0J1ZmZlcjsKICAgICBtdXRhYmxlIHVuc2ln
bmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAgICBtdXRhYmxlIFN0cmluZyBtX2NhY2hlZFNjcmlw
dFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9jb250YWluc09ubHlB
U0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgKaW5kZXggN2U0OWE5ZTczMjI2YjY1Y2MyOGJmNTk0ODEzYjBmODNiMjY5ZDIyYi4u
ZWYzN2YxZDBjYTQ2MmJiOWI3YzliNmE1NWQxOGViYjRjMTE4MWE3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTU1LDcg
KzU1LDcgQEAgY2xhc3MgRGV0YWNoZWRPZmZzY3JlZW5DYW52YXM7CiBjbGFzcyBJREJWYWx1ZTsK
IGNsYXNzIE1lc3NhZ2VQb3J0OwogY2xhc3MgSW1hZ2VCaXRtYXBCYWNraW5nOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgU2Vy
aWFsaXphdGlvblJldHVybkNvZGU7CiAKIGVudW0gY2xhc3MgU2VyaWFsaXphdGlvbkVycm9yTW9k
ZSB7IE5vblRocm93aW5nLCBUaHJvd2luZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVlNWYzNzgyZmJiMjMxMjNiMmRkM2E1N2ExNzI4Li4x
MDhlNmM4NzY3ZDBkMmZkYWNiZTY1MDRlYmM1MDcwZTg4MmJlNjQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3MgQ1NTRm9udFNlbGVjdG9yOworY2xhc3Mg
U2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGb250OwogY2xhc3MgRm9udENy
ZWF0aW9uQ29udGV4dDsKQEAgLTQyLDcgKzQzLDYgQEAgY2xhc3MgRm9udERlc2NyaXB0aW9uOwog
c3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZh
cmlhbnRTZXR0aW5nczsKIGNsYXNzIFNWR0ZvbnRGYWNlRWxlbWVudDsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsK
IHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggMWRlYWM0ZjQxY2Y0OWYxZjg4MmRjY2Vm
ZDQ4Y2Y2YTk3MzJmM2VkOS4uYzQyZWMwNTFmZTExZWJhMTRmODEzMzU5ZDhkMTdhMmMyODE2NjRk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTQwMiw3ICs0MDIsNyBAQCBz
dHJ1Y3QgUGFzdGVib2FyZEZpbGVUeXBlUmVhZGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFk
ZXIgewogICAgICAgICB0eXBlcy5hZGQoRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGZpbGVuYW1l
KSk7CiAgICAgfQogCi0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikKICAgICB7CiAgICAgICAgIHR5cGVzLmFkZCh0eXBlKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAKaW5kZXggMTcyNGNmMGU1MGJhYTViOWIyNDEzMDQ4MWVlNzI0Y2I3ODIw
N2FhNC4uYzVlOWUyNmIzNzJhZTY4M2YxODY4ZTkyMGM0NWVkNzBlZGY1NTQ3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDEzMyw3ICs0MTMzLDcgQEAgUHJvbWlzZWRBdHRhY2ht
ZW50SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYgZWxlbWVudCkK
ICAgICByZXR1cm4geyBhdHRhY2htZW50LT51bmlxdWVJZGVudGlmaWVyKCksIFdURk1vdmUoYWRk
aXRpb25hbFR5cGVzKSwgV1RGTW92ZShhZGRpdGlvbmFsRGF0YSkgfTsKIH0KIAotdm9pZCBFZGl0
b3I6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVO
YW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIEVkaXRvcjo6cmVnaXN0ZXJBdHRh
Y2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMt
PmNsaWVudCgpKQogICAgICAgICBjbGllbnQtPnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIo
aWRlbnRpZmllciwgY29udGVudFR5cGUsIHByZWZlcnJlZEZpbGVOYW1lLCBXVEZNb3ZlKGRhdGEp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDAxZmUwYjVlMDQ0ZWY2M2YyNmE3MWI0NzJl
Zjk4YjExYzIyOGI5MWMuLjFkMDcxNmM1YjkzYzhiYjdhZDczZjQxNzRjYTgwNDU5MDVmOTE5MTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNTcsOSArNTcsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOwogY2xhc3MgQXJjaGl2
ZVJlc291cmNlOwotY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgQ29tcG9zaXRlRWRpdENvbW1h
bmQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21VbmRvU3RlcDsKK2NsYXNzIERh
dGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBjbGFzcyBFZGl0Q29t
bWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBAIC03NCw3ICs3NSw3IEBAIGNs
YXNzIEtpbGxSaW5nOwogY2xhc3MgUGFzdGVib2FyZDsKIGNsYXNzIFBhc3RlYm9hcmRXcml0ZXJE
YXRhOwogY2xhc3MgUmVuZGVyTGF5ZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udDsKIGNsYXNzIFNwZWxsQ2hlY2tSZXF1ZXN0
OwogY2xhc3MgU3BlbGxDaGVja2VyOwpAQCAtNTYzLDcgKzU2NCw3IEBAIHB1YmxpYzoKIAogI2lm
IEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNl
cnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVy
cmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZmlsZURhdGEpOworICAgIHZvaWQgcmVn
aXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBmaWxlRGF0YSk7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRz
KFZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpOwogICAgIHZvaWQgcmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVu
dElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29u
dGVudFJlYWRlci5oCmluZGV4IDA4YWExMjQyNjYyMGY3Njk1M2E3OWIzNGVkZTVmNmRmMDUyN2Iw
MTUuLjk1N2I0ZmQ0YTU1N2ZjODFjZDMwNjllZWFjYjg5NDg4YTk0N2I3Y2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCkBAIC03MiwxNiArNzIsMTYgQEAgcHJp
dmF0ZToKICAgICBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25T
aXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUgPSB7IH0pIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUg
PSB7IH0pIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVk
UHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkVVJMKGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFBsYWlu
VGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCi0gICAgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAg
ICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJU
RihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50
YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOworICAg
IGJvb2wgcmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwor
ICAgIGJvb2wgcmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAg
IGJvb2wgcmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9v
bCByZWFkRGF0YUJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2Vu
dGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CiAjZW5kaWYKIH07CiAKQEAgLTk5LDE2ICs5OSwx
NiBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVhZEZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIFByZXNl
bnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgYm9vbCByZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHJlYWRIVE1MKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCByZWFkSW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
Ci0gICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJl
YWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25T
aXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZFdlYkFy
Y2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJU
RkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZl
cihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
UHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRp
ZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVi
b2FyZEZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVi
b2FyZEZpbGVSZWFkZXIuY3BwCmluZGV4IDU0OWViN2QyZTRjMDc1NDhlNGE4YzllYTI0ZWMyMGU0
ZjIxYmZhMjUuLjExN2RiYTY4ZWRiMGJkNGI2YzMwZTA5NDg1ZDlkMGMwZjI5YzM4MjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJl
YWRlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFk
ZXI6OnJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAgIGZpbGVzLmFwcGVu
ZChGaWxlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgZmlsZW5hbWUpKTsKIH0KIAotdm9pZCBXZWJD
b3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQg
V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogewogICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwg
QmxvYjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSwgdHlwZSks
IGZpbGVuYW1lKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3Jl
UGFzdGVib2FyZEZpbGVSZWFkZXIuaAppbmRleCA1YzUyOWRkN2M4ZWNjMDAwNDhmY2I0ZDE1ODE0
NjM1YjI0ZDkwYmI3Li45ZDgxNjA1ZjE5OTI5OGYxOWMwZWQ2OTk1ZmUzYmQ3NzgzMDM0ZmZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJl
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxl
UmVhZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3RydWN0IFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJl
YWRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICB+V2ViQ29yZVBhc3RlYm9h
cmRGaWxlUmVhZGVyKCk7CiAKICAgICB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBm
aW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRC
dWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dD4gY29udGV4dDsKICAgICBWZWN0b3I8UmVmPEZpbGU+PiBmaWxlczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBkNDhlMTFj
OTZiNzgwOGY4ODM1NGIzYjA3NDdlZWIxZjFlMzdlM2YzLi4wNzgyNDgzNjJhYTA1NGRjM2FiMDAw
MDQ1MTcxODQxOThhNTgwZjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9I
VE1MQ29udmVydGVyLm1tCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6
Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBOU1VSTCAqdXJsLCBC
T09MCiAgICAgICAgIGlmIChhdXRvIHJlc291cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2Uo
dXJsKSkgewogICAgICAgICAgICAgYXV0byYgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUo
KTsKICAgICAgICAgICAgIGlmICghdXNlUGxhY2Vob2xkZXIgfHwgbWltZVR5cGUgIT0gInRleHQv
aHRtbCIpIHsKLSAgICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVX
cmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEo
KS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0g
YWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50
czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CiAgICAgICAgICAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1
Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHVybCwgbWltZVR5cGUpXTsKICAgICAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgICAgIG5vdEZvdW5kID0gWUVTOwpAQCAtMjMwMCw3ICsyMzAw
LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChE
b2N1bWVudExvYWRlciogZGF0YVNvdXJjZSwgTlMKIAogICAgIGlmIChkYXRhU291cmNlKSB7CiAg
ICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IGRhdGFTb3VyY2Ut
PnN1YnJlc291cmNlKFVSTCkpIHsKLSAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMo
W1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3Vy
Y2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgYXV0byB3cmFw
cGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhD
b250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXSk7CiAgICAgICAgICAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSByZXNvdXJjZS0+cmVz
cG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpOwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSB8
fCAhW2ZpbGVuYW1lIGxlbmd0aF0pCiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBzdWdnZXN0
ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShyZXNvdXJjZS0+dXJsKCksIHJlc291cmNlLT5taW1lVHlw
ZSgpKTsKQEAgLTIzMjIsOCArMjMyMiw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBl
cj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiBzdGF0
aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yRWxlbWVudChIVE1MSW1h
Z2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2Ug
PSBlbGVtZW50LmNhY2hlZEltYWdlKCkpIHsKLSAgICAgICAgaWYgKFNoYXJlZEJ1ZmZlciogc2hh
cmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhD
b250ZW50czpzaGFyZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGlm
IChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVz
b3VyY2VCdWZmZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBl
ciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICB9CiAKICAgICBhdXRvKiBy
ZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggNmFhM2NkNTRlODJi
OTliMzE5NDI3YmVlMzRjOGM0NGI2NzllMjI3OS4uNzZiMWEwMDlkZTQzMGZhM2I1NGQ5YTE1ZTY3
OGNkODNmMzE0NWZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9X
ZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgYm9v
bCBzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0YShjb25zdCBGcmFtZSYgZnJhbWUpCiAK
ICNlbmRpZgogCi1zdGF0aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9y
SW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUHJlc2VudGF0
aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQorc3RhdGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVh
dGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkb2N1
bWVudCwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFNpemUpCiB7CiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNo
bWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsK
QEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0
YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSByZXNvdXJjZUVudHJ5LT52YWx1
ZTsKLSAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7IGF0dGFjaG1lbnQu
dW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPmRhdGEo
KSB9KTsKKyAgICAgICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7IGF0dGFjaG1l
bnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPmRh
dGEoKS5tYWtlQ29udGlndW91cygpIH0pOwogICAgIH0KIAogICAgIGlmICghc2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhLmlzRW1wdHkoKSkKQEAgLTMzMiw3ICszMzIsNyBAQCBzdGF0aWMgdm9pZCBy
ZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZy
YWdtZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1l
ID0gIm1lZGlhIl9zOwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7
IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZh
bHVlLT5kYXRhKCksIGltYWdlIH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5h
cHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291
cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIGltYWdlIH0pOwogICAgIH0KIAog
ICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTE9iamVjdEVsZW1l
bnQ+KGZyYWdtZW50KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VS
aWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQm
IGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAiZmls
ZSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3Zl
KG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0
YSgpLCBvYmplY3QgfSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7
IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZh
bHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0IH0pOwogICAgIH0KIAogICAgIGZv
ciAoYXV0byYgaW5mbyA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvKSB7CkBAIC00MjgsNyArNDI4
LDcgQEAgc3RydWN0IE1hcmt1cEFuZEFyY2hpdmUgewogICAgIFJlZjxBcmNoaXZlPiBhcmNoaXZl
OwogfTsKIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1h
cmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248
Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQorc3RhdGljIHN0ZDo6
b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3Qg
U3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoVVJMKCksIGJ1ZmZlcik7CiAgICAgaWYgKCFhcmNoaXZl
KQpAQCAtNDQyLDcgKzQ0Miw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hp
dmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmCiAgICAgaWYgKCFj
YW5TaG93TUlNRVR5cGVBc0hUTUwodHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICByZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJl
c291cmNlLT5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBtYWlu
UmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07Cisg
ICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJj
ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCku
c2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5v
bk51bGwoKSB9OwogfQogCiBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUo
RnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bWVudCwgTWFya3VwQW5kQXJj
aGl2ZSYgbWFya3VwQW5kQXJjaGl2ZSwgTVNPTGlzdFF1aXJrcyBtc29MaXN0UXVpcmtzLCBjb25z
dCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRN
TCkKQEAgLTQ4MSw3ICs0ODEsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFy
Y2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgICAgICBp
ZiAoIXNob3VsZFJlcGxhY2VTdWJyZXNvdXJjZVVSTChzdWJmcmFtZVVSTCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1lQ29udGVudCA9
IHsgU3RyaW5nOjpmcm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwg
c3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLAorICAgICAgICBNYXJrdXBBbmRB
cmNoaXZlIHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9tVVRGOChzdWJmcmFtZU1haW5S
ZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3ViZnJhbWVNYWluUmVz
b3VyY2UtPmRhdGEoKS5zaXplKCkpLAogICAgICAgICAgICAgc3ViZnJhbWVNYWluUmVzb3VyY2Uu
cmVsZWFzZU5vbk51bGwoKSwgc3ViZnJhbWVBcmNoaXZlLmNvcHlSZWYoKSB9OwogICAgICAgICBh
dXRvIHN1YmZyYW1lTWFya3VwID0gc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShmcmFtZSwgZGVz
dGluYXRpb25Eb2N1bWVudCwgc3ViZnJhbWVDb250ZW50LCBNU09MaXN0UXVpcmtzOjpEaXNhYmxl
ZCwgY2FuU2hvd01JTUVUeXBlQXNIVE1MKTsKIApAQCAtNDk3LDcgKzQ5Nyw3IEBAIHN0YXRpYyBT
dHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBk
ZXN0aW5hdGlvbkRvY3VtCiAgICAgcmV0dXJuIHNhbml0aXplZE1hcmt1cEZvckZyYWdtZW50SW5E
b2N1bWVudChXVEZNb3ZlKGZyYWdtZW50KSwgKnN0YWdpbmdEb2N1bWVudCwgbXNvTGlzdFF1aXJr
cywgbWFya3VwQW5kQXJjaGl2ZS5tYXJrdXApOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6
OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVh
ZGVyOjpyZWFkV2ViQXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJh
bWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTMyLDcgKzUzMiw3IEBA
IGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6
cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRNYXJr
dXBSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTYxMiwxMiArNjEyLDEyIEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZEhUTUwo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuICFtYXJrdXAuaXNFbXB0eSgpOwogfQog
Ci1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQor
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFn
ZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
YXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxs
cHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFs
bG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9
IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAg
IGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYyNiwxMSArNjI2LDEx
IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVh
ZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6
OnJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZy
YW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIHN0cmluZyA9
IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIu
Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBh
dXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRo
UlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1l
bnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21l
bnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVu
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjM5LDEyICs2MzksMTIgQEAgYm9vbCBXZWJD
b250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJN
SU1FVHlwZUZvckltYWdlcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0
cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1
ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwor
ICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRv
Y3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZy
YWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJh
Z21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY1MywxMSArNjUzLDExIEBAIGJvb2wg
V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEo
KS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0g
YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpu
dWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3Vy
Y2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTY3Niw3ICs2NzYsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJl
YWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRh
dGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9u
U2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQogewogICAgIEFTU0VSVChmcmFtZS5kb2N1
bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwpAQCAtNzQ2
LDcgKzc0Niw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIHJldHVy
biBhdHRhY2htZW50OwogfQogCi1zdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9y
RGF0YShGcmFtZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVk
U2l6ZSkKK3N0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JEYXRhKEZyYW1lJiBm
cmFtZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkU2l6
ZSkKIHsKICAgICBSZWYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKICAgICBhdXRvIGF0
dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFj
aG1lbnRUYWcsIGRvY3VtZW50KTsKQEAgLTgzMyw3ICs4MzMsNyBAQCBib29sIFdlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZmZXIo
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBu
YW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdl
YkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlv
blNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAgICBpZiAoYnVmZmVyLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAppbmRleCA2MDQ4NmU3MWFkNTlmZWNjNzE1
ZmYwYTA5YjFjMzU1OGI3YjM0MmMyLi5kM2U5ODE5YmQ1MzFmODQ4NmEzMTdhYjlmOWVkODNhOTg4
NWJlMmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50
UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50
UmVhZGVyR3RrLmNwcApAQCAtNzEsNyArNzEsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJl
YWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRh
dGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9u
U2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQogewogICAgIEFTU0VSVChmcmFtZS5kb2N1
bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2IuaAppbmRleCA0NWQ5MzNlMTNjYTRkMjI1MWM1ZGVkODQ4YWE5ZTk4NzJjNzY3NDg5
Li5iY2E2Njk2ZWJlNmYwZWRkZGRlZTc5YjczYzNlZTE0NDk2ZDgyZmI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBCbG9iTG9hZGVyOwogY2xhc3MgRGVmZXJy
ZWRQcm9taXNlOwogY2xhc3MgUmVhZGFibGVTdHJlYW07CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEV4Y2VwdGlvbk9yOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAppbmRleCA1NTllYmNjNDhjNWYwOTZh
YzE5YmFlN2Q5ZjcxOGI3MWYyYTM1MzIyLi40MmY0MTgwZGZhODQyN2UwZTYwZjgxZWI3OWIxOTE4
N2NhZmRiYTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5k
UXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5j
cHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVzc2Fn
ZXMoKQogICAgICAgICBib29sIHNob3VsZFN0b3BQcm9jZXNzaW5nID0gZmFsc2U7CiAgICAgICAg
IHN3aXRjaE9uKG1fcXVldWUuZmlyc3QoKSwgW3RoaXNdKGNvbnN0IENTdHJpbmcmIHV0ZjgpIHsK
ICAgICAgICAgICAgIG1fd3JpdGVTdHJpbmcodXRmOCk7Ci0gICAgICAgIH0sIFt0aGlzXShSZWY8
U2hhcmVkQnVmZmVyPiYgZGF0YSkgeworICAgICAgICB9LCBbdGhpc10oUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiBkYXRhKSB7CiAgICAgICAgICAgICBkYXRhLT5mb3JFYWNoU2VnbWVudCht
X3dyaXRlUmF3RGF0YSk7CiAgICAgICAgIH0sIFt0aGlzLCAmc2hvdWxkU3RvcFByb2Nlc3Npbmdd
KFVuaXF1ZVJlZjxCbG9iTG9hZGVyPiYgbG9hZGVyKSB7CiAgICAgICAgICAgICBhdXRvIGVycm9y
Q29kZSA9IGxvYWRlci0+ZXJyb3JDb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29y
a1NlbmRRdWV1ZS5oCmluZGV4IDU1MWY3MGY5MTY3YjJiZmNiMjQ0YmIyYjM3MDBiZmJhYWY1NDc5
NmMuLmQyM2NmZWJiNDUwOGJjMzAwOTE1YmI5OTZkM2YxNTA2MmNlMzUwOWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYjsKIGNsYXNzIEJsb2JMb2FkZXI7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBOZXR3b3JrU2VuZFF1ZXVlIDogcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyIHsKIHB1YmxpYzoKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICB2b2lkIHByb2Nlc3NNZXNzYWdlcygpOwogCi0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFy
aWFudDxDU3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPiwgVW5pcXVlUmVmPEJsb2JMb2FkZXI+PjsK
KyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PENTdHJpbmcsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiwgVW5pcXVlUmVmPEJsb2JMb2FkZXI+PjsKICAgICBEZXF1ZTxNZXNzYWdl
PiBtX3F1ZXVlOwogCiAgICAgV3JpdGVTdHJpbmcgbV93cml0ZVN0cmluZzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAppbmRleCA1NmEwNmZjYWYyNzNk
MjVkYzRjNzVkY2U1NjlhYWM4ZjFhYTU5NTI3Li5kMmI4NzQxYTA0NDM0MmM3ZmZkOWU4YTUzM2Nj
OGExMjBlMjliYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2ht
ZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVs
ZW1lbnQuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgc3RhdGljIGJvb2wgbWltZVR5cGVJc1N1aXRh
YmxlRm9ySW5saW5lSW1hZ2VBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAg
cmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShtaW1lVHlw
ZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlwZShtaW1lVHlwZSk7CiB9CiAKLXZv
aWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9p
ZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogewogICAgIGF1dG8qIGhvc3RFbGVtZW50ID0gc2hhZG93SG9zdCgpOwogICAgIGlmICgh
aXM8SFRNTEltYWdlRWxlbWVudD4oaG9zdEVsZW1lbnQpIHx8ICFidWZmZXItPnNpemUoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCmluZGV4IDU3M2VjMmVh
ZTFjZGMwNjA5ZjI2MWMzODQwMGJiMDJjNDgwZjdiZGQuLjY2MWRlYzkzNzZkOGE5ZDZkNDcxN2Zk
MGI0Y2U3ZjgyZmYwM2Y3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBGaWxlOwogY2xhc3MgSFRNTEltYWdl
RWxlbWVudDsKIGNsYXNzIFJlbmRlckF0dGFjaG1lbnQ7CiBjbGFzcyBTaGFyZWFibGVCaXRtYXA7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBIVE1MQXR0YWNobWVudEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewog
ICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSFRNTEF0dGFjaG1lbnRFbGVtZW50KTsKQEAgLTU3
LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNG
cm9tRWxlbWVudChjb25zdCBFbGVtZW50JikgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHVwZGF0ZUF0dHJpYnV0ZXMoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBuZXdGaWxlU2l6
ZSwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuZXdGaWxlbmFt
ZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRh
KGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVGh1bWJuYWlsKGNvbnN0IFJlZlB0cjxJ
bWFnZT4mIHRodW1ibmFpbCk7CiAKICAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNl
cnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA1MTcxYjljZGM3ODkz
MTcxZTIxZTVmNGJmNTUwMTdlZjk0NGFjNzk1Li4xYTU2YmMwMzU5Y2NlMWY1MGRjZGRhMDY1MjIy
YTAxMDk1YTY5MDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
QEAgLTI5MzgsNyArMjkzOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2RtQ2xpZW50QXR0
ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpCiAgICAgYXR0ZW1wdFRvUmVzdW1lUGxh
eWJhY2tJZk5lY2Vzc2FyeSgpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVu
dFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0
RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29u
c3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhKQogewogICAgIG1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQo
aW5pdERhdGFUeXBlLCBpbml0RGF0YS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDY5NTY2OTQ5NjMxMGVmOTEwOGI5
NTZmZGE0ODIxNDMwMTQ5NzBlY2IuLjZjM2I2OTNiN2IxMGVkYTMwZTUxZDRjNjYzMWJlM2ZiNTBj
YmY4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC03MjAsNyAr
NzIwLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENETUNsaWVudAogICAgIHZvaWQgY2RtQ2xpZW50
QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpIGZpbmFsOwotICAgIHZvaWQgY2Rt
Q2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcm
LCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGNkbUNsaWVudFVucmVxdWVz
dGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZX0VO
Q1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDQ0MmQwOTQ2YmUyNTBkY2NmNTkyN2JhYTkyNzkzYTcw
ZWU5MTkzM2UuLjAwZDhmMjM5ZDcxMjdjNjFjYWUxYjU4ZDljNGEzMDNhOWIzYzkwNTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQg
SW1hZ2VEb2N1bWVudDo6dXBkYXRlRHVyaW5nUGFyc2luZygpCiAgICAgaWYgKCFtX2ltYWdlRWxl
bWVudCkKICAgICAgICAgY3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKTsKIAotICAgIGlmIChSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpKQor
ICAgIGlmIChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbG9hZGVyKCkt
Pm1haW5SZXNvdXJjZURhdGEoKSkKICAgICAgICAgbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdl
KCktPnVwZGF0ZUJ1ZmZlcigqYnVmZmVyKTsKIAogICAgIGltYWdlVXBkYXRlZCgpOwpAQCAtMTUx
LDcgKzE1MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKIHsKICAg
ICBpZiAoIXBhcnNlcigpLT5pc1N0b3BwZWQoKSAmJiBtX2ltYWdlRWxlbWVudCkgewogICAgICAg
ICBDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UgPSAqbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdl
KCk7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBsb2FkZXIoKS0+bWFpblJl
c291cmNlRGF0YSgpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0
YSA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAKICAgICAgICAgLy8gSWYgdGhpcyBp
cyBhIG11bHRpcGFydCBpbWFnZSwgbWFrZSBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgcGFydCwgc2lu
Y2UgdGhlIHJlc291cmNlIGRhdGEKICAgICAgICAgLy8gd2lsbCBiZSBvdmVyd3JpdHRlbiBieSB0
aGUgbmV4dCBwYXJ0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBhN2NhNzE2MmQ3OTFlZDdmYmE4Y2M5MWMyMWEy
Y2YzYWY2ZTY5YTdlLi4xODc5M2ZmMDY2MzM4ZmI2MGEzNGRlYzkwOWJjMmRkZDI4YmVhZmI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcApAQCAtODUwLDcgKzg1MCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtCiAg
ICAgICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdURk1vdmUoaGFu
ZGxlcikpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVz
cG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBo
YW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29ya0FnZW50LT5pbnRlcmNl
cHRSZXNwb25zZShyZXNwb25zZSwgaWRlbnRpZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgK
aW5kZXggOGU2NWM0ZWIxMDIzMzUyMWY0OGM3ZjRiMTIwYWQyYzg5MDlhMDdiYS4uZDI5NTc4MTBk
ODM4MmM5MzUxZDVhOTNmMTQ0YWVkMTQ5M2JjYzY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtOTMsNyArOTMsNyBA
QCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU2hhZG93Um9vdDsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBUaW1lckJhc2U7CiBj
bGFzcyBXZWJLaXROYW1lZEZsb3c7CiBjbGFzcyBXZWJTb2NrZXRDaGFubmVsOwpAQCAtMjM2LDcg
KzIzNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0
KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wg
c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYs
IEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwotICAgIHN0YXRpYyB2
b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICBzdGF0
aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+
JiYpOwogCiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShQYWdlJiwgc3RkOjp1
bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKICAgICBzdGF0aWMgdm9pZCBh
ZGRNZXNzYWdlVG9Db25zb2xlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgc3RkOjp1bmlx
dWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKQEAgLTQ0MSw3ICs0NDEsNyBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNw
b25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZv
aWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4pOwogCkBAIC0xMjg5LDcgKzEyODksNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgRgog
ICAgICAgICBpbnRlcmNlcHRSZXF1ZXN0SW1wbCgqYWdlbnRzLCBsb2FkZXIsIFdURk1vdmUoaGFu
ZGxlcikpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVy
Y2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVy
Pik+JiYgaGFuZGxlcikKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50
ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UpKTsKICAg
ICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50cyhmcmFtZSkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2Vi
S2l0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25XZWJLaXQuY3BwCmluZGV4IDYxZTRiYzNiYTAxOWVlMjVlNWM4YmMyMjFkZmY2MDc3ZWRkYjg2
M2QuLmYwNjQwM2E2MjM0YjQyYjZhZDJhODBiMDE5NGE1OTZkODlmNmU2YmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25XZWJLaXQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImIGxvCiAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KGxvYWRlciwgV1RG
TW92ZShoYW5kbGVyKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0
OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9u
c2UsIGlkZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCmlu
ZGV4IGY3NjExNGNlOThmNDJhN2ZmOTA2YTQ4ZDA0MjBiOTYzMDVkMzY5MTQuLjA3YjQyMWI1OWMx
NTU1ZTFhMjkxZTE4ZWJiMjYyMjEyMmYxNjU4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKQEAgLTM2
LDIwICszNiwyMCBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdCB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0
IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVy
Y2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBG
cmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29u
c3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMg
Ym9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25z
ZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0
YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0
aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwotICAgIHN0YXRpYyB2b2lkIGlu
dGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0
YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4pPiYmKTsKIH07CiAKIGlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTc2LDcgKzc2LDcgQEAgaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNl
TG9hZGVyJiBsb2EKICAgICBpbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwobG9hZGVyLCBXVEZNb3Zl
KGhhbmRsZXIpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2Vi
S2l0OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
KEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2Uo
ZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAgaW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbCgqZnJhbWUs
IHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDY3N2M1Yjgx
MmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmYzMmY2NjBiOTE3M2JhZThkNWNkOWEx
MzBlYWU1OGI5N2Q1ZWNlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05l
dHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtNDcsNiArNDcsNyBAQCBzdGF0aWMgY29uc3Qgc2l6
ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplID0gNTAgKiAxMDAwICogMTAwMDsg
Ly8gNTBNQgogTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRh
KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxvYWRlcklkKQogICAgIDog
bV9yZXF1ZXN0SWQocmVxdWVzdElkKQogICAgICwgbV9sb2FkZXJJZChsb2FkZXJJZCkKKyAgICAs
IG1fZGF0YUJ1ZmZlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiB9
CiAKQEAgLTY0LDcgKzY1LDcgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6cmVtb3ZlQ29udGVudCgpCiAgICAgaWYgKGhhc0RhdGEoKSkgewogICAgICAgICBB
U1NFUlQoIWhhc0NvbnRlbnQoKSk7CiAgICAgICAgIHJlc3VsdCA9IG1fZGF0YUJ1ZmZlci0+c2l6
ZSgpOwotICAgICAgICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOworICAgICAgICBtX2RhdGFCdWZm
ZXItPnJlc2V0KCk7CiAgICAgfQogCiAgICAgaWYgKGhhc0NvbnRlbnQoKSkgewpAQCAtODEsMzYg
KzgyLDM3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmV2
aWN0Q29udGVudCgpCiAgICAgcmV0dXJuIHJlbW92ZUNvbnRlbnQoKTsKIH0KIAorYm9vbCBOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gIW1fZGF0YUJ1ZmZlci0+aXNOdWxsKCk7Cit9CisKIHNpemVfdCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAwOworICAgIHJldHVybiBtX2Rh
dGFCdWZmZXItPnNpemUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3Vy
Y2VEYXRhOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
KQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKLSAgICBpZiAoIW1fZGF0YUJ1ZmZlcikK
LSAgICAgICAgbV9kYXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YUxl
bmd0aCk7Ci0gICAgZWxzZQotICAgICAgICBtX2RhdGFCdWZmZXItPmFwcGVuZChkYXRhLCBkYXRh
TGVuZ3RoKTsKKyAgICBtX2RhdGFCdWZmZXItPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0K
IAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0
YVRvQ29udGVudCgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogCi0gICAgc2l6ZV90
IGRhdGFMZW5ndGggPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1f
ZGF0YUJ1ZmZlci0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgIHNpemVfdCBkYXRhTGVu
Z3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1f
YmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAg
bV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgZGF0
YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0gdHJ1ZTsK
LSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcobV9kYXRhQnVmZmVyLT5k
YXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0
cmluZyhidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCi0gICAgbV9kYXRhQnVm
ZmVyID0gbnVsbHB0cjsKLQogICAgIHJldHVybiBtX2NvbnRlbnQuc2l6ZUluQnl0ZXMoKSAtIGRh
dGFMZW5ndGg7CiB9CiAKQEAgLTI2Nyw3ICsyNjksNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjphZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVz
bwogICAgIHJlc291cmNlRGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2UoY2FjaGVkUmVzb3VyY2UpOwog
fQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6
OmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nTmFtZSkKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IHJlc291cmNlRGF0
YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogICAgIGlmICghcmVzb3VyY2VEYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBlZmEw
MDA1M2FlMTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3Li5lZTM5NDU3Zjc2NzJlYWNhYWM5
MGE1YjZiYzg4MTEwOGNiZGE4YTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkluc3Bl
Y3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XYWxs
VGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00MCw3ICs0MSw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVy
QnVpbGRlcjsKIAogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwpAQCAtODgsOCArOTAsOCBAQCBwdWJsaWM6CiAgICAgICAgIFJlZlB0cjxU
ZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVyLmNv
cHlSZWYoKTsgfQogICAgICAgICB2b2lkIHNldERlY29kZXIoUmVmUHRyPFRleHRSZXNvdXJjZURl
Y29kZXI+JiYgZGVjb2RlcikgeyBtX2RlY29kZXIgPSBXVEZNb3ZlKGRlY29kZXIpOyB9CiAKLSAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIuY29weVJlZigpOyB9Ci0gICAgICAgIHZvaWQgc2V0QnVmZmVyKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKSB7IG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOyB9CisgICAgICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlci5jb3B5UmVmKCk7IH0KKyAgICAgICAgdm9pZCBzZXRCdWZmZXIoUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOyB9
CiAKICAgICAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZp
Y2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsgfQogICAgICAgICB2
b2lkIHNldENlcnRpZmljYXRlSW5mbyhjb25zdCBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5m
bz4mIGNlcnRpZmljYXRlSW5mbykgeyBtX2NlcnRpZmljYXRlSW5mbyA9IGNlcnRpZmljYXRlSW5m
bzsgfQpAQCAtMTAzLDEwICsxMDUsMTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGltZSByZXNw
b25zZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7IH0KICAg
ICAgICAgdm9pZCBzZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1fcmVzcG9u
c2VUaW1lc3RhbXAgPSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERh
dGEoKSBjb25zdCB7IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBi
b29sIGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25zdDsK
ICAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRh
TGVuZ3RoKTsKICAgICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpAQCAtMTE5
LDggKzEyMSw4IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsK
ICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VE
ZWNvZGVyPiBtX2RlY29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YUJ1
ZmZlcjsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgICAgIFVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CisgICAgICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICAgICAgc3RkOjpvcHRpb25h
bDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJbmZvOwogICAgICAgICBDYWNoZWRSZXNv
dXJjZSogbV9jYWNoZWRSZXNvdXJjZSB7IG51bGxwdHIgfTsKICAgICAgICAgSW5zcGVjdG9yUGFn
ZUFnZW50OjpSZXNvdXJjZVR5cGUgbV90eXBlIHsgSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJl
c291cmNlIH07CkBAIC0xNDQsNyArMTQ2LDcgQEAgcHVibGljOgogICAgIFJlc291cmNlRGF0YSBj
b25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICB2b2lkIG1heWJlRGVjb2Rl
RGF0YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgdm9pZCBhZGRDYWNo
ZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzb3VyY2UqKTsKLSAg
ICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwor
ICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQs
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUpOwogICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0YShjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCk7CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRhRm9yVVJMKGNvbnN0IFN0cmlu
ZyYgdXJsKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4NGEyODg0MmZiYzU2Mjg5Mzc2
MWQ3MWU0Yzc0Mjc0ZWJiMTguLjE4OWYyNmIwOThiNzM2MWRjZjhlOWQ2NGUzNTllNzVmZDljMDk3
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQgSW5zcGVj
dG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIs
IEZ1bmN0aW9uPHZvCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RJbnRlcmNlcHRl
ZChyZXF1ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci5yZXF1ZXN0
KCkpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lkIEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1fZW5hYmxlZCk7CiAgICAgQVNT
RVJUKG1faW50ZXJjZXB0aW9uRW5hYmxlZCk7CkBAIC0xMjQzLDcgKzEyNDMsNyBAQCBQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdp
dGhSZXNwb25zZShjb25zdAogICAgICAgICBvdmVycmlkZVJlc3BvbnNlLnNldEhUVFBIZWFkZXJG
aWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIG92ZXJyaWRlUmVzcG9uc2UubWltZVR5
cGUoKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhOwor
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGE7CiAgICAgaWYg
KGJhc2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29u
dGVudCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTI3MSw3ICsxMjcxLDcgQEAgUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRS
ZXF1ZXN0V2l0aFJlc3BvbnMKICAgICBpZiAobG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgp
KQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJsZSB0byBmdWxmaWxsIHJlcXVl
c3QsIGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zKTsKIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGE7
CiAgICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjRE
ZWNvZGUoY29udGVudCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTQwNywxMiArMTQwNywx
MiBAQCBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3RyaQogICAgICAgICBpZiAoSW5zcGVjdG9yTmV0d29y
a0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1lVHlwZSgpKSkgewogICAgICAg
ICAgICAgYXV0byBkZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjcmVhdGVUZXh0RGVj
b2RlcihyZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNwb25zZSgpLnRleHRFbmNvZGlu
Z05hbWUoKSk7CiAgICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICAg
ICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2goYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgKmJhc2U2NEVuY29k
ZWQgPSB0cnVlOwotICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29k
ZVRvU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IDhm
NmZiY2MyOTNhZWJmOGI5ZDVjOTQ1ZDI4MjlhMTUyN2I3NGJjN2YuLjZiY2Q4N2RkY2Q4YjA0NDEz
MDhkMWQwMWVjYTZiMGU2ZGExNDEzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaApAQCAtMTIzLDcgKzEyMyw3
IEBAIHB1YmxpYzoKICAgICBib29sIHdpbGxJbnRlcmNlcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik7CiAgICAgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwotICAgIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICB2b2lk
IGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYpOwogICAgIHZvaWQgaW50ZXJj
ZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik+JiYpOwogCiAgICAgdm9pZCBzZWFyY2hPdGhlclJlcXVlc3RzKGNvbnN0IEpTQzo6
WWFycjo6UmVndWxhckV4cHJlc3Npb24mLCBSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHByaXZh
dGU6CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBlbmRpbmdJbnRlcmNlcHRSZXNwb25z
ZSk7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAg
ICAgUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIG9yaWdp
bmFsUmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAg
UGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIG9yaWdpbmFs
UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAg
ICAgICAgICAgICA6IG1fb3JpZ2luYWxSZXNwb25zZShvcmlnaW5hbFJlc3BvbnNlKQogICAgICAg
ICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQog
ICAgICAgICB7IH0KQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmVz
cG9uZChtX29yaWdpbmFsUmVzcG9uc2UsIG51bGxwdHIpOwogICAgICAgICB9CiAKLSAgICAgICAg
dm9pZCByZXNwb25kKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhKQorICAgICAgICB2b2lkIHJlc3BvbmQoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhKQogICAg
ICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIW1fcmVzcG9uZGVkKTsKICAgICAgICAgICAgIGlm
IChtX3Jlc3BvbmRlZCkKQEAgLTIxNSw3ICsyMTUsNyBAQCBwcml2YXRlOgogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBtX29yaWdpbmFsUmVzcG9uc2U7Ci0gICAgICAg
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+KT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICAgICAgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+KT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKICAgICAgICAgYm9vbCBtX3Jlc3BvbmRl
ZCB7IGZhbHNlIH07CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDNkYWZlNjQzN2RmMTIxMDQw
NWZlZmJmMzc1Nzg1ZmVjZDVlYWM0NzIuLjFiNjQ2YWEyMTczYWI1NGEzZjFhYmRjYjUwMjA0YWRl
OThjMDczYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEwMCwxNSArMTAwLDE1IEBAIHN0YXRpYyBib29s
IGRlY29kZUJ1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHVuc2lnbmVkIHNpemUsIGNvbnN0
IFN0cmluZyYgdGV4CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250
ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkK
IHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+
bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0
aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50Ojpk
YXRhQ29udGVudChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1
bHQpOwogfQogCi1ib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdO
YW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQorYm9vbCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0
aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIGRhdGFDb250ZW50
KGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAg
IHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5n
TmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmRhdGFDb250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUsIGNv
bnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJp
bmcqIHJlc3VsdCkKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6
cmVzb3VyY2VDb250ZW50KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEZyYQog
ICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
ICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50
SWRlbnRpZmllcih1cmwsIGxvYWRlci0+dXJsKCkpKSB7CiAgICAgICAgICpiYXNlNjRFbmNvZGVk
ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuaAppbmRleCBiNTFhZGRiMWJkOGYyY2NlNjk1NjA3OTljZDFkOTUyZDJk
ZTQyODM4Li4zZDVlNTY2ZGJlMGM1ZWMxMWQ5ZThkZjY3ZmNmMGE3MDk4OGEyZjhmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVj
dG9yT3ZlcmxheTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJPYmplY3Q7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbnNwZWN0
b3JQYWdlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5z
cGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShJbnNwZWN0b3JQYWdlQWdlbnQpOwpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIE90aGVyUmVzb3VyY2UsCiAgICAgfTsKIAotICAgIHN0YXRpYyBib29sIHNoYXJlZEJ1
ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5j
b2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKKyAgICBz
dGF0aWMgYm9vbCBzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVu
Y29kZSwgU3RyaW5nKiByZXN1bHQpOwogICAgIHN0YXRpYyBWZWN0b3I8Q2FjaGVkUmVzb3VyY2Uq
PiBjYWNoZWRSZXNvdXJjZXNGb3JGcmFtZShGcmFtZSopOwogICAgIHN0YXRpYyB2b2lkIHJlc291
cmNlQ29udGVudChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIEZyYW1lKiwgY29u
c3QgVVJMJiwgU3RyaW5nKiByZXN1bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwogICAgIHN0YXRp
YyBTdHJpbmcgc291cmNlTWFwVVJMRm9yUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCBiNGU2YTNhNTNiNGMwYzBkYTFj
MzE3MmRkNDJjYWU2YThjZDIxZjdhLi42YWU1MjY1OTdjZDI4NjMxYmU3OTUwZmMzMzUzNmY4ZjM0
N2Q3YWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMs
NyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dl
ZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVm
ZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIg
PSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2
ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1
ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRl
bnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3Vy
Y2VCdWZmZXItPnNpemUoKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJM
KCkKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmhhbmRsZVByb3Zpc2lv
bmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgQVNTRVJU
KHdpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKSk7CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEgeyBtX2Jsb2NraW5nQ29udGVudEZpbHRlci0+
cmVwbGFjZW1lbnREYXRhKCkgfTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
cmVwbGFjZW1lbnREYXRhIHsgbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXItPnJlcGxhY2VtZW50RGF0
YSgpIH07CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7IFVSTCgpLCAidGV4dC9odG1s
Il9zLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHJlcGxhY2VtZW50RGF0YS0+c2l6ZSgpKSwgIlVU
Ri04Il9zIH07CiAgICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEgeyBXVEZNb3ZlKHJl
cGxhY2VtZW50RGF0YSksIGVycm9yLmZhaWxpbmdVUkwoKSwgcmVzcG9uc2UsIFN1YnN0aXR1dGVE
YXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OkhpZGRlbiB9OwogICAgIFNldEZvclNjb3Bl
PGJvb2w+IGxvYWRpbmdCbG9ja2VkUGFnZSB7IG1faXNMb2FkaW5nQmxvY2tlZFBhZ2UsIHRydWUg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGMzZDg0NTBm
NzFjMmMzNzNkMmFmMWNjY2ZiMjE1YWQ4MWJmODBkMGIuLjNiOTBlZjRjNTgyN2U2YzBiNDliMzQ2
NTZiM2NkNzFhOGVkYTk2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIERvY3VtZW50TG9hZGVyOjp+RG9jdW1lbnRMb2FkZXIo
KQogI2VuZGlmCiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IERvY3VtZW50TG9hZGVyOjptYWlu
UmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBEb2N1
bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fc3Vic3Rp
dHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbV9zdWJzdGl0dXRlRGF0YS5jb250
ZW50KCktPmNvcHkoKTsKQEAgLTE2MDgsMTEgKzE2MDgsMTEgQEAgYm9vbCBEb2N1bWVudExvYWRl
cjo6bWF5YmVDcmVhdGVBcmNoaXZlKCkKICAgICBhZGRBbGxBcmNoaXZlUmVzb3VyY2VzKCptX2Fy
Y2hpdmUpOwogICAgIEFTU0VSVChtX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpKTsKICAgICBhdXRv
JiBtYWluUmVzb3VyY2UgPSAqbV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKTsKLSAgICBtX3BhcnNl
ZEFyY2hpdmVEYXRhID0gJm1haW5SZXNvdXJjZS5kYXRhKCk7CisgICAgbV9wYXJzZWRBcmNoaXZl
RGF0YSA9IG1haW5SZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX3dyaXRl
ci5zZXRNSU1FVHlwZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7CiAKICAgICBBU1NFUlQobV9m
cmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgY29tbWl0RGF0YShtYWluUmVzb3VyY2UuZGF0YSgpLmRh
dGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOworICAgIGNvbW1pdERhdGEobV9wYXJz
ZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CiAgICAg
cmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTE2NzEsNyArMTY3MSw3IEBAIEFyY2hpdmVSZXNv
dXJjZSogRG9jdW1lbnRMb2FkZXI6OmFyY2hpdmVSZXNvdXJjZUZvclVSTChjb25zdCBVUkwmIHVy
bCkgY29uc3QKIAogUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9jdW1lbnRMb2FkZXI6Om1haW5S
ZXNvdXJjZSgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IG1haW5S
ZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9
IG1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIGRhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8mIHJlc3BvbnNlID0gdGhpcy0+cmVzcG9uc2Uo
KTsKQEAgLTIyNTUsOCArMjI1NSw4IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNo
TG9hZGluZ011bHRpcGFydENvbnRlbnQoKQogCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JS
ZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChy
ZXNvdXJjZURhdGEtPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7
CisgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
cmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydElj
b25Mb2FkaW5nKCkKQEAgLTIyOTIsNyArMjI5Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0
YXJ0SWNvbkxvYWRpbmcoKQogICAgIG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmdldExvYWRE
ZWNpc2lvbkZvckljb25zKGljb25EZWNpc2lvbnMpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVy
OjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9y
SWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgYXV0byBpY29uID0gbV9pY29uc1BlbmRpbmdMb2FkRGVjaXNpb24udGFrZShsb2Fk
SWRlbnRpZmllcik7CiAKQEAgLTIzMTMsNyArMjMxMyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElk
ZW50CiAgICAgcmF3SWNvbkxvYWRlci0+c3RhcnRMb2FkaW5nKCk7CiB9CiAKLXZvaWQgRG9jdW1l
bnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYgbG9hZGVyLCBTaGFyZWRC
dWZmZXIqIGJ1ZmZlcikKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24o
SWNvbkxvYWRlciYgbG9hZGVyLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAg
ICAgLy8gSWYgdGhlIERvY3VtZW50TG9hZGVyIGhhcyBkZXRhY2hlZCBmcm9tIGl0cyBmcmFtZSwg
YWxsIGljb24gbG9hZHMgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNhbmNlbGxlZC4KICAgICBB
U1NFUlQobV9mcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4
IGZiZjU0NWM0NjBlNGU0ODlkODdiMjVjMGU4NWVjY2NhNGNiZjNjODcuLjMzOTg3M2Q1ZDNmYjli
YjMwMDQ5OGNkNmYzN2NiZjY1Yjc4YWY1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCkBAIC03NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rp
b247CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVy
OwogY2xhc3MgQ29udGVudEZpbHRlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBDdXN0
b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsKQEAgLTgzLDcg
Kzg0LDcgQEAgY2xhc3MgSWNvbkxvYWRlcjsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBQcmV2aWV3Q29u
dmVydGVyOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU1dDbGllbnRDb25uZWN0aW9uOwogY2xh
c3MgU3VicmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTdWJzdGl0dXRlUmVzb3VyY2U7CkBAIC0xNzEs
NyArMTcyLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVMb2FkZXIqIGZy
YW1lTG9hZGVyKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3VicmVzb3VyY2VMb2FkZXIq
IG1haW5SZXNvdXJjZUxvYWRlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSgpIGNvbnN0
OwogICAgIAogICAgIERvY3VtZW50V3JpdGVyJiB3cml0ZXIoKSBjb25zdCB7IHJldHVybiBtX3dy
aXRlcjsgfQogCkBAIC0zOTIsOCArMzkzLDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lk
IHN0YXJ0SWNvbkxvYWRpbmcoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEdldExvYWRE
ZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYpOwotICAgIHZvaWQgZmluaXNo
ZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgU2hhcmVkQnVmZmVyKik7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2
NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqKT4mJik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXIm
LCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICAgICBjb25zdCBWZWN0b3I8TGlua0ljb24+
JiBsaW5rSWNvbnMoKSBjb25zdCB7IHJldHVybiBtX2xpbmtJY29uczsgfQogCkBAIC02MjEsNyAr
NjIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kg
eyBmYWxzZSB9OwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgTGlua0ljb24+IG1faWNvbnNQZW5k
aW5nTG9hZERlY2lzaW9uOwotICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPEljb25Mb2FkZXI+
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciopPj4gbV9pY29uTG9hZGVyczsK
KyAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+PiBtX2ljb25Mb2FkZXJzOwogICAgIFZl
Y3RvcjxMaW5rSWNvbj4gbV9saW5rSWNvbnM7CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFO
SUZFU1QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGUxM2UyODZlMTRmNGZl
OGZkN2RmOTBhMGUxNTFmMDkzNDE4ZGRkYjEuLjA4YTBhZTE5YTM3OTg0NmYxNTc1NjRjMmQwYzgz
MmIyNzQ4MzYwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC01OSw2ICs1
OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNsYXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBD
YWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7
CkBAIC03Niw3ICs3Nyw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVudW0g
Y2xhc3MgQ2FjaGVQb2xpY3kgOiB1aW50OF90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaAppbmRleCA0ZmQ2MzdhOTAxNGE1ZDQxYTIyNmVlNDU5MTdiNmIzZTlhNzkw
ZWJiLi5lZTlmM2QwYzk4NGQ0NTVjYmI5MWI0NjBjMWJjMTI4OThkMTIzNjUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtOTgsNyArOTgsNyBAQCBjbGFz
cyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNz
IFdpZGdldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0
ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAppbmRleCBhZWY2
NjhiZDYzZWQ1ZmNkNDVlNjFlOWQxZjEwN2NmYjZhZWYyNjRiLi4yOWQyZTNmNDYxNDBhYWE1MTE2
MGU2YTI4NTYyZjM3MGUzNzFlYjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRl
Z3kuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdp
bjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBj
bGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIAogc3RydWN0IEZldGNoT3B0aW9uczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCmlu
ZGV4IDYzMzc1NTk2MzIwMDE0NjM4Mjg5ZTI4MjYwNGM1NWIwYWY0NDUzMTMuLjYwNDNhYzliZTI2
N2VhNGZiYzcxZTExMThiOTA3OTE1NWUzOTE1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcApAQCAtMTQ2LDEyICsxNDYs
MTIgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGUKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlw
ZSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBk
YXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAw
LCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwog
fQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBk
YXRhUGF5bG9hZFR5cGUpCit2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIFJlZjxOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKaW5kZXggNDhi
YjIxNTNjOTNmMmRjNzU0ZTIwNzMyMjUyYzA1MDljZjcwNGE0MS4uYjUxNzRlZGM5NGI5OTIzOTAy
MDVmMGZhZDQ1MmVhNWFjMzg3ODkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNv
dXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBk
aWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlKTsKIAogICAgIHZvaWQgbm90aWZ5RG9uZSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3Bw
CmluZGV4IGM2Mjc3Njg1OGE2ZGM1YWZmZDM2ZGM5ZTc4NWM4YmQyNDcyYmI3NGQuLmQ5NGI3MDAw
NzQxY2Q5MTJiOTE3M2UyYjM3NDZkNGRhOGIzNjhhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCkBAIC0xNTUsNyAr
MTU1LDcgQEAgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RG
b3JCeXRlcyhSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWcKICAgICByZXR1cm4geyBhbGdvcml0aG0s
IGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKSB9OwogfQogCi1SZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0sIGNvbnN0IFNoYXJlZEJ1ZmZlciog
YnVmZmVyKQorUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RG
b3JTaGFyZWRCdWZmZXIoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0gYWxn
b3JpdGhtLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgYXV0
byBjcnlwdG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKHRvQ3J5cHRvRGlnZXN0
QWxnb3JpdGhtKGFsZ29yaXRobSkpOwogICAgIGlmIChidWZmZXIpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaAppbmRleCBhZWEz
ZGM1N2M4NzgzMTMwMTNhNWIxNmM5MzliNzc0ZWQ0ODQzMjRjLi44M2I4NjEzY2ZkYTIzMjlhZTMw
YmJmNmFiYzE0Yjk5ZDQ0MjM3YjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCkBAIC0zNCw3ICszNCw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFJlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdCB7CiAgICAgZW51bSBjbGFzcyBBbGdvcml0aG0gewpAQCAtNzUsNyArNzUs
NyBAQCBzdGQ6Om9wdGlvbmFsPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBh
cnNlRW5jb2RlZENyeXB0b2dyYXBoaWNEaWdlcwogCiBzdGQ6Om9wdGlvbmFsPFJlc291cmNlQ3J5
cHRvZ3JhcGhpY0RpZ2VzdD4gZGVjb2RlRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dChjb25zdCBFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Jik7CiAKLVJlc291cmNl
Q3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJl
c291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBjb25zdCBTaGFyZWRCdWZmZXIq
KTsKK1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hh
cmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5
cHRvZ3JhcGhpY0RpZ2VzdEZvckJ5dGVzKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxn
b3JpdGhtLCBjb25zdCB2b2lkKiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGFhODViYjRkM2NhODcxNDViYjdh
ODZmNjQ2NjhlNDk1MTc2YWMyMzUuLmRmMTM5NTg4ZThkNTI1MmIzZWVjNjE5M2FlNjFhYTI0Nzg2
YjIxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNzYs
NiArNzYsNyBAQCBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFJlc291cmNl
TG9hZGVyKTsKIFJlc291cmNlTG9hZGVyOjpSZXNvdXJjZUxvYWRlcihGcmFtZSYgZnJhbWUsIFJl
c291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zKQogICAgIDogbV9mcmFtZSB7ICZmcmFtZSB9CiAg
ICAgLCBtX2RvY3VtZW50TG9hZGVyIHsgZnJhbWUubG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2Fk
ZXIoKSB9CisgICAgLCBtX3Jlc291cmNlRGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVy
QnVpbGRlcj4oKSB9CiAgICAgLCBtX2RlZmVyc0xvYWRpbmcgeyBvcHRpb25zLmRlZmVyc0xvYWRp
bmdQb2xpY3kgPT0gRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nICYmIGZy
YW1lLnBhZ2UoKS0+ZGVmZXJzTG9hZGluZygpIH0KICAgICAsIG1fb3B0aW9ucyB7IG9wdGlvbnMg
fQogewpAQCAtMTE4LDcgKzExOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNv
dXJjZXMoKQogCiAgICAgbV9pZGVudGlmaWVyID0geyB9OwogCi0gICAgbV9yZXNvdXJjZURhdGEg
PSBudWxscHRyOworICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOwogICAgIG1fZGVmZXJyZWRS
ZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiB9CiAKQEAgLTE4OSw3ICsxOTAsNyBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjppbml0KFJlc291cmNlUmVxdWVzdCYmIGNsaWVudFJlcXVlc3QsIENv
bXBsZXRpb25IYW5kbGVyPHZvaQogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpk
ZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRlbGl2
ZXJSZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBkaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVm
ZmVyID0gV1RGTW92ZShidWZmZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAocmVhY2hlZFRl
cm1pbmFsU3RhdGUoKSkKQEAgLTMxOCw3ICszMTksNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpz
ZXREYXRhQnVmZmVyaW5nUG9saWN5KERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1Bv
bAogCiAgICAgLy8gUmVzZXQgYW55IGFscmVhZHkgYnVmZmVyZWQgZGF0YQogICAgIGlmIChkYXRh
QnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkK
LSAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBudWxscHRyOworICAgICAgICBtX3Jlc291cmNlRGF0
YS0+cmVzZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3aXRjaFRvU3Vic3Rp
dHV0ZVJlc291cmNlKCkKQEAgLTMyOSwyOSArMzMwLDI5IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OndpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSgpCiAgICAgICAgIG1faGFuZGxlLT5jYW5j
ZWwoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmVkQnVmZmVyKiBidWZmZXIsIERhdGFQ
YXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRh
T3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBidWZmZXIsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7
CiAgICAgaWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX3Jl
c291cmNlRGF0YSB8fCBkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBheWxvYWRXaG9sZVJlc291cmNl
KSB7Ci0gICAgICAgIGlmIChidWZmZXIpCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IGJ1
ZmZlcjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IAorICAgIGlmIChkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKQor
ICAgICAgICBtX3Jlc291cmNlRGF0YS0+cmVzZXQoKTsKKwogICAgIGlmIChidWZmZXIpCiAgICAg
ICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoKmJ1ZmZlcik7CiAgICAgZWxzZQogICAgICAgICBt
X3Jlc291cmNlRGF0YS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAKK2NvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS0+Z2V0KCkuZ2V0KCk7Cit9CisKIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmNsZWFyUmVzb3VyY2VEYXRhKCkKIHsKLSAgICBpZiAobV9yZXNvdXJjZURhdGEp
Ci0gICAgICAgIG1fcmVzb3VyY2VEYXRhLT5jbGVhcigpOworICAgIGlmICghbV9yZXNvdXJjZURh
dGEtPmlzTnVsbCgpKQorICAgICAgICBtX3Jlc291cmNlRGF0YS0+ZW1wdHkoKTsKIH0KIAogYm9v
bCBSZXNvdXJjZUxvYWRlcjo6aXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0CkBAIC01NTEsMTQg
KzU1MiwxNCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbAogICAgIGRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxv
YWRUeXBlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsK
ICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwg
ZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
bG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRU
eXBlKQogewotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGdldCBkYXRhK2xlbmd0aCAq
T1IqIGEgU2hhcmVkQnVmZmVyLgorICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGdldCBk
YXRhK2xlbmd0aCAqT1IqIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KICAgICBBU1NFUlQoIWJ1
ZmZlciB8fCAoIWRhdGEgJiYgIWxlbmd0aCkpOwogCiAgICAgLy8gUHJvdGVjdCB0aGlzIGluIHRo
aXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRv
CkBAIC01NzEsNyArNTcyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgKICAgICAvLyBIb3dl
dmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3
b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBh
IGdpYW50IGxvY2FsIGZpbGUuCiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9
PSBTZW5kQ2FsbGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAgICAg
ZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBi
dWZmZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBz
dGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZyYW1lTG9hZGVy
KCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxl
bmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lkIFJl
c291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bmV0d29ya0xvYWRNZXRyaWNzKQpAQCAtNzM1LDcgKzczNiw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduCiAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShi
dWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRmZDJiZjBiYmIzYjFiZDIxNTQ1ZGI1
MmMyZTFjYTY0ZWU0MmI5MTcuLjU0YjFiODY2ZGY4OTZhODRiNGNhMjk3ZWU0NzZkNmQwYjY2MWZk
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0zNiw2ICszNiw3
IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNw
b25zZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRF
TlNJT05TKQpAQCAtNTUsNiArNTYsOCBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVy
OwogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlcjsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVy
OwogCiBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRl
cik7CiBjbGFzcyBSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZXNvdXJj
ZUxvYWRlcj4sIHB1YmxpYyBSZWZDb3VudGVkPFJlc291cmNlTG9hZGVyPiwgcHJvdGVjdGVkIFJl
c291cmNlSGFuZGxlQ2xpZW50IHsKQEAgLTY2LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGluaXQoUmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogCi0gICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVh
bCB2b2lkIHN0YXJ0TG9hZGluZygpCkBAIC05OCw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIFNoYXJlZEJ1
ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7
IH0KKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25z
dDsKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29s
IGlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKQEAgLTEwNyw3ICsxMTAsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1Nl
bnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIApAQCAtMTY2LDcgKzE2OSw3IEBAIHByb3RlY3RlZDoK
IAogICAgIGJvb2wgd2FzQ2FuY2VsbGVkKCkgY29uc3QgeyByZXR1cm4gbV9jYW5jZWxsYXRpb25T
dGF0dXMgPj0gQ2FuY2VsbGVkOyB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
Y29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlKTsKICAgICAKICAgICB2b2lkIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVyUG9saWN5
IHJlZmVycmVyUG9saWN5KSB7IG1fb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IHJlZmVycmVyUG9s
aWN5OyB9CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25zdCB7IHJldHVy
biBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3k7IH0KQEAgLTE5MSw3ICsxOTQsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwog
Ci0gICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBTaGFy
ZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgYWRkRGF0YU9yQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIERhdGFQYXls
b2FkVHlwZSk7CiAgICAgdm9pZCBsb2FkRGF0YVVSTCgpOwogICAgIHZvaWQgZmluaXNoTmV0d29y
a0xvYWQoKTsKIApAQCAtMjAyLDcgKzIwNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVz
cG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1
aW50OF90KiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmco
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKikgb3ZlcnJpZGU7CkBA
IC0yMjcsNyArMjMwLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291cmNlUmVxdWVzdCBtX3JlcXVl
c3Q7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBCZWZvcmUgcmVk
aXJlY3RzLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcmVzb3VyY2VEYXRhOworICAgIFVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3Jlc291cmNlRGF0YTsKICAgICAKICAgICBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNlZmJkZjlkYTE3ODk5N2VkY2I5
ZjM1NDRmNDg4NGI2MGE2ZWZlLi4zN2QwYmI4MjFhYmQ4NmE5YjU2MDZlMTI3ZWZjOTQxMmE1MWJi
MWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTUzMCw3ICs1MzAsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbgogICAgIGRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0
YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXls
b2FkVHlwZSkKIHsKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBpZiAoYXV0byBwcmV2aWV3TG9h
ZGVyID0gbV9wcmV2aWV3TG9hZGVyLmdldCgpKSB7CkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBT
dWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgbG9uZyBsb25nIGUKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAs
IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9
CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlw
ZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgQVNTRVJUKG1fcmVzb3VyY2UpOwogCkBAIC01NjEs
NyArNTYxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZl
cihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAoYXV0byogcmVz
b3VyY2VEYXRhID0gdGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jlc291cmNl
LT51cGRhdGVCdWZmZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBi
dWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBtX3Jlc291cmNl
LT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDog
ZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAppbmRleCAzNzIzYjZiOWFiOWZk
ZGFhYTU1NzRiZmIwZTZmMzhjZWQ3YWVmYjc1Li44MzJjOWYwZTczZDM4NDY0YTc5NWY0MDM4NjBm
NzljMzRlNzNiYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
aApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWdu
ZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0Jl
U2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9u
SGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBl
KSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwogICAgIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CkBA
IC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiBjaGVj
a1Jlc3BvbnNlQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKICAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVkaXJlY3Rpb25Dcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcmV2aW91c1JlcXVlc3QsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpOwogCi0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCos
IGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKIAogICAgIHZvaWQgbm90aWZ5RG9uZShMb2Fk
Q29tcGxldGlvblR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
c3RpdHV0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCmlu
ZGV4IGY2NjI5MmUzMWNiZWI0MjY0MzBhODMyYWRlZjQyOTkxY2I1NzQzNmUuLmE4YTQ5YjQ3Zjky
NzM0Mjc0YmE0Y2VhYmMxNzA3ZmVmYTdiNjY0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlRGF0YS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgewogICAgICAgICB9CiAKLSAgICAgICAgU3Vic3RpdHV0ZURhdGEoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBjb250ZW50LCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2hvdWxkUmV2ZWFsVG9T
ZXNzaW9uSGlzdG9yeSkKKyAgICAgICAgU3Vic3RpdHV0ZURhdGEoUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgY29udGVudCwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNob3VsZFJl
dmVhbFRvU2Vzc2lvbkhpc3RvcnkpCiAgICAgICAgICAgICA6IG1fY29udGVudChXVEZNb3ZlKGNv
bnRlbnQpKQogICAgICAgICAgICAgLCBtX2ZhaWxpbmdVUkwoZmFpbGluZ1VSTCkKICAgICAgICAg
ICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKQEAgLTU0LDE0ICs1NCwxNCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVu
dCAhPSBudWxscHRyOyB9CiAgICAgICAgIGJvb2wgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9y
eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSA9PSBTZXNz
aW9uSGlzdG9yeVZpc2liaWxpdHk6OlZpc2libGU7IH0KIAotICAgICAgICBjb25zdCBTaGFyZWRC
dWZmZXIqIGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQuZ2V0KCk7IH0KKyAgICAg
ICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogY29udGVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGVudC5nZXQoKTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNwb25zZS5taW1lVHlwZSgpOyB9CiAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS50ZXh0RW5jb2RpbmdO
YW1lKCk7IH0KICAgICAgICAgY29uc3QgVVJMJiBmYWlsaW5nVVJMKCkgY29uc3QgeyByZXR1cm4g
bV9mYWlsaW5nVVJMOyB9CiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAgICAgICAKICAgICBwcml2YXRlOgot
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7CisgICAgICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7CiAgICAgICAgIFVSTCBtX2ZhaWxpbmdV
Ukw7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICAgICAgU2Vzc2lv
bkhpc3RvcnlWaXNpYmlsaXR5IG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSB7IFNlc3Np
b25IaXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVuIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
c3RpdHV0ZVJlc291cmNlLmgKaW5kZXggNTk2NjRiNTg1NGY4NWIwMmNkZjM0OTAyMGEwZWZmMTNl
Yjc4ODg3OS4uY2YyZGUwYzYyZDk1ZjMzMjViNDJiNDZlMjQwMzc3NDQxMDc0MmEwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAtMzcsMTIgKzM3LDE0
IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7
IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzcG9uc2U7IH0KLSAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihtX2RhdGEpOyB9CisgICAgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2Vf
Y2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9Cisg
ICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBtX2RhdGEu
YXBwZW5kKGRhdGEsIGxlbmd0aCk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuZW1wdHko
KTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikg
eyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEtPmNvcHko
KSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7
IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS5jb3B5KCkp
OyB9CiAKIHByb3RlY3RlZDoKLSAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNv
dXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKKyAgICBT
dWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiAgICAgICAgIDogbV91cmwoV1RG
TW92ZSh1cmwpKQogICAgICAgICAsIG1fcmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpCiAgICAg
ICAgICwgbV9kYXRhKFdURk1vdmUoZGF0YSkpCkBAIC01Miw3ICs1NCw3IEBAIHByb3RlY3RlZDoK
IHByaXZhdGU6CiAgICAgVVJMIG1fdXJsOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25z
ZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBtX2RhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmlu
ZGV4IDg5ZjNiMGYxZGMzOWQ0MGE1NjM4NzhhZTU1Zjc2YzY3MGE3MTUwOTEuLjAzNmVmZDIwZTQ5
NjMwMGNmOGM5ZTdlNzkwMzE3ZTAxZGU1YmFmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDUs
NyArNjA1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdN
YW5pZmVzdCgpCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBh
cnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNv
dXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5k
YXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5p
ZmVzdCA9IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFu
aWZlc3RSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2Ut
PmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0
YSgpLnNpemUoKSk7CiAgICAgaWYgKCFtYW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGlt
ZSBvZiB0aGlzIHdyaXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMg
dGhlIG9ubHkgcmVhc29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJh
bWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hl
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQg
bm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmNwcAppbmRleCA2MDMyODE4ODgzNzVmNDRhNjI0YjNlM2IzYWFmZTA2YTM2ODkyZWU2
Li41MTk3OGY0MTIzODc0ZGM1NjYwZWZmNDcwNjU5NzA3ZDRlNWQ4NWE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5j
cHAKQEAgLTI1NSwxMCArMjU1LDggQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVG
aWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKIAogc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNv
dXJjZSkKIHsKLSAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJseSBkbyBub3QgbmVlZCBhIGNv
cHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgp
IG9uY2Ugd2UgZW5zdXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KICAgICBp
ZiAocmVzb3VyY2UucGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHJlc291cmNlLmRh
dGEoKS5jb3B5KCk7CisgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3Vv
dXMoKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
cmVzb3VyY2UucGF0aCgpKTsKIH0KIApAQCAtMjkwLDkgKzI4OCw3IEBAIHZvaWQgQXBwbGljYXRp
b25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2U7CiAg
ICAgICAgIGlmIChnZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tSZXNvdXJjZShyZXF1ZXN0LCBy
ZXNvdXJjZSkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCk7
Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2xpZW50cyBwcm9hYmx5IGRvIG5vdCBuZWVkIGEgY29w
eSBvZiB0aGUgU2hhcmVkQnVmZmVyLgotICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRv
IGNvcHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQu
Ci0gICAgICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jb3B5KCk7CisgICAgICAgICAg
ICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAgICAgICB9CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmNkMTY0MDNhMTczNmE3MTg2NTY3NzI0ODYxMWUwOGY2
NjNiMjlmLi5iOTYzNTZlNzg1NjEzODk1NmFlNGMwNTk4MzE3MGNkZjcyMzY3MmEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgQXBw
bGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xh
c3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBE
T01BcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsK
QEAgLTQ5LDcgKzUwLDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9h
ZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBBcHBsaWNh
dGlvbkNhY2hlSG9zdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMwMTQ3
MWYzMDg1ZGVmOGU0MWRjNWQwY2E5ZDYwOWEuLjJiYjNmZTc1Yjk5NzdlODMzMjJhZTI1ODBmNzIx
MmVlNWJmMjE2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gQXBw
bGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXRoKQorUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZT4gQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAg
ICBBU1NFUlQoIXVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiAgICAgaWYgKCFidWZmZXIp
CkBAIC00MCw3ICs0MCw3IEBAIFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCB7IHVybCB9LCBXVEZNb3Zl
KHJlc291cmNlUmVzcG9uc2UpLCB0eXBlLCBidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgcGF0aCkp
OwogfQogCi1BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCitBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291
cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIDogU3Vic3RpdHV0ZVJl
c291cmNlKFdURk1vdmUodXJsKSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoZGF0YSkpCiAg
ICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fc3RvcmFnZUlEKDApCkBAIC01MSw3ICs1MSw3IEBA
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYm
IHVybCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
OjpkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5
KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAg
ICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0
eSgpID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OmFkZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgKaW5kZXggODhjOTRk
ZTFhNzc0MTA0NjljOTMxYTQyYTQ3OWIxZTY3NzdhNzAyZS4uYzI4OGU3MDM2YzY3NjJhZDQ4NzZi
YTg4MTQ2OWE3NWQyMjM3ZTFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaApAQCAtNDAsNyArNDAsNyBA
QCBwdWJsaWM6CiAgICAgICAgIEZhbGxiYWNrID0gMSA8PCA0CiAgICAgfTsKIAotICAgIHN0YXRp
YyBSZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUoY29uc3QgVVJMJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJpbmcoKSk7
CisgICAgc3RhdGljIFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGNyZWF0ZShjb25zdCBV
UkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJp
bmcmIHBhdGggPSBTdHJpbmcoKSk7CiAKICAgICB1bnNpZ25lZCB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9CiAgICAgdm9pZCBhZGRUeXBlKHVuc2lnbmVkIHR5cGUpOwpAQCAtNTgsNyAr
NTgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAKIHByaXZhdGU6Ci0gICAgQXBwbGljYXRpb25D
YWNoZVJlc291cmNlKFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgQXBwbGljYXRpb25D
YWNoZVJlc291cmNlKFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHBhdGgpOwogCiAgICAg
dm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWM1MDg0N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2
MjkwZWViMC4uN2IyZmI2YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1MDc0YzcxMjkyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpk
YXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoKQogewotICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRh
dGEsIGxlbmd0aCk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRh
LCBsZW5ndGgpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVk
aXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNh
Yzk1YmNkZTExZmUzYzQ5OTAyNDBhNTIwYmQzMGU2MzY1OTUuLjhjZjA1Y2NlMTg4MDEyOGRlNTli
ZTcwYTk5ODM2ZjVhNzQ1YjZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNzgzLDcgKzc4
Myw2IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgYXV0byBkYXRhU3RhdGVtZW50ID0g
bV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBDYWNoZVJlc291cmNlRGF0
YSAoZGF0YSwgcGF0aCkgVkFMVUVTICg/LCA/KSJfcyk7CiAgICAgaWYgKCFkYXRhU3RhdGVtZW50
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCiAKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAg
ICAgaWYgKCFyZXNvdXJjZS0+cGF0aCgpLmlzRW1wdHkoKSkKQEAgLTgxNSw3ICs4MTQsNyBAQCBi
b29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgy
LCBwYXRoKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXpl
KCkpCi0gICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0
YSgpKTsKKyAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5k
YXRhKCkubWFrZUNvbnRpZ3VvdXMoKS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIGlmICghZGF0
YVN0YXRlbWVudC0+ZXhlY3V0ZUNvbW1hbmQoKSkgewpAQCAtODczLDEyICs4NzIsMTIgQEAgYm9v
bCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNl
KiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAKICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoZW50
cnlTdGF0ZW1lbnQudmFsdWUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAg
IC8vIERpZCB3ZSBzdWNjZXNzZnVsbHkgd3JpdGUgdGhlIHJlc291cmNlIGRhdGEgdG8gYSBmaWxl
PyBJZiBzbywKICAgICAvLyByZWxlYXNlIHRoZSByZXNvdXJjZSdzIGRhdGEgYW5kIGZyZWUgdXAg
YSBwb3RlbnRpYWxseSBsYXJnZSBhbW91bnQKICAgICAvLyBvZiBtZW1vcnk6CiAgICAgaWYgKCFm
dWxsUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJlc291cmNlLT5kYXRhKCkuY2xlYXIoKTsKKyAg
ICAgICAgcmVzb3VyY2UtPmNsZWFyKCk7CiAKICAgICByZXNvdXJjZS0+c2V0U3RvcmFnZUlEKHJl
c291cmNlSWQpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTI3Myw3ICsxMjcyLDcgQEAgYm9vbCBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBw
bGljYXRpb25DYWNoZVJlc28KICAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZSh0eXBlLCAiYXVkaW8vIikgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZSh0eXBlLCAidmlkZW8vIik7CiB9CiAgICAgCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShTaGFyZWRCdWZmZXImIGRhdGEs
IGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmls
ZUV4dGVuc2lvbikKK2Jvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5p
cXVlRmlsZUluRGlyZWN0b3J5KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0
cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lv
bikKIHsKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCmluZGV4IDlh
OTUzMDA4NzY2YTg4ODU1NjFiMzQ4ODg5YjhjZWRhMmIyZWIzMzguLjQxMDJhMTgwOGI0NTU1N2I2
NDVlMzZlN2U2ODFmYzRjNmQyMDdjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCkBAIC0zOSw3ICszOSw3
IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xhc3MgU2VjdXJpdHlPcmln
aW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
dGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0b3JhZ2VJREpvdXJuYWw7CiAKIGNsYXNzIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8QXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U+IHsKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZW5zdXJlT3Jp
Z2luUmVjb3JkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxk
U3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKik7CiAgICAg
dm9pZCBkZWxldGVUYWJsZXMoKTsKLSAgICBib29sIHdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGly
ZWN0b3J5KFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91
dEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pOworICAgIGJvb2wgd3JpdGVE
YXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZp
bGVFeHRlbnNpb24pOwogCiAgICAgdm9pZCBsb2FkTWFuaWZlc3RIb3N0SGFzaGVzKCk7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9y
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAK
aW5kZXggNmRlODBjMTBhYzdkMjVjZjM0NjlmNmRlZjBmYWY3MjQxZjU5NjQyOC4uNGVmOWNkNjZi
ZDA4OGI3NGMwNDZjMDY5MGQxZTlkM2U1ZTMzNjBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcApAQCAtNDYsMTIgKzQ2LDEyIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBSZWZQdHI8QXJjaGl2ZT4gUmF3RGF0YUNy
ZWF0aW9uRnVuY3Rpb24oY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJik7Cit0eXBlZGVmIFJlZlB0
cjxBcmNoaXZlPiBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbihjb25zdCBVUkwmLCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7CiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSYXdEYXRhQ3JlYXRpb25G
dW5jdGlvbiosIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gQXJjaGl2ZU1JTUVUeXBlc01hcDsK
IAogLy8gVGhlIGNyZWF0ZSBmdW5jdGlvbnMgaW4gdGhlIGFyY2hpdmUgY2xhc3NlcyByZXR1cm4g
UmVmUHRyIHRvIGNvbmNyZXRlIHN1YmNsYXNzZXMKIC8vIG9mIEFyY2hpdmUuIFRoaXMgYWRhcHRv
ciBtYWtlcyB0aGUgZnVuY3Rpb25zIGhhdmUgYSB1bmlmb3JtIHJldHVybiB0eXBlLgotdGVtcGxh
dGU8dHlwZW5hbWUgQXJjaGl2ZUNsYXNzPiBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGFyY2hpdmVG
YWN0b3J5Q3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3RlbXBs
YXRlPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBhcmNoaXZl
RmFjdG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIHJldHVybiBBcmNoaXZlQ2xhc3M6OmNyZWF0ZSh1cmwsIGJ1ZmZlcik7CiB9
CkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgQXJjaGl2ZUZhY3Rvcnk6OmlzQXJjaGl2ZU1JTUVUeXBl
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuICFtaW1lVHlwZS5pc0VtcHR5KCkg
JiYgYXJjaGl2ZU1JTUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0KIAotUmVmUHRyPEFy
Y2hpdmU+IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK1JlZlB0cjxBcmNoaXZlPiBBcmNoaXZl
RmFjdG9yeTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIGlmICghZGF0YSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9BcmNoaXZlRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZUZhY3RvcnkuaAppbmRleCAyMWQyMzY1Y2Y4ZDlkOTAxZWZlN2FhZDU1MmJmM2RhNDA2OWZlNDBk
Li41NTY0NTE1YzllMGQ5ZDAzM2I3OTBjNzQ3Mjg1YTI1ODUzYWJlMDJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKQEAgLTM0LDEyICszNCwx
MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEFyY2hpdmVGYWN0b3J5IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgYm9vbCBpc0FyY2hpdmVNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKLSAg
ICBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2
ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyS25vd25BcmNoaXZl
TUlNRVR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVz
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNl
LmNwcAppbmRleCBmYzIwZGEzZGEwMzJjYmVmNzRmMmU5Yzg0MjhhY2I0ZWUzN2JlZjIzLi4wNzM4
Mzk0YTgyODcxNGFhMGI5MGVlNzUwNzlkNDg2ZjViMGU4Njk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKQEAgLTMzLDcgKzMzLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNo
aXZlUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK2lubGlu
ZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IFN1YnN0aXR1dGVSZXNvdXJjZShVUkwg
eyB1cmwgfSwgUmVzb3VyY2VSZXNwb25zZSB7IHJlc3BvbnNlIH0sIFdURk1vdmUoZGF0YSkpCiAg
ICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV90ZXh0RW5jb2RpbmcodGV4dEVuY29k
aW5nKQpAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVz
b3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybAogewogfQogCi1S
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
ZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTU0LDcgKzU0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJl
c291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb24KICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBBcmNoaXZlUmVzb3VyY2UoZGF0YS5yZWxlYXNlTm9uTnVsbCgpLCB1
cmwsIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwgcmVzcG9uc2UpKTsKIH0KIAot
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCitSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNy
ZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0
ZShXVEZNb3ZlKGRhdGEpLCB1cmwsIHJlc3BvbnNlLm1pbWVUeXBlKCksIHJlc3BvbnNlLnRleHRF
bmNvZGluZ05hbWUoKSwgU3RyaW5nKCksIHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKaW5kZXggMjA5ZTk3MTdhZWIwOTM2
MGRiMzkyN2U2ZWZhMWU1YmYxYzJjOTdjYS4uMDU0OGVmNzIxZWZkMjdjMDBjZTkzZDEyMjcwZWNl
YzQ2YzAyYWY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJj
aGl2ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZVJlc291cmNlLmgKQEAgLTM0LDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBBcmNoaXZlUmVzb3VyY2UgOiBwdWJsaWMgU3Vic3RpdHV0ZVJlc291cmNlIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsCisgICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVz
b3VyY2U+IGNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJM
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFVSTCYsCiAgICAgICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0
IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwKICAgICAgICAg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgPSBSZXNvdXJjZVJlc3BvbnNlKCkpOwogCkBAIC00Nyw3
ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZElnbm9yZVdoZW5VbmFyY2hpdmluZygp
IGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkSWdub3JlV2hlblVuYXJjaGl2aW5nOyB9CiAKIHByaXZh
dGU6Ci0gICAgQXJjaGl2ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25z
dCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIEFyY2hp
dmVSZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICBTdHJpbmcg
bV9taW1lVHlwZTsKICAgICBTdHJpbmcgbV90ZXh0RW5jb2Rpbmc7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGRl
N2RhZGRkYWMyMjEyZjZkNWUwY2MwOTFkNGU0MTY3N2EzZjAxNWQuLjcxMTUwY2JkZDg5NjllNmFm
MDI4Njg0YjZiZjZjYmMwYTUwYjJmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC05MCw3ICs5MCw3IEBAIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5
TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgLy8gUmVzb3VyY2UgZGF0YSBjYW4gYmUgZW1wdHks
IGJ1dCBtdXN0IGJlIHJlcHJlc2VudGVkIGJ5IGFuIGVtcHR5IENGRGF0YVJlZgogICAgIGF1dG8m
IGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJv
cGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLmNy
ZWF0ZUNGRGF0YSgpLmdldCgpKTsKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxp
c3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEubWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpOwogCiAgICAgLy8gUmVzb3VyY2UgVVJMIGNh
bm5vdCBiZSBudWxsCiAgICAgaWYgKGF1dG8gY2ZVUkwgPSByZXNvdXJjZS0+dXJsKCkuc3RyaW5n
KCkuY3JlYXRlQ0ZTdHJpbmcoKSkKQEAgLTExNyw5ICsxMTcsOSBAQCBSZXRhaW5QdHI8Q0ZEaWN0
aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRh
dGlvbihBcgogICAgIC8vIERvbid0IGluY2x1ZGUgdGhlIHJlc291cmNlIHJlc3BvbnNlIGZvciB0
aGUgbWFpbiByZXNvdXJjZQogICAgIGlmICghaXNNYWluUmVzb3VyY2UpIHsKICAgICAgICAgaWYg
KGF1dG8gcmVzb3VyY2VSZXNwb25zZURhdGEgPSBjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRh
dGlvbihyZXNvdXJjZS0+cmVzcG9uc2UoKSkpCi0gICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNl
S2V5LCByZXNvdXJjZVJlc3BvbnNlRGF0YS5nZXQoKSk7ICAgIAorICAgICAgICAgICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3Vy
Y2VSZXNwb25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOwogICAgIH0KLSAgICAK
KwogICAgIHJldHVybiBwcm9wZXJ0eUxpc3Q7CiB9CiAKQEAgLTIxNSwxMyArMjE1LDEzIEBAIFJl
ZlB0cjxBcmNoaXZlUmVzb3VyY2U+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKENG
RGljdGlvbmFyeVJlZiBkaWN0aW9uCiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lX
ZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgZGF0YSBpcyBub3Qgb2YgdHlwZSBDRkRhdGEs
IGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgYXV0byByZXNvdXJjZVJlc3Bv
bnNlVmVyc2lvbiA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1
ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZVZlcnNpb25LZXkp
KTsKICAgICAgICAgaWYgKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uICYmIENGR2V0VHlwZUlEKHJl
c291cmNlUmVzcG9uc2VWZXJzaW9uKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7CiAgICAgICAg
ICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2Ug
dmVyc2lvbiBpcyBub3Qgb2YgdHlwZSBDRlN0cmluZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJl
c291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAg
ICAKKwogICAgICAgICByZXNwb25zZSA9IGNyZWF0ZVJlc291cmNlUmVzcG9uc2VGcm9tUHJvcGVy
dHlMaXN0RGF0YShyZXNvdXJjZVJlc3BvbnNlRGF0YSwgcmVzb3VyY2VSZXNwb25zZVZlcnNpb24p
OwogICAgIH0KIApAQCAtMjQ4LDIzICsyNDgsMjMgQEAgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IExl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmIG1haW5SZXNvdXIK
ICAgICByZXR1cm4gYXJjaGl2ZTsKIH0KIAotUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEpCitSZWZQdHI8TGVnYWN5V2Vi
QXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShVUkwoKSwgZGF0YSk7CiB9CiAKLVJlZlB0cjxM
ZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hh
cmVkQnVmZmVyJiBkYXRhKQorUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewog
ICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBmcm9tIHJhdyBk
YXRhIik7Ci0gICAgCisKICAgICBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IGNyZWF0
ZSgpOwotICAgICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLmNy
ZWF0ZUNGRGF0YSgpOworCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKICAgICBpZiAoIWNmRGF0YSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIAorCiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG51
bGxwdHI7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwbGlzdCA9IGFk
b3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlByb3BlcnR5TGlzdENyZWF0ZVdp
dGhEYXRhKDAsIGNmRGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRhYmxlLCAwLCAmZXJy
b3IpKSk7CiAgICAgaWYgKCFwbGlzdCkgewogI2lmbmRlZiBOREVCVUcKQEAgLTI3NiwxMiArMjc2
LDEyIEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUo
Y29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhCiAgICAgICAgICAgICBDRlJlbGVhc2UoZXJy
b3IpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoQ0ZH
ZXRUeXBlSUQocGxpc3QuZ2V0KCkpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKSB7CiAgICAg
ICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBBcmNoaXZlIHByb3BlcnR5IGxp
c3QgaXMgbm90IHRoZSBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2Vi
QXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBp
ZiAoIWFyY2hpdmUtPmV4dHJhY3QocGxpc3QuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIApAQCAtMjk1LDcgKzI5NSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChD
RkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5
V2ViQXJjaGl2ZSAtIE51bGwgcm9vdCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2Vi
QXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgQ0ZE
aWN0aW9uYXJ5UmVmIG1haW5SZXNvdXJjZURpY3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlS
ZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVNYWlu
UmVzb3VyY2VLZXkpKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURpY3QpIHsKICAgICAgICAgTE9H
KEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5vIG1haW4gcmVzb3VyY2UgaW4gYXJjaGl2
ZSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CkBAIC0zMzMsNyArMzMzLDcgQEAgYm9v
bCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQog
ICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJyZXNv
dXJjZSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFy
Y2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKGF1dG8gc3VicmVzb3VyY2UgPSBjcmVhdGVS
ZXNvdXJjZShzdWJyZXNvdXJjZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YnJlc291cmNl
KHN1YnJlc291cmNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICB9CkBAIC0zNTMsNyArMzUz
LDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0
aW9uYXJ5KQogICAgICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUg
LSBTdWJmcmFtZSBhcnJheSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBp
bnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFyY2hp
dmUgPSBjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qo
c3ViZnJhbWVEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoV1RGTW92
ZShzdWJmcmFtZUFyY2hpdmUpKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIExlZ2FjeVdlYkFy
Y2hpdmU6OmV4dHJhY3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAg
ICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJj
aGl2ZSBza2lwcGVkIik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtNTA2LDcgKzUwNiw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyCiB7CiAg
ICAgYXV0byYgcmVzcG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNw
b25zZSgpOwogICAgIFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwotICAgIAorCiAg
ICAgLy8gaXQncyBwb3NzaWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ugd2l0aG91dCBhIFVSTCBoZXJl
CiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAgaWYgKHJlc3BvbnNlVVJMLmlz
TnVsbCgpKQpAQCAtNjA1LDcgKzYwNSw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKIAogICAgIGlm
ICghZG9jdW1lbnQtPmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0dXJuIGFyY2hpdmU7Ci0gICAg
ICAgIAorCiAgICAgLy8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNv
IGl0IGNhbiBiZSBwYXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdp
bGwgaGF2ZSBhIGJvZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJh
bWVNYXJrdXAgPSAiPGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIg
bWFyZ2luaGVpZ2h0PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIi
ICsgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3Ry
aW5nKCkgKyAiXCI+PC9pZnJhbWU+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaAppbmRleCBkMDllYzlmNzVhYmExMzZhODYzMzll
YjRkODZhYmQ4Mjc3YzRmZjA0Li41YTA3YjEwYjRiZTZmODYyMDExYTc4MmE3ZGVkMjM2NzU5MjQz
NjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5oCkBAIC00MSw4ICs0MSw4IEBAIHN0cnVjdCBTaW1wbGVSYW5nZTsKIGNsYXNz
IExlZ2FjeVdlYkFyY2hpdmUgZmluYWwgOiBwdWJsaWMgQXJjaGl2ZSB7CiBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShT
aGFyZWRCdWZmZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdl
YkFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKFJl
ZjxBcmNoaXZlUmVzb3VyY2U+JiYgbWFpblJlc291cmNlLCBWZWN0b3I8UmVmPEFyY2hpdmVSZXNv
dXJjZT4+JiYgc3VicmVzb3VyY2VzLCBWZWN0b3I8UmVmPExlZ2FjeVdlYkFyY2hpdmU+PiYmIHN1
YmZyYW1lQXJjaGl2ZXMpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5
V2ViQXJjaGl2ZT4gY3JlYXRlKE5vZGUmLCBGdW5jdGlvbjxib29sKEZyYW1lJik+JiYgZnJhbWVG
aWx0ZXIgPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2Vi
QXJjaGl2ZT4gY3JlYXRlKEZyYW1lJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAppbmRleCBhY2ZiYmI3MDIwMjJkMDZhZmU2
MjAwNDA0ODdmZDM0ZDkyMWQ3MjdjLi5kMDEzOWY4N2EwNmY5Njk3OGI3NDc3ZTlmNDk5OWMzNGVh
OWY4NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTEFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1s
L01IVE1MQXJjaGl2ZS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBSZWY8TUhUTUxBcmNoaXZlPiBN
SFRNTEFyY2hpdmU6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTUhUTUxBcmNo
aXZlKTsKIH0KIAotUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUoY29u
c3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxNSFRNTEFyY2hpdmU+IE1I
VE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhKQogewogICAgIC8vIEZvciBzZWN1cml0eSByZWFzb25zIHdlIG9ubHkgbG9hZCBNSFRN
TCBwYWdlcyBmcm9tIGxvY2FsIFVSTHMuCiAgICAgaWYgKCFMZWdhY3lTY2hlbWVSZWdpc3RyeTo6
c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHVybC5wcm90b2NvbCgpLnRvU3RyaW5nKCkpKQpA
QCAtMTMwLDcgKzEzMCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3Jl
YXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgcmV0dXJuIG1haW5B
cmNoaXZlOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhU
TUxEYXRhKFBhZ2UqIHBhZ2UpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNo
aXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogewogICAgIFZlY3RvcjxQYWdlU2Vy
aWFsaXplcjo6UmVzb3VyY2U+IHJlc291cmNlczsKICAgICBQYWdlU2VyaWFsaXplciBwYWdlU2Vy
aWFsaXplcihyZXNvdXJjZXMpOwpAQCAtMTYyLDggKzE2Miw4IEBAIFJlZjxTaGFyZWRCdWZmZXI+
IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAvLyBXZSB1
c2UgdXRmOCgpIGJlbG93IGluc3RlYWQgb2YgYXNjaWkoKSBhcyBhc2NpaSgpIHJlcGxhY2VzIENS
TEZzIHdpdGggPz8gKHdlIHN0aWxsIG9ubHkgaGF2ZSBwdXQgQVNDSUkgY2hhcmFjdGVycyBpbiBp
dCkuCiAgICAgQVNTRVJUKHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKS5pc0FsbEFTQ0lJKCkpOwog
ICAgIENTdHJpbmcgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgp
OwotICAgIGF1dG8gbWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBtaHRt
bERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1odG1sRGF0YTsKKyAgICBtaHRtbERhdGEuYXBwZW5k
KGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgZm9yIChh
dXRvJiByZXNvdXJjZSA6IHJlc291cmNlcykgewogICAgICAgICBzdHJpbmdCdWlsZGVyLmNsZWFy
KCk7CkBAIC0xNzgsMTUgKzE3OCwxNSBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6
OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCJcclxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogIiwgY29udGVudEVuY29kaW5nLCAi
XHJcbkNvbnRlbnQtTG9jYXRpb246ICIsIHJlc291cmNlLnVybC5zdHJpbmcoKSwgIlxyXG5cclxu
Iik7CiAKICAgICAgICAgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRm
OCgpOwotICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lp
U3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5k
YXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgICAgICAvLyBGSVhNRTogaWRlYWxs
eSB3ZSB3b3VsZCBlbmNvZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJlYW0gd2l0aG91dCBoYXZpbmcg
dG8gZmV0Y2ggaXQgYWxsLgogICAgICAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UuZGF0YS0+ZGF0
YSgpOwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IHJlc291cmNlLmRhdGEtPnNpemUoKTsK
ICAgICAgICAgaWYgKCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBxdW90ZWRQcmludGFibGUpKSB7
CiAgICAgICAgICAgICBhdXRvIGVuY29kZWREYXRhID0gcXVvdGVkUHJpbnRhYmxlRW5jb2RlKGRh
dGEsIGRhdGFMZW5ndGgpOwotICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoZW5jb2RlZERh
dGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOwotICAgICAgICAgICAgbWh0bWxEYXRhLT5h
cHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5jb2RlZERh
dGEuZGF0YSgpLCBlbmNvZGVkRGF0YS5zaXplKCkpOworICAgICAgICAgICAgbWh0bWxEYXRhLmFw
cGVuZCgiXHJcbiIsIDIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKCFz
dHJjbXAoY29udGVudEVuY29kaW5nLCBiYXNlNjQpKTsKICAgICAgICAgICAgIC8vIFdlIGFyZSBu
b3Qgc3BlY2lmeWluZyBpbnNlcnRMRnMgPSB0cnVlIGJlbG93IGFzIGl0IHdvdWxkIGN1dCB0aGUg
bGluZXMgd2l0aCBMRnMgYW5kIE1IVE1MIHJlcXVpcmVzIENSTEZzLgpAQCAtMTk2LDE3ICsxOTYs
MTcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQ
YWdlKiBwYWdlKQogICAgICAgICAgICAgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoID0gZW5jb2Rl
ZERhdGEuc2l6ZSgpOwogICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgIHNpemVfdCBs
aW5lTGVuZ3RoID0gc3RkOjptaW4oZW5jb2RlZERhdGFMZW5ndGggLSBpbmRleCwgbWF4aW11bUxp
bmVMZW5ndGgpOwotICAgICAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29kZWREYXRh
LmRhdGEoKSArIGluZGV4LCBsaW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBtaHRtbERhdGEt
PmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5j
b2RlZERhdGEuZGF0YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOworICAgICAgICAgICAgICAgIG1o
dG1sRGF0YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgICAgICAgICBpbmRleCArPSBtYXhp
bXVtTGluZUxlbmd0aDsKICAgICAgICAgICAgIH0gd2hpbGUgKGluZGV4IDwgZW5jb2RlZERhdGFM
ZW5ndGgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgYXNjaWlTdHJpbmcgPSBtYWtlU3RyaW5n
KCItLSIsIGJvdW5kYXJ5LCAiLS1cclxuIikudXRmOCgpOwotICAgIG1odG1sRGF0YS0+YXBwZW5k
KGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgIG1odG1sRGF0
YS5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKLSAg
ICByZXR1cm4gbWh0bWxEYXRhOworICAgIHJldHVybiBtaHRtbERhdGEudGFrZSgpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFy
Y2hpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2
ZS5oCmluZGV4IDNkMmRiN2M5NjAwMmViZTY4NGIyYmVmOGYxZWE5ZTJlOTc5NGE1ODkuLjJkZmU4
N2U4MmU3YTRkY2UwZjM0MWMzNjE5NDNjOTkwMjA1YzhkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oCkBAIC0zOCwxNCArMzgs
MTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNSFRNTFBhcnNlcjsKIGNsYXNzIFBh
Z2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
CiBjbGFzcyBNSFRNTEFyY2hpdmUgZmluYWwgOiBwdWJsaWMgQXJjaGl2ZSB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxNSFRNTEFyY2hpdmU+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBSZWZQdHI8
TUhUTUxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJik7CisgICAgc3Rh
dGljIFJlZlB0cjxNSFRNTEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJik7CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZ2VuZXJhdGVNSFRN
TERhdGEoUGFnZSopOworICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZ2Vu
ZXJhdGVNSFRNTERhdGEoUGFnZSopOwogCiAgICAgdmlydHVhbCB+TUhUTUxBcmNoaXZlKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2Vy
LmNwcAppbmRleCBmMWI5MDFkZDAyMDNkY2FjOTRkZjZkMGVhZTRjYjJkMGJkYjgwMTVlLi41ZWU5
MTg2ODRhMDY4OTY4M2Y3MWMyNjdmMmQ5MDFhMzdhNmZlYjU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC01MSw3ICs1
MSw3IEBAIHN0YXRpYyBib29sIHNraXBMaW5lc1VudGlsQm91bmRhcnlGb3VuZChTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlciYgbGluZVJlYWRlciwgY29uCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1N
SFRNTFBhcnNlcjo6TUhUTUxQYXJzZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQorTUhUTUxQYXJzZXI6
Ok1IVE1MUGFyc2VyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgOiBtX2xpbmVS
ZWFkZXIoZGF0YSwgIlxyXG4iKQogewogfQpAQCAtMTQwLDcgKzE0MCw3IEBAIFJlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXIm
IG1pbWVIZWFkZXIsCiB7CiAgICAgQVNTRVJUKGVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9
PSBlbmRPZkRvY3VtZW50Qm91bmRhcnkuaXNFbXB0eSgpKTsKIAotICAgIGF1dG8gY29udGVudCA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBjb250ZW50
OwogICAgIGNvbnN0IGJvb2wgY2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0Vt
cHR5KCk7CiAgICAgYm9vbCBlbmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVI
ZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsK
QEAgLTE1NCw3ICsxNTQsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6
cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAg
TE9HX0VSUk9SKCJCaW5hcnkgY29udGVudHMgcmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRlbnQtPmFwcGVu
ZChXVEZNb3ZlKHBhcnQpKTsKKyAgICAgICAgY29udGVudC5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7
CiAgICAgICAgIG1fbGluZVJlYWRlci5zZXRTZXBhcmF0b3IoIlxyXG4iKTsKICAgICAgICAgVmVj
dG9yPHVpbnQ4X3Q+IG5leHRDaGFyczsKICAgICAgICAgaWYgKG1fbGluZVJlYWRlci5wZWVrKG5l
eHRDaGFycywgMikgIT0gMikgewpAQCAtMTgwLDEwICsxODAsMTAgQEAgUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWlt
ZUhlYWRlciwKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIC8vIE5vdGUgdGhhdCB3ZSB1c2UgbGluZS51dGY4KCkgYW5kIG5vdCBsaW5lLmFzY2lpKCkg
YXMgYXNjaWkgdHVybnMgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIHRhYiwgbGluZS1mZWVk
Li4uKSBpbnRvICc/Jy4KLSAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZChsaW5lLnV0ZjgoKS5k
YXRhKCksIGxpbmUubGVuZ3RoKCkpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmQobGluZS51
dGY4KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmIChtaW1lSGVhZGVy
LmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxl
KSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGxpbmUgcmVhZGVyIHJlbW92ZXMgdGhlIFxyXG4s
IGJ1dCB3ZSBuZWVkIHRoZW0gZm9yIHRoZSBjb250ZW50IGluIHRoaXMgY2FzZSBhcyB0aGUgUXVv
dGVkUHJpbnRhYmxlIGRlY29kZXIgZXhwZWN0cyBDUi1MRiB0ZXJtaW5hdGVkIGxpbmVzLgotICAg
ICAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAg
IGNvbnRlbnQuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xOTMsOSArMTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFy
c2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgfQog
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9
IGNvbnRlbnQudGFrZSgpLT5tYWtlQ29udGlndW91cygpOwogICAgIHN3aXRjaCAobWltZUhlYWRl
ci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNl
NjQ6IHsKLSAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5k
YXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNl
NjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNp
emUoKSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEpIHsKICAgICAgICAgICAgIExPR19FUlJP
UigiSW52YWxpZCBiYXNlNjQgY29udGVudCBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMjA0LDExICsyMDUsMTEgQEAgUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhl
YWRlciwKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVk
UHJpbnRhYmxlOgotICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQt
PmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJs
ZURlY29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6
ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJpdDoKICAg
ICBjYXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29udGVudC0+
ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhLmFwcGVuZChjb250aWd1b3Vz
Q29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29kaW5nIGZv
ciBNSFRNTCBwYXJ0LiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MUGFyc2VyLmgKaW5kZXggMWU5YmQ0ZDc3NjdlZTM5MWEwMDIyZjcxNzQ4ZjAwYjg1
YzgxYjI1Zi4uMGQ2MDQzNDNmM2Q3YWQxNzhjYzIyMDAzYzk3OWMyMmU1MGEzYjk5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oCkBA
IC00MiwxMSArNDIsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXJjaGl2ZVJlc291
cmNlOwogY2xhc3MgTUhUTUxBcmNoaXZlOwogY2xhc3MgTUlNRUhlYWRlcjsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1IVE1MUGFy
c2VyIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBNSFRNTFBhcnNlcihTaGFyZWRCdWZmZXIqKTsK
KyAgICBleHBsaWNpdCBNSFRNTFBhcnNlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICAg
ICBSZWZQdHI8TUhUTUxBcmNoaXZlPiBwYXJzZUFyY2hpdmUoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3Bw
CmluZGV4IDY1MjUxZWI2ODIwN2ZjNDlhOTVjYzFjM2VhMWQ0YTllYmZkOTI3MDQuLmUxYTg3NTE2
YmQ4ZDViOGYyNGFmNmE1Yjk5MGUyMTg1MzQ3ZTc1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAg
LTQwLDEyICs0MCwxNiBAQCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcQogewogfQogCi12b2lkIENh
Y2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEFwcGxpY2F0
aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9
IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAg
IGlmIChkYXRhKQotICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRh
dGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2Rh
dGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRh
LT5zaXplKCkpOworICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1f
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0
YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNo
ZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmgKaW5kZXggMDdmMmEwNzljNTY0ZWVmZmI2OTdjMzdjNzg1NjVlMWVhOGQ5YWU1ZS4uMzc5OGE5
YjRkOTAxM2NmZGVhNmY1NmZiZGYwMDE1YWY4OTQ3NTcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC00
Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlv
bk1hbmlmZXN0PiBwcm9jZXNzKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9j
dW1lbnRVUkwsIERvY3VtZW50KiA9IG51bGxwdHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRS
ZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2RlY29kZXIucHRyKCk7IH0KICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
CmluZGV4IDU5ZmE3YzYyZmM2MWU2Mzc0MmY3NGNjNmEwYmNmMDAwYmE5YjE3NmYuLjM4YTJlMTdm
MGQwNmM4YWM5OGRlMjRiMWU1MmI4ZTYwZTkyNDEyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgxLDcg
QEAgY29uc3QgU3RyaW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNo
ZWNrSGludCBtaW1lVHlwZUNoZWNrSGludCwKICAgICAgICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0
VGV4dDsKIAogICAgIC8vIERvbid0IGNhY2hlIHRoZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGlu
ZyBpcyBjaGVhcCBhbmQgaXQgY2FuIHVzZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICByZXR1
cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXpl
KCkpOworICAgIHJldHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NT
U3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKQEAgLTk3LDEzICs5NywxNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlE
YXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIHNhdmVQYXJz
ZWRTdHlsZVNoZWV0KCpzaGVldC5tX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSk7CiB9CiAKLXZvaWQg
Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVl
dDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAg
ICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgLy8gRGVjb2Rl
IHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4
dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9k
ZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCks
IGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsK
KyAgICAgICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQg
a2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKKyAgICAgICAg
bV9kZWNvZGVkU2hlZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxs
cHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhm
YWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiAgICAgLy8gQ2xlYXIgdGhlIGRlY29k
ZWQgdGV4dCBhcyBpdCBpcyB1bmxpa2VseSB0byBiZSBuZWVkZWQgaW1tZWRpYXRlbHkgYWdhaW4g
YW5kIGlzIGNoZWFwIHRvIHJlZ2VuZXJhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAppbmRleCA1ZDRkZDNkYzdlMzUzZWUzY2IyZmI5
M2YyNzhkMjU3OWI4ZDlhN2ExLi5lNjU1YzY5ZTNlZGI2MDk1MDIzOWNjZTQ1NDVmMDk2YjUyNjU2
ZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5
bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHls
ZVNoZWV0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5n
KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFs
OwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7Cisg
ICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0
YSgpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApp
bmRleCA4YzJiYzJhMzQxYzgyMzUxZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5kMmJjMjgyMTQ3
OWM1OWEyMzIzZTRmNjVjZDk0YjYzYjQyMzczNjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02NCwxMCArNjQsMTUgQEAgdm9pZCBDYWNoZWRGb250
OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICAgICAgc3Rh
dGljX2Nhc3Q8Q2FjaGVkRm9udENsaWVudCY+KGNsaWVudCkuZm9udExvYWRlZCgqdGhpcyk7CiB9
CiAKLXZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkRm9udDo6ZmluaXNo
TG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNv
ZGVkU2l6ZShtX2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRh
KSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNl
dEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2Rh
dGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0
TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CkBAIC0xMDUsNyAr
MTEwLDcgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZm
ZXIqIGRhdGEpCiAKIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNo
ZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBT
dHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBi
dWZmZXIgeyAmYnl0ZXMgfTsKKyAgICBSZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3
cmFwcGluZyA9ICFjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0
dXJuIGJ1ZmZlciA/IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUlu
Q29sbGVjdGlvbikgOiBudWxscHRyOwogfQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVk
Rm9udDo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAo
aXNMb2FkaW5nKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNl
Q2xpZW50V2Fsa2VyPENhY2hlZEZvbnRDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdo
aWxlIChDYWNoZWRGb250Q2xpZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQogICAgICAgICBj
bGllbnQtPmZvbnRMb2FkZWQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmgKaW5kZXggY2ViZGM1NTdmMTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4u
MTM0NjZjYzk5ZDBkMTljYmYzZDhlZjNkZmJkOTZmMzRkMGY4NTQxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAg
ICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2Fj
aGVkUmVzb3VyY2UmKSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICB2b2lk
IGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBv
dmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBh
bGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBiMTU5ZjI5ZWU5MGZlM2RlMDE5YzExNDliZGE2OTRl
MGU2ZjZiNTQyLi45NDYyNzk1MjBkMGRhNDQ2MjJjNmFjZDM2NjYyMjg4MTA1ZTgxOTYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ2OCw5ICs0
NjgsOSBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAgICAgbV91cGRh
dGVJbWFnZURhdGFDb3VudCA9IDA7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZl
ckludGVybmFsKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1
ZmZlckludGVybmFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAg
bV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAg
IHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKICAgICBjcmVhdGVJbWFnZSgpOwogCkBA
IC01MjMsMTIgKzUyMywxNCBAQCBib29sIENhY2hlZEltYWdlOjpzaG91bGREZWZlclVwZGF0ZUlt
YWdlRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fbGFz
dFVwZGF0ZUltYWdlRGF0YVRpbWUpLnNlY29uZHMoKSA8IHVwZGF0ZUltYWdlRGF0YUJhY2tvZmZJ
bnRlcnZhbHNbaW50ZXJ2YWxdOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFn
ZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK1JlZlB0
cjxTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKLSAgICBpZiAoIWRhdGEgfHwg
IWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCi0gICAgICAgIHJldHVybiBkYXRhOworICAgIGlmICgh
ZGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFpc1Bvc3RTY3JpcHRSZXNv
dXJjZSgpKQorICAgICAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKICNpZiBQTEFU
Rk9STShNQUMpICYmICFVU0UoV0VCS0lUX0lNQUdFX0RFQ09ERVJTKQotICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFU
b1BERihkYXRhLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOworICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihk
YXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOwogI2Vsc2UKICAg
ICAvLyBMb2FkaW5nIHRoZSBpbWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGVkIGlmIHRoZSBz
eXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQgdG8gUERGLgogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTUzLDcgKzU1NSw3IEBAIEVuY29kZWREYXRhU3Rh
dHVzIENhY2hlZEltYWdlOjp1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKFNo
YXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5n
UG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgdXBkYXRl
QnVmZmVySW50ZXJuYWwoZGF0YSk7CkBAIC01NjcsNyArNTY5LDcgQEAgdm9pZCBDYWNoZWRJbWFn
ZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAg
Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNo
ZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewogICAgIG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsK
ICAgICBpZiAobV9kYXRhKSB7CkBAIC01OTMsNyArNTk1LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWUKIHZvaWQgQ2FjaGVkSW1hZ2U6OmRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygp
CiB7CiAgICAgaWYgKG1faW1hZ2UpIHsKLSAgICAgICAgLy8gTGV0IHRoZSBJbWFnZSBrbm93IHRo
YXQgdGhlIFNoYXJlZEJ1ZmZlciBoYXMgYmVlbiByZWppZ2dlZCwgc28gaXQgY2FuIGxldCBnbyBv
ZiBhbnkgcmVmZXJlbmNlcyB0byB0aGUgaGVhcC1hbGxvY2F0ZWQgcmVzb3VyY2UgYnVmZmVyLgor
ICAgICAgICAvLyBMZXQgdGhlIEltYWdlIGtub3cgdGhhdCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciBoYXMgYmVlbiByZWppZ2dlZCwgc28gaXQgY2FuIGxldCBnbyBvZiBhbnkgcmVmZXJlbmNl
cyB0byB0aGUgaGVhcC1hbGxvY2F0ZWQgcmVzb3VyY2UgYnVmZmVyLgogICAgICAgICAvLyBGSVhN
RShyZGFyOi8vcHJvYmxlbS8yNDI3NTYxNyk6IEl0IHdvdWxkIGJlIGJldHRlciBpZiB3ZSBjb3Vs
ZCBzb21laG93IHRlbGwgdGhlIEltYWdlJ3MgZGVjb2RlciB0byBzd2FwIGluIHRoZSBuZXcgY29u
dGVudHMgd2l0aG91dCBkZXN0cm95aW5nIGFueXRoaW5nLgogICAgICAgICBtX2ltYWdlLT5kZXN0
cm95RGVjb2RlZERhdGEodHJ1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaAppbmRleCBlMzg5NjJhMGRjYWZiY2VmNjMxYzE0ZTYzZmViODViYTA1NTIw
M2Y0Li4wODNmOTJmODg4Mjc2ZWVkYTg5OTEyMDMxZDI0NDlhOTY4ZTI2NWQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtNjksOCArNjksOCBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2lt
YWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlV2lkdGgoKTsgfQogICAgIGJvb2wgaW1hZ2VIYXNS
ZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVs
YXRpdmVIZWlnaHQoKTsgfQogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRp
bmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOwogCiAgICAgZW51bSBTaXplVHlwZSB7CiAgICAgICAgIFVzZWRTaXplLApA
QCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEo
KSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25z
dDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVk
QnVmZmVyKiBkYXRhKSBjb25zdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAg
ICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRh
dGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwpAQCAtMTY5LDcg
KzE2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwg
Y29uc3QgSW50UmVjdCopOwogICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3Qg
SW1hZ2UmKTsKIAotICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJik7
CisgICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CiAKICAgICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmNwcAppbmRleCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3ZjE4Mzk1NjJmLi44
OTVkYjExNThiNmI4YzhmYmY3YjEwYjQzYjYxNGVkYTk2MDIxY2RjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTQ4LDcgKzQ4
LDcgQEAgQ2FjaGVkUmF3UmVzb3VyY2U6OkNhY2hlZFJhd1Jlc291cmNlKENhY2hlZFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFR5cGUgdHlwZSwKICAgICBBU1NFUlQoaXNNYWluT3JNZWRpYU9y
SWNvbk9yUmF3UmVzb3VyY2UoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0
YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhj
b25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1
bmsoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKICAgICBzaXpl
X3QgcHJldmlvdXNEYXRhTGVuZ3RoID0gZW5jb2RlZFNpemUoKTsKICAgICBpZiAoIWRhdGEgfHwg
ZGF0YS0+c2l6ZSgpIDw9IHByZXZpb3VzRGF0YUxlbmd0aCkKQEAgLTU2LDcgKzU2LDcgQEAgc3Rk
OjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1
bGF0ZUluY3JlbWVudGFsRGF0YUMKICAgICByZXR1cm4gZGF0YS0+Z2V0U29tZURhdGEocHJldmlv
dXNEYXRhTGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVy
KFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZl
cihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIFNraXAgYW55
IHVwZGF0ZUJ1ZmZlcnMgdHJpZ2dlcmVkIGZyb20gbmVzdGVkIHJ1bmxvb3BzLiBXZSdsbCBoYXZl
IHRoZSBjb21wbGV0ZSBidWZmZXIgaW4gZmluaXNoTG9hZGluZy4KICAgICBpZiAobV9pbkluY3Jl
bWVudGFsRGF0YU5vdGlmeSkKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJj
ZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VS
VChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0
YSk7Ci0gICAgbV9kYXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91
cygpOwogCiAgICAgYXV0byBwcmV2aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3
aGlsZSAoZGF0YS5zaXplKCkgPiBwcmV2aW91c0RhdGFTaXplKSB7CkBAIC05Niw3ICs5Niw3IEBA
IHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxl
bmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENh
Y2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAo
bV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBtYXkgZ2V0IGhlcmUg
c3luY2hyb25vdXNseSBmcm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxsYmFjayB0aGVyZSBl
bmRzIHVwIHNwaW5uaW5nIGEgcnVubG9vcC4KQEAgLTEwNywxMiArMTA3LDE0IEBAIHZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3Vy
Y2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVm
ZmVyaW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOwogICAgIGlmIChkYXRh
QnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpIHsKLSAg
ICAgICAgbV9kYXRhID0gZGF0YTsKLQotICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEg
PSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewotICAgICAgICAgICAgc2V0
RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRh
V2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6
ZSgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZGF0YSkgeworICAgICAgICAgICAgbV9kYXRh
ID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGluY3JlbWVu
dGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7CisgICAgICAg
ICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBu
b3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNy
ZW1lbnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5k
ZXggODRlMGQ4NDRkNTcxMDk5NTNhZTZiZmY2NTU2NTk5NTNlMjhiYTY5Yi4uYTc4NjVmOGFkMTc4
YWVmYjMyMjBhNTZkY2ZmMTk1OTkzY2Y5NWFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Jikg
ZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAg
dm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwog
ICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgp
IGZpbmFsOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
CiAgICAgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJp
ZGU7CkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzd2l0Y2hDbGllbnRzVG9S
ZXZhbGlkYXRlZFJlc291cmNlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5j
b2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2FsbG93RW5jb2RlZERhdGFSZXBs
YWNlbWVudDsgfQogCi0gICAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2Fs
Y3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyKikgY29uc3Q7Cisg
ICAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50
YWxEYXRhQ2h1bmsoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopIGNvbnN0OwogICAgIHZv
aWQgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpOwogICAgIAogI2lmIFVTRShRVUlDS19MT09LKQpAQCAtOTIsNyArOTIsNyBA
QCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWRpcmVjdFBhaXIsIDAsIENyYXNoT25PdmVyZmxvdywg
MD4gbV9yZWRpcmVjdENoYWluOwogCiAgICAgc3RydWN0IERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsK
LSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIH07CiAgICAgc3RkOjpvcHRp
b25hbDxEZWxheWVkRmluaXNoTG9hZGluZz4gbV9kZWxheWVkRmluaXNoTG9hZGluZzsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCAz
YWU4YmI2OGQyNWNkZGQxODAyMDkyMmY1ZWRiMjRkNGI5MTIwMDAyLi5iZjY5ZTgwZTU3NmUxYTI4
OGY2YTAxMWY1NDYxNDYzMTU1ODAxZDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIENhY2hlZFJl
c291cmNlOjpjaGVja05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAg
ICAgICAgIGNsaWVudC0+bm90aWZ5RmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lk
IENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVk
UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikKIHsK
ICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkJ1ZmZlckRhdGEpOwogfQpAQCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6
OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkKQogICAgIEFTU0VSVChkYXRhQnVm
ZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsK
IH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJlc291cmNlOjpm
aW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hl
Y2tOb3RpZnkobWV0cmljcyk7CkBAIC05MjcsOCArOTI3LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJj
ZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlm
ICgqbV9kYXRhICE9IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5j
bGVhcigpOwotICAgIG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVm
IHsgbmV3QnVmZmVyIH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXgg
Mzk2MDAyODMyY2MxNTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uYzk4MmRkNjkzN2EwYmMy
YmYzOGM0MjYxMjZmZmU2ZTc4Yzc5NjQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgQ29va2llSmFyOwog
Y2xhc3MgTWVtb3J5Q2FjaGU7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBTZWN1
cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29k
ZXI7CiAKQEAgLTExMiw5ICsxMTIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEVu
Y29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkg
Y29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJj
ZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5n
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyk7CiAKICAg
ICB2b2lkIHNldFJlc291cmNlRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIHsgbV9l
cnJvciA9IGVycm9yOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcAppbmRleCA3ZGExNDg1MWE3MDc4NGFhYmU5ODM5YjcwNmEwYjFiMzMx
ZjJjODM5Li5kYjQzMTYwN2FlNTYzODMwMzgwMGRkMjU5YzEwMzRjZDA5MGZjZmUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKQEAg
LTUyLDEyICs1MiwxMiBAQCBTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmVuY29kaW5nKCkgY29u
c3QKICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBD
YWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZp
bmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8v
IFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1
bWVudCBiZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1bWVu
dCA9IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2UoKS51
cmwoKSk7Ci0gICAgICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOworICAgICAgICBtX2RvY3VtZW50
LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCmluZGV4IGU4YzE1ZjM2MGZjOTFhYzhiMzRk
Mzk2Mjk1YzUzZDNjN2YxNDdlYWEuLjQ0NWU0ZjlmNDJjM2MyNzQwNzk3NmE2NGU5MTU0MDdmOGI1
MzRkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1
bWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVy
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92
ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8
U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+
IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250
LmNwcAppbmRleCBhOGVmNTc2YmI2OTM5MzNhMjIzNDY5NTU1NzU2YjM2NjdlNDg2MzJlLi5kMmMx
ZGU0N2VmYjc4MTM5OGY0NDM4YjdjYTRlYTI2MGUyMjE5NzY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIGJvb2wg
Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVt
b3RlVVJJKQogCiAgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkRpc2FibGVBc3Nl
cnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogCi0gICAgICAgICAgICBtX2V4dGVybmFsU1ZH
RG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRh
KCksIG1fZGF0YS0+c2l6ZSgpKSk7CisgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQt
PnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBzYXdFcnJvciA9IGRl
Y29kZXItPnNhd0Vycm9yKCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCA0N2E5ZjU3NjA3Yjk4Mjg0ZThmNzllMmNkZWNl
OWJlNDE4ZjE3YjY1Li5iNjczOThiMGU0ZjU2ZmU3YWJjYjI3NGQwZTM2ODQzMDM2MzUwODkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtOTYs
MTAgKzk2LDE1IEBAIHVuc2lnbmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAgICAgcmV0
dXJuIG1fc2NyaXB0SGFzaDsKIH0KIAotdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmco
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2
b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9k
YXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7
CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAg
ICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5MjRi
ODRjYTJkODcxNmUzNDYwNzdlZWViNWNjMzRiY2VkZTdlMjNkLi44NjUxZTYzOWFkOTA2MTcyODU2
MWMzMjRiZmE3YWY0Y2Y5N2Y2ZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNjcmlwdC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNv
ZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBm
aW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVy
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
OworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICB2b2lkIGRlc3Ryb3lEZWNv
ZGVkRGF0YSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRUZXh0VHJhY2suY3BwCmluZGV4IDEyMjk4MTUwMzEyODg2MWVjNGY1ZWI0Y2Y1MGYzMjA4NmI1
ZGViNjEuLjBjODQyOGJiOTlkYjZkZmIxNmEzNDgxMzRjMzgyNjgzNmNjZTU0MDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCkBAIC00MCwx
MCArNDAsMTAgQEAgQ2FjaGVkVGV4dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQKIHsKIH0KIAotdm9pZCBDYWNoZWRU
ZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVk
VGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmlu
Z1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gZGF0YTsKKyAgICBtX2RhdGEgPSBk
YXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxTaGFyZWRCdWZmZXI+KCk7CiAg
ICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwogCiAgICAgQ2FjaGVk
UmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVu
dHMpOwpAQCAtNTEsMTMgKzUxLDEzIEBAIHZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1
ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIGNsaWVudC0+ZGVwcmVjYXRlZERpZFJl
Y2VpdmVDYWNoZWRSZXNvdXJjZSgqdGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVw
ZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGRv
VXBkYXRlQnVmZmVyKCZkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRh
dGEpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
VGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBkb1VwZGF0ZUJ1
ZmZlcihkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRy
aWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0
VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaApp
bmRleCA4NWUzOTYyMDY1MTMxNjA3MDM2NTNlYjIyYzc3MTM4YjkxNTA3YWRkLi4wOWI0MzM5YTM3
YjY3M2IyYWM0ZmRhZTE0NmIyOWI5NjQ3NzdmY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCkBAIC0zNSwxMCArMzUsMTAgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hM
b2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVy
Kik7CisgICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Kik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2NDg3
OTQ3OTJmMTg5MGY0NjdhMjc4MjYxNWQzNDAwYy4uZDJlZmYyZDJkNDBjOTI3NzM4NzU2YzRhOGYw
Y2JiOTM0M2JlMTBhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjEsMTIgKzYxLDE2IEBAIFN0cmluZyBDYWNoZWRY
U0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5j
b2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKK3ZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+
c2l6ZSgpIDogMCk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXIt
PmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgaWYgKGRh
dGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAg
c2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXpl
KDApOworICAgIH0KICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRy
aWNzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5
bGVTaGVldC5oCmluZGV4IDY4NDJiNjQ0ZjYxY2Y5MGY3ZjYxYjJmN2VjNWUwMDY1NGNkMTBjY2Mu
LmJkMjMxMjE0ZjJkMjBiYTM5NjQ0NjAzNjZlMDQxYjk0MTM1YWM0Y2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaApAQCAtNDcsNyAr
NDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmlu
YWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJl
c291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRp
bmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIGZpbmFsOwogCiAgICAgU3RyaW5nIG1fc2hlZXQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJj
ZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
b3MvTGVnYWN5UHJldmlld0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLmgKaW5kZXggNTUyNTYxZDZjODE2ZDNkMjBiY2ZjY2IyZTY1ODNiN2Rl
OTRiOTRhMi4uNjZiOTM1OGVjNTMxMTE0ODQ4MjJhN2NjMjRlN2YzYTk5MTcwNjVhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5p
cXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMzcsNyArMzgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMZWdhY3lQcmV2
aWV3TG9hZGVyQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2Fk
ZXIgZmluYWwgOiBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmll
d0NvbnZlcnRlclByb3ZpZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ4
LDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIGJvb2wgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29sIGRpZFJlY2VpdmVCdWZmZXIoY29u
c3QgU2hhcmVkQnVmZmVyJik7CisgICAgYm9vbCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBib29sIGRpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2
b2lkIGRpZEZhaWwoKTsKIApAQCAtNjAsMTcgKzYyLDE3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
cmV2aWV3Q29udmVydGVyRGlkRmluaXNoVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFs
IHsgfTsKICAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsVXBkYXRpbmcoUHJldmlld0Nv
bnZlcnRlciYpIGZpbmFsOwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVy
dGluZyhQcmV2aWV3Q29udmVydGVyJikgZmluYWw7Ci0gICAgdm9pZCBwcmV2aWV3Q29udmVydGVy
RGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZp
bmFsOworICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252
ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBw
cmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgZmlu
YWw7CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbENvbnZlcnRpbmcoUHJldmlld0Nv
bnZlcnRlciYpIGZpbmFsOwogCiAgICAgLy8gUHJldmlld0NvbnZlcnRlclByb3ZpZGVyCi0gICAg
dm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVy
dGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJikgZmlu
YWw7CisgICAgdm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2
aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKik+JiYpIGZpbmFsOwogICAgIHZvaWQgcHJvdmlkZVBhc3N3b3JkRm9yUHJldmll
d0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBTdHJpbmcmKT4mJikgZmluYWw7CiAKICAgICBSZWZQdHI8UHJldmlld0NvbnZlcnRlcj4gbV9j
b252ZXJ0ZXI7CiAgICAgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1fY2xpZW50Owot
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fb3JpZ2luYWxEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPiBtX29yaWdpbmFsRGF0YTsKICAgICBXZWFrUHRyPFJlc291cmNlTG9h
ZGVyPiBtX3Jlc291cmNlTG9hZGVyOwogICAgIGJvb2wgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50
b0NvbnZlcnRlciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlIHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJl
dmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xv
YWRlci5tbQppbmRleCBkMThiMjUyZTk3NTZjOGNlMGM5NWI2M2U3OGRkMDA5N2VmMmE1NzM0Li42
MWNjNmRkNDIzODlkYWI2N2I0OTU0OTY1NGRlZjgxYzJlZjQ1YTFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC02Myw3ICs2Myw3
IEBAIHN0YXRpYyBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbWFrZUNsaWVudChjb25z
dCBSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjCiAgICAgcmV0dXJuIGVtcHR5Q2xpZW50KCk7CiB9
CiAKLWJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1f
ZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252
ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYgYwogICAgICAgICByZXR1
cm47CiAKICAgICBBU1NFUlQoIW1faGFzUHJvY2Vzc2VkUmVzcG9uc2UpOwotICAgIG1fb3JpZ2lu
YWxEYXRhLT5jbGVhcigpOworICAgIG1fb3JpZ2luYWxEYXRhLT5lbXB0eSgpOwogICAgIHJlc291
cmNlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5zZXRQcmV2aWV3Q29udmVydGVyKFdURk1vdmUo
bV9jb252ZXJ0ZXIpKTsKICAgICBhdXRvIHJlc3BvbnNlIHsgY29udmVydGVyLnByZXZpZXdSZXNw
b25zZSgpIH07CiAKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6
OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYgYwog
ICAgIH0pOwogfQogCi12b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJE
aWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KQordm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURh
dGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEp
CiB7CiAgICAgYXV0byByZXNvdXJjZUxvYWRlciA9IG1fcmVzb3VyY2VMb2FkZXIuZ2V0KCk7CiAg
ICAgaWYgKCFyZXNvdXJjZUxvYWRlcikKQEAgLTIyNCwxMCArMjI0LDEwIEBAIHZvaWQgTGVnYWN5
UHJldmlld0xvYWRlcjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3
Q29udmVydGVyJiBjCiAgICAgbV9jbGllbnQtPmRpZFJlcXVlc3RQYXNzd29yZChXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVy
dGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291
cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVy
ID09IG1fY29udmVydGVyKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5w
dHIoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEtPmdldCgpLmdldCgp
KTsKIH0KIAogTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRl
ZmF1bHQ7CkBAIC0yMzUsNyArMjM1LDcgQEAgTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVBy
ZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CiBMZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2
aWV3TG9hZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogICAgIDogbV9jb252ZXJ0ZXIgeyBQcmV2aWV3Q29udmVydGVyOjpjcmVhdGUo
cmVzcG9uc2UsICp0aGlzKSB9CiAgICAgLCBtX2NsaWVudCB7IG1ha2VDbGllbnQobG9hZGVyLCBt
X2NvbnZlcnRlci0+cHJldmlld0ZpbGVOYW1lKCksIG1fY29udmVydGVyLT5wcmV2aWV3VVRJKCkp
IH0KLSAgICAsIG1fb3JpZ2luYWxEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAg
LCBtX29yaWdpbmFsRGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpIH0KICAgICAsIG1fcmVzb3VyY2VMb2FkZXIg
eyBsb2FkZXIgfQogICAgICwgbV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9h
ZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1
aWNrTG9va1ByZXZpZXcoKSB9CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Vk
aXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCA4
MjM3NGU3MjYyYzcwZWE5ZGZlNGQ2NGYyNWFiMTM1YWE2MDMzM2NmLi5lYTYxNWRmZjRkZDBlZDUx
NGJmZjY0NDI2NDdlYzQ2MjBmNjMyMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgK
QEAgLTM4LDEyICszOCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgRE9N
UGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFz
cyBLZXlib2FyZEV2ZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBjbGFzcyBU
ZXh0Q2hlY2tlckNsaWVudDsKIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CkBAIC03OCw3ICs3OSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUo
Y29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTaW1wbGVSYW5nZSYpID0gMDsKIAogI2lmIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVu
dElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBjb25zdCBTdHJpbmcm
IC8qIGNvbnRlbnRUeXBlICovLCBjb25zdCBTdHJpbmcmIC8qIHByZWZlcnJlZEZpbGVOYW1lICov
LCBSZWY8U2hhcmVkQnVmZmVyPiYmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRh
Y2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0
cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogcHJlZmVycmVkRmlsZU5h
bWUgKi8sIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZp
ZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyog
ZmlsZVBhdGggKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZl
Y3RvcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAq
LykgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDFhMTIxMGZh
ODMzN2NkOTUyMGY0ZTAxMWE5MDczNjc1NGRlNTE4ZjEuLmFjNTNjYjE0YmYwMGU1MTY0N2M5ZWM5
MTEwOThiZWEwMzYxNTExMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNl
cmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3Bw
CkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291
cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICBpZiAoIWlt
YWdlIHx8IGltYWdlLT5pbWFnZSgpID09ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVyID8g
aW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CisgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVyID8gaW1h
Z2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CiAgICAgaWYg
KCFkYXRhKQogICAgICAgICBkYXRhID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKIApAQCAtMjgy
LDcgKzI4Miw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2Fj
aGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBpbWFnCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1p
bWVUeXBlKCksIFdURk1vdmUoZGF0YSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJs
LCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBkYXRhLT5tYWtlQ29udGlndW91cygpIH0p
OwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YVJlYWRlci5jcHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZm
ZjQyZThlMC4uNzU4MzZiODc5MTQzYjYwYTdmMzUxOTcwMzIwN2I2YWQzZDhkNGY4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJl
RGF0YVJlYWRlcigpCkBAIC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRp
ZEZpbmlzaExvYWRpbmcoaW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAg
ICAgICAgY2FuY2VsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRv
IGFycmF5QnVmZmVyID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVy
UmVzdWx0KCk7Ci0gICAgCisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9
IGZpbGVOYW1lOwogICAgIGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5
QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChXVEZN
b3ZlKGZpbGUpKTsKICAgICBtX2ZpbGVzUmVhZFNvRmFyKys7Ci0gICAgCisKICAgICBpZiAobV9m
aWxlc1JlYWRTb0ZhciA9PSBzdGF0aWNfY2FzdDxpbnQ+KG1fcGVuZGluZ0ZpbGVMb2Fkcy5zaXpl
KCkpKSB7CiAgICAgICAgIG1fcGVuZGluZ0ZpbGVMb2Fkcy5jbGVhcigpOwogICAgICAgICBpZiAo
YXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxl
ciwgeyB9KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCmlu
ZGV4IGUzODA2ZTg3ZGY3OWEzZDliNWNhZTEyMTRkZTY2YWEyYTY1ODQ3ZGIuLmZjNjZjMzY1YTJm
MjlhNGM3OGU2MDYxOWU0N2E3MWM3MjU4ZDhmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTm93UGxheWluZ01hbmFnZXIuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHN0
ZDo6b3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IG1fbm93UGxheWluZ0luZm87CiAgICAgc3RydWN0
IEFydHdvcmtDYWNoZSB7CiAgICAgICAgIFN0cmluZyBzcmM7Ci0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGltYWdlRGF0YTsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8QXJ0d29ya0NhY2hlPiBt
X25vd1BsYXlpbmdJbmZvQXJ0d29yazsKICAgICBib29sIG1fc2V0QXNOb3dQbGF5aW5nQXBwbGlj
YXRpb24geyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRl
eCAxNTczMWViMjNmYTc2OTQ5NjBkZDgwNDk2ZmE4ZjJmOWU4Yzc3ODBmLi4wN2VkNDhlNTg4NGVj
ZWVkYzYxZmQ5M2U2YjIyMTcxYmU4ODU4OWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkLmNwcApAQCAtODksNyArODksNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmlu
ZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICByZXR1cm4geyB9OwogfQog
Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJh
dGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kt
PnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgdHlwZSwgbmFtZSgpLCBjb250ZXh0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDdkMjQ3ZGNkMWExNmYzNDJj
MTc1NGM0NWM0YTczNTI5YmY4ZjcxYjIuLjM1NzYzZWUxMmEzOTBlZmM4NDUyYzM1ODA2YjUxMmJl
NDI5YWQ5NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDEyICs2
MSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNz
IERyYWdEYXRhOwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgUGFzdGVib2Fy
ZFN0cmF0ZWd5OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIAogc3RydWN0IFNpbXBsZVJhbmdlOwogCkBAIC0xNDcsMTYgKzE0OCwxNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50
YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUgPSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRocyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEhUTUwoY29u
c3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFBy
ZXNlbnRhdGlvblNpemUgPSB7IH0pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZEltYWdlKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRh
dGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSA9IDA7CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShT
aGFyZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZl
ciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSA9IDA7Ci0g
ICAgdmlydHVhbCBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFBy
ZXNlbnRhdGlvblNpemUgPSB7IH0pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFdlYkFyY2hp
dmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFJU
RkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFJU
RihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkRGF0
YUJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6
ZSA9IHsgfSkgPSAwOwogI2VuZGlmCiB9OwogCkBAIC0xNzEsNyArMTcyLDcgQEAgc3RydWN0IFBh
c3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICB2aXJ0dWFsIH5QYXN0ZWJvYXJkRmlsZVJlYWRlcigp
ID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYp
ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIC8q
IHR5cGUgKi8pIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVhZEJ1
ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKSA9IDA7CiB9OwogCiBjbGFzcyBQYXN0ZWJvYXJkIHsKQEAgLTI5Niw3ICsyOTcsNyBA
QCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IHBhc3RlYm9h
cmRJdGVtSW5mbyhzaXplX3QgaW5kZXgpIGNvbnN0OwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmco
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUp
OworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICBVUkwgcmVhZFVSTChzaXpl
X3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpOwogCiAgICAgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
IGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCA5ZDNmODdh
OTExNGMzOGE1NGUzM2EwNWUyYjk4OTUyY2NmNjdhZTcwLi43YjRiM2QzNmFhNjgwMzYxMTg3OTEz
MWI1YTFiMjI2YjU4OGQzNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZEN1c3RvbURhdGEuY3BwCkBAIC0zMywxMyArMzMsMTMgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1zdGF0aWMgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+
IGNvcHlQbGF0Zm9ybURhdGEoY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1
ZmZlcj4+JiBvdGhlcikKK3N0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+IGNvcHlQbGF0Zm9ybURhdGEoY29uc3Qgc3RkOjp2YXJpYW50PFN0cmlu
ZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYgb3RoZXIpCiB7CiAgICAgaWYgKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihvdGhlcikpCiAgICAgICAgIHJldHVybiB7IHN0ZDo6
Z2V0PFN0cmluZz4ob3RoZXIpIH07CiAKLSAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxS
ZWY8U2hhcmVkQnVmZmVyPj4ob3RoZXIpKQotICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxSZWY8
U2hhcmVkQnVmZmVyPj4ob3RoZXIpLmNvcHlSZWYoKSB9OworICAgIGlmIChzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ob3RoZXIpKQorICAgICAgICBy
ZXR1cm4geyBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG90aGVyKS5jb3B5
UmVmKCkgfTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIHZhbHVlKQogICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZvcm1E
YXRhID0geyB2YWx1ZSB9OwogfQogCi12b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZURh
dGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFBh
c3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQo
dHlwZSkucGxhdGZvcm1EYXRhID0geyBXVEZNb3ZlKGRhdGEpIH07CiB9CkBAIC0yMDIsMTQgKzIw
MiwxNCBAQCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6c2Ft
ZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGEoKSBjb25zdAogICAgIHJldHVybiBjdXN0b21EYXRhOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZl
cihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBj
b25zdAogewogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgaWYgKGVu
dHJ5LnR5cGUgIT0gdHlwZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURh
dGEpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihlbnRy
eS5wbGF0Zm9ybURhdGEpLmNvcHlSZWYoKTsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4o
ZW50cnkucGxhdGZvcm1EYXRhKS5jb3B5UmVmKCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQpAQCAtMjY1LDExICsyNjUsMTEgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Zm9yRWFjaEN1c3RvbVN0cmluZyhGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwKICAg
ICB9CiB9CiAKLXZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZvckVhY2hQbGF0Zm9ybVN0cmlu
Z09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZh
cmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25z
dAordm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZm
ZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxT
dHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBj
b25zdAogewogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgYXV0byYg
ZGF0YSA9IGVudHJ5LnBsYXRmb3JtRGF0YTsKLSAgICAgICAgaWYgKChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFN0cmluZz4oZGF0YSkgJiYgIXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkuaXNOdWxsKCkp
IHx8IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQorICAg
ICAgICBpZiAoKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpn
ZXQ8U3RyaW5nPihkYXRhKS5pc051bGwoKSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQogICAgICAgICAgICAgZnVuY3Rpb24oZW50
cnkudHlwZSwgZGF0YSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRDdXN0b21EYXRhLmgKaW5kZXggMmJlODFkMjkzOGEzZGJkMDkwMjZjYTZlYzY0YWMz
Mjg3ZTZhYmMwMy4uOTdmZjk4NWUyNGUxMWI0YzdiYjQxNDM3MzdmMDI4NDBjMzVmZmNlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC0z
NSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21E
YXRhIHsKIHB1YmxpYzoKQEAgLTQ4LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgICAgIFN0cmlu
ZyB0eXBlOwogICAgICAgICBTdHJpbmcgY3VzdG9tRGF0YTsKLSAgICAgICAgc3RkOjp2YXJpYW50
PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+IHBsYXRmb3JtRGF0YTsKKyAgICAgICAgc3RkOjp2
YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBwbGF0Zm9ybURhdGE7
CiAgICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFBhc3RlYm9hcmRDdXN0b21EYXRhKCk7CkBA
IC02NSwxMSArNjYsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6
OkRlY29kZXImJik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUp
IGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoY29uc3QgU3RyaW5n
JiB0eXBlKSBjb25zdDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1
ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwogICAgIFN0cmluZyByZWFkU3RyaW5nSW5D
dXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAKICAgICB2b2lkIHdyaXRlU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdm9pZCB3
cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpOwor
ICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgZGF0YSk7CiAgICAgdm9pZCB3cml0ZVN0cmluZ0luQ3VzdG9tRGF0YShjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiAgICAgdm9pZCBjbGVhcigp
OwpAQCAtODMsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZvckVhY2hUeXBlKEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpIGNvbnN0OwogICAgIHZvaWQgZm9yRWFjaFBsYXRm
b3JtU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IGRhdGEpPiYmKSBjb25zdDsKLSAgICB2b2lkIGZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVy
KEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3Ry
aW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmKSBjb25zdDsKKyAgICB2b2lkIGZvckVh
Y2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
JiBkYXRhKT4mJikgY29uc3Q7CiAgICAgdm9pZCBmb3JFYWNoQ3VzdG9tU3RyaW5nKEZ1bmN0aW9u
PHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpPiYmKSBjb25zdDsK
IAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCAxYzA3MjZmZWIzZTAyYWVkMzJiNDZmMjYyYmNkYTE2
OWQ2NzJlYjJjLi5jNDFlMDg1MjQ0OTZjNjdmMWYxNTAzOGZiYjI2ZTljMjlkYTY5OGM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsMTAg
KzMxLDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgU2hh
cmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVj
dCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKQEAgLTYyLDcgKzYz
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRU
eXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0
dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlw
ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9
IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7
CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldENvbG9yKGNvbnN0IENvbG9yJiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmly
dHVhbCBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtQ29udGVudEZpbHRlci5oCmluZGV4IDNmNDgzMmE1YTY1OGMxY2M3YzBhYTEzYjI2ZTBlYTQ3
MzNlOWQzYjcuLjllNzJlNDRhMmVhYzRkOGVmNzMwYjk4NzFkMGVjNTA4ZWQ5ZmFjNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCkBAIC0z
NCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
CiBjbGFzcyBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNl
UmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
YWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpID0gMDsKLSAgICB2aXJ0dWFsIFJlZjxTaGFyZWRC
dWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCA9IDA7CiAjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIHZpcnR1YWwgQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkgY29uc3QgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDdhMmEzMTAwNzQyNTAwMjQz
YmI0NmZmNTk4Njg2MWU4NGEyZmQ5NmUuLjcxZGZiOTNlNTc1NjBlMzNhN2Y2YzgwYzIwZjkyZDVi
MmNhZWMxMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFz
dGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2Fy
ZC5oCkBAIC00NywxMyArNDcsMTQgQEAgc3RydWN0IHdwZV9wYXN0ZWJvYXJkOwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBh
c3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZv
Owogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybVBhc3RlYm9hcmQg
ewogcHVibGljOgpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRo
b2RzIHdpbGwgcmV0dXJuIDAgaWYgcGFzdGVib2FyZCBvd25lcnNoaXAgaGFzIGJlZW4gdGFrZW4g
ZnJvbSB1cy4KICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IGNvcHkoY29uc3QgU3RyaW5nJiBm
cm9tUGFzdGVib2FyZCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZmZXJGb3JU
eXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdF
QkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
aW50NjRfdCBzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IGludDY0X3Qgc2V0Q29sb3IoY29uc3QgQ29sb3ImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2
NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3Bw
CmluZGV4IDRjYjMzMDFlN2RmNzA3MWM1ZGQ5ZmM1OWJjNTcxODVjNGU5MTQ3NjguLjYzMWFkZTdj
Y2Y3YWQyOTY5M2EyZTc2NTFmZTZhOWNkZWJkMzc3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCkBAIC02Myw5ICs2Myw5IEBAIGNvbnN0IFJlc291
cmNlRXJyb3ImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdFcnJvcigpIGNvbnN0CiAgICAgcmV0
dXJuIG1fcHJldmlld0Vycm9yOwogfQogCi1jb25zdCBTaGFyZWRCdWZmZXImIFByZXZpZXdDb252
ZXJ0ZXI6OnByZXZpZXdEYXRhKCkgY29uc3QKK2NvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9w
cmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gKm1fcHJldmlld0RhdGEtPmdldCgpOwogfQog
CiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSgpCkBAIC05MCw3ICs5
MCw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKICAgICB9
KTsKIH0KIAotdm9pZCBQcmV2aWV3Q29udmVydGVyOjphcHBlbmRGcm9tQnVmZmVyKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBQcmV2aWV3Q29udmVydGVyOjphcHBlbmRGcm9tQnVm
ZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICB3aGlsZSAo
YnVmZmVyLnNpemUoKSA+IG1fbGVuZ3RoQXBwZW5kZWQpIHsKICAgICAgICAgYXV0byBuZXdEYXRh
ID0gYnVmZmVyLmdldFNvbWVEYXRhKG1fbGVuZ3RoQXBwZW5kZWQpOwpAQCAtMjIyLDcgKzIyMiw3
IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRl
ckNsaWVudCYgY2xpZW50KQogICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252
ZXJ0aW5nKCp0aGlzKTsKIAogICAgIGlmICghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpICYmIGhh
c0NsaWVudChjbGllbnQpKQotICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2Vp
dmVEYXRhKCp0aGlzLCBtX3ByZXZpZXdEYXRhLmdldCgpKTsKKyAgICAgICAgY2xpZW50LnByZXZp
ZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgKm1fcHJldmlld0RhdGEtPmdldCgpKTsK
IAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDb252ZXJ0aW5nIHx8ICFoYXNDbGllbnQoY2xp
ZW50KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgUHJldmlld0Nv
bnZlcnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQog
ICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZygqdGhpcyk7CiB9
CiAKLXZvaWQgUHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmRlbGVnYXRlRGlkUmVj
ZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBhdXRv
IHByb3RlY3RlZFRoaXMgeyBSZWYgeyAqdGhpcyB9IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAppbmRleCAyYTM3MjkyMjc5OWNlNmFmZmFhYjNlMTQwZDE5
MGJhNjRjZjhjZTJiLi45MjAyZWRkZDllMTA1YjI3MzVlZGMxNDZmMjY2NGMxM2NiOWMzNDFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCkBAIC00MSwxNSArNDIsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3OworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIHN0cnVjdCBQcmV2aWV3Q29u
dmVydGVyQ2xpZW50Owogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcjsKIAogc3RydWN0
IFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlIDogQ2FuTWFrZVdlYWtQdHI8UHJldmlld1BsYXRmb3Jt
RGVsZWdhdGU+IHsKICAgICB2aXJ0dWFsIH5QcmV2aWV3UGxhdGZvcm1EZWxlZ2F0ZSgpID0gZGVm
YXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0
YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
ZWxlZ2F0ZURpZEZpbmlzaExvYWRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRl
RGlkRmFpbFdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogfTsKQEAgLTcyLDcg
Kzc0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwcmV2aWV3RmlsZU5h
bWUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJldmlld1VUSSgpIGNvbnN0
OwogICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIHByZXZpZXdFcnJvcigpIGNvbnN0OwotICAgIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgcHJldmlld0RhdGEoKSBjb25zdDsKKyAgICBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBwcmV2aWV3RGF0YSgpIGNvbnN0OwogCiAgICAgdm9pZCBmYWlsZWRV
cGRhdGluZygpOwogICAgIHZvaWQgZmluaXNoVXBkYXRpbmcoKTsKQEAgLTk0LDcgKzk2LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIGlzUGxhdGZvcm1QYXNzd29yZEVycm9yKGNvbnN0IFJlc291cmNl
RXJyb3ImKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgaXRlcmF0ZUNs
aWVudHMoVCYmIGNhbGxiYWNrKTsKLSAgICB2b2lkIGFwcGVuZEZyb21CdWZmZXIoY29uc3QgU2hh
cmVkQnVmZmVyJik7CisgICAgdm9pZCBhcHBlbmRGcm9tQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZEFkZENsaWVudChQcmV2aWV3Q29udmVydGVyQ2xp
ZW50Jik7CiAgICAgdm9pZCBkaWRGYWlsQ29udmVydGluZ1dpdGhFcnJvcihjb25zdCBSZXNvdXJj
ZUVycm9yJik7CiAgICAgdm9pZCBkaWRGYWlsVXBkYXRpbmcoKTsKQEAgLTEwNiw3ICsxMDgsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1VbmxvY2tXaXRoUGFzc3dvcmQoY29uc3QgU3Ry
aW5nJik7CiAKICAgICAvLyBQcmV2aWV3UGxhdGZvcm1EZWxlZ2F0ZQotICAgIHZvaWQgZGVsZWdh
dGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIGRl
bGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFs
OwogICAgIHZvaWQgZGVsZWdhdGVEaWRGaW5pc2hMb2FkaW5nKCkgZmluYWw7CiAgICAgdm9pZCBk
ZWxlZ2F0ZURpZEZhaWxXaXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCkBA
IC0xMTgsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRmluaXNoZWRDb252ZXJ0aW5nLAog
ICAgIH07CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX3ByZXZpZXdEYXRhOworICAgIFVuaXF1
ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX3ByZXZpZXdEYXRhOwogICAgIFJlc291cmNlRXJy
b3IgbV9wcmV2aWV3RXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX29yaWdpbmFsUmVzcG9u
c2U7CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpVcGRhdGluZyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oCmluZGV4IDA0ZWEzNjgw
NjkyYjI1MmExOTg5YzI2Y2EyMDQyMTI3NzdhYTNiN2IuLjljZWU5MzMyMGIyMzhiNGNkNzNjZGQy
ZTAzMDJjM2JmNGRhZDY4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2
aWV3Q29udmVydGVyQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBQcmV2aWV3Q29udmVydGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQ
cmV2aWV3Q29udmVydGVyQ2xpZW50IDogQ2FuTWFrZVdlYWtQdHI8UHJldmlld0NvbnZlcnRlckNs
aWVudD4gewogICAgIHZpcnR1YWwgflByZXZpZXdDb252ZXJ0ZXJDbGllbnQoKSA9IGRlZmF1bHQ7
CkBAIC00Miw3ICs0Miw3IEBAIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50IDogQ2FuTWFr
ZVdlYWtQdHI8UHJldmlld0NvbnZlcnRlckNsaWVudD4gewogICAgIHZpcnR1YWwgdm9pZCBwcmV2
aWV3Q29udmVydGVyRGlkRmluaXNoVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxVcGRhdGluZyhQcmV2aWV3Q29u
dmVydGVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRD
b252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHByZXZp
ZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hhcmVk
QnVmZmVyJiBuZXdEYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJE
aWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgbmV3RGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlk
RmluaXNoQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpID0g
MDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVy
dGVyUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQ
cm92aWRlci5oCmluZGV4IDgyNzg2MzkzZmNlZDc1NGM4NWY3YjI4OTEyNTJmNTE2YmVkMGQ1NDku
LmI5ODZlZTQwZDE5NzUxNzRmNTRhZDI5YTE2OGNhZGYxODk0NTZjM2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCkBAIC0zMiw3
ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJv
dmlkZXIgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI+IHsKICAgICB2
aXJ0dWFsIH5QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0Nv
bnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252
ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByb3ZpZGVQ
YXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGQ4ZTY4ZTMzNzc4MWZiMjlhZDM5YzU1Yjlh
ZmQzOTAwMzUzNTM4NWQuLjM3ZTQ1MzY3Mzg5NTE1MTMxNWIxMjcyNWNjZGU4ZGEzZjFkNjNjMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMzcsNjMgKzM3
LDUyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCitGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKQogewogICAgIGFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFy
ZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCitGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBz
aXplKQogewogICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRh
KSwgc2l6ZSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAg
ICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHsw
LCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKX0pOworICAgIG1fc2VnbWVu
dHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7
CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYm
IHByb3ZpZGVyKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cihEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKICAgICA6IG1fc2l6ZShwcm92aWRl
ci5zaXplKCkpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZShwcm92aWRlcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKSB9KTsKIH0KIAotU2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK0ZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsK
ICAgICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKLSNpZiBVU0UoR1NUUkVBTUVSKQotUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXIm
IG1hcHBlZEJ1ZmZlcikKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKG1hcHBlZEJ1ZmZlcikpOworICAgIGFwcGVuZChXVEZNb3ZlKGJ1
ZmZlcikpOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1
ZmZlciYgbWFwcGVkQnVmZmVyKQotICAgIDogbV9zaXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCisj
aWYgVVNFKEdTVFJFQU1FUikKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikK
IHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVk
QnVmZmVyKX0pOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIobWFwcGVkQnVmZmVyKSk7CiB9Ci0jZW5kaWYKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVN
YXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQotewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9
PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7
Ci0gICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQ
YXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGlu
Z1N1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwotICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOwotfQotCi1SZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCitGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVm
ZmVyJiBtYXBwZWRCdWZmZXIpCisgICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7
CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRC
dWZmZXIpIH0pOwogfQorI2VuZGlmCiAKLXN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNl
Z21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50
cywgc2l6ZV90IHNpemUpCitzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0Rh
dGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21l
bnRzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gY29tYmluZWREYXRhOwog
ICAgIGNvbWJpbmVkRGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwpAQCAtMTAzLDMz
ICs5MiwxOSBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29u
c3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvcgogICAgIHJldHVybiBjb21iaW5lZERh
dGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25z
dAorUmVmPFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3Vv
dXMoKSBjb25zdAogewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgLy8gRklYTUU6IFdlIG91Z2h0
IHRvIGJlIGFibGUgdG8gc2V0IHRoaXMgdG8gdHJ1ZSBhbmQgaGF2ZSBubyBhc3NlcnRpb25zIGZp
cmUuCi0gICAgLy8gUmVtb3ZlIGFsbCBpbnN0YW5jZXMgb2YgYXBwZW5kaW5nIGFmdGVyIGNhbGxp
bmcgdGhpcywgYmVjYXVzZSB0aGV5IGFyZSBhbGwgTyhuXjIpIGFsZ29yaXRobXMgc2luY2UgcjIx
NTY4Ni4KLSAgICAvLyBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50ID0gdHJ1ZTsKLSNl
bmRpZgotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA8PSAxKQotICAgICAgICByZXR1cm47Ci0K
KyAgICBpZiAobV9jb250aWd1b3VzKQorICAgICAgICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0
PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KHRoaXMp
KSB9OworICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCisgICAgICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAgICAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlS
ZWYoKSk7CiAgICAgYXV0byBjb21iaW5lZERhdGEgPSBjb21iaW5lU2VnbWVudHNEYXRhKG1fc2Vn
bWVudHMsIG1fc2l6ZSk7Ci0gICAgbV9zZWdtZW50cy5jbGVhcigpOwotICAgIG1fc2VnbWVudHMu
YXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSl9KTsK
LSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7Ci0gICAgQVNTRVJUKGludGVybmFs
bHlDb25zaXN0ZW50KCkpOwotfQotCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEo
KSBjb25zdAotewotICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgY29tYmluZUludG9PbmVTZWdtZW50KCk7Ci0gICAgQVNTRVJUKGludGVy
bmFsbHlDb25zaXN0ZW50KCkpOwotICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRh
dGEoKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERh
dGEpKTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25z
dAorVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29u
c3QKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBkYXRhLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoc2l6ZSgpKTsKQEAgLTEzOSw3ICsxMTQsNyBAQCBWZWN0b3I8dWludDhfdD4gU2hh
cmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLVZlY3Rv
cjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkKK1ZlY3Rvcjx1aW50OF90PiBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCiB7CiAgICAgaWYgKG1fc2VnbWVudHMuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTU0LDEzICsxMjksMTMgQEAgVmVjdG9y
PHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKQogICAgIHJldHVybiBjb21iaW5lZERh
dGE7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3IFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEo
c2l6ZV90IHBvc2l0aW9uKSBjb25zdAorU2hhcmVkQnVmZmVyRGF0YVZpZXcgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdAogewogICAgIGNv
bnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkqIGVsZW1lbnQgPSBnZXRTZWdtZW50Rm9yUG9zaXRp
b24ocG9zaXRpb24pOwogICAgIHJldHVybiB7IGVsZW1lbnQtPnNlZ21lbnQuY29weVJlZigpLCBw
b3NpdGlvbiAtIGVsZW1lbnQtPmJlZ2luUG9zaXRpb24gfTsKIH0KIAotY29uc3QgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBTaGFyZWRCdWZmZXI6OmdldFNlZ21lbnRGb3JQ
b3NpdGlvbihzaXplX3QgcG9zaXRpb24pIGNvbnN0Citjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpnZXRT
ZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aW9uKSBjb25zdAogewogICAgIFJFTEVBU0Vf
QVNTRVJUKHBvc2l0aW9uIDwgbV9zaXplKTsKICAgICBhdXRvIGNvbXBhcmF0b3IgPSBbXShjb25z
dCBzaXplX3QmIHBvc2l0aW9uLCBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5JiBlbnRyeSkg
ewpAQCAtMTcxLDcgKzE0Niw3IEBAIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0
b3JFbnRyeSogU2hhcmVkQnVmZmVyOjpnZXRTZWdtZW50Rm9yUG9zaXRpb24oCiAgICAgcmV0dXJu
IGVsZW1lbnQ7CiB9CiAKLVN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QK
K1N0cmluZyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CiB7CiAg
ICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgIGZvckVhY2hTZWdtZW50KFsmXShh
dXRvJiBzZWdtZW50KSB7CkBAIC0xODEsNyArMTU2LDIyIEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6
OnRvSGV4U3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygp
OwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSBjb25zdAorc2l6ZV90IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnNpemUoKSBjb25z
dAoreworICAgIHJldHVybiBtX3NpemU7Cit9CisKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFzaXplKCk7Cit9CisKK2Jvb2wgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9jb250aWd1b3VzOworfQorCitSZWZQdHI8QXJyYXlCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIHsKICAgICBhdXRvIGFycmF5QnVm
ZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHNpemUoKSksIDEpOwogICAgIGlmICghYXJyYXlCdWZmZXIpIHsKQEAgLTIwMCw2OCAr
MTkwLDY4IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpIGNvbnN0CiAgICAgcmV0dXJuIGFycmF5QnVmZmVyOwogfQogCi12b2lkIFNoYXJl
ZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEp
CiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBB
U1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgbV9zZWdtZW50cy5yZXNlcnZlQ2FwYWNpdHkobV9z
ZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0
IGF1dG8mIGVsZW1lbnQgOiBkYXRhLm1fc2VnbWVudHMpIHsKLSAgICAgICAgbV9zZWdtZW50cy51
bmNoZWNrZWRBcHBlbmQoe21fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAg
ICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IG1fc2l6ZSwgZWxlbWVudC5zZWdtZW50
LmNvcHlSZWYoKSB9KTsKICAgICAgICAgbV9zaXplICs9IGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgp
OwogICAgIH0KICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLXZvaWQg
U2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkK
K3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVT
ZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50
cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7
CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RG
TW92ZSh2ZWN0b3IpKSB9KTsKICAgICBtX3NpemUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRl
cm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0
b3I8dWludDhfdD4mJiBkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQo
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVk
SW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBhdXRvIGRh
dGFTaXplID0gZGF0YS5zaXplKCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5k
KHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpIH0pOwogICAgIG1f
c2l6ZSArPSBkYXRhU2l6ZTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9
CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhcigpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQoreworICAgIGFwcGVu
ZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsKK30KKwor
dm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjbGVhcigpCiB7CiAgICAgbV9zaXplID0gMDsK
ICAgICBtX3NlZ21lbnRzLmNsZWFyKCk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50
KCkpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAor
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHko
KSBjb25zdAogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNsb25lID0gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIpOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjbG9uZSA9IGFk
b3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcik7CiAgICAgY2xvbmUtPm1fc2l6ZSA9
IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1f
c2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21l
bnRzKQotICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe2VsZW1lbnQu
YmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBjbG9u
ZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVs
ZW1lbnQuc2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgQVNTRVJUKGNsb25lLT5pbnRlcm5hbGx5
Q29uc2lzdGVudCgpKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAg
cmV0dXJuIGNsb25lOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKLX0KLQotdm9pZCBTaGFy
ZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxj
b25zdCB1aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1
aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0CiB7CiAgICAgYXV0byBzZWdtZW50cyA9IG1fc2VnbWVu
dHM7CiAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogc2VnbWVudHMpCiAgICAgICAgIGFwcGx5KFNw
YW4geyBzZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVudC5zZWdtZW50LT5zaXplKCkgfSk7
CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWlu
dDhfdD4mIHByZWZpeCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6c3RhcnRz
V2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0CiB7CiAgICAgaWYg
KHByZWZpeC5lbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI4Myw3ICsyNzMsNyBA
QCBib29sIFNoYXJlZEJ1ZmZlcjo6c3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+
JiBwcmVmaXgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1WZWN0b3I8dWludDhfdD4g
U2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CitW
ZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6cmVhZChzaXplX3Qgb2Zmc2V0
LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAg
IGlmIChvZmZzZXQgPj0gc2l6ZSgpKQpAQCAtMzEwLDEyICszMDAsMTIgQEAgVmVjdG9yPHVpbnQ4
X3Q+IFNoYXJlZEJ1ZmZlcjo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25z
dAogICAgIHJldHVybiBkYXRhOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQq
IGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGNvcHlUbyhkZXN0aW5hdGlvbiwgMCwgbGVuZ3RoKTsKIH0KIAotdm9pZCBT
aGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6
ZV90IGxlbmd0aCkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZv
aWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogewog
ICAgIEFTU0VSVChsZW5ndGggKyBvZmZzZXQgPD0gc2l6ZSgpKTsKICAgICBpZiAob2Zmc2V0ID49
IHNpemUoKSkKQEAgLTM1MywxNCArMzQzLDEzIEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAg
ICAgfQogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNvbnN0Citib29s
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6Omhhc09uZVNlZ21lbnQoKSBjb25zdAogewotICAgIGF1
dG8gaXQgPSBiZWdpbigpOwotICAgIHJldHVybiBpdCAhPSBlbmQoKSAmJiArK2l0ID09IGVuZCgp
OworICAgIHJldHVybiBtX3NlZ21lbnRzLnNpemUoKSA9PSAxOwogfQogCiAjaWYgQVNTRVJUX0VO
QUJMRUQKLWJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0Citi
b29sIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QK
IHsKICAgICBzaXplX3QgcG9zaXRpb24gPSAwOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVu
dCA6IG1fc2VnbWVudHMpIHsKQEAgLTM3Miw3ICszNjEsNTcgQEAgYm9vbCBTaGFyZWRCdWZmZXI6
OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIH0KICNlbmRpZiAvLyBBU1NFUlRfRU5BQkxF
RAogCi1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29u
c3QKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0
cnVlOworfQorCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYg
c2VnbWVudCkKK3sKKyAgICBtX3NpemUgPSBzZWdtZW50LT5zaXplKCk7CisgICAgbV9zZWdtZW50
cy5hcHBlbmQoeyAwLCBXVEZNb3ZlKHNlZ21lbnQpIH0pOworICAgIG1fY29udGlndW91cyA9IHRy
dWU7Cit9CisKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIpCit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZm
ZXItPmhhc09uZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOworICAg
IG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsKKyAgICBpZiAoY29udGlndW91c0J1
ZmZlci0+aGFzT25lU2VnbWVudCgpKQorICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIGNv
bnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7CisgICAg
bV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAgIDogRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcihXVEZNb3ZlKGRhdGEpKQoreworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBl
ZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKK3sKKyAgICBp
ZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6OlllcykgeworICAgICAg
ICBib29sIG1hcHBpbmdTdWNjZXNzOworICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNz
KTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKKyAgICB9Cisg
ICAgcmV0dXJuIGNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7Cit9CisKK2NvbnN0IHVp
bnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Cit7CisgICAgaWYgKG1fc2VnbWVudHMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9zZWdtZW50
c1swXS5zZWdtZW50LT5kYXRhKCk7Cit9CisKK2NvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlcjo6ZGF0
YUFzQ2hhclB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGRhdGEoKSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkg
Y29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBb
XShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJu
IGRhdGEuZGF0YSgpOyB9LApAQCAtMzkxLDEzICs0MzAsMTMgQEAgY29uc3QgdWludDhfdCogU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlz
aXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKK2Jvb2wgRGF0YVNlZ21l
bnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPihtX2ltbXV0YWJsZURh
dGEpOwogfQogCiAjaWYgIVVTRShDRikKLXZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90
TmVlZGVkU29vbigpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmhpbnRNZW1v
cnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIHsKIH0KICNlbmRpZgpAQCAtNDA3LDcgKzQ0Niw3IEBA
IFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QK
ICAgICByZXR1cm4ge3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwg
c2l6ZSgpIH19OwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFy
ZWRCdWZmZXImIG90aGVyKSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpvcGVy
YXRvcj09KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogewogICAg
IGlmICh0aGlzID09ICZvdGhlcikKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00NTYsNyArNDk1
LDcgQEAgYm9vbCBTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBv
dGhlcikgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAorc2l6ZV90IERhdGFTZWdtZW50OjpzaXplKCkgY29u
c3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShj
b25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IHNpemVfdCB7IHJldHVybiBkYXRhLnNpemUo
KTsgfSwKQEAgLTQ3NSw3ICs1MTQsNyBAQCBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFi
bGVEYXRhKTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3
KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlv
bldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQorU2hhcmVkQnVmZmVy
RGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50
LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6
ZSkKICAgICA6IG1fc2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpKQogICAgICwgbV9wb3NpdGlvbldp
dGhpblNlZ21lbnQocG9zaXRpb25XaXRoaW5TZWdtZW50KQogICAgICwgbV9zaXplKHNpemUgPyAq
c2l6ZSA6IG1fc2VnbWVudC0+c2l6ZSgpIC0gcG9zaXRpb25XaXRoaW5TZWdtZW50KQpAQCAtNDk5
LDEyICs1MzgsMTcgQEAgY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEo
KSBjb25zdAogICAgIHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5T
ZWdtZW50OwogfQogCitjb25zdCBjaGFyKiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hh
clB0cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEoKSk7Cit9CisKIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Ojpj
cmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OwotICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgY29u
c3QgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OworICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVu
dCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAgICAgICBbc2VnbWVudCwg
c2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgp
XSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaAppbmRleCBmMjNmNWQ2OWFkMzJlZDY0MGI5NTc3YjJlNmM0NTQ5MTgzOTM2
OGFkLi4wNTRjNDZjZDNhYzAxOTI4YTY2ZDcyNzk5NWRiMDJhMWRlZDBlNTg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTYyLDE0NiArNjIsMTMzIEBA
IGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JU
IFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+
IHsKKy8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUg
YmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgorLy8gVG8gbW9k
aWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgorY2xh
c3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
IG1hcHBlZEZpbGVEYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZN
b3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhf
dCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7
CiAKLSAgICBlbnVtIGNsYXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsK
LSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlV
c2VGaWxlTWFwcGluZzo6WWVzKTsKLQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0
ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorICAgIHsKKyAgICAgICAgZGF0YS5zaHJpbmtUb0Zp
dCgpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRh
dGEpKSk7CisgICAgfQogCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgUmV0YWluUHRyPE5TRGF0
YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5T
RGF0YUFycmF5KCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShO
U0RhdGEgKik7Ci0gICAgdm9pZCBhcHBlbmQoTlNEYXRhICopOwotI2VuZGlmCiAjaWYgVVNFKENG
KQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OwotICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKLSAgICB2b2lkIGFwcGVu
ZChDRkRhdGFSZWYpOworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQo
V1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLQogI2lmIFVTRShHTElCKQotICAgIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7Ci0gICAgR1JlZlB0cjxHQnl0ZXM+IGNy
ZWF0ZUdCeXRlcygpIGNvbnN0OworICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShH
UmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50
KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCi0KICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAg
ICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVm
ZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShk
YXRhKSkpOyB9CiAjZW5kaWYKLSAgICAvLyBDYWxsaW5nIGRhdGEoKSBjYXVzZXMgYWxsIHRoZSBk
YXRhIHNlZ21lbnRzIHRvIGJlIGNvcGllZCBpbnRvIG9uZSBzZWdtZW50IGlmIHRoZXkgYXJlIG5v
dCBhbHJlYWR5LgotICAgIC8vIEl0ZXJhdGUgdGhlIHNlZ21lbnRzIHVzaW5nIGJlZ2luKCkgYW5k
IGVuZCgpIGluc3RlYWQuCi0gICAgLy8gRklYTUU6IEF1ZGl0IHRoZSBjYWxsIHNpdGVzIG9mIHRo
aXMgZnVuY3Rpb24gYW5kIHJlcGxhY2UgdGhlbSB3aXRoIGl0ZXJhdGlvbiBpZiBwb3NzaWJsZS4K
LSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFz
Q2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRh
dGEoKSk7IH0KLSAgICBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKLSAgICBWZWN0
b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLQot
ICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwg
dGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBp
cyBub3Qgc2hhcmVkKS4KLSAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKKyAgICBz
dGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
JiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkp
KTsgfQogCi0gICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hh
cmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAotICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQg
bWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCi0gICAgUmVmUHRy
PEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OwotCi0gICAgc2l6ZV90
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KLQotICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuICFzaXplKCk7IH0KLQotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIHZv
aWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9Ci0gICAgdm9pZCBh
cHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotCi0gICAgdm9pZCBjbGVhcigpOworICAgIHN0cnVj
dCBQcm92aWRlciB7CisgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Cisg
ICAgICAgIEZ1bmN0aW9uPHNpemVfdCgpPiBzaXplOworICAgIH07CiAKLSAgICBSZWY8U2hhcmVk
QnVmZmVyPiBjb3B5KCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24s
IHNpemVfdCBsZW5ndGgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9u
LCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPERh
dGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CiAKLSAgICAvLyBEYXRhIHdy
YXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2Fu
IGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KLSAgICAvLyBUbyBtb2RpZnkgb3IgY29t
YmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCi0gICAgY2xhc3MgRGF0
YVNlZ21lbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBj
b25zdDsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgc2l6ZV90IHNpemUoKSBjb25zdDsKKyNpZiBV
U0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVh
dGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgogCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21l
bnQ+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBkYXRhLnNocmlua1RvRml0KCk7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBE
YXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Ci0gICAgICAgIH0KKyAgICBib29sIGNvbnRhaW5z
TWFwcGVkRmlsZURhdGEoKSBjb25zdDsKIAorcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEYXRhU2Vn
bWVudChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShX
VEZNb3ZlKGRhdGEpKSB7IH0KICNpZiBVU0UoQ0YpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNl
Z21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0
YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAg
ICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAg
ICBleHBsaWNpdCBEYXRhU2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQorICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgogI2lmIFVTRShHU1RS
RUFNRVIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShSZWZQdHI8R3N0
TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2Vn
bWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZWZQdHI8
R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEo
V1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVu
dD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICBleHBsaWNpdCBE
YXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCisgICAgICAgIDog
bV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdt
ZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1v
dmUocHJvdmlkZXIpKSB7IH0KIAotICAgICAgICBzdHJ1Y3QgUHJvdmlkZXIgewotICAgICAgICAg
ICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKLSAgICAgICAgICAgIEZ1bmN0aW9u
PHNpemVfdCgpPiBzaXplOwotICAgICAgICB9OwotCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNl
Z21lbnQ+IGNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7IH0KLQotI2lmIFVTRShGT1VOREFUSU9O
KQotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSNlbmRp
ZgotCi0gICAgICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwotCi0gICAg
cHJpdmF0ZToKLSAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAg
ICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgIHN0ZDo6
dmFyaWFudDxWZWN0b3I8dWludDhfdD4sCiAjaWYgVVNFKENGKQotICAgICAgICBEYXRhU2VnbWVu
dChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxl
RGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4sCiAj
ZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+
JiYgZGF0YSkKLSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsg
fQorICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQot
ICAgICAgICBEYXRhU2VnbWVudChSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYgZGF0YSkK
LSAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAg
ICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAorI2VuZGlmCisgICAgICAgIEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhLAorICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwor
ICAgIGZyaWVuZCBjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworI2lmICFVU0UoRk9VTkRB
VElPTikKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOyAvLyBGb3IgY3JlYXRlQ0ZEYXRh
CiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
JiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9
Ci0gICAgICAgIERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCi0gICAgICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9Cit9OworCitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcik7IH0KKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0
ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQorICAgIHN0YXRpYyBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBz
aXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoZGF0YSwg
c2l6ZSkpOyB9CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEp
KSk7IH0KKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOyB9CisgICAgc3RhdGljIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7
IH0KKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2Vn
bWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7IH0KIAotICAgICAgICBzdGQ6OnZh
cmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAorI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVf
RVhQT1JUIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KE5TRGF0YSopOworI2VuZGlmCiAjaWYgVVNFKENGKQotICAgICAgICAgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKICNlbmRpZgorCiAjaWYgVVNFKEdMSUIpCi0gICAg
ICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7CiAjZW5kaWYKKwogI2lmIFVT
RShHU1RSRUFNRVIpCi0gICAgICAgICAgICBSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+LAor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKLSAgICAgICAgICAgIEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhLAotICAgICAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0
YTsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAgICB9OworICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0OworCisgICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWlu
ZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICBWZWN0b3I8dWludDhfdD4g
ZXh0cmFjdERhdGEoKTsKKworICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGll
cyB0aGlzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0CisgICAgLy8g
QXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0
IGJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0
ZUFycmF5QnVmZmVyKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgp
IGNvbnN0OwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVu
dDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0VtcHR5KCkgY29uc3Q7
CiAKLSAgICB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bh
bjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OwotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaXNDb250aWd1b3VzKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwg
c2l6ZV90IGxlbmd0aCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hT
ZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNv
bnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworCisgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBX
ZWJDb3JlOjpEYXRhU2VnbWVudDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdo
ZW4gdXNpbmcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQKIAogICAgIHN0cnVj
dCBEYXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAgc2l6ZV90IGJlZ2luUG9zaXRpb247
CkBAIC0yMTAsNTYgKzE5NywxNzcgQEAgcHVibGljOgogICAgIHVzaW5nIERhdGFTZWdtZW50VmVj
dG9yID0gVmVjdG9yPERhdGFTZWdtZW50VmVjdG9yRW50cnksIDE+OwogICAgIERhdGFTZWdtZW50
VmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMu
YmVnaW4oKTsgfQogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBlbmQoKSBj
b25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmVuZCgpOyB9Ci0gICAgYm9vbCBoYXNPbmVTZWdtZW50
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNPbmVTZWdtZW50KCkgY29uc3Q7
CiAKICAgICAvLyBiZWdpbiBhbmQgZW5kIHRha2UgTygxKSB0aW1lLCB0aGlzIHRha2VzIE8obG9n
KE4pKSB0aW1lLgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBw
b3NpdGlvbikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcg
Z2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKIAotICAgIFN0cmluZyB0b0hleFN0
cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB0b0hleFN0cmluZygpIGNv
bnN0OwogCiAgICAgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0OwogCi0gICAg
V1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25z
dDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQogCi0gICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhl
cik7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBtYWtlQ29udGlndW91
cygpIGNvbnN0OwogCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcigpID0gZGVm
YXVsdDsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7
Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7Ci0gICAgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwotICAgIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7Citwcm90ZWN0ZWQ6CisgICAgZnJp
ZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKworICAgIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVu
dHM7CisgICAgYm9vbCBtX2NvbnRpZ3VvdXMgeyBmYWxzZSB9OworCisgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIoY29uc3QgY2hhciosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogI2lmIFVT
RShDRikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5k
aWYKICNpZiBVU0UoR0xJQikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihHQnl0ZXMq
KTsKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
KEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCisgICAg
c2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAotICAgIHZvaWQgY29tYmluZUludG9PbmVTZWdtZW50KCkg
Y29uc3Q7Citwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6
ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWlu
dDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
cHBlbmQoTlNEYXRhICopOworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisjZW5kaWYKIAotICAgIC8vIENvbWJpbmVzIGFsbCB0
aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBj
bGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgotICAgIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKIAorICAgIC8vIENvbWJpbmVzIGFs
bCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRl
ciBjbGVhcmluZyB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KKyAgICBXRUJDT1JFX0VYUE9S
VCBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3Rv
ckVudHJ5KiBnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0Owog
Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKLQotICAgIHNpemVfdCBtX3NpemUgeyAwIH07Ci0gICAg
bXV0YWJsZSBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOwotCiAjaWYgQVNTRVJUX0VOQUJM
RUQKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCB7IGZh
bHNlIH07CiAgICAgYm9vbCBpbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0OwogI2VuZGlmCiB9
OwogCi1pbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQor
Ly8gQSBTaGFyZWRCdWZmZXIgaXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIHRoYXQgYWxsb3dz
IHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEoKSBhbmQgcmVsYXRl
ZCBtZXRob2RzLgorY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIgeworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAg
ICAgICBpZiBjb25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCisgICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGVsc2UgaWYgY29uc3RleHBy
IChzaXplb2YuLi4oQXJncykgPT0gMQorICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFy
Z3MsIFJlZjxEYXRhU2VnbWVudD4+ICYmLi4uKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgICAg
ICB9CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCAqZGF0YSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIo
KSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8s
IFllcyB9OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBN
YXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOworCisjaWYgVVNFKEZP
VU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNE
YXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0
YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0Uo
R0xJQikKKyAgICBXRUJDT1JFX0VYUE9SVCBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkg
Y29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZm
ZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKKworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9OworCitjbGFzcyBTaGFyZWRCdWZmZXJCdWls
ZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIHsKKyAgICAg
ICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciBhcyBhbGwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1t
dXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKCFidWZmZXIgfHwg
KGJ1ZmZlci0+aGFzT25lUmVmKCkgJiYgIWJ1ZmZlci0+aXNDb250aWd1b3VzKCkpKSB7CisgICAg
ICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBhcHBlbmQoKmJ1ZmZlcik7CisgICAgfQorICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0
byB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhcyBhbGwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAg
aWYgKGJ1ZmZlci0+aGFzT25lUmVmKCkgJiYgIWJ1ZmZlci0+aXNDb250aWd1b3VzKCkpIHsKKyAg
ICAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlci5nZXQoKSkpOworICAg
IH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyKEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6IG1fYnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKworICAgIHRl
bXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdz
KQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVyLT5hcHBl
bmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9vbCBpc051
bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CisKKyAg
ICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUo
KSA6IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsgfQorICAg
IHZvaWQgZW1wdHkoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgZW5zdXJlQnVm
ZmVyKCk7CisgICAgfQorCisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdldCgp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiB0YWtlKCkKKyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAgICAg
ICByZXR1cm4gbV9idWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgdm9pZCBlbnN1cmVCdWZmZXIoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcikKKyAg
ICAgICAgICAgIG1fYnVmZmVyID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cisg
ICAgfQorICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKK307CisK
K2lubGluZSBWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERh
dGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKICAgICAgICAgcmV0dXJuIHRha2VEYXRhKCk7
CkBAIC0yNjgsMTcgKzM3NiwxNyBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZl
cjo6ZXh0cmFjdERhdGEoKQogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRh
VmlldyB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKKyAgICBTaGFyZWRCdWZmZXJE
YXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQs
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKICAgICBTaGFy
ZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNpemVfdCBuZXdT
aXplKTsKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEo
KSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQorICAgIGNvbnN0IGNoYXIq
IGRhdGFBc0NoYXJQdHIoKSBjb25zdDsKICAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFy
ZWRCdWZmZXIoKSBjb25zdDsKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBSZXRhaW5QdHI8TlNE
YXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBS
ZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxE
YXRhU2VnbWVudD4gbV9zZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGlu
U2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcAppbmRleCBjZGI2ZTcw
MzQwNGQ0MjZkZDIxYjQ3OWZhODljMGRhOWI4YzQ5ZjhlLi45ZDA1NWNlMjdkODhjM2Q2MmU1YmQx
Y2Q0NmFkOTFmNWNjNDMxZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogI2lmIEVOQUJMRShNSFRNTCkKIAotU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6
OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWN0
b3I8Y2hhcj4mIHNlcGFyYXRvcikKK1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFZlY3Rv
cjxjaGFyPiYgc2VwYXJhdG9yKQogICAgIDogbV9pdGVyYXRvckN1cnJlbnQoYnVmZmVyLT5iZWdp
bigpKQogICAgICwgbV9pdGVyYXRvckVuZChidWZmZXItPmVuZCgpKQogICAgICwgbV9zZWdtZW50
KG1faXRlcmF0b3JDdXJyZW50ICE9IG1faXRlcmF0b3JFbmQgPyBtX2l0ZXJhdG9yQ3VycmVudC0+
c2VnbWVudC0+ZGF0YSgpIDogbnVsbHB0cikKQEAgLTQ0LDcgKzQ0LDcgQEAgU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVy
LCBjb25zdCBWZWMKIHsKIH0KIAotU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0b3Ip
CitTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCiAgICAgOiBt
X2l0ZXJhdG9yQ3VycmVudChidWZmZXItPmJlZ2luKCkpCiAgICAgLCBtX2l0ZXJhdG9yRW5kKGJ1
ZmZlci0+ZW5kKCkpCiAgICAgLCBtX3NlZ21lbnQobV9pdGVyYXRvckN1cnJlbnQgIT0gbV9pdGVy
YXRvckVuZCA/IG1faXRlcmF0b3JDdXJyZW50LT5zZWdtZW50LT5kYXRhKCkgOiBudWxscHRyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgK
aW5kZXggNWQ0ZTZmZWU1ODJjNjYxNmZkMDdlMzk5NGZmNzVjOGYwN2EyZmNlMS4uMWM2NDA4ZDRj
NzM2YTFjNGE0NWNlZTdiM2Y2OTY1N2JjOWEyNjE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oCkBAIC00MSw4ICs0MSw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXIgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1
ZmZlciosIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKTsKLSAgICBTaGFyZWRCdWZmZXJD
aHVua1JlYWRlcihTaGFyZWRCdWZmZXIqLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpOworICAgIFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBWZWN0
b3I8Y2hhcj4mIHNlcGFyYXRvcik7CisgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IGNoYXIqIHNlcGFyYXRvcik7CiAKICAgICB2b2lkIHNl
dFNlcGFyYXRvcihjb25zdCBWZWN0b3I8Y2hhcj4mKTsKICAgICB2b2lkIHNldFNlcGFyYXRvcihj
b25zdCBjaGFyKik7CkBAIC01OCw4ICs1OCw4IEBAIHB1YmxpYzoKICAgICBzaXplX3QgcGVlayhW
ZWN0b3I8dWludDhfdD4mLCBzaXplX3QpOwogCiBwcml2YXRlOgotICAgIFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JDdXJyZW50OwotICAg
IGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1f
aXRlcmF0b3JFbmQ7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0
b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JDdXJyZW50OworICAgIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJh
dG9yRW5kOwogICAgIGNvbnN0IHVpbnQ4X3QqIG1fc2VnbWVudCB7IG51bGxwdHIgfTsKICAgICBz
aXplX3QgbV9zZWdtZW50SW5kZXggeyAwIH07CiAgICAgVmVjdG9yPGNoYXI+IG1fc2VwYXJhdG9y
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bh
c3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5j
cHAKaW5kZXggYjJkN2E1NTBkNDYwZTk0Y2QzMTUxMzRhMzE5NWJjZDkxYzdiNzg5NC4uYTRiNGJi
MTA0YjRkODQwMTViOGFhNWI1M2U3ZGZhNzg4Y2VkMjVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBTdGF0
aWNQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiAgICAgbV9jdXN0b21EYXRhLndyaXRlU3RyaW5nKHR5cGUsIHZhbHVlKTsKIH0K
IAotdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlRGF0
YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEp
CiB7CiAgICAgbV9ub25EZWZhdWx0RGF0YVR5cGVzLmFkZCh0eXBlKTsKICAgICBtX2N1c3RvbURh
dGEud3JpdGVEYXRhKHR5cGUsIFdURk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU3RhdGljUGFzdGVib2FyZC5oCmluZGV4IGMwOWI2ZGUzMWYyZWRlYmUwMTg4ZGM5YzQ2NmEy
NzFlMWI4YjllMTQuLmVkZDcxMzYyM2YwNmQyMmIzOGU4MzJhMjgzN2ZlNjY5OTlkZmQ3OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKQEAgLTMyLDcgKzMy
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBTdGF0aWNQYXN0ZWJvYXJkIGZpbmFs
IDogcHVibGljIFBhc3RlYm9hcmQgewogcHVibGljOgpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6
CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBm
aW5hbDsKIAogICAgIHZvaWQgd3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIGRhdGEpIGZpbmFsOwotICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBT
dHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIHZv
aWQgd3JpdGVTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIGRhdGEpOwogICAgIHZvaWQgY2xlYXIoKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyKGNvbnN0
IFN0cmluZyYgdHlwZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Tm93UGxheWluZ0luZm8uaAppbmRleCA2ODc5NTkwMGM1YWRmOWNjOTA0NWUwZWFiYjIyYjE4ZmE2
Njk2MzE0Li4xZDY1YmM0MDNhZDg1MjQzYzY3MjVlNzA0NDhkNmNkYWRjY2NjZTFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKQEAgLTM2LDcg
KzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IE5vd1BsYXlpbmdJbmZvQXJ0d29y
ayB7CiAgICAgU3RyaW5nIHNyYzsKICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBpbWFnZURhdGE7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm93UGxheWluZ0luZm9B
cnR3b3JrJiBvdGhlcikgY29uc3QKICAgICB7CkBAIC02Nyw3ICs2Nyw3IEBAIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IGlubGluZSBzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4g
Tm93UGxheWluZ0luCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtaW1lVHlwZSkpCiAgICAgICAg
IHJldHVybiB7IH07CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CisgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGltYWdlRGF0YSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29h
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRl
ckNvY29hLmNwcAppbmRleCBlOGIxOWJmMzRlYmEyM2I4NTcyMDdiZTg4Y2UxYjQ1YmY4ZjJjY2Mz
Li5mMzIxNDI5NTFiMTc5OTZlNmNlMTY3NTYzMTZiZmQ0NzNmYWE0ZWRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVh
ZGVyQ29jb2EuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgY2xhc3MgQXVkaW9GaWxlUmVhZGVyV2Vi
TURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgUmVm
PFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAgICAgUmVmPEF1ZGlvVHJhY2tQ
cml2YXRlV2ViTT4gbV90cmFjazsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1t
CmluZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2FiMzZlMmEwYzA4MTJjOTRlMTg3MGUuLjdmMDQ5NjBj
NTk2NWI2MjUxYjkxYjlhNTY3ZTUxMDg5YjU3MTlmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2Vy
Q29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2Nv
YTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgogICAg
ICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1Bs
YXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAgIH0KICAgICBp
ZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFn
ZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3Jr
LT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5v
d1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1l
ZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgpKTsKICAg
ICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQ
bGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29yay0+bWltZVR5
cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrSWRlbnRpZmll
ciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0luZm8uYXJ0d29yay0+c3JjLmhhc2goKSkuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFy
ZWRCdWZmZXJDRi5jcHAKaW5kZXggNmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJm
Y2I5MS4uODE5ZTI2ZmE0Y2YwNjc5NTdhNTlmZWYyOWM5OWYwM2Y1ZjQ0OTFkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtMzMsNyArMzMs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KENGRGF0YVJlZiBkYXRhKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIHsKICAgICBhcHBlbmQoZGF0YSk7CiB9CkBAIC00Mywy
NCArNDMsMjAgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCiAj
aWYgIVVTRShGT1VOREFUSU9OKQogUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpj
cmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7
CisgICAgaWYgKGhhc09uZVNlZ21lbnQoKSkgewogICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0
ZDo6Z2V0X2lmPFJldGFpblB0cjxDRkRhdGFSZWY+PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5t
X2ltbXV0YWJsZURhdGEpKQogICAgICAgICAgICAgcmV0dXJuICpkYXRhOwogICAgIH0KLSAgICBh
dXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShudWxscHRyLCBzaXplKCkp
KTsKLSAgICBmb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICBDRkRh
dGFBcHBlbmRCeXRlcyhjZkRhdGEuZ2V0KCksIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUo
KSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGNmRGF0YTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRh
dGFDcmVhdGUobnVsbHB0ciwgZGF0YSgpLCBzaXplKCkpKTsKIH0KICNlbmRpZgogCi1SZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFSZWYgZGF0YSkKK1JlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRh
UmVmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGRhdGEp
KTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29u
c3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24o
KSBjb25zdAogewogICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBtX3NlZ21lbnRzKSB7CiAg
ICAgICAgIGlmIChlbnRyeS5zZWdtZW50LT5oYXNPbmVSZWYoKSkgewpAQCAtNzAsOSArNjYsOCBA
QCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogICAg
IH0KIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKK3ZvaWQg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQogewotICAgIEFT
U0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgaWYgKGRhdGEpIHsK
ICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShk
YXRhKX0pOwogICAgICAgICBtX3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNp
b25Db250ZW50RmlsdGVyLmgKaW5kZXggMDc5N2RmYmU4ZDAxOGJlNjM2MTc0NGM1OGY4OTJkZDU2
ZWQ2ODljNS4uY2JlODc3MWE0NWQ4NjJjYjVhYjA1ZWNhMzk5OTI3ZTA3ODM4ZjU0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAg
IHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsK
ICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICAgICBD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzUmVxdWlyZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250
ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXIubW0KaW5kZXggNDI5MGRiMTI4ZDAwMGE0MGVlZjcwZmQyOTQxZDYz
NDQ5MDQ2ZGUwMy4uMmVmMjcwMWZlNjc4YmY5YjkyZGIyMTJiYmVhNWM5MTVhM2ZjM2EyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIE5ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQogICAgIHNlbWFw
aG9yZS53YWl0KCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE5ldHdvcmtFeHRlbnNpb25Db250
ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBj
b25zdAogewogICAgIEFTU0VSVChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKG1fcmVwbGFjZW1lbnREYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlci5oCmluZGV4IDA2OGNkY2IzODNmNDIzNjVhYzMyNjRlMjI5YTZkNjNiYzJiNGFiZDYuLjY3
OWFlOTMyOTUxN2UxZjM5NDNiYTU3NjJhYzhmNTZlODYwYzhjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXIuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJl
Y2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZERh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBm
aW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiByZXBs
YWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKQogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFu
ZGxlcigpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1t
CmluZGV4IGI0NjFmOTc1MzZkZTNhMTU4MTNhNTgyN2I4NjcxMzhiOTZkNGYzOGMuLjFjOTYwNDcx
NmI0MjY5M2Q1ZTQ2YzJlMjNlOTQxZGEwMGM4M2U0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50Rmls
dGVyLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlcjo6ZmluaXNoZWRBZGRpbmdEYXRhKCkKICAgICB1cGRhdGVGaWx0ZXJTdGF0ZSgpOwogfQog
Ci1SZWY8U2hhcmVkQnVmZmVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6cmVwbGFj
ZW1lbnREYXRhKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQYXJlbnRhbENv
bnRyb2xzQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKIHsKICAgICBBU1NF
UlQoZGlkQmxvY2tEYXRhKCkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3Jl
cGxhY2VtZW50RGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNmYyOGU4MjQzNjBjY2QzMDg2YzAzMThmYWU0MDk4
ZjFlZGUyOGUyNS4uYjgxNzA4MTdjZWM1OWUyMmQzYzBlOWE3OGYxNDZjMDMzZTRjMTY2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpA
QCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgTlNCaXRtYXBJbWFnZUZpbGVUeXBlIGJpdG1hcFBOR0Zp
bGVUeXBlKCkKIH0KICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLS8vIE1ha2luZyB0aGlzIG5v
bi1pbmxpbmUgc28gdGhhdCBXZWJLaXQgMidzIGRlY29kaW5nIGRvZXNuJ3QgaGF2ZSB0byBpbmNs
dWRlIFNoYXJlZEJ1ZmZlci5oLgorLy8gTWFraW5nIHRoaXMgbm9uLWlubGluZSBzbyB0aGF0IFdl
YktpdCAyJ3MgZGVjb2RpbmcgZG9lc24ndCBoYXZlIHRvIGluY2x1ZGUgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlci5oLgogUGFzdGVib2FyZFdlYkNvbnRlbnQ6OlBhc3RlYm9hcmRXZWJDb250ZW50KCkg
PSBkZWZhdWx0OwogUGFzdGVib2FyZFdlYkNvbnRlbnQ6On5QYXN0ZWJvYXJkV2ViQ29udGVudCgp
ID0gZGVmYXVsdDsKIApAQCAtMjExLDkgKzIxMSw5IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9h
cmQ6OnR5cGVzRm9yTGVnYWN5VW5zYWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExBVEZPUk0oTUFD
KQotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVy
JiB0aWZmQnVmZmVyKQorc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkco
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0g
YWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZl
ci5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNC
aXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2lt
YWdlIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGll
czpAeyB9XTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1t
CmluZGV4IDllZTBjMGI1NWQ3OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLjI1ZjMxMWYy
NTg5YjgyZWZkMjU3N2EwODg5NGI2YzVlMDY2YjkyNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEg
QEAKICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNv
cmVTaGFyZWRCdWZmZXJEYXRhIDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRh
U2VnbWVudDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNl
Z21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXpl
OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRh
dGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXpl
OihOU1VJbnRlZ2VyKXNpemU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVk
QnVmZmVyRGF0YSB7Ci0gICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNl
Z21lbnQ+IF9kYXRhU2VnbWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJ
bnRlZ2VyIF9zaXplOwogfQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBb
c3VwZXIgZGVhbGxvY107CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50
Oihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBw
b3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVu
dCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50
ZWdlcilzaXplCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJl
dHVybiBuaWw7CkBAIC04OCwxMyArODgsMTQgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkK
K1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVh
dGUoTlNEYXRhICpkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihicmlkZ2VfY2FzdChkYXRhKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIoYnJpZGdlX2Nhc3QoZGF0YSkpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZm
ZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFw
cGVuZChOU0RhdGEgKmRhdGEpCiB7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIHJl
dHVybiBhcHBlbmQoYnJpZGdlX2Nhc3QoZGF0YSkpOwogfQogCkBAIC0xMDUsMTAgKzEwNiw4IEBA
IFJldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIAog
UmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAog
ewotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwogICAgIGlmICghbV9zZWdtZW50cy5zaXpl
KCkpCiAgICAgICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBudWxscHRy
LCAwKSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwogICAgIHJldHVybiBi
cmlkZ2VfY2FzdChtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpKTsKIH0KIApA
QCAtMTE5LDE0ICsxMTgsMTQgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpj
cmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotUmV0YWluUHRyPE5TQXJyYXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNE
YXRhQXJyYXkoKSBjb25zdAorUmV0YWluUHRyPE5TQXJyYXk+IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKIHsKICAgICByZXR1cm4gY3JlYXRlTlNBcnJh
eShtX3NlZ21lbnRzLCBbXSAoYXV0byYgc2VnbWVudCkgewogICAgICAgICByZXR1cm4gc2VnbWVu
dC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKTsKICAgICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0
YT4gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFp
blB0cjxOU0RhdGE+IERhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJl
dHVybiBhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0
YVNlZ21lbnQ6KnRoaXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKaW5kZXgg
ZmJjMjgzZmJjMzM2OWJmODI3ZTMxNjk5NGM0Yzk0ZTA2MzYzY2I4MS4uMmRlNDE5MzRkYTE5ODc5
ZDc1YzBkZjhhODllNjRlNTk5YzI5YWUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCkBAIC00Niw3ICs0Niw3IEBAIGNs
YXNzIExvZ2dlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9u
Owogc3RydWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb247CiAKQEAgLTU0LDcgKzU0LDcgQEAg
Y2xhc3MgQ0RNSW5zdGFuY2VDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFu
Y2VDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZUNsaWVudCgpID0g
ZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0
YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBT
dHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogLy8gSmF2
YVNjcmlwdCdzIGhhbmRsZSB0byBhIENETUluc3RhbmNlLCBtdXN0IGJlIHVzZWQgZnJvbSB0aGUK
QEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNj
ZXNzQ2FsbGJhY2smJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3RvcmFnZURp
cmVjdG9yeShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Np
b24+IGNyZWF0ZVNlc3Npb24oKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCmluZGV4IDM3Y2Qw
N2M3YmYyZGM3NWU0MWZkNWM2YzdkZWNmNDNlMTAzOWUxMTQuLmQyNTkyMjViYTllMDJhNjRkMGNl
Y2Q2MTUxZmRmOTNmNGYyNDY2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCkBAIC00MywxNiAr
NDMsMTYgQEAgY2xhc3MgTG9nZ2VyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENETUlu
c3RhbmNlU2Vzc2lvbkNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1JbnN0YW5jZVNl
c3Npb25DbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZVNlc3Npb25D
bGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB1c2luZyBLZXlTdGF0dXMgPSBDRE1LZXlTdGF0dXM7
Ci0gICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVk
QnVmZmVyPiwgS2V5U3RhdHVzPj47CisgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9y
PHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIEtleVN0YXR1cz4+OwogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBtZXNzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlKENETU1l
c3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgPSAwOwogICAg
IHVzaW5nIFBsYXRmb3JtRGlzcGxheUlEID0gdWludDMyX3Q7CiAgICAgdmlydHVhbCBQbGF0Zm9y
bURpc3BsYXlJRCBkaXNwbGF5SUQoKSA9IDA7CkBAIC03OCwxMyArNzgsMTMgQEAgcHVibGljOgog
ICAgICAgICBTdWNjZWVkZWQsCiAgICAgfTsKIAotICAgIHVzaW5nIExpY2Vuc2VDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNz
VmFsdWUgc3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSA9IDA7CisgICAgdXNpbmcgTGljZW5zZUNh
bGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1
YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47CisgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2sm
JikgPSAwOwogCiAgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gQ0RNSW5zdGFuY2VTZXNzaW9u
Q2xpZW50OjpLZXlTdGF0dXNWZWN0b3I7Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6cGFpcjxN
ZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6
OnBhaXI8TWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgdXNp
bmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHNl
c3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRL
ZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgc3RkOjpvcHRp
b25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5z
ZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNw
b25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKIAogICAgIGVudW0gY2xhc3MgU2Vz
c2lvbkxvYWRGYWlsdXJlIDogdWludDhfdCB7CiAgICAgICAgIE5vbmUsCkBAIC0xMDAsNyArMTAw
LDcgQEAgcHVibGljOgogICAgIHVzaW5nIENsb3NlU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPjsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSA9IDA7CiAKLSAgICB1c2lu
ZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChLZXlT
dGF0dXNWZWN0b3ImJiwgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiwgU3VjY2Vz
c1ZhbHVlKT47CisgICAgdXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PiYmLCBTdWNjZXNzVmFsdWUpPjsKICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBS
ZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdG9y
ZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAppbmRl
eCBjYzZkYzdmMTQwY2Q2N2QyYjdiODRmNmFiMmMyODQzMTZkZmRkY2NmLi41MmE2MTQ4YzgzY2Q1
MzkzYzhmODc0ZWQ4NWFkOGJmMjdlNWJlNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC03Myw4ICs3Myw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSA9IDA7CiAgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXIm
KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJl
c3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNz
aW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKaW5kZXgg
ZjIxOGY5NzkwNGZiYmE0OWYxZWJkZjQ4ZTIwNWZlNzNkZmFmYjY0OC4uNGJhNzViZjAwZDlmNzEz
YjVhZmJiYTc5MzQwMTk3MTZjZDhmMDM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIENE
TUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIEtleVN0b3JlOjpjb252ZXJ0VG9KU0tl
eVN0YXR1c1ZlY3RvcigpIGNvbnN0CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNW
ZWN0b3Iga2V5U3RhdHVzVmVjdG9yOwogICAgIGtleVN0YXR1c1ZlY3Rvci5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KG51bUtleXMoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBrZXkgOiBtX2tleXMp
Ci0gICAgICAgIGtleVN0YXR1c1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQoc3RkOjpwYWlyPFJlZjxT
aGFyZWRCdWZmZXI+LCBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1cz4geyBrZXktPmlkQXNT
aGFyZWRCdWZmZXIoKSwga2V5LT5zdGF0dXMoKSB9KTsKKyAgICAgICAga2V5U3RhdHVzVmVjdG9y
LnVuY2hlY2tlZEFwcGVuZChzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBD
RE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1cz4geyBrZXktPmlkQXNTaGFyZWRCdWZmZXIoKSwg
a2V5LT5zdGF0dXMoKSB9KTsKICAgICByZXR1cm4ga2V5U3RhdHVzVmVjdG9yOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaAppbmRl
eCBhNTg0YjZjZDI2NmIwOTgwOTAyNTRkN2RjYmRkYmY2MGQ5MzMxZmJiLi5lMWUwOThhMWQ1ZjVm
ZmM2NWMyYTQ4ZmE0MGFhOTcyZmU4OWUxZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgS2V5SGFuZGxlKHN0YXR1cywg
V1RGTW92ZShrZXlJRCksIFdURk1vdmUoa2V5SGFuZGxlVmFsdWUpKSk7CiAgICAgfQotICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9pZC5zaXplKCkpOyB9CisgICAgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9pZC5zaXplKCkpOyB9CiAKICAgICBib29s
IHRha2VWYWx1ZUlmRGlmZmVyZW50KEtleUhhbmRsZVZhbHVlVmFyaWFudCYmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGll
cy5jcHAKaW5kZXggNWJlYmNiNDlhYThlYjlhMmJiMDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4uZmNh
NmYyMzg4YTU2YTZhMWM3MjQ3MGU1YTQ2ZmRkMjhmMDczNzUwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBA
IC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIENETVV0aWxp
dGllcyB7CiAKLVJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gRmFpbCBvbiBs
YXJnZSBidWZmZXJzIHdob3NlIHNpemUgZG9lc24ndCBmaXQgaW50byBhIDMyLWJpdCB1bnNpZ25l
ZCBpbnRlZ2VyLgogICAgIHNpemVfdCBzaXplID0gYnVmZmVyLnNpemUoKTsKQEAgLTQ2LDcgKzQ2
LDcgQEAgUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRo
ZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYg
YW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihzaXplKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CiAKICAgICBhdXRvIHZhbHVl
ID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMu
aAppbmRleCA3NGY1MTViMGJkMmE4NzE2OGVlZjI0YjE4Zjk1ZGVhYmVlODI4ZTZjLi5mY2Y1YmRk
YTdjNTk3ZDNjM2FjMzQ5ZWUxNzg5ZTRhZDZlMGM5NTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaApAQCAtMzUsMTEg
KzM1LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIENETVV0aWxpdGllcyB7
CiAKLVJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZm
ZXImKTsKK1JlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApp
bmRleCBkZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVkLi4zMWE5ZmRmYTAy
ZDZkMDBjYTI2MTgyNTJkZWQ5MzUzMTNkYzU4YWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJL
ZXkuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VMaWNlbnNlUmVsZWFz
ZUFja25vd2xlZGdlbWVudEZvcm1hdChjb25zdCBKU09OOjpPYmplY3QmIHJvb3QpCiAvLyBdOwog
CiAvLyBUaGlzIGZ1bmN0aW9uIGV4dHJhY3RzIHRoZSBLZXlJZHMgY291bnQgYW5kIHRoZSBsb2Nh
dGlvbiBvZiB0aGUgZmlyc3QgS2V5SWQgaW4gaW5pdERhdGEgYnVmZmVyLgotc3RhdGljIHN0ZDo6
cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5p
dERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBzdGQ6OnBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIHN0ZDo6cGFpcjx1
bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCgwLCAwKTsKIApAQCAtMTM4LDcgKzEzOCw4IEBA
IHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRp
b25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBp
bml0RGF0YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAg
ICAgICAgIHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0
YSgpOworICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAgICAg
dW5zaWduZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgpOwogICAgIHVuc2lnbmVkIGlu
ZGV4ID0gMDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CkBAIC0xODgsMTUgKzE4OSwxNSBA
QCBzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0
aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdAogfQogCiAvLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBp
ZiB0aGUgaW5pdERhdGEgc2hhcmVkQnVmZmVyIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KLXN0
YXRpYyBib29sIGlzQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitz
dGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkKIHsKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAg
PSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGluaXREYXRhKTsKICAgICBy
ZXR1cm4gKChrZXlJZHNNYXAuZmlyc3QpICYmIChrZXlJZHNNYXAuc2Vjb25kKSk7CiB9CiAKLXN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25z
dCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAg
ICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtleWlk
c0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWduZWQga2V5SWRD
b3VudCA9IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNCw5ICsyMDUsMTAgQEAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgaW5pdEQKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgQ0VOQyBp
bml0RGF0YS4KICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQotICAgICAgICByZXR1cm4g
a2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAotICAgIGF1dG8qIGRhdGEg
PSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0
YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEt
PmRhdGEoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAg
ICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjI0LDE3ICsy
MjYsMTcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0lu
aXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIG9iamVjdC0+c2V0QXJyYXko
ImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9i
amVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRh
LmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5
SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1
cm4ga2V5SWRzLnRha2UoKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RL
ZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRp
YyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0
YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hh
cmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxp
ZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEu
c2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICBy
ZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAogICAgIGF1dG8g
b2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0g
SlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDEyICsyNDcsMTIgQEAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBpbml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNPTiBvYmplY3QgY29udGFpbmlu
ZyB0aGUgZm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMiCiAgICAgLy8gQW4gYXJyYXkg
b2Yga2V5IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0aGUgYmFzZTY0dXJsIGVu
Y29kaW5nIG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5nIHRoZSBrZXkgSUQgdmFsdWUu
Ci0gICAga2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5p
dERhdGEuZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBrZXlJZHNBcnJheS0+cHVzaFN0
cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIs
IFdURk1vdmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50
b0pTT05TdHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgp
LCBqc29uRGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBw
ZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJ
ZHMudGFrZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xlYXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6
c2luZ2xldG9uKCkKQEAgLTM4OCw3ICszOTAsNyBAQCBib29sIENETVByaXZhdGVDbGVhcktleTo6
c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ0RN
UHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJp
dmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAg
ICAgLy8gVmFsaWRhdGUgdGhlIGluaXREYXRhIGJ1ZmZlciBhcyBhbiBKU09OIG9iamVjdCBpbiBr
ZXlpZHMgY2FzZS4KICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERh
dGFUeXBlLCAia2V5aWRzIikgJiYgQ0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QoaW5pdERh
dGEpKQpAQCAtNDA1LDcgKzQwNyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVDbGVhcktleTo6
c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVS
ZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsK
ICAgICAvLyBWYWxpZGF0ZSB0aGUgcmVzcG9uc2UgYnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0Lgog
ICAgIGlmICghQ0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QocmVzcG9uc2UpKQpAQCAtNDMx
LDcgKzQzMyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6aW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyCiAgICAgY2FsbGJhY2soc3VjY2Vl
ZGVkKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQg
Q0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIC8vIFJl
amVjdCBzZXR0aW5nIGFueSBzZXJ2ZXIgY2VydGlmaWNhdGUuCiAgICAgY2FsbGJhY2soRmFpbGVk
KTsKQEAgLTQ1Myw3ICs0NTUsNyBAQCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBDRE1JbnN0
YW5jZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKCkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENE
TUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KCp0aGlzKSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VD
YWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYm
IGNhbGxiYWNrKQogewogICAgIHN0YXRpYyB1aW50MzJfdCBzX3Nlc3Npb25JZFZhbHVlID0gMDsK
ICAgICArK3Nfc2Vzc2lvbklkVmFsdWU7CkBAIC00NzUsNyArNDc3LDcgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0
b21TdHJpbmcmIGkKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xl
YXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7
CiAjaWYgTE9HX0RJU0FCTEVECiAgICAgLy8gV2Ugb25seSB1c2UgdGhlIHNlc2lvbiBJRCBmb3Ig
ZGVidWcgbG9nZ2luZy4gVGhlIHZlcmJvc2UgcHJlcHJvY2Vzc29yIGNoZWNrcyBhcmUgYmVjYXVz
ZQpAQCAtNTY2LDcgKzU2OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJl
bW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlCiAgICAgQVNTRVJU
KHNlc3Npb25JZCA9PSBtX3Nlc3Npb25JRCk7CiAKICAgICBhdXRvIGRpc3BhdGNoQ2FsbGJhY2sg
PQotICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgJmNhbGxiYWNrXShLZXlT
dGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNWZWN0b3IsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1
ZmZlcj4+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2Nlc3MpIHsKKyAgICAgICAgW3dlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sICZjYWxsYmFja10oS2V5U3RhdHVzVmVjdG9yJiYga2V5
U3RhdHVzVmVjdG9yLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4m
JiBtZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VzcykgewogICAgICAgICAgICAgY2FsbE9uTWFp
blRocmVhZCgKICAgICAgICAgICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKndlYWtUaGlz
IH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGtleVN0YXR1c1ZlY3RvciA9IFdURk1v
dmUoa2V5U3RhdHVzVmVjdG9yKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHN1Y2Nlc3Nd
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCkBAIC01Nzks
NyArNTgxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lv
bkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKICAgICAvLyBDb25zdHJ1Y3QgdGhl
IEtleVN0YXR1c1ZlY3RvciBvYmplY3QsIHJlcHJlc2VudGluZyByZWxlYXNlZCBrZXlzLCBhbmQg
dGhlIG1lc3NhZ2UgaW4gdGhlCiAgICAgLy8gJ2xpY2Vuc2UgcmVsZWFzZScgZm9ybWF0LgogICAg
IEtleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNWZWN0b3IgPSBtX2tleVN0b3JlLmFsbEtleXNBcyhD
RE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1czo6UmVsZWFzZWQpOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1lc3NhZ2U7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1l
c3NhZ2U7CiAgICAgewogICAgICAgICAvLyBDb25zdHJ1Y3QgSlNPTiB0aGF0IHJlcHJlc2VudHMg
dGhlICdsaWNlbnNlIHJlbGVhc2UnIGZvcm1hdCwgY3JlYXRpbmcgYSAna2lkcycgYXJyYXkKICAg
ICAgICAgLy8gb2YgYmFzZTY0VVJMLWVuY29kZWQga2V5IElEcyBmb3IgYWxsIGtleXMgdGhhdCB3
ZXJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHNlc3Npb24uCkBAIC01OTMsMTQgKzU5NSwxNCBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgTGljZQogICAgICAgICAgICAgcm9vdE9iamVjdC0+c2V0QXJyYXko
ImtpZHMiLCBXVEZNb3ZlKGFycmF5KSk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBDb3B5IHRo
ZSBKU09OIGRhdGEgaW50byBhIFNoYXJlZEJ1ZmZlciBvYmplY3QuCisgICAgICAgIC8vIENvcHkg
dGhlIEpTT04gZGF0YSBpbnRvIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBvYmplY3QuCiAgICAg
ICAgIFN0cmluZyBtZXNzYWdlU3RyaW5nID0gcm9vdE9iamVjdC0+dG9KU09OU3RyaW5nKCk7CiAg
ICAgICAgIENTdHJpbmcgbWVzc2FnZUNTdHJpbmcgPSBtZXNzYWdlU3RyaW5nLnV0ZjgoKTsKICAg
ICAgICAgbWVzc2FnZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2VDU3RyaW5nLmRhdGEo
KSwgbWVzc2FnZUNTdHJpbmcubGVuZ3RoKCkpOwogICAgIH0KIAogICAgIG1fa2V5U3RvcmUudW5y
ZWZBbGxLZXlzKCk7Ci0gICAgZGlzcGF0Y2hDYWxsYmFjayhXVEZNb3ZlKGtleVN0YXR1c1ZlY3Rv
ciksIFJlZjxTaGFyZWRCdWZmZXI+KCptZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQp
OworICAgIGRpc3BhdGNoQ2FsbGJhY2soV1RGTW92ZShrZXlTdGF0dXNWZWN0b3IpLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4oKm1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7
CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnN0b3JlUmVjb3JkT2ZLZXlV
c2FnZShjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKaW5kZXggOWMwNzQ3
ZGMxYmQ4ZTY3ZjNiYTg2NGQ5YjgxMTMzNzYyNWM4YTY3OS4uOWUyN2ZlOTEyYzRkYTA2N2ZiMjZj
YWZiYzdmNmE2NTFkYTQ3NTI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCkBAIC04Niw4
ICs4Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CiAg
ICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IGZpbmFsOwogICAgIGJv
b2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRC
dWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRv
bVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogfTsK
IApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFuY2UKICAgICBJbXBs
ZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
SW1wbGVtZW50YXRpb25UeXBlOjpDbGVhcktleTsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhD
b25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3Rp
bmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2sm
JikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVy
PiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZp
bmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsK
ICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxD
RE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKQEAgLTEwOSw4ICsxMDks
OCBAQCBjbGFzcyBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleSBmaW5hbCA6IHB1YmxpYyBDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eSB7CiBwdWJsaWM6CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xl
YXJLZXkoQ0RNSW5zdGFuY2VDbGVhcktleSYgcGFyZW50KQogICAgICAgICA6IENETUluc3RhbmNl
U2Vzc2lvblByb3h5KHBhcmVudCkgeyB9Ci0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZv
aWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2
b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNv
bnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVt
b3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25E
YXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IGU5NjhlOTg1YzdlZWNlZmU0MzVh
YTkyMDVjNDRkZDM1YWVkOGUwZDAuLmVjZjRlMDhjOWI5OTFhZGUyNzNiZDQ0YzYwYmIxNWZlMDE2
MzViMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRF
bmNvZGVyR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5
ZWRFbmNvZGVyR2VuZXJpYy5oCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgS2V5ZWRFbmNvZGVyR2VuZXJpYyBmaW5hbCA6IHB1YmxpYyBLZXllZEVuY29kZXIg
ewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFy
ZWRCdWZmZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVm
ZmVyR2xpYi5jcHAKaW5kZXggOGE4YzEwYjcwMjRjZmUwMzhlOWZhN2I3MTViZTI2ODg5ZmMwNWUy
OC4uOTM3ZDFmYjZmMGM4ZDdiNTFmMThmZjE1NTYwYjNiOTRhNzRmNjFiMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCkBAIC0yNiwx
NiArMjYsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQogewogICAgIEFTU0VSVChieXRlcyk7CiAgICAg
bV9zaXplID0gZ19ieXRlc19nZXRfc2l6ZShieXRlcyk7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQo
eyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKEdSZWZQdHI8R0J5dGVzPihieXRlcykpIH0pOwogfQog
Ci1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQor
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0
ZShHQnl0ZXMqIGJ5dGVzKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihieXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIoYnl0ZXMpKTsKIH0KIAogR1JlZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5
dGVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA5
ZmM0ZWE4MmViYmM3N2VhZDkwMTA4NTQzODA4MjllMTViYmFiNmY0Li5kYzFmYjE2ZWEwYjE5NmM1
ZDEzYmQ0MTE0ZTUwY2NkY2Q5YjM3YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZv
bnRDYWNoZTsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEdseXBoUGFnZTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBH
bHlwaERhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRQbGF0Zm9ybURhdGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRl
ODRiMjE5Li5mYmJjY2M0MzY4NDQ3NDkwODNjZTg5MWYzNjNmNmNjNDBmMjk3NDUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5o
CkBAIC03NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
IAogLy8gVGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQs
IG5vIGluc3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4K
IGNsYXNzIEZvbnRQbGF0Zm9ybURhdGEgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuY3BwCmluZGV4IDRhODUzZWI2NDk1M2Q0YWU0ODM0Zjg3YzU0ODdhY2QzNjRjNTdk
ODEuLmUzMmEzNmM2MDc2MTkyMTY4YzZhMzc5MzE4Zjc4YWUxNzg5YzQ4MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBi
b29sIEltYWdlOjppc1Bvc3RTY3JpcHRSZXNvdXJjZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBVUkwmIHVybCkKIH0KIAogCi1FbmNvZGVkRGF0YVN0YXR1cyBJbWFnZTo6c2V0RGF0YShS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorRW5jb2Rl
ZERhdGFTdGF0dXMgSW1hZ2U6OnNldERhdGEoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgbV9lbmNvZGVkSW1hZ2VEYXRh
ID0gV1RGTW92ZShkYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmgKaW5kZXggNmEwODE2OTU3YWE5M2M0MTFhNTZjZDRjMmJjMjBkZDZkOTA0NGRlYy4uNjU1ZGZl
NzNjZmY2YWQxZDA0ZjQ4YmMyMDE5ZWJiODA0MTdkNjEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC03MCw3ICs3MCw3IEBAIGNsYXNzIEFmZmluZVRyYW5z
Zm9ybTsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogc3RydWN0IExlbmd0aDsKIAogLy8gVGhpcyBjbGFzcyBnZXRzIG5vdGlmaWVkIHdoZW4g
YW4gaW1hZ2UgY3JlYXRlcyBvciBkZXN0cm95cyBkZWNvZGVkIGZyYW1lcyBhbmQgd2hlbiBpdCBh
ZHZhbmNlcyBhbmltYXRpb24gZnJhbWVzLgpAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCB7IHJldHVy
biBzdGQ6Om51bGxvcHQ7IH0KICAgICB2aXJ0dWFsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRp
b24oKSBjb25zdCB7IHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2U7IH0KIAotICAg
IFdFQkNPUkVfRVhQT1JUIEVuY29kZWREYXRhU3RhdHVzIHNldERhdGEoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
RW5jb2RlZERhdGFTdGF0dXMgc2V0RGF0YShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdmlydHVhbCBFbmNvZGVkRGF0YVN0
YXR1cyBkYXRhQ2hhbmdlZChib29sIC8qYWxsRGF0YVJlY2VpdmVkKi8pIHsgcmV0dXJuIEVuY29k
ZWREYXRhU3RhdHVzOjpVbmtub3duOyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyB1dGkoKSBjb25z
dCB7IHJldHVybiBTdHJpbmcoKTsgfSAvLyBudWxsIHN0cmluZyBpZiB1bmtub3duCkBAIC0xMzMs
OCArMTMzLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0
YShib29sIGRlc3Ryb3lBbGwgPSB0cnVlKSA9IDA7CiAKLSAgICBTaGFyZWRCdWZmZXIqIGRhdGEo
KSB7IHJldHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KLSAgICBjb25zdCBTaGFyZWRC
dWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0K
KyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgeyByZXR1cm4gbV9lbmNvZGVkSW1h
Z2VEYXRhLmdldCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQogCiAgICAgdmlydHVh
bCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpOwogCkBAIC0yMDksNyArMjA5LDcg
QEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgQ29sb3Igc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkg
Y29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fZW5jb2RlZEltYWdlRGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gbV9lbmNvZGVkSW1hZ2VEYXRhOwogICAgIEltYWdlT2JzZXJ2ZXIqIG1faW1hZ2VPYnNl
cnZlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fYW5pbWF0aW9uU3RhcnRUaW1lcjsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJh
Y2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNr
aW5nU3RvcmUuaAppbmRleCA0ZGRiNmRmODNlY2I4YjliNzk1N2Y0NjY0ZTE4NGYwMDgxZTgxMDEx
Li5kZTMzZjFhZjQxMmRjMDhiMmI5NjFhMTk0OTQ1YzljYzkwYWE2NjI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKQEAg
LTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
ICAgIGJ1ZmZlci5ncm93KGJ1ZmZlclNpemUpOwotICAgICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBtX3Bp
eGVscyA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92
ZShidWZmZXIpKTsKICAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQz
Ml90Kj4oY29uc3RfY2FzdDx1aW50OF90Kj4obV9waXhlbHMtPmRhdGEoKSkpOwogICAgICAgICBt
X3NpemUgPSBzaXplOwogICAgICAgICBtX2ZyYW1lUmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwg
bV9zaXplKTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgQVNT
RVJUKCFtX3NpemUuaXNFbXB0eSgpICYmICFpc092ZXJTaXplKG1fc2l6ZSkpOwogICAgICAgICBW
ZWN0b3I8dWludDhfdD4gYnVmZmVyIHsgb3RoZXIubV9waXhlbHMtPmRhdGEoKSwgb3RoZXIubV9w
aXhlbHMtPnNpemUoKSB9OwotICAgICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBtX3BpeGVscyA9IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsK
ICAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oY29uc3Rf
Y2FzdDx1aW50OF90Kj4obV9waXhlbHMtPmRhdGEoKSkpOwogICAgIH0KIApAQCAtMjMzLDcgKzIz
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBQYWNrZWRDb2xvcjo6QVJHQiB7IHJlc3Vs
dCB9LnZhbHVlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
PiBtX3BpeGVsczsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ+IG1fcGl4ZWxzOwogICAgIHVpbnQzMl90KiBtX3BpeGVsc1B0ciB7IG51bGxwdHIgfTsKICAg
ICBJbnRTaXplIG1fc2l6ZTsKICAgICBJbnRSZWN0IG1fZnJhbWVSZWN0OyAvLyBUaGlzIHdpbGwg
YWx3YXlzIGp1c3QgYmUgdGhlIGVudGlyZSBidWZmZXIgZXhjZXB0IGZvciBHSUYgYW5kIFBORyBm
cmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29k
ZXIuY3BwCmluZGV4IDA4NjllOTlhMDA4ODZmN2NkMTIxODZmZTMxNjFkZTA0N2ZhNTEzNjEuLjdj
NTQ5NDdmNGQ4MTQwODU1OWNjNDVjNGFjNDlhMTliOWZjODZmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcApAQCAtODIsNyArODIs
NyBAQCB2b2lkIEltYWdlRGVjb2Rlcjo6Y2xlYXJGYWN0b3JpZXMoKQogfQogI2VuZGlmCiAKLVJl
ZlB0cjxJbWFnZURlY29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRy
PEltYWdlRGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQog
ewogICAgIFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKaW5kZXggYTFhMDhhZGMxNzVkNDRiYWE0NDJl
NDRhOTRhYTk2N2EwNGY1ZjYwNy4uNmE4ZmZjYjYwZmMxMTU2ZWI4NDg3NmRlZmIwN2NiYzBiMTE5
ODQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VE
ZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNv
ZGVyLmgKQEAgLTM3LDEyICszNywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIElt
YWdlRGVjb2RlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZURlY29kZXI+IHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRy
PEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgc3RhdGlj
IFJlZlB0cjxJbWFnZURlY29kZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKICAgICBlbnVt
IGNsYXNzIE1lZGlhVHlwZSB7CkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiAgICAgdXNpbmcgU3VwcG9ydHNNZWRpYVR5cGVGdW5jID0gRnVuY3Rpb248
Ym9vbChNZWRpYVR5cGUpPjsKICAgICB1c2luZyBDYW5EZWNvZGVUeXBlRnVuYyA9IEZ1bmN0aW9u
PGJvb2woY29uc3QgU3RyaW5nJik+OwotICAgIHVzaW5nIENyZWF0ZUltYWdlRGVjb2RlckZ1bmMg
PSBGdW5jdGlvbjxSZWZQdHI8SW1hZ2VEZWNvZGVyPihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pPjsKKyAgICB1c2lu
ZyBDcmVhdGVJbWFnZURlY29kZXJGdW5jID0gRnVuY3Rpb248UmVmUHRyPEltYWdlRGVjb2Rlcj4o
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIEFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbik+OwogCiAgICAgc3RydWN0IEltYWdlRGVjb2RlckZhY3Rv
cnkgewogICAgICAgICBTdXBwb3J0c01lZGlhVHlwZUZ1bmMgc3VwcG9ydHNNZWRpYVR5cGU7CkBA
IC0xMjksNyArMTI5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGxhdGZvcm1JbWFnZVB0ciBj
cmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1w
bGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRp
b25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBz
ZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSA9IDA7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cAppbmRleCBkODFjNDgwMTkyODQ2ZGQ3ZTMyMWMyZGZiZmJmMWUwYzIwZGFhNjcxLi4zMDc3NDMz
MTVhNDFlY2ExYzliMmJjNzczZDA3OWVlNWQ0M2JhZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC03Miw3ICs3Miw3IEBAIElt
YWdlU291cmNlOjp+SW1hZ2VTb3VyY2UoKQogICAgIEFTU0VSVCgmbV9ydW5Mb29wID09ICZSdW5M
b29wOjpjdXJyZW50KCkpOwogfQogCi1ib29sIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZh
aWxhYmxlKFNoYXJlZEJ1ZmZlciogZGF0YSkKK2Jvb2wgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29k
ZXJBdmFpbGFibGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAoIWRh
dGEgfHwgaXNEZWNvZGVyQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtOTYs
NyArOTYsNyBAQCBib29sIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZhaWxhYmxlKFNoYXJl
ZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6
c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJ
bWFnZVNvdXJjZTo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIWRhdGEgfHwgIWVuc3VyZURlY29kZXJBdmFpbGFi
bGUoZGF0YSkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNCwxMyArMTA0LDEzIEBAIHZvaWQgSW1h
Z2VTb3VyY2U6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKICAgICBtX2RlY29kZXItPnNldERhdGEoKmRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiB9CiAK
LXZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIElt
YWdlU291cmNlOjpyZXNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAg
ICBtX2RlY29kZXIgPSBudWxscHRyOwogICAgIHNldERhdGEoZGF0YSwgaXNBbGxEYXRhUmVjZWl2
ZWQoKSk7CiB9CiAKLUVuY29kZWREYXRhU3RhdHVzIEltYWdlU291cmNlOjpkYXRhQ2hhbmdlZChT
aGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorRW5jb2RlZERhdGFTdGF0
dXMgSW1hZ2VTb3VyY2U6OmRhdGFDaGFuZ2VkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIHNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2Vp
dmVkKTsKICAgICBjbGVhck1ldGFkYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCA4YWY1MDgwYTAwYTk5MTYwODBmMWYwYjI3NzA3
M2MyYTg1MzQ1MjU4Li44MTRmMGUxMmViYWE0OGY4NmFjYjUyMTk3M2MzMWQ1ZDM4MmY2ZmJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAg
LTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQml0bWFwSW1hZ2U7CiBj
bGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbWFnZURlY29kZXI7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbWFnZVNvdXJj
ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZVNvdXJjZT4sIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxJbWFnZVNvdXJjZT4gewogICAgIGZyaWVuZCBjbGFzcyBCaXRtYXBJbWFnZTsK
QEAgLTU2LDkgKzU2LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJ
bWFnZVNvdXJjZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSkpOwogICAgIH0KIAotICAgIHZvaWQgc2V0
RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lk
IHJlc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOwotICAgIEVuY29kZWREYXRhU3RhdHVzIGRh
dGFDaGFuZ2VkKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAg
IHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCk7CisgICAgdm9pZCByZXNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSk7CisgICAgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGJvb2wgaXNBbGxEYXRhUmVj
ZWl2ZWQoKTsKIAogICAgIHVuc2lnbmVkIGRlY29kZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9k
ZWNvZGVkU2l6ZTsgfQpAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KICAgICBUIGZpcnN0RnJhbWVNZXRhZGF0YUNhY2hlSWZOZWVkZWQoVCYgY2Fj
aGVkVmFsdWUsIE1ldGFkYXRhVHlwZSwgVCAoSW1hZ2VGcmFtZTo6KmZ1bmN0b3IpKCkgY29uc3Qs
IEltYWdlRnJhbWU6OkNhY2hpbmcsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZl
bD4mID0geyB9KTsKIAotICAgIGJvb2wgZW5zdXJlRGVjb2RlckF2YWlsYWJsZShTaGFyZWRCdWZm
ZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlRGVjb2RlckF2YWlsYWJsZShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBkYXRhKTsKICAgICBib29sIGlzRGVjb2RlckF2YWlsYWJsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGVjb2RlcjsgfQogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKHNpemVfdCBm
cmFtZUNvdW50LCBzaXplX3QgZXhjbHVkZUZyYW1lKTsKICAgICB2b2lkIGRlY29kZWRTaXplQ2hh
bmdlZChsb25nIGxvbmcgZGVjb2RlZFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuY3BwCmluZGV4IDNlNTllYTlkMDhkZDFjOWJlZTIzYmEzZjYzNWNmMzViZmMy
ODIyOTIuLjU3N2JkNTA4YTVjNDA5ZjRiZTllNGNmMjAyYjgxZTYxZTQ1YjQ0YWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKQEAgLTMwLDEyICszMCwxMiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8
U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitSZWY8TW9kZWw+
IE1vZGVsOjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUs
IFVSTCB1cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kZWwoV1RGTW92ZShkYXRh
KSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUodXJsKSkpOwogfQogCi1Nb2RlbDo6TW9kZWwo
UmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorTW9kZWw6
Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJs
KQogICAgIDogbV9kYXRhKFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKFdURk1vdmUo
bWltZVR5cGUpKQogICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01vZGVsLmgKaW5kZXggMDY1ODEzMzc5ZjExMjU1ZDJkN2M3ZjZiNTAzNDQz
ZGM2MzBkMDRlMS4uZTZiZGUxNjZmOTQ0Y2RlN2RiMzI4YzI5NzZlYzY4MmFkYjZkMTAzNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCkBAIC0zOCw3ICszOCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291
bnRlZDxNb2RlbD4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9k
ZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdHJp
bmcsIFVSTCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1vZGVsKCk7CiAKICAgICBSZWY8U2hhcmVk
QnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CkBAIC00OSw3ICs0OSw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVs
PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxT
aGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogCiAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRh
OwogICAgIFN0cmluZyBtX21pbWVUeXBlOwpAQCAtNjAsNyArNjAsNyBAQCB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+c2l6ZSgpKTsKLSAg
ICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5z
aXplKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CiAgICAgZW5jb2RlciA8
PCBtX21pbWVUeXBlOwogICAgIGVuY29kZXIgPDwgbV91cmw7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJj
ZUxvYWRlci5oCmluZGV4IDc0NTljNTg1OGQyNDg3ZWYyYzVmZDM3MTczOTg2YjMzNzM0ZWMyOGEu
Ljg4NjkxZGMyNTZkNmRkNmM0NWY0NmUwMTU0OTY3NDI0NWFhMzUzMzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFS
ZXNvdXJjZUxvYWRlci5oCkBAIC01MSw4ICs1MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2Fj
aGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAg
ICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIENhY2hlZFJhd1Jlc291cmNl
Q2xpZW50IHVzZXMgU2hhcmVkQnVmZmVyLgorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIHsg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIC8vIFRoaXMgbWV0aG9kIHNob3Vs
ZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgdXNlcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyLgogICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiBwbGF0Zm9ybSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBk
YXRhUmVjZWl2ZWQocGxhdGZvcm0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkp
OyB9CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNl
QnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCA1NDk5ZjM3YTdmMzY0NmJkNWYzOTVhNDhiMDlkOTQx
MWQ0YzliNjY0Li5kM2UxYjU4MDRlODVhOTkxMWNmMjBmY2VkMzRiZjI1NWEzMTQ0MzRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2
YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcApAQCAtMTMxOCw3ICsxMzE4LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlOjpkaWRSZWNlaXZlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBvcmlnaW5hbFNhbXBsZSkK
ICAgICB1cGRhdGVIaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wKCk7CiB9CiAKLXZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogewogICAgIGFwcGVuZChidWZmZXItPmV4dHJhY3REYXRhKCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJp
dmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJp
dmF0ZS5oCmluZGV4IGVmODZhNDczNjkzNzFjODNlODgzYjI5YmJiNmI5YWI5NmVjYTVmMWQuLjZi
N2Q5NWU1MmI5ZGYwYzgxYWYzYmUxZDZkOWYzYzhlZDM5NTQxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAg
LTQ5LDcgKzQ5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgVGltZVJhbmdlczsKIAog
ZW51bSBjbGFzcyBTb3VyY2VCdWZmZXJBcHBlbmRNb2RlIDogdWludDhfdCB7CkBAIC02OCw3ICs2
OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQ
cml2YXRlKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpID0gMDsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgYXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBhcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpOwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZy
b21NZWRpYVNvdXJjZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1p
bmcuY3BwCmluZGV4IGM2MTEyZTExOTRjN2M5OTBmZGMxMTRlODI5Y2ZkYjVjNmFmNzU0YTkuLjhi
MDRmOWJlOTZjMzZlMGEyNjIxODBhMjVlYTM3NDU5NjJiM2Q3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVh
bWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtODYsMTIgKzg2LDEyIEBAIGNvbnN0IEF0
b21TdHJpbmcmIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpCiAgICAgcmV0
dXJuIHNrZDsKIH0KIAotc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNp
bmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFZlY3RvcjxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSlNPTiBvZiB0aGUgZm9ybWF0OiAieyBzaW5m
OiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+
IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAK
ICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAo
IXZhbHVlKQpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZl
cj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAo
IXNpbmZBcnJheSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4gc2luZnM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4g
c2luZnM7CiAgICAgc2luZnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaW5mQXJyYXktPmxlbmd0
aCgpKTsKIAogICAgIGZvciAoYXV0byYgdmFsdWUgOiAqc2luZkFycmF5KSB7CkBAIC0xMjQsNyAr
MTI0LDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogfQogCiB1c2luZyBTY2hlbWVBbmRLZXlSZXN1
bHQgPSBWZWN0b3I8c3RkOjpwYWlyPEZvdXJDQywgVmVjdG9yPHVpbnQ4X3Q+Pj47Ci1zdGF0aWMg
U2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFNjaGVtZUFuZEtleVJlc3VsdCBleHRyYWN0U2No
ZW1lQW5kS2V5SWRGcm9tU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgYXV0byBidWZmZXJzID0gZXh0cmFjdFNpbmZEYXRhKGJ1ZmZlcik7CiAgICAgaWYg
KCFidWZmZXJzLnNpemUoKSkKQEAgLTE3MCw5ICsxNzAsOSBAQCBzdGF0aWMgU2NoZW1lQW5kS2V5
UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxT
aGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURz
U2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBhdXRvIHJlc3VsdHMgPSBleHRy
YWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihidWZmZXIpOwogCiAgICAgZm9yIChhdXRvJiByZXN1
bHQgOiByZXN1bHRzKSB7CkBAIC0xODMsNyArMTgzLDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RL
ZXkKICAgICByZXR1cm4ga2V5SURzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgLy8gQ29tbW9uIFNJTkYgQm94IEZvcm1hdAogICAgIFVOVVNFRF9QQVJBTShi
dWZmZXIpOwpAQCAtMTkxLDE3ICsxOTEsMTcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgU2hhcmVkQnVmZmUKICAg
ICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNrZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc6OnNhbml0aXplU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
ICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlE
c1NrZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
ZXh0cmFjdEtleUlEc1NrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgLy8gSW4gdGhlICdza2QnIHNjaGVtZSwgdGhlIGluaXQgZGF0YSBpcyB0aGUga2V5IElE
LgotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBrZXlJRHMuYXBwZW5kKGJ1ZmZl
ci5jb3B5KCkpOwogICAgIHJldHVybiBrZXlJRHM7CiB9CkBAIC0zOTMsNyArMzkzLDcgQEAgYm9v
bCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewogICAgIGlmICgh
dmFsaWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtNDIzLDcgKzQyMyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3Ry
ZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFp
clBsYXlTdHJlYW1pbmc6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNw
b25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFp
clBsYXlTdHJlYW1pbmc6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKaW5kZXggYmM5M2Y2ZjZhN2Jk
ZDAxZWZiZjU1YjYyYmRiNmE0ZTY2ZWY5MTJiMy4uMzE3YmI4ZDU3ZTg2YzA2MjE0ZTBiNDA1OWRk
ZjRmODgwN2M3NGM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgK
QEAgLTcxLDE3ICs3MSwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgp
IG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBv
dmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXpl
UmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBz
dXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChj
b25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9tU3Ry
aW5nJiBzaW5mTmFtZSgpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAg
IHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNpbmYoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXpl
U2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBzdGF0aWMgY29uc3Qg
QXRvbVN0cmluZyYgc2tkTmFtZSgpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxS
ZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTa2QoY29uc3QgU2hhcmVkQnVmZmVyJik7
Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplU2tkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0
aXplU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0YXRpYyBjb25z
dCBWZWN0b3I8Rm91ckNDPiYgdmFsaWRGYWlyUGxheVN0cmVhbWluZ1NjaGVtZXMoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDLmgKaW5kZXggMTU5YjkwY2RiNDhmN2ZlNDRiYjQ5YmUyZWMxYzFjMmY0
MzI4NjQwMC4uNTZiNThjMjVhMjg3MDlmYjM4MjIxODM5ZTU1YmFlNDVlZDkzY2Y2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBJbXBsZW1l
bnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1w
bGVtZW50YXRpb25UeXBlOjpGYWlyUGxheVN0cmVhbWluZzsgfQogCiAgICAgdm9pZCBpbml0aWFs
aXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFs
bG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3ND
YWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFy
ZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJh
Y2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYp
IGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBm
aW5hbDsKICAgICB2b2lkIHNldENsaWVudChXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50PiYmKSBm
aW5hbDsKQEAgLTk0LDEwICs5NCwxMCBAQCBwdWJsaWM6CiAKICAgICBOU1VSTCAqc3RvcmFnZVVS
TCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZVVSTC5nZXQoKTsgfQogICAgIGJvb2wgcGVyc2lz
dGVudFN0YXRlQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dl
ZDsgfQotICAgIFNoYXJlZEJ1ZmZlciogc2VydmVyQ2VydGlmaWNhdGUoKSBjb25zdCB7IHJldHVy
biBtX3NlcnZlckNlcnRpZmljYXRlLmdldCgpOyB9CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogc2VydmVyQ2VydGlmaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlckNlcnRpZmljYXRl
LmdldCgpOyB9CiAgICAgQVZDb250ZW50S2V5U2Vzc2lvbiogY29udGVudEtleVNlc3Npb24oKTsK
IAotICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiB0YWtlVW5leHBlY3RlZEtleVJl
cXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBTaGFyZWRCdWZmZXImIGluaXREYXRhKTsKKyAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVx
dWVzdD4gdGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERh
dGEpOwogCiAgICAgLy8gQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlQ2xpZW50CiAgICAgdm9p
ZCBkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7CkBAIC0xMTIs
NyArMTEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgb3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmlj
aWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCkgZmluYWw7CiAgICAgdm9pZCBleHRl
cm5hbFByb3RlY3Rpb25TdGF0dXNEaWRDaGFuZ2VGb3JDb250ZW50S2V5UmVxdWVzdChBVkNvbnRl
bnRLZXlSZXF1ZXN0KikgZmluYWw7CiAKLSAgICB1c2luZyBLZXlzID0gVmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+PjsKKyAgICB1c2luZyBLZXlzID0gVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj47CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
KiBzZXNzaW9uRm9yS2V5SURzKGNvbnN0IEtleXMmKSBjb25zdDsKICAgICBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JHcm91cChBVkNvbnRlbnRL
ZXlSZXBvcnRHcm91cCopIGNvbnN0OwogICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCopIGNv
bnN0OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxDRE1JbnN0YW5j
ZUNsaWVudD4gbV9jbGllbnQ7CiAgICAgUmV0YWluUHRyPEFWQ29udGVudEtleVNlc3Npb24+IG1f
c2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUZQU0NvbnRlbnRLZXlTZXNzaW9uRGVsZWdh
dGU+IG1fZGVsZWdhdGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9zZXJ2ZXJDZXJ0aWZp
Y2F0ZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9zZXJ2ZXJDZXJ0aWZp
Y2F0ZTsKICAgICBib29sIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dlZCB7IHRydWUgfTsKICAgICBS
ZXRhaW5QdHI8TlNVUkw+IG1fc3RvcmFnZVVSTDsKICAgICBWZWN0b3I8V2Vha1B0cjxDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+PiBtX3Nlc3Npb25zOwpAQCAtMTUw
LDggKzE1MCw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9u
Ci0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJh
Y2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vu
c2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmlu
YWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwg
TGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vu
c2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VU
eXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lv
bkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3Ry
aW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRm
MmZmNDA3M2U5NTMuLmJhNTA2MWViYjVjNWZiZTA3NGQzYTI5ZGVhNGY5MThmYzI2MjFjZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0yMTcsNyArMjE3LDcgQEAgQUxMT1dfTkVXX0FQ
SV9XSVRIT1VUX0dVQVJEU19FTkQKICAgICByZXR1cm4gQXRvbVN0cmluZyhuc0luaXRUeXBlKTsK
IH0KIAotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGluaXRpYWxpemF0aW9uRGF0YUZvclJlcXVl
c3QoQVZDb250ZW50S2V5UmVxdWVzdCogcmVxdWVzdCkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gaW5pdGlhbGl6YXRpb25EYXRhRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1
ZXN0KiByZXF1ZXN0KQogewogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CkBAIC0yNjUsNyArMjY1LDcgQEAgQVZDb250ZW50S2V5U2Vzc2lv
biogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmNvbnRlbnRLZXlTZXNzaW9u
KCkKICAgICByZXR1cm4gbV9zZXNzaW9uLmdldCgpOwogfQogCi1SZXRhaW5QdHI8QVZDb250ZW50
S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4
cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitSZXRhaW5QdHI8QVZDb250ZW50
S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4
cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIGZv
ciAoYXV0byByZXF1ZXN0SXRlciA9IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzLmJlZ2luKCk7IHJl
cXVlc3RJdGVyICE9IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzLmVuZCgpOyArK3JlcXVlc3RJdGVy
KSB7CiAgICAgICAgIGF1dG8mIHJlcXVlc3QgPSAqcmVxdWVzdEl0ZXI7CkBAIC0zMTYsNyArMzE2
LDcgQEAgcHJpdmF0ZToKICAgICBSZXNwb25zZU1hcCBtX3Jlc3BvbnNlczsKIH07CiAKLXN0YXRp
YyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQorc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEZhaWwgb24gbGFyZ2Ug
YnVmZmVycyB3aG9zZSBzaXplIGRvZXNuJ3QgZml0IGludG8gYSAzMi1iaXQgdW5zaWduZWQgaW50
ZWdlci4KICAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci5zaXplKCk7CkBAIC0zMjQsNyArMzI0LDcg
QEAgc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2Ug
dGhlIGJ1ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChp
ZiBhbnkpLgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBK
U09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmluaXRpYWxpemVXaXRoQ29uZmln
dXJhdGlvbihjb25zdCBDRE1LCiAgICAgY2FsbGJhY2soaW5pdGlhbGl6ZSgpKTsKIH0KIAotdm9p
ZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNh
dGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNr
JiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpz
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBzZXJ2ZXJD
ZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgREVCVUdfTE9H
X0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogICAgIG1fc2VydmVyQ2VydGlmaWNhdGUgPSBX
VEZNb3ZlKHNlcnZlckNlcnRpZmljYXRlKTsKQEAgLTU4NSw4ICs1ODUsOCBAQCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIENETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byBzZXNz
aW9uS2V5cyA9IHNlc3Npb25JbnRlcmZhY2UtPmtleUlEcygpOwotICAgICAgICBpZiAoYW55T2Yo
c2Vzc2lvbktleXMsIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgc2Vzc2lvbktleSkgewot
ICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxTaGFy
ZWRCdWZmZXI+JiBrZXlJRCkgeworICAgICAgICBpZiAoYW55T2Yoc2Vzc2lvbktleXMsIFsmXShj
b25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHNlc3Npb25LZXkpIHsKKyAgICAgICAg
ICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mIGtleUlEKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGtleUlELmdldCgp
ID09IHNlc3Npb25LZXkuZ2V0KCk7CiAgICAgICAgICAgICB9KSAhPSBub3RGb3VuZDsKICAgICAg
ICAgfSkpCkBAIC02NzMsNyArNjczLDcgQEAgS2V5cyBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmtleUlEcygpCiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxi
YWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNl
bnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWlzTGljZW5zZVR5cGVTdXBwb3J0
ZWQobGljZW5zZVR5cGUpKSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVO
VElGSUVSLCAiIGZhbHNlLCBsaWNlbnNlVHlwZSBcIiIsIGxpY2Vuc2VUeXBlLCAiXCIgbm90IHN1
cHBvcnRlZCIpOwpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UK
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5p
dERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAg
ICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhb
W05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIg
PSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddKTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAg
ZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsK
LSAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEt
PmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJh
c2U2NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGlu
aXREYXRhLT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2Vy
aWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3No
U3RyaW5nIH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwog
ICAgIH0KICNlbmRpZgpAQCAtNzM2LDcgKzczNiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNl
CiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBpc0VxdWFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3N0YXRpYyBib29sIGlzRXF1YWwoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBhdXRv
IGFycmF5QnVmZmVyID0gZGF0YS50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGlmICghYXJy
YXlCdWZmZXIpCkBAIC03NTQsNyArNzU0LDcgQEAgc3RhdGljIGJvb2wgaXNFcXVhbChjb25zdCBT
aGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgcmV0dXJuIHN0cmlu
Z09yRXhjZXB0aW9uLnJldHVyblZhbHVlKCkgPT0gdmFsdWU7CiB9CiAKLXZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNl
bnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZXhwaXJlZFNlc3Np
b25zLmlzRW1wdHkoKSAmJiBpc0VxdWFsKHJlc3BvbnNlRGF0YSwgImFja25vd2xlZGdlZCJfcykp
IHsKICAgICAgICAgYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZp
Y2F0ZSgpOwpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAg
ICAgIGF1dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9u
cywgW10gKGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAg
ICAgICB9KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0
ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVu
dEtleVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhw
aXJlZFNlc3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkg
c3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxz
ZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtODU2LDcgKzg1Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAg
ICAgICAgICBhdXRvIGtleUlEID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqa2V5SURW
ZWN0b3IpKTsKICAgICAgICAgICAgIGF1dG8gZm91bmRJbmRleCA9IG1fY3VycmVudFJlcXVlc3Qu
dmFsdWUoKS5yZXF1ZXN0cy5maW5kTWF0Y2hpbmcoWyZdIChhdXRvJiByZXF1ZXN0KSB7CiAgICAg
ICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkp
OwotICAgICAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBS
ZWY8U2hhcmVkQnVmZmVyPiYgaWQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4ga2V5SURzLmZp
bmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBpZCkgewog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWQuZ2V0KCkgPT0ga2V5SUQuZ2V0KCk7CiAgICAg
ICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQ7CiAgICAgICAgICAgICB9KTsKQEAgLTg4OCw3ICs4
ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICAgICAgICAgIGlmICghcGF5
bG9hZFZlY3RvcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgICAgIGF1dG8gcGF5bG9hZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpw
YXlsb2FkVmVjdG9yKSk7Ci0gICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRL
ZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtl
eVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRh
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nl
c3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygp
IGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpw
YXlsb2FkRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9OwpAQCAtOTAx
LDcgKzkwMSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIH0KICAgICB9IGVs
c2UgewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIidzaW5m
JyBpbml0RGF0YSwgcHJvY2Vzc2luZyByZXNwb25zZSIpOwotICAgICAgICBbbV9jdXJyZW50UmVx
dWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpb
UEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0
aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldXTsKKyAgICAgICAgW21fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0
cy5maXJzdCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5
UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tl
eVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXV07CiAgICAgfQogCiAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTIy
NzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5kIGNhbGwgaXQgb25jZSBBVkNvbnRlbnRLZXlSZXNw
b25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2FsbGJhY2suCkBAIC05MzQsNyArOTM0LDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9u
KExpY2Vuc2VUeXBlIGxpY2Vuc2UKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBj
ZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIEtl
eVN0YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRT
ZXNzaW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5n
RXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQo
KSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKICAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBOU1N0cmluZyAqUGxheWJhY2tTZXNzaW9uSWRLZXkgPSBAIlBsYXliYWNrU2Vzc2lv
bklEIjsKQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJgogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBw
SWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWlu
UHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBleHBp
cmVkU2Vzc2lvbnNBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNE
YXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNs
YXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElk
ZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CkBAIC0x
MDg2LDcgKzEwODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UgogCiAgICAgUmV0YWluUHRy
PE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2lu
c3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2Vy
dGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlm
aWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAgICAgYXV0byBrZXlJ
RHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QpOwogICAgIGlmIChrZXlJRHMuaXNFbXB0eSgp
KSB7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UgogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZp
ZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0
YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1p
bmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50
SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9u
SGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29u
dGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBl
cnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0
cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CkBAIC0xMTUzLDkgKzExNTMsOSBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVl
c3RzKFZlY3RvcjxSZXRhaQogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsK
ICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0
ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgp
OworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogCi0gICAgdXNpbmcgUmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6
cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKKyAgICB1c2lu
ZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdh
dG9yIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRv
cj4gewogICAgICAgICB1c2luZyBDYWxsYmFja0Z1bmN0aW9uID0gRnVuY3Rpb248dm9pZChSZXF1
ZXN0c0RhdGEmJik+OwogICAgICAgICBzdGF0aWMgUmVmUHRyPENhbGxiYWNrQWdncmVnYXRvcj4g
Y3JlYXRlKENhbGxiYWNrRnVuY3Rpb24mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTExOTYsNyAr
MTE5Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgICAgICBhdXRvIGVudHJ5
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGF1dG8mIGtleUlEID0gcmVx
dWVzdERhdGEuZmlyc3Q7CiAgICAgICAgICAgICBhdXRvJiBwYXlsb2FkID0gcmVxdWVzdERhdGEu
c2Vjb25kOwotICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNv
ZGVUb1N0cmluZyhrZXlJRC0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CisgICAgICAgICAgICBl
bnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKICAgICAgICAgICAgIGVudHJ5
LT5zZXRTdHJpbmcoInBheWxvYWQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhwYXlsb2FkLmdldCgp
LmJ5dGVzLCBwYXlsb2FkLmdldCgpLmxlbmd0aCkpOwogICAgICAgICAgICAgcmVxdWVzdEpTT04t
PnB1c2hPYmplY3QoV1RGTW92ZShlbnRyeSkpOwogICAgICAgICB9CkBAIC0xMjExLDggKzEyMTEs
OCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlk
UHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgIEB0cnkgewogICAgICAgICBmb3IgKGF1
dG8gcmVxdWVzdCA6IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cykgewogICAgICAg
ICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwotICAg
ICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJz
dCgpKTsKLSAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4ga2V5
SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKKyAgICAgICAgICAgIGF1dG8gY29udGVudElk
ZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
ICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBw
OmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIu
Z2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W2tleUlEID0gV1RGTW92ZShrZXlJ
RCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAq
ZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAg
ICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwg
YWdncmVnYXRvciA9IFdURk1vdmUoYWdncmVnYXRvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9
IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSAoKSBtdXRhYmxlIHsKQEAgLTEyNDks
MTAgKzEyNDksMTAgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QoQVZDb24KIAogICAgIFJldGFpblB0cjxO
U0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0
YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRp
ZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmlj
YXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBhdXRvIGtleUlEcyA9
IGtleUlEc0ZvclJlcXVlc3QobV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpKTsKIAotICAgIFJldGFp
blB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5T
RGF0YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURz
LmZpcnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewog
ICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBw
OmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIu
Z2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAq
ZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vh
a1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250
ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDAzMzRk
NjIzYjJhNzYwNWM5YmUxMjIxM2I1YWJkYmJhYzJiMDNmMTUuLjYyYjgzZmJmZDU3OTQwNTBlYmM5
NDA2MzcwNDkwYmEyYjNlYzA4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURl
Y29kZXJBVkZPYmpDLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uOwogCiBjbGFzcyBJbWFnZURlY29kZXJBVkZPYmpDIDogcHVibGljIEltYWdlRGVj
b2RlciB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURl
Y29kZXJBVkZPYmpDPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IGNyZWF0ZShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXJBVkZP
YmpDKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzdXBwb3J0c01lZGlhVHlw
ZShNZWRpYVR5cGUpOwpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5h
bDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25n
IGxvbmcpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZm
ZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
ZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyRnJh
bWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsOwogCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+IGZyYW1l
SW5mb3MoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyQVZGT2JqQyhGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIEFWQXNzZXRUcmFjayAqZmlyc3RFbmFibGVkVHJh
Y2soKTsKICAgICB2b2lkIHJlYWRTYW1wbGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFj
OWExMGNjMTRmNGJmLi4zNWM2Y2U2N2U4NWY4NmFlMTY0YzIxYTcyNjA3ZmMwNjVlY2I1MDU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTI4
OSw3ICsyODksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRv
ciBpdGVyKQogCiAjcHJhZ21hIG1hcmsgLSBJbWFnZURlY29kZXJBVkZPYmpDCiAKLVJlZlB0cjxJ
bWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
CitSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRl
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICAvLyBBVkZvdW5kYXRpb24gbWF5IG5vdCBiZSBh
dmFpbGFibGUgYXQgcnVudGltZS4KICAgICBpZiAoIUFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5n
bGV0b24oKS5pc0F2YWlsYWJsZSgpKQpAQCAtMzAxLDcgKzMwMSw3IEBAIFJlZlB0cjxJbWFnZURl
Y29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBk
YXRhLCBjb25zCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyQVZGT2JqQyhk
YXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7
CiB9CiAKLUltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZP
YmpDKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICA6IEltYWdlRGVj
b2RlcigpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV91dGkoV2ViQ29yZTo6
VVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKSkKQEAgLTMwOSw3ICszMDksNyBAQCBJbWFnZURlY29k
ZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZm
ZXJSZXNvdXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAg
ICAgLCBtX2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6
Y3JlYXRlUkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CiAKICAg
ICBbbV9hc3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xvYWRlci5nZXQo
KSBxdWV1ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZ
X0RFRkFVTFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JL
ZXlzOkBbQCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH1dICgpIG11dGFibGUgewpAQCAtNjQxLDkgKzY0MSw5IEBAIHZvaWQgSW1hZ2VEZWNv
ZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250
ZW50U2l6ZSkKICAgICBtX2xvYWRlci5nZXQoKS5leHBlY3RlZENvbnRlbnRTaXplID0gZXhwZWN0
ZWRDb250ZW50U2l6ZTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2Rl
ckFWRk9iakM6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRh
dGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxl
dGU6YWxsRGF0YVJlY2VpdmVkXTsKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAg
ICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXgg
MjAwZTFhOGY5YWZiYTBmY2JiYTViMGEzZWQ3MDRjZDM0MWI0NTBkNi4uYzlkOWIyYTk2ODViMDFl
OTFhYWEwMGMwZTAwMzA3NzM4NTY5MTQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtNjYs
NyArNjYsNyBAQCBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY7CiBjbGFz
cyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7
CiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzsK
IGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzsKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlcjsKQEAgLTQyNiw3ICs0MjYsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjpv
cHRpb25hbDxXYWxsVGltZT4gbV93YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRUaW1lOwogICAgIG11
dGFibGUgaW50IG1fdGltZUNvbnRyb2xTdGF0dXNBdENhY2hlZEN1cnJlbnRUaW1lIHsgMCB9Owog
ICAgIG11dGFibGUgZG91YmxlIG1fcmVxdWVzdGVkUmF0ZUF0Q2FjaGVkQ3VycmVudFRpbWUgeyAw
IH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKICAgICBkb3VibGUgbV9jYWNoZWRSYXRlIHsgMCB9
OwogICAgIGJvb2wgbV9yZXF1ZXN0ZWRQbGF5aW5nIHsgZmFsc2UgfTsKICAgICBkb3VibGUgbV9y
ZXF1ZXN0ZWRSYXRlIHsgMS4wIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBkMThhODVh
Nzk0ZjUyM2Y5NDkxMmUyN2YwOGI3Y2NiZTg5M2M4ZWQwLi5iMWM2MDc5YzY0ODcwZjg4ZTM1Yzgw
ODExYTViMThiZGExYjdmNjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTI3OTIsNyAr
Mjc5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YXR0ZW1w
dFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jCiAgICAgaWYgKCFtX2tleUlEIHx8ICFt
X2NkbUluc3RhbmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGluc3RhbmNlU2Vzc2lv
biA9IG1fY2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMoVmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOworICAgIGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1J
bnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOwogICAgIGlmICghaW5zdGFuY2VTZXNzaW9uKQogICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDLm1tCmluZGV4IGQ5NjBhZmRjYTIxNGJmYTQ0MGVlYTIwODgzYmNhOTEzMmUy
MmY5YTAuLjRkZDZiOTFhOTQ4MzE2OWEwMjM2ODg4ZDBlNGQ4MmZmYjgzNjY2MmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpA
QCAtMjEzLDcgKzIxMyw3IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDKCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5k
RGF0YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKICAgICBhdXRvIHNoYXJlZEJ1ZmZl
ciA9IHNlZ21lbnQudGFrZVNoYXJlZEJ1ZmZlcigpOwotICAgIGF1dG8gbnNEYXRhID0gc2hhcmVk
QnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYgKG1fcGFyc2VyU3RhdGVX
YXNSZXNldCB8fCBmbGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0eSkKICAgICAgICAg
W21fcGFyc2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVh
bURhdGFQYXJzZXJTdHJlYW1EYXRhRGlzY29udGludWl0eV07CiAgICAgZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKaW5kZXgg
MDM0MjBmMTM4MzY0ZmFjMjA5MWUxMDRkMTM2ZmYzOGExZmI5ZmUyMi4uZWFkMDgzYTZjYzdlNzM2
YjQyMTcxMGZhYzM5MmEwN2RmZjkyYmU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC03Myw3ICs3Myw3IEBAIGNsYXNz
IFZpZGVvVHJhY2tQcml2YXRlOwogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzsKIGNsYXNz
IFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDRXJyb3JDbGllbnQgewogcHVibGljOgpAQCAtMTUzLDcgKzE1Myw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZChSZWY8TWVkaWFTYW1wbGU+JiYs
IHVpbnQ2NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKIAogICAgIC8vIFNv
dXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCi0gICAgdm9pZCBhcHBlbmQoUmVmPFNoYXJlZEJ1
ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBhcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWJvcnQoKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0UGFy
c2VyU3RhdGUoKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSBmaW5h
bDsKQEAgLTIyMSw3ICsyMjEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQogICAgIFJlZlB0cjxDRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4gbV9jZG1JbnN0YW5jZTsKLSAgICBWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IG1fa2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+IG1fa2V5SURzOwogI2VuZGlmCiAKICAgICBzdGQ6Om9wdGlvbmFsPEZs
b2F0U2l6ZT4gbV9jYWNoZWRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCAzYTI4NjdhMWFjMjQzYmI5YzkzYzlk
NmI3MGNhNTZiMDI5NDhmYzljLi4yNGFlMGUxNDA2MDE5MTQzZmFkNGYxNTI5ZTY4ZWQ0OWI0MTY1
M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy5tbQpAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZv
CiAgICAgVU5VU0VEX1BBUkFNKGhhc1Nlc3Npb25TZW1hcGhvcmUpOwogfQogCi12b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQor
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiZGF0
YSBsZW5ndGggPSAiLCBkYXRhLT5zaXplKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYwZDhlNzExMzJmNmMyODdhMmU2
MjlhNGI4OGE1MzlkZmQ1M2NiZTIuLjBlZmVlYWVmNWIyZDcxYmM2ZDY3MDRkZDFiOTc1YWNiYWUx
MTNiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM7CiBjbGFzcyBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4g
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcik7IFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBs
b2FkRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZCgp
OwotICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOwor
ICAgIHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKIAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1f
cGFyZW50OwogICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9h
dlJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXIubW0KaW5kZXggYTIyYTk5N2IxMTA3OWQ0NjU4NmFhNjQ4NTYxYmJmNzJhNmYyNDdm
MC4uZjkyMWYzZGEwZTY5YjMzOTk3N2M5ZTNlNDk2NjdhMjhmNWU5NWNiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTU2
LDE0ICsxNTYsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVx
dWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBs
b25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQgZGF0YVJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAg
IHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmlu
YWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFp
bGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVkKCk7IH0K
IAogICAgIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVmUHRyPFBs
YXRmb3JtTWVkaWFSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsKIAogV2Vh
a1B0cjxQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxv
YWRlcjo6Y3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAg
LTIxMSwxMyArMjExLDEwIEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2Fk
RmluaXNoZWQoKQogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQogCi12b2lkIFBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBQbGF0Zm9ybVJlc291cmNlTWVk
aWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAg
ICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Ci0gICAgZWxzZQotICAgICAgICBtX2J1ZmZl
ci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZElu
U2hhcmVkQnVmZmVyKCptX2J1ZmZlcik7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVm
ZmVyKSk7CisgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZl
ci5nZXQoKSk7CiB9CiAKIGNsYXNzIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyIDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyPiB7CkBAIC0zODgsNyAr
Mzg1LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAg
ICAgc3RvcExvYWRpbmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5l
d0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVZBc3NldFJlc291cmNlTG9hZGlu
Z0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF07CiAg
ICAgaWYgKCFkYXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBk
YjQ1N2E4MWQzZWU4MjkxYjkwNWU5YmE3N2MxZTJhZjMwOWUwY2IyLi45NDE5YmNlYTM4ZGJmOGQ2
NDkyZjY4MDFkOWEyMTU2MjM2NmEyYzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5o
CkBAIC0zMSwxMCArMzEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNl
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZv
bnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250UGxh
dGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0
IEZvbnRWYXJpYW50U2V0dGluZ3M7CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgc3RydWN0IEZvbnRDdXN0
b21QbGF0Zm9ybURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogcHVibGljOgotICAgIEZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSwgU2hhcmVkQnVmZmVyJik7CisgICAgRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShGVF9GYWNlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAg
fkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKSA9IGRlZmF1bHQ7CiAgICAgRm9udFBsYXRmb3JtRGF0
YSBmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9v
bCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgYm9vbCBz
dXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2Rh
OWZmZTY3ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUwYzA2Li5iNmQzZWIzNjMxMTI0NDYxM2IzODAzZjJm
M2QyNGQzMDg3ZWEyNGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yNDQsMTYgKzI0NCwxNiBAQCBzaXpl
X3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZl
ciwgb2ZmX3QgcG9zaXRpb24sCiAKIHZvaWQgc2hhcmVkQnVmZmVyUmVsZWFzZSh2b2lkKiBpbmZv
KQogewotICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVk
QnVmZmVyKj4oaW5mbyk7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVy
ID0gc3RhdGljX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAgIHNoYXJl
ZEJ1ZmZlci0+ZGVyZWYoKTsKIH0KICNlbmRpZgogCi1JbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNv
ZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pCitJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQog
ewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBpZiAoZGF0YS5zaXpl
KCkgPj0gMzIpCi0gICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBl
V2l0aERhdGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwor
ICAgICAgICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRh
dGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxw
dHIpKTsKICAgICAKICAgICBpZiAodXRpSGludCkgewogICAgICAgICBjb25zdCB2b2lkKiBrZXkg
PSBrQ0dJbWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsKQEAgLTU2MiwyMyArNTYyLDI0IEBA
IFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpCiAgICAgcmV0dXJuIG1hc2tlZEltYWdlID8gbWFza2Vk
SW1hZ2UgOiBpbWFnZTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShTaGFyZWRC
dWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURlY29kZXJDRzo6
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKIHsKICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gYWxsRGF0YVJlY2VpdmVkOwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFy
ZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1
ZmZlcidzIGtub3dsZWRnZS4KLSAgICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0
byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcg
dGhhdCBJbWFnZUlPIGlzCi0gICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZl
ci4KLSAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRh
dGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAgLy8gT24gTWFj
IHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNy
ZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3Mga25v
d2xlZGdlLgorICAgIC8vIFdlIHVzZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0
byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcg
dGhhdCBJbWFnZUlPIGlzCisgICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIuCisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVy
LmdldCgpLCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxE
YXRhUmVjZWl2ZWQpOwogI2Vsc2UKLSAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3
cmFwIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKLSAgICAvLyBXZSB1c2UgdGhl
IEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50
ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCisgICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlk
ZXIgdG8gd3JhcCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KKyAgICBhdXRvIGNvbnRpZ3Vv
dXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNvbnRpZ3VvdXNEYXRhLmdldCgp
LnJlZigpOworICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNhbGxiYWNrIHJh
dGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyCiAgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0byBsb2NrIGRvd24gdGhlIGJ5
dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gKICAgICAv
LyBpcyBhIHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2FsbGJhY2su
CiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7
IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVmZmVyUmVs
ZWFzZSB9OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0g
YWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0YSwgZGF0YS5zaXplKCksICZw
cm92aWRlckNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0
YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdChjb250aWd1b3Vz
RGF0YS5wdHIoKSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOwogICAgIENHSW1h
Z2VTb3VyY2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhUHJv
dmlkZXIuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCmluZGV4IDk3
NDA3MzZhMjFhYzk5OGFiMDVmMWM5YjRmNWIxNjc1ZTQ0ZDJjOTEuLmEwYWMxYzJmYmVlNTI3ZTVh
YjExMTQ1NTgxMmJkYjczNjNhMDU1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApAQCAtMzIsOSArMzIsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbWFnZURlY29kZXJDRyBmaW5hbCA6IHB1YmxpYyBJbWFn
ZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIElt
YWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKTsKKyAgICBJbWFnZURlY29kZXJDRyhGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCi0g
ICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJDRz4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyQ0c+IGNy
ZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJDRyhkYXRh
LCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CkBAIC02
NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVm
ZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJv
b2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJl
Y2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
REZEb2N1bWVudEltYWdlLmNwcAppbmRleCAzMWMyN2MwNjliMmIzYzcwMzczMmViNzEzYjI2MzEy
ODQyMTI0ZTZlLi5mZjc3YjUzZTlkNjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYyZDg3Y2U2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6
ZGVzdHJveURlY29kZWREYXRhKGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRl
UERGRG9jdW1lbnQoKQogewotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVBy
b3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5j
cmVhdGVDRkRhdGEoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4g
ZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0
YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9j
dW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3Zp
ZGVyLmdldCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCmluZGV4IGY3NDdkODBm
YjYxZDMwZmM1MDIyZTY4MmQ2MzU2MTMzZDNjYTY5N2EuLmM4YTgwNjEyMjA1M2Y2NDhhZGRiMDJh
YzM4OWNlNzE0MzY4ZGJiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcApAQCAtODAsNyAr
ODAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0TWluaW11bUF1ZGlvU2FtcGxlRHVy
YXRpb24oZmxvYXQpCiB7CiB9CiAKLVNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVu
dChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK1NvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVu
dDo6U2VnbWVudChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBt
X3NlZ21lbnQoV1RGTW92ZShidWZmZXIpKQogewogfQpAQCAtMTAxLDcgKzEwMSw3IEBAIHNpemVf
dCBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgICAgICAgICAg
cmV0dXJuIGNsYW1wVG88c2l6ZV90PihNVFBsdWdpbkJ5dGVTb3VyY2VHZXRMZW5ndGgoYnl0ZVNv
dXJjZS5nZXQoKSkpOwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IFJlZjxT
aGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgICAgIFtdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYgYnVmZmVyKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYnVmZmVy
LT5zaXplKCk7CiAgICAgICAgIH0KQEAgLTEyNSw3ICsxMjUsNyBAQCBhdXRvIFNvdXJjZUJ1ZmZl
clBhcnNlcjo6U2VnbWVudDo6cmVhZChzaXplX3QgcG9zaXRpb24sIHNpemVfdCBzaXplVG9SZWFk
LCB1aW50OAogICAgICAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVhZEVycm9yPiB7IFJlYWRF
cnJvcjo6RmF0YWxFcnJvciB9OwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAgIFsmXShjb25z
dCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZWFkUmVzdWx0CisgICAgICAgIFsmXShj
b25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVhZFJlc3VsdAog
ICAgICAgICB7CiAgICAgICAgICAgICBidWZmZXItPmNvcHlUbyhkZXN0aW5hdGlvbiwgcG9zaXRp
b24sIHNpemVUb1JlYWQpOwogICAgICAgICAgICAgcmV0dXJuIHNpemVUb1JlYWQ7CkBAIC0xMzMs
NyArMTMzLDcgQEAgYXV0byBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnJlYWQoc2l6ZV90
IHBvc2l0aW9uLCBzaXplX3Qgc2l6ZVRvUmVhZCwgdWludDgKICAgICApOwogfQogCi1SZWY8U2hh
cmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VTaGFyZWRCdWZmZXIo
KQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVu
dDo6dGFrZVNoYXJlZEJ1ZmZlcigpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9zZWdt
ZW50LAogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCkBAIC0xNDIsMjggKzE0Miwy
OCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VT
aGFyZWRCdWZmZXIoKQogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcihzaXplKCkp
OwogICAgICAgICAgICAgYXV0byByZWFkUmVzdWx0ID0gcmVhZCgwLCB2ZWN0b3Iuc2l6ZSgpLCB2
ZWN0b3IuZGF0YSgpKTsKICAgICAgICAgICAgIGlmICghcmVhZFJlc3VsdC5oYXNfdmFsdWUoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAg
ICAgICB2ZWN0b3Iuc2hyaW5rKHJlYWRSZXN1bHQudmFsdWUoKSk7Ci0gICAgICAgICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKTsKKyAgICAgICAgICAgIHJl
dHVybiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKTsKICAg
ICAgICAgfSwKICNlbmRpZgotICAgICAgICBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikK
KyAgICAgICAgWyZdKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShidWZmZXIsIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCkpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UoYnVmZmVyLCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7CiAgICAgICAgIH0KICAgICApOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OmdldFNo
YXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gU291cmNl
QnVmZmVyUGFyc2VyOjpTZWdtZW50OjpnZXRTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIHJl
dHVybiBXVEY6OnN3aXRjaE9uKG1fc2VnbWVudCwKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRf
UkVBREVSKQotICAgICAgICBbJl0oY29uc3QgUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJl
Zj4mKSAtPiBSZWZQdHI8U2hhcmVkQnVmZmVyPgorICAgICAgICBbJl0oY29uc3QgUmV0YWluUHRy
PE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mKSAtPiBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4KICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0sCiAj
ZW5kaWYKLSAgICAgICAgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJl
ZlB0cjxTaGFyZWRCdWZmZXI+CisgICAgICAgIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+CiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBidWZmZXIucHRyKCk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyLmgKaW5kZXggNTIwYjUyMDdmYzI3MWQ3OTgxNTMzZmIxNGQyMzE1NTk0YTg4
ODM2NS4uNzI5N2E3OTE0YTc5YWRmNjQyZGM2YjE2YjM2ZTYwZjljZDAyOWYwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDb250ZW50VHlwZTsKIGNsYXNzIE1lZGlhU2FtcGxlOwotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQg
U291cmNlQnVmZmVyUGFyc2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNvdXJjZUJ1
ZmZlclBhcnNlcj4gewogcHVibGljOgpAQCAtNjksMTEgKzY5LDExIEBAIHB1YmxpYzoKICNpZiBI
QVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVSKQogICAgICAgICBTZWdtZW50KFJldGFpblB0cjxN
VFBsdWdpbkJ5dGVTb3VyY2VSZWY+JiYpOwogI2VuZGlmCi0gICAgICAgIFNlZ21lbnQoUmVmPFNo
YXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIFNlZ21lbnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpOwogICAgICAgICBTZWdtZW50KFNlZ21lbnQmJikgPSBkZWZhdWx0OwotICAgICAgICBS
ZWY8U2hhcmVkQnVmZmVyPiB0YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAgICAgIC8vIFdpbGwgcmV0
dXJuIG51bGxwdHIgaWYgU2VnbWVudCdzIGJhY2tlbmQgaXNuJ3QgYSBTaGFyZWRCdWZmZXIuCi0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAg
ICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZVNoYXJlZEJ1ZmZlcigpOworICAg
ICAgICAvLyBXaWxsIHJldHVybiBudWxscHRyIGlmIFNlZ21lbnQncyBiYWNrZW5kIGlzbid0IGEg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgICAgIHNpemVfdCBzaXplKCkg
Y29uc3Q7CiAKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogI2lmIEhBVkUoTVRfUExVR0lOX0ZP
Uk1BVF9SRUFERVIpCiAgICAgICAgICAgICBSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVm
PiwKICNlbmRpZgotICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4KKyAgICAgICAgICAgIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPgogICAgICAgICA+IG1fc2VnbWVudDsKICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDM1OWVkYjQxNWZkMzc1ZWQ4
MmI3YjRhNDlmMTFlNGM4ZmQ2YzdkNmIuLjliYzE4OTQxOTg2MzBiYWQ4ZDdjYmQwYjNhNWIyOGU0
NmU5ZWZlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0zNjcsNyAr
MzY3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgRnJlZURhdGFTZWdtZW50KHZvaWQq
IHJlZmNvbiwgdm9pZCosIHNpemVfdCkKICAgICB7Ci0gICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KHJlZmNvbik7CisgICAg
ICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21lbnQqPihyZWZjb24p
OwogICAgICAgICBidWZmZXItPmRlcmVmKCk7CiAgICAgfQogCkBAIC0zODgsNyArMzg4LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgIGFkdmFuY2VUb05leHRTZWdtZW50KCk7CiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBjdXJyZW50U2VnbWVudC5nZXRTaGFyZWRCdWZmZXIo
KTsKKyAgICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZm
ZXIgPSBjdXJyZW50U2VnbWVudC5nZXRTaGFyZWRCdWZmZXIoKTsKICAgICAgICAgICAgIENNQmxv
Y2tCdWZmZXJSZWYgcmF3QmxvY2tCdWZmZXIgPSBudWxscHRyOwogICAgICAgICAgICAgdWludDY0
X3QgbGFzdFJlYWQgPSAwOwogICAgICAgICAgICAgc2l6ZV90IGRlc3RpbmF0aW9uT2Zmc2V0ID0g
bV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CkBAIC00MDksNyArNDA5LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgIGRlc3RpbmF0aW9uT2Zmc2V0ID0gMDsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKHNoYXJlZEJ1ZmZlci0+aGFzT25lU2VnbWVudCgpLCAi
Q2FuIG9ubHkgZGVhbCB3aXRoIHNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGEgc2luZ2xlIERhdGFT
ZWdtZW50Iik7Ci0gICAgICAgICAgICAgICAgLy8gQSBTaGFyZWRCdWZmZXIgZG9lc24ndCBoYXZl
IHRocmVhZC1zYWZlIHJlZmNvdW50aW5nLCBhcyBzdWNoIHdlIG11c3Qga2VlcCBhIHJlZmVyZW5j
ZSB0byB0aGUgRGF0YVNlZ21lbnQgaW5zdGVhZC4KKyAgICAgICAgICAgICAgICAvLyBBIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIgZG9lc24ndCBoYXZlIHRocmVhZC1zYWZlIHJlZmNvdW50aW5nLCBh
cyBzdWNoIHdlIG11c3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgRGF0YVNlZ21lbnQgaW5zdGVh
ZC4KICAgICAgICAgICAgICAgICAvLyBUT0RPOiBjb3VsZCB3ZSBvbmx5IGNyZWF0ZSBhIG5ldyBD
TUJsb2NrQnVmZmVyIGlmIHRoZSBiYWNrZW5kIG1lbW9yeSBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2
aW91cyBvbmU/CiAgICAgICAgICAgICAgICAgYXV0byBmaXJzdFNlZ21lbnQgPSBzaGFyZWRCdWZm
ZXItPmJlZ2luKCktPnNlZ21lbnQ7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGNhblJlYWQgPSBz
dGQ6Om1pbjxzaXplX3Q+KG51bVRvUmVhZCwgZmlyc3RTZWdtZW50LT5zaXplKCkgLSBtX3Bvc2l0
aW9uV2l0aGluU2VnbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuY3BwCmluZGV4IDQwMjVlMDY5MmRjNWExNWU5NzM2OTU4MDMzM2Y2ZmEzYjliZmJkNGIuLmJh
NjA1ZGNiMzFkNTI5NDdhYzJhNzE0NmMxZGU4NDBjZDRhNDg3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1C
dWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCkBAIC03MzcsNyArNzM3LDcgQEAgRGlkQ2hh
bmdlSXRlbUJ1ZmZlciBJdGVtQnVmZmVyOjpzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChzaXpl
X3QgbnVtYmVyT2ZCeXRlcykKIHZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kKGNvbnN0IERpc3BsYXlM
aXN0SXRlbSYgdGVtcG9yYXJ5SXRlbSkKIHsKICAgICBhdXRvIHJlcXVpcmVkU2l6ZUZvckl0ZW0g
PSBtX3dyaXRpbmdDbGllbnQtPnJlcXVpcmVkU2l6ZUZvckl0ZW0odGVtcG9yYXJ5SXRlbSk7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3V0T2ZMaW5lSXRlbTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gb3V0T2ZMaW5lSXRlbTsKICAgICBpZiAoIXJlcXVpcmVkU2l6ZUZv
ckl0ZW0pIHsKICAgICAgICAgb3V0T2ZMaW5lSXRlbSA9IG1fd3JpdGluZ0NsaWVudC0+ZW5jb2Rl
SXRlbU91dE9mTGluZSh0ZW1wb3JhcnlJdGVtKTsKICAgICAgICAgaWYgKCFvdXRPZkxpbmVJdGVt
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCmluZGV4IGM4NzMxOTgy
ZWY4MzkzMWJiYWUzMWI3ODY1MGFjMGRhMjBhMDVmYzUuLmIzMWJjNWZkNGU5MjE0YjE1YTM3NjFm
YmU5OGQ2MGNlYjQ3YTk4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJ
dGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0CisgICAgdmlydHVhbCBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBE
aXNwbGF5TGlzdEl0ZW0mKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQpAQCAtMTY4LDcgKzE2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB3aXRoIHBhZGRpbmcgYmV0
d2VlbiBlYWNoIGl0ZW0gdG8gZW5zdXJlIHRoYXQgYWxsIGl0ZW1zIGFyZSBhbGlnbmVkIHRvIDgg
Ynl0ZXMuCiAgICAgLy8KICAgICAvLyBJZiBhIHdyaXRpbmcgY2xpZW50IGlzIHByZXNlbnQgYW5k
IHJlcXVpcmVzIGN1c3RvbSBlbmNvZGluZyBmb3IgdGhlIGdpdmVuIGl0ZW0gdHlwZSBULCB0aGUK
LSAgICAvLyBpdGVtIGJ1ZmZlciB3aWxsIGFzayB0aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgU2hh
cmVkQnVmZmVyIGNvbnRhaW5pbmcgZW5jb2RlZCBkYXRhIGZvciB0aGUKKyAgICAvLyBpdGVtIGJ1
ZmZlciB3aWxsIGFzayB0aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciBjb250YWluaW5nIGVuY29kZWQgZGF0YSBmb3IgdGhlCiAgICAgLy8gaXRlbS4gVGhpcyBl
bmNvZGVkIGRhdGEgaXMgdGhlbiBhcHBlbmRlZCB0byB0aGUgaXRlbSBidWZmZXIsIHdpdGggcGFk
ZGluZyB0byBlbnN1cmUgdGhhdAogICAgIC8vIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoaXMgZGF0
YSBhcmUgYWxpZ25lZCB0byA4IGJ5dGVzLCBpZiBuZWNlc3NhcnkuIFdoZW4gY29uc3VtaW5nIGVu
Y29kZWQKICAgICAvLyBpdGVtIGRhdGEsIGEgY29ycmVzcG9uZGluZyBJdGVtQnVmZmVyUmVhZGlu
Z0NsaWVudCB3aWxsIGJlIHJlcXVpcmVkIHRvIGNvbnZlcnQgdGhpcyBlbmNvZGVkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA1MDZi
NGRkNjJkNTVhNTZhMjc4YzMwY2NhYjJkMTkxMTBmMjQxZWVjLi4yYjQ0M2ZiYmVkMmMxZmRlNDhi
Y2RlOWNiZTQwOTUzNDk3ZmRlOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyB2b2lkIHJlbGVhc2VDdXN0b21Gb250RGF0YSh2b2lkKiBkYXRhKQog
ewotICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOworICAgIHN0
YXRpY19jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKIH0KIAog
c3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBmcmVlVHlwZUZhY2VLZXk7CiAKLUZvbnRDdXN0
b21QbGF0Zm9ybURhdGE6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSBmcmVlVHlwZUZh
Y2UsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YShGVF9GYWNlIGZyZWVUeXBlRmFjZSwgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogICAgIDogbV9mb250RmFjZShhZG9wdFJlZihjYWlyb19mdF9mb250X2Zh
Y2VfY3JlYXRlX2Zvcl9mdF9mYWNlKGZyZWVUeXBlRmFjZSwgRlRfTE9BRF9ERUZBVUxUKSkpCiB7
CiAgICAgYnVmZmVyLnJlZigpOyAvLyBUaGlzIGlzIGJhbGFuY2VkIGJ5IHRoZSBidWZmZXItPmRl
cmVmKCkgaW4gcmVsZWFzZUN1c3RvbUZvbnREYXRhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmNwcAppbmRleCA5YWQxOWI4NzZiMjdlNjBkNGZiYTUwMzBlNjVmODFlN2NhOGE1
MDY5Li5kZmJjNTgwZmI4ZTliMzA5MzZjY2EwOGJiODhiNDljMmJiNjUzYWM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtODEsMTIgKzgxLDEyIEBAIEltYWdl
RGVjb2RlckdTdHJlYW1lclNhbXBsZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRlcikKICAgICByZXR1
cm4gKEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZSopaXRlci0+c2Vjb25kLmdldCgpOwogfQog
Ci1SZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNy
ZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IEltYWdlRGVjb2Rl
ckdTdHJlYW1lcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJbWFnZURlY29kZXJHU3RyZWFtZXIoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0
aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogfQogCi1JbWFnZURlY29kZXJHU3Ry
ZWFtZXI6OkltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikK
K0ltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICA6IG1fbWltZVR5cGUobWltZVR5cGUpCiB7
CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwpAQCAtMTk5LDcgKzE5OSw3IEBA
IFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdl
QXRJbmRleChzaXplX3QgaW5kZXgsIFN1CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQg
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCkK
K3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIGJvb2wpCiB7CiAgICAgcHVzaEVuY29kZWREYXRhKGRhdGEpOwogfQpAQCAtNDI2
LDEwICs0MjYsMTEgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJ
bm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKICAgICByZXR1cm4gRW5jb2Rl
ZERhdGFTdGF0dXM6OlVua25vd247CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpw
dXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIEltYWdlRGVj
b2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNv
bnRpZ3VvdXMoKTsKICAgICBtX2VvcyA9IGZhbHNlOwotICAgIGF1dG8gdGhyZWFkID0gVGhyZWFk
OjpjcmVhdGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gYnVmZmVyLmRh
dGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6
Y3JlYXRlKCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGNvbnRpZ3VvdXNC
dWZmZXItPmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKICAgICAgICAgbV9pbm5lckRl
Y29kZXIgPSBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6Y3JlYXRlKCp0aGlz
LCBkYXRhLCBzaXplKTsKICAgICAgICAgbV9pbm5lckRlY29kZXItPnJ1bigpOwogICAgIH0sIFRo
cmVhZFR5cGU6OkdyYXBoaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaApp
bmRleCA2NmYzMzcyODQ2YTRkZjg3NGY0MjBkYjY1NGU2ODljOWU0M2IwYzUyLi5kM2VmNmE0NWNk
N2RiZGZjMzEyMGVhMjNmOGRlYjNjNTk5NzFhZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2Rl
ckdTdHJlYW1lci5oCkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIEltYWdlRGVjb2RlckdTdHJlYW1l
ciBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2RlckdTdHJlYW1lcik7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IGNyZWF0ZShT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pOwotICAgIEltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVy
PiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1
YWwgfkltYWdlRGVjb2RlckdTdHJlYW1lcigpID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBib29s
IHN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID09IE1lZGlh
VHlwZTo6VmlkZW87IH0KQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtSW1h
Z2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0g
U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29k
aW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lk
IHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNl
dERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZv
aWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
IGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2VvczsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7
CiAKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICB2b2lkIGhhbmRs
ZVNhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4mJik7Ci0gICAgdm9pZCBwdXNoRW5jb2RlZERhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
U2FtcGxlKiBzYW1wbGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNzk3OTQ4MGY5MWM1OTdhYTlm
OTAwOTdjMTg4MzJjNmExNWMzMmNlOC4uYjMyNGNmMTE0NjQ3YjMzNzVlNmE0NWJmYWIxMDNlMGEy
OTBmYjhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKQEAgLTM2OTIsNyArMzY5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChJbml0RGF0YSYmIGluaXRECiAKICAg
ICAgICAgR1NUX0RFQlVHKCJzY2hlZHVsaW5nIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVk
ICVzIGV2ZW50IG9mIHNpemUgJXp1IiwgaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKS51
dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwot
ICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgp
LT5zaXplKCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogICAgICAgICB3ZWFrVGhp
cy0+bV9wbGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhLnBheWxv
YWRDb250YWluZXJUeXBlKCksIGluaXREYXRhLnBheWxvYWQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFt
ZXIuY3BwCmluZGV4IDVkODZmYjFhZjQ4N2MwMjg5ZTAwMTI1NTk2NWMzMWRjZGE5NzM0MjYuLjkz
MDE5MDk5NDViNGEyM2Q2Njc4MmYzNTBiNTZlNDQ3OWY4MDI2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6
CiAKICAgICAvLyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRob2RzLgog
ICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBv
bGljeUNoZWNrKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAg
ICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtMTA5Myw3ICsx
MDkzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNl
aXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb24KICAgICBjb21wbGV0aW9uSGFuZGxlcihT
aG91bGRDb250aW51ZVBvbGljeUNoZWNrOjpZZXMpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNl
U3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xp
ZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NE
TVByb3h5Q2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCmluZGV4IDY5MmE5OTZkMTljMjRlZmQ5YTQ4NTUy
MzczYTU2NzliNTJlMWVmMWMuLjM0OWJmZGNhYWQ2YzdkN2Y4ZDVhZGEwYTE3MjE5ZmQ5ZTcwNjI2
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCkBAIC02MiwxMSArNjIsMTEg
QEAgcHVibGljOgogICAgIENETVByb3h5Q2xlYXJLZXkoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVh
bCB+Q0RNUHJveHlDbGVhcktleSgpOwogCi0gICAgLy8gRklYTUU6IFRoZXJlJ3MgYSBsYWNrIG9m
IGNvbnNpc3RlbmN5IGJldHdlZW4gU2hhcmVkQnVmZmVycywKKyAgICAvLyBGSVhNRTogVGhlcmUn
cyBhIGxhY2sgb2YgY29uc2lzdGVuY3kgYmV0d2VlbiBGcmFnbWVudGVkU2hhcmVkQnVmZmVycywK
ICAgICAvLyBWZWN0b3I8Y2hhcj4ncyBhbmQge3VpbnQ4X3QqLHNpemVfdH0gaWRpb21zIGZvciBy
ZXByZXNlbnRpbmcgYSBjaHVuayBvZgotICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBzb21laG93LiBO
b3RlIFNoYXJlZEJ1ZmZlcnMgYXJlIGRhbmdlcm91cyBzaW5jZQorICAgIC8vIGJ5dGVzLiBGaXgg
dGhhdCBzb21laG93LiBOb3RlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJzIGFyZSBkYW5nZXJvdXMg
c2luY2UKICAgICAvLyB0aGV5J3JlIG5vdCB0aHJlYWQtc2FmZSBhbmQgdGhpcyBjbGFzcyBtdXN0
IG1haW50YWluCi0gICAgLy8gdGhyZWFkLXNhZmV0eSwgYnV0IG1heWJlIFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQgY291bGQgYmUKKyAgICAvLyB0aHJlYWQtc2FmZXR5LCBidXQgbWF5YmUgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQgY291bGQgYmUKICAgICAvLyBtYWRlIHRv
IHdvcmssIGhvd2V2ZXIgdGhhdCBoYXMgemVybyBoZWxwZXJzIGZvciBkcm9wcGluZyBpbnRvCiAg
ICAgLy8gaXRlcmF0b3ItYXdhcmUgLyBjb21wYXJhdG9yLWF3YXJlIGNvbnRhaW5lcnMuLi4KICAg
ICBzdHJ1Y3QgY2VuY0RlY3J5cHRDb250ZXh0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCmlu
ZGV4IDJlZmEwNDM2MGU4ODQ4MzgwNjE0NGMzZDcxZGU2M2FkN2I0MmI1NjEuLmMzODkxNmU3ZDA1
OWU4ODliNWM4OGVlYjA5ZTBmNGNmYzAzYzFkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNw
cApAQCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzU2Vz
c2lvbnMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZhdGVUaHVu
ZGVyOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29u
c3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6
OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAgICAvLyBWYWxpZGF0
ZSB0aGUgaW5pdERhdGEgYnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0IGluIGtleWlkcyBjYXNlLgog
ICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJrZXlp
ZHMiKSAmJiBDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdChpbml0RGF0YSkpCkBAIC0yMzcs
NyArMjM3LDcgQEAgYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNJbml0RGF0YShjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFMKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3Bv
bnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZVRodW5kZXI6OnNhbml0aXplUmVzcG9uc2UoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJl
c3BvbnNlLmNvcHkoKTsKIH0KQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIENETUluc3RhbmNlVGh1
bmRlcjo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZp
Z3VyYQogICAgIGNhbGxiYWNrKFN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VUaHVu
ZGVyOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRl
LCAgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6
c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlm
aWNhdGUsICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBPcGVuQ0RNRXJyb3Ig
ZXJyb3IgPSBvcGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2NlcnRpZmljYXRlKG1fdGh1bmRlclN5
c3RlbS5nZXQoKSwgY29uc3RfY2FzdDx1aW50OF90Kj4oY2VydGlmaWNhdGUtPmRhdGEoKSksCiAg
ICAgICAgIGNlcnRpZmljYXRlLT5zaXplKCkpOwpAQCAtMzI2LDcgKzMyNiw3IEBAIFJlZlB0cjxD
RE1JbnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNlVGh1bmRlcjo6Y3JlYXRlU2Vzc2lvbigpCiBj
bGFzcyBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgewogCiBwdWJsaWM6Ci0gICAgUGFyc2VkUmVzcG9u
c2VNZXNzYWdlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgUGFyc2Vk
UmVzcG9uc2VNZXNzYWdlKGNvbnN0IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKQogICAgIHsKICAgICAgICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+c2l6ZSgpKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMzU0LDggKzM1NCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQogICAgIGJvb2wgaGFzUGF5bG9h
ZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fcGF5bG9hZCk7IH0KLSAgICBj
b25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0JiB7IEFTU0VSVChtX3BheWxv
YWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiYg
cGF5bG9hZCgpICYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgp
OyB9CisgICAgY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29u
c3QmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxvYWQudmFsdWUoKTsgfQorICAg
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpICYgeyBBU1NFUlQobV9wYXls
b2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CiAgICAgYm9vbCBoYXNUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlLmhhc192YWx1ZSgpOyB9CiAgICAgV2ViQ29yZTo6TWVkaWFLZXlN
ZXNzYWdlVHlwZSB0eXBlKCkgY29uc3QgeyBBU1NFUlQobV90eXBlKTsgcmV0dXJuIG1fdHlwZS52
YWx1ZSgpOyB9CiAgICAgV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSB0eXBlT3IoV2ViQ29y
ZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSBhbHRlcm5hdGUpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA/
IG1fdHlwZS52YWx1ZSgpIDogYWx0ZXJuYXRlOyB9CkBAIC0zNjQsMTEgKzM2NCwxMSBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzVmFsaWQgeyBmYWxzZSB9OwotICAgIHN0ZDo6
b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IG1fcGF5bG9hZDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9wYXlsb2FkOwogICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZT4gbV90eXBlOwogfTsKIAotdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjpjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6
Y2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogewogICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1l
c3NhZ2UoYnVmZmVyKTsKICAgICBpZiAoIXBhcnNlZFJlc3BvbnNlTWVzc2FnZSkgewpAQCAtNDc1
LDcgKzQ3NSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6a2V5c1VwZGF0ZURv
bmVDYWxsYmFjaygpCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQog
Ci12b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpl
cnJvckNhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7
CiAgICAgR1NUX0VSUk9SKCJDRE0gZXJyb3IiKTsKICAgICBHU1RfTUVNRFVNUCgiZXJyb3IgZHVt
cCIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKQEAgLTQ4OCw3ICs0ODgsNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xl
YXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhU2hhcmVkQnVmZmVyLAordm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlw
ZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YVNoYXJlZEJ1ZmZlciwKICAgICBMaWNlbnNlQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtNTA2LDcgKzUwNiw3IEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0CiAgICAgICAgIG1faW5pdERhdGEucGF5bG9hZCgpLT5k
YXRhKCksIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCksIG51bGxwdHIsIDAsICZtX3RodW5k
ZXJTZXNzaW9uQ2FsbGJhY2tzLCB0aGlzLCAmc2Vzc2lvbik7CiAgICAgaWYgKCFzZXNzaW9uKSB7
CiAgICAgICAgIEdTVF9FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBzZXNzaW9uIik7Ci0gICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7Cisg
ICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERh
dGEucGF5bG9hZCgpOwogICAgICAgICBjYWxsYmFjayhpbml0RGF0YS5yZWxlYXNlTm9uTnVsbCgp
LCB7IH0sIGZhbHNlLCBGYWlsZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTE1LDcg
KzUxNSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2Uo
TGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0CiAKICAgICBhdXRvIGdlbmVyYXRlQ2hh
bGxlbmdlID0gW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7
CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CisgICAgICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOwog
ICAgICAgICBpZiAobV9zZXNzaW9uSUQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBHU1RfRVJS
T1IoImNvdWxkIG5vdCBjcmVhdGUgc2Vzc2lvbiBpZCIpOwogICAgICAgICAgICAgY2FsbGJhY2so
aW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgeyB9LCBmYWxzZSwgRmFpbGVkKTsKQEAgLTU0NSwx
MyArNTQ1LDEzIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6c2Vzc2lvbkZhaWx1
cmUoKQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxi
YWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25J
RCA9PSBtX3Nlc3Npb25JRCk7CiAKICAgICBHU1RfVFJBQ0UoIlVwZGF0aW5nIHNlc3Npb24gJXMi
LCBzZXNzaW9uSUQudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJh
Y2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNj
ZXNzLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7Cisg
ICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghcmVzcG9u
c2VNZXNzYWdlKQpAQCAtNTYyLDcgKzU2Miw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1
bmRlcjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5CiAg
ICAgICAgICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2Fn
ZShyZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25z
ZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFz
UGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3Nh
Z2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOworICAgICAgICAg
ICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUo
cGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdT
VF9ERUJVRygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwogICAg
ICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwg
bWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LApAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklECiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9
PSBtX3Nlc3Npb25JRCk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChb
dGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9u
Q2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9u
c2VNZXNzYWdlKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghcmVzcG9uc2VNZXNzYWdlKQpA
QCAtNTk3LDcgKzU5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9hZFNl
c3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiAgICAgICAgICAgICAg
ICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShyZXNwb25zZU1l
c3NhZ2UpOwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2UpOwog
ICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3Zl
KHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAgICAgICBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9u
c2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygiZ290
IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAg
ICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6
ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0LCBzdGQ6Om51
bGxvcHQsIHN0ZDo6bWFrZV9wYWlyKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS50eXBlT3IoTWVkaWFL
ZXlNZXNzYWdlVHlwZTo6TGljZW5zZVJlcXVlc3QpLApAQCAtNjQwLDcgKzY0MCw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSUQsIExpY2VuCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIG1fc2Vz
c2lvbklEID09IHNlc3Npb25JRCk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFw
cGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hh
bmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KGJvb2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBt
dXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKHN1
Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtNjQ5LDcgKzY0OSw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSUQsIExpY2VuCiAgICAgICAgICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNz
YWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShidWZmZXIpOwogICAgICAgICAgICAgICAgIEFTU0VS
VChwYXJzZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNw
b25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2Fk
KCkpOworICAgICAgICAgICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVz
c2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIEdTVF9ERUJVRygic2Vzc2lvbiAlcyByZW1vdmVkLCBtZXNzYWdlIGxlbmd0
aCAlenUiLCBtX3Nlc3Npb25JRC51dGY4KCkuZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAg
ICAgICAgICAgICAgICAgICBjYWxsYmFjayhtX2tleVN0b3JlLmFsbEtleXNBcyhNZWRpYUtleVN0
YXR1czo6UmVsZWFzZWQpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRl
ZCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKaW5kZXgg
Y2RkOGRhMjExMjNjMTc5MWFlMmZiNjQzOWZmMmQ2ZmEwZDJlYjIxYy4uMTAyMGUxNTMyMjcxYjUz
NTFlMTA2ZGRlOGYyMWVhNTQwNWE5YzIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKQEAgLTkz
LDggKzkzLDggQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsK
ICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7CiAgICAg
Ym9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0lu
aXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5h
bDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBB
dG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwor
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAK
IHByaXZhdGU6CkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIC8vIENETUluc3RhbmNl
CiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6VGh1bmRlcjsgfQogICAgIHZvaWQgaW5pdGlh
bGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBB
bGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNz
Q2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hh
cmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxi
YWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcm
KSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fa2V5U3lzdGVtOyB9CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRl
U2Vzc2lvbigpIGZpbmFsOwpAQCAtMTI2LDggKzEyNiw4IEBAIGNsYXNzIENETUluc3RhbmNlU2Vz
c2lvblRodW5kZXIgZmluYWwgOiBwdWJsaWMgQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgewogcHVi
bGljOgogICAgIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXIoQ0RNSW5zdGFuY2VUaHVuZGVyJik7
CiAKLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGlj
ZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBm
aW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRh
LCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5z
ZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2sm
JikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNz
aW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBT
dHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsK
QEAgLTE0MSwxNCArMTQxLDE0IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ0RNSW5zdGFuY2VU
aHVuZGVyKiBjZG1JbnN0YW5jZVRodW5kZXIoKSBjb25zdDsKIAotICAgIHVzaW5nIE5vdGlmaWNh
dGlvbiA9IHZvaWQgKENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OiopKFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9IHZvaWQgKENETUlu
c3RhbmNlU2Vzc2lvblRodW5kZXI6OiopKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKTsKICAgICB1c2luZyBDaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoKT47Ci0gICAgdXNpbmcgU2Vzc2lvbkNoYW5nZWRDYWxsYmFjayA9IEZ1bmN0aW9u
PHZvaWQoYm9vbCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+OworICAgIHVzaW5nIFNlc3Npb25D
aGFuZ2VkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGJvb2wsIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKT47CiAKLSAgICB2b2lkIGNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgY2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJh
Y2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQga2V5VXBkYXRl
ZENhbGxiYWNrKEtleUlEVHlwZSYmKTsKICAgICB2b2lkIGtleXNVcGRhdGVEb25lQ2FsbGJhY2so
KTsKLSAgICB2b2lkIGVycm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAg
dm9pZCBlcnJvckNhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAg
ICBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1cyBzdGF0dXMoY29uc3QgS2V5SURUeXBlJikg
Y29uc3Q7CiAgICAgdm9pZCBzZXNzaW9uRmFpbHVyZSgpOwogCkBAIC0xNTksNyArMTU5LDcgQEAg
cHJpdmF0ZToKICAgICBJbml0RGF0YSBtX2luaXREYXRhOwogICAgIE9wZW5DRE1TZXNzaW9uQ2Fs
bGJhY2tzIG1fdGh1bmRlclNlc3Npb25DYWxsYmFja3MgeyB9OwogICAgIEJveFB0cjxPcGVuQ0RN
U2Vzc2lvbj4gbV9zZXNzaW9uOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWVzc2FnZTsK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdlOwogICAgIGJvb2wg
bV9uZWVkc0luZGl2aWR1YWxpemF0aW9uIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8Q2hhbGxlbmdl
R2VuZXJhdGVkQ2FsbGJhY2s+IG1fY2hhbGxlbmdlQ2FsbGJhY2tzOwogICAgIFZlY3RvcjxTZXNz
aW9uQ2hhbmdlZENhbGxiYWNrPiBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFt
ZXJFTUVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCmluZGV4IDNmODVhZmU3M2M4NDI3
NjI5OTdkNWFiYzJkN2JjMDdmN2MwMWI5YzMuLmVhODkwZjY3ZGEyMTM4N2Y0MGRhNjUxYTBjYTVj
NzM0OTNlODRmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGll
cy5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIHZvaWQgbWFya3VwRXJyb3IoR01hcmt1cFBh
cnNlQ29udGV4dCosIEdFcnJvciosIGdwb2ludGVyKQogCiBzdGF0aWMgR01hcmt1cFBhcnNlciBt
YXJrdXBQYXJzZXIgeyBtYXJrdXBTdGFydEVsZW1lbnQsIG1hcmt1cEVuZEVsZW1lbnQsIG1hcmt1
cFRleHQsIG1hcmt1cFBhc3N0aHJvdWdoLCBtYXJrdXBFcnJvciB9OwogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIHVucGFyc2VkUGF5bG9hZCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0
RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2Vk
UGF5bG9hZCkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1
bnBhcnNlZFBheWxvYWQpOwogICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggZDVhZmY4NDVm
NDA5YTc1ZDcxYTk4NDBhY2YxZDM0MmE0NjQ3ZDJmMS4uMjdkZDRlYWUwZDJlMDFhYjRkODRjMGFi
YzQyNGViYjEwMTA0YzA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxp
dGllcy5oCkBAIC0zOCw4ICszOCw3IEBAIEdTVF9ERUJVR19DQVRFR09SWV9FWFRFUk4od2Via2l0
X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnkpCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBJbml0RGF0YSB7CiBwdWJsaWM6Ci0gICAgSW5pdERhdGEoKQot
ICAgICAgICA6IG1fcGF5bG9hZChTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKSB7IH0KKyAgICBJbml0
RGF0YSgpID0gZGVmYXVsdDsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhbiBlbnVt
IGZvciBzeXN0ZW0gdXVpZHMgZm9yIGJldHRlciB0eXBlIHNhZmV0eS4KICAgICBJbml0RGF0YShj
b25zdCBTdHJpbmcmIHN5c3RlbUlkLCBHc3RCdWZmZXIqIGluaXREYXRhKQpAQCAtNTAsMTMgKzQ5
LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEdTVF9DQVRfTEVWRUxfTE9HKHdlYmtpdF9tZWRp
YV9jb21tb25fZW5jcnlwdGlvbl9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5LCBHU1RfTEVWRUxfRVJS
T1IsIG51bGxwdHIsICJjYW5ub3QgbWFwICVzIHByb3RlY3Rpb24gZGF0YSIsIHN5c3RlbUlkLnV0
ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IH0KLSAgICAgICAgbV9wYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0
YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBpZiAoYXV0byBwYXJzZWRQYXlsb2Fk
ID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVy
KCkpKQorICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VO
b25OdWxsKCkpOwogICAgIH0KIAotICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKKyAgICBJbml0RGF0YShjb25zdCBTdHJp
bmcmIHN5c3RlbUlkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQog
ICAgICAgICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJh
Y3RDZW5jSWZOZWVkZWQoV1RGTW92ZShwYXlsb2FkKSkpCiAgICAgeworICAgICAgICBpZiAocGF5
bG9hZCkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5j
SWZOZWVkZWQocGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSkpCisgICAgICAgICAgICAgICAgbV9w
YXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9
CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmQoSW5pdERhdGEmJiBpbml0RGF0YSkKQEAgLTcyLDEw
ICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9idXN0LCBzbyBi
ZSBjYXJlZnVsIGhlcmUhCiAgICAgICAgIG1fc3lzdGVtSWQgPSBpbml0RGF0YS5tX3N5c3RlbUlk
OwogCi0gICAgICAgIG1fcGF5bG9hZC0+YXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOworICAg
ICAgICBtX3BheWxvYWQuYXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAg
IGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9w
YXlsb2FkOyB9CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBj
b25zdCB7IHJldHVybiBtX3BheWxvYWQuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3Rl
bUlkKCkgY29uc3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29u
dGFpbmVyVHlwZSgpIGNvbnN0CiAgICAgewpAQCAtODYsMTEgKzg5LDExIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAg
IHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRl
ZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0
ZW1JZDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BheWxvYWQ7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBtX3BheWxvYWQ7CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRz
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDcxOGI5YmQzMTVlY2M2NzA3ODljNjVj
YmFhYTAzNDkyOTc1ZTcyZDMuLjY5MjhhNjNlOTcxYzdjMzVlODg0NGVlZjczYmZhNDRhOGQ4YzAz
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2Ny
aXB0aW9uOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFn
Z2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5t
bQppbmRleCA4M2U2YWY3YjAzODkyODM4YzNiZmVhMWMwYzExYWE3ZmNmOGE3N2E5Li42OGJjYzg4
NDZhOGIxZjBmN2NiY2YxNDAzMTk2NmVkOTI0MzIyYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5t
bQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgUERGRG9jdW1l
bnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5T
KFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOworICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3Vt
ZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOwogfQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVC
b3VuZHNGb3JDdXJyZW50UGFnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAppbmRleCAwOWMx
YzQ1YzQ1OTNhZWE0MzE4MzBkMjE1YjdlNzQ4NTJjMTllMzdmLi5mYTAwMDgxMTYwNjY5N2RjNWM1
MTEyMzMzYzkwYzhjOTJiNGI2NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTM1
LDkgKzM1LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBCaWdFbmRpYW5VU2hv
cnQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRU9UUHJlZml4OwogY2xhc3MgRm9udE1l
bW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogc3RydWN0IEVPVEhlYWRlciB7CiAgICAgRU9USGVhZGVyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZl
cnRpY2FsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5kZXggMmNmYTg1NGMwMjI2NjhhY2MwMDczN2Mx
ZWJiMzVmZjM0OGQ1OGUyYi4uMGZhOGYzMDZhZDk1MmQwNmEwOTI5N2QwYjFkMjg3Yjg5ODgzMmEz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApAQCAtMzgxLDcgKzM4MSw3
IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10
eFRhYmxlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQx
Nl90PiYgYWR2YW5jZVdpZHRocykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0
byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7
CiAgICAgY29uc3QgT3BlblR5cGU6OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0
ZVRhYmxlPE9wZW5UeXBlOjpIaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjQsNyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERh
dGE6Ok9wZW5UeXBlVmVydGljYWxEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3Jt
RGF0YSwKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRo
aXMgdGFibGUgaXMgcmVxdWlyZWQgZm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93
LgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlw
ZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0
YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6
VmhlYVRhYmxlKiB2aGVhID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFU
YWJsZT4oYnVmZmVyKTsKICAgICBpZiAoIXZoZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3
ICs0ODYsNyBAQCB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBG
b250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERh
dGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRh
JiBwbGF0Zm9ybURhdGEpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxh
dGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVm
ZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAg
IGNvbnN0IE9wZW5UeXBlOjpHU1VCVGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJs
ZTxPcGVuVHlwZTo6R1NVQlRhYmxlPihidWZmZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBn
c3ViLT5nZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAq
YnVmZmVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKaW5kZXggYTYyNzE5YjE3MTlhNzRm
OTc2OTIyMTlkZjVmN2FhZWRjNDkwNjQ2Ni4uMGRiNGFmYWRiM2Y3NDJiODNhNGUxNmNmMzcxODcw
YTJiMDQwNGVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKQEAgLTQzLDcgKzQzLDcgQEAgZW51
bSBEV1JJVEVfRk9OVF9TVFJFVENIOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250
UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIERpcmVjdFdyaXRlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmgKaW5kZXggNWYxMGY3MzkyZDA0YzM0NGQxMmNlZTQyNjZlZGIxZWU5OTcxYzRlZi4uMDhm
YzlmMTllYWVhOTQ4M2VhNThlYzFhZWVkZDQ1NzI1NmNlMjdiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oCkBAIC0zNiwxMiArMzYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dGb250KiBDR0Zv
bnRSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xh
c3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZv
bnRNZW1vcnlSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0
aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xh
c3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBG
b250RmVhdHVyZVNldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKaW5kZXggNjI5ZTBl
NjFhMTA0YzU2N2ExZDRlZGNiN2U1Nzk3ZGNmNjdjNmU4ZS4uNzczNTczOWI5MzM0ZjQ0ZDk5YTNm
MTJmZmM1YmY3YjQxZjdjYzZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCkBAIC0yNzIs
NyArMjcyLDcgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJEaXJlY3QyRDo6Y3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWIKICAgICByZXR1cm4gYml0bWFwOwog
fQogCi12b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXRE
YXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ewogICAgIGlmICghYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJE
aXJlY3QyRC5oCmluZGV4IDRmNDcyNTg2YjQyNGJkYTFjZjZmYTAxNDNjYmEyM2QwMzAwMTZlNDUu
LmMyMzY1ZmQ3NDRjNjExOGMxOTk5ZTA1YjgwMmVkNWI0OGYzNjQ4MjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJE
aXJlY3QyRC5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEltYWdlRGVjb2RlckRpcmVjdDJEIGZp
bmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6CiAgICAgSW1hZ2VEZWNvZGVyRGly
ZWN0MkQoKTsKIAotICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyRGlyZWN0MkQ+IGNyZWF0ZShT
aGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisg
ICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJEaXJlY3QyRD4gY3JlYXRlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJEaXJlY3QyRCgpKTsK
ICAgICB9CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIg
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2Ft
cGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0
aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERh
dGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQg
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZp
bmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6
ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZVdpbi5jcHAKaW5kZXggMGQ4ODIwZTlmM2Q2ZmQ3NzM1ZDU3MGIzNjQxNDg4ZjUz
YmQ3ZWNlOS4uMmQ5NzI3MGE3MzQ4MzQ4OTNlNzhjODFmZjBlYzViYjVkZmVjM2Y4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwCkBA
IC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIC8vIFRoaXMgZnVu
Y3Rpb24gbG9hZHMgcmVzb3VyY2VzIGZyb20gV2ViS2l0Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsKK1JlZlB0cjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0
IGNoYXIqKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rl
ci5jcHAKaW5kZXggZDk1NmQ5ZTc2MjVkNWJiNWE3MGYwNjkzZTc3OThlZTkwODQ5ZjE2NS4uMzNj
OTVlYzMzMzNhOTIwYzY0YTAxODE3NTFlYjRhNTA1ZWYxYTdhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1h
Z2VEZWNvZGVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5h
bWVzcGFjZSB7CiAKLXN0YXRpYyB1bnNpZ25lZCBjb3B5RnJvbVNoYXJlZEJ1ZmZlcihjaGFyKiBi
dWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QgU2hhcmVkQnVmZmVyJiBzaGFyZWRC
dWZmZXIpCitzdGF0aWMgdW5zaWduZWQgY29weUZyb21TaGFyZWRCdWZmZXIoY2hhciogYnVmZmVy
LCB1bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNo
YXJlZEJ1ZmZlcikKIHsKICAgICB1bnNpZ25lZCBieXRlc0V4dHJhY3RlZCA9IDA7CiAgICAgZm9y
IChjb25zdCBhdXRvJiBlbGVtZW50IDogc2hhcmVkQnVmZmVyKSB7CkBAIC0xMzUsNyArMTM1LDcg
QEAgYm9vbCBtYXRjaGVzQ1VSU2lnbmF0dXJlKGNoYXIqIGNvbnRlbnRzKQogCiB9CiAKLVJlZlB0
cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZShTaGFy
ZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxTY2FsYWJsZUlt
YWdlRGVjb2Rlcj4gU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGxlbmd0aE9mTG9uZ2VzdFNpZ25hdHVyZSA9IDE0OyAvLyBUbyB3aXQ6ICJSSUZG
Pz8/P1dFQlBWUCIKICAgICBjaGFyIGNvbnRlbnRzW2xlbmd0aE9mTG9uZ2VzdFNpZ25hdHVyZV07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2Fs
YWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCAzMmQ0ZTZmOGI4ZmExNGExM2JmYjYyMmQ4
NzU3MDg3OThiOTlkYWEyLi45YzQwNTU3ODI0MWQwYzUxMjcwMjk1MTVjMjIxMjY1OGY4YzRmNjhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2Fs
YWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgog
CiAgICAgLy8gUmV0dXJucyBudWxscHRyIGlmIHdlIGNhbid0IHNuaWZmIGEgc3VwcG9ydGVkIHR5
cGUgZnJvbSB0aGUgcHJvdmlkZWQgZGF0YSAocG9zc2libHkKICAgICAvLyBiZWNhdXNlIHRoZXJl
IGlzbid0IGVub3VnaCBkYXRhIHlldCkuCi0gICAgc3RhdGljIFJlZlB0cjxTY2FsYWJsZUltYWdl
RGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNv
ZGVyPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQogCkBAIC03MCwxNiArNzAsMTUg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVk
RGF0YVN0YXR1czo6Q29tcGxldGU7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlCisgICAgdm9pZCBzZXRE
YXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBv
dmVycmlkZQogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAg
ICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGRhdGEuZGF0YSgpKSB7Ci0gICAgICAg
ICAgICAvLyBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb21iaW5lcyBhbGwgc2VnbWVudHMgaW50byBv
bmUgaW4gY2FzZSB0aGVyZSdzIG1vcmUgdGhhbiBvbmUuCi0gICAgICAgICAgICBtX2RhdGEgPSBk
YXRhLmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwotICAgICAgICB9CisgICAgICAgIGF1dG8g
Y29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGlmIChjb250
aWd1b3VzRGF0YS0+ZGF0YSgpKQorICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGEt
PmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0
YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewogICAgICAgICAgICAg
bV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRydWU7CiAgICAgICAgICAgICB0cnlEZWNvZGVT
aXplKGFsbERhdGFSZWNlaXZlZCk7CkBAIC0xOTUsNyArMTk0LDcgQEAgcHVibGljOgogICAgIHN0
ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBz
dGQ6Om51bGxvcHQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50PiBtX2RhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50PiBtX2RhdGE7CiAgICAgVmVjdG9yPFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUs
IDE+IG1fZnJhbWVCdWZmZXJDYWNoZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CiAgICAg
bXV0YWJsZSBMb2NrIG1fbG9jazsKICAgICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRklt
YWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2
aWYvQVZJRkltYWdlUmVhZGVyLmNwcAppbmRleCA3YzYwM2ZkODM1OGMyMTRhYzkxODRmMzE4OTk3
MmZlODQxYjYxZTgwLi4yNmY4ODY0OTZlNWE1YTE0ZTI4YWZiMWFmYTliZmMzMDE3N2Y1MWNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FW
SUZJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIEFWSUZJbWFn
ZVJlYWRlcjo6QVZJRkltYWdlUmVhZGVyKFJlZlB0cjxBVklGSW1hZ2VEZWNvZGVyPiYmIGRlY29k
ZXIpCiAKIEFWSUZJbWFnZVJlYWRlcjo6fkFWSUZJbWFnZVJlYWRlcigpID0gZGVmYXVsdDsKIAot
Ym9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorYm9vbCBBVklGSW1hZ2VSZWFk
ZXI6OnBhcnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoYXZpZkRlY29kZXJTZXRJ
T01lbW9yeShtX2F2aWZEZWNvZGVyLmdldCgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpICE9
IEFWSUZfUkVTVUxUX09LKQogICAgICAgICByZXR1cm4gYWxsRGF0YVJlY2VpdmVkID8gbV9kZWNv
ZGVyLT5zZXRGYWlsZWQoKSA6IGZhbHNlOwpAQCAtNTgsNyArNTgsNyBAQCBib29sIEFWSUZJbWFn
ZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0
YSwgYm9vbCBhbAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFWSUZJbWFnZVJlYWRlcjo6
ZGVjb2RlRnJhbWUoc2l6ZV90IGZyYW1lSW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUm
IGJ1ZmZlciwgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkKK3ZvaWQgQVZJ
RkltYWdlUmVhZGVyOjpkZWNvZGVGcmFtZShzaXplX3QgZnJhbWVJbmRleCwgU2NhbGFibGVJbWFn
ZURlY29kZXJGcmFtZSYgYnVmZmVyLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudCYgZGF0YSkKIHsKICAgICBpZiAobV9kZWNvZGVyLT5mYWlsZWQoKSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgKaW5kZXggY2JjYTBiOGMxMjRiZmYwZmZj
MzMwMWJhMzViY2UwMWVkMjcyMmRmOC4uNDk2ZjY5ZjgxMmJkNzViMGVkYTYzNTdiYWE4NjBjZmNj
YjViYTRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCkBAIC0zOSw4ICszOSw4IEBAIHB1
YmxpYzoKICAgICBBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJbWFnZURlY29kZXI+JiYpOwog
ICAgIH5BVklGSW1hZ2VSZWFkZXIoKTsKIAotICAgIGJvb2wgcGFyc2VIZWFkZXIoY29uc3QgU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudCYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lk
IGRlY29kZUZyYW1lKHNpemVfdCBpbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYsIGNv
bnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKTsKKyAgICBib29sIHBhcnNlSGVhZGVyKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpOworICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4LCBTY2FsYWJsZUltYWdl
RGVjb2RlckZyYW1lJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQm
KTsKICAgICBzaXplX3QgaW1hZ2VDb3VudCgpIGNvbnN0OwogICAgIGRvdWJsZSByZXBldGl0aW9u
Q291bnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3Mjc2OWE2
OTI2ZWMyNDE5YmY2NjM4MjUyOGQzZDc3MjBhNTRhZGFlLi5mNzQ1NWMxNDZjN2U4YWViMDRjYzhj
NTZmMzMwZTJhMDFmM2JhNzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDYs
NyArNDYsNyBAQCBCTVBJbWFnZURlY29kZXI6OkJNUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBh
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogewogfQogCi12b2lkIEJNUEltYWdl
RGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQordm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzdjN2NhODFmZWE2YjhhNzc0
YmIzMDhlNTM4ZGNkMDQ4Yzk5NWVlYS4uNjRkZWQ2YWJiZTJjMGEyOWIxMWY5ZmI1ZWNkNmI0ODcy
NGQ1ODk3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4
dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJibXAiX3M7IH0KLSAgICB2b2lkIHNldERh
dGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQg
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZp
bmFsOwogICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChz
aXplX3QgaW5kZXgpIGZpbmFsOwogICAgIC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMg
fG1fcmVhZGVyfC4gQmUgY2FyZWZ1bCB0byBhdm9pZAogICAgIC8vIGFjY2Vzc2luZyBkZWxldGVk
IG1lbW9yeSwgZXNwZWNpYWxseSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9tIGluc2lkZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
UmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VSZWFkZXIuaAppbmRleCA0ODQ0ZjM4MGRjMTdlYzcwNDU4OGZiMTJmNTNlYWJjNmQyMGU2
MGY0Li5iZDQzMGU4YThiZWEyYzgxNmIyYzUyMmJmNWJhNzg4NDZjMzhlMGZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VSZWFkZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBCTVBJbWFnZVJlYWRlciB7CiBw
dWJsaWM6CiAgICAgLy8gUmVhZCBhIHZhbHVlIGZyb20gfGRhdGFbb2Zmc2V0XXwsIGNvbnZlcnRp
bmcgZnJvbSBsaXR0bGUgdG8gbmF0aXZlCiAgICAgLy8gZW5kaWFubmVzcy4KLSAgICBzdGF0aWMg
aW5saW5lIHVpbnQxNl90IHJlYWRVaW50MTYoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dCYgZGF0YSwgaW50IG9mZnNldCkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJlYWRVaW50
MTYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBv
ZmZzZXQpCiAgICAgewogICAgICAgICB1aW50MTZfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNweSgm
cmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgMik7CkBAIC01Miw3ICs1Miw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBzdGF0aWMgaW5saW5lIHVp
bnQzMl90IHJlYWRVaW50MzIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwg
aW50IG9mZnNldCkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQpCiAg
ICAgewogICAgICAgICB1aW50MzJfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNweSgmcmVzdWx0LCAm
ZGF0YS5kYXRhKClbb2Zmc2V0XSwgNCk7CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBC
TVBJbWFnZVJlYWRlcihTY2FsYWJsZUltYWdlRGVjb2RlciogcGFyZW50LCBzaXplX3QgZGVjb2Rl
ZEFuZEhlYWRlck9mZnNldCwgc2l6ZV90IGltZ0RhdGFPZmZzZXQsIGJvb2wgdXNlc0FuZE1hc2sp
OwogCiAgICAgdm9pZCBzZXRCdWZmZXIoU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogYnVmZmVy
KSB7IG1fYnVmZmVyID0gYnVmZmVyOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KKyAgICB2b2lkIHNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRh
dGE7IH0KIAogICAgIC8vIERvZXMgdGhlIGFjdHVhbCBkZWNvZGluZy4gSWYgfG9ubHlTaXplfCBp
cyB0cnVlLCBkZWNvZGluZyBvbmx5CiAgICAgLy8gcHJvZ3Jlc3NlcyBhcyBmYXIgYXMgbmVjZXNz
YXJ5IHRvIGdldCB0aGUgaW1hZ2Ugc2l6ZS4gUmV0dXJucwpAQCAtMjcyLDcgKzI3Miw3IEBAIHBy
aXZhdGU6CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogbV9idWZmZXI7CiAKICAgICAv
LyBUaGUgZmlsZSB0byBkZWNvZGUuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ+IG1fZGF0YTsKIAogICAgIC8vIEFuIGluZGV4IGludG8gfG1fZGF0YXwgcmVwcmVzZW50aW5n
IGhvdyBtdWNoIHdlJ3ZlIGFscmVhZHkgZGVjb2RlZC4KICAgICBzaXplX3QgbV9kZWNvZGVkT2Zm
c2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Y2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAppbmRleCA2
MDEyMDM3NGY5YzQzMTY4YTY1MjFiNjljNTRhZmJlMmEwMGY1NWY3Li40YTIxMjU1YThjMGZiNjc4
ZTRhYWRkNzY2M2ViN2Y5MThlN2ZlOTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tp
bmdTdG9yZUNhaXJvLmNwcApAQCAtMzcsNyArMzcsOSBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdl
QmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0CiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dW5z
aWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8dWludDMyX3QqPihtX3BpeGVsc1B0cikpLAogICAgICAg
ICBDQUlST19GT1JNQVRfQVJHQjMyLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpLCBz
aXplKCkud2lkdGgoKSAqIHNpemVvZih1aW50MzJfdCkpKTsKICAgICBzdGF0aWMgY2Fpcm9fdXNl
cl9kYXRhX2tleV90IHNfc3VyZmFjZURhdGFLZXk7Ci0gICAgY2Fpcm9fc3VyZmFjZV9zZXRfdXNl
cl9kYXRhKHN1cmZhY2UuZ2V0KCksICZzX3N1cmZhY2VEYXRhS2V5LCBtX3BpeGVscy5nZXQoKSwg
W10odm9pZCogZGF0YSkgeyBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4o
ZGF0YSktPmRlcmVmKCk7IH0pOworICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0YShzdXJm
YWNlLmdldCgpLCAmc19zdXJmYWNlRGF0YUtleSwgbV9waXhlbHMuZ2V0KCksIFtdKHZvaWQqIGRh
dGEpIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8RGF0YVNlZ21lbnQqPihkYXRhKS0+ZGVyZWYoKTsK
KyAgICB9KTsKIAogICAgIHJldHVybiBzdXJmYWNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVy
LmNwcAppbmRleCBlNmFiZTBkOTU0NGI2YzE4NWM2NDVkZWNlMDlmMjNmOTU2NjYwN2NiLi5iOWVj
MDFiOGFlOGU4ZDI5YmM3ODI1MjZlMDc2NTI1NTFlMzU5YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VE
ZWNvZGVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBHSUZJbWFnZURlY29kZXI6OkdJRkltYWdlRGVj
b2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBH
SUZJbWFnZURlY29kZXI6On5HSUZJbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgR0lG
SW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCit2b2lkIEdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAppbmRleCAzNWRmMzNmNmRmYzQ4
M2ZkODQ3MTM2NmFlNTNiYjBiOTYxY2FlZDJlLi5jNzQ3MTk5OTliOTg2YzFjZWY4NDc4NzU5ZDIz
NzE4YzkwNDJkM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0Niw3IEBA
IHB1YmxpYzoKIAogICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVu
YW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gImdpZiJfczsgfQotICAgIHZvaWQg
c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsK
KyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmlu
YWw7CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCBmaW5hbDsKICAgICBSZXBldGl0aW9u
Q291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5o
CmluZGV4IDQyMTQ2ZTAzMjkzMjM2OTk3ODllYjVlNDJhZjRjNzNkMzRhYjljYzYuLjEwODJmZGYw
ZGZmMjM5MWU1NjUzMGE0MWY4N2JhNDM5ODIzMjc1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5o
CkBAIC0yMzcsNyArMjM3LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHNl
dERhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEg
PSAmZGF0YTsgfQorICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQogICAgIC8vIEZJWE1F
OiBoYWx0QXRGcmFtZSBzaG91bGQgYmUgc2l6ZV90LgogICAgIGJvb2wgZGVjb2RlKFdlYkNvcmU6
OkdJRkltYWdlRGVjb2Rlcjo6R0lGUXVlcnksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKTsKIApAQCAt
MzE2LDYgKzMxNiw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxHSUZG
cmFtZUNvbnRleHQ+ID4gbV9mcmFtZXM7CiAgICAgc2l6ZV90IG1fY3VycmVudERlY29kaW5nRnJh
bWU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9k
YXRhOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudD4gbV9kYXRhOwogICAgIGJvb2wgbV9wYXJzZUNvbXBsZXRlZDsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNv
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09J
bWFnZURlY29kZXIuY3BwCmluZGV4IGM3MTdjNDVkMzA1N2MwNTUzNmVlNjA1MGY5Mzk3MDQ2ZDEw
ZGYyYTcuLmMwNzEzNDViOGJmMzY5YjgwMjcxZmJkZjBhMGNlMDE3NGYwNTAzYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURl
Y29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIElDT0ltYWdlRGVjb2Rlcjo6
SUNPSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wCiAKIElDT0ltYWdlRGVjb2Rlcjo6fklDT0ltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsK
IAotdm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChm
YWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCmluZGV4IGZi
N2E5MDNiMmEwNzUzOTQ5MTdhYmJiZjExYjFjZWQ4M2ZmNDMyYTAuLjEwZWU5YjRkMmU4YzlkODg3
ZTFkMmI4YmUxMzliYjc0MjcxZDU3YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKQEAgLTQ2
LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBT
dHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiaWNvIl9zOyB9
Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBm
aW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCBmaW5hbDsKICAg
ICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25z
dCBmaW5hbDsKICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pw
ZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggZmQzNDViYjc4NmZmMDhkOTQ2NTkzMGFhNGRm
NDhkZjE3YWJmMzA1Yy4uNWNmYWM5ZjIzNTdlMmUxMmM2ODY0MDBiMjY3ODhhZTdmOGJlMTM1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0yMjIsNyArMjIyLDcgQEAgc3Rh
dGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKIAogc3Rh
dGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19z
dHJ1Y3QqIGluZm8pCiB7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIGZvciAoanBlZ19zYXZlZF9t
YXJrZXJfcHRyIG1hcmtlciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1h
cmtlci0+bmV4dCkgewogICAgICAgICBpZiAoIWlzSUNDTWFya2VyKG1hcmtlcikpCiAgICAgICAg
ICAgICBjb250aW51ZTsKQEAgLTIzNiwxMyArMjM2LDEzIEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFya2VyU2l6ZSA9
IG1hcmtlci0+ZGF0YV9sZW5ndGggLSBpY2NIZWFkZXJTaXplOwotICAgICAgICBidWZmZXItPmFw
cGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NI
ZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1h
cmtlclNpemUpOwogICAgIH0KIAotICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKKyAgICBpZiAo
YnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
YnVmZmVyOworICAgIHJldHVybiBidWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygpOwogfQog
I2VuZGlmCiAKQEAgLTMyMCw3ICszMjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYnl0ZXNUb1Nr
aXAgPSBzdGQ6Om1heChudW1CeXRlcyAtIGJ5dGVzVG9Ta2lwLCBzdGF0aWNfY2FzdDxsb25nPigw
KSk7CiAgICAgfQogCi0gICAgYm9vbCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkKKyAgICBib29sIGRlY29kZShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkKICAgICB7
CiAgICAgICAgIG1fZGVjb2RpbmdTaXplT25seSA9IG9ubHlTaXplOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMElt
YWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKaW5kZXggYmVjZjY0NTAyNzdlZWI3NGIw
OWRlNTJlZTE4MmZmNmUxMWVkMjc2Mi4uMjA0NzNmMGVlZWJiNTZjNzEzMTRmNjU1NmJkYTA5MDMz
NDkwNzQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNw
cApAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgSlBFRzIwMDBJbWFnZURlY29kZXI6OmRlY29kZShi
b29sIG9ubHlTaXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICB9CiAKICAgICBzdHJ1Y3Qg
UmVhZGVyIHsKLSAgICAgICAgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YTsKKyAgICAg
ICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGE7CiAgICAgICAgIHNp
emVfdCBvZmZzZXQ7CiAgICAgfSByZWFkZXIgPSB7ICptX2RhdGEsIDAgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVj
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5H
SW1hZ2VEZWNvZGVyLmNwcAppbmRleCBjMTJjNDU5YTVhM2U1YjM1MWM1YmNjNjJiZjAwYjhhMjgx
YmQ1YmEzLi40Y2JkMzIzZDlhNzUwMjZlZjg2NThmMzgxNmRkNzM4ZDM3Y2E4ZWQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VE
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9w
bmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9yZWFkT2Zmc2V0ID0gMDsKICAgICB9CiAKLSAgICBib29sIGRlY29kZShjb25zdCBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIHNpemVPbmx5LCB1bnNpZ25lZCBoYWx0
QXRGcmFtZSkKKyAgICBib29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudCYgZGF0YSwgYm9vbCBzaXplT25seSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpCiAg
ICAgewogICAgICAgICBtX2RlY29kaW5nU2l6ZU9ubHkgPSBzaXplT25seTsKICAgICAgICAgUE5H
SW1hZ2VEZWNvZGVyKiBkZWNvZGVyID0gc3RhdGljX2Nhc3Q8UE5HSW1hZ2VEZWNvZGVyKj4ocG5n
X2dldF9wcm9ncmVzc2l2ZV9wdHIobV9wbmcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
Y3BwCmluZGV4IDAyZjFiMDlkYmM3NjUxNjAxZjkyMmRkZTI5ZjgwNWE2NTg3MWUyZDIuLmIxYmVj
NTVlNzhjNDM0ODAxYzI1NGFjZTBkZjU5OTMxYTM2Yjc0YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1h
Z2VEZWNvZGVyLmNwcApAQCAtNDcsNyArNDcsNyBAQCBXRUJQSW1hZ2VEZWNvZGVyOjpXRUJQSW1h
Z2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZQog
CiBXRUJQSW1hZ2VEZWNvZGVyOjp+V0VCUEltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9p
ZCBXRUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCit2b2lkIFdFQlBJbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxl
ZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBXRUJQSW1hZ2VE
ZWNvZGVyOjpkZWNvZGUoc2l6ZV90IGZyYW1lSW5kZXgsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ICAgIC8vIFRoaXMgY2FuIGJlIGV4ZWN1dGVkIGJvdGggaW4gdGhlIG1haW4gdGhyZWFkICh3aGVu
IG5vdCB1c2luZyBhc3luYyBkZWNvZGluZykgb3IgaW4gdGhlIGRlY29kaW5nIHRocmVhZC4KICAg
ICAvLyBXaGVuIGV4ZWN1dGVkIGluIHRoZSBkZWNvZGluZyB0aHJlYWQsIGEgY2FsbCB0byBzZXRE
YXRhKCkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgbWF5IGNoYW5nZSB0aGUgZGF0YQogICAgIC8vIHRo
ZSBXZWJQRGVtdXhlciBpcyB1c2luZywgbGVhdmluZyBpdCBpbiBhbiBpbmNvbnNpc3RlbnQgc3Rh
dGUsIHNvIHdlIG5lZWQgdG8gcHJvdGVjdCB0aGUgZGF0YS4KLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudD4gcHJvdGVjdGVkRGF0YShtX2RhdGEpOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gcHJvdGVjdGVkRGF0YShtX2RhdGEpOwog
ICAgIFdlYlBEYXRhIGlucHV0RGF0YSA9IHsgcHJvdGVjdGVkRGF0YS0+ZGF0YSgpLCBwcm90ZWN0
ZWREYXRhLT5zaXplKCkgfTsKICAgICBXZWJQRGVtdXhTdGF0ZSBkZW11eGVyU3RhdGU7CiAgICAg
V2ViUERlbXV4ZXIqIGRlbXV4ZXIgPSBXZWJQRGVtdXhQYXJ0aWFsKCZpbnB1dERhdGEsICZkZW11
eGVyU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAppbmRleCBhZjM2NWU5Y2Y5Yzdj
ZTk1MzhiNjRiYTc4OWJmMDE3ZDQ4ZjZlZGUxLi5kZDI4YmM4OGRmNWMwZmEzYzE1NzM3ODY5YjI2
MDk3M2FhYTBkMjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaApAQCAtNDcsNyArNDcs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V0VCUEltYWdlRGVjb2RlcigpOwogCiAgICAgU3Ry
aW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIndlYnAiX3M7
IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCkgZmluYWw7CisgICAgdm9p
ZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsKICAgICBTY2Fs
YWJsZUltYWdlRGVjb2RlckZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBv
dmVycmlkZTsKICAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2ZyYW1lQ291bnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJ
T1MubW0KaW5kZXggOTA5ZThlNzY4YWRiNjhiYWIyODQ0NWQyODI3MzYwYTNmM2ZhMjJjMy4uYjIz
NzdmZTM0MTFkMmFjNDAxNTEzYmYwOWFlOGNjYWU3ODZiZDhlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTIzNiwxNCArMjM2LDE0IEBAIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAKICNpZiAhUExBVEZPUk0oTUFDQ0FU
QUxZU1QpCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcg
KilrVVRUeXBlRmxhdFJURkRdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVG
bGF0UlRGRCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29u
dGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAg
ICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJu
YWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZFJURkQoKmJ1ZmZlcikg
PyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsK
ICAgICB9CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmlu
ZyAqKWtVVFR5cGVSVEZdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVSVEYs
IG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
aXRlbUluZGV4LCBrVVRUeXBlUlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAg
ICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAgcmV0
dXJuIFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAg
ICByZXR1cm4gYnVmZmVyICYmIHJlYWRlci5yZWFkUlRGKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0
OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CkBAIC0yNTEsNyArMjUx
LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICNlbmRpZiAvLyAhUExB
VEZPUk0oTUFDQ0FUQUxZU1QpCiAKICAgICBpZiAoW3N1cHBvcnRlZEltYWdlVHlwZXMoKSBjb250
YWluc09iamVjdDp0eXBlXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCB0eXBlLCBtX3Bh
c3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1J
bmRleCwgdHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1f
Y2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJS
ZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1
ZmZlciAmJiByZWFkZXIucmVhZEltYWdlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCB0eXBlLCBp
dGVtSW5mby5wcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5
cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggMTY3Y2VmMDJk
NzhkNzk0ZGVhYThlNWRkYWY0ZGQ2NmMzZDJjY2E0NS4uMTZiM2Q1ZDQ0MTVkMjU4NTE1ZjY2MGE4
NmFjNmNlZmJkY2RiNjRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC0zMzgsNyArMzM4LDcgQEAgaW50NjRfdCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKICAgICBy
ZXR1cm4gMDsKIH0KIAotaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5
cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJikKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJv
YXJkOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJp
bmcmKQogewogICAgIHJldHVybiAwOwogfQpAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUGxhdGZv
cm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkK
IAogICAgIEFTU0VSVChjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVu
dERhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xp
ZW50VHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25z
VG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgZm9yVHlwZTpjb250ZW50LmNsaWVudFR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2Vu
dGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBl
c1tpXV07CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAg
ICAgIGF1dG8gd2ViQXJjaGl2ZURhdGEgPSBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQt
PmNyZWF0ZU5TRGF0YSgpOwpAQCAtNDc5LDcgKzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRT
dHJpbmdGb3JtYXQpIHsKLSAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRl
ZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltO
U1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29u
dGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBl
cnJvcjpudWxscHRyXSkKKyAgICAgICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRl
ZFN0cmluZyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltO
U1NldCBzZXRXaXRoT2JqZWN0Ok5TQXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29u
dGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKICAgICAgICAgICAgIFtyZXByZXNlbnRh
dGlvbnNUb1JlZ2lzdGVyIGFkZFJlcHJlc2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3RyaW5nXTsK
ICAgICB9CiAKQEAgLTUwMSw3ICs1MDEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKIAogICAgIFBhc3RlYm9hcmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgY3VzdG9t
RGF0YS5zZXRPcmlnaW4oY29udGVudC5jb250ZW50T3JpZ2luKTsKLSAgICBbcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FU
eXBlKCkpXTsKKyAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURh
dGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKIAog
ICAgIHJlZ2lzdGVySXRlbVRvUGFzdGVib2FyZChyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyLmdl
dCgpLCBtX3Bhc3RlYm9hcmQuZ2V0KCkpOwogfQpAQCAtNTE0LDE0ICs1MTQsMTQgQEAgdm9pZCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2Fy
ZEltYWdlKQogICAgIGF1dG8mIGRhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YTsKICAg
ICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMCwgc2l6ZSA9IHR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBmb3JUeXBlOnR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIg
YWRkRGF0YTpkYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBm
b3JUeXBlOnR5cGVzW2ldXTsKIAogICAgIGlmIChwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRh
ICYmICFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc0VtcHR5KCkpIHsKICAgICAg
ICAgYXV0byB1dGlPck1JTUVUeXBlID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGU7
CiAgICAgICAgIGlmICghaXNEZWNsYXJlZFVUSSh1dGlPck1JTUVUeXBlKSkKICAgICAgICAgICAg
IHV0aU9yTUlNRVR5cGUgPSBVVElGcm9tTUlNRVR5cGUodXRpT3JNSU1FVHlwZSk7CiAKLSAgICAg
ICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVO
U0RhdGEoKTsKKyAgICAgICAgYXV0byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3Vy
Y2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNT
dHJpbmcgKil1dGlPck1JTUVUeXBlXTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXpl
XTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVkTmFtZTpw
YXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZV07CkBAIC02MzUsNyArNjM1LDcgQEAgc3RhdGlj
IFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdD4gY3JlYXRlSXRl
bVByb3ZpZGVyUmVnaXN0cmEKICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVm
ZXJyZWRQcmVzZW50YXRpb25TdHlsZTpXZWJQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGlu
ZV07CiAKICAgICBpZiAoZGF0YS5oYXNTYW1lT3JpZ2luQ3VzdG9tRGF0YSgpIHx8ICFkYXRhLm9y
aWdpbigpLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVkQnVm
ZmVyID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKKyAgICAg
ICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVm
ZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKSB7CiAgICAgICAgICAgICAv
LyBXZSBzdGFzaCB0aGUgbGlzdCBvZiBzdXBwbGllZCBwYXN0ZWJvYXJkIHR5cGVzIGluIHRlYW1E
YXRhIGhlcmUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBkcmFnIGFuZCBkcm9wLgogICAgICAgICAg
ICAgLy8gU2luY2UgdGhlIGNvbnRlbnRzIG9mIGl0ZW0gcHJvdmlkZXJzIGNhbm5vdCBiZSBsb2Fk
ZWQgcHJpb3IgdG8gZHJvcCwgYnV0IHRoZSBwYXN0ZWJvYXJkIHR5cGVzIGFyZQogICAgICAgICAg
ICAgLy8gY29udGFpbmVkIHdpdGhpbiB0aGUgY3VzdG9tIGRhdGEgYmxvYiBhbmQgd2UgbmVlZCB0
byB2ZW5kIHRoZW0gdG8gdGhlIHBhZ2Ugd2hlbiBmaXJpbmcgYGRyYWdvdmVyYApAQCAtNjcyLDgg
KzY3Miw4IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8
U2hhcmVkQnVmZmVyPj4odmFsdWUpOwotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3Rl
ciBhZGREYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcg
Kiljb2NvYVR5cGVdOworICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4odmFsdWUpOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdp
c3RlciBhZGREYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOwogICAgIH0pOwogCiAgICAgcmV0dXJu
IHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCmluZGV4IDU0NDY1M2M0NDAzZDI2MDQwYTU1
ZDIzZTkzNjkxYmZlZGNjOTJiNDIuLmNhYmFhYTExOGRjMzRiNjFhMGE2ZjU0OGQzMDQ2NjI2NjFi
ODhiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29u
dmVydGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29u
dmVydGVySU9TLm1tCkBAIC04Miw3ICs4Miw3IEBAIEBlbmQKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogUHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRlcihjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyJiBwcm92aWRlcikKLSAgICA6
IG1fcHJldmlld0RhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICA6IG1fcHJldmll
d0RhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpKSB9CiAgICAgLCBtX29yaWdpbmFsUmVzcG9uc2UgeyByZXNwb25z
ZSB9CiAgICAgLCBtX3Byb3ZpZGVyIHsgcHJvdmlkZXIgfQogICAgICwgbV9wbGF0Zm9ybURlbGVn
YXRlIHsgYWRvcHROUyhbW1dlYlByZXZpZXdDb252ZXJ0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdp
dGhEZWxlZ2F0ZToqdGhpc10pIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0KaW5kZXggNjc3ZjhjYWRhYjU5MTIzZTFiNjJkMWJhYzJkMTkwOGJmNjc2YTJm
OS4uMGQyNTQ5OGI4NmJlZjE4NWQzNzY5ZDVhNWJjMGJjMmY3MzFjNzBkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTI1MCw3ICsyNTAsNyBA
QCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IENvbG9yJiBjb2xvcikKIAogc3RhdGljIE5T
RmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVyKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2Fy
ZEltYWdlKQogewotICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFs
bG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNl
RGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5T
KFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3Rl
Ym9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXSk7CiAgICAgW3dyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmls
ZW5hbWVXaXRoTUlNRVR5cGUocGFzdGVib2FyZEltYWdlLnVybC51cmwsIHBhc3RlYm9hcmRJbWFn
ZS5yZXNvdXJjZU1JTUVUeXBlKV07CiAgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsK
IH0KQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBs
YWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAgIAogICAg
IGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCkpKSkg
ewogICAgICAgICBpZiAoYXV0byBkYXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4
KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3Rl
Ym9hcmROYW1lLCBjb250ZXh0KCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVk
U3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZE
OmRhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgewor
ICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJp
YnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKICAgICAgICAg
ICAgICAgICB0ZXh0LnRleHQgPSBbYXR0cmlidXRlZFN0cmluZyBzdHJpbmddOwogICAgICAgICAg
ICAgICAgIHRleHQuaXNVUkwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCmluZGV4IDM1
M2QwMDZiOTBjYmNlNjA5ZTZkZmQzN2MyODA4MTMxZjIxNGI4ZGEuLjg4ZDA0MDI1ODQzNzAyZTRh
YTRmNWE5YTU1NmI4ODFjNmU0MGMyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRT
dHJpbmc6d2ViQ29udGVudC0+ZGF0YUluU3RyaW5nRm9ybWF0IGZvclR5cGU6TlNQYXN0ZWJvYXJk
VHlwZVN0cmluZ107CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdlYkNvbnRl
bnQtPmNsaWVudFR5cGVzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVt
IHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
Zm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0p
LmdldCgpXTsKKyAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQt
PmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZv
clR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5n
ZXQoKV07CiAKICAgICAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICAg
ICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4od2ViQ29udGVudC0+Y29udGVudE9yaWdpbik7Ci0gICAg
ICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVy
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0
cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CisgICAgICAg
IFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCkt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxl
c3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5n
ZXQoKV07CiAgICAgfQogCiAgICAgcmV0dXJuIHBhc3RlYm9hcmRJdGVtOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXgg
ZDliN2QyNDgwMzhjMmRiOGFhYjA5MmNiOTFmZmE1NmYyY2I0Y2U3My4uYzNiNGQyZDk2MjE3NDcx
YzczNWUyNGZlN2E1ZjlkOTIzN2RmNDcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC0yNjMsOCArMjYzLDggQEAg
aW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21E
YXRhJiBkYXRhKQogICAgICAgICBpZiAocGxhdGZvcm1UeXBlLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hh
cmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0
Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5j
cmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAg
ICAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZv
clR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmlu
ZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpAQCAtMjc0LDcgKzI3NCw3IEBA
IGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YSYgZGF0YSkKICAgICB9KTsKIAogICAgIGlmIChzaG91bGRXcml0ZUN1c3RvbURhdGEpIHsK
LSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1
c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpzZXJpYWxp
emVkQ3VzdG9tRGF0YS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29h
VHlwZSgpKV07CiAgICAgfQogCkBAIC0zNDEsMTIgKzM0MSwxMiBAQCBpbnQ2NF90IFBsYXRmb3Jt
UGFzdGVib2FyZDo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cykKICAgICByZXR1cm4gW21fcGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6Y3JlYXRlTlNBcnJheShw
YXN0ZWJvYXJkVHlwZXMpLmdldCgpIG93bmVyOm5pbF07CiB9CiAKLWludDY0X3QgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1
ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKQogewogICAgIGlmICghY2FuV3JpdGVQYXN0ZWJvYXJkVHlwZShwYXN0
ZWJvYXJkVHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgQk9PTCBkaWRXcml0ZURhdGEg
PSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKKyAgICBCT09MIGRpZFdyaXRlRGF0
YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwog
ICAgIGlmICghZGlkV3JpdGVEYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gY2hh
bmdlQ291bnQoKTsKQEAgLTUwNCw4ICs1MDQsOCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TUGFzdGVi
b2FyZEl0ZW0+IGNyZWF0ZVBhc3RlYm9hcmRJdGVtKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYQog
ICAgICAgICBpZiAoIXBsYXRmb3JtVHlwZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JC
dWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxS
ZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAg
ICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PihzdHJpbmdPckJ1ZmZlcikpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9
IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbaXRlbSBz
ZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAg
IH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVy
KSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09y
QnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaAppbmRleCA2ODEzZDVkYTdkY2IwZmMyNTlm
MWJkMWVkMGE1NGMxYTFhOWZkOWNmLi43OTY1NTRmNGM5NzY0NTE0MDFlMWExMjM3NDY4NzA0MGIy
NGIxY2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNz
IE1lZGlhU2FtcGxlOwogY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRlOwogY2xhc3MgTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGU7CiBjbGFzcyBQbGF0Zm9ybUF1ZGlvRGF0YTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZU9wdGlvbnM7CiAKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIH07CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEF1ZGlvVmlkZW9TZWxlY3RlZFRyYWNrcyBzZWxlY3RU
cmFja3MoTWVkaWFTdHJlYW1Qcml2YXRlJik7CiAKLSAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFj
ayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT47CisgICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPjsKICAgICB2aXJ0dWFsIHZvaWQgZmV0
Y2hEYXRhKEZldGNoRGF0YUNhbGxiYWNrJiYpID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2Nr
LmNwcAppbmRleCBjMjVkZjkxNTc0YTY1YmM0MWJkYjcwNjc4ZGM0NzcyNDgzNmRkMTQ1Li40OThk
NGVlMTM0MGM0Yjk0MDAxYjYwYzM0NDc5YjdmNzJkNWM4ZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZU1vY2suY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclBy
aXZhdGVNb2NrOjpnZW5lcmF0ZU1vY2tDb3VudGVyU3RyaW5nKCkKIAogdm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZU1vY2s6OmZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIHsKICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fYnVmZmVyTG9jayB9OwogICAgICAgICBWZWN0b3I8dWludDhfdD4gdmFsdWUgeyBt
X2J1ZmZlci5jaGFyYWN0ZXJzOCgpLCBtX2J1ZmZlci5sZW5ndGgoKSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCAyMTFmNzVl
ZTczYWY2OTE5ZTdmNGM5OTU4ZTBjZDM0ODI1MzJkMDlmLi45YzJjNzk3YjgxOTUxMmQ4ZmQ1Nzkw
MTVkYzNiNmU0MDVlM2JjNjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhcHBlbmRWaWRlb1NhbXBsZUJ1ZmZlcihNZWRpYVNhbXBsZSYpOwogICAgIHZvaWQgYXBwZW5k
QXVkaW9TYW1wbGVCdWZmZXIoY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0
cmVhbURlc2NyaXB0aW9uJiwgY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBzaXplX3QpOwogICAgIHZv
aWQgc3RvcFJlY29yZGluZygpOwotICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4mJik7CisgICAgdm9pZCBmZXRj
aERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgZG91YmxlKT4mJik7CiAKICAgICB2b2lkIHBhdXNlKCk7CiAgICAgdm9pZCByZXN1bWUo
KTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmaW5pc2hlZEZsdXNo
aW5nU2FtcGxlcygpOwogICAgIHZvaWQgY29tcGxldGVGZXRjaERhdGEoKTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiB0YWtlRGF0YSgpOwogCiAgICAgYm9vbCBtX2hhc0F1ZGlvIHsgZmFsc2UgfTsKICAgICBi
b29sIG1faGFzVmlkZW8geyBmYWxzZSB9OwpAQCAtMTE3LDggKzExNyw4IEBAIHByaXZhdGU6CiAg
ICAgUmV0YWluUHRyPEFWQXNzZXRXcml0ZXI+IG1fd3JpdGVyOwogCiAgICAgTG9jayBtX2RhdGFM
b2NrOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NL
KG1fZGF0YUxvY2spOwotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiwgZG91YmxlKT4gbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOwor
ICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBSZXRhaW5Q
dHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IG1fYXVkaW9Db21w
cmVzc29yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLm1tCmluZGV4IDhjMWY3YzBlNTMxM2I2Yjg1NmNkM2NkZjVlODM4NGYzNmI3YjUzZjUu
Ljg0ODQxMDBlYWM1ZTExNWU5YjBjZjAxMjBiYWJmNzhmYjFhMTI3NGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTEzNywx
MCArMTM3LDggQEAgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcigpCiAgICAgICAgIG1fd3JpdGVyLmNsZWFyKCk7CiAgICAgfQogCi0gICAgLy8g
QXQgdGhpcyBwb2ludGVyLCB3ZSBzaG91bGQgbm8gbG9uZ2VyIGJlIHdyaXRpbmcgYW55IGRhdGEs
IHNvIGl0IHNob3VsZCBiZSBzYWZlIHRvIGNsb3NlIGFuZCBudWxsaWZ5IG1fZGF0YSB3aXRob3V0
IGxvY2tpbmcuCiAgICAgaWYgKG1fd3JpdGVyRGVsZWdhdGUpCiAgICAgICAgIFttX3dyaXRlckRl
bGVnYXRlIGNsb3NlXTsKLSAgICBtX2RhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKGF1dG8gY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpKQog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyLCAwKTsKQEAgLTQ5NSw3ICs0OTMsNyBA
QCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdG9wUmVjb3JkaW5nKCkKICAgICB9
KTsKIH0KIAotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZldGNoRGF0
YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fZmV0Y2hEYXRhQ29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKIApAQCAtNTM3LDE4ICs1
MzUsMTMgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcGxldGVGZXRjaERh
dGEoKQogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRh
TG9jayB9OwotICAgIGlmICghbV9kYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fZGF0
YS0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtl
RGF0YSgpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXI6OnRha2VEYXRhKCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9
OwotICAgIGF1dG8gZGF0YSA9IFdURk1vdmUobV9kYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKKyAg
ICByZXR1cm4gbV9kYXRhLnRha2UoKTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6cGF1c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9EYXRhVVJMRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRh
VVJMRGVjb2Rlci5oCmluZGV4IGE5YjI5ZDU5ZTlhYTNiNDY1NTQxNWJkOGJlZjA5ODRjNTQ0Yjcz
ZjAuLmNkZWU2MDM1MjNjZDY2OTQ1ZjQyOGY2OTQ3ODk2MGY2ZmQ3NGM3N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKQEAgLTMzLDcg
KzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgRGF0YVVSTERlY29kZXIg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
LmgKaW5kZXggZmFmZGZlODdjODM3ZTYxNTdkMmYxM2U5YTdjYTAwOTY5ZDUwYjFjNy4uNGJlYmNi
NTA5OGQxNWMyOTY2ZWQ4YzdlZTEzNmFlM2EyYWU0YTIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtODQsNyArODQsNyBAQCBj
bGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3luY2hyb25vdXNMb2Fk
ZXJNZXNzYWdlUXVldWU7CiBjbGFzcyBUaW1lcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAppbmRleCA2ZTY1
YmI4OTE4YzZlYzEyZjhhZWE4NmViZTcwNDg4NGUyZTczNjZmLi5iYThmZDRmZjRmMWU0MWM5YWQ0
ZmE3NGE0MmJlNGUyYmQxMWFhODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApAQCAtMzYsOSArMzYsOSBA
QCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7
CiAKIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1
bHQ7CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIo
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxl
LCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAg
ICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgK
aW5kZXggYjYzMzdkNTZjZThjZDliZWZmOWRmYmUxMTM2NjJiYzc3NTZiNjUzNy4uYzRmMDU0ODVm
Mjg3MGIxMTZkYTdjNzYwZDNjMGZjZTk2ZWMyYjRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtNTAsNyAr
NTAsNyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogZW51bSBDYWNoZVN0b3Jh
Z2VQb2xpY3kgewogICAgIFN0b3JhZ2VBbGxvd2VkLApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQg
bG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNU
b0JlU2VudCovKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5n
dGgqLykgeyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmco
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFu
Z2VSZXNwb25zZUdlbmVyYXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQppbmRleCAxZmYwNjUyMTZmYTY4MDg4MTkz
NzE0YmNmMmJjZGFmNjk2ZjAyNDA2Li4wMDhlMjI2ZmY5MTkwMDRiNDUxNDhhMjQ3MjYxMTYxNTA5
ODk2Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC00MSw4ICs0MSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRh
IHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRGF0YShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJj
ZSkKLSAgICAgICAgOiBidWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICAgICAgLCBv
cmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQorICAgICAgICA6IG9yaWdpbmFsUmVzcG9uc2UocmVz
cG9uc2UpCiAgICAgICAgICwgcmVzb3VyY2UoJnJlc291cmNlKSB7IH0KIAogICAgIHN0cnVjdCBU
YXNrRGF0YSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxUYXNrRGF0YT4gewpAQCAtNTUsOSArNTQs
OSBAQCBzdHJ1Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgICAgIHNpemVf
dCBuZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4IHsgMCB9OwogICAgICAgICBlbnVtIGNsYXNzIFJl
c3BvbnNlU3RhdGUgOiB1aW50OF90IHsgTm90U3ludGhlc2l6ZWRZZXQsIFdhaXRpbmdGb3JTZXNz
aW9uLCBTZXNzaW9uQ2FsbGVkQ29tcGxldGlvbkhhbmRsZXIgfSByZXNwb25zZVN0YXRlIHsgUmVz
cG9uc2VTdGF0ZTo6Tm90U3ludGhlc2l6ZWRZZXQgfTsKICAgICB9OwotICAgIAorCiAgICAgSGFz
aE1hcDxSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiwgc3RkOjp1bmlxdWVf
cHRyPFRhc2tEYXRhPj4gdGFza0RhdGE7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIFJlc291cmNlUmVzcG9uc2Ugb3Jp
Z2luYWxSZXNwb25zZTsKICAgICBlbnVtIGNsYXNzIFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGlu
ZyA6IGJvb2wgeyBObywgWWVzIH0gc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIHsgU3VjY2Vz
c2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpObyB9OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVz
b3VyY2U+IHJlc291cmNlOwpAQCAtMTA2LDIyICsxMDUsMjIgQEAgdm9pZCBSYW5nZVJlc3BvbnNl
R2VuZXJhdG9yOjpyZW1vdmVUYXNrKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaykK
IHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0lu
UmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2ssIGNvbnN0IFBh
cnNlZFJlcXVlc3RSYW5nZSYgcmFuZ2UsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENv
bnRlbnRMZW5ndGgsIGNvbnN0IERhdGEmIGRhdGEpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLSAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyOwotICAgIGF1dG8gYnVmZmVyU2l6
ZSA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUg
dG8ganVzdCBtYWtlIGEgcmFuZ2Ugd2l0aCBhICogYWZ0ZXIgdGhlIC8gYnV0IEFWRm91bmRhdGlv
biBkb2Vzbid0IGFjY2VwdCBzdWNoIHJhbmdlcy4KICAgICAvLyBJbnN0ZWFkLCB3ZSBqdXN0IHdh
aXQgdW50aWwgdGhlIGxvYWQgaGFzIGNvbXBsZXRlZCwgYXQgd2hpY2ggdGltZSB3ZSB3aWxsIGtu
b3cgdGhlIGNvbnRlbnQgbGVuZ3RoIGZyb20gdGhlIGJ1ZmZlciBsZW5ndGguCiAgICAgaWYgKCFl
eHBlY3RlZENvbnRlbnRMZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gYnVmZmVy
U2l6ZSA9IGRhdGEuYnVmZmVyLnNpemUoKTsKICAgICBpZiAoYnVmZmVyU2l6ZSA8IHJhbmdlLmJl
Z2luKQogICAgICAgICByZXR1cm47Ci0gICAgCisKKyAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVm
ZmVyLmdldCgpOwogICAgIGF1dG8qIHRhc2tEYXRhID0gZGF0YS50YXNrRGF0YS5nZXQodGFzayk7
CiAgICAgaWYgKCF0YXNrRGF0YSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8gZ2l2
ZUJ5dGVzVG9UYXNrID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgdGFza0RhdGEg
PSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7
CisKKyAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBi
dWZmZXIsIGJ1ZmZlclNpemUsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5l
cmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0gewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgICAgICBpZiAoW3Rhc2sgc3RhdGVdICE9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVJ1
bm5pbmcpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMzAsNyArMTI5LDcgQEAgdm9pZCBSYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2Vp
dmVkKFdlYkNvcmVOU1UKICAgICAgICAgYXV0byYgcmFuZ2UgPSB0YXNrRGF0YS0+cmFuZ2U7CiAg
ICAgICAgIGF1dG8mIGJ5dGVJbmRleCA9IHRhc2tEYXRhLT5uZXh0Qnl0ZVRvR2l2ZUJ1ZmZlcklu
ZGV4OwogICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+
PSBidWZmZXItPnNpemUoKSkKKyAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyU2l6
ZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGF1dG8gYnVmZmVyVmlldyA9
IGJ1ZmZlci0+Z2V0U29tZURhdGEoYnl0ZUluZGV4KTsKICAgICAgICAgICAgIGlmICghYnVmZmVy
Vmlldy5zaXplKCkgfHwgYnl0ZUluZGV4ID4gcmFuZ2UuZW5kKQpAQCAtMTc1LDcgKzE3NCw3IEBA
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENv
bnRlbnRMZW5ndGhGcm9tRGF0YShjb25zCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICBpZiAoZGF0YS5zdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgPT0gRGF0YTo6U3VjY2Vz
c2Z1bGx5RmluaXNoZWRMb2FkaW5nOjpZZXMpCi0gICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci0+
c2l6ZSgpOworICAgICAgICByZXR1cm4gZGF0YS5idWZmZXIuc2l6ZSgpOwogCiAgICAgLy8gRklY
TUU6IFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBzaG91bGQg
cmV0dXJuIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbnN0ZWFkIG9mIHVzIGRvaW5nIHRoaXMgY2hl
Y2sgaGVyZS4KICAgICBhdXRvIGV4cGVjdGVkQ29udGVudExlbmd0aCA9IGRhdGEub3JpZ2luYWxS
ZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKQEAgLTI0NCw3ICsyNDMsNyBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdm9pZCBkYXRhUmVjZWl2
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZp
bmFsCisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBmaW5hbAogICAgIHsKICAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKCFtX2dlbmVyYXRvcikKQEAgLTI1Miw3
ICsyNTEsNyBAQCBwcml2YXRlOgogICAgICAgICBhdXRvKiBkYXRhID0gbV9nZW5lcmF0b3ItPm1f
bWFwLmdldChtX3VybFN0cmluZyk7CiAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgZGF0YS0+YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAg
ICAgICAgZGF0YS0+YnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX2dl
bmVyYXRvci0+Z2l2ZVJlc3BvbnNlVG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdlcygqZGF0YSk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1dlYkNvcmVOU1VSTFNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCmluZGV4IDQwNDg4NWFlNjM3NmZjZTY4MDQwZDJh
MDVjMDBiZWM0N2ZlMTZhYTguLmNlNGMyNTQ1Y2RlMGYyZjQ2YWMzMzhmOTZjNDkwODhlYjQ1ZDA5
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFBsYXRm
b3JtTWVkaWFSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFW
aWV3OwogY2xhc3MgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OwogZW51bSBjbGFz
cyBTaG91bGRDb250aW51ZVBvbGljeUNoZWNrIDogYm9vbDsKQEAgLTE1OCw3ICsxNTgsNyBAQCBX
RUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb24gOiBOU09iamVjdCB7
CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UqKXJlc291cmNlIHNlbnRCeXRlczoodW5zaWduZWQgbG9uZyBsb25nKWJ5dGVzU2VudCB0b3Rh
bEJ5dGVzVG9CZVNlbnQ6KHVuc2lnbmVkIGxvbmcgbG9uZyl0b3RhbEJ5dGVzVG9CZVNlbnQ7CiAt
ICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2Uq
KXJlc291cmNlIHJlY2VpdmVkUmVzcG9uc2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKXJlc3BvbnNlIGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKWNvbXBsZXRpb25IYW5kbGVyOwog
LSAoQk9PTClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNl
KilyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJilyZXNwb25zZTsKLS0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmKWRhdGE7CistICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpZGF0YTsKIC0gKHZvaWQpcmVzb3VyY2U6KG51
bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRS
ZWRpcmVjdDooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgcmVxdWVz
dDooV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpY29t
cGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZFdpdGhF
cnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CiAtICh2b2lkKXJlc291
cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGxv
YWRGYWlsZWRXaXRoRXJyb3I6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKWVycm9yOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGUwNDAxMGE5ODExYjRjOWFlMTQ5NDk5ODcwMWNh
MTU0ODlmNTcxNmMuLjhjODlkOTM4NjU3OTMzYTFkYTI5MDMxOTkxNTg0YzRkYjJmYWE5YTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTYwOCw3ICs2MDgsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVx
dWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNw
b25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25l
ZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRh
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29u
dHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJy
b3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOwpAQCAtNjUyLDcgKzY1Miw3IEBAIGJvb2wgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNr
Q2xpZW50OjpzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjCiAgICAgcmV0
dXJuIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6cmVzcG9u
c2VdOwogfQogCi12b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQordm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sg
fTsKICAgICBpZiAoIW1fdGFzaykKQEAgLTkxNSwxMSArOTE1LDExIEBAIC0gKEJPT0wpcmVzb3Vy
Y2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZToo
Y29uc3QgUmVzCiAgICAgcmV0dXJuIHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6Q29udGVudFJhbmdlKS5pc0VtcHR5KCk7CiB9CiAKLS0gKHZvaWQpcmVzb3VyY2U6KFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmKWRhdGEKKy0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJilkYXRhCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNl
IHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7CiAgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0
ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1v
dmUoZGF0YSldIHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsK
KyAgICAgICAgYXV0byBuc0RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKTsKICAgICAgICAgc3Ryb25nU2VsZi5nZXQoKS5jb3VudE9mQnl0ZXNSZWNlaXZlZCArPSBk
YXRhLT5zaXplKCk7CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURl
bGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5z
ZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxv
YWQuY3BwCmluZGV4IGMzNmUxZjg4NzY0MzA0NjBjZTc1MGEzYjhjNjU4YzczNGVjYjE1MDguLjM0
OTQ0NTkyNTRhYzkzZmMxOWNiMTIxNTBhNjFiYzJiY2VkMDJkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCkBAIC0x
MDMsNyArMTAzLDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2Uo
Q3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXNwb25zZSYmIHIKIH0KIAogCi12b2lkIEN1cmxE
b3dubG9hZDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihD
dXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKaW5kZXggYTNhYTBjZjVmY2QyOTU1YmI3
YjE2YjExYTFhODFjYTc0YWU2MWM4ZC4uY2RlNDQ0NTc3NWY3NDQyMzMwNTMwYjY1YjEzNTdiYTZi
ZmQ5YmI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIFJlZjxDdXJs
UmVxdWVzdD4gY3JlYXRlQ3VybFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBj
dXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVk
IGxvbmcgbG9uZykgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNl
KEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgY3VybERp
ZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZENvbXBsZXRl
KEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
Y3VybERpZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiYsIENlcnRp
ZmljYXRlSW5mbyYmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCmluZGV4IGJi
ZGEzZmJkYTc1ODNkOTkxOTMxZGZlMTY5ZjdiM2E5MTMzZTZkYTIuLjA5MGQwMzliYTQ1ZGUxMDI4
ZWRmNzY4NGM2ZDdkMmYyOTZlM2EzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKQEAgLTEx
OSwxMiArMTE5LDEyIEBAIEN1cmxNdWx0aXBhcnRIYW5kbGU6OkN1cmxNdWx0aXBhcnRIYW5kbGUo
Q3VybE11bHRpcGFydEhhbmRsZUNsaWVudCYgY2xpZW50LCBjb25zCiAKIH0KIAotdm9pZCBDdXJs
TXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK3ZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpF
bmQpCiAgICAgICAgIHJldHVybjsgLy8gVGhlIGhhbmRsZXIgaXMgY2xvc2VkIGRvd24gc28gaWdu
b3JlIGV2ZXJ5dGhpbmcuCiAKLSAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLmRhdGEoKSwgYnVm
ZmVyLnNpemUoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlci5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogCiAgICAgd2hpbGUgKHByb2Nlc3NDb250ZW50KCkp
IHsgfQogfQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlk
Q29tcGxldGUoKQogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpFbmQpIHsKICAgICAgICAgLy8g
SXQgc2VlbXMgd2UgYXJlIHN0aWxsIG5vdCBhdCB0aGUgZW5kIG9mIHRoZSBwcm9jZXNzaW5nLgog
ICAgICAgICAvLyBQdXNoIG91dCB0aGUgcmVtYWluaW5nIGRhdGEuCi0gICAgICAgIG1fY2xpZW50
LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZl
ci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZl
RGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX2J1ZmZlcikp
KTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGUuaAppbmRleCA1YzA4YmNjNWViM2U0YmJjYzAyOWI0NzY3ODY4ZjQzZTJmOTVjMzQxLi45YTFh
MWJiZDE5MzhhMTRmNjlmY2NlZTNmMGY4OWI5N2E0YTIxODc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJsTXVs
dGlwYXJ0SGFuZGxlQ2xpZW50OwogY2xhc3MgQ3VybFJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybE11bHRpcGFy
dEhhbmRsZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00NCw3ICs0NCw3IEBA
IHB1YmxpYzoKICAgICBDdXJsTXVsdGlwYXJ0SGFuZGxlKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGll
bnQmLCBjb25zdCBTdHJpbmcmKTsKICAgICB+Q3VybE11bHRpcGFydEhhbmRsZSgpIHsgfQogCi0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRp
ZENvbXBsZXRlKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaApp
bmRleCBmZDEzZmQzODEzMTQzY2IyNjU5YjhmZDFkYjI0NDQ3NjVlOThhNTgwLi5jODEzODg2YThk
NWM1ZmE2YzEyZDE0MTMzMTkxMDFhZjI1MDJhMmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
Q2xpZW50LmgKQEAgLTI4LDEyICsyOCwxMiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDdXJsUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUhlYWRlckZyb21NdWx0aXBhcnQoY29uc3QgVmVj
dG9yPFN0cmluZz4mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11
bHRpcGFydChSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAw
OwogCiBwcm90ZWN0ZWQ6CiAgICAgfkN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQoKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3Qu
Y3BwCmluZGV4IGQzNWIwZTgzOTE5NTFkMzg2MzRlOTkwOTNiNjg2NTYyNGQ5OTc5NTEuLmQ4MmRk
M2MxMGFjNjQ3MTM1OTkxZmQ3YWU2Njk3ZTlkOGUzMTNlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtMzk2LDcg
KzM5Niw3IEBAIHNpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZUhlYWRlcihTdHJpbmcmJiBo
ZWFkZXIpCiAKIC8vIGNhbGxlZCB3aXRoIGRhdGEgYWZ0ZXIgYWxsIGhlYWRlcnMgaGF2ZSBiZWVu
IHByb2Nlc3NlZCB2aWEgaGVhZGVyQ2FsbGJhY2sKIAotc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3NpemVfdCBDdXJsUmVxdWVz
dDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ewogICAgIGlmIChpc0NvbXBsZXRlZE9yQ2FuY2VsbGVkKCkpCiAgICAgICAgIHJldHVybiAwOwpA
QCAtNDQ0LDcgKzQ0NCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVIZWFkZXJGcm9t
TXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBoZWFkZXJzKQogICAgIGludm9rZURpZFJl
Y2VpdmVSZXNwb25zZShyZXNwb25zZSwgQWN0aW9uOjpOb25lKTsKIH0KIAotdm9pZCBDdXJsUmVx
dWVzdDo6ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQordm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoaXNDb21wbGV0ZWRP
ckNhbmNlbGxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC03NzcsNyArNzc3LDcgQEAgY29uc3Qg
U3RyaW5nJiBDdXJsUmVxdWVzdDo6Z2V0RG93bmxvYWRlZEZpbGVQYXRoKCkKICAgICByZXR1cm4g
bV9kb3dubG9hZEZpbGVQYXRoOwogfQogCi12b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rv
d25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3Vy
bFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIg
eyBtX2Rvd25sb2FkTXV0ZXggfTsKQEAgLTc5MCw3ICs3OTAsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0
Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICB9CiAKICAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUgIT0gRmlsZVN5c3Rl
bTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVU
b0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkp
OworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwg
YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHZv
aWQgQ3VybFJlcXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKaW5kZXggNmJkOGE2YmZiYTM3
NTJjZWRkZGJjNTAwOWVhZTgzYzRmMGVlZDY0MS4uM2M3Y2RkODgzZWI2MmJmZTkyY2YwNDQ1ZWQy
OWJkMjZlY2UzZTkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0LmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQ3VybFJlcXVlc3RDbGllbnQ7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBj
bGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlOwogCiBj
bGFzcyBDdXJsUmVxdWVzdCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDdXJsUmVxdWVz
dD4sIHB1YmxpYyBDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCwgcHVibGljIEN1cmxNdWx0aXBh
cnRIYW5kbGVDbGllbnQgewpAQCAtMTIyLDkgKzEyMiw5IEBAIHByaXZhdGU6CiAgICAgQ1VSTCog
c2V0dXBUcmFuc2ZlcigpIG92ZXJyaWRlOwogICAgIHNpemVfdCB3aWxsU2VuZERhdGEoY2hhcios
IHNpemVfdCwgc2l6ZV90KTsKICAgICBzaXplX3QgZGlkUmVjZWl2ZUhlYWRlcihTdHJpbmcmJik7
Ci0gICAgc2l6ZV90IGRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHNp
emVfdCBkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAg
dm9pZCBkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYp
IG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxTaGFy
ZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlw
YXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZENvbXBsZXRlVHJhbnNmZXIoQ1VSTGNvZGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2Vs
VHJhbnNmZXIoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmFsaXplVHJhbnNmZXIoKTsKQEAgLTE1
Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIE5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTG9h
ZE1ldHJpY3MoKTsKIAogICAgIC8vIERvd25sb2FkCi0gICAgdm9pZCB3cml0ZURhdGFUb0Rvd25s
b2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHdyaXRlRGF0
YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsK
ICAgICB2b2lkIGNsb3NlRG93bmxvYWRGaWxlKCk7CiAgICAgdm9pZCBjbGVhbnVwRG93bmxvYWRG
aWxlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmgKaW5kZXggMDhjODZjN2Q0Njg0YmE2Zjc4ZDYxNmI2OGQw
NjkwNGMzN2E5NjY3Ny4uMzQ3OTgzMmY1NzZkNDEyOGFmYTUxYzgxNDI0Y2NmZDc0MWRmNmFlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0Q2xpZW50LmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgQ3VybFJlcXVlc3Q7CiBj
bGFzcyBDdXJsUmVzcG9uc2U7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBSZXNv
dXJjZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgQ3VybFJlcXVlc3RDbGllbnQgewogcHVibGljOgpAQCAtNDMsNyArNDMs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1
ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRv
dGFsQnl0ZXNUb0JlU2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkUmVjZWl2ZVJl
c3BvbnNlKEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0
JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Y3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3QmLCBSZXNv
dXJjZUVycm9yJiYsIENlcnRpZmljYXRlSW5mbyYmKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3Vy
Y2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXggODE4ZDVhOTVlM2UxMjRkYzNhNzJmNzQzZTVjZDQ1
M2Q3MTdlMDEwZi4uMzA1ZDRlNWM5ZmMyNzA3NzU3ODdiMGY5YTkxOTc5YzA4ODg5YThhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDIsMTUgKzE0MiwxNiBA
QCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNl
KEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQogICAgIH0pOwogfQogCi12b2lkIEN1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6
Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlm
IChjYW5jZWxsZWRPckNsaWVudGxlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENh
Y2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIo
Jm1faGFuZGxlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIGNv
bnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3VybENhY2hl
TWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNC
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIGNsaWVudCgpLT5kaWRSZWNlaXZl
QnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXpl
KCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxl
dGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRs
ZURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuaAppbmRleCA2ZDU1ODY0NDUyZmQ0NmVlNzgwMGU5MzEyM2Ix
MjhiZGM2NGNlNDg3Li5kYWYwYTU5YTRlNTg2ZDcxMTRhYmI0ZTVlZjljNTRmNmE4YmVmYzcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQp
IGZpbmFsOwogICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1
cmxSZXNwb25zZSYmKSBmaW5hbDsKLSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxS
ZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBjdXJsRGlkUmVj
ZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2Fk
TWV0cmljcyYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1
ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgZmluYWw7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCBiYzRkYWFmYmYyMWExNWMwZTZkZDFhY2Q0NjIy
YWZhNTZiN2I4ZDVkLi4xZjRhMTkzMTMzMTJjNWRkNmE0OGFkNTMzOWRmZDJjM2I1ZGVjMjU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9p
b3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0zMSwxMiArMzEsMTIgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50IDogcHVibGlj
IFJlZkNvdW50ZWQ8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gewogcHVibGljOgogICAgIHZp
cnR1YWwgfkxlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWwoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVu
dHJ5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBjNTQ0NTM4NWE3N2FjMTJjMDllZjI0ODY2NDcz
ZDYyY2I2Nzk0NTVhLi40NTM2ODFiZGFiMmU0YTA1YTIxZmM2OGE5NDM3MDBlMDZjOTk3YTFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0z
NTYsNyArMzU2LDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlKQogCiBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVDb3VudGVyIGZpbmFs
IDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0
cmluZyYpIGZpbmFsIHsgKytjb3VudDsgfQotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbCB7ICsrY291bnQ7
IH0KKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsIHsgKytjb3VudDsgfQogCiAgICAgdW5z
aWduZWQgY291bnQgeyAwIH07CiB9OwpAQCAtOTc0LDcgKzk3NCw3IEBAIHN0YXRpYyBIR0xPQkFM
IGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYKICAgICByZXR1cm4gbWVtT2JqOwogfQogCi1zdGF0aWMgSEdMT0JBTCBjcmVhdGVH
bG9iYWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKK3N0YXRpYyBIR0xPQkFM
IGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSkKIHsKICAgICBIR0xPQkFMIG1lbU9iaiA9IEdsb2JhbEFsbG9jKEdQVFIsIGRhdGEtPnNpemUo
KSk7CiAgICAgaWYgKCFtZW1PYmopIApAQCAtOTg2LDE1ICs5ODYsMTUgQEAgc3RhdGljIEhHTE9C
QUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgIENv
cHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAg
aWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEdsb2JhbFVu
bG9jayhtZW1PYmopOwogCiAgICAgcmV0dXJuIG1lbU9iajsKIH0KIAotc3RhdGljIEhHTE9CQUwg
Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1l
LCBTaGFyZWRCdWZmZXIqIGRhdGEpCitzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENv
bnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKGZpbGVOYW1lLmlzRW1wdHkoKSB8fCAhZGF0YSkKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC0xMDM4LDggKzEwMzgsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVh
dGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNo
YXJlZAogICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0aGlzIHRlbXAgZmlsZS4KICAgICAg
ICAgRFdPUkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBGQUxT
RTsKLSAgICAgICAgaWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2Nl
ZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCksICZ3cml0dGVuLCAwKTsKKyAgICAgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgICAg
IHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKICAgICAg
ICAgQ2xvc2VIYW5kbGUodGVtcEZpbGVIYW5kbGUpOwogICAgICAgICBpZiAoIXRlbXBXcml0ZVN1
Y2NlZWRlZCkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTA3MSw3ICsxMDcxLDcgQEAgdm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFVSTCYgdXJsKQogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgIWNhY2hlZEltYWdlLT5pbWFn
ZUZvclJlbmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSkgfHwgIWNhY2hlZEltYWdlLT5pc0xvYWRl
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0g
Y2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgp
OworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0gY2FjaGVkSW1hZ2Ut
PmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgpOwogICAgIGlmICgh
aW1hZ2VCdWZmZXIgfHwgIWltYWdlQnVmZmVyLT5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA0MTFlZGJiMzUx
N2I4NDhmYWMwNjNkMTllOGNkOTVlYzAwMzdjZDYxLi44NGZhMjljZTFmMzAwZmUyOTBiMDQxNDY0
OGYwZjcyOTBhN2NiZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmNwcApAQCAtNjMsNyArNjMsNyBAQCBib29sIE1vY2tDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5
c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShrZXlTeXN0ZW0sICJvcmcud2Via2l0Lm1vY2siKTsKIH0KIAotdm9pZCBNb2NrQ0RN
RmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+JiYga2V5cykKK3ZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNU
b1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4mJiBrZXlzKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXNzaW9ucy5h
ZGQoaWQsIFdURk1vdmUoa2V5cykpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKQEAg
LTc0LDcgKzc0LDcgQEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJ
RChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEIKICAgICAgICAgdmFsdWUuYXBw
ZW5kKFdURk1vdmUoa2V5KSk7CiB9CiAKLVZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gTW9ja0NE
TUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQor
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92
ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQogewogICAgIGF1dG8gaXQg
PSBtX3Nlc3Npb25zLmZpbmQoaWQpOwogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25zLmVuZCgpKQpA
QCAtODMsNyArODMsNyBAQCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5
OjpyZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaQogICAgIHJldHVybiBXVEZN
b3ZlKGl0LT52YWx1ZSk7CiB9CiAKLWNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4qIE1v
Y2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25z
dAorY29uc3QgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4qIE1vY2tDRE1GYWN0
b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdAogewogICAg
IGF1dG8gaXQgPSBtX3Nlc3Npb25zLmZpbmQoaWQpOwogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25z
LmVuZCgpKQpAQCAtMjAyLDcgKzIwMiw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9u
cygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZmFjdG9yeSAmJiBtX2ZhY3RvcnktPnN1cHBvcnRzU2Vz
c2lvbnMoKTsKIH0KIAotYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QK
K2Jvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewog
ICAgIGlmICghc3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMSwxMiArMjExLDEzIEBAIGJvb2wgTW9ja0NE
TTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkg
Y29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJl
c3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewot
ICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uu
c2l6ZSgpKSkKKyAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNp
emUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVz
cG9uc2VBcnJheSA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3Bs
aXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKGJ1ZmZl
ci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAoIXJlc3Bv
bnNlQXJyYXkuY29udGFpbnMoU3RyaW5nKCJ2YWxpZC1yZXNwb25zZSJfcykpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTI2OSw5ICsyNzAsOSBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6
aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJh
dAogICAgIGNhbGxiYWNrKGluaXRpYWxpemUoKSk7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNl
OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBT
dWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwg
U3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0
ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7Cisg
ICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAKICAgICBjYWxsYmFjayhl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlkIikgPyBT
dWNjZWVkZWQgOiBGYWlsZWQpOwogfQpAQCAtMjk3LDcgKzI5OCw3IEBAIE1vY2tDRE1JbnN0YW5j
ZVNlc3Npb246Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxNb2NrQ0RNSW5zdGFuY2U+
JiYgaW5zdGFuCiB7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBtX2lu
c3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewpAQCAtMzIz
LDcgKzMyNCw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2Uo
TGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TCiAgICAgY2FsbGJhY2soU2hhcmVk
QnVmZmVyOjpjcmVhdGUobGljZW5zZS5kYXRhKCksIGxpY2Vuc2UubGVuZ3RoKCkpLCBzZXNzaW9u
SUQsIGZhbHNlLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgTW9ja0NETUlu
c3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGlj
ZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxs
YmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNr
KQogewogICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFu
Y2UtPmZhY3RvcnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7CkBAIC0zMzEsNyAr
MzMyLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5k
YXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4g
cmVzcG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rv
ci5jb250YWlucyhTdHJpbmcoImludmFsaWQtZm9ybWF0Il9zKSkpIHsKICAgICAgICAgY2FsbGJh
Y2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nl
c3NWYWx1ZTo6RmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NETUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaApp
bmRleCBmNWNkYTUwNWNmMmEzM2MxMDVmMDI1Yzk3YzkzNTBhOTY4Njk4ZTFlLi5kOTZjMTU2ZWU0
ZDI3OTFiOGIwOTk4ZGFmOTQwZWM3NTM3ODA3YmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ0RNRmFjdG9yeS5oCkBAIC03Nyw5ICs3Nyw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFz
U2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSB7IHJldHVybiBtX3Nlc3Npb25zLmNvbnRh
aW5zKGlkKTsgfQogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlk
KSB7IG1fc2Vzc2lvbnMucmVtb3ZlKGlkKTsgfQotICAgIHZvaWQgYWRkS2V5c1RvU2Vzc2lvbldp
dGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYpOwotICAg
IGNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4qIGtleXNGb3JTZXNzaW9uV2l0aElEKGNv
bnN0IFN0cmluZyYgaWQpIGNvbnN0OwotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gcmVt
b3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpOworICAgIHZvaWQgYWRk
S2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiYmKTsKKyAgICBjb25zdCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+Pioga2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3Q7
CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gcmVtb3ZlS2V5c0Zyb21T
ZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpOwogCiBwcml2YXRlOgogICAgIE1vY2tDRE1G
YWN0b3J5KCk7CkBAIC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhbkNyZWF0
ZUluc3RhbmNlcyB7IHRydWUgfTsKICAgICBib29sIG1fc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0
ZXMgeyB0cnVlIH07CiAgICAgYm9vbCBtX3N1cHBvcnRzU2Vzc2lvbnMgeyB0cnVlIH07Ci0gICAg
SGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IG1fc2Vzc2lvbnM7Cisg
ICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBt
X3Nlc3Npb25zOwogfTsKIAogY2xhc3MgTW9ja0NETSA6IHB1YmxpYyBDRE1Qcml2YXRlIHsKQEAg
LTEyMSw4ICsxMjEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBm
aW5hbDsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7
CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25z
dCBmaW5hbDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZp
bmFsOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmlu
YWw7CiAKICAgICBXZWFrUHRyPE1vY2tDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CkBAIC0xMzksNyAr
MTM5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVt
ZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpN
b2NrOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFL
ZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxv
d1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYp
IGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3Jh
Z2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0oKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVh
dGVTZXNzaW9uKCkgZmluYWw7CkBAIC0xNTQsOCArMTU0LDggQEAgcHVibGljOgogICAgIE1vY2tD
RE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxNb2NrQ0RNSW5zdGFuY2U+JiYpOwogCiBwcml2YXRl
OgotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxi
YWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNl
bnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEs
IExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNl
VHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYm
KSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Np
b25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0
cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAppbmRleCBmYzEy
N2I3YjY3YmVhNzM0NDYzY2QyZDViMDc1NmI1OWJlYmE1OGFlLi4wNTlmM2EzODZiNmNmNWZhNzli
M2MxODk3MDE1MzEzZjdjZGI0ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgTW9ja0NvbnRlbnRGaWx0
ZXI6OmZpbmlzaGVkQWRkaW5nRGF0YSgpCiAgICAgbWF5YmVEZXRlcm1pbmVTdGF0dXMoRGVjaXNp
b25Qb2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVy
PiBNb2NrQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKK1JlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBNb2NrQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29u
c3QKIHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkpOwogICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5kYXRhKCksIG1fcmVwbGFjZW1lbnREYXRhLnNp
emUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKaW5kZXgg
NDExYTMwMDk0N2I1MzllMjZhYTZjNjRhMDA5MzI5MmU5ZmZiZTZiOS4uNjM1YWM4NGJlNzkzODQ3
YWE1NzIxM2QwMWZmYzFlNzRmNzZiNzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNw
b25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lk
IGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKQogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJs
b2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1NjcmlwdEJ1ZmZlci5jcHAKaW5kZXggNmQ0OGJkMDJkMWM5MWY3ZWVkODY0YTE2Y2Q3NTZiYjA3
N2Q2NTUyYS4uNWY4NTQ1ZWJhNWIwZTdiOGJiYWJhNWM2OTNjMmE0MzQxODhiMmJhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcm
IHN0cmluZykKIHsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAg
IG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIFNjcmlw
dEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkKQEAgLTQ2LDE0ICs0NiwxMyBAQCBTY3JpcHRC
dWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCiAgICAgcmV0dXJuIFNjcmlwdEJ1ZmZlciB7IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfTsKIH0KIAotCiBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0
cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIG1fYnVmZmVyLT5mb3JFYWNo
U2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgIG1fYnVmZmVyLmdldCgpLT5mb3JFYWNo
U2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewogICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJp
bmc6OmZyb21VVEY4KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSkpOwogICAgIH0pOwog
ICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CkBAIC02MSwxNSArNjAsMTMgQEAgU3RyaW5n
IFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogCiBib29sIFNjcmlwdEJ1ZmZlcjo6Y29u
dGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVm
ZmVyICYmIG1fYnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXItPmJlZ2luKCktPnNl
Z21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsKKyAgICByZXR1cm4gbV9idWZmZXIgJiYg
bV9idWZmZXIuZ2V0KCktPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci5nZXQoKS0+YmVnaW4o
KS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOwogfQogCiB2b2lkIFNjcmlwdEJ1
ZmZlcjo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIGlmICghbV9idWZmZXIp
Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvIHV0
ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyLT5hcHBlbmQodXRmOC5kYXRhKCksIHV0
ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5n
dGgoKSk7CiB9CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImIGEsIGNvbnN0
IFNjcmlwdEJ1ZmZlciYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2Ny
aXB0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCmluZGV4
IGIzOWQ5YzEzMDMzMDMxMWMwNGQ3ZjM3OTZiNzFhMDQzMTM0YzY2NDYuLmZkMmMxYWUyZjYzYjYw
ZDc0YzMwZDI0MmE5ODlhMGJmZDkxZGU0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRC
dWZmZXIuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBTY3JpcHRCdWZmZXIgewogcHVibGljOgog
ICAgIFNjcmlwdEJ1ZmZlcigpID0gZGVmYXVsdDsKIAotICAgIFNjcmlwdEJ1ZmZlcihSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBTY3JpcHRCdWZmZXIoUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVm
ZmVyKSkKICAgICB7CiAgICAgfQpAQCAtNDgsMTcgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKICAgICBT
dHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKLSAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KIAot
ICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZm
ZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci0+Y29weSgpKSA6IG51
bGxwdHIpOyB9CisgICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJu
IFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiht
X2J1ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29s
KCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuICFtX2J1ZmZlciB8fCAhbV9idWZmZXItPnNpemUoKTsgfQorICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzRW1wdHkoKTsgfQogCiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7CiAg
ICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlw
dC4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRG
LTggZW5jb2RlZCBzY3JpcHQuCiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVm
ZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggNzc0MTZlYzA3ZDdiNjhiMTI4ZTI5NjFl
ZGM1ZDY0MGQwNGQ0YmQ0NS4uNDA2NmZiMzUyZWI1YjA4N2Q1ZDhkNDdkODAyZmQyYzBhNmE4MGZm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmNwcApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXb3JrZXJGb250TG9h
ZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVzdChVUkwmJiB1cmwsIExvYWRlZEZyb21PcGFx
dWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKICAgICA6IG1fdXJsKFdURk1vdmUodXJs
KSkKICAgICAsIG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZShsb2FkZWRGcm9tT3BhcXVlU291cmNl
KQorICAgICwgbV9kYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsK
IH0KIApAQCAtNzUsMTIgKzc2LDIxIEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2Fk
KFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKICAgICBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHdvcmtlckdsb2JhbFNjb3BlLCBX
VEZNb3ZlKHJlcXVlc3QpLCAqdGhpcywgb3B0aW9ucyk7CiB9CiAKK2Jvb2wgV29ya2VyRm9udExv
YWRSZXF1ZXN0Ojppc1BlbmRpbmcoKSBjb25zdAoreworICAgIHJldHVybiAhbV9pc0xvYWRpbmcg
JiYgIW1fZXJyb3JPY2N1cnJlZCAmJiBtX2RhdGEtPmlzTnVsbCgpOworfQorCiBib29sIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYp
CiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJl
ZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2Fy
eShtX2RhdGEpOwotICAgICAgICBpZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2RhdGEsIG1f
dXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOworICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgaWYgKG1fZGF0YS0+Z2V0KCkpCisg
ICAgICAgICAgICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91
cygpOworICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRh
KTsKKyAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEtPmFw
cGVuZCgqY29udGlndW91c0RhdGEpOworICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1E
YXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJs
LmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKCFtX2Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEpCiAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0g
dHJ1ZTsKICAgICAgICAgfQpAQCAtMTE3LDkgKzEyNyw2IEBAIHZvaWQgV29ya2VyRm9udExvYWRS
ZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCkKICAgICBpZiAobV9lcnJvck9jY3VycmVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IW1fZGF0YSkKLSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAg
IG1fZGF0YS0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1
ZTc4MGJkZWViYzVjNmUwNGExZTg2M2M3Li4xYjNkNzg3MGYxMjhiZmU1MzhlZTZjOTg1OWNkYWFl
ODFlNDVlMmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmgKQEAgLTMwLDEzICszMCwxNCBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0
aW9ucy5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3
dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4
dDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHN0
cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Vy
bDsgfQotICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1faXNMb2Fk
aW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1fZGF0YTsgfQorICAgIGJvb2wgaXNQZW5kaW5n
KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2lzTG9hZGluZzsgfQogICAgIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fZXJyb3JPY2N1cnJlZDsgfQogCkBAIC03Niw3ICs3Nyw3IEBAIHByaXZhdGU6CiAg
ICAgRm9udExvYWRSZXF1ZXN0Q2xpZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxw
dHIgfTsKIAogICAgIFdlYWtQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0Owot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVm
ZmVyQnVpbGRlcj4gbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5oCmluZGV4IGViMjY2YjZjMDdlNjczZDkxNjZjYWNlNmIzMzkxOWQ4MGViYmYzMWMuLjA5NzU0
M2UxYjNiMzBmZjMxNDdkOTIzMmE1OGNlNGE5ZTYyZjNlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7CiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CiBjbGFzcyBTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgU2VydmljZVdvcmtlckZldGNoIHsKIGNsYXNz
IENsaWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDbGllbnQsIFdURjo6RGVzdHJ1
Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
Rm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5YTg3NWY4YWZjMGQ2MjM1NWFj
NjIyOWE2NGMxY2E0M2QxODU2NTIuLjlhOGZiMzVjYTUzNjEwNWJiNmQ2ZmM0NmVlMTIyNDU5MzNm
NzBiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsxMjcsOCBAQCBTY3JpcHRCdWZm
ZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiByZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGRpc2Fi
bGUgZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQgaGF2aW5nIHRvbyBtYW55IGZp
bGUgZGVzY3JpcHRvcnMgb3Blbj8KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlBy
aXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBTaGFyZWRCdWZmZXI6Ok1h
eVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpO
byk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8g
U2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlV
c2VGaWxlTWFwcGluZzo6Tm8pOworICAgIHJldHVybiBidWZmZXI7CiB9CiAKIHZvaWQgU1dTY3Jp
cHRTdG9yYWdlOjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdp
c3RyYXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBhYjk5
NjAzZWE1M2UyNDZiNjMzMjFmYmQ0MTQxY2M1ZTI5Y2U5NmI0Li5mY2NjMmE5ZWQyMGQ3NDdjMDlj
NjE2YjQ5OGU1MzBlZjc4YThlNTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKQEAgLTExOCw2ICsxMTgsNyBAQCBYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1fcmVzcG9uc2VDYWNoZUlzVmFs
aWQoZmFsc2UpCiAgICAgLCBtX3JlYWR5U3RhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFVOU0VO
VCkpCiAgICAgLCBtX3Jlc3BvbnNlVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVzcG9uc2VU
eXBlOjpFbXB0eVN0cmluZykpCisgICAgLCBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcihtYWtlVW5p
cXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiAgICAgLCBtX3Byb2dyZXNzRXZlbnRUaHJv
dHRsZSgqdGhpcykKICAgICAsIG1fdGltZW91dFRpbWVyKCp0aGlzLCAmWE1MSHR0cFJlcXVlc3Q6
OnRpbWVvdXRUaW1lckZpcmVkKQogewpAQCAtMjA3LDggKzIwOCw4IEBAIFJlZjxCbG9iPiBYTUxI
dHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkKIAogICAgIC8vIEZJWE1FOiBXZSBqdXN0
IHJlY2VpdmVkIHRoZSBkYXRhIGZyb20gTmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBp
dCBiYWNrLiBUaGlzIGlzIGluZWZmaWNpZW50LgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwot
ICAgIGlmIChtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcikKLSAgICAgICAgZGF0YSA9IHN0ZDo6ZXhj
aGFuZ2UobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIsIG51bGxwdHIpLT5leHRyYWN0RGF0YSgpOwor
ICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpKQorICAgICAgICBkYXRh
ID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2UoKS0+ZXh0cmFjdERhdGEoKTsKICAgICBT
dHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBl
KHJlc3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlwZTo6WWVzKSk7IC8vIHJlc3BvbnNlTUlNRVR5
cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5IGJlIGluY29ycmVjdC4KICAgICByZXR1
cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShkYXRhKSwg
bm9ybWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAgLTIxOCw4ICsyMTksNyBAQCBSZWZQdHI8QXJy
YXlCdWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKCkKICAg
ICBBU1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcik7CiAg
ICAgQVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkpOwogCi0gICAgYXV0byByZXN1bHQgPSBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50cnlDcmVhdGVB
cnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKLSAgICBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7CisgICAgYXV0byByZXN1bHQgPSAhbV9iaW5h
cnlSZXNwb25zZUJ1aWxkZXItPmlzTnVsbCgpID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRh
a2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjpjcmVhdGUobnVsbHB0
ciwgMCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQg
WE1MSHR0cFJlcXVlc3Q6OmNsZWFyUmVzcG9uc2VCdWZmZXJzKCkKICAgICBtX3Jlc3BvbnNlRW5j
b2RpbmcgPSBTdHJpbmcoKTsKICAgICBtX2NyZWF0ZWREb2N1bWVudCA9IGZhbHNlOwogICAgIG1f
cmVzcG9uc2VEb2N1bWVudCA9IG51bGxwdHI7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIg
PSBudWxscHRyOworICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5yZXNldCgpOwogICAgIG1f
cmVzcG9uc2VDYWNoZUlzVmFsaWQgPSBmYWxzZTsKIH0KIApAQCAtMTA2NSw4ICsxMDY1LDYgQEAg
dm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbikKICAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVj
b2RlKGRhdGEsIGxlbikpOwogICAgIGVsc2UgewogICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRh
dGEuCi0gICAgICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgICAgICBt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAg
IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5hcHBlbmQoZGF0YSwgbGVuKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggNzI4OTRhZjZjYzQ3ZGJhZTVlNzVjM2E4
MDc5MDllZjI4NGY2ZDU5Ny4uMTYyY2E5NWFlYjc1NDQ4OWJkNmNkOGNkYzUwODYyYzg0Nzc3YmFi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJ
bmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5oIgogI2luY2x1ZGUgPHZhcmlhbnQ+
CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEJsb2I7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERP
TUZvcm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNs
YXNzIFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBVUkxTZWFyY2hQYXJhbXM7CkBAIC0yMzcsNyAr
MjM4LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9yZXNwb25zZURvY3Vt
ZW50OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7
CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyOwogCiAgICAgU3RyaW5nQnVpbGRlciBtX3Jlc3BvbnNlQnVpbGRlcjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJv
eHkuY3BwCmluZGV4IDU3MzA2N2UzZGQwNTBmZWI3YzU3OWQwMDEwMmVlOWY2MDQ1YjUzMTMuLjMx
YzJkNzZmMmVlMWI5ZDI0OWIwMDFiN2VmZjg5MmVjMmE3NDU2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5j
cHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6flJlbW90ZUNETUlu
c3RhbmNlUHJveHkoKQogICAgIG1faW5zdGFuY2UtPmNsZWFyQ2xpZW50KCk7CiB9CiAKLXZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNl
aXZlZChjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2
b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRh
UmVjZWl2ZWQoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YSkKIHsKICAgICBpZiAoIW1fY2RtKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJv
eHkuaAppbmRleCA4ZTczZDNkOWE2NGI5OGJmYzAwOTM2Y2Q0N2M0YzI1YTkyNzlmMmM4Li4wMmM1
Y2QzN2FlNTQ4MDJmNmQwYzhkY2NjYjBiYTgwY2YzMzg4YzMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKQEAg
LTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KFdlYWtQ
dHI8UmVtb3RlQ0RNUHJveHk+JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4mJiwgVW5pcXVl
UmVmPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VJ
ZGVudGlmaWVyKTsKIAogICAgIC8vIENETUluc3RhbmNlQ2xpZW50Ci0gICAgdm9pZCB1bnJlcXVl
c3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXph
dGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAppbmRleCBlNTc2NmMyMzM0Y2Zk
Mzg5MzEwY2Q0YjIxNzIzY2FiYTM3NDJmYzdjLi5kZTgyNzNiOWNmNTAwYTRkNjZhYTE0NGVkZTAy
MDFlZWYxZWQ4NjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKQEAgLTcwLDcg
KzcwLDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUgdHlwZSwgQXRvbVN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgbV9zZXNzaW9uLT5yZXF1ZXN0TGljZW5zZSh0eXBlLCBpbml0RGF0YVR5cGUsIGluaXRE
YXRhLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21w
bGV0aW9uKV0gKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpT
dWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb24tPnJlcXVlc3RM
aWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51
bGwoKSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVl
ZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3Vj
Y2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbihXVEZNb3ZlKG1lc3NhZ2UpLCBz
ZXNzaW9uSWQsIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5j
ZVNlc3Npb246OlN1Y2NlZWRlZCk7CiAgICAgfSk7CiB9CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9p
ZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkLCBDbG9zZVMKIAogdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBl
IHR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJiBjb21wbGV0aW9uKQogewotICAgIG1f
c2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlLCBbY29tcGxldGlvbiA9
IFdURk1vdmUoY29tcGxldGlvbildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
ciYmIGtleVN0YXR1c2VzLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGV4cGly
ZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRl
ZCkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQs
IHR5cGUsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vz
c2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIHN0ZDo6b3B0aW9uYWw8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNl
U2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVu
Y2U7CiAgICAgICAgIGlmIChleHBpcmVkU2Vzc2lvbnNEYXRhKQogICAgICAgICAgICAgZXhwaXJl
ZFNlc3Npb25EYXRhUmVmZXJlbmNlID0gSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoKmV4
cGlyZWRTZXNzaW9uc0RhdGEpKTsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJiBr
ZXlTdGF0dQogICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlVwZGF0ZUtleVN0YXR1c2VzKFdU
Rk1vdmUoa2V5U3RhdHVzZXMpKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBpZiAoIW1fY2RtKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCmluZGV4IDhhNjFmOWQ1ZmFiYzg0ODZhN2EwZTg2
MGY0YzYzMTJjMGI0NDU1MTQuLmZlNzMwOTcxMzFlMGJiMjBhNTAwMWUxNTAxNjAyZDY1MTg2YjMw
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZh
dGU6CiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQKICAgICB2b2lkIHVwZGF0ZUtl
eVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKSBmaW5hbDsKLSAgICB2b2lkIHNlbmRNZXNzYWdl
KFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIG1l
c3NhZ2UpIGZpbmFsOworICAgIHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5
cGUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFs
OwogICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBQ
bGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBmaW5hbCB7IHJldHVybiBtX2Rpc3BsYXlJRDsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5
LmNwcAppbmRleCA5YWIzNTc1ZjRjM2I1NTk1NTViOWI4N2IyMzM3MWIxYjFhNjZkYzE3Li5mN2Ni
NmE2M2ViOTMzYWJkNGQ0NTNhMjJhYjI5NGYxMzAzMjMyYjA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKQEAgLTYzLDEyICs2Mywx
MiBAQCBSZW1vdGVDRE1Qcm94eTo6UmVtb3RlQ0RNUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0
b3J5UHJveHk+JiYgZmFjdG9yeSwgc3RkOjp1bgogCiBSZW1vdGVDRE1Qcm94eTo6flJlbW90ZUNE
TVByb3h5KCkgPSBkZWZhdWx0OwogCi1ib29sIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK2Jv
b2wgUmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlw
ZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICByZXR1cm4gbV9w
cml2YXRlLT5zdXBwb3J0c0luaXREYXRhKHR5cGUsIGRhdGEpOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZm
ZXImIHJlc3BvbnNlKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFJlbW90ZUNETVBy
b3h5OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3Bv
bnNlKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2Up
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHku
aAppbmRleCA2OTI0ZTc0ZTNmNTAxMWJlMjE1YmU0YmQ5NmIyMzQ4MjY0NzBmNDIzLi4zYjY2Yzc3
NTc4NzA2OWU5NzZlZTA2NGY5NmZmMDdjMGY3MTJhOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaApAQCAtMzYsNyArMzYsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgQ0RN
UmVxdWlyZW1lbnQgOiB1aW50OF90OwogZW51bSBjbGFzcyBDRE1TZXNzaW9uVHlwZSA6IHVpbnQ4
X3Q7CiBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKQEAgLTU4LDggKzU4LDggQEAg
cHVibGljOgogCiAgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5KiBmYWN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9mYWN0b3J5LmdldCgpOyB9CiAKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJiByZXNwb25zZSk7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpOwogICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCmluZGV4IGUyY2QwNWQ3Y2M3NGYyMGVjNjlm
YWRmZTNlZTA4NTc1OTJhZDg3OWIuLmRlOGY2ZGY1NWE2ZTFmYThiZTk2NmY5NDFlMDdmZTJmNWM1
MDIxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1Qcm94eS5oCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5LmgKaW5kZXggZjE0YzYyN2Y2NTkzZTFhODc4ZDBmNDU5OTJiM2M0MWIyMjJj
N2YwMC4uMTU0NmJkZmRmZGNmMDkxMDg3ODk0NGYzNDA3OTY3YTdhYjM4YmY4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHkuaApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgTGVnYWN5Q0RNOwogY2xhc3MgTGVnYWN5Q0RNU2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBJUEMg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2UuY3BwCmluZGV4IGM0NWU1MjU1ZDY3YjUyYzdhZTEwNDQ5OTg4Y2UwMTkwYzdmZmI1
MzguLjYxN2Y0NzY4OTU2NDJkZWMyMzI1NGI1NDBlZTgxOTExYWM0YTJkZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5j
cHAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhU2VudCh1
aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2UKICAgICAgICAgbV9j
bGllbnQtPmRhdGFTZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9
CiAKLXZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKG1fY2xpZW50KQogICAg
ICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5o
CmluZGV4IGQxM2QyNWY2NWYwMjI0YTZjNzY3ZjY5YTRkNDE5Y2QwNTNiYjc5NWQuLjViN2E3ZTJh
NzQyNDQzMmQ4NmNiMjhhMWJlNzE3MThhMTY3Mzc1ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaApAQCAtMzQsNyArMzQs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVz
cG9uc2VSZWNlaXZlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4m
Jik7CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZvaWQgZGF0YVNlbnQodWlu
dDY0X3QsIHVpbnQ2NF90KTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA3ZTU3MmIz
YTc0YTIwMjdlNzRjYWE3NjcyZTUyZGEwYWY4MzQyMDcyLi5lODNmOTE0M2QyMGE3MmUyYmU0ZmZj
YmZlZDEzYjBiYjRkZDMxZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTEwNyw3ICsxMDcsOCBAQCB2
b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJl
bW90ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERh
dGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dyaXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0
byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8qIHBvaW50ZXIgPSBkYXRhID8gZGF0
YS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+KCk7CisgICAg
ICAgIGF1dG8qIHBvaW50ZXIgPSBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRh
dGEgPyBkYXRhLT5zaXplKCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9h
ZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25s
b2FkLmgKaW5kZXggNTJjYzVkYTEyMWEyZmI1OWQ4Y2YwNTkzYjY4NTA5ZmQ2NTVjMGNkYy4uNzFm
ZDAyMjI5YmJiMWM1NzMyNmZkZmNmZTI2YzExZjc2MWFiY2Y3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgK
QEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZv
ckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1VzZXJG
b3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJl
Y3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRlOwotICAgIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OworICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGUgeyB9Owog
ICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggM2YzOWViMzJmMWFhODA3Njc4
NWRhNzllZTExZGFkOGYwYzMyNmI3OS4uZDg5MjBlOTg3NjRmZDliNjRiOWNkZGM2MGExZDg0ZDYx
OWIyZDQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZv
aWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9u
OjpVc2UpOwogfQogCi12b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2
ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikKIHsKICAgICBDT1JTX0NIRUNLRVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVE
YXRhIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAppbmRleCBiYmIxNDYyYTMxNjFlMmZjZTllYTU3
ODQ0YjE5YjkzZTYxOWM4MWIwLi5lMTFiZjU2MzE5MDdhZTQ3MzM2ZWY4NWE1ZDIyZTg4MzU3NDY1
MWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRs
ZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBs
ZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
Q29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEo
dWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2Vu
ZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAppbmRleCBkNjAxOGY2MTM4M2FlM2E1
MWU5ZDQ3MjJjZjZhNjBlMmQ4Yjg3YTdkLi5lMDQ5ZTViMTJkZGU1ZmU1MWI0Njk1NTI4OWE3YTdm
Njk5ODJhZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtEYXRhVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxl
bmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lU
TFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRl
ZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtM
b2FkTWV0cmljcyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3Qg
dG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB3YXNCbG9ja2VkKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAppbmRleCBiYWMwMjJhYjQ1NDMwZjY1MWIxODlhYzAx
MjA3YTA2MDYwOGMxNjcxLi43OTc1ZDQxYmFkODkxNWZlZWRiZGFiMTU1NGU4MWUxZGIyMDMwZjgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcApAQCAt
MjU2LDcgKzI1Niw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0CiAgICAgbV9jbGllbnQuZ2V0
KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCBiZSB0aGUgZW5jb2RlZCBkYXRhIGxlbmd0aCwgbm90IHRoZSBkZWNvZGVkIGRh
dGEgbGVuZ3RoLgogICAgIGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCmluZGV4IGMzNzczYzk4Nzg1NTNjZTUzNGQw
NTRhYmZmZGRlYmIyOWVlMDg0ZDIuLmVlNWViMDA2YWEzNzliNzhmY2JjMGJkMTc0ZTMyYmQ2Mzlm
OTVlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKQEAg
LTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0
aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNl
aXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0
ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3Rp
YXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2
NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2Vk
KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2xpZW50LmgKaW5kZXggMGE1ZjY2YmQ5NjdlYzlmZGY2NjRlNTJlNWFmMzk0ZTQ4ZWNlMWY3Yi4u
MzQ4Y2ZmYjllOGUyNWVlODNiYmIzOWEwMmNkM2NmNmQyODU0ZDM5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaApAQCAtMzIsNyArMzIs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7
CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogZW51bSBjbGFzcyBQb2xpY3lBY3Rpb24gOiB1aW50OF90
OwogfQogCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2Vu
ZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRv
dGFsQnl0ZXNUb0JlU2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0
ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKCkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGU1MGNmNGFiYmU1NjRlNGNhM2Zi
NzI2Y2FhOWQ1NjljNTRiMDlkNzIuLjBlNWViNWFkYzAxMmYxZjJlYTc2NmZjYzFhNDU1MzlmZDVk
ODljMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg3LDE0ICs4NywxNCBAQCBzdHJ1Y3QgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRhIHsKICAgICBSZXNvdXJjZUVycm9yIGVy
cm9yOwogfTsKIAotc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRhJiBkYXRhLCBjb25zdCBTaGFy
ZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQorc3Rh
dGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpTeW5jaHJvbm91c0xvYWREYXRhJiBkYXRhLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBidWZmZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBB
U1NFUlQoZGF0YS5kZWxheWVkUmVwbHkpOwogICAgIEFTU0VSVCghZGF0YS5yZXNwb25zZS5pc051
bGwoKSB8fCAhZGF0YS5lcnJvci5pc051bGwoKSk7CiAKICAgICBWZWN0b3I8dWludDhfdD4gcmVz
cG9uc2VCdWZmZXI7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAgICAgICAg
cmVzcG9uc2VCdWZmZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Cisg
ICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOwogCiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXByZWNhdGVk
TmV0d29ya0xvYWRNZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0cmlj
cykpOwogCkBAIC0xMDUsOSArMTA1LDExIEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hy
b25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiBjb25uZWN0aW9uLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBl
cmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseSYmIHN5bmNocm9ub3VzUmVwbHkpCiAg
ICAgOiBtX3BhcmFtZXRlcnMgeyBXVEZNb3ZlKHBhcmFtZXRlcnMpIH0KICAgICAsIG1fY29ubmVj
dGlvbiB7IGNvbm5lY3Rpb24gfQorICAgICwgbV9idWZmZXJlZERhdGEgeyBtYWtlVW5pcXVlUmVm
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9maWxlUmVmZXJlbmNlcyhjb25uZWN0
aW9uLnJlc29sdmVCbG9iUmVmZXJlbmNlcyhtX3BhcmFtZXRlcnMpKQogICAgICwgbV9pc0FsbG93
ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyB7IG1fcGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFs
UG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRp
YWxzIH0KICAgICAsIG1fYnVmZmVyaW5nVGltZXIgeyAqdGhpcywgJk5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCB9CisgICAgLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
IHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fc2hvdWxk
Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKG1fY29ubmVjdGlvbi0+Y2FwdHVyZUV4dHJh
TmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZCgpKQogICAgICwgbV9yZXNvdXJjZUxvYWRJRCB7IE5l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH0KIHsKQEAgLTMwNiwxMCAr
MzA4LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgICAgIGNvbnN1bWVTYW5kYm94
RXh0ZW5zaW9ucygpOwogCiAgICAgICAgIGlmIChpc1N5bmNocm9ub3VzKCkgfHwgbV9wYXJhbWV0
ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID4gMF9zKQotICAgICAgICAgICAgbV9idWZmZXJlZERh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGEt
PmVtcHR5KCk7CiAKICAgICAgICAgaWYgKGNhblVzZUNhY2hlKHJlcXVlc3QpKQotICAgICAgICAg
ICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAg
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5lbXB0eSgpOwogICAgIH0KIAogICAgIE5l
dHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbV9wYXJhbWV0ZXJzOwpAQCAtNzMwLDIw
ICs3MzIsMjAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICAgICAgICAgIHx8IGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCAiYXBwbGljYXRpb24vb2N0ZXQtc3Ry
ZWFtIik7CiAgICAgfTsKIAotICAgIGlmICghbV9idWZmZXJlZERhdGEKKyAgICBpZiAobV9idWZm
ZXJlZERhdGEtPmlzTnVsbCgpCiAgICAgICAgICYmIG1fcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50
TGVuZ3RoKCkgPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KDEgKiBNQikKICAgICAgICAgJiYgaXNG
ZXRjaE9yWEhSKHJlc291cmNlTG9hZEluZm8pCiAgICAgICAgICYmIGlzTWVkaWFNSU1FVHlwZSht
X3Jlc3BvbnNlLm1pbWVUeXBlKCkpKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAg
ICAgIG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA9IFdlYkxvYWRlclN0cmF0ZWd5
OjptZWRpYU1heGltdW1CdWZmZXJpbmdUaW1lOwogICAgIH0KIAogICAgIC8vIEZvciBtdWx0aXBh
cnQveC1taXhlZC1yZXBsYWNlIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jIGdldHMgY2FsbGVkIG11
bHRpcGxlIHRpbWVzIGFuZCBidWZmZXJpbmcgd291bGQgcmVxdWlyZSBzcGVjaWFsIGhhbmRsaW5n
LgogICAgIGlmICghaXNTeW5jaHJvbm91cygpICYmIG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkK
LSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0
YS0+cmVzZXQoKTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLT5yZXNldCgpOwogCiAgICAgaWYgKG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24p
IHsKICAgICAgICAgYm9vbCB2YWxpZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3Rh
dHVzQ29kZSgpID09IDMwNDsgLy8gMzA0IE5vdCBNb2RpZmllZApAQCAtODU4LDcgKzg2MCw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kRGlkUmVjZWl2ZVJlc3BvbnNlUG90ZW50
aWFsbHlJbk5ld0Jyb3dzaW5nQ29udGV4CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKCFtX251bUJ5dGVzUmVj
ZWl2ZWQpCiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZUJ1ZmZlcjogU3Rh
cnRlZCByZWNlaXZpbmcgZGF0YSAocmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aD0lZCkiLCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKQEAgLTg2NiwyMCArODY4LDIwIEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBpbnQgcmVwCiAKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwog
Ci0gICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAoIW1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0
aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMgaW4g
dGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9
IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwogICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JD
YWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkK
ICAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVs
bHB0cjsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7CiAgICAg
fQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkKICAgICAgICAgcmV0dXJuOwogICAg
IC8vIEZJWE1FOiBBdCBsZWFzdCBvbiBPUyBYIFlvc2VtaXRlIHdlIGFsd2F5cyBnZXQgLTEgZnJv
bSB0aGUgcmVzb3VyY2UgaGFuZGxlLgogICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0g
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCi0gICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7CisgICAgaWYg
KCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpIHsKICAgICAgICAgbV9idWZmZXJlZERhdGEtPmFw
cGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVu
Z3RoICs9IGVuY29kZWREYXRhTGVuZ3RoOwogICAgICAgICBzdGFydEJ1ZmZlcmluZ1RpbWVySWZO
ZWVkZWQoKTsKQEAgLTkwOSwxMSArOTExLDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAj
ZW5kaWYKIAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0gICAgICAgIHNlbmRSZXBseVRvU3lu
Y2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLmdl
dCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3Vz
UmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS0+Z2V0KCkuZ2V0
KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2J1ZmZl
cmVkRGF0YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1f
YnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGEg
cmVhbCB2YWx1ZSBvciByZW1vdmUgdGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUuCi0gICAg
ICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YSwgLTEpOworICAgICAgICAgICAgc2Vu
ZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEtPmdldCgpLCAtMSk7CiAgICAgICAgIH0KICAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChu
ZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU2LDE5ICsxMjU4LDE5IEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKQogCiB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiB7Ci0gICAg
QVNTRVJUKG1fYnVmZmVyZWREYXRhKTsKKyAgICBBU1NFUlQoIW1fYnVmZmVyZWREYXRhLT5pc051
bGwoKSk7CiAgICAgQVNTRVJUKG1fbmV0d29ya0xvYWQpOwogCiAgICAgaWYgKG1fYnVmZmVyZWRE
YXRhLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1
ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVz
b3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLT5nZXQoKSB9LCBt
X2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZlcmVkRGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAg
ICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKLXZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3Qg
ZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZl
cihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0
aCkKIHsKICAgICBBU1NFUlQoIWlzU3luY2hyb25vdXMoKSk7CiAKQEAgLTEyODEsNyArMTI4Myw3
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAg
ICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9y
aW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgcmVxdWVzdCBpcyBub3QgZWxpZ2libGUiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAg
ICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+aXNOdWxsKCkpIHsKICAgICAgICAgTE9BREVS
X1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogTm90IHN0b3JpbmcgY2FjaGUgZW50
cnkgYmVjYXVzZSBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIGlzIG51bGwiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTEyODksMTIgKzEyOTEsMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZl
dGNoKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdv
cmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKSB7CiAgICAgICAgICAgICBM
T0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGlu
IHByZWZldGNoIGNhY2hlIik7Ci0gICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCku
c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jl
c3BvbnNlKSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBz
ZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVl
c3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+
dGFrZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIExPQURFUl9S
RUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBk
aXNrIGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJl
cXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xv
YWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgeworICAgIG1f
Y2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2Us
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1d
KGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VS
Q0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVs
bCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDIzNGRhYjViZWVhNWI2NDcz
MDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uOTg0NDI0YTMwNjgxYTM2MGZjNjBjOWU3YTlkZDRlNmJi
NDI2ZGU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xh
dGlvbkV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC00Niw2ICs0Nyw4IEBAIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNz
IEZvcm1EYXRhOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTE0LDcgKzExNyw3IEBAIHB1
YmxpYzoKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsgfQogICAg
IHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBm
aW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lk
IGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAg
ICB2b2lkIGRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSBmaW5hbDsKQEAgLTE5Miw3
ICsxOTUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVk
ZWQoKTsKICAgICB2b2lkIGJ1ZmZlcmluZ1RpbWVyRmlyZWQoKTsKLSAgICB2b2lkIHNlbmRCdWZm
ZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAg
ICB2b2lkIHNlbmRCdWZmZXIoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIHNpemVf
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAKICAgICB2b2lkIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9u
cygpOwogICAgIHZvaWQgaW52YWxpZGF0ZVNhbmRib3hFeHRlbnNpb25zKCk7CkBAIC0yMjUsNyAr
MjI4LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9u
c2U7CiAKICAgICBzaXplX3QgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCB7IDAgfTsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsKKyAgICBV
bmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGE7CiAg
ICAgdW5zaWduZWQgbV9yZWRpcmVjdENvdW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFN5bmNocm9ub3VzTG9hZERhdGE+IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsy
NDMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsK
ICAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFVuaXF1ZVJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JW
YWxpZGF0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2Nh
Y2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRpbmdDb250
aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXggMTE0ODUzZTQ1YjcyNTMzNjRj
NzQ3YTcxY2IyYjVhYjhjYzM4ZWZkNS4uMWFmMWUwOGUzYzQ0MWUyNGYzMDA2NWU5ZjIwNzc2ZTZm
OWZjMzNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAg
LTE3Miw3ICsxNzIsNyBAQCB2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VAogICAgIGRpZEZpbmlzaCh7
IH0sIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNo
YXJlZEJ1ZmZlcj4mJikKK3ZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKQogewogICAgIFBJTkdfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVE
YXRhIik7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1BpbmdMb2FkLmgKaW5kZXggMTllYzhjZWI5MmUzYzhhMDU2ZjQ5MjczNjYwY2ZmZjkyNjQz
NDFkMS4uYWIyOWEwYjFhYzg0NjZiMGVkNjFlZjU4ZWY0YzIyMGFiYWI2ZWJlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9u
SGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdl
Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5k
RGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVk
VG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKaW5kZXggNDU1NzgyZDU0
YTJlYTliZWUxODY1MGUxYWZkMWNmN2IyY2U5OGM0OS4uMTdkNDc5MDdhM2Y2ZWU1MmJlNjUwMWQx
ZGFiMGNhNjA3NTFkNmIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9QcmVjb25uZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cmVjb25uZWN0VGFzay5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBQcmVjb25uZWN0VGFzazo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VD
b20KICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiB9CiAKLXZv
aWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAppbmRleCAxYzFmZjE2
NDcxMTFjNmZhODQ5NGFmNWNmMGM3YmJlYWExYjI2NTAzLi44NTgwOGUxMjFiNjhjYThiNzNlMjUx
OGQxOTNhYjM5NTgxZWFkMWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByZWNvbm5lY3RUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cmVjb25uZWN0VGFzay5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRT
ZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcg
dG90YWxCeXRlc1RvQmVTZW50KSBmaW5hbDsKICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJl
cXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0
UmVzcG9uc2UpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25z
dCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxM
b2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5kZXgg
NzFlMGNmNmM2ZGM3YmVhNTIyYzkwNjAwNTU1ZjU3MjE2MWMzYzJmNC4uODE5NjYzMDIwYzY5NWNl
MGM2YWJhOTk5YzY3NWFhYjQyODJjN2ZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCkBAIC0xNzQsMTAgKzE3NCwxMCBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VSZXNwb25zZSYmIHJlcwogICAgICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFNl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQg
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkKIHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2spCi0gICAgICAgIG1fYm9keUNhbGxiYWNr
KFdURk1vdmUoYnVmZmVyKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIG1f
Ym9keUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSwgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJp
Y3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRl
ci5oCmluZGV4IDFlNzhjMmNlZmExNTQ4NDEwNDA2MGYzYjE5ZGM1MGU2Y2I4ZjFlYjQuLmVlMWJj
OGI3ZDZjYmZmYzMzNDFkNjczZmI3MjQyMjM4ZjY3MTdmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlv
blByZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCkBAIC02Nyw3ICs2Nyw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRS
ZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVj
dFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWls
TG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgYm9vbCBz
aG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljczsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5kZXggOGVlMTEyYTlk
ZjgyODk1NGMxNjIzZmZmMjJjMmEyMGZkOGUyZmU3ZC4uN2EyNjIyMTlkZTc4YjIzNWQxMjVhOTJi
NmUyMzZkMzMyNjJmN2EyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgUmVzb3VyY2VFcnJvciBTZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6cHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG8KICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fZGVjb2Rl
cikgewogICAgICAgICBpZiAoIW1fcmVzcG9uc2VFbmNvZGluZy5pc0VtcHR5KCkpCkBAIC0xODcs
NyArMTg3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwKICAgICB9CiAKICAgICBpZiAoYXV0
byBzaXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29k
ZXItPmRlY29kZShidWZmZXItPmRhdGEoKSwgc2l6ZSkpOworICAgICAgICBtX3NjcmlwdC5hcHBl
bmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNp
emUpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAppbmRleCAxOGY1NDY5MWYzN2My
YmFiYmM4YzFhM2JjMDk0MzcwZTliMjllYjcxLi40NGZjMDY4NWZhMGZlZGM4NzQyMTkxNmU5MTNh
Njc0YjFjMGZkYmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXIuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2Vk
VG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkg
ZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggMDQ3NzY4MzZmOTk5MDkzOTEwYjM5OWQ3NTUz
ODU1ZDVkM2YxZmY0ZS4uZGQzMDVhZjI5NzY2MWU0NzZjNDk2NzdkZjU3MjFlZmQxZWM5MzJmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmNwcApAQCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgQ2FjaGU6OmNvbXBsZXRlUmV0cmlldmUo
UmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIsIHN0ZDo6dW5pcXVlX3B0CiAgICAg
aGFuZGxlcihXVEZNb3ZlKGVudHJ5KSwgaW5mbyk7CiB9CiAgICAgCi1zdGQ6OnVuaXF1ZV9wdHI8
RW50cnk+IENhY2hlOjptYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEpCitzdGQ6OnVuaXF1ZV9wdHI8
RW50cnk+IENhY2hlOjptYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRy
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhKQogewogICAg
IHJldHVybiBtYWtlVW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNl
LCBXVEZNb3ZlKHJlc3BvbnNlRGF0YSksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhl
YWRlcnMobmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25JRCksIHJlcXVl
c3QsIHJlc3BvbnNlKSk7CiB9CkBAIC00NjQsNyArNDY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5PiBDYWNoZTo6bWFrZVJlZGlyZWN0RW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JgogICAgIHJldHVybiBtYWtlVW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCks
IHJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVz
dEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25JRCksIHJl
cXVlc3QsIHJlc3BvbnNlKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnN0
b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgcmVzcG9uc2VEYXRhLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3N0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHJlc3BvbnNlRGF0YSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IDE5OWYwY2Zi
NzMyNTQzYzVmZWFmNGZlMjMwMWU2YTFjMTJmODhmZTguLmVkMDRlYmNhMGIzNmYzZjljNGMwZTdi
YWM3MTMzNmI5ZTk2YzM1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtNDMsNyArNDMsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgTG93UG93ZXJNb2RlTm90aWZpZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE2Niw3ICsxNjYsNyBAQCBwdWJsaWM6CiAgICAgfTsK
ICAgICB1c2luZyBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyID0gRnVuY3Rpb248dm9pZChzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+LCBjb25zdCBSZXRyaWV2ZUluZm8mKT47CiAgICAgdm9pZCByZXRy
aWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFtZUlE
Jiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFJldHJpZXZlQ29t
cGxldGlvbkhhbmRsZXImJik7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9yZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgRnVuY3Rpb248dm9pZChNYXBw
ZWRCb2R5Jik+JiYgPSBudWxscHRyKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3Jl
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgRnVu
Y3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgPSBudWxscHRyKTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+IHN0b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heEFnZUNh
cCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiB1cGRhdGUoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgRW50cnkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiB2YWxpZGF0aW5nUmVzcG9uc2UpOwogCkBAIC0xODUsNyArMTg1LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcmV0cmlldmVEYXRhKGNvbnN0IERhdGFLZXkmLCBGdW5jdGlvbjx2b2lkKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpPik7CiAgICAgdm9pZCBzdG9yZURhdGEoY29uc3QgRGF0YUtleSYs
ICBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxFbnRyeT4gbWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IG1ha2VFbnRyeShjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gbWFrZVJlZGlyZWN0RW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KTsKIAogICAgIHZvaWQgZHVtcENvbnRlbnRz
VG9GaWxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCmluZGV4IGJhMzlkOWUyYzI2YTAxYTkyNmIxMWFhNzk5
ZTM2NjJmYzZhZTA1NDkuLjc2MTA3OGRlYTA5M2MwNDU1NWJlOThiMDUxNzNlMzQxNTA2N2E4NTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRW50cnkuY3BwCkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsK
IG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogCi1FbnRyeTo6RW50cnkoY29uc3QgS2V5JiBrZXks
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcs
IFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpCitFbnRyeTo6RW50cnkoY29uc3QgS2V5
JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKQogICAgIDog
bV9rZXkoa2V5KQogICAgICwgbV90aW1lU3RhbXAoV2FsbFRpbWU6Om5vdygpKQogICAgICwgbV9y
ZXNwb25zZShyZXNwb25zZSkKQEAgLTEwMSw4ICsxMDEsMTAgQEAgU3RvcmFnZTo6UmVjb3JkIEVu
dHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAgICAgRGF0YSBoZWFkZXIoZW5j
b2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogICAgIERhdGEgYm9keTsKLSAg
ICBpZiAobV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IG1fYnVmZmVyLT5kYXRhKCksIG1fYnVm
ZmVyLT5zaXplKCkgfTsKKyAgICBpZiAobV9idWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXIgPSBt
X2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyKj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVmZmVy
LT5zaXplKCkgfTsKKyAgICB9CiAKICAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhl
YWRlciwgYm9keSwgeyB9IH07CiB9CkBAIC0xOTQsNyArMTk2LDcgQEAgdm9pZCBFbnRyeTo6aW5p
dGlhbGl6ZUJ1ZmZlckZyb21TdG9yYWdlUmVjb3JkKCkgY29uc3QKICAgICBtX2J1ZmZlciA9IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LmRh
dGEoKSwgbV9zb3VyY2VTdG9yYWdlUmVjb3JkLmJvZHkuc2l6ZSgpKTsKIH0KIAotV2ViQ29yZTo6
U2hhcmVkQnVmZmVyKiBFbnRyeTo6YnVmZmVyKCkgY29uc3QKK1dlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIEVudHJ5OjpidWZmZXIoKSBjb25zdAogewogICAgIGlmICghbV9idWZmZXIp
CiAgICAgICAgIGluaXRpYWxpemVCdWZmZXJGcm9tU3RvcmFnZVJlY29yZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5o
CmluZGV4IDk2OTE1YzM4MDFjMzdkZGFjM2U4ZTYwMzIxZjg4YzIyMjljZDU5YTAuLjljMDQyMGQ0
NGE4MTU4ZGZjNWIyMWNmMTg4MjA0Y2YzYTkxNmI0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKQEAgLTM1LDcg
KzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBO
ZXR3b3JrQ2FjaGUgewogY2xhc3MgRW50cnkgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBWZWN0b3I8
c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycyk7CisgICAg
RW50cnkoY29uc3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBWZWN0b3I8c3RkOjpw
YWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycyk7CiAgICAgRW50cnko
Y29uc3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBWZWN0b3I8c3RkOjpw
YWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycyk7CiAgICAgZXhwbGlj
aXQgRW50cnkoY29uc3QgU3RvcmFnZTo6UmVjb3JkJik7CiAgICAgRW50cnkoY29uc3QgRW50cnkm
KTsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAgIGNv
bnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFk
ZXJzKCkgY29uc3QgeyByZXR1cm4gbV92YXJ5aW5nUmVxdWVzdEhlYWRlcnM7IH0KIAotICAgIFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3Q7CiAgICAgY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+JiByZWRpcmVjdFJlcXVlc3QoKSBjb25zdCB7IHJl
dHVybiBtX3JlZGlyZWN0UmVxdWVzdDsgfQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJD
RSkKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmlu
ZywgU3RyaW5nPj4gbV92YXJ5aW5nUmVxdWVzdEhlYWRlcnM7CiAKICAgICBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gbV9yZWRpcmVjdFJlcXVlc3Q7Ci0gICAgbXV0YWJs
ZSBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBtdXRhYmxlIFJl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICNpZiBFTkFC
TEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgIG11dGFibGUgU2hhcmVhYmxlUmVzb3VyY2U6Okhh
bmRsZSBtX3NoYXJlYWJsZVJlc291cmNlSGFuZGxlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJmZDQwODAzMTA1NDY4MzUzNmVh
MGRjODE5My4uNDFkODIzNTAyNDc0N2I2ZmM0YTNhYzU0OGUxMzM0ZWQ2Y2I1ZWY3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtNDYsNyArNDYsNyBAQCBTcGVjdWxh
dGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZChDYWNoZSYgY2FjaGUsIGNvbnN0IEdsb2JhbEZyYW1l
SUQmIGdsb2JhbEZyYW1lSQogICAgIDogbV9jYWNoZShjYWNoZSkKICAgICAsIG1fY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgLCBtX29yaWdpbmFsUmVx
dWVzdChyZXF1ZXN0KQotICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNoZShTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpKQorICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNoZShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKSkKICAgICAsIG1fY2FjaGVFbnRyeShXVEZNb3ZlKGNhY2hlRW50cnlG
b3JWYWxpZGF0aW9uKSkKIHsKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeSB8fCBtX2NhY2hlRW50
cnktPm5lZWRzVmFsaWRhdGlvbigpKTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFNwZWN1bGF0
aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJl
c3BvbnNlLCBSZQogICAgIG1fcmVzcG9uc2UgPSByZWNlaXZlZFJlc3BvbnNlOwogCiAgICAgaWYg
KG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZSA9IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKIAog
ICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKICAgICBpZiAodmFsaWRhdGlvblN1Y2NlZWRl
ZCAmJiBtX2NhY2hlRW50cnkpCkBAIC0xMjAsMTcgKzEyMCwxNyBAQCB2b2lkIFNwZWN1bGF0aXZl
TG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3Bv
bnNlLCBSZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6VXNlKTsKIH0KIAot
dm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTcGVjdWxhdGl2
ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1fY2Fj
aGVFbnRyeSk7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAv
LyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YS4KICAgICAg
ICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSAxMCAqIDEwMjQgKiAxMDI0
OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5z
aXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAobV9idWZmZXJl
ZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZm
ZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVy
LmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7
CiAgICAgfQogfQogCkBAIC0xMzksMTAgKzEzOSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQogICAg
IGlmIChtX2RpZENvbXBsZXRlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2NhY2hlRW50
cnkgJiYgbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewotICAgICAgICBtX2NhY2hlRW50cnkgPSBt
X2NhY2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERh
dGFGb3JDYWNoZS5jb3B5UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CisgICAgICAg
IG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3Bv
bnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmdldCgpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7
IH0pOwogICAgICAgICAvLyBDcmVhdGUgYSBzeW50aGV0aWMgY2FjaGUgZW50cnkgaWYgd2UgY2Fu
J3Qgc3RvcmUuCiAgICAgICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIGlzU3RhdHVzQ29kZUNhY2hl
YWJsZUJ5RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpKQotICAgICAgICAgICAg
bV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jl
c3BvbnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIG1f
Y2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNw
b25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwogICAgIH0KIAogICAgIGRpZENv
bXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRleCBjMGUxZTE0YjJh
YzQ2MDM1OGY4MTQwN2NkNzBjNDA5MDUyYWY4ZWZlLi4xYjg0M2RiN2VjMjcwZGI5ZGFiOWU4YTI1
ZjJhNDhhOGVjYWUyYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKQEAgLTYx
LDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRl
bnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHdpbGxTZW5k
UmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKIApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAgICBib29sIG1fZGlkQ29t
cGxldGUgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCmluZGV4IDVlMmUwMmUyZmJhMGI0YTBjMDNiNWQz
ZTY2Yjk3ZjdiY2NjNzk1OGIuLjMxOTliZmYzMTFiNmMzZWVmYmU5NTBiNDVlNmIwYTk2ZTMyNzc3
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0
Y2hDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVm
ZXRjaENhY2hlLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
UHJlZmV0Y2hDYWNoZTo6RW50cnk6OkVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitQcmVmZXRj
aENhY2hlOjpFbnRyeTo6RW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAg
OiByZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSksIGJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7
CiB9CkBAIC03Miw3ICs3Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQcmVmZXRjaENhY2hlOjpFbnRy
eT4gUHJlZmV0Y2hDYWNoZTo6dGFrZShjb25zdCBVUkwmIHVybCkKIAogc3RhdGljIGNvbnN0IFNl
Y29uZHMgZXhwaXJhdGlvblRpbWVvdXQgeyA1X3MgfTsKIAotdm9pZCBQcmVmZXRjaENhY2hlOjpz
dG9yZShjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFBy
ZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25QcmVmZXRjaGVzKQogICAgICAg
ICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gbWFrZVVuaXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNo
Q2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNo
ZS5oCmluZGV4IGEyNTE1MjBiMzFlYWM5MjFjMjJkMzExNTFkNmQyMzFhMWJlZDEzOGMuLjUyYzBi
MTBmY2M2ZDVhNmRlMTE0NDdlN2U0ZTgyMmRmOGY4NDFjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCkBAIC00NywxOCArNDcs
MTggQEAgcHVibGljOgogCiAgICAgc3RydWN0IEVudHJ5IHsKICAgICAgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgICAgICBFbnRyeShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKTsKICAgICAgICAgRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAKLSAgICAgICAgUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gcmVsZWFzZUJ1ZmZlcigpIHsgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVs
bCgpOyB9CisgICAgICAgIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZWxl
YXNlQnVmZmVyKCkgeyByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7IH0KIAogICAgICAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgICAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZWRpcmVjdFJlcXVlc3Q7CiAgICAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gdGFrZShjb25zdCBVUkwmKTsKLSAgICB2b2lkIHN0b3JlKGNvbnN0IFVSTCYsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7Cisg
ICAgdm9pZCBzdG9yZShjb25zdCBVUkwmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB2b2lkIHN0b3Jl
UmVkaXJlY3QoY29uc3QgVVJMJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKaW5kZXgg
YjlhYjBkZWViYjlmOTI3YzczNzQyZTg2YTBiZTdmOTcxNjBiZDZmYi4uNDE2NjhhNWIxY2Q3Mzg2
OTY3YjhmZDk3M2U5NjczMmVjYTkwN2VkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaApAQCAtNjIsNyAr
NjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWROZWdvdGlhdGVNb2Rlcm5UTFMoY29uc3QgVVJM
Jik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVk
TGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICB2
b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIm
Jik7CiAgICAgdm9pZCB0cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKERvd25sb2Fk
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCBlNzgwZDZjMWMzY2QxZWIyYzJmZjVhMGM1NjRh
MGU0ZDg4YjdlYTVkLi4zMDUxZjE2OWNiMGEzNzA5OTg1YTE2MTEyMmMyNWYwZThmMTdiZDhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza0NvY29hOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiBlcgogICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoZXJyb3IsIG5l
dHdvcmtMb2FkTWV0cmljcyk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgTmV0d29y
a0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgV1RGRW1pdFNpZ25wb3N0KG1fdGFzay5nZXQoKSwg
IkRhdGFUYXNrIiwgInJlY2VpdmVkICV6ZCBieXRlcyIsIGRhdGEtPnNpemUoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tD
dXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRh
c2tDdXJsLmNwcAppbmRleCA4ZmM3YjY2M2U2Zjc1NjJiMmIzNTQ4OTM5OGEyZmU3MzFiZTA3NGYx
Li4zN2YyOTQxNjY0NmM0N2UxZGExZmQ5OTQxY2NhYzAwYjVkYzBmZDIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1
cmwuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJs
RGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVzcG8KICAgICBp
bnZva2VEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJs
OjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQordm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihD
dXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAg
ICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6
OkNhbmNlbGluZyB8fCBzdGF0ZSgpID09IFN0YXRlOjpDb21wbGV0ZWQgfHwgKCFtX2NsaWVudCAm
JiAhaXNEb3dubG9hZCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCmluZGV4IDFjNDI3ZGRiNzhkNjk1M2ZlODk2
MGM1NjkyYWZkZTRmNGYwZWVlODUuLjQ1YmU1Y2UxODQzMjUyNzFkNWMwODBkZDM0ZjFlZTRhMTY2
NDJhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrRGF0YVRhc2tDdXJsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJs
L05ldHdvcmtEYXRhVGFza0N1cmwuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIFJl
ZjxXZWJDb3JlOjpDdXJsUmVxdWVzdD4gY3JlYXRlQ3VybFJlcXVlc3QoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFJlcXVlc3RTdGF0dXMgPSBSZXF1ZXN0U3RhdHVzOjpOZXdSZXF1ZXN0KTsK
ICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIHVuc2lnbmVk
IGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxE
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpDdXJsUmVz
cG9uc2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3Jl
OjpDdXJsUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBj
dXJsRGlkQ29tcGxldGUoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihXZWJD
b3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiwgV2ViQ29yZTo6Q2Vy
dGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCmluZGV4IGY1ZGI3MDZj
NDQ1ODAyMTA4N2Y5NTk5NjY5ZGZhN2Q5ZjgzNzk3OGMuLjMzZDQzYjcyMjM4ZDIwM2U3ZWRlYzk0
MTRjYWY5ZmRhOGY0MDUyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCkBAIC01NSw3ICs1NSw3IEBAIHN0
cnVjdCBQYWNrZXRPcHRpb25zOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZWdpc3Ry
YWJsZURvbWFpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDdlMGQ4ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2
M2E2ZTNkZjE4MzJlOWYuLjE3ZjA4YzI4ZWExMjViNTUwOTkzZWVkMjRkNTk2M2I4NTEwYTExNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAg
LTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0vLyBFbmNvZGVzIGEgU2hhcmVkQnVmZmVyIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBjb3B5IG9m
IHRoZSBkZWNvZGVkIGRhdGEgaW4gYSBuZXcgU2hhcmVkQnVmZmVyLgorLy8gRW5jb2RlcyBhIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIgdGhhdCBpcyByZWNlaXZlZCBhcyBhIGNvcHkgb2YgdGhlIGRl
Y29kZWQgZGF0YSBpbiBhIG5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgogLy8gVG8gYXZvaWQg
Y29weWluZyBmcm9tIHRoZSBEZWNvZGVyLCB1c2UgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB0
byByZWNlaXZlIGEgRGF0YVJlZmVyZW5jZSBpbnN0ZWFkLgogCiAjcHJhZ21hIG9uY2UKQEAgLTQz
LDExICs0MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIp
KSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9Ci0gICAgU2hh
cmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAg
ICAgOiBtX2J1ZmZlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgIHsKLSAg
ICAgICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIpOwotICAgIH0KKyAgICBTaGFyZWRCdWZmZXJD
b3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAg
ICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBt
X2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3VzKCkpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNv
cHkoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorICAgICAg
ICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSB7IH0KIAogICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQogICAg
IGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCmluZGV4IGQzZDBlYzVlOTc4NTU5OWI2MzRhODRj
NmM0NDcxYjUyY2QyMjEzZjEuLjY3ZWM4ZTVlOTJiZDAyNDExNWRiMGQ0MDgwYTI0ZmU3MzU3MGQz
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlLmgKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBFbmNvZGVzIGEgU2hhcmVkQnVmZmVyIG9yIERhdGFS
ZWZlcmVuY2UgdGhhdCBpcyByZWNlaXZlZCBhcyBhIERhdGFSZWZlcmVuY2UgdG8gdGhlIGRlY29k
ZWQgZGF0YS4KKy8vIEVuY29kZXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIG9yIERhdGFSZWZl
cmVuY2UgdGhhdCBpcyByZWNlaXZlZCBhcyBhIERhdGFSZWZlcmVuY2UgdG8gdGhlIGRlY29kZWQg
ZGF0YS4KIAogI3ByYWdtYSBvbmNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5
LmNwcAppbmRleCBkMjQwNmVlMjkwNTMxMWY2OWI3NTg0MjFlNzdhM2U2NmNiYTI3YjY1Li5jMDI2
ZjU0OTU2OWIyYmUwMDc4YWUzMjVkMDUzOWUwNzFhZjExMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hh
cmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRy
PFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MSw3ICs1MSw3IEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+
IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIFJl
ZjxTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBk
YXRhU2l6ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZGF0YVNpemUgPD0gc2l6ZSgpKTsKLSAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoeworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsKICAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVkVGhpcy0+ZGF0YSgpKTsKICAgICAg
ICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCmluZGV4IGUzNzFiY2Q3MzAy
Y2Y4NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUyYWIuLjFiNGZkZmFmNjgzODlkY2U3MjhmZjM0ZTVl
NWYwMTJlMjQzZmEyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVk
TWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAt
NDUsNiArNDUsNyBAQCBjbGFzcyBFbmNvZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiAjaWYg
T1MoREFSV0lOKQpAQCAtMTIwLDcgKzEyMSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBD
aGFuZ2UgdGhlc2UgZmFjdG9yeSBmdW5jdGlvbnMgdG8gcmV0dXJuIFJlZjxTaGFyZWRNZW1vcnk+
IGFuZCBjcmFzaCBvbiBmYWlsdXJlLgogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBh
bGxvY2F0ZShzaXplX3QpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBjb3B5QnVm
ZmVyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hh
cmVkTWVtb3J5PiBjb3B5QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbWFwKGNvbnN0IEhhbmRsZSYs
IFByb3RlY3Rpb24pOwogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIHN0YXRpYyBS
ZWZQdHI8U2hhcmVkTWVtb3J5PiB3cmFwTWFwKHZvaWQqLCBzaXplX3QsIGludCBmaWxlRGVzY3Jp
cHRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVz
b3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0K
aW5kZXggY2EwYzI0YjI3NzM1NDc2NzZlMzQ4MDFjNzlhMWQ1NjViZjk1ZmU1ZC4uMTEwZTBhZGRl
NTU4YTlkOTMzOGIyNDUwNmU4OTE2M2M5MzY5NzE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgdm9p
ZCByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9p
ZCogZGF0YSkKIAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKCkKIHsK
LSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0
YSgpLmNyZWF0ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1f
YXJjaGl2ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7
CiAKICAgICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFzZVdlYkFyY2hpdmVSZXNv
dXJjZURhdGEuCiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5k
ZXggODdmNGViMWViYTI4NzJlMGNiMGFiOTU5MTZhZmVkZTI5ZmNiYTI0NC4uM2MxYjU3ZDVhYTI2
ZWM3MmU2MGI1ZDc4YTExZTlmZDg1MmNmZmVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTU2NCwx
MyArNTY0LDEyIEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YT4gQXJn
dW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBpZiAoKmluY2x1ZGVzQ3JlYXRpb25EYXRhKSB7Ci0gICAgICAgIHN0
ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
IGZvbnRGYWNlRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250RmFjZURhdGE7CiAgICAgICAg
IGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgICAgICAvLyBVcG9uIHJlY2VpcHQsIGNvcHkgdGhlIGRhdGEgZm9yIHNlY3VyaXR5LCBzbyB0
aGUgc2VuZGVyIGNhbid0IHNjcmliYmxlIG92ZXIgaXQgd2hpbGUgd2UncmUgdXNpbmcgaXQuCi0g
ICAgICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShmb250RmFjZURhdGEudmFsdWUoKS0+ZGF0YSgpLCBmb250RmFjZURhdGEudmFsdWUoKS0+
c2l6ZSgpKTsKKyAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IGZvbnRGYWNlRGF0YS52
YWx1ZSgpLT5tYWtlQ29udGlndW91cygpOwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBpdGVtSW5Db2xsZWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGl0ZW1JbkNvbGxlY3Rpb247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggYzY5NjFj
NzE0NDAyYmYzNzdhZTkxMGZiYjZjY2FhNTJkM2I4NDEyOC4uNmZhMDJhN2JjM2VlNTRhZTZkMzI1
MzgxMGQ3OGRlYzMxNjUzNTNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hh
cmVhYmxlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBib29sIFNoYXJlYWJsZVJlc291cmNlOjpIYW5k
bGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQogCiBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkK
IHsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudDo6UHJvdmlkZXIgeworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2Vn
bWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1
cm4gc2VsZi0+ZGF0YSgpOyB9LAogICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyBy
ZXR1cm4gc2VsZi0+c2l6ZSgpOyB9CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA2NDk4MmJjNDgxMDJhNGFkYjIwYTdlNjBl
MjFiZDQ5MmQ2NTMzNzRjLi44NDNmZDQ3MzEzYWVlY2EyOTkzMDYxMmZjNWVjNTc4NzU1NDM0MmRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
QEAgLTE2NCw3ICsxNjQsNyBAQCBERUZJTkVfU0lNUExFX0FSR1VNRU5UX0NPREVSX0ZPUl9TT1VS
Q0UoRGlzcGxheUxpc3Q6OlNldElubGluZVN0cm9rZUNvbG9yKQogCiAjdW5kZWYgREVGSU5FX1NJ
TVBMRV9BUkdVTUVOVF9DT0RFUl9GT1JfU09VUkNFCiAKLXN0YXRpYyB2b2lkIGVuY29kZVNoYXJl
ZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3N0
YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgYm9vbCBpc051bGwgPSAhYnVmZmVy
OwogICAgIGVuY29kZXIgPDwgaXNOdWxsOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyB2b2lk
IGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIq
IGJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMp
Ci0gICAgLy8gRG8gbm90IHVzZSBzaGFyZWQgbWVtb3J5IGZvciBTaGFyZWRCdWZmZXIgZW5jb2Rp
bmcgaW4gVW5peCwgYmVjYXVzZSBpdCdzIGVhc3kgdG8gcmVhY2ggdGhlCisgICAgLy8gRG8gbm90
IHVzZSBzaGFyZWQgbWVtb3J5IGZvciBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGVuY29kaW5nIGlu
IFVuaXgsIGJlY2F1c2UgaXQncyBlYXN5IHRvIHJlYWNoIHRoZQogICAgIC8vIG1heGltdW0gbnVt
YmVyIG9mIGZpbGUgZGVzY3JpcHRvcnMgb3BlbiBwZXIgcHJvY2VzcyB3aGVuIHNlbmRpbmcgbGFy
Z2UgZGF0YSBpbiBzbWFsbCBjaHVua3MKICAgICAvLyBvdmVyIHRoZSBJUEMuIENvbm5lY3Rpb25V
bml4LmNwcCBhbHJlYWR5IHVzZXMgc2hhcmVkIG1lbW9yeSB0byBzZW5kIGFueSBJUEMgbWVzc2Fn
ZSB0aGF0IGlzCiAgICAgLy8gdG9vIGxhcmdlLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwODU3MS4KQEAgLTI2NCw3ICsyNjQsNyBAQCBzdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZl
Y3RvcjxTdHJpbgogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAg
IGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAg
ICAgIGRhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0x
NTUwLDEwICsxNTUwLDEwIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6RW50cnk+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QKICAgICBpZiAoaGFzU3Ry
aW5nKQogICAgICAgICBlbmNvZGVyIDw8IHN0ZDo6Z2V0PFN0cmluZz4ocGxhdGZvcm1EYXRhKTsK
IAotICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVk
QnVmZmVyPj4ocGxhdGZvcm1EYXRhKTsKKyAgICBib29sIGhhc0J1ZmZlciA9IHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpOwog
ICAgIGVuY29kZXIgPDwgaGFzQnVmZmVyOwogICAgIGlmIChoYXNCdWZmZXIpCi0gICAgICAgIGVu
Y29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ocGxh
dGZvcm1EYXRhKS5wdHIoKSk7CisgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBz
dGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSkucHRyKCkp
OwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeSYgZGF0
YSkKQEAgLTI5NzYsNyArMjk3Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFjaG1l
bnREYXRhPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIHJldHVybiB7eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9fTsK
KyAgICByZXR1cm4geyB7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH0g
fTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zMDEwLDYg
KzMwMTAsMzQgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFAKIH0KICNlbmRpZgogCit2b2lkIEFy
Z3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBi
dWZmZXIuZ2V0KCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVy
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXI7Cit9
CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29k
ZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIp
IHx8ICFidWZmZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4g
YnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKIHZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIGVuY29kZVNoYXJl
ZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwpAQCAtMzEwNyw3ICszMTM1LDcgQEAgdm9p
ZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGUKIHsKICAgICBlbmNvZGVyIDw8IG1lc3NhZ2UuZmlyc3Q7CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNv
cHlSZWYoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZURhdGEg
PSBtZXNzYWdlLnNlY29uZC5jb3B5UmVmKCk7CiAgICAgZW5jb2RlciA8PCBtZXNzYWdlRGF0YTsK
IH0KIApAQCAtMzExNyw3ICszMTQ1LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb246Ok1lc3NhZ2U+ICBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUkKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpIHx8
ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjVmMDFjMDI5MmEwMTlmMDY3
NjI0YmJiNTUzNDAyZGYxYTMzYzViNi4uNmZhYzJhYTFlYTc4NDZmZjZiZjg5MDIxZjBmNTJlOWFh
N2FlMDNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKQEAgLTExNCw2ICsxMTQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNs
YXNzIEJsb2JQYXJ0OwogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgQ29sb3I7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgQ3ViaWNCZXppZXJUaW1p
bmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKQEAgLTEzOCw3ICsxMzksNyBAQCBjbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0QnVmZmVy
OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3ByaW5nVGltaW5nRnVuY3Rpb247CiBjbGFzcyBT
dGVwc1RpbWluZ0Z1bmN0aW9uOwogY2xhc3MgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFp
bnRzOwpAQCAtNzUxLDYgKzc1MiwxNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gewogfTsKICNlbmRpZgog
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29u
c3QgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBk
ZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
Jik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0
UmVzdWx0RGF0YS5jcHAKaW5kZXggY2YyZTRkNWY5M2ZkMmQ5NDZiYWJmZjkzZWVhM2U5ZTg2MGFl
YmJmNC4uYjYwN2FjZTgzOGUwNGJjZTFhNmFlZTRkYTU2NTU5ZTA5Njk4Mzk4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcApAQCAtODUsNyArODUs
NyBAQCBXZWJIaXRUZXN0UmVzdWx0RGF0YTo6V2ViSGl0VGVzdFJlc3VsdERhdGEoY29uc3QgV2Vi
Q29yZTo6SGl0VGVzdFJlc3VsdCYgaGl0VGVzdAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
SW1hZ2UqIGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7CisgICAgICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpOwogICAgICAgICBpZiAo
YnVmZmVyKSB7CiAgICAgICAgICAgICBpbWFnZVNoYXJlZE1lbW9yeSA9IFdlYktpdDo6U2hhcmVk
TWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwogICAgICAgICAgICAgaW1hZ2VTaXplID0gYnVm
ZmVyLT5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1l
bnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJz
R3RrLmNwcAppbmRleCAyNWEzMDdmMzgyOWU5Mjc4YjVlYTc4ZmY4Mjk2Nzg4MzM3N2EzMWJhLi42
NzE3NThhMjgwYTVlNDQwYWEwNjBhNzljZjFmMGYxMjZkYjdiZTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTk1LDcgKzk1LDcgQEAg
dm9pZCBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgU2VsZWN0aW9uRGF0YSYKICAgICBib29sIGhhc0N1c3RvbURhdGEgPSBzZWxlY3Rp
b24uaGFzQ3VzdG9tRGF0YSgpOwogICAgIGVuY29kZXIgPDwgaGFzQ3VzdG9tRGF0YTsKICAgICBp
ZiAoaGFzQ3VzdG9tRGF0YSkKLSAgICAgICAgZW5jb2RlciA8PCBSZWZQdHI8U2hhcmVkQnVmZmVy
PihzZWxlY3Rpb24uY3VzdG9tRGF0YSgpKTsKKyAgICAgICAgZW5jb2RlciA8PCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4oc2VsZWN0aW9uLmN1c3RvbURhdGEoKSk7CiAKICAgICBib29s
IGNhblNtYXJ0UmVwbGFjZSA9IHNlbGVjdGlvbi5jYW5TbWFydFJlcGxhY2UoKTsKICAgICBlbmNv
ZGVyIDw8IGNhblNtYXJ0UmVwbGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50LmNwcAppbmRleCBiMzRlYzczNjM2M2M0ZjFkMmIwZTc2MGFkM2Y0YTlkNWJh
YzFhMzRlLi4xNDkwYzUxMWJkYzM4YmQ4YWI0YTY5NWFlY2YzMDZkOTVmYWEzOTY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBAIC05OCw3ICs5
OCw3IEBAIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IEF0dGFjaG1lbnQ6OmZpbGVTaXplRm9yRGlz
cGxheSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QK
K1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNs
b3NpbmdJbWFnZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXggYWZhOTI5Y2YwOTNk
MjJlYzc2YWQ4NmZkYTAzYjUwMWJiZmQyOWRjMy4uZmU1MGU1MzhiOGViYjM1MWE0ODM2ZDFkZDg5
M2QxNDdhNTZhODc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNo
bWVudC5oCkBAIC0zOSw2ICszOSw3IEBAIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODIsNyArODMsNyBAQCBwdWJsaWM6
CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0OworICAgIFJlZlB0cjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBlbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdDsKICAg
ICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdDsKIAog
ICAgIHZvaWQgc2V0SGFzRW5jbG9zaW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSkgeyBt
X2hhc0VuY2xvc2luZ0ltYWdlID0gaGFzRW5jbG9zaW5nSW1hZ2U7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKaW5kZXgg
N2ZjMDU0NTdlNjRjZjU4OWIwZmIwZTdlMDM2ZjY5MGZhMmMxN2JhYy4uNGUyNjZmMzY3YWM2MDJi
OGVmMWVhZjc1N2EwYTA0ZGM3M2Y3NzFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKQEAgLTMwLDcgKzMwLDcgQEAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAog
bmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJTmF2aWdhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5h
dmlnYXRpb25DbGllbnQuaAppbmRleCA1NjIzNDAxNDU5ZGE1ZmUzMGY0OTFhNDFmYjM0N2E2NzU3
MjAyYzQwLi4xMTFmMDkyNjNmODIyMzgyOWE1YWQyNjQ0MzRiYTQyMGYxOThkZDFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKQEAg
LTQ3LDcgKzQ3LDcgQEAgc3RydWN0IENvbnRlbnRSdWxlTGlzdFJlc3VsdHM7CiBjbGFzcyBSZXNv
dXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBz
dHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogfQogCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGlj
OgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0TG9hZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1l
LCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tE
b2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KSB7IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBSZWY8TmF2aWdhdGlvbkFjdGlvbj4mJiwg
UmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBPYmpl
Y3QqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0
dGFjaG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElB
dHRhY2htZW50Q29jb2EubW0KaW5kZXggY2Y0NjIxNmNhMjVhOWVkZjgyZTMxOWEzMzAzMDc5MWU4
ZDRlMTUzYy4uZGZlZjNlMDcwZjk2MTYzMDQ5NzE0NGRhZjNmMzAwY2I0Y2E1MTk1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVu
dENvY29hLm1tCkBAIC0xMzcsNyArMTM3LDcgQEAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gQXR0
YWNobWVudDo6ZmlsZVNpemVGb3JEaXNwbGF5KCkgY29uc3QKICAgICByZXR1cm4gW2ZpbGVXcmFw
cGVyIHJlZ3VsYXJGaWxlQ29udGVudHNdLmxlbmd0aDsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKK1JlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJ
bWFnZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9oYXNFbmNsb3NpbmdJbWFnZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQppbmRleCBjNGVlNTI1MDc2NDJkYjRlNTRjZmFkZjdmZWUzYmYxYjdjMGQz
ZDNjLi4wMWM4MTAyNzhlZjYzNTkxNzJmOGU2NWI1MmNmY2IwYjUyMWI3ZDg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE1OTYsNyAr
MTU5Niw3IEBAIC0gKHZvaWQpX3N0b3JlQXBwSGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpBcHBI
aWdobGlnaHQmKWhpZ2hsaWdodAogICAgIGlmIChoaWdobGlnaHQudGV4dCkKICAgICAgICAgdGV4
dCA9IGhpZ2hsaWdodC50ZXh0LnZhbHVlKCk7CiAKLSAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRv
cHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0
LmhpZ2hsaWdodC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOwor
ICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBp
bml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CiAKICAgICBpZiAoW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c3RvcmVBcHBIaWdo
bGlnaHQ6aW5OZXdHcm91cDpyZXF1ZXN0T3JpZ2luYXRlZEluQXBwOildKQogICAgICAgICBbZGVs
ZWdhdGUgX3dlYlZpZXc6c2VsZiBzdG9yZUFwcEhpZ2hsaWdodDp3a0hpZ2hsaWdodC5nZXQoKSBp
bk5ld0dyb3VwOmhpZ2hsaWdodC5pc05ld0dyb3VwID09IFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3Vw
Rm9ySGlnaGxpZ2h0OjpZZXMgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDpoaWdobGlnaHQucmVxdWVz
dE9yaWdpbmF0ZWRJbkFwcCA9PSBXZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZElu
QXBwOjpZZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUuaAppbmRleCBhYzRhMGY0MzcwMTUyZWQ1NzJiNTA5MWRmYTUxYmFlYmFiODdmNGU5Li5j
ODAyOWMxNDBhNmRkMTRiMTk2NDkyMjViODc4MzBlZWMxMzQwMGZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTMzLDcgKzEzMyw3
IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAgICAgdm9pZCBkaWRTdGFy
dExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBm
aWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQg
ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXgg
Mzg1NTg4MmM4N2RjOWVkMzFjMWVmMGJhYjYxNmIxZTY0NTk0NGVlZi4uOGQzYTg1NjQ2MmVhZWY3
NDFkOGMyOWUyNTkyZmQ1NzM2NmY1OTljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTIyMCw3ICsxMjIwLDcgQEAgdm9pZCBO
YXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnIKICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVn
YXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0
aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkZyYW1lV2l0aEZpbGVOYW1lOmZpbGVOYW1lIHV0aTp1dGldOwogfQogCi12b2lkIE5hdmlnYXRp
b25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIE5hdmlnYXRp
b25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUpCiAgICAgICAgIHJldHVybjsKQEAgLTEyMzIsNyAr
MTIzMiw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5p
c2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVs
ZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0
aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzpt
X25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAgW3N0YXRp
Y19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdh
dGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNo
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IDgw
MmZmYWE2ZDZlZGJlYTJlOTcyNzc0ZTI2OTY1YjJkYmIyYTczNWUuLjY4MzM3M2VhZTAwZjVkYjQy
YjgxNDZjZTlkNTMxYmM4YWMwYTU0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCkBAIC0zMDIsMTIgKzMwMiwxMiBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZEF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucygp
CiAgICAgICAgIGlmIChub0VyciAhPSBBdWRpb0NvbXBvbmVudEZldGNoU2VydmVyUmVnaXN0cmF0
aW9ucygmcmVnaXN0cmF0aW9ucykgfHwgIXJlZ2lzdHJhdGlvbnMpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IFdURk1v
dmUod2Vha1RoaXMpLCByZWdpc3RyYXRpb25zID0gYWRvcHRDRihyZWdpc3RyYXRpb25zKV0gKCkg
bXV0YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBX
VEZNb3ZlKHdlYWtUaGlzKSwgcmVnaXN0cmF0aW9ucyA9IGFkb3B0Q0YocmVnaXN0cmF0aW9ucyld
ICgpIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25zLmdldCgpKTsKLSAgICAgICAgICAgIHdlYWtUaGlz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3Ry
YXRpb25zKHsgcmVnaXN0cmF0aW9uRGF0YSB9KSwgMCk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+
c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0
aW9ucyh7IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkgfSksIDApOwogICAgICAgICB9KTsKICAg
ICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCmlu
ZGV4IDNmNmRkMWYyNDJlN2ExMTVlY2Y3OTgzOTBmMzRiNjM1YzZlOGQ2ZjkuLmY1ODkxMjQxNzAy
ZGFhNDIwY2M0ZTZlMjQ2MjhhMWNkZTg5MDdkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwuaApAQCAtNTA2LDcgKzUwNiw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGUmIGltYWdlKTsKICAgICB2b2lkIHNldEZpbGVBbmRVUkxUeXBlcyhOU1N0
cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNT
dHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIE5TUGFzdGVib2FyZCAqKTsKLSAgICB2
b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiwgTlNTdHJpbmcgKmZp
bGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1
cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGFyY2hpdmVC
dWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKnBhc3RlYm9hcmRPcmln
aW4pOworICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqLCBO
U1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwg
TlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNT
dHJpbmcgKnBhc3RlYm9hcmRPcmlnaW4pOwogICAgIHZvaWQgcGFzdGVib2FyZENoYW5nZWRPd25l
cihOU1Bhc3RlYm9hcmQgKik7CiAgICAgdm9pZCBwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQ
YXN0ZWJvYXJkICosIE5TU3RyaW5nICp0eXBlKTsKICAgICBOU0FycmF5ICpuYW1lc09mUHJvbWlz
ZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluYXRpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAzZDllODc3
YjBjYjc1NjU0YjYzOTE2Mzk1NTdmNTJiNjAzOTJjYWM5Li42MjM2N2RjNWFkMWZlMTIyMWY3YjA5
OWU5YmI0NDU0ZGIzN2E1OGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQpAQCAtNDQ0OSw3ICs0NDQ5LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0
RmlsZUFuZFVSTFR5cGVzKE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwg
TlMKICAgICBtX3Byb21pc2VkVVJMID0gdXJsOwogfQogCi12b2lkIFdlYlZpZXdJbXBsOjpzZXRQ
cm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxl
bmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJs
LCBOU1N0cmluZyAqdmlzaWJsZVVSTCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBhcmNoaXZlQnVm
ZmVyLCBOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5TU3RyaW5nICpvcmlnaW5JZGVudGlmaWVy
KQordm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1h
Z2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3Ry
aW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJv
YXJkTmFtZSwgTlNTdHJpbmcgKm9yaWdpbklkZW50aWZpZXIpCiB7CiAgICAgTlNQYXN0ZWJvYXJk
ICpwYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0aE5hbWU6cGFzdGVib2Fy
ZE5hbWVdOwogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gdHlwZXMgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpXZWJDb3JlOjpsZWdhY3lGaWxl
c1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpLCBuaWxdKTsKQEAgLTQ0NzAsNyArNDQ3MCw3IEBAIHZv
aWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBp
bWFnZSwgTlNTdHJpbmcgKmZpbGVuCiAgICAgc2V0RmlsZUFuZFVSTFR5cGVzKGZpbGVuYW1lLCBl
eHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIHBhc3RlYm9hcmQpOwogCiAgICAgaWYg
KGFyY2hpdmVCdWZmZXIpIHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5j
cmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCiAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6bnNEYXRhLmdldCgpIGZvclR5
cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmVdOwogQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECkBAIC00NTAxLDcgKzQ1MDEsNyBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBO
U1N0cmluZyAqdAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbDptX3By
b21pc2VkSW1hZ2UtPnV0aSgpXSAmJiBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKSkgewotICAgICAg
ICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRl
TlNEYXRhKCkpCisgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFn
ZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAg
IFtwYXN0ZWJvYXJkIHNldERhdGE6KF9fYnJpZGdlIE5TRGF0YSAqKXBsYXRmb3JtRGF0YS5nZXQo
KSBmb3JUeXBlOnR5cGVdOwogICAgIH0KIApAQCAtNDU1NCw3ICs0NTU0LDcgQEAgTlNBcnJheSAq
V2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNV
UkwgKmRyb3BEZXN0aW4KICAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogCiAgICAgaWYgKG1f
cHJvbWlzZWRJbWFnZSkgewotICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCkt
PmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCkt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB3cmFwcGVyID0gYWRv
cHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpk
YXRhLmdldCgpXSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNG
aWxlV3JhcHBlciBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bV9wcm9t
aXNlZFVSTF0gb3B0aW9uczpOU0ZpbGVXcmFwcGVyUmVhZGluZ0ltbWVkaWF0ZSBlcnJvcjpuaWxd
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBjNDg1YzdmYzMxM2VhMDgz
M2ZjNjA2MjY3MTY5ZDY5MmE4MjQwOTI4Li5iNDYyZDhkYjVjYzYyMDM4NmU3NjgzZGIyNDgzNmFi
M2NlNjRmZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0zMjgsNyAr
MzI4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBVU0UoQVBQS0lUKQotICAgIHZpcnR1YWwg
dm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklk
ZW50aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2Uo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIp
ID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRv
RGV2aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1YTgzMmU1NWFjYmExODliMzliOWU4OTdjYzFj
YTE4YjdiNDg0NTU1Li5lNWVhZjQxZjM4YjY0N2JjNWYzNzNkYjA3OWRlYjQxNmFhOTYzZDFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjU5LDcgKzI1OSw3IEBA
IGNsYXNzIEludFNpemU7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSdW5Mb29wT2Jz
ZXJ2ZXI7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDsK
IGNsYXNzIFRleHRJbmRpY2F0b3I7CiBjbGFzcyBWYWxpZGF0aW9uQnViYmxlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBkZjU5ZDU2ZmQ2OTdm
MmFkZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQxLi4xOTk3ZWFlMjBhYzIyY2EzYWU4MDA0YzcwNGZh
MjJkYTYwOWUwMDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcApAQCAtNTEsNiArNTEsNyBAQCBXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVU
YXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImIGhhbmRsZXIsIFdlYlBhZ2VQcm94eSYgcAogICAgICwg
bV9yZXF1ZXN0KFdURk1vdmUocGFyYW1ldGVycy5yZXF1ZXN0KSkKICAgICAsIG1fZnJhbWVJbmZv
KEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLmZyYW1lSW5mbyksICZw
YWdlKSkKICAgICAsIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc3luY0NvbXBsZXRp
b25IYW5kbGVyKSkKKyAgICAsIG1fc3luY0RhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJC
dWlsZGVyPigpKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9CkBAIC0xNjgs
NyArMTY5LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIC0+IEUKICAgICByZXR1cm4gRXhjZXB0aW9u
VHlwZTo6Tm9uZTsKIH0KIAotYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHlwZQorYXV0byBXZWJVUkxT
Y2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCkBAIC0xODcsMTAgKzE4OCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2
ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5CiAgICAgbV9k
YXRhU2VudCA9IHRydWU7CiAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgaWYgKG1fc3lu
Y0RhdGEpCi0gICAgICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zeW5jRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsK
KyAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIApAQCAtMjE3LDEyICsyMTUsOSBAQCBh
dXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwogICAgIAogICAg
IGlmIChpc1N5bmMoKSkgewotICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICAgICAg
aWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5kYXRhKCks
IG1fc3luY0RhdGEtPnNpemUoKSB9OwotCisgICAgICAgIHNpemVfdCBzaXplID0gbV9zeW5jRGF0
YS0+c2l6ZSgpOworICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9IHsgbV9zeW5jRGF0YS0+
dGFrZSgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUgfTsKICAgICAgICAgbV9zeW5j
Q29tcGxldGlvbkhhbmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsK
LSAgICAgICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hl
bWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJRCwgZXJyb3IpLCBtX3dl
YlBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5k
ZXggNmE4NTYwMjFiMTI5OTI0NmM3MDAwOTNkZDBhNDdmMmMxMzA4NTI2Ny4uNzk5NDJmOWIyMGEy
NjYwY2E0YTdkY2Q0NTAxOGQxNmU0M2I2NjZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEZy
YW1lSW5mbzsKQEAgLTQzLDcgKzQ0LDggQEAgY2xhc3MgRnJhbWVJbmZvOwogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3Mg
U2hhcmVkQnVmZmVyQnVpbGRlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04NCw3ICs4
Niw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25UeXBlIHdpbGxQZXJmb3JtUmVkaXJlY3Rpb24o
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
IEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICBFeGNl
cHRpb25UeXBlIGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgRXhj
ZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsK
KyAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZENvbXBsZXRlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgc3RvcCgpOwpAQCAtMTE1LDcgKzEx
Nyw3IEBAIHByaXZhdGU6CiAKICAgICBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0Nv
bXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVz
cG9uc2U7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAg
ICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9zeW5jRGF0YTsKIAog
ICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsg
ZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xp
cGJvYXJkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKaW5kZXgg
Nzg2NmNkYjE3NzQ2MDA3YWIwYTdhMTdjNTViODdjN2YxNjRjMmJhZS4uNzI3OWY4NDRjYzJiYmQy
YjAxN2ZlMGYwOTdkZTAxODcwYTlhODUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL0NsaXBib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9D
bGlwYm9hcmQuaApAQCAtMzYsNyArMzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBfR3RrQ2xpcGJvYXJk
IEd0a0NsaXBib2FyZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2VsZWN0aW9uRGF0
YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBmb3JtYXRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwog
ICAgIHZvaWQgcmVhZFRleHQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwog
ICAgIHZvaWQgcmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJp
bmc+JiYpPiYmKTsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgY2hhciosIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYpOworICAgIHZvaWQg
cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYpOwogICAgIHZvaWQgd3JpdGUoV2ViQ29y
ZTo6U2VsZWN0aW9uRGF0YSYmKTsKICAgICB2b2lkIGNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAppbmRleCBjMmJmNTE4M2IzMGYxMGU5
ZWI3ODEzY2RhZGEyMjNlOTE4OWM3NDU5Li41OTY2ZDU1NzRjMjgyZjUzMTY5NDA5NjA4Mjk2MGFl
MzM5Y2ExMTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJv
YXJkR3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0
azMuY3BwCkBAIC0xMjYsMTUgKzEyNiwxNSBAQCB2b2lkIENsaXBib2FyZDo6cmVhZEZpbGVQYXRo
cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZQogc3Ry
dWN0IFJlYWRCdWZmZXJBc3luY0RhdGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKIAotICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJBc3luY0RhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4mJiBoYW5kbGVyKQorICAgIGV4
cGxpY2l0IFJlYWRCdWZmZXJBc3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKICAgICAgICAgOiBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKQogICAgIHsKICAgICB9CiAKLSAgICBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiBjb21w
bGV0aW9uSGFuZGxlcjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCi12b2lk
IENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGd0a19jbGlwYm9hcmRfcmVxdWVzdF9jb250
ZW50cyhtX2NsaXBib2FyZCwgZ2RrX2F0b21faW50ZXJuKGZvcm1hdCwgVFJVRSksIFtdKEd0a0Ns
aXBib2FyZCosIEd0a1NlbGVjdGlvbkRhdGEqIHNlbGVjdGlvbiwgZ3BvaW50ZXIgdXNlckRhdGEp
IHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlYWRCdWZmZXJBc3luY0RhdGE+IGRhdGEoc3Rh
dGljX2Nhc3Q8UmVhZEJ1ZmZlckFzeW5jRGF0YSo+KHVzZXJEYXRhKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKaW5kZXggMDdhYmI3MTMxOTg4NTNi
Nzg3YzYzMjRiZDQ4MGIxZTA4OGEyYTNkMy4uNWI4MWZhOGYyOWQzZjdjZjFjM2YwOWQxZmMzYzg4
NzM0ZGM1MWEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBi
b2FyZEd0azQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRH
dGs0LmNwcApAQCAtMTIwLDE1ICsxMjAsMTUgQEAgdm9pZCBDbGlwYm9hcmQ6OnJlYWRGaWxlUGF0
aHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGUKIHN0
cnVjdCBSZWFkQnVmZmVyQXN5bmNEYXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7CiAKLSAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKKyAgICBl
eHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGhhbmRsZXIpCiAgICAgICAgIDog
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkKICAgICB7CiAgICAgfQogCi0gICAg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4gY29t
cGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5kbGVyOwogfTsKIAotdm9p
ZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb25zdCBjaGFyKiBtaW1lVHlwZXNbXSA9
IHsgZm9ybWF0LCBudWxscHRyIH07CiAgICAgZ2RrX2NsaXBib2FyZF9yZWFkX2FzeW5jKG1fY2xp
cGJvYXJkLCBtaW1lVHlwZXMsIEdfUFJJT1JJVFlfREVGQVVMVCwgbnVsbHB0ciwgW10oR09iamVj
dCogY2xpcGJvYXJkLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1h
Yy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5k
ZXggZDIyMzhmZGM5ZDE2Zjc3ZjhjM2QzMDJjYTk5NzZmZTgzZjFiM2YzNy4uYWI4N2MyYTdlOGMz
NTdhNjViM2NmZTYwNzkzOGZkZmVjOGE2NTJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTEwMCw4ICsxMDAsOCBAQCBwcml2YXRl
OgogICAgIHZvaWQgZXhlY3V0ZVVuZG9SZWRvKFVuZG9PclJlZG8pIG92ZXJyaWRlOwogICAgIGJv
b2wgZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3Rvcikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzdGFydERyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0mLCBj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2UpIG92ZXJyaWRlOwotICAgIHZvaWQg
c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsCi0gICAg
ICAgIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBvcmln
aW5JZGVudGlmaWVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwKKyAgICAgICAgY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBvcmlnaW5J
ZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKSBv
dmVycmlkZTsKICAgICB2b2lkIHJlc2V0U2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwogICAg
IHZvaWQgbm90aWZ5SW5wdXRDb250ZXh0QWJvdXREaXNjYXJkZWRDb21wb3NpdGlvbigpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
Lm1tCmluZGV4IGE0MTEyMTM1ZjJlZjE5MDE1YTUyZjFlMWIwM2FlMzBhMWYyMjNkMmEuLmMzNjNl
OTU1ZTg3OWMwZTE4NmI0MTUwOTA5MTMzNjVjMjBmZTkwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAgLTQwMCw3ICs0MDAsNyBA
QCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzdGFydERyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0m
IGl0ZW0sIGNvbnN0IFNoYXJlYWJsZUJpdAogICAgIG1faW1wbC0+c3RhcnREcmFnKGl0ZW0sIGlt
YWdlKTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2Uo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNv
bnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2li
bGVVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBvcmlnaW5JZGVudGlmaWVyKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0UHJvbWlzZWREYXRh
Rm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCiB7CiAgICAg
YXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICBpbWFnZS0+c2V0RGF0YShX
VEZNb3ZlKGltYWdlQnVmZmVyKSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBlMDNlMDgwYWVlMDgzODBiNDZmZmU4OWRkOGU2
MWI2NmI1OThkYjQ2Li4wMWQ4NDBhMmE2M2VhYzc5MWZiZDg0ZmJlNjM3YjViMjhjZjYxMzAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAg
LTI3Nyw3ICsyNzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUwogICAgICAgICByZXR1cm47
CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHNoYXJlZE1lbW9yeUltYWdlLT5jcmVhdGVTaGFyZWRC
dWZmZXIoaW1hZ2VIYW5kbGUuZGF0YVNpemUpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YXJjaGl2ZUJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYXJjaGl2
ZUJ1ZmZlcjsKICAgICBpZiAoIWFyY2hpdmVIYW5kbGUuaGFuZGxlLmlzTnVsbCgpKSB7CiAgICAg
ICAgIGF1dG8gc2hhcmVkTWVtb3J5QXJjaGl2ZSA9IFNoYXJlZE1lbW9yeTo6bWFwKGFyY2hpdmVI
YW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAg
ICAgaWYgKCFzaGFyZWRNZW1vcnlBcmNoaXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCmluZGV4IGZhOTQwMjVlZDc0NzMwZDI4ZTcxNjQ2
Mjg1ZjllNWJhNjUzYjhmMTIuLmMyOGZlNjVmMGNmMTY0Mzk5ODE4YWNhMzJmOTgxY2M3NzhmMWU5
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzU2Vzc2lvblR5
cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9uVHlwZSYsIGNvbnMKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIHR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkgY29uc3QKK2Jvb2wgUmVt
b3RlQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjaGVjayB3
aWxsIGJlIGRvbmUsIGxhdGVyLCBpbnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6
OnJlcXVlc3RMaWNlbnNlKCkuCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjksNyArMTI5LDcgQEAg
dm9pZCBSZW1vdGVDRE06OmxvYWRBbmRJbml0aWFsaXplKCkKICAgICBtX2ZhY3RvcnktPmdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETVBy
b3h5OjpMb2FkQW5kSW5pdGlhbGl6ZSgpLCBtX2lkZW50aWZpZXIpOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVy
JiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBSZW1vdGVD
RE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9u
c2UpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjaGVjayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBpbnNp
ZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUxpY2Vuc2UoKS4KICAgICBy
ZXR1cm4gcmVzcG9uc2UuY29weSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNLmgKaW5kZXggMGFkZGY4MzM1M2I2ZWExYjJlOGIwMmM2YjdlZTNkYWY0
NjhjZDM4My4uOGM0NTRlYjgzZTU5OTRhOGU0ZDU5MmQ1MWRmOTFmZjliNTIzY2JlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCkBAIC00OCwx
MyArNDgsMTMgQEAgcHJpdmF0ZToKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25z
dCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CiAgICAg
Ym9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IFdlYkNvcmU6
OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlv
bnMmKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmln
dXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IFdlYkNvcmU6OkNE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
IGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiwgY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwog
ICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJl
bWVudChjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2Vi
Q29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6Q0RNUmVx
dWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNv
bnN0IGZpbmFsOwogICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9y
aWdpbkFuZENsZWFyYWJsZShjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JikgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlPiBjcmVhdGVJ
bnN0YW5jZSgpIGZpbmFsOwogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKICAg
ICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2UuY3BwCmluZGV4IGI1ZGVhMjFlOTk1YTczN2YwMzZmNjQ1MzhjMWZiM2VjYjVlNmJiNTUu
LmExM2U1MTQ2MGY2YmI5ZjgwZWYzZDFhODQyZWZjMGI5ZjQ0NTkwYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2Uu
Y3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1DCiAgICAgbV9mYWN0
b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6OkluaXRpYWxpemVXaXRoQ29uZmln
dXJhdGlvbihjb25maWd1cmF0aW9uLCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBwZXJzaXN0ZW50
U3RhdGUpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1v
dGVDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJl
bW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsKICAgICAgICAgY2FsbGJhY2soRmFpbGVkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2UuaAppbmRleCAxMDZiYTNiMTE2MWM4ZGYwOWQ3MWRmZTY3OWJhMzNkNDIzMDc5ZTk2
Li4yYzc4NTFlNDQwYjA4YTUyYTJhZTcwZGE3ZTQxODg4MmUzYzYxNDM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5o
CkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1w
bGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBl
OjpSZW1vdGU7IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBX
ZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50
aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwot
ICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNh
dGUoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFj
ayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikg
ZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2NvbmZpZ3VyYXRpb24ua2V5U3lzdGVtOyB9CiAgICAgUmVmUHRyPFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24uY3BwCmluZGV4IGFmMGJhZDRjOTBkOGRkNTEzNzc0YWVmNmExNWI3N2JhODlmYzUwNjQu
LmM3NDBjMDQ1MDZmZGVkYWM5ZjRjZjUwMmMyMDVhOGEzN2ZjYTQ1OWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbi5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYm
IGYKIHsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lk
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlw
ZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYg
KCFtX2ZhY3RvcnkpIHsKICAgICAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwg
ZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxlZCk7CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBj
b25zdCBBdG9tU3RyaW5nCiAgICAgfSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IExpY2Vuc2VUeXBlIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VV
cGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246
OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBjYWxs
YmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFp
bGVkKTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6
cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2VucwogICAgIH0K
IAogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6
UmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlKSwgW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldIChLZXlTdGF0dXNWZWN0b3ImJiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUg
ewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiByZWFsTWVzc2FnZSA9
IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAobWVzc2Fn
ZSAmJiBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkpCiAgICAgICAgICAgICByZWFsTWVzc2FnZSA9
IG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICBjYWxs
YmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92ZShyZWFsTWVzc2FnZSksIHN1Y2NlZWRl
ZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaAppbmRleCA0
ZmZlNGNhY2VjY2RlNDNkNWNiMTFlMjM2Y2EwNDVhY2RhODNhN2ViLi40ZTRjZDJjMDA1YzZiMDA2
NWY5Y2RiMTg4YzRiY2UwYjViZmE2NjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAg
LTU5LDggKzU5LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8V2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiYmIGNsaWVudCkgZmluYWwgeyBtX2NsaWVu
dCA9IFdURk1vdmUoY2xpZW50KTsgfQogICAgIHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7IG1f
Y2xpZW50ID0gbnVsbHB0cjsgfQotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUs
IGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRl
TGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5h
bDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmlu
YWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3Nl
U2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxi
YWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCmluZGV4IDlhMjE5YTU0NGU1NTM4
M2Y1NGU3MWRhYmQzNTRjYzQ0MGE0MTQyYjkuLjYyOTI2Nzk4YzVjMTEzMjRhMzFhYTUwY2RhN2Vk
MWZiZjc0ZmU3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAKQEAgLTIwMCw3ICsyMDAsNyBA
QCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25n
IGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZQogCiAvLyBJZiBhbGxEYXRhUmVjZWl2ZWQgaXMgdHJ1
ZSwgdGhlIGNhbGxlciBleHBlY3RzIGVuY29kZWREYXRhU3RhdHVzKCkgdG8gYmUgPj0gRW5jb2Rl
ZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGUKIC8vIGFmdGVyIHRoaXMgZnVuY3Rpb24gcmV0dXJu
cyAoaW4gdGhlIHNhbWUgcnVuIGxvb3ApLgotdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNl
dERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlv
bikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKaW5kZXggZTVjZmU5NGVjZDNh
OWMwNjAwZmMwMDMyMGZmNDMwNjFjOTBlZDY5Yi4uNDBkMzczNGY3YTMyMmU4YmFjYjlkMWMwZGVh
NzA3OWUyYWQxN2VhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCkBAIC00NSw3ICs0NSw3IEBAIGNs
YXNzIFJlbW90ZUltYWdlRGVjb2RlckFWRiBmaW5hbAogICAgIDogcHVibGljIFdlYkNvcmU6Oklt
YWdlRGVjb2RlcgogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUltYWdlRGVjb2Rl
ckFWRj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBj
cmVhdGUoUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlciYgbWFuYWdlciwgY29uc3QgV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciYgaWRlbnRpZmllciwgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUltYWdl
RGVjb2RlckFWRj4gY3JlYXRlKFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXImIG1hbmFnZXIs
IGNvbnN0IFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXImIGlkZW50aWZpZXIsIFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGKG1h
bmFnZXIsIGlkZW50aWZpZXIsIG1pbWVUeXBlKSk7CiAgICAgfQpAQCAtODAsNyArODAsNyBAQCBw
dWJsaWM6CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QsIFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2ZWwgPSBXZWJDb3JlOjpTdWJzYW1w
bGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBXZWJDb3JlOjpEZWNvZGluZ09wdGlvbnMmID0gV2Vi
Q29yZTo6RGVjb2RpbmdPcHRpb25zKFdlYkNvcmU6OkRlY29kaW5nTW9kZTo6U3luY2hyb25vdXMp
KSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZp
bmFsOwotICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBib29sIGFsbERh
dGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0Fs
bERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7
IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcAppbmRleCA0MWQ1Mzg4MDIzZDM5MTQ5NTIx
ODM1ZjY4OGRlNGQ0OGY2NWQ3NjdlLi4wODJiMzM2NmM4YmM3MTMwZDc1ZDU2OThhN2Q3OWU2ODky
YWQ4ZjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKQEAgLTM5LDcg
KzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Ci1SZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5h
Z2VyOjpjcmVhdGVJbWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8UmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGPiBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxw
aGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VEZWNvZGVySWRl
bnRpZmllcj4gaW1hZ2VEZWNvZGVySWRlbnRpZmllcjsKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSB7IGRhdGEgfTsKQEAgLTEwOCw3ICsxMDgsNyBAQCB2
b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OnNldFVzZUdQVVByb2Nlc3MoYm9vbCB1
c2VHUFVQcm9jZXNzKQogICAgIEltYWdlRGVjb2Rlcjo6aW5zdGFsbEZhY3RvcnkoewogICAgICAg
ICBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnN1cHBvcnRzTWVkaWFUeXBlLAogICAgICAgICBSZW1v
dGVJbWFnZURlY29kZXJBVkY6OmNhbkRlY29kZVR5cGUsCi0gICAgICAgIFt0aGlzXShTaGFyZWRC
dWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikgeworICAgICAgICBbdGhpc10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSB7CiAgICAgICAgICAgICBy
ZXR1cm4gY3JlYXRlSW1hZ2VEZWNvZGVyKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgICAgICB9CiAgICAgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFW
Rk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGTWFuYWdlci5oCmluZGV4IGMyMzc4MmI2NTA0ZWM3OWJlNDZlMTI2ZjRlNTkx
YjNmZjdmNmRiYTguLjM2MThhZmQxMjA5OGI1NTc2YjRkZDRmZmJmM2MwNmZiYTg0MmE3NjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oCkBAIC01OSw3ICs1OSw3IEBAIHB1Ymxp
YzoKICAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24o
KTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGVJ
bWFnZURlY29kZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBXZWJDb3JlOjpBbHBoYU9wdGlvbiwgV2ViQ29yZTo6R2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOworICAgIFJlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZUltYWdl
RGVjb2RlcihXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpBbHBoYU9wdGlvbiwgV2ViQ29yZTo6R2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pOwogCiAgICAgLy8gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudC4K
ICAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24mKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDk2NmZjOTNi
NzdhZmFhM2U2MjA4ZDdhYmE1YWVkMmM3YTk0Yzc0YjIuLjAwNWEzN2NjMjZlYzRjMDkwMWJmNGYz
NzEyMjM4NjVkZTJkMTY2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcApAQCAt
NzgsNyArNzgsNyBAQCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjp+U291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZSgpCiAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVzc2FnZVJlY2VpdmVy
TWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRl
UmVtb3RlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVtb3RlU291cmNlQnVmZmVySWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjph
cHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
UmVtb3RlOjphcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAg
ICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggMzYwMTc1YmZiZTlkMWFmODNlZDU3OTEzNzNiNzc1ZWU3
NTBhYzdjYy4uZWE1ZmEzZWMzNmMyYjg1OWVlNTc4Y2NkMGUwMzQ4YzczY2I4NmQ2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKIAogICAg
IC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCiAgICAgdm9pZCBzZXRBY3RpdmUoYm9v
bCkgZmluYWw7Ci0gICAgdm9pZCBhcHBlbmQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikg
ZmluYWw7CisgICAgdm9pZCBhcHBlbmQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWJvcnQoKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0UGFy
c2VyU3RhdGUoKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlh
UmVjb3JkZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRj
L01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAppbmRleCAxMWI0YTg2ZTQ4NTJmNmMyMDYxZmEzZmM5
YWYyOWY4ODk5ZjRlYjlmLi5iNDA4OWZkMzU0OGM5N2YxN2ZjMmI5ZmIwMDI3ODBkNjQzY2YyM2Jk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJl
Y29yZGVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCkBAIC0xNjUsMTAgKzE2NSwxMCBAQCB2b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlOjpzdG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqIHN0b3JhZ2Us
IGNvbnN0IFdlYkNvcmU6OgogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3Rl
TWVkaWFSZWNvcmRlcjo6QXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQgeyBTaGFyZWRNZW1vcnk6
OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgZGF0YVNpemUgfSwgZm9ybWF0LCBmcmFtZUNv
dW50IH0sIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OmZl
dGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNv
cmRlcjo6RmV0Y2hEYXRhIHsgfSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIG1pbWVUeXBlID0gbWltZVR5cGUoKV0oYXV0byYmIGRhdGEsIGRvdWJsZSB0
aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
KyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAg
aWYgKGRhdGEuc2l6ZSgpKQogICAgICAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShidWZmZXIpLCBtaW1lVHlwZSwgdGltZUNvZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgK
aW5kZXggMzAzYTU0Zjc2ZjE4NWU5NjQ1NGVmOWY1YmI0NjFmMjhlMTI2Nzg2ZC4uNTc2ZmQxYzZl
OTdjMGNhZDhjYmZlYzk0ZTNiZDM2MzMwNzZlNDRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCkBA
IC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGUKICAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlJiwgV2ViQ29yZTo6VmlkZW9TYW1wbGVNZXRhZGF0YSkgZmluYWw7Ci0gICAgdm9p
ZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmKSBmaW5hbDsKKyAg
ICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUp
PiYmKSBmaW5hbDsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0UmVjb3JkaW5nKFN0YXJ0UmVjb3JkaW5nQ2Fs
bGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgV1RG
OjpNZWRpYVRpbWUmLCBjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IFdl
YkNvcmU6OkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3Rl
ZEJ1bmRsZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDA2NzNmNzRk
ZGZiNDhlNWJkZjQzOGNkOTBiZTM3OTRlZWUyMDkxYmIuLjAzNTNhYWJmN2Q0YjkyNWFhMmYxNTYy
ZDU3M2FhZjMwOTNjODNiYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVu
ZGxlRWRpdG9yQ2xpZW50LmgKQEAgLTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVkQnVmZmVyOwog
Y2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAppbmRl
eCBhMDYzNTIwNDMzNWIzYWIwZTZkZmIwYzY3Nzc2N2Y0MjhlOGE3N2UyLi4xODBiMTExMWVjZjAx
MTMyODA5MjY2YTFiY2UyN2QyNjBlNGZhMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
QVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xh
c3MgRE9NV2luZG93RXh0ZW5zaW9uOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgUmVz
b3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UGFnZUxvYWRlckNsaWVudCgp
ID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZFVSTFJlcXVlc3QoV2ViS2l0
OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgQVBJOjpPYmplY3Qq
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJLaXQ6OldlYlBh
Z2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpV
UkwmLCBBUEk6Ok9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1
ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0
IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpVUkwmLCBBUEk6Ok9iamVjdCopIHsgfQogCiAgICAg
dmlydHVhbCB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQ
YWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYsIFJlZlB0cjxBUEk6Ok9i
amVjdD4mKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5jcHAKaW5kZXggOGQ1MjRiNTI1YzZlN2EwY2M2YmRlNWU4MGE0N2MxNzFlMzQxNDY4Yy4uM2Y0
MWIxZjMzOGZhNDQ0NzQ5MDc0ODE4OWJiODk5NTFjZjFiMTcyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKQEAgLTY1LDE1ICs2NSwxNiBAQCBz
dGF0aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVmZmVyKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lk
KiBkYXRhKQogICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+
KGRhdGEpKS0+ZGVyZWYoKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBN
SU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgdW5yZWFjaGFi
bGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVy
LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29u
c3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewogICAgIGlm
ICghbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
UmVmUHRyPEFQSTo6RGF0YT4gZGF0YTsKICAgICBpZiAoc2hhcmVkQnVmZmVyKSB7Ci0gICAgICAg
IHNoYXJlZEJ1ZmZlci0+cmVmKCk7Ci0gICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdp
dGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKilzaGFyZWRCdWZmZXItPmRhdGEoKSwg
c2hhcmVkQnVmZmVyLT5zaXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIHNoYXJlZEJ1ZmZlcik7
CisgICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICAgICAgY29udGlndW91c0J1ZmZlci0+cmVmKCk7CisgICAgICAgIGRhdGEg
PSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25lZCBjaGFyKilj
b250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKSwgcmVsZWFz
ZVNoYXJlZEJ1ZmZlciwgY29udGlndW91c0J1ZmZlci5wdHIoKSk7CiAgICAgfQogCiAgICAgbV9j
bGllbnQud2lsbExvYWREYXRhUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0
b0FQSShkYXRhLmdldCgpKSwgdG9BUEkoTUlNRVR5cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdO
YW1lLmltcGwoKSksIHRvVVJMUmVmKHVucmVhY2hhYmxlVVJMLnN0cmluZygpLmltcGwoKSksIHRv
QVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAppbmRleCAzNmJkOTgwYjJmYWExYWY0NWFj
MzEwNmViMDFlOWYzNzZiYTEzYWNmLi44NjNiZGFiNjI4NGNhM2FhZDJmOWQ1ZmZmNWZkNjhlYWI4
YjJiNzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5o
CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQoY29uc3QgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50QmFzZSopOwogCiAg
ICAgdm9pZCB3aWxsTG9hZFVSTFJlcXVlc3QoV2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3aWxsTG9hZERh
dGFSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5n
JiwgY29uc3QgVVJMJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxMb2Fk
RGF0YVJlcXVlc3QoV2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0
IFdURjo6U3RyaW5nJiwgY29uc3QgVVJMJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlJiwgV2ViRnJhbWUm
LCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlJiwgV2ViRnJhbWUm
LCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFj
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllck1hYy5tbQppbmRleCBlNTI0ZDhlMWIwMTdhYThlNWUwM2I4OTJkOTJiNzU4
OTRjNThmMzc0Li5hNzg0ZWMzODhiMjI1MjRjYzBkYTYzMjc4ZTVlNzU5MTM3ZGNmNjZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJl
dmlld01vZGVsUGxheWVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2Rl
bC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KQEAgLTEwNiw3ICsxMDYs
NyBAQCB2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKFdl
YkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBpZiAoZmlsZSA8PSAwKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5k
YXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIEZpbGVTeXN0
ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKGZpbGUpOwogICAgIG1fZmlsZVBhdGggPSBmaWxlUGF0aDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCmluZGV4IDk0ZDlkMmNjM2ViMjg4MGNkY2YyMmMwNzJhMzlhOTg5NTVm
ZDQ0MzAuLjk3NTZmNTE5MjBkNjRjNDJjZGMwMDY4MTE1Mjc3ZWIxMTNkYjdkM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjgzLDcgKzI4Myw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwKICAgICAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5
V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpIHsKLSAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNl
IGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291cmNl
IHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAyNTk0NDk0MjM4NTVmZWQzYWFhYWI0
MTQ4MTlmODk1MWEzYjhiN2ZmLi4zMTBmY2E3ODc1YzMyYzNjZDc0NzhkYjY0ZjU5YWMyY2Y1MDE2
MzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBib28KICAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRl
cmNlcHRSZXNwb25zZShtX2NvcmVMb2FkZXItPmZyYW1lKCksIHJlc3BvbnNlKSkgewogICAgICAg
ICBhdXRvIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIgPSBtX2NvcmVMb2FkZXItPmlkZW50
aWZpZXIoKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmJlZ2luSW50ZXJjZXB0aW5n
UmVzcG9uc2UoaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllcik7Ci0gICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UobV9jb3JlTG9hZGVyLT5m
cmFtZSgpLCByZXNwb25zZSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVy
LCBwb2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShwb2xpY3lEZWNpc2lv
bkNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgaW5zcGVjdG9yUmVz
cG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG92ZXJyaWRlRGF0YSkgbXV0YWJsZSB7CisgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UobV9j
b3JlTG9hZGVyLT5mcmFtZSgpLCByZXNwb25zZSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmll
ciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpbnRlcmNlcHRlZFJlcXVl
c3RJZGVudGlmaWVyLCBwb2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShw
b2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
aW5zcGVjdG9yUmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdmVycmlk
ZURhdGEpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29y
ZUxvYWRlci0+aWRlbnRpZmllcigpKSB7CiAgICAgICAgICAgICAgICAgV0VCUkVTT1VSQ0VMT0FE
RVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgaW50ZXJj
ZXB0IGxvYWQgYmVjYXVzZSBubyBjb3JlTG9hZGVyIG9yIG5vIElEIik7CiAgICAgICAgICAgICAg
ICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmNvbnRpbnVlUmVzcG9uc2UoaW50ZXJjZXB0ZWRSZXF1
ZXN0SWRlbnRpZmllcik7CkBAIC0yOTUsMTEgKzI5NSwxMSBAQCB2b2lkIFdlYlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYg
aGFuZAogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlUmVzb3VyY2UgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygp
LmxhdGluMSgpLmRhdGEoKSk7CiAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRp
ZFJlY2VpdmVSZXNvdXJjZToiKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAg
ICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIGJ1
ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIHNlbnQgZnJvbSB0aGUgbmV0d29yayBwcm9jZXNz
LiIpOwotICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJl
c291cmNlOiBVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZlciIpOworICAgICAgICBXRUJSRVNP
VVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiBVbmFibGUgdG8gY3Jl
YXRlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIiKTsKICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0g
bV9jb3JlTG9hZGVyLT5mcmFtZSgpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogcGFnZSA9IGZy
YW1lLT5wYWdlKCkpCiAgICAgICAgICAgICAgICAgcGFnZS0+ZGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6
OmludGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpjcmVh
dGVTaGFyZWRCdWZmZXJGYWlsZWRLZXkoKSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5k
ZXggNDJkZTQ2MTQxOTc3OGI3YzQ1MGZjYTFlYjAzN2MxY2U5N2QyZDYzMS4uYTdmNDVjODQwMWIy
ZmQyZjg3MGUzNjc4YzU4ZmMzMTBjMmUxZjI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtMjA3LDcgKzIwNyw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCkgZmluYWwgeyB9
CiAgICAgYm9vbCBnZXRGb3JtVmFsdWUoU3RyaW5nJiBmb3JtVmFsdWUpIGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgYm9vbCBoYW5kbGVTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9u
LCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSkgZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29u
c3QgZmluYWw7CiAgICAgdm9pZCB3aWxsRGV0YWNoUmVuZGVyZXIoKSBmaW5hbDsKICAgICBib29s
IHBsdWdpbkhhbmRsZXNDb250ZW50T2Zmc2V0Rm9yQWNjZXNzaWJpbGl0eUhpdFRlc3QoKSBjb25z
dCBmaW5hbDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLm1tCmluZGV4IGQyM2FiYjllNjUxMWIxM2JiZDUyM2FmNDUxZjQ0MTc4NzNh
NmMxZTAuLmQ0N2YzMmI3ZDQ5MTk1NmJkY2U3N2JmZTZmMTVjYTc4NjViZmQxOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAt
MjU1Miw3ICsyNTUyLDcgQEAgdm9pZCBQREZQbHVnaW46Om5vdGlmeURpc3BsYXlNb2RlQ2hhbmdl
ZChpbnQpCiAgICAgdXBkYXRlU2Nyb2xsYmFycygpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBQREZQbHVnaW46OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IFBERlBsdWdpbjo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAg
TlNEYXRhICpwZGZEYXRhID0gbGl2ZURhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaAppbmRleCA4OGY0NWNlNTFjZTMxZGYwYzViM2I3NTg2MjM2YzNmMGQ5
YzkzYWQzLi41OGQ3MGEzOWExNmQ2YTRjMGU4YjBjYTlkMDNhYzNkMzdhZWRmY2UwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtNjEsNyArNjEsNyBAQCBj
bGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgU2Ny
b2xsYmFyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yODgsNyArMjg4LDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0VG9Sb290Vmlldyhjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgcG9pbnRJbkxvY2FsQ29vcmRpbmF0ZXMpIGNvbnN0OwogCi0gICAg
dmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wg
cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKaW5kZXggZDU0ZjI3ZjA3MDkxNDdlOWVkZWMwNmRlNThjMWU4Y2MxMjMxYTY3Ny4u
N2ZiMjBjNTkyZGJmYTA5NmUzOGJjMTY4NzAzNzM4Y2I4ZjQwN2M5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTI4OSw2ICsyODks
NyBAQCBQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KEhUTUxQbHVnSW5FbGVtZW50JiBwbHVnaW5FbGVt
ZW50LCBSZWY8UGx1Z2luPiYmIHBsdWdpbiwgYwogICAgICwgbV93ZWJQYWdlKHdlYlBhZ2UobV9w
bHVnaW5FbGVtZW50LmdldCgpKSkKICAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogICAg
ICwgbV9wZW5kaW5nVVJMUmVxdWVzdHNUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZQbHVn
aW5WaWV3OjpwZW5kaW5nVVJMUmVxdWVzdHNUaW1lckZpcmVkKQorICAgICwgbV9tYW51YWxTdHJl
YW1EYXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKICAgICBtX3dl
YlBhZ2UtPmFkZFBsdWdpblZpZXcodGhpcyk7CiB9CkBAIC00MDMsOSArNDA0LDYgQEAgdm9pZCBQ
bHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMs
IGludCBsZW5ndGgpCiAKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBBU1NF
UlQobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6SGFzUmVjZWl2ZWRS
ZXNwb25zZSk7Ci0gICAgICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRhKQotICAgICAgICAgICAg
bV9tYW51YWxTdHJlYW1EYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAgICAgICBt
X21hbnVhbFN0cmVhbURhdGEtPmFwcGVuZChieXRlcywgbGVuZ3RoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTQzNyw3ICs0MzUsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWRE
aWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIGlmICghbV9pc0luaXRpYWxp
emVkKSB7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtU3RhdGUgPSBNYW51YWxTdHJlYW1TdGF0ZTo6
RmluaXNoZWQ7CiAgICAgICAgIG1fbWFudWFsU3RyZWFtRXJyb3IgPSBlcnJvcjsKLSAgICAgICAg
bV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRh
LT5yZXNldCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MjYsMTEgKzkyNCwxMSBA
QCB2b2lkIFBsdWdpblZpZXc6OndpbGxEZXRhY2hSZW5kZXJlcigpCiAgICAgbV9wbHVnaW4tPndp
bGxEZXRhY2hSZW5kZXJlcigpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3
OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNJ
bml0aWFsaXplZCB8fCAhbV9wbHVnaW4pIHsKLSAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0
YSAmJiBtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkK
LSAgICAgICAgICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgICAgIGlmIChtX21h
bnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKKyAgICAgICAg
ICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGEtPmdldCgpOwogCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KQEAgLTEyNDIsMTAgKzEyNDAsMTAgQEAgdm9pZCBQbHVnaW5WaWV3Ojpy
ZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQogICAgIG1hbnVhbExvYWREaWRSZWNlaXZlUmVzcG9uc2Uo
bV9tYW51YWxTdHJlYW1SZXNwb25zZSk7CiAKICAgICAvLyBEZWxpdmVyIHRoZSBkYXRhLgotICAg
IGlmIChtX21hbnVhbFN0cmVhbURhdGEpIHsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVt
ZW50IDogKm1fbWFudWFsU3RyZWFtRGF0YSkKKyAgICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YS0+
aXNOdWxsKCkpIHsKKyAgICAgICAgYXV0byBidWZmZXIgPSBtX21hbnVhbFN0cmVhbURhdGEtPnRh
a2UoKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQog
ICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0
YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0
YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFu
dWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDIxMjZlYjhlZGI1NTkzODZiMzQyMjVlYjJiZDViZmNk
NjgwMjNmMjMuLmQxNTNhMjljYTE0YTkwZTMyMjdhODkxZTNlZWY1ZTRlNzk3MzUxYTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTQxLDYg
KzQxLDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIC8vIEZJ
WE1FOiBFdmVudHVhbGx5IHRoaXMgc2hvdWxkIG1vdmUgdG8gV2ViQ29yZS4KIApAQCAtMTE1LDcg
KzExNiw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxkQWxsb3dTY3JpcHRpbmcoKTsKIAot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25z
dDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291
cmNlRGF0YSgpIGNvbnN0OwogICAgIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0
aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAgICBTdHJpbmcgZ2V0U2VsZWN0aW9u
Rm9yV29yZEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIGNvbnN0OwogICAgIGJv
b2wgZXhpc3RpbmdTZWxlY3Rpb25Db250YWluc1BvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmKSBjb25zdDsKQEAgLTI1Miw3ICsyNTMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSBtX21hbnVhbFN0cmVhbVJlc3BvbnNlOwogICAgIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgbV9tYW51YWxTdHJlYW1FcnJvcjsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKIAogICAgIC8vIFRoaXMgc25h
cHNob3QgaXMgdXNlZCB0byBhdm9pZCBzaWRlIGVmZmVjdHMgc2hvdWxkIHRoZSBwbHVnaW4gcnVu
IEpTIGR1cmluZyBwYWludGluZy4KICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX3RyYW5z
aWVudFBhaW50aW5nU25hcHNob3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
Y3BwCmluZGV4IGZlZThmZWE3YmNjOGQ1OWMwN2UzYzViYTRkNjA5NTUyYTRkNjI4YmYuLmIwNGNj
Y2YxMTNlNDkyOGZhNjYzODNiZDI0MzFkYjg3NDg1M2NjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC03MSwxNiArNzEsMTUgQEAgdm9pZCBXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBtX25lZWRzQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAotdm9p
ZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93
YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7Ci0gICAgICAgIGlm
ICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURh
dGEpKQotICAgICAgICAgICAgbV9yZXNwb25zZURhdGEgPSBidWZmZXItPmNvcHkoKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9u
c2VEYXRhKS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGlmICghc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkpCisgICAg
ICAgICAgICBtX3Jlc3BvbnNlRGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsKKyAgICAgICAg
c3RkOjpnZXQ8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpLmFwcGVuZChXVEZN
b3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDYsOCArMjA1LDgg
QEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZSgpCiAgICAgc3dpdGNoT24obV9yZXNwb25zZURhdGEsIFt0aGlzXShzdGQ6Om51
bGxwdHJfdCYpIHsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmlu
aXNoKCk7Ci0gICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAg
ICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICB9LCBbdGhpc10oY29uc3Qg
U2hhcmVkQnVmZmVyQnVpbGRlciYgYnVmZmVyKSB7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKCpi
dWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRG
aW5pc2goKTsKICAgICB9LCBbdGhpc10oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAppbmRleCBiMzQ3Y2FkMmFiNWY1NzFiMWEwZTIw
NzIwODA0MzY3ZDc3MDE4NjAwLi42YjBhNDE3Y2YwZDNhZTBkN2I4OTNhOTk4NjgzYWJmMmJjNGE0
ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaExvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VydmljZVdvcmtlckZldGNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29y
a2VyVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00OSw3ICs1MCw3IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3Rpb24o
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPFdlYkNvcmU6OkZv
cm1EYXRhPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoKCkgZmluYWw7CkBAIC04Miw3ICs4
Myw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxCbG9iTG9hZGVyPiBtX2Jsb2JMb2Fk
ZXI7CiAgICAgYm9vbCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
TWVzc2FnZSB7IGZhbHNlIH07Ci0gICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVm
PFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKKyAgICBzdGQ6OnZhcmlh
bnQ8c3RkOjpudWxscHRyX3QsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIsIFJlZjxXZWJD
b3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNw
b25zZURhdGE7CiAgICAgYm9vbCBtX2RpZEZpbmlzaCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwCmluZGV4IDgxZTM3OWUzM2QxYTlhY2RjODZlZjVjNGJlMjFhNzI2MGQ5NGQ0
OGUuLjdjZmMwM2E4NWQzOWQ4MWYzOTJjMGFhMTMwZjgzZmJkMmM4MzRmMWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNo
b3VsZEFwcGx5U3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSwgY29uc3Qgc3RkOjoK
IAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFt
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lz
dGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEo
aWRlbnRpZmllciwgY29udGVudFR5cGUsIHByZWZlcnJlZEZpbGVOYW1lLCBkYXRhLmdldCgpKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNTA2ZDlmNTQxMzhkMzdjYjRjNjRlZDQ2MGY1OWE1
YzI4ZmU1MjJhNi4uYjA1ODYxODkxZWNjODRjNjM2OGEyMDZjMjcwMTA2MGY1MDUyZjVlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hv
dWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUoY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBjb25z
dCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYpIGZpbmFsOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKLSAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRG
aWxlTmFtZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBy
ZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0
YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJB
dHRhY2htZW50cyhWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDRiZGJiY2NkM2ZiYzYy
MGUwNzU0MTA1Y2VhMDllZGRmMDUxMjBiNmIuLjE0YTA4M2NhMjA3YTkwNjNjZjgwYjFlN2U5Njcw
YTQ4N2NmNGQzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE4OCw4
ICsxMTg4LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWlu
UmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgICAgICAgICBJ
UEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJl
c291cmNlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNv
dXJjZURhdGEtPnNpemUoKSA6IDApOworICAgICAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsK
KyAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJj
ZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxs
cHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CiAg
ICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlz
aExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5z
dWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7CiAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCBmNDFhNzBlZjViYjZjMGVjZThiZDg2Mjc0
MTE2MDFjZjczMGU2MmExLi40YThiZWU1N2ZkYjFmZmNkZWYwMDg5ZmE2NWU5NzUzNzUwZDI1MGU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBA
IGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjCiAgICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50OwogfQog
Ci1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRC
dWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitpbnQ2
NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQog
ewogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKICAgICBpZiAoYnVmZmVyICYmIGJ1
ZmZlci0+c2l6ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggZTI4MDk5
NjNmNGY1MDY4MWI3ZDAxZjQxYTY4NTMxYWI3MzIxNGZiMC4uMWZmODNlMTFiYzE3ODlhYWMwZjkw
MGM5M2RjMjJmYmYyMzllYTJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAt
NjYsNyArNjYsNyBAQCBwcml2YXRlOgogCiAgICAgaW50NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0
X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
KyAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgaW50NjRfdCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlBy
ZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRleCAwN2IxNjdlMGVlZWU3
Njg4NzViMDM5ZGZhNTlmNWZkMTNjNzU0ZTEwLi5kNDE1OTA0YzcxYjFjMGM3MmEzZTE3Y2Y3YjM0
NTIwYWEyNzkwMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5j
cHAKQEAgLTQ1LDEzICs0NSwxMyBAQCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cgogICAgIDogbV9m
aWxlTmFtZSB7IGZpbGVOYW1lIH0KICAgICAsIG1fdXRpIHsgdXRpIH0KICAgICAsIG1fcGFnZUlE
IHsgcGFnZUlEIH0KLSAgICAsIG1fYnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9Cisg
ICAgLCBtX2J1ZmZlciB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9CiB7
CiB9CiAKIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6On5XZWJQcmV2aWV3TG9hZGVyQ2xpZW50KCkg
PSBkZWZhdWx0OwogCi12b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGll
bnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIGF1dG8gd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2Uo
bV9wYWdlSUQpOwogICAgIGlmICghd2ViUGFnZSkKQEAgLTY5LDEzICs2OSwxMiBAQCB2b2lkIFdl
YlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoKQogICAgIGlmICghd2ViUGFn
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXIuZ2V0KCkpOwotICAgIG1fYnVmZmVyLT5j
bGVhcigpOworICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lKG1fYnVmZmVyLT50YWtlKCkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlByZXZpZXdM
b2FkZXJDbGllbnQ6OmRpZEZhaWwoKQogewotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIG1f
YnVmZmVyLT5yZXNldCgpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJl
cXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwNDky
Y2VlYzJmOWI5Y2Q4NTM4Mzg0ODRmYmMyNmMwN2NiNTNkYTg3Li5jYzNiMjRiNzI5YjIxOGI4MGQz
N2ExMmNkN2ZhYzNkZmE5YmVkMWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJD
bGllbnQuaApAQCAtMjksOCArMjksMTMgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5UHJl
dmlld0xvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4K
KyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7Cit9
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGcmFtZTsKQEAgLTQ1LDcgKzUwLDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGksIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoKSBvdmVycmlkZTsKICAgICBib29s
IHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
QEAgLTU0LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcgbV9maWxlTmFtZTsK
ICAgICBjb25zdCBTdHJpbmcgbV91dGk7CiAgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgbV9wYWdlSUQ7Ci0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cisg
ICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fYnVmZmVyOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5k
ZXggYTY0YzZhOGIzYzY5NWUxNzMzNjQzMzZiY2IwZjY4ZGJkZDljMmQyMS4uZTFlMGU2MTEyYTJk
ZWRjM2I4YmI2MzA5ODUzNTM3NmVmNDNhZDUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1h
Yy5tbQpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdy
aXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAKICAgICBO
U1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IGltYWdlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2Uo
KTsKICAgICAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGltYWdlLT5p
bWFnZSgpLT5kYXRhKCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5k
YXRhKCk7CiAgICAgc2l6ZV90IGltYWdlU2l6ZSA9IGltYWdlQnVmZmVyLT5zaXplKCk7CiAKICAg
ICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqaW1h
Z2VCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwCmluZGV4IDliZDRjZDJkMGNiMTAzYjQ1YWE4ZTZjMWQ0MjdjMGIxN2JmNWVkMTMuLmQ4OGY0
NGNmY2RlNWUxNWY2NmMxMjRiNDBmNWI1NDM1Yjk0Njk3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTM0MCwxMCArMzQwLDEwIEBAIFN0
cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29uc3QKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1l
bnRMb2FkZXIgPSBtX2NvcmVGcmFtZS0+bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKTsK
ICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5t
YWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1h
aW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAg
IGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJl
dHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCks
IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CisgICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5n
KCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFp
blJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjpjb250ZW50c0Fz
U3RyaW5nKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IGIzYjBmYmNjNzZlNjBmNjc4YmYxYzZkZTUyMTMwNTk4Y2IyZDAwODguLmFj
ZTIzMTU2NjJlMjBmNmYwNDA4NzVjZTU0N2U1OWRhZjFmZTk4NDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNzM4LDcgKzE3MzgsNyBAQCBO
T19SRVRVUk4gdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdFdhaXRpbmdGb3JQcm9jZXNzTGF1bmNo
KExvYWRQYXJhbWV0ZXJzJiYsIFVSTAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwg
c3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBzaGFyZWRCdWZmZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBTdWJzdGl0dXRlRGF0YTo6
U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgU2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQordm9p
ZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBTaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBzaGFyZWRCdWZmZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBTdWJzdGl0dXRlRGF0YTo6
U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgU2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQogewog
I2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluKGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sICZtX21haW5GcmFtZS5nZXQo
KSk7CkBAIC0xNzUzLDcgKzE3NTMsNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaAogCiAgICAg
Ly8gTGV0IHRoZSBJbmplY3RlZEJ1bmRsZSBrbm93IHdlIGFyZSBhYm91dCB0byBzdGFydCB0aGUg
bG9hZCwgcGFzc2luZyB0aGUgdXNlciBkYXRhIGZyb20gdGhlIFVJUHJvY2VzcwogICAgIC8vIHRv
IGFsbCB0aGUgY2xpZW50IHRvIHNldCB1cCBhbnkgbmVlZGVkIHN0YXRlLgotICAgIG1fbG9hZGVy
Q2xpZW50LT53aWxsTG9hZERhdGFSZXF1ZXN0KCp0aGlzLCByZXF1ZXN0LCBjb25zdF9jYXN0PFNo
YXJlZEJ1ZmZlcio+KHN1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKSksIHN1YnN0aXR1dGVEYXRhLm1p
bWVUeXBlKCksIHN1YnN0aXR1dGVEYXRhLnRleHRFbmNvZGluZygpLCBzdWJzdGl0dXRlRGF0YS5m
YWlsaW5nVVJMKCksIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybUhhbmRsZXNUb09i
amVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBtX2xvYWRlckNsaWVudC0+d2ls
bExvYWREYXRhUmVxdWVzdCgqdGhpcywgcmVxdWVzdCwgY29uc3RfY2FzdDxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKj4oc3Vic3RpdHV0ZURhdGEuY29udGVudCgpKSwgc3Vic3RpdHV0ZURhdGEubWlt
ZVR5cGUoKSwgc3Vic3RpdHV0ZURhdGEudGV4dEVuY29kaW5nKCksIHN1YnN0aXR1dGVEYXRhLmZh
aWxpbmdVUkwoKSwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtSGFuZGxlc1RvT2Jq
ZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogCiAgICAgLy8gSW5pdGF0ZSB0aGUgbG9h
ZCBpbiBXZWJDb3JlLgogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCgqbV9t
YWluRnJhbWUtPmNvcmVGcmFtZSgpLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CkBAIC0zODYx
LDcgKzM4NjEsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogCiB2b2lkIFdlYlBhZ2U6Omdl
dE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlm
IChXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFt
ZUlEKSkgewogICAgICAgICBpZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IHBsdWdpblZpZXdG
b3JGcmFtZShmcmFtZS0+Y29yZUZyYW1lKCkpKQogICAgICAgICAgICAgYnVmZmVyID0gcGx1Z2lu
Vmlldy0+bGl2ZVJlc291cmNlRGF0YSgpOwpAQCAtMzg3Nyw3ICszODc3LDcgQEAgdm9pZCBXZWJQ
YWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
Q29tcGxldGlvbkhhbmQKICAgICBjYWxsYmFjayhkYXRhUmVmZXJlbmNlKTsKIH0KIAotc3RhdGlj
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwg
Y29uc3QgVVJMJiByZXNvdXJjZVVSTCkKK3N0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291
cmNlVVJMKQogewogICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWxvYWRlcikKQEAgLTM4OTIsNyArMzg5Miw3IEBA
IHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSog
ZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyCiAKIHZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRh
RnJvbUZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNl
VVJMU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQogewotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LndlYkZyYW1lKGZyYW1lSUQpKSB7CiAgICAgICAgIFVSTCByZXNvdXJjZVVSTChVUkwoKSwgcmVz
b3VyY2VVUkxTdHJpbmcpOwogICAgICAgICBidWZmZXIgPSByZXNvdXJjZURhdGFGb3JGcmFtZShm
cmFtZS0+Y29yZUZyYW1lKCksIHJlc291cmNlVVJMKTsKQEAgLTY5NzcsNyArNjk3Nyw3IEBAIHZv
aWQgV2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxs
YmFja0lEIGxvYWRJZGVudGlmaWVyCiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBkb2N1bWVudExvYWRlci0+ZGlk
R2V0TG9hZERlY2lzaW9uRm9ySWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIudG9JbnRlZ2Vy
KCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyKiBpY29uRGF0YSkgbXV0YWJsZSB7CisgICAgZG9jdW1lbnRMb2Fk
ZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLnRv
SW50ZWdlcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGljb25EYXRhKSBtdXRhYmxlIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBpY29uRGF0YSB9KTsKICAgICB9KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAzNWMyM2ZlNjAy
ZWI0ZjkwNDFhYmIwYTk4N2U3ZDJmMGNhMGY4YjNlLi5mNmRkZDc4ZWExOTg4ZTFmY2FjOTA3NGJm
NTZlN2FiMWJiMWNiNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCkBAIC0yMTYsNyArMjE2LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CiBjbGFzcyBTZWxlY3Rpb25H
ZW9tZXRyeTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNzIFRleHRDaGVja2luZ1JlcXVlc3Q7CiBj
bGFzcyBWaXNpYmxlUG9zaXRpb247CkBAIC0xMzk2LDcgKzEzOTYsNyBAQCBwdWJsaWM6CiAKICNp
ZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGkp
OwotICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUo
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJik7CiAgICAgdm9pZCByZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgU3RyaW5nJik+JiYpOwogI2VuZGlmCiAKQEAgLTE1OTksNyArMTU5OSw3IEBAIHBy
aXZhdGU6CiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAotICAgIHZv
aWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6U2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYs
IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29u
c3QgVXNlckRhdGEmLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwg
V2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgV2ViQ29y
ZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKKyAgICB2b2lkIGxvYWREYXRhSW1wbCh1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2Vy
RGF0YSYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBXZWJDb3Jl
OjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5LCBXZWJDb3JlOjpTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwogCiAgICAgLy8gQWN0aW9ucwogICAgIHZvaWQgdHJ5
Q2xvc2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGM5NWMzODQ2
MzkyMjE4NGYyNTdhNzE5ZGI1YmE5YTQ4MjlhZWRmMWIuLjg1ZTY1MTg2OTJlZDYwYzc4OGU3MmE3
Y2UzMmYzZjBlMTVjYTc3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0zMjE3LDcgKzMyMTcsNyBAQCB2b2lkIFdlYlBh
Z2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQogICAgICAgICBDYWNo
ZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKmVsZW1lbnQucmVu
ZGVyZXIoKSkuY2FjaGVkSW1hZ2UoKTsKICAgICAgICAgaWYgKCFjYWNoZWRJbWFnZSkKICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gY2Fj
aGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsKICAgICAg
ICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gc2hhcmVk
TWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpAQCAtNDY4
Myw3ICs0NjgzLDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWUoZmlsZU5hbWUsIHV0aSkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExvYWRGb3JR
dWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQor
dm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKCFi
dWZmZXIuaXNFbXB0eSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCBlMThkMTBjM2ZjNGYxOGQ3
M2EyYTc0MGM1MzMxMzEzNDNmZjMzY2FmLi5jNjFiODUxMmJhM2NmY2M4OWU0MzViZjk0MzQ0ZGQ3
MjkxNzI1YjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMjI4LDExICsyMjgsNyBAQCBib29sIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnRFbgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVU5VU0VEX1BB
UkFNKG1vZGUpOwogI2lmIEhBVkUoQVZLSVQpCi0jaWYgSEFWRShVSUtJVF9XRUJLSVRfSU5URVJO
QUxTKQotICAgIHJldHVybiBtb2RlID09IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZVN0YW5kYXJkOwotI2Vsc2UKICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogI2Vs
c2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTI0Myw3ICsyMzksNyBAQCBib29sIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnRFbgogCiBib29sIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRz
VmlkZW9GdWxsc2NyZWVuU3RhbmRieSgpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkgJiYgIUhBVkUoVUlLSVRfV0VCS0lUX0lOVEVSTkFMUykKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcAppbmRleCBkM2QzOGNh
YzQxMjExZDdlMjliNTdmMjQ1MjM2NGUzN2I0MjNjMzFhLi4zN2YyN2U5NTJkMDcxNzExMjFjYjRm
NTQ4N2E4Yjg0YjlmOGE2MzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
d2luL1dlYlByb2Nlc3NXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4v
V2ViUHJvY2Vzc1dpbi5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUv
U2hhcmVkQnVmZmVyLmg+CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNv
dXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUp
CiB7CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1
cHBvcnQvUGluZ0hhbmRsZS5oCmluZGV4IDFmNTU4NGZhMzg3ZDc2Y2NlOTRmZjdiNTY5NjhlN2U4
MjIwNjA2MDYuLmEyNTU2MGExMGMyODgyZTFhYmQxNzg0NTY5NDg2ZWExM2VkODk2ZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCkBAIC03
Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAg
ICAgIHBpbmdMb2FkQ29tcGxldGUoeyB9LCByZXNwb25zZSk7CiAgICAgfQotICAgIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIGludCkgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KKyAgICB2b2lk
IGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50KSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUo
KTsgfQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgcGluZ0xvYWRDb21w
bGV0ZSgpOyB9CiAgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0
ZShlcnJvcik7IH0KICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlKikgZmluYWwgeyByZXR1cm4gbV9zaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0
RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVu
c2lvbnMubW0KaW5kZXggZWIzOTQxZjI2NmRmMTNjMjhhOTA2ZWU3ZDE2MWFlMjFlMTc1NDA5MS4u
NjM1NWI2ZjkwMzE4MDA1NWNiNjA3YTgwYmU3NzAxMzg0ZDg4ZGQ3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCkBAIC0zODgsNyAr
Mzg4LDcgQEAgLSAoTlNEYXRhICopZGF0YVJlcHJlc2VudGF0aW9uOihCT09MKXJhd0ltYWdlRGF0
YQogICAgIGF1dG8qIGRhdGEgPSByYXdJbWFnZURhdGEgPyBjYWNoZWRJbWFnZS0+cmVzb3VyY2VC
dWZmZXIoKSA6IGltYWdlLT5kYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4g
bmlsOwotICAgIHJldHVybiBkYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAg
IHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFz
ZSgpOwogfQogCiAtIChOU1N0cmluZyAqKW1pbWVUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAppbmRleCBhMjU5OGYzMmZiNzYwYTdkODgzYzlmNGNlZWMxOGNmNTkxZWI4ZWFkLi45NTlkNzQ4
YjU2YmUxMDc2YmQ5Nzc5OTIyY2QzNTZkMjFhNjgxNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKQEAgLTI0OCw3ICsyNDgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZEgyUGluZyhj
b25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFNlY29uZHMsIFdlYkNv
cmU6OlJlc291cmNlRXJyb3I+JiYpPiYmKSBmaW5hbDsKIAogICAgIHZvaWQgZ2V0TG9hZERlY2lz
aW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3JlOjpMaW5rSWNvbiYsIHVp
bnQ2NF90Pj4mKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6
U2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGJvb2wgbV9sb2FkaW5nSWNvbiB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
CmluZGV4IGI4NDlkMmFhYzJhOTNmYmVlNDE3MjlmMjRhODZjZGNmNmIxZmUwMTkuLmFhMmNjOTgx
NDc0YTEzY2U1MDg0Nzk4OTQyMzY4NDQ5MWM4OGY2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCkBAIC0yMDEyLDcgKzIwMTIsNyBAQCBSZWZQdHI8V2ViQ29yZTo6TGVnYWN5UHJldmll
d0xvYWRlckNsaWVudD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVByZXZpZXdMbwogICAg
ICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fZmlsZVBhdGg7CiAgICAgICAgIFJldGFpblB0cjxO
U0ZpbGVIYW5kbGU+IG1fZmlsZUhhbmRsZTsKIAotICAgICAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlCisgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gZGF0YUFy
cmF5ID0gYnVmZmVyLmNyZWF0ZU5TRGF0YUFycmF5KCk7CiAgICAgICAgICAgICBmb3IgKE5TRGF0
YSAqZGF0YSBpbiBkYXRhQXJyYXkuZ2V0KCkpCkBAIC0yMDk0LDcgKzIwOTQsNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8
c3RkOjpwYWlyPFdlYkNvcgogICAgICAgICB9CiAKICAgICAgICAgbV9sb2FkaW5nSWNvbiA9IHRy
dWU7Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRy
dWUsIGljb24tPnNlY29uZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGJ1ZmZlcikgeworICAgICAgICBkb2N1bWVudExvYWRlci0+
ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29uLT5zZWNvbmQsIFt0aGlzLCB3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogYnVmZmVyKSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIGZpbmlzaGVkTG9hZGluZ0ljb24oYnVmZmVyKTsKQEAgLTIx
MzEsNyArMjEzMSw3IEBAIHN0YXRpYyBOU0ltYWdlICp3ZWJHZXROU0ltYWdlKFdlYkNvcmU6Oklt
YWdlKiBpbWFnZSwgTlNTaXplIHNpemUpCiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24oV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyKiBpY29uRGF0YSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogaWNv
bkRhdGEpCiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQVNTRVJUKG1fbG9hZGlu
Z0ljb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAyNGI2OTk3MDZkZjBkNmI3
MTkyYWE1MjAyZGU2MWQ4YjFlNTczMmY5Li41MjdmYTU1MjE5MGJhMDAxNDUxN2ZmZGU3Mzc3MjBi
MmU3YTkwYWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNzUsNyArNzUsNyBA
QCBwcml2YXRlOgogCiAgICAgaW50NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VHlwZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
LSAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90
IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBz
ZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgaW50NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMubW0KaW5kZXggZmMwNzc2ZTYyZDY2YmU5YWM5M2Q0ODdkZGZkMzAwYTZkNDA3YzU1
My4uMzk4Njg1OWY3MzM4ZTI4NDU3ZWQ0YjE5MGNiYTY3MDUyMjEwMDI0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTU0LDcgKzE1NCw3IEBAIGludDY0X3QgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBjCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0
VHlwZXMocGFzdGVib2FyZFR5cGVzKTsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJG
b3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5h
bWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLCBwYXN0ZWJvYXJkVHlwZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggMjg5
YzAwMjliZjkxMzQxOGQwYjI5OWY5MGE0ZDk3MTEzYmM1OGE0Yi4uODNlODU5MTQzNDVlYTdjYjg0
MWQ5OWZkMWZiNjY2ZDhjY2YwMzAyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNDYwLDEwICs0NjAsMTAgQEAgLSAodm9pZClk
ZWFsbG9jCiAKIC0gKE5TRGF0YSAqKWRhdGEKIHsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5t
YWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1h
aW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmF1
dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGlkIDxXZWJEb2N1bWVu
dFJlcHJlc2VudGF0aW9uPilyZXByZXNlbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQppbmRleCA4MGNk
MzBlZjQ2NzYwZTE0YzhlNjdhODhhMjczM2M5ZDQzN2ZhNWQ5Li4zOGQ3ZTUzMmQ2ZWFhMGNhYzM4
ODYyZjNlMGUxNjlmZTI4MTI3N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQpAQCAtMjMwLDcgKzIzMCw3
IEBAIC0gKEJPT0wpY2FuU2F2ZUFzV2ViQXJjaGl2ZQogLSAoTlNTdHJpbmcgKilkb2N1bWVudFNv
dXJjZQogewogICAgIGlmIChbc2VsZiBfaXNEaXNwbGF5aW5nV2ViQXJjaGl2ZV0pIHsgICAgICAg
ICAgICAKLSAgICAgICAgU2hhcmVkQnVmZmVyICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0
ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOworICAg
ICAgICBhdXRvICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9j
dW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOwogICAgICAgICByZXR1cm4gYWRvcHRO
UyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6cGFyc2VkQXJjaGl2ZURhdGEgPyBwYXJz
ZWRBcmNoaXZlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZW5jb2Rpbmc6TlNVVEY4
U3RyaW5nRW5jb2RpbmddKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggODM4ZTQxMzM4MWE4MDc1
YTNkNjI0NTk0NTUyNjdhNWJiYjU1YTk5MS4uMjhkODc1OTI5Y2NhY2RiOWExMzg4YTgyNmIyZmQ1
ZWNmNDZlY2NkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tCkBAIC0zNTQwLDggKzM1NDAsOCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0
ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaAog
ICAgIH0KIAogICAgIGlmIChhdXRvKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgewot
ICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2Ut
PmRhdGEoKSkKLSAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2Ug
YWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5kYXRhKCkg
bGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKKyAgICAgICAgaWYgKFJlZlB0cjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQorICAg
ICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdp
dGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOwogICAgIH0KIAogICAgIGlmICgh
aGl0VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKS5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCmluZGV4IDEyMTk4ZjQwMWVhOGFk
NTc4ZGQ3YmRlYWNjMDRkZmI3ZTM0YWM3MzQuLmFhZGNmYmZlYTM1NmIzN2IwZjUzNzhhZmE4OThi
OGVhOTlhZTZhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJS
ZXNvdXJjZS5tbQpAQCAtMTYzLDIxICsxNjMsMjEgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
Q29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCiAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2Rl
ciAqKWVuY29kZXIKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IF9wcml2YXRlLT5jb3JlUmVzb3Vy
Y2UuZ2V0KCk7Ci0gICAgCi0gICAgTlNEYXRhICpkYXRhID0gbmlsOworCisgICAgUmV0YWluUHRy
PE5TRGF0YT4gZGF0YTsKICAgICBOU1VSTCAqdXJsID0gbmlsOwogICAgIE5TU3RyaW5nICptaW1l
VHlwZSA9IG5pbCwgKnRleHRFbmNvZGluZyA9IG5pbCwgKmZyYW1lTmFtZSA9IG5pbDsKICAgICBO
U1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IG5pbDsKLSAgICAKKwogICAgIGlmIChyZXNvdXJjZSkg
ewotICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKTsK
KyAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgICAgIHVybCA9IHJlc291cmNlLT51cmwoKTsKICAgICAgICAgbWltZVR5
cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgdGV4dEVuY29kaW5nID0gcmVzb3Vy
Y2UtPnRleHRFbmNvZGluZygpOwogICAgICAgICBmcmFtZU5hbWUgPSByZXNvdXJjZS0+ZnJhbWVO
YW1lKCk7CiAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkubnNVUkxSZXNw
b25zZSgpOwogICAgIH0KLSAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YSBmb3JLZXk6V2Vi
UmVzb3VyY2VEYXRhS2V5XTsKKyAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGF0YS5nZXQoKSBm
b3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dXJs
IGZvcktleTpXZWJSZXNvdXJjZVVSTEtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Om1p
bWVUeXBlIGZvcktleTpXZWJSZXNvdXJjZU1JTUVUeXBlS2V5XTsKICAgICBbZW5jb2RlciBlbmNv
ZGVPYmplY3Q6dGV4dEVuY29kaW5nIGZvcktleTpXZWJSZXNvdXJjZVRleHRFbmNvZGluZ05hbWVL
ZXldOwpAQCAtMjAyLDcgKzIwMiw3IEBAIC0gKE5TRGF0YSAqKWRhdGEKIAogICAgIGlmICghX3By
aXZhdGUtPmNvcmVSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gX3By
aXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7
CisgICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1VSTCAqKVVSTApA
QCAtMzY3LDggKzM2Nyw4IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ1ZhbHVlCiAgICAgaWYgKCFl
bmNvZGluZy5pc1ZhbGlkKCkpCiAgICAgICAgIGVuY29kaW5nID0gV2luZG93c0xhdGluMUVuY29k
aW5nKCk7CiAgICAgCi0gICAgU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRlLT5jb3Jl
UmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsKLSAg
ICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNv
cmVEYXRhID8gY29yZURhdGEtPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRh
LT5zaXplKCkgOiAwKTsKKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9w
cml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDog
bnVsbHB0cjsKKyAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6
IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKIH0KIAogQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRleCBiNDA3M2UxMDhi
ZDVjNzcwZGQ2MmExMDVhZmIwY2NhOWM0ZWYwMzhlLi4wODk3YzdjMDU0OGQyMGIxZWY0NWUzNWUx
YmY4ZDhlNDBlYTVkM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJE
YXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNl
LmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6ZGF0YShfQ09N
X091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0pCiAgICAgaWYgKCFtX2xvYWRlcikKICAgICAg
ICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAotICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0
ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCkpLmNvcHlSZWZUbyhzdHJlYW0p
OworICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWlu
UmVzb3VyY2VEYXRhKCktPm1ha2VDb250aWd1b3VzKCkpLmNvcHlSZWZUbyhzdHJlYW0pOwogfQog
CiBIUkVTVUxUIFdlYkRhdGFTb3VyY2U6OnJlcHJlc2VudGF0aW9uKF9DT01fT3V0cHRyX29wdF8g
SVdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24qKiByZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJG
cmFtZS5jcHAKaW5kZXggOTBhNWEwYTEzMzZlZWViYzhhZjVjZGVjMWI1YzYyMGU2ODIzMTliNS4u
NTU4ZTEzYzdmMWZkYWE1YjEyNWQyMGJlZmU3OTFhMjdmZjc1NzEyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkZyYW1lLmNwcApAQCAtNTU5LDcgKzU1OSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6
OmxvYWRSZXF1ZXN0KF9Jbl9vcHRfIElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgIHJldHVy
biBTX09LOwogfQogCi12b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNU
UiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpCit2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBC
U1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKQogewog
ICAgIFN0cmluZyBtaW1lVHlwZVN0cmluZyhtaW1lVHlwZSwgU3lzU3RyaW5nTGVuKG1pbWVUeXBl
KSk7CiAgICAgaWYgKCFtaW1lVHlwZSkKQEAgLTU4NSwyMSArNTg1LDIxIEBAIHZvaWQgV2ViRnJh
bWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1l
VHlwZSwgQlNUUiB0CiAKIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJl
YW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSIHRleHRFbmNvZGluZ05hbWUs
IF9Jbl8gQlNUUiB1cmwpCiB7Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgc2hhcmVkQnVmZmVyOwogCiAgICAg
U1RBVFNURyBzdGF0OwogICAgIGlmIChTVUNDRUVERUQoZGF0YS0+U3RhdCgmc3RhdCwgU1RBVEZM
QUdfTk9OQU1FKSkpIHsKICAgICAgICAgaWYgKCFzdGF0LmNiU2l6ZS5IaWdoUGFydCAmJiBzdGF0
LmNiU2l6ZS5Mb3dQYXJ0KSB7CiAgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YUJ1ZmZlcihz
dGF0LmNiU2l6ZS5Mb3dQYXJ0KTsKICAgICAgICAgICAgIFVMT05HIHJlYWQ7Ci0gICAgICAgICAg
ICAvLyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRv
IHJlYWQgcmlnaHQgaW50byB0aGUgU2hhcmVkQnVmZmVyCisgICAgICAgICAgICAvLyBGSVhNRTog
dGhpcyBkb2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQg
aW50byB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgogICAgICAgICAgICAgLy8gb3IgYWRvcHQg
dGhlIFZlY3RvciBvciBzb21ldGhpbmcuCiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGRhdGEt
PlJlYWQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PFVMT05HPihkYXRhQnVmZmVyLnNp
emUoKSksICZyZWFkKSkpCi0gICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoZGF0
YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsKKyAg
ICAgICAgICAgICAgICBzaGFyZWRCdWZmZXIuYXBwZW5kKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0
aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIuc2l6ZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBsb2FkRGF0YShXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmdO
YW1lLCB1cmwsIG51bGxwdHIpOworICAgIGxvYWREYXRhKHNoYXJlZEJ1ZmZlci50YWtlKCksIG1p
bWVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIpOwogICAgIHJldHVybiBTX09L
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaAppbmRleCA0MzYwNTRmZDlkZGI0N2Nh
MzI5NmIxMTc5ODE0MzRlYzE4OTdkYWQxLi5mYTljMzgxY2M1NzNiYTZiMjA5ODhlYWIzNTA4ZWQ5
YTMwYThmMTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKQEAgLTUwLDcgKzUwLDcg
QEAgY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIFBh
Z2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlND
b250ZXh0KiBKU0NvbnRleHRSZWY7CkBAIC0xOTUsNyArMTk1LDcgQEAgcHJpdmF0ZToKICAgICB+
V2ViRnJhbWUoKTsKIAogICAgIHZvaWQgbG9hZEhUTUxTdHJpbmcoX0luXyBCU1RSIHN0cmluZywg
X0luXyBCU1RSIGJhc2VVUkwsIF9Jbl8gQlNUUiB1bnJlYWNoYWJsZVVSTCk7Ci0gICAgdm9pZCBs
b2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBCU1RSIG1pbWVUeXBlLCBCU1RS
IHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKTsKKyAgICB2
b2lkIGxvYWREYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBCU1RS
IG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWls
aW5nVVJMKTsKICAgICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIGNvbXB1dGVQYWdl
UmVjdHMoSERDIHByaW50REMpOwogICAgIHZvaWQgc2V0UHJpbnRpbmcoYm9vbCBwcmludGluZywg
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBwYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiBvcmlnaW5hbFBhZ2VTaXplLCBmbG9hdCBtYXhpbXVtU2hyaW5rUmF0aW8sIFdlYkNvcmU6
OkFkanVzdFZpZXdTaXplT3JOb3QpOwogICAgIHZvaWQgaGVhZGVyQW5kRm9vdGVySGVpZ2h0cyhm
bG9hdCosIGZsb2F0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJL
aXRETEwuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcAppbmRleCA5
NjIwMTk4YjRiNTQwYWU2Zjc5NjdmODIzM2M5NDY0YmQyNzc1ODUxLi4yNzRiN2QyZDZjZjJlYjQ3
MWQ3YjhiODk2NTlhZTQ2OWNmOTM0YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRETEwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERM
TC5jcHAKQEAgLTE2NSw4ICsxNjUsOCBAQCB2b2lkIHNodXREb3duV2ViS2l0KCkKIH0KIAogLy9G
SVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIG1vdmluZyB0aGlzIHRvIGEgbmV3IGZpbGUgZm9yIGNy
b3NzLXByb2plY3QgZnVuY3Rpb25hbGl0eQotV0VCS0lUX0FQSSBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpOwotUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBj
aGFyKiBuYW1lKQorV0VCS0lUX0FQSSBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKTsKK1JlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNv
bnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgaW50IGlkcjsKICAgICAvLyB0ZW1wb3JhcnkgaGFjayB0
byBnZXQgcmVzb3VyY2UgaWQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCA3OTQ4YWYxOTg3YmZlNWE3YzJmNzQxYmJhNjBjMzllYTAyNWNkZTgxLi5l
YTEwNjBhYjBiZjJlYTI4MjUyNDZjNDM5YWJhZTkwZWM3NmIyNTBiIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjEt
MTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5h
bWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRC
dWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhl
aXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgICog
VGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHA6CisKKzIwMjEtMTEtMjggIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVm
ZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdHMuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1RfRik6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9t
IG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJk
YXI6Ly84NTMzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUX0YpOgorCiAyMDIxLTEyLTA1ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBw
bGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gQWRkIHRoZSBlbmNvZGluZy9kZWNvZGlu
ZyBmb3IgRmlsdGVyIGFuZCBGaWx0ZXJFZmZlY3QKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvRmlsZVN5c3RlbS5jcHAKaW5kZXggODU4M2IyOWFkOTkwYzIyYjQ3MmM4NjllY2NkODY4
Mjk2MjFiYjBiNC4uYjg0N2QzYTgyNmIzZDlmZmMwOGY2ZjNiZTM4MjYwYTZjNTlkZmYyYSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKQEAgLTQ0LDcg
KzQ0LDcgQEAgc3RhdGljIHZvaWQgY3JlYXRlVGVzdEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQog
ICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIH07CiAKLS8vIEZJWE1FOiBS
ZWZhY3RvciBGaWxlU3lzdGVtVGVzdCBhbmQgU2hhcmVkQnVmZmVyVGVzdCBhcyBhIHNpbmdsZSBj
bGFzcy4KKy8vIEZJWE1FOiBSZWZhY3RvciBGaWxlU3lzdGVtVGVzdCBhbmQgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlclRlc3QgYXMgYSBzaW5nbGUgY2xhc3MuCiBjbGFzcyBGaWxlU3lzdGVtVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIHB1YmxpYzoKICAgICB2b2lkIFNldFVwKCkgb3ZlcnJp
ZGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5
TGlzdFRlc3RzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5
TGlzdFRlc3RzLmNwcAppbmRleCBkMjNmN2UxZTcyOWUwNTU0NTNhYzFmMDUzYTIzNDUzMDI5NWNi
MjA1Li5lYTJhZTJjN2U4YjMwODUyMDViM2QzYzk3NDMwZWZhZWNlYmI5YjRlIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMu
Y3BwCkBAIC0xOTksNyArMTk5LDcgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVy
Q2xpZW50KQogICAgICAgICAgICAgcmV0dXJuIHsgZ2xvYmFsQnVmZmVySWRlbnRpZmllciwgZ2xv
YmFsSXRlbUJ1ZmZlciwgZ2xvYmFsSXRlbUJ1ZmZlckNhcGFjaXR5IH07CiAgICAgICAgIH0KIAot
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERp
c3BsYXlMaXN0SXRlbSYgZGlzcGxheUxpc3RJdGVtKSBjb25zdCBmaW5hbAorICAgICAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNw
bGF5TGlzdEl0ZW0mIGRpc3BsYXlMaXN0SXRlbSkgY29uc3QgZmluYWwKICAgICAgICAgewogICAg
ICAgICAgICAgYXV0byBpbmRleCA9IG1faXRlbXMuc2l6ZSgpOwogICAgICAgICAgICAgbV9pdGVt
cy5hcHBlbmQoc3RkOjpnZXQ8U3Ryb2tlUGF0aD4oZGlzcGxheUxpc3RJdGVtKSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4
IGRkYmZjMWYyYjE4MjFjYjFkZmFiYzhlMmY2MzI3YjIxMmM3Y2E0NjguLmEwNjMwYmE2NzViZjhl
NTJjNDQwYzlkMTkyMjA3MjI4OTBmYmRjMWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCkBAIC00MSw4MCArNDEsNzMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdp
dGhDb250ZW50c09mTWlzc2luZ0ZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3QsIGNyZWF0ZVdpdGhDb250ZW50c09mTWlzc2luZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
U3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
U3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRfTlVMTChidWZmZXIpOwog
fQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGlu
Z0ZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250
ZW50c09mRXhpc3RpbmdGaWxlKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsK
ICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNp
emUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwotICAgIEVYUEVD
VF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5z
aXplKCkgPT0gc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7
CisgICAgRVhQRUNUX1RSVUUoU3RyaW5nKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29u
dGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJU
ZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQogewotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0
ZW1wRW1wdHlGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBF
WFBFQ1RfVFJVRShidWZmZXItPmlzRW1wdHkoKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQorVEVTVF9G
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50
c09mRXhpc3RpbmdGaWxlKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAg
ICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3B5
ID0gYnVmZmVyLT5jb3B5KCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNv
cHkgPSBidWZmZXItPmNvcHkoKTsKICAgICBFWFBFQ1RfR1QoYnVmZmVyLT5zaXplKCksIDBVKTsK
ICAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBjb3B5LT5zaXplKCkpOwotICAgIEVY
UEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKLVRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBjbGVhckJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5n
RmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3Jl
YXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwog
ICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKLSAgICBF
WFBFQ1RfVFJVRSghYnVmZmVyLT5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPmRh
dGEoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBw
ZW5kKCpidWZmZXIpOworICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwgMSk7CisgICAgRVhQRUNUX1RS
VUUoYnVpbGRlci5zaXplKCkgPT0gKHN0cmxlbihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSkgKyAxKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgp
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0
ZXN0RGF0YSgpLCBzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkp
KSk7CisgICAgRVhQRUNUX0VRKCdhJywgYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpW3N0cmxlbihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsK
IH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29u
dGVudHNPZkV4aXN0aW5nRmlsZSkKLXsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7
Ci0gICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5hcHBlbmQoImEiLCAx
KTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVy
LT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1ZmZlci0+ZGF0YSgp
W3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwotfQotCi1URVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCitURVNUX0YoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogewogICAgIGNoYXIgdGVzdERh
dGEwW10gPSAiSGVsbG8iOwogICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQiOwogICAgIGNo
YXIgdGVzdERhdGEyW10gPSAiR29vZGJ5ZSI7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hh
cmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEwLCBzdHJsZW4odGVzdERh
dGEwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERh
dGExKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERh
dGEyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZl
ci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxk
ZXIodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVz
dERhdGExLCBzdHJsZW4odGVzdERhdGExKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGEy
LCBzdHJsZW4odGVzdERhdGEyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZl
ciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgY2hhciBleHBl
Y3RlZENvbmNhdGVuYXRpb25bXSA9ICJIZWxsb1dvcmxkR29vZGJ5ZSI7CiAgICAgQVNTRVJUX0VR
KHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgp
KTsKICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiwgYXJyYXlC
dWZmZXItPmRhdGEoKSwgc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsKIH0KIAotVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykK
K1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJM
YXJnZVNlZ21lbnRzKQogewogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IwKDB4NDAwMCwgJ2En
KTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHZlY3RvcjIoMHg0MDAwLCAnYycpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IwKSk7
Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7Ci0gICAgc2hhcmVk
QnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBhcnJheUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoV1RGTW92ZSh2ZWN0b3IwKSk7CisgICAgYnVp
bGRlci5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92
ZSh2ZWN0b3IyKSk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxk
ZXIuZ2V0KCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgQVNTRVJUX0VRKDB4NDAwMFUg
KyAweDQwMDBVICsgMHg0MDAwVSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgaW50
IHBvc2l0aW9uID0gMDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDB4NDAwMDsgKytpKSB7CkBA
IC0xMzEsNyArMTI0LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5
QnVmZmVyTGFyZ2VTZWdtZW50cykKICAgICB9CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCBjb3B5KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogewogICAg
IGNoYXIgdGVzdERhdGFbXSA9ICJIYWJpdGFzc2UgaW50ZWdlciBlcm9zIHRpbmNpZHVudCBhIHNj
ZWxlcmlzcXVlISBFbmltIGVsaXQ/IFNjZWxlcmlzcXVlIG1hZ25pcywiCiAgICAgImV0IG1vbnRl
cyB1bHRyaWNlcyB0cmlzdGlxdWUgYSEgUGlkLiBWZWxpdCB0dXJwaXMsIGRhcGlidXMgaW50ZWdl
ciByaG9uY3VzIHNvY2lpcyBhbWV0IGZhY2lsaXNpcywiCkBAIC0xNTEsMTcgKzE0NCw1MyBAQCBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICAibWF0dGlzIGRpZ25pc3NpbSBtYXNz
YSBhYyBwdWx2aW5hciB1cm5hLCBudW5jIHV0LiBTYWdpdHRpcywgYWxpcXVldCBwZW5hdGlidXMg
cHJvaW4gbG9yZW0sIHB1bHZpbmFyIGxlY3R1cywiCiAgICAgImF1Z3VlIHByb2luISBBYywgYXJj
dSBxdWlzLiBQbGFjZXJhdCBoYWJpdGFzc2UsIHJpZGljdWx1cyByaWRpY3VsdXMuIjsKICAgICB1
bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4odGVzdERhdGEpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhLCBsZW5ndGgp
OwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEo
dGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgp
OworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5h
cHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAgLy8gc2hhcmVkQnVmZmVyIG11c3QgY29udGFp
biBkYXRhIG1vcmUgdGhhbiBzZWdtZW50U2l6ZSAoPSAweDEwMDApIHRvIGNoZWNrIGNvcHkoKS4K
LSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGNsb25lID0gc2hhcmVkQnVmZmVyLT5jb3B5KCk7Ci0gICAgQVNT
RVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgwLCBtZW1j
bXAoY2xvbmUtPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsK
LSAgICBjbG9uZS0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIEFTU0VSVF9FUShsZW5n
dGggKiA1LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgYnVpbGRl
cjEuc2l6ZSgpKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBi
dWlsZGVyMS5jb3B5KCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkp
OworICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgYnVpbGRlcjEuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUo
KSkpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBidWlsZGVyMi5h
cHBlbmQoKmNsb25lKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Cisg
ICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgYXV0byBidWZm
ZXIgPSBidWlsZGVyMi50YWtlKCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1ZmZlci0+
c2l6ZSgpKTsKKyAgICAvLyBidWlsZGVyIGlzIG5vdyBlbXB0eS4KKyAgICBFWFBFQ1RfRVEoMFUs
IGJ1aWxkZXIyLnNpemUoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOwor
ICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7Cit9CisKK1RFU1RfRihGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyVGVzdCwgYnVpbGRlcikKK3sKKyAgICBjaGFyIHRlc3REYXRhMFtdID0g
IkhlbGxvIjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRhMCwgc3Ry
bGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc051bGwoKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgYXV0byBjb3B5ID0gYnVp
bGRlcjEuY29weSgpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjEudGFrZSgpOworICAgIEVY
UEVDVF9UUlVFKGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5p
c0VtcHR5KCkpOworICAgIEVYUEVDVF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRyKCkpOyAvLyBX
ZSBoYXZlIGRpZmZlcmVudCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyCisgICAgRVhQRUNUX0VRKGNv
cHkuZ2V0KCksIGJ1ZmZlci5nZXQoKSk7IC8vIEJ1dCB0aGVpciBjb250ZW50IGlzIGlkZW50aWNh
bAorCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBFWFBFQ1RfVFJVRShi
dWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsK
KyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAg
RVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRl
cjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5yZXNldCgpOworICAgIEVYUEVDVF9UUlVFKGJ1
aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOwor
ICAgIGJ1aWxkZXIyLmVtcHR5KCk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgp
KTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOwogfQogCiBzdGF0aWMgdm9p
ZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgs
IGNvbnN0IGNoYXIqIGV4cGVjdGVkKQpAQCAtMTczLDcwICsyMDIsODAgQEAgc3RhdGljIHZvaWQg
Y2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBj
b25zdCBjaGFyKgogICAgICAgICBFWFBFQ1RfRVEoYnVmZmVyW2ldLCBleHBlY3RlZFtpXSk7CiB9
CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKK1RFU1RfRihGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+
IHMxID0geydhJywgJ2InLCAnYycsICdkJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geydl
JywgJ2YnLCAnZycsICdoJ307Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geydpJywgJ2onLCAn
aycsICdsJ307Ci0gICAgCi0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczEpKTsKLSAgICBidWZmZXItPmFwcGVuZChX
VEZNb3ZlKHMyKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIFZlY3Rv
cjx1aW50OF90PiBzMSA9IHsgJ2EnLCAnYicsICdjJywgJ2QnIH07CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IHMyID0geyAnZScsICdmJywgJ2cnLCAnaCcgfTsKKyAgICBWZWN0b3I8dWludDhfdD4gczMg
PSB7ICdpJywgJ2onLCAnaycsICdsJyB9OworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWls
ZGVyOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczEpKTsKKyAgICBidWlsZGVyLmFwcGVu
ZChXVEZNb3ZlKHMyKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMykpOworICAgIGF1
dG8gYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgCiAgICAgYXV0byBhYmNkID0gYnVmZmVy
LT5nZXRTb21lRGF0YSgwKTsKLSAgICBhdXRvIGdoID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsK
KyAgICBhdXRvIGdoMSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBoID0gYnVm
ZmVyLT5nZXRTb21lRGF0YSg3KTsKICAgICBhdXRvIGlqa2wgPSBidWZmZXItPmdldFNvbWVEYXRh
KDgpOwogICAgIGF1dG8ga2wgPSBidWZmZXItPmdldFNvbWVEYXRhKDEwKTsKLSAgICBhdXRvIGFi
Y2RlZmdoaWprbCA9IGJ1ZmZlci0+ZGF0YSgpOwotICAgIGF1dG8gZ2hpamtsID0gYnVmZmVyLT5n
ZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXItPm1ha2VD
b250aWd1b3VzKCk7CisgICAgYXV0byBhYmNkZWZnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5k
YXRhKCk7CisgICAgYXV0byBnaDIgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8g
Z2hpamtsID0gY29udGlndW91c0J1ZmZlci0+Z2V0U29tZURhdGEoNik7CiAgICAgYXV0byBsID0g
YnVmZmVyLT5nZXRTb21lRGF0YSgxMSk7CiAgICAgY2hlY2tCdWZmZXIoYWJjZC5kYXRhKCksIGFi
Y2Quc2l6ZSgpLCAiYWJjZCIpOwotICAgIGNoZWNrQnVmZmVyKGdoLmRhdGEoKSwgZ2guc2l6ZSgp
LCAiZ2giKTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsK
ICAgICBjaGVja0J1ZmZlcihoLmRhdGEoKSwgaC5zaXplKCksICJoIik7CiAgICAgY2hlY2tCdWZm
ZXIoaWprbC5kYXRhKCksIGlqa2wuc2l6ZSgpLCAiaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGts
LmRhdGEoKSwga2wuc2l6ZSgpLCAia2wiKTsKICAgICBjaGVja0J1ZmZlcihhYmNkZWZnaGlqa2ws
IGJ1ZmZlci0+c2l6ZSgpLCAiYWJjZGVmZ2hpamtsIik7CisgICAgY2hlY2tCdWZmZXIoZ2gyLmRh
dGEoKSwgZ2gyLnNpemUoKSwgImdoIik7CiAgICAgY2hlY2tCdWZmZXIoZ2hpamtsLmRhdGEoKSwg
Z2hpamtsLnNpemUoKSwgImdoaWprbCIpOworICAgIEVYUEVDVF9FUShnaDEuc2l6ZSgpLCBnaDIu
c2l6ZSgpKTsKKyAgICBjaGVja0J1ZmZlcihnaDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCBnaDIuZGF0
YUFzQ2hhclB0cigpKTsKICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7
CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCitURVNUX0YoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIHsKICAgICBhdXRvIG1ha2VCdWZmZXIg
PSBbXSAoVmVjdG9yPFZlY3Rvcjx1aW50OF90Pj4mJiBjb250ZW50cykgewotICAgICAgICBhdXRv
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVpbGRlcjsKICAgICAgICAgZm9yIChhdXRvJiBjb250ZW50IDogY29udGVudHMpCi0g
ICAgICAgICAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKLSAgICAgICAgcmV0
dXJuIGJ1ZmZlcjsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoY29udGVudCkp
OworICAgICAgICByZXR1cm4gYnVpbGRlci50YWtlKCk7CiAgICAgfTsKLSAgICBhdXRvIGJ1ZmZl
cjEgPSBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnfX0pOworICAgIGF1dG8gYnVmZmVy
MSA9IG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJyB9IH0pOwogICAgIEVYUEVDVF9F
UShidWZmZXIxLmdldCgpLCBidWZmZXIxLmdldCgpKTsKIAotICAgIGJ1ZmZlcjEtPmFwcGVuZChW
ZWN0b3I8dWludDhfdD4oeydhJywgJ2InLCAnYycsICdkJ30pKTsKLSAgICBFWFBFQ1RfRVEoYnVm
ZmVyMS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdj
JywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7eydhJ30sIHsnYics
ICdjJ30sIHsnZCd9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJ30sIHsnYycsICdkJ319
KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwg
bWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYyd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtl
QnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZmZXIoe3snYicsICdjJ319KS5nZXQo
KSk7Ci0gICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InfX0pLmdldCgpLCBtYWtl
QnVmZmVyKHt7J2EnfSwgeydhJ319KS5nZXQoKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBi
dWlsZGVyKFdURk1vdmUoYnVmZmVyMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFZlY3Rvcjx1aW50
OF90Pih7ICdhJywgJ2InLCAnYycsICdkJyB9KSk7CisgICAgRVhQRUNUX0VRKCpidWlsZGVyLmdl
dCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdk
JyB9IH0pLmdldCgpKTsKKworICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAn
YicsICdjJyB9LCB7ICdkJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9LCB7
ICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScs
ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnIH0gfSkuZ2V0KCkp
OworICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAnYScsICdiJyB9IH0pLmdldCgpLCBtYWtl
QnVmZmVyKHsgeyAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZl
cih7IHsgJ2EnIH0sIHsgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdh
JyB9IH0pLmdldCgpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5n
KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKIHsKICAg
ICBWZWN0b3I8dWludDhfdD4gdDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKLSAgICBhdXRvIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZSh0
MSkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVu
ZChXVEZNb3ZlKHQxKSk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBT
dHJpbmcgcmVzdWx0ID0gYnVmZmVyLT50b0hleFN0cmluZygpOwogICAgIEVYUEVDVF9FUShyZXN1
bHQsICIxMTA1MTIiKTsKLSAgICBidWZmZXItPmNsZWFyKCk7CisgICAgYnVpbGRlci5yZXNldCgp
OworICAgIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIEVYUEVDVF9FUShidWZmZXItPnRv
SGV4U3RyaW5nKCksICIiKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCitU
RVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiB7CiAgICAgY29uc3QgY2hh
ciogY29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3QuIjsKIAotICAgIGF1
dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgeworICAgIGF1dG8gY2hl
Y2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSBzaGFyZWRCdWZmZXIucmVhZCg0LCAzKTsKICAgICAgICAg
RVhQRUNUX0VRKGRhdGEuc2l6ZSgpLCAzdSk7CiAgICAgICAgIEVYUEVDVF9FUShTdHJpbmcoZGF0
YS5kYXRhKCksIDMpLCAiIGlzIik7CkBAIC0yNDksMTYgKzI4OCwxNyBAQCBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgcmVhZCkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVk
QnVmZmVyKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cisg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hlY2soYnVpbGRlci50YWtl
KCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuaXNOdWxsKCkgJiYgIWJ1aWxkZXIpOworICAg
IEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgMHUpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihz
aW1wbGVUZXh0KTsgaSArPSAyKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxl
VGV4dFtpXSwgMik7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4o
c2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCks
IHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiAj
aWYgRU5BQkxFKE1IVE1MKQpAQCAtMjY2LDcgKzMwNiw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCByZWFkKQogdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHNpemVfdCBOID4KIGNvbnN0ZXhwciBz
aXplX3QgYXJyYXlzaXplKCBjb25zdCBUICgmKVtOXSApIHsgcmV0dXJuIE47IH0KIAotc3RhdGlj
IHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxTdHJpbmc+KiBjaHVua3MsIFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHNlcGFyYXRvciA9ICJcclxuIiwgYm9vbCBpbmNs
dWRlU2VwYXJhdG9yID0gZmFsc2UpCitzdGF0aWMgdm9pZCByZWFkQWxsQ2h1bmtzKHN0ZDo6dmVj
dG9yPFN0cmluZz4qIGNodW5rcywgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIHNlcGFyYXRvciA9ICJcclxuIiwgYm9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFs
c2UpCiB7CiAgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJmJ1ZmZlciwg
c2VwYXJhdG9yLnV0ZjgoKS5kYXRhKCkpOwogICAgIFN0cmluZyBjaHVuayA9IGNodW5rUmVhZGVy
Lm5leHRDaHVua0FzVVRGOFN0cmluZ1dpdGhMYXRpbjFGYWxsYmFjayhpbmNsdWRlU2VwYXJhdG9y
KTsKQEAgLTI5OSw3ICszMzksNyBAQCBzdGF0aWMgdm9pZCBjaGVja0RhdGFJblJhbmdlKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgc2l6ZV90IHN0YXJ0LCBzaXplX3QgbAogCiBURVNUX0Yo
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBpbmNsdWRlU2VwYXJhdG9yKQogewotICAgIGF1
dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgeworICAgIGF1dG8gY2hl
Y2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAg
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJnNoYXJlZEJ1ZmZlciwgIlx4MTBc
eDExXHgxMiIpOwogICAgICAgICBWZWN0b3I8dWludDhfdD4gb3V0OwogICAgICAgICBFWFBFQ1Rf
VFJVRShjaHVua1JlYWRlci5uZXh0Q2h1bmsob3V0KSk7CkBAIC0zMTMsMjIgKzM1MywyNCBAQCBU
RVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBpbmNsdWRlU2VwYXJhdG9yKQogICAg
IHVpbnQ4X3QgZGF0YVsyNTZdOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjU2OyArK2kp
CiAgICAgICAgIGRhdGFbaV0gPSBpOwotCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLCAyNTYpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7Ci0gICAg
c2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKworICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgYnVpbGRlcihkYXRhLCAyNTYpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsK
KwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjU2OyArK2kpIHsKICAgICAgICAgY2hhciBj
ID0gaTsKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJmMsIDEpOworICAgICAgICBidWls
ZGVyLmFwcGVuZCgmYywgMSk7CiAgICAgfQotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAg
Y2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXJUZXN0LCBwZWVrRGF0YSkKIHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0g
IlRoaXMgaXMgYSBzaW1wbGUgdGVzdC4iOwogCi0gICAgYXV0byBjaGVjayA9IFtdKFNoYXJlZEJ1
ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRl
ciBjaHVua1JlYWRlcigmc2hhcmVkQnVmZmVyLCAiaXMiKTsKIAogICAgICAgICBTdHJpbmcgY2h1
bmsgPSBjaHVua1JlYWRlci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJhY2so
KTsKQEAgLTM1OCwyMiArNDAwLDIzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRl
c3QsIHBlZWtEYXRhKQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZm
ZXIpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQp
KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVu
ZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIudGFr
ZSgpKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gMikKLSAgICAg
ICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAgIEVYUEVDVF9F
UShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhz
aGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7
CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAg
IGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyVGVzdCwgcmVhZEFsbENodW5rc0luTXVsdGlTZWdtZW50KQogewogICAgIGNvbnN0IGNoYXIq
IGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyB0aGUgbW9zdCByaWRpY3Vsb3VzIGhpc3Rvcnkg
dGhlcmUgaXMuIjsKLSAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZm
ZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVk
QnVmZmVyKSB7CiAgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOwogICAgICAgICBj
b25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczFXaXRob3V0U2VwYXJhdG9yW10gPSB7ICJU
aCIsICJzICIsICJzIHRoZSBtb3N0IHIiLCAiZCIsICJjdWxvdXMgaCIsICJzdG9yeSB0aGVyZSAi
LCAicy4iIH07CiAgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAi
aSIpOwpAQCAtNDA2LDE3ICs0NDksMTkgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
VGVzdCwgcmVhZEFsbENodW5rc0luTXVsdGlTZWdtZW50KQogICAgIH07CiAgICAgYXV0byBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxl
VGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7Ci0gICAgc2hhcmVkQnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihz
aW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgp
KTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKysp
Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBF
WFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAg
Y2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRb
aV0sIDEpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQp
KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNp
bXBsZVRleHQpOyBpICs9IDUpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVU
ZXh0W2ldLCA1KTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihz
aW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoJnNpbXBsZVRleHRbaV0sIDUpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwg
c3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRF
U1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGNoYW5naW5nSXRlcmF0b3IpCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVz
dC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVz
dC5jcHAKaW5kZXggOWI4YjEzYTc1ZDUyZmY5NTFlYWQxODE4NWQ1NmMzNzkxYjJkN2JlZC4uZDAz
NDFhODFkZWRhNzE5ZjM1ZmNjZTM5NDY1NWVjMjU1YWI4ZmJiNiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcApAQCAt
MzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLXZvaWQgU2hhcmVk
QnVmZmVyVGVzdDo6U2V0VXAoKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6U2V0
VXAoKQogewogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKIApAQCAtNDUsNyArNDUs
NyBAQCB2b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKICAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoaGFuZGxlKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpUZWFyRG93bigpCit2
b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0OjpUZWFyRG93bigpCiB7CiAgICAgRmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBGaWxlUGF0aCk7CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZShtX3RlbXBFbXB0eUZpbGVQYXRoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oCmluZGV4IDY0MDExOWJkZTZmY2U0MWYw
MWVhYWI2MzE2ODQ3YmU1NmI5MGNmNWMuLmEzOTJhMDUxOTQ3NTZkMmFkNTZlODI0OTI5ZWNlNGMx
NWYzYWQwNTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXJUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NoYXJlZEJ1ZmZlclRlc3QuaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKIHB1YmxpYzoKICAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBUZWFy
RG93bigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAppbmRleCA3YTMyMDdmOTVjNjI3
ZmU2NjI5YzkyNzc0NGI0ZWYwM2U1ZTJlYzNkLi44NTgyOGYwMzkyMjQ1ZjRhOTliNzYwNmI1ZjRh
YzVlYzM0ZGNlZTViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIHJldHVybiB7IGdsb2JhbEJ1ZmZlcklkZW50aWZpZXIsIGdsb2Jh
bEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSB9OwogICAgIH0KIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJ
dGVtJikgY29uc3QgZmluYWwKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5j
b2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdCBmaW5hbAogICAg
IHsKICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZl
ci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZm
ZXIubW0KaW5kZXggOTMzMzFkNzAyYzUzMGIyNGM0N2NjMDlhNjhjZmIxODg1ZDRlYjExMC4uYzNi
NWQzZThkN2MwM2IxYTM2NWRkNTM1YTBiMjlhZGUyN2FjZWNhOCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDUsMTkgKzQ1LDIwIEBAIHN0YXRpYyB2b2lkIGV4cGVjdERhdGFBcnJheXNFcXVhbChOU0Fy
cmF5PE5TRGF0YSAqPiAqZXhwZWN0ZWQsIE5TQXJyYXk8TlNEYXRhICo+CiAgICAgfQogfQogCi1U
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCitURVNUX0YoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogewogICAgIEBhdXRvcmVs
ZWFzZXBvb2wgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChuaWwsIGJ1ZmZlci0+Y3JlYXRlTlNEYXRh
QXJyYXkoKS5nZXQoKSk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAg
ICAgICAgYnVpbGRlci5lbXB0eSgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmls
LCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBO
U0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1
XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywg
aGVsbG9EYXRhLmxlbmd0aCk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxs
b0RhdGEgXSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0
aCk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgYnVpbGRl
ci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICp3
b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0gICAg
ICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKLSAgICAg
ICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChf
X2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0Vx
dWFsKEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0
YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxs
b0RhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJy
YXkoKS5nZXQoKSk7CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEg
XSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5j
cmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKQEAgLTY2LDM1ICs2NywzNSBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCiAgICAgfQogfQogCi1URVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQpCitURVNUX0YoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUZvckRhdGFTZWdtZW50KQogewogICAg
IEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKIAogICAgICAg
ICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0
aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRl
cywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChjb25zdCBjaGFy
KiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwogCiAgICAgICAgIE5TRGF0YSAq
d29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAg
ICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKIAogICAg
ICAgICBOU0FycmF5ICpleHBlY3RlZERhdGEgPSBAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdOwog
ICAgICAgICBOU1VJbnRlZ2VyIGV4cGVjdGVkU2l6ZSA9IGhlbGxvRGF0YS5sZW5ndGggKyB3b3Js
ZERhdGEubGVuZ3RoOwogCiAgICAgICAgIE5TVUludGVnZXIgc2VnbWVudENvdW50ID0gMDsKLSAg
ICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogYnVmZmVyLmdldCgpKQorICAgICAgICBmb3IgKGF1
dG8mIHNlZ21lbnQgOiAqYnVpbGRlci5nZXQoKSkKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtz
ZWdtZW50LnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRh
W3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50
LCBzZWdtZW50Q291bnQpOwogCiAgICAgICAgIE5TVUludGVnZXIgcG9zaXRpb24gPSAwOwogICAg
ICAgICBzZWdtZW50Q291bnQgPSAwOwotICAgICAgICB3aGlsZSAoYnVmZmVyLT5zaXplKCkgPiBw
b3NpdGlvbikgewotICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRhbERhdGEgPSBidWZmZXItPmdl
dFNvbWVEYXRhKHBvc2l0aW9uKTsKKyAgICAgICAgd2hpbGUgKGJ1aWxkZXIuc2l6ZSgpID4gcG9z
aXRpb24pIHsKKyAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVpbGRlci5nZXQo
KS0+Z2V0U29tZURhdGEocG9zaXRpb24pOwogICAgICAgICAgICAgRVhQRUNUX1RSVUUoW2luY3Jl
bWVudGFsRGF0YS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdt
ZW50Q291bnQrK11dKTsKICAgICAgICAgICAgIHBvc2l0aW9uICs9IGluY3JlbWVudGFsRGF0YS5z
aXplKCk7CiAgICAgICAgIH0KICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwg
c2VnbWVudENvdW50KTsKIAotICAgICAgICBhdXRvIGxhc3RCeXRlID0gYnVmZmVyLT5nZXRTb21l
RGF0YShleHBlY3RlZFNpemUgLSAxKTsKKyAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1aWxkZXIu
Z2V0KCktPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEpOwogICAgICAgICBFWFBFQ1RfVFJV
RShbbGFzdEJ5dGUuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpbQCJkIiBkYXRhVXNpbmdF
bmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddXSk7CiAgICAgICAgIEVYUEVDVF9FUSgxTFUs
IGxhc3RCeXRlLnNpemUoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0
V2ViQ29yZVN0dWJzLmNwcAppbmRleCA0NmM3NjIwM2UxYjI1YWFhYjdhMDJlMGJiMmJmNWUwYzQz
NmVkNjg3Li41YmU2NjU5NDYxMzczMWUyMWVkOTdkYTc0YzU3MzhjN2NhMjg1YmY0IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNwcApAQCAtMjUsNyArMjUs
NyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAotUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKikKK1Jl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVm
ZmVyKGNvbnN0IGNoYXIqKQogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpp
bmRleCA4OTIzOTJkODdmNzQwMGViZmE5OGY1YTg2NTNjOWZkNGUyNzU1ZjU5Li43MDgwYTZjZjdh
NmQyMjAwYWUzMDNjMjJjZTczMTE5MTBkZGFhMWYyIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDIxLTEyLTAyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisK
KyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29u
dGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHk6IHBhcnQgMworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEZWNvZGVyVGVzdC9EZWNv
ZGVyVGVzdC9tYWluLm1tOgorICAgICAgICAobWFpbik6CisKIDIwMjEtMTEtMjEgIENhdGhpZSBD
aGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtQZXJmb3JtYW5jZSB0ZXN0
XVtjc3MtY29udGFpbl0gQWRkIGNhc2UgdG8gdGVzdCBjb250YWluOiBsYXlvdXQgaW5zaWRlIGEg
Y29tcGxleCBkb2N1bWVudAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446027</attachid>
            <date>2021-12-06 04:39:07 -0800</date>
            <delta_ts>2021-12-07 01:23:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233677-20211206233903.patch</filename>
            <type>text/plain</type>
            <size>734730</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YTJiZTEzOTE2MjhmNTNiNmQ2ZDIyZTEzY2E3ZmIyYmRkMjA1ZWYzLi5kMTcyNDIwMTVhOGI5Zjc3
ZTRmZWM3M2Y1YjMwMzdhZThkMDkxODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8v
cHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBi
ZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0FycmF5QnVmZmVyLmg6CisKIDIwMjEtMTItMDMgIEtlaXRoIE1pbGxlciAgPGtlaXRo
X21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFN0cnVjdHVyZUlEQmxvYgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGZkN2JjMTJmMDVlMzY0ODhjYjUzMThkNzc2ZDliMGFmYzY4OWU0YWMuLjUwMzg1
ZGQwNDViM2IwY2Y4MDYzNmU1NGNiYTlmNjNmYmZmMzk5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzNDUgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBh
bmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0
dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAgIFJlbmFt
ZSBvbmx5LCBubyBjaGFuZ2UgaW4gYmVoYXZpb3VyLgorCisgICAgICAgICogTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmg6CisgICAgICAgICogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZS5oOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9h
cmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9t
YWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9D
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmg6CisgICAgICAgICog
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oOgorICAgICAgICAq
IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleXMuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlzLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAg
ICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHA6CisgICAgICAg
ICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmg6CisgICAgICAgICog
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHA6CisgICAgICAgICogTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9u
L01lZGlhTWV0YWRhdGEuY3BwOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNl
QnVmZmVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5o
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNv
dXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcDoKKyAgICAgICAgKiBj
c3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgICogZWRpdGluZy9FZGl0b3Iu
aDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oOgorICAgICAg
ICAqIGVkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oOgorICAgICAgICAqIGVkaXRpbmcvV2ViQ29y
ZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvcmVQYXN0
ZWJvYXJkRmlsZVJlYWRlci5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2Eu
bW06CisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAq
IGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAqIGVkaXRp
bmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKiBmaWxlYXBp
L05ldHdvcmtTZW5kUXVldWUuY3BwOgorICAgICAgICAqIGZpbGVhcGkvTmV0d29ya1NlbmRRdWV1
ZS5oOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAq
IGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRh
Y2htZW50RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9JbWFnZURv
Y3VtZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgICogaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UGFnZUFnZW50Lmg6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAg
ICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAg
ICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvTG9hZGVyU3RyYXRlZ3ku
aDoKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAg
ICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9S
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmg6CisgICAgICAg
ICogbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3Rvcnku
Y3BwOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5Lmg6CisgICAgICAg
ICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZl
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaDoKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgICog
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0Lmg6CisgICAgICAg
ICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oOgorICAgICAgICAqIGxvYWRl
ci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAgICAgICogbG9hZGVyL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLm1tOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogcGFn
ZS9QYWdlLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAg
KiBwYWdlL1BhZ2VTZXJpYWxpemVyLmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAg
ICAgICAgKiBwYWdlL1NoYXJlRGF0YVJlYWRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vS2V5
ZWRDb2RpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJk
V3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50Lmg6
CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
U3RhdGljUGFzdGVib2FyZC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vU3RhdGljUGFzdGVib2Fy
ZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmg6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50
RmlsdGVyLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0Nv
bnRlbnRGaWx0ZXIubW06CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29h
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1Qcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVV0aWxpdGllcy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRp
bGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJH
ZW5lcmljLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVy
aWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dP
RkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZv
cm1hdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRm
b3JtRGF0YUNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNs
ZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1U
aHVuZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NE
TVRodW5kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRm
b3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlRGVjb2RlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFk
ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdl
UmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
RGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUElt
YWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZVJlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0lt
YWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVy
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURl
Y29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0
Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdENsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL3Bv
c2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6
CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgICogdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5oOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIu
Y3BwOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiB3
b3JrZXJzL1NjcmlwdEJ1ZmZlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJGZXRjaC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRT
dG9yYWdlLmNwcDoKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAg
ICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKwogMjAyMS0x
MS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBT
aGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkyOWJhZDAzOTQ2ZjY0ZTI5ZjZj
MTgxMzJlZDZiMDkyNzg4MTU2MWEuLmQwYWYxNWNmOTM3Yjc3MjYyNzkyMjYxZWNjMDkwMmQ0M2Zi
YjE5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ1IEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBj
bGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVk
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAg
ICB0eXBlcy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVBy
b3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJv
eHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lmg6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHA6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5Lmg6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL1No
YXJlZE1lbW9yeS5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5jcHA6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmg6CisgICAgICAg
ICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJIaXRUZXN0UmVzdWx0
RGF0YS5jcHA6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6Cisg
ICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVu
dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1t
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGsz
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2UuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkYuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUlu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXIubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJh
Z0NsaWVudE1hYy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW06CisgICAgICAgICogV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHA6
CisKIDIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRl
eCBkNzc2ZTgyZGYxMzJjYWY2NTI3OTNhNzlhMDA4M2FkNjU1OWRjMjY1Li4zNzc3ZjJhNTZiYzhl
NjA0ZTk0NTFlOGJkMTJlMjViNDNhMzUxNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9w
cm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIg
YW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJl
dHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaDoKKwogMjAyMS0xMS0xMiAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBzb3J0LVhjb2RlLXByb2plY3QtZmlsZSBp
ZGVtcG90ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMGYwODZlMzllNWJkNDQ1
NjAyYWFkMjY0MzExNWNlNGRmNjM0YjI4NC4uMjA1ODQ1MzQ0OTg0OTU3N2M1NTAxMWNkNTljZTg4
M2JlYmQ5ZTZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBA
CisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1
OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAg
ICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZs
ZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5t
bToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1tOgorCiAyMDIxLTExLTI1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAwYmE2Y2VjNWIw
NjViOWZjNjk4MzQzNTczMTE5ZmVlZjk4NTUwMmNlLi5hNmQ3YWZkMDBmY2RiN2JhOTkxMzU5ZDcy
MjNlYWI3YjQ0NGJiNTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjYgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2Js
ZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQK
KyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVy
IHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAgICogTWVtb3J5
U3RyZWFtLmNwcDoKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJBcmNo
aXZlLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YkZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorICAgICAgICAqIFdlYktpdERMTC5j
cHA6CisgICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAgICAgICAqIFdlYlJlc291cmNlLmg6
CisKIDIwMjEtMTItMDEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggZWFjY2EyYzIzM2E4YTY5MzcxNTkwODA3ZGZk
MzY3NWIwNjE1OTQyOC4uYjQ2OTNmOTFjNjA3ZDhkMDc0NTk0NjQ2ZThkYzQzNzJlOWJjOTllNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCkBAIC0xMjks
NyArMTI5LDcgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8
QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3Vy
Y2UsIHNpemVfdCBieXRlTGVuZ3RoKTsKIAotICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENs
YW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlD
cmVhdGVBcnJheUJ1ZmZlci4KKyAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJy
YXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRy
eUNyZWF0ZUFycmF5QnVmZmVyLgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJy
YXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8
QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAK
aW5kZXggMzM1NGI1MmE1MGNiYjE4OWZkZmFlYjdkODI0ODNiZTBjNDFjM2Q0ZS4uZGEzMzZlNmY1
YjE2OTRlMzc0NzY5MGM0M2QyYjUzZjM1MThjMDlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVh
ZGVyLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhUExB
VEZPUk0oQ09DT0EpCiAKLXZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgQ2xp
cGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCmluZGV4IDJiNjI2Mjg0MTliMDljYmI2OTU1
MjE1YjBkNWQ3ZDczYzBiMzc0NGQuLjZlMjIwNDhjZjVmZWE5YWE2MmRhZGY0NWIxZjM1YzRjZTBk
N2Q2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEltYWdlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaApAQCAtMzEsNyArMzEsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBDbGlwYm9hcmRJbWFnZVJl
YWRlciA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICBDbGlwYm9hcmRJbWFnZVJlYWRlcihE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBAIC00Nyw3ICs0Nyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmluYWwg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgYm9vbCBzaG91bGRSZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogICAg
IFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggMmIx
NjBhMDc4MDRhMTMyNzhkNmRiMWZmODNjODA4MjFkOTBiZDhjZC4uZWZmMTBiNWI2NWZkODFhZDli
YTMyZjgwYjNmMmNmMmY4ZTk4ZjFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTIxNiw4ICsyMTYsOCBAQCB2b2lkIENsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2U6Omludm9rZUNvbXBsZXRpb25IYW5kbGVyKCkKICAgICAgICAg
YXV0byYgZGF0YSA9IGl0ZW1UeXBlTG9hZGVyLT5kYXRhKCk7CiAgICAgICAgIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYgISFzdGQ6OmdldDxTdHJpbmc+KGRhdGEp
KQogICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZVN0cmluZyh0eXBlLCBzdGQ6OmdldDxTdHJp
bmc+KGRhdGEpKTsKLSAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
U2hhcmVkQnVmZmVyPj4oZGF0YSkpCi0gICAgICAgICAgICBjdXN0b21EYXRhLndyaXRlRGF0YSh0
eXBlLCBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkuY29weVJlZigpKTsKKyAgICAg
ICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+KGRhdGEpKQorICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwgc3Rk
OjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihkYXRhKS5jb3B5UmVmKCkpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNjUsOCArMjY1LDggQEAgdm9pZCBDbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVE
YXRhSWZOZWUKIHsKICAgICBpZiAobV90eXBlID09ICJ0ZXh0L2h0bWwiX3MpIHsKICAgICAgICAg
U3RyaW5nIG1hcmt1cFRvU2FuaXRpemU7Ci0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7Ci0gICAgICAgICAgICBhdXRvJiBidWZm
ZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKKyAgICAgICAgaWYgKHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihtX2RhdGEp
KSB7CisgICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+KG1fZGF0YSk7CiAgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3Ry
aW5nOjpmcm9tVVRGOChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5n
PihtX2RhdGEpKQogICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFN0cmlu
Zz4obV9kYXRhKTsKQEAgLTI3OCw5ICsyNzgsOSBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQog
ICAgIH0KIAogICAgIGlmIChtX3R5cGUgPT0gImltYWdlL3BuZyJfcykgewotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplOwotICAgICAgICBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkKLSAgICAgICAgICAgIGJ1
ZmZlclRvU2FuaXRpemUgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKS5wdHIo
KTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRp
emU7CisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4obV9kYXRhKSkKKyAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSBzdGQ6
OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkucHRyKCk7CiAgICAgICAg
IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpKQogICAgICAg
ICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHV0ZjhCdWZmZXIoc3RkOjpnZXQ8U3RyaW5nPihtX2Rh
dGEpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCmlu
ZGV4IDJjYzJjOGUxYTU0ZTE4ZDczNDk1YzUzMGNkNzdkNTRmOTlhNTI5YTcuLjM3YzgyNWUyMzVh
OGE4YjdlNDRlNDBmYjBjMmQ3NzI0NDA3YTc1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgRE9NUHJvbWlz
ZTsKIGNsYXNzIEZpbGVSZWFkZXJMb2FkZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsK
IGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlIDogcHVibGljIENsaXBib2FyZEl0ZW1EYXRhU291cmNlIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
aW52b2tlQ29tcGxldGlvbkhhbmRsZXIoKTsKIAotICAgIHVzaW5nIEJ1ZmZlck9yU3RyaW5nID0g
c3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIEJ1ZmZl
ck9yU3RyaW5nID0gc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PjsKICAgICBjbGFzcyBDbGlwYm9hcmRJdGVtVHlwZUxvYWRlciA6IHB1YmxpYyBGaWxlUmVh
ZGVyTG9hZGVyQ2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxDbGlwYm9hcmRJdGVtVHlwZUxvYWRl
cj4gewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFJlZjxDbGlwYm9hcmRJdGVtVHlwZUxv
YWRlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVy
SU9TLm1tCmluZGV4IDU4Y2U4MDlhZTY5ZTIwNGI3YzA5ZTU5YTgyMDZmNzZkMDI3YTA1NWYuLjI3
NGUwMzhkNDE4NzAxNjFlNGVlYjgwYzEyYWJiYTg3MWY5ZDRhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3Mv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9p
ZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYg
KG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKICAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0
TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVy
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBi
b2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGY0MTBhYWIxNTE3ZTM5MDg5MjZlOGVmNWU5Mjhm
M2M4Yzg0MzYwOWMuLjM4MjFiMDM3MTgwMjgyM2Q2OWE4MzBhMzEwZGEzNDcwOGQ2MzMwNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlw
Ym9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTMzLDcgKzMzLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpy
ZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKICAgICAgICAgYXV0
byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5k
ZXggOGJmZjgwNzA2ZTZlMTk5YTU0YzUzNzMwZmI2YzM3YzlmZjgzMjlmMi4uOWIzZjg0MDc0NWQx
YTA2OTg4M2EyMGMzYTY1Zjk5NzlmYjFhMjQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC01MCw3ICs1
MCw3IEBAIHVpbnQ2NF90IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNp
emUoY29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvCiAgICAgdWludDY0X3QgcmVzdWx0ID0gMDsK
ICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURh
dGEpIHsKICAgICAgICAgcmVzdWx0ID0gZm9ybURhdGFTaXplKGZvcm1EYXRhKTsKLSAgICB9LCBb
Jl0gKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwg
WyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIHJlc3VsdCA9
IGJ1ZmZlci0+c2l6ZSgpOwogICAgIH0sIFtdIChjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAg
ICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggZGIz
YzEzNjQ2OTQ5YjVjZjg0ZWY5MjMzNWVmMTQxMGFhNTQ5NjY4Ni4uZjA1YzIzMzA3YmM1YTBlNTgy
ZGRjZDg2MGQ1YmIxYTFiMzA5MzI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5jcHAKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVj
dG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgog
ICAgIH0KIH0KIAotdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQordm9pZCBET01DYWNoZTo6cHV0V2l0aFJl
c3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hS
ZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRp
b25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCiB7CiAgICAgaWYgKHJl
c3BvbnNlQm9keS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2Jq
ZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVsZWFzZUV4Y2VwdGlv
bigpXSgpIG11dGFibGUgewpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChS
ZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9t
aXNlCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkK
ICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgp
KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9u
c2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9u
c2UpLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4geyBkYXRhLnRha2UoKS0+bWFrZUNv
bnRpZ3VvdXMoKSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRh
KFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB7IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpIH0pOwog
ICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuaAppbmRleCBjMzVjYzNjYmNlZGIzYjI1MTFiZjM1N2EzMWFmZTJkMjc0
MzhiZDRjLi4xMzk3NTRkMzBlNDAwNzg1NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2Jq
ZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hS
ZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYm
KTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRpb25P
cjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJik7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFJldHJp
ZXZlUmVzcG9uc2VzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB1c2luZyBSZWNvcmRzQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxET01DYWNoZUVu
Z2luZTo6UmVjb3JkPj4mJik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmNwcAppbmRleCA0NzUwNGNiZWJkYWUwMzgxNjc1OWE4ZjY4ZThjMjQ2MmZk
ZjJhNWU1Li5jMGY4MDMyYjA0NTJjMzdlZTRjYWZiY2FmZDc5ZjA5ZDIxNDYzMzI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTMx
LDggKzEzMSw4IEBAIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNw
b25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29u
c3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJl
dHVybiBmb3JtRGF0YS0+aXNvbGF0ZWRDb3B5KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7Ci0gICAgICAgIHJl
dHVybiBidWZmZXIuY29weVJlZigpOyAvLyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11
dGFibGUgYW5kIGNhbiBiZSByZXR1cm5lZCBhcy1pcy4KKyAgICB9LCBbXShjb25zdCBSZWY8U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgeworICAgICAgICByZXR1cm4gYnVm
ZmVyLmNvcHlSZWYoKTsgLy8gU2hhcmVkQnVmZmVyIGFyZSBpbW11dGFibGUgYW5kIGNhbiBiZSBy
ZXR1cm5lZCBhcy1pcy4KICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3Bv
bnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsg
fTsKICAgICB9KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNl
Qm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNo
T24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9k
eSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7Ci0gICAgfSwgW10oY29uc3Qg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7Cisg
ICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5
IHsKICAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgfSwgW10oY29uc3Qgc3Rk
OjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVF
bmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlRW5naW5lLmgKaW5kZXggY2JmOGI2OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJhZjJm
YTE1NjY2My4uOTRhZDIxMmEwNzBmY2UyNmFiMGE1OTVhZjgyYTU3MzZjMTM0NThlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApAQCAtNTcsNyAr
NTcsNyBAQCBFeGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uQW5kTG9nKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBFcnJvcik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY2Fj
aGVkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IENhY2hlUXVlcnlPcHRp
b25zJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGhhc1ZhcnlTdGFyLCBjb25z
dCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMsIGNvbnN0IENhY2hlUXVlcnlP
cHRpb25zJik7CiAKLXVzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxw
dHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKK3VzaW5n
IFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRh
PiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5
KGNvbnN0IFJlc3BvbnNlQm9keSYpOwogV0VCQ09SRV9FWFBPUlQgUmVzcG9uc2VCb2R5IGNvcHlS
ZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAppbmRleCAyODUwZGJhMWUzYmZhMTFmNDg5YjQ0
NDAzNTEzZDUxYWUxYmVhZDNhLi45ZDFiYzY3NGZjODI2Y2I2ZDE2ZDAyNTEwY2Y4NDAxMGFkY2Jk
Nzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NE
TS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3Bw
CkBAIC0xMzUsMTcgKzEzNSwxNyBAQCBib29sIENETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUg
JiYgbV9wcml2YXRlLT5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFU
eXBlKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZUluaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBpbml0RGF0YSkKIHsKICAgICByZXR1cm4gSW5pdERhdGFSZWdpc3RyeTo6c2hhcmVkKCku
c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKIH0KIAotYm9vbCBDRE06
OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBT
aGFyZWRCdWZmZXImIGluaXREYXRhKQorYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3VwcG9ydHNJ
bml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCitS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQogewogICAgIGlmICghbV9wcml2YXRl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5oCmluZGV4IGQ4YTRiM2FmMTJmMWE3OTIzZDg4NzA1ZDViOTU4MWQzNmYx
MDI3MGMuLmQ3YjFkNTNkMDQ5MWY3Mjc3OWI1OTRiMmQ4M2MwOWI4M2JjZjIwN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaApAQCAtNTIsNyArNTIsNyBA
QCBjbGFzcyBDRE1JbnN0YW5jZTsKIGNsYXNzIENETVByaXZhdGU7CiBjbGFzcyBEb2N1bWVudDsK
IGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDRE0gOiBwdWJsaWMgUmVmQ291bnRl
ZDxDRE0+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNPiwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CkBAIC03MywxMCArNzMsMTAgQEAgcHVibGljOgogICAg
IGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0OwogICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0
YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIGJvb2wgc3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXpl
UmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
OwogCiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvQ0RNQ2xpZW50LmgKaW5kZXggMjFlNTJmNGI3MTRmYjkxZjY3Y2ZjMzk2MTM5YzE2
NTI1YmZiN2I5Yi4uNDEwZWQyZmI2NDI3NTYyY2U5YmQ4ZWRhNGQ5MWE4NmJhOThjYWE2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5o
CkBAIC0zNiwxNCArMzYsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0RNSW5z
dGFuY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBDRE1DbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNQ2xpZW50PiB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNQ2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAgdmly
dHVhbCB2b2lkIGNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25E
YXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2Vp
dmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAyYzYz
OGY3Yzg0MTk0NjQ5MGUyMDQ4NzY0MmM5YTcyMTczYzUwNTlmLi42Zjg4OGUxNzg1OGRkYTZkOTQ3
MWVjMWY2ZWY1ZDA2NmRmMGU0OTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTU0LDcgKzU0
LDcgQEAgbmFtZXNwYWNlIHsKICAgICBjb25zdCB1aW50MzJfdCBrS2V5SWRzTWF4S2V5SWRTaXpl
SW5CeXRlcyA9IDUxMjsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKICAgICAvLyAxLiBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8v
ZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3Jt
YXQKQEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWQKICAgICBpZiAoIWtp
ZHNBcnJheSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+IGtleUlEczsKICAgICBmb3IgKGF1dG8mIHZhbHVlIDogKmtpZHNBcnJheSkgewogICAg
ICAgICBhdXRvIGtleUlEID0gdmFsdWUtPmFzU3RyaW5nKCk7CiAgICAgICAgIGlmICgha2V5SUQp
CkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkCiAgICAgcmV0dXJuIGtl
eUlEczsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgLy8gMS4gRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2Vu
Y3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0
CkBAIC0xMTEsNyArMTExLDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXpl
S2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKIH0KIAotc3Rk
OjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVj
aWZpY0hlYWRlckJveD4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJveGVzRnJvbUNl
bmMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaXRE
YXRhUmVnaXN0cnk6OmV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gNC4gQ29tbW9uIFN5c3RlbUlEIGFuZCBQU1NI
IEJveCBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlh
L2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9jZW5jLmh0bWwjY29tbW9uLXN5c3RlbQpAQCAtMTUx
LDkgKzE1MSw5IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90
ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pCiAgICAgcmV0dXJuIHBzc2hCb3hl
czsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0
YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IEluaXRE
YXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAg
ICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAKICAgICBhdXRv
IHBzc2hCb3hlcyA9IGV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhidWZmZXIpOwogICAgIGlmICgh
cHNzaEJveGVzKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxT
aGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uCiAg
ICAgcmV0dXJuIGtleUlEczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdp
c3RyeTo6c2FuaXRpemVDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gNC4gQ29tbW9uIFN5
c3RlbUlEIGFuZCBQU1NIIEJveCBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8v
ZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9jZW5jLmh0bWwjY29tbW9u
LXN5c3RlbQpAQCAtMTk1LDcgKzE5NSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRh
UmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBy
ZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNh
bml0aXplV2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBDaGVjayBpZiB0aGUgYnVmZmVyIGlzIGEgdmFsaWQg
V2ViTSBpbml0RGF0YS4KICAgICAvLyBUaGUgV2ViTSBpbml0RGF0YSBpcyB0aGUgQ29udGVudEVu
Y0tleUlELCBzbyBzaG91bGQgYmUgbGVzcyB0aGFuIGtXZWJNTWF4Q29udGVudEVuY0tleUlEU2l6
ZS4KQEAgLTIwNSwxMCArMjA1LDEwIEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZVdlYk0oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIGJ1ZmZlci5j
b3B5KCk7CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4+IGV4dHJhY3RLZXlJRHNXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJh
Y3RLZXlJRHNXZWJNKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAg
ICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdlYk0oYnVmZmVyKTsKKyAgICBWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZEJ1ZmZlciA9IHNhbml0aXplV2ViTShidWZmZXIpOwog
ICAgIGlmICghc2FuaXRpemVkQnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CkBAIC0yMzMsNyArMjMzLDcgQEAgSW5pdERhdGFSZWdpc3RyeTo6SW5pdERhdGFSZWdpc3RyeSgp
CiAKIEluaXREYXRhUmVnaXN0cnk6On5Jbml0RGF0YVJlZ2lzdHJ5KCkgPSBkZWZhdWx0OwogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRp
emVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3R5cGVzLmZpbmQo
aW5pdERhdGFUeXBlKTsKICAgICBpZiAoaXRlciA9PSBtX3R5cGVzLmVuZCgpIHx8ICFpdGVyLT52
YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQpAQCAtMjQxLDcgKzI0MSw3IEBAIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhCiAgICAgcmV0dXJuIGl0ZXItPnZhbHVlLnNhbml0aXplSW5pdERhdGEoYnVmZmVy
KTsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0
YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIGF1dG8gaXRlciA9IG1fdHlwZXMuZmluZChpbml0RGF0YVR5cGUp
OwogICAgIGlmIChpdGVyID09IG1fdHlwZXMuZW5kKCkgfHwgIWl0ZXItPnZhbHVlLnNhbml0aXpl
SW5pdERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0luaXREYXRhUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oCmluZGV4IGNkMTM4N2E2YmQwMzhmZjM0ZTJjZmI3NWY0
NDNkZTdkOTQwMzIxYjAuLjc3ZDYwNGIwOGJiN2Y3ZTM4YmNjYjM1NDViMzRjOGIxMzQzNTVlZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERh
dGFSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
SW5pdERhdGFSZWdpc3RyeS5oCkBAIC0zOCwxOSArMzgsMTkgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94OwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSW5p
dERhdGFSZWdpc3RyeSB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEluaXRE
YXRhUmVnaXN0cnkmIHNoYXJlZCgpOwogICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxJ
bml0RGF0YVJlZ2lzdHJ5PjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVm
ZmVyPj4+IGV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25z
dCBTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzKGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwog
CiAgICAgc3RydWN0IEluaXREYXRhVHlwZUNhbGxiYWNrcyB7Ci0gICAgICAgIHVzaW5nIFNhbml0
aXplSW5pdERhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPFJlZlB0cjxTaGFyZWRCdWZmZXI+KGNvbnN0
IFNoYXJlZEJ1ZmZlciYpPjsKLSAgICAgICAgdXNpbmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0g
RnVuY3Rpb248c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+Pihjb25zdCBT
aGFyZWRCdWZmZXImKT47CisgICAgICAgIHVzaW5nIFNhbml0aXplSW5pdERhdGFDYWxsYmFjayA9
IEZ1bmN0aW9uPFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik+OworICAgICAgICB1c2luZyBFeHRyYWN0S2V5SURzQ2FsbGJhY2sgPSBG
dW5jdGlvbjxzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
Pihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik+OwogCiAgICAgICAgIFNhbml0aXplSW5p
dERhdGFDYWxsYmFjayBzYW5pdGl6ZUluaXREYXRhOwogICAgICAgICBFeHRyYWN0S2V5SURzQ2Fs
bGJhY2sgZXh0cmFjdEtleUlEczsKQEAgLTYxLDkgKzYxLDkgQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCBBdG9tU3RyaW5nJiBrZXlpZHNOYW1lKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21T
dHJpbmcmIHdlYm1OYW1lKCk7CiAKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBleHRy
YWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0NlbmMo
Y29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNh
bml0aXplQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRl
ckJveD4+PiBleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiBwcml2YXRlOgogICAgIElu
aXREYXRhUmVnaXN0cnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCA4YmZiMWNlNzAxYTJmNWE2
OWI1YjUxOTkxYWE4NjMyZWJiODkyNWY5Li4xNDc3NmMyMDE1MWJmZWZlMzgwNzlhMzM3MzBjODg2
NjI2OGJhNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBN
ZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IEJ1ZmYKICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMs
IFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9LCBpbml0RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhLmRhdGEoKSwgaW5p
dERhdGEubGVuZ3RoKCkpLCBpbml0RGF0YVR5cGUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
LCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAg
IC8vIDEwLjEuIElmIHRoZSBpbml0IGRhdGEgaXMgbm90IHZhbGlkIGZvciBpbml0RGF0YVR5cGUs
IHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAg
Ly8gMTAuMi4gTGV0IHNhbml0aXplZCBpbml0IGRhdGEgYmUgYSB2YWxpZGF0ZWQgYW5kIHNhbml0
aXplZCB2ZXJzaW9uIG9mIGluaXQgZGF0YS4KLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVkSW5pdERhdGEgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZUluaXREYXRhKGlu
aXREYXRhVHlwZSwgaW5pdERhdGEpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVkSW5pdERhdGEgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZUluaXRE
YXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpOwogCiAgICAgICAgIC8vIDEwLjMuIElmIHRoZSBw
cmVjZWRpbmcgc3RlcCBmYWlsZWQsIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVk
IFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFzYW5pdGl6ZWRJbml0RGF0YSkgewpAQCAtMjIzLDcg
KzIyMyw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgICAgICAgICBtX2xhdGVzdERl
Y3J5cHRUaW1lID0gMDsKICAgICAgICAgfQogCi0gICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5y
ZXF1ZXN0TGljZW5zZShtX3Nlc3Npb25UeXBlLCBpbml0RGF0YVR5cGUsIHNhbml0aXplZEluaXRE
YXRhLnJlbGVhc2VOb25OdWxsKCksIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2
aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQp
IG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UobV9z
ZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBzYW5pdGl6ZWRJbml0RGF0YS5yZWxlYXNlTm9uTnVs
bCgpLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlm
aWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6
YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsK
IApAQCAtNDIyLDcgKzQyMiw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUoY29uc3Qg
QnVmZmVyU291cmNlJiByZXNwb25zZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mCiAgICAgLy8gNi4g
UnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6CiAgICAgcXVldWVUYXNrS2VlcGlu
Z09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVzcG9uc2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShy
ZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLmxlbmd0aCgpKSwgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAg
ICAgICAgLy8gNi4xLiBMZXQgc2FuaXRpemVkIHJlc3BvbnNlIGJlIGEgdmFsaWRhdGVkIGFuZC9v
ciBzYW5pdGl6ZWQgdmVyc2lvbiBvZiByZXNwb25zZSBjb3B5LgotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZWRSZXNwb25zZSA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXpl
UmVzcG9uc2UocmVzcG9uc2UpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVkUmVzcG9uc2UgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZVJlc3BvbnNl
KHJlc3BvbnNlKTsKIAogICAgICAgICAvLyA2LjIuIElmIHRoZSBwcmVjZWRpbmcgc3RlcCBmYWls
ZWQsIG9yIGlmIHNhbml0aXplZCByZXNwb25zZSBpcyBlbXB0eSwgcmVqZWN0IHByb21pc2Ugd2l0
aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAgICBpZiAoIXNhbml0aXplZFJlc3Bv
bnNlIHx8IHNhbml0aXplZFJlc3BvbnNlLT5pc0VtcHR5KCkpIHsKQEAgLTYwMSw3ICs2MDEsNyBA
QCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSkKICAgICAgICAgLy8gNC4zLiBMZXQgbWVzc2FnZSB0eXBlIGJlIG51bGwuCiAKICAgICAg
ICAgLy8gNC40LiBVc2UgdGhlIGNkbSB0byBleGVjdXRlIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0g
ICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwg
bV9zZXNzaW9uVHlwZSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChDRE1JbnN0YW5jZVNlc3Npb246
OktleVN0YXR1c1ZlY3RvciYmIGtleXMsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+
JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBt
dXRhYmxlIHsKKyAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKG1f
c2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBlLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKENETUluc3Rh
bmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5cywgc3RkOjpvcHRpb25hbDxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNj
ZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC02NDksNyArNjQ5LDcgQEAgdm9pZCBNZWRp
YUtleVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAg
Ly8gNS4gUmV0dXJuIHByb21pc2UuCiB9CiAKLXZvaWQgTWVkaWFLZXlTZXNzaW9uOjplbnF1ZXVl
TWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBjb25zdCBTaGFyZWRCdWZm
ZXImIG1lc3NhZ2UpCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UoTWVkaWFL
ZXlNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
bWVzc2FnZSkKIHsKICAgICAvLyA2LjQuMSBRdWV1ZSBhICJtZXNzYWdlIiBFdmVudAogICAgIC8v
IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI3F1ZXVlLW1lc3NhZ2UKQEAg
LTcxNiw3ICs3MTYsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVzZXMo
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBpbgogICAgICAgICB9KTsKIH0K
IAotdm9pZCBNZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIG1lc3Nh
Z2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit2b2lkIE1lZGlhS2V5U2Vzc2lv
bjo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7CiAgICAgZW5xdWV1ZU1lc3NhZ2UobWVzc2FnZVR5
cGUsIG1lc3NhZ2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKaW5kZXggM2Q5NmY4ODAyZTc0Nzg0MWM0ZWZk
YTgxZGNiOTQxZWE2ZTRhNzVlNC4uMzY1YWNlNWMwOTVlN2RjMGM1NzFlNzZjY2YyYzA3YWFmYzYy
YmFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNzIENETTsKIGNsYXNz
IERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIE1lZGlhS2V5U3RhdHVzTWFwOwogY2xhc3MgTWVkaWFL
ZXlzOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZVByb3h5OwogCkBA
IC04NywyMCArODcsMjAgQEAgcHVibGljOgogICAgIHVzaW5nIENsb3NlZFByb21pc2UgPSBET01Q
cm9taXNlUHJveHk8SURMVW5kZWZpbmVkPjsKICAgICBDbG9zZWRQcm9taXNlJiBjbG9zZWQoKSB7
IHJldHVybiBtX2Nsb3NlZFByb21pc2UuZ2V0KCk7IH0KIAotICAgIGNvbnN0IFZlY3RvcjxzdGQ6
OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4mIHN0YXR1c2VzKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0dXNlczsgfQorICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+JiBzdGF0dXNlcygpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdHVzZXM7IH0KIAogICAgIHVuc2lnbmVkIGludGVybmFsSW5zdGFu
Y2VTZXNzaW9uT2JqZWN0UmVmQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2luc3RhbmNlU2Vzc2lv
bi0+cmVmQ291bnQoKTsgfQogCiBwcml2YXRlOgogICAgIE1lZGlhS2V5U2Vzc2lvbihEb2N1bWVu
dCYsIFdlYWtQdHI8TWVkaWFLZXlzPiYmLCBNZWRpYUtleVNlc3Npb25UeXBlLCBib29sIHVzZURp
c3RpbmN0aXZlSWRlbnRpZmllciwgUmVmPENETT4mJiwgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4m
Jik7Ci0gICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlLCBjb25zdCBT
aGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5
cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIHVwZGF0ZUV4cGly
YXRpb24oZG91YmxlKTsKICAgICB2b2lkIHNlc3Npb25DbG9zZWQoKTsKICAgICBTdHJpbmcgbWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNz
aW9uQ2xpZW50CiAgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhDRE1JbnN0YW5jZVNlc3Npb25D
bGllbnQ6OktleVN0YXR1c1ZlY3RvciYmKSBvdmVycmlkZTsKLSAgICB2b2lkIHNlbmRNZXNzYWdl
KENETU1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOworICAg
IHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBT
dHJpbmcmKSBmaW5hbDsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBmaW5hbDsK
IApAQCAtMTQwLDEwICsxNDAsMTAgQEAgcHJpdmF0ZToKICAgICBNZWRpYUtleVNlc3Npb25UeXBl
IG1fc2Vzc2lvblR5cGU7CiAgICAgUmVmPENETT4gbV9pbXBsZW1lbnRhdGlvbjsKICAgICBSZWY8
Q0RNSW5zdGFuY2VTZXNzaW9uPiBtX2luc3RhbmNlU2Vzc2lvbjsKLSAgICBWZWN0b3I8UmVmPFNo
YXJlZEJ1ZmZlcj4+IG1fcmVjb3JkT2ZLZXlVc2FnZTsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiBtX3JlY29yZE9mS2V5VXNhZ2U7CiAgICAgZG91YmxlIG1fZmlyc3RE
ZWNyeXB0VGltZSB7IDAgfTsKICAgICBkb3VibGUgbV9sYXRlc3REZWNyeXB0VGltZSB7IDAgfTsK
LSAgICBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+
IG1fc3RhdHVzZXM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4gbV9zdGF0dXNlczsKIAogICAgIHVzaW5nIERpc3BsYXlD
aGFuZ2VkT2JzZXJ2ZXIgPSBPYnNlcnZlcjx2b2lkKFBsYXRmb3JtRGlzcGxheUlEKT47CiAgICAg
RGlzcGxheUNoYW5nZWRPYnNlcnZlciBtX2Rpc3BsYXlDaGFuZ2VkT2JzZXJ2ZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVz
TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
dGF0dXNNYXAuY3BwCmluZGV4IDA2YWZmYjVmMmVkZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2
MGMuLjM5OGU4YWIxYjY1NmI0NDU5MjdiZWI2YmM2OTNkZDM5OWE2ODdhYzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
dGF0dXNNYXAuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHVuc2lnbmVkIGxvbmcgTWVkaWFLZXlTdGF0
dXNNYXA6OnNpemUoKQogICAgIHJldHVybiBtX3Nlc3Npb24tPnN0YXR1c2VzKCkuc2l6ZSgpOwog
fQogCi1zdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0
IEJ1ZmZlclNvdXJjZSYgYikKK3N0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKIHsKICAgICBhdXRvIGxl
bmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAhPSBiLmxlbmd0aCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN0YXR1c01hcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVN0YXR1c01hcC5oCmluZGV4IGMyMTExMTNhMmM2ZGFjNzk3OTI0YTk5ZDJkMmRmOTdj
MmU2NWY4NTAuLjYwZDYyYWFmZjgwNzRkYWRhNmUzMWEzZjJiMzcwYTZkNmQwMWY2MTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0
dXNNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U3RhdHVzTWFwLmgKQEAgLTM4LDcgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgTWVkaWFLZXlTZXNzaW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTWVkaWFLZXlTdGF0dXNNYXAgOiBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYUtleVN0YXR1c01hcD4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCmluZGV4IDgzYjI0YWNl
YWE1YjEyOTRiYjRlYTQzOWZiMmQ1YzRmNmNjZDQ3NTMuLjM2N2YzMWQxODZiNTE2MzlhOWM3NDIx
M2YwY2Y4ZTZmMmY4ZDI2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBib29sIE1lZGlh
S2V5czo6aGFzT3BlblNlc3Npb25zKCkgY29uc3QKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgTWVk
aWFLZXlzOjp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQordm9pZCBNZWRp
YUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQog
ewogICAgIGZvciAoYXV0byYgY2RtQ2xpZW50IDogbV9jZG1DbGllbnRzKQogICAgICAgICBjZG1D
bGllbnQuY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChpbml0
RGF0YVR5cGUsIGluaXREYXRhLmNvcHlSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAppbmRleCA3YjU5YTNiYzZkMjI1NmZjNjU2
ZjA4Y2JmMjY4OTE4NTEwOTgzYTIyLi45MWExYTA3MTE0MzNiZTI0N2RkMmE4NWM1ZjRhZDA5Mzhh
MDlhN2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlzLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHJvdGVjdGVkOgogICAgIE1lZGlhS2V5cyhE
b2N1bWVudCYsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBib29sIHBlcnNpc3RlbnRT
dGF0ZUFsbG93ZWQsIGNvbnN0IFZlY3RvcjxNZWRpYUtleVNlc3Npb25UeXBlPiYsIFJlZjxDRE0+
JiYsIFJlZjxDRE1JbnN0YW5jZT4mJik7CiAKICAgICAvLyBDRE1JbnN0YW5jZUNsaWVudAotICAg
IHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcm
LCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlh
bGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3Qg
TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlcjsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IGYxMmM4OGZlZTlhODA3NGI1MDhl
Zjk1NzFlNzAxZjU2ODJmYjQ5MjcuLjAwMzkzMDJmN2RjMTZmZmVjZmM0NjVjN2Q4ZGEyNTJmOThk
YWY1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAg
LTI5NywxNCArMjk3LDE0IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgp
CiAgICAgICAgIHJldHVybiBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAg
ICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2Rpbmco
KS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAg
ICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0
ZXh0Qm9keSgpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc1VS
TFNlYXJjaFBhcmFtcygpKQotICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJp
bmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNC
b2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAg
IGlmIChpc0FycmF5QnVmZmVyKCkpCi0gICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRh
dGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJC
b2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAo
aXNBcnJheUJ1ZmZlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9k
eSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsK
KyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVy
Vmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCAwODk4M2VjMDA0M2Y2Yzk5
YTdmYWVhZmM2OTNjZTgyODIzYjQwMWJjLi5iYWQxYjVlYTIzYjc3MWIzNDdmNGIwNGE1Njc1OGZj
MDA4OGUxMmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAg
LTY0LDcgKzY0LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5QXNGb3Jt
RGF0YSgpIGNvbnN0OwogCi0gICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6
bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Owor
ICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZv
cm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CiAKICAg
ICB2b2lkIHNldEFzRm9ybURhdGEoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIHsgbV9kYXRhID0gV1RG
TW92ZShkYXRhKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcAppbmRleCAxMWE3M2YzNDVlODJkOWU3MDg1OThhYTgzM2RlYWVkOGJl
YzkzNDk0Li4yMjEzZDYyMzAzZWZlMmExZjcyOTgyNjBmNTg4NjBiNzc2ZmIyNjc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApA
QCAtMzI5LDEzICszMjksMTMgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiAgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEs
IHNpemUpOwogfQogCi12b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxTaGFyZWRC
dWZmZXI+JiYgZGF0YSkKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBtX2J1ZmZlci5yZXNldCgpOwogICAg
IG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewogICAgIGlmICghbV9idWZm
ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDZiYmJjZTczNDdhYTNiYzJmNzBmNGVj
NmQ4YmIwZTE4NzJhYWY4OTcuLjg3MWQyYzA4NjMzMWE5ODI5NGExNjZhNGI0MmUzMTg0ZTAzNzc3
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmgKQEAgLTUwLDEwICs1MCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyBy
ZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxT
aGFyZWRCdWZmZXI+JiYpOworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZvaWQgc2V0RGF0
YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiB0YWtlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtl
RGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigp
OwogICAgIFN0cmluZyB0YWtlQXNUZXh0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggZmM1NWNjN2Q4M2Q4YmMxMWYwODU0ZGMzY2ZkODUw
OTdhMzFmMTBmNi4uMDNmODliNjFjYTVmN2M3MTc2YjlkODhjZDEzNjYwZTg2YjdhMjU0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTEzNSw3
ICsxMzUsNyBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdG9wKCkKICAgICAgICAgbV9sb2FkZXItPmNh
bmNlbCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaExvYWRlcjo6c3RhcnRTdHJl
YW1pbmcoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoTG9hZGVyOjpzdGFy
dFN0cmVhbWluZygpCiB7CiAgICAgQVNTRVJUKG1fY29uc3VtZXIpOwogICAgIGF1dG8gZmlyc3RD
aHVuayA9IG1fY29uc3VtZXItPnRha2VEYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoTG9hZGVyLmgKaW5kZXggMmY5MGYwZWMzZmY5MDVhMjYyMzFjODRjNzJhN2ExODZj
ZDRiZmU4My4uNDYxMmQwZTBlM2E3ZWZlMzA2MDM5NmIwZDc1YTJmYTNiYzRlZGRhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApAQCAtMzksMTQgKzM5LDE0
IEBAIGNsYXNzIEZldGNoQm9keUNvbnN1bWVyOwogY2xhc3MgRmV0Y2hMb2FkZXJDbGllbnQ7CiBj
bGFzcyBGZXRjaFJlcXVlc3Q7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRmV0
Y2hMb2FkZXIgZmluYWwgOiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6
CiAgICAgRmV0Y2hMb2FkZXIoRmV0Y2hMb2FkZXJDbGllbnQmLCBGZXRjaEJvZHlDb25zdW1lciop
OwogICAgIFdFQkNPUkVfRVhQT1JUIH5GZXRjaExvYWRlcigpOwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKIAogICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIGNvbnN0IEZldGNoUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQg
c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEJsb2ImKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IGI5MzQzOTJhOTAz
ZDRhNWZkMWM1NGFlODE0OGIyZTZlNzllNzZjNmIuLmUzOGE4M2FkZTdkNmUwYWFmNzBjZWI5YzVh
YThmZThhYjQ5NDNkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcApAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0
Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGlu
CiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLnNldEFz
Rm9ybURhdGEoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpc10o
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICAgICAgW3RoaXNdKFJl
ZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkp
CiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLmNvbnN1
bWVyKCkuc2V0RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQg
RmV0Y2hSZXNwb25zZTo6ZmVlZFN0cmVhbSgpCiAgICAgY2xvc2VTdHJlYW0oKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RhcnRTdHJlYW1p
bmcoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoUmVzcG9uc2U6OkJvZHlM
b2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKIHsKICAgICBBU1NFUlQobV9sb2FkZXIpOwogICAgIHJl
dHVybiBtX2xvYWRlci0+c3RhcnRTdHJlYW1pbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggMzc0OGM4ZjU5MjcyOTMwYmJjMmQxNjY2YzZh
ZWI1NDdhMWI1ZWYwNi4uY2Y3ODYzMjM5ZmQ5NDZlZTBlOGQ4OGVhZWE3MmZlOTg5ZWVkMzE0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTg1
LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmVlZFN0cmVhbSgpIGZpbmFsOwogICAgIHZv
aWQgY2FuY2VsKCkgZmluYWw7CiAKLSAgICB1c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlh
bnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj47CisgICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0
cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CiAgICAgUmVzcG9uc2VEYXRh
IGNvbnN1bWVCb2R5KCk7CiAgICAgdm9pZCBzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiwgdWlu
dDY0X3QgYm9keVNpemVXaXRoUGFkZGluZyk7CiAKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2YXRl
OgogCiAgICAgICAgIHZvaWQgY29uc3VtZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0Nh
bGxiYWNrJiYpOwogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5n
KCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzdGFydFN0cmVhbWlu
ZygpOwogICAgICAgICBOb3RpZmljYXRpb25DYWxsYmFjayB0YWtlTm90aWZpY2F0aW9uQ2FsbGJh
Y2soKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVzcG9uc2VDYWxsYmFjayk7IH0KICAgICAgICAgQ29u
c3VtZURhdGFCeUNodW5rQ2FsbGJhY2sgdGFrZUNvbnN1bWVEYXRhQ2FsbGJhY2soKSB7IHJldHVy
biBXVEZNb3ZlKG1fY29uc3VtZURhdGFDYWxsYmFjayk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAppbmRleCA2MTM3YzJjZjZmZjQ3YTM2
ODQwZjExYjk2NmI5ZTUyNTg3MWQ4MTVmLi4xYTY2YmY4MTgzMjBlOTU2MDdkNjE1ZjFhMDgyYTgy
NzZlYjJhMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHQuaApAQCAtMzgsNyArMzgsNyBAQCBlbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9y
SGlnaGxpZ2h0IDogYm9vbCB7IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgSGlnaGxpZ2h0UmVxdWVz
dE9yaWdpbmF0ZWRJbkFwcCA6IGJvb2wgeyBObywgWWVzIH07CiAKIHN0cnVjdCBBcHBIaWdobGln
aHQgewotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGhpZ2hsaWdodDsKKyAgICBSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaGlnaGxpZ2h0OwogICAgIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiB0ZXh0OwogICAgIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGlzTmV3
R3JvdXA7CiAgICAgSGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCByZXF1ZXN0T3JpZ2lu
YXRlZEluQXBwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQv
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKaW5kZXggODNiOTVkN2NmMDA3YWE1NGZiZmUy
MzRiN2Q4YjFlYjhlMTk5NjNlNC4uNWU4MGYwYzA3MmQ0OWEzZWY3OTY5NTkzMDJjNDQ1NmNkMmFi
ZGU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY29uc3RleHByIHVpbnQ2NF90IGhpZ2hsaWdodEZpbGVTaWduYXR1cmUgPSAw
eDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0dXJlICAoQSlwcGxlKEFQKXBsaWNhdGlv
bihIKWlnaGxpZ2h0cygyMDIxKQogCi1zdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0
YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCitzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhOjpjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOwogICAg
IGF1dG8gZGVjb2RlciA9IGNvbnRpZ3VvdXNCdWZmZXItPmRlY29kZXIoKTsKQEAgLTUzLDcgKzUz
LDcgQEAgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJh
bmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEIKICAgICByZXR1cm4gZGF0YTsKIH0KIAotUmVm
PFNoYXJlZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjp0b1NoYXJlZEJ1ZmZlcigpIGNv
bnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjp0
b1NoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBl
bmNvZGVyOwogICAgIGVuY29kZXIgPDwgKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCmluZGV4IGNmNjM4
MWFjZmIwYTUyMTFiNDM1MDhiN2I1MTdkNmRiMmY2ZmM3NDMuLmI1ZGFmNjAyNTM5OGEzZjdlNmYx
ZDM3YWJlY2U4NDRkNGYxYzY1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCkBAIC0zMywxMiArMzMsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCi1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBBcHBIaWdobGlnaHRSYW5nZURhdGEgewogV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhPiBjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBjcmVhdGUoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHN0cnVjdCBOb2RlUGF0aENvbXBvbmVu
dCB7CiAgICAgICAgIFN0cmluZyBpZGVudGlmaWVyOwogICAgICAgICBTdHJpbmcgbm9kZU5hbWU7
CkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRlY29kZShEZWNv
ZGVyJik7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0Owor
ICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0Owog
CiBwcml2YXRlOgogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCmluZGV4
IGRjMzlhMGYwZDE4ZmZmY2E3ZGZiNDY1MjE5Y2Q2MTJhOWY3MzhmOGYuLmU1ZGU4NDk0ZjM1MDQ1
MzU5NGIyZjJlODhjM2RkYTMzZmE5YWY3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCkBAIC0yMzcsNyAr
MjM3LDcgQEAgdm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpzdG9yZUFwcEhpZ2hsaWdodChSZWY8
U3RhdGljUmFuZ2U+JiYgcmFuZ2UpCiAgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5z
dG9yZUFwcEhpZ2hsaWdodChXVEZNb3ZlKGhpZ2hsaWdodCkpOwogfQogCi12b2lkIEFwcEhpZ2hs
aWdodFN0b3JhZ2U6OnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgU2Nyb2xsVG9IaWdobGlnaHQgc2Nyb2xsKQordm9pZCBBcHBIaWdobGln
aHRTdG9yYWdlOjpyZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBTY3JvbGxUb0hpZ2hsaWdodCBzY3JvbGwpCiB7CiAgICAg
YXV0byBhcHBIaWdobGlnaHRSYW5nZURhdGEgPSBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0
ZShidWZmZXIpOwogICAgIGlmICghYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCmlu
ZGV4IGIxNTJmNzZlZDQyNDA4OTJlYTdkZTIxZTJjYjA2ZDQ3MmQ4NzMzNjAuLmUyNzY2MzNiNDg0
ZjgxMDk0YWRlY2U0NWY2NGFiYmVkMTc4MTI1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKQEAgLTM5LDcgKzM5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKIAog
Y2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogY2xhc3MgU3RhdGljUmFuZ2U7CiBjbGFzcyBIaWdobGlnaHQ7CiAKQEAgLTU0
LDcgKzU0LDcgQEAgcHVibGljOgogICAgIH5BcHBIaWdobGlnaHRTdG9yYWdlKCk7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTdGF0aWNSYW5nZT4mJik7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU2Nyb2xsVG9IaWdobGlnaHQpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBTY3JvbGxUb0hpZ2hsaWdodCk7CiAgICAgdm9pZCByZXN0b3JlVW5yZXN0
b3JlZEFwcEhpZ2hsaWdodHMoKTsKICAgICBNb25vdG9uaWNUaW1lIGxhc3RSYW5nZVNlYXJjaFRp
bWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaDsgfQogICAgIHZvaWQg
cmVzZXRMYXN0UmFuZ2VTZWFyY2hUaW1lKCkgeyBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaCA9IE1v
bm90b25pY1RpbWU6Om5vdygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKaW5kZXggYTFjOTMx
MmQ0NWViYmZjZTlmMzJlNmNjMWExYTJlODRkZGNhN2M3Mi4uMmEyYzFmYzMyOTU4MDVkNTJmZDU2
YWYzMGI0NTVhZTJjY2NjNDg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcApAQCAtMzksNyAr
MzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgS2V5UGF0aFR5cGUgeyBO
dWxsLCBTdHJpbmcsIEFycmF5IH07CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBz
ZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBh
dGgpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiB7CiAgICAgYXV0byBlbmNvZGVyID0gS2V5
ZWRFbmNvZGVyOjplbmNvZGVyKCk7CiAKQEAgLTI4MiwxMyArMjgyLDEzIEBAIHN0YXRpYyB2b2lk
IGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElEQktleURhdGEmIGtleSkK
ICAgICB9CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlh
bGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQogewogICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJzaW9uKTsKIAogICAgIGVuY29k
ZUtleShkYXRhLCBrZXkpOwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpOwogfQogCiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlS2V5
KGNvbnN0IHVpbnQ4X3QqJiBkYXRhLCBjb25zdCB1aW50OF90KiBlbmQsIElEQktleURhdGEmIHJl
c3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCmluZGV4IGFhZmRiMzcwMWYwZWY0NDhkNmI4YWI1MTAx
MTg1YzRiMzRmZmFhOGEuLjY1YzRhNjNjNzg3ZjM2OTQxNDZlMjMxYzhjNTQwMTcwNjdhNGY0MjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcmlhbGl6YXRpb24uaApAQCAtMzIsMTAgKzMyLDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSURCS2V5RGF0YTsKIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYp
OworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9w
dGlvbmFsPElEQktleVBhdGg+Jik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCB1
aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBzdGQ6Om9wdGlvbmFsPElEQktleVBh
dGg+Jik7CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlE
YXRhKGNvbnN0IElEQktleURhdGEmKTsKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlE
QktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleURhdGEo
Y29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgSURCS2V5RGF0YSYpOwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggMGE0NjliZDBiZDFmMzhk
Y2I5NmIzOWQ4YzMwMDBhZjczZDEyYWI1OS4uYzlkNmRhNmJkZDlmOTM5NTAxZjRmNDIzMmI0Yzc4
MzdkODQwZGFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IE1lZGlhUmVjb3JkZXI6OnN0YXJ0UmVjb3JkaW5nKHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IHRpbWVTbGljCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3RhdGljIGlubGluZSBSZWY8Qmxv
YkV2ZW50PiBjcmVhdGVEYXRhQXZhaWxhYmxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkKK3N0YXRpYyBpbmxpbmUgUmVmPEJsb2JFdmVudD4gY3Jl
YXRlRGF0YUF2YWlsYWJsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgZG91YmxlIHRpbWVDb2RlKQogewogICAgIGF1dG8gYmxvYiA9IGJ1ZmZlciA/IEJsb2I6
OmNyZWF0ZShjb250ZXh0LCBidWZmZXItPmV4dHJhY3REYXRhKCksIG1pbWVUeXBlKSA6IEJsb2I6
OmNyZWF0ZShjb250ZXh0KTsKICAgICByZXR1cm4gQmxvYkV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmRhdGFhdmFpbGFibGVFdmVudCwgQmxvYkV2ZW50OjpJbml0IHsgeyBmYWxzZSwgZmFsc2Us
IGZhbHNlIH0sIFdURk1vdmUoYmxvYiksIHRpbWVDb2RlIH0sIEJsb2JFdmVudDo6SXNUcnVzdGVk
OjpZZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyLmgKaW5kZXggNzcxMmI0NDUyODM2N2Q4YzI3MjUwMmFkYmFhY2FhZjk3ODhj
YmRiMC4uMWU5Yjc0YWIxN2UzMTA4ZGI0MjA5YjliNGYwMjE0ZGExMWFjNmUwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5o
CkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoRXJyb3IoRXhj
ZXB0aW9uJiYpOwogCiAgICAgZW51bSBjbGFzcyBUYWtlUHJpdmF0ZVJlY29yZGVyIHsgTm8sIFll
cyB9OwotICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPjsKKyAgICB1
c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+OwogICAgIHZv
aWQgZmV0Y2hEYXRhKEZldGNoRGF0YUNhbGxiYWNrJiYsIFRha2VQcml2YXRlUmVjb3JkZXIpOwog
CiAgICAgLy8gTWVkaWFTdHJlYW06Ok9ic2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCmluZGV4IDNmNGM5YmNkMTMz
YWMyOWYzZjdkZGUxOTk0NzhlMzkyNTdkNWU2NmIuLjg3NGFhN2YwYjE4ZjBlZTc1ODgwYmE1ZjVl
ZjY3ZDQ3YmZjMmIyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQXJ0d29y
a0ltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNv
bnN0IE5ldHdvcmtMCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gU2FuaXRpemUgdGhl
IGltYWdlIGJ5IGRlY29kaW5nIGl0IGludG8gYSBCaXRtYXBJbWFnZS4KLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0
YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXpl
ID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIGF1dG8gYml0bWFwSW1hZ2Ug
PSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgYml0bWFwSW1hZ2UtPnNldERhdGEoV1RGTW92
ZShidWZmZXJUb1Nhbml0aXplKSwgdHJ1ZSk7CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1Nv
dXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJj
ZUJ1ZmZlci5jcHAKaW5kZXggMmIzY2RlMzYwODI0NzFjMTFjODdmY2Y2MWNjODFjYzM2MGMzOWQ5
MC4uZDM3OGFmYzZmOGExYjU3YTAzMDJlMmM4NjhiMjQwYTIwOTdmZTRjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAt
NTMwLDcgKzUzMCw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJUaW1lckZpcmVk
KCkKICAgICAvLyBodHRwczovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlw
L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCNzb3VyY2VidWZmZXItc2VnbWVudC1wYXJz
ZXItbG9vcAogICAgIC8vIFdoZW4gdGhlIHNlZ21lbnQgcGFyc2VyIGxvb3AgYWxnb3JpdGhtIGlz
IGludm9rZWQsIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYXBwZW5kRGF0YSA9IFdURk1vdmUobV9wZW5kaW5nQXBwZW5kRGF0YSk7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGFwcGVuZERhdGEgPSBXVEZNb3ZlKG1fcGVuZGlu
Z0FwcGVuZERhdGEpOwogICAgIC8vIDEuIExvb3AgVG9wOiBJZiB0aGUgaW5wdXQgYnVmZmVyIGlz
IGVtcHR5LCB0aGVuIGp1bXAgdG8gdGhlIG5lZWQgbW9yZSBkYXRhIHN0ZXAgYmVsb3cuCiAgICAg
aWYgKCFhcHBlbmREYXRhIHx8ICFhcHBlbmREYXRhLT5zaXplKCkpIHsKICAgICAgICAgc291cmNl
QnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKEFwcGVuZFJlc3VsdDo6QXBwZW5kU3VjY2VlZGVk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNl
QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5oCmluZGV4IDUyMGMwNzc1Njk2YTJmMGUyZTczMDA3MzVlOGM5Nzc0OTVmMWE2MTQuLmQ0Yzg1
NzljMGJiZDQ0M2E1MTJmYTlmNjhjNDI3ZWMwNDg4NWQwZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAtMjIyLDcgKzIyMiw3
IEBAIHByaXZhdGU6CiAKICAgICBXVEY6Ok9ic2VydmVyPHZvaWQqKCk+IG1fb3BhcXVlUm9vdFBy
b3ZpZGVyOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsK
ICAgICBUaW1lciBtX2FwcGVuZEJ1ZmZlclRpbWVyOwogCiAgICAgUmVmUHRyPFZpZGVvVHJhY2tM
aXN0PiBtX3ZpZGVvVHJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKaW5kZXgg
ZjU4MjdkZjkzNzk0OTNkMjgxMjcwMTc3Y2NmYmNhMDU1MTUzMjMxZi4uNzM5NDJhODM1OTMxYTlk
Mjg0YzZhNDUxYmI4ZGJmYjU3NjVjYWRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxl
ci5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJUQ0RhdGFD
aGFubmVsSGFuZGxlckNsaWVudDsKIGNsYXNzIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNv
bm5lY3Rpb247CiBjbGFzcyBSVENFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxl
ciBmaW5hbCA6IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIsIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0cnVjdCBNZXNzYWdl
IHsKICAgICAgICAgYm9vbCBpc1JhdyB7IGZhbHNlIH07Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
ICAgICB9OwogICAgIFZlY3RvcjxNZXNzYWdlPiBtX3BlbmRpbmdNZXNzYWdlczsKICAgICBib29s
IG1faXNQZW5kaW5nQ2xvc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggZTc5ZWJkYmFjNDA4M2U5NDU0YzY5ZDE5
OTZlNmZkMmQ4YzcyOTgxOS4uM2NlZWQwYTAxMWU3YjU0NmZhZGRmNDhiYmRhMjExZGZkZDUyNGM1
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
Y3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQsCiAgICAgbV9jb250
ZXh0SWRlbnRpZmllciA9IGNvbnRleHRJZGVudGlmaWVyOwogCiAgICAgZm9yIChhdXRvJiBtZXNz
YWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7Ci0gICAgICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsm
XShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgeworICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBb
Jl0oUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CiAgICAgICAgICAgICBjbGll
bnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOwogICAgICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBj
bGllbnQuZGlkUmVjZWl2ZVN0cmluZ0RhdGEodGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCmluZGV4IDQxZjk1MjgyMWU2MjAwOTNmOGVlZmUz
MmM1ZWQ0YWUwZjVlNTQxOTcuLjExYmQ0NWRlOTE1NTc3OWZmYzllZmIwM2U5NTUyOGYwNWU2NGQ3
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5o
CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIFJUQ0RhdGFDaGFubmVsU3RhdGUg
c3RhdGU7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8d2VicnRjOjpSVENFcnJvcj4gZXJyb3I7CiAg
ICAgfTsKLSAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PFN0YXRlQ2hhbmdlLCBTdHJp
bmcsIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50
PFN0YXRlQ2hhbmdlLCBTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAg
dXNpbmcgUGVuZGluZ01lc3NhZ2VzID0gVmVjdG9yPE1lc3NhZ2U+OwogICAgIHZvaWQgc3RvcmVN
ZXNzYWdlKFBlbmRpbmdNZXNzYWdlcyYsIGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYpOwogICAg
IHZvaWQgcHJvY2Vzc01lc3NhZ2UoY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVyJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKaW5k
ZXggMGI4OThmNmFkYjU3ZWIyNWRjNDkzN2Q4MWZmNWQxNGQ1Mjk3NmM4NC4uZDUxNzNmYmY4YjQw
MzQxYzVjZjhkOGE0ZjU1ZWVhYzhmZjgzOGEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaApAQCAtMzUsNyArMzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNzIFJlYWRhYmxl
U3RyZWFtOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIAogY2xhc3MgUmVhZGFibGVTdHJlYW1TaW5rIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFi
bGVTdHJlYW1TaW5rPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggODUxNDdjMDk2MWM5OTczMTYzMWYwZWRmYjll
ZmU3NGU1YzM2Y2FjYi4uNTI1MTBjMzA4MThmMGNhOTE2YTg4NDM3N2QyMjRhMWFiYTc5NWI4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cApAQCAtNDc1LDcgKzQ3NSw3IEBAIHN0YXRpYyBKU0M6OkpTUHJvbWlzZSogaGFuZGxlUmVzcG9u
c2VPblN0cmVhbWluZ0FjdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIC8v
IEZJWE1FOiBTdXBwb3J0IEZvcm1EYXRhIGxvYWRpbmcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyNDgKICAgICAgICAgY29tcGlsZXItPmZh
aWwoZ2xvYmFsT2JqZWN0LCBjcmVhdGVET01FeGNlcHRpb24oKmdsb2JhbE9iamVjdCwgRXhjZXB0
aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgIH0pKTsKLSAgICB9
LCBbJl0oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0o
UmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMo
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFs
aXplKGdsb2JhbE9iamVjdCk7CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3Zp
ZGVyLmgKaW5kZXggYjkxOGYzMTQxYWYyZjUyMTY0MjY4OThmYWVhODRmNGIwMmIxZTI3ZS4uYjhi
Nzc4NWY5MWQwNjhjMmE0NmNlYjFkNjU5NzU4ZmNmOGI2OWQ5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBA
IC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgU2NyaXB0QnVmZmVyIG1fc2Ny
aXB0QnVmZmVyOwotICAgIG11dGFibGUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1f
Y29udGlndW91c0J1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29u
dGlndW91c0J1ZmZlcjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsK
ICAgICBtdXRhYmxlIFN0cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggN2U0OWE5ZTcz
MjI2YjY1Y2MyOGJmNTk0ODEzYjBmODNiMjY5ZDIyYi4uZWYzN2YxZDBjYTQ2MmJiOWI3YzliNmE1
NWQxOGViYjRjMTE4MWE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgRGV0YWNoZWRP
ZmZzY3JlZW5DYW52YXM7CiBjbGFzcyBJREJWYWx1ZTsKIGNsYXNzIE1lc3NhZ2VQb3J0OwogY2xh
c3MgSW1hZ2VCaXRtYXBCYWNraW5nOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgU2VyaWFsaXphdGlvblJldHVybkNvZGU7CiAK
IGVudW0gY2xhc3MgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB7IE5vblRocm93aW5nLCBUaHJvd2lu
ZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggNGI0Mzk5
NTRmMTliYTRiODIzN2M5ZTVkYWVkNDFlNGJhN2ZkYTBlYy4uY2FkYzRhMDU5NGM1YmY2Mzc4Y2Zh
N2IwZThjYTQ3NTI2NTYwYmFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuY3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChE
b2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2luRG9jdW1lbnRD
dXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgICAgIFNWR0ZvbnRFbGVtZW50JiBmb250
RWxlbWVudCA9IGRvd25jYXN0PFNWR0ZvbnRFbGVtZW50PigqbV9zdmdGb250RmFjZUVsZW1lbnQt
PnBhcmVudE5vZGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gb3RmRm9udCA9IGNvbnZl
cnRTVkdUb09URkZvbnQoZm9udEVsZW1lbnQpKQotICAgICAgICAgICAgICAgICAgICBtX2dlbmVy
YXRlZE9URkJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90
ZkZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKG1fZ2VuZXJhdGVkT1RGQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAg
ICAgIG1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoKm1fZ2VuZXJhdGVkT1RGQnVmZmVyLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0
Zm9ybURhdGEpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6Omxv
YWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICB9IGVsc2UgaWYgKG1faW1tZWRpYXRlU291
cmNlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSk7CiAgICAgICAgICAgICBib29sIHdyYXBwaW5nOwotICAgICAgICAgICAgYXV0byBidWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2Ut
PmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFk
ZHJlc3MoKSksIG1faW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOwogICAgICAgICAgICAg
bV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3Vz
dG9tRm9udERhdGEoYnVmZmVyLmdldCgpLCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAg
ICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSk7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNv
dXJjZS5oCmluZGV4IDZhODJjZjFlM2RjOTE1OTc4NTMzNjViZDMxZTM2MjMyNzg2YTA4ODIuLjEw
OGU2Yzg3NjdkMGQyZmRhY2JlNjUwNGViYzUwNzBlODgyYmU2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ1NTRm9udEZhY2U7CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7Ci1jbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1l
bnQ7CiBjbGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKQEAgLTkzLDcgKzkz
LDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0
b3I7IC8vIEZvciByZW1vdGUgZm9udHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxzbyBmb3Ig
cmVtb3RlIGZvbnRzLCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAKLSAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CiAgICAgUmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IDFkZWFjNGY0MWNmNDlm
MWY4ODJkY2NlZmQ0OGNmNmE5NzMyZjNlZDkuLmM0MmVjMDUxZmUxMWViYTE0ZjgxMzM1OWQ4ZDE3
YTJjMjgxNjY0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC00MDIsNyAr
NDAyLDcgQEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlVHlwZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9h
cmRGaWxlUmVhZGVyIHsKICAgICAgICAgdHlwZXMuYWRkKEZpbGU6OmNvbnRlbnRUeXBlRm9yRmls
ZShmaWxlbmFtZSkpOwogICAgIH0KIAotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCisgICAgdm9pZCByZWFk
QnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpCiAgICAgewogICAgICAgICB0eXBlcy5hZGQodHlwZSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGZhMTQ2N2RiOGVkODczNzQ3YzA0NDczYjE0
YzY4OWFkN2I3MGExM2QuLmM1ZTllMjZiMzcyYWU2ODNmMTg2OGU5MjBjNDVlZDcwZWRmNTU0N2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxMjUsNyArNDEyNSw3IEBAIFByb21p
c2VkQXR0YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQm
IGVsZW1lbnQpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRp
dGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4g
YWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlv
bmFsRGF0YTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmRE
YXRhRm9yQXR0YWNobWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRh
KTsKICNlbmRpZgpAQCAtNDEzMyw3ICs0MTMzLDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBF
ZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1
cm4geyBhdHRhY2htZW50LT51bmlxdWVJZGVudGlmaWVyKCksIFdURk1vdmUoYWRkaXRpb25hbFR5
cGVzKSwgV1RGTW92ZShhZGRpdGlvbmFsRGF0YSkgfTsKIH0KIAotdm9pZCBFZGl0b3I6OnJlZ2lz
dGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIEVkaXRvcjo6cmVnaXN0ZXJBdHRhY2htZW50SWRl
bnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgp
KQogICAgICAgICBjbGllbnQtPnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoaWRlbnRpZmll
ciwgY29udGVudFR5cGUsIHByZWZlcnJlZEZpbGVOYW1lLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oCmluZGV4IGY1ZmNkY2NiNjY2NTgyMDIzODUyMGU2MzIzNTFjOWZmYTJh
YjlhYTguLjFkMDcxNmM1YjkzYzhiYjdhZDczZjQxNzRjYTgwNDU5MDVmOTE5MTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaApAQCAtNTgsNyArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOwogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwog
Y2xhc3MgQ29tcG9zaXRlRWRpdENvbW1hbmQ7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3VzdG9tVW5kb1N0ZXA7CiBjbGFzcyBEYXRh
VHJhbnNmZXI7CiBjbGFzcyBEZWxldGVCdXR0b25Db250cm9sbGVyOwpAQCAtNzUsNyArNzUsNyBA
QCBjbGFzcyBLaWxsUmluZzsKIGNsYXNzIFBhc3RlYm9hcmQ7CiBjbGFzcyBQYXN0ZWJvYXJkV3Jp
dGVyRGF0YTsKIGNsYXNzIFJlbmRlckxheWVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7CiBjbGFzcyBTcGVsbENoZWNrUmVx
dWVzdDsKIGNsYXNzIFNwZWxsQ2hlY2tlcjsKQEAgLTUzNyw3ICs1MzcsNyBAQCBwdWJsaWM6CiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZy
b21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwog
I2VuZGlmCiAKICAgICBib29sIGNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCkgY29u
c3Q7CkBAIC01NjQsNyArNTY0LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2
b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBmaWxlRGF0YSk7CisgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0
cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGZp
bGVEYXRhKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YT4mJik7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBT
dHJpbmcmKTsKQEAgLTU3NCw3ICs1NzQsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYp
OwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0
YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOworICAgIHZvaWQgZ2V0
UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJp
bmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSk7CiAj
ZW5kaWYKICNlbmRpZgogCkBAIC02MTksMTIgKzYxOSwxMiBAQCBwcml2YXRlOgogICAgIHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGFkanVzdGVkU2VsZWN0aW9uUmFuZ2UoKTsKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZWxlY3Rp
b25JbldlYkFyY2hpdmVGb3JtYXQoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZWxlY3Rp
b25JbldlYkFyY2hpdmVGb3JtYXQoKTsKICAgICBTdHJpbmcgc2VsZWN0aW9uSW5IVE1MRm9ybWF0
KCk7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZl
Rm9ybWF0KEVsZW1lbnQmKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2ViQXJj
aGl2ZUZvcm1hdChFbGVtZW50Jik7CiAgICAgc3RhdGljIFN0cmluZyB1c2VyVmlzaWJsZVN0cmlu
Zyhjb25zdCBVUkwmKTsKLSAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwotICAgIHN0YXRpYyBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0
cmluZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1h
dChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CiAjZW5kaWYKICAgICB2b2lk
IHBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiwg
Y29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKaW5kZXggMzljM2IxZmEzZDg1NmY4ZDg0OWM2
OTMzMWQ4OWU5OThmN2U3NjIzYi4uZjMwMjgyMzU2OTAwNmY1Y2Y5ZGJiNGVmYzM3M2U2N2VmMDVm
MTlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNo
bWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5oCkBAIC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBzdHJ1
Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhIHsKICAgICBTdHJpbmcgaWRlbnRpZmllcjsKICAg
ICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7
CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaAppbmRleCAwOGFhMTI0
MjY2MjBmNzY5NTNhNzliMzRlZGU1ZjZkZjA1MjdiMDE1Li45NTdiNGZkNGE1NTdmYzgxY2QzMDY5
ZWVhY2I4OTQ4OGE5NDdiN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvbnRlbnRSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRS
ZWFkZXIuaApAQCAtNzIsMTYgKzcyLDE2IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWFkRmlsZVBh
dGgoY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplID0geyB9LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0geyB9KSBvdmVycmlkZTsKICAg
ICBib29sIHJlYWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKICAg
ICBib29sIHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZElt
YWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9u
U2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKKyAgICBib29s
IHJlYWRJbWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0
eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92
ZXJyaWRlOwogICAgIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxl
KSBvdmVycmlkZTsKICAgICBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hp
dmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
Ci0gICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50
YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRXZWJBcmNoaXZlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEZEKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEYoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQ
cmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRl
OwogI2VuZGlmCiB9OwogCkBAIC05OSwxNiArOTksMTYgQEAgcHJpdmF0ZToKICAgICBib29sIHJl
YWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBT
dHJpbmcmID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZEZp
bGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgYm9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBib29sIHJl
YWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25T
aXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZEltYWdl
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRp
b25TaXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZFVS
TChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIHJlYWRXZWJB
cmNoaXZlKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURkQoU2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpIG92ZXJy
aWRlOwotICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBib29sIHJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOworICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCA1
NDllYjdkMmU0YzA3NTQ4ZTRhOGM5ZWEyNGVjMjBlNGYyMWJmYTI1Li4xMTdkYmE2OGVkYjBiZDRi
NmMzMGUwOTQ4NWQ5ZDBjMGYyOWMzODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBA
IHZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkRmlsZW5hbWUoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSkKICAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQuZ2V0
KCksIGZpbGVuYW1lKSk7CiB9CiAKLXZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpy
ZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRl
cjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBmaWxlcy5hcHBl
bmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIEJsb2I6OmNyZWF0ZShjb250ZXh0LmdldCgp
LCBidWZmZXItPmV4dHJhY3REYXRhKCksIHR5cGUpLCBmaWxlbmFtZSkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKaW5k
ZXggNWM1MjlkZDdjOGVjYzAwMDQ4ZmNiNGQxNTgxNDYzNWIyNGQ5MGJiNy4uOWQ4MTYwNWYxOTky
OThmMTljMGVkNjk5NWZlM2JkNzc4MzAzNGZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCkBAIC00MSw3ICs0MSw3IEBA
IHN0cnVjdCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmls
ZVJlYWRlciB7CiAgICAgfldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcigpOwogCiAgICAgdm9p
ZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCByZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsOwogCiAgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IGNvbnRleHQ7CiAgICAg
VmVjdG9yPFJlZjxGaWxlPj4gZmlsZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbQppbmRleCBkMGM5MzMxMDBjNjU1ZjFmYTg1MjUyNzg4MTg3MDQ5OWMyZjYx
ZmUzLi5hODViN2FhNzUyNmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5OTE0YWFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBA
QCB2b2lkIEVkaXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9u
dEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsCiAgICAgICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2Jy
aWRnZSBpZCljdEZvbnQ7CiB9CiAKLXN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0
dHJpYnV0ZWRTdHJpbmcpCitzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRh
Rm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcp
CiB7CiAgICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tl
eWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyBy
ZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKKyAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9i
amVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVs
bHB0cl0pOwogfQogCiBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAt
ODcsNyArODcsNyBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAj
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9h
cmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJp
bmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91
dERhdGEpCit2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1l
bnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQogewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0g
bWFrZVJhbmdlU2VsZWN0aW5nTm9kZShlbGVtZW50KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoZWxlbWVudFJhbmdlLCBvdXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3
ICs5OSw3IEBAIHZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNo
bWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hp
dmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAg
ICAgIGlmIChhdXRvIGRhdGEgPSBhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewog
ICAgICAgICAgICAgICAgIG91dFR5cGVzLmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0g
ICAgICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xNTEsMTIgKzE1MSwxMiBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFz
dGVib2FyZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRX
cml0ZXJEYXRhLnNldFdlYkNvbnRlbnQoV1RGTW92ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZv
cm1hdCgpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2
ZUZvcm1hdCgpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
RnJvbVNlbGVjdGlvbihtX2RvY3VtZW50LmZyYW1lKCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigp
LmdldCgpKTsKIH0KIAogLy8gRklYTUU6IE1ha2VzIG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0
Rm9yRGF0YVRyYW5zZmVyIGFsd2F5cyBpbmNsdWRlcyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVj
dGlvbkZvclBhc3RlYm9hcmQgZG9lcyBub3QuCkBAIC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcg
RWRpdG9yOjp1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RG
Ojp1c2VyVmlzaWJsZVN0cmluZyh1cmwpOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5n
KQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmli
dXRlZFN0cmluZyAqc3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxl
bmd0aDsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgp
IGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50
QXR0cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0
b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0cjxT
aGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAq
c3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBp
ZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRy
aWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBS
VEZGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsg
fV0pOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4
IDNjNWU1NDMyNWI5ZmUyMzU2N2VlNDJkZTk5ZjliNWIxNWM0MmIxMDAuLjA3ODI0ODM2MmFhMDU0
ZGMzYWIwMDAwNDUxNzE4NDE5OGE1ODBmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTIzMjIsNyArMjMyMiw3IEBAIHN0YXRpYyBSZXRh
aW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRh
dGFTb3VyY2UsIE5TCiBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVy
Rm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJ
bWFnZSogY2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCkpIHsKLSAgICAgICAgaWYg
KFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVy
KCkpCisgICAgICAgIGlmIChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBj
YWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKICAgICAgICAgICAgIHJldHVybiBhZG9wdE5T
KFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJl
ZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJl
YWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVh
ZGVyQ29jb2EubW0KaW5kZXggYWRhNjZkMmFjMjk2MzA1ZDYwYzYzMTczNjczMDk4MTY3OWY5ZjBm
YS4uNzZiMWEwMDlkZTQzMGZhM2I1NGQ5YTE1ZTY3OGNkODNmMzE0NWZlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0K
QEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgYm9vbCBzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2ht
ZW50RGF0YShjb25zdCBGcmFtZSYgZnJhbWUpCiAKICNlbmRpZgogCi1zdGF0aWMgUmVmPERvY3Vt
ZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFt
ZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQorc3Rh
dGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVu
dChGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkb2N1bWVudCwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBQcmVzZW50YXRpb25T
aXplIHByZWZlcnJlZFNpemUpCiB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAg
ICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFt
ZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMg
dm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1
bWVudEZyYWdtZW50JiBmcgogICAgIHN0cnVjdCBBdHRhY2htZW50SW5zZXJ0aW9uSW5mbyB7CiAg
ICAgICAgIFN0cmluZyBmaWxlTmFtZTsKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAg
ICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gZGF0YTsKICAgICAgICAgUmVmPEVsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudDsKICAg
ICB9OwogCkBAIC00MjgsNyArNDI4LDcgQEAgc3RydWN0IE1hcmt1cEFuZEFyY2hpdmUgewogICAg
IFJlZjxBcmNoaXZlPiBhcmNoaXZlOwogfTsKIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3Vw
QW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBl
QXNIVE1MKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1h
cmt1cEFuZEFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6
OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKIHsK
ICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoVVJMKCksIGJ1ZmZl
cik7CiAgICAgaWYgKCFhcmNoaXZlKQpAQCAtNDk3LDcgKzQ5Nyw3IEBAIHN0YXRpYyBTdHJpbmcg
c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5h
dGlvbkRvY3VtCiAgICAgcmV0dXJuIHNhbml0aXplZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVu
dChXVEZNb3ZlKGZyYWdtZW50KSwgKnN0YWdpbmdEb2N1bWVudCwgbXNvTGlzdFF1aXJrcywgbWFy
a3VwQW5kQXJjaGl2ZS5tYXJrdXApOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRX
ZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpy
ZWFkV2ViQXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYg
KGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9j
dW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTMyLDcgKzUzMiw3IEBAIGJvb2wg
V2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFdl
YkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFk
ZXI6OnJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYxMiw3
ICs2MTIsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRIVE1MKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogICAgIHJldHVybiAhbWFya3VwLmlzRW1wdHkoKTsKIH0KIAotYm9vbCBX
ZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgfHwg
IWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYyNiw3ICs2MjYs
NyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJl
YWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVy
OjpyZWFkUlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFm
cmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzksNyArNjM5LDcg
QEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
UlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRG
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUuc2V0dGlu
Z3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC02NTMsNyArNjUzLDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJr
dXBSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRN
YXJrdXBSZWFkZXI6OnJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjc2
LDcgKzY3Niw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFBsYWluVGV4dChjb25zdCBT
dHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5
cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKK2Jvb2wgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNl
bnRhdGlvblNpemUpCiB7CiAgICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50KCkpOwogICAgIGF1dG8m
IGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CkBAIC03NDYsNyArNzQ2LDcgQEAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgcmV0dXJuIGF0dGFjaG1lbnQ7CiB9CiAK
LXN0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0
cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQorc3RhdGljIFJlZjxI
VE1MRWxlbWVudD4gYXR0YWNobWVudEZvckRhdGEoRnJhbWUmIGZyYW1lLCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQogewogICAgIFJlZiBkb2N1
bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwogICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRh
Y2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQp
OwpAQCAtODMzLDcgKzgzMyw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNp
emUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVh
ZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVz
ZW50YXRpb25TaXplKQogewogICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250
ZW50UmVhZGVyR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRS
ZWFkZXJHdGsuY3BwCmluZGV4IDYwNDg2ZTcxYWQ1OWZlY2M3MTVmZjBhMDliMWMzNTU4YjdiMzQy
YzIuLmQzZTk4MTliZDUzMWY4NDg2YTMxN2FiOWY5ZWQ4M2E5ODg1YmUyYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCkBAIC03
MSw3ICs3MSw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFBsYWluVGV4dChjb25zdCBT
dHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5
cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKK2Jvb2wgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNl
bnRhdGlvblNpemUpCiB7CiAgICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50KCkpOwogICAgIGF1dG8m
IGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW0KaW5kZXggNWY4YmMzNDc3YzFjYTIxYjBjNzIyNzIyN2FhZjJkYTRiMTkyYmQx
YS4uMmQxOWI5YzdjMjJiM2ViYzI2N2M2NzYxMDZjODkyZjA5Yjc3NzUzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtMTY2LDE1ICsxNjYsMTUgQEAgdm9pZCBF
ZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkKICAgICBjbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChT
dHJpbmcoKSk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6Omlt
YWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKK1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VF
bGVtZW50KQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShp
bWFnZUVsZW1lbnQpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdE
YXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKIH0KIAotUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEVk
aXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkKIHsKICAgICAvLyBGSVhNRTogVGhlIGludGVyZmFjZSB0byB0aGlzIGZ1bmN0aW9uIGlz
IGF3a3dhcmQuIFdlJ2QgcHJvYmFibHkgYmUgYmV0dGVyIG9mZiB3aXRoIHRocmVlIHNlcGFyYXRl
IGZ1bmN0aW9ucy4gQXMgb2YgdGhpcyB3cml0aW5nLCB0aGlzIGlzIG9ubHkgdXNlZCBpbiBXZWJL
aXQyIHRvIGltcGxlbWVudCB0aGUgbWV0aG9kIC1bV0tWaWV3IHdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkOnR5cGVzOl0sIHdoaWNoIGlzIG9ubHkgdXNlZCB0byBzdXBwb3J0IE9TIFggc2Vydmlj
ZXMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKaW5kZXggNDVkOTMzZTEzY2E0ZDIyNTFjNWRlZDg0OGFh
OWU5ODcyYzc2NzQ4OS4uYmNhNjY5NmViZTZmMGVkZGRkZWU3OWI3M2MzZWUxNDQ5NmQ4MmZiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgQmxvYkxvYWRlcjsK
IGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFtOwogY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBFeGNlcHRpb25PcjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKaW5kZXggNTU5
ZWJjYzQ4YzVmMDk2YWMxOWJhZTdkOWY3MThiNzFmMmEzNTMyMi4uNDJmNDE4MGRmYTg0MjdlMGU2
MGY4MWViNzliMTkxODdjYWZkYmExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdv
cmtTZW5kUXVldWUuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgTmV0d29ya1NlbmRRdWV1ZTo6
cHJvY2Vzc01lc3NhZ2VzKCkKICAgICAgICAgYm9vbCBzaG91bGRTdG9wUHJvY2Vzc2luZyA9IGZh
bHNlOwogICAgICAgICBzd2l0Y2hPbihtX3F1ZXVlLmZpcnN0KCksIFt0aGlzXShjb25zdCBDU3Ry
aW5nJiB1dGY4KSB7CiAgICAgICAgICAgICBtX3dyaXRlU3RyaW5nKHV0ZjgpOwotICAgICAgICB9
LCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKKyAgICAgICAgfSwgW3RoaXNdKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgZGF0YSkgewogICAgICAgICAgICAgZGF0YS0+Zm9y
RWFjaFNlZ21lbnQobV93cml0ZVJhd0RhdGEpOwogICAgICAgICB9LCBbdGhpcywgJnNob3VsZFN0
b3BQcm9jZXNzaW5nXShVbmlxdWVSZWY8QmxvYkxvYWRlcj4mIGxvYWRlcikgewogICAgICAgICAg
ICAgYXV0byBlcnJvckNvZGUgPSBsb2FkZXItPmVycm9yQ29kZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaAppbmRleCA1NTFmNzBmOTE2N2IyYmZjYjI0NGJiMmIz
NzAwYmZiYWFmNTQ3OTZjLi5kMjNjZmViYjQ1MDhiYzMwMDkxNWJiOTk2ZDNmMTUwNjJjZTM1MDll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaApAQCAtNDMsNyAr
NDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CiBjbGFzcyBCbG9iTG9h
ZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTmV0d29ya1NlbmRRdWV1ZSA6IHB1YmxpYyBDb250ZXh0
RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzTWVzc2FnZXMoKTsKIAotICAgIHVzaW5nIE1lc3Nh
Z2UgPSBzdGQ6OnZhcmlhbnQ8Q1N0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4sIFVuaXF1ZVJlZjxC
bG9iTG9hZGVyPj47CisgICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxDU3RyaW5nLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIFVuaXF1ZVJlZjxCbG9iTG9hZGVyPj47CiAgICAg
RGVxdWU8TWVzc2FnZT4gbV9xdWV1ZTsKIAogICAgIFdyaXRlU3RyaW5nIG1fd3JpdGVTdHJpbmc7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCmluZGV4IDEw
MTZkY2YzYzE5OWU1NGNhODE0YzI2NDVhOWE4NTk4YTVjMWQzNWUuLjc1MjMwMTdiYTcyOTQwNTYz
Yjc1ZjQ2NmE2OGVkMWNjYjNkZWU4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGly
ZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yNzYsOSArMjc2LDkgQEAgdm9pZCBGVFBEaXJlY3RvcnlE
b2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNvbnN0IFN0cmluZyYgaW5wdXRM
aW5lKQogICAgIGFwcGVuZEVudHJ5KGZpbGVuYW1lLCBwcm9jZXNzRmlsZXNpemVTdHJpbmcocmVz
dWx0LmZpbGVTaXplLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSksIHByb2Nlc3NG
aWxlRGF0ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRUaW1lKSwgcmVzdWx0LnR5cGUgPT0gRlRQRGly
ZWN0b3J5RW50cnkpOwogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGlu
Z3MpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9j
dW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5n
cy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5ncy5mdHBEaXJlY3RvcnlUZW1w
bGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgTE9HKEZUUCwgIkxvYWRlZCBG
VFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4iLCBidWZmZXItPnNpemUoKSk7CiAg
ICAgcmV0dXJuIGJ1ZmZlcjsKQEAgLTI4Niw3ICsyODYsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25z
dCBTZQogICAgIAogYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50
VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiB0ZW1wbGF0
ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNl
dHRpbmdzKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1wbGF0ZURv
Y3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNldHRp
bmdzKCkpLmxlYWtSZWYoKTsKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBzdG9yaW5nIHRoZSBk
YXRhLCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBpZiB3ZSBjb3VsZCBwYXJzZSB0aGUgdGVt
cGxhdGUgZGF0YSBpbnRvIHRoZQogICAgIC8vIHRlbXBsYXRlIERvY3VtZW50IG9uY2UsIHN0b3Jl
IHRoYXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0IHdoZW5ldmVyIHdlIGdldCBhbiBGVFAgZGly
ZWN0b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2ht
ZW50RWxlbWVudC5jcHAKaW5kZXggNTZhMDZmY2FmMjczZDI1ZGM0Yzc1ZGNlNTY5YWFjOGYxYWE1
OTUyNy4uZDJiODc0MWEwNDQzNDJjN2ZmZDllOGE1MzNjYzhhMTIwZTI5YmFkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMjI3LDcgKzIy
Nyw3IEBAIHN0YXRpYyBib29sIG1pbWVUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdlQXR0YWNo
bWVudChjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUobWltZVR5cGUpIHx8IE1JTUVUeXBlUmVnaXN0cnk6
OmlzUERGTUlNRVR5cGUobWltZVR5cGUpOwogfQogCi12b2lkIEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50
Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBhdXRvKiBob3N0
RWxlbWVudCA9IHNoYWRvd0hvc3QoKTsKICAgICBpZiAoIWlzPEhUTUxJbWFnZUVsZW1lbnQ+KGhv
c3RFbGVtZW50KSB8fCAhYnVmZmVyLT5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuaAppbmRleCA1NzNlYzJlYWUxY2RjMDYwOWYyNjFjMzg0MDBiYjAy
YzQ4MGY3YmRkLi42NjFkZWM5Mzc2ZDhhOWQ2ZDQ3MTdmZDBiNGNlN2Y4MmZmMDNmNzU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKQEAgLTM2LDcgKzM2
LDcgQEAgY2xhc3MgRmlsZTsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJB
dHRhY2htZW50OwogY2xhc3MgU2hhcmVhYmxlQml0bWFwOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVt
ZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKEhUTUxBdHRhY2htZW50RWxlbWVudCk7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVu
dCYpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVBdHRyaWJ1dGVzKHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgbmV3RmlsZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmV3RmlsZW5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwpOwogCiAg
ICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0
aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKaW5kZXggNTE3MWI5Y2RjNzg5MzE3MWUyMWU1ZjRiZjU1MDE3ZWY5NDRh
Yzc5NS4uMWE1NmJjMDM1OWNjZTFmNTBkY2RkYTA2NTIyMmEwMTA5NWE2OTA1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yOTM4LDcgKzI5MzgsNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZO
ZWNlc3NhcnkoKQogICAgIGF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKTsKIH0K
IAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0
aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjZG1DbGllbnRVbnJlcXVl
c3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBtZWRpYVBs
YXllckluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhVHlwZSwgaW5pdERhdGEt
PnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaAppbmRleCA2OTU2Njk0OTYzMTBlZjkxMDhiOTU2ZmRhNDgyMTQzMDE0OTcwZWNiLi42
YzNiNjkzYjdiMTBlZGEzMGU1MWQ0YzY2MzFiZTNmYjUwY2JmODBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNzIwLDcgKzcyMCw3IEBAIHByaXZhdGU6CiAKICAg
ICAvLyBDRE1DbGllbnQKICAgICB2b2lkIGNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNr
SWZOZWNlc3NhcnkoKSBmaW5hbDsKLSAgICB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlh
bGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikg
ZmluYWw7CisgICAgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJl
Y2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRl
eCA0NDJkMDk0NmJlMjUwZGNjZjU5MjdiYWE5Mjc5M2E3MGVlOTE5MzNlLi4wMGQ4ZjIzOWQ3MTI3
YzYxY2FlMWI1OGQ5YzRhMzAzYTliM2M5MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1
bWVudC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OnVwZGF0ZUR1
cmluZ1BhcnNpbmcoKQogICAgIGlmICghbV9pbWFnZUVsZW1lbnQpCiAgICAgICAgIGNyZWF0ZURv
Y3VtZW50U3RydWN0dXJlKCk7CiAKLSAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSkKKyAgICBpZiAoUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCkpCiAg
ICAgICAgIG1faW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpLT51cGRhdGVCdWZmZXIoKmJ1ZmZl
cik7CiAKICAgICBpbWFnZVVwZGF0ZWQoKTsKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEltYWdl
RG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygpCiB7CiAgICAgaWYgKCFwYXJzZXIoKS0+aXNTdG9w
cGVkKCkgJiYgbV9pbWFnZUVsZW1lbnQpIHsKICAgICAgICAgQ2FjaGVkSW1hZ2UmIGNhY2hlZElt
YWdlID0gKm1faW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpOwotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICAgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBsb2FkZXIoKS0+bWFpblJlc291
cmNlRGF0YSgpOwogCiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBtdWx0aXBhcnQgaW1hZ2UsIG1h
a2UgYSBjb3B5IG9mIHRoZSBjdXJyZW50IHBhcnQsIHNpbmNlIHRoZSByZXNvdXJjZSBkYXRhCiAg
ICAgICAgIC8vIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIG5leHQgcGFydC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAK
aW5kZXggYTdjYTcxNjJkNzkxZWQ3ZmJhOGNjOTFjMjFhMmNmM2FmNmU2OWE3ZS4uMTg3OTNmZjA2
NjMzOGZiNjBhMzRkZWM5MDliYzJkZGQyOGJlYWZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTg1MCw3ICs4
NTAsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bQogICAgICAgICBuZXR3b3JrQWdlbnQtPmlu
dGVyY2VwdFJlcXVlc3QobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4m
JiBoYW5kbGVyKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3Bv
bnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBpZiAoYXV0
byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50
KCkpCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVzcG9uc2UocmVzcG9uc2UsIGlk
ZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDhlNjVjNGViMTAyMzM1MjFm
NDhjN2Y0YjEyMGFkMmM4OTA5YTA3YmEuLmQyOTU3ODEwZDgzODJjOTM1MWQ1YTkzZjE0NGFlZDE0
OTNiY2M2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
IGNsYXNzIFNoYWRvd1Jvb3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogY2xhc3MgVGltZXJCYXNlOwogY2xhc3MgV2ViS2l0TmFtZWRGbG93Owog
Y2xhc3MgV2ViU29ja2V0Q2hhbm5lbDsKQEAgLTIzNiw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSYsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lk
IGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShj
b25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9u
c2UoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lk
IGFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPik7CiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNv
bGVNZXNzYWdlPik7CkBAIC00NDEsNyArNDQxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9u
c2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAg
ICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IFJlc291cmNlTG9hZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4m
Jik7Ci0gICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0
aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgc3Rk
Ojp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKIApAQCAtMTI4OSw3ICsx
Mjg5LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRS
ZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIEYKICAgICAgICAgaW50ZXJjZXB0UmVxdWVz
dEltcGwoKmFnZW50cywgbG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFt
ZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCitpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZy
YW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJj
ZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAgaWYgKGF1dG8qIGFnZW50cyA9IGlu
c3RydW1lbnRpbmdBZ2VudHMoZnJhbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcAppbmRleCA2MWU0
YmMzYmEwMTllZTI1ZTVjOGJjMjIxZGZmNjA3N2VkZGI4NjNkLi5mMDY0MDNhNjIzNGI0MmI2YWQy
YTgwYjAxOTRhNTk2ZDg5ZjZlNmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcApAQCAtNDUsNyAr
NDUsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVx
dWVzdEludGVybmFsKFJlc291cmNlTG9hZGVyJiBsbwogICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW50ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2VJbnRl
cm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhh
bmRsZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVz
cG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6aW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3Zl
KGhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaAppbmRleCBmNzYxMTRjZTk4ZjQyYTdmZjkw
NmE0OGQwNDIwYjk2MzA1ZDM2OTE0Li4wN2I0MjFiNTljMTU1NWUxYTI5MWUxOGViYjI2MjIxMjJm
MTY1OGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCkBAIC0zNiwyMCArMzYsMjAgQEAgY2xhc3MgRnJh
bWU7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJl
cXVlc3QoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMg
Ym9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9h
ZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJik7Ci0gICAgc3Rh
dGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAg
IHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+KT4mJik7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVx
dWVzdEludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAg
c3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1
ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZUludGVybmFs
KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNw
b25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiB9OwogCiBp
bmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2Vw
dFJlcXVlc3QoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCkBAIC03Niw3ICs3Niw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYgbG9hCiAgICAgaW50ZXJj
ZXB0UmVxdWVzdEludGVybmFsKGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLWlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVy
KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRS
ZXNwb25zZShjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGZyYW1lLCByZXNwb25zZSkpOwogICAg
IGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoKmZyYW1lLCByZXNwb25zZSwgaWRlbnRpZmllciwg
V1RGTW92ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA4YTYxNTA0MzkxMDk5ZmZlMmU0YTA2ZTc0ODk2ZWY4
ODhlZDA0NjAzLi5mMzJmNjYwYjkxNzNiYWU4ZDVjZDlhMTMwZWFlNThiOTdkNWVjZTg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAK
QEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRDYWNoZWRS
ZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzbwogICAgIHJlc291cmNl
RGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2UoY2FjaGVkUmVzb3VyY2UpOwogfQogCi12b2lkIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hh
cmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKIHsKICAg
ICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChy
ZXF1ZXN0SWQpOwogICAgIGlmICghcmVzb3VyY2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBkNzRlZTEwOTMzZDdlZTRlNWY3
ZWY5YjdjNDA5MDlmZTk3ZDA3YzlkLi5lZTM5NDU3Zjc2NzJlYWNhYWM5MGE1YjZiYzg4MTEwOGNi
ZGE4YTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYWNo
ZWRSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0UmVzb3VyY2VE
ZWNvZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZXNE
YXRhIHsKQEAgLTkwLDggKzkwLDggQEAgcHVibGljOgogICAgICAgICBSZWZQdHI8VGV4dFJlc291
cmNlRGVjb2Rlcj4gZGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rlci5jb3B5UmVmKCk7
IH0KICAgICAgICAgdm9pZCBzZXREZWNvZGVyKFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiYm
IGRlY29kZXIpIHsgbV9kZWNvZGVyID0gV1RGTW92ZShkZWNvZGVyKTsgfQogCi0gICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmNvcHlS
ZWYoKTsgfQotICAgICAgICB2b2lkIHNldEJ1ZmZlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikgeyBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsgfQorICAgICAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuY29w
eVJlZigpOyB9CisgICAgICAgIHZvaWQgc2V0QnVmZmVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsgfQogCiAgICAg
ICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiYgY2VydGlmaWNhdGVJbmZv
KCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0ZUluZm87IH0KICAgICAgICAgdm9pZCBzZXRD
ZXJ0aWZpY2F0ZUluZm8oY29uc3Qgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0
aWZpY2F0ZUluZm8pIHsgbV9jZXJ0aWZpY2F0ZUluZm8gPSBjZXJ0aWZpY2F0ZUluZm87IH0KQEAg
LTEyMiw3ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAg
ICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwogICAgICAgICBVbmlx
dWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9kYXRhQnVmZmVyOwotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4g
bV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJlc291
cmNlIHsgbnVsbHB0ciB9OwogICAgICAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlw
ZSBtX3R5cGUgeyBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UgfTsKQEAgLTE0Niw3
ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291
cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgpOwogICAgIHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBDYWNoZWRSZXNvdXJjZSopOwotICAgIHZvaWQgYWRkUmVzb3VyY2VT
aGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSk7CisgICAgdm9pZCBhZGRSZXNvdXJj
ZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSk7CiAgICAgUmVz
b3VyY2VEYXRhIGNvbnN0KiBkYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICBSZXNv
dXJjZURhdGEgY29uc3QqIGRhdGFGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIFZlY3Rv
cjxTdHJpbmc+IHJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKaW5kZXggZDE1Y2I0Yjg1MTc4NjdjMzQ4YzE3OTc0ZjI3MTU3NDY1NTlkYTQ1MC4u
MTg5ZjI2YjA5OGI3MzYxZGNmOGU5ZDY0ZTM1OWU3NWZkOWMwOTcyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmNwcApAQCAtMTE0MCw3ICsxMTQwLDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Omlu
dGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgRnVuY3Rpb248dm8KICAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdEludGVyY2VwdGVkKHJlcXVlc3RJZCwgYnVpbGRP
YmplY3RGb3JSZXNvdXJjZVJlcXVlc3QobG9hZGVyLnJlcXVlc3QoKSkpOwogfQogCi12b2lkIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPik+JiYgaGFuZGxlcikKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxl
cikKIHsKICAgICBBU1NFUlQobV9lbmFibGVkKTsKICAgICBBU1NFUlQobV9pbnRlcmNlcHRpb25F
bmFibGVkKTsKQEAgLTEyNDMsNyArMTI0Myw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZv
aWQ+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3BvbnNlKGNvbnN0CiAg
ICAgICAgIG92ZXJyaWRlUmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1l
OjpDb250ZW50VHlwZSwgb3ZlcnJpZGVSZXNwb25zZS5taW1lVHlwZSgpKTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IG92ZXJyaWRlRGF0YTsKICAgICBpZiAoYmFzZTY0RW5jb2RlZCkgewog
ICAgICAgICBhdXRvIGJ1ZmZlciA9IGJhc2U2NERlY29kZShjb250ZW50KTsKICAgICAgICAgaWYg
KCFidWZmZXIpCkBAIC0xMjcxLDcgKzEyNzEsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2
b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9ucwog
ICAgIGlmIChsb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZCgiVW5hYmxlIHRvIGZ1bGZpbGwgcmVxdWVzdCwgaXQgaGFzIGFscmVhZHkg
YmVlbiBwcm9jZXNzZWQiX3MpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICBpZiAoYmFzZTY0RW5j
b2RlZCkgewogICAgICAgICBhdXRvIGJ1ZmZlciA9IGJhc2U2NERlY29kZShjb250ZW50KTsKICAg
ICAgICAgaWYgKCFidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCA4ZjZmYmNjMjkzYWViZjhiOWQ1
Yzk0NWQyODI5YTE1MjdiNzRiYzdmLi42YmNkODdkZGNkOGIwNDQxMzA4ZDFkMDFlY2E2YjBlNmRh
MTQxM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCB3aWxsSW50ZXJjZXB0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIGJvb2wgc2hv
dWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBib29sIHNo
b3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lk
IGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgdm9pZCBpbnRlcmNlcHRSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKICAgICB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3Vy
Y2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKIAog
ICAgIHZvaWQgc2VhcmNoT3RoZXJSZXF1ZXN0cyhjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHBy
ZXNzaW9uJiwgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2Vh
cmNoUmVzdWx0Pj4mKTsKQEAgLTE4NSw3ICsxODUsNyBAQCBwcml2YXRlOgogICAgICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpOwogICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6Ci0gICAgICAgIFBlbmRpbmdJbnRlcmNl
cHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBvcmlnaW5hbFJlc3BvbnNlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIFBlbmRpbmdJbnRlcmNlcHRS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBvcmlnaW5hbFJlc3BvbnNlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICAgICAgOiBtX29y
aWdpbmFsUmVzcG9uc2Uob3JpZ2luYWxSZXNwb25zZSkKICAgICAgICAgICAgICwgbV9jb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgeyB9CkBAIC0y
MDIsNyArMjAyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJlc3BvbmQobV9vcmlnaW5hbFJl
c3BvbnNlLCBudWxscHRyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcmVzcG9uZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSkK
KyAgICAgICAgdm9pZCByZXNwb25kKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSkKICAgICAgICAgewogICAgICAgICAg
ICAgQVNTRVJUKCFtX3Jlc3BvbmRlZCk7CiAgICAgICAgICAgICBpZiAobV9yZXNwb25kZWQpCkBA
IC0yMTUsNyArMjE1LDcgQEAgcHJpdmF0ZToKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlc291
cmNlUmVzcG9uc2UgbV9vcmlnaW5hbFJlc3BvbnNlOwotICAgICAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+IG1f
Y29tcGxldGlvbkhhbmRsZXI7CisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+IG1fY29t
cGxldGlvbkhhbmRsZXI7CiAgICAgICAgIGJvb2wgbV9yZXNwb25kZWQgeyBmYWxzZSB9OwogICAg
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcAppbmRleCA1Y2Q5OGYzMzIwODIyYjgxMzJkMzdlMDAzZWU0MGE4N2Uw
NmYzMzU0Li4xYjY0NmFhMjE3M2FiNTRhM2YxYWJkY2I1MDIwNGFkZTk4YzA3M2E2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwCkBAIC0xMDAsMTMgKzEwMCwxMyBAQCBzdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29u
c3QgdWludDhfdCogYnVmZmVyLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleAogCiBi
b29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudChGcmFtZSogZnJhbWUs
IGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1h
aW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEo
KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdp
dGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yUGFnZUFnZW50Ojpz
aGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiBy
ZXN1bHQpCitib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKICAg
ICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGlu
Z05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CkBAIC0xNTYsNyArMTU2LDcgQEAg
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudChQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBGcmEKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAg
aWYgKGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsLCBsb2FkZXItPnVybCgpKSkg
ewogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggYjUxYWRkYjFi
ZDhmMmNjZTY5NTYwNzk5Y2QxZDk1MmQyZGU0MjgzOC4uM2Q1ZTU2NmRiZTBjNWVjMTFkOWU4ZGY2
N2ZjZjBhNzA5ODhhMmY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIEluc3Bl
Y3RvckNsaWVudDsKIGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBQYWdlOwogY2xhc3Mg
UmVuZGVyT2JqZWN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50IGZpbmFsIDogcHVibGljIEluc3Bl
Y3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUGFnZUFnZW50KTsKQEAg
LTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgICAgICBPdGhlclJlc291cmNlLAogICAgIH07CiAK
LSAgICBzdGF0aWMgYm9vbCBzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2Rl
LCBTdHJpbmcqIHJlc3VsdCk7CisgICAgc3RhdGljIGJvb2wgc2hhcmVkQnVmZmVyQ29udGVudChS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rp
bmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKICAgICBzdGF0
aWMgVmVjdG9yPENhY2hlZFJlc291cmNlKj4gY2FjaGVkUmVzb3VyY2VzRm9yRnJhbWUoRnJhbWUq
KTsKICAgICBzdGF0aWMgdm9pZCByZXNvdXJjZUNvbnRlbnQoSW5zcGVjdG9yOjpQcm90b2NvbDo6
RXJyb3JTdHJpbmcmLCBGcmFtZSosIGNvbnN0IFVSTCYsIFN0cmluZyogcmVzdWx0LCBib29sKiBi
YXNlNjRFbmNvZGVkKTsKICAgICBzdGF0aWMgU3RyaW5nIHNvdXJjZU1hcFVSTEZvclJlc291cmNl
KENhY2hlZFJlc291cmNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAK
aW5kZXggOTc0ZjIyYTJkYTdhMDJjNjQ4OWMxYjUwYTVhMjIwZmU0NGIxOTYzMC4uNmFlNTI2NTk3
Y2QyODYzMWJlNzk1MGZjMzM1MzZmOGYzNDdkN2FmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b250ZW50RmlsdGVyLmNwcApAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6
aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
IHsKICAgICBBU1NFUlQod2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpKTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSB7IG1fYmxvY2tpbmdD
b250ZW50RmlsdGVyLT5yZXBsYWNlbWVudERhdGEoKSB9OworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEgeyBtX2Jsb2NraW5nQ29udGVudEZpbHRlci0+
cmVwbGFjZW1lbnREYXRhKCkgfTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgVVJM
KCksICJ0ZXh0L2h0bWwiX3MsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4ocmVwbGFjZW1lbnREYXRh
LT5zaXplKCkpLCAiVVRGLTgiX3MgfTsKICAgICBTdWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0
YSB7IFdURk1vdmUocmVwbGFjZW1lbnREYXRhKSwgZXJyb3IuZmFpbGluZ1VSTCgpLCByZXNwb25z
ZSwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVuIH07CiAg
ICAgU2V0Rm9yU2NvcGU8Ym9vbD4gbG9hZGluZ0Jsb2NrZWRQYWdlIHsgbV9pc0xvYWRpbmdCbG9j
a2VkUGFnZSwgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCBkMDk2MWFmYzdiN2U3M2U2MTdlNzgwNmE2
N2M2ZmZkMDlmMTVjYTkzLi45NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdhMWE3NDQ1YjFmNzBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRD
aGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGln
aHRDaGVja2VyLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGln
aHRDaGVja2VyOjpkb1ByZWZsaWdodChEb2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwK
ICAgICBSZXNvdXJjZVJlcXVlc3QgcHJlZmxpZ2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRy
b2xQcmVmbGlnaHRSZXF1ZXN0KHJlcXVlc3QsIGxvYWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2Fk
ZXIucmVmZXJyZXIoKSk7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRh
OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIg
PSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KHByZWZsaWdodFJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFz
a0NsaWVudEZvckNyZWRlbnRpYWxzLCBGZXRjaE9wdGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNw
b25zZSwgZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmlu
ZGV4IDZmZWI4ZjVhYmU1YmE0OTI4MDZlYWU2NTUwNTI5MWNkNmZhNzc4ODEuLjNiOTBlZjRjNTgy
N2U2YzBiNDliMzQ2NTZiM2NkNzFhOGVkYTk2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIERvY3VtZW50TG9hZGVyOjp+RG9j
dW1lbnRMb2FkZXIoKQogI2VuZGlmCiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IERvY3VtZW50
TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAg
aWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbV9zdWJzdGl0
dXRlRGF0YS5jb250ZW50KCktPmNvcHkoKTsKQEAgLTE2NTIsNyArMTY1Miw3IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OmNsZWFyQXJjaGl2ZVJlc291cmNlcygpCiAgICAgbV9zdWJzdGl0dXRlUmVz
b3VyY2VEZWxpdmVyeVRpbWVyLnN0b3AoKTsKIH0KIAotQ29udGlndW91c1NoYXJlZEJ1ZmZlciog
RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKK1NoYXJlZEJ1ZmZlciog
RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9wYXJzZWRBcmNoaXZlRGF0YS5nZXQoKTsKIH0KQEAgLTE2NzEsNyArMTY3MSw3IEBAIEFyY2hp
dmVSZXNvdXJjZSogRG9jdW1lbnRMb2FkZXI6OmFyY2hpdmVSZXNvdXJjZUZvclVSTChjb25zdCBV
UkwmIHVybCkgY29uc3QKIAogUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9jdW1lbnRMb2FkZXI6
Om1haW5SZXNvdXJjZSgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9
IG1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
ZGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIGRhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8mIHJlc3BvbnNlID0gdGhpcy0+cmVz
cG9uc2UoKTsKQEAgLTIyNTUsNyArMjI1NSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJl
RmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQoKQogCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0
dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEo
KTsKICAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCByZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKQEAgLTIyOTIsNyArMjI5Miw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQogICAgIG1fZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLmdldExvYWREZWNpc2lvbkZvckljb25zKGljb25EZWNpc2lvbnMpOwogfQogCi12
b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNp
b24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJl
ZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGlk
R2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBpY29uID0gbV9pY29uc1BlbmRpbmdMb2Fk
RGVjaXNpb24udGFrZShsb2FkSWRlbnRpZmllcik7CiAKQEAgLTIzMTMsNyArMjMxMyw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lv
biwgdWludDY0X3QgbG9hZElkZW50CiAgICAgcmF3SWNvbkxvYWRlci0+c3RhcnRMb2FkaW5nKCk7
CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRl
ciYgbG9hZGVyLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmZp
bmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYgbG9hZGVyLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBidWZmZXIpCiB7CiAgICAgLy8gSWYgdGhlIERvY3VtZW50TG9hZGVyIGhhcyBkZXRhY2hl
ZCBmcm9tIGl0cyBmcmFtZSwgYWxsIGljb24gbG9hZHMgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVu
IGNhbmNlbGxlZC4KICAgICBBU1NFUlQobV9mcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCmluZGV4IDdjZjMwNWQ3MDVkNDg0NzJmZmM4NzY2YmYxMWNiNjRmZjhkZDJk
YTguLjMzOTg3M2Q1ZDNmYjliYjMwMDQ5OGNkNmYzN2NiZjY1Yjc4YWY1YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw3ICs3NSw3IEBAIGNsYXNzIEFyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENh
Y2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZpbHRlcjsKLWNsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVy
RmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7CkBAIC04NCw3ICs4NCw3IEBA
IGNsYXNzIEljb25Mb2FkZXI7CiBjbGFzcyBQYWdlOwogY2xhc3MgUHJldmlld0NvbnZlcnRlcjsK
IGNsYXNzIFJlc291cmNlTG9hZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNXQ2xpZW50Q29ubmVjdGlvbjsKIGNsYXNzIFN1YnJl
c291cmNlTG9hZGVyOwogY2xhc3MgU3Vic3RpdHV0ZVJlc291cmNlOwpAQCAtMTcyLDcgKzE3Miw3
IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRl
cigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN1YnJlc291cmNlTG9hZGVyKiBtYWluUmVz
b3VyY2VMb2FkZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtYWluUmVzb3VyY2VEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICAK
ICAgICBEb2N1bWVudFdyaXRlciYgd3JpdGVyKCkgY29uc3QgeyByZXR1cm4gbV93cml0ZXI7IH0K
IApAQCAtMjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFk
ZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YWRkQXJjaGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYpOwogICAgIFJlZlB0cjxB
cmNoaXZlPiBwb3BBcmNoaXZlRm9yU3ViZnJhbWUoY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNv
bnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHBh
cnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVy
KiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
Y2hlZHVsZUFyY2hpdmVMb2FkKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik7CiAjZW5kaWYKQEAgLTM5Myw4ICszOTMsOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZv
aWQgc3RhcnRJY29uTG9hZGluZygpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkR2V0TG9h
ZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4mJik7Ci0gICAgdm9pZCBmaW5p
c2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBTaGFyZWRCdWZmZXIqKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWlu
dDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciopPiYmKTsKKyAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRl
ciYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIAogICAgIGNvbnN0IFZlY3RvcjxMaW5rSWNv
bj4mIGxpbmtJY29ucygpIGNvbnN0IHsgcmV0dXJuIG1fbGlua0ljb25zOyB9CiAKQEAgLTYwMyw3
ICs2MDMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcmNoaXZlUmVzb3VyY2VD
b2xsZWN0aW9uPiBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiAjaWYgRU5BQkxFKFdFQl9B
UkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgUmVmUHRyPEFyY2hpdmU+IG1fYXJjaGl2ZTsK
LSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOwogI2VuZGlmCiAK
ICAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXNvdXJjZXNDbGllbnRLbm93c0Fib3V0OwpAQCAtNjIy
LDcgKzYyMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JOYXZpZ2F0aW9uUG9s
aWN5IHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIExpbmtJY29uPiBtX2ljb25z
UGVuZGluZ0xvYWREZWNpc2lvbjsKLSAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxJY29uTG9h
ZGVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4+IG1faWNvbkxvYWRl
cnM7CisgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8SWNvbkxvYWRlcj4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPj4gbV9pY29uTG9hZGVyczsKICAg
ICBWZWN0b3I8TGlua0ljb24+IG1fbGlua0ljb25zOwogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmNwcAppbmRleCBjNzA5NjQxMGE3YWEwNTRlNTFkNzA0NDVkNjYzNTJmMjgxNDA2
OGE5Li45YTRkNGIyMTJmZGZkMjgxODQzNzZkNGI3MGM3ZGE0ZjNlYjdjODMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAt
NTk1LDcgKzU5NSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAgbG9hZFRpbWluZy5t
YXJrU3RhcnRUaW1lKCk7CiAKICAgICAvLyBGSVhNRTogVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMu
c25pZmZDb250ZW50IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5bmNocm9ub3VzIHJlcXVlc3RzLgot
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlOwogICAgIGF1dG8gaWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlm
aWVyPFJlc291cmNlTG9hZGVyPihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCA5ZTlmMjk0NjcyZjNk
NjIyNTAzYjFlNTViMTc5NmYwY2ExZWNmYTcwLi5jMDg3ODVhZjhmYzkyNGUzNTNmZmQ0ODNkZjdi
OTVkYTI0NDNhZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAt
Mjc3LDcgKzI3Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2Vs
ZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgZmluYWwgeyB9CiAg
ICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsIHsgfQotICAgIHZv
aWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JikgZmluYWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQogICAgIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNG
b3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIGZpbmFsIHsgfQogICAgIHZvaWQg
aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQp
IGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA2MzA5
OWI0OWZhZGY3Yjc1NDc2Yjc5YWE3YjAxNDZlMzA3NzQ2NDczLi41NjYxMDgzODA1NjY0ZTAxMTlm
MTFmZmMzMmVhN2UxOTI3ZmM2NTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKQEAgLTMxMDEsNyArMzEwMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVz
dChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWZlCiAgICAgfSk7
CiB9CiAKLVJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNl
U3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENyZWRl
bnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiBv
cHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFt
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwg
Y29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5h
bFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFTU0VSVChtX2Zy
YW1lLmRvY3VtZW50KCkpOwogICAgIFN0cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5Ojpn
ZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3ko
KSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcigpKTsKQEAgLTMxNDksNyArMzE0OSw3
IEBAIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlCiAgICAgICAgIGlmICghZG9jdW1lbnRMb2FkZXIo
KS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRTeW5jaHJvbm91c2x5KG5ld1JlcXVl
c3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSkpIHsKICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBidWZmZXI7CiAgICAgICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRl
Z3koKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgqdGhpcywgaWRlbnRpZmllciwgbmV3UmVx
dWVzdCwgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgb3B0aW9ucywgb3JpZ2luYWxSZXF1ZXN0SGVh
ZGVycywgZXJyb3IsIHJlc3BvbnNlLCBidWZmZXIpOwotICAgICAgICAgICAgZGF0YSA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAg
ZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgICAg
ICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZEZhbGxi
YWNrU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogICAg
ICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ1N1YnJlc291cmNlTG9h
ZGluZygmbV9mcmFtZSwgbmV3UmVxdWVzdCwgcmVzcG9uc2UsCiAgICAgICAgICAgICAgICAgKGlz
U2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVzdGluYXRpb24pID8gUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6OlllcyA6IFJlc291cmNlTG9h
ZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpObykpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBhNTJkN2Y5MWM2MjYyMWZkMzdjMTBiZjBhOWEwMWZh
ZmI2OGIwYzY1Li4wOGEwYWUxOWEzNzk4NDZmMTU3NTY0YzJkMGM4MzJiMjc0ODM2MDM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNTksNyArNTksNyBAQCBjbGFzcyBDYWNo
ZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBj
bGFzcyBDaHJvbWU7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBE
b2N1bWVudExvYWRlcjsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdF
Ql9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2Fk
QXJjaGl2ZShSZWY8QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBD
bGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVh
ZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpOworICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBs
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENsaWVudENy
ZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0IEhUVFBIZWFkZXJNYXAm
LCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiBkYXRhKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3km
LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3Bl
bmVyUG9saWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRy
aWJ1dGUgPSBudWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6
b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAg
IHZvaWQgY2hhbmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRy
LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNGZkNjM3
YTkwMTRhNWQ0MWEyMjZlZTQ1OTE3YjZiM2U5YTc5MGViYi4uZWU5ZjNkMGM5ODRkNDU1Y2JiOTFi
NDYwYzFiYzEyODk4ZDEyMzY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmgKQEAgLTk4LDcgKzk4LDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiBjbGFzcyBXaWRnZXQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xvYWRlclN0cmF0ZWd5LmgKaW5kZXggYWVmNjY4YmQ2M2VkNWZjZDQ1ZTYxZTlkMWYxMDdj
ZmI2YWVmMjY0Yi4uMjlkMmUzZjQ2MTQwYWFhNTExNjBlNmEyODU2MmYzNzBlMzcxZWIyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xh
c3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiAK
IHN0cnVjdCBGZXRjaE9wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAppbmRleCA2MzM3NTU5NjMyMDAxNDYzODI4OWUy
ODI2MDRjNTViMGFmNDQ1MzEzLi42MDQzYWM5YmUyNjdlYTRmYmM3MWUxMTE4YjkwNzkxNTVlMzkx
NTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlci5jcHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxlCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVu
Y29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5
bG9hZFR5cGUpCit2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVk
RGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQ
YXlsb2FkVHlwZSkKIHsKICAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3Rl
Y3RlZFRoaXMoKnRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlci5oCmluZGV4IDQ4YmIyMTUzYzkzZjJkYzc1NGUyMDczMjI1MmMw
NTA5Y2Y3MDRhNDEuLmI1MTc0ZWRjOTRiOTkyMzkwMjA1ZjBmYWQ0NTJlYTVhYzM4Nzg5MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9u
c2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNr
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5k
bGVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1
bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92
ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAK
QEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25z
dCB1aW50OF90KiwgaW50LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAKICAg
ICB2b2lkIG5vdGlmeURvbmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcAppbmRleCBjNjI3NzY4NThhNmRjNWFmZmQz
NmRjOWU3ODVjOGJkMjQ3MmJiNzRkLi5kOTRiNzAwMDc0MWNkOTEyYjkxNzNlMmIzNzQ2ZDRkYThi
MzY4YTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlw
dG9ncmFwaGljRGlnZXN0LmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIFJlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yQnl0ZXMoUmVzb3VyY2VDcnlwdG9ncmFw
aGljRGlnCiAgICAgcmV0dXJuIHsgYWxnb3JpdGhtLCBjcnlwdG9EaWdlc3QtPmNvbXB1dGVIYXNo
KCkgfTsKIH0KIAotUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdl
c3RGb3JTaGFyZWRCdWZmZXIoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0g
YWxnb3JpdGhtLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK1Jlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5
cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogYnVmZmVyKQogewogICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlw
dG9EaWdlc3Q6OmNyZWF0ZSh0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShhbGdvcml0aG0pKTsKICAg
ICBpZiAoYnVmZmVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0LmgKaW5kZXggYWVhM2RjNTdjODc4MzEzMDEzYTViMTZjOTM5Yjc3
NGVkNDg0MzI0Yy4uODNiODYxM2NmZGEyMzI5YWUzMGJiZjZhYmMxNGI5OWQ0NDIzN2IwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdl
c3QuaApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNo
ZWRSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIHN0cnVjdCBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgewogICAgIGVudW0g
Y2xhc3MgQWxnb3JpdGhtIHsKQEAgLTc1LDcgKzc1LDcgQEAgc3RkOjpvcHRpb25hbDxFbmNvZGVk
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUVuY29kZWRDcnlwdG9ncmFwaGljRGln
ZXMKIAogc3RkOjpvcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IGRlY29kZUVu
Y29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QoY29uc3QgRW5jb2RlZFJlc291cmNlQ3J5
cHRvZ3JhcGhpY0RpZ2VzdCYpOwogCi1SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRv
Z3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6
OkFsZ29yaXRobSwgY29uc3QgU2hhcmVkQnVmZmVyKik7CitSZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwog
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhS
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29uc3Qgdm9pZCogYnl0ZXMs
IHNpemVfdCBsZW5ndGgpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcAppbmRleCA1ZWIwNjUzNjBiMTBkZjgxYjU2YmU2OTQ3NTFkY2Q5MzFlN2RiMGY2Li5kZjEz
OTU4OGU4ZDUyNTJiM2VlYzYxOTNhZTYxYWEyNDc4NmIyMTljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjppbml0KFJlc291cmNlUmVxdWVzdCYmIGNsaWVudFJlcXVlc3QsIENvbXBsZXRpb25I
YW5kbGVyPHZvaQogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkZWxpdmVyUmVz
cG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRlbGl2ZXJSZXNwb25z
ZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBkaWRSZWNlaXZlUmVzcG9uc2UocmVz
cG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RG
TW92ZShidWZmZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3Rh
dGUoKSkKQEAgLTMzMCw3ICszMzAsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNo
VG9TdWJzdGl0dXRlUmVzb3VyY2UoKQogICAgICAgICBtX2hhbmRsZS0+Y2FuY2VsKCk7CiB9CiAK
LXZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgsIFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGlmICht
X29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05v
dEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoLCBTaGFyZQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKGRhdGEsIGxl
bmd0aCk7CiB9CiAKLWNvbnN0IFNoYXJlZEJ1ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291cmNl
RGF0YSgpIGNvbnN0Citjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRl
cjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9yZXNvdXJjZURhdGEtPmdl
dCgpLmdldCgpOwogfQpAQCAtNTUyLDE0ICs1NTIsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25n
IGwKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5j
b2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3Zv
aWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxs
cHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5
cGUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRh
dGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91
bGQgb25seSBnZXQgZGF0YStsZW5ndGggKk9SKiBhIFNoYXJlZEJ1ZmZlci4KKyAgICAvLyBUaGlz
IG1ldGhvZCBzaG91bGQgb25seSBnZXQgZGF0YStsZW5ndGggKk9SKiBhIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIuCiAgICAgQVNTRVJUKCFidWZmZXIgfHwgKCFkYXRhICYmICFsZW5ndGgpKTsKIAog
ICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlzIGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRk
aXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwpAQCAtNzM2LDcgKzczNiw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduCiAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoLCBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGRpZFJlY2VpdmVCdWZmZXIoV1RG
TW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IGNmODIxNzRiZThlZDg2N2Q0
NzgzZWNhYTEzNmI1NzgzOTJjMjgwYTcuLjU0YjFiODY2ZGY4OTZhODRiNGNhMjk3ZWU0NzZkNmQw
YjY2MWZkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC01Niw3
ICs1Niw3IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CiBjbGFzcyBMZWdhY3lQ
cmV2aWV3TG9hZGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1
aWxkZXI7CiAKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFJlc291cmNl
TG9hZGVyKTsKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGlu
aXQoUmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwog
Ci0gICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRlbGl2ZXJSZXNwb25zZUFuZERh
dGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0
TG9hZGluZygpCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBy
ZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Uo
KSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAKLSAgICBjb25zdCBTaGFyZWRCdWZmZXIq
IHJlc291cmNlRGF0YSgpIGNvbnN0OworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURhdGEoKTsKICAg
ICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpAQCAtMTEw
LDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWdu
ZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0Jl
U2VudCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25I
YW5kbGVyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCos
IHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwg
bG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCkBAIC0xNjksNyAr
MTY5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCB3YXNDYW5jZWxsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2NhbmNlbGxhdGlvblN0YXR1cyA+PSBDYW5jZWxsZWQ7IH0KIAotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBl
KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2ln
bmVkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIAogICAgIHZvaWQgc2V0UmVmZXJyZXJQ
b2xpY3koUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3kpIHsgbV9vcHRpb25zLnJlZmVycmVy
UG9saWN5ID0gcmVmZXJyZXJQb2xpY3k7IH0KICAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBv
bGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5yZWZlcnJlclBvbGljeTsgfQpAQCAtMTk0
LDcgKzE5NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDYW5jZWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSA9IDA7CiAKLSAgICB2b2lkIGFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiwgdW5zaWduZWQsIFNoYXJlZEJ1ZmZlciosIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9p
ZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiwgRGF0YVBheWxvYWRUeXBlKTsKICAgICB2b2lkIGxvYWREYXRhVVJMKCk7CiAg
ICAgdm9pZCBmaW5pc2hOZXR3b3JrTG9hZCgpOwogCkBAIC0yMDUsNyArMjA1LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVz
b3VyY2VSZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJl
cXVlc3QmJiwgUmVzb3VyY2VSZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUq
LCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdhc0Jsb2NrZWQoUmVzb3VyY2VI
YW5kbGUqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IDcxOTY4MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEuLjM3
ZDBiYjgyMWFiZDg2YTliNTYwNmUxMjdlZmM5NDEyYTUxYmIxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTMwLDcgKzUzMCw3IEBAIHZvaWQg
U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCwgbG9uCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5n
dGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBk
YXRhUGF5bG9hZFR5cGUpCit2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogI2lmIFVTRShR
VUlDS19MT09LKQogICAgIGlmIChhdXRvIHByZXZpZXdMb2FkZXIgPSBtX3ByZXZpZXdMb2FkZXIu
Z2V0KCkpIHsKQEAgLTU0Miw3ICs1NDIsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZQogICAg
IGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNv
ZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
bGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsK
ICAgICBBU1NFUlQobV9yZXNvdXJjZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmgKaW5kZXggMzcyM2I2YjlhYjlmZGRhYWE1NTc0YmZiMGU2ZjM4Y2VkN2FlZmI3
NS4uODMyYzlmMGU3M2QzODQ2NGE3OTVmNDAzODYwZjc5YzM0ZTczYmM3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVu
c2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWls
KGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxDYW5jZWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgog
ICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3Ry
aW5nPiBjaGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcHJldmlvdXNSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVz
b3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlw
ZSk7CiAKICAgICB2b2lkIG5vdGlmeURvbmUoTG9hZENvbXBsZXRpb25UeXBlKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAppbmRleCBmNjYyOTJlMzFjYmViNDI2NDMwYTgz
MmFkZWY0Mjk5MWNiNTc0MzZlLi5hOGE0OWI0N2Y5MjczNDI3NGJhNGNlYWJjMTcwN2ZlZmE3YjY2
NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaApAQCAtNDMsNyArNDMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAg
IFN1YnN0aXR1dGVEYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgY29udGVudCwgY29uc3QgVVJM
JiBmYWlsaW5nVVJMLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgU2Vzc2lvbkhp
c3RvcnlWaXNpYmlsaXR5IHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkpCisgICAgICAgIFN1
YnN0aXR1dGVEYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNvbnRlbnQsIGNv
bnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFNl
c3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KQogICAg
ICAgICAgICAgOiBtX2NvbnRlbnQoV1RGTW92ZShjb250ZW50KSkKICAgICAgICAgICAgICwgbV9m
YWlsaW5nVVJMKGZhaWxpbmdVUkwpCiAgICAgICAgICAgICAsIG1fcmVzcG9uc2UocmVzcG9uc2Up
CkBAIC01NCwxNCArNTQsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlz
VmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQgIT0gbnVsbHB0cjsgfQogICAgICAgICBi
b29sIHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Nob3Vs
ZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgPT0gU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpWaXNp
YmxlOyB9CiAKLSAgICAgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBjb250ZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZW50LmdldCgpOyB9CisgICAgICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQuZ2V0KCk7IH0KICAgICAg
ICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UubWlt
ZVR5cGUoKTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZygpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOyB9CiAgICAgICAgIGNvbnN0IFVS
TCYgZmFpbGluZ1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFpbGluZ1VSTDsgfQogICAgICAgICBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9u
c2U7IH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9jb250ZW50OworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9j
b250ZW50OwogICAgICAgICBVUkwgbV9mYWlsaW5nVVJMOwogICAgICAgICBSZXNvdXJjZVJlc3Bv
bnNlIG1fcmVzcG9uc2U7CiAgICAgICAgIFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBtX3Nob3Vs
ZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgeyBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OkhpZGRl
biB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDM0
NGNhOTgyODU3NTJlOGYxMDE3MGYyMzIwNDllMGNhMmFkNGZjODYuLmNmMmRlMGM2MmQ5NWYzMzI1
YjQyYjQ2ZTI0MDM3NzQ0MTA3NDJhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3Rp
dHV0ZVJlc291cmNlLmgKQEAgLTM3LDE0ICszNywxNCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBV
UkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVk
QnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJl
ZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9KTsgfQorICAgIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9KTsgfQogICAgIHZvaWQgYXBw
ZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgbV9kYXRhLmFwcGVuZChkYXRh
LCBsZW5ndGgpOyB9CiAgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmVtcHR5KCk7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRl
bGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KIAogcHJv
dGVjdGVkOgotICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQorICAgIFN1YnN0aXR1dGVS
ZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKICAgICAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkp
CiAgICAgICAgICwgbV9yZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSkKICAgICAgICAgLCBtX2Rh
dGEoV1RGTW92ZShkYXRhKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDcyMGE5MjcxY2QzMjY1ZWY0Y2Uy
MzI2MWEyNmRiMGQ4MjhjNjMzNDYuLjUxOTc4ZjQxMjM4NzRkYzU2NjBlZmY0NzA2NTk3MDdkNGU1
ZDg1YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMjUzLDE0ICsyNTMsMTQgQEAgVVJMIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgog
fQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJG
cm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKK3N0YXRpYyBp
bmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7CiAgICAgaWYgKHJlc291cmNlLnBhdGgoKS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsK
LSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHJlc291cmNlLnBhdGgoKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CiB9CiAKLWJvb2wgQXBwbGljYXRpb25D
YWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3Vy
Y2U7CiAgICAgaWYgKCFzaG91bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGljYXRpb25DYWNoZShyZXF1
ZXN0LCByZXNvdXJjZSkpCkBAIC0yNzcsNyArMjc3LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJl
c28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5
YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIC8vIElmIG5vcm1hbCBsb2Fk
aW5nIHJlc3VsdHMgaW4gYSByZWRpcmVjdCB0byBhIHJlc291cmNlIHdpdGggYW5vdGhlciBvcmln
aW4gKGluZGljYXRpdmUgb2YgYSBjYXB0aXZlIHBvcnRhbCksIG9yIGEgNHh4IG9yIDV4eCBzdGF0
dXMgY29kZSBvciBlcXVpdmFsZW50LAogICAgIC8vIG9yIGlmIHRoZXJlIHdlcmUgbmV0d29yayBl
cnJvcnMgKGJ1dCBub3QgaWYgdGhlIHVzZXIgY2FuY2VsZWQgdGhlIGRvd25sb2FkKSwgdGhlbiBp
bnN0ZWFkIGdldCwgZnJvbSB0aGUgY2FjaGUsIHRoZSByZXNvdXJjZSBvZiB0aGUgZmFsbGJhY2sg
ZW50cnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmgKaW5kZXggZGM4NThmZGQ2ZDU0NTNlYjQzNTkyOGQzZWQ3NTc1NzA4MzU5
NDVlMC4uYjk2MzU2ZTc4NTYxMzg5NTZhZTRjMDU5ODMxNzBjZGY3MjM2NzJhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNz
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOwotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBE
b2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwpAQCAtMTA0LDggKzEwNCw4IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UoUmVz
b3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNlTG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpOwogCi0gICAgYm9vbCBtYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291
cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7Ci0gICAgdm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBib29sIG1h
eWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworICAgIHZvaWQgbWF5YmVM
b2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNl
RXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKIAogICAg
IGJvb2wgY2FuQ2FjaGVJbkJhY2tGb3J3YXJkQ2FjaGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNw
cAppbmRleCA2NzEwOTU3YzNhYjc0YTc1OWZjMjc1MWZkN2EwNmIzMTFlNTE4Y2U1Li4yYmIzZmU3
NWI5OTc3ZTgzMzIyYWUyNTgwZjcyMTJlZTViZjIxNjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNw
cApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgdHlw
ZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkKK1Jl
ZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3Jl
YXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5z
aWduZWQgdHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCF1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVy
KCkpOwogICAgIGlmICghYnVmZmVyKQpAQCAtNDAsNyArNDAsNyBAQCBSZWY8QXBwbGljYXRpb25D
YWNoZVJlc291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBVUkwm
IHVybCwgYwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZShVUkwgeyB1cmwgfSwgV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSwgdHlwZSwgYnVmZmVyLnJl
bGVhc2VOb25OdWxsKCksIHBhdGgpKTsKIH0KIAotQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
cG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBwYXRoKQorQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5
cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgcGF0
aCkKICAgICA6IFN1YnN0aXR1dGVSZXNvdXJjZShXVEZNb3ZlKHVybCksIFdURk1vdmUocmVzcG9u
c2UpLCBXVEZNb3ZlKGRhdGEpKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3N0b3JhZ2VJ
RCgwKQpAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJgogCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQog
ewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5p
c0VtcHR5KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBsb2FkZXIuZGVsaXZl
clJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLm1h
a2VDb250aWd1b3VzKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSht
X3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUodW5z
aWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgKaW5kZXggODhjOTRkZTFhNzc0MTA0NjljOTMx
YTQyYTQ3OWIxZTY3NzdhNzAyZS4uYzI4OGU3MDM2YzY3NjJhZDQ4NzZiYTg4MTQ2OWE3NWQyMjM3
ZTFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIEZhbGxiYWNrID0gMSA8PCA0CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8QXBwbGljYXRp
b25DYWNoZVJlc291cmNlPiBjcmVhdGUoY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJpbmcoKSk7CisgICAgc3RhdGljIFJl
ZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJp
bmcoKSk7CiAKICAgICB1bnNpZ25lZCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAg
ICAgdm9pZCBhZGRUeXBlKHVuc2lnbmVkIHR5cGUpOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6
CiAjZW5kaWYKICAgICAKIHByaXZhdGU6Ci0gICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVS
TCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVS
TCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHBhdGgpOwogCiAgICAgdm9pZCBkZWxpdmVyKFJl
c291cmNlTG9hZGVyJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGM3NzBk
NzY0MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQuLjhjZjA1Y2NlMTg4MDEyOGRlNTli
ZTcwYTk5ODM2ZjVhNzQ1YjZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtMTExMiw3ICsx
MTEyLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
Ojpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKQogICAgICAgICBpbnQgaHR0cFN0YXR1c0Nv
ZGUgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50KDEpOwogCiAgICAgICAgIHVuc2lnbmVkIHR5
cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludDY0KDIp
KTsKLSAgICAgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNh
Y2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKKyAgICAgICAgYXV0byBkYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOwogICAgICAgICAK
ICAgICAgICAgU3RyaW5nIHBhdGggPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uVGV4dCg3KTsKICAg
ICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpAQCAtMTI3Miw3ICsxMjcyLDcgQEAgYm9vbCBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6c2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGlj
YXRpb25DYWNoZVJlc28KICAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZSh0eXBlLCAiYXVkaW8vIikgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZSh0eXBlLCAidmlkZW8vIik7CiB9CiAgICAgCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
Ojp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZUV4
dGVuc2lvbikKK2Jvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVl
RmlsZUluRGlyZWN0b3J5KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5LCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbikK
IHsKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCmluZGV4IDlhOTUz
MDA4NzY2YTg4ODU1NjFiMzQ4ODg5YjhjZWRhMmIyZWIzMzguLjQxMDJhMTgwOGI0NTU1N2I2NDVl
MzZlN2U2ODFmYzRjNmQyMDdjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCkBAIC0zOSw3ICszOSw3IEBA
IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogdGVt
cGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0b3JhZ2VJREpvdXJuYWw7CiAKIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8QXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U+IHsKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZW5zdXJlT3JpZ2lu
UmVjb3JkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkU3Rv
cmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKik7CiAgICAgdm9p
ZCBkZWxldGVUYWJsZXMoKTsKLSAgICBib29sIHdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0
b3J5KFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91dEZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pOworICAgIGJvb2wgd3JpdGVEYXRh
VG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVF
eHRlbnNpb24pOwogCiAgICAgdm9pZCBsb2FkTWFuaWZlc3RIb3N0SGFzaGVzKCk7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKaW5k
ZXggNmRlODBjMTBhYzdkMjVjZjM0NjlmNmRlZjBmYWY3MjQxZjU5NjQyOC4uNGVmOWNkNjZiZDA4
OGI3NGMwNDZjMDY5MGQxZTlkM2U1ZTMzNjBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcApAQCAtNDYsMTIgKzQ2LDEyIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBSZWZQdHI8QXJjaGl2ZT4gUmF3RGF0YUNyZWF0
aW9uRnVuY3Rpb24oY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJik7Cit0eXBlZGVmIFJlZlB0cjxB
cmNoaXZlPiBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbihjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJik7CiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSYXdEYXRhQ3JlYXRpb25GdW5j
dGlvbiosIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gQXJjaGl2ZU1JTUVUeXBlc01hcDsKIAog
Ly8gVGhlIGNyZWF0ZSBmdW5jdGlvbnMgaW4gdGhlIGFyY2hpdmUgY2xhc3NlcyByZXR1cm4gUmVm
UHRyIHRvIGNvbmNyZXRlIHN1YmNsYXNzZXMKIC8vIG9mIEFyY2hpdmUuIFRoaXMgYWRhcHRvciBt
YWtlcyB0aGUgZnVuY3Rpb25zIGhhdmUgYSB1bmlmb3JtIHJldHVybiB0eXBlLgotdGVtcGxhdGU8
dHlwZW5hbWUgQXJjaGl2ZUNsYXNzPiBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGFyY2hpdmVGYWN0
b3J5Q3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3RlbXBsYXRl
PHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBhcmNoaXZlRmFj
dG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIHJldHVybiBBcmNoaXZlQ2xhc3M6OmNyZWF0ZSh1cmwsIGJ1ZmZlcik7CiB9CkBA
IC04Myw3ICs4Myw3IEBAIGJvb2wgQXJjaGl2ZUZhY3Rvcnk6OmlzQXJjaGl2ZU1JTUVUeXBlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuICFtaW1lVHlwZS5pc0VtcHR5KCkgJiYg
YXJjaGl2ZU1JTUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0KIAotUmVmUHRyPEFyY2hp
dmU+IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK1JlZlB0cjxBcmNoaXZlPiBBcmNoaXZlRmFj
dG9yeTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9B
cmNoaXZlRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZh
Y3RvcnkuaAppbmRleCAyMWQyMzY1Y2Y4ZDlkOTAxZWZlN2FhZDU1MmJmM2RhNDA2OWZlNDBkLi41
NTY0NTE1YzllMGQ5ZDAzM2I3OTBjNzQ3Mjg1YTI1ODUzYWJlMDJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKQEAgLTM0LDEyICszNCwxMiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEFyY2hpdmVGYWN0b3J5IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBpc0FyY2hpdmVNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKLSAgICBz
dGF0aWMgUmVmUHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4g
Y3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyS25vd25BcmNoaXZlTUlN
RVR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNw
cAppbmRleCBmYzIwZGEzZGEwMzJjYmVmNzRmMmU5Yzg0MjhhY2I0ZWUzN2JlZjIzLi4wNzM4Mzk0
YTgyODcxNGFhMGI5MGVlNzUwNzlkNDg2ZjViMGU4Njk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZl
UmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmlu
ZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK2lubGluZSBB
cmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IFN1YnN0aXR1dGVSZXNvdXJjZShVUkwgeyB1
cmwgfSwgUmVzb3VyY2VSZXNwb25zZSB7IHJlc3BvbnNlIH0sIFdURk1vdmUoZGF0YSkpCiAgICAg
LCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV90ZXh0RW5jb2RpbmcodGV4dEVuY29kaW5n
KQpAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3Vy
Y2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybAogewogfQogCi1SZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJj
aGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0
YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
dGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTU0LDcgKzU0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291
cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb24KICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBBcmNoaXZlUmVzb3VyY2UoZGF0YS5yZWxlYXNlTm9uTnVsbCgpLCB1cmws
IG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwgcmVzcG9uc2UpKTsKIH0KIAotUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCitSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0
ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShX
VEZNb3ZlKGRhdGEpLCB1cmwsIHJlc3BvbnNlLm1pbWVUeXBlKCksIHJlc3BvbnNlLnRleHRFbmNv
ZGluZ05hbWUoKSwgU3RyaW5nKCksIHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKaW5kZXggMjA5ZTk3MTdhZWIwOTM2MGRi
MzkyN2U2ZWZhMWU1YmYxYzJjOTdjYS4uMDU0OGVmNzIxZWZkMjdjMDBjZTkzZDEyMjcwZWNlYzQ2
YzAyYWY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJl
c291cmNlLmgKQEAgLTM0LDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBB
cmNoaXZlUmVzb3VyY2UgOiBwdWJsaWMgU3Vic3RpdHV0ZVJlc291cmNlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsCisgICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IGNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFVSTCYsCiAgICAgICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwKICAgICAgICAgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgPSBSZXNvdXJjZVJlc3BvbnNlKCkpOwogCkBAIC00Nyw3ICs0
Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZElnbm9yZVdoZW5VbmFyY2hpdmluZygpIGNv
bnN0IHsgcmV0dXJuIG1fc2hvdWxkSWdub3JlV2hlblVuYXJjaGl2aW5nOyB9CiAKIHByaXZhdGU6
Ci0gICAgQXJjaGl2ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBT
dHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIEFyY2hpdmVS
ZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmlu
ZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICBTdHJpbmcgbV9t
aW1lVHlwZTsKICAgICBTdHJpbmcgbV90ZXh0RW5jb2Rpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGY1ZWM0
ZGQ2N2Y3ZGY4ZDlkYTIwOWI0MGUyM2MwNDM5YjZlNjhiMDMuLjcxMTUwY2JkZDg5NjllNmFmMDI4
Njg0YjZiZjZjYmMwYTUwYjJmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC0yNDgsMTIgKzI0OCwxMiBAQCBS
ZWY8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFJlZjxBcmNoaXZl
UmVzb3VyY2U+JiYgbWFpblJlc291cgogICAgIHJldHVybiBhcmNoaXZlOwogfQogCi1SZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKK1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICByZXR1cm4gY3JlYXRlKFVSTCgp
LCBkYXRhKTsKIH0KIAotUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEpCitSZWZQdHI8TGVnYWN5V2Vi
QXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2
ZSAtIENyZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCmluZGV4IGQwOWVjOWY3NWFiYTEz
NmE4NjMzOWViNGQ4NmFiZDgyNzdjNGZmMDQuLjVhMDdiMTBiNGJlNmY4NjIwMTFhNzgyYTdkZWQy
MzY3NTkyNDM2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9j
Zi9MZWdhY3lXZWJBcmNoaXZlLmgKQEAgLTQxLDggKzQxLDggQEAgc3RydWN0IFNpbXBsZVJhbmdl
OwogY2xhc3MgTGVnYWN5V2ViQXJjaGl2ZSBmaW5hbCA6IHB1YmxpYyBBcmNoaXZlIHsKIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0
ZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
Y3JlYXRlKFNoYXJlZEJ1ZmZlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBj
cmVhdGUoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiBtYWluUmVzb3VyY2UsIFZlY3RvcjxSZWY8QXJj
aGl2ZVJlc291cmNlPj4mJiBzdWJyZXNvdXJjZXMsIFZlY3RvcjxSZWY8TGVnYWN5V2ViQXJjaGl2
ZT4+JiYgc3ViZnJhbWVBcmNoaXZlcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoTm9kZSYsIEZ1bmN0aW9uPGJvb2woRnJhbWUmKT4m
JiBmcmFtZUZpbHRlciA9IHsgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxM
ZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoRnJhbWUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmluZGV4IDk5M2MyYjhlODMw
ZGMzZDc1YzVhZDMxOWJiYWZlOWRmNDVjNTAxMGUuLmQwMTM5Zjg3YTA2Zjk2OTc4Yjc0NzdlOWY0
OTk5YzM0ZWE5Zjg2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIFJlZjxNSFRNTEFy
Y2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBN
SFRNTEFyY2hpdmUpOwogfQogCi1SZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNy
ZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVyJiBkYXRhKQorUmVmUHRyPE1IVE1MQXJj
aGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gRm9yIHNlY3VyaXR5IHJlYXNvbnMgd2Ugb25seSBs
b2FkIE1IVE1MIHBhZ2VzIGZyb20gbG9jYWwgVVJMcy4KICAgICBpZiAoIUxlZ2FjeVNjaGVtZVJl
Z2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwodXJsLnByb3RvY29sKCkudG9TdHJp
bmcoKSkpCkBAIC0xMzAsNyArMTMwLDcgQEAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNo
aXZlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICByZXR1
cm4gbWFpbkFyY2hpdmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2Vu
ZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBN
SFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiB7CiAgICAgVmVjdG9y
PFBhZ2VTZXJpYWxpemVyOjpSZXNvdXJjZT4gcmVzb3VyY2VzOwogICAgIFBhZ2VTZXJpYWxpemVy
IHBhZ2VTZXJpYWxpemVyKHJlc291cmNlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oCmluZGV4IDNkMmRiN2M5NjAwMmViZTY4NGIy
YmVmOGYxZWE5ZTJlOTc5NGE1ODkuLjJkZmU4N2U4MmU3YTRkY2UwZjM0MWMzNjE5NDNjOTkwMjA1
YzhkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5oCkBAIC0zOCwxNCArMzgsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBNSFRNTFBhcnNlcjsKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNSFRNTEFyY2hpdmUgZmluYWwgOiBw
dWJsaWMgQXJjaGl2ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNSFRNTEFyY2hpdmU+IGNy
ZWF0ZSgpOwotICAgIHN0YXRpYyBSZWZQdHI8TUhUTUxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJM
JiwgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxNSFRNTEFyY2hpdmU+IGNyZWF0
ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKLSAgICBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gZ2VuZXJhdGVNSFRNTERhdGEoUGFnZSopOworICAgIHN0YXRpYyBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZ2VuZXJhdGVNSFRNTERhdGEoUGFnZSopOwogCiAgICAg
dmlydHVhbCB+TUhUTUxBcmNoaXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCA0MDI1Yjk4MGU1ZWU2ODJkYjA3
NjJhZmE4NmVjYTlkOTJmZTg1OGQ5Li41ZWU5MTg2ODRhMDY4OTY4M2Y3MWMyNjdmMmQ5MDFhMzdh
NmZlYjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyBib29sIHNraXBMaW5lc1Vu
dGlsQm91bmRhcnlGb3VuZChTaGFyZWRCdWZmZXJDaHVua1JlYWRlciYgbGluZVJlYWRlciwgY29u
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1NSFRNTFBhcnNlcjo6TUhUTUxQYXJzZXIoU2hhcmVk
QnVmZmVyKiBkYXRhKQorTUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2VyKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEpCiAgICAgOiBtX2xpbmVSZWFkZXIoZGF0YSwgIlxyXG4iKQogewogfQpAQCAt
MjE1LDcgKzIxNSw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJz
ZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIExPR19FUlJP
UigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQotICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICAvLyBGSVhNRTogdGhlIFVS
TCBpbiB0aGUgTUlNRSBoZWFkZXIgY291bGQgYmUgcmVsYXRpdmUsIHdlIHNob3VsZCByZXNvbHZl
IGl0IGlmIGl0IGlzLgogICAgIC8vIFRoZSBzcGVjcyBtZW50aW9ucyA1IHdheXMgdG8gcmVzb2x2
ZSBhIFVSTDogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjU1NyNzZWN0aW9uLTUKICAg
ICAvLyBJRSBhbmQgRmlyZWZveCAoVU5NaHQpIHNlZW0gdG8gZ2VuZXJhdGUgb25seSBhYnNvbHV0
ZSBVUkxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
UGFyc2VyLmgKaW5kZXggMWU5YmQ0ZDc3NjdlZTM5MWEwMDIyZjcxNzQ4ZjAwYjg1YzgxYjI1Zi4u
MGQ2MDQzNDNmM2Q3YWQxNzhjYzIyMDAzYzk3OWMyMmU1MGEzYjk5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oCkBAIC00MiwxMSAr
NDIsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwogY2xh
c3MgTUhUTUxBcmNoaXZlOwogY2xhc3MgTUlNRUhlYWRlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1IVE1MUGFyc2VyIHsKIHB1
YmxpYzoKLSAgICBleHBsaWNpdCBNSFRNTFBhcnNlcihTaGFyZWRCdWZmZXIqKTsKKyAgICBleHBs
aWNpdCBNSFRNTFBhcnNlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICAgICBSZWZQdHI8
TUhUTUxBcmNoaXZlPiBwYXJzZUFyY2hpdmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4IDkw
ZDFjNmEyYmE4YzRhNDJlMWZlYmQ4MDFlNTI4NzgwNTkwMTJiOTIuLmUxYTg3NTE2YmQ4ZDViOGYy
NGFmNmE1Yjk5MGUyMTg1MzQ3ZTc1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTQwLDcgKzQw
LDcgQEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIHsKIH0KIAotdm9pZCBDYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewog
ICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5k
ZXggNjRiMTRkNWY2NWZmZmM4NTU0ZGY0NjY1Yzc1OTE2ZjM0ZDFkNTQ2YS4uMzc5OGE5YjRkOTAx
M2NmZGVhNmY1NmZiZGYwMDE1YWY4OTQ3NTcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC00Miw3ICs0
Miw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlm
ZXN0PiBwcm9jZXNzKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRV
UkwsIERvY3VtZW50KiA9IG51bGxwdHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRS
ZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2RlY29kZXIucHRyKCk7IH0KICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
CmluZGV4IDlkMmRjNzM2NDgwMmQwZDYyYTY1OTFkZTY4OWE1YTdhMjQ0MzA1MTEuLjM4YTJlMTdm
MGQwNmM4YWM5OGRlMjRiMWU1MmI4ZTYwZTkyNDEyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTk3LDcgKzk3LDcg
QEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQu
bV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6
OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRp
bmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRh
dGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuaAppbmRleCBkMzdmYWZhY2MwMTIyYzg3NTQwZjQ2NGI5ZTU2
MTYwY2NhZTQ2OWY5Li5lNjU1YzY5ZTNlZGI2MDk1MDIzOWNjZTQ1NDVmMDk2YjUyNjU2ZGU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0
IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAg
IGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7Cisg
ICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0
YSgpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApp
bmRleCBmOWFkNzcxM2M2MDNhNmEwYTU2YmNhMjc5Y2U4MjUwNjY2YTMyMGZhLi5kMmJjMjgyMTQ3
OWM1OWEyMzIzZTRmNjVjZDk0YjYzYjQyMzczNjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6
ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRp
Y19jYXN0PENhY2hlZEZvbnRDbGllbnQmPihjbGllbnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQog
Ci12b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEZvbnQ6OmZp
bmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1f
ZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CkBAIC05NSw3ICs5NSw3IEBAIFN0cmluZyBD
YWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4g
dXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDYWNoZWRG
b250OjplbnN1cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKQor
Ym9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEp
CiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQo
KSAmJiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBib29sIHdyYXBwaW5nOwpAQCAt
MTA4LDcgKzEwOCw3IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnl0ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcp
CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3Jl
YXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVt
SW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKICAgICBSZWZQdHIgYnVmZmVyID0geyAm
Ynl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGJ1
ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAppbmRleCAxNTRk
YjhjYmFiZjNkNWEzOGUwOTYxYWNiNTVjZWFjZmYyZjI5NzNhLi4xMzQ2NmNjOTlkMGQxOWNiZjNk
OGVmM2RmYmQ5NmYzNGQwZjg1NDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3RpbGxOZWVkc0xv
YWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5pdGlhdGVkOyB9CiAKICAgICB2
aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3Rl
VVJJKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBp
bmcpOwogICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21E
YXRhKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEmLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29s
IGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKICAgICB2
aXJ0dWFsIFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNv
bnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRo
ZXRpY0l0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwpAQCAtNjIsNyArNjIsNyBA
QCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFG
cm9tQ3VzdG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJvbGQsIGJvb2wgaXRh
bGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKLSAgICBib29sIGVuc3VyZUN1c3Rv
bUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJl
Q3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKIAogcHJpdmF0ZToKICAgICBTdHJp
bmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0OwpAQCAtNzQsNyArNzQsNyBAQCBw
cml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgc2V0Qm9keURhdGFGcm9t
KGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQog
CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggN2MwMWM4Y2MyMzExNzg2
YzYyNGY0ODVlZGVmNjkzNWZiN2VmYTVmYi4uOTQ2Mjc5NTIwZDBkYTQ0NjIyYzZhY2QzNjY2MjI4
ODEwNWU4MTk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCkBAIC00NjgsNyArNDY4LDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1h
Z2UoKQogICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lkIENhY2hlZElt
YWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lk
IENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhKQogewogICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAg
ICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CkBAIC01MjMsMTQgKzUyMywxNCBAQCBi
b29sIENhY2hlZEltYWdlOjpzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0CiAgICAg
cmV0dXJuIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fbGFzdFVwZGF0ZUltYWdlRGF0YVRpbWUp
LnNlY29uZHMoKSA8IHVwZGF0ZUltYWdlRGF0YUJhY2tvZmZJbnRlcnZhbHNbaW50ZXJ2YWxdOwog
fQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRl
ZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8U2hh
cmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7CiAgICAgaWYgKCFkYXRhKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCiAgICAg
ICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpOwogI2lmIFBMQVRGT1JNKE1BQykgJiYg
IVVTRShXRUJLSVRfSU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BE
RihkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOworICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNj
cmlwdERhdGFUb1BERihkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0
KCkpOwogI2Vsc2UKICAgICAvLyBMb2FkaW5nIHRoZSBpbWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNh
bmNlbGVkIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBjb252ZXJ0aW5nIFBvc3RTY3Jp
cHQgdG8gUERGLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTU1LDcgKzU1NSw3IEBA
IEVuY29kZWREYXRhU3RhdHVzIENhY2hlZEltYWdlOjp1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6
dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6
OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAg
IEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVm
ZmVyRGF0YSk7CiAgICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoZGF0YSk7CkBAIC01NjksNyArNTY5
LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVu
Z3RoKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2Fj
aGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIG1fZGF0YSA9IGNv
bnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsKICAgICBpZiAobV9kYXRhKSB7CkBAIC01OTUsNyAr
NTk1LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKIHZvaWQgQ2FjaGVkSW1hZ2U6OmRpZFJl
cGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpCiB7CiAgICAgaWYgKG1faW1hZ2UpIHsKLSAgICAg
ICAgLy8gTGV0IHRoZSBJbWFnZSBrbm93IHRoYXQgdGhlIFNoYXJlZEJ1ZmZlciBoYXMgYmVlbiBy
ZWppZ2dlZCwgc28gaXQgY2FuIGxldCBnbyBvZiBhbnkgcmVmZXJlbmNlcyB0byB0aGUgaGVhcC1h
bGxvY2F0ZWQgcmVzb3VyY2UgYnVmZmVyLgorICAgICAgICAvLyBMZXQgdGhlIEltYWdlIGtub3cg
dGhhdCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBoYXMgYmVlbiByZWppZ2dlZCwgc28gaXQg
Y2FuIGxldCBnbyBvZiBhbnkgcmVmZXJlbmNlcyB0byB0aGUgaGVhcC1hbGxvY2F0ZWQgcmVzb3Vy
Y2UgYnVmZmVyLgogICAgICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8yNDI3NTYxNyk6IEl0
IHdvdWxkIGJlIGJldHRlciBpZiB3ZSBjb3VsZCBzb21laG93IHRlbGwgdGhlIEltYWdlJ3MgZGVj
b2RlciB0byBzd2FwIGluIHRoZSBuZXcgY29udGVudHMgd2l0aG91dCBkZXN0cm95aW5nIGFueXRo
aW5nLgogICAgICAgICBtX2ltYWdlLT5kZXN0cm95RGVjb2RlZERhdGEodHJ1ZSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBkNTEzZTE2Y2Jh
NWE5NzA3YzMzYWZjNzkzOTE1MTg2NmZhNDM4YTVmLi4wODNmOTJmODg4Mjc2ZWVkYTg5OTEyMDMx
ZDI0NDlhOTY4ZTI2NWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaApAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZl
V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlV2lk
dGgoKTsgfQogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsgfQogCi0gICAgdm9pZCB1
cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5p
c2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAg
ICAgZW51bSBTaXplVHlwZSB7CiAgICAgICAgIFVzZWRTaXplLApAQCAtMTI1LDcgKzEyNSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAg
IGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IFNoYXJlZEJ1
ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0
YUlmTmVlZGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAg
IHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRl
SW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKQEAgLTE2OSw3ICsx
NjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNv
bnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IElt
YWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOworICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHAKaW5kZXggODQyYmY1ZjIwZTA2ZmQ4M2E3MDQ2NTVkNjAwYWRmZGM2NDgwNDQ4
Mi4uODk1ZGIxMTU4YjZiOGM4ZmJmN2IxMGI0M2I2MTRlZGE5NjAyMWNkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC00OCw3
ICs0OCw3IEBAIENhY2hlZFJhd1Jlc291cmNlOjpDYWNoZWRSYXdSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUeXBlIHR5cGUsCiAgICAgQVNTRVJUKGlzTWFpbk9yTWVk
aWFPckljb25PclJhd1Jlc291cmNlKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1
bmsoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorc3RkOjpvcHRpb25hbDxTaGFyZWRC
dWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0
YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7CiAgICAg
c2l6ZV90IHByZXZpb3VzRGF0YUxlbmd0aCA9IGVuY29kZWRTaXplKCk7CiAgICAgaWYgKCFkYXRh
IHx8IGRhdGEtPnNpemUoKSA8PSBwcmV2aW91c0RhdGFMZW5ndGgpCkBAIC01Niw3ICs1Niw3IEBA
IHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpj
YWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDCiAgICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRhKHBy
ZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1
cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAv
LyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5lc3RlZCBydW5sb29wcy4g
V2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExvYWRpbmcuCiAgICAgaWYg
KG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAK
LXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJh
d1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAobV9pbklu
Y3JlbWVudGFsRGF0YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBtYXkgZ2V0IGhlcmUgc3luY2hy
b25vdXNseSBmcm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxsYmFjayB0aGVyZSBlbmRzIHVw
IHNwaW5uaW5nIGEgcnVubG9vcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmgKaW5kZXggNTdmZDdhYjVjMTAwZGMwOWFkZjI2ZWM0Y2JhYzQ1MTRm
MzZmNzVmZi4uYTc4NjVmOGFkMTc4YWVmYjMyMjBhNTZkY2ZmMTk1OTkzY2Y5NWFlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTUx
LDkgKzUxLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENh
Y2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgZmluaXNoTG9hZGlu
Zyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
KyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGRJZ25vcmVI
VFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CkBAIC02Niw3ICs2Niw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlKCkgb3Zl
cnJpZGU7CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2FsbG93RW5jb2RlZERhdGFSZXBsYWNlbWVudDsgfQogCi0gICAgc3RkOjpv
cHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1
bmsoY29uc3QgU2hhcmVkQnVmZmVyKikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxTaGFyZWRC
dWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciopIGNvbnN0OwogICAgIHZvaWQgbm90aWZ5Q2xpZW50c0RhdGFXYXNS
ZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIAogI2lm
IFVTRShRVUlDS19MT09LKQpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxS
ZWRpcmVjdFBhaXIsIDAsIENyYXNoT25PdmVyZmxvdywgMD4gbV9yZWRpcmVjdENoYWluOwogCiAg
ICAgc3RydWN0IERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsKLSAgICAgICAgUmVmUHRyPGNvbnN0IFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxEZWxheWVkRmluaXNo
TG9hZGluZz4gbV9kZWxheWVkRmluaXNoTG9hZGluZzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBjZjRmMDJjNWQ3NDM0Y2I2NWNi
M2QwMzM4YWM3ZmE3M2FmNjE2Njg0Li5iZjY5ZTgwZTU3NmUxYTI4OGY2YTAxMWY1NDYxNDYzMTU1
ODAxZDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05vdGlm
eShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVudC0+bm90
aWZ5RmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1
cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVw
ZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikKIHsKICAgICBBU1NFUlQo
ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEp
OwogfQpAQCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEo
Y29uc3QgdWludDhfdCosIHVuc2lnbmVkKQogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5
KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBD
YWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hM
b2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3Rp
ZnkobWV0cmljcyk7CkBAIC05MTMsNyArOTEzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2Fs
bGJhY2s6OnRpbWVyRmlyZWQoKQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIAot
dm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIG5ld0J1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNv
ZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaAppbmRleCAyMThkNzRmMjc3NmE5NjVmY2VhNDhiNjFhMzI1Zjk3MjhhNzkwZGQ5Li5jOTgy
ZGQ2OTM3YTBiYzJiZjM4YzQyNjEyNmZmZTZlNzhjNzk2NDc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBD
b29raWVKYXI7CiBjbGFzcyBNZW1vcnlDYWNoZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwogY2xhc3MgVGV4dFJl
c291cmNlRGVjb2RlcjsKIApAQCAtMTEyLDkgKzExMiw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBTdHJpbmcg
ZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgY29uc3Qg
VGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IHsgcmV0dXJu
IG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CisgICAgdmly
dHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBlcnJvcihDYWNoZWRS
ZXNvdXJjZTo6U3RhdHVzKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VFcnJvcihjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikgeyBtX2Vycm9yID0gZXJyb3I7IH0KQEAgLTIxMyw3ICsyMTMsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsg
fQorICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNl
UmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2Vp
dmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRl
c1NlbnQgKi8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsg
fQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJik7
CiAjZW5kaWYKIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9h
ZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxv
YWRXaXRob3V0UmVzb3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgSGFzaENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8v
IE5lZWRlZCBieSBQaW5nIGxvYWRzLgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9s
b2FkZXI7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGlt
ZSBtX2xhc3REZWNvZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGlu
IHRoZSBjYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHAKaW5kZXggYjBmNzZhNTA5NjEwZjY3MTA1N2JlZWJmMGEwYjlhNjAxY2E4MjIy
Yi4uZGI0MzE2MDdhZTU2MzgzMDM4MDBkZDI1OWMxMDM0Y2QwOTBmY2ZlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01Miw3
ICs1Miw3IEBAIFN0cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAogICAg
IHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFNW
R0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6Zmlu
aXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8g
V2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3Vt
ZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAppbmRleCBiMDEyYmE5OGVlZGY3MzJj
MDgyYzM2M2IwY2JlMTMwMzQ3NGMzMDQ5Li40NDVlNGY5ZjQyYzNjMjc0MDc5NzZhNjRlOTE1NDA3
ZjhiNTM0ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2Rp
bmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVj
b2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZv
aWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAg
ICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3Vy
Y2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRm9udC5jcHAKaW5kZXggOWNmMDQzNzE5NGE4YTJmY2E1ZTUyNWM3YmZmOWZlOGU5OGE1
MGMzMi4uZDJjMWRlNDdlZmI3ODEzOThmNDQzOGI3Y2E0ZWEyNjBlMjIxOTc2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAtOTEsNyArOTEs
NyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQg
fHwgIWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoKm1f
ZXh0ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVl
KCkpKTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1fZXh0
ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRleCBhMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYw
NTRjMzg1ODIzLi4zNTNkM2RlNjNiMDYyODYxM2FiYWY3NzdmZWIyNTNjNWI2MjQ5MGM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUwLDcgKzUw
LDcgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0aWFsaXplRXh0ZXJu
YWxTVkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAgIFNWR0Zv
bnRGYWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkp
OwogCi0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVmUHRyPFNW
R0RvY3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1f
ZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+IG1f
c2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3Bw
CmluZGV4IGI4N2EzZGIwNmYwMTE0N2YxOWI4ZjQzMjY5ZmQ0NzFlODRlMmVkZjkuLmI2NzM5OGIw
ZTRmNTZmZTdhYmNiMjc0ZDBlMzY4NDMwMzYzNTA4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHVuc2lnbmVkIENh
Y2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAgICAgcmV0dXJuIG1fc2NyaXB0SGFzaDsKIH0KIAot
dm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNjcmlwdDo6
ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAg
bV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA3NWJlNGRiNzE1NzllMzFhYWRhOTcwNjlkOWJmZmMy
YzdlNjM0MzIxLi44NjUxZTYzOWFkOTA2MTcyODU2MWMzMjRiZmE3YWY0Y2Y5N2Y2ZDM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCkBAIC00Nyw3ICs0Nyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsK
ICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3Vy
Y2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9k
ZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4
IDU0MjY2ZGQ5MDgxOWMzNGU5MTUwODQzNDg5NDJlOTEzYWRlODFlZDQuLjBjODQyOGJiOTlkYjZk
ZmIxNmEzNDgxMzRjMzgyNjgzNmNjZTU0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCkBAIC00MCwxMCArNDAsMTAgQEAgQ2FjaGVkVGV4
dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
UEFMOjpTZXNzaW9uSUQKIHsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1Vw
ZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEFT
U0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVy
RGF0YSk7Ci0gICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKKyAgICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxTaGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGll
bnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwpAQCAtNTEs
MTMgKzUxLDEzIEBAIHZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIGNsaWVudC0+ZGVwcmVjYXRlZERpZFJlY2VpdmVD
YWNoZWRSZXNvdXJjZSgqdGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVw
ZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGRv
VXBkYXRlQnVmZmVyKCZkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRh
dGEpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQg
Q2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBkb1Vw
ZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRh
LCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJh
Y2suaAppbmRleCBmNDYzMTc4MzIxZWRjN2NhODY5NzBjZjRhZGRhNDA4OTY5Mjk2ODg1Li4wOWI0
MzM5YTM3YjY3M2IyYWM0ZmRhZTE0NmIyOWI5NjQ3NzdmY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCkBAIC0zNSwxMCArMzUsMTAgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2
b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZG9VcGRhdGVC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVl
dC5jcHAKaW5kZXggYjlhNjU4NzUzY2U5ZjdlYzM2MzNmMWEyZjc0ZTdjYzllYTM5ODU3NC4uZDJl
ZmYyZDJkNDBjOTI3NzM4NzU2YzRhOGYwY2JiOTM0M2JlMTBhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjEsNyAr
NjEsNyBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25zdAogICAg
IHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFhT
TFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6
OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAg
IG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAppbmRleCBjMDRkZDRmMTZjZjNiN2Vj
YTI1ODkxMGI5ZWZhZjQxMjU0ZTJkNzI4Li5iZDIzMTIxNGYyZDIwYmEzOTY0NDYwMzY2ZTA0MWI5
NDEzNWFjNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVu
Y29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0
IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29k
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZp
bmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBt
X3NoZWV0OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29h
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgK
aW5kZXggZDAyMGFjM2RjODA4NDRhNjdhMDdjYjViMWQxNTlmNzFjMGNkY2QxNC4uY2U1MmNmZWJk
NzYxZTU2NDc1YTIwMWU4MTQzODUzMzRlYTRkYmE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaApAQCAtMzIsMTcgKzMyLDE3
IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9DRkNhY2hlZFVSTFJlc3BvbnNlKiBDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIERpc2tDYWNoZU1vbml0
b3IgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3Jl
YXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYpOwotICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0cnlH
ZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZik7CiAKIHByaXZhdGU6CiAgICAgRGlza0NhY2hlTW9uaXRvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7
CiAKLSAgICB2b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJik7CisgICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJik7
CiAKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0OyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IDkzZWU5NjM3NGYw
M2JhMzEyNDQzZDI4MWM1MmE0ODQwNjlkZjJhMzEuLmZhNGI5MDNiZWY5Mzk0ODFjMjJlYTdkZjU1
MWU4YjU1ZTdlMGU1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9E
aXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29h
L0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQpAQCAtNDIsMTMgKzQyLDEzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHdlJ2xsIHRyeSB0byB3
YWl0IGZvciBhIHJlc291cmNlIHRvIGJlIGRpc2sgY2FjaGVkIGJlZm9yZSB3ZSBmb3JnZXQgdGhl
IHJlcXVlc3QuCiBzdGF0aWMgY29uc3QgZG91YmxlIGRpc2tDYWNoZU1vbml0b3JUaW1lb3V0ID0g
MjA7CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0
cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IERp
c2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNo
ZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQogewogICAg
IGF1dG8gZGF0YSA9IF9DRkNhY2hlZFVSTFJlc3BvbnNlR2V0TWVtTWFwcGVkRGF0YShjYWNoZWRS
ZXNwb25zZSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogfQogCiB2b2lkIERpc2tDYWNoZU1vbml0b3I6
Om1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYg
Y2FjaGVkUmVzcG9uc2UpCkBAIC0xMTMsNyArMTEzLDcgQEAgRGlza0NhY2hlTW9uaXRvcjo6RGlz
a0NhY2hlTW9uaXRvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lv
bkkKICAgICBfQ0ZDYWNoZWRVUkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRDYWxsQmFja0Js
b2NrKGNhY2hlZFJlc3BvbnNlLCBibG9ja1RvUnVuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
KTsKIH0KIAotdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZlcikKK3ZvaWQgRGlza0NhY2hl
TW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYgZmlsZUJhY2tl
ZEJ1ZmZlcikKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24o
KS5yZXNvdXJjZUZvclJlcXVlc3QobV9yZXNvdXJjZVJlcXVlc3QsIG1fc2Vzc2lvbklEKTsKICAg
ICBpZiAoIXJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXIuaAppbmRleCBiNTJmOTVhNjVkNWJiN2FmOTBlYmRhNDdlZjAwMmViODg3YmNm
NzI5Li42NmI5MzU4ZWM1MzExMTQ4NDgyMmE3Y2MyNGU3ZjNhOTkxNzA2NWE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtMzgsNyAr
MzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNo
YXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmluYWwgOiBw
cml2YXRlIFByZXZpZXdDb252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZlcnRlclBy
b3ZpZGVyIHsKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIGJvb2wgZGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29sIGRpZFJl
Y2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgYm9vbCBkaWRSZWNlaXZlQnVm
ZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBib29sIGRpZEZpbmlzaExv
YWRpbmcoKTsKICAgICB2b2lkIGRpZEZhaWwoKTsKIApAQCAtNjIsMTIgKzYyLDEyIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmluaXNoVXBkYXRpbmcoUHJldmlld0Nv
bnZlcnRlciYpIGZpbmFsIHsgfTsKICAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsVXBk
YXRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRl
ckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgZmluYWw7Ci0gICAgdm9pZCBw
cmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVE
YXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgZmlu
YWw7CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZyhQcmV2aWV3
Q29udmVydGVyJikgZmluYWw7CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbENvbnZl
cnRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOwogCiAgICAgLy8gUHJldmlld0NvbnZlcnRl
clByb3ZpZGVyCi0gICAgdm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRl
cihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRC
dWZmZXIqKT4mJikgZmluYWw7CisgICAgdm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmll
d0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYpIGZpbmFsOwogICAgIHZvaWQgcHJvdmlkZVBh
c3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJikgZmluYWw7CiAKICAgICBSZWZQdHI8UHJldmll
d0NvbnZlcnRlcj4gbV9jb252ZXJ0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXggZGI4MDY5Y2JmOWRiNzUwZWI3YzE3MTg0YWJm
YzFjMmIzYzUwOTI3My4uNjFjYzZkZDQyMzg5ZGFiNjdiNDk1NDk2NTRkZWY4MWMyZWY0NWExZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5t
bQpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+
IG1ha2VDbGllbnQoY29uc3QgUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgYwogICAgIHJldHVybiBl
bXB0eUNsaWVudCgpOwogfQogCi1ib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIExlZ2FjeVByZXZpZXdMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIGlmIChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9h
ZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXIm
IGMKICAgICB9KTsKIH0KIAotdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVy
dGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFJlY2Vp
dmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhKQogewogICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBtX3Jlc291cmNlTG9hZGVyLmdldCgp
OwogICAgIGlmICghcmVzb3VyY2VMb2FkZXIpCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBMZWdh
Y3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZp
ZXdDb252ZXJ0ZXImIGMKICAgICBtX2NsaWVudC0+ZGlkUmVxdWVzdFBhc3N3b3JkKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92
aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252
ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVz
b3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZjb252ZXJ0
ZXIgPT0gbV9jb252ZXJ0ZXIpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRh
LT5nZXQoKS5nZXQoKSk7CkBAIC0yMzUsNyArMjM1LDcgQEAgTGVnYWN5UHJldmlld0xvYWRlcjo6
fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CiBMZWdhY3lQcmV2aWV3TG9hZGVyOjpM
ZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIDogbV9jb252ZXJ0ZXIgeyBQcmV2aWV3Q29udmVydGVy
OjpjcmVhdGUocmVzcG9uc2UsICp0aGlzKSB9CiAgICAgLCBtX2NsaWVudCB7IG1ha2VDbGllbnQo
bG9hZGVyLCBtX2NvbnZlcnRlci0+cHJldmlld0ZpbGVOYW1lKCksIG1fY29udmVydGVyLT5wcmV2
aWV3VVRJKCkpIH0KLSAgICAsIG1fb3JpZ2luYWxEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRC
dWZmZXJCdWlsZGVyPihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKSB9CisgICAgLCBtX29yaWdpbmFs
RGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCkpIH0KICAgICAsIG1fcmVzb3VyY2VMb2FkZXIgeyBsb2FkZXIgfQog
ICAgICwgbV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZyYW1lKCkt
PnNldHRpbmdzKCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZp
ZXcoKSB9CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCBhMzYzYjdiMDJjYjNj
OTc3ZDU1ZmNkZmNjY2JhNDMxZDM1MDcwNjgzLi5lYTYxNWRmZjRkZDBlZDUxNGJmZjY0NDI2NDdl
YzQ2MjBmNjMyMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTM4LDEzICsz
OCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NS
ZXNwb25zZSA6IHVpbnQ4X3Q7CiAKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRWxlbWVudDsK
IGNsYXNzIEZyYW1lOwogY2xhc3MgS2V5Ym9hcmRFdmVudDsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3R5bGVQ
cm9wZXJ0aWVzOwogY2xhc3MgVGV4dENoZWNrZXJDbGllbnQ7CiBjbGFzcyBWaXNpYmxlU2VsZWN0
aW9uOwpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZE1v
dmVSYW5nZUFmdGVyRGVsZXRlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU2ltcGxlUmFuZ2Um
KSA9IDA7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmll
ciAqLywgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBw
cmVmZXJyZWRGaWxlTmFtZSAqLywgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgeyB9CisgICAgdmlydHVh
bCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVu
dGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICovLCBjb25zdCBTdHJpbmcm
IC8qIHByZWZlcnJlZEZpbGVOYW1lICovLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICov
LCBjb25zdCBTdHJpbmcmIC8qIGZpbGVQYXRoICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJp
bmcmIC8qIGlkZW50aWZpZXIgKi8pIHsgfQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRh
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0
ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CmluZGV4IDZkNTFjNWU1MTZhM2RiZmJiNzQ3NmVkOTRiMDQxZTZlNTZmNzNjMGYuLmYzN2QwNTli
MGViNTI2YzU0OWMwZDdkZWI0ZWE1YTA4ODBmZjBkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAt
MTk1Miw3ICsxOTUyLDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNv
bnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlzaGVzIGxvYWRp
bmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUgbG9hZCBldmVu
dCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hlbgogICAgIC8v
IGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBkYXRhID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxl
U2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAg
ICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmNwcAppbmRleCBkNzUwY2ZmOTY0MjMwMDUyZjc5OTVhMjdlODg3MjlkMmNkZTgwNDgwLi5h
YzUzY2IxNGJmMDBlNTE2NDdjOWVjOTExMDk4YmVhMDM2MTUxMTIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgUGFnZVNlcmlh
bGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBTdHJpbmcgdGV4dCA9IGFjY3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVzKCpkb2N1bWVu
dC0+ZG9jdW1lbnRFbGVtZW50KCksIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05v
ZGUpOwotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1J
TUVUeXBlKCksIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5j
b2RlKHRleHQsIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CisgICAgbV9yZXNv
dXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBVbmVuY29kYWJsZUhhbmRs
aW5nOjpFbnRpdGllcykpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogCiAgICAg
Zm9yIChhdXRvJiBub2RlIDogbm9kZXMpIHsKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFBhZ2VT
ZXJpYWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hl
ZXQsIGNvbnN0IFVSTAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNoZWNrIHdoZXRoZXIg
YSBjaGFyc2V0IGhhcyBiZWVuIHNwZWNpZmllZCBhbmQgaWYgbm9uZSB3YXMgZm91bmQgYWRkIG9u
ZS4KICAgICAgICAgVGV4dEVuY29kaW5nIHRleHRFbmNvZGluZyhzdHlsZVNoZWV0LT5jb250ZW50
cygpLmNoYXJzZXQoKSk7CiAgICAgICAgIEFTU0VSVCh0ZXh0RW5jb2RpbmcuaXNWYWxpZCgpKTsK
LSAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJp
bmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICAgICAgbV9yZXNv
dXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRl
eHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5n
OjpFbnRpdGllcykpIH0pOwogICAgICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKICAgICB9
CiB9CkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jl
c291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICBpZiAo
IWltYWdlIHx8IGltYWdlLT5pbWFnZSgpID09ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVy
ID8gaW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVyID8g
aW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CiAgICAg
aWYgKCFkYXRhKQogICAgICAgICBkYXRhID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4IGJmY2JlN2I4ZGJmZDQ5Zjc5ZDFhMDBj
ODAwNGVhZGUyOWM0ODA4MjEuLmZmM2UyZTFmY2IwNjFhNGZmZmM1ZGVmZDRjMmQxODBhZjQ5YmY3
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKQEAgLTU0LDcgKzU0LDcgQEAg
cHVibGljOgogICAgIHN0cnVjdCBSZXNvdXJjZSB7CiAgICAgICAgIFVSTCB1cmw7CiAgICAgICAg
IFN0cmluZyBtaW1lVHlwZTsKLSAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGE7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgfTsKIAogICAg
IGV4cGxpY2l0IFBhZ2VTZXJpYWxpemVyKFZlY3RvcjxSZXNvdXJjZT4mKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YS5oCmluZGV4IDNlZGQ5YzcxYmIyN2U1MGZkZmRmYWNlZTI3MWVmZWZiN2NiMjkxZjUu
LjY4YjBkZDJjMzA2Yjc5NDUzMWQyOWJkMTQwZGNiNDJiNDhlMjczNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
aGFyZURhdGEuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgU2hhcmVEYXRhIHsKIAogc3RydWN0
IFJhd0ZpbGUgewogICAgIFN0cmluZyBmaWxlTmFtZTsKLSAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZmlsZURhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7
CiB9OwogICAgIAogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCmluZGV4IGQ2ODA1YTNlZTUzNGMzNjY0ZjI1OTQ5NTkz
ZGZiNWI0OTEzYTU0ZjIuLjc1ODM2Yjg3OTE0M2I2MGE3ZjM1MTk3MDMyMDdiNmFkM2Q4ZDRmODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKQEAgLTc2LDcgKzc2LDcg
QEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcoaW50IGxvYWRJbmRleCwg
Y29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKIAogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZp
bGVOYW1lID0gZmlsZU5hbWU7Ci0gICAgZmlsZS5maWxlRGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZm
ZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgIGZpbGUuZmlsZURh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAg
IG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChXVEZNb3ZlKGZpbGUpKTsKICAgICBtX2ZpbGVzUmVh
ZFNvRmFyKys7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29k
aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCmluZGV4IDNkODBk
N2ExZDQyNDU4NTIwYmQ1NDM4ZWYzNmQ4YTU3Y2I1ZDRlN2UuLjc5YTIzNTM1NWYxZThlZjg2MTUz
NTJlNjM5YzhjNjMxOGY0MDM3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0tleWVkQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2Rpbmcu
aApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEtleWVkRGVj
b2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNjAsNyArMTYwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBrZXks
IGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51bShjb25zdCBTdHJpbmcmIGtleSwgVCB2YWx1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCmluZGV4IGUzODA2
ZTg3ZGY3OWEzZDliNWNhZTEyMTRkZTY2YWEyYTY1ODQ3ZGIuLmZjNjZjMzY1YTJmMjlhNGM3OGU2
MDYxOWU0N2E3MWM3MjU4ZDhmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L05vd1BsYXlpbmdNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxh
eWluZ01hbmFnZXIuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9u
YWw8Tm93UGxheWluZ0luZm8+IG1fbm93UGxheWluZ0luZm87CiAgICAgc3RydWN0IEFydHdvcmtD
YWNoZSB7CiAgICAgICAgIFN0cmluZyBzcmM7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGltYWdlRGF0YTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdl
RGF0YTsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8QXJ0d29ya0NhY2hlPiBtX25vd1BsYXlp
bmdJbmZvQXJ0d29yazsKICAgICBib29sIG1fc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24geyBm
YWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCAxNTczMWVi
MjNmYTc2OTQ5NjBkZDgwNDk2ZmE4ZjJmOWU4Yzc3ODBmLi4wN2VkNDhlNTg4NGVjZWVkYzYxZmQ5
M2U2YjIyMTcxYmU4ODU4OWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNw
cApAQCAtODksNyArODksNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHR5cGUpCiB7CiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpKQogICAgICAgICByZXR1cm4gc3RyYXRlZ3ktPnJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChpbmRleCwgdHlwZSwgbmFtZSgpLCBjb250ZXh0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDExNDU0NjI3ZTBjZGNjYTEzZDczOTM0YWEw
NDM2ZWU3Zjc5NDkzYWUuLjM1NzYzZWUxMmEzOTBlZmM4NDUyYzM1ODA2YjUxMmJlNDI5YWQ5NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDEzICs2MSwxMyBAQCB0
eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERv
Y3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBG
cmFtZTsKIGNsYXNzIFBhc3RlYm9hcmRTdHJhdGVneTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBTaW1wbGVSYW5nZTsKIApAQCAt
ODMsMTQgKzgzLDE0IEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudCB7CiAgICAgV0VCQ09S
RV9FWFBPUlQgflBhc3RlYm9hcmRXZWJDb250ZW50KCk7CiAgICAgU3RyaW5nIGNvbnRlbnRPcmln
aW47CiAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZG
b3JtYXQ7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zv
cm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluU3Ry
aW5nRm9ybWF0OwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RL
KQogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwpAQCAtMTIwLDE3ICsxMjAsMTcgQEAgc3RydWN0
IFBhc3RlYm9hcmRJbWFnZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRJbWFnZSgp
OwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CiAgICAgU3RyaW5nIGRh
dGFJbkhUTUxGb3JtYXQ7CiAjZW5kaWYKICNpZiAhUExBVEZPUk0oV0lOKQogICAgIFBhc3RlYm9h
cmRVUkwgdXJsOwogI2VuZGlmCiAjaWYgIShQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikp
Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CiAgICAgU3RyaW5nIHJlc291cmNlTUlN
RVR5cGU7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICBTdHJpbmcgc3VnZ2VzdGVk
TmFtZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplOwpAQCAtMTQ4LDE2ICsxNDgsMTYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCByZWFkRmlsZVBhdGgoY29uc3QgU3RyaW5nJiwgUHJlc2Vu
dGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlID0geyB9KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRGaWxlUGF0aHMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRIVE1MKGNv
bnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZEltYWdlKFJlZjxTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQ
cmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRJbWFnZShS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50
YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgPSAwOwogI2VuZGlm
CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFdlYkFyY2hpdmUo
U2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZm
ZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgPSAwOwot
ICAgIHZpcnR1YWwgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQ
cmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRXZWJBcmNo
aXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRS
VEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRS
VEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZERh
dGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNp
emUgPSB7IH0pID0gMDsKICNlbmRpZgogfTsKIApAQCAtMTcyLDcgKzE3Miw3IEBAIHN0cnVjdCBQ
YXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgdmlydHVhbCB+UGFzdGVib2FyZEZpbGVSZWFkZXIo
KSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcm
KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNob3VsZFJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiAv
KiB0eXBlICovKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRC
dWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJikgPSAwOwogfTsKIAogY2xhc3MgUGFzdGVib2FyZCB7CkBAIC0yOTcsNyArMjk3LDcg
QEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBwYXN0ZWJv
YXJkSXRlbUluZm8oc2l6ZV90IGluZGV4KSBjb25zdDsKIAogICAgIFN0cmluZyByZWFkU3RyaW5n
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBl
KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
cihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgVVJMIHJlYWRVUkwoc2l6
ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKTsKIAogICAgIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CkBAIC0zMjksNyAr
MzI5LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNG
b3JDb2NvYVR5cGUoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0VHlwZXMsIGNvbnN0IFN0cmlu
ZyYgY29jb2FUeXBlKTsKICAgICBTdHJpbmcgcmVhZFN0cmluZ0ZvclBsYXRmb3JtVHlwZShjb25z
dCBTdHJpbmcmKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVj
aygpOwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlw
ZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOworICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CiAj
ZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3Bw
CmluZGV4IDZkY2VjYjZjOTg4MDhmOTVhNGJlNTFkMDBkNmRiODg4NzVmODg5NzguLjdiNGIzZDM2
YWE2ODAzNjExODc5MTMxYjVhMWIyMjZiNTg4ZDM2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTMzLDEzICszMywxMyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8
U2hhcmVkQnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5n
LCBSZWY8U2hhcmVkQnVmZmVyPj4mIG90aGVyKQorc3RhdGljIHN0ZDo6dmFyaWFudDxTdHJpbmcs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6
OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiBvdGhlcikKIHsK
ICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG90aGVyKSkKICAgICAgICAg
cmV0dXJuIHsgc3RkOjpnZXQ8U3RyaW5nPihvdGhlcikgfTsKIAotICAgIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikpCi0gICAgICAgIHJldHVybiB7
IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikuY29weVJlZigpIH07CisgICAgaWYg
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihvdGhl
cikpCisgICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4ob3RoZXIpLmNvcHlSZWYoKSB9OwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTgwLDcgKzgw
LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGE6OlBhc3RlYm9hcmRDdXN0b21EYXRhKFN0cmluZyYm
IG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYmIGRhdGEKIHsKIH0KIAotUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25z
dAorUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpIGNvbnN0CiB7CiAgICAgY29uc3RleHByIHVuc2lnbmVkIGN1cnJlbnRDdXN0b21EYXRh
U2VyaWFsaXphdGlvblZlcnNpb24gPSAxOwogCkBAIC04OSw3ICs4OSw3IEBAIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVy
KCkgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fb3JpZ2luOwogICAgIGVuY29kZXIgPDwgc2FtZU9y
aWdpbkN1c3RvbVN0cmluZ0RhdGEoKTsKICAgICBlbmNvZGVyIDw8IG9yZGVyZWRUeXBlcygpOwot
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIo
KSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIFBhc3RlYm9h
cmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVy
KFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJiBkZWNvZGVyKQpAQCAtMTI0LDcgKzEyNCw3IEBA
IFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVu
Y2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzdGVi
b2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUGFzdGVib2FyZEN1c3RvbURhdGEg
UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoYnVmZmVyLmRl
Y29kZXIoKSk7CiB9CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQog
ICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZvcm1EYXRhID0geyB2YWx1ZSB9Owog
fQogCi12b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhKQogewogICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZvcm1EYXRh
ID0geyBXVEZNb3ZlKGRhdGEpIH07CiB9CkBAIC0yMDIsMTQgKzIwMiwxNCBAQCBIYXNoTWFwPFN0
cmluZywgU3RyaW5nPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6c2FtZU9yaWdpbkN1c3RvbVN0cmlu
Z0RhdGEoKSBjb25zdAogICAgIHJldHVybiBjdXN0b21EYXRhOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5
cGUpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3Rv
bURhdGE6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGZvciAo
YXV0byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgaWYgKGVudHJ5LnR5cGUgIT0gdHlwZSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpLmNv
cHlSZWYoKTsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRh
KS5jb3B5UmVmKCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMjY1LDEx
ICsyNjUsMTEgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaEN1c3RvbVN0cmlu
ZyhGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwKICAgICB9CiB9CiAKLXZvaWQgUGFz
dGVib2FyZEN1c3RvbURhdGE6OmZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9u
PHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8
U2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAordm9pZCBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAogewogICAgIGZvciAo
YXV0byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgYXV0byYgZGF0YSA9IGVudHJ5LnBsYXRm
b3JtRGF0YTsKLSAgICAgICAgaWYgKChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0
YSkgJiYgIXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkuaXNOdWxsKCkpIHx8IHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAgICBpZiAoKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5p
c051bGwoKSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+KGRhdGEpKQogICAgICAgICAgICAgZnVuY3Rpb24oZW50cnkudHlwZSwgZGF0YSk7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1
c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRh
LmgKaW5kZXggYmZhZmMzZWM2MDc2MDU1YWMxODc4NTRjY2Q4ODc3YzhjNWZiZjAxZC4uOTdmZjk4
NWUyNGUxMWI0YzdiYjQxNDM3MzdmMDI4NDBjMzVmZmNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC0zNCw4ICszNCw4IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBh
c3RlYm9hcmRDdXN0b21EYXRhIHsKIHB1YmxpYzoKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgog
CiAgICAgICAgIFN0cmluZyB0eXBlOwogICAgICAgICBTdHJpbmcgY3VzdG9tRGF0YTsKLSAgICAg
ICAgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+IHBsYXRmb3JtRGF0YTsK
KyAgICAgICAgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PiBwbGF0Zm9ybURhdGE7CiAgICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFBhc3RlYm9hcmRD
dXN0b21EYXRhKCk7CkBAIC02MSwxNiArNjEsMTYgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB2b2lkIHNldE9yaWdp
bihjb25zdCBTdHJpbmcmIG9yaWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsgfQogCi0gICAgV0VC
Q09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZl
cigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNo
YXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNp
c3RlbmNlOjpEZWNvZGVyJiYpOwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoY29uc3QgU3RyaW5n
JiB0eXBlKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYgdHlwZSkgY29uc3Q7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKICAgICBTdHJpbmcgcmVhZFN0
cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwogCiAgICAgdm9pZCB3
cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAg
IHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKTsKKyAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdJbkN1c3RvbURh
dGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogICAgIHZvaWQg
Y2xlYXIoKTsKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBmb3JFYWNoVHlw
ZShGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBjb25zdDsKICAgICB2b2lkIGZvckVh
Y2hQbGF0Zm9ybVN0cmluZyhGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBkYXRhKT4mJikgY29uc3Q7Ci0gICAgdm9pZCBmb3JFYWNoUGxhdGZvcm1TdHJpbmdP
ckJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qgc3RkOjp2YXJp
YW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKT4mJikgY29uc3Q7CisgICAgdm9p
ZCBmb3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiYgZGF0YSk+JiYpIGNvbnN0OwogICAgIHZvaWQgZm9yRWFjaEN1c3RvbVN0cmluZyhG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKT4mJikg
Y29uc3Q7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggYTc4OGZiNzMwZWRjMWMzZWZhZGU4NzBh
NDAxMWY4YzRiYmFjMmI0NS4uYzQxZTA4NTI0NDk2YzY3ZjFmMTUwMzhmYmIyNmU5YzI5ZGE2OThj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAg
LTMxLDExICszMSwxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKLWNs
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBQ
YXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2Vs
ZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5m
bzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFs
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBzdHJp
bmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwg
VmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgaW50NjRf
dCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAg
ICB2aXJ0dWFsIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoU2hhcmVk
QnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBp
bnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRVUkwoY29u
c3QgUGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRDb2xvcihjb25z
dCBDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtNzIsNyArNzIs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2Fk
aW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOwogI2VuZGlmCiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0
cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
ID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2Fy
ZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxQYXN0
ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KSA9IDA7CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJp
bmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFs
IFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zyb21DbGlw
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0g
MDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBTZWxlY3Rpb25EYXRhJiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogI2Vu
ZGlmIC8vIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oCmluZGV4IGI0NWNlMWY5MzhjYmE1MDY2MzhiNmE0MTIxZDc2NzM2M2Y4
YmU1MjIuLjhlMmM4ZmI5MmQ5NzJmZDQyMTYwMDdiYzg3Nzc1MmNmZDM0OGY4NGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaApAQCAtMzAsNyAr
MzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRXcml0ZXJEYXRh
IGZpbmFsIHsKIHB1YmxpYzoKQEAgLTUxLDE0ICs1MSwxNCBAQCBwdWJsaWM6CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogICAgICAgICBib29sIGNh
blNtYXJ0Q29weU9yRGVsZXRlOwotICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0
dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0Owog
ICAgICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgICAgICBWZWN0b3I8U3RyaW5n
PiBjbGllbnRUeXBlczsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBj
bGllbnREYXRhOwogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaAppbmRleCAzZjQ4MzJhNWE2NThjMWNjN2MwYWExM2Iy
NmUwZWE0NzMzZTlkM2I3Li45ZTcyZTQ0YTJlYWM0ZDhlZjczMGI5ODcxZDBlYzUwOGVkOWZhYzQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIu
aApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1Db250ZW50RmlsdGVyIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBy
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSA9IDA7Ci0gICAgdmlydHVhbCBSZWY8
U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3QgPSAwOwog
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICB2aXJ0dWFsIENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0ID0gMDsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCBiYTY4MWZlMDU1
MDQ3NmNhYjhiM2Y2ZjBiY2E1NDM2NGFmYzIwZGVhLi43MWRmYjkzZTU3NTYwZTMzYTdmNmM4MGMy
MGY5MmQ1YjJjYWVjMTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBh
c3RlYm9hcmQuaApAQCAtNDcsMTQgKzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVib2FyZDsKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7
CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQ
YXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJv
YXJkV2ViQ29udGVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC03Miw3
ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5
cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwg
SW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRlSW1hZ2VUeXBlczo6Tm8pOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwotICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJp
bmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0
cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwpAQCAtODYs
NyArODYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHdpbGwgcmV0dXJuIDAg
aWYgcGFzdGVib2FyZCBvd25lcnNoaXAgaGFzIGJlZW4gdGFrZW4gZnJvbSB1cy4KICAgICBXRUJD
T1JFX0VYUE9SVCBpbnQ2NF90IGNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIGludDY0
X3Qgc2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRVUkwoY29u
c3QgUGFzdGVib2FyZFVSTCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0Q29sb3Io
Y29uc3QgQ29sb3ImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldFN0cmluZ0ZvclR5
cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CkBAIC05NCw3
ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBh
c3RlYm9hcmRJbWFnZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJlYWRTdHJp
bmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBjb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAppbmRleCA0YmVhNGYxOGU0Yzc5
ZGViNTc0NGYyODBlOWY4ZjliYzE4M2M2ZjNiLi42MzFhZGU3Y2NmN2FkMjk2OTNhMmU3NjUxZmU2
YTljZGViZDM3NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVy
dGVyLmNwcApAQCAtNjMsNyArNjMsNyBAQCBjb25zdCBSZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29u
dmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25zdAogICAgIHJldHVybiBtX3ByZXZpZXdFcnJvcjsK
IH0KIAotY29uc3QgU2hhcmVkQnVmZmVyJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgp
IGNvbnN0Citjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBQcmV2aWV3Q29udmVydGVyOjpw
cmV2aWV3RGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICptX3ByZXZpZXdEYXRhLT5nZXQoKTsK
IH0KQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWluUmVz
b3VyY2UoKQogICAgIH0pOwogfQogCi12b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmFwcGVuZEZyb21C
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6
OmFwcGVuZEZyb21CdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIHdoaWxlIChidWZmZXIuc2l6ZSgpID4gbV9sZW5ndGhBcHBlbmRlZCkgewogICAgICAg
ICBhdXRvIG5ld0RhdGEgPSBidWZmZXIuZ2V0U29tZURhdGEobV9sZW5ndGhBcHBlbmRlZCk7CkBA
IC0yMzksNyArMjM5LDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQ
cmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0
ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKCp0aGlzKTsKIH0KIAotdm9pZCBQcmV2aWV3Q29udmVydGVy
OjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQg
UHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyB7IFJlZiB7ICp0
aGlzIH0gfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0Nv
bnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCmlu
ZGV4IDA2Yjc2ZjU5ODUxODJiOTczZTYzZjM5NTkzOTRlYTlkMzQ5YWI3MmEuLjkyMDJlZGRkOWUx
MDViMjczNWVkYzE0NmYyNjY0YzEzY2I5YzM0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3OwogY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIHN0cnVjdCBQcmV2
aWV3Q29udmVydGVyQ2xpZW50OwpAQCAtNTEsNyArNTEsNyBAQCBzdHJ1Y3QgUHJldmlld0NvbnZl
cnRlclByb3ZpZGVyOwogc3RydWN0IFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlIDogQ2FuTWFrZVdl
YWtQdHI8UHJldmlld1BsYXRmb3JtRGVsZWdhdGU+IHsKICAgICB2aXJ0dWFsIH5QcmV2aWV3UGxh
dGZvcm1EZWxlZ2F0ZSgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURp
ZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZEZpbmlzaExvYWRpbmcoKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkRmFpbFdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9y
JikgPSAwOwogfTsKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBwcmV2aWV3RmlsZU5hbWUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgcHJldmlld1VUSSgpIGNvbnN0OwogICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIHByZXZpZXdF
cnJvcigpIGNvbnN0OwotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcHJldmlld0RhdGEoKSBjb25z
dDsKKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBwcmV2aWV3RGF0YSgpIGNvbnN0
OwogCiAgICAgdm9pZCBmYWlsZWRVcGRhdGluZygpOwogICAgIHZvaWQgZmluaXNoVXBkYXRpbmco
KTsKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzUGxhdGZvcm1QYXNzd29y
ZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHZvaWQgaXRlcmF0ZUNsaWVudHMoVCYmIGNhbGxiYWNrKTsKLSAgICB2b2lkIGFwcGVu
ZEZyb21CdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBhcHBlbmRGcm9tQnVm
ZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZEFkZENsaWVu
dChQcmV2aWV3Q29udmVydGVyQ2xpZW50Jik7CiAgICAgdm9pZCBkaWRGYWlsQ29udmVydGluZ1dp
dGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRGYWlsVXBkYXRpbmco
KTsKQEAgLTEwOCw3ICsxMDgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1VbmxvY2tX
aXRoUGFzc3dvcmQoY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBQcmV2aWV3UGxhdGZvcm1EZWxl
Z2F0ZQotICAgIHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
KSBmaW5hbDsKKyAgICB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZGVsZWdhdGVEaWRGaW5pc2hMb2FkaW5n
KCkgZmluYWw7CiAgICAgdm9pZCBkZWxlZ2F0ZURpZEZhaWxXaXRoRXJyb3IoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmV2aWV3Q29udmVydGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyQ2xpZW50LmgKaW5kZXggMDRlYTM2ODA2OTJiMjUyYTE5ODljMjZjYTIwNDIxMjc3
N2FhM2I3Yi4uOWNlZTkzMzIwYjIzOGI0Y2Q3M2NkZDJlMDMwMmMzYmY0ZGFkNjhiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaApAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFByZXZpZXdDb252ZXJ0
ZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQgOiBD
YW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVyQ2xpZW50PiB7CiAgICAgdmlydHVhbCB+UHJl
dmlld0NvbnZlcnRlckNsaWVudCgpID0gZGVmYXVsdDsKQEAgLTQyLDcgKzQyLDcgQEAgc3RydWN0
IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVy
Q2xpZW50PiB7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hVcGRh
dGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29u
dmVydGVyRGlkRmFpbFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRl
ciYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRh
KFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBTaGFyZWRCdWZmZXImIG5ld0RhdGEpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252
ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBuZXdEYXRhKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKFByZXZpZXdD
b252ZXJ0ZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWls
Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgKaW5kZXggODI3ODYzOTNm
Y2VkNzU0Yzg1ZjdiMjg5MTI1MmY1MTZiZWQwZDU0OS4uYjk4NmVlNDBkMTk3NTE3NGY1NGFkMjlh
MTY4Y2FkZjE4OTQ1NmMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlclByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlclByb3ZpZGVyLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciA6IENhbk1ha2VXZWFrUHRyPFBy
ZXZpZXdDb252ZXJ0ZXJQcm92aWRlcj4gewogICAgIHZpcnR1YWwgflByZXZpZXdDb252ZXJ0ZXJQ
cm92aWRlcigpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCBwcm92aWRlTWFpblJlc291
cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBw
cm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRl
cihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcm
KT4mJikgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJv
bWlzZWRBdHRhY2htZW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRB
dHRhY2htZW50SW5mby5oCmluZGV4IGExY2M3Njk1YzBhNjNlZDc4N2UyMTBhN2M4Mjc3NzY3ZGNj
ZTcxYWYuLjFlMTJiOTU1NTgwMjkyYzAzYTU3OGVmM2Y3OGIxNTdlZDVmZWMzMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKQEAgLTMw
LDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2ht
ZW50SW5mbyB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTM4LDcgKzM4LDcg
QEAgc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogI2VuZGlmCiAKICAgICBWZWN0b3I8
U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+PiBhZGRpdGlvbmFsRGF0YTsKIAogICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDVlMjVhZTNlNDgx
MTZhZjQ4NDM5YzNmZjIzOGVlYmQ0MDVlNWFjOGYuLjM3ZTQ1MzY3Mzg5NTE1MTMxNWIxMjcyNWNj
ZGU4ZGEzZjFkNjNjMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cApAQCAtMzcsNTIgKzM3LDUyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCitGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIGFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAotU2hh
cmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCitG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKQogewogICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCitGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
JiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewogICAgIG1fc2Vn
bWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkg
fSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRl
ciYmIHByb3ZpZGVyKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKICAgICA6IG1fc2l6ZShwcm92
aWRlci5zaXplKCkpCiB7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6
Y3JlYXRlKFdURk1vdmUocHJvdmlkZXIpKSB9KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRC
dWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKICAgICBhcHBl
bmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAg
ICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKICNpZiBVU0UoR1NUUkVBTUVSKQotUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXIm
IG1hcHBlZEJ1ZmZlcikKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIobWFwcGVkQnVmZmVyKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihtYXBwZWRCdWZm
ZXIpKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZm
ZXImIG1hcHBlZEJ1ZmZlcikKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKICAgICA6IG1fc2l6
ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKSB9KTsKIH0KICNlbmRpZgogCi1zdGF0aWMg
VmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQorc3RhdGljIFZlY3Rvcjx1
aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6ZV90IHNpemUpCiB7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKICAgICBjb21iaW5lZERhdGEucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShzaXplKTsKQEAgLTkyLDE5ICs5MiwxOSBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+
IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rv
cgogICAgIHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLVJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzKCkgY29uc3QKK1JlZjxTaGFyZWRCdWZm
ZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzKCkgY29uc3QKIHsKICAg
ICBpZiAobV9jb250aWd1b3VzKQotICAgICAgICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0PENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSB9
OworICAgICAgICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0
X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSB9OwogICAgIGlmICghbV9zZWdt
ZW50cy5zaXplKCkpCi0gICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgaWYgKG1f
c2VnbWVudHMuc2l6ZSgpID09IDEpCi0gICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUobV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CisgICAgICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigp
KTsKICAgICBhdXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50
cywgbV9zaXplKTsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoY29tYmluZWREYXRhKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoY29tYmluZWREYXRhKSk7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6
OmNvcHlEYXRhKCkgY29uc3QKK1ZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Ojpjb3B5RGF0YSgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0
YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUoKSk7CkBAIC0xMTQsNyArMTE0LDcgQEAgVmVj
dG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdAogICAgIHJldHVybiBk
YXRhOwogfQogCi1WZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCitWZWN0
b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKQogewogICAgIGlm
IChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTEyOSwxMyAr
MTI5LDEzIEBAIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkKICAgICBy
ZXR1cm4gY29tYmluZWREYXRhOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRCdWZm
ZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKK1NoYXJlZEJ1ZmZlckRhdGFW
aWV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikg
Y29uc3QKIHsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBlbGVtZW50ID0gZ2V0
U2VnbWVudEZvclBvc2l0aW9uKHBvc2l0aW9uKTsKICAgICByZXR1cm4geyBlbGVtZW50LT5zZWdt
ZW50LmNvcHlSZWYoKSwgcG9zaXRpb24gLSBlbGVtZW50LT5iZWdpblBvc2l0aW9uIH07CiB9CiAK
LWNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogU2hhcmVkQnVmZmVy
OjpnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aW9uKSBjb25zdAorY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGlvbikgY29uc3QK
IHsKICAgICBSRUxFQVNFX0FTU0VSVChwb3NpdGlvbiA8IG1fc2l6ZSk7CiAgICAgYXV0byBjb21w
YXJhdG9yID0gW10oY29uc3Qgc2l6ZV90JiBwb3NpdGlvbiwgY29uc3QgRGF0YVNlZ21lbnRWZWN0
b3JFbnRyeSYgZW50cnkpIHsKQEAgLTE0Niw3ICsxNDYsNyBAQCBjb25zdCBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50VmVjdG9yRW50cnkqIFNoYXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0
aW9uKAogICAgIHJldHVybiBlbGVtZW50OwogfQogCi1TdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hl
eFN0cmluZygpIGNvbnN0CitTdHJpbmcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJp
bmcoKSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBmb3JF
YWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewpAQCAtMTU2LDIyICsxNTYsMjIgQEAgU3Ry
aW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdC
dWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXI6OnNpemUoKSBjb25z
dAorc2l6ZV90IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnNpemUoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3NpemU7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjppc0VtcHR5KCkgY29uc3QKK2Jv
b2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
ICFzaXplKCk7CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAor
Ym9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppc0NvbnRpZ3VvdXMoKSBjb25zdAogewogICAg
IHJldHVybiBtX2NvbnRpZ3VvdXM7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8QXJyYXlCdWZmZXI+IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIHsKICAg
ICBhdXRvIGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSksIDEpOwogICAgIGlmICghYXJyYXlCdWZmZXIp
IHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKIH0K
IAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2
b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhKQogewogICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBtX3NlZ21l
bnRzLnJlc2VydmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEubV9zZWdtZW50cy5z
aXplKCkpOwpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgp
KTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3QgbGVuZ3RoKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1fY29udGlndW91
cyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lk
IFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgp
CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1
ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCit2b2lkIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewogICAgIEFTU0VSVCgh
bV9jb250aWd1b3VzKTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7CkBAIC0yMjAs
MjEgKzIyMCwyMSBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYm
IGRhdGEpCiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lk
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoKQogewogICAgIGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhKSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyKCkKK3ZvaWQgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogewogICAgIG1fc2l6ZSA9IDA7CiAgICAgbV9z
ZWdtZW50cy5jbGVhcigpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0K
IAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKK1JlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QK
IHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBhZG9wdFJlZigq
bmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOwogICAgIGNsb25lLT5tX3NpemUgPSBtX3NpemU7
CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3NlZ21lbnRz
LnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykKQEAg
LTI0NCwxNCArMjQ0LDE0IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgp
IGNvbnN0CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Zm9yRWFj
aFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+
JiBhcHBseSkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21l
bnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBs
eSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsKICAgICBmb3IgKGF1
dG8mIHNlZ21lbnQgOiBzZWdtZW50cykKICAgICAgICAgYXBwbHkoU3BhbiB7IHNlZ21lbnQuc2Vn
bWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSB9KTsKIH0KIAotYm9vbCBTaGFy
ZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBj
b25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48
Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKIHsKICAgICBpZiAocHJlZml4LmVtcHR5KCkp
CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjczLDcgKzI3Myw3IEBAIGJvb2wgU2hhcmVkQnVm
ZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnJl
YWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKK1ZlY3Rvcjx1aW50OF90PiBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgaWYgKG9mZnNldCA+PSBz
aXplKCkpCkBAIC0zMDAsMTIgKzMwMCwxMiBAQCBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVy
OjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAgICAgcmV0dXJuIGRh
dGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNp
emVfdCBsZW5ndGgpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHlUbyh2
b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIHsKICAgICByZXR1cm4gY29w
eVRvKGRlc3RpbmF0aW9uLCAwLCBsZW5ndGgpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29w
eVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25z
dAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24s
IHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxlbmd0
aCArIG9mZnNldCA8PSBzaXplKCkpOwogICAgIGlmIChvZmZzZXQgPj0gc2l6ZSgpKQpAQCAtMzQz
LDEzICszNDMsMTMgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlv
biwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKICAgICB9CiB9CiAKLWJvb2wg
U2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2VnbWVudHMu
c2l6ZSgpID09IDE7CiB9CiAKICNpZiBBU1NFUlRfRU5BQkxFRAotYm9vbCBTaGFyZWRCdWZmZXI6
OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogewogICAgIHNpemVfdCBwb3NpdGlvbiA9
IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykgewpAQCAtMzYx
LDE5ICszNjEsMTkgQEAgYm9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkg
Y29uc3QKIH0KICNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCi1Db250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KCkKIHsKICAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOwogfQogCi1Db250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQor
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCiB7
CiAgICAgbV9zaXplID0gc2VnbWVudC0+c2l6ZSgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsg
MCwgV1RGTW92ZShzZWdtZW50KSB9KTsKICAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOwogfQogCi1D
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIpCiB7CiAgICAgQVNT
RVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVmZmVy
LT5pc0VtcHR5KCkpOwogICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsKQEAg
LTM4MiwzMSArMzgyLDMxIEBAIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjb250aWd1b3VzQnVmCiAgICAgbV9jb250aWd1
b3VzID0gdHJ1ZTsKIH0KIAotQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCi0gICAgOiBTaGFyZWRC
dWZmZXIoV1RGTW92ZShkYXRhKSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICA6IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIo
V1RGTW92ZShkYXRhKSkKIHsKICAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOwogfQogCi1SZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFw
cGluZykKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVN
b2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykK
IHsKICAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcykg
ewogICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwogICAgICAgICBGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBp
bmdTdWNjZXNzKTsKICAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQotICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmls
ZURhdGEpKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwogICAgIH0KICAgICByZXR1cm4gY3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGZpbGVQYXRoKTsKIH0KIAotY29uc3QgdWludDhfdCogQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Citjb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEo
KSBjb25zdAogewogICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOwogfQog
Ci1jb25zdCBjaGFyKiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyKCkgY29u
c3QKK2NvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0cigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7CiB9CkBAIC00
MzYsMTcgKzQzNiwxNyBAQCBib29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRh
KCkgY29uc3QKIH0KIAogI2lmICFVU0UoQ0YpCi12b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9y
eU5vdE5lZWRlZFNvb24oKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpoaW50
TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB7CiB9CiAjZW5kaWYKIAotV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2RlciBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKK1dU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKIHsK
ICAgICByZXR1cm4ge3sgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwg
c2l6ZSgpIH19OwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFy
ZWRCdWZmZXImIG90aGVyKSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpvcGVy
YXRvcj09KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogewogICAg
IGlmICh0aGlzID09ICZvdGhlcikKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01NDMsMTYgKzU0
MywxNiBAQCBjb25zdCBjaGFyKiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0cigp
IGNvbnN0CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7
CiB9CiAKLVJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6
Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGNvbnN0IFJlZjxE
YXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKLSAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdt
ZW50LCBkYXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCiAgICAgICAgIFtzaXplID0g
c2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitSZWZQdHI8
U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8v
IEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMu
CiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTU3OCw3ICs1
NzgsNyBAQCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBT
dHJpbmcmIHN0cmluZykKICAgICB9CiAKICAgICBidWZmZXIuc2hyaW5rKHAgLSByZWludGVycHJl
dF9jYXN0PGNoYXIqPihidWZmZXIuZGF0YSgpKSk7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGM5NTQ5NjhiOTFhYWZi
ZjA2NzA0ZGY4ZWQyZmE5MDAyZDYwNTRmZDkuLjA1NGM0NmNkM2FjMDE5MjhhNjZkNzI3OTk1ZGIw
MmExZGVkMGU1ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC02
Miw3ICs2Miw3IEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OwogCiAvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBz
aG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIg
b2JqZWN0cy4KQEAgLTEzNCw0NCArMTM0LDQ0IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAgICAg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCiAgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJs
ZURhdGE7Ci0gICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKyAgICBmcmllbmQgY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKICNpZiAhVVNFKEZPVU5EQVRJT04pCi0gICAgZnJpZW5k
IGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKKyAgICBm
cmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOyAvLyBGb3IgY3JlYXRlQ0ZEYXRhCiAjZW5kaWYKIH07
CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFy
ZWRCdWZmZXI+IHsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcik7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEp
KSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoV1RGTW92ZShidWZmZXIpKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7IH0KLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9CisgICAgc3RhdGlj
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOyB9CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7
IH0KKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsgfQorICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmls
ZURhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZN
b3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsgfQorICAg
IHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90
PiYmIHZlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KFdURk1vdmUodmVjdG9yKSkpOyB9CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9
CiAKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNB
cnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOwogI2Vu
ZGlmCiAjaWYgVVNFKENGKQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCiAKICNpZiBV
U0UoR0xJQikKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwogI2VuZGlmCiAKICNpZiBVU0UoR1NUUkVBTUVS
KQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0
TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlm
CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6
ZV90IGxlbmd0aCkgY29uc3Q7CiAKLSAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2
b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNh
ZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisgICAgLy8gU2ltaWxhciB0byBj
b3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3Rl
YWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hh
cmVkKS4KICAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKIAotICAgIC8vIENyZWF0
ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRz
IHRvIHRoYXQKKyAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAogICAgIC8vIEFycmF5QnVm
ZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIu
CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1
ZmZlcigpIGNvbnN0OwogCkBAIC0xODEsMTQgKzE4MSwxNCBAQCBwdWJsaWM6CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGlzQ29udGlndW91cygpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qg
b2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4
X3Q+Jik+JikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0
IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CiAKLSAgICB1c2luZyBEYXRhU2Vn
bWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGli
aWxpdHkgd2hlbiB1c2luZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CisgICAgdXNpbmcgRGF0
YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVudDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21w
YXRpYmlsaXR5IHdoZW4gdXNpbmcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQK
IAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAgc2l6ZV90IGJl
Z2luUG9zaXRpb247CkBAIC0yMDYsMzggKzIwNiwzOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGhp
bnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBib29s
IG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09
KG90aGVyKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShv
dGhlcik7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBtYWtlQ29udGlndW91cygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRC
dWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICBmcmllbmQg
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVm
ZmVyOwogCiAgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKICAgICBib29sIG1fY29u
dGlndW91cyB7IGZhbHNlIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoKSA9IGRlZmF1bHQ7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiwgc2l6ZV90KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3Qg
Y2hhciosIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKERhdGFT
ZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogI2lmIFVTRShDRikKLSAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAj
ZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoR0J5dGVzKik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihHc3RN
YXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwpA
QCAtMjUwLDcgKzI1MCw3IEBAIHByaXZhdGU6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNs
ZWFyKCk7CiAKLSAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3Ig
YW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4K
KyAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVy
bnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIu
CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgY29u
c3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBw
b3NpdGl0aW9uKSBjb25zdDsKIApAQCAtMjU5LDIwICsyNTksMjAgQEAgcHJpdmF0ZToKICNlbmRp
ZgogfTsKIAotLy8gQSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGlzIGEgU2hhcmVkQnVmZmVyIHRo
YXQgYWxsb3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEoKSBh
bmQgcmVsYXRlZCBtZXRob2RzLgotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlciA6IHB1Ymxp
YyBTaGFyZWRCdWZmZXIgeworLy8gQSBTaGFyZWRCdWZmZXIgaXMgYSBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyIHRoYXQgYWxsb3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhl
IGRhdGEoKSBhbmQgcmVsYXRlZCBtZXRob2RzLgorY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGlj
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgewogcHVibGljOgogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZS4uLiBBcmdzPgotICAgIHN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRl
KEFyZ3MmJi4uLiBhcmdzKQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQXJn
cyYmLi4uIGFyZ3MpCiAgICAgewogICAgICAgICBpZiBjb25zdGV4cHIgKCFzaXplb2YuLi4oQXJn
cykpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKCkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKCkp
OwogICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKICAgICAg
ICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikp
Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwogICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAg
ICAgICAgICBhdXRvIGJ1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOwogICAgICAgICB9CiAgICAgfQogCkBA
IC0yODEsNyArMjgxLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFdURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OwogCiAgICAgZW51bSBjbGFzcyBNYXlVc2VG
aWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVz
ZUZpbGVNYXBwaW5nOjpZZXMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9k
ZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOwog
CiAjaWYgVVNFKEZPVU5EQVRJT04pCiAgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0
YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CkBAIC0yOTQsMjEgKzI5NCwyMSBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVm
ZmVyPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2Vn
bWVudD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7
CiB9OwogCiBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0Owot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgewotICAgICAgICAvLyBXZSBkbyBub3Qgd2Fu
dCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJlZEJ1
ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRh
a2UgYSByZWZlcmVuY2UgdG8gdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYXMgYWxsIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQogICAgICAgICAvLyBvbmNlIGNy
ZWF0ZWQuCiAgICAgICAgIGlmICghYnVmZmVyIHx8IChidWZmZXItPmhhc09uZVJlZigpICYmICFi
dWZmZXItPmlzQ29udGlndW91cygpKSkgewogICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3Zl
KGJ1ZmZlcik7CkBAIC0zMTYsOSArMzE2LDkgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAg
IGFwcGVuZCgqYnVmZmVyKTsKICAgICB9Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRl
cihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJC
dWlsZGVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICB7Ci0gICAg
ICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIFNoYXJlZEJ1
ZmZlciBhcyBhbGwgU2hhcmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAgICAgLy8g
V2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciBhcyBhbGwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxl
CiAgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KICAgICAgICAgaWYgKGJ1ZmZlci0+aGFzT25lUmVm
KCkgJiYgIWJ1ZmZlci0+aXNDb250aWd1b3VzKCkpIHsKICAgICAgICAgICAgIG1fYnVmZmVyID0g
V1RGTW92ZShidWZmZXIpOwpAQCAtMzI4LDcgKzMyOCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihBcmdz
JiYuLi4gYXJncykKLSAgICAgICAgOiBtX2J1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkgeyB9
CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KICAgICB2b2lkIGFwcGVuZChBcmdz
JiYuLi4gYXJncykKQEAgLTM1MCw5ICszNTAsOSBAQCBwdWJsaWM6CiAgICAgICAgIGVuc3VyZUJ1
ZmZlcigpOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiB0YWtlKCkKKyAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8g
bV9idWZmZXItPmNvcHkoKSA6IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9Cisg
ICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHRha2UoKQogICAgIHsKICAgICAgICAgZW5z
dXJlQnVmZmVyKCk7CiAgICAgICAgIHJldHVybiBtX2J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOwpA
QCAtMzYyLDEyICszNjIsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVuc3VyZUJ1ZmZlcigpCiAg
ICAgewogICAgICAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICAgICAgbV9idWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXIgPSBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICB9Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsK
IAotaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKK2lu
bGluZSBWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEo
KQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKICAgICAgICAgcmV0dXJuIHRha2VEYXRhKCk7CkBA
IC0zODEsNyArMzgxLDcgQEAgcHVibGljOgogICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CiAgICAg
Y29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwogICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQ
dHIoKSBjb25zdDsKLSAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVk
QnVmZmVyKCkgY29uc3Q7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVy
KCkgY29uc3Q7CiAjaWYgVVNFKEZPVU5EQVRJT04pCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3Jl
YXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTM5MSw2ICszOTEsNiBAQCBwcml2YXRlOgog
ICAgIGNvbnN0IHNpemVfdCBtX3NpemU7CiB9OwogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IHV0
ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcApp
bmRleCBjZGI2ZTcwMzQwNGQ0MjZkZDIxYjQ3OWZhODljMGRhOWI4YzQ5ZjhlLi45ZDA1NWNlMjdk
ODhjM2Q2MmU1YmQxY2Q0NmFkOTFmNWNjNDMxZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShNSFRNTCkKIAotU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVy
LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcikKK1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
OjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIs
IGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKQogICAgIDogbV9pdGVyYXRvckN1cnJlbnQo
YnVmZmVyLT5iZWdpbigpKQogICAgICwgbV9pdGVyYXRvckVuZChidWZmZXItPmVuZCgpKQogICAg
ICwgbV9zZWdtZW50KG1faXRlcmF0b3JDdXJyZW50ICE9IG1faXRlcmF0b3JFbmQgPyBtX2l0ZXJh
dG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0YSgpIDogbnVsbHB0cikKQEAgLTQ0LDcgKzQ0LDcgQEAg
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1
ZmZlciogYnVmZmVyLCBjb25zdCBWZWMKIHsKIH0KIAotU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6
OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBjaGFy
KiBzZXBhcmF0b3IpCitTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0
b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVudChidWZmZXItPmJlZ2luKCkpCiAgICAgLCBtX2l0
ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAgLCBtX3NlZ21lbnQobV9pdGVyYXRvckN1cnJl
bnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRlcmF0b3JDdXJyZW50LT5zZWdtZW50LT5kYXRhKCkg
OiBudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyLmgKaW5kZXggNWQ0ZTZmZWU1ODJjNjYxNmZkMDdlMzk5NGZmNzVjOGYwN2EyZmNl
MS4uMWM2NDA4ZDRjNzM2YTFjNGE0NWNlZTdiM2Y2OTY1N2JjOWEyNjE1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oCkBAIC00MSw4
ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKTsKLSAgICBT
aGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqLCBjb25zdCBjaGFyKiBzZXBhcmF0
b3IpOworICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcik7CisgICAgU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IGNoYXIqIHNlcGFyYXRvcik7CiAK
ICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBWZWN0b3I8Y2hhcj4mKTsKICAgICB2b2lkIHNl
dFNlcGFyYXRvcihjb25zdCBjaGFyKik7CkBAIC01OCw4ICs1OCw4IEBAIHB1YmxpYzoKICAgICBz
aXplX3QgcGVlayhWZWN0b3I8dWludDhfdD4mLCBzaXplX3QpOwogCiBwcml2YXRlOgotICAgIFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JD
dXJyZW50OwotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0
X2l0ZXJhdG9yIG1faXRlcmF0b3JFbmQ7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JDdXJyZW50OworICAgIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVy
YXRvciBtX2l0ZXJhdG9yRW5kOwogICAgIGNvbnN0IHVpbnQ4X3QqIG1fc2VnbWVudCB7IG51bGxw
dHIgfTsKICAgICBzaXplX3QgbV9zZWdtZW50SW5kZXggeyAwIH07CiAgICAgVmVjdG9yPGNoYXI+
IG1fc2VwYXJhdG9yIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGlj
UGFzdGVib2FyZC5jcHAKaW5kZXggYjJkN2E1NTBkNDYwZTk0Y2QzMTUxMzRhMzE5NWJjZDkxYzdi
Nzg5NC4uYTRiNGJiMTA0YjRkODQwMTViOGFhNWI1M2U3ZGZhNzg4Y2VkMjVmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKQEAgLTczLDcgKzczLDcg
QEAgdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9jdXN0b21EYXRhLndyaXRlU3RyaW5nKHR5cGUs
IHZhbHVlKTsKIH0KIAotdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZURhdGEoY29uc3QgU3Ry
aW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFN0YXRpY1Bhc3RlYm9h
cmQ6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGRhdGEpCiB7CiAgICAgbV9ub25EZWZhdWx0RGF0YVR5cGVzLmFkZCh0eXBlKTsKICAg
ICBtX2N1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIFdURk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCmluZGV4IGMwOWI2ZGUzMWYyZWRlYmUw
MTg4ZGM5YzQ2NmEyNzFlMWI4YjllMTQuLmVkZDcxMzYyM2YwNmQyMmIzOGU4MzJhMjgzN2ZlNjY5
OTlkZmQ3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3Rl
Ym9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgK
QEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBTdGF0aWNQYXN0
ZWJvYXJkIGZpbmFsIDogcHVibGljIFBhc3RlYm9hcmQgewogcHVibGljOgpAQCAtNTIsNyArNTIs
NyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3Ry
aW5nJiB0eXBlKSBmaW5hbDsKIAogICAgIHZvaWQgd3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpIGZpbmFsOwotICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0
IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICB2b2lkIHdyaXRl
RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRh
dGEpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHZvaWQgY2xlYXIoKSBmaW5hbDsKICAgICB2b2lk
IGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaAppbmRleCA2ODc5NTkwMGM1YWRmOWNjOTA0NWUw
ZWFiYjIyYjE4ZmE2Njk2MzE0Li4xZDY1YmM0MDNhZDg1MjQzYzY3MjVlNzA0NDhkNmNkYWRjY2Nj
ZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5n
SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZv
LmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IE5vd1BsYXlp
bmdJbmZvQXJ0d29yayB7CiAgICAgU3RyaW5nIHNyYzsKICAgICBTdHJpbmcgbWltZVR5cGU7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm93
UGxheWluZ0luZm9BcnR3b3JrJiBvdGhlcikgY29uc3QKICAgICB7CkBAIC02Nyw3ICs2Nyw3IEBA
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJ
bmZvQXJ0d29yaz4gTm93UGxheWluZ0luCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtaW1lVHlw
ZSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFn
ZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGltYWdlRGF0YSkpCiAgICAgICAgIHJldHVybiB7IH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmls
ZVJlYWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRmlsZVJlYWRlckNvY29hLmNwcAppbmRleCBlOGIxOWJmMzRlYmEyM2I4NTcyMDdiZTg4Y2Ux
YjQ1YmY4ZjJjY2MzLi5mMzIxNDI5NTFiMTc5OTZlNmNlMTY3NTYzMTZiZmQ0NzNmYWE0ZWRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVS
ZWFkZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
QXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgY2xhc3MgQXVkaW9G
aWxlUmVhZGVyV2ViTURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBwdWJs
aWM6Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAgICAgUmVm
PEF1ZGlvVHJhY2tQcml2YXRlV2ViTT4gbV90cmFjazsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDliM2VjYTFhMTU0NDk4YzBl
N2UzNGM3YzkxMzM2OTVjY2Q5NDdlN2IuLjQ0NzNlYzI4ZDA0YzU0MzYzMjNjMDdkMzdiZjJjOWNk
N2RlZDIxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5j
b2RlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5jcHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyQ0Y6OmVuZEFycmF5
KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxT
aGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgYXV0
byBkYXRhID0gYWRvcHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgbV9yb290RGljdGlvbmFyeS5nZXQoKSwga0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0
X3YxXzAsIDAsIG51bGxwdHIpKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQo
KSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9LZXllZEVuY29kZXJDRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRF
bmNvZGVyQ0YuaAppbmRleCBmYWI2NmZjYmNhOGY0NzE5N2U5OGQ3OWJmMDJlZjgxNjFhNDI3NmE0
Li5mNTg2YzAyYmIxNWJmMzliNzI4M2ZiYTlhYTVlOGExMjZiODRmZWZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVi
bGljOgogICAgIH5LZXllZEVuY29kZXJDRigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAK
ICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwg
c2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJv
b2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVk
QnVmZmVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0Yu
Y3BwCmluZGV4IGI5Yjg4MjBhNjkwYzljNjY0NTFhMWY1MjVmNDE4MzljODYyYzFiMTcuLjgxOWUy
NmZhNGNmMDY3OTU3YTU5ZmVmMjljOTlmMDNmNWY0NDkxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYg
ZGF0YSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoQ0ZE
YXRhUmVmIGRhdGEpCiB7CiAgICAgYXBwZW5kKGRhdGEpOwogfQpAQCAtNDEsNyArNDEsNyBAQCBT
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIC8vIFVzaW5nIEZvdW5k
YXRpb24gYWxsb3dzIGZvciBhbiBldmVuIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIG9m
IHRoaXMgZnVuY3Rpb24sCiAvLyBzbyBvbmx5IHVzZSB0aGlzIHZlcnNpb24gZm9yIG5vbi1Gb3Vu
ZGF0aW9uLgogI2lmICFVU0UoRk9VTkRBVElPTikKLVJldGFpblB0cjxDRkRhdGFSZWY+IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKGhhc09u
ZVNlZ21lbnQoKSkgewogICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lmPFJldGFp
blB0cjxDRkRhdGFSZWY+PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEp
KQpAQCAtNTEsMTIgKzUxLDEyIEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB9CiAjZW5kaWYKIAotUmVmPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhUmVmIGRhdGEpCitSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YVJlZiBk
YXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihkYXRhKSk7CiB9
CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0Cit2
b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29u
c3QKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogbV9zZWdtZW50cykgewogICAgICAg
ICBpZiAoZW50cnkuc2VnbWVudC0+aGFzT25lUmVmKCkpIHsKQEAgLTY2LDcgKzY2LDcgQEAgdm9p
ZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKICAgICB9CiB9
CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCit2b2lkIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKIHsKICAgICBpZiAoZGF0
YSkgewogICAgICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKGRhdGEpfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9O
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaAppbmRleCAwNzk3ZGZiZThkMDE4
YmU2MzYxNzQ0YzU4Zjg5MmRkNTZlZDY4OWM1Li5jYmU4NzcxYTQ1ZDg2MmNiNWFiMDVlY2EzOTk5
MjdlMDc4MzhmNTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9O
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKQEAgLTUxLDcgKzUxLDcg
QEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJp
ZGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFu
ZGxlcigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wg
aXNSZXF1aXJlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQppbmRleCA0MjkwZGIxMjhk
MDAwYTQwZWVmNzBmZDI5NDFkNjM0NDkwNDZkZTAzLi4yZWYyNzAxZmU2NzhiZjliOTJkYjIxMmJi
ZWE1YzkxNWEzZmMzYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQpAQCAtMTc1LDcg
KzE3NSw3IEBAIHZvaWQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmZpbmlzaGVkQWRk
aW5nRGF0YSgpCiAgICAgc2VtYXBob3JlLndhaXQoKTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4g
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgpIGNvbnN0CitS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6
OnJlcGxhY2VtZW50RGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRpZEJsb2NrRGF0YSgpKTsK
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9yZXBsYWNlbWVudERhdGEuZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250
cm9sc0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVu
dGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKaW5kZXggMDY4Y2RjYjM4M2Y0MjM2NWFjMzI2NGUy
MjlhNmQ2M2JjMmI0YWJkNi4uNjc5YWU5MzI5NTE3ZTFmMzk0M2JhNTc2MmFjOGY1NmU4NjBjOGMy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250
cm9sc0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Q
YXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJy
aWRlOwogICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBv
dmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwotICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlk
ZTsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250
cm9sc0NvbnRlbnRGaWx0ZXIubW0KaW5kZXggYjQ2MWY5NzUzNmRlM2ExNTgxM2E1ODI3Yjg2NzEz
OGI5NmQ0ZjM4Yy4uMWM5NjA0NzE2YjQyNjkzZDVlNDZjMmUyM2U5NDFkYTAwYzgzZTRkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0Nv
bnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50
YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFBhcmVu
dGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQogICAgIHVwZGF0
ZUZpbHRlclN0YXRlKCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFBhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEo
KSBjb25zdAogewogICAgIEFTU0VSVChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVwbGFjZW1lbnREYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCA2ZjUwZjAzNWFk
ZmVhYTlkYmFkYjAyYWNhZDhmMDY3Yzc4M2ZjYmU1Li5iODE3MDgxN2NlYzU5ZTIyZDNjMGU5YTc4
ZjE0NmMwMzNlNGMxNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UGFzdGVib2FyZENvY29hLm1tCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBOU0JpdG1hcEltYWdl
RmlsZVR5cGUgYml0bWFwUE5HRmlsZVR5cGUoKQogfQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
IAotLy8gTWFraW5nIHRoaXMgbm9uLWlubGluZSBzbyB0aGF0IFdlYktpdCAyJ3MgZGVjb2Rpbmcg
ZG9lc24ndCBoYXZlIHRvIGluY2x1ZGUgU2hhcmVkQnVmZmVyLmguCisvLyBNYWtpbmcgdGhpcyBu
b24taW5saW5lIHNvIHRoYXQgV2ViS2l0IDIncyBkZWNvZGluZyBkb2Vzbid0IGhhdmUgdG8gaW5j
bHVkZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLmguCiBQYXN0ZWJvYXJkV2ViQ29udGVudDo6UGFz
dGVib2FyZFdlYkNvbnRlbnQoKSA9IGRlZmF1bHQ7CiBQYXN0ZWJvYXJkV2ViQ29udGVudDo6flBh
c3RlYm9hcmRXZWJDb250ZW50KCkgPSBkZWZhdWx0OwogCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBW
ZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkK
IH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLXN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCitzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiB0
aWZmQnVmZmVyKQogewogICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJl
cCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2Vu
dGF0aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKLSAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOworICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKIH0KICNlbmRpZgogCkBAIC0zMTYs
NyArMzE2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3Vy
aXR5Q2hlY2soKQogICAgIHJldHVybiBjb2NvYVR5cGVzOwogfQogCi1SZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlD
aGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkK
IHsKICAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3Ry
YXRlZ3koKS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZm
ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNv
Y29hLm1tCmluZGV4IDk4MDU0N2I4Y2M0YzRhODhjYTE1NWNiYjE3ODIwYWY4NWUyZGM5NjkuLjI1
ZjMxMWYyNTg5YjgyZWZkMjU3N2EwODg5NGI2YzVlMDY2YjkyNzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC04OCwzNyAr
ODgsMzcgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkKK1JlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoTlNEYXRhICpkYXRhKQogewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihicmlkZ2VfY2FzdChkYXRhKSkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoYnJpZGdl
X2Nhc3QoZGF0YSkpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRh
dGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEpCiB7
CiAgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIHJldHVybiBhcHBlbmQoYnJpZGdlX2Nh
c3QoZGF0YSkpOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpj
cmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBicmlkZ2VfY2FzdChjcmVhdGVDRkRh
dGEoKSk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKICAg
ICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsK
ICAgICByZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdtZW50c1swXS5zZWdtZW50LT5jcmVhdGVOU0Rh
dGEoKSk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkK
K1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGF1dG8gcmVzb3VyY2VEYXRhID0g
W05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOmZpbGVQYXRoXSkKLSAgICAgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOworICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotUmV0YWluUHRyPE5TQXJyYXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRh
QXJyYXkoKSBjb25zdAorUmV0YWluUHRyPE5TQXJyYXk+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKIHsKICAgICByZXR1cm4gY3JlYXRlTlNBcnJheSht
X3NlZ21lbnRzLCBbXSAoYXV0byYgc2VnbWVudCkgewogICAgICAgICByZXR1cm4gc2VnbWVudC5z
ZWdtZW50LT5jcmVhdGVOU0RhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCmluZGV4IGZiYzI4M2ZiYzMzNjliZjgyN2Uz
MTY5OTRjNGM5NGUwNjM2M2NiODEuLjJkZTQxOTM0ZGExOTg3OWQ3NWMwZGY4YTg5ZTY0ZTU5OWMy
OWFlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETUluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNSW5zdGFuY2UuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBMb2dnZXI7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvbjsKIHN0cnVjdCBDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uOwogCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIENETUluc3RhbmNlQ2xp
ZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50PiB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+Q0RNSW5zdGFuY2VDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJp
bmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVucmVxdWVz
dGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIC8vIEphdmFTY3JpcHQncyBoYW5kbGUgdG8g
YSBDRE1JbnN0YW5jZSwgbXVzdCBiZSB1c2VkIGZyb20gdGhlCkBAIC05OCw3ICs5OCw3IEBAIHB1
YmxpYzoKICAgICB9OwogCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJh
dGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JikgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNSW5zdGFuY2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaAppbmRleCAzN2NkMDdjN2JmMmRjNzVlNDFmZDVjNmM3
ZGVjZjQzZTEwMzllMTE0Li5kMjU5MjI1YmE5ZTAyYTY0ZDBjZWNkNjE1MWZkZjkzZjRmMjQ2NmE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1J
bnN0YW5jZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaApAQCAtNDMsMTYgKzQzLDE2IEBAIGNsYXNzIExvZ2dl
cjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQg
OiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50KCkgPSBkZWZhdWx0Owog
CiAgICAgdXNpbmcgS2V5U3RhdHVzID0gQ0RNS2V5U3RhdHVzOwotICAgIHVzaW5nIEtleVN0YXR1
c1ZlY3RvciA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIEtleVN0YXR1cz4+
OworICAgIHVzaW5nIEtleVN0YXR1c1ZlY3RvciA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+LCBLZXlTdGF0dXM+PjsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
S2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2Vu
ZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXNz
aW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB1c2luZyBQbGF0Zm9ybURpc3Bs
YXlJRCA9IHVpbnQzMl90OwogICAgIHZpcnR1YWwgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlE
KCkgPSAwOwpAQCAtNzgsMTMgKzc4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgU3VjY2VlZGVkLAog
ICAgIH07CiAKLSAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgU3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+Owot
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNl
Q2FsbGJhY2smJikgPSAwOworICAgIHVzaW5nIExpY2Vuc2VDYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgU3VjY2Vzc1Zh
bHVlIHN1Y2NlZWRlZCk+OworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpID0gMDsKIAogICAgIHVzaW5n
IEtleVN0YXR1c1ZlY3RvciA9IENETUluc3RhbmNlU2Vzc2lvbkNsaWVudDo6S2V5U3RhdHVzVmVj
dG9yOwotICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjpwYWlyPE1lc3NhZ2VUeXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAgIHVzaW5nIExpY2Vuc2VVcGRhdGVDYWxs
YmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBzdGQ6
Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxk
b3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZT4mJiBtZXNz
YWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlw
ZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVD
YWxsYmFjayYmKSA9IDA7CiAKICAgICBlbnVtIGNsYXNzIFNlc3Npb25Mb2FkRmFpbHVyZSA6IHVp
bnQ4X3QgewogICAgICAgICBOb25lLApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICB1
c2luZyBDbG9zZVNlc3Npb25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT47CiAg
ICAgdmlydHVhbCB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xv
c2VTZXNzaW9uQ2FsbGJhY2smJikgPSAwOwogCi0gICAgdXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFD
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYsIHN0ZDo6
b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYsIFN1Y2Nlc3NWYWx1ZSk+OworICAgIHVzaW5n
IFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0
YXR1c1ZlY3RvciYmLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4m
JiwgU3VjY2Vzc1ZhbHVlKT47CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxs
YmFjayYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVSZWNvcmRPZktleVVzYWdlKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKaW5kZXggY2M2ZGM3ZjE0MGNkNjdkMmI3
Yjg0ZjZhYjJjMjg0MzE2ZGZkZGNjZi4uNTJhNjE0OGM4M2NkNTM5M2M4Zjg3NGVkODVhZDhiZjI3
ZTViZTUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETVByaXZhdGUuaApAQCAtNzMsOCArNzMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nl
cnZlckNlcnRpZmljYXRlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNT
ZXNzaW9ucygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRC
dWZmZXImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNw
b25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYp
IGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCmluZGV4IGYyMThmOTc5MDRmYmJhNDlmMWVi
ZGY0OGUyMDVmZTczZGZhZmI2NDguLjRiYTc1YmYwMGQ5ZjcxM2I1YWZiYmE3OTM0MDE5NzE2Y2Q4
ZjAzODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1Qcm94eS5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCBDRE1JbnN0YW5jZVNlc3Npb246Oktl
eVN0YXR1c1ZlY3RvciBLZXlTdG9yZTo6Y29udmVydFRvSlNLZXlTdGF0dXNWZWN0b3IoKSBjb25z
dAogICAgIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c1ZlY3Rv
cjsKICAgICBrZXlTdGF0dXNWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1LZXlzKCkp
OwogICAgIGZvciAoY29uc3QgYXV0byYga2V5IDogbV9rZXlzKQotICAgICAgICBrZXlTdGF0dXNW
ZWN0b3IudW5jaGVja2VkQXBwZW5kKHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgQ0RNSW5z
dGFuY2VTZXNzaW9uOjpLZXlTdGF0dXM+IHsga2V5LT5pZEFzU2hhcmVkQnVmZmVyKCksIGtleS0+
c3RhdHVzKCkgfSk7CisgICAgICAgIGtleVN0YXR1c1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQoc3Rk
OjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpL
ZXlTdGF0dXM+IHsga2V5LT5pZEFzU2hhcmVkQnVmZmVyKCksIGtleS0+c3RhdHVzKCkgfSk7CiAg
ICAgcmV0dXJuIGtleVN0YXR1c1ZlY3RvcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKaW5kZXggYTU4NGI2Y2QyNjZiMDk4MDkw
MjU0ZDdkY2JkZGJmNjBkOTMzMWZiYi4uZTFlMDk4YTFkNWY1ZmZjNjVjMmE0OGZhNDBhYTk3MmZl
ODllMWUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1Qcm94eS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEtleUhhbmRsZShzdGF0dXMsIFdURk1vdmUoa2V5SUQpLCBXVEZN
b3ZlKGtleUhhbmRsZVZhbHVlKSkpOwogICAgIH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBpZEFz
U2hhcmVkQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9pZC5k
YXRhKCksIG1faWQuc2l6ZSgpKTsgfQorICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBp
ZEFzU2hhcmVkQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9p
ZC5kYXRhKCksIG1faWQuc2l6ZSgpKTsgfQogCiAgICAgYm9vbCB0YWtlVmFsdWVJZkRpZmZlcmVu
dChLZXlIYW5kbGVWYWx1ZVZhcmlhbnQmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCmluZGV4IDY2NzI2Zjc0
ZTU4ZDhlMTIyY2JjOTBiODY3YjliZjk2MTc3ODAzZDQuLmZjYTZmMjM4OGE1NmE2YTFjNzI0NzBl
NWE0NmZkZDI4ZjA3Mzc1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBDRE1VdGlsaXRpZXMgewogCi1SZWZQdHI8SlNP
Tjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitS
ZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEZhaWwgb24gbGFyZ2UgYnVmZmVycyB3aG9zZSBz
aXplIGRvZXNuJ3QgZml0IGludG8gYSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlci4KICAgICBzaXpl
X3Qgc2l6ZSA9IGJ1ZmZlci5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oCmluZGV4IDc0ZjUxNWIwYmQyYTg3MTY4
ZWVmMjRiMThmOTVkZWFiZWU4MjhlNmMuLmZjZjViZGRhN2M1OTdkM2MzYWMzNDllZTE3ODllNGFk
NmUwYzk1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVV0aWxpdGllcy5oCkBAIC0zNSwxMSArMzUsMTEgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiBuYW1lc3BhY2UgQ0RNVXRpbGl0aWVzIHsKIAotUmVmUHRyPEpTT046Ok9iamVjdD4g
cGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworUmVmUHRyPEpTT046Ok9iamVj
dD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xl
YXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDJhZGRlZTdlZThiNGVlYjgzNWZh
NzBjMjRmMWQ0ZWY4OWQ3MzQzZWYuLjMxYTlmZGZhMDJkNmQwMGNhMjYxODI1MmRlZDkzNTMxM2Rj
NThhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBA
QCBzdGF0aWMgYm9vbCBwYXJzZUxpY2Vuc2VSZWxlYXNlQWNrbm93bGVkZ2VtZW50Rm9ybWF0KGNv
bnN0IEpTT046Ok9iamVjdCYgcm9vdCkKIC8vIF07CiAKIC8vIFRoaXMgZnVuY3Rpb24gZXh0cmFj
dHMgdGhlIEtleUlkcyBjb3VudCBhbmQgdGhlIGxvY2F0aW9uIG9mIHRoZSBmaXJzdCBLZXlJZCBp
biBpbml0RGF0YSBidWZmZXIuCi1zdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4g
ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
IGluaXREYXRhKQorc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RL
ZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgaW5pdERhdGEpCiB7CiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRz
TWFwKDAsIDApOwogCkBAIC0xODksMTMgKzE4OSwxMyBAQCBzdGF0aWMgc3RkOjpwYWlyPHVuc2ln
bmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25z
dAogfQogCiAvLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgaW5pdERhdGEgc2hhcmVkQnVm
ZmVyIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KLXN0YXRpYyBib29sIGlzQ2VuY0luaXREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitzdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0
YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBzdGQ6OnBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25G
cm9tQ2VuY0luaXREYXRhKGluaXREYXRhKTsKICAgICByZXR1cm4gKChrZXlJZHNNYXAuZmlyc3Qp
ICYmIChrZXlJZHNNYXAuc2Vjb25kKSk7CiB9CiAKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBl
eHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRh
KQorc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNl
bmNJbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIApAQCAtMjMwLDcgKzIzMCw3IEBAIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGluaXRECiAgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAKLXN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgaW5pdERhdGEpCitzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgaW5pdERhdGEpCiB7CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAKQEAgLTM5
MCw3ICszOTAsNyBAQCBib29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNTZXNzaW9ucygp
IGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5Ojpz
dXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hh
cmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhl
IGluaXREYXRhIGJ1ZmZlciBhcyBhbiBKU09OIG9iamVjdCBpbiBrZXlpZHMgY2FzZS4KICAgICBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRzIikg
JiYgQ0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QoaW5pdERhdGEpKQpAQCAtNDA3LDcgKzQw
Nyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25zZShj
b25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IENETVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0
aGUgcmVzcG9uc2UgYnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0LgogICAgIGlmICghQ0RNVXRpbGl0
aWVzOjpwYXJzZUpTT05PYmplY3QocmVzcG9uc2UpKQpAQCAtNDMzLDcgKzQzMyw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VDbGVhcktleTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENE
TUtleVN5c3RlbUNvbmZpZ3VyCiAgICAgY2FsbGJhY2soc3VjY2VlZGVkKTsKIH0KIAotdm9pZCBD
RE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVy
PiYmLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VDbGVhcktl
eTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1
Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIC8vIFJlamVjdCBzZXR0aW5nIGFueSBz
ZXJ2ZXIgY2VydGlmaWNhdGUuCiAgICAgY2FsbGJhY2soRmFpbGVkKTsKQEAgLTQ1NSw3ICs0NTUs
NyBAQCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBDRE1JbnN0YW5jZUNsZWFyS2V5OjpjcmVh
dGVTZXNzaW9uKCkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENETUluc3RhbmNlU2Vzc2lvbkNs
ZWFyS2V5KCp0aGlzKSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNr
KQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5z
ZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAg
IHN0YXRpYyB1aW50MzJfdCBzX3Nlc3Npb25JZFZhbHVlID0gMDsKICAgICArK3Nfc2Vzc2lvbklk
VmFsdWU7CkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktl
eTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGkKICAgICAg
ICAgfSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25z
ZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAjaWYgTE9HX0RJU0FCTEVE
CiAgICAgLy8gV2Ugb25seSB1c2UgdGhlIHNlc2lvbiBJRCBmb3IgZGVidWcgbG9nZ2luZy4gVGhl
IHZlcmJvc2UgcHJlcHJvY2Vzc29yIGNoZWNrcyBhcmUgYmVjYXVzZQpAQCAtNTY4LDcgKzU2OCw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlbW92ZVNlc3Npb25EYXRhKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlCiAgICAgQVNTRVJUKHNlc3Npb25JZCA9PSBtX3Nl
c3Npb25JRCk7CiAKICAgICBhdXRvIGRpc3BhdGNoQ2FsbGJhY2sgPQotICAgICAgICBbd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgJmNhbGxiYWNrXShLZXlTdGF0dXNWZWN0b3ImJiBrZXlT
dGF0dXNWZWN0b3IsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYgbWVzc2FnZSwg
U3VjY2Vzc1ZhbHVlIHN1Y2Nlc3MpIHsKKyAgICAgICAgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sICZjYWxsYmFja10oS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzVmVjdG9yLCBzdGQ6
Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBTdWNjZXNz
VmFsdWUgc3VjY2VzcykgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZCgKICAgICAgICAg
ICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKndlYWtUaGlzIH0sIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayksIGtleVN0YXR1c1ZlY3RvciA9IFdURk1vdmUoa2V5U3RhdHVzVmVjdG9y
KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHN1Y2Nlc3NdKCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCkBAIC01ODEsNyArNTgxLDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIExpY2UKICAgICAvLyBDb25zdHJ1Y3QgdGhlIEtleVN0YXR1c1ZlY3RvciBv
YmplY3QsIHJlcHJlc2VudGluZyByZWxlYXNlZCBrZXlzLCBhbmQgdGhlIG1lc3NhZ2UgaW4gdGhl
CiAgICAgLy8gJ2xpY2Vuc2UgcmVsZWFzZScgZm9ybWF0LgogICAgIEtleVN0YXR1c1ZlY3RvciBr
ZXlTdGF0dXNWZWN0b3IgPSBtX2tleVN0b3JlLmFsbEtleXNBcyhDRE1JbnN0YW5jZVNlc3Npb246
OktleVN0YXR1czo6UmVsZWFzZWQpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2U7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2U7CiAgICAgewogICAg
ICAgICAvLyBDb25zdHJ1Y3QgSlNPTiB0aGF0IHJlcHJlc2VudHMgdGhlICdsaWNlbnNlIHJlbGVh
c2UnIGZvcm1hdCwgY3JlYXRpbmcgYSAna2lkcycgYXJyYXkKICAgICAgICAgLy8gb2YgYmFzZTY0
VVJMLWVuY29kZWQga2V5IElEcyBmb3IgYWxsIGtleXMgdGhhdCB3ZXJlIGFzc29jaWF0ZWQgd2l0
aCB0aGlzIHNlc3Npb24uCkBAIC01OTUsMTQgKzU5NSwxNCBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkNsZWFyS2V5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
TGljZQogICAgICAgICAgICAgcm9vdE9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGFy
cmF5KSk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBDb3B5IHRoZSBKU09OIGRhdGEgaW50byBh
IFNoYXJlZEJ1ZmZlciBvYmplY3QuCisgICAgICAgIC8vIENvcHkgdGhlIEpTT04gZGF0YSBpbnRv
IGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBvYmplY3QuCiAgICAgICAgIFN0cmluZyBtZXNzYWdl
U3RyaW5nID0gcm9vdE9iamVjdC0+dG9KU09OU3RyaW5nKCk7CiAgICAgICAgIENTdHJpbmcgbWVz
c2FnZUNTdHJpbmcgPSBtZXNzYWdlU3RyaW5nLnV0ZjgoKTsKICAgICAgICAgbWVzc2FnZSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2VDU3RyaW5nLmRhdGEoKSwgbWVzc2FnZUNTdHJpbmcu
bGVuZ3RoKCkpOwogICAgIH0KIAogICAgIG1fa2V5U3RvcmUudW5yZWZBbGxLZXlzKCk7Ci0gICAg
ZGlzcGF0Y2hDYWxsYmFjayhXVEZNb3ZlKGtleVN0YXR1c1ZlY3RvciksIFJlZjxTaGFyZWRCdWZm
ZXI+KCptZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOworICAgIGRpc3BhdGNoQ2Fs
bGJhY2soV1RGTW92ZShrZXlTdGF0dXNWZWN0b3IpLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4oKm1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcm
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xl
YXJrZXkvQ0RNQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKaW5kZXggOWMwNzQ3ZGMxYmQ4ZTY3ZjNiYTg2NGQ5
YjgxMTMzNzYyNWM4YTY3OS4uOWUyN2ZlOTEyYzRkYTA2N2ZiMjZjYWZiYzdmNmE2NTFkYTQ3NTI4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xl
YXJrZXkvQ0RNQ2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCkBAIC04Niw4ICs4Niw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nl
cnZlckNlcnRpZmljYXRlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9u
cygpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5h
bDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vz
c2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogfTsKIApAQCAtOTksNyArOTksNyBA
QCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFuY2UKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1w
bGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBl
OjpDbGVhcktleTsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0
IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMs
IEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9p
ZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJh
Y2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0
U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+
IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKQEAgLTEwOSw4ICsxMDksOCBAQCBjbGFzcyBDRE1JbnN0
YW5jZVNlc3Npb25DbGVhcktleSBmaW5hbCA6IHB1YmxpYyBDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eSB7CiBwdWJsaWM6CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkoQ0RNSW5zdGFuY2VD
bGVhcktleSYgcGFyZW50KQogICAgICAgICA6IENETUluc3RhbmNlU2Vzc2lvblByb3h5KHBhcmVu
dCkgeyB9Ci0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNl
Q2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYs
IExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sm
JikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0
RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExp
Y2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxi
YWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3Nl
U2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29u
c3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5j
b2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmNwcAppbmRleCA3YWE5NGI0YjRiYzJjYmY5MjJhYWRhNTg4NzU3M2Q3NWQ3
YzBiYzY3Li43YmYwMDgzMmE0MDJlZWFkNTcyM2NhNDI4ZTlhZmI3Y2M0MWEwYzU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHAKQEAgLTEzOSw5ICsxMzksOSBAQCB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVu
ZEFycmF5KCkKICAgICBtX2VuY29kZXIgPDwgVHlwZTo6RW5kQXJyYXk7CiB9CiAKLVJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGlu
ZygpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNv
ZGluZygpCiB7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2Vu
Y29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShtX2VuY29kZXIuYnVmZmVyKCksIG1fZW5jb2Rlci5idWZmZXJTaXpl
KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IDU4MDU4M2I4
MzgxMGVkZTVkMmM5YzY1YTgzOTNiMzI2ZDg3YjI3NDcuLmVjZjRlMDhjOWI5OTFhZGUyNzNiZDQ0
YzYwYmIxNWZlMDE2MzViMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWRFbmNvZGVyR2VuZXJpYyBmaW5hbCA6IHB1YmxpYyBL
ZXllZEVuY29kZXIgewogcHVibGljOgpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgfTsK
IAogcHJpdmF0ZToKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5j
b2RpbmcoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGlu
ZygpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgdWludDhfdCosIHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNv
bnN0IFN0cmluZyYga2V5LCBib29sKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCmluZGV4IGU2ZDc4ZDUyODNlZjhlNTNj
N2JkYjBiYjgwNGU5ZTI3ZTEwYTE3OTMuLjcwZDI0YzExOTNmOGU1YzcwZDFkMzk4N2M1ZTAwOThj
YjZjMDBiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRF
bmNvZGVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVu
Y29kZXJHbGliLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJHbGli
OjplbmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5n
KCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5n
KCkKIHsKICAgICBnX2Fzc2VydChtX3ZhcmlhbnRCdWlsZGVyU3RhY2subGFzdCgpID09ICZtX3Zh
cmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJpYW50ID0gZ192YXJpYW50
X2J1aWxkZXJfZW5kKCZtX3ZhcmlhbnRCdWlsZGVyKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gZGF0
YSA9IGdfdmFyaWFudF9nZXRfZGF0YV9hc19ieXRlcyh2YXJpYW50LmdldCgpKTsKLSAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2ln
bmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKKyAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+
KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oZ19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVk
RW5jb2RlckdsaWIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVy
R2xpYi5oCmluZGV4IGNlMTM2NDk2YzRlMTNlYWMxNDllYTYxODk1YzU0MTQwZmZkNTk2ZjcuLmU1
NjQyYmNmNjcwY2UyNTk5ZmMwNGRmNzI5ZTJiNGMxZjgyMTFmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oCkBAIC0zOSw3ICszOSw3IEBA
IHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyR2xpYigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFs
OworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmlu
YWw7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50
OF90Kiwgc2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBr
ZXksIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9TaGFyZWRCdWZmZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hh
cmVkQnVmZmVyR2xpYi5jcHAKaW5kZXggNzg4OTE3ZGFlZjk2ODljYTdlZTc0NGUxYTQwNjE1ZGM0
OWIxMzkwNS4uOTM3ZDFmYjZmMGM4ZDdiNTFmMThmZjE1NTYwYjNiOTRhNzRmNjFiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCkBA
IC0yNiwyOCArMjYsMjggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6
OlNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQogewogICAgIEFTU0VSVChieXRlcyk7
CiAgICAgbV9zaXplID0gZ19ieXRlc19nZXRfc2l6ZShieXRlcyk7CiAgICAgbV9zZWdtZW50cy5h
cHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKEdSZWZQdHI8R0J5dGVzPihieXRlcykpIH0p
OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5
dGVzKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihieXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoYnl0ZXMpKTsKIH0KIAotR1JlZlB0cjxHQnl0ZXM+IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CitHUmVmUHRyPEdCeXRlcz4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVHQnl0ZXMoKSBjb25zdAogewogICAgIHJlZigpOwogICAgIEdSZWZQdHI8R0J5dGVz
PiBieXRlcyA9IGFkb3B0R1JlZihnX2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhkYXRhKCksIHNp
emUoKSwgW10oZ3BvaW50ZXIgZGF0YSkgewotICAgICAgICBzdGF0aWNfY2FzdDxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7Ci0gICAgfSwgY29uc3RfY2FzdDxDb250aWd1
b3VzU2hhcmVkQnVmZmVyKj4odGhpcykpKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVm
ZmVyKj4oZGF0YSktPmRlcmVmKCk7CisgICAgfSwgY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0
aGlzKSkpOwogICAgIHJldHVybiBieXRlczsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpj
cmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAo
ZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTYxLDcgKzYx
LDcgQEAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb24KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50
cy5nZXQoKSwgc2l6ZSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRz
LmdldCgpLCBzaXplKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRleCBiMTM2MzQ0ZTYwZjczZmMxMDA1OGVi
ZmUzY2I0ZTBiNjNmNDU4MmQ3Li4xN2IzNTJmODk3NDI3Mjk4ZjVkZDBiOGRmYjk2OTA3ODc5NWQz
MzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAtNjgs
NyArNjgsNyBAQCBSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
IHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgRm9udAogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEZvbnQocGxhdGZvcm1EYXRhLCBvcmlnaW4sIGludGVyc3RpdGlhbCwgdmlzaWJpbGl0eSwg
b3JpZW50YXRpb25GYWxsYmFjaywgaWRlbnRpZmllciwgZm9udENhY2hlRm9yVmVydGljYWxEYXRh
KSk7CiB9CiAKLVJlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwg
Ym9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBmb250
Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCitSZWY8Rm9udD4gRm9udDo6Y3JlYXRlKFJlZjxTaGFyZWRC
dWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6
ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiBm
b250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpCiB7CiAgICAgYm9vbCB3cmFwcGluZzsKICAgICBhdXRv
IGN1c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoZm9udEZh
Y2VEYXRhLmdldCgpLCB7IH0sIHdyYXBwaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuaAppbmRleCBmOWJhY2E1YTI2NDFlMzhjODI5NDAwZjVlMzI1NGRmZWQ0OGRjOGIw
Li5kYzFmYjE2ZWEwYjE5NmM1ZDEzYmQ0MTE0ZTUwY2NkY2Q5YjM3YzkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEZvbnRDYWNoZTsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNz
IEdseXBoUGFnZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIHN0cnVjdCBHbHlwaERhdGE7CiAKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgog
ICAgICAgICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxs
YmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHN0YXRpYyBSZWY8Rm9udD4g
Y3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4sIEZvbnRDYWNoZSogZm9udENh
Y2hlRm9yVmVydGljYWxEYXRhLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLAogICAg
ICAgICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFj
ayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNl
RGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBi
b29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZh
Y2VEYXRhLCBGb250OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQs
IGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqID0gbnVsbHB0cik7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCB+Rm9udCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKaW5kZXggZTIzODRiOWVlNGVjZTYwMWVlZDdhNGMw
YjNkYmRmOThiZTk1MzA5My4uZmJiY2NjNDM2ODQ0NzQ5MDgzY2U4OTFmMzYzZjZjYzQwZjI5NzQ1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRm
b3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0
Zm9ybURhdGEuaApAQCAtMjIzLDEzICsyMjMsMTMgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQog
Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMy
X3QgdGFibGUpIGNvbnN0OwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwbGF0
Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OworICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29u
c3Q7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgIHN0cnVjdCBDcmVh
dGlvbkRhdGEgewotICAgICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZm9udEZhY2VE
YXRhOworICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CiAgICAgICAgIFN0
cmluZyBpdGVtSW5Db2xsZWN0aW9uOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgUmVmPEZv
bnRNZW1vcnlSZXNvdXJjZT4gbV9mb250UmVzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggNGE4NTNlYjY0OTUzZDRhZTQ4MzRmODdjNTQ4N2Fj
ZDM2NGM1N2Q4MS4uZTMyYTM2YzYwNzYxOTIxNjhjNmEzNzkzMThmNzhhZTE3ODljNDgyZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMTA0LDcgKzEw
NCw3IEBAIGJvb2wgSW1hZ2U6OmlzUG9zdFNjcmlwdFJlc291cmNlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFVSTCYgdXJsKQogfQogCiAKLUVuY29kZWREYXRhU3RhdHVzIEltYWdlOjpz
ZXREYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CitFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZTo6c2V0RGF0YShSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBtX2VuY29kZWRJ
bWFnZURhdGEgPSBXVEZNb3ZlKGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaAppbmRleCA2YTA4MTY5NTdhYTkzYzQxMWE1NmNkNGMyYmMyMGRkNmQ5MDQ0ZGVj
Li42NTVkZmU3M2NmZjZhZDFkMDRmNDhiYzIwMTllYmI4MDQxN2Q2MTM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTcwLDcgKzcwLDcgQEAgY2xhc3MgQWZm
aW5lVHJhbnNmb3JtOwogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNz
IEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiBzdHJ1Y3QgTGVuZ3RoOwogCiAvLyBUaGlzIGNsYXNzIGdldHMgbm90aWZp
ZWQgd2hlbiBhbiBpbWFnZSBjcmVhdGVzIG9yIGRlc3Ryb3lzIGRlY29kZWQgZnJhbWVzIGFuZCB3
aGVuIGl0IGFkdmFuY2VzIGFuaW1hdGlvbiBmcmFtZXMuCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0
IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIHZpcnR1YWwgSW1hZ2VPcmllbnRhdGlvbiBv
cmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZTsg
fQogCi0gICAgV0VCQ09SRV9FWFBPUlQgRW5jb2RlZERhdGFTdGF0dXMgc2V0RGF0YShSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBFbmNvZGVkRGF0YVN0YXR1cyBzZXREYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2aXJ0dWFsIEVuY29k
ZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2VkKGJvb2wgLyphbGxEYXRhUmVjZWl2ZWQqLykgeyByZXR1
cm4gRW5jb2RlZERhdGFTdGF0dXM6OlVua25vd247IH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIHV0
aSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9IC8vIG51bGwgc3RyaW5nIGlmIHVua25vd24K
QEAgLTEzMyw4ICsxMzMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveURl
Y29kZWREYXRhKGJvb2wgZGVzdHJveUFsbCA9IHRydWUpID0gMDsKIAotICAgIFNoYXJlZEJ1ZmZl
ciogZGF0YSgpIHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQotICAgIGNvbnN0
IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5n
ZXQoKTsgfQorICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSB7IHJldHVybiBtX2Vu
Y29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CiAKICAg
ICB2aXJ0dWFsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCk7CiAKQEAgLTIwOSw3
ICsyMDksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBDb2xvciBzaW5nbGVQaXhlbFNvbGlk
Q29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvcigpOyB9CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVkSW1hZ2VEYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBtX2VuY29kZWRJbWFnZURhdGE7CiAgICAgSW1hZ2VPYnNlcnZlciogbV9p
bWFnZU9ic2VydmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcj4gbV9hbmltYXRpb25TdGFy
dFRpbWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4IDRkZGI2ZGY4M2VjYjhiOWI3OTU3ZjQ2NjRlMTg0ZjAw
ODFlODEwMTEuLmRlMzNmMWFmNDEyZGMwOGIyYjk2MWExOTQ5NDVjOWNjOTBhYTY2MjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3Jl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3Rv
cmUuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAgICAgYnVmZmVyLmdyb3coYnVmZmVyU2l6ZSk7Ci0gICAgICAgIG1fcGl4ZWxzID0g
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAg
ICAgIG1fcGl4ZWxzID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0
ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAg
ICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAgIG1fZnJhbWVSZWN0ID0gSW50UmVjdChJbnRQ
b2ludCgpLCBtX3NpemUpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHByaXZhdGU6CiAgICAgewogICAg
ICAgICBBU1NFUlQoIW1fc2l6ZS5pc0VtcHR5KCkgJiYgIWlzT3ZlclNpemUobV9zaXplKSk7CiAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIgeyBvdGhlci5tX3BpeGVscy0+ZGF0YSgpLCBv
dGhlci5tX3BpeGVscy0+c2l6ZSgpIH07Ci0gICAgICAgIG1fcGl4ZWxzID0gU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1fcGl4ZWxz
ID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1
ZmZlcikpOwogICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Qq
Pihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgfQogCkBAIC0y
MzMsNyArMjMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIFBhY2tlZENvbG9yOjpBUkdC
IHsgcmVzdWx0IH0udmFsdWU7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+IG1fcGl4ZWxzOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudD4gbV9waXhlbHM7CiAgICAgdWludDMyX3QqIG1fcGl4ZWxzUHRyIHsgbnVsbHB0
ciB9OwogICAgIEludFNpemUgbV9zaXplOwogICAgIEludFJlY3QgbV9mcmFtZVJlY3Q7IC8vIFRo
aXMgd2lsbCBhbHdheXMganVzdCBiZSB0aGUgZW50aXJlIGJ1ZmZlciBleGNlcHQgZm9yIEdJRiBh
bmQgUE5HIGZyYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRGVjb2Rlci5jcHAKaW5kZXggMDg2OWU5OWEwMDg4NmY3Y2QxMjE4NmZlMzE2MWRlMDQ3ZmE1
MTM2MS4uN2M1NDk0N2Y0ZDgxNDA4NTU5Y2M0NWM0YWM0OWExOWI5ZmM4NmY5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwCkBAIC04
Miw3ICs4Miw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyOjpjbGVhckZhY3RvcmllcygpCiB9CiAjZW5k
aWYKIAotUmVmUHRyPEltYWdlRGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
CitSZWZQdHI8SW1hZ2VEZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCiB7CiAgICAgVU5VU0VEX1BBUkFNKG1pbWVUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRleCBhMWEwOGFkYzE3NWQ0
NGJhYTQ0MmU0NGE5NGFhOTY3YTA0ZjVmNjA3Li42YThmZmNiNjBmYzExNTZlYjg0ODc2ZGVmYjA3
Y2JjMGIxMTk4NDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZURlY29kZXIuaApAQCAtMzcsMTIgKzM3LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgSW1hZ2VEZWNvZGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlRGVj
b2Rlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRp
YyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAog
ICAgIGVudW0gY2xhc3MgTWVkaWFUeXBlIHsKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICB1c2luZyBTdXBwb3J0c01lZGlhVHlwZUZ1bmMgPSBG
dW5jdGlvbjxib29sKE1lZGlhVHlwZSk+OwogICAgIHVzaW5nIENhbkRlY29kZVR5cGVGdW5jID0g
RnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT47Ci0gICAgdXNpbmcgQ3JlYXRlSW1hZ2VEZWNv
ZGVyRnVuYyA9IEZ1bmN0aW9uPFJlZlB0cjxJbWFnZURlY29kZXI+KFNoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik+Owor
ICAgIHVzaW5nIENyZWF0ZUltYWdlRGVjb2RlckZ1bmMgPSBGdW5jdGlvbjxSZWZQdHI8SW1hZ2VE
ZWNvZGVyPihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKT47CiAKICAgICBzdHJ1Y3QgSW1hZ2VEZWNv
ZGVyRmFjdG9yeSB7CiAgICAgICAgIFN1cHBvcnRzTWVkaWFUeXBlRnVuYyBzdXBwb3J0c01lZGlh
VHlwZTsKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUlt
YWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9
IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNv
ZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpID0gMDsKIAogICAgIHZpcnR1
YWwgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXpl
X3QpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuY3BwCmluZGV4IGQ4MWM0ODAxOTI4NDZkZDdlMzIxYzJkZmJmYmYxZTBjMjBkYWE2NzEu
LjMwNzc0MzMxNWE0MWVjYTFjOWIyYmM3NzNkMDc5ZWU1ZDQzYmFmNjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTcyLDcgKzcy
LDcgQEAgSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJjZSgpCiAgICAgQVNTRVJUKCZtX3J1bkxvb3Ag
PT0gJlJ1bkxvb3A6OmN1cnJlbnQoKSk7CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmVuc3VyZURl
Y29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRhKQorYm9vbCBJbWFnZVNvdXJjZTo6ZW5z
dXJlRGVjb2RlckF2YWlsYWJsZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAg
IGlmICghZGF0YSB8fCBpc0RlY29kZXJBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC05Niw3ICs5Niw3IEBAIGJvb2wgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFi
bGUoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEltYWdl
U291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
Cit2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmICghZGF0YSB8fCAhZW5zdXJlRGVjb2Rl
ckF2YWlsYWJsZShkYXRhKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA0LDEzICsxMDQsMTMgQEAg
dm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQogICAgIG1fZGVjb2Rlci0+c2V0RGF0YSgqZGF0YSwgYWxsRGF0YVJlY2VpdmVk
KTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6cmVzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkK
K3ZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRh
KQogewogICAgIG1fZGVjb2RlciA9IG51bGxwdHI7CiAgICAgc2V0RGF0YShkYXRhLCBpc0FsbERh
dGFSZWNlaXZlZCgpKTsKIH0KIAotRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VTb3VyY2U6OmRhdGFD
aGFuZ2VkKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCitFbmNvZGVk
RGF0YVN0YXR1cyBJbWFnZVNvdXJjZTo6ZGF0YUNoYW5nZWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgc2V0RGF0YShkYXRhLCBhbGxE
YXRhUmVjZWl2ZWQpOwogICAgIGNsZWFyTWV0YWRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IDhhZjUwODBhMDBhOTkxNjA4MGYx
ZjBiMjc3MDczYzJhODUzNDUyNTguLjgxNGYwZTEyZWJhYTQ4Zjg2YWNiNTIxOTczYzMxZDVkMzgy
ZjZmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCaXRtYXBJ
bWFnZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEltYWdlRGVjb2RlcjsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIElt
YWdlU291cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlU291cmNlPiwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPEltYWdlU291cmNlPiB7CiAgICAgZnJpZW5kIGNsYXNzIEJpdG1h
cEltYWdlOwpAQCAtNTYsOSArNTYsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEltYWdlU291cmNlKFdURk1vdmUobmF0aXZlSW1hZ2UpKSk7CiAgICAgfQogCi0gICAg
dm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwot
ICAgIHZvaWQgcmVzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSk7Ci0gICAgRW5jb2RlZERhdGFT
dGF0dXMgZGF0YUNoYW5nZWQoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCk7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2b2lkIHJlc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBkYXRhKTsKKyAgICBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgYm9vbCBpc0Fs
bERhdGFSZWNlaXZlZCgpOwogCiAgICAgdW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdCB7IHJl
dHVybiBtX2RlY29kZWRTaXplOyB9CkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFQgZmlyc3RGcmFtZU1ldGFkYXRhQ2FjaGVJZk5lZWRl
ZChUJiBjYWNoZWRWYWx1ZSwgTWV0YWRhdGFUeXBlLCBUIChJbWFnZUZyYW1lOjoqZnVuY3Rvciko
KSBjb25zdCwgSW1hZ2VGcmFtZTo6Q2FjaGluZywgY29uc3Qgc3RkOjpvcHRpb25hbDxTdWJzYW1w
bGluZ0xldmVsPiYgPSB7IH0pOwogCi0gICAgYm9vbCBlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKFNo
YXJlZEJ1ZmZlciogZGF0YSk7CisgICAgYm9vbCBlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpOwogICAgIGJvb2wgaXNEZWNvZGVyQXZhaWxhYmxlKCkg
Y29uc3QgeyByZXR1cm4gbV9kZWNvZGVyOyB9CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEo
c2l6ZV90IGZyYW1lQ291bnQsIHNpemVfdCBleGNsdWRlRnJhbWUpOwogICAgIHZvaWQgZGVjb2Rl
ZFNpemVDaGFuZ2VkKGxvbmcgbG9uZyBkZWNvZGVkU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKaW5kZXggNWFkZTdlZjY5ZTI5YTc3ZjJiODQwOTI5ZTY0
YmUwYzQ0ZTUxNjQzOS4uNTc3YmQ1MDhhNWM0MDlmNGJlOWU0Y2YyMDJiODFlNjFlNDViNDRhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcApAQCAtMzAsMTIg
KzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBNb2RlbDo6Y3Jl
YXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwg
VVJMIHVybCkKK1JlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGRh
dGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBNb2RlbChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV1RGTW92ZSh1cmwpKSk7
CiB9CiAKLU1vZGVsOjpNb2RlbChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBT
dHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitNb2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiAgICAgOiBtX2RhdGEoV1RGTW92ZShk
YXRhKSkKICAgICAsIG1fbWltZVR5cGUoV1RGTW92ZShtaW1lVHlwZSkpCiAgICAgLCBtX3VybChX
VEZNb3ZlKHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAppbmRl
eCA5MTU2MGFlODhmYTY0YzJhMGMxMDAxNDE0ZjMyNDFjZTAwNTZhMWY0Li5lNmJkZTE2NmY5NDRj
ZGU3ZGIzMjhjMjk3NmVjNjgyYWRiNmQxMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmgKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIE1vZGVsIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kZWw+IHsKIHB1YmxpYzoK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIH5Nb2RlbCgpOwogCi0gICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgCkBAIC00OSw5ICs0OSw5IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNv
ZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogCi0gICAgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgU3Ry
aW5nIG1fbWltZVR5cGU7CiAgICAgVVJMIG1fdXJsOwogfTsKQEAgLTkzLDcgKzkzLDcgQEAgUmVm
UHRyPE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCF1cmwp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1l
VHlwZSksIFdURk1vdmUoKnVybCkpOworICAgIHJldHVybiBNb2RlbDo6Y3JlYXRlKFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdURk1vdmUo
KnVybCkpOwogfQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
V1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVy
LmgKaW5kZXggNzQ1OWM1ODU4ZDI0ODdlZjJjNWZkMzcxNzM5ODZiMzM3MzRlYzI4YS4uODg2OTFk
YzI1NmQ2ZGQ2YzQ1ZjQ2ZTAxNTQ5Njc0MjQ1YWEzNTMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyLmgKQEAgLTUxLDggKzUxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWRp
cmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
c291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHJlcXVlc3QpKTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNoZVJlc3Bv
bnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIC8vIFRo
aXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQg
dXNlcyBTaGFyZWRCdWZmZXIuCisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgeyBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIGJlIHJl
bW92ZWQgb25jZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB1c2VzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIuCiAgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmIHBsYXRmb3JtLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IGRhdGFSZWNl
aXZlZChwbGF0Zm9ybSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZh
aWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQ
cml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZl
clByaXZhdGUuY3BwCmluZGV4IDU0OTlmMzdhN2YzNjQ2YmQ1ZjM5NWE0OGIwOWQ5NDExZDRjOWI2
NjQuLmQzZTFiNTgwNGU4NWE5OTExY2YyMGZjZWQzNGJmMjU1YTMxNDQzNGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZh
dGUuY3BwCkBAIC0xMzE4LDcgKzEzMTgsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmRp
ZFJlY2VpdmVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmIG9yaWdpbmFsU2FtcGxlKQogICAgIHVw
ZGF0ZUhpZ2hlc3RQcmVzZW50YXRpb25UaW1lc3RhbXAoKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGU6OmFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7CiAgICAgYXBwZW5kKGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgK
aW5kZXggZWY4NmE0NzM2OTM3MWM4M2U4ODNiMjliYmI2YjlhYjk2ZWNhNWYxZC4uNmI3ZDk1ZTUy
YjlkZjBjODFhZjNiZTFkNmQ5ZjNjOGVkMzk1NDE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtNDksNyAr
NDksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBUaW1lUmFuZ2VzOwogCiBlbnVtIGNs
YXNzIFNvdXJjZUJ1ZmZlckFwcGVuZE1vZGUgOiB1aW50OF90IHsKQEAgLTY4LDcgKzY4LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclByaXZhdGUo
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCkgPSAwOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBhcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJik7CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBy
ZXNldFBhcnNlclN0YXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbU1lZGlh
U291cmNlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvV09GRkZpbGVGb3JtYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
V09GRkZpbGVGb3JtYXQuY3BwCmluZGV4IGEwZTczYjNmM2ViY2IzYzc4MGZlMzUxZTlkNmE4MGI2
ZmI5MDU1YjQuLmIzN2ViZmM1NjIwNDhmZTZkNzk0MWQyZTVjYzFiY2ExZGMxNTcxYzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5j
cHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90IGtXb2ZmMlNpZ25hdHVy
ZSA9IDB4Nzc0ZjQ2MzI7IC8vICJ3T0YyIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBib29sIHJlYWRVSW50MzIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3Qm
IG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKIHsKICAgICBB
U1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZm
ZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTQ5LDcgKzQ5LDcgQEAgc3Rh
dGljIGJvb2wgcmVhZFVJbnQzMihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVf
dCYgb2Zmc2V0LCB1aW50MzJfdCYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wg
cmVhZFVJbnQxNihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0
LCB1aW50MTZfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDE2KFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9B
Ukcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXpl
KCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgYm9v
bCB3cml0ZVVJbnQxNihWZWN0b3I8dWludDhfdD4mIHZlY3RvciwgdWludDE2X3QgdmFsdWUpCiAK
IHN0YXRpYyBjb25zdCB1aW50MzJfdCB3b2ZmU2lnbmF0dXJlID0gMHg3NzRmNDY0NjsgLyogJ3dP
RkYnICovCiAKLWJvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jv
b2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHNpemVfdCBvZmZzZXQgPSAw
OwogICAgIHVpbnQzMl90IHNpZ25hdHVyZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2YXRlOgog
fTsKICNlbmRpZgogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQo
U2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiB7CiAgICAgQVNTRVJU
X0FSRyhzZm50LCBzZm50LmlzRW1wdHkoKSk7CiAKQEAgLTI4Myw3ICsyODMsNyBAQCBib29sIGNv
bnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50
OF90PiYgc2ZudCkKICAgICByZXR1cm4gc2ZudC5zaXplKCkgPT0gdG90YWxTZm50U2l6ZTsKIH0K
IAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYgYnVmZmVyKQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
VU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0yOTQsNyArMjk0LDcgQEAgYm9vbCBjb252ZXJ0V09G
RlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRlZEZvbnQ7CiAgICAgaWYgKGNvbnZlcnRX
T0ZGVG9TZm50KCpidWZmZXIsIGNvbnZlcnRlZEZvbnQpKQotICAgICAgICBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CisgICAg
ICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkp
OwogICAgIGVsc2UKICAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKaW5kZXggNzhhYzRhN2Fm
ZmY0ZDRiZWU5ZmQwMmNhYmU3YTk4ZjJmZTdkZGU4Mi4uM2Q1NzAxMDdmMjhmODU0NDc0MWUzNDk1
YzAxNjA3ZTRkZTkwMmQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvV09GRkZpbGVGb3JtYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9XT0ZGRmlsZUZvcm1hdC5oCkBAIC0zMCwxOSArMzAsMTkgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVm
ZmVyOwogCiAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZS4KLWJv
b2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKK2Jvb2wgaXNXT0ZGKFNoYXJlZEJ1
ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSBXT0ZGIGZpbGUgd29mZiBpcyBpbnZh
bGlkIG9yIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gc2ZudCAoZm9yIGV4YW1wbGUsCiAvLyBp
ZiBjb252ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5KS4gT3RoZXJ3aXNlIHJldHVybnMgdHJ1ZSBh
bmQgd3JpdGVzIHRoZSBzZm50IHBheWxvYWQgaW50byBzZm50LgotYm9vbCBjb252ZXJ0V09GRlRv
U2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQp
OworYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50
OF90PiYgc2ZudCk7CiAKIC8vIElmIHRoZSBnaXZlbiBidWZmZXIgaXMgYSBXT0ZGIGZpbGUgYW5k
IHRoZSBjdXJyZW50IHBsYXRmb3JtIGhhcyBubyBuYXRpdmUgc3VwcG9ydCBmb3IgV09GRgogLy8g
Zm9udHMsIGNvbnZlcnQgaXQgdG8gc2ZudC4gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBidWZm
ZXIgd2FzIGNvbnZlcnRlZC4gSWYgY29udmVyc2lvbiBmYWlscywKIC8vIHRoZSBidWZmZXIgd2ls
bCBiZSBzZXQgdG8gbnVsbHB0ci4KLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJ
Zk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IGQ3
YzAxM2Q1NGUzZGVkMDc4NTQ5MDI4ZDUxZDZlMDI4Yzk3NTA3YzYuLjhiMDRmOWJlOTZjMzZlMGEy
NjIxODBhMjVlYTM3NDU5NjJiM2Q3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmNwcApAQCAtODYsNyArODYsNyBAQCBjb25zdCBBdG9tU3RyaW5nJiBDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNrZE5hbWUoKQogICAgIHJldHVybiBza2Q7CiB9CiAKLXN0
YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIC8vIEpTT04gb2YgdGhlIGZvcm1hdDogInsgc2luZjogWyA8YmFzZTY0LWVuY29k
ZWQtc3RyaW5nPiBdIH0iCiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkpCkBAIC0xMDUsNyArMTA1LDcgQEAgc3RhdGljIFZlY3RvcjxS
ZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogICAgIGlmICghc2luZkFycmF5KQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBzaW5mczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiBzaW5mczsKICAgICBzaW5mcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNp
bmZBcnJheS0+bGVuZ3RoKCkpOwogCiAgICAgZm9yIChhdXRvJiB2YWx1ZSA6ICpzaW5mQXJyYXkp
IHsKQEAgLTEyNCw3ICsxMjQsNyBAQCBzdGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBl
eHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB9CiAKIHVzaW5nIFNj
aGVtZUFuZEtleVJlc3VsdCA9IFZlY3RvcjxzdGQ6OnBhaXI8Rm91ckNDLCBWZWN0b3I8dWludDhf
dD4+PjsKLXN0YXRpYyBTY2hlbWVBbmRLZXlSZXN1bHQgZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJv
bVNpbmYoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgU2NoZW1lQW5kS2V5UmVz
dWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGJ1ZmZlcnMgPSBleHRyYWN0U2luZkRhdGEoYnVm
ZmVyKTsKICAgICBpZiAoIWJ1ZmZlcnMuc2l6ZSgpKQpAQCAtMTcwLDkgKzE3MCw5IEBAIHN0YXRp
YyBTY2hlbWVBbmRLZXlSZXN1bHQgZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJvbVNpbmYoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RkOjpvcHRpb25h
bDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OmV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQ
bGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7Cisg
ICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwogICAgIGF1dG8g
cmVzdWx0cyA9IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGJ1ZmZlcik7CiAKICAgICBm
b3IgKGF1dG8mIHJlc3VsdCA6IHJlc3VsdHMpIHsKQEAgLTE4Myw3ICsxODMsNyBAQCBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6ZXh0cmFjdEtleQogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVTaW5mKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBDb21tb24gU0lORiBCb3ggRm9ybWF0CiAgICAg
VU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0xOTEsMTcgKzE5MSwxNyBAQCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBT
aGFyZWRCdWZmZQogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2tkKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwogICAgIG5vdElt
cGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAKLXN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpleHRyYWN0S2V5SURzU2tkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQ
bGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICAvLyBJbiB0aGUgJ3NrZCcgc2NoZW1lLCB0aGUgaW5pdCBkYXRh
IGlzIHRoZSBrZXkgSUQuCi0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7Cisg
ICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwogICAgIGtleUlE
cy5hcHBlbmQoYnVmZmVyLmNvcHkoKSk7CiAgICAgcmV0dXJuIGtleUlEczsKIH0KQEAgLTM5Myw3
ICszOTMsNyBAQCBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNTZXNz
aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUZhaXJQ
bGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0
CiB7CiAgICAgaWYgKCF2YWxpZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjMsNyArNDIzLDcgQEAgYm9vbCBDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFy
ZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICByZXR1cm4gcmVzcG9u
c2UuY29weSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAppbmRl
eCBiYzkzZjZmNmE3YmRkMDFlZmJmNTViNjJiZGI2YTRlNjZlZjkxMmIzLi4zMTdiYjhkNTdlODZj
MDYyMTRlMGI0MDU5ZGRmNGY4ODA3Yzc0YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBs
YXlTdHJlYW1pbmcuaApAQCAtNzEsMTcgKzcxLDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRB
bmRJbml0aWFsaXplKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmlj
YXRlcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0
IG92ZXJyaWRlOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwg
Y29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0
aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGlj
IGNvbnN0IEF0b21TdHJpbmcmIHNpbmZOYW1lKCk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgU2hhcmVk
QnVmZmVyJik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplU2luZihj
b25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAg
IHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBza2ROYW1lKCk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NrZChjb25zdCBT
aGFyZWRCdWZmZXImKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVT
a2QoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTa2QoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAg
ICAgc3RhdGljIGNvbnN0IFZlY3RvcjxGb3VyQ0M+JiB2YWxpZEZhaXJQbGF5U3RyZWFtaW5nU2No
ZW1lcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAppbmRleCAxNTliOTBjZGI0OGY3ZmU0NGJi
NDliZTJlYzFjMWMyZjQzMjg2NDAwLi41NmI1OGMyNWEyODcwOWZiMzgyMjE4MzllNTViYWU0NWVk
OTNjZjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGlj
OgogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkZhaXJQbGF5U3RyZWFtaW5nOyB9CiAKICAg
ICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRT
dGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlm
aWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAg
IHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3Jl
YXRlU2Vzc2lvbigpIGZpbmFsOwogICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8Q0RNSW5zdGFu
Y2VDbGllbnQ+JiYpIGZpbmFsOwpAQCAtOTQsMTAgKzk0LDEwIEBAIHB1YmxpYzoKIAogICAgIE5T
VVJMICpzdG9yYWdlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlVVJMLmdldCgpOyB9CiAg
ICAgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0
ZW50U3RhdGVBbGxvd2VkOyB9Ci0gICAgU2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0KKyAgICBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vy
dmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0KICAgICBBVkNvbnRlbnRLZXlTZXNzaW9uKiBjb250ZW50
S2V5U2Vzc2lvbigpOwogCi0gICAgUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IHRha2VV
bmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpOworICAgIFJldGFpblB0cjxB
VkNvbnRlbnRLZXlSZXF1ZXN0PiB0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXph
dGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBpbml0RGF0YSk7CiAKICAgICAvLyBBVkNvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGVD
bGllbnQKICAgICB2b2lkIGRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBm
aW5hbDsKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBvdXRwdXRPYnNjdXJl
ZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChib29sKSBmaW5hbDsK
ICAgICB2b2lkIGV4dGVybmFsUHJvdGVjdGlvblN0YXR1c0RpZENoYW5nZUZvckNvbnRlbnRLZXlS
ZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBmaW5hbDsKIAotICAgIHVzaW5nIEtleXMgPSBW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIEtleXMgPSBWZWN0b3I8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JLZXlJRHMoY29uc3QgS2V5cyYpIGNvbnN0OwogICAg
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvckdy
b3VwKEFWQ29udGVudEtleVJlcG9ydEdyb3VwKikgY29uc3Q7CiAgICAgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yUmVxdWVzdChBVkNvbnRlbnRL
ZXlSZXF1ZXN0KikgY29uc3Q7CkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICBXZWFr
UHRyPENETUluc3RhbmNlQ2xpZW50PiBtX2NsaWVudDsKICAgICBSZXRhaW5QdHI8QVZDb250ZW50
S2V5U2Vzc2lvbj4gbV9zZXNzaW9uOwogICAgIFJldGFpblB0cjxXZWJDb3JlRlBTQ29udGVudEtl
eVNlc3Npb25EZWxlZ2F0ZT4gbV9kZWxlZ2F0ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X3NlcnZlckNlcnRpZmljYXRlOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBt
X3NlcnZlckNlcnRpZmljYXRlOwogICAgIGJvb2wgbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkIHsg
dHJ1ZSB9OwogICAgIFJldGFpblB0cjxOU1VSTD4gbV9zdG9yYWdlVVJMOwogICAgIFZlY3RvcjxX
ZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4+IG1fc2Vz
c2lvbnM7CkBAIC0xNTAsOCArMTUwLDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBDRE1J
bnN0YW5jZVNlc3Npb24KLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEs
IExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVD
YWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNl
c3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNz
aW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5n
JiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9u
RGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFj
ayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXggNjJiZDEzNDc5YzZjMzM2
MmNiZTcyNTFiZjY5ZWE4ZDFmODEwYmUyNS4uYmE1MDYxZWJiNWM1ZmJlMDc0ZDNhMjlkZWE0Zjkx
OGZjMjYyMWNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KQEAgLTIxNyw3ICsyMTcsNyBA
QCBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAogICAgIHJldHVybiBBdG9tU3RyaW5n
KG5zSW5pdFR5cGUpOwogfQogCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gaW5pdGlhbGl6YXRp
b25EYXRhRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KiByZXF1ZXN0KQorc3RhdGljIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0aWFsaXphdGlvbkRhdGFGb3JSZXF1ZXN0KEFW
Q29udGVudEtleVJlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKQEAgLTI2NSw3ICsyNjUsNyBAQCBBVkNv
bnRlbnRLZXlTZXNzaW9uKiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y29u
dGVudEtleVNlc3Npb24oKQogICAgIHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7CiB9CiAKLVJldGFp
blB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6dGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK1JldGFp
blB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6dGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERh
dGEpCiB7CiAgICAgZm9yIChhdXRvIHJlcXVlc3RJdGVyID0gbV91bmV4cGVjdGVkS2V5UmVxdWVz
dHMuYmVnaW4oKTsgcmVxdWVzdEl0ZXIgIT0gbV91bmV4cGVjdGVkS2V5UmVxdWVzdHMuZW5kKCk7
ICsrcmVxdWVzdEl0ZXIpIHsKICAgICAgICAgYXV0byYgcmVxdWVzdCA9ICpyZXF1ZXN0SXRlcjsK
QEAgLTMxNiw3ICszMTYsNyBAQCBwcml2YXRlOgogICAgIFJlc3BvbnNlTWFwIG1fcmVzcG9uc2Vz
OwogfTsKIAotc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgUmVmUHRyPEpTT046OlZhbHVlPiBwYXJzZUpT
T05WYWx1ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8g
RmFpbCBvbiBsYXJnZSBidWZmZXJzIHdob3NlIHNpemUgZG9lc24ndCBmaXQgaW50byBhIDMyLWJp
dCB1bnNpZ25lZCBpbnRlZ2VyLgogICAgIHNpemVfdCBzaXplID0gYnVmZmVyLnNpemUoKTsKQEAg
LTM4MCw3ICszODAsNyBAQCB2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNSwogICAgIGNhbGxiYWNrKGlu
aXRpYWxpemUoKSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgc2VydmVyQ2VydGlm
aWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgc2VydmVyQ2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxi
YWNrKQogewogICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKICAgICBt
X3NlcnZlckNlcnRpZmljYXRlID0gV1RGTW92ZShzZXJ2ZXJDZXJ0aWZpY2F0ZSk7CkBAIC01ODUs
OCArNTg1LDggQEAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBD
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzoKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIGF1dG8gc2Vzc2lvbktleXMgPSBzZXNzaW9uSW50ZXJmYWNlLT5rZXlJRHMo
KTsKLSAgICAgICAgaWYgKGFueU9mKHNlc3Npb25LZXlzLCBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1
ZmZlcj4mIHNlc3Npb25LZXkpIHsKLSAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNo
aW5nKFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYga2V5SUQpIHsKKyAgICAgICAgaWYgKGFu
eU9mKHNlc3Npb25LZXlzLCBbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBz
ZXNzaW9uS2V5KSB7CisgICAgICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRNYXRjaGluZyhbJl0o
Y29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBrZXlJRCkgewogICAgICAgICAgICAg
ICAgIHJldHVybiBrZXlJRC5nZXQoKSA9PSBzZXNzaW9uS2V5LmdldCgpOwogICAgICAgICAgICAg
fSkgIT0gbm90Rm91bmQ7CiAgICAgICAgIH0pKQpAQCAtNjczLDcgKzY3Myw3IEBAIEtleXMgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjprZXlJRHMoKQogICAgIHJl
dHVybiBrZXlJRHM7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBM
aWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlw
ZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYg
KCFpc0xpY2Vuc2VUeXBlU3VwcG9ydGVkKGxpY2Vuc2VUeXBlKSkgewogICAgICAgICBERUJVR19M
T0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBmYWxzZSwgbGljZW5zZVR5cGUgXCIiLCBs
aWNlbnNlVHlwZSwgIlwiIG5vdCBzdXBwb3J0ZWQiKTsKQEAgLTczNiw3ICs3MzYsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUgbGljZQogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgaXNFcXVhbChjb25z
dCBTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUpCitzdGF0aWMgYm9vbCBp
c0VxdWFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IGRhdGEudHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKTsKICAgICBpZiAoIWFycmF5QnVmZmVyKQpAQCAtNzU0LDcgKzc1NCw3IEBAIHN0YXRpYyBi
b29sIGlzRXF1YWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIHZhbHVl
KQogICAgIHJldHVybiBzdHJpbmdPckV4Y2VwdGlvbi5yZXR1cm5WYWx1ZSgpID09IHZhbHVlOwog
fQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiByZXNwb25zZURhdGEsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IHJlc3BvbnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAg
aWYgKCFtX2V4cGlyZWRTZXNzaW9ucy5pc0VtcHR5KCkgJiYgaXNFcXVhbChyZXNwb25zZURhdGEs
ICJhY2tub3dsZWRnZWQiX3MpKSB7CiAgICAgICAgIGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0
YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKTsKQEAgLTg1Niw3ICs4NTYsNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25z
dCBTdHJpbmcmLCBMaQogICAgICAgICAgICAgYXV0byBrZXlJRCA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoKmtleUlEVmVjdG9yKSk7CiAgICAgICAgICAgICBhdXRvIGZvdW5kSW5kZXgg
PSBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmluZE1hdGNoaW5nKFsmXSAoYXV0
byYgcmVxdWVzdCkgewogICAgICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVx
dWVzdChyZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRN
YXRjaGluZyhbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGlkKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGtleUlEcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYgaWQpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlkLmdldCgpID09
IGtleUlELmdldCgpOwogICAgICAgICAgICAgICAgIH0pICE9IG5vdEZvdW5kOwogICAgICAgICAg
ICAgfSk7CkBAIC0xMTU1LDcgKzExNTUsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAg
IGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkp
CiAgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAKLSAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpw
YWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OworICAgIHVzaW5n
IFJlcXVlc3RzRGF0YSA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0
b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9y
PiB7CiAgICAgICAgIHVzaW5nIENhbGxiYWNrRnVuY3Rpb24gPSBGdW5jdGlvbjx2b2lkKFJlcXVl
c3RzRGF0YSYmKT47CiAgICAgICAgIHN0YXRpYyBSZWZQdHI8Q2FsbGJhY2tBZ2dyZWdhdG9yPiBj
cmVhdGUoQ2FsbGJhY2tGdW5jdGlvbiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTIxMSw3ICsx
MjExLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICBAdHJ5IHsKICAgICAgICAgZm9y
IChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAg
ICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsK
LSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMu
Zmlyc3QoKSk7CisgICAgICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4ga2V5
SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKICAgICAgICAgICAgIGF1dG8gY29udGVudElk
ZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
ICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBw
OmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIu
Z2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W2tleUlEID0gV1RGTW92ZShrZXlJ
RCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAq
ZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKaW5kZXggMDMzNGQ2
MjNiMmE3NjA1YzliZTEyMjEzYjVhYmRiYmFjMmIwM2YxNS4uNjJiODNmYmZkNTc5NDA1MGViYzk0
MDYzNzA0OTBiYTJiM2VjMDg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVj
b2RlckFWRk9iakMuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBXZWJDb3JlRGVjb21wcmVzc2lv
blNlc3Npb247CiAKIGNsYXNzIEltYWdlRGVjb2RlckFWRk9iakMgOiBwdWJsaWMgSW1hZ2VEZWNv
ZGVyIHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlRGVj
b2RlckFWRk9iakM+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gY3JlYXRlKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlckFWRk9i
akMoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHN1cHBvcnRzTWVkaWFUeXBl
KE1lZGlhVHlwZSk7CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2Ft
cGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0
aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFs
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcg
bG9uZykgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZl
ciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBm
aW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJGcmFt
ZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4gZnJhbWVJ
bmZvcygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIEltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKTsKKyAgICBJbWFnZURlY29kZXJBVkZPYmpDKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgQVZBc3NldFRyYWNrICpmaXJzdEVuYWJsZWRUcmFj
aygpOwogICAgIHZvaWQgcmVhZFNhbXBsZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IGE1NGRmM2RiYWRmOTA0ZjQ1NDg0YjhjZTViY2E0
OWZjNTU2OGZlYjkuLjM1YzZjZTY3ZTg1Zjg2YWUxNjRjMjFhNzI2MDdmYzA2NWVjYjUwNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtMjg5
LDcgKzI4OSw3IEBAIEltYWdlRGVjb2RlckFWRk9iakNTYW1wbGUqIHRvU2FtcGxlKEl0ZXJhdG9y
IGl0ZXIpCiAKICNwcmFnbWEgbWFyayAtIEltYWdlRGVjb2RlckFWRk9iakMKIAotUmVmUHRyPElt
YWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikK
K1JlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxw
aGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIC8vIEFWRm91bmRhdGlvbiBtYXkgbm90IGJlIGF2
YWlsYWJsZSBhdCBydW50aW1lLgogICAgIGlmICghQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmds
ZXRvbigpLmlzQXZhaWxhYmxlKCkpCkBAIC0zMDEsNyArMzAxLDcgQEAgUmVmUHRyPEltYWdlRGVj
b2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRh
dGEsIGNvbnMKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJBVkZPYmpDKGRh
dGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsK
IH0KIAotSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9i
akMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
QWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogSW1hZ2VEZWNv
ZGVyKCkKICAgICAsIG1fbWltZVR5cGUobWltZVR5cGUpCiAgICAgLCBtX3V0aShXZWJDb3JlOjpV
VElGcm9tTUlNRVR5cGUobWltZVR5cGUpKQpAQCAtNjQxLDcgKzY0MSw3IEBAIHZvaWQgSW1hZ2VE
ZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRD
b250ZW50U2l6ZSkKICAgICBtX2xvYWRlci5nZXQoKS5leHBlY3RlZENvbnRlbnRTaXplID0gZXhw
ZWN0ZWRDb250ZW50U2l6ZTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRh
KFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVj
b2RlckFWRk9iakM6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRd
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggMjAwZTFhOGY5YWZiYTBmY2JiYTViMGEzZWQ3
MDRjZDM0MWI0NTBkNi4uYzlkOWIyYTk2ODViMDFlOTFhYWEwMGMwZTAwMzA3NzM4NTY5MTQyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBJbmJhbmRNZXRh
ZGF0YVRleHRUcmFja1ByaXZhdGVBVkY7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xh
c3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7CiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1l
ckNWOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlQVZG
T2JqQzsKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjsKQEAgLTQyNiw3ICs0MjYsNyBA
QCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbV93YWxsQ2xv
Y2tBdENhY2hlZEN1cnJlbnRUaW1lOwogICAgIG11dGFibGUgaW50IG1fdGltZUNvbnRyb2xTdGF0
dXNBdENhY2hlZEN1cnJlbnRUaW1lIHsgMCB9OwogICAgIG11dGFibGUgZG91YmxlIG1fcmVxdWVz
dGVkUmF0ZUF0Q2FjaGVkQ3VycmVudFRpbWUgeyAwIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9rZXlJRDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsK
ICAgICBkb3VibGUgbV9jYWNoZWRSYXRlIHsgMCB9OwogICAgIGJvb2wgbV9yZXF1ZXN0ZWRQbGF5
aW5nIHsgZmFsc2UgfTsKICAgICBkb3VibGUgbV9yZXF1ZXN0ZWRSYXRlIHsgMS4wIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQppbmRleCBkMThhODVhNzk0ZjUyM2Y5NDkxMmUyN2YwOGI3Y2NiZTg5
M2M4ZWQwLi5iMWM2MDc5YzY0ODcwZjg4ZTM1YzgwODExYTViMThiZGExYjdmNjE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KQEAgLTI3OTIsNyArMjc5Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1J
bnN0YW5jCiAgICAgaWYgKCFtX2tleUlEIHx8ICFtX2NkbUluc3RhbmNlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1fY2RtSW5zdGFuY2UtPnNlc3Npb25G
b3JLZXlJRHMoVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOworICAg
IGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOwogICAg
IGlmICghaW5zdGFuY2VTZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IDAzNDIw
ZjEzODM2NGZhYzIwOTFlMTA0ZDEzNmZmMzhhMWZiOWZlMjIuLmVhZDA4M2E2Y2M3ZTczNmI0MjE3
MTBmYWMzOTJhMDdkZmY5MmJlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtNzMsNyArNzMsNyBAQCBjbGFzcyBWaWRl
b1RyYWNrUHJpdmF0ZTsKIGNsYXNzIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
OwogY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFzcyBXZWJD
b3JlRGVjb21wcmVzc2lvblNlc3Npb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQ0Vy
cm9yQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSWQoUmVmPE1lZGlhU2FtcGxlPiYmLCB1aW50
NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CiAKICAgICAvLyBTb3VyY2VC
dWZmZXJQcml2YXRlIG92ZXJyaWRlcwotICAgIHZvaWQgYXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+
JiYpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KSBmaW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNldFBhcnNlclN0
YXRlKCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgZmluYWw7CkBA
IC0yMjEsNyArMjIxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKICAgICBSZWZQdHI8Q0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+IG1fY2RtSW5zdGFuY2U7Ci0gICAgVmVjdG9yPFJl
ZjxTaGFyZWRCdWZmZXI+PiBtX2tleUlEczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiBtX2tleUlEczsKICNlbmRpZgogCiAgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNp
emU+IG1fY2FjaGVkU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggM2EyODY3YTFhYzI0M2JiOWM5M2M5ZDZiNzBj
YTU2YjAyOTQ4ZmM5Yy4uMjRhZTBlMTQwNjAxOTE0M2ZhZDRmMTUyOWU2OGVkNDliNDE2NTNjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMubW0KQEAgLTU2Myw3ICs1NjMsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGbwogICAg
IFVOVVNFRF9QQVJBTShoYXNTZXNzaW9uU2VtYXBob3JlKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImRhdGEgbGVu
Z3RoID0gIiwgZGF0YS0+c2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCA1ODM4ZTQ5MzdkZjg5ZjU4NjFhY2Q5ZDk2
ZGMxMjI5NWI2YmM3NDNkLi4wZWZlZWFlZjViMmQ3MWJjNmQ2NzA0ZGQxYjk3NWFjYmFlMTEzYmJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOwogY2xhc3MgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOwogY2xhc3MgUmVzb3Vy
Y2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
c3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZh
aWxlZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAg
ICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsK
KyAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJik7CiAKICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBt
X3BhcmVudDsKICAgICBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IG1f
YXZSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLm1tCmluZGV4IGI2ZTIzN2I1ZGY1ZGRmNmE3MmQ1NDE2OTVhMDc4MjMxODFhY2Fk
YWQuLmY5MjFmM2RhMGU2OWIzMzk5NzdjOWUzZTQ5NjY3YTI4ZjVlOTVjYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTE1
Niw3ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIGZpbmFsIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1
ZXN0KSk7IH0KICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxv
bmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgZmluYWwgeyB9Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAg
dm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5h
bCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWls
ZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBsb2FkRmluaXNoZWQoKTsgfQpA
QCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2Fk
RmluaXNoZWQoKQogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQogCi12b2lkIFBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBQbGF0Zm9ybVJlc291cmNlTWVk
aWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgbV9idWZmZXIuYXBwZW5kKFdURk1v
dmUoYnVmZmVyKSk7CiAgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCpt
X2J1ZmZlci5nZXQoKSk7CkBAIC0yMjUsNyArMjI1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlc291cmNlUmVzcG9u
c2UgbV9yZXNwb25zZTsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiBEYXRhVVJMUmVz
b3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyJiBwYXJlbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMzUs
NyArMjM1LDcgQEAgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1l
ZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYKIAogICAgIGlmIChhdXRvIHJlc3Vs
dCA9IERhdGFVUkxEZWNvZGVyOjpkZWNvZGUocmVxdWVzdC51cmwoKSwgRGF0YVVSTERlY29kZXI6
Ok1vZGU6OkZvcmdpdmluZ0Jhc2U2NCkpIHsKICAgICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNl
UmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAgICAg
ICAgbV9idWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1
bHQtPmRhdGEpKTsKKyAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKHJlc3VsdC0+ZGF0YSkpOwogICAgIH0KIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMs
IHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lk
IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAgICBzdG9wTG9hZGlu
ZygpOwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZElu
U2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJl
cXVlc3QqIGRhdGFSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAo
IWRhdGFSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDQ2YjA3ZmU3
MTJlNzllNjEzMTdjMGQxMTZmZTZhM2YwNGFmOWZmY2IuLjk0MTliY2VhMzhkYmY4ZDY0OTJmNjgw
MWQ5YTIxNTYyMzY2YTJjNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTMx
LDExICszMSwxMSBAQCB0eXBlZGVmIHN0cnVjdCBGVF9GYWNlUmVjXyogIEZUX0ZhY2U7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVz
Y3JpcHRpb247CiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lm
aWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiAKQEAgLTQ2LDcg
KzQ2LDcgQEAgc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRDdXN0b21QbGF0Zm9y
bURhdGEpOwogcHVibGljOgotICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSwgU2hh
cmVkQnVmZmVyJik7CisgICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9GYWNlLCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CiAgICAgfkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKSA9IGRlZmF1
bHQ7CiAgICAgRm9udFBsYXRmb3JtRGF0YSBmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRl
eHQmKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmKTsKQEAg
LTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Y2Fpcm9fZm9udF9mYWNlX3Q+IG1f
Zm9udEZhY2U7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29u
c3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggMjAzNWM5OWE3ZjY4
YjU0ODljODU4YTNlNmQ3MDMzZDEzNWQxZjdkYi4uYjZkM2ViMzYzMTEyNDQ2MTNiMzgwM2YyZjNk
MjRkMzA4N2VhMjRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVByb3BlcnRpZXMo
Q0ZEaWN0aW9uYXJ5UmVmCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1ZmZl
ckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0
aW9uLCBzaXplX3QgY291bnQpCiB7Ci0gICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogc2hhcmVk
QnVmZmVyID0gc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGluZm8pOworICAg
IFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4o
aW5mbyk7CiAgICAgc2l6ZV90IHNvdXJjZVNpemUgPSBzaGFyZWRCdWZmZXItPnNpemUoKTsKICAg
ICBpZiAocG9zaXRpb24gPj0gc291cmNlU2l6ZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNDQs
MTIgKzI0NCwxMiBAQCBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQq
IGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sCiAKIHZvaWQgc2hhcmVkQnVmZmVy
UmVsZWFzZSh2b2lkKiBpbmZvKQogewotICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0g
c3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+
KGluZm8pOwogICAgIHNoYXJlZEJ1ZmZlci0+ZGVyZWYoKTsKIH0KICNlbmRpZgogCi1JbWFnZURl
Y29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVy
Q0coRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKQogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsK
ICAgICBpZiAoZGF0YS5zaXplKCkgPj0gMzIpCkBAIC01NjIsMjAgKzU2MiwyMCBAQCBQbGF0Zm9y
bUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaQogICAgIHJldHVybiBtYXNrZWRJbWFnZSA/IG1hc2tlZEltYWdlIDog
aW1hZ2U7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAg
ICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZlZDsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVy
IGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBr
bm93bGVkZ2UuCi0gICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBp
dHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1h
Z2VJTyBpcwotICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCisgICAg
Ly8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGNh
biBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJ3Mga25vd2xlZGdlLgorICAgIC8vIFdlIHVzZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3Mg
YWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywg
ZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCisgICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRp
dmVEZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdl
dCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UKLSAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92
aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCisgICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJv
dmlkZXIgdG8gd3JhcCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KICAgICBhdXRvIGNvbnRp
Z3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIGNvbnRpZ3VvdXNEYXRhLmdl
dCgpLnJlZigpOwotICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNhbGxiYWNr
IHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBTaGFyZWRCdWZmZXIK
KyAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhh
biB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgog
ICAgIC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50
ZXIgYW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMgYSBy
ZXF1aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgogICAgIENH
RGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAw
LCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5oCmluZGV4IDk3NDA3MzZhMjFhYzk5OGFiMDVmMWM5YjRmNWIxNjc1ZTQ0ZDJjOTEuLmEw
YWMxYzJmYmVlNTI3ZTVhYjExMTQ1NTgxMmJkYjczNjNhMDU1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApAQCAtMzIs
OSArMzIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbWFnZURlY29kZXJDRyBmaW5h
bCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIEltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBJbWFnZURlY29kZXJDRyhGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOwogCi0gICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJDRz4gY3JlYXRlKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIHN0YXRpYyBSZWY8SW1h
Z2VEZWNvZGVyQ0c+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFn
ZURlY29kZXJDRyhkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
KTsKICAgICB9CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQ
dHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vi
c2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5n
T3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNl
dERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZv
aWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
IGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUo
c2l6ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCmluZGV4IDg0
NGFjNDRmM2FkZGZhOWYzOTU3ODZiOTRiZGQ1MDk0MWU3Mjc1NGIuLjg1NDIxZTNkZTcwOWNlMTU5
YzQ5NGI0MGZiOGQxYWQyMzU5M2MzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0K
QEAgLTU3LDcgKzU3LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwo
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIENGRXF1YWwo
bV9mb250LmdldCgpLCBvdGhlci5tX2ZvbnQuZ2V0KCkpOwogfQogCi1SZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVp
bnQzMl90KSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxh
dGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAogewogICAgIHJldHVybiBudWxscHRy
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKaW5kZXggZjc0N2Q4MGZiNjFkMzBmYzUwMjJl
NjgyZDYzNTYxMzNkM2NhNjk3YS4uYzhhODA2MTIyMDUzZjY0OGFkZGIwMmFjMzg5Y2U3MTQzNjhk
YmJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQg
U291cmNlQnVmZmVyUGFyc2VyOjpzZXRNaW5pbXVtQXVkaW9TYW1wbGVEdXJhdGlvbihmbG9hdCkK
IHsKIH0KIAotU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50KFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQorU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50KFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fc2VnbWVudChXVEZN
b3ZlKGJ1ZmZlcikpCiB7CiB9CkBAIC0xMDEsNyArMTAxLDcgQEAgc2l6ZV90IFNvdXJjZUJ1ZmZl
clBhcnNlcjo6U2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gY2xhbXBU
bzxzaXplX3Q+KE1UUGx1Z2luQnl0ZVNvdXJjZUdldExlbmd0aChieXRlU291cmNlLmdldCgpKSk7
CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikKKyAgICAgICAgW10oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBidWZmZXItPnNpemUoKTsKICAg
ICAgICAgfQpAQCAtMTI1LDcgKzEyNSw3IEBAIGF1dG8gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdt
ZW50OjpyZWFkKHNpemVfdCBwb3NpdGlvbiwgc2l6ZV90IHNpemVUb1JlYWQsIHVpbnQ4CiAgICAg
ICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxSZWFkRXJyb3I+IHsgUmVhZEVycm9yOjpGYXRhbEVy
cm9yIH07CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAgICAgWyZdKGNvbnN0IFJlZjxTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIC0+IFJlYWRSZXN1bHQKKyAgICAgICAgWyZdKGNvbnN0IFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZWFkUmVzdWx0CiAgICAgICAgIHsKICAg
ICAgICAgICAgIGJ1ZmZlci0+Y29weVRvKGRlc3RpbmF0aW9uLCBwb3NpdGlvbiwgc2l6ZVRvUmVh
ZCk7CiAgICAgICAgICAgICByZXR1cm4gc2l6ZVRvUmVhZDsKQEAgLTEzMyw3ICsxMzMsNyBAQCBh
dXRvIFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6cmVhZChzaXplX3QgcG9zaXRpb24sIHNp
emVfdCBzaXplVG9SZWFkLCB1aW50OAogICAgICk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNv
dXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1ZmZlcigpCitSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50Ojp0YWtlU2hhcmVk
QnVmZmVyKCkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3NlZ21lbnQsCiAjaWYgSEFW
RShNVF9QTFVHSU5fRk9STUFUX1JFQURFUikKQEAgLTE0MiwyOCArMTQyLDI4IEBAIFJlZjxTaGFy
ZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1ZmZlcigp
CiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yKHNpemUoKSk7CiAgICAgICAgICAg
ICBhdXRvIHJlYWRSZXN1bHQgPSByZWFkKDAsIHZlY3Rvci5zaXplKCksIHZlY3Rvci5kYXRhKCkp
OwogICAgICAgICAgICAgaWYgKCFyZWFkUmVzdWx0Lmhhc192YWx1ZSgpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgICAgIHJldHVy
biBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgICAgIHZlY3Rvci5z
aHJpbmsocmVhZFJlc3VsdC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpOworICAgICAgICAgICAgcmV0dXJuIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpOwogICAgICAgICB9LAogI2Vu
ZGlmCi0gICAgICAgIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorICAgICAgICBbJl0o
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKGJ1ZmZlciwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShidWZmZXIsIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpKTsKICAgICAgICAgfQogICAgICk7CiB9CiAKLVJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6Z2V0U2hhcmVkQnVmZmVyKCkg
Y29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6
OlNlZ21lbnQ6OmdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dp
dGNoT24obV9zZWdtZW50LAogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCi0gICAg
ICAgIFsmXShjb25zdCBSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiYpIC0+IFJlZlB0
cjxTaGFyZWRCdWZmZXI+CisgICAgICAgIFsmXShjb25zdCBSZXRhaW5QdHI8TVRQbHVnaW5CeXRl
U291cmNlUmVmPiYpIC0+IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPgogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfSwKICNlbmRpZgotICAgICAg
ICBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4KKyAgICAgICAgWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKSAtPiBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIGJ1ZmZlci5wdHIoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIu
aAppbmRleCA1MjBiNTIwN2ZjMjcxZDc5ODE1MzNmYjE0ZDIzMTU1OTRhODg4MzY1Li43Mjk3YTc5
MTRhNzlhZGY2NDJkYzZiMTZiMzZlNjBmOWNkMDI5ZjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIu
aApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRU
eXBlOwogY2xhc3MgTWVkaWFTYW1wbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTb3VyY2VCdWZmZXJQ
YXJzZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlQnVmZmVyUGFyc2VyPiB7
CiBwdWJsaWM6CkBAIC02OSwxMSArNjksMTEgQEAgcHVibGljOgogI2lmIEhBVkUoTVRfUExVR0lO
X0ZPUk1BVF9SRUFERVIpCiAgICAgICAgIFNlZ21lbnQoUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNv
dXJjZVJlZj4mJik7CiAjZW5kaWYKLSAgICAgICAgU2VnbWVudChSZWY8U2hhcmVkQnVmZmVyPiYm
KTsKKyAgICAgICAgU2VnbWVudChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAg
ICAgIFNlZ21lbnQoU2VnbWVudCYmKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IHRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICAgICAgLy8gV2lsbCByZXR1cm4gbnVsbHB0ciBp
ZiBTZWdtZW50J3MgYmFja2VuZCBpc24ndCBhIFNoYXJlZEJ1ZmZlci4KLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZ2V0U2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgICAgIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlU2hhcmVkQnVmZmVyKCk7CisgICAgICAgIC8vIFdpbGwg
cmV0dXJuIG51bGxwdHIgaWYgU2VnbWVudCdzIGJhY2tlbmQgaXNuJ3QgYSBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyLgorICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZ2V0U2hh
cmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKIApAQCAt
ODcsNyArODcsNyBAQCBwdWJsaWM6CiAjaWYgSEFWRShNVF9QTFVHSU5fRk9STUFUX1JFQURFUikK
ICAgICAgICAgICAgIFJldGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VSZWY+LAogI2VuZGlmCi0g
ICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPgorICAgICAgICAgICAgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+CiAgICAgICAgID4gbV9zZWdtZW50OwogICAgIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggNjFkYmQ2MmM5ZTNlOWYzMTU3OTg1MDVlYjUwNDBm
OTlmZjhjNWJmMS4uOWJjMTg5NDE5ODYzMGJhZDhkN2NiZDBiM2E1YjI4ZTQ2ZTllZmUyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTM4OCw3ICszODgsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgYWR2YW5jZVRvTmV4dFNlZ21lbnQoKTsKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNoYXJlZEJ1ZmZlciA9IGN1cnJlbnRTZWdtZW50LmdldFNoYXJlZEJ1ZmZlcigpOwor
ICAgICAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9
IGN1cnJlbnRTZWdtZW50LmdldFNoYXJlZEJ1ZmZlcigpOwogICAgICAgICAgICAgQ01CbG9ja0J1
ZmZlclJlZiByYXdCbG9ja0J1ZmZlciA9IG51bGxwdHI7CiAgICAgICAgICAgICB1aW50NjRfdCBs
YXN0UmVhZCA9IDA7CiAgICAgICAgICAgICBzaXplX3QgZGVzdGluYXRpb25PZmZzZXQgPSBtX3Bv
c2l0aW9uV2l0aGluU2VnbWVudDsKQEAgLTQwOSw3ICs0MDksNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgZGVzdGluYXRpb25PZmZzZXQgPSAwOwogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICBBU1NFUlQoc2hhcmVkQnVmZmVyLT5oYXNPbmVTZWdtZW50KCksICJDYW4g
b25seSBkZWFsIHdpdGggc2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgYSBzaW5nbGUgRGF0YVNlZ21l
bnQiKTsKLSAgICAgICAgICAgICAgICAvLyBBIFNoYXJlZEJ1ZmZlciBkb2Vzbid0IGhhdmUgdGhy
ZWFkLXNhZmUgcmVmY291bnRpbmcsIGFzIHN1Y2ggd2UgbXVzdCBrZWVwIGEgcmVmZXJlbmNlIHRv
IHRoZSBEYXRhU2VnbWVudCBpbnN0ZWFkLgorICAgICAgICAgICAgICAgIC8vIEEgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciBkb2Vzbid0IGhhdmUgdGhyZWFkLXNhZmUgcmVmY291bnRpbmcsIGFzIHN1
Y2ggd2UgbXVzdCBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBEYXRhU2VnbWVudCBpbnN0ZWFkLgog
ICAgICAgICAgICAgICAgIC8vIFRPRE86IGNvdWxkIHdlIG9ubHkgY3JlYXRlIGEgbmV3IENNQmxv
Y2tCdWZmZXIgaWYgdGhlIGJhY2tlbmQgbWVtb3J5IGNoYW5nZWQgc2luY2UgdGhlIHByZXZpb3Vz
IG9uZT8KICAgICAgICAgICAgICAgICBhdXRvIGZpcnN0U2VnbWVudCA9IHNoYXJlZEJ1ZmZlci0+
YmVnaW4oKS0+c2VnbWVudDsKICAgICAgICAgICAgICAgICBzaXplX3QgY2FuUmVhZCA9IHN0ZDo6
bWluPHNpemVfdD4obnVtVG9SZWFkLCBmaXJzdFNlZ21lbnQtPnNpemUoKSAtIG1fcG9zaXRpb25X
aXRoaW5TZWdtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3Bw
CmluZGV4IGNjNTk0ZjM4NGU1NjM1ZGVkYThmNDIzZjY4NGRhNWI1NTQ5NzA2NzEuLjU5ZDIxNjY3
OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBs
YXRmb3JtRGF0YUNvcmVUZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWluUHRyPENG
VHlwZVJlZj4gRm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpIGNvbnN0
CiAgICAgcmV0dXJuIG9iamVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQogCi1SZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJs
ZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9y
bURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgaWYgKFJl
dGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlUYWJsZShjdEZvbnQo
KSwgdGFibGUsIGtDVEZvbnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQotICAgICAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4gcGxhdGZv
cm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5jcHAKaW5kZXggNDAyNWUwNjkyZGM1YTE1ZTk3MzY5NTgwMzMzZjZmYTNiOWJm
YmQ0Yi4uYmE2MDVkY2IzMWQ1Mjk0N2FjMmE3MTQ2YzFkZTg0MGNkNGE0ODc1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTczNyw3ICs3MzcsNyBA
QCBEaWRDaGFuZ2VJdGVtQnVmZmVyIEl0ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1ZmZlcklmTmVl
ZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVzKQogdm9pZCBJdGVtQnVmZmVyOjphcHBlbmQoY29uc3Qg
RGlzcGxheUxpc3RJdGVtJiB0ZW1wb3JhcnlJdGVtKQogewogICAgIGF1dG8gcmVxdWlyZWRTaXpl
Rm9ySXRlbSA9IG1fd3JpdGluZ0NsaWVudC0+cmVxdWlyZWRTaXplRm9ySXRlbSh0ZW1wb3JhcnlJ
dGVtKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvdXRPZkxpbmVJdGVtOworICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdXRPZkxpbmVJdGVtOwogICAgIGlmICghcmVxdWly
ZWRTaXplRm9ySXRlbSkgewogICAgICAgICBvdXRPZkxpbmVJdGVtID0gbV93cml0aW5nQ2xpZW50
LT5lbmNvZGVJdGVtT3V0T2ZMaW5lKHRlbXBvcmFyeUl0ZW0pOwogICAgICAgICBpZiAoIW91dE9m
TGluZUl0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKaW5kZXgg
Yzg3MzE5ODJlZjgzOTMxYmJhZTMxYjc4NjUwYWMwZGEyMGEwNWZjNS4uYjMxYmM1ZmQ0ZTkyMTRi
MTVhMzc2MWZiZTk4ZDYwY2ViNDdhOThmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1CdWZmZXIuaApAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QKKyAgICB2
aXJ0dWFsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5l
KGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CkBAIC0xNjgsNyArMTY4LDcgQEAgcHVibGljOgogICAgIC8vIHdpdGggcGFk
ZGluZyBiZXR3ZWVuIGVhY2ggaXRlbSB0byBlbnN1cmUgdGhhdCBhbGwgaXRlbXMgYXJlIGFsaWdu
ZWQgdG8gOCBieXRlcy4KICAgICAvLwogICAgIC8vIElmIGEgd3JpdGluZyBjbGllbnQgaXMgcHJl
c2VudCBhbmQgcmVxdWlyZXMgY3VzdG9tIGVuY29kaW5nIGZvciB0aGUgZ2l2ZW4gaXRlbSB0eXBl
IFQsIHRoZQotICAgIC8vIGl0ZW0gYnVmZmVyIHdpbGwgYXNrIHRoZSBjbGllbnQgZm9yIGFuIG9w
YXF1ZSBTaGFyZWRCdWZmZXIgY29udGFpbmluZyBlbmNvZGVkIGRhdGEgZm9yIHRoZQorICAgIC8v
IGl0ZW0gYnVmZmVyIHdpbGwgYXNrIHRoZSBjbGllbnQgZm9yIGFuIG9wYXF1ZSBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgZW5jb2RlZCBkYXRhIGZvciB0aGUKICAgICAvLyBpdGVt
LiBUaGlzIGVuY29kZWQgZGF0YSBpcyB0aGVuIGFwcGVuZGVkIHRvIHRoZSBpdGVtIGJ1ZmZlciwg
d2l0aCBwYWRkaW5nIHRvIGVuc3VyZSB0aGF0CiAgICAgLy8gdGhlIHN0YXJ0IGFuZCBlbmQgb2Yg
dGhpcyBkYXRhIGFyZSBhbGlnbmVkIHRvIDggYnl0ZXMsIGlmIG5lY2Vzc2FyeS4gV2hlbiBjb25z
dW1pbmcgZW5jb2RlZAogICAgIC8vIGl0ZW0gZGF0YSwgYSBjb3JyZXNwb25kaW5nIEl0ZW1CdWZm
ZXJSZWFkaW5nQ2xpZW50IHdpbGwgYmUgcmVxdWlyZWQgdG8gY29udmVydCB0aGlzIGVuY29kZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmlu
ZGV4IGNjZGFkYjBkYTExYjU5ODVhMzQzODYxOWRiMGRmMjMzMDFhNzI1YTMuLjJiNDQzZmJiZWQy
YzFmZGU0OGJjZGU5Y2JlNDA5NTM0OTdmZGU5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMzgsMTIgKzM4LDEyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHZvaWQgcmVsZWFzZUN1c3RvbUZvbnREYXRhKHZvaWQq
IGRhdGEpCiB7Ci0gICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7
CisgICAgc3RhdGljX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigp
OwogfQogCiBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tleV90IGZyZWVUeXBlRmFjZUtleTsKIAot
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9GYWNlIGZy
ZWVUeXBlRmFjZSwgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitGb250Q3VzdG9tUGxhdGZvcm1EYXRh
OjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhKEZUX0ZhY2UgZnJlZVR5cGVGYWNlLCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgOiBtX2ZvbnRGYWNlKGFkb3B0UmVmKGNhaXJvX2Z0
X2ZvbnRfZmFjZV9jcmVhdGVfZm9yX2Z0X2ZhY2UoZnJlZVR5cGVGYWNlLCBGVF9MT0FEX0RFRkFV
TFQpKSkKIHsKICAgICBidWZmZXIucmVmKCk7IC8vIFRoaXMgaXMgYmFsYW5jZWQgYnkgdGhlIGJ1
ZmZlci0+ZGVyZWYoKSBpbiByZWxlYXNlQ3VzdG9tRm9udERhdGEuCkBAIC0xMjksNyArMTI5LDcg
QEAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShGVF9MaWJyYXJ5JiBsaWJy
YXJ5KQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJikKIHsKICAgICBzdGF0aWMgRlRfTGlicmFyeSBsaWJyYXJ5
OwogICAgIGlmICghbGlicmFyeSAmJiAhaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShsaWJyYXJ5
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggZmVk
ODU0MGY0YWViYzg0YzY5YjI5MDgwNjk3YzEyNDYwMWQ1YjYyNi4uNjg5Y2I2NzllNjMyZTJmNWEy
YTJmZTA2NDU4MTFkODg2NmE5MGM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRh
RnJlZVR5cGUuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpo
YXNDb21wYXRpYmxlQ2hhcm1hcCgpIGNvbnN0CiAgICAgICAgICYmIEZUX1NlbGVjdF9DaGFybWFw
KGZyZWVUeXBlRmFjZSwgZnRfZW5jb2RpbmdfYXBwbGVfcm9tYW4pKTsKIH0KIAotUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWlu
dDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRh
OjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIENhaXJvRnRGYWNl
TG9ja2VyIGNhaXJvRnRGYWNlTG9ja2VyKG1fc2NhbGVkRm9udC5nZXQoKSk7CiAgICAgRlRfRmFj
ZSBmcmVlVHlwZUZhY2UgPSBjYWlyb0Z0RmFjZUxvY2tlci5mdEZhY2UoKTsKQEAgLTI2OCw3ICsy
NjgsNyBAQCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6
b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgYwogICAgIGlmIChlcnJvciB8fCB0YWJsZVNp
emUgIT0gZXhwZWN0ZWRUYWJsZVNpemUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKICNpZiBV
U0UoSEFSRkJVWlopICYmICFFTkFCTEUoT1BFTlRZUEVfTUFUSCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNv
bW1vbi5jcHAKaW5kZXggMTQ3NDgyOGZkZTY2OTI0ZDQyYmFhYzMzMzRmZjhkNWMzYjRhZDc2NC4u
MDE2MDVmYzkxNDk3ZTQ2MmJhMDc3MzA0NzhlODRhODU1MWU2NzIzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckNvbW1vbi5jcHAKQEAgLTQyMiw5ICs0MjIsOSBAQCBWZWN0b3I8dWludDhfdD4gR3N0TWFw
cGVkQnVmZmVyOjpjcmVhdGVWZWN0b3IoKSBjb25zdAogICAgIHJldHVybiB7IGRhdGEoKSwgc2l6
ZSgpIH07CiB9CiAKLVJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1
ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxTaGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93
bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgqdGhpcyk7CiB9CiAKIGJvb2wgaXNHU3RyZWFtZXJQbHVnaW5BdmFpbGFibGUoY29uc3Qg
Y2hhciogbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaAppbmRleCBkMDE0Y2M2YTVkYzdiMTdl
Mzk5NjAwNmJmNmVhNjhhOGJjOTk0YzQyLi5iYmI4YzEzOTZmMDAzZDY0MjY4ODk3OWE2ODRjNjYx
YjFjYjg3MWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCkBAIC0zMiw3ICszMiw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBpbmxpbmUgYm9vbCB3ZWJraXRHc3RD
aGVja1ZlcnNpb24oZ3VpbnQgbWFqb3IsIGd1aW50IG1pbm9yLCBndWludCBtaWNybykKIHsKQEAg
LTE5MCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHVubWFwRWFybHkoKTsKICAgICB9CiAK
LSAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7Cisg
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7CiAKIHByaXZhdGU6CiAg
ICAgR3N0TWFwcGVkT3duZWRCdWZmZXIoR1JlZlB0cjxHc3RCdWZmZXI+JiYgYnVmZmVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRleCAyOWIzYTUwMWQ4ZTlhOTYy
YTBjM2QwNGZiMjYxMjZlYTQzYTM1NTI2Li5kZmJjNTgwZmI4ZTliMzA5MzZjY2EwOGJiODhiNDlj
MmJiNjUzYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAt
ODEsMTIgKzgxLDEyIEBAIEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZSogdG9TYW1wbGUoSXRl
cmF0b3IgaXRlcikKICAgICByZXR1cm4gKEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZSopaXRl
ci0+c2Vjb25kLmdldCgpOwogfQogCi1SZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBJbWFn
ZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJH
U3RyZWFtZXI+IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJHU3RyZWFtZXIoZGF0
YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwog
fQogCi1JbWFnZURlY29kZXJHU3RyZWFtZXI6OkltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRC
dWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW1hZ2VEZWNvZGVy
R1N0cmVhbWVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICA6IG1f
bWltZVR5cGUobWltZVR5cGUpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFn
OwpAQCAtMTk5LDcgKzE5OSw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCkKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRh
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wpCiB7CiAgICAgcHVzaEVuY29kZWRE
YXRhKGRhdGEpOwogfQpAQCAtNDI2LDcgKzQyNiw3IEBAIEVuY29kZWREYXRhU3RhdHVzIEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjplbmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0
CiAgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpVbmtub3duOwogfQogCi12b2lkIEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQordm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBjb250aWd1b3VzQnVm
ZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV9lb3MgPSBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURl
Y29kZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAppbmRleCA2NmYzMzcyODQ2YTRkZjg3NGY0MjBk
YjY1NGU2ODljOWU0M2IwYzUyLi5kM2VmNmE0NWNkN2RiZGZjMzEyMGVhMjNmOGRlYjNjNTk5NzFh
ZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCkBAIC00MSw4ICs0MSw4
IEBAIGNsYXNzIEltYWdlRGVjb2RlckdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29k
ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEltYWdlRGVjb2RlckdTdHJlYW1lcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJ
bWFnZURlY29kZXJHU3RyZWFtZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwotICAg
IEltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRp
YyBSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlckdTdHJlYW1lcigp
ID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlw
ZSB0eXBlKSB7IHJldHVybiB0eXBlID09IE1lZGlhVHlwZTo6VmlkZW87IH0KQEAgLTcyLDcgKzcy
LDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5
bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9u
ZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRh
UmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2VvczsgfQogICAgIHZvaWQgY2xlYXJG
cmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2
YXRlOgogICAgIH07CiAKICAgICB2b2lkIGhhbmRsZVNhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4m
Jik7Ci0gICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAg
dm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAg
ICAgY29uc3QgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKiBzYW1wbGVBdEluZGV4KHNpemVf
dCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAK
aW5kZXggNWQ4NmZiMWFmNDg3YzAyODllMDAxMjU1OTY1YzMxZGNkYTk3MzQyNi4uOTMwMTkwOTk0
NWI0YTIzZDY2NzgyZjM1MGI1NmU0NDc5ZjgwMjZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKIAogICAg
IC8vIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCB2aXJ0dWFsIG1ldGhvZHMuCiAgICAgdm9p
ZCByZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRpbnVlUG9saWN5Q2hl
Y2spPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNl
aXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQg
bG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC0xMDkzLDcgKzEwOTMsNyBA
QCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENv
bnRpbnVlUG9saWN5Q2hlY2s6Olllcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1p
bmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBXZWJL
aXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlD
bGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9DRE1Qcm94eUNsZWFyS2V5LmgKaW5kZXggNjkyYTk5NmQxOWMyNGVmZDlhNDg1NTIzNzNhNTY3
OWI1MmUxZWYxYy4uMzQ5YmZkY2FhZDZjN2Q3ZjhkNWFkYTBhMTcyMTlmZDllNzA2MjZmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9D
RE1Qcm94eUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmgKQEAgLTYyLDExICs2MiwxMSBAQCBwdWJs
aWM6CiAgICAgQ0RNUHJveHlDbGVhcktleSgpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIH5DRE1Q
cm94eUNsZWFyS2V5KCk7CiAKLSAgICAvLyBGSVhNRTogVGhlcmUncyBhIGxhY2sgb2YgY29uc2lz
dGVuY3kgYmV0d2VlbiBTaGFyZWRCdWZmZXJzLAorICAgIC8vIEZJWE1FOiBUaGVyZSdzIGEgbGFj
ayBvZiBjb25zaXN0ZW5jeSBiZXR3ZWVuIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJzLAogICAgIC8v
IFZlY3RvcjxjaGFyPidzIGFuZCB7dWludDhfdCosc2l6ZV90fSBpZGlvbXMgZm9yIHJlcHJlc2Vu
dGluZyBhIGNodW5rIG9mCi0gICAgLy8gYnl0ZXMuIEZpeCB0aGF0IHNvbWVob3cuIE5vdGUgU2hh
cmVkQnVmZmVycyBhcmUgZGFuZ2Vyb3VzIHNpbmNlCisgICAgLy8gYnl0ZXMuIEZpeCB0aGF0IHNv
bWVob3cuIE5vdGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcnMgYXJlIGRhbmdlcm91cyBzaW5jZQog
ICAgIC8vIHRoZXkncmUgbm90IHRocmVhZC1zYWZlIGFuZCB0aGlzIGNsYXNzIG11c3QgbWFpbnRh
aW4KLSAgICAvLyB0aHJlYWQtc2FmZXR5LCBidXQgbWF5YmUgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCBjb3VsZCBiZQorICAgIC8vIHRocmVhZC1zYWZldHksIGJ1dCBtYXliZSBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCBjb3VsZCBiZQogICAgIC8vIG1hZGUgdG8gd29yaywg
aG93ZXZlciB0aGF0IGhhcyB6ZXJvIGhlbHBlcnMgZm9yIGRyb3BwaW5nIGludG8KICAgICAvLyBp
dGVyYXRvci1hd2FyZSAvIGNvbXBhcmF0b3ItYXdhcmUgY29udGFpbmVycy4uLgogICAgIHN0cnVj
dCBjZW5jRGVjcnlwdENvbnRleHQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKaW5kZXggMmVm
YTA0MzYwZTg4NDgzODA2MTQ0YzNkNzFkZTYzYWQ3YjQyYjU2MS4uYzM4OTE2ZTdkMDU5ZTg4OWI1
Yzg4ZWViMDllMGY0Y2ZjMDNjMWRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCkBAIC0y
MjAsNyArMjIwLDcgQEAgYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNTZXNzaW9ucygp
IGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAorYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9y
dHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewogICAgIC8vIFZhbGlkYXRlIHRoZSBp
bml0RGF0YSBidWZmZXIgYXMgYW4gSlNPTiBvYmplY3QgaW4ga2V5aWRzIGNhc2UuCiAgICAgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgImtleWlkcyIpICYm
IENETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KGluaXREYXRhKSkKQEAgLTIzNyw3ICsyMzcs
NyBAQCBib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgUwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZVRodW5kZXI6OnNhbml0aXplUmVzcG9uc2UoY29u
c3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBDRE1Qcml2YXRlVGh1bmRlcjo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICByZXR1cm4gcmVzcG9uc2Uu
Y29weSgpOwogfQpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjpp
bml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhCiAg
ICAgY2FsbGJhY2soU3VjY2VlZGVkKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OnNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsICBTdWNj
ZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjpzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwg
IFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIE9wZW5DRE1FcnJvciBlcnJvciA9
IG9wZW5jZG1fc3lzdGVtX3NldF9zZXJ2ZXJfY2VydGlmaWNhdGUobV90aHVuZGVyU3lzdGVtLmdl
dCgpLCBjb25zdF9jYXN0PHVpbnQ4X3QqPihjZXJ0aWZpY2F0ZS0+ZGF0YSgpKSwKICAgICAgICAg
Y2VydGlmaWNhdGUtPnNpemUoKSk7CkBAIC0zMjYsNyArMzI2LDcgQEAgUmVmUHRyPENETUluc3Rh
bmNlU2Vzc2lvbj4gQ0RNSW5zdGFuY2VUaHVuZGVyOjpjcmVhdGVTZXNzaW9uKCkKIGNsYXNzIFBh
cnNlZFJlc3BvbnNlTWVzc2FnZSB7CiAKIHB1YmxpYzoKLSAgICBQYXJzZWRSZXNwb25zZU1lc3Nh
Z2UoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAgICBQYXJzZWRSZXNwb25z
ZU1lc3NhZ2UoY29uc3QgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAg
ICAgewogICAgICAgICBpZiAoIWJ1ZmZlciB8fCAhYnVmZmVyLT5zaXplKCkpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0zNTQsOCArMzU0LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1ZhbGlk
KCkgY29uc3QgeyByZXR1cm4gbV9pc1ZhbGlkOyB9CiAgICAgYm9vbCBoYXNQYXlsb2FkKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9wYXlsb2FkKTsgfQotICAgIGNvbnN0IFJl
ZjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJl
dHVybiBtX3BheWxvYWQudmFsdWUoKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+JiBwYXlsb2Fk
KCkgJiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KKyAg
ICBjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCYgeyBB
U1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CisgICAgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgJiB7IEFTU0VSVChtX3BheWxvYWQpOyBy
ZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KICAgICBib29sIGhhc1R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUuaGFzX3ZhbHVlKCk7IH0KICAgICBXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VU
eXBlIHR5cGUoKSBjb25zdCB7IEFTU0VSVChtX3R5cGUpOyByZXR1cm4gbV90eXBlLnZhbHVlKCk7
IH0KICAgICBXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlIHR5cGVPcihXZWJDb3JlOjpNZWRp
YUtleU1lc3NhZ2VUeXBlIGFsdGVybmF0ZSkgY29uc3QgeyByZXR1cm4gbV90eXBlID8gbV90eXBl
LnZhbHVlKCkgOiBhbHRlcm5hdGU7IH0KQEAgLTM2NCwxMSArMzY0LDExIEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBib29sIG1faXNWYWxpZCB7IGZhbHNlIH07Ci0gICAgc3RkOjpvcHRpb25h
bDxSZWY8U2hhcmVkQnVmZmVyPj4gbV9wYXlsb2FkOworICAgIHN0ZDo6b3B0aW9uYWw8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX3BheWxvYWQ7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlPiBtX3R5cGU7CiB9OwogCi12b2lkIENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OmNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpjaGFsbGVu
Z2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7CiAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShi
dWZmZXIpOwogICAgIGlmICghcGFyc2VkUmVzcG9uc2VNZXNzYWdlKSB7CkBAIC00NzUsNyArNDc1
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjprZXlzVXBkYXRlRG9uZUNhbGxi
YWNrKCkKICAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKLXZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIG1lc3NhZ2UpCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2Fs
bGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBH
U1RfRVJST1IoIkNETSBlcnJvciIpOwogICAgIEdTVF9NRU1EVU1QKCJlcnJvciBkdW1wIiwgbWVz
c2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwpAQCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIG1lc3NhZ2UpCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwog
fQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGFTaGFyZWRCdWZmZXIsCit2b2lkIENETUluc3RhbmNlU2Vz
c2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGluaXREYXRhU2hhcmVkQnVmZmVyLAogICAgIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC01MDYsNyArNTA2LDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNl
bnNlVHlwZSwgY29uc3QgQXQKICAgICAgICAgbV9pbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSwg
bV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSwgbnVsbHB0ciwgMCwgJm1fdGh1bmRlclNlc3Np
b25DYWxsYmFja3MsIHRoaXMsICZzZXNzaW9uKTsKICAgICBpZiAoIXNlc3Npb24pIHsKICAgICAg
ICAgR1NUX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIHNlc3Npb24iKTsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKKyAgICAgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXls
b2FkKCk7CiAgICAgICAgIGNhbGxiYWNrKGluaXREYXRhLnJlbGVhc2VOb25OdWxsKCksIHsgfSwg
ZmFsc2UsIEZhaWxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01MTUsNyArNTE1LDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXQKIAogICAgIGF1dG8gZ2VuZXJhdGVDaGFsbGVuZ2Ug
PSBbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
aW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CiAgICAgICAg
IGlmIChtX3Nlc3Npb25JRC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIEdTVF9FUlJPUigiY291
bGQgbm90IGNyZWF0ZSBzZXNzaW9uIGlkIik7CiAgICAgICAgICAgICBjYWxsYmFjayhpbml0RGF0
YS5yZWxlYXNlTm9uTnVsbCgpLCB7IH0sIGZhbHNlLCBGYWlsZWQpOwpAQCAtNTQ1LDEzICs1NDUs
MTMgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpzZXNzaW9uRmFpbHVyZSgpCiAg
ICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQogCi12b2lkIENETUluc3Rh
bmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQs
IExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBj
YWxsYmFjaykKIHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09IG1f
c2Vzc2lvbklEKTsKIAogICAgIEdTVF9UUkFDRSgiVXBkYXRpbmcgc2Vzc2lvbiAlcyIsIHNlc3Np
b25JRC51dGY4KCkuZGF0YSgpKTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBw
ZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKKyAgICBtX3Nl
c3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBy
ZXNwb25zZU1lc3NhZ2UpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgICAgICBpZiAoc3VjY2VzcykgewogICAgICAgICAgICAgaWYgKCFyZXNwb25zZU1lc3Nh
Z2UpCkBAIC01NjIsNyArNTYyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHkKICAgICAgICAg
ICAgICAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKHJlc3Bv
bnNlTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNlTWVzc2Fn
ZSk7CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2Fk
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdU
Rk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CisgICAgICAgICAgICAgICAg
ICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRS
ZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVH
KCJnb3QgbWVzc2FnZSBvZiBzaXplICV6dSIsIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIEdTVF9NRU1EVU1QKCJtZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdl
LT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQsCkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNz
aW9uSUQKIHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09IG1fc2Vz
c2lvbklEKTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25DaGFuZ2Vk
Q2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9v
bCBzdWNjZXNzLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZU1lc3Nh
Z2UpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBp
ZiAoc3VjY2VzcykgewogICAgICAgICAgICAgaWYgKCFyZXNwb25zZU1lc3NhZ2UpCkBAIC01OTcs
NyArNTk3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbihM
aWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQKICAgICAgICAgICAgICAgICBQYXJz
ZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKHJlc3BvbnNlTWVzc2FnZSk7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAg
ICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2Vk
UmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CisgICAgICAgICAgICAgICAgICAgIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3Nh
Z2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVzc2Fn
ZSBvZiBzaXplICV6dSIsIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdT
VF9NRU1EVU1QKCJtZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwog
ICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwg
c3RkOjptYWtlX3BhaXIocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnR5cGVPcihNZWRpYUtleU1lc3Nh
Z2VUeXBlOjpMaWNlbnNlUmVxdWVzdCksCkBAIC02NDAsNyArNjQwLDcgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Np
b25JRCwgTGljZW4KIHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgbV9zZXNzaW9uSUQg
PT0gc2Vzc2lvbklEKTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0
aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25DaGFuZ2VkQ2Fs
bGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBz
dWNjZXNzLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIG11dGFibGUg
ewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoc3VjY2Vzcykg
ewogICAgICAgICAgICAgaWYgKCFidWZmZXIpCkBAIC02NDksNyArNjQ5LDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNl
c3Npb25JRCwgTGljZW4KICAgICAgICAgICAgICAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFy
c2VkUmVzcG9uc2VNZXNzYWdlKGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNl
ZFJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVz
c2FnZS5oYXNQYXlsb2FkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZl
cj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0g
V1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAg
ICAgICAgR1NUX0RFQlVHKCJzZXNzaW9uICVzIHJlbW92ZWQsIG1lc3NhZ2UgbGVuZ3RoICV6dSIs
IG1fc2Vzc2lvbklELnV0ZjgoKS5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKG1fa2V5U3RvcmUuYWxsS2V5c0FzKE1lZGlhS2V5U3RhdHVzOjpS
ZWxlYXNlZCksIFdURk1vdmUobWVzc2FnZSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaAppbmRleCBjZGQ4ZGEy
MTEyM2MxNzkxYWUyZmI2NDM5ZmYyZDZmYTBkMmViMjFjLi4xMDIwZTE1MzIyNzFiNTM1MWUxMDZk
ZGU4ZjIxZWE1NDA1YTljMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaApAQCAtOTMsOCArOTMs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwogICAgIGJv
b2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1
cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVy
JikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0
ZToKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFuY2UKICAgICBJ
bXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gSW1wbGVtZW50YXRpb25UeXBlOjpUaHVuZGVyOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0
aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlz
dGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFj
ayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRp
ZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFs
OwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9r
ZXlTeXN0ZW07IH0KICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9u
KCkgZmluYWw7CkBAIC0xMjYsOCArMTI2LDggQEAgY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1
bmRlciBmaW5hbCA6IHB1YmxpYyBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSB7CiBwdWJsaWM6CiAg
ICAgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcihDRE1JbnN0YW5jZVRodW5kZXImKTsKIAotICAg
IHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYp
IGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwor
ICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vu
c2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5n
JiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBk
YXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5h
bDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxs
YmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYs
IExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpAQCAtMTQx
LDE0ICsxNDEsMTQgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBDRE1JbnN0YW5jZVRodW5kZXIq
IGNkbUluc3RhbmNlVGh1bmRlcigpIGNvbnN0OwogCi0gICAgdXNpbmcgTm90aWZpY2F0aW9uID0g
dm9pZCAoQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6KikoUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJik7CisgICAgdXNpbmcgTm90aWZpY2F0aW9uID0gdm9pZCAoQ0RNSW5zdGFuY2VT
ZXNzaW9uVGh1bmRlcjo6KikoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpOwogICAgIHVzaW5nIENoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrID0gRnVuY3Rpb248dm9p
ZCgpPjsKLSAgICB1c2luZyBTZXNzaW9uQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChi
b29sLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT47CisgICAgdXNpbmcgU2Vzc2lvbkNoYW5nZWRD
YWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoYm9vbCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpPjsKIAotICAgIHZvaWQgY2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBrZXlVcGRhdGVkQ2FsbGJh
Y2soS2V5SURUeXBlJiYpOwogICAgIHZvaWQga2V5c1VwZGF0ZURvbmVDYWxsYmFjaygpOwotICAg
IHZvaWQgZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGVy
cm9yQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIENETUlu
c3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzIHN0YXR1cyhjb25zdCBLZXlJRFR5cGUmKSBjb25zdDsK
ICAgICB2b2lkIHNlc3Npb25GYWlsdXJlKCk7CiAKQEAgLTE1OSw3ICsxNTksNyBAQCBwcml2YXRl
OgogICAgIEluaXREYXRhIG1faW5pdERhdGE7CiAgICAgT3BlbkNETVNlc3Npb25DYWxsYmFja3Mg
bV90aHVuZGVyU2Vzc2lvbkNhbGxiYWNrcyB7IH07CiAgICAgQm94UHRyPE9wZW5DRE1TZXNzaW9u
PiBtX3Nlc3Npb247Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdlOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX21lc3NhZ2U7CiAgICAgYm9vbCBtX25lZWRz
SW5kaXZpZHVhbGl6YXRpb24geyBmYWxzZSB9OwogICAgIFZlY3RvcjxDaGFsbGVuZ2VHZW5lcmF0
ZWRDYWxsYmFjaz4gbV9jaGFsbGVuZ2VDYWxsYmFja3M7CiAgICAgVmVjdG9yPFNlc3Npb25DaGFu
Z2VkQ2FsbGJhY2s+IG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0
aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKaW5kZXggY2FhNTBlZDVjM2MzOTk4MzIyZDRh
MmMyNzYyNTZlMTgwMWYxZWJiMS4uZWE4OTBmNjdkYTIxMzg3ZjQwZGE2NTFhMGNhNWM3MzQ5M2U4
NGY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApA
QCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBHTWFya3VwUGFy
c2VDb250ZXh0VXNlckRhdGEgewogICAgIGJvb2wgaXNQYXJzaW5nUHNzaCB7IGZhbHNlIH07Ci0g
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBzc2g7CisgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gcHNzaDsKIH07CiAKIHN0YXRpYyB2b2lkIG1hcmt1cFN0YXJ0RWxlbWVudChHTWFy
a3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBnY2hhcioq
LCBjb25zdCBnY2hhcioqLCBncG9pbnRlciB1c2VyRGF0YVB0ciwgR0Vycm9yKiopCkBAIC01Nyw3
ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIG1hcmt1cFRleHQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNv
bnN0IGdjaGFyKiB0ZXh0LCBnc2l6ZSB0ZXh0TGVuZ3RoCiAgICAgaWYgKHVzZXJEYXRhLT5pc1Bh
cnNpbmdQc3NoKSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwc3No
ID0gYmFzZTY0RGVjb2RlKHRleHQsIHRleHRMZW5ndGgpOwogICAgICAgICBpZiAocHNzaC5oYXNf
dmFsdWUoKSkKLSAgICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBzc2gpKTsKKyAgICAgICAgICAgIHVzZXJEYXRhLT5wc3No
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOwogICAgIH0KIH0KIApAQCAt
NzEsOSArNzEsOSBAQCBzdGF0aWMgdm9pZCBtYXJrdXBFcnJvcihHTWFya3VwUGFyc2VDb250ZXh0
KiwgR0Vycm9yKiwgZ3BvaW50ZXIpCiAKIHN0YXRpYyBHTWFya3VwUGFyc2VyIG1hcmt1cFBhcnNl
ciB7IG1hcmt1cFN0YXJ0RWxlbWVudCwgbWFya3VwRW5kRWxlbWVudCwgbWFya3VwVGV4dCwgbWFy
a3VwUGFzc3Rocm91Z2gsIG1hcmt1cEVycm9yIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IElu
aXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmIHVucGFyc2VkUGF5bG9hZCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0
RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2Vk
UGF5bG9hZCkKIHsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9
IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXls
b2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOwogICAgIGlmICghcGF5bG9hZCB8fCAhcGF5
bG9hZC0+c2l6ZSgpKQogICAgICAgICByZXR1cm4gcGF5bG9hZDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVV
dGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggNjZlMjk3OWUzZWNmMmVkNjk2MmFkMmFi
NTBhYzQ5ZGI1ODQ1ZDA3YS4uMjdkZDRlYWUwZDJlMDFhYjRkODRjMGFiYzQyNGViYjEwMTA0YzA0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCkBAIC01Myw3
ICs1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5
bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiAKLSAgICBJbml0RGF0YShjb25zdCBTdHJp
bmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCisgICAgSW5pdERh
dGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgcGF5bG9hZCkKICAgICAgICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQogICAgIHsKICAgICAg
ICAgaWYgKHBheWxvYWQpIHsKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgICAgICBtX3Bh
eWxvYWQuYXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQuZ2V0KCk7IH0K
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGF5bG9hZC5nZXQoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQoKSBjb25z
dCB7IHJldHVybiBtX3N5c3RlbUlkOyB9CiAgICAgU3RyaW5nIHBheWxvYWRDb250YWluZXJUeXBl
KCkgY29uc3QKICAgICB7CkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
ICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRy
YWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQo
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3lzdGVt
SWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggNTY0ZTFlNzU0NGE1ODNmNDE4
ZTBkZWJlMGUyNWNlNmI0YmY1NDc5OS4uYmQxMTNiYjZjMjczMWZhMTlhZGRlZmQzM2E5OWQ0NmJi
NGExZjRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtNTIsNyArNTIsNyBA
QCBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURh
dGEoY29uc3QgRm9udERlc2NyaXB0aW9uJgogICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKGZv
bnQuZ2V0KCksIHNpemUsIGJvbGQsIGl0YWxpYywgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFudCwg
Zm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCksICZjcmVhdGlvbkRhdGEpOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5jcmVhdGVDRkRhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmgKaW5kZXggN2JjNjY3ZTQ2OWIwMDYxNTFlYjI1Yjc5Yzg4NjlmNzZhMzJmMDA3MS4u
NjkyOGE2M2U5NzFjN2MzNWU4ODQ0ZWVmNzNiZmE0NGE4ZDhjMDMwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBzdHJ1Y3QgRm9u
dFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFz
cyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZv
bnRGZWF0dXJlU2V0dGluZ3M7CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBGb250UGxh
dGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAotV0VCQ09SRV9FWFBP
UlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwor
V0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7
CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAppbmRleCBiNDE3OTIzZTZkNzVmOTNj
ZmQxZTRjYzMxZjg1MDM2ZTFjNjJmNGMyLi41ZDg4Y2Q3NzY4OThjMDVhOTAzNTg5ZTJkNGJhYzcz
MGFhMWRmOTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcApAQCAtNjUsNyArNjUsNyBA
QCBzdHJ1Y3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyA6IFRhYmxlV2l0aENvdmVyYWdlIHsK
ICAgICBPcGVuVHlwZTo6VUludDE2IGl0YWxpY3NDb3JyZWN0aW9uQ291bnQ7CiAgICAgT3BlblR5
cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29ycmVjdGlvblsxXTsgLy8gVGhlcmUgYXJlIGl0
YWxpY3NDb3JyZWN0aW9uQ291bnQgaXRhbGljIGNvcnJlY3Rpb24gdmFsdWVzLgogCi0gICAgaW50
MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9u
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHVpbnQxNl90IGNvdW50ID0gdWludDE2X3QoaXRhbGljc0NvcnJlY3Rpb25Db3VudCk7
CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZpdGFsaWNzQ29ycmVjdGlvbltjb3Vu
dF0pKQpAQCAtOTMsNyArOTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoSW5mbyA6IFRhYmxlV2l0aENv
dmVyYWdlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGV4dGVuZGVkU2hhcGVDb3ZlcmFnZU9mZnNl
dDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhLZXJuSW5mb09mZnNldDsKIAotICAgIGNvbnN0
IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhJ
dGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQg
PSBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpA
QCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVjdCBHbHlwaEFzc2VtYmx5IDogVGFibGVCYXNlIHsKICAg
ICAgICAgUGFydEZsYWdzRXh0ZW5kZXIgPSAweDAxCiAgICAgfTsKIAotICAgIHZvaWQgZ2V0QXNz
ZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxP
cGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAg
IHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9y
PE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CiAg
ICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHBhcnRDb3VudDsKICAgICAgICAgaWYgKCFp
c1ZhbGlkRW5kKGJ1ZmZlciwgJnBhcnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNDMsNyArMTQzLDcg
QEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9w
ZW5UeXBlOjpVSW50MTYgYWR2YW5jZU1lYXN1cmVtZW50OwogICAgIH0gbWF0aEdseXBoVmFyaWFu
dFJlY29yZHNbMV07IC8vIFRoZXJlIGFyZSB2YXJpYW50Q291bnQgTWF0aEdseXBoVmFyaWFudFJl
Y29yZCdzLgogCi0gICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKKyAgICB2b2lk
IGdldFNpemVWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBo
PiYgdmFyaWFudHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHZhcmlh
bnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaFZhcmlh
bnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNTMsNyArMTUzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENv
bnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAgICAgICB2YXJpYW50c1tpXSA9IG1hdGhH
bHlwaFZhcmlhbnRSZWNvcmRzW2ldLnZhcmlhbnRHbHlwaDsKICAgICB9CiAKLSAgICB2b2lkIGdl
dEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0
b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QK
KyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZl
Y3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25z
dAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gZ2x5cGhBc3NlbWJseU9mZnNldDsK
ICAgICAgICAgY29uc3QgR2x5cGhBc3NlbWJseSogZ2x5cGhBc3NlbWJseSA9IHZhbGlkYXRlT2Zm
c2V0PEdseXBoQXNzZW1ibHk+KGJ1ZmZlciwgb2Zmc2V0KTsKQEAgLTE3MCw3ICsxNzAsNyBAQCBz
dHJ1Y3QgTWF0aFZhcmlhbnRzIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpV
SW50MTYgaG9yaXpvbnRhbEdseXBoQ291bnQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5
cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0WzFdOyAvLyBUaGVyZSBhcmUgdmVydGljYWxHbHlwaENvdW50
IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucyBhbmQgaG9yaXpvbnRhbEdseXBoQ291bnQgdmVy
dGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zLgogCi0gICAgY29uc3QgTWF0aEdseXBoQ29uc3RydWN0
aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAorICAgIGNvbnN0IE1h
dGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDMyX3QgY291bnQgPSB1aW50MTZfdCh2ZXJ0aWNhbEdseXBoQ291bnQpICsg
dWludDE2X3QoaG9yaXpvbnRhbEdseXBoQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQo
YnVmZmVyLCAmbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFtjb3VudF0pKQpAQCAtMjA0LDcg
KzIwNCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpP
ZmZzZXQgbWF0aEdseXBoSW5mb09mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhWYXJp
YW50c09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhD
b25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoQ29uc3RhbnRzT2Zmc2V0Owog
ICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0cnVjdCBNQVRIVGFibGUg
OiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBjb25z
dCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZv
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2
X3Qgb2Zmc2V0ID0gbWF0aEdseXBoSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAg
LTIyMCw3ICsyMjAsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFy
aWFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNv
bnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aFZhcmlhbnRzT2Zm
c2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCmluZGV4IDNm
ZjY2ZDMxMTgyZTVjNGIzNmRkM2YzMzA3YTY4NGI5NWQ5NTkzZTMuLjI5OTBiZmIwM2Y1NjE5NDU3
N2ZkZDQ0NzZmMTQ0OTRhYjE4MDM1Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKQEAgLTQw
LDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udFBsYXRmb3JtRGF0
YTsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBj
bGFzcyBGb250OwogCiBjbGFzcyBPcGVuVHlwZU1hdGhEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8
T3BlblR5cGVNYXRoRGF0YT4gewpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgT3BlblR5cGVNYXRoRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7CiAKICNpZiBF
TkFCTEUoT1BFTlRZUEVfTUFUSCkKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
bV9tYXRoQnVmZmVyOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsKICNl
bGlmIFVTRShIQVJGQlVaWikKICAgICBIYlVuaXF1ZVB0cjxoYl9mb250X3Q+IG1fbWF0aEZvbnQ7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAppbmRleCAzMDQ5NjNhNWRlOTBjODFjOGQ2MzA5MTI2
Nzc4ODc1MzFkODZkMmFmLi5jODY0YjJjM2E4ZmIxYWUzNzYzMDkzZWU1MDU1YjM2NTFlZjAxMjZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVUeXBlcy5oCkBAIC03Myw3ICs3Myw3IEBAIHR5cGVkZWYgVUludDE2IEds
eXBoSUQ7CiB0eXBlZGVmIHVpbnQzMl90IFRhZzsKICNkZWZpbmUgT1RfTUFLRV9UQUcoY2gxLCBj
aDIsIGNoMywgY2g0KSAoKCgodWludDMyX3QpKGNoNCkpIDw8IDI0KSB8ICgoKHVpbnQzMl90KShj
aDMpKSA8PCAxNikgfCAoKCh1aW50MzJfdCkoY2gyKSkgPDwgOCkgfCAoKHVpbnQzMl90KShjaDEp
KSkKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxl
KGNvbnN0IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291
bnQgPSAxKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRh
YmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNpemVfdCBjb3VudCA9IDEp
CiB7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zaXplKCkgPCBzaXplb2YoVCkgKiBjb3Vu
dCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04Miw3ICs4Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8Q29udGlndW91
c1NoYXJlCiAKIHN0cnVjdCBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBib29s
IGlzVmFsaWRFbmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2
b2lkKiBwb3NpdGlvbikKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGlmIChw
b3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05
MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBidWZmZXIu
c2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAgICAgfQog
Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9u
KQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsK
ICAgICAgICAgY29uc3QgVCogY2FzdGVkID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocG9z
aXRpb24pOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmY2FzdGVkWzFdKSkKQEAg
LTk4LDcgKzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gY2FzdGVkOwogICAgIH0K
IAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiB2YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
aW50OF90Kj4odGhpcykgKyBvZmZzZXQpOwogICAgIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1
Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKICNpZiBFTkFCTEUoT1BFTlRZUEVf
TUFUSCkKIHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6
Ci0gICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50
MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKKyAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBH
bHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CiAgICAgewogICAgICAg
ICBzd2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkgewogICAgICAgICBjYXNlIDE6IHsg
Ly8gQ292ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAppbmRleCAz
Y2E3MjdhYWZiZDJjYWQ0YmUxMDZmMWRjNGMzZjJlN2RkNDQ4MDVmLi4zMjE2YjdlZjA2ZTlhNDgw
MDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3Bw
CkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFwcGVuZFBhZGRpbmdTaG9ydCgp
CiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUgaW4gZm9udERhdGEsIGFuZCB3
cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0dXJu
cyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMgdXNlZCBieSByZW5hbWVBbmRB
Y3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29sIHJlbmFtZUZvbnQoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUs
IFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCitib29sIHJlbmFtZUZvbnQoY29u
c3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9y
PHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBzaXplX3Qgb3JpZ2luYWxEYXRh
U2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25zdCBzZm50SGVhZGVyKiBzZm50ID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9udERhdGEuZGF0YSgpKTsKQEAgLTI2
Niw3ICsyNjYsNyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsCiB9CiAKIC8vIFJlbmFtZSB0aGUg
Zm9udCBhbmQgaW5zdGFsbCB0aGUgbmV3IGZvbnQgZGF0YSBpbnRvIHRoZSBzeXN0ZW0KLVJlZlB0
cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKK1JlZlB0
cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRC
dWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQogewogICAgIFZlY3Rvcjx1
aW50OF90PiByZXdyaXR0ZW5Gb250RGF0YTsKICAgICBpZiAoIXJlbmFtZUZvbnQoZm9udERhdGEs
IGZvbnROYW1lLCByZXdyaXR0ZW5Gb250RGF0YSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaApp
bmRleCAyMmJlMjMwYTYwNWM2NmEwZWY1YmMxNDhhMjYyNzk3ZDM3MmMyYWM0Li5mYTAwMDgxMTYw
NjY5N2RjNWM1MTEyMzMzYzkwYzhjOTJiNGI2NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVz
LmgKQEAgLTM1LDEwICszNSwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmln
RW5kaWFuVVNob3J0OwotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVmaXg7CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1
Y3QgRU9USGVhZGVyIHsKICAgICBFT1RIZWFkZXIoKTsKQEAgLTU1LDggKzU1LDggQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8dWludDhfdCwgNTEyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgcmVuYW1l
Rm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9y
PHVpbnQ4X3Q+Jik7Ci1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0
ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworYm9v
bCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1
aW50OF90PiYpOworUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVG
b250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAppbmRleCA3OWU5
ZWZlMDYwNTMzNTc5ZTljYTNiYzEwMzIzOGJmZDI4MmY3MTVjLi4wZmE4ZjMwNmFkOTUyZDA2YTA5
Mjk3ZDBiMWQyODdiODk4ODMyYTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEu
Y3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgc3RydWN0IFN1YnN0aXR1dGlvblN1YlRhYmxlIDogVGFi
bGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IHN1YnN0Rm9ybWF0OwogICAgIE9wZW5UeXBl
OjpPZmZzZXQgY292ZXJhZ2VPZmZzZXQ7CiAKLSAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3Zl
cmFnZShjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJu
IHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9
CisgICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZl
ciwgY292ZXJhZ2VPZmZzZXQpOyB9CiB9OwogCiBzdHJ1Y3QgU2luZ2xlU3Vic3RpdHV0aW9uMlN1
YlRhYmxlIDogU3Vic3RpdHV0aW9uU3ViVGFibGUgewpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0cnVj
dCBMb29rdXBUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBzdWJUYWJs
ZU9mZnNldHNbMV07CiAgICAgLy8gT3BlblR5cGU6OlVJbnQxNiBtYXJrRmlsdGVyaW5nU2V0OyB0
aGlzIGZpZWxkIGNvbWVzIGFmdGVyIHZhcmlhYmxlIGxlbmd0aCwgc28gb2Zmc2V0IGlzIGRldGVy
bWluZWQgZHluYW1pY2FsbHkuCiAKLSAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxH
bHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBt
YXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWlu
dDE2X3QgY291bnRTdWJUYWJsZSA9IHN1YlRhYmxlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxp
ZEVuZChidWZmZXIsICZzdWJUYWJsZU9mZnNldHNbY291bnRTdWJUYWJsZV0pKQpAQCAtMTk0LDcg
KzE5NCw3IEBAIHN0cnVjdCBMb29rdXBMaXN0IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6
VUludDE2IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwT2Zmc2V0c1sx
XTsKIAotICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMb29rdXBU
YWJsZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAg
ICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBPZmZz
ZXRzW2NvdW50XSkpCkBAIC0yMDgsNyArMjA4LDcgQEAgc3RydWN0IEZlYXR1cmVUYWJsZSA6IFRh
YmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlw
ZTo6VUludDE2IGxvb2t1cExpc3RJbmRleFsxXTsKIAotICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0
dXRpb25zKGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiog
bWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9v
bCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3VwTGlzdCogbG9va3VwcywgSGFzaE1h
cDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYg
KCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1cExpc3RJbmRleFtjb3VudF0pKQpAQCAtMjI5LDcg
KzIyOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5U
eXBlOjpPZmZzZXQgZmVhdHVyZU9mZnNldDsKICAgICB9IGZlYXR1cmVzWzFdOwogCi0gICAgY29u
c3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRh
ZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0
IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRhZyB0YWcs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2
X3QgY291bnQgPSBmZWF0dXJlQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAh
aXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlc1tjb3VudF0pKQpAQCAtMjM5LDcgKzIzOSw3IEBA
IHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0
YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25z
dCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGZvciAodWludDE2X3QgaSA9
IDA7IGkgPCBmZWF0dXJlQ291bnQ7ICsraSkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRFbmQo
YnVmZmVyLCAmZmVhdHVyZXNbaV0pICYmIGZlYXR1cmVzW2ldLmZlYXR1cmVUYWcgPT0gdGFnKQpA
QCAtMjU1LDcgKzI1NSw3IEBAIHN0cnVjdCBMYW5nU3lzVGFibGUgOiBUYWJsZUJhc2UgewogICAg
IE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUNvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVh
dHVyZUluZGV4WzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBl
OjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxl
KiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZl
YXR1cmVzLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAg
IHVpbnQxNl90IGNvdW50ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQo
YnVmZmVyLCAmZmVhdHVyZUluZGV4W2NvdW50XSkpCkBAIC0yNzcsNyArMjc3LDcgQEAgc3RydWN0
IFNjcmlwdFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBsYW5n
U3lzT2Zmc2V0OwogICAgIH0gbGFuZ1N5c1JlY29yZHNbMV07CiAKLSAgICBjb25zdCBMYW5nU3lz
VGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQg
PSBsYW5nU3lzQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsYW5nU3lz
UmVjb3Jkc1tjb3VudF0pKQpAQCAtMjk4LDcgKzI5OCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDog
VGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBzY3JpcHRPZmZzZXQ7CiAgICAg
fSBzY3JpcHRzWzFdOwogCi0gICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6
VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAg
IGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBz
Y3JpcHRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291
bnRdKSkKQEAgLTMxMCw3ICszMTAsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZh
dWx0U2NyaXB0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAg
ICBjb25zdCBTY3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7
CiAgICAgICAgIGlmICghY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3Vu
dF0pKQpAQCAtMzIxLDcgKzMyMSw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsK
ICAgICAgICAgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdFRhYmxlPihidWZmZXIsIHNjcmlw
dHNbMF0uc2NyaXB0T2Zmc2V0KTsKICAgICB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRl
ZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
KyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlw
dFRhYmxlID0gZGVmYXVsdFNjcmlwdChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdFRhYmxl
KQpAQCAtMzM2LDExICszMzYsMTEgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAg
ICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0dXJlTGlzdE9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zm
c2V0IGxvb2t1cExpc3RPZmZzZXQ7CiAKLSAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFs
aWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQotICAg
IGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0Pihi
dWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1
cExpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVy
biB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9
CisgICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBz
Y3JpcHRMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8
RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgTG9v
a3VwTGlzdCogbG9va3VwTGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyBy
ZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0
KTsgfQogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxl
KiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7
CiAgICAgICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdHMgPSBzY3JpcHRMaXN0KGJ1ZmZlcik7
CiAgICAgICAgIGlmICghc2NyaXB0cykKQEAgLTM0OCw3ICszNDgsNyBAQCBzdHJ1Y3QgR1NVQlRh
YmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHNjcmlwdHMtPmRlZmF1bHRMYW5nU3lz
KGJ1ZmZlcik7CiAgICAgfQogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5U
eXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZl
YXR1cmVUYWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAg
ICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBsYW5nU3lzID0gZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsK
ICAgICAgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzID0gZmVhdHVyZUxpc3QoYnVmZmVy
KTsKQEAgLTM2NSw3ICszNjUsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAg
ICAgICAgcmV0dXJuIGZlYXR1cmU7CiAgICAgfQogCi0gICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBo
U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0VmVydGljYWxHbHlwaFN1
YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgRmVhdHVyZVRhYmxlKiB2ZXJ0
aWNhbEZlYXR1cmVUYWJsZSA9IGZlYXR1cmUoT3BlblR5cGU6OlZlcnRGZWF0dXJlVGFnLCBidWZm
ZXIpOwogICAgICAgICBpZiAoIXZlcnRpY2FsRmVhdHVyZVRhYmxlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRp
ZXMuaAppbmRleCBhNjI3MTliMTcxOWE3NGY5NzY5MjIxOWRmNWY3YWFlZGM0OTA2NDY2Li4wZGI0
YWZhZGIzZjc0MmI4M2E0ZTE2Y2YzNzE4NzBhMmIwNDA0ZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRp
ZXMuaApAQCAtNDMsNyArNDMsNyBAQCBlbnVtIERXUklURV9GT05UX1NUUkVUQ0g7CiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgRGlyZWN0V3Jp
dGUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggOGJlMWIxYTMzYTYyMDVj
MTgxY2VmZjFhYzM0MzRiYzg3YTc4M2JlNS4uYzg2ODNhN2VmNTg5YzNmZTY1NGQ4NDU3MTI5NWUy
NDBkMjI0NDllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMTA2LDcgKzEw
Niw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBm
b250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmlu
ZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3Vy
Y2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaAppbmRleCBmYzA0ZjE3NWM3ODhiOWJlOTk4ZjVmM2I3MTFmNTk3YzAyNmJi
ZjllLi4wOGZjOWYxOWVhZWE5NDgzZWE1OGVjMWFlZWRkNDU3MjU2Y2UyN2JjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmgKQEAgLTM2LDEzICszNiwxMyBAQCB0eXBlZGVmIHN0cnVjdCBDR0Zv
bnQqIENHRm9udFJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29u
dGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsK
IHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRW
YXJpYW50U2V0dGluZ3M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRp
bmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdz
OwpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRp
b25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAK
aW5kZXggZjRmYmY3YTdmNGQ3YzgzZmYyMTE2YzMxZTU0NmNhOTFlMDU4OWNiMS4uM2MxZDRlMmYz
Yzc1NGE3M2E4MjNhMDBjMTY3NGVjMzA0NDkzMTEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGFDYWlyby5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVV
bmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVj
dGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0
ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9u
dE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChi
dWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKaW5kZXgg
NGM2NzRjNDc0M2JjMDExOGE5NzAxMGNjNjkyODliNTg2ZGJiMGNkMS4uMzFhMWU1YzUzMWYyMDkw
M2M1Y2ZiMzI4NjBiYTVlZjIwNjRlOTNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dp
bi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlz
RXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgICAgICYmIG1f
dXNlR0RJID09IG90aGVyLm1fdXNlR0RJOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29u
c3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJs
ZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXggNDM5Y2Y4NjNiODczZGM5
Y2Y3ZjgxMDU5OWU1YTYwMWU3ZjczNzk5Ny4uNmNiNTUxMTA0YTkzYmRiZDIyYjQxN2E0NTQ2ZDIw
ZmFkMGUyYTM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcApAQCAtNTksMTggKzU5LDE4IEBA
IEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiBmb250
LCBmbG9hdCBzaXplLCBib29sIGJvbGQsCiAgICAgUmVzdG9yZURDKGhkYywgLTEpOwogfQogCi1S
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1P
cGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBj
b25zdAogewogICAgIEhXbmREQyBoZGMoMCk7CiAgICAgSEdESU9CSiBvbGRGb250ID0gU2VsZWN0
T2JqZWN0KGhkYywgaGZvbnQoKSk7CiAKICAgICBEV09SRCBzaXplID0gR2V0Rm9udERhdGEoaGRj
LCB0YWJsZSwgMCwgMCwgMCk7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKHNpemUgIT0g
R0RJX0VSUk9SKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKHNpemUpOwogICAgICAg
ICBEV09SRCByZXN1bHQgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAoUFZPSUQpZGF0YS5k
YXRhKCksIHNpemUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IHNp
emUpOwotICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShkYXRhKSk7CisgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpOwogICAgIH0KIAogICAgIFNlbGVjdE9iamVjdChoZGMsIG9sZEZvbnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2Rl
ckRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZURlY29kZXJEaXJlY3QyRC5jcHAKaW5kZXggNjI5ZTBlNjFhMTA0YzU2N2ExZDRlZGNiN2U1Nzk3
ZGNmNjdjNmU4ZS4uNzczNTczOWI5MzM0ZjQ0ZDk5YTNmMTJmZmM1YmY3YjQxZjdjYzZlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2Rl
ckRpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCkBAIC0yNzIsNyArMjcyLDcgQEAgUGxhdGZvcm1JbWFn
ZVB0ciBJbWFnZURlY29kZXJEaXJlY3QyRDo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWIKICAgICByZXR1cm4gYml0bWFwOwogfQogCi12b2lkIEltYWdlRGVjb2RlckRp
cmVjdDJEOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
Cit2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmICghYWxsRGF0YVJlY2Vp
dmVkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCmluZGV4IDRmNDcyNTg2
YjQyNGJkYTFjZjZmYTAxNDNjYmEyM2QwMzAwMTZlNDUuLmMyMzY1ZmQ3NDRjNjExOGMxOTk5ZTA1
YjgwMmVkNWI0OGYzNjQ4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCkBAIC00MSw3ICs0MSw3
IEBAIGNsYXNzIEltYWdlRGVjb2RlckRpcmVjdDJEIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2Rl
ciB7CiBwdWJsaWM6CiAgICAgSW1hZ2VEZWNvZGVyRGlyZWN0MkQoKTsKIAotICAgIHN0YXRpYyBS
ZWY8SW1hZ2VEZWNvZGVyRGlyZWN0MkQ+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFnZURlY29k
ZXJEaXJlY3QyRD4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBJbWFnZURlY29kZXJEaXJlY3QyRCgpKTsKICAgICB9CkBAIC03Miw3ICs3Miw3IEBA
IHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29u
c3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNo
cm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRh
UmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAg
ICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAKaW5kZXgg
MGQ4ODIwZTlmM2Q2ZmQ3NzM1ZDU3MGIzNjQxNDg4ZjUzYmQ3ZWNlOS4uMmQ5NzI3MGE3MzQ4MzQ4
OTNlNzhjODFmZjBlYzViYjVkZmVjM2Y4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCiAKIC8vIFRoaXMgZnVuY3Rpb24gbG9hZHMgcmVzb3VyY2VzIGZy
b20gV2ViS2l0Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRv
QnVmZmVyKGNvbnN0IGNoYXIqKTsKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0
aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaApp
bmRleCA3ZTNiMzYzMmI5MGM2MTk0MTVlNDhhNTJhMjI1OGIxNDJlMDAxYTU3Li5jZjJiNTFmNmYw
MjgzN2ExMTA2ZjRkOTk5ZjJmMTMwZTI1ODA5ODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKQEAgLTYwLDggKzYwLDggQEAgcHVibGljOgogICAgIHZv
aWQgc2V0Q2FuU21hcnRSZXBsYWNlKGJvb2wgY2FuU21hcnRSZXBsYWNlKSB7IG1fY2FuU21hcnRS
ZXBsYWNlID0gY2FuU21hcnRSZXBsYWNlOyB9CiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2UoKSBj
b25zdCB7IHJldHVybiBtX2NhblNtYXJ0UmVwbGFjZTsgfQogCi0gICAgdm9pZCBzZXRDdXN0b21E
YXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEg
PSBXVEZNb3ZlKGJ1ZmZlcik7IH0KLSAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBjdXN0b21E
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CisgICAgdm9pZCBzZXRD
dXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdU
Rk1vdmUoYnVmZmVyKTsgfQorICAgIFNoYXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fY3VzdG9tRGF0YS5nZXQoKTsgfQogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSgpIGNv
bnN0IHsgcmV0dXJuICEhbV9jdXN0b21EYXRhOyB9CiAgICAgdm9pZCBjbGVhckN1c3RvbURhdGEo
KSB7IG1fY3VzdG9tRGF0YSA9IG51bGxwdHI7IH0KIApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRl
OgogICAgIFZlY3RvcjxTdHJpbmc+IG1fZmlsZW5hbWVzOwogICAgIFJlZlB0cjxJbWFnZT4gbV9p
bWFnZTsKICAgICBib29sIG1fY2FuU21hcnRSZXBsYWNlIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fY3VzdG9tRGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1h
Z2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBkOTU2ZDllNzYyNWQ1YmI1YTcwZjA2OTNlNzc5
OGVlOTA4NDlmMTY1Li4zM2M5NWVjMzMzM2E5MjBjNjRhMDE4MTc1MWViNGE1MDVlZjFhN2FiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJs
ZUltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKIAotc3RhdGljIHVuc2lnbmVkIGNvcHlGcm9tU2hh
cmVkQnVmZmVyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoLCBjb25zdCBTaGFy
ZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikKK3N0YXRpYyB1bnNpZ25lZCBjb3B5RnJvbVNoYXJlZEJ1
ZmZlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKQogewogICAgIHVuc2lnbmVkIGJ5dGVzRXh0cmFj
dGVkID0gMDsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBzaGFyZWRCdWZmZXIpIHsK
QEAgLTEzNSw3ICsxMzUsNyBAQCBib29sIG1hdGNoZXNDVVJTaWduYXR1cmUoY2hhciogY29udGVu
dHMpCiAKIH0KIAotUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVj
b2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQor
UmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRl
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsK
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbGVuZ3RoT2ZMb25nZXN0U2lnbmF0dXJlID0gMTQ7
IC8vIFRvIHdpdDogIlJJRkY/Pz8/V0VCUFZQIgogICAgIGNoYXIgY29udGVudHNbbGVuZ3RoT2ZM
b25nZXN0U2lnbmF0dXJlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IDNjNmEzYTUw
YzgyMDk2NGU4YTliMDc0OTAxYTkyYjNmM2M0Nzg5YjcuLjljNDA1NTc4MjQxZDBjNTEyNzAyOTUx
NWMyMjEyNjU4ZjhjNGY2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAtNjAsNyAr
NjAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIG51bGxwdHIgaWYgd2UgY2FuJ3Qgc25p
ZmYgYSBzdXBwb3J0ZWQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBkYXRhIChwb3NzaWJseQogICAg
IC8vIGJlY2F1c2UgdGhlcmUgaXNuJ3QgZW5vdWdoIGRhdGEgeWV0KS4KLSAgICBzdGF0aWMgUmVm
UHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8
U2NhbGFibGVJbWFnZURlY29kZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgYm9vbCBw
cmVtdWx0aXBseUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhhOyB9CiAK
QEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9lbmNvZGVkRGF0YVN0
YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxldGU7CiAgICAgfQogCi0gICAgdm9pZCBz
ZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRl
CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0
YXR1czo6RXJyb3IpCkBAIC0xOTQsNyArMTk0LDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9u
YWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxv
cHQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
PiBtX2RhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
PiBtX2RhdGE7CiAgICAgVmVjdG9yPFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUsIDE+IG1fZnJh
bWVCdWZmZXJDYWNoZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CiAgICAgbXV0YWJsZSBM
b2NrIG1fbG9jazsKICAgICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRklt
YWdlUmVhZGVyLmNwcAppbmRleCA3YzYwM2ZkODM1OGMyMTRhYzkxODRmMzE4OTk3MmZlODQxYjYx
ZTgwLi4yNmY4ODY0OTZlNWE1YTE0ZTI4YWZiMWFmYTliZmMzMDE3N2Y1MWNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJl
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZp
Zi9BVklGSW1hZ2VSZWFkZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIEFWSUZJbWFnZVJlYWRlcjo6
QVZJRkltYWdlUmVhZGVyKFJlZlB0cjxBVklGSW1hZ2VEZWNvZGVyPiYmIGRlY29kZXIpCiAKIEFW
SUZJbWFnZVJlYWRlcjo6fkFWSUZJbWFnZVJlYWRlcigpID0gZGVmYXVsdDsKIAotYm9vbCBBVklG
SW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNl
SGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01lbW9yeSht
X2F2aWZEZWNvZGVyLmdldCgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpICE9IEFWSUZfUkVT
VUxUX09LKQogICAgICAgICByZXR1cm4gYWxsRGF0YVJlY2VpdmVkID8gbV9kZWNvZGVyLT5zZXRG
YWlsZWQoKSA6IGZhbHNlOwpAQCAtNTgsNyArNTgsNyBAQCBib29sIEFWSUZJbWFnZVJlYWRlcjo6
cGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBh
bAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFWSUZJbWFnZVJlYWRlcjo6ZGVjb2RlRnJh
bWUoc2l6ZV90IGZyYW1lSW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmIGJ1ZmZlciwg
Y29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkKK3ZvaWQgQVZJRkltYWdlUmVh
ZGVyOjpkZWNvZGVGcmFtZShzaXplX3QgZnJhbWVJbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJG
cmFtZSYgYnVmZmVyLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYg
ZGF0YSkKIHsKICAgICBpZiAobV9kZWNvZGVyLT5mYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9B
VklGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2F2aWYvQVZJRkltYWdlUmVhZGVyLmgKaW5kZXggY2JjYTBiOGMxMjRiZmYwZmZjMzMwMWJhMzVi
Y2UwMWVkMjcyMmRmOC4uNDk2ZjY5ZjgxMmJkNzViMGVkYTYzNTdiYWE4NjBjZmNjYjViYTRiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9B
VklGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCkBAIC0zOSw4ICszOSw4IEBAIHB1YmxpYzoKICAg
ICBBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJbWFnZURlY29kZXI+JiYpOwogICAgIH5BVklG
SW1hZ2VSZWFkZXIoKTsKIAotICAgIGJvb2wgcGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudCYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIGRlY29kZUZy
YW1lKHNpemVfdCBpbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYsIGNvbnN0IFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKTsKKyAgICBib29sIHBhcnNlSGVhZGVyKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwor
ICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZy
YW1lJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKTsKICAgICBz
aXplX3QgaW1hZ2VDb3VudCgpIGNvbnN0OwogICAgIGRvdWJsZSByZXBldGl0aW9uQ291bnQoKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3Mjc2OWE2OTI2ZWMyNDE5
YmY2NjM4MjUyOGQzZDc3MjBhNTRhZGFlLi5mNzQ1NWMxNDZjN2U4YWViMDRjYzhjNTZmMzMwZTJh
MDFmM2JhNzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDYsNyArNDYsNyBA
QCBCTVBJbWFnZURlY29kZXI6OkJNUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogewogfQogCi12b2lkIEJNUEltYWdlRGVjb2Rlcjo6
c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBC
TVBJbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAv
Qk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzdjN2NhODFmZWE2YjhhNzc0YmIzMDhlNTM4
ZGNkMDQ4Yzk5NWVlYS4uNjRkZWQ2YWJiZTJjMGEyOWIxMWY5ZmI1ZWNkNmI0ODcyNGQ1ODk3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JN
UEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICJibXAiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVk
QnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAg
IFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5k
ZXgpIGZpbmFsOwogICAgIC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMgfG1fcmVhZGVy
fC4gQmUgY2FyZWZ1bCB0byBhdm9pZAogICAgIC8vIGFjY2Vzc2luZyBkZWxldGVkIG1lbW9yeSwg
ZXNwZWNpYWxseSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9tIGluc2lkZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFk
ZXIuaAppbmRleCA0ODQ0ZjM4MGRjMTdlYzcwNDU4OGZiMTJmNTNlYWJjNmQyMGU2MGY0Li5iZDQz
MGU4YThiZWEyYzgxNmIyYzUyMmJmNWJhNzg4NDZjMzhlMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFk
ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBCTVBJbWFnZVJlYWRlciB7CiBwdWJsaWM6CiAg
ICAgLy8gUmVhZCBhIHZhbHVlIGZyb20gfGRhdGFbb2Zmc2V0XXwsIGNvbnZlcnRpbmcgZnJvbSBs
aXR0bGUgdG8gbmF0aXZlCiAgICAgLy8gZW5kaWFubmVzcy4KLSAgICBzdGF0aWMgaW5saW5lIHVp
bnQxNl90IHJlYWRVaW50MTYoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwg
aW50IG9mZnNldCkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJlYWRVaW50MTYoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQpCiAg
ICAgewogICAgICAgICB1aW50MTZfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNweSgmcmVzdWx0LCAm
ZGF0YS5kYXRhKClbb2Zmc2V0XSwgMik7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHJl
YWRVaW50MzIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNl
dCkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQpCiAgICAgewogICAg
ICAgICB1aW50MzJfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNweSgmcmVzdWx0LCAmZGF0YS5kYXRh
KClbb2Zmc2V0XSwgNCk7CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBCTVBJbWFnZVJl
YWRlcihTY2FsYWJsZUltYWdlRGVjb2RlciogcGFyZW50LCBzaXplX3QgZGVjb2RlZEFuZEhlYWRl
ck9mZnNldCwgc2l6ZV90IGltZ0RhdGFPZmZzZXQsIGJvb2wgdXNlc0FuZE1hc2spOwogCiAgICAg
dm9pZCBzZXRCdWZmZXIoU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogYnVmZmVyKSB7IG1fYnVm
ZmVyID0gYnVmZmVyOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KIAog
ICAgIC8vIERvZXMgdGhlIGFjdHVhbCBkZWNvZGluZy4gSWYgfG9ubHlTaXplfCBpcyB0cnVlLCBk
ZWNvZGluZyBvbmx5CiAgICAgLy8gcHJvZ3Jlc3NlcyBhcyBmYXIgYXMgbmVjZXNzYXJ5IHRvIGdl
dCB0aGUgaW1hZ2Ugc2l6ZS4gUmV0dXJucwpAQCAtMjcyLDcgKzI3Miw3IEBAIHByaXZhdGU6CiAg
ICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogbV9idWZmZXI7CiAKICAgICAvLyBUaGUgZmls
ZSB0byBkZWNvZGUuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0
YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0
YTsKIAogICAgIC8vIEFuIGluZGV4IGludG8gfG1fZGF0YXwgcmVwcmVzZW50aW5nIGhvdyBtdWNo
IHdlJ3ZlIGFscmVhZHkgZGVjb2RlZC4KICAgICBzaXplX3QgbV9kZWNvZGVkT2Zmc2V0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1h
Z2VCYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAppbmRleCA2MDEyMDM3NGY5
YzQzMTY4YTY1MjFiNjljNTRhZmJlMmEwMGY1NWY3Li40YTIxMjU1YThjMGZiNjc4ZTRhYWRkNzY2
M2ViN2Y5MThlN2ZlOTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNh
aXJvLmNwcApAQCAtMzcsNyArMzcsOSBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlQmFja2luZ1N0
b3JlOjppbWFnZSgpIGNvbnN0CiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hh
cio+KGNvbnN0X2Nhc3Q8dWludDMyX3QqPihtX3BpeGVsc1B0cikpLAogICAgICAgICBDQUlST19G
T1JNQVRfQVJHQjMyLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpLCBzaXplKCkud2lk
dGgoKSAqIHNpemVvZih1aW50MzJfdCkpKTsKICAgICBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tl
eV90IHNfc3VyZmFjZURhdGFLZXk7Ci0gICAgY2Fpcm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRhKHN1
cmZhY2UuZ2V0KCksICZzX3N1cmZhY2VEYXRhS2V5LCBtX3BpeGVscy5nZXQoKSwgW10odm9pZCog
ZGF0YSkgeyBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4oZGF0YSktPmRl
cmVmKCk7IH0pOworICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0YShzdXJmYWNlLmdldCgp
LCAmc19zdXJmYWNlRGF0YUtleSwgbV9waXhlbHMuZ2V0KCksIFtdKHZvaWQqIGRhdGEpIHsKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8RGF0YVNlZ21lbnQqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICB9KTsK
IAogICAgIHJldHVybiBzdXJmYWNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRl
eCBlNmFiZTBkOTU0NGI2YzE4NWM2NDVkZWNlMDlmMjNmOTU2NjYwN2NiLi5iOWVjMDFiOGFlOGU4
ZDI5YmM3ODI1MjZlMDc2NTI1NTFlMzU5YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNw
cApAQCAtMzgsNyArMzgsNyBAQCBHSUZJbWFnZURlY29kZXI6OkdJRkltYWdlRGVjb2RlcihBbHBo
YU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBHSUZJbWFnZURl
Y29kZXI6On5HSUZJbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgR0lGSW1hZ2VEZWNv
ZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2
b2lkIEdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2dpZi9HSUZJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAppbmRleCAzNWRmMzNmNmRmYzQ4M2ZkODQ3MTM2
NmFlNTNiYjBiOTYxY2FlZDJlLi5jNzQ3MTk5OTliOTg2YzFjZWY4NDc4NzU5ZDIzNzE4YzkwNDJk
M2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9n
aWYvR0lGSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5z
aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gImdpZiJfczsgfQotICAgIHZvaWQgc2V0RGF0YShT
aGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lk
IHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpIGZpbmFsOwogICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CiAgICAg
c2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCBmaW5hbDsKICAgICBSZXBldGl0aW9uQ291bnQgcmVw
ZXRpdGlvbkNvdW50KCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCmluZGV4IDQy
MTQ2ZTAzMjkzMjM2OTk3ODllYjVlNDJhZjRjNzNkMzRhYjljYzYuLjEwODJmZGYwZGZmMjM5MWU1
NjUzMGE0MWY4N2JhNDM5ODIzMjc1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCkBAIC0yMzcs
NyArMjM3LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsg
fQorICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQogICAgIC8vIEZJWE1FOiBoYWx0QXRG
cmFtZSBzaG91bGQgYmUgc2l6ZV90LgogICAgIGJvb2wgZGVjb2RlKFdlYkNvcmU6OkdJRkltYWdl
RGVjb2Rlcjo6R0lGUXVlcnksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKTsKIApAQCAtMzE2LDYgKzMx
Niw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxHSUZGcmFtZUNvbnRl
eHQ+ID4gbV9mcmFtZXM7CiAgICAgc2l6ZV90IG1fY3VycmVudERlY29kaW5nRnJhbWU7CiAKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAg
IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9k
YXRhOwogICAgIGJvb2wgbV9wYXJzZUNvbXBsZXRlZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29k
ZXIuY3BwCmluZGV4IGM3MTdjNDVkMzA1N2MwNTUzNmVlNjA1MGY5Mzk3MDQ2ZDEwZGYyYTcuLmMw
NzEzNDViOGJmMzY5YjgwMjcxZmJkZjBhMGNlMDE3NGYwNTAzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFn
ZURlY29kZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIElDT0ltYWdlRGVjb2Rlcjo6SUNPSW1hZ2VE
ZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiAK
IElDT0ltYWdlRGVjb2Rlcjo6fklDT0ltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBJ
Q09JbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKK3ZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCmluZGV4IGZiN2E5MDNiMmEw
NzUzOTQ5MTdhYmJiZjExYjFjZWQ4M2ZmNDMyYTAuLjEwZWU5YjRkMmU4YzlkODg3ZTFkMmI4YmUx
MzliYjc0MjcxZDU3YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKQEAgLTQ2LDcgKzQ2LDcg
QEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBTdHJpbmcgZmls
ZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiaWNvIl9zOyB9Ci0gICAgdm9p
ZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAg
ICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKSBmaW5hbDsKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCBmaW5hbDsKICAgICBJbnRTaXpl
IGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdCBmaW5hbDsK
ICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0lt
YWdlRGVjb2Rlci5jcHAKaW5kZXggYTQyZTViYzRhY2NmMzcyMmE1YWY5YzkwNTQ2MmQwOGVkODg0
MTY0OC4uNWNmYWM5ZjIzNTdlMmUxMmM2ODY0MDBiMjY3ODhhZTdmOGJlMTM1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VE
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RhdGljIGJvb2wg
aXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKICAgICAgICAgJiYgbWFy
a2VyLT5kYXRhWzExXSA9PSAnXDAnOwogfQogCi1zdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCitz
dGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNz
X3N0cnVjdCogaW5mbykKIHsKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBm
b3IgKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIgPSBpbmZvLT5tYXJrZXJfbGlzdDsgbWFy
a2VyOyBtYXJrZXIgPSBtYXJrZXItPm5leHQpIHsKQEAgLTMyMCw3ICszMjAsNyBAQCBwdWJsaWM6
CiAgICAgICAgIG1fYnl0ZXNUb1NraXAgPSBzdGQ6Om1heChudW1CeXRlcyAtIGJ5dGVzVG9Ta2lw
LCBzdGF0aWNfY2FzdDxsb25nPigwKSk7CiAgICAgfQogCi0gICAgYm9vbCBkZWNvZGUoY29uc3Qg
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkKKyAgICBib29s
IGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwg
Ym9vbCBvbmx5U2l6ZSkKICAgICB7CiAgICAgICAgIG1fZGVjb2RpbmdTaXplT25seSA9IG9ubHlT
aXplOwogCkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUo
Ym9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB9CiAKICNpZiBVU0UoTENNUykK
LXZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2Zp
bGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzAzYWE2Nzgy
MjAzY2JkNGNmYzgzZmRlOGY4NzEyYjcwODFlM2FhOS4uZDJkN2ZhNmFiNDliNDI0N2FmZmI4ZTFm
YmVlNDY5NTNiMGNiMDVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKQEAgLTY4LDcg
KzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgc2V0T3JpZW50YXRp
b24oSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50
YXRpb247IH0KICNpZiBVU0UoTENNUykKLSAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKKyAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxl
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOwogI2VuZGlmCiAKICAgICBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBF
RzIwMDBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCmluZGV4IGJlY2Y2NDUwMjc3
ZWViNzRiMDlkZTUyZWUxODJmZjZlMTFlZDI3NjIuLjIwNDczZjBlZWViYjU2YzcxMzE0ZjY1NTZi
ZGEwOTAzMzQ5MDc0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVj
b2Rlci5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIEpQRUcyMDAwSW1hZ2VEZWNvZGVyOjpk
ZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgfQogCiAgICAg
c3RydWN0IFJlYWRlciB7Ci0gICAgICAgIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGE7
CisgICAgICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhOwogICAg
ICAgICBzaXplX3Qgb2Zmc2V0OwogICAgIH0gcmVhZGVyID0geyAqbV9kYXRhLCAwIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJ
bWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
cG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYzEyYzQ1OWE1YTNlNWIzNTFjNWJjYzYyYmYw
MGI4YTI4MWJkNWJhMy4uNGNiZDMyM2Q5YTc1MDI2ZWY4NjU4ZjM4MTZkZDczOGQzN2NhOGVkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BO
R0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6
CiAgICAgICAgIG1fcmVhZE9mZnNldCA9IDA7CiAgICAgfQogCi0gICAgYm9vbCBkZWNvZGUoY29u
c3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBzaXplT25seSwgdW5zaWdu
ZWQgaGFsdEF0RnJhbWUpCisgICAgYm9vbCBkZWNvZGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgc2l6ZU9ubHksIHVuc2lnbmVkIGhhbHRBdEZy
YW1lKQogICAgIHsKICAgICAgICAgbV9kZWNvZGluZ1NpemVPbmx5ID0gc2l6ZU9ubHk7CiAgICAg
ICAgIFBOR0ltYWdlRGVjb2RlciogZGVjb2RlciA9IHN0YXRpY19jYXN0PFBOR0ltYWdlRGVjb2Rl
cio+KHBuZ19nZXRfcHJvZ3Jlc3NpdmVfcHRyKG1fcG5nKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmNwcAppbmRleCAwMmYxYjA5ZGJjNzY1MTYwMWY5MjJkZGUyOWY4MDVhNjU4NzFlMmQy
Li5iMWJlYzU1ZTc4YzQzNDgwMWMyNTRhY2UwZGY1OTkzMWEzNmI3NGJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29k
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAv
V0VCUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgV0VCUEltYWdlRGVjb2Rlcjo6
V0VCUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGUKIAogV0VCUEltYWdlRGVjb2Rlcjo6fldFQlBJbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7
CiAKLXZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlm
IChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgV0VC
UEltYWdlRGVjb2Rlcjo6ZGVjb2RlKHNpemVfdCBmcmFtZUluZGV4LCBib29sIGFsbERhdGFSZWNl
aXZlZCkKICAgICAvLyBUaGlzIGNhbiBiZSBleGVjdXRlZCBib3RoIGluIHRoZSBtYWluIHRocmVh
ZCAod2hlbiBub3QgdXNpbmcgYXN5bmMgZGVjb2RpbmcpIG9yIGluIHRoZSBkZWNvZGluZyB0aHJl
YWQuCiAgICAgLy8gV2hlbiBleGVjdXRlZCBpbiB0aGUgZGVjb2RpbmcgdGhyZWFkLCBhIGNhbGwg
dG8gc2V0RGF0YSgpIGZyb20gdGhlIG1haW4gdGhyZWFkIG1heSBjaGFuZ2UgdGhlIGRhdGEKICAg
ICAvLyB0aGUgV2ViUERlbXV4ZXIgaXMgdXNpbmcsIGxlYXZpbmcgaXQgaW4gYW4gaW5jb25zaXN0
ZW50IHN0YXRlLCBzbyB3ZSBuZWVkIHRvIHByb3RlY3QgdGhlIGRhdGEuCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHByb3RlY3RlZERhdGEobV9kYXRhKTsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHByb3RlY3RlZERhdGEobV9k
YXRhKTsKICAgICBXZWJQRGF0YSBpbnB1dERhdGEgPSB7IHByb3RlY3RlZERhdGEtPmRhdGEoKSwg
cHJvdGVjdGVkRGF0YS0+c2l6ZSgpIH07CiAgICAgV2ViUERlbXV4U3RhdGUgZGVtdXhlclN0YXRl
OwogICAgIFdlYlBEZW11eGVyKiBkZW11eGVyID0gV2ViUERlbXV4UGFydGlhbCgmaW5wdXREYXRh
LCAmZGVtdXhlclN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKaW5kZXggYWYzNjVl
OWNmOWM3Y2U5NTM4YjY0YmE3ODliZjAxN2Q0OGY2ZWRlMS4uZGQyOGJjODhkZjVjMGZhM2MxNTcz
Nzg2OWIyNjA5NzNhYWEwZDIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldFQlBJbWFnZURlY29kZXIoKTsKIAog
ICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJ3
ZWJwIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwor
ICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCkgZmluYWw7CiAg
ICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBp
bmRleCkgb3ZlcnJpZGU7CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9mcmFtZUNvdW50OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0
ZWJvYXJkSU9TLm1tCmluZGV4IDkwOWU4ZTc2OGFkYjY4YmFiMjg0NDVkMjgyNzM2MGEzZjNmYTIy
YzMuLmIyMzc3ZmUzNDExZDJhYzQwMTUxM2JmMDlhZThjY2FlNzg2YmQ4ZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC0yMzYsMTQgKzIzNiwx
NCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogCiAjaWYgIVBMQVRGT1JN
KE1BQ0NBVEFMWVNUKQogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KF9fYnJpZGdlIE5T
U3RyaW5nICopa1VUVHlwZUZsYXRSVEZEXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBr
VVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5h
bWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50
KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdl
ZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRSVEZEKCpi
dWZmZXIpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVh
ZFR5cGU7CiAgICAgfQogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2Ug
TlNTdHJpbmcgKilrVVRUeXBlUlRGXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRU
eXBlUlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVJURiwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgp
KTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAg
ICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsK
ICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZFJURigqYnVmZmVyKSA/IFJlYWRl
clJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwpAQCAtMjUx
LDcgKzI1MSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAjZW5kaWYg
Ly8gIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogCiAgICAgaWYgKFtzdXBwb3J0ZWRJbWFnZVR5cGVz
KCkgY29udGFpbnNPYmplY3Q6dHlwZV0pIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgdHlw
ZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChpdGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAg
IGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4g
UmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJl
dHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRJbWFnZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwg
dHlwZSwgaXRlbUluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkgPyBSZWFkZXJSZXN1bHQ6
OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDVh
ZDFmNmZhYzRiNjU0NzUxZDU5MWQzNjM1YzQ2ODUwMzlkNTcyNzUuLjE2YjNkNWQ0NDE1ZDI1ODUx
NWY2NjBhODZhYzZjZWZiZGNkYjY0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtNzksMTAgKzc5LDEwIEBAIHZv
aWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiAg
ICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlw
ZXNdKTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVi
b2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
KQogewogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJv
YXJkVHlwZTp0eXBlXSkKLSAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwog
ICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0zMzgsNyArMzM4LDcgQEAgaW50NjRfdCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKICAgICByZXR1
cm4gMDsKIH0KIAotaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUo
U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJikKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJk
OjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcm
KQogewogICAgIHJldHVybiAwOwogfQpAQCAtNjA5LDcgKzYwOSw3IEBAIFZlY3RvcjxTdHJpbmc+
IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3Qg
U3RyaW5nJiBvCiAjZW5kaWYgLy8gUEFTVEVCT0FSRF9TVVBQT1JUU19QUkVTRU5UQVRJT05fU1RZ
TEVfQU5EX1RFQU1fREFUQQogCiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEg
PSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
ZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJp
YWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBv
cmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVz
KCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTY3
Miw3ICs2NzIsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8
UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6Omdl
dDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKICAgICAgICAgW3JlcHJlc2Vu
dGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKICAgICB9KTsK
IApAQCAtNzQ2LDcgKzc0Niw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6
YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogICAgIHJldHVybiBz
dHJpbmdzOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25z
dAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmICgoTlNJbnRl
Z2VyKWluZGV4IDwgMCB8fCAoTlNJbnRlZ2VyKWluZGV4ID49IFttX3Bhc3RlYm9hcmQgbnVtYmVy
T2ZJdGVtc10pCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzU3LDcgKzc1Nyw3IEBAIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZm
ZXIoc2l6ZV90IGluZGV4LCBjb25zCiAKICAgICBpZiAoIVtwYXN0ZWJvYXJkSXRlbSBjb3VudF0p
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOworICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7
CiB9CiAKIFN0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCmluZGV4IDQ3ZTViZjVlNTE3NTdjOWE4OGQ1
YzMyZjI2YzE2ZTc4MjIzYmI4NDQuLmNhYmFhYTExOGRjMzRiNjFhMGE2ZjU0OGQzMDQ2NjI2NjFi
ODhiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29u
dmVydGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29u
dmVydGVySU9TLm1tCkBAIC04Miw3ICs4Miw3IEBAIEBlbmQKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogUHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRlcihjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyJiBwcm92aWRlcikKLSAgICA6
IG1fcHJldmlld0RhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCkpIH0KKyAgICA6IG1fcHJldmlld0RhdGEgeyBtYWtlVW5pcXVlUmVm
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKSB9
CiAgICAgLCBtX29yaWdpbmFsUmVzcG9uc2UgeyByZXNwb25zZSB9CiAgICAgLCBtX3Byb3ZpZGVy
IHsgcHJvdmlkZXIgfQogICAgICwgbV9wbGF0Zm9ybURlbGVnYXRlIHsgYWRvcHROUyhbW1dlYlBy
ZXZpZXdDb252ZXJ0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZToqdGhpc10pIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggZmQ1
N2QyMjJjMmQ3NDMwMTYxMTYyYzBlMmI4OGU5ZjFjYzMxOTkxNC4uMGQyNTQ5OGI4NmJlZjE4NWQz
NzY5ZDVhNWJjMGJjMmY3MzFjNzBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRNYWMubW0KQEAgLTMzMCw3ICszMzAsNyBAQCBzdGF0aWMgU3RyaW5nIHJlYWRT
dHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9u
YWw8cwogICAgIHJldHVybiBzdHJhdGVneS5zdHJpbmdGb3JUeXBlKHR5cGUsIHBhc3RlYm9hcmRO
YW1lLCBjb250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCog
Y29udGV4dCkKK3N0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJy
ZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRl
bUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpZiAo
aXRlbUluZGV4KQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmlu
ZGV4IDFiOTE5MTRlM2Y3MjdhOGVmNjhmOWUxYTZhZTE1NTM4NmQ5ZmJhMmMuLmMzYjRkMmQ5NjIx
NzQ3MWM3MzVlMjRmZTdhNWY5ZDkyMzdkZjQ3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtNjgsMTIgKzY4LDEy
IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlw
ZXMpCiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCB0eXBlc10p
OwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJk
OjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8U2hh
cmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRh
dGFGb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRv
cHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7CiB9CiAKIGludCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6Om51bWJlck9mRmlsZXMoKSBjb25zdApAQCAtMjE4LDcgKzIxOCw3IEBAIFZlY3RvcjxTdHJp
bmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29u
c3QgU3RyaW5nJiBvCiB7CiAgICAgTGlzdEhhc2hTZXQ8U3RyaW5nPiBkb21QYXN0ZWJvYXJkVHlw
ZXM7CiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJk
IGRhdGFGb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAg
ICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIo
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQo
KSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVk
QnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7
CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9y
IChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21Q
YXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtMjYzLDggKzI2Myw4IEBAIGludDY0X3QgUGxh
dGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkK
ICAgICAgICAgaWYgKHBsYXRmb3JtVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+
KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0g
c3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnBsYXRmb3JtRGF0YS5n
ZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0
byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKQEAgLTM0MSw3ICsz
NDEsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcykKICAgICByZXR1cm4gW21fcGFzdGVib2FyZCBkZWNs
YXJlVHlwZXM6Y3JlYXRlTlNBcnJheShwYXN0ZWJvYXJkVHlwZXMpLmdldCgpIG93bmVyOm5pbF07
CiB9CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJl
ZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQoraW50NjRfdCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIGlmICghY2Fu
V3JpdGVQYXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkpCiAgICAgICAgIHJldHVybiAwOwpA
QCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBTdHJpbmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJu
UGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlwZSBwbGF0Zm9ybVR5CiAgICAgcmV0dXJuIHsg
fTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKK1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBOU1Bhc3RlYm9hcmRJdGVt
ICppdGVtID0gaXRlbUF0SW5kZXgoaW5kZXgpOwogICAgIGlmICghaXRlbSkKQEAgLTQ1NCw3ICs0
NTQsNyBAQCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29ucwogCiAgICAgaWYgKE5TRGF0YSAqZGF0YSA9
IFtpdGVtIGRhdGFGb3JUeXBlOnR5cGVdKSB7CiAgICAgICAgIGF1dG8gbnNEYXRhID0gYWRvcHRO
UyhkYXRhLmNvcHkpOwotICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG5zRGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShu
c0RhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtNTA0LDggKzUw
NCw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkSXRlbT4gY3JlYXRlUGFzdGVib2Fy
ZEl0ZW0oY29uc3QgUGFzdGVib2FyZEN1c3RvbURhCiAgICAgICAgIGlmICghcGxhdGZvcm1UeXBl
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlm
IChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdP
ckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHN0cmlu
Z09yQnVmZmVyKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpn
ZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERhdGE6
cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNl
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAg
ICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCmluZGV4IDY4MTNkNWRhN2RjYjBmYzI1OWYxYmQxZWQw
YTU0YzFhMWE5ZmQ5Y2YuLjc5NjU1NGY0Yzk3NjQ1MTQwMWUxYTEyMzc0Njg3MDQwYjI0YjFjYzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgTWVkaWFT
YW1wbGU7CiBjbGFzcyBNZWRpYVN0cmVhbVByaXZhdGU7CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZTsKIGNsYXNzIFBsYXRmb3JtQXVkaW9EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IE1lZGlhUmVjb3JkZXJQcml2
YXRlT3B0aW9uczsKIApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQXVkaW9WaWRlb1NlbGVjdGVkVHJhY2tzIHNlbGVjdFRyYWNrcyhN
ZWRpYVN0cmVhbVByaXZhdGUmKTsKIAotICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBkb3VibGUpPjsKKyAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+OwogICAgIHZpcnR1YWwgdm9pZCBmZXRjaERhdGEo
RmV0Y2hEYXRhQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSgpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCmlu
ZGV4IGMyNWRmOTE1NzRhNjViYzQxYmRiNzA2NzhkYzQ3NzI0ODM2ZGQxNDUuLjQ5OGQ0ZWUxMzQw
YzRiOTQwMDFiNjBjMzQ0NzliN2Y3MmQ1YzhlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlTW9jay5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1v
Y2s6OmdlbmVyYXRlTW9ja0NvdW50ZXJTdHJpbmcoKQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2
YXRlTW9jazo6ZmV0Y2hEYXRhKEZldGNoRGF0YUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9idWZmZXJMb2NrIH07CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZSB7IG1fYnVmZmVy
LmNoYXJhY3RlcnM4KCksIG1fYnVmZmVyLmxlbmd0aCgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDVlZDk4YzQxMzBiOWJl
MDM1MjM3YmYyZWY1MDYzZjZiMmVjZGMwNTUuLjljMmM3OTdiODE5NTEyZDhmZDU3OTAxNWRjM2I2
ZTQwNWUzYmM2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVu
ZFZpZGVvU2FtcGxlQnVmZmVyKE1lZGlhU2FtcGxlJik7CiAgICAgdm9pZCBhcHBlbmRBdWRpb1Nh
bXBsZUJ1ZmZlcihjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24mLCBjb25zdCBXVEY6Ok1lZGlhVGltZSYsIHNpemVfdCk7CiAgICAgdm9pZCBzdG9w
UmVjb3JkaW5nKCk7Ci0gICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiYmKTsKKyAgICB2b2lkIGZldGNoRGF0YShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBk
b3VibGUpPiYmKTsKIAogICAgIHZvaWQgcGF1c2UoKTsKICAgICB2b2lkIHJlc3VtZSgpOwpAQCAt
MTA1LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZpbmlzaGVkRmx1c2hpbmdTYW1w
bGVzKCk7CiAgICAgdm9pZCBjb21wbGV0ZUZldGNoRGF0YSgpOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHRha2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHRh
a2VEYXRhKCk7CiAKICAgICBib29sIG1faGFzQXVkaW8geyBmYWxzZSB9OwogICAgIGJvb2wgbV9o
YXNWaWRlbyB7IGZhbHNlIH07CkBAIC0xMTgsNyArMTE4LDcgQEAgcHJpdmF0ZToKIAogICAgIExv
Y2sgbV9kYXRhTG9jazsKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YSBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fZGF0YUxvY2spOwotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4gbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsK
KyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOwogCiAgICAgUmV0YWlu
UHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbjsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBtX2F1ZGlvQ29t
cHJlc3NvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXJDb2NvYS5tbQppbmRleCBjNzFhYTg0YWZjMWVjMTAwM2Q5Yzc0YjVkN2YxM2ZlZTQzNzY1ZTNh
Li44NDg0MTAwZWFjNWUxMTVlOWIwY2YwMTIwYmFiZjc4ZmIxYTEyNzRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC00OTMs
NyArNDkzLDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGlu
ZygpCiAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZldGNo
RGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJs
ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
OjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX2ZldGNo
RGF0YUNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CiAKQEAg
LTUzOCw3ICs1MzgsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmRE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAgIG1fZGF0YS5hcHBlbmQo
ZGF0YSwgc2l6ZSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjp0YWtlRGF0YSgpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkKIHsKICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9kYXRhTG9jayB9OwogICAgIHJldHVybiBtX2RhdGEudGFrZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCmluZGV4IGE5YjI5ZDU5
ZTlhYTNiNDY1NTQxNWJkOGJlZjA5ODRjNTQ0YjczZjAuLmNkZWU2MDM1MjNjZDY2OTQ1ZjQyOGY2
OTQ3ODk2MGY2ZmQ3NGM3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRGF0YVVSTERlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0RhdGFVUkxEZWNvZGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBuYW1lc3BhY2UgRGF0YVVSTERlY29kZXIgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IGIxNzQ5NzQ0NTRiZjczOTg5MDljYzhiZWE0
ZDBhM2I5NTc5YTc4ODAuLmEzN2EwZDg3NGY3MmJmOTFiZDUyYzNhYzZiNTg1ZDMzM2YwZmNhM2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC00
MTIsMTMgKzQxMiwxMyBAQCB1aW50NjRfdCBGb3JtRGF0YTo6bGVuZ3RoSW5CeXRlcygpIGNvbnN0
CiAgICAgcmV0dXJuICptX2xlbmd0aEluQnl0ZXM7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gRm9ybURhdGE6OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBmb3IgKGF1
dG8mIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7CiAgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+KGVsZW1lbnQuZGF0YSkpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShmbGF0dGVuKCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVu
KCkpOwogfQogCiBVUkwgRm9ybURhdGE6OmFzQmxvYlVSTCgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggNDZlMjczNTMzYzBmZjQ0MTY0MDZk
MjQ1MGVlMjA4ODFhNTVmY2JhZS4uNmVjZDdmMWIwNzNjMzgzMzQ0Mzk5NTE3NDU1ODk0MTBhYjhh
NjEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAt
MzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBs
OwogY2xhc3MgRE9NRm9ybURhdGE7CiBjbGFzcyBGaWxlOwotY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRleHRFbmNvZGluZzsKIAogc3Ry
dWN0IEZvcm1EYXRhRWxlbWVudCB7CkBAIC0yMjksNyArMjI5LDcgQEAgcHVibGljOgogICAgIGNv
bnN0IFZlY3RvcjxGb3JtRGF0YUVsZW1lbnQ+JiBlbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1f
ZWxlbWVudHM7IH0KICAgICBjb25zdCBWZWN0b3I8Y2hhcj4mIGJvdW5kYXJ5KCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3VuZGFyeTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIGJv
b2wgYWx3YXlzU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9hbHdheXNTdHJlYW07IH0KICAgICB2
b2lkIHNldEFsd2F5c1N0cmVhbShib29sIGFsd2F5c1N0cmVhbSkgeyBtX2Fsd2F5c1N0cmVhbSA9
IGFsd2F5c1N0cmVhbTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZS5oCmluZGV4IGZhZmRmZTg3YzgzN2U2MTU3ZDJmMTNlOWE3Y2EwMDk2OWQ1
MGIxYzcuLjRiZWJjYjUwOThkMTVjMjk2NmVkOGM3ZWUxMzZhZTNhMmFlNGEyMGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKQEAgLTg0
LDcgKzg0LDcgQEAgY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN5
bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlOwogY2xhc3MgVGltZXI7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5j
cHAKaW5kZXggODE4ZTE4MTg0NTE5NjdhYjUyZDE5OGQ5NTg3YjIwYTE0NDQ3OGRkOS4uYmE4ZmQ0
ZmY0ZjFlNDFjOWFkNGZhNzRhNDJiZTRlMmJkMTFhYTg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKQEAg
LTM2LDcgKzM2LDcgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OlJlc291cmNlSGFuZGxlQ2xpZW50
KCkgPSBkZWZhdWx0OwogCiBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xp
ZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZl
QnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRS
ZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGRpZFJlY2Vp
dmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKaW5kZXggYjYzMzdkNTZj
ZThjZDliZWZmOWRmYmUxMTM2NjJiYzc3NTZiNjUzNy4uYzRmMDU0ODVmMjg3MGIxMTZkYTdjNzYw
ZDNjMGZjZTk2ZWMyYjRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBS
ZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogZW51bSBDYWNoZVN0b3JhZ2VQb2xpY3kgewogICAg
IFN0b3JhZ2VBbGxvd2VkLApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0
ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgeyB9Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5k
bGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxl
KiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7
CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFp
bChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUuY3BwCmluZGV4IDg4ZGVkZmE0NWMzZjRjNDNhMzgxNTI4MGRhNWE0
MWUyNjk3NWI3MWYuLmY3MDAzNTVkNTY4YjA0MmE2YWRmMTA3MGRiYjgzODE5MjUzNjk0YWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZTo6ZGlkUmVjZWl2ZURhdGEoQ0ZECiAgICAgICAgIAogICAgICAgICBMT0coTmV0d29yaywgIkNG
TmV0IC0gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZTo6ZGlkUmVjZWl2ZURhdGEoaGFuZGxlPSVwKSAoJXMpIiwgaGFuZGxlLCBoYW5kbGUtPmZp
cnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIGhh
bmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoaGFuZGxlLCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIG9yaWdpbmFsTGVuZ3RoKTsKKyAgICAgICAgaGFu
ZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5kbGUsIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZ2V0KCkpLCBvcmlnaW5hbExlbmd0aCk7CiAgICAgfTsKICAgICAKICAgICBpZiAo
bV9tZXNzYWdlUXVldWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggZTJjMzVl
ZDMxMGIzMTEwNjUxMTZjOGZjODZjMmU0MDI5YTgyYzlhNC4uMDA4ZTIyNmZmOTE5MDA0YjQ1MTQ4
YTI0NzI2MTE2MTUwOTg5NjI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAt
MjQzLDcgKzI0Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikgZmluYWwKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFs
CiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoIW1f
Z2VuZXJhdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAppbmRleCA0MDQ4ODVhZTYzNzZmY2U2ODA0
MGQyYTA1YzAwYmVjNDdmZTE2YWE4Li5jZTRjMjU0NWNkZTBmMmY0NmFjMzM4Zjk2YzQ5MDg4ZWI0
NWQwOTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1dlYkNvcmVOU1VSTFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJE
YXRhVmlldzsKIGNsYXNzIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDsKIGVudW0g
Y2xhc3MgU2hvdWxkQ29udGludWVQb2xpY3lDaGVjayA6IGJvb2w7CkBAIC0xNTgsNyArMTU4LDcg
QEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uIDogTlNPYmpl
Y3QgewogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJl
c291cmNlKilyZXNvdXJjZSBzZW50Qnl0ZXM6KHVuc2lnbmVkIGxvbmcgbG9uZylieXRlc1NlbnQg
dG90YWxCeXRlc1RvQmVTZW50Oih1bnNpZ25lZCBsb25nIGxvbmcpdG90YWxCeXRlc1RvQmVTZW50
OwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291
cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlc3BvbnNlOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJilyZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJiljb21wbGV0aW9uSGFuZGxl
cjsKIC0gKEJPT0wpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNv
dXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpcmVzcG9uc2U7Ci0tICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJilkYXRhOworLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKWRhdGE7CiAtICh2b2lkKXJlc291cmNl
OihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2Vp
dmVkUmVkaXJlY3Q6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlIHJl
cXVlc3Q6KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKXJlcXVlc3QgY29tcGxldGlvbkhhbmRs
ZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYm
KWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWRX
aXRoRXJyb3I6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKWVycm9yOwogLSAodm9pZCly
ZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJj
ZSBsb2FkRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJv
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlNTkyMjdlMzhhYTA2MTJkOTI3YzgyNTlk
MDE0N2RhNGJmNmE3NjliLi44Yzg5ZDkzODY1NzkzM2ExZGEyOTAzMTk5MTU4NGM0ZGIyZmFhOWE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC02MDgsNyArNjA4LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENhY2hl
UmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5z
aWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYp
IG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGFjY2Vz
c0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJj
ZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGaW5p
c2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBv
dmVycmlkZTsKQEAgLTY1Miw3ICs2NTIsNyBAQCBib29sIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRh
VGFza0NsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyYwogICAg
IHJldHVybiBbbV90YXNrIHJlc291cmNlOiZyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOnJl
c3BvbnNlXTsKIH0KIAotdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50Ojpk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX3Rhc2tM
b2NrIH07CiAgICAgaWYgKCFtX3Rhc2spCkBAIC05MTUsNyArOTE1LDcgQEAgLSAoQk9PTClyZXNv
dXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNl
Oihjb25zdCBSZXMKICAgICByZXR1cm4gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFk
ZXJOYW1lOjpDb250ZW50UmFuZ2UpLmlzRW1wdHkoKTsKIH0KIAotLSAodm9pZClyZXNvdXJjZToo
UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpZGF0YQorLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJl
c291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKWRhdGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3Vy
Y2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKICAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVn
YXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBkYXRhID0gV1RG
TW92ZShkYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybERvd25sb2FkLmNwcAppbmRleCBjMzZlMWY4ODc2NDMwNDYwY2U3NTBhM2I4YzY1
OGM3MzRlY2IxNTA4Li4zNDk0NDU5MjU0YWM5M2ZjMTljYjEyMTUwYTYxYmMyYmNlZDAyZDZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERv
d25sb2FkLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlk
UmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVzcG9uc2UmJiByCiB9
CiAKIAotdm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0
JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERp
ZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCmluZGV4IGEz
YWEwY2Y1ZmNkMjk1NWJiN2IxNmIxMWExYTgxY2E3NGFlNjFjOGQuLmNkZTQ0NDU3NzVmNzQ0MjMz
MDUzMGI2NWIxMzU3YmE2YmZkOWJiODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0
ZToKICAgICBSZWY8Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYpOwogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9u
ZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgY3VybERp
ZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVx
dWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lk
IGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3Vy
Y2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcAppbmRleCBkNjM1Zjc5Y2QxZWM2MjFhZGZlYjZkY2M0OTM2ZWVlZjUwY2Y5YWRjLi4w
OTBkMDM5YmE0NWRlMTAyOGVkZjc2ODRjNmQ3ZDJmMjk2ZTNhMzRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRI
YW5kbGUuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgQ3VybE11bHRpcGFydEhhbmRsZTo6Q3VybE11
bHRpcGFydEhhbmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiBjbGllbnQsIGNvbnMKIAog
fQogCi12b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0
YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fc3Rh
dGUgPT0gU3RhdGU6OkVuZCkKICAgICAgICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9z
ZWQgZG93biBzbyBpZ25vcmUgZXZlcnl0aGluZy4KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEN1
cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKCkKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0
ZTo6RW5kKSB7CiAgICAgICAgIC8vIEl0IHNlZW1zIHdlIGFyZSBzdGlsbCBub3QgYXQgdGhlIGVu
ZCBvZiB0aGUgcHJvY2Vzc2luZy4KICAgICAgICAgLy8gUHVzaCBvdXQgdGhlIHJlbWFpbmluZyBk
YXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUobV9idWZmZXIpKSk7CisgICAgICAgIG1f
Y2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKG1fYnVmZmVyKSkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZDsKICAgICB9
CiAKQEAgLTIzNCwxMyArMjM0LDEzIEBAIGJvb2wgQ3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vz
c0NvbnRlbnQoKQogCiAgICAgICAgIGlmICghY2hlY2tGb3JCb3VuZGFyeShib3VuZGFyeVN0YXJ0
LCBsYXN0UGFydGlhbE1hdGNoKSAmJiBib3VuZGFyeVN0YXJ0ID09IG5vdEZvdW5kKSB7CiAgICAg
ICAgICAgICAvLyBEaWQgbm90IGZpbmQgdGhlIGJvdW5kYXJ5IHN0YXJ0LCBhbGwgZGF0YSB1cCB0
byB0aGUgbGFzdFBhcnRpYWxNYXRjaCBpcyBvay4KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9i
dWZmZXIuZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CisgICAgICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIu
ZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CiAgICAgICAgICAgICBtX2J1ZmZlci5yZW1vdmUo
MCwgbGFzdFBhcnRpYWxNYXRjaCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KIAogICAgICAgICAvLyBUaGVyZSB3YXMgYSBib3VuZGFyeSBzdGFydCAob3IgZW5kIHdlJ2xs
IGNoZWNrIHRoYXQgbGF0ZXIpLCBwdXNoIG91dCBwYXJ0IG9mIHRoZSBkYXRhLgotICAgICAgICBt
X2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOworICAgICAgICBtX2Ns
aWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9i
dWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CiAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgw
LCBib3VuZGFyeVN0YXJ0ICsgbV9ib3VuZGFyeS5sZW5ndGgoKSk7CiAgICAgICAgIG1fc3RhdGUg
PSBTdGF0ZTo6RW5kQm91bmRhcnk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKaW5kZXggNWMw
OGJjYzVlYjNlNGJiY2MwMjliNDc2Nzg2OGY0M2UyZjk1YzM0MS4uOWExYTFiYmQxOTM4YTE0ZjY5
ZmNjZWUzZjBmODliOTdhNGEyMTg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCkBAIC0zNCw3ICsz
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZUNs
aWVudDsKIGNsYXNzIEN1cmxSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGUgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAg
Q3VybE11bHRpcGFydEhhbmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiwgY29uc3QgU3Ry
aW5nJik7CiAgICAgfkN1cmxNdWx0aXBhcnRIYW5kbGUoKSB7IH0KIAotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZSgpOwog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKaW5kZXggZmQxM2ZkMzgx
MzE0M2NiMjY1OWI4ZmQxZGIyNDQ0NzY1ZTk4YTU4MC4uYzgxMzg4NmE4ZDVjNWZhNmMxMmQxNDEz
MzE5MTAxYWYyNTAyYTJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCkBAIC0y
OCwxMiArMjgsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybFJlc3BvbnNl
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPFNo
YXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21N
dWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIAogcHJvdGVjdGVk
OgogICAgIH5DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBhY2Q4
OGUxYjAyOWI5YjFlN2YxNGI3ZDE0MDMyOTI2YjkzMTc1YTBmLi5kODJkZDNjMTBhYzY0NzEzNTk5
MWZkN2FlNjY5N2U5ZDhlMzEzZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTM5Niw3ICszOTYsNyBAQCBzaXpl
X3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVIZWFkZXIoU3RyaW5nJiYgaGVhZGVyKQogCiAvLyBj
YWxsZWQgd2l0aCBkYXRhIGFmdGVyIGFsbCBoZWFkZXJzIGhhdmUgYmVlbiBwcm9jZXNzZWQgdmlh
IGhlYWRlckNhbGxiYWNrCiAKLXNpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitzaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVE
YXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoaXND
b21wbGV0ZWRPckNhbmNlbGxlZCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTQ0NCw3ICs0NDQs
NyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25z
dCBWZWN0b3I8U3RyaW5nPiYgaGVhZGVycykKICAgICBpbnZva2VEaWRSZWNlaXZlUmVzcG9uc2Uo
cmVzcG9uc2UsIEFjdGlvbjo6Tm9uZSk7CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2Vp
dmVEYXRhRnJvbU11bHRpcGFydChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3Vy
bFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNzc3LDcgKzc3Nyw3IEBAIGNvbnN0IFN0cmluZyYgQ3VybFJl
cXVlc3Q6OmdldERvd25sb2FkZWRGaWxlUGF0aCgpCiAgICAgcmV0dXJuIG1fZG93bmxvYWRGaWxl
UGF0aDsKIH0KIAotdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVu
YWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0
ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kb3dubG9hZE11
dGV4IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdC5oCmluZGV4IDZiZDhhNmJmYmEzNzUyY2VkZGRiYzUwMDllYWU4M2M0ZjBlZWQ2NDEu
LjNjN2NkZDg4M2ViNjJiZmU5MmNmMDQ0NWVkMjliZDI2ZWNlM2U5MjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCkBAIC00Miw3
ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEN1cmxSZXF1ZXN0Q2xpZW50Owog
Y2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTeW5jaHJv
bm91c0xvYWRlck1lc3NhZ2VRdWV1ZTsKIAogY2xhc3MgQ3VybFJlcXVlc3QgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8Q3VybFJlcXVlc3Q+LCBwdWJsaWMgQ3VybFJlcXVlc3RTY2hlZHVs
ZXJDbGllbnQsIHB1YmxpYyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50IHsKQEAgLTEyMiw5ICsx
MjIsOSBAQCBwcml2YXRlOgogICAgIENVUkwqIHNldHVwVHJhbnNmZXIoKSBvdmVycmlkZTsKICAg
ICBzaXplX3Qgd2lsbFNlbmREYXRhKGNoYXIqLCBzaXplX3QsIHNpemVfdCk7CiAgICAgc2l6ZV90
IGRpZFJlY2VpdmVIZWFkZXIoU3RyaW5nJiYpOwotICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0YShS
ZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzaXplX3QgZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUhlYWRlckZyb21NdWx0
aXBhcnQoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhRnJvbU11bHRpcGFydChSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVRyYW5zZmVyKENVUkxjb2RlKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNlbFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBmaW5hbGl6ZVRyYW5zZmVyKCk7CkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICBO
ZXR3b3JrTG9hZE1ldHJpY3MgbmV0d29ya0xvYWRNZXRyaWNzKCk7CiAKICAgICAvLyBEb3dubG9h
ZAotICAgIHZvaWQgd3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVk
QnVmZmVyJik7CisgICAgdm9pZCB3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBjbG9zZURvd25sb2FkRmlsZSgp
OwogICAgIHZvaWQgY2xlYW51cERvd25sb2FkRmlsZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCmluZGV4
IDA4Yzg2YzdkNDY4NGJhNmY3OGQ2MTZiNjhkMDY5MDRjMzdhOTY2NzcuLjM0Nzk4MzJmNTc2ZDQx
MjhhZmE1MWM4MTQyNGNjZmQ3NDFkZjZhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCkBAIC0zNCw3ICsz
NCw3IEBAIGNsYXNzIEN1cmxSZXF1ZXN0OwogY2xhc3MgQ3VybFJlc3BvbnNlOwogY2xhc3MgTmV0
d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxSZXF1ZXN0Q2xp
ZW50IHsKIHB1YmxpYzoKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRl
c1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNw
b25zZSYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxS
ZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjdXJs
RGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYs
IE5ldHdvcmtMb2FkTWV0cmljcyYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRGYWls
V2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8m
JikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IGVk
MDVkZTdhZWU5MzIxZTlmZDAzODFmYzczZGNlMjc5NjdkZmNkODEuLjMwNWQ0ZTVjOWZjMjcwNzc1
Nzg3YjBmOWE5MTk3OWMwODg4OWE4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdh
dGU6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1CiAgICAg
fSk7CiB9CiAKLXZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZl
QnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1
cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVz
dCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oCmluZGV4
IDZkNTU4NjQ0NTJmZDQ2ZWU3ODAwZTkzMTIzYjEyOGJkYzY0Y2U0ODcuLmRhZjBhNTlhNGU1ODZk
NzExNGFiYjRlNWVmOWM1NGY2YThiZWZjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY3VybERpZFNlbmRE
YXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQg
bG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkUmVj
ZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpIGZpbmFsOwotICAgIHZv
aWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYm
KSBmaW5hbDsKKyAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgY3VybERpZENvbXBs
ZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYpIGZpbmFsOwogICAgIHZvaWQg
Y3VybERpZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiYsIENlcnRp
ZmljYXRlSW5mbyYmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4
IGJjNGRhYWZiZjIxYTE1YzBlNmRkMWFjZDQ2MjJhZmE1NmI3YjhkNWQuLjFmNGExOTMxMzMxMmM1
ZGQ2YTQ4YWQ1MzM5ZGZkMmMzYjVkZWMyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50
LmgKQEAgLTMxLDEyICszMSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIExlZ2Fj
eVByZXZpZXdMb2FkZXJDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxMZWdhY3lQcmV2aWV3TG9h
ZGVyQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TGVnYWN5UHJldmlld0xvYWRlckNs
aWVudCgpID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVy
UE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9T
SVguY3BwCmluZGV4IDNjYTIwODIyYzAzMThhNTQ5MTExODY3NWQyN2I4NzhkZDE4M2ZlOWIuLjBm
YjQ1MDA3MmZhMTA0MjJmNmE5ZmU0MzJjMzgxZDNkMTk2MTNlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKQEAgLTM0LDcg
KzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlm
IChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjgsNyAr
NjgsNyBAQCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbgogICAgIGlmICh0b3RhbEJ5dGVzUmVhZCAh
PSBieXRlc1RvUmVhZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2lu
LmNwcAppbmRleCBjNDYwZjVmYTQwZGRhMjFkZWI0NjM4M2E5MGJlYTY2NTNiMzBjNWYwLi40NTM2
ODFiZGFiMmU0YTA1YTIxZmM2OGE5NDM3MDBlMDZjOTk3YTFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0zNTYsNyArMzU2LDcgQEAgU3Ry
aW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBl
KQogCiBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVDb3VudGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVS
ZWFkZXIgewogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgKytj
b3VudDsgfQotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbCB7ICsrY291bnQ7IH0KKyAgICB2b2lkIHJlYWRC
dWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsIHsgKytjb3VudDsgfQogCiAgICAgdW5zaWduZWQgY291bnQgeyAwIH07
CiB9OwpAQCAtOTc0LDcgKzk3NCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdl
RmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICByZXR1
cm4gbWVtT2JqOwogfQogCi1zdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250
ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKK3N0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdl
RmlsZUNvbnRlbnQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBIR0xPQkFM
IG1lbU9iaiA9IEdsb2JhbEFsbG9jKEdQVFIsIGRhdGEtPnNpemUoKSk7CiAgICAgaWYgKCFtZW1P
YmopIApAQCAtOTk0LDcgKzk5NCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdl
RmlsZUNvbnRlbnQoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVybiBtZW1PYmo7CiB9CiAK
LXN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwg
U3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRhKQorc3RhdGljIEhHTE9CQUwgY3Jl
YXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmIChmaWxlTmFtZS5pc0VtcHR5
KCkgfHwgIWRhdGEpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTA3MSw3ICsxMDcxLDcgQEAgdm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFVSTCYgdXJsKQogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgIWNhY2hlZEltYWdlLT5pbWFn
ZUZvclJlbmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSkgfHwgIWNhY2hlZEltYWdlLT5pc0xvYWRl
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0g
Y2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgp
OworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0gY2FjaGVkSW1hZ2Ut
PmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgpOwogICAgIGlmICgh
aW1hZ2VCdWZmZXIgfHwgIWltYWdlQnVmZmVyLT5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAppbmRl
eCAwNzM5ZGRmNDRiZjAzYzVmMTk5MWVlMjY2YmRhMWQ1ZDVkNzM4ZDE3Li44OWNmNmEwYmI2NTg3
MDgzNDU0MTQ2MDY2N2M1MTVhOGFhY2Y4NzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NSw3ICs0NSw3IEBAIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUoY29uCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZXN1bHQ7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gcmVzdWx0OwogICAgIERXT1JEIGJ5dGVzVG9SZWFkID0gR2V0RmlsZVNpemUoZmlsZUhhbmRs
ZSwgMCk7CiAgICAgRFdPUkQgbGFzdEVycm9yID0gR2V0TGFzdEVycm9yKCk7CiAKQEAgLTUzLDcg
KzUzLDcgQEAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb24KICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGJ1ZmZlcihieXRlc1RvUmVhZCk7CiAgICAgICAgIERXT1JEIGJ5dGVzUmVhZDsKICAgICAgICAg
aWYgKFJlYWRGaWxlKGZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ5dGVzVG9SZWFkLCAmYnl0
ZXNSZWFkLCAwKSAmJiBieXRlc1RvUmVhZCA9PSBieXRlc1JlYWQpCi0gICAgICAgICAgICByZXN1
bHQgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJl
YWQgY29udGVudHMgb2YgZmlsZSAlcywgR2V0TGFzdEVycm9yKCkgPSAldSIsIGZpbGVQYXRoLmFz
Y2lpKCkuZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDY1MjcyNTBlNWFiY2RkYmEwMDAyYjBm
YmNlNjU2NWQyZjU4NjVkMDYuLjg0ZmEyOWNlMWYzMDBmZTI5MGIwNDE0NjQ4ZjBmNzI5MGE3Y2Jl
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC02Myw3
ICs2Myw3IEBAIGJvb2wgTW9ja0NETUZhY3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKQogICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGtleVN5
c3RlbSwgIm9yZy53ZWJraXQubW9jayIpOwogfQogCi12b2lkIE1vY2tDRE1GYWN0b3J5OjphZGRL
ZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8U2hhcmVkQnVm
ZmVyPj4mJiBrZXlzKQordm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJ
RChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYm
IGtleXMpCiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nlc3Npb25zLmFkZChpZCwgV1RGTW92
ZShrZXlzKSk7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQpAQCAtNzQsNyArNzQsNyBA
QCB2b2lkIE1vY2tDRE1GYWN0b3J5OjphZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmlu
ZyYgaWQsIFZlY3RvcjxSZWY8U2hhcmVkQgogICAgICAgICB2YWx1ZS5hcHBlbmQoV1RGTW92ZShr
ZXkpKTsKIH0KIAotVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBNb2NrQ0RNRmFjdG9yeTo6cmVt
b3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpCitWZWN0b3I8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNz
aW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpCiB7CiAgICAgYXV0byBpdCA9IG1fc2Vzc2lvbnMu
ZmluZChpZCk7CiAgICAgaWYgKGl0ID09IG1fc2Vzc2lvbnMuZW5kKCkpCkBAIC04Myw3ICs4Myw3
IEBAIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtleXNG
cm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpCiAgICAgcmV0dXJuIFdURk1vdmUoaXQtPnZhbHVl
KTsKIH0KIAotY29uc3QgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiogTW9ja0NETUZhY3Rvcnk6
OmtleXNGb3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0Citjb25zdCBWZWN0
b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiogTW9ja0NETUZhY3Rvcnk6OmtleXNGb3JT
ZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0CiB7CiAgICAgYXV0byBpdCA9IG1f
c2Vzc2lvbnMuZmluZChpZCk7CiAgICAgaWYgKGl0ID09IG1fc2Vzc2lvbnMuZW5kKCkpCkBAIC0y
MDIsNyArMjAyLDcgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QKICAg
ICByZXR1cm4gbV9mYWN0b3J5ICYmIG1fZmFjdG9yeS0+c3VwcG9ydHNTZXNzaW9ucygpOwogfQog
Ci1ib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAorYm9vbCBNb2NrQ0RN
OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAgICAgaWYgKCFzdXBw
b3J0ZWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMjExLDcgKzIxMSw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0
aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIGF1dG8gYnVmZmVy
ID0gcmVzcG9uc2UubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxB
U0NJSShidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKQEAgLTI3MCw3ICsyNzAsNyBA
QCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0
IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdAogICAgIGNhbGxiYWNrKGluaXRpYWxpemUoKSk7CiB9
CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVk
QnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQg
TW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAg
ICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAKQEAgLTI5OCw3ICsyOTgs
NyBAQCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQ
dHI8TW9ja0NETUluc3RhbmNlPiYmIGluc3RhbgogewogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5j
ZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExp
Y2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGlj
ZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgTW9ja0NETUZhY3RvcnkqIGZhY3Rvcnkg
PSBtX2luc3RhbmNlID8gbV9pbnN0YW5jZS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAgICBpZiAo
IWZhY3RvcnkpIHsKQEAgLTMyNCw3ICszMjQsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Np
b246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tUwog
ICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGxpY2Vuc2UuZGF0YSgpLCBsaWNlbnNl
Lmxlbmd0aCgpKSwgc2Vzc2lvbklELCBmYWxzZSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwog
fQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNl
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNl
U2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5
cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1f
aW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFj
dG9yeSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCmluZGV4IGY1Y2Rh
NTA1Y2YyYTMzYzEwNWYwMjVjOTdjOTM1MGE5Njg2OThlMWUuLmQ5NmMxNTZlZTRkMjc5MWI4YjA5
OThkYWY5NDBlYzc1Mzc4MDdiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0
b3J5LmgKQEAgLTc3LDkgKzc3LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNTZXNzaW9uV2l0
aElEKGNvbnN0IFN0cmluZyYgaWQpIHsgcmV0dXJuIG1fc2Vzc2lvbnMuY29udGFpbnMoaWQpOyB9
CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIHsgbV9zZXNz
aW9ucy5yZW1vdmUoaWQpOyB9Ci0gICAgdm9pZCBhZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0
IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4mJik7Ci0gICAgY29uc3QgVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+Pioga2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5n
JiBpZCkgY29uc3Q7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiByZW1vdmVLZXlzRnJv
bVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCk7CisgICAgdm9pZCBhZGRLZXlzVG9TZXNz
aW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+JiYpOworICAgIGNvbnN0IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
KiBrZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdDsKKyAgICBWZWN0
b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiByZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRo
SUQoY29uc3QgU3RyaW5nJiBpZCk7CiAKIHByaXZhdGU6CiAgICAgTW9ja0NETUZhY3RvcnkoKTsK
QEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2FuQ3JlYXRlSW5zdGFuY2Vz
IHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9zdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcyB7IHRydWUg
fTsKICAgICBib29sIG1fc3VwcG9ydHNTZXNzaW9ucyB7IHRydWUgfTsKLSAgICBIYXNoTWFwPFN0
cmluZywgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gbV9zZXNzaW9uczsKKyAgICBIYXNoTWFw
PFN0cmluZywgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IG1fc2Vzc2lvbnM7
CiB9OwogCiBjbGFzcyBNb2NrQ0RNIDogcHVibGljIENETVByaXZhdGUgewpAQCAtMTIxLDggKzEy
MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwogICAg
IGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29s
IHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVm
ZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAg
IFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IG1fZmFjdG9yeTsKQEAgLTEzOSw3ICsxMzksNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5
cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6Ok1vY2s7IH0KICAg
ICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVu
dFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0
aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Cisg
ICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9y
eShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNv
bnN0IGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24o
KSBmaW5hbDsKQEAgLTE1NCw4ICsxNTQsOCBAQCBwdWJsaWM6CiAgICAgTW9ja0NETUluc3RhbmNl
U2Vzc2lvbihXZWFrUHRyPE1vY2tDRE1JbnN0YW5jZT4mJik7CiAKIHByaXZhdGU6Ci0gICAgdm9p
ZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmlu
YWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAg
dm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNh
bGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBM
aWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVD
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGlj
ZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGZjMTI3YjdiNjdiZWE3
MzQ0NjNjZDJkNWIwNzU2YjU5YmViYTU4YWUuLjA1OWYzYTM4NmI2Y2Y1ZmE3OWIzYzE4OTcwMTUz
MTNmN2NkYjRlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRl
bnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXIuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6ZmluaXNo
ZWRBZGRpbmdEYXRhKCkKICAgICBtYXliZURldGVybWluZVN0YXR1cyhEZWNpc2lvblBvaW50OjpB
ZnRlckZpbmlzaGVkQWRkaW5nRGF0YSk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE1vY2tDb250
ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IE1vY2tDb250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAogewogICAg
IEFTU0VSVChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KG1fcmVwbGFjZW1lbnREYXRhLmRhdGEoKSwgbV9yZXBsYWNlbWVudERhdGEuc2l6ZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaAppbmRleCA0MTFhMzAwOTQ3
YjUzOWUyNmFhNmM2NGEwMDkzMjkyZTlmZmJlNmI5Li42MzVhYzg0YmU3OTM4NDdhYTU3MjEzZDAx
ZmZjMWU3NGY3NmI3NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZp
bHRlci5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2
ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlz
aGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2Vt
ZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpCiAgICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVy
KCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZl
ci5oCmluZGV4IDM3ZjFhNDg3ZjhjNTJiNDRlYTI0MzBjY2NkMWZhMDI1ZWU5MWFhYzMuLmZkMmMx
YWUyZjYzYjYwZDc0YzMwZDI0MmE5ODlhMGJmZDkxZGU0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9TY3JpcHRCdWZmZXIuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBTY3JpcHRCdWZmZXIgewog
cHVibGljOgogICAgIFNjcmlwdEJ1ZmZlcigpID0gZGVmYXVsdDsKIAotICAgIFNjcmlwdEJ1ZmZl
cihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBTY3JpcHRCdWZmZXIoUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdU
Rk1vdmUoYnVmZmVyKSkKICAgICB7CiAgICAgfQpAQCAtNDgsOSArNDgsOSBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYpOwog
CiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBi
dWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
LmdldCgpLmdldCgpOyB9CiAKLSAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3Qg
eyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9i
dWZmZXIuY29weSgpKSA6IG51bGxwdHIpOyB9CisgICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29w
eSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQogICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzRW1wdHkoKTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXgg
ODVlNzYzODNkYWIzNTNhNGZjNGIwOWQxMjc3MTg1YTAwZTllMjM5Ny4uNDA2NmZiMzUyZWI1YjA4
N2Q1ZDhkNDdkODAyZmQyYzBhNmE4MGZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtODQsNyArODQsNyBAQCBib29sIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nKCkgY29uc3QKIGJvb2wgV29ya2VyRm9udExvYWRS
ZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBp
ZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lz
TG9hZGluZykgewotICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGln
dW91c0RhdGE7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhOwog
ICAgICAgICBpZiAobV9kYXRhLT5nZXQoKSkKICAgICAgICAgICAgIGNvbnRpZ3VvdXNEYXRhID0g
bV9kYXRhLT50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIGNvbnZlcnRXT0ZGVG9T
Zm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAK
aW5kZXggMGJjZDk3NmVkYTlkNGE3ODEwOWU2MjYzZDgxMDhjMzc1MDc1OGI3Ny4uOGE5MTM4ZDIz
YjBkNWRlYzUzZDI5OTBkZWQ1ZGI3NzYzNTRlNTI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2gu
Y3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1Jlc3BvbnNlKFJlZjxD
bGllbnQ+JiYgY2xpZW50LCBFeHBlY3RlZDxSZWY8RmV0Y2hSZXNwb25zZT4sIHMKICAgICBhdXRv
IGJvZHkgPSByZXNwb25zZS0+Y29uc3VtZUJvZHkoKTsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHks
IFsmXSAoUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNl
aXZlRm9ybURhdGFBbmRGaW5pc2goV1RGTW92ZShmb3JtRGF0YSkpOwotICAgIH0sIFsmXSAoUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKFJlZjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRGF0YShXVEZN
b3ZlKGJ1ZmZlcikpOwogICAgICAgICBjbGllbnQtPmRpZEZpbmlzaCgpOwogICAgIH0sIFsmXSAo
c3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCmluZGV4IGViMjY2YjZjMDdl
NjczZDkxNjZjYWNlNmIzMzkxOWQ4MGViYmYzMWMuLjA5NzU0M2UxYjNiMzBmZjMxNDdkOTIzMmE1
OGNlNGE5ZTYyZjNlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCkBAIC00Miw3ICs0Miw3IEBA
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBu
YW1lc3BhY2UgU2VydmljZVdvcmtlckZldGNoIHsKIGNsYXNzIENsaWVudCA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxDbGllbnQsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsK
QEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZWRpcmVjdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVm
PEZvcm1EYXRhPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoKCkgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3Jh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0
b3JhZ2UuY3BwCmluZGV4IDAzYTcyMTFmY2ViYjFmOGU0NjI4ZDU5ZWE0NWJjY2I3ODgwMmZiNDEu
LjlhOGZiMzVjYTUzNjEwNWJiNmQ2ZmM0NmVlMTIyNDU5MzNmNzBiZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFn
ZS5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpy
ZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpcwogICAgIH0K
IAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGRpc2FibGUgZmlsZSBtYXBwaW5nIGluIG1v
cmUgY2FzZXMgdG8gYXZvaWQgaGF2aW5nIHRvbyBtYW55IGZpbGUgZGVzY3JpcHRvcnMgb3Blbj8K
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNo
b3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVN
YXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CiAgICAg
cmV0dXJuIGJ1ZmZlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQ
cm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGli
eHNsdC5jcHAKaW5kZXggYTMwZjUxNDFhOGUxNGYyNzhmNWI5MTMxNzMzZDI2MTQ2MjgxMmNiNi4u
ZGY4YWJlNDI2ZTA2NzE3MWFmZmY5MGUwMzMzODUwNTlmMzMxMDM2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3Rh
dGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVyaSwKICAgICAgICAg
UmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsK
IAotICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgICAgICBib29sIHJlcXVlc3RBbGxvd2Vk
ID0gZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmZyYW1lKCkgJiYgZ2xvYmFsQ2FjaGVkUmVz
b3VyY2VMb2FkZXItPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdCh1cmwp
OwogICAgICAgICBpZiAocmVxdWVzdEFsbG93ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBkYjI2YmIz
OWRkNWFmOTlmMzFlNjYyYzM0Y2VkM2RiZjk2NzdmNWFiLi5hOGMzZTE4ZTQ3YWVjYWQwYTAyMmEw
ODRjNDlhMjFmNmM3MTRjMzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC00NjQsNyArNDY0LDcgQEAgc3Rh
dGljIHZvaWQqIG9wZW5GdW5jKGNvbnN0IGNoYXIqIHVyaSkKICAgICAgICAgcmV0dXJuICZnbG9i
YWxEZXNjcmlwdG9yOwogCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhOwogCiAgICAgewogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJv
eHkuY3BwCmluZGV4IDU3MzA2N2UzZGQwNTBmZWI3YzU3OWQwMDEwMmVlOWY2MDQ1YjUzMTMuLjMx
YzJkNzZmMmVlMWI5ZDI0OWIwMDFiN2VmZjg5MmVjMmE3NDU2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5j
cHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6flJlbW90ZUNETUlu
c3RhbmNlUHJveHkoKQogICAgIG1faW5zdGFuY2UtPmNsZWFyQ2xpZW50KCk7CiB9CiAKLXZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNl
aXZlZChjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2
b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRh
UmVjZWl2ZWQoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YSkKIHsKICAgICBpZiAoIW1fY2RtKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJv
eHkuaAppbmRleCA4ZTczZDNkOWE2NGI5OGJmYzAwOTM2Y2Q0N2M0YzI1YTkyNzlmMmM4Li4wMmM1
Y2QzN2FlNTQ4MDJmNmQwYzhkY2NjYjBiYTgwY2YzMzg4YzMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKQEAg
LTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KFdlYWtQ
dHI8UmVtb3RlQ0RNUHJveHk+JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4mJiwgVW5pcXVl
UmVmPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VJ
ZGVudGlmaWVyKTsKIAogICAgIC8vIENETUluc3RhbmNlQ2xpZW50Ci0gICAgdm9pZCB1bnJlcXVl
c3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXph
dGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAppbmRleCBlNTc2NmMyMzM0Y2Zk
Mzg5MzEwY2Q0YjIxNzIzY2FiYTM3NDJmYzdjLi5kZTgyNzNiOWNmNTAwYTRkNjZhYTE0NGVkZTAy
MDFlZWYxZWQ4NjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKQEAgLTcwLDcg
KzcwLDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUgdHlwZSwgQXRvbVN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgbV9zZXNzaW9uLT5yZXF1ZXN0TGljZW5zZSh0eXBlLCBpbml0RGF0YVR5cGUsIGluaXRE
YXRhLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21w
bGV0aW9uKV0gKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpT
dWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb24tPnJlcXVlc3RM
aWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51
bGwoKSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVl
ZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3Vj
Y2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbihXVEZNb3ZlKG1lc3NhZ2UpLCBz
ZXNzaW9uSWQsIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5j
ZVNlc3Npb246OlN1Y2NlZWRlZCk7CiAgICAgfSk7CiB9CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9p
ZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkLCBDbG9zZVMKIAogdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBl
IHR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJiBjb21wbGV0aW9uKQogewotICAgIG1f
c2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlLCBbY29tcGxldGlvbiA9
IFdURk1vdmUoY29tcGxldGlvbildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
ciYmIGtleVN0YXR1c2VzLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGV4cGly
ZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRl
ZCkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQs
IHR5cGUsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vz
c2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIHN0ZDo6b3B0aW9uYWw8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNl
U2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgIHN0ZDo6
b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVu
Y2U7CiAgICAgICAgIGlmIChleHBpcmVkU2Vzc2lvbnNEYXRhKQogICAgICAgICAgICAgZXhwaXJl
ZFNlc3Npb25EYXRhUmVmZXJlbmNlID0gSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoKmV4
cGlyZWRTZXNzaW9uc0RhdGEpKTsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJiBr
ZXlTdGF0dQogICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlVwZGF0ZUtleVN0YXR1c2VzKFdU
Rk1vdmUoa2V5U3RhdHVzZXMpKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBpZiAoIW1fY2RtKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCmluZGV4IDhhNjFmOWQ1ZmFiYzg0ODZhN2EwZTg2
MGY0YzYzMTJjMGI0NDU1MTQuLmZlNzMwOTcxMzFlMGJiMjBhNTAwMWUxNTAxNjAyZDY1MTg2YjMw
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZh
dGU6CiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQKICAgICB2b2lkIHVwZGF0ZUtl
eVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKSBmaW5hbDsKLSAgICB2b2lkIHNlbmRNZXNzYWdl
KFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIG1l
c3NhZ2UpIGZpbmFsOworICAgIHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5
cGUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFs
OwogICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBQ
bGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBmaW5hbCB7IHJldHVybiBtX2Rpc3BsYXlJRDsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5
LmNwcAppbmRleCA5YWIzNTc1ZjRjM2I1NTk1NTViOWI4N2IyMzM3MWIxYjFhNjZkYzE3Li5mN2Ni
NmE2M2ViOTMzYWJkNGQ0NTNhMjJhYjI5NGYxMzAzMjMyYjA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKQEAgLTYzLDEyICs2Mywx
MiBAQCBSZW1vdGVDRE1Qcm94eTo6UmVtb3RlQ0RNUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0
b3J5UHJveHk+JiYgZmFjdG9yeSwgc3RkOjp1bgogCiBSZW1vdGVDRE1Qcm94eTo6flJlbW90ZUNE
TVByb3h5KCkgPSBkZWZhdWx0OwogCi1ib29sIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK2Jv
b2wgUmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlw
ZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICByZXR1cm4gbV9w
cml2YXRlLT5zdXBwb3J0c0luaXREYXRhKHR5cGUsIGRhdGEpOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZm
ZXImIHJlc3BvbnNlKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFJlbW90ZUNETVBy
b3h5OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3Bv
bnNlKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2Up
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHku
aAppbmRleCA2OTI0ZTc0ZTNmNTAxMWJlMjE1YmU0YmQ5NmIyMzQ4MjY0NzBmNDIzLi4zYjY2Yzc3
NTc4NzA2OWU5NzZlZTA2NGY5NmZmMDdjMGY3MTJhOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaApAQCAtMzYsNyArMzYsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgQ0RN
UmVxdWlyZW1lbnQgOiB1aW50OF90OwogZW51bSBjbGFzcyBDRE1TZXNzaW9uVHlwZSA6IHVpbnQ4
X3Q7CiBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKQEAgLTU4LDggKzU4LDggQEAg
cHVibGljOgogCiAgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5KiBmYWN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9mYWN0b3J5LmdldCgpOyB9CiAKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJiByZXNwb25zZSk7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpOwogICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCmluZGV4IGUyY2QwNWQ3Y2M3NGYyMGVjNjlm
YWRmZTNlZTA4NTc1OTJhZDg3OWIuLmRlOGY2ZGY1NWE2ZTFmYThiZTk2NmY5NDFlMDdmZTJmNWM1
MDIxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1Qcm94eS5oCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5LmgKaW5kZXggZjE0YzYyN2Y2NTkzZTFhODc4ZDBmNDU5OTJiM2M0MWIyMjJj
N2YwMC4uMTU0NmJkZmRmZGNmMDkxMDg3ODk0NGYzNDA3OTY3YTdhYjM4YmY4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHkuaApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgTGVnYWN5Q0RNOwogY2xhc3MgTGVnYWN5Q0RNU2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBJUEMg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2UuY3BwCmluZGV4IGM0NWU1MjU1ZDY3YjUyYzdhZTEwNDQ5OTg4Y2UwMTkwYzdmZmI1
MzguLjYxN2Y0NzY4OTU2NDJkZWMyMzI1NGI1NDBlZTgxOTExYWM0YTJkZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5j
cHAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhU2VudCh1
aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2UKICAgICAgICAgbV9j
bGllbnQtPmRhdGFTZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9
CiAKLXZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKG1fY2xpZW50KQogICAg
ICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5o
CmluZGV4IGQxM2QyNWY2NWYwMjI0YTZjNzY3ZjY5YTRkNDE5Y2QwNTNiYjc5NWQuLjViN2E3ZTJh
NzQyNDQzMmQ4NmNiMjhhMWJlNzE3MThhMTY3Mzc1ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaApAQCAtMzQsNyArMzQs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVz
cG9uc2VSZWNlaXZlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4m
Jik7CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZvaWQgZGF0YVNlbnQodWlu
dDY0X3QsIHVpbnQ2NF90KTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCBlYmRlNzUz
MGVjODZmZjZjNDFiZWNkNGU1ZWM0MjhhM2M4YWY4MGY3Li5lODNmOTE0M2QyMGE3MmUyYmU0ZmZj
YmZlZDEzYjBiYjRkZDMxZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2
b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJl
bW90ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERh
dGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dyaXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0
byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4oKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KSA6IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+KCk7CiAgICAgICAgIGF1dG8qIHBvaW50
ZXIgPSBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRhdGEgPyBkYXRhLT5zaXpl
KCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKaW5kZXggNTJjYzVk
YTEyMWEyZmI1OWQ4Y2YwNTkzYjY4NTA5ZmQ2NTVjMGNkYy4uNzFmZDAyMjI5YmJiMWM1NzMyNmZk
ZmNmZTI2YzExZjc2MWFiY2Y3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKQEAgLTY4LDcgKzY4LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsgfQog
ICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkgb3ZlcnJpZGUgeyB9OworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmFpbExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5jcHAKaW5kZXggM2YzOWViMzJmMWFhODA3Njc4NWRhNzllZTExZGFkOGYwYzMy
NmI3OS4uZDg5MjBlOTg3NjRmZDliNjRiOWNkZGM2MGExZDg0ZDYxOWIyZDQwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lk
IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRS
ZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKIHsKICAg
ICBDT1JTX0NIRUNLRVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdo
dENoZWNrZXIuaAppbmRleCBiYmIxNDYyYTMxNjFlMmZjZTllYTU3ODQ0YjE5YjkzZTYxOWM4MWIw
Li5lMTFiZjU2MzE5MDdhZTQ3MzM2ZWY4NWE1ZDIyZTg4MzU3NDY1MWIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAg
dm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZp
bmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBm
aW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRl
c1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9p
ZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2suaAppbmRleCBkNjAxOGY2MTM4M2FlM2E1MWU5ZDQ3MjJjZjZhNjBlMmQ4
Yjg3YTdkLi5lMDQ5ZTViMTJkZGU1ZmU1MWI0Njk1NTI4OWE3YTdmNjk5ODJhZmNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKQEAgLTQzLDcg
KzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBs
ZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9u
c2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVE
YXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVp
bnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3
YXNCbG9ja2VkKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmNwcAppbmRleCBiYWMwMjJhYjQ1NDMwZjY1MWIxODlhYzAxMjA3YTA2MDYwOGMxNjcxLi43
OTc1ZDQxYmFkODkxNWZlZWRiZGFiMTU1NGU4MWUxZGIyMDMwZjgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIHZv
aWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNl
JiYgcmVzcG9uc2UsIE5lZ290aWF0CiAgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZVJlc3Bv
bnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAK
LXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB0aGUg
ZW5jb2RlZCBkYXRhIGxlbmd0aCwgbm90IHRoZSBkZWNvZGVkIGRhdGEgbGVuZ3RoLgogICAgIGF1
dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5oCmluZGV4IGMzNzczYzk4Nzg1NTNjZTUzNGQwNTRhYmZmZGRlYmIyOWVlMDg0
ZDIuLmVlNWViMDA2YWEzNzliNzhmY2JjMGJkMTc0ZTMyYmQ2MzlmOTVlNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxs
ZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAg
IHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYs
IGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlk
U2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBl
Y3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKaW5kZXggMGE1
ZjY2YmQ5NjdlYzlmZGY2NjRlNTJlNWFmMzk0ZTQ4ZWNlMWY3Yi4uMzQ4Y2ZmYjllOGUyNWVlODNi
YmIzOWEwMmNkM2NmNmQyODU0ZDM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBOZXR3b3JrTG9h
ZE1ldHJpY3M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogZW51bSBjbGFzcyBQb2xpY3lBY3Rpb24gOiB1aW50OF90OwogfQogCkBAIC01MSw3ICs1
MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9u
ZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgeyB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IDYzOTlhZmQxNmVkODMzMWFiMjM4ODhiYmE2OTZhNzBkODcyOGZl
MGYuLjBlNWViNWFkYzAxMmYxZjJlYTc2NmZjYzFhNDU1MzlmZDVkODljMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RydWN0IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hy
b25vdXNMb2FkRGF0YSB7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKIH07CiAKLXN0YXRpYyB2
b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
U3luY2hyb25vdXNMb2FkRGF0YSYgZGF0YSwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3N0YXRpYyB2b2lkIHNlbmRSZXBseVRv
U3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2Fk
RGF0YSYgZGF0YSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgQVNTRVJUKGRhdGEuZGVsYXllZFJl
cGx5KTsKICAgICBBU1NFUlQoIWRhdGEucmVzcG9uc2UuaXNOdWxsKCkgfHwgIWRhdGEuZXJyb3Iu
aXNOdWxsKCkpOwpAQCAtODYwLDcgKzg2MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzZW5kRGlkUmVjZWl2ZVJlc3BvbnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dzaW5nQ29udGV4CiAg
ICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpCiB7CiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpCiAgICAgICAgIExPQURFUl9SRUxF
QVNFX0xPRygiZGlkUmVjZWl2ZUJ1ZmZlcjogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aD0lZCkiLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKQEAg
LTEyNzAsNyArMTI3MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdU
aW1lckZpcmVkKCkKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKIH0K
IAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIoU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpzZW5kQnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVu
Y29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaXNTeW5jaHJvbm91cygpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgKaW5kZXggMzQ1YzJmYmE3OThjNmRiNmFkYjc3MjExMzBiZTA0ZjBkZjQ0MTViOC4uOTg0NDI0
YTMwNjgxYTM2MGZjNjBjOWU3YTlkZDRlNmJiNDI2ZGU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC00Nyw3ICs0
Nyw3IEBAIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNzIEZvcm1EYXRhOwogY2xh
c3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHdpbGxTZW5k
UmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGlu
Zyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRCbG9j
a0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgZmluYWw7CkBAIC0xOTUsNyArMTk1LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgdm9p
ZCBidWZmZXJpbmdUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBzZW5kQnVm
ZmVyKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFM
ZW5ndGgpOwogCiAgICAgdm9pZCBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKICAgICB2b2lk
IGludmFsaWRhdGVTYW5kYm94RXh0ZW5zaW9ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1BpbmdMb2FkLmNwcAppbmRleCAxMTQ4NTNlNDViNzI1MzM2NGM3NDdhNzFjYjJiNWFiOGNj
MzhlZmQ1Li4xYWYxZTA4ZTNjNDQxZTI0ZjMwMDY1ZTlmMjA3NzZlNmY5ZmMzM2RiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBA
IHZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
cG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUCiAgICAgZGlkRmluaXNoKHsgfSwgcmVzcG9uc2UpOwog
fQogCi12b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKQor
dm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpCiB7CiAgICAgUElOR19SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGEiKTsKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUGluZ0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApp
bmRleCAxOWVjOGNlYjkyZTNjOGEwNTZmNDkyNzM2NjBjZmZmOTI2NDM0MWQxLi5hYjI5YTBiMWFj
ODQ2NmIwZWQ2MWVmNThlZjRjMjIwYWJhYjZlYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxl
ciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0
aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRv
dGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwog
ICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAppbmRleCA0NTU3ODJkNTRhMmVhOWJlZTE4NjUwZTFh
ZmQxY2Y3YjJjZTk4YzQ5Li4xN2Q0NzkwN2EzZjZlZTUyYmU2NTAxZDFkYWIwY2E2MDc1MWQ2YjBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNw
cApAQCAtNzksNyArNzksNyBAQCB2b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbQogICAgIGNvbXBsZXRp
b25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKIH0KIAotdm9pZCBQcmVjb25uZWN0VGFz
azo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCmluZGV4IDFjMWZmMTY0NzExMWM2ZmE4NDk0YWY1
Y2YwYzdiYmVhYTFiMjY1MDMuLjg1ODA4ZTEyMWI2OGNhOGI3M2UyNTE4ZDE5M2FiMzk1ODFlYWQx
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRh
c2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgK
QEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVk
IGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNl
bnQpIGZpbmFsOwogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAppbmRleCAzYTU1MTc0OTAxZDQ3ODk5
YzFjMDJkMGQyN2E4ODhhN2NiZGE1ZDYyLi44MTk2NjMwMjBjNjk1Y2UwYzZhYmE5OTljNjc1YWFi
NDI4MmM3ZmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlci5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYm
IHJlcwogICAgICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0
aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAo
bV9ib2R5Q2FsbGJhY2spCiAgICAgICAgIG1fYm9keUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCmluZGV4IDVjNGM4ZTcxZDRkZDM4
MzVjMWQ1NzIyYjgxY2M3YjU5ODQwZThhYTguLmVlMWJjOGI3ZDZjYmZmYzMzNDFkNjczZmI3MjQy
MjM4ZjY3MTdmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlci5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIFJl
c3BvbnNlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKCk+OwogICAgIHZvaWQgd2FpdEZvclJlc3Bv
bnNlKFJlc3BvbnNlQ2FsbGJhY2smJik7Ci0gICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rp
b248dm9pZChSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKKyAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5j
dGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKT47CiAgICAgdm9pZCB3YWl0Rm9yQm9keShCb2R5Q2FsbGJhY2smJik7
CiAKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcigpIGNvbnN0IHsgcmV0
dXJuIG1fZXJyb3I7IH0KQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxs
b3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIGZpbmFsOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9u
c2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFs
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKSBmaW5hbDsKICAgICBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtM
b2FkTWV0cmljcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0
d29ya0xvYWRNZXRyaWNzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyLmNwcAppbmRleCA5NDIzNTM0ODI3M2U4OTFiMDdiODc1NjFjMWQ2MTJlYTJh
NDQzNTkzLi43YTI2MjIxOWRlNzhiMjM1ZDEyNWE5MmI2ZTIzNmQzMzI2MmY3YTI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE3
Nyw3ICsxNzcsNyBAQCBSZXNvdXJjZUVycm9yIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
Ojpwcm9jZXNzUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwbwogICAgIHJldHVybiB7IH07CiB9
CiAKLXZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KQordm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKQogewogICAgIGlmICghbV9kZWNvZGVyKSB7CiAgICAgICAgIGlmICghbV9yZXNw
b25zZUVuY29kaW5nLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyLmgKaW5kZXggMThmNTQ2OTFmMzdjMmJhYmJjOGMxYTNiYzA5NDM3MGU5
YjI5ZWI3MS4uNDRmYzA2ODVmYTBmZWRjODc0MjE5MTZlOTEzYTY3NGIxYzBmZGJlYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgKQEAgLTY0LDcg
KzY0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRp
YWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVk
aXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
IHJlZGlyZWN0UmVzcG9uc2UpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBm
aW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9h
ZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lk
IGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAppbmRleCBmZGJmYjE0MzU5NzZjYmY2NWY2MTI1Njgz
YWMxZWRkMjQwOWUyNzg3Li42ZjI2YjRjYzJkZWZhMGQ5ODg3YzZmNDI0NWU4ZjU0ZmJlYzRiYTJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtNTgxLDcgKzU4MSw3IEBAIFN0b3Jh
Z2U6OlJlY29yZCBDYWNoZTo6ZW5jb2RlKGNvbnN0IFJlY29yZEluZm9ybWF0aW9uJiByZWNvcmRJ
bmZvcm1hdGlvbiwgY29uc3QKICAgICBEYXRhIGJvZHk7CiAgICAgV1RGOjpzd2l0Y2hPbihyZWNv
cmQucmVzcG9uc2VCb2R5LCBbXShjb25zdCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiBmb3JtRGF0
YSkgewogICAgICAgICAvLyBGSVhNRTogU3RvcmUgZm9ybSBkYXRhIGJvZHkuCi0gICAgfSwgWyZd
KGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Cisg
ICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAg
ICAgICAgYm9keSA9IHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH07CiAgICAgfSwg
W10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7CkBAIC02NzMsNyArNjczLDcgQEAg
c3RkOjpvcHRpb25hbDxSZWNvcmQ+IENhY2hlOjpkZWNvZGUoY29uc3QgU3RvcmFnZTo6UmVjb3Jk
JiBzdG9yYWdlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byByZWNv
cmQgPSBXVEZNb3ZlKHJlc3VsdC0+cmVjb3JkKTsKLSAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0g
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRh
KCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOworICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJv
ZHkuc2l6ZSgpKTsKIAogICAgIHJldHVybiByZWNvcmQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggMDQ3NzY4MzZm
OTk5MDkzOTEwYjM5OWQ3NTUzODU1ZDVkM2YxZmY0ZS4uZGQzMDVhZjI5NzY2MWU0NzZjNDk2Nzdk
ZjU3MjFlZmQxZWM5MzJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgQ2FjaGU6
OmNvbXBsZXRlUmV0cmlldmUoUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIsIHN0
ZDo6dW5pcXVlX3B0CiAgICAgaGFuZGxlcihXVEZNb3ZlKGVudHJ5KSwgaW5mbyk7CiB9CiAgICAg
Ci1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjptYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEp
CitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjptYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVz
cG9uc2VEYXRhKQogewogICAgIHJldHVybiBtYWtlVW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXko
cmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKHJlc3BvbnNlRGF0YSksIFdlYkNvcmU6OmNvbGxl
Y3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbiht
X3Nlc3Npb25JRCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CkBAIC00NjQsNyArNDY0LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZVJlZGlyZWN0RW50cnkoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JgogICAgIHJldHVybiBtYWtlVW5pcXVlPEVudHJ5PihtYWtl
Q2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OmNv
bGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lv
bihtX3Nlc3Npb25JRCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxFbnRyeT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBGdW5jdGlvbjx2b2lkKE1hcHBl
ZEJvZHkmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3N0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2Fj
aGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZChNYXBwZWRC
b2R5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHJlc3BvbnNlRGF0YSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5oCmluZGV4IDE5OWYwY2ZiNzMyNTQzYzVmZWFmNGZlMjMwMWU2YTFjMTJmODhmZTguLmVkMDRl
YmNhMGIzNmYzZjljNGMwZTdiYWM3MTMzNmI5ZTk2YzM1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtNDMsNyArNDMsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTG93UG93ZXJNb2RlTm90aWZpZXI7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE2Niw3ICsxNjYsNyBA
QCBwdWJsaWM6CiAgICAgfTsKICAgICB1c2luZyBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyID0g
RnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+LCBjb25zdCBSZXRyaWV2ZUluZm8m
KT47CiAgICAgdm9pZCByZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBHbG9iYWxGcmFtZUlEJiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbj4sIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PEVudHJ5PiBzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwg
RnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgPSBudWxscHRyKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgPSBudWxscHRyKTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBzdGQ6Om9wdGlvbmFs
PFNlY29uZHM+IG1heEFnZUNhcCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiB1cGRhdGUo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgRW50cnkmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiB2YWxpZGF0aW5nUmVzcG9uc2UpOwogCkBAIC0xODUsNyAr
MTg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmV0cmlldmVEYXRhKGNvbnN0IERhdGFLZXkmLCBG
dW5jdGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPik7CiAgICAgdm9pZCBzdG9yZURh
dGEoY29uc3QgRGF0YUtleSYsICBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOwogICAgIAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IG1ha2VF
bnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbWFrZVJlZGlyZWN0RW50cnkoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KTsKIAogICAg
IHZvaWQgZHVtcENvbnRlbnRzVG9GaWxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCmluZGV4IGYxZWZmZjM1
MGZhMzdmNmI0NjgxNTlmYzY2MmU3YWE5NDI4M2Q3ZTEuLjc2MTA3OGRlYTA5M2MwNDU1NWJlOThi
MDUxNzNlMzQxNTA2N2E4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBAIC0zNyw3ICszNyw3IEBACiBu
YW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogCi1FbnRyeTo6RW50
cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9y
PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpCitFbnRy
eTo6RW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVl
c3RIZWFkZXJzKQogICAgIDogbV9rZXkoa2V5KQogICAgICwgbV90aW1lU3RhbXAoV2FsbFRpbWU6
Om5vdygpKQogICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBT
dG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAgICAg
RGF0YSBib2R5OwogICAgIGlmIChtX2J1ZmZlcikgewogICAgICAgICBtX2J1ZmZlciA9IG1fYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpOwotICAgICAgICBib2R5ID0geyBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1f
YnVmZmVyLT5zaXplKCkgfTsKKyAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyKj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkg
fTsKICAgICB9CiAKICAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9k
eSwgeyB9IH07CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBFbnRyeTo6aW5pdGlhbGl6ZUJ1ZmZl
ckZyb21TdG9yYWdlUmVjb3JkKCkgY29uc3QKICAgICBtX2J1ZmZlciA9IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LmRhdGEoKSwgbV9zb3Vy
Y2VTdG9yYWdlUmVjb3JkLmJvZHkuc2l6ZSgpKTsKIH0KIAotV2ViQ29yZTo6U2hhcmVkQnVmZmVy
KiBFbnRyeTo6YnVmZmVyKCkgY29uc3QKK1dlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IEVudHJ5OjpidWZmZXIoKSBjb25zdAogewogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIGlu
aXRpYWxpemVCdWZmZXJGcm9tU3RvcmFnZVJlY29yZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCmluZGV4IDk2OTE1
YzM4MDFjMzdkZGFjM2U4ZTYwMzIxZjg4YzIyMjljZDU5YTAuLjljMDQyMGQ0NGE4MTU4ZGZjNWIy
MWNmMTg4MjA0Y2YzYTkxNmI0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKQEAgLTM1LDcgKzM1LDcgQEAKICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUg
ewogY2xhc3MgRW50cnkgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0
cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycyk7CisgICAgRW50cnkoY29uc3Qg
S2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywg
U3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycyk7CiAgICAgRW50cnkoY29uc3QgS2V5Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywg
U3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycyk7CiAgICAgZXhwbGljaXQgRW50cnkoY29u
c3QgU3RvcmFnZTo6UmVjb3JkJik7CiAgICAgRW50cnkoY29uc3QgRW50cnkmKTsKQEAgLTU3LDcg
KzU3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAgIGNvbnN0IFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKCkgY29uc3Qg
eyByZXR1cm4gbV92YXJ5aW5nUmVxdWVzdEhlYWRlcnM7IH0KIAotICAgIFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciogYnVmZmVyKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogYnVmZmVyKCkgY29uc3Q7CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q+JiByZWRpcmVjdFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlZGly
ZWN0UmVxdWVzdDsgfQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKQEAgLTg4LDcg
Kzg4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4g
bV92YXJ5aW5nUmVxdWVzdEhlYWRlcnM7CiAKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdD4gbV9yZWRpcmVjdFJlcXVlc3Q7Ci0gICAgbXV0YWJsZSBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICNpZiBFTkFCTEUoU0hBUkVBQkxF
X1JFU09VUkNFKQogICAgIG11dGFibGUgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSBtX3NoYXJl
YWJsZVJlc291cmNlSGFuZGxlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHAKaW5kZXggZDQzYzA4OWQ2MTg1M2M1MTllMzYyZmYyYzhjN2M0MTgzY2VjMTAwYi4uNDFk
ODIzNTAyNDc0N2I2ZmM0YTNhYzU0OGUxMzM0ZWQ2Y2I1ZWY3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtNDYsNyArNDYsNyBAQCBTcGVjdWxhdGl2ZUxvYWQ6OlNw
ZWN1bGF0aXZlTG9hZChDYWNoZSYgY2FjaGUsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZy
YW1lSQogICAgIDogbV9jYWNoZShjYWNoZSkKICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgLCBtX29yaWdpbmFsUmVxdWVzdChyZXF1ZXN0
KQotICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNoZShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQor
ICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNoZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSkKICAgICAsIG1fY2FjaGVFbnRyeShXVEZNb3ZlKGNhY2hlRW50cnlGb3JWYWxpZGF0aW9u
KSkKIHsKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeSB8fCBtX2NhY2hlRW50cnktPm5lZWRzVmFs
aWRhdGlvbigpKTsKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbnNlLCBSZQog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6VXNlKTsKIH0KIAotdm9pZCBTcGVj
dWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4IDY3ODMwZGYwYjMwMzQzMzAy
YTExYjU1MWQ3YTA5ZjZkMWE4NWY1NjMuLjFiODQzZGI3ZWMyNzBkYjlkYWI5ZThhMjVmMmE0OGE4
ZWNhZTJhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNjEsNyArNjEs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVj
dGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL1ByZWZldGNoQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9QcmVmZXRjaENhY2hlLmNwcAppbmRleCA1ZTJlMDJlMmZiYTBiNGEwYzAzYjVkM2U2NmI5N2Y3
YmNjYzc5NThiLi4zMTk5YmZmMzExYjZjM2VlZmJlOTUwYjQ1ZTZiMGE5NmUzMjc3N2ZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNo
ZS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVByZWZldGNo
Q2FjaGU6OkVudHJ5OjpFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorUHJlZmV0Y2hDYWNoZTo6
RW50cnk6OkVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRy
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIDogcmVzcG9u
c2UoV1RGTW92ZShyZXNwb25zZSkpLCBidWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogfQpAQCAt
NzIsNyArNzIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UHJlZmV0Y2hDYWNoZTo6RW50cnk+IFByZWZl
dGNoQ2FjaGU6OnRha2UoY29uc3QgVVJMJiB1cmwpCiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIGV4
cGlyYXRpb25UaW1lb3V0IHsgNV9zIH07CiAKLXZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmUoY29u
c3QgVVJMJiByZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBQcmVmZXRjaENh
Y2hlOjpzdG9yZShjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogewogICAgIGlmICghbV9zZXNzaW9uUHJlZmV0Y2hlcykKICAgICAgICAgbV9zZXNz
aW9uUHJlZmV0Y2hlcyA9IG1ha2VVbmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaAppbmRl
eCBhMjUxNTIwYjMxZWFjOTIxYzIyZDMxMTUxZDZkMjMxYTFiZWQxMzhjLi41MmMwYjEwZmNjNmQ1
YTZkZTExNDQ3ZTdlNGU4MjJkZjhmODQxY2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaApAQCAtNDcsMTggKzQ3LDE4IEBAIHB1
YmxpYzoKIAogICAgIHN0cnVjdCBFbnRyeSB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKLSAgICAgICAgRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICAgICAgRW50cnkoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJik7CiAgICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogCi0gICAgICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IHJlbGVhc2VCdWZmZXIoKSB7IHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsgfQor
ICAgICAgICBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVsZWFzZUJ1ZmZl
cigpIHsgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOyB9CiAKICAgICAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVk
aXJlY3RSZXF1ZXN0OwogICAgIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHRha2Uo
Y29uc3QgVVJMJik7Ci0gICAgdm9pZCBzdG9yZShjb25zdCBVUkwmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQg
c3RvcmUoY29uc3QgVVJMJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBzdG9yZVJlZGlyZWN0
KGNvbnN0IFVSTCYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCmluZGV4IGI5YWIwZGVl
YmI5ZjkyN2M3Mzc0MmU4NmEwYmU3Zjk3MTYwYmQ2ZmIuLjQxNjY4YTViMWNkNzM4Njk2N2I4ZmQ5
NzNlOTY3MzJlY2E5MDdlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKQEAgLTYyLDcgKzYyLDcgQEAg
cHVibGljOgogICAgIHZvaWQgZGlkTmVnb3RpYXRlTW9kZXJuVExTKGNvbnN0IFVSTCYpOwogICAg
IHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYs
IGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRM
UywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgdm9pZCB3aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAg
IHZvaWQgdHJhbnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9hZChEb3dubG9hZCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW0KaW5kZXggZTc4MGQ2YzFjM2NkMWViMmMyZmY1YTBjNTY0YTBlNGQ4OGI3
ZWE1ZC4uMzA1MWYxNjljYjBhMzcwOTk4NWExNjExMjJjMjVmMGU4ZjE3YmQ4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLm1tCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6ZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXIK
ICAgICAgICAgbV9jbGllbnQtPmRpZENvbXBsZXRlV2l0aEVycm9yKGVycm9yLCBuZXR3b3JrTG9h
ZE1ldHJpY3MpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0
YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIE5ldHdvcmtEYXRhVGFz
a0NvY29hOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhKQogewogICAgIFdURkVtaXRTaWducG9zdChtX3Rhc2suZ2V0KCksICJEYXRhVGFz
ayIsICJyZWNlaXZlZCAlemQgYnl0ZXMiLCBkYXRhLT5zaXplKCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5j
cHAKaW5kZXggOGZjN2I2NjNlNmY3NTYyYjJiMzU0ODkzOThhMmZlNzMxYmUwNzRmMS4uMzdmMjk0
MTY2NDZjNDdlMWRhMWZkOTk0MWNjYWMwMGI1ZGMwZmQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcApA
QCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2Vp
dmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlc3BvCiAgICAgaW52b2tlRGlk
UmVjZWl2ZVJlc3BvbnNlKCk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERp
ZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
K3ZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVl
c3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgUmVmIHBy
b3RlY3RlZFRoaXMgeyAqdGhpcyB9OwogICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpDYW5jZWxp
bmcgfHwgc3RhdGUoKSA9PSBTdGF0ZTo6Q29tcGxldGVkIHx8ICghbV9jbGllbnQgJiYgIWlzRG93
bmxvYWQoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwv
TmV0d29ya0RhdGFUYXNrQ3VybC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJs
L05ldHdvcmtEYXRhVGFza0N1cmwuaAppbmRleCAxYzQyN2RkYjc4ZDY5NTNmZTg5NjBjNTY5MmFm
ZGU0ZjRmMGVlZTg1Li40NWJlNWNlMTg0MzI1MjcxZDVjMDgwZGQzNGYxZWU0YTE2NjQyYTFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFU
YXNrQ3VybC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3Jr
RGF0YVRhc2tDdXJsLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8V2ViQ29y
ZTo6Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBSZXF1ZXN0U3RhdHVzID0gUmVxdWVzdFN0YXR1czo6TmV3UmVxdWVzdCk7CiAgICAgdm9p
ZCBjdXJsRGlkU2VuZERhdGEoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxv
bmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6Q3VybFJlc3BvbnNlJiYp
IG92ZXJyaWRlOwotICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6Q3VybFJl
cXVlc3QmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGN1cmxEaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZENv
bXBsZXRlKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoV2ViQ29yZTo6Q3Vy
bFJlcXVlc3QmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6OkNlcnRpZmljYXRl
SW5mbyYmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCmluZGV4IGY2MzNmZmZlYTQ4ZGQw
ZjNmMmM1ZmFmOWY5MTQ1OTFkMzFjYTllMTIuLmIyMGFhNTFhMGY4NGY5NWFkOGYwYjc4MDdkNzQx
NzFhZGM1MjA1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAgLTE3NjEsNyArMTc2MSw3IEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVhZERhdGFVUkwoc3RkOjpvcHRpb25hbDxEYXRh
VVJMRGVjb2Rlcjo6UmVzdWx0PiYmCiAgICAgfQogCiAgICAgbV9yZXNwb25zZSA9IFJlc291cmNl
UmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCByZXN1bHQu
dmFsdWUoKSk7Ci0gICAgYXV0byBieXRlcyA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpLT5jcmVhdGVHQnl0ZXMoKTsKKyAgICBhdXRvIGJ5dGVz
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5
dGVzKCk7CiAgICAgbV9pbnB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX21lbW9yeV9pbnB1dF9zdHJl
YW1fbmV3X2Zyb21fYnl0ZXMoYnl0ZXMuZ2V0KCkpKTsKICAgICBkaXNwYXRjaERpZFJlY2VpdmVS
ZXNwb25zZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAppbmRleCBmNWRiNzA2YzQ0NTgwMjEwODdmOTU5
OTY2OWRmYTdkOWY4Mzc5NzhjLi4zM2Q0M2I3MjIzOGQyMDNlN2VkZWM5NDE0Y2FmOWZkYThmNDA1
MjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0
Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaApAQCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3QgUGFja2V0T3B0
aW9uczsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVnaXN0cmFibGVEb21haW47Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5jcHAKaW5kZXggMjlmNzFkN2U2ZGM3NTBlZjE5ZjMyODYyYzg5YjcxODVlMDNi
Zjg5Ni4uZGY4ZWUzMGM0M2MwZmZmNGQwZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTUxLDkg
KzUxLDkgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAgICAg
YnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgcmV0dXJuIHsgV1RGTW92ZShidWZmZXIpIH07CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCBl
OWNkODcyZjhkNDRmMTVlMGVlMzdjNzM0OTJiMmQ4MDJhYzkwNzE2Li4xN2YwOGMyOGVhMTI1YjU1
MDk5M2VlZDI0ZDU5NjNiODUxMGExMTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8gRW5jb2RlcyBhIFNoYXJlZEJ1ZmZlciB0aGF0
IGlzIHJlY2VpdmVkIGFzIGEgY29weSBvZiB0aGUgZGVjb2RlZCBkYXRhIGluIGEgbmV3IFNoYXJl
ZEJ1ZmZlci4KKy8vIEVuY29kZXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIHRoYXQgaXMgcmVj
ZWl2ZWQgYXMgYSBjb3B5IG9mIHRoZSBkZWNvZGVkIGRhdGEgaW4gYSBuZXcgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlci4KIC8vIFRvIGF2b2lkIGNvcHlpbmcgZnJvbSB0aGUgRGVjb2RlciwgdXNlIFNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgdG8gcmVjZWl2ZSBhIERhdGFSZWZlcmVuY2UgaW5zdGVh
ZC4KIAogI3ByYWdtYSBvbmNlCkBAIC0zOSwxOSArMzksMTkgQEAgY2xhc3MgU2hhcmVkQnVmZmVy
Q29weSB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyQ29weSgpID0gZGVmYXVsdDsKIAotICAg
IFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9Ci0gICAg
U2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KICAgICBTaGFy
ZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAg
ICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpKSB7IH0KKyAgICAgICAgOiBtX2J1
ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShi
dWZmZXIpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigp
KSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1
b3VzKCkpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJiBidWZmZXIpCisgICAgU2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLm1ha2VD
b250aWd1b3VzKCkpIHsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXI7IH0KKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkg
eyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogICAgIGNvbnN0IHVp
bnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkg
OiBudWxscHRyOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/
IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4g
ZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaAppbmRl
eCBkM2QwZWM1ZTk3ODU1OTliNjM0YTg0YzZjNDQ3MWI1MmNkMjIxM2YxLi42N2VjOGU1ZTkyYmQw
MjQxMTVkYjBkNDA4MGEyNGZlNzM1NzBkM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCkBAIC0yMyw3ICsyMyw3
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8gRW5jb2Rl
cyBhIFNoYXJlZEJ1ZmZlciBvciBEYXRhUmVmZXJlbmNlIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBE
YXRhUmVmZXJlbmNlIHRvIHRoZSBkZWNvZGVkIGRhdGEuCisvLyBFbmNvZGVzIGEgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciBvciBEYXRhUmVmZXJlbmNlIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBEYXRh
UmVmZXJlbmNlIHRvIHRoZSBkZWNvZGVkIGRhdGEuCiAKICNwcmFnbWEgb25jZQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKaW5kZXggYjNhOTlhZjhmNTEyN2Y2YTY1M2Nj
MWM4Zjg1YjYyYjZjYWFmMTU4YS4uYzAyNmY1NDk1NjliMmJlMDA3OGFlMzI1ZDA1MzllMDcxYWYx
MTA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAtMzIsNyAr
MzIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
LVJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29w
eUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYg
KGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDgsMTAgKzQ4
LDEwIEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gc2hhcmVkTWVtb3J5OwogfQogCi1S
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZm
ZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5
OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAogewogICAgIEFTU0VS
VChkYXRhU2l6ZSA8PSBzaXplKCkpOwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3Byb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9XSAoKSAtPiBjb25zdCB1aW50OF90KiB7CiAgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7CiAg
ICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9y
eS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCA3NmI3M2Nh
ZTRjODVkN2VlMzY4YjFmODRkNTFlZTAwZjkyZTkwNDdjLi4xYjRmZGZhZjY4Mzg5ZGNlNzI4ZmYz
NGU1ZTVmMDEyZTI0M2ZhMmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1No
YXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgK
QEAgLTQ0LDggKzQ0LDggQEAgY2xhc3MgRW5jb2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKICNpZiBPUyhEQVJXSU4pCkBAIC0xMjEs
NyArMTIxLDcgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IENoYW5nZSB0aGVzZSBmYWN0b3J5
IGZ1bmN0aW9ucyB0byByZXR1cm4gUmVmPFNoYXJlZE1lbW9yeT4gYW5kIGNyYXNoIG9uIGZhaWx1
cmUuCiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGFsbG9jYXRlKHNpemVfdCk7Ci0g
ICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGNvcHlCdWZmZXIoY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGNvcHlCdWZm
ZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHN0YXRpYyBS
ZWZQdHI8U2hhcmVkTWVtb3J5PiBtYXAoY29uc3QgSGFuZGxlJiwgUHJvdGVjdGlvbik7CiAjaWYg
VVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+
IHdyYXBNYXAodm9pZCosIHNpemVfdCwgaW50IGZpbGVEZXNjcmlwdG9yKTsKQEAgLTE1NCw3ICsx
NTQsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGluIGJ5
dGVzLgogICAgIHN0YXRpYyB1bnNpZ25lZCBzeXN0ZW1QYWdlU2l6ZSgpOwogCi0gICAgUmVmPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3Qp
IGNvbnN0OworICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZl
cihzaXplX3QpIGNvbnN0OwogCiBwcml2YXRlOgogI2lmIE9TKERBUldJTikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW0KaW5kZXggMzVlYTE2MjE1NmEyMDcwMjZkZjEzNDFjNWMwYTg3M2EyM2E3ZWM3MS4uM2MxYjU3
ZDVhYTI2ZWM3MmU2MGI1ZDc4YTExZTlmZDg1MmNmZmVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAg
LTU2NCw3ICs1NjQsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+
IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCppbmNsdWRlc0NyZWF0aW9uRGF0YSkgewotICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gZm9udEZhY2VEYXRhOwogICAg
ICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggNDU0
MTY0MzZjMjUwNTIwODM4ZTVkZmRjYzJiZmUzNTNmYjU5YzJhMS4uZTlhNTEzYTMwNWVkZDY1YmRm
YTM3NGUxYmQwZTNmZWFiMWY2YjgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VC
dWZmZXJCYWNrZW5kLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIEltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlCiAgICAgUkVMRUFTRV9MT0coUmVtb3RlTGF5ZXJUcmVlLCAiQ0dEaXNwbGF5TGlzdEltYWdl
QnVmZmVyQmFja2VuZCBvZiBzaXplICVkeCVkIGVuY29kZWQgZGlzcGxheSBsaXN0IG9mICVsZCBi
eXRlcyIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEu
Z2V0KCkpKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7
IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKSB9IH07CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZ2V0KCkpIH0gfTsKIH0KIAogV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBDR0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjb250ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCAyYzE2MTFjOWU3MGY4ZjlhMTM3
OWMyYzg0MzA4NDczNTJlNGM5NmNhLi42ZmEwMmE3YmMzZWU1NGFlNmQzMjUzODEwZDc4ZGVjMzE2
NTM1M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBA
IC01NSwxNSArNTUsMTUgQEAgYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3
cmFwSW5TaGFyZWRCdWZmZXIoKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3Vy
Y2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VsZiA9IFJl
ZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAogICAgICAgICBbc2VsZiA9
IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9CiAgICAgfSk7CiB9CiAK
LVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxl
Ojp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsK
ICAgICBSZWZQdHI8U2hhcmVhYmxlUmVzb3VyY2U+IHJlc291cmNlID0gU2hhcmVhYmxlUmVzb3Vy
Y2U6Om1hcCgqdGhpcyk7CiAgICAgaWYgKCFyZXNvdXJjZSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlYWJsZVJlc291cmNlLmgKaW5kZXggYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2Ni
NGY2NGU0MTJhYS4uZGExZWVlMGFkNjJjYjM0ODRjMWMzNDA1YzQ4NzBjZjBjNTFlMTYxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCkBAIC0zMyw3ICszMyw3IEBA
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgICAgICB2b2lkIGVuY29k
ZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBIYW5kbGUmKTsKIAotICAgICAgICBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkg
Y29uc3Q7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNo
YXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNz
IFNoYXJlYWJsZVJlc291cmNlOwpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgCiBwcml2
YXRlOgogICAgIFNoYXJlYWJsZVJlc291cmNlKFJlZjxTaGFyZWRNZW1vcnk+JiYsIHVuc2lnbmVk
IG9mZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgUmVmPFNoYXJlZE1lbW9y
eT4gbV9zaGFyZWRNZW1vcnk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCmluZGV4IDY3YjdlYjkwMzQwNTVkN2YxMWM0YzYxNTMzZjIyYzAxYmM1
ODE5NTguLjg0M2ZkNDczMTNhZWVjYTI5OTMwNjEyZmM1ZWM1Nzg3NTU0MzQyZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTY0LDcg
KzE2NCw3IEBAIERFRklORV9TSU1QTEVfQVJHVU1FTlRfQ09ERVJfRk9SX1NPVVJDRShEaXNwbGF5
TGlzdDo6U2V0SW5saW5lU3Ryb2tlQ29sb3IpCiAKICN1bmRlZiBERUZJTkVfU0lNUExFX0FSR1VN
RU5UX0NPREVSX0ZPUl9TT1VSQ0UKIAotc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorc3RhdGljIHZvaWQg
ZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICBib29sIGlzTnVsbCA9ICFidWZmZXI7CiAgICAgZW5j
b2RlciA8PCBpc051bGw7CkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hh
cmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQog
ICAgICAgICByZXR1cm47CiAKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICAvLyBE
byBub3QgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIFNoYXJlZEJ1ZmZlciBlbmNvZGluZyBpbiBVbml4
LCBiZWNhdXNlIGl0J3MgZWFzeSB0byByZWFjaCB0aGUKKyAgICAvLyBEbyBub3QgdXNlIHNoYXJl
ZCBtZW1vcnkgZm9yIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgZW5jb2RpbmcgaW4gVW5peCwgYmVj
YXVzZSBpdCdzIGVhc3kgdG8gcmVhY2ggdGhlCiAgICAgLy8gbWF4aW11bSBudW1iZXIgb2YgZmls
ZSBkZXNjcmlwdG9ycyBvcGVuIHBlciBwcm9jZXNzIHdoZW4gc2VuZGluZyBsYXJnZSBkYXRhIGlu
IHNtYWxsIGNodW5rcwogICAgIC8vIG92ZXIgdGhlIElQQy4gQ29ubmVjdGlvblVuaXguY3BwIGFs
cmVhZHkgdXNlcyBzaGFyZWQgbWVtb3J5IHRvIHNlbmQgYW55IElQQyBtZXNzYWdlIHRoYXQgaXMK
ICAgICAvLyB0b28gbGFyZ2UuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA4NTcxLgpAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJl
ZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNl
bmRpZgogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVm
ZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihE
ZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gaXNOdWxsOwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4
LDcgKzIwOCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRC
dWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPENvbnRpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGlmICghYnVmZmVyU2l6ZSkgewotICAgICAgICBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcg
QEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNv
ZGVyJiBkZWNvZGVyLCBSZWZQdHI8Q29udGkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRM
ZW5ndGhEYXRhKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSwgMSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGRhdGEpKTsKKyAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKICNlbHNlCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxlKSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRl
Y29kZXIsIFJlZlB0cjxDb250aQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBl
bmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0
YSkKK3N0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAg
ICAgZW5jb2RlciA8PCB0eXBlczsKQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCBlbmNv
ZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCBjbwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgp
KTsKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0
YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5n
PiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZSh0eXBlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2MSw3
ICsyNjEsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmRE
YXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbgogICAgIEFTU0VSVChkYXRhU2l6ZSA9
PSB0eXBlcy5zaXplKCkpOwogCiAgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGRhdGFTaXpl
OyBpKyspIHsKLSAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
KyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29k
ZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBkYXRhLmFwcGVuZChidWZmZXIpOwpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQg
QXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IERPTUNhCiAgICAgZW5jb2RlciA8PCByZWNvcmQudXBkYXRlUmVzcG9uc2VD
b3VudGVyOwogICAgIGVuY29kZXIgPDwgcmVjb3JkLnJlc3BvbnNlQm9keVNpemU7CiAKLSAgICBX
VEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3Bv
bnNlQm9keSwgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAg
ZW5jb2RlciA8PCB0cnVlOwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVm
ZmVyLnB0cigpKTsKICAgICB9LCBbJl0oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsK
QEAgLTQxNCw3ICs0MTQsNyBAQCBzdGQ6Om9wdGlvbmFsPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+
IEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlYwogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGhhc1NoYXJlZEJ1ZmZlckJvZHkpIHsKLSAgICAg
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihk
ZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgaWYgKGJ1ZmZlcikKQEAgLTE1NTAsMTAgKzE1NTAsMTAgQEAgdm9pZCBBcmd1bWVudENvZGVy
PFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdAogICAgIGlmIChoYXNTdHJpbmcpCiAgICAgICAgIGVuY29kZXIgPDwgc3RkOjpnZXQ8U3Ry
aW5nPihwbGF0Zm9ybURhdGEpOwogCi0gICAgYm9vbCBoYXNCdWZmZXIgPSBzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpOworICAgIGJvb2wgaGFz
QnVmZmVyID0gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+KHBsYXRmb3JtRGF0YSk7CiAgICAgZW5jb2RlciA8PCBoYXNCdWZmZXI7CiAgICAgaWYgKGhh
c0J1ZmZlcikKLSAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIHN0ZDo6Z2V0PFJl
ZjxTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpLnB0cigpKTsKKyAgICAgICAgZW5jb2RlU2hh
cmVkQnVmZmVyKGVuY29kZXIsIHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4o
cGxhdGZvcm1EYXRhKS5wdHIoKSk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGVib2FyZEN1
c3RvbURhdGE6OkVudHJ5JiBkYXRhKQpAQCAtMTU4Myw3ICsxNTgzLDcgQEAgYm9vbCBBcmd1bWVu
dENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBQYXN0ZWIKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGhhc0J1ZmZlcikg
ewotICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdmFsdWU7CisgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1
ZmZlcihkZWNvZGVyLCB2YWx1ZSkgfHwgIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBkYXRhLnBsYXRmb3JtRGF0YSA9IHsgdmFsdWUucmVsZWFzZU5vbk51bGwoKSB9
OwpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVu
dERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNp
emUoKSkgfSB9OworICAgIHJldHVybiB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZSht
aW1lVHlwZSksIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSkgfSB9OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
QEAgLTMwMTAsNTYgKzMwMTAsNTYgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkUGxhdGZvcm1E
YXRhQ3VlVmFsdWU+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFAKIH0KICNlbmRp
ZgogCi12b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgZW5jb2RlU2hh
cmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8UmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZl
cikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gYnVmZmVyOwog
fQogCi12b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVu
Y29kZXIsIGJ1ZmZlci5wdHIoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZl
cj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICgh
ZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwo
KTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3ZvaWQgQXJndW1lbnRDb2RlcjxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIGVuY29k
ZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwogfQogCi1zdGQ6Om9wdGlvbmFs
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3N0ZDo6b3B0aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBi
dWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGJ1ZmZl
cjsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIGVuY29kZVNoYXJlZEJ1ZmZl
cihlbmNvZGVyLCBidWZmZXIucHRyKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UmVm
PFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBp
ZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMxMjMsNyArMzEyMyw3IEBAIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlw
dEJ1ZmZlcj46OmRlY29kCiAgICAgICAgIHJldHVybiBkZWNvZGVTY3JpcHRCdWZmZXJBc1NoYXJl
YWJsZVJlc291cmNlSGFuZGxlKGRlY29kZXIpOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMTM1LDcgKzMxMzUsNyBAQCB2b2lkIEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZQogewogICAgIGVuY29kZXIgPDwgbWVzc2FnZS5maXJzdDsKIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5zZWNvbmQuY29weVJlZigp
OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3Nh
Z2Uuc2Vjb25kLmNvcHlSZWYoKTsKICAgICBlbmNvZGVyIDw8IG1lc3NhZ2VEYXRhOwogfQogCkBA
IC0zMTQ1LDcgKzMxNDUsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbjo6TWVzc2FnZT4gIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSQogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUodHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikgfHwgIWJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBlZjAxMTFmYjU2MmNkZWI2Y2IwZjdhMjUy
MWYwOTNhZjI3OTg2NzlmLi42ZmFjMmFhMWVhNzg0NmZmNmJmODkwMjFmMGY1MmU5YWE3YWUwM2M4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAt
MTE0LDcgKzExNCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxv
YlBhcnQ7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDb2xvcjsKLWNsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBDcmVkZW50aWFs
OwogY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKQEAgLTEz
OSw3ICsxMzksNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwogY2xhc3MgU2NyaXB0QnVmZmVyOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3ByaW5n
VGltaW5nRnVuY3Rpb247CiBjbGFzcyBTdGVwc1RpbWluZ0Z1bmN0aW9uOwogY2xhc3MgU3RpY2t5
UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOwpAQCAtNzUyLDYgKzc1MiwxNiBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFD
dWVWYWx1ZT4gewogfTsKICNlbmRpZgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307
CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Jik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CkBAIC03NjIsMTYg
Kzc3Miw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7Ci0g
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Ci19Owot
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3Qg
UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7Ci0gICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVj
b2RlciYpOwotfTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
Y3JpcHRCdWZmZXI+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdl
YkNvcmU6OlNjcmlwdEJ1ZmZlciYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAppbmRleCBjZjJlNGQ1ZjkzZmQyZDk0NmJhYmZmOTNl
ZWEzZTllODYwYWViYmY0Li5iNjA3YWNlODM4ZTA0YmNlMWE2YWVlNGRhNTY1NTllMDk2OTgzOThl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCkBA
IC04NSw3ICs4NSw3IEBAIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0
YShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoaXRUZXN0CiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChJbWFnZSogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKTsKKyAgICAgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7CiAg
ICAgICAgIGlmIChidWZmZXIpIHsKICAgICAgICAgICAgIGltYWdlU2hhcmVkTWVtb3J5ID0gV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CiAgICAgICAgICAgICBpbWFn
ZVNpemUgPSBidWZmZXItPnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJn
dW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4IDY0NWQ5YmZhYjc1N2IzMWQ3ZTYwMGU3OGJhYjAzYTdl
ODkzOTcxODUuLjY3MTc1OGEyODBhNWU0NDBhYTA2MGE3OWNmMWYwZjEyNmRiN2JlMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtOTUs
NyArOTUsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBTZWxlY3Rpb25EYXRhJgogICAgIGJvb2wgaGFzQ3VzdG9tRGF0
YSA9IHNlbGVjdGlvbi5oYXNDdXN0b21EYXRhKCk7CiAgICAgZW5jb2RlciA8PCBoYXNDdXN0b21E
YXRhOwogICAgIGlmIChoYXNDdXN0b21EYXRhKQotICAgICAgICBlbmNvZGVyIDw8IFJlZlB0cjxT
aGFyZWRCdWZmZXI+KHNlbGVjdGlvbi5jdXN0b21EYXRhKCkpOworICAgICAgICBlbmNvZGVyIDw8
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihzZWxlY3Rpb24uY3VzdG9tRGF0YSgpKTsK
IAogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlID0gc2VsZWN0aW9uLmNhblNtYXJ0UmVwbGFjZSgp
OwogICAgIGVuY29kZXIgPDwgY2FuU21hcnRSZXBsYWNlOwpAQCAtMTU5LDEwICsxNTksMTAgQEAg
c3RkOjpvcHRpb25hbDxTZWxlY3Rpb25EYXRhPiBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0N1c3Rv
bURhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChoYXNDdXN0b21E
YXRhKSB7Ci0gICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAg
ICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCpi
dWZmZXIpKTsKKyAgICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZl
cj4oKmJ1ZmZlcikpOwogICAgIH0KIAogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNw
cAppbmRleCA4YWVmNGE1MDFkYWQ5Mjc2NmM3MTlmYzUwMDZjNmRmMTJhZGE1YWEwLi4yOTJkNzE0
NTJjNWMzYTk0OTJiMmY1YjYxNjgyNzM1MzBhYzJkZDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcApAQCAtMTA3LDcg
KzEwNyw3IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxS
ZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjCiAgICAgRm9udFBsYXRmb3JtRGF0YTo6
Q3JlYXRpb25EYXRhKiBjcmVhdGlvbkRhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKGluY2x1ZGVz
Q3JlYXRpb25EYXRhLnZhbHVlKCkpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxS
ZWY8U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBkZWNvZGVyID4+IGZvbnRG
YWNlRGF0YTsKICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1l
bnQuY3BwCmluZGV4IGM5MGQzZDgxMTNmNzE5MDFiMDhmMjY0ODkxNmFkMmNjMjlkOTgzMzQuLjE0
OTBjNTExYmRjMzhiZDhhYjRhNjk1YWVjZjMwNmQ5NWZhYTM5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTk4LDE3ICs5OCwxNyBAQCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBBdHRhY2htZW50OjpmaWxlU2l6ZUZvckRpc3BsYXkoKSBj
b25zdAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CitSZWZQdHI8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1h
Z2VEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRh
Y2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVk
UmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0
cmluZyYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVu
dC5oCmluZGV4IGM2YzJhMDZlYzk3ZGRmMGQ2Y2FiNDJiNGE2NDA5YjNjNDdiNGRlZmUuLmZlNTBl
NTM4YjhlYmIzNTFhNDgzNmQxZGQ4OTNkMTQ3YTU2YTg3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtMzgsOCArMzgsOCBAQCBPQkpDX0NMQVNT
IE5TRmlsZVdyYXBwZXI7CiBPQkpDX0NMQVNTIE5TU3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC04MywxNCArODMsMTQgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBlbmNsb3NpbmdJbWFnZURhdGEoKSBj
b25zdDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jbG9z
aW5nSW1hZ2VEYXRhKCkgY29uc3Q7CiAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNp
emVGb3JEaXNwbGF5KCkgY29uc3Q7CiAKICAgICB2b2lkIHNldEhhc0VuY2xvc2luZ0ltYWdlKGJv
b2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNFbmNsb3NpbmdJbWFnZSA9IGhhc0VuY2xvc2lu
Z0ltYWdlOyB9CiAgICAgYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzRW5jbG9zaW5nSW1hZ2U7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKLSAgICB2
b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250
ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXR0YWNobWVudChjb25zdCBXVEY6
OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3Bw
CmluZGV4IDJmNDQ4YTc2MzkyN2UwMmVjYzE1OTc1NjAyYzkwMWI3MTlhMWE2MTAuLjM2YTZmNGZi
MDdmMGFiOWRkYzdhNDYxOGZlZDQyMmVjMzg5NzQwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMTUx
LDcgKzE1MSw3IEBAIHRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYktpdDo6TmV0d29y
a0NhY2hlOjpEYXRhJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxiCiB7CiAgICAgZGF0YS5hcHBseShm
dW5jdGlvbik7CiB9Ci10ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3Qg
dWludDhfdD4pPiYgZnVuY3Rpb24pCit0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1
aW50OF90Pik+JiBmdW5jdGlvbikKIHsKICAgICBmdW5jdGlvbih7IGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElDb250ZW50UnVsZUxpc3RTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKaW5kZXggN2ZjMDU0NTdlNjRjZjU4OWIwZmIwZTdlMDM2
ZjY5MGZhMmMxN2JhYy4uNGUyNjZmMzY3YWM2MDJiOGVmMWVhZjc1N2EwYTA0ZGM3M2Y3NzFhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlz
dFN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxl
TGlzdFN0b3JlLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAppbmRleCA1NjIz
NDAxNDU5ZGE1ZmUzMGY0OTFhNDFmYjM0N2E2NzU3MjAyYzQwLi4xMTFmMDkyNjNmODIyMzgyOWE1
YWQyNjQ0MzRiYTQyMGYxOThkZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RydWN0IENvbnRl
bnRSdWxlTGlzdFJlc3VsdHM7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwog
fQogCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAg
ICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgeyB9CisgICAgdmlydHVhbCB2
b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSB7IH0KICNlbmRpZgogCiAgICAgdmlydHVh
bCB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJv
eHkmLCBSZWY8TmF2aWdhdGlvbkFjdGlvbj4mJiwgUmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lM
aXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBPYmplY3QqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KaW5kZXggOTRk
YjU1NzUzMjg1ZjhhMDNmMGRhMmMzY2EyZDg2ODE3YzI5NTI5NS4uZGZlZjNlMDcwZjk2MTYzMDQ5
NzE0NGRhZjNmMzAwY2I0Y2E1MTk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCkBAIC0xMzcsNyArMTM3LDcg
QEAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gQXR0YWNobWVudDo6ZmlsZVNpemVGb3JEaXNwbGF5
KCkgY29uc3QKICAgICByZXR1cm4gW2ZpbGVXcmFwcGVyIHJlZ3VsYXJGaWxlQ29udGVudHNdLmxl
bmd0aDsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5j
bG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAogewogICAgIGlm
ICghbV9oYXNFbmNsb3NpbmdJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNTks
NyArMTU5LDcgQEAgYm9vbCBBdHRhY2htZW50Ojppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4g
IW1fZmlsZVdyYXBwZXIgJiYgIW1fZmlsZVdyYXBwZXJHZW5lcmF0b3I7CiB9CiAKLVJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAg
ICBhdXRvIGZpbGVXcmFwcGVyID0gdGhpcy0+ZmlsZVdyYXBwZXIoKTsKIApAQCAtMTcwLDEwICsx
NzAsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1l
bnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGkKICAgICBpZiAoIXNlcmlhbGl6ZWREYXRh
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOworICAgIHJldHVybiBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CiB9CiAKLXZvaWQgQXR0
YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0
IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQogewog
ICAgIGlmICghbV93ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IDZiNzU2YWE0MTdi
NTFlZGQ3ZmQzZmZiZGRmM2MyMmU0NDUzMTkyOTAuLmY1YWYwOTJiYjIyNTgyMDU5NmNiMDI1MzBk
MGRiMGI3Njk0NDAzMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvRHJvcFRhcmdldEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvRHJvcFRhcmdldEd0azMuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBEcm9wVGFyZ2V0
OjpkYXRhUmVjZWl2ZWQoSW50UG9pbnQmJiBwb3NpdGlvbiwgR3RrU2VsZWN0aW9uRGF0YSogZGF0
YSwgdW5zaWcKICAgICAgICAgaW50IGxlbmd0aDsKICAgICAgICAgY29uc3QgYXV0byogY3VzdG9t
RGF0YSA9IGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0YV93aXRoX2xlbmd0aChkYXRhLCAmbGVu
Z3RoKTsKICAgICAgICAgaWYgKGxlbmd0aCA+IDApCi0gICAgICAgICAgICBtX3NlbGVjdGlvbkRh
dGEtPnNldEN1c3RvbURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURh
dGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOworICAgICAgICAgICAgbV9zZWxlY3Rp
b25EYXRhLT5zZXRDdXN0b21EYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0
YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApp
bmRleCBhYzRhMGY0MzcwMTUyZWQ1NzJiNTA5MWRmYTUxYmFlYmFiODdmNGU5Li5jODAyOWMxNDBh
NmRkMTRiMTk2NDkyMjViODc4MzBlZWMxMzQwMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZh
dGU6CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAgICAgdm9pZCBkaWRTdGFydExvYWRGb3JR
dWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwg
Y29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgZGlkRmluaXNo
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggNzI1Yjc3MGY2
YzU0MjZhYzhjYjdiNjc0YzQ2MWY4MWUzZWUzNjYwNy4uOGQzYTg1NjQ2MmVhZWY3NDFkOGMyOWUy
NTkyZmQ1NzM2NmY1OTljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTIyMCw3ICsxMjIwLDcgQEAgdm9pZCBOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnIKICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0
ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUt
Pm1fd2ViVmlldyBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lV2l0
aEZpbGVOYW1lOmZpbGVOYW1lIHV0aTp1dGldOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6
TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6
TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICgh
bV9uYXZpZ2F0aW9uU3RhdGUpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggYmUxNDM3
MGRlMDliZDU3MDJiOWM3ZGRjZDZjNzdiOGY2ZGE1ZjViOC4uNjgzMzczZWFlMDBmNWRiNDJiODE0
NmNlOWQ1MzFiYzhhYzBhNTRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTMwNiw3ICszMDYsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6c2VuZEF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucygpCiAgICAg
ICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICAgICAgYXV0byByZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlvbnMuZ2V0KCkpOworICAgICAgICAgICAgYXV0byByZWdp
c3RyYXRpb25EYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9u
cy5nZXQoKSk7CiAgICAgICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
czo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyh7IFdURk1vdmUocmVnaXN0cmF0
aW9uRGF0YSkgfSksIDApOwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCmluZGV4IDNmNmRkMWYyNDJlN2ExMTVlY2Y3OTgz
OTBmMzRiNjM1YzZlOGQ2ZjkuLmY1ODkxMjQxNzAyZGFhNDIwY2M0ZTZlMjQ2MjhhMWNkZTg5MDdk
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaApAQCAt
NTA2LDcgKzUwNiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0IFdlYkNv
cmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlKTsKICAg
ICB2b2lkIHNldEZpbGVBbmRVUkxUeXBlcyhOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpl
eHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2li
bGVVUkwsIE5TUGFzdGVib2FyZCAqKTsKLSAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdl
KFdlYkNvcmU6OkltYWdlKiwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9u
LCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJk
TmFtZSwgTlNTdHJpbmcgKnBhc3RlYm9hcmRPcmlnaW4pOworICAgIHZvaWQgc2V0UHJvbWlzZWRE
YXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5n
ICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZp
c2libGVVUkwsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIs
IE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKnBhc3RlYm9hcmRPcmlnaW4pOwog
ICAgIHZvaWQgcGFzdGVib2FyZENoYW5nZWRPd25lcihOU1Bhc3RlYm9hcmQgKik7CiAgICAgdm9p
ZCBwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICosIE5TU3RyaW5nICp0eXBl
KTsKICAgICBOU0FycmF5ICpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9u
KE5TVVJMICpkcm9wRGVzdGluYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbQppbmRleCA2ODE0YTcwYTAyYmE1ZGNhZWFhZjRmNDRlMDUxNDg3Zjc5
N2I0ZTA5Li42MjM2N2RjNWFkMWZlMTIyMWY3YjA5OWU5YmI0NDU0ZGIzN2E1OGVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMjk3Niw3ICsy
OTc2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoTlNQ
YXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU0FycmF5ICoKICAgICAgICAgaWYgKFtbdHlwZXMgb2Jq
ZWN0QXRJbmRleDppXSBpc0VxdWFsVG86V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5
cGUoKV0pCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6bV9wYWdlLT5zdHJpbmdT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgZm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0
ZWJvYXJkVHlwZSgpXTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKICAgICAgICAgICAgIFtwYXN0
ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5p
bCBmb3JUeXBlOlt0eXBlcyBvYmplY3RBdEluZGV4OmldXTsKICAgICAgICAgfQogICAgIH0KQEAg
LTQ0NDksNyArNDQ0OSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldEZpbGVBbmRVUkxUeXBlcyhO
U1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TCiAgICAgbV9wcm9taXNl
ZFVSTCA9IHVybDsKIH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpl
eHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2li
bGVVUkwsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYXJjaGl2ZUJ1ZmZlciwgTlNTdHJpbmcgKnBh
c3RlYm9hcmROYW1lLCBOU1N0cmluZyAqb3JpZ2luSWRlbnRpZmllcikKK3ZvaWQgV2ViVmlld0lt
cGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJp
bmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0bGUsIE5TU3Ry
aW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBhcmNoaXZlQnVmZmVyLCBOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5TU3RyaW5n
ICpvcmlnaW5JZGVudGlmaWVyKQogewogICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtO
U1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhOYW1lOnBhc3RlYm9hcmROYW1lXTsKICAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IHR5cGVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0V2l0aE9iamVjdHM6V2ViQ29yZTo6bGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2Fy
ZFR5cGUoKSwgbmlsXSk7CkBAIC00NTg0LDcgKzQ1ODQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpy
ZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN0cmlu
ZyYgbwogICAgIGhhbmRsZURPTVBhc3RlUmVxdWVzdFdpdGhSZXN1bHQoV2ViQ29yZTo6RE9NUGFz
dGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBOU0RhdGEgKmRhdGEg
PSBbTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoV2ViQ29yZTo6
UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07Ci0gICAgYXV0byBidWZmZXIgPSBX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgYXV0byBi
dWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICBpZiAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgp
KS5vcmlnaW4oKSA9PSBvcmlnaW5JZGVudGlmaWVyKSB7CiAgICAgICAgIG1fcGFnZS0+Z3JhbnRB
Y2Nlc3NUb0N1cnJlbnRQYXN0ZWJvYXJkRGF0YShOU1Bhc3RlYm9hcmROYW1lR2VuZXJhbCk7CiAg
ICAgICAgIGNvbXBsZXRpb24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6R3JhbnRl
ZEZvckdlc3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDU1MTY2
NjZjNWEzMTE3MmM5ODZlMzJhYmYzYzZiMDFkNDU2ZjM2YWYuLmI0NjJkOGRiNWNjNjIwMzg2ZTc2
ODNkYjI0ODM2YWIzY2U2NGZlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
QEAgLTMyOCw3ICszMjgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFVTRShBUFBLSVQpCi0g
ICAgdmlydHVhbCB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luSWRlbnRpZmllcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERh
dGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
SWRlbnRpZmllcikgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVj
dCBjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSA9IDA7CkBA
IC00NjgsNyArNDY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzaW5nRWxl
bWVudCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJy
YXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhh
c1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91
dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNo
b3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRG91
YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeShXZWJLaXQ6OlRhcElkZW50aWZpZXIp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOWZmMjNhODY2
ZmYwZDg2Mjc1MTg1YmY2MjlmMWE0NzZjZjRmZTZkMy4uZTVlYWY0MWYzOGI2NDdiYzVmMzczZGIw
NzlkZWI0MTZhYTk2M2QxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTI1OSw3ICsyNTksNyBAQCBjbGFzcyBJbnRTaXplOwogY2xhc3MgUHJvdGVjdGlvblNwYWNl
OwogY2xhc3MgUnVuTG9vcE9ic2VydmVyOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3Q7CiBjbGFzcyBUZXh0SW5kaWNhdG9yOwogY2xhc3MgVmFsaWRhdGlv
bkJ1YmJsZTsKQEAgLTExNzksNyArMTE3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVy
VUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVs
ZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rva2VuKTsKICAgICBi
b29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKTsKICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKTsKICAgICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpOwogICAgIHZv
aWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IDU4NTQ3ZDg0ODgxZGM4
MzBmNjk2OWEwY2E5NzY3MDM1NGZlYWQwMGUuLjE5OTdlYWUyMGFjMjJjYTNhZTgwMDRjNzA0ZmEy
MmRhNjA5ZTAwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIC0+IEUKICAgICBy
ZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0KIAotYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpk
aWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHlw
ZQorYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKIHsKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmgKaW5kZXggYjA3YzE0OWZkNGRhMTVjZWVjNGE4ZWZkYWFiN2E1YTFiZTZhZGY3MC4uNzk5
NDJmOWIyMGEyNjYwY2E0YTdkY2Q0NTAxOGQxNmU0M2I2NjZmNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBGcmFt
ZUluZm87CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCkBAIC04Niw3ICs4
Niw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25UeXBlIHdpbGxQZXJmb3JtUmVkaXJlY3Rpb24o
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
IEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICBFeGNl
cHRpb25UeXBlIGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgRXhj
ZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsK
KyAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZENvbXBsZXRlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgc3RvcCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oCmluZGV4IDc4NjZjZGIxNzc0NjAwN2FiMGE3YTE3YzU1
Yjg3YzdmMTY0YzJiYWUuLjcyNzlmODQ0Y2MyYmJkMmIwMTdmZTBmMDk3ZGUwMTg3MGE5YTg1MjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKQEAgLTM2LDcgKzM2LDcg
QEAgdHlwZWRlZiBzdHJ1Y3QgX0d0a0NsaXBib2FyZCBHdGtDbGlwYm9hcmQ7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZm9ybWF0cyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKICAgICB2b2lkIHJlYWRUZXh0KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKICAgICB2b2lkIHJlYWRGaWxlUGF0aHMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Ci0gICAgdm9pZCByZWFk
QnVmZmVyKGNvbnN0IGNoYXIqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYpPiYmKTsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgY2hhciosIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpPiYmKTsKICAgICB2b2lkIHdyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJik7CiAgICAg
dm9pZCBjbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
Q2xpcGJvYXJkR3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJk
R3RrMy5jcHAKaW5kZXggYzJiZjUxODNiMzBmMTBlOWViNzgxM2NkYWRhMjIzZTkxODljNzQ1OS4u
NTk2NmQ1NTc0YzI4MmY1MzE2OTQwOTYwODI5NjBhZTMzOWNhMTEwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcApAQCAtMTI2LDE1ICsxMjYsMTUg
QEAgdm9pZCBDbGlwYm9hcmQ6OnJlYWRGaWxlUGF0aHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGUKIHN0cnVjdCBSZWFkQnVmZmVyQXN5bmNEYXRhIHsK
ICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAKLSAgICBleHBsaWNpdCBSZWFk
QnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKKyAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpPiYmIGhhbmRsZXIpCiAgICAgICAgIDogY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSho
YW5kbGVyKSkKICAgICB7CiAgICAgfQogCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+
IGNvbXBsZXRpb25IYW5kbGVyOwogfTsKIAotdm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29u
c3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDbGlwYm9hcmQ6OnJlYWRC
dWZmZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBndGtfY2xpcGJvYXJkX3JlcXVlc3RfY29udGVudHMobV9jbGlwYm9hcmQsIGdka19hdG9t
X2ludGVybihmb3JtYXQsIFRSVUUpLCBbXShHdGtDbGlwYm9hcmQqLCBHdGtTZWxlY3Rpb25EYXRh
KiBzZWxlY3Rpb24sIGdwb2ludGVyIHVzZXJEYXRhKSB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxSZWFkQnVmZmVyQXN5bmNEYXRhPiBkYXRhKHN0YXRpY19jYXN0PFJlYWRCdWZmZXJBc3luY0Rh
dGEqPih1c2VyRGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L0NsaXBib2FyZEd0azQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2Fy
ZEd0azQuY3BwCmluZGV4IDA3YWJiNzEzMTk4ODUzYjc4N2M2MzI0YmQ0ODBiMWUwODhhMmEzZDMu
LjViODFmYThmMjlkM2Y3Y2YxYzNmMDlkMWZjM2M4ODczNGRjNTFhMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKQEAgLTEyMCwxNSArMTIwLDE1
IEBAIHZvaWQgQ2xpcGJvYXJkOjpyZWFkRmlsZVBhdGhzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxlCiBzdHJ1Y3QgUmVhZEJ1ZmZlckFzeW5jRGF0YSB7
CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgZXhwbGljaXQgUmVh
ZEJ1ZmZlckFzeW5jRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpPiYmIGhhbmRsZXIpCisgICAgZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5jRGF0
YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKT4mJiBoYW5kbGVyKQogICAgICAgICA6IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
aGFuZGxlcikpCiAgICAgewogICAgIH0KIAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5kbGVyOworICAgIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
PiBjb21wbGV0aW9uSGFuZGxlcjsKIH07CiAKLXZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNv
bnN0IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ2xpcGJvYXJkOjpyZWFk
QnVmZmVyKGNvbnN0IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgY29uc3QgY2hhciogbWltZVR5cGVzW10gPSB7IGZvcm1hdCwgbnVsbHB0ciB9OwogICAg
IGdka19jbGlwYm9hcmRfcmVhZF9hc3luYyhtX2NsaXBib2FyZCwgbWltZVR5cGVzLCBHX1BSSU9S
SVRZX0RFRkFVTFQsIG51bGxwdHIsIFtdKEdPYmplY3QqIGNsaXBib2FyZCwgR0FzeW5jUmVzdWx0
KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IGU5ZDIzNjkzY2RjOWE3MGVmMWQyMTQ4
MDYzMWE0NWNmZTk2N2FhOGMuLjU2MDczYmI4Mzc3YjA2YmM0MTVkNTZlMDY3OGMzMTZmNmM4ZTJi
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5oCkBAIC0xODcsNyArMTg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbGVjdGlvbkRpZENo
YW5nZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQg
cG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9u
QXRQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNh
dmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsK
ICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5
LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlG
b3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbQppbmRleCA2NmFjNGNhYThjODMyYjNkYjUxODk3OWIwZWRiZmI2MTY0
NjRkMDM2Li4zMmQxZjg5YzA1OGI5YjQwYTE4ZThmNjdiYzdiZTlmMGExMDI1MDhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC0z
NTcsNyArMzU3LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cG9zaXRpb25JbmZvcm1hdGlvbkRp
ZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXQKICAgICBbbV9jb250ZW50Vmll
dyBfcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZTppbmZvXTsKIH0KIAotdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
IGltYWdlQnVmZmVyKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJl
ZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCiB7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4g
aW1hZ2VEYXRhID0gaW1hZ2VCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOwogICAgIFVJSW1hZ2VEYXRh
V3JpdGVUb1NhdmVkUGhvdG9zQWxidW0oaW1hZ2VEYXRhLmdldCgpLCBuaWwsIE5VTEwsIE5VTEwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KaW5kZXggMGM2MjVjMzBkMzAzZmJkOTg0OWI4NGI2ZTdhYWZhMzRjZjdj
MzQ5Ni4uMWE4MWNjZTQ0NTVlYjFhNzJiMTBlOGYyNDczYzYwYTI5MWVhNThiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCkBAIC0zODIxLDcgKzM4MjEsNyBAQCAtIChCT09MKWNhblBlcmZvcm1BY3Rpb25Gb3JX
ZWJWaWV3OihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRlcgogCiAgICAgICAgIE5TQXJy
YXkgKmFsbEN1c3RvbVBhc3RlYm9hcmREYXRhID0gW3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9h
cmRUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSBpbkl0
ZW1TZXQ6aW5kaWNlc107CiAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGFsbEN1c3RvbVBh
c3RlYm9hcmREYXRhKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVy
ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgICAgICBpZiAo
V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdl
dCgpKS5vcmlnaW4oKSA9PSBmb2N1c2VkRG9jdW1lbnRPcmlnaW4pCiAgICAgICAgICAgICAgICAg
cmV0dXJuIFlFUzsKICAgICAgICAgfQpAQCAtNjU5OSw3ICs2NTk5LDcgQEAgc3RhdGljIEJPT0wg
YWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4oVUlQYXN0ZWJvYXJkICpwYXN0ZWJv
YXJkLCBjb25zdAogICAgICAgICBpZiAoIWRhdGEubGVuZ3RoKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpICE9IG9yaWdp
bklkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm4gTk87CiAKQEAgLTc1NzAsNyArNzU3MCw3
IEBAIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQg
Kilhc3Npc3RhbnQgc2hhcmVFbGVtZW50V2l0CiB7CiAgICAgV2ViQ29yZTo6U2hhcmVEYXRhV2l0
aFBhcnNlZFVSTCBzaGFyZURhdGE7CiAgICAgTlNTdHJpbmcqIGZpbGVOYW1lID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCIlQC5wbmciLCAoTlNTdHJpbmcqKVdFQl9VSV9TVFJJTkcoIlNo
YXJlZCBJbWFnZSIsICJEZWZhdWx0IG5hbWUgZm9yIHRoZSBmaWxlIGNyZWF0ZWQgZm9yIGEgc2hh
cmVkIGltYWdlIHdpdGggbm8gZXhwbGljaXQgbmFtZS4iKV07Ci0gICAgc2hhcmVEYXRhLmZpbGVz
ID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
VUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OworICAgIHNoYXJlRGF0YS5maWxl
cyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBO
R1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OwogICAgIFtzZWxmIF9zaG93U2hhcmVTaGVldDpz
aGFyZURhdGEgaW5SZWN0OiB7IFtzZWxmIGNvbnZlcnRSZWN0OmJvdW5kaW5nUmVjdCB0b1ZpZXc6
c2VsZi53ZWJWaWV3XSB9IGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGJhOTk1ZmI5ZTA2
YmY4ZGRhZjU1YWEwN2RiMGYyZmZhODJkMTgzMTMuLmY4MGM4MjQ5ZGE0NjdiOTQyMDM1ZTQ2MDZl
ODk5YmNiNjRlZGJjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbQpAQCAtMTM4LDcgKzEzOCw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0
cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAot
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKK1JlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
TWFjLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaApp
bmRleCBkMjIzOGZkYzlkMTZmNzdmOGMzZDMwMmNhOTk3NmZlODNmMWIzZjM3Li5hYjg3YzJhN2U4
YzM1N2E2NWIzY2ZlNjA3OTM4ZmRmZWM4YTY1MmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaApAQCAtMTAwLDggKzEwMCw4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBleGVjdXRlVW5kb1JlZG8oVW5kb09yUmVkbykgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBleGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9y
KSBvdmVycmlkZTsKICAgICB2b2lkIHN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYs
IGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZSkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwKLSAg
ICAgICAgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9y
aWdpbklkZW50aWZpZXIpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0
IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAorICAgICAgICBjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdp
bklkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgp
IG92ZXJyaWRlOwogICAgIHZvaWQgcmVzZXRTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBub3RpZnlJbnB1dENvbnRleHRBYm91dERpc2NhcmRlZENvbXBvc2l0aW9uKCkgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxN
YWMubW0KaW5kZXggYTQxMTIxMzVmMmVmMTkwMTVhNTJmMWUxYjAzYWUzMGExZjIyM2QyYS4uYzM2
M2U5NTVlODc5YzBlMTg2YjQxNTA5MDkxMzM2NWMyMGZlOTA2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpAQCAtNDAwLDcgKzQwMCw3
IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRl
bSYgaXRlbSwgY29uc3QgU2hhcmVhYmxlQml0CiAgICAgbV9pbXBsLT5zdGFydERyYWcoaXRlbSwg
aW1hZ2UpOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFn
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdl
QnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlz
aWJsZVVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJp
bmcmIG9yaWdpbklkZW50aWZpZXIpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERh
dGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKIHsKICAg
ICBhdXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGltYWdlLT5zZXREYXRh
KFdURk1vdmUoaW1hZ2VCdWZmZXIpLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGE3ZmI0YWFiY2Y3NGQxYmQ3MjkyYzMwYWY3
NzI5OGJiOTQwZGQwMGMuLjAxZDg0MGEyYTYzZWFjNzkxZmJkODRmYmU2MzdiNWIyOGNmNjEzMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpA
QCAtMjI3LDcgKzIyNyw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZv
clBhc3RlYm9hcmQoKQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvIGltYWdlQnVmZmVyID0gc2hh
cmVkTWVtb3J5SW1hZ2UtPmNyZWF0ZVNoYXJlZEJ1ZmZlcihpbWFnZUhhbmRsZS5kYXRhU2l6ZSk7
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlQnVmZmVyOworICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBhcmNoaXZlQnVmZmVyOwogICAgIGlmICghYXJjaGl2ZUhh
bmRsZS5oYW5kbGUuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byBzaGFyZWRNZW1vcnlBcmNoaXZl
ID0gU2hhcmVkTWVtb3J5OjptYXAoYXJjaGl2ZUhhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeUFyY2hpdmUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAK
aW5kZXggZmE5NDAyNWVkNzQ3MzBkMjhlNzE2NDYyODVmOWU1YmE2NTNiOGYxMi4uYzI4ZmU2NWYw
Y2YxNjQzOTk4MThhY2EzMmY5ODFjYzc3OGYxZTkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcApAQCAtODQsNyArODQsNyBAQCBib29s
IFJlbW90ZUNETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENE
TVNlc3Npb25UeXBlJiwgY29ucwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW1vdGVD
RE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU2hhcmVk
QnVmZmVyJiBkYXRhKSBjb25zdAorYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkg
Y29uc3QKIHsKICAgICAvLyBUaGlzIGNoZWNrIHdpbGwgYmUgZG9uZSwgbGF0ZXIsIGluc2lkZSBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UoKS4KICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFJlbW90ZUNETTo6bG9hZEFuZEluaXRp
YWxpemUoKQogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OkxvYWRBbmRJbml0aWFsaXplKCksIG1f
aWRlbnRpZmllcik7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFJlbW90ZUNETTo6c2FuaXRp
emVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IFJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICAvLyBUaGlzIGNo
ZWNrIHdpbGwgYmUgZG9uZSwgbGF0ZXIsIGluc2lkZSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTo6dXBkYXRlTGljZW5zZSgpLgogICAgIHJldHVybiByZXNwb25zZS5jb3B5KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaAppbmRleCAwYWRk
ZjgzMzUzYjZlYTFiMmU4YjAyYzZiN2VlM2RhZjQ2OGNkMzgzLi44YzQ1NGViODNlNTk5NGE4ZTRk
NTkyZDUxZGY5MWZmOWI1MjNjYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNLmgKQEAgLTQ4LDEzICs0OCwxMyBAQCBwcml2YXRlOgogICAgIGJv
b2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbldp
dGhSZXN0cmljdGlvbnMoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYs
IGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wg
c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETVNl
c3Npb25UeXBlJiwgY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNv
bnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwg
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQg
ZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25z
dCBmaW5hbDsKICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCBwZXJzaXN0ZW50U3RhdGVSZXF1
aXJlbWVudChjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3Qg
V2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBkaXN0aW5j
dGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IFdlYkNv
cmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8
V2ViQ29yZTo6Q0RNSW5zdGFuY2U+IGNyZWF0ZUluc3RhbmNlKCkgZmluYWw7CiAgICAgdm9pZCBs
b2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3Qg
ZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0
aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0
IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25z
dCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0
ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1
cHBvcnRlZEluaXREYXRhVHlwZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKaW5kZXggYjVkZWEyMWU5OTVh
NzM3ZjAzNmY2NDUzOGMxZmIzZWNiNWU2YmI1NS4uYTEzZTUxNDYwZjZiYjlmODBlZjNkMWE4NDJl
ZmMwYjlmNDQ1OTBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBS
ZW1vdGVDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNv
cmU6OkNETUtleVN5c3RlbUMKICAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6SW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGRpc3Rp
bmN0aXZlSWRlbnRpZmllcnMsIHBlcnNpc3RlbnRTdGF0ZSksIFdURk1vdmUoY2FsbGJhY2spLCBt
X2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0
aWZpY2F0ZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNz
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNl
cnRpZmljYXRlKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNlcnRpZmlj
YXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkg
ewogICAgICAgICBjYWxsYmFjayhGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCmluZGV4IDEwNmJhM2IxMTYx
YzhkZjA5ZDcxZGZlNjc5YmEzM2Q0MjMwNzllOTYuLjJjNzg1MWU0NDBiMDhhNTJhMmFlNzBkYTdl
NDE4ODgyZTNjNjE0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToK
IAogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OlJlbW90ZTsgfQogICAgIHZvaWQgaW5pdGlh
bGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRl
LCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7
CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3Rv
cmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5rZXlTeXN0ZW07
IH0KICAgICBSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9u
KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKaW5kZXggYWYwYmFkNGM5MGQ4
ZGQ1MTM3NzRhZWY2YTE1Yjc3YmE4OWZjNTA2NC4uYzc0MGMwNDUwNmZkZWRhYzlmNGNmNTAyYzIw
NWE4YTM3ZmNhNDU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcApAQCAtNDksNyAr
NDksNyBAQCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bihXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZgogewogfQogCi12b2lkIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNl
bnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBjYWxs
YmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFpbGVk
KTsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcKICAgICB9LCBtX2lk
ZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2
b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlm
ICghbV9mYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZv
aWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZW5zCiAgICAgfQogCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQs
IHR5cGUpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEtleVN0YXR1c1ZlY3RvciYm
IGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mJiBtZXNz
YWdlLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVm
PFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gc3RkOjpudWxsb3B0OworICAgICAgICBzdGQ6
Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gcmVhbE1lc3NhZ2UgPSBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIGlmIChtZXNzYWdlICYmIG1lc3NhZ2UudmFsdWUoKS5idWZmZXIo
KSkKICAgICAgICAgICAgIHJlYWxNZXNzYWdlID0gbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpLnJl
bGVhc2VOb25OdWxsKCk7CiAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBX
VEZNb3ZlKHJlYWxNZXNzYWdlKSwgc3VjY2VlZGVkID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbi5oCmluZGV4IDRmZmU0Y2FjZWNjZGU0M2Q1Y2IxMWUyMzZjYTA0
NWFjZGE4M2E3ZWIuLjRlNGNkMmMwMDVjNmIwMDY1ZjljZGIxODhjNGJjZTBiNWJmYTY2MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaApAQCAtNTksOCArNTksOCBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBzZXRDbGllbnQoV2Vha1B0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGll
bnQ+JiYgY2xpZW50KSBmaW5hbCB7IG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOyB9CiAgICAg
dm9pZCBjbGVhckNsaWVudCgpIGZpbmFsIHsgbV9jbGllbnQgPSBudWxscHRyOyB9Ci0gICAgdm9p
ZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJh
Y2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBMaWNlbnNlVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwg
TGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2Uo
TGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBm
aW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExp
Y2Vuc2VUeXBlLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25z
ZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24o
TGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCBTdHJpbmcmIG9yaWdp
biwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAg
ICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5z
ZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRi5jcHAKaW5kZXggOWEyMTlhNTQ0ZTU1MzgzZjU0ZTcxZGFiZDM1NGNjNDQwYTQxNDJiOS4u
NjI5MjY3OThjNWMxMTMyNGEzMWFhNTBjZGE3ZWQxZmJmNzRmZTcwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
OjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplCiAK
IC8vIElmIGFsbERhdGFSZWNlaXZlZCBpcyB0cnVlLCB0aGUgY2FsbGVyIGV4cGVjdHMgZW5jb2Rl
ZERhdGFTdGF0dXMoKSB0byBiZSA+PSBFbmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZQog
Ly8gYWZ0ZXIgdGhpcyBmdW5jdGlvbiByZXR1cm5zIChpbiB0aGUgc2FtZSBydW4gbG9vcCkuCi12
b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAg
ICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkYuaAppbmRleCBlNWNmZTk0ZWNkM2E5YzA2MDBmYzAwMzIwZmY0MzA2MWM5MGVkNjli
Li40MGQzNzM0ZjdhMzIyZThiYWNiOWQxYzBkZWE3MDc5ZTJhZDE3ZWFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGIGZp
bmFsCiAgICAgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VEZWNvZGVyCiAgICAgLCBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZShSZW1vdGVJbWFnZURlY29kZXJBVkZN
YW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyJiBp
ZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KQorICAgIHN0YXRpYyBSZWY8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGUoUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGTWFuYWdlciYgbWFuYWdlciwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
SWRlbnRpZmllciYgaWRlbnRpZmllciwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSZW1vdGVJbWFnZURlY29kZXJBVkYobWFuYWdlciwgaWRlbnRpZmllciwgbWltZVR5cGUp
KTsKICAgICB9CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpQbGF0Zm9y
bUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgV2ViQ29yZTo6U3Vic2Ft
cGxpbmdMZXZlbCA9IFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IFdl
YkNvcmU6OkRlY29kaW5nT3B0aW9ucyYgPSBXZWJDb3JlOjpEZWNvZGluZ09wdGlvbnMoV2ViQ29y
ZTo6RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRFeHBl
Y3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0gICAgdm9pZCBzZXREYXRhKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lk
IHNldERhdGEoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZl
ckNhY2hlKHNpemVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIu
Y3BwCmluZGV4IDQxZDUzODgwMjNkMzkxNDk1MjE4MzVmNjg4ZGU0ZDQ4ZjY1ZDc2N2UuLjA4MmIz
MzY2YzhiYzcxMzBkNzVkNTY5OGE3ZDc5ZTY4OTJhZDhmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkZNYW5hZ2VyLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJB
VkY+IFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2RlcihTaGFy
ZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKK1JlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IFJlbW90ZUltYWdlRGVjb2RlckFW
Rk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2RlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAg
c3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiBpbWFnZURlY29kZXJJZGVudGlm
aWVyOwogICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlIHsg
ZGF0YSB9OwpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFu
YWdlcjo6c2V0VXNlR1BVUHJvY2Vzcyhib29sIHVzZUdQVVByb2Nlc3MpCiAgICAgSW1hZ2VEZWNv
ZGVyOjppbnN0YWxsRmFjdG9yeSh7CiAgICAgICAgIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c3Vw
cG9ydHNNZWRpYVR5cGUsCiAgICAgICAgIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6Y2FuRGVjb2Rl
VHlwZSwKLSAgICAgICAgW3RoaXNdKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSB7CisgICAgICAgIFt0aGlzXShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlv
biBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pIHsKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbWFnZURlY29kZXIoZGF0
YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAg
ICAgICAgIH0KICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmgKaW5kZXgg
YzIzNzgyYjY1MDRlYzc5YmU0NmUxMjZmNGU1OTFiM2ZmN2Y2ZGJhOC4uMzYxOGFmZDEyMDk4YjU1
NzZiNGRkNGZmYmYzYzA2ZmJhODQyYTc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5h
Z2VyLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIEdQVVByb2Nlc3NDb25uZWN0aW9u
JiBlbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxS
ZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZUltYWdlRGVjb2RlcihXZWJDb3JlOjpTaGFyZWRC
dWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OkFscGhhT3B0aW9u
LCBXZWJDb3JlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgUmVmUHRyPFJlbW90
ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlSW1hZ2VEZWNvZGVyKFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OkFscGhh
T3B0aW9uLCBXZWJDb3JlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKICAgICAvLyBH
UFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50LgogICAgIHZvaWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZS5jcHAKaW5kZXggOTY2ZmM5M2I3N2FmYWEzZTYyMDhkN2FiYTVhZWQyYzdhOTRj
NzRiMi4uMDA1YTM3Y2MyNmVjNGMwOTAxYmY0ZjM3MTIyMzg2NWRlMmQxNjZiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRl
UmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCkBAIC03OCw3ICs3OCw3IEBAIFNvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGU6On5Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlKCkKICAgICBtX2dwdVByb2Nl
c3NDb25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCi12b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRh
dGEpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVuZChSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlv
bikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaAppbmRleCAzNjAx
NzViZmJlOWQxYWY4M2VkNTc5MTM3M2I3NzVlZTc1MGFjN2NjLi5lYTVmYTNlYzM2YzJiODU5ZWU1
NzhjY2QwZTAzNDhjNzNjYjg2ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaApAQCAt
NzIsNyArNzIsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gU291cmNlQnVmZmVyUHJpdmF0ZSBvdmVy
cmlkZXMKICAgICB2b2lkIHNldEFjdGl2ZShib29sKSBmaW5hbDsKLSAgICB2b2lkIGFwcGVuZChS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZChSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBhYm9y
dCgpIGZpbmFsOwogICAgIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpIGZpbmFsOwogICAgIHZvaWQg
cmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCmlu
ZGV4IDExYjRhODZlNDg1MmY2YzIwNjFmYTNmYzlhZjI5Zjg4OTlmNGViOWYuLmI0MDg5ZmQzNTQ4
Yzk3ZjE3ZmMyYjlmYjAwMjc4MGQ2NDNjZjIzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAK
QEAgLTE2NSwxMCArMTY1LDEwIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OnN0b3JhZ2VD
aGFuZ2VkKFNoYXJlZE1lbW9yeSogc3RvcmFnZSwgY29uc3QgV2ViQ29yZTo6CiAgICAgbV9jb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpBdWRpb1NhbXBsZXNT
dG9yYWdlQ2hhbmdlZCB7IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUp
LCBkYXRhU2l6ZSB9LCBmb3JtYXQsIGZyYW1lQ291bnQgfSwgbV9pZGVudGlmaWVyKTsKIH0KIAot
dm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZh
dGU6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpGZXRjaERhdGEgeyB9LCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbWltZVR5cGUgPSBtaW1l
VHlwZSgpXShhdXRvJiYgZGF0YSwgZG91YmxlIHRpbWVDb2RlKSBtdXRhYmxlIHsKLSAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoZGF0YS5zaXplKCkpCiAgICAgICAgICAg
ICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
OwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlciksIG1pbWVUeXBlLCB0
aW1lQ29kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0
Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAppbmRleCAzMDNhNTRmNzZmMTg1ZTk2NDU0ZWY5
ZjViYjQ2MWYyOGUxMjY3ODZkLi41NzZmZDFjNmU5N2MwY2FkOGNiZmVjOTRlM2JkMzYzMzA3NmU0
NGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRp
YVJlY29yZGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICAvLyBXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZQogICAgIHZvaWQgdmlk
ZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6TWVkaWFTYW1wbGUmLCBXZWJDb3JlOjpWaWRlb1Nh
bXBsZU1ldGFkYXRhKSBmaW5hbDsKLSAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGRvdWJsZSk+JiYpIGZpbmFsOworICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+JiYpIGZpbmFsOwogICAgIHZvaWQgc3RvcFJl
Y29yZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwogICAgIHZvaWQgc3Rh
cnRSZWNvcmRpbmcoU3RhcnRSZWNvcmRpbmdDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGF1
ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBXVEY6Ok1lZGlhVGltZSYsIGNvbnN0IFdlYkNvcmU6
OlBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgV2ViQ29yZTo6QXVkaW9TdHJlYW1EZXNjcmlwdGlv
biYsIHNpemVfdCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxl
RWRpdG9yQ2xpZW50LmgKaW5kZXggMmMxMzRlOWU3MTlmOTcyNjVjOGQwOTAzMzQ5YzFlMmY5YzFl
MmU4NC4uMDM1M2FhYmY3ZDRiOTI1YWEyZjE1NjJkNTczYWFmMzA5M2M4M2JjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3Rl
ZEJ1bmRsZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaApAQCAtMzEsNyAr
MzEsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVy
OwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBTdHlsZVByb3Bl
cnRpZXM7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0
cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0
OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6Oldl
YlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdl
KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2Vi
S2l0OjpXZWJQYWdlJikgeyB9CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChX
ZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29y
ZTo6U2ltcGxlUmFuZ2UmLCBib29sKSB7IHJldHVybiBmYWxzZTsgfQogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCmluZGV4IGEw
NjM1MjA0MzM1YjNhYjBlNmRmYjBjNjc3NzY3ZjQyOGU4YTc3ZTIuLjE4MGIxMTExZWNmMDExMzI4
MDkyNjZhMWJjZTI3ZDI2MGU0ZmEwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBE
T01XaW5kb3dFeHRlbnNpb247CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01
Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5QYWdlTG9hZGVyQ2xpZW50KCkgPSBk
ZWZhdWx0OwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkVVJMUmVxdWVzdChXZWJLaXQ6Oldl
YlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCopIHsg
fQotICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcios
IGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlVSTCYs
IEFQSTo6T2JqZWN0KikgeyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3Qo
V2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RG
OjpTdHJpbmcmLCBjb25zdCBXVEY6OlVSTCYsIEFQSTo6T2JqZWN0KikgeyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2Um
LCBXZWJLaXQ6OldlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFt
ZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0
PiYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCmluZGV4IGRmOGQ4ODA0N2Zm
NjczMTdjYjRhYmZlMzUxMzA1YTA3NWEwYzNhYmYuLmJjOGVhYjk4NzliZTgwZDg1MWIwMDFjMjAw
YzBmMTg1N2E2YzdhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KQEAgLTYz
NCw3ICs2MzQsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nl
c3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgW21fY29u
dHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgd2lsbFdyaXRlUmFuZ2VUb1Bhc3RlYm9hcmQ6
d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2Um
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKKyAgICAgICAgdm9pZCBn
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9kZWxlZ2F0ZU1l
dGhvZHMuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkKICAgICAgICAgICAgICAgICByZXR1cm47
CkBAIC02NDIsNyArNjQyLDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihpZCA8V0tX
ZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAgICAgICAg
IGF1dG8gZGF0YUJ5VHlwZSA9IFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkg
X3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHBh
c3RlYm9hcmREYXRhRm9yUmFuZ2U6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSku
Z2V0KCkpXTsKICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGUgaW4gZGF0YUJ5VHlwZSkg
ewogICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5hcHBlbmQodHlwZSk7Ci0gICAgICAg
ICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVdKSk7CisgICAgICAgICAgICAgICAgcGFzdGVi
b2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVb
dHlwZV0pKTsKICAgICAgICAgICAgIH07CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAppbmRleCBjMzk4MTFlYWM5NGUyOTVlMzgz
M2JmY2RkNmMxODJhNGEzMTAxOTliLi4zNTM2MDY1MjViODQ1NzY4ZTMwMTU4MzhmODkxMWRlOGYy
ZTA4MDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYgcGFnZSwgY29uc3QKICAgICAgICAg
bV9jbGllbnQud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKHRvQVBJKCZwYWdlKSwgdG9BUEkoY3JlYXRl
SGFuZGxlKHJhbmdlKS5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJh
bmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5n
ZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkgewog
ICAgICAgICBXS0FycmF5UmVmIHR5cGVzID0gbnVsbHB0cjsKQEAgLTE1Niw3ICsxNTYsNyBAQCB2
b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZShXZWJQYWdlJiBwYWdlLCBjbwogICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVu
ZCh0eXBlLT5zdHJpbmcoKSk7CiAKICAgICAgICAgZm9yIChhdXRvIGl0ZW0gOiBkYXRhQXJyYXkt
PmVsZW1lbnRzT2ZUeXBlPEFQSTo6RGF0YT4oKSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6
ZSgpKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRl
bS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCmluZGV4IGQ5OGVlMWMxNTVkNGZiODI5MmE1
OGQ5YzU4ZTg4MDA3YTEzNDA1MWEuLjMxZTEzOTZlNzBhZDYwYzE5ZDkzYzY3NWM3NjM0NmZlMGRh
Nzk0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgK
QEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5nZShXZWJQYWdlJiwg
Y29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIGRpZENoYW5n
ZVNlbGVjdGlvbihXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5h
bDsKICAgICB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiwgY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKLSAgICB2b2lkIGdldFBhc3Rl
Ym9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBm
aW5hbDsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFz
dGVib2FyZERhdGEpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFn
ZSYpIGZpbmFsOwogICAgIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYlBhZ2UmLCBXZWJDb3Jl
OjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmIGRlc3RpbmF0
aW9uLCBib29sIGlzTW92ZSkgZmluYWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCBlMDA2YzQ2NGU2MTQzZjkzYmIyNjdmNmE0MDcy
YjlmN2RlM2E4OWM2Li4zZjQxYjFmMzM4ZmE0NDQ3NDkwNzQ4MTg5YmI4OTk1MWNmMWIxNzJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcApAQCAt
NjIsMTAgKzYyLDEwIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxs
TG9hZFVSTFJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzCiBzdGF0aWMgdm9pZCByZWxl
YXNlU2hhcmVkQnVmZmVyKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogewogICAg
IC8vIEJhbGFuY2VkIGJ5IHJlZigpIGluIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6
d2lsbExvYWREYXRhUmVxdWVzdCgpLgotICAgIHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nh
c3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOwogfQog
Ci12b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVz
dChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1
ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcm
IGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0
YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5
cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJM
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC53aWxsTG9hZERh
dGFSZXF1ZXN0KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggMzZiZDk4MGIyZmFhMWFmNDVhYzMxMDZlYjAxZTlmMzc2
YmExM2FjZi4uODYzYmRhYjYyODRjYTNhYWQyZjlkNWZmZjVmZDY4ZWFiOGIyYjczMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtNDcsNyArNDcs
NyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
KGNvbnN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJhc2UqKTsKIAogICAgIHZvaWQgd2lsbExv
YWRVUkxSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBB
UEk6Ok9iamVjdCopIG92ZXJyaWRlOwotICAgIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJQ
YWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFVSTCYs
IEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdl
YlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYs
IGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRyPEFQSTo6
T2JqZWN0PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRyPEFQSTo6
T2JqZWN0PiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggOGI1ODIx
MTRiOTM1YjI3MjRlOWVhZDMzZDZjYTQyY2ZkZjEyY2U0YS4uOTc1NmY1MTkyMGQ2NGM0MmNkYzAw
NjgxMTUyNzdlYjExM2RiN2QzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yODEs
OSArMjgxLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3Vy
Y2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgIGlmICghcmVzb3VyY2UpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKICAgICBp
ZiAoIWJ1ZmZlcikgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgU2hhcmVk
QnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMi
LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBjcmVhdGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJs
ZVJlc291cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IDg3Mjk4YjM3MjUwNDk4NTcxYWU0OGY4YzkyMTg1ZWIyMGUzMWRlMTIuLjMxMGZjYTc4
NzVjMzJjM2NkNzQ3OGRiNjRmNTlhYzJjZjUwMTYzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE1NSw3
ICsxNTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgIGlmIChJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKG1fY29yZUxvYWRlci0+
ZnJhbWUoKSwgcmVzcG9uc2UpKSB7CiAgICAgICAgIGF1dG8gaW50ZXJjZXB0ZWRSZXF1ZXN0SWRl
bnRpZmllciA9IG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpOwogICAgICAgICBtX2ludGVyY2Vw
dENvbnRyb2xsZXIuYmVnaW5JbnRlcmNlcHRpbmdSZXNwb25zZShpbnRlcmNlcHRlZFJlcXVlc3RJ
ZGVudGlmaWVyKTsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRl
cmNlcHRSZXNwb25zZShtX2NvcmVMb2FkZXItPmZyYW1lKCksIHJlc3BvbnNlLCBpbnRlcmNlcHRl
ZFJlcXVlc3RJZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiBpbnNwZWN0b3JSZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
b3ZlcnJpZGVEYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShtX2NvcmVMb2FkZXItPmZyYW1lKCksIHJlc3BvbnNl
LCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIHBvbGljeURlY2lzaW9u
Q29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRs
ZXIpXShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBpbnNwZWN0b3JSZXNwb25zZSwgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IG92ZXJyaWRlRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpIHsKICAg
ICAgICAgICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJl
c3BvbnNlOiBub3QgY29udGludWluZyBpbnRlcmNlcHQgbG9hZCBiZWNhdXNlIG5vIGNvcmVMb2Fk
ZXIgb3Igbm8gSUQiKTsKICAgICAgICAgICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuY29u
dGludWVSZXNwb25zZShpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyKTsKQEAgLTE5NSw3ICsx
OTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
IW1faXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNob3VsZCBu
b3Qgc2VuZCBkYXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIAogICAg
IGlmIChVTkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9jb3Jl
TG9hZGVyLT5pZGVudGlmaWVyKCkpKSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNp
emUoKSk7CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXIt
PmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZm
ZXIgPSBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAg
ICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0
YSh7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7
CkBAIC0yOTUsMTEgKzI5NSwxMSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZAogICAgIExPRyhO
ZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3Vy
Y2UgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEo
KSk7CiAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJj
ZToiKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFw
SW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgaWYgKCFidWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIGJ1ZmZlciBmcm9tIFNoYXJl
YWJsZVJlc291cmNlIHNlbnQgZnJvbSB0aGUgbmV0d29yayBwcm9jZXNzLiIpOwotICAgICAgICBX
RUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiBVbmFibGUg
dG8gY3JlYXRlIFNoYXJlZEJ1ZmZlciIpOworICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxF
QVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiBVbmFibGUgdG8gY3JlYXRlIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIiKTsKICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gbV9jb3JlTG9hZGVyLT5m
cmFtZSgpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCiAg
ICAgICAgICAgICAgICAgcGFnZS0+ZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9z
dGljTWVzc2FnZShXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmludGVybmFsRXJyb3JL
ZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpjcmVhdGVTaGFyZWRCdWZmZXJG
YWlsZWRLZXkoKSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggNDJkZTQ2MTQxOTc3
OGI3YzQ1MGZjYTFlYjAzN2MxY2U5N2QyZDYzMS4uYTdmNDVjODQwMWIyZmQyZjg3MGUzNjc4YzU4
ZmMzMTBjMmUxZjI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4uaApAQCAtMjA3LDcgKzIwNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
cml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCkgZmluYWwgeyB9CiAgICAgYm9vbCBnZXRG
b3JtVmFsdWUoU3RyaW5nJiBmb3JtVmFsdWUpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
Ym9vbCBoYW5kbGVTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3Jv
bGxHcmFudWxhcml0eSkgZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgZmluYWw7CiAgICAg
dm9pZCB3aWxsRGV0YWNoUmVuZGVyZXIoKSBmaW5hbDsKICAgICBib29sIHBsdWdpbkhhbmRsZXND
b250ZW50T2Zmc2V0Rm9yQWNjZXNzaWJpbGl0eUhpdFRlc3QoKSBjb25zdCBmaW5hbDsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
CmluZGV4IGQyM2FiYjllNjUxMWIxM2JiZDUyM2FmNDUxZjQ0MTc4NzNhNmMxZTAuLmQ0N2YzMmI3
ZDQ5MTk1NmJkY2U3N2JmZTZmMTVjYTc4NjViZmQxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMjU1Miw3ICsyNTUyLDcg
QEAgdm9pZCBQREZQbHVnaW46Om5vdGlmeURpc3BsYXlNb2RlQ2hhbmdlZChpbnQpCiAgICAgdXBk
YXRlU2Nyb2xsYmFycygpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQREZQbHVnaW46Omxp
dmVSZXNvdXJjZURhdGEoKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBE
RlBsdWdpbjo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgTlNEYXRhICpwZGZEYXRh
ID0gbGl2ZURhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4u
aAppbmRleCA4OGY0NWNlNTFjZTMxZGYwYzViM2I3NTg2MjM2YzNmMGQ5YzkzYWQzLi41OGQ3MGEz
OWExNmQ2YTRjMGU4YjBjYTlkMDNhYzNkMzdhZWRmY2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtNjEsNyArNjEsNyBAQCBjbGFzcyBJbnRQb2ludDsK
IGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgU2Nyb2xsYmFyOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC0yODgsNyArMjg4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBX
ZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0VG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgcG9pbnRJbkxvY2FsQ29vcmRpbmF0ZXMpIGNvbnN0OwogCi0gICAgdmlydHVhbCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxpdmVSZXNv
dXJjZURhdGEoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybURpY3Rpb25h
cnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSA9IDA7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXgg
NThjMWM5ZmViZmFjMjVkNTkxZWNmNGRmNDYxNTg1MmEwMjA4N2Y4NC4uN2ZiMjBjNTkyZGJmYTA5
NmUzOGJjMTY4NzAzNzM4Y2I4ZjQwN2M5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTkyNCw3ICs5MjQsNyBAQCB2b2lkIFBsdWdp
blZpZXc6OndpbGxEZXRhY2hSZW5kZXJlcigpCiAgICAgbV9wbHVnaW4tPndpbGxEZXRhY2hSZW5k
ZXJlcigpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVzb3Vy
Y2VEYXRhKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3
OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8
fCAhbV9wbHVnaW4pIHsKICAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFs
U3RyZWFtU3RhdGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oCmluZGV4IDM0YmVmYjc1Mzk5MGY2ZmE5YmQ0NzQ1ZDk2ZDNkZjBkYjNj
ZDYwMjQuLmQxNTNhMjljYTE0YTkwZTMyMjdhODkxZTNlZWY1ZTRlNzk3MzUxYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTExNiw3ICsx
MTYsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHNob3VsZEFsbG93U2NyaXB0aW5nKCk7CiAKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Q7
CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJj
ZURhdGEoKSBjb25zdDsKICAgICBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlv
bihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAgU3RyaW5nIGdldFNlbGVjdGlvbkZv
cldvcmRBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBjb25zdDsKICAgICBib29s
IGV4aXN0aW5nU2VsZWN0aW9uQ29udGFpbnNQb2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IDc2
ZGM0MzA2ZDVmMjA4NzNiYjEzOGJmNjZiYjBjYmQzNjg3N2Y2MWIuLmIwNGNjY2YxMTNlNDkyOGZh
NjYzODNiZDI0MzFkYjg3NDg1M2NjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmCiAgICAg
bV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRS
ZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlTWVzc2FnZSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCit2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVE
YXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1f
Y29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5oCmluZGV4IGM4YzBkODYyZDcxMzkzOGM3NTM4NDFkMjhjODI0ZmRiNTM1ZTc1ZTQuLjZi
MGE0MTdjZjBkM2FlMGQ3Yjg5M2E5OTg2ODNhYmYyYmM0YTRkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBm
aW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJl
Y2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRGaW5pc2goKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggMTUy
MDViYThkMjQ1Mjc2MDIzNDEyNGYwNTYwMjQ0YjNmODVlNGM1Yy4uN2NmYzAzYTg1ZDM5ZDgxZjM5
MmMwYWExMzBmODNmYmQyYzgzNGYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTE0Miw3
ICsxNDIsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQXBwbHlTdHlsZShjb25zdCBT
dHlsZVByb3BlcnRpZXMmIHN0eWxlLCBjb25zdCBzdGQ6OgogCiAjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudElk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGRhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmll
cihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGRhdGEpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJl
Z2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShpZGVudGlmaWVyLCBjb250ZW50VHlw
ZSwgcHJlZmVycmVkRmlsZU5hbWUsIGRhdGEuZ2V0KCkpKTsKIH0KQEAgLTI2NSw3ICsyNjUsNyBA
QCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0
b3JDbGllbnQoKS53aWxsV3JpdGVUb1Bhc3RlYm9hcmQoKm1fcGFnZSwgcmFuZ2UpOwogfQogCi12
b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERh
dGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkK
IHsKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuZ2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZSgqbV9wYWdlLCByYW5nZSwgcGFzdGVib2FyZFR5cGVzLCBwYXN0ZWJvYXJk
RGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggOTE0NmU0YzZkMmUxODllYjUxOTlhZmM5
NTgzNjViYjQyZGI1MjFkYy4uYjA1ODYxODkxZWNjODRjNjM2OGEyMDZjMjcwMTA2MGY1MDUyZjVl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgc2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUoY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2Um
LCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYpIGZpbmFsOwogCiAjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKLSAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVm
ZXJyZWRGaWxlTmFtZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAg
dm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lz
dGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkgZmluYWw7CiAgICAgdm9pZCByZWdpc3Rl
ckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgcmVn
aXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
PiYmKSBmaW5hbDsKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVk
aXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZv
aWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENs
aWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAg
ICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwog
ICAgIAogICAgIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFs
OwogICAgIHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOTU5MjIzZDc3NmVmOTMyYWIxYTcz
NzE2MDZlMzI5MWQyMzI5ZDNjYi4uMTRhMDgzY2EyMDdhOTA2M2NmODBiMWU3ZTk2NzBhNDg3Y2Y0
ZDM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTg4LDcgKzExODgs
NyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlcikKICAgICAgICAgICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJj
ZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICAgICAgICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVz
b3VyY2VEYXRhKCk7CiAgICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5j
ZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNp
emUoKSA6IDApOwogICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihsb2FkZXIt
PnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkpOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDZmM2Y1NjZjNTJmMWUz
OWRlZjAwYjVmMzE5ZmViYWU2Njc4YTE5YzAuLjRhOGJlZTU3ZmRiMWZmY2RlZjAwODlmYTY1ZTk3
NTM3NTBkMjUwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzIs
MTIgKzEzMiwxMiBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFn
ZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQ
YXN0ZWJvYXJkVHlwZXM6OlJlcGx5KHR5cGVzKSwgMCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhl
IG92ZXJyaWRlcy4KICAgICBWZWN0b3I8dWludDhfdD4gb3ZlcnJpZGVCdWZmZXI7CiAgICAgaWYg
KFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5nZXRE
YXRhRm9yT3ZlcnJpZGUocGFzdGVib2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBvdmVycmlkZUJ1
ZmZlcikpCi0gICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShvdmVycmlkZUJ1ZmZlcikpOworICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikpOwogCiAgICAgLy8gRmFsbGJhY2sgdG8gbWVzc2Fn
aW5nIHRoZSBVSSBwcm9jZXNzIGZvciBuYXRpdmUgcGFzdGVib2FyZCBjb250ZW50LgogICAgIFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQ2
NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgYwogICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAotaW50
NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVy
KiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQoraW50NjRfdCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAg
ICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXIt
PnNpemUoKSkgewpAQCAtMzI0LDcgKzMyNCw3IEBAIFZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxT
aGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkKIHsKIAogICAgIElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhOwpAQCAtNDA2LDcgKzQw
Niw3IEBAIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kCiAgICAgcmV0dXJuIGluZm87CiB9CiAKLVJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQ
cm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSwgcGFz
dGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3Rl
Ym9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkOjpSZXBseShpcGNIYW5kbGUpLCAw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAzZmYzNTU4MDhlMWQ2ZWIyYWUz
MmI1N2I3ZWJmN2UzNWFjZmY0ZTlhLi4xZmY4M2UxMWJjMTc4OWFhYzBmOTAwYzkzZGMyMmZiZjIz
OWVhMmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01Niw3ICs1Niw3IEBA
IHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaW50IGdldE51bWJlck9mRmlsZXMo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcg
c3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBAIC02Niw3ICs2Niw3IEBAIHByaXZh
dGU6CiAKICAgICBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIGlu
dDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVm
ZmVyRm9yVHlwZShXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFVSTChj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2
NF90IHNldENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKICAgICBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxl
UGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIHdyaXRl
VG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YSYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCkBAIC04OSw3ICs4OSw3IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2Fy
ZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0
bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50
IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5k
ZXgoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNo
YW5nZUNvdW50LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9X
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggNzZjNjAyODg4
MTM1MjIwNzFhMjI3NjlkNzNmMmQzZTgwOGJhYzNiNS4uZDQxNTkwNGM3MWIxYzBjNzJhM2UxN2Nm
N2IzNDUyMGFhMjc5MDM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuY3BwCkBAIC01MSw3ICs1MSw3IEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZp
ZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAKIFdlYlBy
ZXZpZXdMb2FkZXJDbGllbnQ6On5XZWJQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0Owog
Ci12b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2Vp
dmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1
dG8gd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobV9wYWdlSUQpOwog
ICAgIGlmICghd2ViUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgK
aW5kZXggYWUwNTBhOTkyM2VhN2VmOTU1NWNiYTE3MjBiZDFmZmY2YmM5NmUwZS4uY2MzYjI0Yjcy
OWIyMThiODBkMzdhMTJjZDdmYWMzZGZhOWJlZDFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIFdlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3Qg
U3RyaW5nJiB1dGksIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZEZhaWwoKSBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1h
Yy5tbQppbmRleCA0YjZlMjE3YmJlMzdmOGMxZGYxN2FiY2NiYmM4Nzc0MzFhMmIxZTNiLi5lMWUw
ZTYxMTJhMmRlZGMzYjhiYjYzMDk4NTM1Mzc2ZWY0M2FkNTE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFn
Q2xpZW50TWFjLm1tCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNs
YXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUK
ICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBhcmNoaXZlSGFuZGxlOwogICAgIHNpemVfdCBhcmNo
aXZlU2l6ZSA9IDA7CiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgYXV0byBhcmNoaXZlQnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRh
LmdldCgpKTsKKyAgICAgICAgYXV0byBhcmNoaXZlQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOwogICAgICAgICBhdXRvIGFyY2hpdmVT
aGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoYXJjaGl2ZUJ1ZmZl
ci5nZXQoKSk7CiAgICAgICAgIGlmICghYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcAppbmRleCA5MjliMTYwZWVhOWE2NDcyYzJjYTdkMDNhYzMxMzNiN2UxZWU5Zjg3Li5k
ODhmNDRjZmNkZTVlMTVmNjZjMTI0YjQwZjViNTQzNWI5NDY5N2E0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0zNDAsNyArMzQwLDcgQEAg
U3RyaW5nIFdlYkZyYW1lOjpzb3VyY2UoKSBjb25zdAogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1
bWVudExvYWRlciA9IG1fY29yZUZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigp
OwogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gZG9jdW1lbnRMb2FkZXIt
Pm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAg
ICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAg
cmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYjNiMGZiY2M3NmU2
MGY2NzhiZjFjNmRlNTIxMzA1OThjYjJkMDA4OC4uYWNlMjMxNTY2MmUyMGY2ZjA0MDg3NWNlNTQ3
ZTU5ZGFmMWZlOTg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTE3MzgsNyArMTczOCw3IEBAIE5PX1JFVFVSTiB2b2lkIFdlYlBhZ2U6Omxv
YWRSZXF1ZXN0V2FpdGluZ0ZvclByb2Nlc3NMYXVuY2goTG9hZFBhcmFtZXRlcnMmJiwgVVJMCiAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpsb2Fk
RGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xp
Y2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHNoYXJlZEJ1
ZmZlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3Bv
bnNlLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEs
IHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4sIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkg
c2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCit2b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4m
JiB3ZWJzaXRlUG9saWNpZXMsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHNoYXJlZEJ1
ZmZlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3Bv
bnNlLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEs
IHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4sIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkg
c2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCiB7CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01B
SU5TKQogICAgIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiwgJm1fbWFpbkZyYW1lLmdldCgpKTsKQEAgLTE3NTMsNyArMTc1Myw3IEBA
IHZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNoCiAKICAgICAvLyBMZXQgdGhlIEluamVjdGVkQnVuZGxl
IGtub3cgd2UgYXJlIGFib3V0IHRvIHN0YXJ0IHRoZSBsb2FkLCBwYXNzaW5nIHRoZSB1c2VyIGRh
dGEgZnJvbSB0aGUgVUlQcm9jZXNzCiAgICAgLy8gdG8gYWxsIHRoZSBjbGllbnQgdG8gc2V0IHVw
IGFueSBuZWVkZWQgc3RhdGUuCi0gICAgbV9sb2FkZXJDbGllbnQtPndpbGxMb2FkRGF0YVJlcXVl
c3QoKnRoaXMsIHJlcXVlc3QsIGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4oc3Vic3RpdHV0ZURh
dGEuY29udGVudCgpKSwgc3Vic3RpdHV0ZURhdGEubWltZVR5cGUoKSwgc3Vic3RpdHV0ZURhdGEu
dGV4dEVuY29kaW5nKCksIHN1YnN0aXR1dGVEYXRhLmZhaWxpbmdVUkwoKSwgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSku
Z2V0KCkpOworICAgIG1fbG9hZGVyQ2xpZW50LT53aWxsTG9hZERhdGFSZXF1ZXN0KCp0aGlzLCBy
ZXF1ZXN0LCBjb25zdF9jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPihzdWJzdGl0dXRlRGF0
YS5jb250ZW50KCkpLCBzdWJzdGl0dXRlRGF0YS5taW1lVHlwZSgpLCBzdWJzdGl0dXRlRGF0YS50
ZXh0RW5jb2RpbmcoKSwgc3Vic3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgpLCBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5n
ZXQoKSk7CiAKICAgICAvLyBJbml0YXRlIHRoZSBsb2FkIGluIFdlYkNvcmUuCiAgICAgRnJhbWVM
b2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0KCptX21haW5GcmFtZS0+Y29yZUZyYW1lKCksIHJl
cXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKQEAgLTM4NjEsNyArMzg2MSw3IEBAIHZvaWQgV2ViUGFn
ZTo6Z2V0U291cmNlRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoCiAKIHZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3Rk
OjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2sp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CiAgICAgICAgIGlmIChQbHVn
aW5WaWV3KiBwbHVnaW5WaWV3ID0gcGx1Z2luVmlld0ZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUo
KSkpCiAgICAgICAgICAgICBidWZmZXIgPSBwbHVnaW5WaWV3LT5saXZlUmVzb3VyY2VEYXRhKCk7
CkBAIC0zODc3LDcgKzM4NzcsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFP
ZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZAogICAgIGNhbGxi
YWNrKGRhdGFSZWZlcmVuY2UpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVz
b3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cmNlVVJMKQor
c3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFt
ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCiB7CiAgICAgRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwogICAgIGlm
ICghbG9hZGVyKQpAQCAtMzg5Miw3ICszODkyLDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXIK
IAogdm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2U+Jik+JiYgY2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwor
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGF1dG8q
IGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKICAg
ICAgICAgVVJMIHJlc291cmNlVVJMKFVSTCgpLCByZXNvdXJjZVVSTFN0cmluZyk7CiAgICAgICAg
IGJ1ZmZlciA9IHJlc291cmNlRGF0YUZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSwgcmVzb3Vy
Y2VVUkwpOwpAQCAtNjk3Nyw3ICs2OTc3LDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRHZXRMb2FkRGVj
aXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIKICAg
ICBpZiAoIWRvY3VtZW50TG9hZGVyKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
eyB9KTsKIAotICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRl
Y2lzaW9uLCBsb2FkSWRlbnRpZmllci50b0ludGVnZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGljb25E
YXRhKSBtdXRhYmxlIHsKKyAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9y
SWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIudG9JbnRlZ2VyKCksIFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogaWNvbkRhdGEpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih7IGljb25EYXRhIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IDM1YzIzZmU2MDJlYjRmOTA0MWFiYjBhOTg3ZTdkMmYwY2Ew
ZjhiM2UuLmY2ZGRkNzhlYTE5ODhlMWZjYWM5MDc0YmY1NmU3YWIxYmIxY2I1Y2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTIxNiw3ICsyMTYsNyBA
QCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3Mg
U2VsZWN0aW9uRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkdlb21ldHJ5OwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRh
OwogY2xhc3MgVGV4dENoZWNraW5nUmVxdWVzdDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKQEAg
LTEzOTYsNyArMTM5Niw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZv
aWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJp
bmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSk7Ci0gICAgdm9pZCBkaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImKTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIHJl
cXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5n
JiBmaWxlTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAj
ZW5kaWYKIApAQCAtMTU5OSw3ICsxNTk5LDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBzb3Vy
Y2VGb3JGcmFtZShXZWJGcmFtZSopOwogCi0gICAgdm9pZCBsb2FkRGF0YUltcGwodWludDY0X3Qg
bmF2aWdhdGlvbklELCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6
b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYsIHN0ZDo6b3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6
U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90
QWxsb3cpOworICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2Vi
Q29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBj
b25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJiwgc3RkOjpvcHRpb25hbDxOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpTZXNzaW9u
SGlzdG9yeVZpc2liaWxpdHksIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kg
PSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7
CiAKICAgICAvLyBBY3Rpb25zCiAgICAgdm9pZCB0cnlDbG9zZShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggYzk1YzM4NDYzOTIyMTg0ZjI1N2E3MTlkYjViYTlhNDgy
OWFlZGYxYi4uODVlNjUxODY5MmVkNjBjNzg4ZTcyYTdjZTMyZjNmMGUxNWNhNzc4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0K
QEAgLTMyMTcsNyArMzIxNyw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk9uRWxlbWVu
dCh1aW50MzJfdCBhY3Rpb24pCiAgICAgICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGRv
d25jYXN0PFJlbmRlckltYWdlPigqZWxlbWVudC5yZW5kZXJlcigpKS5jYWNoZWRJbWFnZSgpOwog
ICAgICAgICBpZiAoIWNhY2hlZEltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIo
KTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGNhY2hl
ZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1v
cnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CkBAIC00NjgzLDcgKzQ2ODMsNyBAQCB2b2lkIFdlYlBh
Z2U6OmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU3RhcnRM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShmaWxlTmFtZSwgdXRpKSk7CiB9CiAK
LXZvaWQgV2ViUGFnZTo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExv
YWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoIWJ1ZmZlci5pc0VtcHR5KCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmlu
ZGV4IDJkMDNkNzFmZDkwMTE2OWMxODYxMmRiNDFiMDczZTFiOGMyNWFkNTQuLmQ0MTI4MmZjNWRj
NjNjMzE3ZTU0YjgyNjBjNTdlMzQ0Y2EzNmUzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC01NjYsNyArNTY2LDcgQEAg
dm9pZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcg
cGFzdGVib2FyZFR5cGUsIENvbXBsZXQKICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25l
KCkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChw
YXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcih7IH0pOwogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVt
b3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93
aW4vV2ViUHJvY2Vzc1dpbi5jcHAKaW5kZXggZDNkMzhjYWM0MTIxMWQ3ZTI5YjU3ZjI0NTIzNjRl
MzdiNDIzYzMxYS4uMzdmMjdlOTUyZDA3MTcxMTIxY2I0ZjU0ODdhOGI4NGI5ZjhhNjM4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCkBAIC0y
OCw3ICsyOCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCi1SZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNo
YXIqIG5hbWUpCitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJl
c291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQogewogICAgIHJldHVybiAwOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxl
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaAppbmRl
eCAxZjU1ODRmYTM4N2Q3NmNjZTk0ZmY3YjU2OTY4ZTdlODIyMDYwNjA2Li5hMjU1NjBhMTBjMjg4
MmUxYWJkMTc4NDU2OTQ4NmVhMTNlZDg5NmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaApAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBwaW5nTG9hZENvbXBsZXRlKHsg
fSwgcmVzcG9uc2UpOwogICAgIH0KLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQpIGZpbmFs
IHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlKiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGludCkgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQogICAgIHZvaWQgZGlk
RmFpbChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVycm9yKSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoZXJyb3IpOyB9CiAgICAgYm9vbCBz
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopIGZpbmFs
IHsgcmV0dXJuIG1fc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
aW5kZXggYmEzMWZhN2M4NmI5MDlmY2IzNTg3M2FjZmNkMjJhOGU4YjkyOTIyZS4uNDVmN2MxZjVj
YTc0ODJkNjBkOWJjNzRlZjYxNmMzMmZkNjI2NzY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTgw
LDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAg
ICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rp
b25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRh
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBh
c3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+Jiwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRJbnNl
cnRpb25QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFdlYkNvcmU6OkRPTVBh
c3RlQWNjZXNzUmVzcG9uc2UgcmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFN0cmluZyYpIGZp
bmFsIHsgcmV0dXJuIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdl
c3R1cmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCA3NGM0ODc4MzE3N2FmOTBiMjAyZDUxYzQ2
NjY5YjQwMTJiMTI1ZjU5Li5jMmM0MGQzZDJhMTMzZjI4MTM0MTU2MDM0ZGU1NDE0MWE0Y2U5YzMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVIKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9
CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3Rl
Ym9hcmREYXRhKQogewogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0
Mi4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGEyNTk4ZjMyZmI3NjBhN2Q4ODNj
OWY0Y2VlYzE4Y2Y1OTFlYjhlYWQuLjk1OWQ3NDhiNTZiZTEwNzZiZDk3Nzk5MjJjZDM1NmQyMWE2
ODE3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjQ4LDcgKzI0OCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZW5kSDJQaW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8U2Vjb25kcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYpIGZp
bmFsOwogCiAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3Rk
OjpwYWlyPFdlYkNvcmU6OkxpbmtJY29uJiwgdWludDY0X3Q+PiYpIGZpbmFsOwotICAgIHZvaWQg
ZmluaXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGZp
bmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogCiAj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBtX2xvYWRpbmdJY29uIHsgZmFsc2Ug
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggYjg0OWQyYWFjMmE5M2ZiZWU0MTcy
OWYyNGE4NmNkY2Y2YjFmZTAxOS4uYWEyY2M5ODE0NzRhMTNjZTUwODQ3OTg5NDIzNjg0NDkxYzg4
ZjZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTIwMTIsNyArMjAxMiw3IEBA
IFJlZlB0cjxXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6Y3JlYXRlUHJldmlld0xvCiAgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9m
aWxlUGF0aDsKICAgICAgICAgUmV0YWluUHRyPE5TRmlsZUhhbmRsZT4gbV9maWxlSGFuZGxlOwog
Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikgb3ZlcnJpZGUKICAgICAg
ICAgewogICAgICAgICAgICAgYXV0byBkYXRhQXJyYXkgPSBidWZmZXIuY3JlYXRlTlNEYXRhQXJy
YXkoKTsKICAgICAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGRhdGFBcnJheS5nZXQoKSkK
QEAgLTIwOTQsNyArMjA5NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmdldExvYWRE
ZWNpc2lvbkZvckljb25zKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yCiAgICAgICAgIH0K
IAogICAgICAgICBtX2xvYWRpbmdJY29uID0gdHJ1ZTsKLSAgICAgICAgZG9jdW1lbnRMb2FkZXIt
PmRpZEdldExvYWREZWNpc2lvbkZvckljb24odHJ1ZSwgaWNvbi0+c2Vjb25kLCBbdGhpcywgd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYnVmZmVy
KSB7CisgICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRy
dWUsIGljb24tPnNlY29uZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpIHsKICAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgZmluaXNo
ZWRMb2FkaW5nSWNvbihidWZmZXIpOwpAQCAtMjEzMSw3ICsyMTMxLDcgQEAgc3RhdGljIE5TSW1h
Z2UgKndlYkdldE5TSW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1NpemUgc2l6ZSkKIH0K
ICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGljb25EYXRh
KQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbihXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0YSkKIHsKICNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBBU1NFUlQobV9sb2FkaW5nSWNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oCmluZGV4IDkxNDE5NmM0YTliZTZkYmEzZjliMjM3YzU2YThlNmFhMGNhYWYwYTEuLjUy
N2ZhNTUyMTkwYmEwMDE0NTE3ZmZkZTczNzcyMGIyZTdhOTBhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCkBAIC01NSwxNCArNTUsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0
ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmll
cnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJM
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlv
bkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJk
SXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5h
bWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9y
PFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIGludDY0
X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgaW50NjRfdCBzZXRCdWZmZXJG
b3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0Q29sb3IoY29u
c3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0U3Ry
aW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IDExMDli
MzE2YmQ3NjU1MDZiMzYyOWZjMGI3ZTgwODYxN2FmODU0ODcuLjM5ODY4NTlmNzMzOGUyODQ1N2Vk
NGIxOTBjYmE2NzA1MjIxMDAyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAg
LTEwOSw3ICsxMDksNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVj
dG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFBsYXRmb3JtUGFz
dGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlwZXModHlwZXMpOwogfQogCi1SZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYnVm
ZmVyRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSk7CiB9CkBAIC0xNTQsNyArMTU0LDcgQEAgaW50NjRf
dCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIGMKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKS5zZXRUeXBlcyhwYXN0ZWJvYXJkVHlwZXMpOwogfQogCi1pbnQ2NF90IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChw
YXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIsIHBhc3RlYm9hcmRUeXBlKTsK
IH0KQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0
ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLAogICAgIHJldHVy
biBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CiB9CiAKLVJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikK
IHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkQnVm
ZmVyKGluZGV4LCB0eXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCBjNTMxYjFkZGRkM2JlOGU1NmVkNmQ1ZDdjN2ZhNmI3
ZGFhNmNjM2EzLi44M2U4NTkxNDM0NWVhN2NiODQxZDk5ZmQxZmI2NjZkOGNjZjAzMDI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBA
IC00NjAsNyArNDYwLDcgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKE5TRGF0YSAqKWRhdGEKIHsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Q
cml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRy
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1By
aXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1h
aW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIG1haW5SZXNv
dXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRl
eCA1YjEwZDNmZjc1NjcwMTE1MTM4ZjRkNDMxNzI5N2NkY2ExZWM5NWQ3Li4yOGQ4NzU5MjljY2Fj
ZGI5YTEzODhhODI2YjJmZDVlY2Y0NmVjY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM1NDAsNyArMzU0MCw3IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8TlNNZW51SXRlbT4gY3JlYXRlU2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3JlOjpI
aXRUZXN0UmVzdWx0JiBoCiAgICAgfQogCiAgICAgaWYgKGF1dG8qIGltYWdlID0gaGl0VGVzdFJl
c3VsdC5pbWFnZSgpKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQorICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCkpCiAgICAgICAgICAg
ICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIGxl
bmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCBhMDExYjI3NjI3Mzg5NjE4
ZWQ1YzBjODMyOWUyOTdiMWQxNzlkY2I3Li5hYWRjZmJmZWEzNTZiMzdiMGY1Mzc4YWZhODk4Yjhl
YTk5YWU2YTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVz
b3VyY2UubW0KQEAgLTM2Nyw3ICszNjcsNyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdWYWx1ZQog
ICAgIGlmICghZW5jb2RpbmcuaXNWYWxpZCgpKQogICAgICAgICBlbmNvZGluZyA9IFdpbmRvd3NM
YXRpbjFFbmNvZGluZygpOwogICAgIAotICAgIFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJp
dmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51
bGxwdHI7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+
Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7
CiAgICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
Pihjb3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRy
KSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCmluZGV4IDVkZjIxNzBkMmE0YmZjNGE0ODBjZjQ1YTg0
ZDIzZDczMDU5MzVmYzEuLjM2MGFlZGNlYWNjYjFmYmRkMWQ0NGFkNDJkOGMwNGM2ZjA0YjYxOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzEsNyArMzEs
NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gTWVtb3J5U3RyZWFtIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1NZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCitNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwpAQCAtNDQsNyArNDQsNyBAQCBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJl
YW0oKQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIik7CiB9CiAK
LUNPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorQ09NUHRyPE1lbW9yeVN0cmVhbT4g
TWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKIHsKICAgICByZXR1cm4gbmV3IE1lbW9yeVN0cmVhbShXVEZNb3ZlKGJ1ZmZlcikpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAppbmRleCAwNzg2MGExNWFiNGEzZGIx
MTljOTExM2ZhZmM5YzEyNGIxYzE0NmRkLi4yYmE3ZGE5MGE1YzYyMTI5MDA4ZGY2MTI5NzMwYWNk
YjliZDQ1M2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJl
YW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaApAQCAtMzUs
NyArMzUsNyBAQAogY2xhc3MgTWVtb3J5U3RyZWFtIGZpbmFsIDogcHVibGljIElTdHJlYW0KIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2Uo
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBD
T01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKTsKIAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRy
XyB2b2lkKiogcHB2T2JqZWN0KTsKQEAgLTc1LDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENsb25lKF9DT01fT3V0cHRyXyBJU3RyZWFt
KiogcHBzdG0pOwogCiBwcml2YXRlOgotICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CisgICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYpOwogICAgIH5NZW1vcnlTdHJlYW0oKTsKIAotICAgIFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICBzaXplX3QgbV9wb3MgeyAwIH07
CiAgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkFyY2hpdmUuY3BwCmluZGV4IGM1ZGU5MGM4MTBmMWFmNTQwNWMyOWRjNDg2NmFkZmZjMzY5OTlh
YTguLjAxODRiZWY4YzczNThkYmZiYTFiZTlmZTFhODdlNTc5MzgxNzYyYTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgSFJFU1VMVCBX
ZWJBcmNoaXZlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBp
ZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIGF1dG8gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdl
dCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOworICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRh
dGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CiAKICAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpj
cmVhdGVJbnN0YW5jZShXVEZNb3ZlKGJ1ZmZlcikpLmNvcHlSZWZUbyhzdHJlYW0pOwogI2Vsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGU5YTEzNmY2YmI0MmVjOGFiN2Y1MGEzYWIzMzMzM2Zi
M2YyMDIzZmQuLjIxMTU5OGQzOWE2YWYzNjFjYzJlNDA2NzkwNmUyYjg2ODU3ZWVmYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50
Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlCiB7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiA+JikK
K3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+ID4mKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDJhYWFmY2RkZTQyNDhmNDE1YjFhODM3M2JjMDM2
NTEyMzI5ZjhjMGYuLmMxNjdjYTI5MjIzZWVhOTllNTI4YThlYTYxMjhjMWUxZTY5ZWUzZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRF
bmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7
CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5h
bDsKIAogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5h
bCB7IH0KICAgICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDZkYzRhNDg1MmExNGQ5MTQ0M2U1MzE5YTUw
N2MxOTY4NzJhZmIxNDkuLjU1OGUxM2M3ZjFmZGFhNWIxMjVkMjBiZWZlNzkxYTI3ZmY3NTcxMmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU1OSw3ICs1NTksNyBAQCBI
UkVTVUxUIFdlYkZyYW1lOjpsb2FkUmVxdWVzdChfSW5fb3B0XyBJV2ViVVJMUmVxdWVzdCogcmVx
dWVzdCkKICAgICByZXR1cm4gU19PSzsKIH0KIAotdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRF
bmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKQordm9pZCBXZWJGcmFt
ZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
QlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIg
ZmFpbGluZ1VSTCkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5c1N0
cmluZ0xlbihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5cGUpCkBAIC01OTIsNyArNTkyLDcg
QEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0lu
XyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIKICAgICAgICAgaWYgKCFzdGF0LmNiU2l6ZS5IaWdo
UGFydCAmJiBzdGF0LmNiU2l6ZS5Mb3dQYXJ0KSB7CiAgICAgICAgICAgICBWZWN0b3I8Y2hhcj4g
ZGF0YUJ1ZmZlcihzdGF0LmNiU2l6ZS5Mb3dQYXJ0KTsKICAgICAgICAgICAgIFVMT05HIHJlYWQ7
Ci0gICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQg
YmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0aGUgU2hhcmVkQnVmZmVyCisgICAgICAgICAg
ICAvLyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRv
IHJlYWQgcmlnaHQgaW50byB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgogICAgICAgICAgICAg
Ly8gb3IgYWRvcHQgdGhlIFZlY3RvciBvciBzb21ldGhpbmcuCiAgICAgICAgICAgICBpZiAoU1VD
Q0VFREVEKGRhdGEtPlJlYWQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PFVMT05HPihk
YXRhQnVmZmVyLnNpemUoKSksICZyZWFkKSkpCiAgICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVy
LmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNp
emUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKaW5kZXggNDM2MDU0ZmQ5ZGRiNDdj
YTMyOTZiMTE3OTgxNDM0ZWMxODk3ZGFkMS4uZmE5YzM4MWNjNTczYmE2YjIwOTg4ZWFiMzUwOGVk
OWEzMGE4ZjEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCkBAIC01MCw3ICs1MCw3
IEBAIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBQ
YWdlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpT
Q29udGV4dCogSlNDb250ZXh0UmVmOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHByaXZhdGU6CiAgICAg
fldlYkZyYW1lKCk7CiAKICAgICB2b2lkIGxvYWRIVE1MU3RyaW5nKF9Jbl8gQlNUUiBzdHJpbmcs
IF9Jbl8gQlNUUiBiYXNlVVJMLCBfSW5fIEJTVFIgdW5yZWFjaGFibGVVUkwpOwotICAgIHZvaWQg
bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgQlNUUiBtaW1lVHlwZSwgQlNU
UiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7CisgICAg
dm9pZCBsb2FkRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgQlNU
UiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFp
bGluZ1VSTCk7CiAgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBjb21wdXRlUGFn
ZVJlY3RzKEhEQyBwcmludERDKTsKICAgICB2b2lkIHNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgcGFnZVNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYgb3JpZ2luYWxQYWdlU2l6ZSwgZmxvYXQgbWF4aW11bVNocmlua1JhdGlvLCBXZWJDb3Jl
OjpBZGp1c3RWaWV3U2l6ZU9yTm90KTsKICAgICB2b2lkIGhlYWRlckFuZEZvb3RlckhlaWdodHMo
ZmxvYXQqLCBmbG9hdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
S2l0RExMLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAKaW5kZXgg
OTYyMDE5OGI0YjU0MGFlNmY3OTY3ZjgyMzNjOTQ2NGJkMjc3NTg1MS4uMjc0YjdkMmQ2Y2YyZWI0
NzFkN2I4Yjg5NjU5YWU0NjljZjkzNGM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0RExMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRE
TEwuY3BwCkBAIC0xNjUsOCArMTY1LDggQEAgdm9pZCBzaHV0RG93bldlYktpdCgpCiB9CiAKIC8v
RklYTUU6IFdlIHNob3VsZCBjb25zaWRlciBtb3ZpbmcgdGhpcyB0byBhIG5ldyBmaWxlIGZvciBj
cm9zcy1wcm9qZWN0IGZ1bmN0aW9uYWxpdHkKLVdFQktJVF9BUEkgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKTsKLVJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3Qg
Y2hhciogbmFtZSkKK1dFQktJVF9BUEkgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSk7CitSZWZQdHI8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihj
b25zdCBjaGFyKiBuYW1lKQogewogICAgIGludCBpZHI7CiAgICAgLy8gdGVtcG9yYXJ5IGhhY2sg
dG8gZ2V0IHJlc291cmNlIGlkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAK
aW5kZXggMmZmY2I4OTk5YjE4NDQ4Y2Q2MjQ4ZjliZmNmMTVhYTUxN2NhZWJkNi4uOTQzZmE3YWI0
NWM4YjBkMzVkNjdhMzBjMGZkYWI0MzQ5YTNlNjRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBXZWJSZXNvdXJjZTo6fldlYlJlc291
cmNlKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7CiB9CiAK
LVdlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCitXZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3Rh
bmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQ09NUHRyPE1lbW9yeVN0cmVhbT4g
bWVtb3J5U3RyZWFtID0gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGRhdGEp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKaW5kZXggOTRhYjM1YzU2MDgx
MDExN2M4OTVlNGExMGMzOTFiY2NhMzM3ZDE4ZS4uYjZlYjg2ZmNjYTVlMzEzNjljOWU4YjA2NTQx
OGYyNzk0OTI5OTkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVz
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCkBAIC0z
Niw3ICszNiw3IEBACiAKIGNsYXNzIFdlYlJlc291cmNlIGZpbmFsIDogcHVibGljIElXZWJSZXNv
dXJjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFu
Y2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpOwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRw
dHJfIHZvaWQqKiBwcHZPYmplY3QpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDNhOWVmYWE5ZjcyNDIzNTE0MDdiMmFiODczMTE4ODJhZmM3Y2Rm
OGMuLmVhMTA2MGFiMGJmMmVhMjgyNTI0NmM0MzlhYmFlOTBlYzc2YjI1MGIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAor
MjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAg
IFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2
MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNo
YXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAg
ICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVj
dCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0Lmg6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHA6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNwcDoKKwogMjAyMS0xMS0y
OCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGNsYXNzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Zp
bGVTeXN0ZW0uY3BwCmluZGV4IDg1ODNiMjlhZDk5MGMyMmI0NzJjODY5ZWNjZDg2ODI5NjIxYmIw
YjQuLmI4NDdkM2E4MjZiM2Q5ZmZjMDhmNmYzYmUzODI2MGE2YzU5ZGZmMmEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC00NCw3ICs0NCw3IEBA
IHN0YXRpYyB2b2lkIGNyZWF0ZVRlc3RGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBGaWxl
U3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiB9OwogCi0vLyBGSVhNRTogUmVmYWN0b3Ig
RmlsZVN5c3RlbVRlc3QgYW5kIFNoYXJlZEJ1ZmZlclRlc3QgYXMgYSBzaW5nbGUgY2xhc3MuCisv
LyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgogY2xhc3MgRmlsZVN5c3RlbVRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0
cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0
cy5jcHAKaW5kZXggZDIzZjdlMWU3MjllMDU1NDUzYWMxZjA1M2EyMzQ1MzAyOTVjYjIwNS4uZWEy
YWUyYzdlOGIzMDg1MjA1YjNkM2M5NzQzMGVmYWVjZWJiOWI0ZSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcApAQCAt
MTk5LDcgKzE5OSw3IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgSXRlbUJ1ZmZlckNsaWVudCkK
ICAgICAgICAgICAgIHJldHVybiB7IGdsb2JhbEJ1ZmZlcklkZW50aWZpZXIsIGdsb2JhbEl0ZW1C
dWZmZXIsIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSB9OwogICAgICAgICB9CiAKLSAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlz
dEl0ZW0mIGRpc3BsYXlMaXN0SXRlbSkgY29uc3QgZmluYWwKKyAgICAgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJ
dGVtJiBkaXNwbGF5TGlzdEl0ZW0pIGNvbnN0IGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAg
IGF1dG8gaW5kZXggPSBtX2l0ZW1zLnNpemUoKTsKICAgICAgICAgICAgIG1faXRlbXMuYXBwZW5k
KHN0ZDo6Z2V0PFN0cm9rZVBhdGg+KGRpc3BsYXlMaXN0SXRlbSkpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCBjNjliMTYx
NmMwY2FkYTUzMjRkNzJkYjczMjEyZGZjZWZiYTVkZTM5Li5hMDYzMGJhNjc1YmY4ZTUyYzQ0MGM5
ZDE5MjIwNzIyODkwZmJkYzFmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtNDEsNTAgKzQxLDUwIEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLVRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQorVEVTVF9GKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxl
KQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxl
IikpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxl
IikpOwogICAgIEFTU0VSVF9OVUxMKGJ1ZmZlcik7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKK1RFU1RfRihGcmFnbWVudGVk
U2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0g
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIp
OwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxlbihTaGFyZWRCdWZmZXJU
ZXN0Ojp0ZXN0RGF0YSgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBz
dHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKKyAgICBFWFBF
Q1RfVFJVRShTdHJpbmcoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09
IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
KTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhp
c3RpbmdFbXB0eUZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0
ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0
ZW1wRW1wdHlGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBF
WFBFQ1RfVFJVRShidWZmZXItPmlzRW1wdHkoKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQorVEVTVF9G
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50
c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBB
U1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3B5ID0g
YnVmZmVyLT5jb3B5KCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNvcHkg
PSBidWZmZXItPmNvcHkoKTsKICAgICBFWFBFQ1RfR1QoYnVmZmVyLT5zaXplKCksIDBVKTsKICAg
ICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBjb3B5LT5zaXplKCkpOwogICAgIEVYUEVD
VF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGFw
cGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKK1RFU1RfRihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09m
RXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NF
UlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAg
ICAgYnVpbGRlci5hcHBlbmQoKmJ1ZmZlcik7CiAgICAgYnVpbGRlci5hcHBlbmQoImEiLCAxKTsK
LSAgICBFWFBFQ1RfVFJVRShidWlsZGVyLnNpemUoKSA9PSAoc3RybGVuKFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRlci5n
ZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1Rf
RVEoJ2EnLCBidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVuKFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5z
aXplKCkgPT0gKHN0cmxlbihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkg
KyAxKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBz
dHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7CisgICAgRVhQ
RUNUX0VRKCdhJywgYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxl
bihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKIH0KIAotVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQorVEVTVF9GKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKIHsKICAgICBjaGFyIHRl
c3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBjaGFyIHRlc3REYXRhMVtdID0gIldvcmxkIjsKQEAg
LTk4LDcgKzk4LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVm
ZmVyKQogICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRDb25jYXRlbmF0aW9uLCBhcnJh
eUJ1ZmZlci0+ZGF0YSgpLCBzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSkpOwogfQogCi1U
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRz
KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZl
ckxhcmdlU2VnbWVudHMpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjAoMHg0MDAwLCAn
YScpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKQEAgLTEyNCw3
ICsxMjQsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJM
YXJnZVNlZ21lbnRzKQogICAgIH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkp
CitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiB7CiAgICAgY2hhciB0
ZXN0RGF0YVtdID0gIkhhYml0YXNzZSBpbnRlZ2VyIGVyb3MgdGluY2lkdW50IGEgc2NlbGVyaXNx
dWUhIEVuaW0gZWxpdD8gU2NlbGVyaXNxdWUgbWFnbmlzLCIKICAgICAiZXQgbW9udGVzIHVsdHJp
Y2VzIHRyaXN0aXF1ZSBhISBQaWQuIFZlbGl0IHR1cnBpcywgZGFwaWJ1cyBpbnRlZ2VyIHJob25j
dXMgc29jaWlzIGFtZXQgZmFjaWxpc2lzLCIKQEAgLTE1MCw3ICsxNTAsNyBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgY29weSkKICAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0
aCk7CiAgICAgLy8gc2hhcmVkQnVmZmVyIG11c3QgY29udGFpbiBkYXRhIG1vcmUgdGhhbiBzZWdt
ZW50U2l6ZSAoPSAweDEwMDApIHRvIGNoZWNrIGNvcHkoKS4KICAgICBFWFBFQ1RfRVEobGVuZ3Ro
ICogNCwgYnVpbGRlcjEuc2l6ZSgpKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9
IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY2xv
bmUgPSBidWlsZGVyMS5jb3B5KCk7CiAgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5z
aXplKCkpOwogICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYnVpbGRlcjEuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUt
PnNpemUoKSkpOwogCkBAIC0xNjYsNyArMTY2LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGNvcHkpCiAgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAotVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
clRlc3QsIGJ1aWxkZXIpCiB7CiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CiAgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTAp
KTsKQEAgLTE3Niw3ICsxNzYsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYnVpbGRlcikK
ICAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIxLnRha2UoKTsKICAgICBFWFBFQ1RfVFJVRShidWls
ZGVyMS5pc051bGwoKSk7CiAgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNFbXB0eSgpKTsKLSAg
ICBFWFBFQ1RfTkUoY29weS5wdHIoKSwgYnVmZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZmZXJl
bnQgU2hhcmVkQnVmZmVyCisgICAgRVhQRUNUX05FKGNvcHkucHRyKCksIGJ1ZmZlci5wdHIoKSk7
IC8vIFdlIGhhdmUgZGlmZmVyZW50IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIKICAgICBFWFBFQ1Rf
RVEoY29weS5nZXQoKSwgYnVmZmVyLmdldCgpKTsgLy8gQnV0IHRoZWlyIGNvbnRlbnQgaXMgaWRl
bnRpY2FsCiAKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIyOwpAQCAtMjAyLDcgKzIw
Miw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6
ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhcioKICAgICAgICAgRVhQRUNUX0VRKGJ1ZmZlcltp
XSwgZXhwZWN0ZWRbaV0pOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURh
dGEpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewog
ICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsgJ2EnLCAnYicsICdjJywgJ2QnIH07CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHMyID0geyAnZScsICdmJywgJ2cnLCAnaCcgfTsKQEAgLTIzNyw3ICsyMzcs
NyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiAgICAgY2hlY2tCdWZm
ZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgaXNFcXVhbFRvKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFs
VG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+
JiYgY29udGVudHMpIHsKICAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwpAQCAt
MjU4LDcgKzI1OCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiAgICAg
RVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVm
ZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5nZXQoKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCB0b0hleFN0cmluZykKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwg
dG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4NSwgMHgx
Mn07CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwpAQCAtMjcxLDExICsyNzEsMTEg
QEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQogICAgIEVYUEVDVF9FUShi
dWZmZXItPnRvSGV4U3RyaW5nKCksICIiKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IHJlYWQpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiB7CiAgICAg
Y29uc3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3QuIjsK
IAotICAgIGF1dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgeworICAg
IGF1dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsK
ICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSBzaGFyZWRCdWZmZXIucmVhZCg0LCAzKTsK
ICAgICAgICAgRVhQRUNUX0VRKGRhdGEuc2l6ZSgpLCAzdSk7CiAgICAgICAgIEVYUEVDVF9FUShT
dHJpbmcoZGF0YS5kYXRhKCksIDMpLCAiIGlzIik7CkBAIC0zMDYsNyArMzA2LDcgQEAgVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgc2l6ZV90IE4g
PgogY29uc3RleHByIHNpemVfdCBhcnJheXNpemUoIGNvbnN0IFQgKCYpW05dICkgeyByZXR1cm4g
TjsgfQogCi1zdGF0aWMgdm9pZCByZWFkQWxsQ2h1bmtzKHN0ZDo6dmVjdG9yPFN0cmluZz4qIGNo
dW5rcywgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yID0gIlxy
XG4iLCBib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSkKK3N0YXRpYyB2b2lkIHJlYWRBbGxD
aHVua3Moc3RkOjp2ZWN0b3I8U3RyaW5nPiogY2h1bmtzLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yID0gIlxyXG4iLCBib29sIGluY2x1ZGVT
ZXBhcmF0b3IgPSBmYWxzZSkKIHsKICAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlciBjaHVua1Jl
YWRlcigmYnVmZmVyLCBzZXBhcmF0b3IudXRmOCgpLmRhdGEoKSk7CiAgICAgU3RyaW5nIGNodW5r
ID0gY2h1bmtSZWFkZXIubmV4dENodW5rQXNVVEY4U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKGlu
Y2x1ZGVTZXBhcmF0b3IpOwpAQCAtMzM5LDcgKzMzOSw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrRGF0
YUluUmFuZ2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBzaXplX3Qgc3RhcnQsIHNpemVf
dCBsCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGluY2x1ZGVTZXBhcmF0
b3IpCiB7Ci0gICAgYXV0byBjaGVjayA9IFtdKFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7
CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZl
cikgewogICAgICAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlciBjaHVua1JlYWRlcigmc2hhcmVk
QnVmZmVyLCAiXHgxMFx4MTFceDEyIik7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBvdXQ7CiAg
ICAgICAgIEVYUEVDVF9UUlVFKGNodW5rUmVhZGVyLm5leHRDaHVuayhvdXQpKTsKQEAgLTM3MCw3
ICszNzAsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkK
IHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgYSBzaW1wbGUg
dGVzdC4iOwogCi0gICAgYXV0byBjaGVjayA9IFtdKFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVy
KSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1
ZmZlcikgewogICAgICAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlciBjaHVua1JlYWRlcigmc2hh
cmVkQnVmZmVyLCAiaXMiKTsKIAogICAgICAgICBTdHJpbmcgY2h1bmsgPSBjaHVua1JlYWRlci5u
ZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soKTsKQEAgLTQxNiw3ICs0MTYs
NyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKIFRFU1Rf
RihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVu
dCkKIHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgdGhlIG1v
c3QgcmlkaWN1bG91cyBoaXN0b3J5IHRoZXJlIGlzLiI7Ci0gICAgYXV0byBjaGVjayA9IFtdKFNo
YXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBzdGQ6OnZlY3RvcjxTdHJp
bmc+IGNodW5rczsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3MxV2l0
aG91dFNlcGFyYXRvcltdID0geyAiVGgiLCAicyAiLCAicyB0aGUgbW9zdCByIiwgImQiLCAiY3Vs
b3VzIGgiLCAic3RvcnkgdGhlcmUgIiwgInMuIiB9OwogICAgICAgICByZWFkQWxsQ2h1bmtzKCZj
aHVua3MsIHNoYXJlZEJ1ZmZlciwgImkiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcAppbmRleCA5YjhiMTNhNzVkNTJm
Zjk1MWVhZDE4MTg1ZDU2YzM3OTFiMmQ3YmVkLi5kMDM0MWE4MWRlZGE3MTlmMzVmY2NlMzk0NjU1
ZWMyNTVhYjhmYmI2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKIAotdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCit2b2lk
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCiB7CiAgICAgV1RGOjppbml0aWFs
aXplTWFpblRocmVhZCgpOwogCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyVGVz
dDo6U2V0VXAoKQogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogfQogCi12b2lk
IFNoYXJlZEJ1ZmZlclRlc3Q6OlRlYXJEb3duKCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
clRlc3Q6OlRlYXJEb3duKCkKIHsKICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZp
bGVQYXRoKTsKICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEVtcHR5RmlsZVBhdGgp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1
ZmZlclRlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZm
ZXJUZXN0LmgKaW5kZXggNjQwMTE5YmRlNmZjZTQxZjAxZWFhYjYzMTY4NDdiZTU2YjkwY2Y1Yy4u
YTM5MmEwNTE5NDc1NmQyYWQ1NmU4MjQ5MjllY2U0YzE1ZjNhZDA1NSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oCkBAIC0y
OSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotY2xhc3MgU2hhcmVk
QnVmZmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIHZvaWQg
U2V0VXAoKSBvdmVycmlkZTsKICAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0
c0NHLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlz
dFRlc3RzQ0cuY3BwCmluZGV4IDdhMzIwN2Y5NWM2MjdmZTY2MjljOTI3NzQ0YjRlZjAzZTVlMmVj
M2QuLjg1ODI4ZjAzOTIyNDVmNGE5OWI3NjA2YjVmNGFjNWVjMzRkY2VlNWIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlz
dFRlc3RzQ0cuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IHsgZ2xvYmFsQnVmZmVySWRlbnRpZmllciwgZ2xvYmFsSXRlbUJ1ZmZlciwgZ2xvYmFsSXRlbUJ1
ZmZlckNhcGFjaXR5IH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2Rl
SXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdCBmaW5hbAorICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERp
c3BsYXlMaXN0SXRlbSYpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQppbmRleCA4YmZiODVlYzYxZDMw
MTc1OTNkYzBiM2QzN2Q2ZDdiNmQ5OTMyNzc3Li5jM2I1ZDNlOGQ3YzAzYjFhMzY1ZGQ1MzVhMGIy
OWFkZTI3YWNlY2E4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIHZv
aWQgZXhwZWN0RGF0YUFycmF5c0VxdWFsKE5TQXJyYXk8TlNEYXRhICo+ICpleHBlY3RlZCwgTlNB
cnJheTxOU0RhdGEgKj4KICAgICB9CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVh
dGVOU0RhdGFBcnJheSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRl
TlNEYXRhQXJyYXkpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgYnVpbGRlcjsKQEAgLTYzLDExICs2MywxMSBAQCBURVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVh
bChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRl
TlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3
b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3Js
ZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAotICAgICAgICBleHBlY3REYXRh
QXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0
aCgpXSBdLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgZXhw
ZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1w
RmlsZVBhdGgoKV0gXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVt
cEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICB9CiB9CiAKLVRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKK1RFU1Rf
RihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQp
CiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
YnVpbGRlcjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3Jl
U3R1YnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAK
aW5kZXggNDZjNzYyMDNlMWIyNWFhYWI3YTAyZTBiYjJiZjVlMGM0MzZlZDY4Ny4uNWJlNjY1OTQ2
MTM3MzFlMjFlZDk3ZGE3NGM1NzM4YzdjYTI4NWJmNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUg
PFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciopCitSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKikK
IHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
Q2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODkyMzkyZDg3Zjc0
MDBlYmZhOThmNWE4NjUzYzlmZDRlMjc1NWY1OS4uNzA4MGE2Y2Y3YTZkMjIwMGFlMzAzYzIyY2U3
MzExOTEwZGRhYTFmMiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMi0w
MiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1
aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBn
dWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogRGVjb2RlclRlc3QvRGVjb2RlclRlc3QvbWFpbi5tbToK
KyAgICAgICAgKG1haW4pOgorCiAyMDIxLTExLTIxICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5A
aWdhbGlhLmNvbT4KIAogICAgICAgICBbUGVyZm9ybWFuY2UgdGVzdF1bY3NzLWNvbnRhaW5dIEFk
ZCBjYXNlIHRvIHRlc3QgY29udGFpbjogbGF5b3V0IGluc2lkZSBhIGNvbXBsZXggZG9jdW1lbnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446135</attachid>
            <date>2021-12-07 01:23:51 -0800</date>
            <delta_ts>2021-12-09 05:36:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233677-20211207202347.patch</filename>
            <type>text/plain</type>
            <size>733633</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YTJiZTEzOTE2MjhmNTNiNmQ2ZDIyZTEzY2E3ZmIyYmRkMjA1ZWYzLi5kMTcyNDIwMTVhOGI5Zjc3
ZTRmZWM3M2Y1YjMwMzdhZThkMDkxODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8v
cHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBi
ZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0FycmF5QnVmZmVyLmg6CisKIDIwMjEtMTItMDMgIEtlaXRoIE1pbGxlciAgPGtlaXRo
X21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFN0cnVjdHVyZUlEQmxvYgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDhiMjRhODFiN2MzYzMzYzJmNDJmNDkyYWUxMjJjNDQzZmZmOWRiNGIuLjllYmE1
YzQxNDIzNTg3ZjFhNGQ0MzgzMjc1N2M1MGRiNmRkNzliODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzNDUgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBh
bmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0
dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAgIFJlbmFt
ZSBvbmx5LCBubyBjaGFuZ2UgaW4gYmVoYXZpb3VyLgorCisgICAgICAgICogTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmg6CisgICAgICAgICogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZS5oOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9h
cmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9t
YWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9D
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmg6CisgICAgICAgICog
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oOgorICAgICAgICAq
IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleXMuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlzLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAg
ICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHA6CisgICAgICAg
ICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmg6CisgICAgICAgICog
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHA6CisgICAgICAgICogTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9u
L01lZGlhTWV0YWRhdGEuY3BwOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNl
QnVmZmVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5o
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNv
dXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcDoKKyAgICAgICAgKiBj
c3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgICogZWRpdGluZy9FZGl0b3Iu
aDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oOgorICAgICAg
ICAqIGVkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oOgorICAgICAgICAqIGVkaXRpbmcvV2ViQ29y
ZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvcmVQYXN0
ZWJvYXJkRmlsZVJlYWRlci5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2Eu
bW06CisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAq
IGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAqIGVkaXRp
bmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKiBmaWxlYXBp
L05ldHdvcmtTZW5kUXVldWUuY3BwOgorICAgICAgICAqIGZpbGVhcGkvTmV0d29ya1NlbmRRdWV1
ZS5oOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAq
IGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRh
Y2htZW50RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9JbWFnZURv
Y3VtZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgICogaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UGFnZUFnZW50Lmg6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAg
ICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAg
ICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvTG9hZGVyU3RyYXRlZ3ku
aDoKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAg
ICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9S
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmg6CisgICAgICAg
ICogbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3Rvcnku
Y3BwOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5Lmg6CisgICAgICAg
ICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZl
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaDoKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgICog
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0Lmg6CisgICAgICAg
ICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oOgorICAgICAgICAqIGxvYWRl
ci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAgICAgICogbG9hZGVyL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLm1tOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogcGFn
ZS9QYWdlLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAg
KiBwYWdlL1BhZ2VTZXJpYWxpemVyLmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAg
ICAgICAgKiBwYWdlL1NoYXJlRGF0YVJlYWRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vS2V5
ZWRDb2RpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJk
V3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50Lmg6
CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
U3RhdGljUGFzdGVib2FyZC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vU3RhdGljUGFzdGVib2Fy
ZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmg6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50
RmlsdGVyLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0Nv
bnRlbnRGaWx0ZXIubW06CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29h
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1Qcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVV0aWxpdGllcy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRp
bGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJH
ZW5lcmljLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVy
aWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dP
RkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZv
cm1hdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRm
b3JtRGF0YUNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNs
ZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1U
aHVuZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NE
TVRodW5kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRm
b3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlRGVjb2RlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFk
ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdl
UmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
RGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUElt
YWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZVJlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0lt
YWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVy
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURl
Y29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0
Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdENsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL3Bv
c2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6
CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgICogdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5oOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIu
Y3BwOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiB3
b3JrZXJzL1NjcmlwdEJ1ZmZlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJGZXRjaC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRT
dG9yYWdlLmNwcDoKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAg
ICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKwogMjAyMS0x
MS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBT
aGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFiZjA1NTc5OWRhNTMxM2IwYjIx
YTgwZmI3MzVkMjlhMGY3YjYwZTMuLmZmMzVlNWFjZDcxOThhMjkzYzE4OGQ4MzNlZDBiNmJmN2Uw
MTc5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ1IEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBj
bGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVk
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAg
ICB0eXBlcy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVBy
b3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJv
eHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lmg6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHA6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5Lmg6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL1No
YXJlZE1lbW9yeS5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5jcHA6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmg6CisgICAgICAg
ICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJIaXRUZXN0UmVzdWx0
RGF0YS5jcHA6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6Cisg
ICAgICAgICogU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVu
dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1t
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGsz
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2UuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkYuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRv
ckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUlu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXIubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJh
Z0NsaWVudE1hYy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW06CisgICAgICAgICogV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHA6
CisKIDIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRl
eCBkNzc2ZTgyZGYxMzJjYWY2NTI3OTNhNzlhMDA4M2FkNjU1OWRjMjY1Li4zNzc3ZjJhNTZiYzhl
NjA0ZTk0NTFlOGJkMTJlMjViNDNhMzUxNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9w
cm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIg
YW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJl
dHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaDoKKwogMjAyMS0xMS0xMiAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBzb3J0LVhjb2RlLXByb2plY3QtZmlsZSBp
ZGVtcG90ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZjgwOGU5MDVhYmQ1MDJi
OWUyOTAzOTYyYzE0N2Y1OWQ3OWJkM2RmMi4uNWY2MTAyMTk2YTJjOTBjYjliNDE1ZGQ1ODAzODk4
NjNiMTA0NWU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBA
CisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1
OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAg
ICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZs
ZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5t
bToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1tOgorCiAyMDIxLTExLTI1ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29u
dGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRl
ZSBpbW11dGFiaWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBlOGE2ZmIxMjM1
ZjE3OTNiN2ExNDUyZDQyMjZmMjgzNzhlYjAzNzBiLi44OWQzNDg4NjQ2MzJhODJkMmVkMDM4ZDE0
OTdjZDgyYWIzNWU3ZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjYgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2Js
ZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQK
KyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVy
IHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAgICogTWVtb3J5
U3RyZWFtLmNwcDoKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJBcmNo
aXZlLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YkZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorICAgICAgICAqIFdlYktpdERMTC5j
cHA6CisgICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAgICAgICAqIFdlYlJlc291cmNlLmg6
CisKIDIwMjEtMTItMDEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggZWFjY2EyYzIzM2E4YTY5MzcxNTkwODA3ZGZk
MzY3NWIwNjE1OTQyOC4uYjQ2OTNmOTFjNjA3ZDhkMDc0NTk0NjQ2ZThkYzQzNzJlOWJjOTllNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCkBAIC0xMjks
NyArMTI5LDcgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8
QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3Vy
Y2UsIHNpemVfdCBieXRlTGVuZ3RoKTsKIAotICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENs
YW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlD
cmVhdGVBcnJheUJ1ZmZlci4KKyAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJy
YXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRy
eUNyZWF0ZUFycmF5QnVmZmVyLgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJy
YXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8
QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAK
aW5kZXggMzM1NGI1MmE1MGNiYjE4OWZkZmFlYjdkODI0ODNiZTBjNDFjM2Q0ZS4uZGEzMzZlNmY1
YjE2OTRlMzc0NzY5MGM0M2QyYjUzZjM1MThjMDlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVh
ZGVyLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhUExB
VEZPUk0oQ09DT0EpCiAKLXZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgQ2xp
cGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCmluZGV4IDJiNjI2Mjg0MTliMDljYmI2OTU1
MjE1YjBkNWQ3ZDczYzBiMzc0NGQuLjZlMjIwNDhjZjVmZWE5YWE2MmRhZGY0NWIxZjM1YzRjZTBk
N2Q2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEltYWdlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaApAQCAtMzEsNyArMzEsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBDbGlwYm9hcmRJbWFnZVJl
YWRlciA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICBDbGlwYm9hcmRJbWFnZVJlYWRlcihE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBAIC00Nyw3ICs0Nyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmluYWwg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgYm9vbCBzaG91bGRSZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogICAg
IFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggMmIx
NjBhMDc4MDRhMTMyNzhkNmRiMWZmODNjODA4MjFkOTBiZDhjZC4uZWZmMTBiNWI2NWZkODFhZDli
YTMyZjgwYjNmMmNmMmY4ZTk4ZjFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTIxNiw4ICsyMTYsOCBAQCB2b2lkIENsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2U6Omludm9rZUNvbXBsZXRpb25IYW5kbGVyKCkKICAgICAgICAg
YXV0byYgZGF0YSA9IGl0ZW1UeXBlTG9hZGVyLT5kYXRhKCk7CiAgICAgICAgIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYgISFzdGQ6OmdldDxTdHJpbmc+KGRhdGEp
KQogICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZVN0cmluZyh0eXBlLCBzdGQ6OmdldDxTdHJp
bmc+KGRhdGEpKTsKLSAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
U2hhcmVkQnVmZmVyPj4oZGF0YSkpCi0gICAgICAgICAgICBjdXN0b21EYXRhLndyaXRlRGF0YSh0
eXBlLCBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkuY29weVJlZigpKTsKKyAgICAg
ICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+KGRhdGEpKQorICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwgc3Rk
OjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihkYXRhKS5jb3B5UmVmKCkpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNjUsOCArMjY1LDggQEAgdm9pZCBDbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVE
YXRhSWZOZWUKIHsKICAgICBpZiAobV90eXBlID09ICJ0ZXh0L2h0bWwiX3MpIHsKICAgICAgICAg
U3RyaW5nIG1hcmt1cFRvU2FuaXRpemU7Ci0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7Ci0gICAgICAgICAgICBhdXRvJiBidWZm
ZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKKyAgICAgICAgaWYgKHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihtX2RhdGEp
KSB7CisgICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+KG1fZGF0YSk7CiAgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3Ry
aW5nOjpmcm9tVVRGOChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5n
PihtX2RhdGEpKQogICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFN0cmlu
Zz4obV9kYXRhKTsKQEAgLTI3OCw5ICsyNzgsOSBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQog
ICAgIH0KIAogICAgIGlmIChtX3R5cGUgPT0gImltYWdlL3BuZyJfcykgewotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplOwotICAgICAgICBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkKLSAgICAgICAgICAgIGJ1
ZmZlclRvU2FuaXRpemUgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKS5wdHIo
KTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRp
emU7CisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4obV9kYXRhKSkKKyAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSBzdGQ6
OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkucHRyKCk7CiAgICAgICAg
IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpKQogICAgICAg
ICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHV0ZjhCdWZmZXIoc3RkOjpnZXQ8U3RyaW5nPihtX2Rh
dGEpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCmlu
ZGV4IDJjYzJjOGUxYTU0ZTE4ZDczNDk1YzUzMGNkNzdkNTRmOTlhNTI5YTcuLjM3YzgyNWUyMzVh
OGE4YjdlNDRlNDBmYjBjMmQ3NzI0NDA3YTc1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgRE9NUHJvbWlz
ZTsKIGNsYXNzIEZpbGVSZWFkZXJMb2FkZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsK
IGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlIDogcHVibGljIENsaXBib2FyZEl0ZW1EYXRhU291cmNlIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
aW52b2tlQ29tcGxldGlvbkhhbmRsZXIoKTsKIAotICAgIHVzaW5nIEJ1ZmZlck9yU3RyaW5nID0g
c3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIEJ1ZmZl
ck9yU3RyaW5nID0gc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PjsKICAgICBjbGFzcyBDbGlwYm9hcmRJdGVtVHlwZUxvYWRlciA6IHB1YmxpYyBGaWxlUmVh
ZGVyTG9hZGVyQ2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxDbGlwYm9hcmRJdGVtVHlwZUxvYWRl
cj4gewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFJlZjxDbGlwYm9hcmRJdGVtVHlwZUxv
YWRlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVy
SU9TLm1tCmluZGV4IDU4Y2U4MDlhZTY5ZTIwNGI3YzA5ZTU5YTgyMDZmNzZkMDI3YTA1NWYuLjI3
NGUwMzhkNDE4NzAxNjFlNGVlYjgwYzEyYWJiYTg3MWY5ZDRhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3Mv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9p
ZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYg
KG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKICAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0
TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVy
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBi
b2FyZEltYWdlUmVhZGVyTWFjLm1tCmluZGV4IGY0MTBhYWIxNTE3ZTM5MDg5MjZlOGVmNWU5Mjhm
M2M4Yzg0MzYwOWMuLjM4MjFiMDM3MTgwMjgyM2Q2OWE4MzBhMzEwZGEzNDcwOGQ2MzMwNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlw
Ym9hcmRJbWFnZVJlYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTMzLDcgKzMzLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpy
ZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKICAgICAgICAgYXV0
byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5k
ZXggOGJmZjgwNzA2ZTZlMTk5YTU0YzUzNzMwZmI2YzM3YzlmZjgzMjlmMi4uOWIzZjg0MDc0NWQx
YTA2OTg4M2EyMGMzYTY1Zjk5NzlmYjFhMjQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC01MCw3ICs1
MCw3IEBAIHVpbnQ2NF90IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNp
emUoY29uc3QgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvCiAgICAgdWludDY0X3QgcmVzdWx0ID0gMDsK
ICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURh
dGEpIHsKICAgICAgICAgcmVzdWx0ID0gZm9ybURhdGFTaXplKGZvcm1EYXRhKTsKLSAgICB9LCBb
Jl0gKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwg
WyZdIChjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIHJlc3VsdCA9
IGJ1ZmZlci0+c2l6ZSgpOwogICAgIH0sIFtdIChjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAg
ICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggZGIz
YzEzNjQ2OTQ5YjVjZjg0ZWY5MjMzNWVmMTQxMGFhNTQ5NjY4Ni4uZjA1YzIzMzA3YmM1YTBlNTgy
ZGRjZDg2MGQ1YmIxYTFiMzA5MzI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5jcHAKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVj
dG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgog
ICAgIH0KIH0KIAotdm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQordm9pZCBET01DYWNoZTo6cHV0V2l0aFJl
c3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hS
ZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRp
b25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCiB7CiAgICAgaWYgKHJl
c3BvbnNlQm9keS5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2Jq
ZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVsZWFzZUV4Y2VwdGlv
bigpXSgpIG11dGFibGUgewpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChS
ZXF1ZXN0SW5mbyYmIGluZm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9t
aXNlCiAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkK
ICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgp
KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9u
c2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9u
c2UpLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4geyBkYXRhLnRha2UoKS0+bWFrZUNv
bnRpZ3VvdXMoKSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRh
KFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB7IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpIH0pOwog
ICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuaAppbmRleCBjMzVjYzNjYmNlZGIzYjI1MTFiZjM1N2EzMWFmZTJkMjc0
MzhiZDRjLi4xMzk3NTRkMzBlNDAwNzg1NGE2NDRhNzQxMWEzYzgxN2NkOWQxZjkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2Jq
ZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hS
ZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYm
KTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRpb25P
cjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJik7CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFJldHJp
ZXZlUmVzcG9uc2VzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB1c2luZyBSZWNvcmRzQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFZlY3RvcjxET01DYWNoZUVu
Z2luZTo6UmVjb3JkPj4mJik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlRW5naW5lLmNwcAppbmRleCA0NzUwNGNiZWJkYWUwMzgxNjc1OWE4ZjY4ZThjMjQ2MmZk
ZjJhNWU1Li5jMGY4MDMyYjA0NTJjMzdlZTRjYWZiY2FmZDc5ZjA5ZDIxNDYzMzI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTMx
LDggKzEzMSw4IEBAIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNw
b25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29u
c3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJl
dHVybiBmb3JtRGF0YS0+aXNvbGF0ZWRDb3B5KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7Ci0gICAgICAgIHJl
dHVybiBidWZmZXIuY29weVJlZigpOyAvLyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11
dGFibGUgYW5kIGNhbiBiZSByZXR1cm5lZCBhcy1pcy4KKyAgICB9LCBbXShjb25zdCBSZWY8U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgeworICAgICAgICByZXR1cm4gYnVm
ZmVyLmNvcHlSZWYoKTsgLy8gU2hhcmVkQnVmZmVyIGFyZSBpbW11dGFibGUgYW5kIGNhbiBiZSBy
ZXR1cm5lZCBhcy1pcy4KICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3Bv
bnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsg
fTsKICAgICB9KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNl
Qm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNo
T24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9k
eSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS5jb3B5UmVmKCk7Ci0gICAgfSwgW10oY29uc3Qg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7Cisg
ICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5
IHsKICAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7CiAgICAgfSwgW10oY29uc3Qgc3Rk
OjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVF
bmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlRW5naW5lLmgKaW5kZXggY2JmOGI2OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJhZjJm
YTE1NjY2My4uOTRhZDIxMmEwNzBmY2UyNmFiMGE1OTVhZjgyYTU3MzZjMTM0NThlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApAQCAtNTcsNyAr
NTcsNyBAQCBFeGNlcHRpb24gY29udmVydFRvRXhjZXB0aW9uQW5kTG9nKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBFcnJvcik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY2Fj
aGVkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IENhY2hlUXVlcnlPcHRp
b25zJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGhhc1ZhcnlTdGFyLCBjb25z
dCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgdmFyeUhlYWRlcnMsIGNvbnN0IENhY2hlUXVlcnlP
cHRpb25zJik7CiAKLXVzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxw
dHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKK3VzaW5n
IFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRh
PiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwogUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5
KGNvbnN0IFJlc3BvbnNlQm9keSYpOwogV0VCQ09SRV9FWFBPUlQgUmVzcG9uc2VCb2R5IGNvcHlS
ZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAppbmRleCAyODUwZGJhMWUzYmZhMTFmNDg5YjQ0
NDAzNTEzZDUxYWUxYmVhZDNhLi45ZDFiYzY3NGZjODI2Y2I2ZDE2ZDAyNTEwY2Y4NDAxMGFkY2Jk
Nzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NE
TS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3Bw
CkBAIC0xMzUsMTcgKzEzNSwxNyBAQCBib29sIENETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUg
JiYgbV9wcml2YXRlLT5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFU
eXBlKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZUluaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBpbml0RGF0YSkKIHsKICAgICByZXR1cm4gSW5pdERhdGFSZWdpc3RyeTo6c2hhcmVkKCku
c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKIH0KIAotYm9vbCBDRE06
OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBT
aGFyZWRCdWZmZXImIGluaXREYXRhKQorYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3VwcG9ydHNJ
bml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCitS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQogewogICAgIGlmICghbV9wcml2YXRl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETS5oCmluZGV4IGQ4YTRiM2FmMTJmMWE3OTIzZDg4NzA1ZDViOTU4MWQzNmYx
MDI3MGMuLmQ3YjFkNTNkMDQ5MWY3Mjc3OWI1OTRiMmQ4M2MwOWI4M2JjZjIwN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaApAQCAtNTIsNyArNTIsNyBA
QCBjbGFzcyBDRE1JbnN0YW5jZTsKIGNsYXNzIENETVByaXZhdGU7CiBjbGFzcyBEb2N1bWVudDsK
IGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDRE0gOiBwdWJsaWMgUmVmQ291bnRl
ZDxDRE0+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNPiwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CkBAIC03MywxMCArNzMsMTAgQEAgcHVibGljOgogICAg
IGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0OwogICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0
YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIGJvb2wgc3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXpl
UmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
OwogCiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvQ0RNQ2xpZW50LmgKaW5kZXggMjFlNTJmNGI3MTRmYjkxZjY3Y2ZjMzk2MTM5YzE2
NTI1YmZiN2I5Yi4uNDEwZWQyZmI2NDI3NTYyY2U5YmQ4ZWRhNGQ5MWE4NmJhOThjYWE2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5o
CkBAIC0zNiwxNCArMzYsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0RNSW5z
dGFuY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBDRE1DbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNQ2xpZW50PiB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNQ2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAgdmly
dHVhbCB2b2lkIGNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25E
YXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2Vp
dmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAyYzYz
OGY3Yzg0MTk0NjQ5MGUyMDQ4NzY0MmM5YTcyMTczYzUwNTlmLi42Zjg4OGUxNzg1OGRkYTZkOTQ3
MWVjMWY2ZWY1ZDA2NmRmMGU0OTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTU0LDcgKzU0
LDcgQEAgbmFtZXNwYWNlIHsKICAgICBjb25zdCB1aW50MzJfdCBrS2V5SWRzTWF4S2V5SWRTaXpl
SW5CeXRlcyA9IDUxMjsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKICAgICAvLyAxLiBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8v
ZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3Jt
YXQKQEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWQKICAgICBpZiAoIWtp
ZHNBcnJheSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+IGtleUlEczsKICAgICBmb3IgKGF1dG8mIHZhbHVlIDogKmtpZHNBcnJheSkgewogICAg
ICAgICBhdXRvIGtleUlEID0gdmFsdWUtPmFzU3RyaW5nKCk7CiAgICAgICAgIGlmICgha2V5SUQp
CkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkCiAgICAgcmV0dXJuIGtl
eUlEczsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgLy8gMS4gRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2Vu
Y3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0
CkBAIC0xMTEsNyArMTExLDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXpl
S2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKIH0KIAotc3Rk
OjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVj
aWZpY0hlYWRlckJveD4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJveGVzRnJvbUNl
bmMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaXRE
YXRhUmVnaXN0cnk6OmV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gNC4gQ29tbW9uIFN5c3RlbUlEIGFuZCBQU1NI
IEJveCBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlh
L2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9jZW5jLmh0bWwjY29tbW9uLXN5c3RlbQpAQCAtMTUx
LDkgKzE1MSw5IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90
ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pCiAgICAgcmV0dXJuIHBzc2hCb3hl
czsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0
YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IEluaXRE
YXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAg
ICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAKICAgICBhdXRv
IHBzc2hCb3hlcyA9IGV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhidWZmZXIpOwogICAgIGlmICgh
cHNzaEJveGVzKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxT
aGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uCiAg
ICAgcmV0dXJuIGtleUlEczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdp
c3RyeTo6c2FuaXRpemVDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gNC4gQ29tbW9uIFN5
c3RlbUlEIGFuZCBQU1NIIEJveCBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8v
ZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9jZW5jLmh0bWwjY29tbW9u
LXN5c3RlbQpAQCAtMTk1LDcgKzE5NSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRh
UmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBy
ZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNh
bml0aXplV2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBDaGVjayBpZiB0aGUgYnVmZmVyIGlzIGEgdmFsaWQg
V2ViTSBpbml0RGF0YS4KICAgICAvLyBUaGUgV2ViTSBpbml0RGF0YSBpcyB0aGUgQ29udGVudEVu
Y0tleUlELCBzbyBzaG91bGQgYmUgbGVzcyB0aGFuIGtXZWJNTWF4Q29udGVudEVuY0tleUlEU2l6
ZS4KQEAgLTIwNSwxMCArMjA1LDEwIEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZVdlYk0oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIGJ1ZmZlci5j
b3B5KCk7CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4+IGV4dHJhY3RLZXlJRHNXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJh
Y3RLZXlJRHNXZWJNKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAg
ICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdlYk0oYnVmZmVyKTsKKyAgICBWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZEJ1ZmZlciA9IHNhbml0aXplV2ViTShidWZmZXIpOwog
ICAgIGlmICghc2FuaXRpemVkQnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CkBAIC0yMzMsNyArMjMzLDcgQEAgSW5pdERhdGFSZWdpc3RyeTo6SW5pdERhdGFSZWdpc3RyeSgp
CiAKIEluaXREYXRhUmVnaXN0cnk6On5Jbml0RGF0YVJlZ2lzdHJ5KCkgPSBkZWZhdWx0OwogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRp
emVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3R5cGVzLmZpbmQo
aW5pdERhdGFUeXBlKTsKICAgICBpZiAoaXRlciA9PSBtX3R5cGVzLmVuZCgpIHx8ICFpdGVyLT52
YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQpAQCAtMjQxLDcgKzI0MSw3IEBAIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhCiAgICAgcmV0dXJuIGl0ZXItPnZhbHVlLnNhbml0aXplSW5pdERhdGEoYnVmZmVy
KTsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0
YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIGF1dG8gaXRlciA9IG1fdHlwZXMuZmluZChpbml0RGF0YVR5cGUp
OwogICAgIGlmIChpdGVyID09IG1fdHlwZXMuZW5kKCkgfHwgIWl0ZXItPnZhbHVlLnNhbml0aXpl
SW5pdERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0luaXREYXRhUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oCmluZGV4IGNkMTM4N2E2YmQwMzhmZjM0ZTJjZmI3NWY0
NDNkZTdkOTQwMzIxYjAuLjc3ZDYwNGIwOGJiN2Y3ZTM4YmNjYjM1NDViMzRjOGIxMzQzNTVlZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERh
dGFSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
SW5pdERhdGFSZWdpc3RyeS5oCkBAIC0zOCwxOSArMzgsMTkgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94OwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSW5p
dERhdGFSZWdpc3RyeSB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEluaXRE
YXRhUmVnaXN0cnkmIHNoYXJlZCgpOwogICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxJ
bml0RGF0YVJlZ2lzdHJ5PjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVm
ZmVyPj4+IGV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25z
dCBTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzKGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwog
CiAgICAgc3RydWN0IEluaXREYXRhVHlwZUNhbGxiYWNrcyB7Ci0gICAgICAgIHVzaW5nIFNhbml0
aXplSW5pdERhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPFJlZlB0cjxTaGFyZWRCdWZmZXI+KGNvbnN0
IFNoYXJlZEJ1ZmZlciYpPjsKLSAgICAgICAgdXNpbmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0g
RnVuY3Rpb248c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+Pihjb25zdCBT
aGFyZWRCdWZmZXImKT47CisgICAgICAgIHVzaW5nIFNhbml0aXplSW5pdERhdGFDYWxsYmFjayA9
IEZ1bmN0aW9uPFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik+OworICAgICAgICB1c2luZyBFeHRyYWN0S2V5SURzQ2FsbGJhY2sgPSBG
dW5jdGlvbjxzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
Pihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik+OwogCiAgICAgICAgIFNhbml0aXplSW5p
dERhdGFDYWxsYmFjayBzYW5pdGl6ZUluaXREYXRhOwogICAgICAgICBFeHRyYWN0S2V5SURzQ2Fs
bGJhY2sgZXh0cmFjdEtleUlEczsKQEAgLTYxLDkgKzYxLDkgQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCBBdG9tU3RyaW5nJiBrZXlpZHNOYW1lKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21T
dHJpbmcmIHdlYm1OYW1lKCk7CiAKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBleHRy
YWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0NlbmMo
Y29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNh
bml0aXplQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRl
ckJveD4+PiBleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiBwcml2YXRlOgogICAgIElu
aXREYXRhUmVnaXN0cnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCA4YmZiMWNlNzAxYTJmNWE2
OWI1YjUxOTkxYWE4NjMyZWJiODkyNWY5Li4xNDc3NmMyMDE1MWJmZWZlMzgwNzlhMzM3MzBjODg2
NjI2OGJhNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBN
ZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IEJ1ZmYKICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMs
IFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9LCBpbml0RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhLmRhdGEoKSwgaW5p
dERhdGEubGVuZ3RoKCkpLCBpbml0RGF0YVR5cGUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
LCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAg
IC8vIDEwLjEuIElmIHRoZSBpbml0IGRhdGEgaXMgbm90IHZhbGlkIGZvciBpbml0RGF0YVR5cGUs
IHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAg
Ly8gMTAuMi4gTGV0IHNhbml0aXplZCBpbml0IGRhdGEgYmUgYSB2YWxpZGF0ZWQgYW5kIHNhbml0
aXplZCB2ZXJzaW9uIG9mIGluaXQgZGF0YS4KLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVkSW5pdERhdGEgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZUluaXREYXRhKGlu
aXREYXRhVHlwZSwgaW5pdERhdGEpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVkSW5pdERhdGEgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZUluaXRE
YXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpOwogCiAgICAgICAgIC8vIDEwLjMuIElmIHRoZSBw
cmVjZWRpbmcgc3RlcCBmYWlsZWQsIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVk
IFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFzYW5pdGl6ZWRJbml0RGF0YSkgewpAQCAtMjIzLDcg
KzIyMyw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgICAgICAgICBtX2xhdGVzdERl
Y3J5cHRUaW1lID0gMDsKICAgICAgICAgfQogCi0gICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5y
ZXF1ZXN0TGljZW5zZShtX3Nlc3Npb25UeXBlLCBpbml0RGF0YVR5cGUsIHNhbml0aXplZEluaXRE
YXRhLnJlbGVhc2VOb25OdWxsKCksIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2
aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQp
IG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UobV9z
ZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBzYW5pdGl6ZWRJbml0RGF0YS5yZWxlYXNlTm9uTnVs
bCgpLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlm
aWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6
YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsK
IApAQCAtNDIyLDcgKzQyMiw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUoY29uc3Qg
QnVmZmVyU291cmNlJiByZXNwb25zZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mCiAgICAgLy8gNi4g
UnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6CiAgICAgcXVldWVUYXNrS2VlcGlu
Z09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVzcG9uc2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShy
ZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLmxlbmd0aCgpKSwgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAg
ICAgICAgLy8gNi4xLiBMZXQgc2FuaXRpemVkIHJlc3BvbnNlIGJlIGEgdmFsaWRhdGVkIGFuZC9v
ciBzYW5pdGl6ZWQgdmVyc2lvbiBvZiByZXNwb25zZSBjb3B5LgotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZWRSZXNwb25zZSA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXpl
UmVzcG9uc2UocmVzcG9uc2UpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVkUmVzcG9uc2UgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZVJlc3BvbnNl
KHJlc3BvbnNlKTsKIAogICAgICAgICAvLyA2LjIuIElmIHRoZSBwcmVjZWRpbmcgc3RlcCBmYWls
ZWQsIG9yIGlmIHNhbml0aXplZCByZXNwb25zZSBpcyBlbXB0eSwgcmVqZWN0IHByb21pc2Ugd2l0
aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAgICBpZiAoIXNhbml0aXplZFJlc3Bv
bnNlIHx8IHNhbml0aXplZFJlc3BvbnNlLT5pc0VtcHR5KCkpIHsKQEAgLTYwMSw3ICs2MDEsNyBA
QCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSkKICAgICAgICAgLy8gNC4zLiBMZXQgbWVzc2FnZSB0eXBlIGJlIG51bGwuCiAKICAgICAg
ICAgLy8gNC40LiBVc2UgdGhlIGNkbSB0byBleGVjdXRlIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0g
ICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwg
bV9zZXNzaW9uVHlwZSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChDRE1JbnN0YW5jZVNlc3Npb246
OktleVN0YXR1c1ZlY3RvciYmIGtleXMsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+
JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBt
dXRhYmxlIHsKKyAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKG1f
c2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBlLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKENETUluc3Rh
bmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5cywgc3RkOjpvcHRpb25hbDxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNj
ZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC02NDksNyArNjQ5LDcgQEAgdm9pZCBNZWRp
YUtleVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAg
Ly8gNS4gUmV0dXJuIHByb21pc2UuCiB9CiAKLXZvaWQgTWVkaWFLZXlTZXNzaW9uOjplbnF1ZXVl
TWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBjb25zdCBTaGFyZWRCdWZm
ZXImIG1lc3NhZ2UpCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UoTWVkaWFL
ZXlNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
bWVzc2FnZSkKIHsKICAgICAvLyA2LjQuMSBRdWV1ZSBhICJtZXNzYWdlIiBFdmVudAogICAgIC8v
IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI3F1ZXVlLW1lc3NhZ2UKQEAg
LTcxNiw3ICs3MTYsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVzZXMo
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBpbgogICAgICAgICB9KTsKIH0K
IAotdm9pZCBNZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIG1lc3Nh
Z2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit2b2lkIE1lZGlhS2V5U2Vzc2lv
bjo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7CiAgICAgZW5xdWV1ZU1lc3NhZ2UobWVzc2FnZVR5
cGUsIG1lc3NhZ2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKaW5kZXggM2Q5NmY4ODAyZTc0Nzg0MWM0ZWZk
YTgxZGNiOTQxZWE2ZTRhNzVlNC4uMzY1YWNlNWMwOTVlN2RjMGM1NzFlNzZjY2YyYzA3YWFmYzYy
YmFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNzIENETTsKIGNsYXNz
IERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIE1lZGlhS2V5U3RhdHVzTWFwOwogY2xhc3MgTWVkaWFL
ZXlzOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZVByb3h5OwogCkBA
IC04NywyMCArODcsMjAgQEAgcHVibGljOgogICAgIHVzaW5nIENsb3NlZFByb21pc2UgPSBET01Q
cm9taXNlUHJveHk8SURMVW5kZWZpbmVkPjsKICAgICBDbG9zZWRQcm9taXNlJiBjbG9zZWQoKSB7
IHJldHVybiBtX2Nsb3NlZFByb21pc2UuZ2V0KCk7IH0KIAotICAgIGNvbnN0IFZlY3RvcjxzdGQ6
OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4mIHN0YXR1c2VzKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0dXNlczsgfQorICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+JiBzdGF0dXNlcygpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdHVzZXM7IH0KIAogICAgIHVuc2lnbmVkIGludGVybmFsSW5zdGFu
Y2VTZXNzaW9uT2JqZWN0UmVmQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2luc3RhbmNlU2Vzc2lv
bi0+cmVmQ291bnQoKTsgfQogCiBwcml2YXRlOgogICAgIE1lZGlhS2V5U2Vzc2lvbihEb2N1bWVu
dCYsIFdlYWtQdHI8TWVkaWFLZXlzPiYmLCBNZWRpYUtleVNlc3Npb25UeXBlLCBib29sIHVzZURp
c3RpbmN0aXZlSWRlbnRpZmllciwgUmVmPENETT4mJiwgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4m
Jik7Ci0gICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlLCBjb25zdCBT
aGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5
cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIHVwZGF0ZUV4cGly
YXRpb24oZG91YmxlKTsKICAgICB2b2lkIHNlc3Npb25DbG9zZWQoKTsKICAgICBTdHJpbmcgbWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNz
aW9uQ2xpZW50CiAgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhDRE1JbnN0YW5jZVNlc3Npb25D
bGllbnQ6OktleVN0YXR1c1ZlY3RvciYmKSBvdmVycmlkZTsKLSAgICB2b2lkIHNlbmRNZXNzYWdl
KENETU1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOworICAg
IHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBT
dHJpbmcmKSBmaW5hbDsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBmaW5hbDsK
IApAQCAtMTQwLDEwICsxNDAsMTAgQEAgcHJpdmF0ZToKICAgICBNZWRpYUtleVNlc3Npb25UeXBl
IG1fc2Vzc2lvblR5cGU7CiAgICAgUmVmPENETT4gbV9pbXBsZW1lbnRhdGlvbjsKICAgICBSZWY8
Q0RNSW5zdGFuY2VTZXNzaW9uPiBtX2luc3RhbmNlU2Vzc2lvbjsKLSAgICBWZWN0b3I8UmVmPFNo
YXJlZEJ1ZmZlcj4+IG1fcmVjb3JkT2ZLZXlVc2FnZTsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiBtX3JlY29yZE9mS2V5VXNhZ2U7CiAgICAgZG91YmxlIG1fZmlyc3RE
ZWNyeXB0VGltZSB7IDAgfTsKICAgICBkb3VibGUgbV9sYXRlc3REZWNyeXB0VGltZSB7IDAgfTsK
LSAgICBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+
IG1fc3RhdHVzZXM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4gbV9zdGF0dXNlczsKIAogICAgIHVzaW5nIERpc3BsYXlD
aGFuZ2VkT2JzZXJ2ZXIgPSBPYnNlcnZlcjx2b2lkKFBsYXRmb3JtRGlzcGxheUlEKT47CiAgICAg
RGlzcGxheUNoYW5nZWRPYnNlcnZlciBtX2Rpc3BsYXlDaGFuZ2VkT2JzZXJ2ZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVz
TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
dGF0dXNNYXAuY3BwCmluZGV4IDA2YWZmYjVmMmVkZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2
MGMuLjM5OGU4YWIxYjY1NmI0NDU5MjdiZWI2YmM2OTNkZDM5OWE2ODdhYzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
dGF0dXNNYXAuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHVuc2lnbmVkIGxvbmcgTWVkaWFLZXlTdGF0
dXNNYXA6OnNpemUoKQogICAgIHJldHVybiBtX3Nlc3Npb24tPnN0YXR1c2VzKCkuc2l6ZSgpOwog
fQogCi1zdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0
IEJ1ZmZlclNvdXJjZSYgYikKK3N0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKIHsKICAgICBhdXRvIGxl
bmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAhPSBiLmxlbmd0aCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVN0YXR1c01hcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVN0YXR1c01hcC5oCmluZGV4IGMyMTExMTNhMmM2ZGFjNzk3OTI0YTk5ZDJkMmRmOTdj
MmU2NWY4NTAuLjYwZDYyYWFmZjgwNzRkYWRhNmUzMWEzZjJiMzcwYTZkNmQwMWY2MTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0
dXNNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U3RhdHVzTWFwLmgKQEAgLTM4LDcgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgTWVkaWFLZXlTZXNzaW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTWVkaWFLZXlTdGF0dXNNYXAgOiBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYUtleVN0YXR1c01hcD4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCmluZGV4IDgzYjI0YWNl
YWE1YjEyOTRiYjRlYTQzOWZiMmQ1YzRmNmNjZDQ3NTMuLjM2N2YzMWQxODZiNTE2MzlhOWM3NDIx
M2YwY2Y4ZTZmMmY4ZDI2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBib29sIE1lZGlh
S2V5czo6aGFzT3BlblNlc3Npb25zKCkgY29uc3QKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgTWVk
aWFLZXlzOjp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQordm9pZCBNZWRp
YUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQog
ewogICAgIGZvciAoYXV0byYgY2RtQ2xpZW50IDogbV9jZG1DbGllbnRzKQogICAgICAgICBjZG1D
bGllbnQuY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChpbml0
RGF0YVR5cGUsIGluaXREYXRhLmNvcHlSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAppbmRleCA3YjU5YTNiYzZkMjI1NmZjNjU2
ZjA4Y2JmMjY4OTE4NTEwOTgzYTIyLi45MWExYTA3MTE0MzNiZTI0N2RkMmE4NWM1ZjRhZDA5Mzhh
MDlhN2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlzLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHJvdGVjdGVkOgogICAgIE1lZGlhS2V5cyhE
b2N1bWVudCYsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBib29sIHBlcnNpc3RlbnRT
dGF0ZUFsbG93ZWQsIGNvbnN0IFZlY3RvcjxNZWRpYUtleVNlc3Npb25UeXBlPiYsIFJlZjxDRE0+
JiYsIFJlZjxDRE1JbnN0YW5jZT4mJik7CiAKICAgICAvLyBDRE1JbnN0YW5jZUNsaWVudAotICAg
IHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcm
LCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlh
bGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3Qg
TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlcjsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IGYxMmM4OGZlZTlhODA3NGI1MDhl
Zjk1NzFlNzAxZjU2ODJmYjQ5MjcuLjAwMzkzMDJmN2RjMTZmZmVjZmM0NjVjN2Q4ZGEyNTJmOThk
YWY1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAg
LTI5NywxNCArMjk3LDE0IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgp
CiAgICAgICAgIHJldHVybiBmb3JtRGF0YUJvZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAg
ICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2Rpbmco
KS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAg
ICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh0
ZXh0Qm9keSgpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc1VS
TFNlYXJjaFBhcmFtcygpKQotICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJp
bmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNC
b2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAg
IGlmIChpc0FycmF5QnVmZmVyKCkpCi0gICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRh
dGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJC
b2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAo
aXNBcnJheUJ1ZmZlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9k
eSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsK
KyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVy
Vmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCAwODk4M2VjMDA0M2Y2Yzk5
YTdmYWVhZmM2OTNjZTgyODIzYjQwMWJjLi5iYWQxYjVlYTIzYjc3MWIzNDdmNGIwNGE1Njc1OGZj
MDA4OGUxMmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAg
LTY0LDcgKzY0LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5QXNGb3Jt
RGF0YSgpIGNvbnN0OwogCi0gICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6
bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+Owor
ICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZv
cm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CiAKICAg
ICB2b2lkIHNldEFzRm9ybURhdGEoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIHsgbV9kYXRhID0gV1RG
TW92ZShkYXRhKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keUNvbnN1bWVyLmNwcAppbmRleCAxMWE3M2YzNDVlODJkOWU3MDg1OThhYTgzM2RlYWVkOGJl
YzkzNDk0Li4yMjEzZDYyMzAzZWZlMmExZjcyOTgyNjBmNTg4NjBiNzc2ZmIyNjc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApA
QCAtMzI5LDEzICszMjksMTMgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiAgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEs
IHNpemUpOwogfQogCi12b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxTaGFyZWRC
dWZmZXI+JiYgZGF0YSkKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBtX2J1ZmZlci5yZXNldCgpOwogICAg
IG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewogICAgIGlmICghbV9idWZm
ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDZiYmJjZTczNDdhYTNiYzJmNzBmNGVj
NmQ4YmIwZTE4NzJhYWY4OTcuLjg3MWQyYzA4NjMzMWE5ODI5NGExNjZhNGI0MmUzMTg0ZTAzNzc3
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmgKQEAgLTUwLDEwICs1MCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyBy
ZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxT
aGFyZWRCdWZmZXI+JiYpOworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZvaWQgc2V0RGF0
YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiB0YWtlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtl
RGF0YSgpOwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigp
OwogICAgIFN0cmluZyB0YWtlQXNUZXh0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaExvYWRlci5jcHAKaW5kZXggZmM1NWNjN2Q4M2Q4YmMxMWYwODU0ZGMzY2ZkODUw
OTdhMzFmMTBmNi4uMDNmODliNjFjYTVmN2M3MTc2YjlkODhjZDEzNjYwZTg2YjdhMjU0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTEzNSw3
ICsxMzUsNyBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdG9wKCkKICAgICAgICAgbV9sb2FkZXItPmNh
bmNlbCgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaExvYWRlcjo6c3RhcnRTdHJl
YW1pbmcoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoTG9hZGVyOjpzdGFy
dFN0cmVhbWluZygpCiB7CiAgICAgQVNTRVJUKG1fY29uc3VtZXIpOwogICAgIGF1dG8gZmlyc3RD
aHVuayA9IG1fY29uc3VtZXItPnRha2VEYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoTG9hZGVyLmgKaW5kZXggMmY5MGYwZWMzZmY5MDVhMjYyMzFjODRjNzJhN2ExODZj
ZDRiZmU4My4uNDYxMmQwZTBlM2E3ZWZlMzA2MDM5NmIwZDc1YTJmYTNiYzRlZGRhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApAQCAtMzksMTQgKzM5LDE0
IEBAIGNsYXNzIEZldGNoQm9keUNvbnN1bWVyOwogY2xhc3MgRmV0Y2hMb2FkZXJDbGllbnQ7CiBj
bGFzcyBGZXRjaFJlcXVlc3Q7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRmV0
Y2hMb2FkZXIgZmluYWwgOiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6
CiAgICAgRmV0Y2hMb2FkZXIoRmV0Y2hMb2FkZXJDbGllbnQmLCBGZXRjaEJvZHlDb25zdW1lciop
OwogICAgIFdFQkNPUkVfRVhQT1JUIH5GZXRjaExvYWRlcigpOwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKIAogICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIGNvbnN0IEZldGNoUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQg
c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEJsb2ImKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IGI5MzQzOTJhOTAz
ZDRhNWZkMWM1NGFlODE0OGIyZTZlNzllNzZjNmIuLmUzOGE4M2FkZTdkNmUwYWFmNzBjZWI5YzVh
YThmZThhYjQ5NDNkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcApAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0
Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGlu
CiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLnNldEFz
Rm9ybURhdGEoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpc10o
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICAgICAgW3RoaXNdKFJl
ZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkp
CiAgICAgICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLmNvbnN1
bWVyKCkuc2V0RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQg
RmV0Y2hSZXNwb25zZTo6ZmVlZFN0cmVhbSgpCiAgICAgY2xvc2VTdHJlYW0oKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RhcnRTdHJlYW1p
bmcoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoUmVzcG9uc2U6OkJvZHlM
b2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKIHsKICAgICBBU1NFUlQobV9sb2FkZXIpOwogICAgIHJl
dHVybiBtX2xvYWRlci0+c3RhcnRTdHJlYW1pbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggMzc0OGM4ZjU5MjcyOTMwYmJjMmQxNjY2YzZh
ZWI1NDdhMWI1ZWYwNi4uY2Y3ODYzMjM5ZmQ5NDZlZTBlOGQ4OGVhZWE3MmZlOTg5ZWVkMzE0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTg1
LDcgKzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmVlZFN0cmVhbSgpIGZpbmFsOwogICAgIHZv
aWQgY2FuY2VsKCkgZmluYWw7CiAKLSAgICB1c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlh
bnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj47CisgICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0
cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CiAgICAgUmVzcG9uc2VEYXRh
IGNvbnN1bWVCb2R5KCk7CiAgICAgdm9pZCBzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiwgdWlu
dDY0X3QgYm9keVNpemVXaXRoUGFkZGluZyk7CiAKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2YXRl
OgogCiAgICAgICAgIHZvaWQgY29uc3VtZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0Nh
bGxiYWNrJiYpOwogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5n
KCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzdGFydFN0cmVhbWlu
ZygpOwogICAgICAgICBOb3RpZmljYXRpb25DYWxsYmFjayB0YWtlTm90aWZpY2F0aW9uQ2FsbGJh
Y2soKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVzcG9uc2VDYWxsYmFjayk7IH0KICAgICAgICAgQ29u
c3VtZURhdGFCeUNodW5rQ2FsbGJhY2sgdGFrZUNvbnN1bWVEYXRhQ2FsbGJhY2soKSB7IHJldHVy
biBXVEZNb3ZlKG1fY29uc3VtZURhdGFDYWxsYmFjayk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAppbmRleCA2MTM3YzJjZjZmZjQ3YTM2
ODQwZjExYjk2NmI5ZTUyNTg3MWQ4MTVmLi4xYTY2YmY4MTgzMjBlOTU2MDdkNjE1ZjFhMDgyYTgy
NzZlYjJhMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9B
cHBIaWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHQuaApAQCAtMzgsNyArMzgsNyBAQCBlbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9y
SGlnaGxpZ2h0IDogYm9vbCB7IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgSGlnaGxpZ2h0UmVxdWVz
dE9yaWdpbmF0ZWRJbkFwcCA6IGJvb2wgeyBObywgWWVzIH07CiAKIHN0cnVjdCBBcHBIaWdobGln
aHQgewotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGhpZ2hsaWdodDsKKyAgICBSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaGlnaGxpZ2h0OwogICAgIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiB0ZXh0OwogICAgIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGlzTmV3
R3JvdXA7CiAgICAgSGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCByZXF1ZXN0T3JpZ2lu
YXRlZEluQXBwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQv
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKaW5kZXggODNiOTVkN2NmMDA3YWE1NGZiZmUy
MzRiN2Q4YjFlYjhlMTk5NjNlNC4uNWU4MGYwYzA3MmQ0OWEzZWY3OTY5NTkzMDJjNDQ1NmNkMmFi
ZGU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY29uc3RleHByIHVpbnQ2NF90IGhpZ2hsaWdodEZpbGVTaWduYXR1cmUgPSAw
eDQxNDE1MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0dXJlICAoQSlwcGxlKEFQKXBsaWNhdGlv
bihIKWlnaGxpZ2h0cygyMDIxKQogCi1zdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0
YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCitzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhOjpjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOwogICAg
IGF1dG8gZGVjb2RlciA9IGNvbnRpZ3VvdXNCdWZmZXItPmRlY29kZXIoKTsKQEAgLTUzLDcgKzUz
LDcgQEAgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJh
bmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEIKICAgICByZXR1cm4gZGF0YTsKIH0KIAotUmVm
PFNoYXJlZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjp0b1NoYXJlZEJ1ZmZlcigpIGNv
bnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjp0
b1NoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBl
bmNvZGVyOwogICAgIGVuY29kZXIgPDwgKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCmluZGV4IGNmNjM4
MWFjZmIwYTUyMTFiNDM1MDhiN2I1MTdkNmRiMmY2ZmM3NDMuLmI1ZGFmNjAyNTM5OGEzZjdlNmYx
ZDM3YWJlY2U4NDRkNGYxYzY1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCkBAIC0zMywxMiArMzMsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCi1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBBcHBIaWdobGlnaHRSYW5nZURhdGEgewogV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhPiBjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBjcmVhdGUoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHN0cnVjdCBOb2RlUGF0aENvbXBvbmVu
dCB7CiAgICAgICAgIFN0cmluZyBpZGVudGlmaWVyOwogICAgICAgICBTdHJpbmcgbm9kZU5hbWU7
CkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRlY29kZShEZWNv
ZGVyJik7CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0Owor
ICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0Owog
CiBwcml2YXRlOgogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCmluZGV4
IGRjMzlhMGYwZDE4ZmZmY2E3ZGZiNDY1MjE5Y2Q2MTJhOWY3MzhmOGYuLmU1ZGU4NDk0ZjM1MDQ1
MzU5NGIyZjJlODhjM2RkYTMzZmE5YWY3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCkBAIC0yMzcsNyAr
MjM3LDcgQEAgdm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpzdG9yZUFwcEhpZ2hsaWdodChSZWY8
U3RhdGljUmFuZ2U+JiYgcmFuZ2UpCiAgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5z
dG9yZUFwcEhpZ2hsaWdodChXVEZNb3ZlKGhpZ2hsaWdodCkpOwogfQogCi12b2lkIEFwcEhpZ2hs
aWdodFN0b3JhZ2U6OnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgU2Nyb2xsVG9IaWdobGlnaHQgc2Nyb2xsKQordm9pZCBBcHBIaWdobGln
aHRTdG9yYWdlOjpyZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBTY3JvbGxUb0hpZ2hsaWdodCBzY3JvbGwpCiB7CiAgICAg
YXV0byBhcHBIaWdobGlnaHRSYW5nZURhdGEgPSBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0
ZShidWZmZXIpOwogICAgIGlmICghYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCmlu
ZGV4IGIxNTJmNzZlZDQyNDA4OTJlYTdkZTIxZTJjYjA2ZDQ3MmQ4NzMzNjAuLmUyNzY2MzNiNDg0
ZjgxMDk0YWRlY2U0NWY2NGFiYmVkMTc4MTI1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKQEAgLTM5LDcgKzM5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKIAog
Y2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogY2xhc3MgU3RhdGljUmFuZ2U7CiBjbGFzcyBIaWdobGlnaHQ7CiAKQEAgLTU0
LDcgKzU0LDcgQEAgcHVibGljOgogICAgIH5BcHBIaWdobGlnaHRTdG9yYWdlKCk7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTdGF0aWNSYW5nZT4mJik7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU2Nyb2xsVG9IaWdobGlnaHQpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBTY3JvbGxUb0hpZ2hsaWdodCk7CiAgICAgdm9pZCByZXN0b3JlVW5yZXN0
b3JlZEFwcEhpZ2hsaWdodHMoKTsKICAgICBNb25vdG9uaWNUaW1lIGxhc3RSYW5nZVNlYXJjaFRp
bWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaDsgfQogICAgIHZvaWQg
cmVzZXRMYXN0UmFuZ2VTZWFyY2hUaW1lKCkgeyBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaCA9IE1v
bm90b25pY1RpbWU6Om5vdygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKaW5kZXggYTFjOTMx
MmQ0NWViYmZjZTlmMzJlNmNjMWExYTJlODRkZGNhN2M3Mi4uMmEyYzFmYzMyOTU4MDVkNTJmZDU2
YWYzMGI0NTVhZTJjY2NjNDg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcApAQCAtMzksNyAr
MzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgS2V5UGF0aFR5cGUgeyBO
dWxsLCBTdHJpbmcsIEFycmF5IH07CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBz
ZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBh
dGgpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiB7CiAgICAgYXV0byBlbmNvZGVyID0gS2V5
ZWRFbmNvZGVyOjplbmNvZGVyKCk7CiAKQEAgLTI4MiwxMyArMjgyLDEzIEBAIHN0YXRpYyB2b2lk
IGVuY29kZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElEQktleURhdGEmIGtleSkK
ICAgICB9CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlh
bGl6ZUlEQktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQogewogICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJzaW9uKTsKIAogICAgIGVuY29k
ZUtleShkYXRhLCBrZXkpOwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoZGF0YSkpOwogfQogCiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlS2V5
KGNvbnN0IHVpbnQ4X3QqJiBkYXRhLCBjb25zdCB1aW50OF90KiBlbmQsIElEQktleURhdGEmIHJl
c3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCmluZGV4IGFhZmRiMzcwMWYwZWY0NDhkNmI4YWI1MTAx
MTg1YzRiMzRmZmFhOGEuLjY1YzRhNjNjNzg3ZjM2OTQxNDZlMjMxYzhjNTQwMTcwNjdhNGY0MjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcmlhbGl6YXRpb24uaApAQCAtMzIsMTAgKzMyLDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSURCS2V5RGF0YTsKIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYp
OworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9w
dGlvbmFsPElEQktleVBhdGg+Jik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCB1
aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBzdGQ6Om9wdGlvbmFsPElEQktleVBh
dGg+Jik7CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlE
YXRhKGNvbnN0IElEQktleURhdGEmKTsKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlE
QktleURhdGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleURhdGEo
Y29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgSURCS2V5RGF0YSYpOwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggMGE0NjliZDBiZDFmMzhk
Y2I5NmIzOWQ4YzMwMDBhZjczZDEyYWI1OS4uYzlkNmRhNmJkZDlmOTM5NTAxZjRmNDIzMmI0Yzc4
MzdkODQwZGFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IE1lZGlhUmVjb3JkZXI6OnN0YXJ0UmVjb3JkaW5nKHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IHRpbWVTbGljCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3RhdGljIGlubGluZSBSZWY8Qmxv
YkV2ZW50PiBjcmVhdGVEYXRhQXZhaWxhYmxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkKK3N0YXRpYyBpbmxpbmUgUmVmPEJsb2JFdmVudD4gY3Jl
YXRlRGF0YUF2YWlsYWJsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgZG91YmxlIHRpbWVDb2RlKQogewogICAgIGF1dG8gYmxvYiA9IGJ1ZmZlciA/IEJsb2I6
OmNyZWF0ZShjb250ZXh0LCBidWZmZXItPmV4dHJhY3REYXRhKCksIG1pbWVUeXBlKSA6IEJsb2I6
OmNyZWF0ZShjb250ZXh0KTsKICAgICByZXR1cm4gQmxvYkV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmRhdGFhdmFpbGFibGVFdmVudCwgQmxvYkV2ZW50OjpJbml0IHsgeyBmYWxzZSwgZmFsc2Us
IGZhbHNlIH0sIFdURk1vdmUoYmxvYiksIHRpbWVDb2RlIH0sIEJsb2JFdmVudDo6SXNUcnVzdGVk
OjpZZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyLmgKaW5kZXggNzcxMmI0NDUyODM2N2Q4YzI3MjUwMmFkYmFhY2FhZjk3ODhj
YmRiMC4uMWU5Yjc0YWIxN2UzMTA4ZGI0MjA5YjliNGYwMjE0ZGExMWFjNmUwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5o
CkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoRXJyb3IoRXhj
ZXB0aW9uJiYpOwogCiAgICAgZW51bSBjbGFzcyBUYWtlUHJpdmF0ZVJlY29yZGVyIHsgTm8sIFll
cyB9OwotICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPjsKKyAgICB1
c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+OwogICAgIHZv
aWQgZmV0Y2hEYXRhKEZldGNoRGF0YUNhbGxiYWNrJiYsIFRha2VQcml2YXRlUmVjb3JkZXIpOwog
CiAgICAgLy8gTWVkaWFTdHJlYW06Ok9ic2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCmluZGV4IDNmNGM5YmNkMTMz
YWMyOWYzZjdkZGUxOTk0NzhlMzkyNTdkNWU2NmIuLjg3NGFhN2YwYjE4ZjBlZTc1ODgwYmE1ZjVl
ZjY3ZDQ3YmZjMmIyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
ZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQXJ0d29y
a0ltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNv
bnN0IE5ldHdvcmtMCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gU2FuaXRpemUgdGhl
IGltYWdlIGJ5IGRlY29kaW5nIGl0IGludG8gYSBCaXRtYXBJbWFnZS4KLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0
YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXpl
ID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIGF1dG8gYml0bWFwSW1hZ2Ug
PSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgYml0bWFwSW1hZ2UtPnNldERhdGEoV1RGTW92
ZShidWZmZXJUb1Nhbml0aXplKSwgdHJ1ZSk7CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1Nv
dXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJj
ZUJ1ZmZlci5jcHAKaW5kZXggMmIzY2RlMzYwODI0NzFjMTFjODdmY2Y2MWNjODFjYzM2MGMzOWQ5
MC4uZDM3OGFmYzZmOGExYjU3YTAzMDJlMmM4NjhiMjQwYTIwOTdmZTRjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAt
NTMwLDcgKzUzMCw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJUaW1lckZpcmVk
KCkKICAgICAvLyBodHRwczovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlw
L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCNzb3VyY2VidWZmZXItc2VnbWVudC1wYXJz
ZXItbG9vcAogICAgIC8vIFdoZW4gdGhlIHNlZ21lbnQgcGFyc2VyIGxvb3AgYWxnb3JpdGhtIGlz
IGludm9rZWQsIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYXBwZW5kRGF0YSA9IFdURk1vdmUobV9wZW5kaW5nQXBwZW5kRGF0YSk7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGFwcGVuZERhdGEgPSBXVEZNb3ZlKG1fcGVuZGlu
Z0FwcGVuZERhdGEpOwogICAgIC8vIDEuIExvb3AgVG9wOiBJZiB0aGUgaW5wdXQgYnVmZmVyIGlz
IGVtcHR5LCB0aGVuIGp1bXAgdG8gdGhlIG5lZWQgbW9yZSBkYXRhIHN0ZXAgYmVsb3cuCiAgICAg
aWYgKCFhcHBlbmREYXRhIHx8ICFhcHBlbmREYXRhLT5zaXplKCkpIHsKICAgICAgICAgc291cmNl
QnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKEFwcGVuZFJlc3VsdDo6QXBwZW5kU3VjY2VlZGVk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNl
QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5oCmluZGV4IDUyMGMwNzc1Njk2YTJmMGUyZTczMDA3MzVlOGM5Nzc0OTVmMWE2MTQuLmQ0Yzg1
NzljMGJiZDQ0M2E1MTJmYTlmNjhjNDI3ZWMwNDg4NWQwZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAtMjIyLDcgKzIyMiw3
IEBAIHByaXZhdGU6CiAKICAgICBXVEY6Ok9ic2VydmVyPHZvaWQqKCk+IG1fb3BhcXVlUm9vdFBy
b3ZpZGVyOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsK
ICAgICBUaW1lciBtX2FwcGVuZEJ1ZmZlclRpbWVyOwogCiAgICAgUmVmUHRyPFZpZGVvVHJhY2tM
aXN0PiBtX3ZpZGVvVHJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKaW5kZXgg
ZjU4MjdkZjkzNzk0OTNkMjgxMjcwMTc3Y2NmYmNhMDU1MTUzMjMxZi4uNzM5NDJhODM1OTMxYTlk
Mjg0YzZhNDUxYmI4ZGJmYjU3NjVjYWRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxl
ci5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJUQ0RhdGFD
aGFubmVsSGFuZGxlckNsaWVudDsKIGNsYXNzIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNv
bm5lY3Rpb247CiBjbGFzcyBSVENFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxl
ciBmaW5hbCA6IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIsIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0cnVjdCBNZXNzYWdl
IHsKICAgICAgICAgYm9vbCBpc1JhdyB7IGZhbHNlIH07Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
ICAgICB9OwogICAgIFZlY3RvcjxNZXNzYWdlPiBtX3BlbmRpbmdNZXNzYWdlczsKICAgICBib29s
IG1faXNQZW5kaW5nQ2xvc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggZTc5ZWJkYmFjNDA4M2U5NDU0YzY5ZDE5
OTZlNmZkMmQ4YzcyOTgxOS4uM2NlZWQwYTAxMWU3YjU0NmZhZGRmNDhiYmRhMjExZGZkZDUyNGM1
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
Y3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpz
ZXRDbGllbnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQsCiAgICAgbV9jb250
ZXh0SWRlbnRpZmllciA9IGNvbnRleHRJZGVudGlmaWVyOwogCiAgICAgZm9yIChhdXRvJiBtZXNz
YWdlIDogbV9idWZmZXJlZE1lc3NhZ2VzKSB7Ci0gICAgICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsm
XShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgeworICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBb
Jl0oUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CiAgICAgICAgICAgICBjbGll
bnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOwogICAgICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBj
bGllbnQuZGlkUmVjZWl2ZVN0cmluZ0RhdGEodGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCmluZGV4IDQxZjk1MjgyMWU2MjAwOTNmOGVlZmUz
MmM1ZWQ0YWUwZjVlNTQxOTcuLjExYmQ0NWRlOTE1NTc3OWZmYzllZmIwM2U5NTUyOGYwNWU2NGQ3
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5o
CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIFJUQ0RhdGFDaGFubmVsU3RhdGUg
c3RhdGU7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8d2VicnRjOjpSVENFcnJvcj4gZXJyb3I7CiAg
ICAgfTsKLSAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PFN0YXRlQ2hhbmdlLCBTdHJp
bmcsIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50
PFN0YXRlQ2hhbmdlLCBTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAg
dXNpbmcgUGVuZGluZ01lc3NhZ2VzID0gVmVjdG9yPE1lc3NhZ2U+OwogICAgIHZvaWQgc3RvcmVN
ZXNzYWdlKFBlbmRpbmdNZXNzYWdlcyYsIGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYpOwogICAg
IHZvaWQgcHJvY2Vzc01lc3NhZ2UoY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVyJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKaW5k
ZXggMGI4OThmNmFkYjU3ZWIyNWRjNDkzN2Q4MWZmNWQxNGQ1Mjk3NmM4NC4uZDUxNzNmYmY4YjQw
MzQxYzVjZjhkOGE0ZjU1ZWVhYzhmZjgzOGEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaApAQCAtMzUsNyArMzUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNzIFJlYWRhYmxl
U3RyZWFtOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIAogY2xhc3MgUmVhZGFibGVTdHJlYW1TaW5rIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFi
bGVTdHJlYW1TaW5rPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggODUxNDdjMDk2MWM5OTczMTYzMWYwZWRmYjll
ZmU3NGU1YzM2Y2FjYi4uNTI1MTBjMzA4MThmMGNhOTE2YTg4NDM3N2QyMjRhMWFiYTc5NWI4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNw
cApAQCAtNDc1LDcgKzQ3NSw3IEBAIHN0YXRpYyBKU0M6OkpTUHJvbWlzZSogaGFuZGxlUmVzcG9u
c2VPblN0cmVhbWluZ0FjdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIC8v
IEZJWE1FOiBTdXBwb3J0IEZvcm1EYXRhIGxvYWRpbmcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyNDgKICAgICAgICAgY29tcGlsZXItPmZh
aWwoZ2xvYmFsT2JqZWN0LCBjcmVhdGVET01FeGNlcHRpb24oKmdsb2JhbE9iamVjdCwgRXhjZXB0
aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgIH0pKTsKLSAgICB9
LCBbJl0oUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0o
UmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMo
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFs
aXplKGdsb2JhbE9iamVjdCk7CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3Zp
ZGVyLmgKaW5kZXggYjkxOGYzMTQxYWYyZjUyMTY0MjY4OThmYWVhODRmNGIwMmIxZTI3ZS4uYjhi
Nzc4NWY5MWQwNjhjMmE0NmNlYjFkNjU5NzU4ZmNmOGI2OWQ5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBA
IC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgU2NyaXB0QnVmZmVyIG1fc2Ny
aXB0QnVmZmVyOwotICAgIG11dGFibGUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1f
Y29udGlndW91c0J1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29u
dGlndW91c0J1ZmZlcjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsK
ICAgICBtdXRhYmxlIFN0cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggN2U0OWE5ZTcz
MjI2YjY1Y2MyOGJmNTk0ODEzYjBmODNiMjY5ZDIyYi4uZWYzN2YxZDBjYTQ2MmJiOWI3YzliNmE1
NWQxOGViYjRjMTE4MWE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgRGV0YWNoZWRP
ZmZzY3JlZW5DYW52YXM7CiBjbGFzcyBJREJWYWx1ZTsKIGNsYXNzIE1lc3NhZ2VQb3J0OwogY2xh
c3MgSW1hZ2VCaXRtYXBCYWNraW5nOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgU2VyaWFsaXphdGlvblJldHVybkNvZGU7CiAK
IGVudW0gY2xhc3MgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB7IE5vblRocm93aW5nLCBUaHJvd2lu
ZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggNGI0Mzk5
NTRmMTliYTRiODIzN2M5ZTVkYWVkNDFlNGJhN2ZkYTBlYy4uY2FkYzRhMDU5NGM1YmY2Mzc4Y2Zh
N2IwZThjYTQ3NTI2NTYwYmFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuY3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChE
b2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2luRG9jdW1lbnRD
dXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgICAgIFNWR0ZvbnRFbGVtZW50JiBmb250
RWxlbWVudCA9IGRvd25jYXN0PFNWR0ZvbnRFbGVtZW50PigqbV9zdmdGb250RmFjZUVsZW1lbnQt
PnBhcmVudE5vZGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gb3RmRm9udCA9IGNvbnZl
cnRTVkdUb09URkZvbnQoZm9udEVsZW1lbnQpKQotICAgICAgICAgICAgICAgICAgICBtX2dlbmVy
YXRlZE9URkJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90
ZkZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKG1fZ2VuZXJhdGVkT1RGQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAg
ICAgIG1faW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoKm1fZ2VuZXJhdGVkT1RGQnVmZmVyLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0
Zm9ybURhdGEpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6Omxv
YWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICB9IGVsc2UgaWYgKG1faW1tZWRpYXRlU291
cmNlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSk7CiAgICAgICAgICAgICBib29sIHdyYXBwaW5nOwotICAgICAgICAgICAgYXV0byBidWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KG1faW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2Ut
PmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFk
ZHJlc3MoKSksIG1faW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOwogICAgICAgICAgICAg
bV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3Vz
dG9tRm9udERhdGEoYnVmZmVyLmdldCgpLCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAg
ICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YSk7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNv
dXJjZS5oCmluZGV4IDZhODJjZjFlM2RjOTE1OTc4NTMzNjViZDMxZTM2MjMyNzg2YTA4ODIuLjEw
OGU2Yzg3NjdkMGQyZmRhY2JlNjUwNGViYzUwNzBlODgyYmU2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ1NTRm9udEZhY2U7CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7Ci1jbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1l
bnQ7CiBjbGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKQEAgLTkzLDcgKzkz
LDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0
b3I7IC8vIEZvciByZW1vdGUgZm9udHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxzbyBmb3Ig
cmVtb3RlIGZvbnRzLCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAKLSAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CiAgICAgUmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IDFkZWFjNGY0MWNmNDlm
MWY4ODJkY2NlZmQ0OGNmNmE5NzMyZjNlZDkuLmM0MmVjMDUxZmUxMWViYTE0ZjgxMzM1OWQ4ZDE3
YTJjMjgxNjY0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC00MDIsNyAr
NDAyLDcgQEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlVHlwZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9h
cmRGaWxlUmVhZGVyIHsKICAgICAgICAgdHlwZXMuYWRkKEZpbGU6OmNvbnRlbnRUeXBlRm9yRmls
ZShmaWxlbmFtZSkpOwogICAgIH0KIAotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCisgICAgdm9pZCByZWFk
QnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpCiAgICAgewogICAgICAgICB0eXBlcy5hZGQodHlwZSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGZhMTQ2N2RiOGVkODczNzQ3YzA0NDczYjE0
YzY4OWFkN2I3MGExM2QuLmM1ZTllMjZiMzcyYWU2ODNmMTg2OGU5MjBjNDVlZDcwZWRmNTU0N2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxMjUsNyArNDEyNSw3IEBAIFByb21p
c2VkQXR0YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQm
IGVsZW1lbnQpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRp
dGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4g
YWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlv
bmFsRGF0YTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmRE
YXRhRm9yQXR0YWNobWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRh
KTsKICNlbmRpZgpAQCAtNDEzMyw3ICs0MTMzLDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBF
ZGl0b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1
cm4geyBhdHRhY2htZW50LT51bmlxdWVJZGVudGlmaWVyKCksIFdURk1vdmUoYWRkaXRpb25hbFR5
cGVzKSwgV1RGTW92ZShhZGRpdGlvbmFsRGF0YSkgfTsKIH0KIAotdm9pZCBFZGl0b3I6OnJlZ2lz
dGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIEVkaXRvcjo6cmVnaXN0ZXJBdHRhY2htZW50SWRl
bnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgp
KQogICAgICAgICBjbGllbnQtPnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoaWRlbnRpZmll
ciwgY29udGVudFR5cGUsIHByZWZlcnJlZEZpbGVOYW1lLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oCmluZGV4IGY1ZmNkY2NiNjY2NTgyMDIzODUyMGU2MzIzNTFjOWZmYTJh
YjlhYTguLjFkMDcxNmM1YjkzYzhiYjdhZDczZjQxNzRjYTgwNDU5MDVmOTE5MTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaApAQCAtNTgsNyArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOwogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwog
Y2xhc3MgQ29tcG9zaXRlRWRpdENvbW1hbmQ7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3VzdG9tVW5kb1N0ZXA7CiBjbGFzcyBEYXRh
VHJhbnNmZXI7CiBjbGFzcyBEZWxldGVCdXR0b25Db250cm9sbGVyOwpAQCAtNzUsNyArNzUsNyBA
QCBjbGFzcyBLaWxsUmluZzsKIGNsYXNzIFBhc3RlYm9hcmQ7CiBjbGFzcyBQYXN0ZWJvYXJkV3Jp
dGVyRGF0YTsKIGNsYXNzIFJlbmRlckxheWVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7CiBjbGFzcyBTcGVsbENoZWNrUmVx
dWVzdDsKIGNsYXNzIFNwZWxsQ2hlY2tlcjsKQEAgLTUzNyw3ICs1MzcsNyBAQCBwdWJsaWM6CiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZy
b21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwog
I2VuZGlmCiAKICAgICBib29sIGNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCkgY29u
c3Q7CkBAIC01NjQsNyArNTY0LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2
b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBmaWxlRGF0YSk7CisgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0
cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGZp
bGVEYXRhKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YT4mJik7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBT
dHJpbmcmKTsKQEAgLTU3NCw3ICs1NzQsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYp
OwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0
YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOworICAgIHZvaWQgZ2V0
UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJp
bmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSk7CiAj
ZW5kaWYKICNlbmRpZgogCkBAIC02MTksMTIgKzYxOSwxMiBAQCBwcml2YXRlOgogICAgIHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGFkanVzdGVkU2VsZWN0aW9uUmFuZ2UoKTsKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZWxlY3Rp
b25JbldlYkFyY2hpdmVGb3JtYXQoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZWxlY3Rp
b25JbldlYkFyY2hpdmVGb3JtYXQoKTsKICAgICBTdHJpbmcgc2VsZWN0aW9uSW5IVE1MRm9ybWF0
KCk7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZl
Rm9ybWF0KEVsZW1lbnQmKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2ViQXJj
aGl2ZUZvcm1hdChFbGVtZW50Jik7CiAgICAgc3RhdGljIFN0cmluZyB1c2VyVmlzaWJsZVN0cmlu
Zyhjb25zdCBVUkwmKTsKLSAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwotICAgIHN0YXRpYyBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0
cmluZyAqKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1h
dChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CiAjZW5kaWYKICAgICB2b2lk
IHBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiwg
Y29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmgKaW5kZXggMzljM2IxZmEzZDg1NmY4ZDg0OWM2
OTMzMWQ4OWU5OThmN2U3NjIzYi4uZjMwMjgyMzU2OTAwNmY1Y2Y5ZGJiNGVmYzM3M2U2N2VmMDVm
MTlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNo
bWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YS5oCkBAIC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBzdHJ1
Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhIHsKICAgICBTdHJpbmcgaWRlbnRpZmllcjsKICAg
ICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7
CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaAppbmRleCAwOGFhMTI0
MjY2MjBmNzY5NTNhNzliMzRlZGU1ZjZkZjA1MjdiMDE1Li45NTdiNGZkNGE1NTdmYzgxY2QzMDY5
ZWVhY2I4OTQ4OGE5NDdiN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvbnRlbnRSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRS
ZWFkZXIuaApAQCAtNzIsMTYgKzcyLDE2IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWFkRmlsZVBh
dGgoY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplID0geyB9LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0geyB9KSBvdmVycmlkZTsKICAg
ICBib29sIHJlYWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKICAg
ICBib29sIHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZElt
YWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9u
U2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKKyAgICBib29s
IHJlYWRJbWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0
eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92
ZXJyaWRlOwogICAgIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxl
KSBvdmVycmlkZTsKICAgICBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hp
dmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
Ci0gICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50
YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRXZWJBcmNoaXZlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEZEKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEYoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQ
cmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRl
OwogI2VuZGlmCiB9OwogCkBAIC05OSwxNiArOTksMTYgQEAgcHJpdmF0ZToKICAgICBib29sIHJl
YWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBT
dHJpbmcmID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZEZp
bGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgYm9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBib29sIHJl
YWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25T
aXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZEltYWdl
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRp
b25TaXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZFVS
TChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIHJlYWRXZWJB
cmNoaXZlKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURkQoU2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpIG92ZXJy
aWRlOwotICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBib29sIHJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOworICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCA1
NDllYjdkMmU0YzA3NTQ4ZTRhOGM5ZWEyNGVjMjBlNGYyMWJmYTI1Li4xMTdkYmE2OGVkYjBiZDRi
NmMzMGUwOTQ4NWQ5ZDBjMGYyOWMzODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBA
IHZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkRmlsZW5hbWUoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSkKICAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQuZ2V0
KCksIGZpbGVuYW1lKSk7CiB9CiAKLXZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpy
ZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRl
cjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBmaWxlcy5hcHBl
bmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIEJsb2I6OmNyZWF0ZShjb250ZXh0LmdldCgp
LCBidWZmZXItPmV4dHJhY3REYXRhKCksIHR5cGUpLCBmaWxlbmFtZSkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKaW5k
ZXggNWM1MjlkZDdjOGVjYzAwMDQ4ZmNiNGQxNTgxNDYzNWIyNGQ5MGJiNy4uOWQ4MTYwNWYxOTky
OThmMTljMGVkNjk5NWZlM2JkNzc4MzAzNGZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCkBAIC00MSw3ICs0MSw3IEBA
IHN0cnVjdCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmls
ZVJlYWRlciB7CiAgICAgfldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcigpOwogCiAgICAgdm9p
ZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCByZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsOwogCiAgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IGNvbnRleHQ7CiAgICAg
VmVjdG9yPFJlZjxGaWxlPj4gZmlsZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbQppbmRleCBkMGM5MzMxMDBjNjU1ZjFmYTg1MjUyNzg4MTg3MDQ5OWMyZjYx
ZmUzLi5hODViN2FhNzUyNmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5OTE0YWFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBA
QCB2b2lkIEVkaXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9u
dEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsCiAgICAgICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2Jy
aWRnZSBpZCljdEZvbnQ7CiB9CiAKLXN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0
dHJpYnV0ZWRTdHJpbmcpCitzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRh
Rm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcp
CiB7CiAgICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tl
eWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyBy
ZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKKyAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9i
amVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVs
bHB0cl0pOwogfQogCiBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAt
ODcsNyArODcsNyBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAj
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9h
cmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJp
bmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91
dERhdGEpCit2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1l
bnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQogewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0g
bWFrZVJhbmdlU2VsZWN0aW5nTm9kZShlbGVtZW50KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoZWxlbWVudFJhbmdlLCBvdXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3
ICs5OSw3IEBAIHZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNo
bWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hp
dmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAg
ICAgIGlmIChhdXRvIGRhdGEgPSBhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewog
ICAgICAgICAgICAgICAgIG91dFR5cGVzLmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0g
ICAgICAgICAgICAgICAgb3V0RGF0YS5hcHBlbmQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xNTEsMTIgKzE1MSwxMiBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFz
dGVib2FyZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRX
cml0ZXJEYXRhLnNldFdlYkNvbnRlbnQoV1RGTW92ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZv
cm1hdCgpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2
ZUZvcm1hdCgpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
RnJvbVNlbGVjdGlvbihtX2RvY3VtZW50LmZyYW1lKCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigp
LmdldCgpKTsKIH0KIAogLy8gRklYTUU6IE1ha2VzIG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0
Rm9yRGF0YVRyYW5zZmVyIGFsd2F5cyBpbmNsdWRlcyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVj
dGlvbkZvclBhc3RlYm9hcmQgZG9lcyBub3QuCkBAIC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcg
RWRpdG9yOjp1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RG
Ojp1c2VyVmlzaWJsZVN0cmluZyh1cmwpOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5n
KQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmli
dXRlZFN0cmluZyAqc3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxl
bmd0aDsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgp
IGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50
QXR0cmlidXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0
b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0cjxT
aGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAq
c3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBp
ZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRy
aWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBS
VEZGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsg
fV0pOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4
IDNjNWU1NDMyNWI5ZmUyMzU2N2VlNDJkZTk5ZjliNWIxNWM0MmIxMDAuLjA3ODI0ODM2MmFhMDU0
ZGMzYWIwMDAwNDUxNzE4NDE5OGE1ODBmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTIzMjIsNyArMjMyMiw3IEBAIHN0YXRpYyBSZXRh
aW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRh
dGFTb3VyY2UsIE5TCiBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVy
Rm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJ
bWFnZSogY2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCkpIHsKLSAgICAgICAgaWYg
KFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVy
KCkpCisgICAgICAgIGlmIChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBj
YWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKICAgICAgICAgICAgIHJldHVybiBhZG9wdE5T
KFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJl
ZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJl
YWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVh
ZGVyQ29jb2EubW0KaW5kZXggYWRhNjZkMmFjMjk2MzA1ZDYwYzYzMTczNjczMDk4MTY3OWY5ZjBm
YS4uNzZiMWEwMDlkZTQzMGZhM2I1NGQ5YTE1ZTY3OGNkODNmMzE0NWZlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0K
QEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgYm9vbCBzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2ht
ZW50RGF0YShjb25zdCBGcmFtZSYgZnJhbWUpCiAKICNlbmRpZgogCi1zdGF0aWMgUmVmPERvY3Vt
ZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFt
ZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQorc3Rh
dGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVu
dChGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkb2N1bWVudCwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBQcmVzZW50YXRpb25T
aXplIHByZWZlcnJlZFNpemUpCiB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAg
ICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFt
ZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMg
dm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1
bWVudEZyYWdtZW50JiBmcgogICAgIHN0cnVjdCBBdHRhY2htZW50SW5zZXJ0aW9uSW5mbyB7CiAg
ICAgICAgIFN0cmluZyBmaWxlTmFtZTsKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAg
ICAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gZGF0YTsKICAgICAgICAgUmVmPEVsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudDsKICAg
ICB9OwogCkBAIC00MjgsNyArNDI4LDcgQEAgc3RydWN0IE1hcmt1cEFuZEFyY2hpdmUgewogICAg
IFJlZjxBcmNoaXZlPiBhcmNoaXZlOwogfTsKIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3Vw
QW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hvd01JTUVUeXBl
QXNIVE1MKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1h
cmt1cEFuZEFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6
OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKIHsK
ICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoVVJMKCksIGJ1ZmZl
cik7CiAgICAgaWYgKCFhcmNoaXZlKQpAQCAtNDk3LDcgKzQ5Nyw3IEBAIHN0YXRpYyBTdHJpbmcg
c2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5h
dGlvbkRvY3VtCiAgICAgcmV0dXJuIHNhbml0aXplZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVu
dChXVEZNb3ZlKGZyYWdtZW50KSwgKnN0YWdpbmdEb2N1bWVudCwgbXNvTGlzdFF1aXJrcywgbWFy
a3VwQW5kQXJjaGl2ZS5tYXJrdXApOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRX
ZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpy
ZWFkV2ViQXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYg
KGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9j
dW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTMyLDcgKzUzMiw3IEBAIGJvb2wg
V2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFdl
YkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFk
ZXI6OnJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYxMiw3
ICs2MTIsNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRIVE1MKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogICAgIHJldHVybiAhbWFya3VwLmlzRW1wdHkoKTsKIH0KIAotYm9vbCBX
ZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgfHwg
IWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYyNiw3ICs2MjYs
NyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJl
YWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVy
OjpyZWFkUlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFm
cmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MzksNyArNjM5LDcg
QEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
UlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRG
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUuc2V0dGlu
Z3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC02NTMsNyArNjUzLDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJr
dXBSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRN
YXJrdXBSZWFkZXI6OnJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjc2
LDcgKzY3Niw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFBsYWluVGV4dChjb25zdCBT
dHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5
cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKK2Jvb2wgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNl
bnRhdGlvblNpemUpCiB7CiAgICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50KCkpOwogICAgIGF1dG8m
IGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CkBAIC03NDYsNyArNzQ2LDcgQEAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgcmV0dXJuIGF0dGFjaG1lbnQ7CiB9CiAK
LXN0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0
cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQorc3RhdGljIFJlZjxI
VE1MRWxlbWVudD4gYXR0YWNobWVudEZvckRhdGEoRnJhbWUmIGZyYW1lLCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQogewogICAgIFJlZiBkb2N1
bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwogICAgIGF1dG8gYXR0YWNobWVudCA9IEhUTUxBdHRh
Y2htZW50RWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YXR0YWNobWVudFRhZywgZG9jdW1lbnQp
OwpAQCAtODMzLDcgKzgzMyw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNp
emUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVh
ZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVz
ZW50YXRpb25TaXplKQogewogICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250
ZW50UmVhZGVyR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRS
ZWFkZXJHdGsuY3BwCmluZGV4IDYwNDg2ZTcxYWQ1OWZlY2M3MTVmZjBhMDliMWMzNTU4YjdiMzQy
YzIuLmQzZTk4MTliZDUzMWY4NDg2YTMxN2FiOWY5ZWQ4M2E5ODg1YmUyYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCkBAIC03
MSw3ICs3MSw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFBsYWluVGV4dChjb25zdCBT
dHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5
cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKK2Jvb2wgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNl
bnRhdGlvblNpemUpCiB7CiAgICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50KCkpOwogICAgIGF1dG8m
IGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW0KaW5kZXggNWY4YmMzNDc3YzFjYTIxYjBjNzIyNzIyN2FhZjJkYTRiMTkyYmQx
YS4uMmQxOWI5YzdjMjJiM2ViYzI2N2M2NzYxMDZjODkyZjA5Yjc3NzUzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtMTY2LDE1ICsxNjYsMTUgQEAgdm9pZCBF
ZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkKICAgICBjbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChT
dHJpbmcoKSk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6Omlt
YWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxlbWVudCkKK1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VF
bGVtZW50KQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShp
bWFnZUVsZW1lbnQpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdE
YXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKIH0KIAotUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEVk
aXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSkKIHsKICAgICAvLyBGSVhNRTogVGhlIGludGVyZmFjZSB0byB0aGlzIGZ1bmN0aW9uIGlz
IGF3a3dhcmQuIFdlJ2QgcHJvYmFibHkgYmUgYmV0dGVyIG9mZiB3aXRoIHRocmVlIHNlcGFyYXRl
IGZ1bmN0aW9ucy4gQXMgb2YgdGhpcyB3cml0aW5nLCB0aGlzIGlzIG9ubHkgdXNlZCBpbiBXZWJL
aXQyIHRvIGltcGxlbWVudCB0aGUgbWV0aG9kIC1bV0tWaWV3IHdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkOnR5cGVzOl0sIHdoaWNoIGlzIG9ubHkgdXNlZCB0byBzdXBwb3J0IE9TIFggc2Vydmlj
ZXMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKaW5kZXggNDVkOTMzZTEzY2E0ZDIyNTFjNWRlZDg0OGFh
OWU5ODcyYzc2NzQ4OS4uYmNhNjY5NmViZTZmMGVkZGRkZWU3OWI3M2MzZWUxNDQ5NmQ4MmZiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgQmxvYkxvYWRlcjsK
IGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFtOwogY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBFeGNlcHRpb25PcjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKaW5kZXggNTU5
ZWJjYzQ4YzVmMDk2YWMxOWJhZTdkOWY3MThiNzFmMmEzNTMyMi4uNDJmNDE4MGRmYTg0MjdlMGU2
MGY4MWViNzliMTkxODdjYWZkYmExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdv
cmtTZW5kUXVldWUuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgTmV0d29ya1NlbmRRdWV1ZTo6
cHJvY2Vzc01lc3NhZ2VzKCkKICAgICAgICAgYm9vbCBzaG91bGRTdG9wUHJvY2Vzc2luZyA9IGZh
bHNlOwogICAgICAgICBzd2l0Y2hPbihtX3F1ZXVlLmZpcnN0KCksIFt0aGlzXShjb25zdCBDU3Ry
aW5nJiB1dGY4KSB7CiAgICAgICAgICAgICBtX3dyaXRlU3RyaW5nKHV0ZjgpOwotICAgICAgICB9
LCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKKyAgICAgICAgfSwgW3RoaXNdKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgZGF0YSkgewogICAgICAgICAgICAgZGF0YS0+Zm9y
RWFjaFNlZ21lbnQobV93cml0ZVJhd0RhdGEpOwogICAgICAgICB9LCBbdGhpcywgJnNob3VsZFN0
b3BQcm9jZXNzaW5nXShVbmlxdWVSZWY8QmxvYkxvYWRlcj4mIGxvYWRlcikgewogICAgICAgICAg
ICAgYXV0byBlcnJvckNvZGUgPSBsb2FkZXItPmVycm9yQ29kZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaAppbmRleCA1NTFmNzBmOTE2N2IyYmZjYjI0NGJiMmIz
NzAwYmZiYWFmNTQ3OTZjLi5kMjNjZmViYjQ1MDhiYzMwMDkxNWJiOTk2ZDNmMTUwNjJjZTM1MDll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaApAQCAtNDMsNyAr
NDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CiBjbGFzcyBCbG9iTG9h
ZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTmV0d29ya1NlbmRRdWV1ZSA6IHB1YmxpYyBDb250ZXh0
RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzTWVzc2FnZXMoKTsKIAotICAgIHVzaW5nIE1lc3Nh
Z2UgPSBzdGQ6OnZhcmlhbnQ8Q1N0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4sIFVuaXF1ZVJlZjxC
bG9iTG9hZGVyPj47CisgICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxDU3RyaW5nLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIFVuaXF1ZVJlZjxCbG9iTG9hZGVyPj47CiAgICAg
RGVxdWU8TWVzc2FnZT4gbV9xdWV1ZTsKIAogICAgIFdyaXRlU3RyaW5nIG1fd3JpdGVTdHJpbmc7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCmluZGV4IDEw
MTZkY2YzYzE5OWU1NGNhODE0YzI2NDVhOWE4NTk4YTVjMWQzNWUuLjc1MjMwMTdiYTcyOTQwNTYz
Yjc1ZjQ2NmE2OGVkMWNjYjNkZWU4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGly
ZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yNzYsOSArMjc2LDkgQEAgdm9pZCBGVFBEaXJlY3RvcnlE
b2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNvbnN0IFN0cmluZyYgaW5wdXRM
aW5lKQogICAgIGFwcGVuZEVudHJ5KGZpbGVuYW1lLCBwcm9jZXNzRmlsZXNpemVTdHJpbmcocmVz
dWx0LmZpbGVTaXplLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSksIHByb2Nlc3NG
aWxlRGF0ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRUaW1lKSwgcmVzdWx0LnR5cGUgPT0gRlRQRGly
ZWN0b3J5RW50cnkpOwogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGlu
Z3MpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9j
dW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5n
cy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5ncy5mdHBEaXJlY3RvcnlUZW1w
bGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgTE9HKEZUUCwgIkxvYWRlZCBG
VFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4iLCBidWZmZXItPnNpemUoKSk7CiAg
ICAgcmV0dXJuIGJ1ZmZlcjsKQEAgLTI4Niw3ICsyODYsNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25z
dCBTZQogICAgIAogYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50
VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiB0ZW1wbGF0
ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNl
dHRpbmdzKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgU2hhcmVkQnVmZmVyKiB0ZW1wbGF0ZURv
Y3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGRvY3VtZW50KCktPnNldHRp
bmdzKCkpLmxlYWtSZWYoKTsKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBzdG9yaW5nIHRoZSBk
YXRhLCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBpZiB3ZSBjb3VsZCBwYXJzZSB0aGUgdGVt
cGxhdGUgZGF0YSBpbnRvIHRoZQogICAgIC8vIHRlbXBsYXRlIERvY3VtZW50IG9uY2UsIHN0b3Jl
IHRoYXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0IHdoZW5ldmVyIHdlIGdldCBhbiBGVFAgZGly
ZWN0b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2ht
ZW50RWxlbWVudC5jcHAKaW5kZXggNTZhMDZmY2FmMjczZDI1ZGM0Yzc1ZGNlNTY5YWFjOGYxYWE1
OTUyNy4uZDJiODc0MWEwNDQzNDJjN2ZmZDllOGE1MzNjYzhhMTIwZTI5YmFkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMjI3LDcgKzIy
Nyw3IEBAIHN0YXRpYyBib29sIG1pbWVUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdlQXR0YWNo
bWVudChjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUobWltZVR5cGUpIHx8IE1JTUVUeXBlUmVnaXN0cnk6
OmlzUERGTUlNRVR5cGUobWltZVR5cGUpOwogfQogCi12b2lkIEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50
Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBhdXRvKiBob3N0
RWxlbWVudCA9IHNoYWRvd0hvc3QoKTsKICAgICBpZiAoIWlzPEhUTUxJbWFnZUVsZW1lbnQ+KGhv
c3RFbGVtZW50KSB8fCAhYnVmZmVyLT5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuaAppbmRleCA1NzNlYzJlYWUxY2RjMDYwOWYyNjFjMzg0MDBiYjAy
YzQ4MGY3YmRkLi42NjFkZWM5Mzc2ZDhhOWQ2ZDQ3MTdmZDBiNGNlN2Y4MmZmMDNmNzU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKQEAgLTM2LDcgKzM2
LDcgQEAgY2xhc3MgRmlsZTsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJB
dHRhY2htZW50OwogY2xhc3MgU2hhcmVhYmxlQml0bWFwOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVt
ZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKEhUTUxBdHRhY2htZW50RWxlbWVudCk7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVu
dCYpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVBdHRyaWJ1dGVzKHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgbmV3RmlsZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmV3RmlsZW5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwpOwogCiAg
ICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0
aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKaW5kZXggNTE3MWI5Y2RjNzg5MzE3MWUyMWU1ZjRiZjU1MDE3ZWY5NDRh
Yzc5NS4uMWE1NmJjMDM1OWNjZTFmNTBkY2RkYTA2NTIyMmEwMTA5NWE2OTA1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yOTM4LDcgKzI5MzgsNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZO
ZWNlc3NhcnkoKQogICAgIGF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKTsKIH0K
IAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0
aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjZG1DbGllbnRVbnJlcXVl
c3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBtZWRpYVBs
YXllckluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhVHlwZSwgaW5pdERhdGEt
PnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaAppbmRleCA2OTU2Njk0OTYzMTBlZjkxMDhiOTU2ZmRhNDgyMTQzMDE0OTcwZWNiLi42
YzNiNjkzYjdiMTBlZGEzMGU1MWQ0YzY2MzFiZTNmYjUwY2JmODBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNzIwLDcgKzcyMCw3IEBAIHByaXZhdGU6CiAKICAg
ICAvLyBDRE1DbGllbnQKICAgICB2b2lkIGNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNr
SWZOZWNlc3NhcnkoKSBmaW5hbDsKLSAgICB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlh
bGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikg
ZmluYWw7CisgICAgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJl
Y2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRl
eCA0NDJkMDk0NmJlMjUwZGNjZjU5MjdiYWE5Mjc5M2E3MGVlOTE5MzNlLi4wMGQ4ZjIzOWQ3MTI3
YzYxY2FlMWI1OGQ5YzRhMzAzYTliM2M5MDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1
bWVudC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OnVwZGF0ZUR1
cmluZ1BhcnNpbmcoKQogICAgIGlmICghbV9pbWFnZUVsZW1lbnQpCiAgICAgICAgIGNyZWF0ZURv
Y3VtZW50U3RydWN0dXJlKCk7CiAKLSAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSkKKyAgICBpZiAoUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCkpCiAg
ICAgICAgIG1faW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpLT51cGRhdGVCdWZmZXIoKmJ1ZmZl
cik7CiAKICAgICBpbWFnZVVwZGF0ZWQoKTsKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEltYWdl
RG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygpCiB7CiAgICAgaWYgKCFwYXJzZXIoKS0+aXNTdG9w
cGVkKCkgJiYgbV9pbWFnZUVsZW1lbnQpIHsKICAgICAgICAgQ2FjaGVkSW1hZ2UmIGNhY2hlZElt
YWdlID0gKm1faW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpOwotICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICAgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBsb2FkZXIoKS0+bWFpblJlc291
cmNlRGF0YSgpOwogCiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBtdWx0aXBhcnQgaW1hZ2UsIG1h
a2UgYSBjb3B5IG9mIHRoZSBjdXJyZW50IHBhcnQsIHNpbmNlIHRoZSByZXNvdXJjZSBkYXRhCiAg
ICAgICAgIC8vIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIG5leHQgcGFydC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAK
aW5kZXggYTdjYTcxNjJkNzkxZWQ3ZmJhOGNjOTFjMjFhMmNmM2FmNmU2OWE3ZS4uMTg3OTNmZjA2
NjMzOGZiNjBhMzRkZWM5MDliYzJkZGQyOGJlYWZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTg1MCw3ICs4
NTAsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bQogICAgICAgICBuZXR3b3JrQWdlbnQtPmlu
dGVyY2VwdFJlcXVlc3QobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4m
JiBoYW5kbGVyKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3Bv
bnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBpZiAoYXV0
byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50
KCkpCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVzcG9uc2UocmVzcG9uc2UsIGlk
ZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDhlNjVjNGViMTAyMzM1MjFm
NDhjN2Y0YjEyMGFkMmM4OTA5YTA3YmEuLmQyOTU3ODEwZDgzODJjOTM1MWQ1YTkzZjE0NGFlZDE0
OTNiY2M2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
IGNsYXNzIFNoYWRvd1Jvb3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogY2xhc3MgVGltZXJCYXNlOwogY2xhc3MgV2ViS2l0TmFtZWRGbG93Owog
Y2xhc3MgV2ViU29ja2V0Q2hhbm5lbDsKQEAgLTIzNiw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSYsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lk
IGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShj
b25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9u
c2UoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lk
IGFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNv
bnNvbGVNZXNzYWdlPik7CiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNv
bGVNZXNzYWdlPik7CkBAIC00NDEsNyArNDQxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9u
c2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAg
ICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IFJlc291cmNlTG9hZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4m
Jik7Ci0gICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0
aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgc3Rk
Ojp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKIApAQCAtMTI4OSw3ICsx
Mjg5LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRS
ZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIEYKICAgICAgICAgaW50ZXJjZXB0UmVxdWVz
dEltcGwoKmFnZW50cywgbG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFt
ZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCitpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZy
YW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJj
ZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAgaWYgKGF1dG8qIGFnZW50cyA9IGlu
c3RydW1lbnRpbmdBZ2VudHMoZnJhbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcAppbmRleCA2MWU0
YmMzYmEwMTllZTI1ZTVjOGJjMjIxZGZmNjA3N2VkZGI4NjNkLi5mMDY0MDNhNjIzNGI0MmI2YWQy
YTgwYjAxOTRhNTk2ZDg5ZjZlNmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcApAQCAtNDUsNyAr
NDUsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVx
dWVzdEludGVybmFsKFJlc291cmNlTG9hZGVyJiBsbwogICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aW50ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2VJbnRl
cm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhh
bmRsZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVz
cG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6aW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3Zl
KGhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaAppbmRleCBmNzYxMTRjZTk4ZjQyYTdmZjkw
NmE0OGQwNDIwYjk2MzA1ZDM2OTE0Li4wN2I0MjFiNTljMTU1NWUxYTI5MWUxOGViYjI2MjIxMjJm
MTY1OGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCkBAIC0zNiwyMCArMzYsMjAgQEAgY2xhc3MgRnJh
bWU7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJl
cXVlc3QoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMg
Ym9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9h
ZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJik7Ci0gICAgc3Rh
dGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAg
IHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+KT4mJik7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVx
dWVzdEludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAg
c3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1
ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZUludGVybmFs
KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNw
b25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiB9OwogCiBp
bmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2Vw
dFJlcXVlc3QoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCkBAIC03Niw3ICs3Niw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYgbG9hCiAgICAgaW50ZXJj
ZXB0UmVxdWVzdEludGVybmFsKGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLWlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVy
KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRS
ZXNwb25zZShjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGZyYW1lLCByZXNwb25zZSkpOwogICAg
IGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoKmZyYW1lLCByZXNwb25zZSwgaWRlbnRpZmllciwg
V1RGTW92ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA4YTYxNTA0MzkxMDk5ZmZlMmU0YTA2ZTc0ODk2ZWY4
ODhlZDA0NjAzLi5mMzJmNjYwYjkxNzNiYWU4ZDVjZDlhMTMwZWFlNThiOTdkNWVjZTg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAK
QEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRDYWNoZWRS
ZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzbwogICAgIHJlc291cmNl
RGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2UoY2FjaGVkUmVzb3VyY2UpOwogfQogCi12b2lkIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hh
cmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKIHsKICAg
ICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChy
ZXF1ZXN0SWQpOwogICAgIGlmICghcmVzb3VyY2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBkNzRlZTEwOTMzZDdlZTRlNWY3
ZWY5YjdjNDA5MDlmZTk3ZDA3YzlkLi5lZTM5NDU3Zjc2NzJlYWNhYWM5MGE1YjZiYzg4MTEwOGNi
ZGE4YTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYWNo
ZWRSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0UmVzb3VyY2VE
ZWNvZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZXNE
YXRhIHsKQEAgLTkwLDggKzkwLDggQEAgcHVibGljOgogICAgICAgICBSZWZQdHI8VGV4dFJlc291
cmNlRGVjb2Rlcj4gZGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rlci5jb3B5UmVmKCk7
IH0KICAgICAgICAgdm9pZCBzZXREZWNvZGVyKFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiYm
IGRlY29kZXIpIHsgbV9kZWNvZGVyID0gV1RGTW92ZShkZWNvZGVyKTsgfQogCi0gICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmNvcHlS
ZWYoKTsgfQotICAgICAgICB2b2lkIHNldEJ1ZmZlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikgeyBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsgfQorICAgICAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuY29w
eVJlZigpOyB9CisgICAgICAgIHZvaWQgc2V0QnVmZmVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsgfQogCiAgICAg
ICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiYgY2VydGlmaWNhdGVJbmZv
KCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0ZUluZm87IH0KICAgICAgICAgdm9pZCBzZXRD
ZXJ0aWZpY2F0ZUluZm8oY29uc3Qgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0
aWZpY2F0ZUluZm8pIHsgbV9jZXJ0aWZpY2F0ZUluZm8gPSBjZXJ0aWZpY2F0ZUluZm87IH0KQEAg
LTEyMiw3ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAg
ICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwogICAgICAgICBVbmlx
dWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9kYXRhQnVmZmVyOwotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4g
bV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJlc291
cmNlIHsgbnVsbHB0ciB9OwogICAgICAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlw
ZSBtX3R5cGUgeyBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UgfTsKQEAgLTE0Niw3
ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291
cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgpOwogICAgIHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBDYWNoZWRSZXNvdXJjZSopOwotICAgIHZvaWQgYWRkUmVzb3VyY2VT
aGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSk7CisgICAgdm9pZCBhZGRSZXNvdXJj
ZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSk7CiAgICAgUmVz
b3VyY2VEYXRhIGNvbnN0KiBkYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICBSZXNv
dXJjZURhdGEgY29uc3QqIGRhdGFGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIFZlY3Rv
cjxTdHJpbmc+IHJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKaW5kZXggZDE1Y2I0Yjg1MTc4NjdjMzQ4YzE3OTc0ZjI3MTU3NDY1NTlkYTQ1MC4u
MTg5ZjI2YjA5OGI3MzYxZGNmOGU5ZDY0ZTM1OWU3NWZkOWMwOTcyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmNwcApAQCAtMTE0MCw3ICsxMTQwLDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Omlu
dGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgRnVuY3Rpb248dm8KICAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVzdEludGVyY2VwdGVkKHJlcXVlc3RJZCwgYnVpbGRP
YmplY3RGb3JSZXNvdXJjZVJlcXVlc3QobG9hZGVyLnJlcXVlc3QoKSkpOwogfQogCi12b2lkIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPik+JiYgaGFuZGxlcikKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxl
cikKIHsKICAgICBBU1NFUlQobV9lbmFibGVkKTsKICAgICBBU1NFUlQobV9pbnRlcmNlcHRpb25F
bmFibGVkKTsKQEAgLTEyNDMsNyArMTI0Myw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZv
aWQ+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0V2l0aFJlc3BvbnNlKGNvbnN0CiAg
ICAgICAgIG92ZXJyaWRlUmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1l
OjpDb250ZW50VHlwZSwgb3ZlcnJpZGVSZXNwb25zZS5taW1lVHlwZSgpKTsKICAgICB9CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IG92ZXJyaWRlRGF0YTsKICAgICBpZiAoYmFzZTY0RW5jb2RlZCkgewog
ICAgICAgICBhdXRvIGJ1ZmZlciA9IGJhc2U2NERlY29kZShjb250ZW50KTsKICAgICAgICAgaWYg
KCFidWZmZXIpCkBAIC0xMjcxLDcgKzEyNzEsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2
b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9ucwog
ICAgIGlmIChsb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZCgiVW5hYmxlIHRvIGZ1bGZpbGwgcmVxdWVzdCwgaXQgaGFzIGFscmVhZHkg
YmVlbiBwcm9jZXNzZWQiX3MpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICBpZiAoYmFzZTY0RW5j
b2RlZCkgewogICAgICAgICBhdXRvIGJ1ZmZlciA9IGJhc2U2NERlY29kZShjb250ZW50KTsKICAg
ICAgICAgaWYgKCFidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCA4ZjZmYmNjMjkzYWViZjhiOWQ1
Yzk0NWQyODI5YTE1MjdiNzRiYzdmLi42YmNkODdkZGNkOGIwNDQxMzA4ZDFkMDFlY2E2YjBlNmRh
MTQxM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCB3aWxsSW50ZXJjZXB0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIGJvb2wgc2hv
dWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBib29sIHNo
b3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lk
IGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgdm9pZCBpbnRlcmNlcHRSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKICAgICB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3Vy
Y2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKIAog
ICAgIHZvaWQgc2VhcmNoT3RoZXJSZXF1ZXN0cyhjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHBy
ZXNzaW9uJiwgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2Vh
cmNoUmVzdWx0Pj4mKTsKQEAgLTE4NSw3ICsxODUsNyBAQCBwcml2YXRlOgogICAgICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UpOwogICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6Ci0gICAgICAgIFBlbmRpbmdJbnRlcmNl
cHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBvcmlnaW5hbFJlc3BvbnNlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIFBlbmRpbmdJbnRlcmNlcHRS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBvcmlnaW5hbFJlc3BvbnNlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICAgICAgOiBtX29y
aWdpbmFsUmVzcG9uc2Uob3JpZ2luYWxSZXNwb25zZSkKICAgICAgICAgICAgICwgbV9jb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgeyB9CkBAIC0y
MDIsNyArMjAyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJlc3BvbmQobV9vcmlnaW5hbFJl
c3BvbnNlLCBudWxscHRyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgcmVzcG9uZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSkK
KyAgICAgICAgdm9pZCByZXNwb25kKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSkKICAgICAgICAgewogICAgICAgICAg
ICAgQVNTRVJUKCFtX3Jlc3BvbmRlZCk7CiAgICAgICAgICAgICBpZiAobV9yZXNwb25kZWQpCkBA
IC0yMTUsNyArMjE1LDcgQEAgcHJpdmF0ZToKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlc291
cmNlUmVzcG9uc2UgbV9vcmlnaW5hbFJlc3BvbnNlOwotICAgICAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+IG1f
Y29tcGxldGlvbkhhbmRsZXI7CisgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+IG1fY29t
cGxldGlvbkhhbmRsZXI7CiAgICAgICAgIGJvb2wgbV9yZXNwb25kZWQgeyBmYWxzZSB9OwogICAg
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcAppbmRleCA1Y2Q5OGYzMzIwODIyYjgxMzJkMzdlMDAzZWU0MGE4N2Uw
NmYzMzU0Li4xYjY0NmFhMjE3M2FiNTRhM2YxYWJkY2I1MDIwNGFkZTk4YzA3M2E2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwCkBAIC0xMDAsMTMgKzEwMCwxMyBAQCBzdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29u
c3QgdWludDhfdCogYnVmZmVyLCB1bnNpZ25lZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleAogCiBi
b29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNlQ29udGVudChGcmFtZSogZnJhbWUs
IGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1h
aW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEo
KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdp
dGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yUGFnZUFnZW50Ojpz
aGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiBy
ZXN1bHQpCitib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKICAg
ICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGlu
Z05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CkBAIC0xNTYsNyArMTU2LDcgQEAg
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudChQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBGcmEKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAg
aWYgKGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsLCBsb2FkZXItPnVybCgpKSkg
ewogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggYjUxYWRkYjFi
ZDhmMmNjZTY5NTYwNzk5Y2QxZDk1MmQyZGU0MjgzOC4uM2Q1ZTU2NmRiZTBjNWVjMTFkOWU4ZGY2
N2ZjZjBhNzA5ODhhMmY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIEluc3Bl
Y3RvckNsaWVudDsKIGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBQYWdlOwogY2xhc3Mg
UmVuZGVyT2JqZWN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50IGZpbmFsIDogcHVibGljIEluc3Bl
Y3RvckFnZW50QmFzZSwgcHVibGljIEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yUGFnZUFnZW50KTsKQEAg
LTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgICAgICBPdGhlclJlc291cmNlLAogICAgIH07CiAK
LSAgICBzdGF0aWMgYm9vbCBzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2Rl
LCBTdHJpbmcqIHJlc3VsdCk7CisgICAgc3RhdGljIGJvb2wgc2hhcmVkQnVmZmVyQ29udGVudChS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rp
bmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKICAgICBzdGF0
aWMgVmVjdG9yPENhY2hlZFJlc291cmNlKj4gY2FjaGVkUmVzb3VyY2VzRm9yRnJhbWUoRnJhbWUq
KTsKICAgICBzdGF0aWMgdm9pZCByZXNvdXJjZUNvbnRlbnQoSW5zcGVjdG9yOjpQcm90b2NvbDo6
RXJyb3JTdHJpbmcmLCBGcmFtZSosIGNvbnN0IFVSTCYsIFN0cmluZyogcmVzdWx0LCBib29sKiBi
YXNlNjRFbmNvZGVkKTsKICAgICBzdGF0aWMgU3RyaW5nIHNvdXJjZU1hcFVSTEZvclJlc291cmNl
KENhY2hlZFJlc291cmNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29u
dGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAK
aW5kZXggOTc0ZjIyYTJkYTdhMDJjNjQ4OWMxYjUwYTVhMjIwZmU0NGIxOTYzMC4uNmFlNTI2NTk3
Y2QyODYzMWJlNzk1MGZjMzM1MzZmOGYzNDdkN2FmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b250ZW50RmlsdGVyLmNwcApAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6
aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
IHsKICAgICBBU1NFUlQod2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpKTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSB7IG1fYmxvY2tpbmdD
b250ZW50RmlsdGVyLT5yZXBsYWNlbWVudERhdGEoKSB9OworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEgeyBtX2Jsb2NraW5nQ29udGVudEZpbHRlci0+
cmVwbGFjZW1lbnREYXRhKCkgfTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgVVJM
KCksICJ0ZXh0L2h0bWwiX3MsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4ocmVwbGFjZW1lbnREYXRh
LT5zaXplKCkpLCAiVVRGLTgiX3MgfTsKICAgICBTdWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0
YSB7IFdURk1vdmUocmVwbGFjZW1lbnREYXRhKSwgZXJyb3IuZmFpbGluZ1VSTCgpLCByZXNwb25z
ZSwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVuIH07CiAg
ICAgU2V0Rm9yU2NvcGU8Ym9vbD4gbG9hZGluZ0Jsb2NrZWRQYWdlIHsgbV9pc0xvYWRpbmdCbG9j
a2VkUGFnZSwgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCBkMDk2MWFmYzdiN2U3M2U2MTdlNzgwNmE2
N2M2ZmZkMDlmMTVjYTkzLi45NGMzNmVmNTA3ZWYwMzdiNzA3YzkwZDE5YTdhMWE3NDQ1YjFmNzBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRD
aGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGln
aHRDaGVja2VyLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGln
aHRDaGVja2VyOjpkb1ByZWZsaWdodChEb2N1bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwK
ICAgICBSZXNvdXJjZVJlcXVlc3QgcHJlZmxpZ2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRy
b2xQcmVmbGlnaHRSZXF1ZXN0KHJlcXVlc3QsIGxvYWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2Fk
ZXIucmVmZXJyZXIoKSk7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRh
OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIg
PSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KHByZWZsaWdodFJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFz
a0NsaWVudEZvckNyZWRlbnRpYWxzLCBGZXRjaE9wdGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNw
b25zZSwgZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmlu
ZGV4IDZmZWI4ZjVhYmU1YmE0OTI4MDZlYWU2NTUwNTI5MWNkNmZhNzc4ODEuLjNiOTBlZjRjNTgy
N2U2YzBiNDliMzQ2NTZiM2NkNzFhOGVkYTk2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIERvY3VtZW50TG9hZGVyOjp+RG9j
dW1lbnRMb2FkZXIoKQogI2VuZGlmCiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IERvY3VtZW50
TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAg
aWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbV9zdWJzdGl0
dXRlRGF0YS5jb250ZW50KCktPmNvcHkoKTsKQEAgLTE2NTIsNyArMTY1Miw3IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OmNsZWFyQXJjaGl2ZVJlc291cmNlcygpCiAgICAgbV9zdWJzdGl0dXRlUmVz
b3VyY2VEZWxpdmVyeVRpbWVyLnN0b3AoKTsKIH0KIAotQ29udGlndW91c1NoYXJlZEJ1ZmZlciog
RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKK1NoYXJlZEJ1ZmZlciog
RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9wYXJzZWRBcmNoaXZlRGF0YS5nZXQoKTsKIH0KQEAgLTE2NzEsNyArMTY3MSw3IEBAIEFyY2hp
dmVSZXNvdXJjZSogRG9jdW1lbnRMb2FkZXI6OmFyY2hpdmVSZXNvdXJjZUZvclVSTChjb25zdCBV
UkwmIHVybCkgY29uc3QKIAogUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9jdW1lbnRMb2FkZXI6
Om1haW5SZXNvdXJjZSgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9
IG1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
ZGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIGRhdGEg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8mIHJlc3BvbnNlID0gdGhpcy0+cmVz
cG9uc2UoKTsKQEAgLTIyNTUsNyArMjI1NSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJl
RmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQoKQogCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0
dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEo
KTsKICAgICBjb21taXRMb2FkKHJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCByZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKQEAgLTIyOTIsNyArMjI5Miw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQogICAgIG1fZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLmdldExvYWREZWNpc2lvbkZvckljb25zKGljb25EZWNpc2lvbnMpOwogfQogCi12
b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNp
b24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJl
ZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGlk
R2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBpY29uID0gbV9pY29uc1BlbmRpbmdMb2Fk
RGVjaXNpb24udGFrZShsb2FkSWRlbnRpZmllcik7CiAKQEAgLTIzMTMsNyArMjMxMyw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lv
biwgdWludDY0X3QgbG9hZElkZW50CiAgICAgcmF3SWNvbkxvYWRlci0+c3RhcnRMb2FkaW5nKCk7
CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRl
ciYgbG9hZGVyLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmZp
bmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYgbG9hZGVyLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBidWZmZXIpCiB7CiAgICAgLy8gSWYgdGhlIERvY3VtZW50TG9hZGVyIGhhcyBkZXRhY2hl
ZCBmcm9tIGl0cyBmcmFtZSwgYWxsIGljb24gbG9hZHMgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVu
IGNhbmNlbGxlZC4KICAgICBBU1NFUlQobV9mcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCmluZGV4IDdjZjMwNWQ3MDVkNDg0NzJmZmM4NzY2YmYxMWNiNjRmZjhkZDJk
YTguLjMzOTg3M2Q1ZDNmYjliYjMwMDQ5OGNkNmYzN2NiZjY1Yjc4YWY1YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NSw3ICs3NSw3IEBAIGNsYXNzIEFyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENh
Y2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVudEZpbHRlcjsKLWNsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVy
RmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7CkBAIC04NCw3ICs4NCw3IEBA
IGNsYXNzIEljb25Mb2FkZXI7CiBjbGFzcyBQYWdlOwogY2xhc3MgUHJldmlld0NvbnZlcnRlcjsK
IGNsYXNzIFJlc291cmNlTG9hZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNXQ2xpZW50Q29ubmVjdGlvbjsKIGNsYXNzIFN1YnJl
c291cmNlTG9hZGVyOwogY2xhc3MgU3Vic3RpdHV0ZVJlc291cmNlOwpAQCAtMTcyLDcgKzE3Miw3
IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRl
cigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN1YnJlc291cmNlTG9hZGVyKiBtYWluUmVz
b3VyY2VMb2FkZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtYWluUmVzb3VyY2VEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICAK
ICAgICBEb2N1bWVudFdyaXRlciYgd3JpdGVyKCkgY29uc3QgeyByZXR1cm4gbV93cml0ZXI7IH0K
IApAQCAtMjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFk
ZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YWRkQXJjaGl2ZVJlc291cmNlKFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYpOwogICAgIFJlZlB0cjxB
cmNoaXZlPiBwb3BBcmNoaXZlRm9yU3ViZnJhbWUoY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNv
bnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHBh
cnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVy
KiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
Y2hlZHVsZUFyY2hpdmVMb2FkKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik7CiAjZW5kaWYKQEAgLTM5Myw4ICszOTMsOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZv
aWQgc3RhcnRJY29uTG9hZGluZygpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkR2V0TG9h
ZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4mJik7Ci0gICAgdm9pZCBmaW5p
c2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBTaGFyZWRCdWZmZXIqKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWlu
dDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciopPiYmKTsKKyAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRl
ciYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIAogICAgIGNvbnN0IFZlY3RvcjxMaW5rSWNv
bj4mIGxpbmtJY29ucygpIGNvbnN0IHsgcmV0dXJuIG1fbGlua0ljb25zOyB9CiAKQEAgLTYwMyw3
ICs2MDMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcmNoaXZlUmVzb3VyY2VD
b2xsZWN0aW9uPiBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiAjaWYgRU5BQkxFKFdFQl9B
UkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgUmVmUHRyPEFyY2hpdmU+IG1fYXJjaGl2ZTsK
LSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOwogI2VuZGlmCiAK
ICAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXNvdXJjZXNDbGllbnRLbm93c0Fib3V0OwpAQCAtNjIy
LDcgKzYyMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JOYXZpZ2F0aW9uUG9s
aWN5IHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIExpbmtJY29uPiBtX2ljb25z
UGVuZGluZ0xvYWREZWNpc2lvbjsKLSAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxJY29uTG9h
ZGVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4+IG1faWNvbkxvYWRl
cnM7CisgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8SWNvbkxvYWRlcj4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPj4gbV9pY29uTG9hZGVyczsKICAg
ICBWZWN0b3I8TGlua0ljb24+IG1fbGlua0ljb25zOwogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmNwcAppbmRleCBjNzA5NjQxMGE3YWEwNTRlNTFkNzA0NDVkNjYzNTJmMjgxNDA2
OGE5Li45YTRkNGIyMTJmZGZkMjgxODQzNzZkNGI3MGM3ZGE0ZjNlYjdjODMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAt
NTk1LDcgKzU5NSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAgbG9hZFRpbWluZy5t
YXJrU3RhcnRUaW1lKCk7CiAKICAgICAvLyBGSVhNRTogVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMu
c25pZmZDb250ZW50IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN5bmNocm9ub3VzIHJlcXVlc3RzLgot
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlOwogICAgIGF1dG8gaWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlm
aWVyPFJlc291cmNlTG9hZGVyPihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCA5ZTlmMjk0NjcyZjNk
NjIyNTAzYjFlNTViMTc5NmYwY2ExZWNmYTcwLi5jMDg3ODVhZjhmYzkyNGUzNTNmZmQ0ODNkZjdi
OTVkYTI0NDNhZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAt
Mjc3LDcgKzI3Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2Vs
ZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgZmluYWwgeyB9CiAg
ICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsIHsgfQotICAgIHZv
aWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JikgZmluYWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQogICAgIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNG
b3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIGZpbmFsIHsgfQogICAgIHZvaWQg
aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQp
IGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA2MzA5
OWI0OWZhZGY3Yjc1NDc2Yjc5YWE3YjAxNDZlMzA3NzQ2NDczLi41NjYxMDgzODA1NjY0ZTAxMTlm
MTFmZmMzMmVhN2UxOTI3ZmM2NTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKQEAgLTMxMDEsNyArMzEwMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVz
dChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWZlCiAgICAgfSk7
CiB9CiAKLVJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNl
U3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENyZWRl
bnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiBv
cHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKK1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFt
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwg
Y29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5h
bFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFTU0VSVChtX2Zy
YW1lLmRvY3VtZW50KCkpOwogICAgIFN0cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5Ojpn
ZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3ko
KSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcigpKTsKQEAgLTMxNDksNyArMzE0OSw3
IEBAIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlCiAgICAgICAgIGlmICghZG9jdW1lbnRMb2FkZXIo
KS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRTeW5jaHJvbm91c2x5KG5ld1JlcXVl
c3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSkpIHsKICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBidWZmZXI7CiAgICAgICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRl
Z3koKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseSgqdGhpcywgaWRlbnRpZmllciwgbmV3UmVx
dWVzdCwgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgb3B0aW9ucywgb3JpZ2luYWxSZXF1ZXN0SGVh
ZGVycywgZXJyb3IsIHJlc3BvbnNlLCBidWZmZXIpOwotICAgICAgICAgICAgZGF0YSA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAg
ZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgICAg
ICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZEZhbGxi
YWNrU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogICAg
ICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmxvZ1N1YnJlc291cmNlTG9h
ZGluZygmbV9mcmFtZSwgbmV3UmVxdWVzdCwgcmVzcG9uc2UsCiAgICAgICAgICAgICAgICAgKGlz
U2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlvbnMuZGVzdGluYXRpb24pID8gUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6OlllcyA6IFJlc291cmNlTG9h
ZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpObykpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBhNTJkN2Y5MWM2MjYyMWZkMzdjMTBiZjBhOWEwMWZh
ZmI2OGIwYzY1Li4wOGEwYWUxOWEzNzk4NDZmMTU3NTY0YzJkMGM4MzJiMjc0ODM2MDM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNTksNyArNTksNyBAQCBjbGFzcyBDYWNo
ZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBj
bGFzcyBDaHJvbWU7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBE
b2N1bWVudExvYWRlcjsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdF
Ql9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2Fk
QXJjaGl2ZShSZWY8QXJjaGl2ZT4mJik7CiAjZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBD
bGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVh
ZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpOworICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBs
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENsaWVudENy
ZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0IEhUVFBIZWFkZXJNYXAm
LCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiBkYXRhKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3km
LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3Bl
bmVyUG9saWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRy
aWJ1dGUgPSBudWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6
b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAg
IHZvaWQgY2hhbmdlTG9jYXRpb24oRnJhbWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRy
LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNGZkNjM3
YTkwMTRhNWQ0MWEyMjZlZTQ1OTE3YjZiM2U5YTc5MGViYi4uZWU5ZjNkMGM5ODRkNDU1Y2JiOTFi
NDYwYzFiYzEyODk4ZDEyMzY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmgKQEAgLTk4LDcgKzk4LDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiBjbGFzcyBXaWRnZXQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xvYWRlclN0cmF0ZWd5LmgKaW5kZXggYWVmNjY4YmQ2M2VkNWZjZDQ1ZTYxZTlkMWYxMDdj
ZmI2YWVmMjY0Yi4uMjlkMmUzZjQ2MTQwYWFhNTExNjBlNmEyODU2MmYzNzBlMzcxZWIyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xh
c3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiAK
IHN0cnVjdCBGZXRjaE9wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAppbmRleCA2MzM3NTU5NjMyMDAxNDYzODI4OWUy
ODI2MDRjNTViMGFmNDQ1MzEzLi42MDQzYWM5YmUyNjdlYTRmYmM3MWUxMTE4YjkwNzkxNTVlMzkx
NTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlci5jcHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxlCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVu
Y29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5
bG9hZFR5cGUpCit2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVk
RGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQ
YXlsb2FkVHlwZSkKIHsKICAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3Rl
Y3RlZFRoaXMoKnRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlci5oCmluZGV4IDQ4YmIyMTUzYzkzZjJkYzc1NGUyMDczMjI1MmMw
NTA5Y2Y3MDRhNDEuLmI1MTc0ZWRjOTRiOTkyMzkwMjA1ZjBmYWQ0NTJlYTVhYzM4Nzg5MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9u
c2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNr
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5k
bGVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1
bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92
ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAK
QEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25z
dCB1aW50OF90KiwgaW50LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAKICAg
ICB2b2lkIG5vdGlmeURvbmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcAppbmRleCBjNjI3NzY4NThhNmRjNWFmZmQz
NmRjOWU3ODVjOGJkMjQ3MmJiNzRkLi5kOTRiNzAwMDc0MWNkOTEyYjkxNzNlMmIzNzQ2ZDRkYThi
MzY4YTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlw
dG9ncmFwaGljRGlnZXN0LmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIFJlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yQnl0ZXMoUmVzb3VyY2VDcnlwdG9ncmFw
aGljRGlnCiAgICAgcmV0dXJuIHsgYWxnb3JpdGhtLCBjcnlwdG9EaWdlc3QtPmNvbXB1dGVIYXNo
KCkgfTsKIH0KIAotUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdl
c3RGb3JTaGFyZWRCdWZmZXIoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0g
YWxnb3JpdGhtLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK1Jlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5
cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogYnVmZmVyKQogewogICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlw
dG9EaWdlc3Q6OmNyZWF0ZSh0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShhbGdvcml0aG0pKTsKICAg
ICBpZiAoYnVmZmVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0LmgKaW5kZXggYWVhM2RjNTdjODc4MzEzMDEzYTViMTZjOTM5Yjc3
NGVkNDg0MzI0Yy4uODNiODYxM2NmZGEyMzI5YWUzMGJiZjZhYmMxNGI5OWQ0NDIzN2IwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdl
c3QuaApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNo
ZWRSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIHN0cnVjdCBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgewogICAgIGVudW0g
Y2xhc3MgQWxnb3JpdGhtIHsKQEAgLTc1LDcgKzc1LDcgQEAgc3RkOjpvcHRpb25hbDxFbmNvZGVk
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUVuY29kZWRDcnlwdG9ncmFwaGljRGln
ZXMKIAogc3RkOjpvcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IGRlY29kZUVu
Y29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QoY29uc3QgRW5jb2RlZFJlc291cmNlQ3J5
cHRvZ3JhcGhpY0RpZ2VzdCYpOwogCi1SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRv
Z3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6
OkFsZ29yaXRobSwgY29uc3QgU2hhcmVkQnVmZmVyKik7CitSZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwog
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhS
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29uc3Qgdm9pZCogYnl0ZXMs
IHNpemVfdCBsZW5ndGgpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcAppbmRleCA1ZWIwNjUzNjBiMTBkZjgxYjU2YmU2OTQ3NTFkY2Q5MzFlN2RiMGY2Li5kZjEz
OTU4OGU4ZDUyNTJiM2VlYzYxOTNhZTYxYWEyNDc4NmIyMTljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjppbml0KFJlc291cmNlUmVxdWVzdCYmIGNsaWVudFJlcXVlc3QsIENvbXBsZXRpb25I
YW5kbGVyPHZvaQogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkZWxpdmVyUmVz
cG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRlbGl2ZXJSZXNwb25z
ZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBkaWRSZWNlaXZlUmVzcG9uc2UocmVz
cG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RG
TW92ZShidWZmZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3Rh
dGUoKSkKQEAgLTMzMCw3ICszMzAsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNo
VG9TdWJzdGl0dXRlUmVzb3VyY2UoKQogICAgICAgICBtX2hhbmRsZS0+Y2FuY2VsKCk7CiB9CiAK
LXZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgsIFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGlmICht
X29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05v
dEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoLCBTaGFyZQogICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKGRhdGEsIGxl
bmd0aCk7CiB9CiAKLWNvbnN0IFNoYXJlZEJ1ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291cmNl
RGF0YSgpIGNvbnN0Citjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRl
cjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9yZXNvdXJjZURhdGEtPmdl
dCgpLmdldCgpOwogfQpAQCAtNTUyLDE0ICs1NTIsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25n
IGwKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5j
b2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3Zv
aWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxs
cHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5
cGUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRh
dGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91
bGQgb25seSBnZXQgZGF0YStsZW5ndGggKk9SKiBhIFNoYXJlZEJ1ZmZlci4KKyAgICAvLyBUaGlz
IG1ldGhvZCBzaG91bGQgb25seSBnZXQgZGF0YStsZW5ndGggKk9SKiBhIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIuCiAgICAgQVNTRVJUKCFidWZmZXIgfHwgKCFkYXRhICYmICFsZW5ndGgpKTsKIAog
ICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlzIGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRk
aXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwpAQCAtNzM2LDcgKzczNiw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduCiAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoLCBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGRpZFJlY2VpdmVCdWZmZXIoV1RG
TW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IGNmODIxNzRiZThlZDg2N2Q0
NzgzZWNhYTEzNmI1NzgzOTJjMjgwYTcuLjU0YjFiODY2ZGY4OTZhODRiNGNhMjk3ZWU0NzZkNmQw
YjY2MWZkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC01Niw3
ICs1Niw3IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXI7CiBjbGFzcyBMZWdhY3lQ
cmV2aWV3TG9hZGVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1
aWxkZXI7CiAKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFJlc291cmNl
TG9hZGVyKTsKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGlu
aXQoUmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwog
Ci0gICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRlbGl2ZXJSZXNwb25zZUFuZERh
dGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0
TG9hZGluZygpCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBy
ZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Uo
KSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAKLSAgICBjb25zdCBTaGFyZWRCdWZmZXIq
IHJlc291cmNlRGF0YSgpIGNvbnN0OworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURhdGEoKTsKICAg
ICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpAQCAtMTEw
LDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWdu
ZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0Jl
U2VudCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25I
YW5kbGVyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCos
IHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwg
bG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCkBAIC0xNjksNyAr
MTY5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCB3YXNDYW5jZWxsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2NhbmNlbGxhdGlvblN0YXR1cyA+PSBDYW5jZWxsZWQ7IH0KIAotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBl
KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2ln
bmVkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIAogICAgIHZvaWQgc2V0UmVmZXJyZXJQ
b2xpY3koUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3kpIHsgbV9vcHRpb25zLnJlZmVycmVy
UG9saWN5ID0gcmVmZXJyZXJQb2xpY3k7IH0KICAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBv
bGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5yZWZlcnJlclBvbGljeTsgfQpAQCAtMTk0
LDcgKzE5NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDYW5jZWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSA9IDA7CiAKLSAgICB2b2lkIGFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiwgdW5zaWduZWQsIFNoYXJlZEJ1ZmZlciosIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9p
ZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiwgRGF0YVBheWxvYWRUeXBlKTsKICAgICB2b2lkIGxvYWREYXRhVVJMKCk7CiAg
ICAgdm9pZCBmaW5pc2hOZXR3b3JrTG9hZCgpOwogCkBAIC0yMDUsNyArMjA1LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVz
b3VyY2VSZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJl
cXVlc3QmJiwgUmVzb3VyY2VSZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUq
LCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdhc0Jsb2NrZWQoUmVzb3VyY2VI
YW5kbGUqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IDcxOTY4MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRiMmVlYWEuLjM3
ZDBiYjgyMWFiZDg2YTliNTYwNmUxMjdlZmM5NDEyYTUxYmIxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTMwLDcgKzUzMCw3IEBAIHZvaWQg
U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCwgbG9uCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5n
dGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBk
YXRhUGF5bG9hZFR5cGUpCit2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogI2lmIFVTRShR
VUlDS19MT09LKQogICAgIGlmIChhdXRvIHByZXZpZXdMb2FkZXIgPSBtX3ByZXZpZXdMb2FkZXIu
Z2V0KCkpIHsKQEAgLTU0Miw3ICs1NDIsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZQogICAg
IGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNv
ZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
bGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsK
ICAgICBBU1NFUlQobV9yZXNvdXJjZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmgKaW5kZXggMzcyM2I2YjlhYjlmZGRhYWE1NTc0YmZiMGU2ZjM4Y2VkN2FlZmI3
NS4uODMyYzlmMGU3M2QzODQ2NGE3OTVmNDAzODYwZjc5YzM0ZTczYmM3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVu
c2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWls
KGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxDYW5jZWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgog
ICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3Ry
aW5nPiBjaGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcHJldmlvdXNSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVz
b3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlw
ZSk7CiAKICAgICB2b2lkIG5vdGlmeURvbmUoTG9hZENvbXBsZXRpb25UeXBlKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAppbmRleCBmNjYyOTJlMzFjYmViNDI2NDMwYTgz
MmFkZWY0Mjk5MWNiNTc0MzZlLi5hOGE0OWI0N2Y5MjczNDI3NGJhNGNlYWJjMTcwN2ZlZmE3YjY2
NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaApAQCAtNDMsNyArNDMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAg
IFN1YnN0aXR1dGVEYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgY29udGVudCwgY29uc3QgVVJM
JiBmYWlsaW5nVVJMLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgU2Vzc2lvbkhp
c3RvcnlWaXNpYmlsaXR5IHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkpCisgICAgICAgIFN1
YnN0aXR1dGVEYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNvbnRlbnQsIGNv
bnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFNl
c3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KQogICAg
ICAgICAgICAgOiBtX2NvbnRlbnQoV1RGTW92ZShjb250ZW50KSkKICAgICAgICAgICAgICwgbV9m
YWlsaW5nVVJMKGZhaWxpbmdVUkwpCiAgICAgICAgICAgICAsIG1fcmVzcG9uc2UocmVzcG9uc2Up
CkBAIC01NCwxNCArNTQsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlz
VmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQgIT0gbnVsbHB0cjsgfQogICAgICAgICBi
b29sIHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Nob3Vs
ZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgPT0gU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpWaXNp
YmxlOyB9CiAKLSAgICAgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBjb250ZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZW50LmdldCgpOyB9CisgICAgICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQuZ2V0KCk7IH0KICAgICAg
ICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UubWlt
ZVR5cGUoKTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZygpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOyB9CiAgICAgICAgIGNvbnN0IFVS
TCYgZmFpbGluZ1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFpbGluZ1VSTDsgfQogICAgICAgICBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9u
c2U7IH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9jb250ZW50OworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9j
b250ZW50OwogICAgICAgICBVUkwgbV9mYWlsaW5nVVJMOwogICAgICAgICBSZXNvdXJjZVJlc3Bv
bnNlIG1fcmVzcG9uc2U7CiAgICAgICAgIFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBtX3Nob3Vs
ZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgeyBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OkhpZGRl
biB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDM0
NGNhOTgyODU3NTJlOGYxMDE3MGYyMzIwNDllMGNhMmFkNGZjODYuLmNmMmRlMGM2MmQ5NWYzMzI1
YjQyYjQ2ZTI0MDM3NzQ0MTA3NDJhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3Rp
dHV0ZVJlc291cmNlLmgKQEAgLTM3LDE0ICszNywxNCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBV
UkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVk
QnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJl
ZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9KTsgfQorICAgIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9KTsgfQogICAgIHZvaWQgYXBw
ZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgbV9kYXRhLmFwcGVuZChkYXRh
LCBsZW5ndGgpOyB9CiAgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmVtcHR5KCk7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRl
bGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KIAogcHJv
dGVjdGVkOgotICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQorICAgIFN1YnN0aXR1dGVS
ZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKICAgICAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkp
CiAgICAgICAgICwgbV9yZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSkKICAgICAgICAgLCBtX2Rh
dGEoV1RGTW92ZShkYXRhKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDcyMGE5MjcxY2QzMjY1ZWY0Y2Uy
MzI2MWEyNmRiMGQ4MjhjNjMzNDYuLjUxOTc4ZjQxMjM4NzRkYzU2NjBlZmY0NzA2NTk3MDdkNGU1
ZDg1YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMjUzLDE0ICsyNTMsMTQgQEAgVVJMIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgog
fQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJG
cm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKK3N0YXRpYyBp
bmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7CiAgICAgaWYgKHJlc291cmNlLnBhdGgoKS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsK
LSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHJlc291cmNlLnBhdGgoKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CiB9CiAKLWJvb2wgQXBwbGljYXRpb25D
YWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3Vy
Y2U7CiAgICAgaWYgKCFzaG91bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGljYXRpb25DYWNoZShyZXF1
ZXN0LCByZXNvdXJjZSkpCkBAIC0yNzcsNyArMjc3LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJl
c28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5
YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIC8vIElmIG5vcm1hbCBsb2Fk
aW5nIHJlc3VsdHMgaW4gYSByZWRpcmVjdCB0byBhIHJlc291cmNlIHdpdGggYW5vdGhlciBvcmln
aW4gKGluZGljYXRpdmUgb2YgYSBjYXB0aXZlIHBvcnRhbCksIG9yIGEgNHh4IG9yIDV4eCBzdGF0
dXMgY29kZSBvciBlcXVpdmFsZW50LAogICAgIC8vIG9yIGlmIHRoZXJlIHdlcmUgbmV0d29yayBl
cnJvcnMgKGJ1dCBub3QgaWYgdGhlIHVzZXIgY2FuY2VsZWQgdGhlIGRvd25sb2FkKSwgdGhlbiBp
bnN0ZWFkIGdldCwgZnJvbSB0aGUgY2FjaGUsIHRoZSByZXNvdXJjZSBvZiB0aGUgZmFsbGJhY2sg
ZW50cnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmgKaW5kZXggZGM4NThmZGQ2ZDU0NTNlYjQzNTkyOGQzZWQ3NTc1NzA4MzU5
NDVlMC4uYjk2MzU2ZTc4NTYxMzg5NTZhZTRjMDU5ODMxNzBjZGY3MjM2NzJhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNz
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOwotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBE
b2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwpAQCAtMTA0LDggKzEwNCw4IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UoUmVz
b3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNlTG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpOwogCi0gICAgYm9vbCBtYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291
cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7Ci0gICAgdm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBib29sIG1h
eWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworICAgIHZvaWQgbWF5YmVM
b2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNl
RXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKIAogICAg
IGJvb2wgY2FuQ2FjaGVJbkJhY2tGb3J3YXJkQ2FjaGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNw
cAppbmRleCA2NzEwOTU3YzNhYjc0YTc1OWZjMjc1MWZkN2EwNmIzMTFlNTE4Y2U1Li4yYmIzZmU3
NWI5OTc3ZTgzMzIyYWUyNTgwZjcyMTJlZTViZjIxNjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNw
cApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgdHlw
ZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkKK1Jl
ZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3Jl
YXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5z
aWduZWQgdHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCF1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVy
KCkpOwogICAgIGlmICghYnVmZmVyKQpAQCAtNDAsNyArNDAsNyBAQCBSZWY8QXBwbGljYXRpb25D
YWNoZVJlc291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBVUkwm
IHVybCwgYwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZShVUkwgeyB1cmwgfSwgV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSwgdHlwZSwgYnVmZmVyLnJl
bGVhc2VOb25OdWxsKCksIHBhdGgpKTsKIH0KIAotQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
cG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBwYXRoKQorQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5
cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgcGF0
aCkKICAgICA6IFN1YnN0aXR1dGVSZXNvdXJjZShXVEZNb3ZlKHVybCksIFdURk1vdmUocmVzcG9u
c2UpLCBXVEZNb3ZlKGRhdGEpKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3N0b3JhZ2VJ
RCgwKQpAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJgogCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQog
ewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5p
c0VtcHR5KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBsb2FkZXIuZGVsaXZl
clJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLm1h
a2VDb250aWd1b3VzKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSht
X3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUodW5z
aWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgKaW5kZXggODhjOTRkZTFhNzc0MTA0NjljOTMx
YTQyYTQ3OWIxZTY3NzdhNzAyZS4uYzI4OGU3MDM2YzY3NjJhZDQ4NzZiYTg4MTQ2OWE3NWQyMjM3
ZTFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIEZhbGxiYWNrID0gMSA8PCA0CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8QXBwbGljYXRp
b25DYWNoZVJlc291cmNlPiBjcmVhdGUoY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJpbmcoKSk7CisgICAgc3RhdGljIFJl
ZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJp
bmcoKSk7CiAKICAgICB1bnNpZ25lZCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAg
ICAgdm9pZCBhZGRUeXBlKHVuc2lnbmVkIHR5cGUpOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6
CiAjZW5kaWYKICAgICAKIHByaXZhdGU6Ci0gICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVS
TCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVS
TCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHBhdGgpOwogCiAgICAgdm9pZCBkZWxpdmVyKFJl
c291cmNlTG9hZGVyJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGM3NzBk
NzY0MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQuLjhjZjA1Y2NlMTg4MDEyOGRlNTli
ZTcwYTk5ODM2ZjVhNzQ1YjZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtMTExMiw3ICsx
MTEyLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
Ojpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKQogICAgICAgICBpbnQgaHR0cFN0YXR1c0Nv
ZGUgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50KDEpOwogCiAgICAgICAgIHVuc2lnbmVkIHR5
cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludDY0KDIp
KTsKLSAgICAgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNh
Y2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKKyAgICAgICAgYXV0byBkYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOwogICAgICAgICAK
ICAgICAgICAgU3RyaW5nIHBhdGggPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uVGV4dCg3KTsKICAg
ICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpAQCAtMTI3Miw3ICsxMjcyLDcgQEAgYm9vbCBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6c2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGlj
YXRpb25DYWNoZVJlc28KICAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZSh0eXBlLCAiYXVkaW8vIikgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZSh0eXBlLCAidmlkZW8vIik7CiB9CiAgICAgCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
Ojp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZUV4
dGVuc2lvbikKK2Jvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVl
RmlsZUluRGlyZWN0b3J5KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5LCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbikK
IHsKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCmluZGV4IDlhOTUz
MDA4NzY2YTg4ODU1NjFiMzQ4ODg5YjhjZWRhMmIyZWIzMzguLjQxMDJhMTgwOGI0NTU1N2I2NDVl
MzZlN2U2ODFmYzRjNmQyMDdjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCkBAIC0zOSw3ICszOSw3IEBA
IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogdGVt
cGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0b3JhZ2VJREpvdXJuYWw7CiAKIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8QXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U+IHsKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZW5zdXJlT3JpZ2lu
UmVjb3JkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkU3Rv
cmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKik7CiAgICAgdm9p
ZCBkZWxldGVUYWJsZXMoKTsKLSAgICBib29sIHdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0
b3J5KFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91dEZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pOworICAgIGJvb2wgd3JpdGVEYXRh
VG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVF
eHRlbnNpb24pOwogCiAgICAgdm9pZCBsb2FkTWFuaWZlc3RIb3N0SGFzaGVzKCk7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKaW5k
ZXggNmRlODBjMTBhYzdkMjVjZjM0NjlmNmRlZjBmYWY3MjQxZjU5NjQyOC4uNGVmOWNkNjZiZDA4
OGI3NGMwNDZjMDY5MGQxZTlkM2U1ZTMzNjBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcApAQCAtNDYsMTIgKzQ2LDEyIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBSZWZQdHI8QXJjaGl2ZT4gUmF3RGF0YUNyZWF0
aW9uRnVuY3Rpb24oY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJik7Cit0eXBlZGVmIFJlZlB0cjxB
cmNoaXZlPiBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbihjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJik7CiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSYXdEYXRhQ3JlYXRpb25GdW5j
dGlvbiosIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gQXJjaGl2ZU1JTUVUeXBlc01hcDsKIAog
Ly8gVGhlIGNyZWF0ZSBmdW5jdGlvbnMgaW4gdGhlIGFyY2hpdmUgY2xhc3NlcyByZXR1cm4gUmVm
UHRyIHRvIGNvbmNyZXRlIHN1YmNsYXNzZXMKIC8vIG9mIEFyY2hpdmUuIFRoaXMgYWRhcHRvciBt
YWtlcyB0aGUgZnVuY3Rpb25zIGhhdmUgYSB1bmlmb3JtIHJldHVybiB0eXBlLgotdGVtcGxhdGU8
dHlwZW5hbWUgQXJjaGl2ZUNsYXNzPiBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGFyY2hpdmVGYWN0
b3J5Q3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3RlbXBsYXRl
PHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBhcmNoaXZlRmFj
dG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIHJldHVybiBBcmNoaXZlQ2xhc3M6OmNyZWF0ZSh1cmwsIGJ1ZmZlcik7CiB9CkBA
IC04Myw3ICs4Myw3IEBAIGJvb2wgQXJjaGl2ZUZhY3Rvcnk6OmlzQXJjaGl2ZU1JTUVUeXBlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuICFtaW1lVHlwZS5pc0VtcHR5KCkgJiYg
YXJjaGl2ZU1JTUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0KIAotUmVmUHRyPEFyY2hp
dmU+IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK1JlZlB0cjxBcmNoaXZlPiBBcmNoaXZlRmFj
dG9yeTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9B
cmNoaXZlRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZh
Y3RvcnkuaAppbmRleCAyMWQyMzY1Y2Y4ZDlkOTAxZWZlN2FhZDU1MmJmM2RhNDA2OWZlNDBkLi41
NTY0NTE1YzllMGQ5ZDAzM2I3OTBjNzQ3Mjg1YTI1ODUzYWJlMDJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKQEAgLTM0LDEyICszNCwxMiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEFyY2hpdmVGYWN0b3J5IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBpc0FyY2hpdmVNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKLSAgICBz
dGF0aWMgUmVmUHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4g
Y3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyS25vd25BcmNoaXZlTUlN
RVR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNw
cAppbmRleCBmYzIwZGEzZGEwMzJjYmVmNzRmMmU5Yzg0MjhhY2I0ZWUzN2JlZjIzLi4wNzM4Mzk0
YTgyODcxNGFhMGI5MGVlNzUwNzlkNDg2ZjViMGU4Njk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZl
UmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmlu
ZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK2lubGluZSBB
cmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IFN1YnN0aXR1dGVSZXNvdXJjZShVUkwgeyB1
cmwgfSwgUmVzb3VyY2VSZXNwb25zZSB7IHJlc3BvbnNlIH0sIFdURk1vdmUoZGF0YSkpCiAgICAg
LCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV90ZXh0RW5jb2RpbmcodGV4dEVuY29kaW5n
KQpAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3Vy
Y2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybAogewogfQogCi1SZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJj
aGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0
YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
dGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTU0LDcgKzU0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291
cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb24KICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBBcmNoaXZlUmVzb3VyY2UoZGF0YS5yZWxlYXNlTm9uTnVsbCgpLCB1cmws
IG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwgcmVzcG9uc2UpKTsKIH0KIAotUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCitSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0
ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShX
VEZNb3ZlKGRhdGEpLCB1cmwsIHJlc3BvbnNlLm1pbWVUeXBlKCksIHJlc3BvbnNlLnRleHRFbmNv
ZGluZ05hbWUoKSwgU3RyaW5nKCksIHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKaW5kZXggMjA5ZTk3MTdhZWIwOTM2MGRi
MzkyN2U2ZWZhMWU1YmYxYzJjOTdjYS4uMDU0OGVmNzIxZWZkMjdjMDBjZTkzZDEyMjcwZWNlYzQ2
YzAyYWY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJl
c291cmNlLmgKQEAgLTM0LDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBB
cmNoaXZlUmVzb3VyY2UgOiBwdWJsaWMgU3Vic3RpdHV0ZVJlc291cmNlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsCisgICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IGNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFVSTCYsCiAgICAgICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwKICAgICAgICAgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgPSBSZXNvdXJjZVJlc3BvbnNlKCkpOwogCkBAIC00Nyw3ICs0
Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZElnbm9yZVdoZW5VbmFyY2hpdmluZygpIGNv
bnN0IHsgcmV0dXJuIG1fc2hvdWxkSWdub3JlV2hlblVuYXJjaGl2aW5nOyB9CiAKIHByaXZhdGU6
Ci0gICAgQXJjaGl2ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBT
dHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIEFyY2hpdmVS
ZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmlu
ZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICBTdHJpbmcgbV9t
aW1lVHlwZTsKICAgICBTdHJpbmcgbV90ZXh0RW5jb2Rpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGY1ZWM0
ZGQ2N2Y3ZGY4ZDlkYTIwOWI0MGUyM2MwNDM5YjZlNjhiMDMuLjcxMTUwY2JkZDg5NjllNmFmMDI4
Njg0YjZiZjZjYmMwYTUwYjJmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC0yNDgsMTIgKzI0OCwxMiBAQCBS
ZWY8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFJlZjxBcmNoaXZl
UmVzb3VyY2U+JiYgbWFpblJlc291cgogICAgIHJldHVybiBhcmNoaXZlOwogfQogCi1SZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKK1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICByZXR1cm4gY3JlYXRlKFVSTCgp
LCBkYXRhKTsKIH0KIAotUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEpCitSZWZQdHI8TGVnYWN5V2Vi
QXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2
ZSAtIENyZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCmluZGV4IGQwOWVjOWY3NWFiYTEz
NmE4NjMzOWViNGQ4NmFiZDgyNzdjNGZmMDQuLjVhMDdiMTBiNGJlNmY4NjIwMTFhNzgyYTdkZWQy
MzY3NTkyNDM2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9j
Zi9MZWdhY3lXZWJBcmNoaXZlLmgKQEAgLTQxLDggKzQxLDggQEAgc3RydWN0IFNpbXBsZVJhbmdl
OwogY2xhc3MgTGVnYWN5V2ViQXJjaGl2ZSBmaW5hbCA6IHB1YmxpYyBBcmNoaXZlIHsKIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0
ZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
Y3JlYXRlKFNoYXJlZEJ1ZmZlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBj
cmVhdGUoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiBtYWluUmVzb3VyY2UsIFZlY3RvcjxSZWY8QXJj
aGl2ZVJlc291cmNlPj4mJiBzdWJyZXNvdXJjZXMsIFZlY3RvcjxSZWY8TGVnYWN5V2ViQXJjaGl2
ZT4+JiYgc3ViZnJhbWVBcmNoaXZlcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoTm9kZSYsIEZ1bmN0aW9uPGJvb2woRnJhbWUmKT4m
JiBmcmFtZUZpbHRlciA9IHsgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxM
ZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoRnJhbWUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmluZGV4IDk5M2MyYjhlODMw
ZGMzZDc1YzVhZDMxOWJiYWZlOWRmNDVjNTAxMGUuLmQwMTM5Zjg3YTA2Zjk2OTc4Yjc0NzdlOWY0
OTk5YzM0ZWE5Zjg2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIFJlZjxNSFRNTEFy
Y2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBN
SFRNTEFyY2hpdmUpOwogfQogCi1SZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNy
ZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVyJiBkYXRhKQorUmVmUHRyPE1IVE1MQXJj
aGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gRm9yIHNlY3VyaXR5IHJlYXNvbnMgd2Ugb25seSBs
b2FkIE1IVE1MIHBhZ2VzIGZyb20gbG9jYWwgVVJMcy4KICAgICBpZiAoIUxlZ2FjeVNjaGVtZVJl
Z2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwodXJsLnByb3RvY29sKCkudG9TdHJp
bmcoKSkpCkBAIC0xMzAsNyArMTMwLDcgQEAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNo
aXZlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICByZXR1
cm4gbWFpbkFyY2hpdmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2Vu
ZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBN
SFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiB7CiAgICAgVmVjdG9y
PFBhZ2VTZXJpYWxpemVyOjpSZXNvdXJjZT4gcmVzb3VyY2VzOwogICAgIFBhZ2VTZXJpYWxpemVy
IHBhZ2VTZXJpYWxpemVyKHJlc291cmNlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oCmluZGV4IDNkMmRiN2M5NjAwMmViZTY4NGIy
YmVmOGYxZWE5ZTJlOTc5NGE1ODkuLjJkZmU4N2U4MmU3YTRkY2UwZjM0MWMzNjE5NDNjOTkwMjA1
YzhkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5oCkBAIC0zOCwxNCArMzgsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBNSFRNTFBhcnNlcjsKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNSFRNTEFyY2hpdmUgZmluYWwgOiBw
dWJsaWMgQXJjaGl2ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNSFRNTEFyY2hpdmU+IGNy
ZWF0ZSgpOwotICAgIHN0YXRpYyBSZWZQdHI8TUhUTUxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJM
JiwgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxNSFRNTEFyY2hpdmU+IGNyZWF0
ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKLSAgICBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gZ2VuZXJhdGVNSFRNTERhdGEoUGFnZSopOworICAgIHN0YXRpYyBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZ2VuZXJhdGVNSFRNTERhdGEoUGFnZSopOwogCiAgICAg
dmlydHVhbCB+TUhUTUxBcmNoaXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCA0MDI1Yjk4MGU1ZWU2ODJkYjA3
NjJhZmE4NmVjYTlkOTJmZTg1OGQ5Li41ZWU5MTg2ODRhMDY4OTY4M2Y3MWMyNjdmMmQ5MDFhMzdh
NmZlYjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyBib29sIHNraXBMaW5lc1Vu
dGlsQm91bmRhcnlGb3VuZChTaGFyZWRCdWZmZXJDaHVua1JlYWRlciYgbGluZVJlYWRlciwgY29u
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1NSFRNTFBhcnNlcjo6TUhUTUxQYXJzZXIoU2hhcmVk
QnVmZmVyKiBkYXRhKQorTUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2VyKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEpCiAgICAgOiBtX2xpbmVSZWFkZXIoZGF0YSwgIlxyXG4iKQogewogfQpAQCAt
MjE1LDcgKzIxNSw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJz
ZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAgIExPR19FUlJP
UigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQotICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICAvLyBGSVhNRTogdGhlIFVS
TCBpbiB0aGUgTUlNRSBoZWFkZXIgY291bGQgYmUgcmVsYXRpdmUsIHdlIHNob3VsZCByZXNvbHZl
IGl0IGlmIGl0IGlzLgogICAgIC8vIFRoZSBzcGVjcyBtZW50aW9ucyA1IHdheXMgdG8gcmVzb2x2
ZSBhIFVSTDogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjU1NyNzZWN0aW9uLTUKICAg
ICAvLyBJRSBhbmQgRmlyZWZveCAoVU5NaHQpIHNlZW0gdG8gZ2VuZXJhdGUgb25seSBhYnNvbHV0
ZSBVUkxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
UGFyc2VyLmgKaW5kZXggMWU5YmQ0ZDc3NjdlZTM5MWEwMDIyZjcxNzQ4ZjAwYjg1YzgxYjI1Zi4u
MGQ2MDQzNDNmM2Q3YWQxNzhjYzIyMDAzYzk3OWMyMmU1MGEzYjk5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oCkBAIC00MiwxMSAr
NDIsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwogY2xh
c3MgTUhUTUxBcmNoaXZlOwogY2xhc3MgTUlNRUhlYWRlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1IVE1MUGFyc2VyIHsKIHB1
YmxpYzoKLSAgICBleHBsaWNpdCBNSFRNTFBhcnNlcihTaGFyZWRCdWZmZXIqKTsKKyAgICBleHBs
aWNpdCBNSFRNTFBhcnNlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICAgICBSZWZQdHI8
TUhUTUxBcmNoaXZlPiBwYXJzZUFyY2hpdmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4IDkw
ZDFjNmEyYmE4YzRhNDJlMWZlYmQ4MDFlNTI4NzgwNTkwMTJiOTIuLmUxYTg3NTE2YmQ4ZDViOGYy
NGFmNmE1Yjk5MGUyMTg1MzQ3ZTc1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTQwLDcgKzQw
LDcgQEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIHsKIH0KIAotdm9pZCBDYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewog
ICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5k
ZXggNjRiMTRkNWY2NWZmZmM4NTU0ZGY0NjY1Yzc1OTE2ZjM0ZDFkNTQ2YS4uMzc5OGE5YjRkOTAx
M2NmZGVhNmY1NmZiZGYwMDE1YWY4OTQ3NTcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC00Miw3ICs0
Miw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlm
ZXN0PiBwcm9jZXNzKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRV
UkwsIERvY3VtZW50KiA9IG51bGxwdHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRS
ZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2RlY29kZXIucHRyKCk7IH0KICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
CmluZGV4IDlkMmRjNzM2NDgwMmQwZDYyYTY1OTFkZTY4OWE1YTdhMjQ0MzA1MTEuLjM4YTJlMTdm
MGQwNmM4YWM5OGRlMjRiMWU1MmI4ZTYwZTkyNDEyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTk3LDcgKzk3LDcg
QEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQu
bV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6
OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRp
bmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRh
dGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuaAppbmRleCBkMzdmYWZhY2MwMTIyYzg3NTQwZjQ2NGI5ZTU2
MTYwY2NhZTQ2OWY5Li5lNjU1YzY5ZTNlZGI2MDk1MDIzOWNjZTQ1NDVmMDk2YjUyNjU2ZGU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0
IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAg
IGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7Cisg
ICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0
YSgpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApp
bmRleCBmOWFkNzcxM2M2MDNhNmEwYTU2YmNhMjc5Y2U4MjUwNjY2YTMyMGZhLi5kMmJjMjgyMTQ3
OWM1OWEyMzIzZTRmNjVjZDk0YjYzYjQyMzczNjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6
ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAgIHN0YXRp
Y19jYXN0PENhY2hlZEZvbnRDbGllbnQmPihjbGllbnQpLmZvbnRMb2FkZWQoKnRoaXMpOwogfQog
Ci12b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEZvbnQ6OmZp
bmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1f
ZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CkBAIC05NSw3ICs5NSw3IEBAIFN0cmluZyBD
YWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4g
dXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAotYm9vbCBDYWNoZWRG
b250OjplbnN1cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKQor
Ym9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEp
CiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9yT2NjdXJyZWQo
KSAmJiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBib29sIHdyYXBwaW5nOwpAQCAt
MTA4LDcgKzEwOCw3IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnl0ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcp
CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3Jl
YXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVt
SW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKICAgICBSZWZQdHIgYnVmZmVyID0geyAm
Ynl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGJ1
ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAppbmRleCAxNTRk
YjhjYmFiZjNkNWEzOGUwOTYxYWNiNTVjZWFjZmYyZjI5NzNhLi4xMzQ2NmNjOTlkMGQxOWNiZjNk
OGVmM2RmYmQ5NmYzNGQwZjg1NDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3RpbGxOZWVkc0xv
YWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5pdGlhdGVkOyB9CiAKICAgICB2
aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3Rl
VVJJKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBp
bmcpOwogICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZyb21DdXN0b21E
YXRhKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEmLCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29s
IGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKICAgICB2
aXJ0dWFsIFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNv
bnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRo
ZXRpY0l0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwpAQCAtNjIsNyArNjIsNyBA
QCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFG
cm9tQ3VzdG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJvbGQsIGJvb2wgaXRh
bGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKLSAgICBib29sIGVuc3VyZUN1c3Rv
bUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJl
Q3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKIAogcHJpdmF0ZToKICAgICBTdHJp
bmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0OwpAQCAtNzQsNyArNzQsNyBAQCBw
cml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgc2V0Qm9keURhdGFGcm9t
KGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQog
CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggN2MwMWM4Y2MyMzExNzg2
YzYyNGY0ODVlZGVmNjkzNWZiN2VmYTVmYi4uOTQ2Mjc5NTIwZDBkYTQ0NjIyYzZhY2QzNjY2MjI4
ODEwNWU4MTk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCkBAIC00NjgsNyArNDY4LDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1h
Z2UoKQogICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lkIENhY2hlZElt
YWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lk
IENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhKQogewogICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAg
ICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CkBAIC01MjMsMTQgKzUyMywxNCBAQCBi
b29sIENhY2hlZEltYWdlOjpzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0CiAgICAg
cmV0dXJuIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fbGFzdFVwZGF0ZUltYWdlRGF0YVRpbWUp
LnNlY29uZHMoKSA8IHVwZGF0ZUltYWdlRGF0YUJhY2tvZmZJbnRlcnZhbHNbaW50ZXJ2YWxdOwog
fQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRl
ZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8U2hh
cmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7CiAgICAgaWYgKCFkYXRhKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCiAgICAg
ICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpOwogI2lmIFBMQVRGT1JNKE1BQykgJiYg
IVVTRShXRUJLSVRfSU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BE
RihkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOworICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNj
cmlwdERhdGFUb1BERihkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0
KCkpOwogI2Vsc2UKICAgICAvLyBMb2FkaW5nIHRoZSBpbWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNh
bmNlbGVkIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBjb252ZXJ0aW5nIFBvc3RTY3Jp
cHQgdG8gUERGLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTU1LDcgKzU1NSw3IEBA
IEVuY29kZWREYXRhU3RhdHVzIENhY2hlZEltYWdlOjp1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6
dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6
OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAg
IEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVm
ZmVyRGF0YSk7CiAgICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoZGF0YSk7CkBAIC01NjksNyArNTY5
LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVu
Z3RoKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2Fj
aGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIG1fZGF0YSA9IGNv
bnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsKICAgICBpZiAobV9kYXRhKSB7CkBAIC01OTUsNyAr
NTk1LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKIHZvaWQgQ2FjaGVkSW1hZ2U6OmRpZFJl
cGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpCiB7CiAgICAgaWYgKG1faW1hZ2UpIHsKLSAgICAg
ICAgLy8gTGV0IHRoZSBJbWFnZSBrbm93IHRoYXQgdGhlIFNoYXJlZEJ1ZmZlciBoYXMgYmVlbiBy
ZWppZ2dlZCwgc28gaXQgY2FuIGxldCBnbyBvZiBhbnkgcmVmZXJlbmNlcyB0byB0aGUgaGVhcC1h
bGxvY2F0ZWQgcmVzb3VyY2UgYnVmZmVyLgorICAgICAgICAvLyBMZXQgdGhlIEltYWdlIGtub3cg
dGhhdCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBoYXMgYmVlbiByZWppZ2dlZCwgc28gaXQg
Y2FuIGxldCBnbyBvZiBhbnkgcmVmZXJlbmNlcyB0byB0aGUgaGVhcC1hbGxvY2F0ZWQgcmVzb3Vy
Y2UgYnVmZmVyLgogICAgICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8yNDI3NTYxNyk6IEl0
IHdvdWxkIGJlIGJldHRlciBpZiB3ZSBjb3VsZCBzb21laG93IHRlbGwgdGhlIEltYWdlJ3MgZGVj
b2RlciB0byBzd2FwIGluIHRoZSBuZXcgY29udGVudHMgd2l0aG91dCBkZXN0cm95aW5nIGFueXRo
aW5nLgogICAgICAgICBtX2ltYWdlLT5kZXN0cm95RGVjb2RlZERhdGEodHJ1ZSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBkNTEzZTE2Y2Jh
NWE5NzA3YzMzYWZjNzkzOTE1MTg2NmZhNDM4YTVmLi4wODNmOTJmODg4Mjc2ZWVkYTg5OTEyMDMx
ZDI0NDlhOTY4ZTI2NWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaApAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZl
V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlV2lk
dGgoKTsgfQogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsgfQogCi0gICAgdm9pZCB1
cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5p
c2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAg
ICAgZW51bSBTaXplVHlwZSB7CiAgICAgICAgIFVzZWRTaXplLApAQCAtMTI1LDcgKzEyNSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAg
IGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IFNoYXJlZEJ1
ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0
YUlmTmVlZGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAg
IHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRl
SW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKQEAgLTE2OSw3ICsx
NjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNv
bnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IElt
YWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOworICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHAKaW5kZXggODQyYmY1ZjIwZTA2ZmQ4M2E3MDQ2NTVkNjAwYWRmZGM2NDgwNDQ4
Mi4uODk1ZGIxMTU4YjZiOGM4ZmJmN2IxMGI0M2I2MTRlZGE5NjAyMWNkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC00OCw3
ICs0OCw3IEBAIENhY2hlZFJhd1Jlc291cmNlOjpDYWNoZWRSYXdSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUeXBlIHR5cGUsCiAgICAgQVNTRVJUKGlzTWFpbk9yTWVk
aWFPckljb25PclJhd1Jlc291cmNlKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1
bmsoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorc3RkOjpvcHRpb25hbDxTaGFyZWRC
dWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0
YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7CiAgICAg
c2l6ZV90IHByZXZpb3VzRGF0YUxlbmd0aCA9IGVuY29kZWRTaXplKCk7CiAgICAgaWYgKCFkYXRh
IHx8IGRhdGEtPnNpemUoKSA8PSBwcmV2aW91c0RhdGFMZW5ndGgpCkBAIC01Niw3ICs1Niw3IEBA
IHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpj
YWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDCiAgICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRhKHBy
ZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1
cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAv
LyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5lc3RlZCBydW5sb29wcy4g
V2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExvYWRpbmcuCiAgICAgaWYg
KG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAK
LXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJh
d1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAobV9pbklu
Y3JlbWVudGFsRGF0YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBtYXkgZ2V0IGhlcmUgc3luY2hy
b25vdXNseSBmcm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxsYmFjayB0aGVyZSBlbmRzIHVw
IHNwaW5uaW5nIGEgcnVubG9vcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmgKaW5kZXggNTdmZDdhYjVjMTAwZGMwOWFkZjI2ZWM0Y2JhYzQ1MTRm
MzZmNzVmZi4uYTc4NjVmOGFkMTc4YWVmYjMyMjBhNTZkY2ZmMTk1OTkzY2Y5NWFlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTUx
LDkgKzUxLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50KENh
Y2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgZmluaXNoTG9hZGlu
Zyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
KyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGRJZ25vcmVI
VFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CkBAIC02Niw3ICs2Niw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlKCkgb3Zl
cnJpZGU7CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2FsbG93RW5jb2RlZERhdGFSZXBsYWNlbWVudDsgfQogCi0gICAgc3RkOjpv
cHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1
bmsoY29uc3QgU2hhcmVkQnVmZmVyKikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxTaGFyZWRC
dWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciopIGNvbnN0OwogICAgIHZvaWQgbm90aWZ5Q2xpZW50c0RhdGFXYXNS
ZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIAogI2lm
IFVTRShRVUlDS19MT09LKQpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxS
ZWRpcmVjdFBhaXIsIDAsIENyYXNoT25PdmVyZmxvdywgMD4gbV9yZWRpcmVjdENoYWluOwogCiAg
ICAgc3RydWN0IERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsKLSAgICAgICAgUmVmUHRyPGNvbnN0IFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxEZWxheWVkRmluaXNo
TG9hZGluZz4gbV9kZWxheWVkRmluaXNoTG9hZGluZzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBjZjRmMDJjNWQ3NDM0Y2I2NWNi
M2QwMzM4YWM3ZmE3M2FmNjE2Njg0Li5iZjY5ZTgwZTU3NmUxYTI4OGY2YTAxMWY1NDYxNDYzMTU1
ODAxZDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05vdGlm
eShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVudC0+bm90
aWZ5RmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1
cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVw
ZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikKIHsKICAgICBBU1NFUlQo
ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEp
OwogfQpAQCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEo
Y29uc3QgdWludDhfdCosIHVuc2lnbmVkKQogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5
KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBD
YWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hM
b2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3Rp
ZnkobWV0cmljcyk7CkBAIC05MTMsNyArOTEzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2Fs
bGJhY2s6OnRpbWVyRmlyZWQoKQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIAot
dm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIG5ld0J1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNv
ZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaAppbmRleCAyMThkNzRmMjc3NmE5NjVmY2VhNDhiNjFhMzI1Zjk3MjhhNzkwZGQ5Li5jOTgy
ZGQ2OTM3YTBiYzJiZjM4YzQyNjEyNmZmZTZlNzhjNzk2NDc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBD
b29raWVKYXI7CiBjbGFzcyBNZW1vcnlDYWNoZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwogY2xhc3MgVGV4dFJl
c291cmNlRGVjb2RlcjsKIApAQCAtMTEyLDkgKzExMiw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCBTdHJpbmcg
ZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgY29uc3Qg
VGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IHsgcmV0dXJu
IG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CisgICAgdmly
dHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBlcnJvcihDYWNoZWRS
ZXNvdXJjZTo6U3RhdHVzKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VFcnJvcihjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikgeyBtX2Vycm9yID0gZXJyb3I7IH0KQEAgLTIxMyw3ICsyMTMsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsg
fQorICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNl
UmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2Vp
dmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRl
c1NlbnQgKi8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsg
fQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVkQnVmZmVyJik7
CiAjZW5kaWYKIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyRm9yTG9h
ZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllckZvckxv
YWRXaXRob3V0UmVzb3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgSGFzaENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2NsaWVudHM7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJlcXVlc3Q7IC8v
IE5lZWRlZCBieSBQaW5nIGxvYWRzLgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbV9s
b2FkZXI7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGlt
ZSBtX2xhc3REZWNvZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2ggZ3VhcmQiIGlu
IHRoZSBjYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHAKaW5kZXggYjBmNzZhNTA5NjEwZjY3MTA1N2JlZWJmMGEwYjlhNjAxY2E4MjIy
Yi4uZGI0MzE2MDdhZTU2MzgzMDM4MDBkZDI1OWMxMDM0Y2QwOTBmY2ZlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCkBAIC01Miw3
ICs1Miw3IEBAIFN0cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBjb25zdAogICAg
IHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFNW
R0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6Zmlu
aXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgLy8g
V2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUgbmV3IGRvY3Vt
ZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAppbmRleCBiMDEyYmE5OGVlZGY3MzJj
MDgyYzM2M2IwY2JlMTMwMzQ3NGMzMDQ5Li40NDVlNGY5ZjQyYzNjMjc0MDc5NzZhNjRlOTE1NDA3
ZjhiNTM0ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2Rp
bmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVj
b2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZv
aWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAg
ICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3Vy
Y2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkU1ZHRm9udC5jcHAKaW5kZXggOWNmMDQzNzE5NGE4YTJmY2E1ZTUyNWM3YmZmOWZlOGU5OGE1
MGMzMi4uZDJjMWRlNDdlZmI3ODEzOThmNDQzOGI3Y2E0ZWEyNjBlMjIxOTc2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAtOTEsNyArOTEs
NyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVsZW1lbnQg
fHwgIWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoKm1f
ZXh0ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVl
KCkpKTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1fZXh0
ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRleCBhMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5MzNiNGYw
NTRjMzg1ODIzLi4zNTNkM2RlNjNiMDYyODYxM2FiYWY3NzdmZWIyNTNjNWI2MjQ5MGM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUwLDcgKzUw
LDcgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0aWFsaXplRXh0ZXJu
YWxTVkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAgIFNWR0Zv
bnRGYWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkp
OwogCi0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVmUHRyPFNW
R0RvY3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1f
ZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGluZ3M+IG1f
c2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3Bw
CmluZGV4IGI4N2EzZGIwNmYwMTE0N2YxOWI4ZjQzMjY5ZmQ0NzFlODRlMmVkZjkuLmI2NzM5OGIw
ZTRmNTZmZTdhYmNiMjc0ZDBlMzY4NDMwMzYzNTA4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHVuc2lnbmVkIENh
Y2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAgICAgcmV0dXJuIG1fc2NyaXB0SGFzaDsKIH0KIAot
dm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNjcmlwdDo6
ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAg
bV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA3NWJlNGRiNzE1NzllMzFhYWRhOTcwNjlkOWJmZmMy
YzdlNjM0MzIxLi44NjUxZTYzOWFkOTA2MTcyODU2MWMzMjRiZmE3YWY0Y2Y5N2Y2ZDM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCkBAIC00Nyw3ICs0Nyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsK
ICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3Vy
Y2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9k
ZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4
IDU0MjY2ZGQ5MDgxOWMzNGU5MTUwODQzNDg5NDJlOTEzYWRlODFlZDQuLjBjODQyOGJiOTlkYjZk
ZmIxNmEzNDgxMzRjMzgyNjgzNmNjZTU0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCkBAIC00MCwxMCArNDAsMTAgQEAgQ2FjaGVkVGV4
dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
UEFMOjpTZXNzaW9uSUQKIHsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1Vw
ZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEFT
U0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVy
RGF0YSk7Ci0gICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKKyAgICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxTaGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGll
bnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwpAQCAtNTEs
MTMgKzUxLDEzIEBAIHZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIGNsaWVudC0+ZGVwcmVjYXRlZERpZFJlY2VpdmVD
YWNoZWRSZXNvdXJjZSgqdGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVw
ZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGRv
VXBkYXRlQnVmZmVyKCZkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRh
dGEpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQg
Q2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBkb1Vw
ZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRh
LCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJh
Y2suaAppbmRleCBmNDYzMTc4MzIxZWRjN2NhODY5NzBjZjRhZGRhNDA4OTY5Mjk2ODg1Li4wOWI0
MzM5YTM3YjY3M2IyYWM0ZmRhZTE0NmIyOWI5NjQ3NzdmY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCkBAIC0zNSwxMCArMzUsMTAgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2
b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZG9VcGRhdGVC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBkb1VwZGF0ZUJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVl
dC5jcHAKaW5kZXggYjlhNjU4NzUzY2U5ZjdlYzM2MzNmMWEyZjc0ZTdjYzllYTM5ODU3NC4uZDJl
ZmYyZDJkNDBjOTI3NzM4NzU2YzRhOGYwY2JiOTM0M2JlMTBhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjEsNyAr
NjEsNyBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25zdAogICAg
IHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFhT
TFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6
OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAg
IG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAppbmRleCBjMDRkZDRmMTZjZjNiN2Vj
YTI1ODkxMGI5ZWZhZjQxMjU0ZTJkNzI4Li5iZDIzMTIxNGYyZDIwYmEzOTY0NDYwMzY2ZTA0MWI5
NDEzNWFjNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVu
Y29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0
IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29k
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZp
bmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBt
X3NoZWV0OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29h
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgK
aW5kZXggZDAyMGFjM2RjODA4NDRhNjdhMDdjYjViMWQxNTlmNzFjMGNkY2QxNC4uY2U1MmNmZWJk
NzYxZTU2NDc1YTIwMWU4MTQzODUzMzRlYTRkYmE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaApAQCAtMzIsMTcgKzMyLDE3
IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9DRkNhY2hlZFVSTFJlc3BvbnNlKiBDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIERpc2tDYWNoZU1vbml0
b3IgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3Jl
YXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYpOwotICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2Fj
aGVkVVJMUmVzcG9uc2VSZWYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0cnlH
ZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZik7CiAKIHByaXZhdGU6CiAgICAgRGlza0NhY2hlTW9uaXRvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7
CiAKLSAgICB2b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJik7CisgICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJik7
CiAKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0OyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IDkzZWU5NjM3NGYw
M2JhMzEyNDQzZDI4MWM1MmE0ODQwNjlkZjJhMzEuLmZhNGI5MDNiZWY5Mzk0ODFjMjJlYTdkZjU1
MWU4YjU1ZTdlMGU1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9E
aXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29h
L0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQpAQCAtNDIsMTMgKzQyLDEzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHdlJ2xsIHRyeSB0byB3
YWl0IGZvciBhIHJlc291cmNlIHRvIGJlIGRpc2sgY2FjaGVkIGJlZm9yZSB3ZSBmb3JnZXQgdGhl
IHJlcXVlc3QuCiBzdGF0aWMgY29uc3QgZG91YmxlIGRpc2tDYWNoZU1vbml0b3JUaW1lb3V0ID0g
MjA7CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0
cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNo
ZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IERp
c2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNo
ZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQogewogICAg
IGF1dG8gZGF0YSA9IF9DRkNhY2hlZFVSTFJlc3BvbnNlR2V0TWVtTWFwcGVkRGF0YShjYWNoZWRS
ZXNwb25zZSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogfQogCiB2b2lkIERpc2tDYWNoZU1vbml0b3I6
Om1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYg
Y2FjaGVkUmVzcG9uc2UpCkBAIC0xMTMsNyArMTEzLDcgQEAgRGlza0NhY2hlTW9uaXRvcjo6RGlz
a0NhY2hlTW9uaXRvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lv
bkkKICAgICBfQ0ZDYWNoZWRVUkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRDYWxsQmFja0Js
b2NrKGNhY2hlZFJlc3BvbnNlLCBibG9ja1RvUnVuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
KTsKIH0KIAotdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZlcikKK3ZvaWQgRGlza0NhY2hl
TW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYgZmlsZUJhY2tl
ZEJ1ZmZlcikKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24o
KS5yZXNvdXJjZUZvclJlcXVlc3QobV9yZXNvdXJjZVJlcXVlc3QsIG1fc2Vzc2lvbklEKTsKICAg
ICBpZiAoIXJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXIuaAppbmRleCBiNTJmOTVhNjVkNWJiN2FmOTBlYmRhNDdlZjAwMmViODg3YmNm
NzI5Li42NmI5MzU4ZWM1MzExMTQ4NDgyMmE3Y2MyNGU3ZjNhOTkxNzA2NWE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtMzgsNyAr
MzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNo
YXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmluYWwgOiBw
cml2YXRlIFByZXZpZXdDb252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZlcnRlclBy
b3ZpZGVyIHsKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIGJvb2wgZGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29sIGRpZFJl
Y2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgYm9vbCBkaWRSZWNlaXZlQnVm
ZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBib29sIGRpZEZpbmlzaExv
YWRpbmcoKTsKICAgICB2b2lkIGRpZEZhaWwoKTsKIApAQCAtNjIsMTIgKzYyLDEyIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmluaXNoVXBkYXRpbmcoUHJldmlld0Nv
bnZlcnRlciYpIGZpbmFsIHsgfTsKICAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsVXBk
YXRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRl
ckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgZmluYWw7Ci0gICAgdm9pZCBw
cmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVE
YXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgZmlu
YWw7CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZyhQcmV2aWV3
Q29udmVydGVyJikgZmluYWw7CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbENvbnZl
cnRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOwogCiAgICAgLy8gUHJldmlld0NvbnZlcnRl
clByb3ZpZGVyCi0gICAgdm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRl
cihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRC
dWZmZXIqKT4mJikgZmluYWw7CisgICAgdm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmll
d0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYpIGZpbmFsOwogICAgIHZvaWQgcHJvdmlkZVBh
c3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJikgZmluYWw7CiAKICAgICBSZWZQdHI8UHJldmll
d0NvbnZlcnRlcj4gbV9jb252ZXJ0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KaW5kZXggZGI4MDY5Y2JmOWRiNzUwZWI3YzE3MTg0YWJm
YzFjMmIzYzUwOTI3My4uNjFjYzZkZDQyMzg5ZGFiNjdiNDk1NDk2NTRkZWY4MWMyZWY0NWExZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5t
bQpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+
IG1ha2VDbGllbnQoY29uc3QgUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgYwogICAgIHJldHVybiBl
bXB0eUNsaWVudCgpOwogfQogCi1ib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIExlZ2FjeVByZXZpZXdMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIGlmIChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9h
ZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXIm
IGMKICAgICB9KTsKIH0KIAotdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVy
dGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFJlY2Vp
dmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhKQogewogICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBtX3Jlc291cmNlTG9hZGVyLmdldCgp
OwogICAgIGlmICghcmVzb3VyY2VMb2FkZXIpCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBMZWdh
Y3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZp
ZXdDb252ZXJ0ZXImIGMKICAgICBtX2NsaWVudC0+ZGlkUmVxdWVzdFBhc3N3b3JkKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92
aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252
ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVz
b3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZjb252ZXJ0
ZXIgPT0gbV9jb252ZXJ0ZXIpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRh
LT5nZXQoKS5nZXQoKSk7CkBAIC0yMzUsNyArMjM1LDcgQEAgTGVnYWN5UHJldmlld0xvYWRlcjo6
fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CiBMZWdhY3lQcmV2aWV3TG9hZGVyOjpM
ZWdhY3lQcmV2aWV3TG9hZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIDogbV9jb252ZXJ0ZXIgeyBQcmV2aWV3Q29udmVydGVy
OjpjcmVhdGUocmVzcG9uc2UsICp0aGlzKSB9CiAgICAgLCBtX2NsaWVudCB7IG1ha2VDbGllbnQo
bG9hZGVyLCBtX2NvbnZlcnRlci0+cHJldmlld0ZpbGVOYW1lKCksIG1fY29udmVydGVyLT5wcmV2
aWV3VVRJKCkpIH0KLSAgICAsIG1fb3JpZ2luYWxEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRC
dWZmZXJCdWlsZGVyPihTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKSB9CisgICAgLCBtX29yaWdpbmFs
RGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCkpIH0KICAgICAsIG1fcmVzb3VyY2VMb2FkZXIgeyBsb2FkZXIgfQog
ICAgICwgbV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZyYW1lKCkt
PnNldHRpbmdzKCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZp
ZXcoKSB9CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCBhMzYzYjdiMDJjYjNj
OTc3ZDU1ZmNkZmNjY2JhNDMxZDM1MDcwNjgzLi5lYTYxNWRmZjRkZDBlZDUxNGJmZjY0NDI2NDdl
YzQ2MjBmNjMyMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTM4LDEzICsz
OCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NS
ZXNwb25zZSA6IHVpbnQ4X3Q7CiAKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRWxlbWVudDsK
IGNsYXNzIEZyYW1lOwogY2xhc3MgS2V5Ym9hcmRFdmVudDsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3R5bGVQ
cm9wZXJ0aWVzOwogY2xhc3MgVGV4dENoZWNrZXJDbGllbnQ7CiBjbGFzcyBWaXNpYmxlU2VsZWN0
aW9uOwpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZE1v
dmVSYW5nZUFmdGVyRGVsZXRlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU2ltcGxlUmFuZ2Um
KSA9IDA7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmll
ciAqLywgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBw
cmVmZXJyZWRGaWxlTmFtZSAqLywgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgeyB9CisgICAgdmlydHVh
bCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVu
dGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICovLCBjb25zdCBTdHJpbmcm
IC8qIHByZWZlcnJlZEZpbGVOYW1lICovLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICov
LCBjb25zdCBTdHJpbmcmIC8qIGZpbGVQYXRoICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJp
bmcmIC8qIGlkZW50aWZpZXIgKi8pIHsgfQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRh
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0
ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CmluZGV4IDZkNTFjNWU1MTZhM2RiZmJiNzQ3NmVkOTRiMDQxZTZlNTZmNzNjMGYuLmYzN2QwNTli
MGViNTI2YzU0OWMwZDdkZWI0ZWE1YTA4ODBmZjBkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAt
MTk1Miw3ICsxOTUyLDcgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNv
bnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlzaGVzIGxvYWRp
bmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUgbG9hZCBldmVu
dCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hlbgogICAgIC8v
IGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBwZW4uCi0gICAgYXV0byBkYXRhID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxl
U2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAg
ICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmNwcAppbmRleCBkNzUwY2ZmOTY0MjMwMDUyZjc5OTVhMjdlODg3MjlkMmNkZTgwNDgwLi5h
YzUzY2IxNGJmMDBlNTE2NDdjOWVjOTExMDk4YmVhMDM2MTUxMTIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgUGFnZVNlcmlh
bGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBTdHJpbmcgdGV4dCA9IGFjY3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVzKCpkb2N1bWVu
dC0+ZG9jdW1lbnRFbGVtZW50KCksIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05v
ZGUpOwotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1J
TUVUeXBlKCksIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5j
b2RlKHRleHQsIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CisgICAgbV9yZXNv
dXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUoKSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBVbmVuY29kYWJsZUhhbmRs
aW5nOjpFbnRpdGllcykpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogCiAgICAg
Zm9yIChhdXRvJiBub2RlIDogbm9kZXMpIHsKQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIFBhZ2VT
ZXJpYWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hl
ZXQsIGNvbnN0IFVSTAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNoZWNrIHdoZXRoZXIg
YSBjaGFyc2V0IGhhcyBiZWVuIHNwZWNpZmllZCBhbmQgaWYgbm9uZSB3YXMgZm91bmQgYWRkIG9u
ZS4KICAgICAgICAgVGV4dEVuY29kaW5nIHRleHRFbmNvZGluZyhzdHlsZVNoZWV0LT5jb250ZW50
cygpLmNoYXJzZXQoKSk7CiAgICAgICAgIEFTU0VSVCh0ZXh0RW5jb2RpbmcuaXNWYWxpZCgpKTsK
LSAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJp
bmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICAgICAgbV9yZXNv
dXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRl
eHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5n
OjpFbnRpdGllcykpIH0pOwogICAgICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKICAgICB9
CiB9CkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jl
c291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICBpZiAo
IWltYWdlIHx8IGltYWdlLT5pbWFnZSgpID09ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVy
ID8gaW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVyID8g
aW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CiAgICAg
aWYgKCFkYXRhKQogICAgICAgICBkYXRhID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4IGJmY2JlN2I4ZGJmZDQ5Zjc5ZDFhMDBj
ODAwNGVhZGUyOWM0ODA4MjEuLmZmM2UyZTFmY2IwNjFhNGZmZmM1ZGVmZDRjMmQxODBhZjQ5YmY3
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKQEAgLTU0LDcgKzU0LDcgQEAg
cHVibGljOgogICAgIHN0cnVjdCBSZXNvdXJjZSB7CiAgICAgICAgIFVSTCB1cmw7CiAgICAgICAg
IFN0cmluZyBtaW1lVHlwZTsKLSAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGE7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgfTsKIAogICAg
IGV4cGxpY2l0IFBhZ2VTZXJpYWxpemVyKFZlY3RvcjxSZXNvdXJjZT4mKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1No
YXJlRGF0YS5oCmluZGV4IDNlZGQ5YzcxYmIyN2U1MGZkZmRmYWNlZTI3MWVmZWZiN2NiMjkxZjUu
LjY4YjBkZDJjMzA2Yjc5NDUzMWQyOWJkMTQwZGNiNDJiNDhlMjczNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
aGFyZURhdGEuaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgU2hhcmVEYXRhIHsKIAogc3RydWN0
IFJhd0ZpbGUgewogICAgIFN0cmluZyBmaWxlTmFtZTsKLSAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZmlsZURhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7
CiB9OwogICAgIAogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCmluZGV4IGQ2ODA1YTNlZTUzNGMzNjY0ZjI1OTQ5NTkz
ZGZiNWI0OTEzYTU0ZjIuLjc1ODM2Yjg3OTE0M2I2MGE3ZjM1MTk3MDMyMDdiNmFkM2Q4ZDRmODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKQEAgLTc2LDcgKzc2LDcg
QEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcoaW50IGxvYWRJbmRleCwg
Y29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKIAogICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZp
bGVOYW1lID0gZmlsZU5hbWU7Ci0gICAgZmlsZS5maWxlRGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZm
ZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgIGZpbGUuZmlsZURh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAg
IG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChXVEZNb3ZlKGZpbGUpKTsKICAgICBtX2ZpbGVzUmVh
ZFNvRmFyKys7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29k
aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCmluZGV4IDNkODBk
N2ExZDQyNDU4NTIwYmQ1NDM4ZWYzNmQ4YTU3Y2I1ZDRlN2UuLjc5YTIzNTM1NWYxZThlZjg2MTUz
NTJlNjM5YzhjNjMxOGY0MDM3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0tleWVkQ29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2Rpbmcu
aApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEtleWVkRGVj
b2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xNjAsNyArMTYwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBrZXks
IGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSA9IDA7CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51bShjb25zdCBTdHJpbmcmIGtleSwgVCB2YWx1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCmluZGV4IGUzODA2
ZTg3ZGY3OWEzZDliNWNhZTEyMTRkZTY2YWEyYTY1ODQ3ZGIuLmZjNjZjMzY1YTJmMjlhNGM3OGU2
MDYxOWU0N2E3MWM3MjU4ZDhmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L05vd1BsYXlpbmdNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxh
eWluZ01hbmFnZXIuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9u
YWw8Tm93UGxheWluZ0luZm8+IG1fbm93UGxheWluZ0luZm87CiAgICAgc3RydWN0IEFydHdvcmtD
YWNoZSB7CiAgICAgICAgIFN0cmluZyBzcmM7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGltYWdlRGF0YTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdl
RGF0YTsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8QXJ0d29ya0NhY2hlPiBtX25vd1BsYXlp
bmdJbmZvQXJ0d29yazsKICAgICBib29sIG1fc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24geyBm
YWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCAxNTczMWVi
MjNmYTc2OTQ5NjBkZDgwNDk2ZmE4ZjJmOWU4Yzc3ODBmLi4wN2VkNDhlNTg4NGVjZWVkYzYxZmQ5
M2U2YjIyMTcxYmU4ODU4OWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNw
cApAQCAtODksNyArODksNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHR5cGUpCiB7CiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpKQogICAgICAgICByZXR1cm4gc3RyYXRlZ3ktPnJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChpbmRleCwgdHlwZSwgbmFtZSgpLCBjb250ZXh0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDExNDU0NjI3ZTBjZGNjYTEzZDczOTM0YWEw
NDM2ZWU3Zjc5NDkzYWUuLjM1NzYzZWUxMmEzOTBlZmM4NDUyYzM1ODA2YjUxMmJlNDI5YWQ5NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDEzICs2MSwxMyBAQCB0
eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERv
Y3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBG
cmFtZTsKIGNsYXNzIFBhc3RlYm9hcmRTdHJhdGVneTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBTaW1wbGVSYW5nZTsKIApAQCAt
ODMsMTQgKzgzLDE0IEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudCB7CiAgICAgV0VCQ09S
RV9FWFBPUlQgflBhc3RlYm9hcmRXZWJDb250ZW50KCk7CiAgICAgU3RyaW5nIGNvbnRlbnRPcmln
aW47CiAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZG
b3JtYXQ7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zv
cm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluU3Ry
aW5nRm9ybWF0OwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RL
KQogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwpAQCAtMTIwLDE3ICsxMjAsMTcgQEAgc3RydWN0
IFBhc3RlYm9hcmRJbWFnZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRJbWFnZSgp
OwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CiAgICAgU3RyaW5nIGRh
dGFJbkhUTUxGb3JtYXQ7CiAjZW5kaWYKICNpZiAhUExBVEZPUk0oV0lOKQogICAgIFBhc3RlYm9h
cmRVUkwgdXJsOwogI2VuZGlmCiAjaWYgIShQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikp
Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CiAgICAgU3RyaW5nIHJlc291cmNlTUlN
RVR5cGU7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICBTdHJpbmcgc3VnZ2VzdGVk
TmFtZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplOwpAQCAtMTQ4LDE2ICsxNDgsMTYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCByZWFkRmlsZVBhdGgoY29uc3QgU3RyaW5nJiwgUHJlc2Vu
dGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlID0geyB9KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRGaWxlUGF0aHMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRIVE1MKGNv
bnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZEltYWdlKFJlZjxTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQ
cmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRJbWFnZShS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50
YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgPSAwOwogI2VuZGlm
CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFdlYkFyY2hpdmUo
U2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZm
ZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgPSAwOwot
ICAgIHZpcnR1YWwgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQ
cmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRXZWJBcmNo
aXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRS
VEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRS
VEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZERh
dGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNp
emUgPSB7IH0pID0gMDsKICNlbmRpZgogfTsKIApAQCAtMTcyLDcgKzE3Miw3IEBAIHN0cnVjdCBQ
YXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgdmlydHVhbCB+UGFzdGVib2FyZEZpbGVSZWFkZXIo
KSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcm
KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNob3VsZFJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiAv
KiB0eXBlICovKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRC
dWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJikgPSAwOwogfTsKIAogY2xhc3MgUGFzdGVib2FyZCB7CkBAIC0yOTcsNyArMjk3LDcg
QEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBwYXN0ZWJv
YXJkSXRlbUluZm8oc2l6ZV90IGluZGV4KSBjb25zdDsKIAogICAgIFN0cmluZyByZWFkU3RyaW5n
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBl
KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
cihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgVVJMIHJlYWRVUkwoc2l6
ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKTsKIAogICAgIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CkBAIC0zMjksNyAr
MzI5LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNG
b3JDb2NvYVR5cGUoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0VHlwZXMsIGNvbnN0IFN0cmlu
ZyYgY29jb2FUeXBlKTsKICAgICBTdHJpbmcgcmVhZFN0cmluZ0ZvclBsYXRmb3JtVHlwZShjb25z
dCBTdHJpbmcmKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVj
aygpOwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9yVHlw
ZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOworICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7CiAj
ZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gbV9jb250ZXh0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3Bw
CmluZGV4IDZkY2VjYjZjOTg4MDhmOTVhNGJlNTFkMDBkNmRiODg4NzVmODg5NzguLjdiNGIzZDM2
YWE2ODAzNjExODc5MTMxYjVhMWIyMjZiNTg4ZDM2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKQEAgLTMzLDEzICszMywxMyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8
U2hhcmVkQnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5n
LCBSZWY8U2hhcmVkQnVmZmVyPj4mIG90aGVyKQorc3RhdGljIHN0ZDo6dmFyaWFudDxTdHJpbmcs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6
OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiBvdGhlcikKIHsK
ICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG90aGVyKSkKICAgICAgICAg
cmV0dXJuIHsgc3RkOjpnZXQ8U3RyaW5nPihvdGhlcikgfTsKIAotICAgIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikpCi0gICAgICAgIHJldHVybiB7
IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikuY29weVJlZigpIH07CisgICAgaWYg
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihvdGhl
cikpCisgICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4ob3RoZXIpLmNvcHlSZWYoKSB9OwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTgwLDcgKzgw
LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGE6OlBhc3RlYm9hcmRDdXN0b21EYXRhKFN0cmluZyYm
IG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYmIGRhdGEKIHsKIH0KIAotUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25z
dAorUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpIGNvbnN0CiB7CiAgICAgY29uc3RleHByIHVuc2lnbmVkIGN1cnJlbnRDdXN0b21EYXRh
U2VyaWFsaXphdGlvblZlcnNpb24gPSAxOwogCkBAIC04OSw3ICs4OSw3IEBAIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVy
KCkgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fb3JpZ2luOwogICAgIGVuY29kZXIgPDwgc2FtZU9y
aWdpbkN1c3RvbVN0cmluZ0RhdGEoKTsKICAgICBlbmNvZGVyIDw8IG9yZGVyZWRUeXBlcygpOwot
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIo
KSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIFBhc3RlYm9h
cmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVy
KFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJiBkZWNvZGVyKQpAQCAtMTI0LDcgKzEyNCw3IEBA
IFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tUGVyc2lzdGVu
Y2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzdGVi
b2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUGFzdGVib2FyZEN1c3RvbURhdGEg
UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoYnVmZmVyLmRl
Y29kZXIoKSk7CiB9CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQog
ICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZvcm1EYXRhID0geyB2YWx1ZSB9Owog
fQogCi12b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhKQogewogICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZvcm1EYXRh
ID0geyBXVEZNb3ZlKGRhdGEpIH07CiB9CkBAIC0yMDIsMTQgKzIwMiwxNCBAQCBIYXNoTWFwPFN0
cmluZywgU3RyaW5nPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6c2FtZU9yaWdpbkN1c3RvbVN0cmlu
Z0RhdGEoKSBjb25zdAogICAgIHJldHVybiBjdXN0b21EYXRhOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5
cGUpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3Rv
bURhdGE6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGZvciAo
YXV0byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgaWYgKGVudHJ5LnR5cGUgIT0gdHlwZSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpLmNv
cHlSZWYoKTsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRh
KS5jb3B5UmVmKCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMjY1LDEx
ICsyNjUsMTEgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaEN1c3RvbVN0cmlu
ZyhGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwKICAgICB9CiB9CiAKLXZvaWQgUGFz
dGVib2FyZEN1c3RvbURhdGE6OmZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9u
PHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8
U2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAordm9pZCBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAogewogICAgIGZvciAo
YXV0byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgYXV0byYgZGF0YSA9IGVudHJ5LnBsYXRm
b3JtRGF0YTsKLSAgICAgICAgaWYgKChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0
YSkgJiYgIXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkuaXNOdWxsKCkpIHx8IHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAgICBpZiAoKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5p
c051bGwoKSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+KGRhdGEpKQogICAgICAgICAgICAgZnVuY3Rpb24oZW50cnkudHlwZSwgZGF0YSk7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1
c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRh
LmgKaW5kZXggYmZhZmMzZWM2MDc2MDU1YWMxODc4NTRjY2Q4ODc3YzhjNWZiZjAxZC4uOTdmZjk4
NWUyNGUxMWI0YzdiYjQxNDM3MzdmMDI4NDBjMzVmZmNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC0zNCw4ICszNCw4IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBh
c3RlYm9hcmRDdXN0b21EYXRhIHsKIHB1YmxpYzoKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgog
CiAgICAgICAgIFN0cmluZyB0eXBlOwogICAgICAgICBTdHJpbmcgY3VzdG9tRGF0YTsKLSAgICAg
ICAgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+IHBsYXRmb3JtRGF0YTsK
KyAgICAgICAgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PiBwbGF0Zm9ybURhdGE7CiAgICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFBhc3RlYm9hcmRD
dXN0b21EYXRhKCk7CkBAIC02MSwxNiArNjEsMTYgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB2b2lkIHNldE9yaWdp
bihjb25zdCBTdHJpbmcmIG9yaWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsgfQogCi0gICAgV0VC
Q09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZl
cigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNo
YXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNp
c3RlbmNlOjpEZWNvZGVyJiYpOwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoY29uc3QgU3RyaW5n
JiB0eXBlKSBjb25zdDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYgdHlwZSkgY29uc3Q7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKICAgICBTdHJpbmcgcmVhZFN0
cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwogCiAgICAgdm9pZCB3
cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAg
IHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKTsKKyAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdJbkN1c3RvbURh
dGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogICAgIHZvaWQg
Y2xlYXIoKTsKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBmb3JFYWNoVHlw
ZShGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBjb25zdDsKICAgICB2b2lkIGZvckVh
Y2hQbGF0Zm9ybVN0cmluZyhGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBkYXRhKT4mJikgY29uc3Q7Ci0gICAgdm9pZCBmb3JFYWNoUGxhdGZvcm1TdHJpbmdP
ckJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qgc3RkOjp2YXJp
YW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKT4mJikgY29uc3Q7CisgICAgdm9p
ZCBmb3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiYgZGF0YSk+JiYpIGNvbnN0OwogICAgIHZvaWQgZm9yRWFjaEN1c3RvbVN0cmluZyhG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKT4mJikg
Y29uc3Q7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggYTc4OGZiNzMwZWRjMWMzZWZhZGU4NzBh
NDAxMWY4YzRiYmFjMmI0NS4uYzQxZTA4NTI0NDk2YzY3ZjFmMTUwMzhmYmIyNmU5YzI5ZGE2OThj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAg
LTMxLDExICszMSwxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKLWNs
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBQ
YXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2Vs
ZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5m
bzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFs
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBzdHJp
bmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwg
VmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgaW50NjRf
dCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAg
ICB2aXJ0dWFsIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoU2hhcmVk
QnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBp
bnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRVUkwoY29u
c3QgUGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRDb2xvcihjb25z
dCBDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtNzIsNyArNzIs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXJsU3RyaW5nU3VpdGFibGVGb3JMb2Fk
aW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOwogI2VuZGlmCiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFN0
cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
ID0gMDsKICAgICB2aXJ0dWFsIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2Fy
ZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxQYXN0
ZWJvYXJkSXRlbUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KSA9IDA7CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJp
bmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFs
IFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zyb21DbGlw
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0g
MDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBTZWxlY3Rpb25EYXRhJiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogI2Vu
ZGlmIC8vIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oCmluZGV4IGI0NWNlMWY5MzhjYmE1MDY2MzhiNmE0MTIxZDc2NzM2M2Y4
YmU1MjIuLjhlMmM4ZmI5MmQ5NzJmZDQyMTYwMDdiYzg3Nzc1MmNmZDM0OGY4NGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaApAQCAtMzAsNyAr
MzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRXcml0ZXJEYXRh
IGZpbmFsIHsKIHB1YmxpYzoKQEAgLTUxLDE0ICs1MSwxNCBAQCBwdWJsaWM6CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogICAgICAgICBib29sIGNh
blNtYXJ0Q29weU9yRGVsZXRlOwotICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0
dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0Owog
ICAgICAgICBTdHJpbmcgZGF0YUluU3RyaW5nRm9ybWF0OwogICAgICAgICBWZWN0b3I8U3RyaW5n
PiBjbGllbnRUeXBlczsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4gY2xpZW50RGF0YTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBj
bGllbnREYXRhOwogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaAppbmRleCAzZjQ4MzJhNWE2NThjMWNjN2MwYWExM2Iy
NmUwZWE0NzMzZTlkM2I3Li45ZTcyZTQ0YTJlYWM0ZDhlZjczMGI5ODcxZDBlYzUwOGVkOWZhYzQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIu
aApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1Db250ZW50RmlsdGVyIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBy
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSA9IDA7Ci0gICAgdmlydHVhbCBSZWY8
U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3QgPSAwOwog
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICB2aXJ0dWFsIENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0ID0gMDsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCBiYTY4MWZlMDU1
MDQ3NmNhYjhiM2Y2ZjBiY2E1NDM2NGFmYzIwZGVhLi43MWRmYjkzZTU3NTYwZTMzYTdmNmM4MGMy
MGY5MmQ1YjJjYWVjMTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBh
c3RlYm9hcmQuaApAQCAtNDcsMTQgKzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVib2FyZDsKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7
CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQ
YXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJv
YXJkV2ViQ29udGVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC03Miw3
ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5
cGVGb3JTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwg
SW5jbHVkZUltYWdlVHlwZXMgPSBJbmNsdWRlSW1hZ2VUeXBlczo6Tm8pOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwotICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJp
bmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0
cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwpAQCAtODYs
NyArODYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHdpbGwgcmV0dXJuIDAg
aWYgcGFzdGVib2FyZCBvd25lcnNoaXAgaGFzIGJlZW4gdGFrZW4gZnJvbSB1cy4KICAgICBXRUJD
T1JFX0VYUE9SVCBpbnQ2NF90IGNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIGludDY0
X3Qgc2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRVUkwoY29u
c3QgUGFzdGVib2FyZFVSTCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0Q29sb3Io
Y29uc3QgQ29sb3ImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldFN0cmluZ0ZvclR5
cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CkBAIC05NCw3
ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBh
c3RlYm9hcmRJbWFnZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJlYWRTdHJp
bmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBjb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAppbmRleCA0YmVhNGYxOGU0Yzc5
ZGViNTc0NGYyODBlOWY4ZjliYzE4M2M2ZjNiLi42MzFhZGU3Y2NmN2FkMjk2OTNhMmU3NjUxZmU2
YTljZGViZDM3NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVy
dGVyLmNwcApAQCAtNjMsNyArNjMsNyBAQCBjb25zdCBSZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29u
dmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25zdAogICAgIHJldHVybiBtX3ByZXZpZXdFcnJvcjsK
IH0KIAotY29uc3QgU2hhcmVkQnVmZmVyJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgp
IGNvbnN0Citjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBQcmV2aWV3Q29udmVydGVyOjpw
cmV2aWV3RGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICptX3ByZXZpZXdEYXRhLT5nZXQoKTsK
IH0KQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWluUmVz
b3VyY2UoKQogICAgIH0pOwogfQogCi12b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmFwcGVuZEZyb21C
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6
OmFwcGVuZEZyb21CdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIHdoaWxlIChidWZmZXIuc2l6ZSgpID4gbV9sZW5ndGhBcHBlbmRlZCkgewogICAgICAg
ICBhdXRvIG5ld0RhdGEgPSBidWZmZXIuZ2V0U29tZURhdGEobV9sZW5ndGhBcHBlbmRlZCk7CkBA
IC0yMzksNyArMjM5LDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQ
cmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0
ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKCp0aGlzKTsKIH0KIAotdm9pZCBQcmV2aWV3Q29udmVydGVy
OjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQg
UHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyB7IFJlZiB7ICp0
aGlzIH0gfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0Nv
bnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCmlu
ZGV4IDA2Yjc2ZjU5ODUxODJiOTczZTYzZjM5NTkzOTRlYTlkMzQ5YWI3MmEuLjkyMDJlZGRkOWUx
MDViMjczNWVkYzE0NmYyNjY0YzEzY2I5YzM0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3OwogY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIHN0cnVjdCBQcmV2
aWV3Q29udmVydGVyQ2xpZW50OwpAQCAtNTEsNyArNTEsNyBAQCBzdHJ1Y3QgUHJldmlld0NvbnZl
cnRlclByb3ZpZGVyOwogc3RydWN0IFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlIDogQ2FuTWFrZVdl
YWtQdHI8UHJldmlld1BsYXRmb3JtRGVsZWdhdGU+IHsKICAgICB2aXJ0dWFsIH5QcmV2aWV3UGxh
dGZvcm1EZWxlZ2F0ZSgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURp
ZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZEZpbmlzaExvYWRpbmcoKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkRmFpbFdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9y
JikgPSAwOwogfTsKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBwcmV2aWV3RmlsZU5hbWUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgcHJldmlld1VUSSgpIGNvbnN0OwogICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIHByZXZpZXdF
cnJvcigpIGNvbnN0OwotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciYgcHJldmlld0RhdGEoKSBjb25z
dDsKKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBwcmV2aWV3RGF0YSgpIGNvbnN0
OwogCiAgICAgdm9pZCBmYWlsZWRVcGRhdGluZygpOwogICAgIHZvaWQgZmluaXNoVXBkYXRpbmco
KTsKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzUGxhdGZvcm1QYXNzd29y
ZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHZvaWQgaXRlcmF0ZUNsaWVudHMoVCYmIGNhbGxiYWNrKTsKLSAgICB2b2lkIGFwcGVu
ZEZyb21CdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBhcHBlbmRGcm9tQnVm
ZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZEFkZENsaWVu
dChQcmV2aWV3Q29udmVydGVyQ2xpZW50Jik7CiAgICAgdm9pZCBkaWRGYWlsQ29udmVydGluZ1dp
dGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRGYWlsVXBkYXRpbmco
KTsKQEAgLTEwOCw3ICsxMDgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1VbmxvY2tX
aXRoUGFzc3dvcmQoY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBQcmV2aWV3UGxhdGZvcm1EZWxl
Z2F0ZQotICAgIHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
KSBmaW5hbDsKKyAgICB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZGVsZWdhdGVEaWRGaW5pc2hMb2FkaW5n
KCkgZmluYWw7CiAgICAgdm9pZCBkZWxlZ2F0ZURpZEZhaWxXaXRoRXJyb3IoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmV2aWV3Q29udmVydGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyQ2xpZW50LmgKaW5kZXggMDRlYTM2ODA2OTJiMjUyYTE5ODljMjZjYTIwNDIxMjc3
N2FhM2I3Yi4uOWNlZTkzMzIwYjIzOGI0Y2Q3M2NkZDJlMDMwMmMzYmY0ZGFkNjhiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaApAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFByZXZpZXdDb252ZXJ0
ZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQgOiBD
YW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVyQ2xpZW50PiB7CiAgICAgdmlydHVhbCB+UHJl
dmlld0NvbnZlcnRlckNsaWVudCgpID0gZGVmYXVsdDsKQEAgLTQyLDcgKzQyLDcgQEAgc3RydWN0
IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVy
Q2xpZW50PiB7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hVcGRh
dGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29u
dmVydGVyRGlkRmFpbFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRl
ciYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRh
KFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBTaGFyZWRCdWZmZXImIG5ld0RhdGEpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252
ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBuZXdEYXRhKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKFByZXZpZXdD
b252ZXJ0ZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWls
Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgKaW5kZXggODI3ODYzOTNm
Y2VkNzU0Yzg1ZjdiMjg5MTI1MmY1MTZiZWQwZDU0OS4uYjk4NmVlNDBkMTk3NTE3NGY1NGFkMjlh
MTY4Y2FkZjE4OTQ1NmMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlclByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlclByb3ZpZGVyLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciA6IENhbk1ha2VXZWFrUHRyPFBy
ZXZpZXdDb252ZXJ0ZXJQcm92aWRlcj4gewogICAgIHZpcnR1YWwgflByZXZpZXdDb252ZXJ0ZXJQ
cm92aWRlcigpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCBwcm92aWRlTWFpblJlc291
cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBw
cm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRl
cihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcm
KT4mJikgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJv
bWlzZWRBdHRhY2htZW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRB
dHRhY2htZW50SW5mby5oCmluZGV4IGExY2M3Njk1YzBhNjNlZDc4N2UyMTBhN2M4Mjc3NzY3ZGNj
ZTcxYWYuLjFlMTJiOTU1NTgwMjkyYzAzYTU3OGVmM2Y3OGIxNTdlZDVmZWMzMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKQEAgLTMw
LDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2ht
ZW50SW5mbyB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTM4LDcgKzM4LDcg
QEAgc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewogI2VuZGlmCiAKICAgICBWZWN0b3I8
U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZm
ZXI+PiBhZGRpdGlvbmFsRGF0YTsKIAogICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGVhYzg0MTgzY2Ez
ZDlhNDY0ODc4YzZjNDhmY2UwMjIwYWRkNDc5YWUuLjdmYWY2NzdkNzI0MDY3ODE3N2VjM2Q0OWNh
YzBiMWJiYzQ4M2UwMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cApAQCAtMzcsNjkgKzM3LDY5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCitSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcihkYXRhLCBzaXplKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEp
CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEp
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZN
b3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOwogfQogCi1SZWY8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCitSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZl
Y3Rvcjx1aW50OF90PiYmIHZlY3RvcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKIH0KIAotUmVmPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlk
ZXIpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikp
KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CitGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwogCi1T
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGZp
bGVEYXRhKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQogICAgIDogbV9zaXplKGZpbGVE
YXRhLnNpemUoKSkKIHsKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50Ojpj
cmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpIH0pOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1
ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKK0ZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJv
dmlkZXIpCiAgICAgOiBtX3NpemUocHJvdmlkZXIuc2l6ZSgpKQogewogICAgIG1fc2VnbWVudHMu
YXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSkgfSk7CiB9
CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgYXBwZW5kKFdURk1vdmUoYnVm
ZmVyKSk7CiB9CiAKICNpZiBVU0UoR1NUUkVBTUVSKQotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKK1JlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0
TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIobWFwcGVkQnVmZmVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihtYXBwZWRCdWZmZXIpKTsKIH0KIAotU2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKK0Zy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3du
ZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKICAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgp
KQogewogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFw
cGVkQnVmZmVyKSB9KTsKIH0KICNlbmRpZgogCi1zdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJp
bmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2Vn
bWVudHMsIHNpemVfdCBzaXplKQorc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVu
dHNEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBz
ZWdtZW50cywgc2l6ZV90IHNpemUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0
YTsKICAgICBjb21iaW5lZERhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKQEAgLTEw
OSwxOSArMTA5LDE5IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0
YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJp
bmVkRGF0YTsKIH0KIAotUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
bWFrZUNvbnRpZ3VvdXMoKSBjb25zdAorUmVmPFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKSBjb25zdAogewogICAgIGlmIChtX2NvbnRpZ3VvdXMp
Ci0gICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cio+KGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpIH07CisgICAgICAgIHJldHVybiBS
ZWYgeyAqc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKj4odGhpcykpIH07CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKLSAgICAg
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0g
MSkKLSAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21l
bnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmlu
ZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEp
KTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEp
KTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdAor
VmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QK
IHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBkYXRhLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoc2l6ZSgpKTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBWZWN0b3I8dWludDhfdD4gU2hhcmVk
QnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLVZlY3Rvcjx1
aW50OF90PiBTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkKK1ZlY3Rvcjx1aW50OF90PiBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCiB7CiAgICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTQ2LDEzICsxNDYsMTMgQEAgVmVjdG9yPHVp
bnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKQogICAgIHJldHVybiBjb21iaW5lZERhdGE7
CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3IFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEoc2l6
ZV90IHBvc2l0aW9uKSBjb25zdAorU2hhcmVkQnVmZmVyRGF0YVZpZXcgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6Z2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdAogewogICAgIGNvbnN0
IERhdGFTZWdtZW50VmVjdG9yRW50cnkqIGVsZW1lbnQgPSBnZXRTZWdtZW50Rm9yUG9zaXRpb24o
cG9zaXRpb24pOwogICAgIHJldHVybiB7IGVsZW1lbnQtPnNlZ21lbnQuY29weVJlZigpLCBwb3Np
dGlvbiAtIGVsZW1lbnQtPmJlZ2luUG9zaXRpb24gfTsKIH0KIAotY29uc3QgU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBTaGFyZWRCdWZmZXI6OmdldFNlZ21lbnRGb3JQb3Np
dGlvbihzaXplX3QgcG9zaXRpb24pIGNvbnN0Citjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpnZXRTZWdt
ZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aW9uKSBjb25zdAogewogICAgIFJFTEVBU0VfQVNT
RVJUKHBvc2l0aW9uIDwgbV9zaXplKTsKICAgICBhdXRvIGNvbXBhcmF0b3IgPSBbXShjb25zdCBz
aXplX3QmIHBvc2l0aW9uLCBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5JiBlbnRyeSkgewpA
QCAtMTYzLDcgKzE2Myw3IEBAIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3JF
bnRyeSogU2hhcmVkQnVmZmVyOjpnZXRTZWdtZW50Rm9yUG9zaXRpb24oCiAgICAgcmV0dXJuIGVs
ZW1lbnQ7CiB9CiAKLVN0cmluZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKK1N0
cmluZyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CiB7CiAgICAg
U3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgIGZvckVhY2hTZWdtZW50KFsmXShhdXRv
JiBzZWdtZW50KSB7CkBAIC0xNzMsNyArMTczLDcgQEAgU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9I
ZXhTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9
CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZl
cigpIGNvbnN0CitSZWZQdHI8QXJyYXlCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRy
eUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIHsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gQXJy
YXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNp
emUoKSksIDEpOwogICAgIGlmICghYXJyYXlCdWZmZXIpIHsKQEAgLTE5Miw3ICsxOTIsNyBAQCBS
ZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBj
b25zdAogICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFw
cGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmFwcGVuZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFT
U0VSVCghbV9jb250aWd1b3VzKTsKICAgICBtX3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0eShtX3Nl
Z21lbnRzLnNpemUoKSArIGRhdGEubV9zZWdtZW50cy5zaXplKCkpOwpAQCAtMjAzLDcgKzIwMyw3
IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQog
ICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZm
ZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQordm9pZCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxl
bmd0aCkKIHsKICAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHZlY3RvcjsKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiAgICAgQVNTRVJUKGludGVybmFsbHlD
b25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8
dWludDhfdD4mJiBkYXRhKQogewogICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBhdXRv
IGRhdGFTaXplID0gZGF0YS5zaXplKCk7CkBAIC0yMjIsMTYgKzIyMiwxNiBAQCB2b2lkIFNoYXJl
ZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiAgICAgQVNTRVJUKGludGVy
bmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQordm9p
ZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjbGVhcigpCiB7CiAgICAgbV9zaXplID0gMDsKICAg
ICBtX3NlZ21lbnRzLmNsZWFyKCk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkp
OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAorUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHkoKSBj
b25zdAogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNsb25lID0gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCdWZmZXIpOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjbG9uZSA9IGFkb3B0
UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcik7CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1f
c2l6ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2Vn
bWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRz
KQpAQCAtMjQxLDE0ICsyNDEsMTQgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpj
b3B5KCkgY29uc3QKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpm
b3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhf
dD4mKT4mIGFwcGx5KSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpmb3JFYWNo
U2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4m
IGFwcGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMgPSBtX3NlZ21lbnRzOwogICAgIGZv
ciAoYXV0byYgc2VnbWVudCA6IHNlZ21lbnRzKQogICAgICAgICBhcHBseShTcGFuIHsgc2VnbWVu
dC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpIH0pOwogfQogCi1ib29s
IFNoYXJlZEJ1ZmZlcjo6c3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVm
aXgpIGNvbnN0Citib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3Qg
U3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdAogewogICAgIGlmIChwcmVmaXguZW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yNzAsNyArMjcwLDcgQEAgYm9vbCBTaGFy
ZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBj
b25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZl
cjo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAorVmVjdG9yPHVpbnQ4
X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxl
bmd0aCkgY29uc3QKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBpZiAob2Zmc2V0
ID49IHNpemUoKSkKQEAgLTI5NywxMiArMjk3LDEyIEBAIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRC
dWZmZXI6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKICAgICByZXR1
cm4gZGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlv
biwgc2l6ZV90IGxlbmd0aCkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29w
eVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdAogewogICAgIHJldHVy
biBjb3B5VG8oZGVzdGluYXRpb24sIDAsIGxlbmd0aCk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVy
Ojpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5h
dGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIHsKICAgICBBU1NFUlQo
bGVuZ3RoICsgb2Zmc2V0IDw9IHNpemUoKSk7CiAgICAgaWYgKG9mZnNldCA+PSBzaXplKCkpCkBA
IC0zNDEsNyArMzQxLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5h
dGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIH0KIAogI2lmIEFTU0VS
VF9FTkFCTEVECi1ib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25z
dAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNv
bnN0CiB7CiAgICAgc2l6ZV90IHBvc2l0aW9uID0gMDsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVs
ZW1lbnQgOiBtX3NlZ21lbnRzKSB7CkBAIC0zNTQsMTIgKzM1NCwxMiBAQCBib29sIFNoYXJlZEJ1
ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogI2VuZGlmIC8vIEFTU0VSVF9FTkFC
TEVECiAKICNpZiAhVVNFKENGKQotdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVk
ZWRTb29uKCkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5v
dE5lZWRlZFNvb24oKSBjb25zdAogewogfQogI2VuZGlmCiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpv
cGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0Citib29sIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
b3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTQwOCwxOSArNDA4LDE5IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LUNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKQorU2hhcmVk
QnVmZmVyOjpTaGFyZWRCdWZmZXIoKQogewogICAgIG1fY29udGlndW91cyA9IHRydWU7CiB9CiAK
LUNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFT
ZWdtZW50PiYmIHNlZ21lbnQpCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8RGF0YVNl
Z21lbnQ+JiYgc2VnbWVudCkKIHsKICAgICBtX3NpemUgPSBzZWdtZW50LT5zaXplKCk7CiAgICAg
bV9zZWdtZW50cy5hcHBlbmQoeyAwLCBXVEZNb3ZlKHNlZ21lbnQpIH0pOwogICAgIG1fY29udGln
dW91cyA9IHRydWU7CiB9CiAKLUNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjb250aWd1b3VzQnVmZmVyKQorU2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY29udGlndW91
c0J1ZmZlcikKIHsKICAgICBBU1NFUlQoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgp
IHx8IGNvbnRpZ3VvdXNCdWZmZXItPmlzRW1wdHkoKSk7CiAgICAgbV9zaXplID0gY29udGlndW91
c0J1ZmZlci0+c2l6ZSgpOwpAQCAtNDI5LDMxICs0MjksMzEgQEAgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3Vv
dXNCdWYKICAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOwogfQogCi1Db250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYg
ZGF0YSkKLSAgICA6IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQorU2hhcmVkQnVmZmVyOjpT
aGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAgIDogRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQogewogICAgIG1fY29udGlndW91cyA9
IHRydWU7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0
aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVN
YXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5n
IG1heVVzZUZpbGVNYXBwaW5nKQogewogICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlV
c2VGaWxlTWFwcGluZzo6WWVzKSB7CiAgICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7CiAgICAg
ICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBt
YXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwogICAgICAgICBpZiAobWFwcGluZ1N1Y2Nl
c3MpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CiAgICAgfQogICAg
IHJldHVybiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOwogfQogCi1jb25zdCB1aW50
OF90KiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK2NvbnN0IHVpbnQ4X3Qq
IFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gbV9zZWdtZW50c1swXS5z
ZWdtZW50LT5kYXRhKCk7CiB9CiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CitXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVy
IFNoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHsgeyBkYXRhKCks
IHNpemUoKSB9IH07CiB9CkBAIC01NTIsMTYgKzU1MiwxNiBAQCBTaGFyZWRCdWZmZXJEYXRhVmll
dzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmIG90aGVy
LCBzaQogewogfQogCi1SZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0
YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBjb25z
dCBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAg
ICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAogICAgICAgICBb
c2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CiAgICAgfSk7CiB9CiAKLVJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQor
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsK
ICAgICAvLyBBbGxvY2F0ZSBhIGJ1ZmZlciBiaWcgZW5vdWdoIHRvIGhvbGQgYWxsIHRoZSBjaGFy
YWN0ZXJzLgogICAgIGNvbnN0IHNpemVfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CkBAIC01
ODcsNyArNTg3LDcgQEAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgfQogCiAgICAgYnVmZmVyLnNocmluayhwIC0gcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyLmRhdGEoKSkpOwotICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCAwMWZiYWE5
NmY4YTQ1NGZjMmQxMDk2ZmJkY2JhMjQ2MWNjNGZkNjNkLi4xMTlmMzg0ZTU4MGY5OGI4MTQzNDJi
YmE0YTIwZDYxNmZkOGJmOGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aApAQCAtNjIsNyArNjIsNyBAQCBjbGFzcyBEZWNvZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBj
bGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIAogLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNl
Z21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5
IG90aGVyIG9iamVjdHMuCkBAIC0xMzAsNDIgKzEzMCw0MiBAQCBwcml2YXRlOgogI2VuZGlmCiAg
ICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAogICAgICAgICBQcm92aWRlcj4gbV9p
bW11dGFibGVEYXRhOwotICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAgZnJpZW5k
IGNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKKyAgICBm
cmllbmQgY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKKyAgICBmcmllbmQgY2xhc3MgU2hh
cmVkQnVmZmVyOyAvLyBGb3IgY3JlYXRlQ0ZEYXRhCiB9OwogCi1jbGFzcyBTaGFyZWRCdWZmZXIg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7
IHJldHVybiBjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNp
emUpOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZl
Y3Rvcjx1aW50OF90PiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBjcmVhdGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUpOyB9CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVh
dGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKIAog
I2lmIFVTRShGT1VOREFUSU9OKQogICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0FycmF5
PiBjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhKik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhKik7CiAjZW5kaWYK
ICNpZiBVU0UoQ0YpCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKIAogI2lmIFVTRShH
TElCKQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
R0J5dGVzKik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7CiAjZW5kaWYKIAogI2lmIFVTRShHU1RSRUFNRVIpCi0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBw
ZWRPd25lZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKICAg
ICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
bGVuZ3RoKSBjb25zdDsKIAotICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRz
IGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAo
VGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICAvLyBTaW1pbGFyIHRvIGNvcHlE
YXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3
aGVuIGl0IGlzIHNhZmUgKFRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQp
LgogICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOwogCi0gICAgLy8gQ3JlYXRlcyBh
biBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8g
dGhhdAorICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0CiAgICAgLy8gQXJyYXlCdWZmZXIg
d2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KICAg
ICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVy
KCkgY29uc3Q7CiAKQEAgLTE3MywxNCArMTczLDE0IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW1w
dHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CiAgICAgYm9vbCBpc0NvbnRpZ3VvdXMoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRpZ3VvdXM7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxT
aGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwg
c2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hT
ZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNv
bnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OwogCi0gICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBX
ZWJDb3JlOjpEYXRhU2VnbWVudDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdo
ZW4gdXNpbmcgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudAorICAgIHVzaW5nIERhdGFTZWdtZW50
ID0gV2ViQ29yZTo6RGF0YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0
eSB3aGVuIHVzaW5nIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBz
dHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0
aW9uOwpAQCAtMTk4LDM4ICsxOTgsMzggQEAgcHVibGljOgogCiAgICAgdm9pZCBoaW50TWVtb3J5
Tm90TmVlZGVkU29vbigpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7
IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbWFrZUNv
bnRpZ3VvdXMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBt
YWtlQ29udGlndW91cygpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgZnJpZW5kIGNsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAog
ICAgIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7CiAgICAgYm9vbCBtX2NvbnRpZ3VvdXMg
eyBmYWxzZSB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKCk7Ci0gICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IGFw
cGVuZChkYXRhLCBzaXplKTsgfQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KLSAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgeyBhcHBlbmQoV1RGTW92ZShk
YXRhKSk7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOworICAg
IFdFQkNPUkVfRVhQT1JUIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoKTsKKyAgICBleHBsaWNpdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7
IGFwcGVuZChkYXRhLCBzaXplKTsgfQorICAgIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgYXBwZW5kKGRhdGEsIHNpemUpOyB9
CisgICAgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBk
YXRhKSB7IGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihEYXRh
U2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmKTsKICNpZiBVU0UoQ0YpCi0gICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CisgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwog
I2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYp
OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoR3N0
TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgogICAgIHNpemVfdCBtX3NpemUgeyAwIH07CiAK
IHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogICAg
IHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwpAQCAtMjQyLDcgKzI0
Miw3IEBAIHByaXZhdGU6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CiAKLSAg
ICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMg
dGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KKyAgICAvLyBDb21i
aW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0
b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAgICAgV0VCQ09S
RV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgY29uc3QgRGF0YVNlZ21l
bnRWZWN0b3JFbnRyeSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9uKSBj
b25zdDsKIApAQCAtMjUxLDIwICsyNTEsMjAgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotLy8g
QSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGlzIGEgU2hhcmVkQnVmZmVyIHRoYXQgYWxsb3dzIHRv
IGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEoKSBhbmQgcmVsYXRlZCBt
ZXRob2RzLgotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlciA6IHB1YmxpYyBTaGFyZWRCdWZm
ZXIgeworLy8gQSBTaGFyZWRCdWZmZXIgaXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIHRoYXQg
YWxsb3dzIHRvIGRpcmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEoKSBhbmQg
cmVsYXRlZCBtZXRob2RzLgorY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIgewogcHVibGljOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgot
ICAgIHN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBh
cmdzKQorICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3Mp
CiAgICAgewogICAgICAgICBpZiBjb25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCi0gICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkpOworICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKCkpOwogICAgICAgICBl
bHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKICAgICAgICAgICAgICYmIChz
dGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikpCi0gICAgICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLikpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwogICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3
YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAgICAgICAgICBhdXRv
IGJ1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKFdURk1vdmUoYnVmZmVyKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNzMsNyArMjcz
LDcgQEAgcHVibGljOgogICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNv
bnN0OwogCiAgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVz
IH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hh
cmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1v
ZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGlu
ZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOwogCiAjaWYgVVNFKEZPVU5EQVRJT04pCiAgICAg
V0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CkBA
IC0yODYsMjEgKzI4NiwyMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBXRUJD
T1JFX0VYUE9SVCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
KFJlZjxEYXRhU2VnbWVudD4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBTaGFyZWRCdWZmZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CiB9OwogCiBjbGFzcyBTaGFyZWRCdWZmZXJC
dWlsZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1
aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyQnVpbGRlcihSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAg
ICAgewotICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRo
ZSBTaGFyZWRCdWZmZXIgYXMgYWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisg
ICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIgYXMgYWxsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgc2hvdWxkIGJl
IGltbXV0YWJsZQogICAgICAgICAvLyBvbmNlIGNyZWF0ZWQuCiAgICAgICAgIGlmICghYnVmZmVy
IHx8IChidWZmZXItPmhhc09uZVJlZigpICYmICFidWZmZXItPmlzQ29udGlndW91cygpKSkgewog
ICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CkBAIC0zMDgsOSArMzA4LDkg
QEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIGFwcGVuZCgqYnVmZmVyKTsKICAgICB9Ci0g
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKICAgICB7Ci0gICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHRh
a2UgYSByZWZlcmVuY2UgdG8gdGhlIFNoYXJlZEJ1ZmZlciBhcyBhbGwgU2hhcmVkQnVmZmVyIHNo
b3VsZCBiZSBpbW11dGFibGUKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJl
ZmVyZW5jZSB0byB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhcyBhbGwgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCiAgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4K
ICAgICAgICAgaWYgKGJ1ZmZlci0+aGFzT25lUmVmKCkgJiYgIWJ1ZmZlci0+aXNDb250aWd1b3Vz
KCkpIHsKICAgICAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwpAQCAtMzIwLDcg
KzMyMCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+
CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihBcmdzJiYuLi4gYXJncykKLSAgICAgICAgOiBtX2J1
ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7
IH0KKyAgICAgICAgOiBtX2J1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rk
Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkgeyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUu
Li4gQXJncz4KICAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJncykKQEAgLTM0Miw5ICszNDIs
OSBAQCBwdWJsaWM6CiAgICAgICAgIGVuc3VyZUJ1ZmZlcigpOwogICAgIH0KIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgUmVm
PFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXIt
PmNvcHkoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiB0YWtlKCkKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZ2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY29w
eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmNvcHkoKSA6IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHRha2UoKQogICAgIHsKICAgICAgICAgZW5zdXJlQnVmZmVyKCk7CiAgICAgICAgIHJldHVy
biBtX2J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOwpAQCAtMzU0LDEyICszNTQsMTIgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGVuc3VyZUJ1ZmZlcigpCiAgICAgewogICAgICAgICBpZiAoIW1fYnVmZmVy
KQotICAgICAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAg
ICAgICAgbV9idWZmZXIgPSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICB9
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAotaW5saW5lIFZlY3Rvcjx1aW50OF90PiBT
aGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKK2lubGluZSBWZWN0b3I8dWludDhfdD4gRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkK
ICAgICAgICAgcmV0dXJuIHRha2VEYXRhKCk7CkBAIC0zNzQsNyArMzc0LDcgQEAgcHVibGljOgog
ICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnQtPmRhdGEo
KSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OyB9CiAgICAgY29uc3QgY2hhciogZGF0YUFzQ2hh
clB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEo
KSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
cmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKICNpZiBVU0UoRk9VTkRBVElPTikK
ICAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25z
dDsKICNlbmRpZgpAQCAtMzg0LDYgKzM4NCw2IEBAIHByaXZhdGU6CiAgICAgY29uc3Qgc2l6ZV90
IG1fc2l6ZTsKIH07CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVy
KGNvbnN0IFN0cmluZyYpOworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBT
dHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCmluZGV4IGNkYjZlNzAzNDA0
ZDQyNmRkMjFiNDc5ZmE4OWMwZGE5YjhjNDlmOGUuLjlkMDU1Y2UyN2Q4OGMzZDYyZTViZDFjZDQ2
YWQ5MWY1Y2M0MzFmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAjaWYgRU5BQkxFKE1IVE1MKQogCi1TaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFZlY3Rvcjxj
aGFyPiYgc2VwYXJhdG9yKQorU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgVmVjdG9yPGNo
YXI+JiBzZXBhcmF0b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVudChidWZmZXItPmJlZ2luKCkp
CiAgICAgLCBtX2l0ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAgLCBtX3NlZ21lbnQobV9p
dGVyYXRvckN1cnJlbnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRlcmF0b3JDdXJyZW50LT5zZWdt
ZW50LT5kYXRhKCkgOiBudWxscHRyKQpAQCAtNDQsNyArNDQsNyBAQCBTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNv
bnN0IFZlYwogewogfQogCi1TaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IGNoYXIqIHNlcGFyYXRvcikKK1No
YXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IGNoYXIqIHNlcGFyYXRvcikKICAgICA6IG1faXRl
cmF0b3JDdXJyZW50KGJ1ZmZlci0+YmVnaW4oKSkKICAgICAsIG1faXRlcmF0b3JFbmQoYnVmZmVy
LT5lbmQoKSkKICAgICAsIG1fc2VnbWVudChtX2l0ZXJhdG9yQ3VycmVudCAhPSBtX2l0ZXJhdG9y
RW5kID8gbV9pdGVyYXRvckN1cnJlbnQtPnNlZ21lbnQtPmRhdGEoKSA6IG51bGxwdHIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaAppbmRl
eCA1ZDRlNmZlZTU4MmM2NjE2ZmQwN2UzOTk0ZmY3NWM4ZjA3YTJmY2UxLi4xYzY0MDhkNGM3MzZh
MWM0YTQ1Y2VlN2IzZjY5NjU3YmM5YTI2MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKQEAgLTQxLDggKzQxLDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlciB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVy
KiwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpOwotICAgIFNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyKFNoYXJlZEJ1ZmZlciosIGNvbnN0IGNoYXIqIHNlcGFyYXRvcik7CisgICAgU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFZlY3Rvcjxj
aGFyPiYgc2VwYXJhdG9yKTsKKyAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiwgY29uc3QgY2hhciogc2VwYXJhdG9yKTsKIAogICAgIHZvaWQgc2V0U2Vw
YXJhdG9yKGNvbnN0IFZlY3RvcjxjaGFyPiYpOwogICAgIHZvaWQgc2V0U2VwYXJhdG9yKGNvbnN0
IGNoYXIqKTsKQEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogICAgIHNpemVfdCBwZWVrKFZlY3Rv
cjx1aW50OF90PiYsIHNpemVfdCk7CiAKIHByaXZhdGU6Ci0gICAgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbV9pdGVyYXRvckN1cnJlbnQ7Ci0gICAgY29u
c3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbV9pdGVy
YXRvckVuZDsKKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rvcjo6
Y29uc3RfaXRlcmF0b3IgbV9pdGVyYXRvckN1cnJlbnQ7CisgICAgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JF
bmQ7CiAgICAgY29uc3QgdWludDhfdCogbV9zZWdtZW50IHsgbnVsbHB0ciB9OwogICAgIHNpemVf
dCBtX3NlZ21lbnRJbmRleCB7IDAgfTsKICAgICBWZWN0b3I8Y2hhcj4gbV9zZXBhcmF0b3IgeyBm
YWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVi
b2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcApp
bmRleCBiMmQ3YTU1MGQ0NjBlOTRjZDMxNTEzNGEzMTk1YmNkOTFjN2I3ODk0Li5hNGI0YmIxMDRi
NGQ4NDAxNWI4YWE1YjUzZTdkZmE3ODhjZWQyNWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFN0YXRpY1Bh
c3RlYm9hcmQ6OndyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKICAgICBtX2N1c3RvbURhdGEud3JpdGVTdHJpbmcodHlwZSwgdmFsdWUpOwogfQogCi12
b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVEYXRhKGNv
bnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsK
ICAgICBtX25vbkRlZmF1bHREYXRhVHlwZXMuYWRkKHR5cGUpOwogICAgIG1fY3VzdG9tRGF0YS53
cml0ZURhdGEodHlwZSwgV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
dGF0aWNQYXN0ZWJvYXJkLmgKaW5kZXggYzA5YjZkZTMxZjJlZGViZTAxODhkYzljNDY2YTI3MWUx
YjhiOWUxNC4uZWRkNzEzNjIzZjA2ZDIyYjM4ZTgzMmEyODM3ZmU2Njk5OWRmZDc5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaApAQCAtMzIsNyArMzIsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFN0YXRpY1Bhc3RlYm9hcmQgZmluYWwgOiBw
dWJsaWMgUGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAg
ICBTdHJpbmcgcmVhZFN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpIGZpbmFs
OwogCiAgICAgdm9pZCB3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgZGF0YSkgZmluYWw7Ci0gICAgdm9pZCB3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CiAgICAgdm9pZCB3
cml0ZVN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYg
ZGF0YSk7CiAgICAgdm9pZCBjbGVhcigpIGZpbmFsOwogICAgIHZvaWQgY2xlYXIoY29uc3QgU3Ry
aW5nJiB0eXBlKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL05vd1BsYXlpbmdJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQ
bGF5aW5nSW5mby5oCmluZGV4IDY4Nzk1OTAwYzVhZGY5Y2M5MDQ1ZTBlYWJiMjJiMThmYTY2OTYz
MTQuLjFkNjViYzQwM2FkODUyNDNjNjcyNWU3MDQ0OGQ2Y2RhZGNjY2NlMWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaApAQCAtMzYsNyArMzYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgTm93UGxheWluZ0luZm9BcnR3b3JrIHsK
ICAgICBTdHJpbmcgc3JjOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBpbWFnZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGlt
YWdlRGF0YTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb3dQbGF5aW5nSW5mb0FydHdv
cmsmIG90aGVyKSBjb25zdAogICAgIHsKQEAgLTY3LDcgKzY3LDcgQEAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gaW5saW5lIHN0ZDo6b3B0aW9uYWw8Tm93UGxheWluZ0luZm9BcnR3b3JrPiBOb3dQ
bGF5aW5nSW4KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1pbWVUeXBlKSkKICAgICAgICAgcmV0
dXJuIHsgfTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaW1hZ2VEYXRhKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29j
b2EuY3BwCmluZGV4IGU4YjE5YmYzNGViYTIzYjg1NzIwN2JlODhjZTFiNDViZjhmMmNjYzMuLmYz
MjE0Mjk1MWIxNzk5NmU2Y2UxNjc1NjMxNmJmZDQ3M2ZhYTRlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJD
b2NvYS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBjbGFzcyBBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0
YSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKLSAgICBSZWY8U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICBSZWY8QXVkaW9UcmFja1ByaXZh
dGVXZWJNPiBtX3RyYWNrOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9L
ZXllZEVuY29kZXJDRi5jcHAKaW5kZXggOWIzZWNhMWExNTQ0OThjMGU3ZTM0YzdjOTEzMzY5NWNj
ZDk0N2U3Yi4uNDQ3M2VjMjhkMDRjNTQzNjMyM2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApAQCAtMTQ2LDEy
ICsxNDYsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlT
dGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBL
ZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5
ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBhdXRvIGRhdGEgPSBhZG9wdENG
KENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3Jvb3REaWN0
aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCwgMCwgbnVsbHB0
cikpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2Rl
ckNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCmluZGV4
IGZhYjY2ZmNiY2E4ZjQ3MTk3ZTk4ZDc5YmYwMmVmODE2MWE0Mjc2YTQuLmY1ODZjMDJiYjE1YmYz
OWI3MjgzZmJhOWFhNWU4YTEyNmI4NGZlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvS2V5ZWRFbmNvZGVyQ0YuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgfktleWVk
RW5jb2RlckNGKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQgZW5jb2Rl
Qnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwog
ICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggYjliODgy
MGE2OTBjOWM2NjQ1MWExZjUyNWY0MTgzOWM4NjJjMWIxNy4uODE5ZTI2ZmE0Y2YwNjc5NTdhNTlm
ZWYyOWM5OWYwM2Y1ZjQ0OTFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1No
YXJlZEJ1ZmZlckNGLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQorRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIHsK
ICAgICBhcHBlbmQoZGF0YSk7CiB9CkBAIC00MSw3ICs0MSw3IEBAIFNoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQogLy8gVXNpbmcgRm91bmRhdGlvbiBhbGxvd3MgZm9y
IGFuIGV2ZW4gbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiwK
IC8vIHNvIG9ubHkgdXNlIHRoaXMgdmVyc2lvbiBmb3Igbm9uLUZvdW5kYXRpb24uCiAjaWYgIVVT
RShGT1VOREFUSU9OKQotUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoaGFzT25lU2VnbWVudCgpKSB7CiAg
ICAgICAgIGlmIChhdXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+
KCZtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCkBAIC01MSwxMiArNTEs
MTIgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
Q0ZEYXRhKCkgY29uc3QKIH0KICNlbmRpZgogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShDRkRhdGFSZWYgZGF0YSkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGRhdGEpKTsKIH0KIAotdm9pZCBTaGFyZWRC
dWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogewogICAgIGZvciAo
Y29uc3QgYXV0byYgZW50cnkgOiBtX3NlZ21lbnRzKSB7CiAgICAgICAgIGlmIChlbnRyeS5zZWdt
ZW50LT5oYXNPbmVSZWYoKSkgewpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6
aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogICAgIH0KIH0KIAotdm9pZCBTaGFyZWRC
dWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1f
c2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoZGF0YSl9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25D
b250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlci5oCmluZGV4IDA3OTdkZmJlOGQwMThiZTYzNjE3NDRjNThmODky
ZGQ1NmVkNjg5YzUuLmNiZTg3NzFhNDVkODYyY2I1YWIwNWVjYTM5OTkyN2UwNzgzOGY1NDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25D
b250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKLSAgICBSZWY8U2hh
cmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc1JlcXVpcmVkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyLm1tCmluZGV4IDQyOTBkYjEyOGQwMDBhNDBlZWY3MGZkMjk0
MWQ2MzQ0OTA0NmRlMDMuLjJlZjI3MDFmZTY3OGJmOWI5MmRiMjEyYmJlYTVjOTE1YTNmYzNhMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNp
b25Db250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBO
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6ZmluaXNoZWRBZGRpbmdEYXRhKCkKICAgICBz
ZW1hcGhvcmUud2FpdCgpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBOZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRh
KCkgY29uc3QKIHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkpOwogICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXIuaAppbmRleCAwNjhjZGNiMzgzZjQyMzY1YWMzMjY0ZTIyOWE2ZDYzYmMyYjRhYmQ2
Li42NzlhZTkzMjk1MTdlMWYzOTQzYmE1NzYyYWM4ZjU2ZTg2MGM4YzI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9u
c2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBh
ZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZv
aWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
cmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9j
a0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
ci5tbQppbmRleCBiNDYxZjk3NTM2ZGUzYTE1ODEzYTU4MjdiODY3MTM4Yjk2ZDRmMzhjLi4xYzk2
MDQ3MTZiNDI2OTNkNWU0NmMyZTIzZTk0MWRhMDBjODNlNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVu
dEZpbHRlci5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgUGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXI6OmZpbmlzaGVkQWRkaW5nRGF0YSgpCiAgICAgdXBkYXRlRmlsdGVyU3RhdGUoKTsK
IH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OnJl
cGxhY2VtZW50RGF0YSgpIGNvbnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGFyZW50
YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKGRpZEJsb2NrRGF0YSgpKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
bV9yZXBsYWNlbWVudERhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGFzdGVib2FyZENvY29hLm1tCmluZGV4IDZmNTBmMDM1YWRmZWFhOWRiYWRiMDJhY2Fk
OGYwNjdjNzgzZmNiZTUuLmI4MTcwODE3Y2VjNTllMjJkM2MwZTlhNzhmMTQ2YzAzM2U0YzE2Njkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2Eu
bW0KQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIE5TQml0bWFwSW1hZ2VGaWxlVHlwZSBiaXRtYXBQ
TkdGaWxlVHlwZSgpCiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCi0vLyBNYWtpbmcgdGhp
cyBub24taW5saW5lIHNvIHRoYXQgV2ViS2l0IDIncyBkZWNvZGluZyBkb2Vzbid0IGhhdmUgdG8g
aW5jbHVkZSBTaGFyZWRCdWZmZXIuaC4KKy8vIE1ha2luZyB0aGlzIG5vbi1pbmxpbmUgc28gdGhh
dCBXZWJLaXQgMidzIGRlY29kaW5nIGRvZXNuJ3QgaGF2ZSB0byBpbmNsdWRlIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIuaC4KIFBhc3RlYm9hcmRXZWJDb250ZW50OjpQYXN0ZWJvYXJkV2ViQ29udGVu
dCgpID0gZGVmYXVsdDsKIFBhc3RlYm9hcmRXZWJDb250ZW50Ojp+UGFzdGVib2FyZFdlYkNvbnRl
bnQoKSA9IGRlZmF1bHQ7CiAKQEAgLTIxMSwxMSArMjExLDExIEBAIFZlY3RvcjxTdHJpbmc+IFBh
c3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5zYWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExBVEZP
Uk0oTUFDKQotc3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0VElGRlRv
UE5HKFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKK3N0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBj
b252ZXJ0VElGRlRvUE5HKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCiB7CiAg
ICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0
aERhdGE6IHRpZmZCdWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCld
KTsKICAgICBOU0RhdGEgKnBuZ0RhdGEgPSBbaW1hZ2UgcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6
Yml0bWFwUE5HRmlsZVR5cGUoKSBwcm9wZXJ0aWVzOkB7IH1dOwotICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHBuZ0RhdGEpOwogfQogI2VuZGlmCiAKQEAgLTMxNiw3ICszMTYsNyBAQCBWZWN0
b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkVHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpCiAgICAg
cmV0dXJuIGNvY29hVHlwZXM7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQ
YXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JU
eXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGF1dG8gYnVm
ZmVyID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5idWZmZXJG
b3JUeXBlKHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KaW5kZXggOTgw
NTQ3YjhjYzRjNGE4OGNhMTU1Y2JiMTc4MjBhZjg1ZTJkYzk2OS4uMjVmMzExZjI1ODliODJlZmQy
NTc3YTA4ODk0YjZjNWUwNjZiOTI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KQEAgLTg4LDM3ICs4OCwzNyBAQCBAZW5kCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoTlNEYXRhICpkYXRhKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShOU0RhdGEgKmRhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJyaWRnZV9jYXN0KGRhdGEpKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihicmlkZ2VfY2FzdChkYXRhKSkpOwog
fQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKE5TRGF0YSAqZGF0YSkKK3ZvaWQgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKE5TRGF0YSAqZGF0YSkKIHsKICAgICBBU1NFUlQoIW1f
Y29udGlndW91cyk7CiAgICAgcmV0dXJuIGFwcGVuZChicmlkZ2VfY2FzdChkYXRhKSk7CiB9CiAK
LVJldGFpblB0cjxOU0RhdGE+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgp
IGNvbnN0CitSZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KGNyZWF0ZUNGRGF0YSgpKTsKIH0KIAotUmV0
YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkg
Y29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQogICAgICAgICByZXR1cm4gYWRv
cHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwogICAgIHJldHVybiBicmlk
Z2VfY2FzdChtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpKTsKIH0KIAotUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCkKIHsKICAgICBpZiAoYXV0byByZXNvdXJjZURhdGEgPSBbTlNEYXRhIGRhdGFXaXRo
Q29udGVudHNPZkZpbGU6ZmlsZVBhdGhdKQotICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSk7CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZXRh
aW5QdHI8TlNBcnJheT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0CitS
ZXRhaW5QdHI8TlNBcnJheT4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJy
YXkoKSBjb25zdAogewogICAgIHJldHVybiBjcmVhdGVOU0FycmF5KG1fc2VnbWVudHMsIFtdIChh
dXRvJiBzZWdtZW50KSB7CiAgICAgICAgIHJldHVybiBzZWdtZW50LnNlZ21lbnQtPmNyZWF0ZU5T
RGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETUluc3RhbmNlLmgKaW5kZXggZmJjMjgzZmJjMzM2OWJmODI3ZTMxNjk5NGM0Yzk0ZTA2MzYz
Y2I4MS4uMmRlNDE5MzRkYTE5ODc5ZDc1YzBkZjhhODllNjRlNTk5YzI5YWUwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5o
CkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIExvZ2dlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xh
c3MgQ0RNSW5zdGFuY2VTZXNzaW9uOwogc3RydWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb247
CiAKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgQ0RNSW5zdGFuY2VDbGllbnQgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5D
RE1JbnN0YW5jZUNsaWVudCgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9pZCB1bnJlcXVl
c3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRC
dWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlv
bkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JikgPSAwOwogfTsKIAogLy8gSmF2YVNjcmlwdCdzIGhhbmRsZSB0byBhIENETUluc3RhbmNlLCBt
dXN0IGJlIHVzZWQgZnJvbSB0aGUKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIH07CiAK
ICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93
UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJh
Y2smJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmly
dHVhbCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJl
ZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Np
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNl
U2Vzc2lvbi5oCmluZGV4IDM3Y2QwN2M3YmYyZGM3NWU0MWZkNWM2YzdkZWNmNDNlMTAzOWUxMTQu
LmQyNTkyMjViYTllMDJhNjRkMGNlY2Q2MTUxZmRmOTNmNGYyNDY2YTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNl
U2Vzc2lvbi5oCkBAIC00MywxNiArNDMsMTYgQEAgY2xhc3MgTG9nZ2VyOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudCA6IHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5DRE1JbnN0YW5jZVNlc3Npb25DbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB1c2luZyBLZXlT
dGF0dXMgPSBDRE1LZXlTdGF0dXM7Ci0gICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9y
PHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47CisgICAgdXNpbmcgS2V5
U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4sIEtleVN0YXR1cz4+OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlT
dGF0dXNWZWN0b3ImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNz
YWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBtZXNzYWdlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29u
c3QgU3RyaW5nJikgPSAwOwogICAgIHVzaW5nIFBsYXRmb3JtRGlzcGxheUlEID0gdWludDMyX3Q7
CiAgICAgdmlydHVhbCBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSA9IDA7CkBAIC03OCwx
MyArNzgsMTMgQEAgcHVibGljOgogICAgICAgICBTdWNjZWVkZWQsCiAgICAgfTsKIAotICAgIHVz
aW5nIExpY2Vuc2VDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2
aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSA9IDA7
CisgICAgdXNpbmcgTGljZW5zZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47
CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXRE
YXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgPSAwOwogCiAgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9y
ID0gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3I7Ci0gICAgdXNpbmcg
TWVzc2FnZSA9IHN0ZDo6cGFpcjxNZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAg
IHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj47CiAgICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8S2V5U3Rh
dHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2Vk
RXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1
ZSBzdWNjZWVkZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2Us
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsK
IAogICAgIGVudW0gY2xhc3MgU2Vzc2lvbkxvYWRGYWlsdXJlIDogdWludDhfdCB7CiAgICAgICAg
IE5vbmUsCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIHVzaW5nIENsb3NlU2Vzc2lv
bkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsKICAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFj
ayYmKSA9IDA7CiAKLSAgICB1c2luZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChLZXlTdGF0dXNWZWN0b3ImJiwgc3RkOjpvcHRpb25hbDxSZWY8U2hh
cmVkQnVmZmVyPj4mJiwgU3VjY2Vzc1ZhbHVlKT47CisgICAgdXNpbmcgUmVtb3ZlU2Vzc2lvbkRh
dGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYsIHN0
ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmLCBTdWNjZXNzVmFsdWUp
PjsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETVByaXZhdGUuaAppbmRleCBjYzZkYzdmMTQwY2Q2N2QyYjdiODRmNmFiMmMyODQzMTZk
ZmRkY2NmLi41MmE2MTQ4YzgzY2Q1MzkzYzhmODc0ZWQ4NWFkOGJmMjdlNWJlNTBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5o
CkBAIC03Myw4ICs3Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbG9hZEFuZEluaXRp
YWxpemUoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVz
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3Qg
PSAwOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
LCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwg
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgPSAwOwogCiBw
cm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1Qcm94eS5jcHAKaW5kZXggZjIxOGY5NzkwNGZiYmE0OWYxZWJkZjQ4ZTIwNWZlNzNkZmFm
YjY0OC4uNGJhNzViZjAwZDlmNzEzYjVhZmJiYTc5MzQwMTk3MTZjZDhmMDM4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcApA
QCAtMjI3LDcgKzIyNyw3IEBAIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIEtl
eVN0b3JlOjpjb252ZXJ0VG9KU0tleVN0YXR1c1ZlY3RvcigpIGNvbnN0CiAgICAgQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzVmVjdG9yOwogICAgIGtleVN0YXR1
c1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bUtleXMoKSk7CiAgICAgZm9yIChjb25z
dCBhdXRvJiBrZXkgOiBtX2tleXMpCi0gICAgICAgIGtleVN0YXR1c1ZlY3Rvci51bmNoZWNrZWRB
cHBlbmQoc3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBDRE1JbnN0YW5jZVNlc3Npb246Oktl
eVN0YXR1cz4geyBrZXktPmlkQXNTaGFyZWRCdWZmZXIoKSwga2V5LT5zdGF0dXMoKSB9KTsKKyAg
ICAgICAga2V5U3RhdHVzVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChzdGQ6OnBhaXI8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+LCBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1cz4geyBrZXkt
PmlkQXNTaGFyZWRCdWZmZXIoKSwga2V5LT5zdGF0dXMoKSB9KTsKICAgICByZXR1cm4ga2V5U3Rh
dHVzVmVjdG9yOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1Qcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUHJveHkuaAppbmRleCBhNTg0YjZjZDI2NmIwOTgwOTAyNTRkN2RjYmRkYmY2MGQ5
MzMxZmJiLi5lMWUwOThhMWQ1ZjVmZmM2NWMyYTQ4ZmE0MGFhOTcyZmU4OWUxZTNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKQEAg
LTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgS2V5SGFuZGxlKHN0YXR1cywgV1RGTW92ZShrZXlJRCksIFdURk1vdmUoa2V5SGFuZGxlVmFs
dWUpKSk7CiAgICAgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIoKSBj
b25zdCB7IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9pZC5zaXpl
KCkpOyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIo
KSBjb25zdCB7IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9pZC5z
aXplKCkpOyB9CiAKICAgICBib29sIHRha2VWYWx1ZUlmRGlmZmVyZW50KEtleUhhbmRsZVZhbHVl
VmFyaWFudCYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKaW5kZXggNjY3MjZmNzRlNThkOGUxMjJjYmM5MGI4
NjdiOWJmOTYxNzc4MDNkNC4uZmNhNmYyMzg4YTU2YTZhMWM3MjQ3MGU1YTQ2ZmRkMjhmMDczNzUw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
VXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1VdGlsaXRpZXMuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogbmFtZXNwYWNlIENETVV0aWxpdGllcyB7CiAKLVJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNl
SlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxKU09OOjpPYmpl
Y3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgLy8gRmFpbCBvbiBsYXJnZSBidWZmZXJzIHdob3NlIHNpemUgZG9lc24ndCBmaXQg
aW50byBhIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLgogICAgIHNpemVfdCBzaXplID0gYnVmZmVy
LnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNVXRpbGl0aWVzLmgKaW5kZXggNzRmNTE1YjBiZDJhODcxNjhlZWYyNGIxOGY5NWRlYWJl
ZTgyOGU2Yy4uZmNmNWJkZGE3YzU5N2QzYzNhYzM0OWVlMTc4OWU0YWQ2ZTBjOTU5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0
aWVzLmgKQEAgLTM1LDExICszNSwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFj
ZSBDRE1VdGlsaXRpZXMgewogCi1SZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3Qo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CitSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpTT05PYmpl
Y3QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5jcHAKaW5kZXggMmFkZGVlN2VlOGI0ZWViODM1ZmE3MGMyNGYxZDRlZjg5ZDcz
NDNlZi4uMzFhOWZkZmEwMmQ2ZDAwY2EyNjE4MjUyZGVkOTM1MzEzZGM1OGFhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2Ns
ZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHN0YXRpYyBib29sIHBh
cnNlTGljZW5zZVJlbGVhc2VBY2tub3dsZWRnZW1lbnRGb3JtYXQoY29uc3QgSlNPTjo6T2JqZWN0
JiByb290KQogLy8gXTsKIAogLy8gVGhpcyBmdW5jdGlvbiBleHRyYWN0cyB0aGUgS2V5SWRzIGNv
dW50IGFuZCB0aGUgbG9jYXRpb24gb2YgdGhlIGZpcnN0IEtleUlkIGluIGluaXREYXRhIGJ1ZmZl
ci4KLXN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9j
YXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitzdGF0
aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJv
bUNlbmNJbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsK
ICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAoMCwgMCk7CiAKQEAg
LTE4OSwxMyArMTg5LDEzIEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBl
eHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiB9CiAKIC8vIFRoaXMg
ZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBpbml0RGF0YSBzaGFyZWRCdWZmZXIgaXMgYSB2YWxpZCBD
RU5DIGluaXREYXRhLgotc3RhdGljIGJvb2wgaXNDZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBib29sIGlzQ2VuY0luaXREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5z
aWduZWQ+IGtleUlkc01hcCA9IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEo
aW5pdERhdGEpOwogICAgIHJldHVybiAoKGtleUlkc01hcC5maXJzdCkgJiYgKGtleUlkc01hcC5z
ZWNvbmQpKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9t
Q2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitzdGF0aWMgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIga2V5SWRzOwogCkBAIC0yMzAsNyArMjMwLDcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5p
dEQKICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RGF0YSkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJv
bVdlYk1Jbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsK
ICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIApAQCAtMzkwLDcgKzM5MCw3IEBAIGJv
b2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXRE
YXRhKSBjb25zdAorYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSkgY29uc3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUgaW5pdERhdGEgYnVmZmVy
IGFzIGFuIEpTT04gb2JqZWN0IGluIGtleWlkcyBjYXNlLgogICAgIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJrZXlpZHMiKSAmJiBDRE1VdGlsaXRpZXM6
OnBhcnNlSlNPTk9iamVjdChpbml0RGF0YSkpCkBAIC00MDcsNyArNDA3LDcgQEAgYm9vbCBDRE1Q
cml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJp
dmF0ZUNsZWFyS2V5OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIC8vIFZhbGlkYXRlIHRoZSByZXNwb25zZSBidWZm
ZXIgYXMgYW4gSlNPTiBvYmplY3QuCiAgICAgaWYgKCFDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9i
amVjdChyZXNwb25zZSkpCkBAIC00MzMsNyArNDMzLDcgQEAgdm9pZCBDRE1JbnN0YW5jZUNsZWFy
S2V5Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXIKICAgICBjYWxsYmFjayhzdWNjZWVkZWQpOwogfQogCi12b2lkIENETUluc3RhbmNlQ2xlYXJL
ZXk6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxs
YmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2ZXJDZXJ0
aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7CiAgICAgLy8gUmVqZWN0IHNldHRpbmcgYW55IHNlcnZlciBjZXJ0aWZpY2F0
ZS4KICAgICBjYWxsYmFjayhGYWlsZWQpOwpAQCAtNDU1LDcgKzQ1NSw3IEBAIFJlZlB0cjxDRE1J
bnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNlQ2xlYXJLZXk6OmNyZWF0ZVNlc3Npb24oKQogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkoKnRoaXMpKTsK
IH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0
RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgc3RhdGljIHVpbnQzMl90
IHNfc2Vzc2lvbklkVmFsdWUgPSAwOwogICAgICsrc19zZXNzaW9uSWRWYWx1ZTsKQEAgLTQ3Nyw3
ICs0NzcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaQogICAgICAgICB9KTsKIH0KIAotdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExp
Y2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25D
bGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5
cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICNpZiBMT0dfRElTQUJMRUQKICAgICAvLyBXZSBvbmx5
IHVzZSB0aGUgc2VzaW9uIElEIGZvciBkZWJ1ZyBsb2dnaW5nLiBUaGUgdmVyYm9zZSBwcmVwcm9j
ZXNzb3IgY2hlY2tzIGFyZSBiZWNhdXNlCkBAIC01NjgsNyArNTY4LDcgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIExpY2UKICAgICBBU1NFUlQoc2Vzc2lvbklkID09IG1fc2Vzc2lvbklEKTsKIAogICAg
IGF1dG8gZGlzcGF0Y2hDYWxsYmFjayA9Ci0gICAgICAgIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9LCAmY2FsbGJhY2tdKEtleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c1ZlY3Rvciwgc3Rk
OjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3Vj
Y2VzcykgeworICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgJmNhbGxiYWNr
XShLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNWZWN0b3IsIHN0ZDo6b3B0aW9uYWw8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZXNzKSB7
CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKAogICAgICAgICAgICAgICAgIFt3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqd2Vha1RoaXMgfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
a2V5U3RhdHVzVmVjdG9yID0gV1RGTW92ZShrZXlTdGF0dXNWZWN0b3IpLCBtZXNzYWdlID0gV1RG
TW92ZShtZXNzYWdlKSwgc3VjY2Vzc10oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKQEAgLTU4MSw3ICs1ODEsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkNsZWFyS2V5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGlj
ZQogICAgIC8vIENvbnN0cnVjdCB0aGUgS2V5U3RhdHVzVmVjdG9yIG9iamVjdCwgcmVwcmVzZW50
aW5nIHJlbGVhc2VkIGtleXMsIGFuZCB0aGUgbWVzc2FnZSBpbiB0aGUKICAgICAvLyAnbGljZW5z
ZSByZWxlYXNlJyBmb3JtYXQuCiAgICAgS2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c1ZlY3RvciA9
IG1fa2V5U3RvcmUuYWxsS2V5c0FzKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzOjpSZWxl
YXNlZCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZTsKKyAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZTsKICAgICB7CiAgICAgICAgIC8vIENvbnN0cnVj
dCBKU09OIHRoYXQgcmVwcmVzZW50cyB0aGUgJ2xpY2Vuc2UgcmVsZWFzZScgZm9ybWF0LCBjcmVh
dGluZyBhICdraWRzJyBhcnJheQogICAgICAgICAvLyBvZiBiYXNlNjRVUkwtZW5jb2RlZCBrZXkg
SURzIGZvciBhbGwga2V5cyB0aGF0IHdlcmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc2Vzc2lvbi4K
QEAgLTU5NSwxNCArNTk1LDE0IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJl
bW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlCiAgICAgICAgICAg
ICByb290T2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoYXJyYXkpKTsKICAgICAgICAg
fQogCi0gICAgICAgIC8vIENvcHkgdGhlIEpTT04gZGF0YSBpbnRvIGEgU2hhcmVkQnVmZmVyIG9i
amVjdC4KKyAgICAgICAgLy8gQ29weSB0aGUgSlNPTiBkYXRhIGludG8gYSBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyIG9iamVjdC4KICAgICAgICAgU3RyaW5nIG1lc3NhZ2VTdHJpbmcgPSByb290T2Jq
ZWN0LT50b0pTT05TdHJpbmcoKTsKICAgICAgICAgQ1N0cmluZyBtZXNzYWdlQ1N0cmluZyA9IG1l
c3NhZ2VTdHJpbmcudXRmOCgpOwogICAgICAgICBtZXNzYWdlID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUobWVzc2FnZUNTdHJpbmcuZGF0YSgpLCBtZXNzYWdlQ1N0cmluZy5sZW5ndGgoKSk7CiAgICAg
fQogCiAgICAgbV9rZXlTdG9yZS51bnJlZkFsbEtleXMoKTsKLSAgICBkaXNwYXRjaENhbGxiYWNr
KFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgUmVmPFNoYXJlZEJ1ZmZlcj4oKm1lc3NhZ2UpLCBT
dWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CisgICAgZGlzcGF0Y2hDYWxsYmFjayhXVEZNb3ZlKGtl
eVN0YXR1c1ZlY3RvciksIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPigqbWVzc2FnZSksIFN1
Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKIH0KIAogdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVh
cktleTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuaAppbmRleCA5YzA3NDdkYzFiZDhlNjdmM2JhODY0ZDliODExMzM3NjI1YzhhNjc5
Li45ZTI3ZmU5MTJjNGRhMDY3ZmIyNmNhZmJjN2Y2YTY1MWRhNDc1MjhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktl
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5LmgKQEAgLTg2LDggKzg2LDggQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEFu
ZEluaXRpYWxpemUoKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVz
KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7
Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFy
ZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBz
YW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5h
bDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3Ry
aW5nJikgY29uc3QgZmluYWw7CiB9OwogCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICAv
LyBDRE1JbnN0YW5jZQogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkNsZWFyS2V5OyB9CiAg
ICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50
U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRp
ZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAg
ICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29u
c3QgZmluYWw7CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigp
IGZpbmFsOwpAQCAtMTA5LDggKzEwOSw4IEBAIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvbkNsZWFy
S2V5IGZpbmFsIDogcHVibGljIENETUluc3RhbmNlU2Vzc2lvblByb3h5IHsKIHB1YmxpYzoKICAg
ICBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleShDRE1JbnN0YW5jZUNsZWFyS2V5JiBwYXJlbnQp
CiAgICAgICAgIDogQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkocGFyZW50KSB7IH0KLSAgICB2b2lk
IHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5h
bDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2
b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExp
Y2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNh
bGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAg
ICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sm
JikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNl
bnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3Bw
CmluZGV4IDdhYTk0YjRiNGJjMmNiZjkyMmFhZGE1ODg3NTczZDc1ZDdjMGJjNjcuLjdiZjAwODMy
YTQwMmVlYWQ1NzIzY2E0MjhlOWFmYjdjYzQxYTBjNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcApAQCAtMTM5
LDkgKzEzOSw5IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5kQXJyYXkoKQogICAgIG1f
ZW5jb2RlciA8PCBUeXBlOjpFbmRBcnJheTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKIHsKLSAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwg
bV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKaW5kZXggNTgwNTgzYjgzODEwZWRlNWQyYzljNjVh
ODM5M2IzMjZkODdiMjc0Ny4uZWNmNGUwOGM5Yjk5MWFkZTI3M2JkNDRjNjBiYjE1ZmUwMTYzNWIx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBLZXllZEVuY29kZXJHZW5lcmljIGZpbmFsIDogcHVibGljIEtleWVkRW5jb2RlciB7CiBw
dWJsaWM6CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiBwcml2YXRlOgotICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRl
OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwg
c2l6ZV90KSBvdmVycmlkZTsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXks
IGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9LZXllZEVuY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5
ZWRFbmNvZGVyR2xpYi5jcHAKaW5kZXggZTZkNzhkNTI4M2VmOGU1M2M3YmRiMGJiODA0ZTllMjdl
MTBhMTc5My4uNzBkMjRjMTE5M2Y4ZTVjNzBkMWQzOTg3YzVlMDA5OGNiNmMwMGJmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCkBA
IC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckdsaWI6OmVuZEFycmF5KCkKICAg
ICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGdfYXNz
ZXJ0KG1fdmFyaWFudEJ1aWxkZXJTdGFjay5sYXN0KCkgPT0gJm1fdmFyaWFudEJ1aWxkZXIpOwog
ICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZhcmlhbnQgPSBnX3ZhcmlhbnRfYnVpbGRlcl9lbmQoJm1f
dmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRhID0gZ192YXJpYW50X2dl
dF9kYXRhX2FzX2J5dGVzKHZhcmlhbnQuZ2V0KCkpOwotICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0
ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Z19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0
YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5dGVzX2dl
dF9zaXplKGRhdGEuZ2V0KCkpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKaW5kZXggY2Ux
MzY0OTZjNGUxM2VhYzE0OWVhNjE4OTVjNTQxNDBmZmQ1OTZmNy4uZTU2NDJiY2Y2NzBjZTI1OTlm
YzA0ZGY3MjllMmI0YzFmODIxMWYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9LZXllZEVuY29kZXJHbGliLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIH5L
ZXllZEVuY29kZXJHbGliKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQg
ZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZp
bmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckds
aWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNw
cAppbmRleCA3ODg5MTdkYWVmOTY4OWNhN2VlNzQ0ZTFhNDA2MTVkYzQ5YjEzOTA1Li45MzdkMWZi
NmYwYzhkN2I1MWYxOGZmMTU1NjBiM2I5NGE3NGY2MWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAgLTI2LDI4ICsyNiwyOCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdC
eXRlcyogYnl0ZXMpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKEdCeXRlcyogYnl0ZXMpCiB7CiAgICAgQVNTRVJUKGJ5dGVzKTsKICAgICBtX3NpemUgPSBn
X2J5dGVzX2dldF9zaXplKGJ5dGVzKTsKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFT
ZWdtZW50OjpjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+KGJ5dGVzKSkgfSk7CiB9CiAKLVJlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMpCitSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRlcyog
Ynl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJ5dGVzKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihieXRlcykp
OwogfQogCi1HUmVmUHRyPEdCeXRlcz4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5
dGVzKCkgY29uc3QKK0dSZWZQdHI8R0J5dGVzPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygp
IGNvbnN0CiB7CiAgICAgcmVmKCk7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRH
UmVmKGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBbXShncG9pbnRl
ciBkYXRhKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihk
YXRhKS0+ZGVyZWYoKTsKLSAgICB9LCBjb25zdF9jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIq
Pih0aGlzKSkpOworICAgICAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVy
ZWYoKTsKKyAgICB9LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CiAgICAgcmV0
dXJuIGJ5dGVzOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjEsNyArNjEsNyBAQCBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJl
YWRpbmdGaWxlKGNvbgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLmdldCgpLCBzaXplKTsK
KyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNpemUpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwCmluZGV4IGIxMzYzNDRlNjBmNzNmYzEwMDU4ZWJmZTNjYjRlMGI2M2Y0NTgy
ZDcuLjE3YjM1MmY4OTc0MjcyOThmNWRkMGI4ZGZiOTY5MDc4Nzk1ZDMzN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC02OCw3ICs2OCw3IEBAIFJlZjxG
b250PiBGb250OjpjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBP
cmlnaW4gb3JpZ2luLCBGb250CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udChwbGF0Zm9y
bURhdGEsIG9yaWdpbiwgaW50ZXJzdGl0aWFsLCB2aXNpYmlsaXR5LCBvcmllbnRhdGlvbkZhbGxi
YWNrLCBpZGVudGlmaWVyLCBmb250Q2FjaGVGb3JWZXJ0aWNhbERhdGEpKTsKIH0KIAotUmVmPEZv
bnQ+IEZvbnQ6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURh
dGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0Jv
bGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRpY2Fs
RGF0YSkKK1JlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFj
ZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRp
Y0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBGb250Q2FjaGUqIGZvbnRDYWNoZUZvclZlcnRp
Y2FsRGF0YSkKIHsKICAgICBib29sIHdyYXBwaW5nOwogICAgIGF1dG8gY3VzdG9tRm9udERhdGEg
PSBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShmb250RmFjZURhdGEuZ2V0KCksIHsg
fSwgd3JhcHBpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4
IGY5YmFjYTVhMjY0MWUzOGM4Mjk0MDBmNWUzMjU0ZGZlZDQ4ZGM4YjAuLmRjMWZiMTZlYTBiMTk2
YzVkMTNiZDQxMTRlNTBjY2RjZDliMzdjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmgKQEAgLTU5LDcgKzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
Rm9udENhY2hlOwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgR2x5cGhQYWdlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0
IEdseXBoRGF0YTsKIApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZpc2liaWxp
dHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRp
b25GYWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0aWNhbERh
dGEsIEludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sCiAgICAgICAgIFZpc2liaWxpdHkg
PSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25G
YWxsYmFjazo6Tm8sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9
IHN0ZDo6bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVh
dGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmln
aW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRh
bGljLCBGb250Q2FjaGUqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxGb250PiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9y
aWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJ
dGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0
Zm9ybURhdGEuaAppbmRleCBlMjM4NGI5ZWU0ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkz
Li5mYmJjY2M0MzY4NDQ3NDkwODNjZTg5MWYzNjNmNmNjNDBmMjk3NDUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC0y
MjMsMTMgKzIyMywxMyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7
Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJs
ZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5
cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKIAogICAgIFN0cmlu
ZyBkZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgc3RydWN0IENyZWF0aW9uRGF0YSB7Ci0gICAg
ICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CisgICAgICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgU3RyaW5nIGl0ZW1JbkNvbGxl
Y3Rpb247CiAjaWYgUExBVEZPUk0oV0lOKQogICAgICAgICBSZWY8Rm9udE1lbW9yeVJlc291cmNl
PiBtX2ZvbnRSZXNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmNwcAppbmRleCA0YTg1M2ViNjQ5NTNkNGFlNDgzNGY4N2M1NDg3YWNkMzY0YzU3ZDgxLi5lMzJh
MzZjNjA3NjE5MjE2OGM2YTM3OTMxOGY3OGFlMTc4OWM0ODJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBJbWFn
ZTo6aXNQb3N0U2NyaXB0UmVzb3VyY2UoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJM
JiB1cmwpCiB9CiAKIAotRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2U6OnNldERhdGEoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK0VuY29kZWREYXRhU3Rh
dHVzIEltYWdlOjpzZXREYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIG1fZW5jb2RlZEltYWdlRGF0YSA9IFdURk1v
dmUoZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4
IDZhMDgxNjk1N2FhOTNjNDExYTU2Y2Q0YzJiYzIwZGQ2ZDkwNDRkZWMuLjY1NWRmZTczY2ZmNmFk
MWQwNGY0OGJjMjAxOWViYjgwNDE3ZDYxMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuaApAQCAtNzAsNyArNzAsNyBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBj
bGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0
cnVjdCBMZW5ndGg7CiAKIC8vIFRoaXMgY2xhc3MgZ2V0cyBub3RpZmllZCB3aGVuIGFuIGltYWdl
IGNyZWF0ZXMgb3IgZGVzdHJveXMgZGVjb2RlZCBmcmFtZXMgYW5kIHdoZW4gaXQgYWR2YW5jZXMg
YW5pbWF0aW9uIGZyYW1lcy4KQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3QgeyByZXR1cm4gc3RkOjpu
dWxsb3B0OyB9CiAgICAgdmlydHVhbCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29u
c3QgeyByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlOyB9CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCBFbmNvZGVkRGF0YVN0YXR1cyBzZXREYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYg
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIFdFQkNPUkVfRVhQT1JUIEVuY29kZWRE
YXRhU3RhdHVzIHNldERhdGEoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZpcnR1YWwgRW5jb2RlZERhdGFTdGF0dXMgZGF0
YUNoYW5nZWQoYm9vbCAvKmFsbERhdGFSZWNlaXZlZCovKSB7IHJldHVybiBFbmNvZGVkRGF0YVN0
YXR1czo6VW5rbm93bjsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgdXRpKCkgY29uc3QgeyByZXR1
cm4gU3RyaW5nKCk7IH0gLy8gbnVsbCBzdHJpbmcgaWYgdW5rbm93bgpAQCAtMTMzLDggKzEzMyw4
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBk
ZXN0cm95QWxsID0gdHJ1ZSkgPSAwOwogCi0gICAgU2hhcmVkQnVmZmVyKiBkYXRhKCkgeyByZXR1
cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CisgICAgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgpIHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5n
ZXQoKTsgfQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgRGVzdGlu
YXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKTsKIApAQCAtMjA5LDcgKzIwOSw3IEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIENvbG9yKCk7IH0KIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X2VuY29kZWRJbWFnZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1f
ZW5jb2RlZEltYWdlRGF0YTsKICAgICBJbWFnZU9ic2VydmVyKiBtX2ltYWdlT2JzZXJ2ZXI7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPiBtX2FuaW1hdGlvblN0YXJ0VGltZXI7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3Rv
cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3Jl
LmgKaW5kZXggNGRkYjZkZjgzZWNiOGI5Yjc5NTdmNDY2NGUxODRmMDA4MWU4MTAxMS4uZGUzM2Yx
YWY0MTJkYzA4YjJiOTYxYTE5NDk0NWM5Y2M5MGFhNjYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCkBAIC02Niw3ICs2
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBidWZm
ZXIuZ3JvdyhidWZmZXJTaXplKTsKLSAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9waXhlbHMgPSBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVy
KSk7CiAgICAgICAgIG1fcGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNv
bnN0X2Nhc3Q8dWludDhfdCo+KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICAgICAgbV9zaXplID0g
c2l6ZTsKICAgICAgICAgbV9mcmFtZVJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSk7
CkBAIC0yMDYsNyArMjA2LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9z
aXplLmlzRW1wdHkoKSAmJiAhaXNPdmVyU2l6ZShtX3NpemUpKTsKICAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGJ1ZmZlciB7IG90aGVyLm1fcGl4ZWxzLT5kYXRhKCksIG90aGVyLm1fcGl4ZWxzLT5z
aXplKCkgfTsKLSAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpj
cmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9waXhlbHMgPSBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAg
IG1fcGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8dWlu
dDhfdCo+KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICB9CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCBw
cml2YXRlOgogICAgICAgICByZXR1cm4gUGFja2VkQ29sb3I6OkFSR0IgeyByZXN1bHQgfS52YWx1
ZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9waXhl
bHM7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3Bp
eGVsczsKICAgICB1aW50MzJfdCogbV9waXhlbHNQdHIgeyBudWxscHRyIH07CiAgICAgSW50U2l6
ZSBtX3NpemU7CiAgICAgSW50UmVjdCBtX2ZyYW1lUmVjdDsgLy8gVGhpcyB3aWxsIGFsd2F5cyBq
dXN0IGJlIHRoZSBlbnRpcmUgYnVmZmVyIGV4Y2VwdCBmb3IgR0lGIGFuZCBQTkcgZnJhbWVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcApp
bmRleCAwODY5ZTk5YTAwODg2ZjdjZDEyMTg2ZmUzMTYxZGUwNDdmYTUxMzYxLi43YzU0OTQ3ZjRk
ODE0MDg1NTljYzQ1YzRhYzQ5YTE5YjlmYzg2Zjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9p
ZCBJbWFnZURlY29kZXI6OmNsZWFyRmFjdG9yaWVzKCkKIH0KICNlbmRpZgogCi1SZWZQdHI8SW1h
Z2VEZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURl
Y29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBV
TlVTRURfUEFSQU0obWltZVR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRGVjb2Rlci5oCmluZGV4IGExYTA4YWRjMTc1ZDQ0YmFhNDQyZTQ0YTk0YWE5
NjdhMDRmNWY2MDcuLjZhOGZmY2I2MGZjMTE1NmViODQ4NzZkZWZiMDdjYmMwYjExOTg0OTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCkBA
IC0zNywxMiArMzcsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbWFnZURlY29k
ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VEZWNvZGVyPiB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURl
Y29kZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8
SW1hZ2VEZWNvZGVyPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAg
ICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCiAgICAgZW51bSBjbGFzcyBN
ZWRpYVR5cGUgewpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogICAgIHVzaW5nIFN1cHBvcnRzTWVkaWFUeXBlRnVuYyA9IEZ1bmN0aW9uPGJvb2woTWVk
aWFUeXBlKT47CiAgICAgdXNpbmcgQ2FuRGVjb2RlVHlwZUZ1bmMgPSBGdW5jdGlvbjxib29sKGNv
bnN0IFN0cmluZyYpPjsKLSAgICB1c2luZyBDcmVhdGVJbWFnZURlY29kZXJGdW5jID0gRnVuY3Rp
b248UmVmUHRyPEltYWdlRGVjb2Rlcj4oU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKT47CisgICAgdXNpbmcgQ3JlYXRl
SW1hZ2VEZWNvZGVyRnVuYyA9IEZ1bmN0aW9uPFJlZlB0cjxJbWFnZURlY29kZXI+KEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pPjsKIAogICAgIHN0cnVjdCBJbWFnZURlY29kZXJGYWN0b3J5IHsKICAg
ICAgICAgU3VwcG9ydHNNZWRpYVR5cGVGdW5jIHN1cHBvcnRzTWVkaWFUeXBlOwpAQCAtMTI5LDcg
KzEyOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNv
ZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEV4cGVj
dGVkQ29udGVudFNpemUobG9uZyBsb25nKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgPSAwOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXgg
ZDgxYzQ4MDE5Mjg0NmRkN2UzMjFjMmRmYmZiZjFlMGMyMGRhYTY3MS4uMzA3NzQzMzE1YTQxZWNh
MWM5YjJiYzc3M2QwNzllZTVkNDNiYWY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtNzIsNyArNzIsNyBAQCBJbWFnZVNvdXJj
ZTo6fkltYWdlU291cmNlKCkKICAgICBBU1NFUlQoJm1fcnVuTG9vcCA9PSAmUnVuTG9vcDo6Y3Vy
cmVudCgpKTsKIH0KIAotYm9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShT
aGFyZWRCdWZmZXIqIGRhdGEpCitib29sIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZhaWxh
YmxlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKCFkYXRhIHx8IGlz
RGVjb2RlckF2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk2LDcgKzk2LDcg
QEAgYm9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShTaGFyZWRCdWZmZXIq
IGRhdGEpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEo
U2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VTb3Vy
Y2U6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiB7CiAgICAgaWYgKCFkYXRhIHx8ICFlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKGRhdGEp
KQogICAgICAgICByZXR1cm47CkBAIC0xMDQsMTMgKzEwNCwxMyBAQCB2b2lkIEltYWdlU291cmNl
OjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAg
bV9kZWNvZGVyLT5zZXREYXRhKCpkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCi12b2lkIElt
YWdlU291cmNlOjpyZXNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBJbWFnZVNvdXJj
ZTo6cmVzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgbV9kZWNv
ZGVyID0gbnVsbHB0cjsKICAgICBzZXREYXRhKGRhdGEsIGlzQWxsRGF0YVJlY2VpdmVkKCkpOwog
fQogCi1FbmNvZGVkRGF0YVN0YXR1cyBJbWFnZVNvdXJjZTo6ZGF0YUNoYW5nZWQoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK0VuY29kZWREYXRhU3RhdHVzIEltYWdl
U291cmNlOjpkYXRhQ2hhbmdlZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKIHsKICAgICBzZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiAg
ICAgY2xlYXJNZXRhZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmgKaW5kZXggOGFmNTA4MGEwMGE5OTE2MDgwZjFmMGIyNzcwNzNjMmE4NTM0
NTI1OC4uODE0ZjBlMTJlYmFhNDhmODZhY2I1MjE5NzNjMzFkNWQzODJmNmZiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0zOSw3ICsz
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJpdG1hcEltYWdlOwogY2xhc3MgR3Jh
cGhpY3NDb250ZXh0OwogY2xhc3MgSW1hZ2VEZWNvZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSW1hZ2VTb3VyY2UgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VTb3VyY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8SW1hZ2VTb3VyY2U+IHsKICAgICBmcmllbmQgY2xhc3MgQml0bWFwSW1hZ2U7CkBAIC01Niw5
ICs1Niw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VTb3Vy
Y2UoV1RGTW92ZShuYXRpdmVJbWFnZSkpKTsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEoU2hh
cmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgdm9pZCByZXNldERh
dGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKLSAgICBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdl
ZChTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2b2lkIHNl
dERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
OworICAgIHZvaWQgcmVzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpOworICAg
IEVuY29kZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2VkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCk7
CiAKICAgICB1bnNpZ25lZCBkZWNvZGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlZFNp
emU7IH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CiAgICAgVCBmaXJzdEZyYW1lTWV0YWRhdGFDYWNoZUlmTmVlZGVkKFQmIGNhY2hlZFZhbHVl
LCBNZXRhZGF0YVR5cGUsIFQgKEltYWdlRnJhbWU6OipmdW5jdG9yKSgpIGNvbnN0LCBJbWFnZUZy
YW1lOjpDYWNoaW5nLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiA9IHsg
fSk7CiAKLSAgICBib29sIGVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRh
KTsKKyAgICBib29sIGVuc3VyZURlY29kZXJBdmFpbGFibGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogZGF0YSk7CiAgICAgYm9vbCBpc0RlY29kZXJBdmFpbGFibGUoKSBjb25zdCB7IHJldHVybiBt
X2RlY29kZXI7IH0KICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShzaXplX3QgZnJhbWVDb3Vu
dCwgc2l6ZV90IGV4Y2x1ZGVGcmFtZSk7CiAgICAgdm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQobG9u
ZyBsb25nIGRlY29kZWRTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01vZGVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01v
ZGVsLmNwcAppbmRleCA1YWRlN2VmNjllMjlhNzdmMmI4NDA5MjllNjRiZTBjNDRlNTE2NDM5Li41
NzdiZDUwOGE1YzQwOWY0YmU5ZTRjZjIwMmI4MWU2MWU0NWI0NGFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorUmVmPE1v
ZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVU
eXBlLCBVUkwgdXJsKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vZGVsKFdURk1vdmUo
ZGF0YSksIFdURk1vdmUobWltZVR5cGUpLCBXVEZNb3ZlKHVybCkpKTsKIH0KIAotTW9kZWw6Ok1v
ZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwg
VVJMIHVybCkKK01vZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBt
aW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9t
aW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAgICAsIG1fdXJsKFdURk1vdmUodXJsKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmluZGV4IDkxNTYwYWU4OGZhNjRj
MmEwYzEwMDE0MTRmMzI0MWNlMDA1NmExZjQuLmU2YmRlMTY2Zjk0NGNkZTdkYjMyOGMyOTc2ZWM2
ODJhZGI2ZDEwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaApA
QCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwgZmlu
YWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiwgU3RyaW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNy
ZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgfk1vZGVsKCk7CiAKLSAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25z
dCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9taW1lVHlwZTsgfQogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1
cm4gbV91cmw7IH0KICAgICAKQEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+IGRlY29kZShEZWNvZGVyJik7CiAK
IHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYsIFN0cmluZywgVVJMKTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiYm
LCBTdHJpbmcsIFVSTCk7CiAKLSAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRh
OworICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsK
ICAgICBVUkwgbV91cmw7CiB9OwpAQCAtOTMsNyArOTMsNyBAQCBSZWZQdHI8TW9kZWw+IE1vZGVs
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgq
dXJsKSk7CisgICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CiB9CiAKIFdF
QkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBjb25zdCBNb2RlbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRleCA3NDU5YzU4
NThkMjQ4N2VmMmM1ZmQzNzE3Mzk4NmIzMzczNGVjMjhhLi44ODY5MWRjMjU2ZDZkZDZjNDVmNDZl
MDE1NDk2NzQyNDVhYTM1MzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaApAQCAtNTEs
OCArNTEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVz
dCkpOyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQg
bG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRh
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgeyBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxk
IGJlIHJlbW92ZWQgb25jZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB1c2VzIFNoYXJlZEJ1ZmZl
ci4KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KKyAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIENhY2hl
ZFJhd1Jlc291cmNlQ2xpZW50IHVzZXMgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KICAgICB2aXJ0
dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcGxhdGZvcm0sIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgZGF0YVJlY2VpdmVkKHBsYXRmb3JtLCBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpKTsgfQogICAgIHZpcnR1YWwgdm9pZCBh
Y2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVz
b3VyY2VFcnJvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKaW5k
ZXggNTQ5OWYzN2E3ZjM2NDZiZDVmMzk1YTQ4YjA5ZDk0MTFkNGM5YjY2NC4uZDNlMWI1ODA0ZTg1
YTk5MTFjZjIwZmNlZDM0YmYyNTVhMzE0NDM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTEzMTgs
NyArMTMxOCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZVNhbXBsZShS
ZWY8TWVkaWFTYW1wbGU+JiYgb3JpZ2luYWxTYW1wbGUpCiAgICAgdXBkYXRlSGlnaGVzdFByZXNl
bnRhdGlvblRpbWVzdGFtcCgpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVu
ZChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6
YXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBhcHBl
bmQoYnVmZmVyLT5leHRyYWN0RGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAppbmRleCBlZjg2YTQ3MzY5
MzcxYzgzZTg4M2IyOWJiYjZiOWFiOTZlY2E1ZjFkLi42YjdkOTVlNTJiOWRmMGM4MWFmM2JlMWQ2
ZDlmM2M4ZWQzOTU0MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCkBAIC00OSw3ICs0OSw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIGNsYXNzIFRpbWVSYW5nZXM7CiAKIGVudW0gY2xhc3MgU291cmNlQnVmZmVy
QXBwZW5kTW9kZSA6IHVpbnQ4X3QgewpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB+U291cmNlQnVmZmVyUHJpdmF0ZSgpOwogCiAgICAgdmlydHVh
bCB2b2lkIHNldEFjdGl2ZShib29sKSA9IDA7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIGFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgYXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB2aXJ0
dWFsIHZvaWQgYWJvcnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0UGFyc2VyU3RhdGUo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1h
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5j
cHAKaW5kZXggYTBlNzNiM2YzZWJjYjNjNzgwZmUzNTFlOWQ2YTgwYjZmYjkwNTViNC4uYjM3ZWJm
YzU2MjA0OGZlNmQ3OTQxZDJlNWNjMWJjYTFkYzE1NzFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcApAQCAtMzcsNyArMzcs
NyBAQCBzdGF0aWMgY29uc3QgdWludDMyX3Qga1dvZmYyU2lnbmF0dXJlID0gMHg3NzRmNDYzMjsg
Ly8gIndPRjIiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgcmVhZFVJbnQz
MihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJf
dCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBz
aXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0
LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZz
ZXQgPCBzaXplb2YodmFsdWUpKQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgYm9vbCByZWFkVUlu
dDMyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQz
Ml90JgogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCByZWFkVUludDE2KENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1
ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYg
b2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNl
dCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNp
emVvZih2YWx1ZSkpCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBib29sIHdyaXRlVUludDE2KFZl
Y3Rvcjx1aW50OF90PiYgdmVjdG9yLCB1aW50MTZfdCB2YWx1ZSkKIAogc3RhdGljIGNvbnN0IHVp
bnQzMl90IHdvZmZTaWduYXR1cmUgPSAweDc3NGY0NjQ2OyAvKiAnd09GRicgKi8KIAotYm9vbCBp
c1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBpc1dPRkYoU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgc2l6ZV90IG9mZnNldCA9IDA7CiAgICAgdWludDMyX3Qg
c2lnbmF0dXJlOwpAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiB9OwogI2VuZGlmCiAKLWJv
b2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9y
PHVpbnQ4X3Q+JiBzZm50KQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdv
ZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKIHsKICAgICBBU1NFUlRfQVJHKHNmbnQsIHNmbnQu
aXNFbXB0eSgpKTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnQo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogICAg
IHJldHVybiBzZm50LnNpemUoKSA9PSB0b3RhbFNmbnRTaXplOwogfQogCi1ib29sIGNvbnZlcnRX
T0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBVTlVTRURfUEFSQU0oYnVm
ZmVyKTsKQEAgLTI5NCw3ICsyOTQsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3Nh
cnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAKICAgICBWZWN0b3I8
dWludDhfdD4gY29udmVydGVkRm9udDsKICAgICBpZiAoY29udmVydFdPRkZUb1NmbnQoKmJ1ZmZl
ciwgY29udmVydGVkRm9udCkpCi0gICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsKKyAgICAgICAgYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CiAgICAgZWxzZQogICAg
ICAgICBidWZmZXIgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAppbmRleCA3OGFjNGE3YWZmZjRkNGJlZTlmZDAyY2Fi
ZTdhOThmMmZlN2RkZTgyLi4zZDU3MDEwN2YyOGY4NTQ0NzQxZTM0OTVjMDE2MDdlNGRlOTAyZDVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZv
cm1hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9y
bWF0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIC8vIFJldHVy
bnMgd2hldGhlciB0aGUgYnVmZmVyIGlzIGEgV09GRiBmaWxlLgotYm9vbCBpc1dPRkYoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYpOworYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJik7CiAKIC8vIFJl
dHVybnMgZmFsc2UgaWYgdGhlIFdPRkYgZmlsZSB3b2ZmIGlzIGludmFsaWQgb3IgY291bGQgbm90
IGJlIGNvbnZlcnRlZCB0byBzZm50IChmb3IgZXhhbXBsZSwKIC8vIGlmIGNvbnZlcnNpb24gcmFu
IG91dCBvZiBtZW1vcnkpLiBPdGhlcndpc2UgcmV0dXJucyB0cnVlIGFuZCB3cml0ZXMgdGhlIHNm
bnQgcGF5bG9hZCBpbnRvIHNmbnQuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7Citib29sIGNvbnZlcnRX
T0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKIAog
Ly8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZSBhbmQgdGhlIGN1cnJlbnQgcGxh
dGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0IGZvciBXT0ZGCiAvLyBmb250cywgY29udmVydCBp
dCB0byBzZm50LiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGJ1ZmZlciB3YXMgY29udmVydGVk
LiBJZiBjb252ZXJzaW9uIGZhaWxzLAogLy8gdGhlIGJ1ZmZlciB3aWxsIGJlIHNldCB0byBudWxs
cHRyLgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0
cjxTaGFyZWRCdWZmZXI+Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggZDdjMDEzZDU0ZTNkZWQwNzg1
NDkwMjhkNTFkNmUwMjhjOTc1MDdjNi4uOGIwNGY5YmU5NmMzNmUwYTI2MjE4MGEyNWVhMzc0NTk2
MmIzZDdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCkBA
IC04Niw3ICs4Niw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIENETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6c2tkTmFtZSgpCiAgICAgcmV0dXJuIHNrZDsKIH0KIAotc3RhdGljIFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorc3RhdGljIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5m
RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSlNP
TiBvZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIK
ICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKCFz
aW5mQXJyYXkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1
ZmZlcj4+IHNpbmZzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHNp
bmZzOwogICAgIHNpbmZzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2luZkFycmF5LT5sZW5ndGgo
KSk7CiAKICAgICBmb3IgKGF1dG8mIHZhbHVlIDogKnNpbmZBcnJheSkgewpAQCAtMTI0LDcgKzEy
NCw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIH0KIAogdXNpbmcgU2NoZW1lQW5kS2V5UmVzdWx0
ID0gVmVjdG9yPHN0ZDo6cGFpcjxGb3VyQ0MsIFZlY3Rvcjx1aW50OF90Pj4+Owotc3RhdGljIFNj
aGVtZUFuZEtleVJlc3VsdCBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBTY2hlbWVBbmRLZXlSZXN1bHQgZXh0cmFjdFNjaGVt
ZUFuZEtleUlkRnJvbVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIGF1dG8gYnVmZmVycyA9IGV4dHJhY3RTaW5mRGF0YShidWZmZXIpOwogICAgIGlmICgh
YnVmZmVycy5zaXplKCkpCkBAIC0xNzAsOSArMTcwLDkgQEAgc3RhdGljIFNjaGVtZUFuZEtleVJl
c3VsdCBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1Np
bmYoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4
dHJhY3RLZXlJRHNTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
LSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAgYXV0byByZXN1bHRzID0gZXh0cmFj
dFNjaGVtZUFuZEtleUlkRnJvbVNpbmYoYnVmZmVyKTsKIAogICAgIGZvciAoYXV0byYgcmVzdWx0
IDogcmVzdWx0cykgewpAQCAtMTgzLDcgKzE4Myw3IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJl
ZjxTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5
CiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3Ry
ZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIC8vIENvbW1vbiBTSU5GIEJveCBGb3JtYXQKICAgICBVTlVTRURfUEFSQU0oYnVm
ZmVyKTsKQEAgLTE5MSwxNyArMTkxLDE3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlCiAgICAg
cmV0dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVTa2QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3Ry
ZWFtaW5nOjpzYW5pdGl6ZVNrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAg
ICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNo
YXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNT
a2QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4
dHJhY3RLZXlJRHNTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIC8vIEluIHRoZSAnc2tkJyBzY2hlbWUsIHRoZSBpbml0IGRhdGEgaXMgdGhlIGtleSBJRC4K
LSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAga2V5SURzLmFwcGVuZChidWZmZXIu
Y29weSgpKTsKICAgICByZXR1cm4ga2V5SURzOwogfQpAQCAtMzkzLDcgKzM5Myw3IEBAIGJvb2wg
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAorYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1p
bmc6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAgICBpZiAoIXZh
bGlkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTQyMyw3ICs0MjMsNyBAQCBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQ
bGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9u
c2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQ
bGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIHJldHVybiByZXNwb25zZS5jb3B5KCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Q0RNRmFpclBsYXlTdHJlYW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCmluZGV4IGJjOTNmNmY2YTdiZGQw
MWVmYmY1NWI2MmJkYjZhNGU2NmVmOTEyYjMuLjMxN2JiOGQ1N2U4NmMwNjIxNGUwYjQwNTlkZGY0
Zjg4MDdjNzRjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCkBA
IC03MSwxNyArNzEsMTcgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBv
dmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZm
ZXImKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJl
c3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBv
dmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29u
c3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmlu
ZyYgc2luZk5hbWUoKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJl
ZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2luZihjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBz
dGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CisgICAgc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNp
bmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgc3RhdGljIGNvbnN0IEF0
b21TdHJpbmcmIHNrZE5hbWUoKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2tkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwot
ICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNrZChjb25zdCBTaGFyZWRC
dWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZVNrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBzdGF0aWMgY29uc3Qg
VmVjdG9yPEZvdXJDQz4mIHZhbGlkRmFpclBsYXlTdHJlYW1pbmdTY2hlbWVzKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQy5oCmluZGV4IDE1OWI5MGNkYjQ4ZjdmZTQ0YmI0OWJlMmVjMWMxYzJmNDMy
ODY0MDAuLjU2YjU4YzI1YTI4NzA5ZmIzODIyMTgzOWU1NWJhZTQ1ZWQ5M2NmNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakMuaApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgSW1wbGVtZW50
YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxl
bWVudGF0aW9uVHlwZTo6RmFpclBsYXlTdHJlYW1pbmc7IH0KIAogICAgIHZvaWQgaW5pdGlhbGl6
ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxv
d0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2Fs
bGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVk
QnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBm
aW5hbDsKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmlu
YWw7CiAgICAgdm9pZCBzZXRDbGllbnQoV2Vha1B0cjxDRE1JbnN0YW5jZUNsaWVudD4mJikgZmlu
YWw7CkBAIC05NCwxMCArOTQsMTAgQEAgcHVibGljOgogCiAgICAgTlNVUkwgKnN0b3JhZ2VVUkwo
KSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2VVUkwuZ2V0KCk7IH0KICAgICBib29sIHBlcnNpc3Rl
bnRTdGF0ZUFsbG93ZWQoKSBjb25zdCB7IHJldHVybiBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQ7
IH0KLSAgICBTaGFyZWRCdWZmZXIqIHNlcnZlckNlcnRpZmljYXRlKCkgY29uc3QgeyByZXR1cm4g
bV9zZXJ2ZXJDZXJ0aWZpY2F0ZS5nZXQoKTsgfQorICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IHNlcnZlckNlcnRpZmljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZS5n
ZXQoKTsgfQogICAgIEFWQ29udGVudEtleVNlc3Npb24qIGNvbnRlbnRLZXlTZXNzaW9uKCk7CiAK
LSAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gdGFrZVVuZXhwZWN0ZWRLZXlSZXF1
ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
U2hhcmVkQnVmZmVyJiBpbml0RGF0YSk7CisgICAgUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVl
c3Q+IHRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRh
KTsKIAogICAgIC8vIEFWQ29udGVudEtleVNlc3Npb25EZWxlZ2F0ZUNsaWVudAogICAgIHZvaWQg
ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCopIGZpbmFsOwpAQCAtMTEyLDcg
KzExMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2ll
bnRFeHRlcm5hbFByb3RlY3Rpb25DaGFuZ2VkKGJvb2wpIGZpbmFsOwogICAgIHZvaWQgZXh0ZXJu
YWxQcm90ZWN0aW9uU3RhdHVzRGlkQ2hhbmdlRm9yQ29udGVudEtleVJlcXVlc3QoQVZDb250ZW50
S2V5UmVxdWVzdCopIGZpbmFsOwogCi0gICAgdXNpbmcgS2V5cyA9IFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj47CisgICAgdXNpbmcgS2V5cyA9IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+OwogICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyog
c2Vzc2lvbkZvcktleUlEcyhjb25zdCBLZXlzJikgY29uc3Q7CiAgICAgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yR3JvdXAoQVZDb250ZW50S2V5
UmVwb3J0R3JvdXAqKSBjb25zdDsKICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMqIHNlc3Npb25Gb3JSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBjb25z
dDsKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8Q0RNSW5zdGFuY2VD
bGllbnQ+IG1fY2xpZW50OwogICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlTZXNzaW9uPiBtX3Nl
c3Npb247CiAgICAgUmV0YWluUHRyPFdlYkNvcmVGUFNDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRl
PiBtX2RlbGVnYXRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fc2VydmVyQ2VydGlmaWNh
dGU7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fc2VydmVyQ2VydGlmaWNh
dGU7CiAgICAgYm9vbCBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQgeyB0cnVlIH07CiAgICAgUmV0
YWluUHRyPE5TVVJMPiBtX3N0b3JhZ2VVUkw7CiAgICAgVmVjdG9yPFdlYWtQdHI8Q0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPj4gbV9zZXNzaW9uczsKQEAgLTE1MCw4
ICsxNTAsOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbgot
ICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNr
JiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNl
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFs
OworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExp
Y2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNl
VXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlw
ZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25D
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmlu
ZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCA2MmJkMTM0NzljNmMzMzYyY2JlNzI1MWJmNjllYThk
MWY4MTBiZTI1Li5iYTUwNjFlYmI1YzVmYmUwNzRkM2EyOWRlYTRmOTE4ZmMyNjIxY2Q2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMjE3LDcgKzIxNyw3IEBAIEFMTE9XX05FV19BUElf
V0lUSE9VVF9HVUFSRFNfRU5ECiAgICAgcmV0dXJuIEF0b21TdHJpbmcobnNJbml0VHlwZSk7CiB9
CiAKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBpbml0aWFsaXphdGlvbkRhdGFGb3JSZXF1ZXN0
KEFWQ29udGVudEtleVJlcXVlc3QqIHJlcXVlc3QpCitzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGluaXRpYWxpemF0aW9uRGF0YUZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVz
dCogcmVxdWVzdCkKIHsKICAgICBpZiAoIXJlcXVlc3QpCiAgICAgICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOwpAQCAtMjY1LDcgKzI2NSw3IEBAIEFWQ29udGVudEtleVNlc3Npb24q
IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjb250ZW50S2V5U2Vzc2lvbigp
CiAgICAgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsKIH0KIAotUmV0YWluUHRyPEFWQ29udGVudEtl
eVJlcXVlc3Q+IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp0YWtlVW5leHBl
Y3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorUmV0YWluUHRyPEFWQ29udGVudEtl
eVJlcXVlc3Q+IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp0YWtlVW5leHBl
Y3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBmb3Ig
KGF1dG8gcmVxdWVzdEl0ZXIgPSBtX3VuZXhwZWN0ZWRLZXlSZXF1ZXN0cy5iZWdpbigpOyByZXF1
ZXN0SXRlciAhPSBtX3VuZXhwZWN0ZWRLZXlSZXF1ZXN0cy5lbmQoKTsgKytyZXF1ZXN0SXRlcikg
ewogICAgICAgICBhdXRvJiByZXF1ZXN0ID0gKnJlcXVlc3RJdGVyOwpAQCAtMzE2LDcgKzMxNiw3
IEBAIHByaXZhdGU6CiAgICAgUmVzcG9uc2VNYXAgbV9yZXNwb25zZXM7CiB9OwogCi1zdGF0aWMg
UmVmUHRyPEpTT046OlZhbHVlPiBwYXJzZUpTT05WYWx1ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK3N0YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBGYWlsIG9uIGxhcmdlIGJ1
ZmZlcnMgd2hvc2Ugc2l6ZSBkb2Vzbid0IGZpdCBpbnRvIGEgMzItYml0IHVuc2lnbmVkIGludGVn
ZXIuCiAgICAgc2l6ZV90IHNpemUgPSBidWZmZXIuc2l6ZSgpOwpAQCAtMzgwLDcgKzM4MCw3IEBA
IHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmluaXRpYWxpemVXaXRo
Q29uZmlndXJhdGlvbihjb25zdCBDRE1LCiAgICAgY2FsbGJhY2soaW5pdGlhbGl6ZSgpKTsKIH0K
IAotdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0Nh
bGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBz
ZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgREVC
VUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogICAgIG1fc2VydmVyQ2VydGlmaWNh
dGUgPSBXVEZNb3ZlKHNlcnZlckNlcnRpZmljYXRlKTsKQEAgLTU4NSw4ICs1ODUsOCBAQCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIENETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0
byBzZXNzaW9uS2V5cyA9IHNlc3Npb25JbnRlcmZhY2UtPmtleUlEcygpOwotICAgICAgICBpZiAo
YW55T2Yoc2Vzc2lvbktleXMsIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgc2Vzc2lvbktl
eSkgewotICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJl
ZjxTaGFyZWRCdWZmZXI+JiBrZXlJRCkgeworICAgICAgICBpZiAoYW55T2Yoc2Vzc2lvbktleXMs
IFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHNlc3Npb25LZXkpIHsKKyAg
ICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mIGtleUlEKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGtleUlE
LmdldCgpID09IHNlc3Npb25LZXkuZ2V0KCk7CiAgICAgICAgICAgICB9KSAhPSBub3RGb3VuZDsK
ICAgICAgICAgfSkpCkBAIC02NzMsNyArNjczLDcgQEAgS2V5cyBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleUlEcygpCiAgICAgcmV0dXJuIGtleUlEczsKIH0K
IAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYm
IGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRh
LCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWlzTGljZW5zZVR5cGVT
dXBwb3J0ZWQobGljZW5zZVR5cGUpKSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShM
T0dJREVOVElGSUVSLCAiIGZhbHNlLCBsaWNlbnNlVHlwZSBcIiIsIGxpY2Vuc2VUeXBlLCAiXCIg
bm90IHN1cHBvcnRlZCIpOwpAQCAtNzM2LDcgKzczNiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBs
aWNlCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBpc0VxdWFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3N0YXRpYyBib29sIGlzRXF1YWwoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBh
dXRvIGFycmF5QnVmZmVyID0gZGF0YS50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGlmICgh
YXJyYXlCdWZmZXIpCkBAIC03NTQsNyArNzU0LDcgQEAgc3RhdGljIGJvb2wgaXNFcXVhbChjb25z
dCBTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgcmV0dXJuIHN0
cmluZ09yRXhjZXB0aW9uLnJldHVyblZhbHVlKCkgPT0gdmFsdWU7CiB9CiAKLXZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwg
TGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBM
aWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBM
aWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZXhwaXJlZFNl
c3Npb25zLmlzRW1wdHkoKSAmJiBpc0VxdWFsKHJlc3BvbnNlRGF0YSwgImFja25vd2xlZGdlZCJf
cykpIHsKICAgICAgICAgYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0
aWZpY2F0ZSgpOwpAQCAtODU2LDcgKzg1Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAg
ICAgICAgICAgICBhdXRvIGtleUlEID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqa2V5
SURWZWN0b3IpKTsKICAgICAgICAgICAgIGF1dG8gZm91bmRJbmRleCA9IG1fY3VycmVudFJlcXVl
c3QudmFsdWUoKS5yZXF1ZXN0cy5maW5kTWF0Y2hpbmcoWyZdIChhdXRvJiByZXF1ZXN0KSB7CiAg
ICAgICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0
KCkpOwotICAgICAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25z
dCBSZWY8U2hhcmVkQnVmZmVyPiYgaWQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4ga2V5SURz
LmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBpZCkg
ewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWQuZ2V0KCkgPT0ga2V5SUQuZ2V0KCk7CiAg
ICAgICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQ7CiAgICAgICAgICAgICB9KTsKQEAgLTExNTUs
NyArMTE1NSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgaWYgKGF1dG8qIGNlcnRp
ZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKICAgICAgICAgYXBwSWRl
bnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsK
IAotICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4sIFJldGFpblB0cjxOU0RhdGE+Pj47CisgICAgdXNpbmcgUmVxdWVzdHNEYXRhID0g
VmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIFJldGFpblB0
cjxOU0RhdGE+Pj47CiAgICAgc3RydWN0IENhbGxiYWNrQWdncmVnYXRvciBmaW5hbCA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3I+IHsKICAgICAgICAgdXNp
bmcgQ2FsbGJhY2tGdW5jdGlvbiA9IEZ1bmN0aW9uPHZvaWQoUmVxdWVzdHNEYXRhJiYpPjsKICAg
ICAgICAgc3RhdGljIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNyZWF0ZShDYWxsYmFja0Z1
bmN0aW9uJiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xMjExLDcgKzEyMTEsNyBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVl
c3RzKFZlY3RvcjxSZXRhaQogICAgIEB0cnkgewogICAgICAgICBmb3IgKGF1dG8gcmVxdWVzdCA6
IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cykgewogICAgICAgICAgICAgYXV0byBr
ZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwotICAgICAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKKyAgICAg
ICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5
SURzLmZpcnN0KCkpOwogICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlE
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0
IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5n
ZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5p
bCBjb21wbGV0aW9uSGFuZGxlcjpba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0g
KE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7
CiAgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2Rl
ckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAppbmRleCAwMzM0ZDYyM2IyYTc2MDVjOWJlMTIy
MTNiNWFiZGJiYWMyYjAzZjE1Li42MmI4M2ZiZmQ1Nzk0MDUwZWJjOTQwNjM3MDQ5MGJhMmIzZWMw
ODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCkBA
IC01Myw3ICs1Myw3IEBAIGNsYXNzIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjsKIAogY2xh
c3MgSW1hZ2VEZWNvZGVyQVZGT2JqQyA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogcHVibGljOgot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gY3Jl
YXRlKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbik7CiAgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyQVZGT2JqQygpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc3VwcG9ydHNNZWRpYVR5cGUoTWVkaWFUeXBlKTsKQEAg
LTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtSW1hZ2VQ
dHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vi
c2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5n
T3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbDsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGF0YShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wg
aXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2Vp
dmVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6
ZV90KSBmaW5hbDsKIApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgVmVjdG9yPEltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPiBmcmFtZUluZm9zKCkgY29uc3Q7CiAK
IHByaXZhdGU6Ci0gICAgSW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OworICAgIEltYWdlRGVjb2RlckFWRk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bik7CiAKICAgICBBVkFzc2V0VHJhY2sgKmZpcnN0RW5hYmxlZFRyYWNrKCk7CiAgICAgdm9pZCBy
ZWFkU2FtcGxlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMubW0KaW5kZXggYTU0ZGYzZGJhZGY5MDRmNDU0ODRiOGNlNWJjYTQ5ZmM1NTY4ZmViOS4uMzVj
NmNlNjdlODVmODZhZTE2NGMyMWE3MjYwN2ZjMDY1ZWNiNTA1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVy
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCkBAIC0yODksNyArMjg5LDcgQEAgSW1h
Z2VEZWNvZGVyQVZGT2JqQ1NhbXBsZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRlcikKIAogI3ByYWdt
YSBtYXJrIC0gSW1hZ2VEZWNvZGVyQVZGT2JqQwogCi1SZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2Jq
Qz4gSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPEltYWdlRGVj
b2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pCiB7CiAgICAgLy8gQVZGb3VuZGF0aW9uIG1heSBub3QgYmUgYXZhaWxhYmxlIGF0IHJ1bnRp
bWUuCiAgICAgaWYgKCFBVkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFi
bGUoKSkKQEAgLTMwMSw3ICszMDEsNyBAQCBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gSW1h
Z2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29ucwogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlckFWRk9iakMoZGF0YSwgbWltZVR5cGUsIGFs
cGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogfQogCi1JbWFnZURlY29k
ZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQorSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgOiBJbWFnZURlY29kZXIoKQogICAgICwgbV9t
aW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1fdXRpKFdlYkNvcmU6OlVUSUZyb21NSU1FVHlwZSht
aW1lVHlwZSkpCkBAIC02NDEsNyArNjQxLDcgQEAgdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpz
ZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKQogICAg
IG1fbG9hZGVyLmdldCgpLmV4cGVjdGVkQ29udGVudFNpemUgPSBleHBlY3RlZENvbnRlbnRTaXpl
OwogfQogCi12b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0
RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkK
IHsKICAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZlZF07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaAppbmRleCAyMDBlMWE4ZjlhZmJhMGZjYmJhNWIwYTNlZDcwNGNkMzQxYjQ1MGQ2Li5j
OWQ5YjJhOTY4NWIwMWU5MWFhYTAwYzBlMDAzMDc3Mzg1NjkxNDJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oCkBAIC02Niw3ICs2Niw3IEBAIGNsYXNzIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJp
dmF0ZUFWRjsKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7CiBjbGFzcyBNZWRpYVNlbGVjdGlv
bkdyb3VwQVZGT2JqQzsKIGNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgVmlkZW9MYXll
ck1hbmFnZXJPYmpDOwogY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOwogY2xhc3MgV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyOwpAQCAtNDI2LDcgKzQyNiw3IEBAIHByaXZhdGU6CiAgICAg
bXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBtX3dhbGxDbG9ja0F0Q2FjaGVkQ3VycmVu
dFRpbWU7CiAgICAgbXV0YWJsZSBpbnQgbV90aW1lQ29udHJvbFN0YXR1c0F0Q2FjaGVkQ3VycmVu
dFRpbWUgeyAwIH07CiAgICAgbXV0YWJsZSBkb3VibGUgbV9yZXF1ZXN0ZWRSYXRlQXRDYWNoZWRD
dXJyZW50VGltZSB7IDAgfTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2tleUlEOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2tleUlEOwogICAgIGRvdWJsZSBtX2Nh
Y2hlZFJhdGUgeyAwIH07CiAgICAgYm9vbCBtX3JlcXVlc3RlZFBsYXlpbmcgeyBmYWxzZSB9Owog
ICAgIGRvdWJsZSBtX3JlcXVlc3RlZFJhdGUgeyAxLjAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CmluZGV4IGQxOGE4NWE3OTRmNTIzZjk0OTEyZTI3ZjA4YjdjY2JlODkzYzhlZDAuLmIxYzYwNzlj
NjQ4NzBmODhlMzVjODA4MTFhNWIxOGJkYTFiN2Y2MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQpAQCAtMjc5Miw3ICsyNzkyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmMKICAgICBpZiAo
IW1fa2V5SUQgfHwgIW1fY2RtSW5zdGFuY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8g
aW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+Ojpmcm9tKCptX2tleUlEKSk7CisgICAgYXV0byBpbnN0YW5jZVNl
c3Npb24gPSBtX2NkbUluc3RhbmNlLT5zZXNzaW9uRm9yS2V5SURzKFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+Ojpmcm9tKCptX2tleUlEKSk7CiAgICAgaWYgKCFpbnN0YW5jZVNl
c3Npb24pCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKaW5kZXggMDM0MjBmMTM4MzY0ZmFjMjA5MWUx
MDRkMTM2ZmYzOGExZmI5ZmUyMi4uZWFkMDgzYTZjYzdlNzM2YjQyMTcxMGZhYzM5MmEwN2RmZjky
YmU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy5oCkBAIC03Myw3ICs3Myw3IEBAIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwog
Y2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFzcyBWaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzsKIGNsYXNzIFdlYkNvcmVEZWNvbXByZXNzaW9u
U2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQgewogcHVi
bGljOgpAQCAtMTUzLDcgKzE1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRQcm92aWRlTWVk
aWFEYXRhRm9yVHJhY2tJZChSZWY8TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSWQsIGNv
bnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3Zl
cnJpZGVzCi0gICAgdm9pZCBhcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAg
dm9pZCBhcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZv
aWQgYWJvcnQoKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAg
ICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSBmaW5hbDsKQEAgLTIyMSw3ICsyMjEsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShB
VkNPTlRFTlRLRVlTRVNTSU9OKQogICAgIFJlZlB0cjxDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQz4gbV9jZG1JbnN0YW5jZTsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
IG1fa2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1fa2V5
SURzOwogI2VuZGlmCiAKICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gbV9jYWNoZWRTaXpl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5tbQppbmRleCAzYTI4NjdhMWFjMjQzYmI5YzkzYzlkNmI3MGNhNTZiMDI5NDhmYzljLi4y
NGFlMGUxNDA2MDE5MTQzZmFkNGYxNTI5ZTY4ZWQ0OWI0MTY1M2NhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtNTYz
LDcgKzU2Myw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvCiAgICAgVU5VU0VEX1BBUkFNKGhh
c1Nlc3Npb25TZW1hcGhvcmUpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7
CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiZGF0YSBsZW5ndGggPSAiLCBkYXRhLT5z
aXplKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5oCmluZGV4IDU4MzhlNDkzN2RmODlmNTg2MWFjZDlkOTZkYzEyMjk1YjZiYzc0M2Qu
LjBlZmVlYWVmNWIyZDcxYmM2ZDY3MDRkZDFiOTc1YWNiYWUxMTNiYmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCkBAIC00Myw3ICs0
Myw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM7CiBjbGFzcyBQ
bGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBS
ZWZDb3VudGVkPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4gewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZCgpOwotICAgIHZvaWQgbmV3RGF0YVN0
b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgbmV3RGF0
YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAog
ICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAgIFJl
dGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5k
ZXggYjZlMjM3YjVkZjVkZGY2YTcyZDU0MTY5NWEwNzgyMzE4MWFjYWRhZC4uZjkyMWYzZGEwZTY5
YjMzOTk3N2M5ZTNlNDk2NjdhMjhmNWU5NWNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTU2LDcgKzE1Niw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgZmluYWwgeyBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQogICAgIGJv
b2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGRhdGFTZW50
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9u
ZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
ZmluYWw7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgbG9hZEZhaWxlZChl
cnJvcik7IH0KICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgbG9hZEZhaWxlZChlcnJvcik7IH0KICAg
ICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbCB7IGxvYWRGaW5pc2hlZCgpOyB9CkBAIC0yMTEsNyArMjExLDcg
QEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAg
bV9wYXJlbnQubG9hZEZpbmlzaGVkKCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlh
TG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCit2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKICAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAg
ICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyLmdldCgpKTsK
QEAgLTIyNSw3ICsyMjUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwot
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVy
OjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIHBh
cmVudCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIzNSw3ICsyMzUsNyBAQCBEYXRh
VVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyJgogCiAgICAgaWYgKGF1dG8gcmVzdWx0ID0gRGF0YVVSTERlY29k
ZXI6OmRlY29kZShyZXF1ZXN0LnVybCgpLCBEYXRhVVJMRGVjb2Rlcjo6TW9kZTo6Rm9yZ2l2aW5n
QmFzZTY0KSkgewogICAgICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVS
TFJlc3BvbnNlKHJlcXVlc3QudXJsKCksICpyZXN1bHQpOwotICAgICAgICBtX2J1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOworICAg
ICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRh
KSk7CiAgICAgfQogCiAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfV0gewpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIHN0b3BMb2FkaW5nKCk7CiB9CiAKLXZvaWQg
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5l
d0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhKQogewogICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdEYXRhUmVxdWVzdCogZGF0YVJlcXVl
c3QgPSBbbV9hdlJlcXVlc3QgZGF0YVJlcXVlc3RdOwogICAgIGlmICghZGF0YVJlcXVlc3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNDZiMDdmZTcxMmU3OWU2MTMxN2MwZDEx
NmZlNmEzZjA0YWY5ZmZjYi4uOTQxOWJjZWEzOGRiZjhkNjQ5MmY2ODAxZDlhMjE1NjIzNjZhMmM2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzEsMTEgKzMxLDExIEBAIHR5
cGVkZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiAgRlRfRmFjZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwog
Y2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNz
IEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7
CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKIApAQCAtNDYsNyArNDYsNyBAQCBzdHJ1Y3Qg
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiBwdWJsaWM6
Ci0gICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9GYWNlLCBTaGFyZWRCdWZmZXImKTsKKyAg
ICBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKEZUX0ZhY2UsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KTsKICAgICB+Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSgpID0gZGVmYXVsdDsKICAgICBGb250UGxh
dGZvcm1EYXRhIGZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBi
b2xkLCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogICAgIHN0YXRp
YyBib29sIHN1cHBvcnRzRm9ybWF0KGNvbnN0IFN0cmluZyYpOwpAQCAtNTUsNyArNTUsNyBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxjYWlyb19mb250X2ZhY2VfdD4gbV9mb250RmFjZTsKIH07CiAK
LXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCAyMDM1Yzk5YTdmNjhiNTQ4OWM4NThhM2U2ZDcw
MzNkMTM1ZDFmN2RiLi5iNmQzZWIzNjMxMTI0NDYxM2IzODAzZjJmM2QyNGQzMDg3ZWEyNGU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW50
U2l6ZT4gZGVuc2l0eUNvcnJlY3RlZFNpemVGcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYK
ICNpZiAhUExBVEZPUk0oQ09DT0EpCiBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0
aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sIHNpemVfdCBjb3Vu
dCkKIHsKLSAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNf
Y2FzdDxDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAgU2hhcmVkQnVmZmVyKiBz
aGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBzaXpl
X3Qgc291cmNlU2l6ZSA9IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpOwogICAgIGlmIChwb3NpdGlvbiA+
PSBzb3VyY2VTaXplKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI0NCwxMiArMjQ0LDEyIEBAIHNp
emVfdCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCogYnVm
ZmVyLCBvZmZfdCBwb3NpdGlvbiwKIAogdm9pZCBzaGFyZWRCdWZmZXJSZWxlYXNlKHZvaWQqIGlu
Zm8pCiB7Ci0gICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxTaGFy
ZWRCdWZmZXIqPihpbmZvKTsKKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZm
ZXIgPSBzdGF0aWNfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4oaW5mbyk7CiAgICAgc2hh
cmVkQnVmZmVyLT5kZXJlZigpOwogfQogI2VuZGlmCiAKLUltYWdlRGVjb2RlckNHOjpJbWFnZURl
Y29kZXJDRyhTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyhGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
CiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlIaW50OwogICAgIGlmIChkYXRhLnNp
emUoKSA+PSAzMikKQEAgLTU2MiwyMCArNTYyLDIwIEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VE
ZWNvZGVyQ0c6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxp
CiAgICAgcmV0dXJuIG1hc2tlZEltYWdlID8gbWFza2VkSW1hZ2UgOiBpbWFnZTsKIH0KIAotdm9p
ZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQordm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBtX2lzQWxsRGF0YVJl
Y2VpdmVkID0gYWxsRGF0YVJlY2VpdmVkOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgLy8g
T24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5
IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KLSAgICAv
LyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZE
YXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCi0gICAgLy8g
cmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KKyAgICAvLyBPbiBNYWMgdGhlIE5T
RGF0YSBpbnNpZGUgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFw
cGVuZGVkIHRvIHdpdGhvdXQgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2Uu
CisgICAgLy8gV2UgdXNlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAg
aXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IElt
YWdlSU8gaXMKKyAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlci4KICAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCks
IGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNl
aXZlZCk7CiAjZWxzZQotICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhl
IFNoYXJlZEJ1ZmZlci4KKyAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRo
ZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgogICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRh
Lm1ha2VDb250aWd1b3VzKCk7CiAgICAgY29udGlndW91c0RhdGEuZ2V0KCkucmVmKCk7Ci0gICAg
Ly8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhl
IEdldEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIFNoYXJlZEJ1ZmZlcgorICAgIC8vIFdlIHVzZSB0
aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9p
bnRlciBvbmUgYmVjYXVzZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBub3Qg
cHJvdmlkZSBhIHdheSB0byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFudGVl
IHRoYXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZvciB1
c2luZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJl
Y3RDYWxsYmFja3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZlckdl
dEJ5dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKaW5kZXggOTc0
MDczNmEyMWFjOTk4YWIwNWYxYzliNGY1YjE2NzVlNDRkMmM5MS4uYTBhYzFjMmZiZWU1MjdlNWFi
MTExNDU1ODEyYmRiNzM2M2EwNTU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCkBAIC0zMiw5ICszMiw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEltYWdlRGVjb2RlckNHIGZpbmFsIDogcHVibGljIEltYWdl
RGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW1h
Z2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pOworICAgIEltYWdlRGVjb2RlckNHKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKLSAg
ICBzdGF0aWMgUmVmPEltYWdlRGVjb2RlckNHPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBB
bHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJDRz4gY3Jl
YXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlckNHKGRhdGEs
IGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgIH0KQEAgLTY0
LDcgKzY0LDcgQEAgcHVibGljOgogCiAgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpE
ZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5n
TW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZm
ZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9v
bCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVj
ZWl2ZWQ7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250UGxhdGZvcm1EYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KaW5kZXggODQ0YWM0NGYzYWRkZmE5ZjM5
NTc4NmI5NGJkZDUwOTQxZTcyNzU0Yi4uODU0MjFlM2RlNzA5Y2UxNTljNDk0YjQwZmI4ZDFhZDIz
NTkzYzNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQpAQCAtNTcsNyArNTcsNyBA
QCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250UGxhdGZv
cm1EYXRhJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gQ0ZFcXVhbChtX2ZvbnQuZ2V0KCksIG90
aGVyLm1fZm9udC5nZXQoKSk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBG
b250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QpIGNvbnN0CitS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFi
bGUodWludDMyX3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyLmNwcAppbmRleCBmNzQ3ZDgwZmI2MWQzMGZjNTAyMmU2ODJkNjM1NjEzM2QzY2E2
OTdhLi5jOGE4MDYxMjIwNTNmNjQ4YWRkYjAyYWMzODljZTcxNDM2OGRiYmEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJz
ZXI6OnNldE1pbmltdW1BdWRpb1NhbXBsZUR1cmF0aW9uKGZsb2F0KQogewogfQogCi1Tb3VyY2VC
dWZmZXJQYXJzZXI6OlNlZ21lbnQ6OlNlZ21lbnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CitTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OlNlZ21lbnQoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoYnVmZmVyKSkKIHsK
IH0KQEAgLTEwMSw3ICsxMDEsNyBAQCBzaXplX3QgU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50
OjpzaXplKCkgY29uc3QKICAgICAgICAgICAgIHJldHVybiBjbGFtcFRvPHNpemVfdD4oTVRQbHVn
aW5CeXRlU291cmNlR2V0TGVuZ3RoKGJ5dGVTb3VyY2UuZ2V0KCkpKTsKICAgICAgICAgfSwKICNl
bmRpZgotICAgICAgICBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorICAgICAg
ICBbXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci0+c2l6ZSgpOwogICAgICAgICB9CkBAIC0xMjUs
NyArMTI1LDcgQEAgYXV0byBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnJlYWQoc2l6ZV90
IHBvc2l0aW9uLCBzaXplX3Qgc2l6ZVRvUmVhZCwgdWludDgKICAgICAgICAgICAgIHJldHVybiBV
bmV4cGVjdGVkPFJlYWRFcnJvcj4geyBSZWFkRXJyb3I6OkZhdGFsRXJyb3IgfTsKICAgICAgICAg
fSwKICNlbmRpZgotICAgICAgICBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikg
LT4gUmVhZFJlc3VsdAorICAgICAgICBbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIC0+IFJlYWRSZXN1bHQKICAgICAgICAgewogICAgICAgICAgICAgYnVmZmVy
LT5jb3B5VG8oZGVzdGluYXRpb24sIHBvc2l0aW9uLCBzaXplVG9SZWFkKTsKICAgICAgICAgICAg
IHJldHVybiBzaXplVG9SZWFkOwpAQCAtMTMzLDcgKzEzMyw3IEBAIGF1dG8gU291cmNlQnVmZmVy
UGFyc2VyOjpTZWdtZW50OjpyZWFkKHNpemVfdCBwb3NpdGlvbiwgc2l6ZV90IHNpemVUb1JlYWQs
IHVpbnQ4CiAgICAgKTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU291cmNlQnVmZmVyUGFyc2Vy
OjpTZWdtZW50Ojp0YWtlU2hhcmVkQnVmZmVyKCkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VTaGFyZWRCdWZmZXIoKQogewogICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc2VnbWVudCwKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JN
QVRfUkVBREVSKQpAQCAtMTQyLDI4ICsxNDIsMjggQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU291cmNl
QnVmZmVyUGFyc2VyOjpTZWdtZW50Ojp0YWtlU2hhcmVkQnVmZmVyKCkKICAgICAgICAgICAgIFZl
Y3Rvcjx1aW50OF90PiB2ZWN0b3Ioc2l6ZSgpKTsKICAgICAgICAgICAgIGF1dG8gcmVhZFJlc3Vs
dCA9IHJlYWQoMCwgdmVjdG9yLnNpemUoKSwgdmVjdG9yLmRhdGEoKSk7CiAgICAgICAgICAgICBp
ZiAoIXJlYWRSZXN1bHQuaGFzX3ZhbHVlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICAgICAgdmVjdG9yLnNocmluayhyZWFkUmVzdWx0
LnZhbHVlKCkpOwotICAgICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUodmVjdG9yKSk7CisgICAgICAgICAgICByZXR1cm4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUodmVjdG9yKSk7CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAgICAgWyZd
KFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgICAgIFsmXShSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
ZXhjaGFuZ2UoYnVmZmVyLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKTsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6OmV4Y2hhbmdlKGJ1ZmZlciwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCkpOwogICAgICAgICB9CiAgICAgKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU291cmNl
QnVmZmVyUGFyc2VyOjpTZWdtZW50OjpnZXRTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6Z2V0U2hh
cmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3NlZ21lbnQs
CiAjaWYgSEFWRShNVF9QTFVHSU5fRk9STUFUX1JFQURFUikKLSAgICAgICAgWyZdKGNvbnN0IFJl
dGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VSZWY+JikgLT4gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4K
KyAgICAgICAgWyZdKGNvbnN0IFJldGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VSZWY+JikgLT4g
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+CiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAgIFsmXShjb25zdCBSZWY8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZWZQdHI8U2hhcmVkQnVmZmVyPgorICAgICAgICBb
Jl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPgogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYnVm
ZmVyLnB0cigpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCmluZGV4IDUyMGI1MjA3
ZmMyNzFkNzk4MTUzM2ZiMTRkMjMxNTU5NGE4ODgzNjUuLjcyOTdhNzkxNGE3OWFkZjY0MmRjNmIx
NmIzNmU2MGY5Y2QwMjlmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCkBAIC00NSw3ICs0NSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudFR5cGU7CiBjbGFzcyBNZWRp
YVNhbXBsZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNvdXJjZUJ1ZmZlclBhcnNlciA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxTb3VyY2VCdWZmZXJQYXJzZXI+IHsKIHB1YmxpYzoKQEAgLTY5
LDExICs2OSwxMSBAQCBwdWJsaWM6CiAjaWYgSEFWRShNVF9QTFVHSU5fRk9STUFUX1JFQURFUikK
ICAgICAgICAgU2VnbWVudChSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiYmKTsKICNl
bmRpZgotICAgICAgICBTZWdtZW50KFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAgICAgICBTZWdt
ZW50KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICAgICAgU2VnbWVudChTZWdt
ZW50JiYpID0gZGVmYXVsdDsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdGFrZVNoYXJlZEJ1
ZmZlcigpOwotICAgICAgICAvLyBXaWxsIHJldHVybiBudWxscHRyIGlmIFNlZ21lbnQncyBiYWNr
ZW5kIGlzbid0IGEgU2hhcmVkQnVmZmVyLgotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBn
ZXRTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHRha2VTaGFyZWRCdWZmZXIoKTsKKyAgICAgICAgLy8gV2lsbCByZXR1cm4gbnVsbHB0ciBp
ZiBTZWdtZW50J3MgYmFja2VuZCBpc24ndCBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCisgICAg
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBnZXRTaGFyZWRCdWZmZXIoKSBjb25z
dDsKIAogICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCkBAIC04Nyw3ICs4Nyw3IEBAIHB1
YmxpYzoKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVSKQogICAgICAgICAgICAgUmV0
YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4sCiAjZW5kaWYKLSAgICAgICAgICAgIFJlZjxT
aGFyZWRCdWZmZXI+CisgICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4KICAg
ICAgICAgPiBtX3NlZ21lbnQ7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcAppbmRleCA2MWRiZDYyYzllM2U5ZjMxNTc5ODUwNWViNTA0MGY5OWZmOGM1YmYxLi45YmMx
ODk0MTk4NjMwYmFkOGQ3Y2JkMGIzYTViMjhlNDZlOWVmZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmNwcApAQCAtMzg4LDcgKzM4OCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICBhZHZhbmNlVG9OZXh0U2VnbWVudCgpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVm
ZmVyID0gY3VycmVudFNlZ21lbnQuZ2V0U2hhcmVkQnVmZmVyKCk7CisgICAgICAgICAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gY3VycmVudFNlZ21lbnQu
Z2V0U2hhcmVkQnVmZmVyKCk7CiAgICAgICAgICAgICBDTUJsb2NrQnVmZmVyUmVmIHJhd0Jsb2Nr
QnVmZmVyID0gbnVsbHB0cjsKICAgICAgICAgICAgIHVpbnQ2NF90IGxhc3RSZWFkID0gMDsKICAg
ICAgICAgICAgIHNpemVfdCBkZXN0aW5hdGlvbk9mZnNldCA9IG1fcG9zaXRpb25XaXRoaW5TZWdt
ZW50OwpAQCAtNDA5LDcgKzQwOSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBkZXN0aW5h
dGlvbk9mZnNldCA9IDA7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIEFT
U0VSVChzaGFyZWRCdWZmZXItPmhhc09uZVNlZ21lbnQoKSwgIkNhbiBvbmx5IGRlYWwgd2l0aCBz
aGFyZWRCdWZmZXIgY29udGFpbmluZyBhIHNpbmdsZSBEYXRhU2VnbWVudCIpOwotICAgICAgICAg
ICAgICAgIC8vIEEgU2hhcmVkQnVmZmVyIGRvZXNuJ3QgaGF2ZSB0aHJlYWQtc2FmZSByZWZjb3Vu
dGluZywgYXMgc3VjaCB3ZSBtdXN0IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIERhdGFTZWdtZW50
IGluc3RlYWQuCisgICAgICAgICAgICAgICAgLy8gQSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGRv
ZXNuJ3QgaGF2ZSB0aHJlYWQtc2FmZSByZWZjb3VudGluZywgYXMgc3VjaCB3ZSBtdXN0IGtlZXAg
YSByZWZlcmVuY2UgdG8gdGhlIERhdGFTZWdtZW50IGluc3RlYWQuCiAgICAgICAgICAgICAgICAg
Ly8gVE9ETzogY291bGQgd2Ugb25seSBjcmVhdGUgYSBuZXcgQ01CbG9ja0J1ZmZlciBpZiB0aGUg
YmFja2VuZCBtZW1vcnkgY2hhbmdlZCBzaW5jZSB0aGUgcHJldmlvdXMgb25lPwogICAgICAgICAg
ICAgICAgIGF1dG8gZmlyc3RTZWdtZW50ID0gc2hhcmVkQnVmZmVyLT5iZWdpbigpLT5zZWdtZW50
OwogICAgICAgICAgICAgICAgIHNpemVfdCBjYW5SZWFkID0gc3RkOjptaW48c2l6ZV90PihudW1U
b1JlYWQsIGZpcnN0U2VnbWVudC0+c2l6ZSgpIC0gbV9wb3NpdGlvbldpdGhpblNlZ21lbnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9u
dFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKaW5kZXggY2M1OTRmMzg0
ZTU2MzVkZWRhOGY0MjNmNjg0ZGE1YjU1NDk3MDY3MS4uNTlkMjE2Njc5ZDJmZTRjODBjNjlhYWE3
MWYzOTIxZDYyNTdhYWM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRl
eHQuY3BwCkBAIC0xNTEsMTAgKzE1MSwxMCBAQCBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiBGb250UGxh
dGZvcm1EYXRhOjpvYmplY3RGb3JFcXVhbGl0eUNoZWNrKCkgY29uc3QKICAgICByZXR1cm4gb2Jq
ZWN0Rm9yRXF1YWxpdHlDaGVjayhjdEZvbnQoKSk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVU
YWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBpZiAoUmV0YWluUHRyPENGRGF0YVJl
Zj4gZGF0YSA9IGFkb3B0Q0YoQ1RGb250Q29weVRhYmxlKGN0Rm9udCgpLCB0YWJsZSwga0NURm9u
dFRhYmxlT3B0aW9uTm9PcHRpb25zKSkpCi0gICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKTsKIAogICAgIHJldHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUo
dGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApp
bmRleCA0MDI1ZTA2OTJkYzVhMTVlOTczNjk1ODAzMzNmNmZhM2I5YmZiZDRiLi5iYTYwNWRjYjMx
ZDUyOTQ3YWMyYTcxNDZjMWRlODQwY2Q0YTQ4NzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtNzM3LDcgKzczNyw3IEBAIERpZENoYW5nZUl0ZW1C
dWZmZXIgSXRlbUJ1ZmZlcjo6c3dhcFdyaXRhYmxlQnVmZmVySWZOZWVkZWQoc2l6ZV90IG51bWJl
ck9mQnl0ZXMpCiB2b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0m
IHRlbXBvcmFyeUl0ZW0pCiB7CiAgICAgYXV0byByZXF1aXJlZFNpemVGb3JJdGVtID0gbV93cml0
aW5nQ2xpZW50LT5yZXF1aXJlZFNpemVGb3JJdGVtKHRlbXBvcmFyeUl0ZW0pOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG91dE9mTGluZUl0ZW07CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IG91dE9mTGluZUl0ZW07CiAgICAgaWYgKCFyZXF1aXJlZFNpemVGb3JJdGVtKSB7
CiAgICAgICAgIG91dE9mTGluZUl0ZW0gPSBtX3dyaXRpbmdDbGllbnQtPmVuY29kZUl0ZW1PdXRP
ZkxpbmUodGVtcG9yYXJ5SXRlbSk7CiAgICAgICAgIGlmICghb3V0T2ZMaW5lSXRlbSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAppbmRleCBjODczMTk4MmVmODM5MzFi
YmFlMzFiNzg2NTBhYzBkYTIwYTA1ZmM1Li5iMzFiYzVmZDRlOTIxNGIxNWEzNzYxZmJlOThkNjBj
ZWI0N2E5OGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCkBA
IC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH0KIAotICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9m
TGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdAorICAgIHZpcnR1YWwgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxp
c3RJdGVtJikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAg
LTE2OCw3ICsxNjgsNyBAQCBwdWJsaWM6CiAgICAgLy8gd2l0aCBwYWRkaW5nIGJldHdlZW4gZWFj
aCBpdGVtIHRvIGVuc3VyZSB0aGF0IGFsbCBpdGVtcyBhcmUgYWxpZ25lZCB0byA4IGJ5dGVzLgog
ICAgIC8vCiAgICAgLy8gSWYgYSB3cml0aW5nIGNsaWVudCBpcyBwcmVzZW50IGFuZCByZXF1aXJl
cyBjdXN0b20gZW5jb2RpbmcgZm9yIHRoZSBnaXZlbiBpdGVtIHR5cGUgVCwgdGhlCi0gICAgLy8g
aXRlbSBidWZmZXIgd2lsbCBhc2sgdGhlIGNsaWVudCBmb3IgYW4gb3BhcXVlIFNoYXJlZEJ1ZmZl
ciBjb250YWluaW5nIGVuY29kZWQgZGF0YSBmb3IgdGhlCisgICAgLy8gaXRlbSBidWZmZXIgd2ls
bCBhc2sgdGhlIGNsaWVudCBmb3IgYW4gb3BhcXVlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgY29u
dGFpbmluZyBlbmNvZGVkIGRhdGEgZm9yIHRoZQogICAgIC8vIGl0ZW0uIFRoaXMgZW5jb2RlZCBk
YXRhIGlzIHRoZW4gYXBwZW5kZWQgdG8gdGhlIGl0ZW0gYnVmZmVyLCB3aXRoIHBhZGRpbmcgdG8g
ZW5zdXJlIHRoYXQKICAgICAvLyB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0aGlzIGRhdGEgYXJlIGFs
aWduZWQgdG8gOCBieXRlcywgaWYgbmVjZXNzYXJ5LiBXaGVuIGNvbnN1bWluZyBlbmNvZGVkCiAg
ICAgLy8gaXRlbSBkYXRhLCBhIGNvcnJlc3BvbmRpbmcgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQg
d2lsbCBiZSByZXF1aXJlZCB0byBjb252ZXJ0IHRoaXMgZW5jb2RlZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggY2NkYWRiMGRhMTFi
NTk4NWEzNDM4NjE5ZGIwZGYyMzMwMWE3MjVhMy4uMmI0NDNmYmJlZDJjMWZkZTQ4YmNkZTljYmU0
MDk1MzQ5N2ZkZTkxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhRnJlZVR5cGUuY3BwCkBAIC0zOCwxMiArMzgsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGF0aWMgdm9pZCByZWxlYXNlQ3VzdG9tRm9udERhdGEodm9pZCogZGF0YSkKIHsKLSAgICBz
dGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICBzdGF0aWNfY2Fz
dDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CiB9CiAKIHN0YXRpYyBj
YWlyb191c2VyX2RhdGFfa2V5X3QgZnJlZVR5cGVGYWNlS2V5OwogCi1Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhKEZUX0ZhY2UgZnJlZVR5cGVGYWNlLCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK0ZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OkZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoRlRfRmFjZSBmcmVlVHlwZUZhY2UsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICA6IG1fZm9udEZhY2UoYWRvcHRSZWYoY2Fpcm9fZnRfZm9udF9mYWNlX2NyZWF0
ZV9mb3JfZnRfZmFjZShmcmVlVHlwZUZhY2UsIEZUX0xPQURfREVGQVVMVCkpKQogewogICAgIGJ1
ZmZlci5yZWYoKTsgLy8gVGhpcyBpcyBiYWxhbmNlZCBieSB0aGUgYnVmZmVyLT5kZXJlZigpIGlu
IHJlbGVhc2VDdXN0b21Gb250RGF0YS4KQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgYm9vbCBp
bml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KEZUX0xpYnJhcnkmIGxpYnJhcnkpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmKQogewogICAgIHN0YXRpYyBGVF9MaWJyYXJ5IGxpYnJhcnk7CiAgICAgaWYgKCFsaWJy
YXJ5ICYmICFpbml0aWFsaXplRnJlZVR5cGVMaWJyYXJ5KGxpYnJhcnkpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1E
YXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCBmZWQ4NTQwZjRhZWJjODRjNjli
MjkwODA2OTdjMTI0NjAxZDViNjI2Li42ODljYjY3OWU2MzJlMmY1YTJhMmZlMDY0NTgxMWQ4ODY2
YTkwYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAg
LTI0OSw3ICsyNDksNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6Omhhc0NvbXBhdGlibGVDaGFy
bWFwKCkgY29uc3QKICAgICAgICAgJiYgRlRfU2VsZWN0X0NoYXJtYXAoZnJlZVR5cGVGYWNlLCBm
dF9lbmNvZGluZ19hcHBsZV9yb21hbikpOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29u
c3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgQ2Fpcm9GdEZhY2VMb2NrZXIgY2Fpcm9GdEZh
Y2VMb2NrZXIobV9zY2FsZWRGb250LmdldCgpKTsKICAgICBGVF9GYWNlIGZyZWVUeXBlRmFjZSA9
IGNhaXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgpOwpAQCAtMjY4LDcgKzI2OCw3IEBAIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVp
bnQzMl90IHRhYmxlKSBjCiAgICAgaWYgKGVycm9yIHx8IHRhYmxlU2l6ZSAhPSBleHBlY3RlZFRh
YmxlU2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAogI2lmIFVTRShIQVJGQlVaWikgJiYg
IUVOQUJMRShPUEVOVFlQRV9NQVRIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRleCAx
NDc0ODI4ZmRlNjY5MjRkNDJiYWFjMzMzNGZmOGQ1YzNiNGFkNzY0Li4wMTYwNWZjOTE0OTdlNDYy
YmEwNzczMDQ3OGU4NGE4NTUxZTY3MjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApA
QCAtNDIyLDkgKzQyMiw5IEBAIFZlY3Rvcjx1aW50OF90PiBHc3RNYXBwZWRCdWZmZXI6OmNyZWF0
ZVZlY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIHsgZGF0YSgpLCBzaXplKCkgfTsKIH0KIAotUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFy
ZWRCdWZmZXIoKQorUmVmPFNoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0
ZVNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgqdGhpcyk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKIH0K
IAogYm9vbCBpc0dTdHJlYW1lclBsdWdpbkF2YWlsYWJsZShjb25zdCBjaGFyKiBuYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckNvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lckNvbW1vbi5oCmluZGV4IGQwMTRjYzZhNWRjN2IxN2UzOTk2MDA2YmY2ZWE2OGE4
YmM5OTRjNDIuLmJiYjhjMTM5NmYwMDNkNjQyNjg4OTc5YTY4NGM2NjFiMWNiODcxYmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyQ29tbW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgSW50U2l6ZTsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiAKIGlubGluZSBib29sIHdlYmtpdEdzdENoZWNrVmVyc2lvbihndWlu
dCBtYWpvciwgZ3VpbnQgbWlub3IsIGd1aW50IG1pY3JvKQogewpAQCAtMTkwLDcgKzE5MCw3IEBA
IHB1YmxpYzoKICAgICAgICAgdW5tYXBFYXJseSgpOwogICAgIH0KIAotICAgIFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKTsKKyAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKTsKIAogcHJpdmF0ZToKICAgICBHc3RNYXBwZWRPd25l
ZEJ1ZmZlcihHUmVmUHRyPEdzdEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURl
Y29kZXJHU3RyZWFtZXIuY3BwCmluZGV4IDI5YjNhNTAxZDhlOWE5NjJhMGMzZDA0ZmIyNjEyNmVh
NDNhMzU1MjYuLmRmYmM1ODBmYjhlOWIzMDkzNmNjYTA4YmI4OGI0OWMyYmI2NTNhYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURl
Y29kZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC04MSwxMiArODEsMTIgQEAg
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRvciBpdGVyKQogICAg
IHJldHVybiAoSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKilpdGVyLT5zZWNvbmQuZ2V0KCk7
CiB9CiAKLVJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IEltYWdlRGVjb2RlckdTdHJlYW1l
cjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxw
aGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPEltYWdlRGVjb2RlckdTdHJlYW1lcj4gSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlckdTdHJlYW1lcihkYXRhLCBtaW1lVHlwZSwgYWxw
aGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiB9CiAKLUltYWdlRGVjb2Rl
ckdTdHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKQorSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbWFnZURlY29kZXJHU3RyZWFtZXIoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogbV9taW1lVHlwZShtaW1lVHlw
ZSkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CkBAIC0xOTksNyArMTk5
LDcgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3UKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
dm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sKQordm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCkKIHsKICAgICBwdXNoRW5jb2RlZERhdGEoZGF0YSk7CiB9CkBA
IC00MjYsNyArNDI2LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
OjpJbm5lckRlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKICAgICByZXR1cm4gRW5j
b2RlZERhdGFTdGF0dXM6OlVua25vd247CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
OjpwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKTsKICAgICBtX2VvcyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2Rl
ckdTdHJlYW1lci5oCmluZGV4IDY2ZjMzNzI4NDZhNGRmODc0ZjQyMGRiNjU0ZTY4OWM5ZTQzYjBj
NTIuLmQzZWY2YTQ1Y2Q3ZGJkZmMzMTIwZWEyM2Y4ZGViM2M1OTk3MWFlOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKQEAgLTQxLDggKzQxLDggQEAgY2xhc3MgSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2RlckdTdHJl
YW1lcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7Ci0gICAgSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZURl
Y29kZXJHU3RyZWFtZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsK
KyAgICBJbWFnZURlY29kZXJHU3RyZWFtZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bik7CiAgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKCkgPSBkZWZhdWx0OwogCiAg
ICAgc3RhdGljIGJvb2wgc3VwcG9ydHNNZWRpYVR5cGUoTWVkaWFUeXBlIHR5cGUpIHsgcmV0dXJu
IHR5cGUgPT0gTWVkaWFUeXBlOjpWaWRlbzsgfQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAg
ICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5h
bDsKIAogICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsIHsg
fQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
ZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fZW9zOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUo
c2l6ZV90KSBmaW5hbDsKIApAQCAtMTIyLDcgKzEyMiw3IEBAIHByaXZhdGU6CiAgICAgfTsKIAog
ICAgIHZvaWQgaGFuZGxlU2FtcGxlKEdSZWZQdHI8R3N0U2FtcGxlPiYmKTsKLSAgICB2b2lkIHB1
c2hFbmNvZGVkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHB1c2hFbmNvZGVk
RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBjb25zdCBJbWFnZURl
Y29kZXJHU3RyZWFtZXJTYW1wbGUqIHNhbXBsZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA1ZDg2ZmIxYWY0
ODdjMDI4OWUwMDEyNTU5NjVjMzFkY2RhOTczNDI2Li45MzAxOTA5OTQ1YjRhMjNkNjY3ODJmMzUw
YjU2ZTQ0NzlmODAyNmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gUGxhdGZvcm1NZWRp
YVJlc291cmNlQ2xpZW50IHZpcnR1YWwgbWV0aG9kcy4KICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2
b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBvdmVycmlkZTsKQEAgLTEwOTMsNyArMTA5Myw3IEBAIHZvaWQgQ2FjaGVkUmVz
b3VyY2VTdHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uCiAgICAgY29tcGxldGlvbkhhbmRsZXIoU2hvdWxkQ29udGludWVQb2xpY3lDaGVj
azo6WWVzKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIFdlYktpdFdlYlNyYyogc3JjID0g
V0VCS0lUX1dFQl9TUkMobV9zcmMuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJL
ZXkuaAppbmRleCA2OTJhOTk2ZDE5YzI0ZWZkOWE0ODU1MjM3M2E1Njc5YjUyZTFlZjFjLi4zNDli
ZmRjYWFkNmM3ZDdmOGQ1YWRhMGExNzIxOWZkOWU3MDYyNmYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NE
TVByb3h5Q2xlYXJLZXkuaApAQCAtNjIsMTEgKzYyLDExIEBAIHB1YmxpYzoKICAgICBDRE1Qcm94
eUNsZWFyS2V5KCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgfkNETVByb3h5Q2xlYXJLZXkoKTsK
IAotICAgIC8vIEZJWE1FOiBUaGVyZSdzIGEgbGFjayBvZiBjb25zaXN0ZW5jeSBiZXR3ZWVuIFNo
YXJlZEJ1ZmZlcnMsCisgICAgLy8gRklYTUU6IFRoZXJlJ3MgYSBsYWNrIG9mIGNvbnNpc3RlbmN5
IGJldHdlZW4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcnMsCiAgICAgLy8gVmVjdG9yPGNoYXI+J3Mg
YW5kIHt1aW50OF90KixzaXplX3R9IGlkaW9tcyBmb3IgcmVwcmVzZW50aW5nIGEgY2h1bmsgb2YK
LSAgICAvLyBieXRlcy4gRml4IHRoYXQgc29tZWhvdy4gTm90ZSBTaGFyZWRCdWZmZXJzIGFyZSBk
YW5nZXJvdXMgc2luY2UKKyAgICAvLyBieXRlcy4gRml4IHRoYXQgc29tZWhvdy4gTm90ZSBGcmFn
bWVudGVkU2hhcmVkQnVmZmVycyBhcmUgZGFuZ2Vyb3VzIHNpbmNlCiAgICAgLy8gdGhleSdyZSBu
b3QgdGhyZWFkLXNhZmUgYW5kIHRoaXMgY2xhc3MgbXVzdCBtYWludGFpbgotICAgIC8vIHRocmVh
ZC1zYWZldHksIGJ1dCBtYXliZSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50IGNvdWxkIGJlCisg
ICAgLy8gdGhyZWFkLXNhZmV0eSwgYnV0IG1heWJlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50IGNvdWxkIGJlCiAgICAgLy8gbWFkZSB0byB3b3JrLCBob3dldmVyIHRoYXQgaGFz
IHplcm8gaGVscGVycyBmb3IgZHJvcHBpbmcgaW50bwogICAgIC8vIGl0ZXJhdG9yLWF3YXJlIC8g
Y29tcGFyYXRvci1hd2FyZSBjb250YWluZXJzLi4uCiAgICAgc3RydWN0IGNlbmNEZWNyeXB0Q29u
dGV4dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAppbmRleCAyZWZhMDQzNjBlODg0ODM4MDYx
NDRjM2Q3MWRlNjNhZDdiNDJiNTYxLi5jMzg5MTZlN2QwNTllODg5YjVjODhlZWIwOWUwZjRjZmMw
M2MxZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBi
b29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERh
dGEpIGNvbnN0Citib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
aW5pdERhdGEpIGNvbnN0CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhlIGluaXREYXRhIGJ1ZmZlciBh
cyBhbiBKU09OIG9iamVjdCBpbiBrZXlpZHMgY2FzZS4KICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRzIikgJiYgQ0RNVXRpbGl0aWVzOjpw
YXJzZUpTT05PYmplY3QoaW5pdERhdGEpKQpAQCAtMjM3LDcgKzIzNyw3IEBAIGJvb2wgQ0RNUHJp
dmF0ZVRodW5kZXI6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBTCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBDRE1Qcml2YXRlVGh1bmRlcjo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXIm
IHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZh
dGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IHJlc3BvbnNlKSBjb25zdAogewogICAgIHJldHVybiByZXNwb25zZS5jb3B5KCk7CiB9CkBAIC0y
NjAsNyArMjYwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OmluaXRpYWxpemVXaXRoQ29u
ZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmEKICAgICBjYWxsYmFjayhTdWNj
ZWVkZWQpOwogfQogCi12b2lkIENETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNh
dGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgIFN1Y2Nlc3NDYWxsYmFjayYmIGNh
bGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OnNldFNlcnZlckNlcnRpZmljYXRlKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCAgU3VjY2Vzc0NhbGxiYWNr
JiYgY2FsbGJhY2spCiB7CiAgICAgT3BlbkNETUVycm9yIGVycm9yID0gb3BlbmNkbV9zeXN0ZW1f
c2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShtX3RodW5kZXJTeXN0ZW0uZ2V0KCksIGNvbnN0X2Nhc3Q8
dWludDhfdCo+KGNlcnRpZmljYXRlLT5kYXRhKCkpLAogICAgICAgICBjZXJ0aWZpY2F0ZS0+c2l6
ZSgpKTsKQEAgLTMyNiw3ICszMjYsNyBAQCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBDRE1J
bnN0YW5jZVRodW5kZXI6OmNyZWF0ZVNlc3Npb24oKQogY2xhc3MgUGFyc2VkUmVzcG9uc2VNZXNz
YWdlIHsKIAogcHVibGljOgotICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZShjb25zdCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZShjb25zdCBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKICAgICB7CiAgICAgICAgIGlm
ICghYnVmZmVyIHx8ICFidWZmZXItPnNpemUoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1
NCw4ICszNTQsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVy
biBtX2lzVmFsaWQ7IH0KICAgICBib29sIGhhc1BheWxvYWQoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxib29sPihtX3BheWxvYWQpOyB9Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4m
IHBheWxvYWQoKSBjb25zdCYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52
YWx1ZSgpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSAmIHsgQVNTRVJUKG1f
cGF5bG9hZCk7IHJldHVybiBtX3BheWxvYWQudmFsdWUoKTsgfQorICAgIGNvbnN0IFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0JiB7IEFTU0VSVChtX3BheWxvYWQp
OyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mIHBheWxvYWQoKSAmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxvYWQu
dmFsdWUoKTsgfQogICAgIGJvb2wgaGFzVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZS5oYXNf
dmFsdWUoKTsgfQogICAgIFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGUgdHlwZSgpIGNvbnN0
IHsgQVNTRVJUKG1fdHlwZSk7IHJldHVybiBtX3R5cGUudmFsdWUoKTsgfQogICAgIFdlYkNvcmU6
Ok1lZGlhS2V5TWVzc2FnZVR5cGUgdHlwZU9yKFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGUg
YWx0ZXJuYXRlKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPyBtX3R5cGUudmFsdWUoKSA6IGFsdGVy
bmF0ZTsgfQpAQCAtMzY0LDExICszNjQsMTEgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJv
b2wgbV9pc1ZhbGlkIHsgZmFsc2UgfTsKLSAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZm
ZXI+PiBtX3BheWxvYWQ7CisgICAgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+IG1fcGF5bG9hZDsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhS2V5TWVz
c2FnZVR5cGU+IG1fdHlwZTsKIH07CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6
Y2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
Cit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmNoYWxsZW5nZUdlbmVyYXRlZENhbGxi
YWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBQYXJz
ZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKGJ1ZmZlcik7CiAgICAgaWYg
KCFwYXJzZWRSZXNwb25zZU1lc3NhZ2UpIHsKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvblRodW5kZXI6OmtleXNVcGRhdGVEb25lQ2FsbGJhY2soKQogICAgIG1fc2Vz
c2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkK
K3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewogICAgIEdTVF9FUlJPUigiQ0RNIGVy
cm9yIik7CiAgICAgR1NUX01FTURVTVAoImVycm9yIGR1bXAiLCBtZXNzYWdlLT5kYXRhKCksIG1l
c3NhZ2UtPnNpemUoKSk7CkBAIC00ODgsNyArNDg4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkK
ICAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5
cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBp
bml0RGF0YVNoYXJlZEJ1ZmZlciwKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGFTaGFyZWRC
dWZmZXIsCiAgICAgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKQEAgLTUwNiw3ICs1MDYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
blRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBB
dAogICAgICAgICBtX2luaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpLCBtX2luaXREYXRhLnBheWxv
YWQoKS0+c2l6ZSgpLCBudWxscHRyLCAwLCAmbV90aHVuZGVyU2Vzc2lvbkNhbGxiYWNrcywgdGhp
cywgJnNlc3Npb24pOwogICAgIGlmICghc2Vzc2lvbikgewogICAgICAgICBHU1RfRVJST1IoIkNv
dWxkIG5vdCBjcmVhdGUgc2Vzc2lvbiIpOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBp
bml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKICAgICAgICAg
Y2FsbGJhY2soaW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgeyB9LCBmYWxzZSwgRmFpbGVkKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTUxNSw3ICs1MTUsNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBl
LCBjb25zdCBBdAogCiAgICAgYXV0byBnZW5lcmF0ZUNoYWxsZW5nZSA9IFt0aGlzLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5p
dERhdGEucGF5bG9hZCgpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
aW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKICAgICAgICAgaWYgKG1fc2Vzc2lvbklE
LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgR1NUX0VSUk9SKCJjb3VsZCBub3QgY3JlYXRlIHNl
c3Npb24gaWQiKTsKICAgICAgICAgICAgIGNhbGxiYWNrKGluaXREYXRhLnJlbGVhc2VOb25OdWxs
KCksIHsgfSwgZmFsc2UsIEZhaWxlZCk7CkBAIC01NDUsMTMgKzU0NSwxMyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvblRodW5kZXI6OnNlc3Npb25GYWlsdXJlKCkKICAgICBtX3Nlc3Npb25DaGFu
Z2VkQ2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRl
cjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxi
YWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAg
IEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gbV9zZXNzaW9uSUQpOwogCiAg
ICAgR1NUX1RSQUNFKCJVcGRhdGluZyBzZXNzaW9uICVzIiwgc2Vzc2lvbklELnV0ZjgoKS5kYXRh
KCkpOwogCi0gICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiByZXNwb25zZU1lc3NhZ2UpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxs
YmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1
Y2Nlc3MsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkg
bXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChz
dWNjZXNzKSB7CiAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlTWVzc2FnZSkKQEAgLTU2Miw3ICs1
NjIsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeQogICAgICAgICAgICAgICAgIFBhcnNlZFJl
c3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UocmVzcG9uc2VNZXNzYWdlKTsKICAg
ICAgICAgICAgICAgICBBU1NFUlQocGFyc2VkUmVzcG9uc2VNZXNzYWdlKTsKICAgICAgICAgICAg
ICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdlLmhhc1BheWxvYWQoKSkgewotICAgICAgICAg
ICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNw
b25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5w
YXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoImdvdCBtZXNzYWdlIG9m
IHNpemUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX01F
TURVTVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9w
dCwKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6Omxv
YWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JRAogewogICAgIEFT
U0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gbV9zZXNzaW9uSUQpOwogCi0gICAg
bV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25z
ZU1lc3NhZ2UpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5k
KFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7CiAg
ICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChzdWNjZXNzKSB7CiAg
ICAgICAgICAgICBpZiAoIXJlc3BvbnNlTWVzc2FnZSkKQEAgLTU5Nyw3ICs1OTcsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25z
dCBTdHJpbmcmIHNlc3Npb25JRAogICAgICAgICAgICAgICAgIFBhcnNlZFJlc3BvbnNlTWVzc2Fn
ZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UocmVzcG9uc2VNZXNzYWdlKTsKICAgICAgICAgICAgICAg
ICBBU1NFUlQocGFyc2VkUmVzcG9uc2VNZXNzYWdlKTsKICAgICAgICAgICAgICAgICBpZiAocGFy
c2VkUmVzcG9uc2VNZXNzYWdlLmhhc1BheWxvYWQoKSkgewotICAgICAgICAgICAgICAgICAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2Uu
cGF5bG9hZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwog
ICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoImdvdCBtZXNzYWdlIG9mIHNpemUgJXp1Iiwg
bWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX01FTURVTVAoIm1lc3Nh
Z2UiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om1ha2VfcGFpcihw
YXJzZWRSZXNwb25zZU1lc3NhZ2UudHlwZU9yKE1lZGlhS2V5TWVzc2FnZVR5cGU6OkxpY2Vuc2VS
ZXF1ZXN0KSwKQEAgLTY0MCw3ICs2NDAsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbgogewog
ICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBtX3Nlc3Npb25JRCA9PSBzZXNzaW9uSUQpOwog
Ci0gICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0
aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgICAgICBp
ZiAoIWJ1ZmZlcikKQEAgLTY0OSw3ICs2NDksNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRo
dW5kZXI6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbgog
ICAgICAgICAgICAgICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3Nh
Z2UoYnVmZmVyKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocGFyc2VkUmVzcG9uc2VNZXNzYWdl
KTsKICAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdlLmhhc1BheWxvYWQo
KSkgewotICAgICAgICAgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RG
TW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJl
c3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUco
InNlc3Npb24gJXMgcmVtb3ZlZCwgbWVzc2FnZSBsZW5ndGggJXp1IiwgbV9zZXNzaW9uSUQudXRm
OCgpLmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJh
Y2sobV9rZXlTdG9yZS5hbGxLZXlzQXMoTWVkaWFLZXlTdGF0dXM6OlJlbGVhc2VkKSwgV1RGTW92
ZShtZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwogICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0NETVRodW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oCmluZGV4IGNkZDhkYTIxMTIzYzE3OTFhZTJmYjY0
MzlmZjJkNmZhMGQyZWIyMWMuLjEwMjBlMTUzMjI3MWI1MzUxZTEwNmRkZThmMjFlYTU0MDVhOWMy
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvQ0RNVGh1bmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oCkBAIC05Myw4ICs5Myw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZl
ckNlcnRpZmljYXRlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygp
IGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsK
KyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lv
bklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiBwcml2YXRlOgpAQCAtMTEwLDcgKzEx
MCw3IEBAIHB1YmxpYzoKICAgICAvLyBDRE1JbnN0YW5jZQogICAgIEltcGxlbWVudGF0aW9uVHlw
ZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlv
blR5cGU6OlRodW5kZXI7IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihj
b25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAg
IHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0Nh
bGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lk
IHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2tleVN5c3RlbTsgfQogICAg
IFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKQEAgLTEy
Niw4ICsxMjYsOCBAQCBjbGFzcyBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyIGZpbmFsIDogcHVi
bGljIENETUluc3RhbmNlU2Vzc2lvblByb3h5IHsKIHB1YmxpYzoKICAgICBDRE1JbnN0YW5jZVNl
c3Npb25UaHVuZGVyKENETUluc3RhbmNlVGh1bmRlciYpOwogCi0gICAgdm9pZCByZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9p
ZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0
TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xv
c2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJl
bW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CkBAIC0xNDEsMTQgKzE0MSwxNCBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIENETUluc3RhbmNlVGh1bmRlciogY2RtSW5zdGFuY2VUaHVu
ZGVyKCkgY29uc3Q7CiAKLSAgICB1c2luZyBOb3RpZmljYXRpb24gPSB2b2lkIChDRE1JbnN0YW5j
ZVNlc3Npb25UaHVuZGVyOjoqKShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAg
ICB1c2luZyBOb3RpZmljYXRpb24gPSB2b2lkIChDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjoq
KShSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdXNpbmcg
Q2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKCk+OwotICAgIHVzaW5n
IFNlc3Npb25DaGFuZ2VkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGJvb2wsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYpPjsKKyAgICB1c2luZyBTZXNzaW9uQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rp
b248dm9pZChib29sLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+OwogCi0gICAg
dm9pZCBjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsK
KyAgICB2b2lkIGNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKTsKICAgICB2b2lkIGtleVVwZGF0ZWRDYWxsYmFjayhLZXlJRFR5cGUmJik7
CiAgICAgdm9pZCBrZXlzVXBkYXRlRG9uZUNhbGxiYWNrKCk7Ci0gICAgdm9pZCBlcnJvckNhbGxi
YWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgZXJyb3JDYWxsYmFjayhSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uOjpL
ZXlTdGF0dXMgc3RhdHVzKGNvbnN0IEtleUlEVHlwZSYpIGNvbnN0OwogICAgIHZvaWQgc2Vzc2lv
bkZhaWx1cmUoKTsKIApAQCAtMTU5LDcgKzE1OSw3IEBAIHByaXZhdGU6CiAgICAgSW5pdERhdGEg
bV9pbml0RGF0YTsKICAgICBPcGVuQ0RNU2Vzc2lvbkNhbGxiYWNrcyBtX3RodW5kZXJTZXNzaW9u
Q2FsbGJhY2tzIHsgfTsKICAgICBCb3hQdHI8T3BlbkNETVNlc3Npb24+IG1fc2Vzc2lvbjsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX21lc3NhZ2U7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IG1fbWVzc2FnZTsKICAgICBib29sIG1fbmVlZHNJbmRpdmlkdWFsaXphdGlv
biB7IGZhbHNlIH07CiAgICAgVmVjdG9yPENoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrPiBtX2No
YWxsZW5nZUNhbGxiYWNrczsKICAgICBWZWN0b3I8U2Vzc2lvbkNoYW5nZWRDYWxsYmFjaz4gbV9z
ZXNzaW9uQ2hhbmdlZENhbGxiYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmNwcAppbmRleCBjYWE1MGVkNWMzYzM5OTgzMjJkNGEyYzI3NjI1NmUxODAxZjFl
YmIxLi5lYTg5MGY2N2RhMjEzODdmNDBkYTY1MWEwY2E1YzczNDkzZTg0ZjY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1l
ckVNRVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCkBAIC0zMiw3ICszMiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEdNYXJrdXBQYXJzZUNvbnRleHRVc2VyRGF0
YSB7CiAgICAgYm9vbCBpc1BhcnNpbmdQc3NoIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gcHNzaDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwc3NoOwog
fTsKIAogc3RhdGljIHZvaWQgbWFya3VwU3RhcnRFbGVtZW50KEdNYXJrdXBQYXJzZUNvbnRleHQq
LCBjb25zdCBnY2hhciogZWxlbWVudE5hbWUsIGNvbnN0IGdjaGFyKiosIGNvbnN0IGdjaGFyKios
IGdwb2ludGVyIHVzZXJEYXRhUHRyLCBHRXJyb3IqKikKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGlj
IHZvaWQgbWFya3VwVGV4dChHTWFya3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIHRleHQs
IGdzaXplIHRleHRMZW5ndGgKICAgICBpZiAodXNlckRhdGEtPmlzUGFyc2luZ1Bzc2gpIHsKICAg
ICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHBzc2ggPSBiYXNlNjREZWNvZGUo
dGV4dCwgdGV4dExlbmd0aCk7CiAgICAgICAgIGlmIChwc3NoLmhhc192YWx1ZSgpKQotICAgICAg
ICAgICAgdXNlckRhdGEtPnBzc2ggPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZSgqcHNzaCkpOworICAgICAgICAgICAgdXNlckRhdGEtPnBzc2ggPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CiAgICAgfQogfQogCkBAIC03MSw5ICs3MSw5IEBAIHN0
YXRpYyB2b2lkIG1hcmt1cEVycm9yKEdNYXJrdXBQYXJzZUNvbnRleHQqLCBHRXJyb3IqLCBncG9p
bnRlcikKIAogc3RhdGljIEdNYXJrdXBQYXJzZXIgbWFya3VwUGFyc2VyIHsgbWFya3VwU3RhcnRF
bGVtZW50LCBtYXJrdXBFbmRFbGVtZW50LCBtYXJrdXBUZXh0LCBtYXJrdXBQYXNzdGhyb3VnaCwg
bWFya3VwRXJyb3IgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RD
ZW5jSWZOZWVkZWQoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXls
b2FkKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2Vu
Y0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQogewotICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNl
ZFBheWxvYWQpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVu
cGFyc2VkUGF5bG9hZCk7CiAgICAgaWYgKCFwYXlsb2FkIHx8ICFwYXlsb2FkLT5zaXplKCkpCiAg
ICAgICAgIHJldHVybiBwYXlsb2FkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVV
dGlsaXRpZXMuaAppbmRleCA2NmUyOTc5ZTNlY2YyZWQ2OTYyYWQyYWI1MGFjNDlkYjU4NDVkMDdh
Li4yN2RkNGVhZTBkMmUwMWFiNGQ4NGMwYWJjNDI0ZWJiMTAxMDRjMDRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVN
RVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25O
dWxsKCkpOwogICAgIH0KIAotICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKKyAgICBJbml0RGF0YShjb25zdCBTdHJpbmcm
IHN5c3RlbUlkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAg
ICAgICA6IG1fc3lzdGVtSWQoc3lzdGVtSWQpCiAgICAgewogICAgICAgICBpZiAocGF5bG9hZCkg
ewpAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQoKmlu
aXREYXRhLnBheWxvYWQoKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5
bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZC5nZXQoKTsgfQorICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkLmdl
dCgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3lz
dGVtSWQ7IH0KICAgICBTdHJpbmcgcGF5bG9hZENvbnRhaW5lclR5cGUoKSBjb25zdAogICAgIHsK
QEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gImNlbmMiX3M7CiAgICAg
fQogCi0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQo
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcAppbmRleCA1NjRlMWU3NTQ0YTU4M2Y0MThlMGRlYmUwZTI1Y2U2YjRi
ZjU0Nzk5Li5iZDExM2JiNmMyNzMxZmExOWFkZGVmZDMzYTk5ZDQ2YmI0YTFmNGEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEZvbnRQbGF0Zm9ybURh
dGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVz
Y3JpcHRpb24mCiAgICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEoZm9udC5nZXQoKSwgc2l6ZSwg
Ym9sZCwgaXRhbGljLCBvcmllbnRhdGlvbiwgd2lkdGhWYXJpYW50LCBmb250RGVzY3JpcHRpb24u
dGV4dFJlbmRlcmluZ01vZGUoKSwgJmNyZWF0aW9uRGF0YSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0
aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRl
bUluQ29sbGVjdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhID0g
YnVmZmVyLmNyZWF0ZUNGRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3
YmM2NjdlNDY5YjAwNjE1MWViMjViNzljODg2OWY3NmEzMmYwMDcxLi42OTI4YTYzZTk3MWM3YzM1
ZTg4NDRlZWY3M2JmYTQ0YThkOGMwMzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAg
LTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRm9udENyZWF0aW9uQ29u
dGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lm
aWVkQ2FwYWJpbGl0aWVzOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0
aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5n
czsKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0
aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitXRUJDT1JFX0VYUE9SVCBz
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1h
dGhEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlTWF0aERhdGEuY3BwCmluZGV4IGI0MTc5MjNlNmQ3NWY5M2NmZDFlNGNjMzFmODUwMzZl
MWM2MmY0YzIuLjVkODhjZDc3Njg5OGMwNWE5MDM1ODllMmQ0YmFjNzMwYWExZGY5OTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
TWF0aERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0cnVjdCBNYXRoSXRh
bGljc0NvcnJlY3Rpb25JbmZvIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpV
SW50MTYgaXRhbGljc0NvcnJlY3Rpb25Db3VudDsKICAgICBPcGVuVHlwZTo6TWF0aFZhbHVlUmVj
b3JkIGl0YWxpY3NDb3JyZWN0aW9uWzFdOyAvLyBUaGVyZSBhcmUgaXRhbGljc0NvcnJlY3Rpb25D
b3VudCBpdGFsaWMgY29ycmVjdGlvbiB2YWx1ZXMuCiAKLSAgICBpbnQxNl90IGdldEl0YWxpY0Nv
cnJlY3Rpb24oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlw
aCkgY29uc3QKKyAgICBpbnQxNl90IGdldEl0YWxpY0NvcnJlY3Rpb24oY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIEdseXBoIGdseXBoKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qg
Y291bnQgPSB1aW50MTZfdChpdGFsaWNzQ29ycmVjdGlvbkNvdW50KTsKICAgICAgICAgaWYgKCFp
c1ZhbGlkRW5kKGJ1ZmZlciwgJml0YWxpY3NDb3JyZWN0aW9uW2NvdW50XSkpCkBAIC05Myw3ICs5
Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhJbmZvIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9w
ZW5UeXBlOjpPZmZzZXQgZXh0ZW5kZWRTaGFwZUNvdmVyYWdlT2Zmc2V0OwogICAgIE9wZW5UeXBl
OjpPZmZzZXQgbWF0aEtlcm5JbmZvT2Zmc2V0OwogCi0gICAgY29uc3QgTWF0aEl0YWxpY3NDb3Jy
ZWN0aW9uSW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9u
SW5mbyogbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhJdGFsaWNzQ29y
cmVjdGlvbkluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0xMjAsNyArMTIwLDcg
QEAgc3RydWN0IEdseXBoQXNzZW1ibHkgOiBUYWJsZUJhc2UgewogICAgICAgICBQYXJ0RmxhZ3NF
eHRlbmRlciA9IDB4MDEKICAgICB9OwogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6
OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAgdm9pZCBnZXRBc3NlbWJs
eVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0
YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAgICAgIHVp
bnQxNl90IGNvdW50ID0gcGFydENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVy
LCAmcGFydFJlY29yZHNbY291bnRdKSkKQEAgLTE0Myw3ICsxNDMsNyBAQCBzdHJ1Y3QgTWF0aEds
eXBoQ29uc3RydWN0aW9uIDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6OlVJbnQxNiBh
ZHZhbmNlTWVhc3VyZW1lbnQ7CiAgICAgfSBtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1sxXTsgLy8g
VGhlcmUgYXJlIHZhcmlhbnRDb3VudCBNYXRoR2x5cGhWYXJpYW50UmVjb3JkJ3MuCiAKLSAgICB2
b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIs
IFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBjb25zdAorICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRz
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29u
c3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdmFyaWFudENvdW50OwogICAgICAg
ICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoVmFyaWFudFJlY29yZHNbY291bnRd
KSkKQEAgLTE1Myw3ICsxNTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoQ29uc3RydWN0aW9uIDogVGFi
bGVCYXNlIHsKICAgICAgICAgICAgIHZhcmlhbnRzW2ldID0gbWF0aEdseXBoVmFyaWFudFJlY29y
ZHNbaV0udmFyaWFudEdseXBoOwogICAgIH0KIAotICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhE
YXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNz
ZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0
aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CiAgICAgewogICAgICAg
ICB1aW50MTZfdCBvZmZzZXQgPSBnbHlwaEFzc2VtYmx5T2Zmc2V0OwogICAgICAgICBjb25zdCBH
bHlwaEFzc2VtYmx5KiBnbHlwaEFzc2VtYmx5ID0gdmFsaWRhdGVPZmZzZXQ8R2x5cGhBc3NlbWJs
eT4oYnVmZmVyLCBvZmZzZXQpOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHN0cnVjdCBNYXRoVmFyaWFu
dHMgOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBob3Jpem9udGFs
R2x5cGhDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlwaENvbnN0cnVjdGlvbnNP
ZmZzZXRbMV07IC8vIFRoZXJlIGFyZSB2ZXJ0aWNhbEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGgg
Y29udHJ1Y3Rpb25zIGFuZCBob3Jpem9udGFsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlwaCBjb250
cnVjdGlvbnMuCiAKLSAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1hdGhHbHlwaENv
bnN0cnVjdGlvbihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGds
eXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CisgICAgY29uc3QgTWF0aEdseXBoQ29uc3RydWN0
aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIEds
eXBoIGdseXBoLCBib29sIGlzVmVydGljYWwpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MzJf
dCBjb3VudCA9IHVpbnQxNl90KHZlcnRpY2FsR2x5cGhDb3VudCkgKyB1aW50MTZfdChob3Jpem9u
dGFsR2x5cGhDb3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5
cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0W2NvdW50XSkpCkBAIC0yMDQsNyArMjA0LDcgQEAgc3RydWN0
IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5cGhJ
bmZvT2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aFZhcmlhbnRzT2Zmc2V0OwogCi0g
ICAgY29uc3QgTWF0aENvbnN0YW50cyogbWF0aENvbnN0YW50cyhjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aENvbnN0YW50cyogbWF0aENv
bnN0YW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAg
IHVpbnQxNl90IG9mZnNldCA9IG1hdGhDb25zdGFudHNPZmZzZXQ7CiAgICAgICAgIGlmIChvZmZz
ZXQpCkBAIC0yMTIsNyArMjEyLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhHbHlwaEluZm8q
IG1hdGhHbHlwaEluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAorICAgIGNvbnN0IE1hdGhHbHlwaEluZm8qIG1hdGhHbHlwaEluZm8oY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRo
R2x5cGhJbmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjIwLDcgKzIyMCw3IEBA
IHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICBjb25zdCBNYXRoVmFyaWFudHMqIG1hdGhWYXJpYW50cyhjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aFZhcmlhbnRz
KiBtYXRoVmFyaWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewog
ICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoVmFyaWFudHNPZmZzZXQ7CiAgICAgICAgIGlm
IChvZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKaW5kZXggM2ZmNjZkMzExODJlNWM0YjM2
ZGQzZjMzMDdhNjg0Yjk1ZDk1OTNlMy4uMjk5MGJmYjAzZjU2MTk0NTc3ZmRkNDQ3NmYxNDQ5NGFi
MTgwMzVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaApAQCAtNDAsNyArNDAsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7CiAKIGNs
YXNzIE9wZW5UeXBlTWF0aERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxPcGVuVHlwZU1hdGhEYXRh
PiB7CkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBPcGVuVHlwZU1h
dGhEYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKIAogI2lmIEVOQUJMRShPUEVOVFlQRV9N
QVRIKQotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7Cisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOwogI2VsaWYgVVNFKEhBUkZCVVpa
KQogICAgIEhiVW5pcXVlUHRyPGhiX2ZvbnRfdD4gbV9tYXRoRm9udDsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVU
eXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVUeXBlcy5oCmluZGV4IDMwNDk2M2E1ZGU5MGM4MWM4ZDYzMDkxMjY3Nzg4NzUzMWQ4NmQyYWYu
LmM4NjRiMmMzYThmYjFhZTM3NjMwOTNlZTUwNTViMzY1MWVmMDEyNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5
cGVzLmgKQEAgLTczLDcgKzczLDcgQEAgdHlwZWRlZiBVSW50MTYgR2x5cGhJRDsKIHR5cGVkZWYg
dWludDMyX3QgVGFnOwogI2RlZmluZSBPVF9NQUtFX1RBRyhjaDEsIGNoMiwgY2gzLCBjaDQpICgo
KCh1aW50MzJfdCkoY2g0KSkgPDwgMjQpIHwgKCgodWludDMyX3QpKGNoMykpIDw8IDE2KSB8ICgo
KHVpbnQzMl90KShjaDIpKSA8PCA4KSB8ICgodWludDMyX3QpKGNoMSkpKQogCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNpemVfdCBjb3VudCA9IDEpCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKIHsKICAgICBpZiAoIWJ1
ZmZlciB8fCBidWZmZXItPnNpemUoKSA8IHNpemVvZihUKSAqIGNvdW50KQogICAgICAgICByZXR1
cm4gMDsKQEAgLTgyLDcgKzgyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25z
dCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxDb250aWd1b3VzU2hhcmUKIAogc3RydWN0
IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQor
ICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgaWYgKHBvc2l0aW9uIDwgYnVmZmVy
LmRhdGEoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTkwLDcgKzkwLDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICByZXR1cm4gb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCk7IC8vICI8PSIg
YmVjYXVzZSBlbmQgaXMgaW5jbHVkZWQgYXMgdmFsaWQKICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlUHRyKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCiAgICAgewogICAgICAgICBjb25zdCBU
KiBjYXN0ZWQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihwb3NpdGlvbik7CiAgICAgICAg
IGlmICghaXNWYWxpZEVuZChidWZmZXIsICZjYXN0ZWRbMV0pKQpAQCAtOTgsNyArOTgsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBjYXN0ZWQ7CiAgICAgfQogCi0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRlT2Zmc2V0KGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAorICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgdWludDE2X3Qgb2Zmc2V0KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHZhbGlk
YXRlUHRyPFQ+KGJ1ZmZlciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQ4X3QqPih0aGlzKSAr
IG9mZnNldCk7CiAgICAgfQpAQCAtMTI3LDcgKzEyNyw3IEBAIHN0cnVjdCBDb3ZlcmFnZTJUYWJs
ZSA6IENvdmVyYWdlVGFibGUgewogI2lmIEVOQUJMRShPUEVOVFlQRV9NQVRIKQogc3RydWN0IFRh
YmxlV2l0aENvdmVyYWdlIDogVGFibGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBib29sIGdldENv
dmVyYWdlSW5kZXgoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBD
b3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUlu
ZGV4KSBjb25zdAorICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50
MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAoY292ZXJh
Z2UtPmNvdmVyYWdlRm9ybWF0KSB7CiAgICAgICAgIGNhc2UgMTogeyAvLyBDb3ZlcmFnZSBGb3Jt
YXQgMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCmluZGV4IDNjYTcyN2FhZmJkMmNhZDRi
ZTEwNmYxZGM0YzNmMmU3ZGQ0NDgwNWYuLjMyMTZiN2VmMDZlOWE0ODAwOTkxNTkyMzA1NmFjYTNm
Y2JmOTJkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKQEAgLTE5OSw3ICsxOTks
NyBAQCB2b2lkIEVPVEhlYWRlcjo6YXBwZW5kUGFkZGluZ1Nob3J0KCkKIAogLy8gYWRkcyBmb250
TmFtZSB0byB0aGUgZm9udCB0YWJsZSBpbiBmb250RGF0YSwgYW5kIHdyaXRlcyB0aGUgbmV3IGZv
bnQgdGFibGUgdG8gcmV3cml0dGVuRm9udFRhYmxlCiAvLyByZXR1cm5zIHRoZSBzaXplIG9mIHRo
ZSBuYW1lIHRhYmxlICh3aGljaCBpcyB1c2VkIGJ5IHJlbmFtZUFuZEFjdGl2YXRlRm9udCksIG9y
IDAgb24gZWFybHkgYWJvcnQKLWJvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+
JiByZXdyaXR0ZW5Gb250RGF0YSkKK2Jvb2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXIm
IGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWludDhfdD4mIHJld3Jp
dHRlbkZvbnREYXRhKQogewogICAgIHNpemVfdCBvcmlnaW5hbERhdGFTaXplID0gZm9udERhdGEu
c2l6ZSgpOwogICAgIGNvbnN0IHNmbnRIZWFkZXIqIHNmbnQgPSByZWludGVycHJldF9jYXN0PGNv
bnN0IHNmbnRIZWFkZXIqPihmb250RGF0YS5kYXRhKCkpOwpAQCAtMjY2LDcgKzI2Niw3IEBAIGJv
b2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29u
c3QgU3RyaW5nJiBmb250TmFtZSwKIH0KIAogLy8gUmVuYW1lIHRoZSBmb250IGFuZCBpbnN0YWxs
IHRoZSBuZXcgZm9udCBkYXRhIGludG8gdGhlIHN5c3RlbQotUmVmUHRyPEZvbnRNZW1vcnlSZXNv
dXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQorUmVmUHRyPEZvbnRNZW1vcnlSZXNv
dXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEs
IGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJld3JpdHRl
bkZvbnREYXRhOwogICAgIGlmICghcmVuYW1lRm9udChmb250RGF0YSwgZm9udE5hbWUsIHJld3Jp
dHRlbkZvbnREYXRhKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCmluZGV4IDIyYmUyMzBhNjA1
YzY2YTBlZjViYzE0OGEyNjI3OTdkMzcyYzJhYzQuLmZhMDAwODExNjA2Njk3ZGM1YzUxMTIzMzNj
OTBjOGM5MmI0YjY3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaApAQCAtMzUsMTAgKzM1
LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBCaWdFbmRpYW5VU2hvcnQ7Ci1j
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0
IEVPVFByZWZpeDsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBFT1RIZWFkZXIgewog
ICAgIEVPVEhlYWRlcigpOwpAQCAtNTUsOCArNTUsOCBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjx1
aW50OF90LCA1MTI+IG1fYnVmZmVyOwogfTsKIAotYm9vbCByZW5hbWVGb250KGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKLVJl
ZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7Citib29sIHJlbmFtZUZvbnQoY29u
c3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7CitSZWZQ
dHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVWZXJ0aWNhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCmluZGV4IDc5ZTllZmUwNjA1MzM1NzllOWNh
M2JjMTAzMjM4YmZkMjgyZjcxNWMuLjBmYThmMzA2YWQ5NTJkMDZhMDkyOTdkMGIxZDI4N2I4OTg4
MzJhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKQEAgLTExNiw3ICsx
MTYsNyBAQCBzdHJ1Y3QgU3Vic3RpdHV0aW9uU3ViVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9w
ZW5UeXBlOjpVSW50MTYgc3Vic3RGb3JtYXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBjb3ZlcmFn
ZU9mZnNldDsKIAotICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8
Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNldCk7IH0KKyAgICBjb25zdCBDb3Zl
cmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyBy
ZXR1cm4gdmFsaWRhdGVPZmZzZXQ8Q292ZXJhZ2VUYWJsZT4oYnVmZmVyLCBjb3ZlcmFnZU9mZnNl
dCk7IH0KIH07CiAKIHN0cnVjdCBTaW5nbGVTdWJzdGl0dXRpb24yU3ViVGFibGUgOiBTdWJzdGl0
dXRpb25TdWJUYWJsZSB7CkBAIC0xMzEsNyArMTMxLDcgQEAgc3RydWN0IExvb2t1cFRhYmxlIDog
VGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IHN1YlRhYmxlT2Zmc2V0c1sxXTsKICAg
ICAvLyBPcGVuVHlwZTo6VUludDE2IG1hcmtGaWx0ZXJpbmdTZXQ7IHRoaXMgZmllbGQgY29tZXMg
YWZ0ZXIgdmFyaWFibGUgbGVuZ3RoLCBzbyBvZmZzZXQgaXMgZGV0ZXJtaW5lZCBkeW5hbWljYWxs
eS4KIAotICAgIGJvb2wgZ2V0U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1h
cCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wg
Z2V0U3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudFN1YlRh
YmxlID0gc3ViVGFibGVDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnN1
YlRhYmxlT2Zmc2V0c1tjb3VudFN1YlRhYmxlXSkpCkBAIC0xOTQsNyArMTk0LDcgQEAgc3RydWN0
IExvb2t1cExpc3QgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwQ291
bnQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBsb29rdXBPZmZzZXRzWzFdOwogCi0gICAgY29uc3Qg
TG9va3VwVGFibGUqIGxvb2t1cCh1aW50MTZfdCBpbmRleCwgY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWlu
dDE2X3QgaW5kZXgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgdWludDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKGluZGV4ID49
IGNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1cE9mZnNldHNbY291bnRdKSkKQEAg
LTIwOCw3ICsyMDgsNyBAQCBzdHJ1Y3QgRmVhdHVyZVRhYmxlIDogVGFibGVCYXNlIHsKICAgICBP
cGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3Vw
TGlzdEluZGV4WzFdOwogCi0gICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9v
a3VwTGlzdCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldEdseXBoU3Vic3Rp
dHV0aW9ucyhjb25zdCBMb29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4q
IG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1
aW50MTZfdCBjb3VudCA9IGxvb2t1cENvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVm
ZmVyLCAmbG9va3VwTGlzdEluZGV4W2NvdW50XSkpCkBAIC0yMjksNyArMjI5LDcgQEAgc3RydWN0
IEZlYXR1cmVMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0
dXJlT2Zmc2V0OwogICAgIH0gZmVhdHVyZXNbMV07CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUq
IGZlYXR1cmUodWludDE2X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBm
ZWF0dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGZlYXR1
cmVDb3VudDsKICAgICAgICAgaWYgKGluZGV4ID49IGNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZl
ciwgJmZlYXR1cmVzW2NvdW50XSkpCkBAIC0yMzksNyArMjM5LDcgQEAgc3RydWN0IEZlYXR1cmVM
aXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgY29uc3Qg
RmVhdHVyZVRhYmxlKiBmaW5kRmVhdHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSog
ZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAogICAgIHsKICAgICAgICAgZm9yICh1aW50MTZfdCBpID0gMDsgaSA8IGZlYXR1cmVD
b3VudDsgKytpKSB7CiAgICAgICAgICAgICBpZiAoaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJl
c1tpXSkgJiYgZmVhdHVyZXNbaV0uZmVhdHVyZVRhZyA9PSB0YWcpCkBAIC0yNTUsNyArMjU1LDcg
QEAgc3RydWN0IExhbmdTeXNUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQx
NiBmZWF0dXJlQ291bnQ7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBmZWF0dXJlSW5kZXhbMV07CiAK
LSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFn
LCBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5
cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZXMsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQg
PSBmZWF0dXJlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJl
SW5kZXhbY291bnRdKSkKQEAgLTI3Nyw3ICsyNzcsNyBAQCBzdHJ1Y3QgU2NyaXB0VGFibGUgOiBU
YWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxhbmdTeXNPZmZzZXQ7CiAgICAg
fSBsYW5nU3lzUmVjb3Jkc1sxXTsKIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExh
bmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNv
bnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxhbmdTeXNDb3VudDsK
ICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxhbmdTeXNSZWNvcmRzW2NvdW50XSkp
CkBAIC0yOTgsNyArMjk4LDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAg
ICAgICBPcGVuVHlwZTo6T2Zmc2V0IHNjcmlwdE9mZnNldDsKICAgICB9IHNjcmlwdHNbMV07CiAK
LSAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0VGFi
bGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENvdW50OwogICAg
ICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzEwLDcg
KzMxMCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogCi0gICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3JpcHQoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRh
YmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYgKCFj
b3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZzY3JpcHRzW2NvdW50XSkpCkBAIC0zMjEsNyAr
MzIxLDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4g
dmFsaWRhdGVPZmZzZXQ8U2NyaXB0VGFibGU+KGJ1ZmZlciwgc2NyaXB0c1swXS5zY3JpcHRPZmZz
ZXQpOwogICAgIH0KIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdT
eXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CiAgICAgewogICAgICAgICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0VGFibGUgPSBkZWZhdWx0
U2NyaXB0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0VGFibGUpCkBAIC0zMzYsMTEgKzMz
NiwxMSBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zm
c2V0IGZlYXR1cmVMaXN0T2Zmc2V0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwTGlzdE9m
ZnNldDsKIAotICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3Jp
cHRMaXN0PihidWZmZXIsIHNjcmlwdExpc3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgRmVhdHVyZUxp
c3QqIGZlYXR1cmVMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxp
c3RPZmZzZXQpOyB9Ci0gICAgY29uc3QgTG9va3VwTGlzdCogbG9va3VwTGlzdChjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0
PExvb2t1cExpc3Q+KGJ1ZmZlciwgbG9va3VwTGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBTY3Jp
cHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJl
dHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRMaXN0PihidWZmZXIsIHNjcmlwdExpc3RPZmZzZXQp
OyB9CisgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVMaXN0KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVm
ZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBM
aXN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9m
ZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CiAKLSAgICBjb25z
dCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lz
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3Qg
U2NyaXB0TGlzdCogc2NyaXB0cyA9IHNjcmlwdExpc3QoYnVmZmVyKTsKICAgICAgICAgaWYgKCFz
Y3JpcHRzKQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2Ug
ewogICAgICAgICByZXR1cm4gc2NyaXB0cy0+ZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICB9
CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJl
VGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29u
c3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25zdCBMYW5nU3lz
VGFibGUqIGxhbmdTeXMgPSBkZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwogICAgICAgICBjb25zdCBG
ZWF0dXJlTGlzdCogZmVhdHVyZXMgPSBmZWF0dXJlTGlzdChidWZmZXIpOwpAQCAtMzY1LDcgKzM2
NSw3IEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gZmVh
dHVyZTsKICAgICB9CiAKLSAgICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhh
c2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNo
TWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CiAgICAgewogICAgICAgICBjb25zdCBGZWF0dXJlVGFibGUqIHZlcnRpY2FsRmVhdHVyZVRhYmxl
ID0gZmVhdHVyZShPcGVuVHlwZTo6VmVydEZlYXR1cmVUYWcsIGJ1ZmZlcik7CiAgICAgICAgIGlm
ICghdmVydGljYWxGZWF0dXJlVGFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oCmluZGV4IGE2Mjcx
OWIxNzE5YTc0Zjk3NjkyMjE5ZGY1ZjdhYWVkYzQ5MDY0NjYuLjBkYjRhZmFkYjNmNzQyYjgzYTRl
MTZjZjM3MTg3MGEyYjA0MDRlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oCkBAIC00Myw3ICs0
Myw3IEBAIGVudW0gRFdSSVRFX0ZPTlRfU1RSRVRDSDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBEaXJlY3RXcml0ZSB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCA4YmUxYjFhMzNhNjIwNWMxODFjZWZmMWFjMzQzNGJj
ODdhNzgzYmU1Li5jODY4M2E3ZWY1ODljM2ZlNjU0ZDg0NTcxMjk1ZTI0MGQyMjQ0OWU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIFN0
cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
aXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRh
PiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3Jl
YXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFj
dGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmlu
ZGV4IGZjMDRmMTc1Yzc4OGI5YmU5OThmNWYzYjcxMWY1OTdjMDI2YmJmOWUuLjA4ZmM5ZjE5ZWFl
YTk0ODNlYTU4ZWMxYWVlZGQ0NTcyNTZjZTI3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aApAQCAtMzYsMTMgKzM2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dGb250UmVmOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9u
dERlc2NyaXB0aW9uOwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwogc3RydWN0IEZvbnRTZWxl
Y3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZv
bnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC02NSw3ICs2NSw3
IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25E
YXRhOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAppbmRleCBmNGZiZjdhN2Y0
ZDdjODNmZjIxMTZjMzFlNTQ2Y2E5MWUwNTg5Y2IxLi4zYzFkNGUyZjNjNzU0YTczYTgyM2EwMGMx
Njc0ZWMzMDQ0OTMxMTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNw
cApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkK
ICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikK
IHsKICAgICBTdHJpbmcgZm9udE5hbWUgPSBjcmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAgIGF1
dG8gZm9udFJlc291cmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQ
bGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAppbmRleCA0YzY3NGM0NzQzYmMwMTE4
YTk3MDEwY2M2OTI4OWI1ODZkYmIwY2QxLi4zMWExZTVjNTMxZjIwOTAzYzVjZmIzMjg2MGJhNWVm
MjA2NGU5M2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcApAQCAtOTgsNyAr
OTgsNyBAQCBib29sIEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtSXNFcXVhbChjb25zdCBGb250
UGxhdGZvcm1EYXRhJiBvdGhlcikgY29uc3QKICAgICAgICAgJiYgbV91c2VHREkgPT0gb3RoZXIu
bV91c2VHREk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZv
cm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkg
Y29uc3QKIHsKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZv
cm1EYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
UGxhdGZvcm1EYXRhV2luLmNwcAppbmRleCA0MzljZjg2M2I4NzNkYzljZjdmODEwNTk5ZTVhNjAx
ZTdmNzM3OTk3Li42Y2I1NTExMDRhOTNiZGJkMjJiNDE3YTQ1NDZkMjBmYWQwZTJhMzRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3Jt
RGF0YVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRQbGF0Zm9ybURhdGFXaW4uY3BwCkBAIC01OSwxOCArNTksMTggQEAgRm9udFBsYXRmb3JtRGF0
YTo6Rm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+IGZvbnQsIGZsb2F0IHNpemUsIGJv
b2wgYm9sZCwKICAgICBSZXN0b3JlREMoaGRjLCAtMSk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWlu
dDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRh
OjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgSFdu
ZERDIGhkYygwKTsKICAgICBIR0RJT0JKIG9sZEZvbnQgPSBTZWxlY3RPYmplY3QoaGRjLCBoZm9u
dCgpKTsKIAogICAgIERXT1JEIHNpemUgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAwLCAw
KTsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoc2l6ZSAhPSBHRElfRVJST1IpIHsKICAg
ICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoc2l6ZSk7CiAgICAgICAgIERXT1JEIHJlc3VsdCA9
IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIChQVk9JRClkYXRhLmRhdGEoKSwgc2l6ZSk7CiAg
ICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQgPT0gc2l6ZSk7Ci0gICAgICAgIGJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAg
ICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAg
fQogCiAgICAgU2VsZWN0T2JqZWN0KGhkYywgb2xkRm9udCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJE
LmNwcAppbmRleCA2MjllMGU2MWExMDRjNTY3YTFkNGVkY2I3ZTU3OTdkY2Y2N2M2ZThlLi43NzM1
NzM5YjkzMzRmNDRkOTlhM2YxMmZmYzViZjdiNDFmN2NjNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJl
Y3QyRC5jcHAKQEAgLTI3Miw3ICsyNzIsNyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2Rl
ckRpcmVjdDJEOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YgogICAg
IHJldHVybiBiaXRtYXA7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnNldERhdGEo
U2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQ6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKaW5kZXggNGY0NzI1ODZiNDI0YmRhMWNmNmZhMDE0
M2NiYTIzZDAzMDAxNmU0NS4uYzIzNjVmZDc0NGM2MTE4YzE5OTllMDViODAyZWQ1YjQ4ZjM2NDgy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgSW1hZ2VE
ZWNvZGVyRGlyZWN0MkQgZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKIHB1YmxpYzoKICAg
ICBJbWFnZURlY29kZXJEaXJlY3QyRCgpOwogCi0gICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJE
aXJlY3QyRD4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKKyAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2RlckRpcmVjdDJEPiBjcmVh
dGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVj
b2RlckRpcmVjdDJEKCkpOwogICAgIH0KQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogCiAgICAg
UGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBs
aW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlv
bnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsK
IAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
ZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNsZWFyRnJh
bWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAppbmRleCAwZDg4MjBlOWYzZDZmZDc3
MzVkNTcwYjM2NDE0ODhmNTNiZDdlY2U5Li4yZDk3MjcwYTczNDgzNDg5M2U3OGM4MWZmMGVjNWJi
NWRmZWMzZjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZVdpbi5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKIAogLy8gVGhpcyBmdW5jdGlvbiBsb2FkcyByZXNvdXJjZXMgZnJvbSBXZWJLaXQKLVJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hh
ciopOworUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJj
ZUludG9CdWZmZXIoY29uc3QgY2hhciopOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCmluZGV4IDdlM2IzNjMyYjkw
YzYxOTQxNWU0OGE1MmEyMjU4YjE0MmUwMDFhNTcuLmNmMmI1MWY2ZjAyODM3YTExMDZmNGQ5OTlm
MmYxMzBlMjU4MDk4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9T
ZWxlY3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlv
bkRhdGEuaApAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDYW5TbWFydFJl
cGxhY2UoYm9vbCBjYW5TbWFydFJlcGxhY2UpIHsgbV9jYW5TbWFydFJlcGxhY2UgPSBjYW5TbWFy
dFJlcGxhY2U7IH0KICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FuU21hcnRSZXBsYWNlOyB9CiAKLSAgICB2b2lkIHNldEN1c3RvbURhdGEoUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVy
KTsgfQotICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2N1c3RvbURhdGEuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEN1c3RvbURhdGEoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RGTW92ZShidWZmZXIpOyB9
CisgICAgU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21E
YXRhLmdldCgpOyB9CiAgICAgYm9vbCBoYXNDdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gISFt
X2N1c3RvbURhdGE7IH0KICAgICB2b2lkIGNsZWFyQ3VzdG9tRGF0YSgpIHsgbV9jdXN0b21EYXRh
ID0gbnVsbHB0cjsgfQogCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0
cmluZz4gbV9maWxlbmFtZXM7CiAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOwogICAgIGJvb2wg
bV9jYW5TbWFydFJlcGxhY2UgeyBmYWxzZSB9OwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBtX2N1c3RvbURhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jdXN0b21E
YXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29k
ZXIuY3BwCmluZGV4IGQ5NTZkOWU3NjI1ZDViYjVhNzBmMDY5M2U3Nzk4ZWU5MDg0OWYxNjUuLjMz
Yzk1ZWMzMzMzYTkyMGM2NGEwMTgxNzUxZWI0YTUwNWVmMWE3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUlt
YWdlRGVjb2Rlci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBu
YW1lc3BhY2UgewogCi1zdGF0aWMgdW5zaWduZWQgY29weUZyb21TaGFyZWRCdWZmZXIoY2hhciog
YnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgc2hhcmVk
QnVmZmVyKQorc3RhdGljIHVuc2lnbmVkIGNvcHlGcm9tU2hhcmVkQnVmZmVyKGNoYXIqIGJ1ZmZl
ciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBz
aGFyZWRCdWZmZXIpCiB7CiAgICAgdW5zaWduZWQgYnl0ZXNFeHRyYWN0ZWQgPSAwOwogICAgIGZv
ciAoY29uc3QgYXV0byYgZWxlbWVudCA6IHNoYXJlZEJ1ZmZlcikgewpAQCAtMTM1LDcgKzEzNSw3
IEBAIGJvb2wgbWF0Y2hlc0NVUlNpZ25hdHVyZShjaGFyKiBjb250ZW50cykKIAogfQogCi1SZWZQ
dHI8U2NhbGFibGVJbWFnZURlY29kZXI+IFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGUoU2hh
cmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8U2NhbGFibGVJ
bWFnZURlY29kZXI+IFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBsZW5ndGhPZkxvbmdlc3RTaWduYXR1cmUgPSAxNDsgLy8gVG8gd2l0OiAiUklG
Rj8/Pz9XRUJQVlAiCiAgICAgY2hhciBjb250ZW50c1tsZW5ndGhPZkxvbmdlc3RTaWduYXR1cmVd
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2Nh
bGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggM2M2YTNhNTBjODIwOTY0ZThhOWIwNzQ5
MDFhOTJiM2YzYzQ3ODliNy4uOWM0MDU1NzgyNDFkMGM1MTI3MDI5NTE1YzIyMTI2NThmOGM0ZjY4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2Nh
bGFibGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIFJldHVybnMgbnVsbHB0ciBpZiB3ZSBjYW4ndCBzbmlmZiBhIHN1cHBvcnRlZCB0
eXBlIGZyb20gdGhlIHByb3ZpZGVkIGRhdGEgKHBvc3NpYmx5CiAgICAgLy8gYmVjYXVzZSB0aGVy
ZSBpc24ndCBlbm91Z2ggZGF0YSB5ZXQpLgotICAgIHN0YXRpYyBSZWZQdHI8U2NhbGFibGVJbWFn
ZURlY29kZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgc3RhdGljIFJlZlB0cjxTY2FsYWJsZUltYWdlRGVj
b2Rlcj4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKICAgICBib29sIHByZW11bHRpcGx5QWxwaGEo
KSBjb25zdCB7IHJldHVybiBtX3ByZW11bHRpcGx5QWxwaGE7IH0KIApAQCAtNzAsNyArNzAsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWRE
YXRhU3RhdHVzOjpDb21wbGV0ZTsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJpZGUKKyAgICB2b2lkIHNldERh
dGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAg
IGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKQEAg
LTE5NCw3ICsxOTQsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90
U3BvdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiBwcm90ZWN0
ZWQ6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKICAgICBW
ZWN0b3I8U2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hlIFdU
Rl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKICAgICBtdXRhYmxlIExvY2sgbV9sb2NrOwogICAg
IGJvb2wgbV9wcmVtdWx0aXBseUFscGhhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCmlu
ZGV4IDdjNjAzZmQ4MzU4YzIxNGFjOTE4NGYzMTg5OTcyZmU4NDFiNjFlODAuLjI2Zjg4NjQ5NmU1
YTVhMTRlMjhhZmIxYWZhOWJmYzMwMTc3ZjUxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRl
ci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgQVZJRkltYWdlUmVhZGVyOjpBVklGSW1hZ2VSZWFkZXIo
UmVmUHRyPEFWSUZJbWFnZURlY29kZXI+JiYgZGVjb2RlcikKIAogQVZJRkltYWdlUmVhZGVyOjp+
QVZJRkltYWdlUmVhZGVyKCkgPSBkZWZhdWx0OwogCi1ib29sIEFWSUZJbWFnZVJlYWRlcjo6cGFy
c2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCitib29sIEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQogewogICAgIGlmIChhdmlmRGVjb2RlclNldElPTWVtb3J5KG1fYXZpZkRlY29kZXIuZ2V0
KCksIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgIT0gQVZJRl9SRVNVTFRfT0spCiAgICAgICAg
IHJldHVybiBhbGxEYXRhUmVjZWl2ZWQgPyBtX2RlY29kZXItPnNldEZhaWxlZCgpIDogZmFsc2U7
CkBAIC01OCw3ICs1OCw3IEBAIGJvb2wgQVZJRkltYWdlUmVhZGVyOjpwYXJzZUhlYWRlcihjb25z
dCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIGFsCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgQVZJRkltYWdlUmVhZGVyOjpkZWNvZGVGcmFtZShzaXplX3QgZnJhbWVJ
bmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYgYnVmZmVyLCBjb25zdCBTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50JiBkYXRhKQordm9pZCBBVklGSW1hZ2VSZWFkZXI6OmRlY29kZUZyYW1l
KHNpemVfdCBmcmFtZUluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiBidWZmZXIsIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKQogewogICAgIGlm
IChtX2RlY29kZXItPmZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VS
ZWFkZXIuaAppbmRleCBjYmNhMGI4YzEyNGJmZjBmZmMzMzAxYmEzNWJjZTAxZWQyNzIyZGY4Li40
OTZmNjlmODEyYmQ3NWIwZWRhNjM1N2JhYTg2MGNmY2NiNWJhNGIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRklt
YWdlUmVhZGVyLmgKQEAgLTM5LDggKzM5LDggQEAgcHVibGljOgogICAgIEFWSUZJbWFnZVJlYWRl
cihSZWZQdHI8QVZJRkltYWdlRGVjb2Rlcj4mJik7CiAgICAgfkFWSUZJbWFnZVJlYWRlcigpOwog
Ci0gICAgYm9vbCBwYXJzZUhlYWRlcihjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Jiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4
LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiwgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCYpOworICAgIGJvb2wgcGFyc2VIZWFkZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQmLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCBkZWNvZGVG
cmFtZShzaXplX3QgaW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpOwogICAgIHNpemVfdCBpbWFnZUNvdW50
KCkgY29uc3Q7CiAgICAgZG91YmxlIHJlcGV0aXRpb25Db3VudCgpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VE
ZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9C
TVBJbWFnZURlY29kZXIuY3BwCmluZGV4IDcyNzY5YTY5MjZlYzI0MTliZjY2MzgyNTI4ZDNkNzcy
MGE1NGFkYWUuLmY3NDU1YzE0NmM3ZThhZWIwNGNjOGM1NmYzMzBlMmEwMWYzYmE3MmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCkBAIC00Niw3ICs0Niw3IEBAIEJNUEltYWdlRGVjb2Rl
cjo6Qk1QSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wCiB7CiB9CiAKLXZvaWQgQk1QSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEJNUEltYWdlRGVjb2Rlcjo6
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURl
Y29kZXIuaAppbmRleCBjN2M3Y2E4MWZlYTZiOGE3NzRiYjMwOGU1MzhkY2QwNDhjOTk1ZWVhLi42
NGRlZDZhYmJlMmMwYTI5YjExZjlmYjVlY2Q2YjQ4NzI0ZDU4OTcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
RGVjb2Rlci5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFNjYWxhYmxlSW1h
Z2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gImJtcCJfczsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgU2NhbGFibGVJbWFnZURl
Y29kZXJGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgZmluYWw7CiAgICAg
Ly8gQ0FVVElPTjogc2V0RmFpbGVkKCkgZGVsZXRlcyB8bV9yZWFkZXJ8LiBCZSBjYXJlZnVsIHRv
IGF2b2lkCiAgICAgLy8gYWNjZXNzaW5nIGRlbGV0ZWQgbWVtb3J5LCBlc3BlY2lhbGx5IHdoZW4g
Y2FsbGluZyB0aGlzIGZyb20gaW5zaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oCmluZGV4IDQ4NDRm
MzgwZGMxN2VjNzA0NTg4ZmIxMmY1M2VhYmM2ZDIwZTYwZjQuLmJkNDMwZThhOGJlYTJjODE2YjJj
NTIyYmY1YmE3ODg0NmMzOGUwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oCkBAIC00Miw3ICs0
Miw3IEBAIGNsYXNzIEJNUEltYWdlUmVhZGVyIHsKIHB1YmxpYzoKICAgICAvLyBSZWFkIGEgdmFs
dWUgZnJvbSB8ZGF0YVtvZmZzZXRdfCwgY29udmVydGluZyBmcm9tIGxpdHRsZSB0byBuYXRpdmUK
ICAgICAvLyBlbmRpYW5uZXNzLgotICAgIHN0YXRpYyBpbmxpbmUgdWludDE2X3QgcmVhZFVpbnQx
Nihjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQorICAg
IHN0YXRpYyBpbmxpbmUgdWludDE2X3QgcmVhZFVpbnQxNihjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkKICAgICB7CiAgICAgICAgIHVp
bnQxNl90IHJlc3VsdDsKICAgICAgICAgbWVtY3B5KCZyZXN1bHQsICZkYXRhLmRhdGEoKVtvZmZz
ZXRdLCAyKTsKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KIAotICAgIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgcmVhZFVpbnQzMihjb25zdCBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQorICAgIHN0YXRpYyBp
bmxpbmUgdWludDMyX3QgcmVhZFVpbnQzMihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkKICAgICB7CiAgICAgICAgIHVpbnQzMl90IHJl
c3VsdDsKICAgICAgICAgbWVtY3B5KCZyZXN1bHQsICZkYXRhLmRhdGEoKVtvZmZzZXRdLCA0KTsK
QEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIEJNUEltYWdlUmVhZGVyKFNjYWxhYmxlSW1h
Z2VEZWNvZGVyKiBwYXJlbnQsIHNpemVfdCBkZWNvZGVkQW5kSGVhZGVyT2Zmc2V0LCBzaXplX3Qg
aW1nRGF0YU9mZnNldCwgYm9vbCB1c2VzQW5kTWFzayk7CiAKICAgICB2b2lkIHNldEJ1ZmZlcihT
Y2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBidWZmZXIpIHsgbV9idWZmZXIgPSBidWZmZXI7IH0K
LSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2Rh
dGEgPSAmZGF0YTsgfQorICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQogCiAgICAgLy8gRG9lcyB0aGUg
YWN0dWFsIGRlY29kaW5nLiBJZiB8b25seVNpemV8IGlzIHRydWUsIGRlY29kaW5nIG9ubHkKICAg
ICAvLyBwcm9ncmVzc2VzIGFzIGZhciBhcyBuZWNlc3NhcnkgdG8gZ2V0IHRoZSBpbWFnZSBzaXpl
LiBSZXR1cm5zCkBAIC0yNzIsNyArMjcyLDcgQEAgcHJpdmF0ZToKICAgICBTY2FsYWJsZUltYWdl
RGVjb2RlckZyYW1lKiBtX2J1ZmZlcjsKIAogICAgIC8vIFRoZSBmaWxlIHRvIGRlY29kZS4KLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOwogCiAgICAgLy8gQW4g
aW5kZXggaW50byB8bV9kYXRhfCByZXByZXNlbnRpbmcgaG93IG11Y2ggd2UndmUgYWxyZWFkeSBk
ZWNvZGVkLgogICAgIHNpemVfdCBtX2RlY29kZWRPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNh
aXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0lt
YWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCmluZGV4IDYwMTIwMzc0ZjljNDMxNjhhNjUyMWI2OWM1
NGFmYmUyYTAwZjU1ZjcuLjRhMjEyNTVhOGMwZmI2NzhlNGFhZGQ3NjYzZWI3ZjkxOGU3ZmU5NGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJv
L0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCkBAIC0zNyw3
ICszNyw5IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VCYWNraW5nU3RvcmU6OmltYWdlKCkgY29u
c3QKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY29uc3RfY2FzdDx1
aW50MzJfdCo+KG1fcGl4ZWxzUHRyKSksCiAgICAgICAgIENBSVJPX0ZPUk1BVF9BUkdCMzIsIHNp
emUoKS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCksIHNpemUoKS53aWR0aCgpICogc2l6ZW9mKHVp
bnQzMl90KSkpOwogICAgIHN0YXRpYyBjYWlyb191c2VyX2RhdGFfa2V5X3Qgc19zdXJmYWNlRGF0
YUtleTsKLSAgICBjYWlyb19zdXJmYWNlX3NldF91c2VyX2RhdGEoc3VyZmFjZS5nZXQoKSwgJnNf
c3VyZmFjZURhdGFLZXksIG1fcGl4ZWxzLmdldCgpLCBbXSh2b2lkKiBkYXRhKSB7IHN0YXRpY19j
YXN0PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihkYXRhKS0+ZGVyZWYoKTsgfSk7CisgICAg
Y2Fpcm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRhKHN1cmZhY2UuZ2V0KCksICZzX3N1cmZhY2VEYXRh
S2V5LCBtX3BpeGVscy5nZXQoKSwgW10odm9pZCogZGF0YSkgeworICAgICAgICBzdGF0aWNfY2Fz
dDxEYXRhU2VnbWVudCo+KGRhdGEpLT5kZXJlZigpOworICAgIH0pOwogCiAgICAgcmV0dXJuIHN1
cmZhY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCmluZGV4IGU2YWJlMGQ5NTQ0YjZj
MTg1YzY0NWRlY2UwOWYyM2Y5NTY2NjA3Y2IuLmI5ZWMwMWI4YWU4ZThkMjliYzc4MjUyNmUwNzY1
MjU1MWUzNTljMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCkBAIC0zOCw3ICszOCw3
IEBAIEdJRkltYWdlRGVjb2Rlcjo6R0lGSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiAKIEdJRkltYWdlRGVjb2Rlcjo6fkdJRkltYWdl
RGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBHSUZJbWFnZURlY29kZXI6OnNldERhdGEoU2hh
cmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgR0lGSW1hZ2VEZWNv
ZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlRGVjb2Rlci5oCmluZGV4IDM1ZGYzM2Y2ZGZjNDgzZmQ4NDcxMzY2YWU1M2JiMGI5NjFjYWVk
MmUuLmM3NDcxOTk5OWI5ODZjMWNlZjg0Nzg3NTlkMjM3MThjOTA0MmQzZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VEZWNvZGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFi
bGVJbWFnZURlY29kZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5h
bCB7IHJldHVybiAiZ2lmIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAg
Ym9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbDsKICAgICBzaXplX3QgZnJhbWVDb3Vu
dCgpIGNvbnN0IGZpbmFsOwogICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBj
b25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKaW5kZXggNDIxNDZlMDMyOTMyMzY5OTc4
OWViNWU0MmFmNGM3M2QzNGFiOWNjNi4uMTA4MmZkZjBkZmYyMzkxZTU2NTMwYTQxZjg3YmE0Mzk4
MjMyNzUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKQEAgLTIzNyw3ICsyMzcsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50JiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9CisgICAgdm9pZCBzZXRE
YXRhKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKSB7
IG1fZGF0YSA9ICZkYXRhOyB9CiAgICAgLy8gRklYTUU6IGhhbHRBdEZyYW1lIHNob3VsZCBiZSBz
aXplX3QuCiAgICAgYm9vbCBkZWNvZGUoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpHSUZRdWVy
eSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpOwogCkBAIC0zMTYsNiArMzE2LDYgQEAgcHJpdmF0ZToK
ICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEdJRkZyYW1lQ29udGV4dD4gPiBtX2ZyYW1lczsK
ICAgICBzaXplX3QgbV9jdXJyZW50RGVjb2RpbmdGcmFtZTsKIAotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CiAgICAgYm9vbCBt
X3BhcnNlQ29tcGxldGVkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYzcx
N2M0NWQzMDU3YzA1NTM2ZWU2MDUwZjkzOTcwNDZkMTBkZjJhNy4uYzA3MTM0NWI4YmYzNjliODAy
NzFmYmRmMGEwY2UwMTc0ZjA1MDNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKQEAg
LTUyLDcgKzUyLDcgQEAgSUNPSW1hZ2VEZWNvZGVyOjpJQ09JbWFnZURlY29kZXIoQWxwaGFPcHRp
b24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AKIAogSUNPSW1hZ2VEZWNvZGVy
Ojp+SUNPSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lkIElDT0ltYWdlRGVjb2Rlcjo6
c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJ
Q09JbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKaW5kZXggZmI3YTkwM2IyYTA3NTM5NDkxN2FiYmJmMTFi
MWNlZDgzZmY0MzJhMC4uMTBlZTliNGQyZThjOWQ4ODdlMWQyYjhiZTEzOWJiNzQyNzFkNTdhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lD
T0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICJpY28iX3M7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVk
QnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAg
IEludFNpemUgc2l6ZSgpIGNvbnN0IGZpbmFsOwogICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRl
eChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc2V0U2l6
ZShjb25zdCBJbnRTaXplJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApp
bmRleCBhNDJlNWJjNGFjY2YzNzIyYTVhZjljOTA1NDYyZDA4ZWQ4ODQxNjQ4Li41Y2ZhYzlmMjM1
N2UyZTEyYzY4NjQwMGIyNjc4OGFlN2Y4YmUxMzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVj
b2Rlci5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdGF0aWMgYm9vbCBpc0lDQ01hcmtlcihqcGVn
X3NhdmVkX21hcmtlcl9wdHIgbWFya2VyKQogICAgICAgICAmJiBtYXJrZXItPmRhdGFbMTFdID09
ICdcMCc7CiB9CiAKLXN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZElD
Q1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKK3N0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQog
ewogICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVmZmVyOwogICAgIGZvciAoanBlZ19zYXZlZF9t
YXJrZXJfcHRyIG1hcmtlciA9IGluZm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1h
cmtlci0+bmV4dCkgewpAQCAtMzIwLDcgKzMyMCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9ieXRl
c1RvU2tpcCA9IHN0ZDo6bWF4KG51bUJ5dGVzIC0gYnl0ZXNUb1NraXAsIHN0YXRpY19jYXN0PGxv
bmc+KDApKTsKICAgICB9CiAKLSAgICBib29sIGRlY29kZShjb25zdCBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50JiBkYXRhLCBib29sIG9ubHlTaXplKQorICAgIGJvb2wgZGVjb2RlKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIG9ubHlTaXplKQog
ICAgIHsKICAgICAgICAgbV9kZWNvZGluZ1NpemVPbmx5ID0gb25seVNpemU7CiAKQEAgLTcyNiw3
ICs3MjYsNyBAQCB2b2lkIEpQRUdJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKIH0KIAogI2lmIFVTRShMQ01TKQotdm9pZCBKUEVHSW1hZ2VE
ZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK3ZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAppbmRleCBjMDNhYTY3ODIyMDNjYmQ0Y2ZjODNmZGU4
Zjg3MTJiNzA4MWUzYWE5Li5kMmQ3ZmE2YWI0OWI0MjQ3YWZmYjhlMWZiZWU0Njk1M2IwY2IwNWNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaApAQCAtNjgsNyArNjgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQogI2lmIFVT
RShMQ01TKQotICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYpOworICAgICAgICB2b2lkIHNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJik7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9K
UEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKaW5kZXggYmVjZjY0NTAyNzdlZWI3NGIwOWRlNTJlZTE4
MmZmNmUxMWVkMjc2Mi4uMjA0NzNmMGVlZWJiNTZjNzEzMTRmNjU1NmJkYTA5MDMzNDkwNzQ0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIw
MDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzgw
LDcgKzM4MCw3IEBAIHZvaWQgSlBFRzIwMDBJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlT
aXplLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICB9CiAKICAgICBzdHJ1Y3QgUmVhZGVyIHsK
LSAgICAgICAgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YTsKKyAgICAgICAgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGE7CiAgICAgICAgIHNpemVfdCBvZmZz
ZXQ7CiAgICAgfSByZWFkZXIgPSB7ICptX2RhdGEsIDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNv
ZGVyLmNwcAppbmRleCBjMTJjNDU5YTVhM2U1YjM1MWM1YmNjNjJiZjAwYjhhMjgxYmQ1YmEzLi40
Y2JkMzIzZDlhNzUwMjZlZjg2NThmMzgxNmRkNzM4ZDM3Y2E4ZWQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1h
Z2VEZWNvZGVyLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9yZWFk
T2Zmc2V0ID0gMDsKICAgICB9CiAKLSAgICBib29sIGRlY29kZShjb25zdCBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIHNpemVPbmx5LCB1bnNpZ25lZCBoYWx0QXRGcmFtZSkK
KyAgICBib29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dCYgZGF0YSwgYm9vbCBzaXplT25seSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpCiAgICAgewogICAg
ICAgICBtX2RlY29kaW5nU2l6ZU9ubHkgPSBzaXplT25seTsKICAgICAgICAgUE5HSW1hZ2VEZWNv
ZGVyKiBkZWNvZGVyID0gc3RhdGljX2Nhc3Q8UE5HSW1hZ2VEZWNvZGVyKj4ocG5nX2dldF9wcm9n
cmVzc2l2ZV9wdHIobV9wbmcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCmluZGV4
IDAyZjFiMDlkYmM3NjUxNjAxZjkyMmRkZTI5ZjgwNWE2NTg3MWUyZDIuLmIxYmVjNTVlNzhjNDM0
ODAxYzI1NGFjZTBkZjU5OTMxYTM2Yjc0YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVy
LmNwcApAQCAtNDcsNyArNDcsNyBAQCBXRUJQSW1hZ2VEZWNvZGVyOjpXRUJQSW1hZ2VEZWNvZGVy
KEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZQogCiBXRUJQSW1h
Z2VEZWNvZGVyOjp+V0VCUEltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBXRUJQSW1h
Z2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCit2b2lkIFdFQlBJbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAg
ICAgICByZXR1cm47CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpk
ZWNvZGUoc2l6ZV90IGZyYW1lSW5kZXgsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIC8vIFRo
aXMgY2FuIGJlIGV4ZWN1dGVkIGJvdGggaW4gdGhlIG1haW4gdGhyZWFkICh3aGVuIG5vdCB1c2lu
ZyBhc3luYyBkZWNvZGluZykgb3IgaW4gdGhlIGRlY29kaW5nIHRocmVhZC4KICAgICAvLyBXaGVu
IGV4ZWN1dGVkIGluIHRoZSBkZWNvZGluZyB0aHJlYWQsIGEgY2FsbCB0byBzZXREYXRhKCkgZnJv
bSB0aGUgbWFpbiB0aHJlYWQgbWF5IGNoYW5nZSB0aGUgZGF0YQogICAgIC8vIHRoZSBXZWJQRGVt
dXhlciBpcyB1c2luZywgbGVhdmluZyBpdCBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUsIHNvIHdl
IG5lZWQgdG8gcHJvdGVjdCB0aGUgZGF0YS4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudD4gcHJvdGVjdGVkRGF0YShtX2RhdGEpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gcHJvdGVjdGVkRGF0YShtX2RhdGEpOwogICAgIFdlYlBE
YXRhIGlucHV0RGF0YSA9IHsgcHJvdGVjdGVkRGF0YS0+ZGF0YSgpLCBwcm90ZWN0ZWREYXRhLT5z
aXplKCkgfTsKICAgICBXZWJQRGVtdXhTdGF0ZSBkZW11eGVyU3RhdGU7CiAgICAgV2ViUERlbXV4
ZXIqIGRlbXV4ZXIgPSBXZWJQRGVtdXhQYXJ0aWFsKCZpbnB1dERhdGEsICZkZW11eGVyU3RhdGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2Vi
cC9XRUJQSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAppbmRleCBhZjM2NWU5Y2Y5YzdjZTk1MzhiNjRi
YTc4OWJmMDE3ZDQ4ZjZlZGUxLi5kZDI4YmM4OGRmNWMwZmEzYzE1NzM3ODY5YjI2MDk3M2FhYTBk
MjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
ZWJwL1dFQlBJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+V0VCUEltYWdlRGVjb2RlcigpOwogCiAgICAgU3RyaW5nIGZpbGVu
YW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIndlYnAiX3M7IH0KLSAgICB2
b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRh
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsKICAgICBTY2FsYWJsZUltYWdl
RGVjb2RlckZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBvdmVycmlkZTsK
ICAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2ZyYW1lQ291
bnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJk
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5k
ZXggOTA5ZThlNzY4YWRiNjhiYWIyODQ0NWQyODI3MzYwYTNmM2ZhMjJjMy4uYjIzNzdmZTM0MTFk
MmFjNDAxNTEzYmYwOWFlOGNjYWU3ODZiZDhlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTIzNiwxNCArMjM2LDE0IEBAIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAKICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAg
ICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBl
RmxhdFJURkRdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0
ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVGbGF0UlRGRCwg
bV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChp
dGVtSW5kZXgsIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsK
ICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAg
IHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAg
ICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZFJURkQoKmJ1ZmZlcikgPyBSZWFkZXJS
ZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKICAgICB9CiAK
ICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5
cGVSVEZdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5
LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVSVEYsIG1fcGFzdGVi
b2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4
LCBrVVRUeXBlUlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgICAgICBpZiAo
bV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIFJlYWRl
clJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAgICByZXR1cm4g
YnVmZmVyICYmIHJlYWRlci5yZWFkUlRGKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlw
ZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CkBAIC0yNTEsNyArMjUxLDcgQEAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICNlbmRpZiAvLyAhUExBVEZPUk0oTUFD
Q0FUQUxZU1QpCiAKICAgICBpZiAoW3N1cHBvcnRlZEltYWdlVHlwZXMoKSBjb250YWluc09iamVj
dDp0eXBlXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVn
eS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCB0eXBlLCBtX3Bhc3RlYm9hcmRO
YW1lLCBjb250ZXh0KCkpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgdHlw
ZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291
bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBh
c3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiBy
ZWFkZXIucmVhZEltYWdlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCB0eXBlLCBpdGVtSW5mby5w
cmVmZXJyZWRQcmVzZW50YXRpb25TaXplKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFk
ZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggNWFkMWY2ZmFjNGI2NTQ3NTFk
NTkxZDM2MzVjNDY4NTAzOWQ1NzI3NS4uMTZiM2Q1ZDQ0MTVkMjU4NTE1ZjY2MGE4NmFjNmNlZmJk
Y2RiNjRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3Jt
UGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC03OSwxMCArNzksMTAgQEAgdm9pZCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB0eXBlcyA9IG1ha2VW
ZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBlc10pOwogfQogCi1SZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKE5T
RGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOnR5cGVdKQot
ICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKQEAgLTMzOCw3ICszMzgsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6
c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKQogICAgIHJldHVybiAwOwogfQogCi1pbnQ2
NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBj
b25zdCBTdHJpbmcmKQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5
cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgcmV0dXJu
IDA7CiB9CkBAIC02MDksNyArNjA5LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KICNlbmRp
ZiAvLyBQQVNURUJPQVJEX1NVUFBPUlRTX1BSRVNFTlRBVElPTl9TVFlMRV9BTkRfVEVBTV9EQVRB
CiAKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQg
ZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgp
KV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFy
ZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21E
YXRhKS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpm
cm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRh
KS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdpbigpID09IG9yaWdpbikgewogICAgICAg
ICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAg
ICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwpAQCAtNjcyLDcgKzY3Miw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVy
Pj4odmFsdWUpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4odmFsdWUpOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3Rl
ciBhZGREYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
Zm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOwogICAgIH0pOwogCkBAIC03NDYsNyArNzQ2
LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjphbGxTdHJpbmdzRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ3M7CiB9CiAKLVJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZm
ZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8U2hhcmVk
QnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKChOU0ludGVnZXIpaW5kZXggPCAwIHx8
IChOU0ludGVnZXIpaW5kZXggPj0gW21fcGFzdGVib2FyZCBudW1iZXJPZkl0ZW1zXSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC03NTcsNyArNzU3LDcgQEAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgs
IGNvbnMKIAogICAgIGlmICghW3Bhc3RlYm9hcmRJdGVtIGNvdW50XSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFz
dGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKIH0KIAogU3RyaW5nIFBs
YXRmb3JtUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
dHlwZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2
aWV3Q29udmVydGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdD
b252ZXJ0ZXJJT1MubW0KaW5kZXggNDdlNWJmNWU1MTc1N2M5YTg4ZDVjMzJmMjZjMTZlNzgyMjNi
Yjg0NC4uY2FiYWFhMTE4ZGMzNGI2MWEwYTZmNTQ4ZDMwNDY2MjY2MWI4OGI5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KQEAg
LTgyLDcgKzgyLDcgQEAgQGVuZAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQcmV2aWV3Q29udmVy
dGVyOjpQcmV2aWV3Q29udmVydGVyKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQ
cmV2aWV3Q29udmVydGVyUHJvdmlkZXImIHByb3ZpZGVyKQotICAgIDogbV9wcmV2aWV3RGF0YSB7
IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSkgfQorICAgIDogbV9wcmV2aWV3RGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVp
bGRlcj4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpIH0KICAgICAsIG1fb3JpZ2lu
YWxSZXNwb25zZSB7IHJlc3BvbnNlIH0KICAgICAsIG1fcHJvdmlkZXIgeyBwcm92aWRlciB9CiAg
ICAgLCBtX3BsYXRmb3JtRGVsZWdhdGUgeyBhZG9wdE5TKFtbV2ViUHJldmlld0NvbnZlcnRlckRl
bGVnYXRlIGFsbG9jXSBpbml0V2l0aERlbGVnYXRlOip0aGlzXSkgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCBmZDU3ZDIyMmMyZDc0MzAxNjEx
NjJjMGUyYjg4ZTlmMWNjMzE5OTE0Li4wZDI1NDk4Yjg2YmVmMTg1ZDM3NjlkNWE1YmMwYmMyZjcz
MWM3MGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bQpAQCAtMzMwLDcgKzMzMCw3IEBAIHN0YXRpYyBTdHJpbmcgcmVhZFN0cmluZ0F0UHJlZmVycmVk
SXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzCiAgICAgcmV0dXJu
IHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUodHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwog
fQogCi1zdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFBy
ZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorc3RhdGlj
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25z
dCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9h
cmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGlmIChpdGVtSW5kZXgpCiAgICAg
ICAgIHJldHVybiBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoKml0ZW1JbmRleCwg
dHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggMWI5MTkxNGUzZjcy
N2E4ZWY2OGY5ZTFhNmFlMTU1Mzg2ZDlmYmEyYy4uYzNiNGQyZDk2MjE3NDcxYzczNWUyNGZlN2E1
ZjlkOTIzN2RmNDcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCwxMiArNjgsMTIgQEAgdm9pZCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKICAgICB0eXBlcyA9
IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHR5cGVzXSk7CiB9CiAKLVJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRm
b3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KQogewogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6cGFzdGVi
b2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHld
KS5nZXQoKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEg
Y29weV0pLmdldCgpKTsKIH0KIAogaW50IFBsYXRmb3JtUGFzdGVib2FyZDo6bnVtYmVyT2ZGaWxl
cygpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KIHsK
ICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRUeXBlczsKICAgICBpZiAoTlNE
YXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6QChQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEg
PSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0
byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRh
dGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBk
YXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5h
ZGQodHlwZSk7CkBAIC0yNjMsOCArMjYzLDggQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgICAgICBpZiAocGxh
dGZvcm1UeXBlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIp
KSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hh
cmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKSkKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBs
YXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5n
T3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAg
ICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxh
dGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0
cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6
Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpAQCAtMzQxLDcgKzM0MSw3IEBAIGludDY0X3Qg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzKQogICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpjcmVhdGVO
U0FycmF5KHBhc3RlYm9hcmRUeXBlcykuZ2V0KCkgb3duZXI6bmlsXTsKIH0KIAotaW50NjRfdCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6c2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFjYW5Xcml0ZVBhc3RlYm9hcmRU
eXBlKHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00NDYsNyArNDQ2LDcg
QEAgc3RhdGljIFN0cmluZyB3ZWJTYWZlTUlNRVR5cGVGb3JNb2Rlcm5QYXN0ZWJvYXJkVHlwZShO
U1Bhc3RlYm9hcmRUeXBlIHBsYXRmb3JtVHkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiB0eXBlKSBjb25zdAogewogICAgIE5TUGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJ
bmRleChpbmRleCk7CiAgICAgaWYgKCFpdGVtKQpAQCAtNDU0LDcgKzQ1NCw3IEBAIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6
ZV90IGluZGV4LCBjb25zCiAKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5
cGU6dHlwZV0pIHsKICAgICAgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKGRhdGEuY29weSk7Ci0g
ICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgp
KTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MDQsOCArNTA0LDggQEAgc3RhdGljIFJl
dGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0
ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAgaWYgKCFwbGF0Zm9ybVR5cGUpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1
ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1E
YXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Cisg
ICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0
KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8g
c3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cml2YXRlLmgKaW5kZXggNjgxM2Q1ZGE3ZGNiMGZjMjU5ZjFiZDFlZDBhNTRjMWExYTlmZDljZi4u
Nzk2NTU0ZjRjOTc2NDUxNDAxZTFhMTIzNzQ2ODcwNDBiMjRiMWNjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGUuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBNZWRpYVNhbXBsZTsKIGNsYXNzIE1l
ZGlhU3RyZWFtUHJpdmF0ZTsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOwogY2xhc3Mg
UGxhdGZvcm1BdWRpb0RhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOwogCkBA
IC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBBdWRpb1ZpZGVvU2VsZWN0ZWRUcmFja3Mgc2VsZWN0VHJhY2tzKE1lZGlhU3RyZWFtUHJpdmF0
ZSYpOwogCi0gICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJs
ZSk+OworICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgZG91YmxlKT47CiAgICAgdmlydHVhbCB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFj
ayYmKSA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgPSAw
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKaW5kZXggYzI1ZGY5MTU3NGE2
NWJjNDFiZGI3MDY3OGRjNDc3MjQ4MzZkZDE0NS4uNDk4ZDRlZTEzNDBjNGI5NDAwMWI2MGMzNDQ3
OWI3ZjcyZDVjOGU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcApAQCAt
OTMsNyArOTMsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6Z2VuZXJhdGVNb2Nr
Q291bnRlclN0cmluZygpCiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpmZXRjaERh
dGEoRmV0Y2hEYXRhQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2J1ZmZlckxvY2sgfTsK
ICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlIHsgbV9idWZmZXIuY2hhcmFjdGVyczgoKSwg
bV9idWZmZXIubGVuZ3RoKCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLmgKaW5kZXggNWVkOThjNDEzMGI5YmUwMzUyMzdiZjJlZjUwNjNm
NmIyZWNkYzA1NS4uOWMyYzc5N2I4MTk1MTJkOGZkNTc5MDE1ZGMzYjZlNDA1ZTNiYzYwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgK
QEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kVmlkZW9TYW1wbGVCdWZm
ZXIoTWVkaWFTYW1wbGUmKTsKICAgICB2b2lkIGFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0
IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIGNvbnN0
IFdURjo6TWVkaWFUaW1lJiwgc2l6ZV90KTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKLSAg
ICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYsIGRvdWJsZSk+JiYpOworICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYpOwogCiAg
ICAgdm9pZCBwYXVzZSgpOwogICAgIHZvaWQgcmVzdW1lKCk7CkBAIC0xMDUsNyArMTA1LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgZmluaXNoZWRGbHVzaGluZ1NhbXBsZXMoKTsKICAgICB2b2lk
IGNvbXBsZXRlRmV0Y2hEYXRhKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEo
KTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKIAogICAg
IGJvb2wgbV9oYXNBdWRpbyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1ZpZGVvIHsgZmFsc2Ug
fTsKQEAgLTExOCw3ICsxMTgsNyBAQCBwcml2YXRlOgogCiAgICAgTG9jayBtX2RhdGFMb2NrOwog
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRh
TG9jayk7Ci0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
LCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOworICAgIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1f
ZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNj
cmlwdGlvblJlZj4gbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IG1fYXVkaW9Db21wcmVzc29yOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4
IGM3MWFhODRhZmMxZWMxMDAzZDljNzRiNWQ3ZjEzZmVlNDM3NjVlM2EuLjg0ODQxMDBlYWM1ZTEx
NWU5YjBjZjAxMjBiYWJmNzhmYjFhMTI3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTQ5Myw3ICs0OTMsNyBAQCB2b2lk
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdG9wUmVjb3JkaW5nKCkKICAgICB9KTsKIH0K
IAotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZldGNoRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBkb3Vi
bGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKIApAQCAtNTM4LDcgKzUzOCw3IEBA
IHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VE
YXRhKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6dGFrZURhdGEoKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07
CiAgICAgcmV0dXJuIG1fZGF0YS50YWtlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKaW5kZXggYTliMjlkNTllOWFhM2I0NjU1NDE1YmQ4
YmVmMDk4NGM1NDRiNzNmMC4uY2RlZTYwMzUyM2NkNjY5NDVmNDI4ZjY5NDc4OTYwZjZmZDc0Yzc3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVj
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29k
ZXIuaApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBE
YXRhVVJMRGVjb2RlciB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5jcHAKaW5kZXggYjE3NDk3NDQ1NGJmNzM5ODkwOWNjOGJlYTRkMGEzYjk1NzlhNzg4MC4u
YTM3YTBkODc0ZjcyYmY5MWJkNTJjM2FjNmI1ODVkMzMzZjBmY2EzYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTQxMiwxMyArNDEyLDEzIEBA
IHVpbnQ2NF90IEZvcm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICByZXR1cm4gKm1f
bGVuZ3RoSW5CeXRlczsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvcm1E
YXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0
YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1f
ZWxlbWVudHMpIHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rvcjx1
aW50OF90Pj4oZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7
CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CiB9CiAKIFVSTCBG
b3JtRGF0YTo6YXNCbG9iVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuaAppbmRleCA0NmUyNzM1MzNjMGZmNDQxNjQwNmQyNDUwZWUyMDg4MWE1NWZj
YmFlLi42ZWNkN2YxYjA3M2MzODMzNDQzOTk1MTc0NTU4OTQxMGFiOGE2MTA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0zMiw3ICszMiw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CiBjbGFzcyBET01Gb3Jt
RGF0YTsKIGNsYXNzIEZpbGU7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3Mg
U2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dEVuY29kaW5nOwogCiBzdHJ1Y3QgRm9ybURhdGFFbGVt
ZW50IHsKQEAgLTIyOSw3ICsyMjksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPEZvcm1E
YXRhRWxlbWVudD4mIGVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50czsgfQogICAg
IGNvbnN0IFZlY3RvcjxjaGFyPiYgYm91bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kYXJ5
OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgYm9vbCBhbHdheXNTdHJlYW0o
KSBjb25zdCB7IHJldHVybiBtX2Fsd2F5c1N0cmVhbTsgfQogICAgIHZvaWQgc2V0QWx3YXlzU3Ry
ZWFtKGJvb2wgYWx3YXlzU3RyZWFtKSB7IG1fYWx3YXlzU3RyZWFtID0gYWx3YXlzU3RyZWFtOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgK
aW5kZXggZmFmZGZlODdjODM3ZTYxNTdkMmYxM2U5YTdjYTAwOTY5ZDUwYjFjNy4uNGJlYmNiNTA5
OGQxNWMyOTY2ZWQ4YzdlZTEzNmFlM2EyYWU0YTIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtODQsNyArODQsNyBAQCBjbGFz
cyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3luY2hyb25vdXNMb2FkZXJN
ZXNzYWdlUXVldWU7CiBjbGFzcyBUaW1lcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAppbmRleCA4MThlMTgx
ODQ1MTk2N2FiNTJkMTk4ZDk1ODdiMjBhMTQ0NDc4ZGQ5Li5iYThmZDRmZjRmMWU0MWM5YWQ0ZmE3
NGE0MmJlNGUyYmQxMWFhODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApAQCAtMzYsNyArMzYsNyBAQCBS
ZXNvdXJjZUhhbmRsZUNsaWVudDo6UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAK
IFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7
CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0
YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWRE
YXRhTGVuZ3RoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAppbmRleCBiNjMzN2Q1NmNlOGNkOWJlZmY5ZGZiZTEx
MzY2MmJjNzc1NmI2NTM3Li5jNGYwNTQ4NWYyODcwYjExNmRhN2M3NjBkM2MwZmNlOTZlYzJiNGE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZUNsaWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFJlc291cmNlSGFuZGxlOwog
Y2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogCiBlbnVtIENhY2hlU3RvcmFnZVBvbGljeSB7CiAgICAgU3RvcmFnZUFsbG93ZWQs
CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEo
UmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgLypieXRlc1NlbnQqLywgdW5zaWdu
ZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8pIHsgfQogCiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCosIHVuc2ln
bmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSB7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRC
dWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZS5jcHAKaW5kZXggODhkZWRmYTQ1YzNmNGM0M2EzODE1MjgwZGE1YTQxZTI2OTc1YjcxZi4uZjcw
MDM1NWQ1NjhiMDQyYTZhZGYxMDcwZGJiODM4MTkyNTM2OTRhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRo
T3BlcmF0aW9uUXVldWUuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0
YShDRkQKICAgICAgICAgCiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZl
RGF0YShoYW5kbGU9JXApICglcykiLCBoYW5kbGUsIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgaGFuZGxlLT5jbGllbnQoKS0+
ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5kbGUsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLmdldCgpKSwgb3JpZ2luYWxMZW5ndGgpOworICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5k
aWRSZWNlaXZlQnVmZmVyKGhhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSks
IG9yaWdpbmFsTGVuZ3RoKTsKICAgICB9OwogICAgIAogICAgIGlmIChtX21lc3NhZ2VRdWV1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VS
ZXNwb25zZUdlbmVyYXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQppbmRleCBlMmMzNWVkMzEwYjMxMTA2NTExNmM4
ZmM4NmMyZTQwMjlhODJjOWE0Li4wMDhlMjI2ZmY5MTkwMDRiNDUxNDhhMjQ3MjYxMTYxNTA5ODk2
Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jh
bmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC0yNDMsNyArMjQzLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KSBmaW5hbAorICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgZmluYWwKICAgICB7CiAgICAgICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmICghbV9nZW5lcmF0b3IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VS
TFNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5oCmluZGV4IDQwNDg4NWFlNjM3NmZjZTY4MDQwZDJhMDVjMDBiZWM0N2Zl
MTZhYTguLmNlNGMyNTQ1Y2RlMGYyZjQ2YWMzMzhmOTZjNDkwODhlYjQ1ZDA5MjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFBsYXRmb3JtTWVkaWFSZXNv
dXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogY2xhc3Mg
V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OwogZW51bSBjbGFzcyBTaG91bGRDb250
aW51ZVBvbGljeUNoZWNrIDogYm9vbDsKQEAgLTE1OCw3ICsxNTgsNyBAQCBXRUJDT1JFX0VYUE9S
VCBAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb24gOiBOU09iamVjdCB7CiAtICh2b2lkKXJl
c291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNl
IHNlbnRCeXRlczoodW5zaWduZWQgbG9uZyBsb25nKWJ5dGVzU2VudCB0b3RhbEJ5dGVzVG9CZVNl
bnQ6KHVuc2lnbmVkIGxvbmcgbG9uZyl0b3RhbEJ5dGVzVG9CZVNlbnQ7CiAtICh2b2lkKXJlc291
cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJl
Y2VpdmVkUmVzcG9uc2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNl
IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlNob3Vs
ZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAoQk9PTClyZXNv
dXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBz
aG91bGRDYWNoZVJlc3BvbnNlOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNw
b25zZTsKLS0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKWRhdGE7CistICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpZGF0YTsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZWRpcmVjdDooY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgcmVxdWVzdDooV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYpcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpY29tcGxldGlvbkhhbmRs
ZXI7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UqKXJlc291cmNlIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZFdpdGhFcnJvcjooY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJs
ZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGxvYWRGYWlsZWRXaXRo
RXJyb3I6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKWVycm9yOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLm1tCmluZGV4IGU1OTIyN2UzOGFhMDYxMmQ5MjdjODI1OWQwMTQ3ZGE0YmY2YTc2OWIu
LjhjODlkOTM4NjU3OTMzYTFkYTI5MDMxOTkxNTg0YzRkYjJmYWE5YTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VS
TFNlc3Npb24ubW0KQEAgLTYwOCw3ICs2MDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWRpcmVj
dFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVl
c3QmJik+JiYpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcs
IHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFp
bGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtNjUy
LDcgKzY1Miw3IEBAIGJvb2wgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpzaG91
bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjCiAgICAgcmV0dXJuIFttX3Rhc2sg
cmVzb3VyY2U6JnJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6cmVzcG9uc2VdOwogfQogCi12
b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
dm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKICAgICBpZiAo
IW1fdGFzaykKQEAgLTkxNSw3ICs5MTUsNyBAQCAtIChCT09MKXJlc291cmNlOihQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFJlcwogICAg
IHJldHVybiByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRS
YW5nZSkuaXNFbXB0eSgpOwogfQogCi0tICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JilkYXRhCistICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNl
IHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpZGF0
YQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9
PSBfcmVzb3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0
cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxv
YWQuY3BwCmluZGV4IGMzNmUxZjg4NzY0MzA0NjBjZTc1MGEzYjhjNjU4YzczNGVjYjE1MDguLjM0
OTQ0NTkyNTRhYzkzZmMxOWNiMTIxNTBhNjFiYzJiY2VkMDJkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCkBAIC0x
MDMsNyArMTAzLDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2Uo
Q3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXNwb25zZSYmIHIKIH0KIAogCi12b2lkIEN1cmxE
b3dubG9hZDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihD
dXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKaW5kZXggYTNhYTBjZjVmY2QyOTU1YmI3
YjE2YjExYTFhODFjYTc0YWU2MWM4ZC4uY2RlNDQ0NTc3NWY3NDQyMzMwNTMwYjY1YjEzNTdiYTZi
ZmQ5YmI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIFJlZjxDdXJs
UmVxdWVzdD4gY3JlYXRlQ3VybFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBj
dXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVk
IGxvbmcgbG9uZykgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNl
KEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgY3VybERp
ZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZENvbXBsZXRl
KEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
Y3VybERpZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiYsIENlcnRp
ZmljYXRlSW5mbyYmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCmluZGV4IGQ2
MzVmNzljZDFlYzYyMWFkZmViNmRjYzQ5MzZlZWVmNTBjZjlhZGMuLjA5MGQwMzliYTQ1ZGUxMDI4
ZWRmNzY4NGM2ZDdkMmYyOTZlM2EzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKQEAgLTEx
OSw3ICsxMTksNyBAQCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlKEN1
cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmIGNsaWVudCwgY29ucwogCiB9CiAKLXZvaWQgQ3VybE11
bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
Cit2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RW5k
KQogICAgICAgICByZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3duIHNvIGlnbm9y
ZSBldmVyeXRoaW5nLgpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRs
ZTo6ZGlkQ29tcGxldGUoKQogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpFbmQpIHsKICAgICAg
ICAgLy8gSXQgc2VlbXMgd2UgYXJlIHN0aWxsIG5vdCBhdCB0aGUgZW5kIG9mIHRoZSBwcm9jZXNz
aW5nLgogICAgICAgICAvLyBQdXNoIG91dCB0aGUgcmVtYWluaW5nIGRhdGEuCi0gICAgICAgIG1f
Y2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShtX2J1ZmZlcikpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2
ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUobV9idWZmZXIp
KSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kOwogICAgIH0KIApAQCAtMjM0LDEzICsy
MzQsMTMgQEAgYm9vbCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpwcm9jZXNzQ29udGVudCgpCiAKICAg
ICAgICAgaWYgKCFjaGVja0ZvckJvdW5kYXJ5KGJvdW5kYXJ5U3RhcnQsIGxhc3RQYXJ0aWFsTWF0
Y2gpICYmIGJvdW5kYXJ5U3RhcnQgPT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIC8vIERpZCBu
b3QgZmluZCB0aGUgYm91bmRhcnkgc3RhcnQsIGFsbCBkYXRhIHVwIHRvIHRoZSBsYXN0UGFydGlh
bE1hdGNoIGlzIG9rLgotICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVs
dGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxh
c3RQYXJ0aWFsTWF0Y2gpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJv
bU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxhc3RQYXJ0
aWFsTWF0Y2gpKTsKICAgICAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBsYXN0UGFydGlhbE1h
dGNoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIC8v
IFRoZXJlIHdhcyBhIGJvdW5kYXJ5IHN0YXJ0IChvciBlbmQgd2UnbGwgY2hlY2sgdGhhdCBsYXRl
ciksIHB1c2ggb3V0IHBhcnQgb2YgdGhlIGRhdGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2Vp
dmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZm
ZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVE
YXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJv
dW5kYXJ5U3RhcnQpKTsKICAgICAgICAgbV9idWZmZXIucmVtb3ZlKDAsIGJvdW5kYXJ5U3RhcnQg
KyBtX2JvdW5kYXJ5Lmxlbmd0aCgpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmRCb3Vu
ZGFyeTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAppbmRleCA1YzA4YmNjNWViM2U0YmJjYzAy
OWI0NzY3ODY4ZjQzZTJmOTVjMzQxLi45YTFhMWJiZDE5MzhhMTRmNjlmY2NlZTNmMGY4OWI5N2E0
YTIxODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybE11bHRpcGFydEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50OwogY2xhc3MgQ3Vy
bFJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZSB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBDdXJsTXVsdGlwYXJ0SGFu
ZGxlKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmLCBjb25zdCBTdHJpbmcmKTsKICAgICB+Q3Vy
bE11bHRpcGFydEhhbmRsZSgpIHsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZENvbXBsZXRlKCk7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFy
dEhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaAppbmRleCBmZDEzZmQzODEzMTQzY2IyNjU5YjhmZDFk
YjI0NDQ3NjVlOThhNTgwLi5jODEzODg2YThkNWM1ZmE2YzEyZDE0MTMzMTkxMDFhZjI1MDJhMmFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKQEAgLTI4LDEyICsyOCwxMiBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJsUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsTXVsdGlw
YXJ0SGFuZGxlQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUhl
YWRlckZyb21NdWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8U2hhcmVkQnVmZmVyPiYmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgfkN1cmxNdWx0
aXBhcnRIYW5kbGVDbGllbnQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IGFjZDg4ZTFiMDI5YjliMWU3ZjE0
YjdkMTQwMzI5MjZiOTMxNzVhMGYuLmQ4MmRkM2MxMGFjNjQ3MTM1OTkxZmQ3YWU2Njk3ZTlkOGUz
MTNlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0LmNwcApAQCAtMzk2LDcgKzM5Niw3IEBAIHNpemVfdCBDdXJsUmVxdWVzdDo6
ZGlkUmVjZWl2ZUhlYWRlcihTdHJpbmcmJiBoZWFkZXIpCiAKIC8vIGNhbGxlZCB3aXRoIGRhdGEg
YWZ0ZXIgYWxsIGhlYWRlcnMgaGF2ZSBiZWVuIHByb2Nlc3NlZCB2aWEgaGVhZGVyQ2FsbGJhY2sK
IAotc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKK3NpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChpc0NvbXBsZXRlZE9yQ2FuY2Vs
bGVkKCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNDQ0LDcgKzQ0NCw3IEBAIHZvaWQgQ3VybFJl
cXVlc3Q6OmRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBoZWFkZXJzKQogICAgIGludm9rZURpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgQWN0aW9u
OjpOb25lKTsKIH0KIAotdm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlw
YXJ0KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVj
ZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKIHsKICAgICBpZiAoaXNDb21wbGV0ZWRPckNhbmNlbGxlZCgpKQogICAgICAgICByZXR1cm47
CkBAIC03NzcsNyArNzc3LDcgQEAgY29uc3QgU3RyaW5nJiBDdXJsUmVxdWVzdDo6Z2V0RG93bmxv
YWRlZEZpbGVQYXRoKCkKICAgICByZXR1cm4gbV9kb3dubG9hZEZpbGVQYXRoOwogfQogCi12b2lk
IEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRG
aWxlSWZFbmFibGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2Rvd25sb2FkTXV0ZXggfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKaW5kZXgg
NmJkOGE2YmZiYTM3NTJjZWRkZGJjNTAwOWVhZTgzYzRmMGVlZDY0MS4uM2M3Y2RkODgzZWI2MmJm
ZTkyY2YwNDQ1ZWQyOWJkMjZlY2UzZTkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQ3VybFJlcXVlc3RDbGllbnQ7CiBjbGFzcyBOZXR3b3JrTG9h
ZE1ldHJpY3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN5bmNocm9ub3VzTG9hZGVyTWVzc2Fn
ZVF1ZXVlOwogCiBjbGFzcyBDdXJsUmVxdWVzdCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxDdXJsUmVxdWVzdD4sIHB1YmxpYyBDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCwgcHVibGlj
IEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQgewpAQCAtMTIyLDkgKzEyMiw5IEBAIHByaXZhdGU6
CiAgICAgQ1VSTCogc2V0dXBUcmFuc2ZlcigpIG92ZXJyaWRlOwogICAgIHNpemVfdCB3aWxsU2Vu
ZERhdGEoY2hhciosIHNpemVfdCwgc2l6ZV90KTsKICAgICBzaXplX3QgZGlkUmVjZWl2ZUhlYWRl
cihTdHJpbmcmJik7Ci0gICAgc2l6ZV90IGRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+
JiYpOworICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0
b3I8U3RyaW5nPiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlw
YXJ0KFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZENvbXBsZXRlVHJhbnNmZXIoQ1VSTGNvZGUpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkQ2FuY2VsVHJhbnNmZXIoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmFsaXplVHJhbnNm
ZXIoKTsKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIE5ldHdvcmtMb2FkTWV0cmlj
cyBuZXR3b3JrTG9hZE1ldHJpY3MoKTsKIAogICAgIC8vIERvd25sb2FkCi0gICAgdm9pZCB3cml0
ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2
b2lkIHdyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKICAgICB2b2lkIGNsb3NlRG93bmxvYWRGaWxlKCk7CiAgICAgdm9pZCBjbGVh
bnVwRG93bmxvYWRGaWxlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmgKaW5kZXggMDhjODZjN2Q0Njg0YmE2
Zjc4ZDYxNmI2OGQwNjkwNGMzN2E5NjY3Ny4uMzQ3OTgzMmY1NzZkNDEyOGFmYTUxYzgxNDI0Y2Nm
ZDc0MWRmNmFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgQ3Vy
bFJlcXVlc3Q7CiBjbGFzcyBDdXJsUmVzcG9uc2U7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7
CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybFJlcXVlc3RDbGllbnQgewogcHVibGljOgpA
QCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFNlbmRE
YXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQg
bG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjdXJs
RGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hh
cmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVy
KEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgY3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRy
aWNzJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoQ3VybFJl
cXVlc3QmLCBSZXNvdXJjZUVycm9yJiYsIENlcnRpZmljYXRlSW5mbyYmKSA9IDA7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXggZWQwNWRlN2FlZTkzMjFlOWZk
MDM4MWZjNzNkY2UyNzk2N2RmY2Q4MS4uMzA1ZDRlNWM5ZmMyNzA3NzU3ODdiMGY5YTkxOTc5YzA4
ODg5YThhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDIs
NyArMTQyLDcgQEAgdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2Vp
dmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3UKICAgICB9KTsKIH0KIAotdm9pZCBD
dXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVl
c3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgKaW5kZXggNmQ1NTg2NDQ1MmZkNDZl
ZTc4MDBlOTMxMjNiMTI4YmRjNjRjZTQ4Ny4uZGFmMGE1OWE0ZTU4NmQ3MTE0YWJiNGU1ZWY5YzU0
ZjZhOGJlZmM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgKQEAgLTUzLDcg
KzUzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3Qm
LCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxC
eXRlc1RvQmVTZW50KSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3Vy
bFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgZmluYWw7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2
ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZv
aWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3Qm
LCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhF
cnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYpIGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggYmM0ZGFhZmJmMjFhMTVj
MGU2ZGQxYWNkNDYyMmFmYTU2YjdiOGQ1ZC4uMWY0YTE5MzEzMzEyYzVkZDZhNDhhZDUzMzlkZmQy
YzNiNWRlYzI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9p
b3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMzEsMTIgKzMx
LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNs
aWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgeyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKaW5kZXggM2Nh
MjA4MjJjMDMxOGE1NDkxMTE4Njc1ZDI3Yjg3OGRkMTgzZmU5Yi4uMGZiNDUwMDcyZmExMDQyMmY2
YTlmZTQzMmMzODFkM2QxOTYxM2U2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
UGF0aCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRp
bmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02OCw3ICs2OCw3IEBAIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9t
UmVhZGluZ0ZpbGUoY29uCiAgICAgaWYgKHRvdGFsQnl0ZXNSZWFkICE9IGJ5dGVzVG9SZWFkKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IGM0NjBm
NWZhNDBkZGEyMWRlYjQ2MzgzYTkwYmVhNjY1M2IzMGM1ZjAuLjQ1MzY4MWJkYWIyZTRhMDVhMjFm
YzY4YTk0MzcwMGUwNmM5OTdhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHAKQEAgLTM1Niw3ICszNTYsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6
cmVhZFN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIHN0cnVjdCBQYXN0
ZWJvYXJkRmlsZUNvdW50ZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgdm9p
ZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmluYWwgeyArK2NvdW50OyB9Ci0gICAgdm9p
ZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYpIGZpbmFsIHsgKytjb3VudDsgfQorICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWwg
eyArK2NvdW50OyB9CiAKICAgICB1bnNpZ25lZCBjb3VudCB7IDAgfTsKIH07CkBAIC05NzQsNyAr
OTc0LDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3JpcHRvcihj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBtZW1PYmo7CiB9CiAK
LXN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoU2hhcmVkQnVmZmVy
KiBkYXRhKQorc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEhHTE9CQUwgbWVtT2JqID0gR2xvYmFs
QWxsb2MoR1BUUiwgZGF0YS0+c2l6ZSgpKTsKICAgICBpZiAoIW1lbU9iaikgCkBAIC05OTQsNyAr
OTk0LDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFy
ZWRCdWZmZXIqIGRhdGEpCiAgICAgcmV0dXJuIG1lbU9iajsKIH0KIAotc3RhdGljIEhHTE9CQUwg
Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1l
LCBTaGFyZWRCdWZmZXIqIGRhdGEpCitzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENv
bnRlbnQoY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKGZpbGVOYW1lLmlzRW1wdHkoKSB8fCAhZGF0YSkKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC0xMDcxLDcgKzEwNzEsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlSW1hZ2VUb0RhdGFPYmplY3QoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVVJMJiB1cmwpCiAg
ICAgaWYgKCFjYWNoZWRJbWFnZSB8fCAhY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoZWxl
bWVudC5yZW5kZXJlcigpKSB8fCAhY2FjaGVkSW1hZ2UtPmlzTG9hZGVkKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFNoYXJlZEJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBjYWNoZWRJbWFnZS0+aW1h
Z2VGb3JSZW5kZXJlcihlbGVtZW50LnJlbmRlcmVyKCkpLT5kYXRhKCk7CisgICAgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJl
cihlbGVtZW50LnJlbmRlcmVyKCkpLT5kYXRhKCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlciB8fCAh
aW1hZ2VCdWZmZXItPnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwCmluZGV4IDA3MzlkZGY0NGJmMDNj
NWYxOTkxZWUyNjZiZGExZDVkNWQ3MzhkMTcuLjg5Y2Y2YTBiYjY1ODcwODM0NTQxNDYwNjY3YzUx
NWE4YWFjZjg3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFy
ZWRCdWZmZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TaGFyZWRC
dWZmZXJXaW4uY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQorUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCkKIHsKICAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb24KICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHJlc3VsdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXN1bHQ7CiAgICAg
RFdPUkQgYnl0ZXNUb1JlYWQgPSBHZXRGaWxlU2l6ZShmaWxlSGFuZGxlLCAwKTsKICAgICBEV09S
RCBsYXN0RXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKIApAQCAtNTMsNyArNTMsNyBAQCBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJv
bVJlYWRpbmdGaWxlKGNvbgogICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKGJ5dGVzVG9S
ZWFkKTsKICAgICAgICAgRFdPUkQgYnl0ZXNSZWFkOwogICAgICAgICBpZiAoUmVhZEZpbGUoZmls
ZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnl0ZXNUb1JlYWQsICZieXRlc1JlYWQsIDApICYmIGJ5
dGVzVG9SZWFkID09IGJ5dGVzUmVhZCkKLSAgICAgICAgICAgIHJlc3VsdCA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgcmVzdWx0
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBjb250ZW50cyBvZiBm
aWxlICVzLCBHZXRMYXN0RXJyb3IoKSA9ICV1IiwgZmlsZVBhdGguYXNjaWkoKS5kYXRhKCksIEdl
dExhc3RFcnJvcigpKTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
RmFjdG9yeS5jcHAKaW5kZXggNjUyNzI1MGU1YWJjZGRiYTAwMDJiMGZiY2U2NTY1ZDJmNTg2NWQw
Ni4uODRmYTI5Y2UxZjMwMGZlMjkwYjA0MTQ2NDhmMGY3MjkwYTdjYmViZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBN
b2NrQ0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0p
CiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uoa2V5U3lzdGVtLCAib3JnLndlYmtp
dC5tb2NrIik7CiB9CiAKLXZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRo
SUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGtleXMpCit2
b2lkIE1vY2tDRE1GYWN0b3J5OjphZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYg
aWQsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYga2V5cykKIHsKICAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fc2Vzc2lvbnMuYWRkKGlkLCBXVEZNb3ZlKGtleXMpKTsKICAgICBp
ZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgTW9ja0NETUZh
Y3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJl
ZjxTaGFyZWRCCiAgICAgICAgIHZhbHVlLmFwcGVuZChXVEZNb3ZlKGtleSkpOwogfQogCi1WZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJvbVNlc3Np
b25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkKK1ZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+IE1vY2tDRE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3Qg
U3RyaW5nJiBpZCkKIHsKICAgICBhdXRvIGl0ID0gbV9zZXNzaW9ucy5maW5kKGlkKTsKICAgICBp
ZiAoaXQgPT0gbV9zZXNzaW9ucy5lbmQoKSkKQEAgLTgzLDcgKzgzLDcgQEAgVmVjdG9yPFJlZjxT
aGFyZWRCdWZmZXI+PiBNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElE
KGNvbnN0IFN0cmkKICAgICByZXR1cm4gV1RGTW92ZShpdC0+dmFsdWUpOwogfQogCi1jb25zdCBW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+KiBNb2NrQ0RNRmFjdG9yeTo6a2V5c0ZvclNlc3Npb25X
aXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3QKK2NvbnN0IFZlY3RvcjxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+KiBNb2NrQ0RNRmFjdG9yeTo6a2V5c0ZvclNlc3Npb25XaXRoSUQoY29u
c3QgU3RyaW5nJiBpZCkgY29uc3QKIHsKICAgICBhdXRvIGl0ID0gbV9zZXNzaW9ucy5maW5kKGlk
KTsKICAgICBpZiAoaXQgPT0gbV9zZXNzaW9ucy5lbmQoKSkKQEAgLTIwMiw3ICsyMDIsNyBAQCBi
b29sIE1vY2tDRE06OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJldHVybiBtX2ZhY3Rv
cnkgJiYgbV9mYWN0b3J5LT5zdXBwb3J0c1Nlc3Npb25zKCk7CiB9CiAKLWJvb2wgTW9ja0NETTo6
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAgICBpZiAoIXN1cHBvcnRlZEluaXREYXRhVHlw
ZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
MTEsNyArMjExLDcgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmUKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25z
dCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgYXV0byBidWZmZXIgPSByZXNwb25zZS5tYWtl
Q29udGlndW91cygpOwogICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGJ1ZmZlci0+ZGF0
YSgpLCByZXNwb25zZS5zaXplKCkpKQpAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgTW9ja0NETUlu
c3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1D
b25maWd1cmF0CiAgICAgY2FsbGJhY2soaW5pdGlhbGl6ZSgpKTsKIH0KIAotdm9pZCBNb2NrQ0RN
SW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlm
aWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2U6
OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNlcnRp
ZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBTdHJpbmdWaWV3IGNl
cnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKIApAQCAtMjk4LDcgKzI5OCw3IEBAIE1vY2tDRE1JbnN0
YW5jZVNlc3Npb246Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxNb2NrQ0RNSW5zdGFu
Y2U+JiYgaW5zdGFuCiB7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVz
dExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExp
Y2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBj
YWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBt
X2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewpAQCAt
MzI0LDcgKzMyNCw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TCiAgICAgY2FsbGJhY2soU2hh
cmVkQnVmZmVyOjpjcmVhdGUobGljZW5zZS5kYXRhKCksIGxpY2Vuc2UubGVuZ3RoKCkpLCBzZXNz
aW9uSUQsIGZhbHNlLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgTW9ja0NE
TUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwg
TGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVD
YWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxi
YWNrKQogewogICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5z
dGFuY2UtPmZhY3RvcnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKaW5kZXggZjVjZGE1MDVjZjJhMzNjMTA1ZjAy
NWM5N2M5MzUwYTk2ODY5OGUxZS4uZDk2YzE1NmVlNGQyNzkxYjhiMDk5OGRhZjk0MGVjNzUzNzgw
N2JjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaApAQCAtNzcsOSAr
NzcsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5n
JiBpZCkgeyByZXR1cm4gbV9zZXNzaW9ucy5jb250YWlucyhpZCk7IH0KICAgICB2b2lkIHJlbW92
ZVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgeyBtX3Nlc3Npb25zLnJlbW92ZShpZCk7
IH0KLSAgICB2b2lkIGFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+PiYmKTsKLSAgICBjb25zdCBWZWN0b3I8UmVmPFNoYXJlZEJ1
ZmZlcj4+KiBrZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdDsKLSAg
ICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IHJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChj
b25zdCBTdHJpbmcmIGlkKTsKKyAgICB2b2lkIGFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3Qg
U3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJik7CisgICAg
Y29uc3QgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4qIGtleXNGb3JTZXNzaW9u
V2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0OworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+IHJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcm
IGlkKTsKIAogcHJpdmF0ZToKICAgICBNb2NrQ0RNRmFjdG9yeSgpOwpAQCAtOTYsNyArOTYsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9jYW5DcmVhdGVJbnN0YW5jZXMgeyB0cnVlIH07CiAgICAg
Ym9vbCBtX3N1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9z
dXBwb3J0c1Nlc3Npb25zIHsgdHJ1ZSB9OwotICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+PiBtX3Nlc3Npb25zOworICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gbV9zZXNzaW9uczsKIH07CiAKIGNsYXNzIE1v
Y2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZSB7CkBAIC0xMjEsOCArMTIxLDggQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nl
cnZlckNlcnRpZmljYXRlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9u
cygpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5h
bDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vz
c2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiAgICAgV2Vha1B0cjxNb2NrQ0RN
RmFjdG9yeT4gbV9mYWN0b3J5OwpAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6TW9jazsgfQogICAgIHZvaWQgaW5pdGlhbGl6
ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFs
bG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3ND
YWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFy
ZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJh
Y2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYp
IGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CiAgICAg
UmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAtMTU0
LDggKzE1NCw4IEBAIHB1YmxpYzoKICAgICBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8
TW9ja0NETUluc3RhbmNlPiYmKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7
CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFs
OwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNl
c3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAg
dm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3Zl
U2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ29udGVudEZpbHRlci5jcHAKaW5kZXggZmMxMjdiN2I2N2JlYTczNDQ2M2NkMmQ1YjA3NTZi
NTliZWJhNThhZS4uMDU5ZjNhMzg2YjZjZjVmYTc5YjNjMTg5NzAxNTMxM2Y3Y2RiNGVmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKQEAgLTExMCw3
ICsxMTAsNyBAQCB2b2lkIE1vY2tDb250ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQog
ICAgIG1heWJlRGV0ZXJtaW5lU3RhdHVzKERlY2lzaW9uUG9pbnQ6OkFmdGVyRmluaXNoZWRBZGRp
bmdEYXRhKTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gTW9ja0NvbnRlbnRGaWx0ZXI6OnJlcGxh
Y2VtZW50RGF0YSgpIGNvbnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTW9ja0NvbnRl
bnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRpZEJsb2Nr
RGF0YSgpKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9yZXBsYWNlbWVudERh
dGEuZGF0YSgpLCBtX3JlcGxhY2VtZW50RGF0YS5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlci5oCmluZGV4IDQxMWEzMDA5NDdiNTM5ZTI2YWE2YzY0YTAw
OTMyOTJlOWZmYmU2YjkuLjYzNWFjODRiZTc5Mzg0N2FhNTcyMTNkMDFmZmMxZTc0Zjc2Yjc1OTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKQEAgLTQyLDcg
KzQyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkg
b3ZlcnJpZGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0
YSgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlk
ZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKaW5kZXggMzdmMWE0
ODdmOGM1MmI0NGVhMjQzMGNjY2QxZmEwMjVlZTkxYWFjMy4uZmQyYzFhZTJmNjNiNjBkNzRjMzBk
MjQyYTk4OWEwYmZkOTFkZTQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
Y3JpcHRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5o
CkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFNjcmlwdEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgU2Ny
aXB0QnVmZmVyKCkgPSBkZWZhdWx0OwogCi0gICAgU2NyaXB0QnVmZmVyKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQorICAgIFNjcmlwdEJ1ZmZlcihSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQog
ICAgIHsKICAgICB9CkBAIC00OCw5ICs0OCw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcgdG9T
dHJpbmcoKSBjb25zdDsKLSAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0K
IAotICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRC
dWZmZXIobV9idWZmZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5KCkpIDog
bnVsbHB0cik7IH0KKyAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1
cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
KG1fYnVmZmVyLmNvcHkoKSkgOiBudWxscHRyKTsgfQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJv
b2woKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIuaXNFbXB0eSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA4NWU3NjM4M2RhYjM1M2E0
ZmM0YjA5ZDEyNzcxODVhMDBlOWUyMzk3Li40MDY2ZmIzNTJlYjViMDg3ZDVkOGQ0N2Q4MDJmZDJj
MGE2YTgwZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9h
ZFJlcXVlc3QuY3BwCkBAIC04NCw3ICs4NCw3IEBAIGJvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0
Ojppc1BlbmRpbmcoKSBjb25zdAogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1
c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3VzdG9t
UGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAg
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YTsKKyAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CiAgICAgICAgIGlmIChtX2Rh
dGEtPmdldCgpKQogICAgICAgICAgICAgY29udGlndW91c0RhdGEgPSBtX2RhdGEtPnRha2UoKS0+
bWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShj
b250aWd1b3VzRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCAwYmNkOTc2ZWRh
OWQ0YTc4MTA5ZTYyNjNkODEwOGMzNzUwNzU4Yjc3Li44YTkxMzhkMjNiMGQ1ZGVjNTNkMjk5MGRl
ZDVkYjc3NjM1NGU1MjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTEzMSw3ICsx
MzEsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQs
IEV4cGVjdGVkPFJlZjxGZXRjaFJlc3BvbnNlPiwgcwogICAgIGF1dG8gYm9keSA9IHJlc3BvbnNl
LT5jb25zdW1lQm9keSgpOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChSZWY8Rm9ybURh
dGE+JiBmb3JtRGF0YSkgewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZp
bmlzaChXVEZNb3ZlKGZvcm1EYXRhKSk7Ci0gICAgfSwgWyZdIChSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CiAg
ICAgICAgIGNsaWVudC0+ZGlkRmluaXNoKCk7CiAgICAgfSwgWyZdIChzdGQ6Om51bGxwdHJfdCYp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJGZXRjaC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlckZldGNoLmgKaW5kZXggZWIyNjZiNmMwN2U2NzNkOTE2NmNhY2U2YjMz
OTE5ZDgwZWJiZjMxYy4uMDk3NTQzZTFiM2IzMGZmMzE0N2Q5MjMyYTU4Y2U0YTllNjJmM2U0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlckZldGNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlckZldGNoLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZTsKIGNsYXNzIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBTZXJ2aWNl
V29ya2VyRmV0Y2ggewogY2xhc3MgQ2xpZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PENsaWVudCwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4gewpAQCAtNTEsNyArNTEsNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8Rm9ybURhdGE+JiYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2goKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKaW5kZXgg
MDNhNzIxMWZjZWJiMWY4ZTQ2MjhkNTllYTQ1YmNjYjc4ODAyZmI0MS4uOWE4ZmIzNWNhNTM2MTA1
YmI2ZDZmYzQ2ZWUxMjI0NTkzM2Y3MGJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAtMTI3LDcg
KzEyNyw3IEBAIFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzCiAgICAgfQogCiAgICAgLy8gRklYTUU6
IERvIHdlIG5lZWQgdG8gZGlzYWJsZSBmaWxlIG1hcHBpbmcgaW4gbW9yZSBjYXNlcyB0byBhdm9p
ZCBoYXZpbmcgdG9vIG1hbnkgZmlsZSBkZXNjcmlwdG9ycyBvcGVuPwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0
ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlV
c2VGaWxlTWFwcGluZzo6Tm8pOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRo
LCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBp
bmcoKmZpbGVTaXplKSA/IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IFNo
YXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKICAgICByZXR1cm4gYnVmZmVyOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAppbmRleCBh
MzBmNTE0MWE4ZTE0ZjI3OGY1YjkxMzE3MzNkMjYxNDYyODEyY2I2Li5kZjhhYmU0MjZlMDY3MTcx
YWZmZjkwZTAzMzM4NTA1OWYzMzEwMzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgeG1sRG9jUHRyIGRv
Y0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAogICAgICAgICBSZXNvdXJjZUVycm9yIGVy
cm9yOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogCi0gICAgICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOworICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhOwogCiAgICAgICAgIGJvb2wgcmVxdWVzdEFsbG93ZWQgPSBnbG9iYWxDYWNoZWRS
ZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSAmJiBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVybCk7CiAgICAgICAgIGlmIChy
ZXF1ZXN0QWxsb3dlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGRiMjZiYjM5ZGQ1YWY5OWYzMWU2NjJj
MzRjZWQzZGJmOTY3N2Y1YWIuLmE4YzNlMThlNDdhZWNhZDBhMDIyYTA4NGM0OWEyMWY2YzcxNGMz
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgdm9pZCogb3BlbkZ1
bmMoY29uc3QgY2hhciogdXJpKQogICAgICAgICByZXR1cm4gJmdsb2JhbERlc2NyaXB0b3I7CiAK
ICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CiAKICAgICB7
CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKaW5kZXggNTcz
MDY3ZTNkZDA1MGZlYjdjNTc5ZDAwMTAyZWU5ZjYwNDViNTMxMy4uMzFjMmQ3NmYyZWUxYjlkMjQ5
YjAwMWI3ZWZmODkyZWMyYTc0NTZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcApAQCAtNjEsNyArNjEs
NyBAQCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojp+UmVtb3RlQ0RNSW5zdGFuY2VQcm94eSgpCiAg
ICAgbV9pbnN0YW5jZS0+Y2xlYXJDbGllbnQoKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5j
ZVByb3h5Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKK3ZvaWQgUmVtb3RlQ0RNSW5z
dGFuY2VQcm94eTo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBT
dHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewog
ICAgIGlmICghbV9jZG0pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCmluZGV4IDhlNzNk
M2Q5YTY0Yjk4YmZjMDA5MzZjZDQ3YzRjMjVhOTI3OWYyYzguLjAyYzVjZDM3YWU1NDgwMmY2ZDBj
OGRjY2NiMGJhODBjZjMzODhjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaApAQCAtNjYsNyArNjYsNyBAQCBw
cml2YXRlOgogICAgIFJlbW90ZUNETUluc3RhbmNlUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1Qcm94
eT4mJiwgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlPiYmLCBVbmlxdWVSZWY8UmVtb3RlQ0RNSW5z
dGFuY2VDb25maWd1cmF0aW9uPiYmLCBSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXIpOwogCiAg
ICAgLy8gQ0RNSW5zdGFuY2VDbGllbnQKLSAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRp
b25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CisgICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVk
KGNvbnN0IFN0cmluZyYsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkuY3BwCmluZGV4IGU1NzY2YzIzMzRjZmQzODkzMTBjZDRiMjE3MjNj
YWJhMzc0MmZjN2MuLmRlODI3M2I5Y2Y1MDBhNGQ2NmFhMTQ0ZWRlMDIwMWVlZjFlZDg2MmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIFJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0
eXBlLCBBdG9tU3RyaW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Nlc3Npb24t
PnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVs
ZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVk
c0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNj
ZWVkZWQpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UodHlwZSwgaW5p
dERhdGFUeXBlLCBpbml0RGF0YS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBbY29tcGxldGlv
biA9IFdURk1vdmUoY29tcGxldGlvbildIChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBt
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0
aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUg
ewogICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUobWVzc2FnZSksIHNlc3Npb25JZCwgbmVlZHNJ
bmRpdmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vl
ZGVkKTsKICAgICB9KTsKIH0KQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENs
b3NlUwogCiB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZW1vdmVTZXNzaW9u
RGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVtb3ZlU2Vz
c2lvbkRhdGFDYWxsYmFjayYmIGNvbXBsZXRpb24pCiB7Ci0gICAgbV9zZXNzaW9uLT5yZW1vdmVT
ZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0
aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMs
IHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYgZXhwaXJlZFNlc3Npb25zRGF0YSwg
Q0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAg
ICBtX3Nlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSwgW2NvbXBsZXRp
b24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNW
ZWN0b3ImJiBrZXlTdGF0dXNlcywgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+JiYgZXhwaXJlZFNlc3Npb25zRGF0YSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNz
VmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxJUEM6OlNo
YXJlZEJ1ZmZlckNvcHk+IGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5jZTsKICAgICAgICAgaWYg
KGV4cGlyZWRTZXNzaW9uc0RhdGEpCiAgICAgICAgICAgICBleHBpcmVkU2Vzc2lvbkRhdGFSZWZl
cmVuY2UgPSBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZSgqZXhwaXJlZFNlc3Npb25zRGF0
YSkpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHk6OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1CiAgICAgZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbjo6VXBkYXRlS2V5U3RhdHVzZXMoV1RGTW92ZShrZXlTdGF0dXNl
cykpLCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5OjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IG1lc3NhZ2UpCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZW5kTWVzc2Fn
ZShDRE1NZXNzYWdlVHlwZSB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNz
YWdlKQogewogICAgIGlmICghbV9jZG0pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5LmgKaW5kZXggOGE2MWY5ZDVmYWJjODQ4NmE3YTBlODYwZjRjNjMxMmMwYjQ0NTUx
NC4uZmU3MzA5NzEzMWUwYmIyMGE1MDAxZTE1MDE2MDJkNjUxODZiMzA5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENE
TUluc3RhbmNlU2Vzc2lvbkNsaWVudAogICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5U3Rh
dHVzVmVjdG9yJiYpIGZpbmFsOwotICAgIHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVz
c2FnZVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7Cisg
ICAgdm9pZCBzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSwgUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CiAgICAgdm9pZCBzZXNz
aW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFBsYXRmb3JtRGlzcGxheUlE
IGRpc3BsYXlJRCgpIGZpbmFsIHsgcmV0dXJuIG1fZGlzcGxheUlEOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCmluZGV4IDlhYjM1
NzVmNGMzYjU1OTU1NWI5Yjg3YjIzMzcxYjFiMWE2NmRjMTcuLmY3Y2I2YTYzZWI5MzNhYmQ0ZDQ1
M2EyMmFiMjk0ZjEzMDMyMzJiMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETVByb3h5LmNwcApAQCAtNjMsMTIgKzYzLDEyIEBAIFJlbW90ZUNETVBy
b3h5OjpSZW1vdGVDRE1Qcm94eShXZWFrUHRyPFJlbW90ZUNETUZhY3RvcnlQcm94eT4mJiBmYWN0
b3J5LCBzdGQ6OnVuCiAKIFJlbW90ZUNETVByb3h5Ojp+UmVtb3RlQ0RNUHJveHkoKSA9IGRlZmF1
bHQ7CiAKLWJvb2wgUmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0
cmluZyYgdHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQorYm9vbCBSZW1vdGVDRE1Qcm94
eTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPnN1cHBvcnRz
SW5pdERhdGEodHlwZSwgZGF0YSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFJlbW90ZUNE
TVByb3h5OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCitS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVz
cG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCiB7CiAgICAgcmV0
dXJuIG1fcHJpdmF0ZS0+c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oCmluZGV4IDY5MjRlNzRl
M2Y1MDExYmUyMTViZTRiZDk2YjIzNDgyNjQ3MGY0MjMuLjNiNjZjNzc1Nzg3MDY5ZTk3NmVlMDY0
Zjk2ZmYwN2MwZjcxMmE5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1Qcm94eS5oCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogZW51bSBjbGFzcyBDRE1SZXF1aXJlbWVudCA6IHVp
bnQ4X3Q7CiBlbnVtIGNsYXNzIENETVNlc3Npb25UeXBlIDogdWludDhfdDsKIHN0cnVjdCBDRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uOwpAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAKICAgICBS
ZW1vdGVDRE1GYWN0b3J5UHJveHkqIGZhY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2ZhY3Rvcnku
Z2V0KCk7IH0KIAotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwg
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIHJl
c3BvbnNlKTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNv
bnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSk7CiAgICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKTsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVByb3h5LmgKaW5kZXggZTJjZDA1ZDdjYzc0ZjIwZWM2OWZhZGZlM2VlMDg1NzU5MmFk
ODc5Yi4uZGU4ZjZkZjU1YTZlMWZhOGJlOTY2Zjk0MWUwN2ZlMmY1YzUwMjFhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5
LmgKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaApp
bmRleCBmMTRjNjI3ZjY1OTNlMWE4NzhkMGY0NTk5MmIzYzQxYjIyMmM3ZjAwLi4xNTQ2YmRmZGZk
Y2YwOTEwODc4OTQ0ZjM0MDc5NjdhN2FiMzhiZjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5o
CkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMZWdhY3lDRE07
CiBjbGFzcyBMZWdhY3lDRE1TZXNzaW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIElQQyB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKaW5k
ZXggYzQ1ZTUyNTVkNjdiNTJjN2FlMTA0NDk5ODhjZTAxOTBjN2ZmYjUzOC4uNjE3ZjQ3Njg5NTY0
MmRlYzIzMjU0YjU0MGVlODE5MTFhYzRhMmRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcApAQCAtOTYsNyArOTYs
NyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFTZW50KHVpbnQ2NF90IGJ5dGVzU2Vu
dCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZQogICAgICAgICBtX2NsaWVudC0+ZGF0YVNlbnQo
KnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIAotdm9pZCBSZW1vdGVN
ZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9p
ZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgZGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5k
YXRhUmVjZWl2ZWQoKnRoaXMsIFdURk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKaW5kZXggZDEzZDI1ZjY1
ZjAyMjRhNmM3NjdmNjlhNGQ0MTljZDA1M2JiNzk1ZC4uNWI3YTdlMmE3NDI0NDMyZDg2Y2IyOGEx
YmU3MTcxOGExNjczNzVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKTsKICAgICB2b2lkIHJl
ZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCBkYXRhU2VudCh1aW50NjRfdCwgdWludDY0X3Qp
OwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOwor
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2Vi
cnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IGViZGU3NTMwZWM4NmZmNmM0MWJlY2Q0
ZTVlYzQyOGEzYzhhZjgwZjcuLmU4M2Y5MTQzZDIwYTcyZTJiZTRmZmNiZmVkMTNiMGJiNGRkMzFl
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1v
dGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgUmVtb3RlTWVkaWFS
ZWNvcmRlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUm
JiByZW1vCiB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIG1fd3JpdGVyLT5mZXRjaERhdGEoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBkYXRhLCBhdXRvIHRpbWVDb2RlKSBtdXRh
YmxlIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMo
KSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOworICAgICAgICBh
dXRvIGJ1ZmZlciA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4oKTsKICAgICAgICAgYXV0byogcG9pbnRlciA9IGJ1ZmZlciA/IGJ1
ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpE
YXRhUmVmZXJlbmNlIHsgcG9pbnRlciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAgfSwgdGltZUNv
ZGUpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAppbmRleCA1MmNjNWRhMTIxYTJmYjU5ZDhjZjA1
OTNiNjg1MDlmZDY1NWMwY2RjLi43MWZkMDIyMjliYmIxYzU3MzI2ZmRmY2ZlMjZjMTFmNzYxYWJj
ZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Q
ZW5kaW5nRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9QZW5kaW5nRG93bmxvYWQuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOyB9CiAgICAgdm9pZCB3aWxsU2Vu
ZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7
IH07CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcApp
bmRleCAzZjM5ZWIzMmYxYWE4MDc2Nzg1ZGE3OWVlMTFkYWQ4ZjBjMzI2Yjc5Li5kODkyMGU5ODc2
NGZkOWI2NGI5Y2RkYzYwYTFkODRkNjE5YjJkNDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3Bw
CkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYKICAgICBjb21wbGV0
aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7CiB9CiAKLXZvaWQgTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KQordm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVEYXRhKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQogewogICAgIENPUlNfQ0hFQ0tFUl9S
RUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGEiKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCmluZGV4
IGJiYjE0NjJhMzE2MWUyZmNlOWVhNTc4NDRiMTliOTNlNjE5YzgxYjAuLmUxMWJmNTYzMTkwN2Fl
NDczMzZlZjg1YTVkMjJlODgzNTc0NjUxYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaApAQCAtNzEs
NyArNzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24o
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
UmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVD
aGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExl
Z2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVk
TGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7
CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3Qg
dG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5o
CmluZGV4IGQ2MDE4ZjYxMzgzYWUzYTUxZTlkNDcyMmNmNmE2MGUyZDhiODdhN2QuLmUwNDllNWIx
MmRkZTVmZTUxYjQ2OTU1Mjg5YTdhN2Y2OTk4MmFmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIFJlc291
cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwg
Y29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRl
c0V4cGVjdGVkVG9TZW5kKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdhc0Jsb2NrZWQoKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCmluZGV4IGJh
YzAyMmFiNDU0MzBmNjUxYjE4OWFjMDEyMDdhMDYwNjA4YzE2NzEuLjc5NzVkNDFiYWQ4OTE1ZmVl
ZGJkYWIxNTU0ZTgxZTFkYjIwMzBmODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuY3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBOZXR3b3JrTG9hZDo6
bm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVn
b3RpYXQKICAgICBtX2NsaWVudC5nZXQoKS5kaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShyZXNw
b25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrTG9h
ZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIE5ldHdv
cmtMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHRoZSBlbmNvZGVkIGRhdGEgbGVu
Z3RoLCBub3QgdGhlIGRlY29kZWQgZGF0YSBsZW5ndGguCiAgICAgYXV0byBzaXplID0gYnVmZmVy
LT5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKaW5k
ZXggYzM3NzNjOTg3ODU1M2NlNTM0ZDA1NGFiZmZkZGViYjI5ZWUwODRkMi4uZWU1ZWIwMDZhYTM3
OWI3OGZjYmMwYmQxNzRlMzJiZDYzOWY5NWU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWQuaApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBm
aW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhh
bmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0
ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRf
dCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5h
bDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAppbmRleCAwYTVmNjZiZDk2N2VjOWZkZjY2
NGU1MmU1YWYzOTRlNDhlY2UxZjdiLi4zNDhjZmZiOWU4ZTI1ZWU4M2JiYjM5YTAyY2QzY2Y2ZDI4
NTRkMzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZENsaWVudC5oCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBlbnVtIGNsYXNz
IFBvbGljeUFjdGlvbiA6IHVpbnQ4X3Q7CiB9CiAKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50
LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9u
c2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxM
b2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSB7IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggNjM5OWFmZDE2ZWQ4MzMxYWIyMzg4OGJiYTY5NmE3MGQ4NzI4ZmUwZi4uMGU1ZWI1YWRjMDEy
ZjFmMmVhNzY2ZmNjMWE0NTUzOWZkNWQ4OWMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtODcsNyArODcs
NyBAQCBzdHJ1Y3QgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRhIHsK
ICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogfTsKIAotc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9T
eW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWRE
YXRhJiBkYXRhLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQorc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVl
c3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRhJiBkYXRhLCBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKICAgICBBU1NFUlQoZGF0YS5kZWxheWVkUmVwbHkpOwogICAgIEFTU0VS
VCghZGF0YS5yZXNwb25zZS5pc051bGwoKSB8fCAhZGF0YS5lcnJvci5pc051bGwoKSk7CkBAIC04
NjAsNyArODYwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmREaWRSZWNlaXZl
UmVzcG9uc2VQb3RlbnRpYWxseUluTmV3QnJvd3NpbmdDb250ZXgKICAgICB9KTsKIH0KIAotdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAo
IW1fbnVtQnl0ZXNSZWNlaXZlZCkKICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNl
aXZlQnVmZmVyOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChyZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoPSVkKSIsIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwpAQCAtMTI3MCw3ICsxMjcwLDcg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQoKQogICAg
IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAwOwogfQogCi12b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVu
Y29kZWREYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgp
CiB7CiAgICAgQVNTRVJUKCFpc1N5bmNocm9ub3VzKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCAzNDVjMmZi
YTc5OGM2ZGI2YWRiNzcyMTEzMGJlMDRmMGRmNDQxNWI4Li45ODQ0MjRhMzA2ODFhMzYwZmM2MGM5
ZTdhOWRkNGU2YmI0MjZkZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgQmxv
YkRhdGFGaWxlUmVmZXJlbmNlOwogY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBOZXR3b3JrU3RvcmFn
ZVNlc3Npb247CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsK
IH0KIApAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQWxsb3dlZFRvQXNr
VXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fz
a1VzZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVz
dChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZp
bmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGRpZEJsb2NrQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoKSBmaW5hbDsKQEAgLTE5NSw3ICsxOTUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKICAgICB2b2lkIGJ1ZmZlcmluZ1RpbWVy
RmlyZWQoKTsKLSAgICB2b2lkIHNlbmRCdWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwgc2l6
ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIHNlbmRCdWZmZXIoV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAKICAgICB2
b2lkIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogICAgIHZvaWQgaW52YWxpZGF0ZVNhbmRi
b3hFeHRlbnNpb25zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3Bw
CmluZGV4IDExNDg1M2U0NWI3MjUzMzY0Yzc0N2E3MWNiMmI1YWI4Y2MzOGVmZDUuLjFhZjFlMDhl
M2M0NDFlMjRmMzAwNjVlOWYyMDc3NmU2ZjlmYzMzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBQaW5nTG9hZDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRl
ZExlZ2FjeVQKICAgICBkaWRGaW5pc2goeyB9LCByZXNwb25zZSk7CiB9CiAKLXZvaWQgUGluZ0xv
YWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lkIFBpbmdMb2FkOjpk
aWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKIHsKICAgICBQSU5H
X1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YSIpOwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4IDE5ZWM4Y2ViOTJl
M2M4YTA1NmY0OTI3MzY2MGNmZmY5MjY0MzQxZDEuLmFiMjlhMGIxYWM4NDY2YjBlZDYxZWY1OGVm
NGMyMjBhYmFiNmViZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgK
QEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290
aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVn
b3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
OworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVp
bnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9j
a2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
ZWNvbm5lY3RUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVj
dFRhc2suY3BwCmluZGV4IDQ1NTc4MmQ1NGEyZWE5YmVlMTg2NTBlMWFmZDFjZjdiMmNlOThjNDku
LjE3ZDQ3OTA3YTNmNmVlNTJiZTY1MDFkMWRhYjBjYTYwNzUxZDZiMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCkBAIC03OSw3ICs3OSw3
IEBAIHZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5
QWN0aW9uOjpJZ25vcmUpOwogfQogCi12b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQor
dm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByZWNvbm5lY3RUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNv
bm5lY3RUYXNrLmgKaW5kZXggMWMxZmYxNjQ3MTExYzZmYTg0OTRhZjVjZjBjN2JiZWFhMWIyNjUw
My4uODU4MDhlMTIxYjY4Y2E4YjczZTI1MThkMTkzYWIzOTU4MWVhZDFlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaApAQCAtNTUsNyArNTUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVz
U2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAg
dm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5h
bDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXIuY3BwCmluZGV4IDNhNTUxNzQ5MDFkNDc4OTljMWMwMmQwZDI3YTg4OGE3
Y2JkYTVkNjIuLjgxOTY2MzAyMGM2OTVjZTBjNmFiYTk5OWM2NzVhYWI0MjgyYzdmZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNw
cApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzCiAgICAgICAgIGNh
bGxiYWNrKCk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmIChtX2JvZHlDYWxsYmFjaykK
ICAgICAgICAgbV9ib2R5Q2FsbGJhY2soYnVmZmVyLT5tYWtlQ29udGlndW91cygpLCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZGVyLmgKaW5kZXggNWM0YzhlNzFkNGRkMzgzNWMxZDU3MjJiODFjYzdi
NTk4NDBlOGFhOC4uZWUxYmM4YjdkNmNiZmZjMzM0MWQ2NzNmYjcyNDIyMzhmNjcxN2YyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgK
QEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgdXNpbmcgUmVzcG9uc2VDYWxsYmFjayA9
IEZ1bmN0aW9uPHZvaWQoKT47CiAgICAgdm9pZCB3YWl0Rm9yUmVzcG9uc2UoUmVzcG9uc2VDYWxs
YmFjayYmKTsKLSAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCk+OworICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
PjsKICAgICB2b2lkIHdhaXRGb3JCb2R5KEJvZHlDYWxsYmFjayYmKTsKIAogICAgIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQpA
QCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9y
Q3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2ls
bFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZp
bmFsOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3M7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3Bw
CmluZGV4IDk0MjM1MzQ4MjczZTg5MWIwN2I4NzU2MWMxZDYxMmVhMmE0NDM1OTMuLjdhMjYyMjE5
ZGU3OGIyMzVkMTI1YTkyYjZlMjM2ZDMzMjYyZjdhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIFJl
c291cmNlRXJyb3IgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OnByb2Nlc3NSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAg
ICAgaWYgKCFtX2RlY29kZXIpIHsKICAgICAgICAgaWYgKCFtX3Jlc3BvbnNlRW5jb2RpbmcuaXNF
bXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
aAppbmRleCAxOGY1NDY5MWYzN2MyYmFiYmM4YzFhM2JjMDk0MzcwZTliMjllYjcxLi40NGZjMDY4
NWZhMGZlZGM4NzQyMTkxNmU5MTNhNjc0YjFjMGZkYmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVk
aXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmco
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGUuY3BwCmluZGV4IGZkYmZiMTQzNTk3NmNiZjY1ZjYxMjU2ODNhYzFlZGQyNDA5ZTI3ODcu
LjZmMjZiNGNjMmRlZmEwZDk4ODdjNmY0MjQ1ZThmNTRmYmVjNGJhMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGUuY3BwCkBAIC01ODEsNyArNTgxLDcgQEAgU3RvcmFnZTo6UmVjb3JkIENhY2hl
OjplbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm9ybWF0aW9uLCBjb25z
dAogICAgIERhdGEgYm9keTsKICAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHks
IFtdKGNvbnN0IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIC8v
IEZJWE1FOiBTdG9yZSBmb3JtIGRhdGEgYm9keS4KLSAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oY29uc3Qg
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBib2R5ID0geyBi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfTsKICAgICB9LCBbXShjb25zdCBzdGQ6Om51
bGxwdHJfdCYpIHsKICAgICB9KTsKQEAgLTY3Myw3ICs2NzMsNyBAQCBzdGQ6Om9wdGlvbmFsPFJl
Y29yZD4gQ2FjaGU6OmRlY29kZShjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHJlY29yZCA9IFdURk1vdmUocmVz
dWx0LT5yZWNvcmQpOwotICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5
LnNpemUoKSk7CisgICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOwogCiAg
ICAgcmV0dXJuIHJlY29yZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCAwNDc3NjgzNmY5OTkwOTM5MTBiMzk5ZDc1
NTM4NTVkNWQzZjFmZjRlLi5kZDMwNWFmMjk3NjYxZTQ3NmM0OTY3N2RmNTcyMWVmZDFlYzkzMmY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGUuY3BwCkBAIC00NTQsNyArNDU0LDcgQEAgdm9pZCBDYWNoZTo6Y29tcGxldGVSZXRyaWV2
ZShSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlciwgc3RkOjp1bmlxdWVfcHQKICAg
ICBoYW5kbGVyKFdURk1vdmUoZW50cnkpLCBpbmZvKTsKIH0KICAgICAKLXN0ZDo6dW5pcXVlX3B0
cjxFbnRyeT4gQ2FjaGU6Om1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSkKK3N0ZDo6dW5pcXVlX3B0
cjxFbnRyeT4gQ2FjaGU6Om1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQ
dHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEpCiB7CiAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwgcmVzcG9u
c2UsIFdURk1vdmUocmVzcG9uc2VEYXRhKSwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0
SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbklEKSwgcmVx
dWVzdCwgcmVzcG9uc2UpKTsKIH0KQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
RW50cnk+IENhY2hlOjptYWtlUmVkaXJlY3RFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0
KSwgcmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1
ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbklEKSwg
cmVxdWVzdCwgcmVzcG9uc2UpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6
c3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiByZXNwb25zZURhdGEsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmUoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgcmVzcG9uc2VEYXRhLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQocmVzcG9uc2VEYXRhKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKaW5kZXggMTk5ZjBj
ZmI3MzI1NDNjNWZlYWY0ZmUyMzAxZTZhMWMxMmY4OGZlOC4uZWQwNGViY2EwYjM2ZjNmOWM0YzBl
N2JhYzcxMzM2YjllOTZjMzU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCkBAIC00Myw3ICs0Myw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBMb3dQb3dlck1vZGVOb3RpZmllcjsKIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTY2LDcgKzE2Niw3IEBAIHB1YmxpYzoKICAgICB9
OwogICAgIHVzaW5nIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkKHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeT4sIGNvbnN0IFJldHJpZXZlSW5mbyYpPjsKICAgICB2b2lkIHJl
dHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1l
SUQmLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgUmV0cmlldmVD
b21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkKE1h
cHBlZEJvZHkmKT4mJiA9IG51bGxwdHIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3Rv
cmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBG
dW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiA9IG51bGxwdHIpOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeT4gc3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdl
Q2FwKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHVwZGF0ZShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHZhbGlkYXRpbmdSZXNwb25zZSk7CiAKQEAgLTE4NSw3ICsxODUsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZXRyaWV2ZURhdGEoY29uc3QgRGF0YUtleSYsIEZ1bmN0aW9uPHZvaWQoY29u
c3QgdWludDhfdCosIHNpemVfdCk+KTsKICAgICB2b2lkIHN0b3JlRGF0YShjb25zdCBEYXRhS2V5
JiwgIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiBtYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbWFrZUVudHJ5KGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEVudHJ5PiBtYWtlUmVkaXJlY3RFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwogCiAgICAgdm9pZCBkdW1wQ29udGVu
dHNUb0ZpbGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXggZjFlZmZmMzUwZmEzN2Y2YjQ2ODE1OWZj
NjYyZTdhYTk0MjgzZDdlMS4uNzYxMDc4ZGVhMDkzYzA0NTU1YmU5OGIwNTE3M2UzNDE1MDY3YTg1
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAKLUVudHJ5OjpFbnRyeShjb25zdCBLZXkmIGtl
eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmlu
ZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycykKK0VudHJ5OjpFbnRyeShjb25zdCBL
ZXkmIGtleSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9y
PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpCiAgICAg
OiBtX2tleShrZXkpCiAgICAgLCBtX3RpbWVTdGFtcChXYWxsVGltZTo6bm93KCkpCiAgICAgLCBt
X3Jlc3BvbnNlKHJlc3BvbnNlKQpAQCAtMTAzLDcgKzEwMyw3IEBAIFN0b3JhZ2U6OlJlY29yZCBF
bnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29uc3QKICAgICBEYXRhIGJvZHk7CiAgICAg
aWYgKG1fYnVmZmVyKSB7CiAgICAgICAgIG1fYnVmZmVyID0gbV9idWZmZXItPm1ha2VDb250aWd1
b3VzKCk7Ci0gICAgICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqPihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9
OworICAgICAgICBib2R5ID0geyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpTaGFyZWRCdWZmZXIqPiht
X2J1ZmZlci5nZXQoKSktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9OwogICAgIH0KIAogICAg
IHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7IH0gfTsKQEAgLTE5
Niw3ICsxOTYsNyBAQCB2b2lkIEVudHJ5Ojppbml0aWFsaXplQnVmZmVyRnJvbVN0b3JhZ2VSZWNv
cmQoKSBjb25zdAogICAgIG1fYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
bV9zb3VyY2VTdG9yYWdlUmVjb3JkLmJvZHkuZGF0YSgpLCBtX3NvdXJjZVN0b3JhZ2VSZWNvcmQu
Ym9keS5zaXplKCkpOwogfQogCi1XZWJDb3JlOjpTaGFyZWRCdWZmZXIqIEVudHJ5OjpidWZmZXIo
KSBjb25zdAorV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogRW50cnk6OmJ1ZmZlcigp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgaW5pdGlhbGl6ZUJ1ZmZlckZy
b21TdG9yYWdlUmVjb3JkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKaW5kZXggOTY5MTVjMzgwMWMzN2RkYWMzZThl
NjAzMjFmODhjMjIyOWNkNTlhMC4uOWMwNDIwZDQ0YTgxNThkZmM1YjIxY2YxODgyMDRjZjNhOTE2
YjQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRW50cnkuaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBjbGFzcyBFbnRyeSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgRW50cnkoY29uc3Qg
S2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYg
dmFyeWluZ1JlcXVlc3RIZWFkZXJzKTsKKyAgICBFbnRyeShjb25zdCBLZXkmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWlu
Z1JlcXVlc3RIZWFkZXJzKTsKICAgICBFbnRyeShjb25zdCBLZXkmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVj
dFJlcXVlc3QsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWlu
Z1JlcXVlc3RIZWFkZXJzKTsKICAgICBleHBsaWNpdCBFbnRyeShjb25zdCBTdG9yYWdlOjpSZWNv
cmQmKTsKICAgICBFbnRyeShjb25zdCBFbnRyeSYpOwpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6
CiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7
IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAgICAgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcs
IFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMoKSBjb25zdCB7IHJldHVybiBtX3Zhcnlp
bmdSZXF1ZXN0SGVhZGVyczsgfQogCi0gICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBidWZmZXIo
KSBjb25zdDsKKyAgICBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBj
b25zdDsKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4m
IHJlZGlyZWN0UmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVkaXJlY3RSZXF1ZXN0OyB9CiAK
ICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQpAQCAtODgsNyArODgsNyBAQCBwcml2YXRl
OgogICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBtX3ZhcnlpbmdSZXF1ZXN0
SGVhZGVyczsKIAogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiBt
X3JlZGlyZWN0UmVxdWVzdDsKLSAgICBtdXRhYmxlIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IG1fYnVmZmVyOworICAgIG11dGFibGUgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IG1fYnVmZmVyOwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAg
bXV0YWJsZSBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIG1fc2hhcmVhYmxlUmVzb3VyY2VIYW5k
bGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAppbmRleCBkNDNj
MDg5ZDYxODUzYzUxOWUzNjJmZjJjOGM3YzQxODNjZWMxMDBiLi40MWQ4MjM1MDI0NzQ3YjZmYzRh
M2FjNTQ4ZTEzMzRlZDZjYjVlZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
Y3BwCkBAIC00Niw3ICs0Niw3IEBAIFNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKENh
Y2hlJiBjYWNoZSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZ2xvYmFsRnJhbWVJCiAgICAgOiBtX2Nh
Y2hlKGNhY2hlKQogICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSkKICAgICAsIG1fb3JpZ2luYWxSZXF1ZXN0KHJlcXVlc3QpCi0gICAgLCBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCisgICAgLCBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQogICAgICwgbV9j
YWNoZUVudHJ5KFdURk1vdmUoY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pKQogewogICAgIEFTU0VS
VCghbV9jYWNoZUVudHJ5IHx8IG1fY2FjaGVFbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpOwpAQCAt
MTIwLDcgKzEyMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpCit2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggNjc4MzBkZjBiMzAzNDMzMDJhMTFiNTUxZDdhMDlmNmQx
YTg1ZjU2My4uMWI4NDNkYjdlYzI3MGRiOWRhYjllOGEyNWYyYTQ4YThlY2FlMmE4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVj
dFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRG
YWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUu
Y3BwCmluZGV4IDVlMmUwMmUyZmJhMGI0YTBjMDNiNWQzZTY2Yjk3ZjdiY2NjNzk1OGIuLjMxOTli
ZmYzMTFiNmMzZWVmYmU5NTBiNDVlNmIwYTk2ZTMyNzc3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcApAQCAtMzAsNyAr
MzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUHJlZmV0Y2hDYWNoZTo6RW50cnk6OkVu
dHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitQcmVmZXRjaENhY2hlOjpFbnRyeTo6RW50cnkoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiByZXNwb25zZShXVEZNb3ZlKHJlc3Bv
bnNlKSksIGJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiB9CkBAIC03Miw3ICs3Miw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxQcmVmZXRjaENhY2hlOjpFbnRyeT4gUHJlZmV0Y2hDYWNoZTo6dGFrZShj
b25zdCBVUkwmIHVybCkKIAogc3RhdGljIGNvbnN0IFNlY29uZHMgZXhwaXJhdGlvblRpbWVvdXQg
eyA1X3MgfTsKIAotdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZShjb25zdCBVUkwmIHJlcXVlc3RV
cmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0
IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBS
ZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAg
aWYgKCFtX3Nlc3Npb25QcmVmZXRjaGVzKQogICAgICAgICBtX3Nlc3Npb25QcmVmZXRjaGVzID0g
bWFrZVVuaXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCmluZGV4IGEyNTE1MjBiMzFlYWM5
MjFjMjJkMzExNTFkNmQyMzFhMWJlZDEzOGMuLjUyYzBiMTBmY2M2ZDVhNmRlMTE0NDdlN2U0ZTgy
MmRmOGY4NDFjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvUHJlZmV0Y2hDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvUHJlZmV0Y2hDYWNoZS5oCkBAIC00NywxOCArNDcsMTggQEAgcHVibGljOgogCiAgICAgc3Ry
dWN0IEVudHJ5IHsKICAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAg
ICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYpOworICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICAgICAg
RW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJik7CiAKLSAgICAgICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVsZWFzZUJ1ZmZl
cigpIHsgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOyB9CisgICAgICAgIFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZWxlYXNlQnVmZmVyKCkgeyByZXR1cm4gYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCk7IH0KIAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlOwotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZm
ZXI7CiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZWRpcmVjdFJlcXVlc3Q7CiAg
ICAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gdGFrZShjb25zdCBVUkwmKTsKLSAg
ICB2b2lkIHN0b3JlKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBzdG9yZShjb25zdCBVUkwm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKTsKICAgICB2b2lkIHN0b3JlUmVkaXJlY3QoY29uc3QgVVJMJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKaW5kZXggYjlhYjBkZWViYjlmOTI3YzczNzQyZTg2
YTBiZTdmOTcxNjBiZDZmYi4uNDE2NjhhNWIxY2Q3Mzg2OTY3YjhmZDk3M2U5NjczMmVjYTkwN2Vk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWROZWdvdGlhdGVNb2Rlcm5UTFMoY29uc3QgVVJMJik7CiAgICAgdm9pZCBkaWRDb21wbGV0
ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6
TmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCB0cmFuc2ZlclNh
bmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKERvd25sb2FkJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpp
bmRleCBlNzgwZDZjMWMzY2QxZWIyYzJmZjVhMGM1NjRhMGU0ZDg4YjdlYTVkLi4zMDUxZjE2OWNi
MGEzNzA5OTg1YTE2MTEyMmMyNWYwZThmMTdiZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAg
LTQ0Miw3ICs0NDIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRDb21wbGV0ZVdp
dGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcgogICAgICAgICBtX2NsaWVu
dC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoZXJyb3IsIG5ldHdvcmtMb2FkTWV0cmljcyk7CiB9CiAK
LXZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2Vp
dmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAg
ICAgV1RGRW1pdFNpZ25wb3N0KG1fdGFzay5nZXQoKSwgIkRhdGFUYXNrIiwgInJlY2VpdmVkICV6
ZCBieXRlcyIsIGRhdGEtPnNpemUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAppbmRleCA4ZmM3YjY2
M2U2Zjc1NjJiMmIzNTQ4OTM5OGEyZmU3MzFiZTA3NGYxLi4zN2YyOTQxNjY0NmM0N2UxZGExZmQ5
OTQxY2NhYzAwYjVkYzBmZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCkBAIC0xNzIsNyArMTcyLDcg
QEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxS
ZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVzcG8KICAgICBpbnZva2VEaWRSZWNlaXZlUmVzcG9uc2Uo
KTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihD
dXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBOZXR3b3JrRGF0
YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0
aGlzIH07CiAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCBzdGF0ZSgpID09
IFN0YXRlOjpDb21wbGV0ZWQgfHwgKCFtX2NsaWVudCAmJiAhaXNEb3dubG9hZCgpKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tD
dXJsLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNr
Q3VybC5oCmluZGV4IDFjNDI3ZGRiNzhkNjk1M2ZlODk2MGM1NjkyYWZkZTRmNGYwZWVlODUuLjQ1
YmU1Y2UxODQzMjUyNzFkNWMwODBkZDM0ZjFlZTRhMTY2NDJhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaApA
QCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIFJlZjxXZWJDb3JlOjpDdXJsUmVxdWVzdD4g
Y3JlYXRlQ3VybFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlcXVlc3RTdGF0
dXMgPSBSZXF1ZXN0U3RhdHVzOjpOZXdSZXF1ZXN0KTsKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0
YShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9u
ZyBsb25nKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29y
ZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpDdXJsUmVzcG9uc2UmJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY3VybERpZFJlY2VpdmVC
dWZmZXIoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoV2ViQ29yZTo6
Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImJiwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggZjYzM2ZmZmVhNDhkZDBmM2YyYzVmYWY5ZjkxNDU5
MWQzMWNhOWUxMi4uYjIwYWE1MWEwZjg0Zjk1YWQ4ZjBiNzgwN2Q3NDE3MWFkYzUyMDVhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
RGF0YVRhc2tTb3VwLmNwcApAQCAtMTc2MSw3ICsxNzYxLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpkaWRSZWFkRGF0YVVSTChzdGQ6Om9wdGlvbmFsPERhdGFVUkxEZWNvZGVyOjpSZXN1
bHQ+JiYKICAgICB9CiAKICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVS
TFJlc3BvbnNlKG1fY3VycmVudFJlcXVlc3QudXJsKCksIHJlc3VsdC52YWx1ZSgpKTsKLSAgICBh
dXRvIGJ5dGVzID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0
LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOworICAgIGF1dG8gYnl0ZXMgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpLT5jcmVhdGVHQnl0ZXMoKTsKICAgICBtX2lu
cHV0U3RyZWFtID0gYWRvcHRHUmVmKGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXdfZnJvbV9ieXRl
cyhieXRlcy5nZXQoKSkpOwogICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtS
VENQcm92aWRlci5oCmluZGV4IGY1ZGI3MDZjNDQ1ODAyMTA4N2Y5NTk5NjY5ZGZhN2Q5ZjgzNzk3
OGMuLjMzZDQzYjcyMjM4ZDIwM2U3ZWRlYzk0MTRjYWY5ZmRhOGY0MDUyNmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92
aWRlci5oCkBAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBQYWNrZXRPcHRpb25zOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcApp
bmRleCAyOWY3MWQ3ZTZkYzc1MGVmMTlmMzI4NjJjODliNzE4NWUwM2JmODk2Li5kZjhlZTMwYzQz
YzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcApAQCAtNTEsOSArNTEsOSBAQCBzdGQ6Om9w
dGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CiAgICAgaWYgKGRhdGEuc2l6ZSgpKQotICAgICAgICBidWZmZXIgPSBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAg
ICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgp
KTsKICAgICByZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlcikgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IGU5Y2Q4NzJmOGQ0NGYxNWUw
ZWUzN2M3MzQ5MmIyZDgwMmFjOTA3MTYuLjE3ZjA4YzI4ZWExMjViNTUwOTkzZWVkMjRkNTk2M2I4
NTEwYTExNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5LmgKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0vLyBFbmNvZGVzIGEgU2hhcmVkQnVmZmVyIHRoYXQgaXMgcmVjZWl2ZWQgYXMg
YSBjb3B5IG9mIHRoZSBkZWNvZGVkIGRhdGEgaW4gYSBuZXcgU2hhcmVkQnVmZmVyLgorLy8gRW5j
b2RlcyBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgdGhhdCBpcyByZWNlaXZlZCBhcyBhIGNvcHkg
b2YgdGhlIGRlY29kZWQgZGF0YSBpbiBhIG5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgogLy8g
VG8gYXZvaWQgY29weWluZyBmcm9tIHRoZSBEZWNvZGVyLCB1c2UgU2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSB0byByZWNlaXZlIGEgRGF0YVJlZmVyZW5jZSBpbnN0ZWFkLgogCiAjcHJhZ21hIG9u
Y2UKQEAgLTM5LDE5ICszOSwxOSBAQCBjbGFzcyBTaGFyZWRCdWZmZXJDb3B5IHsKIHB1YmxpYzoK
ICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0OwogCi0gICAgU2hhcmVkQnVmZmVyQ29w
eShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAg
ICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5
KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAg
OiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIo
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+KCkpIHsgfQorICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVm
ZmVyKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAg
IFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+KCkpIHsgfQorICAgIFNoYXJl
ZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSkgeyB9Ci0gICAg
U2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKKyAg
ICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSkgeyB9
CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigp
IHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZl
cjsgfQorICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogCiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7IH0KICAg
ICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUo
KSA6IDA7IH0KQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBkZWNvZGUoRGVjb2RlciYp
OwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCmluZGV4IGQzZDBlYzVlOTc4NTU5
OWI2MzRhODRjNmM0NDcxYjUyY2QyMjEzZjEuLjY3ZWM4ZTVlOTJiZDAyNDExNWRiMGQ0MDgwYTI0
ZmU3MzU3MGQzZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBFbmNvZGVzIGEgU2hhcmVkQnVmZmVy
IG9yIERhdGFSZWZlcmVuY2UgdGhhdCBpcyByZWNlaXZlZCBhcyBhIERhdGFSZWZlcmVuY2UgdG8g
dGhlIGRlY29kZWQgZGF0YS4KKy8vIEVuY29kZXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIG9y
IERhdGFSZWZlcmVuY2UgdGhhdCBpcyByZWNlaXZlZCBhcyBhIERhdGFSZWZlcmVuY2UgdG8gdGhl
IGRlY29kZWQgZGF0YS4KIAogI3ByYWdtYSBvbmNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hh
cmVkTWVtb3J5LmNwcAppbmRleCBiM2E5OWFmOGY1MTI3ZjZhNjUzY2MxYzhmODViNjJiNmNhYWYx
NThhLi5jMDI2ZjU0OTU2OWIyYmUwMDc4YWUzMjVkMDUzOWUwNzFhZjExMDQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmUHRyPFNoYXJlZE1l
bW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoYnVmZmVyLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00OCwxMCArNDgsMTAgQEAgUmVmUHRyPFNo
YXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogICAgIHJldHVybiBzaGFyZWRNZW1vcnk7CiB9CiAKLVJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNp
emUpIGNvbnN0CitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1
ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRhdGFTaXplIDw9IHNp
emUoKSk7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2Vn
bWVudDo6UHJvdmlkZXIgeworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2Vn
bWVudDo6UHJvdmlkZXIgewogICAgICAgICBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1d
ICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4ocHJvdGVjdGVkVGhpcy0+ZGF0YSgpKTsKICAgICAgICAgfSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCmluZGV4IDc2YjczY2FlNGM4NWQ3ZWUzNjhiMWY4
NGQ1MWVlMDBmOTJlOTA0N2MuLjFiNGZkZmFmNjgzODlkY2U3MjhmZjM0ZTVlNWYwMTJlMjQzZmEy
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAtNDQsOCArNDQsOCBA
QCBjbGFzcyBFbmNvZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIH0KIAogI2lmIE9TKERBUldJTikKQEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBGSVhNRTogQ2hhbmdlIHRoZXNlIGZhY3RvcnkgZnVuY3Rpb25zIHRvIHJl
dHVybiBSZWY8U2hhcmVkTWVtb3J5PiBhbmQgY3Jhc2ggb24gZmFpbHVyZS4KICAgICBzdGF0aWMg
UmVmUHRyPFNoYXJlZE1lbW9yeT4gYWxsb2NhdGUoc2l6ZV90KTsKLSAgICBzdGF0aWMgUmVmUHRy
PFNoYXJlZE1lbW9yeT4gY29weUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsK
KyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gY29weUJ1ZmZlcihjb25zdCBXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1v
cnk+IG1hcChjb25zdCBIYW5kbGUmLCBQcm90ZWN0aW9uKTsKICNpZiBVU0UoVU5JWF9ET01BSU5f
U09DS0VUUykKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gd3JhcE1hcCh2b2lkKiwg
c2l6ZV90LCBpbnQgZmlsZURlc2NyaXB0b3IpOwpAQCAtMTU0LDcgKzE1NCw3IEBAIHB1YmxpYzoK
ICAgICAvLyBSZXR1cm4gdGhlIHN5c3RlbSBwYWdlIHNpemUgaW4gYnl0ZXMuCiAgICAgc3RhdGlj
IHVuc2lnbmVkIHN5c3RlbVBhZ2VTaXplKCk7CiAKLSAgICBSZWY8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CisgICAgUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7
CiAKIHByaXZhdGU6CiAjaWYgT1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCAzNWVhMTYy
MTU2YTIwNzAyNmRmMTM0MWM1YzBhODczYTIzYTdlYzcxLi4zYzFiNTdkNWFhMjZlYzcyZTYwYjVk
NzhhMTFlOWZkODUyY2ZmZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtNTY0LDcgKzU2NCw3IEBA
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxS
ZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpZiAoKmluY2x1ZGVzQ3JlYXRpb25EYXRhKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0
YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGlmICghZm9udEZh
Y2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCA0NTQxNjQzNmMyNTA1MjA4Mzhl
NWRmZGNjMmJmZTM1M2ZiNTljMmExLi5lOWE1MTNhMzA1ZWRkNjViZGZhMzc0ZTFiZDBlM2ZlYWIx
ZjZiODI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3Bw
CkBAIC0xMDUsNyArMTA1LDcgQEAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIENHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2UKICAgICBSRUxFQVNF
X0xPRyhSZW1vdGVMYXllclRyZWUsICJDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kIG9m
IHNpemUgJWR4JWQgZW5jb2RlZCBkaXNwbGF5IGxpc3Qgb2YgJWxkIGJ5dGVzIiwgc2l6ZS53aWR0
aCgpLCBzaXplLmhlaWdodCgpLCBDRkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSkpOwogI2VuZGlm
CiAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5IHsgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0
KCkpIH0gfTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkg
fSB9OwogfQogCiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIENHRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlckJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVh
YmxlUmVzb3VyY2UuY3BwCmluZGV4IDJjMTYxMWM5ZTcwZjhmOWExMzc5YzJjODQzMDg0NzM1MmU0
Yzk2Y2EuLjZmYTAyYTdiYzNlZTU0YWU2ZDMyNTM4MTBkNzhkZWMzMTY1MzUzZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKQEAgLTU1LDE1ICs1NSwxNSBA
QCBib29sIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIsIEhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1SZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZl
cigpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVk
QnVmZmVyKCkKIHsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERh
dGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERh
dGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7
IHJldHVybiBzZWxmLT5kYXRhKCk7IH0sCiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0o
KSB7IHJldHVybiBzZWxmLT5zaXplKCk7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJl
ZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6
SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIFJlZlB0cjxTaGFy
ZWFibGVSZXNvdXJjZT4gcmVzb3VyY2UgPSBTaGFyZWFibGVSZXNvdXJjZTo6bWFwKCp0aGlzKTsK
ICAgICBpZiAoIXJlc291cmNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuaAppbmRleCBhMGVkMDg1NzM0Yjc3NTUxNGMxMTY3ZGVmM2Q3Y2I0ZjY0ZTQxMmFhLi5kYTFl
ZWUwYWQ2MmNiMzQ4NGMxYzM0MDVjNDg3MGNmMGM1MWUxNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYp
IGNvbnN0OwogICAgICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQ
Qzo6RGVjb2RlciYsIEhhbmRsZSYpOwogCi0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICAgICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29u
c3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlUmVzb3Vy
Y2U7CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgU2hhcmVh
YmxlUmVzb3VyY2UoUmVmPFNoYXJlZE1lbW9yeT4mJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25l
ZCBzaXplKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gd3Jh
cEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gd3Jh
cEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBSZWY8U2hhcmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9y
eTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
aW5kZXggNjdiN2ViOTAzNDA1NWQ3ZjExYzRjNjE1MzNmMjJjMDFiYzU4MTk1OC4uODQzZmQ0NzMx
M2FlZWNhMjk5MzA2MTJmYzVlYzU3ODc1NTQzNDJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgREVGSU5F
X1NJTVBMRV9BUkdVTUVOVF9DT0RFUl9GT1JfU09VUkNFKERpc3BsYXlMaXN0OjpTZXRJbmxpbmVT
dHJva2VDb2xvcikKIAogI3VuZGVmIERFRklORV9TSU1QTEVfQVJHVU1FTlRfQ09ERVJfRk9SX1NP
VVJDRQogCi1zdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCitzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZm
ZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVy
KQogewogICAgIGJvb2wgaXNOdWxsID0gIWJ1ZmZlcjsKICAgICBlbmNvZGVyIDw8IGlzTnVsbDsK
QEAgLTE3Nyw3ICsxNzcsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAgICAgICAgIHJldHVybjsK
IAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIC8vIERvIG5vdCB1c2Ugc2hhcmVk
IG1lbW9yeSBmb3IgU2hhcmVkQnVmZmVyIGVuY29kaW5nIGluIFVuaXgsIGJlY2F1c2UgaXQncyBl
YXN5IHRvIHJlYWNoIHRoZQorICAgIC8vIERvIG5vdCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciBlbmNvZGluZyBpbiBVbml4LCBiZWNhdXNlIGl0J3MgZWFzeSB0
byByZWFjaCB0aGUKICAgICAvLyBtYXhpbXVtIG51bWJlciBvZiBmaWxlIGRlc2NyaXB0b3JzIG9w
ZW4gcGVyIHByb2Nlc3Mgd2hlbiBzZW5kaW5nIGxhcmdlIGRhdGEgaW4gc21hbGwgY2h1bmtzCiAg
ICAgLy8gb3ZlciB0aGUgSVBDLiBDb25uZWN0aW9uVW5peC5jcHAgYWxyZWFkeSB1c2VzIHNoYXJl
ZCBtZW1vcnkgdG8gc2VuZCBhbnkgSVBDIG1lc3NhZ2UgdGhhdCBpcwogICAgIC8vIHRvbyBsYXJn
ZS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg1NzEuCkBA
IC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogI2VuZGlmCiB9CiAKLXN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVj
b2RlciwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitzdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxib29s
PiBpc051bGw7CiAgICAgZGVjb2RlciA+PiBpc051bGw7CkBAIC0yMDgsNyArMjA4LDcgQEAgc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBk
ZWNvZGVyLCBSZWZQdHI8Q29udGkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFi
dWZmZXJTaXplKSB7Ci0gICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJl
ZlB0cjxDb250aQogICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpLCAxKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAg
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogI2Vsc2UKICAg
ICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShpcGNIYW5kbGUpKQpAQCAtMjQwLDcgKzI0MCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPENv
bnRpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0
YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKQorc3RhdGljIHZvaWQg
ZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAg
ICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6ZSgpKTsKICAgICBlbmNvZGVyIDw8IHR5
cGVzOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvCiAgICAgICAg
IGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwogfQogCi1zdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29k
ZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mIGRhdGEpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlw
ZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9y
PFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHR5cGVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYxLDcgKzI2MSw3IEBAIHN0YXRp
YyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVj
b2RlciwgVmVjdG9yPFN0cmluCiAgICAgQVNTRVJUKGRhdGFTaXplID09IHR5cGVzLnNpemUoKSk7
CiAKICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgZGF0YVNpemU7IGkrKykgewotICAgICAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRl
Y29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRhdGEu
YXBwZW5kKGJ1ZmZlcik7CkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPERP
TUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRE9N
Q2EKICAgICBlbmNvZGVyIDw8IHJlY29yZC51cGRhdGVSZXNwb25zZUNvdW50ZXI7CiAgICAgZW5j
b2RlciA8PCByZWNvcmQucmVzcG9uc2VCb2R5U2l6ZTsKIAotICAgIFdURjo6c3dpdGNoT24ocmVj
b3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSB7CisgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29u
c3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBlbmNvZGVyIDw8IHRydWU7
CiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOwogICAg
IH0sIFsmXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpAQCAtNDE0LDcgKzQxNCw3
IEBAIHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gQXJndW1lbnRDb2RlcjxE
T01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBpZiAoaGFzU2hhcmVkQnVmZmVyQm9keSkgewotICAgICAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoYnVmZmVyKQpA
QCAtMTU1MCwxMCArMTU1MCwxMCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3Rv
bURhdGE6OkVudHJ5Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0CiAgICAgaWYgKGhh
c1N0cmluZykKICAgICAgICAgZW5jb2RlciA8PCBzdGQ6OmdldDxTdHJpbmc+KHBsYXRmb3JtRGF0
YSk7CiAKLSAgICBib29sIGhhc0J1ZmZlciA9IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNo
YXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSk7CisgICAgYm9vbCBoYXNCdWZmZXIgPSBzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRh
KTsKICAgICBlbmNvZGVyIDw8IGhhc0J1ZmZlcjsKICAgICBpZiAoaGFzQnVmZmVyKQotICAgICAg
ICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rlciwgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+
KHBsYXRmb3JtRGF0YSkucHRyKCkpOworICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rl
ciwgc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpLnB0
cigpKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRy
eT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnkm
IGRhdGEpCkBAIC0xNTgzLDcgKzE1ODMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2Fy
ZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYgogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFzQnVmZmVyKSB7Ci0gICAgICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB2YWx1ZTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gdmFsdWU7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIHZh
bHVlKSB8fCAhdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRhdGEu
cGxhdGZvcm1EYXRhID0geyB2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpIH07CkBAIC0yOTc2LDcgKzI5
NzYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
ZGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4geyB7IFdU
Rk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9IH07CisgICAg
cmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9IH07CiB9
CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzAxMCw1NiArMzAx
MCw1NiBAQCBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkUAogfQogI2VuZGlmCiAKLXZvaWQgQXJndW1l
bnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQordm9p
ZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rl
ciwgYnVmZmVyLmdldCgpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAg
ICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLXZvaWQgQXJndW1l
bnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQordm9pZCBBcmd1
bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikKIHsKICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0
cigpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2Rl
cjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
c3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiB7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZm
ZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOwogfQogCi12b2lkIEFy
Z3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYgYnVmZmVyKQordm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVu
Y29kZXIsIGJ1ZmZlci5nZXQoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8UmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
OwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gYnVmZmVyOwogfQogCi12b2lkIEFy
Z3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKQordm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiBidWZmZXIpCiB7CiAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZl
ci5wdHIoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4g
QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVk
QnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIApAQCAtMzEyMyw3ICszMTIzLDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
Y3JpcHRCdWZmZXI+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2QK
ICAgICAgICAgcmV0dXJuIGRlY29kZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVzb3VyY2VIYW5k
bGUoZGVjb2Rlcik7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVj
b2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKQEAgLTMxMzUsNyArMzEzNSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlCiB7
CiAgICAgZW5jb2RlciA8PCBtZXNzYWdlLmZpcnN0OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbWVzc2FnZURhdGEgPSBtZXNzYWdlLnNlY29uZC5jb3B5UmVmKCk7CisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5zZWNvbmQuY29weVJl
ZigpOwogICAgIGVuY29kZXIgPDwgbWVzc2FnZURhdGE7CiB9CiAKQEAgLTMxNDUsNyArMzE0NSw3
IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiAg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBl
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSB8fCAhYnVmZmVyKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oCmluZGV4IGVmMDExMWZiNTYyY2RlYjZjYjBmN2EyNTIxZjA5M2FmMjc5ODY3OWYu
LjZmYWMyYWExZWE3ODQ2ZmY2YmY4OTAyMWYwZjUyZTlhYTdhZTAzYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xMTQsNyArMTE0LDcgQEAg
Y2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIENl
cnRpZmljYXRlSW5mbzsKIGNsYXNzIENvbG9yOwotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBDdWJpY0Jl
emllclRpbWluZ0Z1bmN0aW9uOwogY2xhc3MgQ3Vyc29yOwpAQCAtMTM5LDcgKzEzOSw3IEBAIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTY3Jp
cHRCdWZmZXI7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTcHJpbmdUaW1pbmdGdW5jdGlvbjsK
IGNsYXNzIFN0ZXBzVGltaW5nRnVuY3Rpb247CiBjbGFzcyBTdGlja3lQb3NpdGlvblZpZXdwb3J0
Q29uc3RyYWludHM7CkBAIC03NTIsNiArNzUyLDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiB7CiB9Owog
I2VuZGlmCiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewogICAg
IHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKQEAgLTc2MiwxNiArNzcyLDYgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewog
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNv
ZGUoRGVjb2RlciYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKLSAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKLX07Ci0KLXRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7
Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Ci19OwotCiB0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gewog
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyJik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBk
ZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0
VGVzdFJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3Vs
dERhdGEuY3BwCmluZGV4IGNmMmU0ZDVmOTNmZDJkOTQ2YmFiZmY5M2VlYTNlOWU4NjBhZWJiZjQu
LmI2MDdhY2U4MzhlMDRiY2UxYTZhZWU0ZGE1NjU1OWUwOTY5ODM5OGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAg
V2ViSGl0VGVzdFJlc3VsdERhdGE6OldlYkhpdFRlc3RSZXN1bHREYXRhKGNvbnN0IFdlYkNvcmU6
OkhpdFRlc3RSZXN1bHQmIGhpdFRlc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKEltYWdl
KiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgewotICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKTsKICAgICAgICAgaWYgKGJ1ZmZl
cikgewogICAgICAgICAgICAgaW1hZ2VTaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9y
eTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKICAgICAgICAgICAgIGltYWdlU2l6ZSA9IGJ1ZmZlci0+
c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29k
ZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5j
cHAKaW5kZXggNjQ1ZDliZmFiNzU3YjMxZDdlNjAwZTc4YmFiMDNhN2U4OTM5NzE4NS4uNjcxNzU4
YTI4MGE1ZTQ0MGFhMDYwYTc5Y2YxZjBmMTI2ZGI3YmUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQg
QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFNlbGVjdGlvbkRhdGEmCiAgICAgYm9vbCBoYXNDdXN0b21EYXRhID0gc2VsZWN0aW9uLmhh
c0N1c3RvbURhdGEoKTsKICAgICBlbmNvZGVyIDw8IGhhc0N1c3RvbURhdGE7CiAgICAgaWYgKGhh
c0N1c3RvbURhdGEpCi0gICAgICAgIGVuY29kZXIgPDwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4oc2Vs
ZWN0aW9uLmN1c3RvbURhdGEoKSk7CisgICAgICAgIGVuY29kZXIgPDwgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+KHNlbGVjdGlvbi5jdXN0b21EYXRhKCkpOwogCiAgICAgYm9vbCBjYW5T
bWFydFJlcGxhY2UgPSBzZWxlY3Rpb24uY2FuU21hcnRSZXBsYWNlKCk7CiAgICAgZW5jb2RlciA8
PCBjYW5TbWFydFJlcGxhY2U7CkBAIC0xNTksMTAgKzE1OSwxMCBAQCBzdGQ6Om9wdGlvbmFsPFNl
bGVjdGlvbkRhdGE+IEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZShEZWNvZGVy
JiBkZWNvZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzQ3VzdG9tRGF0YSkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc0N1c3RvbURhdGEpIHsKLSAgICAgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikp
CiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBzZWxlY3Rpb24uc2V0
Q3VzdG9tRGF0YShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOworICAgICAg
ICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8U2hhcmVkQnVmZmVyPigqYnVmZmVyKSk7CiAg
ICAgfQogCiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCmluZGV4IDhhZWY0YTUw
MWRhZDkyNzY2YzcxOWZjNTAwNmM2ZGYxMmFkYTVhYTAuLjI5MmQ3MTQ1MmM1YzNhOTQ5MmIyZjVi
NjE2ODI3MzUzMGFjMmRkMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dp
bi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RkOjpv
cHRpb25hbDxGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29k
ZVBsYXRmb3JtRGF0YShEZWMKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEqIGNy
ZWF0aW9uRGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAoaW5jbHVkZXNDcmVhdGlvbkRhdGEudmFs
dWUoKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4gZm9udEZhY2VEYXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+
PiBmb250RmFjZURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gZm9udEZhY2VEYXRhOwogICAgICAg
ICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggYzkw
ZDNkODExM2Y3MTkwMWIwOGYyNjQ4OTE2YWQyY2MyOWQ5ODMzNC4uMTQ5MGM1MTFiZGMzOGJkOGFi
NGE2OTVhZWNmMzA2ZDk1ZmFhMzk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmNwcApAQCAtOTgsMTcgKzk4LDE3IEBAIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IEF0dGFjaG1lbnQ6OmZpbGVTaXplRm9yRGlzcGxheSgpIGNvbnN0CiAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNo
bWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAog
ewogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkg
Y29uc3QKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihS
ZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcm
KQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXggYzZjMmEw
NmVjOTdkZGYwZDZjYWI0MmI0YTY0MDliM2M0N2I0ZGVmZS4uZmU1MGU1MzhiOGViYjM1MWE0ODM2
ZDFkZDg5M2QxNDdhNTZhODc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
QXR0YWNobWVudC5oCkBAIC0zOCw4ICszOCw4IEBAIE9CSkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsK
IE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgzLDE0ICs4MywxNCBA
QCBwdWJsaWM6CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKIAotICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IGVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0OworICAgIFJlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBlbmNsb3NpbmdJbWFnZURhdGEoKSBj
b25zdDsKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZUZvckRpc3BsYXkoKSBj
b25zdDsKIAogICAgIHZvaWQgc2V0SGFzRW5jbG9zaW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3NpbmdJ
bWFnZSkgeyBtX2hhc0VuY2xvc2luZ0ltYWdlID0gaGFzRW5jbG9zaW5nSW1hZ2U7IH0KICAgICBi
b29sIGhhc0VuY2xvc2luZ0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNFbmNsb3NpbmdJbWFn
ZTsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0
ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OwotICAgIHZvaWQgdXBkYXRlRnJvbVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsK
KyAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlm
aWVyLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggMmY0NDhhNzYz
OTI3ZTAyZWNjMTU5NzU2MDJjOTAxYjcxOWExYTYxMC4uMzZhNmY0ZmIwN2YwYWI5ZGRjN2E0NjE4
ZmVkNDIyZWMzODk3NDAzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdGVt
cGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEmIGRh
dGEsIGNvbnN0IEZ1bmN0aW9uPGIKIHsKICAgICBkYXRhLmFwcGx5KGZ1bmN0aW9uKTsKIH0KLXRl
bXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5j
dGlvbikKK3RlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0
aW9uKQogewogICAgIGZ1bmN0aW9uKHsgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlz
dFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0
U3RvcmUuaAppbmRleCA3ZmMwNTQ1N2U2NGNmNTg5YjBmYjBlN2UwMzZmNjkwZmEyYzE3YmFjLi40
ZTI2NmYzNjdhYzYwMmI4ZWYxZWFmNzU3YTBhMDRkYzczZjc3MWFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaApAQCAt
MzAsNyArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCmluZGV4IDU2MjM0MDE0NTlkYTVmZTMwZjQ5
MWE0MWZiMzQ3YTY3NTcyMDJjNDAuLjExMWYwOTI2M2Y4MjIzODI5YTVhZDI2NDQzNGJhNDIwZjE5
OGRkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRp
b25DbGllbnQuaApAQCAtNDcsNyArNDcsNyBAQCBzdHJ1Y3QgQ29udGVudFJ1bGVMaXN0UmVzdWx0
czsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiB9CiAKQEAgLTExOSw3ICsx
MTksNyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0
cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpIHsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFJlZjxOYXZpZ2F0
aW9uQWN0aW9uPiYmLCBSZWY8V2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYg
bGlzdGVuZXIsIE9iamVjdCopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQppbmRleCA5NGRiNTU3NTMyODVmOGEwM2Yw
ZGEyYzNjYTJkODY4MTdjMjk1Mjk1Li5kZmVmM2UwNzBmOTYxNjMwNDk3MTQ0ZGFmM2YzMDBjYjRj
YTUxOTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJ
QXR0YWNobWVudENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9BUElBdHRhY2htZW50Q29jb2EubW0KQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBBdHRhY2htZW50OjpmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdAogICAgIHJl
dHVybiBbZmlsZVdyYXBwZXIgcmVndWxhckZpbGVDb250ZW50c10ubGVuZ3RoOwogfQogCi1SZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEo
KSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEF0dGFjaG1l
bnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2hhc0VuY2xvc2lu
Z0ltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE1OSw3ICsxNTksNyBAQCBib29s
IEF0dGFjaG1lbnQ6OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVybiAhbV9maWxlV3JhcHBlciAm
JiAhbV9maWxlV3JhcHBlckdlbmVyYXRvcjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlv
bigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVh
dGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIGF1dG8gZmlsZVdyYXBw
ZXIgPSB0aGlzLT5maWxlV3JhcHBlcigpOwogCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFs
aXplZFJlcHJlc2VudGF0aQogICAgIGlmICghc2VyaWFsaXplZERhdGEpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVG
cm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3QgV1RGOjpTdHJpbmcmIGNv
bnRlbnRUeXBlKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0
aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgaWYgKCFtX3dlYlBh
Z2UpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKaW5kZXggNmI3NTZhYTQxN2I1MWVkZDdmZDNmZmJkZGYz
YzIyZTQ0NTMxOTI5MC4uZjVhZjA5MmJiMjI1ODIwNTk2Y2IwMjUzMGQwZGIwYjc2OTQ0MDMyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3Rr
My5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3Rr
My5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIERyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZChJ
bnRQb2ludCYmIHBvc2l0aW9uLCBHdGtTZWxlY3Rpb25EYXRhKiBkYXRhLCB1bnNpZwogICAgICAg
ICBpbnQgbGVuZ3RoOwogICAgICAgICBjb25zdCBhdXRvKiBjdXN0b21EYXRhID0gZ3RrX3NlbGVj
dGlvbl9kYXRhX2dldF9kYXRhX3dpdGhfbGVuZ3RoKGRhdGEsICZsZW5ndGgpOwogICAgICAgICBp
ZiAobGVuZ3RoID4gMCkKLSAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9tRGF0
YShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihsZW5ndGgpKSk7CisgICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3Rv
bURhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90
PihsZW5ndGgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCmluZGV4IGFjNGEwZjQzNzAx
NTJlZDU3MmI1MDkxZGZhNTFiYWViYWI4N2Y0ZTkuLmM4MDI5YzE0MGE2ZGQxNGIxOTY0OTIyNWI4
NzgzMGVlYzEzNDAwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShR
VUlDS19MT09LKQogICAgICAgICB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmlu
ZyYgdXRpKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlk
ZTsKKyAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5G
cmFtZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCA3MjViNzcwZjZjNTQyNmFjOGNiN2I2NzRj
NDYxZjgxZTNlZTM2NjA3Li44ZDNhODU2NDYyZWFlZjc0MWQ4YzI5ZTI1OTJmZDU3MzY2ZjU5OWM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRl
Lm1tCkBAIC0xMjIwLDcgKzEyMjAsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcgogICAgIFtz
dGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRl
bGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZFN0
YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVXaXRoRmlsZU5hbWU6ZmlsZU5h
bWUgdXRpOnV0aV07CiB9CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50
OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50
OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0
ZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRleCBiZTE0MzcwZGUwOWJkNTcwMmI5Yzdk
ZGNkNmM3N2I4ZjZkYTVmNWI4Li42ODMzNzNlYWUwMGY1ZGI0MmI4MTQ2Y2U5ZDUzMWJjOGFjMGE1
NGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUHJveHlDb2NvYS5tbQpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKCkKICAgICAgICAgICAgIGlmICghd2Vh
a1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBhdXRvIHJlZ2lz
dHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVn
aXN0cmF0aW9ucy5nZXQoKSk7CisgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25zLmdldCgpKTsKICAgICAg
ICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9D
b21wb25lbnRSZWdpc3RyYXRpb25zKHsgV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhKSB9KSwgMCk7
CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLmgKaW5kZXggM2Y2ZGQxZjI0MmU3YTExNWVjZjc5ODM5MGYzNGI2MzVjNmU4ZDZm
OS4uZjU4OTEyNDE3MDJkYWE0MjBjYzRlNmUyNDYyOGExY2RlODkwN2QyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBAIC01MDYsNyArNTA2LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzdGFydERyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0mLCBj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2UpOwogICAgIHZvaWQgc2V0RmlsZUFu
ZFVSTFR5cGVzKE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNTdHJp
bmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJsZVVSTCwgTlNQYXN0ZWJv
YXJkICopOwotICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2Uq
LCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRs
ZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciogYXJjaGl2ZUJ1ZmZlciwgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU1N0cmluZyAq
cGFzdGVib2FyZE9yaWdpbik7CisgICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJD
b3JlOjpJbWFnZSosIE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNT
dHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJsZVVSTCwgV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYXJjaGl2ZUJ1ZmZlciwgTlNTdHJpbmcgKnBhc3Rl
Ym9hcmROYW1lLCBOU1N0cmluZyAqcGFzdGVib2FyZE9yaWdpbik7CiAgICAgdm9pZCBwYXN0ZWJv
YXJkQ2hhbmdlZE93bmVyKE5TUGFzdGVib2FyZCAqKTsKICAgICB2b2lkIHByb3ZpZGVEYXRhRm9y
UGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKiwgTlNTdHJpbmcgKnR5cGUpOwogICAgIE5TQXJyYXkg
Km5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0
aW5hdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
CmluZGV4IDY4MTRhNzBhMDJiYTVkY2FlYWFmNGY0NGUwNTE0ODdmNzk3YjRlMDkuLjYyMzY3ZGM1
YWQxZmUxMjIxZjdiMDk5ZTliYjQ0NTRkYjM3YTU4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBib29sIFdl
YlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3Rl
Ym9hcmQsIE5TQXJyYXkgKgogICAgICAgICBpZiAoW1t0eXBlcyBvYmplY3RBdEluZGV4OmldIGlz
RXF1YWxUbzpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAg
ICAgIFtwYXN0ZWJvYXJkIHNldFN0cmluZzptX3BhZ2UtPnN0cmluZ1NlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoKSBmb3JUeXBlOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0
eXBlcyBvYmplY3RBdEluZGV4OmldKTsKKyAgICAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IG1fcGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5
cGVzIG9iamVjdEF0SW5kZXg6aV0pOwogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpi
dWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6W3R5cGVz
IG9iamVjdEF0SW5kZXg6aV1dOwogICAgICAgICB9CiAgICAgfQpAQCAtNDQ0OSw3ICs0NDQ5LDcg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0RmlsZUFuZFVSTFR5cGVzKE5TU3RyaW5nICpmaWxlbmFt
ZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlMKICAgICBtX3Byb21pc2VkVVJMID0gdXJsOwogfQog
Ci12b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFn
ZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNTdHJp
bmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJsZVVSTCwgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyKiBhcmNoaXZlQnVmZmVyLCBOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5T
U3RyaW5nICpvcmlnaW5JZGVudGlmaWVyKQordm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWRE
YXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5T
U3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJp
bmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGFyY2hpdmVC
dWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKm9yaWdpbklkZW50aWZp
ZXIpCiB7CiAgICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0
ZWJvYXJkV2l0aE5hbWU6cGFzdGVib2FyZE5hbWVdOwogICAgIFJldGFpblB0cjxOU011dGFibGVB
cnJheT4gdHlwZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoT2Jq
ZWN0czpXZWJDb3JlOjpsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpLCBuaWxdKTsK
QEAgLTQ1ODQsNyArNDU4NCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFj
Y2Vzcyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgU3RyaW5nJiBvCiAgICAgaGFuZGxl
RE9NUGFzdGVSZXF1ZXN0V2l0aFJlc3VsdChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNl
OjpEZW5pZWRGb3JHZXN0dXJlKTsKIAogICAgIE5TRGF0YSAqZGF0YSA9IFtOU1Bhc3RlYm9hcmQu
Z2VuZXJhbFBhc3RlYm9hcmQgZGF0YUZvclR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Y29jb2FUeXBlKCkpXTsKLSAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IG9y
aWdpbklkZW50aWZpZXIpIHsKICAgICAgICAgbV9wYWdlLT5ncmFudEFjY2Vzc1RvQ3VycmVudFBh
c3RlYm9hcmREYXRhKE5TUGFzdGVib2FyZE5hbWVHZW5lcmFsKTsKICAgICAgICAgY29tcGxldGlv
bihXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpHcmFudGVkRm9yR2VzdHVyZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggNTUxNjY2NmM1YTMxMTcyYzk4NmUz
MmFiZjNjNmIwMWQ0NTZmMzZhZi4uYjQ2MmQ4ZGI1Y2M2MjAzODZlNzY4M2RiMjQ4MzZhYjNjZTY0
ZmVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMzI4LDcgKzMyOCw3
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgVVNFKEFQUEtJVCkKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlm
aWVyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcm
IGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYXJjaGl2ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSA9IDA7
CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb0Rldmlj
ZVNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpID0gMDsKQEAgLTQ2OCw3ICs0NjgsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNpbmdFbGVtZW50KCkgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2
ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3NpdGlvbklu
Zm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9u
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZUlt
YWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ks
IGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNV
SUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9z
aXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVEb3VibGVUYXBHZXN0dXJlc0R1
cmluZ1RhcElmTmVjZXNzYXJ5KFdlYktpdDo6VGFwSWRlbnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA5ZmYyM2E4NjZmZjBkODYyNzUxODViZjYy
OWYxYTQ3NmNmNGZlNmQzLi5lNWVhZjQxZjM4YjY0N2JjNWYzNzNkYjA3OWRlYjQxNmFhOTYzZDFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjU5LDcgKzI1OSw3
IEBAIGNsYXNzIEludFNpemU7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSdW5Mb29w
T2JzZXJ2ZXI7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVxdWVz
dDsKIGNsYXNzIFRleHRJbmRpY2F0b3I7CiBjbGFzcyBWYWxpZGF0aW9uQnViYmxlOwpAQCAtMTE3
OSw3ICsxMTc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3Np
YmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgd2luZG93VG9rZW4pOwogICAgIGJvb2wgcmVhZFNlbGVjdGlv
bkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFN0cmlu
ZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
OwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAgdm9pZCBhc3Npc3RpdmVUZWNo
bm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggNTg1NDdkODQ4ODFkYzgzMGY2OTY5YTBjYTk3Njcw
MzU0ZmVhZDAwZS4uMTk5N2VhZTIwYWMyMmNhM2FlODAwNGM3MDRmYTIyZGE2MDllMDA5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTE2OSw3
ICsxNjksNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgLT4gRQogICAgIHJldHVybiBFeGNlcHRpb25U
eXBlOjpOb25lOwogfQogCi1hdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCithdXRvIFdlYlVSTFNj
aGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikgLT4gRXhjZXB0aW9uVHlwZQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCBiMDdj
MTQ5ZmQ0ZGExNWNlZWM0YThlZmRhYWI3YTVhMWJlNmFkZjcwLi43OTk0MmY5YjIwYTI2NjBjYTRh
N2RjZDQ1MDE4ZDE2ZTQzYjY2NmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIEZyYW1lSW5mbzsKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgog
ICAgIEV4Y2VwdGlvblR5cGUgd2lsbFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCAgRnVuY3Rpb248dm9pZChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIEV4Y2VwdGlvblR5cGUgZGlkUGVy
Zm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYpOwogICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBFeGNlcHRpb25UeXBlIGRpZFJl
Y2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIEV4Y2VwdGlvblR5
cGUgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
OwogICAgIEV4Y2VwdGlvblR5cGUgZGlkQ29tcGxldGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOwogCiAgICAgdm9pZCBzdG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xp
cGJvYXJkLmgKaW5kZXggNzg2NmNkYjE3NzQ2MDA3YWIwYTdhMTdjNTViODdjN2YxNjRjMmJhZS4u
NzI3OWY4NDRjYzJiYmQyYjAxN2ZlMGYwOTdkZTAxODcwYTlhODUyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaApAQCAtMzYsNyArMzYsNyBAQCB0eXBlZGVmIHN0cnVj
dCBfR3RrQ2xpcGJvYXJkIEd0a0NsaXBib2FyZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTUsNyArNTUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBmb3JtYXRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0
cmluZz4mJik+JiYpOwogICAgIHZvaWQgcmVhZFRleHQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcmJik+JiYpOwogICAgIHZvaWQgcmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgY2hh
ciosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+
JiYpOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBjaGFyKiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYpOwogICAgIHZv
aWQgd3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKTsKICAgICB2b2lkIGNsZWFyKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAppbmRleCBj
MmJmNTE4M2IzMGYxMGU5ZWI3ODEzY2RhZGEyMjNlOTE4OWM3NDU5Li41OTY2ZDU1NzRjMjgyZjUz
MTY5NDA5NjA4Mjk2MGFlMzM5Y2ExMTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL0NsaXBib2FyZEd0azMuY3BwCkBAIC0xMjYsMTUgKzEyNiwxNSBAQCB2b2lkIENsaXBib2Fy
ZDo6cmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYp
PiYmIGNvbXBsZQogc3RydWN0IFJlYWRCdWZmZXJBc3luY0RhdGEgewogICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJBc3luY0RhdGEo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4mJiBo
YW5kbGVyKQorICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJBc3luY0RhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxl
cikKICAgICAgICAgOiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKQogICAgIHsK
ICAgICB9CiAKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRs
ZXI7CiB9OwogCi12b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFy
KiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGd0a19jbGlwYm9h
cmRfcmVxdWVzdF9jb250ZW50cyhtX2NsaXBib2FyZCwgZ2RrX2F0b21faW50ZXJuKGZvcm1hdCwg
VFJVRSksIFtdKEd0a0NsaXBib2FyZCosIEd0a1NlbGVjdGlvbkRhdGEqIHNlbGVjdGlvbiwgZ3Bv
aW50ZXIgdXNlckRhdGEpIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlYWRCdWZmZXJBc3lu
Y0RhdGE+IGRhdGEoc3RhdGljX2Nhc3Q8UmVhZEJ1ZmZlckFzeW5jRGF0YSo+KHVzZXJEYXRhKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKaW5kZXgg
MDdhYmI3MTMxOTg4NTNiNzg3YzYzMjRiZDQ4MGIxZTA4OGEyYTNkMy4uNWI4MWZhOGYyOWQzZjdj
ZjFjM2YwOWQxZmMzYzg4NzM0ZGM1MWEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9DbGlwYm9hcmRHdGs0LmNwcApAQCAtMTIwLDE1ICsxMjAsMTUgQEAgdm9pZCBDbGlwYm9h
cmQ6OnJlYWRGaWxlUGF0aHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYm
KT4mJiBjb21wbGUKIHN0cnVjdCBSZWFkQnVmZmVyQXN5bmNEYXRhIHsKICAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAKLSAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYg
aGFuZGxlcikKKyAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGhhbmRs
ZXIpCiAgICAgICAgIDogY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkKICAgICB7
CiAgICAgfQogCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5k
bGVyOwogfTsKIAotdm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9ybWF0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hh
ciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb25zdCBjaGFy
KiBtaW1lVHlwZXNbXSA9IHsgZm9ybWF0LCBudWxscHRyIH07CiAgICAgZ2RrX2NsaXBib2FyZF9y
ZWFkX2FzeW5jKG1fY2xpcGJvYXJkLCBtaW1lVHlwZXMsIEdfUFJJT1JJVFlfREVGQVVMVCwgbnVs
bHB0ciwgW10oR09iamVjdCogY2xpcGJvYXJkLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50
ZXIgdXNlckRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmgKaW5kZXggZTlkMjM2OTNjZGM5YTcwZWYxZDIxNDgwNjMxYTQ1Y2ZlOTY3YWE4
Yy4uNTYwNzNiYjgzNzdiMDZiYzQxNWQ1NmUwNjc4YzMxNmY2YzhlMmJiMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTE4Nyw3ICsx
ODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7
CiAgICAgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50
JiwgYm9vbCBpc0NoYXJFdmVudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3NpdGlvbkluZm9ybWF0
aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1Bs
YXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3Jt
YXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
CmluZGV4IDY2YWM0Y2FhOGM4MzJiM2RiNTE4OTc5YjBlZGJmYjYxNjQ2NGQwMzYuLjMyZDFmODlj
MDU4YjliNDBhMThlOGY2N2JjN2JlOWYwYTEwMjUwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2
b2lkIFBhZ2VDbGllbnRJbXBsOjpwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IElu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdAogICAgIFttX2NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9y
bWF0aW9uRGlkQ2hhbmdlOmluZm9dOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1h
Z2VUb0xpYnJhcnkoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCit2
b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBpbWFnZUJ1ZmZlcikKIHsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSBpbWFn
ZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgVUlJbWFnZURhdGFXcml0ZVRvU2F2ZWRQaG90
b3NBbGJ1bShpbWFnZURhdGEuZ2V0KCksIG5pbCwgTlVMTCwgTlVMTCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpp
bmRleCAwYzYyNWMzMGQzMDNmYmQ5ODQ5Yjg0YjZlN2FhZmEzNGNmN2MzNDk2Li4xYTgxY2NlNDQ1
NWViMWE3MmIxMGU4ZjI0NzNjNjBhMjkxZWE1OGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4MjEs
NyArMzgyMSw3IEBAIC0gKEJPT0wpY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6KFNFTClhY3Rp
b24gd2l0aFNlbmRlcjooaWQpc2VuZGVyCiAKICAgICAgICAgTlNBcnJheSAqYWxsQ3VzdG9tUGFz
dGVib2FyZERhdGEgPSBbcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpIGluSXRlbVNldDppbmRpY2VzXTsK
ICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEpIHsK
LSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09
IGZvY3VzZWREb2N1bWVudE9yaWdpbikKICAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwogICAg
ICAgICB9CkBAIC02NTk5LDcgKzY1OTksNyBAQCBzdGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJkSXRl
bU9yaWdpbnNNYXRjaE9yaWdpbihVSVBhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAgICAg
ICAgIGlmICghZGF0YS5sZW5ndGgpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBh
dXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
KTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhKTsKICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hh
cmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgIT0gb3JpZ2luSWRlbnRpZmllcikKICAg
ICAgICAgICAgIHJldHVybiBOTzsKIApAQCAtNzU3MCw3ICs3NTcwLDcgQEAgLSAodm9pZClhY3Rp
b25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFy
ZUVsZW1lbnRXaXQKIHsKICAgICBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJl
RGF0YTsKICAgICBOU1N0cmluZyogZmlsZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIiVALnBuZyIsIChOU1N0cmluZyopV0VCX1VJX1NUUklORygiU2hhcmVkIEltYWdlIiwgIkRl
ZmF1bHQgbmFtZSBmb3IgdGhlIGZpbGUgY3JlYXRlZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0aCBu
byBleHBsaWNpdCBuYW1lLiIpXTsKLSAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUs
IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVz
ZW50YXRpb24oaW1hZ2UpKSB9IH07CisgICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1l
LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24o
aW1hZ2UpKSB9IH07CiAgICAgW3NlbGYgX3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0YSBpblJlY3Q6
IHsgW3NlbGYgY29udmVydFJlY3Q6Ym91bmRpbmdSZWN0IHRvVmlldzpzZWxmLndlYlZpZXddIH0g
Y29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggYmE5OTVmYjllMDZiZjhkZGFmNTVhYTA3ZGIw
ZjJmZmE4MmQxODMxMy4uZjgwYzgyNDlkYTQ2N2I5NDIwMzVlNDYwNmU4OTliY2I2NGVkYmM2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBA
IC0xMzgsNyArMTM4LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9y
UGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmKQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2Vi
UGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCmluZGV4IGQyMjM4ZmRjOWQx
NmY3N2Y4YzNkMzAyY2E5OTc2ZmU4M2YxYjNmMzcuLmFiODdjMmE3ZThjMzU3YTY1YjNjZmU2MDc5
MzhmZGZlYzhhNjUyYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbE1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5oCkBAIC0xMDAsOCArMTAwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGV4
ZWN1dGVVbmRvUmVkbyhVbmRvT3JSZWRvKSBvdmVycmlkZTsKICAgICBib29sIGV4ZWN1dGVTYXZl
ZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpIG92ZXJyaWRlOwogICAg
IHZvaWQgc3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGUmIGltYWdlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFByb21pc2VkRGF0
YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAotICAgICAgICBjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBp
bWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNp
b24sIGNvbnN0IFN0cmluZyYgdGl0bGUsCisgICAgICAgIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgb3Zl
cnJpZGU7CiAgICAgdm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCByZXNldFNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUlu
cHV0Q29udGV4dEFib3V0RGlzY2FyZGVkQ29tcG9zaXRpb24oKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCBhNDEx
MjEzNWYyZWYxOTAxNWE1MmYxZTFiMDNhZTMwYTFmMjIzZDJhLi5jMzYzZTk1NWU4NzljMGUxODZi
NDE1MDkwOTEzMzY1YzIwZmU5MDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCkBAIC00MDAsNyArNDAwLDcgQEAgdm9pZCBQYWdlQ2xp
ZW50SW1wbDo6c3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiBpdGVtLCBjb25zdCBT
aGFyZWFibGVCaXQKICAgICBtX2ltcGwtPnN0YXJ0RHJhZyhpdGVtLCBpbWFnZSk7CiB9CiAKLXZv
aWQgUGFnZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRp
dGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRp
ZmllcikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGlt
YWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lv
biwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
dmlzaWJsZVVSTCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQogewogICAgIGF1dG8gaW1hZ2UgPSBC
aXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgaW1hZ2UtPnNldERhdGEoV1RGTW92ZShpbWFnZUJ1
ZmZlciksIHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KaW5kZXggYTdmYjRhYWJjZjc0ZDFiZDcyOTJjMzBhZjc3Mjk4YmI5NDBkZDAwYy4u
MDFkODQwYTJhNjNlYWM3OTFmYmQ4NGZiZTYzN2I1YjI4Y2Y2MTMwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yMjcsNyArMjI3LDcg
QEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAg
ICAgcmV0dXJuIHZhbHVlOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFn
ZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFByb21p
c2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFMKICAg
ICAgICAgcmV0dXJuOwogICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBzaGFyZWRNZW1vcnlJbWFnZS0+
Y3JlYXRlU2hhcmVkQnVmZmVyKGltYWdlSGFuZGxlLmRhdGFTaXplKTsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGFyY2hpdmVCdWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGFyY2hpdmVCdWZmZXI7CiAgICAgaWYgKCFhcmNoaXZlSGFuZGxlLmhhbmRsZS5pc051
bGwoKSkgewogICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUFyY2hpdmUgPSBTaGFyZWRNZW1vcnk6
Om1hcChhcmNoaXZlSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFk
T25seSk7CiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5QXJjaGl2ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAppbmRleCBmYTk0MDI1ZWQ3
NDczMGQyOGU3MTY0NjI4NWY5ZTViYTY1M2I4ZjEyLi5jMjhmZTY1ZjBjZjE2NDM5OTgxOGFjYTMy
Zjk4MWNjNzc4ZjFlOTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE0uY3BwCkBAIC04NCw3ICs4NCw3IEBAIGJvb2wgUmVtb3RlQ0RNOjpzdXBw
b3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBj
b25zCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbW90ZUNETTo6c3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpIGNv
bnN0Citib29sIFJlbW90ZUNETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0
eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKSBjb25zdAogewogICAgIC8v
IFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwgaW5zaWRlIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZSgpLgogICAgIHJldHVybiB0cnVlOwpAQCAtMTI5
LDcgKzEyOSw3IEBAIHZvaWQgUmVtb3RlQ0RNOjpsb2FkQW5kSW5pdGlhbGl6ZSgpCiAgICAgbV9m
YWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVDRE1Qcm94eTo6TG9hZEFuZEluaXRpYWxpemUoKSwgbV9pZGVudGlmaWVyKTsKIH0K
IAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIC8vIFRoaXMgY2hlY2sgd2lsbCBiZSBkb25l
LCBsYXRlciwgaW5zaWRlIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNl
bnNlKCkuCiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCmluZGV4IDBhZGRmODMzNTNiNmVhMWIyZThi
MDJjNmI3ZWUzZGFmNDY4Y2QzODMuLjhjNDU0ZWI4M2U1OTk0YThlNGQ1OTJkNTFkZjkxZmY5YjUy
M2NiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE0uaApAQCAtNDgsMTMgKzQ4LDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZp
Z3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0
IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhj
b25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6
Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25U
eXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGUmLCBjb25z
dCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7Ci0gICAg
Ym9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBj
b25zdCBmaW5hbDsKICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50
aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
biYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIFdl
YkNvcmU6OkNETVJlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IFdl
YkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0
cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNB
cmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0
YW5jZT4gY3JlYXRlSW5zdGFuY2UoKSBmaW5hbDsKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXpl
KCkgZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNw
b25zZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25z
dCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0
IGZpbmFsOwogCiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVkSW5pdERhdGFU
eXBlczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlLmNwcAppbmRleCBiNWRlYTIxZTk5NWE3MzdmMDM2ZjY0NTM4YzFm
YjNlY2I1ZTZiYjU1Li5hMTNlNTE0NjBmNmJiOWY4MGVmM2QxYTg0MmVmYzBiOWY0NDU5MGM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNl
Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVt
QwogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpJbml0aWFs
aXplV2l0aENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgZGlzdGluY3RpdmVJZGVudGlmaWVy
cywgcGVyc2lzdGVudFN0YXRlKSwgV1RGTW92ZShjYWxsYmFjayksIG1faWRlbnRpZmllcik7CiB9
CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxi
YWNrKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxs
YmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9mYWN0b3J5KSB7CiAgICAgICAgIGNhbGxi
YWNrKEZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKaW5kZXggMTA2YmEzYjExNjFjOGRmMDlkNzFkZmU2Nzli
YTMzZDQyMzA3OWU5Ni4uMmM3ODUxZTQ0MGIwOGE1MmEyYWU3MGRhN2U0MTg4ODJlM2M2MTQzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2UuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogCiAgICAgSW1wbGVtZW50
YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxl
bWVudGF0aW9uVHlwZTo6UmVtb3RlOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3Vy
YXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlz
dGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFj
ayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNl
cnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBT
dWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmtleVN5c3RlbTsgfQogICAgIFJlZlB0cjxX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uLmNwcAppbmRleCBhZjBiYWQ0YzkwZDhkZDUxMzc3NGFlZjZhMTVi
NzdiYTg5ZmM1MDY0Li5jNzQwYzA0NTA2ZmRlZGFjOWY0Y2Y1MDJjMjA1YThhMzdmY2E0NTllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCkBAIC00OSw3ICs0OSw3IEBAIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbjo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8UmVtb3Rl
Q0RNRmFjdG9yeT4mJiBmCiB7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNh
bGxiYWNrKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExp
Y2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNr
KQogewogICAgIGlmICghbV9mYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBGYWlsZWQpOwpAQCAtNjUsNyArNjUs
NyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5z
ZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZwogICAgIH0sIG1faWRlbnRpZmllcik7CiB9CiAK
LXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3Bv
bnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNl
bnNlVHlwZSB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsK
ICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6
Om51bGxvcHQsIEZhaWxlZCk7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBM
aWNlbnMKICAgICB9CiAKICAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHk6OlJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSksIFtjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXSAoS2V5U3RhdHVzVmVjdG9yJiYgY2hhbmdlZEtleXMsIHN0
ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2Vl
ZGVkKSBtdXRhYmxlIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4g
cmVhbE1lc3NhZ2UgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiByZWFsTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgaWYgKG1lc3NhZ2UgJiYgbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpKQogICAgICAgICAgICAg
cmVhbE1lc3NhZ2UgPSBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKTsK
ICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUocmVhbE1lc3Nh
Z2UpLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uLmgKaW5kZXggNGZmZTRjYWNlY2NkZTQzZDVjYjExZTIzNmNhMDQ1YWNkYTgzYTdlYi4uNGU0
Y2QyYzAwNWM2YjAwNjVmOWNkYjE4OGM0YmNlMGI1YmZhNjYwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5oCkBAIC01OSw4ICs1OSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldENsaWVu
dChXZWFrUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudD4mJiBjbGllbnQpIGZp
bmFsIHsgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7IH0KICAgICB2b2lkIGNsZWFyQ2xpZW50
KCkgZmluYWwgeyBtX2NsaWVudCA9IG51bGxwdHI7IH0KLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAg
ICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBl
LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQg
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBMb2FkU2Vzc2lvbkNh
bGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNl
c3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vz
c2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcAppbmRleCA5
YTIxOWE1NDRlNTUzODNmNTRlNzFkYWJkMzU0Y2M0NDBhNDE0MmI5Li42MjkyNjc5OGM1YzExMzI0
YTMxYWE1MGNkYTdlZDFmYmY3NGZlNzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCkBAIC0y
MDAsNyArMjAwLDcgQEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldEV4cGVjdGVkQ29u
dGVudFNpemUobG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUKIAogLy8gSWYgYWxsRGF0YVJl
Y2VpdmVkIGlzIHRydWUsIHRoZSBjYWxsZXIgZXhwZWN0cyBlbmNvZGVkRGF0YVN0YXR1cygpIHRv
IGJlID49IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlCiAvLyBhZnRlciB0aGlzIGZ1
bmN0aW9uIHJldHVybnMgKGluIHRoZSBzYW1lIHJ1biBsb29wKS4KLXZvaWQgUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIW1fZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCmluZGV4
IGU1Y2ZlOTRlY2QzYTljMDYwMGZjMDAzMjBmZjQzMDYxYzkwZWQ2OWIuLjQwZDM3MzRmN2EzMjJl
OGJhY2I5ZDFjMGRlYTcwNzllMmFkMTdlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaApAQCAtNDUs
NyArNDUsNyBAQCBjbGFzcyBSZW1vdGVJbWFnZURlY29kZXJBVkYgZmluYWwKICAgICA6IHB1Ymxp
YyBXZWJDb3JlOjpJbWFnZURlY29kZXIKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1v
dGVJbWFnZURlY29kZXJBVkY+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUltYWdl
RGVjb2RlckFWRj4gY3JlYXRlKFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXImIG1hbmFnZXIs
IGNvbnN0IFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXImIGlkZW50aWZpZXIsIFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCisgICAgc3RhdGljIFJl
ZjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZShSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5h
Z2VyJiBtYW5hZ2VyLCBjb25zdCBXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyJiBpZGVu
dGlmaWVyLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUltYWdl
RGVjb2RlckFWRihtYW5hZ2VyLCBpZGVudGlmaWVyLCBtaW1lVHlwZSkpOwogICAgIH0KQEAgLTgw
LDcgKzgwLDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBXZWJDb3JlOjpTdWJzYW1wbGluZ0xldmVsID0gV2Vi
Q29yZTo6U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgV2ViQ29yZTo6RGVjb2RpbmdP
cHRpb25zJiA9IFdlYkNvcmU6OkRlY29kaW5nT3B0aW9ucyhXZWJDb3JlOjpEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUo
bG9uZyBsb25nKSBmaW5hbDsKLSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwog
ICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxs
RGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBm
aW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKaW5kZXggNDFkNTM4
ODAyM2QzOTE0OTUyMTgzNWY2ODhkZTRkNDhmNjVkNzY3ZS4uMDgyYjMzNjZjOGJjNzEzMGQ3NWQ1
Njk4YTdkNzllNjg5MmFkOGY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIu
Y3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAotUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGTWFuYWdlcjo6Y3JlYXRlSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPFJl
bW90ZUltYWdlRGVjb2RlckFWRj4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6Y3JlYXRl
SW1hZ2VEZWNvZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPElt
YWdlRGVjb2RlcklkZW50aWZpZXI+IGltYWdlRGVjb2RlcklkZW50aWZpZXI7CiAgICAgSVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UgeyBkYXRhIH07CkBAIC0xMDgs
NyArMTA4LDcgQEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpzZXRVc2VHUFVQ
cm9jZXNzKGJvb2wgdXNlR1BVUHJvY2VzcykKICAgICBJbWFnZURlY29kZXI6Omluc3RhbGxGYWN0
b3J5KHsKICAgICAgICAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzdXBwb3J0c01lZGlhVHlwZSwK
ICAgICAgICAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpjYW5EZWNvZGVUeXBlLAotICAgICAgICBb
dGhpc10oU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pIHsKKyAgICAgICAgW3RoaXNdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikgewog
ICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUltYWdlRGVjb2RlcihkYXRhLCBtaW1lVHlwZSwgYWxw
aGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICAgICAgfQogICAgIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkZNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaAppbmRleCBjMjM3ODJiNjUwNGVjNzli
ZTQ2ZTEyNmY0ZTU5MWIzZmY3ZjZkYmE4Li4zNjE4YWZkMTIwOThiNTU3NmI0ZGQ0ZmZiZjNjMDZm
YmE4NDJhNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaApAQCAtNTksNyAr
NTksNyBAQCBwdWJsaWM6CiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGVuc3VyZUdQVVByb2Nl
c3NDb25uZWN0aW9uKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFJlbW90ZUltYWdlRGVjb2Rl
ckFWRj4gY3JlYXRlSW1hZ2VEZWNvZGVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6QWxwaGFPcHRpb24sIFdlYkNvcmU6OkdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZG
PiBjcmVhdGVJbWFnZURlY29kZXIoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6QWxwaGFPcHRpb24sIFdlYkNvcmU6
OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIC8vIEdQVVByb2Nlc3NDb25uZWN0
aW9uOjpDbGllbnQuCiAgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVBy
b2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcApp
bmRleCA5NjZmYzkzYjc3YWZhYTNlNjIwOGQ3YWJhNWFlZDJjN2E5NGM3NGIyLi4wMDVhMzdjYzI2
ZWM0YzA5MDFiZjRmMzcxMjIzODY1ZGUyZDE2NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJl
bW90ZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6flNv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUoKQogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1l
c3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbW90ZVNvdXJj
ZUJ1ZmZlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZTo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZTo6YXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGRhdGEpCiB7CiAgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDM2MDE3NWJmYmU5ZDFhZjgzZWQ1
NzkxMzczYjc3NWVlNzUwYWM3Y2MuLmVhNWZhM2VjMzZjMmI4NTllZTU3OGNjZDBlMDM0OGM3M2Ni
ODZkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCkBAIC03Miw3ICs3Miw3IEBAIHBy
aXZhdGU6CiAKICAgICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcwogICAgIHZvaWQg
c2V0QWN0aXZlKGJvb2wpIGZpbmFsOwotICAgIHZvaWQgYXBwZW5kKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAg
dm9pZCByZXNldFBhcnNlclN0YXRlKCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlh
U291cmNlKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKaW5kZXggMTFiNGE4NmU0ODUy
ZjZjMjA2MWZhM2ZjOWFmMjlmODg5OWY0ZWI5Zi4uYjQwODlmZDM1NDhjOTdmMTdmYzJiOWZiMDAy
NzgwZDY0M2NmMjNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcApAQCAtMTY1LDEwICsxNjUs
MTAgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVt
b3J5KiBzdG9yYWdlLCBjb25zdCBXZWJDb3JlOjoKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OkF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkIHsg
U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGRhdGFTaXplIH0sIGZv
cm1hdCwgZnJhbWVDb3VudCB9LCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6ZmV0Y2hEYXRhKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUmVjb3JkZXI6OkZldGNoRGF0YSB7IH0sIFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtaW1lVHlwZSA9IG1pbWVUeXBlKCldKGF1dG8mJiBk
YXRhLCBkb3VibGUgdGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZm
ZXI7CiAgICAgICAgIGlmIChkYXRhLnNpemUoKSkKICAgICAgICAgICAgIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSwgbWltZVR5cGUsIHRpbWVDb2RlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29y
ZGVyUHJpdmF0ZS5oCmluZGV4IDMwM2E1NGY3NmYxODVlOTY0NTRlZjlmNWJiNDYxZjI4ZTEyNjc4
NmQuLjU3NmZkMWM2ZTk3YzBjYWQ4Y2JmZWM5NGUzYmQzNjMzMDc2ZTQ0ZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRl
clByaXZhdGUuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlCiAgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJs
ZShXZWJDb3JlOjpNZWRpYVNhbXBsZSYsIFdlYkNvcmU6OlZpZGVvU2FtcGxlTWV0YWRhdGEpIGZp
bmFsOwotICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4m
JikgZmluYWw7CisgICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQ
dHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgZG91YmxlKT4mJikgZmluYWw7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAgICAgdm9pZCBzdGFydFJlY29yZGluZyhTdGFy
dFJlY29yZGluZ0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxh
YmxlKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1BdWRpb0Rh
dGEmLCBjb25zdCBXZWJDb3JlOjpBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaApp
bmRleCAyYzEzNGU5ZTcxOWY5NzI2NWM4ZDA5MDMzNDljMWUyZjljMWUyZTg0Li4wMzUzYWFiZjdk
NGI5MjVhYTJmMTU2MmQ1NzNhYWYzMDkzYzgzYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9B
UElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVu
dEZyYWdtZW50OwogY2xhc3MgTm9kZTsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsKQEAgLTYzLDcg
KzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2UoV2ViS2l0OjpXZWJQ
YWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
U2VsZWN0aW9uKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdl
JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RG
OjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmKSB7
IH0KICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYktpdDo6V2ViUGFnZSYs
IFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYs
IGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJ
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggYTA2MzUyMDQzMzViM2FiMGU2
ZGZiMGM2Nzc3NjdmNDI4ZThhNzdlMi4uMTgwYjExMTFlY2YwMTEzMjgwOTI2NmExYmNlMjdkMjYw
ZTRmYTAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudC5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIERPTVdpbmRvd0V4dGVuc2lv
bjsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU2LDcgKzU2LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgflBhZ2VMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIEFQSTo6T2JqZWN0KikgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJp
bmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6VVJMJiwgQVBJOjpPYmplY3QqKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2Um
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0
IFdURjo6VVJMJiwgQVBJOjpPYmplY3QqKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJh
bWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFn
ZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggZGY4ZDg4MDQ3ZmY2NzMxN2NiNGFiZmUzNTEz
MDVhMDc1YTBjM2FiZi4uYmM4ZWFiOTg3OWJlODBkODUxYjAwMWMyMDBjMGYxODU3YTZjN2EyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9t
YWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjM0LDcgKzYzNCw3IEBAIC0g
KHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdE
ZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBbbV9jb250cm9sbGVyLT5fZWRpdGlu
Z0RlbGVnYXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
Om1fY29udHJvbGxlciB3aWxsV3JpdGVSYW5nZVRvUGFzdGVib2FyZDp3cmFwcGVyKFdlYktpdDo6
Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBn
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAorICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwK
ICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5nZXRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTY0Miw3ICs2NDIs
NyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5F
ZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgYXV0byBkYXRhQnlUeXBl
ID0gW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgcGFzdGVib2FyZERhdGFGb3JS
YW5nZTp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAg
ICAgICAgZm9yIChOU1N0cmluZyAqdHlwZSBpbiBkYXRhQnlUeXBlKSB7CiAgICAgICAgICAgICAg
ICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlKTsKLSAgICAgICAgICAgICAgICBwYXN0ZWJv
YXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGFCeVR5cGVbdHlwZV0pKTsKKyAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOwogICAgICAg
ICAgICAgfTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQuY3BwCmluZGV4IGMzOTgxMWVhYzk0ZTI5NWUzODMzYmZjZGQ2YzE4MmE0YTMx
MDE5OWIuLjM1MzYwNjUyNWI4NDU3NjhlMzAxNTgzOGY4OTExZGU4ZjJlMDgwOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0xMzUsNyAr
MTM1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVRv
UGFzdGVib2FyZChXZWJQYWdlJiBwYWdlLCBjb25zdAogICAgICAgICBtX2NsaWVudC53aWxsV3Jp
dGVUb1Bhc3RlYm9hcmQodG9BUEkoJnBhZ2UpLCB0b0FQSShjcmVhdGVIYW5kbGUocmFuZ2UpLmdl
dCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFn
ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6
Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIGlm
IChtX2NsaWVudC5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKSB7CiAgICAgICAgIFdLQXJyYXlS
ZWYgdHlwZXMgPSBudWxscHRyOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBh
Z2UsIGNvCiAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUtPnN0cmluZygp
KTsKIAogICAgICAgICBmb3IgKGF1dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxlbWVudHNPZlR5cGU8
QVBJOjpEYXRhPigpKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOworICAgICAgICAg
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVt
LT5zaXplKCkpOwogICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdURk1vdmUoYnVm
ZmVyKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50LmgKaW5kZXggZDk4ZWUxYzE1NWQ0ZmI4MjkyYTU4ZDljNThlODgwMDdhMTM0
MDUxYS4uMzFlMTM5NmU3MGFkNjBjMTlkOTNjNjc1Yzc2MzQ2ZmUwZGE3OTQ5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNjQsNyArNjQsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2hhbmdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5v
dGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYlBh
Z2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgd2ls
bFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5n
ZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQg
Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmlu
YWw7CiAgICAgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmluYWw7CiAgICAg
Ym9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21l
bnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYgZGVzdGluYXRpb24sIGJvb2wgaXNNb3Zl
KSBmaW5hbDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuY3BwCmluZGV4IGEzNGUyMTJkMDdhZjJmZjU3M2UxYThhMzQwZWMxZDNmY2ViNDJhMWEuLjk0
ZmVkMmU3ZTM2MzAyOTFmOTlmNTM3OGFjYmRkMmMzOTUwZDNlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC02MiwxMCArNjIsMTAgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkVVJMUmVxdWVzdChX
ZWJQYWdlJiBwYWdlLCBjb25zdCBSZXMKIHN0YXRpYyB2b2lkIHJlbGVhc2VTaGFyZWRCdWZmZXIo
dW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiB7CiAgICAgLy8gQmFsYW5jZWQgYnkg
cmVmKCkgaW4gSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1
ZXN0KCkuCi0gICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRh
dGEpLT5kZXJlZigpOworICAgIHN0YXRpY19jYXN0PGNvbnN0IFNoYXJlZEJ1ZmZlcio+KGRhdGEp
LT5kZXJlZigpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2ls
bExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBl
LCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwg
QVBJOjpPYmplY3QqIHVzZXJEYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0
IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwm
IHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2Ns
aWVudC53aWxsTG9hZERhdGFSZXF1ZXN0KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggMzZiZDk4MGIyZmFhMWFmNDVh
YzMxMDZlYjAxZTlmMzc2YmExM2FjZi4uODYzYmRhYjYyODRjYTNhYWQyZjlkNWZmZjVmZDY4ZWFi
OGIyYjczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
aApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50KGNvbnN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJhc2UqKTsKIAog
ICAgIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwotICAgIHZvaWQgd2lsbExvYWRE
YXRhUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsTG9h
ZERhdGFSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25z
dCBXVEY6OlN0cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1l
JiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1l
JiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKaW5kZXggOThhNmUyZTdiNTdlNTIzMThmNDJjOGNkMTdlNGYwZGUwNTA5NDA5My4uMDIyNzBh
NTNhZjliYThiZjgwZDdjM2IzZGNkYzhjZWI1NjUxNzZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCkBAIC0yODMsNyArMjgzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OmRpZENhY2hlUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgIAog
ICAgIGF1dG8gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogICAgIGlm
ICghYnVmZmVyKSB7Ci0gICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRC
dWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291cmNlIHVybCAlcyIs
IHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIGNyZWF0ZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxl
UmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAK
aW5kZXggODcyOThiMzcyNTA0OTg1NzFhZTQ4ZjhjOTIxODVlYjIwZTMxZGUxMi4uMzEwZmNhNzg3
NWMzMmMzY2Q3NDc4ZGI2NGY1OWFjMmNmNTAxNjM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMTU1LDcg
KzE1NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vCiAgICAgaWYgKEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UobV9jb3JlTG9hZGVyLT5m
cmFtZSgpLCByZXNwb25zZSkpIHsKICAgICAgICAgYXV0byBpbnRlcmNlcHRlZFJlcXVlc3RJZGVu
dGlmaWVyID0gbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCk7CiAgICAgICAgIG1faW50ZXJjZXB0
Q29udHJvbGxlci5iZWdpbkludGVyY2VwdGluZ1Jlc3BvbnNlKGludGVyY2VwdGVkUmVxdWVzdElk
ZW50aWZpZXIpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVy
Y2VwdFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJhbWUoKSwgcmVzcG9uc2UsIGludGVyY2VwdGVk
UmVxdWVzdElkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
aW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgcG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIGluc3BlY3RvclJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBv
dmVycmlkZURhdGEpIG11dGFibGUgeworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25X
ZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJhbWUoKSwgcmVzcG9uc2Us
IGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgcG9saWN5RGVjaXNpb25D
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxl
cildKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGluc3BlY3RvclJlc3BvbnNlLCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkgewogICAg
ICAgICAgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVz
cG9uc2U6IG5vdCBjb250aW51aW5nIGludGVyY2VwdCBsb2FkIGJlY2F1c2Ugbm8gY29yZUxvYWRl
ciBvciBubyBJRCIpOwogICAgICAgICAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5jb250
aW51ZVJlc3BvbnNlKGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIpOwpAQCAtMTk1LDcgKzE5
NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgh
bV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5v
dCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAg
aWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVM
b2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAg
IGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+
aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZl
ciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQogICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRh
KHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsK
QEAgLTI5NSwxMSArMjk1LDExIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kCiAgICAgTE9HKE5l
dHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJj
ZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgp
KTsKICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNl
OiIpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJ
blNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAoIWJ1ZmZlcikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZyb20gU2hhcmVh
YmxlUmVzb3VyY2Ugc2VudCBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7Ci0gICAgICAgIFdF
QlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0
byBjcmVhdGUgU2hhcmVkQnVmZmVyIik7CisgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVB
U0VfTE9HKCJkaWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciIpOwogICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBtX2NvcmVMb2FkZXItPmZy
YW1lKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKICAg
ICAgICAgICAgICAgICBwYWdlLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0
aWNNZXNzYWdlKFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxFcnJvcktl
eSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmNyZWF0ZVNoYXJlZEJ1ZmZlckZh
aWxlZEtleSgpLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCA0MmRlNDYxNDE5Nzc4
YjdjNDUwZmNhMWViMDM3YzFjZTk3ZDJkNjMxLi5hN2Y0NWM4NDAxYjJmZDJmODcwZTM2NzhjNThm
YzMxMGMyZTFmMjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5oCkBAIC0yMDcsNyArMjA3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBy
aXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sKSBmaW5hbCB7IH0KICAgICBib29sIGdldEZv
cm1WYWx1ZShTdHJpbmcmIGZvcm1WYWx1ZSkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBi
b29sIGhhbmRsZVNjcm9sbChXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9s
bEdyYW51bGFyaXR5KSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBs
aXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBmaW5hbDsKICAgICB2
b2lkIHdpbGxEZXRhY2hSZW5kZXJlcigpIGZpbmFsOwogICAgIGJvb2wgcGx1Z2luSGFuZGxlc0Nv
bnRlbnRPZmZzZXRGb3JBY2Nlc3NpYmlsaXR5SGl0VGVzdCgpIGNvbnN0IGZpbmFsOwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0K
aW5kZXggZDIzYWJiOWU2NTExYjEzYmJkNTIzYWY0NTFmNDQxNzg3M2E2YzFlMC4uZDQ3ZjMyYjdk
NDkxOTU2YmRjZTc3YmZlNmYxNWNhNzg2NWJmZDE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0yNTUyLDcgKzI1NTIsNyBA
QCB2b2lkIFBERlBsdWdpbjo6bm90aWZ5RGlzcGxheU1vZGVDaGFuZ2VkKGludCkKICAgICB1cGRh
dGVTY3JvbGxiYXJzKCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBERlBsdWdpbjo6bGl2
ZVJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUERG
UGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBOU0RhdGEgKnBkZkRhdGEg
PSBsaXZlRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5o
CmluZGV4IDg4ZjQ1Y2U1MWNlMzFkZjBjNWIzYjc1ODYyMzZjM2YwZDljOTNhZDMuLjU4ZDcwYTM5
YTE2ZDZhNGMwZThiMGNhOWQwM2FjM2QzN2FlZGZjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIEludFBvaW50Owog
Y2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBTY3JvbGxiYXI7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTI4OCw3ICsyODgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdl
YkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb2ludEluTG9jYWxDb29yZGluYXRlcykgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291
cmNlRGF0YSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFy
eUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpID0gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA1
OGMxYzlmZWJmYWMyNWQ1OTFlY2Y0ZGY0NjE1ODUyYTAyMDg3Zjg0Li43ZmIyMGM1OTJkYmZhMDk2
ZTM4YmMxNjg3MDM3MzhjYjhmNDA3Yzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtOTI0LDcgKzkyNCw3IEBAIHZvaWQgUGx1Z2lu
Vmlldzo6d2lsbERldGFjaFJlbmRlcmVyKCkKICAgICBtX3BsdWdpbi0+d2lsbERldGFjaFJlbmRl
cmVyKCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJj
ZURhdGEoKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6
OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8
ICFtX3BsdWdpbikgewogICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxT
dHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmgKaW5kZXggMzRiZWZiNzUzOTkwZjZmYTliZDQ3NDVkOTZkM2RmMGRiM2Nk
NjAyNC4uZDE1M2EyOWNhMTRhOTBlMzIyN2E4OTFlM2VlZjVlNGU3OTczNTFhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMTE2LDcgKzEx
Niw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxkQWxsb3dTY3JpcHRpbmcoKTsKIAotICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdDsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNl
RGF0YSgpIGNvbnN0OwogICAgIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9u
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAgICBTdHJpbmcgZ2V0U2VsZWN0aW9uRm9y
V29yZEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIGNvbnN0OwogICAgIGJvb2wg
ZXhpc3RpbmdTZWxlY3Rpb25Db250YWluc1BvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggNzZk
YzQzMDZkNWYyMDg3M2JiMTM4YmY2NmJiMGNiZDM2ODc3ZjYxYi4uYjA0Y2NjZjExM2U0OTI4ZmE2
NjM4M2JkMjQzMWRiODc0ODUzY2NhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJl
Y2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2VNZXNzYWdlIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK3ZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURh
dGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghbV9j
b25uZWN0aW9uKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50LmgKaW5kZXggYzhjMGQ4NjJkNzEzOTM4Yzc1Mzg0MWQyOGM4MjRmZGI1MzVlNzVlNC4uNmIw
YTQxN2NmMGQzYWUwZDdiODkzYTk5ODY4M2FiZjJiYzRhNGQ5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZp
bmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAg
ICB2b2lkIGRpZEZpbmlzaCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAxNTIw
NWJhOGQyNDUyNzYwMjM0MTI0ZjA1NjAyNDRiM2Y4NWU0YzVjLi43Y2ZjMDNhODVkMzlkODFmMzky
YzBhYTEzMGY4M2ZiZDJjODM0ZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMTQyLDcg
KzE0Miw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRBcHBseVN0eWxlKGNvbnN0IFN0
eWxlUHJvcGVydGllcyYgc3R5bGUsIGNvbnN0IHN0ZDo6CiAKICNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJBdHRhY2htZW50SWRl
bnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
ZGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29u
c3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgZGF0YSkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVn
aXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGlkZW50aWZpZXIsIGNvbnRlbnRUeXBl
LCBwcmVmZXJyZWRGaWxlTmFtZSwgZGF0YS5nZXQoKSkpOwogfQpAQCAtMjY1LDcgKzI2NSw3IEBA
IHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRv
ckNsaWVudCgpLndpbGxXcml0ZVRvUGFzdGVib2FyZCgqbV9wYWdlLCByYW5nZSk7CiB9CiAKLXZv
aWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQog
ewogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5nZXRQYXN0ZWJvYXJk
RGF0YUZvclJhbmdlKCptX3BhZ2UsIHJhbmdlLCBwYXN0ZWJvYXJkVHlwZXMsIHBhc3RlYm9hcmRE
YXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA5MTQ2ZTRjNmQyZTE4OWViNTE5OWFmYzk1
ODM2NWJiNDJkYjUyMWRjLi5iMDU4NjE4OTFlY2M4NGM2MzY4YTIwNmMyNzAxMDYwZjUwNTJmNWUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYs
IGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJikgZmluYWw7CiAKICNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQotICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZl
cnJlZEZpbGVOYW1lLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2
b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0
ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCByZWdp
c3RlckF0dGFjaG1lbnRzKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+
JiYpIGZpbmFsOwpAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRp
dGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9p
ZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAg
IHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAg
ICAgCiAgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7
CiAgICAgdm9pZCByZWdpc3RlclJlZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA5NTkyMjNkNzc2ZWY5MzJhYjFhNzM3
MTYwNmUzMjkxZDIzMjlkM2NiLi4xNGEwODNjYTIwN2E5MDYzY2Y4MGIxZTdlOTY3MGE0ODdjZjRk
Mzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExODgsNyArMTE4OCw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExv
YWRlciogbG9hZGVyKQogICAgICAgICAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNl
RGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOworICAgICAgICAgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNv
dXJjZURhdGEoKTsKICAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNl
KG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6
ZSgpIDogMCk7CiAgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGxvYWRlci0+
cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggNmYzZjU2NmM1MmYxZTM5
ZGVmMDBiNWYzMTlmZWJhZTY2NzhhMTljMC4uNGE4YmVlNTdmZGIxZmZjZGVmMDA4OWZhNjVlOTc1
Mzc1MGQyNTBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTEzMiwx
MiArMTMyLDEyIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8
U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYWdl
SWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBh
c3RlYm9hcmRUeXBlczo6UmVwbHkodHlwZXMpLCAwKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICAvLyBGaXJzdCBjaGVjayB0aGUg
b3ZlcnJpZGVzLgogICAgIFZlY3Rvcjx1aW50OF90PiBvdmVycmlkZUJ1ZmZlcjsKICAgICBpZiAo
V2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVib2FyZE92ZXJyaWRlcygpLmdldERh
dGFGb3JPdmVycmlkZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIG92ZXJyaWRlQnVm
ZmVyKSkKLSAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKG92ZXJyaWRlQnVmZmVyKSk7CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CiAKICAgICAvLyBGYWxsYmFjayB0byBtZXNzYWdp
bmcgdGhlIFVJIHByb2Nlc3MgZm9yIG5hdGl2ZSBwYXN0ZWJvYXJkIGNvbnRlbnQuCiAgICAgU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwpAQCAtMjA5LDcgKzIwOSw3IEBAIGludDY0
X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBjCiAgICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50OwogfQogCi1pbnQ2
NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIq
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitpbnQ2NF90IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAg
IFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+
c2l6ZSgpKSB7CkBAIC0zMjQsNyArMzI0LDcgQEAgVmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHAKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKQogewogCiAgICAgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGE7CkBAIC00MDYsNyArNDA2
LDcgQEAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmQKICAgICByZXR1cm4gaW5mbzsKIH0KIAotUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9y
eTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0
ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGlwY0hhbmRsZSksIDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDNmZjM1NTgwOGUxZDZlYjJhZTMy
YjU3YjdlYmY3ZTM1YWNmZjRlOWEuLjFmZjgzZTExYmMxNzg5YWFjMGY5MDBjOTNkYzIyZmJmMjM5
ZWEyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU2LDcgKzU2LDcgQEAg
cHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBz
dHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0
ZToKIAogICAgIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgaW50
NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRCdWZm
ZXJGb3JUeXBlKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VVJMKGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0
X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRl
OgogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQ
YXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
cm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgd3JpdGVU
b0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpTZWxlY3Rp
b25EYXRhJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTg5LDcgKzg5LDcgQEAgcHJp
dmF0ZToKICNlbmRpZgogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJk
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRs
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQg
Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hh
bmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRleCA3NmM2MDI4ODgx
MzUyMjA3MWEyMjc2OWQ3M2YyZDNlODA4YmFjM2I1Li5kNDE1OTA0YzcxYjFjMGM3MmEzZTE3Y2Y3
YjM0NTIwYWEyNzkwMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVu
dC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmll
d0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKIAogV2ViUHJl
dmlld0xvYWRlckNsaWVudDo6fldlYlByZXZpZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7CiAK
LXZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2
ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0
byB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShtX3BhZ2VJRCk7CiAg
ICAgaWYgKCF3ZWJQYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApp
bmRleCBhZTA1MGE5OTIzZWE3ZWY5NTU1Y2JhMTcyMGJkMWZmZjZiYzk2ZTBlLi5jYzNiMjRiNzI5
YjIxOGI4MGQzN2ExMmNkN2ZhYzNkZmE5YmVkMWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZp
ZXdMb2FkZXJDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgV2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBT
dHJpbmcmIHV0aSwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwotICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmFpbCgpIG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFj
Lm1tCmluZGV4IDRiNmUyMTdiYmUzN2Y4YzFkZjE3YWJjY2JiYzg3NzQzMWEyYjFlM2IuLmUxZTBl
NjExMmEyZGVkYzNiOGJiNjMwOTg1MzUzNzZlZjQzYWQ1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdD
bGllbnRNYWMubW0KQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xh
cmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQog
ICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGFyY2hpdmVIYW5kbGU7CiAgICAgc2l6ZV90IGFyY2hp
dmVTaXplID0gMDsKICAgICBpZiAoZGF0YSkgewotICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEu
Z2V0KCkpOworICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAgICAgIGF1dG8gYXJjaGl2ZVNo
YXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihhcmNoaXZlQnVmZmVy
LmdldCgpKTsKICAgICAgICAgaWYgKCFhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCmluZGV4IDkyOWIxNjBlZWE5YTY0NzJjMmNhN2QwM2FjMzEzM2I3ZTFlZTlmODcuLmQ4
OGY0NGNmY2RlNWUxNWY2NmMxMjRiNDBmNWI1NDM1Yjk0Njk3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTM0MCw3ICszNDAsNyBAQCBT
dHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3Vt
ZW50TG9hZGVyID0gbV9jb3JlRnJhbWUtPmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCk7
CiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+
bWFpblJlc291cmNlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBt
YWluUmVzb3VyY2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAg
ICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBy
ZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBiM2IwZmJjYzc2ZTYw
ZjY3OGJmMWM2ZGU1MjEzMDU5OGNiMmQwMDg4Li5hY2UyMzE1NjYyZTIwZjZmMDQwODc1Y2U1NDdl
NTlkYWYxZmU5ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcApAQCAtMTczOCw3ICsxNzM4LDcgQEAgTk9fUkVUVVJOIHZvaWQgV2ViUGFnZTo6bG9h
ZFJlcXVlc3RXYWl0aW5nRm9yUHJvY2Vzc0xhdW5jaChMb2FkUGFyYW1ldGVycyYmLCBVUkwKICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWRE
YXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGlj
aWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFJlZjxTaGFyZWRCdWZmZXI+JiYgc2hhcmVkQnVm
ZmVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwg
c3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBz
ZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKK3ZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYm
IHdlYnNpdGVQb2xpY2llcywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgc2hhcmVkQnVm
ZmVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwg
c3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBz
ZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKIHsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJ
TlMpCiAgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCAmbV9tYWluRnJhbWUuZ2V0KCkpOwpAQCAtMTc1Myw3ICsxNzUzLDcgQEAg
dm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQgc2gKIAogICAgIC8vIExldCB0aGUgSW5qZWN0ZWRCdW5kbGUg
a25vdyB3ZSBhcmUgYWJvdXQgdG8gc3RhcnQgdGhlIGxvYWQsIHBhc3NpbmcgdGhlIHVzZXIgZGF0
YSBmcm9tIHRoZSBVSVByb2Nlc3MKICAgICAvLyB0byBhbGwgdGhlIGNsaWVudCB0byBzZXQgdXAg
YW55IG5lZWRlZCBzdGF0ZS4KLSAgICBtX2xvYWRlckNsaWVudC0+d2lsbExvYWREYXRhUmVxdWVz
dCgqdGhpcywgcmVxdWVzdCwgY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPihzdWJzdGl0dXRlRGF0
YS5jb250ZW50KCkpLCBzdWJzdGl0dXRlRGF0YS5taW1lVHlwZSgpLCBzdWJzdGl0dXRlRGF0YS50
ZXh0RW5jb2RpbmcoKSwgc3Vic3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgpLCBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5n
ZXQoKSk7CisgICAgbV9sb2FkZXJDbGllbnQtPndpbGxMb2FkRGF0YVJlcXVlc3QoKnRoaXMsIHJl
cXVlc3QsIGNvbnN0X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KHN1YnN0aXR1dGVEYXRh
LmNvbnRlbnQoKSksIHN1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCksIHN1YnN0aXR1dGVEYXRhLnRl
eHRFbmNvZGluZygpLCBzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCksIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdl
dCgpKTsKIAogICAgIC8vIEluaXRhdGUgdGhlIGxvYWQgaW4gV2ViQ29yZS4KICAgICBGcmFtZUxv
YWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QoKm1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSwgcmVx
dWVzdCwgc3Vic3RpdHV0ZURhdGEpOwpAQCAtMzg2MSw3ICszODYxLDcgQEAgdm9pZCBXZWJQYWdl
OjpnZXRTb3VyY2VGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgKIAogdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6
Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykK
IHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKICAgICAgICAgaWYgKFBsdWdp
blZpZXcqIHBsdWdpblZpZXcgPSBwbHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgp
KSkKICAgICAgICAgICAgIGJ1ZmZlciA9IHBsdWdpblZpZXctPmxpdmVSZXNvdXJjZURhdGEoKTsK
QEAgLTM4NzcsNyArMzg3Nyw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9m
RnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kCiAgICAgY2FsbGJh
Y2soZGF0YVJlZmVyZW5jZSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNv
dXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCitz
dGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1l
KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkKIHsKICAgICBEb2N1bWVudExv
YWRlciogbG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYg
KCFsb2FkZXIpCkBAIC0zODkyLDcgKzM4OTIsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cgog
CiB2b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0cmluZywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZT4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoYXV0byog
ZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkgewogICAg
ICAgICBVUkwgcmVzb3VyY2VVUkwoVVJMKCksIHJlc291cmNlVVJMU3RyaW5nKTsKICAgICAgICAg
YnVmZmVyID0gcmVzb3VyY2VEYXRhRm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpLCByZXNvdXJj
ZVVSTCk7CkBAIC02OTc3LDcgKzY5NzcsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZEdldExvYWREZWNp
c2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcgogICAg
IGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7
IH0pOwogCi0gICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVj
aXNpb24sIGxvYWRJZGVudGlmaWVyLnRvSW50ZWdlcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogaWNvbkRh
dGEpIG11dGFibGUgeworICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllci50b0ludGVnZXIoKSwgW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBpY29uRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgaWNvbkRhdGEgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKaW5kZXggMzVjMjNmZTYwMmViNGY5MDQxYWJiMGE5ODdlN2QyZjBjYTBm
OGIzZS4uZjZkZGQ3OGVhMTk4OGUxZmNhYzkwNzRiZjU2ZTdhYjFiYjFjYjVjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMjE2LDcgKzIxNiw3IEBA
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBT
ZWxlY3Rpb25EYXRhOwogY2xhc3MgU2VsZWN0aW9uR2VvbWV0cnk7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7
CiBjbGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0OwogY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwpAQCAt
MTM5Niw3ICsxMzk2LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdm9p
ZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpKTsKLSAgICB2b2lkIGRpZEZpbmlzaExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciYpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgcmVx
dWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICNl
bmRpZgogCkBAIC0xNTk5LDcgKzE1OTksNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIHNvdXJj
ZUZvckZyYW1lKFdlYkZyYW1lKik7CiAKLSAgICB2b2lkIGxvYWREYXRhSW1wbCh1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpv
cHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJiwgc3RkOjpvcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpT
ZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RB
bGxvdyk7CisgICAgdm9pZCBsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJD
b3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBv
bGljaWVzRGF0YT4mJiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIGNv
bnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmLCBzdGQ6Om9wdGlvbmFsPE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25I
aXN0b3J5VmlzaWJpbGl0eSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9
IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsK
IAogICAgIC8vIEFjdGlvbnMKICAgICB2b2lkIHRyeUNsb3NlKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQppbmRleCBjOTVjMzg0NjM5MjIxODRmMjU3YTcxOWRiNWJhOWE0ODI5
YWVkZjFiLi44NWU2NTE4NjkyZWQ2MGM3ODhlNzJhN2NlMzJmM2YwZTE1Y2E3NzgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpA
QCAtMzIxNyw3ICszMjE3LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50
KHVpbnQzMl90IGFjdGlvbikKICAgICAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZG93
bmNhc3Q8UmVuZGVySW1hZ2U+KCplbGVtZW50LnJlbmRlcmVyKCkpLmNhY2hlZEltYWdlKCk7CiAg
ICAgICAgIGlmICghY2FjaGVkSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigp
OworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gY2FjaGVk
SW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9y
eTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKQEAgLTQ2ODMsNyArNDY4Myw3IEBAIHZvaWQgV2ViUGFn
ZTo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJp
bmcmIGZpbGVOYW1lCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTdGFydExv
YWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGZpbGVOYW1lLCB1dGkpKTsKIH0KIAot
dm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgV2ViUGFnZTo6ZGlkRmluaXNoTG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVCghYnVmZmVyLmlzRW1wdHkoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCmluZGV4IGQzZDM4
Y2FjNDEyMTFkN2UyOWI1N2YyNDUyMzY0ZTM3YjQyM2MzMWEuLjM3ZjI3ZTk1MmQwNzE3MTEyMWNi
NGY1NDg3YThiODRiOWY4YTYzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dp
bi9XZWJQcm9jZXNzV2luLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJl
c291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQorUmVmUHRyPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFt
ZSkKIHsKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
V2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9QaW5nSGFuZGxlLmgKaW5kZXggMWY1NTg0ZmEzODdkNzZjY2U5NGZmN2I1Njk2OGU3
ZTgyMjA2MDYwNi4uYTI1NTYwYTEwYzI4ODJlMWFiZDE3ODQ1Njk0ODZlYTEzZWQ4OTZkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKQEAg
LTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAg
ICAgICAgcGluZ0xvYWRDb21wbGV0ZSh7IH0sIHJlc3BvbnNlKTsKICAgICB9Ci0gICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiwgaW50KSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQorICAgIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0
ZSgpOyB9CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
KiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBwaW5nTG9hZENv
bXBsZXRlKCk7IH0KICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBwaW5nTG9hZENvbXBs
ZXRlKGVycm9yKTsgfQogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGUqKSBmaW5hbCB7IHJldHVybiBtX3Nob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGJhMzFmYTdjODZiOTA5ZmNiMzU4NzNhY2Zj
ZDIyYThlOGI5MjkyMmUuLjQ1ZjdjMWY1Y2E3NDgyZDYwZDliYzc0ZWY2MTZjMzJmZDYyNjc2NDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9p
ZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmlu
YWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBm
aW5hbDsKIAogICAgIHZvaWQgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKSBm
aW5hbDsKICAgICBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0
ZUFjY2Vzcyhjb25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpET01QYXN0ZUFj
Y2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXgg
NzRjNDg3ODMxNzdhZjkwYjIwMmQ1MWM0NjY2OWI0MDEyYjEyNWY1OS4uYzJjNDBkM2QyYTEzM2Yy
ODEzNDE1NjAzNGRlNTQxNDFhNGNlOWMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNDEzLDcg
KzQxMyw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgLy8gTm90IGltcGxlbWVudGVk
IFdlYktpdCwgb25seSBXZWJLaXQyLgogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVu
dDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICAvLyBOb3QgaW1wbGVt
ZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApp
bmRleCBhMjU5OGYzMmZiNzYwYTdkODgzYzlmNGNlZWMxOGNmNTkxZWI4ZWFkLi45NTlkNzQ4YjU2
YmUxMDc2YmQ5Nzc5OTIyY2QzNTZkMjFhNjgxNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTI0OCw3ICsyNDgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZEgyUGluZyhjb25z
dCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFNlY29uZHMsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3I+JiYpPiYmKSBmaW5hbDsKIAogICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9u
Rm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3JlOjpMaW5rSWNvbiYsIHVpbnQ2
NF90Pj4mKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6U2hh
cmVkQnVmZmVyKik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqKTsKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJv
b2wgbV9sb2FkaW5nSWNvbiB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmlu
ZGV4IGI4NDlkMmFhYzJhOTNmYmVlNDE3MjlmMjRhODZjZGNmNmIxZmUwMTkuLmFhMmNjOTgxNDc0
YTEzY2U1MDg0Nzk4OTQyMzY4NDQ5MWM4OGY2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCkBAIC0yMDEyLDcgKzIwMTIsNyBAQCBSZWZQdHI8V2ViQ29yZTo6TGVnYWN5UHJldmlld0xv
YWRlckNsaWVudD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVByZXZpZXdMbwogICAgICAg
ICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fZmlsZVBhdGg7CiAgICAgICAgIFJldGFpblB0cjxOU0Zp
bGVIYW5kbGU+IG1fZmlsZUhhbmRsZTsKIAotICAgICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlCisgICAgICAgIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gZGF0YUFycmF5
ID0gYnVmZmVyLmNyZWF0ZU5TRGF0YUFycmF5KCk7CiAgICAgICAgICAgICBmb3IgKE5TRGF0YSAq
ZGF0YSBpbiBkYXRhQXJyYXkuZ2V0KCkpCkBAIC0yMDk0LDcgKzIwOTQsNyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3Rk
OjpwYWlyPFdlYkNvcgogICAgICAgICB9CiAKICAgICAgICAgbV9sb2FkaW5nSWNvbiA9IHRydWU7
Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUs
IGljb24tPnNlY29uZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChXZWJD
b3JlOjpTaGFyZWRCdWZmZXIqIGJ1ZmZlcikgeworICAgICAgICBkb2N1bWVudExvYWRlci0+ZGlk
R2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29uLT5zZWNvbmQsIFt0aGlzLCB3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
YnVmZmVyKSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIGZpbmlzaGVkTG9hZGluZ0ljb24oYnVmZmVyKTsKQEAgLTIxMzEs
NyArMjEzMSw3IEBAIHN0YXRpYyBOU0ltYWdlICp3ZWJHZXROU0ltYWdlKFdlYkNvcmU6OkltYWdl
KiBpbWFnZSwgTlNTaXplIHNpemUpCiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyKiBpY29uRGF0YSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZp
bmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogaWNvbkRh
dGEpCiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQVNTRVJUKG1fbG9hZGluZ0lj
b24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCA5MTQxOTZjNGE5YmU2ZGJhM2Y5
YjIzN2M1NmE4ZTZhYTBjYWFmMGExLi41MjdmYTU1MjE5MGJhMDAxNDUxN2ZmZGU3Mzc3MjBiMmU3
YTkwYWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTUsMTQgKzU1LDE0IEBA
IHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogI2VuZGlmCiAg
ICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJv
YXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1z
Q291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3Rl
Ym9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZv
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldE51bWJl
ck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJp
bmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhu
YW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBAIC03NSw3ICs3NSw3
IEBAIHByaXZhdGU6CiAKICAgICBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRUeXBl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwotICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0
X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90
IHNldFVSTChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICBpbnQ2NF90IHNldENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5tbQppbmRleCAxMTA5YjMxNmJkNzY1NTA2YjM2MjlmYzBiN2U4MDg2MTdhZjg1
NDg3Li4zOTg2ODU5ZjczMzhlMjg0NTdlZDRiMTkwY2JhNjcwNTIyMTAwMjRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWIKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmdldFR5cGVz
KHR5cGVzKTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5cGUocGFzdGVib2FyZFR5cGUpOwogfQpA
QCAtMTU0LDcgKzE1NCw3IEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjCiAgICAgcmV0dXJuIFBs
YXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0VHlwZXMocGFzdGVib2FyZFR5cGVz
KTsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUo
U2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK2ludDY0
X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJl
dHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUo
YnVmZmVyLCBwYXN0ZWJvYXJkVHlwZSk7CiB9CkBAIC0yMDksNyArMjA5LDcgQEAgaW50IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5jb3VudCgpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihpbmRleCwgdHlwZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggYzUzMWIx
ZGRkZDNiZThlNTZlZDZkNWQ3YzdmYTZiN2RhYTZjYzNhMy4uODNlODU5MTQzNDVlYTdjYjg0MWQ5
OWZkMWZiNjY2ZDhjY2YwMzAyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNDYwLDcgKzQ2MCw3IEBAIC0gKHZvaWQpZGVhbGxv
YwogCiAtIChOU0RhdGEgKilkYXRhCiB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJl
c291cmNlRGF0YSgpOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVz
b3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4g
bmlsOwogICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggNWIxMGQzZmY3NTY3MDExNTEzOGY0ZDQzMTcyOTdj
ZGNhMWVjOTVkNy4uMjhkODc1OTI5Y2NhY2RiOWExMzg4YTgyNmIyZmQ1ZWNmNDZlY2NkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0z
NTQwLDcgKzM1NDAsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJl
TWVudUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaAogICAgIH0KIAogICAgIGlm
IChhdXRvKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgewotICAgICAgICBpZiAoUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKKyAgICAg
ICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBp
bWFnZS0+ZGF0YSgpKQogICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJ
bWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJS
ZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2Uu
bW0KaW5kZXggYTAxMWIyNzYyNzM4OTYxOGVkNWMwYzgzMjllMjk3YjFkMTc5ZGNiNy4uYWFkY2Zi
ZmVhMzU2YjM3YjBmNTM3OGFmYTg5OGI4ZWE5OWFlNmE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCkBAIC0zNjcsNyArMzY3LDcgQEAgLSAo
TlNTdHJpbmcgKilfc3RyaW5nVmFsdWUKICAgICBpZiAoIWVuY29kaW5nLmlzVmFsaWQoKSkKICAg
ICAgICAgZW5jb2RpbmcgPSBXaW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsKICAgICAKLSAgICBTaGFy
ZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+
Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxscHRyOworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJl
c291cmNlLT5kYXRhKCkgOiBudWxscHRyOwogICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6
IDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJl
YW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAppbmRleCA1
ZGYyMTcwZDJhNGJmYzRhNDgwY2Y0NWE4NGQyM2Q3MzA1OTM1ZmMxLi4zNjBhZWRjZWFjY2IxZmJk
ZDFkNDRhZDQyZDhjMDRjNmYwNGI2MTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9NZW1vcnlTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9y
eVN0cmVhbS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IC8vIE1lbW9yeVN0cmVhbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorTWVtb3J5U3RyZWFtOjpNZW1v
cnlTdHJlYW0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX2J1ZmZlcihX
VEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKQEAgLTQ0LDcgKzQ0LDcgQEAg
TWVtb3J5U3RyZWFtOjp+TWVtb3J5U3RyZWFtKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIk1lbW9yeVN0cmVhbSIpOwogfQogCi1DT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJl
YW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKK0NPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIG5ldyBNZW1vcnlTdHJl
YW0oV1RGTW92ZShidWZmZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL01lbW9yeVN0cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFt
LmgKaW5kZXggMDc4NjBhMTVhYjRhM2RiMTE5YzkxMTNmYWZjOWMxMjRiMWMxNDZkZC4uMmJhN2Rh
OTBhNWM2MjEyOTAwOGRmNjEyOTczMGFjZGI5YmQ0NTNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vTWVtb3J5U3RyZWFtLmgKQEAgLTM1LDcgKzM1LDcgQEAKIGNsYXNzIE1lbW9yeVN0cmVhbSBm
aW5hbCA6IHB1YmxpYyBJU3RyZWFtCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIENPTVB0cjxNZW1v
cnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFu
Y2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICAvLyBJVW5rbm93bgog
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5f
IFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CkBAIC03NSwxMCAr
NzUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBD
bG9uZShfQ09NX091dHB0cl8gSVN0cmVhbSoqIHBwc3RtKTsKIAogcHJpdmF0ZToKLSAgICBNZW1v
cnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOworICAg
IE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKICAgICB+TWVt
b3J5U3RyZWFtKCk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7
CiAgICAgc2l6ZV90IG1fcG9zIHsgMCB9OwogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAppbmRleCBjNWRlOTBjODEwZjFh
ZjU0MDVjMjlkYzQ4NjZhZGZmYzM2OTk5YWE4Li4wMTg0YmVmOGM3MzU4ZGJmYmExYmU5ZmUxYTg3
ZTU3OTM4MTc2MmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNo
aXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcApAQCAt
MTY0LDcgKzE2NCw3IEBAIEhSRVNVTFQgV2ViQXJjaGl2ZTo6ZGF0YShfQ09NX091dHB0cl9vcHRf
IElTdHJlYW0qKiBzdHJlYW0pCiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShD
RkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0
KCkpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5
dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOwogCiAg
ICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShidWZmZXIpKS5j
b3B5UmVmVG8oc3RyZWFtKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCBlOWExMzZm
NmJiNDJlYzhhYjdmNTBhM2FiMzMzMzNmYjNmMjAyM2ZkLi4yMTE1OThkMzlhNmFmMzYxY2MyZTQw
Njc5MDZlMmI4Njg1N2VlZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTI2MSw3ICsyNjEs
NyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJk
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZQogewogfQogCi12b2lkIFdlYkVkaXRvckNsaWVu
dDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gPiYpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+
JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCAyYWFh
ZmNkZGU0MjQ4ZjQxNWIxYTgzNzNiYzAzNjUxMjMyOWY4YzBmLi5jMTY3Y2EyOTIyM2VlYTk5ZTUy
OGE4ZWE2MTI4YzFlMWU2OWVlM2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNTUsNyArNTUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2ls
bFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2Vy
ZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwgeyB9CiAgICAgdm9pZCByZXNwb25kVG9DaGFuZ2Vk
Q29udGVudHMoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAppbmRleCA2
ZGM0YTQ4NTJhMTRkOTE0NDNlNTMxOWE1MDdjMTk2ODcyYWZiMTQ5Li41NThlMTNjN2YxZmRhYTVi
MTI1ZDIwYmVmZTc5MWEyN2ZmNzU3MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUu
Y3BwCkBAIC01NTksNyArNTU5LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZFJlcXVlc3QoX0lu
X29wdF8gSVdlYlVSTFJlcXVlc3QqIHJlcXVlc3QpCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLXZv
aWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
QlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIg
ZmFpbGluZ1VSTCkKK3ZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5n
TmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpCiB7CiAgICAgU3RyaW5nIG1pbWVU
eXBlU3RyaW5nKG1pbWVUeXBlLCBTeXNTdHJpbmdMZW4obWltZVR5cGUpKTsKICAgICBpZiAoIW1p
bWVUeXBlKQpAQCAtNTkyLDcgKzU5Miw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9J
bl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSCiAgICAg
ICAgIGlmICghc3RhdC5jYlNpemUuSGlnaFBhcnQgJiYgc3RhdC5jYlNpemUuTG93UGFydCkgewog
ICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGFCdWZmZXIoc3RhdC5jYlNpemUuTG93UGFydCk7
CiAgICAgICAgICAgICBVTE9ORyByZWFkOwotICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9l
cyBhIG5lZWRsZXNzIGNvcHksIHdvdWxkIGJlIGJldHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhl
IFNoYXJlZEJ1ZmZlcgorICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNz
IGNvcHksIHdvdWxkIGJlIGJldHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhlIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIKICAgICAgICAgICAgIC8vIG9yIGFkb3B0IHRoZSBWZWN0b3Igb3Igc29tZXRo
aW5nLgogICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkYXRhLT5SZWFkKGRhdGFCdWZmZXIuZGF0
YSgpLCBzdGF0aWNfY2FzdDxVTE9ORz4oZGF0YUJ1ZmZlci5zaXplKCkpLCAmcmVhZCkpKQogICAg
ICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRp
Y19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFt
ZS5oCmluZGV4IDQzNjA1NGZkOWRkYjQ3Y2EzMjk2YjExNzk4MTQzNGVjMTg5N2RhZDEuLmZhOWMz
ODFjYzU3M2JhNmIyMDk4OGVhYjM1MDhlZDlhMzBhOGYxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRnJhbWUuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7
CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiB0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVKU0NvbnRleHQqIEpTQ29udGV4dFJlZjsKQEAgLTE5NSw3
ICsxOTUsNyBAQCBwcml2YXRlOgogICAgIH5XZWJGcmFtZSgpOwogCiAgICAgdm9pZCBsb2FkSFRN
TFN0cmluZyhfSW5fIEJTVFIgc3RyaW5nLCBfSW5fIEJTVFIgYmFzZVVSTCwgX0luXyBCU1RSIHVu
cmVhY2hhYmxlVVJMKTsKLSAgICB2b2lkIGxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJM
LCBCU1RSIGZhaWxpbmdVUkwpOworICAgIHZvaWQgbG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFt
ZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpOwogICAgIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpJbnRSZWN0PiYgY29tcHV0ZVBhZ2VSZWN0cyhIREMgcHJpbnREQyk7CiAgICAgdm9pZCBz
ZXRQcmludGluZyhib29sIHByaW50aW5nLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHBhZ2VT
aXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG9yaWdpbmFsUGFnZVNpemUsIGZsb2F0IG1h
eGltdW1TaHJpbmtSYXRpbywgV2ViQ29yZTo6QWRqdXN0Vmlld1NpemVPck5vdCk7CiAgICAgdm9p
ZCBoZWFkZXJBbmRGb290ZXJIZWlnaHRzKGZsb2F0KiwgZmxvYXQqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRETEwuY3BwCmluZGV4IDk2MjAxOThiNGI1NDBhZTZmNzk2N2Y4MjMzYzk0NjRi
ZDI3NzU4NTEuLjI3NGI3ZDJkNmNmMmViNDcxZDdiOGI4OTY1OWFlNDY5Y2Y5MzRjOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcApAQCAtMTY1LDggKzE2NSw4IEBAIHZvaWQg
c2h1dERvd25XZWJLaXQoKQogfQogCiAvL0ZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgbW92aW5n
IHRoaXMgdG8gYSBuZXcgZmlsZSBmb3IgY3Jvc3MtcHJvamVjdCBmdW5jdGlvbmFsaXR5Ci1XRUJL
SVRfQVBJIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZm
ZXIoY29uc3QgY2hhciogbmFtZSk7Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2Fk
UmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCitXRUJLSVRfQVBJIFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNv
bnN0IGNoYXIqIG5hbWUpOworUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBpbnQgaWRy
OwogICAgIC8vIHRlbXBvcmFyeSBoYWNrIHRvIGdldCByZXNvdXJjZSBpZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCmluZGV4IDJmZmNiODk5OWIxODQ0OGNkNjI0OGY5YmZj
ZjE1YWE1MTdjYWViZDYuLjk0M2ZhN2FiNDVjOGIwZDM1ZDY3YTMwYzBmZGFiNDM0OWEzZTY0YTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDcg
QEAgV2ViUmVzb3VyY2U6On5XZWJSZXNvdXJjZSgpCiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJSZXNvdXJjZSIpOwogfQogCi1XZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0
ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorV2ViUmVzb3VyY2Uq
IFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewog
ICAgIENPTVB0cjxNZW1vcnlTdHJlYW0+IG1lbW9yeVN0cmVhbSA9IE1lbW9yeVN0cmVhbTo6Y3Jl
YXRlSW5zdGFuY2UoV1RGTW92ZShkYXRhKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNv
dXJjZS5oCmluZGV4IDk0YWIzNWM1NjA4MTAxMTdjODk1ZTRhMTBjMzkxYmNjYTMzN2QxOGUuLmI2
ZWI4NmZjY2E1ZTMxMzY5YzllOGIwNjU0MThmMjc5NDkyOTk5MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViUmVzb3VyY2UuaApAQCAtMzYsNyArMzYsNyBAQAogCiBjbGFzcyBXZWJSZXNvdXJj
ZSBmaW5hbCA6IHB1YmxpYyBJV2ViUmVzb3VyY2UgewogcHVibGljOgotICAgIHN0YXRpYyBXZWJS
ZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMg
V2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIC8vIElVbmtub3du
CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9J
bl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2OTVkNjkxODg0ZDEz
ODJhM2U5NzY0ZDllMjA0NDlmNmU3ZGZlMGMwLi4xY2U3ZDBhNDM3M2M3MzJmM2U0YWRhZGZiNWY3
Yzc0YWU2YjBmMGUxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAg
ICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFy
ZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHA6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNw
cDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVz
dC5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlz
dFRlc3RzQ0cuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2Nv
YS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNv
cmVTdHVicy5jcHA6CisKIDIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAppbmRleCA4NTgzYjI5YWQ5OTBj
MjJiNDcyYzg2OWVjY2Q4NjgyOTYyMWJiMGI0Li5iODQ3ZDNhODI2YjNkOWZmYzA4ZjZmM2JlMzgy
NjBhNmM1OWRmZjJhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9G
aWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lz
dGVtLmNwcApAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVUZXN0RmlsZShjb25z
dCBTdHJpbmcmIHBhdGgpCiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwog
fTsKIAotLy8gRklYTUU6IFJlZmFjdG9yIEZpbGVTeXN0ZW1UZXN0IGFuZCBTaGFyZWRCdWZmZXJU
ZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgorLy8gRklYTUU6IFJlZmFjdG9yIEZpbGVTeXN0ZW1UZXN0
IGFuZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCBhcyBhIHNpbmdsZSBjbGFzcy4KIGNsYXNz
IEZpbGVTeXN0ZW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIHZv
aWQgU2V0VXAoKSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCmluZGV4IGQyM2Y3ZTFlNzI5ZTA1NTQ1M2Fj
MWYwNTNhMjM0NTMwMjk1Y2IyMDUuLmVhMmFlMmM3ZThiMzA4NTIwNWIzZDNjOTc0MzBlZmFlY2Vi
YjliNGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNw
bGF5TGlzdFRlc3RzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
RGlzcGxheUxpc3RUZXN0cy5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCBURVNUKERpc3BsYXlMaXN0
VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQpCiAgICAgICAgICAgICByZXR1cm4geyBnbG9iYWxCdWZm
ZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVtQnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkg
fTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1P
dXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJiBkaXNwbGF5TGlzdEl0ZW0pIGNvbnN0IGZp
bmFsCisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0
T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgZGlzcGxheUxpc3RJdGVtKSBjb25zdCBmaW5h
bAogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIGluZGV4ID0gbV9pdGVtcy5zaXplKCk7CiAg
ICAgICAgICAgICBtX2l0ZW1zLmFwcGVuZChzdGQ6OmdldDxTdHJva2VQYXRoPihkaXNwbGF5TGlz
dEl0ZW0pKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5jcHAKaW5kZXggYWRkMjQ4YjBkZTJkMmYxMWM1YTFmNTJjYTdlOGVmYTk0OTI3NGMw
MC4uMTdjZTg3OTQxYmE4NDIzM2FmODlmZGI0NGFlYzI2ZmYxOGM3ZDdmMiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTQx
LDMxICs0MSwzMSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgewogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRz
T2ZNaXNzaW5nRmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRl
V2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlz
dGluZ19maWxlIikpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRf
TlVMTChidWZmZXIpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENv
bnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Qs
IGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIGF1dG8gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsK
LSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVz
dDo6dGVzdERhdGEoKSkpOwotICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3Ry
bGVuKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7CisgICAgRVhQRUNU
X1RSVUUoU3RyaW5nKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBT
dHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7
CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0
aW5nRW1wdHlGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVX
aXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQogewotICAgIGF1dG8gYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZp
bGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1
ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0NvbnRpZ3VvdXMoKSk7CiAgICAgRVhQ
RUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5KCkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKK1RFU1RfRihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNP
ZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgYXV0byBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBh
dGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVm
ZmVyLT5pc0NvbnRpZ3VvdXMoKSk7CiAgICAgYXV0byBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CkBA
IC03NCwxOSArNzQsMTkgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVh
dGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiAgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChi
dWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRl
ZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZm
ZXIpOwogICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICBidWlsZGVyLmFwcGVu
ZCgqYnVmZmVyKTsKICAgICBidWlsZGVyLmFwcGVuZCgiYSIsIDEpOwotICAgIEVYUEVDVF9UUlVF
KGJ1aWxkZXIuc2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkg
KyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOwotICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIu
Z2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSldKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLnNpemUoKSA9PSAoc3RybGVu
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKKyAgICBFWFBF
Q1RfVFJVRSghbWVtY21wKGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihGcmFnbWVudGVk
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKKyAgICBFWFBFQ1RfRVEoJ2EnLCBidWls
ZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKClbc3RybGVuKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogewogICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVs
bG8iOwogICAgIGNoYXIgdGVzdERhdGExW10gPSAiV29ybGQiOwpAQCAtMTAwLDcgKzEwMCw3IEBA
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKICAgICBFWFBF
Q1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiwgYXJyYXlCdWZmZXItPmRhdGEo
KSwgc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKK1RFU1RfRihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRz
KQogewogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IwKDB4NDAwMCwgJ2EnKTsKICAgICBWZWN0
b3I8dWludDhfdD4gdmVjdG9yMSgweDQwMDAsICdiJyk7CkBAIC0xMjYsNyArMTI2LDcgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykK
ICAgICB9CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQorVEVTVF9GKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogewogICAgIGNoYXIgdGVzdERhdGFbXSA9ICJI
YWJpdGFzc2UgaW50ZWdlciBlcm9zIHRpbmNpZHVudCBhIHNjZWxlcmlzcXVlISBFbmltIGVsaXQ/
IFNjZWxlcmlzcXVlIG1hZ25pcywiCiAgICAgImV0IG1vbnRlcyB1bHRyaWNlcyB0cmlzdGlxdWUg
YSEgUGlkLiBWZWxpdCB0dXJwaXMsIGRhcGlidXMgaW50ZWdlciByaG9uY3VzIHNvY2lpcyBhbWV0
IGZhY2lsaXNpcywiCkBAIC0xNTIsNyArMTUyLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGNvcHkpCiAgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIC8vIHNo
YXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNpemUgKD0gMHgx
MDAwKSB0byBjaGVjayBjb3B5KCkuCiAgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGJ1aWxkZXIx
LnNpemUoKSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBidWlsZGVyMS5jb3B5
KCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNsb25lID0gYnVpbGRlcjEu
Y29weSgpOwogICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKICAgICBF
WFBFQ1RfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1aWxk
ZXIxLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKIApA
QCAtMTY4LDcgKzE2OCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogICAgIEVY
UEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBidWlsZGVyKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBidWlsZGVy
KQogewogICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOwogICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVpbGRlcjEodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CkBAIC0xNzgsNyAr
MTc4LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCiAgICAgYXV0byBidWZm
ZXIgPSBidWlsZGVyMS50YWtlKCk7CiAgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNOdWxsKCkp
OwogICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX05FKGNv
cHkucHRyKCksIGJ1ZmZlci5wdHIoKSk7IC8vIFdlIGhhdmUgZGlmZmVyZW50IFNoYXJlZEJ1ZmZl
cgorICAgIEVYUEVDVF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRyKCkpOyAvLyBXZSBoYXZlIGRp
ZmZlcmVudCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyCiAgICAgRVhQRUNUX0VRKGNvcHkuZ2V0KCks
IGJ1ZmZlci5nZXQoKSk7IC8vIEJ1dCB0aGVpciBjb250ZW50IGlzIGlkZW50aWNhbAogCiAgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKQEAgLTIwNCw3ICsyMDQsNyBAQCBzdGF0aWMg
dm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5n
dGgsIGNvbnN0IGNoYXIqCiAgICAgICAgIEVYUEVDVF9FUShidWZmZXJbaV0sIGV4cGVjdGVkW2ld
KTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQorVEVTVF9GKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKICAgICBWZWN0b3I8dWlu
dDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9OwogICAgIFZlY3Rvcjx1aW50OF90PiBz
MiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CkBAIC0yMzksNyArMjM5LDcgQEAgVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBs
LnNpemUoKSwgImwiKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykK
K1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogewogICAgIGF1
dG8gbWFrZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+PiYmIGNvbnRlbnRzKSB7
CiAgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKQEAgLTI2MCw3ICsyNjAsNyBA
QCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogICAgIEVYUEVDVF9ORShtYWtl
QnVmZmVyKHsgeyAnYScgfSwgeyAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnIH0s
IHsgJ2EnIH0gfSkuZ2V0KCkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhT
dHJpbmcpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQog
ewogICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9OwogICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKQEAgLTI3MywxMSArMjczLDExIEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKICAgICBFWFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0
cmluZygpLCAiIik7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQorVEVTVF9G
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQogewogICAgIGNvbnN0IGNoYXIqIGNv
bnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LiI7CiAKLSAgICBhdXRvIGNo
ZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0g
W10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIFZlY3Rv
cjx1aW50OF90PiBkYXRhID0gc2hhcmVkQnVmZmVyLnJlYWQoNCwgMyk7CiAgICAgICAgIEVYUEVD
VF9FUShkYXRhLnNpemUoKSwgM3UpOwogICAgICAgICBFWFBFQ1RfRVEoU3RyaW5nKGRhdGEuZGF0
YSgpLCAzKSwgIiBpcyIpOwpAQCAtMzA4LDcgKzMwOCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCByZWFkKQogdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHNpemVfdCBOID4KIGNvbnN0ZXhwciBz
aXplX3QgYXJyYXlzaXplKCBjb25zdCBUICgmKVtOXSApIHsgcmV0dXJuIE47IH0KIAotc3RhdGlj
IHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxTdHJpbmc+KiBjaHVua3MsIFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHNlcGFyYXRvciA9ICJcclxuIiwgYm9vbCBpbmNs
dWRlU2VwYXJhdG9yID0gZmFsc2UpCitzdGF0aWMgdm9pZCByZWFkQWxsQ2h1bmtzKHN0ZDo6dmVj
dG9yPFN0cmluZz4qIGNodW5rcywgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIHNlcGFyYXRvciA9ICJcclxuIiwgYm9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFs
c2UpCiB7CiAgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJmJ1ZmZlciwg
c2VwYXJhdG9yLnV0ZjgoKS5kYXRhKCkpOwogICAgIFN0cmluZyBjaHVuayA9IGNodW5rUmVhZGVy
Lm5leHRDaHVua0FzVVRGOFN0cmluZ1dpdGhMYXRpbjFGYWxsYmFjayhpbmNsdWRlU2VwYXJhdG9y
KTsKQEAgLTM0MSw3ICszNDEsNyBAQCBzdGF0aWMgdm9pZCBjaGVja0RhdGFJblJhbmdlKGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgc2l6ZV90IHN0YXJ0LCBzaXplX3QgbAogCiBURVNUX0Yo
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBpbmNsdWRlU2VwYXJhdG9yKQogewotICAgIGF1
dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgeworICAgIGF1dG8gY2hl
Y2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAg
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJnNoYXJlZEJ1ZmZlciwgIlx4MTBc
eDExXHgxMiIpOwogICAgICAgICBWZWN0b3I8dWludDhfdD4gb3V0OwogICAgICAgICBFWFBFQ1Rf
VFJVRShjaHVua1JlYWRlci5uZXh0Q2h1bmsob3V0KSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCiB7CiAgICAgY29uc3Qg
Y2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3QuIjsKIAotICAg
IGF1dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgeworICAgIGF1dG8g
Y2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAgICAg
ICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJnNoYXJlZEJ1ZmZlciwgImlz
Iik7CiAKICAgICAgICAgU3RyaW5nIGNodW5rID0gY2h1bmtSZWFkZXIubmV4dENodW5rQXNVVEY4
U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKCk7CkBAIC00MTgsNyArNDE4LDcgQEAgVEVTVF9GKFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCiBURVNUX0YoU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXJUZXN0LCByZWFkQWxsQ2h1bmtzSW5NdWx0aVNlZ21lbnQpCiB7CiAgICAgY29u
c3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlzIHRoZSBtb3N0IHJpZGljdWxvdXMg
aGlzdG9yeSB0aGVyZSBpcy4iOwotICAgIGF1dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNo
YXJlZEJ1ZmZlcikgeworICAgIGF1dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAgc3RkOjp2ZWN0b3I8U3RyaW5nPiBjaHVua3M7CiAg
ICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzMVdpdGhvdXRTZXBhcmF0b3Jb
XSA9IHsgIlRoIiwgInMgIiwgInMgdGhlIG1vc3QgciIsICJkIiwgImN1bG91cyBoIiwgInN0b3J5
IHRoZXJlICIsICJzLiIgfTsKICAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRC
dWZmZXIsICJpIik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKaW5kZXggOWI4YjEzYTc1ZDUyZmY5NTFlYWQxODE4NWQ1
NmMzNzkxYjJkN2JlZC4uZDAzNDFhODFkZWRhNzE5ZjM1ZmNjZTM5NDY1NWVjMjU1YWI4ZmJiNiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZl
clRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRC
dWZmZXJUZXN0LmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CiAKLXZvaWQgU2hhcmVkQnVmZmVyVGVzdDo6U2V0VXAoKQordm9pZCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyVGVzdDo6U2V0VXAoKQogewogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQo
KTsKIApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKICAg
ICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXJU
ZXN0OjpUZWFyRG93bigpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0OjpUZWFyRG93
bigpCiB7CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBGaWxlUGF0aCk7CiAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBFbXB0eUZpbGVQYXRoKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmggYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oCmluZGV4
IDY0MDExOWJkZTZmY2U0MWYwMWVhYWI2MzE2ODQ3YmU1NmI5MGNmNWMuLmEzOTJhMDUxOTQ3NTZk
MmFkNTZlODI0OTI5ZWNlNGMxNWYzYWQwNTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaApAQCAtMjksNyArMjksNyBAQAog
CiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlclRlc3QgOiBw
dWJsaWMgdGVzdGluZzo6VGVzdCB7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIHB1YmxpYzoKICAgICB2b2lkIFNldFVwKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcApp
bmRleCA3YTMyMDdmOTVjNjI3ZmU2NjI5YzkyNzc0NGI0ZWYwM2U1ZTJlYzNkLi44NTgyOGYwMzky
MjQ1ZjRhOTliNzYwNmI1ZjRhYzVlYzM0ZGNlZTViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcApA
QCAtMTA0LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB7IGdsb2JhbEJ1ZmZl
cklkZW50aWZpZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSB9
OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUo
Y29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QgZmluYWwKKyAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0m
KSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NvY29hL1NoYXJlZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KaW5kZXggOGJmYjg1ZWM2MWQzMDE3NTkzZGMwYjNkMzdk
NmQ3YjZkOTkzMjc3Ny4uYzNiNWQzZThkN2MwM2IxYTM2NWRkNTM1YTBiMjlhZGUyN2FjZWNhOCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJl
ZEJ1ZmZlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2Ev
U2hhcmVkQnVmZmVyLm1tCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyB2b2lkIGV4cGVjdERhdGFB
cnJheXNFcXVhbChOU0FycmF5PE5TRGF0YSAqPiAqZXhwZWN0ZWQsIE5TQXJyYXk8TlNEYXRhICo+
CiAgICAgfQogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkp
CitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQog
ewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXI7CkBAIC02MywxMSArNjMsMTEgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0
ZU5TRGF0YUFycmF5KQogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRh
IF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCku
Z2V0KCkpOwogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRl
TlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBb
IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgp
KS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNF
cXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0s
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+
Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgfQogfQogCi1URVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQpCitURVNUX0YoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUZvckRhdGFTZWdtZW50KQogewogICAgIEBhdXRv
cmVsZWFzZXBvb2wgewogICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwCmluZGV4IDQ2Yzc2MjAz
ZTFiMjVhYWFiN2EwMmUwYmIyYmY1ZTBjNDM2ZWQ2ODcuLjViZTY2NTk0NjEzNzMxZTIxZWQ5N2Rh
NzRjNTczOGM3Y2EyODViZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rl
c3RXZWJDb3JlU3R1YnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJD
b3JlU3R1YnMuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5oPgogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJ
bnRvQnVmZmVyKGNvbnN0IGNoYXIqKQorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciopCiB7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1Bl
cmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg5MjM5MmQ4N2Y3NDAwZWJmYTk4ZjVhODY1
M2M5ZmQ0ZTI3NTVmNTkuLjcwODBhNmNmN2E2ZDIyMDBhZTMwM2MyMmNlNzMxMTkxMGRkYWExZjIg
MTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTItMDIgIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3Vz
IFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0
YWJpbGl0eTogcGFydCAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM2NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIERlY29kZXJUZXN0L0RlY29kZXJUZXN0L21haW4ubW06CisgICAgICAgIChtYWlu
KToKKwogMjAyMS0xMS0yMSAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW1BlcmZvcm1hbmNlIHRlc3RdW2Nzcy1jb250YWluXSBBZGQgY2FzZSB0byB0ZXN0
IGNvbnRhaW46IGxheW91dCBpbnNpZGUgYSBjb21wbGV4IGRvY3VtZW50Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446136</attachid>
            <date>2021-12-07 01:25:15 -0800</date>
            <delta_ts>2021-12-09 05:36:13 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233677-20211207202510.patch</filename>
            <type>text/plain</type>
            <size>786330</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YTJiZTEzOTE2MjhmNTNiNmQ2ZDIyZTEzY2E3ZmIyYmRkMjA1ZWYzLi5kMTcyNDIwMTVhOGI5Zjc3
ZTRmZWM3M2Y1YjMwMzdhZThkMDkxODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8v
cHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBi
ZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0FycmF5QnVmZmVyLmg6CisKIDIwMjEtMTItMDMgIEtlaXRoIE1pbGxlciAgPGtlaXRo
X21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFN0cnVjdHVyZUlEQmxvYgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDI1YTA4MjRiYjdjNzg1MDc0YWY4MTM2NTkxMDYxMDBkYmUzZjA1YTAuLjllYmE1
YzQxNDIzNTg3ZjFhNGQ0MzgzMjc1N2M1MGRiNmRkNzliODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMDAzIEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9w
cm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIg
YW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJl
dHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICBSZW5h
bWUgb25seSwgbm8gY2hhbmdlIGluIGJlaGF2aW91ci4KKworICAgICAgICAqIE1vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oOgorICAgICAgICAqIE1vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
bWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUv
Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NE
TS5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaDoKKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oOgorICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5Lmg6CisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oOgorICAgICAgICAq
IE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwOgorICAgICAgICAqIE1v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lv
bi9NZWRpYU1ldGFkYXRhLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJj
ZUJ1ZmZlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIu
aDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJT
b3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgICog
Y3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5jcHA6
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9y
Lmg6CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaDoKKyAgICAg
ICAgKiBlZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNv
cmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHA6CisgICAgICAgICogZWRpdGluZy9XZWJDb3JlUGFz
dGVib2FyZEZpbGVSZWFkZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29h
Lm1tOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAg
KiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKiBlZGl0
aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW06CisgICAgICAgICogZmlsZWFwaS9CbG9iLmg6CisgICAgICAgICogZmlsZWFw
aS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtTZW5kUXVl
dWUuaDoKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAg
KiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MQXR0
YWNobWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW1hZ2VE
b2N1bWVudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAqIGlu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clBhZ2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAg
ICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0xvYWRlclN0cmF0ZWd5
Lmg6CisgICAgICAgICogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIv
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlRGF0YS5oOgorICAgICAg
ICAqIGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oOgorICAgICAg
ICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVy
L2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2
ZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmg6Cisg
ICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAq
IGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NT
dHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0ZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRl
eHRUcmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oOgorICAgICAg
ICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tOgorICAgICAgICAqIGxvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5tbToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAqIHBh
Z2UvUGFnZS5jcHA6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5jcHA6CisgICAgICAg
ICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhLmg6Cisg
ICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0tl
eWVkQ29kaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0
ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2Fy
ZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5o
OgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1N0YXRpY1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1N0YXRpY1Bhc3RlYm9h
cmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Y2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJD
Ri5jcHA6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2Nv
YS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1VdGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0
aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVy
R2VuZXJpYy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5l
cmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9X
T0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVG
b3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0
Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlD
bGVhcktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
VGh1bmRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9D
RE1UaHVuZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9H
U3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFDYWlyby5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRQbGF0Zm9ybURhdGFXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlRGVjb2RlckRpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVh
ZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFn
ZVJlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9J
bWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rl
ci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxh
dGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3RDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9w
b3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Bhc3Rl
Ym9hcmRXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3Bw
OgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAqIHRlc3Rp
bmcvTW9ja0NETUZhY3RvcnkuaDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
LmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmg6CisgICAgICAgICog
d29ya2Vycy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlckZldGNoLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyRmV0Y2guaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0
U3RvcmFnZS5jcHA6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcDoKKyAg
ICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisKKzIwMjEt
MTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
U2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbWlsYXIgdG8gU3Ry
aW5nQnVpbGRlciwgYSBTaGFyZWRCdWZmZXIgY2FuIG5vdyBvbmx5IGJlIG1vZGlmaWVkIHRocm91
Z2gKKyAgICAgICAgYSBTaGFyZWRCdWZmZXJCdWlsZGVyLiBBIFNoYXJlZEJ1ZmZlciBiZWNvbWVz
IGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgRmx5LUJ5OiBQYXNzIFNoYXJlZEJ1
ZmZlciB2aWEgY29uc3QgcmVmZXJlbmNlcyBvciBwb2ludGVycyB3aGVyZSBpdCdzIGVhc3kKKyAg
ICAgICAgdG8gZG8gc28uCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91
cjsgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
OjpjbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29u
c3VtZXI6OnRha2VBc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6
OnNldFNvdXJjZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5o
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmRhdGEgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOiBEZWxldGVkLgorICAg
ICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIE1vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL05l
dHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6ZGF0YUxlbmd0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzQnVmZmVyZWREYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6Omhhc0RhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJl
c291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZl
cmluZ1BvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9y
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmNsZWFyUmVzb3VyY2VE
YXRhKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0
aXR1dGVSZXNvdXJjZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRl
UmVzb3VyY2U6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGVsaXZlcik6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6
OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpzdG9yZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6
dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNv
bnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFn
ZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTVkdEb2N1
bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
VGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRUcmFjazo6ZG9VcGRh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmg6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFhTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW06
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVy
RGlkU3RhcnRDb252ZXJ0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2Fk
ZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdD
b252ZXJ0ZXI6OnByZXZpZXdEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdD
b252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6Om9wZXJhdG9y
IGJvb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNO
dWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmlzRW1w
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6c2l6ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpyZXNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjplbXB0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpnZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtl
eWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlkRnJv
bVdlYk1Jbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3Rv
cmVkSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0
YTo6SW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OmFwcGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbml0RGF0YTo6cGF5bG9hZCBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUHJldmlld0Nv
bnZlcnRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OlByZXZp
ZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OnRha2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jhbmdl
UmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yOjpEYXRhOjpEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5l
cmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
RnJvbURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKiB3b3JrZXJzL1Njcmlw
dEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpidWZmZXIgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc29sYXRlZENvcHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmlzUGVuZGluZyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0Lmg6CisgICAgICAgICog
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3Jl
YXRlUmVzcG9uc2VCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVh
dGVSZXNwb25zZUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpjbGVhclJlc3BvbnNlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVz
dDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorCisy
MDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAg
RGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBv
bmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBXaGVuIGNhbGxpbmcg
U2hhcmVkQnVmZmVyOjpkYXRhKCkgdGhlIHVuZGVybHlpbmcgZGF0YSB3YXMgZmxhdHRlbmVkLAor
ICAgICAgICBhbmQgc28gY291bGQgYmUgbXV0YXRlZCB3aGlsZSBiZWluZyBzaGFyZWQuIFRoaXMg
d2FzIGFuIHVuZGVzaXJhYmxlCisgICAgICAgIGJlaGF2aW91ci4KKyAgICAgICAgV2UgaW50cm9k
dWNlIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgd2hpY2ggZ3VhcmFudGVlIHRoYXQgaXRzIGNvbnRl
bnQgaXMgbWFkZQorICAgICAgICBvZiBjb250aWd1b3VzIGRhdGEuCisgICAgICAgIEFsbCBtZXRo
b2RzIHRoYXQgd291bGQgaGF2ZSBtdXRhdGVkIGEgU2hhcmVkQnVmZmVyIHdoZW4gYmVpbmcgZmxh
dHRlbmVkIGFyZQorICAgICAgICBtb3ZlZCB0byBDb250aWd1b3VzU2hhcmVkQnVmZmVyLgorCisg
ICAgICAgIEFyZWEgd2hlcmUgU2hhcmVkQnVmZmVycyB3ZXJlIGFsd2F5cyBjcmVhdGVkIHdpdGgg
YSBzaW5nbGUgc2VnbWVudCB3aGVyZQorICAgICAgICBjb252ZXJ0ZWQgdG8gYSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyLgorICAgICAgICBQcmV2aW91c2x5LCBhIFNoYXJlZEJ1ZmZlciB3b3VsZCBo
YXZlIGJlZW4gZmxhdHRlbmVkIG9ubHkgaWYgaXQgbmVlZGVkIHRvIGJlCisgICAgICAgIGFuZCBv
bmx5IHdoZW4gdGhlIGRhdGEgd2FzIGdvaW5nIHRvIGJlIGFjY2Vzc2VkOyBmb2xsb3dpbmcgdGhp
cyBjaGFuZ2UKKyAgICAgICAgdGhlIGNvbnZlcnNpb24gaXMgbm93IGV4cGxpY3RseSBkb25lIHRo
cm91Z2ggYSBjYWxsIHRvIG1ha2VDb250aWd1b3VzLgorICAgICAgICBUaGlzIGNvbnZlcnNpb24g
aXMgYSBuby1vcCBpZiB0aGUgU2hhcmVkQnVmZmVyIGJlaW5nIGNvbnZlcnRlZCB3YXMgYWxyZWFk
eQorICAgICAgICBhIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisgICAgICAgIFdpdGggdGhlIG5h
dHVyZSBvZiBhIFNoYXJlZEJ1ZmZlciBiZWluZyBzaGFyZWQgYnkgcG90ZW50aWFsbHkgbXVsdGlw
bGUKKyAgICAgICAgdXNlcnMgaXQgd2FzIG5lY2Vzc2FyeSB0byBsaW1pdCB0aGUgbnVtYmVyIG9m
IGNvbnZlcnNpb25zIGJlaW5nIHBlcmZvcm1lZAorICAgICAgICBvbiBkZW1hbmQgdG8gYXZvaWQg
cmVkdW5kYW5jeS4KKyAgICAgICAgV2hlbiB0aGUgZmxhdHRlbmluZyBjb3VsZCBoYXZlIG9jY3Vy
ZWQsIHRoZSBTaGFyZWRCdWZmZXIgY3JlYXRpb24gcG9pbnRzIHdlcmUKKyAgICAgICAgdHJhY2Vk
IGJhY2sgYW5kIGlkZW50aWZpZWQgdG8gbWFrZSB0aGUgYnVmZmVyIGNvbnRpZ3VvdXMgdGhlbi4K
KyAgICAgICAgSW4gdGhlIGVuZCwgdGhlcmUncyBubyBtb3JlIFNoYXJlZEJ1ZmZlciBmbGF0dGVu
aW5nIG9wZXJhdGlvbnMgdGhhbiB0aGVyZQorICAgICAgICB3b3VsZCBoYXZlIGJlZW4gYmVmb3Jl
IHRoaXMgY2hhbmdlLgorICAgICAgICBUaGVyZSdzIGEgcG90ZW50aWFsIGluY3JlYXNlIG9mIHRl
bXBvcmFyeSBtZW1vcnkgdXNhZ2Ugd2l0aCB0aGUKKyAgICAgICAgU2NyaXB0QnVmZmVyU291cmNl
UHJvdmlkZXIgY2xhc3M7IGJ1ZyAyMzM1MTEgaXMgdHJhY2tpbmcgaXQuCisKKyAgICAgICAgV2hp
bGUgdGhlIGNoYW5nZSBpcyBleHRlbnNpdmUsIGNvZGUgY292ZXJhZ2Ugb2YgdGhlIG1vZGlmaWVk
IGFyZWFzIGlzIHRob3JvdWdoCisgICAgICAgIHdoaWNoIG1ha2VzIHVuZGV0ZWN0ZWQgcmVncmVz
c2lvbnMgdW5saWtlbHkuCisKKyAgICAgICAgSW4gYnVnIDIzMzQ0MiwgYSBTaGFyZWRCdWZmZXIg
d2lsbCBiZSBtYWRlIGNvbXBsZXRlbHkgaW1tdXRhYmxlIG9uY2UgY3JlYXRlZC4KKworICAgICAg
ICBObyBvYnNlcnZhYmxlIGNoYW5nZS4KKyAgICAgICAgQ292ZXJlZCBieSBhbGwgZXhpc3Rpbmcg
dGVzdHMuIE5ldyBBUEkgdGVzdHMgY3JlYXRkZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1U
eXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZWRlZCk6CisgICAgICAgICogTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAgICAgICAg
KiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29tcHV0ZVJlYWxCb2R5U2l6ZSk6CisgICAg
ICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01D
YWNoZTo6YWRkQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXRXaXRoUmVzcG9u
c2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hl
RW5naW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjppc29sYXRlZFJl
c3BvbnNlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Y29weVJlc3Bv
bnNlQm9keSk6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SURzS2V5aWRzKToKKyAgICAgICAgKFdlYkNvcmU6OnNh
bml0aXplS2V5aWRzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmtleUlkc01hdGNoKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhS2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6bmV4dCk6CisgICAgICAgICog
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Ojpjb25zdW1lRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpib2R5QXNG
b3JtRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OnRha2UpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25z
dW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmNvbnN1bWVEYXRhQnlD
aHVuayk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpzZXRCb2R5RGF0YSk6Cisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGln
aHQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFJhbmdlRGF0
YTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFs
aXphdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlQYXRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleURhdGEpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3Jl
YXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkUHV0
SW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNv
cmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6
OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudCk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRBbmRSZWJpbmRQcmVJ
bmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQp
OgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAg
ICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRl
clVTRC5tbToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVG9UZW1wb3JhcnlGaWxlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpoYW5kbGVSZXNwb25zZU9uU3RyZWFtaW5nQWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFj
ZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNvdXJjZTo6bG9hZCk6
CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJ
bmZvKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvU2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRh
Rm9yQXR0YWNobWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvbkluV2Vi
QXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkRGb3Jt
YXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQpOgorICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKEhUTUxDb252ZXJ0
ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvclVS
TCk6CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcv
Y29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFj
ZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RN
YXJrdXBBbmRBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3VwV2l0aEFy
Y2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFJURik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKiBlZGl0aW5n
L21hYy9FZGl0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmltYWdlSW5XZWJB
cmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQpOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmxvYWREb2N1bWVudFRlbXBsYXRl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0
YVRvQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpjYWNo
ZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6bWFp
blJlc291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6
OnNoYXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEp
OgorICAgICAgICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodCk6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjptYXliZUNyZWF0ZUFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KToK
KyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVu
dHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgICog
bG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVm
ZmVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZl
c3QpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpidWZmZXJGcm9tUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkpOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hy
b25vdXNseSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIp
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSk6CisgICAg
ICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdCk6CisgICAgICAgIChXZWJDb3JlOjpM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBsb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSFRNTFBh
cnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxp
Y2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENT
U1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6
c2hlZXRUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6
OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkRm9udDo6Y2hlY2tOb3RpZnkpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbCk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkIGNvbnN0KToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVz
b3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJj
ZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2Rl
ZERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnJlc291cmNlQnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0ZvbnQ6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRl
eHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0eWxlU2hlZXQ6
OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9y
Q29jb2EuaDoKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6RGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNo
YXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZCk6CisgICAgICAgICogcGFn
ZS9FZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6dXNlclN0eWxlU2hlZXQgY29uc3QpOgorICAgICAgICAqIHBhZ2UvUGFnZVNl
cmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6
ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVDU1NT
dHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRv
UmVzb3VyY2VzKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmg6CisgICAgICAgICog
cGFnZS9TaGFyZURhdGEuaDoKKyAgICAgICAgKiBwYWdlL1NoYXJlRGF0YVJlYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2Fy
ZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6CisgICAg
ICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0v
UGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3Rl
Ym9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6bWFrZUNvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNFbXB0eSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzQ29udGlndW91cyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YUFzQ2hhclB0ciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6ZGF0YSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YUFzQ2hhclB0ciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVk
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnV0ZjhCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6RGF0YVNlZ21lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW06CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXll
ZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpj
b252ZXJ0VElGRlRvUE5HKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRCdWZm
ZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2spOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1No
YXJlZEJ1ZmZlckNvY29hLm1tOgorICAgICAgICAoLVtXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBp
bml0V2l0aERhdGFTZWdtZW50OnBvc2l0aW9uOnNpemU6XSk6CisgICAgICAgIChXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oktl
eWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tl
eWVkRW5jb2RlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyR2xpYjo6
ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xp
Yi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJl
YWRpbmdGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnQ6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNb2RlbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVsOjpNb2RlbCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVs
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmRlY29kZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cmVhZFVJbnQzMik6CisgICAgICAgIChXZWJDb3JlOjpyZWFkVUludDE2KToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzV09GRik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V09GRlRvU2Zu
dCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpleHRyYWN0U2luZkRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VKU09OVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0
TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnJlbW92ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQ
cm92aWRlUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNv
ZGVyQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpzZXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJj
ZU1lZGlhTG9hZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBv
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJD
Ryk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJDRzo6c2V0RGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZv
cm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6
b3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29k
ZWREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om1hcmt1cFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5p
dERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbml0RGF0YTo6SW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BE
RkRvY3VtZW50SW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdl
OjpjcmVhdGVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0
aEl0YWxpY3NDb3JyZWN0aW9uSW5mbzo6Z2V0SXRhbGljQ29ycmVjdGlvbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoSW5mbzo6bWF0aEl0YWxpY3NDb3JyZWN0
aW9uSW5mbyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R2x5cGhBc3NlbWJs
eTo6Z2V0QXNzZW1ibHlQYXJ0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRTaXplVmFyaWFudHMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6Z2V0QXNzZW1ibHlQYXJ0
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TWF0aFZhcmlhbnRzOjptYXRo
R2x5cGhDb25zdHJ1Y3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1B
VEhUYWJsZTo6bWF0aENvbnN0YW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZTo6TUFUSFRhYmxlOjptYXRoR2x5cGhJbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
ZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhWYXJpYW50cyBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpU
YWJsZUJhc2U6OmlzVmFsaWRFbmQpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxl
QmFzZTo6dmFsaWRhdGVQdHIpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRhYmxlQmFz
ZTo6dmFsaWRhdGVPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRh
YmxlV2l0aENvdmVyYWdlOjpnZXRDb3ZlcmFnZUluZGV4IGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpyZW5hbWVGb250KToKKyAgICAgICAgKFdlYkNvcmU6OnJlbmFtZUFuZEFjdGl2YXRl
Rm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGls
aXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZl
cnRpY2FsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U3Vic3RpdHV0aW9u
U3ViVGFibGU6OmNvdmVyYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpM
b29rdXBUYWJsZTo6Z2V0U3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpP
cGVuVHlwZTo6TG9va3VwTGlzdDo6bG9va3VwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
ZW5UeXBlOjpGZWF0dXJlVGFibGU6OmdldEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZlYXR1cmUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0OjpmaW5kRmVhdHVyZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TGFuZ1N5c1RhYmxlOjpmZWF0dXJlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRUYWJsZTo6ZGVmYXVsdExhbmdT
eXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdExpc3Q6OnNjcmlw
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6ZGVmYXVs
dFNjcmlwdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6
ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJU
YWJsZTo6c2NyaXB0TGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NV
QlRhYmxlOjpmZWF0dXJlTGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6
R1NVQlRhYmxlOjpsb29rdXBMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpHU1VCVGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
ZW5UeXBlOjpHU1VCVGFibGU6OmZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6OkdTVUJUYWJsZTo6Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6bG9hZEhtdHhUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVu
VHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRh
YmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6c2V0Q3VzdG9tRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpjdXN0b21EYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VE
ZWNvZGVyOjpzZXRJQ0NQcm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6
d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVG
b3JET01Ub1JlYWRBbmRXcml0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJdGVt
UHJvdmlkZXJSZWdpc3RyYXRpb25MaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpmaWxlV3JhcHBlcik6CisgICAgICAgIChX
ZWJDb3JlOjpyZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRX
cml0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJkV3JpdGVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRJdGVtKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjph
c1NoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lv
bi5tbToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJlc291cmNlOnJl
Y2VpdmVkRGF0YTpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRp
cGFydEhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpk
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpk
aWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpwcm9j
ZXNzQ29udGVudCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2Fk
RmlsZUlmRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXNvdXJjZUhh
bmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSW1h
Z2VGaWxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxIRHJvcENvbnRl
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxl
KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJG
b250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckZldGNoOjpwcm9jZXNzUmVzcG9uc2UpOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUpOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29y
TGlieHNsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2NMb2FkZXJGdW5jKToKKyAgICAgICAg
KiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpvcGVuRnVuYyk6CisKIDIwMjEtMTItMDYgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBw
bGUuY29tPgogCiAgICAgICAgIFtMRkNdW0ludGVncmF0aW9uXSBVc2UgZW5kIGJpdHMgaW4gdGV4
dCBib3ggaXRlcmF0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzE3OTQ3NWY3ZGZkMDhmMTQ4ZDAyNTg3ZTQwY2Zk
NTliMDFhYThkYS4uZmYzNWU1YWNkNzE5OGEyOTNjMTg4ZDgzM2VkMGI2YmY3ZTAxNzk5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMjAgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAg
ICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFy
ZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgor
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaDoKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNw
cDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHA6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHA6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50Lmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5n
TG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHA6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvUHJlY29ubmVjdFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVFbnRyeS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvUHJlZmV0Y2hDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrRGF0YVRhc2tDdXJsLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdv
cmtEYXRhVGFza0N1cmwuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtE
YXRhVGFza1NvdXAuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3Jr
UlRDUHJvdmlkZXIuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5j
cHA6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oOgorICAgICAgICAqIFBs
YXRmb3JtL1NoYXJlZE1lbW9yeS5jcHA6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5
Lmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1t
OgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZC5jcHA6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoK
KyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcDoK
KyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcDoKKyAgICAgICAgKiBT
aGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0
dGFjaG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0
b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3Jl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UHJveHlDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgICogVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlw
Ym9hcmQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHA6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW06CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW06CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24u
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFj
Lm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcDoKKworMjAyMS0x
MS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBT
aGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxh
dGl2ZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9h
ZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpT
cGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxT
Y2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZVRhc2suaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blZpZXc6OmxpdmVSZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5W
aWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlBy
ZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVy
Q2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xv
YWRlckNsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91
cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11
dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KKworICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERh
dGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OnNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdl
OjpDYWNoZTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpDYWNoZTo6
ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRy
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmVuY29kZUFzU3Rv
cmFnZVJlY29yZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
RGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6
ZGlkUmVhZERhdGFVUkwpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5
LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5OjpTaGFyZWRCdWZmZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVy
Q29weTo6YnVmZmVyKToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNv
bnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICog
UGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVS
ZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKToKKyAg
ICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+Pjo6ZGVjb2RlUGxhdGZv
cm1EYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJ
bWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3QpOgor
ICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIgY29uc3Qp
OgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpkZWNvZGVTaGFyZWRC
dWZmZXIpOgorICAgICAgICAoSVBDOjplbmNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBD
OjpkZWNvZGVUeXBlc0FuZERhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERPTUNh
Y2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPjo6ZGVj
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAg
ICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL3dpbi9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6
dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElBdHRhY2htZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OmdldERhdGEpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAoQVBJOjpB
dHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3QpOgorICAgICAg
ICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9zdG9yZUFwcEhpZ2hsaWdodDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRh
dGFSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpk
aWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OnNhdmVJbWFnZVRvTGlicmFyeSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFj
dGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpdKToKKyAgICAgICAgKGFsbFBhc3RlYm9hcmRJdGVt
T3JpZ2luc01hdGNoT3JpZ2luKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBhY3Rpb25TaGVl
dEFzc2lzdGFudDpzaGFyZUVsZW1lbnRXaXRoSW1hZ2U6cmVjdDpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6CisgICAgICAgICogVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgIChBUEk6
OkluamVjdGVkQnVuZGxlOjpFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Up
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0RWRpdGluZ0RlbGVnYXRlOl0p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVsZWFzZVNoYXJlZEJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRh
UmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2
aWV3TW9kZWxQbGF5ZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmll
d01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRp
dG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViRHJhZ0NsaWVudDo6
ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAg
IChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnN1cHBvcnRzVmlkZW9GdWxsc2NyZWVu
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9y
dHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5IGNvbnN0KToKKwogMjAyMS0xMi0wNSAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIEFkZCB0
aGUgZW5jb2RpbmcvZGVjb2RpbmcgZm9yIEZpbHRlciBhbmQgRmlsdGVyRWZmZWN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Q2hhbmdlTG9nCmluZGV4IGQ3NzZlODJkZjEzMmNhZjY1Mjc5M2E3OWEwMDgzYWQ2NTU5ZGMyNjUu
LjM3NzdmMmE1NmJjOGU2MDRlOTQ1MWU4YmQxMmUyNWI0M2EzNTE2NzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAg
ICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFy
ZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oOgorCiAyMDIxLTExLTEyICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHNvcnQtWGNvZGUt
cHJvamVjdC1maWxlIGlkZW1wb3RlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA3
NmFhNmFhZjg0ZGViMDgyZTRjODQzMjI0OTMzODBkODMzZGU5MmQxLi41ZjYxMDIxOTZhMmM5MGNi
OWI0MTVkZDU4MDM4OTg2M2IxMDQ1ZThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTMgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRh
cjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIg
dG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW06CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1t
OgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKiBXZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisKKzIw
MjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBE
aXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9u
ZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogRE9NL0RPTVVJS2l0
RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NSFRNTEltYWdlRWxlbWVudCBkYXRhUmVwcmVz
ZW50YXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAo
V2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3Vy
Y2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0YV0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAoLVtXZWJIVE1MUmVwcmVzZW50
YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
OgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6CisgICAgICAgICogV2ViVmlldy9XZWJS
ZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZW5jb2RlV2l0aENvZGVyOl0pOgor
ICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIF9z
dHJpbmdWYWx1ZV0pOgorCiAyMDIxLTEyLTAyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVs
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gSG9vayB1cCBuYXZpZ2F0b3IuZ3B1LnJl
cXVlc3RBZGFwdGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAwMmU5NDZiYzFm
YjBiMzU2YmIxNWFiODM2MGU4NjE0NTU0NzI0N2NjLi44OWQzNDg4NjQ2MzJhODJkMmVkMDM4ZDE0
OTdjZDgyYWIzNWU3ZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjAgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2Js
ZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQK
KyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVy
IHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAgICogTWVtb3J5
U3RyZWFtLmNwcDoKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJBcmNo
aXZlLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YkZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorICAgICAgICAqIFdlYktpdERMTC5j
cHA6CisgICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAgICAgICAqIFdlYlJlc291cmNlLmg6
CisKKzIwMjEtMTItMDEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5Mzkz
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
RnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OmxvYWREYXRhKToKKworMjAyMS0xMS0yNSAg
SmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNo
IGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFy
YW50ZWUgaW1tdXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uY3BwOgorICAg
ICAgICAoTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0pOgorICAgICAgICAoTWVtb3J5U3RyZWFt
OjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogTWVtb3J5U3RyZWFtLmg6CisgICAgICAgICog
V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJBcmNoaXZlOjpkYXRhKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViRWRpdG9yQ2xp
ZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViRGF0YVNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJEYXRhU291cmNlOjpkYXRhKToKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAqIFdlYlJlc291cmNl
Lmg6CisKIDIwMjEtMTItMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBbV0syXSBNYWtlIFdlYiBMb2NrIEFQSSB3b3JrIGFjcm9zcyBtdWx0aXBsZSBXZWJQcm9j
ZXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCmluZGV4
IGVhY2NhMmMyMzNhOGE2OTM3MTU5MDgwN2RmZDM2NzViMDYxNTk0MjguLmI0NjkzZjkxYzYwN2Q4
ZDA3NDU5NDY0NmU4ZGM0MzcyZTliYzk5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoQXJyYXlC
dWZmZXImKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVy
PiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAKLSAg
ICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlh
bGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIuCisgICAgLy8gT25s
eSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkIGFu
ZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlci4KICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVVbmluaXRpYWxpemVk
KHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVVbmluaXRp
YWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDMzNTRiNTJhNTBjYmIxODlmZGZhZWI3
ZDgyNDgzYmUwYzQxYzNkNGUuLmRhMzM2ZTZmNWIxNjk0ZTM3NDc2OTBjNDNkMmI1M2YzNTE4YzA5
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0Ns
aXBib2FyZEltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogCi12b2lkIENsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIu
aAppbmRleCAyYjYyNjI4NDE5YjA5Y2JiNjk1NTIxNWIwZDVkN2Q3M2MwYjM3NDRkLi42ZTIyMDQ4
Y2Y1ZmVhOWFhNjJkYWRmNDViMWYzNWM0Y2UwZDdkNmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVh
ZGVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9j
dW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBzdHJ1Y3QgQ2xpcGJvYXJkSW1hZ2VSZWFkZXIgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7
CiAgICAgQ2xpcGJvYXJkSW1hZ2VSZWFkZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKQpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVhZEZp
bGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAog
ICAgIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKLSAg
ICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7
CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5k
aW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IGQwNzQ2ZGEyZGEyMDllMDIzMjViNWZhMjE0ZGJlZTY0
YmY5YzkwNzguLmVmZjEwYjViNjVmZDgxYWQ5YmEzMmY4MGIzZjJjZjJmOGU5OGYxYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0yMTYs
OCArMjE2LDggQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjppbnZva2VD
b21wbGV0aW9uSGFuZGxlcigpCiAgICAgICAgIGF1dG8mIGRhdGEgPSBpdGVtVHlwZUxvYWRlci0+
ZGF0YSgpOwogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRhdGEp
ICYmICEhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKSkKICAgICAgICAgICAgIGN1c3RvbURhdGEud3Jp
dGVTdHJpbmcodHlwZSwgc3RkOjpnZXQ8U3RyaW5nPihkYXRhKSk7Ci0gICAgICAgIGVsc2UgaWYg
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQotICAgICAg
ICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZl
cj4+KGRhdGEpLmNvcHlSZWYoKSk7CisgICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihkYXRhKSkKKyAgICAgICAgICAgIGN1
c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4oZGF0YSkuY29weVJlZigpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjY1
LDkgKzI2NSw5IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJv
YXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiB7CiAgICAgaWYgKG1fdHlwZSA9
PSAidGV4dC9odG1sIl9zKSB7CiAgICAgICAgIFN0cmluZyBtYXJrdXBUb1Nhbml0aXplOwotICAg
ICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRh
KSkgewotICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZl
cj4+KG1fZGF0YSk7Ci0gICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9t
VVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsK
KyAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4obV9kYXRhKTsKKyAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6
OmZyb21VVEY4KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1f
ZGF0YSkpCiAgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPiht
X2RhdGEpOwogCkBAIC0yNzgsOSArMjc4LDkgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKICAg
ICB9CiAKICAgICBpZiAobV90eXBlID09ICJpbWFnZS9wbmciX3MpIHsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZTsKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpCi0gICAgICAgICAgICBidWZm
ZXJUb1Nhbml0aXplID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkucHRyKCk7
CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXpl
OworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+KG1fZGF0YSkpCisgICAgICAgICAgICBidWZmZXJUb1Nhbml0aXplID0gc3RkOjpn
ZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihtX2RhdGEpLnB0cigpOwogICAgICAgICBl
bHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAg
ICAgIGJ1ZmZlclRvU2FuaXRpemUgPSB1dGY4QnVmZmVyKHN0ZDo6Z2V0PFN0cmluZz4obV9kYXRh
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaAppbmRl
eCAyY2MyYzhlMWE1NGUxOGQ3MzQ5NWM1MzBjZDc3ZDU0Zjk5YTUyOWE3Li4zN2M4MjVlMjM1YThh
OGI3ZTQ0ZTQwZmIwYzJkNzcyNDQwN2E3NTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRl
bUJpbmRpbmdzRGF0YVNvdXJjZS5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIERPTVByb21pc2U7
CiBjbGFzcyBGaWxlUmVhZGVyTG9hZGVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBj
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZSA6IHB1YmxpYyBDbGlwYm9hcmRJdGVtRGF0YVNvdXJjZSB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGlu
dm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7CiAKLSAgICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0
ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBCdWZmZXJP
clN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj47CiAgICAgY2xhc3MgQ2xpcGJvYXJkSXRlbVR5cGVMb2FkZXIgOiBwdWJsaWMgRmlsZVJlYWRl
ckxvYWRlckNsaWVudCwgcHVibGljIFJlZkNvdW50ZWQ8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBSZWY8Q2xpcGJvYXJkSXRlbVR5cGVMb2Fk
ZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklP
Uy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhhZjMwN2EzYTQ0MTAwLi4yNzRl
MDM4ZDQxODcwMTYxZTRlZWI4MGMxMmFiYmE4NzFmOWQ0YTY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0Ns
aXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0zNCwxMCArMzQsMTAgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9p
ZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYg
KG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0
TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjph
bGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIG5zRGF0YSA9IFVJ
SW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCiAgICAgICAgICAgICBtX3Jlc3Vs
dCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50LmdldCgpLCBWZWN0b3IgeyBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4obnNEYXRhLmJ5dGVzKSwgbnNEYXRhLmxlbmd0aCB9LCBtX21pbWVUeXBl
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5kZXgg
YjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZi4uMzgyMWIwMzcxODAyODIz
ZDY5YTgzMGEzMTBkYTM0NzA4ZDYzMzA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFn
ZVJlYWRlck1hYy5tbQpAQCAtMzMsMTAgKzMzLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2xpcGJvYXJk
SW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBl
ID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFn
ZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAg
ICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAg
ICBpZiAoYXV0byBjZ0ltYWdlID0gW2ltYWdlIENHSW1hZ2VGb3JQcm9wb3NlZFJlY3Q6bmlsIGNv
bnRleHQ6bmlsIGhpbnRzOm5pbF0pIHsKICAgICAgICAgICAgIGF1dG8gcmVwcmVzZW50YXRpb24g
PSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmNnSW1h
Z2VdKTsKICAgICAgICAgICAgIE5TRGF0YSogbnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJlcHJl
c2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7
IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCBlNmNj
MWFhZTc4M2E1MjA5NGY2NTQ5OWJiOTBkZDdmMDA3MWQ0MjRjLi5mMDVjMjMzMDdiYzVhMGU1ODJk
ZGNkODYwZDViYjFhMWIzMDkzMjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmNwcApAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgRE9NQ2FjaGU6OmFkZEFsbChWZWN0
b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByCiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBzaXplX3QgcmVjb3JkUG9zaXRpb24gPSB0YXNrSGFu
ZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVjdGlvblJlY29yZChyZXF1ZXN0LmdldCgpLCByZXNwb25z
ZSwgbnVsbHB0cikpOwogCi0gICAgICAgICAgICByZXNwb25zZS5jb25zdW1lQm9keVJlY2VpdmVk
QnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5kbGVyKSwgcmVjb3JkUG9zaXRp
b24sIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCByZXNwb25zZSA9IFJlZiB7IHJlc3Bv
bnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHJlc3BvbnNlLmNv
bnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1vdmUodGFza0hhbmRs
ZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcmVzcG9u
c2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICAgICAgaWYgKHRhc2tIYW5kbGVyLT5pc0RvbmUoKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwogCkBAIC0yOTksOSArMjk5LDkgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3Rv
cjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAg
ICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1
bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5r
LT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVu
ZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNwb25zZUJvZHkocmVjb3JkUG9z
aXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAgdGFz
a0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEu
dGFrZSgpLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9LCBj
YWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuZmV0Y2gpOwogICAgIH0KQEAgLTMxOCw3
ICszMTgsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9NQ2FjaGVFbmdpbmU6
OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlQm9keS5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVs
bCgpOworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGJhdGNo
UHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAg
IHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1
bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVz
dWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVz
dWx0KSk7CkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZv
JiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21pc2UKIAogICAg
IGlmIChyZXNwb25zZS0+aXNCb2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAgICAgICAgYXV0byYg
cmVzcG9uc2VSZWYgPSByZXNwb25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9uc2VSZWYuY29uc3Vt
ZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0
ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0
aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcmVz
cG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJl
c3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGluZ0FjdGl2aXR5ID0g
bWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1bHQpIG11dGFibGUg
ewogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAg
ICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5p
c29sYXRlZENvcHkoKSk7CkBAIC0zODMsOSArMzgzLDkgQEAgdm9pZCBET01DYWNoZTo6cHV0KFJl
cXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVByb21p
c2UKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0
LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRh
KCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5k
YXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1
ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShk
YXRhKSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1v
dmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiB7IGRhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgICAg
ICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIzODNhMDc4ODA0Zjg5
YjExYjQwZDg5NzBiNDMwNi4uYzBmODAzMmIwNDUyYzM3ZWU0Y2FmYmNhZmQ3OWYwOWQyMTQ2MzMy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2lu
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5j
cHAKQEAgLTEzMiw3ICsxMzIsNyBAQCBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHko
Y29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHks
IFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAg
ICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgpOwogICAgIH0sIFtdKGNvbnN0IFJl
ZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7Ci0gICAgICAgIHJldHVy
biBidWZmZXItPmNvcHkoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIFNo
YXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAgICAg
fSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICBy
ZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKaW5kZXggMjg1MGRiYTFl
M2JmYTExZjQ4OWI0NDQwMzUxM2Q1MWFlMWJlYWQzYS4uOWQxYmM2NzRmYzgyNmNiNmQxNmQwMjUx
MGNmODQwMTBhZGNiZDc3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9DRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNLmNwcApAQCAtMTM1LDE3ICsxMzUsMTcgQEAgYm9vbCBDRE06OnN1cHBvcnRzSW5p
dERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSkgY29uc3QKICAgICByZXR1
cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRh
aW5zKGluaXREYXRhVHlwZSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRp
emVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5p
dGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgcmV0dXJuIEluaXREYXRhUmVnaXN0
cnk6OnNoYXJlZCgpLnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CiB9
CiAKLWJvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK2Jvb2wgQ0RNOjpzdXBwb3J0c0lu
aXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZh
dGUtPnN1cHBvcnRzSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXIm
IHJlc3BvbnNlKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVS
ZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKIHsKICAgICBp
ZiAoIW1fcHJpdmF0ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAppbmRleCBkOGE0YjNhZjEyZjFhNzkyM2Q4ODcw
NWQ1Yjk1ODFkMzZmMTAyNzBjLi5kN2IxZDUzZDA0OTFmNzI3NzliNTk0YjJkODNjMDliODNiY2Yy
MDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NE
TS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKQEAg
LTUyLDcgKzUyLDcgQEAgY2xhc3MgQ0RNSW5zdGFuY2U7CiBjbGFzcyBDRE1Qcml2YXRlOwogY2xh
c3MgRG9jdW1lbnQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNIDogcHVi
bGljIFJlZkNvdW50ZWQ8Q0RNPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETT4sIHByaXZhdGUg
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgpAQCAtNzMsMTAgKzczLDEwIEBA
IHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdDsKICAgICBib29sIHN1
cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsK
KyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Np
b25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oCmluZGV4IDIxZTUyZjRiNzE0ZmI5MWY2
N2NmYzM5NjEzOWMxNjUyNWJmYjdiOWIuLjQxMGVkMmZiNjQyNzU2MmNlOWJkOGVkYTRkOTFhODZi
YTk4Y2FhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE1DbGllbnQuaApAQCAtMzYsMTQgKzM2LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENETUluc3RhbmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRy
PENETUNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkNETUNsaWVudCgpID0gZGVmYXVs
dDsKIAogICAgIHZpcnR1YWwgdm9pZCBjZG1DbGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lm
TmVjZXNzYXJ5KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZElu
aXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+
JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXph
dGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5j
cHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQxYTY3MDc0NDBmMmQ1Ni4uNmY4ODhl
MTc4NThkZGE2ZDk0NzFlYzFmNmVmNWQwNjZkZjBlNDk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3Bw
CkBAIC01NCwxMyArNTQsMTMgQEAgbmFtZXNwYWNlIHsKICAgICBjb25zdCB1aW50MzJfdCBrS2V5
SWRzTWF4S2V5SWRTaXplSW5CeXRlcyA9IDUxMjsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyAxLiBGb3JtYXQKICAgICAvLyBodHRwczov
L3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9r
ZXlpZHMuaHRtbCNmb3JtYXQKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZm
ZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBh
dXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVl
KQpAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJl
ZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIGlmICgha2lk
c0FycmF5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgVmVjdG9yPFJlZjxT
aGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4ga2V5SURzOwogICAgIGZvciAoYXV0byYgdmFsdWUgOiAqa2lkc0FycmF5KSB7CiAgICAg
ICAgIGF1dG8ga2V5SUQgPSB2YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAgaWYgKCFrZXlJRCkK
QEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRC
dWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWQKICAgICByZXR1cm4ga2V5
SURzOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICAvLyAxLiBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5j
cnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQK
QEAgLTEwNCwxNCArMTA0LDE0IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBhdXRvIG9iamVjdCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBraWRzQXJyYXkgPSBKU09OOjpBcnJheTo6
Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRvJiBidWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1ZSgpKQot
ICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgICAgIGtpZHNBcnJheS0+cHVzaFN0
cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RG
TW92ZShraWRzQXJyYXkpKTsKIAogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNP
TlN0cmluZygpLnV0ZjgoKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoanNvbkRh
dGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4g
SW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1By
b3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRy
YWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0CiAgICAg
Ly8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkv
aW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAgLTE1MSw5ICsxNTEsOSBAQCBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNp
ZmljSGVhZGVyQm94Pj4+IEluaQogICAgIHJldHVybiBwc3NoQm94ZXM7CiB9CiAKLXN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFj
dEtleUlEc0NlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRy
YWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0g
ICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwogCiAgICAgYXV0byBwc3NoQm94ZXMgPSBleHRy
YWN0UHNzaEJveGVzRnJvbUNlbmMoYnVmZmVyKTsKICAgICBpZiAoIXBzc2hCb3hlcykKQEAgLTE4
NSw3ICsxODUsNyBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IElu
aXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNvbgogICAgIHJldHVybiBrZXlJRHM7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2Vu
Yyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNTSCBC
b3ggRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9m
b3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAgLTE5NSw3
ICsxOTUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6
ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5
KCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHNhbml0aXplV2ViTShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgLy8gQ2hlY2sgaWYgdGhlIGJ1ZmZlciBpcyBhIHZhbGlkIFdlYk0gaW5pdERhdGEuCiAg
ICAgLy8gVGhlIFdlYk0gaW5pdERhdGEgaXMgdGhlIENvbnRlbnRFbmNLZXlJRCwgc28gc2hvdWxk
IGJlIGxlc3MgdGhhbiBrV2ViTU1heENvbnRlbnRFbmNLZXlJRFNpemUuCkBAIC0yMDUsMTAgKzIw
NSwxMCBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGF0
aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURz
V2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzV2ViTShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+PiBrZXlJRHM7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkQnVm
ZmVyID0gc2FuaXRpemVXZWJNKGJ1ZmZlcik7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4ga2V5SURzOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBz
YW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdlYk0oYnVmZmVyKTsKICAgICBpZiAoIXNhbml0aXpl
ZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMjMzLDcgKzIzMyw3
IEBAIEluaXREYXRhUmVnaXN0cnk6OkluaXREYXRhUmVnaXN0cnkoKQogCiBJbml0RGF0YVJlZ2lz
dHJ5Ojp+SW5pdERhdGFSZWdpc3RyeSgpID0gZGVmYXVsdDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgYXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXREYXRhVHlwZSk7CiAg
ICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUuc2FuaXRpemVJbml0
RGF0YSkKQEAgLTI0MSw3ICsyNDEsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJl
Z2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYQogICAgIHJl
dHVybiBpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKGJ1ZmZlcik7CiB9CiAKLXN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFj
dEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBhdXRvIGl0ZXIgPSBtX3R5cGVzLmZpbmQoaW5pdERhdGFUeXBlKTsKICAgICBpZiAoaXRlciA9
PSBtX3R5cGVzLmVuZCgpIHx8ICFpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuaAppbmRleCBjZDEzODdhNmJkMDM4ZmYzNGUyY2ZiNzVmNDQzZGU3ZDk0MDMyMWIwLi43
N2Q2MDRiMDhiYjdmN2UzOGJjY2IzNTQ1YjM0YzhiMTM0MzU1ZWYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnku
aApAQCAtMzgsMTkgKzM4LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElTT1By
b3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEluaXREYXRhUmVnaXN0cnkgewog
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbml0RGF0YVJlZ2lzdHJ5JiBzaGFy
ZWQoKTsKICAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8SW5pdERhdGFSZWdpc3RyeT47
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5
SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0cnVjdCBJbml0
RGF0YVR5cGVDYWxsYmFja3MgewotICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJh
Y2sgPSBGdW5jdGlvbjxSZWZQdHI8U2hhcmVkQnVmZmVyPihjb25zdCBTaGFyZWRCdWZmZXImKT47
Ci0gICAgICAgIHVzaW5nIEV4dHJhY3RLZXlJRHNDYWxsYmFjayA9IEZ1bmN0aW9uPHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4oY29uc3QgU2hhcmVkQnVmZmVyJik+Owor
ICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsK
KyAgICAgICAgdXNpbmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0gRnVuY3Rpb248c3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4oY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpPjsKIAogICAgICAgICBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgc2Fu
aXRpemVJbml0RGF0YTsKICAgICAgICAgRXh0cmFjdEtleUlEc0NhbGxiYWNrIGV4dHJhY3RLZXlJ
RHM7CkBAIC02MSw5ICs2MSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmlu
ZyYga2V5aWRzTmFtZSgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiB3ZWJtTmFtZSgp
OwogCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Q
cm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hlc0Zyb21D
ZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUNlbmMoY29uc3Qg
U2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBz
c2hCb3hlc0Zyb21DZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0
cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRp
YyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVDZW5jKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogcHJpdmF0ZToKICAgICBJbml0RGF0YVJlZ2lzdHJ5KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggOGJmYjFjZTcwMWEyZjVhNjliNWI1MTk5MWFhODYzMmVi
Yjg5MjVmOS4uMTQ3NzZjMjAxNTFiZmVmZTM4MDc5YTMzNzMwYzg4NjYyNjhiYTQ2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Np
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpn
ZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZm
CiAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3
b3JraW5nLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaW5pdERhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLmxlbmd0aCgpKSwg
aW5pdERhdGFUeXBlLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdU
Rk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewogICAgICAgICAvLyAxMC4xLiBJZiB0aGUg
aW5pdCBkYXRhIGlzIG5vdCB2YWxpZCBmb3IgaW5pdERhdGFUeXBlLCByZWplY3QgcHJvbWlzZSB3
aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIC8vIDEwLjIuIExldCBzYW5p
dGl6ZWQgaW5pdCBkYXRhIGJlIGEgdmFsaWRhdGVkIGFuZCBzYW5pdGl6ZWQgdmVyc2lvbiBvZiBp
bml0IGRhdGEuCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZEluaXREYXRh
ID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXRE
YXRhKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZElu
aXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUs
IGluaXREYXRhKTsKIAogICAgICAgICAvLyAxMC4zLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFp
bGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAg
ICAgIGlmICghc2FuaXRpemVkSW5pdERhdGEpIHsKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIE1l
ZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgY29uc3QgQnVmZgogICAgICAgICAgICAgbV9sYXRlc3REZWNyeXB0VGltZSA9IDA7CiAg
ICAgICAgIH0KIAotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UobV9z
ZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBzYW5pdGl6ZWRJbml0RGF0YS5yZWxlYXNlTm9uTnVs
bCgpLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlm
aWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RN
SW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAg
ICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlcXVlc3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUsIGluaXRE
YXRhVHlwZSwgc2FuaXRpemVkSW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtU
aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRl
bnRpZmllcildIChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5j
ZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTQyMiw3ICs0MjIs
NyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVz
cG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAgIC8vIDYuIFJ1biB0aGUgZm9sbG93aW5n
IHN0ZXBzIGluIHBhcmFsbGVsOgogICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhp
cywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIHJlc3BvbnNlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzcG9uc2UuZGF0YSgpLCBy
ZXNwb25zZS5sZW5ndGgoKSksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVy
ID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDYuMS4gTGV0
IHNhbml0aXplZCByZXNwb25zZSBiZSBhIHZhbGlkYXRlZCBhbmQvb3Igc2FuaXRpemVkIHZlcnNp
b24gb2YgcmVzcG9uc2UgY29weS4KLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emVkUmVzcG9uc2UgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNl
KTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3Bv
bnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7CiAKICAg
ICAgICAgLy8gNi4yLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCBvciBpZiBzYW5pdGl6
ZWQgcmVzcG9uc2UgaXMgZW1wdHksIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVk
IFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFzYW5pdGl6ZWRSZXNwb25zZSB8fCBzYW5pdGl6ZWRS
ZXNwb25zZS0+aXNFbXB0eSgpKSB7CkBAIC02MDEsNyArNjAxLDcgQEAgdm9pZCBNZWRpYUtleVNl
c3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIC8v
IDQuMy4gTGV0IG1lc3NhZ2UgdHlwZSBiZSBudWxsLgogCiAgICAgICAgIC8vIDQuNC4gVXNlIHRo
ZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3RhbmNl
U2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0
aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBX
VEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Im
JiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAg
IG1faW5zdGFuY2VTZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwgbV9zZXNz
aW9uVHlwZSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRl
bnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0
YXR1c1ZlY3RvciYmIGtleXMsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRl
ZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIApAQCAtNjQ5LDcgKzY0OSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpyZW1v
dmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIC8vIDUuIFJldHVybiBwcm9t
aXNlLgogfQogCi12b2lkIE1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlN
ZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBtZXNzYWdlKQordm9p
ZCBNZWRpYUtleVNlc3Npb246OmVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUgbWVz
c2FnZVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG1lc3NhZ2UpCiB7CiAgICAg
Ly8gNi40LjEgUXVldWUgYSAibWVzc2FnZSIgRXZlbnQKICAgICAvLyBodHRwczovL3czYy5naXRo
dWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNxdWV1ZS1tZXNzYWdlCkBAIC03MTYsNyArNzE2LDcgQEAg
dm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKENETUluc3RhbmNlU2Vzc2lv
bjo6S2V5U3RhdHVzVmVjdG9yJiYgaW4KICAgICAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFLZXlT
ZXNzaW9uOjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBNZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKENE
TU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBt
ZXNzYWdlKQogewogICAgIGVucXVldWVNZXNzYWdlKG1lc3NhZ2VUeXBlLCBtZXNzYWdlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5oCmluZGV4IDNkOTZmODgwMmU3NDc4NDFjNGVmZGE4MWRjYjk0MWVhNmU0YTc1
ZTQuLjM2NWFjZTVjMDk1ZTdkYzBjNTcxZTc2Y2NmMmMwN2FhZmM2MmJhYTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Np
b24uaApAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBDRE07CiBjbGFzcyBEZWZlcnJlZFByb21pc2U7
CiBjbGFzcyBNZWRpYUtleVN0YXR1c01hcDsKIGNsYXNzIE1lZGlhS2V5czsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VQcm94eTsKIApAQCAtODcsMjAgKzg3LDIwIEBA
IHB1YmxpYzoKICAgICB1c2luZyBDbG9zZWRQcm9taXNlID0gRE9NUHJvbWlzZVByb3h5PElETFVu
ZGVmaW5lZD47CiAgICAgQ2xvc2VkUHJvbWlzZSYgY2xvc2VkKCkgeyByZXR1cm4gbV9jbG9zZWRQ
cm9taXNlLmdldCgpOyB9CiAKLSAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRC
dWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+JiBzdGF0dXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dHVzZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiYgc3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBtX3N0
YXR1c2VzOyB9CiAKICAgICB1bnNpZ25lZCBpbnRlcm5hbEluc3RhbmNlU2Vzc2lvbk9iamVjdFJl
ZkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnN0YW5jZVNlc3Npb24tPnJlZkNvdW50KCk7IH0K
IAogcHJpdmF0ZToKICAgICBNZWRpYUtleVNlc3Npb24oRG9jdW1lbnQmLCBXZWFrUHRyPE1lZGlh
S2V5cz4mJiwgTWVkaWFLZXlTZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZp
ZXIsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0YW5jZVNlc3Npb24+JiYpOwotICAgIHZvaWQgZW5x
dWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7Cisg
ICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCB1cGRhdGVFeHBpcmF0aW9uKGRvdWJsZSk7CiAg
ICAgdm9pZCBzZXNzaW9uQ2xvc2VkKCk7CiAgICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKSBjb25zdDsKIAogICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAogICAgIHZv
aWQgdXBkYXRlS2V5U3RhdHVzZXMoQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNW
ZWN0b3ImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRNZXNzYWdl
KENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBm
aW5hbDsKICAgICB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAg
ICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgZmluYWw7CiAKQEAgLTE0MCwxMCArMTQw
LDEwIEBAIHByaXZhdGU6CiAgICAgTWVkaWFLZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25UeXBlOwog
ICAgIFJlZjxDRE0+IG1faW1wbGVtZW50YXRpb247CiAgICAgUmVmPENETUluc3RhbmNlU2Vzc2lv
bj4gbV9pbnN0YW5jZVNlc3Npb247Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBtX3Jl
Y29yZE9mS2V5VXNhZ2U7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4g
bV9yZWNvcmRPZktleVVzYWdlOwogICAgIGRvdWJsZSBtX2ZpcnN0RGVjcnlwdFRpbWUgeyAwIH07
CiAgICAgZG91YmxlIG1fbGF0ZXN0RGVjcnlwdFRpbWUgeyAwIH07Ci0gICAgVmVjdG9yPHN0ZDo6
cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiBtX3N0YXR1c2VzOworICAg
IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0
YXR1cz4+IG1fc3RhdHVzZXM7CiAKICAgICB1c2luZyBEaXNwbGF5Q2hhbmdlZE9ic2VydmVyID0g
T2JzZXJ2ZXI8dm9pZChQbGF0Zm9ybURpc3BsYXlJRCk+OwogICAgIERpc3BsYXlDaGFuZ2VkT2Jz
ZXJ2ZXIgbV9kaXNwbGF5Q2hhbmdlZE9ic2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRl
eCA3M2Y3NGU0ZjcwZmM5MmMyMmJmODU5YzAyMjhhMzRlYWVjNTc5N2EzLi4zOThlOGFiMWI2NTZi
NDQ1OTI3YmViNmJjNjkzZGQzOTlhNjg3YWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAt
NTYsMTIgKzU2LDEyIEBAIHVuc2lnbmVkIGxvbmcgTWVkaWFLZXlTdGF0dXNNYXA6OnNpemUoKQog
ICAgIHJldHVybiBtX3Nlc3Npb24tPnN0YXR1c2VzKCkuc2l6ZSgpOwogfQogCi1zdGF0aWMgYm9v
bCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYg
YikKK3N0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKIHsKICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgp
OwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAhPSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGxl
bmd0aCk7CisgICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgYi5kYXRhKCksIGxlbmd0aCk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6Omhhcyhj
b25zdCBCdWZmZXJTb3VyY2UmIGtleUlkKQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6b3B0aW9u
YWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVz
Pj4gTWVkaWFLZXlTCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBw
YWlyID0gc3RhdHVzZXNbbV9pbmRleCsrXTsKLSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVy
OjpjcmVhdGUocGFpci5maXJzdC0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOworICAgIGF1
dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CiAgICAgcmV0dXJuIEtleVZhbHVlUGFp
cjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4geyBSZWZQdHI8QXJy
YXlCdWZmZXI+KFdURk1vdmUoYnVmZmVyKSksIHBhaXIuc2Vjb25kIH07CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNN
YXAuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0
dXNNYXAuaAppbmRleCBjMjExMTEzYTJjNmRhYzc5NzkyNGE5OWQyZDJkZjk3YzJlNjVmODUwLi42
MGQ2MmFhZmY4MDc0ZGFkYTZlMzFhM2YyYjM3MGE2ZDZkMDFmNjE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01h
cC5oCkBAIC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlh
S2V5U2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIE1lZGlhS2V5U3RhdHVzTWFwIDogcHVibGljIFJlZkNvdW50ZWQ8TWVk
aWFLZXlTdGF0dXNNYXA+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAppbmRleCA4M2IyNGFjZWFhNWIxMjk0YmI0
ZWE0MzlmYjJkNWM0ZjZjY2Q0NzUzLi4zNjdmMzFkMTg2YjUxNjM5YTljNzQyMTNmMGNmOGU2ZjJm
OGQyNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleXMuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgYm9vbCBNZWRpYUtleXM6Omhhc09w
ZW5TZXNzaW9ucygpIGNvbnN0CiAgICAgICAgIH0pOwogfQogCi12b2lkIE1lZGlhS2V5czo6dW5y
ZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIGluaXREYXRh
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKK3ZvaWQgTWVkaWFLZXlzOjp1bnJl
cXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFU
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBmb3Ig
KGF1dG8mIGNkbUNsaWVudCA6IG1fY2RtQ2xpZW50cykKICAgICAgICAgY2RtQ2xpZW50LmNkbUNs
aWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoaW5pdERhdGFUeXBlLCBp
bml0RGF0YS5jb3B5UmVmKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5kZXggN2I1OWEzYmM2ZDIyNTZmYzY1NmYwOGNiZjI2ODkx
ODUxMDk4M2EyMi4uOTFhMWEwNzExNDMzYmUyNDdkZDJhODVjNWY0YWQwOTM4YTA5YTdhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5o
CkBAIC04Niw3ICs4Niw3IEBAIHByb3RlY3RlZDoKICAgICBNZWRpYUtleXMoRG9jdW1lbnQmLCBi
b29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2Vk
LCBjb25zdCBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mLCBSZWY8Q0RNPiYmLCBSZWY8Q0RN
SW5zdGFuY2U+JiYpOwogCiAgICAgLy8gQ0RNSW5zdGFuY2VDbGllbnQKLSAgICB2b2lkIHVucmVx
dWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0
YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9n
Z2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCAyZmRjNGMwMDIxZjZlMWZkZWM0NWY4ZmFmNjA5MDZj
MmJmODJlM2IxLi4wMDM5MzAyZjdkYzE2ZmZlY2ZjNDY1YzdkOGRhMjUyZjk4ZGFmNTYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUsNyArMjM1
LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwg
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lRm9y
bURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UpCiB7CiAgICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5KCkuYXNTaGFy
ZWRCdWZmZXIoKSkgewotICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShXVEZNb3Zl
KHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgc2hh
cmVkQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShX
VEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAgICBtX2Rh
dGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgZm9y
bSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBibG9icy4K
QEAgLTI3Miw3ICsyNzIsNyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9keUFzRm9y
bURhdGEoKSBjb25zdAogICAgIGlmIChpc0Zvcm1EYXRhKCkpCiAgICAgICAgIHJldHVybiAmY29u
c3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAoYXV0byogZGF0YSA9
IG1fY29uc3VtZXIuZGF0YSgpKQotICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0ZShkYXRh
LT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRl
KGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg0LDcgKzI4NCw3
IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIGF1dG8g
YnVmZmVyID0gbV9jb25zdW1lci50YWtlRGF0YSgpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VO
b25OdWxsKCk7CisgICAgICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAg
fQogCiAgICAgaWYgKGlzQmxvYigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGZjYzIxNmEwMWNkZjY5ODY1MDg1ODc2
NzVmMDlkOGI3OWZmNjJiM2IuLjIyMTNkNjIzMDNlZmUyYTFmNzI5ODI2MGY1ODg2MGI3NzZmYjI2
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBl
QW5kRGF0YShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIAog
dm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4oKQogewotICAgIG1fYnVmZmVyID0gbnVsbHB0
cjsKKyAgICBtX2J1ZmZlci5yZXNldCgpOwogICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAg
ICBpZiAobV9zaW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjY2
LDE2ICsyNjYsMTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KIHsKICAgICBpZiAoc3RyZWFt
KSB7CiAgICAgICAgIEFTU0VSVCghbV9zaW5rKTsKLSAgICAgICAgbV9zaW5rID0gUmVhZGFibGVT
dHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBjb250ZW50
VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fc2luayA9IFJlYWRhYmxl
U3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCB0eXBlID0gbV90eXBlLCBjb250ZW50
VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhh
c0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkp
Ci0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXpl
KCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFu
ZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEtPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgp
LCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1
dG8gYnVmZmVyID0gZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICAg
ICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50
VHlwZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgfSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTMwNiw3ICszMDgsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZl
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsK
ICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3Jt
RGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVm
ZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAg
ICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50
VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRy
LCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTMyNCwxNiArMzI2
LDIwIEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBzaXplKQogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAo
IW1fYnVmZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVuZChk
YXRhLCBzaXplKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSgpCit2b2lkIEZldGNo
Qm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEp
CiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9idWZmZXIpOworICAgIG1fYnVmZmVyLnJlc2V0KCk7
CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoZGF0YSkpOworfQorCitSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKK3sKKyAgICBp
ZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9idWZm
ZXIudGFrZSgpOwogfQogCiBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKQEAgLTM0MSw5ICszNDcsNyBAQCBSZWZQdHI8SlNDOjpB
cnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKICAgICBp
ZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShudWxs
cHRyLCAwKTsKIAotICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX2J1ZmZlci0+dHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGFycmF5QnVm
ZmVyOworICAgIHJldHVybiBtX2J1ZmZlci50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7
CiB9CiAKIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAtMzUxLDkgKzM1NSw3IEBAIFJlZjxCbG9iPiBGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4
dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRl
bnRUeXBlKSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51
bGxwdHIpOwotICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci0+ZXh0cmFjdERhdGEoKTsKLSAgICByZXR1
cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIFdURk1vdmUoZGF0YSksIG1fY29udGVudFR5cGUpOwor
ICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgbV9idWZmZXIudGFrZSgpLT5leHRyYWN0
RGF0YSgpLCBtX2NvbnRlbnRUeXBlKTsKIH0KIAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0
YWtlQXNUZXh0KCkKQEAgLTM2Miw4ICszNjQsOCBAQCBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6
OnRha2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOCht
X2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxw
dHI7CisgICAgYXV0byBidWZmZXIgPSBtX2J1ZmZlci50YWtlKCktPm1ha2VDb250aWd1b3VzKCk7
CisgICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZl
ci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4
MywxMCArMzg1LDggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlz
ZSgpCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJj
ZT4mJiBzb3VyY2UpCiB7CiAgICAgbV9zb3VyY2UgPSBXVEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYg
KG1fYnVmZmVyKSB7Ci0gICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVh
dGVBcnJheUJ1ZmZlcigpKTsKLSAgICAgICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIH0KKyAg
ICBpZiAobV9idWZmZXIpCisgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKG1fYnVmZmVyLnRha2Uo
KS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6
OmxvYWRpbmdGYWlsZWQoY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKaW5kZXggMmIwNTZmMTI2
NDNiYTk2N2ZlNDFhMDE1MTNhODliNzM2MjY0MmQ0Yy4uODcxZDJjMDg2MzMxYTk4Mjk0YTE2NmE0
YjQyZTMxODRlMDM3NzcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtNTAsMTAgKzUwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lk
IGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0Rh
dGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVy
KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERh
dGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKSB7IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsg
fQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZvaWQgc2V0RGF0YShSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgp
OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogICAgIFJl
ZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwogICAgIFN0cmluZyB0
YWtlQXNUZXh0KCk7CiAKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKIAogICAgIFR5cGUgbV90
eXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiAgICAgUmVmUHRy
PERlZmVycmVkUHJvbWlzZT4gbV9jb25zdW1lUHJvbWlzZTsKICAgICBSZWZQdHI8UmVhZGFibGVT
dHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IG1fc2luazsKICAgICBSZWZQdHI8RmV0Y2hCb2R5U291
cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ci5jcHAKaW5kZXggZmM1NWNjN2Q4M2Q4YmMxMWYwODU0ZGMzY2ZkODUwOTdhMzFmMTBmNi4uMDNm
ODliNjFjYTVmN2M3MTc2YjlkODhjZDEzNjYwZTg2YjdhMjU0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lk
IEZldGNoTG9hZGVyOjpzdG9wKCkKICAgICAgICAgbV9sb2FkZXItPmNhbmNlbCgpOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaExvYWRlcjo6c3RhcnRTdHJlYW1pbmcoKQorUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoTG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiB7
CiAgICAgQVNTRVJUKG1fY29uc3VtZXIpOwogICAgIGF1dG8gZmlyc3RDaHVuayA9IG1fY29uc3Vt
ZXItPnRha2VEYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVy
LmgKaW5kZXggMmY5MGYwZWMzZmY5MDVhMjYyMzFjODRjNzJhN2ExODZjZDRiZmU4My4uNDYxMmQw
ZTBlM2E3ZWZlMzA2MDM5NmIwZDc1YTJmYTNiYzRlZGRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApAQCAtMzksMTQgKzM5LDE0IEBAIGNsYXNzIEZldGNo
Qm9keUNvbnN1bWVyOwogY2xhc3MgRmV0Y2hMb2FkZXJDbGllbnQ7CiBjbGFzcyBGZXRjaFJlcXVl
c3Q7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRmV0Y2hMb2FkZXIgZmluYWwg
OiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgRmV0Y2hMb2Fk
ZXIoRmV0Y2hMb2FkZXJDbGllbnQmLCBGZXRjaEJvZHlDb25zdW1lciopOwogICAgIFdFQkNPUkVf
RVhQT1JUIH5GZXRjaExvYWRlcigpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc3RhcnRT
dHJlYW1pbmcoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJl
YW1pbmcoKTsKIAogICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0
IEZldGNoUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIGNvbnN0IEJsb2ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDRkZjg0MjZjNzE4YmExNmVjZjBhNDdlNzNl
OTAwZDNmODQ4ZjY0ZjIuLmUzOGE4M2FkZTdkNmUwYWFmNzBjZWI5YzVhYThmZThhYjQ5NDNkMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApA
QCAtNDAwLDcgKzQwMCw4IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3Vt
ZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRhdGEp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSB9OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1
b3VzKCk7CisgICAgU3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpIH07CiAgICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAgLTUw
Myw3ICs1MDQsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OmZlZWRTdHJlYW0oKQogICAgIGNsb3Nl
U3RyZWFtKCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoUmVzcG9uc2U6OkJvZHlM
b2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBG
ZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiB7CiAgICAgQVNTRVJU
KG1fbG9hZGVyKTsKICAgICByZXR1cm4gbV9sb2FkZXItPnN0YXJ0U3RyZWFtaW5nKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEz
OGQzYzNmNmUyZmRiNjY3NWU4YTRkMTM2NWJmNWE1YmIuLmNmNzg2MzIzOWZkOTQ2ZWUwZThkODhl
YWVhNzJmZTk4OWVlZDMxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oCkBAIC0xMzQsNyArMTM0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lk
IGNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayYmKTsKIAotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzdGFydFN0cmVhbWluZygpOworICAgICAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKICAgICAgICAgTm90
aWZpY2F0aW9uQ2FsbGJhY2sgdGFrZU5vdGlmaWNhdGlvbkNhbGxiYWNrKCkgeyByZXR1cm4gV1RG
TW92ZShtX3Jlc3BvbnNlQ2FsbGJhY2spOyB9CiAgICAgICAgIENvbnN1bWVEYXRhQnlDaHVua0Nh
bGxiYWNrIHRha2VDb25zdW1lRGF0YUNhbGxiYWNrKCkgeyByZXR1cm4gV1RGTW92ZShtX2NvbnN1
bWVEYXRhQ2FsbGJhY2spOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0LmgKaW5kZXggZGQxOWM4NzBhYTdkMjQ4NWY3ZTljYTg0OTJhODQyMTM1
MmRkZDA0MS4uMWE2NmJmODE4MzIwZTk1NjA3ZDYxNWYxYTA4MmE4Mjc2ZWIyYTM0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTM4
LDcgKzM4LDcgQEAgZW51bSBjbGFzcyBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCA6IGJvb2wg
eyBObywgWWVzIH07CiBlbnVtIGNsYXNzIEhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHAg
OiBib29sIHsgTm8sIFllcyB9OwogCiBzdHJ1Y3QgQXBwSGlnaGxpZ2h0IHsKLSAgICBSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBoaWdobGlnaHQ7CisgICAgUmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGhpZ2hsaWdodDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGV4
dDsKICAgICBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBpc05ld0dyb3VwOwogICAgIEhpZ2hs
aWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDsKQEAgLTUy
LDcgKzUyLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19j
YXN0PHNpemVfdD4oaGlnaGxpZ2h0LT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKGhpZ2hsaWdodC0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAg
ZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFJhbmdlRGF0YS5jcHAKaW5kZXggZTJkOWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJk
MDRhNDU3NmMwNi4uNWU4MGYwYzA3MmQ0OWEzZWY3OTY5NTkzMDJjNDQ1NmNkMmFiZGU4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHRSYW5nZURhdGEuY3BwCkBAIC00NCwxNSArNDQsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjb25zdGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUw
NDgzMjMwMzIzMTsgLy8gRmlsZSBTaWduYXR1cmUgIChBKXBwbGUoQVApcGxpY2F0aW9uKEgpaWdo
bGlnaHRzKDIwMjEpCiAKLXN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBI
aWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0
ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6
OmNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0
byBkZWNvZGVyID0gYnVmZmVyLmRlY29kZXIoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIg
PSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIGRlY29kZXIgPSBjb250aWd1b3Vz
QnVmZmVyLT5kZWNvZGVyKCk7CiAgICAgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURh
dGE+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRhOwogICAgIHJldHVybiBkYXRhOwogfQogCi1S
ZWY8U2hhcmVkQnVmZmVyPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OnRvU2hhcmVkQnVmZmVyKCkg
Y29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6
OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVy
IGVuY29kZXI7CiAgICAgZW5jb2RlciA8PCAqdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKaW5kZXggY2Y2
MzgxYWNmYjBhNTIxMWI0MzUwOGI3YjUxN2Q2ZGIyZjZmYzc0My4uYjVkYWY2MDI1Mzk4YTNmN2U2
ZjFkMzdhYmVjZTg0NGQ0ZjFjNjU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKQEAgLTMzLDEyICszMywx
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNs
YXNzIEFwcEhpZ2hsaWdodFJhbmdlRGF0YSB7CiBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGln
aHRSYW5nZURhdGE+IGNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGNyZWF0ZShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgc3RydWN0IE5vZGVQYXRoQ29tcG9u
ZW50IHsKICAgICAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgICAgIFN0cmluZyBub2RlTmFt
ZTsKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGVjb2RlKERl
Y29kZXImKTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7
CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKaW5k
ZXggZGMzOWEwZjBkMThmZmZjYTdkZmI0NjUyMTljZDYxMmE5ZjczOGY4Zi4uZTVkZTg0OTRmMzUw
NDUzNTk0YjJmMmU4OGMzZGRhMzNmYTlhZjcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKQEAgLTIzNyw3
ICsyMzcsNyBAQCB2b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnN0b3JlQXBwSGlnaGxpZ2h0KFJl
ZjxTdGF0aWNSYW5nZT4mJiByYW5nZSkKICAgICBtX2RvY3VtZW50LT5wYWdlKCktPmNocm9tZSgp
LnN0b3JlQXBwSGlnaGxpZ2h0KFdURk1vdmUoaGlnaGxpZ2h0KSk7CiB9CiAKLXZvaWQgQXBwSGln
aGxpZ2h0U3RvcmFnZTo6cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBTY3JvbGxUb0hpZ2hsaWdodCBzY3JvbGwpCit2b2lkIEFwcEhpZ2hs
aWdodFN0b3JhZ2U6OnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIFNjcm9sbFRvSGlnaGxpZ2h0IHNjcm9sbCkKIHsKICAg
ICBhdXRvIGFwcEhpZ2hsaWdodFJhbmdlRGF0YSA9IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3Jl
YXRlKGJ1ZmZlcik7CiAgICAgaWYgKCFhcHBIaWdobGlnaHRSYW5nZURhdGEpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgK
aW5kZXggYjE1MmY3NmVkNDI0MDg5MmVhN2RlMjFlMmNiMDZkNDcyZDg3MzM2MC4uZTI3NjYzM2I0
ODRmODEwOTRhZGVjZTQ1ZjY0YWJiZWQxNzgxMjUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaApAQCAtMzksNyAr
MzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQog
CiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiBjbGFzcyBTdGF0aWNSYW5nZTsKIGNsYXNzIEhpZ2hsaWdodDsKIApAQCAt
NTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgfkFwcEhpZ2hsaWdodFN0b3JhZ2UoKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcmVBcHBIaWdobGlnaHQoUmVmPFN0YXRpY1JhbmdlPiYm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdo
dChSZWY8U2hhcmVkQnVmZmVyPiYmLCBTY3JvbGxUb0hpZ2hsaWdodCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIFNjcm9sbFRvSGlnaGxpZ2h0KTsKICAgICB2b2lkIHJlc3RvcmVVbnJl
c3RvcmVkQXBwSGlnaGxpZ2h0cygpOwogICAgIE1vbm90b25pY1RpbWUgbGFzdFJhbmdlU2VhcmNo
VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUF0TGFzdFJhbmdlU2VhcmNoOyB9CiAgICAgdm9p
ZCByZXNldExhc3RSYW5nZVNlYXJjaFRpbWUoKSB7IG1fdGltZUF0TGFzdFJhbmdlU2VhcmNoID0g
TW9ub3RvbmljVGltZTo6bm93KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAK
aW5kZXggMGFmYjdlZTVjYzg3NDM1NmIzNWExNjgwMzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1
M2UxYWNmYzU5ODVlYzdiOGYwNWUyMjc2NDVjODc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tp
bmdTdG9yZS5jcHAKQEAgLTY4Niw3ICs2ODYsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6YWRkRXhpc3RpbmdJbmRleChJREJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwog
ICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFu
c2FjdGlvbi5iZWdpbigpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2Ig
PSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhC
bG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQ
YXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5
UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEx
NzQsNyArMTE3NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2Jq
ZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9y
ZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChp
bmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBh
dGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFz
ZSBmb3IgbmV3IG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRh
YmFzZSBmb3IgbmV3IG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2Ug
dHJhbnNhY3Rpb24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQ
YXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8g
a2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBp
ZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6
ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNy
ZWF0ZSBpbmRleCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJ
REJJbmRleEluZm8mIGluZm8KIHsKICAgICBoYXNSZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRl
eEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5k
ZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNl
Iik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBz
ZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3Mg
fTsKQEAgLTE1MzMsMTMgKzE1MzMsMTMgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
Ojp1bmNoZWNrZWRQdXRJbmRleFJlY29yZChpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAg
ICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRl
eFJlY29yZCAtICVzLCAlcyIsIGtleVZhbHVlLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
LCBpbmRleEtleS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhL
ZXkpOworICAgIGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4
S2V5KTsKICAgICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5h
YmxlIHRvIHNlcmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIp
OwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2Vy
aWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGtleVZhbHVlKTsKKyAgICBhdXRvIHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXlWYWx1ZSk7CiAgICAgaWYgKCF2YWx1ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0
YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBA
IC0xNjYxLDcgKzE2NjEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4
aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAgIGlmICghdHJh
bnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4g
b2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShr
ZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0
YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
c2VyaWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIp
OwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2Vy
aWFsaXplIElEQktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9
OwpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpk
ZWxldGVSZWNvcmQoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VS
VCh0cmFuc2FjdGlvbi5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRyYW5zYWN0aW9uKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVy
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRv
IGJlIHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJl
bW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJv
ciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVh
ZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtl
eUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBi
ZSBzdG9yZWQgaW4gYW4gb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBp
biBhbiBvYmplY3Qgc3RvcmUiX3MgfTsKQEAgLTIxMjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3RpCiAgICAgYXV0byBrZXkgPSBrZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAo
a2V5LmlzTnVsbCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eSk7CisgICAgYXV0byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAg
ICBpZiAoIWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlh
bGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGlu
IGxvb2t1cCByYW5nZSJfcyB9OwpAQCAtMjEzMyw3ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGkKICAgICBrZXkgPSBrZXlSYW5nZS51cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVs
bCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAg
YXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIXVw
cGVyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBl
ciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVu
a25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCBy
YW5nZSJfcyB9OwpAQCAtMjQ0Myw3ICsyNDQzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQK
IAogICAgIEFTU0VSVChrZXkuaXNWYWxpZCgpICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpL
ZXlUeXBlOjpNYXggJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eSk7CisgICAgYXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYg
KCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktl
eSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBv
bmUgaW5kZXggcmVjb3JkIl9zIH07CkBAIC0yNTA4LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQgPSAwOwogCiAgICAgYXV0byBsb3dlcktleSA9IHJh
bmdlLmxvd2VyS2V5LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93
ZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJ
REJLZXlEYXRhKGxvd2VyS2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShsb3dlcktleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIp
OwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2Vy
aWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJf
cyB9OwogICAgIH0KIAogICAgIGF1dG8gdXBwZXJLZXkgPSByYW5nZS51cHBlcktleS5pc051bGwo
KSA/IElEQktleURhdGE6Om1heGltdW0oKSA6IHJhbmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7
CisgICAgYXV0byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwog
ICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2Vy
aWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkg
aW4gbG9va3VwIHJhbmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNv
ci5jcHAKaW5kZXggOGJmZTIyN2RiNjE5NjIzYmQ4ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2
MTAzNGQzYTEyZGEwYzA5Y2ZlZGZlOWYyZWE2NWE2ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNv
ci5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3Vt
ZW50cygpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsK
KyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkp
OwogICAgIGlmIChtX3N0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAq
YnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3Jl
YXRlIGN1cnNvciBzdGF0ZW1lbnQgKGxvd2VyIGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmlu
ZFByZUluZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwog
ICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50
KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5v
dCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDBhNDY5YmQwYmQxZjM4ZGNiOTZiMzlkOGMzMDAw
YWY3M2QxMmFiNTkuLmM5ZDZkYTZiZGQ5ZjkzOTUwMWY0ZjQyMzJiNGM3ODM3ZDg0MGRhYzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVJl
Y29yZGVyOjpzdGFydFJlY29yZGluZyhzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0aW1lU2xpYwog
ICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmPEJsb2JFdmVudD4gY3JlYXRl
RGF0YUF2YWlsYWJsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUg
dGltZUNvZGUpCitzdGF0aWMgaW5saW5lIFJlZjxCbG9iRXZlbnQ+IGNyZWF0ZURhdGFBdmFpbGFi
bGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSB0
aW1lQ29kZSkKIHsKICAgICBhdXRvIGJsb2IgPSBidWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4
dCwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoY29udGV4
dCk7CiAgICAgcmV0dXJuIEJsb2JFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxh
YmxlRXZlbnQsIEJsb2JFdmVudDo6SW5pdCB7IHsgZmFsc2UsIGZhbHNlLCBmYWxzZSB9LCBXVEZN
b3ZlKGJsb2IpLCB0aW1lQ29kZSB9LCBCbG9iRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5o
CmluZGV4IDc3MTJiNDQ1MjgzNjdkOGMyNzI1MDJhZGJhYWNhYWY5Nzg4Y2JkYjAuLjFlOWI3NGFi
MTdlMzEwOGRiNDIwOWI5YjRmMDIxNGRhMTFhYzZlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaApAQCAtMTAzLDcgKzEw
Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaEVycm9yKEV4Y2VwdGlvbiYmKTsKIAog
ICAgIGVudW0gY2xhc3MgVGFrZVByaXZhdGVSZWNvcmRlciB7IE5vLCBZZXMgfTsKLSAgICB1c2lu
ZyBGZXRjaERhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT47CisgICAgdXNpbmcgRmV0Y2hEYXRh
Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPjsKICAgICB2b2lkIGZldGNoRGF0YShG
ZXRjaERhdGFDYWxsYmFjayYmLCBUYWtlUHJpdmF0ZVJlY29yZGVyKTsKIAogICAgIC8vIE1lZGlh
U3RyZWFtOjpPYnNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAppbmRleCAzZjRjOWJjZDEzM2FjMjlmM2Y3ZGRlMTk5
NDc4ZTM5MjU3ZDVlNjZiLi44NzRhYTdmMGIxOGYwZWU3NTg4MGJhNWY1ZWY2N2Q0N2JmYzJiMmI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1l
dGFkYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YU1ldGFkYXRhLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIEFydHdvcmtJbWFnZUxvYWRlcjo6
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTAog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIFNhbml0aXplIHRoZSBpbWFnZSBieSBkZWNv
ZGluZyBpdCBpbnRvIGEgQml0bWFwSW1hZ2UuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1h
Z2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBhdXRvIGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6
OmNyZWF0ZSgpOwogICAgIGJpdG1hcEltYWdlLT5zZXREYXRhKFdURk1vdmUoYnVmZmVyVG9TYW5p
dGl6ZSksIHRydWUpOwogICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmlu
ZGV4IDJiM2NkZTM2MDgyNDcxYzExYzg3ZmNmNjFjYzgxY2MzNjBjMzlkOTAuLmQzNzhhZmM2Zjhh
MWI1N2EwMzAyZTJjODY4YjI0MGEyMDk3ZmU0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKQEAgLTUzMCw3ICs1MzAsNyBA
QCB2b2lkIFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCgpCiAgICAgLy8gaHR0
cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL3RpcC9tZWRpYS1zb3VyY2Uv
bWVkaWEtc291cmNlLmh0bWwjc291cmNlYnVmZmVyLXNlZ21lbnQtcGFyc2VyLWxvb3AKICAgICAv
LyBXaGVuIHRoZSBzZWdtZW50IHBhcnNlciBsb29wIGFsZ29yaXRobSBpcyBpbnZva2VkLCBydW4g
dGhlIGZvbGxvd2luZyBzdGVwczoKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFwcGVuZERh
dGEgPSBXVEZNb3ZlKG1fcGVuZGluZ0FwcGVuZERhdGEpOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBhcHBlbmREYXRhID0gV1RGTW92ZShtX3BlbmRpbmdBcHBlbmREYXRhKTsK
ICAgICAvLyAxLiBMb29wIFRvcDogSWYgdGhlIGlucHV0IGJ1ZmZlciBpcyBlbXB0eSwgdGhlbiBq
dW1wIHRvIHRoZSBuZWVkIG1vcmUgZGF0YSBzdGVwIGJlbG93LgogICAgIGlmICghYXBwZW5kRGF0
YSB8fCAhYXBwZW5kRGF0YS0+c2l6ZSgpKSB7CiAgICAgICAgIHNvdXJjZUJ1ZmZlclByaXZhdGVB
cHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2NlZWRlZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAppbmRleCA1MjBj
MDc3NTY5NmEyZjBlMmU3MzAwNzM1ZThjOTc3NDk1ZjFhNjE0Li5kNGM4NTc5YzBiYmQ0NDNhNTEy
ZmE5ZjY4YzQyN2VjMDQ4ODVkMGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKQEAgLTIyMiw3ICsyMjIsNyBAQCBwcml2YXRlOgog
CiAgICAgV1RGOjpPYnNlcnZlcjx2b2lkKigpPiBtX29wYXF1ZVJvb3RQcm92aWRlcjsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGVuZGluZ0FwcGVuZERhdGE7CisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fcGVuZGluZ0FwcGVuZERhdGE7CiAgICAgVGltZXIgbV9h
cHBlbmRCdWZmZXJUaW1lcjsKIAogICAgIFJlZlB0cjxWaWRlb1RyYWNrTGlzdD4gbV92aWRlb1Ry
YWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAppbmRleCBmZWIxYjhmZmZi
N2I5NGM5ZTdlYjBiZTQ4YWQzNWRkNzA3OWM3MGJiLi5jYzVhODY1NzMwNTY1N2QwYTk3MDU2NjFl
NGJiNDljZTBiODQwNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCkBA
IC04Miw3ICs4Miw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRv
U2VuZCgpCiAgICAgbV9pc1JlYWR5VG9TZW5kID0gdHJ1ZTsKIAogICAgIGZvciAoYXV0byYgbWVz
c2FnZSA6IG1fcGVuZGluZ01lc3NhZ2VzKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRh
KG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPmRhdGEo
KSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERh
dGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsKICAgICBtX3Bl
bmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAgICAgaWYgKG1faXNQZW5kaW5nQ2xvc2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAppbmRleCBmNTgyN2RmOTM3OTQ5M2QyODEyNzAxNzdj
Y2ZiY2EwNTUxNTMyMzFmLi43Mzk0MmE4MzU5MzFhOWQyODRjNmE0NTFiYjhkYmZiNTc2NWNhZGFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFD
aGFubmVsUmVtb3RlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OwogY2xh
c3MgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbjsKIGNsYXNzIFJUQ0Vycm9y
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyIGZpbmFsIDogcHVibGljIFJUQ0RhdGFD
aGFubmVsSGFuZGxlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3Rl
SGFuZGxlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzMsNyArNzMsNyBA
QCBwcml2YXRlOgogCiAgICAgc3RydWN0IE1lc3NhZ2UgewogICAgICAgICBib29sIGlzUmF3IHsg
ZmFsc2UgfTsKLSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIH07CiAgICAgVmVjdG9yPE1lc3Nh
Z2U+IG1fcGVuZGluZ01lc3NhZ2VzOwogICAgIGJvb2wgbV9pc1BlbmRpbmdDbG9zZSB7IGZhbHNl
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cAppbmRleCAzZTExMDU0MDAzNTNkZTU2MGYyNDkzOGE5YjIwOGVmMzZmNjgwM2M0Li4zY2VlZDBh
MDExZTdiNTQ2ZmFkZGY0OGJiZGEyMTFkZmRkNTI0YzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTk3LDggKzk3LDggQEAgdm9p
ZCBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudChSVENEYXRhQ2hhbm5lbEhh
bmRsZXJDbGllbnQmIGNsaWVudCwKICAgICBtX2NvbnRleHRJZGVudGlmaWVyID0gY29udGV4dElk
ZW50aWZpZXI7CiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2FnZXMp
IHsKLSAgICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRh
KSB7Ci0gICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpOworICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBbJl0oUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CisgICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJh
d0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogICAg
ICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2
ZVN0cmluZ0RhdGEodGV4dCk7CiAgICAgICAgIH0sIFsmXShTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5n
ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaApp
bmRleCA0MWY5NTI4MjFlNjIwMDkzZjhlZWZlMzJjNWVkNGFlMGY1ZTU0MTk3Li4xMWJkNDVkZTkx
NTU3NzlmZmM5ZWZiMDNlOTU1MjhmMDVlNjRkNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaApAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgog
ICAgICAgICBSVENEYXRhQ2hhbm5lbFN0YXRlIHN0YXRlOwogICAgICAgICBzdGQ6Om9wdGlvbmFs
PHdlYnJ0Yzo6UlRDRXJyb3I+IGVycm9yOwogICAgIH07Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0
ZDo6dmFyaWFudDxTdGF0ZUNoYW5nZSwgU3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAg
dXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxTdGF0ZUNoYW5nZSwgU3RyaW5nLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAgIHVzaW5nIFBlbmRpbmdNZXNzYWdlcyA9IFZlY3Rv
cjxNZXNzYWdlPjsKICAgICB2b2lkIHN0b3JlTWVzc2FnZShQZW5kaW5nTWVzc2FnZXMmLCBjb25z
dCB3ZWJydGM6OkRhdGFCdWZmZXImKTsKICAgICB2b2lkIHByb2Nlc3NNZXNzYWdlKGNvbnN0IHdl
YnJ0Yzo6RGF0YUJ1ZmZlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDMwOWMwMjY0M2Y1YTdh
ZTlmZWMwOGExNGViMjEyMjQwOWIxZjg5ZTAuLjYzZjFjM2NiZTFlYTgxY2ZiZjQ1NDY0NjMyMGNk
ZjdmYWNmNTljMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIG1f
c291cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBtX2RhdGEucmVz
ZXQoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYgKG1fcmVzb3VyY2Up
IHsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVS
TChjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7CiAKICAgICBtX3Jl
c291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRo
aXMpOwpAQCAtMTgwLDggKzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9k
ZWxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzCiB2b2lkIEhU
TUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQo
cmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NFUlQobV9kYXRhKTsK
LSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5k
KGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH07CiAK
ICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewotICAgICAgICBtX2Rh
dGEgPSBudWxscHRyOworICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAgICAgICBpbnZhbGlk
YXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0yMDQsNyArMjAzLDcg
QEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9
IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxs
KCkuZ2V0KCksIHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21v
ZGVsID0gTW9kZWw6OmNyZWF0ZShtX2RhdGEudGFrZSgpLT5tYWtlQ29udGlndW91cygpLmdldCgp
LCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRl
UmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAw
NWExY2RhYTNlMTQ4NzdhMGFlNDY1YjYzNDlhYTViYmIxYWYyYzgyLi5jZTAwOWQ0ZTVlZGMzMDk3
NDVlMDI3YjA2MzJiZDFlNmU4NTgwM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsxMzMs
NyBAQCBwcml2YXRlOgogCiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQ
dHI8TW9kZWw+IG1fbW9kZWw7CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVBy
b21pc2U7CiAgICAgYm9vbCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2Rl
bExvYWRlclVTRC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2Vu
ZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCmluZGV4IDNlODJhYzIyMTY3OTZjOWVkYjc2
MGExOWVkN2FjZTFmNDJjZDM3NzcuLjEzMDNlYzRkMjU2OGE2NmY4N2Q3ZmViMjBiZjJiMDMzOTIz
MmMzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9z
Y2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBA
IC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFy
eUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGF1dG8gZmlsZVBhdGggPSBG
aWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiTW9kZWxGaWxlIiwgZmlsZUhhbmRsZSwgIi51
c2R6Iik7CiAgICAgQVNTRVJUKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkp
OwogCi0gICAgc2l6ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVI
YW5kbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNp
emUoKSk7CisgICAgc2l6ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZp
bGVIYW5kbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBt
b2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChieXRlQ291bnQs
IGJ5dGVDb3VudCA9PSBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3Rl
bTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKaW5kZXggMGI4OThmNmFkYjU3ZWIyNWRj
NDkzN2Q4MWZmNWQxNGQ1Mjk3NmM4NC4uZDUxNzNmYmY4YjQwMzQxYzVjZjhkOGE0ZjU1ZWVhYzhm
ZjgzOGEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtU2luay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFk
YWJsZVN0cmVhbVNpbmsuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFtOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUmVhZGFibGVT
dHJlYW1TaW5rIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1TaW5rPiB7CiBwdWJs
aWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJT
b3VyY2VQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVy
U291cmNlUHJvdmlkZXIuaAppbmRleCBjNDUyYzgzZmJkNWNlODk1YmRkMDMxYWNmMTQ2OGY3ODY1
MDYyMmQ3Li5iOGI3Nzg1ZjkxZDA2OGMyYTQ2Y2ViMWQ2NTk3NThmY2Y4YjY5ZDk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVBy
b3ZpZGVyLmgKQEAgLTUxLDEzICs1MSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX3Njcmlw
dEJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAor
ICAgICAgICBpZiAoIW1fY29udGlndW91c0J1ZmZlciAmJiAoIW1fY29udGFpbnNPbmx5QVNDSUkg
fHwgKm1fY29udGFpbnNPbmx5QVNDSUkpKQorICAgICAgICAgICAgbV9jb250aWd1b3VzQnVmZmVy
ID0gbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIGlm
ICghbV9jb250YWluc09ubHlBU0NJSSkgewotICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJ
SSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgp
LCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1fY29udGFp
bnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9jb250aWd1b3VzQnVmZmVyLT5k
YXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICAgICAgaWYg
KCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0
cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9zY3JpcHRCdWZmZXIuYnVm
ZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAg
ICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tU
b3A4Qml0cyhtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVy
KCktPnNpemUoKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJ
KQotICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07
CisgICAgICAgICAgICByZXR1cm4geyBtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CiAKICAg
ICAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0cmluZykgewogICAgICAgICAgICAgbV9jYWNoZWRT
Y3JpcHRTdHJpbmcgPSBtX3NjcmlwdEJ1ZmZlci50b1N0cmluZygpOwpAQCAtODEsNiArODMsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgbV9zY3JpcHRCdWZmZXIg
PSBzY3JpcHRCdWZmZXI7CisgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG51bGxwdHI7CiAg
ICAgfQogCiBwcml2YXRlOgpAQCAtOTEsNiArOTQsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAg
IFNjcmlwdEJ1ZmZlciBtX3NjcmlwdEJ1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fY29udGlndW91c0J1ZmZlcjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0
SGFzaCB7IDAgfTsKICAgICBtdXRhYmxlIFN0cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAg
ICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5k
ZXggN2U0OWE5ZTczMjI2YjY1Y2MyOGJmNTk0ODEzYjBmODNiMjY5ZDIyYi4uZWYzN2YxZDBjYTQ2
MmJiOWI3YzliNmE1NWQxOGViYjRjMTE4MWE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xh
c3MgRGV0YWNoZWRPZmZzY3JlZW5DYW52YXM7CiBjbGFzcyBJREJWYWx1ZTsKIGNsYXNzIE1lc3Nh
Z2VQb3J0OwogY2xhc3MgSW1hZ2VCaXRtYXBCYWNraW5nOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgU2VyaWFsaXphdGlvblJl
dHVybkNvZGU7CiAKIGVudW0gY2xhc3MgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB7IE5vblRocm93
aW5nLCBUaHJvd2luZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRl
eCA4MjYxMzMzMjJhOGVlNWYzNzgyZmJiMjMxMjNiMmRkM2E1N2ExNzI4Li4xMDhlNmM4NzY3ZDBk
MmZkYWNiZTY1MDRlYmM1MDcwZTg4MmJlNjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTb3VyY2UuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENTU0ZvbnRGYWNlOwogY2xhc3MgQ1NTRm9udFNlbGVjdG9yOworY2xhc3MgU2hhcmVkQnVmZmVy
OwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4
dDsKQEAgLTQyLDcgKzQzLDYgQEAgY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRT
ZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5n
czsKIGNsYXNzIFNWR0ZvbnRGYWNlRWxlbWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9u
dFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlci5jcHAKaW5kZXggMWRlYWM0ZjQxY2Y0OWYxZjg4MmRjY2VmZDQ4Y2Y2YTk3MzJm
M2VkOS4uYzQyZWMwNTFmZTExZWJhMTRmODEzMzU5ZDhkMTdhMmMyODE2NjRkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTQwMiw3ICs0MDIsNyBAQCBzdHJ1Y3QgUGFzdGVi
b2FyZEZpbGVUeXBlUmVhZGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgICAg
ICB0eXBlcy5hZGQoRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGZpbGVuYW1lKSk7CiAgICAgfQog
Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJikKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKICAgICB7
CiAgICAgICAgIHR5cGVzLmFkZCh0eXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKaW5kZXggMTcyNGNmMGU1MGJhYTViOWIyNDEzMDQ4MWVlNzI0Y2I3ODIwN2FhNC4uYzVlOWUy
NmIzNzJhZTY4M2YxODY4ZTkyMGM0NWVkNzBlZGY1NTQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcApAQCAtNDEzMyw3ICs0MTMzLDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0
b3I6OnByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4g
eyBhdHRhY2htZW50LT51bmlxdWVJZGVudGlmaWVyKCksIFdURk1vdmUoYWRkaXRpb25hbFR5cGVz
KSwgV1RGTW92ZShhZGRpdGlvbmFsRGF0YSkgfTsKIH0KIAotdm9pZCBFZGl0b3I6OnJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIEVkaXRvcjo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQog
ICAgICAgICBjbGllbnQtPnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoaWRlbnRpZmllciwg
Y29udGVudFR5cGUsIHByZWZlcnJlZEZpbGVOYW1lLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oCmluZGV4IDAxZmUwYjVlMDQ0ZWY2M2YyNmE3MWI0NzJlZjk4YjExYzIyOGI5
MWMuLjFkMDcxNmM1YjkzYzhiYjdhZDczZjQxNzRjYTgwNDU5MDVmOTE5MTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaApAQCAtNTcsOSArNTcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOwogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwot
Y2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgQ29tcG9zaXRlRWRpdENvbW1hbmQ7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CiBjbGFzcyBDdXN0b21VbmRvU3RlcDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsK
IGNsYXNzIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI7CiBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNz
IEVkaXRDb21tYW5kQ29tcG9zaXRpb247CkBAIC03NCw3ICs3NSw3IEBAIGNsYXNzIEtpbGxSaW5n
OwogY2xhc3MgUGFzdGVib2FyZDsKIGNsYXNzIFBhc3RlYm9hcmRXcml0ZXJEYXRhOwogY2xhc3Mg
UmVuZGVyTGF5ZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogY2xhc3MgRm9udDsKIGNsYXNzIFNwZWxsQ2hlY2tSZXF1ZXN0OwogY2xhc3MgU3Bl
bGxDaGVja2VyOwpAQCAtNTYzLDcgKzU2NCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnRBdHRhY2htZW50
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxl
U2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7
Ci0gICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgZmlsZURhdGEpOworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2ht
ZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBj
b25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBmaWxlRGF0YSk7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxTZXJp
YWxpemVkQXR0YWNobWVudERhdGE+JiYpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRl
bnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBT
dHJpbmcmIGZpbGVQYXRoKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNv
bnRlbnRSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5o
CmluZGV4IDA4YWExMjQyNjYyMGY3Njk1M2E3OWIzNGVkZTVmNmRmMDUyN2IwMTUuLjk1N2I0ZmQ0
YTU1N2ZjODFjZDMwNjllZWFjYjg5NDg4YTk0N2I3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvV2ViQ29udGVudFJlYWRlci5oCkBAIC03MiwxNiArNzIsMTYgQEAgcHJpdmF0ZToKICAgICBi
b29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJl
ZFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUgPSB7IH0p
IG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYp
IG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBl
LCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJy
aWRlOworICAgIGJvb2wgcmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9u
U2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9v
bCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRS
VEZEKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHBy
ZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFdl
YkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVh
ZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJU
RihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1
ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9
IHsgfSkgb3ZlcnJpZGU7CiAjZW5kaWYKIH07CiAKQEAgLTk5LDE2ICs5OSwxNiBAQCBwcml2YXRl
OgogICAgIGJvb2wgcmVhZEZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUg
PSB7IH0sIGNvbnN0IFN0cmluZyYgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgYm9vbCByZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
OwotICAgIGJvb2wgcmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYs
IFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCByZWFkSW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmlu
ZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBy
ZWFkUlRGRChTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEYoU2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURkQoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9u
U2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFk
ZXIuY3BwCmluZGV4IDU0OWViN2QyZTRjMDc1NDhlNGE4YzllYTI0ZWMyMGU0ZjIxYmZhMjUuLjEx
N2RiYTY4ZWRiMGJkNGI2YzMwZTA5NDg1ZDlkMGMwZjI5YzM4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKQEAg
LTM5LDcgKzM5LDcgQEAgdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRGaWxl
bmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVh
dGUoY29udGV4dC5nZXQoKSwgZmlsZW5hbWUpKTsKIH0KIAotdm9pZCBXZWJDb3JlUGFzdGVib2Fy
ZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViQ29yZVBhc3Rl
Ym9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0
IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewog
ICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgQmxvYjo6Y3JlYXRl
KGNvbnRleHQuZ2V0KCksIGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSwgdHlwZSksIGZpbGVuYW1lKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJk
RmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZp
bGVSZWFkZXIuaAppbmRleCA1YzUyOWRkN2M4ZWNjMDAwNDhmY2I0ZDE1ODE0NjM1YjI0ZDkwYmI3
Li45ZDgxNjA1ZjE5OTI5OGYxOWMwZWQ2OTk1ZmUzYmQ3NzgzMDM0ZmZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKQEAg
LTQxLDcgKzQxLDcgQEAgc3RydWN0IFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlciBmaW5hbCA6
IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICB+V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVy
KCk7CiAKICAgICB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2
b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4g
Y29udGV4dDsKICAgICBWZWN0b3I8UmVmPEZpbGU+PiBmaWxlczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBkNDhlMTFjOTZiNzgwOGY4ODM1
NGIzYjA3NDdlZWIxZjFlMzdlM2YzLi4wNzgyNDgzNjJhYTA1NGRjM2FiMDAwMDQ1MTcxODQxOThh
NTgwZjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVy
Lm1tCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2ht
ZW50Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBOU1VSTCAqdXJsLCBCT09MCiAgICAgICAg
IGlmIChhdXRvIHJlc291cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UodXJsKSkgewogICAg
ICAgICAgICAgYXV0byYgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAg
ICAgIGlmICghdXNlUGxhY2Vob2xkZXIgfHwgbWltZVR5cGUgIT0gInRleHQvaHRtbCIpIHsKLSAg
ICAgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9j
XSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV0pOworICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05T
RmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAg
ICAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVu
YW1lV2l0aE1JTUVUeXBlKHVybCwgbWltZVR5cGUpXTsKICAgICAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgICAgIG5vdEZvdW5kID0gWUVTOwpAQCAtMjMwMCw3ICsyMzAwLDcgQEAgc3RhdGlj
IFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExvYWRl
ciogZGF0YVNvdXJjZSwgTlMKIAogICAgIGlmIChkYXRhU291cmNlKSB7CiAgICAgICAgIGlmIChS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNl
KFVSTCkpIHsKLSAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFw
cGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHRO
UyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNv
dXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAg
ICAgICAgICAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5zdWdn
ZXN0ZWRGaWxlbmFtZSgpOwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSB8fCAhW2ZpbGVuYW1l
IGxlbmd0aF0pCiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZVdp
dGhNSU1FVHlwZShyZXNvdXJjZS0+dXJsKCksIHJlc291cmNlLT5taW1lVHlwZSgpKTsKQEAgLTIz
MjIsOCArMjMyMiw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBw
ZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiBzdGF0aWMgUmV0YWluUHRy
PE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBl
bGVtZW50KQogewogICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNh
Y2hlZEltYWdlKCkpIHsKLSAgICAgICAgaWYgKFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0g
Y2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRO
UyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFy
ZWRCdWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGlmIChGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIo
KSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5p
dFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICB9CiAKICAgICBhdXRvKiByZW5kZXJlciA9IGVs
ZW1lbnQucmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggNmFhM2NkNTRlODJiOTliMzE5NDI3YmVl
MzRjOGM0NGI2NzllMjI3OS4uNzZiMWEwMDlkZTQzMGZhM2I1NGQ5YTE1ZTY3OGNkODNmMzE0NWZl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVh
ZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0KQEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgYm9vbCBzdXBwb3J0c0Ns
aWVudFNpZGVBdHRhY2htZW50RGF0YShjb25zdCBGcmFtZSYgZnJhbWUpCiAKICNlbmRpZgogCi1z
dGF0aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2ht
ZW50KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVm
ZXJyZWRTaXplKQorc3RhdGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZv
ckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkb2N1bWVudCwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFNpemUpCiB7CiAjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6
OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKQEAgLTMwOSw3ICsz
MDksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJh
bWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSByZXNvdXJjZUVudHJ5LT52YWx1ZTsKLSAgICAgICAg
c2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRp
ZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPmRhdGEoKSB9KTsKKyAgICAg
ICAgc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmFwcGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRl
bnRpZmllcigpLCByZXNvdXJjZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29u
dGlndW91cygpIH0pOwogICAgIH0KIAogICAgIGlmICghc2VyaWFsaXplZEF0dGFjaG1lbnREYXRh
LmlzRW1wdHkoKSkKQEAgLTMzMiw3ICszMzIsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENv
bnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgog
ICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0gIm1lZGlhIl9z
OwogCi0gICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFt
ZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCks
IGltYWdlIH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZN
b3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIGltYWdlIH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0
byYgb2JqZWN0IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTE9iamVjdEVsZW1lbnQ+KGZyYWdtZW50
KSkgewpAQCAtMzUwLDcgKzM1MCw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdp
dGhBdHRhY2htZW50cyhGcmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAg
IGlmIChuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAiZmlsZSJfczsKIAotICAg
ICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNv
dXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBvYmplY3Qg
fSk7CisgICAgICAgIGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFt
ZSksIHJlc291cmNlLT52YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCku
bWFrZUNvbnRpZ3VvdXMoKSwgb2JqZWN0IH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgaW5m
byA6IGF0dGFjaG1lbnRJbnNlcnRpb25JbmZvKSB7CkBAIC00MjgsNyArNDI4LDcgQEAgc3RydWN0
IE1hcmt1cEFuZEFyY2hpdmUgewogICAgIFJlZjxBcmNoaXZlPiBhcmNoaXZlOwogfTsKIAotc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hp
dmUoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBT
dHJpbmcpPiYgY2FuU2hvd01JTUVUeXBlQXNIVE1MKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFy
a3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNh
blNob3dNSU1FVHlwZUFzSFRNTCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUoVVJMKCksIGJ1ZmZlcik7CiAgICAgaWYgKCFhcmNoaXZlKQpAQCAtNDQyLDcg
KzQ0Miw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RN
YXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmCiAgICAgaWYgKCFjYW5TaG93TUlNRVR5
cGVBc0hUTUwodHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1
cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRh
KCkuZGF0YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVs
ZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07CisgICAgcmV0dXJuIE1h
cmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFp
blJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9Owog
fQogCiBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1l
LCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bWVudCwgTWFya3VwQW5kQXJjaGl2ZSYgbWFya3Vw
QW5kQXJjaGl2ZSwgTVNPTGlzdFF1aXJrcyBtc29MaXN0UXVpcmtzLCBjb25zdCBzdGQ6OmZ1bmN0
aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKQEAgLTQ4MSw3
ICs0ODEsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgICAgICBpZiAoIXNob3VsZFJl
cGxhY2VTdWJyZXNvdXJjZVVSTChzdWJmcmFtZVVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpm
cm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgc3ViZnJhbWVNYWlu
UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLAorICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZy
YW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0
YSgpLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEo
KS5zaXplKCkpLAogICAgICAgICAgICAgc3ViZnJhbWVNYWluUmVzb3VyY2UucmVsZWFzZU5vbk51
bGwoKSwgc3ViZnJhbWVBcmNoaXZlLmNvcHlSZWYoKSB9OwogICAgICAgICBhdXRvIHN1YmZyYW1l
TWFya3VwID0gc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShmcmFtZSwgZGVzdGluYXRpb25Eb2N1
bWVudCwgc3ViZnJhbWVDb250ZW50LCBNU09MaXN0UXVpcmtzOjpEaXNhYmxlZCwgY2FuU2hvd01J
TUVUeXBlQXNIVE1MKTsKIApAQCAtNDk3LDcgKzQ5Nyw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRp
emVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRv
Y3VtCiAgICAgcmV0dXJuIHNhbml0aXplZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChXVEZN
b3ZlKGZyYWdtZW50KSwgKnN0YWdpbmdEb2N1bWVudCwgbXNvTGlzdFF1aXJrcywgbWFya3VwQW5k
QXJjaGl2ZS5tYXJrdXApOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNo
aXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2Vi
QXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1l
LnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTMyLDcgKzUzMiw3IEBAIGJvb2wgV2ViQ29u
dGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFdlYkFyY2hp
dmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJl
YWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAo
IWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYxMiwxMiArNjEy
LDEyIEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZEhUTUwoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiAgICAgcmV0dXJuICFtYXJrdXAuaXNFbXB0eSgpOwogfQogCi1ib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250
ZW50UmVhZGVyOjpyZWFkUlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJh
bWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBzdHJpbmcg
PSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVy
LmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAg
YXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3Vt
ZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdt
ZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21l
bnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYyNiwxMSArNjI2LDExIEBAIGJvb2wgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hhcmVk
QnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRh
KCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9
IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIu
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVz
Om51bGxwdHJdKTsKICAgICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNv
dXJjZXMoZnJhbWUsIHN0cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNjM5LDEyICs2MzksMTIgQEAgYm9vbCBXZWJDb250ZW50TWFya3Vw
UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvcklt
YWdlcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0
TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3Ry
aW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVm
ZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmli
dXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRk
UmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTY1MywxMSArNjUzLDExIEBAIGJvb2wgV2ViQ29udGVudFJl
YWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRT
dHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1
bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05T
QXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAg
ICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBz
dHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTY3Niw3ICs2NzYsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQo
Y29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRl
bnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCiti
b29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJy
ZWRQcmVzZW50YXRpb25TaXplKQogewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAg
ICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwpAQCAtNzQ2LDcgKzc0Niw3IEBA
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIHJldHVybiBhdHRhY2htZW50
OwogfQogCi1zdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShGcmFtZSYg
ZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBj
b25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkU2l6ZSkKK3N0YXRp
YyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkU2l6ZSkKIHsKICAgICBS
ZWYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBI
VE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRv
Y3VtZW50KTsKQEAgLTgzMyw3ICs4MzMsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRV
UkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50
YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFk
ZXI6OnJlYWREYXRhQnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVy
cmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsv
V2ViQ29udGVudFJlYWRlckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJD
b250ZW50UmVhZGVyR3RrLmNwcAppbmRleCA2MDQ4NmU3MWFkNTlmZWNjNzE1ZmYwYTA5YjFjMzU1
OGI3YjM0MmMyLi5kM2U5ODE5YmQ1MzFmODQ4NmEzMTdhYjlmOWVkODNhOTg4NWJlMmJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNw
cApAQCAtNzEsNyArNzEsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQo
Y29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRl
bnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCiti
b29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJy
ZWRQcmVzZW50YXRpb25TaXplKQogewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAg
ICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaApp
bmRleCA0NWQ5MzNlMTNjYTRkMjI1MWM1ZGVkODQ4YWE5ZTk4NzJjNzY3NDg5Li5iY2E2Njk2ZWJl
NmYwZWRkZGRlZTc5YjczYzNlZTE0NDk2ZDgyZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaApAQCAt
NTMsNyArNTMsNyBAQCBjbGFzcyBCbG9iTG9hZGVyOwogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwog
Y2xhc3MgUmVhZGFibGVTdHJlYW07CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxh
dGU8dHlwZW5hbWU+IGNsYXNzIEV4Y2VwdGlvbk9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAppbmRleCA1NTllYmNjNDhjNWYwOTZhYzE5YmFlN2Q5Zjcx
OGI3MWYyYTM1MzIyLi40MmY0MTgwZGZhODQyN2UwZTYwZjgxZWI3OWIxOTE4N2NhZmRiYTFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKQEAgLTk0LDcg
Kzk0LDcgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVzc2FnZXMoKQogICAgICAg
ICBib29sIHNob3VsZFN0b3BQcm9jZXNzaW5nID0gZmFsc2U7CiAgICAgICAgIHN3aXRjaE9uKG1f
cXVldWUuZmlyc3QoKSwgW3RoaXNdKGNvbnN0IENTdHJpbmcmIHV0ZjgpIHsKICAgICAgICAgICAg
IG1fd3JpdGVTdHJpbmcodXRmOCk7Ci0gICAgICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVy
PiYgZGF0YSkgeworICAgICAgICB9LCBbdGhpc10oUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiBkYXRhKSB7CiAgICAgICAgICAgICBkYXRhLT5mb3JFYWNoU2VnbWVudChtX3dyaXRlUmF3RGF0
YSk7CiAgICAgICAgIH0sIFt0aGlzLCAmc2hvdWxkU3RvcFByb2Nlc3NpbmddKFVuaXF1ZVJlZjxC
bG9iTG9hZGVyPiYgbG9hZGVyKSB7CiAgICAgICAgICAgICBhdXRvIGVycm9yQ29kZSA9IGxvYWRl
ci0+ZXJyb3JDb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdv
cmtTZW5kUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5o
CmluZGV4IDU1MWY3MGY5MTY3YjJiZmNiMjQ0YmIyYjM3MDBiZmJhYWY1NDc5NmMuLmQyM2NmZWJi
NDUwOGJjMzAwOTE1YmI5OTZkM2YxNTA2MmNlMzUwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvTmV0d29ya1NlbmRRdWV1ZS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQmxvYjsKIGNsYXNzIEJsb2JMb2FkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBO
ZXR3b3JrU2VuZFF1ZXVlIDogcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1
YmxpYzoKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIHByb2Nl
c3NNZXNzYWdlcygpOwogCi0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxDU3RyaW5n
LCBSZWY8U2hhcmVkQnVmZmVyPiwgVW5pcXVlUmVmPEJsb2JMb2FkZXI+PjsKKyAgICB1c2luZyBN
ZXNzYWdlID0gc3RkOjp2YXJpYW50PENTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiwgVW5pcXVlUmVmPEJsb2JMb2FkZXI+PjsKICAgICBEZXF1ZTxNZXNzYWdlPiBtX3F1ZXVlOwog
CiAgICAgV3JpdGVTdHJpbmcgbV93cml0ZVN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAppbmRleCA1NmEwNmZjYWYyNzNkMjVkYzRjNzVkY2U1
NjlhYWM4ZjFhYTU5NTI3Li5kMmI4NzQxYTA0NDM0MmM3ZmZkOWU4YTUzM2NjOGExMjBlMjliYWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBA
IC0yMjcsNyArMjI3LDcgQEAgc3RhdGljIGJvb2wgbWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5l
SW1hZ2VBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIE1JTUVU
eXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShtaW1lVHlwZSkgfHwgTUlNRVR5
cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlwZShtaW1lVHlwZSk7CiB9CiAKLXZvaWQgSFRNTEF0dGFj
aG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBIVE1MQXR0YWNo
bWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAg
IGF1dG8qIGhvc3RFbGVtZW50ID0gc2hhZG93SG9zdCgpOwogICAgIGlmICghaXM8SFRNTEltYWdl
RWxlbWVudD4oaG9zdEVsZW1lbnQpIHx8ICFidWZmZXItPnNpemUoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCmluZGV4IDU3M2VjMmVhZTFjZGMwNjA5ZjI2
MWMzODQwMGJiMDJjNDgwZjdiZGQuLjY2MWRlYzkzNzZkOGE5ZDZkNDcxN2ZkMGI0Y2U3ZjgyZmYw
M2Y3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaApA
QCAtMzYsNyArMzYsNyBAQCBjbGFzcyBGaWxlOwogY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNs
YXNzIFJlbmRlckF0dGFjaG1lbnQ7CiBjbGFzcyBTaGFyZWFibGVCaXRtYXA7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBIVE1MQXR0
YWNobWVudEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoSFRNTEF0dGFjaG1lbnRFbGVtZW50KTsKQEAgLTU3LDcgKzU3LDcgQEAg
cHVibGljOgogICAgIHZvaWQgY29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChj
b25zdCBFbGVtZW50JikgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUF0
dHJpYnV0ZXMoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBuZXdGaWxlU2l6ZSwgY29uc3QgU3Ry
aW5nJiBuZXdDb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuZXdGaWxlbmFtZSk7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdXBkYXRlVGh1bWJuYWlsKGNvbnN0IFJlZlB0cjxJbWFnZT4mIHRodW1i
bmFpbCk7CiAKICAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNl
c3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA1MTcxYjljZGM3ODkzMTcxZTIxZTVmNGJm
NTUwMTdlZjk0NGFjNzk1Li4xYTU2YmMwMzU5Y2NlMWY1MGRjZGRhMDY1MjIyYTAxMDk1YTY5MDVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTI5MzgsNyAr
MjkzOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1l
UGxheWJhY2tJZk5lY2Vzc2FyeSgpCiAgICAgYXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vz
c2FyeSgpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVk
SW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNs
aWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewog
ICAgIG1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBl
LCBpbml0RGF0YS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDY5NTY2OTQ5NjMxMGVmOTEwOGI5NTZmZGE0ODIxNDMw
MTQ5NzBlY2IuLjZjM2I2OTNiN2IxMGVkYTMwZTUxZDRjNjYzMWJlM2ZiNTBjYmY4MGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC03MjAsNyArNzIwLDcgQEAgcHJp
dmF0ZToKIAogICAgIC8vIENETUNsaWVudAogICAgIHZvaWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVz
dW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpIGZpbmFsOwotICAgIHZvaWQgY2RtQ2xpZW50VW5yZXF1
ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6
YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpIGZpbmFsOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1l
bnQuY3BwCmluZGV4IDQ0MmQwOTQ2YmUyNTBkY2NmNTkyN2JhYTkyNzkzYTcwZWU5MTkzM2UuLjAw
ZDhmMjM5ZDcxMjdjNjFjYWUxYjU4ZDljNGEzMDNhOWIzYzkwNTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9JbWFnZURvY3VtZW50LmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVu
dDo6dXBkYXRlRHVyaW5nUGFyc2luZygpCiAgICAgaWYgKCFtX2ltYWdlRWxlbWVudCkKICAgICAg
ICAgY3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKTsKIAotICAgIGlmIChSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpKQorICAgIGlmIChSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbG9hZGVyKCktPm1haW5SZXNvdXJj
ZURhdGEoKSkKICAgICAgICAgbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCktPnVwZGF0ZUJ1
ZmZlcigqYnVmZmVyKTsKIAogICAgIGltYWdlVXBkYXRlZCgpOwpAQCAtMTUxLDcgKzE1MSw3IEBA
IHZvaWQgSW1hZ2VEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKIHsKICAgICBpZiAoIXBhcnNl
cigpLT5pc1N0b3BwZWQoKSAmJiBtX2ltYWdlRWxlbWVudCkgewogICAgICAgICBDYWNoZWRJbWFn
ZSYgY2FjaGVkSW1hZ2UgPSAqbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCk7Ci0gICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgp
OworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGxvYWRlcigp
LT5tYWluUmVzb3VyY2VEYXRhKCk7CiAKICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIG11bHRpcGFy
dCBpbWFnZSwgbWFrZSBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgcGFydCwgc2luY2UgdGhlIHJlc291
cmNlIGRhdGEKICAgICAgICAgLy8gd2lsbCBiZSBvdmVyd3JpdHRlbiBieSB0aGUgbmV4dCBwYXJ0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcAppbmRleCBhN2NhNzE2MmQ3OTFlZDdmYmE4Y2M5MWMyMWEyY2YzYWY2ZTY5YTdl
Li4xODc5M2ZmMDY2MzM4ZmI2MGEzNGRlYzkwOWJjMmRkZDI4YmVhZmI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApA
QCAtODUwLDcgKzg1MCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNl
cHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtCiAgICAgICAgIG5ldHdv
cmtBZ2VudC0+aW50ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQog
Ci12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50
ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewog
ICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRO
ZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29ya0FnZW50LT5pbnRlcmNlcHRSZXNwb25zZShy
ZXNwb25zZSwgaWRlbnRpZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggOGU2NWM0
ZWIxMDIzMzUyMWY0OGM3ZjRiMTIwYWQyYzg5MDlhMDdiYS4uZDI5NTc4MTBkODM4MmM5MzUxZDVh
OTNmMTQ0YWVkMTQ5M2JjYzY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtOTMsNyArOTMsNyBAQCBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3Vy
aXR5T3JpZ2luOwogY2xhc3MgU2hhZG93Um9vdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBUaW1lckJhc2U7CiBjbGFzcyBXZWJLaXRO
YW1lZEZsb3c7CiBjbGFzcyBXZWJTb2NrZXRDaGFubmVsOwpAQCAtMjM2LDcgKzIzNiw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1l
JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJj
ZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAg
c3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZv
aWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwotICAgIHN0YXRpYyB2b2lkIGludGVyY2Vw
dFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRl
cmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYpOwogCiAgICAg
c3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShQYWdlJiwgc3RkOjp1bmlxdWVfcHRyPElu
c3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9D
b25zb2xlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3Bl
Y3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKQEAgLTQ0MSw3ICs0NDEsNyBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRl
cmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZUltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0
UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsK
IAogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwogCkBA
IC0xMjg5LDcgKzEyODksNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgRgogICAgICAgICBpbnRl
cmNlcHRSZXF1ZXN0SW1wbCgqYWdlbnRzLCBsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQog
Ci1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJl
c291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxl
cikKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9u
c2UoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpz
aG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UpKTsKICAgICBpZiAoYXV0byog
YWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50cyhmcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3Bw
CmluZGV4IDYxZTRiYzNiYTAxOWVlMjVlNWM4YmMyMjFkZmY2MDc3ZWRkYjg2M2QuLmYwNjQwM2E2
MjM0YjQyYjZhZDJhODBiMDE5NGE1OTZkODlmNmU2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3Bw
CkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Ojpp
bnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImIGxvCiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVy
KSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRS
ZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPik+JiYgaGFuZGxlcikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Ojpp
bnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UsIGlkZW50aWZp
ZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCmluZGV4IGY3NjExNGNl
OThmNDJhN2ZmOTA2YTQ4ZDA0MjBiOTYzMDVkMzY5MTQuLjA3YjQyMWI1OWMxNTU1ZTFhMjkxZTE4
ZWJiMjYyMjEyMmYxNjU4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKQEAgLTM2LDIwICszNiwyMCBA
QCBjbGFzcyBGcmFtZTsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbldlYktpdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxk
SW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwog
ICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3Qo
UmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYm
KTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJ
bnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNv
bnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGlu
dGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwotICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3Bv
bnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGlu
dGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYm
KTsKIH07CiAKIGlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hv
dWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKQEAgLTc2LDcgKzc2LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2EK
ICAgICBpbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsK
IH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNl
cHRSZXNwb25zZShjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4p
PiYmIGhhbmRsZXIpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6
OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3Bv
bnNlKSk7CiAgICAgaW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbCgqZnJhbWUsIHJlc3BvbnNlLCBp
ZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3
NDVmZTQ3MzU4NjQzMGZlMGZmNzMuLmYzMmY2NjBiOTE3M2JhZThkNWNkOWExMzBlYWU1OGI5N2Q1
ZWNlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmNwcApAQCAtNDcsNiArNDcsNyBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1T
aW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplID0gNTAgKiAxMDAwICogMTAwMDsgLy8gNTBNQgogTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxvYWRlcklkKQogICAgIDogbV9yZXF1ZXN0SWQo
cmVxdWVzdElkKQogICAgICwgbV9sb2FkZXJJZChsb2FkZXJJZCkKKyAgICAsIG1fZGF0YUJ1ZmZl
cihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTY0LDcg
KzY1LDcgQEAgdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6cmVt
b3ZlQ29udGVudCgpCiAgICAgaWYgKGhhc0RhdGEoKSkgewogICAgICAgICBBU1NFUlQoIWhhc0Nv
bnRlbnQoKSk7CiAgICAgICAgIHJlc3VsdCA9IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpOwotICAgICAg
ICBtX2RhdGFCdWZmZXIgPSBudWxscHRyOworICAgICAgICBtX2RhdGFCdWZmZXItPnJlc2V0KCk7
CiAgICAgfQogCiAgICAgaWYgKGhhc0NvbnRlbnQoKSkgewpAQCAtODEsMzYgKzgyLDM3IEBAIHVu
c2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgp
CiAgICAgcmV0dXJuIHJlbW92ZUNvbnRlbnQoKTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fZGF0
YUJ1ZmZlci0+aXNOdWxsKCk7Cit9CisKIHNpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVz
b3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kYXRhQnVmZmVy
ID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAwOworICAgIHJldHVybiBtX2RhdGFCdWZmZXItPnNp
emUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBl
bmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIEFT
U0VSVCghaGFzQ29udGVudCgpKTsKLSAgICBpZiAoIW1fZGF0YUJ1ZmZlcikKLSAgICAgICAgbV9k
YXRhQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAg
ZWxzZQotICAgICAgICBtX2RhdGFCdWZmZXItPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAg
ICBtX2RhdGFCdWZmZXItPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdW5zaWduZWQg
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgp
CiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogCi0gICAgc2l6ZV90IGRhdGFMZW5ndGgg
PSBtX2RhdGFCdWZmZXItPnNpemUoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fZGF0YUJ1ZmZlci0+
dGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gYnVmZmVy
LT5zaXplKCk7CiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2Rl
ZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNo
KG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0g
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9j
b250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFM
ZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXIt
PmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCi0gICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0
cjsKLQogICAgIHJldHVybiBtX2NvbnRlbnQuc2l6ZUluQnl0ZXMoKSAtIGRhdGFMZW5ndGg7CiB9
CiAKQEAgLTI2Nyw3ICsyNjksNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRDYWNo
ZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzbwogICAgIHJlc291
cmNlRGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2UoY2FjaGVkUmVzb3VyY2UpOwogfQogCi12b2lkIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
dGV4dEVuY29kaW5nTmFtZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNl
U2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKIHsK
ICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IHJlc291cmNlRGF0YUZvclJlcXVlc3RJ
ZChyZXF1ZXN0SWQpOwogICAgIGlmICghcmVzb3VyY2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBlZmEwMDA1M2FlMTE3YTU0
ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3Li5lZTM5NDU3Zjc2NzJlYWNhYWM5MGE1YjZiYzg4MTEw
OGNiZGE4YTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2Vu
dC5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC00MCw3ICs0MSw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIAog
Y2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpAQCAtODgsOCArOTAsOCBAQCBwdWJsaWM6CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VE
ZWNvZGVyPiBkZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVyLmNvcHlSZWYoKTsgfQog
ICAgICAgICB2b2lkIHNldERlY29kZXIoUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+JiYgZGVj
b2RlcikgeyBtX2RlY29kZXIgPSBXVEZNb3ZlKGRlY29kZXIpOyB9CiAKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuY29weVJlZigp
OyB9Ci0gICAgICAgIHZvaWQgc2V0QnVmZmVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KSB7IG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOyB9CisgICAgICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5jb3B5UmVm
KCk7IH0KKyAgICAgICAgdm9pZCBzZXRCdWZmZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKSB7IG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOyB9CiAKICAgICAgICAg
Y29uc3Qgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8oKSBj
b25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsgfQogICAgICAgICB2b2lkIHNldENlcnRp
ZmljYXRlSW5mbyhjb25zdCBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmlj
YXRlSW5mbykgeyBtX2NlcnRpZmljYXRlSW5mbyA9IGNlcnRpZmljYXRlSW5mbzsgfQpAQCAtMTAz
LDEwICsxMDUsMTAgQEAgcHVibGljOgogICAgICAgICBXYWxsVGltZSByZXNwb25zZVRpbWVzdGFt
cCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VUaW1lc3RhbXA7IH0KICAgICAgICAgdm9pZCBz
ZXRSZXNwb25zZVRpbWVzdGFtcChXYWxsVGltZSB0aW1lKSB7IG1fcmVzcG9uc2VUaW1lc3RhbXAg
PSB0aW1lOyB9CiAKLSAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBjb25zdCB7IHJldHVy
biBtX2RhdGFCdWZmZXI7IH0KKyAgICAgICAgYm9vbCBoYXNCdWZmZXJlZERhdGEoKSBjb25zdCB7
IHJldHVybiBoYXNEYXRhKCk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGJvb2wgaGFzRGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBib29sIGhhc0RhdGEo
KSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25zdDsKICAgICAgICAgdm9p
ZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAg
ICAgICAgdW5zaWduZWQgZGVjb2RlRGF0YVRvQ29udGVudCgpOwpAQCAtMTE5LDggKzEyMSw4IEBA
IHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKICAgICAgICAgU3Ry
aW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2Rl
Y29kZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YUJ1ZmZlcjsKLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgICAgIFVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPiBtX2RhdGFCdWZmZXI7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICAgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0
ZUluZm8+IG1fY2VydGlmaWNhdGVJbmZvOwogICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9jYWNo
ZWRSZXNvdXJjZSB7IG51bGxwdHIgfTsKICAgICAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNv
dXJjZVR5cGUgbV90eXBlIHsgSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlIH07CkBA
IC0xNDQsNyArMTQ2LDcgQEAgcHVibGljOgogICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5YmVB
ZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICB2b2lkIG1heWJlRGVjb2RlRGF0YVRvQ29udGVu
dChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzb3VyY2UqKTsKLSAgICB2b2lkIGFkZFJl
c291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOworICAgIHZvaWQgYWRk
UmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwog
ICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAg
ICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRhRm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKICAg
ICBWZWN0b3I8U3RyaW5nPiByZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQ0ZTA4NGEyODg0MmZiYzU2Mjg5Mzc2MWQ3MWU0Yzc0Mjc0
ZWJiMTguLjE4OWYyNmIwOThiNzM2MWRjZjhlOWQ2NGUzNTllNzVmZDljMDk3MjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5jcHAKQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIEZ1bmN0aW9uPHZv
CiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RJbnRlcmNlcHRlZChyZXF1ZXN0SWQs
IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci5yZXF1ZXN0KCkpKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYm
IGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1fZW5hYmxlZCk7CiAgICAgQVNTRVJUKG1faW50ZXJj
ZXB0aW9uRW5hYmxlZCk7CkBAIC0xMjQzLDcgKzEyNDMsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShj
b25zdAogICAgICAgICBvdmVycmlkZVJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVh
ZGVyTmFtZTo6Q29udGVudFR5cGUsIG92ZXJyaWRlUmVzcG9uc2UubWltZVR5cGUoKSk7CiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhOworICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGE7CiAgICAgaWYgKGJhc2U2NEVuY29k
ZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVudCk7CiAgICAg
ICAgIGlmICghYnVmZmVyKQpAQCAtMTI3MSw3ICsxMjcxLDcgQEAgUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJl
c3BvbnMKICAgICBpZiAobG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJsZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBh
bHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgaWYgKGJh
c2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVu
dCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTQwNywxMiArMTQwNywxMiBAQCBib29sIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgU3RyaQogICAgICAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91
bGRUcmVhdEFzVGV4dChyZXNvdXJjZS5taW1lVHlwZSgpKSkgewogICAgICAgICAgICAgYXV0byBk
ZWNvZGVyID0gSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNvdXJj
ZS5taW1lVHlwZSgpLCByZXNvdXJjZS5yZXNwb25zZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7CiAg
ICAgICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICAgICAgKnJlc3VsdCA9
IGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CisgICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSB0cnVlOwot
ICAgICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IDhmNmZiY2MyOTNhZWJm
OGI5ZDVjOTQ1ZDI4MjlhMTUyN2I3NGJjN2YuLjZiY2Q4N2RkY2Q4YjA0NDEzMDhkMWQwMWVjYTZi
MGU2ZGExNDEzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaApAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoK
ICAgICBib29sIHdpbGxJbnRlcmNlcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgYm9v
bCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIGJv
b2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAg
IHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICB2b2lkIGludGVyY2VwdFJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYpOwogICAgIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChS
ZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYp
OwogCiAgICAgdm9pZCBzZWFyY2hPdGhlclJlcXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxh
ckV4cHJlc3Npb24mLCBSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdl
OjpTZWFyY2hSZXN1bHQ+PiYpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHByaXZhdGU6CiAgICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSk7CiAgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAgUGVuZGluZ0lu
dGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIG9yaWdpbmFsUmVzcG9uc2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgUGVuZGluZ0ludGVy
Y2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIG9yaWdpbmFsUmVzcG9uc2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgICAgICA6
IG1fb3JpZ2luYWxSZXNwb25zZShvcmlnaW5hbFJlc3BvbnNlKQogICAgICAgICAgICAgLCBtX2Nv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICB7IH0K
QEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmVzcG9uZChtX29yaWdp
bmFsUmVzcG9uc2UsIG51bGxwdHIpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCByZXNwb25k
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhKQorICAgICAgICB2b2lkIHJlc3BvbmQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhKQogICAgICAgICB7CiAgICAg
ICAgICAgICBBU1NFUlQoIW1fcmVzcG9uZGVkKTsKICAgICAgICAgICAgIGlmIChtX3Jlc3BvbmRl
ZCkKQEAgLTIxNSw3ICsyMTUsNyBAQCBwcml2YXRlOgogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
UmVzb3VyY2VSZXNwb25zZSBtX29yaWdpbmFsUmVzcG9uc2U7Ci0gICAgICAgIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
KT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4g
bV9jb21wbGV0aW9uSGFuZGxlcjsKICAgICAgICAgYm9vbCBtX3Jlc3BvbmRlZCB7IGZhbHNlIH07
CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDNkYWZlNjQzN2RmMTIxMDQwNWZlZmJmMzc1Nzg1
ZmVjZDVlYWM0NzIuLjFiNjQ2YWEyMTczYWI1NGEzZjFhYmRjYjUwMjA0YWRlOThjMDczYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAKQEAgLTEwMCwxNSArMTAwLDE1IEBAIHN0YXRpYyBib29sIGRlY29kZUJ1ZmZl
cihjb25zdCB1aW50OF90KiBidWZmZXIsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4
CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBm
cmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KS0+bWFpblJlc291cmNlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNl
RGF0YSgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29k
ZSwgcmVzdWx0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5k
b2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCi1i
b29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdp
dGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQorYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29k
ZSwgU3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1
ZmZlci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0
RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBkYXRh
Q29udGVudChidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxw
dHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJh
c2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFD
b250ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYg
dGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkK
QEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250
ZW50KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEZyYQogICAgIGlmICghbG9h
ZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBib29sIHN1
Y2Nlc3MgPSBmYWxzZTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1
cmwsIGxvYWRlci0+dXJsKCkpKSB7CiAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuaAppbmRleCBiNTFhZGRiMWJkOGYyY2NlNjk1NjA3OTljZDFkOTUyZDJkZTQyODM4Li4zZDVl
NTY2ZGJlMGM1ZWMxMWQ5ZThkZjY3ZmNmMGE3MDk4OGEyZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTQ5LDcg
KzQ5LDcgQEAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsK
IGNsYXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJPYmplY3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQg
ZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpQYWdl
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNw
ZWN0b3JQYWdlQWdlbnQpOwpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIE90aGVy
UmVzb3VyY2UsCiAgICAgfTsKIAotICAgIHN0YXRpYyBib29sIHNoYXJlZEJ1ZmZlckNvbnRlbnQo
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBi
b29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKKyAgICBzdGF0aWMgYm9vbCBz
aGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5n
KiByZXN1bHQpOwogICAgIHN0YXRpYyBWZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPiBjYWNoZWRSZXNv
dXJjZXNGb3JGcmFtZShGcmFtZSopOwogICAgIHN0YXRpYyB2b2lkIHJlc291cmNlQ29udGVudChJ
bnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIEZyYW1lKiwgY29uc3QgVVJMJiwgU3Ry
aW5nKiByZXN1bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwogICAgIHN0YXRpYyBTdHJpbmcgc291
cmNlTWFwVVJMRm9yUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db250ZW50RmlsdGVyLmNwcAppbmRleCBiNGU2YTNhNTNiNGMwYzBkYTFjMzE3MmRkNDJjYWU2
YThjZDIxZjdhLi42YWU1MjY1OTdjZDI4NjMxYmU3OTUwZmMzMzUzNmY4ZjM0N2Q3YWY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAg
dm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSkKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNT
RVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5
OjpCdWZmZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5y
ZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29u
dGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgp
KTsKKyAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVz
b3VyY2VCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNp
emUoKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKQEAgLTI3Niw3
ICsyNzYsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1
cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgQVNTRVJUKHdpbGxIYW5kbGVQ
cm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiByZXBsYWNlbWVudERhdGEgeyBtX2Jsb2NraW5nQ29udGVudEZpbHRlci0+cmVwbGFjZW1lbnRE
YXRhKCkgfTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnRE
YXRhIHsgbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXItPnJlcGxhY2VtZW50RGF0YSgpIH07CiAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7IFVSTCgpLCAidGV4dC9odG1sIl9zLCBzdGF0aWNf
Y2FzdDxsb25nIGxvbmc+KHJlcGxhY2VtZW50RGF0YS0+c2l6ZSgpKSwgIlVURi04Il9zIH07CiAg
ICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEgeyBXVEZNb3ZlKHJlcGxhY2VtZW50RGF0
YSksIGVycm9yLmZhaWxpbmdVUkwoKSwgcmVzcG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9u
SGlzdG9yeVZpc2liaWxpdHk6OkhpZGRlbiB9OwogICAgIFNldEZvclNjb3BlPGJvb2w+IGxvYWRp
bmdCbG9ja2VkUGFnZSB7IG1faXNMb2FkaW5nQmxvY2tlZFBhZ2UsIHRydWUgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGMzZDg0NTBmNzFjMmMzNzNkMmFm
MWNjY2ZiMjE1YWQ4MWJmODBkMGIuLjNiOTBlZjRjNTgyN2U2YzBiNDliMzQ2NTZiM2NkNzFhOGVk
YTk2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMjEx
LDcgKzIxMSw3IEBAIERvY3VtZW50TG9hZGVyOjp+RG9jdW1lbnRMb2FkZXIoKQogI2VuZGlmCiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VEYXRh
KCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBEb2N1bWVudExvYWRlcjo6
bWFpblJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm4gbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPmNvcHko
KTsKQEAgLTE2MDgsMTEgKzE2MDgsMTEgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVh
dGVBcmNoaXZlKCkKICAgICBhZGRBbGxBcmNoaXZlUmVzb3VyY2VzKCptX2FyY2hpdmUpOwogICAg
IEFTU0VSVChtX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpKTsKICAgICBhdXRvJiBtYWluUmVzb3Vy
Y2UgPSAqbV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKTsKLSAgICBtX3BhcnNlZEFyY2hpdmVEYXRh
ID0gJm1haW5SZXNvdXJjZS5kYXRhKCk7CisgICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9IG1haW5S
ZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX3dyaXRlci5zZXRNSU1FVHlw
ZShtYWluUmVzb3VyY2UubWltZVR5cGUoKSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1l
bnQoKSk7Ci0gICAgY29tbWl0RGF0YShtYWluUmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJl
c291cmNlLmRhdGEoKS5zaXplKCkpOworICAgIGNvbW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0
YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CiAgICAgcmV0dXJuIHRydWU7
CiAjZW5kaWYKIH0KQEAgLTE2NzEsNyArMTY3MSw3IEBAIEFyY2hpdmVSZXNvdXJjZSogRG9jdW1l
bnRMb2FkZXI6OmFyY2hpdmVSZXNvdXJjZUZvclVSTChjb25zdCBVUkwmIHVybCkgY29uc3QKIAog
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZSgpIGNv
bnN0CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IG1haW5SZXNvdXJjZURhdGEo
KTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IG1haW5SZXNvdXJj
ZURhdGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwogICAgIGF1dG8mIHJlc3BvbnNlID0gdGhpcy0+cmVzcG9uc2UoKTsKQEAgLTIyNTUs
OCArMjI1NSw4IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRp
cGFydENvbnRlbnQoKQogCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7CiAg
ICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJj
ZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEt
PmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CisgICAgY29tbWl0
TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VEYXRh
LT5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKCkK
QEAgLTIyOTIsNyArMjI5Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRp
bmcoKQogICAgIG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmdldExvYWREZWNpc2lvbkZvcklj
b25zKGljb25EZWNpc2lvbnMpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRl
Y2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0
byBpY29uID0gbV9pY29uc1BlbmRpbmdMb2FkRGVjaXNpb24udGFrZShsb2FkSWRlbnRpZmllcik7
CiAKQEAgLTIzMTMsNyArMjMxMyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWRE
ZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50CiAgICAgcmF3
SWNvbkxvYWRlci0+c3RhcnRMb2FkaW5nKCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmZp
bmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYgbG9hZGVyLCBTaGFyZWRCdWZmZXIqIGJ1ZmZl
cikKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYg
bG9hZGVyLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgLy8gSWYgdGhl
IERvY3VtZW50TG9hZGVyIGhhcyBkZXRhY2hlZCBmcm9tIGl0cyBmcmFtZSwgYWxsIGljb24gbG9h
ZHMgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNhbmNlbGxlZC4KICAgICBBU1NFUlQobV9mcmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGZiZjU0NWM0NjBl
NGU0ODlkODdiMjVjMGU4NWVjY2NhNGNiZjNjODcuLjMzOTg3M2Q1ZDNmYjliYjMwMDQ5OGNkNmYz
N2NiZjY1Yjc4YWY1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBA
IC03NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBD
YWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29u
dGVudEZpbHRlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBDdXN0b21IZWFkZXJGaWVs
ZHM7CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsKQEAgLTgzLDcgKzg0LDcgQEAgY2xh
c3MgSWNvbkxvYWRlcjsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBQcmV2aWV3Q29udmVydGVyOwogY2xh
c3MgUmVzb3VyY2VMb2FkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogY2xhc3MgU1dDbGllbnRDb25uZWN0aW9uOwogY2xhc3MgU3VicmVzb3Vy
Y2VMb2FkZXI7CiBjbGFzcyBTdWJzdGl0dXRlUmVzb3VyY2U7CkBAIC0xNzEsNyArMTcyLDcgQEAg
cHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyKCkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3VicmVzb3VyY2VMb2FkZXIqIG1haW5SZXNvdXJj
ZUxvYWRlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1haW5SZXNvdXJjZURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIAogICAg
IERvY3VtZW50V3JpdGVyJiB3cml0ZXIoKSBjb25zdCB7IHJldHVybiBtX3dyaXRlcjsgfQogCkBA
IC0zOTIsOCArMzkzLDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0SWNvbkxv
YWRpbmcoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvcklj
b24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYpOwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNv
bihJY29uTG9hZGVyJiwgU2hhcmVkQnVmZmVyKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
aWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4m
Jik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKik7CiAKICAgICBjb25zdCBWZWN0b3I8TGlua0ljb24+JiBsaW5rSWNvbnMo
KSBjb25zdCB7IHJldHVybiBtX2xpbmtJY29uczsgfQogCkBAIC02MjEsNyArNjIyLDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgeyBmYWxzZSB9Owog
CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgTGlua0ljb24+IG1faWNvbnNQZW5kaW5nTG9hZERlY2lz
aW9uOwotICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPEljb25Mb2FkZXI+LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciopPj4gbV9pY29uTG9hZGVyczsKKyAgICBIYXNoTWFw
PHN0ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKik+PiBtX2ljb25Mb2FkZXJzOwogICAgIFZlY3RvcjxMaW5rSWNv
bj4gbV9saW5rSWNvbnM7CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGUxM2UyODZlMTRmNGZlOGZkN2RmOTBhMGUx
NTFmMDkzNDE4ZGRkYjEuLjA4YTBhZTE5YTM3OTg0NmYxNTc1NjRjMmQwYzgzMmIyNzQ4MzYwMzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNz
IENhY2hlZEZyYW1lQmFzZTsKIGNsYXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJj
ZTsKIGNsYXNzIENocm9tZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVdyYXBwZXJX
b3JsZDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBAIC03Niw3ICs3
Nyw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVudW0gY2xhc3MgQ2FjaGVQ
b2xpY3kgOiB1aW50OF90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAppbmRleCA0ZmQ2MzdhOTAxNGE1ZDQxYTIyNmVlNDU5MTdiNmIzZTlhNzkwZWJiLi5lZTlmM2Qw
Yzk4NGQ0NTVjYmI5MWI0NjBjMWJjMTI4OThkMTIzNjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtOTgsNyArOTgsNyBAQCBjbGFzcyBSZXNvdXJjZUhh
bmRsZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBj
bGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNzIFdpZGdldDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAppbmRleCBhZWY2NjhiZDYzZWQ1ZmNk
NDVlNjFlOWQxZjEwN2NmYjZhZWYyNjRiLi4yOWQyZTNmNDYxNDBhYWE1MTE2MGU2YTI4NTYyZjM3
MGUzNzFlYjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRl
Z3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtNTEs
NyArNTEsNyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJyZXNv
dXJjZUxvYWRlcjsKIAogc3RydWN0IEZldGNoT3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCmluZGV4IDYzMzc1NTk2
MzIwMDE0NjM4Mjg5ZTI4MjYwNGM1NWIwYWY0NDUzMTMuLjYwNDNhYzliZTI2N2VhNGZiYzcxZTEx
MThiOTA3OTE1NWUzOTE1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGUKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0
aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZv
aWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5
cGUpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1
ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5
cGUpCit2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIFJlZjxOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKaW5kZXggNDhiYjIxNTNjOTNmMmRj
NzU0ZTIwNzMyMjUyYzA1MDljZjcwNGE0MS4uYjUxNzRlZGM5NGI5OTIzOTAyMDVmMGZhZDQ1MmVh
NWFjMzg3ODkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYgY2FsbGJhY2spIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5
Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFy
ZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBl
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBl
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBvdmVycmlkZTsKIApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbENh
bmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlKTsKIAogICAgIHZvaWQgbm90aWZ5RG9uZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCmluZGV4IGM2Mjc3
Njg1OGE2ZGM1YWZmZDM2ZGM5ZTc4NWM4YmQyNDcyYmI3NGQuLmQ5NGI3MDAwNzQxY2Q5MTJiOTE3
M2UyYjM3NDZkNGRhOGIzNjhhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgUmVz
b3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhSZXNv
dXJjZUNyeXB0b2dyYXBoaWNEaWcKICAgICByZXR1cm4geyBhbGdvcml0aG0sIGNyeXB0b0RpZ2Vz
dC0+Y29tcHV0ZUhhc2goKSB9OwogfQogCi1SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5
cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdl
c3Q6OkFsZ29yaXRobSBhbGdvcml0aG0sIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorUmVz
b3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZm
ZXIoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtLCBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgYXV0byBjcnlwdG9EaWdl
c3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGFs
Z29yaXRobSkpOwogICAgIGlmIChidWZmZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaAppbmRleCBhZWEzZGM1N2M4NzgzMTMw
MTNhNWIxNmM5MzliNzc0ZWQ0ODQzMjRjLi44M2I4NjEzY2ZkYTIzMjlhZTMwYmJmNmFiYzE0Yjk5
ZDQ0MjM3YjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlw
dG9ncmFwaGljRGlnZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5
cHRvZ3JhcGhpY0RpZ2VzdC5oCkBAIC0zNCw3ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENhY2hlZFJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dCB7CiAgICAgZW51bSBjbGFzcyBBbGdvcml0aG0gewpAQCAtNzUsNyArNzUsNyBAQCBzdGQ6Om9w
dGlvbmFsPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlRW5jb2RlZENy
eXB0b2dyYXBoaWNEaWdlcwogCiBzdGQ6Om9wdGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdD4gZGVjb2RlRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChjb25zdCBFbmNv
ZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Jik7CiAKLVJlc291cmNlQ3J5cHRvZ3JhcGhp
Y0RpZ2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBjb25zdCBTaGFyZWRCdWZmZXIqKTsKK1Jlc291cmNl
Q3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJl
c291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKik7CiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0Rp
Z2VzdEZvckJ5dGVzKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBjb25z
dCB2b2lkKiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGFhODViYjRkM2NhODcxNDViYjdhODZmNjQ2NjhlNDk1
MTc2YWMyMzUuLmRmMTM5NTg4ZThkNTI1MmIzZWVjNjE5M2FlNjFhYTI0Nzg2YjIxOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNzYsNiArNzYsNyBAQCBE
RUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFJlc291cmNlTG9hZGVyKTsKIFJl
c291cmNlTG9hZGVyOjpSZXNvdXJjZUxvYWRlcihGcmFtZSYgZnJhbWUsIFJlc291cmNlTG9hZGVy
T3B0aW9ucyBvcHRpb25zKQogICAgIDogbV9mcmFtZSB7ICZmcmFtZSB9CiAgICAgLCBtX2RvY3Vt
ZW50TG9hZGVyIHsgZnJhbWUubG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSB9CisgICAg
LCBtX3Jlc291cmNlRGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSB9
CiAgICAgLCBtX2RlZmVyc0xvYWRpbmcgeyBvcHRpb25zLmRlZmVyc0xvYWRpbmdQb2xpY3kgPT0g
RGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nICYmIGZyYW1lLnBhZ2UoKS0+
ZGVmZXJzTG9hZGluZygpIH0KICAgICAsIG1fb3B0aW9ucyB7IG9wdGlvbnMgfQogewpAQCAtMTE4
LDcgKzExOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMoKQogCiAg
ICAgbV9pZGVudGlmaWVyID0geyB9OwogCi0gICAgbV9yZXNvdXJjZURhdGEgPSBudWxscHRyOwor
ICAgIG1fcmVzb3VyY2VEYXRhLT5yZXNldCgpOwogICAgIG1fZGVmZXJyZWRSZXF1ZXN0ID0gUmVz
b3VyY2VSZXF1ZXN0KCk7CiB9CiAKQEAgLTE4OSw3ICsxOTAsNyBAQCB2b2lkIFJlc291cmNlTG9h
ZGVyOjppbml0KFJlc291cmNlUmVxdWVzdCYmIGNsaWVudFJlcXVlc3QsIENvbXBsZXRpb25IYW5k
bGVyPHZvaQogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkZWxpdmVyUmVzcG9u
c2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRlbGl2ZXJSZXNwb25zZUFu
ZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBkaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9u
c2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92
ZShidWZmZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUo
KSkKQEAgLTMxOCw3ICszMTksNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVy
aW5nUG9saWN5KERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbAogCiAgICAgLy8g
UmVzZXQgYW55IGFscmVhZHkgYnVmZmVyZWQgZGF0YQogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9s
aWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKLSAgICAgICAgbV9y
ZXNvdXJjZURhdGEgPSBudWxscHRyOworICAgICAgICBtX3Jlc291cmNlRGF0YS0+cmVzZXQoKTsK
IH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNl
KCkKQEAgLTMyOSwyOSArMzMwLDI5IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hU
b1N1YnN0aXR1dGVSZXNvdXJjZSgpCiAgICAgICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKIH0KIAot
dm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCwgU2hhcmVkQnVmZmVyKiBidWZmZXIsIERhdGFQYXlsb2FkVHlwZSBk
YXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBidWZmZXIsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgaWYgKG1f
b3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90
QnVmZmVyRGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX3Jlc291cmNlRGF0YSB8
fCBkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKSB7Ci0gICAgICAg
IGlmIChidWZmZXIpCi0gICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IGJ1ZmZlcjsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbV9yZXNvdXJjZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLCBsZW5ndGgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAorICAgIGlmIChk
YXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKQorICAgICAgICBtX3Jl
c291cmNlRGF0YS0+cmVzZXQoKTsKKwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIG1fcmVzb3Vy
Y2VEYXRhLT5hcHBlbmQoKmJ1ZmZlcik7CiAgICAgZWxzZQogICAgICAgICBtX3Jlc291cmNlRGF0
YS0+YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAKK2NvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBt
X3Jlc291cmNlRGF0YS0+Z2V0KCkuZ2V0KCk7Cit9CisKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmNs
ZWFyUmVzb3VyY2VEYXRhKCkKIHsKLSAgICBpZiAobV9yZXNvdXJjZURhdGEpCi0gICAgICAgIG1f
cmVzb3VyY2VEYXRhLT5jbGVhcigpOworICAgIGlmICghbV9yZXNvdXJjZURhdGEtPmlzTnVsbCgp
KQorICAgICAgICBtX3Jlc291cmNlRGF0YS0+ZW1wdHkoKTsKIH0KIAogYm9vbCBSZXNvdXJjZUxv
YWRlcjo6aXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0CkBAIC01NTEsMTQgKzU1MiwxNCBAQCB2
b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgsIGxvbmcgbAogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwg
bGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFM
ZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5n
dGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVu
Y29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewotICAg
IC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEgU2hhcmVk
QnVmZmVyLgorICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGdldCBkYXRhK2xlbmd0aCAq
T1IqIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KICAgICBBU1NFUlQoIWJ1ZmZlciB8fCAoIWRh
dGEgJiYgIWxlbmd0aCkpOwogCiAgICAgLy8gUHJvdGVjdCB0aGlzIGluIHRoaXMgZGVsZWdhdGUg
bWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvCkBAIC01NzEsNyAr
NTcyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgKICAgICAvLyBIb3dldmVyLCB3aXRoIHRv
ZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4g
aW4gcHJhY3RpY2UuCiAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2Fs
IGZpbGUuCiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJh
Y2tQb2xpY3k6OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIo
KS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRhdGEo
KSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxp
bnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVy
KCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGlj
X2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRN
ZXRyaWNzKQpAQCAtNzM1LDcgKzczNiw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduCiAgICAg
ZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRCeXRlcyk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVz
b3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhh
bmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWRE
YXRhTGVuZ3RoKQogewogICAgIGRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5oCmluZGV4IDRmZDJiZjBiYmIzYjFiZDIxNTQ1ZGI1MmMyZTFjYTY0ZWU0
MmI5MTcuLjU0YjFiODY2ZGY4OTZhODRiNGNhMjk3ZWU0NzZkNmQwYjY2MWZkZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAt
NTUsNiArNTYsOCBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyOwogY2xhc3MgTGVn
YWN5UHJldmlld0xvYWRlcjsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBERUNMQVJF
X0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNvdXJjZUxvYWRlcik7CiBjbGFzcyBS
ZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZXNvdXJjZUxvYWRlcj4sIHB1
YmxpYyBSZWZDb3VudGVkPFJlc291cmNlTG9hZGVyPiwgcHJvdGVjdGVkIFJlc291cmNlSGFuZGxl
Q2xpZW50IHsKQEAgLTY2LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGlu
aXQoUmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwog
Ci0gICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRlbGl2ZXJSZXNwb25zZUFuZERh
dGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0
TG9hZGluZygpCkBAIC05OCw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJl
bGVhc2VSZXNvdXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3Vy
Y2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZURhdGEuZ2V0KCk7IH0KKyAgICBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICB2b2lk
IGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzU3VicmVzb3Vy
Y2VMb2FkZXIoKSBjb25zdDsKQEAgLTEwNyw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVk
IGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKIApAQCAtMTY2LDcgKzE2OSw3IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wg
d2FzQ2FuY2VsbGVkKCkgY29uc3QgeyByZXR1cm4gbV9jYW5jZWxsYXRpb25TdGF0dXMgPj0gQ2Fu
Y2VsbGVkOyB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCosIHVuc2lnbmVkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAg
ICAKICAgICB2b2lkIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9s
aWN5KSB7IG1fb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IHJlZmVycmVyUG9saWN5OyB9CiAgICAg
UmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMu
cmVmZXJyZXJQb2xpY3k7IH0KQEAgLTE5MSw3ICsxOTQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogCi0gICAgdm9pZCBh
ZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBTaGFyZWRCdWZmZXIqLCBE
YXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgYWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3Qq
LCB1bnNpZ25lZCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIERhdGFQYXlsb2FkVHlwZSk7CiAg
ICAgdm9pZCBsb2FkRGF0YVVSTCgpOwogICAgIHZvaWQgZmluaXNoTmV0d29ya0xvYWQoKTsKIApA
QCAtMjAyLDcgKzIwNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VB
c3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJl
c291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5z
aWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3Vy
Y2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRh
TGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZh
aWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKikgb3ZlcnJpZGU7CkBAIC0yMjcsNyArMjMw
LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAgUmVz
b3VyY2VSZXF1ZXN0IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBCZWZvcmUgcmVkaXJlY3RzLgotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcmVzb3VyY2VEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPiBtX3Jlc291cmNlRGF0YTsKICAgICAKICAgICBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNlZmJkZjlkYTE3ODk5N2VkY2I5ZjM1NDRmNDg4NGI2
MGE2ZWZlLi4zN2QwYmI4MjFhYmQ4NmE5YjU2MDZlMTI3ZWZjOTQxMmE1MWJiMWE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTUzMCw3ICs1MzAs
NyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbgogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
ZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBl
KTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsK
ICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBpZiAoYXV0byBwcmV2aWV3TG9hZGVyID0gbV9wcmV2
aWV3TG9hZGVyLmdldCgpKSB7CkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBs
b25nIGUKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVm
ZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgU3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQg
U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9h
ZFR5cGUpCiB7CiAgICAgQVNTRVJUKG1fcmVzb3VyY2UpOwogCkBAIC01NjEsNyArNTYxLDcgQEAg
dm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VEYXRhID0g
dGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVCdWZm
ZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2Ut
PnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRh
KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVy
ID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAppbmRleCAzNzIzYjZiOWFiOWZkZGFhYTU1NzRiZmIw
ZTZmMzhjZWQ3YWVmYjc1Li44MzJjOWYwZTczZDM4NDY0YTc5NWY0MDM4NjBmNzljMzRlNzNiYzdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApAQCAtNzQsNyAr
NzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25n
IGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQg
d2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CkBAIC05Miw3ICs5Miw3
IEBAIHByaXZhdGU6CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiBjaGVja1Jlc3BvbnNlQ3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBFeHBl
Y3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVkaXJlY3Rpb25Dcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcmV2aW91c1JlcXVlc3QsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpOwogCi0gICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlKTsKIAogICAgIHZvaWQgbm90aWZ5RG9uZShMb2FkQ29tcGxldGlvblR5
cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCmluZGV4IGY2NjI5MmUz
MWNiZWI0MjY0MzBhODMyYWRlZjQyOTkxY2I1NzQzNmUuLmE4YTQ5YjQ3ZjkyNzM0Mjc0YmE0Y2Vh
YmMxNzA3ZmVmYTdiNjY0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5o
CkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAg
ICB9CiAKLSAgICAgICAgU3Vic3RpdHV0ZURhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBjb250
ZW50LCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9y
eSkKKyAgICAgICAgU3Vic3RpdHV0ZURhdGEoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgY29udGVudCwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNob3VsZFJldmVhbFRvU2Vzc2lv
bkhpc3RvcnkpCiAgICAgICAgICAgICA6IG1fY29udGVudChXVEZNb3ZlKGNvbnRlbnQpKQogICAg
ICAgICAgICAgLCBtX2ZhaWxpbmdVUkwoZmFpbGluZ1VSTCkKICAgICAgICAgICAgICwgbV9yZXNw
b25zZShyZXNwb25zZSkKQEAgLTU0LDE0ICs1NCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudCAhPSBudWxscHRy
OyB9CiAgICAgICAgIGJvb2wgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSA9PSBTZXNzaW9uSGlzdG9yeVZp
c2liaWxpdHk6OlZpc2libGU7IH0KIAotICAgICAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGNvbnRl
bnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQuZ2V0KCk7IH0KKyAgICAgICAgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogY29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudC5n
ZXQoKTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNwb25zZS5taW1lVHlwZSgpOyB9CiAgICAgICAgIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCk7IH0KICAg
ICAgICAgY29uc3QgVVJMJiBmYWlsaW5nVVJMKCkgY29uc3QgeyByZXR1cm4gbV9mYWlsaW5nVVJM
OyB9CiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNwb25zZTsgfQogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBtX2NvbnRlbnQ7CiAgICAgICAgIFVSTCBtX2ZhaWxpbmdVUkw7CiAgICAgICAg
IFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICAgICAgU2Vzc2lvbkhpc3RvcnlWaXNp
YmlsaXR5IG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSB7IFNlc3Npb25IaXN0b3J5Vmlz
aWJpbGl0eTo6SGlkZGVuIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
c3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291
cmNlLmgKaW5kZXggNTk2NjRiNTg1NGY4NWIwMmNkZjM0OTAyMGEwZWZmMTNlYjc4ODg3OS4uY2Yy
ZGUwYzYyZDk1ZjMzMjViNDJiNDZlMjQwMzc3NDQxMDc0MmEwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAtMzcsMTIgKzM3LDE0IEBAIHB1YmxpYzoK
IAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7
IH0KLSAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJl
bmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihtX2RhdGEpOyB9CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9CisgICAgdm9pZCBhcHBl
bmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRhdGEs
IGxlbmd0aCk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCi0gICAg
dmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVs
aXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEtPmNvcHkoKSk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxp
dmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHByb3Rl
Y3RlZDoKLSAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNl
JiYgcmVzcG9uc2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKKyAgICBTdWJzdGl0dXRlUmVz
b3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiAgICAgICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQog
ICAgICAgICAsIG1fcmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpCiAgICAgICAgICwgbV9kYXRh
KFdURk1vdmUoZGF0YSkpCkBAIC01Miw3ICs1NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAg
ICAgVVJMIG1fdXJsOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWY8
U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDg5ZjNiMGYx
ZGMzOWQ0MGE1NjM4NzhhZTU1Zjc2YzY3MGE3MTUwOTEuLjAzNmVmZDIwZTQ5NjMwMGNmOGM5ZTdl
NzkwMzE3ZTAxZGU1YmFmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAg
dm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAg
ICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRp
b25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9u
c2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFu
aWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNl
QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7
CiAgICAgaWYgKCFtYW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdy
aXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVh
c29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNl
ZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApp
bmRleCA2MDMyODE4ODgzNzVmNDRhNjI0YjNlM2IzYWFmZTA2YTM2ODkyZWU2Li41MTk3OGY0MTIz
ODc0ZGM1NjYwZWZmNDcwNjU5NzA3ZDRlNWQ4NWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1NSwx
MCArMjU1LDggQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0
IFN0cmluZyYgcGF0aCkKIAogc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAg
ICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNo
YXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5z
dXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KICAgICBpZiAocmVzb3VyY2Uu
cGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5jb3B5KCk7
CisgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0
aCgpKTsKIH0KIApAQCAtMjkwLDkgKzI4OCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6
Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAg
ICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgICAgIGlmIChn
ZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tSZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJjZSkpIHsK
ICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAgICAgICAg
ICAvLyBGSVhNRTogQ2xpZW50cyBwcm9hYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hh
cmVkQnVmZmVyLgotICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNl
IHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCi0gICAgICAgICAg
ICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jb3B5KCk7CisgICAgICAgICAgICBkYXRhID0gcmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuaAppbmRleCA1MmNkMTY0MDNhMTczNmE3MTg2NTY3NzI0ODYxMWUwOGY2NjNiMjlmLi5iOTYz
NTZlNzg1NjEzODk1NmFlNGMwNTk4MzE3MGNkZjcyMzY3MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtNDIs
NiArNDIsNyBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNo
ZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xhc3MgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNhdGlv
bkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcgKzUw
LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9z
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMwMTQ3MWYzMDg1ZGVmOGU0
MWRjNWQwY2E5ZDYwOWEuLjJiYjNmZTc1Yjk5NzdlODMzMjJhZTI1ODBmNzIxMmVlNWJmMjE2MTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBwYXRoKQorUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQoIXVy
bC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC00MCw3ICs0
MCw3IEBAIFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCB7IHVybCB9LCBXVEZNb3ZlKHJlc291cmNlUmVz
cG9uc2UpLCB0eXBlLCBidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgcGF0aCkpOwogfQogCi1BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmws
IFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCitBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIDogU3Vic3RpdHV0ZVJlc291cmNlKFdURk1v
dmUodXJsKSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX3R5cGUo
dHlwZSkKICAgICAsIG1fc3RvcmFnZUlEKDApCkBAIC01MSw3ICs1MSw3IEBAIEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3Vy
Y2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKFJl
c291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERh
dGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5KCkgOiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBsb2FkZXIuZGVs
aXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUo
dW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgKaW5kZXggODhjOTRkZTFhNzc0MTA0Njlj
OTMxYTQyYTQ3OWIxZTY3NzdhNzAyZS4uYzI4OGU3MDM2YzY3NjJhZDQ4NzZiYTg4MTQ2OWE3NWQy
MjM3ZTFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIEZhbGxiYWNrID0gMSA8PCA0CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8QXBwbGlj
YXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUoY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJpbmcoKSk7CisgICAgc3RhdGlj
IFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBT
dHJpbmcoKSk7CiAKICAgICB1bnNpZ25lZCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9
CiAgICAgdm9pZCBhZGRUeXBlKHVuc2lnbmVkIHR5cGUpOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKICAgICAKIHByaXZhdGU6Ci0gICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
KFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
KFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHBhdGgpOwogCiAgICAgdm9pZCBkZWxpdmVy
KFJlc291cmNlTG9hZGVyJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggMWM1MDg0N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2Iy
ZmI2YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAg
IG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7
CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwog
fQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYm
KT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUz
YzQ5OTAyNDBhNTIwYmQzMGU2MzY1OTUuLjhjZjA1Y2NlMTg4MDEyOGRlNTliZTcwYTk5ODM2ZjVh
NzQ1YjZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSog
cmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgYXV0byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5w
cmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0
aCkgVkFMVUVTICg/LCA/KSJfcyk7CiAgICAgaWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgCiAKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNv
dXJjZS0+cGF0aCgpLmlzRW1wdHkoKSkKQEAgLTgxNSw3ICs4MTQsNyBAQCBib29sIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNl
LCB1bnNpZ25lZAogICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAg
ICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAg
ICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNv
bnRpZ3VvdXMoKS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+
ZXhlY3V0ZUNvbW1hbmQoKSkgewpAQCAtODczLDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwg
dW5zaWduZWQKICAgICAKICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQu
dmFsdWUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBz
dWNjZXNzZnVsbHkgd3JpdGUgdGhlIHJlc291cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAg
ICAvLyByZWxlYXNlIHRoZSByZXNvdXJjZSdzIGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxs
eSBsYXJnZSBhbW91bnQKICAgICAvLyBvZiBtZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0Vt
cHR5KCkpCi0gICAgICAgIHJlc291cmNlLT5kYXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3Vy
Y2UtPmNsZWFyKCk7CiAKICAgICByZXNvdXJjZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwog
ICAgIHJldHVybiB0cnVlOwpAQCAtMTI3Myw3ICsxMjcyLDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6c2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNo
ZVJlc28KICAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBl
LCAiYXVkaW8vIikgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAi
dmlkZW8vIik7CiB9CiAgICAgCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURh
dGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5LCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbikK
K2Jvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGly
ZWN0b3J5KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgZGlyZWN0
b3J5LCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbikKIHsKICAgICBT
dHJpbmcgZnVsbFBhdGg7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCmluZGV4IDlhOTUzMDA4NzY2YTg4
ODU1NjFiMzQ4ODg5YjhjZWRhMmIyZWIzMzguLjQxMDJhMTgwOGI0NTU1N2I2NDVlMzZlN2U2ODFm
YzRjNmQyMDdjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3Mg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogdGVtcGxhdGU8dHlw
ZW5hbWU+IGNsYXNzIFN0b3JhZ2VJREpvdXJuYWw7CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U+IHsKQEAg
LTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZW5zdXJlT3JpZ2luUmVjb3JkKGNv
bnN0IFNlY3VyaXR5T3JpZ2luKik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkU3RvcmVSZXNvdXJj
ZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKik7CiAgICAgdm9pZCBkZWxldGVU
YWJsZXMoKTsKLSAgICBib29sIHdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pOworICAgIGJvb2wgd3JpdGVEYXRhVG9VbmlxdWVG
aWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24p
OwogCiAgICAgdm9pZCBsb2FkTWFuaWZlc3RIb3N0SGFzaGVzKCk7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKaW5kZXggNmRlODBj
MTBhYzdkMjVjZjM0NjlmNmRlZjBmYWY3MjQxZjU5NjQyOC4uNGVmOWNkNjZiZDA4OGI3NGMwNDZj
MDY5MGQxZTlkM2U1ZTMzNjBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL0FyY2hpdmVGYWN0b3J5LmNwcApAQCAtNDYsMTIgKzQ2LDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotdHlwZWRlZiBSZWZQdHI8QXJjaGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rp
b24oY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJik7Cit0eXBlZGVmIFJlZlB0cjxBcmNoaXZlPiBS
YXdEYXRhQ3JlYXRpb25GdW5jdGlvbihjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbiosIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gQXJjaGl2ZU1JTUVUeXBlc01hcDsKIAogLy8gVGhlIGNy
ZWF0ZSBmdW5jdGlvbnMgaW4gdGhlIGFyY2hpdmUgY2xhc3NlcyByZXR1cm4gUmVmUHRyIHRvIGNv
bmNyZXRlIHN1YmNsYXNzZXMKIC8vIG9mIEFyY2hpdmUuIFRoaXMgYWRhcHRvciBtYWtlcyB0aGUg
ZnVuY3Rpb25zIGhhdmUgYSB1bmlmb3JtIHJldHVybiB0eXBlLgotdGVtcGxhdGU8dHlwZW5hbWUg
QXJjaGl2ZUNsYXNzPiBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGFyY2hpdmVGYWN0b3J5Q3JlYXRl
KGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3RlbXBsYXRlPHR5cGVuYW1l
IEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBhcmNoaXZlRmFjdG9yeUNyZWF0
ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IHJldHVybiBBcmNoaXZlQ2xhc3M6OmNyZWF0ZSh1cmwsIGJ1ZmZlcik7CiB9CkBAIC04Myw3ICs4
Myw3IEBAIGJvb2wgQXJjaGl2ZUZhY3Rvcnk6OmlzQXJjaGl2ZU1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuICFtaW1lVHlwZS5pc0VtcHR5KCkgJiYgYXJjaGl2ZU1J
TUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0KIAotUmVmUHRyPEFyY2hpdmU+IEFyY2hp
dmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKK1JlZlB0cjxBcmNoaXZlPiBBcmNoaXZlRmFjdG9yeTo6Y3Jl
YXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQogewogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFj
dG9yeS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaApp
bmRleCAyMWQyMzY1Y2Y4ZDlkOTAxZWZlN2FhZDU1MmJmM2RhNDA2OWZlNDBkLi41NTY0NTE1Yzll
MGQ5ZDAzM2I3OTBjNzQ3Mjg1YTI1ODUzYWJlMDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKQEAgLTM0LDEyICszNCwxMiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIEFyY2hpdmVGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBpc0FyY2hpdmVNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgUmVm
UHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpOworICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4gY3JlYXRlKGNv
bnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyS25vd25BcmNoaXZlTUlNRVR5cGVzKEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcAppbmRleCBm
YzIwZGEzZGEwMzJjYmVmNzRmMmU5Yzg0MjhhY2I0ZWUzN2JlZjIzLi4wNzM4Mzk0YTgyODcxNGFh
MGI5MGVlNzUwNzlkNDg2ZjViMGU4Njk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1pbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2Uo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK2lubGluZSBBcmNoaXZlUmVz
b3VyY2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKICAgICA6IFN1YnN0aXR1dGVSZXNvdXJjZShVUkwgeyB1cmwgfSwgUmVz
b3VyY2VSZXNwb25zZSB7IHJlc3BvbnNlIH0sIFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVU
eXBlKG1pbWVUeXBlKQogICAgICwgbV90ZXh0RW5jb2RpbmcodGV4dEVuY29kaW5nKQpAQCAtNDIs
NyArNDIsNyBAQCBpbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybAogewogfQogCi1SZWZQdHI8QXJjaGl2
ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJp
bmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQorUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291
cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiB7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU0
LDcgKzU0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVh
dGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb24KICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBcmNoaXZlUmVzb3VyY2UoZGF0YS5yZWxlYXNlTm9uTnVsbCgpLCB1cmwsIG1pbWVUeXBl
LCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwgcmVzcG9uc2UpKTsKIH0KIAotUmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CitSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGRh
dGEpLCB1cmwsIHJlc3BvbnNlLm1pbWVUeXBlKCksIHJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUo
KSwgU3RyaW5nKCksIHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKaW5kZXggMjA5ZTk3MTdhZWIwOTM2MGRiMzkyN2U2ZWZh
MWU1YmYxYzJjOTdjYS4uMDU0OGVmNzIxZWZkMjdjMDBjZTkzZDEyMjcwZWNlYzQ2YzAyYWY5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgK
QEAgLTM0LDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBcmNoaXZlUmVz
b3VyY2UgOiBwdWJsaWMgU3Vic3RpdHV0ZVJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFVSTCYsCisgICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0
ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFVSTCYsCiAgICAgICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwKICAgICAgICAgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgPSBSZXNvdXJjZVJlc3BvbnNlKCkpOwogCkBAIC00Nyw3ICs0Nyw3IEBAIHB1
YmxpYzoKICAgICBib29sIHNob3VsZElnbm9yZVdoZW5VbmFyY2hpdmluZygpIGNvbnN0IHsgcmV0
dXJuIG1fc2hvdWxkSWdub3JlV2hlblVuYXJjaGl2aW5nOyB9CiAKIHByaXZhdGU6Ci0gICAgQXJj
aGl2ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIEFyY2hpdmVSZXNvdXJjZShS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICBTdHJpbmcgbV9taW1lVHlwZTsK
ICAgICBTdHJpbmcgbV90ZXh0RW5jb2Rpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGRlN2RhZGRkYWMyMjEy
ZjZkNWUwY2MwOTFkNGU0MTY3N2EzZjAxNWQuLjcxMTUwY2JkZDg5NjllNmFmMDI4Njg0YjZiZjZj
YmMwYTUwYjJmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC05MCw3ICs5MCw3IEBAIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2Vu
dGF0aW9uKEFyCiAgICAgLy8gUmVzb3VyY2UgZGF0YSBjYW4gYmUgZW1wdHksIGJ1dCBtdXN0IGJl
IHJlcHJlc2VudGVkIGJ5IGFuIGVtcHR5IENGRGF0YVJlZgogICAgIGF1dG8mIGRhdGEgPSByZXNv
dXJjZS0+ZGF0YSgpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0Lmdl
dCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLmNyZWF0ZUNGRGF0YSgp
LmdldCgpKTsKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExl
Z2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlQ0ZEYXRhKCkuZ2V0KCkpOwogCiAgICAgLy8gUmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBudWxs
CiAgICAgaWYgKGF1dG8gY2ZVUkwgPSByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZT
dHJpbmcoKSkKQEAgLTExNyw5ICsxMTcsOSBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAg
IC8vIERvbid0IGluY2x1ZGUgdGhlIHJlc291cmNlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiByZXNv
dXJjZQogICAgIGlmICghaXNNYWluUmVzb3VyY2UpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzb3Vy
Y2VSZXNwb25zZURhdGEgPSBjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihyZXNvdXJj
ZS0+cmVzcG9uc2UoKSkpCi0gICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0
eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJj
ZVJlc3BvbnNlRGF0YS5nZXQoKSk7ICAgIAorICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtl
eSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVy
biBwcm9wZXJ0eUxpc3Q7CiB9CiAKQEAgLTIxNSwxMyArMjE1LDEzIEBAIFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKENGRGljdGlvbmFyeVJl
ZiBkaWN0aW9uCiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0g
UmVzb3VyY2UgcmVzcG9uc2UgZGF0YSBpcyBub3Qgb2YgdHlwZSBDRkRhdGEsIGNhbm5vdCBjcmVh
dGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ICAgIH0KLSAgICAgICAgCisKICAgICAgICAgYXV0byByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiA9
IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5
LCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZVZlcnNpb25LZXkpKTsKICAgICAgICAg
aWYgKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uICYmIENGR2V0VHlwZUlEKHJlc291cmNlUmVzcG9u
c2VWZXJzaW9uKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7CiAgICAgICAgICAgICBMT0coQXJj
aGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgdmVyc2lvbiBpcyBu
b3Qgb2YgdHlwZSBDRlN0cmluZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAg
ICByZXNwb25zZSA9IGNyZWF0ZVJlc291cmNlUmVzcG9uc2VGcm9tUHJvcGVydHlMaXN0RGF0YShy
ZXNvdXJjZVJlc3BvbnNlRGF0YSwgcmVzb3VyY2VSZXNwb25zZVZlcnNpb24pOwogICAgIH0KIApA
QCAtMjQ4LDIzICsyNDgsMjMgQEAgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmIG1haW5SZXNvdXIKICAgICByZXR1cm4g
YXJjaGl2ZTsKIH0KIAotUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEpCitSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAg
ICAgcmV0dXJuIGNyZWF0ZShVUkwoKSwgZGF0YSk7CiB9CiAKLVJlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBk
YXRhKQorUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShj
b25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIExPRyhBcmNo
aXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBmcm9tIHJhdyBkYXRhIik7Ci0gICAg
CisKICAgICBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IGNyZWF0ZSgpOwotICAgICAg
ICAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLmNyZWF0ZUNGRGF0YSgp
OworCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVDRkRhdGEoKTsKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgICAgIAorCiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG51bGxwdHI7Ci0gICAg
CisKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwbGlzdCA9IGFkb3B0Q0Yoc3RhdGlj
X2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKDAsIGNm
RGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRhYmxlLCAwLCAmZXJyb3IpKSk7CiAgICAg
aWYgKCFwbGlzdCkgewogI2lmbmRlZiBOREVCVUcKQEAgLTI3NiwxMiArMjc2LDEyIEBAIFJlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwg
U2hhcmVkQnVmZmVyJiBkYXRhCiAgICAgICAgICAgICBDRlJlbGVhc2UoZXJyb3IpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoQ0ZHZXRUeXBlSUQocGxp
c3QuZ2V0KCkpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKSB7CiAgICAgICAgIExPRyhBcmNo
aXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBBcmNoaXZlIHByb3BlcnR5IGxpc3QgaXMgbm90IHRo
ZSBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWFyY2hpdmUt
PmV4dHJhY3QocGxpc3QuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjk1
LDcgKzI5NSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlS
ZWYgZGljdGlvbmFyeSkKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAt
IE51bGwgcm9vdCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgQ0ZEaWN0aW9uYXJ5UmVm
IG1haW5SZXNvdXJjZURpY3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlv
bmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVNYWluUmVzb3VyY2VLZXkp
KTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURpY3QpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAi
TGVnYWN5V2ViQXJjaGl2ZSAtIE5vIG1haW4gcmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJvcnRpbmcg
aW52YWxpZCBXZWJBcmNoaXZlIik7CkBAIC0zMzMsNyArMzMzLDcgQEAgYm9vbCBMZWdhY3lXZWJB
cmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAg
ICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBpcyBub3Qg
ZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAK
KwogICAgICAgICAgICAgaWYgKGF1dG8gc3VicmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZShzdWJy
ZXNvdXJjZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YnJlc291cmNlKHN1YnJlc291cmNl
LnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICB9CkBAIC0zNTMsNyArMzUzLDcgQEAgYm9vbCBM
ZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAg
ICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJmcmFtZSBh
cnJheSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFy
Y2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAKKwogICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUo
KTsKICAgICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJhbWVEaWN0
KSkKICAgICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoV1RGTW92ZShzdWJmcmFtZUFy
Y2hpdmUpKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJh
Y3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hp
dmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBza2lwcGVk
Iik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
NTA2LDcgKzUwNiw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyCiB7CiAgICAgYXV0byYgcmVz
cG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwogICAg
IFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwotICAgIAorCiAgICAgLy8gaXQncyBw
b3NzaWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ugd2l0aG91dCBhIFVSTCBoZXJlCiAgICAgLy8gPHJk
YXI6Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAgaWYgKHJlc3BvbnNlVVJMLmlzTnVsbCgpKQpAQCAt
NjA1LDcgKzYwNSw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKIAogICAgIGlmICghZG9jdW1lbnQt
PmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0dXJuIGFyY2hpdmU7Ci0gICAgICAgIAorCiAgICAg
Ly8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBw
YXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJv
ZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAi
PGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0
PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+
PC9pZnJhbWU+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xl
Z2FjeVdlYkFyY2hpdmUuaAppbmRleCBkMDllYzlmNzVhYmExMzZhODYzMzllYjRkODZhYmQ4Mjc3
YzRmZjA0Li41YTA3YjEwYjRiZTZmODYyMDExYTc4MmE3ZGVkMjM2NzU5MjQzNjI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5o
CkBAIC00MSw4ICs0MSw4IEBAIHN0cnVjdCBTaW1wbGVSYW5nZTsKIGNsYXNzIExlZ2FjeVdlYkFy
Y2hpdmUgZmluYWwgOiBwdWJsaWMgQXJjaGl2ZSB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShTaGFyZWRCdWZmZXIm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNy
ZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBj
cmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKFJlZjxBcmNoaXZlUmVz
b3VyY2U+JiYgbWFpblJlc291cmNlLCBWZWN0b3I8UmVmPEFyY2hpdmVSZXNvdXJjZT4+JiYgc3Vi
cmVzb3VyY2VzLCBWZWN0b3I8UmVmPExlZ2FjeVdlYkFyY2hpdmU+PiYmIHN1YmZyYW1lQXJjaGl2
ZXMpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
Y3JlYXRlKE5vZGUmLCBGdW5jdGlvbjxib29sKEZyYW1lJik+JiYgZnJhbWVGaWx0ZXIgPSB7IH0p
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3Jl
YXRlKEZyYW1lJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTEFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0
bWwvTUhUTUxBcmNoaXZlLmNwcAppbmRleCBhY2ZiYmI3MDIwMjJkMDZhZmU2MjAwNDA0ODdmZDM0
ZDkyMWQ3MjdjLi5kMDEzOWY4N2EwNmY5Njk3OGI3NDc3ZTlmNDk5OWMzNGVhOWY4NjI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2
ZS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBSZWY8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6
OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTUhUTUxBcmNoaXZlKTsKIH0KIAot
UmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmws
IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6
Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewog
ICAgIC8vIEZvciBzZWN1cml0eSByZWFzb25zIHdlIG9ubHkgbG9hZCBNSFRNTCBwYWdlcyBmcm9t
IGxvY2FsIFVSTHMuCiAgICAgaWYgKCFMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRV
UkxTY2hlbWVBc0xvY2FsKHVybC5wcm90b2NvbCgpLnRvU3RyaW5nKCkpKQpAQCAtMTMwLDcgKzEz
MCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVS
TCYgdXJsLCBTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgcmV0dXJuIG1haW5BcmNoaXZlOwogfQog
Ci1SZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2Uq
IHBhZ2UpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0
ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogewogICAgIFZlY3RvcjxQYWdlU2VyaWFsaXplcjo6UmVz
b3VyY2U+IHJlc291cmNlczsKICAgICBQYWdlU2VyaWFsaXplciBwYWdlU2VyaWFsaXplcihyZXNv
dXJjZXMpOwpAQCAtMTYyLDggKzE2Miw4IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2
ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJl
bG93IGluc3RlYWQgb2YgYXNjaWkoKSBhcyBhc2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8g
KHdlIHN0aWxsIG9ubHkgaGF2ZSBwdXQgQVNDSUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNT
RVJUKHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKS5pc0FsbEFTQ0lJKCkpOwogICAgIENTdHJpbmcg
YXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgIGF1dG8g
bWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVu
ZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIG1odG1sRGF0YTsKKyAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5n
LmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgZm9yIChhdXRvJiByZXNvdXJj
ZSA6IHJlc291cmNlcykgewogICAgICAgICBzdHJpbmdCdWlsZGVyLmNsZWFyKCk7CkBAIC0xNzgs
MTUgKzE3OCwxNSBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhU
TUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcclxuQ29u
dGVudC1UcmFuc2Zlci1FbmNvZGluZzogIiwgY29udGVudEVuY29kaW5nLCAiXHJcbkNvbnRlbnQt
TG9jYXRpb246ICIsIHJlc291cmNlLnVybC5zdHJpbmcoKSwgIlxyXG5cclxuIik7CiAKICAgICAg
ICAgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgICAg
ICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0
aCgpKTsKKyAgICAgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lp
U3RyaW5nLmxlbmd0aCgpKTsKIAogICAgICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBl
bmNvZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJlYW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQg
YWxsLgogICAgICAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UuZGF0YS0+ZGF0YSgpOwogICAgICAg
ICBzaXplX3QgZGF0YUxlbmd0aCA9IHJlc291cmNlLmRhdGEtPnNpemUoKTsKICAgICAgICAgaWYg
KCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBxdW90ZWRQcmludGFibGUpKSB7CiAgICAgICAgICAg
ICBhdXRvIGVuY29kZWREYXRhID0gcXVvdGVkUHJpbnRhYmxlRW5jb2RlKGRhdGEsIGRhdGFMZW5n
dGgpOwotICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBl
bmNvZGVkRGF0YS5zaXplKCkpOwotICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4i
LCAyKTsKKyAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBl
bmNvZGVkRGF0YS5zaXplKCkpOworICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIs
IDIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKCFzdHJjbXAoY29udGVu
dEVuY29kaW5nLCBiYXNlNjQpKTsKICAgICAgICAgICAgIC8vIFdlIGFyZSBub3Qgc3BlY2lmeWlu
ZyBpbnNlcnRMRnMgPSB0cnVlIGJlbG93IGFzIGl0IHdvdWxkIGN1dCB0aGUgbGluZXMgd2l0aCBM
RnMgYW5kIE1IVE1MIHJlcXVpcmVzIENSTEZzLgpAQCAtMTk2LDE3ICsxOTYsMTcgQEAgUmVmPFNo
YXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQog
ICAgICAgICAgICAgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoID0gZW5jb2RlZERhdGEuc2l6ZSgp
OwogICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgIHNpemVfdCBsaW5lTGVuZ3RoID0g
c3RkOjptaW4oZW5jb2RlZERhdGFMZW5ndGggLSBpbmRleCwgbWF4aW11bUxpbmVMZW5ndGgpOwot
ICAgICAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGlu
ZGV4LCBsaW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJc
biIsIDIpOworICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0
YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOworICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBl
bmQoIlxyXG4iLCAyKTsKICAgICAgICAgICAgICAgICBpbmRleCArPSBtYXhpbXVtTGluZUxlbmd0
aDsKICAgICAgICAgICAgIH0gd2hpbGUgKGluZGV4IDwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAg
ICAgICB9CiAgICAgfQogCiAgICAgYXNjaWlTdHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5k
YXJ5LCAiLS1cclxuIikudXRmOCgpOwotICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5n
LmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgIG1odG1sRGF0YS5hcHBlbmQoYXNj
aWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKLSAgICByZXR1cm4gbWh0
bWxEYXRhOworICAgIHJldHVybiBtaHRtbERhdGEudGFrZSgpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oCmluZGV4IDNk
MmRiN2M5NjAwMmViZTY4NGIyYmVmOGYxZWE5ZTJlOTc5NGE1ODkuLjJkZmU4N2U4MmU3YTRkY2Uw
ZjM0MWMzNjE5NDNjOTkwMjA1YzhkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oCkBAIC0zOCwxNCArMzgsMTQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBNSFRNTFBhcnNlcjsKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNSFRN
TEFyY2hpdmUgZmluYWwgOiBwdWJsaWMgQXJjaGl2ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxNSFRNTEFyY2hpdmU+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBSZWZQdHI8TUhUTUxBcmNoaXZl
PiBjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxN
SFRNTEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7
CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZ2VuZXJhdGVNSFRNTERhdGEoUGFnZSop
OworICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZ2VuZXJhdGVNSFRNTERh
dGEoUGFnZSopOwogCiAgICAgdmlydHVhbCB+TUhUTUxBcmNoaXZlKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCBm
MWI5MDFkZDAyMDNkY2FjOTRkZjZkMGVhZTRjYjJkMGJkYjgwMTVlLi41ZWU5MTg2ODRhMDY4OTY4
M2Y3MWMyNjdmMmQ5MDFhMzdhNmZlYjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRp
YyBib29sIHNraXBMaW5lc1VudGlsQm91bmRhcnlGb3VuZChTaGFyZWRCdWZmZXJDaHVua1JlYWRl
ciYgbGluZVJlYWRlciwgY29uCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1NSFRNTFBhcnNlcjo6
TUhUTUxQYXJzZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQorTUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2Vy
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgOiBtX2xpbmVSZWFkZXIoZGF0YSwg
IlxyXG4iKQogewogfQpAQCAtMTQwLDcgKzE0MCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIs
CiB7CiAgICAgQVNTRVJUKGVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9PSBlbmRPZkRvY3Vt
ZW50Qm91bmRhcnkuaXNFbXB0eSgpKTsKIAotICAgIGF1dG8gY29udGVudCA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBjb250ZW50OwogICAgIGNvbnN0
IGJvb2wgY2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAg
Ym9vbCBlbmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVu
dFRyYW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTE1NCw3ICsx
NTQsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFy
dChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAgTE9HX0VSUk9SKCJC
aW5hcnkgY29udGVudHMgcmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRlbnQtPmFwcGVuZChXVEZNb3ZlKHBh
cnQpKTsKKyAgICAgICAgY29udGVudC5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CiAgICAgICAgIG1f
bGluZVJlYWRlci5zZXRTZXBhcmF0b3IoIlxyXG4iKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IG5leHRDaGFyczsKICAgICAgICAgaWYgKG1fbGluZVJlYWRlci5wZWVrKG5leHRDaGFycywgMikg
IT0gMikgewpAQCAtMTgwLDEwICsxODAsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhU
TUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIE5vdGUg
dGhhdCB3ZSB1c2UgbGluZS51dGY4KCkgYW5kIG5vdCBsaW5lLmFzY2lpKCkgYXMgYXNjaWkgdHVy
bnMgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIHRhYiwgbGluZS1mZWVkLi4uKSBpbnRvICc/
Jy4KLSAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUu
bGVuZ3RoKCkpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgp
LCBsaW5lLmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFu
c2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlKSB7CiAgICAgICAg
ICAgICAgICAgLy8gVGhlIGxpbmUgcmVhZGVyIHJlbW92ZXMgdGhlIFxyXG4sIGJ1dCB3ZSBuZWVk
IHRoZW0gZm9yIHRoZSBjb250ZW50IGluIHRoaXMgY2FzZSBhcyB0aGUgUXVvdGVkUHJpbnRhYmxl
IGRlY29kZXIgZXhwZWN0cyBDUi1MRiB0ZXJtaW5hdGVkIGxpbmVzLgotICAgICAgICAgICAgICAg
IGNvbnRlbnQtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBw
ZW5kKCJcclxuIiwgMik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTMs
OSArMTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5l
eHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGRhdGE7CisgICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQudGFr
ZSgpLT5tYWtlQ29udGlndW91cygpOwogICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50VHJh
bnNmZXJFbmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAgICAg
ICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRl
bnQtPnNpemUoKSk7CisgICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29u
dGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAg
ICAgIGlmICghZGVjb2RlZERhdGEpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBi
YXNlNjQgY29udGVudCBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMjA0LDExICsyMDUsMTEgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQ
YXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlOgot
ICAgICAgICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29u
dGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250
aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJpdDoKICAgICBjYXNlIE1JTUVI
ZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29udGVudC0+ZGF0YSgpLCBjb250
ZW50LT5zaXplKCkpOworICAgICAgICBkYXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+ZGF0
YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVm
YXVsdDoKICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0
LiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmgKaW5kZXggMWU5YmQ0ZDc3NjdlZTM5MWEwMDIyZjcxNzQ4ZjAwYjg1YzgxYjI1Zi4uMGQ2
MDQzNDNmM2Q3YWQxNzhjYzIyMDAzYzk3OWMyMmU1MGEzYjk5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oCkBAIC00MiwxMSArNDIs
MTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwogY2xhc3Mg
TUhUTUxBcmNoaXZlOwogY2xhc3MgTUlNRUhlYWRlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1IVE1MUGFyc2VyIHsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBNSFRNTFBhcnNlcihTaGFyZWRCdWZmZXIqKTsKKyAgICBleHBsaWNp
dCBNSFRNTFBhcnNlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICAgICBSZWZQdHI8TUhU
TUxBcmNoaXZlPiBwYXJzZUFyY2hpdmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4IDY1MjUx
ZWI2ODIwN2ZjNDlhOTVjYzFjM2VhMWQ0YTllYmZkOTI3MDQuLmUxYTg3NTE2YmQ4ZDViOGYyNGFm
NmE1Yjk5MGUyMTg1MzQ3ZTc1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTQwLDEyICs0MCwx
NiBAQCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcQogewogfQogCi12b2lkIENhY2hlZEFwcGxpY2F0
aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6
OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAg
c2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQot
ICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5t
YWtlQ29udGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwor
ICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7
CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6
ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5kZXggMDdm
MmEwNzljNTY0ZWVmZmI2OTdjMzdjNzg1NjVlMWVhOGQ5YWU1ZS4uMzc5OGE5YjRkOTAxM2NmZGVh
NmY1NmZiZGYwMDE1YWY4OTQ3NTcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC00Miw3ICs0Miw3IEBA
IHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBw
cm9jZXNzKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERv
Y3VtZW50KiA9IG51bGxwdHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29k
ZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29k
ZXIucHRyKCk7IH0KICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
OwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3
YzYyZmM2MWU2Mzc0MmY3NGNjNmEwYmNmMDAwYmE5YjE3NmYuLjM4YTJlMTdmMGQwNmM4YWM5OGRl
MjRiMWU1MmI4ZTYwZTkyNDEyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3Ry
aW5nIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1l
VHlwZUNoZWNrSGludCwKICAgICAgICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAg
IC8vIERvbid0IGNhY2hlIHRoZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBh
bmQgaXQgY2FuIHVzZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJl
dHVybiBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6
c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk3LDEz
ICs5NywxNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25z
dCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIHNhdmVQYXJzZWRTdHlsZVNoZWV0
KCpzaGVldC5tX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSk7CiB9CiAKLXZvaWQgQ2FjaGVkQ1NTU3R5
bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9h
ZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVk
U2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRv
IGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVy
aW5nIGNoZWNrTm90aWZ5KCkKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9kZWNvZGVkU2hlZXRU
ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUo
KSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgLy8g
RGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hl
ZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKKyAgICAgICAgbV9kZWNvZGVkU2hl
ZXRUZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAg
ICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAg
Y2hlY2tOb3RpZnkobWV0cmljcyk7CiAgICAgLy8gQ2xlYXIgdGhlIGRlY29kZWQgdGV4dCBhcyBp
dCBpcyB1bmxpa2VseSB0byBiZSBuZWVkZWQgaW1tZWRpYXRlbHkgYWdhaW4gYW5kIGlzIGNoZWFw
IHRvIHJlZ2VuZXJhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuaAppbmRleCA1ZDRkZDNkYzdlMzUzZWUzY2IyZmI5M2YyNzhkMjU3OWI4
ZDlhN2ExLi5lNjU1YzY5ZTNlZGI2MDk1MDIzOWNjZTQ1NDVmMDk2YjUyNjU2ZGU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKQEAg
LTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0
IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5p
c2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwog
CiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA4YzJiYzJh
MzQxYzgyMzUxZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5kMmJjMjgyMTQ3OWM1OWEyMzIzZTRm
NjVjZDk0YjYzYjQyMzczNjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwCkBAIC02NCwxMCArNjQsMTUgQEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGll
bnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICAgICAgc3RhdGljX2Nhc3Q8Q2Fj
aGVkRm9udENsaWVudCY+KGNsaWVudCkuZm9udExvYWRlZCgqdGhpcyk7CiB9CiAKLXZvaWQgQ2Fj
aGVkRm9udDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2Rh
dGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAg
IG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXpl
KG1fZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRy
OworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxz
ZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CkBAIC0xMDUsNyArMTEwLDcgQEAgYm9v
bCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCiAK
IHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVh
dGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1J
bkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0
ZXMgfTsKKyAgICBSZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFj
b252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikg
OiBudWxscHRyOwogfQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tO
b3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2Vy
PENhY2hlZEZvbnRDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRG
b250Q2xpZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRM
b2FkZWQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5k
ZXggY2ViZGM1NTdmMTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMTM0NjZjYzk5ZDBk
MTljYmYzZDhlZjNkZmJkOTZmMzRkMGY4NTQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgTk9fUkVUVVJO
X0RVRV9UT19BU1NFUlQgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2Um
KSBmaW5hbCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICB2b2lkIGRpZEFkZENsaWVu
dChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhbGxDbGllbnRzUmVt
b3ZlZCgpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcAppbmRleCBiMTU5ZjI5ZWU5MGZlM2RlMDE5YzExNDliZGE2OTRlMGU2ZjZiNTQyLi45
NDYyNzk1MjBkMGRhNDQ2MjJjNmFjZDM2NjYyMjg4MTA1ZTgxOTYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ2OCw5ICs0NjgsOSBAQCBpbmxp
bmUgdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAgICAgbV91cGRhdGVJbWFnZURhdGFD
b3VudCA9IDA7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKFNo
YXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFs
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgbV9kYXRhID0gJmRh
dGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIHNldEVuY29kZWRT
aXplKG1fZGF0YS0+c2l6ZSgpKTsKICAgICBjcmVhdGVJbWFnZSgpOwogCkBAIC01MjMsMTIgKzUy
MywxNCBAQCBib29sIENhY2hlZEltYWdlOjpzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNv
bnN0CiAgICAgcmV0dXJuIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fbGFzdFVwZGF0ZUltYWdl
RGF0YVRpbWUpLnNlY29uZHMoKSA8IHVwZGF0ZUltYWdlRGF0YUJhY2tvZmZJbnRlcnZhbHNbaW50
ZXJ2YWxdOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVk
RGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKLSAgICBpZiAoIWRhdGEgfHwgIWlzUG9zdFNjcmlw
dFJlc291cmNlKCkpCi0gICAgICAgIHJldHVybiBkYXRhOworICAgIGlmICghZGF0YSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQorICAg
ICAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKICNpZiBQTEFURk9STShNQUMpICYm
ICFVU0UoV0VCS0lUX0lNQUdFX0RFQ09ERVJTKQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5j
cmVhdGVDRkRhdGEoKSkuZ2V0KCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQ
REZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOwogI2Vsc2UKICAgICAvLyBMb2FkaW5n
IHRoZSBpbWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGVkIGlmIHRoZSBzeXN0ZW0gZG9lcyBu
b3Qgc3VwcG9ydCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQgdG8gUERGLgogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtNTUzLDcgKzU1NSw3IEBAIEVuY29kZWREYXRhU3RhdHVzIENhY2hlZElt
YWdlOjp1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgdXBkYXRlQnVmZmVySW50ZXJu
YWwoZGF0YSk7CkBAIC01NjcsNyArNTY5LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3Vy
Y2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6Zmlu
aXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKK3ZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQog
ewogICAgIG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsKICAgICBpZiAobV9k
YXRhKSB7CkBAIC01OTMsNyArNTk1LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGlu
ZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWUKIHZvaWQg
Q2FjaGVkSW1hZ2U6OmRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpCiB7CiAgICAgaWYg
KG1faW1hZ2UpIHsKLSAgICAgICAgLy8gTGV0IHRoZSBJbWFnZSBrbm93IHRoYXQgdGhlIFNoYXJl
ZEJ1ZmZlciBoYXMgYmVlbiByZWppZ2dlZCwgc28gaXQgY2FuIGxldCBnbyBvZiBhbnkgcmVmZXJl
bmNlcyB0byB0aGUgaGVhcC1hbGxvY2F0ZWQgcmVzb3VyY2UgYnVmZmVyLgorICAgICAgICAvLyBM
ZXQgdGhlIEltYWdlIGtub3cgdGhhdCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBoYXMgYmVl
biByZWppZ2dlZCwgc28gaXQgY2FuIGxldCBnbyBvZiBhbnkgcmVmZXJlbmNlcyB0byB0aGUgaGVh
cC1hbGxvY2F0ZWQgcmVzb3VyY2UgYnVmZmVyLgogICAgICAgICAvLyBGSVhNRShyZGFyOi8vcHJv
YmxlbS8yNDI3NTYxNyk6IEl0IHdvdWxkIGJlIGJldHRlciBpZiB3ZSBjb3VsZCBzb21laG93IHRl
bGwgdGhlIEltYWdlJ3MgZGVjb2RlciB0byBzd2FwIGluIHRoZSBuZXcgY29udGVudHMgd2l0aG91
dCBkZXN0cm95aW5nIGFueXRoaW5nLgogICAgICAgICBtX2ltYWdlLT5kZXN0cm95RGVjb2RlZERh
dGEodHJ1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aAppbmRleCBlMzg5NjJhMGRjYWZiY2VmNjMxYzE0ZTYzZmViODViYTA1NTIwM2Y0Li4wODNmOTJm
ODg4Mjc2ZWVkYTg5OTEyMDMxZDI0NDlhOTY4ZTI2NWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1h
Z2UtPmhhc1JlbGF0aXZlV2lkdGgoKTsgfQogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdo
dCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVIZWlnaHQo
KTsgfQogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRl
OwogCiAgICAgZW51bSBTaXplVHlwZSB7CiAgICAgICAgIFVzZWRTaXplLApAQCAtMTI1LDcgKzEy
NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsK
IAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRh
KSBjb25zdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRV
cGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEo
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVj
dCopOwogICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIAot
ICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1
cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAg
ICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpIG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRl
eCA5MmIwODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3ZjE4Mzk1NjJmLi44OTVkYjExNThiNmI4
YzhmYmY3YjEwYjQzYjYxNGVkYTk2MDIxY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgQ2FjaGVk
UmF3UmVzb3VyY2U6OkNhY2hlZFJhd1Jlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFR5cGUgdHlwZSwKICAgICBBU1NFUlQoaXNNYWluT3JNZWRpYU9ySWNvbk9yUmF3UmVz
b3VyY2UoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hl
ZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBTaGFyZWRC
dWZmZXIqIGRhdGEpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBD
YWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKICAgICBzaXplX3QgcHJldmlvdXNE
YXRhTGVuZ3RoID0gZW5jb2RlZFNpemUoKTsKICAgICBpZiAoIWRhdGEgfHwgZGF0YS0+c2l6ZSgp
IDw9IHByZXZpb3VzRGF0YUxlbmd0aCkKQEAgLTU2LDcgKzU2LDcgQEAgc3RkOjpvcHRpb25hbDxT
aGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVu
dGFsRGF0YUMKICAgICByZXR1cm4gZGF0YS0+Z2V0U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3Ro
KTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIFNraXAgYW55IHVwZGF0ZUJ1ZmZl
cnMgdHJpZ2dlcmVkIGZyb20gbmVzdGVkIHJ1bmxvb3BzLiBXZSdsbCBoYXZlIHRoZSBjb21wbGV0
ZSBidWZmZXIgaW4gZmluaXNoTG9hZGluZy4KICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5v
dGlmeSkKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVm
ZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVy
aW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9k
YXRhID0gJmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAg
YXV0byBwcmV2aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5z
aXplKCkgPiBwcmV2aW91c0RhdGFTaXplKSB7CkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAK
LXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAobV9pbkluY3JlbWVu
dGFsRGF0YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBtYXkgZ2V0IGhlcmUgc3luY2hyb25vdXNs
eSBmcm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxsYmFjayB0aGVyZSBlbmRzIHVwIHNwaW5u
aW5nIGEgcnVubG9vcC4KQEAgLTEwNywxMiArMTA3LDE0IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3Vy
Y2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3Rl
ZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9saWN5
ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOwogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9s
aWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpIHsKLSAgICAgICAgbV9kYXRh
ID0gZGF0YTsKLQotICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJ
bmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgewotICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUo
ZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQo
aW5jcmVtZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKLSAgICAg
ICAgfQorICAgICAgICBpZiAoZGF0YSkgeworICAgICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNh
bGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7CisgICAgICAgICAgICAgICAgc2V0
RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBub3RpZnlDbGllbnRz
RGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEt
PnNpemUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9k
YXRhID0gbnVsbHB0cjsKICAgICB9CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXggODRlMGQ4NDRk
NTcxMDk5NTNhZTZiZmY2NTU2NTk5NTNlMjhiYTY5Yi4uYTc4NjVmOGFkMTc4YWVmYjMyMjBhNTZk
Y2ZmMTk1OTkzY2Y5NWFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7Ci0gICAg
dm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgdXBk
YXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwotICAg
IHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgYm9vbCBz
aG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CkBAIC02Niw3
ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJl
c291cmNlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2FsbG93RW5jb2RlZERhdGFSZXBsYWNlbWVudDsgfQog
Ci0gICAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVt
ZW50YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyKikgY29uc3Q7CisgICAgc3RkOjpvcHRp
b25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmso
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopIGNvbnN0OwogICAgIHZvaWQgbm90aWZ5Q2xp
ZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgp
OwogICAgIAogI2lmIFVTRShRVUlDS19MT09LKQpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgog
ICAgIFZlY3RvcjxSZWRpcmVjdFBhaXIsIDAsIENyYXNoT25PdmVyZmxvdywgMD4gbV9yZWRpcmVj
dENoYWluOwogCiAgICAgc3RydWN0IERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxEZWxheWVk
RmluaXNoTG9hZGluZz4gbV9kZWxheWVkRmluaXNoTG9hZGluZzsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCAzYWU4YmI2OGQyNWNk
ZGQxODAyMDkyMmY1ZWRiMjRkNGI5MTIwMDAyLi5iZjY5ZTgwZTU3NmUxYTI4OGY2YTAxMWY1NDYx
NDYzMTU1ODAxZDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVj
a05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVu
dC0+bm90aWZ5RmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291
cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVw
ZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikKIHsKICAgICBBU1NFUlQo
ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEp
OwogfQpAQCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEo
Y29uc3QgdWludDhfdCosIHVuc2lnbmVkKQogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5
KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBD
YWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5n
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0
cmljcyk7CkBAIC05MjcsOCArOTI3LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFj
ZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlmICgqbV9kYXRhICE9
IG5ld0J1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5jbGVhcigpOwotICAg
IG1fZGF0YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVmIHsgbmV3QnVmZmVy
IH07CiAgICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMzk2MDAyODMyY2Mx
NTNjNTkwNDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uYzk4MmRkNjkzN2EwYmMyYmYzOGM0MjYxMjZm
ZmU2ZTc4Yzc5NjQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgQ29va2llSmFyOwogY2xhc3MgTWVtb3J5
Q2FjaGU7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFz
cyBTdWJyZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiAKQEAgLTEx
Miw5ICsxMTIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0
IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1
cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRl
eHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAg
IHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0
dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyk7CiAKICAgICB2b2lkIHNldFJl
c291cmNlRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIHsgbV9lcnJvciA9IGVycm9y
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9j
dW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
LmNwcAppbmRleCA3ZGExNDg1MWE3MDc4NGFhYmU5ODM5YjcwNmEwYjFiMzMxZjJjODM5Li5kYjQz
MTYwN2FlNTYzODMwMzgwMGRkMjU5YzEwMzRjZDA5MGZjZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKQEAgLTUyLDEyICs1Miwx
MiBAQCBTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1
cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRTVkdEb2N1
bWVudDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmco
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5l
ZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdz
IHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3Vt
ZW50OjpjcmVhdGUobnVsbHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2UoKS51cmwoKSk7Ci0gICAg
ICAgIG1fZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRh
LT5kYXRhKCksIGRhdGEtPnNpemUoKSkpOworICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50
KG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRp
bmcoZGF0YSwgbWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudC5oCmluZGV4IGU4YzE1ZjM2MGZjOTFhYzhiMzRkMzk2Mjk1YzUzZDNj
N2YxNDdlYWEuLjQ0NWU0ZjlmNDJjM2MyNzQwNzk3NmE2NGU5MTU0MDdmOGI1MzRkMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC00
Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKICAgICBj
b25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5n
KFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAg
IHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+
IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBh
OGVmNTc2YmI2OTM5MzNhMjIzNDY5NTU1NzU2YjM2NjdlNDg2MzJlLi5kMmMxZGU0N2VmYjc4MTM5
OGY0NDM4YjdjYTRlYTI2MGUyMjE5NzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0ZvbnQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9u
dDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogCiAg
ICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29w
ZSBkaXNhYmxlZFNjb3BlOwogCi0gICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNl
dENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+
c2l6ZSgpKSk7CisgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQo
ZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IG1fZGF0YS0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBzYXdFcnJvciA9IGRlY29kZXItPnNhd0Vy
cm9yKCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmNwcAppbmRleCA0N2E5ZjU3NjA3Yjk4Mjg0ZThmNzllMmNkZWNlOWJlNDE4ZjE3YjY1
Li5iNjczOThiMGU0ZjU2ZmU3YWJjYjI3NGQwZTM2ODQzMDM2MzUwODkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtOTYsMTAgKzk2LDE1IEBA
IHVuc2lnbmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAgICAgcmV0dXJuIG1fc2NyaXB0
SGFzaDsKIH0KIAotdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNj
cmlwdDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsK
LSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRh
dGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAg
c2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2Rh
dGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2Fj
aGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5MjRiODRjYTJkODcxNmUz
NDYwNzdlZWViNWNjMzRiY2VkZTdlMjNkLi44NjUxZTYzOWFkOTA2MTcyODU2MWMzMjRiZmE3YWY0
Y2Y5N2Y2ZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5o
CkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBT
dHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBj
b25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwCmluZGV4IDEyMjk4MTUwMzEyODg2MWVjNGY1ZWI0Y2Y1MGYzMjA4NmI1ZGViNjEuLjBjODQy
OGJiOTlkYjZkZmIxNmEzNDgxMzRjMzgyNjgzNmNjZTU0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCkBAIC00MCwxMCArNDAsMTAgQEAg
Q2FjaGVkVGV4dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQKIHsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRv
VXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpk
b1VwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAg
IEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVm
ZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxTaGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGll
bnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwpAQCAtNTEs
MTMgKzUxLDEzIEBAIHZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXIqIGRhdGEpCiAgICAgICAgIGNsaWVudC0+ZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRS
ZXNvdXJjZSgqdGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIo
U2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGRvVXBkYXRlQnVmZmVy
KCZkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogfQogCi12
b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpm
aW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcihkYXRhKTsK
ICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAppbmRleCA4NWUzOTYy
MDY1MTMxNjA3MDM2NTNlYjIyYzc3MTM4YjkxNTA3YWRkLi4wOWI0MzM5YTM3YjY3M2IyYWM0ZmRh
ZTE0NmIyOWI5NjQ3NzdmY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFRleHRUcmFjay5oCkBAIC0zNSwxMCArMzUsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKIAotICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKik7CisgICAgdm9p
ZCBkb1VwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5MGY0
NjdhMjc4MjYxNWQzNDAwYy4uZDJlZmYyZDJkNDBjOTI3NzM4NzU2YzRhOGYwY2JiOTM0M2JlMTBh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHls
ZVNoZWV0LmNwcApAQCAtNjEsMTIgKzYxLDE2IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0
OjplbmNvZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1l
KCk7CiB9CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2Fj
aGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9k
YXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7
Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKGRhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAg
ICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNp
emUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2gobV9kYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0K
ICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmlu
ZGV4IDY4NDJiNjQ0ZjYxY2Y5MGY3ZjYxYjJmN2VjNWUwMDY1NGNkMTBjY2MuLmJkMjMxMjE0ZjJk
MjBiYTM5NjQ0NjAzNjZlMDQxYjk0MTM1YWM0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3Ry
aW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2Rl
ciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5n
ZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
CiAgICAgU3RyaW5nIG1fc2hlZXQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1f
ZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJl
dmlld0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyLmgKaW5kZXggNTUyNTYxZDZjODE2ZDNkMjBiY2ZjY2IyZTY1ODNiN2RlOTRiOTRhMi4uNjZi
OTM1OGVjNTMxMTE0ODQ4MjJhN2NjMjRlN2YzYTk5MTcwNjVhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsNyAr
MzgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNo
YXJlZEJ1ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXIgZmluYWwgOiBw
cml2YXRlIFByZXZpZXdDb252ZXJ0ZXJDbGllbnQsIHByaXZhdGUgUHJldmlld0NvbnZlcnRlclBy
b3ZpZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ4LDcgKzUwLDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwogICAgIGJvb2wgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoKTsKLSAgICBib29sIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CisgICAgYm9vbCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKTsKICAgICBib29sIGRpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lkIGRpZEZhaWwo
KTsKIApAQCAtNjAsMTcgKzYyLDE3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcmV2aWV3Q29udmVy
dGVyRGlkRmluaXNoVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsIHsgfTsKICAgICB2
b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZp
bmFsOwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3
Q29udmVydGVyJikgZmluYWw7Ci0gICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURh
dGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZv
aWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBwcmV2aWV3Q29udmVy
dGVyRGlkRmluaXNoQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgZmluYWw7CiAgICAgdm9p
ZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZp
bmFsOwogCiAgICAgLy8gUHJldmlld0NvbnZlcnRlclByb3ZpZGVyCi0gICAgdm9pZCBwcm92aWRl
TWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJikgZmluYWw7CisgICAgdm9p
ZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVy
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+
JiYpIGZpbmFsOwogICAgIHZvaWQgcHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQ
cmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4m
JikgZmluYWw7CiAKICAgICBSZWZQdHI8UHJldmlld0NvbnZlcnRlcj4gbV9jb252ZXJ0ZXI7CiAg
ICAgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1fY2xpZW50OwotICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IG1fb3JpZ2luYWxEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWls
ZGVyPiBtX29yaWdpbmFsRGF0YTsKICAgICBXZWFrUHRyPFJlc291cmNlTG9hZGVyPiBtX3Jlc291
cmNlTG9hZGVyOwogICAgIGJvb2wgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlciB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRl
eCBkMThiMjUyZTk3NTZjOGNlMGM5NWI2M2U3OGRkMDA5N2VmMmE1NzM0Li42MWNjNmRkNDIzODlk
YWI2N2I0OTU0OTY1NGRlZjgxYzJlZjQ1YTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBS
ZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbWFrZUNsaWVudChjb25zdCBSZXNvdXJjZUxv
YWRlciYgbG9hZGVyLCBjCiAgICAgcmV0dXJuIGVtcHR5Q2xpZW50KCk7CiB9CiAKLWJvb2wgTGVn
YWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK2Jvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fZmluaXNoZWRMb2Fk
aW5nRGF0YUludG9Db252ZXJ0ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwOSw3ICsx
MDksNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFy
dENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYgYwogICAgICAgICByZXR1cm47CiAKICAgICBB
U1NFUlQoIW1faGFzUHJvY2Vzc2VkUmVzcG9uc2UpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5jbGVh
cigpOworICAgIG1fb3JpZ2luYWxEYXRhLT5lbXB0eSgpOwogICAgIHJlc291cmNlTG9hZGVyLT5k
b2N1bWVudExvYWRlcigpLT5zZXRQcmV2aWV3Q29udmVydGVyKFdURk1vdmUobV9jb252ZXJ0ZXIp
KTsKICAgICBhdXRvIHJlc3BvbnNlIHsgY29udmVydGVyLnByZXZpZXdSZXNwb25zZSgpIH07CiAK
QEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252
ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYgYwogICAgIH0pOwogfQog
Ci12b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0
YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBMZWdh
Y3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0Nv
bnZlcnRlciYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgYXV0
byByZXNvdXJjZUxvYWRlciA9IG1fcmVzb3VyY2VMb2FkZXIuZ2V0KCk7CiAgICAgaWYgKCFyZXNv
dXJjZUxvYWRlcikKQEAgLTIyNCwxMCArMjI0LDEwIEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRl
cjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBj
CiAgICAgbV9jbGllbnQtPmRpZFJlcXVlc3RQYXNzd29yZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKLXZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJj
ZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmll
d0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFTU0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09IG1fY29udmVy
dGVyKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5wdHIoKSk7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEtPmdldCgpLmdldCgpKTsKIH0KIAogTGVn
YWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CkBAIC0y
MzUsNyArMjM1LDcgQEAgTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2FjeVByZXZpZXdMb2FkZXIo
KSA9IGRlZmF1bHQ7CiBMZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQcmV2aWV3TG9hZGVyKFJl
c291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQog
ICAgIDogbV9jb252ZXJ0ZXIgeyBQcmV2aWV3Q29udmVydGVyOjpjcmVhdGUocmVzcG9uc2UsICp0
aGlzKSB9CiAgICAgLCBtX2NsaWVudCB7IG1ha2VDbGllbnQobG9hZGVyLCBtX2NvbnZlcnRlci0+
cHJldmlld0ZpbGVOYW1lKCksIG1fY29udmVydGVyLT5wcmV2aWV3VVRJKCkpIH0KLSAgICAsIG1f
b3JpZ2luYWxEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgLCBtX29yaWdpbmFs
RGF0YSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCkpIH0KICAgICAsIG1fcmVzb3VyY2VMb2FkZXIgeyBsb2FkZXIgfQog
ICAgICwgbV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZyYW1lKCkt
PnNldHRpbmdzKCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZp
ZXcoKSB9CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCA4MjM3NGU3MjYyYzcw
ZWE5ZGZlNGQ2NGYyNWFiMTM1YWE2MDMzM2NmLi5lYTYxNWRmZjRkZDBlZDUxNGJmZjY0NDI2NDdl
YzQ2MjBmNjMyMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTM4LDEyICsz
OCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NS
ZXNwb25zZSA6IHVpbnQ4X3Q7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50
RnJhZ21lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBLZXlib2FyZEV2
ZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBjbGFzcyBUZXh0Q2hlY2tlckNs
aWVudDsKIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CkBAIC03OCw3ICs3OSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUoY29uc3QgU2ltcGxl
UmFuZ2UmLCBjb25zdCBTaW1wbGVSYW5nZSYpID0gMDsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRU
eXBlICovLCBjb25zdCBTdHJpbmcmIC8qIHByZWZlcnJlZEZpbGVOYW1lICovLCBSZWY8U2hhcmVk
QnVmZmVyPiYmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29u
dGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogcHJlZmVycmVkRmlsZU5hbWUgKi8sIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0
IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogZmlsZVBhdGggKi8p
IHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxTZXJpYWxp
emVkQXR0YWNobWVudERhdGE+JiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLykgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDFhMTIxMGZhODMzN2NkOTUyMGY0
ZTAxMWE5MDczNjc1NGRlNTE4ZjEuLmFjNTNjYjE0YmYwMGU1MTY0N2M5ZWM5MTEwOThiZWEwMzYx
NTExMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0yNzMsNyAr
MjczLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJ
bWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICBpZiAoIWltYWdlIHx8IGltYWdl
LT5pbWFnZSgpID09ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVyID8gaW1hZ2UtPmltYWdl
Rm9yUmVuZGVyZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVyID8gaW1hZ2UtPmltYWdlRm9y
UmVuZGVyZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CiAgICAgaWYgKCFkYXRhKQogICAg
ICAgICBkYXRhID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKIApAQCAtMjgyLDcgKzI4Miw3IEBA
IHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGlt
YWdlLCBSZW5kZXJFbGVtZW50KiBpbWFnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
X3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIFdU
Rk1vdmUoZGF0YSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+cmVz
cG9uc2UoKS5taW1lVHlwZSgpLCBkYXRhLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgIG1fcmVz
b3VyY2VVUkxzLmFkZCh1cmwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NoYXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRl
ci5jcHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZmZjQyZThlMC4uNzU4
MzZiODc5MTQzYjYwYTdmMzUxOTcwMzIwN2I2YWQzZDhkNGY4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0YVJlYWRlcigp
CkBAIC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRp
bmcoaW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICAgICAgY2FuY2Vs
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGFycmF5QnVmZmVy
ID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVyUmVzdWx0KCk7Ci0g
ICAgCisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9IGZpbGVOYW1lOwog
ICAgIGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25z
dCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRl
TGVuZ3RoKCkpOwogICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChXVEZNb3ZlKGZpbGUpKTsK
ICAgICBtX2ZpbGVzUmVhZFNvRmFyKys7Ci0gICAgCisKICAgICBpZiAobV9maWxlc1JlYWRTb0Zh
ciA9PSBzdGF0aWNfY2FzdDxpbnQ+KG1fcGVuZGluZ0ZpbGVMb2Fkcy5zaXplKCkpKSB7CiAgICAg
ICAgIG1fcGVuZGluZ0ZpbGVMb2Fkcy5jbGVhcigpOwogICAgICAgICBpZiAoYXV0byBjb21wbGV0
aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgeyB9KSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCmluZGV4IGUzODA2ZTg3
ZGY3OWEzZDliNWNhZTEyMTRkZTY2YWEyYTY1ODQ3ZGIuLmZjNjZjMzY1YTJmMjlhNGM3OGU2MDYx
OWU0N2E3MWM3MjU4ZDhmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05v
d1BsYXlpbmdNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWlu
Z01hbmFnZXIuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8
Tm93UGxheWluZ0luZm8+IG1fbm93UGxheWluZ0luZm87CiAgICAgc3RydWN0IEFydHdvcmtDYWNo
ZSB7CiAgICAgICAgIFN0cmluZyBzcmM7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGlt
YWdlRGF0YTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdlRGF0
YTsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8QXJ0d29ya0NhY2hlPiBtX25vd1BsYXlpbmdJ
bmZvQXJ0d29yazsKICAgICBib29sIG1fc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24geyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCAxNTczMWViMjNm
YTc2OTQ5NjBkZDgwNDk2ZmE4ZjJmOWU4Yzc3ODBmLi4wN2VkNDhlNTg4NGVjZWVkYzYxZmQ5M2U2
YjIyMTcxYmU4ODU4OWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcApA
QCAtODksNyArODksNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5
cGUpCiB7CiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpKQogICAgICAgICByZXR1cm4gc3RyYXRlZ3ktPnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChpbmRleCwgdHlwZSwgbmFtZSgpLCBjb250ZXh0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDdkMjQ3ZGNkMWExNmYzNDJjMTc1NGM0NWM0YTcz
NTI5YmY4ZjcxYjIuLjM1NzYzZWUxMmEzOTBlZmM4NDUyYzM1ODA2YjUxMmJlNDI5YWQ5NzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDEyICs2MSwxMyBAQCB0eXBl
ZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
U2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERyYWdEYXRhOwog
Y2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgUGFzdGVib2FyZFN0cmF0ZWd5Owot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3Ry
dWN0IFNpbXBsZVJhbmdlOwogCkBAIC0xNDcsMTYgKzE0OCwxNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplIHBy
ZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUg
PSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5nJikg
PSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNp
emUgPSB7IH0pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZEltYWdlKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJl
ZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFk
VVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSA9IDA7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXIm
KSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAg
ICB2aXJ0dWFsIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNp
emUgPSB7IH0pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURihGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkRGF0YUJ1ZmZlcihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5h
bWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAw
OwogI2VuZGlmCiB9OwogCkBAIC0xNzEsNyArMTcyLDcgQEAgc3RydWN0IFBhc3RlYm9hcmRGaWxl
UmVhZGVyIHsKICAgICB2aXJ0dWFsIH5QYXN0ZWJvYXJkRmlsZVJlYWRlcigpID0gZGVmYXVsdDsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIC8qIHR5cGUgKi8pIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7
CiB9OwogCiBjbGFzcyBQYXN0ZWJvYXJkIHsKQEAgLTI5Niw3ICsyOTcsNyBAQCBwdWJsaWM6CiAg
ICAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IHBhc3RlYm9hcmRJdGVtSW5mbyhz
aXplX3QgaW5kZXgpIGNvbnN0OwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4
LCBjb25zdCBTdHJpbmcmIHR5cGUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIFJlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0
cmluZyYgdGl0bGUpOwogCiAgICAgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCA5ZDNmODdhOTExNGMzOGE1NGUz
M2EwNWUyYjk4OTUyY2NmNjdhZTcwLi43YjRiM2QzNmFhNjgwMzYxMTg3OTEzMWI1YTFiMjI2YjU4
OGQzNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3Vz
dG9tRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3Rv
bURhdGEuY3BwCkBAIC0zMywxMyArMzMsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dGF0aWMgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+IGNvcHlQbGF0Zm9y
bURhdGEoY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+JiBvdGhl
cikKK3N0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+IGNvcHlQbGF0Zm9ybURhdGEoY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PiYgb3RoZXIpCiB7CiAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8U3RyaW5nPihvdGhlcikpCiAgICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFN0cmluZz4o
b3RoZXIpIH07CiAKLSAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVm
ZmVyPj4ob3RoZXIpKQotICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVy
Pj4ob3RoZXIpLmNvcHlSZWYoKSB9OworICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ob3RoZXIpKQorICAgICAgICByZXR1cm4geyBzdGQ6
OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG90aGVyKS5jb3B5UmVmKCkgfTsKIAog
ICAgIHJldHVybiB7IH07CiB9CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQogICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZvcm1EYXRhID0geyB2YWx1
ZSB9OwogfQogCi12b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEoY29uc3QgU3Ry
aW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFBhc3RlYm9hcmRDdXN0
b21EYXRhOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZv
cm1EYXRhID0geyBXVEZNb3ZlKGRhdGEpIH07CiB9CkBAIC0yMDIsMTQgKzIwMiwxNCBAQCBIYXNo
TWFwPFN0cmluZywgU3RyaW5nPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6c2FtZU9yaWdpbkN1c3Rv
bVN0cmluZ0RhdGEoKSBjb25zdAogICAgIHJldHVybiBjdXN0b21EYXRhOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJp
bmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAg
IGZvciAoYXV0byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgaWYgKGVudHJ5LnR5cGUgIT0g
dHlwZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQotICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURh
dGEpLmNvcHlSZWYoKTsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZv
cm1EYXRhKS5jb3B5UmVmKCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAt
MjY1LDExICsyNjUsMTEgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaEN1c3Rv
bVN0cmluZyhGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwKICAgICB9CiB9CiAKLXZv
aWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1
bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5n
LCBSZWY8U2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAordm9pZCBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAogewogICAg
IGZvciAoYXV0byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgYXV0byYgZGF0YSA9IGVudHJ5
LnBsYXRmb3JtRGF0YTsKLSAgICAgICAgaWYgKChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmlu
Zz4oZGF0YSkgJiYgIXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkuaXNOdWxsKCkpIHx8IHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAgICBpZiAoKHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihk
YXRhKS5pc051bGwoKSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+KGRhdGEpKQogICAgICAgICAgICAgZnVuY3Rpb24oZW50cnkudHlwZSwgZGF0
YSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmgKaW5kZXggMmJlODFkMjkzOGEzZGJkMDkwMjZjYTZlYzY0YWMzMjg3ZTZhYmMwMy4u
OTdmZjk4NWUyNGUxMWI0YzdiYjQxNDM3MzdmMDI4NDBjMzVmZmNlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC0zNSw2ICszNSw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhIHsKIHB1Ymxp
YzoKQEAgLTQ4LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgICAgIFN0cmluZyB0eXBlOwogICAg
ICAgICBTdHJpbmcgY3VzdG9tRGF0YTsKLSAgICAgICAgc3RkOjp2YXJpYW50PFN0cmluZywgUmVm
PFNoYXJlZEJ1ZmZlcj4+IHBsYXRmb3JtRGF0YTsKKyAgICAgICAgc3RkOjp2YXJpYW50PFN0cmlu
ZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBwbGF0Zm9ybURhdGE7CiAgICAgfTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFBhc3RlYm9hcmRDdXN0b21EYXRhKCk7CkBAIC02NSwxMSArNjYs
MTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJik7
CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25z
dDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0OwogICAgIFN0cmluZyByZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNv
bnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAKICAgICB2b2lkIHdyaXRlU3RyaW5nKGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdm9pZCB3cml0ZURhdGEoY29u
c3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIHZvaWQgd3Jp
dGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
ZGF0YSk7CiAgICAgdm9pZCB3cml0ZVN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiAgICAgdm9pZCBjbGVhcigpOwpAQCAtODMsNyAr
ODQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZvckVhY2hUeXBlKEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3RyaW5nJik+JiYpIGNvbnN0OwogICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nKEZ1
bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpPiYmKSBj
b25zdDsKLSAgICB2b2lkIGZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZv
aWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hh
cmVkQnVmZmVyPj4mIGRhdGEpPiYmKSBjb25zdDsKKyAgICB2b2lkIGZvckVhY2hQbGF0Zm9ybVN0
cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6
OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKT4mJikg
Y29uc3Q7CiAgICAgdm9pZCBmb3JFYWNoQ3VzdG9tU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpPiYmKSBjb25zdDsKIAogICAgIGJvb2wg
aGFzRGF0YSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3Ry
YXRlZ3kuaAppbmRleCAxYzA3MjZmZWIzZTAyYWVkMzJiNDZmMjYyYmNkYTE2OWQ2NzJlYjJjLi5j
NDFlMDg1MjQ0OTZjNjdmMWYxNTAzOGZiYjI2ZTljMjlkYTY5OGM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsMTAgKzMxLDExIEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwog
Y2xhc3MgUGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNs
YXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJk
SXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKQEAgLTYyLDcgKzYzLDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIGludDY0X3Qg
c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCopID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmly
dHVhbCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVh
bCBpbnQ2NF90IHNldENvbG9yKGNvbnN0IENvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90
IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRl
eHQqKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNv
bnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZp
bHRlci5oCmluZGV4IDNmNDgzMmE1YTY1OGMxY2M3YzBhYTEzYjI2ZTBlYTQ3MzNlOWQzYjcuLjll
NzJlNDRhMmVhYzRkOGVmNzMwYjk4NzFkMGVjNTA4ZWQ5ZmFjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCkBAIC0zNCw3ICszNCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0
Zm9ybUNvbnRlbnRGaWx0ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTYs
NyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlz
aGVkQWRkaW5nRGF0YSgpID0gMDsKLSAgICB2aXJ0dWFsIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxh
Y2VtZW50RGF0YSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCA9IDA7CiAjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKQogICAgIHZpcnR1YWwgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxv
Y2tIYW5kbGVyKCkgY29uc3QgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDdhMmEzMTAwNzQyNTAwMjQzYmI0NmZmNTk4Njg2
MWU4NGEyZmQ5NmUuLjcxZGZiOTNlNTc1NjBlMzNhN2Y2YzgwYzIwZjkyZDViMmNhZWMxMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC00Nywx
MyArNDcsMTQgQEAgc3RydWN0IHdwZV9wYXN0ZWJvYXJkOwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDb2xvcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0
b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVj
dCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBh
c3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybVBhc3RlYm9hcmQgewogcHVibGljOgpA
QCAtODUsNyArODYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHdpbGwgcmV0
dXJuIDAgaWYgcGFzdGVib2FyZCBvd25lcnNoaXAgaGFzIGJlZW4gdGFrZW4gZnJvbSB1cy4KICAg
ICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IGNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2Fy
ZCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1
ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JU
IGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRV
UkwoY29uc3QgUGFzdGVib2FyZFVSTCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0
Q29sb3IoY29uc3QgQ29sb3ImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldFN0cmlu
Z0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4IDRjYjMz
MDFlN2RmNzA3MWM1ZGQ5ZmM1OWJjNTcxODVjNGU5MTQ3NjguLjYzMWFkZTdjY2Y3YWQyOTY5M2Ey
ZTc2NTFmZTZhOWNkZWJkMzc3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZp
ZXdDb252ZXJ0ZXIuY3BwCkBAIC02Myw5ICs2Myw5IEBAIGNvbnN0IFJlc291cmNlRXJyb3ImIFBy
ZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdFcnJvcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJldmll
d0Vycm9yOwogfQogCi1jb25zdCBTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZp
ZXdEYXRhKCkgY29uc3QKK2NvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIFByZXZpZXdDb252
ZXJ0ZXI6OnByZXZpZXdEYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcmV2aWV3RGF0YS5n
ZXQoKTsKKyAgICByZXR1cm4gKm1fcHJldmlld0RhdGEtPmdldCgpOwogfQogCiB2b2lkIFByZXZp
ZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSgpCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQg
UHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKICAgICB9KTsKIH0KIAotdm9p
ZCBQcmV2aWV3Q29udmVydGVyOjphcHBlbmRGcm9tQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQordm9pZCBQcmV2aWV3Q29udmVydGVyOjphcHBlbmRGcm9tQnVmZmVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICB3aGlsZSAoYnVmZmVyLnNpemUo
KSA+IG1fbGVuZ3RoQXBwZW5kZWQpIHsKICAgICAgICAgYXV0byBuZXdEYXRhID0gYnVmZmVyLmdl
dFNvbWVEYXRhKG1fbGVuZ3RoQXBwZW5kZWQpOwpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgUHJl
dmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xp
ZW50KQogICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKCp0aGlz
KTsKIAogICAgIGlmICghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpICYmIGhhc0NsaWVudChjbGll
bnQpKQotICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlz
LCBtX3ByZXZpZXdEYXRhLmdldCgpKTsKKyAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJE
aWRSZWNlaXZlRGF0YSgqdGhpcywgKm1fcHJldmlld0RhdGEtPmdldCgpKTsKIAogICAgIGlmICht
X3N0YXRlID09IFN0YXRlOjpDb252ZXJ0aW5nIHx8ICFoYXNDbGllbnQoY2xpZW50KSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVw
bGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQogICAgIGNsaWVudC5w
cmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZygqdGhpcyk7CiB9CiAKLXZvaWQgUHJl
dmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEpCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBhdXRvIHByb3RlY3RlZFRo
aXMgeyBSZWYgeyAqdGhpcyB9IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuaAppbmRleCAyYTM3MjkyMjc5OWNlNmFmZmFhYjNlMTQwZDE5MGJhNjRjZjhjZTJi
Li45MjAyZWRkZDllMTA1YjI3MzVlZGMxNDZmMjY2NGMxM2NiOWMzNDFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CkBAIC00MSwxNSArNDIsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3Owor
Y2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50
Owogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcjsKIAogc3RydWN0IFByZXZpZXdQbGF0
Zm9ybURlbGVnYXRlIDogQ2FuTWFrZVdlYWtQdHI8UHJldmlld1BsYXRmb3JtRGVsZWdhdGU+IHsK
ICAgICB2aXJ0dWFsIH5QcmV2aWV3UGxhdGZvcm1EZWxlZ2F0ZSgpID0gZGVmYXVsdDsKIAotICAg
IHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZEZp
bmlzaExvYWRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkRmFpbFdpdGhF
cnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogfTsKQEAgLTcyLDcgKzc0LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwcmV2aWV3RmlsZU5hbWUoKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJldmlld1VUSSgpIGNvbnN0OwogICAgIGNvbnN0
IFJlc291cmNlRXJyb3ImIHByZXZpZXdFcnJvcigpIGNvbnN0OwotICAgIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgcHJldmlld0RhdGEoKSBjb25zdDsKKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBwcmV2aWV3RGF0YSgpIGNvbnN0OwogCiAgICAgdm9pZCBmYWlsZWRVcGRhdGluZygpOwog
ICAgIHZvaWQgZmluaXNoVXBkYXRpbmcoKTsKQEAgLTk0LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIGlzUGxhdGZvcm1QYXNzd29yZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKSBjb25z
dDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgaXRlcmF0ZUNsaWVudHMoVCYmIGNh
bGxiYWNrKTsKLSAgICB2b2lkIGFwcGVuZEZyb21CdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7
CisgICAgdm9pZCBhcHBlbmRGcm9tQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KTsKICAgICB2b2lkIGRpZEFkZENsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50Jik7CiAgICAg
dm9pZCBkaWRGYWlsQ29udmVydGluZ1dpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAg
ICAgdm9pZCBkaWRGYWlsVXBkYXRpbmcoKTsKQEAgLTEwNiw3ICsxMDgsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcGxhdGZvcm1VbmxvY2tXaXRoUGFzc3dvcmQoY29uc3QgU3RyaW5nJik7CiAKICAg
ICAvLyBQcmV2aWV3UGxhdGZvcm1EZWxlZ2F0ZQotICAgIHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIGRlbGVnYXRlRGlkUmVj
ZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQg
ZGVsZWdhdGVEaWRGaW5pc2hMb2FkaW5nKCkgZmluYWw7CiAgICAgdm9pZCBkZWxlZ2F0ZURpZEZh
aWxXaXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCkBAIC0xMTgsNyArMTIw
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgRmluaXNoZWRDb252ZXJ0aW5nLAogICAgIH07CiAKLSAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBtX3ByZXZpZXdEYXRhOworICAgIFVuaXF1ZVJlZjxTaGFyZWRC
dWZmZXJCdWlsZGVyPiBtX3ByZXZpZXdEYXRhOwogICAgIFJlc291cmNlRXJyb3IgbV9wcmV2aWV3
RXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX29yaWdpbmFsUmVzcG9uc2U7CiAgICAgU3Rh
dGUgbV9zdGF0ZSB7IFN0YXRlOjpVcGRhdGluZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oCmluZGV4IDA0ZWEzNjgwNjkyYjI1MmExOTg5
YzI2Y2EyMDQyMTI3NzdhYTNiN2IuLjljZWU5MzMyMGIyMzhiNGNkNzNjZGQyZTAzMDJjM2JmNGRh
ZDY4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVy
Q2xpZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQ
cmV2aWV3Q29udmVydGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcmV2aWV3Q29udmVy
dGVyQ2xpZW50IDogQ2FuTWFrZVdlYWtQdHI8UHJldmlld0NvbnZlcnRlckNsaWVudD4gewogICAg
IHZpcnR1YWwgflByZXZpZXdDb252ZXJ0ZXJDbGllbnQoKSA9IGRlZmF1bHQ7CkBAIC00Miw3ICs0
Miw3IEBAIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50IDogQ2FuTWFrZVdlYWtQdHI8UHJl
dmlld0NvbnZlcnRlckNsaWVudD4gewogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVy
RGlkRmluaXNoVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFBy
ZXZpZXdDb252ZXJ0ZXImKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJE
aWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBuZXdE
YXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0
YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgbmV3RGF0
YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVy
dGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29u
dmVydGVyRGlkRmFpbENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCmlu
ZGV4IDgyNzg2MzkzZmNlZDc1NGM4NWY3YjI4OTEyNTJmNTE2YmVkMGQ1NDkuLmI5ODZlZTQwZDE5
NzUxNzRmNTRhZDI5YTE2OGNhZGYxODk0NTZjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCkBAIC0zMiw3ICszMiw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgOiBDYW5N
YWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI+IHsKICAgICB2aXJ0dWFsIH5QcmV2
aWV3Q29udmVydGVyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJv
dmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmll
d0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciopPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByb3ZpZGVQYXNzd29yZEZvclBy
ZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgU3RyaW5nJik+JiYpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCmluZGV4IGQ4ZTY4ZTMzNzc4MWZiMjlhZDM5YzU1YjlhZmQzOTAwMzUzNTM4
NWQuLjdmYWY2NzdkNzI0MDY3ODE3N2VjM2Q0OWNhYzBiMWJiYzQ4M2UwMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMzcsNjMgKzM3LDY5IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkKIHsKLSAgICBhcHBlbmQoZGF0YSwgc2l6ZSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcik7CiB9CiAK
LVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXpl
KQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBhcHBlbmQocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOwogfQogCi1T
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGZp
bGVEYXRhKQotICAgIDogbV9zaXplKGZpbGVEYXRhLnNpemUoKSkKK1JlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkKIHsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZCh7
MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSl9KTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURh
dGEpKSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92
aWRlciYmIHByb3ZpZGVyKQotICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUoKSkKK1JlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpfSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKIH0KIAotU2hh
cmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK1JlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9y
PHVpbnQ4X3Q+JiYgdmVjdG9yKQogewotICAgIGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9y
KSkpOwogfQogCi0jaWYgVVNFKEdTVFJFQU1FUikKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCitSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFT
ZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihtYXBwZWRCdWZmZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7CiB9CiAKLVNoYXJlZEJ1
ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCi0g
ICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisKK0ZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
JiBmaWxlRGF0YSkKKyAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7Ci0gICAgbV9zZWdt
ZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1ZmZlcil9KTsKKyAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxl
RGF0YSkpIH0pOwogfQotI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBt
YXlVc2VGaWxlTWFwcGluZykKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCisgICAgOiBtX3NpemUo
cHJvdmlkZXIuc2l6ZSgpKQogewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VG
aWxlTWFwcGluZzo6WWVzKSB7Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7Ci0gICAgICAg
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBw
ZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3Mp
Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1h
cHBlZEZpbGVEYXRhKSkpOwotICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVG
cm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSkgfSk7CiB9CiAKLVJlZjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKK0Zy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KFdURk1vdmUodmVjdG9yKSkpOworICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCi1z
dGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQorI2lmIFVTRShH
U1RSRUFNRVIpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihtYXBwZWRCdWZmZXIp
KTsKK30KKworRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihH
c3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQorICAgIDogbV9zaXplKG1hcHBlZEJ1
ZmZlci5zaXplKCkpCit7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6
Y3JlYXRlKCZtYXBwZWRCdWZmZXIpIH0pOworfQorI2VuZGlmCisKK3N0YXRpYyBWZWN0b3I8dWlu
dDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1
aW50OF90PiBjb21iaW5lZERhdGE7CiAgICAgY29tYmluZWREYXRhLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoc2l6ZSk7CkBAIC0xMDMsMzMgKzEwOSwxOSBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+
IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rv
cgogICAgIHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb21i
aW5lSW50b09uZVNlZ21lbnQoKSBjb25zdAorUmVmPFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKSBjb25zdAogewotI2lmIEFTU0VSVF9FTkFCTEVE
Ci0gICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8gc2V0IHRoaXMgdG8gdHJ1ZSBh
bmQgaGF2ZSBubyBhc3NlcnRpb25zIGZpcmUuCi0gICAgLy8gUmVtb3ZlIGFsbCBpbnN0YW5jZXMg
b2YgYXBwZW5kaW5nIGFmdGVyIGNhbGxpbmcgdGhpcywgYmVjYXVzZSB0aGV5IGFyZSBhbGwgTyhu
XjIpIGFsZ29yaXRobXMgc2luY2UgcjIxNTY4Ni4KLSAgICAvLyBtX2hhc0JlZW5Db21iaW5lZElu
dG9PbmVTZWdtZW50ID0gdHJ1ZTsKLSNlbmRpZgotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA8
PSAxKQotICAgICAgICByZXR1cm47Ci0KKyAgICBpZiAobV9jb250aWd1b3VzKQorICAgICAgICBy
ZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSB9OworICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkp
CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIGlmIChtX3NlZ21l
bnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9z
ZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CiAgICAgYXV0byBjb21iaW5lZERhdGEgPSBj
b21iaW5lU2VnbWVudHNEYXRhKG1fc2VnbWVudHMsIG1fc2l6ZSk7Ci0gICAgbV9zZWdtZW50cy5j
bGVhcigpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdU
Rk1vdmUoY29tYmluZWREYXRhKSl9KTsKLSAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0g
MSk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOworICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwogfQogCi1jb25zdCB1aW50
OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAotewotICAgIGlmIChtX3NlZ21lbnRzLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY29tYmluZUludG9PbmVTZWdt
ZW50KCk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwotICAgIHJldHVybiBt
X3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKLX0KLQotVmVjdG9yPHVpbnQ4X3Q+IFNoYXJl
ZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdAorVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsK
ICAgICBkYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSgpKTsKQEAgLTEzOSw3ICsxMzEs
NyBAQCBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CiAgICAg
cmV0dXJuIGRhdGE7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnRha2VEYXRh
KCkKK1ZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCiB7
CiAgICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAt
MTU0LDEzICsxNDYsMTMgQEAgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEo
KQogICAgIHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3IFNo
YXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdAorU2hhcmVkQnVm
ZmVyRGF0YVZpZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEoc2l6ZV90IHBv
c2l0aW9uKSBjb25zdAogewogICAgIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkqIGVsZW1l
bnQgPSBnZXRTZWdtZW50Rm9yUG9zaXRpb24ocG9zaXRpb24pOwogICAgIHJldHVybiB7IGVsZW1l
bnQtPnNlZ21lbnQuY29weVJlZigpLCBwb3NpdGlvbiAtIGVsZW1lbnQtPmJlZ2luUG9zaXRpb24g
fTsKIH0KIAotY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBTaGFy
ZWRCdWZmZXI6OmdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpb24pIGNvbnN0Citj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aW9u
KSBjb25zdAogewogICAgIFJFTEVBU0VfQVNTRVJUKHBvc2l0aW9uIDwgbV9zaXplKTsKICAgICBh
dXRvIGNvbXBhcmF0b3IgPSBbXShjb25zdCBzaXplX3QmIHBvc2l0aW9uLCBjb25zdCBEYXRhU2Vn
bWVudFZlY3RvckVudHJ5JiBlbnRyeSkgewpAQCAtMTcxLDcgKzE2Myw3IEBAIGNvbnN0IFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogU2hhcmVkQnVmZmVyOjpnZXRTZWdtZW50
Rm9yUG9zaXRpb24oCiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKLVN0cmluZyBTaGFyZWRCdWZm
ZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKK1N0cmluZyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0
b0hleFN0cmluZygpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwog
ICAgIGZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CkBAIC0xODEsNyArMTczLDcg
QEAgU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBz
dHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8QXJyYXlCdWZmZXI+
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIHsK
ICAgICBhdXRvIGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSksIDEpOwogICAgIGlmICghYXJyYXlCdWZm
ZXIpIHsKQEAgLTIwMCw2OCArMTkyLDYzIEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAgICAgcmV0dXJuIGFycmF5QnVmZmVy
OwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9P
bmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgbV9zZWdtZW50cy5y
ZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgp
KTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBkYXRhLm1fc2VnbWVudHMpIHsKLSAg
ICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe21fc2l6ZSwgZWxlbWVudC5zZWdtZW50
LmNvcHlSZWYoKX0pOworICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IG1fc2l6
ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICAgICAgbV9zaXplICs9IGVsZW1l
bnQuc2VnbWVudC0+c2l6ZSgpOwogICAgIH0KICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3Rl
bnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0Jl
ZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5kKGRhdGEsIGxlbmd0
aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShX
VEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBtX3NpemUsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBtX3NpemUgKz0gbGVuZ3Ro
OwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRC
dWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQordm9pZCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBBU1NFUlQo
IW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VSVCghbV9jb250aWd1
b3VzKTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7Ci0gICAgbV9zZWdtZW50cy5h
cHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKX0pOworICAg
IG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSkpIH0pOwogICAgIG1fc2l6ZSArPSBkYXRhU2l6ZTsKICAgICBBU1NFUlQoaW50ZXJuYWxs
eUNvbnNpc3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjbGVhcigpCit2b2lkIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNsZWFyKCkKIHsKICAgICBtX3NpemUgPSAwOwogICAgIG1f
c2VnbWVudHMuY2xlYXIoKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9
CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CitSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0
CiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcik7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNsb25lID0gYWRvcHRSZWYo
Km5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKTsKICAgICBjbG9uZS0+bV9zaXplID0gbV9zaXpl
OwogICAgIGNsb25lLT5tX3NlZ21lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zZWdtZW50
cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpCi0g
ICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7ZWxlbWVudC5iZWdpblBv
c2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAgIGNsb25lLT5tX3Nl
Z21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IGVsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxlbWVudC5z
ZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICBBU1NFUlQoY2xvbmUtPmludGVybmFsbHlDb25zaXN0
ZW50KCkpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1cm4g
Y2xvbmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFT
ZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOwotfQotCi12b2lkIFNoYXJlZEJ1ZmZl
cjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVp
bnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9y
RWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+
Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsKICAg
ICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBzZWdtZW50cykKICAgICAgICAgYXBwbHkoU3BhbiB7IHNl
Z21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSB9KTsKIH0KIAot
Ym9vbCBTaGFyZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYg
cHJlZml4KSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNv
bnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKIHsKICAgICBpZiAocHJlZml4
LmVtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjgzLDcgKzI3MCw3IEBAIGJvb2wg
U2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZp
eCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRC
dWZmZXI6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKK1ZlY3Rvcjx1
aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVf
dCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgaWYgKG9m
ZnNldCA+PSBzaXplKCkpCkBAIC0zMTAsMTIgKzI5NywxMiBAQCBWZWN0b3I8dWludDhfdD4gU2hh
cmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAgICAg
cmV0dXJuIGRhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGlu
YXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gY29weVRvKGRlc3RpbmF0aW9uLCAwLCBsZW5ndGgpOwogfQogCi12b2lkIFNoYXJlZEJ1
ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVu
Z3RoKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVz
dGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKGxlbmd0aCArIG9mZnNldCA8PSBzaXplKCkpOwogICAgIGlmIChvZmZzZXQgPj0gc2l6ZSgp
KQpAQCAtMzUzLDE0ICszNDAsOCBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRl
c3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogICAgIH0KIH0K
IAotYm9vbCBTaGFyZWRCdWZmZXI6Omhhc09uZVNlZ21lbnQoKSBjb25zdAotewotICAgIGF1dG8g
aXQgPSBiZWdpbigpOwotICAgIHJldHVybiBpdCAhPSBlbmQoKSAmJiArK2l0ID09IGVuZCgpOwot
fQotCiAjaWYgQVNTRVJUX0VOQUJMRUQKLWJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29u
c2lzdGVudCgpIGNvbnN0Citib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmludGVybmFsbHlD
b25zaXN0ZW50KCkgY29uc3QKIHsKICAgICBzaXplX3QgcG9zaXRpb24gPSAwOwogICAgIGZvciAo
Y29uc3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpIHsKQEAgLTM3Miw0MiArMzUzLDEzIEBA
IGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB9CiAjZW5k
aWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudDo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlz
aXRvcigKLSAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBjb25zdCB1
aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKLSNpZiBVU0UoQ0YpCi0gICAgICAgIFtd
KGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJl
dHVybiBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpOyB9LAotI2VuZGlmCi0jaWYgVVNFKEdM
SUIpCi0gICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYgZGF0YSkgLT4gY29uc3QgdWlu
dDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGdfYnl0ZXNfZ2V0X2Rh
dGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9LAotI2VuZGlmCi0jaWYgVVNFKEdTVFJFQU1FUikK
LSAgICAgICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0YSkgLT4g
Y29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9LAotI2VuZGlmCi0gICAgICAg
IFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSAtPiBjb25zdCB1aW50
OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpOyB9
LAotICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIC0+IGNvbnN0IHVpbnQ4X3Qq
IHsgcmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQotICAgICk7Ci0gICAgcmV0dXJuIHN0ZDo6dmlz
aXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKLX0KLQotYm9vbCBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9pbW11
dGFibGVEYXRhKTsKLX0KLQogI2lmICFVU0UoQ0YpCi12b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1l
bW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpo
aW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB7CiB9CiAjZW5kaWYKIAotV1RGOjpQZXJz
aXN0ZW5jZTo6RGVjb2RlciBTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAotewotICAgIHJl
dHVybiB7eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXplKCkg
fX07Ci19Ci0KLWJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgb3RoZXIpIGNvbnN0Citib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0o
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKHRo
aXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ1Niw3ICs0MDgsMTE4IEBA
IGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIp
IGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50OjpzaXplKCkgY29uc3QKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKCkKK3sKKyAg
ICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihS
ZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkKK3sKKyAgICBtX3NpemUgPSBzZWdtZW50LT5zaXpl
KCk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBXVEZNb3ZlKHNlZ21lbnQpIH0pOworICAg
IG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIpCit7CisgICAgQVNT
RVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVmZmVy
LT5pc0VtcHR5KCkpOworICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsKKyAg
ICBpZiAoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpKQorICAgICAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVudHNbMF0uc2VnbWVudC5j
b3B5UmVmKCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKworU2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQorICAgIDog
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQoreworICAgIG1fY29udGlndW91
cyA9IHRydWU7Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxl
TWFwcGluZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBp
bmc6OlllcykgeworICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOworICAgICAgICBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1v
ZGUsIG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQorICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxl
RGF0YSkpKTsKKyAgICB9CisgICAgcmV0dXJuIGNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0
aCk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Cit7Cisg
ICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7Cit9CisKK1dURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4geyB7IGRhdGEoKSwgc2l6ZSgpIH0gfTsKK30KKworUmVmPERhdGFTZWdtZW50PiBEYXRhU2Vn
bWVudDo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCit7CisgICAgZGF0YS5zaHJpbmtU
b0ZpdCgpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0
YSkpKTsKK30KKworI2lmIFVTRShDRikKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNy
ZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworfQorI2VuZGlmCisKKyNpZiBVU0Uo
R0xJQikKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShHUmVmUHRyPEdCeXRl
cz4mJiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1v
dmUoZGF0YSkpKTsKK30KKyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikKK1JlZjxEYXRhU2Vn
bWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3duZWRCdWZmZXI+JiYg
ZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRh
dGEpKSk7Cit9CisjZW5kaWYKKworUmVmPERhdGFTZWdtZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRl
KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisKK1JlZjxEYXRhU2VnbWVu
dD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKQoreworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIpKSk7Cit9CisKK2Nv
bnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKK3sKKyAgICBhdXRvIHZpc2l0
b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAorICAgICAgICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4m
IGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgpOyB9LAorI2lmIFVT
RShDRikKKyAgICAgICAgW10oY29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4mIGRhdGEpIC0+IGNv
bnN0IHVpbnQ4X3QqIHsgcmV0dXJuIENGRGF0YUdldEJ5dGVQdHIoZGF0YS5nZXQoKSk7IH0sCisj
ZW5kaWYKKyNpZiBVU0UoR0xJQikKKyAgICAgICAgW10oY29uc3QgR1JlZlB0cjxHQnl0ZXM+JiBk
YXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0sCisjZW5kaWYKKyNp
ZiBVU0UoR1NUUkVBTUVSKQorICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0TWFwcGVkT3duZWRC
dWZmZXI+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLT5kYXRhKCk7IH0s
CisjZW5kaWYKKyAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmIGRh
dGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhLmRhdGEoKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IFByb3ZpZGVyJiBwcm92aWRlcikg
LT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gcHJvdmlkZXIuZGF0YSgpOyB9CisgICAgKTsKKyAg
ICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOworfQorCitib29s
IERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4obV9p
bW11dGFibGVEYXRhKTsKK30KKworc2l6ZV90IERhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKIHsK
ICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAgICBbXShjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IHNpemVfdCB7IHJldHVybiBkYXRhLnNpemUoKTsgfSwK
QEAgLTQ3NSw3ICs1MzgsNyBAQCBzaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRh
KTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhp
blNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQorU2hhcmVkQnVmZmVyRGF0YVZp
ZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXpl
X3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKICAg
ICA6IG1fc2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpKQogICAgICwgbV9wb3NpdGlvbldpdGhpblNl
Z21lbnQocG9zaXRpb25XaXRoaW5TZWdtZW50KQogICAgICwgbV9zaXplKHNpemUgPyAqc2l6ZSA6
IG1fc2VnbWVudC0+c2l6ZSgpIC0gcG9zaXRpb25XaXRoaW5TZWdtZW50KQpAQCAtNDg5LDIyICs1
NTIsMTIgQEAgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3JiBvdGhlciwgc2kKIHsKIH0KIAotc2l6ZV90IFNoYXJlZEJ1
ZmZlckRhdGFWaWV3OjpzaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zaXplOwotfQotCi1j
b25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7Ci19Ci0K
IFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZm
ZXIoKSBjb25zdAogewotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBz
ZWdtZW50ID0gbV9zZWdtZW50OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgY29uc3QgUmVmPERhdGFTZWdt
ZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEo
KV0oKSB7IHJldHVybiBkYXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0o
KSB7IHJldHVybiBzaXplOyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNp
emU7IH0KICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApp
bmRleCBmMjNmNWQ2OWFkMzJlZDY0MGI5NTc3YjJlNmM0NTQ5MTgzOTM2OGFkLi4xMTlmMzg0ZTU4
MGY5OGI4MTQzNDJiYmE0YTIwZDYxNmZkOGJmOGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTYyLDE0NiArNjIsMTI1IEBAIGNsYXNzIERlY29kZXI7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hh
cmVkQnVmZmVyRGF0YVZpZXc7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlciA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKKy8vIERhdGEgd3Jh
cHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4g
YmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgorLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUg
dGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgorY2xhc3MgRGF0YVNlZ21lbnQg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRh
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVE
YXRhKSkpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKLSAgICBlbnVtIGNs
YXNzIE1heVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6
WWVzKTsKLQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4
X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0
ZShWZWN0b3I8dWludDhfdD4mJik7CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4g
Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKE5TRGF0YSAqKTsKLSAgICB2b2lkIGFwcGVuZChOU0RhdGEgKik7Ci0jZW5kaWYKICNp
ZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7
Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwotICAgIHZv
aWQgYXBwZW5kKENGRGF0YVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRh
U2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYpOwogI2VuZGlmCi0KICNpZiBV
U0UoR0xJQikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwot
ICAgIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYpOwog
I2VuZGlmCi0KICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYm
KTsKICNlbmRpZgotICAgIC8vIENhbGxpbmcgZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2Vn
bWVudHMgdG8gYmUgY29waWVkIGludG8gb25lIHNlZ21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVh
ZHkuCi0gICAgLy8gSXRlcmF0ZSB0aGUgc2VnbWVudHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkg
aW5zdGVhZC4KLSAgICAvLyBGSVhNRTogQXVkaXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5j
dGlvbiBhbmQgcmVwbGFjZSB0aGVtIHdpdGggaXRlcmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNv
bnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRy
KCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsg
fQotICAgIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OwotICAgIFZlY3Rvcjx1aW50
OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwotCi0gICAgLy8g
U2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRo
ZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBz
aGFyZWQpLgotICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOwotCi0gICAgLy8gQ3Jl
YXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVu
dHMgdG8gdGhhdAotICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQg
YnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlD
cmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKIAotICAg
IHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1w
dHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBT
aGFyZWRCdWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
LSAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVu
ZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAg
IHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKLQotICAgIHZvaWQgY2xlYXIoKTsKKyAg
ICBzdHJ1Y3QgUHJvdmlkZXIgeworICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBk
YXRhOworICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAgICB9OwogCi0gICAgUmVm
PFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3Rp
bmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0
aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYpOwogCi0g
ICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBi
ZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCi0gICAgLy8gVG8g
bW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50Lgot
ICAgIGNsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFT
ZWdtZW50PiB7Ci0gICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50
OF90KiBkYXRhKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkg
Y29uc3Q7CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKIAotICAgICAgICBzdGF0aWMg
UmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAg
ewotICAgICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwotICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOwotICAgICAgICB9CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7CiAKK3By
aXZhdGU6CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkK
KyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjaWYgVVNFKENG
KQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0
YVJlZj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUo
ZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+
JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAj
ZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3Jl
YXRlKEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNl
Z21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoR1JlZlB0
cjxHQnl0ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRh
KSkgeyB9CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBzdGF0aWMgUmVmPERh
dGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAg
ZXhwbGljaXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEp
CisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCi0g
ICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92
ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEp
KSB7IH0KKyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAg
ICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSAgICAgICAg
c3RydWN0IFByb3ZpZGVyIHsKLSAgICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+
IGRhdGE7Ci0gICAgICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsK
LQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92
aWRlcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVy
KSkpOyB9Ci0KLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4g
Y3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgICAgICBib29sIGNvbnRhaW5zTWFw
cGVkRmlsZURhdGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIERhdGFTZWdtZW50
KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShX
VEZNb3ZlKGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lm
IFVTRShDRikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRh
KQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAg
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAg
IERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1t
dXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAog
I2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmVmUHRyPEdz
dE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0
YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVy
PiwKICNlbmRpZgotICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7
IH0KLSAgICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKLSAgICAgICAgICAg
IDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KKyAgICAgICAgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7
CisgICAgZnJpZW5kIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CisgICAgZnJpZW5kIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNGRGF0YQorfTsKKworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90Kiwgc2l6
ZV90KTsKKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gY3JlYXRlKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50
OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CiAKLSAgICAgICAgc3RkOjp2
YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0
ZShOU0RhdGEqKTsKKyNlbmRpZgogI2lmIFVTRShDRikKLSAgICAgICAgICAgIFJldGFpblB0cjxD
RkRhdGFSZWY+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKKwogI2lmIFVTRShHTElCKQotICAg
ICAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwogI2VuZGlmCisKICNpZiBV
U0UoR1NUUkVBTUVSKQotICAgICAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURh
dGE7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAgfTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3Ro
KSBjb25zdDsKKworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlp
bmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisgICAgVmVjdG9yPHVpbnQ4X3Q+
IGV4dHJhY3REYXRhKCk7CisKKyAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3Bp
ZXMgdGhpcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAorICAgIC8v
IEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxh
dCBidWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVh
dGVBcnJheUJ1ZmZlcigpIGNvbnN0OworCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVy
biBtX3NpemU7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9
CisgICAgYm9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRpZ3VvdXM7IH0K
IAotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBj
b3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGlu
YXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29w
eVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25z
dDsKIAotICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0
IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3Qg
dWludDhfdD4mKT4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0c1dpdGgo
Y29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKworICAgIHVzaW5nIERh
dGFTZWdtZW50ID0gV2ViQ29yZTo6RGF0YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFja3dhcmQgY29t
cGF0aWJpbGl0eSB3aGVuIHVzaW5nIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBi
ZWdpblBvc2l0aW9uOwpAQCAtMjEwLDc1ICsxODksMTk3IEBAIHB1YmxpYzoKICAgICB1c2luZyBE
YXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAg
ICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVy
biBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRl
cmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5lbmQoKTsgfQotICAgIGJvb2wg
aGFzT25lU2VnbWVudCgpIGNvbnN0OworICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID09IDE7IH0KIAogICAgIC8vIGJlZ2luIGFuZCBlbmQg
dGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRpbWUuCi0gICAgU2hhcmVkQnVm
ZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRp
b24pIGNvbnN0OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhpbnRNZW1v
cnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVy
IGRlY29kZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJh
dG9yPT0ob3RoZXIpOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVy
JikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQorICAgIFdFQkNPUkVfRVhQT1JU
IFJlZjxTaGFyZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CiAKLXByaXZhdGU6Ci0g
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rv
cjx1aW50OF90PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQ
cm92aWRlciYmKTsKK3Byb3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwor
CisgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29sIG1fY29udGlndW91
cyB7IGZhbHNlIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KCk7CisgICAgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KKyAgICBleHBsaWNpdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IGFw
cGVuZChkYXRhLCBzaXplKTsgfQorICAgIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIo
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgeyBhcHBlbmQoV1RGTW92ZShkYXRhKSk7IH0KKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06
Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7
CiAjaWYgVVNFKENGKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVm
KTsKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0
ZXMqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KEdCeXRlcyopOwogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5k
aWYKKyAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogCi0gICAgdm9pZCBjb21iaW5lSW50b09uZVNl
Z21lbnQoKSBjb25zdDsKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1
aWxkZXI7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBs
ZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBs
ZW5ndGgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+
JiYpOworI2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
KE5TRGF0YSAqKTsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFwcGVuZChDRkRhdGFSZWYpOworI2VuZGlmCiAKLSAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNl
Z21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJp
bmcgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CiAKKyAgICAvLyBDb21iaW5lcyBhbGwgdGhl
IHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xl
YXJpbmcgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgVmVj
dG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRy
eSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9uKSBjb25zdDsKIAotICAg
IHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCk7Ci0KLSAgICBzaXplX3QgbV9zaXplIHsgMCB9OwotICAgIG11dGFi
bGUgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKLQogI2lmIEFTU0VSVF9FTkFCTEVECi0g
ICAgbXV0YWJsZSBib29sIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgeyBmYWxzZSB9
OwogICAgIGJvb2wgaW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdDsKICNlbmRpZgogfTsKIAot
aW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKKy8vIEEg
U2hhcmVkQnVmZmVyIGlzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB0aGF0IGFsbG93cyB0byBk
aXJlY3RseSBhY2Nlc3MgaXRzIGNvbnRlbnQgdmlhIHRoZSBkYXRhKCkgYW5kIHJlbGF0ZWQgbWV0
aG9kcy4KK2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IHsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAg
aWYgY29uc3RleHByICghc2l6ZW9mLi4uKEFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6
ZW9mLi4uKEFyZ3MpID09IDEKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBS
ZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsK
KyAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQorICAgIFdURjo6UGVyc2lzdGVuY2U6OkRl
Y29kZXIgZGVjb2RlcigpIGNvbnN0OworCisgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGlu
ZyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVN
b2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7
CisKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNE
YXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKKyNl
bmRpZgorI2lmIFVTRShHTElCKQorICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBj
cmVhdGVHQnl0ZXMoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQ
T1JUIFNoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
OworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKK307CisKK2NsYXNzIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgU2hh
cmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CisgICAgeworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRv
IHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFzIGFsbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAgICAgLy8gb25jZSBjcmVhdGVkLgorICAgICAgICBp
ZiAoIWJ1ZmZlciB8fCAoYnVmZmVyLT5oYXNPbmVSZWYoKSAmJiAhYnVmZmVyLT5pc0NvbnRpZ3Vv
dXMoKSkpIHsKKyAgICAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGFwcGVuZCgqYnVmZmVyKTsKKyAgICB9
CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCisgICAgeworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byB0YWtl
IGEgcmVmZXJlbmNlIHRvIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFzIGFsbCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyIHNob3VsZCBiZSBpbW11dGFibGUKKyAgICAgICAgLy8gb25jZSBjcmVh
dGVkLgorICAgICAgICBpZiAoYnVmZmVyLT5oYXNPbmVSZWYoKSAmJiAhYnVmZmVyLT5pc0NvbnRp
Z3VvdXMoKSkgeworICAgICAgICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVy
LmdldCgpKSk7CisgICAgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIoQXJncyYmLi4uIGFyZ3MpCisgICAgICAgIDogbV9idWZmZXIoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikp
IHsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBhcHBlbmQo
QXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICAgICAg
bV9idWZmZXItPmFwcGVuZChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIH0KKwor
ICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhaXNOdWxsKCk7IH0K
KyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlcjsgfQorICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6
IHRydWU7IH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBt
X2J1ZmZlci0+c2l6ZSgpIDogMDsgfQorCisgICAgdm9pZCByZXNldCgpIHsgbV9idWZmZXIgPSBu
dWxscHRyOyB9CisgICAgdm9pZCBlbXB0eSgpCisgICAgeworICAgICAgICByZXNldCgpOworICAg
ICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICB9CisKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZm
ZXItPmNvcHkoKSA6IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CisgICAgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHRha2UoKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVm
ZmVyKCk7CisgICAgICAgIHJldHVybiBtX2J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICB2b2lkIGVuc3VyZUJ1ZmZlcigpCisgICAgeworICAgICAgICBpZiAo
IW1fYnVmZmVyKQorICAgICAgICAgICAgbV9idWZmZXIgPSBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKKyAgICB9CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyOworfTsKKworaW5saW5lIFZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpleHRyYWN0RGF0YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigpKQogICAgICAgICByZXR1
cm4gdGFrZURhdGEoKTsKICAgICByZXR1cm4gY29weURhdGEoKTsKIH0KIAotY2xhc3MgV0VCQ09S
RV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZp
ZXcgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgU2hhcmVkQnVmZmVyRGF0
YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7Ci0gICAg
c2l6ZV90IHNpemUoKSBjb25zdDsKLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYm
LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3
U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0
YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7CisgICAg
c2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBjb25zdCB1aW50OF90
KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0
aGluU2VnbWVudDsgfQogICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJl
dHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VY
UE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKICNpZiBV
U0UoRk9VTkRBVElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBj
b25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudD4gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9zZWdtZW50
OwogICAgIGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBjb25zdCBz
aXplX3QgbV9zaXplOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmNwcAppbmRleCBjZGI2ZTcwMzQwNGQ0MjZkZDIxYjQ3OWZhODlj
MGRhOWI4YzQ5ZjhlLi45ZDA1NWNlMjdkODhjM2Q2MmU1YmQxY2Q0NmFkOTFmNWNjNDMxZjQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJM
RShNSFRNTCkKIAotU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcikK
K1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKQog
ICAgIDogbV9pdGVyYXRvckN1cnJlbnQoYnVmZmVyLT5iZWdpbigpKQogICAgICwgbV9pdGVyYXRv
ckVuZChidWZmZXItPmVuZCgpKQogICAgICwgbV9zZWdtZW50KG1faXRlcmF0b3JDdXJyZW50ICE9
IG1faXRlcmF0b3JFbmQgPyBtX2l0ZXJhdG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0YSgpIDogbnVs
bHB0cikKQEAgLTQ0LDcgKzQ0LDcgQEAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWMKIHsKIH0KIAot
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1
ZmZlciogYnVmZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCitTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVm
ZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVudChidWZm
ZXItPmJlZ2luKCkpCiAgICAgLCBtX2l0ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAgLCBt
X3NlZ21lbnQobV9pdGVyYXRvckN1cnJlbnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRlcmF0b3JD
dXJyZW50LT5zZWdtZW50LT5kYXRhKCkgOiBudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKaW5kZXggNWQ0ZTZmZWU1ODJjNjYx
NmZkMDdlMzk5NGZmNzVjOGYwN2EyZmNlMS4uMWM2NDA4ZDRjNzM2YTFjNGE0NWNlZTdiM2Y2OTY1
N2JjOWEyNjE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXJDaHVua1JlYWRlci5oCkBAIC00MSw4ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgewogcHVibGljOgot
ICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFZlY3Rvcjxj
aGFyPiYgc2VwYXJhdG9yKTsKLSAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZm
ZXIqLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpOworICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcik7
CisgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNv
bnN0IGNoYXIqIHNlcGFyYXRvcik7CiAKICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBWZWN0
b3I8Y2hhcj4mKTsKICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBjaGFyKik7CkBAIC01OCw4
ICs1OCw4IEBAIHB1YmxpYzoKICAgICBzaXplX3QgcGVlayhWZWN0b3I8dWludDhfdD4mLCBzaXpl
X3QpOwogCiBwcml2YXRlOgotICAgIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNv
bnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JDdXJyZW50OwotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JFbmQ7CisgICAgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1f
aXRlcmF0b3JDdXJyZW50OworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yRW5kOwogICAgIGNvbnN0IHVp
bnQ4X3QqIG1fc2VnbWVudCB7IG51bGxwdHIgfTsKICAgICBzaXplX3QgbV9zZWdtZW50SW5kZXgg
eyAwIH07CiAgICAgVmVjdG9yPGNoYXI+IG1fc2VwYXJhdG9yIHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKaW5kZXggYjJkN2E1NTBkNDYw
ZTk0Y2QzMTUxMzRhMzE5NWJjZDkxYzdiNzg5NC4uYTRiNGJiMTA0YjRkODQwMTViOGFhNWI1M2U3
ZGZhNzg4Y2VkMjVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGlj
UGFzdGVib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVi
b2FyZC5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZVN0
cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9jdXN0
b21EYXRhLndyaXRlU3RyaW5nKHR5cGUsIHZhbHVlKTsKIH0KIAotdm9pZCBTdGF0aWNQYXN0ZWJv
YXJkOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRh
dGEpCit2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgbV9ub25EZWZhdWx0
RGF0YVR5cGVzLmFkZCh0eXBlKTsKICAgICBtX2N1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIFdU
Rk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGlj
UGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5o
CmluZGV4IGMwOWI2ZGUzMWYyZWRlYmUwMTg4ZGM5YzQ2NmEyNzFlMWI4YjllMTQuLmVkZDcxMzYy
M2YwNmQyMmIzOGU4MzJhMjgzN2ZlNjY5OTlkZmQ3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBTdGF0aWNQYXN0ZWJvYXJkIGZpbmFsIDogcHVibGljIFBhc3RlYm9hcmQg
ewogcHVibGljOgpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHJlYWRTdHJp
bmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBmaW5hbDsKIAogICAgIHZvaWQgd3Jp
dGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpIGZpbmFsOwot
ICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhKTsKKyAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdJbkN1c3Rv
bURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHZvaWQg
Y2xlYXIoKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5m
by5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaAppbmRl
eCA2ODc5NTkwMGM1YWRmOWNjOTA0NWUwZWFiYjIyYjE4ZmE2Njk2MzE0Li4xZDY1YmM0MDNhZDg1
MjQzYzY3MjVlNzA0NDhkNmNkYWRjY2NjZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogc3RydWN0IE5vd1BsYXlpbmdJbmZvQXJ0d29yayB7CiAgICAgU3RyaW5nIHNyYzsK
ICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRh
OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CiAKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTm93UGxheWluZ0luZm9BcnR3b3JrJiBvdGhlcikgY29uc3QK
ICAgICB7CkBAIC02Nyw3ICs2Nyw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBz
dGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gTm93UGxheWluZ0luCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGltYWdlRGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGltYWdlRGF0YSkp
CiAgICAgICAgIHJldHVybiB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAppbmRleCBlOGIx
OWJmMzRlYmEyM2I4NTcyMDdiZTg4Y2UxYjQ1YmY4ZjJjY2MzLi5mMzIxNDI5NTFiMTc5OTZlNmNl
MTY3NTYzMTZiZmQ0NzNmYWE0ZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCkBAIC0xMzAs
NyArMTMwLDcgQEAgY2xhc3MgQXVkaW9GaWxlUmVhZGVyV2ViTURhdGEgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCiAgICAgUmVmPEF1ZGlvVHJhY2tQcml2YXRlV2ViTT4gbV90cmFjazsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5
YTRkM2FiMzZlMmEwYzA4MTJjOTRlMTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUx
MDg5YjU3MTlmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICsz
NDEsNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8o
Ym9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUs
IGNmQ3VycmVudFRpbWUuZ2V0KCkpOwogICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0
d29yayAmJiBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0
byBuc0FydHdvcmsgPSBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmst
PmltYWdlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0lu
Zm9BcnR3b3JrRGF0YSwgbnNBcnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1F
VHlwZSwgbm93UGxheWluZ0luZm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlh
UmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93
UGxheWluZ0luZm8uYXJ0d29yay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXgg
NmI2NjIxN2ZmMTYxZGUzNzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uODE5ZTI2ZmE0Y2YwNjc5
NTdhNTlmZWYyOWM5OWYwM2Y1ZjQ0OTFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQorRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0
YSkKIHsKICAgICBhcHBlbmQoZGF0YSk7CiB9CkBAIC00MywyNCArNDMsMjAgQEAgU2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCiAjaWYgIVVTRShGT1VOREFUSU9OKQog
UmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAog
ewotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7CisgICAgaWYgKGhhc09uZVNlZ21l
bnQoKSkgewogICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0X2lmPFJldGFpblB0cjxD
RkRhdGFSZWY+PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpKQogICAg
ICAgICAgICAgcmV0dXJuICpkYXRhOwogICAgIH0KLSAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0Yo
Q0ZEYXRhQ3JlYXRlTXV0YWJsZShudWxscHRyLCBzaXplKCkpKTsKLSAgICBmb3JFYWNoU2VnbWVu
dChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICBDRkRhdGFBcHBlbmRCeXRlcyhjZkRhdGEu
Z2V0KCksIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAgfSk7Ci0gICAgcmV0
dXJuIGNmRGF0YTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgZGF0
YSgpLCBzaXplKCkpKTsKIH0KICNlbmRpZgogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShDRkRhdGFSZWYgZGF0YSkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGRhdGEpKTsKIH0KIAotdm9pZCBTaGFyZWRC
dWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogewogICAgIGZvciAo
Y29uc3QgYXV0byYgZW50cnkgOiBtX3NlZ21lbnRzKSB7CiAgICAgICAgIGlmIChlbnRyeS5zZWdt
ZW50LT5oYXNPbmVSZWYoKSkgewpAQCAtNzAsOSArNjYsOCBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6
aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogICAgIH0KIH0KIAotdm9pZCBTaGFyZWRC
dWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmlu
ZWRJbnRvT25lU2VnbWVudCk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50cy5h
cHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0pOwogICAgICAgICBtX3Np
emUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKaW5k
ZXggMDc5N2RmYmU4ZDAxOGJlNjM2MTc0NGM1OGY4OTJkZDU2ZWQ2ODljNS4uY2JlODc3MWE0NWQ4
NjJjYjVhYjA1ZWNhMzk5OTI3ZTA3ODM4ZjU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5o
CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRk
aW5nRGF0YSgpIG92ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0
YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBs
YWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBib29sIGlzUmVxdWlyZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0K
aW5kZXggNDI5MGRiMTI4ZDAwMGE0MGVlZjcwZmQyOTQxZDYzNDQ5MDQ2ZGUwMy4uMmVmMjcwMWZl
Njc4YmY5YjkyZGIyMTJiYmVhNWM5MTVhM2ZjM2EyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXIubW0KQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQogICAgIHNlbWFwaG9yZS53YWl0KCk7CiB9CiAKLVJl
ZjxTaGFyZWRCdWZmZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVu
dERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE5ldHdvcmtFeHRlbnNp
b25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChk
aWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVwbGFj
ZW1lbnREYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCmluZGV4IDA2OGNkY2Iz
ODNmNDIzNjVhYzMyNjRlMjI5YTZkNjNiYzJiNGFiZDYuLjY3OWFlOTMyOTUxN2UxZjM5NDNiYTU3
NjJhYzhmNTZlODYwYzhjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaApAQCAtNDUsNyAr
NDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBv
dmVycmlkZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRh
KCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIENv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRl
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJl
bnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCmluZGV4IGI0NjFmOTc1MzZkZTNh
MTU4MTNhNTgyN2I4NjcxMzhiOTZkNGYzOGMuLjFjOTYwNDcxNmI0MjY5M2Q1ZTQ2YzJlMjNlOTQx
ZGEwMGM4M2U0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCkBAIC0xMDksNyArMTA5
LDcgQEAgdm9pZCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6ZmluaXNoZWRBZGRpbmdE
YXRhKCkKICAgICB1cGRhdGVGaWx0ZXJTdGF0ZSgpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBQ
YXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKK1Jl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6
cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkpOwog
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5nZXQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0K
aW5kZXggNmYyOGU4MjQzNjBjY2QzMDg2YzAzMThmYWU0MDk4ZjFlZGUyOGUyNS4uYjgxNzA4MTdj
ZWM1OWUyMmQzYzBlOWE3OGYxNDZjMDMzZTRjMTY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpAQCAtNDcsNyArNDcsNyBAQCBzdGF0
aWMgTlNCaXRtYXBJbWFnZUZpbGVUeXBlIGJpdG1hcFBOR0ZpbGVUeXBlKCkKIH0KICNlbmRpZiAv
LyBQTEFURk9STShNQUMpCiAKLS8vIE1ha2luZyB0aGlzIG5vbi1pbmxpbmUgc28gdGhhdCBXZWJL
aXQgMidzIGRlY29kaW5nIGRvZXNuJ3QgaGF2ZSB0byBpbmNsdWRlIFNoYXJlZEJ1ZmZlci5oLgor
Ly8gTWFraW5nIHRoaXMgbm9uLWlubGluZSBzbyB0aGF0IFdlYktpdCAyJ3MgZGVjb2RpbmcgZG9l
c24ndCBoYXZlIHRvIGluY2x1ZGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci5oLgogUGFzdGVib2Fy
ZFdlYkNvbnRlbnQ6OlBhc3RlYm9hcmRXZWJDb250ZW50KCkgPSBkZWZhdWx0OwogUGFzdGVib2Fy
ZFdlYkNvbnRlbnQ6On5QYXN0ZWJvYXJkV2ViQ29udGVudCgpID0gZGVmYXVsdDsKIApAQCAtMjEx
LDkgKzIxMSw5IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzRm9yTGVnYWN5VW5z
YWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgdGlmZkJ1ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1h
Z2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQo
KV0pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10g
aW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9uVXNp
bmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKICAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCmluZGV4IDllZTBjMGI1NWQ3OTRj
MmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLjI1ZjMxMWYyNTg5YjgyZWZkMjU3N2EwODg5NGI2
YzVlMDY2YjkyNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1No
YXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1No
YXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEgQEAKICNpbXBvcnQgPHd0Zi9jb2Nv
YS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIDog
TlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRpb246KE5TVUlu
dGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVu
dCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemU7CiBA
ZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSB7Ci0gICAgUmVm
UHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVu
dDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQ+IF9kYXRhU2VnbWVudDsK
ICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJbnRlZ2VyIF9zaXplOwogfQpAQCAt
NjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAK
LS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilw
b3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERh
dGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQgcG9zaXRp
b246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplCiB7CiAgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC04OCwxMyAr
ODgsMTQgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkKK1JlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoTlNEYXRhICpkYXRhKQogewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihicmlkZ2VfY2FzdChkYXRhKSkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoYnJpZGdl
X2Nhc3QoZGF0YSkpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRh
dGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEpCiB7
CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIHJldHVybiBhcHBlbmQoYnJpZGdlX2Nh
c3QoZGF0YSkpOwogfQogCkBAIC0xMDUsMTAgKzEwNiw4IEBAIFJldGFpblB0cjxOU0RhdGE+IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIAogUmV0YWluUHRyPENGRGF0YVJlZj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAgIGNvbWJpbmVJbnRvT25l
U2VnbWVudCgpOwogICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBh
ZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7Ci0gICAgQVNTRVJUKG1f
c2VnbWVudHMuc2l6ZSgpID09IDEpOwogICAgIHJldHVybiBicmlkZ2VfY2FzdChtX3NlZ21lbnRz
WzBdLnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpKTsKIH0KIApAQCAtMTE5LDE0ICsxMTgsMTQgQEAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUmV0YWlu
UHRyPE5TQXJyYXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAorUmV0
YWluUHRyPE5TQXJyYXk+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5
KCkgY29uc3QKIHsKICAgICByZXR1cm4gY3JlYXRlTlNBcnJheShtX3NlZ21lbnRzLCBbXSAoYXV0
byYgc2VnbWVudCkgewogICAgICAgICByZXR1cm4gc2VnbWVudC5zZWdtZW50LT5jcmVhdGVOU0Rh
dGEoKTsKICAgICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IERhdGFTZWdt
ZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29y
ZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNlZ21lbnQ6KnRoaXMgcG9zaXRp
b246MCBzaXplOnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKaW5kZXggZmJjMjgzZmJjMzM2OWJmODI3ZTMx
Njk5NGM0Yzk0ZTA2MzYzY2I4MS4uMmRlNDE5MzRkYTE5ODc5ZDc1YzBkZjhhODllNjRlNTk5YzI5
YWUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNSW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1JbnN0YW5jZS5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIExvZ2dlcjsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uOwogc3RydWN0IENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb247CiAKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgQ0RNSW5zdGFuY2VDbGll
bnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZUNsaWVudCgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1
YWwgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmlu
ZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZXF1ZXN0
ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogLy8gSmF2YVNjcmlwdCdzIGhhbmRsZSB0byBh
IENETUluc3RhbmNlLCBtdXN0IGJlIHVzZWQgZnJvbSB0aGUKQEAgLTk4LDcgKzk4LDcgQEAgcHVi
bGljOgogICAgIH07CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0
aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRl
bnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYm
LCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTZXJ2ZXJDZXJ0
aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcm
KSA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCmluZGV4IDM3Y2QwN2M3YmYyZGM3NWU0MWZkNWM2Yzdk
ZWNmNDNlMTAzOWUxMTQuLmQyNTkyMjViYTllMDJhNjRkMGNlY2Q2MTUxZmRmOTNmNGYyNDY2YTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUlu
c3RhbmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCkBAIC00MywxNiArNDMsMTYgQEAgY2xhc3MgTG9nZ2Vy
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudCA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZVNlc3Npb25DbGllbnQoKSA9IGRlZmF1bHQ7CiAK
ICAgICB1c2luZyBLZXlTdGF0dXMgPSBDRE1LZXlTdGF0dXM7Ci0gICAgdXNpbmcgS2V5U3RhdHVz
VmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47
CisgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4sIEtleVN0YXR1cz4+OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVL
ZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZW5k
TWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlc3Np
b25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHVzaW5nIFBsYXRmb3JtRGlzcGxh
eUlEID0gdWludDMyX3Q7CiAgICAgdmlydHVhbCBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQo
KSA9IDA7CkBAIC03OCwxMyArNzgsMTMgQEAgcHVibGljOgogICAgICAgICBTdWNjZWVkZWQsCiAg
ICAgfTsKIAotICAgIHVzaW5nIExpY2Vuc2VDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
Ym9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Ci0g
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VD
YWxsYmFjayYmKSA9IDA7CisgICAgdXNpbmcgTGljZW5zZUNhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFs
dWUgc3VjY2VlZGVkKT47CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgPSAwOwogCiAgICAgdXNpbmcg
S2V5U3RhdHVzVmVjdG9yID0gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0
b3I7Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6cGFpcjxNZXNzYWdlVHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4+OworICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxi
YWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0ZDo6
b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxNZXNzYWdlPiYmIG1lc3Nh
Z2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNh
bGxiYWNrJiYpID0gMDsKIAogICAgIGVudW0gY2xhc3MgU2Vzc2lvbkxvYWRGYWlsdXJlIDogdWlu
dDhfdCB7CiAgICAgICAgIE5vbmUsCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIHVz
aW5nIENsb3NlU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsKICAg
ICB2aXJ0dWFsIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9z
ZVNlc3Npb25DYWxsYmFjayYmKSA9IDA7CiAKLSAgICB1c2luZyBSZW1vdmVTZXNzaW9uRGF0YUNh
bGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChLZXlTdGF0dXNWZWN0b3ImJiwgc3RkOjpv
cHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiwgU3VjY2Vzc1ZhbHVlKT47CisgICAgdXNpbmcg
UmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3Rh
dHVzVmVjdG9yJiYsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYm
LCBTdWNjZXNzVmFsdWUpPjsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxi
YWNrJiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAppbmRleCBjYzZkYzdmMTQwY2Q2N2QyYjdi
ODRmNmFiMmMyODQzMTZkZmRkY2NmLi41MmE2MTQ4YzgzY2Q1MzkzYzhmODc0ZWQ4NWFkOGJmMjdl
NWJlNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNUHJpdmF0ZS5oCkBAIC03Myw4ICs3Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgbG9hZEFuZEluaXRpYWxpemUoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Vy
dmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nl
c3Npb25zKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25z
dCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3Bv
bnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikg
Y29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKaW5kZXggZjIxOGY5NzkwNGZiYmE0OWYxZWJk
ZjQ4ZTIwNWZlNzNkZmFmYjY0OC4uNGJhNzViZjAwZDlmNzEzYjVhZmJiYTc5MzQwMTk3MTZjZDhm
MDM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVByb3h5LmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5
U3RhdHVzVmVjdG9yIEtleVN0b3JlOjpjb252ZXJ0VG9KU0tleVN0YXR1c1ZlY3RvcigpIGNvbnN0
CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzVmVjdG9y
OwogICAgIGtleVN0YXR1c1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bUtleXMoKSk7
CiAgICAgZm9yIChjb25zdCBhdXRvJiBrZXkgOiBtX2tleXMpCi0gICAgICAgIGtleVN0YXR1c1Zl
Y3Rvci51bmNoZWNrZWRBcHBlbmQoc3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBDRE1JbnN0
YW5jZVNlc3Npb246OktleVN0YXR1cz4geyBrZXktPmlkQXNTaGFyZWRCdWZmZXIoKSwga2V5LT5z
dGF0dXMoKSB9KTsKKyAgICAgICAga2V5U3RhdHVzVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChzdGQ6
OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBDRE1JbnN0YW5jZVNlc3Npb246Oktl
eVN0YXR1cz4geyBrZXktPmlkQXNTaGFyZWRCdWZmZXIoKSwga2V5LT5zdGF0dXMoKSB9KTsKICAg
ICByZXR1cm4ga2V5U3RhdHVzVmVjdG9yOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaAppbmRleCBhNTg0YjZjZDI2NmIwOTgwOTAy
NTRkN2RjYmRkYmY2MGQ5MzMxZmJiLi5lMWUwOThhMWQ1ZjVmZmM2NWMyYTQ4ZmE0MGFhOTcyZmU4
OWUxZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVByb3h5LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgS2V5SGFuZGxlKHN0YXR1cywgV1RGTW92ZShrZXlJRCksIFdURk1v
dmUoa2V5SGFuZGxlVmFsdWUpKSk7CiAgICAgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGlkQXNT
aGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lkLmRh
dGEoKSwgbV9pZC5zaXplKCkpOyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGlk
QXNTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lk
LmRhdGEoKSwgbV9pZC5zaXplKCkpOyB9CiAKICAgICBib29sIHRha2VWYWx1ZUlmRGlmZmVyZW50
KEtleUhhbmRsZVZhbHVlVmFyaWFudCYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKaW5kZXggNWJlYmNiNDlh
YThlYjlhMmJiMDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4uZmNhNmYyMzg4YTU2YTZhMWM3MjQ3MGU1
YTQ2ZmRkMjhmMDczNzUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIENETVV0aWxpdGllcyB7CiAKLVJlZlB0cjxKU09O
OjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1Jl
ZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gRmFpbCBvbiBsYXJnZSBidWZmZXJzIHdob3NlIHNp
emUgZG9lc24ndCBmaXQgaW50byBhIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLgogICAgIHNpemVf
dCBzaXplID0gYnVmZmVyLnNpemUoKTsKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPEpTT046Ok9i
amVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMg
SlNPTiwgcmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNv
biB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0
cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHNpemUpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNl
SlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaAppbmRleCA3NGY1MTViMGJkMmE4
NzE2OGVlZjI0YjE4Zjk1ZGVhYmVlODI4ZTZjLi5mY2Y1YmRkYTdjNTk3ZDNjM2FjMzQ5ZWUxNzg5
ZTRhZDZlMGM5NTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaApAQCAtMzUsMTEgKzM1LDExIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIENETVV0aWxpdGllcyB7CiAKLVJlZlB0cjxKU09OOjpPYmpl
Y3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImKTsKK1JlZlB0cjxKU09OOjpP
YmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCBkZDM0NTdiZmRlOGM5MjE4
NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVkLi4zMWE5ZmRmYTAyZDZkMDBjYTI2MTgyNTJkZWQ5MzUz
MTNkYzU4YWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzAsNyArMTMw
LDcgQEAgc3RhdGljIGJvb2wgcGFyc2VMaWNlbnNlUmVsZWFzZUFja25vd2xlZGdlbWVudEZvcm1h
dChjb25zdCBKU09OOjpPYmplY3QmIHJvb3QpCiAvLyBdOwogCiAvLyBUaGlzIGZ1bmN0aW9uIGV4
dHJhY3RzIHRoZSBLZXlJZHMgY291bnQgYW5kIHRoZSBsb2NhdGlvbiBvZiB0aGUgZmlyc3QgS2V5
SWQgaW4gaW5pdERhdGEgYnVmZmVyLgotc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRy
YWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGluaXREYXRhKQogewogICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtl
eUlkc01hcCgwLCAwKTsKIApAQCAtMTM4LDcgKzEzOCw4IEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNv
bnN0CiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIHJldHVybiBrZXlJZHNN
YXA7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOworICAgIGF1dG8gY29udGln
dW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvKiBkYXRh
ID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAgICAgdW5zaWduZWQgaW5pdERhdGFTaXpl
ID0gaW5pdERhdGEuc2l6ZSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICB1bnNpZ25l
ZCBwc3NoU2l6ZSA9IDA7CkBAIC0xODgsMTUgKzE4OSwxNSBAQCBzdGF0aWMgc3RkOjpwYWlyPHVu
c2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShj
b25zdAogfQogCiAvLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgaW5pdERhdGEgc2hhcmVk
QnVmZmVyIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KLXN0YXRpYyBib29sIGlzQ2VuY0luaXRE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitzdGF0aWMgYm9vbCBpc0NlbmNJbml0
RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBzdGQ6
OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRp
b25Gcm9tQ2VuY0luaXREYXRhKGluaXREYXRhKTsKICAgICByZXR1cm4gKChrZXlJZHNNYXAuZmly
c3QpICYmIChrZXlJZHNNYXAuc2Vjb25kKSk7CiB9CiAKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRE
YXRhKQorc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJv
bUNlbmNJbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsK
LSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgc3RkOjpwYWlyPHVuc2lnbmVk
LCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0
RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWduZWQga2V5SWRDb3VudCA9IGtleUlkc01hcC5maXJz
dDsKQEAgLTIwNCw5ICsyMDUsMTAgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RL
ZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIC8v
IENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KICAgICBpZiAoIWtl
eUlkQ291bnQgfHwgIWluZGV4KQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1
cm4ga2V5SWRzLnRha2UoKTsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7Cisg
ICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOwor
ICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKIAogICAgIGF1dG8g
b2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0g
SlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjI0LDE3ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgaW5pdEQKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlk
c0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCku
dXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVu
Z3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5k
YXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0K
IAotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwog
CiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAg
IGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAg
ICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0
OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgp
OwpAQCAtMjQ1LDEyICsyNDcsMTIgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RL
ZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGEKICAgICAvLyBU
aGUgZm9ybWF0IGlzIGEgSlNPTiBvYmplY3QgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIG1lbWJl
cnM6CiAgICAgLy8gImtpZHMiCiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5IElEcy4gRWFjaCBlbGVt
ZW50IG9mIHRoZSBhcnJheSBpcyB0aGUgYmFzZTY0dXJsIGVuY29kaW5nIG9mIHRoZSBvY3RldCBz
ZXF1ZW5jZSBjb250YWluaW5nIHRoZSBrZXkgSUQgdmFsdWUuCi0gICAga2V5SWRzQXJyYXktPnB1
c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0
YS5zaXplKCkpKTsKKyAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVU
b1N0cmluZyhpbml0RGF0YS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLnNpemUo
KSkpOwogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoa2V5SWRzQXJyYXkp
KTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCk7
Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7
Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25EYXRhLmRhdGEoKSwg
anNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCiBDRE1G
YWN0b3J5Q2xlYXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xldG9uKCkKQEAgLTM4OCw3
ICszOTAsNyBAQCBib29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNTZXNzaW9ucygpIGNv
bnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVk
QnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhlIGlu
aXREYXRhIGJ1ZmZlciBhcyBhbiBKU09OIG9iamVjdCBpbiBrZXlpZHMgY2FzZS4KICAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRzIikgJiYg
Q0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QoaW5pdERhdGEpKQpAQCAtNDA1LDcgKzQwNyw3
IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25zZShjb25z
dCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IENETVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUg
cmVzcG9uc2UgYnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0LgogICAgIGlmICghQ0RNVXRpbGl0aWVz
OjpwYXJzZUpTT05PYmplY3QocmVzcG9uc2UpKQpAQCAtNDMxLDcgKzQzMyw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VDbGVhcktleTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyCiAgICAgY2FsbGJhY2soc3VjY2VlZGVkKTsKIH0KIAotdm9pZCBDRE1J
bnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYm
LCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6
c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nl
c3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIC8vIFJlamVjdCBzZXR0aW5nIGFueSBzZXJ2
ZXIgY2VydGlmaWNhdGUuCiAgICAgY2FsbGJhY2soRmFpbGVkKTsKQEAgLTQ1Myw3ICs0NTUsNyBA
QCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBDRE1JbnN0YW5jZUNsZWFyS2V5OjpjcmVhdGVT
ZXNzaW9uKCkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENETUluc3RhbmNlU2Vzc2lvbkNsZWFy
S2V5KCp0aGlzKSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQor
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHN0
YXRpYyB1aW50MzJfdCBzX3Nlc3Npb25JZFZhbHVlID0gMDsKICAgICArK3Nfc2Vzc2lvbklkVmFs
dWU7CkBAIC00NzUsNyArNDc3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGkKICAgICAgICAg
fSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwg
TGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAjaWYgTE9HX0RJU0FCTEVECiAg
ICAgLy8gV2Ugb25seSB1c2UgdGhlIHNlc2lvbiBJRCBmb3IgZGVidWcgbG9nZ2luZy4gVGhlIHZl
cmJvc2UgcHJlcHJvY2Vzc29yIGNoZWNrcyBhcmUgYmVjYXVzZQpAQCAtNTY2LDcgKzU2OCw3IEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlCiAgICAgQVNTRVJUKHNlc3Npb25JZCA9PSBtX3Nlc3Np
b25JRCk7CiAKICAgICBhdXRvIGRpc3BhdGNoQ2FsbGJhY2sgPQotICAgICAgICBbd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfSwgJmNhbGxiYWNrXShLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0
dXNWZWN0b3IsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYgbWVzc2FnZSwgU3Vj
Y2Vzc1ZhbHVlIHN1Y2Nlc3MpIHsKKyAgICAgICAgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH0sICZjYWxsYmFja10oS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzVmVjdG9yLCBzdGQ6Om9w
dGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBTdWNjZXNzVmFs
dWUgc3VjY2VzcykgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZCgKICAgICAgICAgICAg
ICAgICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKndlYWtUaGlzIH0sIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIGtleVN0YXR1c1ZlY3RvciA9IFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwg
bWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHN1Y2Nlc3NdKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCkBAIC01NzksNyArNTgxLDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIExpY2UKICAgICAvLyBDb25zdHJ1Y3QgdGhlIEtleVN0YXR1c1ZlY3RvciBvYmpl
Y3QsIHJlcHJlc2VudGluZyByZWxlYXNlZCBrZXlzLCBhbmQgdGhlIG1lc3NhZ2UgaW4gdGhlCiAg
ICAgLy8gJ2xpY2Vuc2UgcmVsZWFzZScgZm9ybWF0LgogICAgIEtleVN0YXR1c1ZlY3RvciBrZXlT
dGF0dXNWZWN0b3IgPSBtX2tleVN0b3JlLmFsbEtleXNBcyhDRE1JbnN0YW5jZVNlc3Npb246Oktl
eVN0YXR1czo6UmVsZWFzZWQpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2U7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2U7CiAgICAgewogICAgICAg
ICAvLyBDb25zdHJ1Y3QgSlNPTiB0aGF0IHJlcHJlc2VudHMgdGhlICdsaWNlbnNlIHJlbGVhc2Un
IGZvcm1hdCwgY3JlYXRpbmcgYSAna2lkcycgYXJyYXkKICAgICAgICAgLy8gb2YgYmFzZTY0VVJM
LWVuY29kZWQga2V5IElEcyBmb3IgYWxsIGtleXMgdGhhdCB3ZXJlIGFzc29jaWF0ZWQgd2l0aCB0
aGlzIHNlc3Npb24uCkBAIC01OTMsMTQgKzU5NSwxNCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkNsZWFyS2V5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGlj
ZQogICAgICAgICAgICAgcm9vdE9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGFycmF5
KSk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBDb3B5IHRoZSBKU09OIGRhdGEgaW50byBhIFNo
YXJlZEJ1ZmZlciBvYmplY3QuCisgICAgICAgIC8vIENvcHkgdGhlIEpTT04gZGF0YSBpbnRvIGEg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBvYmplY3QuCiAgICAgICAgIFN0cmluZyBtZXNzYWdlU3Ry
aW5nID0gcm9vdE9iamVjdC0+dG9KU09OU3RyaW5nKCk7CiAgICAgICAgIENTdHJpbmcgbWVzc2Fn
ZUNTdHJpbmcgPSBtZXNzYWdlU3RyaW5nLnV0ZjgoKTsKICAgICAgICAgbWVzc2FnZSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2VDU3RyaW5nLmRhdGEoKSwgbWVzc2FnZUNTdHJpbmcubGVu
Z3RoKCkpOwogICAgIH0KIAogICAgIG1fa2V5U3RvcmUudW5yZWZBbGxLZXlzKCk7Ci0gICAgZGlz
cGF0Y2hDYWxsYmFjayhXVEZNb3ZlKGtleVN0YXR1c1ZlY3RvciksIFJlZjxTaGFyZWRCdWZmZXI+
KCptZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOworICAgIGRpc3BhdGNoQ2FsbGJh
Y2soV1RGTW92ZShrZXlTdGF0dXNWZWN0b3IpLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4o
Km1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uQ2xlYXJLZXk6OnN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L2NsZWFya2V5L0NETUNsZWFyS2V5LmgKaW5kZXggOWMwNzQ3ZGMxYmQ4ZTY3ZjNiYTg2NGQ5Yjgx
MTMzNzYyNWM4YTY3OS4uOWUyN2ZlOTEyYzRkYTA2N2ZiMjZjYWZiYzdmNmE2NTFkYTQ3NTI4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCkBAIC04Niw4ICs4Niw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZl
ckNlcnRpZmljYXRlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygp
IGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsK
KyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lv
bklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogfTsKIApAQCAtOTksNyArOTksNyBAQCBw
dWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFuY2UKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVt
ZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpD
bGVhcktleTsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFs
bG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBz
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2sm
JikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3Rv
cmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSgpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNy
ZWF0ZVNlc3Npb24oKSBmaW5hbDsKQEAgLTEwOSw4ICsxMDksOCBAQCBjbGFzcyBDRE1JbnN0YW5j
ZVNlc3Npb25DbGVhcktleSBmaW5hbCA6IHB1YmxpYyBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSB7
CiBwdWJsaWM6CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkoQ0RNSW5zdGFuY2VDbGVh
cktleSYgcGFyZW50KQogICAgICAgICA6IENETUluc3RhbmNlU2Vzc2lvblByb3h5KHBhcmVudCkg
eyB9Ci0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2Fs
bGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExp
Y2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikg
ZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0
YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25z
dCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExp
Y2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vu
c2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vz
c2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3Qg
U3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVy
R2VuZXJpYy5oCmluZGV4IGU5NjhlOTg1YzdlZWNlZmU0MzVhYTkyMDVjNDRkZDM1YWVkOGUwZDAu
LmVjZjRlMDhjOWI5OTFhZGUyNzNiZDQ0YzYwYmIxNWZlMDE2MzViMTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCkBA
IC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWRFbmNvZGVy
R2VuZXJpYyBmaW5hbCA6IHB1YmxpYyBLZXllZEVuY29kZXIgewogcHVibGljOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKaW5kZXggOGE4
YzEwYjcwMjRjZmUwMzhlOWZhN2I3MTViZTI2ODg5ZmMwNWUyOC4uOTM3ZDFmYjZmMGM4ZDdiNTFm
MThmZjE1NTYwYjNiOTRhNzRmNjFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCkBAIC0yNiwxNiArMjYsMTYgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVz
KQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihHQnl0ZXMq
IGJ5dGVzKQogewogICAgIEFTU0VSVChieXRlcyk7CiAgICAgbV9zaXplID0gZ19ieXRlc19nZXRf
c2l6ZShieXRlcyk7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKEdSZWZQdHI8R0J5dGVzPihieXRlcykpIH0pOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQogewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihieXRlcykpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKIH0KIAogR1Jl
ZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA5ZmM0ZWE4MmViYmM3N2VhZDkwMTA4
NTQzODA4MjllMTViYmFiNmY0Li5kYzFmYjE2ZWEwYjE5NmM1ZDEzYmQ0MTE0ZTUwY2NkY2Q5YjM3
YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC01OSw3ICs1
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZvbnRDYWNoZTsKIGNsYXNzIEZvbnRE
ZXNjcmlwdGlvbjsKIGNsYXNzIEdseXBoUGFnZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBHbHlwaERhdGE7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRl
eCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRiMjE5Li5mYmJjY2M0MzY4NDQ3
NDkwODNjZTg5MWYzNjNmNmNjNDBmMjk3NDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC03NCw3ICs3NCw2IEBAIGlu
dGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZv
bnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8gVGhpcyBjbGFzcyBpcyBj
b25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5vIGluc3RhbmNlcyBzaG91bGQg
ZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNsYXNzIEZvbnRQbGF0Zm9ybURh
dGEgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IDRh
ODUzZWI2NDk1M2Q0YWU0ODM0Zjg3YzU0ODdhY2QzNjRjNTdkODEuLmUzMmEzNmM2MDc2MTkyMTY4
YzZhMzc5MzE4Zjc4YWUxNzg5YzQ4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIEltYWdlOjppc1Bvc3RTY3Jp
cHRSZXNvdXJjZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBVUkwmIHVybCkKIH0KIAog
Ci1FbmNvZGVkRGF0YVN0YXR1cyBJbWFnZTo6c2V0RGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2U6OnNl
dERhdGEoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCiB7CiAgICAgbV9lbmNvZGVkSW1hZ2VEYXRhID0gV1RGTW92ZShkYXRhKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNmEwODE2OTU3YWE5
M2M0MTFhNTZjZDRjMmJjMjBkZDZkOTA0NGRlYy4uNjU1ZGZlNzNjZmY2YWQxZDA0ZjQ4YmMyMDE5
ZWJiODA0MTdkNjEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
CkBAIC03MCw3ICs3MCw3IEBAIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIEZsb2F0UG9p
bnQ7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogc3RydWN0IExlbmd0aDsK
IAogLy8gVGhpcyBjbGFzcyBnZXRzIG5vdGlmaWVkIHdoZW4gYW4gaW1hZ2UgY3JlYXRlcyBvciBk
ZXN0cm95cyBkZWNvZGVkIGZyYW1lcyBhbmQgd2hlbiBpdCBhZHZhbmNlcyBhbmltYXRpb24gZnJh
bWVzLgpAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9u
YWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAg
ICB2aXJ0dWFsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBJ
bWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2U7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIEVuY29k
ZWREYXRhU3RhdHVzIHNldERhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRW5jb2RlZERhdGFTdGF0dXMgc2V0
RGF0YShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCk7CiAgICAgdmlydHVhbCBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChib29s
IC8qYWxsRGF0YVJlY2VpdmVkKi8pIHsgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpVbmtub3du
OyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyB1dGkoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsg
fSAvLyBudWxsIHN0cmluZyBpZiB1bmtub3duCkBAIC0xMzMsOCArMTMzLDggQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwgPSB0
cnVlKSA9IDA7CiAKLSAgICBTaGFyZWRCdWZmZXIqIGRhdGEoKSB7IHJldHVybiBtX2VuY29kZWRJ
bWFnZURhdGEuZ2V0KCk7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KKyAgICBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBkYXRhKCkgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CisgICAg
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5j
b2RlZEltYWdlRGF0YS5nZXQoKTsgfQogCiAgICAgdmlydHVhbCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgY29sb3JTcGFjZSgpOwogCkBAIC0yMDksNyArMjA5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgQ29sb3Igc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3Io
KTsgfQogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZW5jb2RlZEltYWdl
RGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVkSW1hZ2VE
YXRhOwogICAgIEltYWdlT2JzZXJ2ZXIqIG1faW1hZ2VPYnNlcnZlcjsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8VGltZXI+IG1fYW5pbWF0aW9uU3RhcnRUaW1lcjsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAppbmRleCA0ZGRi
NmRmODNlY2I4YjliNzk1N2Y0NjY0ZTE4NGYwMDgxZTgxMDExLi5kZTMzZjFhZjQxMmRjMDhiMmI5
NjFhMTk0OTQ1YzljYzkwYWE2NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGJ1ZmZlci5ncm93KGJ1ZmZl
clNpemUpOwotICAgICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNy
ZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBtX3BpeGVscyA9IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAg
bV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oY29uc3RfY2FzdDx1aW50
OF90Kj4obV9waXhlbHMtPmRhdGEoKSkpOwogICAgICAgICBtX3NpemUgPSBzaXplOwogICAgICAg
ICBtX2ZyYW1lUmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwgbV9zaXplKTsKQEAgLTIwNiw3ICsy
MDYsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX3NpemUuaXNFbXB0eSgp
ICYmICFpc092ZXJTaXplKG1fc2l6ZSkpOwogICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVy
IHsgb3RoZXIubV9waXhlbHMtPmRhdGEoKSwgb3RoZXIubV9waXhlbHMtPnNpemUoKSB9OwotICAg
ICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3Zl
KGJ1ZmZlcikpOworICAgICAgICBtX3BpeGVscyA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9waXhlbHNQdHIg
PSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oY29uc3RfY2FzdDx1aW50OF90Kj4obV9waXhl
bHMtPmRhdGEoKSkpOwogICAgIH0KIApAQCAtMjMzLDcgKzIzMyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIHJldHVybiBQYWNrZWRDb2xvcjo6QVJHQiB7IHJlc3VsdCB9LnZhbHVlOwogICAgIH0KIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3BpeGVsczsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fcGl4ZWxzOwogICAgIHVp
bnQzMl90KiBtX3BpeGVsc1B0ciB7IG51bGxwdHIgfTsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAg
ICBJbnRSZWN0IG1fZnJhbWVSZWN0OyAvLyBUaGlzIHdpbGwgYWx3YXlzIGp1c3QgYmUgdGhlIGVu
dGlyZSBidWZmZXIgZXhjZXB0IGZvciBHSUYgYW5kIFBORyBmcmFtZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwCmluZGV4IDA4NjllOTlh
MDA4ODZmN2NkMTIxODZmZTMxNjFkZTA0N2ZhNTEzNjEuLjdjNTQ5NDdmNGQ4MTQwODU1OWNjNDVj
NGFjNDlhMTliOWZjODZmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VEZWNvZGVyLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIEltYWdlRGVjb2Rl
cjo6Y2xlYXJGYWN0b3JpZXMoKQogfQogI2VuZGlmCiAKLVJlZlB0cjxJbWFnZURlY29kZXI+IElt
YWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPEltYWdlRGVjb2Rlcj4gSW1hZ2VE
ZWNvZGVyOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIFVOVVNFRF9QQVJBTSht
aW1lVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VE
ZWNvZGVyLmgKaW5kZXggYTFhMDhhZGMxNzVkNDRiYWE0NDJlNDRhOTRhYTk2N2EwNGY1ZjYwNy4u
NmE4ZmZjYjYwZmMxMTU2ZWI4NDg3NmRlZmIwN2NiYzBiMTE5ODQ5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKQEAgLTM3LDEyICszNywx
MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEltYWdlRGVjb2RlciA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZURlY29kZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRl
KFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXI+
IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
QWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2aXJ0dWFsIH5J
bWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKICAgICBlbnVtIGNsYXNzIE1lZGlhVHlwZSB7CkBA
IC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgdXNp
bmcgU3VwcG9ydHNNZWRpYVR5cGVGdW5jID0gRnVuY3Rpb248Ym9vbChNZWRpYVR5cGUpPjsKICAg
ICB1c2luZyBDYW5EZWNvZGVUeXBlRnVuYyA9IEZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nJik+
OwotICAgIHVzaW5nIENyZWF0ZUltYWdlRGVjb2RlckZ1bmMgPSBGdW5jdGlvbjxSZWZQdHI8SW1h
Z2VEZWNvZGVyPihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBBbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pPjsKKyAgICB1c2luZyBDcmVhdGVJbWFnZURlY29kZXJG
dW5jID0gRnVuY3Rpb248UmVmUHRyPEltYWdlRGVjb2Rlcj4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bik+OwogCiAgICAgc3RydWN0IEltYWdlRGVjb2RlckZhY3RvcnkgewogICAgICAgICBTdXBwb3J0
c01lZGlhVHlwZUZ1bmMgc3VwcG9ydHNNZWRpYVR5cGU7CkBAIC0xMjksNyArMTI5LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBj
b25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3lu
Y2hyb25vdXMpKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6
ZShsb25nIGxvbmcpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERhdGEoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSA9IDA7CiAgICAgdmly
dHVhbCBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCBkODFjNDgwMTkyODQ2
ZGQ3ZTMyMWMyZGZiZmJmMWUwYzIwZGFhNjcxLi4zMDc3NDMzMTVhNDFlY2ExYzliMmJjNzczZDA3
OWVlNWQ0M2JhZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuY3BwCkBAIC03Miw3ICs3Miw3IEBAIEltYWdlU291cmNlOjp+SW1hZ2VTb3Vy
Y2UoKQogICAgIEFTU0VSVCgmbV9ydW5Mb29wID09ICZSdW5Mb29wOjpjdXJyZW50KCkpOwogfQog
Ci1ib29sIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZhaWxhYmxlKFNoYXJlZEJ1ZmZlciog
ZGF0YSkKK2Jvb2wgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAoIWRhdGEgfHwgaXNEZWNvZGVyQXZhaWxh
YmxlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtOTYsNyArOTYsNyBAQCBib29sIEltYWdl
U291cmNlOjplbnN1cmVEZWNvZGVyQXZhaWxhYmxlKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIq
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAg
ICBpZiAoIWRhdGEgfHwgIWVuc3VyZURlY29kZXJBdmFpbGFibGUoZGF0YSkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTEwNCwxMyArMTA0LDEzIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hh
cmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICBtX2RlY29kZXItPnNl
dERhdGEoKmRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnJl
c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIEltYWdlU291cmNlOjpyZXNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBtX2RlY29kZXIgPSBudWxscHRy
OwogICAgIHNldERhdGEoZGF0YSwgaXNBbGxEYXRhUmVjZWl2ZWQoKSk7CiB9CiAKLUVuY29kZWRE
YXRhU3RhdHVzIEltYWdlU291cmNlOjpkYXRhQ2hhbmdlZChTaGFyZWRCdWZmZXIqIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQorRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VTb3VyY2U6OmRhdGFD
aGFuZ2VkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogewogICAgIHNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKICAgICBjbGVhck1ldGFk
YXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
aAppbmRleCA4YWY1MDgwYTAwYTk5MTYwODBmMWYwYjI3NzA3M2MyYTg1MzQ1MjU4Li44MTRmMGUx
MmViYWE0OGY4NmFjYjUyMTk3M2MzMWQ1ZDM4MmY2ZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQml0bWFwSW1hZ2U7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7
CiBjbGFzcyBJbWFnZURlY29kZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbWFnZVNvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxJbWFnZVNvdXJjZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbWFnZVNvdXJj
ZT4gewogICAgIGZyaWVuZCBjbGFzcyBCaXRtYXBJbWFnZTsKQEAgLTU2LDkgKzU2LDkgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZVNvdXJjZShXVEZNb3ZlKG5h
dGl2ZUltYWdlKSkpOwogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIHJlc2V0RGF0YShTaGFyZWRCdWZm
ZXIqIGRhdGEpOwotICAgIEVuY29kZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2VkKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCBy
ZXNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAgRW5jb2RlZERhdGFT
dGF0dXMgZGF0YUNoYW5nZWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKTsKIAogICAgIHVuc2ln
bmVkIGRlY29kZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVkU2l6ZTsgfQpAQCAtMTU0
LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIGZp
cnN0RnJhbWVNZXRhZGF0YUNhY2hlSWZOZWVkZWQoVCYgY2FjaGVkVmFsdWUsIE1ldGFkYXRhVHlw
ZSwgVCAoSW1hZ2VGcmFtZTo6KmZ1bmN0b3IpKCkgY29uc3QsIEltYWdlRnJhbWU6OkNhY2hpbmcs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mID0geyB9KTsKIAotICAgIGJv
b2wgZW5zdXJlRGVjb2RlckF2YWlsYWJsZShTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wg
ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKICAg
ICBib29sIGlzRGVjb2RlckF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlcjsgfQog
ICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKHNpemVfdCBmcmFtZUNvdW50LCBzaXplX3QgZXhj
bHVkZUZyYW1lKTsKICAgICB2b2lkIGRlY29kZWRTaXplQ2hhbmdlZChsb25nIGxvbmcgZGVjb2Rl
ZFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmluZGV4
IDNlNTllYTlkMDhkZDFjOWJlZTIzYmEzZjYzNWNmMzViZmMyODIyOTIuLjU3N2JkNTA4YTVjNDA5
ZjRiZTllNGNmMjAyYjgxZTYxZTQ1YjQ0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Nb2RlbC5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVJlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBT
dHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitSZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTW9kZWwoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSks
IFdURk1vdmUodXJsKSkpOwogfQogCi1Nb2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0
YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogICAgIDogbV9kYXRhKFdURk1v
dmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKFdURk1vdmUobWltZVR5cGUpKQogICAgICwgbV91
cmwoV1RGTW92ZSh1cmwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgK
aW5kZXggMDY1ODEzMzc5ZjExMjU1ZDJkN2M3ZjZiNTAzNDQzZGM2MzBkMDRlMS4uZTZiZGUxNjZm
OTQ0Y2RlN2RiMzI4YzI5NzZlYzY4MmFkYjZkMTAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Nb2RlbC5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgTW9kZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVibGlj
OgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVk
QnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9k
ZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgfk1vZGVsKCk7CiAKICAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhOyB9CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNvZGUoRGVjb2RlciYpOwog
CiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+LCBTdHJpbmcs
IFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBV
UkwpOwogCiAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIFN0cmluZyBtX21pbWVU
eXBlOwpAQCAtNjAsNyArNjAsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNb2Rl
bDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+c2l6ZSgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVk
TGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCksIDEpOworICAgIGVuY29k
ZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBtX2RhdGEtPnNpemUoKSwgMSk7CiAgICAgZW5jb2RlciA8PCBtX21pbWVUeXBlOwogICAgIGVu
Y29kZXIgPDwgbV91cmw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCmluZGV4IDc0NTlj
NTg1OGQyNDg3ZWYyYzVmZDM3MTczOTg2YjMzNzM0ZWMyOGEuLjg4NjkxZGMyNTZkNmRkNmM0NWY0
NmUwMTU0OTY3NDI0NWFhMzUzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBAIC01
MSw4ICs1MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1
ZXN0KSk7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25l
ZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSB7
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91
bGQgYmUgcmVtb3ZlZCBvbmNlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHVzZXMgU2hhcmVkQnVm
ZmVyLgorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQorICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2Fj
aGVkUmF3UmVzb3VyY2VDbGllbnQgdXNlcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgogICAgIHZp
cnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiBwbGF0Zm9ybSwg
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBkYXRhUmVjZWl2ZWQocGxhdGZvcm0s
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkpOyB9CiAgICAgdmlydHVhbCB2b2lk
IGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcApp
bmRleCA1NDk5ZjM3YTdmMzY0NmJkNWYzOTVhNDhiMDlkOTQxMWQ0YzliNjY0Li5kM2UxYjU4MDRl
ODVhOTkxMWNmMjBmY2VkMzRiZjI1NWEzMTQ0MzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtMTMx
OCw3ICsxMzE4LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlU2FtcGxl
KFJlZjxNZWRpYVNhbXBsZT4mJiBvcmlnaW5hbFNhbXBsZSkKICAgICB1cGRhdGVIaWdoZXN0UHJl
c2VudGF0aW9uVGltZXN0YW1wKCk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBw
ZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
OjphcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGFw
cGVuZChidWZmZXItPmV4dHJhY3REYXRhKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCmluZGV4IGVmODZhNDcz
NjkzNzFjODNlODgzYjI5YmJiNmI5YWI5NmVjYTVmMWQuLjZiN2Q5NWU1MmI5ZGYwYzgxYWYzYmUx
ZDZkOWYzYzhlZDM5NTQxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogY2xhc3MgVGltZVJhbmdlczsKIAogZW51bSBjbGFzcyBTb3VyY2VCdWZm
ZXJBcHBlbmRNb2RlIDogdWludDhfdCB7CkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQcml2YXRlKCk7CiAKICAgICB2aXJ0
dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpID0gMDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgYXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBhcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZp
cnR1YWwgdm9pZCBhYm9ydCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRQYXJzZXJTdGF0
ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IGM2MTEyZTEx
OTRjN2M5OTBmZGMxMTRlODI5Y2ZkYjVjNmFmNzU0YTkuLjhiMDRmOWJlOTZjMzZlMGEyNjIxODBh
MjVlYTM3NDU5NjJiM2Q3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFt
aW5nLmNwcApAQCAtODYsMTIgKzg2LDEyIEBAIGNvbnN0IEF0b21TdHJpbmcmIENETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpCiAgICAgcmV0dXJuIHNrZDsKIH0KIAotc3RhdGlj
IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQorc3RhdGljIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
IGV4dHJhY3RTaW5mRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgLy8gSlNPTiBvZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1z
dHJpbmc+IF0gfSIKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBTdHJpbmcganNvbiB7
IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZmZXIuc2l6ZSgpKSB9Owor
ICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNP
Tjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpAQCAtMTA1LDcgKzEw
NSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoIXNpbmZBcnJheSkKICAgICAgICAg
cmV0dXJuIHsgfTsKIAotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gc2luZnM7CisgICAg
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gc2luZnM7CiAgICAgc2luZnMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShzaW5mQXJyYXktPmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0
byYgdmFsdWUgOiAqc2luZkFycmF5KSB7CkBAIC0xMjQsNyArMTI0LDcgQEAgc3RhdGljIFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogfQogCiB1c2luZyBTY2hlbWVBbmRLZXlSZXN1bHQgPSBWZWN0b3I8c3RkOjpwYWly
PEZvdXJDQywgVmVjdG9yPHVpbnQ4X3Q+Pj47Ci1zdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4
dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQor
c3RhdGljIFNjaGVtZUFuZEtleVJlc3VsdCBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBidWZmZXJz
ID0gZXh0cmFjdFNpbmZEYXRhKGJ1ZmZlcik7CiAgICAgaWYgKCFidWZmZXJzLnNpemUoKSkKQEAg
LTE3MCw5ICsxNzAsOSBAQCBzdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVB
bmRLZXlJZEZyb21TaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZgogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2luZihjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+IGtleUlEczsKICAgICBhdXRvIHJlc3VsdHMgPSBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9t
U2luZihidWZmZXIpOwogCiAgICAgZm9yIChhdXRvJiByZXN1bHQgOiByZXN1bHRzKSB7CkBAIC0x
ODMsNyArMTgzLDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXkKICAgICByZXR1cm4ga2V5SURz
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OnNhbml0aXplU2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2lu
Zihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gQ29tbW9u
IFNJTkYgQm94IEZvcm1hdAogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMTkxLDE3ICsx
OTEsMTcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpzYW5pdGl6ZVNpbmYoY29uc3QgU2hhcmVkQnVmZmUKICAgICByZXR1cm4gYnVmZmVyLmNvcHko
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpzYW5pdGl6ZVNrZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2tk
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBVTlVTRURfUEFS
QU0oYnVmZmVyKTsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBidWZmZXIuY29w
eSgpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSW4gdGhlICdza2Qn
IHNjaGVtZSwgdGhlIGluaXQgZGF0YSBpcyB0aGUga2V5IElELgotICAgIFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+IGtleUlEczsKICAgICBrZXlJRHMuYXBwZW5kKGJ1ZmZlci5jb3B5KCkpOwogICAgIHJldHVy
biBrZXlJRHM7CiB9CkBAIC0zOTMsNyArMzkzLDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEp
IGNvbnN0Citib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0
YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGluaXREYXRhKSBjb25zdAogewogICAgIGlmICghdmFsaWRJbml0RGF0YVR5cGVzKCku
Y29udGFpbnMoaW5pdERhdGFUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDIzLDcg
KzQyMyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0
aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0
aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWlu
Zy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZh
aXJQbGF5U3RyZWFtaW5nLmgKaW5kZXggYmM5M2Y2ZjZhN2JkZDAxZWZiZjU1YjYyYmRiNmE0ZTY2
ZWY5MTJiMy4uMzE3YmI4ZDU3ZTg2YzA2MjE0ZTBiNDA1OWRkZjRmODgwN2M3NGM2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZh
aXJQbGF5U3RyZWFtaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKQEAgLTcxLDE3ICs3MSwxNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIG92ZXJyaWRlOwogICAgIGJvb2wg
c3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1
cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIHN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRl
OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVk
QnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2Uo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBzaW5mTmFtZSgpOwotICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RL
ZXlJRHNTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZVNpbmYoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RL
ZXlJRHNTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplU2luZihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc2tkTmFtZSgp
OwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4
dHJhY3RLZXlJRHNTa2QoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNhbml0aXplU2tkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRy
YWN0S2V5SURzU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplU2tkKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8Rm91ckNDPiYgdmFs
aWRGYWlyUGxheVN0cmVhbWluZ1NjaGVtZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5k
ZXggMTU5YjkwY2RiNDhmN2ZlNDRiYjQ5YmUyZWMxYzFjMmY0MzI4NjQwMC4uNTZiNThjMjVhMjg3
MDlmYjM4MjIxODM5ZTU1YmFlNDVlZDkzY2Y2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBA
IC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50
YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpGYWly
UGxheVN0cmVhbWluZzsgfQogCiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24o
Y29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlm
aWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAg
ICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3ND
YWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9p
ZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFJlZlB0cjxD
RE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKICAgICB2b2lkIHNldENs
aWVudChXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50PiYmKSBmaW5hbDsKQEAgLTk0LDEwICs5NCwx
MCBAQCBwdWJsaWM6CiAKICAgICBOU1VSTCAqc3RvcmFnZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RvcmFnZVVSTC5nZXQoKTsgfQogICAgIGJvb2wgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dlZDsgfQotICAgIFNoYXJlZEJ1ZmZl
ciogc2VydmVyQ2VydGlmaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlckNlcnRpZmljYXRl
LmdldCgpOyB9CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2VydmVyQ2VydGlmaWNhdGUo
KSBjb25zdCB7IHJldHVybiBtX3NlcnZlckNlcnRpZmljYXRlLmdldCgpOyB9CiAgICAgQVZDb250
ZW50S2V5U2Vzc2lvbiogY29udGVudEtleVNlc3Npb24oKTsKIAotICAgIFJldGFpblB0cjxBVkNv
bnRlbnRLZXlSZXF1ZXN0PiB0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlv
bkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBTaGFyZWRCdWZmZXImIGluaXRE
YXRhKTsKKyAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gdGFrZVVuZXhwZWN0ZWRL
ZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpOwogCiAgICAgLy8gQVZDb250
ZW50S2V5U2Vzc2lvbkRlbGVnYXRlQ2xpZW50CiAgICAgdm9pZCBkaWRQcm92aWRlUmVxdWVzdChB
VkNvbnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7CkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgb3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlv
bkNoYW5nZWQoYm9vbCkgZmluYWw7CiAgICAgdm9pZCBleHRlcm5hbFByb3RlY3Rpb25TdGF0dXNE
aWRDaGFuZ2VGb3JDb250ZW50S2V5UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7
CiAKLSAgICB1c2luZyBLZXlzID0gVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2lu
ZyBLZXlzID0gVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yS2V5SURzKGNv
bnN0IEtleXMmKSBjb25zdDsKICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMqIHNlc3Npb25Gb3JHcm91cChBVkNvbnRlbnRLZXlSZXBvcnRHcm91cCopIGNvbnN0
OwogICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lv
bkZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCopIGNvbnN0OwpAQCAtMTI5LDcgKzEyOSw3
IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxDRE1JbnN0YW5jZUNsaWVudD4gbV9jbGllbnQ7CiAg
ICAgUmV0YWluUHRyPEFWQ29udGVudEtleVNlc3Npb24+IG1fc2Vzc2lvbjsKICAgICBSZXRhaW5Q
dHI8V2ViQ29yZUZQU0NvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGU+IG1fZGVsZWdhdGU7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZTsKKyAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZTsKICAgICBib29sIG1fcGVy
c2lzdGVudFN0YXRlQWxsb3dlZCB7IHRydWUgfTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IG1fc3Rv
cmFnZVVSTDsKICAgICBWZWN0b3I8V2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM+PiBtX3Nlc3Npb25zOwpAQCAtMTUwLDggKzE1MCw4IEBAIHB1YmxpYzoK
ICNlbmRpZgogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uCi0gICAgdm9pZCByZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9p
ZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0
TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xv
c2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJl
bW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1t
CmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3M2U5NTMuLmJhNTA2MWVi
YjVjNWZiZTA3NGQzYTI5ZGVhNGY5MThmYzI2MjFjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Lm1tCkBAIC0yMTcsNyArMjE3LDcgQEAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQK
ICAgICByZXR1cm4gQXRvbVN0cmluZyhuc0luaXRUeXBlKTsKIH0KIAotc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGluaXRpYWxpemF0aW9uRGF0YUZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVz
dCogcmVxdWVzdCkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdGlhbGl6
YXRpb25EYXRhRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KiByZXF1ZXN0KQogewogICAg
IGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CkBA
IC0yNjUsNyArMjY1LDcgQEAgQVZDb250ZW50S2V5U2Vzc2lvbiogQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmNvbnRlbnRLZXlTZXNzaW9uKCkKICAgICByZXR1cm4gbV9zZXNz
aW9uLmdldCgpOwogfQogCi1SZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvcklu
aXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpCitSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvcklu
aXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIGZvciAoYXV0byByZXF1ZXN0SXRlciA9
IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzLmJlZ2luKCk7IHJlcXVlc3RJdGVyICE9IG1fdW5leHBl
Y3RlZEtleVJlcXVlc3RzLmVuZCgpOyArK3JlcXVlc3RJdGVyKSB7CiAgICAgICAgIGF1dG8mIHJl
cXVlc3QgPSAqcmVxdWVzdEl0ZXI7CkBAIC0zMTYsNyArMzE2LDcgQEAgcHJpdmF0ZToKICAgICBS
ZXNwb25zZU1hcCBtX3Jlc3BvbnNlczsKIH07CiAKLXN0YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+
IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJlZlB0
cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIC8vIEZhaWwgb24gbGFyZ2UgYnVmZmVycyB3aG9zZSBzaXplIGRv
ZXNuJ3QgZml0IGludG8gYSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlci4KICAgICBzaXplX3Qgc2l6
ZSA9IGJ1ZmZlci5zaXplKCk7CkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIFJlZlB0cjxKU09O
OjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50cyBh
cyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmluZyBq
c29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CisgICAg
U3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpWYWx1ZTo6cGFyc2VKU09O
KGpzb24pOwogfQpAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LCiAg
ICAgY2FsbGJhY2soaW5pdGlhbGl6ZSgpKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0Nh
bGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5U
SUZJRVIpOwogICAgIG1fc2VydmVyQ2VydGlmaWNhdGUgPSBXVEZNb3ZlKHNlcnZlckNlcnRpZmlj
YXRlKTsKQEAgLTU4NSw4ICs1ODUsOCBAQCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMqIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOgogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byBzZXNzaW9uS2V5cyA9IHNlc3Npb25JbnRl
cmZhY2UtPmtleUlEcygpOwotICAgICAgICBpZiAoYW55T2Yoc2Vzc2lvbktleXMsIFsmXShjb25z
dCBSZWY8U2hhcmVkQnVmZmVyPiYgc2Vzc2lvbktleSkgewotICAgICAgICAgICAgcmV0dXJuIGtl
eUlEcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBrZXlJRCkgewor
ICAgICAgICBpZiAoYW55T2Yoc2Vzc2lvbktleXMsIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mIHNlc3Npb25LZXkpIHsKKyAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmlu
ZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGtleUlEKSB7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGtleUlELmdldCgpID09IHNlc3Npb25LZXkuZ2V0KCk7
CiAgICAgICAgICAgICB9KSAhPSBub3RGb3VuZDsKICAgICAgICAgfSkpCkBAIC02NzMsNyArNjcz
LDcgQEAgS2V5cyBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6Omtl
eUlEcygpCiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vu
c2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFj
aykKIHsKICAgICBpZiAoIWlzTGljZW5zZVR5cGVTdXBwb3J0ZWQobGljZW5zZVR5cGUpKSB7CiAg
ICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiIGZhbHNlLCBsaWNl
bnNlVHlwZSBcIiIsIGxpY2Vuc2VUeXBlLCAiXCIgbm90IHN1cHBvcnRlZCIpOwpAQCAtNzA5LDEy
ICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAgaW5pdGlhbGl6YXRpb25E
YXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBpbml0aWFsaXphdGlvbkRh
dGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgZWxz
ZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFt
ZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0
V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVuY29kaW5nOk5TVVRGOFN0
cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcg
YWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICNpZiBIQVZFKEZB
SVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBl
ID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAgICAgYXV0byBwc3NoU3Ry
aW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEoKSwgaW5pdERhdGEtPnNp
emUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGlu
aXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOwogICAg
ICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpT
T05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5nIH0gb3B0aW9uczpOU0pT
T05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0KICNlbmRpZgpAQCAtNzM2
LDcgKzczNiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlCiAgICAgfQogfQogCi1zdGF0aWMg
Ym9vbCBpc0VxdWFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKK3N0YXRpYyBib29sIGlzRXF1YWwoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gZGF0YS50
cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGlmICghYXJyYXlCdWZmZXIpCkBAIC03NTQsNyAr
NzU0LDcgQEAgc3RhdGljIGJvb2wgaXNFcXVhbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IFN0cmluZyYgdmFsdWUpCiAgICAgcmV0dXJuIHN0cmluZ09yRXhjZXB0aW9uLnJldHVyblZh
bHVlKCkgPT0gdmFsdWU7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBj
YWxsYmFjaykKIHsKICAgICBpZiAoIW1fZXhwaXJlZFNlc3Npb25zLmlzRW1wdHkoKSAmJiBpc0Vx
dWFsKHJlc3BvbnNlRGF0YSwgImFja25vd2xlZGdlZCJfcykpIHsKICAgICAgICAgYXV0byogY2Vy
dGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpOwpAQCAtNzcwLDcgKzc3
MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIGF1dG8gZXhwaXJlZFNlc3Np
b25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9ucywgW10gKGF1dG8mIGRhdGEpIHsK
ICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAgICAgICB9KTsKLSAgICAgICAgYXV0
byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBh
dXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJl
bW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNlc3Npb25zLmdldCgpIHdp
dGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJM
OnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODU2LDcgKzg1
Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICBhdXRvIGtleUlEID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqa2V5SURWZWN0b3IpKTsKICAgICAgICAgICAg
IGF1dG8gZm91bmRJbmRleCA9IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maW5k
TWF0Y2hpbmcoWyZdIChhdXRvJiByZXF1ZXN0KSB7CiAgICAgICAgICAgICAgICAgYXV0byBrZXlJ
RHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwotICAgICAgICAgICAgICAgIHJl
dHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgaWQp
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3Qg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBpZCkgewogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gaWQuZ2V0KCkgPT0ga2V5SUQuZ2V0KCk7CiAgICAgICAgICAgICAgICAgfSkgIT0gbm90
Rm91bmQ7CiAgICAgICAgICAgICB9KTsKQEAgLTg4OCw3ICs4ODgsNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmLCBMaQogICAgICAgICAgICAgICAgIGlmICghcGF5bG9hZFZlY3RvcikKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGF1dG8gcGF5bG9hZERh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwYXlsb2FkVmVjdG9yKSk7Ci0gICAg
ICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRB
VkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5
U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KV1dOworICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6
W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdp
dGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9OwpAQCAtOTAxLDcgKzkwMSw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNv
bnN0IFN0cmluZyYsIExpCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBERUJVR19M
T0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIidzaW5mJyBpbml0RGF0YSwgcHJvY2Vzc2lu
ZyByZXNwb25zZSIpOwotICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3Rz
LmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlS
ZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5
UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAg
ICAgW21fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHByb2Nlc3NDb250
ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRl
bnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25z
ZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgfQog
CiAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJh
Y2sgYW5kIGNhbGwgaXQgb25jZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nl
c3MgY2FsbGJhY2suCkBAIC05MzQsNyArOTM0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJldGFpblB0cjxOU0Rh
dGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAg
IFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIEtleVN0YXR1c1ZlY3RvciBjaGFuZ2Vk
S2V5czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0YSBpbiBbUEFMOjpn
ZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRz
V2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRV
Ukw6c3RvcmFnZVVSTF0pIHsKICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxh
eWJhY2tTZXNzaW9uSWRLZXkgPSBAIlBsYXliYWNrU2Vzc2lvbklEIjsKQEAgLTk5OSw3ICs5OTks
NyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVt
b3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmlj
YXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRp
ZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBleHBpcmVkU2Vzc2lvbnNBcnJheSA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBLZXlTdGF0dXNW
ZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRh
dGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRT
ZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFn
ZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
cXVlc3QoQVZDb250ZW50S2V5UgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmll
cjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZp
Y2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0
YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogCiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0
KHJlcXVlc3QpOwogICAgIGlmIChrZXlJRHMuaXNFbXB0eSgpKSB7CkBAIC0xMDk3LDcgKzEwOTcs
NyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlk
UHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+
Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIg
PSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
QHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERh
dGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRl
bnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBO
U0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0
aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJv
ciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERh
dGEpXSB7CkBAIC0xMTUzLDkgKzExNTMsOSBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogCiAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlm
aWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlm
aWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCi0g
ICAgdXNpbmcgUmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKKyAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0
b3I8c3RkOjpwYWlyPFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5T
RGF0YT4+PjsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewogICAgICAgICB1c2luZyBD
YWxsYmFja0Z1bmN0aW9uID0gRnVuY3Rpb248dm9pZChSZXF1ZXN0c0RhdGEmJik+OwogICAgICAg
ICBzdGF0aWMgUmVmUHRyPENhbGxiYWNrQWdncmVnYXRvcj4gY3JlYXRlKENhbGxiYWNrRnVuY3Rp
b24mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTExOTYsNyArMTE5Niw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMo
VmVjdG9yPFJldGFpCiAgICAgICAgICAgICBhdXRvIGVudHJ5ID0gSlNPTjo6T2JqZWN0OjpjcmVh
dGUoKTsKICAgICAgICAgICAgIGF1dG8mIGtleUlEID0gcmVxdWVzdERhdGEuZmlyc3Q7CiAgICAg
ICAgICAgICBhdXRvJiBwYXlsb2FkID0gcmVxdWVzdERhdGEuc2Vjb25kOwotICAgICAgICAgICAg
ZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhrZXlJRC0+ZGF0
YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CisgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJ
RCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGtleUlELT5zaXplKCkpKTsKICAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmcoInBheWxvYWQi
LCBiYXNlNjRFbmNvZGVUb1N0cmluZyhwYXlsb2FkLmdldCgpLmJ5dGVzLCBwYXlsb2FkLmdldCgp
Lmxlbmd0aCkpOwogICAgICAgICAgICAgcmVxdWVzdEpTT04tPnB1c2hPYmplY3QoV1RGTW92ZShl
bnRyeSkpOwogICAgICAgICB9CkBAIC0xMjExLDggKzEyMTEsOCBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3Rv
cjxSZXRhaQogICAgIEB0cnkgewogICAgICAgICBmb3IgKGF1dG8gcmVxdWVzdCA6IG1fY3VycmVu
dFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cykgewogICAgICAgICAgICAgYXV0byBrZXlJRHMgPSBr
ZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwotICAgICAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKLSAgICAgICAgICAgIGF1
dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgICAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5m
aXJzdCgpKTsKKyAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtl
U3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkg
Y29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29t
cGxldGlvbkhhbmRsZXI6W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0Rh
dGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAg
ICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAgICAgICAgICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUo
YWdncmVnYXRvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5
UmVxdWVzdERhdGEpXSAoKSBtdXRhYmxlIHsKQEAgLTEyNDksMTAgKzEyNDksMTAgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5l
d2luZ1JlcXVlc3QoQVZDb24KIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7
CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNh
dGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEo
KTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9j
dXJyZW50UmVxdWVzdC52YWx1ZSgpKTsKIAotICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJ
ZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAgIFJldGFpblB0
cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAgICBbcmVxdWVzdCBtYWtl
U3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkg
Y29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29t
cGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChOU0Rh
dGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAg
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtU
aGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSBy
ZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDAzMzRkNjIzYjJhNzYwNWM5YmUxMjIxM2I1
YWJkYmJhYzJiMDNmMTUuLjYyYjgzZmJmZDU3OTQwNTBlYmM5NDA2MzcwNDkwYmEyYjNlYzA4NzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKQEAgLTUz
LDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOwogCiBjbGFzcyBJ
bWFnZURlY29kZXJBVkZPYmpDIDogcHVibGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBjcmVhdGUo
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRy
PEltYWdlRGVjb2RlckFWRk9iakM+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXJBVkZPYmpDKCk7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgYm9vbCBzdXBwb3J0c01lZGlhVHlwZShNZWRpYVR5cGUpOwpAQCAtODYs
NyArODYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1JbWFnZVB0ciBj
cmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1w
bGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRp
b25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNl
aXZlZCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0Fs
bERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7
IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3Qp
IGZpbmFsOwogCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBW
ZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+IGZyYW1lSW5mb3MoKSBjb25zdDsKIAogcHJp
dmF0ZToKLSAgICBJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7Cisg
ICAgSW1hZ2VEZWNvZGVyQVZGT2JqQyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsK
IAogICAgIEFWQXNzZXRUcmFjayAqZmlyc3RFbmFibGVkVHJhY2soKTsKICAgICB2b2lkIHJlYWRT
YW1wbGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5t
bQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNjMTRmNGJmLi4zNWM2Y2U2
N2U4NWY4NmFlMTY0YzIxYTcyNjA3ZmMwNjVlY2I1MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTI4OSw3ICsyODksNyBAQCBJbWFnZURl
Y29kZXJBVkZPYmpDU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRvciBpdGVyKQogCiAjcHJhZ21hIG1h
cmsgLSBJbWFnZURlY29kZXJBVkZPYmpDCiAKLVJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJ
bWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8SW1hZ2VEZWNvZGVy
QVZGT2JqQz4gSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikK
IHsKICAgICAvLyBBVkZvdW5kYXRpb24gbWF5IG5vdCBiZSBhdmFpbGFibGUgYXQgcnVudGltZS4K
ICAgICBpZiAoIUFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgp
KQpAQCAtMzAxLDcgKzMwMSw3IEBAIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURl
Y29kZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zCiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyQVZGT2JqQyhkYXRhLCBtaW1lVHlwZSwgYWxwaGFP
cHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiB9CiAKLUltYWdlRGVjb2RlckFW
Rk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitJ
bWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICA6IEltYWdlRGVjb2RlcigpCiAgICAgLCBtX21pbWVU
eXBlKG1pbWVUeXBlKQogICAgICwgbV91dGkoV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKG1pbWVU
eXBlKSkKQEAgLTMwOSw3ICszMDksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29k
ZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVAogICAgICwg
bV9sb2FkZXIoYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJSZXNvdXJjZUxvYWRlckRlbGVn
YXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAgICAgLCBtX2RlY29tcHJlc3Npb25T
ZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6Y3JlYXRlUkdCKCkpCiB7Ci0gICAg
W21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpO
T107CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CiAKICAgICBbbV9hc3NldC5nZXQoKS5yZXNv
dXJjZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xvYWRlci5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRf
Z2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApXTsKICAgICBb
bV9hc3NldCBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOkBbQCJ0cmFja3MiXSBjb21w
bGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIG11dGFibGUg
ewpAQCAtNjQxLDkgKzY0MSw5IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0
ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKICAgICBtX2xvYWRl
ci5nZXQoKS5leHBlY3RlZENvbnRlbnRTaXplID0gZXhwZWN0ZWRDb250ZW50U2l6ZTsKIH0KIAot
dm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7Ci0gICAg
W21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTph
bGxEYXRhUmVjZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsK
IAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9pc0FsbERhdGFSZWNlaXZl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggMjAwZTFhOGY5YWZiYTBmY2JiYTVi
MGEzZWQ3MDRjZDM0MWI0NTBkNi4uYzlkOWIyYTk2ODViMDFlOTFhYWEwMGMwZTAwMzA3NzM4NTY5
MTQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBJbmJh
bmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0
OwogY2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7CiBjbGFzcyBQaXhlbEJ1ZmZlckNv
bmZvcm1lckNWOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2
YXRlQVZGT2JqQzsKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjsKQEAgLTQyNiw3ICs0
MjYsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbV93
YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRUaW1lOwogICAgIG11dGFibGUgaW50IG1fdGltZUNvbnRy
b2xTdGF0dXNBdENhY2hlZEN1cnJlbnRUaW1lIHsgMCB9OwogICAgIG11dGFibGUgZG91YmxlIG1f
cmVxdWVzdGVkUmF0ZUF0Q2FjaGVkQ3VycmVudFRpbWUgeyAwIH07Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9rZXlJRDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9r
ZXlJRDsKICAgICBkb3VibGUgbV9jYWNoZWRSYXRlIHsgMCB9OwogICAgIGJvb2wgbV9yZXF1ZXN0
ZWRQbGF5aW5nIHsgZmFsc2UgfTsKICAgICBkb3VibGUgbV9yZXF1ZXN0ZWRSYXRlIHsgMS4wIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBkMThhODVhNzk0ZjUyM2Y5NDkxMmUyN2YwOGI3
Y2NiZTg5M2M4ZWQwLi5iMWM2MDc5YzY0ODcwZjg4ZTM1YzgwODExYTViMThiZGExYjdmNjE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTI3OTIsNyArMjc5Miw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5j
ZShDRE1JbnN0YW5jCiAgICAgaWYgKCFtX2tleUlEIHx8ICFtX2NkbUluc3RhbmNlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1fY2RtSW5zdGFuY2UtPnNl
c3Npb25Gb3JLZXlJRHMoVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkp
OworICAgIGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktl
eUlEcyhWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkp
OwogICAgIGlmICghaW5zdGFuY2VTZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4
IGQ5NjBhZmRjYTIxNGJmYTQ0MGVlYTIwODgzYmNhOTEzMmUyMmY5YTAuLjRkZDZiOTFhOTQ4MzE2
OWEwMjM2ODg4ZDBlNGQ4MmZmYjgzNjY2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtMjEzLDcgKzIxMyw3IEBAIFNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkKIHZv
aWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVu
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcHBlbmRG
bGFncyBmbGFncykKIHsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IHNlZ21lbnQudGFrZVNoYXJl
ZEJ1ZmZlcigpOwotICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEo
KTsKKyAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNSZXNldCB8fCBmbGFncyA9PSBB
cHBlbmRGbGFnczo6RGlzY29udGludWl0eSkKICAgICAgICAgW21fcGFyc2VyIGFwcGVuZFN0cmVh
bURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURhdGFQYXJzZXJTdHJlYW1EYXRh
RGlzY29udGludWl0eV07CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKaW5kZXggMDM0MjBmMTM4MzY0ZmFjMjA5MWUx
MDRkMTM2ZmYzOGExZmI5ZmUyMi4uZWFkMDgzYTZjYzdlNzM2YjQyMTcxMGZhYzM5MmEwN2RmZjky
YmU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy5oCkBAIC03Myw3ICs3Myw3IEBAIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwog
Y2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFzcyBWaWRlb1Ry
YWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzsKIGNsYXNzIFdlYkNvcmVEZWNvbXByZXNzaW9u
U2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQgewogcHVi
bGljOgpAQCAtMTUzLDcgKzE1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRQcm92aWRlTWVk
aWFEYXRhRm9yVHJhY2tJZChSZWY8TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSWQsIGNv
bnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3Zl
cnJpZGVzCi0gICAgdm9pZCBhcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAg
dm9pZCBhcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZv
aWQgYWJvcnQoKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAg
ICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSBmaW5hbDsKQEAgLTIyMSw3ICsyMjEsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShB
VkNPTlRFTlRLRVlTRVNTSU9OKQogICAgIFJlZlB0cjxDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQz4gbV9jZG1JbnN0YW5jZTsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
IG1fa2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1fa2V5
SURzOwogI2VuZGlmCiAKICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gbV9jYWNoZWRTaXpl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5tbQppbmRleCAzYTI4NjdhMWFjMjQzYmI5YzkzYzlkNmI3MGNhNTZiMDI5NDhmYzljLi4y
NGFlMGUxNDA2MDE5MTQzZmFkNGYxNTI5ZTY4ZWQ0OWI0MTY1M2NhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtNTYz
LDcgKzU2Myw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvCiAgICAgVU5VU0VEX1BBUkFNKGhh
c1Nlc3Npb25TZW1hcGhvcmUpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7
CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiZGF0YSBsZW5ndGggPSAiLCBkYXRhLT5z
aXplKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5oCmluZGV4IGYwZDhlNzExMzJmNmMyODdhMmU2MjlhNGI4OGE1MzlkZmQ1M2NiZTIu
LjBlZmVlYWVmNWIyZDcxYmM2ZDY3MDRkZDFiOTc1YWNiYWUxMTNiYmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCkBAIC00Myw3ICs0
Myw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM7CiBjbGFzcyBQ
bGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBS
ZWZDb3VudGVkPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4gewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBsb2FkRmFpbGVkKGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZCgpOwotICAgIHZvaWQgbmV3RGF0YVN0
b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgbmV3RGF0YVN0b3Jl
ZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50OwogICAgIFJldGFpblB0
cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVlc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggYTIy
YTk5N2IxMTA3OWQ0NjU4NmFhNjQ4NTYxYmJmNzJhNmYyNDdmMC4uZjkyMWYzZGEwZTY5YjMzOTk3
N2M5ZTNlNDk2NjdhMjhmNWU5NWNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTU2LDE0ICsxNTYsMTQgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBm
aW5hbCB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgYm9vbCBz
aG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgZGF0YVNlbnQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxv
bmcpIGZpbmFsIHsgfQotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9y
KTsgfQogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZv
aWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVkKCk7IH0KIAogICAgIFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4g
bV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsKIAogV2Vha1B0cjxQbGF0Zm9ybVJlc291cmNl
TWVkaWFMb2FkZXI+IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6Y3JlYXRlKFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXImIGxv
YWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIxMSwxMyArMjExLDEwIEBAIHZv
aWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIG1fcGFy
ZW50LmxvYWRGaW5pc2hlZCgpOwogfQogCi12b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRl
cjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQordm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBXVEZNb3Zl
KGJ1ZmZlcik7Ci0gICAgZWxzZQotICAgICAgICBtX2J1ZmZlci0+YXBwZW5kKFdURk1vdmUoYnVm
ZmVyKSk7Ci0gICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZl
cik7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9wYXJlbnQu
bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQoKSk7CiB9CiAKIGNsYXNz
IERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPERhdGFV
UkxSZXNvdXJjZU1lZGlhTG9hZGVyPiB7CkBAIC0zODgsNyArMzg1LDcgQEAgdm9pZCBXZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0K
IAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1
ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6
bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEpCiB7CiAgICAgQVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVx
dWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBkYjQ1N2E4MWQzZWU4MjkxYjkwNWU5
YmE3N2MxZTJhZjMwOWUwY2IyLi45NDE5YmNlYTM4ZGJmOGQ2NDkyZjY4MDFkOWEyMTU2MjM2NmEy
YzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zMSwxMCArMzEsMTEgQEAg
dHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBj
bGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2Vs
ZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7
CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpOwogcHVibGljOgotICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
RlRfRmFjZSwgU2hhcmVkQnVmZmVyJik7CisgICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9G
YWNlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgfkZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoKSA9IGRlZmF1bHQ7CiAgICAgRm9udFBsYXRmb3JtRGF0YSBmb250UGxhdGZvcm1EYXRhKGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRD
cmVhdGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zvcm1hdChjb25zdCBT
dHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3ZDRlOGQzZTQ1ZTJkMDRi
ZWQzZDUwYzA2Li5iNmQzZWIzNjMxMTI0NDYxM2IzODAzZjJmM2QyNGQzMDg3ZWEyNGU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJD
Ry5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwCkBAIC0yNDQsMTYgKzI0NCwxNiBAQCBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0
ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sCiAK
IHZvaWQgc2hhcmVkQnVmZmVyUmVsZWFzZSh2b2lkKiBpbmZvKQogewotICAgIFNoYXJlZEJ1ZmZl
ciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAgIHNoYXJlZEJ1ZmZlci0+ZGVyZWYoKTsKIH0K
ICNlbmRpZgogCi1JbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBk
YXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURlY29k
ZXJDRzo6SW1hZ2VEZWNvZGVyQ0coRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gdXRpSGludDsKICAgICBpZiAoZGF0YS5zaXplKCkgPj0gMzIpCi0gICAgICAgIHV0
aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5jcmVhdGVD
RkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgICAgICB1dGlIaW50ID0gYWRv
cHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICAKICAgICBpZiAo
dXRpSGludCkgewogICAgICAgICBjb25zdCB2b2lkKiBrZXkgPSBrQ0dJbWFnZVNvdXJjZVR5cGVJ
ZGVudGlmaWVySGludDsKQEAgLTU2MiwyMyArNTYyLDI0IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1h
Z2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2Ft
cGxpCiAgICAgcmV0dXJuIG1hc2tlZEltYWdlID8gbWFza2VkSW1hZ2UgOiBpbWFnZTsKIH0KIAot
dm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBtX2lzQWxsRGF0
YVJlY2VpdmVkID0gYWxsRGF0YVJlY2VpdmVkOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
Ly8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3Jl
dGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KLSAg
ICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUg
Q0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCi0gICAg
Ly8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICBDR0ltYWdlU291cmNl
VXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0
KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRo
ZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRo
b3V0IHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgorICAgIC8vIFdlIHVz
ZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUg
Q0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCisgICAg
Ly8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCisgICAgQ0dJ
bWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UK
LSAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIu
Ci0gICAgZGF0YS5yZWYoKTsKLSAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBj
YWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hhcmVk
QnVmZmVyCisgICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlci4KKyAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29u
dGlndW91cygpOworICAgIGNvbnRpZ3VvdXNEYXRhLmdldCgpLnJlZigpOworICAgIC8vIFdlIHVz
ZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRl
UG9pbnRlciBvbmUgYmVjYXVzZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyCiAgICAgLy8gZG9lcyBu
b3QgcHJvdmlkZSBhIHdheSB0byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9pbnRlciBhbmQgZ3VhcmFu
dGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gKICAgICAvLyBpcyBhIHJlcXVpcmVtZW50IGZv
ciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2FsbGJhY2suCiAgICAgQ0dEYXRhUHJvdmlkZXJE
aXJlY3RDYWxsYmFja3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7IDAsIDAsIDAsIHNoYXJlZEJ1ZmZl
ckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9OwotICAgIFJldGFpblB0
cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNyZWF0ZURpcmVjdCgmZGF0YSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOwor
ICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihD
R0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdChjb250aWd1b3VzRGF0YS5wdHIoKSwgZGF0YS5zaXpl
KCksICZwcm92aWRlckNhbGxiYWNrcykpOwogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhUHJv
dmlkZXIobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhUHJvdmlkZXIuZ2V0KCksIGFsbERhdGFS
ZWNlaXZlZCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCmluZGV4IDk3NDA3MzZhMjFhYzk5OGFiMDVmMWM5
YjRmNWIxNjc1ZTQ0ZDJjOTEuLmEwYWMxYzJmYmVlNTI3ZTVhYjExMTQ1NTgxMmJkYjczNjNhMDU1
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuaApAQCAtMzIsOSArMzIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBJbWFnZURlY29kZXJDRyBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEltYWdlRGVjb2RlckNHKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAg
ICBJbWFnZURlY29kZXJDRyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCi0gICAgc3RhdGljIFJlZjxJbWFnZURl
Y29kZXJDRz4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQorICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyQ0c+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJDRyhkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoK
IAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBT
dWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2Rp
bmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkg
ZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBj
bGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApp
bmRleCAzMWMyN2MwNjliMmIzYzcwMzczMmViNzEzYjI2MzEyODQyMTI0ZTZlLi5mZjc3YjUzZTlk
NjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMzE5
LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJv
b2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQogewotICAg
IFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0Rh
dGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkp
OworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRD
RihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERG
RG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXIuY3BwCmluZGV4IGY3NDdkODBmYjYxZDMwZmM1MDIyZTY4MmQ2MzU2
MTMzZDNjYTY5N2EuLmM4YTgwNjEyMjA1M2Y2NDhhZGRiMDJhYzM4OWNlNzE0MzY4ZGJiYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcApAQCAtODAsNyArODAsNyBAQCB2b2lkIFNvdXJjZUJ1
ZmZlclBhcnNlcjo6c2V0TWluaW11bUF1ZGlvU2FtcGxlRHVyYXRpb24oZmxvYXQpCiB7CiB9CiAK
LVNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudChSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKK1NvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudChSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShidWZm
ZXIpKQogewogfQpAQCAtMTAxLDcgKzEwMSw3IEBAIHNpemVfdCBTb3VyY2VCdWZmZXJQYXJzZXI6
OlNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIGNsYW1wVG88c2l6ZV90
PihNVFBsdWdpbkJ5dGVTb3VyY2VHZXRMZW5ndGgoYnl0ZVNvdXJjZS5nZXQoKSkpOwogICAgICAg
ICB9LAogI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
CisgICAgICAgIFtdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYnVmZmVyLT5zaXplKCk7CiAgICAgICAgIH0K
QEAgLTEyNSw3ICsxMjUsNyBAQCBhdXRvIFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6cmVh
ZChzaXplX3QgcG9zaXRpb24sIHNpemVfdCBzaXplVG9SZWFkLCB1aW50OAogICAgICAgICAgICAg
cmV0dXJuIFVuZXhwZWN0ZWQ8UmVhZEVycm9yPiB7IFJlYWRFcnJvcjo6RmF0YWxFcnJvciB9Owog
ICAgICAgICB9LAogI2VuZGlmCi0gICAgICAgIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSAtPiBSZWFkUmVzdWx0CisgICAgICAgIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVhZFJlc3VsdAogICAgICAgICB7CiAgICAgICAgICAg
ICBidWZmZXItPmNvcHlUbyhkZXN0aW5hdGlvbiwgcG9zaXRpb24sIHNpemVUb1JlYWQpOwogICAg
ICAgICAgICAgcmV0dXJuIHNpemVUb1JlYWQ7CkBAIC0xMzMsNyArMTMzLDcgQEAgYXV0byBTb3Vy
Y2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnJlYWQoc2l6ZV90IHBvc2l0aW9uLCBzaXplX3Qgc2l6
ZVRvUmVhZCwgdWludDgKICAgICApOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZm
ZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VTaGFyZWRCdWZmZXIoKQorUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1ZmZlcigp
CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9zZWdtZW50LAogI2lmIEhBVkUoTVRfUExV
R0lOX0ZPUk1BVF9SRUFERVIpCkBAIC0xNDIsMjggKzE0MiwyOCBAQCBSZWY8U2hhcmVkQnVmZmVy
PiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VTaGFyZWRCdWZmZXIoKQogICAgICAg
ICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcihzaXplKCkpOwogICAgICAgICAgICAgYXV0byBy
ZWFkUmVzdWx0ID0gcmVhZCgwLCB2ZWN0b3Iuc2l6ZSgpLCB2ZWN0b3IuZGF0YSgpKTsKICAgICAg
ICAgICAgIGlmICghcmVhZFJlc3VsdC5oYXNfdmFsdWUoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICB2ZWN0b3Iuc2hyaW5rKHJl
YWRSZXN1bHQudmFsdWUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZSh2ZWN0b3IpKTsKKyAgICAgICAgICAgIHJldHVybiBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKTsKICAgICAgICAgfSwKICNlbmRpZgotICAg
ICAgICBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAgICAgICAgWyZdKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gc3RkOjpleGNoYW5nZShidWZmZXIsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpOworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UoYnVmZmVyLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKSk7CiAgICAgICAgIH0KICAgICApOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OmdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0CitS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50
OjpnZXRTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1f
c2VnbWVudCwKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVSKQotICAgICAgICBbJl0o
Y29uc3QgUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mKSAtPiBSZWZQdHI8U2hhcmVk
QnVmZmVyPgorICAgICAgICBbJl0oY29uc3QgUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJl
Zj4mKSAtPiBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAgICAgWyZdKGNv
bnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlZlB0cjxTaGFyZWRCdWZmZXI+Cisg
ICAgICAgIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4g
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+CiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBidWZmZXIucHRyKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKaW5kZXgg
NTIwYjUyMDdmYzI3MWQ3OTgxNTMzZmIxNGQyMzE1NTk0YTg4ODM2NS4uNzI5N2E3OTE0YTc5YWRm
NjQyZGM2YjE2YjM2ZTYwZjljZDAyOWYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKQEAgLTQ1
LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlwZTsKIGNs
YXNzIE1lZGlhU2FtcGxlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU291cmNlQnVmZmVyUGFyc2VyIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNvdXJjZUJ1ZmZlclBhcnNlcj4gewogcHVibGlj
OgpAQCAtNjksMTEgKzY5LDExIEBAIHB1YmxpYzoKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRf
UkVBREVSKQogICAgICAgICBTZWdtZW50KFJldGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VSZWY+
JiYpOwogI2VuZGlmCi0gICAgICAgIFNlZ21lbnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAg
ICAgIFNlZ21lbnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgICAgICBTZWdt
ZW50KFNlZ21lbnQmJikgPSBkZWZhdWx0OwotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiB0YWtl
U2hhcmVkQnVmZmVyKCk7Ci0gICAgICAgIC8vIFdpbGwgcmV0dXJuIG51bGxwdHIgaWYgU2VnbWVu
dCdzIGJhY2tlbmQgaXNuJ3QgYSBTaGFyZWRCdWZmZXIuCi0gICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gdGFrZVNoYXJlZEJ1ZmZlcigpOworICAgICAgICAvLyBXaWxsIHJldHVybiBu
dWxscHRyIGlmIFNlZ21lbnQncyBiYWNrZW5kIGlzbid0IGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ci4KKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdldFNoYXJlZEJ1ZmZl
cigpIGNvbnN0OwogCiAgICAgICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKQEAgLTg3LDcgKzg3
LDcgQEAgcHVibGljOgogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAg
ICAgICBSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiwKICNlbmRpZgotICAgICAgICAg
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4KKyAgICAgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPgogICAgICAgICA+IG1fc2VnbWVudDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwCmluZGV4IDM1OWVkYjQxNWZkMzc1ZWQ4MmI3YjRhNDlmMTFlNGM4ZmQ2Yzdk
NmIuLjliYzE4OTQxOTg2MzBiYWQ4ZDdjYmQwYjNhNWIyOGU0NmU5ZWZlMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0zNjcsNyArMzY3LDcgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIHZvaWQgRnJlZURhdGFTZWdtZW50KHZvaWQqIHJlZmNvbiwgdm9pZCosIHNpemVf
dCkKICAgICB7Ci0gICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCo+KHJlZmNvbik7CisgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21lbnQqPihyZWZjb24pOwogICAgICAgICBidWZmZXItPmRl
cmVmKCk7CiAgICAgfQogCkBAIC0zODgsNyArMzg4LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIGFkdmFuY2VUb05leHRTZWdtZW50KCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZm
ZXIgPSBjdXJyZW50U2VnbWVudC5nZXRTaGFyZWRCdWZmZXIoKTsKKyAgICAgICAgICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBjdXJyZW50U2VnbWVudC5n
ZXRTaGFyZWRCdWZmZXIoKTsKICAgICAgICAgICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3QmxvY2tC
dWZmZXIgPSBudWxscHRyOwogICAgICAgICAgICAgdWludDY0X3QgbGFzdFJlYWQgPSAwOwogICAg
ICAgICAgICAgc2l6ZV90IGRlc3RpbmF0aW9uT2Zmc2V0ID0gbV9wb3NpdGlvbldpdGhpblNlZ21l
bnQ7CkBAIC00MDksNyArNDA5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGRlc3RpbmF0
aW9uT2Zmc2V0ID0gMDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKHNoYXJlZEJ1ZmZlci0+aGFzT25lU2VnbWVudCgpLCAiQ2FuIG9ubHkgZGVhbCB3aXRoIHNo
YXJlZEJ1ZmZlciBjb250YWluaW5nIGEgc2luZ2xlIERhdGFTZWdtZW50Iik7Ci0gICAgICAgICAg
ICAgICAgLy8gQSBTaGFyZWRCdWZmZXIgZG9lc24ndCBoYXZlIHRocmVhZC1zYWZlIHJlZmNvdW50
aW5nLCBhcyBzdWNoIHdlIG11c3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgRGF0YVNlZ21lbnQg
aW5zdGVhZC4KKyAgICAgICAgICAgICAgICAvLyBBIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgZG9l
c24ndCBoYXZlIHRocmVhZC1zYWZlIHJlZmNvdW50aW5nLCBhcyBzdWNoIHdlIG11c3Qga2VlcCBh
IHJlZmVyZW5jZSB0byB0aGUgRGF0YVNlZ21lbnQgaW5zdGVhZC4KICAgICAgICAgICAgICAgICAv
LyBUT0RPOiBjb3VsZCB3ZSBvbmx5IGNyZWF0ZSBhIG5ldyBDTUJsb2NrQnVmZmVyIGlmIHRoZSBi
YWNrZW5kIG1lbW9yeSBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBvbmU/CiAgICAgICAgICAg
ICAgICAgYXV0byBmaXJzdFNlZ21lbnQgPSBzaGFyZWRCdWZmZXItPmJlZ2luKCktPnNlZ21lbnQ7
CiAgICAgICAgICAgICAgICAgc2l6ZV90IGNhblJlYWQgPSBzdGQ6Om1pbjxzaXplX3Q+KG51bVRv
UmVhZCwgZmlyc3RTZWdtZW50LT5zaXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IDQwMjVlMDY5
MmRjNWExNWU5NzM2OTU4MDMzM2Y2ZmEzYjliZmJkNGIuLmJhNjA1ZGNiMzFkNTI5NDdhYzJhNzE0
NmMxZGU4NDBjZDRhNDg3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1C
dWZmZXIuY3BwCkBAIC03MzcsNyArNzM3LDcgQEAgRGlkQ2hhbmdlSXRlbUJ1ZmZlciBJdGVtQnVm
ZmVyOjpzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChzaXplX3QgbnVtYmVyT2ZCeXRlcykKIHZv
aWQgSXRlbUJ1ZmZlcjo6YXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgdGVtcG9yYXJ5SXRl
bSkKIHsKICAgICBhdXRvIHJlcXVpcmVkU2l6ZUZvckl0ZW0gPSBtX3dyaXRpbmdDbGllbnQtPnJl
cXVpcmVkU2l6ZUZvckl0ZW0odGVtcG9yYXJ5SXRlbSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gb3V0T2ZMaW5lSXRlbTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gb3V0
T2ZMaW5lSXRlbTsKICAgICBpZiAoIXJlcXVpcmVkU2l6ZUZvckl0ZW0pIHsKICAgICAgICAgb3V0
T2ZMaW5lSXRlbSA9IG1fd3JpdGluZ0NsaWVudC0+ZW5jb2RlSXRlbU91dE9mTGluZSh0ZW1wb3Jh
cnlJdGVtKTsKICAgICAgICAgaWYgKCFvdXRPZkxpbmVJdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbUJ1ZmZlci5oCmluZGV4IGM4NzMxOTgyZWY4MzkzMWJiYWUzMWI3ODY1MGFj
MGRhMjBhMDVmYzUuLmIzMWJjNWZkNGU5MjE0YjE1YTM3NjFmYmU5OGQ2MGNlYjQ3YTk4ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKQEAgLTEwMiw3ICsxMDIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAg
dmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERp
c3BsYXlMaXN0SXRlbSYpIGNvbnN0CisgICAgdmlydHVhbCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTY4LDcgKzE2OCw3
IEBAIHB1YmxpYzoKICAgICAvLyB3aXRoIHBhZGRpbmcgYmV0d2VlbiBlYWNoIGl0ZW0gdG8gZW5z
dXJlIHRoYXQgYWxsIGl0ZW1zIGFyZSBhbGlnbmVkIHRvIDggYnl0ZXMuCiAgICAgLy8KICAgICAv
LyBJZiBhIHdyaXRpbmcgY2xpZW50IGlzIHByZXNlbnQgYW5kIHJlcXVpcmVzIGN1c3RvbSBlbmNv
ZGluZyBmb3IgdGhlIGdpdmVuIGl0ZW0gdHlwZSBULCB0aGUKLSAgICAvLyBpdGVtIGJ1ZmZlciB3
aWxsIGFzayB0aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgU2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcg
ZW5jb2RlZCBkYXRhIGZvciB0aGUKKyAgICAvLyBpdGVtIGJ1ZmZlciB3aWxsIGFzayB0aGUgY2xp
ZW50IGZvciBhbiBvcGFxdWUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGVuY29k
ZWQgZGF0YSBmb3IgdGhlCiAgICAgLy8gaXRlbS4gVGhpcyBlbmNvZGVkIGRhdGEgaXMgdGhlbiBh
cHBlbmRlZCB0byB0aGUgaXRlbSBidWZmZXIsIHdpdGggcGFkZGluZyB0byBlbnN1cmUgdGhhdAog
ICAgIC8vIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoaXMgZGF0YSBhcmUgYWxpZ25lZCB0byA4IGJ5
dGVzLCBpZiBuZWNlc3NhcnkuIFdoZW4gY29uc3VtaW5nIGVuY29kZWQKICAgICAvLyBpdGVtIGRh
dGEsIGEgY29ycmVzcG9uZGluZyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB3aWxsIGJlIHJlcXVp
cmVkIHRvIGNvbnZlcnQgdGhpcyBlbmNvZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA1MDZiNGRkNjJkNTVhNTZhMjc4YzMwY2Nh
YjJkMTkxMTBmMjQxZWVjLi4yYjQ0M2ZiYmVkMmMxZmRlNDhiY2RlOWNiZTQwOTUzNDk3ZmRlOTEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5j
cHAKQEAgLTM4LDEyICszOCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyB2b2lk
IHJlbGVhc2VDdXN0b21Gb250RGF0YSh2b2lkKiBkYXRhKQogewotICAgIHN0YXRpY19jYXN0PFNo
YXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOworICAgIHN0YXRpY19jYXN0PEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKIH0KIAogc3RhdGljIGNhaXJvX3VzZXJfZGF0
YV9rZXlfdCBmcmVlVHlwZUZhY2VLZXk7CiAKLUZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OkZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSBmcmVlVHlwZUZhY2UsIFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQorRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9G
YWNlIGZyZWVUeXBlRmFjZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIDog
bV9mb250RmFjZShhZG9wdFJlZihjYWlyb19mdF9mb250X2ZhY2VfY3JlYXRlX2Zvcl9mdF9mYWNl
KGZyZWVUeXBlRmFjZSwgRlRfTE9BRF9ERUZBVUxUKSkpCiB7CiAgICAgYnVmZmVyLnJlZigpOyAv
LyBUaGlzIGlzIGJhbGFuY2VkIGJ5IHRoZSBidWZmZXItPmRlcmVmKCkgaW4gcmVsZWFzZUN1c3Rv
bUZvbnREYXRhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRleCA5
YWQxOWI4NzZiMjdlNjBkNGZiYTUwMzBlNjVmODFlN2NhOGE1MDY5Li5kZmJjNTgwZmI4ZTliMzA5
MzZjY2EwOGJiODhiNDljMmJiNjUzYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmNwcApAQCAtODEsMTIgKzgxLDEyIEBAIEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBs
ZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRlcikKICAgICByZXR1cm4gKEltYWdlRGVjb2RlckdTdHJl
YW1lclNhbXBsZSopaXRlci0+c2Vjb25kLmdldCgpOwogfQogCi1SZWZQdHI8SW1hZ2VEZWNvZGVy
R1N0cmVhbWVyPiBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRh
dGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0
cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhh
T3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29k
ZXJHU3RyZWFtZXIoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikpOwogfQogCi1JbWFnZURlY29kZXJHU3RyZWFtZXI6OkltYWdlRGVjb2RlckdT
dHJlYW1lcihTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckdTdHJlYW1l
cjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKICAgICA6IG1fbWltZVR5cGUobWltZVR5cGUpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VGbGFnOwpAQCAtMTk5LDcgKzE5OSw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
OjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCkKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wpCiB7CiAg
ICAgcHVzaEVuY29kZWREYXRhKGRhdGEpOwogfQpAQCAtNDI2LDEwICs0MjYsMTEgQEAgRW5jb2Rl
ZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OmVuY29kZWRE
YXRhU3RhdHVzKCkgY29uc3QKICAgICByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OlVua25vd247
CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVu
Y29kZWREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKKyAgICBh
dXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX2Vv
cyA9IGZhbHNlOwotICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVjb2Rl
ckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gYnVmZmVyLmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5z
aXplKCldIHsKKyAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJH
U3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc2l6ZSA9
IGJ1ZmZlci5zaXplKCldIHsKICAgICAgICAgbV9pbm5lckRlY29kZXIgPSBJbWFnZURlY29kZXJH
U3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6Y3JlYXRlKCp0aGlzLCBkYXRhLCBzaXplKTsKICAgICAg
ICAgbV9pbm5lckRlY29kZXItPnJ1bigpOwogICAgIH0sIFRocmVhZFR5cGU6OkdyYXBoaWNzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAppbmRleCA2NmYzMzcyODQ2YTRkZjg3
NGY0MjBkYjY1NGU2ODljOWU0M2IwYzUyLi5kM2VmNmE0NWNkN2RiZGZjMzEyMGVhMjNmOGRlYjNj
NTk5NzFhZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCkBAIC00MSw4
ICs0MSw4IEBAIGNsYXNzIEltYWdlRGVjb2RlckdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBJbWFn
ZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEltYWdlRGVjb2RlckdTdHJlYW1lcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OwotICAgIEltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAg
IHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBjcmVhdGUoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlckdTdHJl
YW1lcigpID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzTWVkaWFUeXBlKE1l
ZGlhVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID09IE1lZGlhVHlwZTo6VmlkZW87IH0KQEAgLTcy
LDcgKzcyLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNp
emUobG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNB
bGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2VvczsgfQogICAgIHZvaWQg
Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAgLTEyMiw3ICsxMjIsNyBA
QCBwcml2YXRlOgogICAgIH07CiAKICAgICB2b2lkIGhhbmRsZVNhbXBsZShHUmVmUHRyPEdzdFNh
bXBsZT4mJik7Ci0gICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7
CisgICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
OwogCiAgICAgY29uc3QgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKiBzYW1wbGVBdEluZGV4
KHNpemVfdCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKaW5kZXggNzk3OTQ4MGY5MWM1OTdhYTlmOTAwOTdjMTg4MzJjNmExNWMzMmNl
OC4uYjMyNGNmMTE0NjQ3YjMzNzVlNmE0NWJmYWIxMDNlMGEyOTBmYjhkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTM2OTIsNyArMzY5
Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRh
dGFFbmNvdW50ZXJlZChJbml0RGF0YSYmIGluaXRECiAKICAgICAgICAgR1NUX0RFQlVHKCJzY2hl
ZHVsaW5nIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkICVzIGV2ZW50IG9mIHNpemUgJXp1
IiwgaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKS51dGY4KCkuZGF0YSgpLAogICAgICAg
ICAgICAgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwotICAgICAgICBHU1RfTUVNRFVNUCgi
aW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBh
eWxvYWQoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOworICAgICAgICBH
U1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGluaXREYXRhLnBheWxvYWQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpKSwgaW5pdERhdGEu
cGF5bG9hZCgpLT5zaXplKCkpOwogICAgICAgICB3ZWFrVGhpcy0+bV9wbGF5ZXItPmluaXRpYWxp
emF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCksIGlu
aXREYXRhLnBheWxvYWQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiAgICAgfSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDVkODZmYjFh
ZjQ4N2MwMjg5ZTAwMTI1NTk2NWMzMWRjZGE5NzM0MjYuLjkzMDE5MDk5NDViNGEyM2Q2Njc4MmYz
NTBiNTZlNDQ3OWY4MDI2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3Ry
ZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRob2RzLgogICAgIHZvaWQgcmVzcG9uc2VSZWNl
aXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAg
IHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtMTA5Myw3ICsxMDkzLDcgQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb24KICAgICBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRDb250aW51ZVBvbGljeUNo
ZWNrOjpZZXMpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRh
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMg
PSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVh
cktleS5oCmluZGV4IDY5MmE5OTZkMTljMjRlZmQ5YTQ4NTUyMzczYTU2NzliNTJlMWVmMWMuLjM0
OWJmZGNhYWQ2YzdkN2Y4ZDVhZGEwYTE3MjE5ZmQ5ZTcwNjI2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktl
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
Q0RNUHJveHlDbGVhcktleS5oCkBAIC02MiwxMSArNjIsMTEgQEAgcHVibGljOgogICAgIENETVBy
b3h5Q2xlYXJLZXkoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+Q0RNUHJveHlDbGVhcktleSgp
OwogCi0gICAgLy8gRklYTUU6IFRoZXJlJ3MgYSBsYWNrIG9mIGNvbnNpc3RlbmN5IGJldHdlZW4g
U2hhcmVkQnVmZmVycywKKyAgICAvLyBGSVhNRTogVGhlcmUncyBhIGxhY2sgb2YgY29uc2lzdGVu
Y3kgYmV0d2VlbiBGcmFnbWVudGVkU2hhcmVkQnVmZmVycywKICAgICAvLyBWZWN0b3I8Y2hhcj4n
cyBhbmQge3VpbnQ4X3QqLHNpemVfdH0gaWRpb21zIGZvciByZXByZXNlbnRpbmcgYSBjaHVuayBv
ZgotICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBzb21laG93LiBOb3RlIFNoYXJlZEJ1ZmZlcnMgYXJl
IGRhbmdlcm91cyBzaW5jZQorICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBzb21laG93LiBOb3RlIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXJzIGFyZSBkYW5nZXJvdXMgc2luY2UKICAgICAvLyB0aGV5J3Jl
IG5vdCB0aHJlYWQtc2FmZSBhbmQgdGhpcyBjbGFzcyBtdXN0IG1haW50YWluCi0gICAgLy8gdGhy
ZWFkLXNhZmV0eSwgYnV0IG1heWJlIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQgY291bGQgYmUK
KyAgICAvLyB0aHJlYWQtc2FmZXR5LCBidXQgbWF5YmUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQgY291bGQgYmUKICAgICAvLyBtYWRlIHRvIHdvcmssIGhvd2V2ZXIgdGhhdCBo
YXMgemVybyBoZWxwZXJzIGZvciBkcm9wcGluZyBpbnRvCiAgICAgLy8gaXRlcmF0b3ItYXdhcmUg
LyBjb21wYXJhdG9yLWF3YXJlIGNvbnRhaW5lcnMuLi4KICAgICBzdHJ1Y3QgY2VuY0RlY3J5cHRD
b250ZXh0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCmluZGV4IDJlZmEwNDM2MGU4ODQ4Mzgw
NjE0NGMzZDcxZGU2M2FkN2I0MmI1NjEuLmMzODkxNmU3ZDA1OWU4ODliNWM4OGVlYjA5ZTBmNGNm
YzAzYzFkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBA
IGJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSkgY29uc3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUgaW5pdERhdGEgYnVmZmVy
IGFzIGFuIEpTT04gb2JqZWN0IGluIGtleWlkcyBjYXNlLgogICAgIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJrZXlpZHMiKSAmJiBDRE1VdGlsaXRpZXM6
OnBhcnNlSlNPTk9iamVjdChpbml0RGF0YSkpCkBAIC0yMzcsNyArMjM3LDcgQEAgYm9vbCBDRE1Q
cml2YXRlVGh1bmRlcjo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IFMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IENETVByaXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJp
dmF0ZVRodW5kZXI6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKIH0KQEAg
LTI2MCw3ICsyNjAsNyBAQCB2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6aW5pdGlhbGl6ZVdpdGhD
b25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYQogICAgIGNhbGxiYWNrKFN1
Y2NlZWRlZCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjpzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCAgU3VjY2Vzc0NhbGxiYWNrJiYg
Y2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKICAgICBPcGVuQ0RNRXJyb3IgZXJyb3IgPSBvcGVuY2RtX3N5c3Rl
bV9zZXRfc2VydmVyX2NlcnRpZmljYXRlKG1fdGh1bmRlclN5c3RlbS5nZXQoKSwgY29uc3RfY2Fz
dDx1aW50OF90Kj4oY2VydGlmaWNhdGUtPmRhdGEoKSksCiAgICAgICAgIGNlcnRpZmljYXRlLT5z
aXplKCkpOwpAQCAtMzI2LDcgKzMyNiw3IEBAIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IENE
TUluc3RhbmNlVGh1bmRlcjo6Y3JlYXRlU2Vzc2lvbigpCiBjbGFzcyBQYXJzZWRSZXNwb25zZU1l
c3NhZ2UgewogCiBwdWJsaWM6Ci0gICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlKGNvbnN0IFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlKGNvbnN0
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgIHsKICAgICAgICAg
aWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+c2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MzU0LDggKzM1NCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNWYWxpZDsgfQogICAgIGJvb2wgaGFzUGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PGJvb2w+KG1fcGF5bG9hZCk7IH0KLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVy
PiYgcGF5bG9hZCgpIGNvbnN0JiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2Fk
LnZhbHVlKCk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpICYgeyBBU1NFUlQo
bV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CisgICAgY29uc3QgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QmIHsgQVNTRVJUKG1fcGF5bG9h
ZCk7IHJldHVybiBtX3BheWxvYWQudmFsdWUoKTsgfQorICAgIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYgcGF5bG9hZCgpICYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9h
ZC52YWx1ZSgpOyB9CiAgICAgYm9vbCBoYXNUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlLmhh
c192YWx1ZSgpOyB9CiAgICAgV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSB0eXBlKCkgY29u
c3QgeyBBU1NFUlQobV90eXBlKTsgcmV0dXJuIG1fdHlwZS52YWx1ZSgpOyB9CiAgICAgV2ViQ29y
ZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSB0eXBlT3IoV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlw
ZSBhbHRlcm5hdGUpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA/IG1fdHlwZS52YWx1ZSgpIDogYWx0
ZXJuYXRlOyB9CkBAIC0zNjQsMTEgKzM2NCwxMSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2lzVmFsaWQgeyBmYWxzZSB9OwotICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1
ZmZlcj4+IG1fcGF5bG9hZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4gbV9wYXlsb2FkOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFLZXlN
ZXNzYWdlVHlwZT4gbV90eXBlOwogfTsKIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVy
OjpjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6Y2hhbGxlbmdlR2VuZXJhdGVkQ2Fs
bGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIFBh
cnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UoYnVmZmVyKTsKICAgICBp
ZiAoIXBhcnNlZFJlc3BvbnNlTWVzc2FnZSkgewpAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6a2V5c1VwZGF0ZURvbmVDYWxsYmFjaygpCiAgICAgbV9z
ZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vz
c2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdl
KQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7CiAgICAgR1NUX0VSUk9SKCJDRE0g
ZXJyb3IiKTsKICAgICBHU1RfTUVNRFVNUCgiZXJyb3IgZHVtcCIsIG1lc3NhZ2UtPmRhdGEoKSwg
bWVzc2FnZS0+c2l6ZSgpKTsKQEAgLTQ4OCw3ICs0ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdl
KQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNl
VHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGluaXREYXRhU2hhcmVkQnVmZmVyLAordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YVNoYXJl
ZEJ1ZmZlciwKICAgICBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwpAQCAtNTA2LDcgKzUwNiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0
IEF0CiAgICAgICAgIG1faW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCksIG1faW5pdERhdGEucGF5
bG9hZCgpLT5zaXplKCksIG51bGxwdHIsIDAsICZtX3RodW5kZXJTZXNzaW9uQ2FsbGJhY2tzLCB0
aGlzLCAmc2Vzc2lvbik7CiAgICAgaWYgKCFzZXNzaW9uKSB7CiAgICAgICAgIEdTVF9FUlJPUigi
Q291bGQgbm90IGNyZWF0ZSBzZXNzaW9uIik7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOwogICAgICAg
ICBjYWxsYmFjayhpbml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCB7IH0sIGZhbHNlLCBGYWlsZWQp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5
cGUsIGNvbnN0IEF0CiAKICAgICBhdXRvIGdlbmVyYXRlQ2hhbGxlbmdlID0gW3RoaXMsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9p
bml0RGF0YS5wYXlsb2FkKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOwogICAgICAgICBpZiAobV9zZXNzaW9u
SUQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBHU1RfRVJST1IoImNvdWxkIG5vdCBjcmVhdGUg
c2Vzc2lvbiBpZCIpOwogICAgICAgICAgICAgY2FsbGJhY2soaW5pdERhdGEucmVsZWFzZU5vbk51
bGwoKSwgeyB9LCBmYWxzZSwgRmFpbGVkKTsKQEAgLTU0NSwxMyArNTQ1LDEzIEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6c2Vzc2lvbkZhaWx1cmUoKQogICAgIG1fc2Vzc2lvbkNo
YW5nZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVu
ZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSBtX3Nlc3Npb25JRCk7CiAK
ICAgICBHU1RfVFJBQ0UoIlVwZGF0aW5nIHNlc3Npb24gJXMiLCBzZXNzaW9uSUQudXRmOCgpLmRh
dGEoKSk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdlZENh
bGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wg
c3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdl
KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYg
KHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghcmVzcG9uc2VNZXNzYWdlKQpAQCAtNTYyLDcg
KzU2Miw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5CiAgICAgICAgICAgICAgICAgUGFyc2Vk
UmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShyZXNwb25zZU1lc3NhZ2UpOwog
ICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAg
ICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJl
c3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAgICAgICBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdl
LnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygiZ290IG1lc3NhZ2Ug
b2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1Rf
TUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0LApAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6
bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiB7CiAgICAg
QVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSBtX3Nlc3Npb25JRCk7CiAKLSAg
ICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHJlc3Bv
bnNlTWVzc2FnZSkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBl
bmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsK
ICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsK
ICAgICAgICAgICAgIGlmICghcmVzcG9uc2VNZXNzYWdlKQpAQCAtNTk3LDcgKzU5Nyw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklECiAgICAgICAgICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNz
YWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShyZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAg
ICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGlmIChw
YXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2Fn
ZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7
CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUi
LCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVz
c2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAg
ICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bWFrZV9wYWly
KHBhcnNlZFJlc3BvbnNlTWVzc2FnZS50eXBlT3IoTWVkaWFLZXlNZXNzYWdlVHlwZTo6TGljZW5z
ZVJlcXVlc3QpLApAQCAtNjQwLDcgKzY0MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1
bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2VuCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIG1fc2Vzc2lvbklEID09IHNlc3Npb25JRCk7
CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQo
W3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBtdXRhYmxlIHsKICAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAg
IGlmICghYnVmZmVyKQpAQCAtNjQ5LDcgKzY0OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
VGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vu
CiAgICAgICAgICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVz
c2FnZShidWZmZXIpOwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3Nh
Z2UpOwogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9h
ZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBX
VEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAg
ICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2Vk
UmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJV
Rygic2Vzc2lvbiAlcyByZW1vdmVkLCBtZXNzYWdlIGxlbmd0aCAlenUiLCBtX3Nlc3Npb25JRC51
dGY4KCkuZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxs
YmFjayhtX2tleVN0b3JlLmFsbEtleXNBcyhNZWRpYUtleVN0YXR1czo6UmVsZWFzZWQpLCBXVEZN
b3ZlKG1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKaW5kZXggY2RkOGRhMjExMjNjMTc5MWFlMmZi
NjQzOWZmMmQ2ZmEwZDJlYjIxYy4uMTAyMGUxNTMyMjcxYjUzNTFlMTA2ZGRlOGYyMWVhNTQwNWE5
YzIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9DRE1UaHVuZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKQEAgLTkzLDggKzkzLDggQEAgcHVibGljOgog
ICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vy
dmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25z
KCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFs
OworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNz
aW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6CkBAIC0xMTAsNyAr
MTEwLDcgQEAgcHVibGljOgogICAgIC8vIENETUluc3RhbmNlCiAgICAgSW1wbGVtZW50YXRpb25U
eXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0
aW9uVHlwZTo6VGh1bmRlcjsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9u
KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRp
ZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0g
ICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNz
Q2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZv
aWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fa2V5U3lzdGVtOyB9CiAg
ICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAt
MTI2LDggKzEyNiw4IEBAIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXIgZmluYWwgOiBw
dWJsaWMgQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgewogcHVibGljOgogICAgIENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXIoQ0RNSW5zdGFuY2VUaHVuZGVyJik7CiAKLSAgICB2b2lkIHJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2
b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikg
ZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBj
bG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7
CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwg
UmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKQEAgLTE0MSwxNCArMTQxLDE0IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ0RNSW5zdGFuY2VUaHVuZGVyKiBjZG1JbnN0YW5jZVRo
dW5kZXIoKSBjb25zdDsKIAotICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9IHZvaWQgKENETUluc3Rh
bmNlU2Vzc2lvblRodW5kZXI6OiopKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOwor
ICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9IHZvaWQgKENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6
OiopKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB1c2lu
ZyBDaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47Ci0gICAgdXNp
bmcgU2Vzc2lvbkNoYW5nZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoYm9vbCwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJik+OworICAgIHVzaW5nIFNlc3Npb25DaGFuZ2VkQ2FsbGJhY2sgPSBGdW5j
dGlvbjx2b2lkKGJvb2wsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT47CiAKLSAg
ICB2b2lkIGNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYp
OworICAgIHZvaWQgY2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQga2V5VXBkYXRlZENhbGxiYWNrKEtleUlEVHlwZSYm
KTsKICAgICB2b2lkIGtleXNVcGRhdGVEb25lQ2FsbGJhY2soKTsKLSAgICB2b2lkIGVycm9yQ2Fs
bGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBlcnJvckNhbGxiYWNrKFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBDRE1JbnN0YW5jZVNlc3Npb246
OktleVN0YXR1cyBzdGF0dXMoY29uc3QgS2V5SURUeXBlJikgY29uc3Q7CiAgICAgdm9pZCBzZXNz
aW9uRmFpbHVyZSgpOwogCkBAIC0xNTksNyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICBJbml0RGF0
YSBtX2luaXREYXRhOwogICAgIE9wZW5DRE1TZXNzaW9uQ2FsbGJhY2tzIG1fdGh1bmRlclNlc3Np
b25DYWxsYmFja3MgeyB9OwogICAgIEJveFB0cjxPcGVuQ0RNU2Vzc2lvbj4gbV9zZXNzaW9uOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWVzc2FnZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdlOwogICAgIGJvb2wgbV9uZWVkc0luZGl2aWR1YWxpemF0
aW9uIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8Q2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2s+IG1f
Y2hhbGxlbmdlQ2FsbGJhY2tzOwogICAgIFZlY3RvcjxTZXNzaW9uQ2hhbmdlZENhbGxiYWNrPiBt
X3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJF
TUVVdGlsaXRpZXMuY3BwCmluZGV4IDNmODVhZmU3M2M4NDI3NjI5OTdkNWFiYzJkN2JjMDdmN2Mw
MWI5YzMuLmVhODkwZjY3ZGEyMTM4N2Y0MGRhNjUxYTBjYTVjNzM0OTNlODRmNjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVh
bWVyRU1FVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKQEAgLTcxLDcgKzcxLDcg
QEAgc3RhdGljIHZvaWQgbWFya3VwRXJyb3IoR01hcmt1cFBhcnNlQ29udGV4dCosIEdFcnJvcios
IGdwb2ludGVyKQogCiBzdGF0aWMgR01hcmt1cFBhcnNlciBtYXJrdXBQYXJzZXIgeyBtYXJrdXBT
dGFydEVsZW1lbnQsIG1hcmt1cEVuZEVsZW1lbnQsIG1hcmt1cFRleHQsIG1hcmt1cFBhc3N0aHJv
dWdoLCBtYXJrdXBFcnJvciB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0
cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkK
K1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5l
ZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKIHsKICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOwogICAg
IGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRp
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0
cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggZDVhZmY4NDVmNDA5YTc1ZDcxYTk4NDBhY2YxZDM0
MmE0NjQ3ZDJmMS4uMjdkZDRlYWUwZDJlMDFhYjRkODRjMGFiYzQyNGViYjEwMTA0YzA0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9H
U3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCkBAIC0zOCw4ICszOCw3
IEBAIEdTVF9ERUJVR19DQVRFR09SWV9FWFRFUk4od2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0
aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnkpCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJ
bml0RGF0YSB7CiBwdWJsaWM6Ci0gICAgSW5pdERhdGEoKQotICAgICAgICA6IG1fcGF5bG9hZChT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpKSB7IH0KKyAgICBJbml0RGF0YSgpID0gZGVmYXVsdDsKIAog
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhbiBlbnVtIGZvciBzeXN0ZW0gdXVpZHMgZm9y
IGJldHRlciB0eXBlIHNhZmV0eS4KICAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlk
LCBHc3RCdWZmZXIqIGluaXREYXRhKQpAQCAtNTAsMTMgKzQ5LDE3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIEdTVF9DQVRfTEVWRUxfTE9HKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9k
ZWNyeXB0X2RlYnVnX2NhdGVnb3J5LCBHU1RfTEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3Qg
bWFwICVzIHByb3RlY3Rpb24gZGF0YSIsIHN5c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2Fk
ID0gZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVy
KCkpOworICAgICAgICBpZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRl
ZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9w
YXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAot
ICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgcGF5bG9hZCkKKyAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQo
c3lzdGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQoV1RGTW92
ZShwYXlsb2FkKSkpCiAgICAgeworICAgICAgICBpZiAocGF5bG9hZCkgeworICAgICAgICAgICAg
aWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZC0+bWFr
ZUNvbnRpZ3VvdXMoKSkpCisgICAgICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQ
YXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBh
cHBlbmQoSW5pdERhdGEmJiBpbml0RGF0YSkKQEAgLTcyLDEwICs3NSwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIC8vIGl0J3Mgbm90IHZlcnkgcm9idXN0LCBzbyBiZSBjYXJlZnVsIGhlcmUhCiAgICAg
ICAgIG1fc3lzdGVtSWQgPSBpbml0RGF0YS5tX3N5c3RlbUlkOwogCi0gICAgICAgIG1fcGF5bG9h
ZC0+YXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOworICAgICAgICBtX3BheWxvYWQuYXBwZW5k
KCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAgIGNvbnN0IFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkOyB9CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxv
YWQuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29uc3QgeyByZXR1cm4g
bV9zeXN0ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgpIGNvbnN0CiAg
ICAgewpAQCAtODYsMTEgKzg5LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9z
OwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lm
TmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmKTsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX3BheWxvYWQ7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3BheWxvYWQ7
CiB9OwogCiBjbGFzcyBQcm90ZWN0aW9uU3lzdGVtRXZlbnRzIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oCmluZGV4IDcxOGI5YmQzMTVlY2M2NzA3ODljNjVjYmFhYTAzNDkyOTc1ZTcyZDMuLjY5
MjhhNjNlOTcxYzdjMzVlODg0NGVlZjczYmZhNDRhOGQ4YzAzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBG
b250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRT
ZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3Mg
Rm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250
RmVhdHVyZVNldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQppbmRleCA4M2U2YWY3YjAzODky
ODM4YzNiZmVhMWMwYzExYWE3ZmNmOGE3N2E5Li42OGJjYzg4NDZhOGIxZjBmN2NiY2YxNDAzMTk2
NmVkOTI0MzIyYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpAQCAtNDgsNyArNDgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9j
dW1lbnQoKQogewotICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5z
dGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAg
IG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0
aERhdGE6ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwog
fQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAppbmRleCAwOWMxYzQ1YzQ1OTNhZWE0MzE4MzBkMjE1
YjdlNzQ4NTJjMTllMzdmLi5mYTAwMDgxMTYwNjY5N2RjNWM1MTEyMzMzYzkwYzhjOTJiNGI2NzA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTM1LDkgKzM1LDEwIEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBCaWdFbmRpYW5VU2hvcnQ7CitjbGFzcyBTaGFyZWRCdWZm
ZXI7CiBzdHJ1Y3QgRU9UUHJlZml4OwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IEVP
VEhlYWRlciB7CiAgICAgRU9USGVhZGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0
YS5jcHAKaW5kZXggMmNmYTg1NGMwMjI2NjhhY2MwMDczN2MxZWJiMzVmZjM0OGQ1OGUyYi4uMGZh
OGYzMDZhZDk1MmQwNmEwOTI5N2QwYjFkMjg3Yjg5ODgzMmEzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVmVydGljYWxEYXRhLmNwcApAQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBHU1VCVGFibGUg
OiBUYWJsZUJhc2UgewogCiBzdGF0aWMgYm9vbCBsb2FkSG10eFRhYmxlKGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgVmVjdG9yPHVpbnQxNl90PiYgYWR2YW5jZVdpZHRocykK
IHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5
cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURh
dGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6SGhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6
OkhoZWFUYWJsZSogaGhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpIaGVh
VGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCFoaGVhKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC00MjQsNyArNDI0LDcgQEAgT3BlblR5cGVWZXJ0aWNhbERhdGE6Ok9wZW5UeXBlVmVydGljYWxE
YXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwKIHZvaWQgT3BlblR5cGVW
ZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3Jt
RGF0YSkKIHsKICAgICAvLyBMb2FkIHZoZWEgZmlyc3QuIFRoaXMgdGFibGUgaXMgcmVxdWlyZWQg
Zm9yIGZvbnRzIHRoYXQgc3VwcG9ydCB2ZXJ0aWNhbCBmbG93LgotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpWaGVh
VGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5U
eXBlOjpWaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6VmhlYVRhYmxlKiB2aGVhID0gT3Bl
blR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OlZoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBp
ZiAoIXZoZWEpCiAgICAgICAgIHJldHVybjsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIE9wZW5U
eXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0
Zm9ybURhdGEpCiAKIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRWZXJ0aWNhbEdseXBo
U3Vic3RpdHV0aW9ucyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFi
bGUoT3BlblR5cGU6OkdTVUJUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9w
ZW5UeXBlVGFibGUoT3BlblR5cGU6OkdTVUJUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpHU1VC
VGFibGUqIGdzdWIgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6R1NVQlRhYmxl
PihidWZmZXIpOwogICAgIGlmIChnc3ViKQogICAgICAgICBnc3ViLT5nZXRWZXJ0aWNhbEdseXBo
U3Vic3RpdHV0aW9ucygmbV92ZXJ0aWNhbEdseXBoTWFwLCAqYnVmZmVyLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0
aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdy
aXRlVXRpbGl0aWVzLmgKaW5kZXggYTYyNzE5YjE3MTlhNzRmOTc2OTIyMTlkZjVmN2FhZWRjNDkw
NjQ2Ni4uMGRiNGFmYWRiM2Y3NDJiODNhNGUxNmNmMzcxODcwYTJiMDQwNGVhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0
aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdy
aXRlVXRpbGl0aWVzLmgKQEAgLTQzLDcgKzQzLDcgQEAgZW51bSBEV1JJVEVfRk9OVF9TVFJFVENI
OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNl
IERpcmVjdFdyaXRlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNWYxMGY3Mzky
ZDA0YzM0NGQxMmNlZTQyNjZlZGIxZWU5OTcxYzRlZi4uMDhmYzlmMTllYWVhOTQ4M2VhNThlYzFh
ZWVkZDQ1NzI1NmNlMjdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zNiwxMiAr
MzYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dGb250KiBDR0ZvbnRSZWY7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4
dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0
aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdz
OwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVj
b2RlckRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZURlY29kZXJEaXJlY3QyRC5jcHAKaW5kZXggNjI5ZTBlNjFhMTA0YzU2N2ExZDRlZGNiN2U1
Nzk3ZGNmNjdjNmU4ZS4uNzczNTczOWI5MzM0ZjQ0ZDk5YTNmMTJmZmM1YmY3YjQxZjdjYzZlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVj
b2RlckRpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCkBAIC0yNzIsNyArMjcyLDcgQEAgUGxhdGZvcm1J
bWFnZVB0ciBJbWFnZURlY29kZXJEaXJlY3QyRDo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWIKICAgICByZXR1cm4gYml0bWFwOwogfQogCi12b2lkIEltYWdlRGVjb2Rl
ckRpcmVjdDJEOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCit2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmICghYWxsRGF0YVJl
Y2VpdmVkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCmluZGV4IDRmNDcy
NTg2YjQyNGJkYTFjZjZmYTAxNDNjYmEyM2QwMzAwMTZlNDUuLmMyMzY1ZmQ3NDRjNjExOGMxOTk5
ZTA1YjgwMmVkNWI0OGYzNjQ4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCkBAIC00MSw3ICs0
MSw3IEBAIGNsYXNzIEltYWdlRGVjb2RlckRpcmVjdDJEIGZpbmFsIDogcHVibGljIEltYWdlRGVj
b2RlciB7CiBwdWJsaWM6CiAgICAgSW1hZ2VEZWNvZGVyRGlyZWN0MkQoKTsKIAotICAgIHN0YXRp
YyBSZWY8SW1hZ2VEZWNvZGVyRGlyZWN0MkQ+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFnZURl
Y29kZXJEaXJlY3QyRD4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJbWFnZURlY29kZXJEaXJlY3QyRCgpKTsKICAgICB9CkBAIC03Miw3ICs3Miw3
IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5
bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxE
YXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9
CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAKaW5k
ZXggMGQ4ODIwZTlmM2Q2ZmQ3NzM1ZDU3MGIzNjQxNDg4ZjUzYmQ3ZWNlOS4uMmQ5NzI3MGE3MzQ4
MzQ4OTNlNzhjODFmZjBlYzViYjVkZmVjM2Y4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIC8vIFRoaXMgZnVuY3Rpb24gbG9hZHMgcmVzb3VyY2Vz
IGZyb20gV2ViS2l0Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJ
bnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKaW5kZXggZDk1NmQ5ZTc2
MjVkNWJiNWE3MGYwNjkzZTc3OThlZTkwODQ5ZjE2NS4uMzNjOTVlYzMzMzNhOTIwYzY0YTAxODE3
NTFlYjRhNTA1ZWYxYTdhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTEs
NyArNTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSB7CiAKLXN0YXRpYyB1
bnNpZ25lZCBjb3B5RnJvbVNoYXJlZEJ1ZmZlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZl
ckxlbmd0aCwgY29uc3QgU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpCitzdGF0aWMgdW5zaWdu
ZWQgY29weUZyb21TaGFyZWRCdWZmZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5n
dGgsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikKIHsKICAgICB1
bnNpZ25lZCBieXRlc0V4dHJhY3RlZCA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50
IDogc2hhcmVkQnVmZmVyKSB7CkBAIC0xMzUsNyArMTM1LDcgQEAgYm9vbCBtYXRjaGVzQ1VSU2ln
bmF0dXJlKGNoYXIqIGNvbnRlbnRzKQogCiB9CiAKLVJlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rl
cj4gU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhh
T3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gU2NhbGFibGVJ
bWFnZURlY29kZXI6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxlbmd0aE9mTG9u
Z2VzdFNpZ25hdHVyZSA9IDE0OyAvLyBUbyB3aXQ6ICJSSUZGPz8/P1dFQlBWUCIKICAgICBjaGFy
IGNvbnRlbnRzW2xlbmd0aE9mTG9uZ2VzdFNpZ25hdHVyZV07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29k
ZXIuaAppbmRleCAzMmQ0ZTZmOGI4ZmExNGExM2JmYjYyMmQ4NzU3MDg3OThiOTlkYWEyLi45YzQw
NTU3ODI0MWQwYzUxMjcwMjk1MTVjMjIxMjY1OGY4YzRmNjhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VE
ZWNvZGVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyBudWxs
cHRyIGlmIHdlIGNhbid0IHNuaWZmIGEgc3VwcG9ydGVkIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQg
ZGF0YSAocG9zc2libHkKICAgICAvLyBiZWNhdXNlIHRoZXJlIGlzbid0IGVub3VnaCBkYXRhIHll
dCkuCi0gICAgc3RhdGljIFJlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsK
KyAgICBzdGF0aWMgUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBjcmVhdGUoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKTsKIAogICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJl
bXVsdGlwbHlBbHBoYTsgfQogCkBAIC03MCwxNiArNzAsMTUgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxldGU7
CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIG92ZXJyaWRlCisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZQogICAgIHsKICAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0
YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgaWYgKGRhdGEuZGF0YSgpKSB7Ci0gICAgICAgICAgICAvLyBTaGFyZWRCdWZmZXI6
OmRhdGEoKSBjb21iaW5lcyBhbGwgc2VnbWVudHMgaW50byBvbmUgaW4gY2FzZSB0aGVyZSdzIG1v
cmUgdGhhbiBvbmUuCi0gICAgICAgICAgICBtX2RhdGEgPSBkYXRhLmJlZ2luKCktPnNlZ21lbnQu
Y29weVJlZigpOwotICAgICAgICB9CisgICAgICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRh
Lm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0YS0+ZGF0YSgpKQor
ICAgICAgICAgICAgbV9kYXRhID0gY29udGlndW91c0RhdGEtPmJlZ2luKCktPnNlZ21lbnQuY29w
eVJlZigpOwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0
YXR1czo6VHlwZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0
RGF0YSA9IHRydWU7CiAgICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFsbERhdGFSZWNlaXZlZCk7
CkBAIC0xOTUsNyArMTk0LDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+
IGhvdFNwb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogcHJv
dGVjdGVkOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CiAg
ICAgVmVjdG9yPFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUsIDE+IG1fZnJhbWVCdWZmZXJDYWNo
ZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CiAgICAgbXV0YWJsZSBMb2NrIG1fbG9jazsK
ICAgICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNw
cAppbmRleCA3YzYwM2ZkODM1OGMyMTRhYzkxODRmMzE4OTk3MmZlODQxYjYxZTgwLi4yNmY4ODY0
OTZlNWE1YTE0ZTI4YWZiMWFmYTliZmMzMDE3N2Y1MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VS
ZWFkZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIEFWSUZJbWFnZVJlYWRlcjo6QVZJRkltYWdlUmVh
ZGVyKFJlZlB0cjxBVklGSW1hZ2VEZWNvZGVyPiYmIGRlY29kZXIpCiAKIEFWSUZJbWFnZVJlYWRl
cjo6fkFWSUZJbWFnZVJlYWRlcigpID0gZGVmYXVsdDsKIAotYm9vbCBBVklGSW1hZ2VSZWFkZXI6
OnBhcnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQorYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKIHsKICAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01lbW9yeShtX2F2aWZEZWNvZGVy
LmdldCgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpICE9IEFWSUZfUkVTVUxUX09LKQogICAg
ICAgICByZXR1cm4gYWxsRGF0YVJlY2VpdmVkID8gbV9kZWNvZGVyLT5zZXRGYWlsZWQoKSA6IGZh
bHNlOwpAQCAtNTgsNyArNTgsNyBAQCBib29sIEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIo
Y29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBhbAogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIEFWSUZJbWFnZVJlYWRlcjo6ZGVjb2RlRnJhbWUoc2l6ZV90IGZy
YW1lSW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmIGJ1ZmZlciwgY29uc3QgU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkKK3ZvaWQgQVZJRkltYWdlUmVhZGVyOjpkZWNvZGVG
cmFtZShzaXplX3QgZnJhbWVJbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYgYnVmZmVy
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkKIHsKICAg
ICBpZiAobV9kZWNvZGVyLT5mYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRklt
YWdlUmVhZGVyLmgKaW5kZXggY2JjYTBiOGMxMjRiZmYwZmZjMzMwMWJhMzViY2UwMWVkMjcyMmRm
OC4uNDk2ZjY5ZjgxMmJkNzViMGVkYTYzNTdiYWE4NjBjZmNjYjViYTRiMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FW
SUZJbWFnZVJlYWRlci5oCkBAIC0zOSw4ICszOSw4IEBAIHB1YmxpYzoKICAgICBBVklGSW1hZ2VS
ZWFkZXIoUmVmUHRyPEFWSUZJbWFnZURlY29kZXI+JiYpOwogICAgIH5BVklGSW1hZ2VSZWFkZXIo
KTsKIAotICAgIGJvb2wgcGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dCYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIGRlY29kZUZyYW1lKHNpemVfdCBp
bmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQmKTsKKyAgICBib29sIHBhcnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgZGVj
b2RlRnJhbWUoc2l6ZV90IGluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiwgY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKTsKICAgICBzaXplX3QgaW1hZ2VD
b3VudCgpIGNvbnN0OwogICAgIGRvdWJsZSByZXBldGl0aW9uQ291bnQoKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUElt
YWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9i
bXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3Mjc2OWE2OTI2ZWMyNDE5YmY2NjM4MjUyOGQz
ZDc3MjBhNTRhZGFlLi5mNzQ1NWMxNDZjN2U4YWViMDRjYzhjNTZmMzMwZTJhMDFmM2JhNzJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDYsNyArNDYsNyBAQCBCTVBJbWFnZURl
Y29kZXI6OkJNUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcAogewogfQogCi12b2lkIEJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFy
ZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBCTVBJbWFnZURlY29k
ZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1h
Z2VEZWNvZGVyLmgKaW5kZXggYzdjN2NhODFmZWE2YjhhNzc0YmIzMDhlNTM4ZGNkMDQ4Yzk5NWVl
YS4uNjRkZWQ2YWJiZTJjMGEyOWIxMWY5ZmI1ZWNkNmI0ODcyNGQ1ODk3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJs
ZUltYWdlRGVjb2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICJibXAiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIFNjYWxhYmxlSW1h
Z2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIGZpbmFsOwog
ICAgIC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gQmUgY2FyZWZ1
bCB0byBhdm9pZAogICAgIC8vIGFjY2Vzc2luZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxseSB3
aGVuIGNhbGxpbmcgdGhpcyBmcm9tIGluc2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaAppbmRleCA0
ODQ0ZjM4MGRjMTdlYzcwNDU4OGZiMTJmNTNlYWJjNmQyMGU2MGY0Li5iZDQzMGU4YThiZWEyYzgx
NmIyYzUyMmJmNWJhNzg4NDZjMzhlMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaApAQCAtNDIs
NyArNDIsNyBAQCBjbGFzcyBCTVBJbWFnZVJlYWRlciB7CiBwdWJsaWM6CiAgICAgLy8gUmVhZCBh
IHZhbHVlIGZyb20gfGRhdGFbb2Zmc2V0XXwsIGNvbnZlcnRpbmcgZnJvbSBsaXR0bGUgdG8gbmF0
aXZlCiAgICAgLy8gZW5kaWFubmVzcy4KLSAgICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJlYWRV
aW50MTYoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkK
KyAgICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJlYWRVaW50MTYoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQpCiAgICAgewogICAgICAg
ICB1aW50MTZfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNweSgmcmVzdWx0LCAmZGF0YS5kYXRhKClb
b2Zmc2V0XSwgMik7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAKLSAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29u
c3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkKKyAgICBzdGF0
aWMgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQpCiAgICAgewogICAgICAgICB1aW50MzJf
dCByZXN1bHQ7CiAgICAgICAgIG1lbWNweSgmcmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwg
NCk7CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBCTVBJbWFnZVJlYWRlcihTY2FsYWJs
ZUltYWdlRGVjb2RlciogcGFyZW50LCBzaXplX3QgZGVjb2RlZEFuZEhlYWRlck9mZnNldCwgc2l6
ZV90IGltZ0RhdGFPZmZzZXQsIGJvb2wgdXNlc0FuZE1hc2spOwogCiAgICAgdm9pZCBzZXRCdWZm
ZXIoU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogYnVmZmVyKSB7IG1fYnVmZmVyID0gYnVmZmVy
OyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsg
bV9kYXRhID0gJmRhdGE7IH0KKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KIAogICAgIC8vIERvZXMg
dGhlIGFjdHVhbCBkZWNvZGluZy4gSWYgfG9ubHlTaXplfCBpcyB0cnVlLCBkZWNvZGluZyBvbmx5
CiAgICAgLy8gcHJvZ3Jlc3NlcyBhcyBmYXIgYXMgbmVjZXNzYXJ5IHRvIGdldCB0aGUgaW1hZ2Ug
c2l6ZS4gUmV0dXJucwpAQCAtMjcyLDcgKzI3Miw3IEBAIHByaXZhdGU6CiAgICAgU2NhbGFibGVJ
bWFnZURlY29kZXJGcmFtZSogbV9idWZmZXI7CiAKICAgICAvLyBUaGUgZmlsZSB0byBkZWNvZGUu
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKIAogICAgIC8v
IEFuIGluZGV4IGludG8gfG1fZGF0YXwgcmVwcmVzZW50aW5nIGhvdyBtdWNoIHdlJ3ZlIGFscmVh
ZHkgZGVjb2RlZC4KICAgICBzaXplX3QgbV9kZWNvZGVkT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3Rv
cmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWly
by9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAppbmRleCA2MDEyMDM3NGY5YzQzMTY4YTY1MjFi
NjljNTRhZmJlMmEwMGY1NWY3Li40YTIxMjU1YThjMGZiNjc4ZTRhYWRkNzY2M2ViN2Y5MThlN2Zl
OTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9j
YWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcApAQCAt
MzcsNyArMzcsOSBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgp
IGNvbnN0CiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nh
c3Q8dWludDMyX3QqPihtX3BpeGVsc1B0cikpLAogICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMy
LCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpLCBzaXplKCkud2lkdGgoKSAqIHNpemVv
Zih1aW50MzJfdCkpKTsKICAgICBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tleV90IHNfc3VyZmFj
ZURhdGFLZXk7Ci0gICAgY2Fpcm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRhKHN1cmZhY2UuZ2V0KCks
ICZzX3N1cmZhY2VEYXRhS2V5LCBtX3BpeGVscy5nZXQoKSwgW10odm9pZCogZGF0YSkgeyBzdGF0
aWNfY2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4oZGF0YSktPmRlcmVmKCk7IH0pOwor
ICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0YShzdXJmYWNlLmdldCgpLCAmc19zdXJmYWNl
RGF0YUtleSwgbV9waXhlbHMuZ2V0KCksIFtdKHZvaWQqIGRhdGEpIHsKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8RGF0YVNlZ21lbnQqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICB9KTsKIAogICAgIHJldHVy
biBzdXJmYWNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBlNmFiZTBkOTU0
NGI2YzE4NWM2NDVkZWNlMDlmMjNmOTU2NjYwN2NiLi5iOWVjMDFiOGFlOGU4ZDI5YmM3ODI1MjZl
MDc2NTI1NTFlMzU5YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzgsNyAr
MzgsNyBAQCBHSUZJbWFnZURlY29kZXI6OkdJRkltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBHSUZJbWFnZURlY29kZXI6On5HSUZJ
bWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRh
KFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEdJRkltYWdl
RGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFn
ZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZURlY29kZXIuaAppbmRleCAzNWRmMzNmNmRmYzQ4M2ZkODQ3MTM2NmFlNTNiYjBiOTYx
Y2FlZDJlLi5jNzQ3MTk5OTliOTg2YzFjZWY4NDc4NzU5ZDIzNzE4YzkwNDJkM2ViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VE
ZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFNj
YWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gImdpZiJfczsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwog
ICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CiAgICAgc2l6ZV90IGZyYW1l
Q291bnQoKSBjb25zdCBmaW5hbDsKICAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50
KCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCmluZGV4IDQyMTQ2ZTAzMjkzMjM2
OTk3ODllYjVlNDJhZjRjNzNkMzRhYjljYzYuLjEwODJmZGYwZGZmMjM5MWU1NjUzMGE0MWY4N2Jh
NDM5ODIzMjc1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCkBAIC0yMzcsNyArMjM3LDcgQEAg
cHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQorICAgIHZvaWQg
c2V0RGF0YShXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0
YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQogICAgIC8vIEZJWE1FOiBoYWx0QXRGcmFtZSBzaG91bGQg
YmUgc2l6ZV90LgogICAgIGJvb2wgZGVjb2RlKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6R0lG
UXVlcnksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKTsKIApAQCAtMzE2LDYgKzMxNiw2IEBAIHByaXZh
dGU6CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxHSUZGcmFtZUNvbnRleHQ+ID4gbV9mcmFt
ZXM7CiAgICAgc2l6ZV90IG1fY3VycmVudERlY29kaW5nRnJhbWU7CiAKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOwogICAgIGJv
b2wgbV9wYXJzZUNvbXBsZXRlZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4
IGM3MTdjNDVkMzA1N2MwNTUzNmVlNjA1MGY5Mzk3MDQ2ZDEwZGYyYTcuLmMwNzEzNDViOGJmMzY5
YjgwMjcxZmJkZjBhMGNlMDE3NGYwNTAzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3Bw
CkBAIC01Miw3ICs1Miw3IEBAIElDT0ltYWdlRGVjb2Rlcjo6SUNPSW1hZ2VEZWNvZGVyKEFscGhh
T3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiAKIElDT0ltYWdlRGVj
b2Rlcjo6fklDT0ltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBJQ09JbWFnZURlY29k
ZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3Zv
aWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
aWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCmluZGV4IGZiN2E5MDNiMmEwNzUzOTQ5MTdhYmJi
ZjExYjFjZWQ4M2ZmNDMyYTAuLjEwZWU5YjRkMmU4YzlkODg3ZTFkMmI4YmUxMzliYjc0MjcxZDU3
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgog
CiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNp
b24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiaWNvIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNo
YXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERh
dGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsK
ICAgICBJbnRTaXplIHNpemUoKSBjb25zdCBmaW5hbDsKICAgICBJbnRTaXplIGZyYW1lU2l6ZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdCBmaW5hbDsKICAgICBib29sIHNl
dFNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5j
cHAKaW5kZXggZmQzNDViYjc4NmZmMDhkOTQ2NTkzMGFhNGRmNDhkZjE3YWJmMzA1Yy4uNWNmYWM5
ZjIzNTdlMmUxMmM2ODY0MDBiMjY3ODhhZTdmOGJlMTM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuY3BwCkBAIC0yMjIsNyArMjIyLDcgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIo
anBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKIAogc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCiB7Ci0gICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVmZmVyOwogICAgIGZvciAoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlciA9IGlu
Zm8tPm1hcmtlcl9saXN0OyBtYXJrZXI7IG1hcmtlciA9IG1hcmtlci0+bmV4dCkgewogICAgICAg
ICBpZiAoIWlzSUNDTWFya2VyKG1hcmtlcikpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTIz
NiwxMyArMjM2LDEzIEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmls
ZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICAgICAgdW5zaWduZWQgbWFya2VyU2l6ZSA9IG1hcmtlci0+ZGF0YV9sZW5ndGgg
LSBpY2NIZWFkZXJTaXplOwotICAgICAgICBidWZmZXItPmFwcGVuZChyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NIZWFkZXJTaXplKSwgbWFya2VyU2l6
ZSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOwogICAgIH0KIAot
ICAgIGlmIChidWZmZXItPmlzRW1wdHkoKSkKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYnVmZmVyOworICAgIHJldHVybiBi
dWZmZXIudGFrZSgpLT5tYWtlQ29udGlndW91cygpOwogfQogI2VuZGlmCiAKQEAgLTMyMCw3ICsz
MjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYnl0ZXNUb1NraXAgPSBzdGQ6Om1heChudW1CeXRl
cyAtIGJ5dGVzVG9Ta2lwLCBzdGF0aWNfY2FzdDxsb25nPigwKSk7CiAgICAgfQogCi0gICAgYm9v
bCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5
U2l6ZSkKKyAgICBib29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkKICAgICB7CiAgICAgICAgIG1fZGVjb2RpbmdT
aXplT25seSA9IG9ubHlTaXplOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdl
RGVjb2Rlci5jcHAKaW5kZXggYmVjZjY0NTAyNzdlZWI3NGIwOWRlNTJlZTE4MmZmNmUxMWVkMjc2
Mi4uMjA0NzNmMGVlZWJiNTZjNzEzMTRmNjU1NmJkYTA5MDMzNDkwNzQ0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJ
bWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzgwLDcgKzM4MCw3IEBA
IHZvaWQgSlBFRzIwMDBJbWFnZURlY29kZXI6OmRlY29kZShib29sIG9ubHlTaXplLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKICAgICB9CiAKICAgICBzdHJ1Y3QgUmVhZGVyIHsKLSAgICAgICAgU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YTsKKyAgICAgICAgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGE7CiAgICAgICAgIHNpemVfdCBvZmZzZXQ7CiAgICAgfSBy
ZWFkZXIgPSB7ICptX2RhdGEsIDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRl
eCBjMTJjNDU5YTVhM2U1YjM1MWM1YmNjNjJiZjAwYjhhMjgxYmQ1YmEzLi40Y2JkMzIzZDlhNzUw
MjZlZjg2NThmMzgxNmRkNzM4ZDM3Y2E4ZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNw
cApAQCAtMTUyLDcgKzE1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9yZWFkT2Zmc2V0ID0gMDsK
ICAgICB9CiAKLSAgICBib29sIGRlY29kZShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
JiBkYXRhLCBib29sIHNpemVPbmx5LCB1bnNpZ25lZCBoYWx0QXRGcmFtZSkKKyAgICBib29sIGRl
Y29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9v
bCBzaXplT25seSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpCiAgICAgewogICAgICAgICBtX2RlY29k
aW5nU2l6ZU9ubHkgPSBzaXplT25seTsKICAgICAgICAgUE5HSW1hZ2VEZWNvZGVyKiBkZWNvZGVy
ID0gc3RhdGljX2Nhc3Q8UE5HSW1hZ2VEZWNvZGVyKj4ocG5nX2dldF9wcm9ncmVzc2l2ZV9wdHIo
bV9wbmcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCmluZGV4IDAyZjFiMDlkYmM3
NjUxNjAxZjkyMmRkZTI5ZjgwNWE2NTg3MWUyZDIuLmIxYmVjNTVlNzhjNDM0ODAxYzI1NGFjZTBk
ZjU5OTMxYTM2Yjc0YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDcs
NyArNDcsNyBAQCBXRUJQSW1hZ2VEZWNvZGVyOjpXRUJQSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9u
IGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZQogCiBXRUJQSW1hZ2VEZWNvZGVyOjp+
V0VCUEltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpz
ZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIFdF
QlBJbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47
CkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUoc2l6ZV90
IGZyYW1lSW5kZXgsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIC8vIFRoaXMgY2FuIGJlIGV4
ZWN1dGVkIGJvdGggaW4gdGhlIG1haW4gdGhyZWFkICh3aGVuIG5vdCB1c2luZyBhc3luYyBkZWNv
ZGluZykgb3IgaW4gdGhlIGRlY29kaW5nIHRocmVhZC4KICAgICAvLyBXaGVuIGV4ZWN1dGVkIGlu
IHRoZSBkZWNvZGluZyB0aHJlYWQsIGEgY2FsbCB0byBzZXREYXRhKCkgZnJvbSB0aGUgbWFpbiB0
aHJlYWQgbWF5IGNoYW5nZSB0aGUgZGF0YQogICAgIC8vIHRoZSBXZWJQRGVtdXhlciBpcyB1c2lu
ZywgbGVhdmluZyBpdCBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUsIHNvIHdlIG5lZWQgdG8gcHJv
dGVjdCB0aGUgZGF0YS4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gcHJv
dGVjdGVkRGF0YShtX2RhdGEpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudD4gcHJvdGVjdGVkRGF0YShtX2RhdGEpOwogICAgIFdlYlBEYXRhIGlucHV0RGF0
YSA9IHsgcHJvdGVjdGVkRGF0YS0+ZGF0YSgpLCBwcm90ZWN0ZWREYXRhLT5zaXplKCkgfTsKICAg
ICBXZWJQRGVtdXhTdGF0ZSBkZW11eGVyU3RhdGU7CiAgICAgV2ViUERlbXV4ZXIqIGRlbXV4ZXIg
PSBXZWJQRGVtdXhQYXJ0aWFsKCZpbnB1dERhdGEsICZkZW11eGVyU3RhdGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dF
QlBJbWFnZURlY29kZXIuaAppbmRleCBhZjM2NWU5Y2Y5YzdjZTk1MzhiNjRiYTc4OWJmMDE3ZDQ4
ZjZlZGUxLi5kZDI4YmM4OGRmNWMwZmEzYzE1NzM3ODY5YjI2MDk3M2FhYTBkMjNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFn
ZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
ZWJwL1dFQlBJbWFnZURlY29kZXIuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+V0VCUEltYWdlRGVjb2RlcigpOwogCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9u
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIndlYnAiX3M7IH0KLSAgICB2b2lkIHNldERhdGEo
U2hhcmVkQnVmZmVyJiwgYm9vbCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsKICAgICBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1l
KiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBvdmVycmlkZTsKICAgICBSZXBldGl0
aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IGZy
YW1lQ291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2ZyYW1lQ291bnQ7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggOTA5ZThlNzY4
YWRiNjhiYWIyODQ0NWQyODI3MzYwYTNmM2ZhMjJjMy4uYjIzNzdmZTM0MTFkMmFjNDAxNTEzYmYw
OWFlOGNjYWU3ODZiZDhlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3Rl
Ym9hcmRJT1MubW0KQEAgLTIzNiwxNCArMjM2LDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCiAKICNpZiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgaWYgKFt0eXBl
IGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlRmxhdFJURkRdKSB7
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJvYXJk
TmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtV
VFR5cGVGbGF0UlRGRCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYg
KG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFk
ZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJu
IGJ1ZmZlciAmJiByZWFkZXIucmVhZFJURkQoKmJ1ZmZlcikgPyBSZWFkZXJSZXN1bHQ6OlJlYWRU
eXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKICAgICB9CiAKICAgICBpZiAoW3R5
cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVSVEZdKSB7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVSVEYsIG1fcGFzdGVib2FyZE5hbWUsIGNv
bnRleHQoKSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlUlRG
LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgICAgICBpZiAobV9jaGFuZ2VDb3Vu
dCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6UGFz
dGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAgICByZXR1cm4gYnVmZmVyICYmIHJl
YWRlci5yZWFkUlRGKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJl
c3VsdDo6RGlkTm90UmVhZFR5cGU7CkBAIC0yNTEsNyArMjUxLDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KICNlbmRpZiAvLyAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAK
ICAgICBpZiAoW3N1cHBvcnRlZEltYWdlVHlwZXMoKSBjb250YWluc09iamVjdDp0eXBlXSkgewot
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCB0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0
KCkpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3Ry
YXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgdHlwZSwgbV9wYXN0ZWJv
YXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdl
Q291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXND
aGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZElt
YWdlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCB0eXBlLCBpdGVtSW5mby5wcmVmZXJyZWRQcmVz
ZW50YXRpb25TaXplKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRp
ZE5vdFJlYWRUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bs
YXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0
Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggMTY3Y2VmMDJkNzhkNzk0ZGVhYThlNWRkYWY0ZGQ2
NmMzZDJjY2E0NS4uMTZiM2Q1ZDQ0MTVkMjU4NTE1ZjY2MGE4NmFjNmNlZmJkY2RiNjRjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJk
SU9TLm1tCkBAIC0zMzgsNyArMzM4LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNl
dFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKICAgICByZXR1cm4gMDsKIH0KIAotaW50NjRf
dCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29u
c3QgU3RyaW5nJikKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBl
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiAw
OwogfQpAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShj
b25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIAogICAgIEFTU0VSVChjb250ZW50
LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBpIDwg
c2l6ZTsgKytpKQotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNv
bnRlbnQuY2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50
LmNsaWVudFR5cGVzW2ldXTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRk
RGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CiAKICAgICBpZiAoY29u
dGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIGF1dG8gd2ViQXJjaGl2ZURh
dGEgPSBjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpOwpAQCAt
NDc5LDcgKzQ3OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0K
IAogICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsKLSAgICAg
ICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5h
cmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5T
QXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVk
U3RyaW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJvcjpudWxscHRyXSkKKyAgICAg
ICAgaWYgKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5h
cmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0Ok5T
QXR0cmlidXRlZFN0cmluZy5jbGFzc10gZnJvbURhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVk
U3RyaW5nRm9ybWF0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlcnJv
cjpudWxscHRyXSkKICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZFJl
cHJlc2VudGluZ09iamVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKICAgICB9CiAKQEAgLTUwMSw3ICs1
MDEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIFBhc3RlYm9h
cmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgY3VzdG9tRGF0YS5zZXRPcmlnaW4oY29udGVu
dC5jb250ZW50T3JpZ2luKTsKLSAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRh
OmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZv
clR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKKyAgICBbcmVwcmVz
ZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVy
KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6QChQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKIAogICAgIHJlZ2lzdGVySXRlbVRvUGFz
dGVib2FyZChyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyLmdldCgpLCBtX3Bhc3RlYm9hcmQuZ2V0
KCkpOwogfQpAQCAtNTE0LDE0ICs1MTQsMTQgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Ondy
aXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogICAgIGF1dG8mIGRh
dGEgPSBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50RGF0YTsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgp
ID09IGRhdGEuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHR5cGVzLnNp
emUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIg
YWRkRGF0YTpkYXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsK
KyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpkYXRhW2ldLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnR5cGVzW2ldXTsKIAog
ICAgIGlmIChwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhICYmICFwYXN0ZWJvYXJkSW1hZ2Uu
cmVzb3VyY2VNSU1FVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byB1dGlPck1JTUVUeXBl
ID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGU7CiAgICAgICAgIGlmICghaXNEZWNs
YXJlZFVUSSh1dGlPck1JTUVUeXBlKSkKICAgICAgICAgICAgIHV0aU9yTUlNRVR5cGUgPSBVVElG
cm9tTUlNRVR5cGUodXRpT3JNSU1FVHlwZSk7CiAKLSAgICAgICAgYXV0byBpbWFnZURhdGEgPSBw
YXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0
byBpbWFnZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIg
YWRkRGF0YTppbWFnZURhdGEuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKil1dGlPck1JTUVUeXBl
XTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2Vu
dGF0aW9uU2l6ZTpwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXplXTsKICAgICAgICAgW3JlcHJlc2Vu
dGF0aW9uc1RvUmVnaXN0ZXIgc2V0U3VnZ2VzdGVkTmFtZTpwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2Vz
dGVkTmFtZV07CkBAIC02MzUsNyArNjM1LDcgQEAgc3RhdGljIFJldGFpblB0cjxXZWJJdGVtUHJv
dmlkZXJSZWdpc3RyYXRpb25JbmZvTGlzdD4gY3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmEKICAg
ICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHls
ZTpXZWJQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGluZV07CiAKICAgICBpZiAoZGF0YS5o
YXNTYW1lT3JpZ2luQ3VzdG9tRGF0YSgpIHx8ICFkYXRhLm9yaWdpbigpLmlzRW1wdHkoKSkgewot
ICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVTaGFy
ZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXpl
ZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpKSB7CiAgICAgICAgICAgICAvLyBXZSBzdGFzaCB0aGUgbGlzdCBv
ZiBzdXBwbGllZCBwYXN0ZWJvYXJkIHR5cGVzIGluIHRlYW1EYXRhIGhlcmUgZm9yIGNvbXBhdGli
aWxpdHkgd2l0aCBkcmFnIGFuZCBkcm9wLgogICAgICAgICAgICAgLy8gU2luY2UgdGhlIGNvbnRl
bnRzIG9mIGl0ZW0gcHJvdmlkZXJzIGNhbm5vdCBiZSBsb2FkZWQgcHJpb3IgdG8gZHJvcCwgYnV0
IHRoZSBwYXN0ZWJvYXJkIHR5cGVzIGFyZQogICAgICAgICAgICAgLy8gY29udGFpbmVkIHdpdGhp
biB0aGUgY3VzdG9tIGRhdGEgYmxvYiBhbmQgd2UgbmVlZCB0byB2ZW5kIHRoZW0gdG8gdGhlIHBh
Z2Ugd2hlbiBmaXJpbmcgYGRyYWdvdmVyYApAQCAtNjcyLDggKzY3Miw4IEBAIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4odmFsdWUp
OwotICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVdOworICAgICAg
ICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4odmFs
dWUpOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcg
Kiljb2NvYVR5cGVdOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0Nv
bnZlcnRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVy
dGVySU9TLm1tCmluZGV4IDU0NDY1M2M0NDAzZDI2MDQwYTU1ZDIzZTkzNjkxYmZlZGNjOTJiNDIu
LmNhYmFhYTExOGRjMzRiNjFhMGE2ZjU0OGQzMDQ2NjI2NjFiODhiOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCkBAIC04Miw3
ICs4Miw3IEBAIEBlbmQKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUHJldmlld0NvbnZlcnRlcjo6
UHJldmlld0NvbnZlcnRlcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUHJldmll
d0NvbnZlcnRlclByb3ZpZGVyJiBwcm92aWRlcikKLSAgICA6IG1fcHJldmlld0RhdGEgeyBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICA6IG1fcHJldmlld0RhdGEgeyBtYWtlVW5pcXVlUmVm
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKSB9
CiAgICAgLCBtX29yaWdpbmFsUmVzcG9uc2UgeyByZXNwb25zZSB9CiAgICAgLCBtX3Byb3ZpZGVy
IHsgcHJvdmlkZXIgfQogICAgICwgbV9wbGF0Zm9ybURlbGVnYXRlIHsgYWRvcHROUyhbW1dlYlBy
ZXZpZXdDb252ZXJ0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZToqdGhpc10pIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNjc3
ZjhjYWRhYjU5MTIzZTFiNjJkMWJhYzJkMTkwOGJmNjc2YTJmOS4uMGQyNTQ5OGI4NmJlZjE4NWQz
NzY5ZDVhNWJjMGJjMmY3MzFjNzBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRNYWMubW0KQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlKGNvbnN0IENvbG9yJiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFw
cGVyKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIGF1dG8g
d3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVX
aXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldKTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxv
Y10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURh
dGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgW3dyYXBw
ZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocGFz
dGVib2FyZEltYWdlLnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKV07
CiAgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTM2Miw3ICszNjIsNyBA
QCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5U
ZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvdwogICAgIAogICAgIGlmICh0eXBlcy5jb250YWlucyhT
dHJpbmcobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCkpKSkgewogICAgICAgICBpZiAoYXV0byBk
YXRhID0gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGxlZ2FjeVJURkRQYXN0ZWJvYXJk
VHlwZSgpLCBpdGVtSW5kZXgsIHN0cmF0ZWd5LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkp
KSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05T
QXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEZEOmRhdGEtPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpuaWxdKSkgeworICAgICAgICAgICAgaWYgKGF1dG8g
YXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoUlRGRDpkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBk
b2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKICAgICAgICAgICAgICAgICB0ZXh0LnRleHQgPSBb
YXR0cmlidXRlZFN0cmluZyBzdHJpbmddOwogICAgICAgICAgICAgICAgIHRleHQuaXNVUkwgPSBm
YWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tCmluZGV4IDM1M2QwMDZiOTBjYmNlNjA5ZTZkZmQz
N2MyODA4MTMxZjIxNGI4ZGEuLjg4ZDA0MDI1ODQzNzAyZTRhYTRmNWE5YTU1NmI4ODFjNmU0MGMy
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3Jp
dGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVy
Lm1tCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRTdHJpbmc6d2ViQ29udGVudC0+ZGF0
YUluU3RyaW5nRm9ybWF0IGZvclR5cGU6TlNQYXN0ZWJvYXJkVHlwZVN0cmluZ107CiAKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzLnNpemUo
KTsgKytpKQotICAgICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+
Y2xpZW50RGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0Fs
cmVhZHlVVEkod2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKKyAgICAgICAgICAg
IFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJl
YWR5VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CiAKICAgICAgICAgUGFz
dGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAgICAgICAgY3VzdG9tRGF0YS5zZXRPcmln
aW4od2ViQ29udGVudC0+Y29udGVudE9yaWdpbik7Ci0gICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBz
ZXREYXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CisgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXRE
YXRhOmN1c3RvbURhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKFN0cmluZyhQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpKS5nZXQoKV07CiAgICAgfQogCiAgICAg
cmV0dXJuIHBhc3RlYm9hcmRJdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggZDliN2QyNDgwMzhjMmRiOGFhYjA5
MmNiOTFmZmE1NmYyY2I0Y2U3My4uYzNiNGQyZDk2MjE3NDcxYzczNWUyNGZlN2E1ZjlkOTIzN2Rm
NDcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFz
dGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1Q
YXN0ZWJvYXJkTWFjLm1tCkBAIC0yNjMsOCArMjYzLDggQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgICAgICBp
ZiAocGxhdGZvcm1UeXBlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JC
dWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxS
ZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAg
ICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PihzdHJpbmdPckJ1ZmZlcikpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9
IHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbbV9wYXN0
ZWJvYXJkIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsK
ICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5n
T3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4o
c3RyaW5nT3JCdWZmZXIpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0
ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICB9KTsK
IAogICAgIGlmIChzaG91bGRXcml0ZUN1c3RvbURhdGEpIHsKLSAgICAgICAgaWYgKGF1dG8gc2Vy
aWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0Rh
dGEoKSkKKyAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZEN1c3RvbURhdGEgPSBkYXRhLmNyZWF0
ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAg
ICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpzZXJpYWxpemVkQ3VzdG9tRGF0YS5nZXQoKSBm
b3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAgICAgfQogCkBA
IC0zNDEsMTIgKzM0MSwxMiBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcykKICAgICByZXR1cm4gW21fcGFz
dGVib2FyZCBkZWNsYXJlVHlwZXM6Y3JlYXRlTlNBcnJheShwYXN0ZWJvYXJkVHlwZXMpLmdldCgp
IG93bmVyOm5pbF07CiB9CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJG
b3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
KQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewog
ICAgIGlmICghY2FuV3JpdGVQYXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERh
dGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBh
c3RlYm9hcmRUeXBlXTsKKyAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0
RGF0YTpidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGlkV3JpdGVEYXRh
KQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gY2hhbmdlQ291bnQoKTsKQEAgLTUwNCw4
ICs1MDQsOCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TUGFzdGVib2FyZEl0ZW0+IGNyZWF0ZVBhc3Rl
Ym9hcmRJdGVtKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYQogICAgICAgICBpZiAoIXBsYXRmb3Jt
VHlwZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAg
ICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3Ry
aW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbaXRlbSBzZXREYXRhOnBsYXRmb3JtRGF0YS5n
ZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0
byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGUuaAppbmRleCA2ODEzZDVkYTdkY2IwZmMyNTlmMWJkMWVkMGE1NGMxYTFhOWZkOWNm
Li43OTY1NTRmNGM5NzY0NTE0MDFlMWExMjM3NDY4NzA0MGIyNGIxY2MxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZS5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIE1lZGlhU2FtcGxlOwogY2xhc3Mg
TWVkaWFTdHJlYW1Qcml2YXRlOwogY2xhc3MgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU7CiBjbGFz
cyBQbGF0Zm9ybUF1ZGlvRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnM7CiAK
QEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIH07CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIEF1ZGlvVmlkZW9TZWxlY3RlZFRyYWNrcyBzZWxlY3RUcmFja3MoTWVkaWFTdHJlYW1Qcml2
YXRlJik7CiAKLSAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91
YmxlKT47CisgICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBkb3VibGUpPjsKICAgICB2aXJ0dWFsIHZvaWQgZmV0Y2hEYXRhKEZldGNoRGF0YUNhbGxi
YWNrJiYpID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCA9
IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcAppbmRleCBjMjVkZjkxNTc0
YTY1YmM0MWJkYjcwNjc4ZGM0NzcyNDgzNmRkMTQ1Li40OThkNGVlMTM0MGM0Yjk0MDAxYjYwYzM0
NDc5YjdmNzJkNWM4ZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCkBA
IC05Myw3ICs5Myw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpnZW5lcmF0ZU1v
Y2tDb3VudGVyU3RyaW5nKCkKIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6OmZldGNo
RGF0YShGZXRjaERhdGFDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYnVmZmVyTG9jayB9
OwogICAgICAgICBWZWN0b3I8dWludDhfdD4gdmFsdWUgeyBtX2J1ZmZlci5jaGFyYWN0ZXJzOCgp
LCBtX2J1ZmZlci5sZW5ndGgoKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCAyMTFmNzVlZTczYWY2OTE5ZTdmNGM5OTU4ZTBj
ZDM0ODI1MzJkMDlmLi45YzJjNzk3YjgxOTUxMmQ4ZmQ1NzkwMTVkYzNiNmU0MDVlM2JjNjBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
aApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRWaWRlb1NhbXBsZUJ1
ZmZlcihNZWRpYVNhbXBsZSYpOwogICAgIHZvaWQgYXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29u
c3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgY29u
c3QgV1RGOjpNZWRpYVRpbWUmLCBzaXplX3QpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZygpOwot
ICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiwgZG91YmxlKT4mJik7CisgICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4mJik7CiAK
ICAgICB2b2lkIHBhdXNlKCk7CiAgICAgdm9pZCByZXN1bWUoKTsKQEAgLTEwNSw3ICsxMDUsNyBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBmaW5pc2hlZEZsdXNoaW5nU2FtcGxlcygpOwogICAgIHZv
aWQgY29tcGxldGVGZXRjaERhdGEoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0
YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogCiAg
ICAgYm9vbCBtX2hhc0F1ZGlvIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmlkZW8geyBmYWxz
ZSB9OwpAQCAtMTE3LDggKzExNyw4IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPEFWQXNzZXRX
cml0ZXI+IG1fd3JpdGVyOwogCiAgICAgTG9jayBtX2RhdGFMb2NrOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOwotICAgIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4gbV9m
ZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0
YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxvY2spOworICAgIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hE
YXRhQ29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlv
blJlZj4gbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IG1fYXVkaW9Db21wcmVzc29yOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IDhjMWY3
YzBlNTMxM2I2Yjg1NmNkM2NkZjVlODM4NGYzNmI3YjUzZjUuLjg0ODQxMDBlYWM1ZTExNWU5YjBj
ZjAxMjBiYWJmNzhmYjFhMTI3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTEzNywxMCArMTM3LDggQEAgTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcigpCiAgICAgICAg
IG1fd3JpdGVyLmNsZWFyKCk7CiAgICAgfQogCi0gICAgLy8gQXQgdGhpcyBwb2ludGVyLCB3ZSBz
aG91bGQgbm8gbG9uZ2VyIGJlIHdyaXRpbmcgYW55IGRhdGEsIHNvIGl0IHNob3VsZCBiZSBzYWZl
IHRvIGNsb3NlIGFuZCBudWxsaWZ5IG1fZGF0YSB3aXRob3V0IGxvY2tpbmcuCiAgICAgaWYgKG1f
d3JpdGVyRGVsZWdhdGUpCiAgICAgICAgIFttX3dyaXRlckRlbGVnYXRlIGNsb3NlXTsKLSAgICBt
X2RhdGEgPSBudWxscHRyOwogCiAgICAgaWYgKGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihudWxscHRyLCAwKTsKQEAgLTQ5NSw3ICs0OTMsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjpzdG9wUmVjb3JkaW5nKCkKICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKTsKIApAQCAtNTM3LDE4ICs1MzUsMTMgQEAgdm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcGxldGVGZXRjaERhdGEoKQogdm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGlmICghbV9k
YXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEsIHNpemUp
OworICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSgpCitSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkK
IHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwotICAgIGF1dG8gZGF0YSA9IFdU
Rk1vdmUobV9kYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKKyAgICByZXR1cm4gbV9kYXRhLnRha2Uo
KTsKIH0KIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6cGF1c2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCmluZGV4IGE5
YjI5ZDU5ZTlhYTNiNDY1NTQxNWJkOGJlZjA5ODRjNTQ0YjczZjAuLmNkZWU2MDM1MjNjZDY2OTQ1
ZjQyOGY2OTQ3ODk2MGY2ZmQ3NGM3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogCiBuYW1lc3BhY2UgRGF0YVVSTERlY29kZXIgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggZmFmZGZlODdjODM3
ZTYxNTdkMmYxM2U5YTdjYTAwOTY5ZDUwYjFjNy4uNGJlYmNiNTA5OGQxNWMyOTY2ZWQ4YzdlZTEz
NmFlM2EyYWU0YTIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGUuaApAQCAtODQsNyArODQsNyBAQCBjbGFzcyBOZXR3b3JrTG9hZE1ldHJp
Y3M7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xh
c3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogY2xhc3MgU3luY2hyb25vdXNMb2FkZXJNZXNzYWdlUXVldWU7CiBjbGFz
cyBUaW1lcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAppbmRleCA2ZTY1YmI4OTE4YzZlYzEyZjhhZWE4NmVi
ZTcwNDg4NGUyZTczNjZmLi5iYThmZDRmZjRmMWU0MWM5YWQ0ZmE3NGE0MmJlNGUyYmQxMWFhODQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlQ2xpZW50LmNwcApAQCAtMzYsOSArMzYsOSBAQCBSZXNvdXJjZUhhbmRsZUNsaWVu
dDo6UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKIFJlc291cmNlSGFuZGxlQ2xp
ZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgUmVzb3VyY2VI
YW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVz
b3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBkaWRSZWNlaXZlRGF0YShoYW5k
bGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5j
b2RlZERhdGFMZW5ndGgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKaW5kZXggYjYzMzdkNTZjZThjZDli
ZWZmOWRmYmUxMTM2NjJiYzc3NTZiNjUzNy4uYzRmMDU0ODVmMjg3MGIxMTZkYTdjNzYwZDNjMGZj
ZTk2ZWMyYjRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBSZXNvdXJj
ZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIAogZW51bSBDYWNoZVN0b3JhZ2VQb2xpY3kgewogICAgIFN0b3Jh
Z2VBbGxvd2VkLApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50
Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4
X3QqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgeyB9Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAg
CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbQppbmRleCAxZmYwNjUyMTZmYTY4MDg4MTkzNzE0YmNmMmJjZGFmNjk2ZjAyNDA2
Li4wMDhlMjI2ZmY5MTkwMDRiNDUxNDhhMjQ3MjYxMTYxNTA5ODk2Mjc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0
b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJl
c3BvbnNlR2VuZXJhdG9yLm1tCkBAIC00MSw4ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhIHsKICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSkKLSAgICAgICAgOiBidWZmZXIo
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICAgICAgLCBvcmlnaW5hbFJlc3BvbnNlKHJlc3Bv
bnNlKQorICAgICAgICA6IG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCiAgICAgICAgICwgcmVz
b3VyY2UoJnJlc291cmNlKSB7IH0KIAogICAgIHN0cnVjdCBUYXNrRGF0YSA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxUYXNrRGF0YT4gewpAQCAtNTUsOSArNTQsOSBAQCBzdHJ1Y3QgUmFuZ2VSZXNw
b25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgICAgIHNpemVfdCBuZXh0Qnl0ZVRvR2l2ZUJ1ZmZl
ckluZGV4IHsgMCB9OwogICAgICAgICBlbnVtIGNsYXNzIFJlc3BvbnNlU3RhdGUgOiB1aW50OF90
IHsgTm90U3ludGhlc2l6ZWRZZXQsIFdhaXRpbmdGb3JTZXNzaW9uLCBTZXNzaW9uQ2FsbGVkQ29t
cGxldGlvbkhhbmRsZXIgfSByZXNwb25zZVN0YXRlIHsgUmVzcG9uc2VTdGF0ZTo6Tm90U3ludGhl
c2l6ZWRZZXQgfTsKICAgICB9OwotICAgIAorCiAgICAgSGFzaE1hcDxSZXRhaW5QdHI8V2ViQ29y
ZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiwgc3RkOjp1bmlxdWVfcHRyPFRhc2tEYXRhPj4gdGFza0Rh
dGE7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVmZmVyOwogICAgIFJlc291cmNlUmVzcG9uc2Ugb3JpZ2luYWxSZXNwb25zZTsKICAgICBl
bnVtIGNsYXNzIFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZyA6IGJvb2wgeyBObywgWWVzIH0g
c3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIHsgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5n
OjpObyB9OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IHJlc291cmNlOwpAQCAt
MTA2LDIyICsxMDUsMjIgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpyZW1vdmVUYXNr
KFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzaykKIHZvaWQgUmFuZ2VSZXNwb25zZUdl
bmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3Jl
TlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2ssIGNvbnN0IFBhcnNlZFJlcXVlc3RSYW5nZSYgcmFu
Z2UsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBleHBlY3RlZENvbnRlbnRMZW5ndGgsIGNvbnN0IERh
dGEmIGRhdGEpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvIGJ1ZmZl
ciA9IGRhdGEuYnVmZmVyOwotICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwog
CiAgICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8ganVzdCBtYWtlIGEgcmFuZ2Ug
d2l0aCBhICogYWZ0ZXIgdGhlIC8gYnV0IEFWRm91bmRhdGlvbiBkb2Vzbid0IGFjY2VwdCBzdWNo
IHJhbmdlcy4KICAgICAvLyBJbnN0ZWFkLCB3ZSBqdXN0IHdhaXQgdW50aWwgdGhlIGxvYWQgaGFz
IGNvbXBsZXRlZCwgYXQgd2hpY2ggdGltZSB3ZSB3aWxsIGtub3cgdGhlIGNvbnRlbnQgbGVuZ3Ro
IGZyb20gdGhlIGJ1ZmZlciBsZW5ndGguCiAgICAgaWYgKCFleHBlY3RlZENvbnRlbnRMZW5ndGgp
CiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGRhdGEuYnVmZmVyLnNp
emUoKTsKICAgICBpZiAoYnVmZmVyU2l6ZSA8IHJhbmdlLmJlZ2luKQogICAgICAgICByZXR1cm47
Ci0gICAgCisKKyAgICBhdXRvIGJ1ZmZlciA9IGRhdGEuYnVmZmVyLmdldCgpOwogICAgIGF1dG8q
IHRhc2tEYXRhID0gZGF0YS50YXNrRGF0YS5nZXQodGFzayk7CiAgICAgaWYgKCF0YXNrRGF0YSkK
ICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sg
PSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgdGFza0RhdGEgPSBXZWFrUHRyIHsgKnRhc2tEYXRh
IH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CisKKyAgICBhdXRvIGdpdmVCeXRl
c1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2spLCBidWZmZXIsIGJ1ZmZlclNpemUsIHRh
c2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRo
aXMgfV0gewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoW3Rh
c2sgc3RhdGVdICE9IE5TVVJMU2Vzc2lvblRhc2tTdGF0ZVJ1bm5pbmcpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xMzAsNyArMTI5LDcgQEAgdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpn
aXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1UKICAgICAg
ICAgYXV0byYgcmFuZ2UgPSB0YXNrRGF0YS0+cmFuZ2U7CiAgICAgICAgIGF1dG8mIGJ5dGVJbmRl
eCA9IHRhc2tEYXRhLT5uZXh0Qnl0ZVRvR2l2ZUJ1ZmZlckluZGV4OwogICAgICAgICB3aGlsZSAo
dHJ1ZSkgewotICAgICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXItPnNpemUoKSkKKyAg
ICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyU2l6ZSkKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGF1dG8gYnVmZmVyVmlldyA9IGJ1ZmZlci0+Z2V0U29tZURhdGEo
Ynl0ZUluZGV4KTsKICAgICAgICAgICAgIGlmICghYnVmZmVyVmlldy5zaXplKCkgfHwgYnl0ZUlu
ZGV4ID4gcmFuZ2UuZW5kKQpAQCAtMTc1LDcgKzE3NCw3IEBAIHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhGcm9tRGF0YShj
b25zCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoZGF0YS5zdWNjZXNz
ZnVsbHlGaW5pc2hlZExvYWRpbmcgPT0gRGF0YTo6U3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5n
OjpZZXMpCi0gICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci0+c2l6ZSgpOworICAgICAgICByZXR1
cm4gZGF0YS5idWZmZXIuc2l6ZSgpOwogCiAgICAgLy8gRklYTUU6IFJlc291cmNlUmVzcG9uc2VC
YXNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBzaG91bGQgcmV0dXJuIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBpbnN0ZWFkIG9mIHVzIGRvaW5nIHRoaXMgY2hlY2sgaGVyZS4KICAgICBhdXRvIGV4
cGVjdGVkQ29udGVudExlbmd0aCA9IGRhdGEub3JpZ2luYWxSZXNwb25zZS5leHBlY3RlZENvbnRl
bnRMZW5ndGgoKTsKQEAgLTI0NCw3ICsyNDMsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFsCisgICAgdm9pZCBkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKSBmaW5hbAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICAgICAgaWYgKCFtX2dlbmVyYXRvcikKQEAgLTI1Miw3ICsyNTEsNyBAQCBwcml2YXRlOgog
ICAgICAgICBhdXRvKiBkYXRhID0gbV9nZW5lcmF0b3ItPm1fbWFwLmdldChtX3VybFN0cmluZyk7
CiAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGF0YS0+
YnVmZmVyLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS0+YnVmZmVyLmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX2dlbmVyYXRvci0+Z2l2ZVJlc3BvbnNl
VG9UYXNrc1dpdGhGaW5pc2hlZFJhbmdlcygqZGF0YSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5oCmluZGV4IDQwNDg4NWFlNjM3NmZjZTY4MDQwZDJhMDVjMDBiZWM0N2ZlMTZhYTguLmNl
NGMyNTQ1Y2RlMGYyZjQ2YWMzMzhmOTZjNDkwODhlYjQ1ZDA5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRl
cjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OwogY2xhc3MgV2ViQ29yZU5T
VVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OwogZW51bSBjbGFzcyBTaG91bGRDb250aW51ZVBvbGlj
eUNoZWNrIDogYm9vbDsKQEAgLTE1OCw3ICsxNTgsNyBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJm
YWNlIFdlYkNvcmVOU1VSTFNlc3Npb24gOiBOU09iamVjdCB7CiAtICh2b2lkKXJlc291cmNlOihu
dWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNlbnRCeXRl
czoodW5zaWduZWQgbG9uZyBsb25nKWJ5dGVzU2VudCB0b3RhbEJ5dGVzVG9CZVNlbnQ6KHVuc2ln
bmVkIGxvbmcgbG9uZyl0b3RhbEJ5dGVzVG9CZVNlbnQ7CiAtICh2b2lkKXJlc291cmNlOihudWxs
YWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVz
cG9uc2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlIGNvbXBsZXRp
b25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlNob3VsZENvbnRpbnVl
UG9saWN5Q2hlY2spPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAoQk9PTClyZXNvdXJjZToobnVs
bGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzaG91bGRDYWNo
ZVJlc3BvbnNlOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZTsKLS0g
KHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSop
cmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKWRhdGE7
CistICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpZGF0YTsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZWRpcmVjdDooY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgcmVxdWVzdDooV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYpcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2
b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJl
c291cmNlIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZFdpdGhFcnJvcjooY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpZXJyb3I7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGxvYWRGYWlsZWRXaXRoRXJyb3I6KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKWVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1t
CmluZGV4IGUwNDAxMGE5ODExYjRjOWFlMTQ5NDk5ODcwMWNhMTU0ODlmNTcxNmMuLjhjODlkOTM4
NjU3OTMzYTFkYTI5MDMxOTkxNTg0YzRkYjJmYWE5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
bW0KQEAgLTYwOCw3ICs2MDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYp
IG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkYXRh
U2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVk
IGxvbmcgbG9uZykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRh
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2
b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJv
ciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtNjUyLDcgKzY1Miw3
IEBAIGJvb2wgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpzaG91bGRDYWNoZVJl
c3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjCiAgICAgcmV0dXJuIFttX3Rhc2sgcmVzb3VyY2U6
JnJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6cmVzcG9uc2VdOwogfQogCi12b2lkIFdlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYgcmVzb3VyY2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBXZWJD
b3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmIHJlc291cmNlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKICAgICBpZiAoIW1fdGFzaykK
QEAgLTkxNSwxMSArOTE1LDExIEBAIC0gKEJPT0wpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3QgUmVzCiAgICAgcmV0dXJu
IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFJhbmdlKS5p
c0VtcHR5KCk7CiB9CiAKLS0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSop
cmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKWRhdGEK
Ky0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2
ZWREYXRhOihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJilkYXRhCiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNv
dXJjZSk7CiAgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2Vs
ZiA9IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKLSAgICAgICAg
YXV0byBuc0RhdGEgPSBkYXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEg
PSBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgc3Ryb25n
U2VsZi5nZXQoKS5jb3VudE9mQnl0ZXNSZWNlaXZlZCArPSBkYXRhLT5zaXplKCk7CiAgICAgICAg
IGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vz
c2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAg
ICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNl
c3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGMzNmUxZjg4
NzY0MzA0NjBjZTc1MGEzYjhjNjU4YzczNGVjYjE1MDguLjM0OTQ0NTkyNTRhYzkzZmMxOWNiMTIx
NTBhNjFiYzJiY2VkMDJkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBD
dXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3Qs
IEN1cmxSZXNwb25zZSYmIHIKIH0KIAogCi12b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2Vp
dmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQg
Q3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybERvd25sb2FkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bERvd25sb2FkLmgKaW5kZXggYTNhYTBjZjVmY2QyOTU1YmI3YjE2YjExYTFhODFjYTc0YWU2MWM4
ZC4uY2RlNDQ0NTc3NWY3NDQyMzMwNTMwYjY1YjEzNTdiYTZiZmQ5YmI4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaApAQCAt
NzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIFJlZjxDdXJsUmVxdWVzdD4gY3JlYXRlQ3VybFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJl
cXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGUg
eyB9CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiwgQ3VybFJl
c3BvbnNlJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJl
cXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGN1cmxEaWRS
ZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29y
a0xvYWRNZXRyaWNzJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3Io
Q3VybFJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiYsIENlcnRpZmljYXRlSW5mbyYmKSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxNdWx0aXBhcnRIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCmluZGV4IGJiZGEzZmJkYTc1ODNkOTkxOTMxZGZl
MTY5ZjdiM2E5MTMzZTZkYTIuLjA5MGQwMzliYTQ1ZGUxMDI4ZWRmNzY4NGM2ZDdkMmYyOTZlM2Ez
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
TXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKQEAgLTExOSwxMiArMTE5LDEyIEBAIEN1cmxN
dWx0aXBhcnRIYW5kbGU6OkN1cmxNdWx0aXBhcnRIYW5kbGUoQ3VybE11bHRpcGFydEhhbmRsZUNs
aWVudCYgY2xpZW50LCBjb25zCiAKIH0KIAotdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybE11bHRpcGFy
dEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpFbmQpCiAgICAgICAgIHJldHVybjsg
Ly8gVGhlIGhhbmRsZXIgaXMgY2xvc2VkIGRvd24gc28gaWdub3JlIGV2ZXJ5dGhpbmcuCiAKLSAg
ICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9i
dWZmZXIuYXBwZW5kKGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci5zaXpl
KCkpOwogCiAgICAgd2hpbGUgKHByb2Nlc3NDb250ZW50KCkpIHsgfQogfQpAQCAtMTM3LDcgKzEz
Nyw3IEBAIHZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUoKQogICAgIGlmICht
X3N0YXRlICE9IFN0YXRlOjpFbmQpIHsKICAgICAgICAgLy8gSXQgc2VlbXMgd2UgYXJlIHN0aWxs
IG5vdCBhdCB0aGUgZW5kIG9mIHRoZSBwcm9jZXNzaW5nLgogICAgICAgICAvLyBQdXNoIG91dCB0
aGUgcmVtYWluaW5nIGRhdGEuCi0gICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11
bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNp
emUoKSkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX2J1ZmZlcikpKTsKICAgICAgICAgbV9zdGF0ZSA9
IFN0YXRlOjpFbmQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAppbmRleCA1YzA4YmNjNWVi
M2U0YmJjYzAyOWI0NzY3ODY4ZjQzZTJmOTVjMzQxLi45YTFhMWJiZDE5MzhhMTRmNjlmY2NlZTNm
MGY4OWI5N2E0YTIxODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKQEAgLTM0LDcgKzM0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50Owog
Y2xhc3MgQ3VybFJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZSB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBDdXJsTXVs
dGlwYXJ0SGFuZGxlKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmLCBjb25zdCBTdHJpbmcmKTsK
ICAgICB+Q3VybE11bHRpcGFydEhhbmRsZSgpIHsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZENvbXBsZXRlKCk7CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaAppbmRleCBmZDEzZmQzODEzMTQzY2Iy
NjU5YjhmZDFkYjI0NDQ3NjVlOThhNTgwLi5jODEzODg2YThkNWM1ZmE2YzEyZDE0MTMzMTkxMDFh
ZjI1MDJhMmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKQEAgLTI4LDEyICsy
OCwxMiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJsUmVzcG9uc2U7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBD
dXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUhlYWRlckZyb21NdWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8U2hhcmVkQnVm
ZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFy
dChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAg
fkN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IGQzNWIwZTgzOTE5
NTFkMzg2MzRlOTkwOTNiNjg2NTYyNGQ5OTc5NTEuLmQ4MmRkM2MxMGFjNjQ3MTM1OTkxZmQ3YWU2
Njk3ZTlkOGUzMTNlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtMzk2LDcgKzM5Niw3IEBAIHNpemVfdCBDdXJs
UmVxdWVzdDo6ZGlkUmVjZWl2ZUhlYWRlcihTdHJpbmcmJiBoZWFkZXIpCiAKIC8vIGNhbGxlZCB3
aXRoIGRhdGEgYWZ0ZXIgYWxsIGhlYWRlcnMgaGF2ZSBiZWVuIHByb2Nlc3NlZCB2aWEgaGVhZGVy
Q2FsbGJhY2sKIAotc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK3NpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChpc0NvbXBsZXRl
ZE9yQ2FuY2VsbGVkKCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNDQ0LDcgKzQ0NCw3IEBAIHZv
aWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBoZWFkZXJzKQogICAgIGludm9rZURpZFJlY2VpdmVSZXNwb25zZShyZXNwb25z
ZSwgQWN0aW9uOjpOb25lKTsKIH0KIAotdm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGFG
cm9tTXVsdGlwYXJ0KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDdXJsUmVxdWVz
dDo6ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoaXNDb21wbGV0ZWRPckNhbmNlbGxlZCgpKQogICAgICAg
ICByZXR1cm47CkBAIC03NzcsNyArNzc3LDcgQEAgY29uc3QgU3RyaW5nJiBDdXJsUmVxdWVzdDo6
Z2V0RG93bmxvYWRlZEZpbGVQYXRoKCkKICAgICByZXR1cm4gbV9kb3dubG9hZEZpbGVQYXRoOwog
fQogCi12b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRv
RG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2Rvd25sb2FkTXV0ZXggfTsK
QEAgLTc5MCw3ICs3OTAsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2Fk
RmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICB9CiAKICAgICBp
ZiAobV9kb3dubG9hZEZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmls
ZUhhbmRsZSkKLSAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVI
YW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsb3Nl
RG93bmxvYWRGaWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmgKaW5kZXggNmJkOGE2YmZiYTM3NTJjZWRkZGJjNTAwOWVhZTgzYzRm
MGVlZDY0MS4uM2M3Y2RkODgzZWI2MmJmZTkyY2YwNDQ1ZWQyOWJkMjZlY2UzZTkyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgK
QEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3VybFJlcXVlc3RD
bGllbnQ7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlOwogCiBjbGFzcyBDdXJsUmVxdWVzdCA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDdXJsUmVxdWVzdD4sIHB1YmxpYyBDdXJsUmVxdWVz
dFNjaGVkdWxlckNsaWVudCwgcHVibGljIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQgewpAQCAt
MTIyLDkgKzEyMiw5IEBAIHByaXZhdGU6CiAgICAgQ1VSTCogc2V0dXBUcmFuc2ZlcigpIG92ZXJy
aWRlOwogICAgIHNpemVfdCB3aWxsU2VuZERhdGEoY2hhciosIHNpemVfdCwgc2l6ZV90KTsKICAg
ICBzaXplX3QgZGlkUmVjZWl2ZUhlYWRlcihTdHJpbmcmJik7Ci0gICAgc2l6ZV90IGRpZFJlY2Vp
dmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0YShS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlSGVhZGVy
RnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENvbXBsZXRlVHJhbnNmZXIoQ1VS
TGNvZGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsVHJhbnNmZXIoKSBvdmVycmlkZTsK
ICAgICB2b2lkIGZpbmFsaXplVHJhbnNmZXIoKTsKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcml2YXRl
OgogICAgIE5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTG9hZE1ldHJpY3MoKTsKIAogICAgIC8v
IERvd25sb2FkCi0gICAgdm9pZCB3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25z
dCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHdyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFi
bGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGNsb3NlRG93bmxv
YWRGaWxlKCk7CiAgICAgdm9pZCBjbGVhbnVwRG93bmxvYWRGaWxlKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50
LmgKaW5kZXggMDhjODZjN2Q0Njg0YmE2Zjc4ZDYxNmI2OGQwNjkwNGMzN2E5NjY3Ny4uMzQ3OTgz
MmY1NzZkNDEyOGFmYTUxYzgxNDI0Y2NmZDc0MWRmNmFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmgKQEAg
LTM0LDcgKzM0LDcgQEAgY2xhc3MgQ3VybFJlcXVlc3Q7CiBjbGFzcyBDdXJsUmVzcG9uc2U7CiBj
bGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybFJl
cXVlc3RDbGllbnQgewogcHVibGljOgpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBs
b25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0Jiwg
Q3VybFJlc3BvbnNlJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVCdWZm
ZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZENvbXBsZXRlKEN1cmxS
ZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3Vy
bERpZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiYsIENlcnRpZmlj
YXRlSW5mbyYmKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAK
aW5kZXggODE4ZDVhOTVlM2UxMjRkYzNhNzJmNzQzZTVjZDQ1M2Q3MTdlMDEwZi4uMzA1ZDRlNWM5
ZmMyNzA3NzU3ODdiMGY5YTkxOTc5YzA4ODg5YThhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDIsMTUgKzE0MiwxNiBAQCB2b2lkIEN1cmxSZXNvdXJjZUhh
bmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0
LCBDdQogICAgIH0pOwogfQogCi12b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJs
RGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQordm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIo
Q3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlmIChjYW5jZWxsZWRPckNsaWVudGxl
c3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9u
KCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGJ1
ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZm
ZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCku
ZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOworICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RG
TW92ZShjb250aWd1b3VzQnVmZmVyKSwgYnVmZmVyLT5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3
b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUu
aAppbmRleCA2ZDU1ODY0NDUyZmQ0NmVlNzgwMGU5MzEyM2IxMjhiZGM2NGNlNDg3Li5kYWYwYTU5
YTRlNTg2ZDcxMTRhYmI0ZTVlZjljNTRmNmE4YmVmYzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGN1cmxE
aWRTZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVu
c2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIGZpbmFsOwogICAgIHZvaWQgY3Vy
bERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSBmaW5hbDsK
LSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVz
dCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxE
aWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSBmaW5hbDsKICAg
ICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYm
LCBDZXJ0aWZpY2F0ZUluZm8mJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQu
aAppbmRleCBiYzRkYWFmYmYyMWExNWMwZTZkZDFhY2Q0NjIyYWZhNTZiN2I4ZDVkLi4xZjRhMTkz
MTMzMTJjNWRkNmE0OGFkNTMzOWRmZDJjM2I1ZGVjMjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ckNsaWVudC5oCkBAIC0zMSwxMiArMzEsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8TGVnYWN5UHJl
dmlld0xvYWRlckNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeVByZXZpZXdM
b2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoKSB7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNw
cAppbmRleCBjNTQ0NTM4NWE3N2FjMTJjMDllZjI0ODY2NDczZDYyY2I2Nzk0NTVhLi40NTM2ODFi
ZGFiMmU0YTA1YTIxZmM2OGE5NDM3MDBlMDZjOTk3YTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0zNTYsNyArMzU2LDcgQEAgU3RyaW5n
IFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQog
CiBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVDb3VudGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFk
ZXIgewogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgKytjb3Vu
dDsgfQotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbCB7ICsrY291bnQ7IH0KKyAgICB2b2lkIHJlYWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpIGZpbmFsIHsgKytjb3VudDsgfQogCiAgICAgdW5zaWduZWQgY291bnQgeyAwIH07CiB9
OwpAQCAtOTc0LDcgKzk3NCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmls
ZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4g
bWVtT2JqOwogfQogCi1zdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50
KFNoYXJlZEJ1ZmZlciogZGF0YSkKK3N0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmls
ZUNvbnRlbnQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBIR0xPQkFMIG1l
bU9iaiA9IEdsb2JhbEFsbG9jKEdQVFIsIGRhdGEtPnNpemUoKSk7CiAgICAgaWYgKCFtZW1PYmop
IApAQCAtOTg2LDE1ICs5ODYsMTUgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VG
aWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IAotICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAgIENvcHlNZW1vcnkoZmlsZUNvbnRlbnRz
LCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAg
ICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAogICAgIEdsb2JhbFVubG9jayhtZW1PYmopOwogCiAgICAg
cmV0dXJuIG1lbU9iajsKIH0KIAotc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250
ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWRCdWZmZXIqIGRhdGEp
CitzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgVVJMJiB1cmws
IFN0cmluZyYgZmlsZU5hbWUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAg
aWYgKGZpbGVOYW1lLmlzRW1wdHkoKSB8fCAhZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0x
MDM4LDggKzEwMzgsOCBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQo
Y29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlZAogICAgICAgICAvLyBXcml0
ZSB0aGUgZGF0YSB0byB0aGlzIHRlbXAgZmlsZS4KICAgICAgICAgRFdPUkQgd3JpdHRlbjsKICAg
ICAgICAgQk9PTCB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBGQUxTRTsKLSAgICAgICAgaWYgKGRhdGEt
PmRhdGEoKSkKLSAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IFdyaXRlRmlsZSh0ZW1w
RmlsZUhhbmRsZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKKyAg
ICAgICAgaWYgKGRhdGEtPnNpemUoKSkKKyAgICAgICAgICAgIHRlbXBXcml0ZVN1Y2NlZWRlZCA9
IFdyaXRlRmlsZSh0ZW1wRmlsZUhhbmRsZSwgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCksICZ3cml0dGVuLCAwKTsKICAgICAgICAgQ2xvc2VIYW5kbGUodGVtcEZp
bGVIYW5kbGUpOwogICAgICAgICBpZiAoIXRlbXBXcml0ZVN1Y2NlZWRlZCkKICAgICAgICAgICAg
IHJldHVybiAwOwpAQCAtMTA3MSw3ICsxMDcxLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUlt
YWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsKQogICAgIGlm
ICghY2FjaGVkSW1hZ2UgfHwgIWNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVsZW1lbnQu
cmVuZGVyZXIoKSkgfHwgIWNhY2hlZEltYWdlLT5pc0xvYWRlZCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9y
UmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgpOworICAgIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGltYWdlQnVmZmVyID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoZWxl
bWVudC5yZW5kZXJlcigpKS0+ZGF0YSgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIgfHwgIWltYWdl
QnVmZmVyLT5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA0MTFlZGJiMzUxN2I4NDhmYWMwNjNkMTllOGNkOTVl
YzAwMzdjZDYxLi44NGZhMjljZTFmMzAwZmUyOTBiMDQxNDY0OGYwZjcyOTBhN2NiZWJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtNjMsNyArNjMsNyBA
QCBib29sIE1vY2tDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSkKICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShrZXlTeXN0ZW0sICJv
cmcud2Via2l0Lm1vY2siKTsKIH0KIAotdm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vz
c2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYg
a2V5cykKK3ZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3Qg
U3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBrZXlzKQog
ewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXNzaW9ucy5hZGQoaWQsIFdURk1vdmUoa2V5cykp
OwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBN
b2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBW
ZWN0b3I8UmVmPFNoYXJlZEIKICAgICAgICAgdmFsdWUuYXBwZW5kKFdURk1vdmUoa2V5KSk7CiB9
CiAKLVZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtleXNG
cm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQorVmVjdG9yPFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJ
RChjb25zdCBTdHJpbmcmIGlkKQogewogICAgIGF1dG8gaXQgPSBtX3Nlc3Npb25zLmZpbmQoaWQp
OwogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25zLmVuZCgpKQpAQCAtODMsNyArODMsNyBAQCBWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJvbVNlc3Np
b25XaXRoSUQoY29uc3QgU3RyaQogICAgIHJldHVybiBXVEZNb3ZlKGl0LT52YWx1ZSk7CiB9CiAK
LWNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4qIE1vY2tDRE1GYWN0b3J5OjprZXlzRm9y
U2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdAorY29uc3QgVmVjdG9yPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4qIE1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldp
dGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdAogewogICAgIGF1dG8gaXQgPSBtX3Nlc3Npb25z
LmZpbmQoaWQpOwogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25zLmVuZCgpKQpAQCAtMjAyLDcgKzIw
Miw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJu
IG1fZmFjdG9yeSAmJiBtX2ZhY3RvcnktPnN1cHBvcnRzU2Vzc2lvbnMoKTsKIH0KIAotYm9vbCBN
b2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgTW9ja0NETTo6c3VwcG9y
dHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewogICAgIGlmICghc3VwcG9ydGVkSW5p
dERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTIxMSwxMiArMjExLDEzIEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVz
cG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewotICAgIGlmICghY2hhcmFjdGVyc0Fy
ZUFsbEFTQ0lJKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKKyAgICBhdXRvIGJ1
ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250aWd1b3VzKCk7CisgICAgaWYgKCFjaGFyYWN0ZXJzQXJl
QWxsQVNDSUkoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhy
ZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKKyAgICBWZWN0b3I8
U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5z
aXplKCkpLnNwbGl0KCcgJyk7CiAKICAgICBpZiAoIXJlc3BvbnNlQXJyYXkuY29udGFpbnMoU3Ry
aW5nKCJ2YWxpZC1yZXNwb25zZSJfcykpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI2
OSw5ICsyNzAsOSBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1
cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdAogICAgIGNhbGxiYWNrKGluaXRp
YWxpemUoKSk7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2Fs
bGJhY2spCiB7Ci0gICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNh
dGUtPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CisgICAgU3RyaW5nVmlldyBjZXJ0aWZp
Y2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2Vy
dGlmaWNhdGUtPnNpemUoKSk7CiAKICAgICBjYWxsYmFjayhlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlkIikgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwog
fQpAQCAtMjk3LDcgKzI5OCw3IEBAIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246Ok1vY2tDRE1JbnN0
YW5jZVNlc3Npb24oV2Vha1B0cjxNb2NrQ0RNSW5zdGFuY2U+JiYgaW5zdGFuCiB7CiB9CiAKLXZv
aWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGlj
ZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1J
bnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBNb2NrQ0RN
RmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBu
dWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewpAQCAtMzIzLDcgKzMyNCw3IEBAIHZvaWQgTW9j
a0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5
cGUsIGNvbnN0IEF0b21TCiAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUobGljZW5z
ZS5kYXRhKCksIGxpY2Vuc2UubGVuZ3RoKCkpLCBzZXNzaW9uSUQsIGZhbHNlLCBTdWNjZXNzVmFs
dWU6OlN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRl
TGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9p
ZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9u
c2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIE1vY2tDRE1GYWN0
b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFuY2UtPmZhY3RvcnkoKSA6IG51bGxw
dHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7CkBAIC0zMzEsNyArMzMyLDcgQEAgdm9pZCBNb2NrQ0RN
SW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBM
aWNlbnNlVHlwZSwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZlY3RvcjxTdHJpbmc+
IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5kYXRhKCksIHJlc3BvbnNlLT5zaXpl
KCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBTdHJp
bmcocmVzcG9uc2UtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSku
c3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rvci5jb250YWlucyhTdHJpbmcoImlu
dmFsaWQtZm9ybWF0Il9zKSkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9w
dCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAppbmRleCBmNWNkYTUwNWNmMmEzM2Mx
MDVmMDI1Yzk3YzkzNTBhOTY4Njk4ZTFlLi5kOTZjMTU2ZWU0ZDI3OTFiOGIwOTk4ZGFmOTQwZWM3
NTM3ODA3YmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0
b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCkBAIC03
Nyw5ICs3Nyw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzU2Vzc2lvbldpdGhJRChjb25zdCBT
dHJpbmcmIGlkKSB7IHJldHVybiBtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKTsgfQogICAgIHZvaWQg
cmVtb3ZlU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSB7IG1fc2Vzc2lvbnMucmVtb3Zl
KGlkKTsgfQotICAgIHZvaWQgYWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlk
LCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYpOwotICAgIGNvbnN0IFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4qIGtleXNGb3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0
OwotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gcmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0
aElEKGNvbnN0IFN0cmluZyYgaWQpOworICAgIHZvaWQgYWRkS2V5c1RvU2Vzc2lvbldpdGhJRChj
b25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmKTsK
KyAgICBjb25zdCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pioga2V5c0ZvclNl
c3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3Q7CisgICAgVmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4gcmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0
cmluZyYgaWQpOwogCiBwcml2YXRlOgogICAgIE1vY2tDRE1GYWN0b3J5KCk7CkBAIC05Niw3ICs5
Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhbkNyZWF0ZUluc3RhbmNlcyB7IHRydWUgfTsK
ICAgICBib29sIG1fc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMgeyB0cnVlIH07CiAgICAgYm9v
bCBtX3N1cHBvcnRzU2Vzc2lvbnMgeyB0cnVlIH07Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4+IG1fc2Vzc2lvbnM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBtX3Nlc3Npb25zOwogfTsKIAogY2xh
c3MgTW9ja0NETSA6IHB1YmxpYyBDRE1Qcml2YXRlIHsKQEAgLTEyMSw4ICsxMjEsOCBAQCBwcml2
YXRlOgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKICAgICBib29sIHN1cHBv
cnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nl
c3Npb25zKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRp
emVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKICAgICBXZWFrUHRyPE1v
Y2tDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpNb2NrOyB9CiAgICAgdm9pZCBpbml0
aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3Vj
Y2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3ND
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3Ry
aW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbDsK
ICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CkBA
IC0xNTQsOCArMTU0LDggQEAgcHVibGljOgogICAgIE1vY2tDRE1JbnN0YW5jZVNlc3Npb24oV2Vh
a1B0cjxNb2NrQ0RNSW5zdGFuY2U+JiYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgcmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZv
aWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVz
dExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBm
aW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNs
b3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsK
ICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBS
ZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAppbmRleCBmYzEyN2I3YjY3YmVhNzM0NDYzY2QyZDVi
MDc1NmI1OWJlYmE1OGFlLi4wNTlmM2EzODZiNmNmNWZhNzliM2MxODk3MDE1MzEzZjdjZGI0ZWYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcApAQCAt
MTEwLDcgKzExMCw3IEBAIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OmZpbmlzaGVkQWRkaW5nRGF0
YSgpCiAgICAgbWF5YmVEZXRlcm1pbmVTdGF0dXMoRGVjaXNpb25Qb2ludDo6QWZ0ZXJGaW5pc2hl
ZEFkZGluZ0RhdGEpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBNb2NrQ29udGVudEZpbHRlcjo6
cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBNb2Nr
Q29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZGlk
QmxvY2tEYXRhKCkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3JlcGxhY2Vt
ZW50RGF0YS5kYXRhKCksIG1fcmVwbGFjZW1lbnREYXRhLnNpemUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKaW5kZXggNDExYTMwMDk0N2I1MzllMjZhYTZj
NjRhMDA5MzI5MmU5ZmZiZTZiOS4uNjM1YWM4NGJlNzkzODQ3YWE1NzIxM2QwMWZmYzFlNzRmNzZi
NzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaApAQCAt
NDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0Rh
dGEoKSBvdmVycmlkZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1l
bnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQog
ICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92
ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Njcmlw
dEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKaW5k
ZXggNmQ0OGJkMDJkMWM5MWY3ZWVkODY0YTE2Y2Q3NTZiYjA3N2Q2NTUyYS4uNWY4NTQ1ZWJhNWIw
ZTdiOGJiYWJhNWM2OTNjMmE0MzQxODhiMmJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2Ny
aXB0QnVmZmVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTY3Jp
cHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBhdXRv
IHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4
LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6
OmVtcHR5KCkKQEAgLTQ2LDE0ICs0NiwxMyBAQCBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjpl
bXB0eSgpCiAgICAgcmV0dXJuIFNjcmlwdEJ1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkg
fTsKIH0KIAotCiBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOwotICAgIG1fYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2Vn
bWVudCkgeworICAgIG1fYnVmZmVyLmdldCgpLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2Vn
bWVudCkgewogICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KHNlZ21lbnQu
ZGF0YSgpLCBzZWdtZW50LnNpemUoKSkpOwogICAgIH0pOwogICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7CkBAIC02MSwxNSArNjAsMTMgQEAgU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJp
bmcoKSBjb25zdAogCiBib29sIFNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVk
U2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLT5oYXNP
bmVTZWdtZW50KCkgJiYgbV9idWZmZXItPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVk
RmlsZURhdGEoKTsKKyAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXIuZ2V0KCktPmhhc09u
ZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci5nZXQoKS0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNN
YXBwZWRGaWxlRGF0YSgpOwogfQogCiB2b2lkIFNjcmlwdEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwot
ICAgIG1fYnVmZmVyLT5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1f
YnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImIGEsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgYikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCmluZGV4IGIzOWQ5YzEzMDMzMDMxMWMwNGQ3
ZjM3OTZiNzFhMDQzMTM0YzY2NDYuLmZkMmMxYWUyZjYzYjYwZDc0YzMwZDI0MmE5ODlhMGJmZDkx
ZGU0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaApAQCAtMzgsNyArMzgs
NyBAQCBjbGFzcyBTY3JpcHRCdWZmZXIgewogcHVibGljOgogICAgIFNjcmlwdEJ1ZmZlcigpID0g
ZGVmYXVsdDsKIAotICAgIFNjcmlwdEJ1ZmZlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKKyAgICBTY3JpcHRCdWZmZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKICAgICB7CiAgICAgfQpA
QCAtNDgsMTcgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBT
Y3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25z
dDsKLSAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdl
dCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KIAotICAgIFNjcmlwdEJ1ZmZlciBpc29s
YXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8
U2hhcmVkQnVmZmVyPihtX2J1ZmZlci0+Y29weSgpKSA6IG51bGxwdHIpOyB9CisgICAgU2NyaXB0
QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZl
ciA/IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5KCkpIDogbnVs
bHB0cik7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFt
X2J1ZmZlcjsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlciB8
fCAhbV9idWZmZXItPnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fYnVmZmVyLmlzRW1wdHkoKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWlu
c1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7CiAgICAgdm9pZCBhcHBlbmQoY29uc3Qg
U3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7
IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCiB9
OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVm
ZmVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVz
dC5jcHAKaW5kZXggNzc0MTZlYzA3ZDdiNjhiMTI4ZTI5NjFlZGM1ZDY0MGQwNGQ0YmQ0NS4uNDA2
NmZiMzUyZWI1YjA4N2Q1ZDhkNDdkODAyZmQyYzBhNmE4MGZmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtNDQsNiArNDQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRM
b2FkUmVxdWVzdChVUkwmJiB1cmwsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9w
YXF1ZVNvdXJjZSkKICAgICA6IG1fdXJsKFdURk1vdmUodXJsKSkKICAgICAsIG1fbG9hZGVkRnJv
bU9wYXF1ZVNvdXJjZShsb2FkZWRGcm9tT3BhcXVlU291cmNlKQorICAgICwgbV9kYXRhKG1ha2VV
bmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKIH0KIApAQCAtNzUsMTIgKzc2LDIx
IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtlckdsb2JhbFNjb3BlJiB3
b3JrZXJHbG9iYWxTY29wZSkKICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KHdvcmtlckdsb2JhbFNjb3BlLCBXVEZNb3ZlKHJlcXVlc3QpLCAqdGhp
cywgb3B0aW9ucyk7CiB9CiAKK2Jvb2wgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1BlbmRpbmco
KSBjb25zdAoreworICAgIHJldHVybiAhbV9pc0xvYWRpbmcgJiYgIW1fZXJyb3JPY2N1cnJlZCAm
JiBtX2RhdGEtPmlzTnVsbCgpOworfQorCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5z
dXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsK
LSAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEpOwotICAgICAgICBp
ZiAobV9kYXRhKSB7Ci0gICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmll
cigpLnRvU3RyaW5nKCkpOworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250aWd1b3Vz
RGF0YTsKKyAgICAgICAgaWYgKG1fZGF0YS0+Z2V0KCkpCisgICAgICAgICAgICBjb250aWd1b3Vz
RGF0YSA9IG1fZGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBjb252ZXJ0
V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgaWYgKGNvbnRp
Z3VvdXNEYXRhKSB7CisgICAgICAgICAgICBtX2RhdGEtPmFwcGVuZCgqY29udGlndW91c0RhdGEp
OworICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YSgqY29udGlndW91c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigp
LnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEp
CiAgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKICAgICAgICAgfQpAQCAt
MTE3LDkgKzEyNyw2IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICBpZiAobV9lcnJvck9j
Y3VycmVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fZGF0YSkKLSAgICAgICAgbV9k
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAgIG1fZGF0YS0+YXBwZW5kKGRhdGEs
IGRhdGFMZW5ndGgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1ZTc4MGJkZWViYzVjNmUwNGExZTg2
M2M3Li4xYjNkNzg3MGYxMjhiZmU1MzhlZTZjOTg1OWNkYWFlODFlNDVlMmE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKQEAgLTMwLDEzICsz
MCwxNCBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgogI2luY2x1ZGUgIlRo
cmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWls
ZGVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CiAKIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZv
cm1EYXRhOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgY29uc3Qg
VVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3VybDsgfQotICAgIGJvb2wgaXNQZW5k
aW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIW1faXNMb2FkaW5nICYmICFtX2Vycm9yT2NjdXJy
ZWQgJiYgIW1fZGF0YTsgfQorICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgZmluYWw7CiAgICAg
Ym9vbCBpc0xvYWRpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzTG9hZGluZzsgfQogICAg
IGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZXJyb3JPY2N1cnJl
ZDsgfQogCkBAIC03Niw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgRm9udExvYWRSZXF1ZXN0Q2xp
ZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxwdHIgfTsKIAogICAgIFdlYWtQdHI8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fZGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9kYXRhOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCmluZGV4IGViMjY2YjZjMDdl
NjczZDkxNjZjYWNlNmIzMzkxOWQ4MGViYmYzMWMuLjA5NzU0M2UxYjNiMzBmZjMxNDdkOTIzMmE1
OGNlNGE5ZTYyZjNlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCkBAIC00Miw3ICs0Miw3IEBA
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBu
YW1lc3BhY2UgU2VydmljZVdvcmtlckZldGNoIHsKIGNsYXNzIENsaWVudCA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxDbGllbnQsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsK
QEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZWRpcmVjdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVm
PEZvcm1EYXRhPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoKCkgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3Jh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0
b3JhZ2UuY3BwCmluZGV4IDg5YTg3NWY4YWZjMGQ2MjM1NWFjNjIyOWE2NGMxY2E0M2QxODU2NTIu
LjlhOGZiMzVjYTUzNjEwNWJiNmQ2ZmM0NmVlMTIyNDU5MzNmNzBiZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFn
ZS5jcHAKQEAgLTEyNyw3ICsxMjcsOCBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpy
ZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpcwogICAgIH0K
IAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGRpc2FibGUgZmlsZSBtYXBwaW5nIGluIG1v
cmUgY2FzZXMgdG8gYXZvaWQgaGF2aW5nIHRvbyBtYW55IGZpbGUgZGVzY3JpcHRvcnMgb3Blbj8K
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0
UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVN
YXBwaW5nKCpmaWxlU2l6ZSkgPyBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMg
OiBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRl
LCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VG
aWxlTWFwcGluZzo6WWVzIDogU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOwor
ICAgIHJldHVybiBidWZmZXI7CiB9CiAKIHZvaWQgU1dTY3JpcHRTdG9yYWdlOjpjbGVhcihjb25z
dCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBhYjk5NjAzZWE1M2UyNDZiNjMzMjFmYmQ0
MTQxY2M1ZTI5Y2U5NmI0Li5mY2NjMmE5ZWQyMGQ3NDdjMDljNjE2YjQ5OGU1MzBlZjc4YThlNTY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTExOCw2ICsxMTgsNyBA
QCBYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkKICAgICAsIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQoZmFsc2UpCiAgICAgLCBtX3Jl
YWR5U3RhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFVOU0VOVCkpCiAgICAgLCBtX3Jlc3BvbnNl
VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZykpCisg
ICAgLCBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcihtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1
aWxkZXI+KCkpCiAgICAgLCBtX3Byb2dyZXNzRXZlbnRUaHJvdHRsZSgqdGhpcykKICAgICAsIG1f
dGltZW91dFRpbWVyKCp0aGlzLCAmWE1MSHR0cFJlcXVlc3Q6OnRpbWVvdXRUaW1lckZpcmVkKQog
ewpAQCAtMjA3LDggKzIwOCw4IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVz
cG9uc2VCbG9iKCkKIAogICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJlY2VpdmVkIHRoZSBkYXRhIGZy
b20gTmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBpdCBiYWNrLiBUaGlzIGlzIGluZWZm
aWNpZW50LgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgIGlmIChtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlcikKLSAgICAgICAgZGF0YSA9IHN0ZDo6ZXhjaGFuZ2UobV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXIsIG51bGxwdHIpLT5leHRyYWN0RGF0YSgpOworICAgIGlmICghbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXItPmlzTnVsbCgpKQorICAgICAgICBkYXRhID0gbV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXItPnRha2UoKS0+ZXh0cmFjdERhdGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRl
bnRUeXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmlu
YWxNSU1FVHlwZTo6WWVzKSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94
bWwgd2hpY2ggbWF5IGJlIGluY29ycmVjdC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBl
KTsKIH0KQEAgLTIxOCw4ICsyMTksNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1
ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKCkKICAgICBBU1NFUlQocmVzcG9uc2VUeXBl
KCkgPT0gUmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0
RXJyb3JzKCkpOwogCi0gICAgYXV0byByZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA/
IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlC
dWZmZXI6OmNyZWF0ZShudWxscHRyLCAwKTsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9
IG51bGxwdHI7CisgICAgYXV0byByZXN1bHQgPSAhbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmlz
TnVsbCgpID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnRha2UoKS0+dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSA6IEFycmF5QnVmZmVyOjpjcmVhdGUobnVsbHB0ciwgMCk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIApAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNsZWFy
UmVzcG9uc2VCdWZmZXJzKCkKICAgICBtX3Jlc3BvbnNlRW5jb2RpbmcgPSBTdHJpbmcoKTsKICAg
ICBtX2NyZWF0ZWREb2N1bWVudCA9IGZhbHNlOwogICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IG51
bGxwdHI7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOworICAgIG1fYmlu
YXJ5UmVzcG9uc2VCdWlsZGVyLT5yZXNldCgpOwogICAgIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQg
PSBmYWxzZTsKIH0KIApAQCAtMTA2NSw4ICsxMDY1LDYgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKICAgICAgICAgbV9y
ZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOwogICAg
IGVsc2UgewogICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAgIGlmICghbV9i
aW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyLT5hcHBlbmQoZGF0YSwgbGVuKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmgKaW5kZXggNzI4OTRhZjZjYzQ3ZGJhZTVlNzVjM2E4MDc5MDllZjI4NGY2ZDU5Ny4uMTYy
Y2E5NWFlYjc1NDQ4OWJkNmNkOGNkYzUwODYyYzg0Nzc3YmFiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRl
IDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgIlhNTEh0
dHBSZXF1ZXN0RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFByb2dyZXNz
RXZlbnRUaHJvdHRsZS5oIgogI2luY2x1ZGUgPHZhcmlhbnQ+CkBAIC00NSw3ICs0Niw3IEBAIGNs
YXNzIEJsb2I7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgU2Vj
dXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWls
ZGVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7
CiBjbGFzcyBVUkxTZWFyY2hQYXJhbXM7CkBAIC0yMzcsNyArMjM4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIFJlZlB0cjxEb2N1bWVudD4gbV9yZXNwb25zZURvY3VtZW50OwogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXI7CisgICAgVW5pcXVlUmVmPFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOwogCiAgICAgU3RyaW5nQnVp
bGRlciBtX3Jlc3BvbnNlQnVpbGRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCmluZGV4IDU3MzA2N2Uz
ZGQwNTBmZWI3YzU3OWQwMDEwMmVlOWY2MDQ1YjUzMTMuLjMxYzJkNzZmMmVlMWI5ZDI0OWIwMDFi
N2VmZjg5MmVjMmE3NDU2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAg
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6flJlbW90ZUNETUluc3RhbmNlUHJveHkoKQogICAgIG1f
aW5zdGFuY2UtPmNsZWFyQ2xpZW50KCk7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eTo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIHR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2b2lkIFJlbW90ZUNETUluc3RhbmNl
UHJveHk6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5n
JiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBp
ZiAoIW1fY2RtKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaAppbmRleCA4ZTczZDNkOWE2
NGI5OGJmYzAwOTM2Y2Q0N2M0YzI1YTkyNzlmMmM4Li4wMmM1Y2QzN2FlNTQ4MDJmNmQwYzhkY2Nj
YjBiYTgwY2YzMzg4YzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0
ZToKICAgICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYs
IFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4mJiwgVW5pcXVlUmVmPFJlbW90ZUNETUluc3RhbmNl
Q29uZmlndXJhdGlvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyKTsKIAogICAgIC8v
IENETUluc3RhbmNlQ2xpZW50Ci0gICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0
YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsOworICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25z
dCBTdHJpbmcmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7
CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5LmNwcAppbmRleCBlNTc2NmMyMzM0Y2ZkMzg5MzEwY2Q0YjIxNzIzY2FiYTM3
NDJmYzdjLi5kZTgyNzNiOWNmNTAwYTRkNjZhYTE0NGVkZTAyMDFlZWYxZWQ4NjJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwg
QXRvbVN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zZXNzaW9uLT5yZXF1
ZXN0TGljZW5zZSh0eXBlLCBpbml0RGF0YVR5cGUsIGluaXREYXRhLmJ1ZmZlcigpLnJlbGVhc2VO
b25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKFJlZjxTaGFyZWRC
dWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRp
dmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVk
KSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRh
VHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24gPSBX
VEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwg
Q0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAg
ICAgICAgY29tcGxldGlvbihXVEZNb3ZlKG1lc3NhZ2UpLCBzZXNzaW9uSWQsIG5lZWRzSW5kaXZp
ZHVhbGl6YXRpb24sIHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2NlZWRlZCk7
CiAgICAgfSk7CiB9CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eTo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVMK
IAogdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVtb3ZlU2Vzc2lvbkRhdGEo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlbW92ZVNlc3Npb25E
YXRhQ2FsbGJhY2smJiBjb21wbGV0aW9uKQogewotICAgIG1fc2Vzc2lvbi0+cmVtb3ZlU2Vzc2lv
bkRhdGEoc2Vzc2lvbklkLCB0eXBlLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbild
IChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzLCBzdGQ6
Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEsIENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgbV9z
ZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9uID0g
V1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9y
JiYga2V5U3RhdHVzZXMsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVl
IHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRC
dWZmZXJDb3B5PiBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2U7CiAgICAgICAgIGlmIChleHBp
cmVkU2Vzc2lvbnNEYXRhKQogICAgICAgICAgICAgZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNl
ID0gSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoKmV4cGlyZWRTZXNzaW9uc0RhdGEpKTsK
QEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1
cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dQogICAgIGdwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb246OlVwZGF0ZUtleVN0YXR1c2VzKFdURk1vdmUoa2V5U3RhdHVzZXMpKSwg
bV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6
c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNz
YWdlKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RN
TWVzc2FnZVR5cGUgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkK
IHsKICAgICBpZiAoIW1fY2RtKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eS5oCmluZGV4IDhhNjFmOWQ1ZmFiYzg0ODZhN2EwZTg2MGY0YzYzMTJjMGI0NDU1MTQuLmZl
NzMwOTcxMzFlMGJiMjBhNTAwMWUxNTAxNjAyZDY1MTg2YjMwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDRE1JbnN0
YW5jZVNlc3Npb25DbGllbnQKICAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1Zl
Y3RvciYmKSBmaW5hbDsKLSAgICB2b2lkIHNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VU
eXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOworICAgIHZv
aWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgc2Vzc2lvbklk
Q2hhbmdlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNw
bGF5SUQoKSBmaW5hbCB7IHJldHVybiBtX2Rpc3BsYXlJRDsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcAppbmRleCA5YWIzNTc1ZjRj
M2I1NTk1NTViOWI4N2IyMzM3MWIxYjFhNjZkYzE3Li5mN2NiNmE2M2ViOTMzYWJkNGQ0NTNhMjJh
YjI5NGYxMzAzMjMyYjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1Qcm94eS5jcHAKQEAgLTYzLDEyICs2MywxMiBAQCBSZW1vdGVDRE1Qcm94eTo6
UmVtb3RlQ0RNUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwg
c3RkOjp1bgogCiBSZW1vdGVDRE1Qcm94eTo6flJlbW90ZUNETVByb3h5KCkgPSBkZWZhdWx0Owog
Ci1ib29sIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IHR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK2Jvb2wgUmVtb3RlQ0RNUHJveHk6OnN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5zdXBwb3J0c0luaXRE
YXRhKHR5cGUsIGRhdGEpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBSZW1vdGVDRE1Qcm94
eTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQorUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQogewogICAgIHJldHVybiBt
X3ByaXZhdGUtPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaAppbmRleCA2OTI0ZTc0ZTNmNTAx
MWJlMjE1YmU0YmQ5NmIyMzQ4MjY0NzBmNDIzLi4zYjY2Yzc3NTc4NzA2OWU5NzZlZTA2NGY5NmZm
MDdjMGY3MTJhOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNUHJveHkuaApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgOiB1aW50OF90
OwogZW51bSBjbGFzcyBDRE1TZXNzaW9uVHlwZSA6IHVpbnQ4X3Q7CiBzdHJ1Y3QgQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbjsKQEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogCiAgICAgUmVtb3Rl
Q0RNRmFjdG9yeVByb3h5KiBmYWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9mYWN0b3J5LmdldCgp
OyB9CiAKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiByZXNwb25z
ZSk7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1Qcm94eS5oCmluZGV4IGUyY2QwNWQ3Y2M3NGYyMGVjNjlmYWRmZTNlZTA4NTc1OTJhZDg3OWIu
LmRlOGY2ZGY1NWE2ZTFmYThiZTk2NmY5NDFlMDdmZTJmNWM1MDIxYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCkBA
IC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKaW5kZXgg
ZjE0YzYyN2Y2NTkzZTFhODc4ZDBmNDU5OTJiM2M0MWIyMjJjN2YwMC4uMTU0NmJkZmRmZGNmMDkx
MDg3ODk0NGYzNDA3OTY3YTdhYjM4YmY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaApAQCAt
MzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGVnYWN5Q0RNOwogY2xh
c3MgTGVnYWN5Q0RNU2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBJUEMgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCmluZGV4IGM0
NWU1MjU1ZDY3YjUyYzdhZTEwNDQ5OTg4Y2UwMTkwYzdmZmI1MzguLjYxN2Y0NzY4OTU2NDJkZWMy
MzI1NGI1NDBlZTgxOTExYWM0YTJkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKQEAgLTk2LDcgKzk2LDcgQEAg
dm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhU2VudCh1aW50NjRfdCBieXRlc1NlbnQsIHVp
bnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2UKICAgICAgICAgbV9jbGllbnQtPmRhdGFTZW50KCp0aGlz
LCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFS
ZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUmVt
b3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGRhdGEpCiB7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGF0YVJl
Y2VpdmVkKCp0aGlzLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCmluZGV4IGQxM2QyNWY2NWYwMjI0
YTZjNzY3ZjY5YTRkNDE5Y2QwNTNiYjc5NWQuLjViN2E3ZTJhNzQyNDQzMmQ4NmNiMjhhMWJlNzE3
MThhMTY3Mzc1ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2UuaApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJik7CiAgICAgdm9pZCByZWRpcmVj
dFJlY2VpdmVkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJik+JiYpOwogICAgIHZvaWQgZGF0YVNlbnQodWludDY0X3QsIHVpbnQ2NF90KTsKLSAg
ICB2b2lkIGRhdGFSZWNlaXZlZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2
b2lkIGRhdGFSZWNlaXZlZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7
CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRN
ZXRyaWNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1Jl
bW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0YTIwMjdlNzRjYWE3NjcyZTUy
ZGEwYWY4MzQyMDcyLi5lODNmOTE0M2QyMGE3MmUyYmU0ZmZjYmZlZDEzYjBiYjRkZDMxZTA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5jcHAKQEAgLTEwNyw3ICsxMDcsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3Jk
ZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVt
bwogdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBtX3dyaXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7
Ci0gICAgICAgIGF1dG8qIHBvaW50ZXIgPSBkYXRhID8gZGF0YS0+ZGF0YSgpIDogbnVsbHB0cjsK
KyAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+KCk7CisgICAgICAgIGF1dG8qIHBvaW50ZXIgPSBi
dWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAw
IH0sIHRpbWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKaW5kZXggNTJjYzVkYTEy
MWEyZmI1OWQ4Y2YwNTkzYjY4NTA5ZmQ2NTVjMGNkYy4uNzFmZDAyMjI5YmJiMWM1NzMyNmZkZmNm
ZTI2YzExZjc2MWFiY2Y3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsgfQogICAg
IHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkgb3ZlcnJpZGUgeyB9OworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
IG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6
TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmFpbExvYWRp
bmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlci5jcHAKaW5kZXggM2YzOWViMzJmMWFhODA3Njc4NWRhNzllZTExZGFkOGYwYzMyNmI3
OS4uZDg5MjBlOTg3NjRmZDliNjRiOWNkZGM2MGExZDg0ZDYxOWIyZDQwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJikKK3ZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNl
aXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKIHsKICAgICBD
T1JTX0NIRUNLRVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
ci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXIuaAppbmRleCBiYmIxNDYyYTMxNjFlMmZjZTllYTU3ODQ0YjE5YjkzZTYxOWM4MWIwLi5l
MTFiZjU2MzE5MDdhZTQ3MzM2ZWY4NWE1ZDIyZTg4MzU3NDY1MWIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYs
IE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5h
bDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
IGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1Nl
bnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3
YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suaAppbmRleCBkNjAxOGY2MTM4M2FlM2E1MWU5ZDQ3MjJjZjZhNjBlMmQ4Yjg3
YTdkLi5lMDQ5ZTViMTJkZGU1ZmU1MWI0Njk1NTI4OWE3YTdmNjk5ODJhZmNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKQEAgLTQzLDcgKzQz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7
CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRp
b25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2
NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3YXNC
bG9ja2VkKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
LmNwcAppbmRleCBiYWMwMjJhYjQ1NDMwZjY1MWIxODlhYzAxMjA3YTA2MDYwOGMxNjcxLi43OTc1
ZDQxYmFkODkxNWZlZWRiZGFiMTU1NGU4MWUxZGIyMDMwZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQg
TmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UsIE5lZ290aWF0CiAgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZVJlc3BvbnNl
KFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZv
aWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB0aGUgZW5j
b2RlZCBkYXRhIGxlbmd0aCwgbm90IHRoZSBkZWNvZGVkIGRhdGEgbGVuZ3RoLgogICAgIGF1dG8g
c2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5oCmluZGV4IGMzNzczYzk4Nzg1NTNjZTUzNGQwNTRhYmZmZGRlYmIyOWVlMDg0ZDIu
LmVlNWViMDA2YWEzNzliNzhmY2JjMGJkMTc0ZTMyYmQ2MzlmOTVlNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5n
ZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9u
c2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZv
aWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2Vu
ZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3Rl
ZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKaW5kZXggMGE1ZjY2
YmQ5NjdlYzlmZGY2NjRlNTJlNWFmMzk0ZTQ4ZWNlMWY3Yi4uMzQ4Y2ZmYjllOGUyNWVlODNiYmIz
OWEwMmNkM2NmNmQyODU0ZDM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRDbGllbnQuaApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBOZXR3b3JrTG9hZE1l
dHJpY3M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogZW51bSBjbGFzcyBQb2xpY3lBY3Rpb24gOiB1aW50OF90OwogfQogCkBAIC01MSw3ICs1MSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBs
b25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgeyB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IGU1MGNmNGFiYmU1NjRlNGNhM2ZiNzI2Y2FhOWQ1NjljNTRiMDlkNzIu
LjBlNWViNWFkYzAxMmYxZjJlYTc2NmZjYzFhNDU1MzlmZDVkODljMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTg3LDE0ICs4NywxNCBAQCBzdHJ1Y3QgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJv
bm91c0xvYWREYXRhIHsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogfTsKIAotc3RhdGljIHZv
aWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpT
eW5jaHJvbm91c0xvYWREYXRhJiBkYXRhLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQorc3RhdGljIHZvaWQgc2VuZFJlcGx5VG9T
eW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91c0xvYWRE
YXRhJiBkYXRhLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBBU1NFUlQoZGF0YS5kZWxheWVkUmVw
bHkpOwogICAgIEFTU0VSVCghZGF0YS5yZXNwb25zZS5pc051bGwoKSB8fCAhZGF0YS5lcnJvci5p
c051bGwoKSk7CiAKICAgICBWZWN0b3I8dWludDhfdD4gcmVzcG9uc2VCdWZmZXI7CiAgICAgaWYg
KGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAgICAgICAgcmVzcG9uc2VCdWZmZXIuYXBwZW5k
KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIHJlc3BvbnNlQnVmZmVy
LmFwcGVuZChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
OwogCiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzKEJv
eDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0cmljcykpOwogCkBAIC0xMDUsOSArMTA1
LDExIEBAIHN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkCiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6
OkRlbGF5ZWRSZXBseSYmIHN5bmNocm9ub3VzUmVwbHkpCiAgICAgOiBtX3BhcmFtZXRlcnMgeyBX
VEZNb3ZlKHBhcmFtZXRlcnMpIH0KICAgICAsIG1fY29ubmVjdGlvbiB7IGNvbm5lY3Rpb24gfQor
ICAgICwgbV9idWZmZXJlZERhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+
KCkgfQogICAgICwgbV9maWxlUmVmZXJlbmNlcyhjb25uZWN0aW9uLnJlc29sdmVCbG9iUmVmZXJl
bmNlcyhtX3BhcmFtZXRlcnMpKQogICAgICwgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50
aWFscyB7IG1fcGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRl
bnRpYWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzIH0KICAgICAsIG1fYnVmZmVy
aW5nVGltZXIgeyAqdGhpcywgJk5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJG
aXJlZCB9CisgICAgLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlIHsgbWFrZVVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPigpIH0KICAgICAsIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xv
YWRNZXRyaWNzKG1fY29ubmVjdGlvbi0+Y2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5h
YmxlZCgpKQogICAgICwgbV9yZXNvdXJjZUxvYWRJRCB7IE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpIH0KIHsKQEAgLTMwNiwxMCArMzA4LDEwIEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIEZpcnN0TG9hCiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCiAgICAg
ICAgIGlmIChpc1N5bmNocm9ub3VzKCkgfHwgbV9wYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdU
aW1lID4gMF9zKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAKICAgICAgICAg
aWYgKGNhblVzZUNhY2hlKHJlcXVlc3QpKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JD
YWNoZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLT5lbXB0eSgpOwogICAgIH0KIAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBw
YXJhbWV0ZXJzID0gbV9wYXJhbWV0ZXJzOwpAQCAtNzMwLDIwICs3MzIsMjAgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYg
cmVjZWl2ZWRSZXNwb24KICAgICAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKG1pbWVUeXBlLCAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7CiAgICAgfTsKIAotICAg
IGlmICghbV9idWZmZXJlZERhdGEKKyAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzTnVsbCgpCiAg
ICAgICAgICYmIG1fcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgPiBzdGF0aWNfY2Fz
dDxsb25nIGxvbmc+KDEgKiBNQikKICAgICAgICAgJiYgaXNGZXRjaE9yWEhSKHJlc291cmNlTG9h
ZEluZm8pCiAgICAgICAgICYmIGlzTWVkaWFNSU1FVHlwZShtX3Jlc3BvbnNlLm1pbWVUeXBlKCkp
KSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICAgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgICAgIG1fcGFyYW1ldGVycy5tYXhp
bXVtQnVmZmVyaW5nVGltZSA9IFdlYkxvYWRlclN0cmF0ZWd5OjptZWRpYU1heGltdW1CdWZmZXJp
bmdUaW1lOwogICAgIH0KIAogICAgIC8vIEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGRp
ZFJlY2VpdmVSZXNwb25zZUFzeW5jIGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBidWZm
ZXJpbmcgd291bGQgcmVxdWlyZSBzcGVjaWFsIGhhbmRsaW5nLgogICAgIGlmICghaXNTeW5jaHJv
bm91cygpICYmIG1fcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERh
dGEgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS0+cmVzZXQoKTsKIAogICAgIGlm
IChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5yZXNldCgpOwog
CiAgICAgaWYgKG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pIHsKICAgICAgICAgYm9vbCB2YWxp
ZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8g
MzA0IE5vdCBNb2RpZmllZApAQCAtODU4LDcgKzg2MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzZW5kRGlkUmVjZWl2ZVJlc3BvbnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dzaW5nQ29u
dGV4CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpCiB7CiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpCiAgICAgICAgIExPQURF
Ul9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZUJ1ZmZlcjogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAo
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aD0lZCkiLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KTsKQEAgLTg2NiwyMCArODY4LDIwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKICAgICBB
U1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwogCi0gICAgaWYgKG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmlzTnVsbCgp
KSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWlu
ZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBj
b25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkg
LyA4OwogICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVy
LT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKICAgICAgICAgICAgIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUtPnJlc2V0KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3Jp
Z2luUHJlZmV0Y2goKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBBdCBsZWFzdCBv
biBPUyBYIFlvc2VtaXRlIHdlIGFsd2F5cyBnZXQgLTEgZnJvbSB0aGUgcmVzb3VyY2UgaGFuZGxl
LgogICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwog
Ci0gICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNO
dWxsKCkpIHsKICAgICAgICAgbV9idWZmZXJlZERhdGEtPmFwcGVuZChidWZmZXIuZ2V0KCkpOwog
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVu
Z3RoOwogICAgICAgICBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKQEAgLTkwOSwxMSAr
OTExLDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAjZW5kaWYKIAogICAgIGlmIChpc1N5
bmNocm9ub3VzKCkpCi0gICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5
bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJp
Y3MpOworICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91
c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS0+Z2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmlj
cyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJl
ZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1fYnVmZmVyZWREYXRhLT5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBQYXNzIGEgcmVhbCB2YWx1ZSBvciByZW1vdmUg
dGhlIGVuY29kZWQgZGF0YSBzaXplIGZlYXR1cmUuCi0gICAgICAgICAgICBzZW5kQnVmZmVyKCpt
X2J1ZmZlcmVkRGF0YSwgLTEpOworICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERh
dGEtPmdldCgpLCAtMSk7CiAgICAgICAgIH0KICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVz
b3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsK
ICAgICB9CkBAIC0xMjU2LDE5ICsxMjU4LDE5IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiB7Ci0gICAgQVNTRVJUKG1fYnVmZmVyZWREYXRh
KTsKKyAgICBBU1NFUlQoIW1fYnVmZmVyZWREYXRhLT5pc051bGwoKSk7CiAgICAgQVNTRVJUKG1f
bmV0d29ya0xvYWQpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRS
ZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRh
TGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2Vp
dmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLT5nZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWRE
YXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisgICAgbV9idWZmZXJlZERhdGEtPmVtcHR5KCk7CiAgICAgbV9idWZmZXJlZERhdGFFbmNv
ZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5k
QnVmZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCit2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWlz
U3luY2hyb25vdXMoKSk7CiAKQEAgLTEyODEsNyArMTI4Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgICAgIExPQURFUl9SRUxFQVNF
X0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1
c2UgcmVxdWVzdCBpcyBub3QgZWxpZ2libGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBpZiAoIW1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsKKyAgICBpZiAobV9idWZmZXJlZERhdGFG
b3JDYWNoZS0+aXNOdWxsKCkpIHsKICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9y
ZUFzQ2FjaGVFbnRyeTogTm90IHN0b3JpbmcgY2FjaGUgZW50cnkgYmVjYXVzZSBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlIGlzIG51bGwiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyODks
MTIgKzEyOTEsMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNo
ZUVudHJ5KCkKICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpIHsKICAgICAgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKCkpKSB7CiAgICAgICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRy
eVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIHByZWZldGNoIGNhY2hlIik7Ci0g
ICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hlKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+
Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZShtX3Jlc3BvbnNlKSwgV1RGTW92ZShtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBzZXNzaW9uLT5wcmVmZXRjaENhY2hl
KCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgV1RGTW92ZSht
X3Jlc3BvbnNlKSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+dGFrZSgpKTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVB
c0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAgbV9j
YWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwg
V1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1d
KGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgeworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29y
a0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUtPnRha2UoKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11
dGFibGUgewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBw
ZWRCb2R5LnNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmgKaW5kZXggZDIzNGRhYjViZWVhNWI2NDczMDU1MGM3NzM3MGE5ZjE1OTU5N2Y5
Ny4uOTg0NDI0YTMwNjgxYTM2MGZjNjBjOWU3YTlkZDRlNmJiNDI2ZGU3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBA
IC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9UaW1lci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw2ICs0Nyw4IEBA
IGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNzIEZvcm1EYXRhOwogY2xhc3MgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtMTE0LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQWxs
b3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0Fs
bG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVj
dGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIGZp
bmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGRpZEJsb2NrQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoKSBmaW5hbDsKQEAgLTE5Miw3ICsxOTUsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsKICAgICB2b2lkIGJ1ZmZl
cmluZ1RpbWVyRmlyZWQoKTsKLSAgICB2b2lkIHNlbmRCdWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIHNlbmRCdWZmZXIoV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7
CiAKICAgICB2b2lkIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogICAgIHZvaWQgaW52YWxp
ZGF0ZVNhbmRib3hFeHRlbnNpb25zKCk7CkBAIC0yMjUsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKICAgICBzaXplX3QgbV9i
dWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCB7IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXJlZERhdGE7CiAgICAgdW5zaWduZWQgbV9yZWRpcmVj
dENvdW50IHsgMCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bmNocm9ub3VzTG9hZERhdGE+
IG1fc3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTI0MCw3ICsyNDMsNyBAQCBwcml2YXRlOgogCiAg
ICAgV2ViQ29yZTo6VGltZXIgbV9idWZmZXJpbmdUaW1lcjsKICAgICBSZWZQdHI8TmV0d29ya0Nh
Y2hlOjpDYWNoZT4gbV9jYWNoZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXJCdWlsZGVyPiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxO
ZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBW
YWxpZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZv
ckNhY2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
aW5nTG9hZC5jcHAKaW5kZXggMTE0ODUzZTQ1YjcyNTMzNjRjNzQ3YTcxY2IyYjVhYjhjYzM4ZWZk
NS4uMWFmMWUwOGUzYzQ0MWUyNGYzMDA2NWU5ZjIwNzc2ZTZmOWZjMzNkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lk
IFBpbmdMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCBOZWdvdGlhdGVkTGVnYWN5VAogICAgIGRpZEZpbmlzaCh7IH0sIHJlc3BvbnNlKTsKIH0KIAot
dm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQg
UGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQog
ewogICAgIFBJTkdfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Bp
bmdMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKaW5kZXgg
MTllYzhjZWI5MmUzYzhhMDU2ZjQ5MjczNjYwY2ZmZjkyNjQzNDFkMS4uYWIyOWEwYjFhYzg0NjZi
MGVkNjFlZjU4ZWY0YzIyMGFiYWI2ZWJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UGluZ0xvYWQuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYp
IGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJv
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5
dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2
b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9QcmVjb25uZWN0VGFzay5jcHAKaW5kZXggNDU1NzgyZDU0YTJlYTliZWUxODY1MGUxYWZkMWNm
N2IyY2U5OGM0OS4uMTdkNDc5MDdhM2Y2ZWU1MmJlNjUwMWQxZGFiMGNhNjA3NTFkNmIwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKQEAg
LTc5LDcgKzc5LDcgQEAgdm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb20KICAgICBjb21wbGV0aW9uSGFu
ZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiB9CiAKLXZvaWQgUHJlY29ubmVjdFRhc2s6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpCit2b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJlY29ubmVjdFRhc2suaAppbmRleCAxYzFmZjE2NDcxMTFjNmZhODQ5NGFmNWNmMGM3
YmJlYWExYjI2NTAzLi44NTgwOGUxMjFiNjhjYThiNzNlMjUxOGQxOTNhYjM5NTgxZWFkMWU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCkBAIC01
NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25n
IGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBm
aW5hbDsKICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZp
bmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5kZXggNzFlMGNmNmM2ZGM3YmVhNTIyYzkw
NjAwNTU1ZjU3MjE2MWMzYzJmNC4uODE5NjYzMDIwYzY5NWNlMGM2YWJhOTk5YzY3NWFhYjQyODJj
N2ZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25Q
cmVsb2FkZXIuY3BwCkBAIC0xNzQsMTAgKzE3NCwxMCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJl
cwogICAgICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9i
b2R5Q2FsbGJhY2spCi0gICAgICAgIG1fYm9keUNhbGxiYWNrKFdURk1vdmUoYnVmZmVyKSwgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIG1fYm9keUNhbGxiYWNrKGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQg
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCmluZGV4IDFlNzhjMmNlZmEx
NTQ4NDEwNDA2MGYzYjE5ZGM1MGU2Y2I4ZjFlYjQuLmVlMWJjOGI3ZDZjYmZmYzMzNDFkNjczZmI3
MjQyMjM4ZjY3MTdmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRlci5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBm
aW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nob3VsZENhcHR1cmVFeHRy
YU5ldHdvcmtMb2FkTWV0cmljczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5jcHAKaW5kZXggOGVlMTEyYTlkZjgyODk1NGMxNjIzZmZmMjJjMmEy
MGZkOGUyZmU3ZC4uN2EyNjIyMTlkZTc4YjIzNWQxMjVhOTJiNmUyMzZkMzMyNjJmN2EyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCkBA
IC0xNzcsNyArMTc3LDcgQEAgUmVzb3VyY2VFcnJvciBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlcjo6cHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG8KICAgICByZXR1cm4geyB9
OwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fZGVjb2RlcikgewogICAgICAgICBpZiAoIW1f
cmVzcG9uc2VFbmNvZGluZy5pc0VtcHR5KCkpCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBTZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwKICAgICB9CiAKICAgICBpZiAoYXV0byBzaXplID0gYnVmZmVyLT5zaXpl
KCkpCi0gICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPmRh
dGEoKSwgc2l6ZSkpOworICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUo
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUpKTsKIH0KIAogdm9pZCBTZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuaAppbmRleCAxOGY1NDY5MWYzN2MyYmFiYmM4YzFhM2JjMDk0MzcwZTli
MjllYjcxLi40NGZjMDY4NWZhMGZlZGM4NzQyMTkxNmU5MTNhNjc0YjFjMGZkYmVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaApAQCAtNjQsNyAr
NjQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlh
bHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRp
cmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZp
bmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5j
cHAKaW5kZXggMDQ3NzY4MzZmOTk5MDkzOTEwYjM5OWQ3NTUzODU1ZDVkM2YxZmY0ZS4uZGQzMDVh
ZjI5NzY2MWU0NzZjNDk2NzdkZjU3MjFlZmQxZWM5MzJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtNDU0LDcgKzQ1
NCw3IEBAIHZvaWQgQ2FjaGU6OmNvbXBsZXRlUmV0cmlldmUoUmV0cmlldmVDb21wbGV0aW9uSGFu
ZGxlciYmIGhhbmRsZXIsIHN0ZDo6dW5pcXVlX3B0CiAgICAgaGFuZGxlcihXVEZNb3ZlKGVudHJ5
KSwgaW5mbyk7CiB9CiAgICAgCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjptYWtlRW50
cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiByZXNwb25zZURhdGEpCitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjptYWtlRW50
cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhKQogewogICAgIHJldHVybiBtYWtlVW5pcXVlPEVu
dHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKHJlc3BvbnNlRGF0
YSksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nlc3Mo
KS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25JRCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9CkBA
IC00NjQsNyArNDY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZVJlZGly
ZWN0RW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JgogICAgIHJldHVybiBtYWtl
VW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCByZWRpcmVjdFJl
cXVlc3QsIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0d29ya1Byb2Nl
c3MoKS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25JRCksIHJlcXVlc3QsIHJlc3BvbnNlKSk7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBG
dW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3N0ZDo6dW5p
cXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVu
Y3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNT
RVJUKHJlc3BvbnNlRGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IDE5OWYwY2ZiNzMyNTQzYzVmZWFmNGZlMjMwMWU2
YTFjMTJmODhmZTguLmVkMDRlYmNhMGIzNmYzZjljNGMwZTdiYWM3MTMzNmI5ZTk2YzM1ODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
aApAQCAtNDMsNyArNDMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTG93UG93ZXJN
b2RlTm90aWZpZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTE2Niw3ICsxNjYsNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICB1c2luZyBSZXRyaWV2ZUNv
bXBsZXRpb25IYW5kbGVyID0gRnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+LCBj
b25zdCBSZXRyaWV2ZUluZm8mKT47CiAgICAgdm9pZCByZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgc3RkOjpvcHRpb25hbDxOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgPSBudWxscHRy
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5
Jik+JiYgPSBudWxscHRyKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlUmVkaXJl
Y3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1
ZXN0LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heEFnZUNhcCk7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiB1cGRhdGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
RW50cnkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiB2YWxpZGF0aW5nUmVzcG9u
c2UpOwogCkBAIC0xODUsNyArMTg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmV0cmlldmVEYXRh
KGNvbnN0IERhdGFLZXkmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPik7
CiAgICAgdm9pZCBzdG9yZURhdGEoY29uc3QgRGF0YUtleSYsICBjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QpOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbWFrZUVudHJ5KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RW50cnk+IG1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbWFrZVJlZGly
ZWN0RW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJl
Y3RSZXF1ZXN0KTsKIAogICAgIHZvaWQgZHVtcENvbnRlbnRzVG9GaWxlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
Y3BwCmluZGV4IGJhMzlkOWUyYzI2YTAxYTkyNmIxMWFhNzk5ZTM2NjJmYzZhZTA1NDkuLjc2MTA3
OGRlYTA5M2MwNDU1NWJlOThiMDUxNzNlMzQxNTA2N2E4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCkBA
IC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2Fj
aGUgewogCi1FbnRyeTo6RW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVx
dWVzdEhlYWRlcnMpCitFbnRyeTo6RW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJp
bmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKQogICAgIDogbV9rZXkoa2V5KQogICAgICwgbV90
aW1lU3RhbXAoV2FsbFRpbWU6Om5vdygpKQogICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKQEAg
LTEwMSw4ICsxMDEsMTAgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VS
ZWNvcmQoKSBjb25zdAogCiAgICAgRGF0YSBoZWFkZXIoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rl
ci5idWZmZXJTaXplKCkpOwogICAgIERhdGEgYm9keTsKLSAgICBpZiAobV9idWZmZXIpCi0gICAg
ICAgIGJvZHkgPSB7IG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICBp
ZiAobV9idWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Kj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICB9CiAK
ICAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CiB9
CkBAIC0xOTQsNyArMTk2LDcgQEAgdm9pZCBFbnRyeTo6aW5pdGlhbGl6ZUJ1ZmZlckZyb21TdG9y
YWdlUmVjb3JkKCkgY29uc3QKICAgICBtX2J1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LmRhdGEoKSwgbV9zb3VyY2VTdG9yYWdl
UmVjb3JkLmJvZHkuc2l6ZSgpKTsKIH0KIAotV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBFbnRyeTo6
YnVmZmVyKCkgY29uc3QKK1dlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIEVudHJ5Ojpi
dWZmZXIoKSBjb25zdAogewogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIGluaXRpYWxpemVC
dWZmZXJGcm9tU3RvcmFnZVJlY29yZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCmluZGV4IDk2OTE1YzM4MDFjMzdk
ZGFjM2U4ZTYwMzIxZjg4YzIyMjljZDU5YTAuLjljMDQyMGQ0NGE4MTU4ZGZjNWIyMWNmMTg4MjA0
Y2YzYTkxNmI0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogY2xhc3Mg
RW50cnkgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEVudHJ5
KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3Ry
aW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycyk7CisgICAgRW50cnkoY29uc3QgS2V5JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4m
IHZhcnlpbmdSZXF1ZXN0SGVhZGVycyk7CiAgICAgRW50cnkoY29uc3QgS2V5JiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4m
IHZhcnlpbmdSZXF1ZXN0SGVhZGVycyk7CiAgICAgZXhwbGljaXQgRW50cnkoY29uc3QgU3RvcmFn
ZTo6UmVjb3JkJik7CiAgICAgRW50cnkoY29uc3QgRW50cnkmKTsKQEAgLTU3LDcgKzU3LDcgQEAg
cHVibGljOgogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8
U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKCkgY29uc3QgeyByZXR1cm4g
bV92YXJ5aW5nUmVxdWVzdEhlYWRlcnM7IH0KIAotICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciog
YnVmZmVyKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVm
ZmVyKCkgY29uc3Q7CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3Q+JiByZWRpcmVjdFJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlZGlyZWN0UmVxdWVz
dDsgfQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKQEAgLTg4LDcgKzg4LDcgQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gbV92YXJ5aW5n
UmVxdWVzdEhlYWRlcnM7CiAKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdD4gbV9yZWRpcmVjdFJlcXVlc3Q7Ci0gICAgbXV0YWJsZSBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNF
KQogICAgIG11dGFibGUgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSBtX3NoYXJlYWJsZVJlc291
cmNlSGFuZGxlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5k
ZXggYWQwOWRmNDRkOWFmMTJmZDQwODAzMTA1NDY4MzUzNmVhMGRjODE5My4uNDFkODIzNTAyNDc0
N2I2ZmM0YTNhYzU0OGUxMzM0ZWQ2Y2I1ZWY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmNwcApAQCAtNDYsNyArNDYsNyBAQCBTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZl
TG9hZChDYWNoZSYgY2FjaGUsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZyYW1lSQogICAg
IDogbV9jYWNoZShjYWNoZSkKICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpCiAgICAgLCBtX29yaWdpbmFsUmVxdWVzdChyZXF1ZXN0KQotICAgICwg
bV9idWZmZXJlZERhdGFGb3JDYWNoZShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQorICAgICwgbV9i
dWZmZXJlZERhdGFGb3JDYWNoZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKICAg
ICAsIG1fY2FjaGVFbnRyeShXVEZNb3ZlKGNhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSkKIHsKICAg
ICBBU1NFUlQoIW1fY2FjaGVFbnRyeSB8fCBtX2NhY2hlRW50cnktPm5lZWRzVmFsaWRhdGlvbigp
KTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbnNlLCBSZQogICAgIG1fcmVz
cG9uc2UgPSByZWNlaXZlZFJlc3BvbnNlOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNNdWx0aXBh
cnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAg
IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKIAogICAgIGJvb2wgdmFsaWRhdGlvblN1
Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3Qg
TW9kaWZpZWQKICAgICBpZiAodmFsaWRhdGlvblN1Y2NlZWRlZCAmJiBtX2NhY2hlRW50cnkpCkBA
IC0xMjAsMTcgKzEyMCwxNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbnNlLCBSZQogICAgIGNvbXBsZXRp
b25IYW5kbGVyKFBvbGljeUFjdGlvbjo6VXNlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6
OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZm
ZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeSk7CiAKICAgICBpZiAo
bV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93
dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGlt
dW1DYWNoZUJ1ZmZlclNpemUgPSAxMCAqIDEwMjQgKiAxMDI0OwotICAgICAgICBpZiAobV9idWZm
ZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hl
QnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChi
dWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkg
KyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAg
ICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAgICAgfQogfQogCkBAIC0xMzks
MTAgKzEzOSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyhjb25z
dCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQogICAgIGlmIChtX2RpZENvbXBsZXRlKQog
ICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgbV9idWZmZXJlZERhdGFG
b3JDYWNoZSkgewotICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZShtX29yaWdp
bmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5jb3B5UmVmKCks
IFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CisgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2Fj
aGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLmdldCgpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0pOwogICAgICAgICAvLyBDcmVh
dGUgYSBzeW50aGV0aWMgY2FjaGUgZW50cnkgaWYgd2UgY2FuJ3Qgc3RvcmUuCiAgICAgICAgIGlm
ICghbV9jYWNoZUVudHJ5ICYmIGlzU3RhdHVzQ29kZUNhY2hlYWJsZUJ5RGVmYXVsdChtX3Jlc3Bv
bnNlLmh0dHBTdGF0dXNDb2RlKCkpKQotICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNo
ZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBXVEZNb3ZlKG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUt
Pm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFG
b3JDYWNoZS50YWtlKCkpOwogICAgIH0KIAogICAgIGRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRleCBjMGUxZTE0YjJhYzQ2MDM1OGY4MTQwN2NkNzBjNDA5
MDUyYWY4ZWZlLi4xYjg0M2RiN2VjMjcwZGI5ZGFiOWU4YTI1ZjJhNDhhOGVjYWUyYThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGly
ZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Up
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApA
QCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSBtX3Jlc3BvbnNlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50
cnk+IG1fY2FjaGVFbnRyeTsKICAgICBib29sIG1fZGlkQ29tcGxldGUgeyBmYWxzZSB9OwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2Fj
aGUuY3BwCmluZGV4IDVlMmUwMmUyZmJhMGI0YTBjMDNiNWQzZTY2Yjk3ZjdiY2NjNzk1OGIuLjMx
OTliZmYzMTFiNmMzZWVmYmU5NTBiNDVlNmIwYTk2ZTMyNzc3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcApAQCAtMzAs
NyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUHJlZmV0Y2hDYWNoZTo6RW50cnk6
OkVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitQcmVmZXRjaENhY2hlOjpFbnRyeTo6RW50cnko
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiByZXNwb25zZShXVEZNb3ZlKHJl
c3BvbnNlKSksIGJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiB9CkBAIC03Miw3ICs3Miw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxQcmVmZXRjaENhY2hlOjpFbnRyeT4gUHJlZmV0Y2hDYWNoZTo6dGFr
ZShjb25zdCBVUkwmIHVybCkKIAogc3RhdGljIGNvbnN0IFNlY29uZHMgZXhwaXJhdGlvblRpbWVv
dXQgeyA1X3MgfTsKIAotdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZShjb25zdCBVUkwmIHJlcXVl
c3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlKGNv
bnN0IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAg
ICAgaWYgKCFtX3Nlc3Npb25QcmVmZXRjaGVzKQogICAgICAgICBtX3Nlc3Npb25QcmVmZXRjaGVz
ID0gbWFrZVVuaXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCmluZGV4IGEyNTE1MjBiMzFl
YWM5MjFjMjJkMzExNTFkNmQyMzFhMWJlZDEzOGMuLjUyYzBiMTBmY2M2ZDVhNmRlMTE0NDdlN2U0
ZTgyMmRmOGY4NDFjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvUHJlZmV0Y2hDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvUHJlZmV0Y2hDYWNoZS5oCkBAIC00NywxOCArNDcsMTggQEAgcHVibGljOgogCiAgICAg
c3RydWN0IEVudHJ5IHsKICAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwot
ICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpOworICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICAg
ICAgRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJik7CiAKLSAgICAgICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVsZWFzZUJ1
ZmZlcigpIHsgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOyB9CisgICAgICAgIFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZWxlYXNlQnVmZmVyKCkgeyByZXR1cm4g
YnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7IH0KIAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlOwotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBi
dWZmZXI7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZWRpcmVjdFJlcXVlc3Q7
CiAgICAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gdGFrZShjb25zdCBVUkwmKTsK
LSAgICB2b2lkIHN0b3JlKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBzdG9yZShjb25zdCBV
UkwmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB2b2lkIHN0b3JlUmVkaXJlY3QoY29uc3QgVVJMJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKaW5kZXggYjlhYjBkZWViYjlmOTI3YzczNzQy
ZTg2YTBiZTdmOTcxNjBiZDZmYi4uNDE2NjhhNWIxY2Q3Mzg2OTY3YjhmZDk3M2U5NjczMmVjYTkw
N2VkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkaWROZWdvdGlhdGVNb2Rlcm5UTFMoY29uc3QgVVJMJik7CiAgICAgdm9pZCBkaWRDb21w
bGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCB0cmFuc2Zl
clNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKERvd25sb2FkJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bQppbmRleCBlNzgwZDZjMWMzY2QxZWIyYzJmZjVhMGM1NjRhMGU0ZDg4YjdlYTVkLi4zMDUxZjE2
OWNiMGEzNzA5OTg1YTE2MTEyMmMyNWYwZThmMTdiZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0K
QEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRDb21wbGV0
ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcgogICAgICAgICBtX2Ns
aWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoZXJyb3IsIG5ldHdvcmtMb2FkTWV0cmljcyk7CiB9
CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7
CiAgICAgV1RGRW1pdFNpZ25wb3N0KG1fdGFzay5nZXQoKSwgIkRhdGFUYXNrIiwgInJlY2VpdmVk
ICV6ZCBieXRlcyIsIGRhdGEtPnNpemUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAppbmRleCA4ZmM3
YjY2M2U2Zjc1NjJiMmIzNTQ4OTM5OGEyZmU3MzFiZTA3NGYxLi4zN2YyOTQxNjY0NmM0N2UxZGEx
ZmQ5OTQxY2NhYzAwYjVkYzBmZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCkBAIC0xNzIsNyArMTcy
LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1
cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVzcG8KICAgICBpbnZva2VEaWRSZWNlaXZlUmVzcG9u
c2UoKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZl
cihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBOZXR3b3Jr
RGF0YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7
ICp0aGlzIH07CiAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCBzdGF0ZSgp
ID09IFN0YXRlOjpDb21wbGV0ZWQgfHwgKCFtX2NsaWVudCAmJiAhaXNEb3dubG9hZCgpKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRh
c2tDdXJsLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFU
YXNrQ3VybC5oCmluZGV4IDFjNDI3ZGRiNzhkNjk1M2ZlODk2MGM1NjkyYWZkZTRmNGYwZWVlODUu
LjQ1YmU1Y2UxODQzMjUyNzFkNWMwODBkZDM0ZjFlZTRhMTY2NDJhMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwu
aApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIFJlZjxXZWJDb3JlOjpDdXJsUmVxdWVz
dD4gY3JlYXRlQ3VybFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlcXVlc3RT
dGF0dXMgPSBSZXF1ZXN0U3RhdHVzOjpOZXdSZXF1ZXN0KTsKICAgICB2b2lkIGN1cmxEaWRTZW5k
RGF0YShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQg
bG9uZyBsb25nKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpDdXJsUmVzcG9uc2UmJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY3VybERpZFJlY2Vp
dmVCdWZmZXIoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoV2ViQ29y
ZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImJiwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiYpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9O
ZXR3b3JrUlRDUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENQcm92aWRlci5oCmluZGV4IGY1ZGI3MDZjNDQ1ODAyMTA4N2Y5NTk5NjY5ZGZh
N2Q5ZjgzNzk3OGMuLjMzZDQzYjcyMjM4ZDIwM2U3ZWRlYzk0MTRjYWY5ZmRhOGY0MDUyNmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQ
cm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdv
cmtSVENQcm92aWRlci5oCkBAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBQYWNrZXRPcHRpb25zOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5oCmluZGV4IDdlMGQ4ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2M2E2ZTNkZjE4MzJlOWYuLjE3ZjA4
YzI4ZWExMjViNTUwOTkzZWVkMjRkNTk2M2I4NTEwYTExNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBFbmNvZGVzIGEgU2hhcmVk
QnVmZmVyIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBjb3B5IG9mIHRoZSBkZWNvZGVkIGRhdGEgaW4g
YSBuZXcgU2hhcmVkQnVmZmVyLgorLy8gRW5jb2RlcyBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIg
dGhhdCBpcyByZWNlaXZlZCBhcyBhIGNvcHkgb2YgdGhlIGRlY29kZWQgZGF0YSBpbiBhIG5ldyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyLgogLy8gVG8gYXZvaWQgY29weWluZyBmcm9tIHRoZSBEZWNv
ZGVyLCB1c2UgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB0byByZWNlaXZlIGEgRGF0YVJlZmVy
ZW5jZSBpbnN0ZWFkLgogCiAjcHJhZ21hIG9uY2UKQEAgLTQzLDExICs0MywxMiBAQCBwdWJsaWM6
CiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KICAgICBTaGFyZWRCdWZm
ZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1f
YnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9Ci0gICAgU2hhcmVkQnVmZmVyQ29weShjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgIHsKLSAgICAgICAgbV9idWZmZXItPmFwcGVu
ZChidWZmZXIpOwotICAgIH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihidWZm
ZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPigpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VD
b250aWd1b3VzKCkpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5t
YWtlQ29udGlndW91cygpKSB7IH0KIAogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQogICAgIGNvbnN0IFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZS5oCmluZGV4IGQzZDBlYzVlOTc4NTU5OWI2MzRhODRjNmM0NDcxYjUyY2QyMjEzZjEuLjY3
ZWM4ZTVlOTJiZDAyNDExNWRiMGQ0MDgwYTI0ZmU3MzU3MGQzZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKQEAg
LTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0vLyBFbmNvZGVzIGEgU2hhcmVkQnVmZmVyIG9yIERhdGFSZWZlcmVuY2UgdGhhdCBpcyByZWNl
aXZlZCBhcyBhIERhdGFSZWZlcmVuY2UgdG8gdGhlIGRlY29kZWQgZGF0YS4KKy8vIEVuY29kZXMg
YSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIG9yIERhdGFSZWZlcmVuY2UgdGhhdCBpcyByZWNlaXZl
ZCBhcyBhIERhdGFSZWZlcmVuY2UgdG8gdGhlIGRlY29kZWQgZGF0YS4KIAogI3ByYWdtYSBvbmNl
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCBkMjQwNmVlMjkw
NTMxMWY2OWI3NTg0MjFlNzdhM2U2NmNiYTI3YjY1Li5jMDI2ZjU0OTU2OWIyYmUwMDc4YWUzMjVk
MDUzOWUwNzFhZjExMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJl
ZE1lbW9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3Bw
CkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAotUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVk
TWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC01MSw3ICs1MSw3IEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIHsKICAg
ICBBU1NFUlQoZGF0YVNpemUgPD0gc2l6ZSgpKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoeworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJv
dmlkZXIgewogICAgICAgICBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIC0+IGNv
bnN0IHVpbnQ4X3QqIHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4ocHJvdGVjdGVkVGhpcy0+ZGF0YSgpKTsKICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL1NoYXJlZE1lbW9yeS5oCmluZGV4IGUzNzFiY2Q3MzAyY2Y4NWViYWIyYjVhODVlN2JlNDlk
Y2Y1NjUyYWIuLjFiNGZkZmFmNjgzODlkY2U3MjhmZjM0ZTVlNWYwMTJlMjQzZmEyY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBF
bmNvZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiAjaWYgT1MoREFSV0lOKQpAQCAtMTIwLDcg
KzEyMSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBDaGFuZ2UgdGhlc2UgZmFjdG9yeSBm
dW5jdGlvbnMgdG8gcmV0dXJuIFJlZjxTaGFyZWRNZW1vcnk+IGFuZCBjcmFzaCBvbiBmYWlsdXJl
LgogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBhbGxvY2F0ZShzaXplX3QpOwotICAg
IHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBjb3B5QnVmZmVyKGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBjb3B5QnVmZmVy
KGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBzdGF0aWMgUmVm
UHRyPFNoYXJlZE1lbW9yeT4gbWFwKGNvbnN0IEhhbmRsZSYsIFByb3RlY3Rpb24pOwogI2lmIFVT
RShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiB3
cmFwTWFwKHZvaWQqLCBzaXplX3QsIGludCBmaWxlRGVzY3JpcHRvcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KaW5kZXggY2EwYzI0YjI3NzM1NDc2
NzZlMzQ4MDFjNzlhMWQ1NjViZjk1ZmU1ZC4uMTEwZTBhZGRlNTU4YTlkOTMzOGIyNDUwNmU4OTE2
M2M5MzY5NzE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2
ZVJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNv
dXJjZS5tbQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlV2ViQXJjaGl2ZVJl
c291cmNlRGF0YSh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIAogUmVmPEFQSTo6
RGF0YT4gV2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZUNGRGF0YSgpOwor
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRh
KCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAKICAgICAvLyBCYWxhbmNlZCBi
eSBDRlJlbGVhc2UgaW4gcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJjZURhdGEuCiAgICAgQ0ZSZXRh
aW4oY2ZEYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggODdmNGViMWViYTI4NzJlMGNi
MGFiOTU5MTZhZmVkZTI5ZmNiYTI0NC4uM2MxYjU3ZDVhYTI2ZWM3MmU2MGI1ZDc4YTExZTlmZDg1
MmNmZmVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTU2NCwxMyArNTY0LDEyIEBAIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29y
ZTo6Rm9udD4+OjpkZWNvCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAo
KmluY2x1ZGVzQ3JlYXRpb25EYXRhKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKICAgICAg
ICAgZGVjb2RlciA+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQog
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAvLyBVcG9uIHJlY2Vp
cHQsIGNvcHkgdGhlIGRhdGEgZm9yIHNlY3VyaXR5LCBzbyB0aGUgc2VuZGVyIGNhbid0IHNjcmli
YmxlIG92ZXIgaXQgd2hpbGUgd2UncmUgdXNpbmcgaXQuCi0gICAgICAgIGF1dG8gbG9jYWxGb250
RmFjZURhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RmFjZURhdGEudmFs
dWUoKS0+ZGF0YSgpLCBmb250RmFjZURhdGEudmFsdWUoKS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0
byBsb2NhbEZvbnRGYWNlRGF0YSA9IGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5tYWtlQ29udGlndW91
cygpOwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9uOwog
ICAgICAgICBkZWNvZGVyID4+IGl0ZW1JbkNvbGxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggYzY5NjFjNzE0NDAyYmYzNzdhZTkxMGZiYjZj
Y2FhNTJkM2I4NDEyOC4uNmZhMDJhN2JjM2VlNTRhZTZkMzI1MzgxMGQ3OGRlYzMxNjUzNTNkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAtNTcsNyAr
NTcsNyBAQCBib29sIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFy
ZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAg
ICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+ZGF0YSgpOyB9LAog
ICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2VsZi0+c2l6ZSgpOyB9
CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcAppbmRleCA2NDk4MmJjNDgxMDJhNGFkYjIwYTdlNjBlMjFiZDQ5MmQ2NTMzNzRjLi44NDNm
ZDQ3MzEzYWVlY2EyOTkzMDYxMmZjNWVjNTc4NzU1NDM0MmRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBE
RUZJTkVfU0lNUExFX0FSR1VNRU5UX0NPREVSX0ZPUl9TT1VSQ0UoRGlzcGxheUxpc3Q6OlNldElu
bGluZVN0cm9rZUNvbG9yKQogCiAjdW5kZWYgREVGSU5FX1NJTVBMRV9BUkdVTUVOVF9DT0RFUl9G
T1JfU09VUkNFCiAKLXN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3N0YXRpYyB2b2lkIGVuY29kZVNoYXJl
ZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBi
dWZmZXIpCiB7CiAgICAgYm9vbCBpc051bGwgPSAhYnVmZmVyOwogICAgIGVuY29kZXIgPDwgaXNO
dWxsOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICAgICAgICAgcmV0
dXJuOwogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgLy8gRG8gbm90IHVzZSBz
aGFyZWQgbWVtb3J5IGZvciBTaGFyZWRCdWZmZXIgZW5jb2RpbmcgaW4gVW5peCwgYmVjYXVzZSBp
dCdzIGVhc3kgdG8gcmVhY2ggdGhlCisgICAgLy8gRG8gbm90IHVzZSBzaGFyZWQgbWVtb3J5IGZv
ciBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGVuY29kaW5nIGluIFVuaXgsIGJlY2F1c2UgaXQncyBl
YXN5IHRvIHJlYWNoIHRoZQogICAgIC8vIG1heGltdW0gbnVtYmVyIG9mIGZpbGUgZGVzY3JpcHRv
cnMgb3BlbiBwZXIgcHJvY2VzcyB3aGVuIHNlbmRpbmcgbGFyZ2UgZGF0YSBpbiBzbWFsbCBjaHVu
a3MKICAgICAvLyBvdmVyIHRoZSBJUEMuIENvbm5lY3Rpb25Vbml4LmNwcCBhbHJlYWR5IHVzZXMg
c2hhcmVkIG1lbW9yeSB0byBzZW5kIGFueSBJUEMgbWVzc2FnZSB0aGF0IGlzCiAgICAgLy8gdG9v
IGxhcmdlLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODU3
MS4KQEAgLTI2NCw3ICsyNjQsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVj
b2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbgogICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVm
ZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGRhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEuYXBwZW5kKGJ1ZmZl
cik7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNTUwLDEwICsxNTUwLDEwIEBAIHZv
aWQgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QKICAgICBpZiAoaGFzU3RyaW5nKQogICAgICAgICBlbmNvZGVy
IDw8IHN0ZDo6Z2V0PFN0cmluZz4ocGxhdGZvcm1EYXRhKTsKIAotICAgIGJvb2wgaGFzQnVmZmVy
ID0gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRh
KTsKKyAgICBib29sIGhhc0J1ZmZlciA9IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpOwogICAgIGVuY29kZXIgPDwgaGFzQnVm
ZmVyOwogICAgIGlmIChoYXNCdWZmZXIpCi0gICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNv
ZGVyLCBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKS5wdHIoKSk7Cisg
ICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBzdGQ6OmdldDxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSkucHRyKCkpOwogfQogCiBib29sIEFyZ3VtZW50
Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeSYgZGF0YSkKQEAgLTI5NzYsNyArMjk3Niw3
IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRh
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBXVEZNb3Zl
KGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9fTsKKyAgICByZXR1cm4geyB7IFdURk1v
dmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH0gfTsKIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zMDEwLDYgKzMwMTAsMzQgQEAgc3RkOjpvcHRp
b25hbDxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6U2VyaWFsaXplZFAKIH0KICNlbmRpZgogCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQor
eworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOworfQorCitz
dGQ6Om9wdGlvbmFsPFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2Rl
cjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYg
KCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXI7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2Rl
cjxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9
CisKK3N0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENv
ZGVyPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAo
IWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxs
KCk7Cit9CisKIHZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYgYnVmZmVyKQogewogICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZm
ZXIuZ2V0KCkpOwpAQCAtMzEwNyw3ICszMTM1LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGUK
IHsKICAgICBlbmNvZGVyIDw8IG1lc3NhZ2UuZmlyc3Q7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlSZWYoKTsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZURhdGEgPSBtZXNzYWdlLnNlY29uZC5jb3B5
UmVmKCk7CiAgICAgZW5jb2RlciA8PCBtZXNzYWdlRGF0YTsKIH0KIApAQCAtMzExNyw3ICszMTQ1
LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+
ICBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5
cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgKaW5kZXggMjVmMDFjMDI5MmEwMTlmMDY3NjI0YmJiNTUzNDAyZGYxYTMzYzVi
Ni4uNmZhYzJhYTFlYTc4NDZmZjZiZjg5MDIxZjBmNTJlOWFhN2FlMDNjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTExNCw2ICsxMTQsNyBA
QCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3Mg
Q2VydGlmaWNhdGVJbmZvOwogY2xhc3MgQ29sb3I7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFz
cyBDcmVkZW50aWFsOwogY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIEN1
cnNvcjsKQEAgLTEzOCw3ICsxMzksNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0QnVmZmVyOwogY2xhc3MgU2VjdXJpdHlPcmln
aW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
Y2xhc3MgU3ByaW5nVGltaW5nRnVuY3Rpb247CiBjbGFzcyBTdGVwc1RpbWluZ0Z1bmN0aW9uOwog
Y2xhc3MgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOwpAQCAtNzUxLDYgKzc1Miwx
NiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRQ
bGF0Zm9ybURhdGFDdWVWYWx1ZT4gewogfTsKICNlbmRpZgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gewor
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRy
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0
IFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERl
Y29kZXImKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYs
IGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Jik7CiAgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKaW5kZXgg
Y2YyZTRkNWY5M2ZkMmQ5NDZiYWJmZjkzZWVhM2U5ZTg2MGFlYmJmNC4uYjYwN2FjZTgzOGUwNGJj
ZTFhNmFlZTRkYTU2NTU5ZTA5Njk4Mzk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkhpdFRlc3RSZXN1bHREYXRhLmNwcApAQCAtODUsNyArODUsNyBAQCBXZWJIaXRUZXN0UmVzdWx0
RGF0YTo6V2ViSGl0VGVzdFJlc3VsdERhdGEoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYg
aGl0VGVzdAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoSW1hZ2UqIGltYWdlID0gaGl0VGVz
dFJlc3VsdC5pbWFnZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IGltYWdlLT5kYXRhKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBpbWFnZS0+ZGF0YSgpOwogICAgICAgICBpZiAoYnVmZmVyKSB7CiAgICAgICAgICAg
ICBpbWFnZVNoYXJlZE1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpi
dWZmZXIpOwogICAgICAgICAgICAgaW1hZ2VTaXplID0gYnVmZmVyLT5zaXplKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCAyNWEzMDdm
MzgyOWU5Mjc4YjVlYTc4ZmY4Mjk2Nzg4MzM3N2EzMWJhLi42NzE3NThhMjgwYTVlNDQwYWEwNjBh
NzljZjFmMGYxMjZkYjdiZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsv
QXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1
bWVudENvZGVyc0d0ay5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFNl
bGVjdGlvbkRhdGE+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2VsZWN0aW9uRGF0
YSYKICAgICBib29sIGhhc0N1c3RvbURhdGEgPSBzZWxlY3Rpb24uaGFzQ3VzdG9tRGF0YSgpOwog
ICAgIGVuY29kZXIgPDwgaGFzQ3VzdG9tRGF0YTsKICAgICBpZiAoaGFzQ3VzdG9tRGF0YSkKLSAg
ICAgICAgZW5jb2RlciA8PCBSZWZQdHI8U2hhcmVkQnVmZmVyPihzZWxlY3Rpb24uY3VzdG9tRGF0
YSgpKTsKKyAgICAgICAgZW5jb2RlciA8PCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4o
c2VsZWN0aW9uLmN1c3RvbURhdGEoKSk7CiAKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSA9IHNl
bGVjdGlvbi5jYW5TbWFydFJlcGxhY2UoKTsKICAgICBlbmNvZGVyIDw8IGNhblNtYXJ0UmVwbGFj
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRl
eCBiMzRlYzczNjM2M2M0ZjFkMmIwZTc2MGFkM2Y0YTlkNWJhYzFhMzRlLi4xNDkwYzUxMWJkYzM4
YmQ4YWI0YTY5NWFlY2YzMDZkOTVmYWEzOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IEF0dGFjaG1lbnQ6OmZpbGVTaXplRm9yRGlzcGxheSgpIGNvbnN0CiAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0
YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25z
dAogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmgKaW5kZXggYWZhOTI5Y2YwOTNkMjJlYzc2YWQ4NmZkYTAzYjUwMWJi
ZmQyOWRjMy4uZmU1MGU1MzhiOGViYjM1MWE0ODM2ZDFkZDg5M2QxNDdhNTZhODc3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCkBAIC0zOSw2ICszOSw3
IEBAIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtODIsNyArODMsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRW1wdHko
KSBjb25zdDsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGVuY2xvc2luZ0lt
YWdlRGF0YSgpIGNvbnN0OworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBlbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdDsKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0SGFzRW5jbG9z
aW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSkgeyBtX2hhc0VuY2xvc2luZ0ltYWdlID0g
aGFzRW5jbG9zaW5nSW1hZ2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKaW5kZXggN2ZjMDU0NTdlNjRjZjU4OWIwZmIw
ZTdlMDM2ZjY5MGZhMmMxN2JhYy4uNGUyNjZmMzY3YWM2MDJiOGVmMWVhZjc1N2EwYTA0ZGM3M2Y3
NzFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRS
dWxlTGlzdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdURiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAppbmRl
eCA1NjIzNDAxNDU5ZGE1ZmUzMGY0OTFhNDFmYjM0N2E2NzU3MjAyYzQwLi4xMTFmMDkyNjNmODIy
MzgyOWE1YWQyNjQ0MzRiYTQyMGYxOThkZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RydWN0
IENvbnRlbnRSdWxlTGlzdFJlc3VsdHM7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5E
YXRhOwogfQogCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKFFVSUNLX0xP
T0spCiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYg
dXRpKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNv
bnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSB7IH0KICNlbmRpZgogCiAgICAg
dmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBSZWY8TmF2aWdhdGlvbkFjdGlvbj4mJiwgUmVmPFdlYktpdDo6V2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBPYmplY3QqKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KaW5k
ZXggY2Y0NjIxNmNhMjVhOWVkZjgyZTMxOWEzMzAzMDc5MWU4ZDRlMTUzYy4uZGZlZjNlMDcwZjk2
MTYzMDQ5NzE0NGRhZjNmMzAwY2I0Y2E1MTk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCkBAIC0xMzcsNyAr
MTM3LDcgQEAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gQXR0YWNobWVudDo6ZmlsZVNpemVGb3JE
aXNwbGF5KCkgY29uc3QKICAgICByZXR1cm4gW2ZpbGVXcmFwcGVyIHJlZ3VsYXJGaWxlQ29udGVu
dHNdLmxlbmd0aDsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVu
dDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAogewog
ICAgIGlmICghbV9oYXNFbmNsb3NpbmdJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBj
NGVlNTI1MDc2NDJkYjRlNTRjZmFkZjdmZWUzYmYxYjdjMGQzZDNjLi4wMWM4MTAyNzhlZjYzNTkx
NzJmOGU2NWI1MmNmY2IwYjUyMWI3ZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE1OTYsNyArMTU5Niw3IEBAIC0gKHZvaWQpX3N0
b3JlQXBwSGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKWhpZ2hsaWdodAog
ICAgIGlmIChoaWdobGlnaHQudGV4dCkKICAgICAgICAgdGV4dCA9IGhpZ2hsaWdodC50ZXh0LnZh
bHVlKCk7CiAKLSAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHROUyhbW19XS0FwcEhpZ2hsaWdo
dCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0LmhpZ2hsaWdodC0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOworICAgIGF1dG8gd2tIaWdobGlnaHQg
PSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdo
bGlnaHQuaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSB0
ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CiAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5OZXdHcm91cDpyZXF1
ZXN0T3JpZ2luYXRlZEluQXBwOildKQogICAgICAgICBbZGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBz
dG9yZUFwcEhpZ2hsaWdodDp3a0hpZ2hsaWdodC5nZXQoKSBpbk5ld0dyb3VwOmhpZ2hsaWdodC5p
c05ld0dyb3VwID09IFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0OjpZZXMgcmVx
dWVzdE9yaWdpbmF0ZWRJbkFwcDpoaWdobGlnaHQucmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA9PSBX
ZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOjpZZXNdOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAppbmRleCBhYzRhMGY0
MzcwMTUyZWQ1NzJiNTA5MWRmYTUxYmFlYmFiODdmNGU5Li5jODAyOWMxNDBhNmRkMTRiMTk2NDky
MjViODc4MzBlZWMxMzQwMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAKICNpZiBV
U0UoUVVJQ0tfTE9PSykKICAgICAgICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpT
dHJpbmcmIHV0aSkgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3Zl
cnJpZGU7CisgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggMzg1NTg4MmM4N2RjOWVkMzFjMWVm
MGJhYjYxNmIxZTY0NTk0NGVlZi4uOGQzYTg1NjQ2MmVhZWY3NDFkOGMyOWUyNTkyZmQ1NzM2NmY1
OTljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5tbQpAQCAtMTIyMCw3ICsxMjIwLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmln
YXRpb25DbGllbnQ6OmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnIKICAg
ICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRp
b25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBk
aWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lV2l0aEZpbGVOYW1lOmZp
bGVOYW1lIHV0aTp1dGldOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghbV9uYXZpZ2F0aW9u
U3RhdGUpCiAgICAgICAgIHJldHVybjsKQEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4o
bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93
ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lOmJ1ZmZl
ci5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRp
b25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1f
bmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWU6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IDgwMmZmYWE2ZDZlZGJlYTJlOTcyNzc0
ZTI2OTY1YjJkYmIyYTczNWUuLjY4MzM3M2VhZTAwZjVkYjQyYjgxNDZjZTlkNTMxYmM4YWMwYTU0
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
cm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQcm94eUNvY29hLm1tCkBAIC0zMDIsMTIgKzMwMiwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6c2VuZEF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucygpCiAgICAgICAgIGlmIChub0VyciAh
PSBBdWRpb0NvbXBvbmVudEZldGNoU2VydmVyUmVnaXN0cmF0aW9ucygmcmVnaXN0cmF0aW9ucykg
fHwgIXJlZ2lzdHJhdGlvbnMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCByZWdpc3Ry
YXRpb25zID0gYWRvcHRDRihyZWdpc3RyYXRpb25zKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgcmVn
aXN0cmF0aW9ucyA9IGFkb3B0Q0YocmVnaXN0cmF0aW9ucyldICgpIHsKICAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBhdXRv
IHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWdpc3Ry
YXRpb25zLmdldCgpKTsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKHsgcmVnaXN0cmF0aW9u
RGF0YSB9KSwgMCk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyh7IFdURk1vdmUocmVnaXN0
cmF0aW9uRGF0YSkgfSksIDApOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCmluZGV4IDNmNmRkMWYyNDJlN2ExMTVl
Y2Y3OTgzOTBmMzRiNjM1YzZlOGQ2ZjkuLmY1ODkxMjQxNzAyZGFhNDIwY2M0ZTZlMjQ2MjhhMWNk
ZTg5MDdkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
aApAQCAtNTA2LDcgKzUwNiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0
IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdl
KTsKICAgICB2b2lkIHNldEZpbGVBbmRVUkxUeXBlcyhOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3Ry
aW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcg
KnZpc2libGVVUkwsIE5TUGFzdGVib2FyZCAqKTsKLSAgICB2b2lkIHNldFByb21pc2VkRGF0YUZv
ckltYWdlKFdlYkNvcmU6OkltYWdlKiwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0
ZW5zaW9uLCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxl
VVJMLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0
ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKnBhc3RlYm9hcmRPcmlnaW4pOworICAgIHZvaWQgc2V0UHJv
bWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5T
U3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJp
bmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGFyY2hpdmVC
dWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKnBhc3RlYm9hcmRPcmln
aW4pOwogICAgIHZvaWQgcGFzdGVib2FyZENoYW5nZWRPd25lcihOU1Bhc3RlYm9hcmQgKik7CiAg
ICAgdm9pZCBwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICosIE5TU3RyaW5n
ICp0eXBlKTsKICAgICBOU0FycmF5ICpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3Rp
bmF0aW9uKE5TVVJMICpkcm9wRGVzdGluYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAzZDllODc3YjBjYjc1NjU0YjYzOTE2Mzk1NTdm
NTJiNjAzOTJjYWM5Li42MjM2N2RjNWFkMWZlMTIyMWY3YjA5OWU5YmI0NDU0ZGIzN2E1OGVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtNDQ0
OSw3ICs0NDQ5LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0RmlsZUFuZFVSTFR5cGVzKE5TU3Ry
aW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlMKICAgICBtX3Byb21pc2VkVVJM
ID0gdXJsOwogfQogCi12b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShX
ZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVu
c2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJsZVVS
TCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBhcmNoaXZlQnVmZmVyLCBOU1N0cmluZyAqcGFzdGVi
b2FyZE5hbWUsIE5TU3RyaW5nICpvcmlnaW5JZGVudGlmaWVyKQordm9pZCBXZWJWaWV3SW1wbDo6
c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAq
ZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcg
KnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKm9y
aWdpbklkZW50aWZpZXIpCiB7CiAgICAgTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW05TUGFz
dGVib2FyZCBwYXN0ZWJvYXJkV2l0aE5hbWU6cGFzdGVib2FyZE5hbWVdOwogICAgIFJldGFpblB0
cjxOU011dGFibGVBcnJheT4gdHlwZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoT2JqZWN0czpXZWJDb3JlOjpsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlw
ZSgpLCBuaWxdKTsKQEAgLTQ0NzAsNyArNDQ3MCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldFBy
b21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVu
CiAgICAgc2V0RmlsZUFuZFVSTFR5cGVzKGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmws
IHZpc2libGVVUkwsIHBhc3RlYm9hcmQpOwogCiAgICAgaWYgKGFyY2hpdmVCdWZmZXIpIHsKLSAg
ICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAg
ICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIFtw
YXN0ZWJvYXJkIHNldERhdGE6bnNEYXRhLmdldCgpIGZvclR5cGU6KF9fYnJpZGdlIE5TU3RyaW5n
ICopa1VUVHlwZVdlYkFyY2hpdmVdOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CkBAIC00NTAxLDcgKzQ1MDEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBh
c3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU1N0cmluZyAqdAogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbDptX3Byb21pc2VkSW1hZ2UtPnV0aSgpXSAm
JiBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKSkgewotICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURh
dGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlm
IChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6
KF9fYnJpZGdlIE5TRGF0YSAqKXBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnR5cGVdOwogICAg
IH0KIApAQCAtNDU1NCw3ICs0NTU0LDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQ
cm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogCiAgICAgaWYgKG1fcHJvbWlzZWRJbWFnZSkgewotICAg
ICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpOwogICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIg
YWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRhLmdldCgpXSk7CiAgICAgfSBl
bHNlCiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5p
dFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bV9wcm9taXNlZFVSTF0gb3B0aW9uczpOU0Zp
bGVXcmFwcGVyUmVhZGluZ0ltbWVkaWF0ZSBlcnJvcjpuaWxdKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaAppbmRleCBjNDg1YzdmYzMxM2VhMDgzM2ZjNjA2MjY3MTY5ZDY5MmE4MjQw
OTI4Li5iNDYyZDhkYjVjYzYyMDM4NmU3NjgzZGIyNDgzNmFiM2NlNjRmZWZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0zMjgsNyArMzI4LDcgQEAgcHVibGljOgogI2Vu
ZGlmCiAKICNpZiBVU0UoQVBQS0lUKQotICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERhdGFG
b3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBh
cmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZm
ZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25z
dCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxl
VVJMLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVm
ZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpID0gMDsKICNlbmRpZgogCiAgICAg
dmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvRGV2aWNlU3BhY2UoY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCA1YTgzMmU1NWFjYmExODliMzliOWU4OTdjYzFjYTE4YjdiNDg0NTU1Li5lNWVhZjQx
ZjM4YjY0N2JjNWYzNzNkYjA3OWRlYjQxNmFhOTYzZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtMjU5LDcgKzI1OSw3IEBAIGNsYXNzIEludFNpemU7CiBjbGFz
cyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSdW5Mb29wT2JzZXJ2ZXI7CiBjbGFzcyBTZWxlY3Rp
b25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDsKIGNsYXNzIFRleHRJbmRpY2F0b3I7
CiBjbGFzcyBWYWxpZGF0aW9uQnViYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmNwcAppbmRleCBkZjU5ZDU2ZmQ2OTdmMmFkZjIwOWY2YzQ3YmVmMDUxZDgw
YzE2YmQxLi4xOTk3ZWFlMjBhYzIyY2EzYWU4MDA0YzcwNGZhMjJkYTYwOWUwMDlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtNTEsNiArNTEs
NyBAQCBXZWJVUkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhhbmRs
ZXImIGhhbmRsZXIsIFdlYlBhZ2VQcm94eSYgcAogICAgICwgbV9yZXF1ZXN0KFdURk1vdmUocGFy
YW1ldGVycy5yZXF1ZXN0KSkKICAgICAsIG1fZnJhbWVJbmZvKEFQSTo6RnJhbWVJbmZvOjpjcmVh
dGUoV1RGTW92ZShwYXJhbWV0ZXJzLmZyYW1lSW5mbyksICZwYWdlKSkKICAgICAsIG1fc3luY0Nv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc3luY0NvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAsIG1f
c3luY0RhdGEobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiB9CkBAIC0xNjgsNyArMTY5LDcgQEAgYXV0byBXZWJV
UkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpIC0+IEUKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0KIAotYXV0
byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikgLT4gRXhjZXB0aW9uVHlwZQorYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZl
RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5
cGUKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xODcsMTAgKzE4OCw3
IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5CiAgICAgbV9kYXRhU2VudCA9IHRydWU7CiAKICAg
ICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBt
X3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV9zeW5jRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgbV9zeW5jRGF0YS0+
YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpO
b25lOwogICAgIH0KIApAQCAtMjE3LDEyICsyMTUsOSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6
OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBl
CiAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwogICAgIAogICAgIGlmIChpc1N5bmMoKSkgewotICAg
ICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAg
ICAgICAgICBkYXRhID0geyBtX3N5bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9
OwotCisgICAgICAgIHNpemVfdCBzaXplID0gbV9zeW5jRGF0YS0+c2l6ZSgpOworICAgICAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YSA9IHsgbV9zeW5jRGF0YS0+dGFrZSgpLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIHNpemUgfTsKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9z
eW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKLSAgICAgICAgbV9zeW5jRGF0YSA9
IG51bGxwdHI7CiAgICAgfQogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVy
KCksIG1fcmVzb3VyY2VMb2FkZXJJRCwgZXJyb3IpLCBtX3dlYlBhZ2VJRCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggNmE4NTYwMjFiMTI5OTI0NmM3
MDAwOTNkZDBhNDdmMmMxMzA4NTI2Ny4uNzk5NDJmOWIyMGEyNjYwY2E0YTdkY2Q0NTAxOGQxNmU0
M2I2NjZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApA
QCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1
ZVJlZi5oPgogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEZyYW1lSW5mbzsKQEAgLTQzLDcgKzQ0
LDggQEAgY2xhc3MgRnJhbWVJbmZvOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3Vy
Y2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04NCw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBF
eGNlcHRpb25UeXBlIHdpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgIEZ1bmN0aW9uPHZvaWQoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFBlcmZvcm1S
ZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZl
RGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBFeGNlcHRpb25UeXBlIGRp
ZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAg
ICBFeGNlcHRpb25UeXBlIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KTsKIAogICAgIHZvaWQgc3RvcCgpOwpAQCAtMTE1LDcgKzExNyw3IEBAIHByaXZhdGU6CiAKICAg
ICBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAg
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9y
UmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKaW5kZXggNzg2NmNkYjE3NzQ2MDA3YWIwYTdh
MTdjNTViODdjN2YxNjRjMmJhZS4uNzI3OWY4NDRjYzJiYmQyYjAxN2ZlMGYwOTdkZTAxODcwYTlh
ODUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaApAQCAtMzYsNyAr
MzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBfR3RrQ2xpcGJvYXJkIEd0a0NsaXBib2FyZDsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb3JtYXRzKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwogICAgIHZvaWQgcmVhZFRleHQoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwogICAgIHZvaWQgcmVhZEZpbGVQYXRo
cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2b2lk
IHJlYWRCdWZmZXIoY29uc3QgY2hhciosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYpOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBjaGFy
KiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJik+JiYpOwogICAgIHZvaWQgd3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKTsK
ICAgICB2b2lkIGNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9DbGlwYm9hcmRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlw
Ym9hcmRHdGszLmNwcAppbmRleCBjMmJmNTE4M2IzMGYxMGU5ZWI3ODEzY2RhZGEyMjNlOTE4OWM3
NDU5Li41OTY2ZDU1NzRjMjgyZjUzMTY5NDA5NjA4Mjk2MGFlMzM5Y2ExMTBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCkBAIC0xMjYsMTUgKzEy
NiwxNSBAQCB2b2lkIENsaXBib2FyZDo6cmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZQogc3RydWN0IFJlYWRCdWZmZXJBc3luY0Rh
dGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGV4cGxpY2l0
IFJlYWRCdWZmZXJBc3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmKT4mJiBoYW5kbGVyKQorICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJBc3lu
Y0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKICAgICAgICAgOiBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKGhhbmRsZXIpKQogICAgIHsKICAgICB9CiAKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKKyAgICBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCi12b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZl
cihjb25zdCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENsaXBib2FyZDo6
cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGd0a19jbGlwYm9hcmRfcmVxdWVzdF9jb250ZW50cyhtX2NsaXBib2FyZCwgZ2Rr
X2F0b21faW50ZXJuKGZvcm1hdCwgVFJVRSksIFtdKEd0a0NsaXBib2FyZCosIEd0a1NlbGVjdGlv
bkRhdGEqIHNlbGVjdGlvbiwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFJlYWRCdWZmZXJBc3luY0RhdGE+IGRhdGEoc3RhdGljX2Nhc3Q8UmVhZEJ1ZmZlckFz
eW5jRGF0YSo+KHVzZXJEYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xp
cGJvYXJkR3RrNC5jcHAKaW5kZXggMDdhYmI3MTMxOTg4NTNiNzg3YzYzMjRiZDQ4MGIxZTA4OGEy
YTNkMy4uNWI4MWZhOGYyOWQzZjdjZjFjM2YwOWQxZmMzYzg4NzM0ZGM1MWEwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcApAQCAtMTIwLDE1ICsx
MjAsMTUgQEAgdm9pZCBDbGlwYm9hcmQ6OnJlYWRGaWxlUGF0aHMoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGUKIHN0cnVjdCBSZWFkQnVmZmVyQXN5bmNE
YXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAKLSAgICBleHBsaWNp
dCBSZWFkQnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKKyAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5
bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpPiYmIGhhbmRsZXIpCiAgICAgICAgIDogY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShoYW5kbGVyKSkKICAgICB7CiAgICAgfQogCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJik+IGNvbXBsZXRpb25IYW5kbGVyOwogfTsKIAotdm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZm
ZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDbGlwYm9hcmQ6
OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBjb25zdCBjaGFyKiBtaW1lVHlwZXNbXSA9IHsgZm9ybWF0LCBudWxscHRyIH07
CiAgICAgZ2RrX2NsaXBib2FyZF9yZWFkX2FzeW5jKG1fY2xpcGJvYXJkLCBtaW1lVHlwZXMsIEdf
UFJJT1JJVFlfREVGQVVMVCwgbnVsbHB0ciwgW10oR09iamVjdCogY2xpcGJvYXJkLCBHQXN5bmNS
ZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKaW5kZXggZDIyMzhmZGM5ZDE2Zjc3Zjhj
M2QzMDJjYTk5NzZmZTgzZjFiM2YzNy4uYWI4N2MyYTdlOGMzNTdhNjViM2NmZTYwNzkzOGZkZmVj
OGE2NTJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsTWFjLmgKQEAgLTEwMCw4ICsxMDAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZXhlY3V0ZVVu
ZG9SZWRvKFVuZG9PclJlZG8pIG92ZXJyaWRlOwogICAgIGJvb2wgZXhlY3V0ZVNhdmVkQ29tbWFu
ZEJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3Rvcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
dGFydERyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0mLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSYgaW1hZ2UpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBl
eHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsCi0gICAgICAgIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYgYXJjaGl2ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVm
ZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29u
c3QgU3RyaW5nJiB0aXRsZSwKKyAgICAgICAgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YXJjaGl2ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSBvdmVycmlkZTsK
ICAgICB2b2lkIHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJl
c2V0U2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5SW5wdXRDb250
ZXh0QWJvdXREaXNjYXJkZWRDb21wb3NpdGlvbigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IGE0MTEyMTM1ZjJl
ZjE5MDE1YTUyZjFlMWIwM2FlMzBhMWYyMjNkMmEuLmMzNjNlOTU1ZTg3OWMwZTE4NmI0MTUwOTA5
MTMzNjVjMjBmZTkwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMubW0KQEAgLTQwMCw3ICs0MDAsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBs
OjpzdGFydERyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0mIGl0ZW0sIGNvbnN0IFNoYXJlYWJs
ZUJpdAogICAgIG1faW1wbC0+c3RhcnREcmFnKGl0ZW0sIGltYWdlKTsKIH0KIAotdm9pZCBQYWdl
Q2xpZW50SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQor
dm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZm
ZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25z
dCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxl
VVJMLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25z
dCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCiB7CiAgICAgYXV0byBpbWFnZSA9IEJpdG1hcElt
YWdlOjpjcmVhdGUoKTsKICAgICBpbWFnZS0+c2V0RGF0YShXVEZNb3ZlKGltYWdlQnVmZmVyKSwg
dHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bQppbmRleCBlMDNlMDgwYWVlMDgzODBiNDZmZmU4OWRkOGU2MWI2NmI1OThkYjQ2Li4wMWQ4NDBh
MmE2M2VhYzc5MWZiZDg0ZmJlNjM3YjViMjhjZjYxMzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUwogICAgICAgICByZXR1cm47CiAgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IHNoYXJlZE1lbW9yeUltYWdlLT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1hZ2VIYW5kbGUuZGF0
YVNpemUpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKICAgICBpZiAoIWFy
Y2hpdmVIYW5kbGUuaGFuZGxlLmlzTnVsbCgpKSB7CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5
QXJjaGl2ZSA9IFNoYXJlZE1lbW9yeTo6bWFwKGFyY2hpdmVIYW5kbGUuaGFuZGxlLCBTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnlB
cmNoaXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE0uY3BwCmluZGV4IGZhOTQwMjVlZDc0NzMwZDI4ZTcxNjQ2Mjg1ZjllNWJhNjUzYjhmMTIuLmMy
OGZlNjVmMGNmMTY0Mzk5ODE4YWNhMzJmOTgxY2M3NzhmMWU5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKQEAgLTg0LDcgKzg0LDcg
QEAgYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihj
b25zdCBDRE1TZXNzaW9uVHlwZSYsIGNvbnMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wg
UmVtb3RlQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgZGF0YSkgY29uc3QKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjaGVjayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBp
bnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlcXVlc3RMaWNlbnNlKCkuCiAg
ICAgcmV0dXJuIHRydWU7CkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBSZW1vdGVDRE06OmxvYWRB
bmRJbml0aWFsaXplKCkKICAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpMb2FkQW5kSW5pdGlhbGl6
ZSgpLCBtX2lkZW50aWZpZXIpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBSZW1vdGVDRE06
OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1Jl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2Uo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgLy8g
VGhpcyBjaGVjayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBpbnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHk6OnVwZGF0ZUxpY2Vuc2UoKS4KICAgICByZXR1cm4gcmVzcG9uc2UuY29weSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKaW5k
ZXggMGFkZGY4MzM1M2I2ZWExYjJlOGIwMmM2YjdlZTNkYWY0NjhjZDM4My4uOGM0NTRlYjgzZTU5
OTRhOGU0ZDU5MmQ1MWRmOTFmZjliNTIzY2JlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCkBAIC00OCwxMyArNDgsMTMgQEAgcHJpdmF0ZToK
ICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3Vy
YXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAg
ICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3Jl
OjpDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0
cmluZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJv
b2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNvcmU6OkNETVJlcXVp
cmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25z
JikgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0
YXRlUmVxdWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYs
IGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wg
ZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25z
dCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CiAgICAg
UmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlPiBjcmVhdGVJbnN0YW5jZSgpIGZpbmFsOwogICAg
IHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
IGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9u
SWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKICAgICBWZWN0b3I8QXRvbVN0cmluZz4g
c3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJh
dGlvbi5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCmluZGV4IGI1ZGVh
MjFlOTk1YTczN2YwMzZmNjQ1MzhjMWZiM2VjYjVlNmJiNTUuLmExM2U1MTQ2MGY2YmI5ZjgwZWYz
ZDFhODQyZWZjMGI5ZjQ0NTkwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCkBAIC03OCw3ICs3OCw3IEBA
IHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25z
dCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1DCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNE
TUluc3RhbmNlUHJveHk6OkluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9u
LCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBwZXJzaXN0ZW50U3RhdGUpLCBXVEZNb3ZlKGNhbGxi
YWNrKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U2Vy
dmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwg
U3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlOjpzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBj
ZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2Zh
Y3RvcnkpIHsKICAgICAgICAgY2FsbGJhY2soRmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaAppbmRleCAxMDZi
YTNiMTE2MWM4ZGYwOWQ3MWRmZTY3OWJhMzNkNDIzMDc5ZTk2Li4yYzc4NTFlNDQwYjA4YTUyYTJh
ZTcwZGE3ZTQxODg4MmUzYzYxNDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCkBAIC01NCw3ICs1NCw3IEBAIHBy
aXZhdGU6CiAKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpSZW1vdGU7IH0KICAgICB2b2lk
IGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3Rl
bnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYp
IGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lk
IHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24ua2V5
U3lzdGVtOyB9CiAgICAgUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRl
U2Vzc2lvbigpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCmluZGV4IGFmMGJh
ZDRjOTBkOGRkNTEzNzc0YWVmNmExNWI3N2JhODlmYzUwNjQuLmM3NDBjMDQ1MDZmZGVkYWM5ZjRj
ZjUwMmMyMDVhOGEzN2ZjYTQ1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKQEAg
LTQ5LDcgKzQ5LDcgQEAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb24oV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGYKIHsKIH0KIAotdm9pZCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0
YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGlj
ZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsKICAgICAg
ICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2Us
IEZhaWxlZCk7CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nCiAgICAg
fSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxi
YWNrKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
ICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKQEAgLTEwOSw3ICsxMDks
NyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2VucwogICAgIH0KIAogICAgIG1fZmFjdG9yeS0+Z3B1
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVtb3ZlU2Vzc2lvbkRhdGEoc2Vz
c2lvbklkLCB0eXBlKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChLZXlTdGF0dXNW
ZWN0b3ImJiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+
JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgewotICAgICAgICBzdGQ6Om9wdGlv
bmFsPFJlZjxTaGFyZWRCdWZmZXI+PiByZWFsTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdl
ID0gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAobWVzc2FnZSAmJiBtZXNzYWdlLnZhbHVlKCku
YnVmZmVyKCkpCiAgICAgICAgICAgICByZWFsTWVzc2FnZSA9IG1lc3NhZ2UudmFsdWUoKS5idWZm
ZXIoKS5yZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRL
ZXlzKSwgV1RGTW92ZShyZWFsTWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxl
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaAppbmRleCA0ZmZlNGNhY2VjY2RlNDNkNWNiMTFl
MjM2Y2EwNDVhY2RhODNhN2ViLi40ZTRjZDJjMDA1YzZiMDA2NWY5Y2RiMTg4YzRiY2UwYjViZmE2
NjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTU5LDggKzU5LDggQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uQ2xpZW50PiYmIGNsaWVudCkgZmluYWwgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsg
fQogICAgIHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0cjsgfQot
ICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5z
ZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVz
cG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJh
Y2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBMaWNlbnNlVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
cmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRT
ZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5n
JiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNl
c3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZp
bmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkYuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkYuY3BwCmluZGV4IDlhMjE5YTU0NGU1NTM4M2Y1NGU3MWRhYmQzNTRjYzQ0MGE0
MTQyYjkuLjYyOTI2Nzk4YzVjMTEzMjRhMzFhYTUwY2RhN2VkMWZiZjc0ZmU3MDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRi5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVj
b2RlckFWRjo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50
U2l6ZQogCiAvLyBJZiBhbGxEYXRhUmVjZWl2ZWQgaXMgdHJ1ZSwgdGhlIGNhbGxlciBleHBlY3Rz
IGVuY29kZWREYXRhU3RhdHVzKCkgdG8gYmUgPj0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFp
bGFibGUKIC8vIGFmdGVyIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAoaW4gdGhlIHNhbWUgcnVuIGxv
b3ApLgotdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpz
ZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogewogICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkYuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGLmgKaW5kZXggZTVjZmU5NGVjZDNhOWMwNjAwZmMwMDMyMGZmNDMwNjFj
OTBlZDY5Yi4uNDBkMzczNGY3YTMyMmU4YmFjYjlkMWMwZGVhNzA3OWUyYWQxN2VhYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRi5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFJlbW90ZUltYWdlRGVjb2Rl
ckFWRiBmaW5hbAogICAgIDogcHVibGljIFdlYkNvcmU6OkltYWdlRGVjb2RlcgogICAgICwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGUoUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGTWFuYWdlciYgbWFuYWdlciwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRp
ZmllciYgaWRlbnRpZmllciwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlKFJl
bW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXImIG1hbmFnZXIsIGNvbnN0IFdlYkNvcmU6OkltYWdl
RGVjb2RlcklkZW50aWZpZXImIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGKG1hbmFnZXIsIGlkZW50aWZpZXIsIG1p
bWVUeXBlKSk7CiAgICAgfQpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6
UGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFdlYkNvcmU6
OlN1YnNhbXBsaW5nTGV2ZWwgPSBXZWJDb3JlOjpTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBj
b25zdCBXZWJDb3JlOjpEZWNvZGluZ09wdGlvbnMmID0gV2ViQ29yZTo6RGVjb2RpbmdPcHRpb25z
KFdlYkNvcmU6OkRlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQg
c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwotICAgIHZvaWQgc2V0RGF0
YShXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7Cisg
ICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNsZWFyRnJh
bWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZN
YW5hZ2VyLmNwcAppbmRleCA0MWQ1Mzg4MDIzZDM5MTQ5NTIxODM1ZjY4OGRlNGQ0OGY2NWQ3Njdl
Li4wODJiMzM2NmM4YmM3MTMwZDc1ZDU2OThhN2Q3OWU2ODkyYWQ4ZjczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWZQdHI8UmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGPiBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29k
ZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlv
biBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCitSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBSZW1vdGVJbWFnZURl
Y29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQog
ewogICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4gaW1hZ2VEZWNvZGVy
SWRlbnRpZmllcjsKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVy
ZW5jZSB7IGRhdGEgfTsKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2Rl
ckFWRk1hbmFnZXI6OnNldFVzZUdQVVByb2Nlc3MoYm9vbCB1c2VHUFVQcm9jZXNzKQogICAgIElt
YWdlRGVjb2Rlcjo6aW5zdGFsbEZhY3RvcnkoewogICAgICAgICBSZW1vdGVJbWFnZURlY29kZXJB
VkY6OnN1cHBvcnRzTWVkaWFUeXBlLAogICAgICAgICBSZW1vdGVJbWFnZURlY29kZXJBVkY6OmNh
bkRlY29kZVR5cGUsCi0gICAgICAgIFt0aGlzXShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikgeworICAgICAgICBbdGhpc10o
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxw
aGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKSB7CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW1hZ2VEZWNv
ZGVyKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pOwogICAgICAgICB9CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5o
CmluZGV4IGMyMzc4MmI2NTA0ZWM3OWJlNDZlMTI2ZjRlNTkxYjNmZjdmNmRiYTguLjM2MThhZmQx
MjA5OGI1NTc2YjRkZDRmZmJmM2MwNmZiYTg0MmE3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGTWFuYWdlci5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBHUFVQcm9jZXNzQ29u
bmVjdGlvbiYgZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAogcHJpdmF0ZToKLSAgICBS
ZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGVJbWFnZURlY29kZXIoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpBbHBo
YU9wdGlvbiwgV2ViQ29yZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIFJlZlB0
cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZUltYWdlRGVjb2RlcihXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3Jl
OjpBbHBoYU9wdGlvbiwgV2ViQ29yZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAg
ICAgLy8gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudC4KICAgICB2b2lkIGdwdVByb2Nlc3ND
b25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDk2NmZjOTNiNzdhZmFhM2U2MjA4ZDdhYmE1YWVk
MmM3YTk0Yzc0YjIuLjAwNWEzN2NjMjZlYzRjMDkwMWJmNGYzNzEyMjM4NjVkZTJkMTY2YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtNzgsNyArNzgsNyBAQCBTb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlOjp+U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZSgpCiAgICAgbV9n
cHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1fcmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0K
IAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjphcHBlbmQoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKaW5k
ZXggMzYwMTc1YmZiZTlkMWFmODNlZDU3OTEzNzNiNzc1ZWU3NTBhYzdjYy4uZWE1ZmEzZWMzNmMy
Yjg1OWVlNTc4Y2NkMGUwMzQ4YzczY2I4NmQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZh
dGUgb3ZlcnJpZGVzCiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCkgZmluYWw7Ci0gICAgdm9pZCBh
cHBlbmQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBhcHBl
bmQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZv
aWQgYWJvcnQoKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAg
ICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRl
LmNwcAppbmRleCAxMWI0YTg2ZTQ4NTJmNmMyMDYxZmEzZmM5YWYyOWY4ODk5ZjRlYjlmLi5iNDA4
OWZkMzU0OGM5N2YxN2ZjMmI5ZmIwMDI3ODBkNjQzY2YyM2JkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZh
dGUuY3BwCkBAIC0xNjUsMTAgKzE2NSwxMCBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpz
dG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqIHN0b3JhZ2UsIGNvbnN0IFdlYkNvcmU6OgogICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6QXVkaW9T
YW1wbGVzU3RvcmFnZUNoYW5nZWQgeyBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUo
aGFuZGxlKSwgZGF0YVNpemUgfSwgZm9ybWF0LCBmcmFtZUNvdW50IH0sIG1faWRlbnRpZmllcik7
CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OmZldGNoRGF0YShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91
YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6RmV0Y2hEYXRhIHsgfSwg
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1pbWVUeXBl
ID0gbWltZVR5cGUoKV0oYXV0byYmIGRhdGEsIGRvdWJsZSB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKGRhdGEuc2l6ZSgpKQogICAg
ICAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpLCBtaW1l
VHlwZSwgdGltZUNvZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKaW5kZXggMzAzYTU0Zjc2ZjE4NWU5
NjQ1NGVmOWY1YmI0NjFmMjhlMTI2Nzg2ZC4uNTc2ZmQxYzZlOTdjMGNhZDhjYmZlYzk0ZTNiZDM2
MzMwNzZlNDRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGUKICAgICB2
b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiwgV2ViQ29yZTo6
VmlkZW9TYW1wbGVNZXRhZGF0YSkgZmluYWw7Ci0gICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGZldGNoRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmKSBmaW5hbDsKICAgICB2b2lk
IHN0b3BSZWNvcmRpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2
b2lkIHN0YXJ0UmVjb3JkaW5nKFN0YXJ0UmVjb3JkaW5nQ2FsbGJhY2smJikgZmluYWw7CiAgICAg
dm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBjb25zdCBX
ZWJDb3JlOjpQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3Rl
ZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDA2NzNmNzRkZGZiNDhlNWJkZjQzOGNkOTBiZTM3
OTRlZWUyMDkxYmIuLjAzNTNhYWJmN2Q0YjkyNWFhMmYxNTYyZDU3M2FhZjMwOTNjODNiYzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJ
SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKQEAg
LTMxLDkgKzMxLDkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVu
dDsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRp
ZXM7CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAppbmRleCBhMDYzNTIwNDMzNWIzYWIwZTZk
ZmIwYzY3Nzc2N2Y0MjhlOGE3N2UyLi4xODBiMTExMWVjZjAxMTMyODA5MjY2YTFiY2UyN2QyNjBl
NGZhMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgRE9NV2luZG93RXh0ZW5zaW9u
OwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTYsNyArNTYsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+UGFnZUxvYWRlckNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHZp
cnR1YWwgdm9pZCB3aWxsTG9hZFVSTFJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgQVBJOjpPYmplY3QqKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpVUkwmLCBBUEk6Ok9iamVjdCopIHsg
fQorICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3Qg
V1RGOjpVUkwmLCBBUEk6Ok9iamVjdCopIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFt
ZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdl
JiwgV2ViS2l0OjpXZWJGcmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOGQ1MjRiNTI1
YzZlN2EwY2M2YmRlNWU4MGE0N2MxNzFlMzQxNDY4Yy4uOTRmZWQyZTdlMzYzMDI5MWY5OWY1Mzc4
YWNiZGQyYzM5NTBkM2U2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5jcHAKQEAgLTYyLDE4ICs2MiwxOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudDo6d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJl
cwogc3RhdGljIHZvaWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFyKiwgY29uc3Qg
dm9pZCogZGF0YSkKIHsKICAgICAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoKS4KLSAgICBzdGF0aWNfY2Fz
dDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CisgICAg
c3RhdGljX2Nhc3Q8Y29uc3QgU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CiB9CiAKLXZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdl
YlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2hhcmVkQnVmZmVy
KiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5j
b2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRh
dGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVx
dWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwg
Y29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50LndpbGxMb2FkRGF0YVJl
cXVlc3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxBUEk6OkRhdGE+IGRhdGE7CiAg
ICAgaWYgKHNoYXJlZEJ1ZmZlcikgewotICAgICAgICBzaGFyZWRCdWZmZXItPnJlZigpOwotICAg
ICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5zaWdu
ZWQgY2hhciopc2hhcmVkQnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCByZWxl
YXNlU2hhcmVkQnVmZmVyLCBzaGFyZWRCdWZmZXIpOworICAgICAgICBhdXRvIGNvbnRpZ3VvdXNC
dWZmZXIgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnRpZ3Vv
dXNCdWZmZXItPnJlZigpOworICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0
Q29weWluZyhjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGNvbnRpZ3VvdXNCdWZmZXItPnNpemUo
KSwgcmVsZWFzZVNoYXJlZEJ1ZmZlciwgY29udGlndW91c0J1ZmZlci5wdHIoKSk7CiAgICAgfQog
CiAgICAgbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKHJl
cXVlc3QpLCB0b0FQSShkYXRhLmdldCgpKSwgdG9BUEkoTUlNRVR5cGUuaW1wbCgpKSwgdG9BUEko
ZW5jb2RpbmdOYW1lLmltcGwoKSksIHRvVVJMUmVmKHVucmVhY2hhYmxlVVJMLnN0cmluZygpLmlt
cGwoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAppbmRleCAzNmJkOTgwYjJm
YWExYWY0NWFjMzEwNmViMDFlOWYzNzZiYTEzYWNmLi44NjNiZGFiNjI4NGNhM2FhZDJmOWQ1ZmZm
NWZkNjhlYWI4YjJiNzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQoY29uc3QgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50QmFz
ZSopOwogCiAgICAgdm9pZCB3aWxsTG9hZFVSTFJlcXVlc3QoV2ViUGFnZSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3
aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgY29uc3QgVVJMJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKKyAgICB2b2lk
IHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgVVJMJiwgQVBJOjpPYmplY3QqKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlJiwg
V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlJiwg
V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVs
UGxheWVyTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElu
bGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQppbmRleCBlNTI0ZDhlMWIwMTdhYThlNWUwM2I4
OTJkOTJiNzU4OTRjNThmMzc0Li5hNzg0ZWMzODhiMjI1MjRjYzBkYTYzMjc4ZTVlNzU5MTM3ZGNm
NjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KQEAgLTEw
Niw3ICsxMDYsNyBAQCB2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVh
dGVGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBpZiAoZmlsZSA8PSAwKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2Rl
bFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAg
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogICAgIG1fZmlsZVBhdGggPSBmaWxlUGF0aDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDk0ZDlkMmNjM2ViMjg4MGNkY2YyMmMwNzJh
MzlhOTg5NTVmZDQ0MzAuLjAyMjcwYTUzYWY5YmE4YmY4MGQ3YzNiM2RjZGM4Y2ViNTY1MTc2ZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjgxLDkgKzI4MSw5IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm47CiAgICAg
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJl
ZEJ1ZmZlcigpOworICAgIGF1dG8gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZl
cigpOwogICAgIGlmICghYnVmZmVyKSB7Ci0gICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNy
ZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291
cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGZy
b20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMiLCByZXF1ZXN0
LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggMjU5NDQ5NDIzODU1ZmVkM2FhYWFiNDE0ODE5Zjg5NTFhM2I4Yjdm
Zi4uMzEwZmNhNzg3NWMzMmMzY2Q3NDc4ZGI2NGY1OWFjMmNmNTAxNjM5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vCiAgICAgaWYgKElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UobV9j
b3JlTG9hZGVyLT5mcmFtZSgpLCByZXNwb25zZSkpIHsKICAgICAgICAgYXV0byBpbnRlcmNlcHRl
ZFJlcXVlc3RJZGVudGlmaWVyID0gbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCk7CiAgICAgICAg
IG1faW50ZXJjZXB0Q29udHJvbGxlci5iZWdpbkludGVyY2VwdGluZ1Jlc3BvbnNlKGludGVyY2Vw
dGVkUmVxdWVzdElkZW50aWZpZXIpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25X
ZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJhbWUoKSwgcmVzcG9uc2Us
IGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgcG9saWN5RGVjaXNpb25D
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxl
cildKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGluc3BlY3RvclJlc3BvbnNlLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBvdmVycmlkZURhdGEpIG11dGFibGUgeworICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJhbWUo
KSwgcmVzcG9uc2UsIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgcG9s
aWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUocG9saWN5RGVjaXNpb25Db21w
bGV0aW9uSGFuZGxlcildKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGluc3BlY3RvclJlc3BvbnNl
LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmlkZW50aWZp
ZXIoKSkgewogICAgICAgICAgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJk
aWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBjb250aW51aW5nIGludGVyY2VwdCBsb2FkIGJlY2F1c2Ug
bm8gY29yZUxvYWRlciBvciBubyBJRCIpOwogICAgICAgICAgICAgICAgIG1faW50ZXJjZXB0Q29u
dHJvbGxlci5jb250aW51ZVJlc3BvbnNlKGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIpOwpA
QCAtMjk1LDExICsyOTUsMTEgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c291cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmQKICAgICBMT0coTmV0
d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNl
IGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkp
OwogICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzb3VyY2U6
Iik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcElu
U2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIGlmICghYnVmZmVyKSB7
CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIgZnJvbSBTaGFyZWFi
bGVSZXNvdXJjZSBzZW50IGZyb20gdGhlIG5ldHdvcmsgcHJvY2Vzcy4iKTsKLSAgICAgICAgV0VC
UkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZTogVW5hYmxlIHRv
IGNyZWF0ZSBTaGFyZWRCdWZmZXIiKTsKKyAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFT
RV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZTogVW5hYmxlIHRvIGNyZWF0ZSBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyIik7CiAgICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IG1fY29yZUxvYWRlci0+ZnJh
bWUoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQogICAg
ICAgICAgICAgICAgIHBhZ2UtPmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3Rp
Y01lc3NhZ2UoV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnRlcm5hbEVycm9yS2V5
KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6Y3JlYXRlU2hhcmVkQnVmZmVyRmFp
bGVkS2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4IDQyZGU0NjE0MTk3Nzhi
N2M0NTBmY2ExZWIwMzdjMWNlOTdkMmQ2MzEuLmE3ZjQ1Yzg0MDFiMmZkMmY4NzBlMzY3OGM1OGZj
MzEwYzJlMWYyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLmgKQEAgLTIwNyw3ICsyMDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJp
dmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wpIGZpbmFsIHsgfQogICAgIGJvb2wgZ2V0Rm9y
bVZhbHVlKFN0cmluZyYgZm9ybVZhbHVlKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJv
b2wgaGFuZGxlU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xs
R3JhbnVsYXJpdHkpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxp
dmVSZXNvdXJjZURhdGEoKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IGZpbmFsOwogICAgIHZv
aWQgd2lsbERldGFjaFJlbmRlcmVyKCkgZmluYWw7CiAgICAgYm9vbCBwbHVnaW5IYW5kbGVzQ29u
dGVudE9mZnNldEZvckFjY2Vzc2liaWxpdHlIaXRUZXN0KCkgY29uc3QgZmluYWw7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpp
bmRleCBkMjNhYmI5ZTY1MTFiMTNiYmQ1MjNhZjQ1MWY0NDE3ODczYTZjMWUwLi5kNDdmMzJiN2Q0
OTE5NTZiZGNlNzdiZmU2ZjE1Y2E3ODY1YmZkMTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTI1NTIsNyArMjU1Miw3IEBA
IHZvaWQgUERGUGx1Z2luOjpub3RpZnlEaXNwbGF5TW9kZUNoYW5nZWQoaW50KQogICAgIHVwZGF0
ZVNjcm9sbGJhcnMoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUERGUGx1Z2luOjpsaXZl
UmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQREZQ
bHVnaW46OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIE5TRGF0YSAqcGRmRGF0YSA9
IGxpdmVEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgK
aW5kZXggODhmNDVjZTUxY2UzMWRmMGM1YjNiNzU4NjIzNmMzZjBkOWM5M2FkMy4uNThkNzBhMzlh
MTZkNmE0YzBlOGIwY2E5ZDAzYWMzZDM3YWVkZmNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTYxLDcgKzYxLDcgQEAgY2xhc3MgSW50UG9pbnQ7CiBj
bGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFNjcm9sbGJhcjsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtMjg4LDcgKzI4OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6SW50UG9pbnQgY29udmVydFRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHBvaW50SW5Mb2NhbENvb3JkaW5hdGVzKSBjb25zdDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsaXZlUmVzb3Vy
Y2VEYXRhKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1EaWN0aW9uYXJ5
TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgPSAwOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGQ1
NGYyN2YwNzA5MTQ3ZTllZGVjMDZkZTU4YzFlOGNjMTIzMWE2NzcuLjdmYjIwYzU5MmRiZmEwOTZl
MzhiYzE2ODcwMzczOGNiOGY0MDdjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0yODksNiArMjg5LDcgQEAgUGx1Z2luVmlldzo6
UGx1Z2luVmlldyhIVE1MUGx1Z0luRWxlbWVudCYgcGx1Z2luRWxlbWVudCwgUmVmPFBsdWdpbj4m
JiBwbHVnaW4sIGMKICAgICAsIG1fd2ViUGFnZSh3ZWJQYWdlKG1fcGx1Z2luRWxlbWVudC5nZXQo
KSkpCiAgICAgLCBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKICAgICAsIG1fcGVuZGluZ1VSTFJl
cXVlc3RzVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUGx1Z2luVmlldzo6cGVuZGluZ1VS
TFJlcXVlc3RzVGltZXJGaXJlZCkKKyAgICAsIG1fbWFudWFsU3RyZWFtRGF0YShtYWtlVW5pcXVl
UmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiAgICAgbV93ZWJQYWdlLT5hZGRQbHVnaW5W
aWV3KHRoaXMpOwogfQpAQCAtNDAzLDkgKzQwNCw2IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFs
TG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAg
ICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1fbWFudWFsU3RyZWFt
U3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9uc2UpOwotICAgICAg
ICBpZiAoIW1fbWFudWFsU3RyZWFtRGF0YSkKLSAgICAgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRh
LT5hcHBlbmQoYnl0ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00Mzcs
NyArNDM1LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBt
X21hbnVhbFN0cmVhbVN0YXRlID0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkOwogICAgICAg
ICBtX21hbnVhbFN0cmVhbUVycm9yID0gZXJyb3I7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0
YSA9IG51bGxwdHI7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS0+cmVzZXQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTI2LDExICs5MjQsMTEgQEAgdm9pZCBQbHVnaW5WaWV3
Ojp3aWxsRGV0YWNoUmVuZGVyZXIoKQogICAgIG1fcGx1Z2luLT53aWxsRGV0YWNoUmVuZGVyZXIo
KTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0
YSgpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2
ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1f
cGx1Z2luKSB7Ci0gICAgICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEgJiYgbV9tYW51YWxTdHJl
YW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCi0gICAgICAgICAgICByZXR1
cm4gbV9tYW51YWxTdHJlYW1EYXRhOworICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9
PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCisgICAgICAgICAgICByZXR1cm4gbV9tYW51
YWxTdHJlYW1EYXRhLT5nZXQoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBA
IC0xMjQyLDEwICsxMjQwLDEwIEBAIHZvaWQgUGx1Z2luVmlldzo6cmVkZWxpdmVyTWFudWFsU3Ry
ZWFtKCkKICAgICBtYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKG1fbWFudWFsU3RyZWFtUmVz
cG9uc2UpOwogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KLSAgICBpZiAobV9tYW51YWxTdHJl
YW1EYXRhKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICptX21hbnVhbFN0
cmVhbURhdGEpCisgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEtPmlzTnVsbCgpKSB7CisgICAg
ICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLT50YWtlKCk7CisgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGJ1ZmZlci5nZXQoKSkKICAgICAgICAgICAgIG1hbnVh
bExvYWREaWRSZWNlaXZlRGF0YShlbGVtZW50LnNlZ21lbnQtPmRhdGEoKSwgZWxlbWVudC5zZWdt
ZW50LT5zaXplKCkpOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEgPSBudWxscHRyOwogICAg
IH0KIAogICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpG
aW5pc2hlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
aAppbmRleCAyMTI2ZWI4ZWRiNTU5Mzg2YjM0MjI1ZWIyYmQ1YmZjZDY4MDIzZjIzLi5kMTUzYTI5
Y2ExNGE5MGUzMjI3YTg5MWUzZWVmNWU0ZTc5NzM1MWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVk
ZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29w
Lmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAvLyBGSVhNRTogRXZlbnR1YWxseSB0
aGlzIHNob3VsZCBtb3ZlIHRvIFdlYkNvcmUuCiAKQEAgLTExNSw3ICsxMTYsNyBAQCBwdWJsaWM6
CiAKICAgICBib29sIHNob3VsZEFsbG93U2NyaXB0aW5nKCk7CiAKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Q7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdDsK
ICAgICBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50Jik7CiAgICAgU3RyaW5nIGdldFNlbGVjdGlvbkZvcldvcmRBdFBvaW50KGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBjb25zdDsKICAgICBib29sIGV4aXN0aW5nU2VsZWN0
aW9uQ29udGFpbnNQb2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgY29uc3Q7CkBAIC0y
NTIsNyArMjUzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
bV9tYW51YWxTdHJlYW1SZXNwb25zZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIG1fbWFu
dWFsU3RyZWFtRXJyb3I7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9tYW51
YWxTdHJlYW1EYXRhOworICAgIFVuaXF1ZVJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
PiBtX21hbnVhbFN0cmVhbURhdGE7CiAKICAgICAvLyBUaGlzIHNuYXBzaG90IGlzIHVzZWQgdG8g
YXZvaWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0aGUgcGx1Z2luIHJ1biBKUyBkdXJpbmcgcGFpbnRp
bmcuCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV90cmFuc2llbnRQYWludGluZ1NuYXBz
aG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBmZWU4ZmVh
N2JjYzhkNTljMDdlM2M1YmE0ZDYwOTU1MmE0ZDYyOGJmLi5iMDRjY2NmMTEzZTQ5MjhmYTY2Mzgz
YmQyNDMxZGI4NzQ4NTNjY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
LmNwcApAQCAtNzEsMTYgKzcxLDE1IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmCiAgICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNl
aXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
TWVzc2FnZSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRh
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fY29u
bmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2FpdGluZ0ZvckNvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkgewotICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKSkKLSAgICAgICAgICAg
IG1fcmVzcG9uc2VEYXRhID0gYnVmZmVyLT5jb3B5KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSktPmFwcGVuZChX
VEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U2hh
cmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpKQorICAgICAgICAgICAgbV9yZXNwb25z
ZURhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCk7CisgICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1
ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA2LDggKzIwNSw4IEBAIHZvaWQgV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAg
IHN3aXRjaE9uKG1fcmVzcG9uc2VEYXRhLCBbdGhpc10oc3RkOjpudWxscHRyX3QmKSB7CiAgICAg
ICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwotICAgIH0sIFt0
aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRh
KFdURk1vdmUoYnVmZmVyKSk7CisgICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJlZEJ1ZmZlckJ1aWxk
ZXImIGJ1ZmZlcikgeworICAgICAgICBkaWRSZWNlaXZlRGF0YSgqYnVmZmVyLmdldCgpKTsKICAg
ICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAgICAgfSwg
W3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmgKaW5kZXggYjM0N2NhZDJhYjVmNTcxYjFhMGUyMDcyMDgwNDM2N2Q3NzAxODYw
MC4uNmIwYTQxN2NmMGQzYWUwZDdiODkzYTk5ODY4M2FiZjJiYzRhNGQ5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvRmV0Y2hMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3Jr
ZXJGZXRjaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDksNyArNTAsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
IGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mJikgZmluYWw7
CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsK
ICAgICB2b2lkIGRpZEZpbmlzaCgpIGZpbmFsOwpAQCAtODIsNyArODMsNyBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogICAgIGJvb2wgbV9u
ZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9
OwotICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4sIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CisgICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90
LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyLCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBV
bmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOwogICAgIGJv
b2wgbV9kaWRGaW5pc2ggeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRl
eCA4MWUzNzllMzNkMWE5YWNkYzg2ZWY1YzRiZTIxYTcyNjBkOTRkNDhlLi43Y2ZjMDNhODVkMzlk
ODFmMzkyYzBhYTEzMGY4M2ZiZDJjODM0ZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAt
MTQyLDcgKzE0Miw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRBcHBseVN0eWxlKGNv
bnN0IFN0eWxlUHJvcGVydGllcyYgc3R5bGUsIGNvbnN0IHN0ZDo6CiAKICNpZiBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJBdHRhY2ht
ZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgZGF0YSkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6UmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGlkZW50aWZpZXIsIGNvbnRl
bnRUeXBlLCBwcmVmZXJyZWRGaWxlTmFtZSwgZGF0YS5nZXQoKSkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCmluZGV4IDUwNmQ5ZjU0MTM4ZDM3Y2I0YzY0ZWQ0NjBmNTlhNWMyOGZlNTIyYTYuLmIwNTg2
MTg5MWVjYzg0YzYzNjhhMjA2YzI3MDEwNjBmNTA1MmY1ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
QEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZE1vdmVSYW5nZUFmdGVy
RGVsZXRlKGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwgY29uc3QgV2ViQ29yZTo6U2ltcGxl
UmFuZ2UmKSBmaW5hbDsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgdm9p
ZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50
SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihj
b25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9y
PFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJikgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YmRiYmNjZDNmYmM2MjBlMDc1NDEwNWNlYTA5ZWRk
ZjA1MTIwYjZiLi4xNGEwODNjYTIwN2E5MDYzY2Y4MGIxZTdlOTY3MGE0ODdjZjRkMzk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExODgsOCArMTE4OCw4IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9h
ZGVyKQogICAgICAgICAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxv
YWRlci0+bWFpblJlc291cmNlRGF0YSgpOwotICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNl
IGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPmRhdGEo
KSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkg
OiAwKTsKKyAgICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVz
b3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgICAgICAgICBJUEM6
OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291
cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNl
RGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOwogICAgICAgICAgICAgd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1
c3RvbUNvbnRlbnRQcm92aWRlcihsb2FkZXItPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUo
KSwgZGF0YVJlZmVyZW5jZSkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAKaW5kZXggZjQxYTcwZWY1YmI2YzBlY2U4YmQ4NjI3NDExNjAxY2Y3MzBlNjJhMS4u
NGE4YmVlNTdmZGIxZmZjZGVmMDA4OWZhNjVlOTc1Mzc1MGQyNTBlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQ2NF90IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgYwogICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAotaW50NjRfdCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1v
cnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGUyODA5OTYzZjRmNTA2ODFiN2QwMWY0
MWE2ODUzMWFiNzMyMTRmYjAuLjFmZjgzZTExYmMxNzg5YWFjMGY5MDBjOTNkYzIyZmJmMjM5ZWEy
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHJp
dmF0ZToKIAogICAgIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAg
aW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRC
dWZmZXJGb3JUeXBlKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VVJM
KGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGlu
dDY0X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJl
dmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggMDdiMTY3ZTBlZWVlNzY4ODc1YjAzOWRmYTU5ZjVm
ZDEzYzc1NGUxMC4uZDQxNTkwNGM3MWIxYzBjNzJhM2UxN2NmN2IzNDUyMGFhMjc5MDM2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00NSwxMyArNDUs
MTMgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVudChjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKICAgICA6IG1fZmlsZU5hbWUgeyBmaWxlTmFt
ZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAgICAgLCBtX3BhZ2VJRCB7IHBhZ2VJRCB9Ci0gICAg
LCBtX2J1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9idWZmZXIgeyBt
YWtlVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkgfQogewogfQogCiBXZWJQcmV2aWV3
TG9hZGVyQ2xpZW50Ojp+V2ViUHJldmlld0xvYWRlckNsaWVudCgpID0gZGVmYXVsdDsKIAotdm9p
ZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQordm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQnVm
ZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIHdl
YlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1fcGFnZUlEKTsKICAgICBp
ZiAoIXdlYlBhZ2UpCkBAIC02OSwxMyArNjksMTIgQEAgdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50OjpkaWRGaW5pc2hMb2FkaW5nKCkKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkZyYW1lKG1fYnVmZmVyLmdldCgpKTsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICB3ZWJQ
YWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2J1ZmZl
ci0+dGFrZSgpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRG
YWlsKCkKIHsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICBtX2J1ZmZlci0+cmVzZXQoKTsK
IH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFzc3dvcmQoRnVu
Y3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMDQ5MmNlZWMyZjliOWNkODUzODM4
NDg0ZmJjMjZjMDdjYjUzZGE4Ny4uY2MzYjI0YjcyOWIyMThiODBkMzdhMTJjZDdmYWMzZGZhOWJl
ZDFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTI5LDgg
KzI5LDEzIEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworfQorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgV2ViRnJhbWU7CkBAIC00NSw3ICs1MCw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUs
IGNvbnN0IFN0cmluZyYgdXRpLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRGYWlsKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Bhc3N3b3Jk
RW50cnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC01NCw3ICs1OSw3IEBA
IHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5n
IG1fdXRpOwogICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwotICAg
IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFVuaXF1ZVJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IGE2NGM2YThiM2M2OTVl
MTczMzY0MzM2YmNiMGY2OGRiZGQ5YzJkMjEuLmUxZTBlNjExMmEyZGVkYzNiOGJiNjMwOTg1MzUz
NzZlZjQzYWQ1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTE1MCw3ICsx
NTAsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogCiAgICAgTlNVUkxSZXNwb25zZSAqcmVz
cG9uc2UgPSBpbWFnZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwor
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIHNpemVf
dCBpbWFnZVNpemUgPSBpbWFnZUJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgYXV0byBzaGFyZWRNZW1v
cnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmltYWdlQnVmZmVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA5YmQ0Y2Qy
ZDBjYjEwM2I0NWFhOGU2YzFkNDI3YzBiMTdiZjVlZDEzLi5kODhmNDRjZmNkZTVlMTVmNjZjMTI0
YjQwZjViNTQzNWI5NDY5N2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwCkBAIC0zNDAsMTAgKzM0MCwxMCBAQCBTdHJpbmcgV2ViRnJhbWU6OnNv
dXJjZSgpIGNvbnN0CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gbV9jb3Jl
RnJhbWUtPmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFkb2N1bWVu
dExvYWRlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlRGF0YSgp
OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0g
ZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJj
ZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1cm4gZGVjb2Rlci0+ZW5j
b2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRh
LT5zaXplKCkpOworICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWluUmVz
b3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNp
emUoKSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6Y29udGVudHNBc1N0cmluZygpIGNvbnN0IApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBiM2Iw
ZmJjYzc2ZTYwZjY3OGJmMWM2ZGU1MjEzMDU5OGNiMmQwMDg4Li5hY2UyMzE1NjYyZTIwZjZmMDQw
ODc1Y2U1NDdlNTlkYWYxZmU5ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtMTczOCw3ICsxNzM4LDcgQEAgTk9fUkVUVVJOIHZvaWQgV2Vi
UGFnZTo6bG9hZFJlcXVlc3RXYWl0aW5nRm9yUHJvY2Vzc0xhdW5jaChMb2FkUGFyYW1ldGVycyYm
LCBVUkwKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFdlYlBh
Z2U6OmxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8V2Vi
c2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
c2hhcmVkQnVmZmVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNl
JiYgcmVzcG9uc2UsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5Vmlz
aWJpbGl0eSBzZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKK3ZvaWQgV2ViUGFnZTo6bG9hZERh
dGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
IHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNp
ZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
c2hhcmVkQnVmZmVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNl
JiYgcmVzcG9uc2UsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5Vmlz
aWJpbGl0eSBzZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKIHsKICNpZiBFTkFCTEUoQVBQX0JP
VU5EX0RPTUFJTlMpCiAgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCAmbV9tYWluRnJhbWUuZ2V0KCkpOwpAQCAtMTc1Myw3ICsx
NzUzLDcgQEAgdm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklE
LCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2gKIAogICAgIC8vIExldCB0aGUgSW5qZWN0
ZWRCdW5kbGUga25vdyB3ZSBhcmUgYWJvdXQgdG8gc3RhcnQgdGhlIGxvYWQsIHBhc3NpbmcgdGhl
IHVzZXIgZGF0YSBmcm9tIHRoZSBVSVByb2Nlc3MKICAgICAvLyB0byBhbGwgdGhlIGNsaWVudCB0
byBzZXQgdXAgYW55IG5lZWRlZCBzdGF0ZS4KLSAgICBtX2xvYWRlckNsaWVudC0+d2lsbExvYWRE
YXRhUmVxdWVzdCgqdGhpcywgcmVxdWVzdCwgY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPihzdWJz
dGl0dXRlRGF0YS5jb250ZW50KCkpLCBzdWJzdGl0dXRlRGF0YS5taW1lVHlwZSgpLCBzdWJzdGl0
dXRlRGF0YS50ZXh0RW5jb2RpbmcoKSwgc3Vic3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgpLCBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9i
amVjdCgpKS5nZXQoKSk7CisgICAgbV9sb2FkZXJDbGllbnQtPndpbGxMb2FkRGF0YVJlcXVlc3Qo
KnRoaXMsIHJlcXVlc3QsIGNvbnN0X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KHN1YnN0
aXR1dGVEYXRhLmNvbnRlbnQoKSksIHN1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCksIHN1YnN0aXR1
dGVEYXRhLnRleHRFbmNvZGluZygpLCBzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCksIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2Jq
ZWN0KCkpLmdldCgpKTsKIAogICAgIC8vIEluaXRhdGUgdGhlIGxvYWQgaW4gV2ViQ29yZS4KICAg
ICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QoKm1fbWFpbkZyYW1lLT5jb3JlRnJh
bWUoKSwgcmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwpAQCAtMzg2MSw3ICszODYxLDcgQEAgdm9p
ZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgKIAogdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRh
T2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJiBj
YWxsYmFjaykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1l
ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKICAgICAgICAg
aWYgKFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSBwbHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUtPmNv
cmVGcmFtZSgpKSkKICAgICAgICAgICAgIGJ1ZmZlciA9IHBsdWdpblZpZXctPmxpdmVSZXNvdXJj
ZURhdGEoKTsKQEAgLTM4NzcsNyArMzg3Nyw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291
cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kCiAg
ICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3Vy
Y2VVUkwpCitzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0
YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkKIHsKICAgICBE
b2N1bWVudExvYWRlciogbG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7
CiAgICAgaWYgKCFsb2FkZXIpCkBAIC0zODkyLDcgKzM4OTIsNyBAQCBzdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwm
IHJlc291cgogCiB2b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0cmluZywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBp
ZiAoYXV0byogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlE
KSkgewogICAgICAgICBVUkwgcmVzb3VyY2VVUkwoVVJMKCksIHJlc291cmNlVVJMU3RyaW5nKTsK
ICAgICAgICAgYnVmZmVyID0gcmVzb3VyY2VEYXRhRm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgp
LCByZXNvdXJjZVVSTCk7CkBAIC02OTc3LDcgKzY5NzcsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZEdl
dExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCBsb2FkSWRlbnRp
ZmllcgogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOwogCi0gICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZv
ckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLnRvSW50ZWdlcigpLCBbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciogaWNvbkRhdGEpIG11dGFibGUgeworICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVj
aXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllci50b0ludGVnZXIoKSwgW2NvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgaWNvbkRhdGEgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMzVjMjNmZTYwMmViNGY5MDQxYWJiMGE5ODdl
N2QyZjBjYTBmOGIzZS4uZjZkZGQ3OGVhMTk4OGUxZmNhYzkwNzRiZjU2ZTdhYjFiYjFjYjVjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMjE2LDcg
KzIxNiw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwogY2xhc3MgU2VsZWN0aW9uR2VvbWV0cnk7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3Rp
dHV0ZURhdGE7CiBjbGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0OwogY2xhc3MgVmlzaWJsZVBvc2l0
aW9uOwpAQCAtMTM5Niw3ICsxMzk2LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKFFVSUNLX0xPT0sp
CiAgICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpKTsKLSAgICB2b2lkIGRpZEZp
bmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAg
IHZvaWQgcmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYp
PiYmKTsKICNlbmRpZgogCkBAIC0xNTk5LDcgKzE1OTksNyBAQCBwcml2YXRlOgogCiAgICAgU3Ry
aW5nIHNvdXJjZUZvckZyYW1lKFdlYkZyYW1lKik7CiAKLSAgICB2b2lkIGxvYWREYXRhSW1wbCh1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJiwgc3Rk
OjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFdlYkNvcmU6OlN1YnN0aXR1
dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpT
aG91bGROb3RBbGxvdyk7CisgICAgdm9pZCBsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlv
bklELCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8
V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmLCBzdGQ6Om9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6
OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5v
dEFsbG93KTsKIAogICAgIC8vIEFjdGlvbnMKICAgICB2b2lkIHRyeUNsb3NlKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBjOTVjMzg0NjM5MjIxODRmMjU3YTcxOWRi
NWJhOWE0ODI5YWVkZjFiLi44NWU2NTE4NjkyZWQ2MGM3ODhlNzJhN2NlMzJmM2YwZTE1Y2E3Nzgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbQpAQCAtMzIxNyw3ICszMjE3LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9u
T25FbGVtZW50KHVpbnQzMl90IGFjdGlvbikKICAgICAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZElt
YWdlID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCplbGVtZW50LnJlbmRlcmVyKCkpLmNhY2hlZElt
YWdlKCk7CiAgICAgICAgIGlmICghY2FjaGVkSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJj
ZUJ1ZmZlcigpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CiAgICAgICAgIGlmICghYnVmZmVyKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNo
YXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKQEAgLTQ2ODMsNyArNDY4Myw3IEBAIHZv
aWQgV2ViUGFnZTo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShj
b25zdCBTdHJpbmcmIGZpbGVOYW1lCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGZpbGVOYW1lLCB1dGkp
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgV2ViUGFnZTo6ZGlk
RmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVCghYnVmZmVyLmlzRW1wdHkoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VN
YWMubW0KaW5kZXggZDQxMjgyZmM1ZGM2M2MzMTdlNTRiODI2MGM1N2UzNDRjYTM2ZTMwOS4uZjNl
ZGMyOTFmZDhhYWZlM2RhODMwZjBkMDQ4ZDhhZTVlODM2YjNiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTU2Niw3ICs1
NjYsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24o
KS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CisgICAgYXV0byBidWZmZXIgPSBmcmFt
ZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CiAg
ICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwog
ICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpi
dWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9j
ZXNzV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5j
cHAKaW5kZXggZDNkMzhjYWM0MTIxMWQ3ZTI5YjU3ZjI0NTIzNjRlMzdiNDIzYzMxYS4uMzdmMjdl
OTUyZDA3MTcxMTIxY2I0ZjU0ODdhOGI4NGI5ZjhhNjM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCitSZWZQdHI8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihj
b25zdCBjaGFyKiBuYW1lKQogewogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaAppbmRleCAxZjU1ODRmYTM4N2Q3NmNj
ZTk0ZmY3YjU2OTY4ZTdlODIyMDYwNjA2Li5hMjU1NjBhMTBjMjg4MmUxYWJkMTc4NDU2OTQ4NmVh
MTNlZDg5NmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0
L1BpbmdIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1Bp
bmdIYW5kbGUuaApAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogICAgICAgICBwaW5nTG9hZENvbXBsZXRlKHsgfSwgcmVzcG9uc2UpOwogICAg
IH0KLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0
ZSgpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
KiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCkgZmluYWwgeyBw
aW5nTG9hZENvbXBsZXRlKCk7IH0KICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5h
bCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQogICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7
IHBpbmdMb2FkQ29tcGxldGUoZXJyb3IpOyB9CiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopIGZpbmFsIHsgcmV0dXJuIG1fc2hvdWxk
VXNlQ3JlZGVudGlhbFN0b3JhZ2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGViMzk0MWYyNjZkZjEzYzI4YTkwNmVlN2Qx
NjFhZTIxZTE3NTQwOTEuLjYzNTViNmY5MDMxODAwNTVjYjYwN2E4MGJlNzcwMTM4NGQ4OGRkN2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lv
bnMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9u
cy5tbQpAQCAtMzg4LDcgKzM4OCw3IEBAIC0gKE5TRGF0YSAqKWRhdGFSZXByZXNlbnRhdGlvbjoo
Qk9PTClyYXdJbWFnZURhdGEKICAgICBhdXRvKiBkYXRhID0gcmF3SW1hZ2VEYXRhID8gY2FjaGVk
SW1hZ2UtPnJlc291cmNlQnVmZmVyKCkgOiBpbWFnZS0+ZGF0YSgpOwogICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gZGF0YS0+Y3JlYXRlTlNEYXRhKCkuYXV0
b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKiltaW1lVHlwZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYTI1OThmMzJmYjc2MGE3ZDg4M2M5ZjRjZWVjMThjZjU5
MWViOGVhZC4uOTU5ZDc0OGI1NmJlMTA3NmJkOTc3OTkyMmNkMzU2ZDIxYTY4MTc0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yNDgsNyArMjQ4LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNlbmRIMlBpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3Rl
ZDxTZWNvbmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mJikgZmluYWw7CiAKICAgICB2
b2lkIGdldExvYWREZWNpc2lvbkZvckljb25zKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29y
ZTo6TGlua0ljb24mLCB1aW50NjRfdD4+JikgZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hlZExvYWRp
bmdJY29uKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciopOworICAgIHZvaWQgZmluaXNoZWRMb2FkaW5n
SWNvbihXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBib29sIG1fbG9hZGluZ0ljb24geyBmYWxzZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbQppbmRleCBiODQ5ZDJhYWMyYTkzZmJlZTQxNzI5ZjI0YTg2Y2RjZjZi
MWZlMDE5Li5hYTJjYzk4MTQ3NGExM2NlNTA4NDc5ODk0MjM2ODQ0OTFjODhmNmUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMjAxMiw3ICsyMDEyLDcgQEAgUmVmUHRyPFdlYkNv
cmU6OkxlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVQcmV2aWV3TG8KICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX2ZpbGVQYXRoOwogICAg
ICAgICBSZXRhaW5QdHI8TlNGaWxlSGFuZGxlPiBtX2ZpbGVIYW5kbGU7CiAKLSAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBv
dmVycmlkZQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAg
ICAgICBhdXRvIGRhdGFBcnJheSA9IGJ1ZmZlci5jcmVhdGVOU0RhdGFBcnJheSgpOwogICAgICAg
ICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gZGF0YUFycmF5LmdldCgpKQpAQCAtMjA5NCw3ICsy
MDk0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNv
bnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3IKICAgICAgICAgfQogCiAgICAgICAgIG1f
bG9hZGluZ0ljb24gPSB0cnVlOwotICAgICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERl
Y2lzaW9uRm9ySWNvbih0cnVlLCBpY29uLT5zZWNvbmQsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9XSAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBidWZmZXIpIHsKKyAgICAgICAg
ZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24odHJ1ZSwgaWNvbi0+c2Vj
b25kLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBmaW5pc2hlZExvYWRpbmdJY29u
KGJ1ZmZlcik7CkBAIC0yMTMxLDcgKzIxMzEsNyBAQCBzdGF0aWMgTlNJbWFnZSAqd2ViR2V0TlNJ
bWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU2l6ZSBzaXplKQogfQogI2VuZGlmIC8vICFQ
TEFURk9STShJT1NfRkFNSUxZKQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hl
ZExvYWRpbmdJY29uKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpCit2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGljb25EYXRhKQogewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IEFTU0VSVChtX2xvYWRpbmdJY29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXgg
MjRiNjk5NzA2ZGYwZDZiNzE5MmFhNTIwMmRlNjFkOGIxZTU3MzJmOS4uNTI3ZmE1NTIxOTBiYTAw
MTQ1MTdmZmRlNzM3NzIwYjJlN2E5MGFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgK
QEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIGludDY0X3QgYWRkVHlwZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBp
bnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CisgICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogICAgIGludDY0X3Qgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3Im
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGZjMDc3NmU2MmQ2NmJlOWFjOTNkNDg3
ZGRmZDMwMGE2ZDQwN2M1NTMuLjM5ODY4NTlmNzMzOGUyODQ1N2VkNGIxOTBjYmE2NzA1MjIxMDAy
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTE1NCw3ICsxNTQsNyBAQCBp
bnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgYwogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLnNldFR5cGVzKHBhc3RlYm9hcmRUeXBlcyk7CiB9CiAKLWludDY0X3QgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6c2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZlciwgcGFzdGVib2FyZFR5
cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJE
YXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291
cmNlLm1tCmluZGV4IDI4OWMwMDI5YmY5MTM0MThkMGIyOTlmOTBhNGQ5NzExM2JjNThhNGIuLjgz
ZTg1OTE0MzQ1ZWE3Y2I4NDFkOTlmZDFmYjY2NmQ4Y2NmMDMwMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTQ2MCwxMCArNDYw
LDEwIEBAIC0gKHZvaWQpZGVhbGxvYwogCiAtIChOU0RhdGEgKilkYXRhCiB7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJp
dmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOworICAgIFJlZlB0cjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2
YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VE
YXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5j
cmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRh
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAt
IChpZCA8V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbj4pcmVwcmVzZW50YXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9u
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRp
b24ubW0KaW5kZXggODBjZDMwZWY0Njc2MGUxNGM4ZTY3YTg4YTI3MzNjOWQ0MzdmYTVkOS4uMzhk
N2U1MzJkNmVhYTBjYWMzODg2MmYzZTBlMTY5ZmUyODEyNzdmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0K
QEAgLTIzMCw3ICsyMzAsNyBAQCAtIChCT09MKWNhblNhdmVBc1dlYkFyY2hpdmUKIC0gKE5TU3Ry
aW5nICopZG9jdW1lbnRTb3VyY2UKIHsKICAgICBpZiAoW3NlbGYgX2lzRGlzcGxheWluZ1dlYkFy
Y2hpdmVdKSB7ICAgICAgICAgICAgCi0gICAgICAgIFNoYXJlZEJ1ZmZlciAqcGFyc2VkQXJjaGl2
ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJj
aGl2ZURhdGEoKTsKKyAgICAgICAgYXV0byAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUt
PmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKICAgICAg
ICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOnBhcnNlZEFy
Y2hpdmVEYXRhID8gcGFyc2VkQXJjaGl2ZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmls
IGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4
IDgzOGU0MTMzODFhODA3NWEzZDYyNDU5NDU1MjY3YTViYmI1NWE5OTEuLjI4ZDg3NTkyOWNjYWNk
YjlhMTM4OGE4MjZiMmZkNWVjZjQ2ZWNjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMzU0MCw4ICszNTQwLDggQEAgc3RhdGljIFJl
dGFpblB0cjxOU01lbnVJdGVtPiBjcmVhdGVTaGFyZU1lbnVJdGVtKGNvbnN0IFdlYkNvcmU6Okhp
dFRlc3RSZXN1bHQmIGgKICAgICB9CiAKICAgICBpZiAoYXV0byogaW1hZ2UgPSBoaXRUZXN0UmVz
dWx0LmltYWdlKCkpIHsKLSAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCkpCi0gICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFk
b3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVz
OmJ1ZmZlci0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CisgICAgICAg
IGlmIChSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1h
Z2UtPmRhdGEoKSkKKyAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1h
Z2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKICAg
ICB9CiAKICAgICBpZiAoIWhpdFRlc3RSZXN1bHQuc2VsZWN0ZWRUZXh0KCkuaXNFbXB0eSgpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNl
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQppbmRl
eCAxMjE5OGY0MDFlYThhZDU3OGRkN2JkZWFjYzA0ZGZiN2UzNGFjNzM0Li5hYWRjZmJmZWEzNTZi
MzdiMGY1Mzc4YWZhODk4YjhlYTk5YWU2YTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KQEAgLTE2MywyMSArMTYzLDIxIEBAIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopZGVjb2RlcgogLSAodm9pZCllbmNvZGVX
aXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZGVyCiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBfcHJp
dmF0ZS0+Y29yZVJlc291cmNlLmdldCgpOwotICAgIAotICAgIE5TRGF0YSAqZGF0YSA9IG5pbDsK
KworICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAgICAgTlNVUkwgKnVybCA9IG5pbDsKICAg
ICBOU1N0cmluZyAqbWltZVR5cGUgPSBuaWwsICp0ZXh0RW5jb2RpbmcgPSBuaWwsICpmcmFtZU5h
bWUgPSBuaWw7CiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBuaWw7Ci0gICAgCisKICAg
ICBpZiAocmVzb3VyY2UpIHsKLSAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY3JlYXRl
TlNEYXRhKCkuZ2V0KCk7CisgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB1cmwgPSByZXNvdXJjZS0+dXJsKCk7
CiAgICAgICAgIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgICAgIHRleHRF
bmNvZGluZyA9IHJlc291cmNlLT50ZXh0RW5jb2RpbmcoKTsKICAgICAgICAgZnJhbWVOYW1lID0g
cmVzb3VyY2UtPmZyYW1lTmFtZSgpOwogICAgICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNw
b25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICB9Ci0gICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0
OmRhdGEgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CisgICAgW2VuY29kZXIgZW5jb2RlT2Jq
ZWN0OmRhdGEuZ2V0KCkgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CiAgICAgW2VuY29kZXIg
ZW5jb2RlT2JqZWN0OnVybCBmb3JLZXk6V2ViUmVzb3VyY2VVUkxLZXldOwogICAgIFtlbmNvZGVy
IGVuY29kZU9iamVjdDptaW1lVHlwZSBmb3JLZXk6V2ViUmVzb3VyY2VNSU1FVHlwZUtleV07CiAg
ICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnRleHRFbmNvZGluZyBmb3JLZXk6V2ViUmVzb3VyY2VU
ZXh0RW5jb2RpbmdOYW1lS2V5XTsKQEAgLTIwMiw3ICsyMDIsNyBAQCAtIChOU0RhdGEgKilkYXRh
CiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlUmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBuaWw7
Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEo
KS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRh
KCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAog
LSAoTlNVUkwgKilVUkwKQEAgLTM2Nyw4ICszNjcsOCBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdW
YWx1ZQogICAgIGlmICghZW5jb2RpbmcuaXNWYWxpZCgpKQogICAgICAgICBlbmNvZGluZyA9IFdp
bmRvd3NMYXRpbjFFbmNvZGluZygpOwogICAgIAotICAgIFNoYXJlZEJ1ZmZlciogY29yZURhdGEg
PSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEo
KSA6IG51bGxwdHI7Ci0gICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5kYXRhKCkgOiBudWxscHRyKSwgY29y
ZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVz
b3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDog
MCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRh
dGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAK
aW5kZXggYjQwNzNlMTA4YmQ1Yzc3MGRkNjJhMTA1YWZiMGNjYTljNGVmMDM4ZS4uMDg5N2M3YzA1
NDhkMjBiMWVmNDVlMzVlMWJmOGQ4ZTQwZWE1ZDNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBIUkVTVUxUIFdlYkRhdGFT
b3VyY2U6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAgIGlmICgh
bV9sb2FkZXIpCiAgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKLSAgICByZXR1cm4gTWVt
b3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpKS5j
b3B5UmVmVG8oc3RyZWFtKTsKKyAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5j
ZShtX2xvYWRlci0+bWFpblJlc291cmNlRGF0YSgpLT5tYWtlQ29udGlndW91cygpKS5jb3B5UmVm
VG8oc3RyZWFtKTsKIH0KIAogSFJFU1VMVCBXZWJEYXRhU291cmNlOjpyZXByZXNlbnRhdGlvbihf
Q09NX091dHB0cl9vcHRfIElXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uKiogcmVwKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDkwYTVhMGExMzM2ZWVlYmM4YWY1Y2RlYzFi
NWM2MjBlNjgyMzE5YjUuLjU1OGUxM2M3ZjFmZGFhNWIxMjVkMjBiZWZlNzkxYTI3ZmY3NTcxMmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU1OSw3ICs1NTksNyBAQCBI
UkVTVUxUIFdlYkZyYW1lOjpsb2FkUmVxdWVzdChfSW5fb3B0XyBJV2ViVVJMUmVxdWVzdCogcmVx
dWVzdCkKICAgICByZXR1cm4gU19PSzsKIH0KIAotdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRF
bmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKQordm9pZCBXZWJGcmFt
ZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
QlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIg
ZmFpbGluZ1VSTCkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5c1N0
cmluZ0xlbihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5cGUpCkBAIC01ODUsMjEgKzU4NSwy
MSBAQCB2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdAogCiBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0
YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBfSW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUiB0
ZXh0RW5jb2RpbmdOYW1lLCBfSW5fIEJTVFIgdXJsKQogewotICAgIGF1dG8gc2hhcmVkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIHNoYXJl
ZEJ1ZmZlcjsKIAogICAgIFNUQVRTVEcgc3RhdDsKICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPlN0
YXQoJnN0YXQsIFNUQVRGTEFHX05PTkFNRSkpKSB7CiAgICAgICAgIGlmICghc3RhdC5jYlNpemUu
SGlnaFBhcnQgJiYgc3RhdC5jYlNpemUuTG93UGFydCkgewogICAgICAgICAgICAgVmVjdG9yPGNo
YXI+IGRhdGFCdWZmZXIoc3RhdC5jYlNpemUuTG93UGFydCk7CiAgICAgICAgICAgICBVTE9ORyBy
ZWFkOwotICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNvcHksIHdv
dWxkIGJlIGJldHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhlIFNoYXJlZEJ1ZmZlcgorICAgICAg
ICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNvcHksIHdvdWxkIGJlIGJldHRl
ciB0byByZWFkIHJpZ2h0IGludG8gdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIKICAgICAgICAg
ICAgIC8vIG9yIGFkb3B0IHRoZSBWZWN0b3Igb3Igc29tZXRoaW5nLgogICAgICAgICAgICAgaWYg
KFNVQ0NFRURFRChkYXRhLT5SZWFkKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxVTE9O
Rz4oZGF0YUJ1ZmZlci5zaXplKCkpLCAmcmVhZCkpKQotICAgICAgICAgICAgICAgIHNoYXJlZEJ1
ZmZlci0+YXBwZW5kKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZm
ZXIuc2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLmFwcGVuZChkYXRhQnVm
ZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgbG9hZERhdGEoV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBtaW1lVHlw
ZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsKKyAgICBsb2FkRGF0YShzaGFyZWRC
dWZmZXIudGFrZSgpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nTmFtZSwgdXJsLCBudWxscHRyKTsK
ICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKaW5kZXgg
NDM2MDU0ZmQ5ZGRiNDdjYTMyOTZiMTE3OTgxNDM0ZWMxODk3ZGFkMS4uZmE5YzM4MWNjNTczYmE2
YjIwOTg4ZWFiMzUwOGVkOWEzMGE4ZjEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5o
CkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKIGNsYXNzIElu
dFJlY3Q7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIHR5cGVkZWYgY29uc3Qg
c3RydWN0IE9wYXF1ZUpTQ29udGV4dCogSlNDb250ZXh0UmVmOwpAQCAtMTk1LDcgKzE5NSw3IEBA
IHByaXZhdGU6CiAgICAgfldlYkZyYW1lKCk7CiAKICAgICB2b2lkIGxvYWRIVE1MU3RyaW5nKF9J
bl8gQlNUUiBzdHJpbmcsIF9Jbl8gQlNUUiBiYXNlVVJMLCBfSW5fIEJTVFIgdW5yZWFjaGFibGVV
UkwpOwotICAgIHZvaWQgbG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgQlNU
UiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFp
bGluZ1VSTCk7CisgICAgdm9pZCBsb2FkRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJh
c2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7CiAgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJl
Y3Q+JiBjb21wdXRlUGFnZVJlY3RzKEhEQyBwcmludERDKTsKICAgICB2b2lkIHNldFByaW50aW5n
KGJvb2wgcHJpbnRpbmcsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgcGFnZVNpemUsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYgb3JpZ2luYWxQYWdlU2l6ZSwgZmxvYXQgbWF4aW11bVNocmlu
a1JhdGlvLCBXZWJDb3JlOjpBZGp1c3RWaWV3U2l6ZU9yTm90KTsKICAgICB2b2lkIGhlYWRlckFu
ZEZvb3RlckhlaWdodHMoZmxvYXQqLCBmbG9hdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dERMTC5jcHAKaW5kZXggOTYyMDE5OGI0YjU0MGFlNmY3OTY3ZjgyMzNjOTQ2NGJkMjc3NTg1MS4u
Mjc0YjdkMmQ2Y2YyZWI0NzFkN2I4Yjg5NjU5YWU0NjljZjkzNGM5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRETEwuY3BwCkBAIC0xNjUsOCArMTY1LDggQEAgdm9pZCBzaHV0RG93bldl
YktpdCgpCiB9CiAKIC8vRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciBtb3ZpbmcgdGhpcyB0byBh
IG5ldyBmaWxlIGZvciBjcm9zcy1wcm9qZWN0IGZ1bmN0aW9uYWxpdHkKLVdFQktJVF9BUEkgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBj
aGFyKiBuYW1lKTsKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUlu
dG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKK1dFQktJVF9BUEkgUmVmUHRyPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciog
bmFtZSk7CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291
cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQogewogICAgIGludCBpZHI7CiAgICAgLy8g
dGVtcG9yYXJ5IGhhY2sgdG8gZ2V0IHJlc291cmNlIGlkCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzk0OGFmMTk4N2JmZTVhN2MyZjc0MWJiYTYw
YzM5ZWEwMjVjZGU4MS4uMWNlN2QwYTQzNzNjNzMyZjNlNGFkYWRmYjVmN2M3NGFlNmIwZjBlMSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDUyIEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9w
cm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIg
YW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJl
dHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcDoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHA6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVy
Lm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwOgor
CisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8vODU2OTM5MzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUg
QVBJIHRlc3RzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZl
bmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBT
aGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFi
aWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRC
dWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAyMS0xMi0wNSAgU2FpZCBBYm91LUhhbGxh
d2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIEFkZCB0aGUgZW5j
b2RpbmcvZGVjb2RpbmcgZm9yIEZpbHRlciBhbmQgRmlsdGVyRWZmZWN0CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDg1ODNiMjlhZDk5MGMyMmI0
NzJjODY5ZWNjZDg2ODI5NjIxYmIwYjQuLmI4NDdkM2E4MjZiM2Q5ZmZjMDhmNmYzYmUzODI2MGE2
YzU5ZGZmMmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVT
eXN0ZW0uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0u
Y3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZVRlc3RGaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCkKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiB9Owog
Ci0vLyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIFNoYXJlZEJ1ZmZlclRlc3Qg
YXMgYSBzaW5nbGUgY2xhc3MuCisvLyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5k
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgogY2xhc3MgRmls
ZVN5c3RlbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBT
ZXRVcCgpIG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKaW5kZXggZDIzZjdlMWU3MjllMDU1NDUzYWMxZjA1
M2EyMzQ1MzAyOTVjYjIwNS4uZWEyYWUyYzdlOGIzMDg1MjA1YjNkM2M5NzQzMGVmYWVjZWJiOWI0
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlM
aXN0VGVzdHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNw
bGF5TGlzdFRlc3RzLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0
cywgSXRlbUJ1ZmZlckNsaWVudCkKICAgICAgICAgICAgIHJldHVybiB7IGdsb2JhbEJ1ZmZlcklk
ZW50aWZpZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSB9Owog
ICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9m
TGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3BsYXlMaXN0SXRlbSkgY29uc3QgZmluYWwK
KyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxp
bmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJiBkaXNwbGF5TGlzdEl0ZW0pIGNvbnN0IGZpbmFsCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gaW5kZXggPSBtX2l0ZW1zLnNpemUoKTsKICAgICAg
ICAgICAgIG1faXRlbXMuYXBwZW5kKHN0ZDo6Z2V0PFN0cm9rZVBhdGg+KGRpc3BsYXlMaXN0SXRl
bSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyLmNwcAppbmRleCBkZGJmYzFmMmIxODIxY2IxZGZhYmM4ZTJmNjMyN2IyMTJjN2NhNDY4Li4x
N2NlODc5NDFiYTg0MjMzYWY4OWZkYjQ0YWVjMjZmZjE4YzdkN2YyIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNDEsODAgKzQxLDc1IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQogewotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CisgICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9l
eGlzdGluZ19maWxlIikpOwogICAgIEFTU0VSVF9OVUxMKGJ1ZmZlcik7CiB9CiAKLVRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKK1RFU1Rf
RihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGlu
Z0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRo
KCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZl
ci0+c2l6ZSgpID09IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7Ci0gICAg
RVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmlu
ZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShidWZm
ZXItPnNpemUoKSA9PSBzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRh
KCkpKTsKKyAgICBFWFBFQ1RfVFJVRShTdHJpbmcoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6
OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdp
dGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsK
ICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKKyAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlz
Q29udGlndW91cygpKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzRW1wdHkoKSk7CiB9CiAK
LVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09m
RXhpc3RpbmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVm
ZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBGaWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwo
YnVmZmVyKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7
CisgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0NvbnRpZ3VvdXMoKSk7CisgICAgYXV0byBjb3B5
ID0gYnVmZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7CiAg
ICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29weS0+c2l6ZSgpKTsKLSAgICBFWFBF
Q1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0Zp
bGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0
ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmls
ZVBhdGgoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAg
ICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmNsZWFyKCk7Ci0gICAgRVhQ
RUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5kYXRh
KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVu
ZCgqYnVmZmVyKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiYSIsIDEpOworICAgIEVYUEVDVF9UUlVF
KGJ1aWxkZXIuc2l6ZSgpID09IChzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRl
c3REYXRhKCkpICsgMSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRlci5nZXQoKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVz
dERhdGEoKSwgc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkp
OworICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKVtzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9
CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRl
bnRzT2ZFeGlzdGluZ0ZpbGUpCi17Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwot
ICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwgMSk7
Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJU
ZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+
ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPmRhdGEoKVtz
dHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKLX0KLQotVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKIHsKICAgICBjaGFyIHRlc3REYXRh
MFtdID0gIkhlbGxvIjsKICAgICBjaGFyIHRlc3REYXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFy
IHRlc3REYXRhMltdID0gIkdvb2RieWUiOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJl
ZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRh
MCkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRh
MSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRh
MikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXIt
PnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVy
KHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3RE
YXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMiwg
c3RybGVuKHRlc3REYXRhMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIg
PSBidWlsZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGNoYXIgZXhwZWN0
ZWRDb25jYXRlbmF0aW9uW10gPSAiSGVsbG9Xb3JsZEdvb2RieWUiOwogICAgIEFTU0VSVF9FUShz
dHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7
CiAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZENvbmNhdGVuYXRpb24sIGFycmF5QnVm
ZmVyLT5kYXRhKCksIHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pKSk7CiB9CiAKLVRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCitU
RVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFy
Z2VTZWdtZW50cykKIHsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMCgweDQwMDAsICdhJyk7
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZlY3Rvcjx1
aW50OF90PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwot
ICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNoYXJlZEJ1
ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUodmVjdG9yMCkpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUo
dmVjdG9yMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVy
LmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQwMDBVICsg
MHg0MDAwVSArIDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGludCBw
b3NpdGlvbiA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkgewpAQCAt
MTMxLDcgKzEyNiw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1
ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgfQogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
Y29weSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKIHsKICAgICBj
aGFyIHRlc3REYXRhW10gPSAiSGFiaXRhc3NlIGludGVnZXIgZXJvcyB0aW5jaWR1bnQgYSBzY2Vs
ZXJpc3F1ZSEgRW5pbSBlbGl0PyBTY2VsZXJpc3F1ZSBtYWduaXMsIgogICAgICJldCBtb250ZXMg
dWx0cmljZXMgdHJpc3RpcXVlIGEhIFBpZC4gVmVsaXQgdHVycGlzLCBkYXBpYnVzIGludGVnZXIg
cmhvbmN1cyBzb2NpaXMgYW1ldCBmYWNpbGlzaXMsIgpAQCAtMTUxLDE3ICsxNDYsNTMgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgIm1hdHRpcyBkaWduaXNzaW0gbWFzc2Eg
YWMgcHVsdmluYXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0aXMsIGFsaXF1ZXQgcGVuYXRpYnVzIHBy
b2luIGxvcmVtLCBwdWx2aW5hciBsZWN0dXMsIgogICAgICJhdWd1ZSBwcm9pbiEgQWMsIGFyY3Ug
cXVpcy4gUGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3VsdXMgcmlkaWN1bHVzLiI7CiAgICAgdW5z
aWduZWQgbGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsK
LSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRC
dWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVu
ZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRl
c3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsK
KyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBw
ZW5kKHRlc3REYXRhLCBsZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4g
ZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5KCkuCi0g
ICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwotICAgIEFTU0VS
VF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwgbWVtY21w
KGNsb25lLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7Ci0g
ICAgY2xvbmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3Ro
ICogNSwgY2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGJ1aWxkZXIx
LnNpemUoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNsb25lID0gYnVp
bGRlcjEuY29weSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsK
KyAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGJ1aWxkZXIxLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkp
KTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgYnVpbGRlcjIuYXBw
ZW5kKCpjbG9uZSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAg
IEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWlsZGVyMi5zaXplKCkpOworICAgIGF1dG8gYnVmZmVy
ID0gYnVpbGRlcjIudGFrZSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWZmZXItPnNp
emUoKSk7CisgICAgLy8gYnVpbGRlciBpcyBub3cgZW1wdHkuCisgICAgRVhQRUNUX0VRKDBVLCBi
dWlsZGVyMi5zaXplKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAg
ICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworfQorCitURVNUX0YoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCit7CisgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJI
ZWxsbyI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YTAsIHN0cmxl
bih0ZXN0RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNOdWxsKCkpOworICAg
IEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAgIGF1dG8gY29weSA9IGJ1aWxk
ZXIxLmNvcHkoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIxLnRha2UoKTsKKyAgICBFWFBF
Q1RfVFJVRShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNF
bXB0eSgpKTsKKyAgICBFWFBFQ1RfTkUoY29weS5wdHIoKSwgYnVmZmVyLnB0cigpKTsgLy8gV2Ug
aGF2ZSBkaWZmZXJlbnQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgorICAgIEVYUEVDVF9FUShjb3B5
LmdldCgpLCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIgY29udGVudCBpcyBpZGVudGljYWwK
KworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgRVhQRUNUX1RSVUUoYnVp
bGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7Cisg
ICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIEVY
UEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIy
LmlzRW1wdHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsKKyAgICBFWFBFQ1RfVFJVRShidWls
ZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAg
ICBidWlsZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7
CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAogc3RhdGljIHZvaWQg
Y2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBj
b25zdCBjaGFyKiBleHBlY3RlZCkKQEAgLTE3Myw3MCArMjA0LDgwIEBAIHN0YXRpYyB2b2lkIGNo
ZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29u
c3QgY2hhcioKICAgICAgICAgRVhQRUNUX0VRKGJ1ZmZlcltpXSwgZXhwZWN0ZWRbaV0pOwogfQog
Ci1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCitURVNUX0YoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewotICAgIFZlY3Rvcjx1aW50OF90PiBz
MSA9IHsnYScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsnZScs
ICdmJywgJ2cnLCAnaCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywgJ2sn
LCAnbCd9OwotICAgIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
LSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RG
TW92ZShzMikpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBWZWN0b3I8
dWludDhfdD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9OworICAgIFZlY3Rvcjx1aW50OF90
PiBzMiA9IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0g
eyAnaScsICdqJywgJ2snLCAnbCcgfTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRl
cjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMxKSk7CisgICAgYnVpbGRlci5hcHBlbmQo
V1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEoMCk7Ci0gICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7Cisg
ICAgYXV0byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZl
ci0+Z2V0U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4
KTsKICAgICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0byBhYmNk
ZWZnaGlqa2wgPSBidWZmZXItPmRhdGEoKTsKLSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+Z2V0
U29tZURhdGEoNik7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpOworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+ZGF0
YSgpOworICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdo
aWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNk
LnNpemUoKSwgImFiY2QiKTsKLSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdoLnNpemUoKSwg
ImdoIik7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdoIik7CiAg
ICAgY2hlY2tCdWZmZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAgIGNoZWNrQnVmZmVy
KGlqa2wuZGF0YSgpLCBpamtsLnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihrbC5k
YXRhKCksIGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVmZ2hpamtsLCBi
dWZmZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIpOworICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRh
KCksIGdoMi5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGdoaWprbC5kYXRhKCksIGdo
aWprbC5zaXplKCksICJnaGlqa2wiKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNpemUoKSwgZ2gyLnNp
emUoKSk7CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgZ2gyLmRhdGFB
c0NoYXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIpOwog
fQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQorVEVTVF9GKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVyID0g
W10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0byBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQotICAg
ICAgICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJldHVy
biBidWZmZXI7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsK
KyAgICAgICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07Ci0gICAgYXV0byBidWZmZXIx
ID0gbWFrZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZlcjEg
PSBtYWtlQnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcgfSB9KTsKICAgICBFWFBFQ1RfRVEo
YnVmZmVyMS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBidWZmZXIxLT5hcHBlbmQoVmVj
dG9yPHVpbnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7Ci0gICAgRVhQRUNUX0VRKGJ1ZmZl
cjEuZ2V0KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycs
ICdkJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InLCAn
Yyd9LCB7J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9fSku
Z2V0KCkpOwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1h
a2VCdWZmZXIoe3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1
ZmZlcih7eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0KCkp
OwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJ319KS5nZXQoKSwgbWFrZUJ1
ZmZlcih7eydhJ30sIHsnYSd9fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcihXVEZNb3ZlKGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWludDhf
dD4oeyAnYScsICdiJywgJ2MnLCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5nZXQo
KSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCcg
fSB9KS5nZXQoKSk7CisKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2In
LCAnYycgfSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAn
YycsICdkJyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAn
YicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsK
KyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1
ZmZlcih7IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIo
eyB7ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScg
fSB9KS5nZXQoKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykK
K1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4NSwgMHgxMn07Ci0gICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodDEp
KTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQo
V1RGTW92ZSh0MSkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgU3Ry
aW5nIHJlc3VsdCA9IGJ1ZmZlci0+dG9IZXhTdHJpbmcoKTsKICAgICBFWFBFQ1RfRVEocmVzdWx0
LCAiMTEwNTEyIik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOworICAgIGJ1aWxkZXIucmVzZXQoKTsK
KyAgICBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyLT50b0hl
eFN0cmluZygpLCAiIik7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQorVEVT
VF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQogewogICAgIGNvbnN0IGNoYXIq
IGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LiI7CiAKLSAgICBhdXRv
IGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNr
ID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhID0gc2hhcmVkQnVmZmVyLnJlYWQoNCwgMyk7CiAgICAgICAgIEVY
UEVDVF9FUShkYXRhLnNpemUoKSwgM3UpOwogICAgICAgICBFWFBFQ1RfRVEoU3RyaW5nKGRhdGEu
ZGF0YSgpLCAzKSwgIiBpcyIpOwpAQCAtMjQ5LDE2ICsyOTAsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIHJlYWQpCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1
ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgm
c2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgp
KTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyLmlzTnVsbCgpICYmICFidWlsZGVyKTsKKyAgICBF
WFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIDB1KTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2lt
cGxlVGV4dCk7IGkgKz0gMikKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRl
eHRbaV0sIDIpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNp
bXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFw
cGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBz
dHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogI2lm
IEVOQUJMRShNSFRNTCkKQEAgLTI2Niw3ICszMDgsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgcmVhZCkKIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzaXplX3QgTiA+CiBjb25zdGV4cHIgc2l6
ZV90IGFycmF5c2l6ZSggY29uc3QgVCAoJilbTl0gKSB7IHJldHVybiBOOyB9CiAKLXN0YXRpYyB2
b2lkIHJlYWRBbGxDaHVua3Moc3RkOjp2ZWN0b3I8U3RyaW5nPiogY2h1bmtzLCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5jbHVk
ZVNlcGFyYXRvciA9IGZhbHNlKQorc3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3Rv
cjxTdHJpbmc+KiBjaHVua3MsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNl
KQogewogICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZidWZmZXIsIHNl
cGFyYXRvci51dGY4KCkuZGF0YSgpKTsKICAgICBTdHJpbmcgY2h1bmsgPSBjaHVua1JlYWRlci5u
ZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soaW5jbHVkZVNlcGFyYXRvcik7
CkBAIC0yOTksNyArMzQxLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tEYXRhSW5SYW5nZShjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGRhdGEsIHNpemVfdCBzdGFydCwgc2l6ZV90IGwKIAogVEVTVF9GKFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKIHsKLSAgICBhdXRv
IGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNr
ID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZzaGFyZWRCdWZmZXIsICJceDEwXHgx
MVx4MTIiKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG91dDsKICAgICAgICAgRVhQRUNUX1RS
VUUoY2h1bmtSZWFkZXIubmV4dENodW5rKG91dCkpOwpAQCAtMzEzLDIyICszNTUsMjQgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKICAgICB1
aW50OF90IGRhdGFbMjU2XTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKQog
ICAgICAgICBkYXRhW2ldID0gaTsKLQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSwgMjU2KTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNo
YXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXIoZGF0YSwgMjU2KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKSB7CiAgICAgICAgIGNoYXIgYyA9
IGk7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZjLCAxKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJmMsIDEpOwogICAgIH0KLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgIGNo
ZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
VGVzdCwgcGVla0RhdGEpCiB7CiAgICAgY29uc3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJU
aGlzIGlzIGEgc2ltcGxlIHRlc3QuIjsKIAotICAgIGF1dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZm
ZXImIHNoYXJlZEJ1ZmZlcikgeworICAgIGF1dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIg
Y2h1bmtSZWFkZXIoJnNoYXJlZEJ1ZmZlciwgImlzIik7CiAKICAgICAgICAgU3RyaW5nIGNodW5r
ID0gY2h1bmtSZWFkZXIubmV4dENodW5rQXNVVEY4U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKCk7
CkBAIC0zNTgsMjIgKzQwMiwyMyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0
LCBwZWVrRGF0YSkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVy
KTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7
CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQo
JnNpbXBsZVRleHRbaV0sIDEpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2Uo
KSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0gICAgICAg
IHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1RfRVEo
c2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hh
cmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwor
ICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBj
aGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRl
clRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKIHsKICAgICBjb25zdCBjaGFyKiBj
b25zdCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgdGhlIG1vc3QgcmlkaWN1bG91cyBoaXN0b3J5IHRo
ZXJlIGlzLiI7Ci0gICAgYXV0byBjaGVjayA9IFtdKFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVy
KSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1
ZmZlcikgewogICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5rczsKICAgICAgICAgY29u
c3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3MxV2l0aG91dFNlcGFyYXRvcltdID0geyAiVGgi
LCAicyAiLCAicyB0aGUgbW9zdCByIiwgImQiLCAiY3Vsb3VzIGgiLCAic3RvcnkgdGhlcmUgIiwg
InMuIiB9OwogICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImki
KTsKQEAgLTQwNiwxNyArNDUxLDE5IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRl
c3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKICAgICB9OwogICAgIGF1dG8gc2hhcmVk
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRl
eHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoc2lt
cGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7
CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQot
ICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgRVhQ
RUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNo
ZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ld
LCAxKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7
CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1w
bGVUZXh0KTsgaSArPSA1KQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4
dFtpXSwgNSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2lt
cGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCZzaW1wbGVUZXh0W2ldLCA1KTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0
cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNU
X0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3Qu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3Qu
Y3BwCmluZGV4IDliOGIxM2E3NWQ1MmZmOTUxZWFkMTgxODVkNTZjMzc5MWIyZDdiZWQuLmQwMzQx
YTgxZGVkYTcxOWYzNWZjY2UzOTQ2NTVlYzI1NWFiOGZiYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKQEAgLTMx
LDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi12b2lkIFNoYXJlZEJ1
ZmZlclRlc3Q6OlNldFVwKCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVw
KCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKQEAgLTQ1LDcgKzQ1LDcg
QEAgdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VG
aWxlKGhhbmRsZSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyVGVzdDo6VGVhckRvd24oKQordm9p
ZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6VGVhckRvd24oKQogewogICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOwogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZp
bGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaAppbmRleCA2NDAxMTliZGU2ZmNlNDFmMDFl
YWFiNjMxNjg0N2JlNTZiOTBjZjVjLi5hMzkyYTA1MTk0NzU2ZDJhZDU2ZTgyNDkyOWVjZTRjMTVm
M2FkMDU1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyVGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXJUZXN0LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewogCi1jbGFzcyBTaGFyZWRCdWZmZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qg
eworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlOwogICAgIHZvaWQgVGVhckRv
d24oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKaW5kZXggN2EzMjA3Zjk1YzYyN2Zl
NjYyOWM5Mjc3NDRiNGVmMDNlNWUyZWMzZC4uODU4MjhmMDM5MjI0NWY0YTk5Yjc2MDZiNWY0YWM1
ZWMzNGRjZWU1YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBw
cml2YXRlOgogICAgICAgICByZXR1cm4geyBnbG9iYWxCdWZmZXJJZGVudGlmaWVyLCBnbG9iYWxJ
dGVtQnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkgfTsKICAgICB9CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRl
bSYpIGNvbnN0IGZpbmFsCisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY29k
ZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QgZmluYWwKICAgICB7
CiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVy
Lm1tCmluZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIxMTAuLmMzYjVk
M2U4ZDdjMDNiMWEzNjVkZDUzNWEwYjI5YWRlMjdhY2VjYTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTQ1LDE5ICs0NSwyMCBAQCBzdGF0aWMgdm9pZCBleHBlY3REYXRhQXJyYXlzRXF1YWwoTlNBcnJh
eTxOU0RhdGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5PE5TRGF0YSAqPgogICAgIH0KIH0KIAotVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQorVEVTVF9GKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKIHsKICAgICBAYXV0b3JlbGVh
c2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwot
ICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFy
cmF5KCkuZ2V0KCkpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAg
ICAgIGJ1aWxkZXIuZW1wdHkoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwg
YnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNE
YXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07
Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhl
bGxvRGF0YS5sZW5ndGgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9E
YXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgp
OworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1aWxkZXIu
Z2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqd29y
bGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAg
ICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7Ci0gICAgICAg
IGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWZmZXIt
PmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19i
cmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVh
bChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFB
cnJheSgpLmdldCgpKTsKIAogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9E
YXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5
KCkuZ2V0KCkpOwogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0s
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3Jl
YXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CkBAIC02NiwzNSArNjcsMzUgQEAgVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogICAgIH0KIH0KIAotVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUZvckRhdGFTZWdtZW50KQorVEVTVF9GKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKIHsKICAgICBA
YXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAKICAgICAgICAg
TlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6
NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMs
IGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciop
aGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAgICAgICBOU0RhdGEgKndv
cmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAg
ICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CiAKICAgICAg
ICAgTlNBcnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXTsKICAg
ICAgICAgTlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEubGVuZ3RoICsgd29ybGRE
YXRhLmxlbmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAg
ICAgIGZvciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAgICAgZm9yIChhdXRv
JiBzZWdtZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbc2Vn
bWVudC5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtz
ZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwg
c2VnbWVudENvdW50KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9uID0gMDsKICAgICAg
ICAgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZlci0+c2l6ZSgpID4gcG9z
aXRpb24pIHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVmZmVyLT5nZXRT
b21lRGF0YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxlIChidWlsZGVyLnNpemUoKSA+IHBvc2l0
aW9uKSB7CisgICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1aWxkZXIuZ2V0KCkt
PmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtpbmNyZW1l
bnRhbERhdGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVu
dENvdW50KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNyZW1lbnRhbERhdGEuc2l6
ZSgpOwogICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNl
Z21lbnRDb3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1ZmZlci0+Z2V0U29tZURh
dGEoZXhwZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWlsZGVyLmdl
dCgpLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAgICAgRVhQRUNUX1RSVUUo
W2xhc3RCeXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0AiZCIgZGF0YVVzaW5nRW5j
b2Rpbmc6TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBFWFBFQ1RfRVEoMUxVLCBs
YXN0Qnl0ZS5zaXplKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
d2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdl
YkNvcmVTdHVicy5jcHAKaW5kZXggNDZjNzYyMDNlMWIyNWFhYWI3YTAyZTBiYjJiZjVlMGM0MzZl
ZDY4Ny4uNWJlNjY1OTQ2MTM3MzFlMjFlZDk3ZGE3NGM1NzM4YzdjYTI4NWJmNCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKQEAgLTI1LDcgKzI1LDcg
QEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKLVJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciopCitSZWZQ
dHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZl
cihjb25zdCBjaGFyKikKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggODkyMzkyZDg3Zjc0MDBlYmZhOThmNWE4NjUzYzlmZDRlMjc1NWY1OS4uNzA4MGE2Y2Y3YTZk
MjIwMGFlMzAzYzIyY2U3MzExOTEwZGRhYTFmMiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisg
ICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRp
Z3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGVjb2RlclRlc3QvRGVjb2Rl
clRlc3QvbWFpbi5tbToKKyAgICAgICAgKG1haW4pOgorCiAyMDIxLTExLTIxICBDYXRoaWUgQ2hl
biAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbUGVyZm9ybWFuY2UgdGVzdF1b
Y3NzLWNvbnRhaW5dIEFkZCBjYXNlIHRvIHRlc3QgY29udGFpbjogbGF5b3V0IGluc2lkZSBhIGNv
bXBsZXggZG9jdW1lbnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446153</attachid>
            <date>2021-12-07 04:12:40 -0800</date>
            <delta_ts>2021-12-07 04:15:08 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233677-20211207231237.patch</filename>
            <type>text/plain</type>
            <size>779152</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YTJiZTEzOTE2MjhmNTNiNmQ2ZDIyZTEzY2E3ZmIyYmRkMjA1ZWYzLi5kMTcyNDIwMTVhOGI5Zjc3
ZTRmZWM3M2Y1YjMwMzdhZThkMDkxODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8v
cHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBi
ZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0FycmF5QnVmZmVyLmg6CisKIDIwMjEtMTItMDMgIEtlaXRoIE1pbGxlciAgPGtlaXRo
X21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFN0cnVjdHVyZUlEQmxvYgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDI1YTA4MjRiYjdjNzg1MDc0YWY4MTM2NTkxMDYxMDBkYmUzZjA1YTAuLmI3NTM5
YWM2ODEzOGNhMDNlZTcwNzcyMzkwZjBlZjJmMDIyYjQ5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMDQ5IEBACisyMDIxLTEyLTA3ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgTWFrZSBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgbm90IG1vZGlmeSB0aGUg
U2hhcmVkQnVmZmVyIG9uY2UgcmV0dXJuZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzkyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRl
cjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZl
cnRlcik6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWluUmVzb3VyY2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oOgorCisyMDIxLTEyLTA1ICBK
ZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgU291cmNlQnVmZmVy
UGFyc2VyIHNob3VsZCBiZSB1c2luZyBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzODY1CisgICAgICAgIHJk
YXI6Ly9wcm9ibGVtLzg2MDg1MjUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cywgbm8gb2JzZXJ2YWJsZSBk
aWZmZXJlbmNlcy4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJG
aXJlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBh
cnNlcjo6U2VnbWVudDo6U2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
YXJzZXI6OlNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUGFyc2VyOjpTZWdtZW50OjpyZWFkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OmdldFNoYXJlZEJ1ZmZlciBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHA6CisKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
KworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBh
bmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0
dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAgIFJlbmFt
ZSBvbmx5LCBubyBjaGFuZ2UgaW4gYmVoYXZpb3VyLgorCisgICAgICAgICogTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmg6CisgICAgICAgICogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZS5oOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9h
cmRJbWFnZVJlYWRlcklPUy5tbToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9t
YWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW06CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9D
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmg6CisgICAgICAgICog
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oOgorICAgICAgICAq
IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U3RhdHVzTWFwLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleXMuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlzLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAg
ICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHA6CisgICAgICAg
ICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmg6CisgICAgICAgICog
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHA6CisgICAgICAgICogTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9u
L01lZGlhTWV0YWRhdGEuY3BwOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNl
QnVmZmVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5o
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5k
bGVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNv
dXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcDoKKyAgICAgICAgKiBj
c3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgICogZWRpdGluZy9FZGl0b3Iu
aDoKKyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oOgorICAgICAg
ICAqIGVkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oOgorICAgICAgICAqIGVkaXRpbmcvV2ViQ29y
ZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvcmVQYXN0
ZWJvYXJkRmlsZVJlYWRlci5oOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2Eu
bW06CisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAq
IGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAqIGVkaXRp
bmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKiBmaWxlYXBp
L05ldHdvcmtTZW5kUXVldWUuY3BwOgorICAgICAgICAqIGZpbGVhcGkvTmV0d29ya1NlbmRRdWV1
ZS5oOgorICAgICAgICAqIGh0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwOgorICAgICAgICAq
IGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRh
Y2htZW50RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9JbWFnZURv
Y3VtZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgICogaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UGFnZUFnZW50Lmg6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAg
ICAqIGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAg
ICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvTG9hZGVyU3RyYXRlZ3ku
aDoKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAg
ICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9S
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAq
IGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291
cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmg6CisgICAgICAg
ICogbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0Lmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3Rvcnku
Y3BwOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5Lmg6CisgICAgICAg
ICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZl
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaDoKKyAg
ICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6CisgICAgICAgICog
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0Lmg6CisgICAgICAg
ICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oOgorICAgICAgICAqIGxvYWRl
ci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAgICAgICogbG9hZGVyL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLm1tOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogcGFn
ZS9QYWdlLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAg
KiBwYWdlL1BhZ2VTZXJpYWxpemVyLmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGEuaDoKKyAg
ICAgICAgKiBwYWdlL1NoYXJlRGF0YVJlYWRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vS2V5
ZWRDb2RpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJk
V3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50Lmg6
CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
U3RhdGljUGFzdGVib2FyZC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vU3RhdGljUGFzdGVib2Fy
ZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmg6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50
RmlsdGVyLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0Nv
bnRlbnRGaWx0ZXIubW06CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29h
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1Qcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVV0aWxpdGllcy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRp
bGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJH
ZW5lcmljLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVy
aWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dP
RkZGaWxlRm9ybWF0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZv
cm1hdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWly
UGxheVN0cmVhbWluZy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRm
b3JtRGF0YUNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNs
ZWFyS2V5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1U
aHVuZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NE
TVRodW5kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUNhaXJvLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRm
b3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dFBsYXRmb3JtRGF0YVdpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlRGVjb2RlckRpcmVjdDJELmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFk
ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdl
UmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
RGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUElt
YWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZVJlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0lt
YWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVy
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURl
Y29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0
Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdENsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL3Bv
c2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6
CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgICogdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5oOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIu
Y3BwOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiB3
b3JrZXJzL1NjcmlwdEJ1ZmZlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJGZXRjaC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRT
dG9yYWdlLmNwcDoKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAg
ICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKworMjAyMS0x
MS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBT
aGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxhciB0byBTdHJp
bmdCdWlsZGVyLCBhIFNoYXJlZEJ1ZmZlciBjYW4gbm93IG9ubHkgYmUgbW9kaWZpZWQgdGhyb3Vn
aAorICAgICAgICBhIFNoYXJlZEJ1ZmZlckJ1aWxkZXIuIEEgU2hhcmVkQnVmZmVyIGJlY29tZXMg
aW1tdXRhYmxlIG9uY2UgY3JlYXRlZC4KKworICAgICAgICBGbHktQnk6IFBhc3MgU2hhcmVkQnVm
ZmVyIHZpYSBjb25zdCByZWZlcmVuY2VzIG9yIHBvaW50ZXJzIHdoZXJlIGl0J3MgZWFzeQorICAg
ICAgICB0byBkbyBzby4KKyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3Vy
OyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6YWRkQWxsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6
OmNsZWFuKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25z
dW1lcjo6dGFrZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6
c2V0U291cmNlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZGF0YSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0YSk6IERlbGV0ZWQuCisgICAg
ICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YTo6UmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjpkYXRhTGVuZ3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNCdWZmZXJlZERhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6aGFzRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVz
b3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVy
aW5nUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjphZGREYXRhT3JC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURh
dGEpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3Rp
dHV0ZVJlc291cmNlOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVS
ZXNvdXJjZTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6
Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpkZWxpdmVyKToK
KyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6
ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OnN0b3JlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydCk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1
cGRhdGVCdWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y29u
dmVydGVkRGF0YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdl
Ojp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmZpbmlzaExv
YWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3Vt
ZW50OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9j
dW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRU
ZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJE
aWRTdGFydENvbnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRl
cjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0Nv
bnZlcnRlcjo6cHJldmlld0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0Nv
bnZlcnRlcjo6cmVwbGF5VG9DbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVk
QnVmZmVyQnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjph
cHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3Ig
Ym9vbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjppc051
bGwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6aXNFbXB0
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpzaXplIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnJlc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVtcHR5KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmdldCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2UpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
QnVpbGRlcjo6ZW5zdXJlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5
aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9t
V2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9y
ZWRJblNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRh
OjpJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6YXBwZW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluaXREYXRhOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cmVhZElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QcmV2aWV3Q29u
dmVydGVySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJldmlld0NvbnZlcnRlcjo6UHJldmll
d0NvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6On5NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
cjo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6dGFrZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VS
ZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5l
cmF0b3I6OkRhdGE6OkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVy
YXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRlbnRMZW5ndGhG
cm9tRGF0YSk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRC
dWZmZXI6OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0QnVmZmVyOjphcHBlbmQpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0
QnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmJ1ZmZlciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6Omlzb2xhdGVkQ29weSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAq
IHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckZvbnRMb2FkUmVxdWVzdDo6V29ya2VyRm9udExvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YSk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAgKiB4
bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6
OlhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVh
dGVSZXNwb25zZUJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0
ZVJlc3BvbnNlQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6
OmNsZWFyUmVzcG9uc2VCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKKzIw
MjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBE
aXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9u
ZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFdoZW4gY2FsbGluZyBT
aGFyZWRCdWZmZXI6OmRhdGEoKSB0aGUgdW5kZXJseWluZyBkYXRhIHdhcyBmbGF0dGVuZWQsCisg
ICAgICAgIGFuZCBzbyBjb3VsZCBiZSBtdXRhdGVkIHdoaWxlIGJlaW5nIHNoYXJlZC4gVGhpcyB3
YXMgYW4gdW5kZXNpcmFibGUKKyAgICAgICAgYmVoYXZpb3VyLgorICAgICAgICBXZSBpbnRyb2R1
Y2UgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB3aGljaCBndWFyYW50ZWUgdGhhdCBpdHMgY29udGVu
dCBpcyBtYWRlCisgICAgICAgIG9mIGNvbnRpZ3VvdXMgZGF0YS4KKyAgICAgICAgQWxsIG1ldGhv
ZHMgdGhhdCB3b3VsZCBoYXZlIG11dGF0ZWQgYSBTaGFyZWRCdWZmZXIgd2hlbiBiZWluZyBmbGF0
dGVuZWQgYXJlCisgICAgICAgIG1vdmVkIHRvIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIuCisKKyAg
ICAgICAgQXJlYSB3aGVyZSBTaGFyZWRCdWZmZXJzIHdlcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBh
IHNpbmdsZSBzZWdtZW50IHdoZXJlCisgICAgICAgIGNvbnZlcnRlZCB0byBhIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIuCisgICAgICAgIFByZXZpb3VzbHksIGEgU2hhcmVkQnVmZmVyIHdvdWxkIGhh
dmUgYmVlbiBmbGF0dGVuZWQgb25seSBpZiBpdCBuZWVkZWQgdG8gYmUKKyAgICAgICAgYW5kIG9u
bHkgd2hlbiB0aGUgZGF0YSB3YXMgZ29pbmcgdG8gYmUgYWNjZXNzZWQ7IGZvbGxvd2luZyB0aGlz
IGNoYW5nZQorICAgICAgICB0aGUgY29udmVyc2lvbiBpcyBub3cgZXhwbGljdGx5IGRvbmUgdGhy
b3VnaCBhIGNhbGwgdG8gbWFrZUNvbnRpZ3VvdXMuCisgICAgICAgIFRoaXMgY29udmVyc2lvbiBp
cyBhIG5vLW9wIGlmIHRoZSBTaGFyZWRCdWZmZXIgYmVpbmcgY29udmVydGVkIHdhcyBhbHJlYWR5
CisgICAgICAgIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgV2l0aCB0aGUgbmF0
dXJlIG9mIGEgU2hhcmVkQnVmZmVyIGJlaW5nIHNoYXJlZCBieSBwb3RlbnRpYWxseSBtdWx0aXBs
ZQorICAgICAgICB1c2VycyBpdCB3YXMgbmVjZXNzYXJ5IHRvIGxpbWl0IHRoZSBudW1iZXIgb2Yg
Y29udmVyc2lvbnMgYmVpbmcgcGVyZm9ybWVkCisgICAgICAgIG9uIGRlbWFuZCB0byBhdm9pZCBy
ZWR1bmRhbmN5LgorICAgICAgICBXaGVuIHRoZSBmbGF0dGVuaW5nIGNvdWxkIGhhdmUgb2NjdXJl
ZCwgdGhlIFNoYXJlZEJ1ZmZlciBjcmVhdGlvbiBwb2ludHMgd2VyZQorICAgICAgICB0cmFjZWQg
YmFjayBhbmQgaWRlbnRpZmllZCB0byBtYWtlIHRoZSBidWZmZXIgY29udGlndW91cyB0aGVuLgor
ICAgICAgICBJbiB0aGUgZW5kLCB0aGVyZSdzIG5vIG1vcmUgU2hhcmVkQnVmZmVyIGZsYXR0ZW5p
bmcgb3BlcmF0aW9ucyB0aGFuIHRoZXJlCisgICAgICAgIHdvdWxkIGhhdmUgYmVlbiBiZWZvcmUg
dGhpcyBjaGFuZ2UuCisgICAgICAgIFRoZXJlJ3MgYSBwb3RlbnRpYWwgaW5jcmVhc2Ugb2YgdGVt
cG9yYXJ5IG1lbW9yeSB1c2FnZSB3aXRoIHRoZQorICAgICAgICBTY3JpcHRCdWZmZXJTb3VyY2VQ
cm92aWRlciBjbGFzczsgYnVnIDIzMzUxMSBpcyB0cmFja2luZyBpdC4KKworICAgICAgICBXaGls
ZSB0aGUgY2hhbmdlIGlzIGV4dGVuc2l2ZSwgY29kZSBjb3ZlcmFnZSBvZiB0aGUgbW9kaWZpZWQg
YXJlYXMgaXMgdGhvcm91Z2gKKyAgICAgICAgd2hpY2ggbWFrZXMgdW5kZXRlY3RlZCByZWdyZXNz
aW9ucyB1bmxpa2VseS4KKworICAgICAgICBJbiBidWcgMjMzNDQyLCBhIFNoYXJlZEJ1ZmZlciB3
aWxsIGJlIG1hZGUgY29tcGxldGVseSBpbW11dGFibGUgb25jZSBjcmVhdGVkLgorCisgICAgICAg
IE5vIG9ic2VydmFibGUgY2hhbmdlLgorICAgICAgICBDb3ZlcmVkIGJ5IGFsbCBleGlzdGluZyB0
ZXN0cy4gTmV3IEFQSSB0ZXN0cyBjcmVhdGRlZC4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5
cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKToKKyAgICAg
ICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNh
Y2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25z
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAgICAgICogTW9k
dWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVF
bmdpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6Omlzb2xhdGVkUmVz
cG9uc2VCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpjb3B5UmVzcG9u
c2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAg
ICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2Fu
aXRpemVLZXlpZHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
dGF0dXNNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRzTWF0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6
OmNvbnN1bWVGb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmJvZHlBc0Zv
cm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNUZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNo
dW5rKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKToKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdo
dDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRSYW5nZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNlcmlhbGl6ZUlEQktleVBhdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6c2VyaWFsaXplSURCS2V5RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVh
dGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpT
UUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEhhc0luZGV4UmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJ
bmRleFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmVjb3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
dW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUlu
ZGV4U3RhdGVtZW50SWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0Rh
dGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6cmVhZHlUb1NlbmQpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudCk6
CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAg
ICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVy
VVNELm1tOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVUb1RlbXBvcmFyeUZpbGUpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpsb2FkKToK
KyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBlZGl0aW5nL0Vk
aXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnByb21pc2VkQXR0YWNobWVudElu
Zm8pOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TZXJp
YWxpemVkQXR0YWNobWVudERhdGEuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6YXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFG
b3JBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2VsZWN0aW9uSW5XZWJB
cmNoaXZlRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0YUluUlRGREZvcm1h
dCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmRhdGFJblJURkZvcm1hdCk6CisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAgICAoSFRNTENvbnZlcnRl
cjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yVVJM
KToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9yRWxlbWVudCk6CisgICAgICAgICogZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNl
UmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdE1h
cmt1cEFuZEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVNYXJrdXBXaXRoQXJj
aGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYpOgorICAgICAgICAqIGVkaXRpbmcv
bWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW1hZ2VJbldlYkFy
Y2hpdmVGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZCk6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUp
OgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkZWNvZGVEYXRh
VG9Db250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hl
ZFJlc291cmNlQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWlu
UmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6
c2hhcmVkQnVmZmVyQ29udGVudCk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6
CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0KToK
KyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6cGFyc2VkQXJjaGl2ZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQpOgor
ICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVz
dCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmJ1ZmZlckZyb21SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseSk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJv
bm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
aDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcik6
CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKToKKyAgICAg
ICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxl
Z2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24pOgorICAgICAgICAqIGxvYWRlci9h
cmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFy
c2VyOjpwYXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGlj
YXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0Ojpz
aGVldFRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6
ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRGb250OjpjaGVja05vdGlmeSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNv
dXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNl
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVk
RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6
ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdG
b250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4
dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6
ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JD
b2NvYS5oOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hh
cmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
a0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKToKKyAgICAgICAgKiBwYWdl
L0VkaXRvckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdlU2Vy
aWFsaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXpl
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0
eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9S
ZXNvdXJjZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBw
YWdlL1NoYXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6U2hhcmVEYXRhUmVhZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXJlRGF0YVJlYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJk
Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1
ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Q
YXN0ZWJvYXJkV3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVi
b2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjptYWtlQ29udGlndW91cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc0VtcHR5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNDb250aWd1b3VzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6Omhhc09uZVNlZ21lbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhQXNDaGFyUHRyIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpkYXRhIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpkYXRhQXNDaGFyUHRyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRC
dWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6dXRmOEJ1ZmZlcik6CisgICAgICAgICog
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpEYXRhU2VnbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8pOgorICAgICAgICAq
IHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVk
RW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRF
bmNvZGVyQ0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAq
IHBsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnZlcnRUSUZGVG9QTkcpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEJ1ZmZl
ckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hh
cmVkQnVmZmVyQ29jb2EubW06CisgICAgICAgICgtW1dlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIGlu
aXRXaXRoRGF0YVNlZ21lbnQ6cG9zaXRpb246c2l6ZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdCk6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5
ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5
ZWRFbmNvZGVyR2xpYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHbGliOjpm
aW5pc2hFbmNvZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVh
ZGluZ0ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9G
b250Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vZGVsOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6Ok1vZGVsKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpyZWFkVUludDMyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MTYpOgorICAgICAg
ICAoV2ViQ29yZTo6aXNXT0ZGKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmV4dHJhY3RTaW5mRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUpTT05WYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RM
aWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFBy
b3ZpZGVSZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29k
ZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OnNldERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNl
TWVkaWFMb2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNH
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpzZXREYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFibGUgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9y
bURhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpv
cGVuVHlwZVRhYmxlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2Rl
ZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjppbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bWFya3VwVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0
RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkluaXREYXRhOjpJbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERG
RG9jdW1lbnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6
OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZU1hdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRo
SXRhbGljc0NvcnJlY3Rpb25JbmZvOjpnZXRJdGFsaWNDb3JyZWN0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhJbmZvOjptYXRoSXRhbGljc0NvcnJlY3Rp
b25JbmZvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHbHlwaEFzc2VtYmx5
OjpnZXRBc3NlbWJseVBhcnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpN
YXRoR2x5cGhDb25zdHJ1Y3Rpb246OmdldFNpemVWYXJpYW50cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpPcGVuVHlwZTo6TWF0aEdseXBoQ29uc3RydWN0aW9uOjpnZXRBc3NlbWJseVBhcnRz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoVmFyaWFudHM6Om1hdGhH
bHlwaENvbnN0cnVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFU
SFRhYmxlOjptYXRoQ29uc3RhbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBl
OjpNQVRIVGFibGU6Om1hdGhHbHlwaEluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6Ok1BVEhUYWJsZTo6bWF0aFZhcmlhbnRzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OnZhbGlkYXRlVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlRh
YmxlQmFzZTo6aXNWYWxpZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVC
YXNlOjp2YWxpZGF0ZVB0cik6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNl
Ojp2YWxpZGF0ZU9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6VGFi
bGVXaXRoQ292ZXJhZ2U6OmdldENvdmVyYWdlSW5kZXggY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnJlbmFtZUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1lQW5kQWN0aXZhdGVG
b250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxp
dGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVy
dGljYWxEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTdWJzdGl0dXRpb25T
dWJUYWJsZTo6Y292ZXJhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxv
b2t1cFRhYmxlOjpnZXRTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
ZW5UeXBlOjpMb29rdXBMaXN0Ojpsb29rdXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6OkZlYXR1cmVUYWJsZTo6Z2V0R2x5cGhTdWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlzdDo6ZmVhdHVyZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZUxpc3Q6OmZpbmRGZWF0dXJlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpMYW5nU3lzVGFibGU6OmZlYXR1cmUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OlNjcmlwdFRhYmxlOjpkZWZhdWx0TGFuZ1N5
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2NyaXB0TGlzdDo6c2NyaXB0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0OjpkZWZhdWx0
U2NyaXB0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpTY3JpcHRMaXN0Ojpk
ZWZhdWx0TGFuZ1N5cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRh
YmxlOjpzY3JpcHRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VC
VGFibGU6OmZlYXR1cmVMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpH
U1VCVGFibGU6Omxvb2t1cExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6
OkdTVUJUYWJsZTo6ZGVmYXVsdExhbmdTeXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3Bl
blR5cGU6OkdTVUJUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVu
VHlwZTo6R1NVQlRhYmxlOjpnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpsb2FkSG10eFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlw
ZVZlcnRpY2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybU9wZW5UeXBlVGFi
bGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRDdXN0b21EYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdGlvbkRhdGE6OmN1c3RvbURhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURl
Y29kZXI6OnNldElDQ1Byb2ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9y
bVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6
OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3
cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZv
ckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUl0ZW1Q
cm92aWRlclJlZ2lzdHJhdGlvbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0
ZWJvYXJkOjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVXcmFwcGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OnJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdy
aXRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBhc3RlYm9hcmRXcml0ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZEl0ZW0pOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFz
U2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
Lm1tOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVj
ZWl2ZWREYXRhOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlw
YXJ0SGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OmRp
ZENvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nl
c3NDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRG
aWxlSWZFbmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxJbWFn
ZUZpbGVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2JhbEhEcm9wQ29udGVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUp
OgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NETTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAgICAqIHdvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZv
bnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyRmV0Y2g6OnByb2Nlc3NSZXNwb25zZSk6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JM
aWJ4c2x0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY0xvYWRlckZ1bmMpOgorICAgICAgICAq
IHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om9wZW5GdW5jKToKKwogMjAyMS0xMi0wNiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIFVzZSBlbmQgYml0cyBpbiB0ZXh0
IGJveCBpdGVyYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3MTc5NDc1ZjdkZmQwOGYxNDhkMDI1ODdlNDBjZmQ1
OWIwMWFhOGRhLi43YzY3MGYwNWI5YjhkOTlkODdhZTEyYzBhYjEwMjQwMmQyMGI4NjJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMzMiBAQAorMjAyMS0xMi0wNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxq
eWFAYXBwbGUuY29tPgorCisgICAgICAgIFNvdXJjZUJ1ZmZlclBhcnNlciBzaG91bGQgYmUgdXNp
bmcgY29udGlndW91cyBzaGFyZWQgYnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM4NjUKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODYwODUy
NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjphcHBlbmQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaDoKKworMjAy
MS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJl
bmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2Mzkw
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJl
ZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBD
b250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0
aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETVByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETVByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvblByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5j
cHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5j
cHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
bGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RU
YXNrLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5Lmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNw
cDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNw
cDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlLmg6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKiBT
aGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFy
ZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1l
bnRDb2RlcnNHdGsuY3BwOgorICAgICAgICAqIFNoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzV2luLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQ
SUF0dGFjaG1lbnRDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFy
Z2V0R3RrMy5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlwYm9h
cmRHdGs0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVy
UHJpdmF0ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJ
SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3Mvd2lu
L1dlYlByb2Nlc3NXaW4uY3BwOgorCisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAg
ICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpi
dWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpk
aWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVt
ZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRG
YWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
Lmg6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250
aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMz
MzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5
VG9TeW5jaHJvbm91c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTCk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5Lmg6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OlNoYXJlZEJ1ZmZlckNvcHkp
OgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIpOgorICAgICAgICAoSVBD
OjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1No
YXJlZE1lbW9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hh
cmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tOgorICAgICAgICAoQVBJOjpX
ZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8
V2ViQ29yZTo6Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFNoYXJlZC9S
ZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6
OnRyeVdyYXBJblNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmVuY29k
ZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OmRlY29kZVR5cGVzQW5kRGF0YSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRl
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6
OkVudHJ5Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
ZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJz
R3RrLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAg
ICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3Qp
OgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAg
KEFQSTo6Z2V0RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZy
b21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0b3JlQXBwSGlnaGxpZ2h0
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJ
bWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3Rl
Ym9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmls
ZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpy
ZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFz
azo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0p
OgorICAgICAgICAoYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJ
bWFnZTpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVu
dDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpyZWxlYXNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hl
UmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9h
cmREYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Zmlu
aXNoZWRMb2FkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lOjpzb3VyY2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0RGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgY29u
c3QpOgorCiAyMDIxLTEyLTA1ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgog
CiAgICAgICAgIFtHUFUgUHJvY2Vzc10gQWRkIHRoZSBlbmNvZGluZy9kZWNvZGluZyBmb3IgRmls
dGVyIGFuZCBGaWx0ZXJFZmZlY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggZDc3NmU4MmRmMTMy
Y2FmNjUyNzkzYTc5YTAwODNhZDY1NTlkYzI2NS4uMzc3N2YyYTU2YmM4ZTYwNGU5NDUxZThiZDEy
ZTI1YjQzYTM1MTY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAy
MS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJl
bmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2Mzkw
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJl
ZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBD
b250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0
aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Q
aW5nSGFuZGxlLmg6CisKIDIwMjEtMTEtMTIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIE1ha2Ugc29ydC1YY29kZS1wcm9qZWN0LWZpbGUgaWRlbXBvdGVudApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc2YWE2YWFmODRkZWIwODJlNGM4NDMyMjQ5MzM4
MGQ4MzNkZTkyZDEuLjVmNjEwMjE5NmEyYzkwY2I5YjQxNWRkNTgwMzg5ODYzYjEwNDVlOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAyMS0xMi0wMyAg
SmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFy
ZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBh
cmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1
YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgICogV2ViVmlldy9XZWJEYXRh
U291cmNlLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICog
V2ViVmlldy9XZWJSZXNvdXJjZS5tbToKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVk
QnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAK
KyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgKiBET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tOgorICAgICAgICAoLVtE
T01IVE1MSW1hZ2VFbGVtZW50IGRhdGFSZXByZXNlbnRhdGlvbjpdKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBh
c3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
bW06CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUpOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQpOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViRGF0YVNv
dXJjZSBkYXRhXSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06
CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBkb2N1bWVudFNvdXJjZV0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIChjcmVhdGVTaGFyZU1lbnVJ
dGVtKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1tOgorICAgICAgICAoLVtXZWJS
ZXNvdXJjZSBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW1dlYlJlc291cmNlIGRhdGFd
KToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmluZ1ZhbHVlXSk6CisKIDIwMjEtMTItMDIg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2Vi
R1BVXSBIb29rIHVwIG5hdmlnYXRvci5ncHUucmVxdWVzdEFkYXB0ZXIoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCmluZGV4IDAyZTk0NmJjMWZiMGIzNTZiYjE1YWI4MzYwZTg2MTQ1NTQ3MjQ3
Y2MuLjg5ZDM0ODg2NDYzMmE4MmQyZWQwMzhkMTQ5N2NkODJhYjM1ZTdlOWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIg
Y2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1l
ZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAg
ICAgdHlwZXMuCisKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uY3BwOgorICAgICAgICAqIE1lbW9y
eVN0cmVhbS5oOgorICAgICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAqIFdlYkZy
YW1lLmg6CisgICAgICAgICogV2ViS2l0RExMLmNwcDoKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5j
cHA6CisgICAgICAgICogV2ViUmVzb3VyY2UuaDoKKworMjAyMS0xMi0wMSAgSmVhbi1ZdmVzIEF2
ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVy
IGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzM0NDIKKyAgICAgICAgcmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFt
ZTo6bG9hZERhdGEpOgorCisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJv
bSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICBy
ZGFyOi8vODUzMzM4MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAgICAgIChNZW1vcnlTdHJlYW06Ok1lbW9yeVN0
cmVhbSk6CisgICAgICAgIChNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAg
KiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdl
YkFyY2hpdmU6OmRhdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRh
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAg
KiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRhdGFTb3VyY2U6OmRhdGEpOgorICAg
ICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYlJlc291cmNlOjpjcmVhdGVJbnN0
YW5jZSk6CisgICAgICAgICogV2ViUmVzb3VyY2UuaDoKKwogMjAyMS0xMi0wMiAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIE1ha2UgV2ViIExvY2sgQVBJ
IHdvcmsgYWNyb3NzIG11bHRpcGxlIFdlYlByb2Nlc3NlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggZWFjY2EyYzIzM2E4YTY5MzcxNTkwODA3ZGZk
MzY3NWIwNjE1OTQyOC4uYjQ2OTNmOTFjNjA3ZDhkMDc0NTk0NjQ2ZThkYzQzNzJlOWJjOTllNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCkBAIC0xMjks
NyArMTI5LDcgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8
QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYpOwogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3Vy
Y2UsIHNpemVfdCBieXRlTGVuZ3RoKTsKIAotICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENs
YW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlD
cmVhdGVBcnJheUJ1ZmZlci4KKyAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJy
YXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRy
eUNyZWF0ZUFycmF5QnVmZmVyLgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJy
YXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25l
ZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8
QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1
bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAK
aW5kZXggMzM1NGI1MmE1MGNiYjE4OWZkZmFlYjdkODI0ODNiZTBjNDFjM2Q0ZS4uZGEzMzZlNmY1
YjE2OTRlMzc0NzY5MGM0M2QyYjUzZjM1MThjMDlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVh
ZGVyLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhUExB
VEZPUk0oQ09DT0EpCiAKLXZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgQ2xp
cGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCmluZGV4IDJiNjI2Mjg0MTliMDljYmI2OTU1
MjE1YjBkNWQ3ZDczYzBiMzc0NGQuLjZlMjIwNDhjZjVmZWE5YWE2MmRhZGY0NWIxZjM1YzRjZTBk
N2Q2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEltYWdlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaApAQCAtMzEsNyArMzEsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBDbGlwYm9hcmRJbWFnZVJl
YWRlciA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICBDbGlwYm9hcmRJbWFnZVJlYWRlcihE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBAIC00Nyw3ICs0Nyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmluYWwg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgYm9vbCBzaG91bGRSZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogICAg
IFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggZDA3
NDZkYTJkYTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRiZjljOTA3OC4uZWZmMTBiNWI2NWZkODFhZDli
YTMyZjgwYjNmMmNmMmY4ZTk4ZjFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTIxNiw4ICsyMTYsOCBAQCB2b2lkIENsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2U6Omludm9rZUNvbXBsZXRpb25IYW5kbGVyKCkKICAgICAgICAg
YXV0byYgZGF0YSA9IGl0ZW1UeXBlTG9hZGVyLT5kYXRhKCk7CiAgICAgICAgIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYgISFzdGQ6OmdldDxTdHJpbmc+KGRhdGEp
KQogICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZVN0cmluZyh0eXBlLCBzdGQ6OmdldDxTdHJp
bmc+KGRhdGEpKTsKLSAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
U2hhcmVkQnVmZmVyPj4oZGF0YSkpCi0gICAgICAgICAgICBjdXN0b21EYXRhLndyaXRlRGF0YSh0
eXBlLCBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkuY29weVJlZigpKTsKKyAgICAg
ICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+KGRhdGEpKQorICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwgc3Rk
OjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihkYXRhKS5jb3B5UmVmKCkpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNjUsOSArMjY1LDkgQEAgdm9pZCBDbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVE
YXRhSWZOZWUKIHsKICAgICBpZiAobV90eXBlID09ICJ0ZXh0L2h0bWwiX3MpIHsKICAgICAgICAg
U3RyaW5nIG1hcmt1cFRvU2FuaXRpemU7Ci0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7Ci0gICAgICAgICAgICBhdXRvJiBidWZm
ZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKLSAgICAgICAgICAgIG1h
cmt1cFRvU2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7CisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgeworICAgICAgICAgICAgYXV0byYgYnVmZmVyID0g
c3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihtX2RhdGEpOworICAgICAgICAg
ICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9kYXRhKSkKICAgICAgICAgICAgIG1hcmt1cFRv
U2FuaXRpemUgPSBzdGQ6OmdldDxTdHJpbmc+KG1fZGF0YSk7CiAKQEAgLTI3OCw5ICsyNzgsOSBA
QCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBl
TG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogICAgIH0KIAogICAgIGlmIChtX3R5cGUgPT0gImlt
YWdlL3BuZyJfcykgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0
aXplOwotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVy
Pj4obV9kYXRhKSkKLSAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSBzdGQ6OmdldDxSZWY8
U2hhcmVkQnVmZmVyPj4obV9kYXRhKS5wdHIoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRpemU7CisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4obV9kYXRhKSkKKyAgICAgICAg
ICAgIGJ1ZmZlclRvU2FuaXRpemUgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+KG1fZGF0YSkucHRyKCk7CiAgICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8U3RyaW5nPihtX2RhdGEpKQogICAgICAgICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHV0ZjhC
dWZmZXIoc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCmluZGV4IDJjYzJjOGUxYTU0ZTE4ZDczNDk1YzUzMGNk
NzdkNTRmOTlhNTI5YTcuLjM3YzgyNWUyMzVhOGE4YjdlNDRlNDBmYjBjMmQ3NzI0NDA3YTc1ODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmgKQEAgLTM4
LDcgKzM4LDcgQEAgY2xhc3MgRE9NUHJvbWlzZTsKIGNsYXNzIEZpbGVSZWFkZXJMb2FkZXI7CiBj
bGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlIDogcHVibGljIENsaXBib2FyZEl0
ZW1EYXRhU291cmNlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTUzLDcgKzUz
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaW52b2tlQ29tcGxldGlvbkhhbmRsZXIoKTsKIAot
ICAgIHVzaW5nIEJ1ZmZlck9yU3RyaW5nID0gc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJl
ZEJ1ZmZlcj4+OworICAgIHVzaW5nIEJ1ZmZlck9yU3RyaW5nID0gc3RkOjp2YXJpYW50PFN0cmlu
ZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAgICBjbGFzcyBDbGlwYm9hcmRJdGVt
VHlwZUxvYWRlciA6IHB1YmxpYyBGaWxlUmVhZGVyTG9hZGVyQ2xpZW50LCBwdWJsaWMgUmVmQ291
bnRlZDxDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcj4gewogICAgIHB1YmxpYzoKICAgICAgICAgc3Rh
dGljIFJlZjxDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdHlw
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2Fy
ZEltYWdlUmVhZGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCmluZGV4IDQzMDIzNjFlNmZlMjc4NTI4
NGFlNmMwODMyOGFmMzA3YTNhNDQxMDAuLjI3NGUwMzhkNDE4NzAxNjFlNGVlYjgwYzEyYWJiYTg3
MWY5ZDRhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KQEAg
LTM0LDEwICszNCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ2xpcGJvYXJk
SW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFk
QnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikg
ewotICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5j
ZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAg
IGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNlKCkgaW5pdFdp
dGhEYXRhOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
ICAgICAgICAgaWYgKGF1dG8gbnNEYXRhID0gVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdl
LmdldCgpKSkKICAgICAgICAgICAgIG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKG1fZG9jdW1lbnQu
Z2V0KCksIFZlY3RvciB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihuc0RhdGEuYnl0ZXMp
LCBuc0RhdGEubGVuZ3RoIH0sIG1fbWltZVR5cGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRl
ck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlw
Ym9hcmRJbWFnZVJlYWRlck1hYy5tbQppbmRleCBiNGMzMWNhNTA2MzljY2NhNGM1NTA1NGQ0OTEz
MTc4NjlkYTdlNWJmLi4zODIxYjAzNzE4MDI4MjNkNjlhODMwYTMxMGRhMzQ3MDhkNjMzMDc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCkBAIC0zMywxMCArMzMs
MTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVy
OjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAg
YXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVy
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhb
W05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRvIGNnSW1hZ2UgPSBbaW1hZ2Ug
Q0dJbWFnZUZvclByb3Bvc2VkUmVjdDpuaWwgY29udGV4dDpuaWwgaGludHM6bmlsXSkgewogICAg
ICAgICAgICAgYXV0byByZXByZXNlbnRhdGlvbiA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVw
IGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZV0pOwogICAgICAgICAgICAgTlNEYXRhKiBu
c0RhdGEgPSBbcmVwcmVzZW50YXRpb24gcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6TlNCaXRtYXBJ
bWFnZUZpbGVUeXBlUE5HIHByb3BlcnRpZXM6QHsgfV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IGU2Y2MxYWFlNzgzYTUyMDk0ZjY1NDk5YmI5MGRkN2Yw
MDcxZDQyNGMuLmYwNWMyMzMwN2JjNWEwZTU4MmRkY2Q4NjBkNWJiMWExYjMwOTMyNTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC0yODksNyArMjg5LDcg
QEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNp
emVfdCByZWNvcmRQb3NpdGlvbiA9IHRhc2tIYW5kbGVyLT5hZGRSZWNvcmQodG9Db25uZWN0aW9u
UmVjb3JkKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLCBudWxscHRyKSk7CiAKLSAgICAgICAgICAg
IHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9IFdURk1v
dmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCksIHJlc3BvbnNlID0gUmVmIHsgcmVzcG9uc2UgfV0gKGF1dG8mJiByZXN1bHQpIG11dGFi
bGUgeworICAgICAgICAgICAgcmVzcG9uc2UuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Rh
c2tIYW5kbGVyID0gV1RGTW92ZSh0YXNrSGFuZGxlciksIHJlY29yZFBvc2l0aW9uLCBkYXRhID0g
U2hhcmVkQnVmZmVyQnVpbGRlcigpLCByZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRv
JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBpZiAodGFza0hhbmRsZXItPmlz
RG9uZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI5OSw5ICsyOTksOSBA
QCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAg
ICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXpl
KCkpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRs
ZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIFdURk1vdmUoZGF0
YSkpOworICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5KHJl
Y29yZFBvc2l0aW9uLCByZXNwb25zZSwgZGF0YS50YWtlKCktPm1ha2VDb250aWd1b3VzKCkpOwog
ICAgICAgICAgICAgfSk7CiAgICAgICAgIH0sIGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRv
cnMoKS5mZXRjaCk7CiAgICAgfQpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1
dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVm
PEZldGNoCiAKICAgICBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IGJvZHk7CiAgICAgaWYg
KGF1dG8gYnVmZmVyID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQotICAgICAg
ICBib2R5ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIGJvZHkgPSBidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCk7CiAgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5nZXQoKSwg
cmVzcG9uc2UuZ2V0KCksIFdURk1vdmUoYm9keSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPHZvaWQ+
JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZl
KCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewogICAgICAgICAg
ICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKQEAgLTM3NSw3ICszNzUsNyBAQCB2
b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4m
JiByZXNwb25zZSwgRE9NUHJvbWlzZQogCiAgICAgaWYgKHJlc3BvbnNlLT5pc0JvZHlSZWNlaXZl
ZEJ5Q2h1bmsoKSkgewogICAgICAgICBhdXRvJiByZXNwb25zZVJlZiA9IHJlc3BvbnNlLmdldCgp
OwotICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25z
ZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgcGVu
ZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1dG8mJiBy
ZXN1bHQpIG11dGFibGUgeworICAgICAgICByZXNwb25zZVJlZi5jb25zdW1lQm9keVJlY2VpdmVk
QnlDaHVuayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJl
cXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVy
QnVpbGRlcigpLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwg
dGhpc10oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAKICAgICAgICAgICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VE
YXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2Up
LCByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmlzb2xhdGVkQ29weSgpKTsKQEAgLTM4Myw5ICsz
ODMsOSBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hS
ZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAg
ICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAg
ICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShX
VEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4geyBXVEZNb3ZlKGRhdGEpIH0pOworICAgICAgICAgICAgICAgIHRo
aXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0
KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlKCkt
Pm1ha2VDb250aWd1b3VzKCkgfSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2lu
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApp
bmRleCAyNTkxNGI0MGJiMjM4M2EwNzg4MDRmODliMTFiNDBkODk3MGI0MzA2Li5jMGY4MDMyYjA0
NTJjMzdlZTRjYWZiY2FmZDc5ZjA5ZDIxNDYzMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIFJlc3Bv
bnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiAg
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9y
bURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS0+aXNvbGF0
ZWRDb3B5KCk7CiAgICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4g
UmVzcG9uc2VCb2R5IHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Y29weSgpOworICAgICAgICBy
ZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsgLy8gU2hhcmVkQnVmZmVyIGFyZSBpbW11dGFibGUgYW5k
IGNhbiBiZSByZXR1cm5lZCBhcy1pcy4KICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYp
IC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNoZUVuZ2luZTo6UmVzcG9u
c2VCb2R5IHsgfTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNLmNwcAppbmRleCAyODUwZGJhMWUzYmZhMTFmNDg5YjQ0NDAzNTEzZDUxYWUxYmVh
ZDNhLi45ZDFiYzY3NGZjODI2Y2I2ZDE2ZDAyNTEwY2Y4NDAxMGFkY2JkNzc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCkBAIC0xMzUsMTcgKzEz
NSwxNyBAQCBib29sIENETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5z
dXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKTsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK1JlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkK
IHsKICAgICByZXR1cm4gSW5pdERhdGFSZWdpc3RyeTo6c2hhcmVkKCkuc2FuaXRpemVJbml0RGF0
YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKIH0KIAotYm9vbCBDRE06OnN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGlu
aXREYXRhKQorYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAg
ICByZXR1cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YShpbml0RGF0
YVR5cGUsIGluaXREYXRhKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCitSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIHJlc3BvbnNlKQogewogICAgIGlmICghbV9wcml2YXRlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5o
CmluZGV4IGQ4YTRiM2FmMTJmMWE3OTIzZDg4NzA1ZDViOTU4MWQzNmYxMDI3MGMuLmQ3YjFkNTNk
MDQ5MWY3Mjc3OWI1OTRiMmQ4M2MwOWI4M2JjZjIwN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBDRE1JbnN0
YW5jZTsKIGNsYXNzIENETVByaXZhdGU7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBDRE0gOiBwdWJsaWMgUmVmQ291bnRlZDxDRE0+LCBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8Q0RNPiwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7
CiBwdWJsaWM6CkBAIC03MywxMCArNzMsMTAgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNT
ZXNzaW9ucygpIGNvbnN0OwogICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRv
bVN0cmluZyYpIGNvbnN0OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYp
OwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3Qg
U2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0
aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9D
RE1DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xp
ZW50LmgKaW5kZXggMjFlNTJmNGI3MTRmYjkxZjY3Y2ZjMzk2MTM5YzE2NTI1YmZiN2I5Yi4uNDEw
ZWQyZmI2NDI3NTYyY2U5YmQ4ZWRhNGQ5MWE4NmJhOThjYWE2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oCkBAIC0zNiwxNCArMzYs
MTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0RNSW5zdGFuY2U7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDRE1D
bGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+Q0RNQ2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCB2b2lkIGNkbUNs
aWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29u
c3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBj
ZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmlu
ZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAwYmY1ZWFhNzRlZGJlNjg5YThk
MmU0MGEzNDFhNjcwNzQ0MGYyZDU2Li42Zjg4OGUxNzg1OGRkYTZkOTQ3MWVjMWY2ZWY1ZDA2NmRm
MGU0OTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTU0LDEzICs1NCwxMyBAQCBuYW1lc3Bh
Y2UgewogICAgIGNvbnN0IHVpbnQzMl90IGtLZXlJZHNNYXhLZXlJZFNpemVJbkJ5dGVzID0gNTEy
OwogfQogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBl
eHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RL
ZXlJRHNLZXlpZHMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IC8vIDEuIEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVk
aWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdAogICAgIGlmIChi
dWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEo
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CisgICAgU3RyaW5nIGpz
b24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFy
c2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCkBAIC03NCw3ICs3NCw3IEBAIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlp
ZHMoY29uc3QgU2hhcmVkCiAgICAgaWYgKCFraWRzQXJyYXkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAgZm9yIChhdXRv
JiB2YWx1ZSA6ICpraWRzQXJyYXkpIHsKICAgICAgICAgYXV0byBrZXlJRCA9IHZhbHVlLT5hc1N0
cmluZygpOwogICAgICAgICBpZiAoIWtleUlEKQpAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRz
KGNvbnN0IFNoYXJlZAogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0
YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDEuIEZvcm1hdAogICAg
IC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5
L2luaXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdApAQCAtMTA0LDE0ICsxMDQsMTQgQEAgc3RhdGlj
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBh
dXRvIGtpZHNBcnJheSA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIGJ1
ZmZlciA6IGtleUlEQnVmZmVyLnZhbHVlKCkpCi0gICAgICAgIGtpZHNBcnJheS0+cHVzaFN0cmlu
ZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
KTsKKyAgICAgICAga2lkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVuY29kZVRvU3RyaW5n
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogICAg
IG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtpZHNBcnJheSkpOwogCiAgICAgQ1N0
cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwogICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgp
KTsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rp
b25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNz
aEJveGVzRnJvbUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVy
Qm94Pj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gNC4gQ29tbW9uIFN5c3Rl
bUlEIGFuZCBQU1NIIEJveCBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5j
cnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9jZW5jLmh0bWwjY29tbW9uLXN5
c3RlbQpAQCAtMTUxLDkgKzE1MSw5IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pCiAgICAgcmV0
dXJuIHBzc2hCb3hlczsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZl
cj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7
CiAKICAgICBhdXRvIHBzc2hCb3hlcyA9IGV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhidWZmZXIp
OwogICAgIGlmICghcHNzaEJveGVzKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlE
c0NlbmMoY29uCiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
SW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0
aXplQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8g
NC4gQ29tbW9uIFN5c3RlbUlEIGFuZCBQU1NIIEJveCBGb3JtYXQKICAgICAvLyBodHRwczovL3cz
Yy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9jZW5j
Lmh0bWwjY29tbW9uLXN5c3RlbQpAQCAtMTk1LDcgKzE5NSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHNhbml0aXplV2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRp
YyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBDaGVjayBpZiB0aGUgYnVmZmVy
IGlzIGEgdmFsaWQgV2ViTSBpbml0RGF0YS4KICAgICAvLyBUaGUgV2ViTSBpbml0RGF0YSBpcyB0
aGUgQ29udGVudEVuY0tleUlELCBzbyBzaG91bGQgYmUgbGVzcyB0aGFuIGtXZWJNTWF4Q29udGVu
dEVuY0tleUlEU2l6ZS4KQEAgLTIwNSwxMCArMjA1LDEwIEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0
dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4+IGV4dHJhY3RLZXlJRHNXZWJNKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdlYk0oYnVmZmVyKTsK
KyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZEJ1ZmZlciA9IHNhbml0aXplV2Vi
TShidWZmZXIpOwogICAgIGlmICghc2FuaXRpemVkQnVmZmVyKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCkBAIC0yMzMsNyArMjMzLDcgQEAgSW5pdERhdGFSZWdpc3RyeTo6SW5pdERh
dGFSZWdpc3RyeSgpCiAKIEluaXREYXRhUmVnaXN0cnk6On5Jbml0RGF0YVJlZ2lzdHJ5KCkgPSBk
ZWZhdWx0OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6
ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdp
c3RyeTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGl0ZXIgPSBt
X3R5cGVzLmZpbmQoaW5pdERhdGFUeXBlKTsKICAgICBpZiAoaXRlciA9PSBtX3R5cGVzLmVuZCgp
IHx8ICFpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQpAQCAtMjQxLDcgKzI0MSw3IEBAIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhCiAgICAgcmV0dXJuIGl0ZXItPnZhbHVlLnNhbml0aXplSW5p
dERhdGEoYnVmZmVyKTsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZl
cj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRy
YWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gaXRlciA9IG1fdHlwZXMuZmluZChp
bml0RGF0YVR5cGUpOwogICAgIGlmIChpdGVyID09IG1fdHlwZXMuZW5kKCkgfHwgIWl0ZXItPnZh
bHVlLnNhbml0aXplSW5pdERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oCmluZGV4IGNkMTM4N2E2YmQwMzhm
ZjM0ZTJjZmI3NWY0NDNkZTdkOTQwMzIxYjAuLjc3ZDYwNGIwOGJiN2Y3ZTM4YmNjYjM1NDViMzRj
OGIxMzQzNTVlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oCkBAIC0zOCwxOSArMzgsMTkgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVy
Qm94OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgSW5pdERhdGFSZWdpc3RyeSB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIEluaXREYXRhUmVnaXN0cnkmIHNoYXJlZCgpOwogICAgIGZyaWVuZCBjbGFzcyBOZXZl
ckRlc3Ryb3llZDxJbml0RGF0YVJlZ2lzdHJ5PjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBT
aGFyZWRCdWZmZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxS
ZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5
SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpOwogCiAgICAgc3RydWN0IEluaXREYXRhVHlwZUNhbGxiYWNrcyB7Ci0gICAgICAg
IHVzaW5nIFNhbml0aXplSW5pdERhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPFJlZlB0cjxTaGFyZWRC
dWZmZXI+KGNvbnN0IFNoYXJlZEJ1ZmZlciYpPjsKLSAgICAgICAgdXNpbmcgRXh0cmFjdEtleUlE
c0NhbGxiYWNrID0gRnVuY3Rpb248c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZl
cj4+Pihjb25zdCBTaGFyZWRCdWZmZXImKT47CisgICAgICAgIHVzaW5nIFNhbml0aXplSW5pdERh
dGFDYWxsYmFjayA9IEZ1bmN0aW9uPFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik+OworICAgICAgICB1c2luZyBFeHRyYWN0S2V5SURz
Q2FsbGJhY2sgPSBGdW5jdGlvbjxzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+Pihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik+OwogCiAgICAgICAg
IFNhbml0aXplSW5pdERhdGFDYWxsYmFjayBzYW5pdGl6ZUluaXREYXRhOwogICAgICAgICBFeHRy
YWN0S2V5SURzQ2FsbGJhY2sgZXh0cmFjdEtleUlEczsKQEAgLTYxLDkgKzYxLDkgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBrZXlpZHNOYW1lKCk7CiAgICAgc3RhdGlj
IGNvbnN0IEF0b21TdHJpbmcmIHdlYm1OYW1lKCk7CiAKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRl
ckJveD4+PiBleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0g
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFj
dEtleUlEc0NlbmMoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHNhbml0aXplQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1T
cGVjaWZpY0hlYWRlckJveD4+PiBleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiBwcml2
YXRlOgogICAgIEluaXREYXRhUmVnaXN0cnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCA4YmZi
MWNlNzAxYTJmNWE2OWI1YjUxOTkxYWE4NjMyZWJiODkyNWY5Li4xNDc3NmMyMDE1MWJmZWZlMzgw
NzlhMzM3MzBjODg2NjI2OGJhNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCkBAIC0xNzYsNyArMTc2
LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEJ1ZmYKICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0
QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCB3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9LCBpbml0RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRh
LmRhdGEoKSwgaW5pdERhdGEubGVuZ3RoKCkpLCBpbml0RGF0YVR5cGUsIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJs
ZSB7CiAgICAgICAgIC8vIDEwLjEuIElmIHRoZSBpbml0IGRhdGEgaXMgbm90IHZhbGlkIGZvciBp
bml0RGF0YVR5cGUsIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJv
ci4KICAgICAgICAgLy8gMTAuMi4gTGV0IHNhbml0aXplZCBpbml0IGRhdGEgYmUgYSB2YWxpZGF0
ZWQgYW5kIHNhbml0aXplZCB2ZXJzaW9uIG9mIGluaXQgZGF0YS4KLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVkSW5pdERhdGEgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6
ZUluaXREYXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpOworICAgICAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkSW5pdERhdGEgPSBtX2ltcGxlbWVudGF0aW9uLT5z
YW5pdGl6ZUluaXREYXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpOwogCiAgICAgICAgIC8vIDEw
LjMuIElmIHRoZSBwcmVjZWRpbmcgc3RlcCBmYWlsZWQsIHJlamVjdCBwcm9taXNlIHdpdGggYSBu
ZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFzYW5pdGl6ZWRJbml0RGF0YSkg
ewpAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVl
c3QoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgICAgICAg
ICBtX2xhdGVzdERlY3J5cHRUaW1lID0gMDsKICAgICAgICAgfQogCi0gICAgICAgIG1faW5zdGFu
Y2VTZXNzaW9uLT5yZXF1ZXN0TGljZW5zZShtX3Nlc3Npb25UeXBlLCBpbml0RGF0YVR5cGUsIHNh
bml0aXplZEluaXREYXRhLnJlbGVhc2VOb25OdWxsKCksIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9v
bCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1
ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVxdWVz
dExpY2Vuc2UobV9zZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBzYW5pdGl6ZWRJbml0RGF0YS5y
ZWxlYXNlTm9uTnVsbCgpLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRz
SW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2Nl
ZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKIApAQCAtNDIyLDcgKzQyMiw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1
cGRhdGUoY29uc3QgQnVmZmVyU291cmNlJiByZXNwb25zZSwgUmVmPERlZmVycmVkUHJvbWlzZT4m
CiAgICAgLy8gNi4gUnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6CiAgICAgcXVl
dWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBb
dGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVzcG9uc2UgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLmxlbmd0aCgpKSwgcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBt
dXRhYmxlIHsKICAgICAgICAgLy8gNi4xLiBMZXQgc2FuaXRpemVkIHJlc3BvbnNlIGJlIGEgdmFs
aWRhdGVkIGFuZC9vciBzYW5pdGl6ZWQgdmVyc2lvbiBvZiByZXNwb25zZSBjb3B5LgotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRSZXNwb25zZSA9IG1faW1wbGVtZW50YXRp
b24tPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2UpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkUmVzcG9uc2UgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5p
dGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIAogICAgICAgICAvLyA2LjIuIElmIHRoZSBwcmVjZWRp
bmcgc3RlcCBmYWlsZWQsIG9yIGlmIHNhbml0aXplZCByZXNwb25zZSBpcyBlbXB0eSwgcmVqZWN0
IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAgICBpZiAoIXNh
bml0aXplZFJlc3BvbnNlIHx8IHNhbml0aXplZFJlc3BvbnNlLT5pc0VtcHR5KCkpIHsKQEAgLTYw
MSw3ICs2MDEsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKICAgICAgICAgLy8gNC4zLiBMZXQgbWVzc2FnZSB0eXBlIGJlIG51
bGwuCiAKICAgICAgICAgLy8gNC40LiBVc2UgdGhlIGNkbSB0byBleGVjdXRlIHRoZSBmb2xsb3dp
bmcgc3RlcHM6Ci0gICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YSht
X3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChDRE1JbnN0
YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtleXMsIHN0ZDo6b3B0aW9uYWw8UmVmPFNo
YXJlZEJ1ZmZlcj4+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUg
c3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlbW92ZVNl
c3Npb25EYXRhKG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBlLCBbdGhpcywgd2Vha1RoaXMsIHBy
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVy
KV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5cywgc3RkOjpvcHRp
b25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VT
ZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC02NDksNyArNjQ5LDcg
QEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UpCiAgICAgLy8gNS4gUmV0dXJuIHByb21pc2UuCiB9CiAKLXZvaWQgTWVkaWFLZXlTZXNz
aW9uOjplbnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBjb25z
dCBTaGFyZWRCdWZmZXImIG1lc3NhZ2UpCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1l
c3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgbWVzc2FnZSkKIHsKICAgICAvLyA2LjQuMSBRdWV1ZSBhICJtZXNzYWdlIiBF
dmVudAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI3F1ZXVl
LW1lc3NhZ2UKQEAgLTcxNiw3ICs3MTYsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRl
S2V5U3RhdHVzZXMoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBpbgogICAg
ICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKENETU1lc3Nh
Z2VUeXBlIG1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit2b2lkIE1l
ZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7CiAgICAgZW5xdWV1ZU1lc3Nh
Z2UobWVzc2FnZVR5cGUsIG1lc3NhZ2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKaW5kZXggM2Q5NmY4ODAy
ZTc0Nzg0MWM0ZWZkYTgxZGNiOTQxZWE2ZTRhNzVlNC4uMzY1YWNlNWMwOTVlN2RjMGM1NzFlNzZj
Y2YyYzA3YWFmYzYyYmFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBAIC01Nyw3ICs1Nyw3IEBAIGNsYXNz
IENETTsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIE1lZGlhS2V5U3RhdHVzTWFwOwog
Y2xhc3MgTWVkaWFLZXlzOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlz
ZVByb3h5OwogCkBAIC04NywyMCArODcsMjAgQEAgcHVibGljOgogICAgIHVzaW5nIENsb3NlZFBy
b21pc2UgPSBET01Qcm9taXNlUHJveHk8SURMVW5kZWZpbmVkPjsKICAgICBDbG9zZWRQcm9taXNl
JiBjbG9zZWQoKSB7IHJldHVybiBtX2Nsb3NlZFByb21pc2UuZ2V0KCk7IH0KIAotICAgIGNvbnN0
IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4mIHN0
YXR1c2VzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXNlczsgfQorICAgIGNvbnN0IFZlY3Rvcjxz
dGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+JiBz
dGF0dXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzZXM7IH0KIAogICAgIHVuc2lnbmVkIGlu
dGVybmFsSW5zdGFuY2VTZXNzaW9uT2JqZWN0UmVmQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2lu
c3RhbmNlU2Vzc2lvbi0+cmVmQ291bnQoKTsgfQogCiBwcml2YXRlOgogICAgIE1lZGlhS2V5U2Vz
c2lvbihEb2N1bWVudCYsIFdlYWtQdHI8TWVkaWFLZXlzPiYmLCBNZWRpYUtleVNlc3Npb25UeXBl
LCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgUmVmPENETT4mJiwgUmVmPENETUluc3Rh
bmNlU2Vzc2lvbj4mJik7Ci0gICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VU
eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGVucXVldWVNZXNzYWdlKE1lZGlh
S2V5TWVzc2FnZVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lk
IHVwZGF0ZUV4cGlyYXRpb24oZG91YmxlKTsKICAgICB2b2lkIHNlc3Npb25DbG9zZWQoKTsKICAg
ICBTdHJpbmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0OwogCiAgICAgLy8gQ0RN
SW5zdGFuY2VTZXNzaW9uQ2xpZW50CiAgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhDRE1JbnN0
YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1c1ZlY3RvciYmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2Up
IGZpbmFsOworICAgIHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgc2Vzc2lvbklkQ2hh
bmdlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5
SUQoKSBmaW5hbDsKIApAQCAtMTQwLDEwICsxNDAsMTAgQEAgcHJpdmF0ZToKICAgICBNZWRpYUtl
eVNlc3Npb25UeXBlIG1fc2Vzc2lvblR5cGU7CiAgICAgUmVmPENETT4gbV9pbXBsZW1lbnRhdGlv
bjsKICAgICBSZWY8Q0RNSW5zdGFuY2VTZXNzaW9uPiBtX2luc3RhbmNlU2Vzc2lvbjsKLSAgICBW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IG1fcmVjb3JkT2ZLZXlVc2FnZTsKKyAgICBWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX3JlY29yZE9mS2V5VXNhZ2U7CiAgICAgZG91
YmxlIG1fZmlyc3REZWNyeXB0VGltZSB7IDAgfTsKICAgICBkb3VibGUgbV9sYXRlc3REZWNyeXB0
VGltZSB7IDAgfTsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBNZWRp
YUtleVN0YXR1cz4+IG1fc3RhdHVzZXM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4gbV9zdGF0dXNlczsKIAogICAgIHVz
aW5nIERpc3BsYXlDaGFuZ2VkT2JzZXJ2ZXIgPSBPYnNlcnZlcjx2b2lkKFBsYXRmb3JtRGlzcGxh
eUlEKT47CiAgICAgRGlzcGxheUNoYW5nZWRPYnNlcnZlciBtX2Rpc3BsYXlDaGFuZ2VkT2JzZXJ2
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCmluZGV4IDczZjc0ZTRmNzBmYzkyYzIyYmY4NTljMDIy
OGEzNGVhZWM1Nzk3YTMuLjM5OGU4YWIxYjY1NmI0NDU5MjdiZWI2YmM2OTNkZDM5OWE2ODdhYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTdGF0dXNNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCkBAIC01NiwxMiArNTYsMTIgQEAgdW5zaWduZWQgbG9u
ZyBNZWRpYUtleVN0YXR1c01hcDo6c2l6ZSgpCiAgICAgcmV0dXJuIG1fc2Vzc2lvbi0+c3RhdHVz
ZXMoKS5zaXplKCk7CiB9CiAKLXN0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQorc3RhdGljIGJvb2wga2V5SWRzTWF0Y2go
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQog
ewogICAgIGF1dG8gbGVuZ3RoID0gYS5zaXplKCk7CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3Ro
ICE9IGIubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gIXN0ZDo6
bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gIXN0ZDo6bWVt
Y21wKGEubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBiLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAog
Ym9vbCBNZWRpYUtleVN0YXR1c01hcDo6aGFzKGNvbnN0IEJ1ZmZlclNvdXJjZSYga2V5SWQpCkBA
IC0xMDMsNyArMTAzLDcgQEAgc3RkOjpvcHRpb25hbDxLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNl
OjpWYXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+PiBNZWRpYUtleVMKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHBhaXIgPSBzdGF0dXNlc1ttX2luZGV4KytdOwot
ICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5kYXRhKCks
IHBhaXIuZmlyc3QtPnNpemUoKSk7CisgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3Jl
YXRlKHBhaXIuZmlyc3QtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6
ZSgpKTsKICAgICByZXR1cm4gS2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUs
IE1lZGlhS2V5U3RhdHVzPiB7IFJlZlB0cjxBcnJheUJ1ZmZlcj4oV1RGTW92ZShidWZmZXIpKSwg
cGFpci5zZWNvbmQgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCmluZGV4IGMyMTExMTNhMmM2ZGFj
Nzk3OTI0YTk5ZDJkMmRmOTdjMmU2NWY4NTAuLjYwZDYyYWFmZjgwNzRkYWRhNmUzMWEzZjJiMzcw
YTZkNmQwMWY2MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKQEAgLTM4LDcgKzM4LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFLZXlTZXNzaW9uOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTWVkaWFLZXlTdGF0
dXNNYXAgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUtleVN0YXR1c01hcD4gewogcHVibGljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMu
Y3BwCmluZGV4IDgzYjI0YWNlYWE1YjEyOTRiYjRlYTQzOWZiMmQ1YzRmNmNjZDQ3NTMuLjM2N2Yz
MWQxODZiNTE2MzlhOWM3NDIxM2YwY2Y4ZTZmMmY4ZDI2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKQEAgLTE3Nyw3ICsx
NzcsNyBAQCBib29sIE1lZGlhS2V5czo6aGFzT3BlblNlc3Npb25zKCkgY29uc3QKICAgICAgICAg
fSk7CiB9CiAKLXZvaWQgTWVkaWFLZXlzOjp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJl
Y2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhKQordm9pZCBNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVj
ZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhKQogewogICAgIGZvciAoYXV0byYgY2RtQ2xpZW50IDogbV9jZG1DbGll
bnRzKQogICAgICAgICBjZG1DbGllbnQuY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlv
bkRhdGFSZWNlaXZlZChpbml0RGF0YVR5cGUsIGluaXREYXRhLmNvcHlSZWYoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAppbmRleCA3
YjU5YTNiYzZkMjI1NmZjNjU2ZjA4Y2JmMjY4OTE4NTEwOTgzYTIyLi45MWExYTA3MTE0MzNiZTI0
N2RkMmE4NWM1ZjRhZDA5MzhhMDlhN2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHJvdGVjdGVk
OgogICAgIE1lZGlhS2V5cyhEb2N1bWVudCYsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVy
LCBib29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsIGNvbnN0IFZlY3RvcjxNZWRpYUtleVNlc3Np
b25UeXBlPiYsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0YW5jZT4mJik7CiAKICAgICAvLyBDRE1J
bnN0YW5jZUNsaWVudAotICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNl
aXZlZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lk
IHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiAgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dl
cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDJm
ZGM0YzAwMjFmNmUxZmRlYzQ1ZjhmYWY2MDkwNmMyYmY4MmUzYjEuLjAwMzkzMDJmN2RjMTZmZmVj
ZmM0NjVjN2Q4ZGEyNTJmOThkYWY1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3Vt
ZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
cwogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVGb3JtRGF0YShGZXRjaEJvZHlPd25lciYgb3duZXIs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoYXV0byBzaGFyZWRC
dWZmZXIgPSBmb3JtRGF0YUJvZHkoKS5hc1NoYXJlZEJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fY29u
c3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRlbnRUeXBl
KCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSk7CisgICAgICAg
IG1fY29uc3VtZXIucmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIG93bmVyLmNvbnRl
bnRUeXBlKCksIHNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaGFyZWRC
dWZmZXItPnNpemUoKSk7CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgLy8gRklYTUU6IElmIHRoZSBmb3JtIGRhdGEgY29udGFpbnMgYmxvYnMsIGxvYWQg
dGhlbSBsaWtlIHdlIGRvIG90aGVyIGJsb2JzLgpAQCAtMjcyLDcgKzI3Miw3IEBAIFJlZlB0cjxG
b3JtRGF0YT4gRmV0Y2hCb2R5Ojpib2R5QXNGb3JtRGF0YSgpIGNvbnN0CiAgICAgaWYgKGlzRm9y
bURhdGEoKSkKICAgICAgICAgcmV0dXJuICZjb25zdF9jYXN0PEZvcm1EYXRhJj4oZm9ybURhdGFC
b2R5KCkpOwogICAgIGlmIChhdXRvKiBkYXRhID0gbV9jb25zdW1lci5kYXRhKCkpCi0gICAgICAg
IHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAg
ICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0yODQsNyArMjg0LDcgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0
Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAgYXV0byBidWZmZXIgPSBtX2NvbnN1bWVyLnRha2VEYXRh
KCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgcmV0dXJuIGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICB9CiAKICAgICBpZiAoaXNCbG9iKCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAK
aW5kZXggZmNjMjE2YTAxY2RmNjk4NjUwODU4NzY3NWYwOWQ4Yjc5ZmY2MmIzYi4uMjIxM2Q2MjMw
M2VmZTJhMWY3Mjk4MjYwZjU4ODYwYjc3NmZiMjY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTI0Miw3ICsyNDIsNyBA
QCBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29ucwogCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjbGVh
bigpCiB7Ci0gICAgbV9idWZmZXIgPSBudWxscHRyOworICAgIG1fYnVmZmVyLnJlc2V0KCk7CiAg
ICAgcmVzZXRDb25zdW1lUHJvbWlzZSgpOwogICAgIGlmIChtX3NpbmspIHsKICAgICAgICAgbV9z
aW5rLT5jbGVhckNhbGxiYWNrKCk7CkBAIC0yNjYsMTYgKzI2NiwxOCBAQCB2b2lkIEZldGNoQm9k
eUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3Qg
U3RyaW5nJiBjbwogewogICAgIGlmIChzdHJlYW0pIHsKICAgICAgICAgQVNTRVJUKCFtX3Npbmsp
OwotICAgICAgICBtX3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3Jl
YXRlKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxl
IHsKKyAgICAgICAgbV9zaW5rID0gUmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNy
ZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXJCdWls
ZGVyKCksIHR5cGUgPSBtX3R5cGUsIGNvbnRlbnRUeXBlXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxl
IHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAg
ICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYXV0byog
Y2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICBkYXRhLT5hcHBl
bmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBl
LCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAg
ICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhLnRha2UoKS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFdU
Rk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5w
aXBlRnJvbSgqc3RyZWFtKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzA2LDcgKzMwOCw3IEBAIHZv
aWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9k
eUNvbnN1bWVyOjpUeXBlOjpGb3JtRGF0YTogewogICAgICAgICBhdXRvIGJ1ZmZlciA9IHRha2VE
YXRhKCk7Ci0gICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFja2FnZUZvcm1EYXRhKGNvbnRl
eHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZl
ciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCkpCisgICAgICAgIGlmIChhdXRvIGZvcm1EYXRhID0gcGFj
a2FnZUZvcm1EYXRhKGNvbnRleHQsIGNvbnRlbnRUeXBlLCBidWZmZXIgPyBidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDog
MCkpCiAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxET01Gb3JtRGF0
YT4+KCpmb3JtRGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb21pc2UtPnJlamVj
dChUeXBlRXJyb3IpOwpAQCAtMzI0LDE2ICszMjYsMjAgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1l
cjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiAgICAgICAgIG1f
c291cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICghbV9idWZmZXIpIHsKLSAgICAgICAgbV9idWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBtX2J1ZmZlci0+YXBwZW5kKGRhdGEsIHNpemUpOworICAgIG1fYnVmZmVyLmFw
cGVuZChkYXRhLCBzaXplKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29u
c3VtZXI6OnRha2VEYXRhKCkKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKLSAgICByZXR1cm4gV1RGTW92ZShtX2J1
ZmZlcik7CisgICAgbV9idWZmZXIucmVzZXQoKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92
ZShkYXRhKSk7Cit9CisKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlD
b25zdW1lcjo6dGFrZURhdGEoKQoreworICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiBtX2J1ZmZlci50YWtlKCk7CiB9CiAKIFJlZlB0cjxKU0M6
OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQpAQCAt
MzQxLDkgKzM0Nyw3IEBAIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQXJyYXlCdWZmZXIoKQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVy
biBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxwdHIsIDApOwogCi0gICAgYXV0byBhcnJheUJ1
ZmZlciA9IG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwotICAgIG1fYnVmZmVyID0g
bnVsbHB0cjsKLSAgICByZXR1cm4gYXJyYXlCdWZmZXI7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRh
a2UoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKIH0KIAogUmVmPEJsb2I+IEZldGNoQm9keUNv
bnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCkBAIC0z
NTEsOSArMzU1LDcgQEAgUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAg
ICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZXh0LCBWZWN0b3I8dWludDhfdD4oKSwgQmxvYjo6
bm9ybWFsaXplZENvbnRlbnRUeXBlKG1fY29udGVudFR5cGUpKTsKIAotICAgIGF1dG8gYnVmZmVy
ID0gc3RkOjpleGNoYW5nZShtX2J1ZmZlciwgbnVsbHB0cik7Ci0gICAgYXV0byBkYXRhID0gYnVm
ZmVyLT5leHRyYWN0RGF0YSgpOwotICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgV1RG
TW92ZShkYXRhKSwgbV9jb250ZW50VHlwZSk7CisgICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250
ZXh0LCBtX2J1ZmZlci50YWtlKCktPmV4dHJhY3REYXRhKCksIG1fY29udGVudFR5cGUpOwogfQog
CiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQpAQCAtMzYyLDggKzM2NCw4
IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1
ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgYXV0byB0ZXh0ID0gVGV4dFJl
c291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5z
aXplKCkpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fYnVm
ZmVyLnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3Vy
Y2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsK
ICAgICByZXR1cm4gdGV4dDsKIH0KIApAQCAtMzgzLDEwICszODUsOCBAQCB2b2lkIEZldGNoQm9k
eUNvbnN1bWVyOjpyZXNldENvbnN1bWVQcm9taXNlKCkKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6
OnNldFNvdXJjZShSZWY8RmV0Y2hCb2R5U291cmNlPiYmIHNvdXJjZSkKIHsKICAgICBtX3NvdXJj
ZSA9IFdURk1vdmUoc291cmNlKTsKLSAgICBpZiAobV9idWZmZXIpIHsKLSAgICAgICAgbV9zb3Vy
Y2UtPmVucXVldWUobV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwotICAgICAgICBt
X2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgfQorICAgIGlmIChtX2J1ZmZlcikKKyAgICAgICAgbV9z
b3VyY2UtPmVucXVldWUobV9idWZmZXIudGFrZSgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsK
IH0KIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6bG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRp
b24mIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuaAppbmRleCAyYjA1NmYxMjY0M2JhOTY3ZmU0MWEwMTUxM2E4OWI3MzYyNjQy
ZDRjLi44NzFkMmMwODYzMzFhOTgyOTRhMTY2YTRiNDJlMzE4NGUwMzc3NzJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC01MCwx
MCArNTAsMTAgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZm
ZXI7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlci5nZXQoKTsgfQotICAgIHZvaWQgc2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEp
IHsgbV9idWZmZXIgPSBXVEZNb3ZlKGRhdGEpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9Cisg
ICAgdm9pZCBzZXREYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHRha2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHRha2VEYXRhKCk7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IHRha2VB
c0FycmF5QnVmZmVyKCk7CiAgICAgU3RyaW5nIHRha2VBc1RleHQoKTsKIApAQCAtODIsNyArODIs
NyBAQCBwcml2YXRlOgogCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5nIG1fY29udGVudFR5
cGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBtX2J1ZmZlcjsKICAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBtX2NvbnN1bWVQ
cm9taXNlOwogICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luaz4gbV9z
aW5rOwogICAgIFJlZlB0cjxGZXRjaEJvZHlTb3VyY2U+IG1fc291cmNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAppbmRleCBmYzU1Y2M3ZDgzZDhiYzEx
ZjA4NTRkYzNjZmQ4NTA5N2EzMWYxMGY2Li4wM2Y4OWI2MWNhNWY3YzcxNzZiOWQ4OGNkMTM2NjBl
ODZiN2EyNTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVy
LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgRmV0Y2hMb2FkZXI6OnN0b3AoKQogICAgICAg
ICBtX2xvYWRlci0+Y2FuY2VsKCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoTG9h
ZGVyOjpzdGFydFN0cmVhbWluZygpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRmV0
Y2hMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKIHsKICAgICBBU1NFUlQobV9jb25zdW1lcik7CiAg
ICAgYXV0byBmaXJzdENodW5rID0gbV9jb25zdW1lci0+dGFrZURhdGEoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAppbmRleCAyZjkwZjBlYzNmZjkwNWEyNjIz
MWM4NGM3MmE3YTE4NmNkNGJmZTgzLi40NjEyZDBlMGUzYTdlZmUzMDYwMzk2YjBkNzVhMmZhM2Jj
NGVkZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCkBA
IC0zOSwxNCArMzksMTQgQEAgY2xhc3MgRmV0Y2hCb2R5Q29uc3VtZXI7CiBjbGFzcyBGZXRjaExv
YWRlckNsaWVudDsKIGNsYXNzIEZldGNoUmVxdWVzdDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBGZXRjaExvYWRlciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50IHsKIHB1YmxpYzoKICAgICBGZXRjaExvYWRlcihGZXRjaExvYWRlckNsaWVudCYsIEZldGNo
Qm9keUNvbnN1bWVyKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgfkZldGNoTG9hZGVyKCk7CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzdGFydFN0cmVhbWluZygpOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBzdGFydFN0cmVhbWluZygpOwogCiAgICAgdm9pZCBzdGFydChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRmV0Y2hSZXF1ZXN0JiwgY29uc3QgU3RyaW5n
Jik7CiAgICAgdm9pZCBzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgQmxvYiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5k
ZXggNGRmODQyNmM3MThiYTE2ZWNmMGE0N2U3M2U5MDBkM2Y4NDhmNjRmMi4uZTM4YTgzYWRlN2Q2
ZTBhYWY3MGNlYjljNWFhOGZlOGFiNDk0M2QwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdm9pZCBGZXRj
aFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmsoQ29uc3VtZURhdGFCeUNo
dW5rQ2FsbGJhY2smJgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3Bh
biBjaHVuayB7IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07CisgICAgYXV0byBjb250aWd1
b3VzQnVmZmVyID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTcGFuIGNodW5rIHsgY29u
dGlndW91c0J1ZmZlci0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKICAgICBtX2NvbnN1bWVEYXRh
Q2FsbGJhY2soJmNodW5rKTsKIH0KIApAQCAtNTAzLDcgKzUwNCw3IEBAIHZvaWQgRmV0Y2hSZXNw
b25zZTo6ZmVlZFN0cmVhbSgpCiAgICAgY2xvc2VTdHJlYW0oKTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RhcnRTdHJlYW1pbmcoKQorUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0
YXJ0U3RyZWFtaW5nKCkKIHsKICAgICBBU1NFUlQobV9sb2FkZXIpOwogICAgIHJldHVybiBtX2xv
YWRlci0+c3RhcnRTdHJlYW1pbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmgKaW5kZXggMzQyMGM2YTM4ZDNjM2Y2ZTJmZGI2Njc1ZThhNGQxMzY1YmY1
YTViYi4uY2Y3ODYzMjM5ZmQ5NDZlZTBlOGQ4OGVhZWE3MmZlOTg5ZWVkMzE0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTEzNCw3ICsxMzQs
NyBAQCBwcml2YXRlOgogCiAgICAgICAgIHZvaWQgY29uc3VtZURhdGFCeUNodW5rKENvbnN1bWVE
YXRhQnlDaHVua0NhbGxiYWNrJiYpOwogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0
YXJ0U3RyZWFtaW5nKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBz
dGFydFN0cmVhbWluZygpOwogICAgICAgICBOb3RpZmljYXRpb25DYWxsYmFjayB0YWtlTm90aWZp
Y2F0aW9uQ2FsbGJhY2soKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVzcG9uc2VDYWxsYmFjayk7IH0K
ICAgICAgICAgQ29uc3VtZURhdGFCeUNodW5rQ2FsbGJhY2sgdGFrZUNvbnN1bWVEYXRhQ2FsbGJh
Y2soKSB7IHJldHVybiBXVEZNb3ZlKG1fY29uc3VtZURhdGFDYWxsYmFjayk7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAppbmRleCBkZDE5
Yzg3MGFhN2QyNDg1ZjdlOWNhODQ5MmE4NDIxMzUyZGRkMDQxLi4xYTY2YmY4MTgzMjBlOTU2MDdk
NjE1ZjFhMDgyYTgyNzZlYjJhMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHQuaApAQCAtMzgsNyArMzgsNyBAQCBlbnVtIGNsYXNzIENyZWF0
ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbCB7IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgSGln
aGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCA6IGJvb2wgeyBObywgWWVzIH07CiAKIHN0cnVj
dCBBcHBIaWdobGlnaHQgewotICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGhpZ2hsaWdo
dDsKKyAgICBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaGlnaGxpZ2h0Owog
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB0ZXh0OwogICAgIENyZWF0ZU5ld0dyb3VwRm9ySGln
aGxpZ2h0IGlzTmV3R3JvdXA7CiAgICAgSGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCBy
ZXF1ZXN0T3JpZ2luYXRlZEluQXBwOwpAQCAtNTIsNyArNTIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgogdm9pZCBBcHBIaWdobGlnaHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihoaWdobGlnaHQtPnNpemUo
KSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5kYXRhKCks
IGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0
YShoaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaGlnaGxpZ2h0LT5zaXplKCks
IDEpOwogCiAgICAgZW5jb2RlciA8PCB0ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCBl
MmQ5YTYxZTQyNzY3NmViN2I3ZGFlYWJmZmEzMmQwNGE0NTc2YzA2Li41ZTgwZjBjMDcyZDQ5YTNl
Zjc5Njk1OTMwMmM0NDU2Y2QyYWJkZThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKQEAgLTQ0LDE1
ICs0NCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0ZXhwciB1aW50NjRfdCBoaWdo
bGlnaHRGaWxlU2lnbmF0dXJlID0gMHg0MTQxNTA0ODMyMzAzMjMxOyAvLyBGaWxlIFNpZ25hdHVy
ZSAgKEEpcHBsZShBUClwbGljYXRpb24oSClpZ2hsaWdodHMoMjAyMSkKIAotc3RkOjpvcHRpb25h
bDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5n
ZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBhdXRvIGRlY29kZXIgPSBidWZmZXIuZGVjb2Rlcigp
OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOwor
ICAgIGF1dG8gZGVjb2RlciA9IGNvbnRpZ3VvdXNCdWZmZXItPmRlY29kZXIoKTsKICAgICBzdGQ6
Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGF0YTsKICAgICBkZWNvZGVyID4+IGRh
dGE7CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IEFwcEhpZ2hsaWdo
dFJhbmdlRGF0YTo6dG9TaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6dG9TaGFyZWRCdWZmZXIoKSBjb25zdAogewog
ICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgZW5jb2RlcjsKICAgICBlbmNvZGVyIDw8ICp0
aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRSYW5nZURhdGEuaAppbmRleCBjZjYzODFhY2ZiMGE1MjExYjQzNTA4YjdiNTE3ZDZk
YjJmNmZjNzQzLi5iNWRhZjYwMjUzOThhM2Y3ZTZmMWQzN2FiZWNlODQ0ZDRmMWM2NTQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRSYW5nZURhdGEuaApAQCAtMzMsMTIgKzMzLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
I2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhIHsK
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gY3JlYXRlKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFw
cEhpZ2hsaWdodFJhbmdlRGF0YT4gY3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KTsKICAgICBzdHJ1Y3QgTm9kZVBhdGhDb21wb25lbnQgewogICAgICAgICBTdHJpbmcgaWRlbnRp
ZmllcjsKICAgICAgICAgU3RyaW5nIG5vZGVOYW1lOwpAQCAtMTExLDcgKzExMSw3IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhPiBkZWNvZGUoRGVjb2RlciYpOwogCi0gICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gdG9TaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gdG9TaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9p
ZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQv
QXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcAppbmRleCBkYzM5YTBmMGQxOGZmZmNhN2RmYjQ2NTIx
OWNkNjEyYTlmNzM4ZjhmLi5lNWRlODQ5NGYzNTA0NTM1OTRiMmYyZTg4YzNkZGEzM2ZhOWFmNzA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRTdG9yYWdlLmNwcApAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgQXBwSGlnaGxpZ2h0
U3RvcmFnZTo6c3RvcmVBcHBIaWdobGlnaHQoUmVmPFN0YXRpY1JhbmdlPiYmIHJhbmdlKQogICAg
IG1fZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCkuc3RvcmVBcHBIaWdobGlnaHQoV1RGTW92ZSho
aWdobGlnaHQpKTsKIH0KIAotdm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3JlQW5kU2Ny
b2xsVG9BcHBIaWdobGlnaHQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIFNjcm9sbFRvSGln
aGxpZ2h0IHNjcm9sbCkKK3ZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZUFuZFNjcm9s
bFRvQXBwSGlnaGxpZ2h0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgU2Ny
b2xsVG9IaWdobGlnaHQgc2Nyb2xsKQogewogICAgIGF1dG8gYXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
ID0gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoYnVmZmVyKTsKICAgICBpZiAoIWFwcEhp
Z2hsaWdodFJhbmdlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaAppbmRleCBiMTUyZjc2ZWQ0MjQwODkyZWE3ZGUy
MWUyY2IwNmQ0NzJkODczMzYwLi5lMjc2NjMzYjQ4NGY4MTA5NGFkZWNlNDVmNjRhYmJlZDE3ODEy
NTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHRTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0U3RvcmFnZS5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0YXRpY1Jh
bmdlOwogY2xhc3MgSGlnaGxpZ2h0OwogCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB+
QXBwSGlnaGxpZ2h0U3RvcmFnZSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9yZUFw
cEhpZ2hsaWdodChSZWY8U3RhdGljUmFuZ2U+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxTaGFyZWRCdWZmZXI+JiYsIFNjcm9s
bFRvSGlnaGxpZ2h0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmVBbmRTY3JvbGxU
b0FwcEhpZ2hsaWdodChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU2Nyb2xsVG9IaWdo
bGlnaHQpOwogICAgIHZvaWQgcmVzdG9yZVVucmVzdG9yZWRBcHBIaWdobGlnaHRzKCk7CiAgICAg
TW9ub3RvbmljVGltZSBsYXN0UmFuZ2VTZWFyY2hUaW1lKCkgY29uc3QgeyByZXR1cm4gbV90aW1l
QXRMYXN0UmFuZ2VTZWFyY2g7IH0KICAgICB2b2lkIHJlc2V0TGFzdFJhbmdlU2VhcmNoVGltZSgp
IHsgbV90aW1lQXRMYXN0UmFuZ2VTZWFyY2ggPSBNb25vdG9uaWNUaW1lOjpub3coKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCAwYWZiN2VlNWNjODc0MzU2YjM1YTE2
ODAzMjMxYTYxMzY0YzA5ODYxLi4yN2NkOGVlYzUzZTFhY2ZjNTk4NWVjN2I4ZjA1ZTIyNzY0NWM4
NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtNjg2LDcgKzY4Niw3
IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlzdGluZ0luZGV4KElEQk9iamVj
dFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvCiAgICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNh
Y3Rpb24oKm1fc3FsaXRlREIpOwogICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5r
ZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGlu
Zm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBhdGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE3NCw3ICsxMTc0LDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHQKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0
ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3JlIGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRy
YW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0
aEJsb2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtl
eVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYg
KCFrZXlQYXRoQmxvYikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZvciBuZXcgb2JqZWN0IHN0b3JlIik7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxp
emUgSURCS2V5UGF0aCB0byBzYXZlIGluIGRhdGFiYXNlIGZvciBuZXcgb2JqZWN0IHN0b3JlIl9z
IH07CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhYwogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBp
bmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0
aChpbmZvLmtleVBhdGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktl
eVBhdGgoaW5mby5rZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRh
YmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUg
dG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gY3JlYXRlIGluZGV4IGluIGRhdGFiYXNlIl9zIH07
CkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVu
Y2hlY2tlZEhhc0luZGV4UmVjb3JkKGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbwogewogICAgIGhh
c1JlY29yZCA9IGZhbHNlOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5kZXhLZXlCdWZm
ZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKKyAgICBhdXRvIGluZGV4S2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CiAgICAgaWYgKCFpbmRleEtleUJ1
ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5
IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gY2hlY2sgZm9y
IGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAtMTUzMywxMyArMTUzMywxMyBAQCBJ
REJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKGlu
dDY0X3Qgb2JqZWN0U3RvcmVJRCwgaQogewogICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJREJC
YWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkIC0gJXMsICVzIiwga2V5VmFsdWUu
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGluZGV4S2V5LmxvZ2dpbmdTdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluZGV4S2V5QnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7CisgICAgYXV0byBpbmRleEtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwogICAgIGlmICghaW5kZXhLZXlCdWZm
ZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGluZGV4IGtleSB0
byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgaW5kZXgga2V5IHRvIGJlIHN0b3Jl
ZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiB2YWx1ZUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5VmFsdWUpOworICAgIGF1dG8g
dmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleVZhbHVlKTsKICAgICBpZiAoIXZh
bHVlQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB0aGUg
dmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIHZhbHVlIHRvIGJlIHN0
b3JlZCBpbiB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE2NjEsNyArMTY2MSw3IEBAIElEQkVycm9y
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZShjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpCiAgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmlu
UHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0
ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBvYmplY3RzdG9yZSB3aXRob3V0IGFuIGluLXBy
b2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewog
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZv
ciBleGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGNoZWNrIGZvciBl
eGlzdGVuY2UgaW4gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xNzQxLDcgKzE3NDEsNyBAQCBJREJF
cnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlY29yZChTUUxpdGVJREJUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24sCiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLm1vZGUoKSAhPSBJREJU
cmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KTsKICAgICBVTlVTRURfUEFSQU0odHJhbnNhY3Rpb24p
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5
RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEo
a2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gc2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFz
ZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8g
c2VyaWFsaXplIElEQktleURhdGEgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSJfcyB9
OwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjph
ZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzdG9yZSBhIHJlY29y
ZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iX3MgfTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJL
ZXlEYXRhKGtleURhdGEpOworICAgIGF1dG8ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0
YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmplY3Qgc3RvcmUi
KTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBJREJLZXkgdG8gYmUgc3RvcmVkIGluIGFuIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAt
MjEyNCw3ICsyMTI0LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNv
cmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBhdXRvIGtleSA9
IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkpCiAgICAgICAgIGtleSA9
IElEQktleURhdGE6Om1pbmltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBsb3dlckJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0g
c2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICghbG93ZXJCdWZmZXIpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIGxvd2VyIElEQktleSBpbiBsb29rdXAg
cmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxl
IHRvIHNlcmlhbGl6ZSBsb3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIl9zIH07CkBAIC0yMTMz
LDcgKzIxMzMsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIGtleSA9IGtleVJhbmdl
LnVwcGVyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkpCiAgICAgICAgIGtleSA9IElEQktleURh
dGE6Om1heGltdW0oKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB1cHBlckJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIHVwcGVyQnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShrZXkpOwogICAgIGlmICghdXBwZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIl9zIH07CkBAIC0yNDQzLDcgKzI0NDMs
NyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldEluZGV4UmVj
b3JkRm9yT25lS2V5KGludDY0X3QgaW5kZXhJRAogCiAgICAgQVNTRVJUKGtleS5pc1ZhbGlkKCkg
JiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1heCAmJiBrZXkudHlwZSgpICE9
IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKKyAgICBhdXRvIGJ1ZmZlciA9IHNlcmlh
bGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGxvb2sgdXAgb25lIGluZGV4IHJlY29y
ZCIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8g
c2VyaWFsaXplIElEQktleSB0byBsb29rIHVwIG9uZSBpbmRleCByZWNvcmQiX3MgfTsKQEAgLTI1
MDgsMTQgKzI1MDgsMTQgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3Vu
dChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW8KICAgICBvdXRDb3VudCA9
IDA7CiAKICAgICBhdXRvIGxvd2VyS2V5ID0gcmFuZ2UubG93ZXJLZXkuaXNOdWxsKCkgPyBJREJL
ZXlEYXRhOjptaW5pbXVtKCkgOiByYW5nZS5sb3dlcktleTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobG93ZXJLZXkpOworICAgIGF1
dG8gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGxvd2VyS2V5KTsKICAgICBpZiAo
IWxvd2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBs
b3dlciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1
cCByYW5nZSBmb3IgY291bnQgb3BlcmF0aW9uIl9zIH07CiAgICAgfQogCiAgICAgYXV0byB1cHBl
cktleSA9IHJhbmdlLnVwcGVyS2V5LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6bWF4aW11bSgpIDog
cmFuZ2UudXBwZXJLZXk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXBwZXJCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKHVwcGVyS2V5KTsKKyAgICBhdXRvIHVwcGVyQnVmZmVyID0gc2Vy
aWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CiAgICAgaWYgKCF1cHBlckJ1ZmZlcikgewogICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1
cCByYW5nZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFi
bGUgdG8gc2VyaWFsaXplIHVwcGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9w
ZXJhdGlvbiJfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAppbmRleCA4YmZlMjI3ZGI2MTk2MjNi
ZDhkZjA2YTEwODU4Y2YwMzIxYzQzMjA2Li40ODYxMDM0ZDNhMTJkYTBjMDljZmVkZmU5ZjJlYTY1
YTY4MTAwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIGJv
b2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlE
QktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXpl
SURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktleSk7CiAgICAgaWYgKG1fc3RhdGVtZW50LT5iaW5k
QmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewogICAg
ICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgY3Vyc29yIHN0YXRlbWVudCAobG93ZXIg
a2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTUsNyArMzE1LDcgQEAgYm9vbCBT
UUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2Fy
eSgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byBidWZmZXIg
PSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQt
PmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7
CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGJpbmQgaWQgYXJndW1lbnQgdG8gcHJlIHN0
YXRlbWVudCAoa2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKaW5kZXgg
MGE0NjliZDBiZDFmMzhkY2I5NmIzOWQ4YzMwMDBhZjczZDEyYWI1OS4uYzlkNmRhNmJkZDlmOTM5
NTAxZjRmNDIzMmI0Yzc4MzdkODQwZGFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcApAQCAtMTk2LDcgKzE5Niw3
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhUmVjb3JkZXI6OnN0YXJ0UmVjb3JkaW5nKHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IHRpbWVTbGljCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3RhdGlj
IGlubGluZSBSZWY8QmxvYkV2ZW50PiBjcmVhdGVEYXRhQXZhaWxhYmxlRXZlbnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkKK3N0YXRpYyBpbmxpbmUgUmVm
PEJsb2JFdmVudD4gY3JlYXRlRGF0YUF2YWlsYWJsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlIHRpbWVDb2RlKQogewogICAgIGF1dG8gYmxvYiA9
IGJ1ZmZlciA/IEJsb2I6OmNyZWF0ZShjb250ZXh0LCBidWZmZXItPmV4dHJhY3REYXRhKCksIG1p
bWVUeXBlKSA6IEJsb2I6OmNyZWF0ZShjb250ZXh0KTsKICAgICByZXR1cm4gQmxvYkV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmRhdGFhdmFpbGFibGVFdmVudCwgQmxvYkV2ZW50OjpJbml0IHsg
eyBmYWxzZSwgZmFsc2UsIGZhbHNlIH0sIFdURk1vdmUoYmxvYiksIHRpbWVDb2RlIH0sIEJsb2JF
dmVudDo6SXNUcnVzdGVkOjpZZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmgKaW5kZXggNzcxMmI0NDUyODM2N2Q4YzI3MjUw
MmFkYmFhY2FhZjk3ODhjYmRiMC4uMWU5Yjc0YWIxN2UzMTA4ZGI0MjA5YjliNGYwMjE0ZGExMWFj
NmUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlci5oCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
c3BhdGNoRXJyb3IoRXhjZXB0aW9uJiYpOwogCiAgICAgZW51bSBjbGFzcyBUYWtlUHJpdmF0ZVJl
Y29yZGVyIHsgTm8sIFllcyB9OwotICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gRnVuY3Rp
b248dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBk
b3VibGUpPjsKKyAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRv
dWJsZSk+OwogICAgIHZvaWQgZmV0Y2hEYXRhKEZldGNoRGF0YUNhbGxiYWNrJiYsIFRha2VQcml2
YXRlUmVjb3JkZXIpOwogCiAgICAgLy8gTWVkaWFTdHJlYW06Ok9ic2VydmVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCmlu
ZGV4IDNmNGM5YmNkMTMzYWMyOWYzZjdkZGUxOTk0NzhlMzkyNTdkNWU2NmIuLjg3NGFhN2YwYjE4
ZjBlZTc1ODgwYmE1ZjVlZjY3ZDQ3YmZjMmIyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCkBAIC03Nyw3ICs3Nyw3
IEBAIHZvaWQgQXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Ly8gU2FuaXRpemUgdGhlIGltYWdlIGJ5IGRlY29kaW5nIGl0IGludG8gYSBCaXRtYXBJbWFnZS4K
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplID0gbV9jYWNoZWRJbWFn
ZS0+aW1hZ2UoKS0+ZGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBi
dWZmZXJUb1Nhbml0aXplID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIGF1
dG8gYml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgYml0bWFwSW1hZ2Ut
PnNldERhdGEoV1RGTW92ZShidWZmZXJUb1Nhbml0aXplKSwgdHJ1ZSk7CiAgICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAK
aW5kZXggZmViMWI4ZmZmYjdiOTRjOWU3ZWIwYmU0OGFkMzVkZDcwNzljNzBiYi4uY2M1YTg2NTcz
MDU2NTdkMGE5NzA1NjYxZTRiYjQ5Y2UwYjg0MDVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3Rl
SGFuZGxlcjo6cmVhZHlUb1NlbmQoKQogICAgIG1faXNSZWFkeVRvU2VuZCA9IHRydWU7CiAKICAg
ICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX3BlbmRpbmdNZXNzYWdlcykKLSAgICAgICAgbV9jb25u
ZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIG1lc3NhZ2UuaXNSYXcsIG1lc3Nh
Z2UuYnVmZmVyLT5kYXRhKCksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2Nv
bm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVz
c2FnZS5idWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNp
emUoKSk7CiAgICAgbV9wZW5kaW5nTWVzc2FnZXMuY2xlYXIoKTsKIAogICAgIGlmIChtX2lzUGVu
ZGluZ0Nsb3NlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKaW5kZXggZjU4MjdkZjkz
Nzk0OTNkMjgxMjcwMTc3Y2NmYmNhMDU1MTUzMjMxZi4uNzM5NDJhODM1OTMxYTlkMjg0YzZhNDUx
YmI4ZGJmYjU3NjVjYWRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCkBAIC0z
OSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJUQ0RhdGFDaGFubmVsSGFu
ZGxlckNsaWVudDsKIGNsYXNzIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rpb247
CiBjbGFzcyBSVENFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlciBmaW5hbCA6
IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
QEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0cnVjdCBNZXNzYWdlIHsKICAgICAg
ICAgYm9vbCBpc1JhdyB7IGZhbHNlIH07Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKKyAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB9Owog
ICAgIFZlY3RvcjxNZXNzYWdlPiBtX3BlbmRpbmdNZXNzYWdlczsKICAgICBib29sIG1faXNQZW5k
aW5nQ2xvc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlci5jcHAKaW5kZXggM2UxMTA1NDAwMzUzZGU1NjBmMjQ5MzhhOWIyMDhlZjM2
ZjY4MDNjNC4uM2NlZWQwYTAxMWU3YjU0NmZhZGRmNDhiYmRhMjExZGZkZDUyNGM1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBAIC05
Nyw4ICs5Nyw4IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGllbnQo
UlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQsCiAgICAgbV9jb250ZXh0SWRlbnRp
ZmllciA9IGNvbnRleHRJZGVudGlmaWVyOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9i
dWZmZXJlZE1lc3NhZ2VzKSB7Ci0gICAgICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsmXShSZWY8U2hh
cmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRh
KGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgc3dpdGNoT24obWVzc2FnZSwg
WyZdKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgZGF0YSkgeworICAgICAgICAgICAgY2xp
ZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0
YS0+c2l6ZSgpKTsKICAgICAgICAgfSwgWyZdKFN0cmluZyYgdGV4dCkgewogICAgICAgICAgICAg
Y2xpZW50LmRpZFJlY2VpdmVTdHJpbmdEYXRhKHRleHQpOwogICAgICAgICB9LCBbJl0oU3RhdGVD
aGFuZ2Ugc3RhdGVDaGFuZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmgKaW5kZXggNDFmOTUyODIxZTYyMDA5M2Y4ZWVmZTMyYzVlZDRhZTBmNWU1
NDE5Ny4uMTFiZDQ1ZGU5MTU1Nzc5ZmZjOWVmYjAzZTk1NTI4ZjA1ZTY0ZDc0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgKQEAgLTgyLDcgKzgy
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgUlRDRGF0YUNoYW5uZWxTdGF0ZSBzdGF0ZTsKICAgICAg
ICAgc3RkOjpvcHRpb25hbDx3ZWJydGM6OlJUQ0Vycm9yPiBlcnJvcjsKICAgICB9OwotICAgIHVz
aW5nIE1lc3NhZ2UgPSBzdGQ6OnZhcmlhbnQ8U3RhdGVDaGFuZ2UsIFN0cmluZywgUmVmPFNoYXJl
ZEJ1ZmZlcj4+OworICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnZhcmlhbnQ8U3RhdGVDaGFuZ2Us
IFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAgICB1c2luZyBQZW5kaW5n
TWVzc2FnZXMgPSBWZWN0b3I8TWVzc2FnZT47CiAgICAgdm9pZCBzdG9yZU1lc3NhZ2UoUGVuZGlu
Z01lc3NhZ2VzJiwgY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVyJik7CiAgICAgdm9pZCBwcm9jZXNz
TWVzc2FnZShjb25zdCB3ZWJydGM6OkRhdGFCdWZmZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAppbmRl
eCAzMDljMDI2NDNmNWE3YWU5ZmVjMDhhMTRlYjIxMjI0MDliMWY4OWUwLi42M2YxYzNjYmUxZWE4
MWNmYmY0NTQ2NDYzMjBjZGY3ZmFjZjU5YzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCkBAIC0xMTYs
NyArMTE2LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJM
JiB1cmwpCiAKICAgICBtX3NvdXJjZVVSTCA9IHVybDsKIAotICAgIG1fZGF0YSA9IG51bGxwdHI7
CisgICAgbV9kYXRhLnJlc2V0KCk7CiAgICAgbV9kYXRhQ29tcGxldGUgPSBmYWxzZTsKIAogICAg
IGlmIChtX3Jlc291cmNlKSB7CkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVt
ZW50OjpzZXRTb3VyY2VVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fZGF0YS5lbXB0
eSgpOwogCiAgICAgbV9yZXNvdXJjZSA9IHJlc291cmNlLnZhbHVlKCk7CiAgICAgbV9yZXNvdXJj
ZS0+YWRkQ2xpZW50KCp0aGlzKTsKQEAgLTE4MCw4ICsxODAsNyBAQCBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYgcwogdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3Vy
Y2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKICAg
ICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7Ci0gICAg
QVNTRVJUKG1fZGF0YSk7Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7Cisg
ICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBIVE1MTW9kZWxF
bGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpCkBAIC0xOTUsNyArMTk0LDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVt
ZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdv
cmtMb2EKICAgICB9OwogCiAgICAgaWYgKHJlc291cmNlLmxvYWRGYWlsZWRPckNhbmNlbGVkKCkp
IHsKLSAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRhLnJlc2V0KCk7CiAK
ICAgICAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRlUmVuZGVyZXIoKTsKIApA
QCAtMjA0LDcgKzIwMyw3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hCiAgICAgfQogCiAgICAg
bV9kYXRhQ29tcGxldGUgPSB0cnVlOwotICAgIG1fbW9kZWwgPSBNb2RlbDo6Y3JlYXRlKG1fZGF0
YS5yZWxlYXNlTm9uTnVsbCgpLmdldCgpLCByZXNvdXJjZS5taW1lVHlwZSgpLCByZXNvdXJjZS51
cmwoKSk7CisgICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnRha2UoKS0+bWFrZUNv
bnRpZ3VvdXMoKS5nZXQoKSwgcmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UudXJsKCkpOwog
CiAgICAgaW52YWxpZGF0ZVJlc291cmNlSGFuZGxlQW5kVXBkYXRlUmVuZGVyZXIoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmgKaW5kZXggMDVhMWNkYWEzZTE0ODc3YTBhZTQ2NWI2MzQ5YWE1YmJiMWFmMmM4Mi4u
Y2UwMDlkNGU1ZWRjMzA5NzQ1ZTAyN2IwNjMyYmQxZTZlODU4MDNiZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5o
CkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogICAgIFVSTCBtX3NvdXJjZVVSTDsKICAg
ICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBt
X2RhdGE7CiAgICAgUmVmUHRyPE1vZGVsPiBtX21vZGVsOwogICAgIFVuaXF1ZVJlZjxSZWFkeVBy
b21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wgbV9kYXRhQ29tcGxldGUgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5l
a2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQppbmRleCAzZTgy
YWMyMjE2Nzk2YzllZGI3NjBhMTllZDdhY2UxZjQyY2QzNzc3Li4xMzAzZWM0ZDI1NjhhNjZmODdk
N2ZlYjIwYmYyYjAzMzkyMzJjM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2Rl
bExvYWRlclVTRC5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNVUkw+
IHdyaXRlVG9UZW1wb3JhcnlGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBh
dXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIk1vZGVsRmlsZSIs
IGZpbGVIYW5kbGUsICIudXNkeiIpOwogICAgIEFTU0VSVChGaWxlU3lzdGVtOjppc0hhbmRsZVZh
bGlkKGZpbGVIYW5kbGUpKTsKIAotICAgIHNpemVfdCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3
cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxT
b3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIHNpemVfdCBieXRlQ291bnQgPSBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShmaWxlSGFuZGxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEFTU0VSVF9V
TlVTRUQoYnl0ZUNvdW50LCBieXRlQ291bnQgPT0gbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkp
OwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCmluZGV4IDBi
ODk4ZjZhZGI1N2ViMjVkYzQ5MzdkODFmZjVkMTRkNTI5NzZjODQuLmQ1MTczZmJmOGI0MDM0MWM1
Y2Y4ZDhhNGY1NWVlYWM4ZmY4MzhhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBCdWZmZXJTb3VyY2U7CiBjbGFzcyBSZWFkYWJsZVN0cmVh
bTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIFJlYWRhYmxlU3RyZWFtU2luayA6IHB1YmxpYyBSZWZDb3VudGVkPFJlYWRhYmxlU3Ry
ZWFtU2luaz4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKaW5kZXggYzQ1MmM4M2ZiZDVjZTg5NWJk
ZDAzMWFjZjE0NjhmNzg2NTA2MjJkNy4uYjhiNzc4NWY5MWQwNjhjMmE0NmNlYjFkNjU5NzU4ZmNm
OGI2OWQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVm
ZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01MSwxMyArNTEsMTUgQEAgcHVibGljOgogICAg
ICAgICBpZiAobV9zY3JpcHRCdWZmZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CiAKKyAgICAgICAgaWYgKCFtX2NvbnRpZ3VvdXNCdWZmZXIgJiYgKCFtX2Nv
bnRhaW5zT25seUFTQ0lJIHx8ICptX2NvbnRhaW5zT25seUFTQ0lJKSkKKyAgICAgICAgICAgIG1f
Y29udGlndW91c0J1ZmZlciA9IG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5tYWtlQ29udGlndW91
cygpOwogICAgICAgICBpZiAoIW1fY29udGFpbnNPbmx5QVNDSUkpIHsKLSAgICAgICAgICAgIG1f
Y29udGFpbnNPbmx5QVNDSUkgPSBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9zY3JpcHRCdWZmZXIu
YnVmZmVyKCktPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAg
ICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fY29u
dGlndW91c0J1ZmZlci0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsK
ICAgICAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgICAgICBt
X3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1f
c2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5z
aXplKCkpOworICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29t
cHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2Ny
aXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmICgqbV9j
b250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgIHJldHVybiB7IG1fc2NyaXB0QnVmZmVyLmJ1
ZmZlcigpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5idWZm
ZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAgICAgcmV0dXJuIHsgbV9jb250aWd1b3VzQnVmZmVy
LT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+
c2l6ZSgpKSB9OwogCiAgICAgICAgIGlmICghbV9jYWNoZWRTY3JpcHRTdHJpbmcpIHsKICAgICAg
ICAgICAgIG1fY2FjaGVkU2NyaXB0U3RyaW5nID0gbV9zY3JpcHRCdWZmZXIudG9TdHJpbmcoKTsK
QEAgLTgxLDYgKzgzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IG1fc2NyaXB0QnVmZmVyID0gc2NyaXB0QnVmZmVyOworICAgICAgICBtX2NvbnRpZ3VvdXNCdWZm
ZXIgPSBudWxscHRyOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTkxLDYgKzk0LDcgQEAgcHJpdmF0
ZToKICAgICB9CiAKICAgICBTY3JpcHRCdWZmZXIgbV9zY3JpcHRCdWZmZXI7CisgICAgbXV0YWJs
ZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRpZ3VvdXNCdWZmZXI7CiAgICAgbXV0YWJsZSB1
bnNpZ25lZCBtX3NjcmlwdEhhc2ggeyAwIH07CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9jYWNoZWRT
Y3JpcHRTdHJpbmc7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fY29udGFpbnNP
bmx5QVNDSUk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oCmluZGV4IDdlNDlhOWU3MzIyNmI2NWNjMjhiZjU5NDgxM2IwZjgzYjI2OWQy
MmIuLmVmMzdmMWQwY2E0NjJiYjliN2M5YjZhNTVkMThlYmI0YzExODFhN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC01
NSw3ICs1NSw3IEBAIGNsYXNzIERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzOwogY2xhc3MgSURCVmFs
dWU7CiBjbGFzcyBNZXNzYWdlUG9ydDsKIGNsYXNzIEltYWdlQml0bWFwQmFja2luZzsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBlbnVtIGNsYXNz
IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOwogCiBlbnVtIGNsYXNzIFNlcmlhbGl6YXRpb25FcnJv
ck1vZGUgeyBOb25UaHJvd2luZywgVGhyb3dpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU291cmNlLmgKaW5kZXggODI2MTMzMzIyYThlZTVmMzc4MmZiYjIzMTIzYjJkZDNhNTdhMTcy
OC4uMTA4ZTZjODc2N2QwZDJmZGFjYmU2NTA0ZWJjNTA3MGU4ODJiZTY0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDU1NGb250RmFjZTsKIGNsYXNzIENTU0ZvbnRTZWxlY3RvcjsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRm9udDsKIGNsYXNzIEZv
bnRDcmVhdGlvbkNvbnRleHQ7CkBAIC00Miw3ICs0Myw2IEBAIGNsYXNzIEZvbnREZXNjcmlwdGlv
bjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZv
bnRWYXJpYW50U2V0dGluZ3M7CiBjbGFzcyBTVkdGb250RmFjZUVsZW1lbnQ7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGlu
Z3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IDFkZWFjNGY0MWNmNDlmMWY4ODJk
Y2NlZmQ0OGNmNmE5NzMyZjNlZDkuLmM0MmVjMDUxZmUxMWViYTE0ZjgxMzM1OWQ4ZDE3YTJjMjgx
NjY0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC00MDIsNyArNDAyLDcg
QEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlVHlwZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxl
UmVhZGVyIHsKICAgICAgICAgdHlwZXMuYWRkKEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShmaWxl
bmFtZSkpOwogICAgIH0KIAotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCisgICAgdm9pZCByZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpCiAgICAgewogICAgICAgICB0eXBlcy5hZGQodHlwZSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDE3MjRjZjBlNTBiYWE1YjliMjQxMzA0ODFlZTcyNGNi
NzgyMDdhYTQuLmM1ZTllMjZiMzcyYWU2ODNmMTg2OGU5MjBjNDVlZDcwZWRmNTU0N2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxMzMsNyArNDEzMyw3IEBAIFByb21pc2VkQXR0
YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1l
bnQpCiAgICAgcmV0dXJuIHsgYXR0YWNobWVudC0+dW5pcXVlSWRlbnRpZmllcigpLCBXVEZNb3Zl
KGFkZGl0aW9uYWxUeXBlcyksIFdURk1vdmUoYWRkaXRpb25hbERhdGEpIH07CiB9CiAKLXZvaWQg
RWRpdG9yOjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRG
aWxlTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBFZGl0b3I6OnJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGlmIChhdXRvKiBjbGllbnQgPSB0
aGlzLT5jbGllbnQoKSkKICAgICAgICAgY2xpZW50LT5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlm
aWVyKGlkZW50aWZpZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxlTmFtZSwgV1RGTW92ZShk
YXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAwMWZlMGI1ZTA0NGVmNjNmMjZhNzFi
NDcyZWY5OGIxMWMyMjhiOTFjLi4xZDA3MTZjNWI5M2M4YmI3YWQ3M2Y0MTc0Y2E4MDQ1OTA1Zjkx
OTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU3LDkgKzU3LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjsKIGNsYXNzIEFy
Y2hpdmVSZXNvdXJjZTsKLWNsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIENvbXBvc2l0ZUVkaXRD
b21tYW5kOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3VzdG9tVW5kb1N0ZXA7CitjbGFz
cyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBEZWxldGVCdXR0b25Db250cm9sbGVyOwogY2xhc3MgRWRp
dENvbW1hbmQ7CiBjbGFzcyBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOwpAQCAtNzQsNyArNzUsNyBA
QCBjbGFzcyBLaWxsUmluZzsKIGNsYXNzIFBhc3RlYm9hcmQ7CiBjbGFzcyBQYXN0ZWJvYXJkV3Jp
dGVyRGF0YTsKIGNsYXNzIFJlbmRlckxheWVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7CiBjbGFzcyBTcGVsbENoZWNrUmVx
dWVzdDsKIGNsYXNzIFNwZWxsQ2hlY2tlcjsKQEAgLTU2Myw3ICs1NjQsNyBAQCBwdWJsaWM6CiAK
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+JiYgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpOwotICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHBy
ZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGZpbGVEYXRhKTsKKyAgICB2b2lk
IHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgZmlsZURhdGEpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2ht
ZW50cyhWZWN0b3I8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKTsKICAgICB2b2lkIHJlZ2lz
dGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CiAgICAgdm9pZCByZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvbnRlbnRSZWFkZXIuaAppbmRleCAwOGFhMTI0MjY2MjBmNzY5NTNhNzliMzRlZGU1ZjZkZjA1
MjdiMDE1Li45NTdiNGZkNGE1NTdmYzgxY2QzMDY5ZWVhY2I4OTQ4OGE5NDdiN2NkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaApAQCAtNzIsMTYgKzcyLDE2IEBA
IHByaXZhdGU6CiAgICAgYm9vbCByZWFkRmlsZVBhdGgoY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0
aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlID0geyB9KSBvdmVycmlkZTsKICAgICBib29sIHJlYWRGaWxlUGF0aHMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKICAgICBib29sIHJlYWRIVE1MKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplID0geyB9KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRJbWFnZShSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZl
cnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFVSTChj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKICAgICBib29sIHJlYWRQ
bGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
Ci0gICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJl
YWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJl
c2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsK
KyAgICBib29sIHJlYWRXZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlk
ZTsKKyAgICBib29sIHJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
KyAgICBib29sIHJlYWRSVEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAg
IGJvb2wgcmVhZERhdGFCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFBy
ZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOwogI2VuZGlmCiB9OwogCkBAIC05OSwxNiAr
OTksMTYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBQ
cmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBTdHJpbmcmID0geyB9KSBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkSFRNTChjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgcmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZFBsYWluVGV4dChjb25z
dCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpIG92ZXJy
aWRlOwotICAgIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9v
bCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZERhdGFCdWZm
ZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0
aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHJlYWRX
ZWJBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJl
YWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRS
VEYoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZERhdGFC
dWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAj
ZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBh
c3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBh
c3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCA1NDllYjdkMmU0YzA3NTQ4ZTRhOGM5ZWEyNGVj
MjBlNGYyMWJmYTI1Li4xMTdkYmE2OGVkYjBiZDRiNmMzMGUwOTQ4NWQ5ZDBjMGYyOWMzODI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJl
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZp
bGVSZWFkZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxl
UmVhZGVyOjpyZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICBmaWxlcy5h
cHBlbmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGZpbGVuYW1lKSk7CiB9CiAKLXZvaWQg
V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2
b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKICAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQuZ2V0
KCksIEJsb2I6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBidWZmZXItPmV4dHJhY3REYXRhKCksIHR5
cGUpLCBmaWxlbmFtZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9X
ZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKaW5kZXggNWM1MjlkZDdjOGVjYzAwMDQ4ZmNiNGQx
NTgxNDYzNWIyNGQ5MGJiNy4uOWQ4MTYwNWYxOTkyOThmMTljMGVkNjk5NWZlM2JkNzc4MzAzNGZm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZp
bGVSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJk
RmlsZVJlYWRlci5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBXZWJDb3JlUGFzdGVib2FyZEZp
bGVSZWFkZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgfldlYkNvcmVQYXN0
ZWJvYXJkRmlsZVJlYWRlcigpOwogCiAgICAgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5n
JikgZmluYWw7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNv
bnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBy
ZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAgICAgUmVmUHRyPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ+IGNvbnRleHQ7CiAgICAgVmVjdG9yPFJlZjxGaWxlPj4gZmlsZXM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggZDQ4
ZTExYzk2Yjc4MDhmODgzNTRiM2IwNzQ3ZWViMWYxZTM3ZTNmMy4uMDc4MjQ4MzYyYWEwNTRkYzNh
YjAwMDA0NTE3MTg0MTk4YTU4MGY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMTI3Myw3ICsxMjczLDcgQEAgQk9PTCBIVE1MQ29udmVy
dGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgTlNVUkwgKnVy
bCwgQk9PTAogICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291
cmNlKHVybCkpIHsKICAgICAgICAgICAgIGF1dG8mIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVU
eXBlKCk7CiAgICAgICAgICAgICBpZiAoIXVzZVBsYWNlaG9sZGVyIHx8IG1pbWVUeXBlICE9ICJ0
ZXh0L2h0bWwiKSB7Ci0gICAgICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNG
aWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5k
YXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgICAgICBmaWxlV3JhcHBl
ciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29u
dGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOwogICAgICAgICAgICAgICAgIFtmaWxlV3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFt
ZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZSh1cmwsIG1pbWVUeXBlKV07CiAgICAgICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBub3RGb3VuZCA9IFlFUzsKQEAgLTIzMDAsNyAr
MjMwMCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JV
UkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiAKICAgICBpZiAoZGF0YVNvdXJjZSkg
ewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBkYXRhU291
cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAgICAgICAgICBhdXRvIHdyYXBwZXIgPSBhZG9w
dE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJl
c291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgIGF1dG8g
d3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVX
aXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gcmVzb3VyY2Ut
PnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAgICAgICAgIGlmICghZmlsZW5h
bWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gc3Vn
Z2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVzb3VyY2UtPnVybCgpLCByZXNvdXJjZS0+bWlt
ZVR5cGUoKSk7CkBAIC0yMzIyLDggKzIzMjIsOCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdy
YXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJMKERvY3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBOUwog
c3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvckVsZW1lbnQoSFRN
TEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZElt
YWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7Ci0gICAgICAgIGlmIChTaGFyZWRCdWZmZXIq
IHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVX
aXRoQ29udGVudHM6c2hhcmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAg
ICBpZiAoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2Ut
PnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdy
YXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgfQogCiAgICAgYXV0
byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IDZhYTNjZDU0
ZTgyYjk5YjMxOTQyN2JlZTM0YzhjNDRiNjc5ZTIyNzkuLjc2YjFhMDA5ZGU0MzBmYTNiNTRkOWEx
NWU2NzhjZDgzZjMxNDVmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0yNDUsNyArMjQ1LDcgQEAgc3RhdGlj
IGJvb2wgc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoY29uc3QgRnJhbWUmIGZyYW1l
KQogCiAjZW5kaWYKIAotc3RhdGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVu
dEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkb2N1bWVudCwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFByZXNl
bnRhdGlvblNpemUgcHJlZmVycmVkU2l6ZSkKK3N0YXRpYyBSZWY8RG9jdW1lbnRGcmFnbWVudD4g
Y3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYg
ZG9jdW1lbnQsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQogewogI2lm
IEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0
dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1bWVu
dCk7CkBAIC0zMDksNyArMzA5LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0
aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8mIHJlc291cmNlID0gcmVzb3VyY2VFbnRyeS0+
dmFsdWU7Ci0gICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRhY2ht
ZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNlLT5k
YXRhKCkgfSk7CisgICAgICAgIHNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5hcHBlbmQoeyBhdHRh
Y2htZW50LnVuaXF1ZUlkZW50aWZpZXIoKSwgcmVzb3VyY2UtPm1pbWVUeXBlKCksIHJlc291cmNl
LT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSB9KTsKICAgICB9CiAKICAgICBpZiAoIXNlcmlhbGl6
ZWRBdHRhY2htZW50RGF0YS5pc0VtcHR5KCkpCkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIHZv
aWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1l
bnRGcmFnbWVudCYgZnIKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAg
bmFtZSA9ICJtZWRpYSJfczsKIAotICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBl
bmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNl
LT52YWx1ZS0+ZGF0YSgpLCBpbWFnZSB9KTsKKyAgICAgICAgYXR0YWNobWVudEluc2VydGlvbklu
Zm8uYXBwZW5kKHsgV1RGTW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCBy
ZXNvdXJjZS0+dmFsdWUtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLCBpbWFnZSB9KTsKICAgICB9
CiAKICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxPYmplY3RF
bGVtZW50PihmcmFnbWVudCkpIHsKQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgdm9pZCByZXBs
YWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdt
ZW50JiBmcgogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0g
ImZpbGUiX3M7CiAKLSAgICAgICAgYXR0YWNobWVudEluc2VydGlvbkluZm8uYXBwZW5kKHsgV1RG
TW92ZShuYW1lKSwgcmVzb3VyY2UtPnZhbHVlLT5taW1lVHlwZSgpLCByZXNvdXJjZS0+dmFsdWUt
PmRhdGEoKSwgb2JqZWN0IH0pOworICAgICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBl
bmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNl
LT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCksIG9iamVjdCB9KTsKICAgICB9CiAKICAg
ICBmb3IgKGF1dG8mIGluZm8gOiBhdHRhY2htZW50SW5zZXJ0aW9uSW5mbykgewpAQCAtNDI4LDcg
KzQyOCw3IEBAIHN0cnVjdCBNYXJrdXBBbmRBcmNoaXZlIHsKICAgICBSZWY8QXJjaGl2ZT4gYXJj
aGl2ZTsKIH07CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJh
Y3RNYXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6OmZ1bmN0
aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKK3N0YXRpYyBz
dGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNv
bnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCiB7CiAgICAgYXV0byBhcmNoaXZl
ID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFVSTCgpLCBidWZmZXIpOwogICAgIGlmICghYXJj
aGl2ZSkKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJrdXBBbmRB
cmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZgogICAgIGlm
ICghY2FuU2hvd01JTUVUeXBlQXNIVE1MKHR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUgeyBTdHJpbmc6OmZyb21VVEY4KG1h
aW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwg
bWFpblJlc291cmNlLnJlbGVhc2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9
OworICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3RyaW5nOjpmcm9tVVRGOChtYWluUmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJjZS0+ZGF0
YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJlbGVh
c2VOb25OdWxsKCkgfTsKIH0KIAogc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNo
aXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW1lbnQsIE1hcmt1cEFu
ZEFyY2hpdmUmIG1hcmt1cEFuZEFyY2hpdmUsIE1TT0xpc3RRdWlya3MgbXNvTGlzdFF1aXJrcywg
Y29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5cGVB
c0hUTUwpCkBAIC00ODEsNyArNDgxLDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdp
dGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICAg
ICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VVUkwoc3ViZnJhbWVVUkwpKQogICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgTWFya3VwQW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRl
bnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5kYXRh
KCksIHN1YmZyYW1lTWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKKyAgICAgICAgTWFya3Vw
QW5kQXJjaGl2ZSBzdWJmcmFtZUNvbnRlbnQgPSB7IFN0cmluZzo6ZnJvbVVURjgoc3ViZnJhbWVN
YWluUmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN1YmZyYW1lTWFp
blJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwKICAgICAgICAgICAgIHN1YmZyYW1lTWFpblJlc291
cmNlLnJlbGVhc2VOb25OdWxsKCksIHN1YmZyYW1lQXJjaGl2ZS5jb3B5UmVmKCkgfTsKICAgICAg
ICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoZnJhbWUs
IGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVudCwgTVNPTGlzdFF1aXJrczo6RGlz
YWJsZWQsIGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBzdGF0
aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVu
dCYgZGVzdGluYXRpb25Eb2N1bQogICAgIHJldHVybiBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVu
dEluRG9jdW1lbnQoV1RGTW92ZShmcmFnbWVudCksICpzdGFnaW5nRG9jdW1lbnQsIG1zb0xpc3RR
dWlya3MsIG1hcmt1cEFuZEFyY2hpdmUubWFya3VwKTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVh
ZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkgfHwg
IWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUzMiw3ICs1MzIs
NyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFk
ZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50
TWFya3VwUmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC02MTIsMTIgKzYxMiwxMiBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRI
VE1MKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiAhbWFya3VwLmlzRW1wdHkoKTsK
IH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9y
SW1hZ2VzKCkgfHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhSVEZEOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6
bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmlu
ZyBhbGxvY10gaW5pdFdpdGhSVEZEOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21l
bnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsK
ICAgICBpZiAoIWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MjYsMTEgKzYy
NiwxMSBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6
OnJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3VwUmVh
ZGVyOjpyZWFkUlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYg
KCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJp
bmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVm
ZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7Cisg
ICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
V2l0aFJURkQ6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRv
Y3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZy
YWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJh
Z21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYzOSwxMiArNjM5LDEyIEBAIGJvb2wg
V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJl
ZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0
byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJU
RjpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJd
KTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoUlRGOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBkb2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVh
dGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAo
IWZyYWdtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTMsMTEgKzY1MywxMSBAQCBi
b29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURihT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJU
RihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1
bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5T
KFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURjpidWZmZXIuY3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmlu
ZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZl
ci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0
ZXM6bnVsbHB0cl0pOwogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEFuZEFkZFJl
c291cmNlcyhmcmFtZSwgc3RyaW5nLmdldCgpKTsKICAgICBpZiAoIWZyYWdtZW50KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC02NzYsNyArNjc2LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVy
OjpyZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVz
ZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRh
dGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAgICBBU1NFUlQoZnJhbWUu
ZG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKQEAg
LTc0Niw3ICs3NDYsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBy
ZXR1cm4gYXR0YWNobWVudDsKIH0KIAotc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVu
dEZvckRhdGEoRnJhbWUmIGZyYW1lLCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZl
cnJlZFNpemUpCitzdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShGcmFt
ZSYgZnJhbWUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJl
ZFNpemUpCiB7CiAgICAgUmVmIGRvY3VtZW50ID0gKmZyYW1lLmRvY3VtZW50KCk7CiAgICAgYXV0
byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjph
dHRhY2htZW50VGFnLCBkb2N1bWVudCk7CkBAIC04MzMsNyArODMzLDcgQEAgYm9vbCBXZWJDb250
ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVm
ZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQorYm9v
bCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50
YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCiB7CiAgICAgaWYgKGJ1ZmZlci5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKaW5kZXggNjA0ODZlNzFhZDU5ZmVj
YzcxNWZmMGEwOWIxYzM1NThiN2IzNDJjMi4uZDNlOTgxOWJkNTMxZjg0ODZhMzE3YWI5ZjllZDgz
YTk4ODViZTJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29u
dGVudFJlYWRlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29u
dGVudFJlYWRlckd0ay5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVy
OjpyZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVz
ZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRh
dGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAgICBBU1NFUlQoZnJhbWUu
ZG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9CbG9iLmgKaW5kZXggNDVkOTMzZTEzY2E0ZDIyNTFjNWRlZDg0OGFhOWU5ODcyYzc2
NzQ4OS4uYmNhNjY5NmViZTZmMGVkZGRkZWU3OWI3M2MzZWUxNDQ5NmQ4MmZiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9CbG9iLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgQmxvYkxvYWRlcjsKIGNsYXNzIERl
ZmVycmVkUHJvbWlzZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFtOwogY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBFeGNlcHRpb25PcjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKaW5kZXggNTU5ZWJjYzQ4YzVm
MDk2YWMxOWJhZTdkOWY3MThiNzFmMmEzNTMyMi4uNDJmNDE4MGRmYTg0MjdlMGU2MGY4MWViNzli
MTkxODdjYWZkYmExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3Jr
U2VuZFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVl
dWUuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgTmV0d29ya1NlbmRRdWV1ZTo6cHJvY2Vzc01l
c3NhZ2VzKCkKICAgICAgICAgYm9vbCBzaG91bGRTdG9wUHJvY2Vzc2luZyA9IGZhbHNlOwogICAg
ICAgICBzd2l0Y2hPbihtX3F1ZXVlLmZpcnN0KCksIFt0aGlzXShjb25zdCBDU3RyaW5nJiB1dGY4
KSB7CiAgICAgICAgICAgICBtX3dyaXRlU3RyaW5nKHV0ZjgpOwotICAgICAgICB9LCBbdGhpc10o
UmVmPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKKyAgICAgICAgfSwgW3RoaXNdKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYgZGF0YSkgewogICAgICAgICAgICAgZGF0YS0+Zm9yRWFjaFNlZ21l
bnQobV93cml0ZVJhd0RhdGEpOwogICAgICAgICB9LCBbdGhpcywgJnNob3VsZFN0b3BQcm9jZXNz
aW5nXShVbmlxdWVSZWY8QmxvYkxvYWRlcj4mIGxvYWRlcikgewogICAgICAgICAgICAgYXV0byBl
cnJvckNvZGUgPSBsb2FkZXItPmVycm9yQ29kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05l
dHdvcmtTZW5kUXVldWUuaAppbmRleCA1NTFmNzBmOTE2N2IyYmZjYjI0NGJiMmIzNzAwYmZiYWFm
NTQ3OTZjLi5kMjNjZmViYjQ1MDhiYzMwMDkxNWJiOTk2ZDNmMTUwNjJjZTM1MDllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaApAQCAtNDMsNyArNDMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CiBjbGFzcyBCbG9iTG9hZGVyOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgTmV0d29ya1NlbmRRdWV1ZSA6IHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlciB7CiBwdWJsaWM6CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgdm9pZCBwcm9jZXNzTWVzc2FnZXMoKTsKIAotICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6
OnZhcmlhbnQ8Q1N0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4sIFVuaXF1ZVJlZjxCbG9iTG9hZGVy
Pj47CisgICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxDU3RyaW5nLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4sIFVuaXF1ZVJlZjxCbG9iTG9hZGVyPj47CiAgICAgRGVxdWU8TWVz
c2FnZT4gbV9xdWV1ZTsKIAogICAgIFdyaXRlU3RyaW5nIG1fd3JpdGVTdHJpbmc7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5kZXggNTZhMDZmY2Fm
MjczZDI1ZGM0Yzc1ZGNlNTY5YWFjOGYxYWE1OTUyNy4uZDJiODc0MWEwNDQzNDJjN2ZmZDllOGE1
MzNjYzhhMTIwZTI5YmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1l
bnRFbGVtZW50LmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIHN0YXRpYyBib29sIG1pbWVUeXBlSXNT
dWl0YWJsZUZvcklubGluZUltYWdlQXR0YWNobWVudChjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQog
ICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUobWlt
ZVR5cGUpIHx8IE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGTUlNRVR5cGUobWltZVR5cGUpOwogfQog
Ci12b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0
YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
K3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRh
KGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKIHsKICAgICBhdXRvKiBob3N0RWxlbWVudCA9IHNoYWRvd0hvc3QoKTsKICAgICBp
ZiAoIWlzPEhUTUxJbWFnZUVsZW1lbnQ+KGhvc3RFbGVtZW50KSB8fCAhYnVmZmVyLT5zaXplKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAppbmRleCA1NzNl
YzJlYWUxY2RjMDYwOWYyNjFjMzg0MDBiYjAyYzQ4MGY3YmRkLi42NjFkZWM5Mzc2ZDhhOWQ2ZDQ3
MTdmZDBiNGNlN2Y4MmZmMDNmNzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgRmlsZTsKIGNsYXNzIEhUTUxJ
bWFnZUVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJBdHRhY2htZW50OwogY2xhc3MgU2hhcmVhYmxlQml0
bWFwOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgSFRNTEF0dGFjaG1lbnRFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50
IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEhUTUxBdHRhY2htZW50RWxlbWVudCk7CkBA
IC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0
aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB1cGRhdGVBdHRyaWJ1dGVzKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgbmV3Rmls
ZVNpemUsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmV3Rmls
ZW5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRo
RGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQ
dHI8SW1hZ2U+JiB0aHVtYm5haWwpOwogCiAgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQg
aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNTE3MWI5Y2Rj
Nzg5MzE3MWUyMWU1ZjRiZjU1MDE3ZWY5NDRhYzc5NS4uMWE1NmJjMDM1OWNjZTFmNTBkY2RkYTA2
NTIyMmEwMTA5NWE2OTA1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCkBAIC0yOTM4LDcgKzI5MzgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVu
dEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKQogICAgIGF0dGVtcHRUb1Jlc3Vt
ZVBsYXliYWNrSWZOZWNlc3NhcnkoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjZG1D
bGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYg
aW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQordm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVk
KGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YSkKIHsKICAgICBtZWRpYVBsYXllckluaXRpYWxpemF0aW9uRGF0YUVuY291bnRl
cmVkKGluaXREYXRhVHlwZSwgaW5pdERhdGEtPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA2OTU2Njk0OTYzMTBlZjkx
MDhiOTU2ZmRhNDgyMTQzMDE0OTcwZWNiLi42YzNiNjkzYjdiMTBlZGEzMGU1MWQ0YzY2MzFiZTNm
YjUwY2JmODBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNzIw
LDcgKzcyMCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDRE1DbGllbnQKICAgICB2b2lkIGNkbUNs
aWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKSBmaW5hbDsKLSAgICB2b2lk
IGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3Ry
aW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBjZG1DbGllbnRVbnJl
cXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKExFR0FD
WV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCA0NDJkMDk0NmJlMjUwZGNjZjU5MjdiYWE5Mjc5
M2E3MGVlOTE5MzNlLi4wMGQ4ZjIzOWQ3MTI3YzYxY2FlMWI1OGQ5YzRhMzAzYTliM2M5MDU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2
b2lkIEltYWdlRG9jdW1lbnQ6OnVwZGF0ZUR1cmluZ1BhcnNpbmcoKQogICAgIGlmICghbV9pbWFn
ZUVsZW1lbnQpCiAgICAgICAgIGNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCk7CiAKLSAgICBpZiAo
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEo
KSkKKyAgICBpZiAoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGxvYWRl
cigpLT5tYWluUmVzb3VyY2VEYXRhKCkpCiAgICAgICAgIG1faW1hZ2VFbGVtZW50LT5jYWNoZWRJ
bWFnZSgpLT51cGRhdGVCdWZmZXIoKmJ1ZmZlcik7CiAKICAgICBpbWFnZVVwZGF0ZWQoKTsKQEAg
LTE1MSw3ICsxNTEsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygpCiB7
CiAgICAgaWYgKCFwYXJzZXIoKS0+aXNTdG9wcGVkKCkgJiYgbV9pbWFnZUVsZW1lbnQpIHsKICAg
ICAgICAgQ2FjaGVkSW1hZ2UmIGNhY2hlZEltYWdlID0gKm1faW1hZ2VFbGVtZW50LT5jYWNoZWRJ
bWFnZSgpOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gbG9hZGVyKCktPm1h
aW5SZXNvdXJjZURhdGEoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGRhdGEgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogCiAgICAgICAgIC8vIElmIHRo
aXMgaXMgYSBtdWx0aXBhcnQgaW1hZ2UsIG1ha2UgYSBjb3B5IG9mIHRoZSBjdXJyZW50IHBhcnQs
IHNpbmNlIHRoZSByZXNvdXJjZSBkYXRhCiAgICAgICAgIC8vIHdpbGwgYmUgb3ZlcndyaXR0ZW4g
YnkgdGhlIG5leHQgcGFydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYTdjYTcxNjJkNzkxZWQ3ZmJhOGNjOTFj
MjFhMmNmM2FmNmU2OWE3ZS4uMTg3OTNmZjA2NjMzOGZiNjBhMzRkZWM5MDliYzJkZGQyOGJlYWZi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKQEAgLTg1MCw3ICs4NTAsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bQogICAgICAgICBuZXR3b3JrQWdlbnQtPmludGVyY2VwdFJlcXVlc3QobG9hZGVyLCBXVEZNb3Zl
KGhhbmRsZXIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2Vw
dFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQordm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+
JiYgaGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy5lbmFibGVkTmV0d29ya0FnZW50KCkpCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50
ZXJjZXB0UmVzcG9uc2UocmVzcG9uc2UsIGlkZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oCmluZGV4IDhlNjVjNGViMTAyMzM1MjFmNDhjN2Y0YjEyMGFkMmM4OTA5YTA3YmEuLmQyOTU3
ODEwZDgzODJjOTM1MWQ1YTkzZjE0NGFlZDE0OTNiY2M2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTkzLDcgKzkz
LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYWRvd1Jvb3Q7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgVGltZXJCYXNl
OwogY2xhc3MgV2ViS2l0TmFtZWRGbG93OwogY2xhc3MgV2ViU29ja2V0Q2hhbm5lbDsKQEAgLTIz
Niw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVx
dWVzdChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBi
b29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2Fk
ZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0
aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAg
c3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSYsIHN0
ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CiAgICAgc3RhdGljIHZv
aWQgYWRkTWVzc2FnZVRvQ29uc29sZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIHN0ZDo6
dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CkBAIC00NDEsNyArNDQxLDcg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGlj
IGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVz
dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlc291cmNlTG9hZGVyJiwgRnVuY3Rpb248dm9p
ZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJik7Ci0gICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0
UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0YXRp
YyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+KT4mJik7CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KTsKIApAQCAtMTI4OSw3ICsxMjg5LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIs
IEYKICAgICAgICAgaW50ZXJjZXB0UmVxdWVzdEltcGwoKmFnZW50cywgbG9hZGVyLCBXVEZNb3Zl
KGhhbmRsZXIpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpp
bnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4pPiYmIGhhbmRsZXIpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7
CiAgICAgaWYgKGF1dG8qIGFnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHMoZnJhbWUpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uV2ViS2l0LmNwcAppbmRleCA2MWU0YmMzYmEwMTllZTI1ZTVjOGJjMjIxZGZmNjA3N2Vk
ZGI4NjNkLi5mMDY0MDNhNjIzNGI0MmI2YWQyYTgwYjAxOTRhNTk2ZDg5ZjZlNmJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2Vi
S2l0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uV2ViS2l0LmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdEludGVybmFsKFJlc291cmNlTG9hZGVyJiBs
bwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdChsb2FkZXIs
IFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldl
YktpdDo6aW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYgZnJh
bWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewog
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJl
c3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQu
aAppbmRleCBmNzYxMTRjZTk4ZjQyYTdmZjkwNmE0OGQwNDIwYjk2MzA1ZDM2OTE0Li4wN2I0MjFi
NTljMTU1NWUxYTI5MWUxOGViYjI2MjIxMjJmMTY1OGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCkBA
IC0zNiwyMCArMzYsMjAgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJDT1JF
X0VYUE9SVCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQgewogcHVibGljOgogICAgIHN0
YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZShj
b25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBp
bnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKT4mJik7Ci0gICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29u
c3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNl
KGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiAKIHByaXZhdGU6CiAgICAgc3Rh
dGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdEludGVybmFsKGNvbnN0IEZyYW1lJiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVz
cG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAg
ICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImLCBG
dW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9p
ZCBpbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAg
ICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+KT4mJik7CiB9OwogCiBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUqIGZyYW1lLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCkBAIC03Niw3ICs3Niw3IEBAIGlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdChSZXNv
dXJjZUxvYWRlciYgbG9hCiAgICAgaW50ZXJjZXB0UmVxdWVzdEludGVybmFsKGxvYWRlciwgV1RG
TW92ZShoYW5kbGVyKSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSogZnJhbWUsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEFT
U0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3Bv
bnNlKGZyYW1lLCByZXNwb25zZSkpOwogICAgIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoKmZy
YW1lLCByZXNwb25zZSwgaWRlbnRpZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCA2Nzdj
NWI4MTJkNGYwNDcyMjlkNzQ1ZmU0NzM1ODY0MzBmZTBmZjczLi5mMzJmNjYwYjkxNzNiYWU4ZDVj
ZDlhMTMwZWFlNThiOTdkNWVjZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RhdGljIGNvbnN0
IHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDUwICogMTAwMCAqIDEw
MDA7IC8vIDUwTUIKIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNl
RGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAg
ICA6IG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKICAgICAsIG1fbG9hZGVySWQobG9hZGVySWQpCisg
ICAgLCBtX2RhdGFCdWZmZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQog
ewogfQogCkBAIC02NCw3ICs2NSw3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OnJlbW92ZUNvbnRlbnQoKQogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAg
ICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwogICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXIt
PnNpemUoKTsKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9kYXRh
QnVmZmVyLT5yZXNldCgpOwogICAgIH0KIAogICAgIGlmIChoYXNDb250ZW50KCkpIHsKQEAgLTgx
LDM2ICs4MiwzNyBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
OjpldmljdENvbnRlbnQoKQogICAgIHJldHVybiByZW1vdmVDb250ZW50KCk7CiB9CiAKK2Jvb2wg
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aGFzRGF0YSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuICFtX2RhdGFCdWZmZXItPmlzTnVsbCgpOworfQorCiBzaXplX3QgTmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fZGF0YUJ1ZmZlciA/IG1fZGF0YUJ1ZmZlci0+c2l6ZSgpIDogMDsKKyAgICByZXR1cm4g
bV9kYXRhQnVmZmVyLT5zaXplKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxl
bmd0aCkKIHsKICAgICBBU1NFUlQoIWhhc0NvbnRlbnQoKSk7Ci0gICAgaWYgKCFtX2RhdGFCdWZm
ZXIpCi0gICAgICAgIG1fZGF0YUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRh
dGFMZW5ndGgpOwotICAgIGVsc2UKLSAgICAgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwg
ZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7
CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29k
ZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKIAotICAgIHNp
emVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgYXV0byBidWZmZXIg
PSBtX2RhdGFCdWZmZXItPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBzaXplX3QgZGF0
YUxlbmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYgKG1fZGVjb2RlcikgewogICAgICAg
ICBtX2Jhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVy
LT5kZWNvZGVBbmRGbHVzaChtX2RhdGFCdWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CisgICAg
ICAgIG1fY29udGVudCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5kYXRhKCks
IGRhdGFMZW5ndGgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IHRy
dWU7Ci0gICAgICAgIG1fY29udGVudCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKG1fZGF0YUJ1ZmZl
ci0+ZGF0YSgpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2Rl
VG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOwogICAgIH0KIAotICAgIG1fZGF0
YUJ1ZmZlciA9IG51bGxwdHI7Ci0KICAgICByZXR1cm4gbV9jb250ZW50LnNpemVJbkJ5dGVzKCkg
LSBkYXRhTGVuZ3RoOwogfQogCkBAIC0yNjcsNyArMjY5LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6YWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIENhY2hl
ZFJlc28KICAgICByZXNvdXJjZURhdGEtPnNldENhY2hlZFJlc291cmNlKGNhY2hlZFJlc291cmNl
KTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRkUmVzb3VyY2VTaGFyZWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRF
bmNvZGluZ05hbWUpCiB7CiAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSByZXNvdXJj
ZURhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElkKTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXgg
ZWZhMDAwNTNhZTExN2E1NGRmYjEyNmQxMmY5YWJlZTdkYTU5MDhkNy4uZWUzOTQ1N2Y3NjcyZWFj
YWFjOTBhNWI2YmM4ODExMDhjYmRhOGE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJ
bnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYv
V2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDAsNyAr
NDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1
ZmZlckJ1aWxkZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZXNEYXRhIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTg4LDggKzkwLDggQEAgcHVibGljOgogICAgICAgICBSZWZQ
dHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rl
ci5jb3B5UmVmKCk7IH0KICAgICAgICAgdm9pZCBzZXREZWNvZGVyKFJlZlB0cjxUZXh0UmVzb3Vy
Y2VEZWNvZGVyPiYmIGRlY29kZXIpIHsgbV9kZWNvZGVyID0gV1RGTW92ZShkZWNvZGVyKTsgfQog
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyLmNvcHlSZWYoKTsgfQotICAgICAgICB2b2lkIHNldEJ1ZmZlcihSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsgfQorICAgICAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIuY29weVJlZigpOyB9CisgICAgICAgIHZvaWQgc2V0QnVmZmVyKFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVy
KTsgfQogCiAgICAgICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiYgY2Vy
dGlmaWNhdGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0ZUluZm87IH0KICAgICAg
ICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZUluZm8oY29uc3Qgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0
ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8pIHsgbV9jZXJ0aWZpY2F0ZUluZm8gPSBjZXJ0aWZpY2F0
ZUluZm87IH0KQEAgLTEwMywxMCArMTA1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgV2FsbFRpbWUg
cmVzcG9uc2VUaW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9
CiAgICAgICAgIHZvaWQgc2V0UmVzcG9uc2VUaW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jl
c3BvbnNlVGltZXN0YW1wID0gdGltZTsgfQogCi0gICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wgaGFzQnVmZmVy
ZWREYXRhKCkgY29uc3QgeyByZXR1cm4gaGFzRGF0YSgpOyB9CiAKICAgICBwcml2YXRlOgotICAg
ICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KKyAgICAg
ICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29u
c3Q7CiAgICAgICAgIHZvaWQgYXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
ZGF0YUxlbmd0aCk7CiAgICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKQEAg
LTExOSw4ICsxMjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05h
bWU7CiAgICAgICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291
cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2Rh
dGFCdWZmZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgICAg
ICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9kYXRhQnVmZmVyOworICAgICAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgICAgIHN0ZDo6b3B0
aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKICAgICAgICAgQ2FjaGVk
UmVzb3VyY2UqIG1fY2FjaGVkUmVzb3VyY2UgeyBudWxscHRyIH07CiAgICAgICAgIEluc3BlY3Rv
clBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIG1fdHlwZSB7IEluc3BlY3RvclBhZ2VBZ2VudDo6T3Ro
ZXJSZXNvdXJjZSB9OwpAQCAtMTQ0LDcgKzE0Niw3IEBAIHB1YmxpYzoKICAgICBSZXNvdXJjZURh
dGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAgdm9pZCBtYXliZURl
Y29kZURhdGFUb0NvbnRlbnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogICAgIHZvaWQgYWRk
Q2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIENhY2hlZFJlc291cmNlKik7
Ci0gICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1l
KTsKKyAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVz
dElkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmdOYW1lKTsKICAgICBSZXNvdXJjZURhdGEgY29uc3QqIGRhdGEoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQpOwogICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0YUZvclVSTChjb25zdCBT
dHJpbmcmIHVybCk7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVtb3ZlQ2FjaGVkUmVzb3VyY2UoQ2Fj
aGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA0NGUwODRhMjg4NDJmYmM1NjI4
OTM3NjFkNzFlNGM3NDI3NGViYjE4Li4xODlmMjZiMDk4YjczNjFkY2Y4ZTlkNjRlMzU5ZTc1ZmQ5
YzA5NzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xMTQwLDcgKzExNDAsNyBAQCB2b2lkIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYgbG9h
ZGVyLCBGdW5jdGlvbjx2bwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0SW50ZXJj
ZXB0ZWQocmVxdWVzdElkLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVzdChsb2FkZXIucmVx
dWVzdCgpKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQordm9pZCBJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEFTU0VSVChtX2VuYWJsZWQpOwogICAg
IEFTU0VSVChtX2ludGVyY2VwdGlvbkVuYWJsZWQpOwpAQCAtMTI0Myw3ICsxMjQzLDcgQEAgUHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRXaXRoUmVzcG9uc2UoY29uc3QKICAgICAgICAgb3ZlcnJpZGVSZXNwb25zZS5zZXRIVFRQSGVh
ZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlLCBvdmVycmlkZVJlc3BvbnNlLm1p
bWVUeXBlKCkpOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG92ZXJyaWRlRGF0
YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhOwogICAg
IGlmIChiYXNlNjRFbmNvZGVkKSB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0gYmFzZTY0RGVjb2Rl
KGNvbnRlbnQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKQEAgLTEyNzEsNyArMTI3MSw3IEBAIFBy
b3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJj
ZXB0UmVxdWVzdFdpdGhSZXNwb25zCiAgICAgaWYgKGxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3Rh
dGUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJVbmFibGUgdG8gZnVsZmlsbCBy
ZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfcyk7CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBk
YXRhOwogICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0gYmFz
ZTY0RGVjb2RlKGNvbnRlbnQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKQEAgLTE0MDcsMTIgKzE0
MDcsMTIgQEAgYm9vbCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVu
dChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFN0cmkKICAgICAgICAgaWYgKEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQocmVzb3VyY2UubWltZVR5cGUoKSkpIHsKICAg
ICAgICAgICAgIGF1dG8gZGVjb2RlciA9IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4
dERlY29kZXIocmVzb3VyY2UubWltZVR5cGUoKSwgcmVzb3VyY2UucmVzcG9uc2UoKS50ZXh0RW5j
b2RpbmdOYW1lKCkpOwogICAgICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKLSAgICAg
ICAgICAgICpyZXN1bHQgPSBkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZXItPmRlY29kZUFu
ZEZsdXNoKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgICpiYXNlNjRF
bmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICpyZXN1bHQgPSBiYXNlNjRF
bmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRl
eCA4ZjZmYmNjMjkzYWViZjhiOWQ1Yzk0NWQyODI5YTE1MjdiNzRiYzdmLi42YmNkODdkZGNkOGIw
NDQxMzA4ZDFkMDFlY2E2YjBlNmRhMTQxM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTEyMyw3ICsx
MjMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB3aWxsSW50ZXJjZXB0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKTsKICAgICBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKLSAgICB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAg
dm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKICAgICB2b2lkIGlu
dGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpPiYmKTsKIAogICAgIHZvaWQgc2VhcmNoT3RoZXJSZXF1ZXN0cyhjb25zdCBK
U0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiwgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKTsKQEAgLTE4NSw3ICsxODUsNyBAQCBw
cml2YXRlOgogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQZW5kaW5nSW50ZXJjZXB0UmVz
cG9uc2UpOwogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBv
cmlnaW5hbFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
ICAgIFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBvcmln
aW5hbFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogICAgICAgICAgICAgOiBtX29yaWdpbmFsUmVzcG9uc2Uob3JpZ2luYWxSZXNwb25zZSkKICAg
ICAgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSkKICAgICAgICAgeyB9CkBAIC0yMDIsNyArMjAyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHJlc3BvbmQobV9vcmlnaW5hbFJlc3BvbnNlLCBudWxscHRyKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZvaWQgcmVzcG9uZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YSkKKyAgICAgICAgdm9pZCByZXNwb25kKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSkK
ICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCFtX3Jlc3BvbmRlZCk7CiAgICAgICAgICAg
ICBpZiAobV9yZXNwb25kZWQpCkBAIC0yMTUsNyArMjE1LDcgQEAgcHJpdmF0ZToKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9vcmlnaW5hbFJlc3BvbnNlOwotICAg
ICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPik+IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAgICAgIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPik+IG1fY29tcGxldGlvbkhhbmRsZXI7CiAgICAgICAgIGJvb2wgbV9yZXNw
b25kZWQgeyBmYWxzZSB9OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAzZGFmZTY0MzdkZjEy
MTA0MDVmZWZiZjM3NTc4NWZlY2Q1ZWFjNDcyLi4xYjY0NmFhMjE3M2FiNTRhM2YxYWJkY2I1MDIw
NGFkZTk4YzA3M2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0xMDAsMTUgKzEwMCwxNSBAQCBzdGF0aWMg
Ym9vbCBkZWNvZGVCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCB1bnNpZ25lZCBzaXplLCBj
b25zdCBTdHJpbmcmIHRleAogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJlc291cmNl
Q29udGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1
bHQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZl
ci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCks
IHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CisgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwg
cmVzdWx0KTsKIH0KIAotYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRl
bnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKK2Jvb2wgSW5z
cGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29s
IHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQogewotICAgIHJldHVybiBkYXRhQ29u
dGVudChidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+
c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsK
KyAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNv
ZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKIGJvb2wgSW5zcGVjdG9y
UGFnZUFnZW50OjpkYXRhQ29udGVudChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXpl
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwg
U3RyaW5nKiByZXN1bHQpCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OnJlc291cmNlQ29udGVudChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBG
cmEKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZm
ZXI7CiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdGcmFn
bWVudElkZW50aWZpZXIodXJsLCBsb2FkZXItPnVybCgpKSkgewogICAgICAgICAqYmFzZTY0RW5j
b2RlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggYjUxYWRkYjFiZDhmMmNjZTY5NTYwNzk5Y2QxZDk1
MmQyZGU0MjgzOC4uM2Q1ZTU2NmRiZTBjNWVjMTFkOWU4ZGY2N2ZjZjBhNzA5ODhhMmY4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIEluc3BlY3RvckNsaWVudDsKIGNsYXNzIElu
c3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVuZGVyT2JqZWN0OwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSW5z
cGVjdG9yUGFnZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGlj
IEluc3BlY3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoSW5zcGVjdG9yUGFnZUFnZW50KTsKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGlj
OgogICAgICAgICBPdGhlclJlc291cmNlLAogICAgIH07CiAKLSAgICBzdGF0aWMgYm9vbCBzaGFy
ZWRCdWZmZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7Cisg
ICAgc3RhdGljIGJvb2wgc2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNl
NjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKICAgICBzdGF0aWMgVmVjdG9yPENhY2hlZFJlc291
cmNlKj4gY2FjaGVkUmVzb3VyY2VzRm9yRnJhbWUoRnJhbWUqKTsKICAgICBzdGF0aWMgdm9pZCBy
ZXNvdXJjZUNvbnRlbnQoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBGcmFtZSos
IGNvbnN0IFVSTCYsIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKICAgICBz
dGF0aWMgU3RyaW5nIHNvdXJjZU1hcFVSTEZvclJlc291cmNlKENhY2hlZFJlc291cmNlKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggYjRlNmEzYTUzYjRjMGMw
ZGExYzMxNzJkZDQyY2FlNmE4Y2QyMWY3YS4uNmFlNTI2NTk3Y2QyODYzMWJlNzk1MGZjMzM1MzZm
OGYzNDdkN2FmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAt
MjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFs
bG93ZWQpOwogICAgIEFTU0VSVChyZXNvdXJjZS5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0
YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgaWYgKGF1dG8qIHJlc291cmNlQnVm
ZmVyID0gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAgbV9jbGllbnQuZGF0YVJl
Y2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPmRhdGEoKSwgcmVzb3Vy
Y2VCdWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hD
b250ZW50RmlsdGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJl
c291cmNlQnVmZmVyLT5zaXplKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFn
ZVVSTCgpCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpoYW5kbGVQcm92
aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIEFT
U0VSVCh3aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcikpOwogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhIHsgbV9ibG9ja2luZ0NvbnRlbnRGaWx0
ZXItPnJlcGxhY2VtZW50RGF0YSgpIH07CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHJlcGxhY2VtZW50RGF0YSB7IG1fYmxvY2tpbmdDb250ZW50RmlsdGVyLT5yZXBsYWNlbWVu
dERhdGEoKSB9OwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyBVUkwoKSwgInRleHQv
aHRtbCJfcywgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihyZXBsYWNlbWVudERhdGEtPnNpemUoKSks
ICJVVEYtOCJfcyB9OwogICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhIHsgV1RGTW92
ZShyZXBsYWNlbWVudERhdGEpLCBlcnJvci5mYWlsaW5nVVJMKCksIHJlc3BvbnNlLCBTdWJzdGl0
dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4gfTsKICAgICBTZXRGb3JT
Y29wZTxib29sPiBsb2FkaW5nQmxvY2tlZFBhZ2UgeyBtX2lzTG9hZGluZ0Jsb2NrZWRQYWdlLCB0
cnVlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBjM2Q4
NDUwZjcxYzJjMzczZDJhZjFjY2NmYjIxNWFkODFiZjgwZDBiLi4zYjkwZWY0YzU4MjdlNmMwYjQ5
YjM0NjU2YjNjZDcxYThlZGE5NjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCBEb2N1bWVudExvYWRlcjo6fkRvY3VtZW50TG9h
ZGVyKCkKICNlbmRpZgogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBEb2N1bWVudExvYWRlcjo6
bWFpblJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlmIChtX3N1
YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG1fc3Vic3RpdHV0ZURhdGEu
Y29udGVudCgpLT5jb3B5KCk7CkBAIC0xNjA4LDExICsxNjA4LDExIEBAIGJvb2wgRG9jdW1lbnRM
b2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgYWRkQWxsQXJjaGl2ZVJlc291cmNlcygq
bV9hcmNoaXZlKTsKICAgICBBU1NFUlQobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAgICAg
YXV0byYgbWFpblJlc291cmNlID0gKm1fYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7Ci0gICAgbV9w
YXJzZWRBcmNoaXZlRGF0YSA9ICZtYWluUmVzb3VyY2UuZGF0YSgpOworICAgIG1fcGFyc2VkQXJj
aGl2ZURhdGEgPSBtYWluUmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV93
cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJU
KG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobWFpblJlc291cmNlLmRhdGEo
KS5kYXRhKCksIG1haW5SZXNvdXJjZS5kYXRhKCkuc2l6ZSgpKTsKKyAgICBjb21taXREYXRhKG1f
cGFyc2VkQXJjaGl2ZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlLmRhdGEoKS5zaXplKCkpOwog
ICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiB9CkBAIC0xNjcxLDcgKzE2NzEsNyBAQCBBcmNoaXZl
UmVzb3VyY2UqIERvY3VtZW50TG9hZGVyOjphcmNoaXZlUmVzb3VyY2VGb3JVUkwoY29uc3QgVVJM
JiB1cmwpIGNvbnN0CiAKIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IERvY3VtZW50TG9hZGVyOjpt
YWluUmVzb3VyY2UoKSBjb25zdAogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBt
YWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRh
dGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBkYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvJiByZXNwb25zZSA9IHRoaXMtPnJlc3Bv
bnNlKCk7CkBAIC0yMjU1LDggKzIyNTUsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjptYXliZUZp
bmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKIAogICAgIGZyYW1lTG9hZGVyKCktPnNldHVw
Rm9yUmVwbGFjZSgpOwogICAgIG1fY29tbWl0dGVkID0gZmFsc2U7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwotICAgIGNvbW1pdExv
YWQocmVzb3VyY2VEYXRhLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0
YSgpOworICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3Rh
cnRJY29uTG9hZGluZygpCkBAIC0yMjkyLDcgKzIyOTIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVy
OjpzdGFydEljb25Mb2FkaW5nKCkKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5nZXRM
b2FkRGVjaXNpb25Gb3JJY29ucyhpY29uRGVjaXNpb25zKTsKIH0KIAotdm9pZCBEb2N1bWVudExv
YWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBs
b2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lv
bkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGF1dG8gaWNvbiA9IG1faWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uLnRha2Uo
bG9hZElkZW50aWZpZXIpOwogCkBAIC0yMzEzLDcgKzIzMTMsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxv
YWRJZGVudAogICAgIHJhd0ljb25Mb2FkZXItPnN0YXJ0TG9hZGluZygpOwogfQogCi12b2lkIERv
Y3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImIGxvYWRlciwgU2hh
cmVkQnVmZmVyKiBidWZmZXIpCit2b2lkIERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmdJ
Y29uKEljb25Mb2FkZXImIGxvYWRlciwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKQog
ewogICAgIC8vIElmIHRoZSBEb2N1bWVudExvYWRlciBoYXMgZGV0YWNoZWQgZnJvbSBpdHMgZnJh
bWUsIGFsbCBpY29uIGxvYWRzIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBjYW5jZWxsZWQuCiAg
ICAgQVNTRVJUKG1fZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApp
bmRleCBmYmY1NDVjNDYwZTRlNDg5ZDg3YjI1YzBlODVlY2NjYTRjYmYzYzg3Li4zMzk4NzNkNWQz
ZmI5YmIzMDA0OThjZDZmMzdjYmY2NWI3OGFmNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFzcyBBcmNoaXZlUmVzb3VyY2VDb2xs
ZWN0aW9uOwogY2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxv
YWRlcjsKIGNsYXNzIENvbnRlbnRGaWx0ZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3Qg
Q3VzdG9tSGVhZGVyRmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRnJhbWU7CkBAIC04
Myw3ICs4NCw3IEBAIGNsYXNzIEljb25Mb2FkZXI7CiBjbGFzcyBQYWdlOwogY2xhc3MgUHJldmll
d0NvbnZlcnRlcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNXQ2xpZW50Q29ubmVjdGlvbjsK
IGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwogY2xhc3MgU3Vic3RpdHV0ZVJlc291cmNlOwpAQCAt
MTcxLDcgKzE3Miw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1lTG9hZGVy
KiBmcmFtZUxvYWRlcigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN1YnJlc291cmNlTG9h
ZGVyKiBtYWluUmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEoKSBj
b25zdDsKICAgICAKICAgICBEb2N1bWVudFdyaXRlciYgd3JpdGVyKCkgY29uc3QgeyByZXR1cm4g
bV93cml0ZXI7IH0KIApAQCAtMzkyLDggKzM5Myw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAg
dm9pZCBzdGFydEljb25Mb2FkaW5nKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciopPiYmKTsKLSAgICB2b2lkIGZp
bmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYsIFNoYXJlZEJ1ZmZlciopOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1
aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKik+JiYpOworICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9h
ZGVyJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogCiAgICAgY29uc3QgVmVjdG9yPExpbmtJ
Y29uPiYgbGlua0ljb25zKCkgY29uc3QgeyByZXR1cm4gbV9saW5rSWNvbnM7IH0KIApAQCAtNjIx
LDcgKzYyMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JOYXZpZ2F0aW9uUG9s
aWN5IHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIExpbmtJY29uPiBtX2ljb25z
UGVuZGluZ0xvYWREZWNpc2lvbjsKLSAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxJY29uTG9h
ZGVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4+IG1faWNvbkxvYWRl
cnM7CisgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8SWNvbkxvYWRlcj4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPj4gbV9pY29uTG9hZGVyczsKICAg
ICBWZWN0b3I8TGlua0ljb24+IG1fbGlua0ljb25zOwogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBlMTNlMjg2ZTE0
ZjRmZThmZDdkZjkwYTBlMTUxZjA5MzQxOGRkZGIxLi4wOGEwYWUxOWEzNzk4NDZmMTU3NTY0YzJk
MGM4MzJiMjc0ODM2MDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtNTks
NiArNTksNyBAQCBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQYWdlOwogY2xh
c3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDaHJvbWU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBj
bGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9h
ZGVyOwpAQCAtNzYsNyArNzcsNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBl
bnVtIGNsYXNzIENhY2hlUG9saWN5IDogdWludDhfdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNGZkNjM3YTkwMTRhNWQ0MWEyMjZlZTQ1OTE3YjZiM2U5
YTc5MGViYi4uZWU5ZjNkMGM5ODRkNDU1Y2JiOTFiNDYwYzFiYzEyODk4ZDEyMzY1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTk4LDcgKzk4LDcgQEAg
Y2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiBj
bGFzcyBXaWRnZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJT
dHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKaW5kZXgg
YWVmNjY4YmQ2M2VkNWZjZDQ1ZTYxZTlkMWYxMDdjZmI2YWVmMjY0Yi4uMjlkMmUzZjQ2MTQwYWFh
NTExNjBlNmEyODU2MmYzNzBlMzcxZWIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0
cmF0ZWd5LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiAKIHN0cnVjdCBGZXRjaE9wdGlvbnM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNw
cAppbmRleCA2MzM3NTU5NjMyMDAxNDYzODI4OWUyODI2MDRjNTViMGFmNDQ1MzEzLi42MDQzYWM5
YmUyNjdlYTRmYmM3MWUxMTE4YjkwNzkxNTVlMzkxNTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKQEAgLTE0NiwxMiAr
MTQ2LDEyIEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9h
ZFR5cGUpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5
cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0
ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBl
KTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5
cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBSZWY8TmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCmluZGV4
IDQ4YmIyMTUzYzkzZjJkYzc1NGUyMDczMjI1MmMwNTA5Y2Y3MDRhNDEuLmI1MTc0ZWRjOTRiOTky
MzkwMjA1ZjBmYWQ0NTJlYTVhYzM4Nzg5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25z
dCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIAotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlw
ZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQs
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAKICAgICB2b2lkIG5vdGlmeURvbmUoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0
LmNwcAppbmRleCBjNjI3NzY4NThhNmRjNWFmZmQzNmRjOWU3ODVjOGJkMjQ3MmJiNzRkLi5kOTRi
NzAwMDc0MWNkOTEyYjkxNzNlMmIzNzQ2ZDRkYThiMzY4YTU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcApAQCAtMTU1
LDcgKzE1NSw3IEBAIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGln
ZXN0Rm9yQnl0ZXMoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnCiAgICAgcmV0dXJuIHsgYWxnb3Jp
dGhtLCBjcnlwdG9EaWdlc3QtPmNvbXB1dGVIYXNoKCkgfTsKIH0KIAotUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZmZXIoUmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtLCBjb25zdCBTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcikKK1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGln
ZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGht
IGFsZ29yaXRobSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogewogICAg
IGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSh0b0NyeXB0b0Rp
Z2VzdEFsZ29yaXRobShhbGdvcml0aG0pKTsKICAgICBpZiAoYnVmZmVyKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmgKaW5kZXgg
YWVhM2RjNTdjODc4MzEzMDEzYTViMTZjOTM5Yjc3NGVkNDg0MzI0Yy4uODNiODYxM2NmZGEyMzI5
YWUzMGJiZjZhYmMxNGI5OWQ0NDIzN2IwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaApAQCAtMzQsNyArMzQsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBSZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3QgewogICAgIGVudW0gY2xhc3MgQWxnb3JpdGhtIHsKQEAgLTc1LDcg
Kzc1LDcgQEAgc3RkOjpvcHRpb25hbDxFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0
PiBwYXJzZUVuY29kZWRDcnlwdG9ncmFwaGljRGlnZXMKIAogc3RkOjpvcHRpb25hbDxSZXNvdXJj
ZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IGRlY29kZUVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3QoY29uc3QgRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCYpOwogCi1SZXNv
dXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZl
cihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29uc3QgU2hhcmVkQnVm
ZmVyKik7CitSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZv
clNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0
IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6
OkFsZ29yaXRobSwgY29uc3Qgdm9pZCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBhYTg1YmI0ZDNjYTg3MTQ1
YmI3YTg2ZjY0NjY4ZTQ5NTE3NmFjMjM1Li5kZjEzOTU4OGU4ZDUyNTJiM2VlYzYxOTNhZTYxYWEy
NDc4NmIyMTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTc2LDYgKzc2LDcgQEAgREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihSZXNv
dXJjZUxvYWRlcik7CiBSZXNvdXJjZUxvYWRlcjo6UmVzb3VyY2VMb2FkZXIoRnJhbWUmIGZyYW1l
LCBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucykKICAgICA6IG1fZnJhbWUgeyAmZnJhbWUg
fQogICAgICwgbV9kb2N1bWVudExvYWRlciB7IGZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50
TG9hZGVyKCkgfQorICAgICwgbV9yZXNvdXJjZURhdGEgeyBtYWtlVW5pcXVlUmVmPFNoYXJlZEJ1
ZmZlckJ1aWxkZXI+KCkgfQogICAgICwgbV9kZWZlcnNMb2FkaW5nIHsgb3B0aW9ucy5kZWZlcnNM
b2FkaW5nUG9saWN5ID09IERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZyAm
JiBmcmFtZS5wYWdlKCktPmRlZmVyc0xvYWRpbmcoKSB9CiAgICAgLCBtX29wdGlvbnMgeyBvcHRp
b25zIH0KIHsKQEAgLTExOCw3ICsxMTksNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWxlYXNl
UmVzb3VyY2VzKCkKIAogICAgIG1faWRlbnRpZmllciA9IHsgfTsKIAotICAgIG1fcmVzb3VyY2VE
YXRhID0gbnVsbHB0cjsKKyAgICBtX3Jlc291cmNlRGF0YS0+cmVzZXQoKTsKICAgICBtX2RlZmVy
cmVkUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwogfQogCkBAIC0xODksNyArMTkwLDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRlcjo6aW5pdChSZXNvdXJjZVJlcXVlc3QmJiBjbGllbnRSZXF1ZXN0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2kKICAgICB9KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRl
cjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFJlc291cmNlTG9hZGVyOjpk
ZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgZGlkUmVjZWl2
ZVJlc3BvbnNlKHJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlYWNo
ZWRUZXJtaW5hbFN0YXRlKCkpCkBAIC0zMTgsNyArMzE5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRl
cjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJp
bmdQb2wKIAogICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1ZmZlcmVkIGRhdGEKICAgICBpZiAo
ZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRh
dGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9yZXNvdXJj
ZURhdGEtPnJlc2V0KCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1
YnN0aXR1dGVSZXNvdXJjZSgpCkBAIC0zMjksMjkgKzMzMCwyOSBAQCB2b2lkIFJlc291cmNlTG9h
ZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQogICAgICAgICBtX2hhbmRsZS0+
Y2FuY2VsKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBE
YXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRk
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBl
KQogewogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVy
aW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICgh
bV9yZXNvdXJjZURhdGEgfHwgZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNv
dXJjZSkgewotICAgICAgICBpZiAoYnVmZmVyKQotICAgICAgICAgICAgbV9yZXNvdXJjZURhdGEg
PSBidWZmZXI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2VEYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICAKKyAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJj
ZSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPnJlc2V0KCk7CisKICAgICBpZiAoYnVmZmVyKQog
ICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKCpidWZmZXIpOwogICAgIGVsc2UKICAgICAg
ICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCitjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZURhdGEtPmdldCgpLmdldCgpOworfQorCiB2b2lkIFJl
c291cmNlTG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSgpCiB7Ci0gICAgaWYgKG1fcmVzb3VyY2VE
YXRhKQotICAgICAgICBtX3Jlc291cmNlRGF0YS0+Y2xlYXIoKTsKKyAgICBpZiAoIW1fcmVzb3Vy
Y2VEYXRhLT5pc051bGwoKSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEtPmVtcHR5KCk7CiB9CiAK
IGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdApAQCAtNTUx
LDE0ICs1NTIsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGwKICAgICBkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQ
YXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUp
CiB7CiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZl
ciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIFJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQg
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXls
b2FkVHlwZSkKIHsKLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBnZXQgZGF0YStsZW5n
dGggKk9SKiBhIFNoYXJlZEJ1ZmZlci4KKyAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBn
ZXQgZGF0YStsZW5ndGggKk9SKiBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAgICAgQVNTRVJU
KCFidWZmZXIgfHwgKCFkYXRhICYmICFsZW5ndGgpKTsKIAogICAgIC8vIFByb3RlY3QgdGhpcyBp
biB0aGlzIGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNh
biBkbwpAQCAtNTcxLDcgKzU3Miw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoCiAgICAgLy8g
SG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRo
aXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3VlIHdp
dGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFj
a3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0gICAg
ICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVy
ID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IGxlbmd0
aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOworICAgICAgICBmcmFtZUxv
YWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkg
OiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG5ldHdvcmtMb2FkTWV0cmljcykKQEAgLTczNSw3ICs3MzYsNyBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbgogICAgIGRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCwgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBkaWRSZWNlaXZlQnVmZmVyKFdURk1v
dmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0ZmQyYmYwYmJiM2IxYmQyMTU0
NWRiNTJjMmUxY2E2NGVlNDJiOTE3Li41NGIxYjg2NmRmODk2YTg0YjRjYTI5N2VlNDc2ZDZkMGI2
NjFmZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMzYsNiAr
MzYsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNl
UmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiAjaWYgRU5BQkxFKENPTlRFTlRf
RVhURU5TSU9OUykKQEAgLTU1LDYgKzU2LDggQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZUxv
YWRlcjsKIGNsYXNzIExlZ2FjeVByZXZpZXdMb2FkZXI7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJp
Y3M7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVp
bGRlcjsKIAogREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoUmVzb3VyY2VM
b2FkZXIpOwogY2xhc3MgUmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVz
b3VyY2VMb2FkZXI+LCBwdWJsaWMgUmVmQ291bnRlZDxSZXNvdXJjZUxvYWRlcj4sIHByb3RlY3Rl
ZCBSZXNvdXJjZUhhbmRsZUNsaWVudCB7CkBAIC02Niw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBpbml0KFJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKIAotICAgIHZvaWQgZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkZWxp
dmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZp
cnR1YWwgdm9pZCBzdGFydExvYWRpbmcoKQpAQCAtOTgsNyArMTAxLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAKLSAgICBTaGFy
ZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLmdl
dCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkg
Y29uc3Q7CiAgICAgdm9pZCBjbGVhclJlc291cmNlRGF0YSgpOwogICAgIAogICAgIHZpcnR1YWwg
Ym9vbCBpc1N1YnJlc291cmNlTG9hZGVyKCkgY29uc3Q7CkBAIC0xMDcsNyArMTEwLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0
ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcg
bG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
TG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKQEAgLTE2Niw3ICsxNjksNyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICBib29sIHdhc0NhbmNlbGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuY2VsbGF0
aW9uU3RhdHVzID49IENhbmNlbGxlZDsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSk7CiAgICAgCiAgICAgdm9pZCBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBv
bGljeSByZWZlcnJlclBvbGljeSkgeyBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSByZWZlcnJl
clBvbGljeTsgfQogICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3QgeyBy
ZXR1cm4gbV9vcHRpb25zLnJlZmVycmVyUG9saWN5OyB9CkBAIC0xOTEsNyArMTk0LDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0g
MDsKIAotICAgIHZvaWQgYWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwg
U2hhcmVkQnVmZmVyKiwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGFkZERhdGFPckJ1ZmZl
cihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBEYXRh
UGF5bG9hZFR5cGUpOwogICAgIHZvaWQgbG9hZERhdGFVUkwoKTsKICAgICB2b2lkIGZpbmlzaE5l
dHdvcmtMb2FkKCk7CiAKQEAgLTIwMiw3ICsyMDUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJj
ZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgdWludDhfdCosIHVuc2lnbmVkLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwogICAgIHZvaWQgd2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRl
OwpAQCAtMjI3LDcgKzIzMCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9y
ZXF1ZXN0OwogICAgIFJlc291cmNlUmVxdWVzdCBtX29yaWdpbmFsUmVxdWVzdDsgLy8gQmVmb3Jl
IHJlZGlyZWN0cy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3Jlc291cmNlRGF0YTsKKyAg
ICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9yZXNvdXJjZURhdGE7CiAgICAgCiAg
ICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDZjZWZiZGY5ZGExNzg5OTdl
ZGNiOWYzNTQ0ZjQ4ODRiNjBhNmVmZS4uMzdkMGJiODIxYWJkODZhOWI1NjA2ZTEyN2VmYzk0MTJh
NTFiYjFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb24KICAgICBkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgs
IGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRh
UGF5bG9hZFR5cGUpCiB7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKGF1dG8gcHJldmll
d0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewpAQCAtNTQyLDcgKzU0Miw3IEBAIHZv
aWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGxvbmcgbG9uZyBlCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRy
LCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUp
OwogfQogCi12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5
bG9hZFR5cGUpCit2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIEFTU0VSVChtX3Jlc291cmNlKTsKIApAQCAt
NTYxLDcgKzU2MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwKICAgICAgICAgaWYgKGF1dG8q
IHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNv
dXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0
YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNv
dXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKaW5kZXggMzcyM2I2Yjlh
YjlmZGRhYWE1NTc0YmZiMGU2ZjM4Y2VkN2FlZmI3NS4uODMyYzlmMGU3M2QzODQ2NGE3OTVmNDAz
ODYwZjc5YzM0ZTczYmM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKHVu
c2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVz
VG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxl
dGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4g
Y2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiBjaGVja1JlZGlyZWN0aW9uQ3Jvc3NP
cmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcHJldmlvdXNSZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KTsK
IAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqLCBpbnQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAKICAgICB2b2lkIG5vdGlmeURvbmUo
TG9hZENvbXBsZXRpb25UeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnN0aXR1dGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEu
aAppbmRleCBmNjYyOTJlMzFjYmViNDI2NDMwYTgzMmFkZWY0Mjk5MWNiNTc0MzZlLi5hOGE0OWI0
N2Y5MjczNDI3NGJhNGNlYWJjMTcwN2ZlZmE3YjY2NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3Vic3RpdHV0ZURhdGEuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFN1YnN0aXR1dGVEYXRhKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYgY29udGVudCwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNob3VsZFJldmVh
bFRvU2Vzc2lvbkhpc3RvcnkpCisgICAgICAgIFN1YnN0aXR1dGVEYXRhKFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGNvbnRlbnQsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzaG91
bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KQogICAgICAgICAgICAgOiBtX2NvbnRlbnQoV1RGTW92
ZShjb250ZW50KSkKICAgICAgICAgICAgICwgbV9mYWlsaW5nVVJMKGZhaWxpbmdVUkwpCiAgICAg
ICAgICAgICAsIG1fcmVzcG9uc2UocmVzcG9uc2UpCkBAIC01NCwxNCArNTQsMTQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnRlbnQgIT0gbnVsbHB0cjsgfQogICAgICAgICBib29sIHNob3VsZFJldmVhbFRvU2Vzc2lvbkhp
c3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgPT0g
U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpWaXNpYmxlOyB9CiAKLSAgICAgICAgY29uc3QgU2hh
cmVkQnVmZmVyKiBjb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50LmdldCgpOyB9Cisg
ICAgICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGNvbnRlbnQoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRlbnQuZ2V0KCk7IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UubWltZVR5cGUoKTsgfQogICAgICAgICBjb25zdCBT
dHJpbmcmIHRleHRFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UudGV4dEVuY29k
aW5nTmFtZSgpOyB9CiAgICAgICAgIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCgpIGNvbnN0IHsgcmV0
dXJuIG1fZmFpbGluZ1VSTDsgfQogICAgICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KICAgICAgICAgCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb250ZW50OworICAgICAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9jb250ZW50OwogICAgICAgICBVUkwgbV9mYWls
aW5nVVJMOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgICAgIFNl
c3Npb25IaXN0b3J5VmlzaWJpbGl0eSBtX3Nob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgeyBT
ZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OkhpZGRlbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oCmluZGV4IDU5NjY0YjU4NTRmODViMDJjZGYzNDkwMjBhMGVm
ZjEzZWI3ODg4NzkuLmNmMmRlMGM2MmQ5NWYzMzI1YjQyYjQ2ZTI0MDM3NzQ0MTA3NDJhMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKQEAgLTM3LDEyICsz
NywxNCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc3BvbnNlOyB9Ci0gICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFNoYXJlZEJ1ZmZlcj4obV9kYXRhKTsgfQorICAgIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJl
bmNlX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9KTsg
fQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgbV9k
YXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmVt
cHR5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2Fk
ZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLT5j
b3B5KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRl
cikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEuY29w
eSgpKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVybCwg
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCisg
ICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3Bv
bnNlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogICAgICAgICA6IG1fdXJs
KFdURk1vdmUodXJsKSkKICAgICAgICAgLCBtX3Jlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKQog
ICAgICAgICAsIG1fZGF0YShXVEZNb3ZlKGRhdGEpKQpAQCAtNTIsNyArNTQsNyBAQCBwcm90ZWN0
ZWQ6CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVz
cG9uc2U7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgbV9kYXRhOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNw
cAppbmRleCA4OWYzYjBmMWRjMzlkNDBhNTYzODc4YWU1NWY3NmM2NzBhNzE1MDkxLi4wMzZlZmQy
MGU0OTYzMDBjZjhjOWU3ZTc5MDMxN2UwMWRlNWJhZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAt
NjA1LDcgKzYwNSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2Fk
aW5nTWFuaWZlc3QoKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGF1dG8gbWFuaWZlc3Qg
PSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBtX21hbmlmZXN0
UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5kYXRh
KCkuZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpOworICAgIGF1dG8g
bWFuaWZlc3QgPSBwYXJzZUFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdChtX21hbmlmZXN0VVJMLCBt
X21hbmlmZXN0UmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwgbV9tYW5pZmVzdFJlc291
cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2Ut
PmRhdGEoKS5zaXplKCkpOwogICAgIGlmICghbWFuaWZlc3QpIHsKICAgICAgICAgLy8gQXQgdGhl
IHRpbWUgb2YgdGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJl
IGlzIHRoZSBvbmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgogICAgICAgICBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpBcHBD
YWNoZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNv
dWxkIG5vdCBiZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iX3Mp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlSG9zdC5jcHAKaW5kZXggNjAzMjgxODg4Mzc1ZjQ0YTYyNGIzZTNiM2FhZmUwNmEzNjg5
MmVlNi4uNTE5NzhmNDEyMzg3NGRjNTY2MGVmZjQ3MDY1OTcwN2Q0ZTVkODVhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwCkBAIC0yNTUsMTAgKzI1NSw4IEBAIFVSTCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Y3Jl
YXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBhdGgpCiAKIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYg
cmVzb3VyY2UpCiB7Ci0gICAgLy8gRklYTUU6IENsaWVudHMgcHJvYmFibHkgZG8gbm90IG5lZWQg
YSBjb3B5IG9mIHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNv
cHkoKSBvbmNlIHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCiAg
ICAgaWYgKHJlc291cmNlLnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiByZXNvdXJj
ZS5kYXRhKCkuY29weSgpOworICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VDb250
aWd1b3VzKCk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHJlc291cmNlLnBhdGgoKSk7CiB9CiAKQEAgLTI5MCw5ICsyODgsNyBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JgogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNl
OwogICAgICAgICBpZiAoZ2V0QXBwbGljYXRpb25DYWNoZUZhbGxiYWNrUmVzb3VyY2UocmVxdWVz
dCwgcmVzb3VyY2UpKSB7CiAgICAgICAgICAgICByZXNwb25zZSA9IHJlc291cmNlLT5yZXNwb25z
ZSgpOwotICAgICAgICAgICAgLy8gRklYTUU6IENsaWVudHMgcHJvYWJseSBkbyBub3QgbmVlZCBh
IGNvcHkgb2YgdGhlIFNoYXJlZEJ1ZmZlci4KLSAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgY2Fs
bCB0byBjb3B5KCkgb25jZSB3ZSBlbnN1cmUgU2hhcmVkQnVmZmVyIHdpbGwgbm90IGJlIG1vZGlm
aWVkLgotICAgICAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkuY29weSgpOworICAgICAg
ICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAg
fQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggNTJjZDE2NDAzYTE3MzZhNzE4NjU2NzcyNDg2MTFl
MDhmNjYzYjI5Zi4uYjk2MzU2ZTc4NTYxMzg5NTZhZTRjMDU5ODMxNzBjZGY3MjM2NzJhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNsYXNz
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsK
IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xh
c3MgRE9NQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJh
bWU7CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJj
ZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIAogY2xhc3MgQXBw
bGljYXRpb25DYWNoZUhvc3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAppbmRleCBmMWY3ZTE3NTYz
MDE0NzFmMzA4NWRlZjhlNDFkYzVkMGNhOWQ2MDlhLi4yYmIzZmU3NWI5OTc3ZTgzMzIyYWUyNTgw
ZjcyMTJlZTViZjIxNjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcApAQCAtMjksNyArMjksNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkKK1JlZjxBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhdGgpCiB7
CiAgICAgQVNTRVJUKCF1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogICAgIGlmICghYnVm
ZmVyKQpAQCAtNDAsNyArNDAsNyBAQCBSZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgYwogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwgeyB1cmwgfSwgV1RG
TW92ZShyZXNvdXJjZVJlc3BvbnNlKSwgdHlwZSwgYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIHBh
dGgpKTsKIH0KIAotQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQorQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICA6IFN1YnN0aXR1
dGVSZXNvdXJjZShXVEZNb3ZlKHVybCksIFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGRhdGEp
KQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3N0b3JhZ2VJRCgwKQpAQCAtNTEsNyArNTEs
NyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShV
UkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJgogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogewotICAgIGxvYWRlci5kZWxp
dmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCku
Y29weSgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7
CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlz
RW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29udGlndW91cygpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlOjphZGRUeXBlKHVuc2lnbmVkIHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCmluZGV4IDg4
Yzk0ZGUxYTc3NDEwNDY5YzkzMWE0MmE0NzliMWU2Nzc3YTcwMmUuLmMyODhlNzAzNmM2NzYyYWQ0
ODc2YmE4ODE0NjlhNzVkMjIzN2UxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgKQEAgLTQwLDcgKzQw
LDcgQEAgcHVibGljOgogICAgICAgICBGYWxsYmFjayA9IDEgPDwgNAogICAgIH07CiAKLSAgICBz
dGF0aWMgUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gY3JlYXRlKGNvbnN0IFVSTCYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgY29uc3QgU3RyaW5nJiBwYXRoID0gU3RyaW5n
KCkpOworICAgIHN0YXRpYyBSZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUoY29u
c3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgY29uc3Qg
U3RyaW5nJiBwYXRoID0gU3RyaW5nKCkpOwogCiAgICAgdW5zaWduZWQgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQogICAgIHZvaWQgYWRkVHlwZSh1bnNpZ25lZCB0eXBlKTsKQEAgLTU4
LDcgKzU4LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgCiBwcml2YXRlOgotICAgIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiwgUmVzb3VyY2VSZXNwb25zZSYmLCB1bnNpZ25lZCB0eXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiwgUmVzb3VyY2VSZXNwb25zZSYmLCB1bnNpZ25lZCB0eXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBwYXRoKTsKIAog
ICAgIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFjNTA4NDdhNmU4OTUxNzg5ZTNiM2ZiYWZkYTg1
MTg2NjI5MGVlYjAuLjdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3YjhiNTA3NGM3MTI5MjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlLAogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
cjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCkKIHsKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+ZGF0YSgpLmFwcGVu
ZChkYXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQo
ZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6
OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBuZXdS
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCAx
YjMzYWM5NWJjZGUxMWZlM2M0OTkwMjQwYTUyMGJkMzBlNjM2NTk1Li44Y2YwNWNjZTE4ODAxMjhk
ZTU5YmU3MGE5OTgzNmY1YTc0NWI2ZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTc4Myw3
ICs3ODMsNiBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgIGF1dG8gZGF0YVN0YXRlbWVu
dCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiSU5TRVJUIElOVE8gQ2FjaGVSZXNvdXJj
ZURhdGEgKGRhdGEsIHBhdGgpIFZBTFVFUyAoPywgPykiX3MpOwogICAgIGlmICghZGF0YVN0YXRl
bWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAogCiAgICAgU3RyaW5nIGZ1bGxQYXRo
OwogICAgIGlmICghcmVzb3VyY2UtPnBhdGgoKS5pc0VtcHR5KCkpCkBAIC04MTUsNyArODE0LDcg
QEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJl
c291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZFRl
eHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJlc291cmNlLT5kYXRhKCku
c2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwgcmVzb3VyY2Ut
PmRhdGEoKSk7CisgICAgICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJj
ZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkuZ2V0KCkpOwogICAgIH0KICAgICAKICAgICBpZiAo
IWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkpIHsKQEAgLTg3MywxMiArODcyLDEyIEBA
IGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgCiAgICAgaWYgKCFleGVjdXRlU3RhdGVtZW50
KGVudHJ5U3RhdGVtZW50LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisK
ICAgICAvLyBEaWQgd2Ugc3VjY2Vzc2Z1bGx5IHdyaXRlIHRoZSByZXNvdXJjZSBkYXRhIHRvIGEg
ZmlsZT8gSWYgc28sCiAgICAgLy8gcmVsZWFzZSB0aGUgcmVzb3VyY2UncyBkYXRhIGFuZCBmcmVl
IHVwIGEgcG90ZW50aWFsbHkgbGFyZ2UgYW1vdW50CiAgICAgLy8gb2YgbWVtb3J5OgogICAgIGlm
ICghZnVsbFBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXNvdXJjZS0+ZGF0YSgpLmNsZWFyKCk7
CisgICAgICAgIHJlc291cmNlLT5jbGVhcigpOwogCiAgICAgcmVzb3VyY2UtPnNldFN0b3JhZ2VJ
RChyZXNvdXJjZUlkKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEyNzMsNyArMTI3Miw3IEBAIGJv
b2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnNob3VsZFN0b3JlUmVzb3VyY2VBc0ZsYXRGaWxl
KEFwcGxpY2F0aW9uQ2FjaGVSZXNvCiAgICAgcmV0dXJuIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UodHlwZSwgImF1ZGlvLyIpIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UodHlwZSwgInZpZGVvLyIpOwogfQogICAgIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoU2hhcmVkQnVmZmVyJiBk
YXRhLCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcm
IGZpbGVFeHRlbnNpb24pCitib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURhdGFU
b1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25z
dCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRl
bnNpb24pCiB7CiAgICAgU3RyaW5nIGZ1bGxQYXRoOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAppbmRl
eCA5YTk1MzAwODc2NmE4ODg1NTYxYjM0ODg4OWI4Y2VkYTJiMmViMzM4Li40MTAyYTE4MDhiNDU1
NTdiNjQ1ZTM2ZTdlNjgxZmM0YzZkMjA3Y2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaApAQCAtMzksNyAr
MzksNyBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNh
Y2hlSG9zdDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIFNlY3VyaXR5
T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBTdG9yYWdlSURKb3VybmFsOwogCiBjbGFzcyBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZSA6IHB1YmxpYyBSZWZDb3VudGVkPEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlPiB7CkBAIC0xMjIsNyArMTIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGVuc3Vy
ZU9yaWdpblJlY29yZChjb25zdCBTZWN1cml0eU9yaWdpbiopOwogICAgIHN0YXRpYyBib29sIHNo
b3VsZFN0b3JlUmVzb3VyY2VBc0ZsYXRGaWxlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSopOwog
ICAgIHZvaWQgZGVsZXRlVGFibGVzKCk7Ci0gICAgYm9vbCB3cml0ZURhdGFUb1VuaXF1ZUZpbGVJ
bkRpcmVjdG9yeShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5n
JiBvdXRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKTsKKyAgICBib29sIHdy
aXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBvdXRGaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiBmaWxlRXh0ZW5zaW9uKTsKIAogICAgIHZvaWQgbG9hZE1hbmlmZXN0SG9zdEhhc2hlcygpOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZh
Y3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3Rvcnku
Y3BwCmluZGV4IDZkZTgwYzEwYWM3ZDI1Y2YzNDY5ZjZkZWYwZmFmNzI0MWY1OTY0MjguLjRlZjlj
ZDY2YmQwODhiNzRjMDQ2YzA2OTBkMWU5ZDNlNWUzMzYwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKQEAgLTQ2LDEyICs0NiwxMiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgUmVmUHRyPEFyY2hpdmU+IFJhd0Rh
dGFDcmVhdGlvbkZ1bmN0aW9uKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYpOwordHlwZWRlZiBS
ZWZQdHI8QXJjaGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24oY29uc3QgVVJMJiwgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOwogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmF3RGF0YUNyZWF0
aW9uRnVuY3Rpb24qLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IEFyY2hpdmVNSU1FVHlwZXNN
YXA7CiAKIC8vIFRoZSBjcmVhdGUgZnVuY3Rpb25zIGluIHRoZSBhcmNoaXZlIGNsYXNzZXMgcmV0
dXJuIFJlZlB0ciB0byBjb25jcmV0ZSBzdWJjbGFzc2VzCiAvLyBvZiBBcmNoaXZlLiBUaGlzIGFk
YXB0b3IgbWFrZXMgdGhlIGZ1bmN0aW9ucyBoYXZlIGEgdW5pZm9ybSByZXR1cm4gdHlwZS4KLXRl
bXBsYXRlPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBhcmNo
aXZlRmFjdG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBBcmNoaXZlQ2xhc3M+IHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4gYXJj
aGl2ZUZhY3RvcnlDcmVhdGUoY29uc3QgVVJMJiB1cmwsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKICAgICByZXR1cm4gQXJjaGl2ZUNsYXNzOjpjcmVhdGUodXJsLCBidWZmZXIp
OwogfQpAQCAtODMsNyArODMsNyBAQCBib29sIEFyY2hpdmVGYWN0b3J5Ojppc0FyY2hpdmVNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiAhbWltZVR5cGUuaXNFbXB0
eSgpICYmIGFyY2hpdmVNSU1FVHlwZXMoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKLVJlZlB0
cjxBcmNoaXZlPiBBcmNoaXZlRmFjdG9yeTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCitSZWZQdHI8QXJjaGl2ZT4gQXJj
aGl2ZUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBpZiAoIWRhdGEpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0Fy
Y2hpdmVGYWN0b3J5LmgKaW5kZXggMjFkMjM2NWNmOGQ5ZDkwMWVmZTdhYWQ1NTJiZjNkYTQwNjlm
ZTQwZC4uNTU2NDUxNWM5ZTBkOWQwMzNiNzkwYzc0NzI4NWEyNTg1M2FiZTAyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCkBAIC0zNCwxMiAr
MzQsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBBcmNoaXZlRmFjdG9yeSB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNBcmNoaXZlTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7
Ci0gICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICBzdGF0aWMgUmVmUHRyPEFy
Y2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3Rlcktub3duQXJj
aGl2ZU1JTUVUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYp
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNv
dXJjZS5jcHAKaW5kZXggZmMyMGRhM2RhMDMyY2JlZjc0ZjJlOWM4NDI4YWNiNGVlMzdiZWYyMy4u
MDczODM5NGE4Mjg3MTRhYTBiOTBlZTc1MDc5ZDQ4NmY1YjBlODY5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCkBAIC0zMyw3ICsz
Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIEFyY2hpdmVSZXNvdXJjZTo6
QXJjaGl2ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25z
dCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitp
bmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgOiBTdWJzdGl0dXRlUmVzb3VyY2Uo
VVJMIHsgdXJsIH0sIFJlc291cmNlUmVzcG9uc2UgeyByZXNwb25zZSB9LCBXVEZNb3ZlKGRhdGEp
KQogICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1fdGV4dEVuY29kaW5nKHRleHRF
bmNvZGluZykKQEAgLTQyLDcgKzQyLDcgQEAgaW5saW5lIEFyY2hpdmVSZXNvdXJjZTo6QXJjaGl2
ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwKIHsKIH0K
IAotUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1JlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC01NCw3ICs1NCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hp
dmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQXJjaGl2ZVJlc291cmNlKGRhdGEucmVsZWFzZU5vbk51bGwo
KSwgdXJsLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nLCBmcmFtZU5hbWUsIHJlc3BvbnNlKSk7CiB9
CiAKLVJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQorUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNl
OjpjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIHJldHVybiBj
cmVhdGUoV1RGTW92ZShkYXRhKSwgdXJsLCByZXNwb25zZS5taW1lVHlwZSgpLCByZXNwb25zZS50
ZXh0RW5jb2RpbmdOYW1lKCksIFN0cmluZygpLCByZXNwb25zZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oCmluZGV4IDIwOWU5NzE3YWVi
MDkzNjBkYjM5MjdlNmVmYTFlNWJmMWMyYzk3Y2EuLjA1NDhlZjcyMWVmZDI3YzAwY2U5M2QxMjI3
MGVjZWM0NmMwMmFmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L0FyY2hpdmVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0Fy
Y2hpdmVSZXNvdXJjZS5oCkBAIC0zNCw4ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQXJjaGl2ZVJlc291cmNlIDogcHVibGljIFN1YnN0aXR1dGVSZXNvdXJjZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLAorICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBVUkwmLAogICAgICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsCiAgICAg
ICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmID0gUmVzb3VyY2VSZXNwb25zZSgpKTsKIApAQCAt
NDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRJZ25vcmVXaGVuVW5hcmNoaXZp
bmcoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZElnbm9yZVdoZW5VbmFyY2hpdmluZzsgfQogCiBw
cml2YXRlOgotICAgIEFyY2hpdmVSZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywg
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBB
cmNoaXZlUmVzb3VyY2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25z
dCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgU3Ry
aW5nIG1fbWltZVR5cGU7CiAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRl
eCBkZTdkYWRkZGFjMjIxMmY2ZDVlMGNjMDkxZDRlNDE2NzdhM2YwMTVkLi43MTE1MGNiZGQ4OTY5
ZTZhZjAyODY4NGI2YmY2Y2JjMGE1MGIyZmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtOTAsNyArOTAsNyBA
QCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9w
ZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIC8vIFJlc291cmNlIGRhdGEgY2FuIGJlIGVt
cHR5LCBidXQgbXVzdCBiZSByZXByZXNlbnRlZCBieSBhbiBlbXB0eSBDRkRhdGFSZWYKICAgICBh
dXRvJiBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKTsKIAotICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgZGF0
YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVy
dHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKTsKIAogICAgIC8vIFJlc291cmNlIFVS
TCBjYW5ub3QgYmUgbnVsbAogICAgIGlmIChhdXRvIGNmVVJMID0gcmVzb3VyY2UtPnVybCgpLnN0
cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpCkBAIC0xMTcsOSArMTE3LDkgQEAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVz
ZW50YXRpb24oQXIKICAgICAvLyBEb24ndCBpbmNsdWRlIHRoZSByZXNvdXJjZSByZXNwb25zZSBm
b3IgdGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFpblJlc291cmNlKSB7CiAgICAgICAg
IGlmIChhdXRvIHJlc291cmNlUmVzcG9uc2VEYXRhID0gY3JlYXRlUHJvcGVydHlMaXN0UmVwcmVz
ZW50YXRpb24ocmVzb3VyY2UtPnJlc3BvbnNlKCkpKQotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNw
b25zZUtleSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOyAgICAKKyAgICAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJl
c291cmNlUmVzcG9uc2VLZXksIHJlc291cmNlUmVzcG9uc2VEYXRhLmdldCgpKTsKICAgICB9Ci0g
ICAgCisKICAgICByZXR1cm4gcHJvcGVydHlMaXN0OwogfQogCkBAIC0yMTUsMTMgKzIxNSwxMyBA
QCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJj
ZShDRkRpY3Rpb25hcnlSZWYgZGljdGlvbgogICAgICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3BvbnNlIGRhdGEgaXMgbm90IG9mIHR5cGUgQ0ZE
YXRhLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGF1dG8gcmVzb3VyY2VS
ZXNwb25zZVZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VWZXJzaW9u
S2V5KSk7CiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiAmJiBDRkdldFR5cGVJ
RChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewogICAg
ICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3Bv
bnNlIHZlcnNpb24gaXMgbm90IG9mIHR5cGUgQ0ZTdHJpbmcsIGNhbm5vdCBjcmVhdGUgaW52YWxp
ZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAg
ICAgICAgCisKICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVSZXNvdXJjZVJlc3BvbnNlRnJvbVBy
b3BlcnR5TGlzdERhdGEocmVzb3VyY2VSZXNwb25zZURhdGEsIHJlc291cmNlUmVzcG9uc2VWZXJz
aW9uKTsKICAgICB9CiAKQEAgLTI0OCwyMyArMjQ4LDIzIEBAIFJlZjxMZWdhY3lXZWJBcmNoaXZl
PiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiBtYWluUmVz
b3VyCiAgICAgcmV0dXJuIGFyY2hpdmU7CiB9CiAKLVJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhKQorUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewogICAgIHJldHVybiBjcmVhdGUoVVJMKCksIGRhdGEpOwogfQogCi1SZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYs
IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQ3JlYXRpbmcgZnJvbSBy
YXcgZGF0YSIpOwotICAgIAorCiAgICAgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBj
cmVhdGUoKTsKLSAgICAgICAgCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0
YS5jcmVhdGVDRkRhdGEoKTsKKworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGRh
dGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAgICAgaWYgKCFjZkRhdGEpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAKKwogICAgIENGRXJyb3JSZWYgZXJyb3Ig
PSBudWxscHRyOwotICAgIAorCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcGxpc3Qg
PSBhZG9wdENGKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZQcm9wZXJ0eUxpc3RDcmVh
dGVXaXRoRGF0YSgwLCBjZkRhdGEuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSwgMCwg
JmVycm9yKSkpOwogICAgIGlmICghcGxpc3QpIHsKICNpZm5kZWYgTkRFQlVHCkBAIC0yNzYsMTIg
KzI3NiwxMiBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YQogICAgICAgICAgICAgQ0ZSZWxlYXNl
KGVycm9yKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAgICAgaWYg
KENGR2V0VHlwZUlEKHBsaXN0LmdldCgpKSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkgewog
ICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQXJjaGl2ZSBwcm9wZXJ0
eSBsaXN0IGlzIG5vdCB0aGUgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlk
IFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIAorCiAg
ICAgaWYgKCFhcmNoaXZlLT5leHRyYWN0KHBsaXN0LmdldCgpKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKQEAgLTI5NSw3ICsyOTUsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJh
Y3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxl
Z2FjeVdlYkFyY2hpdmUgLSBOdWxsIHJvb3QgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlk
IFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAKKwogICAg
IENGRGljdGlvbmFyeVJlZiBtYWluUmVzb3VyY2VEaWN0ID0gc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9u
YXJ5UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZl
TWFpblJlc291cmNlS2V5KSk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEaWN0KSB7CiAgICAgICAg
IExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBObyBtYWluIHJlc291cmNlIGluIGFy
Y2hpdmUsIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwpAQCAtMzMzLDcgKzMzMyw3IEBA
IGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFy
eSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3Vi
cmVzb3VyY2UgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBX
ZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChhdXRvIHN1YnJlc291cmNlID0gY3Jl
YXRlUmVzb3VyY2Uoc3VicmVzb3VyY2VEaWN0KSkKICAgICAgICAgICAgICAgICBhZGRTdWJyZXNv
dXJjZShzdWJyZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgfQpAQCAtMzUzLDcg
KzM1Myw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlSZWYg
ZGljdGlvbmFyeSkKICAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNo
aXZlIC0gU3ViZnJhbWUgYXJyYXkgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRp
bmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGF1dG8gc3ViZnJhbWVB
cmNoaXZlID0gY3JlYXRlKCk7CiAgICAgICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlLT5leHRy
YWN0KHN1YmZyYW1lRGljdCkpCiAgICAgICAgICAgICAgICAgYWRkU3ViZnJhbWVBcmNoaXZlKFdU
Rk1vdmUoc3ViZnJhbWVBcmNoaXZlKSk7CkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBMZWdhY3lX
ZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAg
ICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBJbnZhbGlkIHN1YmZyYW1l
IGFyY2hpdmUgc2tpcHBlZCIpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTUwNiw3ICs1MDYsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nLCBGcgog
ewogICAgIGF1dG8mIHJlc3BvbnNlID0gZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+
cmVzcG9uc2UoKTsKICAgICBVUkwgcmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKLSAgICAK
KwogICAgIC8vIGl0J3MgcG9zc2libGUgdG8gaGF2ZSBhIHJlc3BvbnNlIHdpdGhvdXQgYSBVUkwg
aGVyZQogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81NDU0OTM1PgogICAgIGlmIChyZXNwb25zZVVS
TC5pc051bGwoKSkKQEAgLTYwNSw3ICs2MDUsNyBAQCBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAKICAg
ICBpZiAoIWRvY3VtZW50LT5pc0ZyYW1lU2V0KCkpCiAgICAgICAgIHJldHVybiBhcmNoaXZlOwot
ICAgICAgICAKKwogICAgIC8vIFdyYXAgdGhlIGZyYW1lc2V0IGRvY3VtZW50IGluIGFuIGlmcmFt
ZSBzbyBpdCBjYW4gYmUgcGFzdGVkIGludG8KICAgICAvLyBhbm90aGVyIGRvY3VtZW50ICh3aGlj
aCB3aWxsIGhhdmUgYSBib2R5IG9yIGZyYW1lc2V0IG9mIGl0cyBvd24pLiAKICAgICBTdHJpbmcg
aWZyYW1lTWFya3VwID0gIjxpZnJhbWUgZnJhbWVib3JkZXI9XCJub1wiIG1hcmdpbndpZHRoPVwi
MFwiIG1hcmdpbmhlaWdodD1cIjBcIiB3aWR0aD1cIjk4JSVcIiBoZWlnaHQ9XCI5OCUlXCIgc3Jj
PVwiIiArIGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVybCgp
LnN0cmluZygpICsgIlwiPjwvaWZyYW1lPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKaW5kZXggZDA5ZWM5Zjc1YWJhMTM2YTg2
MzM5ZWI0ZDg2YWJkODI3N2M0ZmYwNC4uNWEwN2IxMGI0YmU2Zjg2MjAxMWE3ODJhN2RlZDIzNjc1
OTI0MzYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xl
Z2FjeVdlYkFyY2hpdmUuaApAQCAtNDEsOCArNDEsOCBAQCBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiBj
bGFzcyBMZWdhY3lXZWJBcmNoaXZlIGZpbmFsIDogcHVibGljIEFyY2hpdmUgewogcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKCk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVh
dGUoU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0
ZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmIG1haW5SZXNvdXJjZSwgVmVjdG9yPFJlZjxBcmNoaXZl
UmVzb3VyY2U+PiYmIHN1YnJlc291cmNlcywgVmVjdG9yPFJlZjxMZWdhY3lXZWJBcmNoaXZlPj4m
JiBzdWJmcmFtZUFyY2hpdmVzKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShOb2RlJiwgRnVuY3Rpb248Ym9vbChGcmFtZSYpPiYmIGZy
YW1lRmlsdGVyID0geyB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFtZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5kZXggYWNmYmJiNzAyMDIyZDA2
YWZlNjIwMDQwNDg3ZmQzNGQ5MjFkNzI3Yy4uZDAxMzlmODdhMDZmOTY5NzhiNzQ3N2U5ZjQ5OTlj
MzRlYTlmODYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0
bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgUmVmPE1IVE1MQXJjaGl2
ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1IVE1M
QXJjaGl2ZSk7CiB9CiAKLVJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRl
KGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGRhdGEpCitSZWZQdHI8TUhUTUxBcmNoaXZl
PiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSkKIHsKICAgICAvLyBGb3Igc2VjdXJpdHkgcmVhc29ucyB3ZSBvbmx5IGxvYWQg
TUhUTUwgcGFnZXMgZnJvbSBsb2NhbCBVUkxzLgogICAgIGlmICghTGVnYWN5U2NoZW1lUmVnaXN0
cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCh1cmwucHJvdG9jb2woKS50b1N0cmluZygp
KSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6
OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIHJldHVybiBt
YWluQXJjaGl2ZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0
ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE1IVE1M
QXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKIHsKICAgICBWZWN0b3I8UGFn
ZVNlcmlhbGl6ZXI6OlJlc291cmNlPiByZXNvdXJjZXM7CiAgICAgUGFnZVNlcmlhbGl6ZXIgcGFn
ZVNlcmlhbGl6ZXIocmVzb3VyY2VzKTsKQEAgLTE2Miw4ICsxNjIsOCBAQCBSZWY8U2hhcmVkQnVm
ZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgLy8g
V2UgdXNlIHV0ZjgoKSBiZWxvdyBpbnN0ZWFkIG9mIGFzY2lpKCkgYXMgYXNjaWkoKSByZXBsYWNl
cyBDUkxGcyB3aXRoID8/ICh3ZSBzdGlsbCBvbmx5IGhhdmUgcHV0IEFTQ0lJIGNoYXJhY3RlcnMg
aW4gaXQpLgogICAgIEFTU0VSVChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkuaXNBbGxBU0NJSSgp
KTsKICAgICBDU3RyaW5nIGFzY2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygpLnV0
ZjgoKTsKLSAgICBhdXRvIG1odG1sRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAg
bWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgo
KSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtaHRtbERhdGE7CisgICAgbWh0bWxEYXRhLmFw
cGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKIAogICAgIGZv
ciAoYXV0byYgcmVzb3VyY2UgOiByZXNvdXJjZXMpIHsKICAgICAgICAgc3RyaW5nQnVpbGRlci5j
bGVhcigpOwpAQCAtMTc4LDE1ICsxNzgsMTUgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNo
aXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiXHJcbkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6ICIsIGNvbnRlbnRFbmNvZGlu
ZywgIlxyXG5Db250ZW50LUxvY2F0aW9uOiAiLCByZXNvdXJjZS51cmwuc3RyaW5nKCksICJcclxu
XHJcbiIpOwogCiAgICAgICAgIGFzY2lpU3RyaW5nID0gc3RyaW5nQnVpbGRlci50b1N0cmluZygp
LnV0ZjgoKTsKLSAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoYXNjaWlTdHJpbmcuZGF0YSgpLCBh
c2NpaVN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJp
bmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKICAgICAgICAgLy8gRklYTUU6IGlk
ZWFsbHkgd2Ugd291bGQgZW5jb2RlIHRoZSBjb250ZW50IGFzIGEgc3RyZWFtIHdpdGhvdXQgaGF2
aW5nIHRvIGZldGNoIGl0IGFsbC4KICAgICAgICAgYXV0byogZGF0YSA9IHJlc291cmNlLmRhdGEt
PmRhdGEoKTsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGggPSByZXNvdXJjZS5kYXRhLT5zaXpl
KCk7CiAgICAgICAgIGlmICghc3RyY21wKGNvbnRlbnRFbmNvZGluZywgcXVvdGVkUHJpbnRhYmxl
KSkgewogICAgICAgICAgICAgYXV0byBlbmNvZGVkRGF0YSA9IHF1b3RlZFByaW50YWJsZUVuY29k
ZShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29k
ZWREYXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsKLSAgICAgICAgICAgIG1odG1sRGF0
YS0+YXBwZW5kKCJcclxuIiwgMik7CisgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5kKGVuY29k
ZWREYXRhLmRhdGEoKSwgZW5jb2RlZERhdGEuc2l6ZSgpKTsKKyAgICAgICAgICAgIG1odG1sRGF0
YS5hcHBlbmQoIlxyXG4iLCAyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VS
VCghc3RyY21wKGNvbnRlbnRFbmNvZGluZywgYmFzZTY0KSk7CiAgICAgICAgICAgICAvLyBXZSBh
cmUgbm90IHNwZWNpZnlpbmcgaW5zZXJ0TEZzID0gdHJ1ZSBiZWxvdyBhcyBpdCB3b3VsZCBjdXQg
dGhlIGxpbmVzIHdpdGggTEZzIGFuZCBNSFRNTCByZXF1aXJlcyBDUkxGcy4KQEAgLTE5NiwxNyAr
MTk2LDE3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERh
dGEoUGFnZSogcGFnZSkKICAgICAgICAgICAgIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCA9IGVu
Y29kZWREYXRhLnNpemUoKTsKICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICBzaXpl
X3QgbGluZUxlbmd0aCA9IHN0ZDo6bWluKGVuY29kZWREYXRhTGVuZ3RoIC0gaW5kZXgsIG1heGlt
dW1MaW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZChlbmNvZGVk
RGF0YS5kYXRhKCkgKyBpbmRleCwgbGluZUxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgbWh0bWxE
YXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAgICAgICBtaHRtbERhdGEuYXBwZW5k
KGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBsaW5lTGVuZ3RoKTsKKyAgICAgICAgICAgICAg
ICBtaHRtbERhdGEuYXBwZW5kKCJcclxuIiwgMik7CiAgICAgICAgICAgICAgICAgaW5kZXggKz0g
bWF4aW11bUxpbmVMZW5ndGg7CiAgICAgICAgICAgICB9IHdoaWxlIChpbmRleCA8IGVuY29kZWRE
YXRhTGVuZ3RoKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGFzY2lpU3RyaW5nID0gbWFrZVN0
cmluZygiLS0iLCBib3VuZGFyeSwgIi0tXHJcbiIpLnV0ZjgoKTsKLSAgICBtaHRtbERhdGEtPmFw
cGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBtaHRt
bERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwog
Ci0gICAgcmV0dXJuIG1odG1sRGF0YTsKKyAgICByZXR1cm4gbWh0bWxEYXRhLnRha2UoKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFy
Y2hpdmUuaAppbmRleCAzZDJkYjdjOTYwMDJlYmU2ODRiMmJlZjhmMWVhOWUyZTk3OTRhNTg5Li4y
ZGZlODdlODJlN2E0ZGNlMGYzNDFjMzYxOTQzYzk5MDIwNWM4ZGIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaApAQCAtMzgsMTQg
KzM4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTUhUTUxQYXJzZXI7CiBjbGFz
cyBQYWdlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIAogY2xhc3MgTUhUTUxBcmNoaXZlIGZpbmFsIDogcHVibGljIEFyY2hpdmUgewogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8TUhUTUxBcmNoaXZlPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUmVm
UHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYpOworICAg
IHN0YXRpYyBSZWZQdHI8TUhUTUxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOwogCi0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGdlbmVyYXRl
TUhUTUxEYXRhKFBhZ2UqKTsKKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKIAogICAgIHZpcnR1YWwgfk1IVE1MQXJjaGl2ZSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRN
TFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBh
cnNlci5jcHAKaW5kZXggZjFiOTAxZGQwMjAzZGNhYzk0ZGY2ZDBlYWU0Y2IyZDBiZGI4MDE1ZS4u
NWVlOTE4Njg0YTA2ODk2ODNmNzFjMjY3ZjJkOTAxYTM3YTZmZWI1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAtNTEs
NyArNTEsNyBAQCBzdGF0aWMgYm9vbCBza2lwTGluZXNVbnRpbEJvdW5kYXJ5Rm91bmQoU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXImIGxpbmVSZWFkZXIsIGNvbgogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotTUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2VyKFNoYXJlZEJ1ZmZlciogZGF0YSkKK01IVE1MUGFy
c2VyOjpNSFRNTFBhcnNlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIDogbV9s
aW5lUmVhZGVyKGRhdGEsICJcclxuIikKIHsKIH0KQEAgLTE0MCw3ICsxNDAsNyBAQCBSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVh
ZGVyJiBtaW1lSGVhZGVyLAogewogICAgIEFTU0VSVChlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5
KCkgPT0gZW5kT2ZEb2N1bWVudEJvdW5kYXJ5LmlzRW1wdHkoKSk7CiAKLSAgICBhdXRvIGNvbnRl
bnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY29u
dGVudDsKICAgICBjb25zdCBib29sIGNoZWNrQm91bmRhcnkgPSAhZW5kT2ZQYXJ0Qm91bmRhcnku
aXNFbXB0eSgpOwogICAgIGJvb2wgZW5kT2ZQYXJ0UmVhY2hlZCA9IGZhbHNlOwogICAgIGlmICht
aW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6QmluYXJ5
KSB7CkBAIC0xNTQsNyArMTU0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJz
ZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAg
ICAgIExPR19FUlJPUigiQmluYXJ5IGNvbnRlbnRzIHJlcXVpcmVzIGVuZCBvZiBwYXJ0Iik7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICBjb250ZW50LT5h
cHBlbmQoV1RGTW92ZShwYXJ0KSk7CisgICAgICAgIGNvbnRlbnQuYXBwZW5kKFdURk1vdmUocGFy
dCkpOwogICAgICAgICBtX2xpbmVSZWFkZXIuc2V0U2VwYXJhdG9yKCJcclxuIik7CiAgICAgICAg
IFZlY3Rvcjx1aW50OF90PiBuZXh0Q2hhcnM7CiAgICAgICAgIGlmIChtX2xpbmVSZWFkZXIucGVl
ayhuZXh0Q2hhcnMsIDIpICE9IDIpIHsKQEAgLTE4MCwxMCArMTgwLDEwIEBAIFJlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXIm
IG1pbWVIZWFkZXIsCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAvLyBOb3RlIHRoYXQgd2UgdXNlIGxpbmUudXRmOCgpIGFuZCBub3QgbGluZS5hc2Np
aSgpIGFzIGFzY2lpIHR1cm5zIHNwZWNpYWwgY2hhcmFjdGVycyAoc3VjaCBhcyB0YWIsIGxpbmUt
ZmVlZC4uLikgaW50byAnPycuCi0gICAgICAgICAgICBjb250ZW50LT5hcHBlbmQobGluZS51dGY4
KCkuZGF0YSgpLCBsaW5lLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKGxp
bmUudXRmOCgpLmRhdGEoKSwgbGluZS5sZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAobWltZUhl
YWRlci5jb250ZW50VHJhbnNmZXJFbmNvZGluZygpID09IE1JTUVIZWFkZXI6OlF1b3RlZFByaW50
YWJsZSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBsaW5lIHJlYWRlciByZW1vdmVzIHRoZSBc
clxuLCBidXQgd2UgbmVlZCB0aGVtIGZvciB0aGUgY29udGVudCBpbiB0aGlzIGNhc2UgYXMgdGhl
IFF1b3RlZFByaW50YWJsZSBkZWNvZGVyIGV4cGVjdHMgQ1ItTEYgdGVybWluYXRlZCBsaW5lcy4K
LSAgICAgICAgICAgICAgICBjb250ZW50LT5hcHBlbmQoIlxyXG4iLCAyKTsKKyAgICAgICAgICAg
ICAgICBjb250ZW50LmFwcGVuZCgiXHJcbiIsIDIpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQpAQCAtMTkzLDkgKzE5MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRN
TFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAg
IH0KIAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOworICAgIGF1dG8gY29udGlndW91c0NvbnRl
bnQgPSBjb250ZW50LnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICBzd2l0Y2ggKG1pbWVI
ZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2RpbmcoKSkgewogICAgIGNhc2UgTUlNRUhlYWRlcjo6
QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGVu
dC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBhdXRvIGRlY29kZWREYXRhID0g
YmFzZTY0RGVjb2RlKGNvbnRpZ3VvdXNDb250ZW50LT5kYXRhKCksIGNvbnRpZ3VvdXNDb250ZW50
LT5zaXplKCkpOwogICAgICAgICBpZiAoIWRlY29kZWREYXRhKSB7CiAgICAgICAgICAgICBMT0df
RVJST1IoIkludmFsaWQgYmFzZTY0IGNvbnRlbnQgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwNCwxMSArMjA1LDExIEBAIFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1p
bWVIZWFkZXIsCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1JTUVIZWFkZXI6OlF1
b3RlZFByaW50YWJsZToKLSAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250
ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGRhdGEgPSBxdW90ZWRQcmlu
dGFibGVEZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQt
PnNpemUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUlNRUhlYWRlcjo6U2V2ZW5CaXQ6
CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCaW5hcnk6Ci0gICAgICAgIGRhdGEuYXBwZW5kKGNvbnRl
bnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoY29udGln
dW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBlbmNvZGlu
ZyBmb3IgTUhUTUwgcGFydC4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5oCmluZGV4IDFlOWJkNGQ3NzY3ZWUzOTFhMDAyMmY3MTc0OGYw
MGI4NWM4MWIyNWYuLjBkNjA0MzQzZjNkN2FkMTc4Y2MyMjAwM2M5NzljMjJlNTBhM2I5OWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIu
aApAQCAtNDIsMTEgKzQyLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFyY2hpdmVS
ZXNvdXJjZTsKIGNsYXNzIE1IVE1MQXJjaGl2ZTsKIGNsYXNzIE1JTUVIZWFkZXI7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNSFRN
TFBhcnNlciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTUhUTUxQYXJzZXIoU2hhcmVkQnVmZmVy
Kik7CisgICAgZXhwbGljaXQgTUhUTUxQYXJzZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwog
CiAgICAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gcGFyc2VBcmNoaXZlKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmNwcAppbmRleCA2NTI1MWViNjgyMDdmYzQ5YTk1Y2MxYzNlYTFkNGE5ZWJmZDkyNzA0Li5lMWE4
NzUxNmJkOGQ1YjhmMjRhZjZhNWI5OTBlMjE4NTM0N2U3NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3Bw
CkBAIC00MCwxMiArNDAsMTYgQEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIHsKIH0KIAotdm9p
ZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKLSAgICBtX2Rh
dGEgPSBkYXRhOwotICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsK
LSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAg
bV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUo
ZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBt
X2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAg
Q2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5p
ZmVzdC5oCmluZGV4IDA3ZjJhMDc5YzU2NGVlZmZiNjk3YzM3Yzc4NTY1ZTFlYThkOWFlNWUuLjM3
OThhOWI0ZDkwMTNjZmRlYTZmNTZmYmRmMDAxNWFmODk0NzU3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaApA
QCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxzdHJ1Y3QgQXBwbGlj
YXRpb25NYW5pZmVzdD4gcHJvY2Vzcyhjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBVUkwm
IGRvY3VtZW50VVJMLCBEb2N1bWVudCogPSBudWxscHRyKTsKIAogcHJpdmF0ZToKLSAgICB2b2lk
IGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICBjb25zdCBU
ZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9kZWNvZGVyLnB0cigpOyB9CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNo
ZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmNwcAppbmRleCA1OWZhN2M2MmZjNjFlNjM3NDJmNzRjYzZhMGJjZjAwMGJhOWIxNzZmLi4zOGEy
ZTE3ZjBkMDZjOGFjOThkZTI0YjFlNTJiOGU2MGU5MjQxMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC04MSw3ICs4
MSw3IEBAIGNvbnN0IFN0cmluZyBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzaGVldFRleHQoTUlNRVR5
cGVDaGVja0hpbnQgbWltZVR5cGVDaGVja0hpbnQsCiAgICAgICAgIHJldHVybiBtX2RlY29kZWRT
aGVldFRleHQ7CiAKICAgICAvLyBEb24ndCBjYWNoZSB0aGUgZGVjb2RlZCB0ZXh0LCByZWdlbmVy
YXRpbmcgaXMgY2hlYXAgYW5kIGl0IGNhbiB1c2UgcXVpdGUgYSBiaXQgb2YgbWVtb3J5Ci0gICAg
cmV0dXJuIG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+
c2l6ZSgpKTsKKyAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOwogfQogCiB2b2lkIENhY2hl
ZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UpCkBAIC05NywxMyArOTcsMTcgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRC
b2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICBzYXZl
UGFyc2VkU3R5bGVTaGVldCgqc2hlZXQubV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwogfQogCi12
b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZENTU1N0eWxl
U2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7
Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIC8vIERl
Y29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0
IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCi0gICAgaWYgKGRhdGEpCi0gICAgICAg
IG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+ZGF0
YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRh
dGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUo
KSk7CisgICAgICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2Rpbmcg
YW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCisgICAg
ICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRh
LT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9kYXRhID0g
bnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAgIHNldExvYWRp
bmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogICAgIC8vIENsZWFyIHRoZSBk
ZWNvZGVkIHRleHQgYXMgaXQgaXMgdW5saWtlbHkgdG8gYmUgbmVlZGVkIGltbWVkaWF0ZWx5IGFn
YWluIGFuZCBpcyBjaGVhcCB0byByZWdlbmVyYXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggNWQ0ZGQzZGM3ZTM1M2VlM2Ni
MmZiOTNmMjc4ZDI1NzliOGQ5YTdhMS4uZTY1NWM2OWUzZWRiNjA5NTAyMzljY2U0NTQ1ZjA5NmI1
MjY1NmRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENT
U1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNv
ZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBm
aW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVy
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
OworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkZXN0cm95RGVjb2Rl
ZERhdGEoKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJl
c291cmNlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5j
cHAKaW5kZXggOGMyYmMyYTM0MWM4MjM1MWQ3ZjY2MjViY2UyNzFkMDc3NjMzYWU5NC4uZDJiYzI4
MjE0NzljNTlhMjMyM2U0ZjY1Y2Q5NGI2M2I0MjM3MzY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtNjQsMTAgKzY0LDE1IEBAIHZvaWQgQ2FjaGVk
Rm9udDo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAgICAg
IHN0YXRpY19jYXN0PENhY2hlZEZvbnRDbGllbnQmPihjbGllbnQpLmZvbnRMb2FkZWQoKnRoaXMp
OwogfQogCi12b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEZvbnQ6OmZp
bmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0
RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKKyAgICBpZiAo
ZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAg
ICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
bV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CisgICAgfQogICAg
IHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1ldHJpY3MpOwogfQpAQCAtMTA1
LDcgKzExMCw3IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhKQogCiBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Q2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29u
c3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKLSAgICBSZWZQ
dHIgYnVmZmVyIHsgJmJ5dGVzIH07CisgICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVzIH07CiAg
ICAgd3JhcHBpbmcgPSAhY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIpOwogICAg
IHJldHVybiBidWZmZXIgPyBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKCpidWZmZXIsIGl0
ZW1JbkNvbGxlY3Rpb24pIDogbnVsbHB0cjsKIH0KQEAgLTEzNSw3ICsxNDAsNyBAQCB2b2lkIENh
Y2hlZEZvbnQ6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpCiB7CiAgICAg
aWYgKGlzTG9hZGluZygpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBDYWNoZWRSZXNv
dXJjZUNsaWVudFdhbGtlcjxDYWNoZWRGb250Q2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAg
ICB3aGlsZSAoQ2FjaGVkRm9udENsaWVudCogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkKICAgICAg
ICAgY2xpZW50LT5mb250TG9hZGVkKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5oCmluZGV4IGNlYmRjNTU3ZjEzZmM0YWZkODI3NTI5Nzc0YWZkOGVjNGJlZjQy
MTAuLjEzNDY2Y2M5OWQwZDE5Y2JmM2Q4ZWYzZGZiZDk2ZjM0ZDBmODU0MTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRl
OgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0
IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAg
dm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYjE1OWYyOWVlOTBmZTNkZTAxOWMxMTQ5YmRh
Njk0ZTBlNmY2YjU0Mi4uOTQ2Mjc5NTIwZDBkYTQ0NjIyYzZhY2QzNjY2MjI4ODEwNWU4MTk2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC00Njgs
OSArNDY4LDkgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFySW1hZ2UoKQogICAgIG1f
dXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVC
dWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewot
ICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsK
ICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsK
IApAQCAtNTIzLDEyICs1MjMsMTQgQEAgYm9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRh
dGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVybiAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBt
X2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNvbmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNr
b2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ2FjaGVk
SW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7Ci0gICAgaWYgKCFkYXRh
IHx8ICFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBp
ZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghaXNQb3N0U2NyaXB0
UmVzb3VyY2UoKSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYg
UExBVEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHRE
YXRhVG9QREYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9Q
REYoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKICNlbHNl
CiAgICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxkIGhhdmUgYmVlbiBjYW5jZWxlZCBpZiB0
aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVydGluZyBQb3N0U2NyaXB0IHRvIFBERi4K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU1Myw3ICs1NTUsNyBAQCBFbmNvZGVkRGF0
YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZl
cihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZl
cmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgIHVw
ZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOwpAQCAtNTY3LDcgKzU2OSw3IEBAIHZvaWQgQ2FjaGVk
SW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQog
ICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQg
Q2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5n
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoZGF0
YSk7CiAgICAgaWYgKG1fZGF0YSkgewpAQCAtNTkzLDcgKzU5NSw3IEBAIHZvaWQgQ2FjaGVkSW1h
Z2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1lCiB2b2lkIENhY2hlZEltYWdlOjpkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVu
dHMoKQogewogICAgIGlmIChtX2ltYWdlKSB7Ci0gICAgICAgIC8vIExldCB0aGUgSW1hZ2Uga25v
dyB0aGF0IHRoZSBTaGFyZWRCdWZmZXIgaGFzIGJlZW4gcmVqaWdnZWQsIHNvIGl0IGNhbiBsZXQg
Z28gb2YgYW55IHJlZmVyZW5jZXMgdG8gdGhlIGhlYXAtYWxsb2NhdGVkIHJlc291cmNlIGJ1ZmZl
ci4KKyAgICAgICAgLy8gTGV0IHRoZSBJbWFnZSBrbm93IHRoYXQgdGhlIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIgaGFzIGJlZW4gcmVqaWdnZWQsIHNvIGl0IGNhbiBsZXQgZ28gb2YgYW55IHJlZmVy
ZW5jZXMgdG8gdGhlIGhlYXAtYWxsb2NhdGVkIHJlc291cmNlIGJ1ZmZlci4KICAgICAgICAgLy8g
RklYTUUocmRhcjovL3Byb2JsZW0vMjQyNzU2MTcpOiBJdCB3b3VsZCBiZSBiZXR0ZXIgaWYgd2Ug
Y291bGQgc29tZWhvdyB0ZWxsIHRoZSBJbWFnZSdzIGRlY29kZXIgdG8gc3dhcCBpbiB0aGUgbmV3
IGNvbnRlbnRzIHdpdGhvdXQgZGVzdHJveWluZyBhbnl0aGluZy4KICAgICAgICAgbV9pbWFnZS0+
ZGVzdHJveURlY29kZWREYXRhKHRydWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmgKaW5kZXggZTM4OTYyYTBkY2FmYmNlZjYzMWMxNGU2M2ZlYjg1YmEw
NTUyMDNmNC4uMDgzZjkyZjg4ODI3NmVlZGE4OTkxMjAzMWQyNDQ5YTk2OGUyNjVkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTY5LDggKzY5LDggQEAg
cHVibGljOgogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4g
bV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZVdpZHRoKCk7IH0KICAgICBib29sIGltYWdl
SGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhh
c1JlbGF0aXZlSGVpZ2h0KCk7IH0KIAotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hM
b2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBvdmVycmlkZTsKIAogICAgIGVudW0gU2l6ZVR5cGUgewogICAgICAgICBVc2VkU2l6
ZSwKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWRE
YXRhKCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkg
Y29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKFNo
YXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVy
dGVkRGF0YUlmTmVlZGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0
OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMg
dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lkIHVwZGF0ZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKQEAgLTE2
OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFn
ZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNv
bnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZl
ciYpOworICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHAKaW5kZXggOTJiMDgzNjk3NTg4ODQ0MDkxOTM5ZTNlZWQ3OWQ3N2YxODM5NTYy
Zi4uODk1ZGIxMTU4YjZiOGM4ZmJmN2IxMGI0M2I2MTRlZGE5NjAyMWNkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC00OCw3
ICs0OCw3IEBAIENhY2hlZFJhd1Jlc291cmNlOjpDYWNoZWRSYXdSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUeXBlIHR5cGUsCiAgICAgQVNTRVJUKGlzTWFpbk9yTWVk
aWFPckljb25PclJhd1Jlc291cmNlKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1
bmsoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorc3RkOjpvcHRpb25hbDxTaGFyZWRC
dWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0
YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7CiAgICAg
c2l6ZV90IHByZXZpb3VzRGF0YUxlbmd0aCA9IGVuY29kZWRTaXplKCk7CiAgICAgaWYgKCFkYXRh
IHx8IGRhdGEtPnNpemUoKSA8PSBwcmV2aW91c0RhdGFMZW5ndGgpCkBAIC01Niw3ICs1Niw3IEBA
IHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpj
YWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDCiAgICAgcmV0dXJuIGRhdGEtPmdldFNvbWVEYXRhKHBy
ZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1
ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBTa2lw
IGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5lc3RlZCBydW5sb29wcy4gV2UnbGwg
aGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExvYWRpbmcuCiAgICAgaWYgKG1faW5J
bmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVz
b3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAKICAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBB
U1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZl
ckRhdGEpOwotICAgIG1fZGF0YSA9ICZkYXRhOworICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRp
Z3VvdXMoKTsKIAogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7CiAg
ICAgd2hpbGUgKGRhdGEuc2l6ZSgpID4gcHJldmlvdXNEYXRhU2l6ZSkgewpAQCAtOTYsNyArOTYs
NyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRh
LCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9p
ZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAg
aWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpIHsKICAgICAgICAgLy8gV2UgbWF5IGdldCBo
ZXJlIHN5bmNocm9ub3VzbHkgZnJvbSB1cGRhdGVCdWZmZXIoKSBpZiB0aGUgY2FsbGJhY2sgdGhl
cmUgZW5kcyB1cCBzcGlubmluZyBhIHJ1bmxvb3AuCkBAIC0xMDcsMTIgKzEwNywxNCBAQCB2b2lk
IENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jl
c291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0
YUJ1ZmZlcmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBpZiAo
ZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKSB7
Ci0gICAgICAgIG1fZGF0YSA9IGRhdGE7Ci0KLSAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxE
YXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKLSAgICAgICAgICAg
IHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBub3RpZnlDbGllbnRz
RGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEt
PnNpemUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIG1f
ZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNy
ZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhkYXRhKSkgeworICAg
ICAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAg
ICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwg
aW5jcmVtZW50YWxEYXRhLT5zaXplKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgfQogCiAjaWYgVVNFKFFVSUNLX0xP
T0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5o
CmluZGV4IDg0ZTBkODQ0ZDU3MTA5OTUzYWU2YmZmNjU1NjU5OTUzZTI4YmE2OWIuLmE3ODY1Zjhh
ZDE3OGFlZmIzMjIwYTU2ZGNmZjE5NTk5M2NmOTVhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC01MSw5ICs1MSw5IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVu
dCYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwor
ICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBmaW5h
bDsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5h
bDsKIAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92
ZXJyaWRlOwpAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3dpdGNoQ2xpZW50
c1RvUmV2YWxpZGF0ZWRSZXNvdXJjZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgbWF5VHJ5UmVwbGFj
ZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hbGxvd0VuY29kZWREYXRh
UmVwbGFjZW1lbnQ7IH0KIAotICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+
IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciopIGNvbnN0
OworICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUluY3Jl
bWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKSBjb25zdDsKICAg
ICB2b2lkIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKTsKICAgICAKICNpZiBVU0UoUVVJQ0tfTE9PSykKQEAgLTkyLDcgKzky
LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVkaXJlY3RQYWlyLCAwLCBDcmFzaE9uT3ZlcmZs
b3csIDA+IG1fcmVkaXJlY3RDaGFpbjsKIAogICAgIHN0cnVjdCBEZWxheWVkRmluaXNoTG9hZGlu
ZyB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRy
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB9OwogICAgIHN0ZDo6
b3B0aW9uYWw8RGVsYXllZEZpbmlzaExvYWRpbmc+IG1fZGVsYXllZEZpbmlzaExvYWRpbmc7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5k
ZXggM2FlOGJiNjhkMjVjZGRkMTgwMjA5MjJmNWVkYjI0ZDRiOTEyMDAwMi4uYmY2OWU4MGU1NzZl
MWEyODhmNmEwMTFmNTQ2MTQ2MzE1NTgwMWQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQogICAgICAgICBjbGllbnQtPm5vdGlmeUZpbmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKIH0KIAot
dm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpCit2b2lkIENh
Y2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
CiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9s
aWN5OjpCdWZmZXJEYXRhKTsKIH0KQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIENhY2hlZFJlc291
cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkKICAgICBBU1NFUlQoZGF0
YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0
YSk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSZXNvdXJj
ZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAg
IGNoZWNrTm90aWZ5KG1ldHJpY3MpOwpAQCAtOTI3LDggKzkyNyw3IEBAIHZvaWQgQ2FjaGVkUmVz
b3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKICAg
ICBpZiAoKm1fZGF0YSAhPSBuZXdCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0
YS0+Y2xlYXIoKTsKLSAgICBtX2RhdGEtPmFwcGVuZChuZXdCdWZmZXIpOworICAgIG1fZGF0YSA9
IFJlZiB7IG5ld0J1ZmZlciB9OwogICAgIGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmlu
ZGV4IDM5NjAwMjgzMmNjMTUzYzU5MDQ3OGNhMjUxODEzZTZjMDM1YmMyNzguLmM5ODJkZDY5Mzdh
MGJjMmJmMzhjNDI2MTI2ZmZlNmU3OGM3OTY0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIENvb2tpZUph
cjsKIGNsYXNzIE1lbW9yeUNhY2hlOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VE
ZWNvZGVyOwogCkBAIC0xMTIsOSArMTEyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBlbmNvZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBUZXh0UmVz
b3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwog
CiAgICAgdm9pZCBzZXRSZXNvdXJjZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7
IG1fZXJyb3IgPSBlcnJvcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggN2RhMTQ4NTFhNzA3ODRhYWJlOTgzOWI3MDZhMGIx
YjMzMWYyYzgzOS4uZGI0MzE2MDdhZTU2MzgzMDM4MDBkZDI1OWMxMDM0Y2QwOTBmY2ZlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3Bw
CkBAIC01MiwxMiArNTIsMTIgQEAgU3RyaW5nIENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGluZygp
IGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAKLXZv
aWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNWR0RvY3VtZW50
OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAg
ICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBmcmFtZSBiZWNhdXNlIHRoZSBuZXcg
ZG9jdW1lbnQgYmVsb25ncyB0byB0aGUgcGFyZW50IFVzZUVsZW1lbnQuCiAgICAgICAgIG1fZG9j
dW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1fc2V0dGluZ3MsIHJlc3BvbnNl
KCkudXJsKCkpOwotICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVjb2Rlci0+ZGVj
b2RlQW5kRmx1c2goZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpKTsKKyAgICAgICAgbV9kb2N1
bWVudC0+c2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKSk7CiAgICAgfQogICAgIENhY2hlZFJlc291
cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAppbmRleCBlOGMxNWYzNjBmYzkxYWM4
YjM0ZDM5NjI5NWM1M2QzYzdmMTQ3ZWFhLi40NDVlNGY5ZjQyYzNjMjc0MDc5NzZhNjRlOTE1NDA3
ZjhiNTM0ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
RG9jdW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2Rp
bmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVj
b2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZv
aWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgUmVm
UHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNv
ZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZH
Rm9udC5jcHAKaW5kZXggYThlZjU3NmJiNjkzOTMzYTIyMzQ2OTU1NTc1NmIzNjY3ZTQ4NjMyZS4u
ZDJjMWRlNDdlZmI3ODEzOThmNDQzOGI3Y2E0ZWEyNjBlMjIxOTc2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAtODAsNyArODAsNyBAQCBi
b29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IHJlbW90ZVVSSSkKIAogICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxl
QXNzZXJ0aW9uc0luU2NvcGUgZGlzYWJsZWRTY29wZTsKIAotICAgICAgICAgICAgbV9leHRlcm5h
bFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+
ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOworICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3Vt
ZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwogICAgICAgICAgICAgc2F3RXJyb3Ig
PSBkZWNvZGVyLT5zYXdFcnJvcigpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggNDdhOWY1NzYwN2I5ODI4NGU4Zjc5ZTJj
ZGVjZTliZTQxOGYxN2I2NS4uYjY3Mzk4YjBlNGY1NmZlN2FiY2IyNzRkMGUzNjg0MzAzNjM1MDg5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAg
LTk2LDEwICs5NiwxNSBAQCB1bnNpZ25lZCBDYWNoZWRTY3JpcHQ6OnNjcmlwdEhhc2goKQogICAg
IHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQgQ2FjaGVkU2NyaXB0OjpmaW5pc2hMb2Fk
aW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQordm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAg
IG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6
IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1
b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7
CisgICAgfQogICAgIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGRhdGEsIG1ldHJpY3Mp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2Ny
aXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKaW5kZXgg
OTI0Yjg0Y2EyZDg3MTZlMzQ2MDc3ZWVlYjVjYzM0YmNlZGU3ZTIzZC4uODY1MWU2MzlhZDkwNjE3
Mjg1NjFjMzI0YmZhN2FmNGNmOTdmNmQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTY3JpcHQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29u
c3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVj
b2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgdm9pZCBkZXN0cm95
RGVjb2RlZERhdGEoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCAxMjI5ODE1MDMxMjg4NjFlYzRmNWViNGNmNTBmMzIw
ODZiNWRlYjYxLi4wYzg0MjhiYjk5ZGI2ZGZiMTZhMzQ4MTM0YzM4MjY4MzZjY2U1NDA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAt
NDAsMTAgKzQwLDEwIEBAIENhY2hlZFRleHRUcmFjazo6Q2FjaGVkVGV4dFRyYWNrKENhY2hlZFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQgQ2Fj
aGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIENh
Y2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogZGF0YSkKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZm
ZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRh
ID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8U2hhcmVkQnVmZmVyPigp
OwogICAgIHNldEVuY29kZWRTaXplKGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAgIENh
Y2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9j
bGllbnRzKTsKQEAgLTUxLDEzICs1MSwxMyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRh
dGVCdWZmZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0ZWRE
aWRSZWNlaXZlQ2FjaGVkUmVzb3VyY2UoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFj
azo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNr
Ojp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAg
ICBkb1VwZGF0ZUJ1ZmZlcigmZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZl
cihkYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENh
Y2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9VcGRh
dGVCdWZmZXIoZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwg
bWV0cmljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
VGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
LmgKaW5kZXggODVlMzk2MjA2NTEzMTYwNzAzNjUzZWIyMmM3NzEzOGI5MTUwN2FkZC4uMDliNDMz
OWEzN2I2NzNiMmFjNGZkYWUxNDZiMjliOTY0Nzc3ZmNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaApAQCAtMzUsMTAgKzM1LDEwIEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZm
ZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVyKFNoYXJlZEJ1
ZmZlciopOworICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4IGUzZTJmNWU5
NjQ4Nzk0NzkyZjE4OTBmNDY3YTI3ODI2MTVkMzQwMGMuLmQyZWZmMmQyZDQwYzkyNzczODc1NmM0
YThmMGNiYjkzNDNiZTEwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYxLDEyICs2MSwxNiBAQCBTdHJpbmcgQ2Fj
aGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXIt
PmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlz
aExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1l
dHJpY3MpCit2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/IGRh
dGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAgICBtX3NoZWV0ID0gbV9kZWNv
ZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIGlm
IChkYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAg
ICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fc2hlZXQgPSBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRFbmNvZGVk
U2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnko
bWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhT
TFN0eWxlU2hlZXQuaAppbmRleCA2ODQyYjY0NGY2MWNmOTBmN2Y2MWIyZjdlYzVlMDA2NTRjZDEw
Y2NjLi5iZDIzMTIxNGYyZDIwYmEzOTY0NDYwMzY2ZTA0MWI5NDEzNWFjNGNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYp
IGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRl
eHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hM
b2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3NoZWV0OwogICAgIFJlZlB0cjxUZXh0UmVz
b3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5oCmluZGV4IDU1MjU2MWQ2YzgxNmQzZDIwYmNmY2NiMmU2NTgz
YjdkZTk0Yjk0YTIuLjg2NDA5ZjYwMDZkN2M5NDk4ZTJiMGY4NTY0MmEyMmFjNDJhNjUxOWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTM3LDcgKzM4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGVnYWN5
UHJldmlld0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3
TG9hZGVyIGZpbmFsIDogcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyQ2xpZW50LCBwcml2YXRlIFBy
ZXZpZXdDb252ZXJ0ZXJQcm92aWRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBA
IC00OCw3ICs1MCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBib29sIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgYm9vbCBkaWRSZWNlaXZlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIGJvb2wgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgYm9vbCBkaWRGaW5pc2hMb2FkaW5nKCk7CiAg
ICAgdm9pZCBkaWRGYWlsKCk7CiAKQEAgLTYwLDE3ICs2MiwxNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgcHJldmlld0NvbnZlcnRlckRpZEZpbmlzaFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBm
aW5hbCB7IH07CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbFVwZGF0aW5nKFByZXZp
ZXdDb252ZXJ0ZXImKSBmaW5hbDsKICAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENv
bnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOwotICAgIHZvaWQgcHJldmlld0NvbnZl
cnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBTaGFyZWRCdWZmZXIm
KSBmaW5hbDsKKyAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3
Q29udmVydGVyJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZv
aWQgcHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYp
IGZpbmFsOwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxDb252ZXJ0aW5nKFByZXZp
ZXdDb252ZXJ0ZXImKSBmaW5hbDsKIAogICAgIC8vIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcgot
ICAgIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0Nv
bnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYp
IGZpbmFsOworICAgIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIo
UHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIHByb3ZpZGVQYXNzd29yZEZvclBy
ZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgU3RyaW5nJik+JiYpIGZpbmFsOwogCiAgICAgUmVmUHRyPFByZXZpZXdDb252ZXJ0ZXI+
IG1fY29udmVydGVyOwogICAgIFJlZjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBtX2NsaWVu
dDsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX29yaWdpbmFsRGF0YTsKKyAgICBVbmlxdWVSZWY8
U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9vcmlnaW5hbERhdGE7CiAgICAgV2Vha1B0cjxSZXNvdXJj
ZUxvYWRlcj4gbV9yZXNvdXJjZUxvYWRlcjsKICAgICBib29sIG1fZmluaXNoZWRMb2FkaW5nRGF0
YUludG9Db252ZXJ0ZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNQcm9jZXNzZWRSZXNwb25z
ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXIubW0KaW5kZXggZDE4YjI1MmU5NzU2YzhjZTBjOTViNjNlNzhkZDAwOTdlZjJhNTcz
NC4uNGIyZTM0ZGFkYmU5N2ZjMWNmNmU2ODUwNjAxOGJhZmJiNTYzYzk1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtNjMsNyAr
NjMsNyBAQCBzdGF0aWMgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1ha2VDbGllbnQo
Y29uc3QgUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgYwogICAgIHJldHVybiBlbXB0eUNsaWVudCgp
OwogfQogCi1ib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlm
IChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3
Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAgICAg
cmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBtX29y
aWdpbmFsRGF0YS0+Y2xlYXIoKTsKKyAgICBtX29yaWdpbmFsRGF0YS0+cmVzZXQoKTsKICAgICBy
ZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0UHJldmlld0NvbnZlcnRlcihXVEZN
b3ZlKG1fY29udmVydGVyKSk7CiAgICAgYXV0byByZXNwb25zZSB7IGNvbnZlcnRlci5wcmV2aWV3
UmVzcG9uc2UoKSB9OwogCkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9h
ZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXIm
IGMKICAgICB9KTsKIH0KIAotdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVy
dGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFJlY2Vp
dmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhKQogewogICAgIGF1dG8gcmVzb3VyY2VMb2FkZXIgPSBtX3Jlc291cmNlTG9hZGVyLmdldCgp
OwogICAgIGlmICghcmVzb3VyY2VMb2FkZXIpCkBAIC0yMjQsMTAgKzIyNCwxMCBAQCB2b2lkIExl
Z2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJl
dmlld0NvbnZlcnRlciYgYwogICAgIG1fY2xpZW50LT5kaWRSZXF1ZXN0UGFzc3dvcmQoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnBy
b3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNv
bnZlcnRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5S
ZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnZlcnRlciwgJmNvbnZl
cnRlciA9PSBtX2NvbnZlcnRlcik7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERh
dGEucHRyKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLT50YWtlKCkp
OwogfQogCiBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVm
YXVsdDsKQEAgLTIzNSw3ICsyMzUsNyBAQCBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJl
dmlld0xvYWRlcigpID0gZGVmYXVsdDsKIExlZ2FjeVByZXZpZXdMb2FkZXI6OkxlZ2FjeVByZXZp
ZXdMb2FkZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiAgICAgOiBtX2NvbnZlcnRlciB7IFByZXZpZXdDb252ZXJ0ZXI6OmNyZWF0ZShy
ZXNwb25zZSwgKnRoaXMpIH0KICAgICAsIG1fY2xpZW50IHsgbWFrZUNsaWVudChsb2FkZXIsIG1f
Y29udmVydGVyLT5wcmV2aWV3RmlsZU5hbWUoKSwgbV9jb252ZXJ0ZXItPnByZXZpZXdVVEkoKSkg
fQotICAgICwgbV9vcmlnaW5hbERhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAs
IG1fb3JpZ2luYWxEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0K
ICAgICAsIG1fcmVzb3VyY2VMb2FkZXIgeyBsb2FkZXIgfQogICAgICwgbV9zaG91bGREZWNpZGVQ
b2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuc2hvdWxkRGVj
aWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKSB9CiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FZGl0b3JDbGllbnQuaAppbmRleCA4MjM3NGU3MjYyYzcwZWE5ZGZlNGQ2NGYyNWFiMTM1YWE2
MDMzM2NmLi5lYTYxNWRmZjRkZDBlZDUxNGJmZjY0NDI2NDdlYzQ2MjBmNjMyMmFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTM4LDEyICszOCwxMyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBFbGVt
ZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBLZXlib2FyZEV2ZW50OwogY2xhc3MgTm9kZTsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBT
dHlsZVByb3BlcnRpZXM7CiBjbGFzcyBUZXh0Q2hlY2tlckNsaWVudDsKIGNsYXNzIFZpc2libGVT
ZWxlY3Rpb247CkBAIC03OCw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTaW1wbGVS
YW5nZSYpID0gMDsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgdmlydHVh
bCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVu
dGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICovLCBjb25zdCBTdHJpbmcm
IC8qIHByZWZlcnJlZEZpbGVOYW1lICovLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8q
IGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0
cmluZyYgLyogcHJlZmVycmVkRmlsZU5hbWUgKi8sIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihj
b25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29udGVudFR5
cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogZmlsZVBhdGggKi8pIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYgLyogaWRlbnRpZmllciAqLykgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlh
bGl6ZXIuY3BwCmluZGV4IDFhMTIxMGZhODMzN2NkOTUyMGY0ZTAxMWE5MDczNjc1NGRlNTE4ZjEu
LmFjNTNjYjE0YmYwMGU1MTY0N2M5ZWM5MTEwOThiZWEwMzYxNTExMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBQYWdlU2Vy
aWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVs
ZW1lbnQqIGltYWcKICAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5pbWFnZSgpID09ICZJbWFnZTo6
bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGEgPSBpbWFnZVJlbmRlcmVyID8gaW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VSZW5k
ZXJlciktPmRhdGEoKSA6IDA7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRh
dGEgPSBpbWFnZVJlbmRlcmVyID8gaW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VSZW5kZXJl
ciktPmRhdGEoKSA6IDA7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBkYXRhID0gaW1hZ2UtPmlt
YWdlKCktPmRhdGEoKTsKIApAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6
OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBp
bWFnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1
cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCksIFdURk1vdmUoZGF0YSkgfSk7CisgICAg
bV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBpbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBk
YXRhLT5tYWtlQ29udGlndW91cygpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKaW5kZXggOTZhZDA4MjU0
M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZmZjQyZThlMC4uNzU4MzZiODc5MTQzYjYwYTdmMzUxOTcw
MzIwN2I2YWQzZDhkNGY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURh
dGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNw
cApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTaGFyZURhdGFSZWFkZXI6
OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJl
RGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX2NvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogewotICAgIAorCiB9CiAK
IFNoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0YVJlYWRlcigpCkBAIC03MSwxNSArNzEsMTUgQEAg
dm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZpbmlzaExvYWRpbmcoaW50IGxvYWRJbmRleCwgY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICAgICAgY2FuY2VsKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgCisKICAgICBhdXRvIGFycmF5QnVmZmVyID0gbV9wZW5kaW5nRmlsZUxvYWRz
W2xvYWRJbmRleF0tPmFycmF5QnVmZmVyUmVzdWx0KCk7Ci0gICAgCisKICAgICBSYXdGaWxlIGZp
bGU7CiAgICAgZmlsZS5maWxlTmFtZSA9IGZpbGVOYW1lOwogICAgIGZpbGUuZmlsZURhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJy
YXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIG1fc2hh
cmVEYXRhLmZpbGVzLmFwcGVuZChXVEZNb3ZlKGZpbGUpKTsKICAgICBtX2ZpbGVzUmVhZFNvRmFy
Kys7Ci0gICAgCisKICAgICBpZiAobV9maWxlc1JlYWRTb0ZhciA9PSBzdGF0aWNfY2FzdDxpbnQ+
KG1fcGVuZGluZ0ZpbGVMb2Fkcy5zaXplKCkpKSB7CiAgICAgICAgIG1fcGVuZGluZ0ZpbGVMb2Fk
cy5jbGVhcigpOwogICAgICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhj
aGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgeyB9KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Ob3dQbGF5aW5nTWFuYWdlci5oCmluZGV4IGUzODA2ZTg3ZGY3OWEzZDliNWNhZTEyMTRkZTY2
YWEyYTY1ODQ3ZGIuLmZjNjZjMzY1YTJmMjlhNGM3OGU2MDYxOWU0N2E3MWM3MjU4ZDhmZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaApAQCAtNzAsNyAr
NzAsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IG1fbm93
UGxheWluZ0luZm87CiAgICAgc3RydWN0IEFydHdvcmtDYWNoZSB7CiAgICAgICAgIFN0cmluZyBz
cmM7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAgICAgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKICAgICB9OwogICAgIHN0ZDo6
b3B0aW9uYWw8QXJ0d29ya0NhY2hlPiBtX25vd1BsYXlpbmdJbmZvQXJ0d29yazsKICAgICBib29s
IG1fc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24geyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCAxNTczMWViMjNmYTc2OTQ5NjBkZDgwNDk2ZmE4ZjJm
OWU4Yzc3ODBmLi4wN2VkNDhlNTg4NGVjZWVkYzYxZmQ5M2U2YjIyMTcxYmU4ODU4OWZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcApAQCAtODksNyArODksNyBAQCBTdHJp
bmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlw
ZSkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBQ
YXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQor
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKGF1dG8q
IHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQog
ICAgICAgICByZXR1cm4gc3RyYXRlZ3ktPnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwg
dHlwZSwgbmFtZSgpLCBjb250ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5o
CmluZGV4IDdkMjQ3ZGNkMWExNmYzNDJjMTc1NGM0NWM0YTczNTI5YmY4ZjcxYjIuLjM1NzYzZWUx
MmEzOTBlZmM4NDUyYzM1ODA2YjUxMmJlNDI5YWQ5NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmgKQEAgLTYxLDEyICs2MSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhX
TkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3Mg
RG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRWxlbWVudDsKIGNsYXNz
IEZyYW1lOwogY2xhc3MgUGFzdGVib2FyZFN0cmF0ZWd5OwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNpbXBsZVJhbmdlOwogCkBA
IC0xNDcsMTYgKzE0OCwxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHJlYWRGaWxlUGF0
aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNp
emUgPSB7IH0sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUgPSB7IH0pID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgYm9v
bCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVz
ZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgcmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6
ZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgdGl0bGUpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZFBsYWluVGV4dChjb25z
dCBTdHJpbmcmKSA9IDA7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1
YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFJU
RihTaGFyZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWREYXRhQnVmZmVyKFNo
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVz
ZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgcmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCByZWFkRGF0YUJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUg
cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOwogI2VuZGlmCiB9OwogCkBAIC0x
NzEsNyArMTcyLDcgQEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICB2aXJ0dWFs
IH5QYXN0ZWJvYXJkRmlsZVJlYWRlcigpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIHZvaWQgcmVh
ZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVh
ZEJ1ZmZlcihjb25zdCBTdHJpbmcmIC8qIHR5cGUgKi8pIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiB9OwogCiBjbGFzcyBQYXN0ZWJv
YXJkIHsKQEAgLTI5Niw3ICsyOTcsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxQYXN0
ZWJvYXJkSXRlbUluZm8+IHBhc3RlYm9hcmRJdGVtSW5mbyhzaXplX3QgaW5kZXgpIGNvbnN0Owog
CiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUp
OwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBl
KTsKICAgICBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpOwogCiAgICAg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRl
eHQuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRDdXN0b21EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0
b21EYXRhLmNwcAppbmRleCA5ZDNmODdhOTExNGMzOGE1NGUzM2EwNWUyYjk4OTUyY2NmNjdhZTcw
Li43YjRiM2QzNmFhNjgwMzYxMTg3OTEzMWI1YTFiMjI2YjU4OGQzNjJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCkBAIC0zMywxMyAr
MzMsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgc3RkOjp2YXJpYW50PFN0
cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+IGNvcHlQbGF0Zm9ybURhdGEoY29uc3Qgc3RkOjp2YXJp
YW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+JiBvdGhlcikKK3N0YXRpYyBzdGQ6OnZhcmlh
bnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGNvcHlQbGF0Zm9ybURhdGEo
Y29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYg
b3RoZXIpCiB7CiAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihvdGhlcikp
CiAgICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFN0cmluZz4ob3RoZXIpIH07CiAKLSAgICBpZiAo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4ob3RoZXIpKQotICAgICAg
ICByZXR1cm4geyBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ob3RoZXIpLmNvcHlSZWYoKSB9
OworICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4ob3RoZXIpKQorICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+KG90aGVyKS5jb3B5UmVmKCkgfTsKIAogICAgIHJldHVybiB7IH07CiB9CkBA
IC0xMzQsNyArMTM0LDcgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6d3JpdGVTdHJpbmco
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIGFkZE9yTW92ZUVu
dHJ5VG9FbmQodHlwZSkucGxhdGZvcm1EYXRhID0geyB2YWx1ZSB9OwogfQogCi12b2lkIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGRhdGEpCit2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEoY29u
c3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewog
ICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZvcm1EYXRhID0geyBXVEZNb3ZlKGRh
dGEpIH07CiB9CkBAIC0yMDIsMTQgKzIwMiwxNCBAQCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6c2FtZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGEoKSBjb25zdAog
ICAgIHJldHVybiBjdXN0b21EYXRhOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OnJlYWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZW50cnkgOiBt
X2RhdGEpIHsKICAgICAgICAgaWYgKGVudHJ5LnR5cGUgIT0gdHlwZSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRC
dWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0
PFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpLmNvcHlSZWYoKTsKKyAgICAg
ICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PihlbnRyeS5wbGF0Zm9ybURhdGEpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRhKS5jb3B5UmVmKCk7CiAK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMjY1LDExICsyNjUsMTEgQEAgdm9p
ZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaEN1c3RvbVN0cmluZyhGdW5jdGlvbjx2b2lk
KGNvbnN0IFN0cmluZyYgdHlwZSwKICAgICB9CiB9CiAKLXZvaWQgUGFzdGVib2FyZEN1c3RvbURh
dGE6OmZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4m
IGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAordm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9y
RWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZW50cnkgOiBt
X2RhdGEpIHsKICAgICAgICAgYXV0byYgZGF0YSA9IGVudHJ5LnBsYXRmb3JtRGF0YTsKLSAgICAg
ICAgaWYgKChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYgIXN0ZDo6Z2V0
PFN0cmluZz4oZGF0YSkuaXNOdWxsKCkpIHx8IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNo
YXJlZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAgICBpZiAoKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5pc051bGwoKSkgfHwgc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQog
ICAgICAgICAgICAgZnVuY3Rpb24oZW50cnkudHlwZSwgZGF0YSk7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKaW5kZXggMmJlODFk
MjkzOGEzZGJkMDkwMjZjYTZlYzY0YWMzMjg3ZTZhYmMwMy4uOTdmZjk4NWUyNGUxMWI0YzdiYjQx
NDM3MzdmMDI4NDBjMzVmZmNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhIHsKIHB1YmxpYzoKQEAgLTQ4LDcgKzQ5LDcgQEAg
cHVibGljOgogCiAgICAgICAgIFN0cmluZyB0eXBlOwogICAgICAgICBTdHJpbmcgY3VzdG9tRGF0
YTsKLSAgICAgICAgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+IHBsYXRm
b3JtRGF0YTsKKyAgICAgICAgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiBwbGF0Zm9ybURhdGE7CiAgICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFBh
c3RlYm9hcmRDdXN0b21EYXRhKCk7CkBAIC02NSwxMSArNjYsMTEgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VE
ZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJik7CiAKICAgICBTdHJpbmcgcmVhZFN0
cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0Owog
ICAgIFN0cmluZyByZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3Q7CiAKICAgICB2b2lkIHdyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSk7Ci0gICAgdm9pZCB3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYg
dHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CiAgICAgdm9pZCB3cml0
ZVN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFs
dWUpOwogCiAgICAgdm9pZCBjbGVhcigpOwpAQCAtODMsNyArODQsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGZvckVhY2hUeXBlKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpIGNvbnN0
OwogICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpPiYmKSBjb25zdDsKLSAgICB2b2lkIGZvckVh
Y2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYm
KSBjb25zdDsKKyAgICB2b2lkIGZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9u
PHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKT4mJikgY29uc3Q7CiAgICAgdm9pZCBmb3JF
YWNoQ3VzdG9tU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIGRhdGEpPiYmKSBjb25zdDsKIAogICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCAxYzA3MjZm
ZWIzZTAyYWVkMzJiNDZmMjYyYmNkYTE2OWQ2NzJlYjJjLi5jNDFlMDg1MjQ0OTZjNjdmMWYxNTAz
OGZiYjI2ZTljMjlkYTY5OGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkU3RyYXRlZ3kuaApAQCAtMzEsMTAgKzMxLDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENvbG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZENvbnRl
eHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogc3RydWN0
IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFz
dGVib2FyZFVSTDsKQEAgLTYyLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBpbnQ2
NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwog
ICAgIHZpcnR1YWwgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShTaGFy
ZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFs
IGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFVSTChj
b25zdCBQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldENvbG9yKGNv
bnN0IENvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCmluZGV4IDNmNDgzMmE1
YTY1OGMxY2M3YzBhYTEzYjI2ZTBlYTQ3MzNlOWQzYjcuLjllNzJlNDRhMmVhYzRkOGVmNzMwYjk4
NzFkMGVjNTA4ZWQ5ZmFjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtQ29udGVudEZpbHRlci5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
bGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpID0gMDsK
LSAgICB2aXJ0dWFsIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERh
dGEoKSBjb25zdCA9IDA7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIHZpcnR1
YWwgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkgY29uc3QgPSAw
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBh
c3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
CmluZGV4IDdhMmEzMTAwNzQyNTAwMjQzYmI0NmZmNTk4Njg2MWU4NGEyZmQ5NmUuLjcxZGZiOTNl
NTc1NjBlMzNhN2Y2YzgwYzIwZjkyZDViMmNhZWMxMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC00NywxMyArNDcsMTQgQEAgc3RydWN0IHdw
ZV9wYXN0ZWJvYXJkOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0
aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBz
dHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3Qg
UGFzdGVib2FyZFdlYkNvbnRlbnQ7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBQbGF0Zm9ybVBhc3RlYm9hcmQgewogcHVibGljOgpAQCAtODUsNyArODYsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHdpbGwgcmV0dXJuIDAgaWYgcGFzdGVib2FyZCBv
d25lcnNoaXAgaGFzIGJlZW4gdGFrZW4gZnJvbSB1cy4KICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2
NF90IGNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0QnVmZmVyRm9y
VHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVS
TCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgQ29sb3ImKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4IDRjYjMzMDFlN2RmNzA3MWM1ZGQ5ZmM1OWJj
NTcxODVjNGU5MTQ3NjguLmJmY2UxMWE4YmY5ZTI5MjcwNzgxZTZhZTY4ZGM1YmJmYjI5YzEwMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCkBAIC02
Myw5ICs2Myw5IEBAIGNvbnN0IFJlc291cmNlRXJyb3ImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZp
ZXdFcnJvcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJldmlld0Vycm9yOwogfQogCi1jb25zdCBT
aGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkgY29uc3QKK2NvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gKm1f
cHJldmlld0RhdGEtPmdldCgpOwogfQogCiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1h
aW5SZXNvdXJjZSgpCkBAIC04MiwxNSArODIsMTIgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjp1
cGRhdGVNYWluUmVzb3VyY2UoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJvdmlk
ZXItPnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKCp0aGlzLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGF1dG8gYnVmZmVyKSB7Ci0gICAgICAgIGlm
IChidWZmZXIpCi0gICAgICAgICAgICBhcHBlbmRGcm9tQnVmZmVyKCpidWZmZXIpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBkaWRGYWlsVXBkYXRpbmcoKTsKKyAgICBwcm92aWRlci0+cHJv
dmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoKnRoaXMsIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYXV0byYmIGJ1ZmZlcikgeworICAgICAgICBhcHBlbmRG
cm9tQnVmZmVyKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgfSk7CiB9CiAKLXZvaWQgUHJldmlld0Nv
bnZlcnRlcjo6YXBwZW5kRnJvbUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3Zv
aWQgUHJldmlld0NvbnZlcnRlcjo6YXBwZW5kRnJvbUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgd2hpbGUgKGJ1ZmZlci5zaXplKCkgPiBtX2xlbmd0
aEFwcGVuZGVkKSB7CiAgICAgICAgIGF1dG8gbmV3RGF0YSA9IGJ1ZmZlci5nZXRTb21lRGF0YSht
X2xlbmd0aEFwcGVuZGVkKTsKQEAgLTIyMiw3ICsyMTksNyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0
ZXI6OnJlcGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICBj
bGllbnQucHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZygqdGhpcyk7CiAKICAgICBp
ZiAoIW1fcHJldmlld0RhdGEtPmlzRW1wdHkoKSAmJiBoYXNDbGllbnQoY2xpZW50KSkKLSAgICAg
ICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgbV9wcmV2aWV3
RGF0YS5nZXQoKSk7CisgICAgICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURh
dGEoKnRoaXMsICptX3ByZXZpZXdEYXRhLT5nZXQoKSk7CiAKICAgICBpZiAobV9zdGF0ZSA9PSBT
dGF0ZTo6Q29udmVydGluZyB8fCAhaGFzQ2xpZW50KGNsaWVudCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTIzOSw3ICsyMzYsNyBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50
KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICBjbGllbnQucHJldmlld0NvbnZl
cnRlckRpZEZpbmlzaENvbnZlcnRpbmcoKnRoaXMpOwogfQogCi12b2lkIFByZXZpZXdDb252ZXJ0
ZXI6OmRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9p
ZCBQcmV2aWV3Q29udmVydGVyOjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgYXV0byBwcm90ZWN0ZWRUaGlzIHsgUmVmIHsg
KnRoaXMgfSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgK
aW5kZXggMmEzNzI5MjI3OTljZTZhZmZhYWIzZTE0MGQxOTBiYTY0Y2Y4Y2UyYi4uOTIwMmVkZGQ5
ZTEwNWIyNzM1ZWRjMTQ2ZjI2NjRjMTNjYjljMzQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJlc291
cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDEsMTUg
KzQyLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNsaWVudDsKIHN0cnVjdCBQ
cmV2aWV3Q29udmVydGVyUHJvdmlkZXI7CiAKIHN0cnVjdCBQcmV2aWV3UGxhdGZvcm1EZWxlZ2F0
ZSA6IENhbk1ha2VXZWFrUHRyPFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlPiB7CiAgICAgdmlydHVh
bCB+UHJldmlld1BsYXRmb3JtRGVsZWdhdGUoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRGaW5pc2hMb2FkaW5n
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZEZhaWxXaXRoRXJyb3IoY29uc3Qg
UmVzb3VyY2VFcnJvciYpID0gMDsKIH07CkBAIC03Miw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJldmlld0ZpbGVOYW1lKCkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIHByZXZpZXdVVEkoKSBjb25zdDsKICAgICBjb25zdCBSZXNvdXJjZUVy
cm9yJiBwcmV2aWV3RXJyb3IoKSBjb25zdDsKLSAgICBjb25zdCBTaGFyZWRCdWZmZXImIHByZXZp
ZXdEYXRhKCkgY29uc3Q7CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcHJldmll
d0RhdGEoKSBjb25zdDsKIAogICAgIHZvaWQgZmFpbGVkVXBkYXRpbmcoKTsKICAgICB2b2lkIGZp
bmlzaFVwZGF0aW5nKCk7CkBAIC05NCw3ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1Bs
YXRmb3JtUGFzc3dvcmRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikgY29uc3Q7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGl0ZXJhdGVDbGllbnRzKFQmJiBjYWxsYmFjayk7Ci0g
ICAgdm9pZCBhcHBlbmRGcm9tQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQg
YXBwZW5kRnJvbUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9p
ZCBkaWRBZGRDbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYpOwogICAgIHZvaWQgZGlkRmFp
bENvbnZlcnRpbmdXaXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlk
RmFpbFVwZGF0aW5nKCk7CkBAIC0xMDYsNyArMTA4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBs
YXRmb3JtVW5sb2NrV2l0aFBhc3N3b3JkKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gUHJldmll
d1BsYXRmb3JtRGVsZWdhdGUKLSAgICB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRlbGVnYXRlRGlk
RmluaXNoTG9hZGluZygpIGZpbmFsOwogICAgIHZvaWQgZGVsZWdhdGVEaWRGYWlsV2l0aEVycm9y
KGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApAQCAtMTE4LDcgKzEyMCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIEZpbmlzaGVkQ29udmVydGluZywKICAgICB9OwogCi0gICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gbV9wcmV2aWV3RGF0YTsKKyAgICBVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRl
cj4gbV9wcmV2aWV3RGF0YTsKICAgICBSZXNvdXJjZUVycm9yIG1fcHJldmlld0Vycm9yOwogICAg
IFJlc291cmNlUmVzcG9uc2UgbV9vcmlnaW5hbFJlc3BvbnNlOwogICAgIFN0YXRlIG1fc3RhdGUg
eyBTdGF0ZTo6VXBkYXRpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZp
ZXdDb252ZXJ0ZXJDbGllbnQuaAppbmRleCAwNGVhMzY4MDY5MmIyNTJhMTk4OWMyNmNhMjA0MjEy
Nzc3YWEzYjdiLi45Y2VlOTMzMjBiMjM4YjRjZDczY2RkMmUwMzAyYzNiZjRkYWQ2OGJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oCkBA
IC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUHJldmlld0NvbnZl
cnRlcjsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNsaWVudCA6
IENhbk1ha2VXZWFrUHRyPFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ+IHsKICAgICB2aXJ0dWFsIH5Q
cmV2aWV3Q29udmVydGVyQ2xpZW50KCkgPSBkZWZhdWx0OwpAQCAtNDIsNyArNDIsNyBAQCBzdHJ1
Y3QgUHJldmlld0NvbnZlcnRlckNsaWVudCA6IENhbk1ha2VXZWFrUHRyPFByZXZpZXdDb252ZXJ0
ZXJDbGllbnQ+IHsKICAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZpbmlzaFVw
ZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdD
b252ZXJ0ZXJEaWRGYWlsVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVy
dGVyJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURh
dGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgbmV3RGF0YSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0Nv
bnZlcnRlciYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG5ld0RhdGEpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRpbmcoUHJldmll
d0NvbnZlcnRlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZh
aWxDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaAppbmRleCA4Mjc4NjM5
M2ZjZWQ3NTRjODVmN2IyODkxMjUyZjUxNmJlZDBkNTQ5Li5hYjcwMDRiZTkzMWYwMDNhNjk2Zjg4
OTc2YjZiNTQwZjgyMjRmNzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyIDogQ2FuTWFrZVdlYWtQdHI8
UHJldmlld0NvbnZlcnRlclByb3ZpZGVyPiB7CiAgICAgdmlydHVhbCB+UHJldmlld0NvbnZlcnRl
clByb3ZpZGVyKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIHByb3ZpZGVNYWluUmVz
b3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXIm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4m
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVy
dGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cAppbmRleCBkOGU2OGUzMzc3ODFmYjI5YWQzOWM1NWI5YWZkMzkwMDM1MzUzODVkLi43ZmFmNjc3
ZDcyNDA2NzgxNzdlYzNkNDljYWMwYjFiYmM0ODNlMDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTM3LDYzICszNyw2OSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpCiB7Ci0gICAgYXBwZW5kKGRhdGEsIHNpemUpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOwogfQogCi1TaGFyZWRCdWZm
ZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK1JlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsKIH0KIAotU2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKLSAg
ICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
JiYgbWFwcGVkRmlsZURhdGEpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdt
ZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpfSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwogfQog
Ci1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92
aWRlcikKLSAgICA6IG1fc2l6ZShwcm92aWRlci5zaXplKCkpCitSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUocHJvdmlkZXIpKX0pOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCitSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYm
IHZlY3RvcikKIHsKLSAgICBhcHBlbmQoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKIH0KIAot
I2lmIFVTRShHU1RSRUFNRVIpCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQorUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJv
dmlkZXImJiBwcm92aWRlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIobWFwcGVkQnVmZmVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQotICAgIDogbV9zaXpl
KG1hcHBlZEJ1ZmZlci5zaXplKCkpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEp
CisgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewotICAgIG1fc2VnbWVudHMuYXBwZW5k
KHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpfSk7CisgICAgbV9zZWdtZW50
cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKSB9KTsK
IH0KLSNlbmRpZgogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1h
cHBpbmcpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKERh
dGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQorICAgIDogbV9zaXplKHByb3ZpZGVyLnNp
emUoKSkKIHsKLSAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6
OlllcykgewotICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwotICAgICAgICBGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUs
IG1hcHBpbmdTdWNjZXNzKTsKLSAgICAgICAgaWYgKG1hcHBpbmdTdWNjZXNzKQotICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0
YSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdG
aWxlKGZpbGVQYXRoKTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50Ojpj
cmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCitGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZl
Y3RvcikpKTsKKyAgICBhcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKIH0KIAotc3RhdGljIFZlY3Rv
cjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKKyNpZiBVU0UoR1NUUkVBTUVSKQor
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0
ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIobWFwcGVkQnVmZmVyKSk7Cit9CisKK0Zy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3du
ZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKKyAgICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgp
KQoreworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFw
cGVkQnVmZmVyKSB9KTsKK30KKyNlbmRpZgorCitzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJp
bmVTZWdtZW50c0RhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRW
ZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gY29t
YmluZWREYXRhOwogICAgIGNvbWJpbmVkRGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUp
OwpAQCAtMTAzLDMzICsxMDksMTkgQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2Vn
bWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3IKICAgICByZXR1
cm4gY29tYmluZWREYXRhOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVT
ZWdtZW50KCkgY29uc3QKK1JlZjxTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
Om1ha2VDb250aWd1b3VzKCkgY29uc3QKIHsKLSNpZiBBU1NFUlRfRU5BQkxFRAotICAgIC8vIEZJ
WE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIHNldCB0aGlzIHRvIHRydWUgYW5kIGhhdmUgbm8g
YXNzZXJ0aW9ucyBmaXJlLgotICAgIC8vIFJlbW92ZSBhbGwgaW5zdGFuY2VzIG9mIGFwcGVuZGlu
ZyBhZnRlciBjYWxsaW5nIHRoaXMsIGJlY2F1c2UgdGhleSBhcmUgYWxsIE8obl4yKSBhbGdvcml0
aG1zIHNpbmNlIHIyMTU2ODYuCi0gICAgLy8gbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVu
dCA9IHRydWU7Ci0jZW5kaWYKLSAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPD0gMSkKLSAgICAg
ICAgcmV0dXJuOwotCisgICAgaWYgKG1fY29udGlndW91cykKKyAgICAgICAgcmV0dXJuIFJlZiB7
ICpzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqPih0aGlzKSkgfTsKKyAgICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQorICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBpZiAobV9zZWdtZW50cy5zaXplKCkg
PT0gMSkKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0u
c2VnbWVudC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNlZ21l
bnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKLSAg
ICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNvbWJp
bmVkRGF0YSkpfSk7Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwotICAgIEFT
U0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKTsKIH0KIAotY29uc3QgdWludDhfdCogU2hhcmVk
QnVmZmVyOjpkYXRhKCkgY29uc3QKLXsKLSAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwotICAg
IEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKLSAgICByZXR1cm4gbV9zZWdtZW50c1sw
XS5zZWdtZW50LT5kYXRhKCk7Ci19Ci0KLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmNv
cHlEYXRhKCkgY29uc3QKK1ZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpj
b3B5RGF0YSgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0YS5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUoKSk7CkBAIC0xMzksNyArMTMxLDcgQEAgVmVjdG9y
PHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdAogICAgIHJldHVybiBkYXRh
OwogfQogCi1WZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCitWZWN0b3I8
dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKQogewogICAgIGlmICht
X3NlZ21lbnRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTE1NCwxMyArMTQ2
LDEzIEBAIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkKICAgICByZXR1
cm4gY29tYmluZWREYXRhOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRCdWZmZXI6
OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29u
c3QKIHsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBlbGVtZW50ID0gZ2V0U2Vn
bWVudEZvclBvc2l0aW9uKHBvc2l0aW9uKTsKICAgICByZXR1cm4geyBlbGVtZW50LT5zZWdtZW50
LmNvcHlSZWYoKSwgcG9zaXRpb24gLSBlbGVtZW50LT5iZWdpblBvc2l0aW9uIH07CiB9CiAKLWNv
bnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogU2hhcmVkQnVmZmVyOjpn
ZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aW9uKSBjb25zdAorY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGlvbikgY29uc3QKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVChwb3NpdGlvbiA8IG1fc2l6ZSk7CiAgICAgYXV0byBjb21wYXJh
dG9yID0gW10oY29uc3Qgc2l6ZV90JiBwb3NpdGlvbiwgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JF
bnRyeSYgZW50cnkpIHsKQEAgLTE3MSw3ICsxNjMsNyBAQCBjb25zdCBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50VmVjdG9yRW50cnkqIFNoYXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9u
KAogICAgIHJldHVybiBlbGVtZW50OwogfQogCi1TdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0
cmluZygpIGNvbnN0CitTdHJpbmcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmco
KSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBmb3JFYWNo
U2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewpAQCAtMTgxLDcgKzE3Myw3IEBAIFN0cmluZyBT
aGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gc3RyaW5nQnVpbGRl
ci50b1N0cmluZygpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAorUmVmUHRyPEFycmF5QnVmZmVyPiBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBh
cnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihzaXplKCkpLCAxKTsKICAgICBpZiAoIWFycmF5QnVmZmVyKSB7CkBAIC0y
MDAsNjggKzE5Miw2MyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3Jl
YXRlQXJyYXlCdWZmZXIoKSBjb25zdAogICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKIH0KIAotdm9p
ZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7
CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNhcGFj
aXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9y
IChjb25zdCBhdXRvJiBlbGVtZW50IDogZGF0YS5tX3NlZ21lbnRzKSB7Ci0gICAgICAgIG1fc2Vn
bWVudHMudW5jaGVja2VkQXBwZW5kKHttX3NpemUsIGVsZW1lbnQuc2VnbWVudC5jb3B5UmVmKCl9
KTsKKyAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoeyBtX3NpemUsIGVsZW1lbnQu
c2VnbWVudC5jb3B5UmVmKCkgfSk7CiAgICAgICAgIG1fc2l6ZSArPSBlbGVtZW50LnNlZ21lbnQt
PnNpemUoKTsKICAgICB9CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQog
Ci12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBs
ZW5ndGgpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewotICAgIEFTU0VSVCghbV9oYXNCZWVuQ29tYmluZWRJ
bnRvT25lU2VnbWVudCk7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIFZlY3Rvcjx1
aW50OF90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLmFwcGVuZChkYXRhLCBsZW5ndGgpOwotICAgIG1f
c2VnbWVudHMuYXBwZW5kKHttX3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0
b3IpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUodmVjdG9yKSkgfSk7CiAgICAgbV9zaXplICs9IGxlbmd0aDsKICAgICBBU1NF
UlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBl
bmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5D
b21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAg
YXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHttX3Np
emUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSl9KTsKKyAgICBtX3NlZ21lbnRz
LmFwcGVuZCh7IG1fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSB9KTsK
ICAgICBtX3NpemUgKz0gZGF0YVNpemU7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50
KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQordm9pZCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpjbGVhcigpCiB7CiAgICAgbV9zaXplID0gMDsKICAgICBtX3NlZ21lbnRzLmNs
ZWFyKCk7CiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi1SZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogewotICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IGNsb25lID0gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOworICAg
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcik7CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBjbG9u
ZS0+bV9zZWdtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpKTsK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKQotICAgICAgICBjbG9u
ZS0+bV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe2VsZW1lbnQuYmVnaW5Qb3NpdGlvbiwgZWxl
bWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBjbG9uZS0+bV9zZWdtZW50cy51bmNo
ZWNrZWRBcHBlbmQoeyBlbGVtZW50LmJlZ2luUG9zaXRpb24sIGVsZW1lbnQuc2VnbWVudC5jb3B5
UmVmKCkgfSk7CiAgICAgQVNTRVJUKGNsb25lLT5pbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAg
ICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQog
Ci1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJv
dmlkZXImJiBwcm92aWRlcikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoV1RGTW92ZShwcm92aWRlcikpKTsKLX0KLQotdm9pZCBTaGFyZWRCdWZmZXI6OmZvckVhY2hT
ZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYg
YXBwbHkpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50
KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYgYXBwbHkp
IGNvbnN0CiB7CiAgICAgYXV0byBzZWdtZW50cyA9IG1fc2VnbWVudHM7CiAgICAgZm9yIChhdXRv
JiBzZWdtZW50IDogc2VnbWVudHMpCiAgICAgICAgIGFwcGx5KFNwYW4geyBzZWdtZW50LnNlZ21l
bnQtPmRhdGEoKSwgc2VnbWVudC5zZWdtZW50LT5zaXplKCkgfSk7CiB9CiAKLWJvb2wgU2hhcmVk
QnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29u
c3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6c3RhcnRzV2l0aChjb25zdCBTcGFuPGNv
bnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0CiB7CiAgICAgaWYgKHByZWZpeC5lbXB0eSgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI4Myw3ICsyNzAsNyBAQCBib29sIFNoYXJlZEJ1ZmZl
cjo6c3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1WZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpyZWFk
KHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CitWZWN0b3I8dWludDhfdD4gRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBj
b25zdAogewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGlmIChvZmZzZXQgPj0gc2l6
ZSgpKQpAQCAtMzEwLDEyICsyOTcsMTIgQEAgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6
cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogICAgIHJldHVybiBkYXRh
OwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXpl
X3QgbGVuZ3RoKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9p
ZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvcHlU
byhkZXN0aW5hdGlvbiwgMCwgbGVuZ3RoKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlU
byh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QK
K3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBz
aXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogewogICAgIEFTU0VSVChsZW5ndGgg
KyBvZmZzZXQgPD0gc2l6ZSgpKTsKICAgICBpZiAob2Zmc2V0ID49IHNpemUoKSkKQEAgLTM1Mywx
NCArMzQwLDggQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwg
c2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKICAgICB9CiB9CiAKLWJvb2wgU2hh
cmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKLXsKLSAgICBhdXRvIGl0ID0gYmVnaW4o
KTsKLSAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9PSBlbmQoKTsKLX0KLQogI2lmIEFT
U0VSVF9FTkFCTEVECi1ib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBj
b25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgp
IGNvbnN0CiB7CiAgICAgc2l6ZV90IHBvc2l0aW9uID0gMDsKICAgICBmb3IgKGNvbnN0IGF1dG8m
IGVsZW1lbnQgOiBtX3NlZ21lbnRzKSB7CkBAIC0zNzIsNDIgKzM1MywxMyBAQCBib29sIFNoYXJl
ZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogfQogI2VuZGlmIC8vIEFTU0VS
VF9FTkFCTEVECiAKLWNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRh
dGEoKSBjb25zdAotewotICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoCi0gICAg
ICAgIFtdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyBy
ZXR1cm4gZGF0YS5kYXRhKCk7IH0sCi0jaWYgVVNFKENGKQotICAgICAgICBbXShjb25zdCBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gQ0ZEYXRh
R2V0Qnl0ZVB0cihkYXRhLmdldCgpKTsgfSwKLSNlbmRpZgotI2lmIFVTRShHTElCKQotICAgICAg
ICBbXShjb25zdCBHUmVmUHRyPEdCeXRlcz4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0
KCksIG51bGxwdHIpKTsgfSwKLSNlbmRpZgotI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgICAgIFtd
KGNvbnN0IFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4
X3QqIHsgcmV0dXJuIGRhdGEtPmRhdGEoKTsgfSwKLSNlbmRpZgotICAgICAgICBbXShjb25zdCBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSgpKTsgfSwKLSAgICAgICAg
W10oY29uc3QgUHJvdmlkZXImIHByb3ZpZGVyKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBw
cm92aWRlci5kYXRhKCk7IH0KLSAgICApOwotICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3Is
IG1faW1tdXRhYmxlRGF0YSk7Ci19Ci0KLWJvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6
Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0YSk7
Ci19Ci0KICNpZiAhVVNFKENGKQotdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVk
ZWRTb29uKCkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5v
dE5lZWRlZFNvb24oKSBjb25zdAogewogfQogI2VuZGlmCiAKLVdURjo6UGVyc2lzdGVuY2U6OkRl
Y29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4ge3sgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgpIH19OwotfQotCi1i
b29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBj
b25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogewogICAgIGlmICh0aGlzID09ICZvdGhl
cikKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00NTYsNyArNDA4LDExOCBAQCBib29sIFNoYXJl
ZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAg
IHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6
ZSgpIGNvbnN0CitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcigpCit7CisgICAgbV9jb250aWd1
b3VzID0gdHJ1ZTsKK30KKworU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdt
ZW50PiYmIHNlZ21lbnQpCit7CisgICAgbV9zaXplID0gc2VnbWVudC0+c2l6ZSgpOworICAgIG1f
c2VnbWVudHMuYXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsKKyAgICBtX2NvbnRpZ3Vv
dXMgPSB0cnVlOworfQorCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBjb250aWd1b3VzQnVmZmVyKQoreworICAgIEFTU0VSVChjb250aWd1
b3VzQnVmZmVyLT5oYXNPbmVTZWdtZW50KCkgfHwgY29udGlndW91c0J1ZmZlci0+aXNFbXB0eSgp
KTsKKyAgICBtX3NpemUgPSBjb250aWd1b3VzQnVmZmVyLT5zaXplKCk7CisgICAgaWYgKGNvbnRp
Z3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSkKKyAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQo
eyAwLCBjb250aWd1b3VzQnVmZmVyLT5tX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpIH0p
OworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVm
ZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICA6IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOwor
fQorCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9k
ZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCit7
CisgICAgaWYgKG1heVVzZUZpbGVNYXBwaW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsK
KyAgICAgICAgYm9vbCBtYXBwaW5nU3VjY2VzczsKKyAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5n
U3VjY2Vzcyk7CisgICAgICAgIGlmIChtYXBwaW5nU3VjY2VzcykKKyAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7Cisg
ICAgfQorICAgIHJldHVybiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOworfQorCitj
b25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAoreworICAgIGlmIChtX3Nl
Z21lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1f
c2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOworfQorCitXVEY6OlBlcnNpc3RlbmNlOjpEZWNv
ZGVyIFNoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgeyBkYXRh
KCksIHNpemUoKSB9IH07Cit9CisKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0
ZShWZWN0b3I8dWludDhfdD4mJiBkYXRhKQoreworICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisK
KyNpZiBVU0UoQ0YpCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoUmV0YWlu
UHRyPENGRGF0YVJlZj4mJiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFT
ZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKyNlbmRpZgorCisjaWYgVVNFKEdMSUIpCitSZWY8
RGF0YVNlZ21lbnQ+IERhdGFTZWdtZW50OjpjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYgZGF0YSkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7
Cit9CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVIpCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFT
ZWdtZW50OjpjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworfQor
I2VuZGlmCisKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0
YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworfQorCitSZWY8RGF0YVNlZ21lbnQ+IERhdGFTZWdt
ZW50OjpjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOworfQorCitjb25zdCB1aW50OF90
KiBEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0Cit7CisgICAgYXV0byB2aXNpdG9yID0gV1RGOjpt
YWtlVmlzaXRvcigKKyAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKSAtPiBj
b25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKKyNpZiBVU0UoQ0YpCisgICAg
ICAgIFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90
KiB7IHJldHVybiBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpOyB9LAorI2VuZGlmCisjaWYg
VVNFKEdMSUIpCisgICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYgZGF0YSkgLT4gY29u
c3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGdfYnl0ZXNf
Z2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9LAorI2VuZGlmCisjaWYgVVNFKEdTVFJF
QU1FUikKKyAgICAgICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYgZGF0
YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9LAorI2VuZGlmCisg
ICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSAtPiBjb25z
dCB1aW50OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRh
KCkpOyB9LAorICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIC0+IGNvbnN0IHVp
bnQ4X3QqIHsgcmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQorICAgICk7CisgICAgcmV0dXJuIHN0
ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKK30KKworYm9vbCBEYXRhU2VnbWVu
dDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0
YSk7Cit9CisKK3NpemVfdCBEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgYXV0byB2
aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKICAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhKSAtPiBzaXplX3QgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0sCkBAIC00NzUsNyAr
NTM4LDcgQEAgc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAog
ICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNo
YXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRC
dWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9u
V2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3NlZ21l
bnQoV1RGTW92ZShzZWdtZW50KSkKICAgICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBvc2l0
aW9uV2l0aGluU2VnbWVudCkKICAgICAsIG1fc2l6ZShzaXplID8gKnNpemUgOiBtX3NlZ21lbnQt
PnNpemUoKSAtIHBvc2l0aW9uV2l0aGluU2VnbWVudCkKQEAgLTQ4OSwyMiArNTUyLDEyIEBAIFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZm
ZXJEYXRhVmlldyYgb3RoZXIsIHNpCiB7CiB9CiAKLXNpemVfdCBTaGFyZWRCdWZmZXJEYXRhVmll
dzo6c2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2l6ZTsKLX0KLQotY29uc3QgdWludDhf
dCogU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmRhdGEoKSBjb25zdAotewotICAgIHJldHVybiBtX3Nl
Z21lbnQtPmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OwotfQotCiBSZWY8U2hhcmVk
QnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QK
IHsKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1f
c2VnbWVudDsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gc2VnbWVu
dCA9IG1fc2VnbWVudDsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21l
bnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlZ21lbnQsIGRhdGEgPSBkYXRhKCldKCkgeyByZXR1
cm4gZGF0YTsgfSwKLSAgICAgICAgW3NlZ21lbnQsIHNpemUgPSBzaXplKCldKCkgeyByZXR1cm4g
c2l6ZTsgfQorICAgICAgICBbc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXplOyB9CiAgICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggZjIzZjVk
NjlhZDMyZWQ2NDBiOTU3N2IyZTZjNDU0OTE4MzkzNjhhZC4uMTE5ZjM4NGU1ODBmOThiODE0MzQy
YmJhNGEyMGQ2MTZmZDhiZjhhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CkBAIC02MiwxNDYgKzYyLDEyNSBAQCBjbGFzcyBEZWNvZGVyOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3OwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CisvLyBEYXRhIHdyYXBwZWQgYnkgYSBE
YXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5j
ZWQgYnkgb3RoZXIgb2JqZWN0cy4KKy8vIFRvIG1vZGlmeSBvciBjb21iaW5lIHRoZSBkYXRhLCBh
bGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KK2NsYXNzIERhdGFTZWdtZW50IDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKGRhdGEsIHNpemUpKTsgfQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsgfQor
ICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OwogCi0gICAgZW51bSBjbGFzcyBNYXlVc2VG
aWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpT
aGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7Ci0KLSAg
ICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVp
bnQ4X3Q+JiYpOwogCi0jaWYgVVNFKEZPVU5EQVRJT04pCi0gICAgUmV0YWluUHRyPE5TRGF0YT4g
Y3JlYXRlTlNEYXRhKCkgY29uc3Q7Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0
YUFycmF5KCkgY29uc3Q7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0Rh
dGEgKik7Ci0gICAgdm9pZCBhcHBlbmQoTlNEYXRhICopOwotI2VuZGlmCiAjaWYgVVNFKENGKQot
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNyZWF0ZUNGRGF0YSgpIGNvbnN0OwotICAgIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKLSAgICB2b2lkIGFwcGVuZChD
RkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNy
ZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmKTsKICNlbmRpZgotCiAjaWYgVVNFKEdMSUIpCi0g
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKLSAgICBHUmVmUHRy
PEdCeXRlcz4gY3JlYXRlR0J5dGVzKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQdHI8R0J5dGVzPiYmKTsKICNlbmRpZgotCiAj
aWYgVVNFKEdTVFJFQU1FUikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdz
dE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRh
U2VnbWVudD4gY3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJik7CiAjZW5kaWYK
LSAgICAvLyBDYWxsaW5nIGRhdGEoKSBjYXVzZXMgYWxsIHRoZSBkYXRhIHNlZ21lbnRzIHRvIGJl
IGNvcGllZCBpbnRvIG9uZSBzZWdtZW50IGlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5LgotICAgIC8v
IEl0ZXJhdGUgdGhlIHNlZ21lbnRzIHVzaW5nIGJlZ2luKCkgYW5kIGVuZCgpIGluc3RlYWQuCi0g
ICAgLy8gRklYTUU6IEF1ZGl0IHRoZSBjYWxsIHNpdGVzIG9mIHRoaXMgZnVuY3Rpb24gYW5kIHJl
cGxhY2UgdGhlbSB3aXRoIGl0ZXJhdGlvbiBpZiBwb3NzaWJsZS4KLSAgICBjb25zdCB1aW50OF90
KiBkYXRhKCkgY29uc3Q7Ci0gICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBWZWN0
b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVhZChz
aXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLQotICAgIC8vIFNpbWlsYXIgdG8g
Y29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0
ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KLSAg
ICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKLQotICAgIC8vIENyZWF0ZXMgYW4gQXJy
YXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQK
LSAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50
byBhIGZsYXQgYnVmZmVyLgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERhdGFTZWdtZW50
PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CiAKLSAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gIXNpemUoKTsgfQotCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVy
Jik7Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgdm9pZCBh
cHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KLSAgICB2b2lkIGFwcGVu
ZChWZWN0b3I8dWludDhfdD4mJik7Ci0KLSAgICB2b2lkIGNsZWFyKCk7CisgICAgc3RydWN0IFBy
b3ZpZGVyIHsKKyAgICAgICAgRnVuY3Rpb248Y29uc3QgdWludDhfdCooKT4gZGF0YTsKKyAgICAg
ICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7CisgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IGNvcHkoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6
ZV90IGxlbmd0aCkgY29uc3Q7Ci0gICAgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNp
emVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShQcm92aWRlciYmKTsKIAotICAgIC8vIERhdGEg
d3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBj
YW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgotICAgIC8vIFRvIG1vZGlmeSBvciBj
b21iaW5lIHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KLSAgICBjbGFzcyBE
YXRhU2VnbWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhU2VnbWVudD4gewot
ICAgIHB1YmxpYzoKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgp
IGNvbnN0OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBzaXplX3Qgc2l6ZSgpIGNvbnN0OworI2lm
IFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNy
ZWF0ZU5TRGF0YSgpIGNvbnN0OworI2VuZGlmCiAKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGRhdGEuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKLSAgICAgICAgfQorICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OwogCitwcml2YXRlOgorICAg
IGV4cGxpY2l0IERhdGFTZWdtZW50KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCisgICAgICAgIDog
bV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2lmIFVTRShDRikKLSAgICAgICAg
c3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0
YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0K
KyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCisg
ICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCiAjaWYg
VVNFKEdMSUIpCi0gICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRy
PEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1v
dmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYm
IGRhdGEpCisgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2Vu
ZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgIGV4cGxpY2l0IERh
dGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4mJiBkYXRhKQorICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KICNlbmRpZgotICAgICAgICBzdGF0
aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBk
YXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsg
fQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYg
ZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAg
ZXhwbGljaXQgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKKyAgICAgICAgOiBtX2lt
bXV0YWJsZURhdGEoV1RGTW92ZShwcm92aWRlcikpIHsgfQogCi0gICAgICAgIHN0cnVjdCBQcm92
aWRlciB7Ci0gICAgICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOwotICAg
ICAgICAgICAgRnVuY3Rpb248c2l6ZV90KCk+IHNpemU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAg
c3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYgcHJvdmlkZXIpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShwcm92aWRlcikpKTsgfQotCi0j
aWYgVVNFKEZPVU5EQVRJT04pCi0gICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0
YSgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICAgICAgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRh
KCkgY29uc3Q7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBEYXRhU2VnbWVudChWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRh
KSkgeyB9CisgICAgc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwKICNpZiBVU0UoQ0YpCi0g
ICAgICAgIERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkKLSAgICAgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQorICAgICAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiwKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgICAgICBEYXRhU2VnbWVu
dChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEo
V1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIEdSZWZQdHI8R0J5dGVzPiwKICNlbmRpZgogI2lm
IFVTRShHU1RSRUFNRVIpCi0gICAgICAgIERhdGFTZWdtZW50KFJlZlB0cjxHc3RNYXBwZWRPd25l
ZEJ1ZmZlcj4mJiBkYXRhKQotICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CisgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCiAjZW5kaWYK
LSAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQot
ICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9Ci0gICAgICAg
IERhdGFTZWdtZW50KFByb3ZpZGVyJiYgcHJvdmlkZXIpCi0gICAgICAgICAgICA6IG1faW1tdXRh
YmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CisgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhLAorICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOworICAgIGZyaWVu
ZCBjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRC
dWZmZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKK307CisKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4geworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAg
c3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhKSwgc2l6ZSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVh
dGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOwogCi0gICAgICAgIHN0ZDo6dmFyaWFudDxWZWN0
b3I8dWludDhfdD4sCisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0
YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhKik7
CisjZW5kaWYKICNpZiBVU0UoQ0YpCi0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiwK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCisKICNpZiBVU0UoR0xJQikKLSAgICAgICAgICAgIEdS
ZWZQdHI8R0J5dGVzPiwKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsKICNlbmRpZgorCiAjaWYgVVNFKEdTVFJFQU1F
UikKLSAgICAgICAgICAgIFJlZlB0cjxHc3RNYXBwZWRPd25lZEJ1ZmZlcj4sCisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFw
cGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgotICAgICAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEsCi0gICAgICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRhOwotICAgICAg
ICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwotICAgIH07CisgICAgV0VCQ09SRV9FWFBPUlQg
VmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVj
dG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisK
KyAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxs
IHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgorICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0
YSgpOworCisgICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBBcnJheUJ1ZmZl
ciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZlcnMgaW50byBhIGZsYXQgYnVmZmVyLgor
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKSBjb25zdDsKKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9
CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQorICAgIGJvb2wg
aXNDb250aWd1b3VzKCkgY29uc3QgeyByZXR1cm4gbV9jb250aWd1b3VzOyB9CiAKLSAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXpl
X3QgbGVuZ3RoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBk
ZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAKLSAgICB2
b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1
aW50OF90PiYpPiYpIGNvbnN0OwotICAgIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0
IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFj
aFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+
JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48
Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9
IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkg
d2hlbiB1c2luZyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3Ry
dWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlv
bjsKQEAgLTIxMCw3NSArMTg5LDE5NyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRW
ZWN0b3IgPSBWZWN0b3I8RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21l
bnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50
cy5iZWdpbigpOyB9CiAgICAgRGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGVuZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuZW5kKCk7IH0KLSAgICBib29sIGhhc09uZVNlZ21l
bnQoKSBjb25zdDsKKyAgICBib29sIGhhc09uZVNlZ21lbnQoKSBjb25zdCB7IHJldHVybiBtX3Nl
Z21lbnRzLnNpemUoKSA9PSAxOyB9CiAKICAgICAvLyBiZWdpbiBhbmQgZW5kIHRha2UgTygxKSB0
aW1lLCB0aGlzIHRha2VzIE8obG9nKE4pKSB0aW1lLgotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3
IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
U2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsK
IAotICAgIFN0cmluZyB0b0hleFN0cmluZygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyB0b0hleFN0cmluZygpIGNvbnN0OwogCiAgICAgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVk
U29vbigpIGNvbnN0OwogCi0gICAgV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVy
KTsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0Owot
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdCB7IHJl
dHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVk
QnVmZmVyPiBtYWtlQ29udGlndW91cygpIGNvbnN0OwogCi1wcml2YXRlOgotICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29u
c3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNo
YXIqLCBzaXplX3QpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4m
Jik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
JiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7
Citwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKKworICAgIERhdGFT
ZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7CisgICAgYm9vbCBtX2NvbnRpZ3VvdXMgeyBmYWxzZSB9
OworCisgICAgV0VCQ09SRV9FWFBPUlQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcigpOworICAgIGV4
cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IHNpemUpIHsgYXBwZW5kKGRhdGEsIHNpemUpOyB9CisgICAgZXhwbGljaXQgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmQoZGF0YSwg
c2l6ZSk7IH0KKyAgICBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEpIHsgYXBwZW5kKFdURk1vdmUoZGF0YSkpOyB9CisgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogI2lmIFVTRShD
RikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5kaWYK
ICNpZiBVU0UoR0xJQikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CisgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsK
ICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdz
dE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCisgICAgc2l6
ZV90IG1fc2l6ZSB7IDAgfTsKIAotICAgIHZvaWQgY29tYmluZUludG9PbmVTZWdtZW50KCkgY29u
c3Q7Citwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90
KTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFw
cGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKKyNpZiBV
U0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7
CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZE
YXRhUmVmKTsKKyNlbmRpZgogCi0gICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRv
IGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFy
ZWRCdWZmZXIuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBjbGVhcigpOwogCisgICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBp
bnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyLgorICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90
PiB0YWtlRGF0YSgpOwogICAgIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkqIGdldFNlZ21l
bnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpdGlvbikgY29uc3Q7CiAKLSAgICBzdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgpOwotCi0gICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLSAgICBtdXRhYmxlIERhdGFTZWdt
ZW50VmVjdG9yIG1fc2VnbWVudHM7Ci0KICNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG11dGFibGUg
Ym9vbCBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50IHsgZmFsc2UgfTsKICAgICBib29s
IGludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3Q7CiAjZW5kaWYKIH07CiAKLWlubGluZSBWZWN0
b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCisvLyBBIFNoYXJlZEJ1ZmZl
ciBpcyBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGlyZWN0bHkgYWNj
ZXNzIGl0cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhvZHMuCitjbGFz
cyBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB7CitwdWJsaWM6
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhw
ciAoIXNpemVvZi4uLihBcmdzKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdz
KSA9PSAxCisgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdt
ZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVm
ZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIGF1dG8gYnVmZmVyID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6
Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgY29uc3Qg
Y2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGRhdGEoKSk7IH0KKyAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29k
ZXIoKSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsg
Tm8sIFllcyB9OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVk
LCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOworCisjaWYgVVNF
KEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRl
TlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBVU0UoQ0YpCisgICAgV0VCQ09SRV9FWFBPUlQg
UmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7CisjZW5kaWYKKyNpZiBV
U0UoR0xJQikKKyAgICBXRUJDT1JFX0VYUE9SVCBHUmVmUHRyPEdCeXRlcz4gY3JlYXRlR0J5dGVz
KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRC
dWZmZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKKworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGlu
Z0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7Cit9OworCitjbGFzcyBTaGFyZWRCdWZmZXJC
dWlsZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1
aWxkZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIHsKKyAg
ICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciBhcyBhbGwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUg
aW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAgICAgaWYgKCFidWZmZXIg
fHwgKGJ1ZmZlci0+aGFzT25lUmVmKCkgJiYgIWJ1ZmZlci0+aXNDb250aWd1b3VzKCkpKSB7Cisg
ICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoKmJ1ZmZlcik7CisgICAgfQorICAgIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQorICAgIHsKKyAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5j
ZSB0byB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhcyBhbGwgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCisgICAgICAgIC8vIG9uY2UgY3JlYXRlZC4KKyAgICAg
ICAgaWYgKGJ1ZmZlci0+aGFzT25lUmVmKCkgJiYgIWJ1ZmZlci0+aXNDb250aWd1b3VzKCkpIHsK
KyAgICAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZlci5nZXQoKSkpOwor
ICAgIH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyKEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6IG1fYnVmZmVyKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBh
cmdzKQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVyLT5h
cHBlbmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBsaWNp
dCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9vbCBp
c051bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CisK
KyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNp
emUoKSA6IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsgfQor
ICAgIHZvaWQgZW1wdHkoKQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgZW5zdXJl
QnVmZmVyKCk7CisgICAgfQorCisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5KCkg
OiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiB0YWtlKCkKKyAgICB7CisgICAgICAgIGVuc3VyZUJ1ZmZlcigpOworICAg
ICAgICByZXR1cm4gbV9idWZmZXIucmVsZWFzZU5vbk51bGwoKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgdm9pZCBlbnN1cmVCdWZmZXIoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcikK
KyAgICAgICAgICAgIG1fYnVmZmVyID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgfQorICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKK307
CisKK2lubGluZSBWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6ZXh0cmFj
dERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKICAgICAgICAgcmV0dXJuIHRha2VEYXRh
KCk7CiAgICAgcmV0dXJuIGNvcHlEYXRhKCk7CiB9CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIFNo
YXJlZEJ1ZmZlckRhdGFWaWV3IHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1Ymxp
YzoKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOwotICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwotICAgIHNpemVfdCBzaXpl
KCkgY29uc3Q7Ci0gICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBv
c2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6
Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOworICAgIHNpemVfdCBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7
IH0KICAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAjaWYgVVNFKEZPVU5EQVRJ
T04pCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5k
aWYKIHByaXZhdGU6Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1f
c2VnbWVudDsKKyAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKICAgICBjb25z
dCBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fc2l6
ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJD
aHVua1JlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVu
a1JlYWRlci5jcHAKaW5kZXggY2RiNmU3MDM0MDRkNDI2ZGQyMWI0NzlmYTg5YzBkYTliOGM0OWY4
ZS4uOWQwNTVjZTI3ZDg4YzNkNjJlNWJkMWNkNDZhZDkxZjVjYzQzMWY0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcApAQCAt
MzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoTUhUTUwpCiAK
LVNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRC
dWZmZXIqIGJ1ZmZlciwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpCitTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogYnVmZmVyLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcikKICAgICA6IG1faXRl
cmF0b3JDdXJyZW50KGJ1ZmZlci0+YmVnaW4oKSkKICAgICAsIG1faXRlcmF0b3JFbmQoYnVmZmVy
LT5lbmQoKSkKICAgICAsIG1fc2VnbWVudChtX2l0ZXJhdG9yQ3VycmVudCAhPSBtX2l0ZXJhdG9y
RW5kID8gbV9pdGVyYXRvckN1cnJlbnQtPnNlZ21lbnQtPmRhdGEoKSA6IG51bGxwdHIpCkBAIC00
NCw3ICs0NCw3IEBAIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlcihTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgVmVjCiB7CiB9CiAKLVNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqIGJ1ZmZl
ciwgY29uc3QgY2hhciogc2VwYXJhdG9yKQorU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3Qg
Y2hhciogc2VwYXJhdG9yKQogICAgIDogbV9pdGVyYXRvckN1cnJlbnQoYnVmZmVyLT5iZWdpbigp
KQogICAgICwgbV9pdGVyYXRvckVuZChidWZmZXItPmVuZCgpKQogICAgICwgbV9zZWdtZW50KG1f
aXRlcmF0b3JDdXJyZW50ICE9IG1faXRlcmF0b3JFbmQgPyBtX2l0ZXJhdG9yQ3VycmVudC0+c2Vn
bWVudC0+ZGF0YSgpIDogbnVsbHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXJDaHVua1JlYWRlci5oCmluZGV4IDVkNGU2ZmVlNTgyYzY2MTZmZDA3ZTM5OTRm
Zjc1YzhmMDdhMmZjZTEuLjFjNjQwOGQ0YzczNmExYzRhNDVjZWU3YjNmNjk2NTdiYzlhMjYxNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXIuaApAQCAtNDEsOCArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNP
UkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIHsKIHB1YmxpYzoKLSAgICBTaGFyZWRC
dWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFy
YXRvcik7Ci0gICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiwgY29uc3Qg
Y2hhciogc2VwYXJhdG9yKTsKKyAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpOworICAgIFNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBjaGFyKiBz
ZXBhcmF0b3IpOwogCiAgICAgdm9pZCBzZXRTZXBhcmF0b3IoY29uc3QgVmVjdG9yPGNoYXI+Jik7
CiAgICAgdm9pZCBzZXRTZXBhcmF0b3IoY29uc3QgY2hhciopOwpAQCAtNTgsOCArNTgsOCBAQCBw
dWJsaWM6CiAgICAgc2l6ZV90IHBlZWsoVmVjdG9yPHVpbnQ4X3Q+Jiwgc2l6ZV90KTsKIAogcHJp
dmF0ZToKLSAgICBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRv
ciBtX2l0ZXJhdG9yQ3VycmVudDsKLSAgICBjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yRW5kOworICAgIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yQ3Vy
cmVudDsKKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rv
cjo6Y29uc3RfaXRlcmF0b3IgbV9pdGVyYXRvckVuZDsKICAgICBjb25zdCB1aW50OF90KiBtX3Nl
Z21lbnQgeyBudWxscHRyIH07CiAgICAgc2l6ZV90IG1fc2VnbWVudEluZGV4IHsgMCB9OwogICAg
IFZlY3RvcjxjaGFyPiBtX3NlcGFyYXRvciB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCmluZGV4IGIyZDdhNTUwZDQ2MGU5NGNkMzE1MTM0
YTMxOTViY2Q5MWM3Yjc4OTQuLmE0YjRiYjEwNGI0ZDg0MDE1YjhhYTViNTNlN2RmYTc4OGNlZDI1
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCkBA
IC03Myw3ICs3Myw3IEBAIHZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVTdHJpbmcoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIG1fY3VzdG9tRGF0YS53cml0
ZVN0cmluZyh0eXBlLCB2YWx1ZSk7CiB9CiAKLXZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVE
YXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBT
dGF0aWNQYXN0ZWJvYXJkOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIG1fbm9uRGVmYXVsdERhdGFUeXBlcy5h
ZGQodHlwZSk7CiAgICAgbV9jdXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCBXVEZNb3ZlKGRhdGEp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAppbmRleCBjMDli
NmRlMzFmMmVkZWJlMDE4OGRjOWM0NjZhMjcxZTFiOGI5ZTE0Li5lZGQ3MTM2MjNmMDZkMjJiMzhl
ODMyYTI4MzdmZTY2OTk5ZGZkNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TdGF0aWNQYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGlj
UGFzdGVib2FyZC5oCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xh
c3MgU3RhdGljUGFzdGVib2FyZCBmaW5hbCA6IHB1YmxpYyBQYXN0ZWJvYXJkIHsKIHB1YmxpYzoK
QEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIFN0cmluZyByZWFkU3RyaW5nSW5DdXN0b21E
YXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CiAKICAgICB2b2lkIHdyaXRlU3RyaW5nKGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKSBmaW5hbDsKLSAgICB2b2lkIHdy
aXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSk7Cisg
ICAgdm9pZCB3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICB2b2lkIHdyaXRlU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKTsKICAgICB2b2lkIGNsZWFyKCkgZmlu
YWw7CiAgICAgdm9pZCBjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKaW5kZXggNjg3OTU5MDBj
NWFkZjljYzkwNDVlMGVhYmIyMmIxOGZhNjY5NjMxNC4uMWQ2NWJjNDAzYWQ4NTI0M2M2NzI1ZTcw
NDQ4ZDZjZGFkY2NjY2UxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vTm93UGxheWluZ0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9O
b3dQbGF5aW5nSW5mby5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0
cnVjdCBOb3dQbGF5aW5nSW5mb0FydHdvcmsgewogICAgIFN0cmluZyBzcmM7CiAgICAgU3RyaW5n
IG1pbWVUeXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogCiAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IE5vd1BsYXlpbmdJbmZvQXJ0d29yayYgb3RoZXIpIGNvbnN0CiAgICAgewpAQCAt
NjcsNyArNjcsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgc3RkOjpvcHRpb25h
bDxOb3dQbGF5aW5nSW5mb0FydHdvcms+IE5vd1BsYXlpbmdJbgogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUobWltZVR5cGUpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBp
bWFnZURhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbWFnZURhdGEpKQogICAgICAgICBy
ZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KaW5kZXggYmI3ODhhZmEx
ZTkxZjlhNGQzYWIzNmUyYTBjMDgxMmM5NGUxODcwZS4uN2YwNDk2MGM1OTY1YjYyNTFiOTFiOWE1
NjdlNTEwODliNTcxOWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMzQx
LDcgKzM0MSw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5n
SW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uCiAgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2Vk
VGltZSwgY2ZDdXJyZW50VGltZS5nZXQoKSk7CiAgICAgfQogICAgIGlmIChub3dQbGF5aW5nSW5m
by5hcnR3b3JrICYmIG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YSkgewotICAgICAg
ICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+Y3Jl
YXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNBcnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0
d29yay0+aW1hZ2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAg
ICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5
aW5nSW5mb0FydHdvcmtEYXRhLCBuc0FydHdvcmsuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25h
cnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29y
a01JTUVUeXBlLCBub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5taW1lVHlwZS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01S
TWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtJZGVudGlmaWVyLCBTdHJpbmc6Om51bWJl
cihub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5zcmMuaGFzaCgpKS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZl
ckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApp
bmRleCA2YjY2MjE3ZmYxNjFkZTM3NGYxY2UzMWQ1ZDM0NjM0MGJiMmZjYjkxLi44MTllMjZmYTRj
ZjA2Nzk1N2E1OWZlZjI5Yzk5ZjAzZjVmNDQ5MWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEp
CitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKENGRGF0YVJl
ZiBkYXRhKQogewogICAgIGFwcGVuZChkYXRhKTsKIH0KQEAgLTQzLDI0ICs0MywyMCBAQCBTaGFy
ZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKICNpZiAhVVNFKEZPVU5EQVRJ
T04pCiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNv
bnN0CiB7Ci0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpIHsKKyAgICBpZiAoaGFzT25l
U2VnbWVudCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0YWlu
UHRyPENGRGF0YVJlZj4+KCZtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkp
CiAgICAgICAgICAgICByZXR1cm4gKmRhdGE7CiAgICAgfQotICAgIGF1dG8gY2ZEYXRhID0gYWRv
cHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKG51bGxwdHIsIHNpemUoKSkpOwotICAgIGZvckVhY2hT
ZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgIENGRGF0YUFwcGVuZEJ5dGVzKGNm
RGF0YS5nZXQoKSwgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAgICB9KTsKLSAg
ICByZXR1cm4gY2ZEYXRhOworICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRy
LCBkYXRhKCksIHNpemUoKSkpOwogfQogI2VuZGlmCiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YVJlZiBkYXRhKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFSZWYgZGF0YSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoZGF0YSkpOwogfQogCi12b2lkIFNo
YXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAordm9pZCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IG1fc2VnbWVudHMpIHsKICAgICAgICAgaWYgKGVudHJ5
LnNlZ21lbnQtPmhhc09uZVJlZigpKSB7CkBAIC03MCw5ICs2Niw4IEBAIHZvaWQgU2hhcmVkQnVm
ZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAgICAgfQogfQogCi12b2lkIFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5D
b21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKGRhdGEpfSk7CiAgICAgICAg
IG1fc2l6ZSArPSBDRkRhdGFHZXRMZW5ndGgoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIu
aAppbmRleCAwNzk3ZGZiZThkMDE4YmU2MzYxNzQ0YzU4Zjg5MmRkNTZlZDY4OWM1Li5jYmU4Nzcx
YTQ1ZDg2MmNiNWFiMDVlY2EzOTk5MjdlMDc4MzhmNTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGREYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNo
ZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1l
bnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIENvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIGJvb2wgaXNSZXF1aXJlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
ci5tbQppbmRleCA0MjkwZGIxMjhkMDAwYTQwZWVmNzBmZDI5NDFkNjM0NDkwNDZkZTAzLi4yZWYy
NzAxZmU2NzhiZjliOTJkYjIxMmJiZWE1YzkxNWEzZmMzYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlci5tbQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXI6OmZpbmlzaGVkQWRkaW5nRGF0YSgpCiAgICAgc2VtYXBob3JlLndhaXQoKTsKIH0K
IAotUmVmPFNoYXJlZEJ1ZmZlcj4gTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OnJlcGxh
Y2VtZW50RGF0YSgpIGNvbnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKGRpZEJsb2NrRGF0YSgpKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9y
ZXBsYWNlbWVudERhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKaW5kZXggMDY4
Y2RjYjM4M2Y0MjM2NWFjMzI2NGUyMjlhNmQ2M2JjMmI0YWJkNi4uNjc5YWU5MzI5NTE3ZTFmMzk0
M2JhNTc2MmFjOGY1NmU4NjBjOGMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCkBAIC00
NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0
YSgpIG92ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNv
bnN0IG92ZXJyaWRlOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVu
dERhdGEoKSBjb25zdCBvdmVycmlkZTsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAg
ICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkgY29uc3Qgb3Zl
cnJpZGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KaW5kZXggYjQ2MWY5NzUz
NmRlM2ExNTgxM2E1ODI3Yjg2NzEzOGI5NmQ0ZjM4Yy4uMWM5NjA0NzE2YjQyNjkzZDVlNDZjMmUy
M2U5NDFkYTAwYzgzZTRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KQEAgLTEwOSw3
ICsxMDksNyBAQCB2b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpmaW5pc2hlZEFk
ZGluZ0RhdGEoKQogICAgIHVwZGF0ZUZpbHRlclN0YXRlKCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZm
ZXI+IFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25z
dAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBhcmVudGFsQ29udHJvbHNDb250ZW50Rmls
dGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChkaWRCbG9ja0RhdGEo
KSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVwbGFjZW1lbnREYXRhLmdl
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9h
cmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2Nv
YS5tbQppbmRleCA2ZjI4ZTgyNDM2MGNjZDMwODZjMDMxOGZhZTQwOThmMWVkZTI4ZTI1Li5iODE3
MDgxN2NlYzU5ZTIyZDNjMGU5YTc4ZjE0NmMwMzNlNGMxNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC00Nyw3ICs0Nyw3IEBA
IHN0YXRpYyBOU0JpdG1hcEltYWdlRmlsZVR5cGUgYml0bWFwUE5HRmlsZVR5cGUoKQogfQogI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykKIAotLy8gTWFraW5nIHRoaXMgbm9uLWlubGluZSBzbyB0aGF0
IFdlYktpdCAyJ3MgZGVjb2RpbmcgZG9lc24ndCBoYXZlIHRvIGluY2x1ZGUgU2hhcmVkQnVmZmVy
LmguCisvLyBNYWtpbmcgdGhpcyBub24taW5saW5lIHNvIHRoYXQgV2ViS2l0IDIncyBkZWNvZGlu
ZyBkb2Vzbid0IGhhdmUgdG8gaW5jbHVkZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLmguCiBQYXN0
ZWJvYXJkV2ViQ29udGVudDo6UGFzdGVib2FyZFdlYkNvbnRlbnQoKSA9IGRlZmF1bHQ7CiBQYXN0
ZWJvYXJkV2ViQ29udGVudDo6flBhc3RlYm9hcmRXZWJDb250ZW50KCkgPSBkZWZhdWx0OwogCkBA
IC0yMTEsOSArMjExLDkgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXNGb3JMZWdh
Y3lVbnNhZmVCaW5kaW5ncygpCiB9CiAKICNpZiBQTEFURk9STShNQUMpCi1zdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCitz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiB0aWZmQnVmZmVyKQogewotICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRt
YXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLmNyZWF0ZU5TRGF0YSgp
LmdldCgpXSk7CisgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFs
bG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldKTsKICAgICBOU0RhdGEgKnBuZ0RhdGEgPSBbaW1hZ2UgcmVwcmVzZW50YXRp
b25Vc2luZ1R5cGU6Yml0bWFwUE5HRmlsZVR5cGUoKSBwcm9wZXJ0aWVzOkB7IH1dOwogICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KaW5kZXggOWVlMGMwYjU1
ZDc5NGMyYjY5MDU3YmJmMzY0YWJmMTgzOGE5Yjg1MC4uMjVmMzExZjI1ODliODJlZmQyNTc3YTA4
ODk0YjZjNWUwNjZiOTI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KQEAgLTM1LDExICszNSwxMSBAQAogI2ltcG9ydCA8d3Rm
L2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIEBpbnRlcmZhY2UgV2ViQ29yZVNoYXJlZEJ1ZmZlckRh
dGEgOiBOU0RhdGEKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjoo
TlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemU7CistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFT
ZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6
ZTsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIHsKLSAg
ICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gX2RhdGFT
ZWdtZW50OworICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdt
ZW50OwogICAgIE5TVUludGVnZXIgX3Bvc2l0aW9uOwogICAgIE5TVUludGVnZXIgX3NpemU7CiB9
CkBAIC02MSw3ICs2MSw3IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIFtzdXBlciBkZWFsbG9jXTsK
IH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRl
Z2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQorLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBw
b3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKIHsKICAg
ICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTg4
LDEzICs4OCwxNCBAQCBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoTlNEYXRhICpkYXRhKQorUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShOU0RhdGEgKmRhdGEp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJyaWRnZV9jYXN0KGRh
dGEpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihi
cmlkZ2VfY2FzdChkYXRhKSkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKE5TRGF0
YSAqZGF0YSkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKE5TRGF0YSAqZGF0
YSkKIHsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgcmV0dXJuIGFwcGVuZChicmlk
Z2VfY2FzdChkYXRhKSk7CiB9CiAKQEAgLTEwNSwxMCArMTA2LDggQEAgUmV0YWluUHRyPE5TRGF0
YT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAogCiBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAgY29tYmluZUlu
dG9PbmVTZWdtZW50KCk7CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0
dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKLSAgICBBU1NF
UlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KG1fc2Vn
bWVudHNbMF0uc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkpOwogfQogCkBAIC0xMTksMTQgKzExOCwx
NCBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1S
ZXRhaW5QdHI8TlNBcnJheT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0
CitSZXRhaW5QdHI8TlNBcnJheT4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRh
QXJyYXkoKSBjb25zdAogewogICAgIHJldHVybiBjcmVhdGVOU0FycmF5KG1fc2VnbWVudHMsIFtd
IChhdXRvJiBzZWdtZW50KSB7CiAgICAgICAgIHJldHVybiBzZWdtZW50LnNlZ21lbnQtPmNyZWF0
ZU5TRGF0YSgpOwogICAgIH0pOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gRGF0
YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tX
ZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBhbGxvY10gaW5pdFdpdGhEYXRhU2VnbWVudDoqdGhpcyBw
b3NpdGlvbjowIHNpemU6c2l6ZSgpXSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCBmYmMyODNmYmMzMzY5YmY4
MjdlMzE2OTk0YzRjOTRlMDYzNjNjYjgxLi4yZGU0MTkzNGRhMTk4NzlkNzVjMGRmOGE4OWU2NGU1
OTljMjlhZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETUluc3RhbmNlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgTG9nZ2VyOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBDRE1JbnN0YW5jZVNlc3Npb247CiBzdHJ1Y3QgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbjsKIApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBDRE1JbnN0YW5j
ZUNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1JbnN0YW5jZUNsaWVudD4gewogcHVi
bGljOgogICAgIHZpcnR1YWwgfkNETUluc3RhbmNlQ2xpZW50KCkgPSBkZWZhdWx0OwogCi0gICAg
dmlydHVhbCB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3Qg
U3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bnJl
cXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiB9OwogCiAvLyBKYXZhU2NyaXB0J3MgaGFuZGxl
IHRvIGEgQ0RNSW5zdGFuY2UsIG11c3QgYmUgdXNlZCBmcm9tIHRoZQpAQCAtOTgsNyArOTgsNyBA
QCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplV2l0aENvbmZp
Z3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3Rp
dmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJh
Y2smJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lv
bigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXggMzdjZDA3YzdiZjJkYzc1ZTQxZmQ1
YzZjN2RlY2Y0M2UxMDM5ZTExNC4uZDI1OTIyNWJhOWUwMmE2NGQwY2VjZDYxNTFmZGY5M2Y0ZjI0
NjZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTQzLDE2ICs0MywxNiBAQCBjbGFzcyBM
b2dnZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xp
ZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkNsaWVudD4gewog
cHVibGljOgogICAgIHZpcnR1YWwgfkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudCgpID0gZGVmYXVs
dDsKIAogICAgIHVzaW5nIEtleVN0YXR1cyA9IENETUtleVN0YXR1czsKLSAgICB1c2luZyBLZXlT
dGF0dXNWZWN0b3IgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBLZXlTdGF0
dXM+PjsKKyAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2Up
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdXNpbmcgUGxhdGZvcm1E
aXNwbGF5SUQgPSB1aW50MzJfdDsKICAgICB2aXJ0dWFsIFBsYXRmb3JtRGlzcGxheUlEIGRpc3Bs
YXlJRCgpID0gMDsKQEAgLTc4LDEzICs3OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIFN1Y2NlZWRl
ZCwKICAgICB9OwogCi0gICAgdXNpbmcgTGljZW5zZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQp
PjsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGlj
ZW5zZUNhbGxiYWNrJiYpID0gMDsKKyAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIFN1Y2Nl
c3NWYWx1ZSBzdWNjZWVkZWQpPjsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSA9IDA7CiAKICAgICB1
c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1
c1ZlY3RvcjsKLSAgICB1c2luZyBNZXNzYWdlID0gc3RkOjpwYWlyPE1lc3NhZ2VUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6cGFpcjxNZXNzYWdlVHlw
ZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAgICB1c2luZyBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwg
c3RkOjpvcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2U+JiYg
bWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+OwotICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5z
ZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBk
YXRlQ2FsbGJhY2smJikgPSAwOwogCiAgICAgZW51bSBjbGFzcyBTZXNzaW9uTG9hZEZhaWx1cmUg
OiB1aW50OF90IHsKICAgICAgICAgTm9uZSwKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpID0gMDsKIAotICAgIHVzaW5nIFJlbW92ZVNlc3Npb25E
YXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0YXR1c1ZlY3RvciYmLCBz
dGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmLCBTdWNjZXNzVmFsdWUpPjsKKyAgICB1
c2luZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChL
ZXlTdGF0dXNWZWN0b3ImJiwgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+JiYsIFN1Y2Nlc3NWYWx1ZSk+OwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTZXNzaW9uRGF0
YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRh
Q2FsbGJhY2smJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHN0b3JlUmVjb3JkT2ZLZXlVc2Fn
ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCmluZGV4IGNjNmRjN2YxNDBjZDY3
ZDJiN2I4NGY2YWIyYzI4NDMxNmRmZGRjY2YuLjUyYTYxNDhjODNjZDUzOTNjOGY4NzRlZDg1YWQ4
YmYyN2U1YmU1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1Qcml2YXRlLmgKQEAgLTczLDggKzczLDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzU2Vzc2lvbnMoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKLSAg
ICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hh
cmVkQnVmZmVyJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXpl
UmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJp
bmcmKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcAppbmRleCBmMjE4Zjk3OTA0ZmJiYTQ5
ZjFlYmRmNDhlMjA1ZmU3M2RmYWZiNjQ4Li40YmE3NWJmMDBkOWY3MTNiNWFmYmJhNzkzNDAxOTcx
NmNkOGYwMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUHJveHkuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgQ0RNSW5zdGFuY2VTZXNzaW9u
OjpLZXlTdGF0dXNWZWN0b3IgS2V5U3RvcmU6OmNvbnZlcnRUb0pTS2V5U3RhdHVzVmVjdG9yKCkg
Y29uc3QKICAgICBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNW
ZWN0b3I7CiAgICAga2V5U3RhdHVzVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtS2V5
cygpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGtleSA6IG1fa2V5cykKLSAgICAgICAga2V5U3Rh
dHVzVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIENE
TUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzPiB7IGtleS0+aWRBc1NoYXJlZEJ1ZmZlcigpLCBr
ZXktPnN0YXR1cygpIH0pOworICAgICAgICBrZXlTdGF0dXNWZWN0b3IudW5jaGVja2VkQXBwZW5k
KHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIENETUluc3RhbmNlU2Vzc2lv
bjo6S2V5U3RhdHVzPiB7IGtleS0+aWRBc1NoYXJlZEJ1ZmZlcigpLCBrZXktPnN0YXR1cygpIH0p
OwogICAgIHJldHVybiBrZXlTdGF0dXNWZWN0b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCmluZGV4IGE1ODRiNmNkMjY2YjA5
ODA5MDI1NGQ3ZGNiZGRiZjYwZDkzMzFmYmIuLmUxZTA5OGExZDVmNWZmYzY1YzJhNDhmYTQwYWE5
NzJmZTg5ZTFlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUHJveHkuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBLZXlIYW5kbGUoc3RhdHVzLCBXVEZNb3ZlKGtleUlEKSwg
V1RGTW92ZShrZXlIYW5kbGVWYWx1ZSkpKTsKICAgICB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
aWRBc1NoYXJlZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1f
aWQuZGF0YSgpLCBtX2lkLnNpemUoKSk7IH0KKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gaWRBc1NoYXJlZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KG1faWQuZGF0YSgpLCBtX2lkLnNpemUoKSk7IH0KIAogICAgIGJvb2wgdGFrZVZhbHVlSWZEaWZm
ZXJlbnQoS2V5SGFuZGxlVmFsdWVWYXJpYW50JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAppbmRleCA1YmVi
Y2I0OWFhOGViOWEyYmIwNzExZWFlMDgwZjM3N2UyMmI5ODM0Li5mY2E2ZjIzODhhNTZhNmExYzcy
NDcwZTVhNDZmZGQyOGYwNzM3NTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKQEAgLTM4LDcgKzM4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgQ0RNVXRpbGl0aWVzIHsKIAotUmVmUHRy
PEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBGYWlsIG9uIGxhcmdlIGJ1ZmZlcnMgd2hv
c2Ugc2l6ZSBkb2Vzbid0IGZpdCBpbnRvIGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIuCiAgICAg
c2l6ZV90IHNpemUgPSBidWZmZXIuc2l6ZSgpOwpAQCAtNDYsNyArNDYsNyBAQCBSZWZQdHI8SlNP
Tjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50
cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmlu
ZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07Cisg
ICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6
cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oCmluZGV4IDc0ZjUxNWIw
YmQyYTg3MTY4ZWVmMjRiMThmOTVkZWFiZWU4MjhlNmMuLmZjZjViZGRhN2M1OTdkM2MzYWMzNDll
ZTE3ODllNGFkNmUwYzk1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oCkBAIC0zNSwxMSArMzUsMTEgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgQ0RNVXRpbGl0aWVzIHsKIAotUmVmUHRyPEpTT046
Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworUmVmUHRyPEpT
T046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KTsKIAogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IGRkMzQ1N2JmZGU4
YzkyMTg3N2RkN2I5ODJlOTkyMWZjYzBmZWQyZWQuLjMxYTlmZGZhMDJkNmQwMGNhMjYxODI1MmRl
ZDkzNTMxM2RjNThhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTEzMCw3
ICsxMzAsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUxpY2Vuc2VSZWxlYXNlQWNrbm93bGVkZ2VtZW50
Rm9ybWF0KGNvbnN0IEpTT046Ok9iamVjdCYgcm9vdCkKIC8vIF07CiAKIC8vIFRoaXMgZnVuY3Rp
b24gZXh0cmFjdHMgdGhlIEtleUlkcyBjb3VudCBhbmQgdGhlIGxvY2F0aW9uIG9mIHRoZSBmaXJz
dCBLZXlJZCBpbiBpbml0RGF0YSBidWZmZXIuCi1zdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+
IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25l
ZD4ga2V5SWRzTWFwKDAsIDApOwogCkBAIC0xMzgsNyArMTM4LDggQEAgc3RhdGljIHN0ZDo6cGFp
cjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERh
dGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+
IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtl
eUlkc01hcDsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBj
b250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8q
IGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0RGF0
YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIHVu
c2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTE4OCwxNSArMTg5LDE1IEBAIHN0YXRpYyBzdGQ6OnBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXRE
YXRhKGNvbnN0CiB9CiAKIC8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBpbml0RGF0YSBz
aGFyZWRCdWZmZXIgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRhLgotc3RhdGljIGJvb2wgaXNDZW5j
SW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBib29sIGlzQ2Vu
Y0luaXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAg
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCA9IGV4dHJhY3RLZXlpZHNM
b2NhdGlvbkZyb21DZW5jSW5pdERhdGEoaW5pdERhdGEpOwogICAgIHJldHVybiAoKGtleUlkc01h
cC5maXJzdCkgJiYgKGtleUlkc01hcC5zZWNvbmQpKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
aW5pdERhdGEpCitzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlp
ZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRh
KQogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAKICAgICBzdGQ6OnBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2Vu
Y0luaXREYXRhKGluaXREYXRhKTsKICAgICB1bnNpZ25lZCBrZXlJZENvdW50ID0ga2V5SWRzTWFw
LmZpcnN0OwpAQCAtMjA0LDkgKzIwNSwxMCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0
cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogCiAg
ICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRhLgogICAgIGlm
ICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCi0gICAgICAgIHJldHVybiBrZXlJZHM7CisgICAgICAg
IHJldHVybiBrZXlJZHMudGFrZSgpOwogCi0gICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEo
KTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3Vz
KCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogCiAgICAg
YXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJy
YXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yMjQsMTcgKzIyNiwxNyBAQCBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBpbml0RAogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUo
a2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJp
bmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0
YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25E
YXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgp
OwogfQogCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGljIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlk
cyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJ
ZHM7CiAKICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIFdlYk0gaW5pdERhdGEu
CiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBrZXlJZHM7Cisg
ICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpP
YmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3Jl
YXRlKCk7CkBAIC0yNDUsMTIgKzI0NywxMiBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0
cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQogICAg
IC8vIFRoZSBmb3JtYXQgaXMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcg
bWVtYmVyczoKICAgICAvLyAia2lkcyIKICAgICAvLyBBbiBhcnJheSBvZiBrZXkgSURzLiBFYWNo
IGVsZW1lbnQgb2YgdGhlIGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5jb2Rpbmcgb2YgdGhlIG9j
dGV0IHNlcXVlbmNlIGNvbnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4KLSAgICBrZXlJZHNBcnJh
eS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5kYXRhKCksIGlu
aXREYXRhLnNpemUoKSkpOworICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVu
Y29kZVRvU3RyaW5nKGluaXREYXRhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEu
c2l6ZSgpKSk7CiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNB
cnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0
ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0
aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0
YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAK
IENETUZhY3RvcnlDbGVhcktleSYgQ0RNRmFjdG9yeUNsZWFyS2V5OjpzaW5nbGV0b24oKQpAQCAt
Mzg4LDcgKzM5MCw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25z
KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6
OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBT
aGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAorYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0
aGUgaW5pdERhdGEgYnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0IGluIGtleWlkcyBjYXNlLgogICAg
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJrZXlpZHMi
KSAmJiBDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdChpbml0RGF0YSkpCkBAIC00MDUsNyAr
NDA3LDcgQEAgYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIC8vIFZhbGlkYXRl
IHRoZSByZXNwb25zZSBidWZmZXIgYXMgYW4gSlNPTiBvYmplY3QuCiAgICAgaWYgKCFDRE1VdGls
aXRpZXM6OnBhcnNlSlNPTk9iamVjdChyZXNwb25zZSkpCkBAIC00MzEsNyArNDMzLDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZUNsZWFyS2V5Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3Qg
Q0RNS2V5U3lzdGVtQ29uZmlndXIKICAgICBjYWxsYmFjayhzdWNjZWVkZWQpOwogfQogCi12b2lk
IENETUluc3RhbmNlQ2xlYXJLZXk6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZUNsZWFy
S2V5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
U3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgLy8gUmVqZWN0IHNldHRpbmcgYW55
IHNlcnZlciBjZXJ0aWZpY2F0ZS4KICAgICBjYWxsYmFjayhGYWlsZWQpOwpAQCAtNDUzLDcgKzQ1
NSw3IEBAIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNlQ2xlYXJLZXk6OmNy
ZWF0ZVNlc3Npb24oKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ0RNSW5zdGFuY2VTZXNzaW9u
Q2xlYXJLZXkoKnRoaXMpKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJh
Y2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAg
ICAgc3RhdGljIHVpbnQzMl90IHNfc2Vzc2lvbklkVmFsdWUgPSAwOwogICAgICsrc19zZXNzaW9u
SWRWYWx1ZTsKQEAgLTQ3NSw3ICs0NzcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFy
S2V5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaQogICAg
ICAgICB9KTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3Bv
bnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICNpZiBMT0dfRElTQUJM
RUQKICAgICAvLyBXZSBvbmx5IHVzZSB0aGUgc2VzaW9uIElEIGZvciBkZWJ1ZyBsb2dnaW5nLiBU
aGUgdmVyYm9zZSBwcmVwcm9jZXNzb3IgY2hlY2tzIGFyZSBiZWNhdXNlCkBAIC01NjYsNyArNTY4
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKICAgICBBU1NFUlQoc2Vzc2lvbklkID09IG1f
c2Vzc2lvbklEKTsKIAogICAgIGF1dG8gZGlzcGF0Y2hDYWxsYmFjayA9Ci0gICAgICAgIFt3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCAmY2FsbGJhY2tdKEtleVN0YXR1c1ZlY3RvciYmIGtl
eVN0YXR1c1ZlY3Rvciwgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdl
LCBTdWNjZXNzVmFsdWUgc3VjY2VzcykgeworICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgJmNhbGxiYWNrXShLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNWZWN0b3IsIHN0
ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIFN1Y2Nl
c3NWYWx1ZSBzdWNjZXNzKSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKAogICAgICAg
ICAgICAgICAgIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqd2Vha1RoaXMgfSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKSwga2V5U3RhdHVzVmVjdG9yID0gV1RGTW92ZShrZXlTdGF0dXNWZWN0
b3IpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc3VjY2Vzc10oKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTU3OSw3ICs1ODEsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZQogICAgIC8vIENvbnN0cnVjdCB0aGUgS2V5U3RhdHVzVmVjdG9y
IG9iamVjdCwgcmVwcmVzZW50aW5nIHJlbGVhc2VkIGtleXMsIGFuZCB0aGUgbWVzc2FnZSBpbiB0
aGUKICAgICAvLyAnbGljZW5zZSByZWxlYXNlJyBmb3JtYXQuCiAgICAgS2V5U3RhdHVzVmVjdG9y
IGtleVN0YXR1c1ZlY3RvciA9IG1fa2V5U3RvcmUuYWxsS2V5c0FzKENETUluc3RhbmNlU2Vzc2lv
bjo6S2V5U3RhdHVzOjpSZWxlYXNlZCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWVzc2Fn
ZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZTsKICAgICB7CiAg
ICAgICAgIC8vIENvbnN0cnVjdCBKU09OIHRoYXQgcmVwcmVzZW50cyB0aGUgJ2xpY2Vuc2UgcmVs
ZWFzZScgZm9ybWF0LCBjcmVhdGluZyBhICdraWRzJyBhcnJheQogICAgICAgICAvLyBvZiBiYXNl
NjRVUkwtZW5jb2RlZCBrZXkgSURzIGZvciBhbGwga2V5cyB0aGF0IHdlcmUgYXNzb2NpYXRlZCB3
aXRoIHRoaXMgc2Vzc2lvbi4KQEAgLTU5MywxNCArNTk1LDE0IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uQ2xlYXJLZXk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBMaWNlCiAgICAgICAgICAgICByb290T2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUo
YXJyYXkpKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIENvcHkgdGhlIEpTT04gZGF0YSBpbnRv
IGEgU2hhcmVkQnVmZmVyIG9iamVjdC4KKyAgICAgICAgLy8gQ29weSB0aGUgSlNPTiBkYXRhIGlu
dG8gYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIG9iamVjdC4KICAgICAgICAgU3RyaW5nIG1lc3Nh
Z2VTdHJpbmcgPSByb290T2JqZWN0LT50b0pTT05TdHJpbmcoKTsKICAgICAgICAgQ1N0cmluZyBt
ZXNzYWdlQ1N0cmluZyA9IG1lc3NhZ2VTdHJpbmcudXRmOCgpOwogICAgICAgICBtZXNzYWdlID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUobWVzc2FnZUNTdHJpbmcuZGF0YSgpLCBtZXNzYWdlQ1N0cmlu
Zy5sZW5ndGgoKSk7CiAgICAgfQogCiAgICAgbV9rZXlTdG9yZS51bnJlZkFsbEtleXMoKTsKLSAg
ICBkaXNwYXRjaENhbGxiYWNrKFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgUmVmPFNoYXJlZEJ1
ZmZlcj4oKm1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CisgICAgZGlzcGF0Y2hD
YWxsYmFjayhXVEZNb3ZlKGtleVN0YXR1c1ZlY3RvciksIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPigqbWVzc2FnZSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKIH0KIAogdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25DbGVhcktleTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmlu
ZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9j
bGVhcmtleS9DRE1DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAppbmRleCA5YzA3NDdkYzFiZDhlNjdmM2JhODY0
ZDliODExMzM3NjI1YzhhNjc5Li45ZTI3ZmU5MTJjNGRhMDY3ZmIyNmNhZmJjN2Y2YTY1MWRhNDc1
MjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9j
bGVhcmtleS9DRE1DbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKQEAgLTg2LDggKzg2LDggQEAgcHVibGlj
OgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRz
U2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Np
b25zKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZp
bmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVT
ZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiB9OwogCkBAIC05OSw3ICs5OSw3
IEBAIHB1YmxpYzoKICAgICAvLyBDRE1JbnN0YW5jZQogICAgIEltcGxlbWVudGF0aW9uVHlwZSBp
bXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5
cGU6OkNsZWFyS2V5OyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVy
cywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2
b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBz
ZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lv
bj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAtMTA5LDggKzEwOSw4IEBAIGNsYXNzIENETUlu
c3RhbmNlU2Vzc2lvbkNsZWFyS2V5IGZpbmFsIDogcHVibGljIENETUluc3RhbmNlU2Vzc2lvblBy
b3h5IHsKIHB1YmxpYzoKICAgICBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleShDRE1JbnN0YW5j
ZUNsZWFyS2V5JiBwYXJlbnQpCiAgICAgICAgIDogQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkocGFy
ZW50KSB7IH0KLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vu
c2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5n
JiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24o
TGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2Fs
bGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xv
c2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShj
b25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRF
bmNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmgKaW5kZXggZTk2OGU5ODVjN2VlY2VmZTQzNWFhOTIwNWM0NGRkMzVhZWQ4
ZTBkMC4uZWNmNGUwOGM5Yjk5MWFkZTI3M2JkNDRjNjBiYjE1ZmUwMTYzNWIxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmlj
LmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBLZXllZEVu
Y29kZXJHZW5lcmljIGZpbmFsIDogcHVibGljIEtleWVkRW5jb2RlciB7CiBwdWJsaWM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAppbmRl
eCA4YThjMTBiNzAyNGNmZTAzOGU5ZmE3YjcxNWJlMjY4ODlmYzA1ZTI4Li45MzdkMWZiNmYwYzhk
N2I1MWYxOGZmMTU1NjBiM2I5NGE3NGY2MWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAgLTI2LDE2ICsyNiwxNiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdCeXRlcyog
Ynl0ZXMpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEdC
eXRlcyogYnl0ZXMpCiB7CiAgICAgQVNTRVJUKGJ5dGVzKTsKICAgICBtX3NpemUgPSBnX2J5dGVz
X2dldF9zaXplKGJ5dGVzKTsKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50
OjpjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+KGJ5dGVzKSkgfSk7CiB9CiAKLVJlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMpCitSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJ5dGVzKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihieXRlcykpOwogfQog
CiBHUmVmUHRyPEdCeXRlcz4gU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IDlmYzRlYTgyZWJiYzc3ZWFk
OTAxMDg1NDM4MDgyOWUxNWJiYWI2ZjQuLmRjMWZiMTZlYTBiMTk2YzVkMTNiZDQxMTRlNTBjY2Rj
ZDliMzdjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTU5
LDcgKzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRm9udENhY2hlOwogY2xhc3Mg
Rm9udERlc2NyaXB0aW9uOwogY2xhc3MgR2x5cGhQYWdlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IEdseXBoRGF0YTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5o
CmluZGV4IDMwZGZhYTJkMmY4NWE5ZjdjZGEyMDA4MjlkZTE5OWIxNGU4NGIyMTkuLmZiYmNjYzQz
Njg0NDc0OTA4M2NlODkxZjM2M2Y2Y2M0MGYyOTc0NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTc0LDcgKzc0LDYg
QEAgaW50ZXJmYWNlIElEV3JpdGVGb250RmFjZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRm9udERlc2NyaXB0aW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiAvLyBUaGlzIGNsYXNz
IGlzIGNvbmNlcHR1YWxseSBpbW11dGFibGUuIE9uY2UgY3JlYXRlZCwgbm8gaW5zdGFuY2VzIHNo
b3VsZCBldmVyIGNoYW5nZSAoaW4gYW4gb2JzZXJ2YWJsZSB3YXkpLgogY2xhc3MgRm9udFBsYXRm
b3JtRGF0YSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5k
ZXggNGE4NTNlYjY0OTUzZDRhZTQ4MzRmODdjNTQ4N2FjZDM2NGM1N2Q4MS4uZTMyYTM2YzYwNzYx
OTIxNjhjNmEzNzkzMThmNzhhZTE3ODljNDgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgSW1hZ2U6OmlzUG9z
dFNjcmlwdFJlc291cmNlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgdXJsKQog
fQogCiAKLUVuY29kZWREYXRhU3RhdHVzIEltYWdlOjpzZXREYXRhKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCitFbmNvZGVkRGF0YVN0YXR1cyBJbWFn
ZTo6c2V0RGF0YShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKIHsKICAgICBtX2VuY29kZWRJbWFnZURhdGEgPSBXVEZNb3ZlKGRhdGEp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCA2YTA4MTY5
NTdhYTkzYzQxMWE1NmNkNGMyYmMyMGRkNmQ5MDQ0ZGVjLi42NTVkZmU3M2NmZjZhZDFkMDRmNDhi
YzIwMTllYmI4MDQxN2Q2MTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKQEAgLTcwLDcgKzcwLDcgQEAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgRmxv
YXRQb2ludDsKIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgTGVu
Z3RoOwogCiAvLyBUaGlzIGNsYXNzIGdldHMgbm90aWZpZWQgd2hlbiBhbiBpbWFnZSBjcmVhdGVz
IG9yIGRlc3Ryb3lzIGRlY29kZWQgZnJhbWVzIGFuZCB3aGVuIGl0IGFkdmFuY2VzIGFuaW1hdGlv
biBmcmFtZXMuCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgc3RkOjpv
cHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsg
fQogICAgIHZpcnR1YWwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQg
RW5jb2RlZERhdGFTdGF0dXMgc2V0RGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFbmNvZGVkRGF0YVN0YXR1
cyBzZXREYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKTsKICAgICB2aXJ0dWFsIEVuY29kZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2Vk
KGJvb2wgLyphbGxEYXRhUmVjZWl2ZWQqLykgeyByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OlVu
a25vd247IH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIHV0aSgpIGNvbnN0IHsgcmV0dXJuIFN0cmlu
ZygpOyB9IC8vIG51bGwgc3RyaW5nIGlmIHVua25vd24KQEAgLTEzMyw4ICsxMzMsOCBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveURlY29kZWREYXRhKGJvb2wgZGVzdHJveUFs
bCA9IHRydWUpID0gMDsKIAotICAgIFNoYXJlZEJ1ZmZlciogZGF0YSgpIHsgcmV0dXJuIG1fZW5j
b2RlZEltYWdlRGF0YS5nZXQoKTsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQorICAgIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGRhdGEoKSB7IHJldHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0K
KyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBjb2xvclNwYWNlKCk7CiAKQEAgLTIwOSw3ICsyMDksNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdCB7IHJldHVybiBD
b2xvcigpOyB9CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVk
SW1hZ2VEYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2VuY29kZWRJ
bWFnZURhdGE7CiAgICAgSW1hZ2VPYnNlcnZlciogbV9pbWFnZU9ic2VydmVyOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxUaW1lcj4gbV9hbmltYXRpb25TdGFydFRpbWVyOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4
IDRkZGI2ZGY4M2VjYjhiOWI3OTU3ZjQ2NjRlMTg0ZjAwODFlODEwMTEuLmRlMzNmMWFmNDEyZGMw
OGIyYjk2MWExOTQ5NDVjOWNjOTBhYTY2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaApAQCAtNjYsNyArNjYsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgYnVmZmVyLmdyb3co
YnVmZmVyU2l6ZSk7Ci0gICAgICAgIG1fcGl4ZWxzID0gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1fcGl4ZWxzID0gRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAg
ICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0
PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAg
ICAgICAgIG1fZnJhbWVSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBtX3NpemUpOwpAQCAtMjA2
LDcgKzIwNiw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBBU1NFUlQoIW1fc2l6ZS5pc0Vt
cHR5KCkgJiYgIWlzT3ZlclNpemUobV9zaXplKSk7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBi
dWZmZXIgeyBvdGhlci5tX3BpeGVscy0+ZGF0YSgpLCBvdGhlci5tX3BpeGVscy0+c2l6ZSgpIH07
Ci0gICAgICAgIG1fcGl4ZWxzID0gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdU
Rk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1fcGl4ZWxzID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX3BpeGVs
c1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPiht
X3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgfQogCkBAIC0yMzMsNyArMjMzLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIFBhY2tlZENvbG9yOjpBUkdCIHsgcmVzdWx0IH0udmFsdWU7CiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fcGl4ZWxzOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9waXhlbHM7CiAg
ICAgdWludDMyX3QqIG1fcGl4ZWxzUHRyIHsgbnVsbHB0ciB9OwogICAgIEludFNpemUgbV9zaXpl
OwogICAgIEludFJlY3QgbV9mcmFtZVJlY3Q7IC8vIFRoaXMgd2lsbCBhbHdheXMganVzdCBiZSB0
aGUgZW50aXJlIGJ1ZmZlciBleGNlcHQgZm9yIEdJRiBhbmQgUE5HIGZyYW1lcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggMDg2
OWU5OWEwMDg4NmY3Y2QxMjE4NmZlMzE2MWRlMDQ3ZmE1MTM2MS4uN2M1NDk0N2Y0ZDgxNDA4NTU5
Y2M0NWM0YWM0OWExOWI5ZmM4NmY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgSW1hZ2VE
ZWNvZGVyOjpjbGVhckZhY3RvcmllcygpCiB9CiAjZW5kaWYKIAotUmVmUHRyPEltYWdlRGVjb2Rl
cj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8SW1hZ2VEZWNvZGVyPiBJ
bWFnZURlY29kZXI6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgVU5VU0VEX1BB
UkFNKG1pbWVUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZURlY29kZXIuaAppbmRleCBhMWEwOGFkYzE3NWQ0NGJhYTQ0MmU0NGE5NGFhOTY3YTA0ZjVm
NjA3Li42YThmZmNiNjBmYzExNTZlYjg0ODc2ZGVmYjA3Y2JjMGIxMTk4NDk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaApAQCAtMzcsMTIg
KzM3LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSW1hZ2VEZWNvZGVyIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlRGVjb2Rlcj4gewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBj
cmVhdGUoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVj
b2Rlcj4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1
YWwgfkltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAogICAgIGVudW0gY2xhc3MgTWVkaWFUeXBl
IHsKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAg
ICB1c2luZyBTdXBwb3J0c01lZGlhVHlwZUZ1bmMgPSBGdW5jdGlvbjxib29sKE1lZGlhVHlwZSk+
OwogICAgIHVzaW5nIENhbkRlY29kZVR5cGVGdW5jID0gRnVuY3Rpb248Ym9vbChjb25zdCBTdHJp
bmcmKT47Ci0gICAgdXNpbmcgQ3JlYXRlSW1hZ2VEZWNvZGVyRnVuYyA9IEZ1bmN0aW9uPFJlZlB0
cjxJbWFnZURlY29kZXI+KFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIEFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik+OworICAgIHVzaW5nIENyZWF0ZUltYWdlRGVj
b2RlckZ1bmMgPSBGdW5jdGlvbjxSZWZQdHI8SW1hZ2VEZWNvZGVyPihGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKT47CiAKICAgICBzdHJ1Y3QgSW1hZ2VEZWNvZGVyRmFjdG9yeSB7CiAgICAgICAgIFN1
cHBvcnRzTWVkaWFUeXBlRnVuYyBzdXBwb3J0c01lZGlhVHlwZTsKQEAgLTEyOSw3ICsxMjksNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRFeHBlY3RlZENvbnRl
bnRTaXplKGxvbmcgbG9uZykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVm
ZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0
YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpID0gMDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IGQ4MWM0ODAx
OTI4NDZkZDdlMzIxYzJkZmJmYmYxZTBjMjBkYWE2NzEuLjMwNzc0MzMxNWE0MWVjYTFjOWIyYmM3
NzNkMDc5ZWU1ZDQzYmFmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgSW1hZ2VTb3VyY2U6On5JbWFn
ZVNvdXJjZSgpCiAgICAgQVNTRVJUKCZtX3J1bkxvb3AgPT0gJlJ1bkxvb3A6OmN1cnJlbnQoKSk7
CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVm
ZmVyKiBkYXRhKQorYm9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghZGF0YSB8fCBpc0RlY29kZXJB
dmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC05Niw3ICs5Niw3IEBAIGJvb2wg
SW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRhKQog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1
ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlU291cmNlOjpzZXRE
YXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ewogICAgIGlmICghZGF0YSB8fCAhZW5zdXJlRGVjb2RlckF2YWlsYWJsZShkYXRhKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTA0LDEzICsxMDQsMTMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0
YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIG1fZGVjb2Rl
ci0+c2V0RGF0YSgqZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJj
ZTo6cmVzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0
RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIG1fZGVjb2RlciA9IG51
bGxwdHI7CiAgICAgc2V0RGF0YShkYXRhLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKIH0KIAotRW5j
b2RlZERhdGFTdGF0dXMgSW1hZ2VTb3VyY2U6OmRhdGFDaGFuZ2VkKFNoYXJlZEJ1ZmZlciogZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCitFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZVNvdXJjZTo6
ZGF0YUNoYW5nZWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiB7CiAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGNsZWFy
TWV0YWRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5oCmluZGV4IDhhZjUwODBhMDBhOTkxNjA4MGYxZjBiMjc3MDczYzJhODUzNDUyNTguLjgx
NGYwZTEyZWJhYTQ4Zjg2YWNiNTIxOTczYzMxZDVkMzgyZjZmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtMzksNyArMzksNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCaXRtYXBJbWFnZTsKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dDsKIGNsYXNzIEltYWdlRGVjb2RlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEltYWdlU291cmNlIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPEltYWdlU291cmNlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEltYWdl
U291cmNlPiB7CiAgICAgZnJpZW5kIGNsYXNzIEJpdG1hcEltYWdlOwpAQCAtNTYsOSArNTYsOSBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlU291cmNlKFdURk1v
dmUobmF0aXZlSW1hZ2UpKSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIHZvaWQgcmVzZXREYXRhKFNoYXJl
ZEJ1ZmZlciogZGF0YSk7Ci0gICAgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQoU2hhcmVk
QnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCBzZXREYXRhKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2
b2lkIHJlc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBFbmNvZGVk
RGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCk7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpOwogCiAgICAg
dW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZWRTaXplOyB9CkBA
IC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAg
IFQgZmlyc3RGcmFtZU1ldGFkYXRhQ2FjaGVJZk5lZWRlZChUJiBjYWNoZWRWYWx1ZSwgTWV0YWRh
dGFUeXBlLCBUIChJbWFnZUZyYW1lOjoqZnVuY3RvcikoKSBjb25zdCwgSW1hZ2VGcmFtZTo6Q2Fj
aGluZywgY29uc3Qgc3RkOjpvcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgPSB7IH0pOwogCi0g
ICAgYm9vbCBlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAg
Ym9vbCBlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEp
OwogICAgIGJvb2wgaXNEZWNvZGVyQXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVy
OyB9CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoc2l6ZV90IGZyYW1lQ291bnQsIHNpemVf
dCBleGNsdWRlRnJhbWUpOwogICAgIHZvaWQgZGVjb2RlZFNpemVDaGFuZ2VkKGxvbmcgbG9uZyBk
ZWNvZGVkU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAK
aW5kZXggM2U1OWVhOWQwOGRkMWM5YmVlMjNiYTNmNjM1Y2YzNWJmYzI4MjI5Mi4uNTc3YmQ1MDhh
NWM0MDlmNGJlOWU0Y2YyMDJiODFlNjFlNDViNDRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01vZGVsLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+IGRh
dGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK1JlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2RlbChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKG1pbWVU
eXBlKSwgV1RGTW92ZSh1cmwpKSk7CiB9CiAKLU1vZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVmZmVy
PiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitNb2RlbDo6TW9kZWwoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiAgICAgOiBtX2RhdGEo
V1RGTW92ZShkYXRhKSkKICAgICAsIG1fbWltZVR5cGUoV1RGTW92ZShtaW1lVHlwZSkpCiAgICAg
LCBtX3VybChXVEZNb3ZlKHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuaAppbmRleCAwNjU4MTMzNzlmMTEyNTVkMmQ3YzdmNmI1MDM0NDNkYzYzMGQwNGUxLi5lNmJk
ZTE2NmY5NDRjZGU3ZGIzMjhjMjk3NmVjNjgyYWRiNmQxMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBNb2RlbCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVsPiB7CiBw
dWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxT
aGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxNb2RlbD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB+TW9kZWwoKTsKIAogICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGE7IH0KQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+IGRlY29kZShEZWNvZGVy
Jik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0
cmluZywgVVJMKTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdHJp
bmcsIFVSTCk7CiAKICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1f
bWltZVR5cGU7CkBAIC02MCw3ICs2MCw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lk
IE1vZGVsOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8
IHN0YXRpY19jYXN0PHNpemVfdD4obV9kYXRhLT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2Rl
Rml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAg
ZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKICAgICBlbmNvZGVyIDw8IG1fbWltZVR5cGU7CiAg
ICAgZW5jb2RlciA8PCBtX3VybDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXgg
NzQ1OWM1ODU4ZDI0ODdlZjJjNWZkMzcxNzM5ODZiMzM3MzRlYzI4YS4uODg2OTFkYzI1NmQ2ZGQ2
YzQ1ZjQ2ZTAxNTQ5Njc0MjQ1YWEzNTMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgK
QEAgLTUxLDggKzUxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVx
dWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlcXVlc3QpKTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJldHVybiB0cnVl
OyB9CiAgICAgdmlydHVhbCB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVu
c2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+
JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIC8vIFRoaXMgbWV0aG9k
IHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgdXNlcyBTaGFy
ZWRCdWZmZXIuCisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgeyBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CisgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIGJlIHJlbW92ZWQgb25j
ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB1c2VzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAg
ICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHBsYXRm
b3JtLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IGRhdGFSZWNlaXZlZChwbGF0
Zm9ybSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7IH0KICAgICB2aXJ0dWFs
IHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBs
YXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAppbmRleCBjNjExMmUxMTk0YzdjOTkwZmRj
MTE0ZTgyOWNmZGI1YzZhZjc1NGE5Li44YjA0ZjliZTk2YzM2ZTBhMjYyMTgwYTI1ZWEzNzQ1OTYy
YjNkN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAg
LTg2LDEyICs4NiwxMiBAQCBjb25zdCBBdG9tU3RyaW5nJiBDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc6OnNrZE5hbWUoKQogICAgIHJldHVybiBza2Q7CiB9CiAKLXN0YXRpYyBWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK3N0YXRpYyBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2lu
ZkRhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEpT
T04gb2YgdGhlIGZvcm1hdDogInsgc2luZjogWyA8YmFzZTY0LWVuY29kZWQtc3RyaW5nPiBdIH0i
CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgU3RyaW5nIGpzb24geyBidWZmZXIuZGF0
YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKKyAgICBTdHJpbmcg
anNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihidWZmZXIuc2l6ZSgpKSB9OwogCiAgICAgYXV0byB2YWx1ZSA9IEpTT046OlZhbHVlOjpw
YXJzZUpTT04oanNvbik7CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGF0
aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKCFzaW5mQXJyYXkpCiAgICAgICAgIHJldHVybiB7IH07
CiAKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IHNpbmZzOworICAgIFZlY3RvcjxSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHNpbmZzOwogICAgIHNpbmZzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoc2luZkFycmF5LT5sZW5ndGgoKSk7CiAKICAgICBmb3IgKGF1dG8mIHZhbHVlIDog
KnNpbmZBcnJheSkgewpAQCAtMTI0LDcgKzEyNCw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNoYXJl
ZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIH0K
IAogdXNpbmcgU2NoZW1lQW5kS2V5UmVzdWx0ID0gVmVjdG9yPHN0ZDo6cGFpcjxGb3VyQ0MsIFZl
Y3Rvcjx1aW50OF90Pj4+Owotc3RhdGljIFNjaGVtZUFuZEtleVJlc3VsdCBleHRyYWN0U2NoZW1l
QW5kS2V5SWRGcm9tU2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBTY2hl
bWVBbmRLZXlSZXN1bHQgZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJvbVNpbmYoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gYnVmZmVycyA9IGV4dHJhY3RT
aW5mRGF0YShidWZmZXIpOwogICAgIGlmICghYnVmZmVycy5zaXplKCkpCkBAIC0xNzAsOSArMTcw
LDkgQEAgc3RhdGljIFNjaGVtZUFuZEtleVJlc3VsdCBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9t
U2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1z
dGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7
CiAgICAgYXV0byByZXN1bHRzID0gZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJvbVNpbmYoYnVmZmVy
KTsKIAogICAgIGZvciAoYXV0byYgcmVzdWx0IDogcmVzdWx0cykgewpAQCAtMTgzLDcgKzE4Myw3
IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5CiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNp
bmYoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIENvbW1vbiBTSU5GIEJveCBG
b3JtYXQKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKQEAgLTE5MSwxNyArMTkxLDE3IEBAIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVT
aW5mKGNvbnN0IFNoYXJlZEJ1ZmZlCiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVT
a2QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNrZChjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAot
c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTa2QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTa2QoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEluIHRoZSAnc2tkJyBzY2hlbWUsIHRo
ZSBpbml0IGRhdGEgaXMgdGhlIGtleSBJRC4KLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7
CiAgICAga2V5SURzLmFwcGVuZChidWZmZXIuY29weSgpKTsKICAgICByZXR1cm4ga2V5SURzOwog
fQpAQCAtMzkzLDcgKzM5Myw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpz
dXBwb3J0c1Nlc3Npb25zKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAorYm9v
bCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0
RGF0YSkgY29uc3QKIHsKICAgICBpZiAoIXZhbGlkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGlu
aXREYXRhVHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQyMyw3ICs0MjMsNyBAQCBi
b29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIHJl
dHVybiByZXNwb25zZS5jb3B5KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVh
bWluZy5oCmluZGV4IGJjOTNmNmY2YTdiZGQwMWVmYmY1NWI2MmJkYjZhNGU2NmVmOTEyYjMuLjMx
N2JiOGQ1N2U4NmMwNjIxNGUwYjQwNTlkZGY0Zjg4MDdjNzRjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVh
bWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCkBAIC03MSwxNyArNzEsMTcgQEAgcHVibGljOgogICAg
IHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzU2Vy
dmVyQ2VydGlmaWNhdGVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Np
b25zKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc2luZk5hbWUoKTsKLSAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2luZihj
b25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2luZihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHNrZE5hbWUoKTsKLSAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURz
U2tkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVNrZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1Nr
ZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CiAKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPEZvdXJDQz4mIHZhbGlkRmFpclBsYXlT
dHJlYW1pbmdTY2hlbWVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCmluZGV4IDE1OWI5MGNk
YjQ4ZjdmZTQ0YmI0OWJlMmVjMWMxYzJmNDMyODY0MDAuLjU2YjU4YzI1YTI4NzA5ZmIzODIyMTgz
OWU1NWJhZTQ1ZWQ5M2NmNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaApAQCAtODQsNyArODQs
NyBAQCBwdWJsaWM6CiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6RmFpclBsYXlTdHJlYW1p
bmc7IH0KIAogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93
UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikg
ZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFn
ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VT
ZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CiAgICAgdm9pZCBzZXRDbGllbnQoV2Vha1B0
cjxDRE1JbnN0YW5jZUNsaWVudD4mJikgZmluYWw7CkBAIC05NCwxMCArOTQsMTAgQEAgcHVibGlj
OgogCiAgICAgTlNVUkwgKnN0b3JhZ2VVUkwoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2VVUkwu
Z2V0KCk7IH0KICAgICBib29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoKSBjb25zdCB7IHJldHVy
biBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQ7IH0KLSAgICBTaGFyZWRCdWZmZXIqIHNlcnZlckNl
cnRpZmljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZS5nZXQoKTsgfQor
ICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHNlcnZlckNlcnRpZmljYXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZS5nZXQoKTsgfQogICAgIEFWQ29udGVudEtleVNlc3Np
b24qIGNvbnRlbnRLZXlTZXNzaW9uKCk7CiAKLSAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVx
dWVzdD4gdGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSk7CisgICAg
UmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IHRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZv
ckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKTsKIAogICAgIC8vIEFWQ29udGVudEtleVNlc3Np
b25EZWxlZ2F0ZUNsaWVudAogICAgIHZvaWQgZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5
UmVxdWVzdCopIGZpbmFsOwpAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG91
dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb25DaGFuZ2VkKGJv
b2wpIGZpbmFsOwogICAgIHZvaWQgZXh0ZXJuYWxQcm90ZWN0aW9uU3RhdHVzRGlkQ2hhbmdlRm9y
Q29udGVudEtleVJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCopIGZpbmFsOwogCi0gICAgdXNp
bmcgS2V5cyA9IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgS2V5cyA9IFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAgIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvcktleUlEcyhjb25zdCBLZXlzJikg
Y29uc3Q7CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBz
ZXNzaW9uRm9yR3JvdXAoQVZDb250ZW50S2V5UmVwb3J0R3JvdXAqKSBjb25zdDsKICAgICBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JSZXF1ZXN0
KEFWQ29udGVudEtleVJlcXVlc3QqKSBjb25zdDsKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRl
OgogICAgIFdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+IG1fY2xpZW50OwogICAgIFJldGFpblB0
cjxBVkNvbnRlbnRLZXlTZXNzaW9uPiBtX3Nlc3Npb247CiAgICAgUmV0YWluUHRyPFdlYkNvcmVG
UFNDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlPiBtX2RlbGVnYXRlOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fc2VydmVyQ2VydGlmaWNhdGU7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IG1fc2VydmVyQ2VydGlmaWNhdGU7CiAgICAgYm9vbCBtX3BlcnNpc3RlbnRTdGF0
ZUFsbG93ZWQgeyB0cnVlIH07CiAgICAgUmV0YWluUHRyPE5TVVJMPiBtX3N0b3JhZ2VVUkw7CiAg
ICAgVmVjdG9yPFdlYWtQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDPj4gbV9zZXNzaW9uczsKQEAgLTE1MCw4ICsxNTAsOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
ICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbgotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5z
ZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2
b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAg
dm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihj
b25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJl
bW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9u
RGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCBlOWYy
YWEzMzVkYjlhYzU4Mzk1MTVkNjI1YTBkZjJmZjQwNzNlOTUzLi5iYTUwNjFlYmI1YzVmYmUwNzRk
M2EyOWRlYTRmOTE4ZmMyNjIxY2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMjE3
LDcgKzIxNyw3IEBAIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECiAgICAgcmV0dXJu
IEF0b21TdHJpbmcobnNJbml0VHlwZSk7CiB9CiAKLXN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBp
bml0aWFsaXphdGlvbkRhdGFGb3JSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqIHJlcXVlc3Qp
CitzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGluaXRpYWxpemF0aW9uRGF0YUZv
clJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCogcmVxdWVzdCkKIHsKICAgICBpZiAoIXJlcXVl
c3QpCiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwpAQCAtMjY1LDcgKzI2
NSw3IEBAIEFWQ29udGVudEtleVNlc3Npb24qIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpjb250ZW50S2V5U2Vzc2lvbigpCiAgICAgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsK
IH0KIAotUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IENETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjp0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlv
bkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBTaGFyZWRCdWZmZXImIGluaXRE
YXRhKQorUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IENETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjp0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlv
bkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBpbml0RGF0YSkKIHsKICAgICBmb3IgKGF1dG8gcmVxdWVzdEl0ZXIgPSBtX3VuZXhwZWN0
ZWRLZXlSZXF1ZXN0cy5iZWdpbigpOyByZXF1ZXN0SXRlciAhPSBtX3VuZXhwZWN0ZWRLZXlSZXF1
ZXN0cy5lbmQoKTsgKytyZXF1ZXN0SXRlcikgewogICAgICAgICBhdXRvJiByZXF1ZXN0ID0gKnJl
cXVlc3RJdGVyOwpAQCAtMzE2LDcgKzMxNiw3IEBAIHByaXZhdGU6CiAgICAgUmVzcG9uc2VNYXAg
bV9yZXNwb25zZXM7CiB9OwogCi1zdGF0aWMgUmVmUHRyPEpTT046OlZhbHVlPiBwYXJzZUpTT05W
YWx1ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBSZWZQdHI8SlNPTjo6VmFs
dWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICAvLyBGYWlsIG9uIGxhcmdlIGJ1ZmZlcnMgd2hvc2Ugc2l6ZSBkb2Vzbid0IGZpdCBp
bnRvIGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIuCiAgICAgc2l6ZV90IHNpemUgPSBidWZmZXIu
c2l6ZSgpOwpAQCAtMzI0LDcgKzMyNCw3IEBAIHN0YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBh
cnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZmZXIgY29udGVudHMgYXMgSlNPTiwgcmV0
dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4KLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZl
ci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaXplKSB9OworICAgIFN0cmluZyBqc29u
IHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHNpemUpIH07CiAKICAgICByZXR1cm4gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKIH0K
QEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNSwogICAgIGNhbGxiYWNr
KGluaXRpYWxpemUoKSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgc2VydmVyQ2Vy
dGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgc2VydmVyQ2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNh
bGxiYWNrKQogewogICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKICAg
ICBtX3NlcnZlckNlcnRpZmljYXRlID0gV1RGTW92ZShzZXJ2ZXJDZXJ0aWZpY2F0ZSk7CkBAIC01
ODUsOCArNTg1LDggQEAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
KiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzoKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgIGF1dG8gc2Vzc2lvbktleXMgPSBzZXNzaW9uSW50ZXJmYWNlLT5rZXlJ
RHMoKTsKLSAgICAgICAgaWYgKGFueU9mKHNlc3Npb25LZXlzLCBbJl0oY29uc3QgUmVmPFNoYXJl
ZEJ1ZmZlcj4mIHNlc3Npb25LZXkpIHsKLSAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1h
dGNoaW5nKFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYga2V5SUQpIHsKKyAgICAgICAgaWYg
KGFueU9mKHNlc3Npb25LZXlzLCBbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiBzZXNzaW9uS2V5KSB7CisgICAgICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRNYXRjaGluZyhb
Jl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBrZXlJRCkgewogICAgICAgICAg
ICAgICAgIHJldHVybiBrZXlJRC5nZXQoKSA9PSBzZXNzaW9uS2V5LmdldCgpOwogICAgICAgICAg
ICAgfSkgIT0gbm90Rm91bmQ7CiAgICAgICAgIH0pKQpAQCAtNjczLDcgKzY3Myw3IEBAIEtleXMg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjprZXlJRHMoKQogICAg
IHJldHVybiBrZXlJRHM7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRh
LCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNl
VHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAg
aWYgKCFpc0xpY2Vuc2VUeXBlU3VwcG9ydGVkKGxpY2Vuc2VUeXBlKSkgewogICAgICAgICBERUJV
R19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBmYWxzZSwgbGljZW5zZVR5cGUgXCIi
LCBsaWNlbnNlVHlwZSwgIlwiIG5vdCBzdXBwb3J0ZWQiKTsKQEAgLTcwOSwxMiArNzA5LDEyIEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0
TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW5pdGlhbGl6
YXRpb25EYXRhOwogCiAgICAgaWYgKGluaXREYXRhVHlwZSA9PSBDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc6OnNpbmZOYW1lKCkpCi0gICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IGluaXRE
YXRhLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgaW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERh
dGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGVsc2UgaWYgKGluaXRE
YXRhVHlwZSA9PSBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNrZE5hbWUoKSkKLSAgICAg
ICAgaWRlbnRpZmllciA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmlu
aXREYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
Z10pOworICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0
V2l0aERhdGE6aW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CiAjaWYgSEFWRShGQUlSUExBWVNUUkVB
TUlOR19DRU5DX0lOSVREQVRBKQogICAgIGVsc2UgaWYgKGluaXREYXRhVHlwZSA9PSBJbml0RGF0
YVJlZ2lzdHJ5OjpjZW5jTmFtZSgpKSB7Ci0gICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2
NEVuY29kZVRvU3RyaW5nKGluaXREYXRhLT5kYXRhKCksIGluaXREYXRhLT5zaXplKCkpOworICAg
ICAgICBhdXRvIHBzc2hTdHJpbmcgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbml0RGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBpbml0RGF0YS0+c2l6ZSgpKTsKICAgICAgICAgaW5pdGlh
bGl6YXRpb25EYXRhID0gW05TSlNPTlNlcmlhbGl6YXRpb24gZGF0YVdpdGhKU09OT2JqZWN0OkB7
IEAicHNzaCI6IChOU1N0cmluZyopcHNzaFN0cmluZyB9IG9wdGlvbnM6TlNKU09OV3JpdGluZ1By
ZXR0eVByaW50ZWQgZXJyb3I6bmlsXTsKICAgICB9CiAjZW5kaWYKQEAgLTczNiw3ICs3MzYsNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVz
dExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZQogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgaXNFcXVh
bChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUpCitzdGF0aWMg
Ym9vbCBpc0VxdWFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0
cmluZyYgdmFsdWUpCiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IGRhdGEudHJ5Q3JlYXRlQXJy
YXlCdWZmZXIoKTsKICAgICBpZiAoIWFycmF5QnVmZmVyKQpAQCAtNzU0LDcgKzc1NCw3IEBAIHN0
YXRpYyBib29sIGlzRXF1YWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQogICAgIHJldHVybiBzdHJpbmdPckV4Y2VwdGlvbi5yZXR1cm5WYWx1ZSgpID09IHZh
bHVlOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiByZXNwb25zZURhdGEsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQor
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIHJlc3BvbnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7
CiAgICAgaWYgKCFtX2V4cGlyZWRTZXNzaW9ucy5pc0VtcHR5KCkgJiYgaXNFcXVhbChyZXNwb25z
ZURhdGEsICJhY2tub3dsZWRnZWQiX3MpKSB7CiAgICAgICAgIGF1dG8qIGNlcnRpZmljYXRlID0g
bV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKTsKQEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICBhdXRvIGV4cGlyZWRTZXNzaW9ucyA9IGNyZWF0
ZU5TQXJyYXkobV9leHBpcmVkU2Vzc2lvbnMsIFtdIChhdXRvJiBkYXRhKSB7CiAgICAgICAgICAg
ICByZXR1cm4gZGF0YS5nZXQoKTsKICAgICAgICAgfSk7Ci0gICAgICAgIGF1dG8gYXBwSWRlbnRp
ZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgICAgICBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSByZW1vdmVQZW5kaW5n
RXhwaXJlZFNlc3Npb25SZXBvcnRzOmV4cGlyZWRTZXNzaW9ucy5nZXQoKSB3aXRoQXBwSWRlbnRp
ZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpzdG9yYWdlVVJM
XTsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHsgfSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQsIFN1Y2NlZWRlZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTg1Niw3ICs4NTYsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICAgICAgYXV0byBrZXlJRCA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoKmtleUlEVmVjdG9yKSk7CiAgICAgICAgICAgICBhdXRvIGZvdW5k
SW5kZXggPSBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmluZE1hdGNoaW5nKFsm
XSAoYXV0byYgcmVxdWVzdCkgewogICAgICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURz
Rm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4ga2V5SURz
LmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGlkKSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYgaWQpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlkLmdl
dCgpID09IGtleUlELmdldCgpOwogICAgICAgICAgICAgICAgIH0pICE9IG5vdEZvdW5kOwogICAg
ICAgICAgICAgfSk7CkBAIC04ODgsNyArODg4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkK
ICAgICAgICAgICAgICAgICBpZiAoIXBheWxvYWRWZWN0b3IpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBhdXRvIHBheWxvYWREYXRhID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcGF5bG9hZFZlY3RvcikpOwotICAgICAgICAgICAgICAg
IFtyZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5
UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tl
eVJlc3BvbnNlRGF0YTpwYXlsb2FkRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICAg
ICAgICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFW
Q29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlT
dHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpXV07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfTsKQEAgLTkwMSw3ICs5MDEsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
LCBMaQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJ
QkxFKExPR0lERU5USUZJRVIsICInc2luZicgaW5pdERhdGEsIHByb2Nlc3NpbmcgcmVzcG9uc2Ui
KTsKLSAgICAgICAgW21fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJzdCgpIHBy
b2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFz
cygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0
YTpyZXNwb25zZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXV07CisgICAgICAgIFttX2N1cnJl
bnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3Bv
bnNlOltQQUw6OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9u
c2VXaXRoRmFpclBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgIH0KIAogICAgIC8vIEZJ
WE1FKHJkYXI6Ly9wcm9ibGVtLzM1NTkyMjc3KTogc3Rhc2ggdGhlIGNhbGxiYWNrIGFuZCBjYWxs
IGl0IG9uY2UgQVZDb250ZW50S2V5UmVzcG9uc2Ugc3VwcG9ydHMgYSBzdWNjZXNzIGNhbGxiYWNr
LgpAQCAtOTM0LDcgKzkzNCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSBsaWNlbnNlCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVu
dGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8
TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpOwogICAgICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAg
ICAgIGZvciAoTlNEYXRhKiBleHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50
S2V5U2Vzc2lvbkNsYXNzKCkgcGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVu
dGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VV
UkxdKSB7CiAgICAgICAgICAgICBzdGF0aWMgY29uc3QgTlNTdHJpbmcgKlBsYXliYWNrU2Vzc2lv
bklkS2V5ID0gQCJQbGF5YmFja1Nlc3Npb25JRCI7CkBAIC05OTksNyArOTk5LDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25E
YXRhKGNvbnN0IFN0cmluZyYKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0
aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFJldGFp
blB0cjxOU011dGFibGVBcnJheT4gZXhwaXJlZFNlc3Npb25zQXJyYXkgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNoYW5n
ZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQQUw6
OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9y
dHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlB
dFVSTDpzdG9yYWdlVVJMXSkgewpAQCAtMTA4Niw3ICsxMDg2LDcgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29u
dGVudEtleVIKIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYg
KGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAg
ICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAg
ICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKTsKIAogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0KTsK
ICAgICBpZiAoa2V5SURzLmlzRW1wdHkoKSkgewpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1
ZXN0KEFWQ29udGVudEtleVIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJldGFpblB0
cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0
YSgpOworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZp
cnN0KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAg
ICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFw
cElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0
KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJy
b3IpIG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1Ro
aXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50
S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpAQCAt
MTE1Myw5ICsxMTUzLDkgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKIAogICAgIFJldGFpblB0
cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9p
bnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNl
cnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRp
ZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAotICAgIHVzaW5nIFJl
cXVlc3RzRGF0YSA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFJldGFp
blB0cjxOU0RhdGE+Pj47CisgICAgdXNpbmcgUmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFp
cjxSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIFJldGFpblB0cjxOU0RhdGE+Pj47CiAg
ICAgc3RydWN0IENhbGxiYWNrQWdncmVnYXRvciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3I+IHsKICAgICAgICAgdXNpbmcgQ2FsbGJhY2tGdW5j
dGlvbiA9IEZ1bmN0aW9uPHZvaWQoUmVxdWVzdHNEYXRhJiYpPjsKICAgICAgICAgc3RhdGljIFJl
ZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNyZWF0ZShDYWxsYmFja0Z1bmN0aW9uJiYgY29tcGxl
dGlvbkhhbmRsZXIpCkBAIC0xMTk2LDcgKzExOTYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRh
aQogICAgICAgICAgICAgYXV0byBlbnRyeSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
ICAgICAgICBhdXRvJiBrZXlJRCA9IHJlcXVlc3REYXRhLmZpcnN0OwogICAgICAgICAgICAgYXV0
byYgcGF5bG9hZCA9IHJlcXVlc3REYXRhLnNlY29uZDsKLSAgICAgICAgICAgIGVudHJ5LT5zZXRT
dHJpbmcoImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPmRhdGEoKSwga2V5SUQt
PnNpemUoKSkpOworICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRF
bmNvZGVUb1N0cmluZyhrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBrZXlJRC0+c2l6
ZSgpKSk7CiAgICAgICAgICAgICBlbnRyeS0+c2V0U3RyaW5nKCJwYXlsb2FkIiwgYmFzZTY0RW5j
b2RlVG9TdHJpbmcocGF5bG9hZC5nZXQoKS5ieXRlcywgcGF5bG9hZC5nZXQoKS5sZW5ndGgpKTsK
ICAgICAgICAgICAgIHJlcXVlc3RKU09OLT5wdXNoT2JqZWN0KFdURk1vdmUoZW50cnkpKTsKICAg
ICAgICAgfQpAQCAtMTIxMSw4ICsxMjExLDggQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAg
ICBAdHJ5IHsKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZh
bHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVx
dWVzdChyZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtl
eUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Ci0gICAgICAgICAgICBhdXRvIGNvbnRlbnRJ
ZGVudGlmaWVyID0ga2V5SUQtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICAgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7Cisg
ICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0Nv
bnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVu
dGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5k
bGVyOltrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yXSAoTlNEYXRhICpjb250ZW50
S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAg
ICBVTlVTRURfUEFSQU0oZXJyb3IpOwogICAgICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGFnZ3JlZ2F0b3Ip
LCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRh
KV0gKCkgbXV0YWJsZSB7CkBAIC0xMjQ5LDEwICsxMjQ5LDEwIEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0
KEFWQ29uCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChh
dXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAg
ICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAg
IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KG1fY3VycmVudFJlcXVl
c3QudmFsdWUoKSk7CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9
IGtleUlEcy5maXJzdCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBj
b250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKTsKICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0Nv
bnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVu
dGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5k
bGVyOlt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50
S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9y
ID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNv
bnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVj
b2RlckFWRk9iakMuaAppbmRleCAwMzM0ZDYyM2IyYTc2MDVjOWJlMTIyMTNiNWFiZGJiYWMyYjAz
ZjE1Li42MmI4M2ZiZmQ1Nzk0MDUwZWJjOTQwNjM3MDQ5MGJhMmIzZWMwODc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCkBAIC01Myw3ICs1Myw3IEBA
IGNsYXNzIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjsKIAogY2xhc3MgSW1hZ2VEZWNvZGVy
QVZGT2JqQyA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gY3JlYXRlKFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURlY29k
ZXJBVkZPYmpDPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAg
dmlydHVhbCB+SW1hZ2VEZWNvZGVyQVZGT2JqQygpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIGJvb2wgc3VwcG9ydHNNZWRpYVR5cGUoTWVkaWFUeXBlKTsKQEAgLTg2LDcgKzg2LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFs
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2
ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbDsKIApA
QCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPEltYWdl
RGVjb2Rlcjo6RnJhbWVJbmZvPiBmcmFtZUluZm9zKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAg
SW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIEltYWdlRGVj
b2RlckFWRk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKICAgICBBVkFz
c2V0VHJhY2sgKmZpcnN0RW5hYmxlZFRyYWNrKCk7CiAgICAgdm9pZCByZWFkU2FtcGxlcygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KaW5kZXggMDY5
NTE2YTA4M2Q1ZjRmNTEyNzI5NzQ1MGUxYzlhMTBjYzE0ZjRiZi4uMzVjNmNlNjdlODVmODZhZTE2
NGMyMWE3MjYwN2ZjMDY1ZWNiNTA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tCkBAIC0yODksNyArMjg5LDcgQEAgSW1hZ2VEZWNvZGVyQVZGT2Jq
Q1NhbXBsZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRlcikKIAogI3ByYWdtYSBtYXJrIC0gSW1hZ2VE
ZWNvZGVyQVZGT2JqQwogCi1SZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gSW1hZ2VEZWNvZGVy
QVZGT2JqQzo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IElt
YWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgLy8g
QVZGb3VuZGF0aW9uIG1heSBub3QgYmUgYXZhaWxhYmxlIGF0IHJ1bnRpbWUuCiAgICAgaWYgKCFB
VkFzc2V0TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkuaXNBdmFpbGFibGUoKSkKQEAgLTMwMSw3
ICszMDEsNyBAQCBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gSW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29ucwogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEltYWdlRGVjb2RlckFWRk9iakMoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogfQogCi1JbWFnZURlY29kZXJBVkZPYmpDOjpJbWFn
ZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorSW1hZ2VEZWNvZGVy
QVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pCiAgICAgOiBJbWFnZURlY29kZXIoKQogICAgICwgbV9taW1lVHlwZShtaW1lVHlw
ZSkKICAgICAsIG1fdXRpKFdlYkNvcmU6OlVUSUZyb21NSU1FVHlwZShtaW1lVHlwZSkpCkBAIC0z
MDksNyArMzA5LDcgQEAgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhT
aGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVQKICAgICAsIG1fbG9hZGVyKGFk
b3B0TlMoW1tXZWJDb3JlU2hhcmVkQnVmZmVyUmVzb3VyY2VMb2FkZXJEZWxlZ2F0ZSBhbGxvY10g
aW5pdFdpdGhQYXJlbnQ6dGhpc10pKQogICAgICwgbV9kZWNvbXByZXNzaW9uU2Vzc2lvbihXZWJD
b3JlRGVjb21wcmVzc2lvblNlc3Npb246OmNyZWF0ZVJHQigpKQogewotICAgIFttX2xvYWRlciB1
cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6Tk9dOworICAgIFtt
X2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCkgY29tcGxldGU6Tk9dOwogCiAgICAgW21fYXNzZXQuZ2V0KCkucmVzb3VyY2VMb2FkZXIg
c2V0RGVsZWdhdGU6bV9sb2FkZXIuZ2V0KCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1
ZShESVNQQVRDSF9RVUVVRV9QUklPUklUWV9ERUZBVUxULCAwKV07CiAgICAgW21fYXNzZXQgbG9h
ZFZhbHVlc0FzeW5jaHJvbm91c2x5Rm9yS2V5czpAW0AidHJhY2tzIl0gY29tcGxldGlvbkhhbmRs
ZXI6W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSBtdXRhYmxlIHsKQEAgLTY0MSw5
ICs2NDEsOSBAQCB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldEV4cGVjdGVkQ29udGVudFNp
emUobG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCiAgICAgbV9sb2FkZXIuZ2V0KCkuZXhw
ZWN0ZWRDb250ZW50U2l6ZSA9IGV4cGVjdGVkQ29udGVudFNpemU7CiB9CiAKLXZvaWQgSW1hZ2VE
ZWNvZGVyQVZGT2JqQzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQordm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewotICAgIFttX2xvYWRlciB1
cGRhdGVEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2Vp
dmVkXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOmFsbERhdGFSZWNlaXZlZF07CiAKICAgICBpZiAo
YWxsRGF0YVJlY2VpdmVkKSB7CiAgICAgICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDIwMGUxYThmOWFmYmEwZmNiYmE1YjBhM2VkNzA0Y2Qz
NDFiNDUwZDYuLmM5ZDliMmE5Njg1YjAxZTkxYWFhMDBjMGUwMDMwNzczODU2OTE0MmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLmgKQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgSW5iYW5kTWV0YWRhdGFU
ZXh0VHJhY2tQcml2YXRlQVZGOwogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNzIE1l
ZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDOwogY2xhc3MgUGl4ZWxCdWZmZXJDb25mb3JtZXJDVjsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFz
cyBWaWRlb0xheWVyTWFuYWdlck9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM7
CiBjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI7CkBAIC00MjYsNyArNDI2LDcgQEAgcHJp
dmF0ZToKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1fd2FsbENsb2NrQXRD
YWNoZWRDdXJyZW50VGltZTsKICAgICBtdXRhYmxlIGludCBtX3RpbWVDb250cm9sU3RhdHVzQXRD
YWNoZWRDdXJyZW50VGltZSB7IDAgfTsKICAgICBtdXRhYmxlIGRvdWJsZSBtX3JlcXVlc3RlZFJh
dGVBdENhY2hlZEN1cnJlbnRUaW1lIHsgMCB9OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
a2V5SUQ7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fa2V5SUQ7CiAgICAg
ZG91YmxlIG1fY2FjaGVkUmF0ZSB7IDAgfTsKICAgICBib29sIG1fcmVxdWVzdGVkUGxheWluZyB7
IGZhbHNlIH07CiAgICAgZG91YmxlIG1fcmVxdWVzdGVkUmF0ZSB7IDEuMCB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KaW5kZXggZDE4YTg1YTc5NGY1MjNmOTQ5MTJlMjdmMDhiN2NjYmU4OTNjOGVk
MC4uYjFjNjA3OWM2NDg3MGY4OGUzNWM4MDgxMWE1YjE4YmRhMWI3ZjYxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCkBAIC0yNzkyLDcgKzI3OTIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFu
YwogICAgIGlmICghbV9rZXlJRCB8fCAhbV9jZG1JbnN0YW5jZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3RhbmNlLT5zZXNzaW9uRm9yS2V5
SURzKFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj46OmZyb20oKm1fa2V5SUQpKTsKKyAgICBhdXRv
IGluc3RhbmNlU2Vzc2lvbiA9IG1fY2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMoVmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmZyb20oKm1fa2V5SUQpKTsKICAgICBpZiAo
IWluc3RhbmNlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRleCBkOTYwYWZkY2Ey
MTRiZmE0NDBlZWEyMDg4M2JjYTkxMzJlMjJmOWEwLi40ZGQ2YjkxYTk0ODMxNjlhMDIzNjg4OGQw
ZTRkODJmZmI4MzY2NjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTIxMyw3ICsyMTMsNyBAQCBTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQygpCiB2b2lkIFNvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEoU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgQXBwZW5kRmxhZ3MgZmxhZ3Mp
CiB7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBzZWdtZW50LnRha2VTaGFyZWRCdWZmZXIoKTsK
LSAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgYXV0
byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
OwogICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVzZXQgfHwgZmxhZ3MgPT0gQXBwZW5kRmxhZ3M6
OkRpc2NvbnRpbnVpdHkpCiAgICAgICAgIFttX3BhcnNlciBhcHBlbmRTdHJlYW1EYXRhOm5zRGF0
YS5nZXQoKSB3aXRoRmxhZ3M6QVZTdHJlYW1EYXRhUGFyc2VyU3RyZWFtRGF0YURpc2NvbnRpbnVp
dHldOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IDAzNDIwZjEzODM2NGZhYzIwOTFlMTA0ZDEzNmZmMzhh
MWZiOWZlMjIuLjc1NGIxZTJlZWMwMmRmMzM5NWU1Y2RiNWMwN2Y4ZTg4YTkzNWNkMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
aApAQCAtNzMsNyArNzMsNyBAQCBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZTsKIGNsYXNzIEF1ZGlv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOwogY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFzcyBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb247Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQ0Vycm9yQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTIy
MSw3ICsyMjEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQogICAgIFJlZlB0cjxDRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4gbV9jZG1JbnN0YW5jZTsKLSAgICBWZWN0b3I8UmVmPFNo
YXJlZEJ1ZmZlcj4+IG1fa2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+IG1fa2V5SURzOwogI2VuZGlmCiAKICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4g
bV9jYWNoZWRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIuaAppbmRleCBmMGQ4ZTcxMTMyZjZjMjg3YTJlNjI5YTRiODhhNTM5ZGZkNTNj
YmUyLi4wZWZlZWFlZjViMmQ3MWJjNmQ2NzA0ZGQxYjk3NWFjYmFlMTEzYmJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaApAQCAtNDMs
NyArNDMsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOwogY2xh
c3MgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIgOiBwdWJs
aWMgUmVmQ291bnRlZDxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2
ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBS
ZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2b2lkIG5ld0Rh
dGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIG5ld0RhdGFT
dG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAg
ICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVudDsKICAgICBSZXRh
aW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IG1fYXZSZXF1ZXN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4
IGEyMmE5OTdiMTEwNzlkNDY1ODZhYTY0ODU2MWJiZjcyYTZmMjQ3ZjAuLmY5MjFmM2RhMGU2OWIz
Mzk5NzdjOWUzZTQ5NjY3YTI4ZjVlOTVjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTE1NiwxNCArMTU2LDE0IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgZmluYWwgeyBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQogICAgIGJv
b2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGRhdGFTZW50
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9u
ZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
ZmluYWw7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgbG9hZEZhaWxlZChl
cnJvcik7IH0KICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgbG9hZEZhaWxlZChlcnJvcik7IH0KICAg
ICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbCB7IGxvYWRGaW5pc2hlZCgpOyB9CiAKICAgICBXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2U+IG1fcmVzb3VyY2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07CiAKIFdlYWtQdHI8UGxhdGZvcm1SZXNv
dXJjZU1lZGlhTG9hZGVyPiBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmNyZWF0ZShXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXImIHBhcmVudCwgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVy
JiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMTEsMTMgKzIxMSwxMCBA
QCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAgICBt
X3BhcmVudC5sb2FkRmluaXNoZWQoKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFM
b2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1fYnVmZmVyID0gV1RG
TW92ZShidWZmZXIpOwotICAgIGVsc2UKLSAgICAgICAgbV9idWZmZXItPmFwcGVuZChXVEZNb3Zl
KGJ1ZmZlcikpOwotICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9i
dWZmZXIpOworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fcGFy
ZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQogCiBj
bGFzcyBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxE
YXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcj4gewpAQCAtMzg4LDcgKzM4NSw3IEBAIHZvaWQgV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIHN0b3BMb2FkaW5nKCk7
CiB9CiAKLXZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFy
ZWRCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewogICAgIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdEYXRhUmVxdWVzdCogZGF0
YVJlcXVlc3QgPSBbbV9hdlJlcXVlc3QgZGF0YVJlcXVlc3RdOwogICAgIGlmICghZGF0YVJlcXVl
c3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggZGI0NTdhODFkM2VlODI5MWI5
MDVlOWJhNzdjMWUyYWYzMDllMGNiMi4uOTQxOWJjZWEzOGRiZjhkNjQ5MmY2ODAxZDlhMjE1NjIz
NjZhMmM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzEsMTAgKzMxLDEx
IEBAIHR5cGVkZWYgc3RydWN0IEZUX0ZhY2VSZWNfKiAgRlRfRmFjZTsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0
OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm9u
dFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRp
bmdzOwogCkBAIC00NSw3ICs0Niw3IEBAIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKIHB1YmxpYzoKLSAgICBGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKEZUX0ZhY2UsIFNoYXJlZEJ1ZmZlciYpOworICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
RlRfRmFjZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIH5Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhKCkgPSBkZWZhdWx0OwogICAgIEZvbnRQbGF0Zm9ybURhdGEgZm9udFBsYXRmb3JtRGF0
YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBG
b250Q3JlYXRpb25Db250ZXh0Jik7CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGb3JtYXQoY29u
c3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYTM0NGJiZWNkYTlmZmU2N2Q0ZThkM2U0NWUy
ZDA0YmVkM2Q1MGMwNi4uYjZkM2ViMzYzMTEyNDQ2MTNiMzgwM2YyZjNkMjRkMzA4N2VhMjRlNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmNwcApAQCAtMjQ0LDE2ICsyNDQsMTYgQEAgc2l6ZV90IHNoYXJlZEJ1ZmZlckdl
dEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9u
LAogCiB2b2lkIHNoYXJlZEJ1ZmZlclJlbGVhc2Uodm9pZCogaW5mbykKIHsKLSAgICBTaGFyZWRC
dWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOwor
ICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBzaGFyZWRCdWZmZXItPmRlcmVmKCk7
CiB9CiAjZW5kaWYKIAotSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorSW1hZ2VE
ZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQotICAgICAg
ICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEuY3Jl
YXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICAgICAgdXRpSGludCA9
IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgCiAgICAg
aWYgKHV0aUhpbnQpIHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5ID0ga0NHSW1hZ2VTb3VyY2VU
eXBlSWRlbnRpZmllckhpbnQ7CkBAIC01NjIsMjMgKzU2MiwyNCBAQCBQbGF0Zm9ybUltYWdlUHRy
IEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1
YnNhbXBsaQogICAgIHJldHVybiBtYXNrZWRJbWFnZSA/IG1hc2tlZEltYWdlIDogaW1hZ2U7CiB9
CiAKLXZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgbV9pc0Fs
bERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZlZDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBz
ZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2Uu
Ci0gICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5z
aWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcwot
ICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCi0gICAgQ0dJbWFnZVNv
dXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLmNyZWF0ZUNGRGF0YSgp
LmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lk
ZSB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8g
d2l0aG91dCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KKyAgICAvLyBX
ZSB1c2UgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5z
aWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcwor
ICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgorICAg
IENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNl
bHNlCi0gICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVm
ZmVyLgotICAgIGRhdGEucmVmKCk7Ci0gICAgLy8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRp
b24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdldEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIFNo
YXJlZEJ1ZmZlcgorICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIuCisgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICBjb250aWd1b3VzRGF0YS5nZXQoKS5yZWYoKTsKKyAgICAvLyBX
ZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0
Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgogICAgIC8vIGRv
ZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1
YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMgYSByZXF1aXJlbWVu
dCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgogICAgIENHRGF0YVByb3Zp
ZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRC
dWZmZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKLSAgICBSZXRh
aW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJv
dmlkZXJDcmVhdGVEaXJlY3QoJmRhdGEsIGRhdGEuc2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3Mp
KTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0
Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoY29udGlndW91c0RhdGEucHRyKCksIGRhdGEu
c2l6ZSgpLCAmcHJvdmlkZXJDYWxsYmFja3MpKTsKICAgICBDR0ltYWdlU291cmNlVXBkYXRlRGF0
YVByb3ZpZGVyKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YVByb3ZpZGVyLmdldCgpLCBhbGxE
YXRhUmVjZWl2ZWQpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAppbmRleCA5NzQwNzM2YTIxYWM5OThhYjA1
ZjFjOWI0ZjViMTY3NWU0NGQyYzkxLi5hMGFjMWMyZmJlZTUyN2U1YWIxMTE0NTU4MTJiZGI3MzYz
YTA1NTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmgKQEAgLTMyLDkgKzMyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgSW1hZ2VEZWNvZGVyQ0cgZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJbWFnZURlY29kZXJDRyhTaGFy
ZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7
CisgICAgSW1hZ2VEZWNvZGVyQ0coRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAotICAgIHN0YXRpYyBSZWY8SW1h
Z2VEZWNvZGVyQ0c+IGNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKKyAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2RlckNHPiBjcmVhdGUoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyQ0coZGF0YSwgYWxwaGFPcHRpb24sIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiAgICAgfQpAQCAtNjQsNyArNjQsNyBAQCBwdWJs
aWM6CiAKICAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVf
dCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERl
Y29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91
cykpIGZpbmFsOwogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2Vp
dmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZv
aWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5j
cHAKaW5kZXggMzFjMjdjMDY5YjJiM2M3MDM3MzJlYjcxM2IyNjMxMjg0MjEyNGU2ZS4uZmY3N2I1
M2U5ZDY5ZmM0NzA0NTEyNDcwMmYxYTM0ZjBmMmQ4N2NlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAg
LTMxOSw3ICszMTksNyBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0
YShib29sKQogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsK
LSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0Yo
Q0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0
KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9IGFk
b3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKICAgICBtX2RvY3VtZW50ID0gYWRvcHRDRihD
R1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKGRhdGFQcm92aWRlci5nZXQoKSkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDM1OWVkYjQxNWZkMzc1ZWQ4
MmI3YjRhNDlmMTFlNGM4ZmQ2YzdkNmIuLmRlNmRlYmUyYmQ0Y2ExMzYwNDBmYzBjM2E0NWRjNGVh
MzlmNDg5ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0zNjUsOSAr
MzY1LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a1dvdWxkQmxv
Y2spOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIEZyZWVEYXRhU2VnbWVudCh2b2lkKiByZWZj
b24sIHZvaWQqLCBzaXplX3QpCisgICAgc3RhdGljIHZvaWQgRnJlZVNoYXJlZEJ1ZmZlcih2b2lk
KiByZWZjb24sIHZvaWQqLCBzaXplX3QpCiAgICAgewotICAgICAgICBhdXRvKiBidWZmZXIgPSBy
ZWludGVycHJldF9jYXN0PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQqPihyZWZjb24pOworICAg
ICAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHJlZmNv
bik7CiAgICAgICAgIGJ1ZmZlci0+ZGVyZWYoKTsKICAgICB9CiAKQEAgLTQwOCwxMSArNDA4LDgg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIGxhc3RSZWFkID0gcmVhZFJlc3VsdC52YWx1ZSgp
OwogICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uT2Zmc2V0ID0gMDsKICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHNoYXJlZEJ1ZmZlci0+aGFzT25lU2VnbWVu
dCgpLCAiQ2FuIG9ubHkgZGVhbCB3aXRoIHNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGEgc2luZ2xl
IERhdGFTZWdtZW50Iik7Ci0gICAgICAgICAgICAgICAgLy8gQSBTaGFyZWRCdWZmZXIgZG9lc24n
dCBoYXZlIHRocmVhZC1zYWZlIHJlZmNvdW50aW5nLCBhcyBzdWNoIHdlIG11c3Qga2VlcCBhIHJl
ZmVyZW5jZSB0byB0aGUgRGF0YVNlZ21lbnQgaW5zdGVhZC4KICAgICAgICAgICAgICAgICAvLyBU
T0RPOiBjb3VsZCB3ZSBvbmx5IGNyZWF0ZSBhIG5ldyBDTUJsb2NrQnVmZmVyIGlmIHRoZSBiYWNr
ZW5kIG1lbW9yeSBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBvbmU/Ci0gICAgICAgICAgICAg
ICAgYXV0byBmaXJzdFNlZ21lbnQgPSBzaGFyZWRCdWZmZXItPmJlZ2luKCktPnNlZ21lbnQ7Ci0g
ICAgICAgICAgICAgICAgc2l6ZV90IGNhblJlYWQgPSBzdGQ6Om1pbjxzaXplX3Q+KG51bVRvUmVh
ZCwgZmlyc3RTZWdtZW50LT5zaXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCk7CisgICAg
ICAgICAgICAgICAgc2l6ZV90IGNhblJlYWQgPSBzdGQ6Om1pbjxzaXplX3Q+KG51bVRvUmVhZCwg
c2hhcmVkQnVmZmVyLT5zaXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCk7CiAgICAgICAg
ICAgICAgICAgLy8gRnJvbSBDTUJsb2NrQnVmZmVyQ3VzdG9tQmxvY2tTb3VyY2UgZG9jdW1lbnRh
dGlvbjoKICAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgZm9yIDY0LWJpdCBhcmNoaXRlY3R1
cmVzLCB0aGlzIHN0cnVjdCBjb250YWlucyBtaXNhbGlnbmVkIGZ1bmN0aW9uIHBvaW50ZXJzLgog
ICAgICAgICAgICAgICAgIC8vIFRvIGF2b2lkIGxpbmstdGltZSBpc3N1ZXMsIGl0IGlzIHJlY29t
bWVuZGVkIHRoYXQgY2xpZW50cyBmaWxsIENNQmxvY2tCdWZmZXJDdXN0b21CbG9ja1NvdXJjZSdz
IGZ1bmN0aW9uIHBvaW50ZXIgZmllbGRzCkBAIC00MjAsMTAgKzQxNywxMCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgQ01CbG9ja0J1ZmZlckN1c3RvbUJsb2NrU291cmNlIGFsbG9jYXRvcjsK
ICAgICAgICAgICAgICAgICBhbGxvY2F0b3IudmVyc2lvbiA9IDA7CiAgICAgICAgICAgICAgICAg
YWxsb2NhdG9yLkFsbG9jYXRlQmxvY2sgPSBudWxscHRyOwotICAgICAgICAgICAgICAgIGFsbG9j
YXRvci5GcmVlQmxvY2sgPSBGcmVlRGF0YVNlZ21lbnQ7Ci0gICAgICAgICAgICAgICAgYWxsb2Nh
dG9yLnJlZkNvbiA9IGZpcnN0U2VnbWVudC5wdHIoKTsKLSAgICAgICAgICAgICAgICBmaXJzdFNl
Z21lbnQtPnJlZigpOwotICAgICAgICAgICAgICAgIGF1dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVm
ZmVyQ3JlYXRlV2l0aE1lbW9yeUJsb2NrKG51bGxwdHIsIHN0YXRpY19jYXN0PHZvaWQqPihjb25z
dF9jYXN0PHVpbnQ4X3QqPihmaXJzdFNlZ21lbnQtPmRhdGEoKSkpLCBmaXJzdFNlZ21lbnQtPnNp
emUoKSwgbnVsbHB0ciwgJmFsbG9jYXRvciwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQsIGNhblJl
YWQsIDAsICZyYXdCbG9ja0J1ZmZlcik7CisgICAgICAgICAgICAgICAgYWxsb2NhdG9yLkZyZWVC
bG9jayA9IEZyZWVTaGFyZWRCdWZmZXI7CisgICAgICAgICAgICAgICAgYWxsb2NhdG9yLnJlZkNv
biA9IHNoYXJlZEJ1ZmZlci5nZXQoKTsKKyAgICAgICAgICAgICAgICBzaGFyZWRCdWZmZXItPnJl
ZigpOworICAgICAgICAgICAgICAgIGF1dG8gZXJyID0gUEFMOjpDTUJsb2NrQnVmZmVyQ3JlYXRl
V2l0aE1lbW9yeUJsb2NrKG51bGxwdHIsIHN0YXRpY19jYXN0PHZvaWQqPihjb25zdF9jYXN0PHVp
bnQ4X3QqPihzaGFyZWRCdWZmZXItPmRhdGEoKSkpLCBzaGFyZWRCdWZmZXItPnNpemUoKSwgbnVs
bHB0ciwgJmFsbG9jYXRvciwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQsIGNhblJlYWQsIDAsICZy
YXdCbG9ja0J1ZmZlcik7CiAgICAgICAgICAgICAgICAgaWYgKGVyciAhPSBrQ01CbG9ja0J1ZmZl
ck5vRXJyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVu
b3VnaE1lbW9yeSk7CiAgICAgICAgICAgICAgICAgbGFzdFJlYWQgPSBjYW5SZWFkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCA0MDI1ZTA2OTJkYzVh
MTVlOTczNjk1ODAzMzNmNmZhM2I5YmZiZDRiLi5iYTYwNWRjYjMxZDUyOTQ3YWMyYTcxNDZjMWRl
ODQwY2Q0YTQ4NzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmNwcApAQCAtNzM3LDcgKzczNyw3IEBAIERpZENoYW5nZUl0ZW1CdWZmZXIgSXRlbUJ1ZmZlcjo6
c3dhcFdyaXRhYmxlQnVmZmVySWZOZWVkZWQoc2l6ZV90IG51bWJlck9mQnl0ZXMpCiB2b2lkIEl0
ZW1CdWZmZXI6OmFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIHRlbXBvcmFyeUl0ZW0pCiB7
CiAgICAgYXV0byByZXF1aXJlZFNpemVGb3JJdGVtID0gbV93cml0aW5nQ2xpZW50LT5yZXF1aXJl
ZFNpemVGb3JJdGVtKHRlbXBvcmFyeUl0ZW0pOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG91
dE9mTGluZUl0ZW07CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG91dE9mTGlu
ZUl0ZW07CiAgICAgaWYgKCFyZXF1aXJlZFNpemVGb3JJdGVtKSB7CiAgICAgICAgIG91dE9mTGlu
ZUl0ZW0gPSBtX3dyaXRpbmdDbGllbnQtPmVuY29kZUl0ZW1PdXRPZkxpbmUodGVtcG9yYXJ5SXRl
bSk7CiAgICAgICAgIGlmICghb3V0T2ZMaW5lSXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuaAppbmRleCBjODczMTk4MmVmODM5MzFiYmFlMzFiNzg2NTBhYzBkYTIw
YTA1ZmM1Li5iMzFiYzVmZDRlOTIxNGIxNWEzNzYxZmJlOThkNjBjZWI0N2E5OGYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCkBAIC0xMDIsNyArMTAyLDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAotICAgIHZpcnR1
YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5
TGlzdEl0ZW0mKSBjb25zdAorICAgIHZpcnR1YWwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTE2OCw3ICsxNjgsNyBAQCBw
dWJsaWM6CiAgICAgLy8gd2l0aCBwYWRkaW5nIGJldHdlZW4gZWFjaCBpdGVtIHRvIGVuc3VyZSB0
aGF0IGFsbCBpdGVtcyBhcmUgYWxpZ25lZCB0byA4IGJ5dGVzLgogICAgIC8vCiAgICAgLy8gSWYg
YSB3cml0aW5nIGNsaWVudCBpcyBwcmVzZW50IGFuZCByZXF1aXJlcyBjdXN0b20gZW5jb2Rpbmcg
Zm9yIHRoZSBnaXZlbiBpdGVtIHR5cGUgVCwgdGhlCi0gICAgLy8gaXRlbSBidWZmZXIgd2lsbCBh
c2sgdGhlIGNsaWVudCBmb3IgYW4gb3BhcXVlIFNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGVuY29k
ZWQgZGF0YSBmb3IgdGhlCisgICAgLy8gaXRlbSBidWZmZXIgd2lsbCBhc2sgdGhlIGNsaWVudCBm
b3IgYW4gb3BhcXVlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgY29udGFpbmluZyBlbmNvZGVkIGRh
dGEgZm9yIHRoZQogICAgIC8vIGl0ZW0uIFRoaXMgZW5jb2RlZCBkYXRhIGlzIHRoZW4gYXBwZW5k
ZWQgdG8gdGhlIGl0ZW0gYnVmZmVyLCB3aXRoIHBhZGRpbmcgdG8gZW5zdXJlIHRoYXQKICAgICAv
LyB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0aGlzIGRhdGEgYXJlIGFsaWduZWQgdG8gOCBieXRlcywg
aWYgbmVjZXNzYXJ5LiBXaGVuIGNvbnN1bWluZyBlbmNvZGVkCiAgICAgLy8gaXRlbSBkYXRhLCBh
IGNvcnJlc3BvbmRpbmcgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgd2lsbCBiZSByZXF1aXJlZCB0
byBjb252ZXJ0IHRoaXMgZW5jb2RlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggNTA2YjRkZDYyZDU1YTU2YTI3OGMzMGNjYWIyZDE5
MTEwZjI0MWVlYy4uMmI0NDNmYmJlZDJjMWZkZTQ4YmNkZTljYmU0MDk1MzQ5N2ZkZTkxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBA
IC0zOCwxMiArMzgsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgdm9pZCByZWxl
YXNlQ3VzdG9tRm9udERhdGEodm9pZCogZGF0YSkKIHsKLSAgICBzdGF0aWNfY2FzdDxTaGFyZWRC
dWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICBzdGF0aWNfY2FzdDxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CiB9CiAKIHN0YXRpYyBjYWlyb191c2VyX2RhdGFfa2V5
X3QgZnJlZVR5cGVGYWNlS2V5OwogCi1Gb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKEZUX0ZhY2UgZnJlZVR5cGVGYWNlLCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K0ZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSBm
cmVlVHlwZUZhY2UsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICA6IG1fZm9u
dEZhY2UoYWRvcHRSZWYoY2Fpcm9fZnRfZm9udF9mYWNlX2NyZWF0ZV9mb3JfZnRfZmFjZShmcmVl
VHlwZUZhY2UsIEZUX0xPQURfREVGQVVMVCkpKQogewogICAgIGJ1ZmZlci5yZWYoKTsgLy8gVGhp
cyBpcyBiYWxhbmNlZCBieSB0aGUgYnVmZmVyLT5kZXJlZigpIGluIHJlbGVhc2VDdXN0b21Gb250
RGF0YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXggOWFkMTli
ODc2YjI3ZTYwZDRmYmE1MDMwZTY1ZjgxZTdjYThhNTA2OS4uZGZiYzU4MGZiOGU5YjMwOTM2Y2Nh
MDhiYjg4YjQ5YzJiYjY1M2FjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1l
ci5jcHAKQEAgLTgxLDEyICs4MSwxMiBAQCBJbWFnZURlY29kZXJHU3RyZWFtZXJTYW1wbGUqIHRv
U2FtcGxlKEl0ZXJhdG9yIGl0ZXIpCiAgICAgcmV0dXJuIChJbWFnZURlY29kZXJHU3RyZWFtZXJT
YW1wbGUqKWl0ZXItPnNlY29uZC5nZXQoKTsKIH0KIAotUmVmUHRyPEltYWdlRGVjb2RlckdTdHJl
YW1lcj4gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8SW1h
Z2VEZWNvZGVyR1N0cmVhbWVyPiBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlv
biBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pKTsKIH0KIAotSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbWFnZURlY29kZXJHU3RyZWFt
ZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURlY29kZXJHU3RyZWFtZXI6Oklt
YWdlRGVjb2RlckdTdHJlYW1lcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
CiAgICAgOiBtX21pbWVUeXBlKG1pbWVUeXBlKQogewogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlRmxhZzsKQEAgLTE5OSw3ICsxOTksNyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVj
b2RlckdTdHJlYW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdQog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0
RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wpCit2b2lkIEltYWdlRGVjb2RlckdTdHJlYW1l
cjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sKQogewogICAgIHB1
c2hFbmNvZGVkRGF0YShkYXRhKTsKIH0KQEAgLTQyNiwxMCArNDI2LDExIEBAIEVuY29kZWREYXRh
U3RhdHVzIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjplbmNvZGVkRGF0YVN0
YXR1cygpIGNvbnN0CiAgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpVbmtub3duOwogfQog
Ci12b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVk
RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CisgICAgYXV0byBj
b250aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV9lb3MgPSBm
YWxzZTsKLSAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbWFnZURlY29kZXJHU3Ry
ZWFtZXIiLCBbdGhpcywgZGF0YSA9IGJ1ZmZlci5kYXRhKCksIHNpemUgPSBidWZmZXIuc2l6ZSgp
XSB7CisgICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyIiwgW3RoaXMsIGRhdGEgPSBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIHNpemUgPSBidWZm
ZXIuc2l6ZSgpXSB7CiAgICAgICAgIG1faW5uZXJEZWNvZGVyID0gSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyOjpJbm5lckRlY29kZXI6OmNyZWF0ZSgqdGhpcywgZGF0YSwgc2l6ZSk7CiAgICAgICAgIG1f
aW5uZXJEZWNvZGVyLT5ydW4oKTsKICAgICB9LCBUaHJlYWRUeXBlOjpHcmFwaGljcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKaW5kZXggNjZmMzM3Mjg0NmE0ZGY4NzRmNDIw
ZGI2NTRlNjg5YzllNDNiMGM1Mi4uZDNlZjZhNDVjZDdkYmRmYzMxMjBlYTIzZjhkZWIzYzU5OTcx
YWU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaApAQCAtNDEsOCArNDEs
OCBAQCBjbGFzcyBJbWFnZURlY29kZXJHU3RyZWFtZXIgZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNv
ZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShJbWFnZURlY29kZXJHU3RyZWFtZXIpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKLSAg
ICBJbWFnZURlY29kZXJHU3RyZWFtZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEltYWdlRGVjb2RlckdTdHJlYW1lcj4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pOworICAgIEltYWdlRGVjb2RlckdTdHJlYW1lcihGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXJHU3RyZWFtZXIo
KSA9IGRlZmF1bHQ7CiAKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c01lZGlhVHlwZShNZWRpYVR5
cGUgdHlwZSkgeyByZXR1cm4gdHlwZSA9PSBNZWRpYVR5cGU6OlZpZGVvOyB9CkBAIC03Miw3ICs3
Miw3IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQs
IGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpT
eW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxv
bmcgbG9uZykgZmluYWwgeyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0
YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9lb3M7IH0KICAgICB2b2lkIGNsZWFy
RnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsOwogCkBAIC0xMjIsNyArMTIyLDcgQEAgcHJp
dmF0ZToKICAgICB9OwogCiAgICAgdm9pZCBoYW5kbGVTYW1wbGUoR1JlZlB0cjxHc3RTYW1wbGU+
JiYpOwotICAgIHZvaWQgcHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAg
IHZvaWQgcHVzaEVuY29kZWREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAog
ICAgIGNvbnN0IEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZSogc2FtcGxlQXRJbmRleChzaXpl
X3QpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCmluZGV4IDc5Nzk0ODBmOTFjNTk3YWE5ZjkwMDk3YzE4ODMyYzZhMTVjMzJjZTguLmIz
MjRjZjExNDY0N2IzMzc1ZTZhNDViZmFiMTAzZTBhMjkwZmI4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0zNjkyLDcgKzM2OTIsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aW5pdGlhbGl6YXRpb25EYXRhRW5j
b3VudGVyZWQoSW5pdERhdGEmJiBpbml0RAogCiAgICAgICAgIEdTVF9ERUJVRygic2NoZWR1bGlu
ZyBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCAlcyBldmVudCBvZiBzaXplICV6dSIsIGlu
aXREYXRhLnBheWxvYWRDb250YWluZXJUeXBlKCkudXRmOCgpLmRhdGEoKSwKICAgICAgICAgICAg
IGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKLSAgICAgICAgR1NUX01FTURVTVAoImluaXQg
ZGF0YXMiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbml0RGF0YS5wYXlsb2Fk
KCktPmRhdGEoKSksIGluaXREYXRhLnBheWxvYWQoKS0+c2l6ZSgpKTsKKyAgICAgICAgR1NUX01F
TURVTVAoImluaXQgZGF0YXMiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbml0
RGF0YS5wYXlsb2FkKCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSksIGluaXREYXRhLnBheWxv
YWQoKS0+c2l6ZSgpKTsKICAgICAgICAgd2Vha1RoaXMtPm1fcGxheWVyLT5pbml0aWFsaXphdGlv
bkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLCBpbml0RGF0
YS5wYXlsb2FkKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogICAgIH0pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdl
YlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA1ZDg2ZmIxYWY0ODdj
MDI4OWUwMDEyNTU5NjVjMzFkY2RhOTczNDI2Li45MzAxOTA5OTQ1YjRhMjNkNjY3ODJmMzUwYjU2
ZTQ0NzlmODAyNmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gUGxhdGZvcm1NZWRpYVJl
c291cmNlQ2xpZW50IHZpcnR1YWwgbWV0aG9kcy4KICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRC
dWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2
b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lk
IGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBvdmVycmlkZTsKQEAgLTEwOTMsNyArMTA5Myw3IEBAIHZvaWQgQ2FjaGVkUmVzb3Vy
Y2VTdHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uCiAgICAgY29tcGxldGlvbkhhbmRsZXIoU2hvdWxkQ29udGludWVQb2xpY3lDaGVjazo6
WWVzKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
dm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VC
S0lUX1dFQl9TUkMobV9zcmMuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXku
aAppbmRleCA2OTJhOTk2ZDE5YzI0ZWZkOWE0ODU1MjM3M2E1Njc5YjUyZTFlZjFjLi4zNDliZmRj
YWFkNmM3ZDdmOGQ1YWRhMGExNzIxOWZkOWU3MDYyNmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVBy
b3h5Q2xlYXJLZXkuaApAQCAtNjIsMTEgKzYyLDExIEBAIHB1YmxpYzoKICAgICBDRE1Qcm94eUNs
ZWFyS2V5KCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgfkNETVByb3h5Q2xlYXJLZXkoKTsKIAot
ICAgIC8vIEZJWE1FOiBUaGVyZSdzIGEgbGFjayBvZiBjb25zaXN0ZW5jeSBiZXR3ZWVuIFNoYXJl
ZEJ1ZmZlcnMsCisgICAgLy8gRklYTUU6IFRoZXJlJ3MgYSBsYWNrIG9mIGNvbnNpc3RlbmN5IGJl
dHdlZW4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcnMsCiAgICAgLy8gVmVjdG9yPGNoYXI+J3MgYW5k
IHt1aW50OF90KixzaXplX3R9IGlkaW9tcyBmb3IgcmVwcmVzZW50aW5nIGEgY2h1bmsgb2YKLSAg
ICAvLyBieXRlcy4gRml4IHRoYXQgc29tZWhvdy4gTm90ZSBTaGFyZWRCdWZmZXJzIGFyZSBkYW5n
ZXJvdXMgc2luY2UKKyAgICAvLyBieXRlcy4gRml4IHRoYXQgc29tZWhvdy4gTm90ZSBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVycyBhcmUgZGFuZ2Vyb3VzIHNpbmNlCiAgICAgLy8gdGhleSdyZSBub3Qg
dGhyZWFkLXNhZmUgYW5kIHRoaXMgY2xhc3MgbXVzdCBtYWludGFpbgotICAgIC8vIHRocmVhZC1z
YWZldHksIGJ1dCBtYXliZSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50IGNvdWxkIGJlCisgICAg
Ly8gdGhyZWFkLXNhZmV0eSwgYnV0IG1heWJlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50IGNvdWxkIGJlCiAgICAgLy8gbWFkZSB0byB3b3JrLCBob3dldmVyIHRoYXQgaGFzIHpl
cm8gaGVscGVycyBmb3IgZHJvcHBpbmcgaW50bwogICAgIC8vIGl0ZXJhdG9yLWF3YXJlIC8gY29t
cGFyYXRvci1hd2FyZSBjb250YWluZXJzLi4uCiAgICAgc3RydWN0IGNlbmNEZWNyeXB0Q29udGV4
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0NETVRodW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAppbmRleCAyZWZhMDQzNjBlODg0ODM4MDYxNDRj
M2Q3MWRlNjNhZDdiNDJiNTYxLi5jMzg5MTZlN2QwNTllODg5YjVjODhlZWIwOWUwZjRjZmMwM2Mx
ZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0NETVRodW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBib29s
IENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNJbml0RGF0YShjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEp
IGNvbnN0Citib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5p
dERhdGEpIGNvbnN0CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhlIGluaXREYXRhIGJ1ZmZlciBhcyBh
biBKU09OIG9iamVjdCBpbiBrZXlpZHMgY2FzZS4KICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2UoaW5pdERhdGFUeXBlLCAia2V5aWRzIikgJiYgQ0RNVXRpbGl0aWVzOjpwYXJz
ZUpTT05PYmplY3QoaW5pdERhdGEpKQpAQCAtMjM3LDcgKzIzNyw3IEBAIGJvb2wgQ0RNUHJpdmF0
ZVRodW5kZXI6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBTCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBD
RE1Qcml2YXRlVGh1bmRlcjo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJl
c3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVU
aHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJl
c3BvbnNlKSBjb25zdAogewogICAgIHJldHVybiByZXNwb25zZS5jb3B5KCk7CiB9CkBAIC0yNjAs
NyArMjYwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OmluaXRpYWxpemVXaXRoQ29uZmln
dXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmEKICAgICBjYWxsYmFjayhTdWNjZWVk
ZWQpOwogfQogCi12b2lkIENETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxi
YWNrKQordm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCAgU3VjY2Vzc0NhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7CiAgICAgT3BlbkNETUVycm9yIGVycm9yID0gb3BlbmNkbV9zeXN0ZW1fc2V0
X3NlcnZlcl9jZXJ0aWZpY2F0ZShtX3RodW5kZXJTeXN0ZW0uZ2V0KCksIGNvbnN0X2Nhc3Q8dWlu
dDhfdCo+KGNlcnRpZmljYXRlLT5kYXRhKCkpLAogICAgICAgICBjZXJ0aWZpY2F0ZS0+c2l6ZSgp
KTsKQEAgLTMyNiw3ICszMjYsNyBAQCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBDRE1JbnN0
YW5jZVRodW5kZXI6OmNyZWF0ZVNlc3Npb24oKQogY2xhc3MgUGFyc2VkUmVzcG9uc2VNZXNzYWdl
IHsKIAogcHVibGljOgotICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZShjb25zdCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKQorICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZShjb25zdCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKICAgICB7CiAgICAgICAgIGlmICgh
YnVmZmVyIHx8ICFidWZmZXItPnNpemUoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1NCw4
ICszNTQsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBt
X2lzVmFsaWQ7IH0KICAgICBib29sIGhhc1BheWxvYWQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxib29sPihtX3BheWxvYWQpOyB9Ci0gICAgY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIHBh
eWxvYWQoKSBjb25zdCYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1
ZSgpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSAmIHsgQVNTRVJUKG1fcGF5
bG9hZCk7IHJldHVybiBtX3BheWxvYWQudmFsdWUoKTsgfQorICAgIGNvbnN0IFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0JiB7IEFTU0VSVChtX3BheWxvYWQpOyBy
ZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mIHBheWxvYWQoKSAmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxvYWQudmFs
dWUoKTsgfQogICAgIGJvb2wgaGFzVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZS5oYXNfdmFs
dWUoKTsgfQogICAgIFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGUgdHlwZSgpIGNvbnN0IHsg
QVNTRVJUKG1fdHlwZSk7IHJldHVybiBtX3R5cGUudmFsdWUoKTsgfQogICAgIFdlYkNvcmU6Ok1l
ZGlhS2V5TWVzc2FnZVR5cGUgdHlwZU9yKFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGUgYWx0
ZXJuYXRlKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPyBtX3R5cGUudmFsdWUoKSA6IGFsdGVybmF0
ZTsgfQpAQCAtMzY0LDExICszNjQsMTEgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wg
bV9pc1ZhbGlkIHsgZmFsc2UgfTsKLSAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+
PiBtX3BheWxvYWQ7CisgICAgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+IG1fcGF5bG9hZDsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2Fn
ZVR5cGU+IG1fdHlwZTsKIH07CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6Y2hh
bGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2
b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNr
KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBQYXJzZWRS
ZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKGJ1ZmZlcik7CiAgICAgaWYgKCFw
YXJzZWRSZXNwb25zZU1lc3NhZ2UpIHsKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvblRodW5kZXI6OmtleXNVcGRhdGVEb25lQ2FsbGJhY2soKQogICAgIG1fc2Vzc2lv
bkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25U
aHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKK3Zv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewogICAgIEdTVF9FUlJPUigiQ0RNIGVycm9y
Iik7CiAgICAgR1NUX01FTURVTVAoImVycm9yIGR1bXAiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3Nh
Z2UtPnNpemUoKSk7CkBAIC00ODgsNyArNDg4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25U
aHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKICAg
ICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUs
IGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0
RGF0YVNoYXJlZEJ1ZmZlciwKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVz
dExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGFTaGFyZWRCdWZm
ZXIsCiAgICAgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKQEAgLTUwNiw3ICs1MDYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRo
dW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdAog
ICAgICAgICBtX2luaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpLCBtX2luaXREYXRhLnBheWxvYWQo
KS0+c2l6ZSgpLCBudWxscHRyLCAwLCAmbV90aHVuZGVyU2Vzc2lvbkNhbGxiYWNrcywgdGhpcywg
JnNlc3Npb24pOwogICAgIGlmICghc2Vzc2lvbikgewogICAgICAgICBHU1RfRVJST1IoIkNvdWxk
IG5vdCBjcmVhdGUgc2Vzc2lvbiIpOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbml0
RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKICAgICAgICAgY2Fs
bGJhY2soaW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgeyB9LCBmYWxzZSwgRmFpbGVkKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTUxNSw3ICs1MTUsNyBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBj
b25zdCBBdAogCiAgICAgYXV0byBnZW5lcmF0ZUNoYWxsZW5nZSA9IFt0aGlzLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERh
dGEucGF5bG9hZCgpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5p
dERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKICAgICAgICAgaWYgKG1fc2Vzc2lvbklELmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgR1NUX0VSUk9SKCJjb3VsZCBub3QgY3JlYXRlIHNlc3Np
b24gaWQiKTsKICAgICAgICAgICAgIGNhbGxiYWNrKGluaXREYXRhLnJlbGVhc2VOb25OdWxsKCks
IHsgfSwgZmFsc2UsIEZhaWxlZCk7CkBAIC01NDUsMTMgKzU0NSwxMyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvblRodW5kZXI6OnNlc3Npb25GYWlsdXJlKCkKICAgICBtX3Nlc3Npb25DaGFuZ2Vk
Q2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNr
KQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIEFT
U0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gbV9zZXNzaW9uSUQpOwogCiAgICAg
R1NUX1RSQUNFKCJVcGRhdGluZyBzZXNzaW9uICVzIiwgc2Vzc2lvbklELnV0ZjgoKS5kYXRhKCkp
OwogCi0gICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiByZXNwb25zZU1lc3NhZ2UpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFj
a3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nl
c3MsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0
YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChzdWNj
ZXNzKSB7CiAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlTWVzc2FnZSkKQEAgLTU2Miw3ICs1NjIs
NyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeQogICAgICAgICAgICAgICAgIFBhcnNlZFJlc3Bv
bnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UocmVzcG9uc2VNZXNzYWdlKTsKICAgICAg
ICAgICAgICAgICBBU1NFUlQocGFyc2VkUmVzcG9uc2VNZXNzYWdlKTsKICAgICAgICAgICAgICAg
ICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdlLmhhc1BheWxvYWQoKSkgewotICAgICAgICAgICAg
ICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25z
ZU1lc3NhZ2UucGF5bG9hZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXls
b2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoImdvdCBtZXNzYWdlIG9mIHNp
emUgJXp1IiwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX01FTURV
TVAoIm1lc3NhZ2UiLCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwK
QEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmxvYWRT
ZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JRAogewogICAgIEFTU0VS
VF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gbV9zZXNzaW9uSUQpOwogCi0gICAgbV9z
ZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZU1l
c3NhZ2UpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0
aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7CiAgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChzdWNjZXNzKSB7CiAgICAg
ICAgICAgICBpZiAoIXJlc3BvbnNlTWVzc2FnZSkKQEAgLTU5Nyw3ICs1OTcsNyBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBT
dHJpbmcmIHNlc3Npb25JRAogICAgICAgICAgICAgICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBw
YXJzZWRSZXNwb25zZU1lc3NhZ2UocmVzcG9uc2VNZXNzYWdlKTsKICAgICAgICAgICAgICAgICBB
U1NFUlQocGFyc2VkUmVzcG9uc2VNZXNzYWdlKTsKICAgICAgICAgICAgICAgICBpZiAocGFyc2Vk
UmVzcG9uc2VNZXNzYWdlLmhhc1BheWxvYWQoKSkgewotICAgICAgICAgICAgICAgICAgICBSZWY8
U2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5
bG9hZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAg
ICAgICAgICAgICAgICAgICBHU1RfREVCVUcoImdvdCBtZXNzYWdlIG9mIHNpemUgJXp1IiwgbWVz
c2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX01FTURVTVAoIm1lc3NhZ2Ui
LCBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAg
IGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om1ha2VfcGFpcihwYXJz
ZWRSZXNwb25zZU1lc3NhZ2UudHlwZU9yKE1lZGlhS2V5TWVzc2FnZVR5cGU6OkxpY2Vuc2VSZXF1
ZXN0KSwKQEAgLTY0MCw3ICs2NDAsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6
OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbgogewogICAg
IEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBtX3Nlc3Npb25JRCA9PSBzZXNzaW9uSUQpOwogCi0g
ICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlz
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgICAgICBpZiAo
IWJ1ZmZlcikKQEAgLTY0OSw3ICs2NDksNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbgogICAg
ICAgICAgICAgICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2Uo
YnVmZmVyKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocGFyc2VkUmVzcG9uc2VNZXNzYWdlKTsK
ICAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdlLmhhc1BheWxvYWQoKSkg
ewotICAgICAgICAgICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92
ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3Bv
bnNlTWVzc2FnZS5wYXlsb2FkKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoInNl
c3Npb24gJXMgcmVtb3ZlZCwgbWVzc2FnZSBsZW5ndGggJXp1IiwgbV9zZXNzaW9uSUQudXRmOCgp
LmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2so
bV9rZXlTdG9yZS5hbGxLZXlzQXMoTWVkaWFLZXlTdGF0dXM6OlJlbGVhc2VkKSwgV1RGTW92ZSht
ZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwogICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0NETVRodW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oCmluZGV4IGNkZDhkYTIxMTIzYzE3OTFhZTJmYjY0Mzlm
ZjJkNmZhMGQyZWIyMWMuLjEwMjBlMTUzMjI3MWI1MzUxZTEwNmRkZThmMjFlYTU0MDVhOWMyMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvQ0RNVGh1bmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oCkBAIC05Myw4ICs5Myw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNl
cnRpZmljYXRlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNv
bnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwg
Y29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAg
ICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikg
Y29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklk
KGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiBwcml2YXRlOgpAQCAtMTEwLDcgKzExMCw3
IEBAIHB1YmxpYzoKICAgICAvLyBDRE1JbnN0YW5jZQogICAgIEltcGxlbWVudGF0aW9uVHlwZSBp
bXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5
cGU6OlRodW5kZXI7IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25z
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJz
LCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZv
aWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxi
YWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNl
dFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2tleVN5c3RlbTsgfQogICAgIFJl
ZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKQEAgLTEyNiw4
ICsxMjYsOCBAQCBjbGFzcyBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyIGZpbmFsIDogcHVibGlj
IENETUluc3RhbmNlU2Vzc2lvblByb3h5IHsKIHB1YmxpYzoKICAgICBDRE1JbnN0YW5jZVNlc3Np
b25UaHVuZGVyKENETUluc3RhbmNlVGh1bmRlciYpOwogCi0gICAgdm9pZCByZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFs
OworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5h
bDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VT
ZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92
ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CkBAIC0xNDEsMTQgKzE0MSwxNCBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIENETUluc3RhbmNlVGh1bmRlciogY2RtSW5zdGFuY2VUaHVuZGVy
KCkgY29uc3Q7CiAKLSAgICB1c2luZyBOb3RpZmljYXRpb24gPSB2b2lkIChDRE1JbnN0YW5jZVNl
c3Npb25UaHVuZGVyOjoqKShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB1
c2luZyBOb3RpZmljYXRpb24gPSB2b2lkIChDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjoqKShS
ZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdXNpbmcgQ2hh
bGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKCk+OwotICAgIHVzaW5nIFNl
c3Npb25DaGFuZ2VkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGJvb2wsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYpPjsKKyAgICB1c2luZyBTZXNzaW9uQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rpb248
dm9pZChib29sLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+OwogCi0gICAgdm9p
ZCBjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAg
ICB2b2lkIGNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKTsKICAgICB2b2lkIGtleVVwZGF0ZWRDYWxsYmFjayhLZXlJRFR5cGUmJik7CiAg
ICAgdm9pZCBrZXlzVXBkYXRlRG9uZUNhbGxiYWNrKCk7Ci0gICAgdm9pZCBlcnJvckNhbGxiYWNr
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgZXJyb3JDYWxsYmFjayhSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlT
dGF0dXMgc3RhdHVzKGNvbnN0IEtleUlEVHlwZSYpIGNvbnN0OwogICAgIHZvaWQgc2Vzc2lvbkZh
aWx1cmUoKTsKIApAQCAtMTU5LDcgKzE1OSw3IEBAIHByaXZhdGU6CiAgICAgSW5pdERhdGEgbV9p
bml0RGF0YTsKICAgICBPcGVuQ0RNU2Vzc2lvbkNhbGxiYWNrcyBtX3RodW5kZXJTZXNzaW9uQ2Fs
bGJhY2tzIHsgfTsKICAgICBCb3hQdHI8T3BlbkNETVNlc3Npb24+IG1fc2Vzc2lvbjsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX21lc3NhZ2U7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IG1fbWVzc2FnZTsKICAgICBib29sIG1fbmVlZHNJbmRpdmlkdWFsaXphdGlvbiB7
IGZhbHNlIH07CiAgICAgVmVjdG9yPENoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrPiBtX2NoYWxs
ZW5nZUNhbGxiYWNrczsKICAgICBWZWN0b3I8U2Vzc2lvbkNoYW5nZWRDYWxsYmFjaz4gbV9zZXNz
aW9uQ2hhbmdlZENhbGxiYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRp
bGl0aWVzLmNwcAppbmRleCAzZjg1YWZlNzNjODQyNzYyOTk3ZDVhYmMyZDdiYzA3ZjdjMDFiOWMz
Li5lYTg5MGY2N2RhMjEzODdmNDBkYTY1MWEwY2E1YzczNDkzZTg0ZjY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVN
RVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHN0
YXRpYyB2b2lkIG1hcmt1cEVycm9yKEdNYXJrdXBQYXJzZUNvbnRleHQqLCBHRXJyb3IqLCBncG9p
bnRlcikKIAogc3RhdGljIEdNYXJrdXBQYXJzZXIgbWFya3VwUGFyc2VyIHsgbWFya3VwU3RhcnRF
bGVtZW50LCBtYXJrdXBFbmRFbGVtZW50LCBtYXJrdXBUZXh0LCBtYXJrdXBQYXNzdGhyb3VnaCwg
bWFya3VwRXJyb3IgfTsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RD
ZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCitSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQo
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCiB7CiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKICAgICBpZiAo
IXBheWxvYWQgfHwgIXBheWxvYWQtPnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1l
ckVNRVV0aWxpdGllcy5oCmluZGV4IGQ1YWZmODQ1ZjQwOWE3NWQ3MWE5ODQwYWNmMWQzNDJhNDY0
N2QyZjEuLjI3ZGQ0ZWFlMGQyZTAxYWI0ZDg0YzBhYmM0MjRlYmIxMDEwNGMwNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVh
bWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAtMzgsOCArMzgsNyBAQCBH
U1RfREVCVUdfQ0FURUdPUllfRVhURVJOKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9k
ZWNyeXB0X2RlYnVnX2NhdGVnb3J5KQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5pdERh
dGEgewogcHVibGljOgotICAgIEluaXREYXRhKCkKLSAgICAgICAgOiBtX3BheWxvYWQoU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKSkgeyB9CisgICAgSW5pdERhdGEoKSA9IGRlZmF1bHQ7CiAKICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYW4gZW51bSBmb3Igc3lzdGVtIHV1aWRzIGZvciBiZXR0
ZXIgdHlwZSBzYWZldHkuCiAgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgR3N0
QnVmZmVyKiBpbml0RGF0YSkKQEAgLTUwLDEzICs0OSwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBHU1RfQ0FUX0xFVkVMX0xPRyh3ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlw
dF9kZWJ1Z19jYXRlZ29yeSwgR1NUX0xFVkVMX0VSUk9SLCBudWxscHRyLCAiY2Fubm90IG1hcCAl
cyBwcm90ZWN0aW9uIGRhdGEiLCBzeXN0ZW1JZC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgICAgIG1fcGF5bG9hZCA9IGV4
dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKTsK
KyAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFw
cGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKSkKKyAgICAgICAgICAgIG1fcGF5bG9h
ZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiAKLSAgICBJ
bml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBh
eWxvYWQpCisgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAgICAgICAgOiBtX3N5c3RlbUlkKHN5c3Rl
bUlkKQotICAgICAgICAsIG1fcGF5bG9hZChleHRyYWN0Q2VuY0lmTmVlZGVkKFdURk1vdmUocGF5
bG9hZCkpKQogICAgIHsKKyAgICAgICAgaWYgKHBheWxvYWQpIHsKKyAgICAgICAgICAgIGlmIChh
dXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKHBheWxvYWQtPm1ha2VDb250
aWd1b3VzKCkpKQorICAgICAgICAgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9h
ZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQgYXBwZW5k
KEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03MiwxMCArNzUsMTAgQEAgcHVibGljOgogICAgICAg
ICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwgc28gYmUgY2FyZWZ1bCBoZXJlIQogICAgICAgICBt
X3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0ZW1JZDsKIAotICAgICAgICBtX3BheWxvYWQtPmFw
cGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKKyAgICAgICAgbV9wYXlsb2FkLmFwcGVuZCgqaW5p
dERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAgICBjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZDsgfQorICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkLmdl
dCgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3lz
dGVtSWQ7IH0KICAgICBTdHJpbmcgcGF5bG9hZENvbnRhaW5lclR5cGUoKSBjb25zdAogICAgIHsK
QEAgLTg2LDExICs4OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAiY2VuYyJfczsKICAg
ICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRl
ZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7
CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3lzdGVtSWQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9wYXlsb2FkOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9wYXlsb2FkOwogfTsK
IAogY2xhc3MgUHJvdGVjdGlvblN5c3RlbUV2ZW50cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aAppbmRleCA3MThiOWJkMzE1ZWNjNjcwNzg5YzY1Y2JhYWEwMzQ5Mjk3NWU3MmQzLi42OTI4YTYz
ZTk3MWM3YzM1ZTg4NDRlZWY3M2JmYTQ0YThkOGMwMzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRm9udENy
ZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0
aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRU
YWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1
cmVTZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KaW5kZXggODNlNmFmN2IwMzg5MjgzOGMz
YmZlYTFjMGMxMWFhN2ZjZjhhNzdhOS4uNjhiY2M4ODQ2YThiMWYwZjdjYmNmMTQwMzE5NjZlZDky
NDMyMmMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L1BERkRvY3VtZW50SW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50
KCkKIHsKLSAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNl
KCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBtX2Rv
Y3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRh
OmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKIH0KIAog
dm9pZCBQREZEb2N1bWVudEltYWdlOjpjb21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVXRpbGl0aWVzLmgKaW5kZXggMDljMWM0NWM0NTkzYWVhNDMxODMwZDIxNWI3ZTc0
ODUyYzE5ZTM3Zi4uZmEwMDA4MTE2MDY2OTdkYzVjNTExMjMzM2M5MGM4YzkyYjRiNjcwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCkBAIC0zNSw5ICszNSwxMCBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5kaWFuVVNob3J0OworY2xhc3MgU2hhcmVkQnVmZmVyOwog
c3RydWN0IEVPVFByZWZpeDsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBFT1RIZWFk
ZXIgewogICAgIEVPVEhlYWRlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3Bw
CmluZGV4IDJjZmE4NTRjMDIyNjY4YWNjMDA3MzdjMWViYjM1ZmYzNDhkNThlMmIuLjBmYThmMzA2
YWQ5NTJkMDZhMDkyOTdkMGIxZDI4N2I4OTg4MzJhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZl
cnRpY2FsRGF0YS5jcHAKQEAgLTM4MSw3ICszODEsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFi
bGVCYXNlIHsKIAogc3RhdGljIGJvb2wgbG9hZEhtdHhUYWJsZShjb25zdCBGb250UGxhdGZvcm1E
YXRhJiBwbGF0Zm9ybURhdGEsIFZlY3Rvcjx1aW50MTZfdD4mIGFkdmFuY2VXaWR0aHMpCiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFi
bGUoT3BlblR5cGU6OkhoZWFUYWcpOworICAgIGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9w
ZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpIaGVh
VGFibGUqIGhoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxPcGVuVHlwZTo6SGhlYVRhYmxl
PihidWZmZXIpOwogICAgIGlmICghaGhlYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDI0
LDcgKzQyNCw3IEBAIE9wZW5UeXBlVmVydGljYWxEYXRhOjpPcGVuVHlwZVZlcnRpY2FsRGF0YShj
b25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsCiB2b2lkIE9wZW5UeXBlVmVydGlj
YWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEp
CiB7CiAgICAgLy8gTG9hZCB2aGVhIGZpcnN0LiBUaGlzIHRhYmxlIGlzIHJlcXVpcmVkIGZvciBm
b250cyB0aGF0IHN1cHBvcnQgdmVydGljYWwgZmxvdy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7
CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6
VmhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OlZoZWFUYWJsZSogdmhlYSA9IE9wZW5UeXBl
Ojp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpWaGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCF2
aGVhKQogICAgICAgICByZXR1cm47CkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBPcGVuVHlwZVZl
cnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1E
YXRhKQogCiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0
aXR1dGlvbnMoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9w
ZW5UeXBlOjpHU1VCVGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlw
ZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6R1NVQlRhYmxl
KiBnc3ViID0gT3BlblR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OkdTVUJUYWJsZT4oYnVm
ZmVyKTsKICAgICBpZiAoZ3N1YikKICAgICAgICAgZ3N1Yi0+Z2V0VmVydGljYWxHbHlwaFN1YnN0
aXR1dGlvbnMoJm1fdmVydGljYWxHbHlwaE1hcCwgKmJ1ZmZlci5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRp
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0
aWxpdGllcy5oCmluZGV4IGE2MjcxOWIxNzE5YTc0Zjk3NjkyMjE5ZGY1ZjdhYWVkYzQ5MDY0NjYu
LjBkYjRhZmFkYjNmNzQyYjgzYTRlMTZjZjM3MTg3MGEyYjA0MDRlYTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0
aWxpdGllcy5oCkBAIC00Myw3ICs0Myw3IEBAIGVudW0gRFdSSVRFX0ZPTlRfU1RSRVRDSDsKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBEaXJl
Y3RXcml0ZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDVmMTBmNzM5MmQwNGMz
NDRkMTJjZWU0MjY2ZWRiMWVlOTk3MWM0ZWYuLjA4ZmM5ZjE5ZWFlYTk0ODNlYTU4ZWMxYWVlZGQ0
NTcyNTZjZTI3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApAQCAtMzYsMTIgKzM2LDEz
IEBAIHR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dGb250UmVmOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBj
bGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsK
IHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5
cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJE
aXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VE
ZWNvZGVyRGlyZWN0MkQuY3BwCmluZGV4IDYyOWUwZTYxYTEwNGM1NjdhMWQ0ZWRjYjdlNTc5N2Rj
ZjY3YzZlOGUuLjc3MzU3MzliOTMzNGY0NGQ5OWEzZjEyZmZjNWJmN2I0MWY3Y2M2ZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJE
aXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlRGVjb2RlckRpcmVjdDJELmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIFBsYXRmb3JtSW1hZ2VQ
dHIgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBp
bmRleCwgU3ViCiAgICAgcmV0dXJuIGJpdG1hcDsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJEaXJl
Y3QyRDo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQor
dm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIWFsbERhdGFSZWNlaXZl
ZCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAppbmRleCA0ZjQ3MjU4NmI0
MjRiZGExY2Y2ZmEwMTQzY2JhMjNkMDMwMDE2ZTQ1Li5jMjM2NWZkNzQ0YzYxMThjMTk5OWUwNWI4
MDJlZDViNDhmMzY0ODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaApAQCAtNDEsNyArNDEsNyBA
QCBjbGFzcyBJbWFnZURlY29kZXJEaXJlY3QyRCBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIg
ewogcHVibGljOgogICAgIEltYWdlRGVjb2RlckRpcmVjdDJEKCk7CiAKLSAgICBzdGF0aWMgUmVm
PEltYWdlRGVjb2RlckRpcmVjdDJEPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgQWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVy
RGlyZWN0MkQ+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgQWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSW1hZ2VEZWNvZGVyRGlyZWN0MkQoKSk7CiAgICAgfQpAQCAtNzIsNyArNzIsNyBAQCBw
dWJsaWM6CiAKICAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0
IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJv
bm91cykpIGZpbmFsOwogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJl
Y2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAg
IHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwCmluZGV4IDBk
ODgyMGU5ZjNkNmZkNzczNWQ1NzBiMzY0MTQ4OGY1M2JkN2VjZTkuLjJkOTcyNzBhNzM0ODM0ODkz
ZTc4YzgxZmYwZWM1YmI1ZGZlYzNmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgogCiAvLyBUaGlzIGZ1bmN0aW9uIGxvYWRzIHJlc291cmNlcyBmcm9t
IFdlYktpdAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1
ZmZlcihjb25zdCBjaGFyKik7CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKik7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCmluZGV4IGQ5NTZkOWU3NjI1ZDVi
YjVhNzBmMDY5M2U3Nzk4ZWU5MDg0OWYxNjUuLjMzYzk1ZWMzMzMzYTkyMGM2NGEwMTgxNzUxZWI0
YTUwNWVmMWE3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKQEAgLTUxLDcgKzUx
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgewogCi1zdGF0aWMgdW5zaWdu
ZWQgY29weUZyb21TaGFyZWRCdWZmZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5n
dGgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKQorc3RhdGljIHVuc2lnbmVkIGNv
cHlGcm9tU2hhcmVkQnVmZmVyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpCiB7CiAgICAgdW5zaWdu
ZWQgYnl0ZXNFeHRyYWN0ZWQgPSAwOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IHNo
YXJlZEJ1ZmZlcikgewpAQCAtMTM1LDcgKzEzNSw3IEBAIGJvb2wgbWF0Y2hlc0NVUlNpZ25hdHVy
ZShjaGFyKiBjb250ZW50cykKIAogfQogCi1SZWZQdHI8U2NhbGFibGVJbWFnZURlY29kZXI+IFNj
YWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlv
biBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCitSZWZQdHI8U2NhbGFibGVJbWFnZURlY29kZXI+IFNjYWxhYmxlSW1hZ2VE
ZWNvZGVyOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24g
YWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsZW5ndGhPZkxvbmdlc3RT
aWduYXR1cmUgPSAxNDsgLy8gVG8gd2l0OiAiUklGRj8/Pz9XRUJQVlAiCiAgICAgY2hhciBjb250
ZW50c1tsZW5ndGhPZkxvbmdlc3RTaWduYXR1cmVdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgK
aW5kZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2MjJkODc1NzA4Nzk4Yjk5ZGFhMi4uOWM0MDU1Nzgy
NDFkMGM1MTI3MDI5NTE1YzIyMTI2NThmOGM0ZjY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rl
ci5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMgbnVsbHB0ciBp
ZiB3ZSBjYW4ndCBzbmlmZiBhIHN1cHBvcnRlZCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGRhdGEg
KHBvc3NpYmx5CiAgICAgLy8gYmVjYXVzZSB0aGVyZSBpc24ndCBlbm91Z2ggZGF0YSB5ZXQpLgot
ICAgIHN0YXRpYyBSZWZQdHI8U2NhbGFibGVJbWFnZURlY29kZXI+IGNyZWF0ZShTaGFyZWRCdWZm
ZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAg
c3RhdGljIFJlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gY3JlYXRlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7
CiAKICAgICBib29sIHByZW11bHRpcGx5QWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3ByZW11bHRp
cGx5QWxwaGE7IH0KIApAQCAtNzAsMTYgKzcwLDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlOwogICAg
IH0KIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKSBvdmVycmlkZQorICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMg
PT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIGlmIChkYXRhLmRhdGEoKSkgewotICAgICAgICAgICAgLy8gU2hhcmVkQnVmZmVyOjpkYXRh
KCkgY29tYmluZXMgYWxsIHNlZ21lbnRzIGludG8gb25lIGluIGNhc2UgdGhlcmUncyBtb3JlIHRo
YW4gb25lLgotICAgICAgICAgICAgbV9kYXRhID0gZGF0YS5iZWdpbigpLT5zZWdtZW50LmNvcHlS
ZWYoKTsKLSAgICAgICAgfQorICAgICAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtl
Q29udGlndW91cygpOworICAgICAgICBpZiAoY29udGlndW91c0RhdGEtPmRhdGEoKSkKKyAgICAg
ICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNEYXRhLT5iZWdpbigpLT5zZWdtZW50LmNvcHlSZWYo
KTsKICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6
OlR5cGVBdmFpbGFibGUpIHsKICAgICAgICAgICAgIG1fZGVjb2RpbmdTaXplRnJvbVNldERhdGEg
PSB0cnVlOwogICAgICAgICAgICAgdHJ5RGVjb2RlU2l6ZShhbGxEYXRhUmVjZWl2ZWQpOwpAQCAt
MTk1LDcgKzE5NCw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RT
cG90KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKIHByb3RlY3Rl
ZDoKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOwogICAgIFZl
Y3RvcjxTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lLCAxPiBtX2ZyYW1lQnVmZmVyQ2FjaGUgV1RG
X0dVQVJERURfQllfTE9DSyhtX2xvY2spOwogICAgIG11dGFibGUgTG9jayBtX2xvY2s7CiAgICAg
Ym9vbCBtX3ByZW11bHRpcGx5QWxwaGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKaW5k
ZXggN2M2MDNmZDgzNThjMjE0YWM5MTg0ZjMxODk5NzJmZTg0MWI2MWU4MC4uMjZmODg2NDk2ZTVh
NWExNGUyOGFmYjFhZmE5YmZjMzAxNzdmNTFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVy
LmNwcApAQCAtNDEsNyArNDEsNyBAQCBBVklGSW1hZ2VSZWFkZXI6OkFWSUZJbWFnZVJlYWRlcihS
ZWZQdHI8QVZJRkltYWdlRGVjb2Rlcj4mJiBkZWNvZGVyKQogCiBBVklGSW1hZ2VSZWFkZXI6On5B
VklGSW1hZ2VSZWFkZXIoKSA9IGRlZmF1bHQ7CiAKLWJvb2wgQVZJRkltYWdlUmVhZGVyOjpwYXJz
ZUhlYWRlcihjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKK2Jvb2wgQVZJRkltYWdlUmVhZGVyOjpwYXJzZUhlYWRlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB7CiAgICAgaWYgKGF2aWZEZWNvZGVyU2V0SU9NZW1vcnkobV9hdmlmRGVjb2Rlci5nZXQo
KSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSAhPSBBVklGX1JFU1VMVF9PSykKICAgICAgICAg
cmV0dXJuIGFsbERhdGFSZWNlaXZlZCA/IG1fZGVjb2Rlci0+c2V0RmFpbGVkKCkgOiBmYWxzZTsK
QEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0
IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgYWwKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBBVklGSW1hZ2VSZWFkZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFtZUlu
ZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiBidWZmZXIsIGNvbnN0IFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQmIGRhdGEpCit2b2lkIEFWSUZJbWFnZVJlYWRlcjo6ZGVjb2RlRnJhbWUo
c2l6ZV90IGZyYW1lSW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmIGJ1ZmZlciwgY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpCiB7CiAgICAgaWYg
KG1fZGVjb2Rlci0+ZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJl
YWRlci5oCmluZGV4IGNiY2EwYjhjMTI0YmZmMGZmYzMzMDFiYTM1YmNlMDFlZDI3MjJkZjguLjQ5
NmY2OWY4MTJiZDc1YjBlZGE2MzU3YmFhODYwY2ZjY2I1YmE0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1h
Z2VSZWFkZXIuaApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAgICAgQVZJRkltYWdlUmVhZGVy
KFJlZlB0cjxBVklGSW1hZ2VEZWNvZGVyPiYmKTsKICAgICB+QVZJRkltYWdlUmVhZGVyKCk7CiAK
LSAgICBib29sIHBhcnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmLCBi
b29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgdm9pZCBkZWNvZGVGcmFtZShzaXplX3QgaW5kZXgs
IFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmLCBjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50Jik7CisgICAgYm9vbCBwYXJzZUhlYWRlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudCYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2b2lkIGRlY29kZUZy
YW1lKHNpemVfdCBpbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYsIGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Jik7CiAgICAgc2l6ZV90IGltYWdlQ291bnQo
KSBjb25zdDsKICAgICBkb3VibGUgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURl
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JN
UEltYWdlRGVjb2Rlci5jcHAKaW5kZXggNzI3NjlhNjkyNmVjMjQxOWJmNjYzODI1MjhkM2Q3NzIw
YTU0YWRhZS4uZjc0NTVjMTQ2YzdlOGFlYjA0Y2M4YzU2ZjMzMGUyYTAxZjNiYTcyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgQk1QSW1hZ2VEZWNvZGVy
OjpCTVBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3AKIHsKIH0KIAotdm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgQk1QSW1hZ2VEZWNvZGVyOjpz
ZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVj
b2Rlci5oCmluZGV4IGM3YzdjYTgxZmVhNmI4YTc3NGJiMzA4ZTUzOGRjZDA0OGM5OTVlZWEuLjY0
ZGVkNmFiYmUyYzBhMjliMTFmOWZiNWVjZDZiNDg3MjRkNTg5NzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VE
ZWNvZGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFn
ZURlY29kZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAiYm1wIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBTY2FsYWJsZUltYWdlRGVj
b2RlckZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBmaW5hbDsKICAgICAv
LyBDQVVUSU9OOiBzZXRGYWlsZWQoKSBkZWxldGVzIHxtX3JlYWRlcnwuIEJlIGNhcmVmdWwgdG8g
YXZvaWQKICAgICAvLyBhY2Nlc3NpbmcgZGVsZXRlZCBtZW1vcnksIGVzcGVjaWFsbHkgd2hlbiBj
YWxsaW5nIHRoaXMgZnJvbSBpbnNpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgKaW5kZXggNDg0NGYz
ODBkYzE3ZWM3MDQ1ODhmYjEyZjUzZWFiYzZkMjBlNjBmNC4uYmQ0MzBlOGE4YmVhMmM4MTZiMmM1
MjJiZjViYTc4ODQ2YzM4ZTBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgKQEAgLTQyLDcgKzQy
LDcgQEAgY2xhc3MgQk1QSW1hZ2VSZWFkZXIgewogcHVibGljOgogICAgIC8vIFJlYWQgYSB2YWx1
ZSBmcm9tIHxkYXRhW29mZnNldF18LCBjb252ZXJ0aW5nIGZyb20gbGl0dGxlIHRvIG5hdGl2ZQog
ICAgIC8vIGVuZGlhbm5lc3MuCi0gICAgc3RhdGljIGlubGluZSB1aW50MTZfdCByZWFkVWludDE2
KGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQpCisgICAg
c3RhdGljIGlubGluZSB1aW50MTZfdCByZWFkVWludDE2KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQogICAgIHsKICAgICAgICAgdWlu
dDE2X3QgcmVzdWx0OwogICAgICAgICBtZW1jcHkoJnJlc3VsdCwgJmRhdGEuZGF0YSgpW29mZnNl
dF0sIDIpOwpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQogCi0gICAgc3RhdGljIGlubGluZSB1aW50MzJfdCByZWFkVWludDMyKGNvbnN0IFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQpCisgICAgc3RhdGljIGlu
bGluZSB1aW50MzJfdCByZWFkVWludDMyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQogICAgIHsKICAgICAgICAgdWludDMyX3QgcmVz
dWx0OwogICAgICAgICBtZW1jcHkoJnJlc3VsdCwgJmRhdGEuZGF0YSgpW29mZnNldF0sIDQpOwpA
QCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgQk1QSW1hZ2VSZWFkZXIoU2NhbGFibGVJbWFn
ZURlY29kZXIqIHBhcmVudCwgc2l6ZV90IGRlY29kZWRBbmRIZWFkZXJPZmZzZXQsIHNpemVfdCBp
bWdEYXRhT2Zmc2V0LCBib29sIHVzZXNBbmRNYXNrKTsKIAogICAgIHZvaWQgc2V0QnVmZmVyKFNj
YWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGJ1ZmZlcikgeyBtX2J1ZmZlciA9IGJ1ZmZlcjsgfQot
ICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKSB7IG1fZGF0
YSA9ICZkYXRhOyB9CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50JiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9CiAKICAgICAvLyBEb2VzIHRoZSBh
Y3R1YWwgZGVjb2RpbmcuIElmIHxvbmx5U2l6ZXwgaXMgdHJ1ZSwgZGVjb2Rpbmcgb25seQogICAg
IC8vIHByb2dyZXNzZXMgYXMgZmFyIGFzIG5lY2Vzc2FyeSB0byBnZXQgdGhlIGltYWdlIHNpemUu
IFJldHVybnMKQEAgLTI3Miw3ICsyNzIsNyBAQCBwcml2YXRlOgogICAgIFNjYWxhYmxlSW1hZ2VE
ZWNvZGVyRnJhbWUqIG1fYnVmZmVyOwogCiAgICAgLy8gVGhlIGZpbGUgdG8gZGVjb2RlLgotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CiAKICAgICAvLyBBbiBp
bmRleCBpbnRvIHxtX2RhdGF8IHJlcHJlc2VudGluZyBob3cgbXVjaCB3ZSd2ZSBhbHJlYWR5IGRl
Y29kZWQuCiAgICAgc2l6ZV90IG1fZGVjb2RlZE9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fp
cm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1h
Z2VCYWNraW5nU3RvcmVDYWlyby5jcHAKaW5kZXggNjAxMjAzNzRmOWM0MzE2OGE2NTIxYjY5YzU0
YWZiZTJhMDBmNTVmNy4uNGEyMTI1NWE4YzBmYjY3OGU0YWFkZDc2NjNlYjdmOTE4ZTdmZTk0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8v
SW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAKQEAgLTM3LDcg
KzM3LDkgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZUJhY2tpbmdTdG9yZTo6aW1hZ2UoKSBjb25z
dAogICAgICAgICByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihjb25zdF9jYXN0PHVp
bnQzMl90Kj4obV9waXhlbHNQdHIpKSwKICAgICAgICAgQ0FJUk9fRk9STUFUX0FSR0IzMiwgc2l6
ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSwgc2l6ZSgpLndpZHRoKCkgKiBzaXplb2YodWlu
dDMyX3QpKSk7CiAgICAgc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBzX3N1cmZhY2VEYXRh
S2V5OwotICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0YShzdXJmYWNlLmdldCgpLCAmc19z
dXJmYWNlRGF0YUtleSwgbV9waXhlbHMuZ2V0KCksIFtdKHZvaWQqIGRhdGEpIHsgc3RhdGljX2Nh
c3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KGRhdGEpLT5kZXJlZigpOyB9KTsKKyAgICBj
YWlyb19zdXJmYWNlX3NldF91c2VyX2RhdGEoc3VyZmFjZS5nZXQoKSwgJnNfc3VyZmFjZURhdGFL
ZXksIG1fcGl4ZWxzLmdldCgpLCBbXSh2b2lkKiBkYXRhKSB7CisgICAgICAgIHN0YXRpY19jYXN0
PERhdGFTZWdtZW50Kj4oZGF0YSktPmRlcmVmKCk7CisgICAgfSk7CiAKICAgICByZXR1cm4gc3Vy
ZmFjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKaW5kZXggZTZhYmUwZDk1NDRiNmMx
ODVjNjQ1ZGVjZTA5ZjIzZjk1NjY2MDdjYi4uYjllYzAxYjhhZThlOGQyOWJjNzgyNTI2ZTA3NjUy
NTUxZTM1OWMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKQEAgLTM4LDcgKzM4LDcg
QEAgR0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AKIAogR0lGSW1hZ2VEZWNvZGVyOjp+R0lGSW1hZ2VE
ZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lkIEdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFy
ZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBHSUZJbWFnZURlY29k
ZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VEZWNvZGVyLmgKaW5kZXggMzVkZjMzZjZkZmM0ODNmZDg0NzEzNjZhZTUzYmIwYjk2MWNhZWQy
ZS4uYzc0NzE5OTk5Yjk4NmMxY2VmODQ3ODc1OWQyMzcxOGM5MDQyZDNlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJ
bWFnZURlY29kZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJs
ZUltYWdlRGVjb2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICJnaWYiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBi
b29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsOwogICAgIHNpemVfdCBmcmFtZUNvdW50
KCkgY29uc3QgZmluYWw7CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpIGNv
bnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAppbmRleCA0MjE0NmUwMzI5MzIzNjk5Nzg5
ZWI1ZTQyYWY0YzczZDM0YWI5Y2M2Li4xMDgyZmRmMGRmZjIzOTFlNTY1MzBhNDFmODdiYTQzOTgy
MzI3NTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaApAQCAtMjM3LDcgKzIzNyw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KKyAgICB2b2lkIHNldERh
dGEoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsg
bV9kYXRhID0gJmRhdGE7IH0KICAgICAvLyBGSVhNRTogaGFsdEF0RnJhbWUgc2hvdWxkIGJlIHNp
emVfdC4KICAgICBib29sIGRlY29kZShXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OkdJRlF1ZXJ5
LCB1bnNpZ25lZCBoYWx0QXRGcmFtZSk7CiAKQEAgLTMxNiw2ICszMTYsNiBAQCBwcml2YXRlOgog
ICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8R0lGRnJhbWVDb250ZXh0PiA+IG1fZnJhbWVzOwog
ICAgIHNpemVfdCBtX2N1cnJlbnREZWNvZGluZ0ZyYW1lOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKICAgICBib29sIG1f
cGFyc2VDb21wbGV0ZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBjNzE3
YzQ1ZDMwNTdjMDU1MzZlZTYwNTBmOTM5NzA0NmQxMGRmMmE3Li5jMDcxMzQ1YjhiZjM2OWI4MDI3
MWZiZGYwYTBjZTAxNzRmMDUwM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAt
NTIsNyArNTIsNyBAQCBJQ09JbWFnZURlY29kZXI6OklDT0ltYWdlRGVjb2RlcihBbHBoYU9wdGlv
biBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBJQ09JbWFnZURlY29kZXI6
On5JQ09JbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpz
ZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIElD
T0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9J
Q09JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2ljby9JQ09JbWFnZURlY29kZXIuaAppbmRleCBmYjdhOTAzYjJhMDc1Mzk0OTE3YWJiYmYxMWIx
Y2VkODNmZjQzMmEwLi4xMGVlOWI0ZDJlOGM5ZDg4N2UxZDJiOGJlMTM5YmI3NDI3MWQ1N2E4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNP
SW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAg
IC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gImljbyJfczsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRC
dWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAg
SW50U2l6ZSBzaXplKCkgY29uc3QgZmluYWw7CiAgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzZXRTaXpl
KGNvbnN0IEludFNpemUmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmlu
ZGV4IGZkMzQ1YmI3ODZmZjA4ZDk0NjU5MzBhYTRkZjQ4ZGYxN2FiZjMwNWMuLjVjZmFjOWYyMzU3
ZTJlMTJjNjg2NDAwYjI2Nzg4YWU3ZjhiZTEzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNv
ZGVyLmNwcApAQCAtMjIyLDcgKzIyMiw3IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdf
c2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIpCiAKIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBy
ZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQogewotICAgIGF1dG8g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1ZmZlcjsKICAgICBmb3IgKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIgPSBpbmZvLT5t
YXJrZXJfbGlzdDsgbWFya2VyOyBtYXJrZXIgPSBtYXJrZXItPm5leHQpIHsKICAgICAgICAgaWYg
KCFpc0lDQ01hcmtlcihtYXJrZXIpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0yMzYsMTMg
KzIzNiwxMyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBl
Z19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgICAgIHVuc2lnbmVkIG1hcmtlclNpemUgPSBtYXJrZXItPmRhdGFfbGVuZ3RoIC0gaWNj
SGVhZGVyU2l6ZTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOwor
ICAgICAgICBidWZmZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1h
cmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXplKTsKICAgICB9CiAKLSAgICBp
ZiAoYnVmZmVyLT5pc0VtcHR5KCkpCisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICByZXR1cm4gYnVmZmVy
LnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKIH0KICNlbmRpZgogCkBAIC0zMjAsNyArMzIwLDcg
QEAgcHVibGljOgogICAgICAgICBtX2J5dGVzVG9Ta2lwID0gc3RkOjptYXgobnVtQnl0ZXMgLSBi
eXRlc1RvU2tpcCwgc3RhdGljX2Nhc3Q8bG9uZz4oMCkpOwogICAgIH0KIAotICAgIGJvb2wgZGVj
b2RlKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgb25seVNpemUp
CisgICAgYm9vbCBkZWNvZGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQmIGRhdGEsIGJvb2wgb25seVNpemUpCiAgICAgewogICAgICAgICBtX2RlY29kaW5nU2l6ZU9u
bHkgPSBvbmx5U2l6ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29k
ZXIuY3BwCmluZGV4IGJlY2Y2NDUwMjc3ZWViNzRiMDlkZTUyZWUxODJmZjZlMTFlZDI3NjIuLjIw
NDczZjBlZWViYjU2YzcxMzE0ZjY1NTZiZGEwOTAzMzQ5MDc0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VE
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9q
cGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lk
IEpQRUcyMDAwSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCiAgICAgfQogCiAgICAgc3RydWN0IFJlYWRlciB7Ci0gICAgICAgIFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGE7CisgICAgICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50JiBkYXRhOwogICAgICAgICBzaXplX3Qgb2Zmc2V0OwogICAgIH0gcmVhZGVy
ID0geyAqbV9kYXRhLCAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYzEy
YzQ1OWE1YTNlNWIzNTFjNWJjYzYyYmYwMGI4YTI4MWJkNWJhMy4uNGNiZDMyM2Q5YTc1MDI2ZWY4
NjU4ZjM4MTZkZDczOGQzN2NhOGVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKQEAg
LTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVhZE9mZnNldCA9IDA7CiAgICAg
fQogCi0gICAgYm9vbCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0
YSwgYm9vbCBzaXplT25seSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpCisgICAgYm9vbCBkZWNvZGUo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgc2l6
ZU9ubHksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKQogICAgIHsKICAgICAgICAgbV9kZWNvZGluZ1Np
emVPbmx5ID0gc2l6ZU9ubHk7CiAgICAgICAgIFBOR0ltYWdlRGVjb2RlciogZGVjb2RlciA9IHN0
YXRpY19jYXN0PFBOR0ltYWdlRGVjb2Rlcio+KHBuZ19nZXRfcHJvZ3Jlc3NpdmVfcHRyKG1fcG5n
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAwMmYxYjA5ZGJjNzY1MTYw
MWY5MjJkZGUyOWY4MDVhNjU4NzFlMmQyLi5iMWJlYzU1ZTc4YzQzNDgwMWMyNTRhY2UwZGY1OTkz
MWEzNmI3NGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ3LDcgKzQ3
LDcgQEAgV0VCUEltYWdlRGVjb2Rlcjo6V0VCUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGUKIAogV0VCUEltYWdlRGVjb2Rlcjo6fldFQlBJ
bWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6c2V0RGF0
YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBXRUJQSW1h
Z2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTMyLDcgKzEzMiw3IEBAIHZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKHNpemVfdCBmcmFt
ZUluZGV4LCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBUaGlzIGNhbiBiZSBleGVjdXRl
ZCBib3RoIGluIHRoZSBtYWluIHRocmVhZCAod2hlbiBub3QgdXNpbmcgYXN5bmMgZGVjb2Rpbmcp
IG9yIGluIHRoZSBkZWNvZGluZyB0aHJlYWQuCiAgICAgLy8gV2hlbiBleGVjdXRlZCBpbiB0aGUg
ZGVjb2RpbmcgdGhyZWFkLCBhIGNhbGwgdG8gc2V0RGF0YSgpIGZyb20gdGhlIG1haW4gdGhyZWFk
IG1heSBjaGFuZ2UgdGhlIGRhdGEKICAgICAvLyB0aGUgV2ViUERlbXV4ZXIgaXMgdXNpbmcsIGxl
YXZpbmcgaXQgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLCBzbyB3ZSBuZWVkIHRvIHByb3RlY3Qg
dGhlIGRhdGEuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHByb3RlY3Rl
ZERhdGEobV9kYXRhKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ+IHByb3RlY3RlZERhdGEobV9kYXRhKTsKICAgICBXZWJQRGF0YSBpbnB1dERhdGEgPSB7
IHByb3RlY3RlZERhdGEtPmRhdGEoKSwgcHJvdGVjdGVkRGF0YS0+c2l6ZSgpIH07CiAgICAgV2Vi
UERlbXV4U3RhdGUgZGVtdXhlclN0YXRlOwogICAgIFdlYlBEZW11eGVyKiBkZW11eGVyID0gV2Vi
UERlbXV4UGFydGlhbCgmaW5wdXREYXRhLCAmZGVtdXhlclN0YXRlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1h
Z2VEZWNvZGVyLmgKaW5kZXggYWYzNjVlOWNmOWM3Y2U5NTM4YjY0YmE3ODliZjAxN2Q0OGY2ZWRl
MS4uZGQyOGJjODhkZjVjMGZhM2MxNTczNzg2OWIyNjA5NzNhYWEwZDIzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNv
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9X
RUJQSW1hZ2VEZWNvZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fldFQlBJbWFnZURlY29kZXIoKTsKIAogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJ3ZWJwIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgYm9vbCkgZmluYWw7CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogZnJh
bWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgUmVwZXRpdGlvbkNv
dW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBmcmFtZUNv
dW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcmFtZUNvdW50OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDkwOWU4ZTc2OGFkYjY4
YmFiMjg0NDVkMjgyNzM2MGEzZjNmYTIyYzMuLmIyMzc3ZmUzNDExZDJhYzQwMTUxM2JmMDlhZThj
Y2FlNzg2YmQ4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0
ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJk
SU9TLm1tCkBAIC0yMzYsMTQgKzIzNiwxNCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgogCiAjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmIChbdHlwZSBpc0Vx
dWFsVG9TdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUZsYXRSVEZEXSkgewotICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUs
IGNvbnRleHQoKSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBl
RmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2No
YW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVz
dWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiBidWZm
ZXIgJiYgcmVhZGVyLnJlYWRSVEZEKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6
IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiAgICAgfQogCiAgICAgaWYgKFt0eXBlIGlz
RXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUlRGXSkgewotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlUlRGLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0
KCkpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3Ry
YXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVJURiwgbV9w
YXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0g
Y2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9h
cmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIu
cmVhZFJURigqYnVmZmVyKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6
OkRpZE5vdFJlYWRUeXBlOwpAQCAtMjUxLDcgKzI1MSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCiAjZW5kaWYgLy8gIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogCiAgICAg
aWYgKFtzdXBwb3J0ZWRJbWFnZVR5cGVzKCkgY29udGFpbnNPYmplY3Q6dHlwZV0pIHsKLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKGl0ZW1JbmRleCwgdHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsK
KyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5
LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5h
bWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50
KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdl
ZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRJbWFnZShi
dWZmZXIucmVsZWFzZU5vbk51bGwoKSwgdHlwZSwgaXRlbUluZm8ucHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZSkgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RS
ZWFkVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tCmluZGV4IDE2N2NlZjAyZDc4ZDc5NGRlYWE4ZTVkZGFmNGRkNjZjM2Qy
Y2NhNDUuLjE2YjNkNWQ0NDE1ZDI1ODUxNWY2NjBhODZhYzZjZWZiZGNkYjY0Y2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5t
bQpAQCAtMzM4LDcgKzMzOCw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWludDY0X3QgUGxh
dGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0
cmluZyYpCitpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJikKIHsKICAgICByZXR1cm4gMDsKIH0K
QEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3Qg
UGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiAKICAgICBBU1NFUlQoY29udGVudC5jbGll
bnRUeXBlcy5zaXplKCkgPT0gY29udGVudC5jbGllbnREYXRhLnNpemUoKSk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDAsIHNpemUgPSBjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKTsgaSA8IHNpemU7
ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50
LmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6Y29udGVudC5jbGll
bnRUeXBlc1tpXV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6
Y29udGVudC5jbGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOwogCiAgICAgaWYgKGNvbnRlbnQu
ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkgewogICAgICAgICBhdXRvIHdlYkFyY2hpdmVEYXRhID0g
Y29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LT5jcmVhdGVOU0RhdGEoKTsKQEAgLTQ3OSw3
ICs0NzksNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICB9CiAKICAg
ICBpZiAoY29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0KSB7Ci0gICAgICAgIGlm
IChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2
ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJp
YnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmlu
Z0Zvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIGlm
IChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2
ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJp
YnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmlu
Z0Zvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVs
bHB0cl0pCiAgICAgICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGRSZXByZXNl
bnRpbmdPYmplY3Q6YXR0cmlidXRlZFN0cmluZ107CiAgICAgfQogCkBAIC01MDEsNyArNTAxLDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSBjdXN0b21EYXRhOwogICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKGNvbnRlbnQuY29u
dGVudE9yaWdpbik7Ci0gICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0
b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBl
OkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CisgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAKICAgICByZWdpc3Rlckl0ZW1Ub1Bhc3RlYm9h
cmQocmVwcmVzZW50YXRpb25zVG9SZWdpc3Rlci5nZXQoKSwgbV9wYXN0ZWJvYXJkLmdldCgpKTsK
IH0KQEAgLTUxNCwxNCArNTE0LDE0IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShj
b25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKICAgICBhdXRvJiBkYXRhID0g
cGFzdGVib2FyZEltYWdlLmNsaWVudERhdGE7CiAgICAgQVNTRVJUKHR5cGVzLnNpemUoKSA9PSBk
YXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSB0eXBlcy5zaXplKCk7
IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERh
dGE6ZGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CisgICAg
ICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0eXBlc1tpXV07CiAKICAgICBp
ZiAocGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSAmJiAhcGFzdGVib2FyZEltYWdlLnJlc291
cmNlTUlNRVR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gdXRpT3JNSU1FVHlwZSA9IHBh
c3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlOwogICAgICAgICBpZiAoIWlzRGVjbGFyZWRV
VEkodXRpT3JNSU1FVHlwZSkpCiAgICAgICAgICAgICB1dGlPck1JTUVUeXBlID0gVVRJRnJvbU1J
TUVUeXBlKHV0aU9yTUlNRVR5cGUpOwogCi0gICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVi
b2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gaW1h
Z2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERh
dGE6aW1hZ2VEYXRhLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopdXRpT3JNSU1FVHlwZV07CiAg
ICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFByZWZlcnJlZFByZXNlbnRhdGlv
blNpemU6cGFzdGVib2FyZEltYWdlLmltYWdlU2l6ZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlv
bnNUb1JlZ2lzdGVyIHNldFN1Z2dlc3RlZE5hbWU6cGFzdGVib2FyZEltYWdlLnN1Z2dlc3RlZE5h
bWVdOwpAQCAtNjM1LDcgKzYzNSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVy
UmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGU6V2Vi
UHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVJbmxpbmVdOwogCiAgICAgaWYgKGRhdGEuaGFzU2Ft
ZU9yaWdpbkN1c3RvbURhdGEoKSB8fCAhZGF0YS5vcmlnaW4oKS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZlciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVm
ZmVyKCktPmNyZWF0ZU5TRGF0YSgpKSB7CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFy
ZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKSkgewogICAgICAgICAgICAgLy8gV2Ugc3Rhc2ggdGhlIGxpc3Qgb2Ygc3Vw
cGxpZWQgcGFzdGVib2FyZCB0eXBlcyBpbiB0ZWFtRGF0YSBoZXJlIGZvciBjb21wYXRpYmlsaXR5
IHdpdGggZHJhZyBhbmQgZHJvcC4KICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBjb250ZW50cyBv
ZiBpdGVtIHByb3ZpZGVycyBjYW5ub3QgYmUgbG9hZGVkIHByaW9yIHRvIGRyb3AsIGJ1dCB0aGUg
cGFzdGVib2FyZCB0eXBlcyBhcmUKICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCB3aXRoaW4gdGhl
IGN1c3RvbSBkYXRhIGJsb2IgYW5kIHdlIG5lZWQgdG8gdmVuZCB0aGVtIHRvIHRoZSBwYWdlIHdo
ZW4gZmlyaW5nIGBkcmFnb3ZlcmAKQEAgLTY3Miw4ICs2NzIsOCBAQCBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKLSAg
ICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPmNyZWF0ZU5T
RGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKKyAgICAgICAgYXV0
byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsK
KyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29j
b2FUeXBlXTsKICAgICB9KTsKIAogICAgIHJldHVybiByZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0
ZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklP
Uy5tbQppbmRleCA1NDQ2NTNjNDQwM2QyNjA0MGE1NWQyM2U5MzY5MWJmZWRjYzkyYjQyLi5jYWJh
YWExMThkYzM0YjYxYTBhNmY1NDhkMzA0NjYyNjYxYjg4YjkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQpAQCAtODIsNyArODIs
NyBAQCBAZW5kCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFByZXZpZXdDb252ZXJ0ZXI6OlByZXZp
ZXdDb252ZXJ0ZXIoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFByZXZpZXdDb252
ZXJ0ZXJQcm92aWRlciYgcHJvdmlkZXIpCi0gICAgOiBtX3ByZXZpZXdEYXRhIHsgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSB9CisgICAgOiBtX3ByZXZpZXdEYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFy
ZWRCdWZmZXJCdWlsZGVyPihGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkgfQogICAg
ICwgbV9vcmlnaW5hbFJlc3BvbnNlIHsgcmVzcG9uc2UgfQogICAgICwgbV9wcm92aWRlciB7IHBy
b3ZpZGVyIH0KICAgICAsIG1fcGxhdGZvcm1EZWxlZ2F0ZSB7IGFkb3B0TlMoW1tXZWJQcmV2aWV3
Q29udmVydGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6KnRoaXNdKSB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDY3N2Y4Y2Fk
YWI1OTEyM2UxYjYyZDFiYWMyZDE5MDhiZjY3NmEyZjkuLjBkMjU0OThiODZiZWYxODVkMzc2OWQ1
YTViYzBiYzJmNzMxYzcwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tCkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShj
b25zdCBDb2xvciYgY29sb3IpCiAKIHN0YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBlcihj
b25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKLSAgICBhdXRvIHdyYXBw
ZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENv
bnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGlu
aXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIFt3cmFwcGVyIHNl
dFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHBhc3RlYm9h
cmRJbWFnZS51cmwudXJsLCBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSldOwogICAg
IHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9p
ZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVS
TFJlYWRpbmdQb2xpY3kgYWxsb3cKICAgICAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5n
KGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKICAgICAgICAgaWYgKGF1dG8gZGF0YSA9
IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUo
KSwgaXRlbUluZGV4LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewot
ICAgICAgICAgICAgaWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJp
YnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBkb2N1bWVudEF0dHJpYnV0ZXM6bmlsXSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGF0dHJp
YnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFJURkQ6ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1l
bnRBdHRyaWJ1dGVzOm5pbF0pKSB7CiAgICAgICAgICAgICAgICAgdGV4dC50ZXh0ID0gW2F0dHJp
YnV0ZWRTdHJpbmcgc3RyaW5nXTsKICAgICAgICAgICAgICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZFdyaXRlci5tbQppbmRleCAzNTNkMDA2YjkwY2JjZTYwOWU2ZGZkMzdjMjgw
ODEzMWYyMTRiOGRhLi44OGQwNDAyNTg0MzcwMmU0YWE0ZjVhOWE1NTZiODgxYzZlNDBjMmZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpA
QCAtMTI4LDExICsxMjgsMTEgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAg
ICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0U3RyaW5nOndlYkNvbnRlbnQtPmRhdGFJblN0
cmluZ0Zvcm1hdCBmb3JUeXBlOk5TUGFzdGVib2FyZFR5cGVTdHJpbmddOwogCiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCB3ZWJDb250ZW50LT5jbGllbnRUeXBlcy5zaXplKCk7ICsr
aSkKLSAgICAgICAgICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVu
dERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5
VVRJKHdlYkNvbnRlbnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CisgICAgICAgICAgICBbcGFz
dGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVU
SSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOwogCiAgICAgICAgIFBhc3RlYm9h
cmRDdXN0b21EYXRhIGN1c3RvbURhdGE7CiAgICAgICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKHdl
YkNvbnRlbnQtPmNvbnRlbnRPcmlnaW4pOwotICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0
YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBm
b3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6
OmNvY29hVHlwZSgpKSkuZ2V0KCldOworICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpj
dXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOwogICAgIH0KIAogICAgIHJldHVy
biBwYXN0ZWJvYXJkSXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGQ5YjdkMjQ4MDM4YzJkYjhhYWIwOTJjYjkx
ZmZhNTZmMmNiNGNlNzMuLmMzYjRkMmQ5NjIxNzQ3MWM3MzVlMjRmZTdhNWY5ZDkyMzdkZjQ3MDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9h
cmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVi
b2FyZE1hYy5tbQpAQCAtMjYzLDggKzI2Myw4IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJk
Ojp3cml0ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICAgICAgaWYgKHBs
YXRmb3JtVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYg
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVy
KSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNo
YXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlm
IChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oc3Ry
aW5nT3JCdWZmZXIpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6
OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2Fy
ZCBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAg
ICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVm
ZmVyKSkgewogICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmlu
Z09yQnVmZmVyKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7CiAKICAg
ICBpZiAoc2hvdWxkV3JpdGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6
ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkp
CisgICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFy
ZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAg
ICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkgZm9yVHlw
ZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0KIApAQCAtMzQx
LDEyICszNDEsMTIgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpCiAgICAgcmV0dXJuIFttX3Bhc3RlYm9h
cmQgZGVjbGFyZVR5cGVzOmNyZWF0ZU5TQXJyYXkocGFzdGVib2FyZFR5cGVzKS5nZXQoKSBvd25l
cjpuaWxdOwogfQogCi1pbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlw
ZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK2lu
dDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBp
ZiAoIWNhbldyaXRlUGFzdGVib2FyZFR5cGUocGFzdGVib2FyZFR5cGUpKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1
ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJv
YXJkVHlwZV07CisgICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6
YnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6
IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7CkBAIC01MDQsOCArNTA0
LDggQEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJk
SXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAgaWYgKCFwbGF0Zm9ybVR5cGUp
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYg
KGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09y
QnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7CisgICAg
ICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkpCiAgICAgICAgICAgICAgICAgW2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkg
Zm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3Ry
aW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlLmgKaW5kZXggNjgxM2Q1ZGE3ZGNiMGZjMjU5ZjFiZDFlZDBhNTRjMWExYTlmZDljZi4uNzk2
NTU0ZjRjOTc2NDUxNDAxZTFhMTIzNzQ2ODcwNDBiMjRiMWNjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclBy
aXZhdGUuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBNZWRpYVNhbXBsZTsKIGNsYXNzIE1lZGlh
U3RyZWFtUHJpdmF0ZTsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOwogY2xhc3MgUGxh
dGZvcm1BdWRpb0RhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiBzdHJ1Y3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOwogCkBAIC01
OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBB
dWRpb1ZpZGVvU2VsZWN0ZWRUcmFja3Mgc2VsZWN0VHJhY2tzKE1lZGlhU3RyZWFtUHJpdmF0ZSYp
OwogCi0gICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+
OworICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
ZG91YmxlKT47CiAgICAgdmlydHVhbCB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYm
KSA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgPSAwOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXJQcml2YXRlTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKaW5kZXggYzI1ZGY5MTU3NGE2NWJj
NDFiZGI3MDY3OGRjNDc3MjQ4MzZkZDE0NS4uNDk4ZDRlZTEzNDBjNGI5NDAwMWI2MGMzNDQ3OWI3
ZjcyZDVjOGU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcApAQCAtOTMs
NyArOTMsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6Z2VuZXJhdGVNb2NrQ291
bnRlclN0cmluZygpCiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpmZXRjaERhdGEo
RmV0Y2hEYXRhQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2J1ZmZlckxvY2sgfTsKICAg
ICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlIHsgbV9idWZmZXIuY2hhcmFjdGVyczgoKSwgbV9i
dWZmZXIubGVuZ3RoKCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLmgKaW5kZXggMjExZjc1ZWU3M2FmNjkxOWU3ZjRjOTk1OGUwY2QzNDgy
NTMyZDA5Zi4uOWMyYzc5N2I4MTk1MTJkOGZkNTc5MDE1ZGMzYjZlNDA1ZTNiYzYwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAg
LTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIo
TWVkaWFTYW1wbGUmKTsKICAgICB2b2lkIGFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBs
YXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIGNvbnN0IFdU
Rjo6TWVkaWFUaW1lJiwgc2l6ZV90KTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKLSAgICB2
b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYsIGRvdWJsZSk+JiYpOworICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYpOwogCiAgICAg
dm9pZCBwYXVzZSgpOwogICAgIHZvaWQgcmVzdW1lKCk7CkBAIC0xMDUsNyArMTA1LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgZmluaXNoZWRGbHVzaGluZ1NhbXBsZXMoKTsKICAgICB2b2lkIGNv
bXBsZXRlRmV0Y2hEYXRhKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKIAogICAgIGJv
b2wgbV9oYXNBdWRpbyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1ZpZGVvIHsgZmFsc2UgfTsK
QEAgLTExNyw4ICsxMTcsOCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVy
PiBtX3dyaXRlcjsKIAogICAgIExvY2sgbV9kYXRhTG9jazsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKLSAgICBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hE
YXRhQ29tcGxldGlvbkhhbmRsZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGEgV1RG
X0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNv
bXBsZXRpb25IYW5kbGVyOwogCiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+
IG1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yPiBtX2F1ZGlvQ29tcHJlc3NvcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCA4YzFmN2MwZTUz
MTNiNmI4NTZjZDNjZGY1ZTgzODRmMzZiN2I1M2Y1Li44NDg0MTAwZWFjNWUxMTVlOWIwY2YwMTIw
YmFiZjc4ZmIxYTEyNzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC0xMzcsMTAgKzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogICAgICAgICBtX3dy
aXRlci5jbGVhcigpOwogICAgIH0KIAotICAgIC8vIEF0IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxk
IG5vIGxvbmdlciBiZSB3cml0aW5nIGFueSBkYXRhLCBzbyBpdCBzaG91bGQgYmUgc2FmZSB0byBj
bG9zZSBhbmQgbnVsbGlmeSBtX2RhdGEgd2l0aG91dCBsb2NraW5nLgogICAgIGlmIChtX3dyaXRl
ckRlbGVnYXRlKQogICAgICAgICBbbV93cml0ZXJEZWxlZ2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRh
ID0gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZSht
X2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bnVsbHB0ciwgMCk7CkBAIC00OTUsNyArNDkzLDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlcjo6c3RvcFJlY29yZGluZygpCiAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE1lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcik7CiAKQEAgLTUzNywxOCArNTM1LDEzIEBAIHZvaWQgTWVkaWFSZWNvcmRl
clByaXZhdGVXcml0ZXI6OmNvbXBsZXRlRmV0Y2hEYXRhKCkKIHZvaWQgTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
CiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBpZiAoIW1fZGF0YSkg
ewotICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBzaXplKTsKKyAg
ICBtX2RhdGEuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEoKQorUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSgpCiB7CiAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBhdXRvIGRhdGEgPSBXVEZNb3Zl
KG1fZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgcmV0dXJuIG1fZGF0YS50YWtlKCk7CiB9
CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnBhdXNlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaAppbmRleCBhOWIyOWQ1
OWU5YWEzYjQ2NTU0MTViZDhiZWYwOTg0YzU0NGI3M2YwLi5jZGVlNjAzNTIzY2Q2Njk0NWY0Mjhm
Njk0Nzg5NjBmNmZkNzRjNzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9EYXRhVVJMRGVjb2Rlci5oCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIAogbmFtZXNwYWNlIERhdGFVUkxEZWNvZGVyIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IGZhZmRmZTg3YzgzN2U2MTU3
ZDJmMTNlOWE3Y2EwMDk2OWQ1MGIxYzcuLjRiZWJjYjUwOThkMTVjMjk2NmVkOGM3ZWUxMzZhZTNh
MmFlNGEyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlLmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlOwogY2xhc3MgVGlt
ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5jcHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZlYmU3MDQ4
ODRlMmU3MzY2Zi4uYmE4ZmQ0ZmY0ZjFlNDFjOWFkNGZhNzRhNDJiZTRlMmJkMTFhYTg0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZUNsaWVudC5jcHAKQEAgLTM2LDkgKzM2LDkgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OlJl
c291cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCiBSZXNvdXJjZUhhbmRsZUNsaWVudDo6
flJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFJlc291cmNlSGFuZGxl
Q2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNl
SGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3Ro
KQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWRE
YXRhTGVuZ3RoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCmluZGV4IGI2MzM3ZDU2Y2U4Y2Q5YmVmZjlk
ZmJlMTEzNjYyYmM3NzU2YjY1MzcuLmM0ZjA1NDg1ZjI4NzBiMTE2ZGE3Yzc2MGQzYzBmY2U5NmVj
MmI0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5k
bGU7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGVudW0gQ2FjaGVTdG9yYWdlUG9saWN5IHsKICAgICBTdG9yYWdlQWxs
b3dlZCwKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5k
RGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1
bnNpZ25lZCBsb25nIGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90Kiwg
dW5zaWduZWQsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIHsgfQotICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIAogICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0
b3IubW0KaW5kZXggMWZmMDY1MjE2ZmE2ODA4ODE5MzcxNGJjZjJiY2RhZjY5NmYwMjQwNi4uMDA4
ZTIyNmZmOTE5MDA0YjQ1MTQ4YTI0NzI2MTE2MTUwOTg5NjI3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25z
ZUdlbmVyYXRvci5tbQpAQCAtNDEsOCArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1
Y3QgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOwogICAgIERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UpCi0gICAgICAgIDogYnVmZmVyKFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgICAgICwgb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkK
KyAgICAgICAgOiBvcmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQogICAgICAgICAsIHJlc291cmNl
KCZyZXNvdXJjZSkgeyB9CiAKICAgICBzdHJ1Y3QgVGFza0RhdGEgOiBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8VGFza0RhdGE+IHsKQEAgLTU1LDkgKzU0LDkgQEAgc3RydWN0IFJhbmdlUmVzcG9uc2VH
ZW5lcmF0b3I6OkRhdGEgewogICAgICAgICBzaXplX3QgbmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRl
eCB7IDAgfTsKICAgICAgICAgZW51bSBjbGFzcyBSZXNwb25zZVN0YXRlIDogdWludDhfdCB7IE5v
dFN5bnRoZXNpemVkWWV0LCBXYWl0aW5nRm9yU2Vzc2lvbiwgU2Vzc2lvbkNhbGxlZENvbXBsZXRp
b25IYW5kbGVyIH0gcmVzcG9uc2VTdGF0ZSB7IFJlc3BvbnNlU3RhdGU6Ok5vdFN5bnRoZXNpemVk
WWV0IH07CiAgICAgfTsKLSAgICAKKwogICAgIEhhc2hNYXA8UmV0YWluUHRyPFdlYkNvcmVOU1VS
TFNlc3Npb25EYXRhVGFzaz4sIHN0ZDo6dW5pcXVlX3B0cjxUYXNrRGF0YT4+IHRhc2tEYXRhOwot
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
ZmZlcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG9yaWdpbmFsUmVzcG9uc2U7CiAgICAgZW51bSBj
bGFzcyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmcgOiBib29sIHsgTm8sIFllcyB9IHN1Y2Nl
c3NmdWxseUZpbmlzaGVkTG9hZGluZyB7IFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6Tm8g
fTsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNvdXJjZTsKQEAgLTEwNiwy
MiArMTA1LDIyIEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6cmVtb3ZlVGFzayhXZWJD
b3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2spCiB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0
b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVVJM
U2Vzc2lvbkRhdGFUYXNrICp0YXNrLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2UmIHJhbmdlLCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBEYXRhJiBk
YXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBidWZmZXIgPSBk
YXRhLmJ1ZmZlcjsKLSAgICBhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKIAogICAg
IC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIGp1c3QgbWFrZSBhIHJhbmdlIHdpdGgg
YSAqIGFmdGVyIHRoZSAvIGJ1dCBBVkZvdW5kYXRpb24gZG9lc24ndCBhY2NlcHQgc3VjaCByYW5n
ZXMuCiAgICAgLy8gSW5zdGVhZCwgd2UganVzdCB3YWl0IHVudGlsIHRoZSBsb2FkIGhhcyBjb21w
bGV0ZWQsIGF0IHdoaWNoIHRpbWUgd2Ugd2lsbCBrbm93IHRoZSBjb250ZW50IGxlbmd0aCBmcm9t
IHRoZSBidWZmZXIgbGVuZ3RoLgogICAgIGlmICghZXhwZWN0ZWRDb250ZW50TGVuZ3RoKQogICAg
ICAgICByZXR1cm47CiAKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSBkYXRhLmJ1ZmZlci5zaXplKCk7
CiAgICAgaWYgKGJ1ZmZlclNpemUgPCByYW5nZS5iZWdpbikKICAgICAgICAgcmV0dXJuOwotICAg
IAorCisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlci5nZXQoKTsKICAgICBhdXRvKiB0YXNr
RGF0YSA9IGRhdGEudGFza0RhdGEuZ2V0KHRhc2spOwogICAgIGlmICghdGFza0RhdGEpCiAgICAg
ICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0
YWluUHRyKHRhc2spLCBidWZmZXIsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBn
ZW5lcmF0b3IgPSBXZWFrUHRyIHsgKnRoaXMgfV0geworCisgICAgYXV0byBnaXZlQnl0ZXNUb1Rh
c2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCBidWZmZXJTaXplLCB0YXNrRGF0
YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1d
IHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKFt0YXNrIHN0
YXRlXSAhPSBOU1VSTFNlc3Npb25UYXNrU3RhdGVSdW5uaW5nKQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMTMwLDcgKzEyOSw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJl
c3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVCiAgICAgICAgIGF1
dG8mIHJhbmdlID0gdGFza0RhdGEtPnJhbmdlOwogICAgICAgICBhdXRvJiBieXRlSW5kZXggPSB0
YXNrRGF0YS0+bmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleDsKICAgICAgICAgd2hpbGUgKHRydWUp
IHsKLSAgICAgICAgICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyLT5zaXplKCkpCisgICAgICAg
ICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlclNpemUpCiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlclZpZXcgPSBidWZmZXItPmdldFNvbWVEYXRhKGJ5dGVJ
bmRleCk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlclZpZXcuc2l6ZSgpIHx8IGJ5dGVJbmRleCA+
IHJhbmdlLmVuZCkKQEAgLTE3NSw3ICsxNzQsNyBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gUmFu
Z2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEoY29ucwog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKGRhdGEuc3VjY2Vzc2Z1bGx5
RmluaXNoZWRMb2FkaW5nID09IERhdGE6OlN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6WWVz
KQotICAgICAgICByZXR1cm4gZGF0YS5idWZmZXItPnNpemUoKTsKKyAgICAgICAgcmV0dXJuIGRh
dGEuYnVmZmVyLnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgc2hvdWxkIHJldHVybiBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gaW5zdGVhZCBvZiB1cyBkb2luZyB0aGlzIGNoZWNrIGhlcmUuCiAgICAgYXV0byBleHBlY3Rl
ZENvbnRlbnRMZW5ndGggPSBkYXRhLm9yaWdpbmFsUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVu
Z3RoKCk7CkBAIC0yNDQsNyArMjQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBmaW5hbAorICAgIHZvaWQgZGF0YVJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikgZmluYWwKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
ICAgIGlmICghbV9nZW5lcmF0b3IpCkBAIC0yNTIsNyArMjUxLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgYXV0byogZGF0YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcpOwogICAg
ICAgICBpZiAoIWRhdGEpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRhdGEtPmJ1ZmZl
ci0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQo
V1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFz
a3NXaXRoRmluaXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
aAppbmRleCA0MDQ4ODVhZTYzNzZmY2U2ODA0MGQyYTA1YzAwYmVjNDdmZTE2YWE4Li5jZTRjMjU0
NWNkZTBmMmY0NmFjMzM4Zjk2YzQ5MDg4ZWI0NWQwOTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
aApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI7CiBj
bGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIGNsYXNzIFdlYkNvcmVOU1VSTFNl
c3Npb25EYXRhVGFza0NsaWVudDsKIGVudW0gY2xhc3MgU2hvdWxkQ29udGludWVQb2xpY3lDaGVj
ayA6IGJvb2w7CkBAIC0xNTgsNyArMTU4LDcgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBX
ZWJDb3JlTlNVUkxTZXNzaW9uIDogTlNPYmplY3QgewogLSAodm9pZClyZXNvdXJjZToobnVsbGFi
bGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzZW50Qnl0ZXM6KHVu
c2lnbmVkIGxvbmcgbG9uZylieXRlc1NlbnQgdG90YWxCeXRlc1RvQmVTZW50Oih1bnNpZ25lZCBs
b25nIGxvbmcpdG90YWxCeXRlc1RvQmVTZW50OwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUg
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlc3BvbnNl
Oihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSBjb21wbGV0aW9uSGFu
ZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGlj
eUNoZWNrKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKEJPT0wpcmVzb3VyY2U6KG51bGxhYmxl
IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNw
b25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2U7Ci0tICh2b2lk
KXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291
cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJilkYXRhOworLSAo
dm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKily
ZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKWRhdGE7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKXJlc3BvbnNlIHJlcXVlc3Q6KFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZCly
ZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJj
ZSBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWRXaXRoRXJyb3I6KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKWVycm9yOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBsb2FkRmFpbGVkV2l0aEVycm9yOihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRl
eCBlMDQwMTBhOTgxMWI0YzlhZTE0OTQ5OTg3MDFjYTE1NDg5ZjU3MTZjLi44Yzg5ZDkzODY1Nzkz
M2ExZGEyOTAzMTk5MTU4NGM0ZGIyZmFhOWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBA
IC02MDgsNyArNjA4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVy
cmlkZTsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGF0YVNlbnQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25n
IGxvbmcpIG92ZXJyaWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KSBvdmVycmlkZTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBs
b2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKQEAgLTY1Miw3ICs2NTIsNyBAQCBi
b29sIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25z
ZShQbGF0Zm9ybU1lZGlhUmVzb3VyYwogICAgIHJldHVybiBbbV90YXNrIHJlc291cmNlOiZyZXNv
dXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOnJlc3BvbnNlXTsKIH0KIAotdm9pZCBXZWJDb3JlTlNV
UkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmIHJlc291cmNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViQ29yZU5T
VVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiByZXNvdXJjZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewog
ICAgIExvY2tlciBsb2NrZXIgeyBtX3Rhc2tMb2NrIH07CiAgICAgaWYgKCFtX3Rhc2spCkBAIC05
MTUsMTEgKzkxNSwxMSBAQCAtIChCT09MKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2Uq
KXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFJlcwogICAgIHJldHVybiByZXNw
b25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRSYW5nZSkuaXNFbXB0
eSgpOwogfQogCi0tICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291
cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJilkYXRhCistICh2
b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0
YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpZGF0YQogewogICAgIEFT
U0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2Up
OwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSBS
ZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7Ci0gICAgICAgIGF1dG8g
bnNEYXRhID0gZGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHN0cm9uZ1NlbGYu
Z2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZDxO
U1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9IChpZDxOU1VSTFNlc3Npb25E
YXRhRGVsZWdhdGU+KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbi5kZWxlZ2F0ZTsKICAgICAgICAg
aWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9u
OmRhdGFUYXNrOmRpZFJlY2VpdmVEYXRhOildKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAppbmRleCBjMzZlMWY4ODc2NDMw
NDYwY2U3NTBhM2I4YzY1OGM3MzRlY2IxNTA4Li4zNDk0NDU5MjU0YWM5M2ZjMTljYjEyMTUwYTYx
YmMyYmNlZDAyZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgQ3VybERv
d25sb2FkOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJs
UmVzcG9uc2UmJiByCiB9CiAKIAotdm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVm
ZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxE
b3dubG9hZDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxE
b3dubG9hZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3du
bG9hZC5oCmluZGV4IGEzYWEwY2Y1ZmNkMjk1NWJiN2IxNmIxMWExYTgxY2E3NGFlNjFjOGQuLmNk
ZTQ0NDU3NzVmNzQ0MjMzMDUzMGI2NWIxMzU3YmE2YmZkOWJiODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKQEAgLTcyLDcg
KzcyLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0
JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlIHsgfQog
ICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25z
ZSYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0
JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2
ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2Fk
TWV0cmljcyYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxS
ZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVs
dGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBiYmRhM2ZiZGE3NTgzZDk5MTkzMWRmZTE2OWY3
YjNhOTEzM2U2ZGEyLi4wOTBkMDM5YmE0NWRlMTAyOGVkZjc2ODRjNmQ3ZDJmMjk2ZTNhMzRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRp
cGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC0xMTksMTIgKzExOSwxMiBAQCBDdXJsTXVsdGlw
YXJ0SGFuZGxlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQm
IGNsaWVudCwgY29ucwogCiB9CiAKLXZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIEN1cmxNdWx0aXBhcnRIYW5k
bGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RW5kKQogICAgICAgICByZXR1cm47IC8vIFRo
ZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3duIHNvIGlnbm9yZSBldmVyeXRoaW5nLgogCi0gICAgbV9i
dWZmZXIuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1fYnVmZmVy
LmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsK
IAogICAgIHdoaWxlIChwcm9jZXNzQ29udGVudCgpKSB7IH0KIH0KQEAgLTEzNyw3ICsxMzcsNyBA
QCB2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKCkKICAgICBpZiAobV9zdGF0
ZSAhPSBTdGF0ZTo6RW5kKSB7CiAgICAgICAgIC8vIEl0IHNlZW1zIHdlIGFyZSBzdGlsbCBub3Qg
YXQgdGhlIGVuZCBvZiB0aGUgcHJvY2Vzc2luZy4KICAgICAgICAgLy8gUHVzaCBvdXQgdGhlIHJl
bWFpbmluZyBkYXRhLgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBh
cnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkp
KTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUobV9idWZmZXIpKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0
ZTo6RW5kOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKaW5kZXggNWMwOGJjYzVlYjNlNGJi
Y2MwMjliNDc2Nzg2OGY0M2UyZjk1YzM0MS4uOWExYTFiYmQxOTM4YTE0ZjY5ZmNjZWUzZjBmODli
OTdhNGEyMTg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudDsKIGNsYXNz
IEN1cmxSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGUgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgQ3VybE11bHRpcGFy
dEhhbmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiwgY29uc3QgU3RyaW5nJik7CiAgICAg
fkN1cmxNdWx0aXBhcnRIYW5kbGUoKSB7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZSgpOwogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0
aXBhcnRIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKaW5kZXggZmQxM2ZkMzgxMzE0M2NiMjY1OWI4
ZmQxZGIyNDQ0NzY1ZTk4YTU4MC4uYzgxMzg4NmE4ZDVjNWZhNmMxMmQxNDEzMzE5MTAxYWYyNTAy
YTJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCkBAIC0yOCwxMiArMjgsMTIg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybFJlc3BvbnNlOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybE11
bHRpcGFydEhhbmRsZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4m
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIH5DdXJs
TXVsdGlwYXJ0SGFuZGxlQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBkMzViMGU4MzkxOTUxZDM4
NjM0ZTk5MDkzYjY4NjU2MjRkOTk3OTUxLi5kODJkZDNjMTBhYzY0NzEzNTk5MWZkN2FlNjY5N2U5
ZDhlMzEzZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTM5Niw3ICszOTYsNyBAQCBzaXplX3QgQ3VybFJlcXVl
c3Q6OmRpZFJlY2VpdmVIZWFkZXIoU3RyaW5nJiYgaGVhZGVyKQogCiAvLyBjYWxsZWQgd2l0aCBk
YXRhIGFmdGVyIGFsbCBoZWFkZXJzIGhhdmUgYmVlbiBwcm9jZXNzZWQgdmlhIGhlYWRlckNhbGxi
YWNrCiAKLXNpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCitzaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoaXNDb21wbGV0ZWRPckNh
bmNlbGxlZCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTQ0NCw3ICs0NDQsNyBAQCB2b2lkIEN1
cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgaGVhZGVycykKICAgICBpbnZva2VEaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIEFj
dGlvbjo6Tm9uZSk7CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhRnJvbU11
bHRpcGFydChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlcXVlc3Q6OmRp
ZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNzc3LDcgKzc3Nyw3IEBAIGNvbnN0IFN0cmluZyYgQ3VybFJlcXVlc3Q6OmdldERv
d25sb2FkZWRGaWxlUGF0aCgpCiAgICAgcmV0dXJuIG1fZG93bmxvYWRGaWxlUGF0aDsKIH0KIAot
dm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25s
b2FkRmlsZUlmRW5hYmxlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kb3dubG9hZE11dGV4IH07CkBAIC03
OTAsNyArNzkwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJ
ZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1f
ZG93bmxvYWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpCi0gICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxl
LCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9zZURvd25s
b2FkRmlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5oCmluZGV4IDZiZDhhNmJmYmEzNzUyY2VkZGRiYzUwMDllYWU4M2M0ZjBlZWQ2
NDEuLjNjN2NkZDg4M2ViNjJiZmU5MmNmMDQ0NWVkMjliZDI2ZWNlM2U5MjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCkBAIC00
Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEN1cmxSZXF1ZXN0Q2xpZW50
OwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTeW5j
aHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZTsKIAogY2xhc3MgQ3VybFJlcXVlc3QgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q3VybFJlcXVlc3Q+LCBwdWJsaWMgQ3VybFJlcXVlc3RTY2hl
ZHVsZXJDbGllbnQsIHB1YmxpYyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50IHsKQEAgLTEyMiw5
ICsxMjIsOSBAQCBwcml2YXRlOgogICAgIENVUkwqIHNldHVwVHJhbnNmZXIoKSBvdmVycmlkZTsK
ICAgICBzaXplX3Qgd2lsbFNlbmREYXRhKGNoYXIqLCBzaXplX3QsIHNpemVfdCk7CiAgICAgc2l6
ZV90IGRpZFJlY2VpdmVIZWFkZXIoU3RyaW5nJiYpOwotICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzaXplX3QgZGlkUmVjZWl2ZURhdGEoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUhlYWRlckZyb21N
dWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVRyYW5zZmVyKENVUkxjb2Rl
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNlbFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBmaW5hbGl6ZVRyYW5zZmVyKCk7CkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAg
ICBOZXR3b3JrTG9hZE1ldHJpY3MgbmV0d29ya0xvYWRNZXRyaWNzKCk7CiAKICAgICAvLyBEb3du
bG9hZAotICAgIHZvaWQgd3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hh
cmVkQnVmZmVyJik7CisgICAgdm9pZCB3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBjbG9zZURvd25sb2FkRmls
ZSgpOwogICAgIHZvaWQgY2xlYW51cERvd25sb2FkRmlsZSgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCmlu
ZGV4IDA4Yzg2YzdkNDY4NGJhNmY3OGQ2MTZiNjhkMDY5MDRjMzdhOTY2NzcuLjM0Nzk4MzJmNTc2
ZDQxMjhhZmE1MWM4MTQyNGNjZmQ3NDFkZjZhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCkBAIC0zNCw3
ICszNCw3IEBAIGNsYXNzIEN1cmxSZXF1ZXN0OwogY2xhc3MgQ3VybFJlc3BvbnNlOwogY2xhc3Mg
TmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxSZXF1ZXN0
Q2xpZW50IHsKIHB1YmxpYzoKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZyBi
eXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxS
ZXNwb25zZSYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1
cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBj
dXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVz
dCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRG
YWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUlu
Zm8mJikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4
IDgxOGQ1YTk1ZTNlMTI0ZGMzYTcyZjc0M2U1Y2Q0NTNkNzE3ZTAxMGYuLjMwNWQ0ZTVjOWZjMjcw
Nzc1Nzg3YjBmOWE5MTk3OWMwODg4OWE4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlLmNwcApAQCAtMTQyLDE1ICsxNDIsMTYgQEAgdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3UK
ICAgICB9KTsKIH0KIAotdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJl
Y2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3Zv
aWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxS
ZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRp
ZFJlY2VpdmVEYXRhKG1faGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwot
ICAgIGNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShidWZmZXIp
LCBidWZmZXItPnNpemUoKSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5t
YWtlQ29udGlndW91cygpOworICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJl
Y2VpdmVEYXRhKG1faGFuZGxlLCBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKTsKKyAgICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUo
Y29udGlndW91c0J1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVzb3Vy
Y2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xv
YWRNZXRyaWNzJiYgbWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgKaW5k
ZXggNmQ1NTg2NDQ1MmZkNDZlZTc4MDBlOTMxMjNiMTI4YmRjNjRjZTQ4Ny4uZGFmMGE1OWE0ZTU4
NmQ3MTE0YWJiNGU1ZWY5YzU0ZjZhOGJlZmM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjdXJsRGlkU2Vu
ZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25l
ZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRS
ZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgZmluYWw7Ci0gICAg
dm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+
JiYpIGZpbmFsOworICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkQ29t
cGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgZmluYWw7CiAgICAgdm9p
ZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2Vy
dGlmaWNhdGVJbmZvJiYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5k
ZXggYmM0ZGFhZmJmMjFhMTVjMGU2ZGQxYWNkNDYyMmFmYTU2YjdiOGQ1ZC4uMWY0YTE5MzEzMzEy
YzVkZDZhNDhhZDUzMzlkZmQyYzNiNWRlYzI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGll
bnQuaApAQCAtMzEsMTIgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTGVn
YWN5UHJldmlld0xvYWRlckNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPExlZ2FjeVByZXZpZXdM
b2FkZXJDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lQcmV2aWV3TG9hZGVy
Q2xpZW50KCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoTG9hZGluZygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgeyB9CiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5k
ZXggYzU0NDUzODVhNzdhYzEyYzA5ZWYyNDg2NjQ3M2Q2MmNiNjc5NDU1YS4uNDUzNjgxYmRhYjJl
NGEwNWEyMWZjNjhhOTQzNzAwZTA2Yzk5N2ExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtMzU2LDcgKzM1Niw3IEBAIFN0cmluZyBQYXN0
ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogc3Ry
dWN0IFBhc3RlYm9hcmRGaWxlQ291bnRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsK
ICAgICB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbCB7ICsrY291bnQ7IH0K
LSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJikgZmluYWwgeyArK2NvdW50OyB9CisgICAgdm9pZCByZWFkQnVmZmVyKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KSBmaW5hbCB7ICsrY291bnQ7IH0KIAogICAgIHVuc2lnbmVkIGNvdW50IHsgMCB9OwogfTsKQEAg
LTk3NCw3ICs5NzQsNyBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVEZXNj
cmlwdG9yKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIG1lbU9i
ajsKIH0KIAotc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFy
ZWRCdWZmZXIqIGRhdGEpCitzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250
ZW50KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgSEdMT0JBTCBtZW1PYmog
PSBHbG9iYWxBbGxvYyhHUFRSLCBkYXRhLT5zaXplKCkpOwogICAgIGlmICghbWVtT2JqKSAKQEAg
LTk4NiwxNSArOTg2LDE1IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNv
bnRlbnQoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAg
ICBpZiAoZGF0YS0+ZGF0YSgpKQotICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0
YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAg
IENvcHlNZW1vcnkoZmlsZUNvbnRlbnRzLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGRhdGEtPnNpemUoKSk7CiAKICAgICBHbG9iYWxVbmxvY2sobWVtT2JqKTsKIAogICAgIHJldHVy
biBtZW1PYmo7CiB9CiAKLXN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChj
b25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRhKQorc3Rh
dGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJp
bmcmIGZpbGVOYW1lLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmIChm
aWxlTmFtZS5pc0VtcHR5KCkgfHwgIWRhdGEpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTAzOCw4
ICsxMDM4LDggQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0
IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWQKICAgICAgICAgLy8gV3JpdGUgdGhl
IGRhdGEgdG8gdGhpcyB0ZW1wIGZpbGUuCiAgICAgICAgIERXT1JEIHdyaXR0ZW47CiAgICAgICAg
IEJPT0wgdGVtcFdyaXRlU3VjY2VlZGVkID0gRkFMU0U7Ci0gICAgICAgIGlmIChkYXRhLT5kYXRh
KCkpCi0gICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVI
YW5kbGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CisgICAgICAg
IGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0
ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0
YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CiAgICAgICAgIENsb3NlSGFuZGxlKHRlbXBGaWxlSGFu
ZGxlKTsKICAgICAgICAgaWYgKCF0ZW1wV3JpdGVTdWNjZWVkZWQpCiAgICAgICAgICAgICByZXR1
cm4gMDsKQEAgLTEwNzEsNyArMTA3MSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZVRv
RGF0YU9iamVjdChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCkKICAgICBpZiAoIWNh
Y2hlZEltYWdlIHx8ICFjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihlbGVtZW50LnJlbmRl
cmVyKCkpIHx8ICFjYWNoZWRJbWFnZS0+aXNMb2FkZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgU2hhcmVkQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRl
cmVyKGVsZW1lbnQucmVuZGVyZXIoKSktPmRhdGEoKTsKKyAgICBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBpbWFnZUJ1ZmZlciA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVsZW1lbnQu
cmVuZGVyZXIoKSktPmRhdGEoKTsKICAgICBpZiAoIWltYWdlQnVmZmVyIHx8ICFpbWFnZUJ1ZmZl
ci0+c2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q0RNRmFjdG9yeS5jcHAKaW5kZXggNDExZWRiYjM1MTdiODQ4ZmFjMDYzZDE5ZThjZDk1ZWMwMDM3
Y2Q2MS4uODRmYTI5Y2UxZjMwMGZlMjkwYjA0MTQ2NDhmMGY3MjkwYTdjYmViZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgYm9v
bCBNb2NrQ0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0pCiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uoa2V5U3lzdGVtLCAib3JnLndl
YmtpdC5tb2NrIik7CiB9CiAKLXZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25X
aXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGtleXMp
Cit2b2lkIE1vY2tDRE1GYWN0b3J5OjphZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmlu
ZyYgaWQsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYga2V5cykKIHsKICAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fc2Vzc2lvbnMuYWRkKGlkLCBXVEZNb3ZlKGtleXMpKTsKICAg
ICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgTW9ja0NE
TUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9y
PFJlZjxTaGFyZWRCCiAgICAgICAgIHZhbHVlLmFwcGVuZChXVEZNb3ZlKGtleSkpOwogfQogCi1W
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJvbVNl
c3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkKK1ZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29u
c3QgU3RyaW5nJiBpZCkKIHsKICAgICBhdXRvIGl0ID0gbV9zZXNzaW9ucy5maW5kKGlkKTsKICAg
ICBpZiAoaXQgPT0gbV9zZXNzaW9ucy5lbmQoKSkKQEAgLTgzLDcgKzgzLDcgQEAgVmVjdG9yPFJl
ZjxTaGFyZWRCdWZmZXI+PiBNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0
aElEKGNvbnN0IFN0cmkKICAgICByZXR1cm4gV1RGTW92ZShpdC0+dmFsdWUpOwogfQogCi1jb25z
dCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+KiBNb2NrQ0RNRmFjdG9yeTo6a2V5c0ZvclNlc3Np
b25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3QKK2NvbnN0IFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+KiBNb2NrQ0RNRmFjdG9yeTo6a2V5c0ZvclNlc3Npb25XaXRoSUQo
Y29uc3QgU3RyaW5nJiBpZCkgY29uc3QKIHsKICAgICBhdXRvIGl0ID0gbV9zZXNzaW9ucy5maW5k
KGlkKTsKICAgICBpZiAoaXQgPT0gbV9zZXNzaW9ucy5lbmQoKSkKQEAgLTIwMiw3ICsyMDIsNyBA
QCBib29sIE1vY2tDRE06OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJldHVybiBtX2Zh
Y3RvcnkgJiYgbV9mYWN0b3J5LT5zdXBwb3J0c1Nlc3Npb25zKCk7CiB9CiAKLWJvb2wgTW9ja0NE
TTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29sIE1vY2tDRE06OnN1cHBvcnRzSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAgICBpZiAoIXN1cHBvcnRlZEluaXREYXRh
VHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0yMTEsMTIgKzIxMSwxMyBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZQogICAgIHJldHVybiB0
cnVlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKLSAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxB
U0NJSShyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCisgICAgYXV0byBidWZmZXIg
PSByZXNwb25zZS5tYWtlQ29udGlndW91cygpOworICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFT
Q0lJKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcocmVzcG9u
c2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmlu
Zz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgp
KS5zcGxpdCgnICcpOwogCiAgICAgaWYgKCFyZXNwb25zZUFycmF5LmNvbnRhaW5zKFN0cmluZygi
dmFsaWQtcmVzcG9uc2UiX3MpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNjksOSAr
MjcwLDkgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlv
bihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXQKICAgICBjYWxsYmFjayhpbml0aWFsaXpl
KCkpOwogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2sp
Cit2b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNr
KQogewotICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5k
YXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOworICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVT
dHJpbmdWaWV3KGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNlcnRpZmlj
YXRlLT5zaXplKCkpOwogCiAgICAgY2FsbGJhY2soZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0
aWZpY2F0ZVN0cmluZ1ZpZXcsICJ2YWxpZCIpID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KQEAg
LTI5Nyw3ICsyOTgsNyBAQCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpNb2NrQ0RNSW5zdGFuY2VT
ZXNzaW9uKFdlYWtQdHI8TW9ja0NETUluc3RhbmNlPiYmIGluc3RhbgogewogfQogCi12b2lkIE1v
Y2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VU
eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBp
bml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgTW9ja0NETUZhY3Rv
cnkqIGZhY3RvcnkgPSBtX2luc3RhbmNlID8gbV9pbnN0YW5jZS0+ZmFjdG9yeSgpIDogbnVsbHB0
cjsKICAgICBpZiAoIWZhY3RvcnkpIHsKQEAgLTMyMyw3ICszMjQsNyBAQCB2b2lkIE1vY2tDRE1J
bnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBj
b25zdCBBdG9tUwogICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGxpY2Vuc2UuZGF0
YSgpLCBsaWNlbnNlLmxlbmd0aCgpKSwgc2Vzc2lvbklELCBmYWxzZSwgU3VjY2Vzc1ZhbHVlOjpT
dWNjZWVkZWQpOwogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9j
a0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25J
RCwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBM
aWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSog
ZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwog
ICAgIGlmICghZmFjdG9yeSkgewpAQCAtMzMxLDcgKzMzMiw3IEBAIHZvaWQgTW9ja0NETUluc3Rh
bmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5z
ZVR5cGUsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNw
b25zZVZlY3RvciA9IFN0cmluZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5z
cGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJl
c3BvbnNlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0
KCcgJyk7CiAKICAgICBpZiAocmVzcG9uc2VWZWN0b3IuY29udGFpbnMoU3RyaW5nKCJpbnZhbGlk
LWZvcm1hdCJfcykpKSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKaW5kZXggZjVjZGE1MDVjZjJhMzNjMTA1ZjAy
NWM5N2M5MzUwYTk2ODY5OGUxZS4uZDk2YzE1NmVlNGQyNzkxYjhiMDk5OGRhZjk0MGVjNzUzNzgw
N2JjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaApAQCAtNzcsOSAr
NzcsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5n
JiBpZCkgeyByZXR1cm4gbV9zZXNzaW9ucy5jb250YWlucyhpZCk7IH0KICAgICB2b2lkIHJlbW92
ZVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgeyBtX3Nlc3Npb25zLnJlbW92ZShpZCk7
IH0KLSAgICB2b2lkIGFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+PiYmKTsKLSAgICBjb25zdCBWZWN0b3I8UmVmPFNoYXJlZEJ1
ZmZlcj4+KiBrZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdDsKLSAg
ICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IHJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChj
b25zdCBTdHJpbmcmIGlkKTsKKyAgICB2b2lkIGFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3Qg
U3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJik7CisgICAg
Y29uc3QgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4qIGtleXNGb3JTZXNzaW9u
V2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0OworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+IHJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcm
IGlkKTsKIAogcHJpdmF0ZToKICAgICBNb2NrQ0RNRmFjdG9yeSgpOwpAQCAtOTYsNyArOTYsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9jYW5DcmVhdGVJbnN0YW5jZXMgeyB0cnVlIH07CiAgICAg
Ym9vbCBtX3N1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9z
dXBwb3J0c1Nlc3Npb25zIHsgdHJ1ZSB9OwotICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+PiBtX3Nlc3Npb25zOworICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gbV9zZXNzaW9uczsKIH07CiAKIGNsYXNzIE1v
Y2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZSB7CkBAIC0xMjEsOCArMTIxLDggQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nl
cnZlckNlcnRpZmljYXRlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9u
cygpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5h
bDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vz
c2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiAgICAgV2Vha1B0cjxNb2NrQ0RN
RmFjdG9yeT4gbV9mYWN0b3J5OwpAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6TW9jazsgfQogICAgIHZvaWQgaW5pdGlhbGl6
ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFs
bG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3ND
YWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFy
ZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJh
Y2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYp
IGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CiAgICAg
UmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAtMTU0
LDggKzE1NCw4IEBAIHB1YmxpYzoKICAgICBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8
TW9ja0NETUluc3RhbmNlPiYmKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7
CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFs
OwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNl
c3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAg
dm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3Zl
U2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ29udGVudEZpbHRlci5jcHAKaW5kZXggZmMxMjdiN2I2N2JlYTczNDQ2M2NkMmQ1YjA3NTZi
NTliZWJhNThhZS4uMDU5ZjNhMzg2YjZjZjVmYTc5YjNjMTg5NzAxNTMxM2Y3Y2RiNGVmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKQEAgLTExMCw3
ICsxMTAsNyBAQCB2b2lkIE1vY2tDb250ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQog
ICAgIG1heWJlRGV0ZXJtaW5lU3RhdHVzKERlY2lzaW9uUG9pbnQ6OkFmdGVyRmluaXNoZWRBZGRp
bmdEYXRhKTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gTW9ja0NvbnRlbnRGaWx0ZXI6OnJlcGxh
Y2VtZW50RGF0YSgpIGNvbnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTW9ja0NvbnRl
bnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRpZEJsb2Nr
RGF0YSgpKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9yZXBsYWNlbWVudERh
dGEuZGF0YSgpLCBtX3JlcGxhY2VtZW50RGF0YS5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlci5oCmluZGV4IDQxMWEzMDA5NDdiNTM5ZTI2YWE2YzY0YTAw
OTMyOTJlOWZmYmU2YjkuLjYzNWFjODRiZTc5Mzg0N2FhNTcyMTNkMDFmZmMxZTc0Zjc2Yjc1OTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKQEAgLTQyLDcg
KzQyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkg
b3ZlcnJpZGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0
YSgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlk
ZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCmluZGV4IDZk
NDhiZDAyZDFjOTFmN2VlZDg2NGExNmNkNzU2YmIwNzdkNjU1MmEuLjVmODU0NWViYTViMGU3Yjhi
YmFiYTVjNjkzYzJhNDM0MTg4YjJiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2NyaXB0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1
ZmZlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2NyaXB0QnVm
ZmVyOjpTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgYXV0byB1dGY4
ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0
ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRh
KCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0
eSgpCkBAIC00NiwxNCArNDYsMTMgQEAgU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHko
KQogICAgIHJldHVybiBTY3JpcHRCdWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH07CiB9
CiAKLQogU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIGlmICgh
bV9idWZmZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKLSAgICBtX2J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQp
IHsKKyAgICBtX2J1ZmZlci5nZXQoKS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQp
IHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChzZWdtZW50LmRhdGEo
KSwgc2VnbWVudC5zaXplKCkpKTsKICAgICB9KTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpOwpAQCAtNjEsMTUgKzYwLDEzIEBAIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkg
Y29uc3QKIAogYm9vbCBTY3JpcHRCdWZmZXI6OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21l
bnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci0+aGFzT25lU2Vn
bWVudCgpICYmIG1fYnVmZmVyLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVE
YXRhKCk7CisgICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLmdldCgpLT5oYXNPbmVTZWdt
ZW50KCkgJiYgbV9idWZmZXIuZ2V0KCktPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVk
RmlsZURhdGEoKTsKIH0KIAogdm9pZCBTY3JpcHRCdWZmZXI6OmFwcGVuZChjb25zdCBTdHJpbmcm
IHN0cmluZykKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBt
X2J1ZmZlci0+YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZl
ci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBib29sIG9wZXJhdG9y
PT0oY29uc3QgU2NyaXB0QnVmZmVyJiBhLCBjb25zdCBTY3JpcHRCdWZmZXImIGIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAppbmRleCBiMzlkOWMxMzAzMzAzMTFjMDRkN2YzNzk2
YjcxYTA0MzEzNGM2NjQ2Li5mZDJjMWFlMmY2M2I2MGQ3NGMzMGQyNDJhOTg5YTBiZmQ5MWRlNDk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKQEAgLTM4LDcgKzM4LDcgQEAg
Y2xhc3MgU2NyaXB0QnVmZmVyIHsKIHB1YmxpYzoKICAgICBTY3JpcHRCdWZmZXIoKSA9IGRlZmF1
bHQ7CiAKLSAgICBTY3JpcHRCdWZmZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisg
ICAgU2NyaXB0QnVmZmVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
ICAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiAgICAgewogICAgIH0KQEAgLTQ4
LDE3ICs0OCwxNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2NyaXB0
QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0g
ICAgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsg
fQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9CiAKLSAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRD
b3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4obV9idWZmZXItPmNvcHkoKSkgOiBudWxscHRyKTsgfQorICAgIFNjcmlwdEJ1ZmZl
ciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4obV9idWZmZXIuY29weSgpKSA6IG51bGxwdHIp
OyB9CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZm
ZXI7IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXIgfHwgIW1f
YnVmZmVyLT5zaXplKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlci5pc0VtcHR5KCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNTaW5n
bGVGaWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0OwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmlu
ZyYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOyAvLyBD
b250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBzY3JpcHQuCisgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBtX2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgogfTsKIAog
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
CmluZGV4IDc3NDE2ZWMwN2Q3YjY4YjEyOGUyOTYxZWRjNWQ2NDBkMDRkNGJkNDUuLjQwNjZmYjM1
MmViNWIwODdkNWQ4ZDQ3ZDgwMmZkMmMwYTZhODBmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogV29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9hZFJl
cXVlc3QoVVJMJiYgdXJsLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVT
b3VyY2UpCiAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAgICAgLCBtX2xvYWRlZEZyb21PcGFx
dWVTb3VyY2UobG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKKyAgICAsIG1fZGF0YShtYWtlVW5pcXVl
UmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KCkpCiB7CiB9CiAKQEAgLTc1LDEyICs3NiwyMSBAQCB2
b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2Vy
R2xvYmFsU2NvcGUpCiAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseSh3b3JrZXJHbG9iYWxTY29wZSwgV1RGTW92ZShyZXF1ZXN0KSwgKnRoaXMsIG9w
dGlvbnMpOwogfQogCitib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6aXNQZW5kaW5nKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gIW1faXNMb2FkaW5nICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgbV9k
YXRhLT5pc051bGwoKTsKK30KKwogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1
c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3VzdG9t
UGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAg
ICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkobV9kYXRhKTsKLSAgICAgICAgaWYgKG1f
ZGF0YSkgewotICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9kYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50
b1N0cmluZygpKTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7
CisgICAgICAgIGlmIChtX2RhdGEtPmdldCgpKQorICAgICAgICAgICAgY29udGlndW91c0RhdGEg
PSBtX2RhdGEtPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29udmVydFdPRkZU
b1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7CisgICAgICAgIGlmIChjb250aWd1b3Vz
RGF0YSkgeworICAgICAgICAgICAgbV9kYXRhLT5hcHBlbmQoKmNvbnRpZ3VvdXNEYXRhKTsKKyAg
ICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0
cmluZygpKTsKICAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQogICAg
ICAgICAgICAgICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CiAgICAgICAgIH0KQEAgLTExNyw5
ICsxMjcsNiBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiAgICAgaWYgKG1fZXJyb3JPY2N1cnJl
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2RhdGEpCi0gICAgICAgIG1fZGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KICAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRh
TGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJG
b250TG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmgKaW5kZXggYjlmY2ZiMWQ2ZmVhOGFkNWU3ODBiZGVlYmM1YzZlMDRhMWU4NjNjNy4u
MWIzZDc4NzBmMTI4YmZlNTM4ZWU2Yzk4NTljZGFhZTgxZTQ1ZTJhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCkBAIC0zMCwxMyArMzAsMTQg
QEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIKICNpbmNsdWRlICJUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsK
IGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogCiBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0
YTsKQEAgLTUxLDcgKzUyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGNvbnN0IFVSTCYg
dXJsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV91cmw7IH0KLSAgICBib29sIGlzUGVuZGluZygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX2lzTG9hZGluZyAmJiAhbV9lcnJvck9jY3VycmVkICYm
ICFtX2RhdGE7IH0KKyAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wg
aXNMb2FkaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0xvYWRpbmc7IH0KICAgICBib29s
IGVycm9yT2NjdXJyZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Vycm9yT2NjdXJyZWQ7IH0K
IApAQCAtNzYsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIEZvbnRMb2FkUmVxdWVzdENsaWVudCog
bV9mb250TG9hZFJlcXVlc3RDbGllbnQgeyBudWxscHRyIH07CiAKICAgICBXZWFrUHRyPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ+IG1fY29udGV4dDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X2RhdGE7CisgICAgVW5pcXVlUmVmPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+IG1fZGF0YTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9mb250Q3VzdG9tUGxhdGZv
cm1EYXRhOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAppbmRleCBlYjI2NmI2YzA3ZTY3M2Q5
MTY2Y2FjZTZiMzM5MTlkODBlYmJmMzFjLi4wOTc1NDNlMWIzYjMwZmYzMTQ3ZDkyMzJhNThjZTRh
OWU2MmYzZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaApAQCAtNDIsNyArNDIsNyBAQCBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlOwogY2xhc3MgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNw
YWNlIFNlcnZpY2VXb3JrZXJGZXRjaCB7CiBjbGFzcyBDbGllbnQgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8Q2xpZW50LCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CkBAIC01
MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVkaXJl
Y3Rpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3Jt
RGF0YT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaCgpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdl
LmNwcAppbmRleCA4OWE4NzVmOGFmYzBkNjIzNTVhYzYyMjlhNjRjMWNhNDNkMTg1NjUyLi45YThm
YjM1Y2E1MzYxMDViYjZkNmZjNDZlZTEyMjQ1OTMzZjcwYmY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3Bw
CkBAIC0xMjcsNyArMTI3LDggQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6cmV0cmll
dmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXMKICAgICB9CiAKICAg
ICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBkaXNhYmxlIGZpbGUgbWFwcGluZyBpbiBtb3JlIGNh
c2VzIHRvIGF2b2lkIGhhdmluZyB0b28gbWFueSBmaWxlIGRlc2NyaXB0b3JzIG9wZW4/Ci0gICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgs
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGlu
ZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hh
cmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hv
dWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1h
cHBpbmc6OlllcyA6IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICBy
ZXR1cm4gYnVmZmVyOwogfQogCiB2b2lkIFNXU2NyaXB0U3RvcmFnZTo6Y2xlYXIoY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggYWI5OTYwM2VhNTNlMjQ2YjYzMzIxZmJkNDE0MWNj
NWUyOWNlOTZiNC4uZmNjYzJhOWVkMjBkNzQ3YzA5YzYxNmI0OThlNTMwZWY3OGE4ZTU2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xMTgsNiArMTE4LDcgQEAgWE1M
SHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpCiAgICAgLCBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkKGZhbHNlKQogICAgICwgbV9yZWFkeVN0
YXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihVTlNFTlQpKQogICAgICwgbV9yZXNwb25zZVR5cGUo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcpKQorICAgICwg
bV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIobWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVy
PigpKQogICAgICwgbV9wcm9ncmVzc0V2ZW50VGhyb3R0bGUoKnRoaXMpCiAgICAgLCBtX3RpbWVv
dXRUaW1lcigqdGhpcywgJlhNTEh0dHBSZXF1ZXN0Ojp0aW1lb3V0VGltZXJGaXJlZCkKIHsKQEAg
LTIwNyw4ICsyMDgsOCBAQCBSZWY8QmxvYj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNl
QmxvYigpCiAKICAgICAvLyBGSVhNRTogV2UganVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIE5l
dHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNlbmRpbmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmljaWVu
dC4KICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBpZiAobV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXIpCi0gICAgICAgIGRhdGEgPSBzdGQ6OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyLCBudWxscHRyKS0+ZXh0cmFjdERhdGEoKTsKKyAgICBpZiAoIW1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyLT5pc051bGwoKSkKKyAgICAgICAgZGF0YSA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
LT50YWtlKCktPmV4dHJhY3REYXRhKCk7CiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRDb250ZW50VHlw
ZSA9IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShyZXNwb25zZU1JTUVUeXBlKEZpbmFsTUlN
RVR5cGU6OlllcykpOyAvLyByZXNwb25zZU1JTUVUeXBlIGRlZmF1bHRzIHRvIHRleHQveG1sIHdo
aWNoIG1heSBiZSBpbmNvcnJlY3QuCiAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIFdURk1vdmUoZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50VHlwZSk7CiB9
CkBAIC0yMTgsOCArMjE5LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBYTUxIdHRwUmVxdWVzdDo6
Y3JlYXRlUmVzcG9uc2VBcnJheUJ1ZmZlcigpCiAgICAgQVNTRVJUKHJlc3BvbnNlVHlwZSgpID09
IFJlc3BvbnNlVHlwZTo6QXJyYXlidWZmZXIpOwogICAgIEFTU0VSVChkb25lV2l0aG91dEVycm9y
cygpKTsKIAotICAgIGF1dG8gcmVzdWx0ID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPyBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVy
OjpjcmVhdGUobnVsbHB0ciwgMCk7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxs
cHRyOworICAgIGF1dG8gcmVzdWx0ID0gIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5pc051bGwo
KSA/IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT50YWtlKCktPnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCkgOiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKQEAgLTc0MSw3ICs3NDEsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlc3Bv
bnNlQnVmZmVycygpCiAgICAgbV9yZXNwb25zZUVuY29kaW5nID0gU3RyaW5nKCk7CiAgICAgbV9j
cmVhdGVkRG9jdW1lbnQgPSBmYWxzZTsKICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQgPSBudWxscHRy
OwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAgICBtX2JpbmFyeVJl
c3BvbnNlQnVpbGRlci0+cmVzZXQoKTsKICAgICBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkID0gZmFs
c2U7CiB9CiAKQEAgLTEwNjUsOCArMTA2NSw2IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCiAgICAgICAgIG1fcmVzcG9u
c2VCdWlsZGVyLmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsKICAgICBlbHNl
IHsKICAgICAgICAgLy8gQnVmZmVyIGJpbmFyeSBkYXRhLgotICAgICAgICBpZiAoIW1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+
YXBwZW5kKGRhdGEsIGxlbik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5o
CmluZGV4IDcyODk0YWY2Y2M0N2RiYWU1ZTc1YzNhODA3OTA5ZWYyODRmNmQ1OTcuLjE2MmNhOTVh
ZWI3NTQ0ODliZDZjZDhjZGM1MDg2MmM4NDc3N2JhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNs
aWVudC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlICJYTUxIdHRwUmVx
dWVzdEV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50
VGhyb3R0bGUuaCIKICNpbmNsdWRlIDx2YXJpYW50PgpAQCAtNDUsNyArNDYsNyBAQCBjbGFzcyBC
bG9iOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIFNlY3VyaXR5
T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsK
IGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyOwogY2xh
c3MgVVJMU2VhcmNoUGFyYW1zOwpAQCAtMjM3LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAKICAgICBS
ZWZQdHI8RG9jdW1lbnQ+IG1fcmVzcG9uc2VEb2N1bWVudDsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOworICAgIFVuaXF1ZVJlZjxTaGFyZWRCdWZm
ZXJCdWlsZGVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsKIAogICAgIFN0cmluZ0J1aWxkZXIg
bV9yZXNwb25zZUJ1aWxkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcAppbmRleCA1NzMwNjdlM2RkMDUw
ZmViN2M1NzlkMDAxMDJlZTlmNjA0NWI1MzEzLi4zMWMyZDc2ZjJlZTFiOWQyNDliMDAxYjdlZmY4
OTJlYzJhNzQ1NmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFJlbW90
ZUNETUluc3RhbmNlUHJveHk6On5SZW1vdGVDRE1JbnN0YW5jZVByb3h5KCkKICAgICBtX2luc3Rh
bmNlLT5jbGVhckNsaWVudCgpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnVu
cmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiB0eXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5
Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgdHlw
ZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCiB7CiAgICAgaWYgKCFt
X2NkbSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKaW5kZXggOGU3M2QzZDlhNjRiOThi
ZmMwMDkzNmNkNDdjNGMyNWE5Mjc5ZjJjOC4uMDJjNWNkMzdhZTU0ODAyZjZkMGM4ZGNjY2IwYmE4
MGNmMzM4OGMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAg
ICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRyPFJlbW90ZUNETVByb3h5PiYmLCBSZWY8
V2ViQ29yZTo6Q0RNSW5zdGFuY2U+JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZp
Z3VyYXRpb24+JiYsIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllcik7CiAKICAgICAvLyBDRE1J
bnN0YW5jZUNsaWVudAotICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNl
aXZlZChjb25zdCBTdHJpbmcmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
KyAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3Ry
aW5nJiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAg
ICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5jcHAKaW5kZXggZTU3NjZjMjMzNGNmZDM4OTMxMGNkNGIyMTcyM2NhYmEzNzQyZmM3
Yy4uZGU4MjczYjljZjUwMGE0ZDY2YWExNDRlZGUwMjAxZWVmMWVkODYyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIEF0b21T
dHJpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fc2Vzc2lvbi0+cmVxdWVzdExp
Y2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0YS5idWZmZXIoKS5yZWxlYXNlTm9uTnVs
bCgpLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChSZWY8U2hhcmVkQnVmZmVy
PiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVh
bGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0
YWJsZSB7CisgICAgbV9zZXNzaW9uLT5yZXF1ZXN0TGljZW5zZSh0eXBlLCBpbml0RGF0YVR5cGUs
IGluaXREYXRhLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RGTW92
ZShjb21wbGV0aW9uKV0gKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAg
IGNvbXBsZXRpb24oV1RGTW92ZShtZXNzYWdlKSwgc2Vzc2lvbklkLCBuZWVkc0luZGl2aWR1YWxp
emF0aW9uLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZWVkZWQpOwogICAg
IH0pOwogfQpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHk6OmNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTCiAKIHZv
aWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNh
bGxiYWNrJiYgY29tcGxldGlvbikKIHsKLSAgICBtX3Nlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRh
KHNlc3Npb25JZCwgdHlwZSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoQ0RN
SW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNlcywgc3RkOjpvcHRp
b25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBleHBpcmVkU2Vzc2lvbnNEYXRhLCBDRE1JbnN0YW5j
ZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgIG1fc2Vzc2lv
bi0+cmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlLCBbY29tcGxldGlvbiA9IFdURk1v
dmUoY29tcGxldGlvbildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtl
eVN0YXR1c2VzLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBl
eHBpcmVkU2Vzc2lvbnNEYXRhLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNj
ZWVkZWQpIG11dGFibGUgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVy
Q29weT4gZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlOwogICAgICAgICBpZiAoZXhwaXJlZFNl
c3Npb25zRGF0YSkKICAgICAgICAgICAgIGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVyZW5jZSA9IElQ
Qzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKCpleHBpcmVkU2Vzc2lvbnNEYXRhKSk7CkBAIC0x
NDksNyArMTQ5LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRl
S2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHUKICAgICBncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpVcGRhdGVLZXlTdGF0dXNlcyhXVEZNb3ZlKGtleVN0YXR1c2VzKSksIG1faWRl
bnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlbmRN
ZXNzYWdlKENETU1lc3NhZ2VUeXBlIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkK
K3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKENETU1lc3Nh
Z2VUeXBlIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7CiAg
ICAgaWYgKCFtX2NkbSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHku
aAppbmRleCA4YTYxZjlkNWZhYmM4NDg2YTdhMGU4NjBmNGM2MzEyYzBiNDQ1NTE0Li5mZTczMDk3
MTMxZTBiYjIwYTUwMDFlMTUwMTYwMmQ2NTE4NmIzMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkuaApAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ0RNSW5zdGFuY2VT
ZXNzaW9uQ2xpZW50CiAgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3Im
JikgZmluYWw7Ci0gICAgdm9pZCBzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSwg
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHNl
bmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKICAgICB2b2lkIHNlc3Npb25JZENoYW5n
ZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlE
KCkgZmluYWwgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKaW5kZXggOWFiMzU3NWY0YzNiNTU5
NTU1YjliODdiMjMzNzFiMWIxYTY2ZGMxNy4uZjdjYjZhNjNlYjkzM2FiZDRkNDUzYTIyYWIyOTRm
MTMwMzIzMmIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNUHJveHkuY3BwCkBAIC02MywxMiArNjMsMTIgQEAgUmVtb3RlQ0RNUHJveHk6OlJlbW90
ZUNETVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIHN0ZDo6
dW4KIAogUmVtb3RlQ0RNUHJveHk6On5SZW1vdGVDRE1Qcm94eSgpID0gZGVmYXVsdDsKIAotYm9v
bCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBl
LCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCitib29sIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YSh0
eXBlLCBkYXRhKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNUHJveHk6OnNh
bml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKK1JlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gbV9wcml2
YXRlLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKaW5kZXggNjkyNGU3NGUzZjUwMTFiZTIx
NWJlNGJkOTZiMjM0ODI2NDcwZjQyMy4uM2I2NmM3NzU3ODcwNjllOTc2ZWUwNjRmOTZmZjA3YzBm
NzEyYTkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TVByb3h5LmgKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiBlbnVtIGNsYXNzIENETVJlcXVpcmVtZW50IDogdWludDhfdDsKIGVu
dW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgOiB1aW50OF90Owogc3RydWN0IENETUtleVN5c3RlbUNv
bmZpZ3VyYXRpb247CkBAIC01OCw4ICs1OCw4IEBAIHB1YmxpYzoKIAogICAgIFJlbW90ZUNETUZh
Y3RvcnlQcm94eSogZmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZmFjdG9yeS5nZXQoKTsgfQog
Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBz
YW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpOwor
ICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKTsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2Fu
aXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpOwogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJv
eHkuaAppbmRleCBlMmNkMDVkN2NjNzRmMjBlYzY5ZmFkZmUzZWUwODU3NTkyYWQ4NzliLi5kZThm
NmRmNTVhNmUxZmE4YmU5NjZmOTQxZTA3ZmUyZjVjNTAyMWE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaApAQCAtMzYs
NyArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oCmluZGV4IGYxNGM2
MjdmNjU5M2UxYTg3OGQwZjQ1OTkyYjNjNDFiMjIyYzdmMDAuLjE1NDZiZGZkZmRjZjA5MTA4Nzg5
NDRmMzQwNzk2N2E3YWIzOGJmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKQEAgLTM3LDcg
KzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2FjeUNETTsKIGNsYXNzIExl
Z2FjeUNETVNlc3Npb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgSVBDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAppbmRleCBjNDVlNTI1
NWQ2N2I1MmM3YWUxMDQ0OTk4OGNlMDE5MGM3ZmZiNTM4Li42MTdmNDc2ODk1NjQyZGVjMjMyNTRi
NTQwZWU4MTkxMWFjNGEyZGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQg
UmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRf
dCB0b3RhbEJ5dGVzVG9CZVNlCiAgICAgICAgIG1fY2xpZW50LT5kYXRhU2VudCgqdGhpcywgYnl0
ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVzb3Vy
Y2U6OmRhdGFSZWNlaXZlZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFJlbW90ZU1l
ZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKQogewogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZl
ZCgqdGhpcywgV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaAppbmRleCBkMTNkMjVmNjVmMDIyNGE2Yzc2
N2Y2OWE0ZDQxOWNkMDUzYmI3OTVkLi41YjdhN2UyYTc0MjQ0MzJkODZjYjI4YTFiZTcxNzE4YTE2
NzM3NWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlLmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01Nyw3
ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpOwogICAgIHZvaWQgcmVkaXJlY3RSZWNl
aXZlZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYpPiYmKTsKICAgICB2b2lkIGRhdGFTZW50KHVpbnQ2NF90LCB1aW50NjRfdCk7Ci0gICAgdm9p
ZCBkYXRhUmVjZWl2ZWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBk
YXRhUmVjZWl2ZWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAg
IHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
OwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlci5jcHAKaW5kZXggN2U1NzJiM2E3NGEyMDI3ZTc0Y2FhNzY3MmU1MmRhMGFm
ODM0MjA3Mi4uZTgzZjkxNDNkMjBhNzJlMmJlNGZmY2JmZWQxM2IwYmI0ZGQzMWUwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3LDggQEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2
aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZv
aWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgbV93cml0ZXItPmZldGNoRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1dG8gdGltZUNvZGUpIG11dGFibGUgewotICAg
ICAgICBhdXRvKiBwb2ludGVyID0gZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHI7CisgICAg
ICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigpOworICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVy
ID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJ
UEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0
aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCmluZGV4IDUyY2M1ZGExMjFhMmZi
NTlkOGNmMDU5M2I2ODUwOWZkNjU1YzBjZGMuLjcxZmQwMjIyOWJiYjFjNTczMjZmZGZjZmUyNmMx
MWY3NjFhYmNmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7IH0KICAgICB2b2lk
IHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92
ZXJyaWRlIHsgfTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVy
cmlkZSB7IH07CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNr
ZXIuY3BwCmluZGV4IDNmMzllYjMyZjFhYTgwNzY3ODVkYTc5ZWUxMWRhZDhmMGMzMjZiNzkuLmQ4
OTIwZTk4NzY0ZmQ5YjY0YjljZGRjNjBhMWQ4NGQ2MTliMmQ0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlci5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJgogICAg
IGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6VXNlKTsKIH0KIAotdm9pZCBOZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpCit2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURh
dGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCiB7CiAgICAgQ09SU19D
SEVDS0VSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YSIpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmgKaW5kZXggYmJiMTQ2MmEzMTYxZTJmY2U5ZWE1Nzg0NGIxOWI5M2U2MTljODFiMC4uZTExYmY1
NjMxOTA3YWU0NzMzNmVmODVhNWQyMmU4ODM1NzQ2NTFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5o
CkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdv
dGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5l
Z290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1
aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxv
Y2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrLmgKaW5kZXggZDYwMThmNjEzODNhZTNhNTFlOWQ0NzIyY2Y2YTYwZTJkOGI4N2E3ZC4u
ZTA0OWU1YjEyZGRlNWZlNTFiNDY5NTUyODlhN2E3ZjY5OTgyYWZjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCkBAIC00Myw3ICs0Myw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xh
c3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFu
ZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0
b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tl
ZCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAK
aW5kZXggYmFjMDIyYWI0NTQzMGY2NTFiMTg5YWMwMTIwN2EwNjA2MDhjMTY3MS4uNzk3NWQ0MWJh
ZDg5MTVmZWVkYmRhYjE1NTRlODFlMWRiMjAzMGY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIE5ldHdv
cmtMb2FkOjpub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3Bv
bnNlLCBOZWdvdGlhdAogICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVSZXNwb25zZShXVEZN
b3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5l
dHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3Zv
aWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgdGhlIGVuY29kZWQg
ZGF0YSBsZW5ndGgsIG5vdCB0aGUgZGVjb2RlZCBkYXRhIGxlbmd0aC4KICAgICBhdXRvIHNpemUg
PSBidWZmZXItPnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuaAppbmRleCBjMzc3M2M5ODc4NTUzY2U1MzRkMDU0YWJmZmRkZWJiMjllZTA4NGQyLi5lZTVl
YjAwNmFhMzc5Yjc4ZmNiYzBiZDE3NGUzMmJkNjM5Zjk1ZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21w
bGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRp
ZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRh
KHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1Nl
bmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCmluZGV4IDBhNWY2NmJkOTY3
ZWM5ZmRmNjY0ZTUyZTVhZjM5NGU0OGVjZTFmN2IuLjM0OGNmZmI5ZThlMjVlZTgzYmJiMzlhMDJj
ZDNjZjZkMjg1NGQzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkQ2xpZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNz
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGVu
dW0gY2xhc3MgUG9saWN5QWN0aW9uIDogdWludDhfdDsKIH0KIApAQCAtNTEsNyArNTEsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBi
eXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIHsgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAppbmRleCBlNTBjZjRhYmJlNTY0ZTRjYTNmYjcyNmNhYTlkNTY5YzU0YjA5ZDcyLi4wZTVl
YjVhZGMwMTJmMWYyZWE3NjZmY2MxYTQ1NTM5ZmQ1ZDg5YzA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04
NywxNCArODcsMTQgQEAgc3RydWN0IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNM
b2FkRGF0YSB7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKIH07CiAKLXN0YXRpYyB2b2lkIHNl
bmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hy
b25vdXNMb2FkRGF0YSYgZGF0YSwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3N0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hy
b25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSYg
ZGF0YSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgQVNTRVJUKGRhdGEuZGVsYXllZFJlcGx5KTsK
ICAgICBBU1NFUlQoIWRhdGEucmVzcG9uc2UuaXNOdWxsKCkgfHwgIWRhdGEuZXJyb3IuaXNOdWxs
KCkpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3BvbnNlQnVmZmVyOwogICAgIGlmIChidWZm
ZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIHJlc3BvbnNlQnVmZmVyLmFwcGVuZChidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICByZXNwb25zZUJ1ZmZlci5hcHBl
bmQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAog
ICAgIGRhdGEucmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0
d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRlKG1ldHJpY3MpKTsKIApAQCAtMTA1LDkgKzEwNSwxMSBA
QCBzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZAogTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
LCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxh
eWVkUmVwbHkmJiBzeW5jaHJvbm91c1JlcGx5KQogICAgIDogbV9wYXJhbWV0ZXJzIHsgV1RGTW92
ZShwYXJhbWV0ZXJzKSB9CiAgICAgLCBtX2Nvbm5lY3Rpb24geyBjb25uZWN0aW9uIH0KKyAgICAs
IG1fYnVmZmVyZWREYXRhIHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0K
ICAgICAsIG1fZmlsZVJlZmVyZW5jZXMoY29ubmVjdGlvbi5yZXNvbHZlQmxvYlJlZmVyZW5jZXMo
bV9wYXJhbWV0ZXJzKSkKICAgICAsIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMg
eyBtX3BhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFs
UG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFscyB9CiAgICAgLCBtX2J1ZmZlcmluZ1Rp
bWVyIHsgKnRoaXMsICZOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZlcmluZ1RpbWVyRmlyZWQg
fQorICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNoZSB7IG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVm
ZmVyQnVpbGRlcj4oKSB9CiAgICAgLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQo
KSkKICAgICAsIG1fcmVzb3VyY2VMb2FkSUQgeyBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
cjo6Z2VuZXJhdGUoKSB9CiB7CkBAIC0zMDYsMTAgKzMwOCwxMCBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBG
aXJzdExvYQogICAgICAgICBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKIAogICAgICAgICBp
ZiAoaXNTeW5jaHJvbm91cygpIHx8IG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA+
IDBfcykKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogCiAgICAgICAgIGlmIChj
YW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JD
YWNoZS0+ZW1wdHkoKTsKICAgICB9CiAKICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1l
dGVycyA9IG1fcGFyYW1ldGVyczsKQEAgLTczMCwyMCArNzMyLDIwIEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2Vp
dmVkUmVzcG9uCiAgICAgICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSht
aW1lVHlwZSwgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpOwogICAgIH07CiAKLSAgICBpZiAo
IW1fYnVmZmVyZWREYXRhCisgICAgaWYgKG1fYnVmZmVyZWREYXRhLT5pc051bGwoKQogICAgICAg
ICAmJiBtX3Jlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpID4gc3RhdGljX2Nhc3Q8bG9u
ZyBsb25nPigxICogTUIpCiAgICAgICAgICYmIGlzRmV0Y2hPclhIUihyZXNvdXJjZUxvYWRJbmZv
KQogICAgICAgICAmJiBpc01lZGlhTUlNRVR5cGUobV9yZXNwb25zZS5taW1lVHlwZSgpKSkgewot
ICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAg
IG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogICAgICAgICBtX3BhcmFtZXRlcnMubWF4aW11bUJ1
ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJTdHJhdGVneTo6bWVkaWFNYXhpbXVtQnVmZmVyaW5nVGlt
ZTsKICAgICB9CiAKICAgICAvLyBGb3IgbXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNl
aXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5n
IHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZy4KICAgICBpZiAoIWlzU3luY2hyb25vdXMo
KSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhID0g
bnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGEtPnJlc2V0KCk7CiAKICAgICBpZiAobV9y
ZXNwb25zZS5pc011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0g
bnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+cmVzZXQoKTsKIAogICAg
IGlmIChtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSB7CiAgICAgICAgIGJvb2wgdmFsaWRhdGlv
blN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBO
b3QgTW9kaWZpZWQKQEAgLTg1OCw3ICs4NjAsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c2VuZERpZFJlY2VpdmVSZXNwb25zZVBvdGVudGlhbGx5SW5OZXdCcm93c2luZ0NvbnRleAog
ICAgIH0pOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKQogewogICAgIGlmICghbV9udW1CeXRlc1JlY2VpdmVkKQogICAgICAgICBMT0FERVJfUkVM
RUFTRV9MT0coImRpZFJlY2VpdmVCdWZmZXI6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGg9JWQpIiwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CkBA
IC04NjYsMjAgKzg2OCwyMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogCiAgICAgQVNTRVJU
KCFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKIAotICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlKSB7CisgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5pc051bGwoKSkgewog
ICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0
YSBhbmQgbGltaXQgc2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qg
c2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsK
ICAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6
ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCiAgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLT5yZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblBy
ZWZldGNoKCkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogQXQgbGVhc3Qgb24gT1Mg
WCBZb3NlbWl0ZSB3ZSBhbHdheXMgZ2V0IC0xIGZyb20gdGhlIHJlc291cmNlIGhhbmRsZS4KICAg
ICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgg
Pj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUoKTsKIAotICAg
IGlmIChtX2J1ZmZlcmVkRGF0YSkgeworICAgIGlmICghbV9idWZmZXJlZERhdGEtPmlzTnVsbCgp
KSB7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKICAgICAg
ICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsK
ICAgICAgICAgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CkBAIC05MDksMTEgKzkxMSwx
MSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogI2VuZGlmCiAKICAgICBpZiAoaXNTeW5jaHJv
bm91cygpKQotICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJv
bm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsK
KyAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2Fk
RGF0YSwgbV9idWZmZXJlZERhdGEtPmdldCgpLmdldCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwog
ICAgIGVsc2UgewotICAgICAgICBpZiAobV9idWZmZXJlZERhdGEgJiYgIW1fYnVmZmVyZWREYXRh
LT5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKCFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICAvLyBGSVhNRTogUGFzcyBhIHJlYWwgdmFsdWUgb3IgcmVtb3ZlIHRoZSBl
bmNvZGVkIGRhdGEgc2l6ZSBmZWF0dXJlLgotICAgICAgICAgICAgc2VuZEJ1ZmZlcigqbV9idWZm
ZXJlZERhdGEsIC0xKTsKKyAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLT5n
ZXQoKSwgLTEpOwogICAgICAgICB9CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAg
fQpAQCAtMTI1NiwxOSArMTI1OCwxOSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3Rh
cnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCkKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmJ1ZmZlcmluZ1RpbWVyRmlyZWQoKQogewotICAgIEFTU0VSVChtX2J1ZmZlcmVkRGF0YSk7Cisg
ICAgQVNTRVJUKCFtX2J1ZmZlcmVkRGF0YS0+aXNOdWxsKCkpOwogICAgIEFTU0VSVChtX25ldHdv
cmtMb2FkKTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2
ZURhdGEoeyAqbV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0
aCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0
YSh7ICptX2J1ZmZlcmVkRGF0YS0+Z2V0KCkgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxl
bmd0aCkpOwogCi0gICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgIG1fYnVmZmVyZWREYXRhLT5lbXB0eSgpOwogICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERh
dGFMZW5ndGggPSAwOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZl
cihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFpc1N5bmNo
cm9ub3VzKCkpOwogCkBAIC0xMjgxLDcgKzEyODMsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0co
InRyeVN0b3JlQXNDYWNoZUVudHJ5OiBOb3Qgc3RvcmluZyBjYWNoZSBlbnRyeSBiZWNhdXNlIHJl
cXVlc3QgaXMgbm90IGVsaWdpYmxlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYg
KCFtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CisgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUtPmlzTnVsbCgpKSB7CiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0Nh
Y2hlRW50cnk6IE5vdCBzdG9yaW5nIGNhY2hlIGVudHJ5IGJlY2F1c2UgbV9idWZmZXJlZERhdGFG
b3JDYWNoZSBpcyBudWxsIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjg5LDEyICsx
MjkxLDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRy
eSgpCiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpKSB7CiAgICAgICAgIGlmIChhdXRv
KiBzZXNzaW9uID0gbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCgpKSkgewogICAgICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9y
ZUFzQ2FjaGVFbnRyeTogU3RvcmluZyBlbnRyeSBpbiBwcmVmZXRjaCBjYWNoZSIpOwotICAgICAg
ICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJl
bnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIFdURk1vdmUobV9idWZmZXJl
ZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0
b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNw
b25zZSksIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnRha2UoKSk7CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNo
ZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIEhUVFAgZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUt
PnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1v
dmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRv
JiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2Fk
LT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT50
YWtlKCksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxl
IHsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgICAgICBpZiAobWFwcGVkQm9k
eS5zaGFyZWFibGVSZXNvdXJjZUhhbmRsZS5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCmluZGV4IGQyMzRkYWI1YmVlYTViNjQ3MzA1NTBjNzczNzBhOWYxNTk1OTdmOTcuLjk4
NDQyNGEzMDY4MWEzNjBmYzYwYzllN2E5ZGQ0ZTZiYjQyNmRlNzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMzks
NiArMzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsNiArNDcsOCBAQCBjbGFz
cyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTExNCw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FsbG93ZWRU
b0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxvd2Vk
VG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJl
cXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKCkgZmluYWw7CkBAIC0xOTIsNyArMTk1LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgdm9pZCBidWZmZXJpbmdU
aW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYs
IHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOwogCiAg
ICAgdm9pZCBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKICAgICB2b2lkIGludmFsaWRhdGVT
YW5kYm94RXh0ZW5zaW9ucygpOwpAQCAtMjI1LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCiAgICAgc2l6ZV90IG1fYnVmZmVy
ZWREYXRhRW5jb2RlZERhdGFMZW5ndGggeyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXI+IG1fYnVmZmVyZWREYXRhOwogICAgIHVuc2lnbmVkIG1fcmVkaXJlY3RDb3Vu
dCB7IDAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTeW5jaHJvbm91c0xvYWREYXRhPiBtX3N5
bmNocm9ub3VzTG9hZERhdGE7CkBAIC0yNDAsNyArMjQzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdl
YkNvcmU6OlRpbWVyIG1fYnVmZmVyaW5nVGltZXI7CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6
Q2FjaGU+IG1fY2FjaGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXJlZERhdGFGb3JDYWNoZTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVp
bGRlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29y
a0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbjsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRh
dGlvbjsKICAgICBib29sIG1faXNXYWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNo
ZWRSZWRpcmVjdCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1BpbmdMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xv
YWQuY3BwCmluZGV4IDExNDg1M2U0NWI3MjUzMzY0Yzc0N2E3MWNiMmI1YWI4Y2MzOGVmZDUuLjFh
ZjFlMDhlM2M0NDFlMjRmMzAwNjVlOWYyMDc3NmU2ZjlmYzMzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBQaW5n
TG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgTmVn
b3RpYXRlZExlZ2FjeVQKICAgICBkaWRGaW5pc2goeyB9LCByZXNwb25zZSk7CiB9CiAKLXZvaWQg
UGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lkIFBpbmdM
b2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKIHsKICAg
ICBQSU5HX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YSIpOwogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4IDE5ZWM4
Y2ViOTJlM2M4YTA1NmY0OTI3MzY2MGNmZmY5MjY0MzQxZDEuLmFiMjlhMGIxYWM4NDY2YjBlZDYx
ZWY1OGVmNGMyMjBhYmFiNmViZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdM
b2FkLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYs
IE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5h
bDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
IGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1Nl
bnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3
YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByZWNvbm5lY3RUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJl
Y29ubmVjdFRhc2suY3BwCmluZGV4IDQ1NTc4MmQ1NGEyZWE5YmVlMTg2NTBlMWFmZDFjZjdiMmNl
OThjNDkuLjE3ZDQ3OTA3YTNmNmVlNTJiZTY1MDFkMWRhYjBjYTYwNzUxZDZiMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCkBAIC03OSw3
ICs3OSw3IEBAIHZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
UG9saWN5QWN0aW9uOjpJZ25vcmUpOwogfQogCi12b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNl
aXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKQordm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByZWNvbm5lY3RUYXNrLmgKaW5kZXggMWMxZmYxNjQ3MTExYzZmYTg0OTRhZjVjZjBjN2JiZWFh
MWIyNjUwMy4uODU4MDhlMTIxYjY4Y2E4YjczZTI1MThkMTkzYWIzOTU4MWVhZDFlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaApAQCAtNTUsNyAr
NTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25n
IGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7
CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsK
ICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCmluZGV4IDcxZTBjZjZjNmRjN2JlYTUyMmM5MDYwMDU1
NWY1NzIxNjFjM2MyZjQuLjgxOTY2MzAyMGM2OTVjZTBjNmFiYTk5OWM2NzVhYWI0MjgyYzdmZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZGVyLmNwcApAQCAtMTc0LDEwICsxNzQsMTAgQEAgdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlv
blByZWxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXMKICAg
ICAgICAgY2FsbGJhY2soKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJl
bG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1fYm9keUNh
bGxiYWNrKQotICAgICAgICBtX2JvZHlDYWxsYmFjayhXVEZNb3ZlKGJ1ZmZlciksIHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICBtX2JvZHlDYWxsYmFjayhidWZmZXItPm1ha2VD
b250aWd1b3VzKCksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAppbmRleCAxZTc4YzJjZWZhMTU0ODQx
MDQwNjBmM2IxOWRjNTBlNmNiOGYxZWI0Li5lZTFiYzhiN2Q2Y2JmZmMzMzQxZDY3M2ZiNzI0MjIz
OGY2NzE3ZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxv
d2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xv
YWRNZXRyaWNzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3M7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXIuY3BwCmluZGV4IDhlZTExMmE5ZGY4Mjg5NTRjMTYyM2ZmZjIyYzJhMjBmZDhl
MmZlN2QuLjdhMjYyMjE5ZGU3OGIyMzVkMTI1YTkyYjZlMjM2ZDMzMjYyZjdhMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTc3
LDcgKzE3Nyw3IEBAIFJlc291cmNlRXJyb3IgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6
OnByb2Nlc3NSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvCiAgICAgcmV0dXJuIHsgfTsKIH0K
IAotdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
Cit2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpCiB7CiAgICAgaWYgKCFtX2RlY29kZXIpIHsKICAgICAgICAgaWYgKCFtX3Jlc3Bv
bnNlRW5jb2RpbmcuaXNFbXB0eSgpKQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsCiAgICAgfQogCiAgICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQot
ICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5kYXRhKCks
IHNpemUpKTsKKyAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzaXplKSk7CiB9CiAKIHZvaWQgU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyLmgKaW5kZXggMThmNTQ2OTFmMzdjMmJhYmJjOGMxYTNiYzA5NDM3MGU5YjI5ZWI3
MS4uNDRmYzA2ODVmYTBmZWRjODc0MjE5MTZlOTEzYTY3NGIxYzBmZGJlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgKQEAgLTY0LDcgKzY0LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3Rl
ZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGly
ZWN0UmVzcG9uc2UpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsK
LSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZh
aWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmlu
ZGV4IDA0Nzc2ODM2Zjk5OTA5MzkxMGIzOTlkNzU1Mzg1NWQ1ZDNmMWZmNGUuLmRkMzA1YWYyOTc2
NjFlNDc2YzQ5Njc3ZGY1NzIxZWZkMWVjOTMyZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBA
QCB2b2lkIENhY2hlOjpjb21wbGV0ZVJldHJpZXZlKFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXIm
JiBoYW5kbGVyLCBzdGQ6OnVuaXF1ZV9wdAogICAgIGhhbmRsZXIoV1RGTW92ZShlbnRyeSksIGlu
Zm8pOwogfQogICAgIAotc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
cmVzcG9uc2VEYXRhKQorc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIHJlc3BvbnNlRGF0YSkKIHsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4o
bWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZURhdGEpLCBX
ZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuc3Rv
cmFnZVNlc3Npb24obV9zZXNzaW9uSUQpLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQpAQCAtNDY0
LDcgKzQ2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6Om1ha2VSZWRpcmVjdEVu
dHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYKICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0
LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCku
c3RvcmFnZVNlc3Npb24obV9zZXNzaW9uSUQpLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rp
b248dm9pZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCitzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIEZ1bmN0aW9u
PHZvaWQoTWFwcGVkQm9keSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChy
ZXNwb25zZURhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGUuaAppbmRleCAxOTlmMGNmYjczMjU0M2M1ZmVhZjRmZTIzMDFlNmExYzEy
Zjg4ZmU4Li5lZDA0ZWJjYTBiMzZmM2Y5YzRjMGU3YmFjNzEzMzZiOWU5NmMzNTg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKQEAg
LTQzLDcgKzQzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExvd1Bvd2VyTW9kZU5v
dGlmaWVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0x
NjYsNyArMTY2LDcgQEAgcHVibGljOgogICAgIH07CiAgICAgdXNpbmcgUmV0cmlldmVDb21wbGV0
aW9uSGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiwgY29uc3Qg
UmV0cmlldmVJbmZvJik+OwogICAgIHZvaWQgcmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+LCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmID0gbnVsbHB0cik7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYm
ID0gbnVsbHB0cik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9yZVJlZGlyZWN0KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwg
c3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXApOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4gdXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEVudHJ5
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgdmFsaWRhdGluZ1Jlc3BvbnNlKTsK
IApAQCAtMTg1LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJldHJpZXZlRGF0YShjb25z
dCBEYXRhS2V5JiwgRnVuY3Rpb248dm9pZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4pOwogICAg
IHZvaWQgc3RvcmVEYXRhKGNvbnN0IERhdGFLZXkmLCAgY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90KTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IG1ha2VFbnRyeShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RkOjp1bmlxdWVfcHRy
PEVudHJ5PiBtYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IG1ha2VSZWRpcmVjdEVu
dHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVx
dWVzdCk7CiAKICAgICB2b2lkIGR1bXBDb250ZW50c1RvRmlsZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApp
bmRleCBiYTM5ZDllMmMyNmEwMWE5MjZiMTFhYTc5OWUzNjYyZmM2YWUwNTQ5Li43NjEwNzhkZWEw
OTNjMDQ1NTViZTk4YjA1MTczZTM0MTUwNjdhODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMzcs
NyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsK
IAotRW50cnk6OkVudHJ5KGNvbnN0IEtleSYga2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RI
ZWFkZXJzKQorRW50cnk6OkVudHJ5KGNvbnN0IEtleSYga2V5LCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4m
IHZhcnlpbmdSZXF1ZXN0SGVhZGVycykKICAgICA6IG1fa2V5KGtleSkKICAgICAsIG1fdGltZVN0
YW1wKFdhbGxUaW1lOjpub3coKSkKICAgICAsIG1fcmVzcG9uc2UocmVzcG9uc2UpCkBAIC0xMDEs
OCArMTAxLDEwIEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3Jk
KCkgY29uc3QKIAogICAgIERhdGEgaGVhZGVyKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVm
ZmVyU2l6ZSgpKTsKICAgICBEYXRhIGJvZHk7Ci0gICAgaWYgKG1fYnVmZmVyKQotICAgICAgICBi
b2R5ID0geyBtX2J1ZmZlci0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgaWYgKG1f
YnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVyID0gbV9idWZmZXItPm1ha2VDb250aWd1b3VzKCk7
CisgICAgICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcio+KG1f
YnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgfQogCiAgICAg
cmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFkZXIsIGJvZHksIHsgfSB9OwogfQpAQCAt
MTk0LDcgKzE5Niw3IEBAIHZvaWQgRW50cnk6OmluaXRpYWxpemVCdWZmZXJGcm9tU3RvcmFnZVJl
Y29yZCgpIGNvbnN0CiAgICAgbV9idWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZShtX3NvdXJjZVN0b3JhZ2VSZWNvcmQuYm9keS5kYXRhKCksIG1fc291cmNlU3RvcmFnZVJlY29y
ZC5ib2R5LnNpemUoKSk7CiB9CiAKLVdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogRW50cnk6OmJ1ZmZl
cigpIGNvbnN0CitXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBFbnRyeTo6YnVmZmVy
KCkgY29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBpbml0aWFsaXplQnVmZmVy
RnJvbVN0b3JhZ2VSZWNvcmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaAppbmRleCA5NjkxNWMzODAxYzM3ZGRhYzNl
OGU2MDMyMWY4OGMyMjI5Y2Q1OWEwLi45YzA0MjBkNDRhODE1OGRmYzViMjFjZjE4ODIwNGNmM2E5
MTZiNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIGNsYXNzIEVudHJ5
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBFbnRyeShjb25z
dCBLZXkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+
JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOworICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5
aW5nUmVxdWVzdEhlYWRlcnMpOwogICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGly
ZWN0UmVxdWVzdCwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5
aW5nUmVxdWVzdEhlYWRlcnMpOwogICAgIGV4cGxpY2l0IEVudHJ5KGNvbnN0IFN0b3JhZ2U6OlJl
Y29yZCYpOwogICAgIEVudHJ5KGNvbnN0IEVudHJ5Jik7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1Ymxp
YzoKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KICAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmlu
ZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fdmFy
eWluZ1JlcXVlc3RIZWFkZXJzOyB9CiAKLSAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGJ1ZmZl
cigpIGNvbnN0OworICAgIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcigp
IGNvbnN0OwogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
PiYgcmVkaXJlY3RSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWRpcmVjdFJlcXVlc3Q7IH0K
IAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCkBAIC04OCw3ICs4OCw3IEBAIHByaXZh
dGU6CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IG1fdmFyeWluZ1JlcXVl
c3RIZWFkZXJzOwogCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+
IG1fcmVkaXJlY3RSZXF1ZXN0OwotICAgIG11dGFibGUgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gbV9idWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAg
ICBtdXRhYmxlIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgbV9zaGFyZWFibGVSZXNvdXJjZUhh
bmRsZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IGFk
MDlkZjQ0ZDlhZjEyZmQ0MDgwMzEwNTQ2ODM1MzZlYTBkYzgxOTMuLjQxZDgyMzUwMjQ3NDdiNmZj
NGEzYWM1NDhlMTMzNGVkNmNiNWVmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgU3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQo
Q2FjaGUmIGNhY2hlLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBnbG9iYWxGcmFtZUkKICAgICA6IG1f
Y2FjaGUoY2FjaGUpCiAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKQogICAgICwgbV9vcmlnaW5hbFJlcXVlc3QocmVxdWVzdCkKLSAgICAsIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKKyAgICAsIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCiAgICAgLCBt
X2NhY2hlRW50cnkoV1RGTW92ZShjYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikpCiB7CiAgICAgQVNT
RVJUKCFtX2NhY2hlRW50cnkgfHwgbV9jYWNoZUVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CkBA
IC0xMDksNyArMTA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBtX3Jlc3BvbnNl
ID0gcmVjZWl2ZWRSZXNwb25zZTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkp
Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAKICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVk
ZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlm
aWVkCiAgICAgaWYgKHZhbGlkYXRpb25TdWNjZWVkZWQgJiYgbV9jYWNoZUVudHJ5KQpAQCAtMTIw
LDE3ICsxMjAsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBjb21wbGV0aW9uSGFu
ZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnkpOwogCiAgICAgaWYgKG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGlu
IGNhc2Ugb2Ygc3RyZWFtaW5nIGRhdGEuCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2Fj
aGVCdWZmZXJTaXplID0gMTAgKiAxMDI0ICogMTAyNDsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZl
clNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVy
LmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVm
ZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KIH0KIApAQCAtMTM5LDEwICsx
MzksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKICAgICBpZiAobV9kaWRDb21wbGV0ZSkKICAgICAg
ICAgcmV0dXJuOwogICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUpIHsKLSAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJl
cXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuY29weVJlZigpLCBbXShh
dXRvJiBtYXBwZWRCb2R5KSB7IH0pOworICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5z
dG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZS5nZXQoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKICAgICAgICAgLy8gQ3JlYXRlIGEg
c3ludGhldGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0IHN0b3JlLgogICAgICAgICBpZiAoIW1f
Y2FjaGVFbnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFibGVCeURlZmF1bHQobV9yZXNwb25zZS5o
dHRwU3RhdHVzQ29kZSgpKSkKLSAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1h
a2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlKSk7CisgICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtl
RW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUudGFrZSgpKTsKICAgICB9CiAKICAgICBkaWRDb21wbGV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkLmgKaW5kZXggYzBlMWUxNGIyYWM0NjAzNThmODE0MDdjZDcwYzQwOTA1MmFm
OGVmZS4uMWI4NDNkYjdlYzI3MGRiOWRhYjllOGEyNWYyYTQ4YThlY2FlMmE4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWls
TG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKQEAgLTc1
LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9y
ZXNwb25zZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGU7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBt
X2NhY2hlRW50cnk7CiAgICAgYm9vbCBtX2RpZENvbXBsZXRlIHsgZmFsc2UgfTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNw
cAppbmRleCA1ZTJlMDJlMmZiYTBiNGEwYzAzYjVkM2U2NmI5N2Y3YmNjYzc5NThiLi4zMTk5YmZm
MzExYjZjM2VlZmJlOTUwYjQ1ZTZiMGE5NmUzMjc3N2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKQEAgLTMwLDcgKzMw
LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVByZWZldGNoQ2FjaGU6OkVudHJ5OjpFbnRy
eShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorUHJlZmV0Y2hDYWNoZTo6RW50cnk6OkVudHJ5KFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIDogcmVzcG9uc2UoV1RGTW92ZShyZXNwb25z
ZSkpLCBidWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogfQpAQCAtNzIsNyArNzIsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8UHJlZmV0Y2hDYWNoZTo6RW50cnk+IFByZWZldGNoQ2FjaGU6OnRha2UoY29u
c3QgVVJMJiB1cmwpCiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIGV4cGlyYXRpb25UaW1lb3V0IHsg
NV9zIH07CiAKLXZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmUoY29uc3QgVVJMJiByZXF1ZXN0VXJs
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZShjb25zdCBV
UkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlm
ICghbV9zZXNzaW9uUHJlZmV0Y2hlcykKICAgICAgICAgbV9zZXNzaW9uUHJlZmV0Y2hlcyA9IG1h
a2VVbmlxdWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaAppbmRleCBhMjUxNTIwYjMxZWFjOTIx
YzIyZDMxMTUxZDZkMjMxYTFiZWQxMzhjLi41MmMwYjEwZmNjNmQ1YTZkZTExNDQ3ZTdlNGU4MjJk
ZjhmODQxY2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L1ByZWZldGNoQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L1ByZWZldGNoQ2FjaGUuaApAQCAtNDcsMTggKzQ3LDE4IEBAIHB1YmxpYzoKIAogICAgIHN0cnVj
dCBFbnRyeSB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICAg
ICAgRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKTsKKyAgICAgICAgRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgICAgIEVu
dHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYpOwogCi0gICAgICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlbGVhc2VCdWZmZXIo
KSB7IHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsgfQorICAgICAgICBSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVsZWFzZUJ1ZmZlcigpIHsgcmV0dXJuIGJ1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpOyB9CiAKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSByZXNwb25zZTsKLSAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVy
OworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
OwogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVkaXJlY3RSZXF1ZXN0OwogICAg
IH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHRha2UoY29uc3QgVVJMJik7Ci0gICAg
dm9pZCBzdG9yZShjb25zdCBVUkwmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgc3RvcmUoY29uc3QgVVJMJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBzdG9yZVJlZGlyZWN0KGNvbnN0IFVSTCYsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCmluZGV4IGI5YWIwZGVlYmI5ZjkyN2M3Mzc0MmU4NmEw
YmU3Zjk3MTYwYmQ2ZmIuLjQxNjY4YTViMWNkNzM4Njk2N2I4ZmQ5NzNlOTY3MzJlY2E5MDdlZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZGlkTmVnb3RpYXRlTW9kZXJuVExTKGNvbnN0IFVSTCYpOwogICAgIHZvaWQgZGlkQ29tcGxldGVX
aXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciYmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgdHJhbnNmZXJTYW5k
Ym94RXh0ZW5zaW9uVG9Eb3dubG9hZChEb3dubG9hZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5k
ZXggZTc4MGQ2YzFjM2NkMWViMmMyZmY1YTBjNTY0YTBlNGQ4OGI3ZWE1ZC4uMzA1MWYxNjljYjBh
MzcwOTk4NWExNjExMjJjMjVmMGU4ZjE3YmQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC00
NDIsNyArNDQyLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkQ29tcGxldGVXaXRo
RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXIKICAgICAgICAgbV9jbGllbnQt
PmRpZENvbXBsZXRlV2l0aEVycm9yKGVycm9yLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogfQogCi12
b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZl
RGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAg
IFdURkVtaXRTaWducG9zdChtX3Rhc2suZ2V0KCksICJEYXRhVGFzayIsICJyZWNlaXZlZCAlemQg
Ynl0ZXMiLCBkYXRhLT5zaXplKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKaW5kZXggOGZjN2I2NjNl
NmY3NTYyYjJiMzU0ODkzOThhMmZlNzMxYmUwNzRmMS4uMzdmMjk0MTY2NDZjNDdlMWRhMWZkOTk0
MWNjYWMwMGI1ZGMwZmQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBA
IHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVx
dWVzdCYgcmVxdWVzdCwgQ3VybFJlc3BvCiAgICAgaW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7
CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3Vy
bFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgTmV0d29ya0RhdGFU
YXNrQ3VybDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhp
cyB9OwogICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpDYW5jZWxpbmcgfHwgc3RhdGUoKSA9PSBT
dGF0ZTo6Q29tcGxldGVkIHx8ICghbV9jbGllbnQgJiYgIWlzRG93bmxvYWQoKSkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3Vy
bC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1
cmwuaAppbmRleCAxYzQyN2RkYjc4ZDY5NTNmZTg5NjBjNTY5MmFmZGU0ZjRmMGVlZTg1Li40NWJl
NWNlMTg0MzI1MjcxZDVjMDgwZGQzNGYxZWU0YTE2NjQyYTFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKQEAg
LTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8V2ViQ29yZTo6Q3VybFJlcXVlc3Q+IGNy
ZWF0ZUN1cmxSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZXF1ZXN0U3RhdHVz
ID0gUmVxdWVzdFN0YXR1czo6TmV3UmVxdWVzdCk7CiAgICAgdm9pZCBjdXJsRGlkU2VuZERhdGEo
V2ViQ29yZTo6Q3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcg
bG9uZykgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6
OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6Q3VybFJlc3BvbnNlJiYpIG92ZXJyaWRlOwotICAgIHZv
aWQgY3VybERpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVm
ZmVyKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZENvbXBsZXRlKFdlYkNvcmU6OkN1
cmxSZXF1ZXN0JiwgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYmKSBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrUlRDUHJvdmlkZXIuaAppbmRleCBmNWRiNzA2YzQ0NTgwMjEwODdmOTU5OTY2OWRmYTdkOWY4
Mzc5NzhjLi4zM2Q0M2I3MjIzOGQyMDNlN2VkZWM5NDE0Y2FmOWZkYThmNDA1MjZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRD
UHJvdmlkZXIuaApAQCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3QgUGFja2V0T3B0aW9uczsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVnaXN0cmFibGVEb21haW47Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApp
bmRleCA3ZTBkOGRiZTE5MDI1OTlkMDJiYzEwOGU1NjNhNmUzZGYxODMyZTlmLi4xN2YwOGMyOGVh
MTI1YjU1MDk5M2VlZDI0ZDU5NjNiODUxMGExMTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8gRW5jb2RlcyBhIFNoYXJlZEJ1ZmZl
ciB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgY29weSBvZiB0aGUgZGVjb2RlZCBkYXRhIGluIGEgbmV3
IFNoYXJlZEJ1ZmZlci4KKy8vIEVuY29kZXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIHRoYXQg
aXMgcmVjZWl2ZWQgYXMgYSBjb3B5IG9mIHRoZSBkZWNvZGVkIGRhdGEgaW4gYSBuZXcgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlci4KIC8vIFRvIGF2b2lkIGNvcHlpbmcgZnJvbSB0aGUgRGVjb2Rlciwg
dXNlIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgdG8gcmVjZWl2ZSBhIERhdGFSZWZlcmVuY2Ug
aW5zdGVhZC4KIAogI3ByYWdtYSBvbmNlCkBAIC00MywxMSArNDMsMTIgQEAgcHVibGljOgogICAg
ICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29w
eShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZl
cihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSkKLSAgICB7Ci0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoYnVm
ZmVyKTsKLSAgICB9CisgICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyID8g
YnVmZmVyLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4o
KSkgeyB9CisgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5tYWtlQ29udGln
dW91cygpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIubWFrZUNv
bnRpZ3VvdXMoKSkgeyB9CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KICAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Uu
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Uu
aAppbmRleCBkM2QwZWM1ZTk3ODU1OTliNjM0YTg0YzZjNDQ3MWI1MmNkMjIxM2YxLi42N2VjOGU1
ZTkyYmQwMjQxMTVkYjBkNDA4MGEyNGZlNzM1NzBkM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCkBAIC0yMyw3
ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8g
RW5jb2RlcyBhIFNoYXJlZEJ1ZmZlciBvciBEYXRhUmVmZXJlbmNlIHRoYXQgaXMgcmVjZWl2ZWQg
YXMgYSBEYXRhUmVmZXJlbmNlIHRvIHRoZSBkZWNvZGVkIGRhdGEuCisvLyBFbmNvZGVzIGEgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciBvciBEYXRhUmVmZXJlbmNlIHRoYXQgaXMgcmVjZWl2ZWQgYXMg
YSBEYXRhUmVmZXJlbmNlIHRvIHRoZSBkZWNvZGVkIGRhdGEuCiAKICNwcmFnbWEgb25jZQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKaW5kZXggZDI0MDZlZTI5MDUzMTFm
NjliNzU4NDIxZTc3YTNlNjZjYmEyN2I2NS4uYzAyNmY1NDk1NjliMmJlMDA3OGFlMzI1ZDA1Mzll
MDcxYWYxMTA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1v
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAt
MzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKLVJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9y
eTo6Y29weUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNTEs
NyArNTEsNyBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1v
cnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKGRhdGFTaXplIDw9IHNpemUoKSk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVy
IHsKICAgICAgICAgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSAtPiBjb25zdCB1
aW50OF90KiB7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7CiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9T
aGFyZWRNZW1vcnkuaAppbmRleCBlMzcxYmNkNzMwMmNmODVlYmFiMmI1YTg1ZTdiZTQ5ZGNmNTY1
MmFiLi4xYjRmZGZhZjY4Mzg5ZGNlNzI4ZmYzNGU1ZTVmMDEyZTI0M2ZhMmNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTQ1LDYgKzQ1LDcgQEAgY2xhc3MgRW5jb2Rl
cjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogI2lmIE9TKERBUldJTikKQEAgLTEyMCw3ICsxMjEs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRTogQ2hhbmdlIHRoZXNlIGZhY3RvcnkgZnVuY3Rp
b25zIHRvIHJldHVybiBSZWY8U2hhcmVkTWVtb3J5PiBhbmQgY3Jhc2ggb24gZmFpbHVyZS4KICAg
ICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gYWxsb2NhdGUoc2l6ZV90KTsKLSAgICBzdGF0
aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gY29weUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gY29weUJ1ZmZlcihjb25z
dCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgc3RhdGljIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IG1hcChjb25zdCBIYW5kbGUmLCBQcm90ZWN0aW9uKTsKICNpZiBVU0UoVU5J
WF9ET01BSU5fU09DS0VUUykKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gd3JhcE1h
cCh2b2lkKiwgc2l6ZV90LCBpbnQgZmlsZURlc2NyaXB0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCmluZGV4IGNhMGMyNGIyNzczNTQ3Njc2ZTM0
ODAxYzc5YTFkNTY1YmY5NWZlNWQuLjExMGUwYWRkZTU1OGE5ZDkzMzhiMjQ1MDZlODkxNjNjOTM2
OTcxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNv
dXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2Uu
bW0KQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJj
ZURhdGEodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAKIFJlZjxBUEk6OkRhdGE+
IFdlYkFyY2hpdmVSZXNvdXJjZTo6ZGF0YSgpCiB7Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4g
Y2ZEYXRhID0gbV9hcmNoaXZlUmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVDRkRhdGEoKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgpLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpOwogCiAgICAgLy8gQmFsYW5jZWQgYnkgQ0ZS
ZWxlYXNlIGluIHJlbGVhc2VXZWJBcmNoaXZlUmVzb3VyY2VEYXRhLgogICAgIENGUmV0YWluKGNm
RGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJD
b3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dl
YkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDg3ZjRlYjFlYmEyODcyZTBjYjBhYjk1
OTE2YWZlZGUyOWZjYmEyNDQuLjNjMWI1N2Q1YWEyNmVjNzJlNjBiNWQ3OGExMWU5ZmQ4NTJjZmZl
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVu
dENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVB
cmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC01NjQsMTMgKzU2NCwxMiBAQCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZv
bnQ+Pjo6ZGVjbwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCppbmNs
dWRlc0NyZWF0aW9uRGF0YSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGRl
Y29kZXIgPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgLy8gVXBvbiByZWNlaXB0LCBj
b3B5IHRoZSBkYXRhIGZvciBzZWN1cml0eSwgc28gdGhlIHNlbmRlciBjYW4ndCBzY3JpYmJsZSBv
dmVyIGl0IHdoaWxlIHdlJ3JlIHVzaW5nIGl0LgotICAgICAgICBhdXRvIGxvY2FsRm9udEZhY2VE
YXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZm9udEZhY2VEYXRhLnZhbHVlKCkt
PmRhdGEoKSwgZm9udEZhY2VEYXRhLnZhbHVlKCktPnNpemUoKSk7CisgICAgICAgIGF1dG8gbG9j
YWxGb250RmFjZURhdGEgPSBmb250RmFjZURhdGEudmFsdWUoKS0+bWFrZUNvbnRpZ3VvdXMoKTsK
IAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gaXRlbUluQ29sbGVjdGlvbjsKICAgICAg
ICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hh
cmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4IGM2OTYxYzcxNDQwMmJmMzc3YWU5MTBmYmI2Y2NhYTUy
ZDNiODQxMjguLjZmYTAyYTdiYzNlZTU0YWU2ZDMyNTM4MTBkNzhkZWMzMTY1MzUzZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKQEAgLTU3LDcgKzU3LDcg
QEAgYm9vbCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxl
UmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAg
W3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPmRhdGEoKTsgfSwKICAgICAg
ICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPnNpemUoKTsgfQogICAg
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
aW5kZXggNjQ5ODJiYzQ4MTAyYTRhZGIyMGE3ZTYwZTIxYmQ0OTJkNjUzMzc0Yy4uODQzZmQ0NzMx
M2FlZWNhMjk5MzA2MTJmYzVlYzU3ODc1NTQzNDJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgREVGSU5F
X1NJTVBMRV9BUkdVTUVOVF9DT0RFUl9GT1JfU09VUkNFKERpc3BsYXlMaXN0OjpTZXRJbmxpbmVT
dHJva2VDb2xvcikKIAogI3VuZGVmIERFRklORV9TSU1QTEVfQVJHVU1FTlRfQ09ERVJfRk9SX1NP
VVJDRQogCi1zdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCitzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZm
ZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVy
KQogewogICAgIGJvb2wgaXNOdWxsID0gIWJ1ZmZlcjsKICAgICBlbmNvZGVyIDw8IGlzTnVsbDsK
QEAgLTE3Nyw3ICsxNzcsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAgICAgICAgIHJldHVybjsK
IAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIC8vIERvIG5vdCB1c2Ugc2hhcmVk
IG1lbW9yeSBmb3IgU2hhcmVkQnVmZmVyIGVuY29kaW5nIGluIFVuaXgsIGJlY2F1c2UgaXQncyBl
YXN5IHRvIHJlYWNoIHRoZQorICAgIC8vIERvIG5vdCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciBlbmNvZGluZyBpbiBVbml4LCBiZWNhdXNlIGl0J3MgZWFzeSB0
byByZWFjaCB0aGUKICAgICAvLyBtYXhpbXVtIG51bWJlciBvZiBmaWxlIGRlc2NyaXB0b3JzIG9w
ZW4gcGVyIHByb2Nlc3Mgd2hlbiBzZW5kaW5nIGxhcmdlIGRhdGEgaW4gc21hbGwgY2h1bmtzCiAg
ICAgLy8gb3ZlciB0aGUgSVBDLiBDb25uZWN0aW9uVW5peC5jcHAgYWxyZWFkeSB1c2VzIHNoYXJl
ZCBtZW1vcnkgdG8gc2VuZCBhbnkgSVBDIG1lc3NhZ2UgdGhhdCBpcwogICAgIC8vIHRvbyBsYXJn
ZS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg1NzEuCkBA
IC0yNjQsNyArMjY0LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5
cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW4KICAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihk
ZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBkYXRh
LmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLmFwcGVuZChidWZmZXIpOwog
ICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtMTU1MCwxMCArMTU1MCwxMCBAQCB2b2lkIEFy
Z3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0CiAgICAgaWYgKGhhc1N0cmluZykKICAgICAgICAgZW5jb2RlciA8PCBz
dGQ6OmdldDxTdHJpbmc+KHBsYXRmb3JtRGF0YSk7CiAKLSAgICBib29sIGhhc0J1ZmZlciA9IHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSk7Cisg
ICAgYm9vbCBoYXNCdWZmZXIgPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKTsKICAgICBlbmNvZGVyIDw8IGhhc0J1ZmZlcjsK
ICAgICBpZiAoaGFzQnVmZmVyKQotICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rlciwg
c3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSkucHRyKCkpOworICAgICAg
ICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rlciwgc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpLnB0cigpKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVy
PFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnkmIGRhdGEpCkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBz
dGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpTZXJpYWxpemVkQXR0YWNobQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4ge3sgV1RGTW92ZShpZGVu
dGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfX07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlk
ZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9IH07CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtMzAxMCw2ICszMDEwLDM0IEBAIHN0ZDo6b3B0aW9uYWw8
U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNl
cmlhbGl6ZWRQCiB9CiAjZW5kaWYKIAordm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAg
ICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30KKworc3RkOjpv
cHRpb25hbDxSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVj
b2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQor
eworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOworfQorCitz
dGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3sKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNv
ZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOwor
fQorCiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikKIHsKICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdl
dCgpKTsKQEAgLTMxMDcsNyArMzEzNSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlCiB7CiAg
ICAgZW5jb2RlciA8PCBtZXNzYWdlLmZpcnN0OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bWVzc2FnZURhdGEgPSBtZXNzYWdlLnNlY29uZC5jb3B5UmVmKCk7CisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5zZWNvbmQuY29weVJlZigp
OwogICAgIGVuY29kZXIgPDwgbWVzc2FnZURhdGE7CiB9CiAKQEAgLTMxMTcsNyArMzE0NSw3IEBA
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiAgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSB8fCAhYnVmZmVyKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCmluZGV4IDI1ZjAxYzAyOTJhMDE5ZjA2NzYyNGJiYjU1MzQwMmRmMWEzM2M1YjYuLjZm
YWMyYWExZWE3ODQ2ZmY2YmY4OTAyMWYwZjUyZTlhYTdhZTAzYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgY2xh
c3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIENlcnRp
ZmljYXRlSW5mbzsKIGNsYXNzIENvbG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3Jl
ZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBDdXJzb3I7
CkBAIC0xMzgsNyArMTM5LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKIGNsYXNzIFNjcmlwdEJ1ZmZlcjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFNwcmluZ1RpbWluZ0Z1bmN0aW9uOwogY2xhc3MgU3RlcHNUaW1pbmdGdW5jdGlvbjsKIGNsYXNz
IFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czsKQEAgLTc1MSw2ICs3NTIsMTYgQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZv
cm1EYXRhQ3VlVmFsdWU+IHsKIH07CiAjZW5kaWYKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3Rl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVy
Jik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25z
dCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCmluZGV4IGNmMmU0
ZDVmOTNmZDJkOTQ2YmFiZmY5M2VlYTNlOWU4NjBhZWJiZjQuLmI2MDdhY2U4MzhlMDRiY2UxYTZh
ZWU0ZGE1NjU1OWUwOTY5ODM5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkhpdFRlc3RSZXN1bHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRU
ZXN0UmVzdWx0RGF0YS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgV2ViSGl0VGVzdFJlc3VsdERhdGE6
OldlYkhpdFRlc3RSZXN1bHREYXRhKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGhpdFRl
c3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKEltYWdlKiBpbWFnZSA9IGhpdFRlc3RSZXN1
bHQuaW1hZ2UoKSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFn
ZS0+ZGF0YSgpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gaW1hZ2UtPmRhdGEoKTsKICAgICAgICAgaWYgKGJ1ZmZlcikgewogICAgICAgICAgICAgaW1h
Z2VTaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVy
KTsKICAgICAgICAgICAgIGltYWdlU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5kZXggMjVhMzA3ZjM4Mjll
OTI3OGI1ZWE3OGZmODI5Njc4ODMzNzdhMzFiYS4uNjcxNzU4YTI4MGE1ZTQ0MGFhMDYwYTc5Y2Yx
ZjBmMTI2ZGI3YmUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3Vt
ZW50Q29kZXJzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRD
b2RlcnNHdGsuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTZWxlY3Rp
b25EYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNlbGVjdGlvbkRhdGEmCiAg
ICAgYm9vbCBoYXNDdXN0b21EYXRhID0gc2VsZWN0aW9uLmhhc0N1c3RvbURhdGEoKTsKICAgICBl
bmNvZGVyIDw8IGhhc0N1c3RvbURhdGE7CiAgICAgaWYgKGhhc0N1c3RvbURhdGEpCi0gICAgICAg
IGVuY29kZXIgPDwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4oc2VsZWN0aW9uLmN1c3RvbURhdGEoKSk7
CisgICAgICAgIGVuY29kZXIgPDwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KHNlbGVj
dGlvbi5jdXN0b21EYXRhKCkpOwogCiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2UgPSBzZWxlY3Rp
b24uY2FuU21hcnRSZXBsYWNlKCk7CiAgICAgZW5jb2RlciA8PCBjYW5TbWFydFJlcGxhY2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKaW5kZXggYjM0
ZWM3MzYzNjNjNGYxZDJiMGU3NjBhZDNmNGE5ZDViYWMxYTM0ZS4uMTQ5MGM1MTFiZGMzOGJkOGFi
NGE2OTVhZWNmMzA2ZDk1ZmFhMzk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmNwcApAQCAtOTgsNyArOTgsNyBAQCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBBdHRhY2htZW50OjpmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdAogICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1l
bnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
QXR0YWNobWVudC5oCmluZGV4IGFmYTkyOWNmMDkzZDIyZWM3NmFkODZmZGEwM2I1MDFiYmZkMjlk
YzMuLmZlNTBlNTM4YjhlYmIzNTFhNDgzNmQxZGQ4OTNkMTQ3YTU2YTg3N2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtMzksNiArMzksNyBAQCBP
QkpDX0NMQVNTIE5TU3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTgyLDcgKzgzLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3Q7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBlbmNsb3NpbmdJbWFnZURh
dGEoKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3Q7CiAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
ZmlsZVNpemVGb3JEaXNwbGF5KCkgY29uc3Q7CiAKICAgICB2b2lkIHNldEhhc0VuY2xvc2luZ0lt
YWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9oYXNFbmNsb3NpbmdJbWFnZSA9IGhhc0Vu
Y2xvc2luZ0ltYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElDb250ZW50UnVsZUxpc3RTdG9yZS5oCmluZGV4IDdmYzA1NDU3ZTY0Y2Y1ODliMGZiMGU3ZTAz
NmY2OTBmYTJjMTdiYWMuLjRlMjY2ZjM2N2FjNjAyYjhlZjFlYWY3NTdhMGEwNGRjNzNmNzcxYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggNTYy
MzQwMTQ1OWRhNWZlMzBmNDkxYTQxZmIzNDdhNjc1NzIwMmM0MC4uMTExZjA5MjYzZjgyMjM4Mjlh
NWFkMjY0NDM0YmE0MjBmMTk4ZGQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBDb250
ZW50UnVsZUxpc3RSZXN1bHRzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsK
IH0KIApAQCAtMTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShRVUlDS19MT09LKQog
ICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgeyB9CiAjZW5kaWYKIAogICAgIHZpcnR1
YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgUmVmPE5hdmlnYXRpb25BY3Rpb24+JiYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgT2JqZWN0KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IGNm
NDYyMTZjYTI1YTllZGY4MmUzMTlhMzMwMzA3OTFlOGQ0ZTE1M2MuLmRmZWYzZTA3MGY5NjE2MzA0
OTcxNDRkYWYzZjMwMGNiNGNhNTE5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTM3LDcgKzEzNyw3
IEBAIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IEF0dGFjaG1lbnQ6OmZpbGVTaXplRm9yRGlzcGxh
eSgpIGNvbnN0CiAgICAgcmV0dXJuIFtmaWxlV3JhcHBlciByZWd1bGFyRmlsZUNvbnRlbnRzXS5s
ZW5ndGg7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVu
Y2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKIHsKICAgICBp
ZiAoIW1faGFzRW5jbG9zaW5nSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYzRlZTUy
NTA3NjQyZGI0ZTU0Y2ZhZGY3ZmVlM2JmMWI3YzBkM2QzYy4uMDFjODEwMjc4ZWY2MzU5MTcyZjhl
NjViNTJjZmNiMGI1MjFiN2Q4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNTk2LDcgKzE1OTYsNyBAQCAtICh2b2lkKV9zdG9yZUFw
cEhpZ2hsaWdodDooY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0JiloaWdobGlnaHQKICAgICBp
ZiAoaGlnaGxpZ2h0LnRleHQpCiAgICAgICAgIHRleHQgPSBoaWdobGlnaHQudGV4dC52YWx1ZSgp
OwogCi0gICAgYXV0byB3a0hpZ2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxs
b2NdIGluaXRXaXRoSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKKyAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRv
cHROUyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0
LmhpZ2hsaWdodC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0
ZXh0IGltYWdlOm5pbF0pOwogCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKF93ZWJWaWV3OnN0b3JlQXBwSGlnaGxpZ2h0OmluTmV3R3JvdXA6cmVxdWVzdE9y
aWdpbmF0ZWRJbkFwcDopXSkKICAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnNlbGYgc3RvcmVB
cHBIaWdobGlnaHQ6d2tIaWdobGlnaHQuZ2V0KCkgaW5OZXdHcm91cDpoaWdobGlnaHQuaXNOZXdH
cm91cCA9PSBXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodDo6WWVzIHJlcXVlc3RP
cmlnaW5hdGVkSW5BcHA6aGlnaGxpZ2h0LnJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgPT0gV2ViQ29y
ZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDo6WWVzXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKaW5kZXggYWM0YTBmNDM3MDE1
MmVkNTcyYjUwOTFkZmE1MWJhZWJhYjg3ZjRlOS4uYzgwMjljMTQwYTZkZDE0YjE5NjQ5MjI1Yjg3
ODMwZWVjMTM0MDBmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogCiAjaWYgVVNFKFFV
SUNLX0xPT0spCiAgICAgICAgIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5n
JiB1dGkpIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tE
b2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OworICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDM4NTU4ODJjODdkYzllZDMxYzFlZjBiYWI2
MTZiMWU2NDU5NDRlZWYuLjhkM2E4NTY0NjJlYWVmNzQxZDhjMjllMjU5MmZkNTczNjZmNTk5Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0KQEAgLTEyMjAsNyArMTIyMCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyCiAgICAgW3N0
YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVs
ZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkU3Rh
cnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVdpdGhGaWxlTmFtZTpmaWxlTmFt
ZSB1dGk6dXRpXTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6
OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6
OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRl
KQogICAgICAgICByZXR1cm47CkBAIC0xMjMyLDcgKzEyMzIsNyBAQCB2b2lkIE5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRgogICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmln
YXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmll
dyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTpidWZmZXIuY3Jl
YXRlTlNEYXRhKCkuZ2V0KCldOworICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVs
ZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmln
YXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lOmJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV07
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRleCA4MDJmZmFhNmQ2ZWRiZWEyZTk3Mjc3NGUyNjk2
NWIyZGJiMmE3MzVlLi42ODMzNzNlYWUwMGY1ZGI0MmI4MTQ2Y2U5ZDUzMWJjOGFjMGE1NGMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJv
eHlDb2NvYS5tbQpAQCAtMzAyLDEyICszMDIsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNl
bmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoKQogICAgICAgICBpZiAobm9FcnIgIT0gQXVk
aW9Db21wb25lbnRGZXRjaFNlcnZlclJlZ2lzdHJhdGlvbnMoJnJlZ2lzdHJhdGlvbnMpIHx8ICFy
ZWdpc3RyYXRpb25zKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgcmVnaXN0cmF0aW9u
cyA9IGFkb3B0Q0YocmVnaXN0cmF0aW9ucyldICgpIG11dGFibGUgeworICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHJlZ2lzdHJh
dGlvbnMgPSBhZG9wdENGKHJlZ2lzdHJhdGlvbnMpXSAoKSB7CiAgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgYXV0byByZWdp
c3RyYXRpb25EYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9u
cy5nZXQoKSk7Ci0gICAgICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
czo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyh7IHJlZ2lzdHJhdGlvbkRhdGEg
fSksIDApOworICAgICAgICAgICAgd2Vha1RoaXMtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoeyBXVEZNb3ZlKHJlZ2lzdHJhdGlv
bkRhdGEpIH0pLCAwKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAppbmRleCAzZjZkZDFmMjQyZTdhMTE1ZWNmNzk4
MzkwZjM0YjYzNWM2ZThkNmY5Li5mNTg5MTI0MTcwMmRhYTQyMGNjNGU2ZTI0NjI4YTFjZGU4OTA3
ZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKQEAg
LTUwNiw3ICs1MDYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0RHJhZyhjb25zdCBXZWJD
b3JlOjpEcmFnSXRlbSYsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZSk7CiAg
ICAgdm9pZCBzZXRGaWxlQW5kVVJMVHlwZXMoTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAq
ZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNp
YmxlVVJMLCBOU1Bhc3RlYm9hcmQgKik7Ci0gICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFn
ZShXZWJDb3JlOjpJbWFnZSosIE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lv
biwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJsZVVSTCwg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBhcmNoaXZlQnVmZmVyLCBOU1N0cmluZyAqcGFzdGVib2Fy
ZE5hbWUsIE5TU3RyaW5nICpwYXN0ZWJvYXJkT3JpZ2luKTsKKyAgICB2b2lkIHNldFByb21pc2Vk
RGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmlu
ZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2
aXNpYmxlVVJMLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBhcmNoaXZlQnVmZmVy
LCBOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5TU3RyaW5nICpwYXN0ZWJvYXJkT3JpZ2luKTsK
ICAgICB2b2lkIHBhc3RlYm9hcmRDaGFuZ2VkT3duZXIoTlNQYXN0ZWJvYXJkICopOwogICAgIHZv
aWQgcHJvdmlkZURhdGFGb3JQYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqLCBOU1N0cmluZyAqdHlw
ZSk7CiAgICAgTlNBcnJheSAqbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlv
bihOU1VSTCAqZHJvcERlc3RpbmF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0KaW5kZXggM2Q5ZTg3N2IwY2I3NTY1NGI2MzkxNjM5NTU3ZjUyYjYw
MzkyY2FjOS4uNjIzNjdkYzVhZDFmZTEyMjFmN2IwOTllOWJiNDQ1NGRiMzdhNThlYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTQ0NDksNyAr
NDQ0OSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldEZpbGVBbmRVUkxUeXBlcyhOU1N0cmluZyAq
ZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TCiAgICAgbV9wcm9taXNlZFVSTCA9IHVy
bDsKIH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29y
ZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24s
IE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciogYXJjaGl2ZUJ1ZmZlciwgTlNTdHJpbmcgKnBhc3RlYm9hcmRO
YW1lLCBOU1N0cmluZyAqb3JpZ2luSWRlbnRpZmllcikKK3ZvaWQgV2ViVmlld0ltcGw6OnNldFBy
b21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVu
YW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmws
IE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBh
cmNoaXZlQnVmZmVyLCBOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5TU3RyaW5nICpvcmlnaW5J
ZGVudGlmaWVyKQogewogICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9h
cmQgcGFzdGVib2FyZFdpdGhOYW1lOnBhc3RlYm9hcmROYW1lXTsKICAgICBSZXRhaW5QdHI8TlNN
dXRhYmxlQXJyYXk+IHR5cGVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
V2l0aE9iamVjdHM6V2ViQ29yZTo6bGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKSwg
bmlsXSk7CkBAIC00NDcwLDcgKzQ0NzAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNl
ZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbgogICAg
IHNldEZpbGVBbmRVUkxUeXBlcyhmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNp
YmxlVVJMLCBwYXN0ZWJvYXJkKTsKIAogICAgIGlmIChhcmNoaXZlQnVmZmVyKSB7Ci0gICAgICAg
IGF1dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1
dG8gbnNEYXRhID0gYXJjaGl2ZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRh
KCk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBbcGFzdGVi
b2FyZCBzZXREYXRhOm5zRGF0YS5nZXQoKSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtV
VFR5cGVXZWJBcmNoaXZlXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORApAQCAt
NDUwMSw3ICs0NTAxLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJv
YXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNTdHJpbmcgKnQKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWw6bV9wcm9taXNlZEltYWdlLT51dGkoKV0gJiYgbV9w
cm9taXNlZEltYWdlLT5kYXRhKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0g
bV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoYXV0
byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRhOihfX2Jy
aWRnZSBOU0RhdGEgKilwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTp0eXBlXTsKICAgICB9CiAK
QEAgLTQ1NTQsNyArNDU1NCw3IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlz
ZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgUmV0YWlu
UHRyPE5TRGF0YT4gZGF0YTsKIAogICAgIGlmIChtX3Byb21pc2VkSW1hZ2UpIHsKLSAgICAgICAg
ZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAg
ZGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKTsKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9j
XSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YS5nZXQoKV0pOwogICAgIH0gZWxzZQog
ICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm1fcHJvbWlzZWRVUkxdIG9wdGlvbnM6TlNGaWxlV3Jh
cHBlclJlYWRpbmdJbW1lZGlhdGUgZXJyb3I6bmlsXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKaW5kZXggYzQ4NWM3ZmMzMTNlYTA4MzNmYzYwNjI2NzE2OWQ2OTJhODI0MDkyOC4u
YjQ2MmQ4ZGI1Y2M2MjAzODZlNzY4M2RiMjQ4MzZhYjNjZTY0ZmVmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMzI4LDcgKzMyOCw3IEBAIHB1YmxpYzoKICNlbmRpZgog
CiAjaWYgVVNFKEFQUEtJVCkKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBl
eHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYXJjaGl2
ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwg
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSA9IDA7CiAjZW5kaWYKIAogICAgIHZpcnR1
YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb0RldmljZVNwYWNlKGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5k
ZXggNWE4MzJlNTVhY2JhMTg5YjM5YjllODk3Y2MxY2ExOGI3YjQ4NDU1NS4uZTVlYWY0MWYzOGI2
NDdiYzVmMzczZGIwNzlkZWI0MTZhYTk2M2QxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTI1OSw3ICsyNTksNyBAQCBjbGFzcyBJbnRTaXplOwogY2xhc3MgUHJv
dGVjdGlvblNwYWNlOwogY2xhc3MgUnVuTG9vcE9ic2VydmVyOwogY2xhc3MgU2VsZWN0aW9uRGF0
YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBj
bGFzcyBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q7CiBjbGFzcyBUZXh0SW5kaWNhdG9yOwogY2xh
c3MgVmFsaWRhdGlvbkJ1YmJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5jcHAKaW5kZXggZGY1OWQ1NmZkNjk3ZjJhZGYyMDlmNmM0N2JlZjA1MWQ4MGMxNmJk
MS4uMTk5N2VhZTIwYWMyMmNhM2FlODAwNGM3MDRmYTIyZGE2MDllMDA5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTUxLDYgKzUxLDcgQEAg
V2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiBo
YW5kbGVyLCBXZWJQYWdlUHJveHkmIHAKICAgICAsIG1fcmVxdWVzdChXVEZNb3ZlKHBhcmFtZXRl
cnMucmVxdWVzdCkpCiAgICAgLCBtX2ZyYW1lSW5mbyhBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdU
Rk1vdmUocGFyYW1ldGVycy5mcmFtZUluZm8pLCAmcGFnZSkpCiAgICAgLCBtX3N5bmNDb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKHN5bmNDb21wbGV0aW9uSGFuZGxlcikpCisgICAgLCBtX3N5bmNE
YXRhKG1ha2VVbmlxdWVSZWY8U2hhcmVkQnVmZmVyQnVpbGRlcj4oKSkKIHsKICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogfQpAQCAtMTY4LDcgKzE2OSw3IEBAIGF1dG8gV2ViVVJMU2No
ZW1lVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKSAtPiBFCiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKLWF1dG8gV2Vi
VVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
IC0+IEV4Y2VwdGlvblR5cGUKK2F1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCiB7
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMTg3LDEwICsxODgsNyBAQCBh
dXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAgIG1fZGF0YVNlbnQgPSB0cnVlOwogCiAgICAgaWYg
KGlzU3luYygpKSB7Ci0gICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgbV9zeW5j
RGF0YS0+YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1fc3luY0RhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7CisgICAgICAgIG1fc3luY0RhdGEtPmFwcGVu
ZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsK
ICAgICB9CiAKQEAgLTIxNywxMiArMjE1LDkgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRD
b21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAg
IG1fY29tcGxldGVkID0gdHJ1ZTsKICAgICAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAg
ICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKLQor
ICAgICAgICBzaXplX3Qgc2l6ZSA9IG1fc3luY0RhdGEtPnNpemUoKTsKKyAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGRhdGEgPSB7IG1fc3luY0RhdGEtPnRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpLCBzaXplIH07CiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jl
c3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7Ci0gICAgICAgIG1fc3luY0RhdGEgPSBudWxs
cHRyOwogICAgIH0KIAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJM
U2NoZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBt
X3Jlc291cmNlTG9hZGVySUQsIGVycm9yKSwgbV93ZWJQYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IDZhODU2MDIxYjEyOTkyNDZjNzAwMDkz
ZGQwYTQ3ZjJjMTMwODUyNjcuLjc5OTQyZjliMjBhMjY2MGNhNGE3ZGNkNDUwMThkMTZlNDNiNjY2
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBGcmFtZUluZm87CkBAIC00Myw3ICs0NCw4IEBA
IGNsYXNzIEZyYW1lSW5mbzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJy
b3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODQsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0
aW9uVHlwZSB3aWxsUGVyZm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsICBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgRXhjZXB0aW9uVHlwZSBkaWRQZXJmb3JtUmVkaXJl
Y3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJik7CiAgICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZURhdGEo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNl
aXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgRXhj
ZXB0aW9uVHlwZSBkaWRDb21wbGV0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAK
ICAgICB2b2lkIHN0b3AoKTsKQEAgLTExNSw3ICsxMTcsNyBAQCBwcml2YXRlOgogCiAgICAgU3lu
Y0xvYWRDb21wbGV0aW9uSGFuZGxlciBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcjsKICAgICBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fc3luY1Jlc3BvbnNlOwotICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IG1fc3luY0RhdGE7CisgICAgVW5pcXVlUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI+IG1fc3luY0RhdGE7CiAKICAgICBib29sIG1fd2FpdGluZ0ZvclJlZGly
ZWN0Q29tcGxldGlvbkhhbmRsZXJDYWxsYmFjayB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oCmluZGV4IDc4NjZjZGIxNzc0NjAwN2FiMGE3YTE3YzU1
Yjg3YzdmMTY0YzJiYWUuLjcyNzlmODQ0Y2MyYmJkMmIwMTdmZTBmMDk3ZGUwMTg3MGE5YTg1MjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKQEAgLTM2LDcgKzM2LDcg
QEAgdHlwZWRlZiBzdHJ1Y3QgX0d0a0NsaXBib2FyZCBHdGtDbGlwYm9hcmQ7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZm9ybWF0cyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKICAgICB2b2lkIHJlYWRUZXh0KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKICAgICB2b2lkIHJlYWRGaWxlUGF0aHMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Ci0gICAgdm9pZCByZWFk
QnVmZmVyKGNvbnN0IGNoYXIqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYpPiYmKTsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgY2hhciosIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpPiYmKTsKICAgICB2b2lkIHdyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJik7CiAgICAg
dm9pZCBjbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
Q2xpcGJvYXJkR3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJk
R3RrMy5jcHAKaW5kZXggYzJiZjUxODNiMzBmMTBlOWViNzgxM2NkYWRhMjIzZTkxODljNzQ1OS4u
NTk2NmQ1NTc0YzI4MmY1MzE2OTQwOTYwODI5NjBhZTMzOWNhMTEwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcApAQCAtMTI2LDE1ICsxMjYsMTUg
QEAgdm9pZCBDbGlwYm9hcmQ6OnJlYWRGaWxlUGF0aHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGUKIHN0cnVjdCBSZWFkQnVmZmVyQXN5bmNEYXRhIHsK
ICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAKLSAgICBleHBsaWNpdCBSZWFk
QnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKKyAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpPiYmIGhhbmRsZXIpCiAgICAgICAgIDogY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSho
YW5kbGVyKSkKICAgICB7CiAgICAgfQogCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+
IGNvbXBsZXRpb25IYW5kbGVyOwogfTsKIAotdm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29u
c3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDbGlwYm9hcmQ6OnJlYWRC
dWZmZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBndGtfY2xpcGJvYXJkX3JlcXVlc3RfY29udGVudHMobV9jbGlwYm9hcmQsIGdka19hdG9t
X2ludGVybihmb3JtYXQsIFRSVUUpLCBbXShHdGtDbGlwYm9hcmQqLCBHdGtTZWxlY3Rpb25EYXRh
KiBzZWxlY3Rpb24sIGdwb2ludGVyIHVzZXJEYXRhKSB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxSZWFkQnVmZmVyQXN5bmNEYXRhPiBkYXRhKHN0YXRpY19jYXN0PFJlYWRCdWZmZXJBc3luY0Rh
dGEqPih1c2VyRGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L0NsaXBib2FyZEd0azQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2Fy
ZEd0azQuY3BwCmluZGV4IDA3YWJiNzEzMTk4ODUzYjc4N2M2MzI0YmQ0ODBiMWUwODhhMmEzZDMu
LjViODFmYThmMjlkM2Y3Y2YxYzNmMDlkMWZjM2M4ODczNGRjNTFhMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKQEAgLTEyMCwxNSArMTIwLDE1
IEBAIHZvaWQgQ2xpcGJvYXJkOjpyZWFkRmlsZVBhdGhzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxlCiBzdHJ1Y3QgUmVhZEJ1ZmZlckFzeW5jRGF0YSB7
CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgZXhwbGljaXQgUmVh
ZEJ1ZmZlckFzeW5jRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpPiYmIGhhbmRsZXIpCisgICAgZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5jRGF0
YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKT4mJiBoYW5kbGVyKQogICAgICAgICA6IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
aGFuZGxlcikpCiAgICAgewogICAgIH0KIAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5kbGVyOworICAgIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
PiBjb21wbGV0aW9uSGFuZGxlcjsKIH07CiAKLXZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNv
bnN0IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ2xpcGJvYXJkOjpyZWFk
QnVmZmVyKGNvbnN0IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgY29uc3QgY2hhciogbWltZVR5cGVzW10gPSB7IGZvcm1hdCwgbnVsbHB0ciB9OwogICAg
IGdka19jbGlwYm9hcmRfcmVhZF9hc3luYyhtX2NsaXBib2FyZCwgbWltZVR5cGVzLCBHX1BSSU9S
SVRZX0RFRkFVTFQsIG51bGxwdHIsIFtdKEdPYmplY3QqIGNsaXBib2FyZCwgR0FzeW5jUmVzdWx0
KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCmluZGV4IGQyMjM4ZmRjOWQxNmY3N2Y4YzNkMzAy
Y2E5OTc2ZmU4M2YxYjNmMzcuLmFiODdjMmE3ZThjMzU3YTY1YjNjZmU2MDc5MzhmZGZlYzhhNjUy
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bE1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1h
Yy5oCkBAIC0xMDAsOCArMTAwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGV4ZWN1dGVVbmRvUmVk
byhVbmRvT3JSZWRvKSBvdmVycmlkZTsKICAgICBib29sIGV4ZWN1dGVTYXZlZENvbW1hbmRCeVNl
bGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RhcnRE
cmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUmIGltYWdlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
aW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5z
aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAotICAgICAgICBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGFy
Y2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0
cmluZyYgdGl0bGUsCisgICAgICAgIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZp
c2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hp
dmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAg
dm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNldFNl
Y3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUlucHV0Q29udGV4dEFi
b3V0RGlzY2FyZGVkQ29tcG9zaXRpb24oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCBhNDExMjEzNWYyZWYxOTAx
NWE1MmYxZTFiMDNhZTMwYTFmMjIzZDJhLi5jMzYzZTk1NWU4NzljMGUxODZiNDE1MDkwOTEzMzY1
YzIwZmU5MDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLm1tCkBAIC00MDAsNyArNDAwLDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c3Rh
cnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiBpdGVtLCBjb25zdCBTaGFyZWFibGVCaXQK
ICAgICBtX2ltcGwtPnN0YXJ0RHJhZyhpdGVtLCBpbWFnZSk7CiB9CiAKLXZvaWQgUGFnZUNsaWVu
dEltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKK3ZvaWQg
UGFnZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBvcmlnaW5JZGVudGlmaWVyKQogewogICAgIGF1dG8gaW1hZ2UgPSBCaXRtYXBJbWFnZTo6
Y3JlYXRlKCk7CiAgICAgaW1hZ2UtPnNldERhdGEoV1RGTW92ZShpbWFnZUJ1ZmZlciksIHRydWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5k
ZXggZTAzZTA4MGFlZTA4MzgwYjQ2ZmZlODlkZDhlNjFiNjZiNTk4ZGI0Ni4uMDFkODQwYTJhNjNl
YWM3OTFmYmQ4NGZiZTYzN2I1YjI4Y2Y2MTMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFMKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBz
aGFyZWRNZW1vcnlJbWFnZS0+Y3JlYXRlU2hhcmVkQnVmZmVyKGltYWdlSGFuZGxlLmRhdGFTaXpl
KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVCdWZmZXI7CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGFyY2hpdmVCdWZmZXI7CiAgICAgaWYgKCFhcmNoaXZl
SGFuZGxlLmhhbmRsZS5pc051bGwoKSkgewogICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUFyY2hp
dmUgPSBTaGFyZWRNZW1vcnk6Om1hcChhcmNoaXZlSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5
OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5QXJjaGl2
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNw
cAppbmRleCBmYTk0MDI1ZWQ3NDczMGQyOGU3MTY0NjI4NWY5ZTViYTY1M2I4ZjEyLi5jMjhmZTY1
ZjBjZjE2NDM5OTgxOGFjYTMyZjk4MWNjNzc4ZjFlOTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCkBAIC04NCw3ICs4NCw3IEBAIGJv
b2wgUmVtb3RlQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3Qg
Q0RNU2Vzc2lvblR5cGUmLCBjb25zCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbW90
ZUNETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGRhdGEpIGNvbnN0Citib29sIFJlbW90ZUNETTo6c3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
KSBjb25zdAogewogICAgIC8vIFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwgaW5zaWRl
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZSgpLgogICAgIHJl
dHVybiB0cnVlOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgUmVtb3RlQ0RNOjpsb2FkQW5kSW5p
dGlhbGl6ZSgpCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6TG9hZEFuZEluaXRpYWxpemUoKSwg
bV9pZGVudGlmaWVyKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIC8vIFRoaXMg
Y2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwgaW5zaWRlIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5Ojp1cGRhdGVMaWNlbnNlKCkuCiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCmluZGV4IDBh
ZGRmODMzNTNiNmVhMWIyZThiMDJjNmI3ZWUzZGFmNDY4Y2QzODMuLjhjNDU0ZWI4M2U1OTk0YThl
NGQ1OTJkNTFkZjkxZmY5YjUyM2NiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE0uaApAQCAtNDgsMTMgKzQ4LDEzIEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9u
V2l0aFJlc3RyaWN0aW9ucyhjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9v
bCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RN
U2Vzc2lvblR5cGUmLCBjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikg
Y29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
LCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVu
dCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNv
bnN0IGZpbmFsOwogICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJl
cXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25z
dCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBib29sIGRpc3Rp
bmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgV2Vi
Q29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0
cjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4gY3JlYXRlSW5zdGFuY2UoKSBmaW5hbDsKICAgICB2b2lk
IGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBjb25z
dCBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29u
c3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNv
bnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBv
cnRlZEluaXREYXRhVHlwZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24u
c3VwcG9ydGVkSW5pdERhdGFUeXBlczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcAppbmRleCBiNWRlYTIxZTk5
NWE3MzdmMDM2ZjY0NTM4YzFmYjNlY2I1ZTZiYjU1Li5hMTNlNTE0NjBmNmJiOWY4MGVmM2QxYTg0
MmVmYzBiOWY0NDU5MGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lk
IFJlbW90ZUNETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2Vi
Q29yZTo6Q0RNS2V5U3lzdGVtQwogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0
YW5jZVByb3h5OjpJbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgZGlz
dGluY3RpdmVJZGVudGlmaWVycywgcGVyc2lzdGVudFN0YXRlKSwgV1RGTW92ZShjYWxsYmFjayks
IG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNl
cnRpZmljYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nl
c3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U2VydmVy
Q2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlm
aWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9mYWN0b3J5
KSB7CiAgICAgICAgIGNhbGxiYWNrKEZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKaW5kZXggMTA2YmEzYjEx
NjFjOGRmMDlkNzFkZmU2NzliYTMzZDQyMzA3OWU5Ni4uMmM3ODUxZTQ0MGIwOGE1MmEyYWU3MGRh
N2U0MTg4ODJlM2M2MTQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRl
OgogCiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6UmVtb3RlOyB9CiAgICAgdm9pZCBpbml0
aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3Rh
dGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmlj
YXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5h
bDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRT
dG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmtleVN5c3Rl
bTsgfQogICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Np
b24oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAppbmRleCBhZjBiYWQ0Yzkw
ZDhkZDUxMzc3NGFlZjZhMTViNzdiYTg5ZmM1MDY0Li5jNzQwYzA0NTA2ZmRlZGFjOWY0Y2Y1MDJj
MjA1YThhMzdmY2E0NTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCkBAIC00OSw3
ICs0OSw3IEBAIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmCiB7CiB9CiAKLXZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExp
Y2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246
OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VD
YWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9mYWN0b3J5KSB7CiAgICAgICAgIGNh
bGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBGYWls
ZWQpOwpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZwogICAgIH0sIG1f
aWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykK
K3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAg
aWYgKCFtX2ZhY3RvcnkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCk7CkBAIC0xMDksNyArMTA5LDcgQEAg
dm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkLCBMaWNlbnMKICAgICB9CiAKICAgICBtX2ZhY3RvcnktPmdwdVByb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25J
ZCwgdHlwZSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoS2V5U3RhdHVzVmVjdG9y
JiYgY2hhbmdlZEtleXMsIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYmIG1l
c3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxS
ZWY8U2hhcmVkQnVmZmVyPj4gcmVhbE1lc3NhZ2UgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiByZWFsTWVzc2FnZSA9IHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKG1lc3NhZ2UgJiYgbWVzc2FnZS52YWx1ZSgpLmJ1ZmZl
cigpKQogICAgICAgICAgICAgcmVhbE1lc3NhZ2UgPSBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCku
cmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjaGFuZ2VkS2V5cyks
IFdURk1vdmUocmVhbE1lc3NhZ2UpLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXggNGZmZTRjYWNlY2NkZTQzZDVjYjExZTIzNmNh
MDQ1YWNkYTgzYTdlYi4uNGU0Y2QyYzAwNWM2YjAwNjVmOWNkYjE4OGM0YmNlMGI1YmZhNjYwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oCkBAIC01OSw4ICs1OSw4IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHNldENsaWVudChXZWFrUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNs
aWVudD4mJiBjbGllbnQpIGZpbmFsIHsgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7IH0KICAg
ICB2b2lkIGNsZWFyQ2xpZW50KCkgZmluYWwgeyBtX2NsaWVudCA9IG51bGxwdHI7IH0KLSAgICB2
b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNl
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYp
IGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
TGljZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3Bv
bnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lv
bihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9u
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsK
ICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNl
bnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGLmNwcAppbmRleCA5YTIxOWE1NDRlNTUzODNmNTRlNzFkYWJkMzU0Y2M0NDBhNDE0MmI5
Li42MjkyNjc5OGM1YzExMzI0YTMxYWE1MGNkYTdlZDFmYmY3NGZlNzAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkYuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJB
VkY6OnNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUK
IAogLy8gSWYgYWxsRGF0YVJlY2VpdmVkIGlzIHRydWUsIHRoZSBjYWxsZXIgZXhwZWN0cyBlbmNv
ZGVkRGF0YVN0YXR1cygpIHRvIGJlID49IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxl
CiAvLyBhZnRlciB0aGlzIGZ1bmN0aW9uIHJldHVybnMgKGluIHRoZSBzYW1lIHJ1biBsb29wKS4K
LXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RGF0
YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsK
ICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRi5oCmluZGV4IGU1Y2ZlOTRlY2QzYTljMDYwMGZjMDAzMjBmZjQzMDYxYzkwZWQ2
OWIuLjQwZDM3MzRmN2EzMjJlOGJhY2I5ZDFjMGRlYTcwNzllMmFkMTdlYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkYuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBSZW1vdGVJbWFnZURlY29kZXJBVkYg
ZmluYWwKICAgICA6IHB1YmxpYyBXZWJDb3JlOjpJbWFnZURlY29kZXIKICAgICAsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlKFJlbW90ZUltYWdlRGVjb2RlckFW
Rk1hbmFnZXImIG1hbmFnZXIsIGNvbnN0IFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIm
IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpCisgICAgc3RhdGljIFJlZjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZShSZW1vdGVJ
bWFnZURlY29kZXJBVkZNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBXZWJDb3JlOjpJbWFnZURlY29k
ZXJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJlbW90ZUltYWdlRGVjb2RlckFWRihtYW5hZ2VyLCBpZGVudGlmaWVyLCBtaW1lVHlw
ZSkpOwogICAgIH0KQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OlBsYXRm
b3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBXZWJDb3JlOjpTdWJz
YW1wbGluZ0xldmVsID0gV2ViQ29yZTo6U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3Qg
V2ViQ29yZTo6RGVjb2RpbmdPcHRpb25zJiA9IFdlYkNvcmU6OkRlY29kaW5nT3B0aW9ucyhXZWJD
b3JlOjpEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4
cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbDsKLSAgICB2b2lkIHNldERhdGEoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZv
aWQgc2V0RGF0YShXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVm
ZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdl
ci5jcHAKaW5kZXggNDFkNTM4ODAyM2QzOTE0OTUyMTgzNWY2ODhkZTRkNDhmNjVkNzY3ZS4uMDgy
YjMzNjZjOGJjNzEzMGQ3NWQ1Njk4YTdkNzllNjg5MmFkOGY3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRk1hbmFnZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmUHRyPFJlbW90ZUltYWdlRGVjb2Rl
ckFWRj4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6Y3JlYXRlSW1hZ2VEZWNvZGVyKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKQorUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGTWFuYWdlcjo6Y3JlYXRlSW1hZ2VEZWNvZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAg
ICBzdGQ6Om9wdGlvbmFsPEltYWdlRGVjb2RlcklkZW50aWZpZXI+IGltYWdlRGVjb2RlcklkZW50
aWZpZXI7CiAgICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2Ug
eyBkYXRhIH07CkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZN
YW5hZ2VyOjpzZXRVc2VHUFVQcm9jZXNzKGJvb2wgdXNlR1BVUHJvY2VzcykKICAgICBJbWFnZURl
Y29kZXI6Omluc3RhbGxGYWN0b3J5KHsKICAgICAgICAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpz
dXBwb3J0c01lZGlhVHlwZSwKICAgICAgICAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpjYW5EZWNv
ZGVUeXBlLAotICAgICAgICBbdGhpc10oU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pIHsKKyAgICAgICAgW3RoaXNdKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikgewogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUltYWdlRGVjb2Rlcihk
YXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsK
ICAgICAgICAgfQogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaAppbmRl
eCBjMjM3ODJiNjUwNGVjNzliZTQ2ZTEyNmY0ZTU5MWIzZmY3ZjZkYmE4Li4zNjE4YWZkMTIwOThi
NTU3NmI0ZGQ0ZmZiZjNjMDZmYmE4NDJhNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1h
bmFnZXIuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24mIGVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRy
PFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlSW1hZ2VEZWNvZGVyKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6QWxwaGFPcHRp
b24sIFdlYkNvcmU6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBSZWZQdHI8UmVt
b3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGVJbWFnZURlY29kZXIoV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6QWxw
aGFPcHRpb24sIFdlYkNvcmU6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIC8v
IEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQuCiAgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVj
dGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJp
dmF0ZS5jcHAKaW5kZXggMTFiNGE4NmU0ODUyZjZjMjA2MWZhM2ZjOWFmMjlmODg5OWY0ZWI5Zi4u
YjQwODlmZDM1NDhjOTdmMTdmYzJiOWZiMDAyNzgwZDY0M2NmMjNiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQ
cml2YXRlLmNwcApAQCAtMTY1LDEwICsxNjUsMTAgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0
ZTo6c3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KiBzdG9yYWdlLCBjb25zdCBXZWJDb3JlOjoK
ICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OkF1
ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkIHsgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZN
b3ZlKGhhbmRsZSksIGRhdGFTaXplIH0sIGZvcm1hdCwgZnJhbWVDb3VudCB9LCBtX2lkZW50aWZp
ZXIpOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpmZXRjaERhdGEoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZTo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9jb25uZWN0aW9uLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OkZldGNoRGF0YSB7
IH0sIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtaW1l
VHlwZSA9IG1pbWVUeXBlKCldKGF1dG8mJiBkYXRhLCBkb3VibGUgdGltZUNvZGUpIG11dGFibGUg
ewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmIChkYXRhLnNpemUoKSkK
ICAgICAgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSwg
bWltZVR5cGUsIHRpbWVDb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCmluZGV4IDMwM2E1NGY3NmYx
ODVlOTY0NTRlZjlmNWJiNDYxZjI4ZTEyNjc4NmQuLjU3NmZkMWM2ZTk3YzBjYWQ4Y2JmZWM5NGUz
YmQzNjMzMDc2ZTQ0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaApAQCAtNTcsNyArNTcsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlCiAg
ICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpNZWRpYVNhbXBsZSYsIFdlYkNv
cmU6OlZpZGVvU2FtcGxlTWV0YWRhdGEpIGZpbmFsOwotICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJikgZmluYWw7CisgICAgdm9pZCBmZXRjaERhdGEo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJikgZmluYWw7CiAgICAg
dm9pZCBzdG9wUmVjb3JkaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAg
ICAgdm9pZCBzdGFydFJlY29yZGluZyhTdGFydFJlY29yZGluZ0NhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29u
c3QgV2ViQ29yZTo6UGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBXZWJDb3JlOjpBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5q
ZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCAwNjczZjc0ZGRmYjQ4ZTViZGY0MzhjZDkw
YmUzNzk0ZWVlMjA5MWJiLi4wMzUzYWFiZjdkNGI5MjVhYTJmMTU2MmQ1NzNhYWYzMDkzYzgzYmM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5o
CkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJh
Z21lbnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3R5bGVQcm9w
ZXJ0aWVzOwogc3RydWN0IFNpbXBsZVJhbmdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
QVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggYTA2MzUyMDQzMzViM2Fi
MGU2ZGZiMGM2Nzc3NjdmNDI4ZThhNzdlMi4uMTgwYjExMTFlY2YwMTEzMjgwOTI2NmExYmNlMjdk
MjYwZTRmYTAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudC5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIERPTVdpbmRvd0V4dGVu
c2lvbjsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU2LDcgKzU2LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgflBhZ2VMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIEFQSTo6T2JqZWN0KikgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpT
dHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6VVJMJiwgQVBJOjpPYmplY3Qq
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJLaXQ6OldlYlBh
Z2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNv
bnN0IFdURjo6VVJMJiwgQVBJOjpPYmplY3QqKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2Vi
RnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2Vi
UGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmluZGV4IDhkNTI0
YjUyNWM2ZTdhMGNjNmJkZTVlODBhNDdjMTcxZTM0MTQ2OGMuLjk0ZmVkMmU3ZTM2MzAyOTFmOTlm
NTM3OGFjYmRkMmMzOTUwZDNlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuY3BwCkBAIC02MiwxOCArNjIsMTkgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25z
dCBSZXMKIHN0YXRpYyB2b2lkIHJlbGVhc2VTaGFyZWRCdWZmZXIodW5zaWduZWQgY2hhciosIGNv
bnN0IHZvaWQqIGRhdGEpCiB7CiAgICAgLy8gQmFsYW5jZWQgYnkgcmVmKCkgaW4gSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KCkuCi0gICAgc3RhdGlj
X2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOwor
ICAgIHN0YXRpY19jYXN0PGNvbnN0IFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwogfQog
Ci12b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVz
dChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1
ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcm
IGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0
YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5
cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJM
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC53aWxsTG9hZERh
dGFSZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8QVBJOjpEYXRhPiBkYXRh
OwogICAgIGlmIChzaGFyZWRCdWZmZXIpIHsKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5yZWYoKTsK
LSAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVu
c2lnbmVkIGNoYXIqKXNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSwg
cmVsZWFzZVNoYXJlZEJ1ZmZlciwgc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYXV0byBjb250aWd1
b3VzQnVmZmVyID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBjb250
aWd1b3VzQnVmZmVyLT5yZWYoKTsKKyAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0
aG91dENvcHlpbmcoY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBjb250aWd1b3VzQnVmZmVyLT5z
aXplKCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIGNvbnRpZ3VvdXNCdWZmZXIucHRyKCkpOwogICAg
IH0KIAogICAgIG1fY2xpZW50LndpbGxMb2FkRGF0YVJlcXVlc3QodG9BUEkoJnBhZ2UpLCB0b0FQ
SShyZXF1ZXN0KSwgdG9BUEkoZGF0YS5nZXQoKSksIHRvQVBJKE1JTUVUeXBlLmltcGwoKSksIHRv
QVBJKGVuY29kaW5nTmFtZS5pbXBsKCkpLCB0b1VSTFJlZih1bnJlYWNoYWJsZVVSTC5zdHJpbmco
KS5pbXBsKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggMzZiZDk4
MGIyZmFhMWFmNDVhYzMxMDZlYjAxZTlmMzc2YmExM2FjZi4uODYzYmRhYjYyODRjYTNhYWQyZjlk
NWZmZjVmZDY4ZWFiOGIyYjczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KGNvbnN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVu
dEJhc2UqKTsKIAogICAgIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwotICAgIHZv
aWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25z
dCBXVEY6OlN0cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAg
dm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpT
dHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFn
ZSYsIFdlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFn
ZSYsIFdlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdN
b2RlbFBsYXllck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJL
aXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KaW5kZXggZTUyNGQ4ZTFiMDE3YWE4ZTVl
MDNiODkyZDkyYjc1ODk0YzU4ZjM3NC4uYTc4NGVjMzg4YjIyNTI0Y2MwZGE2MzI3OGU1ZTc1OTEz
N2RjZjY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9B
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCkBA
IC0xMDYsNyArMTA2LDcgQEAgdm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6
Y3JlYXRlRmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAgaWYgKGZpbGUgPD0g
MCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwg
bW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsK
KyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAg
IEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKICAgICBtX2ZpbGVQYXRoID0gZmlsZVBhdGg7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA5NGQ5ZDJjYzNlYjI4ODBjZGNmMjJj
MDcyYTM5YTk4OTU1ZmQ0NDMwLi4wMjI3MGE1M2FmOWJhOGJmODBkN2MzYjNkY2RjOGNlYjU2NTE3
NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTI4MSw5ICsyODEsOSBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsCiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5T
aGFyZWRCdWZmZXIoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRC
dWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBjcmVhdGUgU2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciBy
ZXNvdXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVx
dWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IDI1OTQ0OTQyMzg1NWZlZDNhYWFhYjQxNDgxOWY4OTUxYTNi
OGI3ZmYuLjMxMGZjYTc4NzVjMzJjM2NkNzQ3OGRiNjRmNTlhYzJjZjUwMTYzOTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgIGlm
IChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNl
KG1fY29yZUxvYWRlci0+ZnJhbWUoKSwgcmVzcG9uc2UpKSB7CiAgICAgICAgIGF1dG8gaW50ZXJj
ZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciA9IG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpOwogICAg
ICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuYmVnaW5JbnRlcmNlcHRpbmdSZXNwb25zZShpbnRl
cmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyKTsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShtX2NvcmVMb2FkZXItPmZyYW1lKCksIHJlc3Bv
bnNlLCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIHBvbGljeURlY2lz
aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhh
bmRsZXIpXShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBpbnNwZWN0b3JSZXNwb25zZSwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShtX2NvcmVMb2FkZXItPmZy
YW1lKCksIHJlc3BvbnNlLCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIs
IHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHBvbGljeURlY2lzaW9u
Q29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBpbnNwZWN0b3JSZXNw
b25zZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG92ZXJyaWRlRGF0YSkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5pZGVu
dGlmaWVyKCkpIHsKICAgICAgICAgICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xP
RygiZGlkUmVjZWl2ZVJlc3BvbnNlOiBub3QgY29udGludWluZyBpbnRlcmNlcHQgbG9hZCBiZWNh
dXNlIG5vIGNvcmVMb2FkZXIgb3Igbm8gSUQiKTsKICAgICAgICAgICAgICAgICBtX2ludGVyY2Vw
dENvbnRyb2xsZXIuY29udGludWVSZXNwb25zZShpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVy
KTsKQEAgLTI5NSwxMSArMjk1LDExIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kCiAgICAgTE9H
KE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNv
dXJjZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0
YSgpKTsKICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc291
cmNlOiIpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdy
YXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAoIWJ1ZmZl
cikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZyb20gU2hh
cmVhYmxlUmVzb3VyY2Ugc2VudCBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7Ci0gICAgICAg
IFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJs
ZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIik7CisgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JF
TEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciIpOwogICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBtX2NvcmVMb2FkZXIt
PmZyYW1lKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkK
ICAgICAgICAgICAgICAgICBwYWdlLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdu
b3N0aWNNZXNzYWdlKFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxFcnJv
cktleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmNyZWF0ZVNoYXJlZEJ1ZmZl
ckZhaWxlZEtleSgpLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCA0MmRlNDYxNDE5
Nzc4YjdjNDUwZmNhMWViMDM3YzFjZTk3ZDJkNjMxLi5hN2Y0NWM4NDAxYjJmZDJmODcwZTM2Nzhj
NThmYzMxMGMyZTFmMjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5oCkBAIC0yMDcsNyArMjA3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sKSBmaW5hbCB7IH0KICAgICBib29sIGdl
dEZvcm1WYWx1ZShTdHJpbmcmIGZvcm1WYWx1ZSkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICBib29sIGhhbmRsZVNjcm9sbChXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNj
cm9sbEdyYW51bGFyaXR5KSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBmaW5hbDsKICAg
ICB2b2lkIHdpbGxEZXRhY2hSZW5kZXJlcigpIGZpbmFsOwogICAgIGJvb2wgcGx1Z2luSGFuZGxl
c0NvbnRlbnRPZmZzZXRGb3JBY2Nlc3NpYmlsaXR5SGl0VGVzdCgpIGNvbnN0IGZpbmFsOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0KaW5kZXggZDIzYWJiOWU2NTExYjEzYmJkNTIzYWY0NTFmNDQxNzg3M2E2YzFlMC4uZDQ3ZjMy
YjdkNDkxOTU2YmRjZTc3YmZlNmYxNWNhNzg2NWJmZDE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0yNTUyLDcgKzI1NTIs
NyBAQCB2b2lkIFBERlBsdWdpbjo6bm90aWZ5RGlzcGxheU1vZGVDaGFuZ2VkKGludCkKICAgICB1
cGRhdGVTY3JvbGxiYXJzKCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBERlBsdWdpbjo6
bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
UERGUGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBOU0RhdGEgKnBkZkRh
dGEgPSBsaXZlRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5oCmluZGV4IDg4ZjQ1Y2U1MWNlMzFkZjBjNWIzYjc1ODYyMzZjM2YwZDljOTNhZDMuLjU4ZDcw
YTM5YTE2ZDZhNGMwZThiMGNhOWQwM2FjM2QzN2FlZGZjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIEludFBvaW50
OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBTY3JvbGxiYXI7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTI4OCw3ICsyODgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb2ludEluTG9jYWxDb29yZGluYXRlcykgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJl
c291cmNlRGF0YSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtRGljdGlv
bmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpID0gMDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRl
eCBkNTRmMjdmMDcwOTE0N2U5ZWRlYzA2ZGU1OGMxZThjYzEyMzFhNjc3Li43ZmIyMGM1OTJkYmZh
MDk2ZTM4YmMxNjg3MDM3MzhjYjhmNDA3Yzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMjg5LDYgKzI4OSw3IEBAIFBsdWdpblZp
ZXc6OlBsdWdpblZpZXcoSFRNTFBsdWdJbkVsZW1lbnQmIHBsdWdpbkVsZW1lbnQsIFJlZjxQbHVn
aW4+JiYgcGx1Z2luLCBjCiAgICAgLCBtX3dlYlBhZ2Uod2ViUGFnZShtX3BsdWdpbkVsZW1lbnQu
Z2V0KCkpKQogICAgICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiAgICAgLCBtX3BlbmRpbmdV
UkxSZXF1ZXN0c1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlBsdWdpblZpZXc6OnBlbmRp
bmdVUkxSZXF1ZXN0c1RpbWVyRmlyZWQpCisgICAgLCBtX21hbnVhbFN0cmVhbURhdGEobWFrZVVu
aXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpKQogewogICAgIG1fd2ViUGFnZS0+YWRkUGx1
Z2luVmlldyh0aGlzKTsKIH0KQEAgLTQwMyw5ICs0MDQsNiBAQCB2b2lkIFBsdWdpblZpZXc6Om1h
bnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkK
IAogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VSVChtX21hbnVhbFN0
cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpIYXNSZWNlaXZlZFJlc3BvbnNlKTsKLSAg
ICAgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEpCi0gICAgICAgICAgICBtX21hbnVhbFN0cmVh
bURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCiAgICAgICAgIG1fbWFudWFsU3RyZWFt
RGF0YS0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
NDM3LDcgKzQzNSw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZhaWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAg
ICAgbV9tYW51YWxTdHJlYW1TdGF0ZSA9IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZDsKICAg
ICAgICAgbV9tYW51YWxTdHJlYW1FcnJvciA9IGVycm9yOwotICAgICAgICBtX21hbnVhbFN0cmVh
bURhdGEgPSBudWxscHRyOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEtPnJlc2V0KCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkyNiwxMSArOTI0LDExIEBAIHZvaWQgUGx1Z2lu
Vmlldzo6d2lsbERldGFjaFJlbmRlcmVyKCkKICAgICBtX3BsdWdpbi0+d2lsbERldGFjaFJlbmRl
cmVyKCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJj
ZURhdGEoKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6
OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8
ICFtX3BsdWdpbikgewotICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhICYmIG1fbWFudWFs
U3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQotICAgICAgICAgICAg
cmV0dXJuIG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3Rh
dGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQorICAgICAgICAgICAgcmV0dXJuIG1f
bWFudWFsU3RyZWFtRGF0YS0+Z2V0KCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQpAQCAtMTI0MiwxMCArMTI0MCwxMCBAQCB2b2lkIFBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVh
bFN0cmVhbSgpCiAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShtX21hbnVhbFN0cmVh
bVJlc3BvbnNlKTsKIAogICAgIC8vIERlbGl2ZXIgdGhlIGRhdGEuCi0gICAgaWYgKG1fbWFudWFs
U3RyZWFtRGF0YSkgewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiAqbV9tYW51
YWxTdHJlYW1EYXRhKQorICAgIGlmICghbV9tYW51YWxTdHJlYW1EYXRhLT5pc051bGwoKSkgewor
ICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fbWFudWFsU3RyZWFtRGF0YS0+dGFrZSgpOworICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBidWZmZXIuZ2V0KCkpCiAgICAgICAgICAgICBt
YW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoZWxlbWVudC5zZWdtZW50LT5kYXRhKCksIGVsZW1lbnQu
c2VnbWVudC0+c2l6ZSgpKTsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsK
ICAgICB9CiAKICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0
ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmgKaW5kZXggMjEyNmViOGVkYjU1OTM4NmIzNDIyNWViMmJkNWJmY2Q2ODAyM2YyMy4uZDE1
M2EyOWNhMTRhOTBlMzIyN2E4OTFlM2VlZjVlNGU3OTczNTFhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNDEsNiArNDEsNyBAQAogI2lu
Y2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogLy8gRklYTUU6IEV2ZW50dWFs
bHkgdGhpcyBzaG91bGQgbW92ZSB0byBXZWJDb3JlLgogCkBAIC0xMTUsNyArMTE2LDcgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBzaG91bGRBbGxvd1NjcmlwdGluZygpOwogCi0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0OworICAgIFJlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29u
c3Q7CiAgICAgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYpOwogICAgIFN0cmluZyBnZXRTZWxlY3Rpb25Gb3JXb3JkQXRQb2lu
dChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgY29uc3Q7CiAgICAgYm9vbCBleGlzdGluZ1Nl
bGVjdGlvbkNvbnRhaW5zUG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIGNvbnN0OwpA
QCAtMjUyLDcgKzI1Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIG1fbWFudWFsU3RyZWFtUmVzcG9uc2U7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBt
X21hbnVhbFN0cmVhbUVycm9yOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1f
bWFudWFsU3RyZWFtRGF0YTsKKyAgICBVbmlxdWVSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVp
bGRlcj4gbV9tYW51YWxTdHJlYW1EYXRhOwogCiAgICAgLy8gVGhpcyBzbmFwc2hvdCBpcyB1c2Vk
IHRvIGF2b2lkIHNpZGUgZWZmZWN0cyBzaG91bGQgdGhlIHBsdWdpbiBydW4gSlMgZHVyaW5nIHBh
aW50aW5nLgogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fdHJhbnNpZW50UGFpbnRpbmdT
bmFwc2hvdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggZmVl
OGZlYTdiY2M4ZDU5YzA3ZTNjNWJhNGQ2MDk1NTJhNGQ2MjhiZi4uYjA0Y2NjZjExM2U0OTI4ZmE2
NjM4M2JkMjQzMWRiODc0ODUzY2NhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5jcHAKQEAgLTcxLDE2ICs3MSwxNSBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJgogICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlk
UmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZU1lc3NhZ2UgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQogCi12b2lkIFdlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQordm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZl
RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFt
X2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3dhaXRpbmdGb3JDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsKLSAgICAgICAgaWYgKCFzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSkpCi0gICAgICAg
ICAgICBtX3Jlc3BvbnNlRGF0YSA9IGJ1ZmZlci0+Y29weSgpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpLT5hcHBl
bmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKSkKKyAgICAgICAgICAgIG1fcmVz
cG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpOworICAgICAgICBzdGQ6OmdldDxTaGFy
ZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIwNiw4ICsyMDUsOCBAQCB2b2lkIFdlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkK
ICAgICBzd2l0Y2hPbihtX3Jlc3BvbnNlRGF0YSwgW3RoaXNdKHN0ZDo6bnVsbHB0cl90Jikgewog
ICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKLSAgICB9
LCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewotICAgICAgICBkaWRSZWNlaXZl
RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIH0sIFt0aGlzXShjb25zdCBTaGFyZWRCdWZmZXJC
dWlsZGVyJiBidWZmZXIpIHsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlci5nZXQoKSk7
CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwogICAg
IH0sIFt0aGlzXShSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5oCmluZGV4IGIzNDdjYWQyYWI1ZjU3MWIxYTBlMjA3MjA4MDQzNjdkNzcw
MTg2MDAuLjZiMGE0MTdjZjBkM2FlMGQ3Yjg5M2E5OTg2ODNhYmYyYmM0YTRkOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0ZldGNoTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNl
V29ya2VyRmV0Y2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ5LDcgKzUwLDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lk
IGRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiYpIGZp
bmFsOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRGaW5pc2goKSBmaW5hbDsKQEAgLTgyLDcgKzgzLDcgQEAgcHJpdmF0
ZToKICAgICBzdGQ6Om9wdGlvbmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKICAgICBib29s
IG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFs
c2UgfTsKLSAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+LCBSZWY8V2ViQ29yZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVz
b3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOworICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxw
dHJfdCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciwgUmVmPFdlYkNvcmU6OkZvcm1EYXRh
PiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKICAg
ICBib29sIG1fZGlkRmluaXNoIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
aW5kZXggODFlMzc5ZTMzZDFhOWFjZGM4NmVmNWM0YmUyMWE3MjYwZDk0ZDQ4ZS4uN2NmYzAzYTg1
ZDM5ZDgxZjM5MmMwYWExMzBmODNmYmQyYzgzNGYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
QEAgLTE0Miw3ICsxNDIsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQXBwbHlTdHls
ZShjb25zdCBTdHlsZVByb3BlcnRpZXMmIHN0eWxlLCBjb25zdCBzdGQ6OgogCiAjaWYgRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0
YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGRhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJBdHRhY2htZW50
SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShpZGVudGlmaWVyLCBj
b250ZW50VHlwZSwgcHJlZmVycmVkRmlsZU5hbWUsIGRhdGEuZ2V0KCkpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAppbmRleCA1MDZkOWY1NDEzOGQzN2NiNGM2NGVkNDYwZjU5YTVjMjhmZTUyMmE2Li5i
MDU4NjE4OTFlY2M4NGM2MzY4YTIwNmMyNzAxMDYwZjUwNTJmNWUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRNb3ZlUmFuZ2VB
ZnRlckRlbGV0ZShjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYsIGNvbnN0IFdlYkNvcmU6OlNp
bXBsZVJhbmdlJikgZmluYWw7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAg
IHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNo
bWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
Y29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJp
bmcmIGZpbGVQYXRoKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZl
Y3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNGJkYmJjY2QzZmJjNjIwZTA3NTQxMDVjZWEw
OWVkZGYwNTEyMGI2Yi4uMTRhMDgzY2EyMDdhOTA2M2NmODBiMWU3ZTk2NzBhNDg3Y2Y0ZDM5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTg4LDggKzExODgsOCBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlcikKICAgICAgICAgICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEg
PSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKLSAgICAgICAgICAgIElQQzo6RGF0YVJlZmVy
ZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5k
YXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6
ZSgpIDogMCk7CisgICAgICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFp
blJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOworICAgICAgICAgICAg
SVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5S
ZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNv
dXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKICAgICAgICAgICAgIHdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFG
b3JDdXN0b21Db250ZW50UHJvdmlkZXIobG9hZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVu
YW1lKCksIGRhdGFSZWZlcmVuY2UpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwCmluZGV4IGY0MWE3MGVmNWJiNmMwZWNlOGJkODYyNzQxMTYwMWNmNzMwZTYy
YTEuLjRhOGJlZTU3ZmRiMWZmY2RlZjAwODlmYTY1ZTk3NTM3NTBkMjUwZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgaW50NjRfdCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIGMKICAgICByZXR1cm4gbmV3Q2hhbmdlQ291bnQ7CiB9CiAKLWludDY0X3QgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK2ludDY0X3QgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hhcmVk
TWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBlMjgwOTk2M2Y0ZjUwNjgxYjdk
MDFmNDFhNjg1MzFhYjczMjE0ZmIwLi4xZmY4M2UxMWJjMTc4OWFhYzBmOTAwYzkzZGMyMmZiZjIz
OWVhMmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC02Niw3ICs2Niw3IEBA
IHByaXZhdGU6CiAKICAgICBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRUeXBlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwot
ICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qg
c2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNl
dFVSTChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBpbnQ2NF90IHNldENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCmluZGV4IDA3YjE2N2UwZWVlZTc2ODg3NWIwMzlkZmE1
OWY1ZmQxM2M3NTRlMTAuLmQ0MTU5MDRjNzFiMWMwYzcyYTNlMTdjZjdiMzQ1MjBhYTI3OTAzNjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAtNDUsMTMg
KzQ1LDEzIEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQo
Y29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAgICAgOiBtX2ZpbGVOYW1lIHsgZmls
ZU5hbWUgfQogICAgICwgbV91dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQot
ICAgICwgbV9idWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fYnVmZmVy
IHsgbWFrZVVuaXF1ZVJlZjxTaGFyZWRCdWZmZXJCdWlsZGVyPigpIH0KIHsKIH0KIAogV2ViUHJl
dmlld0xvYWRlckNsaWVudDo6fldlYlByZXZpZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7CiAK
LXZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2
ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0
byB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShtX3BhZ2VJRCk7CiAg
ICAgaWYgKCF3ZWJQYWdlKQpAQCAtNjksMTMgKzY5LDEyIEBAIHZvaWQgV2ViUHJldmlld0xvYWRl
ckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZygpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZShtX2J1ZmZlci5nZXQoKSk7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAg
d2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9i
dWZmZXItPnRha2UoKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6
ZGlkRmFpbCgpCiB7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgbV9idWZmZXItPnJlc2V0
KCk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVxdWVzdFBhc3N3b3Jk
KEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlBy
ZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IDA0OTJjZWVjMmY5YjljZDg1
MzgzODQ4NGZiYzI2YzA3Y2I1M2RhODcuLmNjM2IyNGI3MjliMjE4YjgwZDM3YTEyY2Q3ZmFjM2Rm
YTliZWQxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0y
OSw4ICsyOSwxMyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0
Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKK30KKwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1lOwpAQCAtNDUsNyArNTAsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgV2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBjb25zdCBTdHJpbmcmIHV0aSwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwotICAgIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkRmFpbCgpIG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNQYXNz
d29yZEVudHJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNTQsNyArNTks
NyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1lOwogICAgIGNvbnN0IFN0
cmluZyBtX3V0aTsKICAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsK
LSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBVbmlxdWVSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCBhNjRjNmE4YjNj
Njk1ZTE3MzM2NDMzNmJjYjBmNjhkYmRkOWMyZDIxLi5lMWUwZTYxMTJhMmRlZGMzYjhiYjYzMDk4
NTM1Mzc2ZWY0M2FkNTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC0xNTAs
NyArMTUwLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2Uo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKIAogICAgIE5TVVJMUmVzcG9uc2Ug
KnJlc3BvbnNlID0gaW1hZ2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEo
KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBz
aXplX3QgaW1hZ2VTaXplID0gaW1hZ2VCdWZmZXItPnNpemUoKTsKIAogICAgIGF1dG8gc2hhcmVk
TWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCppbWFnZUJ1ZmZlcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggOWJk
NGNkMmQwY2IxMDNiNDVhYThlNmMxZDQyN2MwYjE3YmY1ZWQxMy4uZDg4ZjQ0Y2ZjZGU1ZTE1ZjY2
YzEyNGI0MGY1YjU0MzViOTQ2OTdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMzQwLDEwICszNDAsMTAgQEAgU3RyaW5nIFdlYkZyYW1l
Ojpzb3VyY2UoKSBjb25zdAogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IG1f
Y29yZUZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpOwogICAgIGlmICghZG9j
dW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURh
dGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0
YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVz
b3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgcmV0dXJuIGRlY29kZXIt
PmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNl
RGF0YS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFp
blJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRh
LT5zaXplKCkpOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OmNvbnRlbnRzQXNTdHJpbmcoKSBjb25z
dCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
YjNiMGZiY2M3NmU2MGY2NzhiZjFjNmRlNTIxMzA1OThjYjJkMDA4OC4uYWNlMjMxNTY2MmUyMGY2
ZjA0MDg3NWNlNTQ3ZTU5ZGFmMWZlOTg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE3MzgsNyArMTczOCw3IEBAIE5PX1JFVFVSTiB2b2lk
IFdlYlBhZ2U6OmxvYWRSZXF1ZXN0V2FpdGluZ0ZvclByb2Nlc3NMYXVuY2goTG9hZFBhcmFtZXRl
cnMmJiwgVVJMCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBX
ZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBTaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIHNoYXJlZEJ1ZmZlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNw
b25zZSYmIHJlc3BvbnNlLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9y
eVZpc2liaWxpdHkgc2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5LCBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCit2b2lkIFdlYlBhZ2U6Omxv
YWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBv
bGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIHNoYXJlZEJ1ZmZlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNw
b25zZSYmIHJlc3BvbnNlLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9y
eVZpc2liaWxpdHkgc2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5LCBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCiB7CiAjaWYgRU5BQkxFKEFQ
UF9CT1VORF9ET01BSU5TKQogICAgIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgJm1fbWFpbkZyYW1lLmdldCgpKTsKQEAgLTE3NTMs
NyArMTc1Myw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNoCiAKICAgICAvLyBMZXQgdGhlIElu
amVjdGVkQnVuZGxlIGtub3cgd2UgYXJlIGFib3V0IHRvIHN0YXJ0IHRoZSBsb2FkLCBwYXNzaW5n
IHRoZSB1c2VyIGRhdGEgZnJvbSB0aGUgVUlQcm9jZXNzCiAgICAgLy8gdG8gYWxsIHRoZSBjbGll
bnQgdG8gc2V0IHVwIGFueSBuZWVkZWQgc3RhdGUuCi0gICAgbV9sb2FkZXJDbGllbnQtPndpbGxM
b2FkRGF0YVJlcXVlc3QoKnRoaXMsIHJlcXVlc3QsIGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4o
c3Vic3RpdHV0ZURhdGEuY29udGVudCgpKSwgc3Vic3RpdHV0ZURhdGEubWltZVR5cGUoKSwgc3Vi
c3RpdHV0ZURhdGEudGV4dEVuY29kaW5nKCksIHN1YnN0aXR1dGVEYXRhLmZhaWxpbmdVUkwoKSwg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0
YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIG1fbG9hZGVyQ2xpZW50LT53aWxsTG9hZERhdGFSZXF1
ZXN0KCp0aGlzLCByZXF1ZXN0LCBjb25zdF9jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPihz
dWJzdGl0dXRlRGF0YS5jb250ZW50KCkpLCBzdWJzdGl0dXRlRGF0YS5taW1lVHlwZSgpLCBzdWJz
dGl0dXRlRGF0YS50ZXh0RW5jb2RpbmcoKSwgc3Vic3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgpLCBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRh
Lm9iamVjdCgpKS5nZXQoKSk7CiAKICAgICAvLyBJbml0YXRlIHRoZSBsb2FkIGluIFdlYkNvcmUu
CiAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0KCptX21haW5GcmFtZS0+Y29y
ZUZyYW1lKCksIHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKQEAgLTM4NjEsNyArMzg2MSw3IEBA
IHZvaWQgV2ViUGFnZTo6Z2V0U291cmNlRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoCiAKIHZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNl
RGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+
JiYgY2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBm
cmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CiAgICAg
ICAgIGlmIChQbHVnaW5WaWV3KiBwbHVnaW5WaWV3ID0gcGx1Z2luVmlld0ZvckZyYW1lKGZyYW1l
LT5jb3JlRnJhbWUoKSkpCiAgICAgICAgICAgICBidWZmZXIgPSBwbHVnaW5WaWV3LT5saXZlUmVz
b3VyY2VEYXRhKCk7CkBAIC0zODc3LDcgKzM4NzcsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldE1haW5S
ZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFu
ZAogICAgIGNhbGxiYWNrKGRhdGFSZWZlcmVuY2UpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJl
c291cmNlVVJMKQorc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJj
ZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCiB7CiAg
ICAgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpOwogICAgIGlmICghbG9hZGVyKQpAQCAtMzg5Miw3ICszODkyLDcgQEAgc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3Qg
VVJMJiByZXNvdXIKIAogdm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAg
ICAgaWYgKGF1dG8qIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJh
bWVJRCkpIHsKICAgICAgICAgVVJMIHJlc291cmNlVVJMKFVSTCgpLCByZXNvdXJjZVVSTFN0cmlu
Zyk7CiAgICAgICAgIGJ1ZmZlciA9IHJlc291cmNlRGF0YUZvckZyYW1lKGZyYW1lLT5jb3JlRnJh
bWUoKSwgcmVzb3VyY2VVUkwpOwpAQCAtNjk3Nyw3ICs2OTc3LDcgQEAgdm9pZCBXZWJQYWdlOjpk
aWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQgbG9hZElk
ZW50aWZpZXIKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQogICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoeyB9KTsKIAotICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNp
b25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllci50b0ludGVnZXIoKSwgW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXIqIGljb25EYXRhKSBtdXRhYmxlIHsKKyAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9h
ZERlY2lzaW9uRm9ySWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIudG9JbnRlZ2VyKCksIFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoV2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpIG11dGFibGUgewogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih7IGljb25EYXRhIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDM1YzIzZmU2MDJlYjRmOTA0MWFiYjBh
OTg3ZTdkMmYwY2EwZjhiM2UuLmY2ZGRkNzhlYTE5ODhlMWZjYWM5MDc0YmY1NmU3YWIxYmIxY2I1
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTIx
Niw3ICsyMTYsNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkdlb21ldHJ5OwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1
YnN0aXR1dGVEYXRhOwogY2xhc3MgVGV4dENoZWNraW5nUmVxdWVzdDsKIGNsYXNzIFZpc2libGVQ
b3NpdGlvbjsKQEAgLTEzOTYsNyArMTM5Niw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShRVUlDS19M
T09LKQogICAgIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSk7Ci0gICAgdm9pZCBk
aWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsK
ICAgICB2b2lkIHJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUo
Y29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJp
bmcmKT4mJik7CiAjZW5kaWYKIApAQCAtMTU5OSw3ICsxNTk5LDcgQEAgcHJpdmF0ZToKIAogICAg
IFN0cmluZyBzb3VyY2VGb3JGcmFtZShXZWJGcmFtZSopOwogCi0gICAgdm9pZCBsb2FkRGF0YUlt
cGwodWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYs
IHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBXZWJDb3JlOjpTdWJz
dGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5LCBXZWJDb3JlOjpTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eTo6U2hvdWxkTm90QWxsb3cpOworICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJiwgc3RkOjpv
cHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFdlYkNvcmU6OlN1YnN0aXR1dGVE
YXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91
bGROb3RBbGxvdyk7CiAKICAgICAvLyBBY3Rpb25zCiAgICAgdm9pZCB0cnlDbG9zZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggYzk1YzM4NDYzOTIyMTg0ZjI1N2E3
MTlkYjViYTlhNDgyOWFlZGYxYi4uODVlNjUxODY5MmVkNjBjNzg4ZTcyYTdjZTMyZjNmMGUxNWNh
Nzc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KQEAgLTMyMTcsNyArMzIxNyw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFj
dGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pCiAgICAgICAgIENhY2hlZEltYWdlKiBjYWNo
ZWRJbWFnZSA9IGRvd25jYXN0PFJlbmRlckltYWdlPigqZWxlbWVudC5yZW5kZXJlcigpKS5jYWNo
ZWRJbWFnZSgpOwogICAgICAgICBpZiAoIWNhY2hlZEltYWdlKQogICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVz
b3VyY2VCdWZmZXIoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpOwogICAgICAgICBpZiAoIWJ1ZmZl
cikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIg
PSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1ZmZlcik7CkBAIC00NjgzLDcgKzQ2ODMsNyBA
QCB2b2lkIFdlYlBhZ2U6OmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShmaWxlTmFtZSwg
dXRpKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFdlYlBhZ2U6
OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoIWJ1ZmZlci5pc0VtcHR5
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tCmluZGV4IGQ0MTI4MmZjNWRjNjNjMzE3ZTU0YjgyNjBjNTdlMzQ0Y2EzNmUzMDku
LmYzZWRjMjkxZmQ4YWFmZTNkYTgzMGYwZDA0OGQ4YWU1ZTgzNmIzYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC01NjYs
NyArNTY2LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChj
b25zdCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIENvbXBsZXQKICAgICBpZiAoZnJhbWUuc2VsZWN0
aW9uKCkuaXNOb25lKCkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUuZWRpdG9yKCkuZGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpOworICAgIGF1dG8gYnVmZmVyID0g
ZnJhbWUuZWRpdG9yKCkuZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUp
OwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9
KTsKICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZl
cigqYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2Vi
UHJvY2Vzc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NX
aW4uY3BwCmluZGV4IGQzZDM4Y2FjNDEyMTFkN2UyOWI1N2YyNDUyMzY0ZTM3YjQyM2MzMWEuLjM3
ZjI3ZTk1MmQwNzE3MTEyMWNiNGY1NDg3YThiODRiOWY4YTYzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcApAQCAtMjgsNyArMjgsNyBAQAog
CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAotUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQorUmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZm
ZXIoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKaW5kZXggMWY1NTg0ZmEzODdk
NzZjY2U5NGZmN2I1Njk2OGU3ZTgyMjA2MDYwNi4uYTI1NTYwYTEwYzI4ODJlMWFiZDE3ODQ1Njk0
ODZlYTEzZWQ4OTZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3Vw
cG9ydC9QaW5nSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9y
dC9QaW5nSGFuZGxlLmgKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKICAgICAgICAgcGluZ0xvYWRDb21wbGV0ZSh7IH0sIHJlc3BvbnNlKTsK
ICAgICB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
KiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50KSBmaW5hbCB7IHBpbmdMb2FkQ29t
cGxldGUoKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZSosIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQpIGZpbmFs
IHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmlu
YWwgeyBwaW5nTG9hZENvbXBsZXRlKGVycm9yKTsgfQogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBmaW5hbCB7IHJldHVybiBtX3No
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbQppbmRleCBlYjM5NDFmMjY2ZGYxM2MyOGE5MDZl
ZTdkMTYxYWUyMWUxNzU0MDkxLi42MzU1YjZmOTAzMTgwMDU1Y2I2MDdhODBiZTc3MDEzODRkODhk
ZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRl
bnNpb25zLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVu
c2lvbnMubW0KQEAgLTM4OCw3ICszODgsNyBAQCAtIChOU0RhdGEgKilkYXRhUmVwcmVzZW50YXRp
b246KEJPT0wpcmF3SW1hZ2VEYXRhCiAgICAgYXV0byogZGF0YSA9IHJhd0ltYWdlRGF0YSA/IGNh
Y2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpIDogaW1hZ2UtPmRhdGEoKTsKICAgICBpZiAoIWRh
dGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGRhdGEtPmNyZWF0ZU5TRGF0YSgp
LmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopbWltZVR5cGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGEyNTk4ZjMyZmI3NjBhN2Q4ODNjOWY0Y2VlYzE4
Y2Y1OTFlYjhlYWQuLjk1OWQ3NDhiNTZiZTEwNzZiZDk3Nzk5MjJjZDM1NmQyMWE2ODE3NGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjQ4LDcgKzI0OCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzZW5kSDJQaW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhw
ZWN0ZWQ8U2Vjb25kcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYpIGZpbmFsOwogCiAg
ICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdl
YkNvcmU6OkxpbmtJY29uJiwgdWludDY0X3Q+PiYpIGZpbmFsOwotICAgIHZvaWQgZmluaXNoZWRM
b2FkaW5nSWNvbihXZWJDb3JlOjpTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGZpbmlzaGVkTG9h
ZGluZ0ljb24oV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogCiAjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBtX2xvYWRpbmdJY29uIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggYjg0OWQyYWFjMmE5M2ZiZWU0MTcyOWYyNGE4NmNk
Y2Y2YjFmZTAxOS4uYWEyY2M5ODE0NzRhMTNjZTUwODQ3OTg5NDIzNjg0NDkxYzg4ZjZlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTIwMTIsNyArMjAxMiw3IEBAIFJlZlB0cjxX
ZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y3JlYXRlUHJldmlld0xvCiAgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9maWxlUGF0aDsK
ICAgICAgICAgUmV0YWluUHRyPE5TRmlsZUhhbmRsZT4gbV9maWxlSGFuZGxlOwogCi0gICAgICAg
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikgb3ZlcnJpZGUKICAgICAgICAgewogICAg
ICAgICAgICAgYXV0byBkYXRhQXJyYXkgPSBidWZmZXIuY3JlYXRlTlNEYXRhQXJyYXkoKTsKICAg
ICAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGRhdGFBcnJheS5nZXQoKSkKQEAgLTIwOTQs
NyArMjA5NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmdldExvYWREZWNpc2lvbkZv
ckljb25zKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yCiAgICAgICAgIH0KIAogICAgICAg
ICBtX2xvYWRpbmdJY29uID0gdHJ1ZTsKLSAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExv
YWREZWNpc2lvbkZvckljb24odHJ1ZSwgaWNvbi0+c2Vjb25kLCBbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfV0gKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYnVmZmVyKSB7CisgICAg
ICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUsIGljb24t
PnNlY29uZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgZmluaXNoZWRMb2FkaW5n
SWNvbihidWZmZXIpOwpAQCAtMjEzMSw3ICsyMTMxLDcgQEAgc3RhdGljIE5TSW1hZ2UgKndlYkdl
dE5TSW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1NpemUgc2l6ZSkKIH0KICNlbmRpZiAv
LyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Zmlu
aXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGljb25EYXRhKQordm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0YSkKIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBBU1NFUlQobV9sb2FkaW5nSWNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmlu
ZGV4IDI0YjY5OTcwNmRmMGQ2YjcxOTJhYTUyMDJkZTYxZDhiMWU1NzMyZjkuLjUyN2ZhNTUyMTkw
YmEwMDE0NTE3ZmZkZTczNzcyMGIyZTdhOTBhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBpbnQ2NF90IGFkZFR5cGVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3Jl
OjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldENvbG9yKGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBmYzA3NzZlNjJkNjZiZTlhYzkz
ZDQ4N2RkZmQzMDBhNmQ0MDdjNTUzLi4zOTg2ODU5ZjczMzhlMjg0NTdlZDRiMTkwY2JhNjcwNTIy
MTAwMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0xNTQsNyArMTU0LDcg
QEAgaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGMKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS5zZXRUeXBlcyhwYXN0ZWJvYXJkVHlwZXMpOwogfQogCi1pbnQ2NF90
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFz
dGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIsIHBhc3RlYm9h
cmRUeXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0
YVNvdXJjZS5tbQppbmRleCAyODljMDAyOWJmOTEzNDE4ZDBiMjk5ZjkwYTRkOTcxMTNiYzU4YTRi
Li44M2U4NTkxNDM0NWVhN2NiODQxZDk5ZmQxZmI2NjZkOGNjZjAzMDI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC00NjAsMTAg
KzQ2MCwxMCBAQCAtICh2b2lkKWRlYWxsb2MKIAogLSAoTlNEYXRhICopZGF0YQogewotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUo
X3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShf
cHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291
cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gbWFpblJlc291cmNlRGF0
YS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gbWFpblJlc291cmNl
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0K
IAogLSAoaWQgPFdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24+KXJlcHJlc2VudGF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRh
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uLm1tCmluZGV4IDgwY2QzMGVmNDY3NjBlMTRjOGU2N2E4OGEyNzMzYzlkNDM3ZmE1ZDku
LjM4ZDdlNTMyZDZlYWEwY2FjMzg4NjJmM2UwZTE2OWZlMjgxMjc3ZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9u
Lm1tCkBAIC0yMzAsNyArMjMwLDcgQEAgLSAoQk9PTCljYW5TYXZlQXNXZWJBcmNoaXZlCiAtIChO
U1N0cmluZyAqKWRvY3VtZW50U291cmNlCiB7CiAgICAgaWYgKFtzZWxmIF9pc0Rpc3BsYXlpbmdX
ZWJBcmNoaXZlXSkgeyAgICAgICAgICAgIAotICAgICAgICBTaGFyZWRCdWZmZXIgKnBhcnNlZEFy
Y2hpdmVEYXRhID0gW19wcml2YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNl
ZEFyY2hpdmVEYXRhKCk7CisgICAgICAgIGF1dG8gKnBhcnNlZEFyY2hpdmVEYXRhID0gW19wcml2
YXRlLT5kYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0tPnBhcnNlZEFyY2hpdmVEYXRhKCk7CiAg
ICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpwYXJz
ZWRBcmNoaXZlRGF0YSA/IHBhcnNlZEFyY2hpdmVEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6
IG5pbCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pLmF1dG9yZWxlYXNlKCk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpp
bmRleCA4MzhlNDEzMzgxYTgwNzVhM2Q2MjQ1OTQ1NTI2N2E1YmJiNTVhOTkxLi4yOGQ4NzU5Mjlj
Y2FjZGI5YTEzODhhODI2YjJmZDVlY2Y0NmVjY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM1NDAsOCArMzU0MCw4IEBAIHN0YXRp
YyBSZXRhaW5QdHI8TlNNZW51SXRlbT4gY3JlYXRlU2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3Jl
OjpIaXRUZXN0UmVzdWx0JiBoCiAgICAgfQogCiAgICAgaWYgKGF1dG8qIGltYWdlID0gaGl0VGVz
dFJlc3VsdC5pbWFnZSgpKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQotICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVj
dDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhC
eXRlczpidWZmZXItPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOworICAg
ICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IGltYWdlLT5kYXRhKCkpCisgICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tO
U0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07
CiAgICAgfQogCiAgICAgaWYgKCFoaXRUZXN0UmVzdWx0LnNlbGVjdGVkVGV4dCgpLmlzRW1wdHko
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNv
dXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0K
aW5kZXggMTIxOThmNDAxZWE4YWQ1NzhkZDdiZGVhY2MwNGRmYjdlMzRhYzczNC4uYWFkY2ZiZmVh
MzU2YjM3YjBmNTM3OGFmYTg5OGI4ZWE5OWFlNmE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCkBAIC0xNjMsMjEgKzE2MywyMSBAQCAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWRlY29kZXIKIC0gKHZvaWQpZW5j
b2RlV2l0aENvZGVyOihOU0NvZGVyICopZW5jb2RlcgogewogICAgIGF1dG8qIHJlc291cmNlID0g
X3ByaXZhdGUtPmNvcmVSZXNvdXJjZS5nZXQoKTsKLSAgICAKLSAgICBOU0RhdGEgKmRhdGEgPSBu
aWw7CisKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogICAgIE5TVVJMICp1cmwgPSBuaWw7
CiAgICAgTlNTdHJpbmcgKm1pbWVUeXBlID0gbmlsLCAqdGV4dEVuY29kaW5nID0gbmlsLCAqZnJh
bWVOYW1lID0gbmlsOwogICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gbmlsOwotICAgIAor
CiAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgIGRhdGEgPSByZXNvdXJjZS0+ZGF0YSgpLmNy
ZWF0ZU5TRGF0YSgpLmdldCgpOworICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgdXJsID0gcmVzb3VyY2UtPnVy
bCgpOwogICAgICAgICBtaW1lVHlwZSA9IHJlc291cmNlLT5taW1lVHlwZSgpOwogICAgICAgICB0
ZXh0RW5jb2RpbmcgPSByZXNvdXJjZS0+dGV4dEVuY29kaW5nKCk7CiAgICAgICAgIGZyYW1lTmFt
ZSA9IHJlc291cmNlLT5mcmFtZU5hbWUoKTsKICAgICAgICAgcmVzcG9uc2UgPSByZXNvdXJjZS0+
cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgfQotICAgIFtlbmNvZGVyIGVuY29kZU9i
amVjdDpkYXRhIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOworICAgIFtlbmNvZGVyIGVuY29k
ZU9iamVjdDpkYXRhLmdldCgpIGZvcktleTpXZWJSZXNvdXJjZURhdGFLZXldOwogICAgIFtlbmNv
ZGVyIGVuY29kZU9iamVjdDp1cmwgZm9yS2V5OldlYlJlc291cmNlVVJMS2V5XTsKICAgICBbZW5j
b2RlciBlbmNvZGVPYmplY3Q6bWltZVR5cGUgZm9yS2V5OldlYlJlc291cmNlTUlNRVR5cGVLZXld
OwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDp0ZXh0RW5jb2RpbmcgZm9yS2V5OldlYlJlc291
cmNlVGV4dEVuY29kaW5nTmFtZUtleV07CkBAIC0yMDIsNyArMjAyLDcgQEAgLSAoTlNEYXRhICop
ZGF0YQogCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZVJlc291cmNlKQogICAgICAgICByZXR1cm4g
bmlsOwotICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNE
YXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9
CiAKIC0gKE5TVVJMICopVVJMCkBAIC0zNjcsOCArMzY3LDggQEAgLSAoTlNTdHJpbmcgKilfc3Ry
aW5nVmFsdWUKICAgICBpZiAoIWVuY29kaW5nLmlzVmFsaWQoKSkKICAgICAgICAgZW5jb2Rpbmcg
PSBXaW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsKICAgICAKLSAgICBTaGFyZWRCdWZmZXIqIGNvcmVE
YXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5k
YXRhKCkgOiBudWxscHRyOwotICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciks
IGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOworICAgIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29y
ZVJlc291cmNlLT5kYXRhKCkgOiBudWxscHRyOworICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUo
KSA6IDApOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2Uu
Y3BwCmluZGV4IGI0MDczZTEwOGJkNWM3NzBkZDYyYTEwNWFmYjBjY2E5YzRlZjAzOGUuLjA4OTdj
N2MwNTQ4ZDIwYjFlZjQ1ZTM1ZTFiZjhkOGU0MGVhNWQzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgSFJFU1VMVCBXZWJE
YXRhU291cmNlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBp
ZiAoIW1fbG9hZGVyKQogICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0gICAgcmV0dXJu
IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEo
KSkuY29weVJlZlRvKHN0cmVhbSk7CisgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5z
dGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKSkuY29w
eVJlZlRvKHN0cmVhbSk7CiB9CiAKIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6cmVwcmVzZW50YXRp
b24oX0NPTV9PdXRwdHJfb3B0XyBJV2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbioqIHJlcCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAppbmRleCA5MGE1YTBhMTMzNmVlZWJjOGFmNWNk
ZWMxYjVjNjIwZTY4MjMxOWI1Li41NThlMTNjN2YxZmRhYTViMTI1ZDIwYmVmZTc5MWEyN2ZmNzU3
MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC01NTksNyArNTU5LDcg
QEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZFJlcXVlc3QoX0luX29wdF8gSVdlYlVSTFJlcXVlc3Qq
IHJlcXVlc3QpCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLXZvaWQgV2ViRnJhbWU6OmxvYWREYXRh
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0
ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKK3ZvaWQgV2Vi
RnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRh
dGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBC
U1RSIGZhaWxpbmdVUkwpCiB7CiAgICAgU3RyaW5nIG1pbWVUeXBlU3RyaW5nKG1pbWVUeXBlLCBT
eXNTdHJpbmdMZW4obWltZVR5cGUpKTsKICAgICBpZiAoIW1pbWVUeXBlKQpAQCAtNTg1LDIxICs1
ODUsMjEgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHQKIAogSFJFU1VMVCBXZWJGcmFtZTo6bG9h
ZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJT
VFIgdGV4dEVuY29kaW5nTmFtZSwgX0luXyBCU1RSIHVybCkKIHsKLSAgICBhdXRvIHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBz
aGFyZWRCdWZmZXI7CiAKICAgICBTVEFUU1RHIHN0YXQ7CiAgICAgaWYgKFNVQ0NFRURFRChkYXRh
LT5TdGF0KCZzdGF0LCBTVEFURkxBR19OT05BTUUpKSkgewogICAgICAgICBpZiAoIXN0YXQuY2JT
aXplLkhpZ2hQYXJ0ICYmIHN0YXQuY2JTaXplLkxvd1BhcnQpIHsKICAgICAgICAgICAgIFZlY3Rv
cjxjaGFyPiBkYXRhQnVmZmVyKHN0YXQuY2JTaXplLkxvd1BhcnQpOwogICAgICAgICAgICAgVUxP
TkcgcmVhZDsKLSAgICAgICAgICAgIC8vIEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5
LCB3b3VsZCBiZSBiZXR0ZXIgdG8gcmVhZCByaWdodCBpbnRvIHRoZSBTaGFyZWRCdWZmZXIKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3VsZCBiZSBi
ZXR0ZXIgdG8gcmVhZCByaWdodCBpbnRvIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyCiAgICAg
ICAgICAgICAvLyBvciBhZG9wdCB0aGUgVmVjdG9yIG9yIHNvbWV0aGluZy4KICAgICAgICAgICAg
IGlmIChTVUNDRUVERUQoZGF0YS0+UmVhZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8
VUxPTkc+KGRhdGFCdWZmZXIuc2l6ZSgpKSwgJnJlYWQpKSkKLSAgICAgICAgICAgICAgICBzaGFy
ZWRCdWZmZXItPmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRh
QnVmZmVyLnNpemUoKSkpOworICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci5hcHBlbmQoZGF0
YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsKICAg
ICAgICAgfQogICAgIH0KIAotICAgIGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgbWlt
ZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CisgICAgbG9hZERhdGEoc2hh
cmVkQnVmZmVyLnRha2UoKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0
cik7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCmlu
ZGV4IDQzNjA1NGZkOWRkYjQ3Y2EzMjk2YjExNzk4MTQzNGVjMTg5N2RhZDEuLmZhOWMzODFjYzU3
M2JhNmIyMDk4OGVhYjM1MDhlZDlhMzBhOGYxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWUuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CiBjbGFz
cyBJbnRSZWN0OwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVKU0NvbnRleHQqIEpTQ29udGV4dFJlZjsKQEAgLTE5NSw3ICsxOTUs
NyBAQCBwcml2YXRlOgogICAgIH5XZWJGcmFtZSgpOwogCiAgICAgdm9pZCBsb2FkSFRNTFN0cmlu
ZyhfSW5fIEJTVFIgc3RyaW5nLCBfSW5fIEJTVFIgYmFzZVVSTCwgX0luXyBCU1RSIHVucmVhY2hh
YmxlVVJMKTsKLSAgICB2b2lkIGxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RS
IGZhaWxpbmdVUkwpOworICAgIHZvaWQgbG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNU
UiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpOwogICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJ
bnRSZWN0PiYgY29tcHV0ZVBhZ2VSZWN0cyhIREMgcHJpbnREQyk7CiAgICAgdm9pZCBzZXRQcmlu
dGluZyhib29sIHByaW50aW5nLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHBhZ2VTaXplLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG9yaWdpbmFsUGFnZVNpemUsIGZsb2F0IG1heGltdW1T
aHJpbmtSYXRpbywgV2ViQ29yZTo6QWRqdXN0Vmlld1NpemVPck5vdCk7CiAgICAgdm9pZCBoZWFk
ZXJBbmRGb290ZXJIZWlnaHRzKGZsb2F0KiwgZmxvYXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJLaXRETEwuY3BwCmluZGV4IDk2MjAxOThiNGI1NDBhZTZmNzk2N2Y4MjMzYzk0NjRiZDI3NzU4
NTEuLjI3NGI3ZDJkNmNmMmViNDcxZDdiOGI4OTY1OWFlNDY5Y2Y5MzRjOTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcApAQCAtMTY1LDggKzE2NSw4IEBAIHZvaWQgc2h1dERv
d25XZWJLaXQoKQogfQogCiAvL0ZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgbW92aW5nIHRoaXMg
dG8gYSBuZXcgZmlsZSBmb3IgY3Jvc3MtcHJvamVjdCBmdW5jdGlvbmFsaXR5Ci1XRUJLSVRfQVBJ
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29u
c3QgY2hhciogbmFtZSk7Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3Vy
Y2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCitXRUJLSVRfQVBJIFJlZlB0cjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNo
YXIqIG5hbWUpOworUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRS
ZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBpbnQgaWRyOwogICAg
IC8vIHRlbXBvcmFyeSBoYWNrIHRvIGdldCByZXNvdXJjZSBpZApkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc5NDhhZjE5ODdiZmU1YTdjMmY3NDFi
YmE2MGMzOWVhMDI1Y2RlODEuLjFjZTdkMGE0MzczYzczMmYzZTRhZGFkZmI1ZjdjNzRhZTZiMGYw
ZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1MiBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFy
Oi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyIGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0
byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHA6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0Lmg6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5j
cHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1
ZmZlci5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNw
cDoKKworMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisg
ICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1Njkz
OTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIEFQSSB0ZXN0cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3Vv
dXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1t
dXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEtMTItMDUgIFNhaWQgQWJvdS1I
YWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBBZGQgdGhl
IGVuY29kaW5nL2RlY29kaW5nIGZvciBGaWx0ZXIgYW5kIEZpbHRlckVmZmVjdApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAppbmRleCA4NTgzYjI5YWQ5OTBj
MjJiNDcyYzg2OWVjY2Q4NjgyOTYyMWJiMGI0Li5iODQ3ZDNhODI2YjNkOWZmYzA4ZjZmM2JlMzgy
NjBhNmM1OWRmZjJhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9G
aWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lz
dGVtLmNwcApAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVUZXN0RmlsZShjb25z
dCBTdHJpbmcmIHBhdGgpCiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwog
fTsKIAotLy8gRklYTUU6IFJlZmFjdG9yIEZpbGVTeXN0ZW1UZXN0IGFuZCBTaGFyZWRCdWZmZXJU
ZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgorLy8gRklYTUU6IFJlZmFjdG9yIEZpbGVTeXN0ZW1UZXN0
IGFuZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCBhcyBhIHNpbmdsZSBjbGFzcy4KIGNsYXNz
IEZpbGVTeXN0ZW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIHZv
aWQgU2V0VXAoKSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCmluZGV4IGQyM2Y3ZTFlNzI5ZTA1NTQ1M2Fj
MWYwNTNhMjM0NTMwMjk1Y2IyMDUuLmVhMmFlMmM3ZThiMzA4NTIwNWIzZDNjOTc0MzBlZmFlY2Vi
YjliNGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNw
bGF5TGlzdFRlc3RzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
RGlzcGxheUxpc3RUZXN0cy5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCBURVNUKERpc3BsYXlMaXN0
VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQpCiAgICAgICAgICAgICByZXR1cm4geyBnbG9iYWxCdWZm
ZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVtQnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkg
fTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1P
dXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJiBkaXNwbGF5TGlzdEl0ZW0pIGNvbnN0IGZp
bmFsCisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0
T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgZGlzcGxheUxpc3RJdGVtKSBjb25zdCBmaW5h
bAogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIGluZGV4ID0gbV9pdGVtcy5zaXplKCk7CiAg
ICAgICAgICAgICBtX2l0ZW1zLmFwcGVuZChzdGQ6OmdldDxTdHJva2VQYXRoPihkaXNwbGF5TGlz
dEl0ZW0pKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5jcHAKaW5kZXggZGRiZmMxZjJiMTgyMWNiMWRmYWJjOGUyZjYzMjdiMjEyYzdjYTQ2
OC4uMTdjZTg3OTQxYmE4NDIzM2FmODlmZGI0NGFlYzI2ZmYxOGM3ZDdmMiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTQxLDgwICs0MSw3NSBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1URVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKK1RFU1RfRihGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKIHsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOworICAgIGF1dG8g
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJu
b3RfZXhpc3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRfTlVMTChidWZmZXIpOwogfQogCi1URVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitU
RVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhp
c3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBFWFBFQ1RfVFJVRShi
dWZmZXItPnNpemUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwot
ICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBT
dHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUo
YnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0
RGF0YSgpKSk7CisgICAgRVhQRUNUX1RSVUUoU3RyaW5nKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJU
ZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVh
dGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQogewot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgo
KSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CisgICAgRVhQRUNUX1RSVUUoYnVmZmVy
LT5pc0NvbnRpZ3VvdXMoKSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5KCkpOwog
fQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVu
dHNPZkV4aXN0aW5nRmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY29w
eUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9O
VUxMKGJ1ZmZlcik7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29weSA9IGJ1ZmZlci0+Y29w
eSgpOworICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNDb250aWd1b3VzKCkpOworICAgIGF1dG8g
Y29weSA9IGJ1ZmZlci0+Y29weSgpOwogICAgIEVYUEVDVF9HVChidWZmZXItPnNpemUoKSwgMFUp
OwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IGNvcHktPnNpemUoKSk7Ci0gICAg
RVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHkt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAotVEVTVF9G
KFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3Rp
bmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJD
cmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVt
cEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7
CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOwotICAg
IEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+
ZGF0YSgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5h
cHBlbmQoKmJ1ZmZlcik7CisgICAgYnVpbGRlci5hcHBlbmQoImEiLCAxKTsKKyAgICBFWFBFQ1Rf
VFJVRShidWlsZGVyLnNpemUoKSA9PSAoc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKSArIDEpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1aWxkZXIuZ2V0
KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6
OnRlc3REYXRhKCksIHN0cmxlbihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEo
KSkpKTsKKyAgICBFWFBFQ1RfRVEoJ2EnLCBidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKClbc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0p
OwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdpdGhD
b250ZW50c09mRXhpc3RpbmdGaWxlKQotewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgp
KTsKLSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmFwcGVuZCgiYSIs
IDEpOwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZm
ZXItPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1
ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVyLT5kYXRh
KClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7Ci19Ci0KLVRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKK1RFU1RfRihGcmFnbWVudGVk
U2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCiB7CiAgICAgY2hhciB0ZXN0
RGF0YTBbXSA9ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0RGF0YTFbXSA9ICJXb3JsZCI7CiAgICAg
Y2hhciB0ZXN0RGF0YTJbXSA9ICJHb29kYnllIjsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0
RGF0YTApKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0
RGF0YTEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxlbih0ZXN0
RGF0YTIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hhcmVkQnVm
ZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcih0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0
ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0ZXN0RGF0
YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVm
ZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBjaGFyIGV4
cGVjdGVkQ29uY2F0ZW5hdGlvbltdID0gIkhlbGxvV29ybGRHb29kYnllIjsKICAgICBBU1NFUlRf
RVEoc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3Ro
KCkpOwogICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRDb25jYXRlbmF0aW9uLCBhcnJh
eUJ1ZmZlci0+ZGF0YSgpLCBzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSkpOwogfQogCi1U
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRz
KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZl
ckxhcmdlU2VnbWVudHMpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjAoMHg0MDAwLCAn
YScpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKICAgICBWZWN0
b3I8dWludDhfdD4gdmVjdG9yMigweDQwMDAsICdjJyk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcjAp
KTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKLSAgICBzaGFy
ZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKHZlY3RvcjApKTsKKyAgICBi
dWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZN
b3ZlKHZlY3RvcjIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYnVp
bGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBBU1NFUlRfRVEoMHg0MDAw
VSArIDB4NDAwMFUgKyAweDQwMDBVLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBp
bnQgcG9zaXRpb24gPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMHg0MDAwOyArK2kpIHsK
QEAgLTEzMSw3ICsxMjYsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJy
YXlCdWZmZXJMYXJnZVNlZ21lbnRzKQogICAgIH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNvcHkpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiB7CiAg
ICAgY2hhciB0ZXN0RGF0YVtdID0gIkhhYml0YXNzZSBpbnRlZ2VyIGVyb3MgdGluY2lkdW50IGEg
c2NlbGVyaXNxdWUhIEVuaW0gZWxpdD8gU2NlbGVyaXNxdWUgbWFnbmlzLCIKICAgICAiZXQgbW9u
dGVzIHVsdHJpY2VzIHRyaXN0aXF1ZSBhISBQaWQuIFZlbGl0IHR1cnBpcywgZGFwaWJ1cyBpbnRl
Z2VyIHJob25jdXMgc29jaWlzIGFtZXQgZmFjaWxpc2lzLCIKQEAgLTE1MSwxNyArMTQ2LDUzIEBA
IFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogICAgICJtYXR0aXMgZGlnbmlzc2ltIG1h
c3NhIGFjIHB1bHZpbmFyIHVybmEsIG51bmMgdXQuIFNhZ2l0dGlzLCBhbGlxdWV0IHBlbmF0aWJ1
cyBwcm9pbiBsb3JlbSwgcHVsdmluYXIgbGVjdHVzLCIKICAgICAiYXVndWUgcHJvaW4hIEFjLCBh
cmN1IHF1aXMuIFBsYWNlcmF0IGhhYml0YXNzZSwgcmlkaWN1bHVzIHJpZGljdWx1cy4iOwogICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbih0ZXN0RGF0YSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEsIGxlbmd0
aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hh
cmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5h
cHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVy
MSh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0
aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1aWxkZXIx
LmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICAvLyBzaGFyZWRCdWZmZXIgbXVzdCBjb250
YWluIGRhdGEgbW9yZSB0aGFuIHNlZ21lbnRTaXplICg9IDB4MTAwMCkgdG8gY2hlY2sgY29weSgp
LgotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsKLSAgICBB
U1NFUlRfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDAsIG1l
bWNtcChjbG9uZS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkp
OwotICAgIGNsb25lLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgQVNTRVJUX0VRKGxl
bmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBidWls
ZGVyMS5zaXplKCkpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjbG9uZSA9
IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUo
KSk7CisgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWlsZGVyMS5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6
ZSgpKSk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIGJ1aWxkZXIy
LmFwcGVuZCgqY2xvbmUpOworICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsK
KyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAgICBhdXRvIGJ1
ZmZlciA9IGJ1aWxkZXIyLnRha2UoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNSwgYnVmZmVy
LT5zaXplKCkpOworICAgIC8vIGJ1aWxkZXIgaXMgbm93IGVtcHR5LgorICAgIEVYUEVDVF9FUSgw
VSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7
CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKK30KKworVEVTVF9GKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBidWlsZGVyKQoreworICAgIGNoYXIgdGVzdERhdGEwW10g
PSAiSGVsbG8iOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVzdERhdGEwLCBz
dHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlzTnVsbCgpKTsK
KyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBhdXRvIGNvcHkgPSBi
dWlsZGVyMS5jb3B5KCk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMS50YWtlKCk7CisgICAg
RVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIx
LmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX05FKGNvcHkucHRyKCksIGJ1ZmZlci5wdHIoKSk7IC8v
IFdlIGhhdmUgZGlmZmVyZW50IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIKKyAgICBFWFBFQ1RfRVEo
Y29weS5nZXQoKSwgYnVmZmVyLmdldCgpKTsgLy8gQnV0IHRoZWlyIGNvbnRlbnQgaXMgaWRlbnRp
Y2FsCisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIEVYUEVDVF9UUlVF
KGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkp
OworICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxTRShidWls
ZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLnJlc2V0KCk7CisgICAgRVhQRUNUX1RSVUUo
YnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7
CisgICAgYnVpbGRlcjIuZW1wdHkoKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxs
KCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CiB9CiAKIHN0YXRpYyB2
b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0
aCwgY29uc3QgY2hhciogZXhwZWN0ZWQpCkBAIC0xNzMsNzAgKzIwNCw4MCBAQCBzdGF0aWMgdm9p
ZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgs
IGNvbnN0IGNoYXIqCiAgICAgICAgIEVYUEVDVF9FUShidWZmZXJbaV0sIGV4cGVjdGVkW2ldKTsK
IH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQorVEVTVF9GKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhf
dD4gczEgPSB7J2EnLCAnYicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7
J2UnLCAnZicsICdnJywgJ2gnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2knLCAnaics
ICdrJywgJ2wnfTsKLSAgICAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwotICAgIGJ1ZmZlci0+YXBwZW5k
KFdURk1vdmUoczIpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IHMxID0geyAnYScsICdiJywgJ2MnLCAnZCcgfTsKKyAgICBWZWN0b3I8dWlu
dDhfdD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBz
MyA9IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMSkpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKFdURk1vdmUoczIpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMzKSk7CisgICAg
YXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICAKICAgICBhdXRvIGFiY2QgPSBidWZm
ZXItPmdldFNvbWVEYXRhKDApOwotICAgIGF1dG8gZ2ggPSBidWZmZXItPmdldFNvbWVEYXRhKDYp
OworICAgIGF1dG8gZ2gxID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGggPSBi
dWZmZXItPmdldFNvbWVEYXRhKDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURh
dGEoOCk7CiAgICAgYXV0byBrbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTApOwotICAgIGF1dG8g
YWJjZGVmZ2hpamtsID0gYnVmZmVyLT5kYXRhKCk7Ci0gICAgYXV0byBnaGlqa2wgPSBidWZmZXIt
PmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXIt
PmRhdGEoKTsKKyAgICBhdXRvIGdoMiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0
byBnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRvIGwg
PSBidWZmZXItPmdldFNvbWVEYXRhKDExKTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRhdGEoKSwg
YWJjZC5zaXplKCksICJhYmNkIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2guZGF0YSgpLCBnaC5zaXpl
KCksICJnaCIpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksICJnaCIp
OwogICAgIGNoZWNrQnVmZmVyKGguZGF0YSgpLCBoLnNpemUoKSwgImgiKTsKICAgICBjaGVja0J1
ZmZlcihpamtsLmRhdGEoKSwgaWprbC5zaXplKCksICJpamtsIik7CiAgICAgY2hlY2tCdWZmZXIo
a2wuZGF0YSgpLCBrbC5zaXplKCksICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2RlZmdoaWpr
bCwgYnVmZmVyLT5zaXplKCksICJhYmNkZWZnaGlqa2wiKTsKKyAgICBjaGVja0J1ZmZlcihnaDIu
ZGF0YSgpLCBnaDIuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZlcihnaGlqa2wuZGF0YSgp
LCBnaGlqa2wuc2l6ZSgpLCAiZ2hpamtsIik7CisgICAgRVhQRUNUX0VRKGdoMS5zaXplKCksIGdo
Mi5zaXplKCkpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCksIGdoMi5k
YXRhQXNDaGFyUHRyKCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwi
KTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKK1RFU1RfRihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogewogICAgIGF1dG8gbWFrZUJ1ZmZl
ciA9IFtdIChWZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+PiYmIGNvbnRlbnRzKSB7Ci0gICAgICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWlsZGVyOwogICAgICAgICBmb3IgKGF1dG8mIGNvbnRlbnQgOiBjb250ZW50cykK
LSAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkpOwotICAgICAgICBy
ZXR1cm4gYnVmZmVyOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShjb250ZW50
KSk7CisgICAgICAgIHJldHVybiBidWlsZGVyLnRha2UoKTsKICAgICB9OwotICAgIGF1dG8gYnVm
ZmVyMSA9IG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCd9fSk7CisgICAgYXV0byBidWZm
ZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNU
X0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCi0gICAgYnVmZmVyMS0+YXBwZW5k
KFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwotICAgIEVYUEVDVF9FUShi
dWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywg
J2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7J2EnfSwgeydi
JywgJ2MnfSwgeydkJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InfSwgeydjJywgJ2Qn
fX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0pLmdldCgp
LCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNUX05FKG1h
a2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydiJywgJ2MnfX0pLmdl
dCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJ30sIHsnYid9fSkuZ2V0KCksIG1h
a2VCdWZmZXIoe3snYSd9LCB7J2EnfX0pLmdldCgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXIoV1RGTW92ZShidWZmZXIxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoVmVjdG9yPHVp
bnQ4X3Q+KHsgJ2EnLCAnYicsICdjJywgJ2QnIH0pKTsKKyAgICBFWFBFQ1RfRVEoKmJ1aWxkZXIu
Z2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYicsICdjJywg
J2QnIH0gfSkuZ2V0KCkpOworCisgICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7
ICdiJywgJ2MnIH0sIHsgJ2QnIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0s
IHsgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdh
JywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9KS5nZXQo
KSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1h
a2VCdWZmZXIoeyB7ICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORShtYWtlQnVm
ZmVyKHsgeyAnYScgfSwgeyAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsg
J2EnIH0gfSkuZ2V0KCkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJp
bmcpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQogewog
ICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9OwotICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3Zl
KHQxKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIuYXBw
ZW5kKFdURk1vdmUodDEpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwogICAg
IFN0cmluZyByZXN1bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7CiAgICAgRVhQRUNUX0VRKHJl
c3VsdCwgIjExMDUxMiIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKKyAgICBidWlsZGVyLnJlc2V0
KCk7CisgICAgYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgRVhQRUNUX0VRKGJ1ZmZlci0+
dG9IZXhTdHJpbmcoKSwgIiIpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkK
K1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKIHsKICAgICBjb25zdCBj
aGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgYSBzaW1wbGUgdGVzdC4iOwogCi0gICAg
YXV0byBjaGVjayA9IFtdKFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBj
aGVjayA9IFtdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAg
ICBWZWN0b3I8dWludDhfdD4gZGF0YSA9IHNoYXJlZEJ1ZmZlci5yZWFkKDQsIDMpOwogICAgICAg
ICBFWFBFQ1RfRVEoZGF0YS5zaXplKCksIDN1KTsKICAgICAgICAgRVhQRUNUX0VRKFN0cmluZyhk
YXRhLmRhdGEoKSwgMyksICIgaXMiKTsKQEAgLTI0OSwxNiArMjkwLDE3IEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCByZWFkKQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFy
ZWRCdWZmZXIpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBl
bmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRh
a2UoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5pc051bGwoKSAmJiAhYnVpbGRlcik7Cisg
ICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCAwdSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVu
KHNpbXBsZVRleHQpOyBpICs9IDIpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1w
bGVUZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxl
bihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUo
KSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAK
ICNpZiBFTkFCTEUoTUhUTUwpCkBAIC0yNjYsNyArMzA4LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIHJlYWQpCiB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgc2l6ZV90IE4gPgogY29uc3RleHBy
IHNpemVfdCBhcnJheXNpemUoIGNvbnN0IFQgKCYpW05dICkgeyByZXR1cm4gTjsgfQogCi1zdGF0
aWMgdm9pZCByZWFkQWxsQ2h1bmtzKHN0ZDo6dmVjdG9yPFN0cmluZz4qIGNodW5rcywgU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yID0gIlxyXG4iLCBib29sIGlu
Y2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSkKK3N0YXRpYyB2b2lkIHJlYWRBbGxDaHVua3Moc3RkOjp2
ZWN0b3I8U3RyaW5nPiogY2h1bmtzLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgc2VwYXJhdG9yID0gIlxyXG4iLCBib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBm
YWxzZSkKIHsKICAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlciBjaHVua1JlYWRlcigmYnVmZmVy
LCBzZXBhcmF0b3IudXRmOCgpLmRhdGEoKSk7CiAgICAgU3RyaW5nIGNodW5rID0gY2h1bmtSZWFk
ZXIubmV4dENodW5rQXNVVEY4U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKGluY2x1ZGVTZXBhcmF0
b3IpOwpAQCAtMjk5LDcgKzM0MSw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrRGF0YUluUmFuZ2UoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBzaXplX3Qgc3RhcnQsIHNpemVfdCBsCiAKIFRFU1Rf
RihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGluY2x1ZGVTZXBhcmF0b3IpCiB7Ci0gICAg
YXV0byBjaGVjayA9IFtdKFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBj
aGVjayA9IFtdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAg
ICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlciBjaHVua1JlYWRlcigmc2hhcmVkQnVmZmVyLCAiXHgx
MFx4MTFceDEyIik7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBvdXQ7CiAgICAgICAgIEVYUEVD
VF9UUlVFKGNodW5rUmVhZGVyLm5leHRDaHVuayhvdXQpKTsKQEAgLTMxMywyMiArMzU1LDI0IEBA
IFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGluY2x1ZGVTZXBhcmF0b3IpCiAg
ICAgdWludDhfdCBkYXRhWzI1Nl07CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyNTY7ICsr
aSkKICAgICAgICAgZGF0YVtpXSA9IGk7Ci0KICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIDI1Nik7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKLSAg
ICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworCisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyKGRhdGEsIDI1Nik7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkp
OworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyNTY7ICsraSkgewogICAgICAgICBjaGFy
IGMgPSBpOwotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmYywgMSk7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCZjLCAxKTsKICAgICB9Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAg
ICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlclRlc3QsIHBlZWtEYXRhKQogewogICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQg
PSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LiI7CiAKLSAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVk
QnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyIGNodW5rUmVhZGVyKCZzaGFyZWRCdWZmZXIsICJpcyIpOwogCiAgICAgICAgIFN0cmluZyBj
aHVuayA9IGNodW5rUmVhZGVyLm5leHRDaHVua0FzVVRGOFN0cmluZ1dpdGhMYXRpbjFGYWxsYmFj
aygpOwpAQCAtMzU4LDIyICs0MDIsMjMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
VGVzdCwgcGVla0RhdGEpCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1
ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4
dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBw
ZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hlY2soYnVpbGRlci50
YWtlKCkpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAyKQotICAg
ICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0gICAgRVhQRUNU
X0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNr
KHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAy
KTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Cisg
ICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXJUZXN0LCByZWFkQWxsQ2h1bmtzSW5NdWx0aVNlZ21lbnQpCiB7CiAgICAgY29uc3QgY2hh
ciogY29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlzIHRoZSBtb3N0IHJpZGljdWxvdXMgaGlzdG9y
eSB0aGVyZSBpcy4iOwotICAgIGF1dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1
ZmZlcikgeworICAgIGF1dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFy
ZWRCdWZmZXIpIHsKICAgICAgICAgc3RkOjp2ZWN0b3I8U3RyaW5nPiBjaHVua3M7CiAgICAgICAg
IGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzMVdpdGhvdXRTZXBhcmF0b3JbXSA9IHsg
IlRoIiwgInMgIiwgInMgdGhlIG1vc3QgciIsICJkIiwgImN1bG91cyBoIiwgInN0b3J5IHRoZXJl
ICIsICJzLiIgfTsKICAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIs
ICJpIik7CkBAIC00MDYsMTcgKzQ1MSwxOSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXJUZXN0LCByZWFkQWxsQ2h1bmtzSW5NdWx0aVNlZ21lbnQpCiAgICAgfTsKICAgICBhdXRvIHNo
YXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1w
bGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKLSAgICBzaGFyZWRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVy
KHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtl
KCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkr
KykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAg
IEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAg
ICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4
dFtpXSwgMSk7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4
dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4o
c2ltcGxlVGV4dCk7IGkgKz0gNSkKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBs
ZVRleHRbaV0sIDUpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVu
KHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVy
LmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgp
LCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAog
VEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgY2hhbmdpbmdJdGVyYXRvcikKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJU
ZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJU
ZXN0LmNwcAppbmRleCA5YjhiMTNhNzVkNTJmZjk1MWVhZDE4MTg1ZDU2YzM3OTFiMmQ3YmVkLi5k
MDM0MWE4MWRlZGE3MTlmMzVmY2NlMzk0NjU1ZWMyNTVhYjhmYmI2IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCkBA
IC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotdm9pZCBTaGFy
ZWRCdWZmZXJUZXN0OjpTZXRVcCgpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0OjpT
ZXRVcCgpCiB7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogCkBAIC00NSw3ICs0
NSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyVGVzdDo6U2V0VXAoKQogICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShoYW5kbGUpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlRlYXJEb3duKCkK
K3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OlRlYXJEb3duKCkKIHsKICAgICBGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsKICAgICBGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKG1fdGVtcEVtcHR5RmlsZVBhdGgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmgKaW5kZXggNjQwMTE5YmRlNmZjZTQx
ZjAxZWFhYjYzMTY4NDdiZTU2YjkwY2Y1Yy4uYTM5MmEwNTE5NDc1NmQyYWQ1NmU4MjQ5MjllY2U0
YzE1ZjNhZDA1NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NoYXJlZEJ1ZmZlclRlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2hhcmVkQnVmZmVyVGVzdC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgewogcHVibGljOgogICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZTsKICAgICB2b2lkIFRl
YXJEb3duKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCmluZGV4IDdhMzIwN2Y5NWM2
MjdmZTY2MjljOTI3NzQ0YjRlZjAzZTVlMmVjM2QuLjg1ODI4ZjAzOTIyNDVmNGE5OWI3NjA2YjVm
NGFjNWVjMzRkY2VlNWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCkBAIC0xMDQsNyArMTA0LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHsgZ2xvYmFsQnVmZmVySWRlbnRpZmllciwgZ2xv
YmFsSXRlbUJ1ZmZlciwgZ2xvYmFsSXRlbUJ1ZmZlckNhcGFjaXR5IH07CiAgICAgfQogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlz
dEl0ZW0mKSBjb25zdCBmaW5hbAorICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBl
bmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0IGZpbmFsCiAg
ICAgewogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVm
ZmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1
ZmZlci5tbQppbmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2OGNmYjE4ODVkNGViMTEwLi5j
M2I1ZDNlOGQ3YzAzYjFhMzY1ZGQ1MzVhMGIyOWFkZTI3YWNlY2E4IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0K
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC00NSwxOSArNDUsMjAgQEAgc3RhdGljIHZvaWQgZXhwZWN0RGF0YUFycmF5c0VxdWFsKE5T
QXJyYXk8TlNEYXRhICo+ICpleHBlY3RlZCwgTlNBcnJheTxOU0RhdGEgKj4KICAgICB9CiB9CiAK
LVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKK1RFU1RfRihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCiB7CiAgICAgQGF1dG9y
ZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVmZmVyLT5jcmVhdGVOU0Rh
dGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwor
ICAgICAgICBidWlsZGVyLmVtcHR5KCk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChu
aWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAg
IE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVuZ3Ro
OjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVz
LCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhl
bGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVu
Z3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBidWls
ZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBOU0RhdGEg
KndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAg
ICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwotICAg
ICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVm
ZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQo
KF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAgICBleHBlY3REYXRhQXJyYXlz
RXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNE
YXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhl
bGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFB
cnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0
YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSkt
PmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwpAQCAtNjYsMzUgKzY3LDM1IEBAIFRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKICAgICB9CiB9CiAKLVRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKK1RFU1RfRihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQpCiB7CiAg
ICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogCiAgICAg
ICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIgbGVu
Z3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5
dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNvbnN0IGNo
YXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CiAKICAgICAgICAgTlNEYXRh
ICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6NV07Ci0g
ICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKTsKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOwogCiAg
ICAgICAgIE5TQXJyYXkgKmV4cGVjdGVkRGF0YSA9IEBbIGhlbGxvRGF0YSwgd29ybGREYXRhIF07
CiAgICAgICAgIE5TVUludGVnZXIgZXhwZWN0ZWRTaXplID0gaGVsbG9EYXRhLmxlbmd0aCArIHdv
cmxkRGF0YS5sZW5ndGg7CiAKICAgICAgICAgTlNVSW50ZWdlciBzZWdtZW50Q291bnQgPSAwOwot
ICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBidWZmZXIuZ2V0KCkpCisgICAgICAgIGZvciAo
YXV0byYgc2VnbWVudCA6ICpidWlsZGVyLmdldCgpKQogICAgICAgICAgICAgRVhQRUNUX1RSVUUo
W3NlZ21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERh
dGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291
bnQsIHNlZ21lbnRDb3VudCk7CiAKICAgICAgICAgTlNVSW50ZWdlciBwb3NpdGlvbiA9IDA7CiAg
ICAgICAgIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIHdoaWxlIChidWZmZXItPnNpemUoKSA+
IHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEocG9zaXRpb24pOworICAgICAgICB3aGlsZSAoYnVpbGRlci5zaXplKCkgPiBw
b3NpdGlvbikgeworICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRhbERhdGEgPSBidWlsZGVyLmdl
dCgpLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbaW5j
cmVtZW50YWxEYXRhLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3Nl
Z21lbnRDb3VudCsrXV0pOwogICAgICAgICAgICAgcG9zaXRpb24gKz0gaW5jcmVtZW50YWxEYXRh
LnNpemUoKTsKICAgICAgICAgfQogICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50
LCBzZWdtZW50Q291bnQpOwogCi0gICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWZmZXItPmdldFNv
bWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEpOworICAgICAgICBhdXRvIGxhc3RCeXRlID0gYnVpbGRl
ci5nZXQoKS0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CiAgICAgICAgIEVYUEVDVF9U
UlVFKFtsYXN0Qnl0ZS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOltAImQiIGRhdGFVc2lu
Z0VuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ11dKTsKICAgICAgICAgRVhQRUNUX0VRKDFM
VSwgbGFzdEJ5dGUuc2l6ZSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rl
c3RXZWJDb3JlU3R1YnMuY3BwCmluZGV4IDQ2Yzc2MjAzZTFiMjVhYWFiN2EwMmUwYmIyYmY1ZTBj
NDM2ZWQ2ODcuLjViZTY2NTk0NjEzNzMxZTIxZWQ5N2RhNzRjNTczOGM3Y2EyODViZjQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwCkBAIC0yNSw3ICsy
NSw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCi1SZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKQor
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9C
dWZmZXIoY29uc3QgY2hhciopCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQg
YS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDg5MjM5MmQ4N2Y3NDAwZWJmYTk4ZjVhODY1M2M5ZmQ0ZTI3NTVmNTkuLjcwODBhNmNm
N2E2ZDIyMDBhZTMwM2MyMmNlNzMxMTkxMGRkYWExZjIgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNl
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMjEtMTItMDIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
KworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1j
b250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eTogcGFydCAzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERlY29kZXJUZXN0L0Rl
Y29kZXJUZXN0L21haW4ubW06CisgICAgICAgIChtYWluKToKKwogMjAyMS0xMS0yMSAgQ2F0aGll
IENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1BlcmZvcm1hbmNlIHRl
c3RdW2Nzcy1jb250YWluXSBBZGQgY2FzZSB0byB0ZXN0IGNvbnRhaW46IGxheW91dCBpbnNpZGUg
YSBjb21wbGV4IGRvY3VtZW50Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446528</attachid>
            <date>2021-12-09 05:36:22 -0800</date>
            <delta_ts>2021-12-09 06:26:54 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233677-20211210003620.patch</filename>
            <type>text/plain</type>
            <size>784774</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2Nzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NTM5OGMzNmJmOTcxYTk4NjYwODYyYjM2MGQ3YjQwYmY2OGUwNTVlLi5mYWIwZWQxODk4NmY2NWQz
MDgxZjY0MDYzZGJlZjljYjg4ZDFhMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8v
cHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBi
ZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0FycmF5QnVmZmVyLmg6CisKIDIwMjEtMTItMDkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBJbnRyb2R1Y2UgQmFzZWxpbmVDYWxsTGlu
a0luZm8gYW5kIE9wdGltaXppbmdDYWxsTGlua0luZm8gdG8gc2hyaW5rIHNpemVvZihCYXNlbGlu
ZUNhbGxMaW5rSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2NGYwMjI3NTAxNDdkNjFjYWY0Yjg0ZDg4ZWFm
Zjg1NGY3MGVjNGFlLi42NTU3ZTc3OWIyNWM1NzEwMzIxNTUyZjcyZWJjMTA2N2I3MTZlMDI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAyNiBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5h
cmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nl
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3
NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRv
IFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlw
ZXMuCisKKyAgICAgICAgUmVuYW1lIG9ubHksIG5vIGNoYW5nZSBpbiBiZWhhdmlvdXIuCisKKyAg
ICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHA6
CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGlu
Z3NEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmg6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgorICAgICAgICAqIE1vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbToKKyAgICAg
ICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcDoKKyAg
ICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oOgorICAg
ICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAg
ICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgorICAgICAgICAq
IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAq
IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHA6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aExvYWRlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0Lmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdl
LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmg6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3Bw
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmg6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmg6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHA6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
b3VyY2UvU291cmNlQnVmZmVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5o
OgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuY3BwOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGRv
bS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvU2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmg6CisgICAg
ICAgICogZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwOgorICAgICAgICAq
IGVkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmg6CisgICAgICAgICogZWRpdGlu
Zy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW06CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW06CisgICAgICAgICogZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHA6CisgICAg
ICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5o
OgorICAgICAgICAqIGZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgICogZmls
ZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmg6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1
bWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAg
ICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uV2ViS2l0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uV2ViS2l0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvQ29udGVu
dEZpbHRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tl
ci5jcHA6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxv
YWRlci9Mb2FkZXJTdHJhdGVneS5oOgorICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHA6
CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oOgorICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vic3Rp
dHV0ZURhdGEuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZUZhY3RvcnkuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3Bw
OgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oOgorICAgICAgICAq
IGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAqIGxvYWRl
ci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1s
L01IVE1MQXJjaGl2ZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRGb250LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNjcmlwdC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29h
Lmg6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAg
ICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW06CisgICAgICAgICogcGFnZS9FZGl0b3JDbGll
bnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlh
bGl6ZXIuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBw
YWdlL1NoYXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL05vd1Bs
YXlpbmdNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9h
cmRDdXN0b21EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAq
IHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxh
dGZvcm1Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJv
YXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZp
ZXdDb252ZXJ0ZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVy
UHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg6
CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1Jl
YWRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTm93UGxh
eWluZ0luZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFk
ZXJDb2NvYS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmg6CisgICAgICAgICogcGxhdGZv
cm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0
d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW06CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVk
QnVmZmVyQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5z
dGFuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNl
c3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5Lmg6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRF
bmNvZGVyR2xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNv
ZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Nb2RlbC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
bW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1C
dWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERh
dGEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5
cGVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGls
aXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVWZXJ0aWNhbERhdGEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJl
Y3RXcml0ZVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2Fs
YWJsZUltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
U2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAw
SW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcv
UE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0
ZWJvYXJkSU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJ
T1MubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0RhdGFVUkxEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0
b3IubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNz
aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNz
aW9uLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Lmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
U2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNw
cDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5Lmg6CisgICAgICAgICogdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZp
bHRlci5oOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6CisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vz
c29yTGlieHNsdC5jcHA6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwOgorCisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFy
Oi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTaW1pbGFyIHRvIFN0cmluZ0J1aWxkZXIsIGEgU2hhcmVkQnVmZmVyIGNhbiBub3cgb25s
eSBiZSBtb2RpZmllZCB0aHJvdWdoCisgICAgICAgIGEgU2hhcmVkQnVmZmVyQnVpbGRlci4gQSBT
aGFyZWRCdWZmZXIgYmVjb21lcyBpbW11dGFibGUgb25jZSBjcmVhdGVkLgorCisgICAgICAgIEEg
U2hhcmVkQnVmZmVyQnVpbGRlciBpcyBhIHJlcGxhY2VtZW50IHRvIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+LgorICAgICAgICBUaGVyZSBleGlzdHMgYSBkaWZmZXJlbmNlIGJldHdlZW4gYSBudWxsIGFu
ZCBlbXB0eSBzdGF0ZS4KKyAgICAgICAgRm9sbG93aW5nIGEgY2FsbCB0byByZXNldCgpLCBTaGFy
ZWRCdWZmZXJCdWlsZGVyOjppc051bGwoKQorICAgICAgICB3aWxsIHJldHVybiB0cnVlIGFzIG9w
cG9zZWQgdG8gZW1wdHkoKSB3aGljaCB3aWxsIGNyZWF0ZSB0aGUgdW5kZXJseWluZworICAgICAg
ICBTaGFyZWRCdWZmZXIgYnV0IHdpdGggYSBzaXplIG9mIDAuCisgICAgICAgIEEgbnVsbCBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGluZGljYXRlcyB0aGF0IGFwcGVuZCB3YXMgbmV2ZXIgY2FsbGVkIG9u
IGl0CisgICAgICAgIChldmVuIHdpdGggYW4gZW1wdHkgU2hhcmVkQnVmZmVyKS4KKyAgICAgICAg
SXQgaXMgbm90IG5lY2Vzc2FyeSB0byBjaGVjayBpZiB0aGUgU2hhcmVkQnVmZmVyQnVpbGRlciBp
cyBudWxsIGJlZm9yZQorICAgICAgICBjYWxsaW5nIGNvcHkoKSBvciB0YWtlKCkgYXMgYW4gZW1w
dHkgU2hhcmVkQnVmZmVyIHdpbGwgYmUgY3JlYXRlZCBpZgorICAgICAgICBub25lIGV4aXN0cy4K
KyAgICAgICAgVGhlc2UgZGVzaWduIGRlY2lzaW9ucyB3ZXJlIG1hZGUgZHVlIHRvIGhvdyBTaGFy
ZWRCdWZmZXIgYXJlIGN1cnJlbnRseSB1c2VkCisgICAgICAgIGFuZCB0byBtaW5pbWlzZSB0aGUg
bG9naWMgY2hhbmdlIGFzIHNvbWUgcGxhY2VzIHdvdWxkIGRpc3Rpbmd1aXNoIGJldHdlZW4KKyAg
ICAgICAgdGhlIHR3byBzdGF0ZXMgb3Igd291bGQgYWx3YXlzIGNyZWF0ZSBhbiBlbXB0eSBTaGFy
ZWRCdWZmZXIgYW5kIG9ubHkgY2hlY2sKKyAgICAgICAgaXRzIHNpemUuCisgICAgICAgIEluIHRo
ZSBmdXR1cmUsIHJlbW92aW5nIHRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIG51bGwgYW5kIHB0eSB3
b3VsZCBiZQorICAgICAgICBwcmVmZXJhYmxlLgorCisgICAgICAgIFdoaWxlIHRoZSBhaW0gd2Fz
IHRvIGd1YXJhbnRlZSB0aGF0IGEgU2hhcmVkQnVmZmVyIG9uY2UgYnVpbHQgd2FzIGltbXV0YWJs
ZS4KKyAgICAgICAgVGhpcyBnb2FsIHdhc24ndCBlbnRpcmVseSBhY2hpZXZlZCBhcyBpdCBpcyBz
dGlsbCBwb3NzaWJsZSB0byByZXRyaWV2ZSBhIFJlZlB0cgorICAgICAgICB0byBhIFNoYXJlZEJ1
ZmZlciBhbmQgY29udGludWUgdG8gYXBwZW5kIHRvIGl0IHRocm91Z2ggaXRzIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIKKyAgICAgICAgb3duZXIuIEZ1bGwgaW1tdXRhYmlsaXR5IGNvdWxkIGJlIGZ1bGx5
IGFjaGlldmVkIHdpdGggaGF2aW5nIGdldCgpIHJldHVybiBhCisgICAgICAgIHNoYWxsb3cgY29w
eSB3aGljaCBpcyBhIHJlbGF0aXZlbHkgY2hlYXAgb3BlcmF0aW9uLgorCisgICAgICAgIEZseS1C
eSBmaXhlczogUGFzcyBTaGFyZWRCdWZmZXIgdmlhIGNvbnN0IHJlZmVyZW5jZXMgb3IgcG9pbnRl
cnMgd2hlcmUgaXQncyBlYXN5CisgICAgICAgIHRvIGRvIHNvLgorICAgICAgICBObyBjaGFuZ2Ug
aW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXI7IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAg
ICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRP
TUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3VyY2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpz
ZXREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRT
b3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVk
KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
cmVtb3ZlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRhdGFMZW5ndGggY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpk
ZWNvZGVEYXRhVG9Db250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6Omhhc0J1ZmZlcmVkRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0
dXRlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpw
YXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpm
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRU
cmFjazo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRU
cmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICog
bG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xv
YWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0Nv
bnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmlzTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRl
cjo6ZW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjplbnN1cmVCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRp
YUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
aXREYXRhOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVj
b2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQ
cmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5S
YW5nZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1Njcmlw
dEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2Vn
bWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6Cisg
ICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6
aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNF
bXB0eSBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9h
ZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1Bl
bmRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0Ojpl
bnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJl
cXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYik6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwv
WE1MSHR0cFJlcXVlc3QuaDoKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVy
IGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAg
ICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIHRoZSB1bmRlcmx5aW5n
IGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAgYW5kIHNvIGNvdWxkIGJlIG11dGF0ZWQgd2hp
bGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1bmRlc2lyYWJsZQorICAgICAgICBiZWhhdmlv
dXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHdoaWNoIGd1
YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1hZGUKKyAgICAgICAgb2YgY29udGlndW91cyBk
YXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0IHdvdWxkIGhhdmUgbXV0YXRlZCBhIFNoYXJl
ZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBhcmUKKyAgICAgICAgbW92ZWQgdG8gQ29udGln
dW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBBcmVhIHdoZXJlIFNoYXJlZEJ1ZmZlcnMgd2Vy
ZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xlIHNlZ21lbnQgd2hlcmUKKyAgICAgICAgY29u
dmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgUHJldmlvdXNseSwg
YSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVuIGZsYXR0ZW5lZCBvbmx5IGlmIGl0IG5lZWRl
ZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVuIHRoZSBkYXRhIHdhcyBnb2luZyB0byBiZSBh
Y2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdlCisgICAgICAgIHRoZSBjb252ZXJzaW9uIGlz
IG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEgY2FsbCB0byBtYWtlQ29udGlndW91cy4KKyAg
ICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8tb3AgaWYgdGhlIFNoYXJlZEJ1ZmZlciBiZWlu
ZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAgICAgYSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
LgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2YgYSBTaGFyZWRCdWZmZXIgYmVpbmcgc2hhcmVk
IGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAgICAgIHVzZXJzIGl0IHdhcyBuZWNlc3Nhcnkg
dG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJzaW9ucyBiZWluZyBwZXJmb3JtZWQKKyAgICAg
ICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFuY3kuCisgICAgICAgIFdoZW4gdGhlIGZsYXR0
ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUgU2hhcmVkQnVmZmVyIGNyZWF0aW9uIHBvaW50
cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFuZCBpZGVudGlmaWVkIHRvIG1ha2UgdGhlIGJ1
ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAgIEluIHRoZSBlbmQsIHRoZXJlJ3Mgbm8gbW9y
ZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVyYXRpb25zIHRoYW4gdGhlcmUKKyAgICAgICAg
d291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNoYW5nZS4KKyAgICAgICAgVGhlcmUncyBhIHBv
dGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3JhcnkgbWVtb3J5IHVzYWdlIHdpdGggdGhlCisgICAg
ICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyIGNsYXNzOyBidWcgMjMzNTExIGlzIHRyYWNr
aW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBjaGFuZ2UgaXMgZXh0ZW5zaXZlLCBjb2RlIGNv
dmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBpcyB0aG9yb3VnaAorICAgICAgICB3aGljaCBt
YWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVubGlrZWx5LgorCisgICAgICAgIEluIGJ1ZyAy
MzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUgbWFkZSBjb21wbGV0ZWx5IGltbXV0YWJsZSBv
bmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2UuCisgICAgICAgIENv
dmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBOZXcgQVBJIHRlc3RzIGNyZWF0ZGVkLgorCisg
ICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgor
ICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6
cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1
dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpE
T01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNo
ZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmg6CisgICAgICAgICog
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01D
YWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUv
RE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6
CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtleWlkcyk6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpr
ZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0
b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5
TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNw
b25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIE1vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2Vy
aWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlEYXRh
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5o
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFz
SW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxl
dGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0
Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJz
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmJp
bmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJz
b3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2Vu
ZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50
Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5l
a2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRv
VGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbik6
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaDoKKyAg
ICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Rm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5o
OgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoK
KyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oOgorICAgICAgICAq
IGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjphcmNoaXZl
ZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Z2V0
UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0
YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06
CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQpOgorICAg
ICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JFbGVtZW50
KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5kQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRl
bnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRNYXJrdXBS
ZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJl
YWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJU
Rik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBodG1sL0ZUUERp
cmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRlbXBsYXRlRG9j
dW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2Vy
Ojpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KToKKyAgICAgICAgKiBs
b2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVy
OjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0
Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2Fk
aW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAg
ICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVmZmVyRnJvbVJlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRT
eW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpt
YXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFy
Y2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJv
cGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlv
bik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZv
bnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVm
ZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERh
dGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpyZXNvdXJj
ZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9h
ZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIv
Y29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rp
c2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0
b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVC
YWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9Q
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToK
KyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2Vy
aWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
U2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyk6CisgICAgICAgICogcGFnZS9QYWdlU2Vy
aWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhLmg6CisgICAgICAgICogcGFnZS9T
aGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVEYXRhUmVhZGVyOjpT
aGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVEYXRhUmVhZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJk
Q3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRD
dXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmg6CisgICAgICAgICog
cGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJvbWlz
ZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjb3B5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21l
bnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5z
TWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6
c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hh
cmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZp
ZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
RGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjp1
dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNl
Z21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQ
bGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nm
L1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJRkZUb1BORyk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbToKKyAgICAgICAgKC1bV2Vi
Q29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2VnbWVudDpwb3NpdGlvbjpzaXplOl0p
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6
OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVV0aWxpdGllczo6cGFyc2VK
U09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzTG9jYXRpb25G
cm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2Vu
Y0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZyk6
CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1NoYXJl
ZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9y
bWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MzIpOgorICAgICAgICAoV2ViQ29y
ZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjppc1dPRkYpOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZU
b1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVG
b3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFNpbmZEYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSlNP
TlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3Zp
ZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
bmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRl
cjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxSZXNvdXJjZU1lZGlh
TG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNo
YXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURl
Y29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
Q0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERG
RG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9y
bURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRm
b3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJs
ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
ckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3Jl
YXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0YUVu
Y291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYXJrdXBUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGll
cy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm86OmdldEl0YWxpY0Nv
cnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaElu
Zm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6Z2V0U2l6ZVZhcmlh
bnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1
Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29uc3RydWN0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhDb25zdGFudHMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aEdseXBoSW5mbyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoVmFyaWFudHMgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERh
dGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVz
Lmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjppc1ZhbGlkRW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRlUHRyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhDb3ZlcmFnZTo6Z2V0Q292ZXJhZ2VJbmRleCBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1lRm9udCk6CisgICAgICAgIChXZWJD
b3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxlOjpjb3ZlcmFnZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFibGU6OmdldFN1YnN0aXR1dGlvbnMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1cExpc3Q6Omxvb2t1cCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZVRhYmxlOjpnZXRHbHlwaFN1YnN0
aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0
OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlz
dDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkxhbmdT
eXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2Ny
aXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNjcmlwdExpc3QgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZmVhdHVyZUxpc3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6bG9va3VwTGlzdCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpmZWF0dXJlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmdldFZlcnRpY2FsR2x5cGhT
dWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRIbXR4VGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1
YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRm
b3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6
Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURh
dGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6OnNldEN1
c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6Y3VzdG9tRGF0YSBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURl
Y29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVhZElDQ1Byb2ZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZSk6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Zmls
ZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
UGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVi
b2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2Fm
ZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJk
SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVz
dDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVk
QnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGlj
ZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNo
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3Bv
bnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAg
ICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9j
TG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTEyLTA5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+IGFuZCBEb24gT2xtc3RlYWQgIDxk
b24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgTW92ZSBUZXh0Q29kZWMgZmlsZXMgZnJv
bSBXZWJDb3JlL3BsYXRmb3JtL3RleHQgdG8gV2ViQ29yZS9QQUwvdGV4dApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBl
ZmU0OGI0YmYwYzkzMWZiZTFmYmQ1NDE3Nzc0YzVhY2M2MmQ0MGIwLi5iYTFhOGQxM2RlNjVkZGRl
NDkzNmM5MDEzNzBmZDkwZTEyZDAxOGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyMCBAQAorMjAy
MS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJl
bmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2Mzkw
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJl
ZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBD
b250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0
aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETVByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETVByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvblByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5j
cHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5j
cHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
bGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RU
YXNrLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5Lmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNw
cDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNw
cDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlLmg6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKiBT
aGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFy
ZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1l
bnRDb2RlcnNHdGsuY3BwOgorICAgICAgICAqIFNoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzV2luLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQ
SUF0dGFjaG1lbnRDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFy
Z2V0R3RrMy5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlwYm9h
cmRHdGs0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVy
UHJpdmF0ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJ
SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3Mvd2lu
L1dlYlByb2Nlc3NXaW4uY3BwOgorCisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAg
ICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpi
dWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpk
aWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVt
ZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRG
YWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
Lmg6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250
aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMz
MzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5
VG9TeW5jaHJvbm91c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTCk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5Lmg6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OlNoYXJlZEJ1ZmZlckNvcHkp
OgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIpOgorICAgICAgICAoSVBD
OjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1No
YXJlZE1lbW9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hh
cmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tOgorICAgICAgICAoQVBJOjpX
ZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8
V2ViQ29yZTo6Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFNoYXJlZC9S
ZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6
OnRyeVdyYXBJblNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmVuY29k
ZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OmRlY29kZVR5cGVzQW5kRGF0YSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRl
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6
OkVudHJ5Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
ZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJz
R3RrLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAg
ICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3Qp
OgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAg
KEFQSTo6Z2V0RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZy
b21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0b3JlQXBwSGlnaGxpZ2h0
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJ
bWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3Rl
Ym9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmls
ZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpy
ZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFz
azo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0p
OgorICAgICAgICAoYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJ
bWFnZTpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVu
dDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpyZWxlYXNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hl
UmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9h
cmREYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Zmlu
aXNoZWRMb2FkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lOjpzb3VyY2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0RGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgY29u
c3QpOgorCiAyMDIxLTEyLTA5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDb3B5IFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyIGVycm9yIHdoZW4g
ZmFpbGluZyBpdHMgU2VydmljZVdvcmtlckZldGNoVGFzawpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRl
eCA2YjlkZmRjNjYxZjIyYzA3MWQ4MGYzMjA5ZmU3MWZmZmJiOTBlZGE3Li5hNGQ5Mzg2ZTM3MDA1
N2Y2N2EwYTk5ZTVmZjFlY2QxODI2Mjg0MjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9w
cm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIg
YW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJl
dHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaDoKKwogMjAyMS0xMi0wOSAgTXlsZXMgQy4gTWF4Zmll
bGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPiBhbmQgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFk
QHNvbnkuY29tPgogCiAgICAgICAgIE1vdmUgVGV4dENvZGVjIGZpbGVzIGZyb20gV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0IHRvIFdlYkNvcmUvUEFML3RleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwppbmRleCBkMDg0NDljMTQ5MjkwNGRmOGUzNGU5MmZjMTc1ZWM4YjRiNWFmY2I4Li4zYzZmNTc1
ZDZmYTdkZmRiODg2OTQ2YjQ0YzJhMDBkMDNkMWZmNTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAg
ICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFy
ZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2Uu
bW06CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250
aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMz
MzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogRE9N
L0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NSFRNTEltYWdlRWxlbWVudCBk
YXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgor
ICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0YV0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAoLVtXZWJIVE1M
UmVwcmVzZW50YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZW5jb2RlV2l0aENv
ZGVyOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAgICAgICgtW1dlYlJl
c291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIxLTEyLTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+IGFuZCBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29u
eS5jb20+CiAKICAgICAgICAgTW92ZSBUZXh0Q29kZWMgZmlsZXMgZnJvbSBXZWJDb3JlL3BsYXRm
b3JtL3RleHQgdG8gV2ViQ29yZS9QQUwvdGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmlu
ZGV4IDU4NDBkZTExNjc3MTlhMDYzOWI4YTIxYmJkYWU5ZDg0ZWY3ZDg5MmEuLjhjZjMxZjIxZTcy
NjI3MGEzOWZlNDgxYzhjMmM3OTZjYmJjY2U1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2MCBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAg
ICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1
ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAg
ICAgICAgKiBNZW1vcnlTdHJlYW0uY3BwOgorICAgICAgICAqIE1lbW9yeVN0cmVhbS5oOgorICAg
ICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6
CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAqIFdlYkZyYW1lLmg6CisgICAgICAg
ICogV2ViS2l0RExMLmNwcDoKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAgICAgICog
V2ViUmVzb3VyY2UuaDoKKworMjAyMS0xMi0wMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAg
cmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZERhdGEpOgor
CisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91
cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIE1lbW9yeVN0
cmVhbS5jcHA6CisgICAgICAgIChNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbSk6CisgICAgICAg
IChNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0u
aDoKKyAgICAgICAgKiBXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkFyY2hpdmU6OmRhdGEp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJEYXRhU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkRhdGFTb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFdlYlJlc291
cmNlLmNwcDoKKyAgICAgICAgKFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAg
ICogV2ViUmVzb3VyY2UuaDoKKwogMjAyMS0xMi0wOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPiBhbmQgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29t
PgogCiAgICAgICAgIE1vdmUgVGV4dENvZGVjIGZpbGVzIGZyb20gV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0IHRvIFdlYkNvcmUvUEFML3RleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlci5oCmluZGV4IGVhY2NhMmMyMzNhOGE2OTM3MTU5MDgwN2RmZDM2NzViMDYxNTk0
MjguLmI0NjkzZjkxYzYwN2Q4ZDA3NDU5NDY0NmU4ZGM0MzcyZTliYzk5ZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMTI5LDcgKzEyOSw3IEBA
IHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVy
PiB0cnlDcmVhdGUoQXJyYXlCdWZmZXImKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3Qg
Ynl0ZUxlbmd0aCk7CiAKLSAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJyYXk6
OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIuCisgICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVh
dGVVbmluaXRpYWxpemVkIGFuZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJh
eUJ1ZmZlci4KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBj
cmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVy
PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDMzNTRi
NTJhNTBjYmIxODlmZGZhZWI3ZDgyNDgzYmUwYzQxYzNkNGUuLmRhMzM2ZTZmNWIxNjk0ZTM3NDc2
OTBjNDNkMmI1M2YzNTE4YzA5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAKQEAg
LTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVBMQVRGT1JNKENPQ09B
KQogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lkIENsaXBib2FyZEltYWdl
UmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
bWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXIuaAppbmRleCAyYjYyNjI4NDE5YjA5Y2JiNjk1NTIxNWIwZDVkN2Q3
M2MwYjM3NDRkLi42ZTIyMDQ4Y2Y1ZmVhOWFhNjJkYWRmNDViMWYzNWM0Y2UwZDdkNmUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
bWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEltYWdlUmVhZGVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgQ2xpcGJvYXJkSW1hZ2VSZWFkZXIgOiBQYXN0
ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgQ2xpcGJvYXJkSW1hZ2VSZWFkZXIoRG9jdW1lbnQqIGRv
Y3VtZW50LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KIAogICAgIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
KSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2
b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBSZWZQdHI8RG9j
dW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGlu
Z3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IGQwNzQ2ZGEyZGEyMDll
MDIzMjViNWZhMjE0ZGJlZTY0YmY5YzkwNzguLmVmZjEwYjViNjVmZDgxYWQ5YmEzMmY4MGIzZjJj
ZjJmOGU5OGYxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuY3BwCkBAIC0yMTYsOCArMjE2LDggQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlOjppbnZva2VDb21wbGV0aW9uSGFuZGxlcigpCiAgICAgICAgIGF1dG8mIGRhdGEg
PSBpdGVtVHlwZUxvYWRlci0+ZGF0YSgpOwogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxTdHJpbmc+KGRhdGEpICYmICEhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKSkKICAgICAgICAg
ICAgIGN1c3RvbURhdGEud3JpdGVTdHJpbmcodHlwZSwgc3RkOjpnZXQ8U3RyaW5nPihkYXRhKSk7
Ci0gICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZl
cj4+KGRhdGEpKQotICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwgc3RkOjpn
ZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpLmNvcHlSZWYoKSk7CisgICAgICAgIGVsc2UgaWYg
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihkYXRh
KSkKKyAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIHN0ZDo6Z2V0PFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZGF0YSkuY29weVJlZigpKTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMjY1LDkgKzI2NSw5IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiB7
CiAgICAgaWYgKG1fdHlwZSA9PSAidGV4dC9odG1sIl9zKSB7CiAgICAgICAgIFN0cmluZyBtYXJr
dXBUb1Nhbml0aXplOwotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hh
cmVkQnVmZmVyPj4obV9kYXRhKSkgewotICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpn
ZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Ci0gICAgICAgICAgICBtYXJrdXBUb1Nhbml0
aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwor
ICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+KG1fZGF0YSkpIHsKKyAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKKyAgICAgICAgICAgIG1hcmt1cFRv
U2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0g
c3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwogCkBAIC0yNzgsOSArMjc4LDkgQEAgdm9pZCBDbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2Fu
aXRpemVEYXRhSWZOZWUKICAgICB9CiAKICAgICBpZiAobV90eXBlID09ICJpbWFnZS9wbmciX3Mp
IHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZTsKLSAgICAg
ICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkp
Ci0gICAgICAgICAgICBidWZmZXJUb1Nhbml0aXplID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZl
cj4+KG1fZGF0YSkucHRyKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBidWZmZXJUb1Nhbml0aXplOworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpCisgICAgICAgICAgICBidWZmZXJU
b1Nhbml0aXplID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihtX2RhdGEp
LnB0cigpOwogICAgICAgICBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4o
bV9kYXRhKSkKICAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSB1dGY4QnVmZmVyKHN0ZDo6
Z2V0PFN0cmluZz4obV9kYXRhKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2UuaAppbmRleCAyY2MyYzhlMWE1NGUxOGQ3MzQ5NWM1MzBjZDc3ZDU0Zjk5YTUy
OWE3Li4zN2M4MjVlMjM1YThhOGI3ZTQ0ZTQwZmIwYzJkNzcyNDQwN2E3NTg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCkBAIC0zOCw3ICszOCw3IEBA
IGNsYXNzIERPTVByb21pc2U7CiBjbGFzcyBGaWxlUmVhZGVyTG9hZGVyOwogY2xhc3MgUGFzdGVi
b2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZSA6IHB1YmxpYyBDbGlwYm9hcmRJdGVtRGF0YVNvdXJj
ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Myw3ICs1Myw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7CiAKLSAgICB1c2luZyBC
dWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PjsK
KyAgICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgY2xhc3MgQ2xpcGJvYXJkSXRlbVR5cGVMb2FkZXIg
OiBwdWJsaWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCwgcHVibGljIFJlZkNvdW50ZWQ8Q2xpcGJv
YXJkSXRlbVR5cGVMb2FkZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBSZWY8Q2xp
cGJvYXJkSXRlbVR5cGVMb2FkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHR5cGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlw
Ym9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhh
ZjMwN2EzYTQ0MTAwLi4yNzRlMDM4ZDQxODcwMTYxZTRlZWI4MGMxMmFiYmE4NzFmOWQ0YTY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0zNCwxMCArMzQs
MTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVy
OjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAg
YXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0
aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdl
ID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlm
IChhdXRvIG5zRGF0YSA9IFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCiAg
ICAgICAgICAgICBtX3Jlc3VsdCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50LmdldCgpLCBWZWN0
b3IgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obnNEYXRhLmJ5dGVzKSwgbnNEYXRhLmxl
bmd0aCB9LCBtX21pbWVUeXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXJNYWMubW0KaW5kZXggYjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTVi
Zi4uMzgyMWIwMzcxODAyODIzZDY5YTgzMGEzMTBkYTM0NzA4ZDYzMzA3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdl
UmVhZGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMzMsMTAgKzMzLDEwIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZl
cihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewog
ICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2Ug
PSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFs
bG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBjZ0ltYWdlID0gW2ltYWdlIENHSW1hZ2VGb3JQ
cm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0pIHsKICAgICAgICAgICAgIGF1
dG8gcmVwcmVzZW50YXRpb24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5p
dFdpdGhDR0ltYWdlOmNnSW1hZ2VdKTsKICAgICAgICAgICAgIE5TRGF0YSogbnNEYXRhID0gW3Jl
cHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlw
ZVBORyBwcm9wZXJ0aWVzOkB7IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmNwcAppbmRleCBlNmNjMWFhZTc4M2E1MjA5NGY2NTQ5OWJiOTBkZDdmMDA3MWQ0MjRjLi45
NWFhMDg2NTk0YTZmYjYwZDU2ZmQ3MTVlM2Y0MmUyNDQ2ODlhMWJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgRE9N
Q2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzaXplX3QgcmVjb3Jk
UG9zaXRpb24gPSB0YXNrSGFuZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVjdGlvblJlY29yZChyZXF1
ZXN0LmdldCgpLCByZXNwb25zZSwgbnVsbHB0cikpOwogCi0gICAgICAgICAgICByZXNwb25zZS5j
b25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5k
bGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCByZXNw
b25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9
IFdURk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRhc2tIYW5kbGVyLT5pc0RvbmUoKSkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTksOSArMjk5LDkgQEAgdm9pZCBET01D
YWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAo
YXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAg
ZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAg
ICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNw
b25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAg
ICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlv
biwgcmVzcG9uc2UsIGRhdGEudGFrZUFzQ29udGlndW91cygpKTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuZmV0Y2gpOwogICAg
IH0KQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRh
KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9N
Q2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJl
c3BvbnNlQm9keS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5y
ZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygp
OwogICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBX
VEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJj
ZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9
IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxl
KFdURk1vdmUocmVzdWx0KSk7CkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0
KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVBy
b21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAg
ICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9u
c2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3Bv
bnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1h
a2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsK
KyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2Ug
PSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGlu
Z0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1
bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7
CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21p
c2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0zODMsOSArMzgzLDkgQEAgdm9pZCBET01D
YWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9u
c2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNo
dW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5k
KGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBw
ZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwg
V1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHsgV1RGTW92ZShkYXRhKSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9u
c2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9u
c2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IGRhdGEudGFrZUFzQ29udGlndW91cygpIH0pOwog
ICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIzODNhMDc4
ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uYzBmODAzMmIwNDUyYzM3ZWU0Y2FmYmNhZmQ3OWYwOWQy
MTQ2MzMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVu
Z2luZS5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25z
ZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogICAgIHJldHVybiBXVEY6OnN3aXRjaE9u
KGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkg
ewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgpOwogICAgIH0sIFtdKGNv
bnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7Ci0gICAgICAg
IHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7
IC8vIFNoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMu
CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAg
ICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKaW5kZXggMjg1
MGRiYTFlM2JmYTExZjQ4OWI0NDQwMzUxM2Q1MWFlMWJlYWQzYS4uOWQxYmM2NzRmYzgyNmNiNmQx
NmQwMjUxMGNmODQwMTBhZGNiZDc3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAtMTM1LDE3ICsxMzUsMTcgQEAgYm9vbCBDRE06OnN1cHBv
cnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSkgY29uc3QKICAg
ICByZXR1cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3VwcG9ydGVkSW5pdERhdGFUeXBlcygp
LmNvbnRhaW5zKGluaXREYXRhVHlwZSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETTo6
c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgaW5pdERhdGEpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RN
OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgcmV0dXJuIEluaXREYXRh
UmVnaXN0cnk6OnNoYXJlZCgpLnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0
YSk7CiB9CiAKLWJvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK2Jvb2wgQ0RNOjpzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBt
X3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRC
dWZmZXImIHJlc3BvbnNlKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETTo6c2Fu
aXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKIHsK
ICAgICBpZiAoIW1fcHJpdmF0ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAppbmRleCBkOGE0YjNhZjEyZjFhNzky
M2Q4ODcwNWQ1Yjk1ODFkMzZmMTAyNzBjLi5kN2IxZDUzZDA0OTFmNzI3NzliNTk0YjJkODNjMDli
ODNiY2YyMDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
LmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgQ0RNSW5zdGFuY2U7CiBjbGFzcyBDRE1Qcml2YXRl
OwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RN
IDogcHVibGljIFJlZkNvdW50ZWQ8Q0RNPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETT4sIHBy
aXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgpAQCAtNzMsMTAgKzcz
LDEwIEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdDsKICAgICBi
b29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBib29sIHN1cHBvcnRzSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
KTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6
ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oCmluZGV4IDIxZTUyZjRiNzE0
ZmI5MWY2N2NmYzM5NjEzOWMxNjUyNWJmYjdiOWIuLjQxMGVkMmZiNjQyNzU2MmNlOWJkOGVkYTRk
OTFhODZiYTk4Y2FhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvQ0RNQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9DRE1DbGllbnQuaApAQCAtMzYsMTQgKzM2LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENETUluc3RhbmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNQ2xpZW50IDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPENETUNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkNETUNsaWVudCgpID0g
ZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCBjZG1DbGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5
YmFja0lmTmVjZXNzYXJ5KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjZG1DbGllbnRVbnJlcXVl
c3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRC
dWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0
aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdp
c3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQxYTY3MDc0NDBmMmQ1Ni4u
NmY4ODhlMTc4NThkZGE2ZDk0NzFlYzFmNmVmNWQwNjZkZjBlNDk5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0
cnkuY3BwCkBAIC01NCwxMyArNTQsMTMgQEAgbmFtZXNwYWNlIHsKICAgICBjb25zdCB1aW50MzJf
dCBrS2V5SWRzTWF4S2V5SWRTaXplSW5CeXRlcyA9IDUxMjsKIH0KIAotc3RhdGljIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyAxLiBGb3JtYXQKICAgICAvLyBo
dHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0
ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAK
ICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAo
IXZhbHVlKQpAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIGlm
ICgha2lkc0FycmF5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgVmVjdG9y
PFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4ga2V5SURzOwogICAgIGZvciAoYXV0byYgdmFsdWUgOiAqa2lkc0FycmF5KSB7
CiAgICAgICAgIGF1dG8ga2V5SUQgPSB2YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAgaWYgKCFr
ZXlJRCkKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxT
aGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWQKICAgICByZXR1
cm4ga2V5SURzOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlp
ZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKICAgICAvLyAxLiBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIu
aW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNm
b3JtYXQKQEAgLTEwNCwxNCArMTA0LDE0IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
YW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBhdXRvIG9iamVj
dCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBraWRzQXJyYXkgPSBKU09OOjpB
cnJheTo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRvJiBidWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1
ZSgpKQotICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJp
bmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgICAgIGtpZHNBcnJheS0+
cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRz
IiwgV1RGTW92ZShraWRzQXJyYXkpKTsKIAogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3Qt
PnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
anNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJC
b3g+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YVJlZ2lzdHJ5
OjpleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0
CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVn
aXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAgLTE1MSw5ICsxNTEsOSBA
QCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3Rl
bVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaQogICAgIHJldHVybiBwc3NoQm94ZXM7CiB9CiAKLXN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6
ZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5
OjpleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwogCiAgICAgYXV0byBwc3NoQm94ZXMg
PSBleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoYnVmZmVyKTsKICAgICBpZiAoIXBzc2hCb3hlcykK
QEAgLTE4NSw3ICsxODUsNyBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNvbgogICAgIHJldHVybiBr
ZXlJRHM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0
aXplQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQg
UFNTSCBCb3ggRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1t
ZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAg
LTE5NSw3ICsxOTUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5Ojpz
YW5pdGl6ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIGJ1ZmZl
ci5jb3B5KCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0o
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHNhbml0aXplV2ViTShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgLy8gQ2hlY2sgaWYgdGhlIGJ1ZmZlciBpcyBhIHZhbGlkIFdlYk0gaW5pdERh
dGEuCiAgICAgLy8gVGhlIFdlYk0gaW5pdERhdGEgaXMgdGhlIENvbnRlbnRFbmNLZXlJRCwgc28g
c2hvdWxkIGJlIGxlc3MgdGhhbiBrV2ViTU1heENvbnRlbnRFbmNLZXlJRFNpemUuCkBAIC0yMDUs
MTAgKzIwNSwxMCBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQog
Ci1zdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0
S2V5SURzV2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzV2Vi
TShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJl
ZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emVkQnVmZmVyID0gc2FuaXRpemVXZWJNKGJ1ZmZlcik7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdlYk0oYnVmZmVyKTsKICAgICBpZiAoIXNh
bml0aXplZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMjMzLDcg
KzIzMyw3IEBAIEluaXREYXRhUmVnaXN0cnk6OkluaXREYXRhUmVnaXN0cnkoKQogCiBJbml0RGF0
YVJlZ2lzdHJ5Ojp+SW5pdERhdGFSZWdpc3RyeSgpID0gZGVmYXVsdDsKIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXREYXRhVHlw
ZSk7CiAgICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUuc2FuaXRp
emVJbml0RGF0YSkKQEAgLTI0MSw3ICsyNDEsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0
RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYQog
ICAgIHJldHVybiBpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKGJ1ZmZlcik7CiB9CiAKLXN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6
ZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBhdXRvIGl0ZXIgPSBtX3R5cGVzLmZpbmQoaW5pdERhdGFUeXBlKTsKICAgICBpZiAo
aXRlciA9PSBtX3R5cGVzLmVuZCgpIHx8ICFpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuaAppbmRleCBjZDEzODdhNmJkMDM4ZmYzNGUyY2ZiNzVmNDQzZGU3ZDk0MDMy
MWIwLi43N2Q2MDRiMDhiYjdmN2UzOGJjY2IzNTQ1YjM0YzhiMTM0MzU1ZWYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuaApAQCAtMzgsMTkgKzM4LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEluaXREYXRhUmVnaXN0
cnkgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbml0RGF0YVJlZ2lzdHJ5
JiBzaGFyZWQoKTsKICAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8SW5pdERhdGFSZWdp
c3RyeT47CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRy
YWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVm
ZmVyJik7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0cnVj
dCBJbml0RGF0YVR5cGVDYWxsYmFja3MgewotICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRh
Q2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8U2hhcmVkQnVmZmVyPihjb25zdCBTaGFyZWRCdWZm
ZXImKT47Ci0gICAgICAgIHVzaW5nIEV4dHJhY3RLZXlJRHNDYWxsYmFjayA9IEZ1bmN0aW9uPHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4oY29uc3QgU2hhcmVkQnVmZmVy
Jik+OworICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpPjsKKyAgICAgICAgdXNpbmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0gRnVuY3Rpb248c3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4oY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKIAogICAgICAgICBTYW5pdGl6ZUluaXREYXRhQ2FsbGJh
Y2sgc2FuaXRpemVJbml0RGF0YTsKICAgICAgICAgRXh0cmFjdEtleUlEc0NhbGxiYWNrIGV4dHJh
Y3RLZXlJRHM7CkBAIC02MSw5ICs2MSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRv
bVN0cmluZyYga2V5aWRzTmFtZSgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiB3ZWJt
TmFtZSgpOwogCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hl
c0Zyb21DZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUNlbmMo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0
cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
Pj4gZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAg
IHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVDZW5jKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogcHJpdmF0ZToKICAgICBJbml0RGF0YVJlZ2lz
dHJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggOGJmYjFjZTcwMWEyZjVhNjliNWI1MTk5MWFh
ODYzMmViYjg5MjVmOS4uMTQ3NzZjMjAxNTFiZmVmZTM4MDc5YTMzNzMwYzg4NjYyNjhiYTQ2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgTWVkaWFLZXlTZXNz
aW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25z
dCBCdWZmCiAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNl
OjpOZXR3b3JraW5nLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaW5pdERh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLmxlbmd0
aCgpKSwgaW5pdERhdGFUeXBlLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmll
ciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewogICAgICAgICAvLyAxMC4xLiBJ
ZiB0aGUgaW5pdCBkYXRhIGlzIG5vdCB2YWxpZCBmb3IgaW5pdERhdGFUeXBlLCByZWplY3QgcHJv
bWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIC8vIDEwLjIuIExl
dCBzYW5pdGl6ZWQgaW5pdCBkYXRhIGJlIGEgdmFsaWRhdGVkIGFuZCBzYW5pdGl6ZWQgdmVyc2lv
biBvZiBpbml0IGRhdGEuCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZElu
aXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUs
IGluaXREYXRhKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0
aXplZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0YShpbml0RGF0
YVR5cGUsIGluaXREYXRhKTsKIAogICAgICAgICAvLyAxMC4zLiBJZiB0aGUgcHJlY2VkaW5nIHN0
ZXAgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3Iu
CiAgICAgICAgIGlmICghc2FuaXRpemVkSW5pdERhdGEpIHsKQEAgLTIyMyw3ICsyMjMsNyBAQCB2
b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgICAgICAgICAgbV9sYXRlc3REZWNyeXB0VGltZSA9
IDA7CiAgICAgICAgIH0KIAotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVxdWVzdExpY2Vu
c2UobV9zZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBzYW5pdGl6ZWRJbml0RGF0YS5yZWxlYXNl
Tm9uTnVsbCgpLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBp
ZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlv
biwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsK
KyAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlcXVlc3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUs
IGluaXREYXRhVHlwZSwgc2FuaXRpemVkSW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMs
IHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1v
dmUoaWRlbnRpZmllcildIChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1J
bnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTQyMiw3
ICs0MjIsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJj
ZSYgcmVzcG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAgIC8vIDYuIFJ1biB0aGUgZm9s
bG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgogICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2
ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH0sIHJlc3BvbnNlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzcG9uc2UuZGF0
YSgpLCByZXNwb25zZS5sZW5ndGgoKSksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVu
dGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDYu
MS4gTGV0IHNhbml0aXplZCByZXNwb25zZSBiZSBhIHZhbGlkYXRlZCBhbmQvb3Igc2FuaXRpemVk
IHZlcnNpb24gb2YgcmVzcG9uc2UgY29weS4KLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVkUmVzcG9uc2UgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZVJlc3BvbnNlKHJl
c3BvbnNlKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXpl
ZFJlc3BvbnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7
CiAKICAgICAgICAgLy8gNi4yLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCBvciBpZiBz
YW5pdGl6ZWQgcmVzcG9uc2UgaXMgZW1wdHksIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBj
cmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFzYW5pdGl6ZWRSZXNwb25zZSB8fCBzYW5p
dGl6ZWRSZXNwb25zZS0+aXNFbXB0eSgpKSB7CkBAIC02MDEsNyArNjAxLDcgQEAgdm9pZCBNZWRp
YUtleVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAg
ICAgIC8vIDQuMy4gTGV0IG1lc3NhZ2UgdHlwZSBiZSBudWxsLgogCiAgICAgICAgIC8vIDQuNC4g
VXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICBtX2lu
c3RhbmNlU2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5
cGUsIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZp
ZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNW
ZWN0b3ImJiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2Us
IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7Cisg
ICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwg
bV9zZXNzaW9uVHlwZSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChDRE1JbnN0YW5jZVNlc3Npb246
OktleVN0YXR1c1ZlY3RvciYmIGtleXMsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1
Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKIApAQCAtNjQ5LDcgKzY0OSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9u
OjpyZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIC8vIDUuIFJldHVy
biBwcm9taXNlLgogfQogCi12b2lkIE1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UoTWVk
aWFLZXlNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBtZXNzYWdl
KQordm9pZCBNZWRpYUtleVNlc3Npb246OmVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5
cGUgbWVzc2FnZVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG1lc3NhZ2UpCiB7
CiAgICAgLy8gNi40LjEgUXVldWUgYSAibWVzc2FnZSIgRXZlbnQKICAgICAvLyBodHRwczovL3cz
Yy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNxdWV1ZS1tZXNzYWdlCkBAIC03MTYsNyArNzE2
LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKENETUluc3RhbmNl
U2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYgaW4KICAgICAgICAgfSk7CiB9CiAKLXZvaWQgTWVk
aWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBNZWRpYUtleVNlc3Npb246OnNlbmRNZXNz
YWdlKENETU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBtZXNzYWdlKQogewogICAgIGVucXVldWVNZXNzYWdlKG1lc3NhZ2VUeXBlLCBtZXNzYWdl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDNkOTZmODgwMmU3NDc4NDFjNGVmZGE4MWRjYjk0MWVh
NmU0YTc1ZTQuLjM2NWFjZTVjMDk1ZTdkYzBjNTcxZTc2Y2NmMmMwN2FhZmM2MmJhYTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNz
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVNlc3Npb24uaApAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBDRE07CiBjbGFzcyBEZWZlcnJlZFBy
b21pc2U7CiBjbGFzcyBNZWRpYUtleVN0YXR1c01hcDsKIGNsYXNzIE1lZGlhS2V5czsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VQcm94eTsKIApAQCAtODcsMjAgKzg3
LDIwIEBAIHB1YmxpYzoKICAgICB1c2luZyBDbG9zZWRQcm9taXNlID0gRE9NUHJvbWlzZVByb3h5
PElETFVuZGVmaW5lZD47CiAgICAgQ2xvc2VkUHJvbWlzZSYgY2xvc2VkKCkgeyByZXR1cm4gbV9j
bG9zZWRQcm9taXNlLmdldCgpOyB9CiAKLSAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxT
aGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+JiBzdGF0dXNlcygpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdHVzZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiYgc3RhdHVzZXMoKSBjb25zdCB7IHJldHVy
biBtX3N0YXR1c2VzOyB9CiAKICAgICB1bnNpZ25lZCBpbnRlcm5hbEluc3RhbmNlU2Vzc2lvbk9i
amVjdFJlZkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnN0YW5jZVNlc3Npb24tPnJlZkNvdW50
KCk7IH0KIAogcHJpdmF0ZToKICAgICBNZWRpYUtleVNlc3Npb24oRG9jdW1lbnQmLCBXZWFrUHRy
PE1lZGlhS2V5cz4mJiwgTWVkaWFLZXlTZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlk
ZW50aWZpZXIsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0YW5jZVNlc3Npb24+JiYpOwotICAgIHZv
aWQgZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVy
Jik7CisgICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCB1cGRhdGVFeHBpcmF0aW9uKGRvdWJs
ZSk7CiAgICAgdm9pZCBzZXNzaW9uQ2xvc2VkKCk7CiAgICAgU3RyaW5nIG1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkoKSBjb25zdDsKIAogICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAog
ICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlT
dGF0dXNWZWN0b3ImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdl
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRN
ZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNz
YWdlKSBmaW5hbDsKICAgICB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgZmlu
YWw7CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgZmluYWw7CiAKQEAgLTE0MCwx
MCArMTQwLDEwIEBAIHByaXZhdGU6CiAgICAgTWVkaWFLZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25U
eXBlOwogICAgIFJlZjxDRE0+IG1faW1wbGVtZW50YXRpb247CiAgICAgUmVmPENETUluc3RhbmNl
U2Vzc2lvbj4gbV9pbnN0YW5jZVNlc3Npb247Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
PiBtX3JlY29yZE9mS2V5VXNhZ2U7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4gbV9yZWNvcmRPZktleVVzYWdlOwogICAgIGRvdWJsZSBtX2ZpcnN0RGVjcnlwdFRpbWUg
eyAwIH07CiAgICAgZG91YmxlIG1fbGF0ZXN0RGVjcnlwdFRpbWUgeyAwIH07Ci0gICAgVmVjdG9y
PHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiBtX3N0YXR1c2Vz
OworICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRp
YUtleVN0YXR1cz4+IG1fc3RhdHVzZXM7CiAKICAgICB1c2luZyBEaXNwbGF5Q2hhbmdlZE9ic2Vy
dmVyID0gT2JzZXJ2ZXI8dm9pZChQbGF0Zm9ybURpc3BsYXlJRCk+OwogICAgIERpc3BsYXlDaGFu
Z2VkT2JzZXJ2ZXIgbV9kaXNwbGF5Q2hhbmdlZE9ic2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNw
cAppbmRleCA3M2Y3NGU0ZjcwZmM5MmMyMmJmODU5YzAyMjhhMzRlYWVjNTc5N2EzLi4zOThlOGFi
MWI2NTZiNDQ1OTI3YmViNmJjNjkzZGQzOTlhNjg3YWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNw
cApAQCAtNTYsMTIgKzU2LDEyIEBAIHVuc2lnbmVkIGxvbmcgTWVkaWFLZXlTdGF0dXNNYXA6OnNp
emUoKQogICAgIHJldHVybiBtX3Nlc3Npb24tPnN0YXR1c2VzKCkuc2l6ZSgpOwogfQogCi1zdGF0
aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNv
dXJjZSYgYikKK3N0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKIHsKICAgICBhdXRvIGxlbmd0aCA9IGEu
c2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAhPSBiLmxlbmd0aCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRh
KCksIGxlbmd0aCk7CisgICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6
Omhhcyhjb25zdCBCdWZmZXJTb3VyY2UmIGtleUlkKQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6
b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5
U3RhdHVzPj4gTWVkaWFLZXlTCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBh
dXRvJiBwYWlyID0gc3RhdHVzZXNbbV9pbmRleCsrXTsKLSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5
QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOwor
ICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CiAgICAgcmV0dXJuIEtleVZh
bHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4geyBSZWZQ
dHI8QXJyYXlCdWZmZXI+KFdURk1vdmUoYnVmZmVyKSksIHBhaXIuc2Vjb25kIH07CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
dGF0dXNNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTdGF0dXNNYXAuaAppbmRleCBjMjExMTEzYTJjNmRhYzc5NzkyNGE5OWQyZDJkZjk3YzJlNjVm
ODUwLi42MGQ2MmFhZmY4MDc0ZGFkYTZlMzFhM2YyYjM3MGE2ZDZkMDFmNjE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFw
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0
YXR1c01hcC5oCkBAIC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IE1lZGlhS2V5U2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1lZGlhS2V5U3RhdHVzTWFwIDogcHVibGljIFJlZkNvdW50
ZWQ8TWVkaWFLZXlTdGF0dXNNYXA+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAppbmRleCA4M2IyNGFjZWFhNWIx
Mjk0YmI0ZWE0MzlmYjJkNWM0ZjZjY2Q0NzUzLi4zNjdmMzFkMTg2YjUxNjM5YTljNzQyMTNmMGNm
OGU2ZjJmOGQyNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgYm9vbCBNZWRpYUtleXM6
Omhhc09wZW5TZXNzaW9ucygpIGNvbnN0CiAgICAgICAgIH0pOwogfQogCi12b2lkIE1lZGlhS2V5
czo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKK3ZvaWQgTWVkaWFLZXlz
Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5p
dERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAg
ICBmb3IgKGF1dG8mIGNkbUNsaWVudCA6IG1fY2RtQ2xpZW50cykKICAgICAgICAgY2RtQ2xpZW50
LmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoaW5pdERhdGFU
eXBlLCBpbml0RGF0YS5jb3B5UmVmKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5kZXggN2I1OWEzYmM2ZDIyNTZmYzY1NmYwOGNi
ZjI2ODkxODUxMDk4M2EyMi4uOTFhMWEwNzExNDMzYmUyNDdkZDJhODVjNWY0YWQwOTM4YTA5YTdh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5oCkBAIC04Niw3ICs4Niw3IEBAIHByb3RlY3RlZDoKICAgICBNZWRpYUtleXMoRG9jdW1l
bnQmLCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgYm9vbCBwZXJzaXN0ZW50U3RhdGVB
bGxvd2VkLCBjb25zdCBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mLCBSZWY8Q0RNPiYmLCBS
ZWY8Q0RNSW5zdGFuY2U+JiYpOwogCiAgICAgLy8gQ0RNSW5zdGFuY2VDbGllbnQKLSAgICB2b2lk
IHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0
aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dl
ciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCBjMDQ3MzEyODRmNjc2YWE1YzUwZjk0MGJl
NGY2NjE3MjVkOGJmOGFjLi5iOGYyZWMzNzNkODczY2M5YzhhY2IzYzZlYzg0NWY2YWIwMDA5YWE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUs
NyArMjM1LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBv
d25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25z
dW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UpCiB7CiAgICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5KCku
YXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShX
VEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEo
KSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRo
RGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAg
ICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0
aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBi
bG9icy4KQEAgLTI3Miw3ICsyNzIsNyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9k
eUFzRm9ybURhdGEoKSBjb25zdAogICAgIGlmIChpc0Zvcm1EYXRhKCkpCiAgICAgICAgIHJldHVy
biAmY29uc3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAoYXV0byog
ZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpKQotICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0
ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgIHJldHVybiBGb3JtRGF0YTo6
Y3JlYXRlKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg0LDcg
KzI4NCw3IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAg
IGF1dG8gYnVmZmVyID0gbV9jb25zdW1lci50YWtlRGF0YSgpOwogICAgICAgICBpZiAoIWJ1ZmZl
cikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gYnVmZmVyLnJl
bGVhc2VOb25OdWxsKCk7CisgICAgICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7
CiAgICAgfQogCiAgICAgaWYgKGlzQmxvYigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGRjODY1ZjdkYTIzOTdhYzU1
OTNiNDRiNTM5ZDNlNjcxZTQzY2U2ZGIuLjE5MTljMWNiOTEzMDgzZTQ1ZTMxMTg0ODY2NmQzNzc3
NzI4NDc5YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdp
dGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9keUNv
bnMKIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4oKQogewotICAgIG1fYnVmZmVyID0g
bnVsbHB0cjsKKyAgICBtX2J1ZmZlci5yZXNldCgpOwogICAgIHJlc2V0Q29uc3VtZVByb21pc2Uo
KTsKICAgICBpZiAobV9zaW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFjaygpOwpA
QCAtMjY2LDE2ICsyNjYsMTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8
RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KIHsKICAgICBpZiAo
c3RyZWFtKSB7CiAgICAgICAgIEFTU0VSVCghbV9zaW5rKTsKLSAgICAgICAgbV9zaW5rID0gUmVh
ZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBj
b250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fc2luayA9IFJl
YWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCB0eXBlID0gbV90eXBlLCBj
b250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZh
bHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5r
LT5zaXplKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmVXaXRo
VHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+
ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIGF1dG8gYnVmZmVyID0gZGF0YS50YWtlQXNDb250aWd1b3VzKCk7CisgICAgICAgICAgICAg
ICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50
VHlwZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgfSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTMwNiw3ICszMDgsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZl
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsK
ICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3Jt
RGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVm
ZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAg
ICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50
VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRy
LCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTMyNCwyNiArMzI2
LDI1IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBzaXplKQogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAo
IW1fYnVmZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVuZChk
YXRhLCBzaXplKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSgpCit2b2lkIEZldGNo
Qm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEp
CiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9idWZmZXIpOworICAgIG1fYnVmZmVyLnJlc2V0KCk7
CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQogCi1SZWZQdHI8SlNDOjpB
cnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKK1JlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQog
ewogICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlKG51bGxwdHIsIDApOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9i
dWZmZXIudGFrZSgpOworfQogCi0gICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fYnVmZmVyLT50cnlD
cmVhdGVBcnJheUJ1ZmZlcigpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICByZXR1cm4g
YXJyYXlCdWZmZXI7CitSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6
OnRha2VBc0FycmF5QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZUFzQXJyYXlC
dWZmZXIoKTsKIH0KIAogUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCkBAIC0zNTEsOSArMzUyLDcgQEAgUmVmPEJs
b2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0
ZShjb250ZXh0LCBWZWN0b3I8dWludDhfdD4oKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBl
KG1fY29udGVudFR5cGUpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjpleGNoYW5nZShtX2J1
ZmZlciwgbnVsbHB0cik7Ci0gICAgYXV0byBkYXRhID0gYnVmZmVyLT5leHRyYWN0RGF0YSgpOwot
ICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgbV9jb250ZW50
VHlwZSk7CisgICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBtX2J1ZmZlci50YWtlKCkt
PmV4dHJhY3REYXRhKCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29u
c3VtZXI6OnRha2VBc1RleHQoKQpAQCAtMzYyLDggKzM2MSw4IEBAIFN0cmluZyBGZXRjaEJvZHlD
b25zdW1lcjo6dGFrZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogCi0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZy
b21VVEY4KG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwotICAgIG1fYnVmZmVy
ID0gbnVsbHB0cjsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fYnVmZmVyLnRha2VBc0NvbnRpZ3VvdXMo
KTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgoYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gdGV4dDsKIH0KIApAQCAt
MzgzLDEwICszODIsOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNldENvbnN1bWVQcm9t
aXNlKCkKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZShSZWY8RmV0Y2hCb2R5U291
cmNlPiYmIHNvdXJjZSkKIHsKICAgICBtX3NvdXJjZSA9IFdURk1vdmUoc291cmNlKTsKLSAgICBp
ZiAobV9idWZmZXIpIHsKLSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXItPnRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCkpOwotICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgfQor
ICAgIGlmIChtX2J1ZmZlcikKKyAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXIudGFr
ZUFzQXJyYXlCdWZmZXIoKSk7CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdG
YWlsZWQoY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKaW5kZXggMmIwNTZmMTI2NDNiYTk2N2Zl
NDFhMDE1MTNhODliNzM2MjY0MmQ0Yy4uODcxZDJjMDg2MzMxYTk4Mjk0YTE2NmE0YjQyZTMxODRl
MDM3NzcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlDb25zdW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuaApAQCAtNTAsMTAgKzUwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25z
dCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERhdGEoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhKSB7IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsgfQorICAgIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci5nZXQoKS5nZXQoKTsgfQorICAgIHZvaWQgc2V0RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6
OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwogICAgIFN0cmluZyB0YWtlQXNUZXh0
KCk7CiAKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKIAogICAgIFR5cGUgbV90eXBlOwogICAg
IFN0cmluZyBtX2NvbnRlbnRUeXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVy
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiAgICAgUmVmUHRyPERlZmVycmVk
UHJvbWlzZT4gbV9jb25zdW1lUHJvbWlzZTsKICAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW1Ub1No
YXJlZEJ1ZmZlclNpbms+IG1fc2luazsKICAgICBSZWZQdHI8RmV0Y2hCb2R5U291cmNlPiBtX3Nv
dXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKaW5k
ZXggZmM1NWNjN2Q4M2Q4YmMxMWYwODU0ZGMzY2ZkODUwOTdhMzFmMTBmNi4uMDNmODliNjFjYTVm
N2M3MTc2YjlkODhjZDEzNjYwZTg2YjdhMjU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEZldGNoTG9h
ZGVyOjpzdG9wKCkKICAgICAgICAgbV9sb2FkZXItPmNhbmNlbCgpOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBGZXRjaExvYWRlcjo6c3RhcnRTdHJlYW1pbmcoKQorUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IEZldGNoTG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiB7CiAgICAgQVNT
RVJUKG1fY29uc3VtZXIpOwogICAgIGF1dG8gZmlyc3RDaHVuayA9IG1fY29uc3VtZXItPnRha2VE
YXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKaW5kZXgg
MmY5MGYwZWMzZmY5MDVhMjYyMzFjODRjNzJhN2ExODZjZDRiZmU4My4uNDYxMmQwZTBlM2E3ZWZl
MzA2MDM5NmIwZDc1YTJmYTNiYzRlZGRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hMb2FkZXIuaApAQCAtMzksMTQgKzM5LDE0IEBAIGNsYXNzIEZldGNoQm9keUNvbnN1
bWVyOwogY2xhc3MgRmV0Y2hMb2FkZXJDbGllbnQ7CiBjbGFzcyBGZXRjaFJlcXVlc3Q7CiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRmV0Y2hMb2FkZXIgZmluYWwgOiBwdWJsaWMg
VGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgRmV0Y2hMb2FkZXIoRmV0Y2hM
b2FkZXJDbGllbnQmLCBGZXRjaEJvZHlDb25zdW1lciopOwogICAgIFdFQkNPUkVfRVhQT1JUIH5G
ZXRjaExvYWRlcigpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmco
KTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsK
IAogICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEZldGNoUmVx
dWVzdCYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIGNvbnN0IEJsb2ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwCmluZGV4IDRkZjg0MjZjNzE4YmExNmVjZjBhNDdlNzNlOTAwZDNmODQ4
ZjY0ZjIuLmUzOGE4M2FkZTdkNmUwYWFmNzBjZWI5YzVhYThmZThhYjQ5NDNkMGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtNDAwLDcg
KzQwMCw4IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNo
dW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRhdGEpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9
OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgU3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07
CiAgICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAgLTUwMyw3ICs1MDQs
NyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OmZlZWRTdHJlYW0oKQogICAgIGNsb3NlU3RyZWFtKCk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0
YXJ0U3RyZWFtaW5nKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaFJlc3Bv
bnNlOjpCb2R5TG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiB7CiAgICAgQVNTRVJUKG1fbG9hZGVy
KTsKICAgICByZXR1cm4gbV9sb2FkZXItPnN0YXJ0U3RyZWFtaW5nKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEzOGQzYzNmNmUy
ZmRiNjY3NWU4YTRkMTM2NWJmNWE1YmIuLmNmNzg2MzIzOWZkOTQ2ZWUwZThkODhlYWVhNzJmZTk4
OWVlZDMxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oCkBAIC0xMzQsNyArMTM0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIGNvbnN1bWVE
YXRhQnlDaHVuayhDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayYmKTsKIAotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzdGFydFN0cmVhbWluZygpOworICAgICAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKICAgICAgICAgTm90aWZpY2F0aW9u
Q2FsbGJhY2sgdGFrZU5vdGlmaWNhdGlvbkNhbGxiYWNrKCkgeyByZXR1cm4gV1RGTW92ZShtX3Jl
c3BvbnNlQ2FsbGJhY2spOyB9CiAgICAgICAgIENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrIHRh
a2VDb25zdW1lRGF0YUNhbGxiYWNrKCkgeyByZXR1cm4gV1RGTW92ZShtX2NvbnN1bWVEYXRhQ2Fs
bGJhY2spOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0LmgKaW5kZXggZGQxOWM4NzBhYTdkMjQ4NWY3ZTljYTg0OTJhODQyMTM1MmRkZDA0MS4u
MWE2NmJmODE4MzIwZTk1NjA3ZDYxNWYxYTA4MmE4Mjc2ZWIyYTM0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTM4LDcgKzM4LDcg
QEAgZW51bSBjbGFzcyBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCA6IGJvb2wgeyBObywgWWVz
IH07CiBlbnVtIGNsYXNzIEhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgOiBib29sIHsg
Tm8sIFllcyB9OwogCiBzdHJ1Y3QgQXBwSGlnaGxpZ2h0IHsKLSAgICBSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBoaWdobGlnaHQ7CisgICAgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGhpZ2hsaWdodDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGV4dDsKICAgICBD
cmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBpc05ld0dyb3VwOwogICAgIEhpZ2hsaWdodFJlcXVl
c3RPcmlnaW5hdGVkSW5BcHAgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDsKQEAgLTUyLDcgKzUyLDcg
QEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVf
dD4oaGlnaGxpZ2h0LT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KGhpZ2hsaWdodC0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJh
bmdlRGF0YS5jcHAKaW5kZXggZTJkOWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJkMDRhNDU3NmMw
Ni4uNWU4MGYwYzA3MmQ0OWEzZWY3OTY5NTkzMDJjNDQ1NmNkMmFiZGU4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwCkBAIC00NCwxNSArNDQsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25z
dGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgzMjMwMzIz
MTsgLy8gRmlsZSBTaWduYXR1cmUgIChBKXBwbGUoQVApcGxpY2F0aW9uKEgpaWdobGlnaHRzKDIw
MjEpCiAKLXN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRS
YW5nZURhdGE6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9u
YWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVy
ID0gYnVmZmVyLmRlY29kZXIoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIu
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5k
ZWNvZGVyKCk7CiAgICAgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7
CiAgICAgZGVjb2RlciA+PiBkYXRhOwogICAgIHJldHVybiBkYXRhOwogfQogCi1SZWY8U2hhcmVk
QnVmZmVyPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKK1Jl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OnRvU2hhcmVk
QnVmZmVyKCkgY29uc3QKIHsKICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGVuY29kZXI7
CiAgICAgZW5jb2RlciA8PCAqdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKaW5kZXggY2Y2MzgxYWNmYjBh
NTIxMWI0MzUwOGI3YjUxN2Q2ZGIyZjZmYzc0My4uYjVkYWY2MDI1Mzk4YTNmN2U2ZjFkMzdhYmVj
ZTg0NGQ0ZjFjNjU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEFwcEhp
Z2hsaWdodFJhbmdlRGF0YSB7CiBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURh
dGE+IGNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGNyZWF0ZShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgc3RydWN0IE5vZGVQYXRoQ29tcG9uZW50IHsKICAg
ICAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgICAgIFN0cmluZyBub2RlTmFtZTsKQEAgLTEx
MSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGVjb2RlKERlY29kZXImKTsK
IAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKIHByaXZh
dGU6CiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKaW5kZXggZGMzOWEw
ZjBkMThmZmZjYTdkZmI0NjUyMTljZDYxMmE5ZjczOGY4Zi4uZTVkZTg0OTRmMzUwNDUzNTk0YjJm
MmU4OGMzZGRhMzNmYTlhZjcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKQEAgLTIzNyw3ICsyMzcsNyBA
QCB2b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTdGF0aWNS
YW5nZT4mJiByYW5nZSkKICAgICBtX2RvY3VtZW50LT5wYWdlKCktPmNocm9tZSgpLnN0b3JlQXBw
SGlnaGxpZ2h0KFdURk1vdmUoaGlnaGxpZ2h0KSk7CiB9CiAKLXZvaWQgQXBwSGlnaGxpZ2h0U3Rv
cmFnZTo6cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBTY3JvbGxUb0hpZ2hsaWdodCBzY3JvbGwpCit2b2lkIEFwcEhpZ2hsaWdodFN0b3Jh
Z2U6OnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIFNjcm9sbFRvSGlnaGxpZ2h0IHNjcm9sbCkKIHsKICAgICBhdXRvIGFw
cEhpZ2hsaWdodFJhbmdlRGF0YSA9IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGJ1ZmZl
cik7CiAgICAgaWYgKCFhcHBIaWdobGlnaHRSYW5nZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKaW5kZXggYjE1
MmY3NmVkNDI0MDg5MmVhN2RlMjFlMmNiMDZkNDcyZDg3MzM2MC4uZTI3NjYzM2I0ODRmODEwOTRh
ZGVjZTQ1ZjY0YWJiZWQxNzgxMjUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaApAQCAtMzksNyArMzksNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCiBjbGFzcyBE
b2N1bWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBTdGF0aWNSYW5nZTsKIGNsYXNzIEhpZ2hsaWdodDsKIApAQCAtNTQsNyArNTQs
NyBAQCBwdWJsaWM6CiAgICAgfkFwcEhpZ2hsaWdodFN0b3JhZ2UoKTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc3RvcmVBcHBIaWdobGlnaHQoUmVmPFN0YXRpY1JhbmdlPiYmKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8U2hh
cmVkQnVmZmVyPiYmLCBTY3JvbGxUb0hpZ2hsaWdodCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIFNjcm9sbFRvSGlnaGxpZ2h0KTsKICAgICB2b2lkIHJlc3RvcmVVbnJlc3RvcmVkQXBw
SGlnaGxpZ2h0cygpOwogICAgIE1vbm90b25pY1RpbWUgbGFzdFJhbmdlU2VhcmNoVGltZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGltZUF0TGFzdFJhbmdlU2VhcmNoOyB9CiAgICAgdm9pZCByZXNldExh
c3RSYW5nZVNlYXJjaFRpbWUoKSB7IG1fdGltZUF0TGFzdFJhbmdlU2VhcmNoID0gTW9ub3Rvbmlj
VGltZTo6bm93KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFm
YjdlZTVjYzg3NDM1NmIzNWExNjgwMzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5
ODVlYzdiOGYwNWUyMjc2NDVjODc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5j
cHAKQEAgLTY4Niw3ICs2ODYsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhp
c3RpbmdJbmRleChJREJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0
ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5i
ZWdpbigpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxp
emVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2Vy
aWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBz
YXZlIGluIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3
NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5v
bi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBh
dGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5r
ZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3
IG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3Is
ICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3Ig
bmV3IG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWMKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0
ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rp
b24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9
IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJs
b2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBh
dGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQ
YXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRl
eCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleElu
Zm8mIGluZm8KIHsKICAgICBoYXNSZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7Cisg
ICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwog
ICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
c2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5IHRvIGNoZWNrIGZvciBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1
MzMsMTMgKzE1MzMsMTMgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRQdXRJbmRleFJlY29yZChpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5k
ZXhlZERCLCAiU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAt
ICVzLCAlcyIsIGtleVZhbHVlLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtl
eS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAg
IGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAg
ICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGlu
ZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eVZhbHVlKTsKKyAgICBhdXRvIHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlW
YWx1ZSk7CiAgICAgaWYgKCF2YWx1ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBzZXJpYWxpemUgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcg
KzE2NjEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2Jq
ZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24g
fHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3Rv
cmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsK
KyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAg
aWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0
MSw3ICsxNzQxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNv
cmQoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2Fj
dGlvbi5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRyYW5zYWN0aW9uKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92
ZWQgZnJvbSB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJv
bSB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3RpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVt
cHQgdG8gc3RvcmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRy
YW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQg
aW4gYW4gb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmpl
Y3Qgc3RvcmUiX3MgfTsKQEAgLTIxMjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNh
Y3RpCiAgICAgYXV0byBrZXkgPSBrZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVs
bCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAg
YXV0byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxv
d2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dl
ciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVu
a25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCBy
YW5nZSJfcyB9OwpAQCAtMjEzMyw3ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkK
ICAgICBrZXkgPSBrZXlSYW5nZS51cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAg
ICAgICBrZXkgPSBJREJLZXlEYXRhOjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBl
ckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVy
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkg
aW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJv
ciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9
OwpAQCAtMjQ0Myw3ICsyNDQzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1
bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFT
U0VSVChrZXkuaXNWYWxpZCgpICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpN
YXggJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAg
YXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29r
IHVwIG9uZSBpbmRleCByZWNvcmQiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXgg
cmVjb3JkIl9zIH07CkBAIC0yNTA4LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Z2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvCiAgICAgb3V0Q291bnQgPSAwOwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2Vy
S2V5LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGxvd2VyS2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShs
b3dlcktleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxv
d2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAg
IH0KIAogICAgIGF1dG8gdXBwZXJLZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktl
eURhdGE6Om1heGltdW0oKSA6IHJhbmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0
byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICgh
dXBwZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVw
cGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3Vw
IHJhbmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5k
ZXggOGJmZTIyN2RiNjE5NjIzYmQ4ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEy
ZGEwYzA5Y2ZlZGZlOWYyZWE2NWE2ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAg
LTI2OSw3ICsyNjksNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRv
IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlm
IChtX3N0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAh
PSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNv
ciBzdGF0ZW1lbnQgKGxvd2VyIGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1
LDcgKzMxNSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4
U3RhdGVtZW50SWZOZWNlc3NhcnkoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkp
OworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICht
X3ByZUluZGV4U3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZm
ZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlk
IGFyZ3VtZW50IHRvIHByZSBzdGF0ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXIuY3BwCmluZGV4IDBhNDY5YmQwYmQxZjM4ZGNiOTZiMzlkOGMzMDAwYWY3M2QxMmFi
NTkuLmM5ZDZkYTZiZGQ5ZjkzOTUwMWY0ZjQyMzJiNGM3ODM3ZDg0MGRhYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5j
cHAKQEAgLTE5Niw3ICsxOTYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVJlY29yZGVyOjpz
dGFydFJlY29yZGluZyhzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0aW1lU2xpYwogICAgIHJldHVy
biB7IH07CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmPEJsb2JFdmVudD4gY3JlYXRlRGF0YUF2YWls
YWJsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUgdGltZUNvZGUp
CitzdGF0aWMgaW5saW5lIFJlZjxCbG9iRXZlbnQ+IGNyZWF0ZURhdGFBdmFpbGFibGVFdmVudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkK
IHsKICAgICBhdXRvIGJsb2IgPSBidWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVmZmVy
LT5leHRyYWN0RGF0YSgpLCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoY29udGV4dCk7CiAgICAg
cmV0dXJuIEJsb2JFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQs
IEJsb2JFdmVudDo6SW5pdCB7IHsgZmFsc2UsIGZhbHNlLCBmYWxzZSB9LCBXVEZNb3ZlKGJsb2Ip
LCB0aW1lQ29kZSB9LCBCbG9iRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCmluZGV4IDc3
MTJiNDQ1MjgzNjdkOGMyNzI1MDJhZGJhYWNhYWY5Nzg4Y2JkYjAuLjFlOWI3NGFiMTdlMzEwOGRi
NDIwOWI5YjRmMDIxNGRhMTFhYzZlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaApAQCAtMTAzLDcgKzEwMyw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaEVycm9yKEV4Y2VwdGlvbiYmKTsKIAogICAgIGVudW0g
Y2xhc3MgVGFrZVByaXZhdGVSZWNvcmRlciB7IE5vLCBZZXMgfTsKLSAgICB1c2luZyBGZXRjaERh
dGFDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT47CisgICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sg
PSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPjsKICAgICB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFD
YWxsYmFjayYmLCBUYWtlUHJpdmF0ZVJlY29yZGVyKTsKIAogICAgIC8vIE1lZGlhU3RyZWFtOjpP
YnNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFNZXRhZGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9N
ZWRpYU1ldGFkYXRhLmNwcAppbmRleCAzZjRjOWJjZDEzM2FjMjlmM2Y3ZGRlMTk5NDc4ZTM5MjU3
ZDVlNjZiLi44NzRhYTdmMGIxOGYwZWU3NTg4MGJhNWY1ZWY2N2Q0N2JmYzJiMmI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRh
LmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIEFydHdvcmtJbWFnZUxvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIC8vIFNhbml0aXplIHRoZSBpbWFnZSBieSBkZWNvZGluZyBpdCBp
bnRvIGEgQml0bWFwSW1hZ2UuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5p
dGl6ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdl
KCktPmRhdGEoKTsKICAgICBhdXRvIGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgp
OwogICAgIGJpdG1hcEltYWdlLT5zZXREYXRhKFdURk1vdmUoYnVmZmVyVG9TYW5pdGl6ZSksIHRy
dWUpOwogICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcElt
YWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IDJiM2Nk
ZTM2MDgyNDcxYzExYzg3ZmNmNjFjYzgxY2MzNjBjMzlkOTAuLmQzNzhhZmM2ZjhhMWI1N2EwMzAy
ZTJjODY4YjI0MGEyMDk3ZmU0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIFNv
dXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCgpCiAgICAgLy8gaHR0cHM6Ly9kdmNz
LnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL3RpcC9tZWRpYS1zb3VyY2UvbWVkaWEtc291
cmNlLmh0bWwjc291cmNlYnVmZmVyLXNlZ21lbnQtcGFyc2VyLWxvb3AKICAgICAvLyBXaGVuIHRo
ZSBzZWdtZW50IHBhcnNlciBsb29wIGFsZ29yaXRobSBpcyBpbnZva2VkLCBydW4gdGhlIGZvbGxv
d2luZyBzdGVwczoKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFwcGVuZERhdGEgPSBXVEZN
b3ZlKG1fcGVuZGluZ0FwcGVuZERhdGEpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBhcHBlbmREYXRhID0gV1RGTW92ZShtX3BlbmRpbmdBcHBlbmREYXRhKTsKICAgICAvLyAx
LiBMb29wIFRvcDogSWYgdGhlIGlucHV0IGJ1ZmZlciBpcyBlbXB0eSwgdGhlbiBqdW1wIHRvIHRo
ZSBuZWVkIG1vcmUgZGF0YSBzdGVwIGJlbG93LgogICAgIGlmICghYXBwZW5kRGF0YSB8fCAhYXBw
ZW5kRGF0YS0+c2l6ZSgpKSB7CiAgICAgICAgIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21w
bGV0ZShBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2NlZWRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAppbmRleCA1MjBjMDc3NTY5NmEy
ZjBlMmU3MzAwNzM1ZThjOTc3NDk1ZjFhNjE0Li5kNGM4NTc5YzBiYmQ0NDNhNTEyZmE5ZjY4YzQy
N2VjMDQ4ODVkMGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmgKQEAgLTIyMiw3ICsyMjIsNyBAQCBwcml2YXRlOgogCiAgICAgV1RG
OjpPYnNlcnZlcjx2b2lkKigpPiBtX29wYXF1ZVJvb3RQcm92aWRlcjsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fcGVuZGluZ0FwcGVuZERhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IG1fcGVuZGluZ0FwcGVuZERhdGE7CiAgICAgVGltZXIgbV9hcHBlbmRCdWZm
ZXJUaW1lcjsKIAogICAgIFJlZlB0cjxWaWRlb1RyYWNrTGlzdD4gbV92aWRlb1RyYWNrczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAppbmRleCBmZWIxYjhmZmZiN2I5NGM5ZTdl
YjBiZTQ4YWQzNWRkNzA3OWM3MGJiLi5jYzVhODY1NzMwNTY1N2QwYTk3MDU2NjFlNGJiNDljZTBi
ODQwNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCkBAIC04Miw3ICs4
Miw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCgpCiAg
ICAgbV9pc1JlYWR5VG9TZW5kID0gdHJ1ZTsKIAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1f
cGVuZGluZ01lc3NhZ2VzKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3Rl
SWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPmRhdGEoKSwgbWVzc2Fn
ZS5idWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1v
dGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsKICAgICBtX3BlbmRpbmdNZXNz
YWdlcy5jbGVhcigpOwogCiAgICAgaWYgKG1faXNQZW5kaW5nQ2xvc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuaAppbmRleCBmNTgyN2RmOTM3OTQ5M2QyODEyNzAxNzdjY2ZiY2EwNTUx
NTMyMzFmLi43Mzk0MmE4MzU5MzFhOWQyODRjNmE0NTFiYjhkYmZiNTc2NWNhZGFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OwogY2xhc3MgUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbjsKIGNsYXNzIFJUQ0Vycm9yOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyIGZpbmFsIDogcHVibGljIFJUQ0RhdGFDaGFubmVsSGFu
ZGxlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcj4g
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRl
OgogCiAgICAgc3RydWN0IE1lc3NhZ2UgewogICAgICAgICBib29sIGlzUmF3IHsgZmFsc2UgfTsK
LSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIH07CiAgICAgVmVjdG9yPE1lc3NhZ2U+IG1fcGVu
ZGluZ01lc3NhZ2VzOwogICAgIGJvb2wgbV9pc1BlbmRpbmdDbG9zZSB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAppbmRleCAz
ZTExMDU0MDAzNTNkZTU2MGYyNDkzOGE5YjIwOGVmMzZmNjgwM2M0Li4zY2VlZDBhMDExZTdiNTQ2
ZmFkZGY0OGJiZGEyMTFkZmRkNTI0YzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTk3LDggKzk3LDggQEAgdm9pZCBMaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGll
bnQmIGNsaWVudCwKICAgICBtX2NvbnRleHRJZGVudGlmaWVyID0gY29udGV4dElkZW50aWZpZXI7
CiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2FnZXMpIHsKLSAgICAg
ICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRhKSB7Ci0gICAg
ICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOworICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBbJl0oUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiBkYXRhKSB7CisgICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogICAgICAgICB9LCBb
Jl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVN0cmluZ0Rh
dGEodGV4dCk7CiAgICAgICAgIH0sIFsmXShTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAppbmRleCA0MWY5
NTI4MjFlNjIwMDkzZjhlZWZlMzJjNWVkNGFlMGY1ZTU0MTk3Li4xMWJkNDVkZTkxNTU3NzlmZmM5
ZWZiMDNlOTU1MjhmMDVlNjRkNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIuaApAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogICAgICAgICBS
VENEYXRhQ2hhbm5lbFN0YXRlIHN0YXRlOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPHdlYnJ0Yzo6
UlRDRXJyb3I+IGVycm9yOwogICAgIH07Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFu
dDxTdGF0ZUNoYW5nZSwgU3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgTWVz
c2FnZSA9IHN0ZDo6dmFyaWFudDxTdGF0ZUNoYW5nZSwgU3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+OwogICAgIHVzaW5nIFBlbmRpbmdNZXNzYWdlcyA9IFZlY3RvcjxNZXNzYWdl
PjsKICAgICB2b2lkIHN0b3JlTWVzc2FnZShQZW5kaW5nTWVzc2FnZXMmLCBjb25zdCB3ZWJydGM6
OkRhdGFCdWZmZXImKTsKICAgICB2b2lkIHByb2Nlc3NNZXNzYWdlKGNvbnN0IHdlYnJ0Yzo6RGF0
YUJ1ZmZlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDMwOWMwMjY0M2Y1YTdhZTlmZWMwOGEx
NGViMjEyMjQwOWIxZjg5ZTAuLjI3YTZkNzAzMzRjYTMyMDZhOTRlOTE5OTQzMzYzN2M0YTMwNTJl
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEhUTUxNb2Rl
bEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fc291cmNlVVJM
ID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBtX2RhdGEucmVzZXQoKTsKICAg
ICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYgKG1fcmVzb3VyY2UpIHsKQEAgLTE0
OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBV
UkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7CiAKICAgICBtX3Jlc291cmNlID0g
cmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMpOwpAQCAt
MTgwLDggKzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzCiB2b2lkIEhUTUxNb2RlbEVs
ZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2Us
ICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICBtX2Rh
dGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRh
dGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKQEAgLTE5
NSw3ICsxOTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH07CiAKICAgICBpZiAo
cmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewotICAgICAgICBtX2RhdGEgPSBudWxs
cHRyOworICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAgICAgICBpbnZhbGlkYXRlUmVzb3Vy
Y2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0yMDQsNyArMjAzLDcgQEAgdm9pZCBI
VE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRydWU7Ci0g
ICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCkuZ2V0KCks
IHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9k
ZWw6OmNyZWF0ZShtX2RhdGEudGFrZUFzQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1l
VHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVB
bmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAwNWExY2RhYTNlMTQ4Nzdh
MGFlNDY1YjYzNDlhYTViYmIxYWYyYzgyLi5jZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFl
NmU4NTgwM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgog
CiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJh
d1Jlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8TW9kZWw+IG1fbW9k
ZWw7CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAgICAgYm9v
bCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbSBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1v
ZGVsTG9hZGVyVVNELm1tCmluZGV4IDNlODJhYzIyMTY3OTZjOWVkYjc2MGExOWVkN2FjZTFmNDJj
ZDM3NzcuLjEzMDNlYzRkMjU2OGE2NmY4N2Q3ZmViMjBiZjJiMDMzOTIzMmMzYzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtp
dE1vZGVsTG9hZGVyVVNELm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0xMDQsNyArMTA0LDcg
QEAgc3RhdGljIFJldGFpblB0cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZpbGUoV2ViQ29yZTo6
TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVu
VGVtcG9yYXJ5RmlsZSgiTW9kZWxGaWxlIiwgZmlsZUhhbmRsZSwgIi51c2R6Iik7CiAgICAgQVNT
RVJUKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOwogCi0gICAgc2l6ZV90
IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIG1vZGVsU291
cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgc2l6
ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIG1vZGVs
U291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRh
KCktPnNpemUoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChieXRlQ291bnQsIGJ5dGVDb3VudCA9PSBt
b2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZp
bGVIYW5kbGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW1TaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW1TaW5rLmgKaW5kZXggMGI4OThmNmFkYjU3ZWIyNWRjNDkzN2Q4MWZmNWQxNGQ1
Mjk3NmM4NC4uZDUxNzNmYmY4YjQwMzQxYzVjZjhkOGE0ZjU1ZWVhYzhmZjgzOGEzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsu
aApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNv
dXJjZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFtOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUmVhZGFibGVTdHJlYW1TaW5rIDogcHVi
bGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1TaW5rPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIu
aAppbmRleCBjNDUyYzgzZmJkNWNlODk1YmRkMDMxYWNmMTQ2OGY3ODY1MDYyMmQ3Li5iOGI3Nzg1
ZjkxZDA2OGMyYTQ2Y2ViMWQ2NTk3NThmY2Y4YjY5ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAgLTUx
LDEzICs1MSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX3NjcmlwdEJ1ZmZlci5pc0VtcHR5
KCkpCiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAorICAgICAgICBpZiAoIW1f
Y29udGlndW91c0J1ZmZlciAmJiAoIW1fY29udGFpbnNPbmx5QVNDSUkgfHwgKm1fY29udGFpbnNP
bmx5QVNDSUkpKQorICAgICAgICAgICAgbV9jb250aWd1b3VzQnVmZmVyID0gbV9zY3JpcHRCdWZm
ZXIuYnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIGlmICghbV9jb250YWluc09u
bHlBU0NJSSkgewotICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNB
cmVBbGxBU0NJSShtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZl
ci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBj
aGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0
QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25s
eUFTQ0lJKQotICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29t
cHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwg
bV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9zY3Jp
cHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2NvbnRp
Z3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAg
cmV0dXJuIHsgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CisgICAgICAgICAgICBy
ZXR1cm4geyBtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CiAKICAgICAgICAgaWYgKCFtX2Nh
Y2hlZFNjcmlwdFN0cmluZykgewogICAgICAgICAgICAgbV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBt
X3NjcmlwdEJ1ZmZlci50b1N0cmluZygpOwpAQCAtODEsNiArODMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgbV9zY3JpcHRCdWZmZXIgPSBzY3JpcHRCdWZmZXI7
CisgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG51bGxwdHI7CiAgICAgfQogCiBwcml2YXRl
OgpAQCAtOTEsNiArOTQsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFNjcmlwdEJ1ZmZlciBt
X3NjcmlwdEJ1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udGln
dW91c0J1ZmZlcjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAg
ICBtdXRhYmxlIFN0cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggN2U0OWE5ZTczMjI2
YjY1Y2MyOGJmNTk0ODEzYjBmODNiMjY5ZDIyYi4uZWYzN2YxZDBjYTQ2MmJiOWI3YzliNmE1NWQx
OGViYjRjMTE4MWE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgRGV0YWNoZWRPZmZz
Y3JlZW5DYW52YXM7CiBjbGFzcyBJREJWYWx1ZTsKIGNsYXNzIE1lc3NhZ2VQb3J0OwogY2xhc3Mg
SW1hZ2VCaXRtYXBCYWNraW5nOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgU2VyaWFsaXphdGlvblJldHVybkNvZGU7CiAKIGVu
dW0gY2xhc3MgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB7IE5vblRocm93aW5nLCBUaHJvd2luZyB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVl
NWYzNzgyZmJiMjMxMjNiMmRkM2E1N2ExNzI4Li4xMDhlNmM4NzY3ZDBkMmZkYWNiZTY1MDRlYmM1
MDcwZTg4MmJlNjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAt
MzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwog
Y2xhc3MgQ1NTRm9udFNlbGVjdG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1l
bnQ7CiBjbGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKQEAgLTQyLDcgKzQz
LDYgQEAgY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZp
ZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKIGNsYXNzIFNWR0Zv
bnRGYWNlRWxlbWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdz
PGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAK
aW5kZXggMWRlYWM0ZjQxY2Y0OWYxZjg4MmRjY2VmZDQ4Y2Y2YTk3MzJmM2VkOS4uYzQyZWMwNTFm
ZTExZWJhMTRmODEzMzU5ZDhkMTdhMmMyODE2NjRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFu
c2Zlci5jcHAKQEAgLTQwMiw3ICs0MDIsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVUeXBlUmVh
ZGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgICAgICB0eXBlcy5hZGQoRmls
ZTo6Y29udGVudFR5cGVGb3JGaWxlKGZpbGVuYW1lKSk7CiAgICAgfQogCi0gICAgdm9pZCByZWFk
QnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJikKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKICAgICB7CiAgICAgICAgIHR5cGVz
LmFkZCh0eXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTcyNGNm
MGU1MGJhYTViOWIyNDEzMDQ4MWVlNzI0Y2I3ODIwN2FhNC4uYzVlOWUyNmIzNzJhZTY4M2YxODY4
ZTkyMGM0NWVkNzBlZGY1NTQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDEz
Myw3ICs0MTMzLDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0
YWNobWVudEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4geyBhdHRhY2htZW50LT51
bmlxdWVJZGVudGlmaWVyKCksIFdURk1vdmUoYWRkaXRpb25hbFR5cGVzKSwgV1RGTW92ZShhZGRp
dGlvbmFsRGF0YSkgfTsKIH0KIAotdm9pZCBFZGl0b3I6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50
aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRh
dGEpCit2b2lkIEVkaXRvcjo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
cHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7
CiAgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQogICAgICAgICBjbGllbnQt
PnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoaWRlbnRpZmllciwgY29udGVudFR5cGUsIHBy
ZWZlcnJlZEZpbGVOYW1lLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmlu
ZGV4IDAxZmUwYjVlMDQ0ZWY2M2YyNmE3MWI0NzJlZjk4YjExYzIyOGI5MWMuLjFkMDcxNmM1Yjkz
YzhiYjdhZDczZjQxNzRjYTgwNDU5MDVmOTE5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApA
QCAtNTcsOSArNTcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOwogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwotY2xhc3MgRGF0YVRyYW5z
ZmVyOwogY2xhc3MgQ29tcG9zaXRlRWRpdENvbW1hbmQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBj
bGFzcyBDdXN0b21VbmRvU3RlcDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1
dHRvbkNvbnRyb2xsZXI7CiBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29t
cG9zaXRpb247CkBAIC03NCw3ICs3NSw3IEBAIGNsYXNzIEtpbGxSaW5nOwogY2xhc3MgUGFzdGVi
b2FyZDsKIGNsYXNzIFBhc3RlYm9hcmRXcml0ZXJEYXRhOwogY2xhc3MgUmVuZGVyTGF5ZXI7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3Mg
Rm9udDsKIGNsYXNzIFNwZWxsQ2hlY2tSZXF1ZXN0OwogY2xhc3MgU3BlbGxDaGVja2VyOwpAQCAt
NTYzLDcgKzU2NCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgZmlsZURhdGEpOworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHBy
ZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBmaWxlRGF0YSk7
CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVu
dERhdGE+JiYpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCmluZGV4IDA4YWExMjQy
NjYyMGY3Njk1M2E3OWIzNGVkZTVmNmRmMDUyN2IwMTUuLjk1N2I0ZmQ0YTU1N2ZjODFjZDMwNjll
ZWFjYjg5NDg4YTk0N2I3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29udGVudFJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJl
YWRlci5oCkBAIC03MiwxNiArNzIsMTYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlYWRGaWxlUGF0
aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNp
emUgPSB7IH0sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUgPSB7IH0pIG92ZXJyaWRlOwogICAg
IGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlOwogICAg
IGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkSW1h
Z2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25T
aXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOworICAgIGJvb2wg
cmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5
cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3Zl
cnJpZGU7CiAgICAgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUp
IG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCByZWFkV2ViQXJjaGl2
ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
LSAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRh
dGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURkQoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFBy
ZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7
CiAjZW5kaWYKIH07CiAKQEAgLTk5LDE2ICs5OSwxNiBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVh
ZEZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0
cmluZyYgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkRmls
ZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICBib29sIHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVh
ZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNp
emUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCByZWFkSW1hZ2Uo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlv
blNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkVVJM
KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFy
Y2hpdmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGRChTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7Ci0gICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3Zl
cnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCmluZGV4IDU0
OWViN2QyZTRjMDc1NDhlNGE4YzllYTI0ZWMyMGU0ZjIxYmZhMjUuLjExN2RiYTY4ZWRiMGJkNGI2
YzMwZTA5NDg1ZDlkMGMwZjI5YzM4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAg
dm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRGaWxlbmFtZShjb25zdCBTdHJp
bmcmIGZpbGVuYW1lKQogICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoY29udGV4dC5nZXQo
KSwgZmlsZW5hbWUpKTsKIH0KIAotdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJl
YWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVy
OjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGZpbGVzLmFwcGVu
ZChGaWxlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgQmxvYjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCks
IGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSwgdHlwZSksIGZpbGVuYW1lKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAppbmRl
eCA1YzUyOWRkN2M4ZWNjMDAwNDhmY2I0ZDE1ODE0NjM1YjI0ZDkwYmI3Li45ZDgxNjA1ZjE5OTI5
OGYxOWMwZWQ2OTk1ZmUzYmQ3NzgzMDM0ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAg
c3RydWN0IFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxl
UmVhZGVyIHsKICAgICB+V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCk7CiAKICAgICB2b2lk
IHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CiAKICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29udGV4dDsKICAgICBW
ZWN0b3I8UmVmPEZpbGU+PiBmaWxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbQppbmRleCBkNDhlMTFjOTZiNzgwOGY4ODM1NGIzYjA3NDdlZWIxZjFl
MzdlM2YzLi4wNzgyNDgzNjJhYTA1NGRjM2FiMDAwMDQ1MTcxODQxOThhNTgwZjc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0xMjczLDcg
KzEyNzMsNyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudChF
bGVtZW50JiBlbGVtZW50LCBOU1VSTCAqdXJsLCBCT09MCiAgICAgICAgIGlmIChhdXRvIHJlc291
cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UodXJsKSkgewogICAgICAgICAgICAgYXV0byYg
bWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgICAgIGlmICghdXNlUGxh
Y2Vob2xkZXIgfHwgbWltZVR5cGUgIT0gInRleHQvaHRtbCIpIHsKLSAgICAgICAgICAgICAgICBm
aWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZp
bGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwor
ICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxs
b2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICAgICAgW2ZpbGVX
cmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBl
KHVybCwgbWltZVR5cGUpXTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG5v
dEZvdW5kID0gWUVTOwpAQCAtMjMwMCw3ICsyMzAwLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0Zp
bGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExvYWRlciogZGF0YVNvdXJjZSwg
TlMKIAogICAgIGlmIChkYXRhU291cmNlKSB7CiAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPiByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKFVSTCkpIHsKLSAgICAg
ICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0
UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOworICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBw
ZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICBOU1N0
cmluZyAqZmlsZW5hbWUgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgp
OwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSB8fCAhW2ZpbGVuYW1lIGxlbmd0aF0pCiAgICAg
ICAgICAgICAgICAgZmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShyZXNv
dXJjZS0+dXJsKCksIHJlc291cmNlLT5taW1lVHlwZSgpKTsKQEAgLTIzMjIsOCArMjMyMiw4IEBA
IHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1l
bnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+
IGZpbGVXcmFwcGVyRm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAg
IGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCkpIHsK
LSAgICAgICAgaWYgKFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJl
c291cmNlQnVmZmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBw
ZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPmNyZWF0
ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGlmIChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBz
aGFyZWRCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKKyAgICAgICAgICAg
IHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0
aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldKTsKICAgICB9CiAKICAgICBhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJl
YWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVh
ZGVyQ29jb2EubW0KaW5kZXggNmFhM2NkNTRlODJiOTliMzE5NDI3YmVlMzRjOGM0NGI2NzllMjI3
OS4uNzZiMWEwMDlkZTQzMGZhM2I1NGQ5YTE1ZTY3OGNkODNmMzE0NWZlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0K
QEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgYm9vbCBzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2ht
ZW50RGF0YShjb25zdCBGcmFtZSYgZnJhbWUpCiAKICNlbmRpZgogCi1zdGF0aWMgUmVmPERvY3Vt
ZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFt
ZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQorc3Rh
dGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVu
dChGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkb2N1bWVudCwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBQcmVzZW50YXRpb25T
aXplIHByZWZlcnJlZFNpemUpCiB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAg
ICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFt
ZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMg
dm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1
bWVudEZyYWdtZW50JiBmcgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byYg
cmVzb3VyY2UgPSByZXNvdXJjZUVudHJ5LT52YWx1ZTsKLSAgICAgICAgc2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhLmFwcGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJj
ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPmRhdGEoKSB9KTsKKyAgICAgICAgc2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhLmFwcGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNv
dXJjZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpIH0pOwog
ICAgIH0KIAogICAgIGlmICghc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmlzRW1wdHkoKSkKQEAg
LTMzMiw3ICszMzIsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNo
bWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFt
ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0gIm1lZGlhIl9zOwogCi0gICAgICAgIGF0
dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52
YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIGltYWdlIH0pOworICAg
ICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNv
dXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250
aWd1b3VzKCksIGltYWdlIH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVz
Y2VuZGFudHNPZlR5cGU8SFRNTE9iamVjdEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzUwLDcg
KzM1MCw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhG
cmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAiZmlsZSJfczsKIAotICAgICAgICBhdHRhY2htZW50
SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1p
bWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CisgICAgICAgIGF0
dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52
YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMo
KSwgb2JqZWN0IH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgaW5mbyA6IGF0dGFjaG1lbnRJ
bnNlcnRpb25JbmZvKSB7CkBAIC00MjgsNyArNDI4LDcgQEAgc3RydWN0IE1hcmt1cEFuZEFyY2hp
dmUgewogICAgIFJlZjxBcmNoaXZlPiBhcmNoaXZlOwogfTsKIAotc3RhdGljIHN0ZDo6b3B0aW9u
YWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hv
d01JTUVUeXBlQXNIVE1MKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4g
ZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFz
SFRNTCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoVVJM
KCksIGJ1ZmZlcik7CiAgICAgaWYgKCFhcmNoaXZlKQpAQCAtNDQyLDcgKzQ0Miw3IEBAIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZl
KFNoYXJlZEJ1ZmZlciYgYnVmCiAgICAgaWYgKCFjYW5TaG93TUlNRVR5cGVBc0hUTUwodHlwZSkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gTWFya3VwQW5kQXJj
aGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtYWlu
UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwg
YXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07CisgICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUg
eyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVh
c2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9OwogfQogCiBzdGF0aWMgU3Ry
aW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVz
dGluYXRpb25Eb2N1bWVudCwgTWFya3VwQW5kQXJjaGl2ZSYgbWFya3VwQW5kQXJjaGl2ZSwgTVNP
TGlzdFF1aXJrcyBtc29MaXN0UXVpcmtzLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3Qg
U3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKQEAgLTQ4MSw3ICs0ODEsNyBAQCBzdGF0
aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVu
dCYgZGVzdGluYXRpb25Eb2N1bQogICAgICAgICBpZiAoIXNob3VsZFJlcGxhY2VTdWJyZXNvdXJj
ZVVSTChzdWJmcmFtZVVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBNYXJr
dXBBbmRBcmNoaXZlIHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9tVVRGOChzdWJmcmFt
ZU1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEo
KS5zaXplKCkpLAorICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1lQ29udGVudCA9IHsg
U3RyaW5nOjpmcm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLAogICAg
ICAgICAgICAgc3ViZnJhbWVNYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgc3ViZnJhbWVB
cmNoaXZlLmNvcHlSZWYoKSB9OwogICAgICAgICBhdXRvIHN1YmZyYW1lTWFya3VwID0gc2FuaXRp
emVNYXJrdXBXaXRoQXJjaGl2ZShmcmFtZSwgZGVzdGluYXRpb25Eb2N1bWVudCwgc3ViZnJhbWVD
b250ZW50LCBNU09MaXN0UXVpcmtzOjpEaXNhYmxlZCwgY2FuU2hvd01JTUVUeXBlQXNIVE1MKTsK
IApAQCAtNDk3LDcgKzQ5Nyw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJj
aGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgcmV0dXJu
IHNhbml0aXplZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChXVEZNb3ZlKGZyYWdtZW50KSwg
KnN0YWdpbmdEb2N1bWVudCwgbXNvTGlzdFF1aXJrcywgbWFya3VwQW5kQXJjaGl2ZS5tYXJrdXAp
OwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJl
ZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtNTMyLDcgKzUzMiw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVh
ZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYxMiwxMiArNjEyLDEyIEBAIGJvb2wgV2Vi
Q29udGVudE1hcmt1cFJlYWRlcjo6cmVhZEhUTUwoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAg
cmV0dXJuICFtYXJrdXAuaXNFbXB0eSgpOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJl
YWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
UlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNl
dHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBh
ZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpu
dWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3Vy
Y2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTYyNiwxMSArNjI2LDExIEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6
cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIp
Citib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1l
bnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAg
ICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0
cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNjM5LDEyICs2MzksMTIgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRG
RChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJD
b250ZW50UmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250
ZW50UmVhZGVyOjpyZWFkUlRGKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBk
b2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhb
W05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7
CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1l
LCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTY1MywxMSArNjUzLDExIEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250
ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJD
b250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6
bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmlu
ZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVu
dCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwog
ICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY3Niw3ICs2NzYs
NyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0
ZXh0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJ
bWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVz
ZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRJbWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplKQogewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVu
dCA9ICpmcmFtZS5kb2N1bWVudCgpOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogICAgIHJldHVybiBhdHRhY2htZW50OwogfQogCi1zdGF0aWMg
UmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5h
bWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkU2l6ZSkKK3N0YXRpYyBSZWY8SFRNTEVsZW1l
bnQ+IGF0dGFjaG1lbnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUs
IFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkU2l6ZSkKIHsKICAgICBSZWYgZG9jdW1lbnQgPSAq
ZnJhbWUuZG9jdW1lbnQoKTsKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVs
ZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKQEAgLTgz
Myw3ICs4MzMsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZl
cnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVm
ZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9u
U2l6ZSkKIHsKICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRl
ckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3Rr
LmNwcAppbmRleCA2MDQ4NmU3MWFkNTlmZWNjNzE1ZmYwYTA5YjFjMzU1OGI3YjM0MmMyLi5kM2U5
ODE5YmQ1MzFmODQ4NmEzMTdhYjlmOWVkODNhOTg4NWJlMmJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNzEsNyArNzEs
NyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0
ZXh0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJ
bWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVz
ZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRJbWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplKQogewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVu
dCA9ICpmcmFtZS5kb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCA0NWQ5MzNlMTNj
YTRkMjI1MWM1ZGVkODQ4YWE5ZTk4NzJjNzY3NDg5Li5iY2E2Njk2ZWJlNmYwZWRkZGRlZTc5Yjcz
YzNlZTE0NDk2ZDgyZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaApAQCAtNTMsNyArNTMsNyBAQCBj
bGFzcyBCbG9iTG9hZGVyOwogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgUmVhZGFibGVT
dHJlYW07CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IGNs
YXNzIEV4Y2VwdGlvbk9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05l
dHdvcmtTZW5kUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1
ZXVlLmNwcAppbmRleCA1NTllYmNjNDhjNWYwOTZhYzE5YmFlN2Q5ZjcxOGI3MWYyYTM1MzIyLi40
MmY0MTgwZGZhODQyN2UwZTYwZjgxZWI3OWIxOTE4N2NhZmRiYTFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBO
ZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVzc2FnZXMoKQogICAgICAgICBib29sIHNob3VsZFN0
b3BQcm9jZXNzaW5nID0gZmFsc2U7CiAgICAgICAgIHN3aXRjaE9uKG1fcXVldWUuZmlyc3QoKSwg
W3RoaXNdKGNvbnN0IENTdHJpbmcmIHV0ZjgpIHsKICAgICAgICAgICAgIG1fd3JpdGVTdHJpbmco
dXRmOCk7Ci0gICAgICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgeworICAg
ICAgICB9LCBbdGhpc10oUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CiAgICAg
ICAgICAgICBkYXRhLT5mb3JFYWNoU2VnbWVudChtX3dyaXRlUmF3RGF0YSk7CiAgICAgICAgIH0s
IFt0aGlzLCAmc2hvdWxkU3RvcFByb2Nlc3NpbmddKFVuaXF1ZVJlZjxCbG9iTG9hZGVyPiYgbG9h
ZGVyKSB7CiAgICAgICAgICAgICBhdXRvIGVycm9yQ29kZSA9IGxvYWRlci0+ZXJyb3JDb2RlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCmluZGV4IDU1MWY3MGY5
MTY3YjJiZmNiMjQ0YmIyYjM3MDBiZmJhYWY1NDc5NmMuLmQyM2NmZWJiNDUwOGJjMzAwOTE1YmI5
OTZkM2YxNTA2MmNlMzUwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0
d29ya1NlbmRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRR
dWV1ZS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxv
YjsKIGNsYXNzIEJsb2JMb2FkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBOZXR3b3JrU2VuZFF1ZXVl
IDogcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKQEAgLTYzLDcg
KzYzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NNZXNzYWdlcygpOwog
Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxDU3RyaW5nLCBSZWY8U2hhcmVkQnVm
ZmVyPiwgVW5pcXVlUmVmPEJsb2JMb2FkZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2
YXJpYW50PENTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgVW5pcXVlUmVmPEJs
b2JMb2FkZXI+PjsKICAgICBEZXF1ZTxNZXNzYWdlPiBtX3F1ZXVlOwogCiAgICAgV3JpdGVTdHJp
bmcgbV93cml0ZVN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmNwcAppbmRleCA1NmEwNmZjYWYyNzNkMjVkYzRjNzVkY2U1NjlhYWM4ZjFhYTU5NTI3
Li5kMmI4NzQxYTA0NDM0MmM3ZmZkOWU4YTUzM2NjOGExMjBlMjliYWQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0yMjcsNyArMjI3LDcg
QEAgc3RhdGljIGJvb2wgbWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VBdHRhY2htZW50
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6Omlz
U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShtaW1lVHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNQ
REZNSU1FVHlwZShtaW1lVHlwZSk7CiB9CiAKLXZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1
cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVw
ZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGF1dG8qIGhvc3RFbGVt
ZW50ID0gc2hhZG93SG9zdCgpOwogICAgIGlmICghaXM8SFRNTEltYWdlRWxlbWVudD4oaG9zdEVs
ZW1lbnQpIHx8ICFidWZmZXItPnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRh
Y2htZW50RWxlbWVudC5oCmluZGV4IDU3M2VjMmVhZTFjZGMwNjA5ZjI2MWMzODQwMGJiMDJjNDgw
ZjdiZGQuLjY2MWRlYzkzNzZkOGE5ZDZkNDcxN2ZkMGI0Y2U3ZjgyZmYwM2Y3NTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaApAQCAtMzYsNyArMzYsNyBA
QCBjbGFzcyBGaWxlOwogY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIFJlbmRlckF0dGFj
aG1lbnQ7CiBjbGFzcyBTaGFyZWFibGVCaXRtYXA7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1lbnQg
ZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
SFRNTEF0dGFjaG1lbnRFbGVtZW50KTsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZv
aWQgY29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50Jikg
ZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUF0dHJpYnV0ZXMoc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4mJiBuZXdGaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50
VHlwZSwgY29uc3QgU3RyaW5nJiBuZXdGaWxlbmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRh
dGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
dXBkYXRlVGh1bWJuYWlsKGNvbnN0IFJlZlB0cjxJbWFnZT4mIHRodW1ibmFpbCk7CiAKICAgICBJ
bnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25U
eXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAppbmRleCBlYzgzNTFjMDk3NzQ4YjE0OWE5NDQzOWJhYjY5NTc4ZWU5MDAxYTBl
Li41NjRjMzE1MjllNjljMzY1YWZkZjk3OGU5MjFkMTg1ODQ3ZDQyNWZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTI5MzksNyArMjkzOSw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6Y2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vz
c2FyeSgpCiAgICAgYXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpOwogfQogCi12
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25E
YXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgaW5pdERhdGEpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVk
SW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIG1lZGlhUGxheWVy
SW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0YS0+dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCmluZGV4IDZiNDA0YWE4NzM1Mjc3N2I0NzE4MzVmMTIwZmYxNTdjZWVkODRhNjkuLjkxMjhi
Y2RiZWU1OWQ1ZmQxNzIyZTc0NzE5OGQ1NjI2NGM2ZWY4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCkBAIC03MjEsNyArNzIxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8v
IENETUNsaWVudAogICAgIHZvaWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5l
Y2Vzc2FyeSgpIGZpbmFsOwotICAgIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXph
dGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKKyAgICB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2
ZWQoY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwog
I2VuZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDc3
Y2Q0ZjM4MGUyODMyMGU1NDQ0ZjkzOWNhYWQ2MDAzYWFmZTgxZGIuLjQzNzBkNjgxODcyZDk1YzEw
YzBmNGU5NTllMTQ3NDM5YWQ1NzQ0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50
LmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6dXBkYXRlRHVyaW5n
UGFyc2luZygpCiAgICAgaWYgKCFtX2ltYWdlRWxlbWVudCkKICAgICAgICAgY3JlYXRlRG9jdW1l
bnRTdHJ1Y3R1cmUoKTsKIAotICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBs
b2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpKQorICAgIGlmIChSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSkKICAgICAg
ICAgbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCktPnVwZGF0ZUJ1ZmZlcigqYnVmZmVyKTsK
IAogICAgIGltYWdlVXBkYXRlZCgpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgSW1hZ2VEb2N1
bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKIHsKICAgICBpZiAoIXBhcnNlcigpLT5pc1N0b3BwZWQo
KSAmJiBtX2ltYWdlRWxlbWVudCkgewogICAgICAgICBDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2Ug
PSAqbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCk7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGRhdGEgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOworICAgICAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VE
YXRhKCk7CiAKICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIG11bHRpcGFydCBpbWFnZSwgbWFrZSBh
IGNvcHkgb2YgdGhlIGN1cnJlbnQgcGFydCwgc2luY2UgdGhlIHJlc291cmNlIGRhdGEKICAgICAg
ICAgLy8gd2lsbCBiZSBvdmVyd3JpdHRlbiBieSB0aGUgbmV4dCBwYXJ0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRl
eCBhN2NhNzE2MmQ3OTFlZDdmYmE4Y2M5MWMyMWEyY2YzYWY2ZTY5YTdlLi4xODc5M2ZmMDY2MzM4
ZmI2MGEzNGRlYzkwOWJjMmRkZDI4YmVhZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtODUwLDcgKzg1MCw3
IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJj
ZXB0UmVxdWVzdChsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhh
bmRsZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBu
ZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkK
ICAgICAgICAgbmV0d29ya0FnZW50LT5pbnRlcmNlcHRSZXNwb25zZShyZXNwb25zZSwgaWRlbnRp
ZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggOGU2NWM0ZWIxMDIzMzUyMWY0OGM3
ZjRiMTIwYWQyYzg5MDlhMDdiYS4uZDI5NTc4MTBkODM4MmM5MzUxZDVhOTNmMTQ0YWVkMTQ5M2Jj
YzY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaApAQCAtOTMsNyArOTMsNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwog
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xh
c3MgU2hhZG93Um9vdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBUaW1lckJhc2U7CiBjbGFzcyBXZWJLaXROYW1lZEZsb3c7CiBjbGFz
cyBXZWJTb2NrZXRDaGFubmVsOwpAQCAtMjM2LDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29u
c3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgaW50
ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik+JiYpOwotICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0
IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShj
b25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYpOwogCiAgICAgc3RhdGljIHZvaWQgYWRk
TWVzc2FnZVRvQ29uc29sZShQYWdlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KTsKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1l
c3NhZ2U+KTsKQEAgLTQ0MSw3ICs0NDEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHNo
b3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUlt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBz
dGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVz
b3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsK
LSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2
b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBzdGQ6OnVu
aXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwogCkBAIC0xMjg5LDcgKzEyODks
NyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVl
c3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgRgogICAgICAgICBpbnRlcmNlcHRSZXF1ZXN0SW1w
bCgqYWdlbnRzLCBsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi1pbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBm
cmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK2lubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUm
IGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikK
IHsKICAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRS
ZXNwb25zZShmcmFtZSwgcmVzcG9uc2UpKTsKICAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50cyhmcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCmluZGV4IDYxZTRiYzNi
YTAxOWVlMjVlNWM4YmMyMjFkZmY2MDc3ZWRkYjg2M2QuLmYwNjQwM2E2MjM0YjQyYjZhZDJhODBi
MDE5NGE1OTZkODlmNmU2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCkBAIC00NSw3ICs0NSw3
IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0
SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImIGxvCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjppbnRlcmNlcHRSZXF1ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFs
KGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJl
c291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxl
cikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25z
ZUludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpp
bnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UsIGlkZW50aWZpZXIsIFdURk1vdmUoaGFu
ZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbldlYktpdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCmluZGV4IGY3NjExNGNlOThmNDJhN2ZmOTA2YTQ4
ZDA0MjBiOTYzMDVkMzY5MTQuLjA3YjQyMWI1OWMxNTU1ZTFhMjkxZTE4ZWJiMjYyMjEyMmYxNjU4
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKQEAgLTM2LDIwICszNiwyMCBAQCBjbGFzcyBGcmFtZTsK
IGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVz
dChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29s
IHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXIm
LCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMg
dm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3Rh
dGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4p
PiYmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0
SW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0
aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3RJ
bnRlcm5hbChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Jik+JiYpOwotICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29u
c3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNl
SW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIH07CiAKIGlubGlu
ZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVx
dWVzdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
QEAgLTc2LDcgKzc2LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2Vi
S2l0OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2EKICAgICBpbnRlcmNlcHRS
ZXF1ZXN0SW50ZXJuYWwobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShjb25z
dCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCitp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3Bv
bnNlKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldl
YktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAgaW50
ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbCgqZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZN
b3ZlKGhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZl
MGZmNzMuLjM5YjAxMWNmMDZmN2YzODUzMjQzZTBhNzYzYTNiMWQ0NTQ5MDQxNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAt
MzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yTmV0d29ya0FnZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIK
ICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KIApAQCAtNjMsOCArNjIsOCBAQCB1bnNpZ25l
ZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KCkKICAg
ICB1bnNpZ25lZCByZXN1bHQgPSAwOwogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNT
RVJUKCFoYXNDb250ZW50KCkpOwotICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUo
KTsKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgcmVzdWx0ID0gbV9k
YXRhQnVmZmVyLnNpemUoKTsKKyAgICAgICAgbV9kYXRhQnVmZmVyLnJlc2V0KCk7CiAgICAgfQog
CiAgICAgaWYgKGhhc0NvbnRlbnQoKSkgewpAQCAtODEsMzYgKzgwLDM3IEBAIHVuc2lnbmVkIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgpCiAgICAgcmV0
dXJuIHJlbW92ZUNvbnRlbnQoKTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVz
b3VyY2VEYXRhOjpoYXNEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gISFtX2RhdGFCdWZmZXI7
Cit9CisKIHNpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVu
Z3RoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5z
aXplKCkgOiAwOworICAgIHJldHVybiBtX2RhdGFCdWZmZXIuc2l6ZSgpOwogfQogCiB2b2lkIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkp
OwotICAgIGlmICghbV9kYXRhQnVmZmVyKQotICAgICAgICBtX2RhdGFCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZGF0
YUJ1ZmZlci0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YUJ1ZmZlci5hcHBl
bmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFz
Q29udGVudCgpKTsKIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXpl
KCk7CisgICAgYXV0byBidWZmZXIgPSBtX2RhdGFCdWZmZXIudGFrZUFzQ29udGlndW91cygpOwor
ICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9kZWNv
ZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRl
bnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRh
TGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChi
dWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNl
NjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJp
bmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQg
PSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAg
fQogCi0gICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKLQogICAgIHJldHVybiBtX2NvbnRlbnQu
c2l6ZUluQnl0ZXMoKSAtIGRhdGFMZW5ndGg7CiB9CiAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgQ2FjaGVkUmVzbwogICAgIHJlc291cmNlRGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2Uo
Y2FjaGVkUmVzb3VyY2UpOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRSZXNv
dXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKK3ZvaWQgTmV0
d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNl
RGF0YSA9IHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogICAgIGlmICghcmVz
b3VyY2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaAppbmRleCBlZmEwMDA1M2FlMTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3Li5k
YWFlNWZlNGEzMWUzMTU5MzYzNzkwNDIzZjVmYmQzMzcwYzVjZDM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtMzAsNiArMzAsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKKyNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgpAQCAtNDAsNyArNDEsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VzRGF0YSB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC04OCw4ICs4OCw4IEBAIHB1YmxpYzoKICAgICAgICAgUmVmUHRyPFRleHRS
ZXNvdXJjZURlY29kZXI+IGRlY29kZXIoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXIuY29weVJl
ZigpOyB9CiAgICAgICAgIHZvaWQgc2V0RGVjb2RlcihSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rl
cj4mJiBkZWNvZGVyKSB7IG1fZGVjb2RlciA9IFdURk1vdmUoZGVjb2Rlcik7IH0KIAotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5j
b3B5UmVmKCk7IH0KLSAgICAgICAgdm9pZCBzZXRCdWZmZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KKyAgICAgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
LmNvcHlSZWYoKTsgfQorICAgICAgICB2b2lkIHNldEJ1ZmZlcihSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KIAog
ICAgICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmljYXRl
SW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOyB9CiAgICAgICAgIHZvaWQg
c2V0Q2VydGlmaWNhdGVJbmZvKGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiYg
Y2VydGlmaWNhdGVJbmZvKSB7IG1fY2VydGlmaWNhdGVJbmZvID0gY2VydGlmaWNhdGVJbmZvOyB9
CkBAIC0xMDMsMTAgKzEwMywxMCBAQCBwdWJsaWM6CiAgICAgICAgIFdhbGxUaW1lIHJlc3BvbnNl
VGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVRpbWVzdGFtcDsgfQogICAgICAg
ICB2b2lkIHNldFJlc3BvbnNlVGltZXN0YW1wKFdhbGxUaW1lIHRpbWUpIHsgbV9yZXNwb25zZVRp
bWVzdGFtcCA9IHRpbWU7IH0KIAotICAgICAgICBib29sIGhhc0J1ZmZlcmVkRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBib29sIGhhc0J1ZmZlcmVkRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIGhhc0RhdGEoKTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgYm9v
bCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wg
aGFzRGF0YSgpIGNvbnN0OwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCgpIGNvbnN0OwogICAg
ICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5n
dGgpOwogICAgICAgICB1bnNpZ25lZCBkZWNvZGVEYXRhVG9Db250ZW50KCk7CkBAIC0xMTksOCAr
MTE5LDggQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwogICAg
ICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29k
ZXI+IG1fZGVjb2RlcjsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhQnVmZmVy
OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICAgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBtX2RhdGFCdWZmZXI7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICAgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUlu
Zm8+IG1fY2VydGlmaWNhdGVJbmZvOwogICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9jYWNoZWRS
ZXNvdXJjZSB7IG51bGxwdHIgfTsKICAgICAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJj
ZVR5cGUgbV90eXBlIHsgSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlIH07CkBAIC0x
NDQsNyArMTQ0LDcgQEAgcHVibGljOgogICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5YmVBZGRS
ZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICB2b2lkIG1heWJlRGVjb2RlRGF0YVRvQ29udGVudChj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShjb25z
dCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzb3VyY2UqKTsKLSAgICB2b2lkIGFkZFJlc291
cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOworICAgIHZvaWQgYWRkUmVz
b3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwogICAg
IFJlc291cmNlRGF0YSBjb25zdCogZGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAg
UmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRhRm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBW
ZWN0b3I8U3RyaW5nPiByZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwCmluZGV4IDRlM2RhZjFhZGU0NzMxODc5NWJhYmFmODUyYzIzNjJiMzk5NDli
ZGQuLjIyM2E2NzY3YmUyNzFlZTRkMjJkZWQxZDZiZTYwY2E3MDc4MTdjODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50
OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIEZ1bmN0aW9uPHZvCiAg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RJbnRlcmNlcHRlZChyZXF1ZXN0SWQsIGJ1
aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci5yZXF1ZXN0KCkpKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50
ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhh
bmRsZXIpCiB7CiAgICAgQVNTRVJUKG1fZW5hYmxlZCk7CiAgICAgQVNTRVJUKG1faW50ZXJjZXB0
aW9uRW5hYmxlZCk7CkBAIC0xMjQzLDcgKzEyNDMsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShjb25z
dAogICAgICAgICBvdmVycmlkZVJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6Q29udGVudFR5cGUsIG92ZXJyaWRlUmVzcG9uc2UubWltZVR5cGUoKSk7CiAgICAgfQog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGE7CiAgICAgaWYgKGJhc2U2NEVuY29kZWQp
IHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVudCk7CiAgICAgICAg
IGlmICghYnVmZmVyKQpAQCAtMTI3MSw3ICsxMjcxLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3Bv
bnMKICAgICBpZiAobG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJsZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBhbHJl
YWR5IGJlZW4gcHJvY2Vzc2VkIl9zKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgaWYgKGJhc2U2
NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVudCk7
CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTQwNywxMiArMTQwNywxMiBAQCBib29sIEluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSwgU3RyaQogICAgICAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRU
cmVhdEFzVGV4dChyZXNvdXJjZS5taW1lVHlwZSgpKSkgewogICAgICAgICAgICAgYXV0byBkZWNv
ZGVyID0gSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNvdXJjZS5t
aW1lVHlwZSgpLCByZXNvdXJjZS5yZXNwb25zZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7CiAgICAg
ICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICAgICAgKnJlc3VsdCA9IGRl
Y29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Cisg
ICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSB0cnVlOwotICAg
ICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKKyAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IDhmNmZiY2MyOTNhZWJmOGI5
ZDVjOTQ1ZDI4MjlhMTUyN2I3NGJjN2YuLjZiY2Q4N2RkY2Q4YjA0NDEzMDhkMWQwMWVjYTZiMGU2
ZGExNDEzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaApAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAg
ICBib29sIHdpbGxJbnRlcmNlcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgYm9vbCBz
aG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIGJvb2wg
c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZv
aWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICB2b2lkIGludGVyY2VwdFJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPik+JiYpOwogICAgIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNv
dXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwog
CiAgICAgdm9pZCBzZWFyY2hPdGhlclJlcXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4
cHJlc3Npb24mLCBSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpT
ZWFyY2hSZXN1bHQ+PiYpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSk7CiAgICAgICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAgUGVuZGluZ0ludGVy
Y2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIG9yaWdpbmFsUmVzcG9uc2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgUGVuZGluZ0ludGVyY2Vw
dFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIG9yaWdpbmFsUmVzcG9uc2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgICAgICA6IG1f
b3JpZ2luYWxSZXNwb25zZShvcmlnaW5hbFJlc3BvbnNlKQogICAgICAgICAgICAgLCBtX2NvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICB7IH0KQEAg
LTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmVzcG9uZChtX29yaWdpbmFs
UmVzcG9uc2UsIG51bGxwdHIpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCByZXNwb25kKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
KQorICAgICAgICB2b2lkIHJlc3BvbmQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhKQogICAgICAgICB7CiAgICAgICAg
ICAgICBBU1NFUlQoIW1fcmVzcG9uZGVkKTsKICAgICAgICAgICAgIGlmIChtX3Jlc3BvbmRlZCkK
QEAgLTIxNSw3ICsyMTUsNyBAQCBwcml2YXRlOgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVz
b3VyY2VSZXNwb25zZSBtX29yaWdpbmFsUmVzcG9uc2U7Ci0gICAgICAgIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4g
bV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4gbV9j
b21wbGV0aW9uSGFuZGxlcjsKICAgICAgICAgYm9vbCBtX3Jlc3BvbmRlZCB7IGZhbHNlIH07CiAg
ICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDliNWNhZDk1OWE4ZTZmMmMyYmY3MGUxYWVlMTQyODc0
NTlkMDY2MTIuLmE0ZmZkMTM2MWNkZGU1YWI3ZDk3M2NkMDBkMTlhOTEwYWU5ZWQyOWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAKQEAgLTEwMCwxNSArMTAwLDE1IEBAIHN0YXRpYyBib29sIGRlY29kZUJ1ZmZlcihj
b25zdCB1aW50OF90KiBidWZmZXIsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4CiAK
IGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFt
ZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+
bWFpblJlc291cmNlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0
YSgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwg
cmVzdWx0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1
bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCi1ib29s
IEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhC
YXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQorYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNo
YXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwg
U3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZl
ci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5j
b2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBkYXRhQ29u
dGVudChidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIs
IGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2
NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250
ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKQEAg
LTE1Niw3ICsxNTYsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50
KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEZyYQogICAgIGlmICghbG9hZGVy
KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBib29sIHN1Y2Nl
c3MgPSBmYWxzZTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmws
IGxvYWRlci0+dXJsKCkpKSB7CiAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
aAppbmRleCBiNTFhZGRiMWJkOGYyY2NlNjk1NjA3OTljZDFkOTUyZDJkZTQyODM4Li4zZDVlNTY2
ZGJlMGM1ZWMxMWQ5ZThkZjY3ZmNmMGE3MDk4OGEyZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTQ5LDcgKzQ5
LDcgQEAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsKIGNs
YXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJPYmplY3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQgZmlu
YWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpQYWdlQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0
b3JQYWdlQWdlbnQpOwpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIE90aGVyUmVz
b3VyY2UsCiAgICAgfTsKIAotICAgIHN0YXRpYyBib29sIHNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29s
IHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKKyAgICBzdGF0aWMgYm9vbCBzaGFy
ZWRCdWZmZXJDb250ZW50KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBT
dHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiBy
ZXN1bHQpOwogICAgIHN0YXRpYyBWZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPiBjYWNoZWRSZXNvdXJj
ZXNGb3JGcmFtZShGcmFtZSopOwogICAgIHN0YXRpYyB2b2lkIHJlc291cmNlQ29udGVudChJbnNw
ZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIEZyYW1lKiwgY29uc3QgVVJMJiwgU3RyaW5n
KiByZXN1bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwogICAgIHN0YXRpYyBTdHJpbmcgc291cmNl
TWFwVVJMRm9yUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b250ZW50RmlsdGVyLmNwcAppbmRleCBiNGU2YTNhNTNiNGMwYzBkYTFjMzE3MmRkNDJjYWU2YThj
ZDIxZjdhLi42YWU1MjY1OTdjZDI4NjMxYmU3OTUwZmMzMzUzNmY4ZjM0N2Q3YWY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9p
ZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSkKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJU
KHJlc291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpC
dWZmZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNv
dXJjZUJ1ZmZlcigpKQotICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVu
dEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsK
KyAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3Vy
Y2VCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUo
KSk7CiB9CiAKIHN0YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKQEAgLTI3Niw3ICsy
NzYsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUo
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgQVNTRVJUKHdpbGxIYW5kbGVQcm92
aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBy
ZXBsYWNlbWVudERhdGEgeyBtX2Jsb2NraW5nQ29udGVudEZpbHRlci0+cmVwbGFjZW1lbnREYXRh
KCkgfTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRh
IHsgbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXItPnJlcGxhY2VtZW50RGF0YSgpIH07CiAgICAgUmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZSB7IFVSTCgpLCAidGV4dC9odG1sIl9zLCBzdGF0aWNfY2Fz
dDxsb25nIGxvbmc+KHJlcGxhY2VtZW50RGF0YS0+c2l6ZSgpKSwgIlVURi04Il9zIH07CiAgICAg
U3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEgeyBXVEZNb3ZlKHJlcGxhY2VtZW50RGF0YSks
IGVycm9yLmZhaWxpbmdVUkwoKSwgcmVzcG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlz
dG9yeVZpc2liaWxpdHk6OkhpZGRlbiB9OwogICAgIFNldEZvclNjb3BlPGJvb2w+IGxvYWRpbmdC
bG9ja2VkUGFnZSB7IG1faXNMb2FkaW5nQmxvY2tlZFBhZ2UsIHRydWUgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGNmNmNjZjJiZDA4OTI1MGM2MDNmZDA0
Yjc0YzNlYzhjMGU0OWM0ZjEuLjBhYjRlMTRmOWNlMzVhMWNjZjZkZDZiY2U4MzAyNDE2YzFlY2Rl
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMjA4LDcg
KzIwOCw3IEBAIERvY3VtZW50TG9hZGVyOjp+RG9jdW1lbnRMb2FkZXIoKQogI2VuZGlmCiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhKCkg
Y29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBEb2N1bWVudExvYWRlcjo6bWFp
blJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxp
ZCgpKQogICAgICAgICByZXR1cm4gbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPmNvcHkoKTsK
QEAgLTE2MDUsMTEgKzE2MDUsMTEgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVB
cmNoaXZlKCkKICAgICBhZGRBbGxBcmNoaXZlUmVzb3VyY2VzKCptX2FyY2hpdmUpOwogICAgIEFT
U0VSVChtX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpKTsKICAgICBhdXRvJiBtYWluUmVzb3VyY2Ug
PSAqbV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKTsKLSAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0g
Jm1haW5SZXNvdXJjZS5kYXRhKCk7CisgICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9IG1haW5SZXNv
dXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZSht
YWluUmVzb3VyY2UubWltZVR5cGUoKSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQo
KSk7Ci0gICAgY29tbWl0RGF0YShtYWluUmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291
cmNlLmRhdGEoKS5zaXplKCkpOworICAgIGNvbW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0YS0+
ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiAj
ZW5kaWYKIH0KQEAgLTE2NjgsNyArMTY2OCw3IEBAIEFyY2hpdmVSZXNvdXJjZSogRG9jdW1lbnRM
b2FkZXI6OmFyY2hpdmVSZXNvdXJjZUZvclVSTChjb25zdCBVUkwmIHVybCkgY29uc3QKIAogUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZSgpIGNvbnN0
CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IG1haW5SZXNvdXJjZURh
dGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOwogICAgIGF1dG8mIHJlc3BvbnNlID0gdGhpcy0+cmVzcG9uc2UoKTsKQEAgLTIyNTIsOCAr
MjI1Miw4IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFy
dENvbnRlbnQoKQogCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAg
bV9jb21taXR0ZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURh
dGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPmRh
dGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CisgICAgY29tbWl0TG9h
ZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5z
aXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKQEAg
LTIyODksNyArMjI4OSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmco
KQogICAgIG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmdldExvYWREZWNpc2lvbkZvckljb25z
KGljb25EZWNpc2lvbnMpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVj
aXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lz
aW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBp
Y29uID0gbV9pY29uc1BlbmRpbmdMb2FkRGVjaXNpb24udGFrZShsb2FkSWRlbnRpZmllcik7CiAK
QEAgLTIzMTAsNyArMjMxMCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNp
c2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50CiAgICAgcmF3SWNv
bkxvYWRlci0+c3RhcnRMb2FkaW5nKCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlz
aGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYgbG9hZGVyLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikK
K3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYgbG9h
ZGVyLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgLy8gSWYgdGhlIERv
Y3VtZW50TG9hZGVyIGhhcyBkZXRhY2hlZCBmcm9tIGl0cyBmcmFtZSwgYWxsIGljb24gbG9hZHMg
c2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNhbmNlbGxlZC4KICAgICBBU1NFUlQobV9mcmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGY3ZjNmMzg0NGYxODQ0
N2JlOGRkN2I4MmQzYTQ0MzUwMDIyMTY3NjIuLjRkNGQzMDg1Y2FlODdlOWU0MmFiMzNjMjkzMTM0
YTlhMGJhNjM0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03
NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNo
ZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVu
dEZpbHRlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7
CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsKQEAgLTgzLDcgKzg0LDcgQEAgY2xhc3Mg
SWNvbkxvYWRlcjsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBQcmV2aWV3Q29udmVydGVyOwogY2xhc3Mg
UmVzb3VyY2VMb2FkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogY2xhc3MgU1dDbGllbnRDb25uZWN0aW9uOwogY2xhc3MgU3VicmVzb3VyY2VM
b2FkZXI7CiBjbGFzcyBTdWJzdGl0dXRlUmVzb3VyY2U7CkBAIC0xNzEsNyArMTcyLDcgQEAgcHVi
bGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyKCkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3VicmVzb3VyY2VMb2FkZXIqIG1haW5SZXNvdXJjZUxv
YWRlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1h
aW5SZXNvdXJjZURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIAogICAgIERv
Y3VtZW50V3JpdGVyJiB3cml0ZXIoKSBjb25zdCB7IHJldHVybiBtX3dyaXRlcjsgfQogCkBAIC0z
OTIsOCArMzkzLDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0SWNvbkxvYWRp
bmcoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24o
Ym9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU2hhcmVkQnVmZmVyKik+JiYpOwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihJ
Y29uTG9hZGVyJiwgU2hhcmVkQnVmZmVyKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRH
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJik7
CisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKik7CiAKICAgICBjb25zdCBWZWN0b3I8TGlua0ljb24+JiBsaW5rSWNvbnMoKSBj
b25zdCB7IHJldHVybiBtX2xpbmtJY29uczsgfQogCkBAIC02MjEsNyArNjIyLDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgeyBmYWxzZSB9OwogCiAg
ICAgSGFzaE1hcDx1aW50NjRfdCwgTGlua0ljb24+IG1faWNvbnNQZW5kaW5nTG9hZERlY2lzaW9u
OwotICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPEljb25Mb2FkZXI+LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciopPj4gbV9pY29uTG9hZGVyczsKKyAgICBIYXNoTWFwPHN0
ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKik+PiBtX2ljb25Mb2FkZXJzOwogICAgIFZlY3RvcjxMaW5rSWNvbj4g
bV9saW5rSWNvbnM7CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGVkZWNlMTJjZDdhOTZmZWI5MzVjMzM0NjZjNDZj
YWUwMjBlMmYzYWMuLjc1YWUyODRjMmMzNGZkZDg5ZTg1NjRkYTQzOWRhNzcyNWFmYmM4ZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENh
Y2hlZEZyYW1lQmFzZTsKIGNsYXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsK
IGNsYXNzIENocm9tZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVdyYXBwZXJXb3Js
ZDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBAIC03Niw3ICs3Nyw2
IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwotY2xhc3MgU2hh
cmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVudW0gY2xhc3MgQ2FjaGVQb2xp
Y3kgOiB1aW50OF90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApp
bmRleCA0ZmQ2MzdhOTAxNGE1ZDQxYTIyNmVlNDU5MTdiNmIzZTlhNzkwZWJiLi5lZTlmM2QwYzk4
NGQ0NTVjYmI5MWI0NjBjMWJjMTI4OThkMTIzNjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtOTgsNyArOTgsNyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRs
ZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNzIFdpZGdldDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAppbmRleCBhZWY2NjhiZDYzZWQ1ZmNkNDVl
NjFlOWQxZjEwN2NmYjZhZWYyNjRiLi4yOWQyZTNmNDYxNDBhYWE1MTE2MGU2YTI4NTYyZjM3MGUz
NzFlYjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3ku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtNTEsNyAr
NTEsNyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJj
ZUxvYWRlcjsKIAogc3RydWN0IEZldGNoT3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCmluZGV4IDYzMzc1NTk2MzIw
MDE0NjM4Mjg5ZTI4MjYwNGM1NWIwYWY0NDUzMTMuLjYwNDNhYzliZTI2N2VhNGZiYzcxZTExMThi
OTA3OTE1NWUzOTE1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQgbGUKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwg
bnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQg
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUp
CiB7CiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZl
ciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUp
Cit2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIFJlZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKaW5kZXggNDhiYjIxNTNjOTNmMmRjNzU0
ZTIwNzMyMjUyYzA1MDljZjcwNGE0MS4uYjUxNzRlZGM5NGI5OTIzOTAyMDVmMGZhZDQ1MmVhNWFj
Mzg3ODkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVk
aXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+
JiYgY2FsbGJhY2spIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29t
cGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3Qg
dWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKIApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbENhbmNl
bChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcg
bG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKTsKIAogICAgIHZvaWQgbm90aWZ5RG9uZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCmluZGV4IGM2Mjc3Njg1
OGE2ZGM1YWZmZDM2ZGM5ZTc4NWM4YmQyNDcyYmI3NGQuLmQ5NGI3MDAwNzQxY2Q5MTJiOTE3M2Uy
YjM3NDZkNGRhOGIzNjhhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhSZXNvdXJj
ZUNyeXB0b2dyYXBoaWNEaWcKICAgICByZXR1cm4geyBhbGdvcml0aG0sIGNyeXB0b0RpZ2VzdC0+
Y29tcHV0ZUhhc2goKSB9OwogfQogCi1SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRv
Z3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6
OkFsZ29yaXRobSBhbGdvcml0aG0sIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZmZXIo
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgYXV0byBjcnlwdG9EaWdlc3Qg
PSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGFsZ29y
aXRobSkpOwogICAgIGlmIChidWZmZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaAppbmRleCBhZWEzZGM1N2M4NzgzMTMwMTNh
NWIxNmM5MzliNzc0ZWQ0ODQzMjRjLi44M2I4NjEzY2ZkYTIzMjlhZTMwYmJmNmFiYzE0Yjk5ZDQ0
MjM3YjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdC5oCkBAIC0zNCw3ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENhY2hlZFJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCB7
CiAgICAgZW51bSBjbGFzcyBBbGdvcml0aG0gewpAQCAtNzUsNyArNzUsNyBAQCBzdGQ6Om9wdGlv
bmFsPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlRW5jb2RlZENyeXB0
b2dyYXBoaWNEaWdlcwogCiBzdGQ6Om9wdGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dD4gZGVjb2RlRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChjb25zdCBFbmNvZGVk
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Jik7CiAKLVJlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBjb25zdCBTaGFyZWRCdWZmZXIqKTsKK1Jlc291cmNlQ3J5
cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291
cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKik7CiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2Vz
dEZvckJ5dGVzKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBjb25zdCB2
b2lkKiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IGFhODViYjRkM2NhODcxNDViYjdhODZmNjQ2NjhlNDk1MTc2
YWMyMzUuLjZkZWJiMjU4OGEzZTgyYjIxYzYxZDdlOGYzNmU0ZjRiYmJhMjVlNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNTAsNyArNTAsNiBAQAogI2lu
Y2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC0xMTgsNyArMTE3LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07
CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgbV9yZXNvdXJjZURhdGEucmVz
ZXQoKTsKICAgICBtX2RlZmVycmVkUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwogfQogCkBA
IC0xODksNyArMTg4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6aW5pdChSZXNvdXJjZVJlcXVl
c3QmJiBjbGllbnRSZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2kKICAgICB9KTsKIH0KIAot
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lk
IFJlc291cmNlTG9hZGVyOjpkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiB7CiAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCkBAIC0zMTgsNyArMzE3LDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5n
UG9saWN5IGRhdGFCdWZmZXJpbmdQb2wKIAogICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1ZmZl
cmVkIGRhdGEKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9s
aWN5OjpEb05vdEJ1ZmZlckRhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsK
KyAgICAgICAgbV9yZXNvdXJjZURhdGEucmVzZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRl
cjo6d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKQEAgLTMyOSwyOSArMzI4LDI5IEBA
IHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSgpCiAg
ICAgICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRk
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmVk
QnVmZmVyKiBidWZmZXIsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJl
c291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIERhdGFQYXlsb2FkVHlw
ZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgaWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9s
aWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKCFtX3Jlc291cmNlRGF0YSB8fCBkYXRhUGF5bG9hZFR5cGUgPT0gRGF0
YVBheWxvYWRXaG9sZVJlc291cmNlKSB7Ci0gICAgICAgIGlmIChidWZmZXIpCi0gICAgICAgICAg
ICBtX3Jlc291cmNlRGF0YSA9IGJ1ZmZlcjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9y
ZXNvdXJjZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIAorICAgIGlmIChkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBh
eWxvYWRXaG9sZVJlc291cmNlKQorICAgICAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOworCiAg
ICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsK
KyAgICAgICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKCpidWZmZXIpOwogICAgIGVsc2UKLSAgICAg
ICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgICAgICBtX3Jlc291
cmNlRGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKK30KKworY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fcmVzb3VyY2VEYXRhLmdldCgpLmdldCgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVy
OjpjbGVhclJlc291cmNlRGF0YSgpCiB7CiAgICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAgICAg
ICBtX3Jlc291cmNlRGF0YS0+Y2xlYXIoKTsKKyAgICAgICAgbV9yZXNvdXJjZURhdGEuZW1wdHko
KTsKIH0KIAogYm9vbCBSZXNvdXJjZUxvYWRlcjo6aXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0
CkBAIC01NTEsMTQgKzU1MCwxNCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbAogICAgIGRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0
aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXls
b2FkVHlwZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1v
dmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZv
aWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBl
KQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQogewotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGdldCBk
YXRhK2xlbmd0aCAqT1IqIGEgU2hhcmVkQnVmZmVyLgorICAgIC8vIFRoaXMgbWV0aG9kIHNob3Vs
ZCBvbmx5IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KICAg
ICBBU1NFUlQoIWJ1ZmZlciB8fCAoIWRhdGEgJiYgIWxlbmd0aCkpOwogCiAgICAgLy8gUHJvdGVj
dCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nl
c3NpbmcgY2FuIGRvCkBAIC01NzEsNyArNTcwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgK
ICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNw
ZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAgLy8gQ291bGQgYmUgYW4g
aXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZpbGUuCiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9h
ZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFt
ZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlz
LCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgp
IDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAg
IGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8g
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXIt
PnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOwog
fQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpAQCAtNzM1LDcgKzczNCw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduCiAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoLCBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGRpZFJlY2VpdmVCdWZm
ZXIoV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRmZDJiZjBiYmIz
YjFiZDIxNTQ1ZGI1MmMyZTFjYTY0ZWU0MmI5MTcuLjcwZWEyMjBkYzE3YzczNzZlZDY2MGZhN2E2
MWE4NGUzMWMzMzRjYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBA
IC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJUeXBlcy5oIgogI2luY2x1
ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTY2LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGluaXQoUmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogCi0gICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVh
bCB2b2lkIHN0YXJ0TG9hZGluZygpCkBAIC05OCw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcmVsZWFzZVJlc291cmNlcygpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogCi0gICAgU2hhcmVkQnVm
ZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKTsg
fQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0
OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURhdGEoKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wg
aXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpAQCAtMTA3LDcgKzEwOCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2Vu
dCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYpOwogCkBAIC0xNjYsNyArMTY3LDcgQEAgcHJvdGVjdGVkOgog
CiAgICAgYm9vbCB3YXNDYW5jZWxsZWQoKSBjb25zdCB7IHJldHVybiBtX2NhbmNlbGxhdGlvblN0
YXR1cyA+PSBDYW5jZWxsZWQ7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihj
b25zdCB1aW50OF90KiwgdW5zaWduZWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpOwogICAgIAogICAgIHZvaWQgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJQb2xpY3kg
cmVmZXJyZXJQb2xpY3kpIHsgbV9vcHRpb25zLnJlZmVycmVyUG9saWN5ID0gcmVmZXJyZXJQb2xp
Y3k7IH0KICAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSgpIGNvbnN0IHsgcmV0dXJu
IG1fb3B0aW9ucy5yZWZlcnJlclBvbGljeTsgfQpAQCAtMTkxLDcgKzE5Miw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAK
LSAgICB2b2lkIGFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIFNoYXJl
ZEJ1ZmZlciosIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29u
c3QgdWludDhfdCosIHVuc2lnbmVkLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgRGF0YVBheWxv
YWRUeXBlKTsKICAgICB2b2lkIGxvYWREYXRhVVJMKCk7CiAgICAgdm9pZCBmaW5pc2hOZXR3b3Jr
TG9hZCgpOwogCkBAIC0yMDIsNyArMjAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXNw
b25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVp
bnQ4X3QqLCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYm
LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKICAgICB2b2lkIHdhc0Jsb2NrZWQoUmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZTsKQEAg
LTIyNyw3ICsyMjgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVz
dDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIEJlZm9yZSByZWRp
cmVjdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9yZXNvdXJjZURhdGE7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBtX3Jlc291cmNlRGF0YTsKICAgICAKICAgICBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNlZmJkZjlkYTE3ODk5N2VkY2I5ZjM1NDRmNDg4NGI2
MGE2ZWZlLi4zN2QwYmI4MjFhYmQ4NmE5YjU2MDZlMTI3ZWZjOTQxMmE1MWJiMWE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTUzMCw3ICs1MzAs
NyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbgogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
ZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBl
KTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsK
ICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBpZiAoYXV0byBwcmV2aWV3TG9hZGVyID0gbV9wcmV2
aWV3TG9hZGVyLmdldCgpKSB7CkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBs
b25nIGUKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVm
ZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgU3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQg
U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9h
ZFR5cGUpCiB7CiAgICAgQVNTRVJUKG1fcmVzb3VyY2UpOwogCkBAIC01NjEsNyArNTYxLDcgQEAg
dm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VEYXRhID0g
dGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVCdWZm
ZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2Ut
PnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRh
KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVy
ID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAppbmRleCAzNzIzYjZiOWFiOWZkZGFhYTU1NzRiZmIw
ZTZmMzhjZWQ3YWVmYjc1Li44MzJjOWYwZTczZDM4NDY0YTc5NWY0MDM4NjBmNzljMzRlNzNiYzdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApAQCAtNzQsNyAr
NzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25n
IGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQg
d2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CkBAIC05Miw3ICs5Miw3
IEBAIHByaXZhdGU6CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiBjaGVja1Jlc3BvbnNlQ3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBFeHBl
Y3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVkaXJlY3Rpb25Dcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcmV2aW91c1JlcXVlc3QsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpOwogCi0gICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlKTsKIAogICAgIHZvaWQgbm90aWZ5RG9uZShMb2FkQ29tcGxldGlvblR5
cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCmluZGV4IGY2NjI5MmUz
MWNiZWI0MjY0MzBhODMyYWRlZjQyOTkxY2I1NzQzNmUuLmE4YTQ5YjQ3ZjkyNzM0Mjc0YmE0Y2Vh
YmMxNzA3ZmVmYTdiNjY0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5o
CkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAg
ICB9CiAKLSAgICAgICAgU3Vic3RpdHV0ZURhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBjb250
ZW50LCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9y
eSkKKyAgICAgICAgU3Vic3RpdHV0ZURhdGEoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgY29udGVudCwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNob3VsZFJldmVhbFRvU2Vzc2lv
bkhpc3RvcnkpCiAgICAgICAgICAgICA6IG1fY29udGVudChXVEZNb3ZlKGNvbnRlbnQpKQogICAg
ICAgICAgICAgLCBtX2ZhaWxpbmdVUkwoZmFpbGluZ1VSTCkKICAgICAgICAgICAgICwgbV9yZXNw
b25zZShyZXNwb25zZSkKQEAgLTU0LDE0ICs1NCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudCAhPSBudWxscHRy
OyB9CiAgICAgICAgIGJvb2wgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSA9PSBTZXNzaW9uSGlzdG9yeVZp
c2liaWxpdHk6OlZpc2libGU7IH0KIAotICAgICAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGNvbnRl
bnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQuZ2V0KCk7IH0KKyAgICAgICAgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogY29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudC5n
ZXQoKTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNwb25zZS5taW1lVHlwZSgpOyB9CiAgICAgICAgIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCk7IH0KICAg
ICAgICAgY29uc3QgVVJMJiBmYWlsaW5nVVJMKCkgY29uc3QgeyByZXR1cm4gbV9mYWlsaW5nVVJM
OyB9CiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNwb25zZTsgfQogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBtX2NvbnRlbnQ7CiAgICAgICAgIFVSTCBtX2ZhaWxpbmdVUkw7CiAgICAgICAg
IFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICAgICAgU2Vzc2lvbkhpc3RvcnlWaXNp
YmlsaXR5IG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSB7IFNlc3Npb25IaXN0b3J5Vmlz
aWJpbGl0eTo6SGlkZGVuIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
c3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291
cmNlLmgKaW5kZXggNTk2NjRiNTg1NGY4NWIwMmNkZjM0OTAyMGEwZWZmMTNlYjc4ODg3OS4uY2Yy
ZGUwYzYyZDk1ZjMzMjViNDJiNDZlMjQwMzc3NDQxMDc0MmEwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAtMzcsMTIgKzM3LDE0IEBAIHB1YmxpYzoK
IAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7
IH0KLSAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJl
bmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihtX2RhdGEpOyB9CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9CisgICAgdm9pZCBhcHBl
bmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRhdGEs
IGxlbmd0aCk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCi0gICAg
dmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVs
aXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEtPmNvcHkoKSk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxp
dmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHByb3Rl
Y3RlZDoKLSAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNl
JiYgcmVzcG9uc2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKKyAgICBTdWJzdGl0dXRlUmVz
b3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiAgICAgICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQog
ICAgICAgICAsIG1fcmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpCiAgICAgICAgICwgbV9kYXRh
KFdURk1vdmUoZGF0YSkpCkBAIC01Miw3ICs1NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAg
ICAgVVJMIG1fdXJsOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWY8
U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDg5ZjNiMGYx
ZGMzOWQ0MGE1NjM4NzhhZTU1Zjc2YzY3MGE3MTUwOTEuLjAzNmVmZDIwZTQ5NjMwMGNmOGM5ZTdl
NzkwMzE3ZTAxZGU1YmFmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAg
dm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAg
ICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRp
b25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9u
c2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFu
aWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNl
QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7
CiAgICAgaWYgKCFtYW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdy
aXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVh
c29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNl
ZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApp
bmRleCA2MDMyODE4ODgzNzVmNDRhNjI0YjNlM2IzYWFmZTA2YTM2ODkyZWU2Li41MTk3OGY0MTIz
ODc0ZGM1NjYwZWZmNDcwNjU5NzA3ZDRlNWQ4NWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1NSwx
MCArMjU1LDggQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0
IFN0cmluZyYgcGF0aCkKIAogc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAg
ICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNo
YXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5z
dXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KICAgICBpZiAocmVzb3VyY2Uu
cGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5jb3B5KCk7
CisgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0
aCgpKTsKIH0KIApAQCAtMjkwLDkgKzI4OCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6
Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAg
ICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgICAgIGlmIChn
ZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tSZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJjZSkpIHsK
ICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAgICAgICAg
ICAvLyBGSVhNRTogQ2xpZW50cyBwcm9hYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hh
cmVkQnVmZmVyLgotICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNl
IHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCi0gICAgICAgICAg
ICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jb3B5KCk7CisgICAgICAgICAgICBkYXRhID0gcmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuaAppbmRleCA1MmNkMTY0MDNhMTczNmE3MTg2NTY3NzI0ODYxMWUwOGY2NjNiMjlmLi5iOTYz
NTZlNzg1NjEzODk1NmFlNGMwNTk4MzE3MGNkZjcyMzY3MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtNDIs
NiArNDIsNyBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNo
ZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xhc3MgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNhdGlv
bkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcgKzUw
LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9z
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMwMTQ3MWYzMDg1ZGVmOGU0
MWRjNWQwY2E5ZDYwOWEuLjJiYjNmZTc1Yjk5NzdlODMzMjJhZTI1ODBmNzIxMmVlNWJmMjE2MTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBwYXRoKQorUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQoIXVy
bC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC00MCw3ICs0
MCw3IEBAIFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCB7IHVybCB9LCBXVEZNb3ZlKHJlc291cmNlUmVz
cG9uc2UpLCB0eXBlLCBidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgcGF0aCkpOwogfQogCi1BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmws
IFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCitBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIDogU3Vic3RpdHV0ZVJlc291cmNlKFdURk1v
dmUodXJsKSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX3R5cGUo
dHlwZSkKICAgICAsIG1fc3RvcmFnZUlEKDApCkBAIC01MSw3ICs1MSw3IEBAIEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3Vy
Y2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKFJl
c291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERh
dGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5KCkgOiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBsb2FkZXIuZGVs
aXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUo
dW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgKaW5kZXggODhjOTRkZTFhNzc0MTA0Njlj
OTMxYTQyYTQ3OWIxZTY3NzdhNzAyZS4uYzI4OGU3MDM2YzY3NjJhZDQ4NzZiYTg4MTQ2OWE3NWQy
MjM3ZTFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIEZhbGxiYWNrID0gMSA8PCA0CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8QXBwbGlj
YXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUoY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJpbmcoKSk7CisgICAgc3RhdGlj
IFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBT
dHJpbmcoKSk7CiAKICAgICB1bnNpZ25lZCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9
CiAgICAgdm9pZCBhZGRUeXBlKHVuc2lnbmVkIHR5cGUpOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKICAgICAKIHByaXZhdGU6Ci0gICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
KFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
KFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHBhdGgpOwogCiAgICAgdm9pZCBkZWxpdmVy
KFJlc291cmNlTG9hZGVyJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggMWM1MDg0N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2Iy
ZmI2YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAg
IG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7
CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwog
fQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYm
KT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUz
YzQ5OTAyNDBhNTIwYmQzMGU2MzY1OTUuLjhjZjA1Y2NlMTg4MDEyOGRlNTliZTcwYTk5ODM2ZjVh
NzQ1YjZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSog
cmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgYXV0byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5w
cmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0
aCkgVkFMVUVTICg/LCA/KSJfcyk7CiAgICAgaWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgCiAKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNv
dXJjZS0+cGF0aCgpLmlzRW1wdHkoKSkKQEAgLTgxNSw3ICs4MTQsNyBAQCBib29sIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNl
LCB1bnNpZ25lZAogICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAg
ICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAg
ICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNv
bnRpZ3VvdXMoKS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+
ZXhlY3V0ZUNvbW1hbmQoKSkgewpAQCAtODczLDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwg
dW5zaWduZWQKICAgICAKICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQu
dmFsdWUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBz
dWNjZXNzZnVsbHkgd3JpdGUgdGhlIHJlc291cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAg
ICAvLyByZWxlYXNlIHRoZSByZXNvdXJjZSdzIGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxs
eSBsYXJnZSBhbW91bnQKICAgICAvLyBvZiBtZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0Vt
cHR5KCkpCi0gICAgICAgIHJlc291cmNlLT5kYXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3Vy
Y2UtPmNsZWFyKCk7CiAKICAgICByZXNvdXJjZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwog
ICAgIHJldHVybiB0cnVlOwpAQCAtMTI3Myw3ICsxMjcyLDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6c2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNo
ZVJlc28KICAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBl
LCAiYXVkaW8vIikgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAi
dmlkZW8vIik7CiB9CiAgICAgCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURh
dGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5LCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbikK
K2Jvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGly
ZWN0b3J5KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgZGlyZWN0
b3J5LCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbikKIHsKICAgICBT
dHJpbmcgZnVsbFBhdGg7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCmluZGV4IDlhOTUzMDA4NzY2YTg4
ODU1NjFiMzQ4ODg5YjhjZWRhMmIyZWIzMzguLjQxMDJhMTgwOGI0NTU1N2I2NDVlMzZlN2U2ODFm
YzRjNmQyMDdjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3Mg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogdGVtcGxhdGU8dHlw
ZW5hbWU+IGNsYXNzIFN0b3JhZ2VJREpvdXJuYWw7CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U+IHsKQEAg
LTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZW5zdXJlT3JpZ2luUmVjb3JkKGNv
bnN0IFNlY3VyaXR5T3JpZ2luKik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkU3RvcmVSZXNvdXJj
ZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKik7CiAgICAgdm9pZCBkZWxldGVU
YWJsZXMoKTsKLSAgICBib29sIHdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pOworICAgIGJvb2wgd3JpdGVEYXRhVG9VbmlxdWVG
aWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24p
OwogCiAgICAgdm9pZCBsb2FkTWFuaWZlc3RIb3N0SGFzaGVzKCk7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKaW5kZXggNmRlODBj
MTBhYzdkMjVjZjM0NjlmNmRlZjBmYWY3MjQxZjU5NjQyOC4uNGVmOWNkNjZiZDA4OGI3NGMwNDZj
MDY5MGQxZTlkM2U1ZTMzNjBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL0FyY2hpdmVGYWN0b3J5LmNwcApAQCAtNDYsMTIgKzQ2LDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotdHlwZWRlZiBSZWZQdHI8QXJjaGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rp
b24oY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJik7Cit0eXBlZGVmIFJlZlB0cjxBcmNoaXZlPiBS
YXdEYXRhQ3JlYXRpb25GdW5jdGlvbihjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbiosIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gQXJjaGl2ZU1JTUVUeXBlc01hcDsKIAogLy8gVGhlIGNy
ZWF0ZSBmdW5jdGlvbnMgaW4gdGhlIGFyY2hpdmUgY2xhc3NlcyByZXR1cm4gUmVmUHRyIHRvIGNv
bmNyZXRlIHN1YmNsYXNzZXMKIC8vIG9mIEFyY2hpdmUuIFRoaXMgYWRhcHRvciBtYWtlcyB0aGUg
ZnVuY3Rpb25zIGhhdmUgYSB1bmlmb3JtIHJldHVybiB0eXBlLgotdGVtcGxhdGU8dHlwZW5hbWUg
QXJjaGl2ZUNsYXNzPiBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGFyY2hpdmVGYWN0b3J5Q3JlYXRl
KGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3RlbXBsYXRlPHR5cGVuYW1l
IEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBhcmNoaXZlRmFjdG9yeUNyZWF0
ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IHJldHVybiBBcmNoaXZlQ2xhc3M6OmNyZWF0ZSh1cmwsIGJ1ZmZlcik7CiB9CkBAIC04Myw3ICs4
Myw3IEBAIGJvb2wgQXJjaGl2ZUZhY3Rvcnk6OmlzQXJjaGl2ZU1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuICFtaW1lVHlwZS5pc0VtcHR5KCkgJiYgYXJjaGl2ZU1J
TUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0KIAotUmVmUHRyPEFyY2hpdmU+IEFyY2hp
dmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKK1JlZlB0cjxBcmNoaXZlPiBBcmNoaXZlRmFjdG9yeTo6Y3Jl
YXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQogewogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFj
dG9yeS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaApp
bmRleCAyMWQyMzY1Y2Y4ZDlkOTAxZWZlN2FhZDU1MmJmM2RhNDA2OWZlNDBkLi41NTY0NTE1Yzll
MGQ5ZDAzM2I3OTBjNzQ3Mjg1YTI1ODUzYWJlMDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKQEAgLTM0LDEyICszNCwxMiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIEFyY2hpdmVGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBpc0FyY2hpdmVNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgUmVm
UHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpOworICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4gY3JlYXRlKGNv
bnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyS25vd25BcmNoaXZlTUlNRVR5cGVzKEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcAppbmRleCBm
YzIwZGEzZGEwMzJjYmVmNzRmMmU5Yzg0MjhhY2I0ZWUzN2JlZjIzLi4wNzM4Mzk0YTgyODcxNGFh
MGI5MGVlNzUwNzlkNDg2ZjViMGU4Njk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1pbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2Uo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK2lubGluZSBBcmNoaXZlUmVz
b3VyY2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKICAgICA6IFN1YnN0aXR1dGVSZXNvdXJjZShVUkwgeyB1cmwgfSwgUmVz
b3VyY2VSZXNwb25zZSB7IHJlc3BvbnNlIH0sIFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVU
eXBlKG1pbWVUeXBlKQogICAgICwgbV90ZXh0RW5jb2RpbmcodGV4dEVuY29kaW5nKQpAQCAtNDIs
NyArNDIsNyBAQCBpbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybAogewogfQogCi1SZWZQdHI8QXJjaGl2
ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJp
bmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQorUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291
cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiB7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU0
LDcgKzU0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVh
dGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb24KICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBcmNoaXZlUmVzb3VyY2UoZGF0YS5yZWxlYXNlTm9uTnVsbCgpLCB1cmwsIG1pbWVUeXBl
LCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwgcmVzcG9uc2UpKTsKIH0KIAotUmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CitSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGRh
dGEpLCB1cmwsIHJlc3BvbnNlLm1pbWVUeXBlKCksIHJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUo
KSwgU3RyaW5nKCksIHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKaW5kZXggMjA5ZTk3MTdhZWIwOTM2MGRiMzkyN2U2ZWZh
MWU1YmYxYzJjOTdjYS4uMDU0OGVmNzIxZWZkMjdjMDBjZTkzZDEyMjcwZWNlYzQ2YzAyYWY5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgK
QEAgLTM0LDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBcmNoaXZlUmVz
b3VyY2UgOiBwdWJsaWMgU3Vic3RpdHV0ZVJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFVSTCYsCisgICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0
ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFVSTCYsCiAgICAgICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwKICAgICAgICAgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgPSBSZXNvdXJjZVJlc3BvbnNlKCkpOwogCkBAIC00Nyw3ICs0Nyw3IEBAIHB1
YmxpYzoKICAgICBib29sIHNob3VsZElnbm9yZVdoZW5VbmFyY2hpdmluZygpIGNvbnN0IHsgcmV0
dXJuIG1fc2hvdWxkSWdub3JlV2hlblVuYXJjaGl2aW5nOyB9CiAKIHByaXZhdGU6Ci0gICAgQXJj
aGl2ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIEFyY2hpdmVSZXNvdXJjZShS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICBTdHJpbmcgbV9taW1lVHlwZTsK
ICAgICBTdHJpbmcgbV90ZXh0RW5jb2Rpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGRlN2RhZGRkYWMyMjEy
ZjZkNWUwY2MwOTFkNGU0MTY3N2EzZjAxNWQuLjcxMTUwY2JkZDg5NjllNmFmMDI4Njg0YjZiZjZj
YmMwYTUwYjJmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC05MCw3ICs5MCw3IEBAIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2Vu
dGF0aW9uKEFyCiAgICAgLy8gUmVzb3VyY2UgZGF0YSBjYW4gYmUgZW1wdHksIGJ1dCBtdXN0IGJl
IHJlcHJlc2VudGVkIGJ5IGFuIGVtcHR5IENGRGF0YVJlZgogICAgIGF1dG8mIGRhdGEgPSByZXNv
dXJjZS0+ZGF0YSgpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0Lmdl
dCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLmNyZWF0ZUNGRGF0YSgp
LmdldCgpKTsKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExl
Z2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlQ0ZEYXRhKCkuZ2V0KCkpOwogCiAgICAgLy8gUmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBudWxs
CiAgICAgaWYgKGF1dG8gY2ZVUkwgPSByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZT
dHJpbmcoKSkKQEAgLTExNyw5ICsxMTcsOSBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAg
IC8vIERvbid0IGluY2x1ZGUgdGhlIHJlc291cmNlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiByZXNv
dXJjZQogICAgIGlmICghaXNNYWluUmVzb3VyY2UpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzb3Vy
Y2VSZXNwb25zZURhdGEgPSBjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihyZXNvdXJj
ZS0+cmVzcG9uc2UoKSkpCi0gICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0
eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJj
ZVJlc3BvbnNlRGF0YS5nZXQoKSk7ICAgIAorICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtl
eSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVy
biBwcm9wZXJ0eUxpc3Q7CiB9CiAKQEAgLTIxNSwxMyArMjE1LDEzIEBAIFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKENGRGljdGlvbmFyeVJl
ZiBkaWN0aW9uCiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0g
UmVzb3VyY2UgcmVzcG9uc2UgZGF0YSBpcyBub3Qgb2YgdHlwZSBDRkRhdGEsIGNhbm5vdCBjcmVh
dGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ICAgIH0KLSAgICAgICAgCisKICAgICAgICAgYXV0byByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiA9
IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5
LCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZVZlcnNpb25LZXkpKTsKICAgICAgICAg
aWYgKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uICYmIENGR2V0VHlwZUlEKHJlc291cmNlUmVzcG9u
c2VWZXJzaW9uKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7CiAgICAgICAgICAgICBMT0coQXJj
aGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgdmVyc2lvbiBpcyBu
b3Qgb2YgdHlwZSBDRlN0cmluZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAg
ICByZXNwb25zZSA9IGNyZWF0ZVJlc291cmNlUmVzcG9uc2VGcm9tUHJvcGVydHlMaXN0RGF0YShy
ZXNvdXJjZVJlc3BvbnNlRGF0YSwgcmVzb3VyY2VSZXNwb25zZVZlcnNpb24pOwogICAgIH0KIApA
QCAtMjQ4LDIzICsyNDgsMjMgQEAgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmIG1haW5SZXNvdXIKICAgICByZXR1cm4g
YXJjaGl2ZTsKIH0KIAotUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEpCitSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAg
ICAgcmV0dXJuIGNyZWF0ZShVUkwoKSwgZGF0YSk7CiB9CiAKLVJlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBk
YXRhKQorUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShj
b25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIExPRyhBcmNo
aXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBmcm9tIHJhdyBkYXRhIik7Ci0gICAg
CisKICAgICBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IGNyZWF0ZSgpOwotICAgICAg
ICAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLmNyZWF0ZUNGRGF0YSgp
OworCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVDRkRhdGEoKTsKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgICAgIAorCiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG51bGxwdHI7Ci0gICAg
CisKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwbGlzdCA9IGFkb3B0Q0Yoc3RhdGlj
X2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKDAsIGNm
RGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRhYmxlLCAwLCAmZXJyb3IpKSk7CiAgICAg
aWYgKCFwbGlzdCkgewogI2lmbmRlZiBOREVCVUcKQEAgLTI3NiwxMiArMjc2LDEyIEBAIFJlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwg
U2hhcmVkQnVmZmVyJiBkYXRhCiAgICAgICAgICAgICBDRlJlbGVhc2UoZXJyb3IpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoQ0ZHZXRUeXBlSUQocGxp
c3QuZ2V0KCkpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKSB7CiAgICAgICAgIExPRyhBcmNo
aXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBBcmNoaXZlIHByb3BlcnR5IGxpc3QgaXMgbm90IHRo
ZSBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWFyY2hpdmUt
PmV4dHJhY3QocGxpc3QuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjk1
LDcgKzI5NSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlS
ZWYgZGljdGlvbmFyeSkKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAt
IE51bGwgcm9vdCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgQ0ZEaWN0aW9uYXJ5UmVm
IG1haW5SZXNvdXJjZURpY3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlv
bmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVNYWluUmVzb3VyY2VLZXkp
KTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURpY3QpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAi
TGVnYWN5V2ViQXJjaGl2ZSAtIE5vIG1haW4gcmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJvcnRpbmcg
aW52YWxpZCBXZWJBcmNoaXZlIik7CkBAIC0zMzMsNyArMzMzLDcgQEAgYm9vbCBMZWdhY3lXZWJB
cmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAg
ICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBpcyBub3Qg
ZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAK
KwogICAgICAgICAgICAgaWYgKGF1dG8gc3VicmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZShzdWJy
ZXNvdXJjZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YnJlc291cmNlKHN1YnJlc291cmNl
LnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICB9CkBAIC0zNTMsNyArMzUzLDcgQEAgYm9vbCBM
ZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAg
ICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJmcmFtZSBh
cnJheSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFy
Y2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAKKwogICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUo
KTsKICAgICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJhbWVEaWN0
KSkKICAgICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoV1RGTW92ZShzdWJmcmFtZUFy
Y2hpdmUpKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJh
Y3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hp
dmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBza2lwcGVk
Iik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
NTA2LDcgKzUwNiw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyCiB7CiAgICAgYXV0byYgcmVz
cG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwogICAg
IFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwotICAgIAorCiAgICAgLy8gaXQncyBw
b3NzaWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ugd2l0aG91dCBhIFVSTCBoZXJlCiAgICAgLy8gPHJk
YXI6Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAgaWYgKHJlc3BvbnNlVVJMLmlzTnVsbCgpKQpAQCAt
NjA1LDcgKzYwNSw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKIAogICAgIGlmICghZG9jdW1lbnQt
PmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0dXJuIGFyY2hpdmU7Ci0gICAgICAgIAorCiAgICAg
Ly8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBw
YXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJv
ZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAi
PGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0
PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+
PC9pZnJhbWU+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xl
Z2FjeVdlYkFyY2hpdmUuaAppbmRleCBkMDllYzlmNzVhYmExMzZhODYzMzllYjRkODZhYmQ4Mjc3
YzRmZjA0Li41YTA3YjEwYjRiZTZmODYyMDExYTc4MmE3ZGVkMjM2NzU5MjQzNjI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5o
CkBAIC00MSw4ICs0MSw4IEBAIHN0cnVjdCBTaW1wbGVSYW5nZTsKIGNsYXNzIExlZ2FjeVdlYkFy
Y2hpdmUgZmluYWwgOiBwdWJsaWMgQXJjaGl2ZSB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShTaGFyZWRCdWZmZXIm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNy
ZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBj
cmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKFJlZjxBcmNoaXZlUmVz
b3VyY2U+JiYgbWFpblJlc291cmNlLCBWZWN0b3I8UmVmPEFyY2hpdmVSZXNvdXJjZT4+JiYgc3Vi
cmVzb3VyY2VzLCBWZWN0b3I8UmVmPExlZ2FjeVdlYkFyY2hpdmU+PiYmIHN1YmZyYW1lQXJjaGl2
ZXMpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
Y3JlYXRlKE5vZGUmLCBGdW5jdGlvbjxib29sKEZyYW1lJik+JiYgZnJhbWVGaWx0ZXIgPSB7IH0p
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3Jl
YXRlKEZyYW1lJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTEFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0
bWwvTUhUTUxBcmNoaXZlLmNwcAppbmRleCBhY2ZiYmI3MDIwMjJkMDZhZmU2MjAwNDA0ODdmZDM0
ZDkyMWQ3MjdjLi5kMDEzOWY4N2EwNmY5Njk3OGI3NDc3ZTlmNDk5OWMzNGVhOWY4NjI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2
ZS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBSZWY8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6
OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTUhUTUxBcmNoaXZlKTsKIH0KIAot
UmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmws
IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6
Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewog
ICAgIC8vIEZvciBzZWN1cml0eSByZWFzb25zIHdlIG9ubHkgbG9hZCBNSFRNTCBwYWdlcyBmcm9t
IGxvY2FsIFVSTHMuCiAgICAgaWYgKCFMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRV
UkxTY2hlbWVBc0xvY2FsKHVybC5wcm90b2NvbCgpLnRvU3RyaW5nKCkpKQpAQCAtMTMwLDcgKzEz
MCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVS
TCYgdXJsLCBTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgcmV0dXJuIG1haW5BcmNoaXZlOwogfQog
Ci1SZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2Uq
IHBhZ2UpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0
ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogewogICAgIFZlY3RvcjxQYWdlU2VyaWFsaXplcjo6UmVz
b3VyY2U+IHJlc291cmNlczsKICAgICBQYWdlU2VyaWFsaXplciBwYWdlU2VyaWFsaXplcihyZXNv
dXJjZXMpOwpAQCAtMTYyLDggKzE2Miw4IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2
ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJl
bG93IGluc3RlYWQgb2YgYXNjaWkoKSBhcyBhc2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8g
KHdlIHN0aWxsIG9ubHkgaGF2ZSBwdXQgQVNDSUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNT
RVJUKHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKS5pc0FsbEFTQ0lJKCkpOwogICAgIENTdHJpbmcg
YXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgIGF1dG8g
bWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVu
ZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIG1odG1sRGF0YTsKKyAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5n
LmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgZm9yIChhdXRvJiByZXNvdXJj
ZSA6IHJlc291cmNlcykgewogICAgICAgICBzdHJpbmdCdWlsZGVyLmNsZWFyKCk7CkBAIC0xNzgs
MTUgKzE3OCwxNSBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhU
TUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcclxuQ29u
dGVudC1UcmFuc2Zlci1FbmNvZGluZzogIiwgY29udGVudEVuY29kaW5nLCAiXHJcbkNvbnRlbnQt
TG9jYXRpb246ICIsIHJlc291cmNlLnVybC5zdHJpbmcoKSwgIlxyXG5cclxuIik7CiAKICAgICAg
ICAgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgICAg
ICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0
aCgpKTsKKyAgICAgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lp
U3RyaW5nLmxlbmd0aCgpKTsKIAogICAgICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBl
bmNvZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJlYW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQg
YWxsLgogICAgICAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UuZGF0YS0+ZGF0YSgpOwogICAgICAg
ICBzaXplX3QgZGF0YUxlbmd0aCA9IHJlc291cmNlLmRhdGEtPnNpemUoKTsKICAgICAgICAgaWYg
KCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBxdW90ZWRQcmludGFibGUpKSB7CiAgICAgICAgICAg
ICBhdXRvIGVuY29kZWREYXRhID0gcXVvdGVkUHJpbnRhYmxlRW5jb2RlKGRhdGEsIGRhdGFMZW5n
dGgpOwotICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBl
bmNvZGVkRGF0YS5zaXplKCkpOwotICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4i
LCAyKTsKKyAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBl
bmNvZGVkRGF0YS5zaXplKCkpOworICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIs
IDIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKCFzdHJjbXAoY29udGVu
dEVuY29kaW5nLCBiYXNlNjQpKTsKICAgICAgICAgICAgIC8vIFdlIGFyZSBub3Qgc3BlY2lmeWlu
ZyBpbnNlcnRMRnMgPSB0cnVlIGJlbG93IGFzIGl0IHdvdWxkIGN1dCB0aGUgbGluZXMgd2l0aCBM
RnMgYW5kIE1IVE1MIHJlcXVpcmVzIENSTEZzLgpAQCAtMTk2LDE3ICsxOTYsMTcgQEAgUmVmPFNo
YXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQog
ICAgICAgICAgICAgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoID0gZW5jb2RlZERhdGEuc2l6ZSgp
OwogICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgIHNpemVfdCBsaW5lTGVuZ3RoID0g
c3RkOjptaW4oZW5jb2RlZERhdGFMZW5ndGggLSBpbmRleCwgbWF4aW11bUxpbmVMZW5ndGgpOwot
ICAgICAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGlu
ZGV4LCBsaW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJc
biIsIDIpOworICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0
YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOworICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBl
bmQoIlxyXG4iLCAyKTsKICAgICAgICAgICAgICAgICBpbmRleCArPSBtYXhpbXVtTGluZUxlbmd0
aDsKICAgICAgICAgICAgIH0gd2hpbGUgKGluZGV4IDwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAg
ICAgICB9CiAgICAgfQogCiAgICAgYXNjaWlTdHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5k
YXJ5LCAiLS1cclxuIikudXRmOCgpOwotICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5n
LmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgIG1odG1sRGF0YS5hcHBlbmQoYXNj
aWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKLSAgICByZXR1cm4gbWh0
bWxEYXRhOworICAgIHJldHVybiBtaHRtbERhdGEudGFrZSgpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oCmluZGV4IDNk
MmRiN2M5NjAwMmViZTY4NGIyYmVmOGYxZWE5ZTJlOTc5NGE1ODkuLjJkZmU4N2U4MmU3YTRkY2Uw
ZjM0MWMzNjE5NDNjOTkwMjA1YzhkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oCkBAIC0zOCwxNCArMzgsMTQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBNSFRNTFBhcnNlcjsKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNSFRN
TEFyY2hpdmUgZmluYWwgOiBwdWJsaWMgQXJjaGl2ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxNSFRNTEFyY2hpdmU+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBSZWZQdHI8TUhUTUxBcmNoaXZl
PiBjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxN
SFRNTEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7
CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZ2VuZXJhdGVNSFRNTERhdGEoUGFnZSop
OworICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZ2VuZXJhdGVNSFRNTERh
dGEoUGFnZSopOwogCiAgICAgdmlydHVhbCB+TUhUTUxBcmNoaXZlKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCBm
MWI5MDFkZDAyMDNkY2FjOTRkZjZkMGVhZTRjYjJkMGJkYjgwMTVlLi5lNTE4NmVmYjBiNGZhNzBj
YjYwOTMxZjQ4NGU1MDBjYzEwZTAwYmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRp
YyBib29sIHNraXBMaW5lc1VudGlsQm91bmRhcnlGb3VuZChTaGFyZWRCdWZmZXJDaHVua1JlYWRl
ciYgbGluZVJlYWRlciwgY29uCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1NSFRNTFBhcnNlcjo6
TUhUTUxQYXJzZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQorTUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2Vy
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgOiBtX2xpbmVSZWFkZXIoZGF0YSwg
IlxyXG4iKQogewogfQpAQCAtMTQwLDcgKzE0MCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIs
CiB7CiAgICAgQVNTRVJUKGVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9PSBlbmRPZkRvY3Vt
ZW50Qm91bmRhcnkuaXNFbXB0eSgpKTsKIAotICAgIGF1dG8gY29udGVudCA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBjb250ZW50OwogICAgIGNvbnN0
IGJvb2wgY2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAg
Ym9vbCBlbmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVu
dFRyYW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTE1NCw3ICsx
NTQsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFy
dChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAgTE9HX0VSUk9SKCJC
aW5hcnkgY29udGVudHMgcmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRlbnQtPmFwcGVuZChXVEZNb3ZlKHBh
cnQpKTsKKyAgICAgICAgY29udGVudC5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CiAgICAgICAgIG1f
bGluZVJlYWRlci5zZXRTZXBhcmF0b3IoIlxyXG4iKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IG5leHRDaGFyczsKICAgICAgICAgaWYgKG1fbGluZVJlYWRlci5wZWVrKG5leHRDaGFycywgMikg
IT0gMikgewpAQCAtMTgwLDEwICsxODAsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhU
TUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIE5vdGUg
dGhhdCB3ZSB1c2UgbGluZS51dGY4KCkgYW5kIG5vdCBsaW5lLmFzY2lpKCkgYXMgYXNjaWkgdHVy
bnMgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIHRhYiwgbGluZS1mZWVkLi4uKSBpbnRvICc/
Jy4KLSAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUu
bGVuZ3RoKCkpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgp
LCBsaW5lLmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFu
c2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlKSB7CiAgICAgICAg
ICAgICAgICAgLy8gVGhlIGxpbmUgcmVhZGVyIHJlbW92ZXMgdGhlIFxyXG4sIGJ1dCB3ZSBuZWVk
IHRoZW0gZm9yIHRoZSBjb250ZW50IGluIHRoaXMgY2FzZSBhcyB0aGUgUXVvdGVkUHJpbnRhYmxl
IGRlY29kZXIgZXhwZWN0cyBDUi1MRiB0ZXJtaW5hdGVkIGxpbmVzLgotICAgICAgICAgICAgICAg
IGNvbnRlbnQtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBw
ZW5kKCJcclxuIiwgMik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTMs
OSArMTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5l
eHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGRhdGE7CisgICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQudGFr
ZUFzQ29udGlndW91cygpOwogICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJF
bmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0
byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNp
emUoKSk7CisgICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91
c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlm
ICghZGVjb2RlZERhdGEpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQg
Y29udGVudCBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtMjA0LDExICsyMDUsMTEgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6
OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAg
ICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+
c2l6ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250aWd1b3Vz
Q29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6
OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5z
aXplKCkpOworICAgICAgICBkYXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBj
b250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmgK
aW5kZXggMWU5YmQ0ZDc3NjdlZTM5MWEwMDIyZjcxNzQ4ZjAwYjg1YzgxYjI1Zi4uMGQ2MDQzNDNm
M2Q3YWQxNzhjYzIyMDAzYzk3OWMyMmU1MGEzYjk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oCkBAIC00MiwxMSArNDIsMTEgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwogY2xhc3MgTUhUTUxB
cmNoaXZlOwogY2xhc3MgTUlNRUhlYWRlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1IVE1MUGFyc2VyIHsKIHB1YmxpYzoKLSAg
ICBleHBsaWNpdCBNSFRNTFBhcnNlcihTaGFyZWRCdWZmZXIqKTsKKyAgICBleHBsaWNpdCBNSFRN
TFBhcnNlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICAgICBSZWZQdHI8TUhUTUxBcmNo
aXZlPiBwYXJzZUFyY2hpdmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4IDRmMjI4ZThkMDM4
OWI4YjhjYjdmNDE0ODZmZGI3ODFjOWJmNjViZDIuLmRkZDBiMWI4OWIxZDg3MmJiNDI3MjdlZTc4
ZDhmZDYzOWU0Yjg5NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTQwLDEyICs0MCwxNiBAQCBD
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0KENhY2hl
ZFJlc291cmNlUmVxdWVzdCYmIHJlcQogewogfQogCi12b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlz
aExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5j
b2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAg
ICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAg
ICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAg
ICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5kZXggMDdmMmEwNzlj
NTY0ZWVmZmI2OTdjMzdjNzg1NjVlMWVhOGQ5YWU1ZS4uMzc5OGE5YjRkOTAxM2NmZGVhNmY1NmZi
ZGYwMDE1YWY4OTQ3NTcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1Ymxp
YzoKICAgICBzdGQ6Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9jZXNz
KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERvY3VtZW50
KiA9IG51bGxwdHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZp
bmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRl
eHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIucHRy
KCk7IH0KICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAg
IFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2
MWU2Mzc0MmY3NGNjNmEwYmNmMDAwYmE5YjE3NmYuLjM4YTJlMTdmMGQwNmM4YWM5OGRlMjRiMWU1
MmI4ZTYwZTkyNDEyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3RyaW5nIENh
Y2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNo
ZWNrSGludCwKICAgICAgICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAgIC8vIERv
bid0IGNhY2hlIHRoZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQg
Y2FuIHVzZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJldHVybiBt
X2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBtX2RhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9k
eURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk3LDEzICs5Nywx
NyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIHNhdmVQYXJzZWRTdHlsZVNoZWV0KCpzaGVl
dC5tX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSk7CiB9CiAKLXZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVl
dDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShk
YXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQg
b3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNo
ZWNrTm90aWZ5KCkKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0g
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Cisg
ICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgLy8gRGVjb2Rl
IHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4
dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKKyAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0
ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRF
bmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tO
b3RpZnkobWV0cmljcyk7CiAgICAgLy8gQ2xlYXIgdGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1
bmxpa2VseSB0byBiZSBuZWVkZWQgaW1tZWRpYXRlbHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJl
Z2VuZXJhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuaAppbmRleCA1ZDRkZDNkYzdlMzUzZWUzY2IyZmI5M2YyNzhkMjU3OWI4ZDlhN2Ex
Li5lNjU1YzY5ZTNlZGI2MDk1MDIzOWNjZTQ1NDVmMDk2YjUyNjU2ZGU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKQEAgLTU1LDcg
KzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZp
bmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRS
ZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCiAgICAg
dm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA4YzJiYzJhMzQxYzgy
MzUxZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5kMmJjMjgyMTQ3OWM1OWEyMzIzZTRmNjVjZDk0
YjYzYjQyMzczNjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwCkBAIC02NCwxMCArNjQsMTUgQEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2Fj
aGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICAgICAgc3RhdGljX2Nhc3Q8Q2FjaGVkRm9u
dENsaWVudCY+KGNsaWVudCkuZm9udExvYWRlZCgqdGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkRm9u
dDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0
KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKG1fZGF0
YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAg
ICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAg
ICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CkBAIC0xMDUsNyArMTEwLDcgQEAgYm9vbCBDYWNo
ZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCiAKIHN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0
b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsK
KyAgICBSZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0
V09GRlRvU2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxs
cHRyOwogfQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnko
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hl
ZEZvbnRDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xp
ZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQo
KnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2Vi
ZGM1NTdmMTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMTM0NjZjYzk5ZDBkMTljYmYz
ZDhlZjNkZmJkOTZmMzRkMGY4NTQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgTk9fUkVUVVJOX0RVRV9U
T19BU1NFUlQgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5h
bCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNo
ZWRSZXNvdXJjZUNsaWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cAppbmRleCBiMTU5ZjI5ZWU5MGZlM2RlMDE5YzExNDliZGE2OTRlMGU2ZjZiNTQyLi45NDYyNzk1
MjBkMGRhNDQ2MjJjNmFjZDM2NjYyMjg4MTA1ZTgxOTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ2OCw5ICs0NjgsOSBAQCBpbmxpbmUgdm9p
ZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAgICAgbV91cGRhdGVJbWFnZURhdGFDb3VudCA9
IDA7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1
ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgbV9kYXRhID0gJmRhdGE7Cisg
ICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1f
ZGF0YS0+c2l6ZSgpKTsKICAgICBjcmVhdGVJbWFnZSgpOwogCkBAIC01MjMsMTIgKzUyMywxNCBA
QCBib29sIENhY2hlZEltYWdlOjpzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0CiAg
ICAgcmV0dXJuIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fbGFzdFVwZGF0ZUltYWdlRGF0YVRp
bWUpLnNlY29uZHMoKSA8IHVwZGF0ZUltYWdlRGF0YUJhY2tvZmZJbnRlcnZhbHNbaW50ZXJ2YWxd
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlm
TmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IENh
Y2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSkgY29uc3QKIHsKLSAgICBpZiAoIWRhdGEgfHwgIWlzUG9zdFNjcmlwdFJlc291
cmNlKCkpCi0gICAgICAgIHJldHVybiBkYXRhOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgaWYgKCFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQorICAgICAgICBy
ZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0Uo
V0VCS0lUX0lNQUdFX0RFQ09ERVJTKQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQ
REZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5jcmVhdGVD
RkRhdGEoKSkuZ2V0KCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1
bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOwogI2Vsc2UKICAgICAvLyBMb2FkaW5nIHRoZSBp
bWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGVkIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3Qgc3Vw
cG9ydCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQgdG8gUERGLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtNTUzLDcgKzU1NSw3IEBAIEVuY29kZWREYXRhU3RhdHVzIENhY2hlZEltYWdlOjp1
cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkK
K3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1
ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoZGF0
YSk7CkBAIC01NjcsNyArNTY5LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVw
ZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKK3ZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAg
IG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsKICAgICBpZiAobV9kYXRhKSB7
CkBAIC01OTMsNyArNTk1LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWUKIHZvaWQgQ2FjaGVk
SW1hZ2U6OmRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpCiB7CiAgICAgaWYgKG1faW1h
Z2UpIHsKLSAgICAgICAgLy8gTGV0IHRoZSBJbWFnZSBrbm93IHRoYXQgdGhlIFNoYXJlZEJ1ZmZl
ciBoYXMgYmVlbiByZWppZ2dlZCwgc28gaXQgY2FuIGxldCBnbyBvZiBhbnkgcmVmZXJlbmNlcyB0
byB0aGUgaGVhcC1hbGxvY2F0ZWQgcmVzb3VyY2UgYnVmZmVyLgorICAgICAgICAvLyBMZXQgdGhl
IEltYWdlIGtub3cgdGhhdCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBoYXMgYmVlbiByZWpp
Z2dlZCwgc28gaXQgY2FuIGxldCBnbyBvZiBhbnkgcmVmZXJlbmNlcyB0byB0aGUgaGVhcC1hbGxv
Y2F0ZWQgcmVzb3VyY2UgYnVmZmVyLgogICAgICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8y
NDI3NTYxNyk6IEl0IHdvdWxkIGJlIGJldHRlciBpZiB3ZSBjb3VsZCBzb21laG93IHRlbGwgdGhl
IEltYWdlJ3MgZGVjb2RlciB0byBzd2FwIGluIHRoZSBuZXcgY29udGVudHMgd2l0aG91dCBkZXN0
cm95aW5nIGFueXRoaW5nLgogICAgICAgICBtX2ltYWdlLT5kZXN0cm95RGVjb2RlZERhdGEodHJ1
ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRl
eCBlMzg5NjJhMGRjYWZiY2VmNjMxYzE0ZTYzZmViODViYTA1NTIwM2Y0Li4wODNmOTJmODg4Mjc2
ZWVkYTg5OTEyMDMxZDI0NDlhOTY4ZTI2NWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuaApAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbWFn
ZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhh
c1JlbGF0aXZlV2lkdGgoKTsgfQogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsgfQog
Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAg
ICAgZW51bSBTaXplVHlwZSB7CiAgICAgICAgIFVzZWRTaXplLApAQCAtMTI1LDcgKzEyNSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAg
IGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25z
dDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJ
bWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwog
ICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZv
aWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVC
dWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICB2b2lk
IGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA5MmIw
ODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3ZjE4Mzk1NjJmLi44OTVkYjExNThiNmI4YzhmYmY3
YjEwYjQzYjYxNGVkYTk2MDIxY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgQ2FjaGVkUmF3UmVz
b3VyY2U6OkNhY2hlZFJhd1Jlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFR5cGUgdHlwZSwKICAgICBBU1NFUlQoaXNNYWluT3JNZWRpYU9ySWNvbk9yUmF3UmVzb3VyY2Uo
KSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jl
c291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBTaGFyZWRCdWZmZXIq
IGRhdGEpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRS
YXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKICAgICBzaXplX3QgcHJldmlvdXNEYXRhTGVu
Z3RoID0gZW5jb2RlZFNpemUoKTsKICAgICBpZiAoIWRhdGEgfHwgZGF0YS0+c2l6ZSgpIDw9IHBy
ZXZpb3VzRGF0YUxlbmd0aCkKQEAgLTU2LDcgKzU2LDcgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRC
dWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0
YUMKICAgICByZXR1cm4gZGF0YS0+Z2V0U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKIH0K
IAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0
YSkKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIFNraXAgYW55IHVwZGF0ZUJ1ZmZlcnMgdHJp
Z2dlcmVkIGZyb20gbmVzdGVkIHJ1bmxvb3BzLiBXZSdsbCBoYXZlIHRoZSBjb21wbGV0ZSBidWZm
ZXIgaW4gZmluaXNoTG9hZGluZy4KICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkK
QEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jl
c291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9s
aWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0g
JmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0byBw
cmV2aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXplKCkg
PiBwcmV2aW91c0RhdGFTaXplKSB7CkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVz
b3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQog
ICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQg
Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpm
aW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0
YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBtYXkgZ2V0IGhlcmUgc3luY2hyb25vdXNseSBmcm9t
IHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxsYmFjayB0aGVyZSBlbmRzIHVwIHNwaW5uaW5nIGEg
cnVubG9vcC4KQEAgLTEwNywxMiArMTA3LDE0IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAg
ICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXMo
dGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9saWN5ID0gdGhp
cy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOwogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09
IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gZGF0
YTsKLQotICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1l
bnRhbERhdGFDaHVuayhkYXRhKSkgewotICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+
c2l6ZSgpKTsKLSAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVt
ZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgfQor
ICAgICAgICBpZiAoZGF0YSkgeworICAgICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0
ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7CisgICAgICAgICAgICAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdh
c1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUo
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9kYXRhID0g
bnVsbHB0cjsKICAgICB9CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXggODRlMGQ4NDRkNTcxMDk5
NTNhZTZiZmY2NTU2NTk5NTNlMjhiYTY5Yi4uYTc4NjVmOGFkMTc4YWVmYjMyMjBhNTZkY2ZmMTk1
OTkzY2Y5NWFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZv
aWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7Ci0gICAgdm9pZCB1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGRJ
Z25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CkBAIC02Niw3ICs2Niw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNl
KCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2FsbG93RW5jb2RlZERhdGFSZXBsYWNlbWVudDsgfQogCi0gICAg
c3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxE
YXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyKikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxT
aGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopIGNvbnN0OwogICAgIHZvaWQgbm90aWZ5Q2xpZW50c0Rh
dGFXYXNSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwogICAg
IAogI2lmIFVTRShRVUlDS19MT09LKQpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIFZl
Y3RvcjxSZWRpcmVjdFBhaXIsIDAsIENyYXNoT25PdmVyZmxvdywgMD4gbV9yZWRpcmVjdENoYWlu
OwogCiAgICAgc3RydWN0IERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxEZWxheWVkRmluaXNo
TG9hZGluZz4gbV9kZWxheWVkRmluaXNoTG9hZGluZzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCAzZTQ0NmZiOTE3NGZmNjgyMDAw
MTE0YTcyYTNlMmEwMTBlNzgxMDg4Li45ZGUwYTA0Y2Q1ZWM1ZjNmYWQyZmIxNmQ3YjMyMmM4NThh
MzhhNmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05vdGlm
eShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVudC0+bm90
aWZ5RmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1
ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikKIHsKICAgICBBU1NFUlQoZGF0YUJ1
ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogfQpA
QCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3Qg
dWludDhfdCosIHVuc2lnbmVkKQogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRS
ZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7
CkBAIC05MjksOCArOTI5LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29k
ZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlmICgqbV9kYXRhICE9IG5ld0J1
ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5jbGVhcigpOwotICAgIG1fZGF0
YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVmIHsgbmV3QnVmZmVyIH07CiAg
ICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMzk2MDAyODMyY2MxNTNjNTkw
NDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uYzk4MmRkNjkzN2EwYmMyYmYzOGM0MjYxMjZmZmU2ZTc4
Yzc5NjQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgQ29va2llSmFyOwogY2xhc3MgTWVtb3J5Q2FjaGU7
CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJy
ZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiAKQEAgLTExMiw5ICsx
MTIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNv
dXJjZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVm
ZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZpcnR1
YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZv
aWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNl
RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApp
bmRleCA3ZGExNDg1MWE3MDc4NGFhYmU5ODM5YjcwNmEwYjFiMzMxZjJjODM5Li5kYjQzMTYwN2Fl
NTYzODMwMzgwMGRkMjU5YzEwMzRjZDA5MGZjZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKQEAgLTUyLDEyICs1MiwxMiBAQCBT
dHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9k
ZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8g
Y3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRo
ZSBwYXJlbnQgVXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50Ojpj
cmVhdGUobnVsbHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2UoKS51cmwoKSk7Ci0gICAgICAgIG1f
ZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRh
KCksIGRhdGEtPnNpemUoKSkpOworICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVj
b2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0
YSwgbWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudC5oCmluZGV4IGU4YzE1ZjM2MGZjOTFhYzhiMzRkMzk2Mjk1YzUzZDNjN2YxNDdl
YWEuLjQ0NWU0ZjlmNDJjM2MyNzQwNzk3NmE2NGU5MTU0MDdmOGI1MzRkMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC00Myw3ICs0
Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25zdCBU
ZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9j
dW1lbnQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2
YmI2OTM5MzNhMjIzNDY5NTU1NzU2YjM2NjdlNDg2MzJlLi5kMmMxZGU0N2VmYjc4MTM5OGY0NDM4
YjdjYTRlYTI2MGUyMjE5NzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5z
dXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogCiAgICAgICAg
ICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNh
YmxlZFNjb3BlOwogCi0gICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRl
bnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgp
KSk7CisgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0
YS0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBzYXdFcnJvciA9IGRlY29kZXItPnNhd0Vycm9yKCk7
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmNwcAppbmRleCA1NGU2NzZjZTUwYjA5NmI1NjA3YzNjMDMwZjdkOWFjYzA1YzRmYTg4Li42MmEx
NmU4NmIzMjE5M2Q4ZTU2ZDYxOTJmNzdlOWJjNmY0MDhlOWJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtOTYsMTAgKzk2LDE1IEBAIHVuc2ln
bmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAgICAgcmV0dXJuIG1fc2NyaXB0SGFzaDsK
IH0KIAotdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNjcmlwdDo6
ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBz
ZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEpIHsK
KyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5j
b2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBu
dWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5MjRiODRjYTJkODcxNmUzNDYwNzdl
ZWViNWNjMzRiY2VkZTdlMjNkLi44NjUxZTYzOWFkOTA2MTcyODU2MWMzMjRiZmE3YWY0Y2Y5N2Y2
ZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCkBAIC00
Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcm
KSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBU
ZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNo
TG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CiAKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmlu
ZGV4IDEyMjk4MTUwMzEyODg2MWVjNGY1ZWI0Y2Y1MGYzMjA4NmI1ZGViNjEuLjBjODQyOGJiOTlk
YjZkZmIxNmEzNDgxMzRjMzgyNjgzNmNjZTU0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCkBAIC00MCwxMCArNDAsMTAgQEAgQ2FjaGVk
VGV4dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgUEFMOjpTZXNzaW9uSUQKIHsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRl
QnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0
ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEFTU0VS
VChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0
YSk7Ci0gICAgbV9kYXRhID0gZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKSA6IFJlZlB0cjxTaGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5jb2RlZFNpemUo
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxr
ZXI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwpAQCAtNTEsMTMgKzUx
LDEzIEBAIHZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIq
IGRhdGEpCiAgICAgICAgIGNsaWVudC0+ZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJj
ZSgqdGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoU2hhcmVk
QnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGRvVXBkYXRlQnVmZmVyKCZkYXRh
KTsKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogfQogCi12b2lkIENh
Y2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hM
b2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBD
YWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAppbmRleCA4NWUzOTYyMDY1MTMx
NjA3MDM2NTNlYjIyYzc3MTM4YjkxNTA3YWRkLi4wOWI0MzM5YTM3YjY3M2IyYWM0ZmRhZTE0NmIy
OWI5NjQ3NzdmY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRl
eHRUcmFjay5oCkBAIC0zNSwxMCArMzUsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJv
b2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAg
IHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsK
IAotICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBkb1Vw
ZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5MGY0NjdhMjc4
MjYxNWQzNDAwYy4uZDJlZmYyZDJkNDBjOTI3NzM4NzU2YzRhOGYwY2JiOTM0M2JlMTBhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmNwcApAQCAtNjEsMTIgKzYxLDE2IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNv
ZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9
CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkWFNM
U3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0g
ZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAg
aWYgKGRhdGEpCi0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRh
dGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9k
YXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0
YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2go
bV9kYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1f
ZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBz
ZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmluZGV4IDY4
NDJiNjQ0ZjYxY2Y5MGY3ZjYxYjJmN2VjNWUwMDY1NGNkMTBjY2MuLmJkMjMxMjE0ZjJkMjBiYTM5
NjQ0NjAzNjZlMDQxYjk0MTM1YWM0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVu
Y29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4
dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsg
fQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAg
U3RyaW5nIG1fc2hlZXQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2Rl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgK
aW5kZXggNTUyNTYxZDZjODE2ZDNkMjBiY2ZjY2IyZTY1ODNiN2RlOTRiOTRhMi4uZThiZTFiMjEz
NzZhMDU4NjlkMGU2MjVjZDg0YmJlYTJjOGVhMjhhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lu
Y2x1ZGUgIlByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaCIKICNpbmNsdWRlICJQcmV2aWV3Q29udmVy
dGVyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KQEAgLTM3LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
TGVnYWN5UHJldmlld0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTGVnYWN5UHJl
dmlld0xvYWRlciBmaW5hbCA6IHByaXZhdGUgUHJldmlld0NvbnZlcnRlckNsaWVudCwgcHJpdmF0
ZSBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgYm9vbCBkaWRSZWNlaXZlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgZGlkUmVjZWl2ZUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBib29sIGRpZFJlY2VpdmVCdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIGJvb2wgZGlkRmluaXNoTG9hZGluZygp
OwogICAgIHZvaWQgZGlkRmFpbCgpOwogCkBAIC02MCwxNyArNjAsMTcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hVcGRhdGluZyhQcmV2aWV3Q29udmVydGVy
JikgZmluYWwgeyB9OwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxVcGRhdGluZyhQ
cmV2aWV3Q29udmVydGVyJikgZmluYWw7CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkU3Rh
cnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKLSAgICB2b2lkIHByZXZpZXdD
b252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hhcmVkQnVm
ZmVyJikgZmluYWw7CisgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJl
dmlld0NvbnZlcnRlciYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAg
ICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0
ZXImKSBmaW5hbDsKICAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsQ29udmVydGluZyhQ
cmV2aWV3Q29udmVydGVyJikgZmluYWw7CiAKICAgICAvLyBQcmV2aWV3Q29udmVydGVyUHJvdmlk
ZXIKLSAgICB2b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZp
ZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciop
PiYmKSBmaW5hbDsKKyAgICB2b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVy
dGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqKT4mJikgZmluYWw7CiAgICAgdm9pZCBwcm92aWRlUGFzc3dvcmRG
b3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVy
dGVyPiBtX2NvbnZlcnRlcjsKICAgICBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbV9j
bGllbnQ7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9vcmlnaW5hbERhdGE7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBtX29yaWdpbmFsRGF0YTsKICAgICBXZWFrUHRyPFJlc291cmNlTG9hZGVy
PiBtX3Jlc291cmNlTG9hZGVyOwogICAgIGJvb2wgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0Nv
bnZlcnRlciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlIHsgZmFs
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5tbQppbmRleCBkMThiMjUyZTk3NTZjOGNlMGM5NWI2M2U3OGRkMDA5N2VmMmE1NzM0Li4zNWY2
YzE0OTlhNTRiNDAwMDkzYmMyZTg5MmQ3OTgzNzYwM2Q2YzA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC02MywxMyArNjMsMTMg
QEAgc3RhdGljIFJlZjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBtYWtlQ2xpZW50KGNvbnN0
IFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGMKICAgICByZXR1cm4gZW1wdHlDbGllbnQoKTsKIH0K
IAotYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAobV9m
aW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgTE9HKE5ldHdvcmssICJMZWdhY3lQcmV2aWV3TG9hZGVyIGFwcGVuZGluZyBidWZmZXIg
d2l0aCBzaXplICVsZC4iLCBidWZmZXIuc2l6ZSgpKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+YXBw
ZW5kKGJ1ZmZlcik7CisgICAgbV9vcmlnaW5hbERhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgbV9j
b252ZXJ0ZXItPnVwZGF0ZU1haW5SZXNvdXJjZSgpOwogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
QnVmZmVyKGJ1ZmZlcik7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9p
ZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5n
KFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2hh
c1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsKKyAgICBt
X29yaWdpbmFsRGF0YS5lbXB0eSgpOwogICAgIHJlc291cmNlTG9hZGVyLT5kb2N1bWVudExvYWRl
cigpLT5zZXRQcmV2aWV3Q29udmVydGVyKFdURk1vdmUobV9jb252ZXJ0ZXIpKTsKICAgICBhdXRv
IHJlc3BvbnNlIHsgY29udmVydGVyLnByZXZpZXdSZXNwb25zZSgpIH07CiAKQEAgLTE0Nyw3ICsx
NDcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFy
dENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYgYwogICAgIH0pOwogfQogCi12b2lkIExlZ2Fj
eVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29u
dmVydGVyJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBMZWdhY3lQcmV2aWV3TG9h
ZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgYXV0byByZXNvdXJjZUxv
YWRlciA9IG1fcmVzb3VyY2VMb2FkZXIuZ2V0KCk7CiAgICAgaWYgKCFyZXNvdXJjZUxvYWRlcikK
QEAgLTIyNCwxMCArMjI0LDEwIEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZVBh
c3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjCiAgICAgbV9jbGll
bnQtPmRpZFJlcXVlc3RQYXNzd29yZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAK
LXZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdD
b252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBMZWdh
Y3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQ
cmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09IG1fY29udmVydGVyKTsKLSAgICBj
b21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5wdHIoKSk7CisgICAgY29tcGxldGlvbkhh
bmRsZXIobV9vcmlnaW5hbERhdGEuZ2V0KCkuZ2V0KCkpOwogfQogCiBMZWdhY3lQcmV2aWV3TG9h
ZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKQEAgLTIzNSw3ICsyMzUsNyBA
QCBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsK
IExlZ2FjeVByZXZpZXdMb2FkZXI6OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3VyY2VMb2FkZXIm
IGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgOiBtX2NvbnZl
cnRlciB7IFByZXZpZXdDb252ZXJ0ZXI6OmNyZWF0ZShyZXNwb25zZSwgKnRoaXMpIH0KICAgICAs
IG1fY2xpZW50IHsgbWFrZUNsaWVudChsb2FkZXIsIG1fY29udmVydGVyLT5wcmV2aWV3RmlsZU5h
bWUoKSwgbV9jb252ZXJ0ZXItPnByZXZpZXdVVEkoKSkgfQotICAgICwgbV9vcmlnaW5hbERhdGEg
eyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fb3JpZ2luYWxEYXRhIHsgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpIH0KICAgICAsIG1fcmVzb3VyY2VMb2FkZXIgeyBs
b2FkZXIgfQogICAgICwgbV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVy
LmZyYW1lKCktPnNldHRpbmdzKCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNr
TG9va1ByZXZpZXcoKSB9CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCA4MjM3
NGU3MjYyYzcwZWE5ZGZlNGQ2NGYyNWFiMTM1YWE2MDMzM2NmLi5lYTYxNWRmZjRkZDBlZDUxNGJm
ZjY0NDI2NDdlYzQ2MjBmNjMyMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Vk
aXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAg
LTM4LDEyICszOCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgRE9NUGFz
dGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBL
ZXlib2FyZEV2ZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBjbGFzcyBUZXh0
Q2hlY2tlckNsaWVudDsKIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CkBAIC03OCw3ICs3OSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUoY29u
c3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTaW1wbGVSYW5nZSYpID0gMDsKIAogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8q
IGNvbnRlbnRUeXBlICovLCBjb25zdCBTdHJpbmcmIC8qIHByZWZlcnJlZEZpbGVOYW1lICovLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2ht
ZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmlu
ZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogcHJlZmVycmVkRmlsZU5hbWUg
Ki8sIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIg
Ki8sIGNvbnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogZmls
ZVBhdGggKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3Rv
cjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLykg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDE2NWFhODA1OGEw
MzkwYjQ1MTU3OWExNDc2MWJkODY3OTQ5MzY0MzMuLjAyMDAxYWIzNDMwMThhNzMyNTU5OThmYzQ3
NGNlYmZjNDlmOGM4NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlh
bGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBA
IC0yNzMsNyArMjczLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNl
cyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICBpZiAoIWltYWdl
IHx8IGltYWdlLT5pbWFnZSgpID09ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVyID8gaW1h
Z2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVyID8gaW1hZ2Ut
PmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CiAgICAgaWYgKCFk
YXRhKQogICAgICAgICBkYXRhID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKIApAQCAtMjgyLDcg
KzI4Miw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVk
SW1hZ2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBpbWFnCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVU
eXBlKCksIFdURk1vdmUoZGF0YSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBp
bWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBkYXRhLT5tYWtlQ29udGlndW91cygpIH0pOwog
ICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJl
RGF0YVJlYWRlci5jcHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZmZjQy
ZThlMC4uNzU4MzZiODc5MTQzYjYwYTdmMzUxOTcwMzIwN2I2YWQzZDhkNGY4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0
YVJlYWRlcigpCkBAIC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZp
bmlzaExvYWRpbmcoaW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICAg
ICAgY2FuY2VsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGFy
cmF5QnVmZmVyID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVyUmVz
dWx0KCk7Ci0gICAgCisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9IGZp
bGVOYW1lOwogICAgIGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVm
ZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChXVEZNb3Zl
KGZpbGUpKTsKICAgICBtX2ZpbGVzUmVhZFNvRmFyKys7Ci0gICAgCisKICAgICBpZiAobV9maWxl
c1JlYWRTb0ZhciA9PSBzdGF0aWNfY2FzdDxpbnQ+KG1fcGVuZGluZ0ZpbGVMb2Fkcy5zaXplKCkp
KSB7CiAgICAgICAgIG1fcGVuZGluZ0ZpbGVMb2Fkcy5jbGVhcigpOwogICAgICAgICBpZiAoYXV0
byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwg
eyB9KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCmluZGV4
IGUzODA2ZTg3ZGY3OWEzZDliNWNhZTEyMTRkZTY2YWEyYTY1ODQ3ZGIuLmZjNjZjMzY1YTJmMjlh
NGM3OGU2MDYxOWU0N2E3MWM3MjU4ZDhmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Tm93UGxheWluZ01hbmFnZXIuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6
b3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IG1fbm93UGxheWluZ0luZm87CiAgICAgc3RydWN0IEFy
dHdvcmtDYWNoZSB7CiAgICAgICAgIFN0cmluZyBzcmM7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGltYWdlRGF0YTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGltYWdlRGF0YTsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8QXJ0d29ya0NhY2hlPiBtX25v
d1BsYXlpbmdJbmZvQXJ0d29yazsKICAgICBib29sIG1fc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRp
b24geyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCAx
NTczMWViMjNmYTc2OTQ5NjBkZDgwNDk2ZmE4ZjJmOWU4Yzc3ODBmLi4wN2VkNDhlNTg4NGVjZWVk
YzYxZmQ5M2U2YjIyMTcxYmU4ODU4OWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmNwcApAQCAtODksNyArODksNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICByZXR1cm4geyB9OwogfQogCi1S
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQogICAgICAgICByZXR1cm4gc3RyYXRlZ3ktPnJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgdHlwZSwgbmFtZSgpLCBjb250ZXh0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDdkMjQ3ZGNkMWExNmYzNDJjMTc1
NGM0NWM0YTczNTI5YmY4ZjcxYjIuLjM1NzYzZWUxMmEzOTBlZmM4NDUyYzM1ODA2YjUxMmJlNDI5
YWQ5NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDEyICs2MSwx
MyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERy
YWdEYXRhOwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgUGFzdGVib2FyZFN0
cmF0ZWd5OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIAogc3RydWN0IFNpbXBsZVJhbmdlOwogCkBAIC0xNDcsMTYgKzE0OCwxNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRp
b25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUgPSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRocyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEhUTUwoY29uc3Qg
U3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNl
bnRhdGlvblNpemUgPSB7IH0pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZEltYWdlKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlv
blNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSA9IDA7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFy
ZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYp
ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSA9IDA7Ci0gICAg
dmlydHVhbCBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNl
bnRhdGlvblNpemUgPSB7IH0pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFdlYkFyY2hpdmUo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkRGF0YUJ1
ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9
IHsgfSkgPSAwOwogI2VuZGlmCiB9OwogCkBAIC0xNzEsNyArMTcyLDcgQEAgc3RydWN0IFBhc3Rl
Ym9hcmRGaWxlUmVhZGVyIHsKICAgICB2aXJ0dWFsIH5QYXN0ZWJvYXJkRmlsZVJlYWRlcigpID0g
ZGVmYXVsdDsKICAgICB2aXJ0dWFsIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIC8qIHR5
cGUgKi8pIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVhZEJ1ZmZl
cihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSA9IDA7CiB9OwogCiBjbGFzcyBQYXN0ZWJvYXJkIHsKQEAgLTI5Niw3ICsyOTcsNyBAQCBw
dWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IHBhc3RlYm9hcmRJ
dGVtSW5mbyhzaXplX3QgaW5kZXgpIGNvbnN0OwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICBVUkwgcmVhZFVSTChzaXplX3Qg
aW5kZXgsIFN0cmluZyYgdGl0bGUpOwogCiAgICAgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNv
bnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCA5ZDNmODdhOTEx
NGMzOGE1NGUzM2EwNWUyYjk4OTUyY2NmNjdhZTcwLi43YjRiM2QzNmFhNjgwMzYxMTg3OTEzMWI1
YTFiMjI2YjU4OGQzNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZEN1c3RvbURhdGEuY3BwCkBAIC0zMywxMyArMzMsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+IGNv
cHlQbGF0Zm9ybURhdGEoY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZl
cj4+JiBvdGhlcikKK3N0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+IGNvcHlQbGF0Zm9ybURhdGEoY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYgb3RoZXIpCiB7CiAgICAgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihvdGhlcikpCiAgICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0
PFN0cmluZz4ob3RoZXIpIH07CiAKLSAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
U2hhcmVkQnVmZmVyPj4ob3RoZXIpKQotICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxSZWY8U2hh
cmVkQnVmZmVyPj4ob3RoZXIpLmNvcHlSZWYoKSB9OworICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ob3RoZXIpKQorICAgICAgICByZXR1
cm4geyBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG90aGVyKS5jb3B5UmVm
KCkgfTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIHZhbHVlKQogICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZvcm1EYXRh
ID0geyB2YWx1ZSB9OwogfQogCi12b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlw
ZSkucGxhdGZvcm1EYXRhID0geyBXVEZNb3ZlKGRhdGEpIH07CiB9CkBAIC0yMDIsMTQgKzIwMiwx
NCBAQCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6c2FtZU9y
aWdpbkN1c3RvbVN0cmluZ0RhdGEoKSBjb25zdAogICAgIHJldHVybiBjdXN0b21EYXRhOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihj
b25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
UGFzdGVib2FyZEN1c3RvbURhdGE6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25z
dAogewogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgaWYgKGVudHJ5
LnR5cGUgIT0gdHlwZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEp
KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5w
bGF0Zm9ybURhdGEpLmNvcHlSZWYoKTsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQorICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZW50
cnkucGxhdGZvcm1EYXRhKS5jb3B5UmVmKCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQpAQCAtMjY1LDExICsyNjUsMTEgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9y
RWFjaEN1c3RvbVN0cmluZyhGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwKICAgICB9
CiB9CiAKLXZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZvckVhY2hQbGF0Zm9ybVN0cmluZ09y
QnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlh
bnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAor
dm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIo
RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJp
bmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25z
dAogewogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgYXV0byYgZGF0
YSA9IGVudHJ5LnBsYXRmb3JtRGF0YTsKLSAgICAgICAgaWYgKChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFN0cmluZz4oZGF0YSkgJiYgIXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkuaXNOdWxsKCkpIHx8
IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAg
ICBpZiAoKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8
U3RyaW5nPihkYXRhKS5pc051bGwoKSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQogICAgICAgICAgICAgZnVuY3Rpb24oZW50cnku
dHlwZSwgZGF0YSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmgKaW5kZXggMmJlODFkMjkzOGEzZGJkMDkwMjZjYTZlYzY0YWMzMjg3
ZTZhYmMwMy4uOTdmZjk4NWUyNGUxMWI0YzdiYjQxNDM3MzdmMDI4NDBjMzVmZmNlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC0zNSw2
ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRh
IHsKIHB1YmxpYzoKQEAgLTQ4LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgICAgIFN0cmluZyB0
eXBlOwogICAgICAgICBTdHJpbmcgY3VzdG9tRGF0YTsKLSAgICAgICAgc3RkOjp2YXJpYW50PFN0
cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+IHBsYXRmb3JtRGF0YTsKKyAgICAgICAgc3RkOjp2YXJp
YW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBwbGF0Zm9ybURhdGE7CiAg
ICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFBhc3RlYm9hcmRDdXN0b21EYXRhKCk7CkBAIC02
NSwxMSArNjYsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRl
Y29kZXImJik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpIGNv
bnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0
eXBlKSBjb25zdDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
cihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwogICAgIFN0cmluZyByZWFkU3RyaW5nSW5DdXN0
b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAKICAgICB2b2lkIHdyaXRlU3RyaW5n
KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdm9pZCB3cml0
ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAg
IHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgZGF0YSk7CiAgICAgdm9pZCB3cml0ZVN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiAgICAgdm9pZCBjbGVhcigpOwpA
QCAtODMsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZvckVhY2hUeXBlKEZ1bmN0aW9u
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYpIGNvbnN0OwogICAgIHZvaWQgZm9yRWFjaFBsYXRmb3Jt
U3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRh
dGEpPiYmKSBjb25zdDsKLSAgICB2b2lkIGZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1
bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5n
LCBSZWY8U2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmKSBjb25zdDsKKyAgICB2b2lkIGZvckVhY2hQ
bGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiBk
YXRhKT4mJikgY29uc3Q7CiAgICAgdm9pZCBmb3JFYWNoQ3VzdG9tU3RyaW5nKEZ1bmN0aW9uPHZv
aWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpPiYmKSBjb25zdDsKIAog
ICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCAxYzA3MjZmZWIzZTAyYWVkMzJiNDZmMjYyYmNkYTE2OWQ2
NzJlYjJjLi5jNDFlMDg1MjQ0OTZjNjdmMWYxNTAzOGZiYjI2ZTljMjlkYTY5OGM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsMTAgKzMx
LDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQ
YXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKQEAgLTYyLDcgKzYzLDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRUeXBl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFs
IGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7
CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAg
ICAgdmlydHVhbCBpbnQ2NF90IHNldENvbG9yKGNvbnN0IENvbG9yJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVh
bCBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
Q29udGVudEZpbHRlci5oCmluZGV4IDNmNDgzMmE1YTY1OGMxY2M3YzBhYTEzYjI2ZTBlYTQ3MzNl
OWQzYjcuLjllNzJlNDRhMmVhYzRkOGVmNzMwYjk4NzFkMGVjNTA4ZWQ5ZmFjNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCkBAIC0zNCw3
ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVj
ZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWRk
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpID0gMDsKLSAgICB2aXJ0dWFsIFJlZjxTaGFyZWRCdWZm
ZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCA9IDA7CiAjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKQogICAgIHZpcnR1YWwgQ29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyIHVuYmxvY2tIYW5kbGVyKCkgY29uc3QgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDdhMmEzMTAwNzQyNTAwMjQzYmI0
NmZmNTk4Njg2MWU4NGEyZmQ5NmUuLjcxZGZiOTNlNTc1NjBlMzNhN2Y2YzgwYzIwZjkyZDViMmNh
ZWMxMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVi
b2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
CkBAIC00NywxMyArNDcsMTQgQEAgc3RydWN0IHdwZV9wYXN0ZWJvYXJkOwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwog
c3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybVBhc3RlYm9hcmQgewog
cHVibGljOgpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2Rz
IHdpbGwgcmV0dXJuIDAgaWYgcGFzdGVib2FyZCBvd25lcnNoaXAgaGFzIGJlZW4gdGFrZW4gZnJv
bSB1cy4KICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IGNvcHkoY29uc3QgU3RyaW5nJiBmcm9t
UGFzdGVib2FyZCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBl
KFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNP
UkVfRVhQT1JUIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50
NjRfdCBzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGlu
dDY0X3Qgc2V0Q29sb3IoY29uc3QgQ29sb3ImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90
IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVy
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmlu
ZGV4IDRjYjMzMDFlN2RmNzA3MWM1ZGQ5ZmM1OWJjNTcxODVjNGU5MTQ3NjguLmE0ZTA4NzUwOWU1
OTRkMTg3MTEyNWQxM2M5OTUzYzRlNDM5NDkzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJQ
cmV2aWV3Q29udmVydGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlclByb3Zp
ZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KIApAQCAtNjMsOSArNjIsOSBAQCBjb25z
dCBSZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25zdAog
ICAgIHJldHVybiBtX3ByZXZpZXdFcnJvcjsKIH0KIAotY29uc3QgU2hhcmVkQnVmZmVyJiBQcmV2
aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgpIGNvbnN0Citjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fcHJldmlld0RhdGEuZ2V0KCk7CisgICAgcmV0dXJuICptX3ByZXZpZXdEYXRhLmdldCgp
OwogfQogCiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSgpCkBAIC05
MCw3ICs4OSw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkK
ICAgICB9KTsKIH0KIAotdm9pZCBQcmV2aWV3Q29udmVydGVyOjphcHBlbmRGcm9tQnVmZmVyKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBQcmV2aWV3Q29udmVydGVyOjphcHBlbmRG
cm9tQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICB3
aGlsZSAoYnVmZmVyLnNpemUoKSA+IG1fbGVuZ3RoQXBwZW5kZWQpIHsKICAgICAgICAgYXV0byBu
ZXdEYXRhID0gYnVmZmVyLmdldFNvbWVEYXRhKG1fbGVuZ3RoQXBwZW5kZWQpOwpAQCAtMjIxLDgg
KzIyMCw4IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0Nv
bnZlcnRlckNsaWVudCYgY2xpZW50KQogICAgIEFTU0VSVChtX3N0YXRlID49IFN0YXRlOjpDb252
ZXJ0aW5nKTsKICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZygq
dGhpcyk7CiAKLSAgICBpZiAoIW1fcHJldmlld0RhdGEtPmlzRW1wdHkoKSAmJiBoYXNDbGllbnQo
Y2xpZW50KSkKLSAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgq
dGhpcywgbV9wcmV2aWV3RGF0YS5nZXQoKSk7CisgICAgaWYgKCFtX3ByZXZpZXdEYXRhLmlzRW1w
dHkoKSAmJiBoYXNDbGllbnQoY2xpZW50KSkKKyAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0
ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgKm1fcHJldmlld0RhdGEuZ2V0KCkpOwogCiAgICAgaWYg
KG1fc3RhdGUgPT0gU3RhdGU6OkNvbnZlcnRpbmcgfHwgIWhhc0NsaWVudChjbGllbnQpKQogICAg
ICAgICByZXR1cm47CkBAIC0yMzQsMTIgKzIzMywxMiBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6
OnJlcGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICB9CiAK
ICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6RmluaXNoZWRDb252ZXJ0aW5nKTsKLSAgICBB
U1NFUlQoIW1fcHJldmlld0RhdGEtPmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKCFtX3ByZXZpZXdE
YXRhLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKG1fcHJldmlld0Vycm9yLmlzTnVsbCgpKTsKICAg
ICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRpbmcoKnRoaXMpOwogfQog
Ci12b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBkYXRhKQordm9pZCBQcmV2aWV3Q29udmVydGVyOjpkZWxlZ2F0ZURpZFJlY2Vp
dmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgYXV0byBw
cm90ZWN0ZWRUaGlzIHsgUmVmIHsgKnRoaXMgfSB9OwogCkBAIC0yNTYsNyArMjU1LDcgQEAgdm9p
ZCBQcmV2aWV3Q29udmVydGVyOjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSkKICAgICBpZiAoZGF0YS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcHJldmlld0RhdGEtPmFwcGVuZChkYXRhKTsKKyAgICBtX3ByZXZpZXdEYXRhLmFwcGVu
ZChkYXRhKTsKIAogICAgIGl0ZXJhdGVDbGllbnRzKFsmXShhdXRvJiBjbGllbnQpIHsKICAgICAg
ICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgZGF0YSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXggMmEzNzI5MjI3
OTljZTZhZmZhYWIzZTE0MGQxOTBiYTY0Y2Y4Y2UyYi4uNWFlZGEzYjcyZjQwYmE1YWY3NDExMmMw
MDQ1N2Y5NjZhN2EwM2I2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgog
I2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNDEsMTUgKzQyLDEzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3Owogc3RydWN0
IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVy
OwogCiBzdHJ1Y3QgUHJldmlld1BsYXRmb3JtRGVsZWdhdGUgOiBDYW5NYWtlV2Vha1B0cjxQcmV2
aWV3UGxhdGZvcm1EZWxlZ2F0ZT4gewogICAgIHZpcnR1YWwgflByZXZpZXdQbGF0Zm9ybURlbGVn
YXRlKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURp
ZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRlbGVnYXRlRGlkRmluaXNoTG9hZGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGVsZWdhdGVEaWRGYWlsV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiB9
OwpAQCAtNzIsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBy
ZXZpZXdGaWxlTmFtZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwcmV2aWV3
VVRJKCkgY29uc3Q7CiAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgcHJldmlld0Vycm9yKCkgY29u
c3Q7Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyJiBwcmV2aWV3RGF0YSgpIGNvbnN0OworICAgIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHByZXZpZXdEYXRhKCkgY29uc3Q7CiAKICAgICB2
b2lkIGZhaWxlZFVwZGF0aW5nKCk7CiAgICAgdm9pZCBmaW5pc2hVcGRhdGluZygpOwpAQCAtOTQs
NyArOTMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNQbGF0Zm9ybVBhc3N3b3JkRXJyb3IoY29u
c3QgUmVzb3VyY2VFcnJvciYpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9p
ZCBpdGVyYXRlQ2xpZW50cyhUJiYgY2FsbGJhY2spOwotICAgIHZvaWQgYXBwZW5kRnJvbUJ1ZmZl
cihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGFwcGVuZEZyb21CdWZmZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkQWRkQ2xpZW50KFByZXZpZXdD
b252ZXJ0ZXJDbGllbnQmKTsKICAgICB2b2lkIGRpZEZhaWxDb252ZXJ0aW5nV2l0aEVycm9yKGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZEZhaWxVcGRhdGluZygpOwpAQCAtMTA2
LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVVubG9ja1dpdGhQYXNzd29y
ZChjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlCi0gICAg
dm9pZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwor
ICAgIHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJikgZmluYWw7CiAgICAgdm9pZCBkZWxlZ2F0ZURpZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsK
ICAgICB2b2lkIGRlbGVnYXRlRGlkRmFpbFdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikg
ZmluYWw7CiAKQEAgLTExOCw3ICsxMTcsNyBAQCBwcml2YXRlOgogICAgICAgICBGaW5pc2hlZENv
bnZlcnRpbmcsCiAgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fcHJldmlld0RhdGE7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3ByZXZpZXdEYXRhOwogICAgIFJlc291cmNlRXJy
b3IgbV9wcmV2aWV3RXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX29yaWdpbmFsUmVzcG9u
c2U7CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpVcGRhdGluZyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oCmluZGV4IDA0ZWEzNjgw
NjkyYjI1MmExOTg5YzI2Y2EyMDQyMTI3NzdhYTNiN2IuLjljZWU5MzMyMGIyMzhiNGNkNzNjZGQy
ZTAzMDJjM2JmNGRhZDY4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2
aWV3Q29udmVydGVyQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBQcmV2aWV3Q29udmVydGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQ
cmV2aWV3Q29udmVydGVyQ2xpZW50IDogQ2FuTWFrZVdlYWtQdHI8UHJldmlld0NvbnZlcnRlckNs
aWVudD4gewogICAgIHZpcnR1YWwgflByZXZpZXdDb252ZXJ0ZXJDbGllbnQoKSA9IGRlZmF1bHQ7
CkBAIC00Miw3ICs0Miw3IEBAIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50IDogQ2FuTWFr
ZVdlYWtQdHI8UHJldmlld0NvbnZlcnRlckNsaWVudD4gewogICAgIHZpcnR1YWwgdm9pZCBwcmV2
aWV3Q29udmVydGVyRGlkRmluaXNoVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxVcGRhdGluZyhQcmV2aWV3Q29u
dmVydGVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRD
b252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHByZXZp
ZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hhcmVk
QnVmZmVyJiBuZXdEYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJE
aWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgbmV3RGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlk
RmluaXNoQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpID0g
MDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVy
dGVyUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQ
cm92aWRlci5oCmluZGV4IDgyNzg2MzkzZmNlZDc1NGM4NWY3YjI4OTEyNTJmNTE2YmVkMGQ1NDku
LmI5ODZlZTQwZDE5NzUxNzRmNTRhZDI5YTE2OGNhZGYxODk0NTZjM2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCkBAIC0zMiw3
ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJv
dmlkZXIgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI+IHsKICAgICB2
aXJ0dWFsIH5QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0Nv
bnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252
ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByb3ZpZGVQ
YXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGQ4ZTY4ZTMzNzc4MWZiMjlhZDM5YzU1Yjlh
ZmQzOTAwMzUzNTM4NWQuLjEwZDFiODUyMDg4YWE2N2ZlNGU3Njg5YjYyNTk0Yjc3NTJmZWYzZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMzcsNjMgKzM3
LDY5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCitSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkKIHsKLSAgICBhcHBlbmQo
ZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcik7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBzaXplKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAg
ICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoZGF0YSwgc2l6
ZSkpOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIGZpbGVEYXRhKQotICAgIDogbV9zaXplKGZpbGVEYXRhLnNpemUoKSkKK1JlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkKIHsKLSAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSl9KTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUo
bWFwcGVkRmlsZURhdGEpKSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKERhdGFT
ZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQotICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUo
KSkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpj
cmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBl
bmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpfSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikp
KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0
YSkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpj
cmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQogewotICAgIGFwcGVuZChXVEZNb3ZlKGRh
dGEpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdU
Rk1vdmUodmVjdG9yKSkpOwogfQogCi0jaWYgVVNFKEdTVFJFQU1FUikKLVJlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZm
ZXIpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihtYXBwZWRCdWZmZXIpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7CiB9
CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBw
ZWRCdWZmZXIpCi0gICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkKK0ZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisKK0ZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKKyAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7
Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1
ZmZlcil9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShmaWxlRGF0YSkpIH0pOwogfQotI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VG
aWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCisg
ICAgOiBtX3NpemUocHJvdmlkZXIuc2l6ZSgpKQogewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGlu
ZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nl
c3M7Ci0gICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZp
bGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFw
cGluZ1N1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZl
cihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwotICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOworICAgIG1fc2VnbWVudHMuYXBw
ZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSkgfSk7CiB9CiAK
LVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYm
IHZlY3RvcikKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOworICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZl
cikpOwogfQogCi1zdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29u
c3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXpl
KQorI2lmIFVTRShHU1RSRUFNRVIpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZm
ZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciht
YXBwZWRCdWZmZXIpKTsKK30KKworRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQorICAgIDogbV9z
aXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCit7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBE
YXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpIH0pOworfQorI2VuZGlmCisKK3N0YXRp
YyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQogewog
ICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7CiAgICAgY29tYmluZWREYXRhLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CkBAIC0xMDMsMzMgKzEwOSwxOSBAQCBzdGF0aWMgVmVj
dG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudFZlY3RvcgogICAgIHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLXZvaWQgU2hhcmVk
QnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdAorUmVmPFNoYXJlZEJ1ZmZlcj4g
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKSBjb25zdAogewotI2lmIEFT
U0VSVF9FTkFCTEVECi0gICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8gc2V0IHRo
aXMgdG8gdHJ1ZSBhbmQgaGF2ZSBubyBhc3NlcnRpb25zIGZpcmUuCi0gICAgLy8gUmVtb3ZlIGFs
bCBpbnN0YW5jZXMgb2YgYXBwZW5kaW5nIGFmdGVyIGNhbGxpbmcgdGhpcywgYmVjYXVzZSB0aGV5
IGFyZSBhbGwgTyhuXjIpIGFsZ29yaXRobXMgc2luY2UgcjIxNTY4Ni4KLSAgICAvLyBtX2hhc0Jl
ZW5Db21iaW5lZEludG9PbmVTZWdtZW50ID0gdHJ1ZTsKLSNlbmRpZgotICAgIGlmIChtX3NlZ21l
bnRzLnNpemUoKSA8PSAxKQotICAgICAgICByZXR1cm47Ci0KKyAgICBpZiAobV9jb250aWd1b3Vz
KQorICAgICAgICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0
X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSB9OworICAgIGlmICghbV9zZWdt
ZW50cy5zaXplKCkpCisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
IGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUobV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CiAgICAgYXV0byBjb21i
aW5lZERhdGEgPSBjb21iaW5lU2VnbWVudHNEYXRhKG1fc2VnbWVudHMsIG1fc2l6ZSk7Ci0gICAg
bV9zZWdtZW50cy5jbGVhcigpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVu
dDo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSl9KTsKLSAgICBBU1NFUlQobV9zZWdtZW50
cy5zaXplKCkgPT0gMSk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOworICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwogfQog
Ci1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAotewotICAgIGlmICht
X3NlZ21lbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY29tYmlu
ZUludG9PbmVTZWdtZW50KCk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwot
ICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKLX0KLQotVmVjdG9yPHVp
bnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdAorVmVjdG9yPHVpbnQ4X3Q+IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKIHsKICAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YTsKICAgICBkYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSgpKTsKQEAg
LTEzOSw3ICsxMzEsNyBAQCBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgp
IGNvbnN0CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZm
ZXI6OnRha2VEYXRhKCkKK1ZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0
YWtlRGF0YSgpCiB7CiAgICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4geyB9OwpAQCAtMTU0LDEzICsxNDYsMTMgQEAgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZl
cjo6dGFrZURhdGEoKQogICAgIHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLVNoYXJlZEJ1ZmZl
ckRhdGFWaWV3IFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25z
dAorU2hhcmVkQnVmZmVyRGF0YVZpZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURh
dGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdAogewogICAgIGNvbnN0IERhdGFTZWdtZW50VmVjdG9y
RW50cnkqIGVsZW1lbnQgPSBnZXRTZWdtZW50Rm9yUG9zaXRpb24ocG9zaXRpb24pOwogICAgIHJl
dHVybiB7IGVsZW1lbnQtPnNlZ21lbnQuY29weVJlZigpLCBwb3NpdGlvbiAtIGVsZW1lbnQtPmJl
Z2luUG9zaXRpb24gfTsKIH0KIAotY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rv
ckVudHJ5KiBTaGFyZWRCdWZmZXI6OmdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRp
b24pIGNvbnN0Citjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rv
ckVudHJ5KiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6
ZV90IHBvc2l0aW9uKSBjb25zdAogewogICAgIFJFTEVBU0VfQVNTRVJUKHBvc2l0aW9uIDwgbV9z
aXplKTsKICAgICBhdXRvIGNvbXBhcmF0b3IgPSBbXShjb25zdCBzaXplX3QmIHBvc2l0aW9uLCBj
b25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5JiBlbnRyeSkgewpAQCAtMTcxLDcgKzE2Myw3IEBA
IGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogU2hhcmVkQnVmZmVy
OjpnZXRTZWdtZW50Rm9yUG9zaXRpb24oCiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKLVN0cmlu
ZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKK1N0cmluZyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBzdHJp
bmdCdWlsZGVyOwogICAgIGZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CkBAIC0x
ODEsNyArMTczLDcgQEAgU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAog
ICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8
QXJyYXlCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCkgY29uc3QKIHsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSksIDEpOwogICAgIGlm
ICghYXJyYXlCdWZmZXIpIHsKQEAgLTIwMCw2OCArMTkyLDYzIEBAIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAgICAgcmV0dXJu
IGFycmF5QnVmZmVyOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5D
b21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAg
bV9zZWdtZW50cy5yZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2Vn
bWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBkYXRhLm1fc2Vn
bWVudHMpIHsKLSAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe21fc2l6ZSwgZWxl
bWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFw
cGVuZCh7IG1fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICAgICAgbV9z
aXplICs9IGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpOwogICAgIH0KICAgICBBU1NFUlQoaW50ZXJu
YWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgQVNT
RVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29u
dGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5k
KGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBt
X3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBtX3Np
emUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAot
dm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQordm9pZCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsK
LSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VS
VCghbV9jb250aWd1b3VzKTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7Ci0gICAg
bV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpIH0pOwogICAgIG1fc2l6ZSArPSBkYXRhU2l6ZTsKICAgICBBU1NF
UlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjbGVh
cigpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNsZWFyKCkKIHsKICAgICBtX3NpemUg
PSAwOwogICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNv
bnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
Y29weSgpIGNvbnN0CiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcik7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNsb25l
ID0gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKTsKICAgICBjbG9uZS0+bV9z
aXplID0gbV9zaXplOwogICAgIGNsb25lLT5tX3NlZ21lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1f
c2VnbWVudHMpCi0gICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7ZWxl
bWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAg
IGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IGVsZW1lbnQuYmVnaW5Qb3NpdGlv
biwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICBBU1NFUlQoY2xvbmUtPmludGVy
bmFsbHlDb25zaXN0ZW50KCkpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsK
ICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQotewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOwotfQotCi12b2lk
IFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNv
bnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9z
ZWdtZW50czsKICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBzZWdtZW50cykKICAgICAgICAgYXBw
bHkoU3BhbiB7IHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUo
KSB9KTsKIH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25z
dCB1aW50OF90PiYgcHJlZml4KSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpz
dGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKIHsKICAg
ICBpZiAocHJlZml4LmVtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjgzLDcgKzI3
MCw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWlu
dDhfdD4mIHByZWZpeCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVZlY3Rvcjx1aW50
OF90PiBTaGFyZWRCdWZmZXI6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29u
c3QKK1ZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7
CiAgICAgaWYgKG9mZnNldCA+PSBzaXplKCkpCkBAIC0zMTAsMTIgKzI5NywxMiBAQCBWZWN0b3I8
dWludDhfdD4gU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29u
c3QKIHsKICAgICByZXR1cm4gY29weVRvKGRlc3RpbmF0aW9uLCAwLCBsZW5ndGgpOwogfQogCi12
b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0
LCBzaXplX3QgbGVuZ3RoKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5
VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGxlbmd0aCArIG9mZnNldCA8PSBzaXplKCkpOwogICAgIGlmIChvZmZz
ZXQgPj0gc2l6ZSgpKQpAQCAtMzUzLDE0ICszNDAsOCBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29w
eVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25z
dAogICAgIH0KIH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6Omhhc09uZVNlZ21lbnQoKSBjb25zdAot
ewotICAgIGF1dG8gaXQgPSBiZWdpbigpOwotICAgIHJldHVybiBpdCAhPSBlbmQoKSAmJiArK2l0
ID09IGVuZCgpOwotfQotCiAjaWYgQVNTRVJUX0VOQUJMRUQKLWJvb2wgU2hhcmVkQnVmZmVyOjpp
bnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0Citib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIHsKICAgICBzaXplX3QgcG9zaXRpb24gPSAw
OwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpIHsKQEAgLTM3Miw0
MiArMzUzLDEzIEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNv
bnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgYXV0byB2aXNpdG9yID0g
V1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRh
KSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKLSNpZiBVU0UoQ0Yp
Ci0gICAgICAgIFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSAtPiBjb25zdCB1
aW50OF90KiB7IHJldHVybiBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpOyB9LAotI2VuZGlm
Ci0jaWYgVVNFKEdMSUIpCi0gICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYgZGF0YSkg
LT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGdf
Ynl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9LAotI2VuZGlmCi0jaWYgVVNF
KEdTVFJFQU1FUikKLSAgICAgICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVy
PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9LAotI2Vu
ZGlmCi0gICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSAt
PiBjb25zdCB1aW50OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YS5kYXRhKCkpOyB9LAotICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIC0+IGNv
bnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQotICAgICk7Ci0gICAgcmV0
dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKLX0KLQotYm9vbCBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YT4obV9pbW11dGFibGVEYXRhKTsKLX0KLQogI2lmICFVU0UoQ0YpCi12b2lkIFNoYXJlZEJ1
ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB7CiB9CiAjZW5kaWYK
IAotV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25z
dAotewotICAgIHJldHVybiB7eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRh
KCkpLCBzaXplKCkgfX07Ci19Ci0KLWJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0Citib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
Om9wZXJhdG9yPT0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiB7
CiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ1Niw3
ICs0MDgsMTE4IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1
ZmZlciYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVfdCBTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVm
ZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkKK3sKKyAgICBtX3NpemUgPSBz
ZWdtZW50LT5zaXplKCk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBXVEZNb3ZlKHNlZ21l
bnQpIH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1NoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIp
Cit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBjb250
aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOworICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZmZXIt
PnNpemUoKTsKKyAgICBpZiAoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpKQorICAg
ICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVudHNb
MF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKwor
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBk
YXRhKQorICAgIDogRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQoreworICAg
IG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGlu
ZyBtYXlVc2VGaWxlTWFwcGluZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5
VXNlRmlsZU1hcHBpbmc6OlllcykgeworICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOworICAg
ICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwg
bWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNj
ZXNzKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92
ZShtYXBwZWRGaWxlRGF0YSkpKTsKKyAgICB9CisgICAgcmV0dXJuIGNyZWF0ZUZyb21SZWFkaW5n
RmlsZShmaWxlUGF0aCk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgp
IGNvbnN0Cit7CisgICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7Cit9CisK
K1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QK
K3sKKyAgICByZXR1cm4geyB7IGRhdGEoKSwgc2l6ZSgpIH0gfTsKK30KKworUmVmPERhdGFTZWdt
ZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCit7CisgICAg
ZGF0YS5zaHJpbmtUb0ZpdCgpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50
KFdURk1vdmUoZGF0YSkpKTsKK30KKworI2lmIFVTRShDRikKK1JlZjxEYXRhU2VnbWVudD4gRGF0
YVNlZ21lbnQ6OmNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworfQorI2VuZGlm
CisKKyNpZiBVU0UoR0xJQikKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShH
UmVmUHRyPEdCeXRlcz4mJiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFT
ZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikK
K1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3du
ZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVu
dChXVEZNb3ZlKGRhdGEpKSk7Cit9CisjZW5kaWYKKworUmVmPERhdGFTZWdtZW50PiBEYXRhU2Vn
bWVudDo6Y3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisKK1Jl
ZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIp
KSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKK3sKKyAg
ICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAorICAgICAgICBbXShjb25zdCBWZWN0
b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgp
OyB9LAorI2lmIFVTRShDRikKKyAgICAgICAgW10oY29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4m
IGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIENGRGF0YUdldEJ5dGVQdHIoZGF0YS5n
ZXQoKSk7IH0sCisjZW5kaWYKKyNpZiBVU0UoR0xJQikKKyAgICAgICAgW10oY29uc3QgR1JlZlB0
cjxHQnl0ZXM+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0s
CisjZW5kaWYKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0
TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRh
LT5kYXRhKCk7IH0sCisjZW5kaWYKKyAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IFByb3ZpZGVy
JiBwcm92aWRlcikgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gcHJvdmlkZXIuZGF0YSgpOyB9
CisgICAgKTsKKyAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEp
OworfQorCitib29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKK30KKworc2l6ZV90IERhdGFTZWdtZW50OjpzaXpl
KCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAg
ICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IHNpemVfdCB7IHJldHVybiBkYXRh
LnNpemUoKTsgfSwKQEAgLTQ3NSw3ICs1MzgsMzcgQEAgc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1f
aW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJE
YXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3Qg
cG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKK3ZvaWQg
U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkoKQoreworICAgIHJlc2V0KCk7CisgICAgZW5zdXJl
QnVmZmVyKCk7Cit9CisKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRh
a2UoKQoreworICAgIGVuc3VyZUJ1ZmZlcigpOworICAgIHJldHVybiBtX2J1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpOworfQorCitSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyQnVpbGRlcjo6dGFrZUFzQ29udGlndW91cygpCit7CisgICAgcmV0dXJuIHRha2VBc0NvbnRp
Z3VvdXMoKTsKK30KKworUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXJCdWlsZGVyOjp0
YWtlQXNBcnJheUJ1ZmZlcigpCit7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0dXJu
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CisgICAgcmV0dXJuIHRha2UoKS0+
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKK30KKwordm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVyOjpl
bnN1cmVCdWZmZXIoKQoreworICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIG1fYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKK30KKworU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJl
ZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRp
b25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKICAgICA6IG1fc2Vn
bWVudChXVEZNb3ZlKHNlZ21lbnQpKQogICAgICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQocG9z
aXRpb25XaXRoaW5TZWdtZW50KQogICAgICwgbV9zaXplKHNpemUgPyAqc2l6ZSA6IG1fc2VnbWVu
dC0+c2l6ZSgpIC0gcG9zaXRpb25XaXRoaW5TZWdtZW50KQpAQCAtNDg5LDIyICs1ODIsMTIgQEAg
U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1
ZmZlckRhdGFWaWV3JiBvdGhlciwgc2kKIHsKIH0KIAotc2l6ZV90IFNoYXJlZEJ1ZmZlckRhdGFW
aWV3OjpzaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zaXplOwotfQotCi1jb25zdCB1aW50
OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
c2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7Ci19Ci0KIFJlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25z
dAogewotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBzZWdtZW50ID0g
bV9zZWdtZW50OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBzZWdt
ZW50ID0gbV9zZWdtZW50OworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2Vn
bWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7IHJl
dHVybiBkYXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVy
biBzaXplOyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAg
ICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBmMjNm
NWQ2OWFkMzJlZDY0MGI5NTc3YjJlNmM0NTQ5MTgzOTM2OGFkLi4wNmYyNjVhNjg0YzQ3YjdmYTdk
OTlkZjM0MzUxY2Y5Y2YzM2UxZjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKQEAgLTYyLDE0NiArNjIsMTI1IEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVy
RGF0YVZpZXc7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKKy8vIERhdGEgd3JhcHBlZCBieSBh
IERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJl
bmNlZCBieSBvdGhlciBvYmplY3RzLgorLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEs
IGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgorY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZm
ZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOyB9
CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKLSAgICBlbnVtIGNsYXNzIE1heVVz
ZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgs
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6
OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKLQot
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0b3I8
dWludDhfdD4mJik7CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBSZXRhaW5QdHI8TlNEYXRh
PiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNE
YXRhQXJyYXkoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5T
RGF0YSAqKTsKLSAgICB2b2lkIGFwcGVuZChOU0RhdGEgKik7Ci0jZW5kaWYKICNpZiBVU0UoQ0Yp
Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7Ci0gICAgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwotICAgIHZvaWQgYXBwZW5k
KENGRGF0YVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4g
Y3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYpOwogI2VuZGlmCi0KICNpZiBVU0UoR0xJQikK
LSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwotICAgIEdSZWZQ
dHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYpOwogI2VuZGlmCi0K
ICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
R3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERh
dGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmKTsKICNlbmRp
ZgotICAgIC8vIENhbGxpbmcgZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMgdG8g
YmUgY29waWVkIGludG8gb25lIHNlZ21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0gICAg
Ly8gSXRlcmF0ZSB0aGUgc2VnbWVudHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVhZC4K
LSAgICAvLyBGSVhNRTogQXVkaXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQg
cmVwbGFjZSB0aGVtIHdpdGggaXRlcmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVpbnQ4
X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Qg
eyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAgIFZl
Y3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OwotICAgIFZlY3Rvcjx1aW50OF90PiByZWFk
KHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwotCi0gICAgLy8gU2ltaWxhciB0
byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGlu
c3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgot
ICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOwotCi0gICAgLy8gQ3JlYXRlcyBhbiBB
cnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhh
dAotICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBp
bnRvIGEgZmxhdCBidWZmZXIuCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21l
bnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKIAotICAgIHNpemVfdCBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZm
ZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lk
IGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAgIHZvaWQgYXBw
ZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKLQotICAgIHZvaWQgY2xlYXIoKTsKKyAgICBzdHJ1Y3Qg
UHJvdmlkZXIgeworICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOworICAg
ICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gY29weSgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBz
aXplX3QgbGVuZ3RoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwg
c2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYpOwogCi0gICAgLy8gRGF0
YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0
IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5IG9y
IGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgotICAgIGNsYXNz
IERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50PiB7
Ci0gICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBkYXRh
KCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7Cisj
aWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4g
Y3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKIAotICAgICAgICBzdGF0aWMgUmVmPERhdGFT
ZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgewotICAgICAg
ICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOwotICAgICAgICB9CisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7CiAKK3ByaXZhdGU6Cisg
ICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAgICAg
OiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjaWYgVVNFKENGKQotICAgICAg
ICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBk
YXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsg
fQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0YSkK
KyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYKICNp
ZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdSZWZQ
dHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RG
TW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0ZXM+
JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAj
ZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50
PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQg
RGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCisgICAgICAg
IDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCi0gICAgICAgIHN0
YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
IGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkp
OyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
JiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAg
ICBleHBsaWNpdCBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6IG1f
aW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSAgICAgICAgc3RydWN0IFBy
b3ZpZGVyIHsKLSAgICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7Ci0g
ICAgICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKLQotICAgICAg
ICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9Ci0K
LSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNE
YXRhKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgICAgICBib29sIGNvbnRhaW5zTWFwcGVkRmlsZURh
dGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIERhdGFTZWdtZW50KFZlY3Rvcjx1
aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRh
dGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShDRikK
LSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQotICAgICAg
ICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIERhdGFTZWdt
ZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0
YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlmCiAj
aWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93
bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3Zl
KGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKICNlbmRp
ZgotICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEp
Ci0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAgICAg
ICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKLSAgICAgICAgICAgIDogbV9pbW11
dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KKyAgICAgICAgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEsCisgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7CisgICAgZnJp
ZW5kIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNGRGF0YQorfTsKKworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBjcmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAg
ICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gY3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBzaXplKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CiAKLSAgICAgICAgc3RkOjp2YXJpYW50PFZl
Y3Rvcjx1aW50OF90PiwKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBS
ZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEq
KTsKKyNlbmRpZgogI2lmIFVTRShDRikKLSAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+
LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKKwogI2lmIFVTRShHTElCKQotICAgICAgICAgICAg
R1JlZlB0cjxHQnl0ZXM+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwogI2VuZGlmCisKICNpZiBVU0UoR1NUUkVB
TUVSKQotICAgICAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RN
YXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0gICAg
ICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBW
ZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsK
KworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5kIHdp
bGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3RE
YXRhKCk7CisKKyAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAorICAgIC8vIEFycmF5QnVm
ZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIu
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1
ZmZlcigpIGNvbnN0OworCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7
IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CisgICAgYm9v
bCBpc0NvbnRpZ3VvdXMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRpZ3VvdXM7IH0KIAotICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjb3B5KCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNp
emVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQq
IGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKIAotICAg
IHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0
IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29u
c3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JF
YWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4m
KT4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bh
bjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKworICAgIHVzaW5nIERhdGFTZWdtZW50
ID0gV2ViQ29yZTo6RGF0YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0
eSB3aGVuIHVzaW5nIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBz
dHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0
aW9uOwpAQCAtMjEwLDc1ICsxODksMTgzIEBAIHB1YmxpYzoKICAgICB1c2luZyBEYXRhU2VnbWVu
dFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAgICBEYXRhU2Vn
bWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21l
bnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5k
KCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5lbmQoKTsgfQotICAgIGJvb2wgaGFzT25lU2Vn
bWVudCgpIGNvbnN0OworICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2VnbWVudHMuc2l6ZSgpID09IDE7IH0KIAogICAgIC8vIGJlZ2luIGFuZCBlbmQgdGFrZSBPKDEp
IHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRpbWUuCi0gICAgU2hhcmVkQnVmZmVyRGF0YVZp
ZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0
OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhpbnRNZW1vcnlOb3ROZWVk
ZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3Ro
ZXIpOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFy
ZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CiAKLXByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihj
b25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3Qg
Y2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90
PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYm
KTsKK3Byb3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOworCisgICAgRGF0
YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29sIG1fY29udGlndW91cyB7IGZhbHNl
IH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKCk7CisgICAg
ZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KKyAgICBleHBsaWNpdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IGFwcGVuZChkYXRh
LCBzaXplKTsgfQorICAgIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoVmVjdG9yPHVp
bnQ4X3Q+JiYgZGF0YSkgeyBhcHBlbmQoV1RGTW92ZShkYXRhKSk7IH0KKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNF
KENGKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRp
ZgogI2lmIFVTRShHTElCKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEdCeXRlcyop
OwogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIo
R3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKKyAgICBz
aXplX3QgbV9zaXplIHsgMCB9OwogCi0gICAgdm9pZCBjb21iaW5lSW50b09uZVNlZ21lbnQoKSBj
b25zdDsKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsg
YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOworI2lm
IFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0YSAq
KTsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChD
RkRhdGFSZWYpOworI2VuZGlmCiAKLSAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGlu
dG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNo
YXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGNsZWFyKCk7CiAKKyAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRz
IGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhl
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4
X3Q+IHRha2VEYXRhKCk7CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogZ2V0U2Vn
bWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9uKSBjb25zdDsKIAotICAgIHN0YXRpYyBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCk7Ci0KLSAgICBzaXplX3QgbV9zaXplIHsgMCB9OwotICAgIG11dGFibGUgRGF0YVNl
Z21lbnRWZWN0b3IgbV9zZWdtZW50czsKLQogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbXV0YWJs
ZSBib29sIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgeyBmYWxzZSB9OwogICAgIGJv
b2wgaW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdDsKICNlbmRpZgogfTsKIAotaW5saW5lIFZl
Y3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKKy8vIEEgU2hhcmVkQnVm
ZmVyIGlzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB0aGF0IGFsbG93cyB0byBkaXJlY3RseSBh
Y2Nlc3MgaXRzIGNvbnRlbnQgdmlhIHRoZSBkYXRhKCkgYW5kIHJlbGF0ZWQgbWV0aG9kcy4KK2Ns
YXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIHsKK3B1Ymxp
YzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYgY29uc3Rl
eHByICghc2l6ZW9mLi4uKEFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKCkpOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4uKEFy
Z3MpID09IDEKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8RGF0YVNl
Z21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgYXV0byBidWZmZXIgPSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rk
Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBjb25z
dCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSgpKTsgfQorICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVj
b2RlcigpIGNvbnN0OworCisgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wg
eyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFy
ZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNpZiBV
U0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVh
dGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lm
IFVTRShHTElCKQorICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0
ZXMoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJl
ZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBT
aGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworCisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFk
aW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKK307CisKK2NsYXNzIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
QnVpbGRlcihSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgewor
ICAgICAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gV2Ug
ZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFzIGFs
bCBTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNyZWF0
ZWQuCisgICAgICAgIGlmIChidWZmZXItPmhhc09uZVJlZigpICYmICFidWZmZXItPmlzQ29udGln
dW91cygpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoKmJ1ZmZlcik7CisgICAg
fQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShidWZmZXIpIH0pCisgICAgeworICAgIH0K
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
KEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6IG1fYnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQor
ICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVyLT5hcHBlbmQo
c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9vbCBpc051bGwo
KSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CisKKyAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6
IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsgfQorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZW1wdHkoKTsKKworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZl
ci0+Y29weSgpIDogRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAgICBXRUJD
T1JFX0VYUE9SVCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZSgpOworICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0YWtlQXNDb250aWd1b3Vz
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1
ZmZlcigpOworCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5zdXJlQnVmZmVy
KCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworfTsKKwor
aW5saW5lIFZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0
YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigpKQogICAgICAgICByZXR1cm4gdGFrZURhdGEoKTsK
ICAgICByZXR1cm4gY29weURhdGEoKTsKIH0KIAotY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hhcmVk
QnVmZmVyRGF0YVZpZXcgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXcgewogcHVibGljOgot
ICAgIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiYm
LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3
U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hh
cmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7Ci0gICAgc2l6ZV90IHNpemUoKSBj
b25zdDsKLSAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRp
b25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVs
bG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hh
cmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7CisgICAgc2l6ZV90IHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsgfQog
ICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKICNpZiBVU0UoRk9VTkRBVElPTikK
LSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKICNlbmRpZgog
cHJpdmF0ZToKLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9zZWdt
ZW50OworICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9zZWdtZW50OwogICAgIGNvbnN0IHNp
emVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9zaXplOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyLmNwcAppbmRleCBjZGI2ZTcwMzQwNGQ0MjZkZDIxYjQ3OWZhODljMGRhOWI4YzQ5ZjhlLi45
ZDA1NWNlMjdkODhjM2Q2MmU1YmQxY2Q0NmFkOTFmNWNjNDMxZjQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCkBAIC0zNiw3
ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShNSFRNTCkKIAotU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZl
ciogYnVmZmVyLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcikKK1NoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBidWZmZXIsIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKQogICAgIDogbV9pdGVyYXRv
ckN1cnJlbnQoYnVmZmVyLT5iZWdpbigpKQogICAgICwgbV9pdGVyYXRvckVuZChidWZmZXItPmVu
ZCgpKQogICAgICwgbV9zZWdtZW50KG1faXRlcmF0b3JDdXJyZW50ICE9IG1faXRlcmF0b3JFbmQg
PyBtX2l0ZXJhdG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0YSgpIDogbnVsbHB0cikKQEAgLTQ0LDcg
KzQ0LDcgQEAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
KFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWMKIHsKIH0KIAotU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBj
b25zdCBjaGFyKiBzZXBhcmF0b3IpCitTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBjaGFy
KiBzZXBhcmF0b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVudChidWZmZXItPmJlZ2luKCkpCiAg
ICAgLCBtX2l0ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAgLCBtX3NlZ21lbnQobV9pdGVy
YXRvckN1cnJlbnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRlcmF0b3JDdXJyZW50LT5zZWdtZW50
LT5kYXRhKCkgOiBudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmgKaW5kZXggNWQ0ZTZmZWU1ODJjNjYxNmZkMDdlMzk5NGZmNzVj
OGYwN2EyZmNlMS4uMWM2NDA4ZDRjNzM2YTFjNGE0NWNlZTdiM2Y2OTY1N2JjOWEyNjE1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5o
CkBAIC00MSw4ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09SRV9F
WFBPUlQgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9y
KTsKLSAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqLCBjb25zdCBjaGFy
KiBzZXBhcmF0b3IpOworICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcik7CisgICAgU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IGNoYXIqIHNlcGFy
YXRvcik7CiAKICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBWZWN0b3I8Y2hhcj4mKTsKICAg
ICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBjaGFyKik7CkBAIC01OCw4ICs1OCw4IEBAIHB1Ymxp
YzoKICAgICBzaXplX3QgcGVlayhWZWN0b3I8dWludDhfdD4mLCBzaXplX3QpOwogCiBwcml2YXRl
OgotICAgIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1f
aXRlcmF0b3JDdXJyZW50OwotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0
b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JFbmQ7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JDdXJyZW50
OworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpj
b25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yRW5kOwogICAgIGNvbnN0IHVpbnQ4X3QqIG1fc2VnbWVu
dCB7IG51bGxwdHIgfTsKICAgICBzaXplX3QgbV9zZWdtZW50SW5kZXggeyAwIH07CiAgICAgVmVj
dG9yPGNoYXI+IG1fc2VwYXJhdG9yIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU3RhdGljUGFzdGVib2FyZC5jcHAKaW5kZXggYjJkN2E1NTBkNDYwZTk0Y2QzMTUxMzRhMzE5
NWJjZDkxYzdiNzg5NC4uYTRiNGJiMTA0YjRkODQwMTViOGFhNWI1M2U3ZGZhNzg4Y2VkMjVmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKQEAgLTcz
LDcgKzczLDcgQEAgdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyhjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9jdXN0b21EYXRhLndyaXRlU3Ry
aW5nKHR5cGUsIHZhbHVlKTsKIH0KIAotdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZURhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFN0YXRp
Y1Bhc3RlYm9hcmQ6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgbV9ub25EZWZhdWx0RGF0YVR5cGVzLmFkZCh0
eXBlKTsKICAgICBtX2N1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIFdURk1vdmUoZGF0YSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCmluZGV4IGMwOWI2ZGUz
MWYyZWRlYmUwMTg4ZGM5YzQ2NmEyNzFlMWI4YjllMTQuLmVkZDcxMzYyM2YwNmQyMmIzOGU4MzJh
MjgzN2ZlNjY5OTlkZmQ3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0
YXRpY1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0
ZWJvYXJkLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBT
dGF0aWNQYXN0ZWJvYXJkIGZpbmFsIDogcHVibGljIFBhc3RlYm9hcmQgewogcHVibGljOgpAQCAt
NTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1c3RvbURhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlKSBmaW5hbDsKIAogICAgIHZvaWQgd3JpdGVTdHJpbmcoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpIGZpbmFsOwotICAgIHZvaWQgd3JpdGVE
YXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICB2
b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGRhdGEpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHZvaWQgY2xlYXIoKSBmaW5hbDsK
ICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaAppbmRleCA2ODc5NTkwMGM1YWRm
OWNjOTA0NWUwZWFiYjIyYjE4ZmE2Njk2MzE0Li4xZDY1YmM0MDNhZDg1MjQzYzY3MjVlNzA0NDhk
NmNkYWRjY2NjZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9O
b3dQbGF5aW5nSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1Bs
YXlpbmdJbmZvLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0
IE5vd1BsYXlpbmdJbmZvQXJ0d29yayB7CiAgICAgU3RyaW5nIHNyYzsKICAgICBTdHJpbmcgbWlt
ZVR5cGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CiAKICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgTm93UGxheWluZ0luZm9BcnR3b3JrJiBvdGhlcikgY29uc3QKICAgICB7CkBAIC02Nyw3
ICs2Nyw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBzdGQ6Om9wdGlvbmFsPE5v
d1BsYXlpbmdJbmZvQXJ0d29yaz4gTm93UGxheWluZ0luCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBpbWFnZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdl
RGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGltYWdlRGF0YSkpCiAgICAgICAgIHJldHVy
biB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAppbmRleCBlOGIxOWJmMzRlYmEyM2I4NTcy
MDdiZTg4Y2UxYjQ1YmY4ZjJjY2MzLi5mMzIxNDI5NTFiMTc5OTZlNmNlMTY3NTYzMTZiZmQ0NzNm
YWE0ZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgY2xh
c3MgQXVkaW9GaWxlUmVhZGVyV2ViTURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogCiBwdWJsaWM6Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
CiAgICAgUmVmPEF1ZGlvVHJhY2tQcml2YXRlV2ViTT4gbV90cmFjazsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFu
YWdlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hLm1tCmluZGV4IGJiNzg4YWZhMWU5MWY5YTRkM2FiMzZlMmEwYzA4
MTJjOTRlMTg3MGUuLjdmMDQ5NjBjNTk2NWI2MjUxYjkxYjlhNTY3ZTUxMDg5YjU3MTlmMDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vzc2lv
bk1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EubW0KQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIE1l
ZGlhU2Vzc2lvbk1hbmFnZXJDb2NvYTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1Bs
YXlpbmdBcHBsaWNhdGlvbgogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgp
LCBrTVJNZWRpYVJlbW90ZU5vd1BsYXlpbmdJbmZvRWxhcHNlZFRpbWUsIGNmQ3VycmVudFRpbWUu
Z2V0KCkpOwogICAgIH0KICAgICBpZiAobm93UGxheWluZ0luZm8uYXJ0d29yayAmJiBub3dQbGF5
aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEpIHsKLSAgICAgICAgYXV0byBuc0FydHdvcmsgPSBu
b3dQbGF5aW5nSW5mby5hcnR3b3JrLT5pbWFnZURhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAg
ICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJbmZvLmFydHdvcmstPmltYWdlRGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWluZ0luZm9BcnR3b3JrRGF0YSwg
bnNBcnR3b3JrLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5nZXQo
KSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtNSU1FVHlwZSwgbm93UGxheWlu
Z0luZm8uYXJ0d29yay0+bWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlhUmVtb3RlTm93UGxheWlu
Z0luZm9BcnR3b3JrSWRlbnRpZmllciwgU3RyaW5nOjpudW1iZXIobm93UGxheWluZ0luZm8uYXJ0
d29yay0+c3JjLmhhc2goKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNmI2NjIxN2ZmMTYxZGUz
NzRmMWNlMzFkNWQzNDYzNDBiYjJmY2I5MS4uNGNiZWYxMjc5MGQ0YTQzNGQ0NTExYjIzYzk2MDE1
MzZlOTI3MDIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVk
QnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZl
ckNGLmNwcApAQCAtMzMsOCArMzMsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJl
ZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQorRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIHsKKyAgICBBU1NF
UlQoIW1fY29udGlndW91cyk7CiAgICAgYXBwZW5kKGRhdGEpOwogfQogCkBAIC00MywyNCArNDQs
MjAgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCiAjaWYgIVVT
RShGT1VOREFUSU9OKQogUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVD
RkRhdGEoKSBjb25zdAogewotICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKSB7CisgICAg
aWYgKGhhc09uZVNlZ21lbnQoKSkgewogICAgICAgICBpZiAoYXV0byogZGF0YSA9IHN0ZDo6Z2V0
X2lmPFJldGFpblB0cjxDRkRhdGFSZWY+PigmbV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0
YWJsZURhdGEpKQogICAgICAgICAgICAgcmV0dXJuICpkYXRhOwogICAgIH0KLSAgICBhdXRvIGNm
RGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShudWxscHRyLCBzaXplKCkpKTsKLSAg
ICBmb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICBDRkRhdGFBcHBl
bmRCeXRlcyhjZkRhdGEuZ2V0KCksIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0g
ICAgfSk7Ci0gICAgcmV0dXJuIGNmRGF0YTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVh
dGUobnVsbHB0ciwgZGF0YSgpLCBzaXplKCkpKTsKIH0KICNlbmRpZgogCi1SZWY8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFSZWYgZGF0YSkKK1JlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhUmVmIGRh
dGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGRhdGEpKTsKIH0K
IAotdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKK3Zv
aWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25z
dAogewogICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBtX3NlZ21lbnRzKSB7CiAgICAgICAg
IGlmIChlbnRyeS5zZWdtZW50LT5oYXNPbmVSZWYoKSkgewpAQCAtNzAsOSArNjcsOCBAQCB2b2lk
IFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogICAgIH0KIH0K
IAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKK3ZvaWQgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQogewotICAgIEFTU0VSVCgh
bV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCk7CiAgICAgaWYgKGRhdGEpIHsKICAgICAg
ICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0p
OwogICAgICAgICBtX3NpemUgKz0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250
ZW50RmlsdGVyLmgKaW5kZXggMDc5N2RmYmU4ZDAxOGJlNjM2MTc0NGM1OGY4OTJkZDU2ZWQ2ODlj
NS4uY2JlODc3MWE0NWQ4NjJjYjVhYjA1ZWNhMzk5OTI3ZTA3ODM4ZjU0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3Bv
bnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQg
YWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2
b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+
IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICAgICBDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzUmVxdWlyZWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXIubW0KaW5kZXggNDI5MGRiMTI4ZDAwMGE0MGVlZjcwZmQyOTQxZDYzNDQ5MDQ2
ZGUwMy4uMmVmMjcwMWZlNjc4YmY5YjkyZGIyMTJiYmVhNWM5MTVhM2ZjM2EyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXIubW0KQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIE5ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQogICAgIHNlbWFwaG9yZS53
YWl0KCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAog
ewogICAgIEFTU0VSVChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG1fcmVwbGFjZW1lbnREYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5o
CmluZGV4IDA2OGNkY2IzODNmNDIzNjVhYzMyNjRlMjI5YTZkNjNiYzJiNGFiZDYuLjY3OWFlOTMy
OTUxN2UxZjM5NDNiYTU3NjJhYzhmNTZlODYwYzhjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXIuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZERhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hl
ZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVu
dERhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
cmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigp
IGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCmluZGV4
IGI0NjFmOTc1MzZkZTNhMTU4MTNhNTgyN2I4NjcxMzhiOTZkNGYzOGMuLjFjOTYwNDcxNmI0MjY5
M2Q1ZTQ2YzJlMjNlOTQxZGEwMGM4M2U0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1t
CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6
ZmluaXNoZWRBZGRpbmdEYXRhKCkKICAgICB1cGRhdGVGaWx0ZXJTdGF0ZSgpOwogfQogCi1SZWY8
U2hhcmVkQnVmZmVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnRE
YXRhKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQYXJlbnRhbENvbnRyb2xz
Q29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZGlk
QmxvY2tEYXRhKCkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3JlcGxhY2Vt
ZW50RGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0
ZWJvYXJkQ29jb2EubW0KaW5kZXggNmYyOGU4MjQzNjBjY2QzMDg2YzAzMThmYWU0MDk4ZjFlZGUy
OGUyNS4uYjgxNzA4MTdjZWM1OWUyMmQzYzBlOWE3OGYxNDZjMDMzZTRjMTY2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpAQCAtNDcs
NyArNDcsNyBAQCBzdGF0aWMgTlNCaXRtYXBJbWFnZUZpbGVUeXBlIGJpdG1hcFBOR0ZpbGVUeXBl
KCkKIH0KICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLS8vIE1ha2luZyB0aGlzIG5vbi1pbmxp
bmUgc28gdGhhdCBXZWJLaXQgMidzIGRlY29kaW5nIGRvZXNuJ3QgaGF2ZSB0byBpbmNsdWRlIFNo
YXJlZEJ1ZmZlci5oLgorLy8gTWFraW5nIHRoaXMgbm9uLWlubGluZSBzbyB0aGF0IFdlYktpdCAy
J3MgZGVjb2RpbmcgZG9lc24ndCBoYXZlIHRvIGluY2x1ZGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ci5oLgogUGFzdGVib2FyZFdlYkNvbnRlbnQ6OlBhc3RlYm9hcmRXZWJDb250ZW50KCkgPSBkZWZh
dWx0OwogUGFzdGVib2FyZFdlYkNvbnRlbnQ6On5QYXN0ZWJvYXJkV2ViQ29udGVudCgpID0gZGVm
YXVsdDsKIApAQCAtMjExLDkgKzIxMSw5IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5
cGVzRm9yTGVnYWN5VW5zYWZlQmluZGluZ3MoKQogfQogCiAjaWYgUExBVEZPUk0oTUFDKQotc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZm
QnVmZmVyKQorc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIHsKLSAgICBhdXRvIGltYWdlID0gYWRvcHRO
UyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJ
bWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJl
cHJlc2VudGF0aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9
XTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCmluZGV4
IDllZTBjMGI1NWQ3OTRjMmI2OTA1N2JiZjM2NGFiZjE4MzhhOWI4NTAuLjI1ZjMxMWYyNTg5Yjgy
ZWZkMjU3N2EwODg5NGI2YzVlMDY2YjkyNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC0zNSwxMSArMzUsMTEgQEAKICNp
bXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiBAaW50ZXJmYWNlIFdlYkNvcmVTaGFy
ZWRCdWZmZXJEYXRhIDogTlNEYXRhCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhU2VnbWVu
dDooY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpZGF0YVNlZ21lbnQg
cG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilzaXplOworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdt
ZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJ
bnRlZ2VyKXNpemU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlU2hhcmVkQnVmZmVy
RGF0YSB7Ci0gICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQ+IF9kYXRhU2VnbWVudDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQ+
IF9kYXRhU2VnbWVudDsKICAgICBOU1VJbnRlZ2VyIF9wb3NpdGlvbjsKICAgICBOU1VJbnRlZ2Vy
IF9zaXplOwogfQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIg
ZGVhbGxvY107CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlv
bjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudCYpZGF0
YVNlZ21lbnQgcG9zaXRpb246KE5TVUludGVnZXIpcG9zaXRpb24gc2l6ZTooTlNVSW50ZWdlcilz
aXplCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBu
aWw7CkBAIC04OCwxMyArODgsMTQgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
ZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkKK1JlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoTlNE
YXRhICpkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihicmlk
Z2VfY2FzdChkYXRhKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoYnJpZGdlX2Nhc3QoZGF0YSkpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFw
cGVuZChOU0RhdGEgKmRhdGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChO
U0RhdGEgKmRhdGEpCiB7CisgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIHJldHVybiBh
cHBlbmQoYnJpZGdlX2Nhc3QoZGF0YSkpOwogfQogCkBAIC0xMDUsMTAgKzEwNiw4IEBAIFJldGFp
blB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIAogUmV0YWlu
UHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewotICAg
IGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwogICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAg
ICAgICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7
Ci0gICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwogICAgIHJldHVybiBicmlkZ2Vf
Y2FzdChtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpKTsKIH0KIApAQCAtMTE5
LDE0ICsxMTgsMTQgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVG
cm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotUmV0YWluUHRyPE5TQXJyYXk+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhQXJy
YXkoKSBjb25zdAorUmV0YWluUHRyPE5TQXJyYXk+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNy
ZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKIHsKICAgICByZXR1cm4gY3JlYXRlTlNBcnJheShtX3Nl
Z21lbnRzLCBbXSAoYXV0byYgc2VnbWVudCkgewogICAgICAgICByZXR1cm4gc2VnbWVudC5zZWdt
ZW50LT5jcmVhdGVOU0RhdGEoKTsKICAgICB9KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxO
U0RhdGE+IERhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBh
ZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlckRhdGEgYWxsb2NdIGluaXRXaXRoRGF0YVNlZ21l
bnQ6KnRoaXMgcG9zaXRpb246MCBzaXplOnNpemUoKV0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKaW5kZXggZmJjMjgz
ZmJjMzM2OWJmODI3ZTMxNjk5NGM0Yzk0ZTA2MzYzY2I4MS4uMmRlNDE5MzRkYTE5ODc5ZDc1YzBk
ZjhhODllNjRlNTk5YzI5YWUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIExv
Z2dlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uOwogc3Ry
dWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb247CiAKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3Mg
Q0RNSW5zdGFuY2VDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VDbGll
bnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZUNsaWVudCgpID0gZGVmYXVs
dDsKIAotICAgIHZpcnR1YWwgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2Vp
dmVkKGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcm
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogLy8gSmF2YVNjcmlw
dCdzIGhhbmRsZSB0byBhIENETUluc3RhbmNlLCBtdXN0IGJlIHVzZWQgZnJvbSB0aGUKQEAgLTk4
LDcgKzk4LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6
ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxv
d0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2Fs
bGJhY2smJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8
U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3Vj
Y2Vzc0NhbGxiYWNrJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9y
eShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNy
ZWF0ZVNlc3Npb24oKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCmluZGV4IDM3Y2QwN2M3YmYy
ZGM3NWU0MWZkNWM2YzdkZWNmNDNlMTAzOWUxMTQuLmQyNTkyMjViYTllMDJhNjRkMGNlY2Q2MTUx
ZmRmOTNmNGYyNDY2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCkBAIC00MywxNiArNDMsMTYg
QEAgY2xhc3MgTG9nZ2VyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENETUluc3RhbmNl
U2Vzc2lvbkNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25D
bGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZVNlc3Npb25DbGllbnQo
KSA9IGRlZmF1bHQ7CiAKICAgICB1c2luZyBLZXlTdGF0dXMgPSBDRE1LZXlTdGF0dXM7Ci0gICAg
dXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVy
PiwgS2V5U3RhdHVzPj47CisgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6
cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIEtleVN0YXR1cz4+OwogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBtZXNzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VU
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHVzaW5n
IFBsYXRmb3JtRGlzcGxheUlEID0gdWludDMyX3Q7CiAgICAgdmlydHVhbCBQbGF0Zm9ybURpc3Bs
YXlJRCBkaXNwbGF5SUQoKSA9IDA7CkBAIC03OCwxMyArNzgsMTMgQEAgcHVibGljOgogICAgICAg
ICBTdWNjZWVkZWQsCiAgICAgfTsKIAotICAgIHVzaW5nIExpY2Vuc2VDYWxsYmFjayA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUg
c3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5p
dERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSA9IDA7CisgICAgdXNpbmcgTGljZW5zZUNhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBt
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0
aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgPSAw
OwogCiAgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50
OjpLZXlTdGF0dXNWZWN0b3I7Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6cGFpcjxNZXNzYWdl
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8
TWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgdXNpbmcgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHNlc3Npb25X
YXNDbG9zZWQsIHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxN
ZXNzYWdlPiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwg
TGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKIAogICAgIGVudW0gY2xhc3MgU2Vzc2lvbkxv
YWRGYWlsdXJlIDogdWludDhfdCB7CiAgICAgICAgIE5vbmUsCkBAIC0xMDAsNyArMTAwLDcgQEAg
cHVibGljOgogICAgIHVzaW5nIENsb3NlU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPjsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSA9IDA7CiAKLSAgICB1c2luZyBSZW1v
dmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChLZXlTdGF0dXNW
ZWN0b3ImJiwgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiwgU3VjY2Vzc1ZhbHVl
KT47CisgICAgdXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiYmLCBTdWNjZXNzVmFsdWUpPjsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
U2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVT
ZXNzaW9uRGF0YUNhbGxiYWNrJiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdG9yZVJlY29y
ZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAppbmRleCBjYzZk
YzdmMTQwY2Q2N2QyYjdiODRmNmFiMmMyODQzMTZkZmRkY2NmLi41MmE2MTQ4YzgzY2Q1MzkzYzhm
ODc0ZWQ4NWFkOGJmMjdlNWJlNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC03Myw4ICs3Myw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSA9IDA7CiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25z
dCA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQo
Y29uc3QgU3RyaW5nJikgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKaW5kZXggZjIxOGY5
NzkwNGZiYmE0OWYxZWJkZjQ4ZTIwNWZlNzNkZmFmYjY0OC4uNGJhNzViZjAwZDlmNzEzYjVhZmJi
YTc5MzQwMTk3MTZjZDhmMDM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIENETUluc3Rh
bmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yIEtleVN0b3JlOjpjb252ZXJ0VG9KU0tleVN0YXR1
c1ZlY3RvcigpIGNvbnN0CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Ig
a2V5U3RhdHVzVmVjdG9yOwogICAgIGtleVN0YXR1c1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG51bUtleXMoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBrZXkgOiBtX2tleXMpCi0gICAg
ICAgIGtleVN0YXR1c1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQoc3RkOjpwYWlyPFJlZjxTaGFyZWRC
dWZmZXI+LCBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1cz4geyBrZXktPmlkQXNTaGFyZWRC
dWZmZXIoKSwga2V5LT5zdGF0dXMoKSB9KTsKKyAgICAgICAga2V5U3RhdHVzVmVjdG9yLnVuY2hl
Y2tlZEFwcGVuZChzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBDRE1JbnN0
YW5jZVNlc3Npb246OktleVN0YXR1cz4geyBrZXktPmlkQXNTaGFyZWRCdWZmZXIoKSwga2V5LT5z
dGF0dXMoKSB9KTsKICAgICByZXR1cm4ga2V5U3RhdHVzVmVjdG9yOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaAppbmRleCBhNTg0
YjZjZDI2NmIwOTgwOTAyNTRkN2RjYmRkYmY2MGQ5MzMxZmJiLi5lMWUwOThhMWQ1ZjVmZmM2NWMy
YTQ4ZmE0MGFhOTcyZmU4OWUxZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgS2V5SGFuZGxlKHN0YXR1cywgV1RGTW92
ZShrZXlJRCksIFdURk1vdmUoa2V5SGFuZGxlVmFsdWUpKSk7CiAgICAgfQotICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9pZC5zaXplKCkpOyB9CisgICAgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtX2lkLmRhdGEoKSwgbV9pZC5zaXplKCkpOyB9CiAKICAgICBib29sIHRha2VW
YWx1ZUlmRGlmZmVyZW50KEtleUhhbmRsZVZhbHVlVmFyaWFudCYmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAK
aW5kZXggNWJlYmNiNDlhYThlYjlhMmJiMDcxMWVhZTA4MGYzNzdlMjJiOTgzNC4uZmNhNmYyMzg4
YTU2YTZhMWM3MjQ3MGU1YTQ2ZmRkMjhmMDczNzUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC0zOCw3
ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIENETVV0aWxpdGllcyB7
CiAKLVJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK1JlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gRmFpbCBvbiBsYXJnZSBi
dWZmZXJzIHdob3NlIHNpemUgZG9lc24ndCBmaXQgaW50byBhIDMyLWJpdCB1bnNpZ25lZCBpbnRl
Z2VyLgogICAgIHNpemVfdCBzaXplID0gYnVmZmVyLnNpemUoKTsKQEAgLTQ2LDcgKzQ2LDcgQEAg
UmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFBhcnNlIHRoZSBidWZm
ZXIgY29udGVudHMgYXMgSlNPTiwgcmV0dXJuaW5nIHRoZSByb290IG9iamVjdCAoaWYgYW55KS4K
LSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
aXplKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNP
Tjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaAppbmRl
eCA3NGY1MTViMGJkMmE4NzE2OGVlZjI0YjE4Zjk1ZGVhYmVlODI4ZTZjLi5mY2Y1YmRkYTdjNTk3
ZDNjM2FjMzQ5ZWUxNzg5ZTRhZDZlMGM5NTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaApAQCAtMzUsMTEgKzM1LDEx
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIENETVV0aWxpdGllcyB7CiAKLVJl
ZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImKTsK
K1JlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJik7CiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCBk
ZDM0NTdiZmRlOGM5MjE4NzdkZDdiOTgyZTk5MjFmY2MwZmVkMmVkLi4zMWE5ZmRmYTAyZDZkMDBj
YTI2MTgyNTJkZWQ5MzUzMTNkYzU4YWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3Bw
CkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VMaWNlbnNlUmVsZWFzZUFja25v
d2xlZGdlbWVudEZvcm1hdChjb25zdCBKU09OOjpPYmplY3QmIHJvb3QpCiAvLyBdOwogCiAvLyBU
aGlzIGZ1bmN0aW9uIGV4dHJhY3RzIHRoZSBLZXlJZHMgY291bnQgYW5kIHRoZSBsb2NhdGlvbiBv
ZiB0aGUgZmlyc3QgS2V5SWQgaW4gaW5pdERhdGEgYnVmZmVyLgotc3RhdGljIHN0ZDo6cGFpcjx1
bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQs
IHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIHN0ZDo6cGFpcjx1bnNpZ25l
ZCwgdW5zaWduZWQ+IGtleUlkc01hcCgwLCAwKTsKIApAQCAtMTM4LDcgKzEzOCw4IEBAIHN0YXRp
YyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9t
Q2VuY0luaXREYXRhKGNvbnN0CiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0
YS5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAg
IHJldHVybiBrZXlJZHNNYXA7CiAKLSAgICBhdXRvKiBkYXRhID0gaW5pdERhdGEuZGF0YSgpOwor
ICAgIGF1dG8gY29udGlndW91c0luaXREYXRhID0gaW5pdERhdGEubWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICBhdXRvKiBkYXRhID0gY29udGlndW91c0luaXREYXRhLT5kYXRhKCk7CiAgICAgdW5zaWdu
ZWQgaW5pdERhdGFTaXplID0gaW5pdERhdGEuc2l6ZSgpOwogICAgIHVuc2lnbmVkIGluZGV4ID0g
MDsKICAgICB1bnNpZ25lZCBwc3NoU2l6ZSA9IDA7CkBAIC0xODgsMTUgKzE4OSwxNSBAQCBzdGF0
aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJv
bUNlbmNJbml0RGF0YShjb25zdAogfQogCiAvLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUg
aW5pdERhdGEgc2hhcmVkQnVmZmVyIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0YS4KLXN0YXRpYyBi
b29sIGlzQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitzdGF0aWMg
Ym9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSkKIHsKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAgPSBleHRy
YWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGluaXREYXRhKTsKICAgICByZXR1cm4g
KChrZXlJZHNNYXAuZmlyc3QpICYmIChrZXlJZHNNYXAuc2Vjb25kKSk7CiB9CiAKLXN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBl
eHRyYWN0S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgc3Rk
OjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xvY2F0
aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgdW5zaWduZWQga2V5SWRDb3VudCA9
IGtleUlkc01hcC5maXJzdDsKQEAgLTIwNCw5ICsyMDUsMTAgQEAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
aW5pdEQKIAogICAgIC8vIENoZWNrIGlmIGluaXREYXRhIGlzIGEgdmFsaWQgQ0VOQyBpbml0RGF0
YS4KICAgICBpZiAoIWtleUlkQ291bnQgfHwgIWluZGV4KQotICAgICAgICByZXR1cm4ga2V5SWRz
OworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0
RGF0YS5kYXRhKCk7CisgICAgYXV0byBjb250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtl
Q29udGlndW91cygpOworICAgIGF1dG8qIGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEo
KTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRv
IGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjI0LDE3ICsyMjYsMTcg
QEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQKIAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMi
LCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAgICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+
dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAgIGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEo
KSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFw
cGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5
SWRzLnRha2UoKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZy
b21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIga2V5SWRzOwogCiAgICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBXZWJN
IGluaXREYXRhLgogICAgIGlmIChpbml0RGF0YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgp
ID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4g
a2V5SWRzOworICAgICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIAogICAgIGF1dG8gb2JqZWN0
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6
QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjQ1LDEyICsyNDcsMTIgQEAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RGEKICAgICAvLyBUaGUgZm9ybWF0IGlzIGEgSlNPTiBvYmplY3QgY29udGFpbmluZyB0aGUg
Zm9sbG93aW5nIG1lbWJlcnM6CiAgICAgLy8gImtpZHMiCiAgICAgLy8gQW4gYXJyYXkgb2Yga2V5
IElEcy4gRWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBpcyB0aGUgYmFzZTY0dXJsIGVuY29kaW5n
IG9mIHRoZSBvY3RldCBzZXF1ZW5jZSBjb250YWluaW5nIHRoZSBrZXkgSUQgdmFsdWUuCi0gICAg
a2V5SWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoaW5pdERhdGEu
ZGF0YSgpLCBpbml0RGF0YS5zaXplKCkpKTsKKyAgICBrZXlJZHNBcnJheS0+cHVzaFN0cmluZyhi
YXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGluaXREYXRhLnNpemUoKSkpOwogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1v
dmUoa2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05T
dHJpbmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29u
RGF0YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpz
b25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFr
ZSgpOwogfQogCiBDRE1GYWN0b3J5Q2xlYXJLZXkmIENETUZhY3RvcnlDbGVhcktleTo6c2luZ2xl
dG9uKCkKQEAgLTM4OCw3ICszOTAsNyBAQCBib29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9y
dHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0
ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUNs
ZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAgICAgLy8g
VmFsaWRhdGUgdGhlIGluaXREYXRhIGJ1ZmZlciBhcyBhbiBKU09OIG9iamVjdCBpbiBrZXlpZHMg
Y2FzZS4KICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaW5pdERhdGFUeXBl
LCAia2V5aWRzIikgJiYgQ0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QoaW5pdERhdGEpKQpA
QCAtNDA1LDcgKzQwNyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVDbGVhcktleTo6c2FuaXRp
emVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25z
ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICAv
LyBWYWxpZGF0ZSB0aGUgcmVzcG9uc2UgYnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0LgogICAgIGlm
ICghQ0RNVXRpbGl0aWVzOjpwYXJzZUpTT05PYmplY3QocmVzcG9uc2UpKQpAQCAtNDMxLDcgKzQz
Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0
aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyCiAgICAgY2FsbGJhY2soc3VjY2VlZGVkKTsK
IH0KIAotdm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8
U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5z
dGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIC8vIFJlamVjdCBz
ZXR0aW5nIGFueSBzZXJ2ZXIgY2VydGlmaWNhdGUuCiAgICAgY2FsbGJhY2soRmFpbGVkKTsKQEAg
LTQ1Myw3ICs0NTUsNyBAQCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBDRE1JbnN0YW5jZUNs
ZWFyS2V5OjpjcmVhdGVTZXNzaW9uKCkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENETUluc3Rh
bmNlU2Vzc2lvbkNsZWFyS2V5KCp0aGlzKSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
Q2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFj
ayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxi
YWNrKQogewogICAgIHN0YXRpYyB1aW50MzJfdCBzX3Nlc3Npb25JZFZhbHVlID0gMDsKICAgICAr
K3Nfc2Vzc2lvbklkVmFsdWU7CkBAIC00NzUsNyArNDc3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJp
bmcmIGkKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6
OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAjaWYg
TE9HX0RJU0FCTEVECiAgICAgLy8gV2Ugb25seSB1c2UgdGhlIHNlc2lvbiBJRCBmb3IgZGVidWcg
bG9nZ2luZy4gVGhlIHZlcmJvc2UgcHJlcHJvY2Vzc29yIGNoZWNrcyBhcmUgYmVjYXVzZQpAQCAt
NTY2LDcgKzU2OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlbW92ZVNl
c3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlCiAgICAgQVNTRVJUKHNlc3Np
b25JZCA9PSBtX3Nlc3Npb25JRCk7CiAKICAgICBhdXRvIGRpc3BhdGNoQ2FsbGJhY2sgPQotICAg
ICAgICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgJmNhbGxiYWNrXShLZXlTdGF0dXNW
ZWN0b3ImJiBrZXlTdGF0dXNWZWN0b3IsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+
JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2Nlc3MpIHsKKyAgICAgICAgW3dlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH0sICZjYWxsYmFja10oS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVz
VmVjdG9yLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBtZXNz
YWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VzcykgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZCgKICAgICAgICAgICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKndlYWtUaGlzIH0sIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGtleVN0YXR1c1ZlY3RvciA9IFdURk1vdmUoa2V5
U3RhdHVzVmVjdG9yKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHN1Y2Nlc3NdKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCkBAIC01NzksNyArNTgx
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKICAgICAvLyBDb25zdHJ1Y3QgdGhlIEtleVN0
YXR1c1ZlY3RvciBvYmplY3QsIHJlcHJlc2VudGluZyByZWxlYXNlZCBrZXlzLCBhbmQgdGhlIG1l
c3NhZ2UgaW4gdGhlCiAgICAgLy8gJ2xpY2Vuc2UgcmVsZWFzZScgZm9ybWF0LgogICAgIEtleVN0
YXR1c1ZlY3RvciBrZXlTdGF0dXNWZWN0b3IgPSBtX2tleVN0b3JlLmFsbEtleXNBcyhDRE1JbnN0
YW5jZVNlc3Npb246OktleVN0YXR1czo6UmVsZWFzZWQpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1lc3NhZ2U7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2U7
CiAgICAgewogICAgICAgICAvLyBDb25zdHJ1Y3QgSlNPTiB0aGF0IHJlcHJlc2VudHMgdGhlICds
aWNlbnNlIHJlbGVhc2UnIGZvcm1hdCwgY3JlYXRpbmcgYSAna2lkcycgYXJyYXkKICAgICAgICAg
Ly8gb2YgYmFzZTY0VVJMLWVuY29kZWQga2V5IElEcyBmb3IgYWxsIGtleXMgdGhhdCB3ZXJlIGFz
c29jaWF0ZWQgd2l0aCB0aGlzIHNlc3Npb24uCkBAIC01OTMsMTQgKzU5NSwxNCBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgTGljZQogICAgICAgICAgICAgcm9vdE9iamVjdC0+c2V0QXJyYXkoImtpZHMi
LCBXVEZNb3ZlKGFycmF5KSk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBDb3B5IHRoZSBKU09O
IGRhdGEgaW50byBhIFNoYXJlZEJ1ZmZlciBvYmplY3QuCisgICAgICAgIC8vIENvcHkgdGhlIEpT
T04gZGF0YSBpbnRvIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBvYmplY3QuCiAgICAgICAgIFN0
cmluZyBtZXNzYWdlU3RyaW5nID0gcm9vdE9iamVjdC0+dG9KU09OU3RyaW5nKCk7CiAgICAgICAg
IENTdHJpbmcgbWVzc2FnZUNTdHJpbmcgPSBtZXNzYWdlU3RyaW5nLnV0ZjgoKTsKICAgICAgICAg
bWVzc2FnZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2VDU3RyaW5nLmRhdGEoKSwgbWVz
c2FnZUNTdHJpbmcubGVuZ3RoKCkpOwogICAgIH0KIAogICAgIG1fa2V5U3RvcmUudW5yZWZBbGxL
ZXlzKCk7Ci0gICAgZGlzcGF0Y2hDYWxsYmFjayhXVEZNb3ZlKGtleVN0YXR1c1ZlY3RvciksIFJl
ZjxTaGFyZWRCdWZmZXI+KCptZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOworICAg
IGRpc3BhdGNoQ2FsbGJhY2soV1RGTW92ZShrZXlTdGF0dXNWZWN0b3IpLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4oKm1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAK
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnN0b3JlUmVjb3JkT2ZLZXlVc2FnZShj
b25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKaW5kZXggOWMwNzQ3ZGMxYmQ4
ZTY3ZjNiYTg2NGQ5YjgxMTMzNzYyNWM4YTY3OS4uOWUyN2ZlOTEyYzRkYTA2N2ZiMjZjYWZiYzdm
NmE2NTFkYTQ3NTI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCkBAIC04Niw4ICs4Niw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7CiAgICAgYm9v
bCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3Vw
cG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7Ci0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXIm
KSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogfTsKIApAQCAt
OTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFuY2UKICAgICBJbXBsZW1lbnRh
dGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVt
ZW50YXRpb25UeXBlOjpDbGVhcktleTsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1
cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZl
SWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmlu
YWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBT
dWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0
YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKQEAgLTEwOSw4ICsxMDksOCBAQCBj
bGFzcyBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleSBmaW5hbCA6IHB1YmxpYyBDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eSB7CiBwdWJsaWM6CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXko
Q0RNSW5zdGFuY2VDbGVhcktleSYgcGFyZW50KQogICAgICAgICA6IENETUluc3RhbmNlU2Vzc2lv
blByb3h5KHBhcmVudCkgeyB9Ci0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwg
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXRE
YXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNv
bnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBk
YXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxv
YWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2Fk
U2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0
cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vz
c2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2Fs
bGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oCmluZGV4IGU5NjhlOTg1YzdlZWNlZmU0MzVhYTkyMDVj
NDRkZDM1YWVkOGUwZDAuLmVjZjRlMDhjOWI5OTFhZGUyNzNiZDQ0YzYwYmIxNWZlMDE2MzViMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVy
R2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5oCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xh
c3MgS2V5ZWRFbmNvZGVyR2VuZXJpYyBmaW5hbCA6IHB1YmxpYyBLZXllZEVuY29kZXIgewogcHVi
bGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZm
ZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xp
Yi5jcHAKaW5kZXggOGE4YzEwYjcwMjRjZmUwMzhlOWZhN2I3MTViZTI2ODg5ZmMwNWUyOC4uOTM3
ZDFmYjZmMGM4ZDdiNTFmMThmZjE1NTYwYjNiOTRhNzRmNjFiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCkBAIC0yNiwxNiArMjYs
MTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZl
cihHQnl0ZXMqIGJ5dGVzKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcihHQnl0ZXMqIGJ5dGVzKQogewogICAgIEFTU0VSVChieXRlcyk7CiAgICAgbV9zaXpl
ID0gZ19ieXRlc19nZXRfc2l6ZShieXRlcyk7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBE
YXRhU2VnbWVudDo6Y3JlYXRlKEdSZWZQdHI8R0J5dGVzPihieXRlcykpIH0pOwogfQogCi1SZWY8
U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0ZXMqIGJ5dGVzKQorUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShHQnl0
ZXMqIGJ5dGVzKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihieXRl
cykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoYnl0
ZXMpKTsKIH0KIAogR1JlZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA3NDQyMDA0
ZjAwYjVkYmEyN2YzYzMyZTY2N2IzNmJjY2Y3ODUxNGNkLi44MmViYTczYmFjNGM3NmZlYTBiYjYw
ZWJhNDQzNjgyZDIyYzdmZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5oCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZvbnRDYWNo
ZTsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEdseXBoUGFnZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBHbHlwaERh
dGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQ
bGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0
Zm9ybURhdGEuaAppbmRleCAzMGRmYWEyZDJmODVhOWY3Y2RhMjAwODI5ZGUxOTliMTRlODRiMjE5
Li5mYmJjY2M0MzY4NDQ3NDkwODNjZTg5MWYzNjNmNmNjNDBmMjk3NDUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC03
NCw3ICs3NCw2IEBAIGludGVyZmFjZSBJRFdyaXRlRm9udEZhY2U7CiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogLy8g
VGhpcyBjbGFzcyBpcyBjb25jZXB0dWFsbHkgaW1tdXRhYmxlLiBPbmNlIGNyZWF0ZWQsIG5vIGlu
c3RhbmNlcyBzaG91bGQgZXZlciBjaGFuZ2UgKGluIGFuIG9ic2VydmFibGUgd2F5KS4KIGNsYXNz
IEZvbnRQbGF0Zm9ybURhdGEgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuY3BwCmluZGV4IDRhODUzZWI2NDk1M2Q0YWU0ODM0Zjg3YzU0ODdhY2QzNjRjNTdkODEuLmUz
MmEzNmM2MDc2MTkyMTY4YzZhMzc5MzE4Zjc4YWUxNzg5YzQ4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIElt
YWdlOjppc1Bvc3RTY3JpcHRSZXNvdXJjZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBV
UkwmIHVybCkKIH0KIAogCi1FbmNvZGVkRGF0YVN0YXR1cyBJbWFnZTo6c2V0RGF0YShSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorRW5jb2RlZERhdGFT
dGF0dXMgSW1hZ2U6OnNldERhdGEoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgbV9lbmNvZGVkSW1hZ2VEYXRhID0gV1RG
TW92ZShkYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5k
ZXggNmEwODE2OTU3YWE5M2M0MTFhNTZjZDRjMmJjMjBkZDZkOTA0NGRlYy4uNjU1ZGZlNzNjZmY2
YWQxZDA0ZjQ4YmMyMDE5ZWJiODA0MTdkNjEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oCkBAIC03MCw3ICs3MCw3IEBAIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsK
IGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRl
eHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
c3RydWN0IExlbmd0aDsKIAogLy8gVGhpcyBjbGFzcyBnZXRzIG5vdGlmaWVkIHdoZW4gYW4gaW1h
Z2UgY3JlYXRlcyBvciBkZXN0cm95cyBkZWNvZGVkIGZyYW1lcyBhbmQgd2hlbiBpdCBhZHZhbmNl
cyBhbmltYXRpb24gZnJhbWVzLgpAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCB7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KICAgICB2aXJ0dWFsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBj
b25zdCB7IHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2U7IH0KIAotICAgIFdFQkNP
UkVfRVhQT1JUIEVuY29kZWREYXRhU3RhdHVzIHNldERhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRW5jb2Rl
ZERhdGFTdGF0dXMgc2V0RGF0YShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdmlydHVhbCBFbmNvZGVkRGF0YVN0YXR1cyBk
YXRhQ2hhbmdlZChib29sIC8qYWxsRGF0YVJlY2VpdmVkKi8pIHsgcmV0dXJuIEVuY29kZWREYXRh
U3RhdHVzOjpVbmtub3duOyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyB1dGkoKSBjb25zdCB7IHJl
dHVybiBTdHJpbmcoKTsgfSAvLyBudWxsIHN0cmluZyBpZiB1bmtub3duCkBAIC0xMzMsOCArMTMz
LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29s
IGRlc3Ryb3lBbGwgPSB0cnVlKSA9IDA7CiAKLSAgICBTaGFyZWRCdWZmZXIqIGRhdGEoKSB7IHJl
dHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KKyAgICBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRh
LmdldCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQogCiAgICAgdmlydHVhbCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpOwogCkBAIC0yMDksNyArMjA5LDcgQEAgcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgQ29sb3Igc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3Qg
eyByZXR1cm4gQ29sb3IoKTsgfQogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fZW5jb2RlZEltYWdlRGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bV9lbmNvZGVkSW1hZ2VEYXRhOwogICAgIEltYWdlT2JzZXJ2ZXIqIG1faW1hZ2VPYnNlcnZlcjsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fYW5pbWF0aW9uU3RhcnRUaW1lcjsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdT
dG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3Rv
cmUuaAppbmRleCA0ZGRiNmRmODNlY2I4YjliNzk1N2Y0NjY0ZTE4NGYwMDgxZTgxMDExLi5kZTMz
ZjFhZjQxMmRjMDhiMmI5NjFhMTk0OTQ1YzljYzkwYWE2NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKQEAgLTY2LDcg
KzY2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGJ1
ZmZlci5ncm93KGJ1ZmZlclNpemUpOwotICAgICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBtX3BpeGVscyA9
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZm
ZXIpKTsKICAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4o
Y29uc3RfY2FzdDx1aW50OF90Kj4obV9waXhlbHMtPmRhdGEoKSkpOwogICAgICAgICBtX3NpemUg
PSBzaXplOwogICAgICAgICBtX2ZyYW1lUmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwgbV9zaXpl
KTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgQVNTRVJUKCFt
X3NpemUuaXNFbXB0eSgpICYmICFpc092ZXJTaXplKG1fc2l6ZSkpOwogICAgICAgICBWZWN0b3I8
dWludDhfdD4gYnVmZmVyIHsgb3RoZXIubV9waXhlbHMtPmRhdGEoKSwgb3RoZXIubV9waXhlbHMt
PnNpemUoKSB9OwotICAgICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBtX3BpeGVscyA9IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAg
ICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oY29uc3RfY2FzdDx1
aW50OF90Kj4obV9waXhlbHMtPmRhdGEoKSkpOwogICAgIH0KIApAQCAtMjMzLDcgKzIzMyw3IEBA
IHByaXZhdGU6CiAgICAgICAgIHJldHVybiBQYWNrZWRDb2xvcjo6QVJHQiB7IHJlc3VsdCB9LnZh
bHVlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3Bp
eGVsczsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1f
cGl4ZWxzOwogICAgIHVpbnQzMl90KiBtX3BpeGVsc1B0ciB7IG51bGxwdHIgfTsKICAgICBJbnRT
aXplIG1fc2l6ZTsKICAgICBJbnRSZWN0IG1fZnJhbWVSZWN0OyAvLyBUaGlzIHdpbGwgYWx3YXlz
IGp1c3QgYmUgdGhlIGVudGlyZSBidWZmZXIgZXhjZXB0IGZvciBHSUYgYW5kIFBORyBmcmFtZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3Bw
CmluZGV4IDA4NjllOTlhMDA4ODZmN2NkMTIxODZmZTMxNjFkZTA0N2ZhNTEzNjEuLjdjNTQ5NDdm
NGQ4MTQwODU1OWNjNDVjNGFjNDlhMTliOWZjODZmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcApAQCAtODIsNyArODIsNyBAQCB2
b2lkIEltYWdlRGVjb2Rlcjo6Y2xlYXJGYWN0b3JpZXMoKQogfQogI2VuZGlmCiAKLVJlZlB0cjxJ
bWFnZURlY29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPEltYWdl
RGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAg
IFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKaW5kZXggYTFhMDhhZGMxNzVkNDRiYWE0NDJlNDRhOTRh
YTk2N2EwNGY1ZjYwNy4uNmE4ZmZjYjYwZmMxMTU2ZWI4NDg3NmRlZmIwN2NiYzBiMTE5ODQ5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgK
QEAgLTM3LDEyICszNywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEltYWdlRGVj
b2RlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZURlY29kZXI+IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdl
RGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgc3RhdGljIFJlZlB0
cjxJbWFnZURlY29kZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsK
ICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKICAgICBlbnVtIGNsYXNz
IE1lZGlhVHlwZSB7CkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCiAgICAgdXNpbmcgU3VwcG9ydHNNZWRpYVR5cGVGdW5jID0gRnVuY3Rpb248Ym9vbChN
ZWRpYVR5cGUpPjsKICAgICB1c2luZyBDYW5EZWNvZGVUeXBlRnVuYyA9IEZ1bmN0aW9uPGJvb2wo
Y29uc3QgU3RyaW5nJik+OwotICAgIHVzaW5nIENyZWF0ZUltYWdlRGVjb2RlckZ1bmMgPSBGdW5j
dGlvbjxSZWZQdHI8SW1hZ2VEZWNvZGVyPihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBB
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pPjsKKyAgICB1c2luZyBDcmVh
dGVJbWFnZURlY29kZXJGdW5jID0gRnVuY3Rpb248UmVmUHRyPEltYWdlRGVjb2Rlcj4oRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbik+OwogCiAgICAgc3RydWN0IEltYWdlRGVjb2RlckZhY3Rvcnkgewog
ICAgICAgICBTdXBwb3J0c01lZGlhVHlwZUZ1bmMgc3VwcG9ydHNNZWRpYVR5cGU7CkBAIC0xMjks
NyArMTI5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVG
cmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xl
dmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERl
Y29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RXhw
ZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXREYXRh
KFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSA9IDA7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRl
eCBkODFjNDgwMTkyODQ2ZGQ3ZTMyMWMyZGZiZmJmMWUwYzIwZGFhNjcxLi4zMDc3NDMzMTVhNDFl
Y2ExYzliMmJjNzczZDA3OWVlNWQ0M2JhZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC03Miw3ICs3Miw3IEBAIEltYWdlU291
cmNlOjp+SW1hZ2VTb3VyY2UoKQogICAgIEFTU0VSVCgmbV9ydW5Mb29wID09ICZSdW5Mb29wOjpj
dXJyZW50KCkpOwogfQogCi1ib29sIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZhaWxhYmxl
KFNoYXJlZEJ1ZmZlciogZGF0YSkKK2Jvb2wgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFp
bGFibGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAoIWRhdGEgfHwg
aXNEZWNvZGVyQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtOTYsNyArOTYs
NyBAQCBib29sIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZhaWxhYmxlKFNoYXJlZEJ1ZmZl
ciogZGF0YSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0
YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZVNv
dXJjZTo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKIHsKICAgICBpZiAoIWRhdGEgfHwgIWVuc3VyZURlY29kZXJBdmFpbGFibGUoZGF0
YSkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNCwxMyArMTA0LDEzIEBAIHZvaWQgSW1hZ2VTb3Vy
Y2U6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAg
ICBtX2RlY29kZXItPnNldERhdGEoKmRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiB9CiAKLXZvaWQg
SW1hZ2VTb3VyY2U6OnJlc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIEltYWdlU291
cmNlOjpyZXNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBtX2Rl
Y29kZXIgPSBudWxscHRyOwogICAgIHNldERhdGEoZGF0YSwgaXNBbGxEYXRhUmVjZWl2ZWQoKSk7
CiB9CiAKLUVuY29kZWREYXRhU3RhdHVzIEltYWdlU291cmNlOjpkYXRhQ2hhbmdlZChTaGFyZWRC
dWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorRW5jb2RlZERhdGFTdGF0dXMgSW1h
Z2VTb3VyY2U6OmRhdGFDaGFuZ2VkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQogewogICAgIHNldERhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsK
ICAgICBjbGVhck1ldGFkYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuaAppbmRleCA4YWY1MDgwYTAwYTk5MTYwODBmMWYwYjI3NzA3M2MyYTg1
MzQ1MjU4Li44MTRmMGUxMmViYWE0OGY4NmFjYjUyMTk3M2MzMWQ1ZDM4MmY2ZmJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKQEAgLTM5LDcg
KzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQml0bWFwSW1hZ2U7CiBjbGFzcyBH
cmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbWFnZURlY29kZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbWFnZVNvdXJjZSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZVNvdXJjZT4sIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxJbWFnZVNvdXJjZT4gewogICAgIGZyaWVuZCBjbGFzcyBCaXRtYXBJbWFnZTsKQEAgLTU2
LDkgKzU2LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZVNv
dXJjZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSkpOwogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShT
aGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIHJlc2V0
RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOwotICAgIEVuY29kZWREYXRhU3RhdHVzIGRhdGFDaGFu
Z2VkKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQg
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCk7CisgICAgdm9pZCByZXNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSk7Cisg
ICAgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQo
KTsKIAogICAgIHVuc2lnbmVkIGRlY29kZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVk
U2l6ZTsgfQpAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KICAgICBUIGZpcnN0RnJhbWVNZXRhZGF0YUNhY2hlSWZOZWVkZWQoVCYgY2FjaGVkVmFs
dWUsIE1ldGFkYXRhVHlwZSwgVCAoSW1hZ2VGcmFtZTo6KmZ1bmN0b3IpKCkgY29uc3QsIEltYWdl
RnJhbWU6OkNhY2hpbmcsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Vic2FtcGxpbmdMZXZlbD4mID0g
eyB9KTsKIAotICAgIGJvb2wgZW5zdXJlRGVjb2RlckF2YWlsYWJsZShTaGFyZWRCdWZmZXIqIGRh
dGEpOworICAgIGJvb2wgZW5zdXJlRGVjb2RlckF2YWlsYWJsZShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBkYXRhKTsKICAgICBib29sIGlzRGVjb2RlckF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGVjb2RlcjsgfQogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKHNpemVfdCBmcmFtZUNv
dW50LCBzaXplX3QgZXhjbHVkZUZyYW1lKTsKICAgICB2b2lkIGRlY29kZWRTaXplQ2hhbmdlZChs
b25nIGxvbmcgZGVjb2RlZFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTW9kZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TW9kZWwuY3BwCmluZGV4IDNlNTllYTlkMDhkZDFjOWJlZTIzYmEzZjYzNWNmMzViZmMyODIyOTIu
LjU3N2JkNTA4YTVjNDA5ZjRiZTllNGNmMjAyYjgxZTYxZTQ1YjQ0YWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8U2hhcmVk
QnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitSZWY8TW9kZWw+IE1vZGVs
OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1
cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kZWwoV1RGTW92ZShkYXRhKSwgV1RG
TW92ZShtaW1lVHlwZSksIFdURk1vdmUodXJsKSkpOwogfQogCi1Nb2RlbDo6TW9kZWwoUmVmPFNo
YXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorTW9kZWw6Ok1vZGVs
KFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogICAg
IDogbV9kYXRhKFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKFdURk1vdmUobWltZVR5
cGUpKQogICAgICwgbV91cmwoV1RGTW92ZSh1cmwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmgKaW5kZXggMDY1ODEzMzc5ZjExMjU1ZDJkN2M3ZjZiNTAzNDQzZGM2MzBk
MDRlMS4uZTZiZGUxNjZmOTQ0Y2RlN2RiMzI4YzI5NzZlYzY4MmFkYjZkMTAzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxN
b2RlbD4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNy
ZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiwgU3RyaW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVS
TCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1vZGVsKCk7CiAKICAgICBSZWY8U2hhcmVkQnVmZmVy
PiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CkBAIC00OSw3ICs0OSw3IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNv
ZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxTaGFyZWRC
dWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiwgU3RyaW5nLCBVUkwpOwogCiAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAg
IFN0cmluZyBtX21pbWVUeXBlOwpAQCAtNjAsNyArNjAsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgogdm9pZCBNb2RlbDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAg
ZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fZGF0YS0+c2l6ZSgpKTsKLSAgICBlbmNv
ZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCks
IDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CiAgICAgZW5jb2RlciA8PCBtX21p
bWVUeXBlOwogICAgIGVuY29kZXIgPDwgbV91cmw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRl
ci5oCmluZGV4IDc0NTljNTg1OGQyNDg3ZWYyYzVmZDM3MTczOTg2YjMzNzM0ZWMyOGEuLjg4Njkx
ZGMyNTZkNmRkNmM0NWY0NmUwMTU0OTY3NDI0NWFhMzUzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJj
ZUxvYWRlci5oCkBAIC01MSw4ICs1MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVk
aXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNw
b25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hh
cmVkQnVmZmVyPiYmKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICAvLyBU
aGlzIG1ldGhvZCBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50
IHVzZXMgU2hhcmVkQnVmZmVyLgorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBy
ZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgdXNlcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyLgogICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiBwbGF0Zm9ybSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBkYXRhUmVj
ZWl2ZWQocGxhdGZvcm0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkpOyB9CiAg
ICAgdmlydHVhbCB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRG
YWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcAppbmRleCA1NDk5ZjM3YTdmMzY0NmJkNWYzOTVhNDhiMDlkOTQxMWQ0Yzli
NjY0Li5kM2UxYjU4MDRlODVhOTkxMWNmMjBmY2VkMzRiZjI1NWEzMTQ0MzRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2
YXRlLmNwcApAQCAtMTMxOCw3ICsxMzE4LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpk
aWRSZWNlaXZlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBvcmlnaW5hbFNhbXBsZSkKICAgICB1
cGRhdGVIaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wKCk7CiB9CiAKLXZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZTo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlOjphcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogewogICAgIGFwcGVuZChidWZmZXItPmV4dHJhY3REYXRhKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5o
CmluZGV4IGVmODZhNDczNjkzNzFjODNlODgzYjI5YmJiNmI5YWI5NmVjYTVmMWQuLjZiN2Q5NWU1
MmI5ZGYwYzgxYWYzYmUxZDZkOWYzYzhlZDM5NTQxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAgLTQ5LDcg
KzQ5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgVGltZVJhbmdlczsKIAogZW51bSBj
bGFzcyBTb3VyY2VCdWZmZXJBcHBlbmRNb2RlIDogdWludDhfdCB7CkBAIC02OCw3ICs2OCw3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQcml2YXRl
KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpID0gMDsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgYXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBhcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpOwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cmVzZXRQYXJzZXJTdGF0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21NZWRp
YVNvdXJjZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3Bw
CmluZGV4IGM2MTEyZTExOTRjN2M5OTBmZGMxMTRlODI5Y2ZkYjVjNmFmNzU0YTkuLjhiMDRmOWJl
OTZjMzZlMGEyNjIxODBhMjVlYTM3NDU5NjJiM2Q3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtODYsMTIgKzg2LDEyIEBAIGNvbnN0IEF0b21TdHJp
bmcmIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpCiAgICAgcmV0dXJuIHNr
ZDsKIH0KIAotc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFZlY3RvcjxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSlNPTiBvZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxi
YXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihidWZm
ZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAKICAgICBh
dXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAoIXZhbHVl
KQpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4
dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBpZiAoIXNpbmZB
cnJheSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4gc2luZnM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gc2luZnM7
CiAgICAgc2luZnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaW5mQXJyYXktPmxlbmd0aCgpKTsK
IAogICAgIGZvciAoYXV0byYgdmFsdWUgOiAqc2luZkFycmF5KSB7CkBAIC0xMjQsNyArMTI0LDcg
QEAgc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogfQogCiB1c2luZyBTY2hlbWVBbmRLZXlSZXN1bHQgPSBW
ZWN0b3I8c3RkOjpwYWlyPEZvdXJDQywgVmVjdG9yPHVpbnQ4X3Q+Pj47Ci1zdGF0aWMgU2NoZW1l
QW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQorc3RhdGljIFNjaGVtZUFuZEtleVJlc3VsdCBleHRyYWN0U2NoZW1lQW5k
S2V5SWRGcm9tU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgYXV0byBidWZmZXJzID0gZXh0cmFjdFNpbmZEYXRhKGJ1ZmZlcik7CiAgICAgaWYgKCFidWZm
ZXJzLnNpemUoKSkKQEAgLTE3MCw5ICsxNzAsOSBAQCBzdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0
IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZgog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRC
dWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2luZihj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFj
dEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAg
IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBhdXRvIHJlc3VsdHMgPSBleHRyYWN0U2No
ZW1lQW5kS2V5SWRGcm9tU2luZihidWZmZXIpOwogCiAgICAgZm9yIChhdXRvJiByZXN1bHQgOiBy
ZXN1bHRzKSB7CkBAIC0xODMsNyArMTgzLDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNo
YXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXkKICAg
ICByZXR1cm4ga2V5SURzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFp
clBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1p
bmc6OnNhbml0aXplU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgLy8gQ29tbW9uIFNJTkYgQm94IEZvcm1hdAogICAgIFVOVVNFRF9QQVJBTShidWZmZXIp
OwpAQCAtMTkxLDE3ICsxOTEsMTcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgU2hhcmVkQnVmZmUKICAgICByZXR1
cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNrZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1p
bmc6OnNhbml0aXplU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJl
dHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFj
dEtleUlEc1NrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAg
Ly8gSW4gdGhlICdza2QnIHNjaGVtZSwgdGhlIGluaXQgZGF0YSBpcyB0aGUga2V5IElELgotICAg
IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBrZXlJRHMuYXBwZW5kKGJ1ZmZlci5jb3B5
KCkpOwogICAgIHJldHVybiBrZXlJRHM7CiB9CkBAIC0zOTMsNyArMzkzLDcgQEAgYm9vbCBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9y
dHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewogICAgIGlmICghdmFsaWRJ
bml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtNDIzLDcgKzQyMyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkg
Y29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlT
dHJlYW1pbmc6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
cmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1G
YWlyUGxheVN0cmVhbWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKaW5kZXggYmM5M2Y2ZjZhN2JkZDAxZWZi
ZjU1YjYyYmRiNmE0ZTY2ZWY5MTJiMy4uMzE3YmI4ZDU3ZTg2YzA2MjE0ZTBiNDA1OWRkZjRmODgw
N2M3NGM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKQEAgLTcx
LDE3ICs3MSwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIG92ZXJy
aWRlOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29s
IHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9u
c2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNh
bml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBT
dHJpbmcmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBz
aW5mTmFtZSgpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVm
ZmVyPj4+IGV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNpbmYoY29uc3QgU2hhcmVkQnVmZmVyJik7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4+IGV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsK
KyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplU2luZihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0
cmluZyYgc2tkTmFtZSgpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTa2QoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAg
c3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplU2tkKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplU2tk
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0YXRpYyBjb25zdCBWZWN0
b3I8Rm91ckNDPiYgdmFsaWRGYWlyUGxheVN0cmVhbWluZ1NjaGVtZXMoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLmgKaW5kZXggMTU5YjkwY2RiNDhmN2ZlNDRiYjQ5YmUyZWMxYzFjMmY0MzI4NjQw
MC4uNTZiNThjMjVhMjg3MDlmYjM4MjIxODM5ZTU1YmFlNDVlZDkzY2Y2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQy5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBJbXBsZW1lbnRhdGlv
blR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50
YXRpb25UeXBlOjpGYWlyUGxheVN0cmVhbWluZzsgfQogCiAgICAgdm9pZCBpbml0aWFsaXplV2l0
aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlz
dGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFj
ayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRp
ZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFs
OwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsK
ICAgICB2b2lkIHNldENsaWVudChXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50PiYmKSBmaW5hbDsK
QEAgLTk0LDEwICs5NCwxMCBAQCBwdWJsaWM6CiAKICAgICBOU1VSTCAqc3RvcmFnZVVSTCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RvcmFnZVVSTC5nZXQoKTsgfQogICAgIGJvb2wgcGVyc2lzdGVudFN0
YXRlQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dlZDsgfQot
ICAgIFNoYXJlZEJ1ZmZlciogc2VydmVyQ2VydGlmaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX3Nl
cnZlckNlcnRpZmljYXRlLmdldCgpOyB9CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2Vy
dmVyQ2VydGlmaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlckNlcnRpZmljYXRlLmdldCgp
OyB9CiAgICAgQVZDb250ZW50S2V5U2Vzc2lvbiogY29udGVudEtleVNlc3Npb24oKTsKIAotICAg
IFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiB0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RG
b3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBTaGFy
ZWRCdWZmZXImIGluaXREYXRhKTsKKyAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4g
dGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpOwog
CiAgICAgLy8gQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlQ2xpZW50CiAgICAgdm9pZCBkaWRQ
cm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7CkBAIC0xMTIsNyArMTEy
LDcgQEAgcHVibGljOgogICAgIHZvaWQgb3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4
dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCkgZmluYWw7CiAgICAgdm9pZCBleHRlcm5hbFBy
b3RlY3Rpb25TdGF0dXNEaWRDaGFuZ2VGb3JDb250ZW50S2V5UmVxdWVzdChBVkNvbnRlbnRLZXlS
ZXF1ZXN0KikgZmluYWw7CiAKLSAgICB1c2luZyBLZXlzID0gVmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+PjsKKyAgICB1c2luZyBLZXlzID0gVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj47CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNz
aW9uRm9yS2V5SURzKGNvbnN0IEtleXMmKSBjb25zdDsKICAgICBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JHcm91cChBVkNvbnRlbnRLZXlSZXBv
cnRHcm91cCopIGNvbnN0OwogICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQyogc2Vzc2lvbkZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCopIGNvbnN0OwpA
QCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxDRE1JbnN0YW5jZUNsaWVu
dD4gbV9jbGllbnQ7CiAgICAgUmV0YWluUHRyPEFWQ29udGVudEtleVNlc3Npb24+IG1fc2Vzc2lv
bjsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUZQU0NvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGU+IG1f
ZGVsZWdhdGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZTsK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZTsK
ICAgICBib29sIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dlZCB7IHRydWUgfTsKICAgICBSZXRhaW5Q
dHI8TlNVUkw+IG1fc3RvcmFnZVVSTDsKICAgICBWZWN0b3I8V2Vha1B0cjxDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+PiBtX3Nlc3Npb25zOwpAQCAtMTUwLDggKzE1
MCw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uCi0gICAg
dm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikg
ZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7Cisg
ICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5z
ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
LCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRh
dGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFs
OwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxi
YWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwg
TGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLm1tCmluZGV4IGU5ZjJhYTMzNWRiOWFjNTgzOTUxNWQ2MjVhMGRmMmZmNDA3
M2U5NTMuLmJhNTA2MWViYjVjNWZiZTA3NGQzYTI5ZGVhNGY5MThmYzI2MjFjZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0yMTcsNyArMjE3LDcgQEAgQUxMT1dfTkVXX0FQSV9XSVRI
T1VUX0dVQVJEU19FTkQKICAgICByZXR1cm4gQXRvbVN0cmluZyhuc0luaXRUeXBlKTsKIH0KIAot
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGluaXRpYWxpemF0aW9uRGF0YUZvclJlcXVlc3QoQVZD
b250ZW50S2V5UmVxdWVzdCogcmVxdWVzdCkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gaW5pdGlhbGl6YXRpb25EYXRhRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KiBy
ZXF1ZXN0KQogewogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CkBAIC0yNjUsNyArMjY1LDcgQEAgQVZDb250ZW50S2V5U2Vzc2lvbiogQ0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmNvbnRlbnRLZXlTZXNzaW9uKCkKICAg
ICByZXR1cm4gbV9zZXNzaW9uLmdldCgpOwogfQogCi1SZXRhaW5QdHI8QVZDb250ZW50S2V5UmVx
dWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4cGVjdGVk
S2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVx
dWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4cGVjdGVk
S2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIGZvciAoYXV0
byByZXF1ZXN0SXRlciA9IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzLmJlZ2luKCk7IHJlcXVlc3RJ
dGVyICE9IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzLmVuZCgpOyArK3JlcXVlc3RJdGVyKSB7CiAg
ICAgICAgIGF1dG8mIHJlcXVlc3QgPSAqcmVxdWVzdEl0ZXI7CkBAIC0zMTYsNyArMzE2LDcgQEAg
cHJpdmF0ZToKICAgICBSZXNwb25zZU1hcCBtX3Jlc3BvbnNlczsKIH07CiAKLXN0YXRpYyBSZWZQ
dHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEZhaWwgb24gbGFyZ2UgYnVmZmVy
cyB3aG9zZSBzaXplIGRvZXNuJ3QgZml0IGludG8gYSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlci4K
ICAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci5zaXplKCk7CkBAIC0zMjQsNyArMzI0LDcgQEAgc3Rh
dGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1
ZmZlciBjb250ZW50cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkp
LgotICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHNpemUpIH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIHJldHVybiBKU09OOjpW
YWx1ZTo6cGFyc2VKU09OKGpzb24pOwogfQpAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlv
bihjb25zdCBDRE1LCiAgICAgY2FsbGJhY2soaW5pdGlhbGl6ZSgpKTsKIH0KIAotdm9pZCBDRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2Fs
bGJhY2spCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBzZXJ2ZXJDZXJ0aWZp
Y2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgREVCVUdfTE9HX0lGX1BP
U1NJQkxFKExPR0lERU5USUZJRVIpOwogICAgIG1fc2VydmVyQ2VydGlmaWNhdGUgPSBXVEZNb3Zl
KHNlcnZlckNlcnRpZmljYXRlKTsKQEAgLTU4NSw4ICs1ODUsOCBAQCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byBzZXNzaW9uS2V5
cyA9IHNlc3Npb25JbnRlcmZhY2UtPmtleUlEcygpOwotICAgICAgICBpZiAoYW55T2Yoc2Vzc2lv
bktleXMsIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgc2Vzc2lvbktleSkgewotICAgICAg
ICAgICAgcmV0dXJuIGtleUlEcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZm
ZXI+JiBrZXlJRCkgeworICAgICAgICBpZiAoYW55T2Yoc2Vzc2lvbktleXMsIFsmXShjb25zdCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHNlc3Npb25LZXkpIHsKKyAgICAgICAgICAgIHJl
dHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mIGtleUlEKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGtleUlELmdldCgpID09IHNl
c3Npb25LZXkuZ2V0KCk7CiAgICAgICAgICAgICB9KSAhPSBub3RGb3VuZDsKICAgICAgICAgfSkp
CkBAIC02NzMsNyArNjczLDcgQEAgS2V5cyBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmtleUlEcygpCiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExp
Y2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQor
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIWlzTGljZW5zZVR5cGVTdXBwb3J0ZWQobGlj
ZW5zZVR5cGUpKSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVS
LCAiIGZhbHNlLCBsaWNlbnNlVHlwZSBcIiIsIGxpY2Vuc2VUeXBlLCAiXCIgbm90IHN1cHBvcnRl
ZCIpOwpAQCAtNzA5LDEyICs3MDksMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBpbml0aWFsaXphdGlvbkRhdGE7CiAKICAgICBpZiAoaW5pdERhdGFU
eXBlID09IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2luZk5hbWUoKSkKLSAgICAgICAg
aW5pdGlhbGl6YXRpb25EYXRhID0gaW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBp
bml0aWFsaXphdGlvbkRhdGEgPSBpbml0RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCk7CiAgICAgZWxzZSBpZiAoaW5pdERhdGFUeXBlID09IENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6c2tkTmFtZSgpKQotICAgICAgICBpZGVudGlmaWVyID0gYWRvcHROUyhbW05TU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aERhdGE6aW5pdERhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisgICAgICAgIGlkZW50aWZpZXIgPSBhZG9w
dE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTppbml0RGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmdd
KTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgZWxzZSBp
ZiAoaW5pdERhdGFUeXBlID09IEluaXREYXRhUmVnaXN0cnk6OmNlbmNOYW1lKCkpIHsKLSAgICAg
ICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoaW5pdERhdGEtPmRhdGEo
KSwgaW5pdERhdGEtPnNpemUoKSk7CisgICAgICAgIGF1dG8gcHNzaFN0cmluZyA9IGJhc2U2NEVu
Y29kZVRvU3RyaW5nKGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGluaXREYXRh
LT5zaXplKCkpOwogICAgICAgICBpbml0aWFsaXphdGlvbkRhdGEgPSBbTlNKU09OU2VyaWFsaXph
dGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6QHsgQCJwc3NoIjogKE5TU3RyaW5nKilwc3NoU3RyaW5n
IH0gb3B0aW9uczpOU0pTT05Xcml0aW5nUHJldHR5UHJpbnRlZCBlcnJvcjpuaWxdOwogICAgIH0K
ICNlbmRpZgpAQCAtNzM2LDcgKzczNiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlCiAgICAg
fQogfQogCi1zdGF0aWMgYm9vbCBpc0VxdWFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29u
c3QgU3RyaW5nJiB2YWx1ZSkKK3N0YXRpYyBib29sIGlzRXF1YWwoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBhdXRvIGFycmF5
QnVmZmVyID0gZGF0YS50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGlmICghYXJyYXlCdWZm
ZXIpCkBAIC03NTQsNyArNzU0LDcgQEAgc3RhdGljIGJvb2wgaXNFcXVhbChjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgcmV0dXJuIHN0cmluZ09yRXhj
ZXB0aW9uLnJldHVyblZhbHVlKCkgPT0gdmFsdWU7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYs
IExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlw
ZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBMaWNlbnNlVXBk
YXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZXhwaXJlZFNlc3Npb25zLmlz
RW1wdHkoKSAmJiBpc0VxdWFsKHJlc3BvbnNlRGF0YSwgImFja25vd2xlZGdlZCJfcykpIHsKICAg
ICAgICAgYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgp
OwpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIGF1
dG8gZXhwaXJlZFNlc3Npb25zID0gY3JlYXRlTlNBcnJheShtX2V4cGlyZWRTZXNzaW9ucywgW10g
KGF1dG8mIGRhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldCgpOwogICAgICAgICB9
KTsKLSAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0
YSgpOworICAgICAgICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtQQUw6OmdldEFWQ29udGVudEtleVNl
c3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6ZXhwaXJlZFNl
c3Npb25zLmdldCgpIHdpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZpZXIuZ2V0KCkgc3RvcmFn
ZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdOwogICAgICAgICBjYWxsYmFjayhmYWxzZSwgeyB9
LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtODU2LDcgKzg1Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgICAg
ICBhdXRvIGtleUlEID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqa2V5SURWZWN0b3Ip
KTsKICAgICAgICAgICAgIGF1dG8gZm91bmRJbmRleCA9IG1fY3VycmVudFJlcXVlc3QudmFsdWUo
KS5yZXF1ZXN0cy5maW5kTWF0Y2hpbmcoWyZdIChhdXRvJiByZXF1ZXN0KSB7CiAgICAgICAgICAg
ICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwotICAg
ICAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8U2hh
cmVkQnVmZmVyPiYgaWQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRNYXRj
aGluZyhbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBpZCkgewogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gaWQuZ2V0KCkgPT0ga2V5SUQuZ2V0KCk7CiAgICAgICAgICAg
ICAgICAgfSkgIT0gbm90Rm91bmQ7CiAgICAgICAgICAgICB9KTsKQEAgLTg4OCw3ICs4ODgsNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRl
TGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICAgICAgICAgIGlmICghcGF5bG9hZFZl
Y3RvcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAg
IGF1dG8gcGF5bG9hZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwYXlsb2Fk
VmVjdG9yKSk7Ci0gICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNw
b25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3Bv
bnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKV1dOworICAgICAgICAgICAgICAgIFtyZXF1ZXN0IHByb2Nlc3NDb250
ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRl
bnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpwYXlsb2Fk
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9OwpAQCAtOTAxLDcgKzkw
MSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAgICAgICAgIH0KICAgICB9IGVsc2Ugewog
ICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIidzaW5mJyBpbml0
RGF0YSwgcHJvY2Vzc2luZyByZXNwb25zZSIpOwotICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52
YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpn
ZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQ
bGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJlc3BvbnNlRGF0YS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldXTsKKyAgICAgICAgW21fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cy5maXJz
dCgpIHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W1BBTDo6Z2V0QVZDb250ZW50S2V5UmVzcG9u
c2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3Bv
bnNlRGF0YTpyZXNwb25zZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXV07CiAgICAgfQogCiAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTIyNzcpOiBz
dGFzaCB0aGUgY2FsbGJhY2sgYW5kIGNhbGwgaXQgb25jZSBBVkNvbnRlbnRLZXlSZXNwb25zZSBz
dXBwb3J0cyBhIHN1Y2Nlc3MgY2FsbGJhY2suCkBAIC05MzQsNyArOTM0LDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vu
c2VUeXBlIGxpY2Vuc2UKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXIgPSBjZXJ0aWZp
Y2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIEtleVN0YXR1
c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9u
RGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhwaXJl
ZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9y
YWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKICAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBOU1N0cmluZyAqUGxheWJhY2tTZXNzaW9uSWRLZXkgPSBAIlBsYXliYWNrU2Vzc2lvbklEIjsK
QEAgLTk5OSw3ICs5OTksNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJgogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRp
ZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5T
RGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKTsKICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBleHBpcmVkU2Vz
c2lvbnNBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAg
ICAgICBLZXlTdGF0dXNWZWN0b3IgY2hhbmdlZEtleXM7CiAgICAgICAgIGZvciAoTlNEYXRhKiBl
eHBpcmVkU2Vzc2lvbkRhdGEgaW4gW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkg
cGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dpdGhBcHBJZGVudGlmaWVyOmFwcElkZW50aWZp
ZXIuZ2V0KCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkxdKSB7CkBAIC0xMDg2LDcg
KzEwODYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UgogCiAgICAgUmV0YWluUHRyPE5TRGF0
YT4gYXBwSWRlbnRpZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNl
LT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNh
dGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCiAgICAgYXV0byBrZXlJRHMgPSBr
ZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QpOwogICAgIGlmIChrZXlJRHMuaXNFbXB0eSgpKSB7CkBA
IC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UgogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBr
ZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29u
dGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250
ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRp
Zmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxl
cjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKE5TRGF0YSAqY29udGVudEtl
eVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9
IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250
ZW50S2V5UmVxdWVzdERhdGEpXSB7CkBAIC0xMTUzLDkgKzExNTMsOSBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZl
Y3RvcjxSZXRhaQogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAgICBp
ZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQot
ICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogCi0gICAgdXNpbmcgUmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKKyAgICB1c2luZyBSZXF1
ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZp
bmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewog
ICAgICAgICB1c2luZyBDYWxsYmFja0Z1bmN0aW9uID0gRnVuY3Rpb248dm9pZChSZXF1ZXN0c0Rh
dGEmJik+OwogICAgICAgICBzdGF0aWMgUmVmUHRyPENhbGxiYWNrQWdncmVnYXRvcj4gY3JlYXRl
KENhbGxiYWNrRnVuY3Rpb24mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTExOTYsNyArMTE5Niw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQ
cm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgICAgICAgICBhdXRvIGVudHJ5ID0gSlNP
Tjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGF1dG8mIGtleUlEID0gcmVxdWVzdERh
dGEuZmlyc3Q7CiAgICAgICAgICAgICBhdXRvJiBwYXlsb2FkID0gcmVxdWVzdERhdGEuc2Vjb25k
OwotICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygia2V5SUQiLCBiYXNlNjRFbmNvZGVUb1N0
cmluZyhrZXlJRC0+ZGF0YSgpLCBrZXlJRC0+c2l6ZSgpKSk7CisgICAgICAgICAgICBlbnRyeS0+
c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGtleUlELT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKICAgICAgICAgICAgIGVudHJ5LT5zZXRT
dHJpbmcoInBheWxvYWQiLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhwYXlsb2FkLmdldCgpLmJ5dGVz
LCBwYXlsb2FkLmdldCgpLmxlbmd0aCkpOwogICAgICAgICAgICAgcmVxdWVzdEpTT04tPnB1c2hP
YmplY3QoV1RGTW92ZShlbnRyeSkpOwogICAgICAgICB9CkBAIC0xMjExLDggKzEyMTEsOCBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlk
ZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgIEB0cnkgewogICAgICAgICBmb3IgKGF1dG8gcmVx
dWVzdCA6IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cykgewogICAgICAgICAgICAg
YXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwotICAgICAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsK
LSAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+Y3JlYXRlTlNEYXRh
KCk7CisgICAgICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBX
VEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKKyAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZp
ZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgICAg
ICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElk
ZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkg
b3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFn
Z3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3Ip
IG11dGFibGUgewogICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAgICAgICAg
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZChba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVn
YXRvciA9IFdURk1vdmUoYWdncmVnYXRvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFp
blB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSAoKSBtdXRhYmxlIHsKQEAgLTEyNDksMTAgKzEy
NDksMTAgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QoQVZDb24KIAogICAgIFJldGFpblB0cjxOU0RhdGE+
IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+
c2VydmVyQ2VydGlmaWNhdGUoKSkKLSAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRl
LT5jcmVhdGVOU0RhdGEoKTsKKyAgICAgICAgYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICBhdXRvIGtleUlEcyA9IGtleUlE
c0ZvclJlcXVlc3QobV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpKTsKIAotICAgIFJldGFpblB0cjxO
U0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgp
OworICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0
KCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIEB0cnkgewogICAgICAg
ICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElk
ZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkg
b3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH1dIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3Ip
IG11dGFibGUgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd2Vha1RoaXMg
PSBXVEZNb3ZlKHdlYWtUaGlzKSwgZXJyb3IgPSByZXRhaW5QdHIoZXJyb3IpLCBjb250ZW50S2V5
UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3REYXRhKV0gewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDAzMzRkNjIzYjJh
NzYwNWM5YmUxMjIxM2I1YWJkYmJhYzJiMDNmMTUuLjYyYjgzZmJmZDU3OTQwNTBlYmM5NDA2Mzcw
NDkwYmEyYjNlYzA4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29yZURlY29tcHJlc3Npb25TZXNz
aW9uOwogCiBjbGFzcyBJbWFnZURlY29kZXJBVkZPYmpDIDogcHVibGljIEltYWdlRGVjb2RlciB7
CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJB
VkZPYmpDPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IGNyZWF0ZShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXJBVkZPYmpDKCk7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzdXBwb3J0c01lZGlhVHlwZShNZWRp
YVR5cGUpOwpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxh
dGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5n
TGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMm
ID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcp
IGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRE
YXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7
CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNB
bGxEYXRhUmVjZWl2ZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyRnJhbWVCdWZm
ZXJDYWNoZShzaXplX3QpIGZpbmFsOwogCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBWZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+IGZyYW1lSW5mb3Mo
KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyQVZGT2JqQyhGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKTsKIAogICAgIEFWQXNzZXRUcmFjayAqZmlyc3RFbmFibGVkVHJhY2soKTsK
ICAgICB2b2lkIHJlYWRTYW1wbGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5tbQppbmRleCAwNjk1MTZhMDgzZDVmNGY1MTI3Mjk3NDUwZTFjOWExMGNj
MTRmNGJmLi4zNWM2Y2U2N2U4NWY4NmFlMTY0YzIxYTcyNjA3ZmMwNjVlY2I1MDU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTI4OSw3ICsy
ODksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRvciBpdGVy
KQogCiAjcHJhZ21hIG1hcmsgLSBJbWFnZURlY29kZXJBVkZPYmpDCiAKLVJlZlB0cjxJbWFnZURl
Y29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBk
YXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQ
dHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKIHsKICAgICAvLyBBVkZvdW5kYXRpb24gbWF5IG5vdCBiZSBhdmFpbGFi
bGUgYXQgcnVudGltZS4KICAgICBpZiAoIUFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24o
KS5pc0F2YWlsYWJsZSgpKQpAQCAtMzAxLDcgKzMwMSw3IEBAIFJlZlB0cjxJbWFnZURlY29kZXJB
VkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBj
b25zCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyQVZGT2JqQyhkYXRhLCBt
aW1lVHlwZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiB9CiAK
LUltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVmZmVyJiBk
YXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCitJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICA6IEltYWdlRGVjb2Rlcigp
CiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV91dGkoV2ViQ29yZTo6VVRJRnJv
bU1JTUVUeXBlKG1pbWVUeXBlKSkKQEAgLTMwOSw3ICszMDksNyBAQCBJbWFnZURlY29kZXJBVkZP
YmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5n
JiBtaW1lVAogICAgICwgbV9sb2FkZXIoYWRvcHROUyhbW1dlYkNvcmVTaGFyZWRCdWZmZXJSZXNv
dXJjZUxvYWRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlzXSkpCiAgICAgLCBt
X2RlY29tcHJlc3Npb25TZXNzaW9uKFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6Y3JlYXRl
UkdCKCkpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBjb21wbGV0ZTpOT107CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTpOT107CiAKICAgICBbbV9h
c3NldC5nZXQoKS5yZXNvdXJjZUxvYWRlciBzZXREZWxlZ2F0ZTptX2xvYWRlci5nZXQoKSBxdWV1
ZTpkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFV
TFQsIDApXTsKICAgICBbbV9hc3NldCBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOkBb
QCJ0cmFja3MiXSBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH1dICgpIG11dGFibGUgewpAQCAtNjQxLDkgKzY0MSw5IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZG
T2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6
ZSkKICAgICBtX2xvYWRlci5nZXQoKS5leHBlY3RlZENvbnRlbnRTaXplID0gZXhwZWN0ZWRDb250
ZW50U2l6ZTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckFWRk9i
akM6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiB7Ci0gICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOworICAgIFttX2xvYWRlciB1cGRhdGVEYXRh
OmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxs
RGF0YVJlY2VpdmVkXTsKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKICAgICAgICAgbV9p
c0FsbERhdGFSZWNlaXZlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggMjAwZTFh
OGY5YWZiYTBmY2JiYTViMGEzZWQ3MDRjZDM0MWI0NTBkNi4uYzlkOWIyYTk2ODViMDFlOTFhYWEw
MGMwZTAwMzA3NzM4NTY5MTQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtNjYsNyArNjYs
NyBAQCBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY7CiBjbGFzcyBNZWRp
YVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7CiBjbGFz
cyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzsKIGNsYXNz
IFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzsKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
cjsKQEAgLTQyNiw3ICs0MjYsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjpvcHRpb25h
bDxXYWxsVGltZT4gbV93YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRUaW1lOwogICAgIG11dGFibGUg
aW50IG1fdGltZUNvbnRyb2xTdGF0dXNBdENhY2hlZEN1cnJlbnRUaW1lIHsgMCB9OwogICAgIG11
dGFibGUgZG91YmxlIG1fcmVxdWVzdGVkUmF0ZUF0Q2FjaGVkQ3VycmVudFRpbWUgeyAwIH07Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gbV9rZXlJRDsKICAgICBkb3VibGUgbV9jYWNoZWRSYXRlIHsgMCB9OwogICAg
IGJvb2wgbV9yZXF1ZXN0ZWRQbGF5aW5nIHsgZmFsc2UgfTsKICAgICBkb3VibGUgbV9yZXF1ZXN0
ZWRSYXRlIHsgMS4wIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBkN2NmOWQ0YmYxZmVk
NjlhNWYzY2FjMzFlYWZlZTdmMzk4YTQ1M2MxLi5kYTFhYzBkNzEwMTU2MWYxYTIxNTYzYjU2NmQ0
NWQ1ZWI2MDQzYmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTI3OTIsNyArMjc5Miw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YXR0ZW1wdFRvRGVj
cnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jCiAgICAgaWYgKCFtX2tleUlEIHx8ICFtX2NkbUlu
c3RhbmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1f
Y2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMoVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pjo6
ZnJvbSgqbV9rZXlJRCkpOworICAgIGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5j
ZS0+c2Vzc2lvbkZvcktleUlEcyhWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6
ZnJvbSgqbV9rZXlJRCkpOwogICAgIGlmICghaW5zdGFuY2VTZXNzaW9uKQogICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDLm1tCmluZGV4IDFhNDNjN2RlZDI3NmUyYzNlNWY2ZjQzYTM4ZjA1MTEyNzIwNmQwYTMu
LmFiZDgxZTVmM2MxZWE1MGU0MjJlMmZhM2MyYmExZDE4Y2ZlMzFhZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtMjEz
LDcgKzIxMyw3IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJz
ZXJBVkZPYmpDKCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShT
ZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyLCBBcHBlbmRGbGFncyBmbGFncykKIHsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IHNl
Z21lbnQudGFrZVNoYXJlZEJ1ZmZlcigpOwotICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVy
LT5jcmVhdGVOU0RhdGEoKTsKKyAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZEJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNSZXNl
dCB8fCBmbGFncyA9PSBBcHBlbmRGbGFnczo6RGlzY29udGludWl0eSkKICAgICAgICAgW21fcGFy
c2VyIGFwcGVuZFN0cmVhbURhdGE6bnNEYXRhLmdldCgpIHdpdGhGbGFnczpBVlN0cmVhbURhdGFQ
YXJzZXJTdHJlYW1EYXRhRGlzY29udGludWl0eV07CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKaW5kZXggMDM0MjBm
MTM4MzY0ZmFjMjA5MWUxMDRkMTM2ZmYzOGExZmI5ZmUyMi4uZWFkMDgzYTZjYzdlNzM2YjQyMTcx
MGZhYzM5MmEwN2RmZjkyYmU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC03Myw3ICs3Myw3IEBAIGNsYXNzIFZpZGVv
VHJhY2tQcml2YXRlOwogY2xhc3MgQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM7
CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzsKIGNsYXNzIFdlYkNv
cmVEZWNvbXByZXNzaW9uU2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJy
b3JDbGllbnQgewogcHVibGljOgpAQCAtMTUzLDcgKzE1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJZChSZWY8TWVkaWFTYW1wbGU+JiYsIHVpbnQ2
NF90IHRyYWNrSWQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKIAogICAgIC8vIFNvdXJjZUJ1
ZmZlclByaXZhdGUgb3ZlcnJpZGVzCi0gICAgdm9pZCBhcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CisgICAgdm9pZCBhcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
IGZpbmFsOwogICAgIHZvaWQgYWJvcnQoKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3Rh
dGUoKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSBmaW5hbDsKQEAg
LTIyMSw3ICsyMjEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQogICAgIFJlZlB0cjxDRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4gbV9jZG1JbnN0YW5jZTsKLSAgICBWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+IG1fa2V5SURzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+IG1fa2V5SURzOwogI2VuZGlmCiAKICAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6
ZT4gbV9jYWNoZWRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCAzYTI4NjdhMWFjMjQzYmI5YzkzYzlkNmI3MGNh
NTZiMDI5NDhmYzljLi4yNGFlMGUxNDA2MDE5MTQzZmFkNGYxNTI5ZTY4ZWQ0OWI0MTY1M2NhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5tbQpAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvCiAgICAg
VU5VU0VEX1BBUkFNKGhhc1Nlc3Npb25TZW1hcGhvcmUpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGRhdGEpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiZGF0YSBsZW5n
dGggPSAiLCBkYXRhLT5zaXplKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGYwZDhlNzExMzJmNmMyODdhMmU2MjlhNGI4
OGE1MzlkZmQ1M2NiZTIuLjBlZmVlYWVmNWIyZDcxYmM2ZDY3MDRkZDFiOTc1YWNiYWUxMTNiYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ci5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM7CiBjbGFzcyBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI7CiBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcj4gewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcik7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVz
cG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBsb2FkRmFp
bGVkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZCgpOwotICAg
IHZvaWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZv
aWQgbmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKIAogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMqIG1fcGFyZW50
OwogICAgIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gbV9hdlJlcXVl
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIubW0KaW5kZXggYTIyYTk5N2IxMTA3OWQ0NjU4NmFhNjQ4NTYxYmJmNzJhNmYyNDdmMC4uZjky
MWYzZGEwZTY5YjMzOTk3N2M5ZTNlNDk2NjdhMjhmNWU5NWNiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtMTU2LDE0ICsx
NTYsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkp
OyB9CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZv
aWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1
bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBs
b2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVy
cm9yKTsgfQogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVkKCk7IH0KIAogICAg
IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgbV9wYXJlbnQ7CiAgICAgUmVmUHRyPFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZT4gbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsKIAogV2Vha1B0cjxQ
bGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI+IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6
Y3JlYXRlKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBQbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKQEAgLTIxMSwx
MyArMjExLDEwIEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNo
ZWQoKQogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQogCi12b2lkIFBsYXRmb3JtUmVz
b3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2Fk
ZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9i
dWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7Ci0gICAgZWxzZQotICAgICAgICBtX2J1ZmZlci0+YXBw
ZW5kKFdURk1vdmUoYnVmZmVyKSk7Ci0gICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVk
QnVmZmVyKCptX2J1ZmZlcik7CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQo
KSk7CiB9CiAKIGNsYXNzIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyIDogcHVibGljIENhbk1h
a2VXZWFrUHRyPERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyPiB7CkBAIC0zODgsNyArMzg1LDcg
QEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3Rv
cExvYWRpbmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFT
dG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFS
ZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYg
KCFkYXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBkYjQ1N2E4
MWQzZWU4MjkxYjkwNWU5YmE3N2MxZTJhZjMwOWUwY2IyLi45NDE5YmNlYTM4ZGJmOGQ2NDkyZjY4
MDFkOWEyMTU2MjM2NmEyYzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0z
MSwxMCArMzEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVh
dGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250UGxhdGZvcm1E
YXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRW
YXJpYW50U2V0dGluZ3M7CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgc3RydWN0IEZvbnRDdXN0b21QbGF0
Zm9ybURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogcHVibGljOgotICAgIEZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoRlRfRmFjZSwgU2hhcmVkQnVmZmVyJik7CisgICAgRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShGVF9GYWNlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgfkZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoKSA9IGRlZmF1bHQ7CiAgICAgRm9udFBsYXRmb3JtRGF0YSBmb250
UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFs
aWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0
c0Zvcm1hdChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBhMzQ0YmJlY2RhOWZmZTY3
ZDRlOGQzZTQ1ZTJkMDRiZWQzZDUwYzA2Li5iNmQzZWIzNjMxMTI0NDYxM2IzODAzZjJmM2QyNGQz
MDg3ZWEyNGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yNDQsMTYgKzI0NCwxNiBAQCBzaXplX3Qgc2hh
cmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2Zm
X3QgcG9zaXRpb24sCiAKIHZvaWQgc2hhcmVkQnVmZmVyUmVsZWFzZSh2b2lkKiBpbmZvKQogewot
ICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVy
Kj4oaW5mbyk7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3Rh
dGljX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAgIHNoYXJlZEJ1ZmZl
ci0+ZGVyZWYoKTsKIH0KICNlbmRpZgogCi1JbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0co
U2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pCitJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBpZiAoZGF0YS5zaXplKCkgPj0g
MzIpCi0gICAgICAgIHV0aUhpbnQgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERh
dGEoZGF0YS5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgICAg
ICB1dGlIaW50ID0gYWRvcHRDRihDR0ltYWdlU291cmNlR2V0VHlwZVdpdGhEYXRhKGRhdGEubWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsK
ICAgICAKICAgICBpZiAodXRpSGludCkgewogICAgICAgICBjb25zdCB2b2lkKiBrZXkgPSBrQ0dJ
bWFnZVNvdXJjZVR5cGVJZGVudGlmaWVySGludDsKQEAgLTU2MiwyMyArNTYyLDI0IEBAIFBsYXRm
b3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyQ0c6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVf
dCBpbmRleCwgU3Vic2FtcGxpCiAgICAgcmV0dXJuIG1hc2tlZEltYWdlID8gbWFza2VkSW1hZ2Ug
OiBpbWFnZTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0YShTaGFyZWRCdWZmZXIm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURlY29kZXJDRzo6c2V0RGF0
YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsK
ICAgICBtX2lzQWxsRGF0YVJlY2VpdmVkID0gYWxsRGF0YVJlY2VpdmVkOwogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBTaGFyZWRCdWZm
ZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVuZGVkIHRvIHdpdGhvdXQgdGhlIFNoYXJlZEJ1ZmZlcidz
IGtub3dsZWRnZS4KLSAgICAvLyBXZSB1c2UgU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFw
IGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJ
bWFnZUlPIGlzCi0gICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIFNoYXJlZEJ1ZmZlci4KLSAg
ICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEuY3Jl
YXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAgLy8gT24gTWFjIHRoZSBO
U0RhdGEgaW5zaWRlIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRseSBh
cHBlbmRlZCB0byB3aXRob3V0IHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdl
LgorICAgIC8vIFdlIHVzZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFw
IGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJ
bWFnZUlPIGlzCisgICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIuCisgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgp
LCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVj
ZWl2ZWQpOwogI2Vsc2UKLSAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRo
ZSBTaGFyZWRCdWZmZXIuCi0gICAgZGF0YS5yZWYoKTsKLSAgICAvLyBXZSB1c2UgdGhlIEdldEJ5
dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25l
IGJlY2F1c2UgU2hhcmVkQnVmZmVyCisgICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8g
d3JhcCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KKyAgICBhdXRvIGNvbnRpZ3VvdXNEYXRh
ID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGNvbnRpZ3VvdXNEYXRhLmdldCgpLnJlZigp
OworICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0
aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
CiAgICAgLy8gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0byBsb2NrIGRvd24gdGhlIGJ5dGUgcG9p
bnRlciBhbmQgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgbW92ZSwgd2hpY2gKICAgICAvLyBpcyBh
IHJlcXVpcmVtZW50IGZvciB1c2luZyB0aGUgR2V0Qnl0ZVBvaW50ZXIgY2FsbGJhY2suCiAgICAg
Q0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFja3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7IDAsIDAs
IDAsIHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbiwgc2hhcmVkQnVmZmVyUmVsZWFzZSB9
OwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRD
RihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdCgmZGF0YSwgZGF0YS5zaXplKCksICZwcm92aWRl
ckNhbGxiYWNrcykpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3Zp
ZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZURpcmVjdChjb250aWd1b3VzRGF0YS5w
dHIoKSwgZGF0YS5zaXplKCksICZwcm92aWRlckNhbGxiYWNrcykpOwogICAgIENHSW1hZ2VTb3Vy
Y2VVcGRhdGVEYXRhUHJvdmlkZXIobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhUHJvdmlkZXIu
Z2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCmluZGV4IDk3NDA3MzZh
MjFhYzk5OGFiMDVmMWM5YjRmNWIxNjc1ZTQ0ZDJjOTEuLmEwYWMxYzJmYmVlNTI3ZTVhYjExMTQ1
NTgxMmJkYjczNjNhMDU1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApAQCAtMzIsOSArMzIsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBJbWFnZURlY29kZXJDRyBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29k
ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEltYWdlRGVj
b2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKTsKKyAgICBJbWFnZURlY29kZXJDRyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCi0gICAgc3Rh
dGljIFJlZjxJbWFnZURlY29kZXJDRz4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFP
cHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKQorICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyQ0c+IGNyZWF0ZShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJDRyhkYXRhLCBhbHBo
YU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CkBAIC02NCw3ICs2
NCw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNB
bGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVk
OyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmNwcAppbmRleCAzMWMyN2MwNjliMmIzYzcwMzczMmViNzEzYjI2MzEyODQyMTI0
ZTZlLi5mZjc3YjUzZTlkNjlmYzQ3MDQ1MTI0NzAyZjFhMzRmMGYyZDg3Y2U2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJv
eURlY29kZWREYXRhKGJvb2wpCiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9j
dW1lbnQoKQogewotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVy
ID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVD
RkRhdGEoKS5nZXQoKSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVBy
b3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5t
YWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwogICAgIG1fZG9jdW1lbnQg
PSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdl
dCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCmluZGV4IGY3NDdkODBmYjYxZDMw
ZmM1MDIyZTY4MmQ2MzU2MTMzZDNjYTY5N2EuLmM4YTgwNjEyMjA1M2Y2NDhhZGRiMDJhYzM4OWNl
NzE0MzY4ZGJiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcApAQCAtODAsNyArODAsNyBA
QCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0TWluaW11bUF1ZGlvU2FtcGxlRHVyYXRpb24o
ZmxvYXQpCiB7CiB9CiAKLVNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudChSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK1NvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2Vn
bWVudChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX3NlZ21l
bnQoV1RGTW92ZShidWZmZXIpKQogewogfQpAQCAtMTAxLDcgKzEwMSw3IEBAIHNpemVfdCBTb3Vy
Y2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJu
IGNsYW1wVG88c2l6ZV90PihNVFBsdWdpbkJ5dGVTb3VyY2VHZXRMZW5ndGgoYnl0ZVNvdXJjZS5n
ZXQoKSkpOwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IFJlZjxTaGFyZWRC
dWZmZXI+JiBidWZmZXIpCisgICAgICAgIFtdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYnVmZmVyLT5zaXpl
KCk7CiAgICAgICAgIH0KQEAgLTEyNSw3ICsxMjUsNyBAQCBhdXRvIFNvdXJjZUJ1ZmZlclBhcnNl
cjo6U2VnbWVudDo6cmVhZChzaXplX3QgcG9zaXRpb24sIHNpemVfdCBzaXplVG9SZWFkLCB1aW50
OAogICAgICAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVhZEVycm9yPiB7IFJlYWRFcnJvcjo6
RmF0YWxFcnJvciB9OwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAgIFsmXShjb25zdCBSZWY8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZWFkUmVzdWx0CisgICAgICAgIFsmXShjb25zdCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVhZFJlc3VsdAogICAgICAg
ICB7CiAgICAgICAgICAgICBidWZmZXItPmNvcHlUbyhkZXN0aW5hdGlvbiwgcG9zaXRpb24sIHNp
emVUb1JlYWQpOwogICAgICAgICAgICAgcmV0dXJuIHNpemVUb1JlYWQ7CkBAIC0xMzMsNyArMTMz
LDcgQEAgYXV0byBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnJlYWQoc2l6ZV90IHBvc2l0
aW9uLCBzaXplX3Qgc2l6ZVRvUmVhZCwgdWludDgKICAgICApOwogfQogCi1SZWY8U2hhcmVkQnVm
ZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VTaGFyZWRCdWZmZXIoKQorUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFr
ZVNoYXJlZEJ1ZmZlcigpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9zZWdtZW50LAog
I2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCkBAIC0xNDIsMjggKzE0MiwyOCBAQCBS
ZWY8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VTaGFyZWRC
dWZmZXIoKQogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcihzaXplKCkpOwogICAg
ICAgICAgICAgYXV0byByZWFkUmVzdWx0ID0gcmVhZCgwLCB2ZWN0b3Iuc2l6ZSgpLCB2ZWN0b3Iu
ZGF0YSgpKTsKICAgICAgICAgICAgIGlmICghcmVhZFJlc3VsdC5oYXNfdmFsdWUoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICB2
ZWN0b3Iuc2hyaW5rKHJlYWRSZXN1bHQudmFsdWUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKTsKKyAgICAgICAgICAgIHJldHVybiBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKTsKICAgICAgICAg
fSwKICNlbmRpZgotICAgICAgICBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAgICAg
ICAgWyZdKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShidWZmZXIsIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCkpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UoYnVmZmVyLCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7CiAgICAgICAgIH0KICAgICApOwogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OmdldFNoYXJlZEJ1
ZmZlcigpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gU291cmNlQnVmZmVy
UGFyc2VyOjpTZWdtZW50OjpnZXRTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKG1fc2VnbWVudCwKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVS
KQotICAgICAgICBbJl0oY29uc3QgUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mKSAt
PiBSZWZQdHI8U2hhcmVkQnVmZmVyPgorICAgICAgICBbJl0oY29uc3QgUmV0YWluUHRyPE1UUGx1
Z2luQnl0ZVNvdXJjZVJlZj4mKSAtPiBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4KICAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0sCiAjZW5kaWYK
LSAgICAgICAgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlZlB0cjxT
aGFyZWRCdWZmZXI+CisgICAgICAgIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikgLT4gUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+CiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiBidWZmZXIucHRyKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyLmgKaW5kZXggNTIwYjUyMDdmYzI3MWQ3OTgxNTMzZmIxNGQyMzE1NTk0YTg4ODM2NS4u
NzI5N2E3OTE0YTc5YWRmNjQyZGM2YjE2YjM2ZTYwZjljZDAyOWYwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
b250ZW50VHlwZTsKIGNsYXNzIE1lZGlhU2FtcGxlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU291cmNl
QnVmZmVyUGFyc2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNvdXJjZUJ1ZmZlclBh
cnNlcj4gewogcHVibGljOgpAQCAtNjksMTEgKzY5LDExIEBAIHB1YmxpYzoKICNpZiBIQVZFKE1U
X1BMVUdJTl9GT1JNQVRfUkVBREVSKQogICAgICAgICBTZWdtZW50KFJldGFpblB0cjxNVFBsdWdp
bkJ5dGVTb3VyY2VSZWY+JiYpOwogI2VuZGlmCi0gICAgICAgIFNlZ21lbnQoUmVmPFNoYXJlZEJ1
ZmZlcj4mJik7CisgICAgICAgIFNlZ21lbnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
OwogICAgICAgICBTZWdtZW50KFNlZ21lbnQmJikgPSBkZWZhdWx0OwotICAgICAgICBSZWY8U2hh
cmVkQnVmZmVyPiB0YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAgICAgIC8vIFdpbGwgcmV0dXJuIG51
bGxwdHIgaWYgU2VnbWVudCdzIGJhY2tlbmQgaXNuJ3QgYSBTaGFyZWRCdWZmZXIuCi0gICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZVNoYXJlZEJ1ZmZlcigpOworICAgICAgICAv
LyBXaWxsIHJldHVybiBudWxscHRyIGlmIFNlZ21lbnQncyBiYWNrZW5kIGlzbid0IGEgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgICAgIHNpemVfdCBzaXplKCkgY29uc3Q7
CiAKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9S
RUFERVIpCiAgICAgICAgICAgICBSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiwKICNl
bmRpZgotICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4KKyAgICAgICAgICAgIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPgogICAgICAgICA+IG1fc2VnbWVudDsKICAgICB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDM1OWVkYjQxNWZkMzc1ZWQ4MmI3YjRh
NDlmMTFlNGM4ZmQ2YzdkNmIuLjliYzE4OTQxOTg2MzBiYWQ4ZDdjYmQwYjNhNWIyOGU0NmU5ZWZl
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0zNjcsNyArMzY3LDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgRnJlZURhdGFTZWdtZW50KHZvaWQqIHJlZmNv
biwgdm9pZCosIHNpemVfdCkKICAgICB7Ci0gICAgICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KHJlZmNvbik7CisgICAgICAgIGF1
dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGF0YVNlZ21lbnQqPihyZWZjb24pOwogICAg
ICAgICBidWZmZXItPmRlcmVmKCk7CiAgICAgfQogCkBAIC0zODgsNyArMzg4LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgIGFkdmFuY2VUb05leHRTZWdtZW50KCk7CiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzaGFyZWRCdWZmZXIgPSBjdXJyZW50U2VnbWVudC5nZXRTaGFyZWRCdWZmZXIoKTsKKyAg
ICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBj
dXJyZW50U2VnbWVudC5nZXRTaGFyZWRCdWZmZXIoKTsKICAgICAgICAgICAgIENNQmxvY2tCdWZm
ZXJSZWYgcmF3QmxvY2tCdWZmZXIgPSBudWxscHRyOwogICAgICAgICAgICAgdWludDY0X3QgbGFz
dFJlYWQgPSAwOwogICAgICAgICAgICAgc2l6ZV90IGRlc3RpbmF0aW9uT2Zmc2V0ID0gbV9wb3Np
dGlvbldpdGhpblNlZ21lbnQ7CkBAIC00MDksNyArNDA5LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgIGRlc3RpbmF0aW9uT2Zmc2V0ID0gMDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKHNoYXJlZEJ1ZmZlci0+aGFzT25lU2VnbWVudCgpLCAiQ2FuIG9u
bHkgZGVhbCB3aXRoIHNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGEgc2luZ2xlIERhdGFTZWdtZW50
Iik7Ci0gICAgICAgICAgICAgICAgLy8gQSBTaGFyZWRCdWZmZXIgZG9lc24ndCBoYXZlIHRocmVh
ZC1zYWZlIHJlZmNvdW50aW5nLCBhcyBzdWNoIHdlIG11c3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0
aGUgRGF0YVNlZ21lbnQgaW5zdGVhZC4KKyAgICAgICAgICAgICAgICAvLyBBIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIgZG9lc24ndCBoYXZlIHRocmVhZC1zYWZlIHJlZmNvdW50aW5nLCBhcyBzdWNo
IHdlIG11c3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgRGF0YVNlZ21lbnQgaW5zdGVhZC4KICAg
ICAgICAgICAgICAgICAvLyBUT0RPOiBjb3VsZCB3ZSBvbmx5IGNyZWF0ZSBhIG5ldyBDTUJsb2Nr
QnVmZmVyIGlmIHRoZSBiYWNrZW5kIG1lbW9yeSBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBv
bmU/CiAgICAgICAgICAgICAgICAgYXV0byBmaXJzdFNlZ21lbnQgPSBzaGFyZWRCdWZmZXItPmJl
Z2luKCktPnNlZ21lbnQ7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGNhblJlYWQgPSBzdGQ6Om1p
bjxzaXplX3Q+KG51bVRvUmVhZCwgZmlyc3RTZWdtZW50LT5zaXplKCkgLSBtX3Bvc2l0aW9uV2l0
aGluU2VnbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3Bw
CmluZGV4IDQwMjVlMDY5MmRjNWExNWU5NzM2OTU4MDMzM2Y2ZmEzYjliZmJkNGIuLmJhNjA1ZGNi
MzFkNTI5NDdhYzJhNzE0NmMxZGU4NDBjZDRhNDg3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCkBAIC03MzcsNyArNzM3LDcgQEAgRGlkQ2hhbmdlSXRl
bUJ1ZmZlciBJdGVtQnVmZmVyOjpzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChzaXplX3QgbnVt
YmVyT2ZCeXRlcykKIHZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0SXRl
bSYgdGVtcG9yYXJ5SXRlbSkKIHsKICAgICBhdXRvIHJlcXVpcmVkU2l6ZUZvckl0ZW0gPSBtX3dy
aXRpbmdDbGllbnQtPnJlcXVpcmVkU2l6ZUZvckl0ZW0odGVtcG9yYXJ5SXRlbSk7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gb3V0T2ZMaW5lSXRlbTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gb3V0T2ZMaW5lSXRlbTsKICAgICBpZiAoIXJlcXVpcmVkU2l6ZUZvckl0ZW0p
IHsKICAgICAgICAgb3V0T2ZMaW5lSXRlbSA9IG1fd3JpdGluZ0NsaWVudC0+ZW5jb2RlSXRlbU91
dE9mTGluZSh0ZW1wb3JhcnlJdGVtKTsKICAgICAgICAgaWYgKCFvdXRPZkxpbmVJdGVtKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCmluZGV4IGM4NzMxOTgyZWY4Mzkz
MWJiYWUzMWI3ODY1MGFjMGRhMjBhMDVmYzUuLmIzMWJjNWZkNGU5MjE0YjE1YTM3NjFmYmU5OGQ2
MGNlYjQ3YTk4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgK
QEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0
T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0CisgICAgdmlydHVhbCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5
TGlzdEl0ZW0mKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpA
QCAtMTY4LDcgKzE2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB3aXRoIHBhZGRpbmcgYmV0d2VlbiBl
YWNoIGl0ZW0gdG8gZW5zdXJlIHRoYXQgYWxsIGl0ZW1zIGFyZSBhbGlnbmVkIHRvIDggYnl0ZXMu
CiAgICAgLy8KICAgICAvLyBJZiBhIHdyaXRpbmcgY2xpZW50IGlzIHByZXNlbnQgYW5kIHJlcXVp
cmVzIGN1c3RvbSBlbmNvZGluZyBmb3IgdGhlIGdpdmVuIGl0ZW0gdHlwZSBULCB0aGUKLSAgICAv
LyBpdGVtIGJ1ZmZlciB3aWxsIGFzayB0aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgU2hhcmVkQnVm
ZmVyIGNvbnRhaW5pbmcgZW5jb2RlZCBkYXRhIGZvciB0aGUKKyAgICAvLyBpdGVtIGJ1ZmZlciB3
aWxsIGFzayB0aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBj
b250YWluaW5nIGVuY29kZWQgZGF0YSBmb3IgdGhlCiAgICAgLy8gaXRlbS4gVGhpcyBlbmNvZGVk
IGRhdGEgaXMgdGhlbiBhcHBlbmRlZCB0byB0aGUgaXRlbSBidWZmZXIsIHdpdGggcGFkZGluZyB0
byBlbnN1cmUgdGhhdAogICAgIC8vIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoaXMgZGF0YSBhcmUg
YWxpZ25lZCB0byA4IGJ5dGVzLCBpZiBuZWNlc3NhcnkuIFdoZW4gY29uc3VtaW5nIGVuY29kZWQK
ICAgICAvLyBpdGVtIGRhdGEsIGEgY29ycmVzcG9uZGluZyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVu
dCB3aWxsIGJlIHJlcXVpcmVkIHRvIGNvbnZlcnQgdGhpcyBlbmNvZGVkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCA1MDZiNGRkNjJk
NTVhNTZhMjc4YzMwY2NhYjJkMTkxMTBmMjQxZWVjLi4yYjQ0M2ZiYmVkMmMxZmRlNDhiY2RlOWNi
ZTQwOTUzNDk3ZmRlOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0YXRpYyB2b2lkIHJlbGVhc2VDdXN0b21Gb250RGF0YSh2b2lkKiBkYXRhKQogewotICAg
IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOworICAgIHN0YXRpY19j
YXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKIH0KIAogc3RhdGlj
IGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBmcmVlVHlwZUZhY2VLZXk7CiAKLUZvbnRDdXN0b21QbGF0
Zm9ybURhdGE6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSBmcmVlVHlwZUZhY2UsIFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YShGVF9GYWNlIGZyZWVUeXBlRmFjZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogICAgIDogbV9mb250RmFjZShhZG9wdFJlZihjYWlyb19mdF9mb250X2ZhY2VfY3Jl
YXRlX2Zvcl9mdF9mYWNlKGZyZWVUeXBlRmFjZSwgRlRfTE9BRF9ERUZBVUxUKSkpCiB7CiAgICAg
YnVmZmVyLnJlZigpOyAvLyBUaGlzIGlzIGJhbGFuY2VkIGJ5IHRoZSBidWZmZXItPmRlcmVmKCkg
aW4gcmVsZWFzZUN1c3RvbUZvbnREYXRhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcAppbmRleCA5YWQxOWI4NzZiMjdlNjBkNGZiYTUwMzBlNjVmODFlN2NhOGE1MDY5Li5k
ZmJjNTgwZmI4ZTliMzA5MzZjY2EwOGJiODhiNDljMmJiNjUzYWM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtODEsMTIgKzgxLDEyIEBAIEltYWdlRGVjb2Rl
ckdTdHJlYW1lclNhbXBsZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRlcikKICAgICByZXR1cm4gKElt
YWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZSopaXRlci0+c2Vjb25kLmdldCgpOwogfQogCi1SZWZQ
dHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZShT
aGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IEltYWdlRGVjb2RlckdTdHJl
YW1lcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBJbWFnZURlY29kZXJHU3RyZWFtZXIoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBn
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogfQogCi1JbWFnZURlY29kZXJHU3RyZWFtZXI6
OkltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdl
RGVjb2RlckdTdHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICA6IG1fbWltZVR5cGUobWltZVR5cGUpCiB7CiAgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwpAQCAtMTk5LDcgKzE5OSw3IEBAIFBsYXRm
b3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCkKK3ZvaWQg
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEsIGJvb2wpCiB7CiAgICAgcHVzaEVuY29kZWREYXRhKGRhdGEpOwogfQpAQCAtNDI2LDEwICs0
MjYsMTEgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRl
Y29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKICAgICByZXR1cm4gRW5jb2RlZERhdGFT
dGF0dXM6OlVua25vd247CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5j
b2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIEltYWdlRGVjb2RlckdT
dHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3Vv
dXMoKTsKICAgICBtX2VvcyA9IGZhbHNlOwotICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVh
dGUoIkltYWdlRGVjb2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gYnVmZmVyLmRhdGEoKSwg
c2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKKyAgICBhdXRvIHRocmVhZCA9IFRocmVhZDo6Y3JlYXRl
KCJJbWFnZURlY29kZXJHU3RyZWFtZXIiLCBbdGhpcywgZGF0YSA9IGNvbnRpZ3VvdXNCdWZmZXIt
PmRhdGEoKSwgc2l6ZSA9IGJ1ZmZlci5zaXplKCldIHsKICAgICAgICAgbV9pbm5lckRlY29kZXIg
PSBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6Y3JlYXRlKCp0aGlzLCBkYXRh
LCBzaXplKTsKICAgICAgICAgbV9pbm5lckRlY29kZXItPnJ1bigpOwogICAgIH0sIFRocmVhZFR5
cGU6OkdyYXBoaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAppbmRleCA2
NmYzMzcyODQ2YTRkZjg3NGY0MjBkYjY1NGU2ODljOWU0M2IwYzUyLi5kM2VmNmE0NWNkN2RiZGZj
MzEyMGVhMjNmOGRlYjNjNTk5NzFhZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5oCkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIEltYWdlRGVjb2RlckdTdHJlYW1lciBmaW5h
bCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2RlckdTdHJlYW1lcik7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IGNyZWF0ZShTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pOwotICAgIEltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBjcmVh
dGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBB
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfklt
YWdlRGVjb2RlckdTdHJlYW1lcigpID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBib29sIHN1cHBv
cnRzTWVkaWFUeXBlKE1lZGlhVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID09IE1lZGlhVHlwZTo6
VmlkZW87IH0KQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtSW1hZ2VQdHIg
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2Ft
cGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0
aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4
cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNldERhdGEo
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0
RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFs
OwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Vv
czsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAg
LTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICB2b2lkIGhhbmRsZVNhbXBs
ZShHUmVmUHRyPEdzdFNhbXBsZT4mJik7Ci0gICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxl
KiBzYW1wbGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggY2JiNDlkMTczNjJmNzEyZDI1ZGZlODI0
ZGZjMWMzODFhNWRhMDI5My4uM2EyMDE1NzgwMTQ4ODEwYWNlNTRkZjdiMDhlNGRmN2ZkNTIzN2Q2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
QEAgLTM2NjksNyArMzY2OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpp
bml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChJbml0RGF0YSYmIGluaXRECiAKICAgICAgICAg
R1NUX0RFQlVHKCJzY2hlZHVsaW5nIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkICVzIGV2
ZW50IG9mIHNpemUgJXp1IiwgaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUoKS51dGY4KCku
ZGF0YSgpLAogICAgICAgICAgICAgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwotICAgICAg
ICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGluaXREYXRhLnBheWxvYWQoKS0+ZGF0YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXpl
KCkpOworICAgICAgICBHU1RfTUVNRFVNUCgiaW5pdCBkYXRhcyIsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGluaXREYXRhLnBheWxvYWQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpKSwgaW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCkpOwogICAgICAgICB3ZWFrVGhpcy0+bV9w
bGF5ZXItPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhLnBheWxvYWRDb250
YWluZXJUeXBlKCksIGluaXREYXRhLnBheWxvYWQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7
CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDVkODZmYjFhZjQ4N2MwMjg5ZTAwMTI1NTk2NWMzMWRjZGE5NzM0MjYuLjkzMDE5MDk5
NDViNGEyM2Q2Njc4MmYzNTBiNTZlNDQ3OWY4MDI2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAg
ICAvLyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRob2RzLgogICAgIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNo
ZWNrKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lk
IGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtMTA5Myw3ICsxMDkzLDcg
QEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb24KICAgICBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRD
b250aW51ZVBvbGljeUNoZWNrOjpZZXMpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlU3RyZWFt
aW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Ojpk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgV2Vi
S2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5
Q2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvQ0RNUHJveHlDbGVhcktleS5oCmluZGV4IDY5MmE5OTZkMTljMjRlZmQ5YTQ4NTUyMzczYTU2
NzliNTJlMWVmMWMuLjM0OWJmZGNhYWQ2YzdkN2Y4ZDVhZGEwYTE3MjE5ZmQ5ZTcwNjI2ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
Q0RNUHJveHlDbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCkBAIC02MiwxMSArNjIsMTEgQEAgcHVi
bGljOgogICAgIENETVByb3h5Q2xlYXJLZXkoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+Q0RN
UHJveHlDbGVhcktleSgpOwogCi0gICAgLy8gRklYTUU6IFRoZXJlJ3MgYSBsYWNrIG9mIGNvbnNp
c3RlbmN5IGJldHdlZW4gU2hhcmVkQnVmZmVycywKKyAgICAvLyBGSVhNRTogVGhlcmUncyBhIGxh
Y2sgb2YgY29uc2lzdGVuY3kgYmV0d2VlbiBGcmFnbWVudGVkU2hhcmVkQnVmZmVycywKICAgICAv
LyBWZWN0b3I8Y2hhcj4ncyBhbmQge3VpbnQ4X3QqLHNpemVfdH0gaWRpb21zIGZvciByZXByZXNl
bnRpbmcgYSBjaHVuayBvZgotICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBzb21laG93LiBOb3RlIFNo
YXJlZEJ1ZmZlcnMgYXJlIGRhbmdlcm91cyBzaW5jZQorICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBz
b21laG93LiBOb3RlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJzIGFyZSBkYW5nZXJvdXMgc2luY2UK
ICAgICAvLyB0aGV5J3JlIG5vdCB0aHJlYWQtc2FmZSBhbmQgdGhpcyBjbGFzcyBtdXN0IG1haW50
YWluCi0gICAgLy8gdGhyZWFkLXNhZmV0eSwgYnV0IG1heWJlIFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQgY291bGQgYmUKKyAgICAvLyB0aHJlYWQtc2FmZXR5LCBidXQgbWF5YmUgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQgY291bGQgYmUKICAgICAvLyBtYWRlIHRvIHdvcmss
IGhvd2V2ZXIgdGhhdCBoYXMgemVybyBoZWxwZXJzIGZvciBkcm9wcGluZyBpbnRvCiAgICAgLy8g
aXRlcmF0b3ItYXdhcmUgLyBjb21wYXJhdG9yLWF3YXJlIGNvbnRhaW5lcnMuLi4KICAgICBzdHJ1
Y3QgY2VuY0RlY3J5cHRDb250ZXh0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCmluZGV4IDJl
ZmEwNDM2MGU4ODQ4MzgwNjE0NGMzZDcxZGU2M2FkN2I0MmI1NjEuLmMzODkxNmU3ZDA1OWU4ODli
NWM4OGVlYjA5ZTBmNGNmYzAzYzFkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcApAQCAt
MjIwLDcgKzIyMCw3IEBAIGJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzU2Vzc2lvbnMo
KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZhdGVUaHVuZGVyOjpz
dXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hh
cmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBv
cnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUg
aW5pdERhdGEgYnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0IGluIGtleWlkcyBjYXNlLgogICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJrZXlpZHMiKSAm
JiBDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdChpbml0RGF0YSkpCkBAIC0yMzcsNyArMjM3
LDcgQEAgYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gQ0RNUHJpdmF0ZVRodW5kZXI6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlc3BvbnNl
LmNvcHkoKTsKIH0KQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6
aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYQog
ICAgIGNhbGxiYWNrKFN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjpz
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCAgU3Vj
Y2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6c2V0U2Vy
dmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUs
ICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBPcGVuQ0RNRXJyb3IgZXJyb3Ig
PSBvcGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2NlcnRpZmljYXRlKG1fdGh1bmRlclN5c3RlbS5n
ZXQoKSwgY29uc3RfY2FzdDx1aW50OF90Kj4oY2VydGlmaWNhdGUtPmRhdGEoKSksCiAgICAgICAg
IGNlcnRpZmljYXRlLT5zaXplKCkpOwpAQCAtMzI2LDcgKzMyNiw3IEBAIFJlZlB0cjxDRE1JbnN0
YW5jZVNlc3Npb24+IENETUluc3RhbmNlVGh1bmRlcjo6Y3JlYXRlU2Vzc2lvbigpCiBjbGFzcyBQ
YXJzZWRSZXNwb25zZU1lc3NhZ2UgewogCiBwdWJsaWM6Ci0gICAgUGFyc2VkUmVzcG9uc2VNZXNz
YWdlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgUGFyc2VkUmVzcG9u
c2VNZXNzYWdlKGNvbnN0IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQog
ICAgIHsKICAgICAgICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+c2l6ZSgpKQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMzU0LDggKzM1NCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQogICAgIGJvb2wgaGFzUGF5bG9hZCgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fcGF5bG9hZCk7IH0KLSAgICBjb25zdCBS
ZWY8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0JiB7IEFTU0VSVChtX3BheWxvYWQpOyBy
ZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiYgcGF5bG9h
ZCgpICYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9Cisg
ICAgY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QmIHsg
QVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxvYWQudmFsdWUoKTsgfQorICAgIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpICYgeyBBU1NFUlQobV9wYXlsb2FkKTsg
cmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CiAgICAgYm9vbCBoYXNUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlLmhhc192YWx1ZSgpOyB9CiAgICAgV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdl
VHlwZSB0eXBlKCkgY29uc3QgeyBBU1NFUlQobV90eXBlKTsgcmV0dXJuIG1fdHlwZS52YWx1ZSgp
OyB9CiAgICAgV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSB0eXBlT3IoV2ViQ29yZTo6TWVk
aWFLZXlNZXNzYWdlVHlwZSBhbHRlcm5hdGUpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA/IG1fdHlw
ZS52YWx1ZSgpIDogYWx0ZXJuYXRlOyB9CkBAIC0zNjQsMTEgKzM2NCwxMSBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgYm9vbCBtX2lzVmFsaWQgeyBmYWxzZSB9OwotICAgIHN0ZDo6b3B0aW9u
YWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IG1fcGF5bG9hZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9wYXlsb2FkOwogICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZT4gbV90eXBlOwogfTsKIAotdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25UaHVuZGVyOjpjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6Y2hhbGxl
bmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogewogICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2Uo
YnVmZmVyKTsKICAgICBpZiAoIXBhcnNlZFJlc3BvbnNlTWVzc2FnZSkgewpAQCAtNDc1LDcgKzQ3
NSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6a2V5c1VwZGF0ZURvbmVDYWxs
YmFjaygpCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQogCi12b2lk
IENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNh
bGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7CiAgICAg
R1NUX0VSUk9SKCJDRE0gZXJyb3IiKTsKICAgICBHU1RfTUVNRFVNUCgiZXJyb3IgZHVtcCIsIG1l
c3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKQEAgLTQ4OCw3ICs0ODgsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBtZXNzYWdlKQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsK
IH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhU2hhcmVkQnVmZmVyLAordm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YVNoYXJlZEJ1ZmZlciwKICAgICBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtNTA2LDcgKzUwNiw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGlj
ZW5zZVR5cGUsIGNvbnN0IEF0CiAgICAgICAgIG1faW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCks
IG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCksIG51bGxwdHIsIDAsICZtX3RodW5kZXJTZXNz
aW9uQ2FsbGJhY2tzLCB0aGlzLCAmc2Vzc2lvbik7CiAgICAgaWYgKCFzZXNzaW9uKSB7CiAgICAg
ICAgIEdTVF9FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBzZXNzaW9uIik7Ci0gICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CisgICAgICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5
bG9hZCgpOwogICAgICAgICBjYWxsYmFjayhpbml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCB7IH0s
IGZhbHNlLCBGYWlsZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTE1LDcgKzUxNSw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5z
ZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0CiAKICAgICBhdXRvIGdlbmVyYXRlQ2hhbGxlbmdl
ID0gW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOwogICAgICAg
ICBpZiAobV9zZXNzaW9uSUQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBHU1RfRVJST1IoImNv
dWxkIG5vdCBjcmVhdGUgc2Vzc2lvbiBpZCIpOwogICAgICAgICAgICAgY2FsbGJhY2soaW5pdERh
dGEucmVsZWFzZU5vbk51bGwoKSwgeyB9LCBmYWxzZSwgRmFpbGVkKTsKQEAgLTU0NSwxMyArNTQ1
LDEzIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6c2Vzc2lvbkZhaWx1cmUoKQog
ICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklE
LCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0
ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSBt
X3Nlc3Npb25JRCk7CiAKICAgICBHU1RfVFJBQ0UoIlVwZGF0aW5nIHNlc3Npb24gJXMiLCBzZXNz
aW9uSUQudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFw
cGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7CisgICAgbV9z
ZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
cmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghcmVzcG9uc2VNZXNz
YWdlKQpAQCAtNTYyLDcgKzU2Miw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5CiAgICAgICAg
ICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShyZXNw
b25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3Nh
Z2UpOwogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9h
ZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBX
VEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAg
ICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2Vk
UmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJV
RygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAg
ICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2Fn
ZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0LApAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklECiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSBtX3Nl
c3Npb25JRCk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdl
ZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJv
b2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNz
YWdlKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAg
aWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghcmVzcG9uc2VNZXNzYWdlKQpAQCAtNTk3
LDcgKzU5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24o
TGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiAgICAgICAgICAgICAgICAgUGFy
c2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShyZXNwb25zZU1lc3NhZ2Up
OwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAg
ICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNl
ZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAgICAgICBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNz
YWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygiZ290IG1lc3Nh
Z2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBH
U1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsK
ICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQs
IHN0ZDo6bWFrZV9wYWlyKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS50eXBlT3IoTWVkaWFLZXlNZXNz
YWdlVHlwZTo6TGljZW5zZVJlcXVlc3QpLApAQCAtNjQwLDcgKzY0MCw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSUQsIExpY2VuCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIG1fc2Vzc2lvbklE
ID09IHNlc3Npb25JRCk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChb
dGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdlZENh
bGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wg
c3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBtdXRhYmxl
IHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3Mp
IHsKICAgICAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtNjQ5LDcgKzY0OSw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSUQsIExpY2VuCiAgICAgICAgICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBh
cnNlZFJlc3BvbnNlTWVzc2FnZShidWZmZXIpOwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJz
ZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1l
c3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwor
ICAgICAgICAgICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9
IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIEdTVF9ERUJVRygic2Vzc2lvbiAlcyByZW1vdmVkLCBtZXNzYWdlIGxlbmd0aCAlenUi
LCBtX3Nlc3Npb25JRC51dGY4KCkuZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAg
ICAgICAgICAgICBjYWxsYmFjayhtX2tleVN0b3JlLmFsbEtleXNBcyhNZWRpYUtleVN0YXR1czo6
UmVsZWFzZWQpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKaW5kZXggY2RkOGRh
MjExMjNjMTc5MWFlMmZiNjQzOWZmMmQ2ZmEwZDJlYjIxYy4uMTAyMGUxNTMyMjcxYjUzNTFlMTA2
ZGRlOGYyMWVhNTQwNWE5YzIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKQEAgLTkzLDggKzkz
LDggQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKICAgICBi
b29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBz
dXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKIHByaXZh
dGU6CkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIC8vIENETUluc3RhbmNlCiAgICAg
SW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6VGh1bmRlcjsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdp
dGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rp
c3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJh
Y2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0
aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5h
bDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
a2V5U3lzdGVtOyB9CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lv
bigpIGZpbmFsOwpAQCAtMTI2LDggKzEyNiw4IEBAIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvblRo
dW5kZXIgZmluYWwgOiBwdWJsaWMgQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgewogcHVibGljOgog
ICAgIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXIoQ0RNSW5zdGFuY2VUaHVuZGVyJik7CiAKLSAg
ICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYm
KSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsK
KyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNl
bnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmlu
YWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2Fs
bGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcm
LCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKQEAgLTE0
MSwxNCArMTQxLDE0IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ0RNSW5zdGFuY2VUaHVuZGVy
KiBjZG1JbnN0YW5jZVRodW5kZXIoKSBjb25zdDsKIAotICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9
IHZvaWQgKENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OiopKFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpOworICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9IHZvaWQgKENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OiopKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKTsKICAgICB1c2luZyBDaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZv
aWQoKT47Ci0gICAgdXNpbmcgU2Vzc2lvbkNoYW5nZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQo
Ym9vbCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+OworICAgIHVzaW5nIFNlc3Npb25DaGFuZ2Vk
Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGJvb2wsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKT47CiAKLSAgICB2b2lkIGNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgY2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQga2V5VXBkYXRlZENhbGxi
YWNrKEtleUlEVHlwZSYmKTsKICAgICB2b2lkIGtleXNVcGRhdGVEb25lQ2FsbGJhY2soKTsKLSAg
ICB2b2lkIGVycm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBl
cnJvckNhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBDRE1J
bnN0YW5jZVNlc3Npb246OktleVN0YXR1cyBzdGF0dXMoY29uc3QgS2V5SURUeXBlJikgY29uc3Q7
CiAgICAgdm9pZCBzZXNzaW9uRmFpbHVyZSgpOwogCkBAIC0xNTksNyArMTU5LDcgQEAgcHJpdmF0
ZToKICAgICBJbml0RGF0YSBtX2luaXREYXRhOwogICAgIE9wZW5DRE1TZXNzaW9uQ2FsbGJhY2tz
IG1fdGh1bmRlclNlc3Npb25DYWxsYmFja3MgeyB9OwogICAgIEJveFB0cjxPcGVuQ0RNU2Vzc2lv
bj4gbV9zZXNzaW9uOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWVzc2FnZTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdlOwogICAgIGJvb2wgbV9uZWVk
c0luZGl2aWR1YWxpemF0aW9uIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8Q2hhbGxlbmdlR2VuZXJh
dGVkQ2FsbGJhY2s+IG1fY2hhbGxlbmdlQ2FsbGJhY2tzOwogICAgIFZlY3RvcjxTZXNzaW9uQ2hh
bmdlZENhbGxiYWNrPiBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVV
dGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCmluZGV4IDNmODVhZmU3M2M4NDI3NjI5OTdk
NWFiYzJkN2JjMDdmN2MwMWI5YzMuLmVhODkwZjY3ZGEyMTM4N2Y0MGRhNjUxYTBjYTVjNzM0OTNl
ODRmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAK
QEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIHZvaWQgbWFya3VwRXJyb3IoR01hcmt1cFBhcnNlQ29u
dGV4dCosIEdFcnJvciosIGdwb2ludGVyKQogCiBzdGF0aWMgR01hcmt1cFBhcnNlciBtYXJrdXBQ
YXJzZXIgeyBtYXJrdXBTdGFydEVsZW1lbnQsIG1hcmt1cEVuZEVsZW1lbnQsIG1hcmt1cFRleHQs
IG1hcmt1cFBhc3N0aHJvdWdoLCBtYXJrdXBFcnJvciB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVu
cGFyc2VkUGF5bG9hZCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6
ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9h
ZCkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNl
ZFBheWxvYWQpOwogICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggZDVhZmY4NDVmNDA5YTc1
ZDcxYTk4NDBhY2YxZDM0MmE0NjQ3ZDJmMS4uYWIyNjRmMzc3N2ZkNjk4OTc1ZTgzYjhkN2JmOGFj
OTY4YjI5YWNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5o
CkBAIC01MCwxMyArNTAsMTcgQEAgcHVibGljOgogICAgICAgICAgICAgR1NUX0NBVF9MRVZFTF9M
T0cod2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnks
IEdTVF9MRVZFTF9FUlJPUiwgbnVsbHB0ciwgImNhbm5vdCBtYXAgJXMgcHJvdGVjdGlvbiBkYXRh
Iiwgc3lzdGVtSWQudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgfQotICAgICAgICBtX3BheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVk
KG1hcHBlZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgIGlmIChhdXRv
IHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBlZEluaXREYXRhLT5jcmVh
dGVTaGFyZWRCdWZmZXIoKSkpCisgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBh
eWxvYWQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogCi0gICAgSW5pdERhdGEoY29uc3QgU3Ry
aW5nJiBzeXN0ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQorICAgIEluaXRE
YXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKLSAgICAgICAgLCBt
X3BheWxvYWQoZXh0cmFjdENlbmNJZk5lZWRlZChXVEZNb3ZlKHBheWxvYWQpKSkKICAgICB7Cisg
ICAgICAgIGlmIChwYXlsb2FkKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwYXJzZWRQYXlsb2Fk
ID0gZXh0cmFjdENlbmNJZk5lZWRlZChwYXlsb2FkLT5tYWtlQ29udGlndW91cygpKSkKKyAgICAg
ICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxvYWQucmVsZWFzZU5vbk51bGwo
KSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIGFwcGVuZChJbml0RGF0YSYmIGluaXRE
YXRhKQpAQCAtNzIsMTAgKzc2LDEwIEBAIHB1YmxpYzoKICAgICAgICAgLy8gaXQncyBub3QgdmVy
eSByb2J1c3QsIHNvIGJlIGNhcmVmdWwgaGVyZSEKICAgICAgICAgbV9zeXN0ZW1JZCA9IGluaXRE
YXRhLm1fc3lzdGVtSWQ7CiAKLSAgICAgICAgbV9wYXlsb2FkLT5hcHBlbmQoKmluaXREYXRhLnBh
eWxvYWQoKSk7CisgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQoKmluaXREYXRhLnBheWxvYWQoKSk7
CiAgICAgfQogCi0gICAgY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25z
dCB7IHJldHVybiBtX3BheWxvYWQ7IH0KKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZC5nZXQoKTsgfQogICAgIGNvbnN0
IFN0cmluZyYgc3lzdGVtSWQoKSBjb25zdCB7IHJldHVybiBtX3N5c3RlbUlkOyB9CiAgICAgU3Ry
aW5nIHBheWxvYWRDb250YWluZXJUeXBlKCkgY29uc3QKICAgICB7CkBAIC04NiwxMSArOTAsMTEg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gImNlbmMiX3M7CiAgICAgfQogCi0gICAgc3RhdGlj
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBleHRy
YWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOwogCiBwcml2YXRlOgogICAg
IFN0cmluZyBtX3N5c3RlbUlkOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGF5bG9hZDsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcGF5bG9hZDsKIH07CiAKIGNsYXNzIFByb3RlY3Rp
b25TeXN0ZW1FdmVudHMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggNzE4YjliZDMx
NWVjYzY3MDc4OWM2NWNiYWFhMDM0OTI5NzVlNzJkMy4uNjkyOGE2M2U5NzFjN2MzNWU4ODQ0ZWVm
NzNiZmE0NGE4ZDhjMDMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zNiw3ICsz
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBj
bGFzcyBGb250RGVzY3JpcHRpb247CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFi
aWxpdGllczsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0
eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJ
bWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1
bWVudEltYWdlTWFjLm1tCmluZGV4IDgzZTZhZjdiMDM4OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4
YTc3YTkuLjY4YmNjODg0NmE4YjFmMGY3Y2JjZjE0MDMxOTY2ZWQ5MjQzMjJjMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1
bWVudEltYWdlTWFjLm1tCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
dm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7Ci0gICAgbV9kb2N1
bWVudCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpk
YXRhKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgbV9kb2N1bWVudCA9IGFkb3B0TlMo
W2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiB9CiAKIHZvaWQgUERGRG9jdW1lbnRJ
bWFnZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGll
cy5oCmluZGV4IDA5YzFjNDVjNDU5M2FlYTQzMTgzMGQyMTViN2U3NDg1MmMxOWUzN2YuLmZhMDAw
ODExNjA2Njk3ZGM1YzUxMTIzMzNjOTBjOGM5MmI0YjY3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGls
aXRpZXMuaApAQCAtMzUsOSArMzUsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0
IEJpZ0VuZGlhblVTaG9ydDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVmaXg7
CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgRU9USGVhZGVyIHsKICAgICBFT1RIZWFk
ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAppbmRleCAyY2ZhODU0YzAy
MjY2OGFjYzAwNzM3YzFlYmIzNWZmMzQ4ZDU4ZTJiLi4wZmE4ZjMwNmFkOTUyZDA2YTA5Mjk3ZDBi
MWQyODdiODk4ODMyYTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBA
IC0zODEsNyArMzgxLDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAKIHN0YXRp
YyBib29sIGxvYWRIbXR4VGFibGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRh
LCBWZWN0b3I8dWludDE2X3Q+JiBhZHZhbmNlV2lkdGhzKQogewotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpIaGVh
VGFnKTsKKyAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5U
eXBlOjpIaGVhVGFnKTsKICAgICBjb25zdCBPcGVuVHlwZTo6SGhlYVRhYmxlKiBoaGVhID0gT3Bl
blR5cGU6OnZhbGlkYXRlVGFibGU8T3BlblR5cGU6OkhoZWFUYWJsZT4oYnVmZmVyKTsKICAgICBp
ZiAoIWhoZWEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQyNCw3ICs0MjQsNyBAQCBPcGVu
VHlwZVZlcnRpY2FsRGF0YTo6T3BlblR5cGVWZXJ0aWNhbERhdGEoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYgcGxhdGZvcm1EYXRhLAogdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJp
Y3MoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewogICAgIC8vIExvYWQg
dmhlYSBmaXJzdC4gVGhpcyB0YWJsZSBpcyByZXF1aXJlZCBmb3IgZm9udHMgdGhhdCBzdXBwb3J0
IHZlcnRpY2FsIGZsb3cuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcGxhdGZv
cm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OlZoZWFUYWcpOworICAgIGF1dG8gYnVmZmVy
ID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OlZoZWFUYWcpOwogICAgIGNv
bnN0IE9wZW5UeXBlOjpWaGVhVGFibGUqIHZoZWEgPSBPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZTxP
cGVuVHlwZTo6VmhlYVRhYmxlPihidWZmZXIpOwogICAgIGlmICghdmhlYSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIHZvaWQgT3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRN
ZXRyaWNzKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIAogdm9pZCBPcGVu
VHlwZVZlcnRpY2FsRGF0YTo6bG9hZFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6R1NVQlRhZyk7
CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6
R1NVQlRhZyk7CiAgICAgY29uc3QgT3BlblR5cGU6OkdTVUJUYWJsZSogZ3N1YiA9IE9wZW5UeXBl
Ojp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpHU1VCVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKGdz
dWIpCiAgICAgICAgIGdzdWItPmdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKCZtX3ZlcnRp
Y2FsR2x5cGhNYXAsICpidWZmZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaAppbmRleCBh
NjI3MTliMTcxOWE3NGY5NzY5MjIxOWRmNWY3YWFlZGM0OTA2NDY2Li4wZGI0YWZhZGIzZjc0MmI4
M2E0ZTE2Y2YzNzE4NzBhMmIwNDA0ZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaApAQCAtNDMs
NyArNDMsNyBAQCBlbnVtIERXUklURV9GT05UX1NUUkVUQ0g7CiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgRGlyZWN0V3JpdGUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA1ZjEwZjczOTJkMDRjMzQ0ZDEyY2VlNDI2NmVkYjFl
ZTk5NzFjNGVmLi4wOGZjOWYxOWVhZWE5NDgzZWE1OGVjMWFlZWRkNDU3MjU2Y2UyN2JjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTM2LDEyICszNiwxMyBAQCB0eXBlZGVmIHN0cnVj
dCBDR0ZvbnQqIENHRm9udFJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0
aW9uOwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogc3Ry
dWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlh
bnRTZXR0aW5nczsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRT
ZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNw
cAppbmRleCA2MjllMGU2MWExMDRjNTY3YTFkNGVkY2I3ZTU3OTdkY2Y2N2M2ZThlLi43NzM1NzM5
YjkzMzRmNDRkOTlhM2YxMmZmYzViZjdiNDFmN2NjNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3Qy
RC5jcHAKQEAgLTI3Miw3ICsyNzIsNyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckRp
cmVjdDJEOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YgogICAgIHJl
dHVybiBiaXRtYXA7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OnNldERhdGEoU2hh
cmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVy
RGlyZWN0MkQ6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZURlY29kZXJEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlRGVjb2RlckRpcmVjdDJELmgKaW5kZXggNGY0NzI1ODZiNDI0YmRhMWNmNmZhMDE0M2Ni
YTIzZDAzMDAxNmU0NS4uYzIzNjVmZDc0NGM2MTE4YzE5OTllMDViODAyZWQ1YjQ4ZjM2NDgyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVj
b2RlckRpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlRGVjb2RlckRpcmVjdDJELmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQgZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKIHB1YmxpYzoKICAgICBJ
bWFnZURlY29kZXJEaXJlY3QyRCgpOwogCi0gICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJEaXJl
Y3QyRD4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikKKyAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2RlckRpcmVjdDJEPiBjcmVhdGUo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2Rl
ckRpcmVjdDJEKCkpOwogICAgIH0KQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogCiAgICAgUGxh
dGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5n
TGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMm
ID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAot
ICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmlu
YWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERh
dGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVC
dWZmZXJDYWNoZShzaXplX3QpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAppbmRleCAwZDg4MjBlOWYzZDZmZDc3MzVk
NTcwYjM2NDE0ODhmNTNiZDdlY2U5Li4yZDk3MjcwYTczNDgzNDg5M2U3OGM4MWZmMGVjNWJiNWRm
ZWMzZjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZVdpbi5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
IAogLy8gVGhpcyBmdW5jdGlvbiBsb2FkcyByZXNvdXJjZXMgZnJvbSBXZWJLaXQKLVJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciop
OworUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUlu
dG9CdWZmZXIoY29uc3QgY2hhciopOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VE
ZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxh
YmxlSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBkOTU2ZDllNzYyNWQ1YmI1YTcwZjA2OTNlNzc5OGVl
OTA4NDlmMTY1Li4zM2M5NWVjMzMzM2E5MjBjNjRhMDE4MTc1MWViNGE1MDVlZjFhN2FiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUlt
YWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKIAotc3RhdGljIHVuc2lnbmVkIGNvcHlGcm9tU2hhcmVk
QnVmZmVyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoLCBjb25zdCBTaGFyZWRC
dWZmZXImIHNoYXJlZEJ1ZmZlcikKK3N0YXRpYyB1bnNpZ25lZCBjb3B5RnJvbVNoYXJlZEJ1ZmZl
cihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKQogewogICAgIHVuc2lnbmVkIGJ5dGVzRXh0cmFjdGVk
ID0gMDsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBzaGFyZWRCdWZmZXIpIHsKQEAg
LTEzNSw3ICsxMzUsNyBAQCBib29sIG1hdGNoZXNDVVJTaWduYXR1cmUoY2hhciogY29udGVudHMp
CiAKIH0KIAotUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rl
cjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVm
UHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbGVuZ3RoT2ZMb25nZXN0U2lnbmF0dXJlID0gMTQ7IC8v
IFRvIHdpdDogIlJJRkY/Pz8/V0VCUFZQIgogICAgIGNoYXIgY29udGVudHNbbGVuZ3RoT2ZMb25n
ZXN0U2lnbmF0dXJlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IDMyZDRlNmY4Yjhm
YTE0YTEzYmZiNjIyZDg3NTcwODc5OGI5OWRhYTIuLjljNDA1NTc4MjQxZDBjNTEyNzAyOTUxNWMy
MjEyNjU4ZjhjNGY2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAtNjAsNyArNjAs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIG51bGxwdHIgaWYgd2UgY2FuJ3Qgc25pZmYg
YSBzdXBwb3J0ZWQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBkYXRhIChwb3NzaWJseQogICAgIC8v
IGJlY2F1c2UgdGhlcmUgaXNuJ3QgZW5vdWdoIGRhdGEgeWV0KS4KLSAgICBzdGF0aWMgUmVmUHRy
PFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8U2Nh
bGFibGVJbWFnZURlY29kZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBB
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgYm9vbCBwcmVt
dWx0aXBseUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhhOyB9CiAKQEAg
LTcwLDE2ICs3MCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2VuY29kZWREYXRhU3Rh
dHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0ZTsKICAgICB9CiAKLSAgICB2b2lkIHNl
dERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJpZGUK
KyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9s
b2NrIH07CiAgICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3Rh
dHVzOjpFcnJvcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YS5kYXRh
KCkpIHsKLSAgICAgICAgICAgIC8vIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbWJpbmVzIGFsbCBz
ZWdtZW50cyBpbnRvIG9uZSBpbiBjYXNlIHRoZXJlJ3MgbW9yZSB0aGFuIG9uZS4KLSAgICAgICAg
ICAgIG1fZGF0YSA9IGRhdGEuYmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7Ci0gICAgICAgIH0K
KyAgICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAg
ICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCkpCisgICAgICAgICAgICBtX2RhdGEgPSBj
b250aWd1b3VzRGF0YS0+YmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7CiAgICAgICAgIGlmICht
X2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7
CiAgICAgICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKICAgICAgICAg
ICAgIHRyeURlY29kZVNpemUoYWxsRGF0YVJlY2VpdmVkKTsKQEAgLTE5NSw3ICsxOTQsNyBAQCBw
dWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKICAgICBWZWN0b3I8U2NhbGFibGVJbWFn
ZURlY29kZXJGcmFtZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hlIFdURl9HVUFSREVEX0JZX0xPQ0so
bV9sb2NrKTsKICAgICBtdXRhYmxlIExvY2sgbV9sb2NrOwogICAgIGJvb2wgbV9wcmVtdWx0aXBs
eUFscGhhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDdjNjAzZmQ4MzU4YzIx
NGFjOTE4NGYzMTg5OTcyZmU4NDFiNjFlODAuLjI2Zjg4NjQ5NmU1YTVhMTRlMjhhZmIxYWZhOWJm
YzMwMTc3ZjUxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKQEAgLTQxLDcgKzQx
LDcgQEAgQVZJRkltYWdlUmVhZGVyOjpBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJbWFnZURl
Y29kZXI+JiYgZGVjb2RlcikKIAogQVZJRkltYWdlUmVhZGVyOjp+QVZJRkltYWdlUmVhZGVyKCkg
PSBkZWZhdWx0OwogCi1ib29sIEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29uc3QgU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCitib29s
IEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChh
dmlmRGVjb2RlclNldElPTWVtb3J5KG1fYXZpZkRlY29kZXIuZ2V0KCksIGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSkgIT0gQVZJRl9SRVNVTFRfT0spCiAgICAgICAgIHJldHVybiBhbGxEYXRhUmVj
ZWl2ZWQgPyBtX2RlY29kZXItPnNldEZhaWxlZCgpIDogZmFsc2U7CkBAIC01OCw3ICs1OCw3IEBA
IGJvb2wgQVZJRkltYWdlUmVhZGVyOjpwYXJzZUhlYWRlcihjb25zdCBTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50JiBkYXRhLCBib29sIGFsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQVZJ
RkltYWdlUmVhZGVyOjpkZWNvZGVGcmFtZShzaXplX3QgZnJhbWVJbmRleCwgU2NhbGFibGVJbWFn
ZURlY29kZXJGcmFtZSYgYnVmZmVyLCBjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBk
YXRhKQordm9pZCBBVklGSW1hZ2VSZWFkZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFtZUluZGV4
LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiBidWZmZXIsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKQogewogICAgIGlmIChtX2RlY29kZXItPmZhaWxl
ZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaAppbmRleCBjYmNh
MGI4YzEyNGJmZjBmZmMzMzAxYmEzNWJjZTAxZWQyNzIyZGY4Li40OTZmNjlmODEyYmQ3NWIwZWRh
NjM1N2JhYTg2MGNmY2NiNWJhNGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgKQEAgLTM5
LDggKzM5LDggQEAgcHVibGljOgogICAgIEFWSUZJbWFnZVJlYWRlcihSZWZQdHI8QVZJRkltYWdl
RGVjb2Rlcj4mJik7CiAgICAgfkFWSUZJbWFnZVJlYWRlcigpOwogCi0gICAgYm9vbCBwYXJzZUhl
YWRlcihjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpOwotICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4LCBTY2FsYWJsZUltYWdlRGVj
b2RlckZyYW1lJiwgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpOworICAgIGJvb2wg
cGFyc2VIZWFkZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmLCBi
b29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCBkZWNvZGVGcmFtZShzaXplX3QgaW5kZXgs
IFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudCYpOwogICAgIHNpemVfdCBpbWFnZUNvdW50KCkgY29uc3Q7CiAgICAgZG91
YmxlIHJlcGV0aXRpb25Db3VudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3Bw
CmluZGV4IDcyNzY5YTY5MjZlYzI0MTliZjY2MzgyNTI4ZDNkNzcyMGE1NGFkYWUuLmY3NDU1YzE0
NmM3ZThhZWIwNGNjOGM1NmYzMzBlMmEwMWYzYmE3MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29k
ZXIuY3BwCkBAIC00Niw3ICs0Niw3IEBAIEJNUEltYWdlRGVjb2Rlcjo6Qk1QSW1hZ2VEZWNvZGVy
KEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiB7CiB9CiAK
LXZvaWQgQk1QSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCit2b2lkIEJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFp
bGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaAppbmRleCBjN2M3
Y2E4MWZlYTZiOGE3NzRiYjMwOGU1MzhkY2QwNDhjOTk1ZWVhLi42NGRlZDZhYmJlMmMwYTI5YjEx
ZjlmYjVlY2Q2YjQ4NzI0ZDU4OTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCkBAIC00NCw3
ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3Ry
aW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gImJtcCJfczsgfQot
ICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmlu
YWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERh
dGFSZWNlaXZlZCkgZmluYWw7CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogZnJhbWVC
dWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgZmluYWw7CiAgICAgLy8gQ0FVVElPTjogc2V0RmFp
bGVkKCkgZGVsZXRlcyB8bV9yZWFkZXJ8LiBCZSBjYXJlZnVsIHRvIGF2b2lkCiAgICAgLy8gYWNj
ZXNzaW5nIGRlbGV0ZWQgbWVtb3J5LCBlc3BlY2lhbGx5IHdoZW4gY2FsbGluZyB0aGlzIGZyb20g
aW5zaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9ibXAvQk1QSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oCmluZGV4IDQ4NDRmMzgwZGMxN2VjNzA0NTg4ZmIx
MmY1M2VhYmM2ZDIwZTYwZjQuLmJkNDMwZThhOGJlYTJjODE2YjJjNTIyYmY1YmE3ODg0NmMzOGUw
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Jt
cC9CTVBJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEJNUElt
YWdlUmVhZGVyIHsKIHB1YmxpYzoKICAgICAvLyBSZWFkIGEgdmFsdWUgZnJvbSB8ZGF0YVtvZmZz
ZXRdfCwgY29udmVydGluZyBmcm9tIGxpdHRsZSB0byBuYXRpdmUKICAgICAvLyBlbmRpYW5uZXNz
LgotICAgIHN0YXRpYyBpbmxpbmUgdWludDE2X3QgcmVhZFVpbnQxNihjb25zdCBTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQorICAgIHN0YXRpYyBpbmxpbmUgdWlu
dDE2X3QgcmVhZFVpbnQxNihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dCYgZGF0YSwgaW50IG9mZnNldCkKICAgICB7CiAgICAgICAgIHVpbnQxNl90IHJlc3VsdDsKICAg
ICAgICAgbWVtY3B5KCZyZXN1bHQsICZkYXRhLmRhdGEoKVtvZmZzZXRdLCAyKTsKQEAgLTUyLDcg
KzUyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHN0
YXRpYyBpbmxpbmUgdWludDMyX3QgcmVhZFVpbnQzMihjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQorICAgIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgcmVh
ZFVpbnQzMihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwg
aW50IG9mZnNldCkKICAgICB7CiAgICAgICAgIHVpbnQzMl90IHJlc3VsdDsKICAgICAgICAgbWVt
Y3B5KCZyZXN1bHQsICZkYXRhLmRhdGEoKVtvZmZzZXRdLCA0KTsKQEAgLTY5LDcgKzY5LDcgQEAg
cHVibGljOgogICAgIEJNUEltYWdlUmVhZGVyKFNjYWxhYmxlSW1hZ2VEZWNvZGVyKiBwYXJlbnQs
IHNpemVfdCBkZWNvZGVkQW5kSGVhZGVyT2Zmc2V0LCBzaXplX3QgaW1nRGF0YU9mZnNldCwgYm9v
bCB1c2VzQW5kTWFzayk7CiAKICAgICB2b2lkIHNldEJ1ZmZlcihTY2FsYWJsZUltYWdlRGVjb2Rl
ckZyYW1lKiBidWZmZXIpIHsgbV9idWZmZXIgPSBidWZmZXI7IH0KLSAgICB2b2lkIHNldERhdGEo
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQorICAg
IHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkg
eyBtX2RhdGEgPSAmZGF0YTsgfQogCiAgICAgLy8gRG9lcyB0aGUgYWN0dWFsIGRlY29kaW5nLiBJ
ZiB8b25seVNpemV8IGlzIHRydWUsIGRlY29kaW5nIG9ubHkKICAgICAvLyBwcm9ncmVzc2VzIGFz
IGZhciBhcyBuZWNlc3NhcnkgdG8gZ2V0IHRoZSBpbWFnZSBzaXplLiBSZXR1cm5zCkBAIC0yNzIs
NyArMjcyLDcgQEAgcHJpdmF0ZToKICAgICBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBtX2J1
ZmZlcjsKIAogICAgIC8vIFRoZSBmaWxlIHRvIGRlY29kZS4KLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOwogCiAgICAgLy8gQW4gaW5kZXggaW50byB8bV9kYXRh
fCByZXByZXNlbnRpbmcgaG93IG11Y2ggd2UndmUgYWxyZWFkeSBkZWNvZGVkLgogICAgIHNpemVf
dCBtX2RlY29kZWRPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fp
cm8uY3BwCmluZGV4IDYwMTIwMzc0ZjljNDMxNjhhNjUyMWI2OWM1NGFmYmUyYTAwZjU1ZjcuLjRh
MjEyNTVhOGMwZmI2NzhlNGFhZGQ3NjYzZWI3ZjkxOGU3ZmU5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3Jl
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2Nh
aXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCkBAIC0zNyw3ICszNyw5IEBAIFBsYXRmb3Jt
SW1hZ2VQdHIgSW1hZ2VCYWNraW5nU3RvcmU6OmltYWdlKCkgY29uc3QKICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY29uc3RfY2FzdDx1aW50MzJfdCo+KG1fcGl4ZWxz
UHRyKSksCiAgICAgICAgIENBSVJPX0ZPUk1BVF9BUkdCMzIsIHNpemUoKS53aWR0aCgpLCBzaXpl
KCkuaGVpZ2h0KCksIHNpemUoKS53aWR0aCgpICogc2l6ZW9mKHVpbnQzMl90KSkpOwogICAgIHN0
YXRpYyBjYWlyb191c2VyX2RhdGFfa2V5X3Qgc19zdXJmYWNlRGF0YUtleTsKLSAgICBjYWlyb19z
dXJmYWNlX3NldF91c2VyX2RhdGEoc3VyZmFjZS5nZXQoKSwgJnNfc3VyZmFjZURhdGFLZXksIG1f
cGl4ZWxzLmdldCgpLCBbXSh2b2lkKiBkYXRhKSB7IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQqPihkYXRhKS0+ZGVyZWYoKTsgfSk7CisgICAgY2Fpcm9fc3VyZmFjZV9zZXRf
dXNlcl9kYXRhKHN1cmZhY2UuZ2V0KCksICZzX3N1cmZhY2VEYXRhS2V5LCBtX3BpeGVscy5nZXQo
KSwgW10odm9pZCogZGF0YSkgeworICAgICAgICBzdGF0aWNfY2FzdDxEYXRhU2VnbWVudCo+KGRh
dGEpLT5kZXJlZigpOworICAgIH0pOwogCiAgICAgcmV0dXJuIHN1cmZhY2U7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VE
ZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZURlY29kZXIuY3BwCmluZGV4IGU2YWJlMGQ5NTQ0YjZjMTg1YzY0NWRlY2UwOWYyM2Y5
NTY2NjA3Y2IuLmI5ZWMwMWI4YWU4ZThkMjliYzc4MjUyNmUwNzY1MjU1MWUzNTljMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIEdJRkltYWdlRGVjb2Rl
cjo6R0lGSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wCiAKIEdJRkltYWdlRGVjb2Rlcjo6fkdJRkltYWdlRGVjb2RlcigpID0gZGVmYXVs
dDsKIAotdm9pZCBHSUZJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlm
IChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCmluZGV4
IDM1ZGYzM2Y2ZGZjNDgzZmQ4NDcxMzY2YWU1M2JiMGI5NjFjYWVkMmUuLmM3NDcxOTk5OWI5ODZj
MWNlZjg0Nzg3NTlkMjM3MThjOTA0MmQzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKQEAg
LTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAg
ICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiZ2lmIl9z
OyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0
IEludFNpemUmKSBmaW5hbDsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IGZpbmFsOwog
ICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFn
ZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlUmVhZGVyLmgKaW5kZXggNDIxNDZlMDMyOTMyMzY5OTc4OWViNWU0MmFmNGM3M2QzNGFi
OWNjNi4uMTA4MmZkZjBkZmYyMzkxZTU2NTMwYTQxZjg3YmE0Mzk4MjMyNzUzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVh
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlUmVhZGVyLmgKQEAgLTIzNyw3ICsyMzcsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0K
IAotICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBk
YXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9CisgICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9
CiAgICAgLy8gRklYTUU6IGhhbHRBdEZyYW1lIHNob3VsZCBiZSBzaXplX3QuCiAgICAgYm9vbCBk
ZWNvZGUoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpHSUZRdWVyeSwgdW5zaWduZWQgaGFsdEF0
RnJhbWUpOwogCkBAIC0zMTYsNiArMzE2LDYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEdJRkZyYW1lQ29udGV4dD4gPiBtX2ZyYW1lczsKICAgICBzaXplX3QgbV9jdXJy
ZW50RGVjb2RpbmdGcmFtZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50PiBtX2RhdGE7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CiAgICAgYm9vbCBtX3BhcnNlQ29tcGxldGVkOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYzcxN2M0NWQzMDU3YzA1NTM2ZWU2
MDUwZjkzOTcwNDZkMTBkZjJhNy4uYzA3MTM0NWI4YmYzNjliODAyNzFmYmRmMGEwY2UwMTc0ZjA1
MDNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
aWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgSUNP
SW1hZ2VEZWNvZGVyOjpJQ09JbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3AKIAogSUNPSW1hZ2VEZWNvZGVyOjp+SUNPSW1hZ2VEZWNvZGVy
KCkgPSBkZWZhdWx0OwogCi12b2lkIElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZm
ZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJQ09JbWFnZURlY29kZXI6OnNl
dERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNv
ZGVyLmgKaW5kZXggZmI3YTkwM2IyYTA3NTM5NDkxN2FiYmJmMTFiMWNlZDgzZmY0MzJhMC4uMTBl
ZTliNGQyZThjOWQ4ODdlMWQyYjhiZTEzOWJiNzQyNzFkNTdhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURl
Y29kZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdl
RGVjb2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuICJpY28iX3M7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIEludFNpemUgc2l6ZSgpIGNv
bnN0IGZpbmFsOwogICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBs
aW5nTGV2ZWwpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmZDM0NWJiNzg2ZmYw
OGQ5NDY1OTMwYWE0ZGY0OGRmMTdhYmYzMDVjLi44ZmI5MjIwZWUzN2Y2YWQ4MTkzODIwNzc0Y2Uy
MmIxZDVjYzNhNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTIyMiw3
ICsyMjIsNyBAQCBzdGF0aWMgYm9vbCBpc0lDQ01hcmtlcihqcGVnX3NhdmVkX21hcmtlcl9wdHIg
bWFya2VyKQogCiBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBl
Z19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgZm9y
IChqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtl
cjsgbWFya2VyID0gbWFya2VyLT5uZXh0KSB7CiAgICAgICAgIGlmICghaXNJQ0NNYXJrZXIobWFy
a2VyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjM2LDEzICsyMzYsMTMgQEAgc3RhdGlj
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1
Y3QqIGluZm8pCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICB1bnNpZ25l
ZCBtYXJrZXJTaXplID0gbWFya2VyLT5kYXRhX2xlbmd0aCAtIGljY0hlYWRlclNpemU7Ci0gICAg
ICAgIGJ1ZmZlci0+YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtl
ci0+ZGF0YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXplKTsKKyAgICAgICAgYnVmZmVyLmFw
cGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtYXJrZXItPmRhdGEgKyBpY2NI
ZWFkZXJTaXplKSwgbWFya2VyU2l6ZSk7CiAgICAgfQogCi0gICAgaWYgKGJ1ZmZlci0+aXNFbXB0
eSgpKQorICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBidWZmZXI7CisgICAgcmV0dXJuIGJ1ZmZlci50YWtlQXNDb250aWd1b3Vz
KCk7CiB9CiAjZW5kaWYKIApAQCAtMzIwLDcgKzMyMCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9i
eXRlc1RvU2tpcCA9IHN0ZDo6bWF4KG51bUJ5dGVzIC0gYnl0ZXNUb1NraXAsIHN0YXRpY19jYXN0
PGxvbmc+KDApKTsKICAgICB9CiAKLSAgICBib29sIGRlY29kZShjb25zdCBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIG9ubHlTaXplKQorICAgIGJvb2wgZGVjb2RlKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIG9ubHlTaXpl
KQogICAgIHsKICAgICAgICAgbV9kZWNvZGluZ1NpemVPbmx5ID0gb25seVNpemU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQ
RUcyMDAwSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBiZWNmNjQ1MDI3
N2VlYjc0YjA5ZGU1MmVlMTgyZmY2ZTExZWQyNzYyLi4yMDQ3M2YwZWVlYmI1NmM3MTMxNGY2NTU2
YmRhMDkwMzM0OTA3NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURl
Y29kZXIuY3BwCkBAIC0zODAsNyArMzgwLDcgQEAgdm9pZCBKUEVHMjAwMEltYWdlRGVjb2Rlcjo6
ZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIH0KIAogICAg
IHN0cnVjdCBSZWFkZXIgewotICAgICAgICBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRh
OworICAgICAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YTsKICAg
ICAgICAgc2l6ZV90IG9mZnNldDsKICAgICB9IHJlYWRlciA9IHsgKm1fZGF0YSwgMCB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5H
SW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCmluZGV4IGMxMmM0NTlhNWEzZTViMzUxYzViY2M2MmJm
MDBiOGEyODFiZDViYTMuLjRjYmQzMjNkOWE3NTAyNmVmODY1OGYzODE2ZGQ3MzhkMzdjYThlZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9Q
TkdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgcHVibGlj
OgogICAgICAgICBtX3JlYWRPZmZzZXQgPSAwOwogICAgIH0KIAotICAgIGJvb2wgZGVjb2RlKGNv
bnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgc2l6ZU9ubHksIHVuc2ln
bmVkIGhhbHRBdEZyYW1lKQorICAgIGJvb2wgZGVjb2RlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIHNpemVPbmx5LCB1bnNpZ25lZCBoYWx0QXRG
cmFtZSkKICAgICB7CiAgICAgICAgIG1fZGVjb2RpbmdTaXplT25seSA9IHNpemVPbmx5OwogICAg
ICAgICBQTkdJbWFnZURlY29kZXIqIGRlY29kZXIgPSBzdGF0aWNfY2FzdDxQTkdJbWFnZURlY29k
ZXIqPihwbmdfZ2V0X3Byb2dyZXNzaXZlX3B0cihtX3BuZykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdl
RGVjb2Rlci5jcHAKaW5kZXggMDJmMWIwOWRiYzc2NTE2MDFmOTIyZGRlMjlmODA1YTY1ODcxZTJk
Mi4uYjFiZWM1NWU3OGM0MzQ4MDFjMjU0YWNlMGRmNTk5MzFhMzZiNzRiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNv
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJw
L1dFQlBJbWFnZURlY29kZXIuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFdFQlBJbWFnZURlY29kZXI6
OldFQlBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlCiAKIFdFQlBJbWFnZURlY29kZXI6On5XRUJQSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0
OwogCi12b2lkIFdFQlBJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBp
ZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFdF
QlBJbWFnZURlY29kZXI6OmRlY29kZShzaXplX3QgZnJhbWVJbmRleCwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiAgICAgLy8gVGhpcyBjYW4gYmUgZXhlY3V0ZWQgYm90aCBpbiB0aGUgbWFpbiB0aHJl
YWQgKHdoZW4gbm90IHVzaW5nIGFzeW5jIGRlY29kaW5nKSBvciBpbiB0aGUgZGVjb2RpbmcgdGhy
ZWFkLgogICAgIC8vIFdoZW4gZXhlY3V0ZWQgaW4gdGhlIGRlY29kaW5nIHRocmVhZCwgYSBjYWxs
IHRvIHNldERhdGEoKSBmcm9tIHRoZSBtYWluIHRocmVhZCBtYXkgY2hhbmdlIHRoZSBkYXRhCiAg
ICAgLy8gdGhlIFdlYlBEZW11eGVyIGlzIHVzaW5nLCBsZWF2aW5nIGl0IGluIGFuIGluY29uc2lz
dGVudCBzdGF0ZSwgc28gd2UgbmVlZCB0byBwcm90ZWN0IHRoZSBkYXRhLgotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBwcm90ZWN0ZWREYXRhKG1fZGF0YSk7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBwcm90ZWN0ZWREYXRhKG1f
ZGF0YSk7CiAgICAgV2ViUERhdGEgaW5wdXREYXRhID0geyBwcm90ZWN0ZWREYXRhLT5kYXRhKCks
IHByb3RlY3RlZERhdGEtPnNpemUoKSB9OwogICAgIFdlYlBEZW11eFN0YXRlIGRlbXV4ZXJTdGF0
ZTsKICAgICBXZWJQRGVtdXhlciogZGVtdXhlciA9IFdlYlBEZW11eFBhcnRpYWwoJmlucHV0RGF0
YSwgJmRlbXV4ZXJTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCmluZGV4IGFmMzY1
ZTljZjljN2NlOTUzOGI2NGJhNzg5YmYwMTdkNDhmNmVkZTEuLmRkMjhiYzg4ZGY1YzBmYTNjMTU3
Mzc4NjliMjYwOTczYWFhMGQyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCkBAIC00
Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XRUJQSW1hZ2VEZWNvZGVyKCk7CiAK
ICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
d2VicCJfczsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsK
KyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwog
ICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3Qg
aW5kZXgpIG92ZXJyaWRlOwogICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBj
b25zdCBvdmVycmlkZTsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fZnJhbWVDb3VudDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFz
dGVib2FyZElPUy5tbQppbmRleCA5MDllOGU3NjhhZGI2OGJhYjI4NDQ1ZDI4MjczNjBhM2YzZmEy
MmMzLi5iMjM3N2ZlMzQxMWQyYWM0MDE1MTNiZjA5YWU4Y2NhZTc4NmJkOGViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtMjM2LDE0ICsyMzYs
MTQgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIAogI2lmICFQTEFURk9S
TShNQUNDQVRBTFlTVCkKICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBO
U1N0cmluZyAqKWtVVFR5cGVGbGF0UlRGRF0pIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwg
a1VUVHlwZUZsYXRSVEZELCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZUZsYXRSVEZELCBtX3Bhc3RlYm9hcmRO
YW1lLCBjb250ZXh0KCkpOwogICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3Vu
dCgpKQogICAgICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5n
ZWRFeHRlcm5hbGx5OwogICAgICAgICByZXR1cm4gYnVmZmVyICYmIHJlYWRlci5yZWFkUlRGRCgq
YnVmZmVyKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJl
YWRUeXBlOwogICAgIH0KIAogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KF9fYnJpZGdl
IE5TU3RyaW5nICopa1VUVHlwZVJURl0pIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VU
VHlwZVJURiwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVSVEYsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQo
KSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAg
ICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7
CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRSVEYoKmJ1ZmZlcikgPyBSZWFk
ZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKQEAgLTI1
MSw3ICsyNTEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogI2VuZGlm
IC8vICFQTEFURk9STShNQUNDQVRBTFlTVCkKIAogICAgIGlmIChbc3VwcG9ydGVkSW1hZ2VUeXBl
cygpIGNvbnRhaW5zT2JqZWN0OnR5cGVdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIHR5
cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQoaXRlbUluZGV4LCB0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgICAg
ICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJu
IFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAgICBy
ZXR1cm4gYnVmZmVyICYmIHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCks
IHR5cGUsIGl0ZW1JbmZvLnByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpID8gUmVhZGVyUmVzdWx0
OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCAx
NjdjZWYwMmQ3OGQ3OTRkZWFhOGU1ZGRhZjRkZDY2YzNkMmNjYTQ1Li4xNmIzZDVkNDQxNWQyNTg1
MTVmNjYwYTg2YWM2Y2VmYmRjZGI2NGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTMzOCw3ICszMzgsNyBAQCBp
bnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
KQogICAgIHJldHVybiAwOwogfQogCi1pbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVm
ZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKQoraW50NjRfdCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNv
bnN0IFN0cmluZyYpCiB7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC00NjMsNyArNDYzLDcgQEAgdm9p
ZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBj
b250ZW50KQogCiAgICAgQVNTRVJUKGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpID09IGNvbnRl
bnQuY2xpZW50RGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gY29u
dGVudC5jbGllbnRUeXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNl
bnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5jcmVhdGVO
U0RhdGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNbaV1dOworICAgICAgICBb
cmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmNvbnRlbnQuY2xpZW50RGF0YVtpXS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpjb250ZW50LmNs
aWVudFR5cGVzW2ldXTsKIAogICAgIGlmIChjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQp
IHsKICAgICAgICAgYXV0byB3ZWJBcmNoaXZlRGF0YSA9IGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2
ZUZvcm1hdC0+Y3JlYXRlTlNEYXRhKCk7CkBAIC00NzksNyArNDc5LDcgQEAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgfQogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluQXR0
cmlidXRlZFN0cmluZ0Zvcm1hdCkgewotICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICph
dHRyaWJ1dGVkU3RyaW5nID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNs
YXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9t
RGF0YTpjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGVycm9yOm51bGxwdHJdKQorICAgICAgICBpZiAoTlNBdHRyaWJ1dGVkU3RyaW5nICph
dHRyaWJ1dGVkU3RyaW5nID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNs
YXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSBmcm9t
RGF0YTpjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51bGxwdHJdKQogICAgICAgICAgICAgW3Jl
cHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0OmF0dHJpYnV0ZWRT
dHJpbmddOwogICAgIH0KIApAQCAtNTAxLDcgKzUwMSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogCiAgICAgUGFzdGVib2FyZEN1c3RvbURhdGEgY3VzdG9tRGF0YTsKICAg
ICBjdXN0b21EYXRhLnNldE9yaWdpbihjb250ZW50LmNvbnRlbnRPcmlnaW4pOwotICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZm
ZXIoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpjb2NvYVR5cGUoKSldOworICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6
Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUo
KSldOwogCiAgICAgcmVnaXN0ZXJJdGVtVG9QYXN0ZWJvYXJkKHJlcHJlc2VudGF0aW9uc1RvUmVn
aXN0ZXIuZ2V0KCksIG1fcGFzdGVib2FyZC5nZXQoKSk7CiB9CkBAIC01MTQsMTQgKzUxNCwxNCBA
QCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBw
YXN0ZWJvYXJkSW1hZ2UpCiAgICAgYXV0byYgZGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5jbGllbnRE
YXRhOwogICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwLCBzaXplID0gdHlwZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAg
ICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmRhdGFbaV0tPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGZvclR5cGU6dHlwZXNbaV1dOworICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9S
ZWdpc3RlciBhZGREYXRhOmRhdGFbaV0tPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvclR5cGU6dHlwZXNbaV1dOwogCiAgICAgaWYgKHBhc3RlYm9hcmRJbWFnZS5yZXNv
dXJjZURhdGEgJiYgIXBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlLmlzRW1wdHkoKSkg
ewogICAgICAgICBhdXRvIHV0aU9yTUlNRVR5cGUgPSBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VN
SU1FVHlwZTsKICAgICAgICAgaWYgKCFpc0RlY2xhcmVkVVRJKHV0aU9yTUlNRVR5cGUpKQogICAg
ICAgICAgICAgdXRpT3JNSU1FVHlwZSA9IFVUSUZyb21NSU1FVHlwZSh1dGlPck1JTUVUeXBlKTsK
IAotICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEt
PmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIGltYWdlRGF0YSA9IHBhc3RlYm9hcmRJbWFn
ZS5yZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAg
ICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmltYWdlRGF0YS5nZXQoKSBmb3JU
eXBlOihOU1N0cmluZyAqKXV0aU9yTUlNRVR5cGVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25z
VG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TaXplOnBhc3RlYm9hcmRJbWFnZS5p
bWFnZVNpemVdOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRTdWdnZXN0
ZWROYW1lOnBhc3RlYm9hcmRJbWFnZS5zdWdnZXN0ZWROYW1lXTsKQEAgLTYzNSw3ICs2MzUsNyBA
QCBzdGF0aWMgUmV0YWluUHRyPFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0PiBj
cmVhdGVJdGVtUHJvdmlkZXJSZWdpc3RyYQogICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IHNldFByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlOldlYlByZWZlcnJlZFByZXNlbnRhdGlvblN0
eWxlSW5saW5lXTsKIAogICAgIGlmIChkYXRhLmhhc1NhbWVPcmlnaW5DdXN0b21EYXRhKCkgfHwg
IWRhdGEub3JpZ2luKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRT
aGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKSkg
eworICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkU2hhcmVkQnVmZmVyID0gZGF0YS5jcmVhdGVT
aGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpIHsKICAgICAg
ICAgICAgIC8vIFdlIHN0YXNoIHRoZSBsaXN0IG9mIHN1cHBsaWVkIHBhc3RlYm9hcmQgdHlwZXMg
aW4gdGVhbURhdGEgaGVyZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGRyYWcgYW5kIGRyb3AuCiAg
ICAgICAgICAgICAvLyBTaW5jZSB0aGUgY29udGVudHMgb2YgaXRlbSBwcm92aWRlcnMgY2Fubm90
IGJlIGxvYWRlZCBwcmlvciB0byBkcm9wLCBidXQgdGhlIHBhc3RlYm9hcmQgdHlwZXMgYXJlCiAg
ICAgICAgICAgICAvLyBjb250YWluZWQgd2l0aGluIHRoZSBjdXN0b20gZGF0YSBibG9iIGFuZCB3
ZSBuZWVkIHRvIHZlbmQgdGhlbSB0byB0aGUgcGFnZSB3aGVuIGZpcmluZyBgZHJhZ292ZXJgCkBA
IC02NzIsOCArNjcyLDggQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6
Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Pih2YWx1ZSk7Ci0gICAgICAgIFtyZXByZXNlbnRhdGlvbnNU
b1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihO
U1N0cmluZyAqKWNvY29hVHlwZV07CisgICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pih2YWx1ZSk7CisgICAgICAgIFtyZXByZXNlbnRhdGlv
bnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CiAgICAgfSk7CiAKICAg
ICByZXR1cm4gcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0KaW5kZXggNTQ0NjUzYzQ0MDNk
MjYwNDBhNTVkMjNlOTM2OTFiZmVkY2M5MmI0Mi4uYmZlMzZhYmQ5NzQzYTZiYTQ1ZTQzYzBlOGI3
ZDlhZTFhZTkwNmYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1By
ZXZpZXdDb252ZXJ0ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1By
ZXZpZXdDb252ZXJ0ZXJJT1MubW0KQEAgLTgyLDcgKzgyLDcgQEAgQGVuZAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBQcmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVydGVyKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXImIHByb3ZpZGVy
KQotICAgIDogbV9wcmV2aWV3RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgIDog
bV9wcmV2aWV3RGF0YSB7IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KICAgICAs
IG1fb3JpZ2luYWxSZXNwb25zZSB7IHJlc3BvbnNlIH0KICAgICAsIG1fcHJvdmlkZXIgeyBwcm92
aWRlciB9CiAgICAgLCBtX3BsYXRmb3JtRGVsZWdhdGUgeyBhZG9wdE5TKFtbV2ViUHJldmlld0Nv
bnZlcnRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aERlbGVnYXRlOip0aGlzXSkgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCA2NzdmOGNhZGFi
NTkxMjNlMWI2MmQxYmFjMmQxOTA4YmY2NzZhMmY5Li4wZDI1NDk4Yjg2YmVmMTg1ZDM3NjlkNWE1
YmMwYmMyZjczMWM3MGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbQpAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29u
c3QgQ29sb3ImIGNvbG9yKQogCiBzdGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXIoY29u
c3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgYXV0byB3cmFwcGVy
ID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250
ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0p
OworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0
UmVndWxhckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICBbd3JhcHBlciBzZXRQ
cmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShwYXN0ZWJvYXJk
SW1hZ2UudXJsLnVybCwgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUpXTsKICAgICBy
ZXR1cm4gd3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQpAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5IGFsbG93CiAgICAgCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhs
ZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIGlmIChhdXRvIGRhdGEgPSBy
ZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgobGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCks
IGl0ZW1JbmRleCwgc3RyYXRlZ3ksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSkpIHsKLSAg
ICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
ZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF0pKSB7CisgICAgICAgICAgICBpZiAoYXV0byBhdHRyaWJ1
dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhS
VEZEOmRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50
QXR0cmlidXRlczpuaWxdKSkgewogICAgICAgICAgICAgICAgIHRleHQudGV4dCA9IFthdHRyaWJ1
dGVkU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAgdGV4dC5pc1VSTCA9IGZhbHNlOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRXcml0ZXIubW0KaW5kZXggMzUzZDAwNmI5MGNiY2U2MDllNmRmZDM3YzI4MDgx
MzFmMjE0YjhkYS4uODhkMDQwMjU4NDM3MDJlNGFhNGY1YTlhNTU2Yjg4MWM2ZTQwYzJmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRXcml0ZXIubW0KQEAg
LTEyOCwxMSArMTI4LDExIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAg
ICAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldFN0cmluZzp3ZWJDb250ZW50LT5kYXRhSW5TdHJp
bmdGb3JtYXQgZm9yVHlwZTpOU1Bhc3RlYm9hcmRUeXBlU3RyaW5nXTsKIAogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgd2ViQ29udGVudC0+Y2xpZW50VHlwZXMuc2l6ZSgpOyArK2kp
Ci0gICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnRE
YXRhW2ldLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVU
SSh3ZWJDb250ZW50LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOworICAgICAgICAgICAgW3Bhc3Rl
Ym9hcmRJdGVtIHNldERhdGE6d2ViQ29udGVudC0+Y2xpZW50RGF0YVtpXS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEko
d2ViQ29udGVudC0+Y2xpZW50VHlwZXNbaV0pLmdldCgpXTsKIAogICAgICAgICBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAgICAgICBjdXN0b21EYXRhLnNldE9yaWdpbih3ZWJD
b250ZW50LT5jb250ZW50T3JpZ2luKTsKLSAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6
Y3VzdG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9y
VHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpj
b2NvYVR5cGUoKSkpLmdldCgpXTsKKyAgICAgICAgW3Bhc3RlYm9hcmRJdGVtIHNldERhdGE6Y3Vz
dG9tRGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yVHlwZTp0b1VUSVVubGVzc0FscmVhZHlVVEkoU3RyaW5nKFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSkpLmdldCgpXTsKICAgICB9CiAKICAgICByZXR1cm4g
cGFzdGVib2FyZEl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCBkOWI3ZDI0ODAzOGMyZGI4YWFiMDkyY2I5MWZm
YTU2ZjJjYjRjZTczLi5jM2I0ZDJkOTYyMTc0NzFjNzM1ZTI0ZmU3YTVmOWQ5MjM3ZGY0NzAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJk
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9h
cmRNYWMubW0KQEAgLTI2Myw4ICsyNjMsOCBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6
d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgICAgIGlmIChwbGF0
Zm9ybVR5cGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikp
IHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFy
ZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHN0cmlu
Z09yQnVmZmVyKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpn
ZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQg
c2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAg
ICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZl
cikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdP
ckJ1ZmZlcik7CkBAIC0yNzQsNyArMjc0LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgIH0pOwogCiAgICAg
aWYgKHNob3VsZFdyaXRlQ3VzdG9tRGF0YSkgewotICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVk
Q3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKQor
ICAgICAgICBpZiAoYXV0byBzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IGRhdGEuY3JlYXRlU2hhcmVk
QnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAg
W21fcGFzdGVib2FyZCBzZXREYXRhOnNlcmlhbGl6ZWRDdXN0b21EYXRhLmdldCgpIGZvclR5cGU6
QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKICAgICB9CiAKQEAgLTM0MSwx
MiArMzQxLDEyIEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKQogICAgIHJldHVybiBbbV9wYXN0ZWJvYXJk
IGRlY2xhcmVUeXBlczpjcmVhdGVOU0FycmF5KHBhc3RlYm9hcmRUeXBlcykuZ2V0KCkgb3duZXI6
bmlsXTsKIH0KIAotaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUo
U2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitpbnQ2
NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYg
KCFjYW5Xcml0ZVBhc3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZm
ZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2Fy
ZFR5cGVdOworICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1
ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBu
aWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkaWRXcml0ZURhdGEpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIHJldHVybiBjaGFuZ2VDb3VudCgpOwpAQCAtNTA0LDggKzUwNCw4
IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkSXRlbT4gY3JlYXRlUGFzdGVib2FyZEl0
ZW0oY29uc3QgUGFzdGVib2FyZEN1c3RvbURhCiAgICAgICAgIGlmICghcGxhdGZvcm1UeXBlKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChh
dXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1
ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgeworICAgICAg
ICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZv
clR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmlu
ZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZS5oCmluZGV4IDY4MTNkNWRhN2RjYjBmYzI1OWYxYmQxZWQwYTU0YzFhMWE5ZmQ5Y2YuLjc5NjU1
NGY0Yzk3NjQ1MTQwMWUxYTEyMzc0Njg3MDQwYjI0YjFjYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgTWVkaWFTYW1wbGU7CiBjbGFzcyBNZWRpYVN0
cmVhbVByaXZhdGU7CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTsKIGNsYXNzIFBsYXRm
b3JtQXVkaW9EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogc3RydWN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9uczsKIApAQCAtNTks
NyArNTksNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQXVk
aW9WaWRlb1NlbGVjdGVkVHJhY2tzIHNlbGVjdFRyYWNrcyhNZWRpYVN0cmVhbVByaXZhdGUmKTsK
IAotICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPjsK
KyAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRv
dWJsZSk+OwogICAgIHZpcnR1YWwgdm9pZCBmZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJikg
PSAwOwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0ID0gMDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJpdmF0ZU1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCmluZGV4IGMyNWRmOTE1NzRhNjViYzQx
YmRiNzA2NzhkYzQ3NzI0ODM2ZGQxNDUuLjQ5OGQ0ZWUxMzQwYzRiOTQwMDFiNjBjMzQ0NzliN2Y3
MmQ1YzhlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKQEAgLTkzLDcg
KzkzLDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6OmdlbmVyYXRlTW9ja0NvdW50
ZXJTdHJpbmcoKQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6ZmV0Y2hEYXRhKEZl
dGNoRGF0YUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZm
ZXI7CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9idWZmZXJMb2NrIH07CiAgICAg
ICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZSB7IG1fYnVmZmVyLmNoYXJhY3RlcnM4KCksIG1fYnVm
ZmVyLmxlbmd0aCgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5oCmluZGV4IDIxMWY3NWVlNzNhZjY5MTllN2Y0Yzk5NThlMGNkMzQ4MjUz
MmQwOWYuLjljMmM3OTdiODE5NTEyZDhmZDU3OTAxNWRjM2I2ZTQwNWUzYmM2MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCkBAIC03
MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFZpZGVvU2FtcGxlQnVmZmVyKE1l
ZGlhU2FtcGxlJik7CiAgICAgdm9pZCBhcHBlbmRBdWRpb1NhbXBsZUJ1ZmZlcihjb25zdCBQbGF0
Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBjb25zdCBXVEY6
Ok1lZGlhVGltZSYsIHNpemVfdCk7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKCk7Ci0gICAgdm9p
ZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
LCBkb3VibGUpPiYmKTsKKyAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiYmKTsKIAogICAgIHZv
aWQgcGF1c2UoKTsKICAgICB2b2lkIHJlc3VtZSgpOwpAQCAtMTA1LDcgKzEwNSw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGZpbmlzaGVkRmx1c2hpbmdTYW1wbGVzKCk7CiAgICAgdm9pZCBjb21w
bGV0ZUZldGNoRGF0YSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRha2VEYXRhKCk7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHRha2VEYXRhKCk7CiAKICAgICBib29s
IG1faGFzQXVkaW8geyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWaWRlbyB7IGZhbHNlIH07CkBA
IC0xMTcsOCArMTE3LDggQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4g
bV93cml0ZXI7CiAKICAgICBMb2NrIG1fZGF0YUxvY2s7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7Ci0gICAgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0
YUNvbXBsZXRpb25IYW5kbGVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhIFdURl9H
VUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4gbV9mZXRjaERhdGFDb21w
bGV0aW9uSGFuZGxlcjsKIAogICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBt
X2F1ZGlvRm9ybWF0RGVzY3JpcHRpb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcj4gbV9hdWRpb0NvbXByZXNzb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KaW5kZXggOGMxZjdjMGU1MzEz
YjZiODU2Y2QzY2RmNWU4Mzg0ZjM2YjdiNTNmNS4uODQ4NDEwMGVhYzVlMTE1ZTliMGNmMDEyMGJh
YmY3OGZiMWExMjc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtMTM3LDEwICsxMzcsOCBAQCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKICAgICAgICAgbV93cml0
ZXIuY2xlYXIoKTsKICAgICB9CiAKLSAgICAvLyBBdCB0aGlzIHBvaW50ZXIsIHdlIHNob3VsZCBu
byBsb25nZXIgYmUgd3JpdGluZyBhbnkgZGF0YSwgc28gaXQgc2hvdWxkIGJlIHNhZmUgdG8gY2xv
c2UgYW5kIG51bGxpZnkgbV9kYXRhIHdpdGhvdXQgbG9ja2luZy4KICAgICBpZiAobV93cml0ZXJE
ZWxlZ2F0ZSkKICAgICAgICAgW21fd3JpdGVyRGVsZWdhdGUgY2xvc2VdOwotICAgIG1fZGF0YSA9
IG51bGxwdHI7CiAKICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9m
ZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51
bGxwdHIsIDApOwpAQCAtNDk1LDcgKzQ5Myw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OnN0b3BSZWNvcmRpbmcoKQogICAgIH0pOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpOwogCkBAIC01MzcsMTggKzUzNSwxMyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQog
ewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgaWYgKCFtX2RhdGEpIHsK
LSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAg
bV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEoKQogewogICAg
IExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgYXV0byBkYXRhID0gV1RGTW92ZSht
X2RhdGEpOwotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBtX2RhdGEudGFrZSgpOwogfQog
CiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwYXVzZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKaW5kZXggYTliMjlkNTll
OWFhM2I0NjU1NDE1YmQ4YmVmMDk4NGM1NDRiNzNmMC4uY2RlZTYwMzUyM2NkNjY5NDVmNDI4ZjY5
NDc4OTYwZjZmZDc0Yzc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9EYXRhVVJMRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRGF0YVVSTERlY29kZXIuaApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIG5hbWVzcGFjZSBEYXRhVVJMRGVjb2RlciB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCBmYWZkZmU4N2M4MzdlNjE1N2Qy
ZjEzZTlhN2NhMDA5NjlkNTBiMWM3Li40YmViY2I1MDk4ZDE1YzI5NjZlZDhjN2VlMTM2YWUzYTJh
ZTRhMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5oCkBAIC04NCw3ICs4NCw3IEBAIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1
cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZTsKIGNsYXNzIFRpbWVy
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IDZlNjViYjg5MThjNmVjMTJmOGFlYTg2ZWJlNzA0ODg0
ZTJlNzM2NmYuLmJhOGZkNGZmNGYxZTQxYzlhZDRmYTc0YTQyYmU0ZTJiZDExYWE4NDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVDbGllbnQuY3BwCkBAIC0zNiw5ICszNiw5IEBAIFJlc291cmNlSGFuZGxlQ2xpZW50OjpSZXNv
dXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5S
ZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAotdm9pZCBSZXNvdXJjZUhhbmRsZUNs
aWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUhh
bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkK
IHsKLSAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0
YUxlbmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAppbmRleCBiNjMzN2Q1NmNlOGNkOWJlZmY5ZGZi
ZTExMzY2MmJjNzc1NmI2NTM3Li5jNGYwNTQ4NWYyODcwYjExNmRhN2M3NjBkM2MwZmNlOTZlYzJi
NGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFJlc291cmNlSGFuZGxl
OwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiBlbnVtIENhY2hlU3RvcmFnZVBvbGljeSB7CiAgICAgU3RvcmFnZUFsbG93
ZWQsCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERh
dGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgLypieXRlc1NlbnQqLywgdW5z
aWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8pIHsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCosIHVu
c2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSB7IH0KLSAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFy
ZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAKICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFu
ZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9y
Lm1tCmluZGV4IDFmZjA2NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNkYWY2OTZmMDI0MDYuLjAwOGUy
MjZmZjkxOTAwNGI0NTE0OGEyNDcyNjExNjE1MDk4OTYyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VH
ZW5lcmF0b3IubW0KQEAgLTQxLDggKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0
IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKICAgICBEYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlKQotICAgICAgICA6IGJ1ZmZlcihTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpKQotICAgICAgICAsIG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCisg
ICAgICAgIDogb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKICAgICAgICAgLCByZXNvdXJjZSgm
cmVzb3VyY2UpIHsgfQogCiAgICAgc3RydWN0IFRhc2tEYXRhIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPFRhc2tEYXRhPiB7CkBAIC01NSw5ICs1NCw5IEBAIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2Vu
ZXJhdG9yOjpEYXRhIHsKICAgICAgICAgc2l6ZV90IG5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXgg
eyAwIH07CiAgICAgICAgIGVudW0gY2xhc3MgUmVzcG9uc2VTdGF0ZSA6IHVpbnQ4X3QgeyBOb3RT
eW50aGVzaXplZFlldCwgV2FpdGluZ0ZvclNlc3Npb24sIFNlc3Npb25DYWxsZWRDb21wbGV0aW9u
SGFuZGxlciB9IHJlc3BvbnNlU3RhdGUgeyBSZXNwb25zZVN0YXRlOjpOb3RTeW50aGVzaXplZFll
dCB9OwogICAgIH07Ci0gICAgCisKICAgICBIYXNoTWFwPFJldGFpblB0cjxXZWJDb3JlTlNVUkxT
ZXNzaW9uRGF0YVRhc2s+LCBzdGQ6OnVuaXF1ZV9wdHI8VGFza0RhdGE+PiB0YXNrRGF0YTsKLSAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZm
ZXI7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBvcmlnaW5hbFJlc3BvbnNlOwogICAgIGVudW0gY2xh
c3MgU3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2FkaW5nIDogYm9vbCB7IE5vLCBZZXMgfSBzdWNjZXNz
ZnVsbHlGaW5pc2hlZExvYWRpbmcgeyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6Ok5vIH07
CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVzb3VyY2U7CkBAIC0xMDYsMjIg
KzEwNSwyMiBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OnJlbW92ZVRhc2soV2ViQ29y
ZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrKQogdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9y
OjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1VSTFNl
c3Npb25EYXRhVGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdlJiByYW5nZSwgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgRGF0YSYgZGF0
YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8gYnVmZmVyID0gZGF0
YS5idWZmZXI7Ci0gICAgYXV0byBidWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICAv
LyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBqdXN0IG1ha2UgYSByYW5nZSB3aXRoIGEg
KiBhZnRlciB0aGUgLyBidXQgQVZGb3VuZGF0aW9uIGRvZXNuJ3QgYWNjZXB0IHN1Y2ggcmFuZ2Vz
LgogICAgIC8vIEluc3RlYWQsIHdlIGp1c3Qgd2FpdCB1bnRpbCB0aGUgbG9hZCBoYXMgY29tcGxl
dGVkLCBhdCB3aGljaCB0aW1lIHdlIHdpbGwga25vdyB0aGUgY29udGVudCBsZW5ndGggZnJvbSB0
aGUgYnVmZmVyIGxlbmd0aC4KICAgICBpZiAoIWV4cGVjdGVkQ29udGVudExlbmd0aCkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgYXV0byBidWZmZXJTaXplID0gZGF0YS5idWZmZXIuc2l6ZSgpOwog
ICAgIGlmIChidWZmZXJTaXplIDwgcmFuZ2UuYmVnaW4pCiAgICAgICAgIHJldHVybjsKLSAgICAK
KworICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXIuZ2V0KCk7CiAgICAgYXV0byogdGFza0Rh
dGEgPSBkYXRhLnRhc2tEYXRhLmdldCh0YXNrKTsKICAgICBpZiAoIXRhc2tEYXRhKQogICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFp
blB0cih0YXNrKSwgYnVmZmVyLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2Vu
ZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKKworICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNr
ID0gW3Rhc2sgPSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgYnVmZmVyU2l6ZSwgdGFza0RhdGEg
PSBXZWFrUHRyIHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7
CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChbdGFzayBzdGF0
ZV0gIT0gTlNVUkxTZXNzaW9uVGFza1N0YXRlUnVubmluZykKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTEzMCw3ICsxMjksNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNw
b25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogICAgICAgICBhdXRv
JiByYW5nZSA9IHRhc2tEYXRhLT5yYW5nZTsKICAgICAgICAgYXV0byYgYnl0ZUluZGV4ID0gdGFz
a0RhdGEtPm5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXg7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7
Ci0gICAgICAgICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAg
ICAgaWYgKGJ5dGVJbmRleCA+PSBidWZmZXJTaXplKQogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgYXV0byBidWZmZXJWaWV3ID0gYnVmZmVyLT5nZXRTb21lRGF0YShieXRlSW5k
ZXgpOwogICAgICAgICAgICAgaWYgKCFidWZmZXJWaWV3LnNpemUoKSB8fCBieXRlSW5kZXggPiBy
YW5nZS5lbmQpCkBAIC0xNzUsNyArMTc0LDcgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IFJhbmdl
UmVzcG9uc2VHZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKGNvbnMKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChkYXRhLnN1Y2Nlc3NmdWxseUZp
bmlzaGVkTG9hZGluZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6OlllcykK
LSAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLT5zaXplKCk7CisgICAgICAgIHJldHVybiBkYXRh
LmJ1ZmZlci5zaXplKCk7CiAKICAgICAvLyBGSVhNRTogUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4
cGVjdGVkQ29udGVudExlbmd0aCgpIHNob3VsZCByZXR1cm4gc3RkOjpvcHRpb25hbDxzaXplX3Q+
IGluc3RlYWQgb2YgdXMgZG9pbmcgdGhpcyBjaGVjayBoZXJlLgogICAgIGF1dG8gZXhwZWN0ZWRD
b250ZW50TGVuZ3RoID0gZGF0YS5vcmlnaW5hbFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0
aCgpOwpAQCAtMjQ0LDcgKzI0Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgZmluYWwKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpIGZpbmFsCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAg
ICBpZiAoIW1fZ2VuZXJhdG9yKQpAQCAtMjUyLDcgKzI1MSw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAgICAg
ICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5idWZmZXIt
PmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5kKFdU
Rk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5naXZlUmVzcG9uc2VUb1Rhc2tz
V2l0aEZpbmlzaGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgK
aW5kZXggNDA0ODg1YWU2Mzc2ZmNlNjgwNDBkMmEwNWMwMGJlYzQ3ZmUxNmFhOC4uY2U0YzI1NDVj
ZGUwZjJmNDZhYzMzOGY5NmM0OTA4OGViNDVkMDkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgK
QEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOwogY2xh
c3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBjbGFzcyBXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2tDbGllbnQ7CiBlbnVtIGNsYXNzIFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2sg
OiBib29sOwpAQCAtMTU4LDcgKzE1OCw3IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2Vi
Q29yZU5TVVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxl
IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2VudEJ5dGVzOih1bnNp
Z25lZCBsb25nIGxvbmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2VudDoodW5zaWduZWQgbG9u
ZyBsb25nKXRvdGFsQnl0ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZXNwb25zZToo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgY29tcGxldGlvbkhhbmRs
ZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lD
aGVjayk+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtIChCT09MKXJlc291cmNlOihudWxsYWJsZSBX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9u
c2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlOwotLSAodm9pZCly
ZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJj
ZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpZGF0YTsKKy0gKHZv
aWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVz
b3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JilkYXRhOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJilyZXNwb25zZSByZXF1ZXN0OihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpcmVz
b3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ug
YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJillcnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhFcnJvcjooY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXgg
ZTA0MDEwYTk4MTFiNGM5YWUxNDk0OTk4NzAxY2ExNTQ4OWY1NzE2Yy4uOGM4OWQ5Mzg2NTc5MzNh
MWRhMjkwMzE5OTE1ODRjNGRiMmZhYTlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAt
NjA4LDcgKzYwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBs
b25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9h
ZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC02NTIsNyArNjUyLDcgQEAgYm9v
bCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnNob3VsZENhY2hlUmVzcG9uc2Uo
UGxhdGZvcm1NZWRpYVJlc291cmMKICAgICByZXR1cm4gW21fdGFzayByZXNvdXJjZTomcmVzb3Vy
Y2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTpyZXNwb25zZV07CiB9CiAKLXZvaWQgV2ViQ29yZU5TVVJM
U2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiByZXNvdXJjZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYkNvcmVOU1VS
TFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYgcmVzb3VyY2UsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV90YXNrTG9jayB9OwogICAgIGlmICghbV90YXNrKQpAQCAtOTE1
LDExICs5MTUsMTEgQEAgLSAoQk9PTClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKily
ZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOihjb25zdCBSZXMKICAgICByZXR1cm4gcmVzcG9u
c2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50UmFuZ2UpLmlzRW1wdHko
KTsKIH0KIAotLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJj
ZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpZGF0YQorLSAodm9p
ZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKWRhdGEKIHsKICAgICBBU1NF
UlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwgcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsK
ICAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3BlcmF0aW9uOltzdHJvbmdTZWxmID0gUmV0
YWluUHRyIHsgc2VsZiB9LCBkYXRhID0gV1RGTW92ZShkYXRhKV0gewotICAgICAgICBhdXRvIG5z
RGF0YSA9IGRhdGEtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBhdXRvIG5zRGF0YSA9IGRhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICBzdHJvbmdTZWxmLmdl
dCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IGRhdGEtPnNpemUoKTsKICAgICAgICAgaWQ8TlNV
UkxTZXNzaW9uRGF0YURlbGVnYXRlPiBkYXRhRGVsZWdhdGUgPSAoaWQ8TlNVUkxTZXNzaW9uRGF0
YURlbGVnYXRlPilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24uZGVsZWdhdGU7CiAgICAgICAgIGlm
IChbZGF0YURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbjpk
YXRhVGFzazpkaWRSZWNlaXZlRGF0YTopXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKaW5kZXggYzM2ZTFmODg3NjQzMDQ2
MGNlNzUwYTNiOGM2NThjNzM0ZWNiMTUwOC4uMzQ5NDQ1OTI1NGFjOTNmYzE5Y2IxMjE1MGE2MWJj
MmJjZWQwMmQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEN1cmxEb3du
bG9hZDo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJl
c3BvbnNlJiYgcgogfQogCiAKLXZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZl
cihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDdXJsRG93
bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93
bmxvYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxv
YWQuaAppbmRleCBhM2FhMGNmNWZjZDI5NTViYjdiMTZiMTFhMWE4MWNhNzRhZTYxYzhkLi5jZGU0
NDQ1Nzc1Zjc0NDIzMzA1MzBiNjViMTM1N2JhNmJmZDliYjgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCkBAIC03Miw3ICs3
Miw3IEBAIHByaXZhdGU6CiAgICAgUmVmPEN1cmxSZXF1ZXN0PiBjcmVhdGVDdXJsUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVxdWVzdCYs
IHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZSB7IH0KICAg
ICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9uc2Um
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYs
IFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY3VybERpZFJlY2VpdmVC
dWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1l
dHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVx
dWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRp
cGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggYmJkYTNmYmRhNzU4M2Q5OTE5MzFkZmUxNjlmN2Iz
YTkxMzNlNmRhMi4uMDkwZDAzOWJhNDVkZTEwMjhlZGY3Njg0YzZkN2QyZjI5NmUzYTM0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBh
cnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMTE5LDEyICsxMTksMTIgQEAgQ3VybE11bHRpcGFy
dEhhbmRsZTo6Q3VybE11bHRpcGFydEhhbmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiBj
bGllbnQsIGNvbnMKIAogfQogCi12b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxl
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVuZCkKICAgICAgICAgcmV0dXJuOyAvLyBUaGUg
aGFuZGxlciBpcyBjbG9zZWQgZG93biBzbyBpZ25vcmUgZXZlcnl0aGluZy4KIAotICAgIG1fYnVm
ZmVyLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX2J1ZmZlci5h
cHBlbmQoYnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAK
ICAgICB3aGlsZSAocHJvY2Vzc0NvbnRlbnQoKSkgeyB9CiB9CkBAIC0xMzcsNyArMTM3LDcgQEAg
dm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSgpCiAgICAgaWYgKG1fc3RhdGUg
IT0gU3RhdGU6OkVuZCkgewogICAgICAgICAvLyBJdCBzZWVtcyB3ZSBhcmUgc3RpbGwgbm90IGF0
IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3NpbmcuCiAgICAgICAgIC8vIFB1c2ggb3V0IHRoZSByZW1h
aW5pbmcgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpKSk7
CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6
OkVuZDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCmluZGV4IDVjMDhiY2M1ZWIzZTRiYmNj
MDI5YjQ3Njc4NjhmNDNlMmY5NWMzNDEuLjlhMWExYmJkMTkzOGExNGY2OWZjY2VlM2YwZjg5Yjk3
YTRhMjE4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQ7CiBjbGFzcyBD
dXJsUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEN1cmxNdWx0aXBhcnRI
YW5kbGUoQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudCYsIGNvbnN0IFN0cmluZyYpOwogICAgIH5D
dXJsTXVsdGlwYXJ0SGFuZGxlKCkgeyB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkQ29tcGxldGUoKTsKIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlw
YXJ0SGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCmluZGV4IGZkMTNmZDM4MTMxNDNjYjI2NTliOGZk
MWRiMjQ0NDc2NWU5OGE1ODAuLmM4MTM4ODZhOGQ1YzVmYTZjMTJkMTQxMzMxOTEwMWFmMjUwMmEy
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
TXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaApAQCAtMjgsMTIgKzI4LDEyIEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxSZXNwb25zZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxNdWx0
aXBhcnRIYW5kbGVDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
SGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxTaGFyZWRCdWZmZXI+JiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB+Q3VybE11
bHRpcGFydEhhbmRsZUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggZDM1YjBlODM5MTk1MWQzODYz
NGU5OTA5M2I2ODY1NjI0ZDk5Nzk1MS4uZDgyZGQzYzEwYWM2NDcxMzU5OTFmZDdhZTY2OTdlOWQ4
ZTMxM2U4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0
OjpkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmIGhlYWRlcikKIAogLy8gY2FsbGVkIHdpdGggZGF0
YSBhZnRlciBhbGwgaGVhZGVycyBoYXZlIGJlZW4gcHJvY2Vzc2VkIHZpYSBoZWFkZXJDYWxsYmFj
awogCi1zaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQorc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5j
ZWxsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBDdXJs
UmVxdWVzdDo6ZGlkUmVjZWl2ZUhlYWRlckZyb21NdWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGhlYWRlcnMpCiAgICAgaW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBBY3Rp
b246Ok5vbmUpOwogfQogCi12b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0
aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogewogICAgIGlmIChpc0NvbXBsZXRlZE9yQ2FuY2VsbGVkKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTc3Nyw3ICs3NzcsNyBAQCBjb25zdCBTdHJpbmcmIEN1cmxSZXF1ZXN0OjpnZXREb3du
bG9hZGVkRmlsZVBhdGgoKQogICAgIHJldHVybiBtX2Rvd25sb2FkRmlsZVBhdGg7CiB9CiAKLXZv
aWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9h
ZEZpbGVJZkVuYWJsZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZG93bmxvYWRNdXRleCB9OwpAQCAtNzkw
LDcgKzc5MCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZF
bmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIH0KIAogICAgIGlmIChtX2Rv
d25sb2FkRmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KQotICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwg
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVxdWVzdDo6Y2xvc2VEb3dubG9h
ZEZpbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuaAppbmRleCA2YmQ4YTZiZmJhMzc1MmNlZGRkYmM1MDA5ZWFlODNjNGYwZWVkNjQx
Li4zYzdjZGQ4ODNlYjYyYmZlOTJjZjA0NDVlZDI5YmQyNmVjZTNlOTIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaApAQCAtNDIs
NyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDdXJsUmVxdWVzdENsaWVudDsK
IGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3luY2hy
b25vdXNMb2FkZXJNZXNzYWdlUXVldWU7CiAKIGNsYXNzIEN1cmxSZXF1ZXN0IDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPEN1cmxSZXF1ZXN0PiwgcHVibGljIEN1cmxSZXF1ZXN0U2NoZWR1
bGVyQ2xpZW50LCBwdWJsaWMgQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudCB7CkBAIC0xMjIsOSAr
MTIyLDkgQEAgcHJpdmF0ZToKICAgICBDVVJMKiBzZXR1cFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAg
ICAgc2l6ZV90IHdpbGxTZW5kRGF0YShjaGFyKiwgc2l6ZV90LCBzaXplX3QpOwogICAgIHNpemVf
dCBkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmKTsKLSAgICBzaXplX3QgZGlkUmVjZWl2ZURhdGEo
UmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc2l6ZV90IGRpZFJlY2VpdmVEYXRhKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVIZWFkZXJGcm9tTXVs
dGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ29tcGxldGVUcmFuc2ZlcihDVVJMY29kZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWxUcmFuc2ZlcigpIG92ZXJyaWRlOwogICAgIHZv
aWQgZmluYWxpemVUcmFuc2ZlcigpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIHByaXZhdGU6CiAgICAg
TmV0d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtMb2FkTWV0cmljcygpOwogCiAgICAgLy8gRG93bmxv
YWQKLSAgICB2b2lkIHdyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpOworICAgIHZvaWQgd3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgY2xvc2VEb3dubG9hZEZpbGUo
KTsKICAgICB2b2lkIGNsZWFudXBEb3dubG9hZEZpbGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAppbmRl
eCAwOGM4NmM3ZDQ2ODRiYTZmNzhkNjE2YjY4ZDA2OTA0YzM3YTk2Njc3Li4zNDc5ODMyZjU3NmQ0
MTI4YWZhNTFjODE0MjRjY2ZkNzQxZGY2YWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaApAQCAtMzQsNyAr
MzQsNyBAQCBjbGFzcyBDdXJsUmVxdWVzdDsKIGNsYXNzIEN1cmxSZXNwb25zZTsKIGNsYXNzIE5l
dHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsUmVxdWVzdENs
aWVudCB7CiBwdWJsaWM6CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0
ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVz
cG9uc2UmJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJs
UmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY3Vy
bERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3Qm
LCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkRmFp
bFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZv
JiYpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCA4
MThkNWE5NWUzZTEyNGRjM2E3MmY3NDNlNWNkNDUzZDcxN2UwMTBmLi4zMDVkNGU1YzlmYzI3MDc3
NTc4N2IwZjlhOTE5NzljMDg4ODlhOGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZS5jcHAKQEAgLTE0MiwxNSArMTQyLDE2IEBAIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGU6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1CiAg
ICAgfSk7CiB9CiAKLXZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNl
aXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lk
IEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVx
dWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKGNhbmNlbGxlZE9yQ2xpZW50bGVzcygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRS
ZWNlaXZlRGF0YShtX2hhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKLSAg
ICBjbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoYnVmZmVyKSwg
YnVmZmVyLT5zaXplKCkpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNl
aXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGNv
bnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2Fk
TWV0cmljcyYmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oCmluZGV4
IDZkNTU4NjQ0NTJmZDQ2ZWU3ODAwZTkzMTIzYjEyOGJkYzY0Y2U0ODcuLmRhZjBhNTlhNGU1ODZk
NzExNGFiYjRlNWVmOWM1NGY2YThiZWZjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY3VybERpZFNlbmRE
YXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQg
bG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkUmVj
ZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpIGZpbmFsOwotICAgIHZv
aWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYm
KSBmaW5hbDsKKyAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgY3VybERpZENvbXBs
ZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYpIGZpbmFsOwogICAgIHZvaWQg
Y3VybERpZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiYsIENlcnRp
ZmljYXRlSW5mbyYmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4
IGJjNGRhYWZiZjIxYTE1YzBlNmRkMWFjZDQ2MjJhZmE1NmI3YjhkNWQuLjFmNGExOTMxMzMxMmM1
ZGQ2YTQ4YWQ1MzM5ZGZkMmMzYjVkZWMyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50
LmgKQEAgLTMxLDEyICszMSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIExlZ2Fj
eVByZXZpZXdMb2FkZXJDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxMZWdhY3lQcmV2aWV3TG9h
ZGVyQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TGVnYWN5UHJldmlld0xvYWRlckNs
aWVudCgpID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4
IDJiMzEyODU4NzAzMDNkMDliMDI0NTM2NWQ2MWFiODkxMTExZGFhYjUuLjgzZTY2ZDA4NjUzOTYx
OGMwMDJmYWIyMzAzZWI5Y2JmOTNjZTBjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTM1Niw3ICszNTYsNyBAQCBTdHJpbmcgUGFzdGVi
b2FyZDo6cmVhZFN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIHN0cnVj
dCBQYXN0ZWJvYXJkRmlsZUNvdW50ZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAg
ICAgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmluYWwgeyArK2NvdW50OyB9Ci0g
ICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYpIGZpbmFsIHsgKytjb3VudDsgfQorICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
ZmluYWwgeyArK2NvdW50OyB9CiAKICAgICB1bnNpZ25lZCBjb3VudCB7IDAgfTsKIH07CkBAIC05
NjYsNyArOTY2LDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3Jp
cHRvcihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBtZW1PYmo7
CiB9CiAKLXN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoU2hhcmVk
QnVmZmVyKiBkYXRhKQorc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVu
dChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEhHTE9CQUwgbWVtT2JqID0g
R2xvYmFsQWxsb2MoR1BUUiwgZGF0YS0+c2l6ZSgpKTsKICAgICBpZiAoIW1lbU9iaikgCkBAIC05
NzgsMTUgKzk3OCwxNSBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250
ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAg
aWYgKGRhdGEtPmRhdGEoKSkKLSAgICAgICAgQ29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICBD
b3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpOwogCiAgICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7CiAKICAgICByZXR1cm4g
bWVtT2JqOwogfQogCi1zdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29u
c3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSkKK3N0YXRp
YyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5n
JiBmaWxlTmFtZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAoZmls
ZU5hbWUuaXNFbXB0eSgpIHx8ICFkYXRhKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEwMzAsOCAr
MTAzMCw4IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBV
UkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkCiAgICAgICAgIC8vIFdyaXRlIHRoZSBk
YXRhIHRvIHRoaXMgdGVtcCBmaWxlLgogICAgICAgICBEV09SRCB3cml0dGVuOwogICAgICAgICBC
T09MIHRlbXBXcml0ZVN1Y2NlZWRlZCA9IEZBTFNFOwotICAgICAgICBpZiAoZGF0YS0+ZGF0YSgp
KQotICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVGaWxlKHRlbXBGaWxlSGFu
ZGxlLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSwgJndyaXR0ZW4sIDApOworICAgICAgICBp
ZiAoZGF0YS0+c2l6ZSgpKQorICAgICAgICAgICAgdGVtcFdyaXRlU3VjY2VlZGVkID0gV3JpdGVG
aWxlKHRlbXBGaWxlSGFuZGxlLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEt
PnNpemUoKSwgJndyaXR0ZW4sIDApOwogICAgICAgICBDbG9zZUhhbmRsZSh0ZW1wRmlsZUhhbmRs
ZSk7CiAgICAgICAgIGlmICghdGVtcFdyaXRlU3VjY2VlZGVkKQogICAgICAgICAgICAgcmV0dXJu
IDA7CkBAIC0xMDYzLDcgKzEwNjMsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2VUb0Rh
dGFPYmplY3QoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVVJMJiB1cmwpCiAgICAgaWYgKCFjYWNo
ZWRJbWFnZSB8fCAhY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJl
cigpKSB8fCAhY2FjaGVkSW1hZ2UtPmlzTG9hZGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFNoYXJlZEJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJl
cihlbGVtZW50LnJlbmRlcmVyKCkpLT5kYXRhKCk7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogaW1hZ2VCdWZmZXIgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihlbGVtZW50LnJl
bmRlcmVyKCkpLT5kYXRhKCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlciB8fCAhaW1hZ2VCdWZmZXIt
PnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuY3BwCmluZGV4IDQxMWVkYmIzNTE3Yjg0OGZhYzA2M2QxOWU4Y2Q5NWVjMDAzN2Nk
NjEuLjg0ZmEyOWNlMWYzMDBmZTI5MGIwNDE0NjQ4ZjBmNzI5MGE3Y2JlYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wg
TW9ja0NETUZhY3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
KQogICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGtleVN5c3RlbSwgIm9yZy53ZWJr
aXQubW9jayIpOwogfQogCi12b2lkIE1vY2tDRE1GYWN0b3J5OjphZGRLZXlzVG9TZXNzaW9uV2l0
aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4mJiBrZXlzKQor
dm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcm
IGlkLCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIGtleXMpCiB7CiAgICAg
YXV0byBhZGRSZXN1bHQgPSBtX3Nlc3Npb25zLmFkZChpZCwgV1RGTW92ZShrZXlzKSk7CiAgICAg
aWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIE1vY2tDRE1G
YWN0b3J5OjphZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxS
ZWY8U2hhcmVkQgogICAgICAgICB2YWx1ZS5hcHBlbmQoV1RGTW92ZShrZXkpKTsKIH0KIAotVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNz
aW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpCitWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiBNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0
IFN0cmluZyYgaWQpCiB7CiAgICAgYXV0byBpdCA9IG1fc2Vzc2lvbnMuZmluZChpZCk7CiAgICAg
aWYgKGl0ID09IG1fc2Vzc2lvbnMuZW5kKCkpCkBAIC04Myw3ICs4Myw3IEBAIFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJ
RChjb25zdCBTdHJpCiAgICAgcmV0dXJuIFdURk1vdmUoaXQtPnZhbHVlKTsKIH0KIAotY29uc3Qg
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiogTW9ja0NETUZhY3Rvcnk6OmtleXNGb3JTZXNzaW9u
V2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0Citjb25zdCBWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiogTW9ja0NETUZhY3Rvcnk6OmtleXNGb3JTZXNzaW9uV2l0aElEKGNv
bnN0IFN0cmluZyYgaWQpIGNvbnN0CiB7CiAgICAgYXV0byBpdCA9IG1fc2Vzc2lvbnMuZmluZChp
ZCk7CiAgICAgaWYgKGl0ID09IG1fc2Vzc2lvbnMuZW5kKCkpCkBAIC0yMDIsNyArMjAyLDcgQEAg
Ym9vbCBNb2NrQ0RNOjpzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QKICAgICByZXR1cm4gbV9mYWN0
b3J5ICYmIG1fZmFjdG9yeS0+c3VwcG9ydHNTZXNzaW9ucygpOwogfQogCi1ib29sIE1vY2tDRE06
OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBT
aGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAorYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAgICAgaWYgKCFzdXBwb3J0ZWRJbml0RGF0YVR5
cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MjExLDEyICsyMTEsMTMgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmUKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShj
b25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7Ci0gICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVND
SUkocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQorICAgIGF1dG8gYnVmZmVyID0g
cmVzcG9uc2UubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJ
SShidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKHJlc3BvbnNl
LmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOworICAgIFZlY3RvcjxTdHJpbmc+
IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSku
c3BsaXQoJyAnKTsKIAogICAgIGlmICghcmVzcG9uc2VBcnJheS5jb250YWlucyhTdHJpbmcoInZh
bGlkLXJlc3BvbnNlIl9zKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjY5LDkgKzI3
MCw5IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24o
Y29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0CiAgICAgY2FsbGJhY2soaW5pdGlhbGl6ZSgp
KTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxT
aGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQor
dm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKLSAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+ZGF0
YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsKKyAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3Ry
aW5nVmlldyhjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjZXJ0aWZpY2F0
ZS0+c2l6ZSgpKTsKIAogICAgIGNhbGxiYWNrKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY2VydGlm
aWNhdGVTdHJpbmdWaWV3LCAidmFsaWQiKSA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiB9CkBAIC0y
OTcsNyArMjk4LDcgQEAgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6TW9ja0NETUluc3RhbmNlU2Vz
c2lvbihXZWFrUHRyPE1vY2tDRE1JbnN0YW5jZT4mJiBpbnN0YW4KIHsKIH0KIAotdm9pZCBNb2Nr
Q0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlw
ZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNl
U2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5p
dERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIE1vY2tDRE1GYWN0b3J5
KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFuY2UtPmZhY3RvcnkoKSA6IG51bGxwdHI7
CiAgICAgaWYgKCFmYWN0b3J5KSB7CkBAIC0zMjMsNyArMzI0LDcgQEAgdm9pZCBNb2NrQ0RNSW5z
dGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVMKICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShsaWNlbnNlLmRhdGEo
KSwgbGljZW5zZS5sZW5ndGgoKSksIHNlc3Npb25JRCwgZmFsc2UsIFN1Y2Nlc3NWYWx1ZTo6U3Vj
Y2VlZGVkKTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1vY2tD
RE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQs
IExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgTW9ja0NETUZhY3RvcnkqIGZh
Y3RvcnkgPSBtX2luc3RhbmNlID8gbV9pbnN0YW5jZS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAg
ICBpZiAoIWZhY3RvcnkpIHsKQEAgLTMzMSw3ICszMzIsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5j
ZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VU
eXBlLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9u
c2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3Bs
aXQoJyAnKTsKKyAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmluZyhyZXNw
b25zZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgn
ICcpOwogCiAgICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1m
b3JtYXQiX3MpKSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCmluZGV4IGY1Y2RhNTA1Y2YyYTMzYzEwNWYwMjVj
OTdjOTM1MGE5Njg2OThlMWUuLmQ5NmMxNTZlZTRkMjc5MWI4YjA5OThkYWY5NDBlYzc1Mzc4MDdi
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTc3LDkgKzc3
LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYg
aWQpIHsgcmV0dXJuIG1fc2Vzc2lvbnMuY29udGFpbnMoaWQpOyB9CiAgICAgdm9pZCByZW1vdmVT
ZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIHsgbV9zZXNzaW9ucy5yZW1vdmUoaWQpOyB9
Ci0gICAgdm9pZCBhZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4mJik7Ci0gICAgY29uc3QgVmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+Pioga2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3Q7Ci0gICAg
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiByZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29u
c3QgU3RyaW5nJiBpZCk7CisgICAgdm9pZCBhZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0
cmluZyYgaWQsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIGNv
bnN0IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KiBrZXlzRm9yU2Vzc2lvbldp
dGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdDsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiByZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBp
ZCk7CiAKIHByaXZhdGU6CiAgICAgTW9ja0NETUZhY3RvcnkoKTsKQEAgLTk2LDcgKzk2LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fY2FuQ3JlYXRlSW5zdGFuY2VzIHsgdHJ1ZSB9OwogICAgIGJv
b2wgbV9zdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcyB7IHRydWUgfTsKICAgICBib29sIG1fc3Vw
cG9ydHNTZXNzaW9ucyB7IHRydWUgfTsKLSAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZjxT
aGFyZWRCdWZmZXI+Pj4gbV9zZXNzaW9uczsKKyAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IG1fc2Vzc2lvbnM7CiB9OwogCiBjbGFzcyBNb2Nr
Q0RNIDogcHVibGljIENETVByaXZhdGUgewpAQCAtMTIxLDggKzEyMSw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2
ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMo
KSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7
CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Np
b25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAgIFdlYWtQdHI8TW9ja0NETUZh
Y3Rvcnk+IG1fZmFjdG9yeTsKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6Ok1vY2s7IH0KICAgICB2b2lkIGluaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxv
d0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2Fs
bGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVk
QnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBm
aW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsOwogICAgIFJl
ZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKQEAgLTE1NCw4
ICsxNTQsOCBAQCBwdWJsaWM6CiAgICAgTW9ja0NETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRyPE1v
Y2tDRE1JbnN0YW5jZT4mJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwor
ICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsK
ICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNz
aW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZv
aWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNl
c3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGZjMTI3YjdiNjdiZWE3MzQ0NjNjZDJkNWIwNzU2YjU5
YmViYTU4YWUuLjA1OWYzYTM4NmI2Y2Y1ZmE3OWIzYzE4OTcwMTUzMTNmN2NkYjRlZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0xMTAsNyAr
MTEwLDcgQEAgdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6ZmluaXNoZWRBZGRpbmdEYXRhKCkKICAg
ICBtYXliZURldGVybWluZVN0YXR1cyhEZWNpc2lvblBvaW50OjpBZnRlckZpbmlzaGVkQWRkaW5n
RGF0YSk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE1vY2tDb250ZW50RmlsdGVyOjpyZXBsYWNl
bWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE1vY2tDb250ZW50
RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChkaWRCbG9ja0Rh
dGEoKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVwbGFjZW1lbnREYXRh
LmRhdGEoKSwgbV9yZXBsYWNlbWVudERhdGEuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXIuaAppbmRleCA0MTFhMzAwOTQ3YjUzOWUyNmFhNmM2NGEwMDkz
MjkyZTlmZmJlNmI5Li42MzVhYzg0YmU3OTM4NDdhYTU3MjEzZDAxZmZjMWU3NGY3NmI3NTkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCkBAIC00Miw3ICs0
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92
ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEo
KSBjb25zdCBvdmVycmlkZTsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgQ29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkgY29uc3Qgb3ZlcnJpZGU7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAppbmRleCA2ZDQ4
YmQwMmQxYzkxZjdlZWQ4NjRhMTZjZDc1NmJiMDc3ZDY1NTJhLi41Zjg1NDVlYmE1YjBlN2I4YmJh
YmE1YzY5M2MyYTQzNDE4OGIyYmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1NjcmlwdEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZm
ZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNjcmlwdEJ1ZmZl
cjo6U2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGF1dG8gdXRmOCA9
IHN0cmluZy51dGY4KCk7Ci0gICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4
LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIuYXBwZW5kKHV0ZjguZGF0YSgp
LCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHko
KQpAQCAtNDYsMTQgKzQ2LDEzIEBAIFNjcmlwdEJ1ZmZlciBTY3JpcHRCdWZmZXI6OmVtcHR5KCkK
ICAgICByZXR1cm4gU2NyaXB0QnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9OwogfQog
Ci0KIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
YnVmZmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7Ci0gICAgbV9idWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7
CisgICAgbV9idWZmZXIuZ2V0KCktPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7
CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoc2VnbWVudC5kYXRhKCks
IHNlZ21lbnQuc2l6ZSgpKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKQEAgLTYxLDE1ICs2MCwxMyBAQCBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNv
bnN0CiAKIGJvb2wgU2NyaXB0QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXItPmhhc09uZVNlZ21l
bnQoKSAmJiBtX2J1ZmZlci0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0
YSgpOworICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci5nZXQoKS0+aGFzT25lU2VnbWVu
dCgpICYmIG1fYnVmZmVyLmdldCgpLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZp
bGVEYXRhKCk7CiB9CiAKIHZvaWQgU2NyaXB0QnVmZmVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCiB7Ci0gICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9i
dWZmZXItPmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9idWZmZXIu
YXBwZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAogYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwgY29uc3QgU2NyaXB0QnVmZmVyJiBiKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKaW5kZXggYjM5ZDljMTMwMzMwMzExYzA0ZDdmMzc5NmI3
MWEwNDMxMzRjNjY0Ni4uZmQyYzFhZTJmNjNiNjBkNzRjMzBkMjQyYTk4OWEwYmZkOTFkZTQ5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCkBAIC0zOCw3ICszOCw3IEBAIGNs
YXNzIFNjcmlwdEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgU2NyaXB0QnVmZmVyKCkgPSBkZWZhdWx0
OwogCi0gICAgU2NyaXB0QnVmZmVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAg
IFNjcmlwdEJ1ZmZlcihSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAg
ICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogICAgIHsKICAgICB9CkBAIC00OCwx
NyArNDgsMTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNjcmlwdEJ1
ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwotICAg
IFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0K
KyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQogCi0gICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29w
eSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRC
dWZmZXI+KG1fYnVmZmVyLT5jb3B5KCkpIDogbnVsbHB0cik7IH0KKyAgICBTY3JpcHRCdWZmZXIg
aXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLmNvcHkoKSkgOiBudWxscHRyKTsg
fQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVy
OyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyIHx8ICFtX2J1
ZmZlci0+c2l6ZSgpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIuaXNFbXB0eSgpOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zU2luZ2xl
RmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdDsKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcm
KTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsgLy8gQ29u
dGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgorICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
bV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KIH07CiAKIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBTY3JpcHRCdWZmZXImKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApp
bmRleCA0MzNkOWUxYTQ1YzI5ODg1NDJiMDVlNzRiNDcxN2E3NzA1NzI4YmI2Li44MTU4MTI4YTYz
MTg1OWNlNzM0NzNmYmM1YzIzYmU5ZDQ1Y2IwZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5j
bHVkZSAiRm9udFNlbGVjdGlvbkFsZ29yaXRobS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVy
T3B0aW9ucy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpbmNsdWRlICJXT0ZGRmlsZUZvcm1hdC5oIgogI2luY2x1ZGUgIldvcmtlckds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIgpAQCAtNzgs
OSArNzcsMTMgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29ya2VyR2xvYmFs
U2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVu
c3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9mb250
Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7
Ci0gICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkobV9kYXRhKTsKLSAgICAgICAg
aWYgKG1fZGF0YSkgewotICAgICAgICAgICAgbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqbV9kYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZp
ZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udGlndW91
c0RhdGE7CisgICAgICAgIGlmIChtX2RhdGEpCisgICAgICAgICAgICBjb250aWd1b3VzRGF0YSA9
IG1fZGF0YS50YWtlQXNDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZO
ZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAgICBpZiAoY29udGlndW91c0RhdGEpIHsK
KyAgICAgICAgICAgIG1fZGF0YS5hcHBlbmQoKmNvbnRpZ3VvdXNEYXRhKTsKKyAgICAgICAgICAg
IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
KmNvbnRpZ3VvdXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsK
ICAgICAgICAgICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhKQogICAgICAgICAgICAg
ICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7CiAgICAgICAgIH0KQEAgLTExNywxMCArMTIwLDcg
QEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmICghbV9kYXRhKQotICAgICAgICBtX2RhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOwotCi0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7
CisgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KIAogdm9pZCBXb3JrZXJG
b250TG9hZFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVl
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKaW5k
ZXggYjlmY2ZiMWQ2ZmVhOGFkNWU3ODBiZGVlYmM1YzZlMDRhMWU4NjNjNy4uZGFiNzNmYzdiMWE5
M2VkNGUzZmViMzFkNjcwOThkOTliNTE3NmEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJGb250TG9hZFJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIK
KyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50LmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBA
IC0zNiw3ICszNyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udENyZWF0aW9u
Q29udGV4dDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAogc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9y
bURhdGE7CkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgRm9udExvYWRSZXF1ZXN0Q2xp
ZW50KiBtX2ZvbnRMb2FkUmVxdWVzdENsaWVudCB7IG51bGxwdHIgfTsKIAogICAgIFdlYWtQdHI8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRh
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlckZldGNoLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAppbmRleCBlYjI2NmI2YzA3ZTY3M2Q5MTY2Y2Fj
ZTZiMzM5MTlkODBlYmJmMzFjLi4wOTc1NDNlMWIzYjMwZmYzMTQ3ZDkyMzJhNThjZTRhOWU2MmYz
ZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyRmV0Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlOwogY2xhc3MgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIFNl
cnZpY2VXb3JrZXJGZXRjaCB7CiBjbGFzcyBDbGllbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8Q2xpZW50LCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CkBAIC01MSw3ICs1
MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3Rpb24o
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4m
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApp
bmRleCA4OWE4NzVmOGFmYzBkNjIzNTVhYzYyMjlhNjRjMWNhNDNkMTg1NjUyLi45YThmYjM1Y2E1
MzYxMDViYjZkNmZjNDZlZTEyMjQ1OTMzZjcwYmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC0x
MjcsNyArMTI3LDggQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUoY29u
c3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXMKICAgICB9CiAKICAgICAvLyBG
SVhNRTogRG8gd2UgbmVlZCB0byBkaXNhYmxlIGZpbGUgbWFwcGluZyBpbiBtb3JlIGNhc2VzIHRv
IGF2b2lkIGhhdmluZyB0b28gbWFueSBmaWxlIGRlc2NyaXB0b3JzIG9wZW4/Ci0gICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmls
ZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hhcmVkQnVm
ZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShz
Y3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNl
RmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6
OlllcyA6IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICByZXR1cm4g
YnVmZmVyOwogfQogCiB2b2lkIFNXU2NyaXB0U3RvcmFnZTo6Y2xlYXIoY29uc3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAKaW5kZXggZTBjZGM3MjM0YzU0YTEzZGY3MGE2ODA1YzI4MWI5NDgwNTQ1
YWUyNi4uOWIxMTJiOWRiMmNkODRkMDMyZjU5ZGFmYThlOGUzOGUwNzBlNTNmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC00OCw3ICs0OCw2IEBACiAjaW5jbHVkZSAi
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5Qb2xp
Y3kuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgog
I2luY2x1ZGUgIlN0cmluZ0FkYXB0b3JzLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rl
ci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKQEAgLTIwOCw3ICsyMDcsNyBAQCBS
ZWY8QmxvYj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYigpCiAgICAgLy8gRklY
TUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFy
ZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGE7CiAgICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICBkYXRh
ID0gc3RkOjpleGNoYW5nZShtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciwgbnVsbHB0ciktPmV4dHJh
Y3REYXRhKCk7CisgICAgICAgIGRhdGEgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci50YWtlKCkt
PmV4dHJhY3REYXRhKCk7CiAgICAgU3RyaW5nIG5vcm1hbGl6ZWRDb250ZW50VHlwZSA9IEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZShyZXNwb25zZU1JTUVUeXBlKEZpbmFsTUlNRVR5cGU6Olll
cykpOyAvLyByZXNwb25zZU1JTUVUeXBlIGRlZmF1bHRzIHRvIHRleHQveG1sIHdoaWNoIG1heSBi
ZSBpbmNvcnJlY3QuCiAgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIFdURk1vdmUoZGF0YSksIG5vcm1hbGl6ZWRDb250ZW50VHlwZSk7CiB9CkBAIC0yMTgs
OSArMjE3LDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVz
cG9uc2VBcnJheUJ1ZmZlcigpCiAgICAgQVNTRVJUKHJlc3BvbnNlVHlwZSgpID09IFJlc3BvbnNl
VHlwZTo6QXJyYXlidWZmZXIpOwogICAgIEFTU0VSVChkb25lV2l0aG91dEVycm9ycygpKTsKIAot
ICAgIGF1dG8gcmVzdWx0ID0gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPyBtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSA6IEFycmF5QnVmZmVyOjpjcmVhdGUo
bnVsbHB0ciwgMCk7Ci0gICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIgPSBudWxscHRyOwotICAg
IHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLnRha2VB
c0FycmF5QnVmZmVyKCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0Ojpz
ZXRUaW1lb3V0KHVuc2lnbmVkIHRpbWVvdXQpCkBAIC03NDEsNyArNzM4LDcgQEAgdm9pZCBYTUxI
dHRwUmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMoKQogICAgIG1fcmVzcG9uc2VFbmNvZGlu
ZyA9IFN0cmluZygpOwogICAgIG1fY3JlYXRlZERvY3VtZW50ID0gZmFsc2U7CiAgICAgbV9yZXNw
b25zZURvY3VtZW50ID0gbnVsbHB0cjsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51
bGxwdHI7CisgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIucmVzZXQoKTsKICAgICBtX3Jlc3Bv
bnNlQ2FjaGVJc1ZhbGlkID0gZmFsc2U7CiB9CiAKQEAgLTEwNjUsOSArMTA2Miw3IEBAIHZvaWQg
WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBs
ZW4pCiAgICAgICAgIG1fcmVzcG9uc2VCdWlsZGVyLmFwcGVuZChtX2RlY29kZXItPmRlY29kZShk
YXRhLCBsZW4pKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gQnVmZmVyIGJpbmFyeSBkYXRhLgot
ICAgICAgICBpZiAoIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICAgICAgbV9iaW5h
cnlSZXNwb25zZUJ1aWxkZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlci0+YXBwZW5kKGRhdGEsIGxlbik7CisgICAgICAgIG1fYmluYXJ5
UmVzcG9uc2VCdWlsZGVyLmFwcGVuZChkYXRhLCBsZW4pOwogICAgIH0KIAogICAgIGlmICghbV9l
cnJvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCAwNDg0NjI2YjJlNWRm
ZGRhN2NiMTZjNGY1NTIyZGVmODRjNGFjMTg2Li4yZDEzYmVjMzk0NjQ0OGI5YjRmOTI1ZDMyYmQ4
NmJhMmQ4MDM3NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMjYsNiAr
MjYsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiRm9ybURhdGEuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0
dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtNDUsNyArNDYsNiBAQCBj
bGFzcyBCbG9iOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVj
b2RlcjsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7CiBjbGFzcyBVUkxTZWFyY2hQYXJhbXM7CkBA
IC0yMzcsNyArMjM3LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9yZXNw
b25zZURvY3VtZW50OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
cjsKIAogICAgIFN0cmluZ0J1aWxkZXIgbV9yZXNwb25zZUJ1aWxkZXI7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5
LmNwcAppbmRleCA1NzMwNjdlM2RkMDUwZmViN2M1NzlkMDAxMDJlZTlmNjA0NWI1MzEzLi4zMWMy
ZDc2ZjJlZTFiOWQyNDliMDAxYjdlZmY4OTJlYzJhNzQ1NmNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3Bw
CkBAIC02MSw3ICs2MSw3IEBAIFJlbW90ZUNETUluc3RhbmNlUHJveHk6On5SZW1vdGVDRE1JbnN0
YW5jZVByb3h5KCkKICAgICBtX2luc3RhbmNlLT5jbGVhckNsaWVudCgpOwogfQogCi12b2lkIFJl
bW90ZUNETUluc3RhbmNlUHJveHk6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2
ZWQoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQordm9p
ZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJl
Y2VpdmVkKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGEpCiB7CiAgICAgaWYgKCFtX2NkbSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5
LmgKaW5kZXggOGU3M2QzZDlhNjRiOThiZmMwMDkzNmNkNDdjNGMyNWE5Mjc5ZjJjOC4uMDJjNWNk
MzdhZTU0ODAyZjZkMGM4ZGNjY2IwYmE4MGNmMzM4OGMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCkBAIC02
Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRy
PFJlbW90ZUNETVByb3h5PiYmLCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+JiYsIFVuaXF1ZVJl
ZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+JiYsIFJlbW90ZUNETUluc3RhbmNlSWRl
bnRpZmllcik7CiAKICAgICAvLyBDRE1JbnN0YW5jZUNsaWVudAotICAgIHZvaWQgdW5yZXF1ZXN0
ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRp
b25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKaW5kZXggZTU3NjZjMjMzNGNmZDM4
OTMxMGNkNGIyMTcyM2NhYmEzNzQyZmM3Yy4uZGU4MjczYjljZjUwMGE0ZDY2YWExNDRlZGUwMjAx
ZWVmMWVkODYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCkBAIC03MCw3ICs3
MCw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlIHR5cGUsIEF0b21TdHJpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fc2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0
YS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxl
dGlvbildIChSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3Vj
Y2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uLT5yZXF1ZXN0TGlj
ZW5zZSh0eXBlLCBpbml0RGF0YVR5cGUsIGluaXREYXRhLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxs
KCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRz
SW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2Nl
ZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShtZXNzYWdlKSwgc2Vz
c2lvbklkLCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VT
ZXNzaW9uOjpTdWNjZWVkZWQpOwogICAgIH0pOwogfQpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OmNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgQ2xvc2VTCiAKIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6
OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0
eXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYgY29tcGxldGlvbikKIHsKLSAgICBtX3Nl
c3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSwgW2NvbXBsZXRpb24gPSBX
VEZNb3ZlKGNvbXBsZXRpb24pXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Im
JiBrZXlTdGF0dXNlcywgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBleHBpcmVk
U2Vzc2lvbnNEYXRhLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQp
IG11dGFibGUgeworICAgIG1fc2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0
eXBlLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChDRE1JbnN0YW5jZVNlc3Np
b246OktleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4mJiBleHBpcmVkU2Vzc2lvbnNEYXRhLCBDRE1JbnN0YW5jZVNl
c3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICBzdGQ6Om9w
dGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNl
OwogICAgICAgICBpZiAoZXhwaXJlZFNlc3Npb25zRGF0YSkKICAgICAgICAgICAgIGV4cGlyZWRT
ZXNzaW9uRGF0YVJlZmVyZW5jZSA9IElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKCpleHBp
cmVkU2Vzc2lvbnNEYXRhKSk7CkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYga2V5
U3RhdHUKICAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpVcGRhdGVLZXlTdGF0dXNlcyhXVEZN
b3ZlKGtleVN0YXR1c2VzKSksIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIHR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHk6OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFtX2NkbSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaAppbmRleCA4YTYxZjlkNWZhYmM4NDg2YTdhMGU4NjBm
NGM2MzEyYzBiNDQ1NTE0Li5mZTczMDk3MTMxZTBiYjIwYTUwMDFlMTUwMTYwMmQ2NTE4NmIzMDkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaApAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRl
OgogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50CiAgICAgdm9pZCB1cGRhdGVLZXlT
dGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJikgZmluYWw7Ci0gICAgdm9pZCBzZW5kTWVzc2FnZShX
ZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBtZXNz
YWdlKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBl
LCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsK
ICAgICB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUGxh
dGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgZmluYWwgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5j
cHAKaW5kZXggOWFiMzU3NWY0YzNiNTU5NTU1YjliODdiMjMzNzFiMWIxYTY2ZGMxNy4uZjdjYjZh
NjNlYjkzM2FiZDRkNDUzYTIyYWIyOTRmMTMwMzIzMmIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCkBAIC02MywxMiArNjMsMTIg
QEAgUmVtb3RlQ0RNUHJveHk6OlJlbW90ZUNETVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9y
eVByb3h5PiYmIGZhY3RvcnksIHN0ZDo6dW4KIAogUmVtb3RlQ0RNUHJveHk6On5SZW1vdGVDRE1Q
cm94eSgpID0gZGVmYXVsdDsKIAotYm9vbCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0RGF0
YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCitib29s
IFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUs
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgcmV0dXJuIG1fcHJp
dmF0ZS0+c3VwcG9ydHNJbml0RGF0YSh0eXBlLCBkYXRhKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gUmVtb3RlQ0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVy
JiByZXNwb25zZSkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBSZW1vdGVDRE1Qcm94
eTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25z
ZSkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Q
cm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgK
aW5kZXggNjkyNGU3NGUzZjUwMTFiZTIxNWJlNGJkOTZiMjM0ODI2NDcwZjQyMy4uM2I2NmM3NzU3
ODcwNjllOTc2ZWUwNjRmOTZmZjA3YzBmNzEyYTkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBlbnVtIGNsYXNzIENETVJl
cXVpcmVtZW50IDogdWludDhfdDsKIGVudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgOiB1aW50OF90
Owogc3RydWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb247CkBAIC01OCw4ICs1OCw4IEBAIHB1
YmxpYzoKIAogICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eSogZmFjdG9yeSgpIGNvbnN0IHsgcmV0
dXJuIG1fZmFjdG9yeS5nZXQoKTsgfQogCi0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYgcmVzcG9uc2UpOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBB
dG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAg
IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKTsKICAgICBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaAppbmRleCBlMmNkMDVkN2NjNzRmMjBlYzY5ZmFk
ZmUzZWUwODU3NTkyYWQ4NzliLi5kZThmNmRmNTVhNmUxZmE4YmU5NjZmOTQxZTA3ZmUyZjVjNTAy
MWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNUHJveHkuaApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eS5oCmluZGV4IGYxNGM2MjdmNjU5M2UxYTg3OGQwZjQ1OTkyYjNjNDFiMjIyYzdm
MDAuLjE1NDZiZGZkZmRjZjA5MTA4Nzg5NDRmMzQwNzk2N2E3YWIzOGJmODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5LmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIExlZ2FjeUNETTsKIGNsYXNzIExlZ2FjeUNETVNlc3Npb247Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgSVBDIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlLmNwcAppbmRleCBjNDVlNTI1NWQ2N2I1MmM3YWUxMDQ0OTk4OGNlMDE5MGM3ZmZiNTM4
Li42MTdmNDc2ODk1NjQyZGVjMjMyNTRiNTQwZWU4MTkxMWFjNGEyZGY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3Bw
CkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQodWlu
dDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlCiAgICAgICAgIG1fY2xp
ZW50LT5kYXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQog
Ci12b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChSZWY8U2hhcmVkQnVmZmVy
PiYmIGRhdGEpCit2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGlmIChtX2NsaWVudCkKICAgICAg
ICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaApp
bmRleCBkMTNkMjVmNjVmMDIyNGE2Yzc2N2Y2OWE0ZDQxOWNkMDUzYmI3OTVkLi41YjdhN2UyYTc0
MjQ0MzJkODZjYjI4YTFiZTcxNzE4YTE2NzM3NWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKQEAgLTM0LDcgKzM0LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3Bv
bnNlUmVjZWl2ZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYp
OwogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIGRhdGFTZW50KHVpbnQ2
NF90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggN2U1NzJiM2E3
NGEyMDI3ZTc0Y2FhNzY3MmU1MmRhMGFmODM0MjA3Mi4uZTgzZjkxNDNkMjBhNzJlMmJlNGZmY2Jm
ZWQxM2IwYmI0ZGQzMWUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3LDggQEAgdm9p
ZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1v
dGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV93cml0ZXItPmZldGNoRGF0YShbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1dG8g
dGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBhdXRvKiBwb2ludGVyID0gZGF0YSA/IGRhdGEt
PmRhdGEoKSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/IGRhdGEtPm1h
a2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigpOworICAgICAg
ICBhdXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOwogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVyLCBkYXRh
ID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9h
ZC5oCmluZGV4IDUyY2M1ZGExMjFhMmZiNTlkOGNmMDU5M2I2ODUwOWZkNjU1YzBjZGMuLjcxZmQw
MjIyOWJiYjFjNTczMjZmZGZjZmUyNmMxMWY3NjFhYmNmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCkBA
IC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JD
cmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9y
Q3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBvdmVycmlkZTsKLSAgICB2b2lk
IGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKKyAgICB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlIHsgfTsKICAg
ICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDNmMzllYjMyZjFhYTgwNzY3ODVk
YTc5ZWUxMWRhZDhmMGMzMjZiNzkuLmQ4OTIwZTk4NzY0ZmQ5YjY0YjljZGRjNjBhMWQ4NGQ2MTli
MmQ0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lk
IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6
VXNlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVE
YXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpCit2b2lkIE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpCiB7CiAgICAgQ09SU19DSEVDS0VSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0
YSIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggYmJiMTQ2MmEzMTYxZTJmY2U5ZWE1Nzg0
NGIxOWI5M2U2MTljODFiMC4uZTExYmY1NjMxOTA3YWU0NzMzNmVmODVhNWQyMmU4ODM1NzQ2NTFi
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1By
ZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVy
JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0
aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENv
bXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVp
bnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQp
IGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKaW5kZXggZDYwMThmNjEzODNhZTNhNTFl
OWQ0NzIyY2Y2YTYwZTJkOGI4N2E3ZC4uZTA0OWU1YjEyZGRlNWZlNTFiNDY5NTUyODlhN2E3ZjY5
OTgyYWZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFzay5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBs
ZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5n
ZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExT
LCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRM
ZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9y
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRv
dGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5kZXggYmFjMDIyYWI0NTQzMGY2NTFiMTg5YWMwMTIw
N2EwNjA2MDhjMTY3MS4uNzk3NWQ0MWJhZDg5MTVmZWVkYmRhYjE1NTRlODFlMWRiMjAzMGY4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKQEAgLTI1
Niw3ICsyNTYsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdAogICAgIG1fY2xpZW50LmdldCgp
LmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgdGhlIGVuY29kZWQgZGF0YSBsZW5ndGgsIG5vdCB0aGUgZGVjb2RlZCBkYXRh
IGxlbmd0aC4KICAgICBhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRleCBjMzc3M2M5ODc4NTUzY2U1MzRkMDU0
YWJmZmRkZWJiMjllZTA4NGQyLi5lZTVlYjAwNmFhMzc5Yjc4ZmNiYzBiZDE3NGUzMmJkNjM5Zjk1
ZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCkBAIC04
MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2
ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVk
TGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0
ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5h
bDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRf
dCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENs
aWVudC5oCmluZGV4IDBhNWY2NmJkOTY3ZWM5ZmRmNjY0ZTUyZTVhZjM5NGU0OGVjZTFmN2IuLjM0
OGNmZmI5ZThlMjVlZTgzYmJiMzlhMDJjZDNjZjZkMjg1NGQzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKQEAgLTMyLDcgKzMyLDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwog
Y2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgUG9saWN5QWN0aW9uIDogdWludDhfdDsK
IH0KIApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmRE
YXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3Rh
bEJ5dGVzVG9CZVNlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVk
UmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJl
Y3RSZXNwb25zZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQmxvY2tBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSgpIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBlNTBjZjRhYmJlNTY0ZTRjYTNmYjcy
NmNhYTlkNTY5YzU0YjA5ZDcyLi5lN2ZiMDUwYzAwMzZlMDM2ZTVmNmVjMTM5NTYyNTNkMzFlNDY1
MmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04NywxNCArODcsMTQgQEAgc3RydWN0IE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSB7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJv
cjsKIH07CiAKLXN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSYgZGF0YSwgY29uc3QgU2hhcmVk
QnVmZmVyKiBidWZmZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3N0YXRp
YyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6U3luY2hyb25vdXNMb2FkRGF0YSYgZGF0YSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogYnVmZmVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgQVNT
RVJUKGRhdGEuZGVsYXllZFJlcGx5KTsKICAgICBBU1NFUlQoIWRhdGEucmVzcG9uc2UuaXNOdWxs
KCkgfHwgIWRhdGEuZXJyb3IuaXNOdWxsKCkpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3Bv
bnNlQnVmZmVyOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIHJl
c3BvbnNlQnVmZmVyLmFwcGVuZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAg
ICAgICByZXNwb25zZUJ1ZmZlci5hcHBlbmQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKTsKIAogICAgIGRhdGEucmVzcG9uc2Uuc2V0RGVwcmVjYXRlZE5l
dHdvcmtMb2FkTWV0cmljcyhCb3g8TmV0d29ya0xvYWRNZXRyaWNzPjo6Y3JlYXRlKG1ldHJpY3Mp
KTsKIApAQCAtMzA2LDEwICszMDYsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0
YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICAg
ICAgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAKICAgICAgICAgaWYgKGlzU3luY2hyb25v
dXMoKSB8fCBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPiAwX3MpCi0gICAgICAg
ICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgICAg
ICBtX2J1ZmZlcmVkRGF0YS5lbXB0eSgpOwogCiAgICAgICAgIGlmIChjYW5Vc2VDYWNoZShyZXF1
ZXN0KSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5lbXB0eSgpOwog
ICAgIH0KIAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzID0gbV9wYXJhbWV0
ZXJzOwpAQCAtNzM0LDE2ICs3MzQsMTYgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICAg
ICAgJiYgbV9yZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSA+IHN0YXRpY19jYXN0PGxv
bmcgbG9uZz4oMSAqIE1CKQogICAgICAgICAmJiBpc0ZldGNoT3JYSFIocmVzb3VyY2VMb2FkSW5m
bykKICAgICAgICAgJiYgaXNNZWRpYU1JTUVUeXBlKG1fcmVzcG9uc2UubWltZVR5cGUoKSkpIHsK
LSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAg
ICBtX2J1ZmZlcmVkRGF0YS5lbXB0eSgpOwogICAgICAgICBtX3BhcmFtZXRlcnMubWF4aW11bUJ1
ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJTdHJhdGVneTo6bWVkaWFNYXhpbXVtQnVmZmVyaW5nVGlt
ZTsKICAgICB9CiAKICAgICAvLyBGb3IgbXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNl
aXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5n
IHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZy4KICAgICBpZiAoIWlzU3luY2hyb25vdXMo
KSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhID0g
bnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGEucmVzZXQoKTsKIAogICAgIGlmIChtX3Jl
c3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBu
dWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAKICAgICBp
ZiAobV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikgewogICAgICAgICBib29sIHZhbGlkYXRpb25T
dWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90
IE1vZGlmaWVkCkBAIC04NTgsNyArODU4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNlbmREaWRSZWNlaXZlUmVzcG9uc2VQb3RlbnRpYWxseUluTmV3QnJvd3NpbmdDb250ZXgKICAg
ICB9KTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkKIHsKICAgICBpZiAoIW1fbnVtQnl0ZXNSZWNlaXZlZCkKICAgICAgICAgTE9BREVSX1JFTEVB
U0VfTE9HKCJkaWRSZWNlaXZlQnVmZmVyOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChyZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoPSVkKSIsIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwpAQCAt
ODY5LDEwICs4NjksMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXAKICAgICBpZiAobV9idWZm
ZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4g
Y2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBj
YWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSBtX2Nh
Y2hlLT5jYXBhY2l0eSgpIC8gODsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUt
PnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAg
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAg
ICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkg
PD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZmZXJlZERh
dGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNo
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTg4MCw3ICs4ODAsNyBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
aW50IHJlcAogICAgIHVuc2lnbmVkIGVuY29kZWREYXRhTGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6
ZSgpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRh
LT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEuYXBwZW5kKGJ1
ZmZlci5nZXQoKSk7CiAgICAgICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggKz0g
ZW5jb2RlZERhdGFMZW5ndGg7CiAgICAgICAgIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgp
OwogICAgICAgICByZXR1cm47CkBAIC05MDksMTEgKzkwOSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5l
dHdvcmtMbwogI2VuZGlmCiAKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKQotICAgICAgICBzZW5k
UmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZl
cmVkRGF0YS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAgc2VuZFJlcGx5VG9T
eW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbV9idWZmZXJlZERhdGEu
Z2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlm
IChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkgeworICAgICAg
ICBpZiAoIW1fYnVmZmVyZWREYXRhLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6
IFBhc3MgYSByZWFsIHZhbHVlIG9yIHJlbW92ZSB0aGUgZW5jb2RlZCBkYXRhIHNpemUgZmVhdHVy
ZS4KLSAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVmZmVyZWREYXRhLCAtMSk7CisgICAgICAg
ICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YS5nZXQoKSwgLTEpOwogICAgICAgICB9CiAg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJj
ZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQpAQCAtMTI1OSwxNiArMTI1OSwxNiBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAg
QVNTRVJUKG1fYnVmZmVyZWREYXRhKTsKICAgICBBU1NFUlQobV9uZXR3b3JrTG9hZCk7CiAKLSAg
ICBpZiAobV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkKKyAgICBpZiAobV9idWZmZXJlZERhdGEu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNv
dXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9idWZmZXJlZERhdGEgfSwgbV9idWZmZXJl
ZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YS5nZXQoKSB9LCBtX2J1ZmZl
cmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKLSAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZmZXJlZERhdGEuZW1wdHkoKTsKICAgICBtX2J1
ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnNlbmRCdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVk
RGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQogewog
ICAgIEFTU0VSVCghaXNTeW5jaHJvbm91cygpKTsKIApAQCAtMTI4OSwxMiArMTI4OSwxMiBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkoKQogICAgIGlm
IChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkgewogICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9
IG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQo
KSkpIHsKICAgICAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50
cnk6IFN0b3JpbmcgZW50cnkgaW4gcHJlZmV0Y2ggY2FjaGUiKTsKLSAgICAgICAgICAgIHNlc3Np
b24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgp
LnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2Fj
aGUpKTsKKyAgICAgICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdv
cmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRyeVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9y
aW5nIGVudHJ5IGluIEhUVFAgZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0
d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVzcG9uc2UsIFdURk1vdmUobV9idWZmZXJl
ZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBSZWYgeyAqdGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5
KSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlLT5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVx
dWVzdCgpLCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSwgW2xvYWRl
ciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUgewogI2lmIEVOQUJM
RShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlmIChtYXBwZWRCb2R5LnNoYXJlYWJsZVJl
c291cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXgg
ZDIzNGRhYjViZWVhNWI2NDczMDU1MGM3NzM3MGE5ZjE1OTU5N2Y5Ny4uY2YxMGNmMGU3MWExYmM2
NTU0MGU4N2Q2YmE0YzFiOWM4NTZjMGExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0zOCw2ICszOCw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xp
Y3lWaW9sYXRpb25FdmVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAg
LTExNCw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JD
cmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9y
Q3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBm
aW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAg
ICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
JikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KCkgZmluYWw7CkBAIC0xOTIsNyArMTkzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc3RhcnRC
dWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgdm9pZCBidWZmZXJpbmdUaW1lckZpcmVkKCk7
Ci0gICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOwogCiAgICAgdm9pZCBjb25z
dW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKICAgICB2b2lkIGludmFsaWRhdGVTYW5kYm94RXh0ZW5z
aW9ucygpOwpAQCAtMjI1LDcgKzIyNiw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCiAgICAgc2l6ZV90IG1fYnVmZmVyZWREYXRhRW5jb2Rl
ZERhdGFMZW5ndGggeyAwIH07Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXJlZERhdGE7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcmVk
RGF0YTsKICAgICB1bnNpZ25lZCBtX3JlZGlyZWN0Q291bnQgeyAwIH07CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U3luY2hyb25vdXNMb2FkRGF0YT4gbV9zeW5jaHJvbm91c0xvYWREYXRhOwpAQCAt
MjQwLDcgKzI0MSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpUaW1lciBtX2J1ZmZlcmlu
Z1RpbWVyOwogICAgIFJlZlB0cjxOZXR3b3JrQ2FjaGU6OkNhY2hlPiBtX2NhY2hlOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CisgICAg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JWYWxp
ZGF0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hl
RW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uOwogICAgIGJvb2wgbV9pc1dhaXRpbmdDb250aW51
ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXggMTE0ODUzZTQ1YjcyNTMzNjRjNzQ3
YTcxY2IyYjVhYjhjYzM4ZWZkNS4uMWFmMWUwOGUzYzQ0MWUyNGYzMDA2NWU5ZjIwNzc2ZTZmOWZj
MzNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAgLTE3
Miw3ICsxNzIsNyBAQCB2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VS
ZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VAogICAgIGRpZEZpbmlzaCh7IH0s
IHJlc3BvbnNlKTsKIH0KIAotdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJikKK3ZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKQogewogICAgIFBJTkdfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRh
Iik7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmgKaW5kZXggMTllYzhjZWI5MmUzYzhhMDU2ZjQ5MjczNjYwY2ZmZjkyNjQzNDFk
MS4uYWIyOWEwYjFhYzg0NjZiMGVkNjFlZjU4ZWY0YzIyMGFiYWI2ZWJlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFu
ZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBk
aWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3Qg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0
YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9T
ZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKaW5kZXggNDU1NzgyZDU0YTJl
YTliZWUxODY1MGUxYWZkMWNmN2IyY2U5OGM0OS4uMTdkNDc5MDdhM2Y2ZWU1MmJlNjUwMWQxZGFi
MGNhNjA3NTFkNmIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cmVjb25uZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVj
b25uZWN0VGFzay5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBQcmVjb25uZWN0VGFzazo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb20K
ICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiB9CiAKLXZvaWQg
UHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNl
aXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAppbmRleCAxYzFmZjE2NDcx
MTFjNmZhODQ5NGFmNWNmMGM3YmJlYWExYjI2NTAzLi44NTgwOGUxMjFiNjhjYThiNzNlMjUxOGQx
OTNhYjM5NTgxZWFkMWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByZWNvbm5lY3RUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVj
b25uZWN0VGFzay5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTZW5k
RGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90
YWxCeXRlc1RvQmVTZW50KSBmaW5hbDsKICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVl
c3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2Fk
aW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5kZXggNzFl
MGNmNmM2ZGM3YmVhNTIyYzkwNjAwNTU1ZjU3MjE2MWMzYzJmNC4uODE5NjYzMDIwYzY5NWNlMGM2
YWJhOTk5YzY3NWFhYjQyODJjN2ZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCkBAIC0xNzQsMTAgKzE3NCwxMCBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VSZXNwb25zZSYmIHJlcwogICAgICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFNlcnZp
Y2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkKIHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2spCi0gICAgICAgIG1fYm9keUNhbGxiYWNrKFdU
Rk1vdmUoYnVmZmVyKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIG1fYm9k
eUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZEZp
bmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5o
CmluZGV4IDFlNzhjMmNlZmExNTQ4NDEwNDA2MGYzYjE5ZGM1MGU2Y2I4ZjFlYjQuLmVlMWJjOGI3
ZDZjYmZmYzMzNDFkNjczZmI3MjQyMjM4ZjY3MTdmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCkBAIC02Nyw3ICs2Nyw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1
ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJl
c3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9h
ZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgYm9vbCBzaG91
bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljczsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5kZXggOGVlMTEyYTlkZjgy
ODk1NGMxNjIzZmZmMjJjMmEyMGZkOGUyZmU3ZC4uN2EyNjIyMTlkZTc4YjIzNWQxMjVhOTJiNmUy
MzZkMzMyNjJmN2EyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXIuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgUmVzb3VyY2VFcnJvciBTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6cHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG8KICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fZGVjb2Rlcikg
ewogICAgICAgICBpZiAoIW1fcmVzcG9uc2VFbmNvZGluZy5pc0VtcHR5KCkpCkBAIC0xODcsNyAr
MTg3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwKICAgICB9CiAKICAgICBpZiAoYXV0byBz
aXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXIt
PmRlY29kZShidWZmZXItPmRhdGEoKSwgc2l6ZSkpOworICAgICAgICBtX3NjcmlwdC5hcHBlbmQo
bV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUp
KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAppbmRleCAxOGY1NDY5MWYzN2MyYmFi
YmM4YzFhM2JjMDk0MzcwZTliMjllYjcxLi40NGZjMDY4NWZhMGZlZGM4NzQyMTkxNmU5MTNhNjc0
YjFjMGZkYmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXIuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9B
c2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmlu
YWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggMDQ3NzY4MzZmOTk5MDkzOTEwYjM5OWQ3NTUzODU1
ZDVkM2YxZmY0ZS4uZGQzMDVhZjI5NzY2MWU0NzZjNDk2NzdkZjU3MjFlZmQxZWM5MzJmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmNwcApAQCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgQ2FjaGU6OmNvbXBsZXRlUmV0cmlldmUoUmV0
cmlldmVDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIsIHN0ZDo6dW5pcXVlX3B0CiAgICAgaGFu
ZGxlcihXVEZNb3ZlKGVudHJ5KSwgaW5mbyk7CiB9CiAgICAgCi1zdGQ6OnVuaXF1ZV9wdHI8RW50
cnk+IENhY2hlOjptYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEpCitzdGQ6OnVuaXF1ZV9wdHI8RW50
cnk+IENhY2hlOjptYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhKQogewogICAgIHJl
dHVybiBtYWtlVW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCBX
VEZNb3ZlKHJlc3BvbnNlRGF0YSksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRl
cnMobmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25JRCksIHJlcXVlc3Qs
IHJlc3BvbnNlKSk7CiB9CkBAIC00NjQsNyArNDY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5
PiBDYWNoZTo6bWFrZVJlZGlyZWN0RW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JgogICAgIHJldHVybiBtYWtlVW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJl
c3BvbnNlLCByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhl
YWRlcnMobmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25JRCksIHJlcXVl
c3QsIHJlc3BvbnNlKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3Jl
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2VEYXRhLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3N0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgQVNTRVJUKHJlc3BvbnNlRGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IDE5OWYwY2ZiNzMy
NTQzYzVmZWFmNGZlMjMwMWU2YTFjMTJmODhmZTguLmVkMDRlYmNhMGIzNmYzZjljNGMwZTdiYWM3
MTMzNmI5ZTk2YzM1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtNDMsNyArNDMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgTG93UG93ZXJNb2RlTm90aWZpZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE2Niw3ICsxNjYsNyBAQCBwdWJsaWM6CiAgICAgfTsKICAg
ICB1c2luZyBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyID0gRnVuY3Rpb248dm9pZChzdGQ6OnVu
aXF1ZV9wdHI8RW50cnk+LCBjb25zdCBSZXRyaWV2ZUluZm8mKT47CiAgICAgdm9pZCByZXRyaWV2
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwg
c3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFJldHJpZXZlQ29tcGxl
dGlvbkhhbmRsZXImJik7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9yZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgRnVuY3Rpb248dm9pZChNYXBwZWRC
b2R5Jik+JiYgPSBudWxscHRyKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgRnVuY3Rp
b248dm9pZChNYXBwZWRCb2R5Jik+JiYgPSBudWxscHRyKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
RW50cnk+IHN0b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heEFnZUNhcCk7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiB1cGRhdGUoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgRW50cnkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiB2YWxpZGF0aW5nUmVzcG9uc2UpOwogCkBAIC0xODUsNyArMTg1LDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmV0cmlldmVEYXRhKGNvbnN0IERhdGFLZXkmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpPik7CiAgICAgdm9pZCBzdG9yZURhdGEoY29uc3QgRGF0YUtleSYsICBj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QpOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4gbWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IG1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxFbnRyeT4gbWFrZVJlZGlyZWN0RW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KTsKIAogICAgIHZvaWQgZHVtcENvbnRlbnRzVG9G
aWxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRW50cnkuY3BwCmluZGV4IGJhMzlkOWUyYzI2YTAxYTkyNmIxMWFhNzk5ZTM2
NjJmYzZhZTA1NDkuLjc2MTA3OGRlYTA5M2MwNDU1NWJlOThiMDUxNzNlMzQxNTA2N2E4NTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRW50cnkuY3BwCkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5h
bWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogCi1FbnRyeTo6RW50cnkoY29uc3QgS2V5JiBrZXksIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0
cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpCitFbnRyeTo6RW50cnkoY29uc3QgS2V5JiBr
ZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKQogICAgIDogbV9r
ZXkoa2V5KQogICAgICwgbV90aW1lU3RhbXAoV2FsbFRpbWU6Om5vdygpKQogICAgICwgbV9yZXNw
b25zZShyZXNwb25zZSkKQEAgLTEwMSw4ICsxMDEsMTAgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5
OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogCiAgICAgRGF0YSBoZWFkZXIoZW5jb2Rl
ci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogICAgIERhdGEgYm9keTsKLSAgICBp
ZiAobV9idWZmZXIpCi0gICAgICAgIGJvZHkgPSB7IG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVy
LT5zaXplKCkgfTsKKyAgICBpZiAobV9idWZmZXIpIHsKKyAgICAgICAgbV9idWZmZXIgPSBtX2J1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyKj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5z
aXplKCkgfTsKKyAgICB9CiAKICAgICByZXR1cm4geyBtX2tleSwgbV90aW1lU3RhbXAsIGhlYWRl
ciwgYm9keSwgeyB9IH07CiB9CkBAIC0xOTQsNyArMTk2LDcgQEAgdm9pZCBFbnRyeTo6aW5pdGlh
bGl6ZUJ1ZmZlckZyb21TdG9yYWdlUmVjb3JkKCkgY29uc3QKICAgICBtX2J1ZmZlciA9IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LmRhdGEo
KSwgbV9zb3VyY2VTdG9yYWdlUmVjb3JkLmJvZHkuc2l6ZSgpKTsKIH0KIAotV2ViQ29yZTo6U2hh
cmVkQnVmZmVyKiBFbnRyeTo6YnVmZmVyKCkgY29uc3QKK1dlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIEVudHJ5OjpidWZmZXIoKSBjb25zdAogewogICAgIGlmICghbV9idWZmZXIpCiAg
ICAgICAgIGluaXRpYWxpemVCdWZmZXJGcm9tU3RvcmFnZVJlY29yZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCmlu
ZGV4IDk2OTE1YzM4MDFjMzdkZGFjM2U4ZTYwMzIxZjg4YzIyMjljZDU5YTAuLjljMDQyMGQ0NGE4
MTU4ZGZjNWIyMWNmMTg4MjA0Y2YzYTkxNmI0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKQEAgLTM1LDcgKzM1
LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBOZXR3
b3JrQ2FjaGUgewogY2xhc3MgRW50cnkgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBWZWN0b3I8c3Rk
OjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycyk7CisgICAgRW50
cnkoY29uc3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBWZWN0b3I8c3RkOjpwYWly
PFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycyk7CiAgICAgRW50cnkoY29u
c3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBWZWN0b3I8c3RkOjpwYWly
PFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycyk7CiAgICAgZXhwbGljaXQg
RW50cnkoY29uc3QgU3RvcmFnZTo6UmVjb3JkJik7CiAgICAgRW50cnkoY29uc3QgRW50cnkmKTsK
QEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAgIGNvbnN0
IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJz
KCkgY29uc3QgeyByZXR1cm4gbV92YXJ5aW5nUmVxdWVzdEhlYWRlcnM7IH0KIAotICAgIFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3Q7CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+JiByZWRpcmVjdFJlcXVlc3QoKSBjb25zdCB7IHJldHVy
biBtX3JlZGlyZWN0UmVxdWVzdDsgfQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkK
QEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywg
U3RyaW5nPj4gbV92YXJ5aW5nUmVxdWVzdEhlYWRlcnM7CiAKICAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdD4gbV9yZWRpcmVjdFJlcXVlc3Q7Ci0gICAgbXV0YWJsZSBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICNpZiBFTkFCTEUo
U0hBUkVBQkxFX1JFU09VUkNFKQogICAgIG11dGFibGUgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRs
ZSBtX3NoYXJlYWJsZVJlc291cmNlSGFuZGxlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5jcHAKaW5kZXggYWQwOWRmNDRkOWFmMTJmZDQwODAzMTA1NDY4MzUzNmVhMGRj
ODE5My4uNDFkODIzNTAyNDc0N2I2ZmM0YTNhYzU0OGUxMzM0ZWQ2Y2I1ZWY3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtNDYsNyArNDYsNyBAQCBTcGVjdWxhdGl2
ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZChDYWNoZSYgY2FjaGUsIGNvbnN0IEdsb2JhbEZyYW1lSUQm
IGdsb2JhbEZyYW1lSQogICAgIDogbV9jYWNoZShjYWNoZSkKICAgICAsIG1fY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgLCBtX29yaWdpbmFsUmVxdWVz
dChyZXF1ZXN0KQotICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNoZShTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpKQorICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNoZShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSkKICAgICAsIG1fY2FjaGVFbnRyeShXVEZNb3ZlKGNhY2hlRW50cnlGb3JW
YWxpZGF0aW9uKSkKIHsKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeSB8fCBtX2NhY2hlRW50cnkt
Pm5lZWRzVmFsaWRhdGlvbigpKTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFNwZWN1bGF0aXZl
TG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3Bv
bnNlLCBSZQogICAgIG1fcmVzcG9uc2UgPSByZWNlaXZlZFJlc3BvbnNlOwogCiAgICAgaWYgKG1f
cmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9
IG51bGxwdHI7CisgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKIAogICAg
IGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9
PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQKICAgICBpZiAodmFsaWRhdGlvblN1Y2NlZWRlZCAm
JiBtX2NhY2hlRW50cnkpCkBAIC0xMjAsMTcgKzEyMCwxNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9h
ZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbnNl
LCBSZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6VXNlKTsKIH0KIAotdm9p
ZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTcGVjdWxhdGl2ZUxv
YWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1fY2FjaGVF
bnRyeSk7CiAKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQ
cmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YS4KICAgICAgICAg
Y29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUgPSAxMCAqIDEwMjQgKiAxMDI0Owot
ICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsgYnVmZmVyLT5zaXpl
KCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAobV9idWZmZXJlZERh
dGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJT
aXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdl
dCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9
IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAg
ICAgfQogfQogCkBAIC0xMzksMTAgKzEzOSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlk
RmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQogICAgIGlm
IChtX2RpZENvbXBsZXRlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2NhY2hlRW50cnkg
JiYgbV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewotICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2Nh
Y2hlLT5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFG
b3JDYWNoZS5jb3B5UmVmKCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CisgICAgICAgIG1f
Y2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNl
LCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmdldCgpLCBbXShhdXRvJiBtYXBwZWRCb2R5KSB7IH0p
OwogICAgICAgICAvLyBDcmVhdGUgYSBzeW50aGV0aWMgY2FjaGUgZW50cnkgaWYgd2UgY2FuJ3Qg
c3RvcmUuCiAgICAgICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIGlzU3RhdHVzQ29kZUNhY2hlYWJs
ZUJ5RGVmYXVsdChtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpKQotICAgICAgICAgICAgbV9j
YWNoZUVudHJ5ID0gbV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3Bv
bnNlLCBXVEZNb3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIG1fY2Fj
aGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRyeShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25z
ZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS50YWtlKCkpOwogICAgIH0KIAogICAgIGRpZENvbXBs
ZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRleCBjMGUxZTE0YjJhYzQ2
MDM1OGY4MTQwN2NkNzBjNDA5MDUyYWY4ZWZlLi4xYjg0M2RiN2VjMjcwZGI5ZGFiOWU4YTI1ZjJh
NDhhOGVjYWUyYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKQEAgLTYxLDcg
KzYxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRp
YWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVk
aXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
IHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYm
KSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKSBvdmVycmlkZTsKIApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKICAgICBib29sIG1fZGlkQ29tcGxl
dGUgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCmluZGV4IDVlMmUwMmUyZmJhMGI0YTBjMDNiNWQzZTY2
Yjk3ZjdiY2NjNzk1OGIuLjMxOTliZmYzMTFiNmMzZWVmYmU5NTBiNDVlNmIwYTk2ZTMyNzc3ZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hD
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRj
aENhY2hlLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUHJl
ZmV0Y2hDYWNoZTo6RW50cnk6OkVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNw
b25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitQcmVmZXRjaENh
Y2hlOjpFbnRyeTo6RW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBS
ZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBy
ZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSksIGJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiB9
CkBAIC03Miw3ICs3Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQcmVmZXRjaENhY2hlOjpFbnRyeT4g
UHJlZmV0Y2hDYWNoZTo6dGFrZShjb25zdCBVUkwmIHVybCkKIAogc3RhdGljIGNvbnN0IFNlY29u
ZHMgZXhwaXJhdGlvblRpbWVvdXQgeyA1X3MgfTsKIAotdm9pZCBQcmVmZXRjaENhY2hlOjpzdG9y
ZShjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNw
b25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFByZWZl
dGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25QcmVmZXRjaGVzKQogICAgICAgICBt
X3Nlc3Npb25QcmVmZXRjaGVzID0gbWFrZVVuaXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2Fj
aGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5o
CmluZGV4IGEyNTE1MjBiMzFlYWM5MjFjMjJkMzExNTFkNmQyMzFhMWJlZDEzOGMuLjUyYzBiMTBm
Y2M2ZDVhNmRlMTE0NDdlN2U0ZTgyMmRmOGY4NDFjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCkBAIC00NywxOCArNDcsMTgg
QEAgcHVibGljOgogCiAgICAgc3RydWN0IEVudHJ5IHsKICAgICAgICAgV1RGX01BS0VfU1RSVUNU
X0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgICAgICBFbnRyeShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKTsKICAgICAgICAgRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAKLSAgICAgICAgUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gcmVsZWFzZUJ1ZmZlcigpIHsgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
OyB9CisgICAgICAgIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZWxlYXNl
QnVmZmVyKCkgeyByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7IH0KIAogICAgICAgICBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgICAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCByZWRpcmVjdFJlcXVlc3Q7CiAgICAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4g
dGFrZShjb25zdCBVUkwmKTsKLSAgICB2b2lkIHN0b3JlKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAg
dm9pZCBzdG9yZShjb25zdCBVUkwmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB2b2lkIHN0b3JlUmVk
aXJlY3QoY29uc3QgVVJMJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKaW5kZXggYjlh
YjBkZWViYjlmOTI3YzczNzQyZTg2YTBiZTdmOTcxNjBiZDZmYi4uNDE2NjhhNWIxY2Q3Mzg2OTY3
YjhmZDk3M2U5NjczMmVjYTkwN2VkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaApAQCAtNjIsNyArNjIs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWROZWdvdGlhdGVNb2Rlcm5UTFMoY29uc3QgVVJMJik7
CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVn
YWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICB2b2lk
IHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJik7
CiAgICAgdm9pZCB0cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKERvd25sb2FkJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCBlNzgwZDZjMWMzY2QxZWIyYzJmZjVhMGM1NjRhMGU0
ZDg4YjdlYTVkLi4zMDUxZjE2OWNiMGEzNzA5OTg1YTE2MTEyMmMyNWYwZThmMTdiZDhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0KQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFz
a0NvY29hOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiBlcgogICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoZXJyb3IsIG5ldHdv
cmtMb2FkTWV0cmljcyk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2Vp
dmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgTmV0d29ya0Rh
dGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgV1RGRW1pdFNpZ25wb3N0KG1fdGFzay5nZXQoKSwgIkRh
dGFUYXNrIiwgInJlY2VpdmVkICV6ZCBieXRlcyIsIGRhdGEtPnNpemUoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tD
dXJsLmNwcAppbmRleCA2NzdjNjFkYTFhMTg5NGMxZjU5NjU2ZDkyNzA5ZWI3MWQ1OTFhNTUzLi4z
ZGM2NWZmODJjOWRhODkyZDIwYzM0ODg2ZTVhMWM0ZDc5ZGFkZWY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwu
Y3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlk
UmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVzcG8KICAgICBpbnZv
a2VEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpj
dXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQordm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJs
UmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBS
ZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OkNh
bmNlbGluZyB8fCBzdGF0ZSgpID09IFN0YXRlOjpDb21wbGV0ZWQgfHwgKCFtX2NsaWVudCAmJiAh
aXNEb3dubG9hZCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCmluZGV4IDFjNDI3ZGRiNzhkNjk1M2ZlODk2MGM1
NjkyYWZkZTRmNGYwZWVlODUuLjQ1YmU1Y2UxODQzMjUyNzFkNWMwODBkZDM0ZjFlZTRhMTY2NDJh
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3Jr
RGF0YVRhc2tDdXJsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtEYXRhVGFza0N1cmwuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIFJlZjxX
ZWJDb3JlOjpDdXJsUmVxdWVzdD4gY3JlYXRlQ3VybFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFJlcXVlc3RTdGF0dXMgPSBSZXF1ZXN0U3RhdHVzOjpOZXdSZXF1ZXN0KTsKICAg
ICB2b2lkIGN1cmxEaWRTZW5kRGF0YShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxv
bmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpDdXJsUmVzcG9u
c2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpD
dXJsUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAg
IHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJs
RGlkQ29tcGxldGUoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihXZWJDb3Jl
OjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiwgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCmluZGV4IGY1ZGI3MDZjNDQ1
ODAyMTA4N2Y5NTk5NjY5ZGZhN2Q5ZjgzNzk3OGMuLjMzZDQzYjcyMjM4ZDIwM2U3ZWRlYzk0MTRj
YWY5ZmRhOGY0MDUyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCkBAIC01NSw3ICs1NSw3IEBAIHN0cnVj
dCBQYWNrZXRPcHRpb25zOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZWdpc3RyYWJs
ZURvbWFpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDdlMGQ4ZGJlMTkwMjU5OWQwMmJjMTA4ZTU2M2E2
ZTNkZjE4MzJlOWYuLjE3ZjA4YzI4ZWExMjViNTUwOTkzZWVkMjRkNTk2M2I4NTEwYTExNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTIz
LDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0v
LyBFbmNvZGVzIGEgU2hhcmVkQnVmZmVyIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBjb3B5IG9mIHRo
ZSBkZWNvZGVkIGRhdGEgaW4gYSBuZXcgU2hhcmVkQnVmZmVyLgorLy8gRW5jb2RlcyBhIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIgdGhhdCBpcyByZWNlaXZlZCBhcyBhIGNvcHkgb2YgdGhlIGRlY29k
ZWQgZGF0YSBpbiBhIG5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgogLy8gVG8gYXZvaWQgY29w
eWluZyBmcm9tIHRoZSBEZWNvZGVyLCB1c2UgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB0byBy
ZWNlaXZlIGEgRGF0YVJlZmVyZW5jZSBpbnN0ZWFkLgogCiAjcHJhZ21hIG9uY2UKQEAgLTQzLDEx
ICs0MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7
IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9Ci0gICAgU2hhcmVk
QnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAgICAg
OiBtX2J1ZmZlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQotICAgIHsKLSAgICAg
ICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIpOwotICAgIH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5
KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAg
ICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1
ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3VzKCkpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNvcHko
Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorICAgICAgICA6
IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSB7IH0KIAogICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQogICAgIGNv
bnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCmluZGV4IGQzZDBlYzVlOTc4NTU5OWI2MzRhODRjNmM0
NDcxYjUyY2QyMjEzZjEuLjY3ZWM4ZTVlOTJiZDAyNDExNWRiMGQ0MDgwYTI0ZmU3MzU3MGQzZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlLmgKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0vLyBFbmNvZGVzIGEgU2hhcmVkQnVmZmVyIG9yIERhdGFSZWZl
cmVuY2UgdGhhdCBpcyByZWNlaXZlZCBhcyBhIERhdGFSZWZlcmVuY2UgdG8gdGhlIGRlY29kZWQg
ZGF0YS4KKy8vIEVuY29kZXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIG9yIERhdGFSZWZlcmVu
Y2UgdGhhdCBpcyByZWNlaXZlZCBhcyBhIERhdGFSZWZlcmVuY2UgdG8gdGhlIGRlY29kZWQgZGF0
YS4KIAogI3ByYWdtYSBvbmNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
U2hhcmVkTWVtb3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNw
cAppbmRleCBkMjQwNmVlMjkwNTMxMWY2OWI3NTg0MjFlNzdhM2U2NmNiYTI3YjY1Li5jMDI2ZjU0
OTU2OWIyYmUwMDc4YWUzMjVkMDUzOWUwNzFhZjExMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9TaGFyZWRNZW1vcnkuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVk
TWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPFNo
YXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC01MSw3ICs1MSw3IEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNo
YXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIFJlZjxT
aGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRh
U2l6ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZGF0YVNpemUgPD0gc2l6ZSgpKTsKLSAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoeworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsKICAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVkVGhpcy0+ZGF0YSgpKTsKICAgICAgICAg
fSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCmluZGV4IGUzNzFiY2Q3MzAyY2Y4
NWViYWIyYjVhODVlN2JlNDlkY2Y1NjUyYWIuLjFiNGZkZmFmNjgzODlkY2U3MjhmZjM0ZTVlNWYw
MTJlMjQzZmEyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAtNDUs
NiArNDUsNyBAQCBjbGFzcyBFbmNvZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiAjaWYgT1Mo
REFSV0lOKQpAQCAtMTIwLDcgKzEyMSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBDaGFu
Z2UgdGhlc2UgZmFjdG9yeSBmdW5jdGlvbnMgdG8gcmV0dXJuIFJlZjxTaGFyZWRNZW1vcnk+IGFu
ZCBjcmFzaCBvbiBmYWlsdXJlLgogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBhbGxv
Y2F0ZShzaXplX3QpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBjb3B5QnVmZmVy
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVk
TWVtb3J5PiBjb3B5QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KTsKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbWFwKGNvbnN0IEhhbmRsZSYsIFBy
b3RlY3Rpb24pOwogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIHN0YXRpYyBSZWZQ
dHI8U2hhcmVkTWVtb3J5PiB3cmFwTWFwKHZvaWQqLCBzaXplX3QsIGludCBmaWxlRGVzY3JpcHRv
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3Vy
Y2UubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KaW5k
ZXggY2EwYzI0YjI3NzM1NDc2NzZlMzQ4MDFjNzlhMWQ1NjViZjk1ZmU1ZC4uMTEwZTBhZGRlNTU4
YTlkOTMzOGIyNDUwNmU4OTE2M2M5MzY5NzE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgdm9pZCBy
ZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YSh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCog
ZGF0YSkKIAogUmVmPEFQSTo6RGF0YT4gV2ViQXJjaGl2ZVJlc291cmNlOjpkYXRhKCkKIHsKLSAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2FyY2hpdmVSZXNvdXJjZS0+ZGF0YSgp
LmNyZWF0ZUNGRGF0YSgpOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJj
aGl2ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAK
ICAgICAvLyBCYWxhbmNlZCBieSBDRlJlbGVhc2UgaW4gcmVsZWFzZVdlYkFyY2hpdmVSZXNvdXJj
ZURhdGEuCiAgICAgQ0ZSZXRhaW4oY2ZEYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXgg
ODdmNGViMWViYTI4NzJlMGNiMGFiOTU5MTZhZmVkZTI5ZmNiYTI0NC4uM2MxYjU3ZDVhYTI2ZWM3
MmU2MGI1ZDc4YTExZTlmZDg1MmNmZmVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTU2NCwxMyAr
NTY0LDEyIEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1l
bnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBpZiAoKmluY2x1ZGVzQ3JlYXRpb25EYXRhKSB7Ci0gICAgICAgIHN0ZDo6
b3B0aW9uYWw8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGZv
bnRGYWNlRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGlm
ICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
ICAgICAvLyBVcG9uIHJlY2VpcHQsIGNvcHkgdGhlIGRhdGEgZm9yIHNlY3VyaXR5LCBzbyB0aGUg
c2VuZGVyIGNhbid0IHNjcmliYmxlIG92ZXIgaXQgd2hpbGUgd2UncmUgdXNpbmcgaXQuCi0gICAg
ICAgIGF1dG8gbG9jYWxGb250RmFjZURhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZShmb250RmFjZURhdGEudmFsdWUoKS0+ZGF0YSgpLCBmb250RmFjZURhdGEudmFsdWUoKS0+c2l6
ZSgpKTsKKyAgICAgICAgYXV0byBsb2NhbEZvbnRGYWNlRGF0YSA9IGZvbnRGYWNlRGF0YS52YWx1
ZSgpLT5tYWtlQ29udGlndW91cygpOwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBp
dGVtSW5Db2xsZWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGl0ZW1JbkNvbGxlY3Rpb247CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggYzY5NjFjNzE0
NDAyYmYzNzdhZTkxMGZiYjZjY2FhNTJkM2I4NDEyOC4uNmZhMDJhN2JjM2VlNTRhZTZkMzI1Mzgx
MGQ3OGRlYzMxNjUzNTNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVh
YmxlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291
cmNlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBib29sIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6
OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQogCiBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKIHsK
LSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6UHJvdmlkZXIgeworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVu
dDo6UHJvdmlkZXIgewogICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4g
c2VsZi0+ZGF0YSgpOyB9LAogICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1
cm4gc2VsZi0+c2l6ZSgpOyB9CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA2NDk4MmJjNDgxMDJhNGFkYjIwYTdlNjBlMjFi
ZDQ5MmQ2NTMzNzRjLi44NDNmZDQ3MzEzYWVlY2EyOTkzMDYxMmZjNWVjNTc4NzU1NDM0MmRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAg
LTE2NCw3ICsxNjQsNyBAQCBERUZJTkVfU0lNUExFX0FSR1VNRU5UX0NPREVSX0ZPUl9TT1VSQ0Uo
RGlzcGxheUxpc3Q6OlNldElubGluZVN0cm9rZUNvbG9yKQogCiAjdW5kZWYgREVGSU5FX1NJTVBM
RV9BUkdVTUVOVF9DT0RFUl9GT1JfU09VUkNFCiAKLXN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1
ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3N0YXRp
YyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgYm9vbCBpc051bGwgPSAhYnVmZmVyOwog
ICAgIGVuY29kZXIgPDwgaXNOdWxsOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyB2b2lkIGVu
Y29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1
ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0g
ICAgLy8gRG8gbm90IHVzZSBzaGFyZWQgbWVtb3J5IGZvciBTaGFyZWRCdWZmZXIgZW5jb2Rpbmcg
aW4gVW5peCwgYmVjYXVzZSBpdCdzIGVhc3kgdG8gcmVhY2ggdGhlCisgICAgLy8gRG8gbm90IHVz
ZSBzaGFyZWQgbWVtb3J5IGZvciBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGVuY29kaW5nIGluIFVu
aXgsIGJlY2F1c2UgaXQncyBlYXN5IHRvIHJlYWNoIHRoZQogICAgIC8vIG1heGltdW0gbnVtYmVy
IG9mIGZpbGUgZGVzY3JpcHRvcnMgb3BlbiBwZXIgcHJvY2VzcyB3aGVuIHNlbmRpbmcgbGFyZ2Ug
ZGF0YSBpbiBzbWFsbCBjaHVua3MKICAgICAvLyBvdmVyIHRoZSBJUEMuIENvbm5lY3Rpb25Vbml4
LmNwcCBhbHJlYWR5IHVzZXMgc2hhcmVkIG1lbW9yeSB0byBzZW5kIGFueSBJUEMgbWVzc2FnZSB0
aGF0IGlzCiAgICAgLy8gdG9vIGxhcmdlLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODU3MS4KQEAgLTI2NCw3ICsyNjQsNyBAQCBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3Rv
cjxTdHJpbgogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlm
ICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIGRhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAg
IGRhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNTUw
LDEwICsxNTUwLDEwIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
RW50cnk+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QKICAgICBpZiAoaGFzU3RyaW5n
KQogICAgICAgICBlbmNvZGVyIDw8IHN0ZDo6Z2V0PFN0cmluZz4ocGxhdGZvcm1EYXRhKTsKIAot
ICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVm
ZmVyPj4ocGxhdGZvcm1EYXRhKTsKKyAgICBib29sIGhhc0J1ZmZlciA9IHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpOwogICAg
IGVuY29kZXIgPDwgaGFzQnVmZmVyOwogICAgIGlmIChoYXNCdWZmZXIpCi0gICAgICAgIGVuY29k
ZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ocGxhdGZv
cm1EYXRhKS5wdHIoKSk7CisgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBzdGQ6
OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSkucHRyKCkpOwog
fQogCiBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeSYgZGF0YSkK
QEAgLTI5NzYsNyArMjk3Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IHJldHVybiB7eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9fTsKKyAg
ICByZXR1cm4geyB7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH0gfTsK
IH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zMDEwLDYgKzMw
MTAsMzQgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFAKIH0KICNlbmRpZgogCit2b2lkIEFyZ3Vt
ZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZm
ZXIuZ2V0KCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXI7Cit9CisK
K3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIs
IGJ1ZmZlci5wdHIoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8
ICFidWZmZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKIHZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIGVuY29kZVNoYXJlZEJ1
ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwpAQCAtMzEwNyw3ICszMTM1LDcgQEAgdm9pZCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGUKIHsKICAgICBlbmNvZGVyIDw8IG1lc3NhZ2UuZmlyc3Q7CiAKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlS
ZWYoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZURhdGEgPSBt
ZXNzYWdlLnNlY29uZC5jb3B5UmVmKCk7CiAgICAgZW5jb2RlciA8PCBtZXNzYWdlRGF0YTsKIH0K
IApAQCAtMzExNyw3ICszMTQ1LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb246Ok1lc3NhZ2U+ICBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUkKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpIHx8ICFi
dWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMjVmMDFjMDI5MmEwMTlmMDY3NjI0
YmJiNTUzNDAyZGYxYTMzYzViNi4uNmZhYzJhYTFlYTc4NDZmZjZiZjg5MDIxZjBmNTJlOWFhN2Fl
MDNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
QEAgLTExNCw2ICsxMTQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNz
IEJsb2JQYXJ0OwogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgQ29sb3I7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKQEAgLTEzOCw3ICsxMzksNyBAQCBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0QnVmZmVyOwog
Y2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3ByaW5nVGltaW5nRnVuY3Rpb247CiBjbGFzcyBTdGVw
c1RpbWluZ0Z1bmN0aW9uOwogY2xhc3MgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRz
OwpAQCAtNzUxLDYgKzc1MiwxNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gewogfTsKICNlbmRpZgogCit0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3Qg
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBkZWNv
ZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYp
OworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Jik7
CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJI
aXRUZXN0UmVzdWx0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVz
dWx0RGF0YS5jcHAKaW5kZXggY2YyZTRkNWY5M2ZkMmQ5NDZiYWJmZjkzZWVhM2U5ZTg2MGFlYmJm
NC4uYjYwN2FjZTgzOGUwNGJjZTFhNmFlZTRkYTU2NTU5ZTA5Njk4Mzk4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcApAQCAtODUsNyArODUsNyBA
QCBXZWJIaXRUZXN0UmVzdWx0RGF0YTo6V2ViSGl0VGVzdFJlc3VsdERhdGEoY29uc3QgV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdCYgaGl0VGVzdAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoSW1h
Z2UqIGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpOwogICAgICAgICBpZiAoYnVm
ZmVyKSB7CiAgICAgICAgICAgICBpbWFnZVNoYXJlZE1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVt
b3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwogICAgICAgICAgICAgaW1hZ2VTaXplID0gYnVmZmVy
LT5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRD
b2RlcnNHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3Rr
LmNwcAppbmRleCAyNWEzMDdmMzgyOWU5Mjc4YjVlYTc4ZmY4Mjk2Nzg4MzM3N2EzMWJhLi42NzE3
NThhMjgwYTVlNDQwYWEwNjBhNzljZjFmMGYxMjZkYjdiZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9p
ZCBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgU2VsZWN0aW9uRGF0YSYKICAgICBib29sIGhhc0N1c3RvbURhdGEgPSBzZWxlY3Rpb24u
aGFzQ3VzdG9tRGF0YSgpOwogICAgIGVuY29kZXIgPDwgaGFzQ3VzdG9tRGF0YTsKICAgICBpZiAo
aGFzQ3VzdG9tRGF0YSkKLSAgICAgICAgZW5jb2RlciA8PCBSZWZQdHI8U2hhcmVkQnVmZmVyPihz
ZWxlY3Rpb24uY3VzdG9tRGF0YSgpKTsKKyAgICAgICAgZW5jb2RlciA8PCBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4oc2VsZWN0aW9uLmN1c3RvbURhdGEoKSk7CiAKICAgICBib29sIGNh
blNtYXJ0UmVwbGFjZSA9IHNlbGVjdGlvbi5jYW5TbWFydFJlcGxhY2UoKTsKICAgICBlbmNvZGVy
IDw8IGNhblNtYXJ0UmVwbGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmNwcAppbmRleCBiMzRlYzczNjM2M2M0ZjFkMmIwZTc2MGFkM2Y0YTlkNWJhYzFh
MzRlLi4xNDkwYzUxMWJkYzM4YmQ4YWI0YTY5NWFlY2YzMDZkOTVmYWEzOTY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBAIC05OCw3ICs5OCw3
IEBAIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IEF0dGFjaG1lbnQ6OmZpbGVTaXplRm9yRGlzcGxh
eSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKK1Jl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3Np
bmdJbWFnZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKaW5kZXggYWZhOTI5Y2YwOTNkMjJl
Yzc2YWQ4NmZkYTAzYjUwMWJiZmQyOWRjMy4uZmU1MGU1MzhiOGViYjM1MWE0ODM2ZDFkZDg5M2Qx
NDdhNTZhODc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0
dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVu
dC5oCkBAIC0zOSw2ICszOSw3IEBAIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODIsNyArODMsNyBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0OworICAgIFJlZlB0cjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBlbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdDsKICAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdDsKIAogICAg
IHZvaWQgc2V0SGFzRW5jbG9zaW5nSW1hZ2UoYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSkgeyBtX2hh
c0VuY2xvc2luZ0ltYWdlID0gaGFzRW5jbG9zaW5nSW1hZ2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKaW5kZXggN2Zj
MDU0NTdlNjRjZjU4OWIwZmIwZTdlMDM2ZjY5MGZhMmMxN2JhYy4uNGUyNjZmMzY3YWM2MDJiOGVm
MWVhZjc1N2EwYTA0ZGM3M2Y3NzFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFt
ZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
TmF2aWdhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmln
YXRpb25DbGllbnQuaAppbmRleCA1NjIzNDAxNDU5ZGE1ZmUzMGY0OTFhNDFmYjM0N2E2NzU3MjAy
YzQwLi4xMTFmMDkyNjNmODIyMzgyOWE1YWQyNjQ0MzRiYTQyMGYxOThkZDFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgc3RydWN0IENvbnRlbnRSdWxlTGlzdFJlc3VsdHM7CiBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1
Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogfQogCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1lLCBj
b25zdCBXVEY6OlN0cmluZyYgdXRpKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSB7
IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBSZWY8TmF2aWdhdGlvbkFjdGlvbj4mJiwgUmVm
PFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBPYmplY3Qq
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFj
aG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRh
Y2htZW50Q29jb2EubW0KaW5kZXggY2Y0NjIxNmNhMjVhOWVkZjgyZTMxOWEzMzAzMDc5MWU4ZDRl
MTUzYy4uZGZlZjNlMDcwZjk2MTYzMDQ5NzE0NGRhZjNmMzAwY2I0Y2E1MTk1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENv
Y29hLm1tCkBAIC0xMzcsNyArMTM3LDcgQEAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gQXR0YWNo
bWVudDo6ZmlsZVNpemVGb3JEaXNwbGF5KCkgY29uc3QKICAgICByZXR1cm4gW2ZpbGVXcmFwcGVy
IHJlZ3VsYXJGaWxlQ29udGVudHNdLmxlbmd0aDsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKK1JlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFn
ZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9oYXNFbmNsb3NpbmdJbWFnZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQppbmRleCBhNzJkMGQyYzkyZDdkZWQ0NWUwZTQxMGI0MWRjYjhmYjRkYTVhZTg1
Li42YmRhZTUxNTUyY2UwNDY4YmU5M2I1OGIzYWY1ZjBhMWNhZjliNjZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE1OTYsNyArMTU5
Niw3IEBAIC0gKHZvaWQpX3N0b3JlQXBwSGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpBcHBIaWdo
bGlnaHQmKWhpZ2hsaWdodAogICAgIGlmIChoaWdobGlnaHQudGV4dCkKICAgICAgICAgdGV4dCA9
IGhpZ2hsaWdodC50ZXh0LnZhbHVlKCk7CiAKLSAgICBhdXRvIHdrSGlnaGxpZ2h0ID0gYWRvcHRO
UyhbW19XS0FwcEhpZ2hsaWdodCBhbGxvY10gaW5pdFdpdGhIaWdobGlnaHQ6aGlnaGxpZ2h0Lmhp
Z2hsaWdodC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgdGV4dDp0ZXh0IGltYWdlOm5pbF0pOworICAg
IGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBwSGlnaGxpZ2h0IGFsbG9jXSBpbml0
V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CiAKICAgICBpZiAoW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c3RvcmVBcHBIaWdobGln
aHQ6aW5OZXdHcm91cDpyZXF1ZXN0T3JpZ2luYXRlZEluQXBwOildKQogICAgICAgICBbZGVsZWdh
dGUgX3dlYlZpZXc6c2VsZiBzdG9yZUFwcEhpZ2hsaWdodDp3a0hpZ2hsaWdodC5nZXQoKSBpbk5l
d0dyb3VwOmhpZ2hsaWdodC5pc05ld0dyb3VwID09IFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9y
SGlnaGxpZ2h0OjpZZXMgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDpoaWdobGlnaHQucmVxdWVzdE9y
aWdpbmF0ZWRJbkFwcCA9PSBXZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBw
OjpZZXNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUuaAppbmRleCBhYzRhMGY0MzcwMTUyZWQ1NzJiNTA5MWRmYTUxYmFlYmFiODdmNGU5Li5jODAy
OWMxNDBhNmRkMTRiMTk2NDkyMjViODc4MzBlZWMxMzQwMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTMzLDcgKzEzMyw3IEBA
IHByaXZhdGU6CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAgICAgdm9pZCBkaWRTdGFydExv
YWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgZGlk
RmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggMzg1
NTg4MmM4N2RjOWVkMzFjMWVmMGJhYjYxNmIxZTY0NTk0NGVlZi4uOGQzYTg1NjQ2MmVhZWY3NDFk
OGMyOWUyNTkyZmQ1NzM2NmY1OTljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTIyMCw3ICsxMjIwLDcgQEAgdm9pZCBOYXZp
Z2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnIKICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRl
UHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9u
U3RhdGUtPm1fd2ViVmlldyBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lV2l0aEZpbGVOYW1lOmZpbGVOYW1lIHV0aTp1dGldOwogfQogCi12b2lkIE5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIE5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IGlmICghbV9uYXZpZ2F0aW9uU3RhdGUpCiAgICAgICAgIHJldHVybjsKQEAgLTEyMzIsNyArMTIz
Miw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdh
dGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9u
RGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25h
dmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAgW3N0YXRpY19j
YXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUu
Z2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlkRmluaXNoTG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVmZmVyLm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IDgwMmZm
YWE2ZDZlZGJlYTJlOTcyNzc0ZTI2OTY1YjJkYmIyYTczNWUuLjY4MzM3M2VhZTAwZjVkYjQyYjgx
NDZjZTlkNTMxYmM4YWMwYTU0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCkBAIC0zMDIsMTIgKzMwMiwxMiBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZEF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucygpCiAg
ICAgICAgIGlmIChub0VyciAhPSBBdWRpb0NvbXBvbmVudEZldGNoU2VydmVyUmVnaXN0cmF0aW9u
cygmcmVnaXN0cmF0aW9ucykgfHwgIXJlZ2lzdHJhdGlvbnMpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IFdURk1vdmUo
d2Vha1RoaXMpLCByZWdpc3RyYXRpb25zID0gYWRvcHRDRihyZWdpc3RyYXRpb25zKV0gKCkgbXV0
YWJsZSB7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBXVEZN
b3ZlKHdlYWtUaGlzKSwgcmVnaXN0cmF0aW9ucyA9IGFkb3B0Q0YocmVnaXN0cmF0aW9ucyldICgp
IHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25zLmdldCgpKTsKLSAgICAgICAgICAgIHdlYWtUaGlzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRp
b25zKHsgcmVnaXN0cmF0aW9uRGF0YSB9KSwgMCk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9u
cyh7IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkgfSksIDApOwogICAgICAgICB9KTsKICAgICB9
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCmluZGV4
IDNmNmRkMWYyNDJlN2ExMTVlY2Y3OTgzOTBmMzRiNjM1YzZlOGQ2ZjkuLmY1ODkxMjQxNzAyZGFh
NDIwY2M0ZTZlMjQ2MjhhMWNkZTg5MDdkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwuaApAQCAtNTA2LDcgKzUwNiw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUmIGltYWdlKTsKICAgICB2b2lkIHNldEZpbGVBbmRVUkxUeXBlcyhOU1N0cmlu
ZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJp
bmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIE5TUGFzdGVib2FyZCAqKTsKLSAgICB2b2lk
IHNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiwgTlNTdHJpbmcgKmZpbGVu
YW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmws
IE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZm
ZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKnBhc3RlYm9hcmRPcmlnaW4p
OworICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqLCBOU1N0
cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNT
dHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJp
bmcgKnBhc3RlYm9hcmRPcmlnaW4pOwogICAgIHZvaWQgcGFzdGVib2FyZENoYW5nZWRPd25lcihO
U1Bhc3RlYm9hcmQgKik7CiAgICAgdm9pZCBwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0
ZWJvYXJkICosIE5TU3RyaW5nICp0eXBlKTsKICAgICBOU0FycmF5ICpuYW1lc09mUHJvbWlzZWRG
aWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluYXRpb24pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAzZDllODc3YjBj
Yjc1NjU0YjYzOTE2Mzk1NTdmNTJiNjAzOTJjYWM5Li42MjM2N2RjNWFkMWZlMTIyMWY3YjA5OWU5
YmI0NDU0ZGIzN2E1OGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQpAQCAtNDQ0OSw3ICs0NDQ5LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0Rmls
ZUFuZFVSTFR5cGVzKE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlMK
ICAgICBtX3Byb21pc2VkVVJMID0gdXJsOwogfQogCi12b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9t
aXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbmFt
ZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBO
U1N0cmluZyAqdmlzaWJsZVVSTCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBhcmNoaXZlQnVmZmVy
LCBOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5TU3RyaW5nICpvcmlnaW5JZGVudGlmaWVyKQor
dm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2Uq
IGltYWdlLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5n
ICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJk
TmFtZSwgTlNTdHJpbmcgKm9yaWdpbklkZW50aWZpZXIpCiB7CiAgICAgTlNQYXN0ZWJvYXJkICpw
YXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0aE5hbWU6cGFzdGVib2FyZE5h
bWVdOwogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gdHlwZXMgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpXZWJDb3JlOjpsZWdhY3lGaWxlc1By
b21pc2VQYXN0ZWJvYXJkVHlwZSgpLCBuaWxdKTsKQEAgLTQ0NzAsNyArNDQ3MCw3IEBAIHZvaWQg
V2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFn
ZSwgTlNTdHJpbmcgKmZpbGVuCiAgICAgc2V0RmlsZUFuZFVSTFR5cGVzKGZpbGVuYW1lLCBleHRl
bnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIHBhc3RlYm9hcmQpOwogCiAgICAgaWYgKGFy
Y2hpdmVCdWZmZXIpIHsKLSAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5jcmVh
dGVOU0RhdGEoKTsKKyAgICAgICAgYXV0byBuc0RhdGEgPSBhcmNoaXZlQnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCiAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6bnNEYXRhLmdldCgpIGZvclR5cGU6
KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmVdOwogQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECkBAIC00NTAxLDcgKzQ1MDEsNyBAQCB2b2lkIFdlYlZpZXdJbXBs
Ojpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU1N0
cmluZyAqdAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoW3R5cGUgaXNFcXVhbDptX3Byb21p
c2VkSW1hZ2UtPnV0aSgpXSAmJiBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKSkgewotICAgICAgICBp
ZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNE
YXRhKCkpCisgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+
ZGF0YSgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgIFtw
YXN0ZWJvYXJkIHNldERhdGE6KF9fYnJpZGdlIE5TRGF0YSAqKXBsYXRmb3JtRGF0YS5nZXQoKSBm
b3JUeXBlOnR5cGVdOwogICAgIH0KIApAQCAtNDU1NCw3ICs0NTU0LDcgQEAgTlNBcnJheSAqV2Vi
Vmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwg
KmRyb3BEZXN0aW4KICAgICBSZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwogCiAgICAgaWYgKG1fcHJv
bWlzZWRJbWFnZSkgewotICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPmNy
ZWF0ZU5TRGF0YSgpOworICAgICAgICBkYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB3cmFwcGVyID0gYWRvcHRO
UyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpkYXRh
LmdldCgpXSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxl
V3JhcHBlciBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bV9wcm9taXNl
ZFVSTF0gb3B0aW9uczpOU0ZpbGVXcmFwcGVyUmVhZGluZ0ltbWVkaWF0ZSBlcnJvcjpuaWxdKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBjNDg1YzdmYzMxM2VhMDgzM2Zj
NjA2MjY3MTY5ZDY5MmE4MjQwOTI4Li5iNDYyZDhkYjVjYzYyMDM4NmU3NjgzZGIyNDgzNmFiM2Nl
NjRmZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0zMjgsNyArMzI4
LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBVU0UoQVBQS0lUKQotICAgIHZpcnR1YWwgdm9p
ZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50
aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmlu
ZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpID0g
MDsKICNlbmRpZgogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvRGV2
aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA5YTgxNmZkYjMxODNhMTliNjc5ZTg3NzAzYTBmNDQw
ZTVhYjkwOTAzLi5iNGRhNmZkNjg4ZWJkZTllYzVhNzFmNzg0NzhiZGJmNWY5MDlkODAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjU5LDcgKzI1OSw3IEBAIGNs
YXNzIEludFNpemU7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSdW5Mb29wT2JzZXJ2
ZXI7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDsKIGNs
YXNzIFRleHRJbmRpY2F0b3I7CiBjbGFzcyBWYWxpZGF0aW9uQnViYmxlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBkZjU5ZDU2ZmQ2OTdmMmFk
ZjIwOWY2YzQ3YmVmMDUxZDgwYzE2YmQxLi5lMTI2NGNlMjFiYTU3ZjJhNDI3NDhlMzNhMWRhZDg4
YTBlMjU4YmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSAtPiBFCiAgICAgcmV0
dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKLWF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlk
UmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUK
K2F1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCiB7CiAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKIApAQCAtMTg3LDEwICsxODcsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRh
c2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRp
b25UeQogICAgIG1fZGF0YVNlbnQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAg
ICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgbV9zeW5jRGF0YS0+YXBwZW5kKFdURk1v
dmUoYnVmZmVyKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fc3luY0RhdGEgPSBXVEZN
b3ZlKGJ1ZmZlcik7CisgICAgICAgIG1fc3luY0RhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIApAQCAtMjE1LDE0
ICsyMTIsMTEgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikgLT4gRXhjZXB0aW9uVHlwZQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uVHlwZTo6V2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBtX2Nv
bXBsZXRlZCA9IHRydWU7Ci0gICAgCi0gICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIFZlY3Rv
cjx1aW50OF90PiBkYXRhOwotICAgICAgICBpZiAobV9zeW5jRGF0YSkKLSAgICAgICAgICAgIGRh
dGEgPSB7IG1fc3luY0RhdGEtPmRhdGEoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07CiAKKyAgICBp
ZiAoaXNTeW5jKCkpIHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBtX3N5bmNEYXRhLnNpemUoKTsK
KyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSB7IG1fc3luY0RhdGEudGFrZUFzQ29udGln
dW91cygpLT5kYXRhKCksIHNpemUgfTsKICAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIo
bV9zeW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKLSAgICAgICAgbV9zeW5jRGF0
YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlm
aWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJRCwgZXJyb3IpLCBtX3dlYlBhZ2VJRCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggNmE4NTYwMjFiMTI5OTI0
NmM3MDAwOTNkZDBhNDdmMmMxMzA4NTI2Ny4uZjZmZjQ2ZWVhNWYyOTBiN2I3ZTNmZTU5MjFkZjlm
MTk0YmFjZDExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
aApAQCAtNDMsNyArNDMsNiBAQCBjbGFzcyBGcmFtZUluZm87CiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04NCw3ICs4Myw3IEBAIHB1
YmxpYzoKICAgICBFeGNlcHRpb25UeXBlIHdpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgIEZ1bmN0aW9u
PHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICBFeGNlcHRpb25UeXBl
IGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgRXhjZXB0aW9uVHlw
ZSBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBFeGNl
cHRpb25UeXBlIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgc3RvcCgpOwpAQCAtMTE1LDcgKzExNCw3IEBAIHBy
aXZhdGU6CiAKICAgICBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25I
YW5kbGVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKKyAgICBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fc3luY0RhdGE7CiAKICAgICBib29sIG1fd2FpdGluZ0Zv
clJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXJDYWxsYmFjayB7IGZhbHNlIH07CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oCmluZGV4IDc4NjZjZGIxNzc0NjAwN2FiMGE3
YTE3YzU1Yjg3YzdmMTY0YzJiYWUuLjcyNzlmODQ0Y2MyYmJkMmIwMTdmZTBmMDk3ZGUwMTg3MGE5
YTg1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKQEAgLTM2LDcg
KzM2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0d0a0NsaXBib2FyZCBHdGtDbGlwYm9hcmQ7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZm9ybWF0cyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKICAgICB2b2lkIHJlYWRUZXh0KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKICAgICB2b2lkIHJlYWRGaWxlUGF0
aHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Ci0gICAgdm9p
ZCByZWFkQnVmZmVyKGNvbnN0IGNoYXIqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYmKTsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgY2hh
ciosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpPiYmKTsKICAgICB2b2lkIHdyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJik7
CiAgICAgdm9pZCBjbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xp
cGJvYXJkR3RrMy5jcHAKaW5kZXggYzJiZjUxODNiMzBmMTBlOWViNzgxM2NkYWRhMjIzZTkxODlj
NzQ1OS4uNTk2NmQ1NTc0YzI4MmY1MzE2OTQwOTYwODI5NjBhZTMzOWNhMTEwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcApAQCAtMTI2LDE1ICsx
MjYsMTUgQEAgdm9pZCBDbGlwYm9hcmQ6OnJlYWRGaWxlUGF0aHMoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGUKIHN0cnVjdCBSZWFkQnVmZmVyQXN5bmNE
YXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAKLSAgICBleHBsaWNp
dCBSZWFkQnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKKyAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5
bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpPiYmIGhhbmRsZXIpCiAgICAgICAgIDogY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShoYW5kbGVyKSkKICAgICB7CiAgICAgfQogCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJik+IGNvbXBsZXRpb25IYW5kbGVyOwogfTsKIAotdm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZm
ZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDbGlwYm9hcmQ6
OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBndGtfY2xpcGJvYXJkX3JlcXVlc3RfY29udGVudHMobV9jbGlwYm9hcmQsIGdk
a19hdG9tX2ludGVybihmb3JtYXQsIFRSVUUpLCBbXShHdGtDbGlwYm9hcmQqLCBHdGtTZWxlY3Rp
b25EYXRhKiBzZWxlY3Rpb24sIGdwb2ludGVyIHVzZXJEYXRhKSB7CiAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZWFkQnVmZmVyQXN5bmNEYXRhPiBkYXRhKHN0YXRpY19jYXN0PFJlYWRCdWZmZXJB
c3luY0RhdGEqPih1c2VyRGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0Ns
aXBib2FyZEd0azQuY3BwCmluZGV4IDA3YWJiNzEzMTk4ODUzYjc4N2M2MzI0YmQ0ODBiMWUwODhh
MmEzZDMuLjViODFmYThmMjlkM2Y3Y2YxYzNmMDlkMWZjM2M4ODczNGRjNTFhMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKQEAgLTEyMCwxNSAr
MTIwLDE1IEBAIHZvaWQgQ2xpcGJvYXJkOjpyZWFkRmlsZVBhdGhzKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxlCiBzdHJ1Y3QgUmVhZEJ1ZmZlckFzeW5j
RGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgZXhwbGlj
aXQgUmVhZEJ1ZmZlckFzeW5jRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpPiYmIGhhbmRsZXIpCisgICAgZXhwbGljaXQgUmVhZEJ1ZmZlckFz
eW5jRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKT4mJiBoYW5kbGVyKQogICAgICAgICA6IGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoaGFuZGxlcikpCiAgICAgewogICAgIH0KIAotICAgIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5kbGVyOworICAg
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKIH07CiAKLXZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVm
ZmVyKGNvbnN0IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ2xpcGJvYXJk
OjpyZWFkQnVmZmVyKGNvbnN0IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgY29uc3QgY2hhciogbWltZVR5cGVzW10gPSB7IGZvcm1hdCwgbnVsbHB0ciB9
OwogICAgIGdka19jbGlwYm9hcmRfcmVhZF9hc3luYyhtX2NsaXBib2FyZCwgbWltZVR5cGVzLCBH
X1BSSU9SSVRZX0RFRkFVTFQsIG51bGxwdHIsIFtdKEdPYmplY3QqIGNsaXBib2FyZCwgR0FzeW5j
UmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCmluZGV4IGQyMjM4ZmRjOWQxNmY3N2Y4
YzNkMzAyY2E5OTc2ZmU4M2YxYjNmMzcuLmFiODdjMmE3ZThjMzU3YTY1YjNjZmU2MDc5MzhmZGZl
YzhhNjUyYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5oCkBAIC0xMDAsOCArMTAwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGV4ZWN1dGVV
bmRvUmVkbyhVbmRvT3JSZWRvKSBvdmVycmlkZTsKICAgICBib29sIGV4ZWN1dGVTYXZlZENvbW1h
bmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpIG92ZXJyaWRlOwogICAgIHZvaWQg
c3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUmIGltYWdlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvcklt
YWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYg
ZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAotICAgICAgICBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNv
bnN0IFN0cmluZyYgdGl0bGUsCisgICAgICAgIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHZpc2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgb3ZlcnJpZGU7
CiAgICAgdm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBy
ZXNldFNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUlucHV0Q29u
dGV4dEFib3V0RGlzY2FyZGVkQ29tcG9zaXRpb24oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCBhNDExMjEzNWYy
ZWYxOTAxNWE1MmYxZTFiMDNhZTMwYTFmMjIzZDJhLi5jMzYzZTk1NWU4NzljMGUxODZiNDE1MDkw
OTEzMzY1YzIwZmU5MDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsTWFjLm1tCkBAIC00MDAsNyArNDAwLDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1w
bDo6c3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiBpdGVtLCBjb25zdCBTaGFyZWFi
bGVCaXQKICAgICBtX2ltcGwtPnN0YXJ0RHJhZyhpdGVtLCBpbWFnZSk7CiB9CiAKLXZvaWQgUGFn
ZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikK
K3ZvaWQgUGFnZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVm
ZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29u
c3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJs
ZVVSTCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQogewogICAgIGF1dG8gaW1hZ2UgPSBCaXRtYXBJ
bWFnZTo6Y3JlYXRlKCk7CiAgICAgaW1hZ2UtPnNldERhdGEoV1RGTW92ZShpbWFnZUJ1ZmZlciks
IHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0KaW5kZXggZWFmN2UwNzlhZTQxZjdhZGUzZmM4Y2FmNWQ4ODFmMmNhMWJhMjM3NC4uMzIzZWYw
MjkyYWRlMzc2YTIwZTM5NDZkNjZmOWVjZTM5ZTU1MjhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yNzcsNyArMjc3LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFMKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8gaW1hZ2VCdWZm
ZXIgPSBzaGFyZWRNZW1vcnlJbWFnZS0+Y3JlYXRlU2hhcmVkQnVmZmVyKGltYWdlSGFuZGxlLmRh
dGFTaXplKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVCdWZmZXI7CisgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGFyY2hpdmVCdWZmZXI7CiAgICAgaWYgKCFh
cmNoaXZlSGFuZGxlLmhhbmRsZS5pc051bGwoKSkgewogICAgICAgICBhdXRvIHNoYXJlZE1lbW9y
eUFyY2hpdmUgPSBTaGFyZWRNZW1vcnk6Om1hcChhcmNoaXZlSGFuZGxlLmhhbmRsZSwgU2hhcmVk
TWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5
QXJjaGl2ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNLmNwcAppbmRleCBmYTk0MDI1ZWQ3NDczMGQyOGU3MTY0NjI4NWY5ZTViYTY1M2I4ZjEyLi5j
MjhmZTY1ZjBjZjE2NDM5OTgxOGFjYTMyZjk4MWNjNzc4ZjFlOTE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCkBAIC04NCw3ICs4NCw3
IEBAIGJvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24o
Y29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25zCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29s
IFJlbW90ZUNETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25z
dCBTaGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0Citib29sIFJlbW90ZUNETTo6c3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhKSBjb25zdAogewogICAgIC8vIFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwg
aW5zaWRlIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZSgpLgog
ICAgIHJldHVybiB0cnVlOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgUmVtb3RlQ0RNOjpsb2Fk
QW5kSW5pdGlhbGl6ZSgpCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6TG9hZEFuZEluaXRpYWxp
emUoKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RN
OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIC8v
IFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwgaW5zaWRlIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKCkuCiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHko
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCmlu
ZGV4IDBhZGRmODMzNTNiNmVhMWIyZThiMDJjNmI3ZWUzZGFmNDY4Y2QzODMuLjhjNDU0ZWI4M2U1
OTk0YThlNGQ1OTJkNTFkZjkxZmY5YjUyM2NiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaApAQCAtNDgsMTMgKzQ4LDEzIEBAIHByaXZhdGU6
CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1
cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAg
ICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29y
ZTo6Q0RNU2Vzc2lvblR5cGUmLCBjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uJikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBi
b29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBXZWJDb3JlOjpDRE1SZXF1
aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9u
cyYpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50IHBlcnNpc3RlbnRT
dGF0ZVJlcXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBib29s
IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29u
c3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAg
IFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4gY3JlYXRlSW5zdGFuY2UoKSBmaW5hbDsKICAg
ICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
KSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lv
bklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiAgICAgVmVjdG9yPEF0b21TdHJpbmc+
IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3Vy
YXRpb24uc3VwcG9ydGVkSW5pdERhdGFUeXBlczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcAppbmRleCBiNWRl
YTIxZTk5NWE3MzdmMDM2ZjY0NTM4YzFmYjNlY2I1ZTZiYjU1Li5hMTNlNTE0NjBmNmJiOWY4MGVm
M2QxYTg0MmVmYzBiOWY0NDU5MGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcApAQCAtNzgsNyArNzgsNyBA
QCB2b2lkIFJlbW90ZUNETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29u
c3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQwogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVD
RE1JbnN0YW5jZVByb3h5OjpJbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlv
biwgZGlzdGluY3RpdmVJZGVudGlmaWVycywgcGVyc2lzdGVudFN0YXRlKSwgV1RGTW92ZShjYWxs
YmFjayksIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNl
cnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUs
IFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
Y2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9m
YWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKEZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKaW5kZXggMTA2
YmEzYjExNjFjOGRmMDlkNzFkZmU2NzliYTMzZDQyMzA3OWU5Ni4uMmM3ODUxZTQ0MGIwOGE1MmEy
YWU3MGRhN2U0MTg4ODJlM2M2MTQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaApAQCAtNTQsNyArNTQsNyBAQCBw
cml2YXRlOgogCiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6UmVtb3RlOyB9CiAgICAgdm9p
ZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0
ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNl
cnRpZmljYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYm
KSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9p
ZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmtl
eVN5c3RlbTsgfQogICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0
ZVNlc3Npb24oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAppbmRleCBhZjBi
YWQ0YzkwZDhkZDUxMzc3NGFlZjZhMTViNzdiYTg5ZmM1MDY0Li5jNzQwYzA0NTA2ZmRlZGFjOWY0
Y2Y1MDJjMjA1YThhMzdmY2E0NTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCkBA
IC00OSw3ICs0OSw3IEBAIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6UmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmCiB7CiB9CiAKLXZvaWQgUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERh
dGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExp
Y2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9mYWN0b3J5KSB7CiAgICAg
ICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNl
LCBGYWlsZWQpOwpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZwogICAg
IH0sIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7
CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCk7CkBAIC0xMDksNyArMTA5
LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25EYXRhKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnMKICAgICB9CiAKICAgICBtX2ZhY3RvcnktPmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW92ZVNlc3Npb25EYXRhKHNl
c3Npb25JZCwgdHlwZSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoS2V5U3RhdHVz
VmVjdG9yJiYgY2hhbmdlZEtleXMsIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5
PiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKLSAgICAgICAgc3RkOjpvcHRp
b25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gcmVhbE1lc3NhZ2UgPSBzdGQ6Om51bGxvcHQ7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiByZWFsTWVzc2Fn
ZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKG1lc3NhZ2UgJiYgbWVzc2FnZS52YWx1ZSgp
LmJ1ZmZlcigpKQogICAgICAgICAgICAgcmVhbE1lc3NhZ2UgPSBtZXNzYWdlLnZhbHVlKCkuYnVm
ZmVyKCkucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjaGFuZ2Vk
S2V5cyksIFdURk1vdmUocmVhbE1lc3NhZ2UpLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWls
ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXggNGZmZTRjYWNlY2NkZTQzZDVjYjEx
ZTIzNmNhMDQ1YWNkYTgzYTdlYi4uNGU0Y2QyYzAwNWM2YjAwNjVmOWNkYjE4OGM0YmNlMGI1YmZh
NjYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oCkBAIC01OSw4ICs1OSw4IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHNldENsaWVudChXZWFrUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vz
c2lvbkNsaWVudD4mJiBjbGllbnQpIGZpbmFsIHsgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7
IH0KICAgICB2b2lkIGNsZWFyQ2xpZW50KCkgZmluYWwgeyBtX2NsaWVudCA9IG51bGxwdHI7IH0K
LSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vu
c2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJl
c3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0
TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxi
YWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2Fk
U2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VT
ZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGLmNwcAppbmRleCA5YTIxOWE1NDRlNTUzODNmNTRlNzFkYWJkMzU0Y2M0NDBh
NDE0MmI5Li42MjkyNjc5OGM1YzExMzI0YTMxYWE1MGNkYTdlZDFmYmY3NGZlNzAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkYuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBSZW1vdGVJbWFnZURl
Y29kZXJBVkY6OnNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nIGV4cGVjdGVkQ29udGVu
dFNpemUKIAogLy8gSWYgYWxsRGF0YVJlY2VpdmVkIGlzIHRydWUsIHRoZSBjYWxsZXIgZXhwZWN0
cyBlbmNvZGVkRGF0YVN0YXR1cygpIHRvIGJlID49IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZh
aWxhYmxlCiAvLyBhZnRlciB0aGlzIGZ1bmN0aW9uIHJldHVybnMgKGluIHRoZSBzYW1lIHJ1biBs
b29wKS4KLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKIHsKICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRi5oCmluZGV4IGU1Y2ZlOTRlY2QzYTljMDYwMGZjMDAzMjBmZjQzMDYx
YzkwZWQ2OWIuLjQwZDM3MzRmN2EzMjJlOGJhY2I5ZDFjMGRlYTcwNzllMmFkMTdlYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkYuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBSZW1vdGVJbWFnZURlY29k
ZXJBVkYgZmluYWwKICAgICA6IHB1YmxpYyBXZWJDb3JlOjpJbWFnZURlY29kZXIKICAgICAsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlKFJlbW90ZUltYWdlRGVj
b2RlckFWRk1hbmFnZXImIG1hbmFnZXIsIGNvbnN0IFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50
aWZpZXImIGlkZW50aWZpZXIsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCisgICAgc3RhdGljIFJlZjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZShS
ZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBXZWJDb3JlOjpJbWFn
ZURlY29kZXJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFJlbW90ZUltYWdlRGVjb2RlckFWRihtYW5hZ2VyLCBpZGVudGlmaWVyLCBt
aW1lVHlwZSkpOwogICAgIH0KQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6
OlBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBXZWJDb3Jl
OjpTdWJzYW1wbGluZ0xldmVsID0gV2ViQ29yZTo6U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwg
Y29uc3QgV2ViQ29yZTo6RGVjb2RpbmdPcHRpb25zJiA9IFdlYkNvcmU6OkRlY29kaW5nT3B0aW9u
cyhXZWJDb3JlOjpEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lk
IHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbDsKLSAgICB2b2lkIHNldERh
dGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwor
ICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZy
YW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
TWFuYWdlci5jcHAKaW5kZXggNDFkNTM4ODAyM2QzOTE0OTUyMTgzNWY2ODhkZTRkNDhmNjVkNzY3
ZS4uMDgyYjMzNjZjOGJjNzEzMGQ3NWQ1Njk4YTdkNzllNjg5MmFkOGY3MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmUHRyPFJlbW90ZUltYWdl
RGVjb2RlckFWRj4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6Y3JlYXRlSW1hZ2VEZWNv
ZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRp
b24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQorUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGTWFuYWdlcjo6Y3JlYXRlSW1hZ2VEZWNvZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikK
IHsKICAgICBzdGQ6Om9wdGlvbmFsPEltYWdlRGVjb2RlcklkZW50aWZpZXI+IGltYWdlRGVjb2Rl
cklkZW50aWZpZXI7CiAgICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZl
cmVuY2UgeyBkYXRhIH07CkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBSZW1vdGVJbWFnZURlY29k
ZXJBVkZNYW5hZ2VyOjpzZXRVc2VHUFVQcm9jZXNzKGJvb2wgdXNlR1BVUHJvY2VzcykKICAgICBJ
bWFnZURlY29kZXI6Omluc3RhbGxGYWN0b3J5KHsKICAgICAgICAgUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGOjpzdXBwb3J0c01lZGlhVHlwZSwKICAgICAgICAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpj
YW5EZWNvZGVUeXBlLAotICAgICAgICBbdGhpc10oU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pIHsKKyAgICAgICAgW3RoaXNd
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikgewogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUltYWdlRGVj
b2RlcihkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKTsKICAgICAgICAgfQogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIu
aAppbmRleCBjMjM3ODJiNjUwNGVjNzliZTQ2ZTEyNmY0ZTU5MWIzZmY3ZjZkYmE4Li4zNjE4YWZk
MTIwOThiNTU3NmI0ZGQ0ZmZiZjNjMDZmYmE4NDJhNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRk1hbmFnZXIuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24mIGVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAKIHByaXZhdGU6Ci0gICAg
UmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlSW1hZ2VEZWNvZGVyKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6QWxw
aGFPcHRpb24sIFdlYkNvcmU6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBSZWZQ
dHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGVJbWFnZURlY29kZXIoV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29y
ZTo6QWxwaGFPcHRpb24sIFdlYkNvcmU6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAog
ICAgIC8vIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQuCiAgICAgdm9pZCBncHVQcm9jZXNz
Q29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA5NjZmYzkzYjc3YWZhYTNlNjIwOGQ3YWJhNWFl
ZDJjN2E5NGM3NGIyLi4wMDVhMzdjYzI2ZWM0YzA5MDFiZjRmMzcxMjIzODY1ZGUyZDE2NmJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZl
clByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZTo6flNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUoKQogICAgIG1f
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9
CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6YXBwZW5kKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6YXBwZW5kKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKCFtX2dwdVByb2Nlc3ND
b25uZWN0aW9uKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCmlu
ZGV4IDM2MDE3NWJmYmU5ZDFhZjgzZWQ1NzkxMzczYjc3NWVlNzUwYWM3Y2MuLmVhNWZhM2VjMzZj
MmI4NTllZTU3OGNjZDBlMDM0OGM3M2NiODZkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBTb3VyY2VCdWZmZXJQcml2
YXRlIG92ZXJyaWRlcwogICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wpIGZpbmFsOwotICAgIHZvaWQg
YXBwZW5kKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgYXBw
ZW5kKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2
b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgZmluYWw7CiAg
ICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0
ZS5jcHAKaW5kZXggMTFiNGE4NmU0ODUyZjZjMjA2MWZhM2ZjOWFmMjlmODg5OWY0ZWI5Zi4uYjQw
ODlmZDM1NDhjOTdmMTdmYzJiOWZiMDAyNzgwZDY0M2NmMjNiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2
YXRlLmNwcApAQCAtMTY1LDEwICsxNjUsMTAgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6
c3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KiBzdG9yYWdlLCBjb25zdCBXZWJDb3JlOjoKICAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OkF1ZGlv
U2FtcGxlc1N0b3JhZ2VDaGFuZ2VkIHsgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3Zl
KGhhbmRsZSksIGRhdGFTaXplIH0sIGZvcm1hdCwgZnJhbWVDb3VudCB9LCBtX2lkZW50aWZpZXIp
OwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpmZXRjaERhdGEoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZTo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRv
dWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OkZldGNoRGF0YSB7IH0s
IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtaW1lVHlw
ZSA9IG1pbWVUeXBlKCldKGF1dG8mJiBkYXRhLCBkb3VibGUgdGltZUNvZGUpIG11dGFibGUgewot
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmIChkYXRhLnNpemUoKSkKICAg
ICAgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSwgbWlt
ZVR5cGUsIHRpbWVDb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCmluZGV4IDMwM2E1NGY3NmYxODVl
OTY0NTRlZjlmNWJiNDYxZjI4ZTEyNjc4NmQuLjU3NmZkMWM2ZTk3YzBjYWQ4Y2JmZWM5NGUzYmQz
NjMzMDc2ZTQ0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlCiAgICAg
dm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpNZWRpYVNhbXBsZSYsIFdlYkNvcmU6
OlZpZGVvU2FtcGxlTWV0YWRhdGEpIGZpbmFsOwotICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJikgZmluYWw7CisgICAgdm9pZCBmZXRjaERhdGEoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJikgZmluYWw7CiAgICAgdm9p
ZCBzdG9wUmVjb3JkaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAgICAg
dm9pZCBzdGFydFJlY29yZGluZyhTdGFydFJlY29yZGluZ0NhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29uc3Qg
V2ViQ29yZTo6UGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBXZWJDb3JlOjpBdWRpb1N0cmVhbURl
c2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0
ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCAwNjczZjc0ZGRmYjQ4ZTViZGY0MzhjZDkwYmUz
Nzk0ZWVlMjA5MWJiLi4wMzUzYWFiZjdkNGI5MjVhYTJmMTU2MmQ1NzNhYWYzMDkzYzgzYmM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQ
SUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCkBA
IC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21l
bnQ7CiBjbGFzcyBOb2RlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3R5bGVQcm9wZXJ0
aWVzOwogc3RydWN0IFNpbXBsZVJhbmdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJ
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggYTA2MzUyMDQzMzViM2FiMGU2
ZGZiMGM2Nzc3NjdmNDI4ZThhNzdlMi4uMTgwYjExMTFlY2YwMTEzMjgwOTI2NmExYmNlMjdkMjYw
ZTRmYTAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudC5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIERPTVdpbmRvd0V4dGVuc2lv
bjsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU2LDcgKzU2LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgflBhZ2VMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIEFQSTo6T2JqZWN0KikgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJp
bmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6VVJMJiwgQVBJOjpPYmplY3QqKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2Um
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0
IFdURjo6VVJMJiwgQVBJOjpPYmplY3QqKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJh
bWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFn
ZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmluZGV4IDhkNTI0YjUy
NWM2ZTdhMGNjNmJkZTVlODBhNDdjMTcxZTM0MTQ2OGMuLjk0ZmVkMmU3ZTM2MzAyOTFmOTlmNTM3
OGFjYmRkMmMzOTUwZDNlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuY3BwCkBAIC02MiwxOCArNjIsMTkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBS
ZXMKIHN0YXRpYyB2b2lkIHJlbGVhc2VTaGFyZWRCdWZmZXIodW5zaWduZWQgY2hhciosIGNvbnN0
IHZvaWQqIGRhdGEpCiB7CiAgICAgLy8gQmFsYW5jZWQgYnkgcmVmKCkgaW4gSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KCkuCi0gICAgc3RhdGljX2Nh
c3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOworICAg
IHN0YXRpY19jYXN0PGNvbnN0IFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwogfQogCi12
b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChX
ZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZl
ciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVu
Y29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJl
cXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC53aWxsTG9hZERhdGFS
ZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8QVBJOjpEYXRhPiBkYXRhOwog
ICAgIGlmIChzaGFyZWRCdWZmZXIpIHsKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5yZWYoKTsKLSAg
ICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2ln
bmVkIGNoYXIqKXNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPnNpemUoKSwgcmVs
ZWFzZVNoYXJlZEJ1ZmZlciwgc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYXV0byBjb250aWd1b3Vz
QnVmZmVyID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBjb250aWd1
b3VzQnVmZmVyLT5yZWYoKTsKKyAgICAgICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91
dENvcHlpbmcoY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBjb250aWd1b3VzQnVmZmVyLT5zaXpl
KCksIHJlbGVhc2VTaGFyZWRCdWZmZXIsIGNvbnRpZ3VvdXNCdWZmZXIucHRyKCkpOwogICAgIH0K
IAogICAgIG1fY2xpZW50LndpbGxMb2FkRGF0YVJlcXVlc3QodG9BUEkoJnBhZ2UpLCB0b0FQSShy
ZXF1ZXN0KSwgdG9BUEkoZGF0YS5nZXQoKSksIHRvQVBJKE1JTUVUeXBlLmltcGwoKSksIHRvQVBJ
KGVuY29kaW5nTmFtZS5pbXBsKCkpLCB0b1VSTFJlZih1bnJlYWNoYWJsZVVSTC5zdHJpbmcoKS5p
bXBsKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggMzZiZDk4MGIy
ZmFhMWFmNDVhYzMxMDZlYjAxZTlmMzc2YmExM2FjZi4uODYzYmRhYjYyODRjYTNhYWQyZjlkNWZm
ZjVmZDY4ZWFiOGIyYjczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KGNvbnN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJh
c2UqKTsKIAogICAgIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwotICAgIHZvaWQg
d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBX
VEY6OlN0cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgdm9p
ZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJp
bmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSYs
IFdlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSYs
IFdlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2Rl
bFBsYXllck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KaW5kZXggZTUyNGQ4ZTFiMDE3YWE4ZTVlMDNi
ODkyZDkyYjc1ODk0YzU4ZjM3NC4uYTc4NGVjMzg4YjIyNTI0Y2MwZGE2MzI3OGU1ZTc1OTEzN2Rj
ZjY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktp
dElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tCkBAIC0x
MDYsNyArMTA2LDcgQEAgdm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYzo6Y3Jl
YXRlRmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCiAgICAgaWYgKGZpbGUgPD0gMCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9k
ZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAg
ICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOwogICAgIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKICAgICBtX2ZpbGVQYXRoID0gZmlsZVBhdGg7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA5NGQ5ZDJjYzNlYjI4ODBjZGNmMjJjMDcy
YTM5YTk4OTU1ZmQ0NDMwLi4wMjI3MGE1M2FmOWJhOGJmODBkN2MzYjNkY2RjOGNlYjU2NTE3NmUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTI4MSw5ICsyODEsOSBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsCiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogICAg
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFy
ZWRCdWZmZXIoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZm
ZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikgewotICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBj
cmVhdGUgU2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNv
dXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBm
cm9tIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVxdWVz
dC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IDI1OTQ0OTQyMzg1NWZlZDNhYWFhYjQxNDgxOWY4OTUxYTNiOGI3
ZmYuLjMxMGZjYTc4NzVjMzJjM2NkNzQ3OGRiNjRmNTlhYzJjZjUwMTYzOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgIGlmIChJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKG1f
Y29yZUxvYWRlci0+ZnJhbWUoKSwgcmVzcG9uc2UpKSB7CiAgICAgICAgIGF1dG8gaW50ZXJjZXB0
ZWRSZXF1ZXN0SWRlbnRpZmllciA9IG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpOwogICAgICAg
ICBtX2ludGVyY2VwdENvbnRyb2xsZXIuYmVnaW5JbnRlcmNlcHRpbmdSZXNwb25zZShpbnRlcmNl
cHRlZFJlcXVlc3RJZGVudGlmaWVyKTsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShtX2NvcmVMb2FkZXItPmZyYW1lKCksIHJlc3BvbnNl
LCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJl
ZiB7ICp0aGlzIH0sIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIHBvbGljeURlY2lzaW9u
Q29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRs
ZXIpXShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBpbnNwZWN0b3JSZXNwb25zZSwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShtX2NvcmVMb2FkZXItPmZyYW1l
KCksIHJlc3BvbnNlLCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIHBv
bGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29t
cGxldGlvbkhhbmRsZXIpXShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBpbnNwZWN0b3JSZXNwb25z
ZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG92ZXJyaWRlRGF0YSkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5pZGVudGlm
aWVyKCkpIHsKICAgICAgICAgICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygi
ZGlkUmVjZWl2ZVJlc3BvbnNlOiBub3QgY29udGludWluZyBpbnRlcmNlcHQgbG9hZCBiZWNhdXNl
IG5vIGNvcmVMb2FkZXIgb3Igbm8gSUQiKTsKICAgICAgICAgICAgICAgICBtX2ludGVyY2VwdENv
bnRyb2xsZXIuY29udGludWVSZXNwb25zZShpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyKTsK
QEAgLTI5NSwxMSArMjk1LDExIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kCiAgICAgTE9HKE5l
dHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJj
ZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgp
KTsKICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNl
OiIpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJ
blNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAoIWJ1ZmZlcikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZyb20gU2hhcmVh
YmxlUmVzb3VyY2Ugc2VudCBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7Ci0gICAgICAgIFdF
QlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0
byBjcmVhdGUgU2hhcmVkQnVmZmVyIik7CisgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVB
U0VfTE9HKCJkaWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciIpOwogICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBtX2NvcmVMb2FkZXItPmZy
YW1lKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKICAg
ICAgICAgICAgICAgICBwYWdlLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0
aWNNZXNzYWdlKFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxFcnJvcktl
eSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmNyZWF0ZVNoYXJlZEJ1ZmZlckZh
aWxlZEtleSgpLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCA0MmRlNDYxNDE5Nzc4
YjdjNDUwZmNhMWViMDM3YzFjZTk3ZDJkNjMxLi5hN2Y0NWM4NDAxYjJmZDJmODcwZTM2NzhjNThm
YzMxMGMyZTFmMjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5oCkBAIC0yMDcsNyArMjA3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBy
aXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sKSBmaW5hbCB7IH0KICAgICBib29sIGdldEZv
cm1WYWx1ZShTdHJpbmcmIGZvcm1WYWx1ZSkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBi
b29sIGhhbmRsZVNjcm9sbChXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9s
bEdyYW51bGFyaXR5KSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBs
aXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBmaW5hbDsKICAgICB2
b2lkIHdpbGxEZXRhY2hSZW5kZXJlcigpIGZpbmFsOwogICAgIGJvb2wgcGx1Z2luSGFuZGxlc0Nv
bnRlbnRPZmZzZXRGb3JBY2Nlc3NpYmlsaXR5SGl0VGVzdCgpIGNvbnN0IGZpbmFsOwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0K
aW5kZXggZDIzYWJiOWU2NTExYjEzYmJkNTIzYWY0NTFmNDQxNzg3M2E2YzFlMC4uZDQ3ZjMyYjdk
NDkxOTU2YmRjZTc3YmZlNmYxNWNhNzg2NWJmZDE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0yNTUyLDcgKzI1NTIsNyBA
QCB2b2lkIFBERlBsdWdpbjo6bm90aWZ5RGlzcGxheU1vZGVDaGFuZ2VkKGludCkKICAgICB1cGRh
dGVTY3JvbGxiYXJzKCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBERlBsdWdpbjo6bGl2
ZVJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUERG
UGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBOU0RhdGEgKnBkZkRhdGEg
PSBsaXZlRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5o
CmluZGV4IDg4ZjQ1Y2U1MWNlMzFkZjBjNWIzYjc1ODYyMzZjM2YwZDljOTNhZDMuLjU4ZDcwYTM5
YTE2ZDZhNGMwZThiMGNhOWQwM2FjM2QzN2FlZGZjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIEludFBvaW50Owog
Y2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBTY3JvbGxiYXI7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTI4OCw3ICsyODgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdl
YkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBwb2ludEluTG9jYWxDb29yZGluYXRlcykgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291
cmNlRGF0YSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFy
eUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpID0gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBk
YzU2ZDJjNjZlZDg2Yjk2Mjk1MGEzNDgyMDgzZTM0NThiMzJiNTJjLi40ZDUzNzM0NzI3MTM2Y2Q2
ZjQxZTA5NzExZWI3YmZkMDM0N2Q0YjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNDAzLDEwICs0MDMsNyBAQCB2b2lkIFBsdWdp
blZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50
IGxlbmd0aCkKIAogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VSVCht
X21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpIYXNSZWNlaXZlZFJlc3Bv
bnNlKTsKLSAgICAgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEpCi0gICAgICAgICAgICBtX21h
bnVhbFN0cmVhbURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCi0gICAgICAgIG1fbWFu
dWFsU3RyZWFtRGF0YS0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOworICAgICAgICBtX21hbnVhbFN0
cmVhbURhdGEuYXBwZW5kKGJ5dGVzLCBsZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC00MzcsNyArNDM0LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbChj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewog
ICAgICAgICBtX21hbnVhbFN0cmVhbVN0YXRlID0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVk
OwogICAgICAgICBtX21hbnVhbFN0cmVhbUVycm9yID0gZXJyb3I7Ci0gICAgICAgIG1fbWFudWFs
U3RyZWFtRGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS5yZXNldCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MjYsMTEgKzkyMywxMSBAQCB2b2lkIFBs
dWdpblZpZXc6OndpbGxEZXRhY2hSZW5kZXJlcigpCiAgICAgbV9wbHVnaW4tPndpbGxEZXRhY2hS
ZW5kZXJlcigpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVz
b3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQbHVnaW5W
aWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXpl
ZCB8fCAhbV9wbHVnaW4pIHsKLSAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSAmJiBtX21h
bnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKLSAgICAgICAg
ICAgIHJldHVybiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgICAgIGlmIChtX21hbnVhbFN0cmVh
bVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKKyAgICAgICAgICAgIHJldHVy
biBtX21hbnVhbFN0cmVhbURhdGEuZ2V0KCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQpAQCAtMTI0Myw5ICsxMjQwLDkgQEAgdm9pZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51
YWxTdHJlYW0oKQogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KICAgICBpZiAobV9tYW51YWxT
dHJlYW1EYXRhKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICptX21hbnVh
bFN0cmVhbURhdGEpCisgICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLnRh
a2UoKTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQog
ICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0
YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0
YSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFu
dWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDIxMjZlYjhlZGI1NTkzODZiMzQyMjVlYjJiZDViZmNk
NjgwMjNmMjMuLmY3NWFjODliZjM5YTUxZTAxOGQyNjJjMGJlN2MwYTYyZGViNjkzYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTM3LDYg
KzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpblZpZXdCYXNlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3Bv
bnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpA
QCAtMTE1LDcgKzExNiw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxkQWxsb3dTY3JpcHRp
bmcoKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURh
dGEoKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29r
dXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAgICBTdHJpbmcgZ2V0
U2VsZWN0aW9uRm9yV29yZEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIGNvbnN0
OwogICAgIGJvb2wgZXhpc3RpbmdTZWxlY3Rpb25Db250YWluc1BvaW50KGNvbnN0IFdlYkNvcmU6
OkZsb2F0UG9pbnQmKSBjb25zdDsKQEAgLTI1Miw3ICsyNTMsNyBAQCBwcml2YXRlOgogCiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX21hbnVhbFN0cmVhbVJlc3BvbnNlOwogICAgIFdl
YkNvcmU6OlJlc291cmNlRXJyb3IgbV9tYW51YWxTdHJlYW1FcnJvcjsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlciBtX21hbnVhbFN0cmVhbURhdGE7CiAKICAgICAvLyBUaGlzIHNuYXBz
aG90IGlzIHVzZWQgdG8gYXZvaWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0aGUgcGx1Z2luIHJ1biBK
UyBkdXJpbmcgcGFpbnRpbmcuCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV90cmFuc2ll
bnRQYWludGluZ1NuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNw
cAppbmRleCBmZWU4ZmVhN2JjYzhkNTljMDdlM2M1YmE0ZDYwOTU1MmE0ZDYyOGJmLi5iMDRjY2Nm
MTEzZTQ5MjhmYTY2MzgzYmQyNDMxZGI4NzQ4NTNjY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNzEsMTYgKzcxLDE1IEBAIHZvaWQgV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbV9uZWVkc0NvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKLXZvaWQg
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6
OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsK
ICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2Fp
dGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkgewotICAgICAgICBpZiAo
IXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRh
KSkKLSAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gYnVmZmVyLT5jb3B5KCk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNl
RGF0YSktPmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBpZiAoIXN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpKQorICAgICAg
ICAgICAgbV9yZXNwb25zZURhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCk7CisgICAgICAgIHN0
ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoV1RGTW92
ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA2LDggKzIwNSw4IEBA
IHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2UoKQogICAgIHN3aXRjaE9uKG1fcmVzcG9uc2VEYXRhLCBbdGhpc10oc3RkOjpudWxs
cHRyX3QmKSB7CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlz
aCgpOwotICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAg
IGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgfSwgW3RoaXNdKGNvbnN0IFNo
YXJlZEJ1ZmZlckJ1aWxkZXImIGJ1ZmZlcikgeworICAgICAgICBkaWRSZWNlaXZlRGF0YSgqYnVm
ZmVyLmdldCgpKTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmlu
aXNoKCk7CiAgICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggYjM0N2NhZDJhYjVmNTcxYjFhMGUyMDcy
MDgwNDM2N2Q3NzAxODYwMC4uNmIwYTQxN2NmMGQzYWUwZDdiODkzYTk5ODY4M2FiZjJiYzRhNGQ5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NlcnZpY2VXb3JrZXJGZXRjaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtl
clR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDksNyArNTAsNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
OwogICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxXZWJDb3JlOjpGb3Jt
RGF0YT4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaCgpIGZpbmFsOwpAQCAtODIsNyArODMs
NyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVy
OwogICAgIGJvb2wgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1l
c3NhZ2UgeyBmYWxzZSB9OwotICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CisgICAgc3RkOjp2YXJpYW50
PHN0ZDo6bnVsbHB0cl90LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyLCBSZWY8V2ViQ29y
ZTo6Rm9ybURhdGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9u
c2VEYXRhOwogICAgIGJvb2wgbV9kaWRGaW5pc2ggeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcAppbmRleCA4MWUzNzllMzNkMWE5YWNkYzg2ZWY1YzRiZTIxYTcyNjBkOTRkNDhl
Li43Y2ZjMDNhODVkMzlkODFmMzkyYzBhYTEzMGY4M2ZiZDJjODM0ZjFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91
bGRBcHBseVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVydGllcyYgc3R5bGUsIGNvbnN0IHN0ZDo6CiAK
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6
cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3Rl
ckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGlk
ZW50aWZpZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxlTmFtZSwgZGF0YS5nZXQoKSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDUwNmQ5ZjU0MTM4ZDM3Y2I0YzY0ZWQ0NjBmNTlhNWMy
OGZlNTIyYTYuLmIwNTg2MTg5MWVjYzg0YzYzNjhhMjA2YzI3MDEwNjBmNTA1MmY1ZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3Vs
ZE1vdmVSYW5nZUFmdGVyRGVsZXRlKGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwgY29uc3Qg
V2ViQ29yZTo6U2ltcGxlUmFuZ2UmKSBmaW5hbDsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCi0gICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmls
ZU5hbWUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgcmVn
aXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2ht
ZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0
YWNobWVudHMoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YmRiYmNjZDNmYmM2MjBl
MDc1NDEwNWNlYTA5ZWRkZjA1MTIwYjZiLi4xNGEwODNjYTIwN2E5MDYzY2Y4MGIxZTdlOTY3MGE0
ODdjZjRkMzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExODgsOCAr
MTE4OCw4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1
bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJl
c291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwotICAgICAgICAgICAgSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNv
dXJjZURhdGEtPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3Vy
Y2VEYXRhLT5zaXplKCkgOiAwKTsKKyAgICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7Cisg
ICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VE
YXRhID8gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0
ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOwogICAg
ICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hM
b2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihsb2FkZXItPnJlc3BvbnNlKCkuc3Vn
Z2VzdGVkRmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkpOwogICAgICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggZjQxYTcwZWY1YmI2YzBlY2U4YmQ4NjI3NDEx
NjAxY2Y3MzBlNjJhMS4uNGE4YmVlNTdmZGIxZmZjZGVmMDA4OWZhNjVlOTc1Mzc1MGQyNTBlOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBp
bnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgYwogICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAot
aW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVm
ZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQoraW50NjRf
dCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsK
ICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZm
ZXItPnNpemUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGUyODA5OTYz
ZjRmNTA2ODFiN2QwMWY0MWE2ODUzMWFiNzMyMTRmYjAuLjFmZjgzZTExYmMxNzg5YWFjMGY5MDBj
OTNkYzIyZmJmMjM5ZWEyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTY2
LDcgKzY2LDcgQEAgcHJpdmF0ZToKIAogICAgIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90
IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7Ci0gICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Cisg
ICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IGludDY0X3Qgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggMDdiMTY3ZTBlZWVlNzY4
ODc1YjAzOWRmYTU5ZjVmZDEzYzc1NGUxMC4uZWQ5M2FlYjdlYTkyMGFlNmM2ZDM2Yjk4NWQ4MWYx
MjY2ZDc3NTdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3Bw
CkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBh
Z2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTQ1
LDEzICs0NCwxMiBAQCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cgogICAgIDogbV9maWxlTmFtZSB7
IGZpbGVOYW1lIH0KICAgICAsIG1fdXRpIHsgdXRpIH0KICAgICAsIG1fcGFnZUlEIHsgcGFnZUlE
IH0KLSAgICAsIG1fYnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CiB7CiB9CiAKIFdl
YlByZXZpZXdMb2FkZXJDbGllbnQ6On5XZWJQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0
OwogCi12b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJl
Y2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IGF1dG8gd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobV9wYWdlSUQp
OwogICAgIGlmICghd2ViUGFnZSkKQEAgLTY5LDEzICs2NywxMiBAQCB2b2lkIFdlYlByZXZpZXdM
b2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoKQogICAgIGlmICghd2ViUGFnZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUobV9idWZmZXIuZ2V0KCkpOwotICAgIG1fYnVmZmVyLT5jbGVhcigpOwor
ICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
KG1fYnVmZmVyLT50YWtlKCkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGll
bnQ6OmRpZEZhaWwoKQogewotICAgIG1fYnVmZmVyLT5jbGVhcigpOworICAgIG1fYnVmZmVyLT5y
ZXNldCgpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlcXVlc3RQYXNz
d29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9X
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwNDkyY2VlYzJmOWI5
Y2Q4NTM4Mzg0ODRmYmMyNmMwN2NiNTNkYTg3Li43YjgyMTUwZTkwMWNkM2FjMjk3YjM3YTc3NmJk
ZGMwZjJhOWIwMDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApA
QCAtMjksNiArMjksOCBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lQcmV2aWV3TG9hZGVy
Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ1
LDcgKzQ3LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdlYlByZXZpZXdMb2FkZXJDbGll
bnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGksIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoKSBvdmVycmlkZTsK
ICAgICBib29sIHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KQEAgLTU0LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcgbV9m
aWxlTmFtZTsKICAgICBjb25zdCBTdHJpbmcgbV91dGk7CiAgICAgY29uc3QgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgbV9wYWdlSUQ7Ci0gICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4
IGE2NGM2YThiM2M2OTVlMTczMzY0MzM2YmNiMGY2OGRiZGQ5YzJkMjEuLmUxZTBlNjExMmEyZGVk
YzNiOGJiNjMwOTg1MzUzNzZlZjQzYWQ1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMu
bW0KQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0
ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogCiAgICAgTlNV
UkxSZXNwb25zZSAqcmVzcG9uc2UgPSBpbWFnZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7
CiAgICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1h
Z2UoKS0+ZGF0YSgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBpbWFnZS0+aW1hZ2UoKS0+ZGF0
YSgpOwogICAgIHNpemVfdCBpbWFnZVNpemUgPSBpbWFnZUJ1ZmZlci0+c2l6ZSgpOwogCiAgICAg
YXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmltYWdl
QnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cAppbmRleCA5YmQ0Y2QyZDBjYjEwM2I0NWFhOGU2YzFkNDI3YzBiMTdiZjVlZDEzLi5kODhmNDRj
ZmNkZTVlMTVmNjZjMTI0YjQwZjViNTQzNWI5NDY5N2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0zNDAsMTAgKzM0MCwxMCBAQCBTdHJp
bmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50
TG9hZGVyID0gbV9jb3JlRnJhbWUtPmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCk7CiAg
ICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFp
blJlc291cmNlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWlu
UmVzb3VyY2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBp
ZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICByZXR1
cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+ZGF0YSgpLCBt
YWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygp
LmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5S
ZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6Y29udGVudHNBc1N0
cmluZygpIGNvbnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCA0YWQ2NzdhM2QwNmIyYmMxMzA5ZWI5NWVmNjQ1ZDhiNmZiNTY3YmZlLi5mNDZk
MTk2ODcyNDdhMTQ2YjVhZTEyNDQ1NzVjMjUwNzA4YmM4ZTNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTczOCw3ICsxNzM4LDcgQEAgTk9f
UkVUVVJOIHZvaWQgV2ViUGFnZTo6bG9hZFJlcXVlc3RXYWl0aW5nRm9yUHJvY2Vzc0xhdW5jaChM
b2FkUGFyYW1ldGVycyYmLCBVUkwKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQogCi12b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0
ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgc2hhcmVkQnVmZmVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3Vic3RpdHV0ZURhdGE6OlNl
c3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKK3ZvaWQg
V2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25h
bDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgc2hhcmVkQnVmZmVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3Vic3RpdHV0ZURhdGE6OlNl
c3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKIHsKICNp
ZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbihpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCAmbV9tYWluRnJhbWUuZ2V0KCkp
OwpAQCAtMTc1Myw3ICsxNzUzLDcgQEAgdm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0
X3QgbmF2aWdhdGlvbklELCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2gKIAogICAgIC8v
IExldCB0aGUgSW5qZWN0ZWRCdW5kbGUga25vdyB3ZSBhcmUgYWJvdXQgdG8gc3RhcnQgdGhlIGxv
YWQsIHBhc3NpbmcgdGhlIHVzZXIgZGF0YSBmcm9tIHRoZSBVSVByb2Nlc3MKICAgICAvLyB0byBh
bGwgdGhlIGNsaWVudCB0byBzZXQgdXAgYW55IG5lZWRlZCBzdGF0ZS4KLSAgICBtX2xvYWRlckNs
aWVudC0+d2lsbExvYWREYXRhUmVxdWVzdCgqdGhpcywgcmVxdWVzdCwgY29uc3RfY2FzdDxTaGFy
ZWRCdWZmZXIqPihzdWJzdGl0dXRlRGF0YS5jb250ZW50KCkpLCBzdWJzdGl0dXRlRGF0YS5taW1l
VHlwZSgpLCBzdWJzdGl0dXRlRGF0YS50ZXh0RW5jb2RpbmcoKSwgc3Vic3RpdHV0ZURhdGEuZmFp
bGluZ1VSTCgpLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmpl
Y3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgbV9sb2FkZXJDbGllbnQtPndpbGxM
b2FkRGF0YVJlcXVlc3QoKnRoaXMsIHJlcXVlc3QsIGNvbnN0X2Nhc3Q8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcio+KHN1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKSksIHN1YnN0aXR1dGVEYXRhLm1pbWVU
eXBlKCksIHN1YnN0aXR1dGVEYXRhLnRleHRFbmNvZGluZygpLCBzdWJzdGl0dXRlRGF0YS5mYWls
aW5nVVJMKCksIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVj
dHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIAogICAgIC8vIEluaXRhdGUgdGhlIGxvYWQg
aW4gV2ViQ29yZS4KICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QoKm1fbWFp
bkZyYW1lLT5jb3JlRnJhbWUoKSwgcmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwpAQCAtMzg2MSw3
ICszODYxLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFtZShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKIAogdm9pZCBXZWJQYWdlOjpnZXRN
YWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAo
V2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJ
RCkpIHsKICAgICAgICAgaWYgKFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSBwbHVnaW5WaWV3Rm9y
RnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpKSkKICAgICAgICAgICAgIGJ1ZmZlciA9IHBsdWdpblZp
ZXctPmxpdmVSZXNvdXJjZURhdGEoKTsKQEAgLTM4NzcsNyArMzg3Nyw3IEBAIHZvaWQgV2ViUGFn
ZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENv
bXBsZXRpb25IYW5kCiAgICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CiB9CiAKLXN0YXRpYyBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNv
bnN0IFVSTCYgcmVzb3VyY2VVUkwpCitzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXJj
ZVVSTCkKIHsKICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFsb2FkZXIpCkBAIC0zODkyLDcgKzM4OTIsNyBAQCBz
dGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZy
YW1lLCBjb25zdCBVUkwmIHJlc291cgogCiB2b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZy
b21GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVS
TFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKICAgICBpZiAoYXV0byogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53
ZWJGcmFtZShmcmFtZUlEKSkgewogICAgICAgICBVUkwgcmVzb3VyY2VVUkwoVVJMKCksIHJlc291
cmNlVVJMU3RyaW5nKTsKICAgICAgICAgYnVmZmVyID0gcmVzb3VyY2VEYXRhRm9yRnJhbWUoZnJh
bWUtPmNvcmVGcmFtZSgpLCByZXNvdXJjZVVSTCk7CkBAIC02OTg3LDcgKzY5ODcsNyBAQCB2b2lk
IFdlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJh
Y2tJRCBsb2FkSWRlbnRpZmllcgogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgZG9jdW1lbnRMb2FkZXItPmRpZEdl
dExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLnRvSW50ZWdlcigp
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpIG11dGFibGUgeworICAgIGRvY3VtZW50TG9hZGVy
LT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllci50b0lu
dGVnZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
IChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0YSkgbXV0YWJsZSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgaWNvbkRhdGEgfSk7CiAgICAgfSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYTVjNDJiMzJjZDg5
MmZkZjU4NmY4NWUyOTE2NDNmNGU3MTk3NjE5MC4uZDk5NmQxM2NiYTVjMmM0MmE1ZjdlOTlhZjE1
ZjRiOGZjY2Y0YmJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaApAQCAtMjE2LDcgKzIxNiw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwogY2xhc3MgU2VsZWN0aW9uR2Vv
bWV0cnk7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiBjbGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0OwogY2xh
c3MgVmlzaWJsZVBvc2l0aW9uOwpAQCAtMTM5Nyw3ICsxMzk3LDcgQEAgcHVibGljOgogCiAjaWYg
VVNFKFFVSUNLX0xPT0spCiAgICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpKTsK
LSAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpOwogICAgIHZvaWQgcmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFN0cmluZyYpPiYmKTsKICNlbmRpZgogCkBAIC0xNTk2LDcgKzE1OTYsNyBAQCBwcml2
YXRlOgogCiAgICAgU3RyaW5nIHNvdXJjZUZvckZyYW1lKFdlYkZyYW1lKik7CiAKLSAgICB2b2lk
IGxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0
IFVzZXJEYXRhJiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFdl
YkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFdlYkNvcmU6
OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CisgICAgdm9pZCBsb2FkRGF0YUltcGwodWlu
dDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQs
IHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRh
dGEmLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgV2ViQ29yZTo6
U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgV2ViQ29yZTo6U2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3k6OlNob3VsZE5vdEFsbG93KTsKIAogICAgIC8vIEFjdGlvbnMKICAgICB2b2lkIHRyeUNs
b3NlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBjOTVjMzg0NjM5
MjIxODRmMjU3YTcxOWRiNWJhOWE0ODI5YWVkZjFiLi44NWU2NTE4NjkyZWQ2MGM3ODhlNzJhN2Nl
MzJmM2YwZTE1Y2E3NzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMzIxNyw3ICszMjE3LDcgQEAgdm9pZCBXZWJQYWdl
OjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbikKICAgICAgICAgQ2FjaGVk
SW1hZ2UqIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCplbGVtZW50LnJlbmRl
cmVyKCkpLmNhY2hlZEltYWdlKCk7CiAgICAgICAgIGlmICghY2FjaGVkSW1hZ2UpCiAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGNhY2hl
ZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CiAgICAgICAg
IGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvIHNoYXJlZE1l
bW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKQEAgLTQ2ODMs
NyArNDY4Myw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lCiAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
KGZpbGVOYW1lLCB1dGkpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hMb2FkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3Zv
aWQgV2ViUGFnZTo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVCghYnVm
ZmVyLmlzRW1wdHkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggNjBmODRhNDVjMzgwMzVmMmRjZTkyNWNiZWUyYzMx
OTkyZTY0MDMyZi4uM2NiNTA2MjRiZjBkN2E4MTEwMmY3Yzg1NDRiMzQxZGI5NjYyN2JkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldERhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldAogICAgIGlmIChm
cmFtZS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS5lZGl0
b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSk7CisgICAgYXV0
byBidWZmZXIgPSBmcmFtZS5lZGl0b3IoKS5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0
ZWJvYXJkVHlwZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOwogICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5
Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4v
V2ViUHJvY2Vzc1dpbi5jcHAKaW5kZXggZDNkMzhjYWM0MTIxMWQ3ZTI5YjU3ZjI0NTIzNjRlMzdi
NDIzYzMxYS4uMzdmMjdlOTUyZDA3MTcxMTIxY2I0ZjU0ODdhOGI4NGI5ZjhhNjM4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCkBAIC0yOCw3
ICsyOCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCi1SZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIq
IG5hbWUpCitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291
cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQogewogICAgIHJldHVybiAwOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaAppbmRleCAx
ZjU1ODRmYTM4N2Q3NmNjZTk0ZmY3YjU2OTY4ZTdlODIyMDYwNjA2Li5hMjU1NjBhMTBjMjg4MmUx
YWJkMTc4NDU2OTQ4NmVhMTNlZDg5NmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaApAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBwaW5nTG9hZENvbXBsZXRlKHsgfSwg
cmVzcG9uc2UpOwogICAgIH0KLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQpIGZpbmFsIHsg
cGluZ0xvYWRDb21wbGV0ZSgpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlKiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGludCkgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQogICAgIHZvaWQgZGlkRmFp
bChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
IGVycm9yKSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoZXJyb3IpOyB9CiAgICAgYm9vbCBzaG91
bGRVc2VDcmVkZW50aWFsU3RvcmFnZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopIGZpbmFsIHsg
cmV0dXJuIG1fc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01VSUtpdEV4dGVuc2lvbnMubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25zLm1tCmluZGV4IGViMzk0MWYyNjZk
ZjEzYzI4YTkwNmVlN2QxNjFhZTIxZTE3NTQwOTEuLjYzNTViNmY5MDMxODAwNTVjYjYwN2E4MGJl
NzcwMTM4NGQ4OGRkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01VSUtpdEV4dGVuc2lvbnMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TVVJS2l0RXh0ZW5zaW9ucy5tbQpAQCAtMzg4LDcgKzM4OCw3IEBAIC0gKE5TRGF0YSAqKWRhdGFS
ZXByZXNlbnRhdGlvbjooQk9PTClyYXdJbWFnZURhdGEKICAgICBhdXRvKiBkYXRhID0gcmF3SW1h
Z2VEYXRhID8gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkgOiBpbWFnZS0+ZGF0YSgpOwog
ICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gZGF0YS0+Y3Jl
YXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKilt
aW1lVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYTI1OThmMzJmYjc2MGE3ZDg4
M2M5ZjRjZWVjMThjZjU5MWViOGVhZC4uOTU5ZDc0OGI1NmJlMTA3NmJkOTc3OTkyMmNkMzU2ZDIx
YTY4MTc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yNDgsNyArMjQ4LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNlbmRIMlBpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeHBlY3RlZDxTZWNvbmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mJikg
ZmluYWw7CiAKICAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb25zKGNvbnN0IFZlY3Rvcjxz
dGQ6OnBhaXI8V2ViQ29yZTo6TGlua0ljb24mLCB1aW50NjRfdD4+JikgZmluYWw7Ci0gICAgdm9p
ZCBmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciopOworICAgIHZvaWQg
ZmluaXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAK
ICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIG1fbG9hZGluZ0ljb24geyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCBiODQ5ZDJhYWMyYTkzZmJlZTQx
NzI5ZjI0YTg2Y2RjZjZiMWZlMDE5Li5hYTJjYzk4MTQ3NGExM2NlNTA4NDc5ODk0MjM2ODQ0OTFj
ODhmNmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMjAxMiw3ICsyMDEyLDcg
QEAgUmVmUHRyPFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpjcmVhdGVQcmV2aWV3TG8KICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBt
X2ZpbGVQYXRoOwogICAgICAgICBSZXRhaW5QdHI8TlNGaWxlSGFuZGxlPiBtX2ZpbGVIYW5kbGU7
CiAKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29u
c3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBvdmVycmlkZQogICAg
ICAgICB7CiAgICAgICAgICAgICBhdXRvIGRhdGFBcnJheSA9IGJ1ZmZlci5jcmVhdGVOU0RhdGFB
cnJheSgpOwogICAgICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gZGF0YUFycmF5LmdldCgp
KQpAQCAtMjA5NCw3ICsyMDk0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Z2V0TG9h
ZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3IKICAgICAgICAg
fQogCiAgICAgICAgIG1fbG9hZGluZ0ljb24gPSB0cnVlOwotICAgICAgICBkb2N1bWVudExvYWRl
ci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29uLT5zZWNvbmQsIFt0aGlzLCB3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBidWZm
ZXIpIHsKKyAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24o
dHJ1ZSwgaWNvbi0+c2Vjb25kLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0g
KFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikgewogICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBmaW5p
c2hlZExvYWRpbmdJY29uKGJ1ZmZlcik7CkBAIC0yMTMxLDcgKzIxMzEsNyBAQCBzdGF0aWMgTlNJ
bWFnZSAqd2ViR2V0TlNJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU2l6ZSBzaXplKQog
fQogI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCi12b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogaWNvbkRh
dGEpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGljb25EYXRhKQogewogI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIEFTU0VSVChtX2xvYWRpbmdJY29uKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgKaW5kZXggMjRiNjk5NzA2ZGYwZDZiNzE5MmFhNTIwMmRlNjFkOGIxZTU3MzJmOS4u
NTI3ZmE1NTIxOTBiYTAwMTQ1MTdmZmRlNzM3NzIwYjJlN2E5MGFiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIGludDY0X3Qg
YWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgaW50NjRfdCBzZXRCdWZmZXJGb3JU
eXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3Qg
V2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0U3RyaW5n
Rm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGZjMDc3NmU2
MmQ2NmJlOWFjOTNkNDg3ZGRmZDMwMGE2ZDQwN2M1NTMuLjM5ODY4NTlmNzMzOGUyODQ1N2VkNGIx
OTBjYmE2NzA1MjIxMDAyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTE1
NCw3ICsxNTQsNyBAQCBpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VHlwZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgYwogICAgIHJldHVybiBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldFR5cGVzKHBhc3RlYm9hcmRUeXBlcyk7CiB9
CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJl
ZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitpbnQ2NF90IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4g
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZl
ciwgcGFzdGVib2FyZFR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDI4OWMwMDI5YmY5MTM0MThkMGIyOTlmOTBhNGQ5
NzExM2JjNThhNGIuLjgzZTg1OTE0MzQ1ZWE3Y2I4NDFkOTlmZDFmYjY2NmQ4Y2NmMDMwMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0K
QEAgLTQ2MCwxMCArNDYwLDEwIEBAIC0gKHZvaWQpZGVhbGxvYwogCiAtIChOU0RhdGEgKilkYXRh
CiB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9
IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0g
dG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYg
KCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBtYWlu
UmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBt
YWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVs
ZWFzZSgpOwogfQogCiAtIChpZCA8V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbj4pcmVwcmVzZW50
YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRN
TFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJI
VE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggODBjZDMwZWY0Njc2MGUxNGM4ZTY3YTg4YTI3MzNj
OWQ0MzdmYTVkOS4uMzhkN2U1MzJkNmVhYTBjYWMzODg2MmYzZTBlMTY5ZmUyODEyNzdmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50
YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVw
cmVzZW50YXRpb24ubW0KQEAgLTIzMCw3ICsyMzAsNyBAQCAtIChCT09MKWNhblNhdmVBc1dlYkFy
Y2hpdmUKIC0gKE5TU3RyaW5nICopZG9jdW1lbnRTb3VyY2UKIHsKICAgICBpZiAoW3NlbGYgX2lz
RGlzcGxheWluZ1dlYkFyY2hpdmVdKSB7ICAgICAgICAgICAgCi0gICAgICAgIFNoYXJlZEJ1ZmZl
ciAqcGFyc2VkQXJjaGl2ZURhdGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9h
ZGVyXS0+cGFyc2VkQXJjaGl2ZURhdGEoKTsKKyAgICAgICAgYXV0byAqcGFyc2VkQXJjaGl2ZURh
dGEgPSBbX3ByaXZhdGUtPmRhdGFTb3VyY2UgX2RvY3VtZW50TG9hZGVyXS0+cGFyc2VkQXJjaGl2
ZURhdGEoKTsKICAgICAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdp
dGhEYXRhOnBhcnNlZEFyY2hpdmVEYXRhID8gcGFyc2VkQXJjaGl2ZURhdGEtPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIDogbmlsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSkuYXV0b3JlbGVh
c2UoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tCmluZGV4IDgzOGU0MTMzODFhODA3NWEzZDYyNDU5NDU1MjY3YTViYmI1NWE5OTEu
LjI4ZDg3NTkyOWNjYWNkYjlhMTM4OGE4MjZiMmZkNWVjZjQ2ZWNjZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMzU0MCw4ICszNTQw
LDggQEAgc3RhdGljIFJldGFpblB0cjxOU01lbnVJdGVtPiBjcmVhdGVTaGFyZU1lbnVJdGVtKGNv
bnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGgKICAgICB9CiAKICAgICBpZiAoYXV0byogaW1h
Z2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKLSAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCkpCi0gICAgICAgICAgICBbaXRl
bXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05TRGF0
YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5n
ZXQoKV07CisgICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKKyAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6
YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgp
XV0pLmdldCgpXTsKICAgICB9CiAKICAgICBpZiAoIWhpdFRlc3RSZXN1bHQuc2VsZWN0ZWRUZXh0
KCkuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJS
ZXNvdXJjZS5tbQppbmRleCBiMDhjMWQyMWNmOWYwNGU2MTFiNTk1ZWRlM2NiNjVhMTdjNDk5Nzll
Li4xMmQ1OWMwYTE3NjgxOGU2NjJjNDNjMDc0NGE1M2ExMDFjODU2MWVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KQEAgLTE2MywyMSArMTYz
LDIxIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopZGVjb2Rlcgog
LSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKillbmNvZGVyCiB7CiAgICAgYXV0byog
cmVzb3VyY2UgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlLmdldCgpOwotICAgIAotICAgIE5TRGF0
YSAqZGF0YSA9IG5pbDsKKworICAgIFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAgICAgTlNVUkwg
KnVybCA9IG5pbDsKICAgICBOU1N0cmluZyAqbWltZVR5cGUgPSBuaWwsICp0ZXh0RW5jb2Rpbmcg
PSBuaWwsICpmcmFtZU5hbWUgPSBuaWw7CiAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBu
aWw7Ci0gICAgCisKICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAgICAgZGF0YSA9IHJlc291cmNl
LT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCk7CisgICAgICAgIGRhdGEgPSByZXNvdXJjZS0+
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICB1cmwgPSBy
ZXNvdXJjZS0+dXJsKCk7CiAgICAgICAgIG1pbWVUeXBlID0gcmVzb3VyY2UtPm1pbWVUeXBlKCk7
CiAgICAgICAgIHRleHRFbmNvZGluZyA9IHJlc291cmNlLT50ZXh0RW5jb2RpbmcoKTsKICAgICAg
ICAgZnJhbWVOYW1lID0gcmVzb3VyY2UtPmZyYW1lTmFtZSgpOwogICAgICAgICByZXNwb25zZSA9
IHJlc291cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICB9Ci0gICAgW2VuY29k
ZXIgZW5jb2RlT2JqZWN0OmRhdGEgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07CisgICAgW2Vu
Y29kZXIgZW5jb2RlT2JqZWN0OmRhdGEuZ2V0KCkgZm9yS2V5OldlYlJlc291cmNlRGF0YUtleV07
CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnVybCBmb3JLZXk6V2ViUmVzb3VyY2VVUkxLZXld
OwogICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDptaW1lVHlwZSBmb3JLZXk6V2ViUmVzb3VyY2VN
SU1FVHlwZUtleV07CiAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OnRleHRFbmNvZGluZyBmb3JL
ZXk6V2ViUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5XTsKQEAgLTIwMiw3ICsyMDIsNyBAQCAt
IChOU0RhdGEgKilkYXRhCiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlUmVzb3VyY2UpCiAgICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEo
KS5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBfcHJpdmF0ZS0+Y29y
ZVJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3Jl
bGVhc2UoKTsKIH0KIAogLSAoTlNVUkwgKilVUkwKQEAgLTM2Nyw4ICszNjcsOCBAQCAtIChOU1N0
cmluZyAqKV9zdHJpbmdWYWx1ZQogICAgIGlmICghZW5jb2RpbmcuaXNWYWxpZCgpKQogICAgICAg
ICBlbmNvZGluZyA9IFBBTDo6V2luZG93c0xhdGluMUVuY29kaW5nKCk7CiAgICAgCi0gICAgU2hh
cmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUt
PmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsKLSAgICByZXR1cm4gZW5jb2RpbmcuZGVj
b2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPmRh
dGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKKyAgICBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2Ug
PyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICByZXR1cm4g
ZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8g
Y29yZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/
IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJEYXRhU291cmNlLmNwcAppbmRleCBiNDA3M2UxMDhiZDVjNzcwZGQ2MmExMDVhZmIwY2Nh
OWM0ZWYwMzhlLi4wODk3YzdjMDU0OGQyMGIxZWY0NWUzNWUxYmY4ZDhlNDBlYTVkM2Q0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAtMTc1LDcgKzE3NSw3
IEBAIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0q
KiBzdHJlYW0pCiAgICAgaWYgKCFtX2xvYWRlcikKICAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RF
RDsKIAotICAgIHJldHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5t
YWluUmVzb3VyY2VEYXRhKCkpLmNvcHlSZWZUbyhzdHJlYW0pOworICAgIHJldHVybiBNZW1vcnlT
dHJlYW06OmNyZWF0ZUluc3RhbmNlKG1fbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCktPm1ha2VD
b250aWd1b3VzKCkpLmNvcHlSZWZUbyhzdHJlYW0pOwogfQogCiBIUkVTVUxUIFdlYkRhdGFTb3Vy
Y2U6OnJlcHJlc2VudGF0aW9uKF9DT01fT3V0cHRyX29wdF8gSVdlYkRvY3VtZW50UmVwcmVzZW50
YXRpb24qKiByZXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggOTBhNWEw
YTEzMzZlZWViYzhhZjVjZGVjMWI1YzYyMGU2ODIzMTliNS4uNTU4ZTEzYzdmMWZkYWE1YjEyNWQy
MGJlZmU3OTFhMjdmZjc1NzEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApA
QCAtNTU5LDcgKzU1OSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRSZXF1ZXN0KF9Jbl9vcHRf
IElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgIHJldHVybiBTX09LOwogfQogCi12b2lkIFdl
YkZyYW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIg
bWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxp
bmdVUkwpCit2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUs
IEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKQogewogICAgIFN0cmluZyBtaW1lVHlwZVN0
cmluZyhtaW1lVHlwZSwgU3lzU3RyaW5nTGVuKG1pbWVUeXBlKSk7CiAgICAgaWYgKCFtaW1lVHlw
ZSkKQEAgLTU4NSwyMSArNTg1LDIxIEBAIHZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0CiAKIEhSRVNV
TFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBt
aW1lVHlwZSwgX0luXyBCU1RSIHRleHRFbmNvZGluZ05hbWUsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0g
ICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgc2hhcmVkQnVmZmVyOwogCiAgICAgU1RBVFNURyBzdGF0OwogICAgIGlm
IChTVUNDRUVERUQoZGF0YS0+U3RhdCgmc3RhdCwgU1RBVEZMQUdfTk9OQU1FKSkpIHsKICAgICAg
ICAgaWYgKCFzdGF0LmNiU2l6ZS5IaWdoUGFydCAmJiBzdGF0LmNiU2l6ZS5Mb3dQYXJ0KSB7CiAg
ICAgICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YUJ1ZmZlcihzdGF0LmNiU2l6ZS5Mb3dQYXJ0KTsK
ICAgICAgICAgICAgIFVMT05HIHJlYWQ7Ci0gICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2Vz
IGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0aGUg
U2hhcmVkQnVmZmVyCisgICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxlc3Mg
Y29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0aGUgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcgogICAgICAgICAgICAgLy8gb3IgYWRvcHQgdGhlIFZlY3RvciBvciBzb21ldGhp
bmcuCiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPlJlYWQoZGF0YUJ1ZmZlci5kYXRh
KCksIHN0YXRpY19jYXN0PFVMT05HPihkYXRhQnVmZmVyLnNpemUoKSksICZyZWFkKSkpCi0gICAg
ICAgICAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRp
Y19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICBzaGFyZWRC
dWZmZXIuYXBwZW5kKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZm
ZXIuc2l6ZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBsb2FkRGF0YShXVEZNb3ZlKHNo
YXJlZEJ1ZmZlciksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIpOwor
ICAgIGxvYWREYXRhKHNoYXJlZEJ1ZmZlci50YWtlKCksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmdO
YW1lLCB1cmwsIG51bGxwdHIpOwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRnJhbWUuaAppbmRleCA0MzYwNTRmZDlkZGI0N2NhMzI5NmIxMTc5ODE0MzRlYzE4OTdk
YWQxLi5mYTljMzgxY2M1NzNiYTZiMjA5ODhlYWIzNTA4ZWQ5YTMwYThmMTM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkZyYW1lLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgSFRNTEZyYW1lT3du
ZXJFbGVtZW50OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZXNvdXJjZUVy
cm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IH0KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0NvbnRleHRSZWY7
CkBAIC0xOTUsNyArMTk1LDcgQEAgcHJpdmF0ZToKICAgICB+V2ViRnJhbWUoKTsKIAogICAgIHZv
aWQgbG9hZEhUTUxTdHJpbmcoX0luXyBCU1RSIHN0cmluZywgX0luXyBCU1RSIGJhc2VVUkwsIF9J
bl8gQlNUUiB1bnJlYWNoYWJsZVVSTCk7Ci0gICAgdm9pZCBsb2FkRGF0YShSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJT
VFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKTsKKyAgICB2b2lkIGxvYWREYXRhKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRF
bmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKTsKICAgICBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIGNvbXB1dGVQYWdlUmVjdHMoSERDIHByaW50REMpOwog
ICAgIHZvaWQgc2V0UHJpbnRpbmcoYm9vbCBwcmludGluZywgY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiBwYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBvcmlnaW5hbFBhZ2VTaXpl
LCBmbG9hdCBtYXhpbXVtU2hyaW5rUmF0aW8sIFdlYkNvcmU6OkFkanVzdFZpZXdTaXplT3JOb3Qp
OwogICAgIHZvaWQgaGVhZGVyQW5kRm9vdGVySGVpZ2h0cyhmbG9hdCosIGZsb2F0Kik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcAppbmRleCA5NjIwMTk4YjRiNTQwYWU2Zjc5Njdm
ODIzM2M5NDY0YmQyNzc1ODUxLi4yNzRiN2QyZDZjZjJlYjQ3MWQ3YjhiODk2NTlhZTQ2OWNmOTM0
YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAKQEAgLTE2NSw4ICsxNjUs
OCBAQCB2b2lkIHNodXREb3duV2ViS2l0KCkKIH0KIAogLy9GSVhNRTogV2Ugc2hvdWxkIGNvbnNp
ZGVyIG1vdmluZyB0aGlzIHRvIGEgbmV3IGZpbGUgZm9yIGNyb3NzLXByb2plY3QgZnVuY3Rpb25h
bGl0eQotV0VCS0lUX0FQSSBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3Vy
Y2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpOwotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQorV0VCS0lUX0FQ
SSBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50
b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKTsKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAg
ICAgaW50IGlkcjsKICAgICAvLyB0ZW1wb3JhcnkgaGFjayB0byBnZXQgcmVzb3VyY2UgaWQKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhOGU4NzFi
MGFmMWEzNGIwNTcyMDAxYjNjYTM3OWQ2MGI5MTA1ZTI5Li5lYjdlZTRjMWYxMmNjMTA3M2NiZWM1
YzE1NTVjZmY3MzAxM2M3MDFhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNz
ZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2
NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0
byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5
cGVzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHA6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMu
Y3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIu
Y3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJU
ZXN0LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyVGVzdC5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNw
bGF5TGlzdFRlc3RzQ0cuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS93aW4vVGVz
dFdlYkNvcmVTdHVicy5jcHA6CisKKzIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisgICAg
ICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1No
YXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKKzIwMjEt
MTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0
aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBh
bmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMzMzgxNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFy
ZWRCdWZmZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDIxLTEy
LTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+IGFuZCBEb24gT2xt
c3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgTW92ZSBUZXh0Q29kZWMg
ZmlsZXMgZnJvbSBXZWJDb3JlL3BsYXRmb3JtL3RleHQgdG8gV2ViQ29yZS9QQUwvdGV4dApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAppbmRleCA4NTgzYjI5
YWQ5OTBjMjJiNDcyYzg2OWVjY2Q4NjgyOTYyMWJiMGI0Li5iODQ3ZDNhODI2YjNkOWZmYzA4ZjZm
M2JlMzgyNjBhNmM1OWRmZjJhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9G
aWxlU3lzdGVtLmNwcApAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVUZXN0Rmls
ZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5k
bGUpOwogfTsKIAotLy8gRklYTUU6IFJlZmFjdG9yIEZpbGVTeXN0ZW1UZXN0IGFuZCBTaGFyZWRC
dWZmZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgorLy8gRklYTUU6IFJlZmFjdG9yIEZpbGVTeXN0
ZW1UZXN0IGFuZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCBhcyBhIHNpbmdsZSBjbGFzcy4K
IGNsYXNzIEZpbGVTeXN0ZW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogcHVibGljOgog
ICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCmluZGV4IGQyM2Y3ZTFlNzI5ZTA1
NTQ1M2FjMWYwNTNhMjM0NTMwMjk1Y2IyMDUuLmVhMmFlMmM3ZThiMzA4NTIwNWIzZDNjOTc0MzBl
ZmFlY2ViYjliNGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9EaXNwbGF5TGlzdFRlc3RzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCBURVNUKERpc3Bs
YXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQpCiAgICAgICAgICAgICByZXR1cm4geyBnbG9i
YWxCdWZmZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVtQnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2Fw
YWNpdHkgfTsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29k
ZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJiBkaXNwbGF5TGlzdEl0ZW0pIGNv
bnN0IGZpbmFsCisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBlbmNvZGVJ
dGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgZGlzcGxheUxpc3RJdGVtKSBjb25z
dCBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIGluZGV4ID0gbV9pdGVtcy5zaXpl
KCk7CiAgICAgICAgICAgICBtX2l0ZW1zLmFwcGVuZChzdGQ6OmdldDxTdHJva2VQYXRoPihkaXNw
bGF5TGlzdEl0ZW0pKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZGRiZmMxZjJiMTgyMWNiMWRmYWJjOGUyZjYzMjdiMjEy
YzdjYTQ2OC4uMTdjZTg3OTQxYmE4NDIzM2FmODlmZGI0NGFlYzI2ZmYxOGM3ZDdmMiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTQxLDgwICs0MSw3NSBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1URVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKK1RFU1RfRihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmls
ZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOworICAg
IGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3Ry
aW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRfTlVMTChidWZmZXIpOwogfQog
Ci1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0Zp
bGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50
c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBFWFBFQ1Rf
VFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEo
KSkpOwotICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
KSA9PSBTdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNU
X1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKSk7CisgICAgRVhQRUNUX1RSVUUoU3RyaW5nKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQorVEVTVF9GKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxl
KQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5Rmls
ZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CisgICAgRVhQRUNUX1RSVUUo
YnVmZmVyLT5pc0NvbnRpZ3VvdXMoKSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5
KCkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRo
Q29udGVudHNPZkV4aXN0aW5nRmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVz
dCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJU
X05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29weSA9IGJ1ZmZl
ci0+Y29weSgpOworICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNDb250aWd1b3VzKCkpOworICAg
IGF1dG8gY29weSA9IGJ1ZmZlci0+Y29weSgpOwogICAgIEVYUEVDVF9HVChidWZmZXItPnNpemUo
KSwgMFUpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IGNvcHktPnNpemUoKSk7
Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCks
IGNvcHktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAot
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNsZWFyQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09m
RXhpc3RpbmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRC
dWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBh
dGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgYnVmZmVyLT5jbGVhcigp
OwotICAgIEVYUEVDVF9UUlVFKCFidWZmZXItPnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1
ZmZlci0+ZGF0YSgpKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVp
bGRlci5hcHBlbmQoKmJ1ZmZlcik7CisgICAgYnVpbGRlci5hcHBlbmQoImEiLCAxKTsKKyAgICBF
WFBFQ1RfVFJVRShidWlsZGVyLnNpemUoKSA9PSAoc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1aWxk
ZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVz
dERhdGEoKSkpKTsKKyAgICBFWFBFQ1RfRVEoJ2EnLCBidWlsZGVyLmdldCgpLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKClbc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0
YSgpKV0pOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRl
ZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQotewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKTsKLSAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmFwcGVu
ZCgiYSIsIDEpOwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IChzdHJsZW4oU2hh
cmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1lbWNt
cChidWZmZXItPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVmZmVy
LT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7Ci19Ci0KLVRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKK1RFU1RfRihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCiB7CiAgICAgY2hh
ciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0RGF0YTFbXSA9ICJXb3JsZCI7
CiAgICAgY2hhciB0ZXN0RGF0YTJbXSA9ICJHb29kYnllIjsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YTAsIHN0cmxl
bih0ZXN0RGF0YTApKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTEsIHN0cmxl
bih0ZXN0RGF0YTEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YTIsIHN0cmxl
bih0ZXN0RGF0YTIpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hh
cmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcih0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKKyAgICBidWlsZGVyLmFw
cGVuZCh0ZXN0RGF0YTEsIHN0cmxlbih0ZXN0RGF0YTEpKTsKKyAgICBidWlsZGVyLmFwcGVuZCh0
ZXN0RGF0YTIsIHN0cmxlbih0ZXN0RGF0YTIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFy
cmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBj
aGFyIGV4cGVjdGVkQ29uY2F0ZW5hdGlvbltdID0gIkhlbGxvV29ybGRHb29kYnllIjsKICAgICBB
U1NFUlRfRVEoc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiksIGFycmF5QnVmZmVyLT5ieXRl
TGVuZ3RoKCkpOwogICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRDb25jYXRlbmF0aW9u
LCBhcnJheUJ1ZmZlci0+ZGF0YSgpLCBzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSkpOwog
fQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNl
Z21lbnRzKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJh
eUJ1ZmZlckxhcmdlU2VnbWVudHMpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjAoMHg0
MDAwLCAnYScpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKICAg
ICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMigweDQwMDAsICdjJyk7CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZl
Y3RvcjApKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKLSAg
ICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKLSAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZl
cigpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKHZlY3RvcjApKTsK
KyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjEpKTsKKyAgICBidWlsZGVyLmFwcGVu
ZChXVEZNb3ZlKHZlY3RvcjIpKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVy
ID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBBU1NFUlRfRVEo
MHg0MDAwVSArIDB4NDAwMFUgKyAweDQwMDBVLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsK
ICAgICBpbnQgcG9zaXRpb24gPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMHg0MDAwOyAr
K2kpIHsKQEAgLTEzMSw3ICsxMjYsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3Jl
YXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQogICAgIH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIGNvcHkpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkp
CiB7CiAgICAgY2hhciB0ZXN0RGF0YVtdID0gIkhhYml0YXNzZSBpbnRlZ2VyIGVyb3MgdGluY2lk
dW50IGEgc2NlbGVyaXNxdWUhIEVuaW0gZWxpdD8gU2NlbGVyaXNxdWUgbWFnbmlzLCIKICAgICAi
ZXQgbW9udGVzIHVsdHJpY2VzIHRyaXN0aXF1ZSBhISBQaWQuIFZlbGl0IHR1cnBpcywgZGFwaWJ1
cyBpbnRlZ2VyIHJob25jdXMgc29jaWlzIGFtZXQgZmFjaWxpc2lzLCIKQEAgLTE1MSwxNyArMTQ2
LDUzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogICAgICJtYXR0aXMgZGlnbmlz
c2ltIG1hc3NhIGFjIHB1bHZpbmFyIHVybmEsIG51bmMgdXQuIFNhZ2l0dGlzLCBhbGlxdWV0IHBl
bmF0aWJ1cyBwcm9pbiBsb3JlbSwgcHVsdmluYXIgbGVjdHVzLCIKICAgICAiYXVndWUgcHJvaW4h
IEFjLCBhcmN1IHF1aXMuIFBsYWNlcmF0IGhhYml0YXNzZSwgcmlkaWN1bHVzIHJpZGljdWx1cy4i
OwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbih0ZXN0RGF0YSk7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERhdGEs
IGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0g
ICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgc2hhcmVkQnVm
ZmVyLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBi
dWlsZGVyMSh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEs
IGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1
aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICAvLyBzaGFyZWRCdWZmZXIgbXVz
dCBjb250YWluIGRhdGEgbW9yZSB0aGFuIHNlZ21lbnRTaXplICg9IDB4MTAwMCkgdG8gY2hlY2sg
Y29weSgpLgotICAgIEFTU0VSVF9FUShsZW5ndGggKiA0LCBzaGFyZWRCdWZmZXItPnNpemUoKSk7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBzaGFyZWRCdWZmZXItPmNvcHkoKTsK
LSAgICBBU1NFUlRfRVEobGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7Ci0gICAgQVNTRVJUX0VR
KDAsIG1lbWNtcChjbG9uZS0+ZGF0YSgpLCBzaGFyZWRCdWZmZXItPmRhdGEoKSwgY2xvbmUtPnNp
emUoKSkpOwotICAgIGNsb25lLT5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7Ci0gICAgQVNTRVJU
X0VRKGxlbmd0aCAqIDUsIGNsb25lLT5zaXplKCkpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0
LCBidWlsZGVyMS5zaXplKCkpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBj
bG9uZSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgY2xvbmUt
PnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChjbG9uZS0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBidWlsZGVyMS5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjbG9u
ZS0+c2l6ZSgpKSk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIGJ1
aWxkZXIyLmFwcGVuZCgqY2xvbmUpOworICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YSwgbGVu
Z3RoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAgICBh
dXRvIGJ1ZmZlciA9IGJ1aWxkZXIyLnRha2UoKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNSwg
YnVmZmVyLT5zaXplKCkpOworICAgIC8vIGJ1aWxkZXIgaXMgbm93IGVtcHR5LgorICAgIEVYUEVD
VF9FUSgwVSwgYnVpbGRlcjIuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc051
bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKK30KKworVEVTVF9G
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBidWlsZGVyKQoreworICAgIGNoYXIgdGVzdERh
dGEwW10gPSAiSGVsbG8iOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEodGVzdERh
dGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlzTnVs
bCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNFbXB0eSgpKTsKKyAgICBhdXRvIGNv
cHkgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyMS50YWtlKCk7
CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1
aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX05FKGNvcHkucHRyKCksIGJ1ZmZlci5wdHIo
KSk7IC8vIFdlIGhhdmUgZGlmZmVyZW50IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIKKyAgICBFWFBF
Q1RfRVEoY29weS5nZXQoKSwgYnVmZmVyLmdldCgpKTsgLy8gQnV0IHRoZWlyIGNvbnRlbnQgaXMg
aWRlbnRpY2FsCisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIyOworICAgIEVYUEVD
VF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0Vt
cHR5KCkpOworICAgIGJ1aWxkZXIyLmFwcGVuZCh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTAp
KTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9GQUxT
RShidWlsZGVyMi5pc0VtcHR5KCkpOworICAgIGJ1aWxkZXIyLnJlc2V0KCk7CisgICAgRVhQRUNU
X1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1w
dHkoKSk7CisgICAgYnVpbGRlcjIuZW1wdHkoKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjIu
aXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CiB9CiAKIHN0
YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZl
ckxlbmd0aCwgY29uc3QgY2hhciogZXhwZWN0ZWQpCkBAIC0xNzMsNzAgKzIwNCw4MCBAQCBzdGF0
aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJM
ZW5ndGgsIGNvbnN0IGNoYXIqCiAgICAgICAgIEVYUEVDVF9FUShidWZmZXJbaV0sIGV4cGVjdGVk
W2ldKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQorVEVTVF9G
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKLSAgICBWZWN0b3I8
dWludDhfdD4gczEgPSB7J2EnLCAnYicsICdjJywgJ2QnfTsKLSAgICBWZWN0b3I8dWludDhfdD4g
czIgPSB7J2UnLCAnZicsICdnJywgJ2gnfTsKLSAgICBWZWN0b3I8dWludDhfdD4gczMgPSB7J2kn
LCAnaicsICdrJywgJ2wnfTsKLSAgICAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwotICAgIGJ1ZmZlci0+
YXBwZW5kKFdURk1vdmUoczIpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geyAnYScsICdiJywgJ2MnLCAnZCcgfTsKKyAgICBWZWN0
b3I8dWludDhfdD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OworICAgIFZlY3Rvcjx1aW50
OF90PiBzMyA9IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CisKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMSkpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKFdURk1vdmUoczIpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMzKSk7
CisgICAgYXV0byBidWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICAKICAgICBhdXRvIGFiY2Qg
PSBidWZmZXItPmdldFNvbWVEYXRhKDApOwotICAgIGF1dG8gZ2ggPSBidWZmZXItPmdldFNvbWVE
YXRhKDYpOworICAgIGF1dG8gZ2gxID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBhdXRv
IGggPSBidWZmZXItPmdldFNvbWVEYXRhKDcpOwogICAgIGF1dG8gaWprbCA9IGJ1ZmZlci0+Z2V0
U29tZURhdGEoOCk7CiAgICAgYXV0byBrbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTApOwotICAg
IGF1dG8gYWJjZGVmZ2hpamtsID0gYnVmZmVyLT5kYXRhKCk7Ci0gICAgYXV0byBnaGlqa2wgPSBi
dWZmZXItPmdldFNvbWVEYXRhKDYpOworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIGFiY2RlZmdoaWprbCA9IGNvbnRpZ3VvdXNC
dWZmZXItPmRhdGEoKTsKKyAgICBhdXRvIGdoMiA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7Cisg
ICAgYXV0byBnaGlqa2wgPSBjb250aWd1b3VzQnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKICAgICBh
dXRvIGwgPSBidWZmZXItPmdldFNvbWVEYXRhKDExKTsKICAgICBjaGVja0J1ZmZlcihhYmNkLmRh
dGEoKSwgYWJjZC5zaXplKCksICJhYmNkIik7Ci0gICAgY2hlY2tCdWZmZXIoZ2guZGF0YSgpLCBn
aC5zaXplKCksICJnaCIpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCks
ICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGguZGF0YSgpLCBoLnNpemUoKSwgImgiKTsKICAgICBj
aGVja0J1ZmZlcihpamtsLmRhdGEoKSwgaWprbC5zaXplKCksICJpamtsIik7CiAgICAgY2hlY2tC
dWZmZXIoa2wuZGF0YSgpLCBrbC5zaXplKCksICJrbCIpOwogICAgIGNoZWNrQnVmZmVyKGFiY2Rl
ZmdoaWprbCwgYnVmZmVyLT5zaXplKCksICJhYmNkZWZnaGlqa2wiKTsKKyAgICBjaGVja0J1ZmZl
cihnaDIuZGF0YSgpLCBnaDIuc2l6ZSgpLCAiZ2giKTsKICAgICBjaGVja0J1ZmZlcihnaGlqa2wu
ZGF0YSgpLCBnaGlqa2wuc2l6ZSgpLCAiZ2hpamtsIik7CisgICAgRVhQRUNUX0VRKGdoMS5zaXpl
KCksIGdoMi5zaXplKCkpOworICAgIGNoZWNrQnVmZmVyKGdoMS5kYXRhKCksIGdoMS5zaXplKCks
IGdoMi5kYXRhQXNDaGFyUHRyKCkpOwogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUo
KSwgImwiKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKK1RFU1Rf
RihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogewogICAgIGF1dG8gbWFr
ZUJ1ZmZlciA9IFtdIChWZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+PiYmIGNvbnRlbnRzKSB7Ci0gICAg
ICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgICAgICBmb3IgKGF1dG8mIGNvbnRlbnQgOiBjb250
ZW50cykKLSAgICAgICAgICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoY29udGVudCkpOwotICAg
ICAgICByZXR1cm4gYnVmZmVyOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShj
b250ZW50KSk7CisgICAgICAgIHJldHVybiBidWlsZGVyLnRha2UoKTsKICAgICB9OwotICAgIGF1
dG8gYnVmZmVyMSA9IG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCd9fSk7CisgICAgYXV0
byBidWZmZXIxID0gbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAg
RVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCi0gICAgYnVmZmVyMS0+
YXBwZW5kKFZlY3Rvcjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwotICAgIEVYUEVD
VF9FUShidWZmZXIxLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScs
ICdiJywgJ2MnLCAnZCd9fSkuZ2V0KCkpOwotICAgIEVYUEVDVF9FUShtYWtlQnVmZmVyKHt7J2En
fSwgeydiJywgJ2MnfSwgeydkJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydhJywgJ2InfSwgeydj
JywgJ2QnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJywgJ2InfX0p
LmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJ319KS5nZXQoKSk7Ci0gICAgRVhQRUNU
X05FKG1ha2VCdWZmZXIoe3snYScsICdiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7eydiJywgJ2Mn
fX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7eydhJ30sIHsnYid9fSkuZ2V0
KCksIG1ha2VCdWZmZXIoe3snYSd9LCB7J2EnfX0pLmdldCgpKTsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXIoV1RGTW92ZShidWZmZXIxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoVmVj
dG9yPHVpbnQ4X3Q+KHsgJ2EnLCAnYicsICdjJywgJ2QnIH0pKTsKKyAgICBFWFBFQ1RfRVEoKmJ1
aWxkZXIuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycsICdkJywgJ2EnLCAnYics
ICdjJywgJ2QnIH0gfSkuZ2V0KCkpOworCisgICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoeyB7ICdh
JyB9LCB7ICdiJywgJ2MnIH0sIHsgJ2QnIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywg
J2InIH0sIHsgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIo
eyB7ICdhJywgJ2InIH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InLCAnYycgfSB9
KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJywgJ2InIH0gfSkuZ2V0
KCksIG1ha2VCdWZmZXIoeyB7ICdiJywgJ2MnIH0gfSkuZ2V0KCkpOworICAgIEVYUEVDVF9ORSht
YWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2En
IH0sIHsgJ2EnIH0gfSkuZ2V0KCkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9I
ZXhTdHJpbmcpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5n
KQogewogICAgIFZlY3Rvcjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9OwotICAgIGF1
dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBidWZmZXItPmFwcGVuZChX
VEZNb3ZlKHQxKSk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxk
ZXIuYXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgp
OwogICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXItPnRvSGV4U3RyaW5nKCk7CiAgICAgRVhQRUNU
X0VRKHJlc3VsdCwgIjExMDUxMiIpOwotICAgIGJ1ZmZlci0+Y2xlYXIoKTsKKyAgICBidWlsZGVy
LnJlc2V0KCk7CisgICAgYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgRVhQRUNUX0VRKGJ1
ZmZlci0+dG9IZXhTdHJpbmcoKSwgIiIpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwg
cmVhZCkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKIHsKICAgICBj
b25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgYSBzaW1wbGUgdGVzdC4iOwog
Ci0gICAgYXV0byBjaGVjayA9IFtdKFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAg
YXV0byBjaGVjayA9IFtdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewog
ICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9IHNoYXJlZEJ1ZmZlci5yZWFkKDQsIDMpOwog
ICAgICAgICBFWFBFQ1RfRVEoZGF0YS5zaXplKCksIDN1KTsKICAgICAgICAgRVhQRUNUX0VRKFN0
cmluZyhkYXRhLmRhdGEoKSwgMyksICIgaXMiKTsKQEAgLTI0OSwxNiArMjkwLDE3IEBAIFRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVj
ayhzaGFyZWRCdWZmZXIpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVy
LT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWls
ZGVyLnRha2UoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlci5pc051bGwoKSAmJiAhYnVpbGRl
cik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCAwdSk7CiAKLSAgICBzaGFyZWRCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5k
KCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCks
IHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOworICAgIEVYUEVDVF9FUShidWlsZGVy
LnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7
CiB9CiAKICNpZiBFTkFCTEUoTUhUTUwpCkBAIC0yNjYsNyArMzA4LDcgQEAgVEVTVF9GKFNoYXJl
ZEJ1ZmZlclRlc3QsIHJlYWQpCiB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgc2l6ZV90IE4gPgogY29u
c3RleHByIHNpemVfdCBhcnJheXNpemUoIGNvbnN0IFQgKCYpW05dICkgeyByZXR1cm4gTjsgfQog
Ci1zdGF0aWMgdm9pZCByZWFkQWxsQ2h1bmtzKHN0ZDo6dmVjdG9yPFN0cmluZz4qIGNodW5rcywg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yID0gIlxyXG4iLCBi
b29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSkKK3N0YXRpYyB2b2lkIHJlYWRBbGxDaHVua3Mo
c3RkOjp2ZWN0b3I8U3RyaW5nPiogY2h1bmtzLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yID0gIlxyXG4iLCBib29sIGluY2x1ZGVTZXBhcmF0
b3IgPSBmYWxzZSkKIHsKICAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlciBjaHVua1JlYWRlcigm
YnVmZmVyLCBzZXBhcmF0b3IudXRmOCgpLmRhdGEoKSk7CiAgICAgU3RyaW5nIGNodW5rID0gY2h1
bmtSZWFkZXIubmV4dENodW5rQXNVVEY4U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKGluY2x1ZGVT
ZXBhcmF0b3IpOwpAQCAtMjk5LDcgKzM0MSw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrRGF0YUluUmFu
Z2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBzaXplX3Qgc3RhcnQsIHNpemVfdCBsCiAK
IFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGluY2x1ZGVTZXBhcmF0b3IpCiB7
Ci0gICAgYXV0byBjaGVjayA9IFtdKFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAg
YXV0byBjaGVjayA9IFtdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewog
ICAgICAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlciBjaHVua1JlYWRlcigmc2hhcmVkQnVmZmVy
LCAiXHgxMFx4MTFceDEyIik7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBvdXQ7CiAgICAgICAg
IEVYUEVDVF9UUlVFKGNodW5rUmVhZGVyLm5leHRDaHVuayhvdXQpKTsKQEAgLTMxMywyMiArMzU1
LDI0IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGluY2x1ZGVTZXBhcmF0
b3IpCiAgICAgdWludDhfdCBkYXRhWzI1Nl07CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAy
NTY7ICsraSkKICAgICAgICAgZGF0YVtpXSA9IGk7Ci0KICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIDI1Nik7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVy
KTsKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworCisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKGRhdGEsIDI1Nik7CisgICAgY2hlY2soYnVpbGRlci50
YWtlKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyNTY7ICsraSkgewogICAgICAg
ICBjaGFyIGMgPSBpOwotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmYywgMSk7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCZjLCAxKTsKICAgICB9Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVy
KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJD
aHVua1JlYWRlclRlc3QsIHBlZWtEYXRhKQogewogICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBs
ZVRleHQgPSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LiI7CiAKLSAgICBhdXRvIGNoZWNrID0gW10o
U2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIFNoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyIGNodW5rUmVhZGVyKCZzaGFyZWRCdWZmZXIsICJpcyIpOwogCiAgICAgICAgIFN0
cmluZyBjaHVuayA9IGNodW5rUmVhZGVyLm5leHRDaHVua0FzVVRGOFN0cmluZ1dpdGhMYXRpbjFG
YWxsYmFjaygpOwpAQCAtMzU4LDIyICs0MDIsMjMgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyVGVzdCwgcGVla0RhdGEpCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNo
YXJlZEJ1ZmZlcik7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzaW1wbGVUZXh0LCBzdHJsZW4oc2lt
cGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpKyspCi0gICAgICAgIHNoYXJlZEJ1ZmZl
ci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7CisgICAgY2hlY2soYnVp
bGRlci50YWtlKCkpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSAy
KQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMik7Ci0gICAg
RVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAg
IGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0
W2ldLCAyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0
KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXJUZXN0LCByZWFkQWxsQ2h1bmtzSW5NdWx0aVNlZ21lbnQpCiB7CiAgICAgY29u
c3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlzIHRoZSBtb3N0IHJpZGljdWxvdXMg
aGlzdG9yeSB0aGVyZSBpcy4iOwotICAgIGF1dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNo
YXJlZEJ1ZmZlcikgeworICAgIGF1dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAgc3RkOjp2ZWN0b3I8U3RyaW5nPiBjaHVua3M7CiAg
ICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzMVdpdGhvdXRTZXBhcmF0b3Jb
XSA9IHsgIlRoIiwgInMgIiwgInMgdGhlIG1vc3QgciIsICJkIiwgImN1bG91cyBoIiwgInN0b3J5
IHRoZXJlICIsICJzLiIgfTsKICAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRC
dWZmZXIsICJpIik7CkBAIC00MDYsMTcgKzQ1MSwxOSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXJUZXN0LCByZWFkQWxsQ2h1bmtzSW5NdWx0aVNlZ21lbnQpCiAgICAgfTsKICAgICBh
dXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxl
bihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKLSAgICBzaGFyZWRCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBi
dWlsZGVyKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRl
ci50YWtlKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4
dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEp
OwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQp
KTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2lt
cGxlVGV4dFtpXSwgMSk7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2lt
cGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIAotICAgIHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
dHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0gNSkKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQo
JnNpbXBsZVRleHRbaV0sIDUpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwg
c3RybGVuKHNpbXBsZVRleHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBi
dWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIu
c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsK
IH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgY2hhbmdpbmdJdGVyYXRv
cikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRC
dWZmZXJUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRC
dWZmZXJUZXN0LmNwcAppbmRleCA5YjhiMTNhNzVkNTJmZjk1MWVhZDE4MTg1ZDU2YzM3OTFiMmQ3
YmVkLi5kMDM0MWE4MWRlZGE3MTlmMzVmY2NlMzk0NjU1ZWMyNTVhYjhmYmI2IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3Qu
Y3BwCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotdm9p
ZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJU
ZXN0OjpTZXRVcCgpCiB7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogCkBAIC00
NSw3ICs0NSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyVGVzdDo6U2V0VXAoKQogICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlRlYXJE
b3duKCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OlRlYXJEb3duKCkKIHsKICAg
ICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsKICAgICBGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKG1fdGVtcEVtcHR5RmlsZVBhdGgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmgKaW5kZXggNjQwMTE5YmRl
NmZjZTQxZjAxZWFhYjYzMTY4NDdiZTU2YjkwY2Y1Yy4uYTM5MmEwNTE5NDc1NmQyYWQ1NmU4MjQ5
MjllY2U0YzE1ZjNhZDA1NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZTsKICAgICB2
b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCmluZGV4IDdhMzIw
N2Y5NWM2MjdmZTY2MjljOTI3NzQ0YjRlZjAzZTVlMmVjM2QuLjg1ODI4ZjAzOTIyNDVmNGE5OWI3
NjA2YjVmNGFjNWVjMzRkY2VlNWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCkBAIC0xMDQsNyAr
MTA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHsgZ2xvYmFsQnVmZmVySWRlbnRpZmll
ciwgZ2xvYmFsSXRlbUJ1ZmZlciwgZ2xvYmFsSXRlbUJ1ZmZlckNhcGFjaXR5IH07CiAgICAgfQog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNw
bGF5TGlzdEl0ZW0mKSBjb25zdCBmaW5hbAorICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0IGZp
bmFsCiAgICAgewogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hh
cmVkQnVmZmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1No
YXJlZEJ1ZmZlci5tbQppbmRleCA5MzMzMWQ3MDJjNTMwYjI0YzQ3Y2MwOWE2OGNmYjE4ODVkNGVi
MTEwLi5jM2I1ZDNlOGQ3YzAzYjFhMzY1ZGQ1MzVhMGIyOWFkZTI3YWNlY2E4IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZm
ZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC00NSwxOSArNDUsMjAgQEAgc3RhdGljIHZvaWQgZXhwZWN0RGF0YUFycmF5c0Vx
dWFsKE5TQXJyYXk8TlNEYXRhICo+ICpleHBlY3RlZCwgTlNBcnJheTxOU0RhdGEgKj4KICAgICB9
CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKK1RFU1Rf
RihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCiB7CiAgICAg
QGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVmZmVyLT5jcmVh
dGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWls
ZGVyOworICAgICAgICBidWlsZGVyLmVtcHR5KCk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNF
cXVhbChuaWwsIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAg
ICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxsbyIg
bGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRh
LmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFs
KEBbIGhlbGxvRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9EYXRhLmJ5dGVzLCBoZWxsb0Rh
dGEubGVuZ3RoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBd
LCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBO
U0RhdGEgKndvcmxkRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1
XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEp
OwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEg
XSwgYnVmZmVyLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAgICBleHBlY3REYXRh
QXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXSwgYnVpbGRlci5nZXQoKS0+Y3Jl
YXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFs
KEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShoZWxsb0RhdGEpLT5jcmVhdGVO
U0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIHdv
cmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxk
RGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwpAQCAtNjYsMzUgKzY3LDM1IEBAIFRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKICAgICB9CiB9CiAKLVRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKK1RFU1Rf
RihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQp
CiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwog
CiAgICAgICAgIE5TRGF0YSAqaGVsbG9EYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJoZWxs
byIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9E
YXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKGNv
bnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CiAKICAgICAgICAg
TlNEYXRhICp3b3JsZERhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IndvcmxkIiBsZW5ndGg6
NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRh
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEp
OwogCiAgICAgICAgIE5TQXJyYXkgKmV4cGVjdGVkRGF0YSA9IEBbIGhlbGxvRGF0YSwgd29ybGRE
YXRhIF07CiAgICAgICAgIE5TVUludGVnZXIgZXhwZWN0ZWRTaXplID0gaGVsbG9EYXRhLmxlbmd0
aCArIHdvcmxkRGF0YS5sZW5ndGg7CiAKICAgICAgICAgTlNVSW50ZWdlciBzZWdtZW50Q291bnQg
PSAwOwotICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBidWZmZXIuZ2V0KCkpCisgICAgICAg
IGZvciAoYXV0byYgc2VnbWVudCA6ICpidWlsZGVyLmdldCgpKQogICAgICAgICAgICAgRVhQRUNU
X1RSVUUoW3NlZ21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBl
Y3RlZERhdGFbc2VnbWVudENvdW50KytdXSk7CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERh
dGEuY291bnQsIHNlZ21lbnRDb3VudCk7CiAKICAgICAgICAgTlNVSW50ZWdlciBwb3NpdGlvbiA9
IDA7CiAgICAgICAgIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIHdoaWxlIChidWZmZXItPnNp
emUoKSA+IHBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1
ZmZlci0+Z2V0U29tZURhdGEocG9zaXRpb24pOworICAgICAgICB3aGlsZSAoYnVpbGRlci5zaXpl
KCkgPiBwb3NpdGlvbikgeworICAgICAgICAgICAgYXV0byBpbmNyZW1lbnRhbERhdGEgPSBidWls
ZGVyLmdldCgpLT5nZXRTb21lRGF0YShwb3NpdGlvbik7CiAgICAgICAgICAgICBFWFBFQ1RfVFJV
RShbaW5jcmVtZW50YWxEYXRhLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWRE
YXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICAgICAgcG9zaXRpb24gKz0gaW5jcmVtZW50
YWxEYXRhLnNpemUoKTsKICAgICAgICAgfQogICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWREYXRh
LmNvdW50LCBzZWdtZW50Q291bnQpOwogCi0gICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWZmZXIt
PmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6ZSAtIDEpOworICAgICAgICBhdXRvIGxhc3RCeXRlID0g
YnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEoZXhwZWN0ZWRTaXplIC0gMSk7CiAgICAgICAgIEVY
UEVDVF9UUlVFKFtsYXN0Qnl0ZS5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOltAImQiIGRh
dGFVc2luZ0VuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ11dKTsKICAgICAgICAgRVhQRUNU
X0VRKDFMVSwgbGFzdEJ5dGUuc2l6ZSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
d2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwCmluZGV4IDQ2Yzc2MjAzZTFiMjVhYWFiN2EwMmUwYmIy
YmY1ZTBjNDM2ZWQ2ODcuLjViZTY2NTk0NjEzNzMxZTIxZWQ5N2RhNzRjNTczOGM3Y2EyODViZjQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwCkBAIC0y
NSw3ICsyNSw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCi1SZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNo
YXIqKQorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJj
ZUludG9CdWZmZXIoY29uc3QgY2hhciopCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGYwMWFiOTBiNDc3ZDZmZGU5NTcwNDEwYTRmZGVkMGEwMjNlNmJhODUuLjVh
MWY0MGFkMmUxYWQ1YzM3Y2M2ZmRlNjhjOTE2MmU4MWZkYjVjMDAgMTAwNjQ0Ci0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMjEtMTItMDIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxl
LmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9t
IG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eTogcGFydCAzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERlY29kZXJU
ZXN0L0RlY29kZXJUZXN0L21haW4ubW06CisgICAgICAgIChtYWluKToKKwogMjAyMS0xMi0wOCAg
QWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGxheW91dCBwZXJm
b3JtYW5jZSB0ZXN0IGZvciBzaW1wbGUgYmlkaSBjb250ZW50IHdpdGggaW5saW5lIGJveGVzCg==
</data>
<flag name="commit-queue"
          id="471960"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446535</attachid>
            <date>2021-12-09 06:24:36 -0800</date>
            <delta_ts>2021-12-13 08:34:33 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233677-20211210012430.patch</filename>
            <type>text/plain</type>
            <size>785385</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2Nzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NTM5OGMzNmJmOTcxYTk4NjYwODYyYjM2MGQ3YjQwYmY2OGUwNTVlLi5mYWIwZWQxODk4NmY2NWQz
MDgxZjY0MDYzZGJlZjljYjg4ZDFhMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8v
cHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBi
ZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0FycmF5QnVmZmVyLmg6CisKIDIwMjEtMTItMDkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBJbnRyb2R1Y2UgQmFzZWxpbmVDYWxsTGlu
a0luZm8gYW5kIE9wdGltaXppbmdDYWxsTGlua0luZm8gdG8gc2hyaW5rIHNpemVvZihCYXNlbGlu
ZUNhbGxMaW5rSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2NGYwMjI3NTAxNDdkNjFjYWY0Yjg0ZDg4ZWFm
Zjg1NGY3MGVjNGFlLi42NTU3ZTc3OWIyNWM1NzEwMzIxNTUyZjcyZWJjMTA2N2I3MTZlMDI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAyNiBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5h
cmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nl
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3
NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRv
IFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlw
ZXMuCisKKyAgICAgICAgUmVuYW1lIG9ubHksIG5vIGNoYW5nZSBpbiBiZWhhdmlvdXIuCisKKyAg
ICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHA6
CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGlu
Z3NEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmg6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgorICAgICAgICAqIE1vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbToKKyAgICAg
ICAgKiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAq
IE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcDoKKyAg
ICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oOgorICAg
ICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAg
ICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgorICAgICAgICAq
IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAq
IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHA6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keS5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRj
aExvYWRlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0Lmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdl
LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmg6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3Bw
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmg6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmg6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHA6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
b3VyY2UvU291cmNlQnVmZmVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5o
OgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuY3BwOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGRv
bS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAg
ICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvU2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmg6CisgICAg
ICAgICogZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwOgorICAgICAgICAq
IGVkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmg6CisgICAgICAgICogZWRpdGlu
Zy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW06CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW06CisgICAgICAgICogZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHA6CisgICAg
ICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5o
OgorICAgICAgICAqIGZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgICogZmls
ZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmg6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1
bWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAg
ICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uV2ViS2l0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uV2ViS2l0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvQ29udGVu
dEZpbHRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tl
ci5jcHA6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxv
YWRlci9Mb2FkZXJTdHJhdGVneS5oOgorICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHA6
CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oOgorICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vic3Rp
dHV0ZURhdGEuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAg
ICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZUZhY3RvcnkuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3Bw
OgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oOgorICAgICAgICAq
IGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAqIGxvYWRl
ci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1s
L01IVE1MQXJjaGl2ZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRGb250LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNjcmlwdC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29h
Lmg6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAg
ICAgICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW06CisgICAgICAgICogcGFnZS9FZGl0b3JDbGll
bnQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlh
bGl6ZXIuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBw
YWdlL1NoYXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL05vd1Bs
YXlpbmdNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9h
cmRDdXN0b21EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAq
IHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxh
dGZvcm1Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJv
YXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZp
ZXdDb252ZXJ0ZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVy
UHJvdmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg6
CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1Jl
YWRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTm93UGxh
eWluZ0luZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFk
ZXJDb2NvYS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmg6CisgICAgICAgICogcGxhdGZv
cm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0
d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW06CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVk
QnVmZmVyQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5z
dGFuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNl
c3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5Lmg6CisgICAgICAgICogcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRF
bmNvZGVyR2xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNv
ZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Nb2RlbC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
bW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1C
dWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERh
dGEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0
aERhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5
cGVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGls
aXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVWZXJ0aWNhbERhdGEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJl
Y3RXcml0ZVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2Fs
YWJsZUltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
U2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAw
SW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcv
UE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0
ZWJvYXJkSU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJ
T1MubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0RhdGFVUkxEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0
b3IubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNz
aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNz
aW9uLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Lmg6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
U2hhcmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNw
cDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5Lmg6CisgICAgICAgICogdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZp
bHRlci5oOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6CisgICAgICAgICogd29y
a2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vz
c29yTGlieHNsdC5jcHA6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxp
YnhtbDIuY3BwOgorCisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFy
Oi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTaW1pbGFyIHRvIFN0cmluZ0J1aWxkZXIsIGEgU2hhcmVkQnVmZmVyIGNhbiBub3cgb25s
eSBiZSBtb2RpZmllZCB0aHJvdWdoCisgICAgICAgIGEgU2hhcmVkQnVmZmVyQnVpbGRlci4gQSBT
aGFyZWRCdWZmZXIgYmVjb21lcyBpbW11dGFibGUgb25jZSBjcmVhdGVkLgorCisgICAgICAgIEEg
U2hhcmVkQnVmZmVyQnVpbGRlciBpcyBhIHJlcGxhY2VtZW50IHRvIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+LgorICAgICAgICBUaGVyZSBleGlzdHMgYSBkaWZmZXJlbmNlIGJldHdlZW4gYSBudWxsIGFu
ZCBlbXB0eSBzdGF0ZS4KKyAgICAgICAgRm9sbG93aW5nIGEgY2FsbCB0byByZXNldCgpLCBTaGFy
ZWRCdWZmZXJCdWlsZGVyOjppc051bGwoKQorICAgICAgICB3aWxsIHJldHVybiB0cnVlIGFzIG9w
cG9zZWQgdG8gZW1wdHkoKSB3aGljaCB3aWxsIGNyZWF0ZSB0aGUgdW5kZXJseWluZworICAgICAg
ICBTaGFyZWRCdWZmZXIgYnV0IHdpdGggYSBzaXplIG9mIDAuCisgICAgICAgIEEgbnVsbCBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGluZGljYXRlcyB0aGF0IGFwcGVuZCB3YXMgbmV2ZXIgY2FsbGVkIG9u
IGl0CisgICAgICAgIChldmVuIHdpdGggYW4gZW1wdHkgU2hhcmVkQnVmZmVyKS4KKyAgICAgICAg
SXQgaXMgbm90IG5lY2Vzc2FyeSB0byBjaGVjayBpZiB0aGUgU2hhcmVkQnVmZmVyQnVpbGRlciBp
cyBudWxsIGJlZm9yZQorICAgICAgICBjYWxsaW5nIGNvcHkoKSBvciB0YWtlKCkgYXMgYW4gZW1w
dHkgU2hhcmVkQnVmZmVyIHdpbGwgYmUgY3JlYXRlZCBpZgorICAgICAgICBub25lIGV4aXN0cy4K
KyAgICAgICAgVGhlc2UgZGVzaWduIGRlY2lzaW9ucyB3ZXJlIG1hZGUgZHVlIHRvIGhvdyBTaGFy
ZWRCdWZmZXIgYXJlIGN1cnJlbnRseSB1c2VkCisgICAgICAgIGFuZCB0byBtaW5pbWlzZSB0aGUg
bG9naWMgY2hhbmdlIGFzIHNvbWUgcGxhY2VzIHdvdWxkIGRpc3Rpbmd1aXNoIGJldHdlZW4KKyAg
ICAgICAgdGhlIHR3byBzdGF0ZXMgb3Igd291bGQgYWx3YXlzIGNyZWF0ZSBhbiBlbXB0eSBTaGFy
ZWRCdWZmZXIgYW5kIG9ubHkgY2hlY2sKKyAgICAgICAgaXRzIHNpemUuCisgICAgICAgIEluIHRo
ZSBmdXR1cmUsIHJlbW92aW5nIHRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIG51bGwgYW5kIHB0eSB3
b3VsZCBiZQorICAgICAgICBwcmVmZXJhYmxlLgorCisgICAgICAgIFdoaWxlIHRoZSBhaW0gd2Fz
IHRvIGd1YXJhbnRlZSB0aGF0IGEgU2hhcmVkQnVmZmVyIG9uY2UgYnVpbHQgd2FzIGltbXV0YWJs
ZS4KKyAgICAgICAgVGhpcyBnb2FsIHdhc24ndCBlbnRpcmVseSBhY2hpZXZlZCBhcyBpdCBpcyBz
dGlsbCBwb3NzaWJsZSB0byByZXRyaWV2ZSBhIFJlZlB0cgorICAgICAgICB0byBhIFNoYXJlZEJ1
ZmZlciBhbmQgY29udGludWUgdG8gYXBwZW5kIHRvIGl0IHRocm91Z2ggaXRzIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIKKyAgICAgICAgb3duZXIuIEZ1bGwgaW1tdXRhYmlsaXR5IGNvdWxkIGJlIGZ1bGx5
IGFjaGlldmVkIHdpdGggaGF2aW5nIGdldCgpIHJldHVybiBhCisgICAgICAgIHNoYWxsb3cgY29w
eSB3aGljaCBpcyBhIHJlbGF0aXZlbHkgY2hlYXAgb3BlcmF0aW9uLgorCisgICAgICAgIEZseS1C
eSBmaXhlczogUGFzcyBTaGFyZWRCdWZmZXIgdmlhIGNvbnN0IHJlZmVyZW5jZXMgb3IgcG9pbnRl
cnMgd2hlcmUgaXQncyBlYXN5CisgICAgICAgIHRvIGRvIHNvLgorICAgICAgICBObyBjaGFuZ2Ug
aW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXI7IGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAg
ICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRP
TUNhY2hlOjphZGRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OnB1dCk6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hC
b2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3Vt
ZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXRTb3VyY2UpOgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpz
ZXREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRT
b3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2Vp
dmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVk
KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
cmVtb3ZlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRhdGFMZW5ndGggY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpk
ZWNvZGVEYXRhVG9Db250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6Omhhc0J1ZmZlcmVkRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OnNldERhdGFCdWZmZXJpbmdQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyOjpjbGVhclJlc291cmNlRGF0YSk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRhdGEgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0
dXRlUmVzb3VyY2U6OmRlbGl2ZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpw
YXJzZU5leHRQYXJ0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkRm9udDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpm
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpmaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFRleHRU
cmFjazo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRU
cmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0Lmg6CisgICAgICAgICog
bG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmlld0xv
YWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0Nv
bnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFwcGVuZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXJCdWlsZGVyOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmlzTnVsbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXJCdWlsZGVyOjppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlckJ1aWxkZXI6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcjo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRl
cjo6ZW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Z2V0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmNvcHkgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZSk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjplbnN1cmVCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRp
YUxvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
aXREYXRhOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OnBheWxvYWQgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVj
b2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWFkSUNDUHJvZmlsZSk6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQ
cmV2aWV3Q29udmVydGVyOjpQcmV2aWV3Q29udmVydGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6RGF0YTo6RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5S
YW5nZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6
OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1Njcmlw
dEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2Vn
bWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRCdWZmZXI6OmFwcGVuZCk6Cisg
ICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEJ1ZmZlcjo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6
aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6aXNF
bXB0eSBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpXb3JrZXJGb250TG9h
ZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0Ojppc1Bl
bmRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0Ojpl
bnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJl
cXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYik6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VBcnJheUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y2xlYXJSZXNwb25zZUJ1ZmZlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB4bWwv
WE1MSHR0cFJlcXVlc3QuaDoKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVy
IGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMwMzAKKyAgICAg
ICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgV2hlbiBjYWxsaW5nIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIHRoZSB1bmRlcmx5aW5n
IGRhdGEgd2FzIGZsYXR0ZW5lZCwKKyAgICAgICAgYW5kIHNvIGNvdWxkIGJlIG11dGF0ZWQgd2hp
bGUgYmVpbmcgc2hhcmVkLiBUaGlzIHdhcyBhbiB1bmRlc2lyYWJsZQorICAgICAgICBiZWhhdmlv
dXIuCisgICAgICAgIFdlIGludHJvZHVjZSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHdoaWNoIGd1
YXJhbnRlZSB0aGF0IGl0cyBjb250ZW50IGlzIG1hZGUKKyAgICAgICAgb2YgY29udGlndW91cyBk
YXRhLgorICAgICAgICBBbGwgbWV0aG9kcyB0aGF0IHdvdWxkIGhhdmUgbXV0YXRlZCBhIFNoYXJl
ZEJ1ZmZlciB3aGVuIGJlaW5nIGZsYXR0ZW5lZCBhcmUKKyAgICAgICAgbW92ZWQgdG8gQ29udGln
dW91c1NoYXJlZEJ1ZmZlci4KKworICAgICAgICBBcmVhIHdoZXJlIFNoYXJlZEJ1ZmZlcnMgd2Vy
ZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEgc2luZ2xlIHNlZ21lbnQgd2hlcmUKKyAgICAgICAgY29u
dmVydGVkIHRvIGEgQ29udGlndW91c1NoYXJlZEJ1ZmZlci4KKyAgICAgICAgUHJldmlvdXNseSwg
YSBTaGFyZWRCdWZmZXIgd291bGQgaGF2ZSBiZWVuIGZsYXR0ZW5lZCBvbmx5IGlmIGl0IG5lZWRl
ZCB0byBiZQorICAgICAgICBhbmQgb25seSB3aGVuIHRoZSBkYXRhIHdhcyBnb2luZyB0byBiZSBh
Y2Nlc3NlZDsgZm9sbG93aW5nIHRoaXMgY2hhbmdlCisgICAgICAgIHRoZSBjb252ZXJzaW9uIGlz
IG5vdyBleHBsaWN0bHkgZG9uZSB0aHJvdWdoIGEgY2FsbCB0byBtYWtlQ29udGlndW91cy4KKyAg
ICAgICAgVGhpcyBjb252ZXJzaW9uIGlzIGEgbm8tb3AgaWYgdGhlIFNoYXJlZEJ1ZmZlciBiZWlu
ZyBjb252ZXJ0ZWQgd2FzIGFscmVhZHkKKyAgICAgICAgYSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
LgorICAgICAgICBXaXRoIHRoZSBuYXR1cmUgb2YgYSBTaGFyZWRCdWZmZXIgYmVpbmcgc2hhcmVk
IGJ5IHBvdGVudGlhbGx5IG11bHRpcGxlCisgICAgICAgIHVzZXJzIGl0IHdhcyBuZWNlc3Nhcnkg
dG8gbGltaXQgdGhlIG51bWJlciBvZiBjb252ZXJzaW9ucyBiZWluZyBwZXJmb3JtZWQKKyAgICAg
ICAgb24gZGVtYW5kIHRvIGF2b2lkIHJlZHVuZGFuY3kuCisgICAgICAgIFdoZW4gdGhlIGZsYXR0
ZW5pbmcgY291bGQgaGF2ZSBvY2N1cmVkLCB0aGUgU2hhcmVkQnVmZmVyIGNyZWF0aW9uIHBvaW50
cyB3ZXJlCisgICAgICAgIHRyYWNlZCBiYWNrIGFuZCBpZGVudGlmaWVkIHRvIG1ha2UgdGhlIGJ1
ZmZlciBjb250aWd1b3VzIHRoZW4uCisgICAgICAgIEluIHRoZSBlbmQsIHRoZXJlJ3Mgbm8gbW9y
ZSBTaGFyZWRCdWZmZXIgZmxhdHRlbmluZyBvcGVyYXRpb25zIHRoYW4gdGhlcmUKKyAgICAgICAg
d291bGQgaGF2ZSBiZWVuIGJlZm9yZSB0aGlzIGNoYW5nZS4KKyAgICAgICAgVGhlcmUncyBhIHBv
dGVudGlhbCBpbmNyZWFzZSBvZiB0ZW1wb3JhcnkgbWVtb3J5IHVzYWdlIHdpdGggdGhlCisgICAg
ICAgIFNjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyIGNsYXNzOyBidWcgMjMzNTExIGlzIHRyYWNr
aW5nIGl0LgorCisgICAgICAgIFdoaWxlIHRoZSBjaGFuZ2UgaXMgZXh0ZW5zaXZlLCBjb2RlIGNv
dmVyYWdlIG9mIHRoZSBtb2RpZmllZCBhcmVhcyBpcyB0aG9yb3VnaAorICAgICAgICB3aGljaCBt
YWtlcyB1bmRldGVjdGVkIHJlZ3Jlc3Npb25zIHVubGlrZWx5LgorCisgICAgICAgIEluIGJ1ZyAy
MzM0NDIsIGEgU2hhcmVkQnVmZmVyIHdpbGwgYmUgbWFkZSBjb21wbGV0ZWx5IGltbXV0YWJsZSBv
bmNlIGNyZWF0ZWQuCisKKyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFuZ2UuCisgICAgICAgIENv
dmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLiBOZXcgQVBJIHRlc3RzIGNyZWF0ZGVkLgorCisg
ICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgor
ICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJbWFnZVJlYWRlcjo6
cmVhZEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1
dGVSZWFsQm9keVNpemUpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGU6OmFkZEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpE
T01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNo
ZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmg6CisgICAgICAgICog
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01D
YWNoZUVuZ2luZTo6aXNvbGF0ZWRSZXNwb25zZUJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
Q2FjaGVFbmdpbmU6OmNvcHlSZXNwb25zZUJvZHkpOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUv
RE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6
CisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZUtleWlkcyk6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpr
ZXlJZHNNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0
b3I6Om5leHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoQm9keTo6Ym9keUFzRm9ybURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpCb2R5
TG9hZGVyOjpjb25zdW1lRGF0YUJ5Q2h1bmspOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNw
b25zZTo6c2V0Qm9keURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0OjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIE1vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2Vy
aWFsaXplSURCS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVJREJLZXlEYXRh
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5o
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmFkZEV4aXN0aW5nSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2VkSGFz
SW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxl
dGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0
Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJz
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJzb3I6OmJp
bmRBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJDdXJz
b3I6OnJlc2V0QW5kUmViaW5kUHJlSW5kZXhTdGF0ZW1lbnRJZk5lY2Vzc2FyeSk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2Vu
ZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50
Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5l
a2l0L1NjZW5lS2l0TW9kZWxMb2FkZXJVU0QubW06CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRv
VGVtcG9yYXJ5RmlsZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbik6
CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaDoKKyAg
ICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Rm9udEZhY2VTb3VyY2U6OmxvYWQpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5o
OgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6cHJvbWlzZWRBdHRhY2htZW50SW5mbyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoK
KyAgICAgICAgKiBlZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oOgorICAgICAgICAq
IGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjphcmNoaXZl
ZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Z2V0
UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6ZGF0
YUluUlRGRm9ybWF0KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06
CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQpOgorICAg
ICAgICAoZmlsZVdyYXBwZXJGb3JVUkwpOgorICAgICAgICAoZmlsZVdyYXBwZXJGb3JFbGVtZW50
KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OnJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpleHRyYWN0TWFya3VwQW5kQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRl
bnRSZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRNYXJrdXBS
ZWFkZXI6OnJlYWRSVEZEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJl
YWRSVEYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJU
Rik6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBodG1sL0ZUUERp
cmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRlbXBsYXRlRG9j
dW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2Vy
Ojpsb2FkRG9jdW1lbnRUZW1wbGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KToKKyAgICAgICAgKiBs
b2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVy
OjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0
Q2hlY2tlcjo6ZG9QcmVmbGlnaHQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2Fk
aW5nTXVsdGlwYXJ0Q29udGVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAg
ICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAqIGxv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVmZmVyRnJvbVJlc291
cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRT
eW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpt
YXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFy
Y2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJv
cGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlv
bik6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjpmaW5p
c2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZv
bnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmNoZWNrTm90aWZ5KToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVm
ZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERh
dGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpyZXNvdXJj
ZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6ZmluaXNoTG9h
ZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIv
Y29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rp
c2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tDYWNoZU1vbml0
b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVC
YWNrZWQpOgorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9Q
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToK
KyAgICAgICAgKiBwYWdlL1BhZ2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2Vy
aWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
U2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyk6CisgICAgICAgICogcGFnZS9QYWdlU2Vy
aWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhLmg6CisgICAgICAgICogcGFnZS9T
aGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVEYXRhUmVhZGVyOjpT
aGFyZURhdGFSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVEYXRhUmVhZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJk
Q3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Y3JlYXRlU2hhcmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRD
dXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkQ3VzdG9tRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmg6CisgICAgICAgICog
cGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJvbWlz
ZWRBdHRhY2htZW50SW5mby5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjppc0NvbnRpZ3VvdXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjb3B5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21l
bnQ6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5z
TWFwcGVkRmlsZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6ZGVjb2RlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhU2VnbWVudDo6
c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hh
cmVkQnVmZmVyRGF0YVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0YVZp
ZXc6OmRhdGFBc0NoYXJQdHIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
RGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjp1
dGY4QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFTZWdtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNl
Z21lbnQ6OkRhdGFTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQ
bGF5aW5nSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6S2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nm
L1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRJRkZUb1BORyk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbToKKyAgICAgICAgKC1bV2Vi
Q29yZVNoYXJlZEJ1ZmZlckRhdGEgaW5pdFdpdGhEYXRhU2VnbWVudDpwb3NpdGlvbjpzaXplOl0p
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRh
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZUNGRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVNlZ21lbnQ6
OmNyZWF0ZU5TRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVV0aWxpdGllczo6cGFyc2VK
U09OT2JqZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5aWRzTG9jYXRpb25G
cm9tQ2VuY0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlpZHNGcm9tQ2Vu
Y0luaXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29kZXJHZW5lcmljOjpmaW5pc2hFbmNvZGluZyk6
CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OktleWVkRW5jb2RlckdsaWI6OmZpbmlzaEVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1NoYXJl
ZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlR0J5dGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZWw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2RlbDo6TW9kZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2RlbDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vZGVsOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9y
bWF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRVSW50MzIpOgorICAgICAgICAoV2ViQ29y
ZTo6cmVhZFVJbnQxNik6CisgICAgICAgIChXZWJDb3JlOjppc1dPRkYpOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydFdPRkZUb1NmbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFdPRkZU
b1NmbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVG
b3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFNpbmZEYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSlNP
TlZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6bG9hZFNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3Zp
ZGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
bmV3aW5nUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmFwcGVuZERhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJj
ZUxvYWRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRl
cjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxSZXNvdXJjZU1lZGlh
TG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNo
YXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURl
Y29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0cpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
Q0c6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERG
RG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9y
bURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnBsYXRm
b3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJs
ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
ckNvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3Jl
YXRlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0aW9uRGF0YUVu
Y291bnRlcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dT
dHJlYW1lckVNRVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYXJrdXBUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGll
cy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGE6OkluaXREYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm86OmdldEl0YWxpY0Nv
cnJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaElu
Zm86Om1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OkdseXBoQXNzZW1ibHk6OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1hdGhHbHlwaENvbnN0cnVjdGlvbjo6Z2V0U2l6ZVZhcmlh
bnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpNYXRoR2x5cGhDb25zdHJ1
Y3Rpb246OmdldEFzc2VtYmx5UGFydHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6Ok1hdGhWYXJpYW50czo6bWF0aEdseXBoQ29uc3RydWN0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlOjpNQVRIVGFibGU6Om1hdGhDb25zdGFudHMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Ok1BVEhUYWJsZTo6bWF0aEdseXBoSW5mbyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6TUFUSFRhYmxlOjptYXRoVmFyaWFudHMgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERh
dGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVz
Lmg6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6dmFsaWRhdGVUYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZTo6VGFibGVCYXNlOjppc1ZhbGlkRW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRlUHRyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok9wZW5UeXBlOjpUYWJsZUJhc2U6OnZhbGlkYXRlT2Zmc2V0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5UeXBlOjpUYWJsZVdpdGhDb3ZlcmFnZTo6Z2V0Q292ZXJhZ2VJbmRleCBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVuYW1lRm9udCk6CisgICAgICAgIChXZWJD
b3JlOjpyZW5hbWVBbmRBY3RpdmF0ZUZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OlN1YnN0aXR1dGlvblN1YlRhYmxlOjpjb3ZlcmFnZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpPcGVuVHlwZTo6TG9va3VwVGFibGU6OmdldFN1YnN0aXR1dGlvbnMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6Okxvb2t1cExpc3Q6Omxvb2t1cCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6RmVhdHVyZVRhYmxlOjpnZXRHbHlwaFN1YnN0
aXR1dGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkZlYXR1cmVMaXN0
OjpmZWF0dXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpGZWF0dXJlTGlz
dDo6ZmluZEZlYXR1cmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGU6OkxhbmdT
eXNUYWJsZTo6ZmVhdHVyZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6U2Ny
aXB0VGFibGU6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5U
eXBlOjpTY3JpcHRMaXN0OjpzY3JpcHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6T3BlblR5
cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRTY3JpcHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
T3BlblR5cGU6OlNjcmlwdExpc3Q6OmRlZmF1bHRMYW5nU3lzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OnNjcmlwdExpc3QgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6ZmVhdHVyZUxpc3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6T3BlblR5cGU6OkdTVUJUYWJsZTo6bG9va3VwTGlzdCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpkZWZhdWx0TGFuZ1N5cyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpPcGVuVHlwZTo6R1NVQlRhYmxlOjpmZWF0dXJlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlOjpHU1VCVGFibGU6OmdldFZlcnRpY2FsR2x5cGhT
dWJzdGl0dXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRIbXR4VGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlblR5cGVWZXJ0aWNhbERhdGE6OmxvYWRNZXRyaWNzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1
YnN0aXR1dGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRm
b3JtRGF0YUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6
Om9wZW5UeXBlVGFibGUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURh
dGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1NlbGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6OnNldEN1
c3RvbURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6Y3VzdG9tRGF0YSBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURl
Y29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVhZElDQ1Byb2ZpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZSk6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Zmls
ZVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkV3JpdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
UGFzdGVib2FyZFdyaXRlcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVi
b2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2Fm
ZUZvckRPTVRvUmVhZEFuZFdyaXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQYXN0ZWJvYXJk
SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
Q2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVz
dDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hhcmVk
QnVmZmVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGlj
ZW5zZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0
YSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNo
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaDo6cHJvY2Vzc1Jlc3Bv
bnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKToKKyAgICAg
ICAgKiB4bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9j
TG9hZGVyRnVuYyk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTEyLTA5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+IGFuZCBEb24gT2xtc3RlYWQgIDxk
b24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgTW92ZSBUZXh0Q29kZWMgZmlsZXMgZnJv
bSBXZWJDb3JlL3BsYXRmb3JtL3RleHQgdG8gV2ViQ29yZS9QQUwvdGV4dApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBl
ZmU0OGI0YmYwYzkzMWZiZTFmYmQ1NDE3Nzc0YzVhY2M2MmQ0MGIwLi5iYTFhOGQxM2RlNjVkZGRl
NDkzNmM5MDEzNzBmZDkwZTEyZDAxOGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyMCBAQAorMjAy
MS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJl
bmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2Mzkw
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJl
ZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBD
b250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0
aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETVByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETVByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvblByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5j
cHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5j
cHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
bGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RU
YXNrLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5Lmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNw
cDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNw
cDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlLmg6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKiBT
aGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFy
ZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1l
bnRDb2RlcnNHdGsuY3BwOgorICAgICAgICAqIFNoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzV2luLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQ
SUF0dGFjaG1lbnRDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFy
Z2V0R3RrMy5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlwYm9h
cmRHdGs0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVy
UHJpdmF0ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJ
SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3Mvd2lu
L1dlYlByb2Nlc3NXaW4uY3BwOgorCisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAg
ICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpi
dWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpk
aWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVt
ZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRG
YWlsKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
Lmg6CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250
aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMz
MzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZFJlcGx5
VG9TeW5jaHJvbm91c1JlcXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjplbmNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkIGNvbnN0KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTCk6CisgICAgICAgICog
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5OjpkZWNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5Lmg6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OlNoYXJlZEJ1ZmZlckNvcHkp
OgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIpOgorICAgICAgICAoSVBD
OjpTaGFyZWRCdWZmZXJDb3B5OjpidWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL1No
YXJlZE1lbW9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hh
cmVkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tOgorICAgICAgICAoQVBJOjpX
ZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWY8
V2ViQ29yZTo6Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFNoYXJlZC9S
ZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNo
YXJlZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6
OnRyeVdyYXBJblNoYXJlZEJ1ZmZlciBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OmRlY29kZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgIChJUEM6OmVuY29k
ZVR5cGVzQW5kRGF0YSk6CisgICAgICAgIChJUEM6OmRlY29kZVR5cGVzQW5kRGF0YSk6CisgICAg
ICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRl
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6
OkVudHJ5Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
ZXJpYWxpemVkQXR0YWNobWVudERhdGE+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJz
R3RrLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHA6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1E
YXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAg
ICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24gY29uc3Qp
OgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2Vu
dGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAg
KEFQSTo6Z2V0RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubW06CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbiBjb25zdCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZy
b21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N0b3JlQXBwSGlnaGxpZ2h0
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJ
bWFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3Rl
Ym9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2VkRmls
ZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpy
ZXF1ZXN0RE9NUGFzdGVBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFz
azo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzp3aXRoU2VuZGVyOl0p
OgorICAgICAgICAoYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OnNoYXJlRWxlbWVudFdpdGhJ
bWFnZTpyZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkVkaXRvckNsaWVu
dDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5tbToKKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyIF9zZXRFZGl0aW5nRGVsZWdhdGU6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpyZWxlYXNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hl
UmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9h
cmREYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Zmlu
aXNoZWRMb2FkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6YnVmZmVyRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lOjpzb3VyY2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0RGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlblN0YW5kYnkgY29u
c3QpOgorCiAyMDIxLTEyLTA5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDb3B5IFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyIGVycm9yIHdoZW4g
ZmFpbGluZyBpdHMgU2VydmljZVdvcmtlckZldGNoVGFzawpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRl
eCA2YjlkZmRjNjYxZjIyYzA3MWQ4MGYzMjA5ZmU3MWZmZmJiOTBlZGE3Li5hNGQ5Mzg2ZTM3MDA1
N2Y2N2EwYTk5ZTVmZjFlY2QxODI2Mjg0MjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9w
cm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIg
YW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJl
dHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaDoKKwogMjAyMS0xMi0wOSAgTXlsZXMgQy4gTWF4Zmll
bGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPiBhbmQgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFk
QHNvbnkuY29tPgogCiAgICAgICAgIE1vdmUgVGV4dENvZGVjIGZpbGVzIGZyb20gV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0IHRvIFdlYkNvcmUvUEFML3RleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwppbmRleCBkMDg0NDljMTQ5MjkwNGRmOGUzNGU5MmZjMTc1ZWM4YjRiNWFmY2I4Li4zYzZmNTc1
ZDZmYTdkZmRiODg2OTQ2YjQ0YzJhMDBkMDNkMWZmNTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAg
ICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFy
ZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2Uu
bW06CisKKzIwMjEtMTEtMjUgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlciBmcm9tIG5vbi1jb250
aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDMwCisgICAgICAgIHJkYXI6Ly84NTMz
MzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogRE9N
L0RPTVVJS2l0RXh0ZW5zaW9ucy5tbToKKyAgICAgICAgKC1bRE9NSFRNTEltYWdlRWxlbWVudCBk
YXRhUmVwcmVzZW50YXRpb246XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgor
ICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YSk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAgICAgICAoV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgZGF0YV0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAoLVtXZWJIVE1M
UmVwcmVzZW50YXRpb24gZG9jdW1lbnRTb3VyY2VdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVNZW51SXRlbSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJSZXNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViUmVzb3VyY2UgZW5jb2RlV2l0aENv
ZGVyOl0pOgorICAgICAgICAoLVtXZWJSZXNvdXJjZSBkYXRhXSk6CisgICAgICAgICgtW1dlYlJl
c291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIxLTEyLTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+IGFuZCBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29u
eS5jb20+CiAKICAgICAgICAgTW92ZSBUZXh0Q29kZWMgZmlsZXMgZnJvbSBXZWJDb3JlL3BsYXRm
b3JtL3RleHQgdG8gV2ViQ29yZS9QQUwvdGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmlu
ZGV4IDU4NDBkZTExNjc3MTlhMDYzOWI4YTIxYmJkYWU5ZDg0ZWY3ZDg5MmEuLjhjZjMxZjIxZTcy
NjI3MGEzOWZlNDgxYzhjMmM3OTZjYmJjY2U1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2MCBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAg
ICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1
ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAg
ICAgICAgKiBNZW1vcnlTdHJlYW0uY3BwOgorICAgICAgICAqIE1lbW9yeVN0cmVhbS5oOgorICAg
ICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6
CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAqIFdlYkZyYW1lLmg6CisgICAgICAg
ICogV2ViS2l0RExMLmNwcDoKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAgICAgICog
V2ViUmVzb3VyY2UuaDoKKworMjAyMS0xMi0wMSAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAg
cmRhcjovLzg1NjkzOTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZERhdGEpOgor
CisyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91
cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzAzMAorICAgICAgICByZGFyOi8vODUzMzM4MTQK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIE1lbW9yeVN0
cmVhbS5jcHA6CisgICAgICAgIChNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbSk6CisgICAgICAg
IChNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0u
aDoKKyAgICAgICAgKiBXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkFyY2hpdmU6OmRhdGEp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJEYXRhU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkRhdGFTb3VyY2U6OmRhdGEpOgorICAgICAgICAqIFdlYlJlc291
cmNlLmNwcDoKKyAgICAgICAgKFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAg
ICogV2ViUmVzb3VyY2UuaDoKKwogMjAyMS0xMi0wOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPiBhbmQgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29t
PgogCiAgICAgICAgIE1vdmUgVGV4dENvZGVjIGZpbGVzIGZyb20gV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0IHRvIFdlYkNvcmUvUEFML3RleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlci5oCmluZGV4IGVhY2NhMmMyMzNhOGE2OTM3MTU5MDgwN2RmZDM2NzViMDYxNTk0
MjguLmI0NjkzZjkxYzYwN2Q4ZDA3NDU5NDY0NmU4ZGM0MzcyZTliYzk5ZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMTI5LDcgKzEyOSw3IEBA
IHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVy
PiB0cnlDcmVhdGUoQXJyYXlCdWZmZXImKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3Qg
Ynl0ZUxlbmd0aCk7CiAKLSAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJyYXk6
OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIuCisgICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVh
dGVVbmluaXRpYWxpemVkIGFuZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJh
eUJ1ZmZlci4KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBj
cmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVy
PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDMzNTRi
NTJhNTBjYmIxODlmZGZhZWI3ZDgyNDgzYmUwYzQxYzNkNGUuLmRhMzM2ZTZmNWIxNjk0ZTM3NDc2
OTBjNDNkMmI1M2YzNTE4YzA5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAKQEAg
LTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVBMQVRGT1JNKENPQ09B
KQogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCit2b2lkIENsaXBib2FyZEltYWdl
UmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
bWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXIuaAppbmRleCAyYjYyNjI4NDE5YjA5Y2JiNjk1NTIxNWIwZDVkN2Q3
M2MwYjM3NDRkLi42ZTIyMDQ4Y2Y1ZmVhOWFhNjJkYWRmNDViMWYzNWM0Y2UwZDdkNmUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
bWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEltYWdlUmVhZGVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgQ2xpcGJvYXJkSW1hZ2VSZWFkZXIgOiBQYXN0
ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgQ2xpcGJvYXJkSW1hZ2VSZWFkZXIoRG9jdW1lbnQqIGRv
Y3VtZW50LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KIAogICAgIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
KSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2
b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBSZWZQdHI8RG9j
dW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGlu
Z3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IGQwNzQ2ZGEyZGEyMDll
MDIzMjViNWZhMjE0ZGJlZTY0YmY5YzkwNzguLmVmZjEwYjViNjVmZDgxYWQ5YmEzMmY4MGIzZjJj
ZjJmOGU5OGYxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuY3BwCkBAIC0yMTYsOCArMjE2LDggQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlOjppbnZva2VDb21wbGV0aW9uSGFuZGxlcigpCiAgICAgICAgIGF1dG8mIGRhdGEg
PSBpdGVtVHlwZUxvYWRlci0+ZGF0YSgpOwogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxTdHJpbmc+KGRhdGEpICYmICEhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKSkKICAgICAgICAg
ICAgIGN1c3RvbURhdGEud3JpdGVTdHJpbmcodHlwZSwgc3RkOjpnZXQ8U3RyaW5nPihkYXRhKSk7
Ci0gICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZl
cj4+KGRhdGEpKQotICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwgc3RkOjpn
ZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpLmNvcHlSZWYoKSk7CisgICAgICAgIGVsc2UgaWYg
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihkYXRh
KSkKKyAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIHN0ZDo6Z2V0PFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZGF0YSkuY29weVJlZigpKTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMjY1LDkgKzI2NSw5IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiB7
CiAgICAgaWYgKG1fdHlwZSA9PSAidGV4dC9odG1sIl9zKSB7CiAgICAgICAgIFN0cmluZyBtYXJr
dXBUb1Nhbml0aXplOwotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hh
cmVkQnVmZmVyPj4obV9kYXRhKSkgewotICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpn
ZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7Ci0gICAgICAgICAgICBtYXJrdXBUb1Nhbml0
aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwor
ICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+KG1fZGF0YSkpIHsKKyAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKKyAgICAgICAgICAgIG1hcmt1cFRv
U2FuaXRpemUgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0g
c3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwogCkBAIC0yNzgsOSArMjc4LDkgQEAgdm9pZCBDbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2Fu
aXRpemVEYXRhSWZOZWUKICAgICB9CiAKICAgICBpZiAobV90eXBlID09ICJpbWFnZS9wbmciX3Mp
IHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZTsKLSAgICAg
ICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkp
Ci0gICAgICAgICAgICBidWZmZXJUb1Nhbml0aXplID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZl
cj4+KG1fZGF0YSkucHRyKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBidWZmZXJUb1Nhbml0aXplOworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpCisgICAgICAgICAgICBidWZmZXJU
b1Nhbml0aXplID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihtX2RhdGEp
LnB0cigpOwogICAgICAgICBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4o
bV9kYXRhKSkKICAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSB1dGY4QnVmZmVyKHN0ZDo6
Z2V0PFN0cmluZz4obV9kYXRhKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2UuaAppbmRleCAyY2MyYzhlMWE1NGUxOGQ3MzQ5NWM1MzBjZDc3ZDU0Zjk5YTUy
OWE3Li4zN2M4MjVlMjM1YThhOGI3ZTQ0ZTQwZmIwYzJkNzcyNDQwN2E3NTg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCkBAIC0zOCw3ICszOCw3IEBA
IGNsYXNzIERPTVByb21pc2U7CiBjbGFzcyBGaWxlUmVhZGVyTG9hZGVyOwogY2xhc3MgUGFzdGVi
b2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZSA6IHB1YmxpYyBDbGlwYm9hcmRJdGVtRGF0YVNvdXJj
ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Myw3ICs1Myw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7CiAKLSAgICB1c2luZyBC
dWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PjsK
KyAgICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgY2xhc3MgQ2xpcGJvYXJkSXRlbVR5cGVMb2FkZXIg
OiBwdWJsaWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCwgcHVibGljIFJlZkNvdW50ZWQ8Q2xpcGJv
YXJkSXRlbVR5cGVMb2FkZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBSZWY8Q2xp
cGJvYXJkSXRlbVR5cGVMb2FkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHR5cGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRl
cklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlw
Ym9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCA0MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhh
ZjMwN2EzYTQ0MTAwLi4yNzRlMDM4ZDQxODcwMTYxZTRlZWI4MGMxMmFiYmE4NzFmOWQ0YTY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCkBAIC0zNCwxMCArMzQs
MTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVy
OjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKLSAgICAgICAg
YXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NVSUltYWdlSW5zdGFuY2UoKSBpbml0V2l0
aERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAgICBhdXRvIGltYWdl
ID0gYWRvcHROUyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlm
IChhdXRvIG5zRGF0YSA9IFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZS5nZXQoKSkpCiAg
ICAgICAgICAgICBtX3Jlc3VsdCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50LmdldCgpLCBWZWN0
b3IgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obnNEYXRhLmJ5dGVzKSwgbnNEYXRhLmxl
bmd0aCB9LCBtX21pbWVUeXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXJNYWMubW0KaW5kZXggYjRjMzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTVi
Zi4uMzgyMWIwMzcxODAyODIzZDY5YTgzMGEzMTBkYTM0NzA4ZDYzMzA3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdl
UmVhZGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMzMsMTAgKzMzLDEwIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZl
cihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewog
ICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2Ug
PSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFs
bG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOwogICAgICAgICBpZiAoYXV0byBjZ0ltYWdlID0gW2ltYWdlIENHSW1hZ2VGb3JQ
cm9wb3NlZFJlY3Q6bmlsIGNvbnRleHQ6bmlsIGhpbnRzOm5pbF0pIHsKICAgICAgICAgICAgIGF1
dG8gcmVwcmVzZW50YXRpb24gPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5p
dFdpdGhDR0ltYWdlOmNnSW1hZ2VdKTsKICAgICAgICAgICAgIE5TRGF0YSogbnNEYXRhID0gW3Jl
cHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlw
ZVBORyBwcm9wZXJ0aWVzOkB7IH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmNwcAppbmRleCBlNmNjMWFhZTc4M2E1MjA5NGY2NTQ5OWJiOTBkZDdmMDA3MWQ0MjRjLi45
NWFhMDg2NTk0YTZmYjYwZDU2ZmQ3MTVlM2Y0MmUyNDQ2ODlhMWJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgRE9N
Q2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzaXplX3QgcmVjb3Jk
UG9zaXRpb24gPSB0YXNrSGFuZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVjdGlvblJlY29yZChyZXF1
ZXN0LmdldCgpLCByZXNwb25zZSwgbnVsbHB0cikpOwogCi0gICAgICAgICAgICByZXNwb25zZS5j
b25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tIYW5k
bGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCByZXNw
b25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxlciA9
IFdURk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3VsdCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRhc2tIYW5kbGVyLT5pc0RvbmUoKSkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTksOSArMjk5LDkgQEAgdm9pZCBET01D
YWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYgcHIKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAo
YXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAg
ZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAg
ICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRhc2tIYW5kbGVyLT5hZGRSZXNw
b25zZUJvZHkocmVjb3JkUG9zaXRpb24sIHJlc3BvbnNlLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAg
ICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFkZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlv
biwgcmVzcG9uc2UsIGRhdGEudGFrZUFzQ29udGlndW91cygpKTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICB9LCBjYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuZmV0Y2gpOwogICAg
IH0KQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRh
KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaAogCiAgICAgRE9N
Q2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSBib2R5OwogICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJl
c3BvbnNlQm9keS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkKLSAgICAgICAgYm9keSA9IGJ1ZmZlci5y
ZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBib2R5ID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygp
OwogICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNlLmdldCgpLCBX
VEZNb3ZlKGJvZHkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJj
ZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9
IFdURk1vdmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxl
KFdURk1vdmUocmVzdWx0KSk7CkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBET01DYWNoZTo6cHV0
KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIERPTVBy
b21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAg
ICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5nZXQoKTsKLSAgICAgICAgcmVzcG9u
c2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3Bv
bnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHBlbmRpbmdBY3Rpdml0eSA9IG1h
a2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsK
KyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2Ug
PSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSwgcGVuZGlu
Z0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1dG8mJiByZXN1
bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7
CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21p
c2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgcmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0zODMsOSArMzgzLDkgQEAgdm9pZCBET01D
YWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9u
c2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNo
dW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5k
KGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAgIGRhdGEuYXBw
ZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwg
V1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHsgV1RGTW92ZShkYXRhKSB9KTsKKyAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9u
c2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9u
c2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7IGRhdGEudGFrZUFzQ29udGlndW91cygpIH0pOwog
ICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggMjU5MTRiNDBiYjIzODNhMDc4
ODA0Zjg5YjExYjQwZDg5NzBiNDMwNi4uYzBmODAzMmIwNDUyYzM3ZWU0Y2FmYmNhZmQ3OWYwOWQy
MTQ2MzMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVu
Z2luZS5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25z
ZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogICAgIHJldHVybiBXVEY6OnN3aXRjaE9u
KGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkg
ewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgpOwogICAgIH0sIFtdKGNv
bnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7Ci0gICAgICAg
IHJldHVybiBidWZmZXItPmNvcHkoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7
IC8vIFNoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMu
CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAg
ICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKaW5kZXggMjg1
MGRiYTFlM2JmYTExZjQ4OWI0NDQwMzUxM2Q1MWFlMWJlYWQzYS4uOWQxYmM2NzRmYzgyNmNiNmQx
NmQwMjUxMGNmODQwMTBhZGNiZDc3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAtMTM1LDE3ICsxMzUsMTcgQEAgYm9vbCBDRE06OnN1cHBv
cnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSkgY29uc3QKICAg
ICByZXR1cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3VwcG9ydGVkSW5pdERhdGFUeXBlcygp
LmNvbnRhaW5zKGluaXREYXRhVHlwZSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETTo6
c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgaW5pdERhdGEpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RN
OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgcmV0dXJuIEluaXREYXRh
UmVnaXN0cnk6OnNoYXJlZCgpLnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0
YSk7CiB9CiAKLWJvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK2Jvb2wgQ0RNOjpzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBt
X3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRC
dWZmZXImIHJlc3BvbnNlKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETTo6c2Fu
aXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKIHsK
ICAgICBpZiAoIW1fcHJpdmF0ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAppbmRleCBkOGE0YjNhZjEyZjFhNzky
M2Q4ODcwNWQ1Yjk1ODFkMzZmMTAyNzBjLi5kN2IxZDUzZDA0OTFmNzI3NzliNTk0YjJkODNjMDli
ODNiY2YyMDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
LmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgQ0RNSW5zdGFuY2U7CiBjbGFzcyBDRE1Qcml2YXRl
OwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RN
IDogcHVibGljIFJlZkNvdW50ZWQ8Q0RNPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETT4sIHBy
aXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgpAQCAtNzMsMTAgKzcz
LDEwIEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdDsKICAgICBi
b29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBib29sIHN1cHBvcnRzSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
KTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6
ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oCmluZGV4IDIxZTUyZjRiNzE0
ZmI5MWY2N2NmYzM5NjEzOWMxNjUyNWJmYjdiOWIuLjQxMGVkMmZiNjQyNzU2MmNlOWJkOGVkYTRk
OTFhODZiYTk4Y2FhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvQ0RNQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9DRE1DbGllbnQuaApAQCAtMzYsMTQgKzM2LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENETUluc3RhbmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNQ2xpZW50IDogcHVibGljIENhbk1ha2VX
ZWFrUHRyPENETUNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkNETUNsaWVudCgpID0g
ZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCBjZG1DbGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5
YmFja0lmTmVjZXNzYXJ5KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjZG1DbGllbnRVbnJlcXVl
c3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRC
dWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0
aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdp
c3RyeS5jcHAKaW5kZXggMGJmNWVhYTc0ZWRiZTY4OWE4ZDJlNDBhMzQxYTY3MDc0NDBmMmQ1Ni4u
NmY4ODhlMTc4NThkZGE2ZDk0NzFlYzFmNmVmNWQwNjZkZjBlNDk5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0
cnkuY3BwCkBAIC01NCwxMyArNTQsMTMgQEAgbmFtZXNwYWNlIHsKICAgICBjb25zdCB1aW50MzJf
dCBrS2V5SWRzTWF4S2V5SWRTaXplSW5CeXRlcyA9IDUxMjsKIH0KIAotc3RhdGljIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyAxLiBGb3JtYXQKICAgICAvLyBo
dHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0
ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihidWZmZXIuc2l6ZSgpKSB9OworICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07CiAK
ICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBpZiAo
IXZhbHVlKQpAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIGlm
ICgha2lkc0FycmF5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgVmVjdG9y
PFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4ga2V5SURzOwogICAgIGZvciAoYXV0byYgdmFsdWUgOiAqa2lkc0FycmF5KSB7
CiAgICAgICAgIGF1dG8ga2V5SUQgPSB2YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAgaWYgKCFr
ZXlJRCkKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxT
aGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWQKICAgICByZXR1
cm4ga2V5SURzOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlp
ZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKICAgICAvLyAxLiBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIu
aW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNm
b3JtYXQKQEAgLTEwNCwxNCArMTA0LDE0IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
YW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICBhdXRvIG9iamVj
dCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgYXV0byBraWRzQXJyYXkgPSBKU09OOjpB
cnJheTo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRvJiBidWZmZXIgOiBrZXlJREJ1ZmZlci52YWx1
ZSgpKQotICAgICAgICBraWRzQXJyYXktPnB1c2hTdHJpbmcoYmFzZTY0VVJMRW5jb2RlVG9TdHJp
bmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgICAgIGtpZHNBcnJheS0+
cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRz
IiwgV1RGTW92ZShraWRzQXJyYXkpKTsKIAogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3Qt
PnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
anNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJC
b3g+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YVJlZ2lzdHJ5
OjpleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0
CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVn
aXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAgLTE1MSw5ICsxNTEsOSBA
QCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3Rl
bVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaQogICAgIHJldHVybiBwc3NoQm94ZXM7CiB9CiAKLXN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6
ZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5
OjpleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwogCiAgICAgYXV0byBwc3NoQm94ZXMg
PSBleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoYnVmZmVyKTsKICAgICBpZiAoIXBzc2hCb3hlcykK
QEAgLTE4NSw3ICsxODUsNyBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNvbgogICAgIHJldHVybiBr
ZXlJRHM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0
aXplQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQg
UFNTSCBCb3ggRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1t
ZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAg
LTE5NSw3ICsxOTUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5Ojpz
YW5pdGl6ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIGJ1ZmZl
ci5jb3B5KCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0o
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHNhbml0aXplV2ViTShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgLy8gQ2hlY2sgaWYgdGhlIGJ1ZmZlciBpcyBhIHZhbGlkIFdlYk0gaW5pdERh
dGEuCiAgICAgLy8gVGhlIFdlYk0gaW5pdERhdGEgaXMgdGhlIENvbnRlbnRFbmNLZXlJRCwgc28g
c2hvdWxkIGJlIGxlc3MgdGhhbiBrV2ViTU1heENvbnRlbnRFbmNLZXlJRFNpemUuCkBAIC0yMDUs
MTAgKzIwNSwxMCBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQog
Ci1zdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0
S2V5SURzV2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzV2Vi
TShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJl
ZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emVkQnVmZmVyID0gc2FuaXRpemVXZWJNKGJ1ZmZlcik7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdlYk0oYnVmZmVyKTsKICAgICBpZiAoIXNh
bml0aXplZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMjMzLDcg
KzIzMyw3IEBAIEluaXREYXRhUmVnaXN0cnk6OkluaXREYXRhUmVnaXN0cnkoKQogCiBJbml0RGF0
YVJlZ2lzdHJ5Ojp+SW5pdERhdGFSZWdpc3RyeSgpID0gZGVmYXVsdDsKIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXREYXRhVHlw
ZSk7CiAgICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUuc2FuaXRp
emVJbml0RGF0YSkKQEAgLTI0MSw3ICsyNDEsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0
RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYQog
ICAgIHJldHVybiBpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKGJ1ZmZlcik7CiB9CiAKLXN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6
ZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBhdXRvIGl0ZXIgPSBtX3R5cGVzLmZpbmQoaW5pdERhdGFUeXBlKTsKICAgICBpZiAo
aXRlciA9PSBtX3R5cGVzLmVuZCgpIHx8ICFpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuaAppbmRleCBjZDEzODdhNmJkMDM4ZmYzNGUyY2ZiNzVmNDQzZGU3ZDk0MDMy
MWIwLi43N2Q2MDRiMDhiYjdmN2UzOGJjY2IzNTQ1YjM0YzhiMTM0MzU1ZWYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuaApAQCAtMzgsMTkgKzM4LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEluaXREYXRhUmVnaXN0
cnkgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbml0RGF0YVJlZ2lzdHJ5
JiBzaGFyZWQoKTsKICAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8SW5pdERhdGFSZWdp
c3RyeT47CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRy
YWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVm
ZmVyJik7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0cnVj
dCBJbml0RGF0YVR5cGVDYWxsYmFja3MgewotICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRh
Q2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8U2hhcmVkQnVmZmVyPihjb25zdCBTaGFyZWRCdWZm
ZXImKT47Ci0gICAgICAgIHVzaW5nIEV4dHJhY3RLZXlJRHNDYWxsYmFjayA9IEZ1bmN0aW9uPHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4oY29uc3QgU2hhcmVkQnVmZmVy
Jik+OworICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpPjsKKyAgICAgICAgdXNpbmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0gRnVuY3Rpb248c3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4oY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKIAogICAgICAgICBTYW5pdGl6ZUluaXREYXRhQ2FsbGJh
Y2sgc2FuaXRpemVJbml0RGF0YTsKICAgICAgICAgRXh0cmFjdEtleUlEc0NhbGxiYWNrIGV4dHJh
Y3RLZXlJRHM7CkBAIC02MSw5ICs2MSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRv
bVN0cmluZyYga2V5aWRzTmFtZSgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiB3ZWJt
TmFtZSgpOwogCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hl
c0Zyb21DZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUNlbmMo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0
cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
Pj4gZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAg
IHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVDZW5jKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogcHJpdmF0ZToKICAgICBJbml0RGF0YVJlZ2lz
dHJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggOGJmYjFjZTcwMWEyZjVhNjliNWI1MTk5MWFh
ODYzMmViYjg5MjVmOS4uMTQ3NzZjMjAxNTFiZmVmZTM4MDc5YTMzNzMwYzg4NjYyNjhiYTQ2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgTWVkaWFLZXlTZXNz
aW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25z
dCBCdWZmCiAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNl
OjpOZXR3b3JraW5nLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaW5pdERh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLmxlbmd0
aCgpKSwgaW5pdERhdGFUeXBlLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmll
ciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewogICAgICAgICAvLyAxMC4xLiBJ
ZiB0aGUgaW5pdCBkYXRhIGlzIG5vdCB2YWxpZCBmb3IgaW5pdERhdGFUeXBlLCByZWplY3QgcHJv
bWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIC8vIDEwLjIuIExl
dCBzYW5pdGl6ZWQgaW5pdCBkYXRhIGJlIGEgdmFsaWRhdGVkIGFuZCBzYW5pdGl6ZWQgdmVyc2lv
biBvZiBpbml0IGRhdGEuCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZElu
aXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUs
IGluaXREYXRhKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0
aXplZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0YShpbml0RGF0
YVR5cGUsIGluaXREYXRhKTsKIAogICAgICAgICAvLyAxMC4zLiBJZiB0aGUgcHJlY2VkaW5nIHN0
ZXAgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3Iu
CiAgICAgICAgIGlmICghc2FuaXRpemVkSW5pdERhdGEpIHsKQEAgLTIyMyw3ICsyMjMsNyBAQCB2
b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgICAgICAgICAgbV9sYXRlc3REZWNyeXB0VGltZSA9
IDA7CiAgICAgICAgIH0KIAotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVxdWVzdExpY2Vu
c2UobV9zZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBzYW5pdGl6ZWRJbml0RGF0YS5yZWxlYXNl
Tm9uTnVsbCgpLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBp
ZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlv
biwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsK
KyAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlcXVlc3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUs
IGluaXREYXRhVHlwZSwgc2FuaXRpemVkSW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMs
IHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1v
dmUoaWRlbnRpZmllcildIChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1J
bnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTQyMiw3
ICs0MjIsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJj
ZSYgcmVzcG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAgIC8vIDYuIFJ1biB0aGUgZm9s
bG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgogICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2
ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH0sIHJlc3BvbnNlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzcG9uc2UuZGF0
YSgpLCByZXNwb25zZS5sZW5ndGgoKSksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVu
dGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDYu
MS4gTGV0IHNhbml0aXplZCByZXNwb25zZSBiZSBhIHZhbGlkYXRlZCBhbmQvb3Igc2FuaXRpemVk
IHZlcnNpb24gb2YgcmVzcG9uc2UgY29weS4KLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVkUmVzcG9uc2UgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZVJlc3BvbnNlKHJl
c3BvbnNlKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXpl
ZFJlc3BvbnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7
CiAKICAgICAgICAgLy8gNi4yLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCBvciBpZiBz
YW5pdGl6ZWQgcmVzcG9uc2UgaXMgZW1wdHksIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBj
cmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFzYW5pdGl6ZWRSZXNwb25zZSB8fCBzYW5p
dGl6ZWRSZXNwb25zZS0+aXNFbXB0eSgpKSB7CkBAIC02MDEsNyArNjAxLDcgQEAgdm9pZCBNZWRp
YUtleVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAg
ICAgIC8vIDQuMy4gTGV0IG1lc3NhZ2UgdHlwZSBiZSBudWxsLgogCiAgICAgICAgIC8vIDQuNC4g
VXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICBtX2lu
c3RhbmNlU2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5
cGUsIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZp
ZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNW
ZWN0b3ImJiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2Us
IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7Cisg
ICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwg
bV9zZXNzaW9uVHlwZSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChDRE1JbnN0YW5jZVNlc3Npb246
OktleVN0YXR1c1ZlY3RvciYmIGtleXMsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1
Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKIApAQCAtNjQ5LDcgKzY0OSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9u
OjpyZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIC8vIDUuIFJldHVy
biBwcm9taXNlLgogfQogCi12b2lkIE1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UoTWVk
aWFLZXlNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBtZXNzYWdl
KQordm9pZCBNZWRpYUtleVNlc3Npb246OmVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5
cGUgbWVzc2FnZVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG1lc3NhZ2UpCiB7
CiAgICAgLy8gNi40LjEgUXVldWUgYSAibWVzc2FnZSIgRXZlbnQKICAgICAvLyBodHRwczovL3cz
Yy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNxdWV1ZS1tZXNzYWdlCkBAIC03MTYsNyArNzE2
LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKENETUluc3RhbmNl
U2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYgaW4KICAgICAgICAgfSk7CiB9CiAKLXZvaWQgTWVk
aWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBNZWRpYUtleVNlc3Npb246OnNlbmRNZXNz
YWdlKENETU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBtZXNzYWdlKQogewogICAgIGVucXVldWVNZXNzYWdlKG1lc3NhZ2VUeXBlLCBtZXNzYWdl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDNkOTZmODgwMmU3NDc4NDFjNGVmZGE4MWRjYjk0MWVh
NmU0YTc1ZTQuLjM2NWFjZTVjMDk1ZTdkYzBjNTcxZTc2Y2NmMmMwN2FhZmM2MmJhYTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNz
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVNlc3Npb24uaApAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBDRE07CiBjbGFzcyBEZWZlcnJlZFBy
b21pc2U7CiBjbGFzcyBNZWRpYUtleVN0YXR1c01hcDsKIGNsYXNzIE1lZGlhS2V5czsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VQcm94eTsKIApAQCAtODcsMjAgKzg3
LDIwIEBAIHB1YmxpYzoKICAgICB1c2luZyBDbG9zZWRQcm9taXNlID0gRE9NUHJvbWlzZVByb3h5
PElETFVuZGVmaW5lZD47CiAgICAgQ2xvc2VkUHJvbWlzZSYgY2xvc2VkKCkgeyByZXR1cm4gbV9j
bG9zZWRQcm9taXNlLmdldCgpOyB9CiAKLSAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxT
aGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+JiBzdGF0dXNlcygpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdHVzZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiYgc3RhdHVzZXMoKSBjb25zdCB7IHJldHVy
biBtX3N0YXR1c2VzOyB9CiAKICAgICB1bnNpZ25lZCBpbnRlcm5hbEluc3RhbmNlU2Vzc2lvbk9i
amVjdFJlZkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnN0YW5jZVNlc3Npb24tPnJlZkNvdW50
KCk7IH0KIAogcHJpdmF0ZToKICAgICBNZWRpYUtleVNlc3Npb24oRG9jdW1lbnQmLCBXZWFrUHRy
PE1lZGlhS2V5cz4mJiwgTWVkaWFLZXlTZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlk
ZW50aWZpZXIsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0YW5jZVNlc3Npb24+JiYpOwotICAgIHZv
aWQgZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVy
Jik7CisgICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCB1cGRhdGVFeHBpcmF0aW9uKGRvdWJs
ZSk7CiAgICAgdm9pZCBzZXNzaW9uQ2xvc2VkKCk7CiAgICAgU3RyaW5nIG1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkoKSBjb25zdDsKIAogICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAog
ICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlT
dGF0dXNWZWN0b3ImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdl
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRN
ZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNz
YWdlKSBmaW5hbDsKICAgICB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgZmlu
YWw7CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgZmluYWw7CiAKQEAgLTE0MCwx
MCArMTQwLDEwIEBAIHByaXZhdGU6CiAgICAgTWVkaWFLZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25U
eXBlOwogICAgIFJlZjxDRE0+IG1faW1wbGVtZW50YXRpb247CiAgICAgUmVmPENETUluc3RhbmNl
U2Vzc2lvbj4gbV9pbnN0YW5jZVNlc3Npb247Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
PiBtX3JlY29yZE9mS2V5VXNhZ2U7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4gbV9yZWNvcmRPZktleVVzYWdlOwogICAgIGRvdWJsZSBtX2ZpcnN0RGVjcnlwdFRpbWUg
eyAwIH07CiAgICAgZG91YmxlIG1fbGF0ZXN0RGVjcnlwdFRpbWUgeyAwIH07Ci0gICAgVmVjdG9y
PHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiBtX3N0YXR1c2Vz
OworICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRp
YUtleVN0YXR1cz4+IG1fc3RhdHVzZXM7CiAKICAgICB1c2luZyBEaXNwbGF5Q2hhbmdlZE9ic2Vy
dmVyID0gT2JzZXJ2ZXI8dm9pZChQbGF0Zm9ybURpc3BsYXlJRCk+OwogICAgIERpc3BsYXlDaGFu
Z2VkT2JzZXJ2ZXIgbV9kaXNwbGF5Q2hhbmdlZE9ic2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNw
cAppbmRleCA3M2Y3NGU0ZjcwZmM5MmMyMmJmODU5YzAyMjhhMzRlYWVjNTc5N2EzLi4zOThlOGFi
MWI2NTZiNDQ1OTI3YmViNmJjNjkzZGQzOTlhNjg3YWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNw
cApAQCAtNTYsMTIgKzU2LDEyIEBAIHVuc2lnbmVkIGxvbmcgTWVkaWFLZXlTdGF0dXNNYXA6OnNp
emUoKQogICAgIHJldHVybiBtX3Nlc3Npb24tPnN0YXR1c2VzKCkuc2l6ZSgpOwogfQogCi1zdGF0
aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNv
dXJjZSYgYikKK3N0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKIHsKICAgICBhdXRvIGxlbmd0aCA9IGEu
c2l6ZSgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCAhPSBiLmxlbmd0aCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRh
KCksIGxlbmd0aCk7CisgICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgYi5kYXRhKCksIGxlbmd0aCk7CiB9CiAKIGJvb2wgTWVkaWFLZXlTdGF0dXNNYXA6
Omhhcyhjb25zdCBCdWZmZXJTb3VyY2UmIGtleUlkKQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6
b3B0aW9uYWw8S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5
U3RhdHVzPj4gTWVkaWFLZXlTCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBh
dXRvJiBwYWlyID0gc3RhdHVzZXNbbV9pbmRleCsrXTsKLSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5
QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOwor
ICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShwYWlyLmZpcnN0LT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIHBhaXIuZmlyc3QtPnNpemUoKSk7CiAgICAgcmV0dXJuIEtleVZh
bHVlUGFpcjxCdWZmZXJTb3VyY2U6OlZhcmlhbnRUeXBlLCBNZWRpYUtleVN0YXR1cz4geyBSZWZQ
dHI8QXJyYXlCdWZmZXI+KFdURk1vdmUoYnVmZmVyKSksIHBhaXIuc2Vjb25kIH07CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
dGF0dXNNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTdGF0dXNNYXAuaAppbmRleCBjMjExMTEzYTJjNmRhYzc5NzkyNGE5OWQyZDJkZjk3YzJlNjVm
ODUwLi42MGQ2MmFhZmY4MDc0ZGFkYTZlMzFhM2YyYjM3MGE2ZDZkMDFmNjE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFw
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0
YXR1c01hcC5oCkBAIC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IE1lZGlhS2V5U2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1lZGlhS2V5U3RhdHVzTWFwIDogcHVibGljIFJlZkNvdW50
ZWQ8TWVkaWFLZXlTdGF0dXNNYXA+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAppbmRleCA4M2IyNGFjZWFhNWIx
Mjk0YmI0ZWE0MzlmYjJkNWM0ZjZjY2Q0NzUzLi4zNjdmMzFkMTg2YjUxNjM5YTljNzQyMTNmMGNm
OGU2ZjJmOGQyNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgYm9vbCBNZWRpYUtleXM6
Omhhc09wZW5TZXNzaW9ucygpIGNvbnN0CiAgICAgICAgIH0pOwogfQogCi12b2lkIE1lZGlhS2V5
czo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKK3ZvaWQgTWVkaWFLZXlz
Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5p
dERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAg
ICBmb3IgKGF1dG8mIGNkbUNsaWVudCA6IG1fY2RtQ2xpZW50cykKICAgICAgICAgY2RtQ2xpZW50
LmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoaW5pdERhdGFU
eXBlLCBpbml0RGF0YS5jb3B5UmVmKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5kZXggN2I1OWEzYmM2ZDIyNTZmYzY1NmYwOGNi
ZjI2ODkxODUxMDk4M2EyMi4uOTFhMWEwNzExNDMzYmUyNDdkZDJhODVjNWY0YWQwOTM4YTA5YTdh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5oCkBAIC04Niw3ICs4Niw3IEBAIHByb3RlY3RlZDoKICAgICBNZWRpYUtleXMoRG9jdW1l
bnQmLCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgYm9vbCBwZXJzaXN0ZW50U3RhdGVB
bGxvd2VkLCBjb25zdCBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mLCBSZWY8Q0RNPiYmLCBS
ZWY8Q0RNSW5zdGFuY2U+JiYpOwogCiAgICAgLy8gQ0RNSW5zdGFuY2VDbGllbnQKLSAgICB2b2lk
IHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0
aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dl
ciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCBjMDQ3MzEyODRmNjc2YWE1YzUwZjk0MGJl
NGY2NjE3MjVkOGJmOGFjLi5iOGYyZWMzNzNkODczY2M5YzhhY2IzYzZlYzg0NWY2YWIwMDA5YWE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMzUs
NyArMjM1LDcgQEAgdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBv
d25lciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXMKIHZvaWQgRmV0Y2hCb2R5Ojpjb25z
dW1lRm9ybURhdGEoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UpCiB7CiAgICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVyID0gZm9ybURhdGFCb2R5KCku
YXNTaGFyZWRCdWZmZXIoKSkgewotICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRoRGF0YShX
VEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXItPmRhdGEo
KSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOworICAgICAgICBtX2NvbnN1bWVyLnJlc29sdmVXaXRo
RGF0YShXVEZNb3ZlKHByb21pc2UpLCBvd25lci5jb250ZW50VHlwZSgpLCBzaGFyZWRCdWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVkQnVmZmVyLT5zaXplKCkpOwogICAgICAg
ICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0
aGUgZm9ybSBkYXRhIGNvbnRhaW5zIGJsb2JzLCBsb2FkIHRoZW0gbGlrZSB3ZSBkbyBvdGhlciBi
bG9icy4KQEAgLTI3Miw3ICsyNzIsNyBAQCBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6Ym9k
eUFzRm9ybURhdGEoKSBjb25zdAogICAgIGlmIChpc0Zvcm1EYXRhKCkpCiAgICAgICAgIHJldHVy
biAmY29uc3RfY2FzdDxGb3JtRGF0YSY+KGZvcm1EYXRhQm9keSgpKTsKICAgICBpZiAoYXV0byog
ZGF0YSA9IG1fY29uc3VtZXIuZGF0YSgpKQotICAgICAgICByZXR1cm4gRm9ybURhdGE6OmNyZWF0
ZShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgIHJldHVybiBGb3JtRGF0YTo6
Y3JlYXRlKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKIAog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjg0LDcg
KzI4NCw3IEBAIEZldGNoQm9keTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAg
IGF1dG8gYnVmZmVyID0gbV9jb25zdW1lci50YWtlRGF0YSgpOwogICAgICAgICBpZiAoIWJ1ZmZl
cikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gYnVmZmVyLnJl
bGVhc2VOb25OdWxsKCk7CisgICAgICAgIHJldHVybiBidWZmZXItPm1ha2VDb250aWd1b3VzKCk7
CiAgICAgfQogCiAgICAgaWYgKGlzQmxvYigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGRjODY1ZjdkYTIzOTdhYzU1
OTNiNDRiNTM5ZDNlNjcxZTQzY2U2ZGIuLjE5MTljMWNiOTEzMDgzZTQ1ZTMxMTg0ODY2NmQzNzc3
NzI4NDc5YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdp
dGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9keUNv
bnMKIAogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4oKQogewotICAgIG1fYnVmZmVyID0g
bnVsbHB0cjsKKyAgICBtX2J1ZmZlci5yZXNldCgpOwogICAgIHJlc2V0Q29uc3VtZVByb21pc2Uo
KTsKICAgICBpZiAobV9zaW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFjaygpOwpA
QCAtMjY2LDE2ICsyNjYsMTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8
RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KIHsKICAgICBpZiAo
c3RyZWFtKSB7CiAgICAgICAgIEFTU0VSVCghbV9zaW5rKTsKLSAgICAgICAgbV9zaW5rID0gUmVh
ZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBj
b250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fc2luayA9IFJl
YWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCB0eXBlID0gbV90eXBlLCBj
b250ZW50VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZh
bHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5r
LT5zaXplKCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmVXaXRo
VHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEtPmRh
dGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChjaHVuay0+
ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIGF1dG8gYnVmZmVyID0gZGF0YS50YWtlQXNDb250aWd1b3VzKCk7CisgICAgICAgICAgICAg
ICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50
VHlwZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgfSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTMwNiw3ICszMDgsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZl
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiBjbwogICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6Rm9ybURhdGE6IHsK
ICAgICAgICAgYXV0byBidWZmZXIgPSB0YWtlRGF0YSgpOwotICAgICAgICBpZiAoYXV0byBmb3Jt
RGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50VHlwZSwgYnVmZmVyID8gYnVm
ZmVyLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQorICAg
ICAgICBpZiAoYXV0byBmb3JtRGF0YSA9IHBhY2thZ2VGb3JtRGF0YShjb250ZXh0LCBjb250ZW50
VHlwZSwgYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRy
LCBidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApKQogICAgICAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZTxJRExJbnRlcmZhY2U8RE9NRm9ybURhdGE+PigqZm9ybURhdGEpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKQEAgLTMyNCwyNiArMzI2
LDI1IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBzaXplKQogICAgICAgICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6
dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAo
IW1fYnVmZmVyKSB7Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVuZChk
YXRhLCBzaXplKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSgpCit2b2lkIEZldGNo
Qm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEp
CiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9idWZmZXIpOworICAgIG1fYnVmZmVyLnJlc2V0KCk7
CisgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoZGF0YSkpOwogfQogCi1SZWZQdHI8SlNDOjpB
cnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKK1JlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQog
ewogICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6dHJ5Q3Jl
YXRlKG51bGxwdHIsIDApOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9i
dWZmZXIudGFrZSgpOworfQogCi0gICAgYXV0byBhcnJheUJ1ZmZlciA9IG1fYnVmZmVyLT50cnlD
cmVhdGVBcnJheUJ1ZmZlcigpOwotICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKLSAgICByZXR1cm4g
YXJyYXlCdWZmZXI7CitSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6
OnRha2VBc0FycmF5QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbV9idWZmZXIudGFrZUFzQXJyYXlC
dWZmZXIoKTsKIH0KIAogUmVmPEJsb2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCkBAIC0zNTEsOSArMzUyLDcgQEAgUmVmPEJs
b2I+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIEJsb2I6OmNyZWF0
ZShjb250ZXh0LCBWZWN0b3I8dWludDhfdD4oKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBl
KG1fY29udGVudFR5cGUpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjpleGNoYW5nZShtX2J1
ZmZlciwgbnVsbHB0cik7Ci0gICAgYXV0byBkYXRhID0gYnVmZmVyLT5leHRyYWN0RGF0YSgpOwot
ICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgbV9jb250ZW50
VHlwZSk7CisgICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBtX2J1ZmZlci50YWtlKCkt
PmV4dHJhY3REYXRhKCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29u
c3VtZXI6OnRha2VBc1RleHQoKQpAQCAtMzYyLDggKzM2MSw4IEBAIFN0cmluZyBGZXRjaEJvZHlD
b25zdW1lcjo6dGFrZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogCi0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZy
b21VVEY4KG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkpOwotICAgIG1fYnVmZmVy
ID0gbnVsbHB0cjsKKyAgICBhdXRvIGJ1ZmZlciA9IG1fYnVmZmVyLnRha2VBc0NvbnRpZ3VvdXMo
KTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgoYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gdGV4dDsKIH0KIApAQCAt
MzgzLDEwICszODIsOCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNldENvbnN1bWVQcm9t
aXNlKCkKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZShSZWY8RmV0Y2hCb2R5U291
cmNlPiYmIHNvdXJjZSkKIHsKICAgICBtX3NvdXJjZSA9IFdURk1vdmUoc291cmNlKTsKLSAgICBp
ZiAobV9idWZmZXIpIHsKLSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXItPnRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCkpOwotICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgfQor
ICAgIGlmIChtX2J1ZmZlcikKKyAgICAgICAgbV9zb3VyY2UtPmVucXVldWUobV9idWZmZXIudGFr
ZUFzQXJyYXlCdWZmZXIoKSk7CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdG
YWlsZWQoY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKaW5kZXggMmIwNTZmMTI2NDNiYTk2N2Zl
NDFhMDE1MTNhODliNzM2MjY0MmQ0Yy4uODcxZDJjMDg2MzMxYTk4Mjk0YTE2NmE0YjQyZTMxODRl
MDM3NzcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlDb25zdW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuaApAQCAtNTAsMTAgKzUwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCk7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25z
dCB7IHJldHVybiAhIW1fYnVmZmVyOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCk7IH0KLSAgICB2b2lkIHNldERhdGEoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhKSB7IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsgfQorICAgIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci5nZXQoKS5nZXQoKTsgfQorICAgIHZvaWQgc2V0RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogICAgIFJlZlB0cjxKU0M6
OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwogICAgIFN0cmluZyB0YWtlQXNUZXh0
KCk7CiAKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKIAogICAgIFR5cGUgbV90eXBlOwogICAg
IFN0cmluZyBtX2NvbnRlbnRUeXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVy
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiAgICAgUmVmUHRyPERlZmVycmVk
UHJvbWlzZT4gbV9jb25zdW1lUHJvbWlzZTsKICAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW1Ub1No
YXJlZEJ1ZmZlclNpbms+IG1fc2luazsKICAgICBSZWZQdHI8RmV0Y2hCb2R5U291cmNlPiBtX3Nv
dXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKaW5k
ZXggZmM1NWNjN2Q4M2Q4YmMxMWYwODU0ZGMzY2ZkODUwOTdhMzFmMTBmNi4uMDNmODliNjFjYTVm
N2M3MTc2YjlkODhjZDEzNjYwZTg2YjdhMjU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEZldGNoTG9h
ZGVyOjpzdG9wKCkKICAgICAgICAgbV9sb2FkZXItPmNhbmNlbCgpOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBGZXRjaExvYWRlcjo6c3RhcnRTdHJlYW1pbmcoKQorUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IEZldGNoTG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiB7CiAgICAgQVNT
RVJUKG1fY29uc3VtZXIpOwogICAgIGF1dG8gZmlyc3RDaHVuayA9IG1fY29uc3VtZXItPnRha2VE
YXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKaW5kZXgg
MmY5MGYwZWMzZmY5MDVhMjYyMzFjODRjNzJhN2ExODZjZDRiZmU4My4uNDYxMmQwZTBlM2E3ZWZl
MzA2MDM5NmIwZDc1YTJmYTNiYzRlZGRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hMb2FkZXIuaApAQCAtMzksMTQgKzM5LDE0IEBAIGNsYXNzIEZldGNoQm9keUNvbnN1
bWVyOwogY2xhc3MgRmV0Y2hMb2FkZXJDbGllbnQ7CiBjbGFzcyBGZXRjaFJlcXVlc3Q7CiBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRmV0Y2hMb2FkZXIgZmluYWwgOiBwdWJsaWMg
VGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgRmV0Y2hMb2FkZXIoRmV0Y2hM
b2FkZXJDbGllbnQmLCBGZXRjaEJvZHlDb25zdW1lciopOwogICAgIFdFQkNPUkVfRVhQT1JUIH5G
ZXRjaExvYWRlcigpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmco
KTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsK
IAogICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEZldGNoUmVx
dWVzdCYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIGNvbnN0IEJsb2ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwCmluZGV4IDRkZjg0MjZjNzE4YmExNmVjZjBhNDdlNzNlOTAwZDNmODQ4
ZjY0ZjIuLmUzOGE4M2FkZTdkNmUwYWFmNzBjZWI5YzVhYThmZThhYjQ5NDNkMGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtNDAwLDcg
KzQwMCw4IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6Y29uc3VtZURhdGFCeUNo
dW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrJiYKICAgICBpZiAoIWRhdGEpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFNwYW4gY2h1bmsgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9
OworICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7Cisg
ICAgU3BhbiBjaHVuayB7IGNvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07
CiAgICAgbV9jb25zdW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiB9CiAKQEAgLTUwMyw3ICs1MDQs
NyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OmZlZWRTdHJlYW0oKQogICAgIGNsb3NlU3RyZWFtKCk7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0
YXJ0U3RyZWFtaW5nKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaFJlc3Bv
bnNlOjpCb2R5TG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiB7CiAgICAgQVNTRVJUKG1fbG9hZGVy
KTsKICAgICByZXR1cm4gbV9sb2FkZXItPnN0YXJ0U3RyZWFtaW5nKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM0MjBjNmEzOGQzYzNmNmUy
ZmRiNjY3NWU4YTRkMTM2NWJmNWE1YmIuLmNmNzg2MzIzOWZkOTQ2ZWUwZThkODhlYWVhNzJmZTk4
OWVlZDMxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oCkBAIC0xMzQsNyArMTM0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIGNvbnN1bWVE
YXRhQnlDaHVuayhDb25zdW1lRGF0YUJ5Q2h1bmtDYWxsYmFjayYmKTsKIAotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzdGFydFN0cmVhbWluZygpOworICAgICAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmcoKTsKICAgICAgICAgTm90aWZpY2F0aW9u
Q2FsbGJhY2sgdGFrZU5vdGlmaWNhdGlvbkNhbGxiYWNrKCkgeyByZXR1cm4gV1RGTW92ZShtX3Jl
c3BvbnNlQ2FsbGJhY2spOyB9CiAgICAgICAgIENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrIHRh
a2VDb25zdW1lRGF0YUNhbGxiYWNrKCkgeyByZXR1cm4gV1RGTW92ZShtX2NvbnN1bWVEYXRhQ2Fs
bGJhY2spOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0LmgKaW5kZXggZGQxOWM4NzBhYTdkMjQ4NWY3ZTljYTg0OTJhODQyMTM1MmRkZDA0MS4u
MWE2NmJmODE4MzIwZTk1NjA3ZDYxNWYxYTA4MmE4Mjc2ZWIyYTM0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTM4LDcgKzM4LDcg
QEAgZW51bSBjbGFzcyBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCA6IGJvb2wgeyBObywgWWVz
IH07CiBlbnVtIGNsYXNzIEhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgOiBib29sIHsg
Tm8sIFllcyB9OwogCiBzdHJ1Y3QgQXBwSGlnaGxpZ2h0IHsKLSAgICBSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBoaWdobGlnaHQ7CisgICAgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGhpZ2hsaWdodDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGV4dDsKICAgICBD
cmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBpc05ld0dyb3VwOwogICAgIEhpZ2hsaWdodFJlcXVl
c3RPcmlnaW5hdGVkSW5BcHAgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDsKQEAgLTUyLDcgKzUyLDcg
QEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQXBwSGlnaGxpZ2h0OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHNpemVf
dD4oaGlnaGxpZ2h0LT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KGhpZ2hsaWdodC0+ZGF0YSgpLCBoaWdobGlnaHQtPnNpemUoKSwgMSk7CisgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IGhpZ2hsaWdodC0+c2l6ZSgpLCAxKTsKIAogICAgIGVuY29kZXIgPDwgdGV4dDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJh
bmdlRGF0YS5jcHAKaW5kZXggZTJkOWE2MWU0Mjc2NzZlYjdiN2RhZWFiZmZhMzJkMDRhNDU3NmMw
Ni4uNWU4MGYwYzA3MmQ0OWEzZWY3OTY5NTkzMDJjNDQ1NmNkMmFiZGU4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwCkBAIC00NCwxNSArNDQsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25z
dGV4cHIgdWludDY0X3QgaGlnaGxpZ2h0RmlsZVNpZ25hdHVyZSA9IDB4NDE0MTUwNDgzMjMwMzIz
MTsgLy8gRmlsZSBTaWduYXR1cmUgIChBKXBwbGUoQVApcGxpY2F0aW9uKEgpaWdobGlnaHRzKDIw
MjEpCiAKLXN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRS
YW5nZURhdGE6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9u
YWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBkZWNvZGVy
ID0gYnVmZmVyLmRlY29kZXIoKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIu
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBhdXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5k
ZWNvZGVyKCk7CiAgICAgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRhdGE7
CiAgICAgZGVjb2RlciA+PiBkYXRhOwogICAgIHJldHVybiBkYXRhOwogfQogCi1SZWY8U2hhcmVk
QnVmZmVyPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OnRvU2hhcmVkQnVmZmVyKCkgY29uc3QKK1Jl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6OnRvU2hhcmVk
QnVmZmVyKCkgY29uc3QKIHsKICAgICBXVEY6OlBlcnNpc3RlbmNlOjpFbmNvZGVyIGVuY29kZXI7
CiAgICAgZW5jb2RlciA8PCAqdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKaW5kZXggY2Y2MzgxYWNmYjBh
NTIxMWI0MzUwOGI3YjUxN2Q2ZGIyZjZmYzc0My4uYjVkYWY2MDI1Mzk4YTNmN2U2ZjFkMzdhYmVj
ZTg0NGQ0ZjFjNjU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGln
aHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKQEAgLTMzLDEyICszMywxMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEFwcEhp
Z2hsaWdodFJhbmdlRGF0YSB7CiBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURh
dGE+IGNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGNyZWF0ZShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgc3RydWN0IE5vZGVQYXRoQ29tcG9uZW50IHsKICAg
ICAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgICAgIFN0cmluZyBub2RlTmFtZTsKQEAgLTEx
MSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gZGVjb2RlKERlY29kZXImKTsK
IAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHRvU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKIHByaXZh
dGU6CiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKaW5kZXggZGMzOWEw
ZjBkMThmZmZjYTdkZmI0NjUyMTljZDYxMmE5ZjczOGY4Zi4uZTVkZTg0OTRmMzUwNDUzNTk0YjJm
MmU4OGMzZGRhMzNmYTlhZjcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKQEAgLTIzNyw3ICsyMzcsNyBA
QCB2b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTdGF0aWNS
YW5nZT4mJiByYW5nZSkKICAgICBtX2RvY3VtZW50LT5wYWdlKCktPmNocm9tZSgpLnN0b3JlQXBw
SGlnaGxpZ2h0KFdURk1vdmUoaGlnaGxpZ2h0KSk7CiB9CiAKLXZvaWQgQXBwSGlnaGxpZ2h0U3Rv
cmFnZTo6cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBTY3JvbGxUb0hpZ2hsaWdodCBzY3JvbGwpCit2b2lkIEFwcEhpZ2hsaWdodFN0b3Jh
Z2U6OnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIFNjcm9sbFRvSGlnaGxpZ2h0IHNjcm9sbCkKIHsKICAgICBhdXRvIGFw
cEhpZ2hsaWdodFJhbmdlRGF0YSA9IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGJ1ZmZl
cik7CiAgICAgaWYgKCFhcHBIaWdobGlnaHRSYW5nZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKaW5kZXggYjE1
MmY3NmVkNDI0MDg5MmVhN2RlMjFlMmNiMDZkNDcyZDg3MzM2MC4uZTI3NjYzM2I0ODRmODEwOTRh
ZGVjZTQ1ZjY0YWJiZWQxNzgxMjUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaApAQCAtMzksNyArMzksNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCiBjbGFzcyBE
b2N1bWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBTdGF0aWNSYW5nZTsKIGNsYXNzIEhpZ2hsaWdodDsKIApAQCAtNTQsNyArNTQs
NyBAQCBwdWJsaWM6CiAgICAgfkFwcEhpZ2hsaWdodFN0b3JhZ2UoKTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc3RvcmVBcHBIaWdobGlnaHQoUmVmPFN0YXRpY1JhbmdlPiYmKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8U2hh
cmVkQnVmZmVyPiYmLCBTY3JvbGxUb0hpZ2hsaWdodCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIFNjcm9sbFRvSGlnaGxpZ2h0KTsKICAgICB2b2lkIHJlc3RvcmVVbnJlc3RvcmVkQXBw
SGlnaGxpZ2h0cygpOwogICAgIE1vbm90b25pY1RpbWUgbGFzdFJhbmdlU2VhcmNoVGltZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGltZUF0TGFzdFJhbmdlU2VhcmNoOyB9CiAgICAgdm9pZCByZXNldExh
c3RSYW5nZVNlYXJjaFRpbWUoKSB7IG1fdGltZUF0TGFzdFJhbmdlU2VhcmNoID0gTW9ub3Rvbmlj
VGltZTo6bm93KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMGFm
YjdlZTVjYzg3NDM1NmIzNWExNjgwMzIzMWE2MTM2NGMwOTg2MS4uMjdjZDhlZWM1M2UxYWNmYzU5
ODVlYzdiOGYwNWUyMjc2NDVjODc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5j
cHAKQEAgLTY4Niw3ICs2ODYsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhp
c3RpbmdJbmRleChJREJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbwogICAgIFNRTGl0
ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKCptX3NxbGl0ZURCKTsKICAgICB0cmFuc2FjdGlvbi5i
ZWdpbigpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5UGF0aEJsb2IgPSBzZXJpYWxp
emVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKKyAgICBhdXRvIGtleVBhdGhCbG9iID0gc2Vy
aWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBhdGgoKSk7CiAgICAgaWYgKCFrZXlQYXRoQmxvYikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5UGF0aCB0byBz
YXZlIGluIGRhdGFiYXNlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNzQsNyArMTE3
NCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5v
bi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwogICAgIH0KIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGtleVBhdGhCbG9iID0gc2VyaWFsaXplSURCS2V5UGF0aChpbmZvLmtleVBh
dGgoKSk7CisgICAgYXV0byBrZXlQYXRoQmxvYiA9IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5r
ZXlQYXRoKCkpOwogICAgIGlmICgha2V5UGF0aEJsb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3IgbmV3
IG9iamVjdCBzdG9yZSIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3Is
ICJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleVBhdGggdG8gc2F2ZSBpbiBkYXRhYmFzZSBmb3Ig
bmV3IG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWMKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0
ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rp
b24iX3MgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlQYXRoQmxvYiA9
IHNlcmlhbGl6ZUlEQktleVBhdGgoaW5mby5rZXlQYXRoKCkpOworICAgIGF1dG8ga2V5UGF0aEJs
b2IgPSBzZXJpYWxpemVJREJLZXlQYXRoKGluZm8ua2V5UGF0aCgpKTsKICAgICBpZiAoIWtleVBh
dGhCbG9iKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQ
YXRoIHRvIHNhdmUgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlQYXRoIHRvIGNyZWF0ZSBpbmRl
eCBpbiBkYXRhYmFzZSJfcyB9OwpAQCAtMTQ2NCw3ICsxNDY0LDcgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRIYXNJbmRleFJlY29yZChjb25zdCBJREJJbmRleElu
Zm8mIGluZm8KIHsKICAgICBoYXNSZWNvcmQgPSBmYWxzZTsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGluZGV4S2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShpbmRleEtleSk7Cisg
ICAgYXV0byBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOwog
ICAgIGlmICghaW5kZXhLZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
c2VyaWFsaXplIGluZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5IHRvIGNoZWNrIGZvciBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsKQEAgLTE1
MzMsMTMgKzE1MzMsMTMgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNr
ZWRQdXRJbmRleFJlY29yZChpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGkKIHsKICAgICBMT0coSW5k
ZXhlZERCLCAiU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZWRQdXRJbmRleFJlY29yZCAt
ICVzLCAlcyIsIGtleVZhbHVlLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpbmRleEtl
eS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBpbmRleEtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoaW5kZXhLZXkpOworICAg
IGF1dG8gaW5kZXhLZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGluZGV4S2V5KTsKICAg
ICBpZiAoIWluZGV4S2V5QnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNl
cmlhbGl6ZSBpbmRleCBrZXkgdG8gYmUgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSIpOwogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGlu
ZGV4IGtleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CiAgICAgfQogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWVCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eVZhbHVlKTsKKyAgICBhdXRvIHZhbHVlQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlW
YWx1ZSk7CiAgICAgaWYgKCF2YWx1ZUJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBzZXJpYWxpemUgdGhlIHZhbHVlIHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlh
bGl6ZSB2YWx1ZSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIl9zIH07CkBAIC0xNjYxLDcg
KzE2NjEsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2Jq
ZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAgIGlmICghdHJhbnNhY3Rpb24g
fHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3Rv
cmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsK
KyAgICBhdXRvIGtleUJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAg
aWYgKCFrZXlCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXpl
IElEQktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSIpOwogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIElE
QktleSB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIG9iamVjdCBzdG9yZSJfcyB9OwpAQCAtMTc0
MSw3ICsxNzQxLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNv
cmQoU1FMaXRlSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLAogICAgIEFTU0VSVCh0cmFuc2Fj
dGlvbi5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRyYW5zYWN0aW9uKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZl
ciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CisgICAgYXV0byBrZXlCdWZmZXIgPSBz
ZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CiAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92
ZWQgZnJvbSB0aGUgZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXlEYXRhIHRvIGJlIHJlbW92ZWQgZnJv
bSB0aGUgZGF0YWJhc2UiX3MgfTsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3RpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVt
cHQgdG8gc3RvcmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRy
YW5zYWN0aW9uIl9zIH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVm
ZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhKTsKKyAgICBhdXRvIGtleUJ1ZmZlciA9
IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQg
aW4gYW4gb2JqZWN0IHN0b3JlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBpbiBhbiBvYmpl
Y3Qgc3RvcmUiX3MgfTsKQEAgLTIxMjQsNyArMjEyNCw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNh
Y3RpCiAgICAgYXV0byBrZXkgPSBrZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVs
bCgpKQogICAgICAgICBrZXkgPSBJREJLZXlEYXRhOjptaW5pbXVtKCk7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAg
YXV0byBsb3dlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIWxv
d2VyQnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSBsb3dl
ciBJREJLZXkgaW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVu
a25vd25FcnJvciwgIlVuYWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCBy
YW5nZSJfcyB9OwpAQCAtMjEzMyw3ICsyMTMzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkK
ICAgICBrZXkgPSBrZXlSYW5nZS51cHBlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQogICAg
ICAgICBrZXkgPSBJREJLZXlEYXRhOjptYXhpbXVtKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gdXBwZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAgYXV0byB1cHBl
ckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5KTsKICAgICBpZiAoIXVwcGVyQnVmZmVy
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkg
aW4gbG9va3VwIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJv
ciwgIlVuYWJsZSB0byBzZXJpYWxpemUgdXBwZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSJfcyB9
OwpAQCAtMjQ0Myw3ICsyNDQzLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1
bmNoZWNrZWRHZXRJbmRleFJlY29yZEZvck9uZUtleShpbnQ2NF90IGluZGV4SUQKIAogICAgIEFT
U0VSVChrZXkuaXNWYWxpZCgpICYmIGtleS50eXBlKCkgIT0gSW5kZXhlZERCOjpLZXlUeXBlOjpN
YXggJiYga2V5LnR5cGUoKSAhPSBJbmRleGVkREI6OktleVR5cGU6Ok1pbik7CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CisgICAg
YXV0byBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleSk7CiAgICAgaWYgKCFidWZmZXIp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIElEQktleSB0byBsb29r
IHVwIG9uZSBpbmRleCByZWNvcmQiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSBJREJLZXkgdG8gbG9vayB1cCBvbmUgaW5kZXgg
cmVjb3JkIl9zIH07CkBAIC0yNTA4LDE0ICsyNTA4LDE0IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Z2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvCiAgICAgb3V0Q291bnQgPSAwOwogCiAgICAgYXV0byBsb3dlcktleSA9IHJhbmdlLmxvd2Vy
S2V5LmlzTnVsbCgpID8gSURCS2V5RGF0YTo6bWluaW11bSgpIDogcmFuZ2UubG93ZXJLZXk7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbG93ZXJCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KGxvd2VyS2V5KTsKKyAgICBhdXRvIGxvd2VyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShs
b3dlcktleSk7CiAgICAgaWYgKCFsb3dlckJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBzZXJpYWxpemUgbG93ZXIgSURCS2V5IGluIGxvb2t1cCByYW5nZSIpOwogICAgICAg
ICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc2VyaWFsaXplIGxv
d2VyIElEQktleSBpbiBsb29rdXAgcmFuZ2UgZm9yIGNvdW50IG9wZXJhdGlvbiJfcyB9OwogICAg
IH0KIAogICAgIGF1dG8gdXBwZXJLZXkgPSByYW5nZS51cHBlcktleS5pc051bGwoKSA/IElEQktl
eURhdGE6Om1heGltdW0oKSA6IHJhbmdlLnVwcGVyS2V5OwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHVwcGVyQnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YSh1cHBlcktleSk7CisgICAgYXV0
byB1cHBlckJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEodXBwZXJLZXkpOwogICAgIGlmICgh
dXBwZXJCdWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gc2VyaWFsaXplIHVw
cGVyIElEQktleSBpbiBsb29rdXAgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIHNlcmlhbGl6ZSB1cHBlciBJREJLZXkgaW4gbG9va3Vw
IHJhbmdlIGZvciBjb3VudCBvcGVyYXRpb24iX3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJDdXJzb3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKaW5k
ZXggOGJmZTIyN2RiNjE5NjIzYmQ4ZGYwNmExMDg1OGNmMDMyMWM0MzIwNi4uNDg2MTAzNGQzYTEy
ZGEwYzA5Y2ZlZGZlOWYyZWE2NWE2ODEwMDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAg
LTI2OSw3ICsyNjksNyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3VycmVudExvd2VyS2V5KTsKKyAgICBhdXRv
IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEobV9jdXJyZW50TG93ZXJLZXkpOwogICAgIGlm
IChtX3N0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAh
PSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGN1cnNv
ciBzdGF0ZW1lbnQgKGxvd2VyIGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE1
LDcgKzMxNSw3IEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpyZXNldEFuZFJlYmluZFByZUluZGV4
U3RhdGVtZW50SWZOZWNlc3NhcnkoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkp
OworICAgIGF1dG8gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwogICAgIGlmICht
X3ByZUluZGV4U3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZm
ZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlk
IGFyZ3VtZW50IHRvIHByZSBzdGF0ZW1lbnQgKGtleSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXIuY3BwCmluZGV4IDBhNDY5YmQwYmQxZjM4ZGNiOTZiMzlkOGMzMDAwYWY3M2QxMmFi
NTkuLmM5ZDZkYTZiZGQ5ZjkzOTUwMWY0ZjQyMzJiNGM3ODM3ZDg0MGRhYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5j
cHAKQEAgLTE5Niw3ICsxOTYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVJlY29yZGVyOjpz
dGFydFJlY29yZGluZyhzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0aW1lU2xpYwogICAgIHJldHVy
biB7IH07CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmPEJsb2JFdmVudD4gY3JlYXRlRGF0YUF2YWls
YWJsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUgdGltZUNvZGUp
CitzdGF0aWMgaW5saW5lIFJlZjxCbG9iRXZlbnQ+IGNyZWF0ZURhdGFBdmFpbGFibGVFdmVudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkK
IHsKICAgICBhdXRvIGJsb2IgPSBidWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVmZmVy
LT5leHRyYWN0RGF0YSgpLCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoY29udGV4dCk7CiAgICAg
cmV0dXJuIEJsb2JFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQs
IEJsb2JFdmVudDo6SW5pdCB7IHsgZmFsc2UsIGZhbHNlLCBmYWxzZSB9LCBXVEZNb3ZlKGJsb2Ip
LCB0aW1lQ29kZSB9LCBCbG9iRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCmluZGV4IDc3
MTJiNDQ1MjgzNjdkOGMyNzI1MDJhZGJhYWNhYWY5Nzg4Y2JkYjAuLjFlOWI3NGFiMTdlMzEwOGRi
NDIwOWI5YjRmMDIxNGRhMTFhYzZlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaApAQCAtMTAzLDcgKzEwMyw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaEVycm9yKEV4Y2VwdGlvbiYmKTsKIAogICAgIGVudW0g
Y2xhc3MgVGFrZVByaXZhdGVSZWNvcmRlciB7IE5vLCBZZXMgfTsKLSAgICB1c2luZyBGZXRjaERh
dGFDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT47CisgICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sg
PSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPjsKICAgICB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFD
YWxsYmFjayYmLCBUYWtlUHJpdmF0ZVJlY29yZGVyKTsKIAogICAgIC8vIE1lZGlhU3RyZWFtOjpP
YnNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24v
TWVkaWFNZXRhZGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9N
ZWRpYU1ldGFkYXRhLmNwcAppbmRleCAzZjRjOWJjZDEzM2FjMjlmM2Y3ZGRlMTk5NDc4ZTM5MjU3
ZDVlNjZiLi44NzRhYTdmMGIxOGYwZWU3NTg4MGJhNWY1ZWY2N2Q0N2JmYzJiMmI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRh
LmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIEFydHdvcmtJbWFnZUxvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIC8vIFNhbml0aXplIHRoZSBpbWFnZSBieSBkZWNvZGluZyBpdCBp
bnRvIGEgQml0bWFwSW1hZ2UuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5p
dGl6ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdl
KCktPmRhdGEoKTsKICAgICBhdXRvIGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgp
OwogICAgIGJpdG1hcEltYWdlLT5zZXREYXRhKFdURk1vdmUoYnVmZmVyVG9TYW5pdGl6ZSksIHRy
dWUpOwogICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcElt
YWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IDJiM2Nk
ZTM2MDgyNDcxYzExYzg3ZmNmNjFjYzgxY2MzNjBjMzlkOTAuLmQzNzhhZmM2ZjhhMWI1N2EwMzAy
ZTJjODY4YjI0MGEyMDk3ZmU0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIFNv
dXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCgpCiAgICAgLy8gaHR0cHM6Ly9kdmNz
LnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL3RpcC9tZWRpYS1zb3VyY2UvbWVkaWEtc291
cmNlLmh0bWwjc291cmNlYnVmZmVyLXNlZ21lbnQtcGFyc2VyLWxvb3AKICAgICAvLyBXaGVuIHRo
ZSBzZWdtZW50IHBhcnNlciBsb29wIGFsZ29yaXRobSBpcyBpbnZva2VkLCBydW4gdGhlIGZvbGxv
d2luZyBzdGVwczoKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFwcGVuZERhdGEgPSBXVEZN
b3ZlKG1fcGVuZGluZ0FwcGVuZERhdGEpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBhcHBlbmREYXRhID0gV1RGTW92ZShtX3BlbmRpbmdBcHBlbmREYXRhKTsKICAgICAvLyAx
LiBMb29wIFRvcDogSWYgdGhlIGlucHV0IGJ1ZmZlciBpcyBlbXB0eSwgdGhlbiBqdW1wIHRvIHRo
ZSBuZWVkIG1vcmUgZGF0YSBzdGVwIGJlbG93LgogICAgIGlmICghYXBwZW5kRGF0YSB8fCAhYXBw
ZW5kRGF0YS0+c2l6ZSgpKSB7CiAgICAgICAgIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21w
bGV0ZShBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2NlZWRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAppbmRleCA1MjBjMDc3NTY5NmEy
ZjBlMmU3MzAwNzM1ZThjOTc3NDk1ZjFhNjE0Li5kNGM4NTc5YzBiYmQ0NDNhNTEyZmE5ZjY4YzQy
N2VjMDQ4ODVkMGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmgKQEAgLTIyMiw3ICsyMjIsNyBAQCBwcml2YXRlOgogCiAgICAgV1RG
OjpPYnNlcnZlcjx2b2lkKigpPiBtX29wYXF1ZVJvb3RQcm92aWRlcjsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1fcGVuZGluZ0FwcGVuZERhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IG1fcGVuZGluZ0FwcGVuZERhdGE7CiAgICAgVGltZXIgbV9hcHBlbmRCdWZm
ZXJUaW1lcjsKIAogICAgIFJlZlB0cjxWaWRlb1RyYWNrTGlzdD4gbV92aWRlb1RyYWNrczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAppbmRleCBmZWIxYjhmZmZiN2I5NGM5ZTdl
YjBiZTQ4YWQzNWRkNzA3OWM3MGJiLi5jYzVhODY1NzMwNTY1N2QwYTk3MDU2NjFlNGJiNDljZTBi
ODQwNWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCkBAIC04Miw3ICs4
Miw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCgpCiAg
ICAgbV9pc1JlYWR5VG9TZW5kID0gdHJ1ZTsKIAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1f
cGVuZGluZ01lc3NhZ2VzKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3Rl
SWRlbnRpZmllciwgbWVzc2FnZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPmRhdGEoKSwgbWVzc2Fn
ZS5idWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1v
dGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsKICAgICBtX3BlbmRpbmdNZXNz
YWdlcy5jbGVhcigpOwogCiAgICAgaWYgKG1faXNQZW5kaW5nQ2xvc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuaAppbmRleCBmNTgyN2RmOTM3OTQ5M2QyODEyNzAxNzdjY2ZiY2EwNTUx
NTMyMzFmLi43Mzk0MmE4MzU5MzFhOWQyODRjNmE0NTFiYjhkYmZiNTc2NWNhZGFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50OwogY2xhc3MgUlRDRGF0
YUNoYW5uZWxSZW1vdGVIYW5kbGVyQ29ubmVjdGlvbjsKIGNsYXNzIFJUQ0Vycm9yOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyIGZpbmFsIDogcHVibGljIFJUQ0RhdGFDaGFubmVsSGFu
ZGxlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcj4g
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRl
OgogCiAgICAgc3RydWN0IE1lc3NhZ2UgewogICAgICAgICBib29sIGlzUmF3IHsgZmFsc2UgfTsK
LSAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIH07CiAgICAgVmVjdG9yPE1lc3NhZ2U+IG1fcGVu
ZGluZ01lc3NhZ2VzOwogICAgIGJvb2wgbV9pc1BlbmRpbmdDbG9zZSB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAppbmRleCAz
ZTExMDU0MDAzNTNkZTU2MGYyNDkzOGE5YjIwOGVmMzZmNjgwM2M0Li4zY2VlZDBhMDExZTdiNTQ2
ZmFkZGY0OGJiZGEyMTFkZmRkNTI0YzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKQEAgLTk3LDggKzk3LDggQEAgdm9pZCBMaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXI6OnNldENsaWVudChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGll
bnQmIGNsaWVudCwKICAgICBtX2NvbnRleHRJZGVudGlmaWVyID0gY29udGV4dElkZW50aWZpZXI7
CiAKICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtX2J1ZmZlcmVkTWVzc2FnZXMpIHsKLSAgICAg
ICAgc3dpdGNoT24obWVzc2FnZSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRhKSB7Ci0gICAg
ICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOworICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBbJl0oUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiBkYXRhKSB7CisgICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVJhd0RhdGEoZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogICAgICAgICB9LCBb
Jl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZVN0cmluZ0Rh
dGEodGV4dCk7CiAgICAgICAgIH0sIFsmXShTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAppbmRleCA0MWY5
NTI4MjFlNjIwMDkzZjhlZWZlMzJjNWVkNGFlMGY1ZTU0MTk3Li4xMWJkNDVkZTkxNTU3NzlmZmM5
ZWZiMDNlOTU1MjhmMDVlNjRkNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIuaApAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogICAgICAgICBS
VENEYXRhQ2hhbm5lbFN0YXRlIHN0YXRlOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPHdlYnJ0Yzo6
UlRDRXJyb3I+IGVycm9yOwogICAgIH07Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFu
dDxTdGF0ZUNoYW5nZSwgU3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgTWVz
c2FnZSA9IHN0ZDo6dmFyaWFudDxTdGF0ZUNoYW5nZSwgU3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+OwogICAgIHVzaW5nIFBlbmRpbmdNZXNzYWdlcyA9IFZlY3RvcjxNZXNzYWdl
PjsKICAgICB2b2lkIHN0b3JlTWVzc2FnZShQZW5kaW5nTWVzc2FnZXMmLCBjb25zdCB3ZWJydGM6
OkRhdGFCdWZmZXImKTsKICAgICB2b2lkIHByb2Nlc3NNZXNzYWdlKGNvbnN0IHdlYnJ0Yzo6RGF0
YUJ1ZmZlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4IDMwOWMwMjY0M2Y1YTdhZTlmZWMwOGEx
NGViMjEyMjQwOWIxZjg5ZTAuLjI3YTZkNzAzMzRjYTMyMDZhOTRlOTE5OTQzMzYzN2M0YTMwNTJl
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEhUTUxNb2Rl
bEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fc291cmNlVVJM
ID0gdXJsOwogCi0gICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICBtX2RhdGEucmVzZXQoKTsKICAg
ICBtX2RhdGFDb21wbGV0ZSA9IGZhbHNlOwogCiAgICAgaWYgKG1fcmVzb3VyY2UpIHsKQEAgLTE0
OSw3ICsxNDksNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBV
UkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9kYXRhLmVtcHR5KCk7CiAKICAgICBtX3Jlc291cmNlID0g
cmVzb3VyY2UudmFsdWUoKTsKICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMpOwpAQCAt
MTgwLDggKzE4MCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzCiB2b2lkIEhUTUxNb2RlbEVs
ZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2Us
ICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICBtX2Rh
dGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRh
dGFMZW5ndGgpOwogfQogCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKQEAgLTE5
NSw3ICsxOTQsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYQogICAgIH07CiAKICAgICBpZiAo
cmVzb3VyY2UubG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkgewotICAgICAgICBtX2RhdGEgPSBudWxs
cHRyOworICAgICAgICBtX2RhdGEucmVzZXQoKTsKIAogICAgICAgICBpbnZhbGlkYXRlUmVzb3Vy
Y2VIYW5kbGVBbmRVcGRhdGVSZW5kZXJlcigpOwogCkBAIC0yMDQsNyArMjAzLDcgQEAgdm9pZCBI
VE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IE5ldHdvcmtMb2EKICAgICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRydWU7Ci0g
ICAgbV9tb2RlbCA9IE1vZGVsOjpjcmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCkuZ2V0KCks
IHJlc291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9k
ZWw6OmNyZWF0ZShtX2RhdGEudGFrZUFzQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1l
VHlwZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVB
bmRVcGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAwNWExY2RhYTNlMTQ4Nzdh
MGFlNDY1YjYzNDlhYTViYmIxYWYyYzgyLi5jZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFl
NmU4NTgwM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgog
CiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJh
d1Jlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8TW9kZWw+IG1fbW9k
ZWw7CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAgICAgYm9v
bCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbExvYWRlclVTRC5tbSBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1v
ZGVsTG9hZGVyVVNELm1tCmluZGV4IDNlODJhYzIyMTY3OTZjOWVkYjc2MGExOWVkN2FjZTFmNDJj
ZDM3NzcuLjEzMDNlYzRkMjU2OGE2NmY4N2Q3ZmViMjBiZjJiMDMzOTIzMmMzYzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtp
dE1vZGVsTG9hZGVyVVNELm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsTG9hZGVyVVNELm1tCkBAIC0xMDQsNyArMTA0LDcg
QEAgc3RhdGljIFJldGFpblB0cjxOU1VSTD4gd3JpdGVUb1RlbXBvcmFyeUZpbGUoV2ViQ29yZTo6
TW9kZWwmIG1vZGVsU291cmNlKQogICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVu
VGVtcG9yYXJ5RmlsZSgiTW9kZWxGaWxlIiwgZmlsZUhhbmRsZSwgIi51c2R6Iik7CiAgICAgQVNT
RVJUKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZUhhbmRsZSkpOwogCi0gICAgc2l6ZV90
IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIG1vZGVsU291
cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgc2l6
ZV90IGJ5dGVDb3VudCA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGVIYW5kbGUsIG1vZGVs
U291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRh
KCktPnNpemUoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChieXRlQ291bnQsIGJ5dGVDb3VudCA9PSBt
b2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZp
bGVIYW5kbGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW1TaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW1TaW5rLmgKaW5kZXggMGI4OThmNmFkYjU3ZWIyNWRjNDkzN2Q4MWZmNWQxNGQ1
Mjk3NmM4NC4uZDUxNzNmYmY4YjQwMzQxYzVjZjhkOGE0ZjU1ZWVhYzhmZjgzOGEzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsu
aApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNv
dXJjZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFtOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUmVhZGFibGVTdHJlYW1TaW5rIDogcHVi
bGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1TaW5rPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIu
aAppbmRleCBjNDUyYzgzZmJkNWNlODk1YmRkMDMxYWNmMTQ2OGY3ODY1MDYyMmQ3Li5iOGI3Nzg1
ZjkxZDA2OGMyYTQ2Y2ViMWQ2NTk3NThmY2Y4YjY5ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKQEAgLTUx
LDEzICs1MSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX3NjcmlwdEJ1ZmZlci5pc0VtcHR5
KCkpCiAgICAgICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAorICAgICAgICBpZiAoIW1f
Y29udGlndW91c0J1ZmZlciAmJiAoIW1fY29udGFpbnNPbmx5QVNDSUkgfHwgKm1fY29udGFpbnNP
bmx5QVNDSUkpKQorICAgICAgICAgICAgbV9jb250aWd1b3VzQnVmZmVyID0gbV9zY3JpcHRCdWZm
ZXIuYnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIGlmICghbV9jb250YWluc09u
bHlBU0NJSSkgewotICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNB
cmVBbGxBU0NJSShtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZl
ci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1fY29udGFpbnNPbmx5QVNDSUkgPSBj
aGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9jb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIG1fc2NyaXB0
QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25s
eUFTQ0lJKQotICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29t
cHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwg
bV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9zY3Jp
cHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2NvbnRp
Z3VvdXNCdWZmZXItPmRhdGEoKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAgICAgICAg
cmV0dXJuIHsgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CisgICAgICAgICAgICBy
ZXR1cm4geyBtX2NvbnRpZ3VvdXNCdWZmZXItPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CiAKICAgICAgICAgaWYgKCFtX2Nh
Y2hlZFNjcmlwdFN0cmluZykgewogICAgICAgICAgICAgbV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBt
X3NjcmlwdEJ1ZmZlci50b1N0cmluZygpOwpAQCAtODEsNiArODMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgbV9zY3JpcHRCdWZmZXIgPSBzY3JpcHRCdWZmZXI7
CisgICAgICAgIG1fY29udGlndW91c0J1ZmZlciA9IG51bGxwdHI7CiAgICAgfQogCiBwcml2YXRl
OgpAQCAtOTEsNiArOTQsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFNjcmlwdEJ1ZmZlciBt
X3NjcmlwdEJ1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udGln
dW91c0J1ZmZlcjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAg
ICBtdXRhYmxlIFN0cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggN2U0OWE5ZTczMjI2
YjY1Y2MyOGJmNTk0ODEzYjBmODNiMjY5ZDIyYi4uZWYzN2YxZDBjYTQ2MmJiOWI3YzliNmE1NWQx
OGViYjRjMTE4MWE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgRGV0YWNoZWRPZmZz
Y3JlZW5DYW52YXM7CiBjbGFzcyBJREJWYWx1ZTsKIGNsYXNzIE1lc3NhZ2VQb3J0OwogY2xhc3Mg
SW1hZ2VCaXRtYXBCYWNraW5nOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgU2VyaWFsaXphdGlvblJldHVybkNvZGU7CiAKIGVu
dW0gY2xhc3MgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB7IE5vblRocm93aW5nLCBUaHJvd2luZyB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA4MjYxMzMzMjJhOGVl
NWYzNzgyZmJiMjMxMjNiMmRkM2E1N2ExNzI4Li4xMDhlNmM4NzY3ZDBkMmZkYWNiZTY1MDRlYmM1
MDcwZTg4MmJlNjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAt
MzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwog
Y2xhc3MgQ1NTRm9udFNlbGVjdG9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1l
bnQ7CiBjbGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKQEAgLTQyLDcgKzQz
LDYgQEAgY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZp
ZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5nczsKIGNsYXNzIFNWR0Zv
bnRGYWNlRWxlbWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdz
PGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAK
aW5kZXggMWRlYWM0ZjQxY2Y0OWYxZjg4MmRjY2VmZDQ4Y2Y2YTk3MzJmM2VkOS4uYzQyZWMwNTFm
ZTExZWJhMTRmODEzMzU5ZDhkMTdhMmMyODE2NjRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFu
c2Zlci5jcHAKQEAgLTQwMiw3ICs0MDIsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVUeXBlUmVh
ZGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgICAgICB0eXBlcy5hZGQoRmls
ZTo6Y29udGVudFR5cGVGb3JGaWxlKGZpbGVuYW1lKSk7CiAgICAgfQogCi0gICAgdm9pZCByZWFk
QnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJikKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKICAgICB7CiAgICAgICAgIHR5cGVz
LmFkZCh0eXBlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTcyNGNm
MGU1MGJhYTViOWIyNDEzMDQ4MWVlNzI0Y2I3ODIwN2FhNC4uYzVlOWUyNmIzNzJhZTY4M2YxODY4
ZTkyMGM0NWVkNzBlZGY1NTQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDEz
Myw3ICs0MTMzLDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0
YWNobWVudEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4geyBhdHRhY2htZW50LT51
bmlxdWVJZGVudGlmaWVyKCksIFdURk1vdmUoYWRkaXRpb25hbFR5cGVzKSwgV1RGTW92ZShhZGRp
dGlvbmFsRGF0YSkgfTsKIH0KIAotdm9pZCBFZGl0b3I6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50
aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRh
dGEpCit2b2lkIEVkaXRvcjo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
cHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7
CiAgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQogICAgICAgICBjbGllbnQt
PnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoaWRlbnRpZmllciwgY29udGVudFR5cGUsIHBy
ZWZlcnJlZEZpbGVOYW1lLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmlu
ZGV4IDAxZmUwYjVlMDQ0ZWY2M2YyNmE3MWI0NzJlZjk4YjExYzIyOGI5MWMuLjFkMDcxNmM1Yjkz
YzhiYjdhZDczZjQxNzRjYTgwNDU5MDVmOTE5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApA
QCAtNTcsOSArNTcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOwogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwotY2xhc3MgRGF0YVRyYW5z
ZmVyOwogY2xhc3MgQ29tcG9zaXRlRWRpdENvbW1hbmQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBj
bGFzcyBDdXN0b21VbmRvU3RlcDsKK2NsYXNzIERhdGFUcmFuc2ZlcjsKIGNsYXNzIERlbGV0ZUJ1
dHRvbkNvbnRyb2xsZXI7CiBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29t
cG9zaXRpb247CkBAIC03NCw3ICs3NSw3IEBAIGNsYXNzIEtpbGxSaW5nOwogY2xhc3MgUGFzdGVi
b2FyZDsKIGNsYXNzIFBhc3RlYm9hcmRXcml0ZXJEYXRhOwogY2xhc3MgUmVuZGVyTGF5ZXI7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3Mg
Rm9udDsKIGNsYXNzIFNwZWxsQ2hlY2tSZXF1ZXN0OwogY2xhc3MgU3BlbGxDaGVja2VyOwpAQCAt
NTYzLDcgKzU2NCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBmaWxlU2l6ZSwgY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAgdm9pZCByZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgZmlsZURhdGEpOworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHBy
ZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBmaWxlRGF0YSk7
CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVu
dERhdGE+JiYpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJlYWRlci5oCmluZGV4IDA4YWExMjQy
NjYyMGY3Njk1M2E3OWIzNGVkZTVmNmRmMDUyN2IwMTUuLjk1N2I0ZmQ0YTU1N2ZjODFjZDMwNjll
ZWFjYjg5NDg4YTk0N2I3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2Vi
Q29udGVudFJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29udGVudFJl
YWRlci5oCkBAIC03MiwxNiArNzIsMTYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlYWRGaWxlUGF0
aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNp
emUgPSB7IH0sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUgPSB7IH0pIG92ZXJyaWRlOwogICAg
IGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlOwogICAg
IGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkSW1h
Z2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25T
aXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOworICAgIGJvb2wg
cmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5
cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3Zl
cnJpZGU7CiAgICAgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUp
IG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCByZWFkV2ViQXJjaGl2
ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
LSAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRh
dGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURkQoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFBy
ZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7
CiAjZW5kaWYKIH07CiAKQEAgLTk5LDE2ICs5OSwxNiBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVh
ZEZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0
cmluZyYgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkRmls
ZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICBib29sIHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVh
ZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNp
emUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCByZWFkSW1hZ2Uo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlv
blNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkVVJM
KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFy
Y2hpdmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGRChTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7Ci0gICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3Zl
cnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCmluZGV4IDU0
OWViN2QyZTRjMDc1NDhlNGE4YzllYTI0ZWMyMGU0ZjIxYmZhMjUuLjExN2RiYTY4ZWRiMGJkNGI2
YzMwZTA5NDg1ZDlkMGMwZjI5YzM4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAg
dm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRGaWxlbmFtZShjb25zdCBTdHJp
bmcmIGZpbGVuYW1lKQogICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVhdGUoY29udGV4dC5nZXQo
KSwgZmlsZW5hbWUpKTsKIH0KIAotdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJl
YWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVy
OjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGZpbGVzLmFwcGVu
ZChGaWxlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgQmxvYjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCks
IGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSwgdHlwZSksIGZpbGVuYW1lKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAppbmRl
eCA1YzUyOWRkN2M4ZWNjMDAwNDhmY2I0ZDE1ODE0NjM1YjI0ZDkwYmI3Li45ZDgxNjA1ZjE5OTI5
OGYxOWMwZWQ2OTk1ZmUzYmQ3NzgzMDM0ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAg
c3RydWN0IFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxl
UmVhZGVyIHsKICAgICB+V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyKCk7CiAKICAgICB2b2lk
IHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CiAKICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gY29udGV4dDsKICAgICBW
ZWN0b3I8UmVmPEZpbGU+PiBmaWxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbQppbmRleCBkNDhlMTFjOTZiNzgwOGY4ODM1NGIzYjA3NDdlZWIxZjFl
MzdlM2YzLi4wNzgyNDgzNjJhYTA1NGRjM2FiMDAwMDQ1MTcxODQxOThhNTgwZjc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0xMjczLDcg
KzEyNzMsNyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudChF
bGVtZW50JiBlbGVtZW50LCBOU1VSTCAqdXJsLCBCT09MCiAgICAgICAgIGlmIChhdXRvIHJlc291
cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UodXJsKSkgewogICAgICAgICAgICAgYXV0byYg
bWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgICAgIGlmICghdXNlUGxh
Y2Vob2xkZXIgfHwgbWltZVR5cGUgIT0gInRleHQvaHRtbCIpIHsKLSAgICAgICAgICAgICAgICBm
aWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZp
bGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwor
ICAgICAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxs
b2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICAgICAgW2ZpbGVX
cmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBl
KHVybCwgbWltZVR5cGUpXTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG5v
dEZvdW5kID0gWUVTOwpAQCAtMjMwMCw3ICsyMzAwLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0Zp
bGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExvYWRlciogZGF0YVNvdXJjZSwg
TlMKIAogICAgIGlmIChkYXRhU291cmNlKSB7CiAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPiByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKFVSTCkpIHsKLSAgICAg
ICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0
UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVOU0RhdGEoKS5n
ZXQoKV0pOworICAgICAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBw
ZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICBOU1N0
cmluZyAqZmlsZW5hbWUgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgp
OwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSB8fCAhW2ZpbGVuYW1lIGxlbmd0aF0pCiAgICAg
ICAgICAgICAgICAgZmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShyZXNv
dXJjZS0+dXJsKCksIHJlc291cmNlLT5taW1lVHlwZSgpKTsKQEAgLTIzMjIsOCArMjMyMiw4IEBA
IHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1l
bnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+
IGZpbGVXcmFwcGVyRm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAg
IGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCkpIHsK
LSAgICAgICAgaWYgKFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJl
c291cmNlQnVmZmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBw
ZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPmNyZWF0
ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgICAgIGlmIChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBz
aGFyZWRCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKKyAgICAgICAgICAg
IHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0
aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldKTsKICAgICB9CiAKICAgICBhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJl
YWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVh
ZGVyQ29jb2EubW0KaW5kZXggNmFhM2NkNTRlODJiOTliMzE5NDI3YmVlMzRjOGM0NGI2NzllMjI3
OS4uNzZiMWEwMDlkZTQzMGZhM2I1NGQ5YTE1ZTY3OGNkODNmMzE0NWZlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0K
QEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgYm9vbCBzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2ht
ZW50RGF0YShjb25zdCBGcmFtZSYgZnJhbWUpCiAKICNlbmRpZgogCi1zdGF0aWMgUmVmPERvY3Vt
ZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFt
ZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQorc3Rh
dGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVu
dChGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkb2N1bWVudCwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBQcmVzZW50YXRpb25T
aXplIHByZWZlcnJlZFNpemUpCiB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAg
ICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFt
ZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKQEAgLTMwOSw3ICszMDksNyBAQCBzdGF0aWMg
dm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1
bWVudEZyYWdtZW50JiBmcgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byYg
cmVzb3VyY2UgPSByZXNvdXJjZUVudHJ5LT52YWx1ZTsKLSAgICAgICAgc2VyaWFsaXplZEF0dGFj
aG1lbnREYXRhLmFwcGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNvdXJj
ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPmRhdGEoKSB9KTsKKyAgICAgICAgc2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhLmFwcGVuZCh7IGF0dGFjaG1lbnQudW5pcXVlSWRlbnRpZmllcigpLCByZXNv
dXJjZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpIH0pOwog
ICAgIH0KIAogICAgIGlmICghc2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmlzRW1wdHkoKSkKQEAg
LTMzMiw3ICszMzIsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNo
bWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAobmFt
ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBuYW1lID0gIm1lZGlhIl9zOwogCi0gICAgICAgIGF0
dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52
YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCksIGltYWdlIH0pOworICAg
ICAgICBhdHRhY2htZW50SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNv
dXJjZS0+dmFsdWUtPm1pbWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLm1ha2VDb250
aWd1b3VzKCksIGltYWdlIH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgb2JqZWN0IDogZGVz
Y2VuZGFudHNPZlR5cGU8SFRNTE9iamVjdEVsZW1lbnQ+KGZyYWdtZW50KSkgewpAQCAtMzUwLDcg
KzM1MCw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhG
cmFtZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChuYW1lLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIG5hbWUgPSAiZmlsZSJfczsKIAotICAgICAgICBhdHRhY2htZW50
SW5zZXJ0aW9uSW5mby5hcHBlbmQoeyBXVEZNb3ZlKG5hbWUpLCByZXNvdXJjZS0+dmFsdWUtPm1p
bWVUeXBlKCksIHJlc291cmNlLT52YWx1ZS0+ZGF0YSgpLCBvYmplY3QgfSk7CisgICAgICAgIGF0
dGFjaG1lbnRJbnNlcnRpb25JbmZvLmFwcGVuZCh7IFdURk1vdmUobmFtZSksIHJlc291cmNlLT52
YWx1ZS0+bWltZVR5cGUoKSwgcmVzb3VyY2UtPnZhbHVlLT5kYXRhKCkubWFrZUNvbnRpZ3VvdXMo
KSwgb2JqZWN0IH0pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgaW5mbyA6IGF0dGFjaG1lbnRJ
bnNlcnRpb25JbmZvKSB7CkBAIC00MjgsNyArNDI4LDcgQEAgc3RydWN0IE1hcmt1cEFuZEFyY2hp
dmUgewogICAgIFJlZjxBcmNoaXZlPiBhcmNoaXZlOwogfTsKIAotc3RhdGljIHN0ZDo6b3B0aW9u
YWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcpPiYgY2FuU2hv
d01JTUVUeXBlQXNIVE1MKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4g
ZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFz
SFRNTCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoVVJM
KCksIGJ1ZmZlcik7CiAgICAgaWYgKCFhcmNoaXZlKQpAQCAtNDQyLDcgKzQ0Miw3IEBAIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZl
KFNoYXJlZEJ1ZmZlciYgYnVmCiAgICAgaWYgKCFjYW5TaG93TUlNRVR5cGVBc0hUTUwodHlwZSkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gTWFya3VwQW5kQXJj
aGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtYWlu
UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwg
YXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07CisgICAgcmV0dXJuIE1hcmt1cEFuZEFyY2hpdmUg
eyBTdHJpbmc6OmZyb21VVEY4KG1haW5SZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgbWFpblJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKSwgbWFpblJlc291cmNlLnJlbGVh
c2VOb25OdWxsKCksIGFyY2hpdmUucmVsZWFzZU5vbk51bGwoKSB9OwogfQogCiBzdGF0aWMgU3Ry
aW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVz
dGluYXRpb25Eb2N1bWVudCwgTWFya3VwQW5kQXJjaGl2ZSYgbWFya3VwQW5kQXJjaGl2ZSwgTVNP
TGlzdFF1aXJrcyBtc29MaXN0UXVpcmtzLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3Qg
U3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKQEAgLTQ4MSw3ICs0ODEsNyBAQCBzdGF0
aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVu
dCYgZGVzdGluYXRpb25Eb2N1bQogICAgICAgICBpZiAoIXNob3VsZFJlcGxhY2VTdWJyZXNvdXJj
ZVVSTChzdWJmcmFtZVVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBNYXJr
dXBBbmRBcmNoaXZlIHN1YmZyYW1lQ29udGVudCA9IHsgU3RyaW5nOjpmcm9tVVRGOChzdWJmcmFt
ZU1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEo
KS5zaXplKCkpLAorICAgICAgICBNYXJrdXBBbmRBcmNoaXZlIHN1YmZyYW1lQ29udGVudCA9IHsg
U3RyaW5nOjpmcm9tVVRGOChzdWJmcmFtZU1haW5SZXNvdXJjZS0+ZGF0YSgpLm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgc3ViZnJhbWVNYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLAogICAg
ICAgICAgICAgc3ViZnJhbWVNYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgc3ViZnJhbWVB
cmNoaXZlLmNvcHlSZWYoKSB9OwogICAgICAgICBhdXRvIHN1YmZyYW1lTWFya3VwID0gc2FuaXRp
emVNYXJrdXBXaXRoQXJjaGl2ZShmcmFtZSwgZGVzdGluYXRpb25Eb2N1bWVudCwgc3ViZnJhbWVD
b250ZW50LCBNU09MaXN0UXVpcmtzOjpEaXNhYmxlZCwgY2FuU2hvd01JTUVUeXBlQXNIVE1MKTsK
IApAQCAtNDk3LDcgKzQ5Nyw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJj
aGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgcmV0dXJu
IHNhbml0aXplZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChXVEZNb3ZlKGZyYWdtZW50KSwg
KnN0YWdpbmdEb2N1bWVudCwgbXNvTGlzdFF1aXJrcywgbWFya3VwQW5kQXJjaGl2ZS5tYXJrdXAp
OwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJl
ZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtNTMyLDcgKzUzMiw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVh
ZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYxMiwxMiArNjEyLDEyIEBAIGJvb2wgV2Vi
Q29udGVudE1hcmt1cFJlYWRlcjo6cmVhZEhUTUwoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAg
cmV0dXJuICFtYXJrdXAuaXNFbXB0eSgpOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJl
YWRSVEZEKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
UlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNl
dHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CisgICAgYXV0byBzdHJpbmcgPSBh
ZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6YnVmZmVyLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpu
dWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3Vy
Y2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTYyNiwxMSArNjI2LDExIEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6
cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZmZXIp
Citib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIuY3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1l
bnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGRDpidWZmZXIubWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVzOm51bGxwdHJdKTsKICAg
ICBhdXRvIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoZnJhbWUsIHN0
cmluZy5nZXQoKSk7CiAgICAgaWYgKCFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNjM5LDEyICs2MzksMTIgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRG
RChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJD
b250ZW50UmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250
ZW50UmVhZGVyOjpyZWFkUlRGKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBk
b2N1bWVudEF0dHJpYnV0ZXM6bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhb
W05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7
CiAgICAgYXV0byBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1l
LCBzdHJpbmcuZ2V0KCkpOwogICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTY1MywxMSArNjUzLDExIEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250
ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJD
b250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoUlRGOmJ1ZmZlci5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0dHJpYnV0ZXM6
bnVsbHB0cl0pOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmlu
ZyBhbGxvY10gaW5pdFdpdGhSVEY6YnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpIGRvY3VtZW50QXR0cmlidXRlczpudWxscHRyXSk7CiAgICAgYXV0byBmcmFnbWVu
dCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGZyYW1lLCBzdHJpbmcuZ2V0KCkpOwog
ICAgIGlmICghZnJhZ21lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY3Niw3ICs2NzYs
NyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0
ZXh0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJ
bWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVz
ZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRJbWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplKQogewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVu
dCA9ICpmcmFtZS5kb2N1bWVudCgpOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogICAgIHJldHVybiBhdHRhY2htZW50OwogfQogCi1zdGF0aWMg
UmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5h
bWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkU2l6ZSkKK3N0YXRpYyBSZWY8SFRNTEVsZW1l
bnQ+IGF0dGFjaG1lbnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUs
IFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkU2l6ZSkKIHsKICAgICBSZWYgZG9jdW1lbnQgPSAq
ZnJhbWUuZG9jdW1lbnQoKTsKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVs
ZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKQEAgLTgz
Myw3ICs4MzMsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZl
cnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVm
ZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9u
U2l6ZSkKIHsKICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRl
ckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3Rr
LmNwcAppbmRleCA2MDQ4NmU3MWFkNTlmZWNjNzE1ZmYwYTA5YjFjMzU1OGI3YjM0MmMyLi5kM2U5
ODE5YmQ1MzFmODQ4NmEzMTdhYjlmOWVkODNhOTg4NWJlMmJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNzEsNyArNzEs
NyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0
ZXh0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJ
bWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVz
ZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRJbWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplKQogewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVu
dCA9ICpmcmFtZS5kb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCA0NWQ5MzNlMTNj
YTRkMjI1MWM1ZGVkODQ4YWE5ZTk4NzJjNzY3NDg5Li5iY2E2Njk2ZWJlNmYwZWRkZGRlZTc5Yjcz
YzNlZTE0NDk2ZDgyZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaApAQCAtNTMsNyArNTMsNyBAQCBj
bGFzcyBCbG9iTG9hZGVyOwogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgUmVhZGFibGVT
dHJlYW07CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IGNs
YXNzIEV4Y2VwdGlvbk9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05l
dHdvcmtTZW5kUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1
ZXVlLmNwcAppbmRleCA1NTllYmNjNDhjNWYwOTZhYzE5YmFlN2Q5ZjcxOGI3MWYyYTM1MzIyLi40
MmY0MTgwZGZhODQyN2UwZTYwZjgxZWI3OWIxOTE4N2NhZmRiYTFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBO
ZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVzc2FnZXMoKQogICAgICAgICBib29sIHNob3VsZFN0
b3BQcm9jZXNzaW5nID0gZmFsc2U7CiAgICAgICAgIHN3aXRjaE9uKG1fcXVldWUuZmlyc3QoKSwg
W3RoaXNdKGNvbnN0IENTdHJpbmcmIHV0ZjgpIHsKICAgICAgICAgICAgIG1fd3JpdGVTdHJpbmco
dXRmOCk7Ci0gICAgICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgeworICAg
ICAgICB9LCBbdGhpc10oUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CiAgICAg
ICAgICAgICBkYXRhLT5mb3JFYWNoU2VnbWVudChtX3dyaXRlUmF3RGF0YSk7CiAgICAgICAgIH0s
IFt0aGlzLCAmc2hvdWxkU3RvcFByb2Nlc3NpbmddKFVuaXF1ZVJlZjxCbG9iTG9hZGVyPiYgbG9h
ZGVyKSB7CiAgICAgICAgICAgICBhdXRvIGVycm9yQ29kZSA9IGxvYWRlci0+ZXJyb3JDb2RlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCmluZGV4IDU1MWY3MGY5
MTY3YjJiZmNiMjQ0YmIyYjM3MDBiZmJhYWY1NDc5NmMuLmQyM2NmZWJiNDUwOGJjMzAwOTE1YmI5
OTZkM2YxNTA2MmNlMzUwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0
d29ya1NlbmRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRR
dWV1ZS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxv
YjsKIGNsYXNzIEJsb2JMb2FkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBOZXR3b3JrU2VuZFF1ZXVl
IDogcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKQEAgLTYzLDcg
KzYzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NNZXNzYWdlcygpOwog
Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxDU3RyaW5nLCBSZWY8U2hhcmVkQnVm
ZmVyPiwgVW5pcXVlUmVmPEJsb2JMb2FkZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2
YXJpYW50PENTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgVW5pcXVlUmVmPEJs
b2JMb2FkZXI+PjsKICAgICBEZXF1ZTxNZXNzYWdlPiBtX3F1ZXVlOwogCiAgICAgV3JpdGVTdHJp
bmcgbV93cml0ZVN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmNwcAppbmRleCA1NmEwNmZjYWYyNzNkMjVkYzRjNzVkY2U1NjlhYWM4ZjFhYTU5NTI3
Li5kMmI4NzQxYTA0NDM0MmM3ZmZkOWU4YTUzM2NjOGExMjBlMjliYWQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0yMjcsNyArMjI3LDcg
QEAgc3RhdGljIGJvb2wgbWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VBdHRhY2htZW50
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6Omlz
U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShtaW1lVHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNQ
REZNSU1FVHlwZShtaW1lVHlwZSk7CiB9CiAKLXZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1
cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVw
ZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGF1dG8qIGhvc3RFbGVt
ZW50ID0gc2hhZG93SG9zdCgpOwogICAgIGlmICghaXM8SFRNTEltYWdlRWxlbWVudD4oaG9zdEVs
ZW1lbnQpIHx8ICFidWZmZXItPnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRh
Y2htZW50RWxlbWVudC5oCmluZGV4IDU3M2VjMmVhZTFjZGMwNjA5ZjI2MWMzODQwMGJiMDJjNDgw
ZjdiZGQuLjY2MWRlYzkzNzZkOGE5ZDZkNDcxN2ZkMGI0Y2U3ZjgyZmYwM2Y3NTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaApAQCAtMzYsNyArMzYsNyBA
QCBjbGFzcyBGaWxlOwogY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIFJlbmRlckF0dGFj
aG1lbnQ7CiBjbGFzcyBTaGFyZWFibGVCaXRtYXA7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1lbnQg
ZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
SFRNTEF0dGFjaG1lbnRFbGVtZW50KTsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZv
aWQgY29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50Jikg
ZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUF0dHJpYnV0ZXMoc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4mJiBuZXdGaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50
VHlwZSwgY29uc3QgU3RyaW5nJiBuZXdGaWxlbmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRh
dGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
dXBkYXRlVGh1bWJuYWlsKGNvbnN0IFJlZlB0cjxJbWFnZT4mIHRodW1ibmFpbCk7CiAKICAgICBJ
bnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25U
eXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAppbmRleCBlYzgzNTFjMDk3NzQ4YjE0OWE5NDQzOWJhYjY5NTc4ZWU5MDAxYTBl
Li41NjRjMzE1MjllNjljMzY1YWZkZjk3OGU5MjFkMTg1ODQ3ZDQyNWZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTI5MzksNyArMjkzOSw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6Y2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vz
c2FyeSgpCiAgICAgYXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpOwogfQogCi12
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25E
YXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgaW5pdERhdGEpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVk
SW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIG1lZGlhUGxheWVy
SW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0YS0+dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCmluZGV4IDZiNDA0YWE4NzM1Mjc3N2I0NzE4MzVmMTIwZmYxNTdjZWVkODRhNjkuLjkxMjhi
Y2RiZWU1OWQ1ZmQxNzIyZTc0NzE5OGQ1NjI2NGM2ZWY4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCkBAIC03MjEsNyArNzIxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8v
IENETUNsaWVudAogICAgIHZvaWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5l
Y2Vzc2FyeSgpIGZpbmFsOwotICAgIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXph
dGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKKyAgICB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2
ZWQoY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwog
I2VuZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDc3
Y2Q0ZjM4MGUyODMyMGU1NDQ0ZjkzOWNhYWQ2MDAzYWFmZTgxZGIuLjQzNzBkNjgxODcyZDk1YzEw
YzBmNGU5NTllMTQ3NDM5YWQ1NzQ0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50
LmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6dXBkYXRlRHVyaW5n
UGFyc2luZygpCiAgICAgaWYgKCFtX2ltYWdlRWxlbWVudCkKICAgICAgICAgY3JlYXRlRG9jdW1l
bnRTdHJ1Y3R1cmUoKTsKIAotICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBs
b2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpKQorICAgIGlmIChSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSkKICAgICAg
ICAgbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCktPnVwZGF0ZUJ1ZmZlcigqYnVmZmVyKTsK
IAogICAgIGltYWdlVXBkYXRlZCgpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgSW1hZ2VEb2N1
bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKIHsKICAgICBpZiAoIXBhcnNlcigpLT5pc1N0b3BwZWQo
KSAmJiBtX2ltYWdlRWxlbWVudCkgewogICAgICAgICBDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2Ug
PSAqbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCk7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGRhdGEgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOworICAgICAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VE
YXRhKCk7CiAKICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIG11bHRpcGFydCBpbWFnZSwgbWFrZSBh
IGNvcHkgb2YgdGhlIGN1cnJlbnQgcGFydCwgc2luY2UgdGhlIHJlc291cmNlIGRhdGEKICAgICAg
ICAgLy8gd2lsbCBiZSBvdmVyd3JpdHRlbiBieSB0aGUgbmV4dCBwYXJ0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRl
eCBhN2NhNzE2MmQ3OTFlZDdmYmE4Y2M5MWMyMWEyY2YzYWY2ZTY5YTdlLi4xODc5M2ZmMDY2MzM4
ZmI2MGEzNGRlYzkwOWJjMmRkZDI4YmVhZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtODUwLDcgKzg1MCw3
IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJj
ZXB0UmVxdWVzdChsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhh
bmRsZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBu
ZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkK
ICAgICAgICAgbmV0d29ya0FnZW50LT5pbnRlcmNlcHRSZXNwb25zZShyZXNwb25zZSwgaWRlbnRp
ZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggOGU2NWM0ZWIxMDIzMzUyMWY0OGM3
ZjRiMTIwYWQyYzg5MDlhMDdiYS4uZDI5NTc4MTBkODM4MmM5MzUxZDVhOTNmMTQ0YWVkMTQ5M2Jj
YzY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaApAQCAtOTMsNyArOTMsNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwog
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xh
c3MgU2hhZG93Um9vdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBUaW1lckJhc2U7CiBjbGFzcyBXZWJLaXROYW1lZEZsb3c7CiBjbGFz
cyBXZWJTb2NrZXRDaGFubmVsOwpAQCAtMjM2LDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29u
c3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgaW50
ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik+JiYpOwotICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0
IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShj
b25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYpOwogCiAgICAgc3RhdGljIHZvaWQgYWRk
TWVzc2FnZVRvQ29uc29sZShQYWdlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KTsKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1l
c3NhZ2U+KTsKQEAgLTQ0MSw3ICs0NDEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHNo
b3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUlt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBz
dGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVz
b3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsK
LSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2
b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBzdGQ6OnVu
aXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwogCkBAIC0xMjg5LDcgKzEyODks
NyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVl
c3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgRgogICAgICAgICBpbnRlcmNlcHRSZXF1ZXN0SW1w
bCgqYWdlbnRzLCBsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi1pbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBm
cmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK2lubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUm
IGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikK
IHsKICAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRS
ZXNwb25zZShmcmFtZSwgcmVzcG9uc2UpKTsKICAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50cyhmcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCmluZGV4IDYxZTRiYzNi
YTAxOWVlMjVlNWM4YmMyMjFkZmY2MDc3ZWRkYjg2M2QuLmYwNjQwM2E2MjM0YjQyYjZhZDJhODBi
MDE5NGE1OTZkODlmNmU2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCkBAIC00NSw3ICs0NSw3
IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0
SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImIGxvCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjppbnRlcmNlcHRSZXF1ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFs
KGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJl
c291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxl
cikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25z
ZUludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpp
bnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UsIGlkZW50aWZpZXIsIFdURk1vdmUoaGFu
ZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbldlYktpdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCmluZGV4IGY3NjExNGNlOThmNDJhN2ZmOTA2YTQ4
ZDA0MjBiOTYzMDVkMzY5MTQuLjA3YjQyMWI1OWMxNTU1ZTFhMjkxZTE4ZWJiMjYyMjEyMmYxNjU4
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKQEAgLTM2LDIwICszNiwyMCBAQCBjbGFzcyBGcmFtZTsK
IGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVz
dChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29s
IHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXIm
LCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMg
dm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3Rh
dGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4p
PiYmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0
SW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0
aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3RJ
bnRlcm5hbChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Jik+JiYpOwotICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29u
c3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNl
SW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIH07CiAKIGlubGlu
ZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVx
dWVzdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
QEAgLTc2LDcgKzc2LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2Vi
S2l0OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2EKICAgICBpbnRlcmNlcHRS
ZXF1ZXN0SW50ZXJuYWwobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShjb25z
dCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCitp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3Bv
bnNlKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldl
YktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAgaW50
ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbCgqZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZN
b3ZlKGhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwCmluZGV4IDY3N2M1YjgxMmQ0ZjA0NzIyOWQ3NDVmZTQ3MzU4NjQzMGZl
MGZmNzMuLjM5YjAxMWNmMDZmN2YzODUzMjQzZTBhNzYzYTNiMWQ0NTQ5MDQxNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAt
MzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yTmV0d29ya0FnZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIK
ICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KIApAQCAtNjMsOCArNjIsOCBAQCB1bnNpZ25l
ZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KCkKICAg
ICB1bnNpZ25lZCByZXN1bHQgPSAwOwogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNT
RVJUKCFoYXNDb250ZW50KCkpOwotICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUo
KTsKLSAgICAgICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgcmVzdWx0ID0gbV9k
YXRhQnVmZmVyLnNpemUoKTsKKyAgICAgICAgbV9kYXRhQnVmZmVyLnJlc2V0KCk7CiAgICAgfQog
CiAgICAgaWYgKGhhc0NvbnRlbnQoKSkgewpAQCAtODEsMzYgKzgwLDM3IEBAIHVuc2lnbmVkIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgpCiAgICAgcmV0
dXJuIHJlbW92ZUNvbnRlbnQoKTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVz
b3VyY2VEYXRhOjpoYXNEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gISFtX2RhdGFCdWZmZXI7
Cit9CisKIHNpemVfdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVu
Z3RoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5z
aXplKCkgOiAwOworICAgIHJldHVybiBtX2RhdGFCdWZmZXIuc2l6ZSgpOwogfQogCiB2b2lkIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkp
OwotICAgIGlmICghbV9kYXRhQnVmZmVyKQotICAgICAgICBtX2RhdGFCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZGF0
YUJ1ZmZlci0+YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YUJ1ZmZlci5hcHBl
bmQoZGF0YSwgZGF0YUxlbmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFz
Q29udGVudCgpKTsKIAotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXpl
KCk7CisgICAgYXV0byBidWZmZXIgPSBtX2RhdGFCdWZmZXIudGFrZUFzQ29udGlndW91cygpOwor
ICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9kZWNv
ZGVyKSB7CiAgICAgICAgIG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRl
bnQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+ZGF0YSgpLCBkYXRh
TGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChi
dWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9iYXNl
NjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9TdHJp
bmcobV9kYXRhQnVmZmVyLT5kYXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NvbnRlbnQg
PSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAg
fQogCi0gICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKLQogICAgIHJldHVybiBtX2NvbnRlbnQu
c2l6ZUluQnl0ZXMoKSAtIGRhdGFMZW5ndGg7CiB9CiAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgQ2FjaGVkUmVzbwogICAgIHJlc291cmNlRGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2Uo
Y2FjaGVkUmVzb3VyY2UpOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRSZXNv
dXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKK3ZvaWQgTmV0
d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNl
RGF0YSA9IHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogICAgIGlmICghcmVz
b3VyY2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaAppbmRleCBlZmEwMDA1M2FlMTE3YTU0ZGZiMTI2ZDEyZjlhYmVlN2RhNTkwOGQ3Li5k
YWFlNWZlNGEzMWUzMTU5MzYzNzkwNDIzZjVmYmQzMzcwYzVjZDM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtMzAsNiArMzAsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKKyNpbmNs
dWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgpAQCAtNDAsNyArNDEsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VzRGF0YSB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC04OCw4ICs4OCw4IEBAIHB1YmxpYzoKICAgICAgICAgUmVmUHRyPFRleHRS
ZXNvdXJjZURlY29kZXI+IGRlY29kZXIoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXIuY29weVJl
ZigpOyB9CiAgICAgICAgIHZvaWQgc2V0RGVjb2RlcihSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rl
cj4mJiBkZWNvZGVyKSB7IG1fZGVjb2RlciA9IFdURk1vdmUoZGVjb2Rlcik7IH0KIAotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5j
b3B5UmVmKCk7IH0KLSAgICAgICAgdm9pZCBzZXRCdWZmZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KKyAgICAgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
LmNvcHlSZWYoKTsgfQorICAgICAgICB2b2lkIHNldEJ1ZmZlcihSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KIAog
ICAgICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmljYXRl
SW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOyB9CiAgICAgICAgIHZvaWQg
c2V0Q2VydGlmaWNhdGVJbmZvKGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiYg
Y2VydGlmaWNhdGVJbmZvKSB7IG1fY2VydGlmaWNhdGVJbmZvID0gY2VydGlmaWNhdGVJbmZvOyB9
CkBAIC0xMDMsMTAgKzEwMywxMCBAQCBwdWJsaWM6CiAgICAgICAgIFdhbGxUaW1lIHJlc3BvbnNl
VGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVRpbWVzdGFtcDsgfQogICAgICAg
ICB2b2lkIHNldFJlc3BvbnNlVGltZXN0YW1wKFdhbGxUaW1lIHRpbWUpIHsgbV9yZXNwb25zZVRp
bWVzdGFtcCA9IHRpbWU7IH0KIAotICAgICAgICBib29sIGhhc0J1ZmZlcmVkRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBib29sIGhhc0J1ZmZlcmVkRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIGhhc0RhdGEoKTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgYm9v
bCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CisgICAgICAgIGJvb2wg
aGFzRGF0YSgpIGNvbnN0OwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCgpIGNvbnN0OwogICAg
ICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5n
dGgpOwogICAgICAgICB1bnNpZ25lZCBkZWNvZGVEYXRhVG9Db250ZW50KCk7CkBAIC0xMTksOCAr
MTE5LDggQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwogICAg
ICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29k
ZXI+IG1fZGVjb2RlcjsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhQnVmZmVy
OwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICAgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBtX2RhdGFCdWZmZXI7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICAgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUlu
Zm8+IG1fY2VydGlmaWNhdGVJbmZvOwogICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9jYWNoZWRS
ZXNvdXJjZSB7IG51bGxwdHIgfTsKICAgICAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJj
ZVR5cGUgbV90eXBlIHsgSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlIH07CkBAIC0x
NDQsNyArMTQ0LDcgQEAgcHVibGljOgogICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5YmVBZGRS
ZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICB2b2lkIG1heWJlRGVjb2RlRGF0YVRvQ29udGVudChj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShjb25z
dCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzb3VyY2UqKTsKLSAgICB2b2lkIGFkZFJlc291
cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOworICAgIHZvaWQgYWRkUmVz
b3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwogICAg
IFJlc291cmNlRGF0YSBjb25zdCogZGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAg
UmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRhRm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBW
ZWN0b3I8U3RyaW5nPiByZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwCmluZGV4IDRlM2RhZjFhZGU0NzMxODc5NWJhYmFmODUyYzIzNjJiMzk5NDli
ZGQuLjIyM2E2NzY3YmUyNzFlZTRkMjJkZWQxZDZiZTYwY2E3MDc4MTdjODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50
OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIEZ1bmN0aW9uPHZvCiAg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RJbnRlcmNlcHRlZChyZXF1ZXN0SWQsIGJ1
aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci5yZXF1ZXN0KCkpKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50
ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhh
bmRsZXIpCiB7CiAgICAgQVNTRVJUKG1fZW5hYmxlZCk7CiAgICAgQVNTRVJUKG1faW50ZXJjZXB0
aW9uRW5hYmxlZCk7CkBAIC0xMjQzLDcgKzEyNDMsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhSZXNwb25zZShjb25z
dAogICAgICAgICBvdmVycmlkZVJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6Q29udGVudFR5cGUsIG92ZXJyaWRlUmVzcG9uc2UubWltZVR5cGUoKSk7CiAgICAgfQog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGE7CiAgICAgaWYgKGJhc2U2NEVuY29kZWQp
IHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVudCk7CiAgICAgICAg
IGlmICghYnVmZmVyKQpAQCAtMTI3MSw3ICsxMjcxLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3Bv
bnMKICAgICBpZiAobG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJsZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBhbHJl
YWR5IGJlZW4gcHJvY2Vzc2VkIl9zKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgaWYgKGJhc2U2
NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVudCk7
CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTQwNywxMiArMTQwNywxMiBAQCBib29sIEluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSwgU3RyaQogICAgICAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRU
cmVhdEFzVGV4dChyZXNvdXJjZS5taW1lVHlwZSgpKSkgewogICAgICAgICAgICAgYXV0byBkZWNv
ZGVyID0gSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNvdXJjZS5t
aW1lVHlwZSgpLCByZXNvdXJjZS5yZXNwb25zZSgpLnRleHRFbmNvZGluZ05hbWUoKSk7CiAgICAg
ICAgICAgICAqYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICAgICAgKnJlc3VsdCA9IGRl
Y29kZXItPmRlY29kZUFuZEZsdXNoKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Cisg
ICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goYnVmZmVyLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSB0cnVlOwotICAg
ICAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlVG9TdHJpbmcoYnVmZmVyLT5kYXRhKCksIGJ1ZmZl
ci0+c2l6ZSgpKTsKKyAgICAgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZVRvU3RyaW5nKGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4IDhmNmZiY2MyOTNhZWJmOGI5
ZDVjOTQ1ZDI4MjlhMTUyN2I3NGJjN2YuLjZiY2Q4N2RkY2Q4YjA0NDEzMDhkMWQwMWVjYTZiMGU2
ZGExNDEzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaApAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAg
ICBib29sIHdpbGxJbnRlcmNlcHQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgYm9vbCBz
aG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIGJvb2wg
c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZv
aWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICB2b2lkIGludGVyY2VwdFJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPik+JiYpOwogICAgIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNv
dXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwog
CiAgICAgdm9pZCBzZWFyY2hPdGhlclJlcXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4
cHJlc3Npb24mLCBSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpT
ZWFyY2hSZXN1bHQ+PiYpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZSk7CiAgICAgICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAgUGVuZGluZ0ludGVy
Y2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIG9yaWdpbmFsUmVzcG9uc2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgUGVuZGluZ0ludGVyY2Vw
dFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIG9yaWdpbmFsUmVzcG9uc2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgICAgICA6IG1f
b3JpZ2luYWxSZXNwb25zZShvcmlnaW5hbFJlc3BvbnNlKQogICAgICAgICAgICAgLCBtX2NvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICB7IH0KQEAg
LTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmVzcG9uZChtX29yaWdpbmFs
UmVzcG9uc2UsIG51bGxwdHIpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCByZXNwb25kKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
KQorICAgICAgICB2b2lkIHJlc3BvbmQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhKQogICAgICAgICB7CiAgICAgICAg
ICAgICBBU1NFUlQoIW1fcmVzcG9uZGVkKTsKICAgICAgICAgICAgIGlmIChtX3Jlc3BvbmRlZCkK
QEAgLTIxNSw3ICsyMTUsNyBAQCBwcml2YXRlOgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVz
b3VyY2VSZXNwb25zZSBtX29yaWdpbmFsUmVzcG9uc2U7Ci0gICAgICAgIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4g
bV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4gbV9j
b21wbGV0aW9uSGFuZGxlcjsKICAgICAgICAgYm9vbCBtX3Jlc3BvbmRlZCB7IGZhbHNlIH07CiAg
ICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDliNWNhZDk1OWE4ZTZmMmMyYmY3MGUxYWVlMTQyODc0
NTlkMDY2MTIuLmE0ZmZkMTM2MWNkZGU1YWI3ZDk3M2NkMDBkMTlhOTEwYWU5ZWQyOWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAKQEAgLTEwMCwxNSArMTAwLDE1IEBAIHN0YXRpYyBib29sIGRlY29kZUJ1ZmZlcihj
b25zdCB1aW50OF90KiBidWZmZXIsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4CiAK
IGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFt
ZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+
bWFpblJlc291cmNlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0
YSgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0YUNvbnRlbnQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwg
cmVzdWx0KTsKKyAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1
bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCi1ib29s
IEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhC
YXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQorYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNo
YXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwg
U3RyaW5nKiByZXN1bHQpCiB7Ci0gICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZl
ci0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5j
b2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOworICAgIHJldHVybiBkYXRhQ29u
dGVudChidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIs
IGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2
NEVuY29kZSwgcmVzdWx0KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250
ZW50KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKQEAg
LTE1Niw3ICsxNTYsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50
KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEZyYQogICAgIGlmICghbG9hZGVy
KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBib29sIHN1Y2Nl
c3MgPSBmYWxzZTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmws
IGxvYWRlci0+dXJsKCkpKSB7CiAgICAgICAgICpiYXNlNjRFbmNvZGVkID0gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
aAppbmRleCBiNTFhZGRiMWJkOGYyY2NlNjk1NjA3OTljZDFkOTUyZDJkZTQyODM4Li4zZDVlNTY2
ZGJlMGM1ZWMxMWQ5ZThkZjY3ZmNmMGE3MDk4OGEyZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTQ5LDcgKzQ5
LDcgQEAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsKIGNs
YXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJPYmplY3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQgZmlu
YWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpQYWdlQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0
b3JQYWdlQWdlbnQpOwpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIE90aGVyUmVz
b3VyY2UsCiAgICAgfTsKIAotICAgIHN0YXRpYyBib29sIHNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29s
IHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKKyAgICBzdGF0aWMgYm9vbCBzaGFy
ZWRCdWZmZXJDb250ZW50KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBT
dHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiBy
ZXN1bHQpOwogICAgIHN0YXRpYyBWZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPiBjYWNoZWRSZXNvdXJj
ZXNGb3JGcmFtZShGcmFtZSopOwogICAgIHN0YXRpYyB2b2lkIHJlc291cmNlQ29udGVudChJbnNw
ZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIEZyYW1lKiwgY29uc3QgVVJMJiwgU3RyaW5n
KiByZXN1bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwogICAgIHN0YXRpYyBTdHJpbmcgc291cmNl
TWFwVVJMRm9yUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b250ZW50RmlsdGVyLmNwcAppbmRleCBiNGU2YTNhNTNiNGMwYzBkYTFjMzE3MmRkNDJjYWU2YThj
ZDIxZjdhLi42YWU1MjY1OTdjZDI4NjMxYmU3OTUwZmMzMzUzNmY4ZjM0N2Q3YWY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9p
ZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSkKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJU
KHJlc291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpC
dWZmZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZmZXIgPSByZXNvdXJjZS5yZXNv
dXJjZUJ1ZmZlcigpKQotICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVu
dEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsK
KyAgICAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3Vy
Y2VCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VCdWZmZXItPnNpemUo
KSk7CiB9CiAKIHN0YXRpYyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKQEAgLTI3Niw3ICsy
NzYsNyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUo
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgQVNTRVJUKHdpbGxIYW5kbGVQcm92
aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBy
ZXBsYWNlbWVudERhdGEgeyBtX2Jsb2NraW5nQ29udGVudEZpbHRlci0+cmVwbGFjZW1lbnREYXRh
KCkgfTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRh
IHsgbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXItPnJlcGxhY2VtZW50RGF0YSgpIH07CiAgICAgUmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZSB7IFVSTCgpLCAidGV4dC9odG1sIl9zLCBzdGF0aWNfY2Fz
dDxsb25nIGxvbmc+KHJlcGxhY2VtZW50RGF0YS0+c2l6ZSgpKSwgIlVURi04Il9zIH07CiAgICAg
U3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEgeyBXVEZNb3ZlKHJlcGxhY2VtZW50RGF0YSks
IGVycm9yLmZhaWxpbmdVUkwoKSwgcmVzcG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlz
dG9yeVZpc2liaWxpdHk6OkhpZGRlbiB9OwogICAgIFNldEZvclNjb3BlPGJvb2w+IGxvYWRpbmdC
bG9ja2VkUGFnZSB7IG1faXNMb2FkaW5nQmxvY2tlZFBhZ2UsIHRydWUgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGNmNmNjZjJiZDA4OTI1MGM2MDNmZDA0
Yjc0YzNlYzhjMGU0OWM0ZjEuLjBhYjRlMTRmOWNlMzVhMWNjZjZkZDZiY2U4MzAyNDE2YzFlY2Rl
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMjA4LDcg
KzIwOCw3IEBAIERvY3VtZW50TG9hZGVyOjp+RG9jdW1lbnRMb2FkZXIoKQogI2VuZGlmCiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhKCkg
Y29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBEb2N1bWVudExvYWRlcjo6bWFp
blJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxp
ZCgpKQogICAgICAgICByZXR1cm4gbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPmNvcHkoKTsK
QEAgLTE2MDUsMTEgKzE2MDUsMTEgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVB
cmNoaXZlKCkKICAgICBhZGRBbGxBcmNoaXZlUmVzb3VyY2VzKCptX2FyY2hpdmUpOwogICAgIEFT
U0VSVChtX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpKTsKICAgICBhdXRvJiBtYWluUmVzb3VyY2Ug
PSAqbV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKTsKLSAgICBtX3BhcnNlZEFyY2hpdmVEYXRhID0g
Jm1haW5SZXNvdXJjZS5kYXRhKCk7CisgICAgbV9wYXJzZWRBcmNoaXZlRGF0YSA9IG1haW5SZXNv
dXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBtX3dyaXRlci5zZXRNSU1FVHlwZSht
YWluUmVzb3VyY2UubWltZVR5cGUoKSk7CiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQo
KSk7Ci0gICAgY29tbWl0RGF0YShtYWluUmVzb3VyY2UuZGF0YSgpLmRhdGEoKSwgbWFpblJlc291
cmNlLmRhdGEoKS5zaXplKCkpOworICAgIGNvbW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0YS0+
ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiAj
ZW5kaWYKIH0KQEAgLTE2NjgsNyArMTY2OCw3IEBAIEFyY2hpdmVSZXNvdXJjZSogRG9jdW1lbnRM
b2FkZXI6OmFyY2hpdmVSZXNvdXJjZUZvclVSTChjb25zdCBVUkwmIHVybCkgY29uc3QKIAogUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZSgpIGNvbnN0
CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IG1haW5SZXNvdXJjZURh
dGEoKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOwogICAgIGF1dG8mIHJlc3BvbnNlID0gdGhpcy0+cmVzcG9uc2UoKTsKQEAgLTIyNTIsOCAr
MjI1Miw4IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFy
dENvbnRlbnQoKQogCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAg
bV9jb21taXR0ZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURh
dGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPmRh
dGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiByZXNvdXJjZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CisgICAgY29tbWl0TG9h
ZChyZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5z
aXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKQEAg
LTIyODksNyArMjI4OSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmco
KQogICAgIG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmdldExvYWREZWNpc2lvbkZvckljb25z
KGljb25EZWNpc2lvbnMpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVj
aXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lz
aW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBp
Y29uID0gbV9pY29uc1BlbmRpbmdMb2FkRGVjaXNpb24udGFrZShsb2FkSWRlbnRpZmllcik7CiAK
QEAgLTIzMTAsNyArMjMxMCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNp
c2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50CiAgICAgcmF3SWNv
bkxvYWRlci0+c3RhcnRMb2FkaW5nKCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlz
aGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYgbG9hZGVyLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikK
K3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYgbG9h
ZGVyLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgLy8gSWYgdGhlIERv
Y3VtZW50TG9hZGVyIGhhcyBkZXRhY2hlZCBmcm9tIGl0cyBmcmFtZSwgYWxsIGljb24gbG9hZHMg
c2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNhbmNlbGxlZC4KICAgICBBU1NFUlQobV9mcmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGY3ZjNmMzg0NGYxODQ0
N2JlOGRkN2I4MmQzYTQ0MzUwMDIyMTY3NjIuLjRkNGQzMDg1Y2FlODdlOWU0MmFiMzNjMjkzMTM0
YTlhMGJhNjM0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03
NSw2ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFzcyBDYWNo
ZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgQ29udGVu
dEZpbHRlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7
CiBjbGFzcyBGb3JtU3RhdGU7CiBjbGFzcyBGcmFtZTsKQEAgLTgzLDcgKzg0LDcgQEAgY2xhc3Mg
SWNvbkxvYWRlcjsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBQcmV2aWV3Q29udmVydGVyOwogY2xhc3Mg
UmVzb3VyY2VMb2FkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogY2xhc3MgU1dDbGllbnRDb25uZWN0aW9uOwogY2xhc3MgU3VicmVzb3VyY2VM
b2FkZXI7CiBjbGFzcyBTdWJzdGl0dXRlUmVzb3VyY2U7CkBAIC0xNzEsNyArMTcyLDcgQEAgcHVi
bGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyKCkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3VicmVzb3VyY2VMb2FkZXIqIG1haW5SZXNvdXJjZUxv
YWRlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1h
aW5SZXNvdXJjZURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIAogICAgIERv
Y3VtZW50V3JpdGVyJiB3cml0ZXIoKSBjb25zdCB7IHJldHVybiBtX3dyaXRlcjsgfQogCkBAIC0z
OTIsOCArMzkzLDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0SWNvbkxvYWRp
bmcoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24o
Ym9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU2hhcmVkQnVmZmVyKik+JiYpOwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihJ
Y29uTG9hZGVyJiwgU2hhcmVkQnVmZmVyKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRH
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJik7
CisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKik7CiAKICAgICBjb25zdCBWZWN0b3I8TGlua0ljb24+JiBsaW5rSWNvbnMoKSBj
b25zdCB7IHJldHVybiBtX2xpbmtJY29uczsgfQogCkBAIC02MjEsNyArNjIyLDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgeyBmYWxzZSB9OwogCiAg
ICAgSGFzaE1hcDx1aW50NjRfdCwgTGlua0ljb24+IG1faWNvbnNQZW5kaW5nTG9hZERlY2lzaW9u
OwotICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPEljb25Mb2FkZXI+LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciopPj4gbV9pY29uTG9hZGVyczsKKyAgICBIYXNoTWFwPHN0
ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKik+PiBtX2ljb25Mb2FkZXJzOwogICAgIFZlY3RvcjxMaW5rSWNvbj4g
bV9saW5rSWNvbnM7CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGVkZWNlMTJjZDdhOTZmZWI5MzVjMzM0NjZjNDZj
YWUwMjBlMmYzYWMuLjc1YWUyODRjMmMzNGZkZDg5ZTg1NjRkYTQzOWRhNzcyNWFmYmM4ZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC01OSw2ICs1OSw3IEBAIGNsYXNzIENh
Y2hlZEZyYW1lQmFzZTsKIGNsYXNzIENhY2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsK
IGNsYXNzIENocm9tZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVdyYXBwZXJXb3Js
ZDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBAIC03Niw3ICs3Nyw2
IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwotY2xhc3MgU2hh
cmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGVudW0gY2xhc3MgQ2FjaGVQb2xp
Y3kgOiB1aW50OF90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApp
bmRleCA0ZmQ2MzdhOTAxNGE1ZDQxYTIyNmVlNDU5MTdiNmIzZTlhNzkwZWJiLi5lZTlmM2QwYzk4
NGQ0NTVjYmI5MWI0NjBjMWJjMTI4OThkMTIzNjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtOTgsNyArOTgsNyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRs
ZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNzIFdpZGdldDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAppbmRleCBhZWY2NjhiZDYzZWQ1ZmNkNDVl
NjFlOWQxZjEwN2NmYjZhZWYyNjRiLi4yOWQyZTNmNDYxNDBhYWE1MTE2MGU2YTI4NTYyZjM3MGUz
NzFlYjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3ku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtNTEsNyAr
NTEsNyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJj
ZUxvYWRlcjsKIAogc3RydWN0IEZldGNoT3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCmluZGV4IDYzMzc1NTk2MzIw
MDE0NjM4Mjg5ZTI4MjYwNGM1NWIwYWY0NDUzMTMuLjYwNDNhYzliZTI2N2VhNGZiYzcxZTExMThi
OTA3OTE1NWUzOTE1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcApAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9pZCBOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQgbGUKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwg
bnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQg
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUp
CiB7CiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZl
ciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUp
Cit2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIFJlZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKaW5kZXggNDhiYjIxNTNjOTNmMmRjNzU0
ZTIwNzMyMjUyYzA1MDljZjcwNGE0MS4uYjUxNzRlZGM5NGI5OTIzOTAyMDVmMGZhZDQ1MmVhNWFj
Mzg3ODkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVk
aXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+
JiYgY2FsbGJhY2spIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29t
cGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3Qg
dWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKIApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbENhbmNl
bChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcg
bG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKTsKIAogICAgIHZvaWQgbm90aWZ5RG9uZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCmluZGV4IGM2Mjc3Njg1
OGE2ZGM1YWZmZDM2ZGM5ZTc4NWM4YmQyNDcyYmI3NGQuLmQ5NGI3MDAwNzQxY2Q5MTJiOTE3M2Uy
YjM3NDZkNGRhOGIzNjhhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhSZXNvdXJj
ZUNyeXB0b2dyYXBoaWNEaWcKICAgICByZXR1cm4geyBhbGdvcml0aG0sIGNyeXB0b0RpZ2VzdC0+
Y29tcHV0ZUhhc2goKSB9OwogfQogCi1SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRv
Z3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6
OkFsZ29yaXRobSBhbGdvcml0aG0sIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZmZXIo
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgYXV0byBjcnlwdG9EaWdlc3Qg
PSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGFsZ29y
aXRobSkpOwogICAgIGlmIChidWZmZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaAppbmRleCBhZWEzZGM1N2M4NzgzMTMwMTNh
NWIxNmM5MzliNzc0ZWQ0ODQzMjRjLi44M2I4NjEzY2ZkYTIzMjlhZTMwYmJmNmFiYzE0Yjk5ZDQ0
MjM3YjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdC5oCkBAIC0zNCw3ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENhY2hlZFJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCB7
CiAgICAgZW51bSBjbGFzcyBBbGdvcml0aG0gewpAQCAtNzUsNyArNzUsNyBAQCBzdGQ6Om9wdGlv
bmFsPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlRW5jb2RlZENyeXB0
b2dyYXBoaWNEaWdlcwogCiBzdGQ6Om9wdGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dD4gZGVjb2RlRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChjb25zdCBFbmNvZGVk
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Jik7CiAKLVJlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBjb25zdCBTaGFyZWRCdWZmZXIqKTsKK1Jlc291cmNlQ3J5
cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291
cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKik7CiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2Vz
dEZvckJ5dGVzKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBjb25zdCB2
b2lkKiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IGFhODViYjRkM2NhODcxNDViYjdhODZmNjQ2NjhlNDk1MTc2
YWMyMzUuLjZkZWJiMjU4OGEzZTgyYjIxYzYxZDdlOGYzNmU0ZjRiYmJhMjVlNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNTAsNyArNTAsNiBAQAogI2lu
Y2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC0xMTgsNyArMTE3LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAKICAgICBtX2lkZW50aWZpZXIgPSB7IH07
CiAKLSAgICBtX3Jlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgbV9yZXNvdXJjZURhdGEucmVz
ZXQoKTsKICAgICBtX2RlZmVycmVkUmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwogfQogCkBA
IC0xODksNyArMTg4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6aW5pdChSZXNvdXJjZVJlcXVl
c3QmJiBjbGllbnRSZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2kKICAgICB9KTsKIH0KIAot
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lk
IFJlc291cmNlTG9hZGVyOjpkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiB7CiAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oKSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCkBAIC0zMTgsNyArMzE3LDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeShEYXRhQnVmZmVyaW5n
UG9saWN5IGRhdGFCdWZmZXJpbmdQb2wKIAogICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1ZmZl
cmVkIGRhdGEKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9s
aWN5OjpEb05vdEJ1ZmZlckRhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsK
KyAgICAgICAgbV9yZXNvdXJjZURhdGEucmVzZXQoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRl
cjo6d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKQEAgLTMyOSwyOSArMzI4LDI5IEBA
IHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSgpCiAg
ICAgICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRk
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmVk
QnVmZmVyKiBidWZmZXIsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJl
c291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIERhdGFQYXlsb2FkVHlw
ZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgaWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9s
aWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKCFtX3Jlc291cmNlRGF0YSB8fCBkYXRhUGF5bG9hZFR5cGUgPT0gRGF0
YVBheWxvYWRXaG9sZVJlc291cmNlKSB7Ci0gICAgICAgIGlmIChidWZmZXIpCi0gICAgICAgICAg
ICBtX3Jlc291cmNlRGF0YSA9IGJ1ZmZlcjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9y
ZXNvdXJjZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIAorICAgIGlmIChkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBh
eWxvYWRXaG9sZVJlc291cmNlKQorICAgICAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOworCiAg
ICAgaWYgKGJ1ZmZlcikKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZCgqYnVmZmVyKTsK
KyAgICAgICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKCpidWZmZXIpOwogICAgIGVsc2UKLSAgICAg
ICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgICAgICBtX3Jlc291
cmNlRGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKK30KKworY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fcmVzb3VyY2VEYXRhLmdldCgpLmdldCgpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVy
OjpjbGVhclJlc291cmNlRGF0YSgpCiB7CiAgICAgaWYgKG1fcmVzb3VyY2VEYXRhKQotICAgICAg
ICBtX3Jlc291cmNlRGF0YS0+Y2xlYXIoKTsKKyAgICAgICAgbV9yZXNvdXJjZURhdGEuZW1wdHko
KTsKIH0KIAogYm9vbCBSZXNvdXJjZUxvYWRlcjo6aXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0
CkBAIC01NTEsMTQgKzU1MCwxNCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbAogICAgIGRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0
aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXls
b2FkVHlwZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1v
dmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZv
aWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBl
KQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQogewotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGdldCBk
YXRhK2xlbmd0aCAqT1IqIGEgU2hhcmVkQnVmZmVyLgorICAgIC8vIFRoaXMgbWV0aG9kIHNob3Vs
ZCBvbmx5IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KICAg
ICBBU1NFUlQoIWJ1ZmZlciB8fCAoIWRhdGEgJiYgIWxlbmd0aCkpOwogCiAgICAgLy8gUHJvdGVj
dCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nl
c3NpbmcgY2FuIGRvCkBAIC01NzEsNyArNTcwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgK
ICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNw
ZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAgLy8gQ291bGQgYmUgYW4g
aXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZpbGUuCiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9h
ZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFt
ZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlz
LCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgp
IDogbGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAg
IGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyID8g
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXIt
PnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0aCkpOwog
fQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpAQCAtNzM1LDcgKzczNCw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduCiAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoLCBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGRpZFJlY2VpdmVCdWZm
ZXIoV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRmZDJiZjBiYmIz
YjFiZDIxNTQ1ZGI1MmMyZTFjYTY0ZWU0MmI5MTcuLjcwZWEyMjBkYzE3YzczNzZlZDY2MGZhN2E2
MWE4NGUzMWMzMzRjYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBA
IC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJUeXBlcy5oIgogI2luY2x1
ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTY2LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGluaXQoUmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogCi0gICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVh
bCB2b2lkIHN0YXJ0TG9hZGluZygpCkBAIC05OCw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcmVsZWFzZVJlc291cmNlcygpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogCi0gICAgU2hhcmVkQnVm
ZmVyKiByZXNvdXJjZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKTsg
fQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0
OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURhdGEoKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wg
aXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpAQCAtMTA3LDcgKzEwOCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2Vu
dCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYpOwogCkBAIC0xNjYsNyArMTY3LDcgQEAgcHJvdGVjdGVkOgog
CiAgICAgYm9vbCB3YXNDYW5jZWxsZWQoKSBjb25zdCB7IHJldHVybiBtX2NhbmNlbGxhdGlvblN0
YXR1cyA+PSBDYW5jZWxsZWQ7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihj
b25zdCB1aW50OF90KiwgdW5zaWduZWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpOwogICAgIAogICAgIHZvaWQgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJQb2xpY3kg
cmVmZXJyZXJQb2xpY3kpIHsgbV9vcHRpb25zLnJlZmVycmVyUG9saWN5ID0gcmVmZXJyZXJQb2xp
Y3k7IH0KICAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSgpIGNvbnN0IHsgcmV0dXJu
IG1fb3B0aW9ucy5yZWZlcnJlclBvbGljeTsgfQpAQCAtMTkxLDcgKzE5Miw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAK
LSAgICB2b2lkIGFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIFNoYXJl
ZEJ1ZmZlciosIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29u
c3QgdWludDhfdCosIHVuc2lnbmVkLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgRGF0YVBheWxv
YWRUeXBlKTsKICAgICB2b2lkIGxvYWREYXRhVVJMKCk7CiAgICAgdm9pZCBmaW5pc2hOZXR3b3Jr
TG9hZCgpOwogCkBAIC0yMDIsNyArMjAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXNw
b25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVp
bnQ4X3QqLCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYm
LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKICAgICB2b2lkIHdhc0Jsb2NrZWQoUmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZTsKQEAg
LTIyNyw3ICsyMjgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVz
dDsKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIEJlZm9yZSByZWRp
cmVjdHMuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9yZXNvdXJjZURhdGE7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBtX3Jlc291cmNlRGF0YTsKICAgICAKICAgICBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAppbmRleCA0NmNlZmJkZjlkYTE3ODk5N2VkY2I5ZjM1NDRmNDg4NGI2
MGE2ZWZlLi4zN2QwYmI4MjFhYmQ4NmE5YjU2MDZlMTI3ZWZjOTQxMmE1MWJiMWE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTUzMCw3ICs1MzAs
NyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbgogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
ZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBl
KTsKIH0KIAotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsK
ICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBpZiAoYXV0byBwcmV2aWV3TG9hZGVyID0gbV9wcmV2
aWV3TG9hZGVyLmdldCgpKSB7CkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBs
b25nIGUKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVm
ZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgU3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQg
U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9h
ZFR5cGUpCiB7CiAgICAgQVNTRVJUKG1fcmVzb3VyY2UpOwogCkBAIC01NjEsNyArNTYxLDcgQEAg
dm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VEYXRhID0g
dGhpcy0+cmVzb3VyY2VEYXRhKCkpCiAgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVCdWZm
ZXIoKnJlc291cmNlRGF0YSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcmVzb3VyY2Ut
PnVwZGF0ZURhdGEoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRh
KGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVy
ID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAppbmRleCAzNzIzYjZiOWFiOWZkZGFhYTU1NzRiZmIw
ZTZmMzhjZWQ3YWVmYjc1Li44MzJjOWYwZTczZDM4NDY0YTc5NWY0MDM4NjBmNzljMzRlNzNiYzdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApAQCAtNzQsNyAr
NzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25n
IGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQg
d2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CkBAIC05Miw3ICs5Miw3
IEBAIHByaXZhdGU6CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiBjaGVja1Jlc3BvbnNlQ3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBFeHBl
Y3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVkaXJlY3Rpb25Dcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcmV2aW91c1JlcXVlc3QsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpOwogCi0gICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlKTsKIAogICAgIHZvaWQgbm90aWZ5RG9uZShMb2FkQ29tcGxldGlvblR5
cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCmluZGV4IGY2NjI5MmUz
MWNiZWI0MjY0MzBhODMyYWRlZjQyOTkxY2I1NzQzNmUuLmE4YTQ5YjQ3ZjkyNzM0Mjc0YmE0Y2Vh
YmMxNzA3ZmVmYTdiNjY0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5o
CkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAg
ICB9CiAKLSAgICAgICAgU3Vic3RpdHV0ZURhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBjb250
ZW50LCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9y
eSkKKyAgICAgICAgU3Vic3RpdHV0ZURhdGEoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgY29udGVudCwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNob3VsZFJldmVhbFRvU2Vzc2lv
bkhpc3RvcnkpCiAgICAgICAgICAgICA6IG1fY29udGVudChXVEZNb3ZlKGNvbnRlbnQpKQogICAg
ICAgICAgICAgLCBtX2ZhaWxpbmdVUkwoZmFpbGluZ1VSTCkKICAgICAgICAgICAgICwgbV9yZXNw
b25zZShyZXNwb25zZSkKQEAgLTU0LDE0ICs1NCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudCAhPSBudWxscHRy
OyB9CiAgICAgICAgIGJvb2wgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSA9PSBTZXNzaW9uSGlzdG9yeVZp
c2liaWxpdHk6OlZpc2libGU7IH0KIAotICAgICAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGNvbnRl
bnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQuZ2V0KCk7IH0KKyAgICAgICAgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogY29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudC5n
ZXQoKTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNwb25zZS5taW1lVHlwZSgpOyB9CiAgICAgICAgIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCk7IH0KICAg
ICAgICAgY29uc3QgVVJMJiBmYWlsaW5nVVJMKCkgY29uc3QgeyByZXR1cm4gbV9mYWlsaW5nVVJM
OyB9CiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNwb25zZTsgfQogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBtX2NvbnRlbnQ7CiAgICAgICAgIFVSTCBtX2ZhaWxpbmdVUkw7CiAgICAgICAg
IFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICAgICAgU2Vzc2lvbkhpc3RvcnlWaXNp
YmlsaXR5IG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSB7IFNlc3Npb25IaXN0b3J5Vmlz
aWJpbGl0eTo6SGlkZGVuIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
c3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291
cmNlLmgKaW5kZXggNTk2NjRiNTg1NGY4NWIwMmNkZjM0OTAyMGEwZWZmMTNlYjc4ODg3OS4uY2Yy
ZGUwYzYyZDk1ZjMzMjViNDJiNDZlMjQwMzc3NDQxMDc0MmEwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAtMzcsMTIgKzM3LDE0IEBAIHB1YmxpYzoK
IAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7
IH0KLSAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJl
bmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihtX2RhdGEpOyB9CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9CisgICAgdm9pZCBhcHBl
bmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRhdGEs
IGxlbmd0aCk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCi0gICAg
dmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVs
aXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEtPmNvcHkoKSk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxp
dmVyUmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHByb3Rl
Y3RlZDoKLSAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNl
JiYgcmVzcG9uc2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKKyAgICBTdWJzdGl0dXRlUmVz
b3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiAgICAgICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQog
ICAgICAgICAsIG1fcmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpCiAgICAgICAgICwgbV9kYXRh
KFdURk1vdmUoZGF0YSkpCkBAIC01Miw3ICs1NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAg
ICAgVVJMIG1fdXJsOwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWY8
U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGE7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDg5ZjNiMGYx
ZGMzOWQ0MGE1NjM4NzhhZTU1Zjc2YzY3MGE3MTUwOTEuLjAzNmVmZDIwZTQ5NjMwMGNmOGM5ZTdl
NzkwMzE3ZTAxZGU1YmFmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAg
dm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAg
ICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgYXV0byBtYW5pZmVzdCA9IHBhcnNlQXBwbGljYXRp
b25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+cmVzcG9u
c2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1fbWFu
aWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7CisgICAgYXV0byBtYW5pZmVzdCA9IHBhcnNl
QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLnNpemUoKSk7
CiAgICAgaWYgKCFtYW5pZmVzdCkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdy
aXRpbmcsIGxhY2sgb2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVh
c29uIGZvciBwYXJzZU1hbmlmZXN0IHRvIGZhaWwuCiAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIHBhcnNl
ZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNUPyJfcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApp
bmRleCA2MDMyODE4ODgzNzVmNDRhNjI0YjNlM2IzYWFmZTA2YTM2ODkyZWU2Li41MTk3OGY0MTIz
ODc0ZGM1NjYwZWZmNDcwNjU5NzA3ZDRlNWQ4NWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1NSwx
MCArMjU1LDggQEAgVVJMIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0
IFN0cmluZyYgcGF0aCkKIAogc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKIHsKLSAg
ICAvLyBGSVhNRTogQ2xpZW50cyBwcm9iYWJseSBkbyBub3QgbmVlZCBhIGNvcHkgb2YgdGhlIFNo
YXJlZEJ1ZmZlci4KLSAgICAvLyBSZW1vdmUgdGhlIGNhbGwgdG8gY29weSgpIG9uY2Ugd2UgZW5z
dXJlIFNoYXJlZEJ1ZmZlciB3aWxsIG5vdCBiZSBtb2RpZmllZC4KICAgICBpZiAocmVzb3VyY2Uu
cGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5jb3B5KCk7
CisgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0
aCgpKTsKIH0KIApAQCAtMjkwLDkgKzI4OCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6
Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAg
ICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2U7CiAgICAgICAgIGlmIChn
ZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tSZXNvdXJjZShyZXF1ZXN0LCByZXNvdXJjZSkpIHsK
ICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCk7Ci0gICAgICAgICAg
ICAvLyBGSVhNRTogQ2xpZW50cyBwcm9hYmx5IGRvIG5vdCBuZWVkIGEgY29weSBvZiB0aGUgU2hh
cmVkQnVmZmVyLgotICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjYWxsIHRvIGNvcHkoKSBvbmNl
IHdlIGVuc3VyZSBTaGFyZWRCdWZmZXIgd2lsbCBub3QgYmUgbW9kaWZpZWQuCi0gICAgICAgICAg
ICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jb3B5KCk7CisgICAgICAgICAgICBkYXRhID0gcmVz
b3VyY2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuaAppbmRleCA1MmNkMTY0MDNhMTczNmE3MTg2NTY3NzI0ODYxMWUwOGY2NjNiMjlmLi5iOTYz
NTZlNzg1NjEzODk1NmFlNGMwNTk4MzE3MGNkZjcyMzY3MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtNDIs
NiArNDIsNyBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNo
ZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xhc3MgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNhdGlv
bkNhY2hlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTQ5LDcgKzUw
LDYgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9z
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmluZGV4IGYxZjdlMTc1NjMwMTQ3MWYzMDg1ZGVmOGU0
MWRjNWQwY2E5ZDYwOWEuLjJiYjNmZTc1Yjk5NzdlODMzMjJhZTI1ODBmNzIxMmVlNWJmMjE2MTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBwYXRoKQorUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQoIXVy
bC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC00MCw3ICs0
MCw3IEBAIFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCB7IHVybCB9LCBXVEZNb3ZlKHJlc291cmNlUmVz
cG9uc2UpLCB0eXBlLCBidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgcGF0aCkpOwogfQogCi1BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmws
IFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCitBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIDogU3Vic3RpdHV0ZVJlc291cmNlKFdURk1v
dmUodXJsKSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX3R5cGUo
dHlwZSkKICAgICAsIG1fc3RvcmFnZUlEKDApCkBAIC01MSw3ICs1MSw3IEBAIEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3Vy
Y2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKFJl
c291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERh
dGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5jb3B5KCkgOiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBsb2FkZXIuZGVs
aXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgp
Lm1ha2VDb250aWd1b3VzKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUo
dW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgKaW5kZXggODhjOTRkZTFhNzc0MTA0Njlj
OTMxYTQyYTQ3OWIxZTY3NzdhNzAyZS4uYzI4OGU3MDM2YzY3NjJhZDQ4NzZiYTg4MTQ2OWE3NWQy
MjM3ZTFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIEZhbGxiYWNrID0gMSA8PCA0CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8QXBwbGlj
YXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUoY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJpbmcoKSk7CisgICAgc3RhdGlj
IFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBT
dHJpbmcoKSk7CiAKICAgICB1bnNpZ25lZCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9
CiAgICAgdm9pZCBhZGRUeXBlKHVuc2lnbmVkIHR5cGUpOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKICAgICAKIHByaXZhdGU6Ci0gICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
KFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
KFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHBhdGgpOwogCiAgICAgdm9pZCBkZWxpdmVy
KFJlc291cmNlTG9hZGVyJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggMWM1MDg0N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2Iy
ZmI2YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAg
IG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7
CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwog
fQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYm
KT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDFiMzNhYzk1YmNkZTExZmUz
YzQ5OTAyNDBhNTIwYmQzMGU2MzY1OTUuLjhjZjA1Y2NlMTg4MDEyOGRlNTliZTcwYTk5ODM2ZjVh
NzQ1YjZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSog
cmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgYXV0byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5w
cmVwYXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0
aCkgVkFMVUVTICg/LCA/KSJfcyk7CiAgICAgaWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgCiAKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNv
dXJjZS0+cGF0aCgpLmlzRW1wdHkoKSkKQEAgLTgxNSw3ICs4MTQsNyBAQCBib29sIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNl
LCB1bnNpZ25lZAogICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAg
ICAgICBkYXRhU3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpKTsKKyAgICAg
ICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkubWFrZUNv
bnRpZ3VvdXMoKS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+
ZXhlY3V0ZUNvbW1hbmQoKSkgewpAQCAtODczLDEyICs4NzIsMTIgQEAgYm9vbCBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwg
dW5zaWduZWQKICAgICAKICAgICBpZiAoIWV4ZWN1dGVTdGF0ZW1lbnQoZW50cnlTdGF0ZW1lbnQu
dmFsdWUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIC8vIERpZCB3ZSBz
dWNjZXNzZnVsbHkgd3JpdGUgdGhlIHJlc291cmNlIGRhdGEgdG8gYSBmaWxlPyBJZiBzbywKICAg
ICAvLyByZWxlYXNlIHRoZSByZXNvdXJjZSdzIGRhdGEgYW5kIGZyZWUgdXAgYSBwb3RlbnRpYWxs
eSBsYXJnZSBhbW91bnQKICAgICAvLyBvZiBtZW1vcnk6CiAgICAgaWYgKCFmdWxsUGF0aC5pc0Vt
cHR5KCkpCi0gICAgICAgIHJlc291cmNlLT5kYXRhKCkuY2xlYXIoKTsKKyAgICAgICAgcmVzb3Vy
Y2UtPmNsZWFyKCk7CiAKICAgICByZXNvdXJjZS0+c2V0U3RvcmFnZUlEKHJlc291cmNlSWQpOwog
ICAgIHJldHVybiB0cnVlOwpAQCAtMTI3Myw3ICsxMjcyLDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6c2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNo
ZVJlc28KICAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBl
LCAiYXVkaW8vIikgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAi
dmlkZW8vIik7CiB9CiAgICAgCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURh
dGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5LCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbikK
K2Jvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGly
ZWN0b3J5KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgZGlyZWN0
b3J5LCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbikKIHsKICAgICBT
dHJpbmcgZnVsbFBhdGg7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCmluZGV4IDlhOTUzMDA4NzY2YTg4
ODU1NjFiMzQ4ODg5YjhjZWRhMmIyZWIzMzguLjQxMDJhMTgwOGI0NTU1N2I2NDVlMzZlN2U2ODFm
YzRjNmQyMDdjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3Mg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogdGVtcGxhdGU8dHlw
ZW5hbWU+IGNsYXNzIFN0b3JhZ2VJREpvdXJuYWw7CiAKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U+IHsKQEAg
LTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZW5zdXJlT3JpZ2luUmVjb3JkKGNv
bnN0IFNlY3VyaXR5T3JpZ2luKik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkU3RvcmVSZXNvdXJj
ZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKik7CiAgICAgdm9pZCBkZWxldGVU
YWJsZXMoKTsKLSAgICBib29sIHdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pOworICAgIGJvb2wgd3JpdGVEYXRhVG9VbmlxdWVG
aWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24p
OwogCiAgICAgdm9pZCBsb2FkTWFuaWZlc3RIb3N0SGFzaGVzKCk7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKaW5kZXggNmRlODBj
MTBhYzdkMjVjZjM0NjlmNmRlZjBmYWY3MjQxZjU5NjQyOC4uNGVmOWNkNjZiZDA4OGI3NGMwNDZj
MDY5MGQxZTlkM2U1ZTMzNjBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL0FyY2hpdmVGYWN0b3J5LmNwcApAQCAtNDYsMTIgKzQ2LDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotdHlwZWRlZiBSZWZQdHI8QXJjaGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rp
b24oY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJik7Cit0eXBlZGVmIFJlZlB0cjxBcmNoaXZlPiBS
YXdEYXRhQ3JlYXRpb25GdW5jdGlvbihjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbiosIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gQXJjaGl2ZU1JTUVUeXBlc01hcDsKIAogLy8gVGhlIGNy
ZWF0ZSBmdW5jdGlvbnMgaW4gdGhlIGFyY2hpdmUgY2xhc3NlcyByZXR1cm4gUmVmUHRyIHRvIGNv
bmNyZXRlIHN1YmNsYXNzZXMKIC8vIG9mIEFyY2hpdmUuIFRoaXMgYWRhcHRvciBtYWtlcyB0aGUg
ZnVuY3Rpb25zIGhhdmUgYSB1bmlmb3JtIHJldHVybiB0eXBlLgotdGVtcGxhdGU8dHlwZW5hbWUg
QXJjaGl2ZUNsYXNzPiBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGFyY2hpdmVGYWN0b3J5Q3JlYXRl
KGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3RlbXBsYXRlPHR5cGVuYW1l
IEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBhcmNoaXZlRmFjdG9yeUNyZWF0
ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IHJldHVybiBBcmNoaXZlQ2xhc3M6OmNyZWF0ZSh1cmwsIGJ1ZmZlcik7CiB9CkBAIC04Myw3ICs4
Myw3IEBAIGJvb2wgQXJjaGl2ZUZhY3Rvcnk6OmlzQXJjaGl2ZU1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuICFtaW1lVHlwZS5pc0VtcHR5KCkgJiYgYXJjaGl2ZU1J
TUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0KIAotUmVmUHRyPEFyY2hpdmU+IEFyY2hp
dmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKK1JlZlB0cjxBcmNoaXZlPiBBcmNoaXZlRmFjdG9yeTo6Y3Jl
YXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQogewogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFj
dG9yeS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaApp
bmRleCAyMWQyMzY1Y2Y4ZDlkOTAxZWZlN2FhZDU1MmJmM2RhNDA2OWZlNDBkLi41NTY0NTE1Yzll
MGQ5ZDAzM2I3OTBjNzQ3Mjg1YTI1ODUzYWJlMDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKQEAgLTM0LDEyICszNCwxMiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIEFyY2hpdmVGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBpc0FyY2hpdmVNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgUmVm
UHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpOworICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4gY3JlYXRlKGNv
bnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyS25vd25BcmNoaXZlTUlNRVR5cGVzKEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcAppbmRleCBm
YzIwZGEzZGEwMzJjYmVmNzRmMmU5Yzg0MjhhY2I0ZWUzN2JlZjIzLi4wNzM4Mzk0YTgyODcxNGFh
MGI5MGVlNzUwNzlkNDg2ZjViMGU4Njk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1pbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2Uo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK2lubGluZSBBcmNoaXZlUmVz
b3VyY2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKICAgICA6IFN1YnN0aXR1dGVSZXNvdXJjZShVUkwgeyB1cmwgfSwgUmVz
b3VyY2VSZXNwb25zZSB7IHJlc3BvbnNlIH0sIFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX21pbWVU
eXBlKG1pbWVUeXBlKQogICAgICwgbV90ZXh0RW5jb2RpbmcodGV4dEVuY29kaW5nKQpAQCAtNDIs
NyArNDIsNyBAQCBpbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybAogewogfQogCi1SZWZQdHI8QXJjaGl2
ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJp
bmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQorUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291
cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiB7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU0
LDcgKzU0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVh
dGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb24KICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBcmNoaXZlUmVzb3VyY2UoZGF0YS5yZWxlYXNlTm9uTnVsbCgpLCB1cmwsIG1pbWVUeXBl
LCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwgcmVzcG9uc2UpKTsKIH0KIAotUmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CitSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGRh
dGEpLCB1cmwsIHJlc3BvbnNlLm1pbWVUeXBlKCksIHJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUo
KSwgU3RyaW5nKCksIHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKaW5kZXggMjA5ZTk3MTdhZWIwOTM2MGRiMzkyN2U2ZWZh
MWU1YmYxYzJjOTdjYS4uMDU0OGVmNzIxZWZkMjdjMDBjZTkzZDEyMjcwZWNlYzQ2YzAyYWY5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgK
QEAgLTM0LDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBcmNoaXZlUmVz
b3VyY2UgOiBwdWJsaWMgU3Vic3RpdHV0ZVJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFVSTCYsCisgICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0
ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFVSTCYsCiAgICAgICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwKICAgICAgICAgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgPSBSZXNvdXJjZVJlc3BvbnNlKCkpOwogCkBAIC00Nyw3ICs0Nyw3IEBAIHB1
YmxpYzoKICAgICBib29sIHNob3VsZElnbm9yZVdoZW5VbmFyY2hpdmluZygpIGNvbnN0IHsgcmV0
dXJuIG1fc2hvdWxkSWdub3JlV2hlblVuYXJjaGl2aW5nOyB9CiAKIHByaXZhdGU6Ci0gICAgQXJj
aGl2ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIEFyY2hpdmVSZXNvdXJjZShS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICBTdHJpbmcgbV9taW1lVHlwZTsK
ICAgICBTdHJpbmcgbV90ZXh0RW5jb2Rpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGRlN2RhZGRkYWMyMjEy
ZjZkNWUwY2MwOTFkNGU0MTY3N2EzZjAxNWQuLjcxMTUwY2JkZDg5NjllNmFmMDI4Njg0YjZiZjZj
YmMwYTUwYjJmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC05MCw3ICs5MCw3IEBAIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2Vu
dGF0aW9uKEFyCiAgICAgLy8gUmVzb3VyY2UgZGF0YSBjYW4gYmUgZW1wdHksIGJ1dCBtdXN0IGJl
IHJlcHJlc2VudGVkIGJ5IGFuIGVtcHR5IENGRGF0YVJlZgogICAgIGF1dG8mIGRhdGEgPSByZXNv
dXJjZS0+ZGF0YSgpOwogCi0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0Lmdl
dCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBkYXRhLmNyZWF0ZUNGRGF0YSgp
LmdldCgpKTsKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExl
Z2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlQ0ZEYXRhKCkuZ2V0KCkpOwogCiAgICAgLy8gUmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBudWxs
CiAgICAgaWYgKGF1dG8gY2ZVUkwgPSByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZT
dHJpbmcoKSkKQEAgLTExNyw5ICsxMTcsOSBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAg
IC8vIERvbid0IGluY2x1ZGUgdGhlIHJlc291cmNlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiByZXNv
dXJjZQogICAgIGlmICghaXNNYWluUmVzb3VyY2UpIHsKICAgICAgICAgaWYgKGF1dG8gcmVzb3Vy
Y2VSZXNwb25zZURhdGEgPSBjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihyZXNvdXJj
ZS0+cmVzcG9uc2UoKSkpCi0gICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0
eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5LCByZXNvdXJj
ZVJlc3BvbnNlRGF0YS5nZXQoKSk7ICAgIAorICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtl
eSwgcmVzb3VyY2VSZXNwb25zZURhdGEuZ2V0KCkpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVy
biBwcm9wZXJ0eUxpc3Q7CiB9CiAKQEAgLTIxNSwxMyArMjE1LDEzIEBAIFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKENGRGljdGlvbmFyeVJl
ZiBkaWN0aW9uCiAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0g
UmVzb3VyY2UgcmVzcG9uc2UgZGF0YSBpcyBub3Qgb2YgdHlwZSBDRkRhdGEsIGNhbm5vdCBjcmVh
dGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ICAgIH0KLSAgICAgICAgCisKICAgICAgICAgYXV0byByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiA9
IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5
LCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZVZlcnNpb25LZXkpKTsKICAgICAgICAg
aWYgKHJlc291cmNlUmVzcG9uc2VWZXJzaW9uICYmIENGR2V0VHlwZUlEKHJlc291cmNlUmVzcG9u
c2VWZXJzaW9uKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7CiAgICAgICAgICAgICBMT0coQXJj
aGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgdmVyc2lvbiBpcyBu
b3Qgb2YgdHlwZSBDRlN0cmluZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAg
ICByZXNwb25zZSA9IGNyZWF0ZVJlc291cmNlUmVzcG9uc2VGcm9tUHJvcGVydHlMaXN0RGF0YShy
ZXNvdXJjZVJlc3BvbnNlRGF0YSwgcmVzb3VyY2VSZXNwb25zZVZlcnNpb24pOwogICAgIH0KIApA
QCAtMjQ4LDIzICsyNDgsMjMgQEAgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmIG1haW5SZXNvdXIKICAgICByZXR1cm4g
YXJjaGl2ZTsKIH0KIAotUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEpCitSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAg
ICAgcmV0dXJuIGNyZWF0ZShVUkwoKSwgZGF0YSk7CiB9CiAKLVJlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBk
YXRhKQorUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShj
b25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIExPRyhBcmNo
aXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBmcm9tIHJhdyBkYXRhIik7Ci0gICAg
CisKICAgICBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IGNyZWF0ZSgpOwotICAgICAg
ICAKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLmNyZWF0ZUNGRGF0YSgp
OworCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gZGF0YS5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVDRkRhdGEoKTsKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgICAgIAorCiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG51bGxwdHI7Ci0gICAg
CisKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwbGlzdCA9IGFkb3B0Q0Yoc3RhdGlj
X2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKDAsIGNm
RGF0YS5nZXQoKSwga0NGUHJvcGVydHlMaXN0SW1tdXRhYmxlLCAwLCAmZXJyb3IpKSk7CiAgICAg
aWYgKCFwbGlzdCkgewogI2lmbmRlZiBOREVCVUcKQEAgLTI3NiwxMiArMjc2LDEyIEBAIFJlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwg
U2hhcmVkQnVmZmVyJiBkYXRhCiAgICAgICAgICAgICBDRlJlbGVhc2UoZXJyb3IpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoQ0ZHZXRUeXBlSUQocGxp
c3QuZ2V0KCkpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKSB7CiAgICAgICAgIExPRyhBcmNo
aXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBBcmNoaXZlIHByb3BlcnR5IGxpc3QgaXMgbm90IHRo
ZSBleHBlY3RlZCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoIWFyY2hpdmUt
PmV4dHJhY3QocGxpc3QuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjk1
LDcgKzI5NSw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25hcnlS
ZWYgZGljdGlvbmFyeSkKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAt
IE51bGwgcm9vdCBDRkRpY3Rpb25hcnksIGFib3J0aW5nIGludmFsaWQgV2ViQXJjaGl2ZSIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAgQ0ZEaWN0aW9uYXJ5UmVm
IG1haW5SZXNvdXJjZURpY3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlv
bmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVNYWluUmVzb3VyY2VLZXkp
KTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURpY3QpIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAi
TGVnYWN5V2ViQXJjaGl2ZSAtIE5vIG1haW4gcmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJvcnRpbmcg
aW52YWxpZCBXZWJBcmNoaXZlIik7CkBAIC0zMzMsNyArMzMzLDcgQEAgYm9vbCBMZWdhY3lXZWJB
cmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAg
ICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBpcyBub3Qg
ZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAK
KwogICAgICAgICAgICAgaWYgKGF1dG8gc3VicmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZShzdWJy
ZXNvdXJjZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1YnJlc291cmNlKHN1YnJlc291cmNl
LnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICB9CkBAIC0zNTMsNyArMzUzLDcgQEAgYm9vbCBM
ZWdhY3lXZWJBcmNoaXZlOjpleHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAg
ICAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJmcmFtZSBh
cnJheSBpcyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFy
Y2hpdmUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAKKwogICAgICAgICAgICAgYXV0byBzdWJmcmFtZUFyY2hpdmUgPSBjcmVhdGUo
KTsKICAgICAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUtPmV4dHJhY3Qoc3ViZnJhbWVEaWN0
KSkKICAgICAgICAgICAgICAgICBhZGRTdWJmcmFtZUFyY2hpdmUoV1RGTW92ZShzdWJmcmFtZUFy
Y2hpdmUpKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJh
Y3QoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgICAgICAgICAgTE9HKEFyY2hp
dmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEludmFsaWQgc3ViZnJhbWUgYXJjaGl2ZSBza2lwcGVk
Iik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
NTA2LDcgKzUwNiw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyCiB7CiAgICAgYXV0byYgcmVz
cG9uc2UgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwogICAg
IFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwotICAgIAorCiAgICAgLy8gaXQncyBw
b3NzaWJsZSB0byBoYXZlIGEgcmVzcG9uc2Ugd2l0aG91dCBhIFVSTCBoZXJlCiAgICAgLy8gPHJk
YXI6Ly9wcm9ibGVtLzU0NTQ5MzU+CiAgICAgaWYgKHJlc3BvbnNlVVJMLmlzTnVsbCgpKQpAQCAt
NjA1LDcgKzYwNSw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGVGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKIAogICAgIGlmICghZG9jdW1lbnQt
PmlzRnJhbWVTZXQoKSkKICAgICAgICAgcmV0dXJuIGFyY2hpdmU7Ci0gICAgICAgIAorCiAgICAg
Ly8gV3JhcCB0aGUgZnJhbWVzZXQgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIHNvIGl0IGNhbiBiZSBw
YXN0ZWQgaW50bwogICAgIC8vIGFub3RoZXIgZG9jdW1lbnQgKHdoaWNoIHdpbGwgaGF2ZSBhIGJv
ZHkgb3IgZnJhbWVzZXQgb2YgaXRzIG93bikuIAogICAgIFN0cmluZyBpZnJhbWVNYXJrdXAgPSAi
PGlmcmFtZSBmcmFtZWJvcmRlcj1cIm5vXCIgbWFyZ2lud2lkdGg9XCIwXCIgbWFyZ2luaGVpZ2h0
PVwiMFwiIHdpZHRoPVwiOTglJVwiIGhlaWdodD1cIjk4JSVcIiBzcmM9XCIiICsgZnJhbWUtPmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCkuc3RyaW5nKCkgKyAiXCI+
PC9pZnJhbWU+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xl
Z2FjeVdlYkFyY2hpdmUuaAppbmRleCBkMDllYzlmNzVhYmExMzZhODYzMzllYjRkODZhYmQ4Mjc3
YzRmZjA0Li41YTA3YjEwYjRiZTZmODYyMDExYTc4MmE3ZGVkMjM2NzU5MjQzNjI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5o
CkBAIC00MSw4ICs0MSw4IEBAIHN0cnVjdCBTaW1wbGVSYW5nZTsKIGNsYXNzIExlZ2FjeVdlYkFy
Y2hpdmUgZmluYWwgOiBwdWJsaWMgQXJjaGl2ZSB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShTaGFyZWRCdWZmZXIm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNy
ZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBj
cmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKFJlZjxBcmNoaXZlUmVz
b3VyY2U+JiYgbWFpblJlc291cmNlLCBWZWN0b3I8UmVmPEFyY2hpdmVSZXNvdXJjZT4+JiYgc3Vi
cmVzb3VyY2VzLCBWZWN0b3I8UmVmPExlZ2FjeVdlYkFyY2hpdmU+PiYmIHN1YmZyYW1lQXJjaGl2
ZXMpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
Y3JlYXRlKE5vZGUmLCBGdW5jdGlvbjxib29sKEZyYW1lJik+JiYgZnJhbWVGaWx0ZXIgPSB7IH0p
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3Jl
YXRlKEZyYW1lJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTEFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0
bWwvTUhUTUxBcmNoaXZlLmNwcAppbmRleCBhY2ZiYmI3MDIwMjJkMDZhZmU2MjAwNDA0ODdmZDM0
ZDkyMWQ3MjdjLi5kMDEzOWY4N2EwNmY5Njk3OGI3NDc3ZTlmNDk5OWMzNGVhOWY4NjI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2
ZS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBSZWY8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6
OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTUhUTUxBcmNoaXZlKTsKIH0KIAot
UmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmws
IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6
Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewog
ICAgIC8vIEZvciBzZWN1cml0eSByZWFzb25zIHdlIG9ubHkgbG9hZCBNSFRNTCBwYWdlcyBmcm9t
IGxvY2FsIFVSTHMuCiAgICAgaWYgKCFMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRV
UkxTY2hlbWVBc0xvY2FsKHVybC5wcm90b2NvbCgpLnRvU3RyaW5nKCkpKQpAQCAtMTMwLDcgKzEz
MCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVS
TCYgdXJsLCBTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgcmV0dXJuIG1haW5BcmNoaXZlOwogfQog
Ci1SZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2Uq
IHBhZ2UpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0
ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogewogICAgIFZlY3RvcjxQYWdlU2VyaWFsaXplcjo6UmVz
b3VyY2U+IHJlc291cmNlczsKICAgICBQYWdlU2VyaWFsaXplciBwYWdlU2VyaWFsaXplcihyZXNv
dXJjZXMpOwpAQCAtMTYyLDggKzE2Miw4IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2
ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJl
bG93IGluc3RlYWQgb2YgYXNjaWkoKSBhcyBhc2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8g
KHdlIHN0aWxsIG9ubHkgaGF2ZSBwdXQgQVNDSUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNT
RVJUKHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKS5pc0FsbEFTQ0lJKCkpOwogICAgIENTdHJpbmcg
YXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgIGF1dG8g
bWh0bWxEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVu
ZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIG1odG1sRGF0YTsKKyAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5n
LmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgZm9yIChhdXRvJiByZXNvdXJj
ZSA6IHJlc291cmNlcykgewogICAgICAgICBzdHJpbmdCdWlsZGVyLmNsZWFyKCk7CkBAIC0xNzgs
MTUgKzE3OCwxNSBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhU
TUxEYXRhKFBhZ2UqIHBhZ2UpCiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcclxuQ29u
dGVudC1UcmFuc2Zlci1FbmNvZGluZzogIiwgY29udGVudEVuY29kaW5nLCAiXHJcbkNvbnRlbnQt
TG9jYXRpb246ICIsIHJlc291cmNlLnVybC5zdHJpbmcoKSwgIlxyXG5cclxuIik7CiAKICAgICAg
ICAgYXNjaWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgICAg
ICBtaHRtbERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0
aCgpKTsKKyAgICAgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lp
U3RyaW5nLmxlbmd0aCgpKTsKIAogICAgICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBl
bmNvZGUgdGhlIGNvbnRlbnQgYXMgYSBzdHJlYW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQg
YWxsLgogICAgICAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UuZGF0YS0+ZGF0YSgpOwogICAgICAg
ICBzaXplX3QgZGF0YUxlbmd0aCA9IHJlc291cmNlLmRhdGEtPnNpemUoKTsKICAgICAgICAgaWYg
KCFzdHJjbXAoY29udGVudEVuY29kaW5nLCBxdW90ZWRQcmludGFibGUpKSB7CiAgICAgICAgICAg
ICBhdXRvIGVuY29kZWREYXRhID0gcXVvdGVkUHJpbnRhYmxlRW5jb2RlKGRhdGEsIGRhdGFMZW5n
dGgpOwotICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBl
bmNvZGVkRGF0YS5zaXplKCkpOwotICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4i
LCAyKTsKKyAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBl
bmNvZGVkRGF0YS5zaXplKCkpOworICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIs
IDIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKCFzdHJjbXAoY29udGVu
dEVuY29kaW5nLCBiYXNlNjQpKTsKICAgICAgICAgICAgIC8vIFdlIGFyZSBub3Qgc3BlY2lmeWlu
ZyBpbnNlcnRMRnMgPSB0cnVlIGJlbG93IGFzIGl0IHdvdWxkIGN1dCB0aGUgbGluZXMgd2l0aCBM
RnMgYW5kIE1IVE1MIHJlcXVpcmVzIENSTEZzLgpAQCAtMTk2LDE3ICsxOTYsMTcgQEAgUmVmPFNo
YXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQog
ICAgICAgICAgICAgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoID0gZW5jb2RlZERhdGEuc2l6ZSgp
OwogICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgIHNpemVfdCBsaW5lTGVuZ3RoID0g
c3RkOjptaW4oZW5jb2RlZERhdGFMZW5ndGggLSBpbmRleCwgbWF4aW11bUxpbmVMZW5ndGgpOwot
ICAgICAgICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGlu
ZGV4LCBsaW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJc
biIsIDIpOworICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0
YSgpICsgaW5kZXgsIGxpbmVMZW5ndGgpOworICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBl
bmQoIlxyXG4iLCAyKTsKICAgICAgICAgICAgICAgICBpbmRleCArPSBtYXhpbXVtTGluZUxlbmd0
aDsKICAgICAgICAgICAgIH0gd2hpbGUgKGluZGV4IDwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAg
ICAgICB9CiAgICAgfQogCiAgICAgYXNjaWlTdHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5k
YXJ5LCAiLS1cclxuIikudXRmOCgpOwotICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5n
LmRhdGEoKSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgIG1odG1sRGF0YS5hcHBlbmQoYXNj
aWlTdHJpbmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKLSAgICByZXR1cm4gbWh0
bWxEYXRhOworICAgIHJldHVybiBtaHRtbERhdGEudGFrZSgpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oCmluZGV4IDNk
MmRiN2M5NjAwMmViZTY4NGIyYmVmOGYxZWE5ZTJlOTc5NGE1ODkuLjJkZmU4N2U4MmU3YTRkY2Uw
ZjM0MWMzNjE5NDNjOTkwMjA1YzhkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oCkBAIC0zOCwxNCArMzgsMTQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBNSFRNTFBhcnNlcjsKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNSFRN
TEFyY2hpdmUgZmluYWwgOiBwdWJsaWMgQXJjaGl2ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxNSFRNTEFyY2hpdmU+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBSZWZQdHI8TUhUTUxBcmNoaXZl
PiBjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxN
SFRNTEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7
CiAKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZ2VuZXJhdGVNSFRNTERhdGEoUGFnZSop
OworICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZ2VuZXJhdGVNSFRNTERh
dGEoUGFnZSopOwogCiAgICAgdmlydHVhbCB+TUhUTUxBcmNoaXZlKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCBm
MWI5MDFkZDAyMDNkY2FjOTRkZjZkMGVhZTRjYjJkMGJkYjgwMTVlLi5lNTE4NmVmYjBiNGZhNzBj
YjYwOTMxZjQ4NGU1MDBjYzEwZTAwYmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRp
YyBib29sIHNraXBMaW5lc1VudGlsQm91bmRhcnlGb3VuZChTaGFyZWRCdWZmZXJDaHVua1JlYWRl
ciYgbGluZVJlYWRlciwgY29uCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1NSFRNTFBhcnNlcjo6
TUhUTUxQYXJzZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQorTUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2Vy
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgOiBtX2xpbmVSZWFkZXIoZGF0YSwg
IlxyXG4iKQogewogfQpAQCAtMTQwLDcgKzE0MCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIs
CiB7CiAgICAgQVNTRVJUKGVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9PSBlbmRPZkRvY3Vt
ZW50Qm91bmRhcnkuaXNFbXB0eSgpKTsKIAotICAgIGF1dG8gY29udGVudCA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBjb250ZW50OwogICAgIGNvbnN0
IGJvb2wgY2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAg
Ym9vbCBlbmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVu
dFRyYW5zZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTE1NCw3ICsx
NTQsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFy
dChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAgTE9HX0VSUk9SKCJC
aW5hcnkgY29udGVudHMgcmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRlbnQtPmFwcGVuZChXVEZNb3ZlKHBh
cnQpKTsKKyAgICAgICAgY29udGVudC5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CiAgICAgICAgIG1f
bGluZVJlYWRlci5zZXRTZXBhcmF0b3IoIlxyXG4iKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IG5leHRDaGFyczsKICAgICAgICAgaWYgKG1fbGluZVJlYWRlci5wZWVrKG5leHRDaGFycywgMikg
IT0gMikgewpAQCAtMTgwLDEwICsxODAsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhU
TUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIE5vdGUg
dGhhdCB3ZSB1c2UgbGluZS51dGY4KCkgYW5kIG5vdCBsaW5lLmFzY2lpKCkgYXMgYXNjaWkgdHVy
bnMgc3BlY2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIHRhYiwgbGluZS1mZWVkLi4uKSBpbnRvICc/
Jy4KLSAgICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUu
bGVuZ3RoKCkpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgp
LCBsaW5lLmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFu
c2ZlckVuY29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlKSB7CiAgICAgICAg
ICAgICAgICAgLy8gVGhlIGxpbmUgcmVhZGVyIHJlbW92ZXMgdGhlIFxyXG4sIGJ1dCB3ZSBuZWVk
IHRoZW0gZm9yIHRoZSBjb250ZW50IGluIHRoaXMgY2FzZSBhcyB0aGUgUXVvdGVkUHJpbnRhYmxl
IGRlY29kZXIgZXhwZWN0cyBDUi1MRiB0ZXJtaW5hdGVkIGxpbmVzLgotICAgICAgICAgICAgICAg
IGNvbnRlbnQtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBw
ZW5kKCJcclxuIiwgMik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTMs
OSArMTkzLDEwIEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5l
eHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgfQogCiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGRhdGE7CisgICAgYXV0byBjb250aWd1b3VzQ29udGVudCA9IGNvbnRlbnQudGFr
ZUFzQ29udGlndW91cygpOwogICAgIHN3aXRjaCAobWltZUhlYWRlci5jb250ZW50VHJhbnNmZXJF
bmNvZGluZygpKSB7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpCYXNlNjQ6IHsKLSAgICAgICAgYXV0
byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNp
emUoKSk7CisgICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91
c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAgICAgIGlm
ICghZGVjb2RlZERhdGEpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBiYXNlNjQg
Y29udGVudCBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtMjA0LDExICsyMDUsMTEgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6
OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIGNhc2UgTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlOgotICAgICAg
ICBkYXRhID0gcXVvdGVkUHJpbnRhYmxlRGVjb2RlKGNvbnRlbnQtPmRhdGEoKSwgY29udGVudC0+
c2l6ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURlY29kZShjb250aWd1b3Vz
Q29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJpdDoKICAgICBjYXNlIE1JTUVIZWFkZXI6
OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5z
aXplKCkpOworICAgICAgICBkYXRhLmFwcGVuZChjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBj
b250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmgK
aW5kZXggMWU5YmQ0ZDc3NjdlZTM5MWEwMDIyZjcxNzQ4ZjAwYjg1YzgxYjI1Zi4uMGQ2MDQzNDNm
M2Q3YWQxNzhjYzIyMDAzYzk3OWMyMmU1MGEzYjk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oCkBAIC00MiwxMSArNDIsMTEgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwogY2xhc3MgTUhUTUxB
cmNoaXZlOwogY2xhc3MgTUlNRUhlYWRlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1IVE1MUGFyc2VyIHsKIHB1YmxpYzoKLSAg
ICBleHBsaWNpdCBNSFRNTFBhcnNlcihTaGFyZWRCdWZmZXIqKTsKKyAgICBleHBsaWNpdCBNSFRN
TFBhcnNlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICAgICBSZWZQdHI8TUhUTUxBcmNo
aXZlPiBwYXJzZUFyY2hpdmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4IDRmMjI4ZThkMDM4
OWI4YjhjYjdmNDE0ODZmZGI3ODFjOWJmNjViZDIuLmRkZDBiMWI4OWIxZDg3MmJiNDI3MjdlZTc4
ZDhmZDYzOWU0Yjg5NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTQwLDEyICs0MCwxNiBAQCBD
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0KENhY2hl
ZFJlc291cmNlUmVxdWVzdCYmIHJlcQogewogfQogCi12b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3Q6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlz
aExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewotICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgc2V0RW5j
b2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwotICAgIGlmIChkYXRhKQotICAgICAg
ICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29u
dGlndW91cygpOworICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOworICAgICAg
ICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAg
ICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5kZXggMDdmMmEwNzlj
NTY0ZWVmZmI2OTdjMzdjNzg1NjVlMWVhOGQ5YWU1ZS4uMzc5OGE5YjRkOTAxM2NmZGVhNmY1NmZi
ZGYwMDE1YWY4OTQ3NTcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1Ymxp
YzoKICAgICBzdGQ6Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9jZXNz
KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERvY3VtZW50
KiA9IG51bGxwdHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZp
bmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRl
eHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIucHRy
KCk7IH0KICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAg
IFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDU5ZmE3YzYyZmM2
MWU2Mzc0MmY3NGNjNmEwYmNmMDAwYmE5YjE3NmYuLjM4YTJlMTdmMGQwNmM4YWM5OGRlMjRiMWU1
MmI4ZTYwZTkyNDEyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgY29uc3QgU3RyaW5nIENh
Y2hlZENTU1N0eWxlU2hlZXQ6OnNoZWV0VGV4dChNSU1FVHlwZUNoZWNrSGludCBtaW1lVHlwZUNo
ZWNrSGludCwKICAgICAgICAgcmV0dXJuIG1fZGVjb2RlZFNoZWV0VGV4dDsKIAogICAgIC8vIERv
bid0IGNhY2hlIHRoZSBkZWNvZGVkIHRleHQsIHJlZ2VuZXJhdGluZyBpcyBjaGVhcCBhbmQgaXQg
Y2FuIHVzZSBxdWl0ZSBhIGJpdCBvZiBtZW1vcnkKLSAgICByZXR1cm4gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgIHJldHVybiBt
X2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBtX2RhdGEtPnNpemUoKSk7CiB9CiAKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9k
eURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKQEAgLTk3LDEzICs5Nywx
NyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIHNhdmVQYXJzZWRTdHlsZVNoZWV0KCpzaGVl
dC5tX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSk7CiB9CiAKLXZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVl
dDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShk
YXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAgLy8gRGVjb2RlIHRoZSBkYXRhIHRvIGZpbmQg
b3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4dCBhcm91bmQgZHVyaW5nIGNo
ZWNrTm90aWZ5KCkKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0ID0g
bV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7Cisg
ICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgLy8gRGVjb2Rl
IHRoZSBkYXRhIHRvIGZpbmQgb3V0IHRoZSBlbmNvZGluZyBhbmQga2VlcCB0aGUgc2hlZXQgdGV4
dCBhcm91bmQgZHVyaW5nIGNoZWNrTm90aWZ5KCkKKyAgICAgICAgbV9kZWNvZGVkU2hlZXRUZXh0
ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgp
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBzZXRF
bmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tO
b3RpZnkobWV0cmljcyk7CiAgICAgLy8gQ2xlYXIgdGhlIGRlY29kZWQgdGV4dCBhcyBpdCBpcyB1
bmxpa2VseSB0byBiZSBuZWVkZWQgaW1tZWRpYXRlbHkgYWdhaW4gYW5kIGlzIGNoZWFwIHRvIHJl
Z2VuZXJhdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuaAppbmRleCA1ZDRkZDNkYzdlMzUzZWUzY2IyZmI5M2YyNzhkMjU3OWI4ZDlhN2Ex
Li5lNjU1YzY5ZTNlZGI2MDk1MDIzOWNjZTQ1NDVmMDk2YjUyNjU2ZGU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKQEAgLTU1LDcg
KzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZp
bmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRS
ZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2Fk
aW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCiAgICAg
dm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRleCA4YzJiYzJhMzQxYzgy
MzUxZDdmNjYyNWJjZTI3MWQwNzc2MzNhZTk0Li5kMmJjMjgyMTQ3OWM1OWEyMzIzZTRmNjVjZDk0
YjYzYjQyMzczNjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwCkBAIC02NCwxMCArNjQsMTUgQEAgdm9pZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2Fj
aGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkKICAgICAgICAgc3RhdGljX2Nhc3Q8Q2FjaGVkRm9u
dENsaWVudCY+KGNsaWVudCkuZm9udExvYWRlZCgqdGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkRm9u
dDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEuZ2V0
KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOworICAgIGlmIChkYXRhKSB7CisgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIHNldEVuY29kZWRTaXplKG1fZGF0
YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAg
ICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAg
ICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CiB9CkBAIC0xMDUsNyArMTEwLDcgQEAgYm9vbCBDYWNo
ZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpCiAKIHN0ZDo6
dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0
b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewotICAgIFJlZlB0ciBidWZmZXIgeyAmYnl0ZXMgfTsK
KyAgICBSZWZQdHIgYnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0
V09GRlRvU2ZudElmTmVjZXNzYXJ5KGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ1ZmZlciA/IGNyZWF0
ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmJ1ZmZlciwgaXRlbUluQ29sbGVjdGlvbikgOiBudWxs
cHRyOwogfQpAQCAtMTM1LDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRm9udDo6Y2hlY2tOb3RpZnko
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKIHsKICAgICBpZiAoaXNMb2FkaW5nKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hl
ZEZvbnRDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRGb250Q2xp
ZW50KiBjbGllbnQgPSB3YWxrZXIubmV4dCgpKQogICAgICAgICBjbGllbnQtPmZvbnRMb2FkZWQo
KnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggY2Vi
ZGM1NTdmMTNmYzRhZmQ4Mjc1Mjk3NzRhZmQ4ZWM0YmVmNDIxMC4uMTM0NjZjYzk5ZDBkMTljYmYz
ZDhlZjNkZmJkOTZmMzRkMGY4NTQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgTk9fUkVUVVJOX0RVRV9U
T19BU1NFUlQgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5h
bCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNo
ZWRSZXNvdXJjZUNsaWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cAppbmRleCBiMTU5ZjI5ZWU5MGZlM2RlMDE5YzExNDliZGE2OTRlMGU2ZjZiNTQyLi45NDYyNzk1
MjBkMGRhNDQ2MjJjNmFjZDM2NjYyMjg4MTA1ZTgxOTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ2OCw5ICs0NjgsOSBAQCBpbmxpbmUgdm9p
ZCBDYWNoZWRJbWFnZTo6Y2xlYXJJbWFnZSgpCiAgICAgbV91cGRhdGVJbWFnZURhdGFDb3VudCA9
IDA7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1
ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgbV9kYXRhID0gJmRhdGE7Cisg
ICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1f
ZGF0YS0+c2l6ZSgpKTsKICAgICBjcmVhdGVJbWFnZSgpOwogCkBAIC01MjMsMTIgKzUyMywxNCBA
QCBib29sIENhY2hlZEltYWdlOjpzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0CiAg
ICAgcmV0dXJuIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fbGFzdFVwZGF0ZUltYWdlRGF0YVRp
bWUpLnNlY29uZHMoKSA8IHVwZGF0ZUltYWdlRGF0YUJhY2tvZmZJbnRlcnZhbHNbaW50ZXJ2YWxd
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlm
TmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IENh
Y2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSkgY29uc3QKIHsKLSAgICBpZiAoIWRhdGEgfHwgIWlzUG9zdFNjcmlwdFJlc291
cmNlKCkpCi0gICAgICAgIHJldHVybiBkYXRhOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgaWYgKCFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQorICAgICAgICBy
ZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0Uo
V0VCS0lUX0lNQUdFX0RFQ09ERVJTKQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQ
REZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5jcmVhdGVD
RkRhdGEoKSkuZ2V0KCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1
bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOwogI2Vsc2UKICAgICAvLyBMb2FkaW5nIHRoZSBp
bWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGVkIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3Qgc3Vw
cG9ydCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQgdG8gUERGLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtNTUzLDcgKzU1NSw3IEBAIEVuY29kZWREYXRhU3RhdHVzIENhY2hlZEltYWdlOjp1
cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkK
K3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1
ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoZGF0
YSk7CkBAIC01NjcsNyArNTY5LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVw
ZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9h
ZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKK3ZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAg
IG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsKICAgICBpZiAobV9kYXRhKSB7
CkBAIC01OTMsNyArNTk1LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWUKIHZvaWQgQ2FjaGVk
SW1hZ2U6OmRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpCiB7CiAgICAgaWYgKG1faW1h
Z2UpIHsKLSAgICAgICAgLy8gTGV0IHRoZSBJbWFnZSBrbm93IHRoYXQgdGhlIFNoYXJlZEJ1ZmZl
ciBoYXMgYmVlbiByZWppZ2dlZCwgc28gaXQgY2FuIGxldCBnbyBvZiBhbnkgcmVmZXJlbmNlcyB0
byB0aGUgaGVhcC1hbGxvY2F0ZWQgcmVzb3VyY2UgYnVmZmVyLgorICAgICAgICAvLyBMZXQgdGhl
IEltYWdlIGtub3cgdGhhdCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBoYXMgYmVlbiByZWpp
Z2dlZCwgc28gaXQgY2FuIGxldCBnbyBvZiBhbnkgcmVmZXJlbmNlcyB0byB0aGUgaGVhcC1hbGxv
Y2F0ZWQgcmVzb3VyY2UgYnVmZmVyLgogICAgICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8y
NDI3NTYxNyk6IEl0IHdvdWxkIGJlIGJldHRlciBpZiB3ZSBjb3VsZCBzb21laG93IHRlbGwgdGhl
IEltYWdlJ3MgZGVjb2RlciB0byBzd2FwIGluIHRoZSBuZXcgY29udGVudHMgd2l0aG91dCBkZXN0
cm95aW5nIGFueXRoaW5nLgogICAgICAgICBtX2ltYWdlLT5kZXN0cm95RGVjb2RlZERhdGEodHJ1
ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRl
eCBlMzg5NjJhMGRjYWZiY2VmNjMxYzE0ZTYzZmViODViYTA1NTIwM2Y0Li4wODNmOTJmODg4Mjc2
ZWVkYTg5OTEyMDMxZDI0NDlhOTY4ZTI2NWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuaApAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbWFn
ZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhh
c1JlbGF0aXZlV2lkdGgoKTsgfQogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsgfQog
Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAg
ICAgZW51bSBTaXplVHlwZSB7CiAgICAgICAgIFVzZWRTaXplLApAQCAtMTI1LDcgKzEyNSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAg
IGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25z
dDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJ
bWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwog
ICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZv
aWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVC
dWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICB2b2lk
IGRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA5MmIw
ODM2OTc1ODg4NDQwOTE5MzllM2VlZDc5ZDc3ZjE4Mzk1NjJmLi44OTVkYjExNThiNmI4YzhmYmY3
YjEwYjQzYjYxNGVkYTk2MDIxY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgQ2FjaGVkUmF3UmVz
b3VyY2U6OkNhY2hlZFJhd1Jlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFR5cGUgdHlwZSwKICAgICBBU1NFUlQoaXNNYWluT3JNZWRpYU9ySWNvbk9yUmF3UmVzb3VyY2Uo
KSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jl
c291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBTaGFyZWRCdWZmZXIq
IGRhdGEpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRS
YXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKICAgICBzaXplX3QgcHJldmlvdXNEYXRhTGVu
Z3RoID0gZW5jb2RlZFNpemUoKTsKICAgICBpZiAoIWRhdGEgfHwgZGF0YS0+c2l6ZSgpIDw9IHBy
ZXZpb3VzRGF0YUxlbmd0aCkKQEAgLTU2LDcgKzU2LDcgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRC
dWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0
YUMKICAgICByZXR1cm4gZGF0YS0+Z2V0U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKIH0K
IAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0
YSkKK3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8vIFNraXAgYW55IHVwZGF0ZUJ1ZmZlcnMgdHJp
Z2dlcmVkIGZyb20gbmVzdGVkIHJ1bmxvb3BzLiBXZSdsbCBoYXZlIHRoZSBjb21wbGV0ZSBidWZm
ZXIgaW4gZmluaXNoTG9hZGluZy4KICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkK
QEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jl
c291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9s
aWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0g
JmRhdGE7CisgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogCiAgICAgYXV0byBw
cmV2aW91c0RhdGFTaXplID0gZW5jb2RlZFNpemUoKTsKICAgICB3aGlsZSAoZGF0YS5zaXplKCkg
PiBwcmV2aW91c0RhdGFTaXplKSB7CkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVz
b3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQog
ICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQg
Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpm
aW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0
YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBtYXkgZ2V0IGhlcmUgc3luY2hyb25vdXNseSBmcm9t
IHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxsYmFjayB0aGVyZSBlbmRzIHVwIHNwaW5uaW5nIGEg
cnVubG9vcC4KQEAgLTEwNywxMiArMTA3LDE0IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZp
bmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAg
ICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXMo
dGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9saWN5ID0gdGhp
cy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOwogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09
IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gZGF0
YTsKLQotICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1l
bnRhbERhdGFDaHVuayhkYXRhKSkgewotICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+
c2l6ZSgpKTsKLSAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVt
ZW50YWxEYXRhLT5kYXRhKCksIGluY3JlbWVudGFsRGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgfQor
ICAgICAgICBpZiAoZGF0YSkgeworICAgICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKTsKKyAgICAgICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0
ZUluY3JlbWVudGFsRGF0YUNodW5rKGRhdGEpKSB7CisgICAgICAgICAgICAgICAgc2V0RW5jb2Rl
ZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdh
c1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUo
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9kYXRhID0g
bnVsbHB0cjsKICAgICB9CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXggODRlMGQ4NDRkNTcxMDk5
NTNhZTZiZmY2NTU2NTk5NTNlMjhiYTY5Yi4uYTc4NjVmOGFkMTc4YWVmYjMyMjBhNTZkY2ZmMTk1
OTkzY2Y5NWFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZv
aWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7Ci0gICAgdm9pZCB1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGRJ
Z25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CkBAIC02Niw3ICs2Niw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNl
KCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2FsbG93RW5jb2RlZERhdGFSZXBsYWNlbWVudDsgfQogCi0gICAg
c3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxE
YXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyKikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxT
aGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopIGNvbnN0OwogICAgIHZvaWQgbm90aWZ5Q2xpZW50c0Rh
dGFXYXNSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwogICAg
IAogI2lmIFVTRShRVUlDS19MT09LKQpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIFZl
Y3RvcjxSZWRpcmVjdFBhaXIsIDAsIENyYXNoT25PdmVyZmxvdywgMD4gbV9yZWRpcmVjdENoYWlu
OwogCiAgICAgc3RydWN0IERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxEZWxheWVkRmluaXNo
TG9hZGluZz4gbV9kZWxheWVkRmluaXNoTG9hZGluZzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCAzZTQ0NmZiOTE3NGZmNjgyMDAw
MTE0YTcyYTNlMmEwMTBlNzgxMDg4Li45ZGUwYTA0Y2Q1ZWM1ZjNmYWQyZmIxNmQ3YjMyMmM4NThh
MzhhNmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05vdGlm
eShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVudC0+bm90
aWZ5RmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1
cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1
ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikKIHsKICAgICBBU1NFUlQoZGF0YUJ1
ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogfQpA
QCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3Qg
dWludDhfdCosIHVuc2lnbmVkKQogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRS
ZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7
CkBAIC05MjksOCArOTI5LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29k
ZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogICAgIGlmICgqbV9kYXRhICE9IG5ld0J1
ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLT5jbGVhcigpOwotICAgIG1fZGF0
YS0+YXBwZW5kKG5ld0J1ZmZlcik7CisgICAgbV9kYXRhID0gUmVmIHsgbmV3QnVmZmVyIH07CiAg
ICAgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggMzk2MDAyODMyY2MxNTNjNTkw
NDc4Y2EyNTE4MTNlNmMwMzViYzI3OC4uYzk4MmRkNjkzN2EwYmMyYmYzOGM0MjYxMjZmZmU2ZTc4
Yzc5NjQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgQ29va2llSmFyOwogY2xhc3MgTWVtb3J5Q2FjaGU7
CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJy
ZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiAKQEAgLTExMiw5ICsx
MTIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNv
dXJjZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVm
ZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZpcnR1
YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZv
aWQgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNl
RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApp
bmRleCA3ZGExNDg1MWE3MDc4NGFhYmU5ODM5YjcwNmEwYjFiMzMxZjJjODM5Li5kYjQzMTYwN2Fl
NTYzODMwMzgwMGRkMjU5YzEwMzRjZDA5MGZjZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKQEAgLTUyLDEyICs1MiwxMiBAQCBT
dHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9k
ZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRTVkdEb2N1bWVudDo6
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8g
Y3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBiZWxvbmdzIHRvIHRo
ZSBwYXJlbnQgVXNlRWxlbWVudC4KICAgICAgICAgbV9kb2N1bWVudCA9IFNWR0RvY3VtZW50Ojpj
cmVhdGUobnVsbHB0ciwgbV9zZXR0aW5ncywgcmVzcG9uc2UoKS51cmwoKSk7Ci0gICAgICAgIG1f
ZG9jdW1lbnQtPnNldENvbnRlbnQobV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChkYXRhLT5kYXRh
KCksIGRhdGEtPnNpemUoKSkpOworICAgICAgICBtX2RvY3VtZW50LT5zZXRDb250ZW50KG1fZGVj
b2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpKTsKICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0
YSwgbWV0cmljcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdEb2N1bWVudC5oCmluZGV4IGU4YzE1ZjM2MGZjOTFhYzhiMzRkMzk2Mjk1YzUzZDNjN2YxNDdl
YWEuLjQ0NWU0ZjlmNDJjM2MyNzQwNzk3NmE2NGU5MTU0MDdmOGI1MzRkMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC00Myw3ICs0
Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25zdCBU
ZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9j
dW1lbnQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCBhOGVmNTc2
YmI2OTM5MzNhMjIzNDY5NTU1NzU2YjM2NjdlNDg2MzJlLi5kMmMxZGU0N2VmYjc4MTM5OGY0NDM4
YjdjYTRlYTI2MGUyMjE5NzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNWR0ZvbnQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5z
dXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogCiAgICAgICAg
ICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSBkaXNh
YmxlZFNjb3BlOwogCi0gICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRl
bnQoZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgp
KSk7CisgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rl
ci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1fZGF0
YS0+c2l6ZSgpKSk7CiAgICAgICAgICAgICBzYXdFcnJvciA9IGRlY29kZXItPnNhd0Vycm9yKCk7
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmNwcAppbmRleCA1NGU2NzZjZTUwYjA5NmI1NjA3YzNjMDMwZjdkOWFjYzA1YzRmYTg4Li42MmEx
NmU4NmIzMjE5M2Q4ZTU2ZDYxOTJmNzdlOWJjNmY0MDhlOWJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtOTYsMTAgKzk2LDE1IEBAIHVuc2ln
bmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAgICAgcmV0dXJuIG1fc2NyaXB0SGFzaDsK
IH0KIAotdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNjcmlwdDo6
ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKLSAgICBz
ZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CisgICAgaWYgKGRhdGEpIHsK
KyAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5j
b2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2RhdGEgPSBu
dWxscHRyOworICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKKyAgICB9CiAgICAgQ2FjaGVkUmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0cmljcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5MjRiODRjYTJkODcxNmUzNDYwNzdl
ZWViNWNjMzRiY2VkZTdlMjNkLi44NjUxZTYzOWFkOTA2MTcyODU2MWMzMjRiZmE3YWY0Y2Y5N2Y2
ZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCkBAIC00
Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcm
KSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBU
ZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNo
TG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CiAKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmlu
ZGV4IDEyMjk4MTUwMzEyODg2MWVjNGY1ZWI0Y2Y1MGYzMjA4NmI1ZGViNjEuLjBjODQyOGJiOTlk
YjZkZmIxNmEzNDgxMzRjMzgyNjgzNmNjZTU0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCkBAIC00MCwxMCArNDAsMTAgQEAgQ2FjaGVk
VGV4dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgUEFMOjpTZXNzaW9uSUQKIHsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRl
QnVmZmVyKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0
ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEFTU0VS
VChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0
YSk7Ci0gICAgbV9kYXRhID0gZGF0YTsKKyAgICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKSA6IFJlZlB0cjxTaGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5jb2RlZFNpemUo
ZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxr
ZXI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwpAQCAtNTEsMTMgKzUx
LDEzIEBAIHZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIq
IGRhdGEpCiAgICAgICAgIGNsaWVudC0+ZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJj
ZSgqdGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoU2hhcmVk
QnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGRvVXBkYXRlQnVmZmVyKCZkYXRh
KTsKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogfQogCi12b2lkIENh
Y2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hM
b2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBD
YWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAppbmRleCA4NWUzOTYyMDY1MTMx
NjA3MDM2NTNlYjIyYzc3MTM4YjkxNTA3YWRkLi4wOWI0MzM5YTM3YjY3M2IyYWM0ZmRhZTE0NmIy
OWI5NjQ3NzdmY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRl
eHRUcmFjay5oCkBAIC0zNSwxMCArMzUsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJv
b2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAg
IHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsK
IAotICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBkb1Vw
ZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZTNlMmY1ZTk2NDg3OTQ3OTJmMTg5MGY0NjdhMjc4
MjYxNWQzNDAwYy4uZDJlZmYyZDJkNDBjOTI3NzM4NzU2YzRhOGYwY2JiOTM0M2JlMTBhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmNwcApAQCAtNjEsMTIgKzYxLDE2IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNv
ZGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9
CiAKLXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkWFNM
U3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7Ci0gICAgbV9kYXRhID0g
ZGF0YTsKLSAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7Ci0gICAg
aWYgKGRhdGEpCi0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGRh
dGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgbV9k
YXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0
YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2go
bV9kYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1f
ZGF0YSA9IG51bGxwdHI7CisgICAgICAgIHNldEVuY29kZWRTaXplKDApOworICAgIH0KICAgICBz
ZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmluZGV4IDY4
NDJiNjQ0ZjYxY2Y5MGY3ZjYxYjJmN2VjNWUwMDY1NGNkMTBjY2MuLmJkMjMxMjE0ZjJkMjBiYTM5
NjQ0NjAzNjZlMDQxYjk0MTM1YWM0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVu
Y29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4
dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsg
fQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAg
U3RyaW5nIG1fc2hlZXQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2Rl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgK
aW5kZXggNTUyNTYxZDZjODE2ZDNkMjBiY2ZjY2IyZTY1ODNiN2RlOTRiOTRhMi4uZThiZTFiMjEz
NzZhMDU4NjlkMGU2MjVjZDg0YmJlYTJjOGVhMjhhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lu
Y2x1ZGUgIlByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaCIKICNpbmNsdWRlICJQcmV2aWV3Q29udmVy
dGVyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KQEAgLTM3LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
TGVnYWN5UHJldmlld0xvYWRlckNsaWVudDsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTGVnYWN5UHJl
dmlld0xvYWRlciBmaW5hbCA6IHByaXZhdGUgUHJldmlld0NvbnZlcnRlckNsaWVudCwgcHJpdmF0
ZSBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgYm9vbCBkaWRSZWNlaXZlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgZGlkUmVjZWl2ZUJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBib29sIGRpZFJlY2VpdmVCdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIGJvb2wgZGlkRmluaXNoTG9hZGluZygp
OwogICAgIHZvaWQgZGlkRmFpbCgpOwogCkBAIC02MCwxNyArNjAsMTcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hVcGRhdGluZyhQcmV2aWV3Q29udmVydGVy
JikgZmluYWwgeyB9OwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxVcGRhdGluZyhQ
cmV2aWV3Q29udmVydGVyJikgZmluYWw7CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkU3Rh
cnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKLSAgICB2b2lkIHByZXZpZXdD
b252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hhcmVkQnVm
ZmVyJikgZmluYWw7CisgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJl
dmlld0NvbnZlcnRlciYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAg
ICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0
ZXImKSBmaW5hbDsKICAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsQ29udmVydGluZyhQ
cmV2aWV3Q29udmVydGVyJikgZmluYWw7CiAKICAgICAvLyBQcmV2aWV3Q29udmVydGVyUHJvdmlk
ZXIKLSAgICB2b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZp
ZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciop
PiYmKSBmaW5hbDsKKyAgICB2b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVy
dGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqKT4mJikgZmluYWw7CiAgICAgdm9pZCBwcm92aWRlUGFzc3dvcmRG
b3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVy
dGVyPiBtX2NvbnZlcnRlcjsKICAgICBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbV9j
bGllbnQ7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9vcmlnaW5hbERhdGE7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBtX29yaWdpbmFsRGF0YTsKICAgICBXZWFrUHRyPFJlc291cmNlTG9hZGVy
PiBtX3Jlc291cmNlTG9hZGVyOwogICAgIGJvb2wgbV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0Nv
bnZlcnRlciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlIHsgZmFs
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmll
d0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5tbQppbmRleCBkMThiMjUyZTk3NTZjOGNlMGM5NWI2M2U3OGRkMDA5N2VmMmE1NzM0Li4zNWY2
YzE0OTlhNTRiNDAwMDkzYmMyZTg5MmQ3OTgzNzYwM2Q2YzA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC02MywxMyArNjMsMTMg
QEAgc3RhdGljIFJlZjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBtYWtlQ2xpZW50KGNvbnN0
IFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGMKICAgICByZXR1cm4gZW1wdHlDbGllbnQoKTsKIH0K
IAotYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAobV9m
aW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgTE9HKE5ldHdvcmssICJMZWdhY3lQcmV2aWV3TG9hZGVyIGFwcGVuZGluZyBidWZmZXIg
d2l0aCBzaXplICVsZC4iLCBidWZmZXIuc2l6ZSgpKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+YXBw
ZW5kKGJ1ZmZlcik7CisgICAgbV9vcmlnaW5hbERhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgbV9j
b252ZXJ0ZXItPnVwZGF0ZU1haW5SZXNvdXJjZSgpOwogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
QnVmZmVyKGJ1ZmZlcik7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9p
ZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5n
KFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2hh
c1Byb2Nlc3NlZFJlc3BvbnNlKTsKLSAgICBtX29yaWdpbmFsRGF0YS0+Y2xlYXIoKTsKKyAgICBt
X29yaWdpbmFsRGF0YS5lbXB0eSgpOwogICAgIHJlc291cmNlTG9hZGVyLT5kb2N1bWVudExvYWRl
cigpLT5zZXRQcmV2aWV3Q29udmVydGVyKFdURk1vdmUobV9jb252ZXJ0ZXIpKTsKICAgICBhdXRv
IHJlc3BvbnNlIHsgY29udmVydGVyLnByZXZpZXdSZXNwb25zZSgpIH07CiAKQEAgLTE0Nyw3ICsx
NDcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFy
dENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYgYwogICAgIH0pOwogfQogCi12b2lkIExlZ2Fj
eVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29u
dmVydGVyJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBMZWdhY3lQcmV2aWV3TG9h
ZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgYXV0byByZXNvdXJjZUxv
YWRlciA9IG1fcmVzb3VyY2VMb2FkZXIuZ2V0KCk7CiAgICAgaWYgKCFyZXNvdXJjZUxvYWRlcikK
QEAgLTIyNCwxMCArMjI0LDEwIEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZVBh
c3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjCiAgICAgbV9jbGll
bnQtPmRpZFJlcXVlc3RQYXNzd29yZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAK
LXZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdD
b252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBMZWdh
Y3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQ
cmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09IG1fY29udmVydGVyKTsKLSAgICBj
b21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5wdHIoKSk7CisgICAgY29tcGxldGlvbkhh
bmRsZXIobV9vcmlnaW5hbERhdGEuZ2V0KCkuZ2V0KCkpOwogfQogCiBMZWdhY3lQcmV2aWV3TG9h
ZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsKQEAgLTIzNSw3ICsyMzUsNyBA
QCBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0gZGVmYXVsdDsK
IExlZ2FjeVByZXZpZXdMb2FkZXI6OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3VyY2VMb2FkZXIm
IGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgOiBtX2NvbnZl
cnRlciB7IFByZXZpZXdDb252ZXJ0ZXI6OmNyZWF0ZShyZXNwb25zZSwgKnRoaXMpIH0KICAgICAs
IG1fY2xpZW50IHsgbWFrZUNsaWVudChsb2FkZXIsIG1fY29udmVydGVyLT5wcmV2aWV3RmlsZU5h
bWUoKSwgbV9jb252ZXJ0ZXItPnByZXZpZXdVVEkoKSkgfQotICAgICwgbV9vcmlnaW5hbERhdGEg
eyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fb3JpZ2luYWxEYXRhIHsgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpIH0KICAgICAsIG1fcmVzb3VyY2VMb2FkZXIgeyBs
b2FkZXIgfQogICAgICwgbV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVy
LmZyYW1lKCktPnNldHRpbmdzKCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNr
TG9va1ByZXZpZXcoKSB9CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCA4MjM3
NGU3MjYyYzcwZWE5ZGZlNGQ2NGYyNWFiMTM1YWE2MDMzM2NmLi5lYTYxNWRmZjRkZDBlZDUxNGJm
ZjY0NDI2NDdlYzQ2MjBmNjMyMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Vk
aXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAg
LTM4LDEyICszOCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgRE9NUGFz
dGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBL
ZXlib2FyZEV2ZW50OwogY2xhc3MgTm9kZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBjbGFzcyBUZXh0
Q2hlY2tlckNsaWVudDsKIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CkBAIC03OCw3ICs3OSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUoY29u
c3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTaW1wbGVSYW5nZSYpID0gMDsKIAogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8q
IGNvbnRlbnRUeXBlICovLCBjb25zdCBTdHJpbmcmIC8qIHByZWZlcnJlZEZpbGVOYW1lICovLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2ht
ZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmlu
ZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogcHJlZmVycmVkRmlsZU5hbWUg
Ki8sIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIg
Ki8sIGNvbnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogZmls
ZVBhdGggKi8pIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3Rv
cjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLykg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDE2NWFhODA1OGEw
MzkwYjQ1MTU3OWExNDc2MWJkODY3OTQ5MzY0MzMuLjAyMDAxYWIzNDMwMThhNzMyNTU5OThmYzQ3
NGNlYmZjNDlmOGM4NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlh
bGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBA
IC0yNzMsNyArMjczLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNl
cyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGltYWcKICAgICBpZiAoIWltYWdl
IHx8IGltYWdlLT5pbWFnZSgpID09ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVyID8gaW1h
Z2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVyID8gaW1hZ2Ut
PmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CiAgICAgaWYgKCFk
YXRhKQogICAgICAgICBkYXRhID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKIApAQCAtMjgyLDcg
KzI4Miw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVk
SW1hZ2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBpbWFnCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGltYWdlLT5yZXNwb25zZSgpLm1pbWVU
eXBlKCksIFdURk1vdmUoZGF0YSkgfSk7CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBp
bWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBkYXRhLT5tYWtlQ29udGlndW91cygpIH0pOwog
ICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJl
RGF0YVJlYWRlci5jcHAKaW5kZXggOTZhZDA4MjU0M2RkNTNhODc5YmU1MWM2ZDkyMWQ3YWZmZjQy
ZThlMC4uNzU4MzZiODc5MTQzYjYwYTdmMzUxOTcwMzIwN2I2YWQzZDhkNGY4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBTaGFyZURhdGFSZWFkZXI6OlNoYXJlRGF0YVJlYWRlcihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKQogewotICAgIAorCiB9CiAKIFNoYXJlRGF0YVJlYWRlcjo6flNoYXJlRGF0
YVJlYWRlcigpCkBAIC03MSwxNSArNzEsMTUgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRpZEZp
bmlzaExvYWRpbmcoaW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKICAgICAg
ICAgY2FuY2VsKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBhdXRvIGFy
cmF5QnVmZmVyID0gbV9wZW5kaW5nRmlsZUxvYWRzW2xvYWRJbmRleF0tPmFycmF5QnVmZmVyUmVz
dWx0KCk7Ci0gICAgCisKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9IGZp
bGVOYW1lOwogICAgIGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVm
ZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChXVEZNb3Zl
KGZpbGUpKTsKICAgICBtX2ZpbGVzUmVhZFNvRmFyKys7Ci0gICAgCisKICAgICBpZiAobV9maWxl
c1JlYWRTb0ZhciA9PSBzdGF0aWNfY2FzdDxpbnQ+KG1fcGVuZGluZ0ZpbGVMb2Fkcy5zaXplKCkp
KSB7CiAgICAgICAgIG1fcGVuZGluZ0ZpbGVMb2Fkcy5jbGVhcigpOwogICAgICAgICBpZiAoYXV0
byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwg
eyB9KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCmluZGV4
IGUzODA2ZTg3ZGY3OWEzZDliNWNhZTEyMTRkZTY2YWEyYTY1ODQ3ZGIuLmZjNjZjMzY1YTJmMjlh
NGM3OGU2MDYxOWU0N2E3MWM3MjU4ZDhmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Tm93UGxheWluZ01hbmFnZXIuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6
b3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IG1fbm93UGxheWluZ0luZm87CiAgICAgc3RydWN0IEFy
dHdvcmtDYWNoZSB7CiAgICAgICAgIFN0cmluZyBzcmM7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGltYWdlRGF0YTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGltYWdlRGF0YTsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8QXJ0d29ya0NhY2hlPiBtX25v
d1BsYXlpbmdJbmZvQXJ0d29yazsKICAgICBib29sIG1fc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRp
b24geyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCAx
NTczMWViMjNmYTc2OTQ5NjBkZDgwNDk2ZmE4ZjJmOWU4Yzc3ODBmLi4wN2VkNDhlNTg4NGVjZWVk
YzYxZmQ5M2U2YjIyMTcxYmU4ODU4OWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmNwcApAQCAtODksNyArODksNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICByZXR1cm4geyB9OwogfQogCi1S
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQogICAgICAgICByZXR1cm4gc3RyYXRlZ3ktPnJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgdHlwZSwgbmFtZSgpLCBjb250ZXh0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDdkMjQ3ZGNkMWExNmYzNDJjMTc1
NGM0NWM0YTczNTI5YmY4ZjcxYjIuLjM1NzYzZWUxMmEzOTBlZmM4NDUyYzM1ODA2YjUxMmJlNDI5
YWQ5NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDEyICs2MSwx
MyBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERy
YWdEYXRhOwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgUGFzdGVib2FyZFN0
cmF0ZWd5OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIAogc3RydWN0IFNpbXBsZVJhbmdlOwogCkBAIC0xNDcsMTYgKzE0OCwxNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRp
b25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUgPSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRocyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEhUTUwoY29uc3Qg
U3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNl
bnRhdGlvblNpemUgPSB7IH0pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZEltYWdlKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlv
blNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSA9IDA7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFy
ZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYp
ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSA9IDA7Ci0gICAg
dmlydHVhbCBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNl
bnRhdGlvblNpemUgPSB7IH0pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFdlYkFyY2hpdmUo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkRGF0YUJ1
ZmZlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9
IHsgfSkgPSAwOwogI2VuZGlmCiB9OwogCkBAIC0xNzEsNyArMTcyLDcgQEAgc3RydWN0IFBhc3Rl
Ym9hcmRGaWxlUmVhZGVyIHsKICAgICB2aXJ0dWFsIH5QYXN0ZWJvYXJkRmlsZVJlYWRlcigpID0g
ZGVmYXVsdDsKICAgICB2aXJ0dWFsIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIC8qIHR5
cGUgKi8pIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVhZEJ1ZmZl
cihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSA9IDA7CiB9OwogCiBjbGFzcyBQYXN0ZWJvYXJkIHsKQEAgLTI5Niw3ICsyOTcsNyBAQCBw
dWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IHBhc3RlYm9hcmRJ
dGVtSW5mbyhzaXplX3QgaW5kZXgpIGNvbnN0OwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNp
emVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICBVUkwgcmVhZFVSTChzaXplX3Qg
aW5kZXgsIFN0cmluZyYgdGl0bGUpOwogCiAgICAgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNv
bnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCA5ZDNmODdhOTEx
NGMzOGE1NGUzM2EwNWUyYjk4OTUyY2NmNjdhZTcwLi43YjRiM2QzNmFhNjgwMzYxMTg3OTEzMWI1
YTFiMjI2YjU4OGQzNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZEN1c3RvbURhdGEuY3BwCkBAIC0zMywxMyArMzMsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+IGNv
cHlQbGF0Zm9ybURhdGEoY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZl
cj4+JiBvdGhlcikKK3N0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+IGNvcHlQbGF0Zm9ybURhdGEoY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYgb3RoZXIpCiB7CiAgICAgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihvdGhlcikpCiAgICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0
PFN0cmluZz4ob3RoZXIpIH07CiAKLSAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
U2hhcmVkQnVmZmVyPj4ob3RoZXIpKQotICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxSZWY8U2hh
cmVkQnVmZmVyPj4ob3RoZXIpLmNvcHlSZWYoKSB9OworICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ob3RoZXIpKQorICAgICAgICByZXR1
cm4geyBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG90aGVyKS5jb3B5UmVm
KCkgfTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIHZhbHVlKQogICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZvcm1EYXRh
ID0geyB2YWx1ZSB9OwogfQogCi12b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlw
ZSkucGxhdGZvcm1EYXRhID0geyBXVEZNb3ZlKGRhdGEpIH07CiB9CkBAIC0yMDIsMTQgKzIwMiwx
NCBAQCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6c2FtZU9y
aWdpbkN1c3RvbVN0cmluZ0RhdGEoKSBjb25zdAogICAgIHJldHVybiBjdXN0b21EYXRhOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihj
b25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
UGFzdGVib2FyZEN1c3RvbURhdGE6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25z
dAogewogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgaWYgKGVudHJ5
LnR5cGUgIT0gdHlwZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEp
KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5w
bGF0Zm9ybURhdGEpLmNvcHlSZWYoKTsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpKQorICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oZW50
cnkucGxhdGZvcm1EYXRhKS5jb3B5UmVmKCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQpAQCAtMjY1LDExICsyNjUsMTEgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9y
RWFjaEN1c3RvbVN0cmluZyhGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwKICAgICB9
CiB9CiAKLXZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZvckVhY2hQbGF0Zm9ybVN0cmluZ09y
QnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlh
bnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25zdAor
dm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIo
RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJp
bmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9uKSBjb25z
dAogewogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgYXV0byYgZGF0
YSA9IGVudHJ5LnBsYXRmb3JtRGF0YTsKLSAgICAgICAgaWYgKChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFN0cmluZz4oZGF0YSkgJiYgIXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkuaXNOdWxsKCkpIHx8
IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQorICAgICAg
ICBpZiAoKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8
U3RyaW5nPihkYXRhKS5pc051bGwoKSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQogICAgICAgICAgICAgZnVuY3Rpb24oZW50cnku
dHlwZSwgZGF0YSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmgKaW5kZXggMmJlODFkMjkzOGEzZGJkMDkwMjZjYTZlYzY0YWMzMjg3
ZTZhYmMwMy4uOTdmZjk4NWUyNGUxMWI0YzdiYjQxNDM3MzdmMDI4NDBjMzVmZmNlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC0zNSw2
ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRh
IHsKIHB1YmxpYzoKQEAgLTQ4LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgICAgIFN0cmluZyB0
eXBlOwogICAgICAgICBTdHJpbmcgY3VzdG9tRGF0YTsKLSAgICAgICAgc3RkOjp2YXJpYW50PFN0
cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+IHBsYXRmb3JtRGF0YTsKKyAgICAgICAgc3RkOjp2YXJp
YW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBwbGF0Zm9ybURhdGE7CiAg
ICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFBhc3RlYm9hcmRDdXN0b21EYXRhKCk7CkBAIC02
NSwxMSArNjYsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRl
Y29kZXImJik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpIGNv
bnN0OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0
eXBlKSBjb25zdDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
cihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwogICAgIFN0cmluZyByZWFkU3RyaW5nSW5DdXN0
b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAKICAgICB2b2lkIHdyaXRlU3RyaW5n
KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdm9pZCB3cml0
ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAg
IHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgZGF0YSk7CiAgICAgdm9pZCB3cml0ZVN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiAgICAgdm9pZCBjbGVhcigpOwpA
QCAtODMsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZvckVhY2hUeXBlKEZ1bmN0aW9u
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYpIGNvbnN0OwogICAgIHZvaWQgZm9yRWFjaFBsYXRmb3Jt
U3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRh
dGEpPiYmKSBjb25zdDsKLSAgICB2b2lkIGZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1
bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5n
LCBSZWY8U2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmKSBjb25zdDsKKyAgICB2b2lkIGZvckVhY2hQ
bGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiBk
YXRhKT4mJikgY29uc3Q7CiAgICAgdm9pZCBmb3JFYWNoQ3VzdG9tU3RyaW5nKEZ1bmN0aW9uPHZv
aWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpPiYmKSBjb25zdDsKIAog
ICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCAxYzA3MjZmZWIzZTAyYWVkMzJiNDZmMjYyYmNkYTE2OWQ2
NzJlYjJjLi5jNDFlMDg1MjQ0OTZjNjdmMWYxNTAzOGZiYjI2ZTljMjlkYTY5OGM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsMTAgKzMx
LDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQ
YXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKQEAgLTYyLDcgKzYzLDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRUeXBl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAgICB2aXJ0dWFs
IGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7
CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAg
ICAgdmlydHVhbCBpbnQ2NF90IHNldENvbG9yKGNvbnN0IENvbG9yJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVh
bCBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
Q29udGVudEZpbHRlci5oCmluZGV4IDNmNDgzMmE1YTY1OGMxY2M3YzBhYTEzYjI2ZTBlYTQ3MzNl
OWQzYjcuLjllNzJlNDRhMmVhYzRkOGVmNzMwYjk4NzFkMGVjNTA4ZWQ5ZmFjNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCkBAIC0zNCw3
ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVj
ZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWRk
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpID0gMDsKLSAgICB2aXJ0dWFsIFJlZjxTaGFyZWRCdWZm
ZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCA9IDA7CiAjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKQogICAgIHZpcnR1YWwgQ29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyIHVuYmxvY2tIYW5kbGVyKCkgY29uc3QgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDdhMmEzMTAwNzQyNTAwMjQzYmI0
NmZmNTk4Njg2MWU4NGEyZmQ5NmUuLjcxZGZiOTNlNTc1NjBlMzNhN2Y2YzgwYzIwZjkyZDViMmNh
ZWMxMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVi
b2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5o
CkBAIC00NywxMyArNDcsMTQgQEAgc3RydWN0IHdwZV9wYXN0ZWJvYXJkOwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDb2xvcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwog
c3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybVBhc3RlYm9hcmQgewog
cHVibGljOgpAQCAtODUsNyArODYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2Rz
IHdpbGwgcmV0dXJuIDAgaWYgcGFzdGVib2FyZCBvd25lcnNoaXAgaGFzIGJlZW4gdGFrZW4gZnJv
bSB1cy4KICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IGNvcHkoY29uc3QgU3RyaW5nJiBmcm9t
UGFzdGVib2FyZCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBl
KFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNP
UkVfRVhQT1JUIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50
NjRfdCBzZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGlu
dDY0X3Qgc2V0Q29sb3IoY29uc3QgQ29sb3ImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90
IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVy
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmlu
ZGV4IDRjYjMzMDFlN2RmNzA3MWM1ZGQ5ZmM1OWJjNTcxODVjNGU5MTQ3NjguLmE0ZTA4NzUwOWU1
OTRkMTg3MTEyNWQxM2M5OTUzYzRlNDM5NDkzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJQ
cmV2aWV3Q29udmVydGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlclByb3Zp
ZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KIApAQCAtNjMsOSArNjIsOSBAQCBjb25z
dCBSZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25zdAog
ICAgIHJldHVybiBtX3ByZXZpZXdFcnJvcjsKIH0KIAotY29uc3QgU2hhcmVkQnVmZmVyJiBQcmV2
aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgpIGNvbnN0Citjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fcHJldmlld0RhdGEuZ2V0KCk7CisgICAgcmV0dXJuICptX3ByZXZpZXdEYXRhLmdldCgp
OwogfQogCiB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSgpCkBAIC05
MCw3ICs4OSw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkK
ICAgICB9KTsKIH0KIAotdm9pZCBQcmV2aWV3Q29udmVydGVyOjphcHBlbmRGcm9tQnVmZmVyKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBQcmV2aWV3Q29udmVydGVyOjphcHBlbmRG
cm9tQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICB3
aGlsZSAoYnVmZmVyLnNpemUoKSA+IG1fbGVuZ3RoQXBwZW5kZWQpIHsKICAgICAgICAgYXV0byBu
ZXdEYXRhID0gYnVmZmVyLmdldFNvbWVEYXRhKG1fbGVuZ3RoQXBwZW5kZWQpOwpAQCAtMjIxLDgg
KzIyMCw4IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVwbGF5VG9DbGllbnQoUHJldmlld0Nv
bnZlcnRlckNsaWVudCYgY2xpZW50KQogICAgIEFTU0VSVChtX3N0YXRlID49IFN0YXRlOjpDb252
ZXJ0aW5nKTsKICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZygq
dGhpcyk7CiAKLSAgICBpZiAoIW1fcHJldmlld0RhdGEtPmlzRW1wdHkoKSAmJiBoYXNDbGllbnQo
Y2xpZW50KSkKLSAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgq
dGhpcywgbV9wcmV2aWV3RGF0YS5nZXQoKSk7CisgICAgaWYgKCFtX3ByZXZpZXdEYXRhLmlzRW1w
dHkoKSAmJiBoYXNDbGllbnQoY2xpZW50KSkKKyAgICAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0
ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgKm1fcHJldmlld0RhdGEuZ2V0KCkpOwogCiAgICAgaWYg
KG1fc3RhdGUgPT0gU3RhdGU6OkNvbnZlcnRpbmcgfHwgIWhhc0NsaWVudChjbGllbnQpKQogICAg
ICAgICByZXR1cm47CkBAIC0yMzQsMTIgKzIzMywxMiBAQCB2b2lkIFByZXZpZXdDb252ZXJ0ZXI6
OnJlcGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVudCkKICAgICB9CiAK
ICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6RmluaXNoZWRDb252ZXJ0aW5nKTsKLSAgICBB
U1NFUlQoIW1fcHJldmlld0RhdGEtPmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKCFtX3ByZXZpZXdE
YXRhLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKG1fcHJldmlld0Vycm9yLmlzTnVsbCgpKTsKICAg
ICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRpbmcoKnRoaXMpOwogfQog
Ci12b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBkYXRhKQordm9pZCBQcmV2aWV3Q29udmVydGVyOjpkZWxlZ2F0ZURpZFJlY2Vp
dmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgYXV0byBw
cm90ZWN0ZWRUaGlzIHsgUmVmIHsgKnRoaXMgfSB9OwogCkBAIC0yNTYsNyArMjU1LDcgQEAgdm9p
ZCBQcmV2aWV3Q29udmVydGVyOjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSkKICAgICBpZiAoZGF0YS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcHJldmlld0RhdGEtPmFwcGVuZChkYXRhKTsKKyAgICBtX3ByZXZpZXdEYXRhLmFwcGVu
ZChkYXRhKTsKIAogICAgIGl0ZXJhdGVDbGllbnRzKFsmXShhdXRvJiBjbGllbnQpIHsKICAgICAg
ICAgY2xpZW50LnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YSgqdGhpcywgZGF0YSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXggMmEzNzI5MjI3
OTljZTZhZmZhYWIzZTE0MGQxOTBiYTY0Y2Y4Y2UyYi4uNWFlZGEzYjcyZjQwYmE1YWY3NDExMmMw
MDQ1N2Y5NjZhN2EwM2I2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgog
I2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNDEsMTUgKzQyLDEzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3Owogc3RydWN0
IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVy
OwogCiBzdHJ1Y3QgUHJldmlld1BsYXRmb3JtRGVsZWdhdGUgOiBDYW5NYWtlV2Vha1B0cjxQcmV2
aWV3UGxhdGZvcm1EZWxlZ2F0ZT4gewogICAgIHZpcnR1YWwgflByZXZpZXdQbGF0Zm9ybURlbGVn
YXRlKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURp
ZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRlbGVnYXRlRGlkRmluaXNoTG9hZGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGVsZWdhdGVEaWRGYWlsV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiB9
OwpAQCAtNzIsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBy
ZXZpZXdGaWxlTmFtZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwcmV2aWV3
VVRJKCkgY29uc3Q7CiAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgcHJldmlld0Vycm9yKCkgY29u
c3Q7Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyJiBwcmV2aWV3RGF0YSgpIGNvbnN0OworICAgIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHByZXZpZXdEYXRhKCkgY29uc3Q7CiAKICAgICB2
b2lkIGZhaWxlZFVwZGF0aW5nKCk7CiAgICAgdm9pZCBmaW5pc2hVcGRhdGluZygpOwpAQCAtOTQs
NyArOTMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNQbGF0Zm9ybVBhc3N3b3JkRXJyb3IoY29u
c3QgUmVzb3VyY2VFcnJvciYpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9p
ZCBpdGVyYXRlQ2xpZW50cyhUJiYgY2FsbGJhY2spOwotICAgIHZvaWQgYXBwZW5kRnJvbUJ1ZmZl
cihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGFwcGVuZEZyb21CdWZmZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkQWRkQ2xpZW50KFByZXZpZXdD
b252ZXJ0ZXJDbGllbnQmKTsKICAgICB2b2lkIGRpZEZhaWxDb252ZXJ0aW5nV2l0aEVycm9yKGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZEZhaWxVcGRhdGluZygpOwpAQCAtMTA2
LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVVubG9ja1dpdGhQYXNzd29y
ZChjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlCi0gICAg
dm9pZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwor
ICAgIHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJikgZmluYWw7CiAgICAgdm9pZCBkZWxlZ2F0ZURpZEZpbmlzaExvYWRpbmcoKSBmaW5hbDsK
ICAgICB2b2lkIGRlbGVnYXRlRGlkRmFpbFdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikg
ZmluYWw7CiAKQEAgLTExOCw3ICsxMTcsNyBAQCBwcml2YXRlOgogICAgICAgICBGaW5pc2hlZENv
bnZlcnRpbmcsCiAgICAgfTsKIAotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fcHJldmlld0RhdGE7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX3ByZXZpZXdEYXRhOwogICAgIFJlc291cmNlRXJy
b3IgbV9wcmV2aWV3RXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX29yaWdpbmFsUmVzcG9u
c2U7CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpVcGRhdGluZyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oCmluZGV4IDA0ZWEzNjgw
NjkyYjI1MmExOTg5YzI2Y2EyMDQyMTI3NzdhYTNiN2IuLjljZWU5MzMyMGIyMzhiNGNkNzNjZGQy
ZTAzMDJjM2JmNGRhZDY4YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2
aWV3Q29udmVydGVyQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBQcmV2aWV3Q29udmVydGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQ
cmV2aWV3Q29udmVydGVyQ2xpZW50IDogQ2FuTWFrZVdlYWtQdHI8UHJldmlld0NvbnZlcnRlckNs
aWVudD4gewogICAgIHZpcnR1YWwgflByZXZpZXdDb252ZXJ0ZXJDbGllbnQoKSA9IGRlZmF1bHQ7
CkBAIC00Miw3ICs0Miw3IEBAIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50IDogQ2FuTWFr
ZVdlYWtQdHI8UHJldmlld0NvbnZlcnRlckNsaWVudD4gewogICAgIHZpcnR1YWwgdm9pZCBwcmV2
aWV3Q29udmVydGVyRGlkRmluaXNoVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxVcGRhdGluZyhQcmV2aWV3Q29u
dmVydGVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRD
b252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHByZXZp
ZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hhcmVk
QnVmZmVyJiBuZXdEYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJE
aWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgbmV3RGF0YSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlk
RmluaXNoQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpID0g
MDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVy
dGVyUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQ
cm92aWRlci5oCmluZGV4IDgyNzg2MzkzZmNlZDc1NGM4NWY3YjI4OTEyNTJmNTE2YmVkMGQ1NDku
LmI5ODZlZTQwZDE5NzUxNzRmNTRhZDI5YTE2OGNhZGYxODk0NTZjM2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCkBAIC0zMiw3
ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJv
dmlkZXIgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI+IHsKICAgICB2
aXJ0dWFsIH5QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0Nv
bnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252
ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByb3ZpZGVQ
YXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGQ4ZTY4ZTMzNzc4MWZiMjlhZDM5YzU1Yjlh
ZmQzOTAwMzUzNTM4NWQuLmEzMzkyNWQzYWMyNDcyMzAwZTA3N2NmMjA3NmRjODFlMDNlNTJmOGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMzcsNjMgKzM3
LDY5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCitSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkKIHsKLSAgICBhcHBlbmQo
ZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcik7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBzaXplKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAg
ICBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoZGF0YSwgc2l6
ZSkpOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIGZpbGVEYXRhKQotICAgIDogbV9zaXplKGZpbGVEYXRhLnNpemUoKSkKK1JlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0YSkKIHsKLSAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSl9KTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUo
bWFwcGVkRmlsZURhdGEpKSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKERhdGFT
ZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQotICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUo
KSkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpj
cmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgbV9zZWdtZW50cy5hcHBl
bmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpfSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikp
KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0
YSkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpj
cmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQogewotICAgIGFwcGVuZChXVEZNb3ZlKGRh
dGEpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdU
Rk1vdmUodmVjdG9yKSkpOwogfQogCi0jaWYgVVNFKEdTVFJFQU1FUikKLVJlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZm
ZXIpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihtYXBwZWRCdWZmZXIpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7CiB9
CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBw
ZWRCdWZmZXIpCi0gICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUoKSkKK0ZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CisKK0ZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKKyAgICA6IG1fc2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7
Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1hcHBlZEJ1
ZmZlcil9KTsKKyAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShmaWxlRGF0YSkpIH0pOwogfQotI2VuZGlmCiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VG
aWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCisg
ICAgOiBtX3NpemUocHJvdmlkZXIuc2l6ZSgpKQogewotICAgIGlmIChtYXlVc2VGaWxlTWFwcGlu
ZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7Ci0gICAgICAgIGJvb2wgbWFwcGluZ1N1Y2Nl
c3M7Ci0gICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZp
bGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwotICAgICAgICBpZiAobWFw
cGluZ1N1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZl
cihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwotICAgIH0KLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoZmlsZVBhdGgpOworICAgIG1fc2VnbWVudHMuYXBw
ZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSkgfSk7CiB9CiAK
LVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYm
IHZlY3RvcikKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOworICAgIGFwcGVuZChXVEZNb3ZlKGJ1ZmZl
cikpOwogfQogCi1zdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29u
c3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXpl
KQorI2lmIFVTRShHU1RSRUFNRVIpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZm
ZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciht
YXBwZWRCdWZmZXIpKTsKK30KKworRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQorICAgIDogbV9z
aXplKG1hcHBlZEJ1ZmZlci5zaXplKCkpCit7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBE
YXRhU2VnbWVudDo6Y3JlYXRlKCZtYXBwZWRCdWZmZXIpIH0pOworfQorI2VuZGlmCisKK3N0YXRp
YyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQogewog
ICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7CiAgICAgY29tYmluZWREYXRhLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CkBAIC0xMDMsMzMgKzEwOSwxOSBAQCBzdGF0aWMgVmVj
dG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudFZlY3RvcgogICAgIHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLXZvaWQgU2hhcmVk
QnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdAorUmVmPFNoYXJlZEJ1ZmZlcj4g
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKSBjb25zdAogewotI2lmIEFT
U0VSVF9FTkFCTEVECi0gICAgLy8gRklYTUU6IFdlIG91Z2h0IHRvIGJlIGFibGUgdG8gc2V0IHRo
aXMgdG8gdHJ1ZSBhbmQgaGF2ZSBubyBhc3NlcnRpb25zIGZpcmUuCi0gICAgLy8gUmVtb3ZlIGFs
bCBpbnN0YW5jZXMgb2YgYXBwZW5kaW5nIGFmdGVyIGNhbGxpbmcgdGhpcywgYmVjYXVzZSB0aGV5
IGFyZSBhbGwgTyhuXjIpIGFsZ29yaXRobXMgc2luY2UgcjIxNTY4Ni4KLSAgICAvLyBtX2hhc0Jl
ZW5Db21iaW5lZEludG9PbmVTZWdtZW50ID0gdHJ1ZTsKLSNlbmRpZgotICAgIGlmIChtX3NlZ21l
bnRzLnNpemUoKSA8PSAxKQotICAgICAgICByZXR1cm47Ci0KKyAgICBpZiAobV9jb250aWd1b3Vz
KQorICAgICAgICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0
X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSB9OworICAgIGlmICghbV9zZWdt
ZW50cy5zaXplKCkpCisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAg
IGlmIChtX3NlZ21lbnRzLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUobV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CiAgICAgYXV0byBjb21i
aW5lZERhdGEgPSBjb21iaW5lU2VnbWVudHNEYXRhKG1fc2VnbWVudHMsIG1fc2l6ZSk7Ci0gICAg
bV9zZWdtZW50cy5jbGVhcigpOwotICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVu
dDo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRhKSl9KTsKLSAgICBBU1NFUlQobV9zZWdtZW50
cy5zaXplKCkgPT0gMSk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOworICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVkRGF0YSkpOwogfQog
Ci1jb25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAotewotICAgIGlmICht
X3NlZ21lbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgY29tYmlu
ZUludG9PbmVTZWdtZW50KCk7Ci0gICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwot
ICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKLX0KLQotVmVjdG9yPHVp
bnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdAorVmVjdG9yPHVpbnQ4X3Q+IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKIHsKICAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YTsKICAgICBkYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSgpKTsKQEAg
LTEzOSw3ICsxMzEsNyBAQCBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgp
IGNvbnN0CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZm
ZXI6OnRha2VEYXRhKCkKK1ZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0
YWtlRGF0YSgpCiB7CiAgICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4geyB9OwpAQCAtMTU0LDEzICsxNDYsMTMgQEAgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZl
cjo6dGFrZURhdGEoKQogICAgIHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLVNoYXJlZEJ1ZmZl
ckRhdGFWaWV3IFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25z
dAorU2hhcmVkQnVmZmVyRGF0YVZpZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURh
dGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdAogewogICAgIGNvbnN0IERhdGFTZWdtZW50VmVjdG9y
RW50cnkqIGVsZW1lbnQgPSBnZXRTZWdtZW50Rm9yUG9zaXRpb24ocG9zaXRpb24pOwogICAgIHJl
dHVybiB7IGVsZW1lbnQtPnNlZ21lbnQuY29weVJlZigpLCBwb3NpdGlvbiAtIGVsZW1lbnQtPmJl
Z2luUG9zaXRpb24gfTsKIH0KIAotY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rv
ckVudHJ5KiBTaGFyZWRCdWZmZXI6OmdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRp
b24pIGNvbnN0Citjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rv
ckVudHJ5KiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6
ZV90IHBvc2l0aW9uKSBjb25zdAogewogICAgIFJFTEVBU0VfQVNTRVJUKHBvc2l0aW9uIDwgbV9z
aXplKTsKICAgICBhdXRvIGNvbXBhcmF0b3IgPSBbXShjb25zdCBzaXplX3QmIHBvc2l0aW9uLCBj
b25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5JiBlbnRyeSkgewpAQCAtMTcxLDcgKzE2Myw3IEBA
IGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogU2hhcmVkQnVmZmVy
OjpnZXRTZWdtZW50Rm9yUG9zaXRpb24oCiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKLVN0cmlu
ZyBTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKK1N0cmluZyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBzdHJp
bmdCdWlsZGVyOwogICAgIGZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CkBAIC0x
ODEsNyArMTczLDcgQEAgU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAog
ICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8
QXJyYXlCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCkgY29uc3QKIHsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSksIDEpOwogICAgIGlm
ICghYXJyYXlCdWZmZXIpIHsKQEAgLTIwMCw2OCArMTkyLDYzIEBAIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiAgICAgcmV0dXJu
IGFycmF5QnVmZmVyOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5D
b21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAg
bV9zZWdtZW50cy5yZXNlcnZlQ2FwYWNpdHkobV9zZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2Vn
bWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBkYXRhLm1fc2Vn
bWVudHMpIHsKLSAgICAgICAgbV9zZWdtZW50cy51bmNoZWNrZWRBcHBlbmQoe21fc2l6ZSwgZWxl
bWVudC5zZWdtZW50LmNvcHlSZWYoKX0pOworICAgICAgICBtX3NlZ21lbnRzLnVuY2hlY2tlZEFw
cGVuZCh7IG1fc2l6ZSwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICAgICAgbV9z
aXplICs9IGVsZW1lbnQuc2VnbWVudC0+c2l6ZSgpOwogICAgIH0KICAgICBBU1NFUlQoaW50ZXJu
YWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgQVNT
RVJUKCFtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50KTsKKyAgICBBU1NFUlQoIW1fY29u
dGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKICAgICB2ZWN0b3IuYXBwZW5k
KGRhdGEsIGxlbmd0aCk7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21l
bnQ6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpfSk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyBt
X3NpemUsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKSB9KTsKICAgICBtX3Np
emUgKz0gbGVuZ3RoOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAot
dm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQordm9pZCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsK
LSAgICBBU1NFUlQoIW1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQpOworICAgIEFTU0VS
VCghbV9jb250aWd1b3VzKTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7Ci0gICAg
bV9zZWdtZW50cy5hcHBlbmQoe21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKX0pOworICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgbV9zaXplLCBEYXRhU2VnbWVudDo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpIH0pOwogICAgIG1fc2l6ZSArPSBkYXRhU2l6ZTsKICAgICBBU1NF
UlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjbGVh
cigpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNsZWFyKCkKIHsKICAgICBtX3NpemUg
PSAwOwogICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNp
c3RlbnQoKSk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNv
bnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
Y29weSgpIGNvbnN0CiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBhZG9wdFJlZigq
bmV3IFNoYXJlZEJ1ZmZlcik7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNsb25l
ID0gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKTsKICAgICBjbG9uZS0+bV9z
aXplID0gbV9zaXplOwogICAgIGNsb25lLT5tX3NlZ21lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1f
c2VnbWVudHMpCi0gICAgICAgIGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7ZWxl
bWVudC5iZWdpblBvc2l0aW9uLCBlbGVtZW50LnNlZ21lbnQuY29weVJlZigpfSk7CisgICAgICAg
IGNsb25lLT5tX3NlZ21lbnRzLnVuY2hlY2tlZEFwcGVuZCh7IGVsZW1lbnQuYmVnaW5Qb3NpdGlv
biwgZWxlbWVudC5zZWdtZW50LmNvcHlSZWYoKSB9KTsKICAgICBBU1NFUlQoY2xvbmUtPmludGVy
bmFsbHlDb25zaXN0ZW50KCkpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsK
ICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQotewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHByb3ZpZGVyKSkpOwotfQotCi12b2lk
IFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNv
bnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9z
ZWdtZW50czsKICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBzZWdtZW50cykKICAgICAgICAgYXBw
bHkoU3BhbiB7IHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUo
KSB9KTsKIH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25z
dCB1aW50OF90PiYgcHJlZml4KSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpz
dGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKIHsKICAg
ICBpZiAocHJlZml4LmVtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjgzLDcgKzI3
MCw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWlu
dDhfdD4mIHByZWZpeCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVZlY3Rvcjx1aW50
OF90PiBTaGFyZWRCdWZmZXI6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29u
c3QKK1ZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7
CiAgICAgaWYgKG9mZnNldCA+PSBzaXplKCkpCkBAIC0zMTAsMTIgKzI5NywxMiBAQCBWZWN0b3I8
dWludDhfdD4gU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgp
IGNvbnN0CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8o
dm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29u
c3QKIHsKICAgICByZXR1cm4gY29weVRvKGRlc3RpbmF0aW9uLCAwLCBsZW5ndGgpOwogfQogCi12
b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0
LCBzaXplX3QgbGVuZ3RoKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5
VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGxlbmd0aCArIG9mZnNldCA8PSBzaXplKCkpOwogICAgIGlmIChvZmZz
ZXQgPj0gc2l6ZSgpKQpAQCAtMzUzLDE0ICszNDAsOCBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29w
eVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25z
dAogICAgIH0KIH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6Omhhc09uZVNlZ21lbnQoKSBjb25zdAot
ewotICAgIGF1dG8gaXQgPSBiZWdpbigpOwotICAgIHJldHVybiBpdCAhPSBlbmQoKSAmJiArK2l0
ID09IGVuZCgpOwotfQotCiAjaWYgQVNTRVJUX0VOQUJMRUQKLWJvb2wgU2hhcmVkQnVmZmVyOjpp
bnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0Citib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIHsKICAgICBzaXplX3QgcG9zaXRpb24gPSAw
OwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpIHsKQEAgLTM3Miw0
MiArMzUzLDEzIEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNv
bnN0CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotY29uc3QgdWludDhfdCogU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgYXV0byB2aXNpdG9yID0g
V1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgW10oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRh
KSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRhLmRhdGEoKTsgfSwKLSNpZiBVU0UoQ0Yp
Ci0gICAgICAgIFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSAtPiBjb25zdCB1
aW50OF90KiB7IHJldHVybiBDRkRhdGFHZXRCeXRlUHRyKGRhdGEuZ2V0KCkpOyB9LAotI2VuZGlm
Ci0jaWYgVVNFKEdMSUIpCi0gICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYgZGF0YSkg
LT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGdf
Ynl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpOyB9LAotI2VuZGlmCi0jaWYgVVNF
KEdTVFJFQU1FUikKLSAgICAgICAgW10oY29uc3QgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVy
PiYgZGF0YSkgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gZGF0YS0+ZGF0YSgpOyB9LAotI2Vu
ZGlmCi0gICAgICAgIFtdKGNvbnN0IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiBkYXRhKSAt
PiBjb25zdCB1aW50OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YS5kYXRhKCkpOyB9LAotICAgICAgICBbXShjb25zdCBQcm92aWRlciYgcHJvdmlkZXIpIC0+IGNv
bnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHByb3ZpZGVyLmRhdGEoKTsgfQotICAgICk7Ci0gICAgcmV0
dXJuIHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKLX0KLQotYm9vbCBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YT4obV9pbW11dGFibGVEYXRhKTsKLX0KLQogI2lmICFVU0UoQ0YpCi12b2lkIFNoYXJlZEJ1
ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB7CiB9CiAjZW5kaWYK
IAotV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25z
dAotewotICAgIHJldHVybiB7eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRh
KCkpLCBzaXplKCkgfX07Ci19Ci0KLWJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0Citib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
Om9wZXJhdG9yPT0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiB7
CiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ1Niw3
ICs0MDgsMTE4IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1
ZmZlciYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVfdCBTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVm
ZmVyKCkKK3sKKyAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOworfQorCitTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkKK3sKKyAgICBtX3NpemUgPSBz
ZWdtZW50LT5zaXplKCk7CisgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBXVEZNb3ZlKHNlZ21l
bnQpIH0pOworICAgIG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1NoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIp
Cit7CisgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQoKSB8fCBjb250
aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOworICAgIG1fc2l6ZSA9IGNvbnRpZ3VvdXNCdWZmZXIt
PnNpemUoKTsKKyAgICBpZiAoY29udGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpKQorICAg
ICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIGNvbnRpZ3VvdXNCdWZmZXItPm1fc2VnbWVudHNb
MF0uc2VnbWVudC5jb3B5UmVmKCkgfSk7CisgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKK30KKwor
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBk
YXRhKQorICAgIDogRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQoreworICAg
IG1fY29udGlndW91cyA9IHRydWU7Cit9CisKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGlu
ZyBtYXlVc2VGaWxlTWFwcGluZykKK3sKKyAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5
VXNlRmlsZU1hcHBpbmc6OlllcykgeworICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOworICAg
ICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwg
bWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKKyAgICAgICAgaWYgKG1hcHBpbmdTdWNj
ZXNzKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92
ZShtYXBwZWRGaWxlRGF0YSkpKTsKKyAgICB9CisgICAgcmV0dXJuIGNyZWF0ZUZyb21SZWFkaW5n
RmlsZShmaWxlUGF0aCk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgp
IGNvbnN0Cit7CisgICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gbV9zZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7Cit9CisK
K1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QK
K3sKKyAgICByZXR1cm4geyB7IGRhdGEoKSwgc2l6ZSgpIH0gfTsKK30KKworUmVmPERhdGFTZWdt
ZW50PiBEYXRhU2VnbWVudDo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCit7CisgICAg
ZGF0YS5zaHJpbmtUb0ZpdCgpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50
KFdURk1vdmUoZGF0YSkpKTsKK30KKworI2lmIFVTRShDRikKK1JlZjxEYXRhU2VnbWVudD4gRGF0
YVNlZ21lbnQ6OmNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOworfQorI2VuZGlm
CisKKyNpZiBVU0UoR0xJQikKK1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShH
UmVmUHRyPEdCeXRlcz4mJiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFT
ZWdtZW50KFdURk1vdmUoZGF0YSkpKTsKK30KKyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikK
K1JlZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShSZWZQdHI8R3N0TWFwcGVkT3du
ZWRCdWZmZXI+JiYgZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVu
dChXVEZNb3ZlKGRhdGEpKSk7Cit9CisjZW5kaWYKKworUmVmPERhdGFTZWdtZW50PiBEYXRhU2Vn
bWVudDo6Y3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7Cit9CisKK1Jl
ZjxEYXRhU2VnbWVudD4gRGF0YVNlZ21lbnQ6OmNyZWF0ZShQcm92aWRlciYmIHByb3ZpZGVyKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUocHJvdmlkZXIp
KSk7Cit9CisKK2NvbnN0IHVpbnQ4X3QqIERhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKK3sKKyAg
ICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAorICAgICAgICBbXShjb25zdCBWZWN0
b3I8dWludDhfdD4mIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIGRhdGEuZGF0YSgp
OyB9LAorI2lmIFVTRShDRikKKyAgICAgICAgW10oY29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4m
IGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIENGRGF0YUdldEJ5dGVQdHIoZGF0YS5n
ZXQoKSk7IH0sCisjZW5kaWYKKyNpZiBVU0UoR0xJQikKKyAgICAgICAgW10oY29uc3QgR1JlZlB0
cjxHQnl0ZXM+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSk7IH0s
CisjZW5kaWYKKyNpZiBVU0UoR1NUUkVBTUVSKQorICAgICAgICBbXShjb25zdCBSZWZQdHI8R3N0
TWFwcGVkT3duZWRCdWZmZXI+JiBkYXRhKSAtPiBjb25zdCB1aW50OF90KiB7IHJldHVybiBkYXRh
LT5kYXRhKCk7IH0sCisjZW5kaWYKKyAgICAgICAgW10oY29uc3QgRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmIGRhdGEpIC0+IGNvbnN0IHVpbnQ4X3QqIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhLmRhdGEoKSk7IH0sCisgICAgICAgIFtdKGNvbnN0IFByb3ZpZGVy
JiBwcm92aWRlcikgLT4gY29uc3QgdWludDhfdCogeyByZXR1cm4gcHJvdmlkZXIuZGF0YSgpOyB9
CisgICAgKTsKKyAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEp
OworfQorCitib29sIERhdGFTZWdtZW50Ojpjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YT4obV9pbW11dGFibGVEYXRhKTsKK30KKworc2l6ZV90IERhdGFTZWdtZW50OjpzaXpl
KCkgY29uc3QKIHsKICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAogICAgICAg
ICBbXShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpIC0+IHNpemVfdCB7IHJldHVybiBkYXRh
LnNpemUoKTsgfSwKQEAgLTQ3NSw3ICs1MzgsMzcgQEAgc2l6ZV90IFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3IsIG1f
aW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJE
YXRhVmlldyhSZWY8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3Qg
cG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKK3ZvaWQg
U2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW1wdHkoKQoreworICAgIHJlc2V0KCk7CisgICAgZW5zdXJl
QnVmZmVyKCk7Cit9CisKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJC
dWlsZGVyOjp0YWtlKCkKK3sKKyAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICByZXR1cm4gbV9idWZm
ZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKworUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
QnVpbGRlcjo6dGFrZUFzQ29udGlndW91cygpCit7CisgICAgcmV0dXJuIHRha2UoKS0+bWFrZUNv
bnRpZ3VvdXMoKTsKK30KKworUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXJCdWlsZGVy
Ojp0YWtlQXNBcnJheUJ1ZmZlcigpCit7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0
dXJuIEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CisgICAgcmV0dXJuIHRha2Uo
KS0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKK30KKwordm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVy
OjplbnN1cmVCdWZmZXIoKQoreworICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIG1fYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKK30KKworU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNo
YXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBzaXplX3QgcG9z
aXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkKICAgICA6IG1f
c2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpKQogICAgICwgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQo
cG9zaXRpb25XaXRoaW5TZWdtZW50KQogICAgICwgbV9zaXplKHNpemUgPyAqc2l6ZSA6IG1fc2Vn
bWVudC0+c2l6ZSgpIC0gcG9zaXRpb25XaXRoaW5TZWdtZW50KQpAQCAtNDg5LDIyICs1ODIsMTIg
QEAgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3JiBvdGhlciwgc2kKIHsKIH0KIAotc2l6ZV90IFNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpzaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zaXplOwotfQotCi1jb25zdCB1
aW50OF90KiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7Ci19Ci0KIFJlZjxT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBj
b25zdAogewotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBzZWdtZW50
ID0gbV9zZWdtZW50OwotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBz
ZWdtZW50ID0gbV9zZWdtZW50OworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRh
U2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7
IHJldHVybiBkYXRhOyB9LAotICAgICAgICBbc2VnbWVudCwgc2l6ZSA9IHNpemUoKV0oKSB7IHJl
dHVybiBzaXplOyB9CisgICAgICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0K
ICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBm
MjNmNWQ2OWFkMzJlZDY0MGI5NTc3YjJlNmM0NTQ5MTgzOTM2OGFkLi5hMDhlZWQzYTljYTg1YWIw
MjYyNjQwNjNjODBkMzNkNTE3OWUyMWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKQEAgLTYyLDE0NiArNjIsMTI1IEBAIGNsYXNzIERlY29kZXI7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVm
ZmVyRGF0YVZpZXc7CiAKLWNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlciA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKKy8vIERhdGEgd3JhcHBlZCBi
eSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVm
ZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgorLy8gVG8gbW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRh
dGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgorY2xhc3MgRGF0YVNlZ21lbnQgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YVNlZ21lbnQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCdWZmZXIpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkp
OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKLSAgICBlbnVtIGNsYXNzIE1h
eVVzZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBzdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1v
ZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsK
LQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShWZWN0
b3I8dWludDhfdD4mJik7CiAKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBSZXRhaW5QdHI8TlNE
YXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRl
TlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KE5TRGF0YSAqKTsKLSAgICB2b2lkIGFwcGVuZChOU0RhdGEgKik7Ci0jZW5kaWYKICNpZiBVU0Uo
Q0YpCi0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY3JlYXRlQ0ZEYXRhKCkgY29uc3Q7Ci0gICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwotICAgIHZvaWQgYXBw
ZW5kKENGRGF0YVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxEYXRhU2VnbWVu
dD4gY3JlYXRlKFJldGFpblB0cjxDRkRhdGFSZWY+JiYpOwogI2VuZGlmCi0KICNpZiBVU0UoR0xJ
QikKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwotICAgIEdS
ZWZQdHI8R0J5dGVzPiBjcmVhdGVHQnl0ZXMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+JiYpOwogI2VuZGlm
Ci0KICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PERhdGFTZWdtZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmKTsKICNl
bmRpZgotICAgIC8vIENhbGxpbmcgZGF0YSgpIGNhdXNlcyBhbGwgdGhlIGRhdGEgc2VnbWVudHMg
dG8gYmUgY29waWVkIGludG8gb25lIHNlZ21lbnQgaWYgdGhleSBhcmUgbm90IGFscmVhZHkuCi0g
ICAgLy8gSXRlcmF0ZSB0aGUgc2VnbWVudHMgdXNpbmcgYmVnaW4oKSBhbmQgZW5kKCkgaW5zdGVh
ZC4KLSAgICAvLyBGSVhNRTogQXVkaXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBh
bmQgcmVwbGFjZSB0aGVtIHdpdGggaXRlcmF0aW9uIGlmIHBvc3NpYmxlLgotICAgIGNvbnN0IHVp
bnQ4X3QqIGRhdGEoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29u
c3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQotICAg
IFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OwotICAgIFZlY3Rvcjx1aW50OF90PiBy
ZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwotCi0gICAgLy8gU2ltaWxh
ciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRh
IGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQp
LgotICAgIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0RGF0YSgpOwotCi0gICAgLy8gQ3JlYXRlcyBh
biBBcnJheUJ1ZmZlciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8g
dGhhdAotICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVy
cyBpbnRvIGEgZmxhdCBidWZmZXIuCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVB
cnJheUJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RGF0YVNl
Z21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKIAotICAgIHNpemVf
dCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiAhc2l6ZSgpOyB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRC
dWZmZXImKTsKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2
b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAgIHZvaWQg
YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKLQotICAgIHZvaWQgY2xlYXIoKTsKKyAgICBzdHJ1
Y3QgUHJvdmlkZXIgeworICAgICAgICBGdW5jdGlvbjxjb25zdCB1aW50OF90KigpPiBkYXRhOwor
ICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKKyAgICB9OwogCi0gICAgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY29weSgpIGNvbnN0OwotICAgIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9u
LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLSAgICB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlv
biwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKFByb3ZpZGVyJiYpOwogCi0gICAgLy8g
RGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBiZWNhdXNl
IGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCi0gICAgLy8gVG8gbW9kaWZ5
IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgotICAgIGNs
YXNzIERhdGFTZWdtZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFTZWdtZW50
PiB7Ci0gICAgcHVibGljOgotICAgICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBk
YXRhKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7
CisjaWYgVVNFKEZPVU5EQVRJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0
YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CisjZW5kaWYKIAotICAgICAgICBzdGF0aWMgUmVmPERh
dGFTZWdtZW50PiBjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKLSAgICAgICAgewotICAg
ICAgICAgICAgZGF0YS5zaHJpbmtUb0ZpdCgpOwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOwotICAgICAgICB9CisgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7CiAKK3ByaXZhdGU6
CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKKyAgICAg
ICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjaWYgVVNFKENGKQotICAg
ICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUmV0YWluUHRyPENGRGF0YVJlZj4m
JiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkp
KTsgfQorICAgIGV4cGxpY2l0IERhdGFTZWdtZW50KFJldGFpblB0cjxDRkRhdGFSZWY+JiYgZGF0
YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAjZW5kaWYK
ICNpZiBVU0UoR0xJQikKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdS
ZWZQdHI8R0J5dGVzPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQo
V1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoR1JlZlB0cjxHQnl0
ZXM+JiYgZGF0YSkKKyAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9
CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdt
ZW50PiBjcmVhdGUoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CisgICAgZXhwbGlj
aXQgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiYmIGRhdGEpCisgICAg
ICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCi0gICAgICAg
IHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRh
KSkpOyB9CisgICAgZXhwbGljaXQgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJiBkYXRhKQorICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0K
KyAgICBleHBsaWNpdCBEYXRhU2VnbWVudChQcm92aWRlciYmIHByb3ZpZGVyKQorICAgICAgICA6
IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKHByb3ZpZGVyKSkgeyB9CiAKLSAgICAgICAgc3RydWN0
IFByb3ZpZGVyIHsKLSAgICAgICAgICAgIEZ1bmN0aW9uPGNvbnN0IHVpbnQ4X3QqKCk+IGRhdGE7
Ci0gICAgICAgICAgICBGdW5jdGlvbjxzaXplX3QoKT4gc2l6ZTsKLSAgICAgICAgfTsKLQotICAg
ICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoUHJvdmlkZXImJiBwcm92aWRlcikg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKHByb3ZpZGVyKSkpOyB9
Ci0KLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRl
TlNEYXRhKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgICAgICBib29sIGNvbnRhaW5zTWFwcGVkRmls
ZURhdGEoKSBjb25zdDsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIERhdGFTZWdtZW50KFZlY3Rv
cjx1aW50OF90PiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3Zl
KGRhdGEpKSB7IH0KKyAgICBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LAogI2lmIFVTRShD
RikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBkYXRhKQotICAg
ICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CisgICAgICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCiAjaWYgVVNFKEdMSUIpCi0gICAgICAgIERhdGFT
ZWdtZW50KEdSZWZQdHI8R0J5dGVzPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxl
RGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgR1JlZlB0cjxHQnl0ZXM+LAogI2VuZGlm
CiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICAgICAgRGF0YVNlZ21lbnQoUmVmUHRyPEdzdE1hcHBl
ZE93bmVkQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZN
b3ZlKGRhdGEpKSB7IH0KKyAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKICNl
bmRpZgotICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRh
dGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSAg
ICAgICAgRGF0YVNlZ21lbnQoUHJvdmlkZXImJiBwcm92aWRlcikKLSAgICAgICAgICAgIDogbV9p
bW11dGFibGVEYXRhKFdURk1vdmUocHJvdmlkZXIpKSB7IH0KKyAgICAgICAgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEsCisgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7CisgICAg
ZnJpZW5kIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CisgICAgZnJpZW5kIGNsYXNzIFNo
YXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNGRGF0YQorfTsKKworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
KyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gY3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CiAKLSAgICAgICAgc3RkOjp2YXJpYW50
PFZlY3Rvcjx1aW50OF90PiwKKyNpZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0Rh
dGEqKTsKKyNlbmRpZgogI2lmIFVTRShDRikKLSAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKKwogI2lmIFVTRShHTElCKQotICAgICAgICAg
ICAgR1JlZlB0cjxHQnl0ZXM+LAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwogI2VuZGlmCisKICNpZiBVU0UoR1NU
UkVBTUVSKQotICAgICAgICAgICAgUmVmUHRyPEdzdE1hcHBlZE93bmVkQnVmZmVyPiwKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShH
c3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCi0gICAgICAgICAgICBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSwKLSAgICAgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURhdGE7Ci0g
ICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAgfTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25z
dDsKKworICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5k
IHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJh
Y3REYXRhKCk7CisKKyAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhp
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAorICAgIC8vIEFycmF5
QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZm
ZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpIGNvbnN0OworCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3Np
emU7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CisgICAg
Ym9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRpZ3VvdXM7IH0KIAotICAg
IHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjb3B5KCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24s
IHNpemVfdCBsZW5ndGgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZv
aWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKIAot
ICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNv
bnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48
Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBm
b3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhf
dD4mKT4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0c1dpdGgoY29uc3Qg
U3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKworICAgIHVzaW5nIERhdGFTZWdt
ZW50ID0gV2ViQ29yZTo6RGF0YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFja3dhcmQgY29tcGF0aWJp
bGl0eSB3aGVuIHVzaW5nIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAg
ICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBv
c2l0aW9uOwpAQCAtMjEwLDc1ICsxODksMTgzIEBAIHB1YmxpYzoKICAgICB1c2luZyBEYXRhU2Vn
bWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAgICBEYXRh
U2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3Nl
Z21lbnRzLmJlZ2luKCk7IH0KICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3Ig
ZW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5lbmQoKTsgfQotICAgIGJvb2wgaGFzT25l
U2VnbWVudCgpIGNvbnN0OworICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2VnbWVudHMuc2l6ZSgpID09IDE7IH0KIAogICAgIC8vIGJlZ2luIGFuZCBlbmQgdGFrZSBP
KDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikpIHRpbWUuCi0gICAgU2hhcmVkQnVmZmVyRGF0
YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyBnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNv
bnN0OwogCi0gICAgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHRvSGV4U3RyaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIGhpbnRNZW1vcnlOb3RO
ZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29k
ZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0o
b3RoZXIpOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29u
c3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxT
aGFyZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CiAKLXByaXZhdGU6Ci0gICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29u
c3QgY2hhciosIHNpemVfdCk7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50
OF90PiYmKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJik7Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRl
ciYmKTsKK3Byb3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOworCisgICAg
RGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKKyAgICBib29sIG1fY29udGlndW91cyB7IGZh
bHNlIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKCk7Cisg
ICAgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3Qgc2l6ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KKyAgICBleHBsaWNpdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IGFwcGVuZChk
YXRhLCBzaXplKTsgfQorICAgIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSkgeyBhcHBlbmQoV1RGTW92ZShkYXRhKSk7IH0KKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAjaWYg
VVNFKENGKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNl
bmRpZgogI2lmIFVTRShHTElCKQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEdCeXRl
cyopOwogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKKyAg
ICBzaXplX3QgbV9zaXplIHsgMCB9OwogCi0gICAgdm9pZCBjb21iaW5lSW50b09uZVNlZ21lbnQo
KSBjb25zdDsKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgp
IHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgp
OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwor
I2lmIFVTRShGT1VOREFUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKE5TRGF0
YSAqKTsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVu
ZChDRkRhdGFSZWYpOworI2VuZGlmCiAKLSAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRz
IGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhl
IFNoYXJlZEJ1ZmZlci4KLSAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CiAKKyAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21l
bnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcg
dGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVp
bnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogZ2V0
U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9uKSBjb25zdDsKIAotICAgIHN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCk7Ci0KLSAgICBzaXplX3QgbV9zaXplIHsgMCB9OwotICAgIG11dGFibGUgRGF0
YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKLQogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbXV0
YWJsZSBib29sIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgeyBmYWxzZSB9OwogICAg
IGJvb2wgaW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdDsKICNlbmRpZgogfTsKIAotaW5saW5l
IFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKKy8vIEEgU2hhcmVk
QnVmZmVyIGlzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB0aGF0IGFsbG93cyB0byBkaXJlY3Rs
eSBhY2Nlc3MgaXRzIGNvbnRlbnQgdmlhIHRoZSBkYXRhKCkgYW5kIHJlbGF0ZWQgbWV0aG9kcy4K
K2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIHsKK3B1
YmxpYzoKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYgY29u
c3RleHByICghc2l6ZW9mLi4uKEFyZ3MpKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2hhcmVkQnVmZmVyKCkpOworICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4u
KEFyZ3MpID09IDEKKyAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8RGF0
YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCdWZmZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgYXV0byBidWZmZXIgPSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBj
b25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQorICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIg
ZGVjb2RlcigpIGNvbnN0OworCisgICAgZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJv
b2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpT
aGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7CisKKyNp
ZiBVU0UoRk9VTkRBVElPTikKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBj
cmVhdGVOU0RhdGEoKSBjb25zdDsKKyNlbmRpZgorI2lmIFVTRShDRikKKyAgICBXRUJDT1JFX0VY
UE9SVCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjcmVhdGVDRkRhdGEoKSBjb25zdDsKKyNlbmRpZgor
I2lmIFVTRShHTElCKQorICAgIFdFQkNPUkVfRVhQT1JUIEdSZWZQdHI8R0J5dGVzPiBjcmVhdGVH
Qnl0ZXMoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIFNo
YXJlZEJ1ZmZlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworCisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21S
ZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKK307CisKK2NsYXNzIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyQnVpbGRlcihSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAg
eworICAgICAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLy8g
V2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFz
IGFsbCBTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAgICAgICAvLyBvbmNlIGNy
ZWF0ZWQuCisgICAgICAgIGlmIChidWZmZXItPmhhc09uZVJlZigpICYmICFidWZmZXItPmlzQ29u
dGlndW91cygpKSB7CisgICAgICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQoKmJ1ZmZlcik7Cisg
ICAgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHsgV1RGTW92ZShidWZmZXIpIH0pCisgICAgeworICAg
IH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyKEFyZ3MmJi4uLiBhcmdzKQorICAgICAgICA6IG1fYnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKworICAgIHRl
bXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdz
KQorICAgIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyKCk7CisgICAgICAgIG1fYnVmZmVyLT5hcHBl
bmQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgYm9vbCBpc051
bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CisKKyAg
ICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUo
KSA6IDA7IH0KKworICAgIHZvaWQgcmVzZXQoKSB7IG1fYnVmZmVyID0gbnVsbHB0cjsgfQorICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZW1wdHkoKTsKKworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1
ZmZlci0+Y29weSgpIDogRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZSgpOworICAgIFdF
QkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IHRha2VBc0NvbnRpZ3VvdXMoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5QnVmZmVyKCk7CisK
K3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbnN1cmVCdWZmZXIoKTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7Cit9OworCitpbmxpbmUgVmVj
dG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIHsKICAg
ICBpZiAoaGFzT25lUmVmKCkpCiAgICAgICAgIHJldHVybiB0YWtlRGF0YSgpOwogICAgIHJldHVy
biBjb3B5RGF0YSgpOwogfQogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRh
VmlldyB7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0gICAgU2hhcmVk
QnVmZmVyRGF0YVZpZXcoUmVmPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBw
b3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3Rk
OjpudWxsb3B0KTsKLSAgICBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJE
YXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OwotICAg
IGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRC
dWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNl
Z21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJE
YXRhVmlldyYsIHNpemVfdCBuZXdTaXplKTsKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZTsgfQorICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OyB9CiAgICAgY29uc3Qg
Y2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGRhdGEoKSk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRC
dWZmZXIoKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lmIFVTRShGT1VOREFUSU9OKQotICAgIFJldGFp
blB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJl
dGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlmCiBwcml2YXRlOgot
ICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAg
Y29uc3QgUmVmPERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fcG9z
aXRpb25XaXRoaW5TZWdtZW50OwogICAgIGNvbnN0IHNpemVfdCBtX3NpemU7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCmlu
ZGV4IGNkYjZlNzAzNDA0ZDQyNmRkMjFiNDc5ZmE4OWMwZGE5YjhjNDlmOGUuLjlkMDU1Y2UyN2Q4
OGMzZDYyZTViZDFjZDQ2YWQ5MWY1Y2M0MzFmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKE1IVE1MKQogCi1TaGFyZWRCdWZmZXJD
aHVua1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiBidWZmZXIs
IGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKQorU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6
OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwg
Y29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVudChi
dWZmZXItPmJlZ2luKCkpCiAgICAgLCBtX2l0ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAg
LCBtX3NlZ21lbnQobV9pdGVyYXRvckN1cnJlbnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRlcmF0
b3JDdXJyZW50LT5zZWdtZW50LT5kYXRhKCkgOiBudWxscHRyKQpAQCAtNDQsNyArNDQsNyBAQCBT
aGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVm
ZmVyKiBidWZmZXIsIGNvbnN0IFZlYwogewogfQogCi1TaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IGNoYXIq
IHNlcGFyYXRvcikKK1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IGNoYXIqIHNlcGFyYXRv
cikKICAgICA6IG1faXRlcmF0b3JDdXJyZW50KGJ1ZmZlci0+YmVnaW4oKSkKICAgICAsIG1faXRl
cmF0b3JFbmQoYnVmZmVyLT5lbmQoKSkKICAgICAsIG1fc2VnbWVudChtX2l0ZXJhdG9yQ3VycmVu
dCAhPSBtX2l0ZXJhdG9yRW5kID8gbV9pdGVyYXRvckN1cnJlbnQtPnNlZ21lbnQtPmRhdGEoKSA6
IG51bGxwdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXJDaHVua1JlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXIuaAppbmRleCA1ZDRlNmZlZTU4MmM2NjE2ZmQwN2UzOTk0ZmY3NWM4ZjA3YTJmY2Ux
Li4xYzY0MDhkNGM3MzZhMWM0YTQ1Y2VlN2IzZjY5NjU3YmM5YTI2MTVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKQEAgLTQxLDgg
KzQxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFy
ZWRCdWZmZXJDaHVua1JlYWRlciB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFk
ZXIoU2hhcmVkQnVmZmVyKiwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpOwotICAgIFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciosIGNvbnN0IGNoYXIqIHNlcGFyYXRv
cik7CisgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcios
IGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKTsKKyAgICBTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgY2hhciogc2VwYXJhdG9yKTsKIAog
ICAgIHZvaWQgc2V0U2VwYXJhdG9yKGNvbnN0IFZlY3RvcjxjaGFyPiYpOwogICAgIHZvaWQgc2V0
U2VwYXJhdG9yKGNvbnN0IGNoYXIqKTsKQEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogICAgIHNp
emVfdCBwZWVrKFZlY3Rvcjx1aW50OF90PiYsIHNpemVfdCk7CiAKIHByaXZhdGU6Ci0gICAgU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbV9pdGVyYXRvckN1
cnJlbnQ7Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3Rf
aXRlcmF0b3IgbV9pdGVyYXRvckVuZDsKKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbV9pdGVyYXRvckN1cnJlbnQ7CisgICAgY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJh
dG9yIG1faXRlcmF0b3JFbmQ7CiAgICAgY29uc3QgdWludDhfdCogbV9zZWdtZW50IHsgbnVsbHB0
ciB9OwogICAgIHNpemVfdCBtX3NlZ21lbnRJbmRleCB7IDAgfTsKICAgICBWZWN0b3I8Y2hhcj4g
bV9zZXBhcmF0b3IgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU3RhdGljUGFzdGVib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQ
YXN0ZWJvYXJkLmNwcAppbmRleCBiMmQ3YTU1MGQ0NjBlOTRjZDMxNTEzNGEzMTk1YmNkOTFjN2I3
ODk0Li5hNGI0YmIxMDRiNGQ4NDAxNWI4YWE1YjUzZTdkZmE3ODhjZWQyNWZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcApAQCAtNzMsNyArNzMsNyBA
QCB2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBtX2N1c3RvbURhdGEud3JpdGVTdHJpbmcodHlwZSwg
dmFsdWUpOwogfQogCi12b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlRGF0YShjb25zdCBTdHJp
bmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgU3RhdGljUGFzdGVib2Fy
ZDo6d3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgZGF0YSkKIHsKICAgICBtX25vbkRlZmF1bHREYXRhVHlwZXMuYWRkKHR5cGUpOwogICAg
IG1fY3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwgV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKaW5kZXggYzA5YjZkZTMxZjJlZGViZTAx
ODhkYzljNDY2YTI3MWUxYjhiOWUxNC4uZWRkNzEzNjIzZjA2ZDIyYjM4ZTgzMmEyODM3ZmU2Njk5
OWRmZDc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVi
b2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaApA
QCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFN0YXRpY1Bhc3Rl
Ym9hcmQgZmluYWwgOiBwdWJsaWMgUGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC01Miw3ICs1Miw3
IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgcmVhZFN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJp
bmcmIHR5cGUpIGZpbmFsOwogCiAgICAgdm9pZCB3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkgZmluYWw7Ci0gICAgdm9pZCB3cml0ZURhdGEoY29uc3Qg
U3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIHZvaWQgd3JpdGVE
YXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0
YSk7CiAgICAgdm9pZCB3cml0ZVN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgZGF0YSk7CiAgICAgdm9pZCBjbGVhcigpIGZpbmFsOwogICAgIHZvaWQg
Y2xlYXIoY29uc3QgU3RyaW5nJiB0eXBlKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCmluZGV4IDY4Nzk1OTAwYzVhZGY5Y2M5MDQ1ZTBl
YWJiMjJiMThmYTY2OTYzMTQuLjFkNjViYzQwM2FkODUyNDNjNjcyNWU3MDQ0OGQ2Y2RhZGNjY2Nl
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJ
bmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8u
aApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgTm93UGxheWlu
Z0luZm9BcnR3b3JrIHsKICAgICBTdHJpbmcgc3JjOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb3dQ
bGF5aW5nSW5mb0FydHdvcmsmIG90aGVyKSBjb25zdAogICAgIHsKQEAgLTY3LDcgKzY3LDcgQEAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIHN0ZDo6b3B0aW9uYWw8Tm93UGxheWluZ0lu
Zm9BcnR3b3JrPiBOb3dQbGF5aW5nSW4KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1pbWVUeXBl
KSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdl
RGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaW1hZ2VEYXRhKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxl
UmVhZGVyQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9GaWxlUmVhZGVyQ29jb2EuY3BwCmluZGV4IGU4YjE5YmYzNGViYTIzYjg1NzIwN2JlODhjZTFi
NDViZjhmMmNjYzMuLmYzMjE0Mjk1MWIxNzk5NmU2Y2UxNjc1NjMxNmJmZDQ3M2ZhYTRlZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJl
YWRlckNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBjbGFzcyBBdWRpb0Zp
bGVSZWFkZXJXZWJNRGF0YSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1Ymxp
YzoKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICBSZWY8
QXVkaW9UcmFja1ByaXZhdGVXZWJNPiBtX3RyYWNrOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9NZWRpYVNlc3Npb25NYW5h
Z2VyQ29jb2EubW0KaW5kZXggYmI3ODhhZmExZTkxZjlhNGQzYWIzNmUyYTBjMDgxMmM5NGUxODcw
ZS4uN2YwNDk2MGM1OTY1YjYyNTFiOTFiOWE1NjdlNTEwODliNTcxOWYwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvTWVkaWFTZXNzaW9uTWFuYWdlckNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL01lZGlhU2Vz
c2lvbk1hbmFnZXJDb2NvYS5tbQpAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgTWVkaWFTZXNzaW9u
TWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhib29sIHNldEFzTm93UGxheWluZ0FwcGxp
Y2F0aW9uCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGluZm8uZ2V0KCksIGtNUk1lZGlh
UmVtb3RlTm93UGxheWluZ0luZm9FbGFwc2VkVGltZSwgY2ZDdXJyZW50VGltZS5nZXQoKSk7CiAg
ICAgfQogICAgIGlmIChub3dQbGF5aW5nSW5mby5hcnR3b3JrICYmIG5vd1BsYXlpbmdJbmZvLmFy
dHdvcmstPmltYWdlRGF0YSkgewotICAgICAgICBhdXRvIG5zQXJ0d29yayA9IG5vd1BsYXlpbmdJ
bmZvLmFydHdvcmstPmltYWdlRGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNB
cnR3b3JrID0gbm93UGxheWluZ0luZm8uYXJ0d29yay0+aW1hZ2VEYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoaW5mby5n
ZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdvcmtEYXRhLCBuc0FydHdvcmsu
Z2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShpbmZvLmdldCgpLCBrTVJNZWRp
YVJlbW90ZU5vd1BsYXlpbmdJbmZvQXJ0d29ya01JTUVUeXBlLCBub3dQbGF5aW5nSW5mby5hcnR3
b3JrLT5taW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUoaW5mby5nZXQoKSwga01STWVkaWFSZW1vdGVOb3dQbGF5aW5nSW5mb0FydHdv
cmtJZGVudGlmaWVyLCBTdHJpbmc6Om51bWJlcihub3dQbGF5aW5nSW5mby5hcnR3b3JrLT5zcmMu
aGFzaCgpKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAppbmRleCA2YjY2MjE3ZmYxNjFkZTM3NGYxY2UzMWQ1
ZDM0NjM0MGJiMmZjYjkxLi40Y2JlZjEyNzkwZDRhNDM0ZDQ1MTFiMjNjOTYwMTUzNmU5MjcwMjE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBA
IC0zMyw4ICszMyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpT
aGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQogeworICAgIEFTU0VSVCghbV9jb250
aWd1b3VzKTsKICAgICBhcHBlbmQoZGF0YSk7CiB9CiAKQEAgLTQzLDI0ICs0NCwyMCBAQCBTaGFy
ZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKICNpZiAhVVNFKEZPVU5EQVRJ
T04pCiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNv
bnN0CiB7Ci0gICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpIHsKKyAgICBpZiAoaGFzT25l
U2VnbWVudCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0YWlu
UHRyPENGRGF0YVJlZj4+KCZtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkp
CiAgICAgICAgICAgICByZXR1cm4gKmRhdGE7CiAgICAgfQotICAgIGF1dG8gY2ZEYXRhID0gYWRv
cHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKG51bGxwdHIsIHNpemUoKSkpOwotICAgIGZvckVhY2hT
ZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgIENGRGF0YUFwcGVuZEJ5dGVzKGNm
RGF0YS5nZXQoKSwgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAgICB9KTsKLSAg
ICByZXR1cm4gY2ZEYXRhOworICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRy
LCBkYXRhKCksIHNpemUoKSkpOwogfQogI2VuZGlmCiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YVJlZiBkYXRhKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFSZWYgZGF0YSkKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSkpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoZGF0YSkpOwogfQogCi12b2lkIFNo
YXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAordm9pZCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IG1fc2VnbWVudHMpIHsKICAgICAgICAgaWYgKGVudHJ5
LnNlZ21lbnQtPmhhc09uZVJlZigpKSB7CkBAIC03MCw5ICs2Nyw4IEBAIHZvaWQgU2hhcmVkQnVm
ZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAgICAgfQogfQogCi12b2lkIFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgQVNTRVJUKCFtX2hhc0JlZW5D
b21iaW5lZEludG9PbmVTZWdtZW50KTsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7bV9zaXplLCBEYXRhU2VnbWVudDo6Y3JlYXRlKGRhdGEpfSk7CiAgICAgICAg
IG1fc2l6ZSArPSBDRkRhdGFHZXRMZW5ndGgoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIu
aAppbmRleCAwNzk3ZGZiZThkMDE4YmU2MzYxNzQ0YzU4Zjg5MmRkNTZlZDY4OWM1Li5jYmU4Nzcx
YTQ1ZDg2MmNiNWFiMDVlY2EzOTk5MjdlMDc4MzhmNTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGREYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNo
ZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1l
bnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIENvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIGJvb2wgaXNSZXF1aXJlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
ci5tbQppbmRleCA0MjkwZGIxMjhkMDAwYTQwZWVmNzBmZDI5NDFkNjM0NDkwNDZkZTAzLi4yZWYy
NzAxZmU2NzhiZjliOTJkYjIxMmJiZWE1YzkxNWEzZmMzYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlci5tbQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXI6OmZpbmlzaGVkQWRkaW5nRGF0YSgpCiAgICAgc2VtYXBob3JlLndhaXQoKTsKIH0K
IAotUmVmPFNoYXJlZEJ1ZmZlcj4gTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OnJlcGxh
Y2VtZW50RGF0YSgpIGNvbnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKGRpZEJsb2NrRGF0YSgpKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9y
ZXBsYWNlbWVudERhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKaW5kZXggMDY4
Y2RjYjM4M2Y0MjM2NWFjMzI2NGUyMjlhNmQ2M2JjMmI0YWJkNi4uNjc5YWU5MzI5NTE3ZTFmMzk0
M2JhNTc2MmFjOGY1NmU4NjBjOGMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCkBAIC00
NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0
YSgpIG92ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNv
bnN0IG92ZXJyaWRlOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVu
dERhdGEoKSBjb25zdCBvdmVycmlkZTsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAg
ICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkgY29uc3Qgb3Zl
cnJpZGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KaW5kZXggYjQ2MWY5NzUz
NmRlM2ExNTgxM2E1ODI3Yjg2NzEzOGI5NmQ0ZjM4Yy4uMWM5NjA0NzE2YjQyNjkzZDVlNDZjMmUy
M2U5NDFkYTAwYzgzZTRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KQEAgLTEwOSw3
ICsxMDksNyBAQCB2b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpmaW5pc2hlZEFk
ZGluZ0RhdGEoKQogICAgIHVwZGF0ZUZpbHRlclN0YXRlKCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZm
ZXI+IFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25z
dAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBhcmVudGFsQ29udHJvbHNDb250ZW50Rmls
dGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChkaWRCbG9ja0RhdGEo
KSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVwbGFjZW1lbnREYXRhLmdl
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9h
cmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2Nv
YS5tbQppbmRleCA2ZjI4ZTgyNDM2MGNjZDMwODZjMDMxOGZhZTQwOThmMWVkZTI4ZTI1Li5iODE3
MDgxN2NlYzU5ZTIyZDNjMGU5YTc4ZjE0NmMwMzNlNGMxNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC00Nyw3ICs0Nyw3IEBA
IHN0YXRpYyBOU0JpdG1hcEltYWdlRmlsZVR5cGUgYml0bWFwUE5HRmlsZVR5cGUoKQogfQogI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykKIAotLy8gTWFraW5nIHRoaXMgbm9uLWlubGluZSBzbyB0aGF0
IFdlYktpdCAyJ3MgZGVjb2RpbmcgZG9lc24ndCBoYXZlIHRvIGluY2x1ZGUgU2hhcmVkQnVmZmVy
LmguCisvLyBNYWtpbmcgdGhpcyBub24taW5saW5lIHNvIHRoYXQgV2ViS2l0IDIncyBkZWNvZGlu
ZyBkb2Vzbid0IGhhdmUgdG8gaW5jbHVkZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLmguCiBQYXN0
ZWJvYXJkV2ViQ29udGVudDo6UGFzdGVib2FyZFdlYkNvbnRlbnQoKSA9IGRlZmF1bHQ7CiBQYXN0
ZWJvYXJkV2ViQ29udGVudDo6flBhc3RlYm9hcmRXZWJDb250ZW50KCkgPSBkZWZhdWx0OwogCkBA
IC0yMTEsOSArMjExLDkgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXNGb3JMZWdh
Y3lVbnNhZmVCaW5kaW5ncygpCiB9CiAKICNpZiBQTEFURk9STShNQUMpCi1zdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCitz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiB0aWZmQnVmZmVyKQogewotICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRt
YXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLmNyZWF0ZU5TRGF0YSgp
LmdldCgpXSk7CisgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFs
bG9jXSBpbml0V2l0aERhdGE6IHRpZmZCdWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldKTsKICAgICBOU0RhdGEgKnBuZ0RhdGEgPSBbaW1hZ2UgcmVwcmVzZW50YXRp
b25Vc2luZ1R5cGU6Yml0bWFwUE5HRmlsZVR5cGUoKSBwcm9wZXJ0aWVzOkB7IH1dOwogICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KaW5kZXggOWVlMGMwYjU1
ZDc5NGMyYjY5MDU3YmJmMzY0YWJmMTgzOGE5Yjg1MC4uMjVmMzExZjI1ODliODJlZmQyNTc3YTA4
ODk0YjZjNWUwNjZiOTI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvU2hhcmVkQnVmZmVyQ29jb2EubW0KQEAgLTM1LDExICszNSwxMSBAQAogI2ltcG9ydCA8d3Rm
L2NvY29hL1ZlY3RvckNvY29hLmg+CiAKIEBpbnRlcmZhY2UgV2ViQ29yZVNoYXJlZEJ1ZmZlckRh
dGEgOiBOU0RhdGEKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGFTZWdtZW50Oihjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBwb3NpdGlvbjoo
TlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemU7CistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhEYXRhU2VnbWVudDooY29uc3QgV2ViQ29yZTo6RGF0YVNlZ21lbnQmKWRhdGFT
ZWdtZW50IHBvc2l0aW9uOihOU1VJbnRlZ2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6
ZTsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkNvcmVTaGFyZWRCdWZmZXJEYXRhIHsKLSAg
ICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gX2RhdGFT
ZWdtZW50OworICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpEYXRhU2VnbWVudD4gX2RhdGFTZWdt
ZW50OwogICAgIE5TVUludGVnZXIgX3Bvc2l0aW9uOwogICAgIE5TVUludGVnZXIgX3NpemU7CiB9
CkBAIC02MSw3ICs2MSw3IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIFtzdXBlciBkZWFsbG9jXTsK
IH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKWRhdGFTZWdtZW50IHBvc2l0aW9uOihOU1VJbnRl
Z2VyKXBvc2l0aW9uIHNpemU6KE5TVUludGVnZXIpc2l6ZQorLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoRGF0YVNlZ21lbnQ6KGNvbnN0IFdlYkNvcmU6OkRhdGFTZWdtZW50JilkYXRhU2VnbWVudCBw
b3NpdGlvbjooTlNVSW50ZWdlcilwb3NpdGlvbiBzaXplOihOU1VJbnRlZ2VyKXNpemUKIHsKICAg
ICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTg4
LDEzICs4OCwxNCBAQCBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoTlNEYXRhICpkYXRhKQorUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShOU0RhdGEgKmRhdGEp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJyaWRnZV9jYXN0KGRh
dGEpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihi
cmlkZ2VfY2FzdChkYXRhKSkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKE5TRGF0
YSAqZGF0YSkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKE5TRGF0YSAqZGF0
YSkKIHsKKyAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgcmV0dXJuIGFwcGVuZChicmlk
Z2VfY2FzdChkYXRhKSk7CiB9CiAKQEAgLTEwNSwxMCArMTA2LDggQEAgUmV0YWluUHRyPE5TRGF0
YT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAogCiBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7Ci0gICAgY29tYmluZUlu
dG9PbmVTZWdtZW50KCk7CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0
dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKLSAgICBBU1NF
UlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KG1fc2Vn
bWVudHNbMF0uc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkpOwogfQogCkBAIC0xMTksMTQgKzExOCwx
NCBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1S
ZXRhaW5QdHI8TlNBcnJheT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0
CitSZXRhaW5QdHI8TlNBcnJheT4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRh
QXJyYXkoKSBjb25zdAogewogICAgIHJldHVybiBjcmVhdGVOU0FycmF5KG1fc2VnbWVudHMsIFtd
IChhdXRvJiBzZWdtZW50KSB7CiAgICAgICAgIHJldHVybiBzZWdtZW50LnNlZ21lbnQtPmNyZWF0
ZU5TRGF0YSgpOwogICAgIH0pOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50OjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gRGF0
YVNlZ21lbnQ6OmNyZWF0ZU5TRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tX
ZWJDb3JlU2hhcmVkQnVmZmVyRGF0YSBhbGxvY10gaW5pdFdpdGhEYXRhU2VnbWVudDoqdGhpcyBw
b3NpdGlvbjowIHNpemU6c2l6ZSgpXSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCBmYmMyODNmYmMzMzY5YmY4
MjdlMzE2OTk0YzRjOTRlMDYzNjNjYjgxLi4yZGU0MTkzNGRhMTk4NzlkNzVjMGRmOGE4OWU2NGU1
OTljMjlhZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETUluc3RhbmNlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgTG9nZ2VyOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBDRE1JbnN0YW5jZVNlc3Npb247CiBzdHJ1Y3QgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbjsKIApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBDRE1JbnN0YW5j
ZUNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1JbnN0YW5jZUNsaWVudD4gewogcHVi
bGljOgogICAgIHZpcnR1YWwgfkNETUluc3RhbmNlQ2xpZW50KCkgPSBkZWZhdWx0OwogCi0gICAg
dmlydHVhbCB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3Qg
U3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bnJl
cXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiB9OwogCiAvLyBKYXZhU2NyaXB0J3MgaGFuZGxl
IHRvIGEgQ0RNSW5zdGFuY2UsIG11c3QgYmUgdXNlZCBmcm9tIHRoZQpAQCAtOTgsNyArOTgsNyBA
QCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplV2l0aENvbmZp
Z3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3Rp
dmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJh
Y2smJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lv
bigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXggMzdjZDA3YzdiZjJkYzc1ZTQxZmQ1
YzZjN2RlY2Y0M2UxMDM5ZTExNC4uZDI1OTIyNWJhOWUwMmE2NGQwY2VjZDYxNTFmZGY5M2Y0ZjI0
NjZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTQzLDE2ICs0MywxNiBAQCBjbGFzcyBM
b2dnZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xp
ZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkNsaWVudD4gewog
cHVibGljOgogICAgIHZpcnR1YWwgfkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudCgpID0gZGVmYXVs
dDsKIAogICAgIHVzaW5nIEtleVN0YXR1cyA9IENETUtleVN0YXR1czsKLSAgICB1c2luZyBLZXlT
dGF0dXNWZWN0b3IgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBLZXlTdGF0
dXM+PjsKKyAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2Up
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdXNpbmcgUGxhdGZvcm1E
aXNwbGF5SUQgPSB1aW50MzJfdDsKICAgICB2aXJ0dWFsIFBsYXRmb3JtRGlzcGxheUlEIGRpc3Bs
YXlJRCgpID0gMDsKQEAgLTc4LDEzICs3OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIFN1Y2NlZWRl
ZCwKICAgICB9OwogCi0gICAgdXNpbmcgTGljZW5zZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQp
PjsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGlj
ZW5zZUNhbGxiYWNrJiYpID0gMDsKKyAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIFN1Y2Nl
c3NWYWx1ZSBzdWNjZWVkZWQpPjsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSA9IDA7CiAKICAgICB1
c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1
c1ZlY3RvcjsKLSAgICB1c2luZyBNZXNzYWdlID0gc3RkOjpwYWlyPE1lc3NhZ2VUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6cGFpcjxNZXNzYWdlVHlw
ZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAgICB1c2luZyBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwg
c3RkOjpvcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2U+JiYg
bWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+OwotICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5z
ZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBk
YXRlQ2FsbGJhY2smJikgPSAwOwogCiAgICAgZW51bSBjbGFzcyBTZXNzaW9uTG9hZEZhaWx1cmUg
OiB1aW50OF90IHsKICAgICAgICAgTm9uZSwKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAg
ICAgdXNpbmcgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpID0gMDsKIAotICAgIHVzaW5nIFJlbW92ZVNlc3Npb25E
YXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0YXR1c1ZlY3RvciYmLCBz
dGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmLCBTdWNjZXNzVmFsdWUpPjsKKyAgICB1
c2luZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChL
ZXlTdGF0dXNWZWN0b3ImJiwgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+JiYsIFN1Y2Nlc3NWYWx1ZSk+OwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTZXNzaW9uRGF0
YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRh
Q2FsbGJhY2smJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHN0b3JlUmVjb3JkT2ZLZXlVc2Fn
ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCmluZGV4IGNjNmRjN2YxNDBjZDY3
ZDJiN2I4NGY2YWIyYzI4NDMxNmRmZGRjY2YuLjUyYTYxNDhjODNjZDUzOTNjOGY4NzRlZDg1YWQ4
YmYyN2U1YmU1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1Qcml2YXRlLmgKQEAgLTczLDggKzczLDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzU2Vzc2lvbnMoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKLSAg
ICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hh
cmVkQnVmZmVyJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXpl
UmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJp
bmcmKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcAppbmRleCBmMjE4Zjk3OTA0ZmJiYTQ5
ZjFlYmRmNDhlMjA1ZmU3M2RmYWZiNjQ4Li40YmE3NWJmMDBkOWY3MTNiNWFmYmJhNzkzNDAxOTcx
NmNkOGYwMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUHJveHkuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgQ0RNSW5zdGFuY2VTZXNzaW9u
OjpLZXlTdGF0dXNWZWN0b3IgS2V5U3RvcmU6OmNvbnZlcnRUb0pTS2V5U3RhdHVzVmVjdG9yKCkg
Y29uc3QKICAgICBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNW
ZWN0b3I7CiAgICAga2V5U3RhdHVzVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtS2V5
cygpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGtleSA6IG1fa2V5cykKLSAgICAgICAga2V5U3Rh
dHVzVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIENE
TUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzPiB7IGtleS0+aWRBc1NoYXJlZEJ1ZmZlcigpLCBr
ZXktPnN0YXR1cygpIH0pOworICAgICAgICBrZXlTdGF0dXNWZWN0b3IudW5jaGVja2VkQXBwZW5k
KHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIENETUluc3RhbmNlU2Vzc2lv
bjo6S2V5U3RhdHVzPiB7IGtleS0+aWRBc1NoYXJlZEJ1ZmZlcigpLCBrZXktPnN0YXR1cygpIH0p
OwogICAgIHJldHVybiBrZXlTdGF0dXNWZWN0b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCmluZGV4IGE1ODRiNmNkMjY2YjA5
ODA5MDI1NGQ3ZGNiZGRiZjYwZDkzMzFmYmIuLmUxZTA5OGExZDVmNWZmYzY1YzJhNDhmYTQwYWE5
NzJmZTg5ZTFlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUHJveHkuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBLZXlIYW5kbGUoc3RhdHVzLCBXVEZNb3ZlKGtleUlEKSwg
V1RGTW92ZShrZXlIYW5kbGVWYWx1ZSkpKTsKICAgICB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
aWRBc1NoYXJlZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1f
aWQuZGF0YSgpLCBtX2lkLnNpemUoKSk7IH0KKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gaWRBc1NoYXJlZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KG1faWQuZGF0YSgpLCBtX2lkLnNpemUoKSk7IH0KIAogICAgIGJvb2wgdGFrZVZhbHVlSWZEaWZm
ZXJlbnQoS2V5SGFuZGxlVmFsdWVWYXJpYW50JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAppbmRleCA1YmVi
Y2I0OWFhOGViOWEyYmIwNzExZWFlMDgwZjM3N2UyMmI5ODM0Li5mY2E2ZjIzODhhNTZhNmExYzcy
NDcwZTVhNDZmZGQyOGYwNzM3NTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKQEAgLTM4LDcgKzM4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgQ0RNVXRpbGl0aWVzIHsKIAotUmVmUHRy
PEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBGYWlsIG9uIGxhcmdlIGJ1ZmZlcnMgd2hv
c2Ugc2l6ZSBkb2Vzbid0IGZpdCBpbnRvIGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIuCiAgICAg
c2l6ZV90IHNpemUgPSBidWZmZXIuc2l6ZSgpOwpAQCAtNDYsNyArNDYsNyBAQCBSZWZQdHI8SlNP
Tjo6T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gUGFyc2UgdGhlIGJ1ZmZlciBjb250ZW50
cyBhcyBKU09OLCByZXR1cm5pbmcgdGhlIHJvb3Qgb2JqZWN0IChpZiBhbnkpLgotICAgIFN0cmlu
ZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUpIH07Cisg
ICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6
cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oCmluZGV4IDc0ZjUxNWIw
YmQyYTg3MTY4ZWVmMjRiMThmOTVkZWFiZWU4MjhlNmMuLmZjZjViZGRhN2M1OTdkM2MzYWMzNDll
ZTE3ODllNGFkNmUwYzk1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oCkBAIC0zNSwxMSArMzUsMTEgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgQ0RNVXRpbGl0aWVzIHsKIAotUmVmUHRyPEpTT046
Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworUmVmUHRyPEpT
T046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KTsKIAogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IGRkMzQ1N2JmZGU4
YzkyMTg3N2RkN2I5ODJlOTkyMWZjYzBmZWQyZWQuLjMxYTlmZGZhMDJkNmQwMGNhMjYxODI1MmRl
ZDkzNTMxM2RjNThhYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTEzMCw3
ICsxMzAsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUxpY2Vuc2VSZWxlYXNlQWNrbm93bGVkZ2VtZW50
Rm9ybWF0KGNvbnN0IEpTT046Ok9iamVjdCYgcm9vdCkKIC8vIF07CiAKIC8vIFRoaXMgZnVuY3Rp
b24gZXh0cmFjdHMgdGhlIEtleUlkcyBjb3VudCBhbmQgdGhlIGxvY2F0aW9uIG9mIHRoZSBmaXJz
dCBLZXlJZCBpbiBpbml0RGF0YSBidWZmZXIuCi1zdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+
IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25l
ZD4ga2V5SWRzTWFwKDAsIDApOwogCkBAIC0xMzgsNyArMTM4LDggQEAgc3RhdGljIHN0ZDo6cGFp
cjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERh
dGEoY29uc3QKICAgICBpZiAoaW5pdERhdGEuaXNFbXB0eSgpIHx8IGluaXREYXRhLnNpemUoKSA+
IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAgICAgcmV0dXJuIGtl
eUlkc01hcDsKIAotICAgIGF1dG8qIGRhdGEgPSBpbml0RGF0YS5kYXRhKCk7CisgICAgYXV0byBj
b250aWd1b3VzSW5pdERhdGEgPSBpbml0RGF0YS5tYWtlQ29udGlndW91cygpOworICAgIGF1dG8q
IGRhdGEgPSBjb250aWd1b3VzSW5pdERhdGEtPmRhdGEoKTsKICAgICB1bnNpZ25lZCBpbml0RGF0
YVNpemUgPSBpbml0RGF0YS5zaXplKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIHVu
c2lnbmVkIHBzc2hTaXplID0gMDsKQEAgLTE4OCwxNSArMTg5LDE1IEBAIHN0YXRpYyBzdGQ6OnBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXRE
YXRhKGNvbnN0CiB9CiAKIC8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBpbml0RGF0YSBz
aGFyZWRCdWZmZXIgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRhLgotc3RhdGljIGJvb2wgaXNDZW5j
SW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBib29sIGlzQ2Vu
Y0luaXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAg
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCA9IGV4dHJhY3RLZXlpZHNM
b2NhdGlvbkZyb21DZW5jSW5pdERhdGEoaW5pdERhdGEpOwogICAgIHJldHVybiAoKGtleUlkc01h
cC5maXJzdCkgJiYgKGtleUlkc01hcC5zZWNvbmQpKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
aW5pdERhdGEpCitzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlp
ZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRh
KQogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAKICAgICBzdGQ6OnBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2Vu
Y0luaXREYXRhKGluaXREYXRhKTsKICAgICB1bnNpZ25lZCBrZXlJZENvdW50ID0ga2V5SWRzTWFw
LmZpcnN0OwpAQCAtMjA0LDkgKzIwNSwxMCBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0
cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogCiAg
ICAgLy8gQ2hlY2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRhLgogICAgIGlm
ICgha2V5SWRDb3VudCB8fCAhaW5kZXgpCi0gICAgICAgIHJldHVybiBrZXlJZHM7CisgICAgICAg
IHJldHVybiBrZXlJZHMudGFrZSgpOwogCi0gICAgYXV0byogZGF0YSA9IGluaXREYXRhLmRhdGEo
KTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXREYXRhLm1ha2VDb250aWd1b3Vz
KCk7CisgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0YS0+ZGF0YSgpOwogCiAgICAg
YXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJy
YXkgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CkBAIC0yMjQsMTcgKzIyNiwxNyBAQCBzdGF0aWMg
UmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBpbml0RAogCiAgICAgb2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUo
a2V5SWRzQXJyYXkpKTsKICAgICBDU3RyaW5nIGpzb25EYXRhID0gb2JqZWN0LT50b0pTT05TdHJp
bmcoKS51dGY4KCk7Ci0gICAga2V5SWRzLT5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0
YS5sZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGtleUlkczsKKyAgICBrZXlJZHMuYXBwZW5kKGpzb25E
YXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOworICAgIHJldHVybiBrZXlJZHMudGFrZSgp
OwogfQogCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGljIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlk
cyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJ
ZHM7CiAKICAgICAvLyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIFdlYk0gaW5pdERhdGEu
CiAgICAgaWYgKGluaXREYXRhLmlzRW1wdHkoKSB8fCBpbml0RGF0YS5zaXplKCkgPiBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBrZXlJZHM7Cisg
ICAgICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogCiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpP
YmplY3Q6OmNyZWF0ZSgpOwogICAgIGF1dG8ga2V5SWRzQXJyYXkgPSBKU09OOjpBcnJheTo6Y3Jl
YXRlKCk7CkBAIC0yNDUsMTIgKzI0NywxMiBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0
cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYQogICAg
IC8vIFRoZSBmb3JtYXQgaXMgYSBKU09OIG9iamVjdCBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcg
bWVtYmVyczoKICAgICAvLyAia2lkcyIKICAgICAvLyBBbiBhcnJheSBvZiBrZXkgSURzLiBFYWNo
IGVsZW1lbnQgb2YgdGhlIGFycmF5IGlzIHRoZSBiYXNlNjR1cmwgZW5jb2Rpbmcgb2YgdGhlIG9j
dGV0IHNlcXVlbmNlIGNvbnRhaW5pbmcgdGhlIGtleSBJRCB2YWx1ZS4KLSAgICBrZXlJZHNBcnJh
eS0+cHVzaFN0cmluZyhiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhpbml0RGF0YS5kYXRhKCksIGlu
aXREYXRhLnNpemUoKSkpOworICAgIGtleUlkc0FycmF5LT5wdXNoU3RyaW5nKGJhc2U2NFVSTEVu
Y29kZVRvU3RyaW5nKGluaXREYXRhLm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEu
c2l6ZSgpKSk7CiAKICAgICBvYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShrZXlJZHNB
cnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBvYmplY3QtPnRvSlNPTlN0cmluZygpLnV0
ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0
aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtleUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0
YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGtleUlkcy50YWtlKCk7CiB9CiAK
IENETUZhY3RvcnlDbGVhcktleSYgQ0RNRmFjdG9yeUNsZWFyS2V5OjpzaW5nbGV0b24oKQpAQCAt
Mzg4LDcgKzM5MCw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25z
KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6
OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBT
aGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAorYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0
aGUgaW5pdERhdGEgYnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0IGluIGtleWlkcyBjYXNlLgogICAg
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJrZXlpZHMi
KSAmJiBDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdChpbml0RGF0YSkpCkBAIC00MDUsNyAr
NDA3LDcgQEAgYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIC8vIFZhbGlkYXRl
IHRoZSByZXNwb25zZSBidWZmZXIgYXMgYW4gSlNPTiBvYmplY3QuCiAgICAgaWYgKCFDRE1VdGls
aXRpZXM6OnBhcnNlSlNPTk9iamVjdChyZXNwb25zZSkpCkBAIC00MzEsNyArNDMzLDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZUNsZWFyS2V5Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3Qg
Q0RNS2V5U3lzdGVtQ29uZmlndXIKICAgICBjYWxsYmFjayhzdWNjZWVkZWQpOwogfQogCi12b2lk
IENETUluc3RhbmNlQ2xlYXJLZXk6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZUNsZWFy
S2V5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
U3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgLy8gUmVqZWN0IHNldHRpbmcgYW55
IHNlcnZlciBjZXJ0aWZpY2F0ZS4KICAgICBjYWxsYmFjayhGYWlsZWQpOwpAQCAtNDUzLDcgKzQ1
NSw3IEBAIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNlQ2xlYXJLZXk6OmNy
ZWF0ZVNlc3Npb24oKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ0RNSW5zdGFuY2VTZXNzaW9u
Q2xlYXJLZXkoKnRoaXMpKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJh
Y2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAg
ICAgc3RhdGljIHVpbnQzMl90IHNfc2Vzc2lvbklkVmFsdWUgPSAwOwogICAgICsrc19zZXNzaW9u
SWRWYWx1ZTsKQEAgLTQ3NSw3ICs0NzcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFy
S2V5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaQogICAg
ICAgICB9KTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3Bv
bnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICNpZiBMT0dfRElTQUJM
RUQKICAgICAvLyBXZSBvbmx5IHVzZSB0aGUgc2VzaW9uIElEIGZvciBkZWJ1ZyBsb2dnaW5nLiBU
aGUgdmVyYm9zZSBwcmVwcm9jZXNzb3IgY2hlY2tzIGFyZSBiZWNhdXNlCkBAIC01NjYsNyArNTY4
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKICAgICBBU1NFUlQoc2Vzc2lvbklkID09IG1f
c2Vzc2lvbklEKTsKIAogICAgIGF1dG8gZGlzcGF0Y2hDYWxsYmFjayA9Ci0gICAgICAgIFt3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCAmY2FsbGJhY2tdKEtleVN0YXR1c1ZlY3RvciYmIGtl
eVN0YXR1c1ZlY3Rvciwgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdl
LCBTdWNjZXNzVmFsdWUgc3VjY2VzcykgeworICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgJmNhbGxiYWNrXShLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNWZWN0b3IsIHN0
ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIFN1Y2Nl
c3NWYWx1ZSBzdWNjZXNzKSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKAogICAgICAg
ICAgICAgICAgIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqd2Vha1RoaXMgfSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKSwga2V5U3RhdHVzVmVjdG9yID0gV1RGTW92ZShrZXlTdGF0dXNWZWN0
b3IpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc3VjY2Vzc10oKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTU3OSw3ICs1ODEsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZQogICAgIC8vIENvbnN0cnVjdCB0aGUgS2V5U3RhdHVzVmVjdG9y
IG9iamVjdCwgcmVwcmVzZW50aW5nIHJlbGVhc2VkIGtleXMsIGFuZCB0aGUgbWVzc2FnZSBpbiB0
aGUKICAgICAvLyAnbGljZW5zZSByZWxlYXNlJyBmb3JtYXQuCiAgICAgS2V5U3RhdHVzVmVjdG9y
IGtleVN0YXR1c1ZlY3RvciA9IG1fa2V5U3RvcmUuYWxsS2V5c0FzKENETUluc3RhbmNlU2Vzc2lv
bjo6S2V5U3RhdHVzOjpSZWxlYXNlZCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWVzc2Fn
ZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZTsKICAgICB7CiAg
ICAgICAgIC8vIENvbnN0cnVjdCBKU09OIHRoYXQgcmVwcmVzZW50cyB0aGUgJ2xpY2Vuc2UgcmVs
ZWFzZScgZm9ybWF0LCBjcmVhdGluZyBhICdraWRzJyBhcnJheQogICAgICAgICAvLyBvZiBiYXNl
NjRVUkwtZW5jb2RlZCBrZXkgSURzIGZvciBhbGwga2V5cyB0aGF0IHdlcmUgYXNzb2NpYXRlZCB3
aXRoIHRoaXMgc2Vzc2lvbi4KQEAgLTU5MywxNCArNTk1LDE0IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uQ2xlYXJLZXk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBMaWNlCiAgICAgICAgICAgICByb290T2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUo
YXJyYXkpKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIENvcHkgdGhlIEpTT04gZGF0YSBpbnRv
IGEgU2hhcmVkQnVmZmVyIG9iamVjdC4KKyAgICAgICAgLy8gQ29weSB0aGUgSlNPTiBkYXRhIGlu
dG8gYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIG9iamVjdC4KICAgICAgICAgU3RyaW5nIG1lc3Nh
Z2VTdHJpbmcgPSByb290T2JqZWN0LT50b0pTT05TdHJpbmcoKTsKICAgICAgICAgQ1N0cmluZyBt
ZXNzYWdlQ1N0cmluZyA9IG1lc3NhZ2VTdHJpbmcudXRmOCgpOwogICAgICAgICBtZXNzYWdlID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUobWVzc2FnZUNTdHJpbmcuZGF0YSgpLCBtZXNzYWdlQ1N0cmlu
Zy5sZW5ndGgoKSk7CiAgICAgfQogCiAgICAgbV9rZXlTdG9yZS51bnJlZkFsbEtleXMoKTsKLSAg
ICBkaXNwYXRjaENhbGxiYWNrKFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgUmVmPFNoYXJlZEJ1
ZmZlcj4oKm1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CisgICAgZGlzcGF0Y2hD
YWxsYmFjayhXVEZNb3ZlKGtleVN0YXR1c1ZlY3RvciksIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPigqbWVzc2FnZSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKIH0KIAogdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25DbGVhcktleTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmlu
ZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9j
bGVhcmtleS9DRE1DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAppbmRleCA5YzA3NDdkYzFiZDhlNjdmM2JhODY0
ZDliODExMzM3NjI1YzhhNjc5Li45ZTI3ZmU5MTJjNGRhMDY3ZmIyNmNhZmJjN2Y2YTY1MWRhNDc1
MjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9j
bGVhcmtleS9DRE1DbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKQEAgLTg2LDggKzg2LDggQEAgcHVibGlj
OgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRz
U2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Np
b25zKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZp
bmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVT
ZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiB9OwogCkBAIC05OSw3ICs5OSw3
IEBAIHB1YmxpYzoKICAgICAvLyBDRE1JbnN0YW5jZQogICAgIEltcGxlbWVudGF0aW9uVHlwZSBp
bXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5
cGU6OkNsZWFyS2V5OyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVy
cywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2
b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBz
ZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lv
bj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAtMTA5LDggKzEwOSw4IEBAIGNsYXNzIENETUlu
c3RhbmNlU2Vzc2lvbkNsZWFyS2V5IGZpbmFsIDogcHVibGljIENETUluc3RhbmNlU2Vzc2lvblBy
b3h5IHsKIHB1YmxpYzoKICAgICBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleShDRE1JbnN0YW5j
ZUNsZWFyS2V5JiBwYXJlbnQpCiAgICAgICAgIDogQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkocGFy
ZW50KSB7IH0KLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vu
c2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5n
JiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24o
TGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2Fs
bGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xv
c2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShj
b25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRF
bmNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmgKaW5kZXggZTk2OGU5ODVjN2VlY2VmZTQzNWFhOTIwNWM0NGRkMzVhZWQ4
ZTBkMC4uZWNmNGUwOGM5Yjk5MWFkZTI3M2JkNDRjNjBiYjE1ZmUwMTYzNWIxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmlj
LmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBLZXllZEVu
Y29kZXJHZW5lcmljIGZpbmFsIDogcHVibGljIEtleWVkRW5jb2RlciB7CiBwdWJsaWM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAppbmRl
eCA4YThjMTBiNzAyNGNmZTAzOGU5ZmE3YjcxNWJlMjY4ODlmYzA1ZTI4Li45MzdkMWZiNmYwYzhk
N2I1MWYxOGZmMTU1NjBiM2I5NGE3NGY2MWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAgLTI2LDE2ICsyNiwxNiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdCeXRlcyog
Ynl0ZXMpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEdC
eXRlcyogYnl0ZXMpCiB7CiAgICAgQVNTRVJUKGJ5dGVzKTsKICAgICBtX3NpemUgPSBnX2J5dGVz
X2dldF9zaXplKGJ5dGVzKTsKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50
OjpjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+KGJ5dGVzKSkgfSk7CiB9CiAKLVJlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMpCitSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJ5dGVzKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihieXRlcykpOwogfQog
CiBHUmVmUHRyPEdCeXRlcz4gU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IDc0NDIwMDRmMDBiNWRiYTI3
ZjNjMzJlNjY3YjM2YmNjZjc4NTE0Y2QuLjgyZWJhNzNiYWM0Yzc2ZmVhMGJiNjBlYmE0NDM2ODJk
MjJjN2ZlMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTU5
LDcgKzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRm9udENhY2hlOwogY2xhc3Mg
Rm9udERlc2NyaXB0aW9uOwogY2xhc3MgR2x5cGhQYWdlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IEdseXBoRGF0YTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5o
CmluZGV4IDMwZGZhYTJkMmY4NWE5ZjdjZGEyMDA4MjlkZTE5OWIxNGU4NGIyMTkuLmZiYmNjYzQz
Njg0NDc0OTA4M2NlODkxZjM2M2Y2Y2M0MGYyOTc0NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTc0LDcgKzc0LDYg
QEAgaW50ZXJmYWNlIElEV3JpdGVGb250RmFjZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRm9udERlc2NyaXB0aW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiAvLyBUaGlzIGNsYXNz
IGlzIGNvbmNlcHR1YWxseSBpbW11dGFibGUuIE9uY2UgY3JlYXRlZCwgbm8gaW5zdGFuY2VzIHNo
b3VsZCBldmVyIGNoYW5nZSAoaW4gYW4gb2JzZXJ2YWJsZSB3YXkpLgogY2xhc3MgRm9udFBsYXRm
b3JtRGF0YSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5k
ZXggNGE4NTNlYjY0OTUzZDRhZTQ4MzRmODdjNTQ4N2FjZDM2NGM1N2Q4MS4uZTMyYTM2YzYwNzYx
OTIxNjhjNmEzNzkzMThmNzhhZTE3ODljNDgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgSW1hZ2U6OmlzUG9z
dFNjcmlwdFJlc291cmNlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgdXJsKQog
fQogCiAKLUVuY29kZWREYXRhU3RhdHVzIEltYWdlOjpzZXREYXRhKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCitFbmNvZGVkRGF0YVN0YXR1cyBJbWFn
ZTo6c2V0RGF0YShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKIHsKICAgICBtX2VuY29kZWRJbWFnZURhdGEgPSBXVEZNb3ZlKGRhdGEp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCA2YTA4MTY5
NTdhYTkzYzQxMWE1NmNkNGMyYmMyMGRkNmQ5MDQ0ZGVjLi42NTVkZmU3M2NmZjZhZDFkMDRmNDhi
YzIwMTllYmI4MDQxN2Q2MTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKQEAgLTcwLDcgKzcwLDcgQEAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgRmxv
YXRQb2ludDsKIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgTGVu
Z3RoOwogCiAvLyBUaGlzIGNsYXNzIGdldHMgbm90aWZpZWQgd2hlbiBhbiBpbWFnZSBjcmVhdGVz
IG9yIGRlc3Ryb3lzIGRlY29kZWQgZnJhbWVzIGFuZCB3aGVuIGl0IGFkdmFuY2VzIGFuaW1hdGlv
biBmcmFtZXMuCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgc3RkOjpv
cHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsg
fQogICAgIHZpcnR1YWwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQg
RW5jb2RlZERhdGFTdGF0dXMgc2V0RGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFbmNvZGVkRGF0YVN0YXR1
cyBzZXREYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKTsKICAgICB2aXJ0dWFsIEVuY29kZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2Vk
KGJvb2wgLyphbGxEYXRhUmVjZWl2ZWQqLykgeyByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OlVu
a25vd247IH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIHV0aSgpIGNvbnN0IHsgcmV0dXJuIFN0cmlu
ZygpOyB9IC8vIG51bGwgc3RyaW5nIGlmIHVua25vd24KQEAgLTEzMyw4ICsxMzMsOCBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveURlY29kZWREYXRhKGJvb2wgZGVzdHJveUFs
bCA9IHRydWUpID0gMDsKIAotICAgIFNoYXJlZEJ1ZmZlciogZGF0YSgpIHsgcmV0dXJuIG1fZW5j
b2RlZEltYWdlRGF0YS5nZXQoKTsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQorICAgIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGRhdGEoKSB7IHJldHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0K
KyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBjb2xvclNwYWNlKCk7CiAKQEAgLTIwOSw3ICsyMDksNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdCB7IHJldHVybiBD
b2xvcigpOyB9CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVk
SW1hZ2VEYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2VuY29kZWRJ
bWFnZURhdGE7CiAgICAgSW1hZ2VPYnNlcnZlciogbV9pbWFnZU9ic2VydmVyOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxUaW1lcj4gbV9hbmltYXRpb25TdGFydFRpbWVyOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4
IDRkZGI2ZGY4M2VjYjhiOWI3OTU3ZjQ2NjRlMTg0ZjAwODFlODEwMTEuLmRlMzNmMWFmNDEyZGMw
OGIyYjk2MWExOTQ5NDVjOWNjOTBhYTY2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaApAQCAtNjYsNyArNjYsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgYnVmZmVyLmdyb3co
YnVmZmVyU2l6ZSk7Ci0gICAgICAgIG1fcGl4ZWxzID0gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1fcGl4ZWxzID0gRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAg
ICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0
PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAg
ICAgICAgIG1fZnJhbWVSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBtX3NpemUpOwpAQCAtMjA2
LDcgKzIwNiw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBBU1NFUlQoIW1fc2l6ZS5pc0Vt
cHR5KCkgJiYgIWlzT3ZlclNpemUobV9zaXplKSk7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBi
dWZmZXIgeyBvdGhlci5tX3BpeGVscy0+ZGF0YSgpLCBvdGhlci5tX3BpeGVscy0+c2l6ZSgpIH07
Ci0gICAgICAgIG1fcGl4ZWxzID0gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdU
Rk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1fcGl4ZWxzID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX3BpeGVs
c1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPiht
X3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgfQogCkBAIC0yMzMsNyArMjMzLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIFBhY2tlZENvbG9yOjpBUkdCIHsgcmVzdWx0IH0udmFsdWU7CiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fcGl4ZWxzOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9waXhlbHM7CiAg
ICAgdWludDMyX3QqIG1fcGl4ZWxzUHRyIHsgbnVsbHB0ciB9OwogICAgIEludFNpemUgbV9zaXpl
OwogICAgIEludFJlY3QgbV9mcmFtZVJlY3Q7IC8vIFRoaXMgd2lsbCBhbHdheXMganVzdCBiZSB0
aGUgZW50aXJlIGJ1ZmZlciBleGNlcHQgZm9yIEdJRiBhbmQgUE5HIGZyYW1lcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggMDg2
OWU5OWEwMDg4NmY3Y2QxMjE4NmZlMzE2MWRlMDQ3ZmE1MTM2MS4uN2M1NDk0N2Y0ZDgxNDA4NTU5
Y2M0NWM0YWM0OWExOWI5ZmM4NmY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgSW1hZ2VE
ZWNvZGVyOjpjbGVhckZhY3RvcmllcygpCiB9CiAjZW5kaWYKIAotUmVmUHRyPEltYWdlRGVjb2Rl
cj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8SW1hZ2VEZWNvZGVyPiBJ
bWFnZURlY29kZXI6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgVU5VU0VEX1BB
UkFNKG1pbWVUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZURlY29kZXIuaAppbmRleCBhMWEwOGFkYzE3NWQ0NGJhYTQ0MmU0NGE5NGFhOTY3YTA0ZjVm
NjA3Li42YThmZmNiNjBmYzExNTZlYjg0ODc2ZGVmYjA3Y2JjMGIxMTk4NDk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaApAQCAtMzcsMTIg
KzM3LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSW1hZ2VEZWNvZGVyIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlRGVjb2Rlcj4gewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBj
cmVhdGUoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVj
b2Rlcj4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1
YWwgfkltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAogICAgIGVudW0gY2xhc3MgTWVkaWFUeXBl
IHsKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAg
ICB1c2luZyBTdXBwb3J0c01lZGlhVHlwZUZ1bmMgPSBGdW5jdGlvbjxib29sKE1lZGlhVHlwZSk+
OwogICAgIHVzaW5nIENhbkRlY29kZVR5cGVGdW5jID0gRnVuY3Rpb248Ym9vbChjb25zdCBTdHJp
bmcmKT47Ci0gICAgdXNpbmcgQ3JlYXRlSW1hZ2VEZWNvZGVyRnVuYyA9IEZ1bmN0aW9uPFJlZlB0
cjxJbWFnZURlY29kZXI+KFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIEFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik+OworICAgIHVzaW5nIENyZWF0ZUltYWdlRGVj
b2RlckZ1bmMgPSBGdW5jdGlvbjxSZWZQdHI8SW1hZ2VEZWNvZGVyPihGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKT47CiAKICAgICBzdHJ1Y3QgSW1hZ2VEZWNvZGVyRmFjdG9yeSB7CiAgICAgICAgIFN1
cHBvcnRzTWVkaWFUeXBlRnVuYyBzdXBwb3J0c01lZGlhVHlwZTsKQEAgLTEyOSw3ICsxMjksNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRFeHBlY3RlZENvbnRl
bnRTaXplKGxvbmcgbG9uZykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVm
ZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0
YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpID0gMDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IGQ4MWM0ODAx
OTI4NDZkZDdlMzIxYzJkZmJmYmYxZTBjMjBkYWE2NzEuLjMwNzc0MzMxNWE0MWVjYTFjOWIyYmM3
NzNkMDc5ZWU1ZDQzYmFmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgSW1hZ2VTb3VyY2U6On5JbWFn
ZVNvdXJjZSgpCiAgICAgQVNTRVJUKCZtX3J1bkxvb3AgPT0gJlJ1bkxvb3A6OmN1cnJlbnQoKSk7
CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVm
ZmVyKiBkYXRhKQorYm9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghZGF0YSB8fCBpc0RlY29kZXJB
dmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC05Niw3ICs5Niw3IEBAIGJvb2wg
SW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRhKQog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1
ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlU291cmNlOjpzZXRE
YXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ewogICAgIGlmICghZGF0YSB8fCAhZW5zdXJlRGVjb2RlckF2YWlsYWJsZShkYXRhKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTA0LDEzICsxMDQsMTMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0
YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIG1fZGVjb2Rl
ci0+c2V0RGF0YSgqZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJj
ZTo6cmVzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0
RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIG1fZGVjb2RlciA9IG51
bGxwdHI7CiAgICAgc2V0RGF0YShkYXRhLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKIH0KIAotRW5j
b2RlZERhdGFTdGF0dXMgSW1hZ2VTb3VyY2U6OmRhdGFDaGFuZ2VkKFNoYXJlZEJ1ZmZlciogZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCitFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZVNvdXJjZTo6
ZGF0YUNoYW5nZWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiB7CiAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGNsZWFy
TWV0YWRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5oCmluZGV4IDhhZjUwODBhMDBhOTkxNjA4MGYxZjBiMjc3MDczYzJhODUzNDUyNTguLjgx
NGYwZTEyZWJhYTQ4Zjg2YWNiNTIxOTczYzMxZDVkMzgyZjZmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtMzksNyArMzksNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCaXRtYXBJbWFnZTsKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dDsKIGNsYXNzIEltYWdlRGVjb2RlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEltYWdlU291cmNlIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPEltYWdlU291cmNlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEltYWdl
U291cmNlPiB7CiAgICAgZnJpZW5kIGNsYXNzIEJpdG1hcEltYWdlOwpAQCAtNTYsOSArNTYsOSBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlU291cmNlKFdURk1v
dmUobmF0aXZlSW1hZ2UpKSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIHZvaWQgcmVzZXREYXRhKFNoYXJl
ZEJ1ZmZlciogZGF0YSk7Ci0gICAgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQoU2hhcmVk
QnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCBzZXREYXRhKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2
b2lkIHJlc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBFbmNvZGVk
RGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCk7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpOwogCiAgICAg
dW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZWRTaXplOyB9CkBA
IC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAg
IFQgZmlyc3RGcmFtZU1ldGFkYXRhQ2FjaGVJZk5lZWRlZChUJiBjYWNoZWRWYWx1ZSwgTWV0YWRh
dGFUeXBlLCBUIChJbWFnZUZyYW1lOjoqZnVuY3RvcikoKSBjb25zdCwgSW1hZ2VGcmFtZTo6Q2Fj
aGluZywgY29uc3Qgc3RkOjpvcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgPSB7IH0pOwogCi0g
ICAgYm9vbCBlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAg
Ym9vbCBlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEp
OwogICAgIGJvb2wgaXNEZWNvZGVyQXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVy
OyB9CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoc2l6ZV90IGZyYW1lQ291bnQsIHNpemVf
dCBleGNsdWRlRnJhbWUpOwogICAgIHZvaWQgZGVjb2RlZFNpemVDaGFuZ2VkKGxvbmcgbG9uZyBk
ZWNvZGVkU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAK
aW5kZXggM2U1OWVhOWQwOGRkMWM5YmVlMjNiYTNmNjM1Y2YzNWJmYzI4MjI5Mi4uNTc3YmQ1MDhh
NWM0MDlmNGJlOWU0Y2YyMDJiODFlNjFlNDViNDRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01vZGVsLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+IGRh
dGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK1JlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2RlbChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKG1pbWVU
eXBlKSwgV1RGTW92ZSh1cmwpKSk7CiB9CiAKLU1vZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVmZmVy
PiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitNb2RlbDo6TW9kZWwoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiAgICAgOiBtX2RhdGEo
V1RGTW92ZShkYXRhKSkKICAgICAsIG1fbWltZVR5cGUoV1RGTW92ZShtaW1lVHlwZSkpCiAgICAg
LCBtX3VybChXVEZNb3ZlKHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuaAppbmRleCAwNjU4MTMzNzlmMTEyNTVkMmQ3YzdmNmI1MDM0NDNkYzYzMGQwNGUxLi5lNmJk
ZTE2NmY5NDRjZGU3ZGIzMjhjMjk3NmVjNjgyYWRiNmQxMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBNb2RlbCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVsPiB7CiBw
dWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxT
aGFyZWRCdWZmZXI+LCBTdHJpbmcsIFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxNb2RlbD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB+TW9kZWwoKTsKIAogICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGE7IH0KQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+IGRlY29kZShEZWNvZGVy
Jik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4sIFN0
cmluZywgVVJMKTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdHJp
bmcsIFVSTCk7CiAKICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1f
bWltZVR5cGU7CkBAIC02MCw3ICs2MCw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lk
IE1vZGVsOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8
IHN0YXRpY19jYXN0PHNpemVfdD4obV9kYXRhLT5zaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2Rl
Rml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSwgMSk7CisgICAg
ZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIG1fZGF0YS0+c2l6ZSgpLCAxKTsKICAgICBlbmNvZGVyIDw8IG1fbWltZVR5cGU7CiAg
ICAgZW5jb2RlciA8PCBtX3VybDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXgg
NzQ1OWM1ODU4ZDI0ODdlZjJjNWZkMzcxNzM5ODZiMzM3MzRlYzI4YS4uODg2OTFkYzI1NmQ2ZGQ2
YzQ1ZjQ2ZTAxNTQ5Njc0MjQ1YWEzNTMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgK
QEAgLTUxLDggKzUxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVx
dWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlcXVlc3QpKTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJldHVybiB0cnVl
OyB9CiAgICAgdmlydHVhbCB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVu
c2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+
JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIC8vIFRoaXMgbWV0aG9k
IHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgdXNlcyBTaGFy
ZWRCdWZmZXIuCisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgeyBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CisgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIGJlIHJlbW92ZWQgb25j
ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB1c2VzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAg
ICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHBsYXRm
b3JtLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IGRhdGFSZWNlaXZlZChwbGF0
Zm9ybSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7IH0KICAgICB2aXJ0dWFs
IHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUu
Y3BwCmluZGV4IDU0OTlmMzdhN2YzNjQ2YmQ1ZjM5NWE0OGIwOWQ5NDExZDRjOWI2NjQuLmQzZTFi
NTgwNGU4NWE5OTExY2YyMGZjZWQzNGJmMjU1YTMxNDQzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBA
IC0xMzE4LDcgKzEzMTgsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVT
YW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmIG9yaWdpbmFsU2FtcGxlKQogICAgIHVwZGF0ZUhpZ2hl
c3RQcmVzZW50YXRpb25UaW1lc3RhbXAoKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
OjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGU6OmFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAg
ICAgYXBwZW5kKGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKaW5kZXggZWY4
NmE0NzM2OTM3MWM4M2U4ODNiMjliYmI2YjlhYjk2ZWNhNWYxZC4uNmI3ZDk1ZTUyYjlkZjBjODFh
ZjNiZTFkNmQ5ZjNjOGVkMzk1NDE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtNDksNyArNDksNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBUaW1lUmFuZ2VzOwogCiBlbnVtIGNsYXNzIFNvdXJj
ZUJ1ZmZlckFwcGVuZE1vZGUgOiB1aW50OF90IHsKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclByaXZhdGUoKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCkgPSAwOwotICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBhcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIGFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAg
ICAgdmlydHVhbCB2b2lkIGFib3J0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNldFBhcnNl
clN0YXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggYzYx
MTJlMTE5NGM3Yzk5MGZkYzExNGU4MjljZmRiNWM2YWY3NTRhOS4uOGIwNGY5YmU5NmMzNmUwYTI2
MjE4MGEyNWVhMzc0NTk2MmIzZDdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlT
dHJlYW1pbmcuY3BwCkBAIC04NiwxMiArODYsMTIgQEAgY29uc3QgQXRvbVN0cmluZyYgQ0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpza2ROYW1lKCkKICAgICByZXR1cm4gc2tkOwogfQogCi1z
dGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICAvLyBKU09OIG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNv
ZGVkLXN0cmluZz4gXSB9IgogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIFN0cmluZyBq
c29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkp
IH07CisgICAgU3RyaW5nIGpzb24geyBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUg
PSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICghdmFsdWUpCkBAIC0xMDUs
NyArMTA1LDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmICghc2luZkFycmF5KQogICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBzaW5mczsK
KyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBzaW5mczsKICAgICBzaW5m
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpbmZBcnJheS0+bGVuZ3RoKCkpOwogCiAgICAgZm9y
IChhdXRvJiB2YWx1ZSA6ICpzaW5mQXJyYXkpIHsKQEAgLTEyNCw3ICsxMjQsNyBAQCBzdGF0aWMg
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB9CiAKIHVzaW5nIFNjaGVtZUFuZEtleVJlc3VsdCA9IFZlY3RvcjxzdGQ6
OnBhaXI8Rm91ckNDLCBWZWN0b3I8dWludDhfdD4+PjsKLXN0YXRpYyBTY2hlbWVBbmRLZXlSZXN1
bHQgZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJvbVNpbmYoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCitzdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21T
aW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGJ1
ZmZlcnMgPSBleHRyYWN0U2luZkRhdGEoYnVmZmVyKTsKICAgICBpZiAoIWJ1ZmZlcnMuc2l6ZSgp
KQpAQCAtMTcwLDkgKzE3MCw5IEBAIHN0YXRpYyBTY2hlbWVBbmRLZXlSZXN1bHQgZXh0cmFjdFNj
aGVtZUFuZEtleUlkRnJvbVNpbmYoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2lu
Zihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJl
ZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4ga2V5SURzOwogICAgIGF1dG8gcmVzdWx0cyA9IGV4dHJhY3RTY2hlbWVBbmRLZXlJ
ZEZyb21TaW5mKGJ1ZmZlcik7CiAKICAgICBmb3IgKGF1dG8mIHJlc3VsdCA6IHJlc3VsdHMpIHsK
QEAgLTE4Myw3ICsxODMsNyBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleQogICAgIHJldHVybiBr
ZXlJRHM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6c2FuaXRpemVTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRp
emVTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBD
b21tb24gU0lORiBCb3ggRm9ybWF0CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0xOTEs
MTcgKzE5MSwxNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc6OnNhbml0aXplU2luZihjb25zdCBTaGFyZWRCdWZmZQogICAgIHJldHVybiBidWZmZXIu
Y29weSgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc6OnNhbml0aXplU2tkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRp
emVTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIFVOVVNF
RF9QQVJBTShidWZmZXIpOwogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGJ1ZmZl
ci5jb3B5KCk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4g
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2tkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2tk
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBJbiB0aGUg
J3NrZCcgc2NoZW1lLCB0aGUgaW5pdCBkYXRhIGlzIHRoZSBrZXkgSUQuCi0gICAgVmVjdG9yPFJl
ZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4ga2V5SURzOwogICAgIGtleUlEcy5hcHBlbmQoYnVmZmVyLmNvcHkoKSk7CiAgICAg
cmV0dXJuIGtleUlEczsKIH0KQEAgLTM5Myw3ICszOTMsNyBAQCBib29sIENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0lu
aXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAgICAgaWYgKCF2YWxpZEluaXREYXRhVHlw
ZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00
MjMsNyArNDIzLDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXAKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkg
Y29uc3QKIHsKICAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3Ry
ZWFtaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Q0RNRmFpclBsYXlTdHJlYW1pbmcuaAppbmRleCBiYzkzZjZmNmE3YmRkMDFlZmJmNTViNjJiZGI2
YTRlNjZlZjkxMmIzLi4zMTdiYjhkNTdlODZjMDYyMTRlMGI0MDU5ZGRmNGY4ODA3Yzc0YzZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Q0RNRmFpclBsYXlTdHJlYW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaApAQCAtNzEsMTcgKzcxLDE3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJv
b2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgc3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBT
aGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBv
dmVycmlkZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNw
b25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHNpbmZOYW1lKCk7
Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0
cmFjdEtleUlEc1NpbmYoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNhbml0aXplU2luZihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0
cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRp
YyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTaW5mKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBza2RO
YW1lKCk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
Pj4gZXh0cmFjdEtleUlEc1NrZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBzdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTa2QoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+
IGV4dHJhY3RLZXlJRHNTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0
YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTa2QoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxGb3VyQ0M+
JiB2YWxpZEZhaXJQbGF5U3RyZWFtaW5nU2NoZW1lcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMu
aAppbmRleCAxNTliOTBjZGI0OGY3ZmU0NGJiNDliZTJlYzFjMWMyZjQzMjg2NDAwLi41NmI1OGMy
NWEyODcwOWZiMzgyMjE4MzllNTViYWU0NWVkOTNjZjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
LmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBs
ZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6
OkZhaXJQbGF5U3RyZWFtaW5nOyB9CiAKICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJh
dGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFs
OwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3Vj
Y2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAg
ICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUmVm
UHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwogICAgIHZvaWQg
c2V0Q2xpZW50KFdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+JiYpIGZpbmFsOwpAQCAtOTQsMTAg
Kzk0LDEwIEBAIHB1YmxpYzoKIAogICAgIE5TVVJMICpzdG9yYWdlVVJMKCkgY29uc3QgeyByZXR1
cm4gbV9zdG9yYWdlVVJMLmdldCgpOyB9CiAgICAgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2Vk
KCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkOyB9Ci0gICAgU2hhcmVk
QnVmZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlm
aWNhdGUuZ2V0KCk7IH0KKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0aWZp
Y2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0KICAgICBB
VkNvbnRlbnRLZXlTZXNzaW9uKiBjb250ZW50S2V5U2Vzc2lvbigpOwogCi0gICAgUmV0YWluUHRy
PEFWQ29udGVudEtleVJlcXVlc3Q+IHRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxp
emF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZlciYg
aW5pdERhdGEpOworICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiB0YWtlVW5leHBl
Y3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSk7CiAKICAgICAvLyBB
VkNvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGVDbGllbnQKICAgICB2b2lkIGRpZFByb3ZpZGVSZXF1
ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBmaW5hbDsKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90
ZWN0aW9uQ2hhbmdlZChib29sKSBmaW5hbDsKICAgICB2b2lkIGV4dGVybmFsUHJvdGVjdGlvblN0
YXR1c0RpZENoYW5nZUZvckNvbnRlbnRLZXlSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBm
aW5hbDsKIAotICAgIHVzaW5nIEtleXMgPSBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+OworICAg
IHVzaW5nIEtleXMgPSBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAgICBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JLZXlJ
RHMoY29uc3QgS2V5cyYpIGNvbnN0OwogICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvckdyb3VwKEFWQ29udGVudEtleVJlcG9ydEdyb3VwKikg
Y29uc3Q7CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBz
ZXNzaW9uRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgY29uc3Q7CkBAIC0xMjksNyAr
MTI5LDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50PiBtX2NsaWVu
dDsKICAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5U2Vzc2lvbj4gbV9zZXNzaW9uOwogICAgIFJl
dGFpblB0cjxXZWJDb3JlRlBTQ29udGVudEtleVNlc3Npb25EZWxlZ2F0ZT4gbV9kZWxlZ2F0ZTsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOworICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOwogICAgIGJvb2wg
bV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkIHsgdHJ1ZSB9OwogICAgIFJldGFpblB0cjxOU1VSTD4g
bV9zdG9yYWdlVVJMOwogICAgIFZlY3RvcjxXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQz4+IG1fc2Vzc2lvbnM7CkBAIC0xNTAsOCArMTUwLDggQEAgcHVi
bGljOgogI2VuZGlmCiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb24KLSAgICB2b2lkIHJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAg
ICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2sm
JikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VU
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9p
ZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmlu
YWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlw
ZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akMubW0KaW5kZXggZTlmMmFhMzM1ZGI5YWM1ODM5NTE1ZDYyNWEwZGYyZmY0MDczZTk1My4uYmE1
MDYxZWJiNWM1ZmJlMDc0ZDNhMjlkZWE0ZjkxOGZjMjYyMWNkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMubW0KQEAgLTIxNyw3ICsyMTcsNyBAQCBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRT
X0VORAogICAgIHJldHVybiBBdG9tU3RyaW5nKG5zSW5pdFR5cGUpOwogfQogCi1zdGF0aWMgUmVm
PFNoYXJlZEJ1ZmZlcj4gaW5pdGlhbGl6YXRpb25EYXRhRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlS
ZXF1ZXN0KiByZXF1ZXN0KQorc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0
aWFsaXphdGlvbkRhdGFGb3JSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqIHJlcXVlc3QpCiB7
CiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KTsKQEAgLTI2NSw3ICsyNjUsNyBAQCBBVkNvbnRlbnRLZXlTZXNzaW9uKiBDRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y29udGVudEtleVNlc3Npb24oKQogICAgIHJldHVybiBt
X3Nlc3Npb24uZ2V0KCk7CiB9CiAKLVJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiBDRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0
Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgU2hh
cmVkQnVmZmVyJiBpbml0RGF0YSkKK1JldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiBDRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0
Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgZm9yIChhdXRvIHJlcXVlc3RJ
dGVyID0gbV91bmV4cGVjdGVkS2V5UmVxdWVzdHMuYmVnaW4oKTsgcmVxdWVzdEl0ZXIgIT0gbV91
bmV4cGVjdGVkS2V5UmVxdWVzdHMuZW5kKCk7ICsrcmVxdWVzdEl0ZXIpIHsKICAgICAgICAgYXV0
byYgcmVxdWVzdCA9ICpyZXF1ZXN0SXRlcjsKQEAgLTMxNiw3ICszMTYsNyBAQCBwcml2YXRlOgog
ICAgIFJlc3BvbnNlTWFwIG1fcmVzcG9uc2VzOwogfTsKIAotc3RhdGljIFJlZlB0cjxKU09OOjpW
YWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMg
UmVmUHRyPEpTT046OlZhbHVlPiBwYXJzZUpTT05WYWx1ZShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gRmFpbCBvbiBsYXJnZSBidWZmZXJzIHdob3NlIHNp
emUgZG9lc24ndCBmaXQgaW50byBhIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLgogICAgIHNpemVf
dCBzaXplID0gYnVmZmVyLnNpemUoKTsKQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0aWMgUmVmUHRy
PEpTT046OlZhbHVlPiBwYXJzZUpTT05WYWx1ZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBQYXJzZSB0aGUgYnVmZmVyIGNvbnRl
bnRzIGFzIEpTT04sIHJldHVybmluZyB0aGUgcm9vdCBvYmplY3QgKGlmIGFueSkuCi0gICAgU3Ry
aW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2l6ZSkgfTsK
KyAgICBTdHJpbmcganNvbiB7IGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzaXplKSB9OwogCiAgICAgcmV0dXJuIEpTT046OlZhbHVlOjpwYXJz
ZUpTT04oanNvbik7CiB9CkBAIC0zODAsNyArMzgwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENE
TUsKICAgICBjYWxsYmFjayhpbml0aWFsaXplKCkpOwogfQogCi12b2lkIENETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVm
ZmVyPiYmIHNlcnZlckNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3Zv
aWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFNlcnZlckNlcnRpZmlj
YXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHNlcnZlckNlcnRpZmljYXRlLCBTdWNj
ZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9H
SURFTlRJRklFUik7CiAgICAgbV9zZXJ2ZXJDZXJ0aWZpY2F0ZSA9IFdURk1vdmUoc2VydmVyQ2Vy
dGlmaWNhdGUpOwpAQCAtNTg1LDggKzU4NSw4IEBAIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQyogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6CiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRvIHNlc3Npb25LZXlzID0gc2Vzc2lv
bkludGVyZmFjZS0+a2V5SURzKCk7Ci0gICAgICAgIGlmIChhbnlPZihzZXNzaW9uS2V5cywgWyZd
KGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBzZXNzaW9uS2V5KSB7Ci0gICAgICAgICAgICByZXR1
cm4ga2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGtleUlE
KSB7CisgICAgICAgIGlmIChhbnlPZihzZXNzaW9uS2V5cywgWyZdKGNvbnN0IFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYgc2Vzc2lvbktleSkgeworICAgICAgICAgICAgcmV0dXJuIGtleUlE
cy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYga2V5
SUQpIHsKICAgICAgICAgICAgICAgICByZXR1cm4ga2V5SUQuZ2V0KCkgPT0gc2Vzc2lvbktleS5n
ZXQoKTsKICAgICAgICAgICAgIH0pICE9IG5vdEZvdW5kOwogICAgICAgICB9KSkKQEAgLTY3Myw3
ICs2NzMsNyBAQCBLZXlzIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6a2V5SURzKCkKICAgICByZXR1cm4ga2V5SURzOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUg
bGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNh
bGxiYWNrKQogewogICAgIGlmICghaXNMaWNlbnNlVHlwZVN1cHBvcnRlZChsaWNlbnNlVHlwZSkp
IHsKICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgZmFsc2Us
IGxpY2Vuc2VUeXBlIFwiIiwgbGljZW5zZVR5cGUsICJcIiBub3Qgc3VwcG9ydGVkIik7CkBAIC03
MDksMTIgKzcwOSwxMiBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZQogICAgIFJldGFpblB0cjxO
U0RhdGE+IGluaXRpYWxpemF0aW9uRGF0YTsKIAogICAgIGlmIChpbml0RGF0YVR5cGUgPT0gQ0RN
UHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzaW5mTmFtZSgpKQotICAgICAgICBpbml0aWFsaXph
dGlvbkRhdGEgPSBpbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGluaXRpYWxpemF0
aW9uRGF0YSA9IGluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICBlbHNlIGlmIChpbml0RGF0YVR5cGUgPT0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpz
a2ROYW1lKCkpCi0gICAgICAgIGlkZW50aWZpZXIgPSBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoRGF0YTppbml0RGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddKTsKKyAgICAgICAgaWRlbnRpZmllciA9IGFkb3B0TlMoW1tOU1N0
cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmluaXREYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOwogI2lmIEhB
VkUoRkFJUlBMQVlTVFJFQU1JTkdfQ0VOQ19JTklUREFUQSkKICAgICBlbHNlIGlmIChpbml0RGF0
YVR5cGUgPT0gSW5pdERhdGFSZWdpc3RyeTo6Y2VuY05hbWUoKSkgewotICAgICAgICBhdXRvIHBz
c2hTdHJpbmcgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhpbml0RGF0YS0+ZGF0YSgpLCBpbml0RGF0
YS0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBwc3NoU3RyaW5nID0gYmFzZTY0RW5jb2RlVG9TdHJp
bmcoaW5pdERhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgaW5pdERhdGEtPnNpemUoKSk7
CiAgICAgICAgIGluaXRpYWxpemF0aW9uRGF0YSA9IFtOU0pTT05TZXJpYWxpemF0aW9uIGRhdGFX
aXRoSlNPTk9iamVjdDpAeyBAInBzc2giOiAoTlNTdHJpbmcqKXBzc2hTdHJpbmcgfSBvcHRpb25z
Ok5TSlNPTldyaXRpbmdQcmV0dHlQcmludGVkIGVycm9yOm5pbF07CiAgICAgfQogI2VuZGlmCkBA
IC03MzYsNyArNzM2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICB9CiB9CiAKLXN0
YXRpYyBib29sIGlzRXF1YWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQorc3RhdGljIGJvb2wgaXNFcXVhbChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBk
YXRhLnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikKQEAgLTc1
NCw3ICs3NTQsNyBAQCBzdGF0aWMgYm9vbCBpc0VxdWFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICByZXR1cm4gc3RyaW5nT3JFeGNlcHRpb24ucmV0
dXJuVmFsdWUoKSA9PSB2YWx1ZTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJh
Y2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9leHBpcmVkU2Vzc2lvbnMuaXNFbXB0eSgpICYm
IGlzRXF1YWwocmVzcG9uc2VEYXRhLCAiYWNrbm93bGVkZ2VkIl9zKSkgewogICAgICAgICBhdXRv
KiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCk7CkBAIC03NzAs
NyArNzcwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgYXV0byBleHBpcmVk
U2Vzc2lvbnMgPSBjcmVhdGVOU0FycmF5KG1fZXhwaXJlZFNlc3Npb25zLCBbXSAoYXV0byYgZGF0
YSkgewogICAgICAgICAgICAgcmV0dXJuIGRhdGEuZ2V0KCk7CiAgICAgICAgIH0pOwotICAgICAg
ICBhdXRvIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAg
ICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKTsKICAgICAgICAgW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNz
KCkgcmVtb3ZlUGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0czpleHBpcmVkU2Vzc2lvbnMuZ2V0
KCkgd2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5
QXRVUkw6c3RvcmFnZVVSTF07CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCB7IH0sIHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZWVkZWQpOwogICAgICAgICByZXR1cm47CkBAIC04NTYs
NyArODU2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAgIGF1dG8ga2V5
SUQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCprZXlJRFZlY3RvcikpOwogICAgICAg
ICAgICAgYXV0byBmb3VuZEluZGV4ID0gbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3Rz
LmZpbmRNYXRjaGluZyhbJl0gKGF1dG8mIHJlcXVlc3QpIHsKICAgICAgICAgICAgICAgICBhdXRv
IGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGtleUlEcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+
JiBpZCkgeworICAgICAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShj
b25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGlkKSB7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBpZC5nZXQoKSA9PSBrZXlJRC5nZXQoKTsKICAgICAgICAgICAgICAgICB9KSAh
PSBub3RGb3VuZDsKICAgICAgICAgICAgIH0pOwpAQCAtODg4LDcgKzg4OCw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNv
bnN0IFN0cmluZyYsIExpCiAgICAgICAgICAgICAgICAgaWYgKCFwYXlsb2FkVmVjdG9yKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgYXV0byBwYXls
b2FkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBheWxvYWRWZWN0b3IpKTsK
LSAgICAgICAgICAgICAgICBbcmVxdWVzdCBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6
OmdldEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFp
clBsYXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cGF5bG9hZERhdGEtPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXV07CisgICAgICAgICAgICAgICAgW3JlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNw
b25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkgY29udGVudEtleVJlc3Bv
bnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnBheWxvYWREYXRhLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH07CkBAIC05MDEsNyArOTAxLDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIERF
QlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiJ3NpbmYnIGluaXREYXRhLCBwcm9j
ZXNzaW5nIHJlc3BvbnNlIik7Ci0gICAgICAgIFttX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVx
dWVzdHMuZmlyc3QoKSBwcm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltQQUw6OmdldEFWQ29udGVu
dEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBsYXlTdHJlYW1p
bmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwor
ICAgICAgICBbbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpcnN0KCkgcHJvY2Vz
c0NvbnRlbnRLZXlSZXNwb25zZTpbUEFMOjpnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkg
Y29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJl
c3BvbnNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKICAg
ICB9CiAKICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTU5MjI3Nyk6IHN0YXNoIHRoZSBj
YWxsYmFjayBhbmQgY2FsbCBpdCBvbmNlIEFWQ29udGVudEtleVJlc3BvbnNlIHN1cHBvcnRzIGEg
c3VjY2VzcyBjYWxsYmFjay4KQEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGlj
ZW5zZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUmV0YWluUHRy
PE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKKyAg
ICAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGNo
YW5nZWRLZXlzOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25EYXRhIGluIFtQ
QUw6OmdldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJl
cG9ydHNXaXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3Rv
cnlBdFVSTDpzdG9yYWdlVVJMXSkgewogICAgICAgICAgICAgc3RhdGljIGNvbnN0IE5TU3RyaW5n
ICpQbGF5YmFja1Nlc3Npb25JZEtleSA9IEAiUGxheWJhY2tTZXNzaW9uSUQiOwpAQCAtOTk5LDcg
Kzk5OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyID0gY2Vy
dGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJ
ZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
OwogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGV4cGlyZWRTZXNzaW9uc0FycmF5
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIEtleVN0
YXR1c1ZlY3RvciBjaGFuZ2VkS2V5czsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNz
aW9uRGF0YSBpbiBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBwZW5kaW5nRXhw
aXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBz
dG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF0pIHsKQEAgLTEwODYsNyArMTA4Niw3IEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92
aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVu
dGlmaWVyOwogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNl
cnRpZmljYXRlKCkpCi0gICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRl
TlNEYXRhKCk7CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJl
cXVlc3QocmVxdWVzdCk7CiAgICAgaWYgKGtleUlEcy5pc0VtcHR5KCkpIHsKQEAgLTEwOTcsNyAr
MTA5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJz
dCgpLT5jcmVhdGVOU0RhdGEoKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRp
ZmllciA9IGtleUlEcy5maXJzdCgpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsK
ICAgICBAdHJ5IHsKICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1
ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRl
bnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERh
dGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRy
KGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1
ZXN0RGF0YSldIHsKQEAgLTExNTMsOSArMTE1Myw5IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFp
CiAKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOwogICAgIGlmIChhdXRvKiBj
ZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCi0gICAgICAgIGFw
cElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAKLSAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OworICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9
IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBSZXRhaW5Q
dHI8TlNEYXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CiAgICAgICAgIHVz
aW5nIENhbGxiYWNrRnVuY3Rpb24gPSBGdW5jdGlvbjx2b2lkKFJlcXVlc3RzRGF0YSYmKT47CiAg
ICAgICAgIHN0YXRpYyBSZWZQdHI8Q2FsbGJhY2tBZ2dyZWdhdG9yPiBjcmVhdGUoQ2FsbGJhY2tG
dW5jdGlvbiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTE5Niw3ICsxMTk2LDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1
ZXN0cyhWZWN0b3I8UmV0YWkKICAgICAgICAgICAgIGF1dG8gZW50cnkgPSBKU09OOjpPYmplY3Q6
OmNyZWF0ZSgpOwogICAgICAgICAgICAgYXV0byYga2V5SUQgPSByZXF1ZXN0RGF0YS5maXJzdDsK
ICAgICAgICAgICAgIGF1dG8mIHBheWxvYWQgPSByZXF1ZXN0RGF0YS5zZWNvbmQ7Ci0gICAgICAg
ICAgICBlbnRyeS0+c2V0U3RyaW5nKCJrZXlJRCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKGtleUlE
LT5kYXRhKCksIGtleUlELT5zaXplKCkpKTsKKyAgICAgICAgICAgIGVudHJ5LT5zZXRTdHJpbmco
ImtleUlEIiwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoa2V5SUQtPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwga2V5SUQtPnNpemUoKSkpOwogICAgICAgICAgICAgZW50cnktPnNldFN0cmluZygicGF5
bG9hZCIsIGJhc2U2NEVuY29kZVRvU3RyaW5nKHBheWxvYWQuZ2V0KCkuYnl0ZXMsIHBheWxvYWQu
Z2V0KCkubGVuZ3RoKSk7CiAgICAgICAgICAgICByZXF1ZXN0SlNPTi0+cHVzaE9iamVjdChXVEZN
b3ZlKGVudHJ5KSk7CiAgICAgICAgIH0KQEAgLTEyMTEsOCArMTIxMSw4IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMo
VmVjdG9yPFJldGFpCiAgICAgQHRyeSB7CiAgICAgICAgIGZvciAoYXV0byByZXF1ZXN0IDogbV9j
dXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzKSB7CiAgICAgICAgICAgICBhdXRvIGtleUlE
cyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7Ci0gICAgICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5SURzLmZpcnN0KCkpOwotICAgICAgICAg
ICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5jcmVhdGVOU0RhdGEoKTsKKyAgICAg
ICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5
SURzLmZpcnN0KCkpOworICAgICAgICAgICAgYXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlE
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0
IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5n
ZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5p
bCBjb21wbGV0aW9uSGFuZGxlcjpba2V5SUQgPSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0g
KE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7
CiAgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICAgICAgICAgICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFtrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RG
TW92ZShhZ2dyZWdhdG9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRl
bnRLZXlSZXF1ZXN0RGF0YSldICgpIG11dGFibGUgewpAQCAtMTI0OSwxMCArMTI0OSwxMCBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlk
ZVJlbmV3aW5nUmVxdWVzdChBVkNvbgogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRp
ZmllcjsKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0
aWZpY2F0ZSgpKQotICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5T
RGF0YSgpOworICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVz
dChtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkpOwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29u
dGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgUmV0
YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmlyc3QoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgQHRyeSB7CiAgICAgICAgIFtyZXF1ZXN0
IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5n
ZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5p
bCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0g
KE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7
CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUo
d2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29k
ZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKaW5kZXggMDMzNGQ2MjNiMmE3NjA1YzliZTEy
MjEzYjVhYmRiYmFjMmIwM2YxNS4uNjJiODNmYmZkNTc5NDA1MGViYzk0MDYzNzA0OTBiYTJiM2Vj
MDg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaApA
QCAtNTMsNyArNTMsNyBAQCBjbGFzcyBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb247CiAKIGNs
YXNzIEltYWdlRGVjb2RlckFWRk9iakMgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKIHB1YmxpYzoK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IGNy
ZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlckFWRk9iakMoKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSk7CkBA
IC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUltYWdl
UHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGlu
Z09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29s
IGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNl
aXZlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNp
emVfdCkgZmluYWw7CiAKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIFZlY3RvcjxJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4gZnJhbWVJbmZvcygpIGNvbnN0Owog
CiBwcml2YXRlOgotICAgIEltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KTsKKyAgICBJbWFnZURlY29kZXJBVkZPYmpDKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pOwogCiAgICAgQVZBc3NldFRyYWNrICpmaXJzdEVuYWJsZWRUcmFjaygpOwogICAgIHZvaWQg
cmVhZFNhbXBsZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLm1tCmluZGV4IDA2OTUxNmEwODNkNWY0ZjUxMjcyOTc0NTBlMWM5YTEwY2MxNGY0YmYuLjM1
YzZjZTY3ZTg1Zjg2YWUxNjRjMjFhNzI2MDdmYzA2NWVjYjUwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2Rl
ckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtMjg5LDcgKzI4OSw3IEBAIElt
YWdlRGVjb2RlckFWRk9iakNTYW1wbGUqIHRvU2FtcGxlKEl0ZXJhdG9yIGl0ZXIpCiAKICNwcmFn
bWEgbWFyayAtIEltYWdlRGVjb2RlckFWRk9iakMKIAotUmVmUHRyPEltYWdlRGVjb2RlckFWRk9i
akM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURl
Y29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKQogewogICAgIC8vIEFWRm91bmRhdGlvbiBtYXkgbm90IGJlIGF2YWlsYWJsZSBhdCBydW50
aW1lLgogICAgIGlmICghQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxh
YmxlKCkpCkBAIC0zMDEsNyArMzAxLDcgQEAgUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IElt
YWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnMKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJBVkZPYmpDKGRhdGEsIG1pbWVUeXBlLCBh
bHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKIH0KIAotSW1hZ2VEZWNv
ZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKK0ltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogSW1hZ2VEZWNvZGVyKCkKICAgICAsIG1f
bWltZVR5cGUobWltZVR5cGUpCiAgICAgLCBtX3V0aShXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGUo
bWltZVR5cGUpKQpAQCAtMzA5LDcgKzMwOSw3IEBAIEltYWdlRGVjb2RlckFWRk9iakM6OkltYWdl
RGVjb2RlckFWRk9iakMoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUCiAg
ICAgLCBtX2xvYWRlcihhZG9wdE5TKFtbV2ViQ29yZVNoYXJlZEJ1ZmZlclJlc291cmNlTG9hZGVy
RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKICAgICAsIG1fZGVjb21wcmVz
c2lvblNlc3Npb24oV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjpjcmVhdGVSR0IoKSkKIHsK
LSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBs
ZXRlOk5PXTsKKyAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBsZXRlOk5PXTsKIAogICAgIFttX2Fzc2V0LmdldCgp
LnJlc291cmNlTG9hZGVyIHNldERlbGVnYXRlOm1fbG9hZGVyLmdldCgpIHF1ZXVlOmRpc3BhdGNo
X2dldF9nbG9iYWxfcXVldWUoRElTUEFUQ0hfUVVFVUVfUFJJT1JJVFlfREVGQVVMVCwgMCldOwog
ICAgIFttX2Fzc2V0IGxvYWRWYWx1ZXNBc3luY2hyb25vdXNseUZvcktleXM6QFtAInRyYWNrcyJd
IGNvbXBsZXRpb25IYW5kbGVyOltwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgbXV0
YWJsZSB7CkBAIC02NDEsOSArNjQxLDkgQEAgdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXRF
eHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKQogICAgIG1f
bG9hZGVyLmdldCgpLmV4cGVjdGVkQ29udGVudFNpemUgPSBleHBlY3RlZENvbnRlbnRTaXplOwog
fQogCi12b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0
YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsK
LSAgICBbbV9sb2FkZXIgdXBkYXRlRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpIGNvbXBs
ZXRlOmFsbERhdGFSZWNlaXZlZF07CisgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2
ZWRdOwogCiAgICAgaWYgKGFsbERhdGFSZWNlaXZlZCkgewogICAgICAgICBtX2lzQWxsRGF0YVJl
Y2VpdmVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCAyMDBlMWE4ZjlhZmJhMGZj
YmJhNWIwYTNlZDcwNGNkMzQxYjQ1MGQ2Li5jOWQ5YjJhOTY4NWIwMWU5MWFhYTAwYzBlMDAzMDc3
Mzg1NjkxNDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC02Niw3ICs2Niw3IEBAIGNsYXNz
IEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjsKIGNsYXNzIE1lZGlhUGxheWJhY2tU
YXJnZXQ7CiBjbGFzcyBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzsKIGNsYXNzIFBpeGVsQnVm
ZmVyQ29uZm9ybWVyQ1Y7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogY2xhc3MgVmlkZW9MYXllck1hbmFnZXJPYmpDOwogY2xhc3MgVmlkZW9UcmFj
a1ByaXZhdGVBVkZPYmpDOwogY2xhc3MgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOwpAQCAtNDI2
LDcgKzQyNiw3IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1l
PiBtX3dhbGxDbG9ja0F0Q2FjaGVkQ3VycmVudFRpbWU7CiAgICAgbXV0YWJsZSBpbnQgbV90aW1l
Q29udHJvbFN0YXR1c0F0Q2FjaGVkQ3VycmVudFRpbWUgeyAwIH07CiAgICAgbXV0YWJsZSBkb3Vi
bGUgbV9yZXF1ZXN0ZWRSYXRlQXRDYWNoZWRDdXJyZW50VGltZSB7IDAgfTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2tleUlEOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBtX2tleUlEOwogICAgIGRvdWJsZSBtX2NhY2hlZFJhdGUgeyAwIH07CiAgICAgYm9vbCBtX3Jl
cXVlc3RlZFBsYXlpbmcgeyBmYWxzZSB9OwogICAgIGRvdWJsZSBtX3JlcXVlc3RlZFJhdGUgeyAx
LjAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGQ3Y2Y5ZDRiZjFmZWQ2OWE1ZjNjYWMz
MWVhZmVlN2YzOThhNDUzYzEuLmRhMWFjMGQ3MTAxNTYxZjFhMjE1NjNiNTY2ZDQ1ZDVlYjYwNDNi
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjc5Miw3ICsyNzkyLDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjphdHRlbXB0VG9EZWNyeXB0V2l0aElu
c3RhbmNlKENETUluc3RhbmMKICAgICBpZiAoIW1fa2V5SUQgfHwgIW1fY2RtSW5zdGFuY2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5j
ZS0+c2Vzc2lvbkZvcktleUlEcyhWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+Ojpmcm9tKCptX2tl
eUlEKSk7CisgICAgYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3RhbmNlLT5zZXNzaW9u
Rm9yS2V5SURzKFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+Ojpmcm9tKCptX2tl
eUlEKSk7CiAgICAgaWYgKCFpbnN0YW5jZVNlc3Npb24pCiAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0K
aW5kZXggMWE0M2M3ZGVkMjc2ZTJjM2U1ZjZmNDNhMzhmMDUxMTI3MjA2ZDBhMy4uYWJkODFlNWYz
YzFlYTUwZTQyMmUyZmEzYzJiYTFkMThjZmUzMWFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0yMTMsNyArMjEzLDcg
QEAgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6flNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMo
KQogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKFNlZ21lbnQmJiBz
ZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFw
cGVuZEZsYWdzIGZsYWdzKQogewogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gc2VnbWVudC50YWtl
U2hhcmVkQnVmZmVyKCk7Ci0gICAgYXV0byBuc0RhdGEgPSBzaGFyZWRCdWZmZXItPmNyZWF0ZU5T
RGF0YSgpOworICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkQnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKTsKICAgICBpZiAobV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHx8IGZsYWdz
ID09IEFwcGVuZEZsYWdzOjpEaXNjb250aW51aXR5KQogICAgICAgICBbbV9wYXJzZXIgYXBwZW5k
U3RyZWFtRGF0YTpuc0RhdGEuZ2V0KCkgd2l0aEZsYWdzOkFWU3RyZWFtRGF0YVBhcnNlclN0cmVh
bURhdGFEaXNjb250aW51aXR5XTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCAwMzQyMGYxMzgzNjRmYWMy
MDkxZTEwNGQxMzZmZjM4YTFmYjlmZTIyLi5lYWQwODNhNmNjN2U3MzZiNDIxNzEwZmFjMzkyYTA3
ZGZmOTJiZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLmgKQEAgLTczLDcgKzczLDcgQEAgY2xhc3MgVmlkZW9UcmFja1ByaXZh
dGU7CiBjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzsKIGNsYXNzIFZp
ZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOwogY2xhc3MgV2ViQ29yZURlY29tcHJl
c3Npb25TZXNzaW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakNFcnJvckNsaWVudCB7
CiBwdWJsaWM6CkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFByb3Zp
ZGVNZWRpYURhdGFGb3JUcmFja0lkKFJlZjxNZWRpYVNhbXBsZT4mJiwgdWludDY0X3QgdHJhY2tJ
ZCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpOwogCiAgICAgLy8gU291cmNlQnVmZmVyUHJpdmF0
ZSBvdmVycmlkZXMKLSAgICB2b2lkIGFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
KyAgICB2b2lkIGFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAg
ICAgdm9pZCBhYm9ydCgpIGZpbmFsOwogICAgIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpIGZpbmFs
OwogICAgIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpIGZpbmFsOwpAQCAtMjIxLDcgKzIy
MSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBI
QVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCiAgICAgUmVmUHRyPENETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDPiBtX2NkbUluc3RhbmNlOwotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVm
ZmVyPj4gbV9rZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4g
bV9rZXlJRHM7CiAjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBtX2NhY2hl
ZFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLm1tCmluZGV4IDNhMjg2N2ExYWMyNDNiYjljOTNjOWQ2YjcwY2E1NmIwMjk0OGZj
OWMuLjI0YWUwZTE0MDYwMTkxNDNmYWQ0ZjE1MjllNjhlZDQ5YjQxNjUzY2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBA
IC01NjMsNyArNTYzLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJv
dmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KICAgICBVTlVTRURfUEFS
QU0oaGFzU2Vzc2lvblNlbWFwaG9yZSk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OmFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjphcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0
YSkKIHsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJkYXRhIGxlbmd0aCA9ICIsIGRh
dGEtPnNpemUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3MTEzMmY2YzI4N2EyZTYyOWE0Yjg4YTUzOWRmZDUz
Y2JlMi4uMGVmZWVhZWY1YjJkNzFiYzZkNjcwNGRkMWI5NzVhY2JhZTExM2JiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKQEAgLTQz
LDcgKzQzLDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzsKIGNs
YXNzIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25zZVJlY2Vp
dmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3Qg
UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKCk7Ci0gICAgdm9pZCBuZXdE
YXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBuZXdEYXRh
U3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAg
ICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogbV9wYXJlbnQ7CiAgICAgUmV0
YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBtX2F2UmVxdWVzdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRl
eCBhMjJhOTk3YjExMDc5ZDQ2NTg2YWE2NDg1NjFiYmY3MmE2ZjI0N2YwLi5mOTIxZjNkYTBlNjli
MzM5OTc3YzllM2U0OTY2N2EyOGY1ZTk1Y2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0xNTYsMTQgKzE1NiwxNCBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIGZpbmFsIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICBi
b29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBkYXRhU2Vu
dChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxv
bmcgbG9uZykgZmluYWwgeyB9Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
IGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQo
ZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAg
ICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWwgeyBsb2FkRmluaXNoZWQoKTsgfQogCiAgICAgV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291
cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZmZXI7CiB9OwogCiBXZWFrUHRyPFBsYXRmb3JtUmVz
b3VyY2VNZWRpYUxvYWRlcj4gUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRl
ciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjExLDEzICsyMTEsMTAg
QEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAg
bV9wYXJlbnQubG9hZEZpbmlzaGVkKCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlh
TG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCit2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKIHsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFdU
Rk1vdmUoYnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYnVmZmVyLT5hcHBlbmQoV1RGTW92
ZShidWZmZXIpKTsKLSAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1f
YnVmZmVyKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICBtX3Bh
cmVudC5uZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyLmdldCgpKTsKIH0KIAog
Y2xhc3MgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI+IHsKQEAgLTM4OCw3ICszODUsNyBAQCB2b2lkIFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAgICBzdG9wTG9hZGluZygp
OwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hh
cmVkQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSkKIHsKICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRh
dGFSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1
ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IGRiNDU3YTgxZDNlZTgyOTFi
OTA1ZTliYTc3YzFlMmFmMzA5ZTBjYjIuLjk0MTliY2VhMzhkYmY4ZDY0OTJmNjgwMWQ5YTIxNTYy
MzY2YTJjNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTMxLDEwICszMSwx
MSBAQCB0eXBlZGVmIHN0cnVjdCBGVF9GYWNlUmVjXyogIEZUX0ZhY2U7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4
dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogc3RydWN0IEZv
bnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7CiBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0
aW5nczsKIApAQCAtNDUsNyArNDYsNyBAQCBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiBwdWJsaWM6Ci0gICAgRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShGVF9GYWNlLCBTaGFyZWRCdWZmZXImKTsKKyAgICBGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KEZUX0ZhY2UsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB+Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YSgpID0gZGVmYXVsdDsKICAgICBGb250UGxhdGZvcm1EYXRhIGZvbnRQbGF0Zm9ybURh
dGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywgY29uc3Qg
Rm9udENyZWF0aW9uQ29udGV4dCYpOwogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRm9ybWF0KGNv
bnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IGEzNDRiYmVjZGE5ZmZlNjdkNGU4ZDNlNDVl
MmQwNGJlZDNkNTBjMDYuLmI2ZDNlYjM2MzExMjQ0NjEzYjM4MDNmMmYzZDI0ZDMwODdlYTI0ZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5jcHAKQEAgLTI0NCwxNiArMjQ0LDE2IEBAIHNpemVfdCBzaGFyZWRCdWZmZXJH
ZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBvZmZfdCBwb3NpdGlv
biwKIAogdm9pZCBzaGFyZWRCdWZmZXJSZWxlYXNlKHZvaWQqIGluZm8pCiB7Ci0gICAgU2hhcmVk
QnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihpbmZvKTsK
KyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKj4oaW5mbyk7CiAgICAgc2hhcmVkQnVmZmVyLT5kZXJlZigp
OwogfQogI2VuZGlmCiAKLUltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyhTaGFyZWRCdWZm
ZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdl
RGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBB
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiB1dGlIaW50OwogICAgIGlmIChkYXRhLnNpemUoKSA+PSAzMikKLSAgICAg
ICAgdXRpSGludCA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUdldFR5cGVXaXRoRGF0YShkYXRhLmNy
ZWF0ZUNGRGF0YSgpLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgICAgIHV0aUhpbnQg
PSBhZG9wdENGKENHSW1hZ2VTb3VyY2VHZXRUeXBlV2l0aERhdGEoZGF0YS5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIAogICAg
IGlmICh1dGlIaW50KSB7CiAgICAgICAgIGNvbnN0IHZvaWQqIGtleSA9IGtDR0ltYWdlU291cmNl
VHlwZUlkZW50aWZpZXJIaW50OwpAQCAtNTYyLDIzICs1NjIsMjQgQEAgUGxhdGZvcm1JbWFnZVB0
ciBJbWFnZURlY29kZXJDRzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGkKICAgICByZXR1cm4gbWFza2VkSW1hZ2UgPyBtYXNrZWRJbWFnZSA6IGltYWdlOwog
fQogCi12b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIG1faXNB
bGxEYXRhUmVjZWl2ZWQgPSBhbGxEYXRhUmVjZWl2ZWQ7CiAKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUg
c2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdl
LgotICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxmIGlu
c2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMK
LSAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVkQnVmZmVyLgotICAgIENHSW1hZ2VT
b3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5jcmVhdGVDRkRhdGEo
KS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNp
ZGUgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgY2FuIGJlIHNlY3JldGx5IGFwcGVuZGVkIHRv
IHdpdGhvdXQgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2UuCisgICAgLy8g
V2UgdXNlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxmIGlu
c2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMK
KyAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KKyAg
ICBDR0ltYWdlU291cmNlVXBkYXRlRGF0YShtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGEubWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CiAj
ZWxzZQotICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIFNoYXJlZEJ1
ZmZlci4KLSAgICBkYXRhLnJlZigpOwotICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0
aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBT
aGFyZWRCdWZmZXIKKyAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRoZSBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyLgorICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1h
a2VDb250aWd1b3VzKCk7CisgICAgY29udGlndW91c0RhdGEuZ2V0KCkucmVmKCk7CisgICAgLy8g
V2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdl
dEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIKICAgICAvLyBk
b2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUgYnl0ZSBwb2ludGVyIGFuZCBn
dWFyYW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAogICAgIC8vIGlzIGEgcmVxdWlyZW1l
bnQgZm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFjay4KICAgICBDR0RhdGFQcm92
aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsgMCwgMCwgMCwgc2hhcmVk
QnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJSZWxlYXNlIH07Ci0gICAgUmV0
YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVBy
b3ZpZGVyQ3JlYXRlRGlyZWN0KCZkYXRhLCBkYXRhLnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tz
KSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9w
dENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlRGlyZWN0KGNvbnRpZ3VvdXNEYXRhLnB0cigpLCBkYXRh
LnNpemUoKSwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURh
dGFQcm92aWRlcihtX25hdGl2ZURlY29kZXIuZ2V0KCksIGRhdGFQcm92aWRlci5nZXQoKSwgYWxs
RGF0YVJlY2VpdmVkKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKaW5kZXggOTc0MDczNmEyMWFjOTk4YWIw
NWYxYzliNGY1YjE2NzVlNDRkMmM5MS4uYTBhYzFjMmZiZWU1MjdlNWFiMTExNDU1ODEyYmRiNzM2
M2EwNTU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5oCkBAIC0zMiw5ICszMiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIEltYWdlRGVjb2RlckNHIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW1hZ2VEZWNvZGVyQ0coU2hh
cmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OworICAgIEltYWdlRGVjb2RlckNHKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKLSAgICBzdGF0aWMgUmVmPElt
YWdlRGVjb2RlckNHPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJDRz4gY3JlYXRlKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlckNHKGRhdGEsIGFscGhhT3B0aW9uLCBn
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgIH0KQEAgLTY0LDcgKzY0LDcgQEAgcHVi
bGljOgogCiAgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBE
ZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25v
dXMpKSBmaW5hbDsKIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERh
dGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNl
aXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICB2
b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
Y3BwCmluZGV4IDMxYzI3YzA2OWIyYjNjNzAzNzMyZWI3MTNiMjYzMTI4NDIxMjRlNmUuLmZmNzdi
NTNlOWQ2OWZjNDcwNDUxMjQ3MDJmMWEzNGYwZjJkODdjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCkBA
IC0zMTksNyArMzE5LDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjpkZXN0cm95RGVjb2RlZERh
dGEoYm9vbCkKIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCiB7
Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENG
KENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPmNyZWF0ZUNGRGF0YSgpLmdl
dCgpKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBh
ZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPm1ha2VDb250aWd1
b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CiAgICAgbV9kb2N1bWVudCA9IGFkb3B0Q0Yo
Q0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKaW5kZXggZjc0N2Q4MGZiNjFkMzBmYzUwMjJlNjgy
ZDYzNTYxMzNkM2NhNjk3YS4uYzhhODA2MTIyMDUzZjY0OGFkZGIwMmFjMzg5Y2U3MTQzNjhkYmJh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgU291
cmNlQnVmZmVyUGFyc2VyOjpzZXRNaW5pbXVtQXVkaW9TYW1wbGVEdXJhdGlvbihmbG9hdCkKIHsK
IH0KIAotU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50KFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQorU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50KFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fc2VnbWVudChXVEZNb3Zl
KGJ1ZmZlcikpCiB7CiB9CkBAIC0xMDEsNyArMTAxLDcgQEAgc2l6ZV90IFNvdXJjZUJ1ZmZlclBh
cnNlcjo6U2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gY2xhbXBUbzxz
aXplX3Q+KE1UUGx1Z2luQnl0ZVNvdXJjZUdldExlbmd0aChieXRlU291cmNlLmdldCgpKSk7CiAg
ICAgICAgIH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikKKyAgICAgICAgW10oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBidWZmZXItPnNpemUoKTsKICAgICAg
ICAgfQpAQCAtMTI1LDcgKzEyNSw3IEBAIGF1dG8gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50
OjpyZWFkKHNpemVfdCBwb3NpdGlvbiwgc2l6ZV90IHNpemVUb1JlYWQsIHVpbnQ4CiAgICAgICAg
ICAgICByZXR1cm4gVW5leHBlY3RlZDxSZWFkRXJyb3I+IHsgUmVhZEVycm9yOjpGYXRhbEVycm9y
IH07CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAgICAgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIC0+IFJlYWRSZXN1bHQKKyAgICAgICAgWyZdKGNvbnN0IFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZWFkUmVzdWx0CiAgICAgICAgIHsKICAgICAg
ICAgICAgIGJ1ZmZlci0+Y29weVRvKGRlc3RpbmF0aW9uLCBwb3NpdGlvbiwgc2l6ZVRvUmVhZCk7
CiAgICAgICAgICAgICByZXR1cm4gc2l6ZVRvUmVhZDsKQEAgLTEzMyw3ICsxMzMsNyBAQCBhdXRv
IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6cmVhZChzaXplX3QgcG9zaXRpb24sIHNpemVf
dCBzaXplVG9SZWFkLCB1aW50OAogICAgICk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNvdXJj
ZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1ZmZlcigpCitSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50Ojp0YWtlU2hhcmVkQnVm
ZmVyKCkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3NlZ21lbnQsCiAjaWYgSEFWRShN
VF9QTFVHSU5fRk9STUFUX1JFQURFUikKQEAgLTE0MiwyOCArMTQyLDI4IEBAIFJlZjxTaGFyZWRC
dWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1ZmZlcigpCiAg
ICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yKHNpemUoKSk7CiAgICAgICAgICAgICBh
dXRvIHJlYWRSZXN1bHQgPSByZWFkKDAsIHZlY3Rvci5zaXplKCksIHZlY3Rvci5kYXRhKCkpOwog
ICAgICAgICAgICAgaWYgKCFyZWFkUmVzdWx0Lmhhc192YWx1ZSgpKQotICAgICAgICAgICAgICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgICAgIHJldHVybiBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgICAgIHZlY3Rvci5zaHJp
bmsocmVhZFJlc3VsdC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpOworICAgICAgICAgICAgcmV0dXJuIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpOwogICAgICAgICB9LAogI2VuZGlm
Ci0gICAgICAgIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorICAgICAgICBbJl0oUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6OmV4Y2hhbmdlKGJ1ZmZlciwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShidWZmZXIsIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpKTsKICAgICAgICAgfQogICAgICk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6Z2V0U2hhcmVkQnVmZmVyKCkgY29u
c3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNl
Z21lbnQ6OmdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNo
T24obV9zZWdtZW50LAogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCi0gICAgICAg
IFsmXShjb25zdCBSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiYpIC0+IFJlZlB0cjxT
aGFyZWRCdWZmZXI+CisgICAgICAgIFsmXShjb25zdCBSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291
cmNlUmVmPiYpIC0+IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPgogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfSwKICNlbmRpZgotICAgICAgICBb
Jl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4KKyAgICAgICAgWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSAtPiBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuIGJ1ZmZlci5wdHIoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApp
bmRleCA1MjBiNTIwN2ZjMjcxZDc5ODE1MzNmYjE0ZDIzMTU1OTRhODg4MzY1Li43Mjk3YTc5MTRh
NzlhZGY2NDJkYzZiMTZiMzZlNjBmOWNkMDI5ZjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApA
QCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRUeXBl
OwogY2xhc3MgTWVkaWFTYW1wbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTb3VyY2VCdWZmZXJQYXJz
ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlQnVmZmVyUGFyc2VyPiB7CiBw
dWJsaWM6CkBAIC02OSwxMSArNjksMTEgQEAgcHVibGljOgogI2lmIEhBVkUoTVRfUExVR0lOX0ZP
Uk1BVF9SRUFERVIpCiAgICAgICAgIFNlZ21lbnQoUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJj
ZVJlZj4mJik7CiAjZW5kaWYKLSAgICAgICAgU2VnbWVudChSZWY8U2hhcmVkQnVmZmVyPiYmKTsK
KyAgICAgICAgU2VnbWVudChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgICAg
IFNlZ21lbnQoU2VnbWVudCYmKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+
IHRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICAgICAgLy8gV2lsbCByZXR1cm4gbnVsbHB0ciBpZiBT
ZWdtZW50J3MgYmFja2VuZCBpc24ndCBhIFNoYXJlZEJ1ZmZlci4KLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZ2V0U2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgICAgIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiB0YWtlU2hhcmVkQnVmZmVyKCk7CisgICAgICAgIC8vIFdpbGwgcmV0
dXJuIG51bGxwdHIgaWYgU2VnbWVudCdzIGJhY2tlbmQgaXNuJ3QgYSBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyLgorICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZ2V0U2hhcmVk
QnVmZmVyKCkgY29uc3Q7CiAKICAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKIApAQCAtODcs
NyArODcsNyBAQCBwdWJsaWM6CiAjaWYgSEFWRShNVF9QTFVHSU5fRk9STUFUX1JFQURFUikKICAg
ICAgICAgICAgIFJldGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VSZWY+LAogI2VuZGlmCi0gICAg
ICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPgorICAgICAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+CiAgICAgICAgID4gbV9zZWdtZW50OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggMzU5ZWRiNDE1ZmQzNzVlZDgyYjdiNGE0OWYxMWU0Yzhm
ZDZjN2Q2Yi4uOWJjMTg5NDE5ODYzMGJhZDhkN2NiZDBiM2E1YjI4ZTQ2ZTllZmUyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVy
UGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgdm9pZCBGcmVlRGF0YVNlZ21lbnQodm9pZCogcmVmY29uLCB2b2lkKiwg
c2l6ZV90KQogICAgIHsKLSAgICAgICAgYXV0byogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4ocmVmY29uKTsKKyAgICAgICAgYXV0byogYnVmZmVy
ID0gcmVpbnRlcnByZXRfY2FzdDxEYXRhU2VnbWVudCo+KHJlZmNvbik7CiAgICAgICAgIGJ1ZmZl
ci0+ZGVyZWYoKTsKICAgICB9CiAKQEAgLTM4OCw3ICszODgsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgYWR2YW5jZVRvTmV4dFNlZ21lbnQoKTsKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJl
ZEJ1ZmZlciA9IGN1cnJlbnRTZWdtZW50LmdldFNoYXJlZEJ1ZmZlcigpOworICAgICAgICAgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IGN1cnJlbnRTZWdt
ZW50LmdldFNoYXJlZEJ1ZmZlcigpOwogICAgICAgICAgICAgQ01CbG9ja0J1ZmZlclJlZiByYXdC
bG9ja0J1ZmZlciA9IG51bGxwdHI7CiAgICAgICAgICAgICB1aW50NjRfdCBsYXN0UmVhZCA9IDA7
CiAgICAgICAgICAgICBzaXplX3QgZGVzdGluYXRpb25PZmZzZXQgPSBtX3Bvc2l0aW9uV2l0aGlu
U2VnbWVudDsKQEAgLTQwOSw3ICs0MDksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgZGVz
dGluYXRpb25PZmZzZXQgPSAwOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICBBU1NFUlQoc2hhcmVkQnVmZmVyLT5oYXNPbmVTZWdtZW50KCksICJDYW4gb25seSBkZWFsIHdp
dGggc2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgYSBzaW5nbGUgRGF0YVNlZ21lbnQiKTsKLSAgICAg
ICAgICAgICAgICAvLyBBIFNoYXJlZEJ1ZmZlciBkb2Vzbid0IGhhdmUgdGhyZWFkLXNhZmUgcmVm
Y291bnRpbmcsIGFzIHN1Y2ggd2UgbXVzdCBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBEYXRhU2Vn
bWVudCBpbnN0ZWFkLgorICAgICAgICAgICAgICAgIC8vIEEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciBkb2Vzbid0IGhhdmUgdGhyZWFkLXNhZmUgcmVmY291bnRpbmcsIGFzIHN1Y2ggd2UgbXVzdCBr
ZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBEYXRhU2VnbWVudCBpbnN0ZWFkLgogICAgICAgICAgICAg
ICAgIC8vIFRPRE86IGNvdWxkIHdlIG9ubHkgY3JlYXRlIGEgbmV3IENNQmxvY2tCdWZmZXIgaWYg
dGhlIGJhY2tlbmQgbWVtb3J5IGNoYW5nZWQgc2luY2UgdGhlIHByZXZpb3VzIG9uZT8KICAgICAg
ICAgICAgICAgICBhdXRvIGZpcnN0U2VnbWVudCA9IHNoYXJlZEJ1ZmZlci0+YmVnaW4oKS0+c2Vn
bWVudDsKICAgICAgICAgICAgICAgICBzaXplX3QgY2FuUmVhZCA9IHN0ZDo6bWluPHNpemVfdD4o
bnVtVG9SZWFkLCBmaXJzdFNlZ21lbnQtPnNpemUoKSAtIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggNDAy
NWUwNjkyZGM1YTE1ZTk3MzY5NTgwMzMzZjZmYTNiOWJmYmQ0Yi4uYmE2MDVkY2IzMWQ1Mjk0N2Fj
MmE3MTQ2YzFkZTg0MGNkNGE0ODc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5jcHAKQEAgLTczNyw3ICs3MzcsNyBAQCBEaWRDaGFuZ2VJdGVtQnVmZmVyIEl0
ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVz
KQogdm9pZCBJdGVtQnVmZmVyOjphcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJdGVtJiB0ZW1wb3Jh
cnlJdGVtKQogewogICAgIGF1dG8gcmVxdWlyZWRTaXplRm9ySXRlbSA9IG1fd3JpdGluZ0NsaWVu
dC0+cmVxdWlyZWRTaXplRm9ySXRlbSh0ZW1wb3JhcnlJdGVtKTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBvdXRPZkxpbmVJdGVtOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBvdXRPZkxpbmVJdGVtOwogICAgIGlmICghcmVxdWlyZWRTaXplRm9ySXRlbSkgewogICAgICAg
ICBvdXRPZkxpbmVJdGVtID0gbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtT3V0T2ZMaW5lKHRl
bXBvcmFyeUl0ZW0pOwogICAgICAgICBpZiAoIW91dE9mTGluZUl0ZW0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKaW5kZXggYzg3MzE5ODJlZjgzOTMxYmJhZTMxYjc4
NjUwYWMwZGEyMGEwNWZjNS4uYjMxYmM1ZmQ0ZTkyMTRiMTVhMzc2MWZiZTk4ZDYwY2ViNDdhOThm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaApAQCAtMTAyLDcg
KzEwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29u
c3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QKKyAgICB2aXJ0dWFsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYp
IGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xNjgsNyAr
MTY4LDcgQEAgcHVibGljOgogICAgIC8vIHdpdGggcGFkZGluZyBiZXR3ZWVuIGVhY2ggaXRlbSB0
byBlbnN1cmUgdGhhdCBhbGwgaXRlbXMgYXJlIGFsaWduZWQgdG8gOCBieXRlcy4KICAgICAvLwog
ICAgIC8vIElmIGEgd3JpdGluZyBjbGllbnQgaXMgcHJlc2VudCBhbmQgcmVxdWlyZXMgY3VzdG9t
IGVuY29kaW5nIGZvciB0aGUgZ2l2ZW4gaXRlbSB0eXBlIFQsIHRoZQotICAgIC8vIGl0ZW0gYnVm
ZmVyIHdpbGwgYXNrIHRoZSBjbGllbnQgZm9yIGFuIG9wYXF1ZSBTaGFyZWRCdWZmZXIgY29udGFp
bmluZyBlbmNvZGVkIGRhdGEgZm9yIHRoZQorICAgIC8vIGl0ZW0gYnVmZmVyIHdpbGwgYXNrIHRo
ZSBjbGllbnQgZm9yIGFuIG9wYXF1ZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcg
ZW5jb2RlZCBkYXRhIGZvciB0aGUKICAgICAvLyBpdGVtLiBUaGlzIGVuY29kZWQgZGF0YSBpcyB0
aGVuIGFwcGVuZGVkIHRvIHRoZSBpdGVtIGJ1ZmZlciwgd2l0aCBwYWRkaW5nIHRvIGVuc3VyZSB0
aGF0CiAgICAgLy8gdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhpcyBkYXRhIGFyZSBhbGlnbmVkIHRv
IDggYnl0ZXMsIGlmIG5lY2Vzc2FyeS4gV2hlbiBjb25zdW1pbmcgZW5jb2RlZAogICAgIC8vIGl0
ZW0gZGF0YSwgYSBjb3JyZXNwb25kaW5nIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IHdpbGwgYmUg
cmVxdWlyZWQgdG8gY29udmVydCB0aGlzIGVuY29kZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVl
VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IDUwNmI0ZGQ2MmQ1NWE1NmEyNzhj
MzBjY2FiMmQxOTExMGYyNDFlZWMuLjJiNDQzZmJiZWQyYzFmZGU0OGJjZGU5Y2JlNDA5NTM0OTdm
ZGU5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVU
eXBlLmNwcApAQCAtMzgsMTIgKzM4LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IHZvaWQgcmVsZWFzZUN1c3RvbUZvbnREYXRhKHZvaWQqIGRhdGEpCiB7Ci0gICAgc3RhdGljX2Nh
c3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwogfQogCiBzdGF0aWMgY2Fpcm9fdXNl
cl9kYXRhX2tleV90IGZyZWVUeXBlRmFjZUtleTsKIAotRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9GYWNlIGZyZWVUeXBlRmFjZSwgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KEZUX0ZhY2UgZnJlZVR5cGVGYWNlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAg
ICAgOiBtX2ZvbnRGYWNlKGFkb3B0UmVmKGNhaXJvX2Z0X2ZvbnRfZmFjZV9jcmVhdGVfZm9yX2Z0
X2ZhY2UoZnJlZVR5cGVGYWNlLCBGVF9MT0FEX0RFRkFVTFQpKSkKIHsKICAgICBidWZmZXIucmVm
KCk7IC8vIFRoaXMgaXMgYmFsYW5jZWQgYnkgdGhlIGJ1ZmZlci0+ZGVyZWYoKSBpbiByZWxlYXNl
Q3VzdG9tRm9udERhdGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCmlu
ZGV4IDlhZDE5Yjg3NmIyN2U2MGQ0ZmJhNTAzMGU2NWY4MWU3Y2E4YTUwNjkuLmRmYmM1ODBmYjhl
OWIzMDkzNmNjYTA4YmI4OGI0OWMyYmI2NTNhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29k
ZXJHU3RyZWFtZXIuY3BwCkBAIC04MSwxMiArODEsMTIgQEAgSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
U2FtcGxlKiB0b1NhbXBsZShJdGVyYXRvciBpdGVyKQogICAgIHJldHVybiAoSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyU2FtcGxlKilpdGVyLT5zZWNvbmQuZ2V0KCk7CiB9CiAKLVJlZlB0cjxJbWFnZURl
Y29kZXJHU3RyZWFtZXI+IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQor
UmVmUHRyPEltYWdlRGVjb2RlckdTdHJlYW1lcj4gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVh
dGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdl
RGVjb2RlckdTdHJlYW1lcihkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKSk7CiB9CiAKLUltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
QWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyOjpJbWFnZURlY29kZXJHU3RyZWFtZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQogICAgIDogbV9taW1lVHlwZShtaW1lVHlwZSkKIHsKICAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUZsYWc7CkBAIC0xOTksNyArMTk5LDcgQEAgUGxhdGZvcm1JbWFnZVB0
ciBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBp
bmRleCwgU3UKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJHU3Ry
ZWFtZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sKQordm9pZCBJbWFnZURlY29k
ZXJHU3RyZWFtZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCkK
IHsKICAgICBwdXNoRW5jb2RlZERhdGEoZGF0YSk7CiB9CkBAIC00MjYsMTAgKzQyNiwxMSBAQCBF
bmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5j
b2RlZERhdGFTdGF0dXMoKSBjb25zdAogICAgIHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6VW5r
bm93bjsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpw
dXNoRW5jb2RlZERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewor
ICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOwogICAg
IG1fZW9zID0gZmFsc2U7Ci0gICAgYXV0byB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyIiwgW3RoaXMsIGRhdGEgPSBidWZmZXIuZGF0YSgpLCBzaXplID0gYnVm
ZmVyLnNpemUoKV0geworICAgIGF1dG8gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkltYWdlRGVj
b2RlckdTdHJlYW1lciIsIFt0aGlzLCBkYXRhID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBz
aXplID0gYnVmZmVyLnNpemUoKV0gewogICAgICAgICBtX2lubmVyRGVjb2RlciA9IEltYWdlRGVj
b2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjpjcmVhdGUoKnRoaXMsIGRhdGEsIHNpemUpOwog
ICAgICAgICBtX2lubmVyRGVjb2Rlci0+cnVuKCk7CiAgICAgfSwgVGhyZWFkVHlwZTo6R3JhcGhp
Y3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCmluZGV4IDY2ZjMzNzI4NDZh
NGRmODc0ZjQyMGRiNjU0ZTY4OWM5ZTQzYjBjNTIuLmQzZWY2YTQ1Y2Q3ZGJkZmMzMTIwZWEyM2Y4
ZGViM2M1OTk3MWFlOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKQEAg
LTQxLDggKzQxLDggQEAgY2xhc3MgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyIGZpbmFsIDogcHVibGlj
IEltYWdlRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoSW1hZ2VEZWNvZGVyR1N0cmVhbWVyKTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmUHRyPEltYWdlRGVjb2RlckdTdHJlYW1lcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbik7Ci0gICAgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7
CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IGNyZWF0ZShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBJbWFnZURlY29kZXJHU3RyZWFtZXIoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVy
R1N0cmVhbWVyKCkgPSBkZWZhdWx0OwogCiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNNZWRpYVR5
cGUoTWVkaWFUeXBlIHR5cGUpIHsgcmV0dXJuIHR5cGUgPT0gTWVkaWFUeXBlOjpWaWRlbzsgfQpA
QCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVs
OjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29k
aW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250
ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZm
ZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9v
bCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZW9zOyB9CiAgICAg
dm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbDsKIApAQCAtMTIyLDcgKzEy
Miw3IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIHZvaWQgaGFuZGxlU2FtcGxlKEdSZWZQdHI8
R3N0U2FtcGxlPiYmKTsKLSAgICB2b2lkIHB1c2hFbmNvZGVkRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImKTsKKyAgICB2b2lkIHB1c2hFbmNvZGVkRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CiAKICAgICBjb25zdCBJbWFnZURlY29kZXJHU3RyZWFtZXJTYW1wbGUqIHNhbXBsZUF0
SW5kZXgoc2l6ZV90KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcAppbmRleCBjYmI0OWQxNzM2MmY3MTJkMjVkZmU4MjRkZmMxYzM4MWE1
ZGEwMjkzLi4zYTIwMTU3ODAxNDg4MTBhY2U1NGRmN2IwOGU0ZGY3ZmQ1MjM3ZDY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzY2OSw3
ICszNjY5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmluaXRpYWxpemF0
aW9uRGF0YUVuY291bnRlcmVkKEluaXREYXRhJiYgaW5pdEQKIAogICAgICAgICBHU1RfREVCVUco
InNjaGVkdWxpbmcgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQgJXMgZXZlbnQgb2Ygc2l6
ZSAlenUiLCBpbml0RGF0YS5wYXlsb2FkQ29udGFpbmVyVHlwZSgpLnV0ZjgoKS5kYXRhKCksCiAg
ICAgICAgICAgICBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7Ci0gICAgICAgIEdTVF9NRU1E
VU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5pdERh
dGEucGF5bG9hZCgpLT5kYXRhKCkpLCBpbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CisgICAg
ICAgIEdTVF9NRU1EVU1QKCJpbml0IGRhdGFzIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oaW5pdERhdGEucGF5bG9hZCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkpLCBpbml0
RGF0YS5wYXlsb2FkKCktPnNpemUoKSk7CiAgICAgICAgIHdlYWtUaGlzLT5tX3BsYXllci0+aW5p
dGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGEucGF5bG9hZENvbnRhaW5lclR5cGUo
KSwgaW5pdERhdGEucGF5bG9hZCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKICAgICB9KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggNWQ4
NmZiMWFmNDg3YzAyODllMDAxMjU1OTY1YzMxZGNkYTk3MzQyNi4uOTMwMTkwOTk0NWI0YTIzZDY2
NzgyZjM1MGI1NmU0NDc5ZjgwMjZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFBsYXRm
b3JtTWVkaWFSZXNvdXJjZUNsaWVudCB2aXJ0dWFsIG1ldGhvZHMuCiAgICAgdm9pZCByZXNwb25z
ZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKSBv
dmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC0xMDkzLDcgKzEwOTMsNyBAQCB2b2lkIENh
Y2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENvbnRpbnVlUG9s
aWN5Q2hlY2s6Olllcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6
OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBXZWJLaXRXZWJTcmMq
IHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94
eUNsZWFyS2V5LmgKaW5kZXggNjkyYTk5NmQxOWMyNGVmZDlhNDg1NTIzNzNhNTY3OWI1MmUxZWYx
Yy4uMzQ5YmZkY2FhZDZjN2Q3ZjhkNWFkYTBhMTcyMTlmZDllNzA2MjZmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNs
ZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9DRE1Qcm94eUNsZWFyS2V5LmgKQEAgLTYyLDExICs2MiwxMSBAQCBwdWJsaWM6CiAgICAg
Q0RNUHJveHlDbGVhcktleSgpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIH5DRE1Qcm94eUNsZWFy
S2V5KCk7CiAKLSAgICAvLyBGSVhNRTogVGhlcmUncyBhIGxhY2sgb2YgY29uc2lzdGVuY3kgYmV0
d2VlbiBTaGFyZWRCdWZmZXJzLAorICAgIC8vIEZJWE1FOiBUaGVyZSdzIGEgbGFjayBvZiBjb25z
aXN0ZW5jeSBiZXR3ZWVuIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJzLAogICAgIC8vIFZlY3Rvcjxj
aGFyPidzIGFuZCB7dWludDhfdCosc2l6ZV90fSBpZGlvbXMgZm9yIHJlcHJlc2VudGluZyBhIGNo
dW5rIG9mCi0gICAgLy8gYnl0ZXMuIEZpeCB0aGF0IHNvbWVob3cuIE5vdGUgU2hhcmVkQnVmZmVy
cyBhcmUgZGFuZ2Vyb3VzIHNpbmNlCisgICAgLy8gYnl0ZXMuIEZpeCB0aGF0IHNvbWVob3cuIE5v
dGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcnMgYXJlIGRhbmdlcm91cyBzaW5jZQogICAgIC8vIHRo
ZXkncmUgbm90IHRocmVhZC1zYWZlIGFuZCB0aGlzIGNsYXNzIG11c3QgbWFpbnRhaW4KLSAgICAv
LyB0aHJlYWQtc2FmZXR5LCBidXQgbWF5YmUgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCBjb3Vs
ZCBiZQorICAgIC8vIHRocmVhZC1zYWZldHksIGJ1dCBtYXliZSBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudCBjb3VsZCBiZQogICAgIC8vIG1hZGUgdG8gd29yaywgaG93ZXZlciB0
aGF0IGhhcyB6ZXJvIGhlbHBlcnMgZm9yIGRyb3BwaW5nIGludG8KICAgICAvLyBpdGVyYXRvci1h
d2FyZSAvIGNvbXBhcmF0b3ItYXdhcmUgY29udGFpbmVycy4uLgogICAgIHN0cnVjdCBjZW5jRGVj
cnlwdENvbnRleHQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKaW5kZXggMmVmYTA0MzYwZTg4
NDgzODA2MTQ0YzNkNzFkZTYzYWQ3YjQyYjU2MS4uYzM4OTE2ZTdkMDU5ZTg4OWI1Yzg4ZWViMDll
MGY0Y2ZjMDNjMWRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCkBAIC0yMjAsNyArMjIw
LDcgQEAgYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGluaXREYXRhKSBjb25zdAorYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNJbml0RGF0
YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGluaXREYXRhKSBjb25zdAogewogICAgIC8vIFZhbGlkYXRlIHRoZSBpbml0RGF0YSBi
dWZmZXIgYXMgYW4gSlNPTiBvYmplY3QgaW4ga2V5aWRzIGNhc2UuCiAgICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgImtleWlkcyIpICYmIENETVV0aWxp
dGllczo6cGFyc2VKU09OT2JqZWN0KGluaXREYXRhKSkKQEAgLTIzNyw3ICsyMzcsNyBAQCBib29s
IENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgUwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gQ0RNUHJpdmF0ZVRodW5kZXI6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVk
QnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBD
RE1Qcml2YXRlVGh1bmRlcjo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOwog
fQpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjppbml0aWFsaXpl
V2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhCiAgICAgY2FsbGJh
Y2soU3VjY2VlZGVkKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OnNldFNlcnZlckNl
cnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJh
Y2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjpzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgIFN1Y2Nlc3ND
YWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIE9wZW5DRE1FcnJvciBlcnJvciA9IG9wZW5jZG1f
c3lzdGVtX3NldF9zZXJ2ZXJfY2VydGlmaWNhdGUobV90aHVuZGVyU3lzdGVtLmdldCgpLCBjb25z
dF9jYXN0PHVpbnQ4X3QqPihjZXJ0aWZpY2F0ZS0+ZGF0YSgpKSwKICAgICAgICAgY2VydGlmaWNh
dGUtPnNpemUoKSk7CkBAIC0zMjYsNyArMzI2LDcgQEAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lv
bj4gQ0RNSW5zdGFuY2VUaHVuZGVyOjpjcmVhdGVTZXNzaW9uKCkKIGNsYXNzIFBhcnNlZFJlc3Bv
bnNlTWVzc2FnZSB7CiAKIHB1YmxpYzoKLSAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UoY29uc3Qg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2Uo
Y29uc3QgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgewogICAg
ICAgICBpZiAoIWJ1ZmZlciB8fCAhYnVmZmVyLT5zaXplKCkpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0zNTQsOCArMzU0LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Qg
eyByZXR1cm4gbV9pc1ZhbGlkOyB9CiAgICAgYm9vbCBoYXNQYXlsb2FkKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9wYXlsb2FkKTsgfQotICAgIGNvbnN0IFJlZjxTaGFyZWRC
dWZmZXI+JiBwYXlsb2FkKCkgY29uc3QmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3Bh
eWxvYWQudmFsdWUoKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgJiB7IEFT
U0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KKyAgICBjb25zdCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCYgeyBBU1NFUlQobV9w
YXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CisgICAgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgJiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9w
YXlsb2FkLnZhbHVlKCk7IH0KICAgICBib29sIGhhc1R5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGUuaGFzX3ZhbHVlKCk7IH0KICAgICBXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlIHR5cGUo
KSBjb25zdCB7IEFTU0VSVChtX3R5cGUpOyByZXR1cm4gbV90eXBlLnZhbHVlKCk7IH0KICAgICBX
ZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlIHR5cGVPcihXZWJDb3JlOjpNZWRpYUtleU1lc3Nh
Z2VUeXBlIGFsdGVybmF0ZSkgY29uc3QgeyByZXR1cm4gbV90eXBlID8gbV90eXBlLnZhbHVlKCkg
OiBhbHRlcm5hdGU7IH0KQEAgLTM2NCwxMSArMzY0LDExIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICAgICBib29sIG1faXNWYWxpZCB7IGZhbHNlIH07Ci0gICAgc3RkOjpvcHRpb25hbDxSZWY8U2hh
cmVkQnVmZmVyPj4gbV9wYXlsb2FkOworICAgIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiBtX3BheWxvYWQ7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRp
YUtleU1lc3NhZ2VUeXBlPiBtX3R5cGU7CiB9OwogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvblRo
dW5kZXI6OmNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpjaGFsbGVuZ2VHZW5lcmF0
ZWRDYWxsYmFjayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAg
ICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShidWZmZXIpOwog
ICAgIGlmICghcGFyc2VkUmVzcG9uc2VNZXNzYWdlKSB7CkBAIC00NzUsNyArNDc1LDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjprZXlzVXBkYXRlRG9uZUNhbGxiYWNrKCkKICAg
ICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIG1l
c3NhZ2UpCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBHU1RfRVJST1Io
IkNETSBlcnJvciIpOwogICAgIEdTVF9NRU1EVU1QKCJlcnJvciBkdW1wIiwgbWVzc2FnZS0+ZGF0
YSgpLCBtZXNzYWdlLT5zaXplKCkpOwpAQCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIG1l
c3NhZ2UpCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQogCi12b2lk
IENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxp
Y2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgaW5pdERhdGFTaGFyZWRCdWZmZXIsCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRh
U2hhcmVkQnVmZmVyLAogICAgIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC01MDYsNyArNTA2LDcgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwg
Y29uc3QgQXQKICAgICAgICAgbV9pbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSwgbV9pbml0RGF0
YS5wYXlsb2FkKCktPnNpemUoKSwgbnVsbHB0ciwgMCwgJm1fdGh1bmRlclNlc3Npb25DYWxsYmFj
a3MsIHRoaXMsICZzZXNzaW9uKTsKICAgICBpZiAoIXNlc3Npb24pIHsKICAgICAgICAgR1NUX0VS
Uk9SKCJDb3VsZCBub3QgY3JlYXRlIHNlc3Npb24iKTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKKyAgICAgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CiAg
ICAgICAgIGNhbGxiYWNrKGluaXREYXRhLnJlbGVhc2VOb25OdWxsKCksIHsgfSwgZmFsc2UsIEZh
aWxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01MTUsNyArNTE1LDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNl
bnNlVHlwZSwgY29uc3QgQXQKIAogICAgIGF1dG8gZ2VuZXJhdGVDaGFsbGVuZ2UgPSBbdGhpcywg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEg
PSBtX2luaXREYXRhLnBheWxvYWQoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CiAgICAgICAgIGlmIChtX3Nl
c3Npb25JRC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIEdTVF9FUlJPUigiY291bGQgbm90IGNy
ZWF0ZSBzZXNzaW9uIGlkIik7CiAgICAgICAgICAgICBjYWxsYmFjayhpbml0RGF0YS5yZWxlYXNl
Tm9uTnVsbCgpLCB7IH0sIGZhbHNlLCBGYWlsZWQpOwpAQCAtNTQ1LDEzICs1NDUsMTMgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpzZXNzaW9uRmFpbHVyZSgpCiAgICAgbV9zZXNz
aW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lv
blRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VU
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sm
JiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09IG1fc2Vzc2lvbklE
KTsKIAogICAgIEdTVF9UUkFDRSgiVXBkYXRpbmcgc2Vzc2lvbiAlcyIsIHNlc3Npb25JRC51dGY4
KCkuZGF0YSgpKTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlz
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25DaGFu
Z2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
Ym9vbCBzdWNjZXNzLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZU1l
c3NhZ2UpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAg
ICBpZiAoc3VjY2VzcykgewogICAgICAgICAgICAgaWYgKCFyZXNwb25zZU1lc3NhZ2UpCkBAIC01
NjIsNyArNTYyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHkKICAgICAgICAgICAgICAgICBQ
YXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKHJlc3BvbnNlTWVzc2Fn
ZSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNlTWVzc2FnZSk7CiAgICAg
ICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFy
c2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CisgICAgICAgICAgICAgICAgICAgIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1l
c3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVz
c2FnZSBvZiBzaXplICV6dSIsIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAg
IEdTVF9NRU1EVU1QKCJtZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkp
OwogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6
Om51bGxvcHQsCkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVu
ZGVyOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQKIHsK
ICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09IG1fc2Vzc2lvbklEKTsK
IAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYg
cmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tz
LmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNz
LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZU1lc3NhZ2UpIG11dGFi
bGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoc3VjY2Vz
cykgewogICAgICAgICAgICAgaWYgKCFyZXNwb25zZU1lc3NhZ2UpCkBAIC01OTcsNyArNTk3LDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlw
ZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQKICAgICAgICAgICAgICAgICBQYXJzZWRSZXNwb25z
ZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKHJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAg
aWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VN
ZXNzYWdlLnBheWxvYWQoKSk7CisgICAgICAgICAgICAgICAgICAgIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9h
ZCgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVzc2FnZSBvZiBzaXpl
ICV6dSIsIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1Q
KCJtZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAg
ICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjptYWtl
X3BhaXIocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnR5cGVPcihNZWRpYUtleU1lc3NhZ2VUeXBlOjpM
aWNlbnNlUmVxdWVzdCksCkBAIC02NDAsNyArNjQwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGlj
ZW4KIHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgbV9zZXNzaW9uSUQgPT0gc2Vzc2lv
bklEKTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFw
cGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIG11dGFibGUgewogICAgICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoc3VjY2VzcykgewogICAgICAg
ICAgICAgaWYgKCFidWZmZXIpCkBAIC02NDksNyArNjQ5LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwg
TGljZW4KICAgICAgICAgICAgICAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9u
c2VNZXNzYWdlKGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNl
TWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQ
YXlsb2FkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2Fn
ZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CisgICAgICAgICAg
ICAgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShw
YXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NU
X0RFQlVHKCJzZXNzaW9uICVzIHJlbW92ZWQsIG1lc3NhZ2UgbGVuZ3RoICV6dSIsIG1fc2Vzc2lv
bklELnV0ZjgoKS5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAg
IGNhbGxiYWNrKG1fa2V5U3RvcmUuYWxsS2V5c0FzKE1lZGlhS2V5U3RhdHVzOjpSZWxlYXNlZCks
IFdURk1vdmUobWVzc2FnZSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaAppbmRleCBjZGQ4ZGEyMTEyM2MxNzkx
YWUyZmI2NDM5ZmYyZDZmYTBkMmViMjFjLi4xMDIwZTE1MzIyNzFiNTM1MWUxMDZkZGU4ZjIxZWE1
NDA1YTljMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaApAQCAtOTMsOCArOTMsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9y
dHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vz
c2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRv
bVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Qg
ZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6
ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKQEAgLTEx
MCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFuY2UKICAgICBJbXBsZW1lbnRh
dGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVt
ZW50YXRpb25UeXBlOjpUaHVuZGVyOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3Vy
YXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJ
ZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5h
bDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1
Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAg
ICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9rZXlTeXN0ZW07
IH0KICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7
CkBAIC0xMjYsOCArMTI2LDggQEAgY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlciBmaW5h
bCA6IHB1YmxpYyBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSB7CiBwdWJsaWM6CiAgICAgQ0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcihDRE1JbnN0YW5jZVRodW5kZXImKTsKIAotICAgIHZvaWQgcmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwot
ICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQg
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFj
ayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5z
ZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJh
Y2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2
b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VU
eXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpAQCAtMTQxLDE0ICsxNDEs
MTQgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBDRE1JbnN0YW5jZVRodW5kZXIqIGNkbUluc3Rh
bmNlVGh1bmRlcigpIGNvbnN0OwogCi0gICAgdXNpbmcgTm90aWZpY2F0aW9uID0gdm9pZCAoQ0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6KikoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
Jik7CisgICAgdXNpbmcgTm90aWZpY2F0aW9uID0gdm9pZCAoQ0RNSW5zdGFuY2VTZXNzaW9uVGh1
bmRlcjo6KikoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAg
IHVzaW5nIENoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsKLSAg
ICB1c2luZyBTZXNzaW9uQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChib29sLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmKT47CisgICAgdXNpbmcgU2Vzc2lvbkNoYW5nZWRDYWxsYmFjayA9
IEZ1bmN0aW9uPHZvaWQoYm9vbCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPjsK
IAotICAgIHZvaWQgY2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJik7CisgICAgdm9pZCBjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBrZXlVcGRhdGVkQ2FsbGJhY2soS2V5SURU
eXBlJiYpOwogICAgIHZvaWQga2V5c1VwZGF0ZURvbmVDYWxsYmFjaygpOwotICAgIHZvaWQgZXJy
b3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGVycm9yQ2FsbGJh
Y2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIENETUluc3RhbmNlU2Vz
c2lvbjo6S2V5U3RhdHVzIHN0YXR1cyhjb25zdCBLZXlJRFR5cGUmKSBjb25zdDsKICAgICB2b2lk
IHNlc3Npb25GYWlsdXJlKCk7CiAKQEAgLTE1OSw3ICsxNTksNyBAQCBwcml2YXRlOgogICAgIElu
aXREYXRhIG1faW5pdERhdGE7CiAgICAgT3BlbkNETVNlc3Npb25DYWxsYmFja3MgbV90aHVuZGVy
U2Vzc2lvbkNhbGxiYWNrcyB7IH07CiAgICAgQm94UHRyPE9wZW5DRE1TZXNzaW9uPiBtX3Nlc3Np
b247Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdlOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBtX21lc3NhZ2U7CiAgICAgYm9vbCBtX25lZWRzSW5kaXZpZHVh
bGl6YXRpb24geyBmYWxzZSB9OwogICAgIFZlY3RvcjxDaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFj
az4gbV9jaGFsbGVuZ2VDYWxsYmFja3M7CiAgICAgVmVjdG9yPFNlc3Npb25DaGFuZ2VkQ2FsbGJh
Y2s+IG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJl
YW1lckVNRVV0aWxpdGllcy5jcHAKaW5kZXggM2Y4NWFmZTczYzg0Mjc2Mjk5N2Q1YWJjMmQ3YmMw
N2Y3YzAxYjljMy4uZWE4OTBmNjdkYTIxMzg3ZjQwZGE2NTFhMGNhNWM3MzQ5M2U4NGY2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9H
U3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApAQCAtNzEsNyAr
NzEsNyBAQCBzdGF0aWMgdm9pZCBtYXJrdXBFcnJvcihHTWFya3VwUGFyc2VDb250ZXh0KiwgR0Vy
cm9yKiwgZ3BvaW50ZXIpCiAKIHN0YXRpYyBHTWFya3VwUGFyc2VyIG1hcmt1cFBhcnNlciB7IG1h
cmt1cFN0YXJ0RWxlbWVudCwgbWFya3VwRW5kRWxlbWVudCwgbWFya3VwVGV4dCwgbWFya3VwUGFz
c3Rocm91Z2gsIG1hcmt1cEVycm9yIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRh
OjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXls
b2FkKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2Vu
Y0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQogewogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7
CiAgICAgaWYgKCFwYXlsb2FkIHx8ICFwYXlsb2FkLT5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0
aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAppbmRleCBkNWFmZjg0NWY0MDlhNzVkNzFhOTg0MGFj
ZjFkMzQyYTQ2NDdkMmYxLi5hYjI2NGYzNzc3ZmQ2OTg5NzVlODNiOGQ3YmY4YWM5NjhiMjlhY2U0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKQEAgLTUwLDEz
ICs1MCwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBHU1RfQ0FUX0xFVkVMX0xPRyh3ZWJraXRf
bWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSwgR1NUX0xFVkVM
X0VSUk9SLCBudWxscHRyLCAiY2Fubm90IG1hcCAlcyBwcm90ZWN0aW9uIGRhdGEiLCBzeXN0ZW1J
ZC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICB9Ci0gICAgICAgIG1fcGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5p
dERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VkUGF5
bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpKSkKKyAgICAgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxl
YXNlTm9uTnVsbCgpKTsKICAgICB9CiAKLSAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3Rl
bUlkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCisgICAgSW5pdERhdGEoY29uc3Qg
U3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcGF5bG9h
ZCkKICAgICAgICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQotICAgICAgICAsIG1fcGF5bG9hZChl
eHRyYWN0Q2VuY0lmTmVlZGVkKFdURk1vdmUocGF5bG9hZCkpKQogICAgIHsKKyAgICAgICAgaWYg
KHBheWxvYWQpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0
Q2VuY0lmTmVlZGVkKHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkpKQorICAgICAgICAgICAgICAg
IG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAg
ICAgfQogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKEluaXREYXRhJiYgaW5pdERhdGEpCkBAIC03
MiwxMCArNzYsMTAgQEAgcHVibGljOgogICAgICAgICAvLyBpdCdzIG5vdCB2ZXJ5IHJvYnVzdCwg
c28gYmUgY2FyZWZ1bCBoZXJlIQogICAgICAgICBtX3N5c3RlbUlkID0gaW5pdERhdGEubV9zeXN0
ZW1JZDsKIAotICAgICAgICBtX3BheWxvYWQtPmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsK
KyAgICAgICAgbV9wYXlsb2FkLmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAK
LSAgICBjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGF5bG9hZDsgfQorICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBwYXlsb2Fk
KCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkLmdldCgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBz
eXN0ZW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtSWQ7IH0KICAgICBTdHJpbmcgcGF5bG9h
ZENvbnRhaW5lclR5cGUoKSBjb25zdAogICAgIHsKQEAgLTg2LDExICs5MCwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiAiY2VuYyJfczsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsK
KyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZO
ZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
c3lzdGVtSWQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXlsb2FkOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgbV9wYXlsb2FkOwogfTsKIAogY2xhc3MgUHJvdGVjdGlvblN5c3RlbUV2
ZW50cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA3MThiOWJkMzE1ZWNjNjcwNzg5
YzY1Y2JhYWEwMzQ5Mjk3NWU3MmQzLi42OTI4YTYzZTk3MWM3YzM1ZTg4NDRlZWY3M2JmYTQ0YThk
OGMwMzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnRE
ZXNjcmlwdGlvbjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9u
dFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VN
YWMubW0KaW5kZXggODNlNmFmN2IwMzg5MjgzOGMzYmZlYTFjMGMxMWFhN2ZjZjhhNzdhOS4uNjhi
Y2M4ODQ2YThiMWYwZjdjYmNmMTQwMzE5NjZlZDkyNDMyMmMyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VN
YWMubW0KQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFBERkRv
Y3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKIHsKLSAgICBtX2RvY3VtZW50ID0gYWRv
cHROUyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZE
b2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKIH0KIAogdm9pZCBQREZEb2N1bWVudEltYWdlOjpjb21w
dXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKaW5kZXgg
MDljMWM0NWM0NTkzYWVhNDMxODMwZDIxNWI3ZTc0ODUyYzE5ZTM3Zi4uZmEwMDA4MTE2MDY2OTdk
YzVjNTExMjMzM2M5MGM4YzkyYjRiNjcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCkBA
IC0zNSw5ICszNSwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5kaWFu
VVNob3J0OworY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IEVPVFByZWZpeDsKIGNsYXNzIEZv
bnRNZW1vcnlSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBFT1RIZWFkZXIgewogICAgIEVPVEhlYWRlcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVWZXJ0aWNhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCmluZGV4IDJjZmE4NTRjMDIyNjY4YWNjMDA3
MzdjMWViYjM1ZmYzNDhkNThlMmIuLjBmYThmMzA2YWQ5NTJkMDZhMDkyOTdkMGIxZDI4N2I4OTg4
MzJhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKQEAgLTM4MSw3ICsz
ODEsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKIAogc3RhdGljIGJvb2wgbG9h
ZEhtdHhUYWJsZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIFZlY3Rvcjx1
aW50MTZfdD4mIGFkdmFuY2VXaWR0aHMpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFUYWcpOworICAg
IGF1dG8gYnVmZmVyID0gcGxhdGZvcm1EYXRhLm9wZW5UeXBlVGFibGUoT3BlblR5cGU6OkhoZWFU
YWcpOwogICAgIGNvbnN0IE9wZW5UeXBlOjpIaGVhVGFibGUqIGhoZWEgPSBPcGVuVHlwZTo6dmFs
aWRhdGVUYWJsZTxPcGVuVHlwZTo6SGhlYVRhYmxlPihidWZmZXIpOwogICAgIGlmICghaGhlYSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDI0LDcgKzQyNCw3IEBAIE9wZW5UeXBlVmVydGlj
YWxEYXRhOjpPcGVuVHlwZVZlcnRpY2FsRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0
Zm9ybURhdGEsCiB2b2lkIE9wZW5UeXBlVmVydGljYWxEYXRhOjpsb2FkTWV0cmljcyhjb25zdCBG
b250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEpCiB7CiAgICAgLy8gTG9hZCB2aGVhIGZpcnN0
LiBUaGlzIHRhYmxlIGlzIHJlcXVpcmVkIGZvciBmb250cyB0aGF0IHN1cHBvcnQgdmVydGljYWwg
Zmxvdy4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwbGF0Zm9ybURhdGEub3Bl
blR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CisgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9y
bURhdGEub3BlblR5cGVUYWJsZShPcGVuVHlwZTo6VmhlYVRhZyk7CiAgICAgY29uc3QgT3BlblR5
cGU6OlZoZWFUYWJsZSogdmhlYSA9IE9wZW5UeXBlOjp2YWxpZGF0ZVRhYmxlPE9wZW5UeXBlOjpW
aGVhVGFibGU+KGJ1ZmZlcik7CiAgICAgaWYgKCF2aGVhKQogICAgICAgICByZXR1cm47CkBAIC00
ODYsNyArNDg2LDcgQEAgdm9pZCBPcGVuVHlwZVZlcnRpY2FsRGF0YTo6bG9hZE1ldHJpY3MoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogCiB2b2lkIE9wZW5UeXBlVmVydGlj
YWxEYXRhOjpsb2FkVmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYgcGxhdGZvcm1EYXRhKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IHBsYXRmb3JtRGF0YS5vcGVuVHlwZVRhYmxlKE9wZW5UeXBlOjpHU1VCVGFnKTsK
ICAgICBjb25zdCBPcGVuVHlwZTo6R1NVQlRhYmxlKiBnc3ViID0gT3BlblR5cGU6OnZhbGlkYXRl
VGFibGU8T3BlblR5cGU6OkdTVUJUYWJsZT4oYnVmZmVyKTsKICAgICBpZiAoZ3N1YikKICAgICAg
ICAgZ3N1Yi0+Z2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoJm1fdmVydGljYWxHbHlwaE1h
cCwgKmJ1ZmZlci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oCmluZGV4IGE2MjcxOWIxNzE5
YTc0Zjk3NjkyMjE5ZGY1ZjdhYWVkYzQ5MDY0NjYuLjBkYjRhZmFkYjNmNzQyYjgzYTRlMTZjZjM3
MTg3MGEyYjA0MDRlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oCkBAIC00Myw3ICs0Myw3IEBA
IGVudW0gRFdSSVRFX0ZPTlRfU1RSRVRDSDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Rm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBEaXJlY3RXcml0ZSB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oCmluZGV4IDVmMTBmNzM5MmQwNGMzNDRkMTJjZWU0MjY2ZWRiMWVlOTk3MWM0ZWYu
LjA4ZmM5ZjE5ZWFlYTk0ODNlYTU4ZWMxYWVlZGQ0NTcyNTZjZTI3YmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaApAQCAtMzYsMTIgKzM2LDEzIEBAIHR5cGVkZWYgc3RydWN0IENHRm9udCog
Q0dGb250UmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
IGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFz
cyBGb250TWVtb3J5UmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm9udFNl
bGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdz
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGlu
dD4gRm9udEZlYXR1cmVTZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCmluZGV4IDYy
OWUwZTYxYTEwNGM1NjdhMWQ0ZWRjYjdlNTc5N2RjZjY3YzZlOGUuLjc3MzU3MzliOTMzNGY0NGQ5
OWEzZjEyZmZjNWJmN2I0MWY3Y2M2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcApAQCAt
MjcyLDcgKzI3Miw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3ViCiAgICAgcmV0dXJuIGJpdG1h
cDsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0YShTaGFyZWRCdWZmZXIm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKIHsKICAgICBpZiAoIWFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRp
cmVjdDJELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQuaAppbmRleCA0ZjQ3MjU4NmI0MjRiZGExY2Y2ZmEwMTQzY2JhMjNkMDMwMDE2
ZTQ1Li5jMjM2NWZkNzQ0YzYxMThjMTk5OWUwNWI4MDJlZDViNDhmMzY0ODIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBJbWFnZURlY29kZXJEaXJlY3Qy
RCBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogcHVibGljOgogICAgIEltYWdlRGVjb2Rl
ckRpcmVjdDJEKCk7CiAKLSAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2RlckRpcmVjdDJEPiBjcmVh
dGUoU2hhcmVkQnVmZmVyJiwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQorICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyRGlyZWN0MkQ+IGNyZWF0ZShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyRGlyZWN0MkQo
KSk7CiAgICAgfQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybUltYWdl
UHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGlu
Z09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCi0gICAgdm9pZCBz
ZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2
b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hl
KHNpemVfdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VXaW4uY3BwCmluZGV4IDBkODgyMGU5ZjNkNmZkNzczNWQ1NzBiMzY0MTQ4
OGY1M2JkN2VjZTkuLjJkOTcyNzBhNzM0ODM0ODkzZTc4YzgxZmYwZWM1YmI1ZGZlYzNmODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNw
cApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiAvLyBUaGlz
IGZ1bmN0aW9uIGxvYWRzIHJlc291cmNlcyBmcm9tIFdlYktpdAotUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKik7CitSZWZQdHI8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihj
b25zdCBjaGFyKik7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURl
Y29kZXIuY3BwCmluZGV4IGQ5NTZkOWU3NjI1ZDViYjVhNzBmMDY5M2U3Nzk4ZWU5MDg0OWYxNjUu
LjMzYzk1ZWMzMzMzYTkyMGM2NGEwMTgxNzUxZWI0YTUwNWVmMWE3YWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJs
ZUltYWdlRGVjb2Rlci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBuYW1lc3BhY2UgewogCi1zdGF0aWMgdW5zaWduZWQgY29weUZyb21TaGFyZWRCdWZmZXIoY2hh
ciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgc2hh
cmVkQnVmZmVyKQorc3RhdGljIHVuc2lnbmVkIGNvcHlGcm9tU2hhcmVkQnVmZmVyKGNoYXIqIGJ1
ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBzaGFyZWRCdWZmZXIpCiB7CiAgICAgdW5zaWduZWQgYnl0ZXNFeHRyYWN0ZWQgPSAwOwogICAg
IGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IHNoYXJlZEJ1ZmZlcikgewpAQCAtMTM1LDcgKzEz
NSw3IEBAIGJvb2wgbWF0Y2hlc0NVUlNpZ25hdHVyZShjaGFyKiBjb250ZW50cykKIAogfQogCi1S
ZWZQdHI8U2NhbGFibGVJbWFnZURlY29kZXI+IFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGUo
U2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8U2NhbGFi
bGVJbWFnZURlY29kZXI+IFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGUoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBsZW5ndGhPZkxvbmdlc3RTaWduYXR1cmUgPSAxNDsgLy8gVG8gd2l0OiAi
UklGRj8/Pz9XRUJQVlAiCiAgICAgY2hhciBjb250ZW50c1tsZW5ndGhPZkxvbmdlc3RTaWduYXR1
cmVdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
U2NhbGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggMzJkNGU2ZjhiOGZhMTRhMTNiZmI2
MjJkODc1NzA4Nzk4Yjk5ZGFhMi4uOWM0MDU1NzgyNDFkMGM1MTI3MDI5NTE1YzIyMTI2NThmOGM0
ZjY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
U2NhbGFibGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC02MCw3ICs2MCw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIFJldHVybnMgbnVsbHB0ciBpZiB3ZSBjYW4ndCBzbmlmZiBhIHN1cHBvcnRl
ZCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGRhdGEgKHBvc3NpYmx5CiAgICAgLy8gYmVjYXVzZSB0
aGVyZSBpc24ndCBlbm91Z2ggZGF0YSB5ZXQpLgotICAgIHN0YXRpYyBSZWZQdHI8U2NhbGFibGVJ
bWFnZURlY29kZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgc3RhdGljIFJlZlB0cjxTY2FsYWJsZUltYWdl
RGVjb2Rlcj4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKICAgICBib29sIHByZW11bHRpcGx5QWxw
aGEoKSBjb25zdCB7IHJldHVybiBtX3ByZW11bHRpcGx5QWxwaGE7IH0KIApAQCAtNzAsMTYgKzcw
LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5j
b2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlOwogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShTaGFy
ZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZQorICAgIHZvaWQg
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAg
ICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9y
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChkYXRhLmRhdGEoKSkgewotICAg
ICAgICAgICAgLy8gU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29tYmluZXMgYWxsIHNlZ21lbnRzIGlu
dG8gb25lIGluIGNhc2UgdGhlcmUncyBtb3JlIHRoYW4gb25lLgotICAgICAgICAgICAgbV9kYXRh
ID0gZGF0YS5iZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKTsKLSAgICAgICAgfQorICAgICAgICBh
dXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgICAgICBpZiAo
Y29udGlndW91c0RhdGEtPmRhdGEoKSkKKyAgICAgICAgICAgIG1fZGF0YSA9IGNvbnRpZ3VvdXNE
YXRhLT5iZWdpbigpLT5zZWdtZW50LmNvcHlSZWYoKTsKICAgICAgICAgaWYgKG1fZW5jb2RlZERh
dGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFibGUpIHsKICAgICAgICAg
ICAgIG1fZGVjb2RpbmdTaXplRnJvbVNldERhdGEgPSB0cnVlOwogICAgICAgICAgICAgdHJ5RGVj
b2RlU2l6ZShhbGxEYXRhUmVjZWl2ZWQpOwpAQCAtMTk1LDcgKzE5NCw3IEBAIHB1YmxpYzoKICAg
ICBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gc3RkOjpudWxsb3B0OyB9CiAKIHByb3RlY3RlZDoKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudD4gbV9kYXRhOwogICAgIFZlY3RvcjxTY2FsYWJsZUltYWdlRGVjb2RlckZy
YW1lLCAxPiBtX2ZyYW1lQnVmZmVyQ2FjaGUgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOwog
ICAgIG11dGFibGUgTG9jayBtX2xvY2s7CiAgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGE7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FW
SUZJbWFnZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKaW5kZXggN2M2MDNmZDgzNThjMjE0YWM5MTg0ZjMx
ODk5NzJmZTg0MWI2MWU4MC4uMjZmODg2NDk2ZTVhNWExNGUyOGFmYjFhZmE5YmZjMzAxNzdmNTFj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZp
Zi9BVklGSW1hZ2VSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcApAQCAtNDEsNyArNDEsNyBAQCBBVklG
SW1hZ2VSZWFkZXI6OkFWSUZJbWFnZVJlYWRlcihSZWZQdHI8QVZJRkltYWdlRGVjb2Rlcj4mJiBk
ZWNvZGVyKQogCiBBVklGSW1hZ2VSZWFkZXI6On5BVklGSW1hZ2VSZWFkZXIoKSA9IGRlZmF1bHQ7
CiAKLWJvb2wgQVZJRkltYWdlUmVhZGVyOjpwYXJzZUhlYWRlcihjb25zdCBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK2Jvb2wgQVZJRkltYWdl
UmVhZGVyOjpwYXJzZUhlYWRlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGF2aWZEZWNvZGVy
U2V0SU9NZW1vcnkobV9hdmlmRGVjb2Rlci5nZXQoKSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgp
KSAhPSBBVklGX1JFU1VMVF9PSykKICAgICAgICAgcmV0dXJuIGFsbERhdGFSZWNlaXZlZCA/IG1f
ZGVjb2Rlci0+c2V0RmFpbGVkKCkgOiBmYWxzZTsKQEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBBVklG
SW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQm
IGRhdGEsIGJvb2wgYWwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBVklGSW1hZ2VSZWFk
ZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFtZUluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZy
YW1lJiBidWZmZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpCit2b2lk
IEFWSUZJbWFnZVJlYWRlcjo6ZGVjb2RlRnJhbWUoc2l6ZV90IGZyYW1lSW5kZXgsIFNjYWxhYmxl
SW1hZ2VEZWNvZGVyRnJhbWUmIGJ1ZmZlciwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQmIGRhdGEpCiB7CiAgICAgaWYgKG1fZGVjb2Rlci0+ZmFpbGVkKCkpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCmluZGV4IGNiY2EwYjhjMTI0YmZm
MGZmYzMzMDFiYTM1YmNlMDFlZDI3MjJkZjguLjQ5NmY2OWY4MTJiZDc1YjBlZGE2MzU3YmFhODYw
Y2ZjY2I1YmE0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaApAQCAtMzksOCArMzksOCBA
QCBwdWJsaWM6CiAgICAgQVZJRkltYWdlUmVhZGVyKFJlZlB0cjxBVklGSW1hZ2VEZWNvZGVyPiYm
KTsKICAgICB+QVZJRkltYWdlUmVhZGVyKCk7CiAKLSAgICBib29sIHBhcnNlSGVhZGVyKGNvbnN0
IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAg
dm9pZCBkZWNvZGVGcmFtZShzaXplX3QgaW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUm
LCBjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Jik7CisgICAgYm9vbCBwYXJzZUhlYWRl
cihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKTsKKyAgICB2b2lkIGRlY29kZUZyYW1lKHNpemVfdCBpbmRleCwgU2NhbGFibGVJ
bWFnZURlY29kZXJGcmFtZSYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50Jik7CiAgICAgc2l6ZV90IGltYWdlQ291bnQoKSBjb25zdDsKICAgICBkb3VibGUgcmVwZXRp
dGlvbkNvdW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggNzI3
NjlhNjkyNmVjMjQxOWJmNjYzODI1MjhkM2Q3NzIwYTU0YWRhZS4uZjc0NTVjMTQ2YzdlOGFlYjA0
Y2M4YzU2ZjMzMGUyYTAxZjNiYTcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKQEAg
LTQ2LDcgKzQ2LDcgQEAgQk1QSW1hZ2VEZWNvZGVyOjpCTVBJbWFnZURlY29kZXIoQWxwaGFPcHRp
b24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AKIHsKIH0KIAotdm9pZCBCTVBJ
bWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKK3ZvaWQgQk1QSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCmluZGV4IGM3YzdjYTgxZmVhNmI4
YTc3NGJiMzA4ZTUzOGRjZDA0OGM5OTVlZWEuLjY0ZGVkNmFiYmUyYzBhMjliMTFmOWZiNWVjZDZi
NDg3MjRkNTg5NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAg
cHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBTdHJpbmcgZmlsZW5h
bWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiYm1wIl9zOyB9Ci0gICAgdm9pZCBz
ZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2
b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSBmaW5hbDsKICAgICBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5k
ZXgoc2l6ZV90IGluZGV4KSBmaW5hbDsKICAgICAvLyBDQVVUSU9OOiBzZXRGYWlsZWQoKSBkZWxl
dGVzIHxtX3JlYWRlcnwuIEJlIGNhcmVmdWwgdG8gYXZvaWQKICAgICAvLyBhY2Nlc3NpbmcgZGVs
ZXRlZCBtZW1vcnksIGVzcGVjaWFsbHkgd2hlbiBjYWxsaW5nIHRoaXMgZnJvbSBpbnNpZGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1w
L0JNUEltYWdlUmVhZGVyLmgKaW5kZXggNDg0NGYzODBkYzE3ZWM3MDQ1ODhmYjEyZjUzZWFiYzZk
MjBlNjBmNC4uYmQ0MzBlOGE4YmVhMmM4MTZiMmM1MjJiZjViYTc4ODQ2YzM4ZTBmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
UmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1w
L0JNUEltYWdlUmVhZGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgQk1QSW1hZ2VSZWFkZXIg
ewogcHVibGljOgogICAgIC8vIFJlYWQgYSB2YWx1ZSBmcm9tIHxkYXRhW29mZnNldF18LCBjb252
ZXJ0aW5nIGZyb20gbGl0dGxlIHRvIG5hdGl2ZQogICAgIC8vIGVuZGlhbm5lc3MuCi0gICAgc3Rh
dGljIGlubGluZSB1aW50MTZfdCByZWFkVWludDE2KGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQmIGRhdGEsIGludCBvZmZzZXQpCisgICAgc3RhdGljIGlubGluZSB1aW50MTZfdCByZWFk
VWludDE2KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBp
bnQgb2Zmc2V0KQogICAgIHsKICAgICAgICAgdWludDE2X3QgcmVzdWx0OwogICAgICAgICBtZW1j
cHkoJnJlc3VsdCwgJmRhdGEuZGF0YSgpW29mZnNldF0sIDIpOwpAQCAtNTIsNyArNTIsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgc3RhdGljIGlubGlu
ZSB1aW50MzJfdCByZWFkVWludDMyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRh
dGEsIGludCBvZmZzZXQpCisgICAgc3RhdGljIGlubGluZSB1aW50MzJfdCByZWFkVWludDMyKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0
KQogICAgIHsKICAgICAgICAgdWludDMyX3QgcmVzdWx0OwogICAgICAgICBtZW1jcHkoJnJlc3Vs
dCwgJmRhdGEuZGF0YSgpW29mZnNldF0sIDQpOwpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAg
ICAgQk1QSW1hZ2VSZWFkZXIoU2NhbGFibGVJbWFnZURlY29kZXIqIHBhcmVudCwgc2l6ZV90IGRl
Y29kZWRBbmRIZWFkZXJPZmZzZXQsIHNpemVfdCBpbWdEYXRhT2Zmc2V0LCBib29sIHVzZXNBbmRN
YXNrKTsKIAogICAgIHZvaWQgc2V0QnVmZmVyKFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGJ1
ZmZlcikgeyBtX2J1ZmZlciA9IGJ1ZmZlcjsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50JiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9CisgICAgdm9pZCBzZXRE
YXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKSB7IG1fZGF0YSA9
ICZkYXRhOyB9CiAKICAgICAvLyBEb2VzIHRoZSBhY3R1YWwgZGVjb2RpbmcuIElmIHxvbmx5U2l6
ZXwgaXMgdHJ1ZSwgZGVjb2Rpbmcgb25seQogICAgIC8vIHByb2dyZXNzZXMgYXMgZmFyIGFzIG5l
Y2Vzc2FyeSB0byBnZXQgdGhlIGltYWdlIHNpemUuIFJldHVybnMKQEAgLTI3Miw3ICsyNzIsNyBA
QCBwcml2YXRlOgogICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIG1fYnVmZmVyOwogCiAg
ICAgLy8gVGhlIGZpbGUgdG8gZGVjb2RlLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50PiBtX2RhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50PiBtX2RhdGE7CiAKICAgICAvLyBBbiBpbmRleCBpbnRvIHxtX2RhdGF8IHJlcHJlc2Vu
dGluZyBob3cgbXVjaCB3ZSd2ZSBhbHJlYWR5IGRlY29kZWQuCiAgICAgc2l6ZV90IG1fZGVjb2Rl
ZE9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAKaW5k
ZXggNjAxMjAzNzRmOWM0MzE2OGE2NTIxYjY5YzU0YWZiZTJhMDBmNTVmNy4uNGEyMTI1NWE4YzBm
YjY3OGU0YWFkZDc2NjNlYjdmOTE4ZTdmZTk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VC
YWNraW5nU3RvcmVDYWlyby5jcHAKQEAgLTM3LDcgKzM3LDkgQEAgUGxhdGZvcm1JbWFnZVB0ciBJ
bWFnZUJhY2tpbmdTdG9yZTo6aW1hZ2UoKSBjb25zdAogICAgICAgICByZWludGVycHJldF9jYXN0
PHVuc2lnbmVkIGNoYXIqPihjb25zdF9jYXN0PHVpbnQzMl90Kj4obV9waXhlbHNQdHIpKSwKICAg
ICAgICAgQ0FJUk9fRk9STUFUX0FSR0IzMiwgc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQo
KSwgc2l6ZSgpLndpZHRoKCkgKiBzaXplb2YodWludDMyX3QpKSk7CiAgICAgc3RhdGljIGNhaXJv
X3VzZXJfZGF0YV9rZXlfdCBzX3N1cmZhY2VEYXRhS2V5OwotICAgIGNhaXJvX3N1cmZhY2Vfc2V0
X3VzZXJfZGF0YShzdXJmYWNlLmdldCgpLCAmc19zdXJmYWNlRGF0YUtleSwgbV9waXhlbHMuZ2V0
KCksIFtdKHZvaWQqIGRhdGEpIHsgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dCo+KGRhdGEpLT5kZXJlZigpOyB9KTsKKyAgICBjYWlyb19zdXJmYWNlX3NldF91c2VyX2RhdGEo
c3VyZmFjZS5nZXQoKSwgJnNfc3VyZmFjZURhdGFLZXksIG1fcGl4ZWxzLmdldCgpLCBbXSh2b2lk
KiBkYXRhKSB7CisgICAgICAgIHN0YXRpY19jYXN0PERhdGFTZWdtZW50Kj4oZGF0YSktPmRlcmVm
KCk7CisgICAgfSk7CiAKICAgICByZXR1cm4gc3VyZmFjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5jcHAKaW5kZXggZTZhYmUwZDk1NDRiNmMxODVjNjQ1ZGVjZTA5ZjIzZjk1NjY2MDdjYi4u
YjllYzAxYjhhZThlOGQyOWJjNzgyNTI2ZTA3NjUyNTUxZTM1OWMwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlRGVjb2Rlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgR0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFn
ZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AK
IAogR0lGSW1hZ2VEZWNvZGVyOjp+R0lGSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lk
IEdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQordm9pZCBHSUZJbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgp
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKaW5kZXggMzVkZjMzZjZk
ZmM0ODNmZDg0NzEzNjZhZTUzYmIwYjk2MWNhZWQyZS4uYzc0NzE5OTk5Yjk4NmMxY2VmODQ3ODc1
OWQyMzcxOGM5MDQyZDNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaApAQCAtNDYsNyArNDYs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmluZyBm
aWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJnaWYiX3M7IH0KLSAgICB2
b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmlu
YWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYp
IGZpbmFsOwogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3QgZmluYWw7CiAgICAgUmVwZXRp
dGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFk
ZXIuaAppbmRleCA0MjE0NmUwMzI5MzIzNjk5Nzg5ZWI1ZTQyYWY0YzczZDM0YWI5Y2M2Li4xMDgy
ZmRmMGRmZjIzOTFlNTY1MzBhNDFmODdiYTQzOTgyMzI3NTM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFk
ZXIuaApAQCAtMjM3LDcgKzIzNyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9p
ZCBzZXREYXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9k
YXRhID0gJmRhdGE7IH0KKyAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KICAgICAvLyBG
SVhNRTogaGFsdEF0RnJhbWUgc2hvdWxkIGJlIHNpemVfdC4KICAgICBib29sIGRlY29kZShXZWJD
b3JlOjpHSUZJbWFnZURlY29kZXI6OkdJRlF1ZXJ5LCB1bnNpZ25lZCBoYWx0QXRGcmFtZSk7CiAK
QEAgLTMxNiw2ICszMTYsNiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
R0lGRnJhbWVDb250ZXh0PiA+IG1fZnJhbWVzOwogICAgIHNpemVfdCBtX2N1cnJlbnREZWNvZGlu
Z0ZyYW1lOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+
IG1fZGF0YTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+IG1fZGF0YTsKICAgICBib29sIG1fcGFyc2VDb21wbGV0ZWQ7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdl
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBjNzE3YzQ1ZDMwNTdjMDU1MzZlZTYwNTBmOTM5NzA0
NmQxMGRmMmE3Li5jMDcxMzQ1YjhiZjM2OWI4MDI3MWZiZGYwYTBjZTAxNzRmMDUwM2IxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1h
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTIsNyArNTIsNyBAQCBJQ09JbWFnZURlY29k
ZXI6OklDT0ltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcAogCiBJQ09JbWFnZURlY29kZXI6On5JQ09JbWFnZURlY29kZXIoKSA9IGRlZmF1
bHQ7CiAKLXZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBp
ZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAppbmRl
eCBmYjdhOTAzYjJhMDc1Mzk0OTE3YWJiYmYxMWIxY2VkODNmZjQzMmEwLi4xMGVlOWI0ZDJlOGM5
ZDg4N2UxZDJiOGJlMTM5YmI3NDI3MWQ1N2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCkBA
IC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAg
ICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gImljbyJf
czsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29s
IGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgZmluYWw7
CiAgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkg
Y29uc3QgZmluYWw7CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBF
R0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGZkMzQ1YmI3ODZmZjA4ZDk0NjU5MzBh
YTRkZjQ4ZGYxN2FiZjMwNWMuLjhmYjkyMjBlZTM3ZjZhZDgxOTM4MjA3NzRjZTIyYjFkNWNjM2E1
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pw
ZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjIyLDcgKzIyMiw3IEBA
IHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIpCiAK
IHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJl
c3Nfc3RydWN0KiBpbmZvKQogewotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBmb3IgKGpwZWdfc2F2
ZWRfbWFya2VyX3B0ciBtYXJrZXIgPSBpbmZvLT5tYXJrZXJfbGlzdDsgbWFya2VyOyBtYXJrZXIg
PSBtYXJrZXItPm5leHQpIHsKICAgICAgICAgaWYgKCFpc0lDQ01hcmtlcihtYXJrZXIpKQogICAg
ICAgICAgICAgY29udGludWU7CkBAIC0yMzYsMTMgKzIzNiwxMyBAQCBzdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIHVuc2lnbmVkIG1hcmtlclNp
emUgPSBtYXJrZXItPmRhdGFfbGVuZ3RoIC0gaWNjSGVhZGVyU2l6ZTsKLSAgICAgICAgYnVmZmVy
LT5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsg
aWNjSGVhZGVyU2l6ZSksIG1hcmtlclNpemUpOworICAgICAgICBidWZmZXIuYXBwZW5kKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUp
LCBtYXJrZXJTaXplKTsKICAgICB9CiAKLSAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCisgICAg
aWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0
dXJuIGJ1ZmZlcjsKKyAgICByZXR1cm4gYnVmZmVyLnRha2VBc0NvbnRpZ3VvdXMoKTsKIH0KICNl
bmRpZgogCkBAIC0zMjAsNyArMzIwLDcgQEAgcHVibGljOgogICAgICAgICBtX2J5dGVzVG9Ta2lw
ID0gc3RkOjptYXgobnVtQnl0ZXMgLSBieXRlc1RvU2tpcCwgc3RhdGljX2Nhc3Q8bG9uZz4oMCkp
OwogICAgIH0KIAotICAgIGJvb2wgZGVjb2RlKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQmIGRhdGEsIGJvb2wgb25seVNpemUpCisgICAgYm9vbCBkZWNvZGUoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgb25seVNpemUpCiAgICAgewog
ICAgICAgICBtX2RlY29kaW5nU2l6ZU9ubHkgPSBvbmx5U2l6ZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFn
ZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
ZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCmluZGV4IGJlY2Y2NDUwMjc3ZWViNzRiMDlk
ZTUyZWUxODJmZjZlMTFlZDI3NjIuLjIwNDczZjBlZWViYjU2YzcxMzE0ZjY1NTZiZGEwOTAzMzQ5
MDc0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAK
QEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIEpQRUcyMDAwSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9v
bCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgfQogCiAgICAgc3RydWN0IFJl
YWRlciB7Ci0gICAgICAgIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGE7CisgICAgICAg
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhOwogICAgICAgICBzaXpl
X3Qgb2Zmc2V0OwogICAgIH0gcmVhZGVyID0geyAqbV9kYXRhLCAwIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0lt
YWdlRGVjb2Rlci5jcHAKaW5kZXggYzEyYzQ1OWE1YTNlNWIzNTFjNWJjYzYyYmYwMGI4YTI4MWJk
NWJhMy4uNGNiZDMyM2Q5YTc1MDI2ZWY4NjU4ZjM4MTZkZDczOGQzN2NhOGVkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5n
L1BOR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgICAg
IG1fcmVhZE9mZnNldCA9IDA7CiAgICAgfQogCi0gICAgYm9vbCBkZWNvZGUoY29uc3QgU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBzaXplT25seSwgdW5zaWduZWQgaGFsdEF0
RnJhbWUpCisgICAgYm9vbCBkZWNvZGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQmIGRhdGEsIGJvb2wgc2l6ZU9ubHksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKQogICAg
IHsKICAgICAgICAgbV9kZWNvZGluZ1NpemVPbmx5ID0gc2l6ZU9ubHk7CiAgICAgICAgIFBOR0lt
YWdlRGVjb2RlciogZGVjb2RlciA9IHN0YXRpY19jYXN0PFBOR0ltYWdlRGVjb2Rlcio+KHBuZ19n
ZXRfcHJvZ3Jlc3NpdmVfcHRyKG1fcG5nKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNw
cAppbmRleCAwMmYxYjA5ZGJjNzY1MTYwMWY5MjJkZGUyOWY4MDVhNjU4NzFlMmQyLi5iMWJlYzU1
ZTc4YzQzNDgwMWMyNTRhY2UwZGY1OTkzMWEzNmI3NGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdl
RGVjb2Rlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgV0VCUEltYWdlRGVjb2Rlcjo6V0VCUEltYWdl
RGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGUKIAog
V0VCUEltYWdlRGVjb2Rlcjo6fldFQlBJbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQg
V0VCUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQordm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgV0VCUEltYWdlRGVj
b2Rlcjo6ZGVjb2RlKHNpemVfdCBmcmFtZUluZGV4LCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAg
ICAvLyBUaGlzIGNhbiBiZSBleGVjdXRlZCBib3RoIGluIHRoZSBtYWluIHRocmVhZCAod2hlbiBu
b3QgdXNpbmcgYXN5bmMgZGVjb2RpbmcpIG9yIGluIHRoZSBkZWNvZGluZyB0aHJlYWQuCiAgICAg
Ly8gV2hlbiBleGVjdXRlZCBpbiB0aGUgZGVjb2RpbmcgdGhyZWFkLCBhIGNhbGwgdG8gc2V0RGF0
YSgpIGZyb20gdGhlIG1haW4gdGhyZWFkIG1heSBjaGFuZ2UgdGhlIGRhdGEKICAgICAvLyB0aGUg
V2ViUERlbXV4ZXIgaXMgdXNpbmcsIGxlYXZpbmcgaXQgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRl
LCBzbyB3ZSBuZWVkIHRvIHByb3RlY3QgdGhlIGRhdGEuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+IHByb3RlY3RlZERhdGEobV9kYXRhKTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHByb3RlY3RlZERhdGEobV9kYXRhKTsKICAg
ICBXZWJQRGF0YSBpbnB1dERhdGEgPSB7IHByb3RlY3RlZERhdGEtPmRhdGEoKSwgcHJvdGVjdGVk
RGF0YS0+c2l6ZSgpIH07CiAgICAgV2ViUERlbXV4U3RhdGUgZGVtdXhlclN0YXRlOwogICAgIFdl
YlBEZW11eGVyKiBkZW11eGVyID0gV2ViUERlbXV4UGFydGlhbCgmaW5wdXREYXRhLCAmZGVtdXhl
clN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKaW5kZXggYWYzNjVlOWNmOWM3Y2U5
NTM4YjY0YmE3ODliZjAxN2Q0OGY2ZWRlMS4uZGQyOGJjODhkZjVjMGZhM2MxNTczNzg2OWIyNjA5
NzNhYWEwZDIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKQEAgLTQ3LDcgKzQ3LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgfldFQlBJbWFnZURlY29kZXIoKTsKIAogICAgIFN0cmlu
ZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJ3ZWJwIl9zOyB9
Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOworICAgIHZvaWQg
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCkgZmluYWw7CiAgICAgU2NhbGFi
bGVJbWFnZURlY29kZXJGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgb3Zl
cnJpZGU7CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9m
cmFtZUNvdW50OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFz
dGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9T
Lm1tCmluZGV4IDkwOWU4ZTc2OGFkYjY4YmFiMjg0NDVkMjgyNzM2MGEzZjNmYTIyYzMuLmIyMzc3
ZmUzNDExZDJhYzQwMTUxM2JmMDlhZThjY2FlNzg2YmQ4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC0yMzYsMTQgKzIzNiwxNCBAQCBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogCiAjaWYgIVBMQVRGT1JNKE1BQ0NBVEFM
WVNUKQogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICop
a1VUVHlwZUZsYXRSVEZEXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlRmxh
dFJURkQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQoaXRlbUluZGV4LCBrVVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRl
eHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAg
ICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFs
bHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRSVEZEKCpidWZmZXIpID8g
UmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiAg
ICAgfQogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcg
KilrVVRUeXBlUlRGXSkgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBz
dHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlUlRGLCBt
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0
ZW1JbmRleCwga1VUVHlwZVJURiwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAg
ICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVy
biBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAg
cmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZFJURigqYnVmZmVyKSA/IFJlYWRlclJlc3VsdDo6
UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwpAQCAtMjUxLDcgKzI1MSw3
IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAjZW5kaWYgLy8gIVBMQVRG
T1JNKE1BQ0NBVEFMWVNUKQogCiAgICAgaWYgKFtzdXBwb3J0ZWRJbWFnZVR5cGVzKCkgY29udGFp
bnNPYmplY3Q6dHlwZV0pIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
c3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwgdHlwZSwgbV9wYXN0
ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5k
ZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2No
YW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVz
dWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiBidWZm
ZXIgJiYgcmVhZGVyLnJlYWRJbWFnZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgdHlwZSwgaXRl
bUluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBl
IDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDE2N2NlZjAyZDc4
ZDc5NGRlYWE4ZTVkZGFmNGRkNjZjM2QyY2NhNDUuLjE2YjNkNWQ0NDE1ZDI1ODUxNWY2NjBhODZh
YzZjZWZiZGNkYjY0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtMzM4LDcgKzMzOCw3IEBAIGludDY0X3QgUGxh
dGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpCiAgICAgcmV0
dXJuIDA7CiB9CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBl
KFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYpCitpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6c2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5n
JikKIHsKICAgICByZXR1cm4gMDsKIH0KQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIFBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiAK
ICAgICBBU1NFUlQoY29udGVudC5jbGllbnRUeXBlcy5zaXplKCkgPT0gY29udGVudC5jbGllbnRE
YXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBjb250ZW50LmNsaWVu
dFR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1Rv
UmVnaXN0ZXIgYWRkRGF0YTpjb250ZW50LmNsaWVudERhdGFbaV0tPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpIGZvclR5cGU6Y29udGVudC5jbGllbnRUeXBlc1tpXV07CisgICAgICAgIFtyZXByZXNlbnRh
dGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6Y29udGVudC5jbGllbnREYXRhW2ldLT5tYWtlQ29udGln
dW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOmNvbnRlbnQuY2xpZW50VHlwZXNb
aV1dOwogCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkgewogICAgICAg
ICBhdXRvIHdlYkFyY2hpdmVEYXRhID0gY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LT5j
cmVhdGVOU0RhdGEoKTsKQEAgLTQ3OSw3ICs0NzksNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoY29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3Ry
aW5nRm9ybWF0KSB7Ci0gICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRT
dHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczpbTlNT
ZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNvbnRl
bnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZXJy
b3I6bnVsbHB0cl0pCisgICAgICAgIGlmIChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRT
dHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczpbTlNT
ZXQgc2V0V2l0aE9iamVjdDpOU0F0dHJpYnV0ZWRTdHJpbmcuY2xhc3NdIGZyb21EYXRhOmNvbnRl
bnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCkuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pCiAgICAgICAgICAgICBbcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciBhZGRSZXByZXNlbnRpbmdPYmplY3Q6YXR0cmlidXRlZFN0cmluZ107CiAg
ICAgfQogCkBAIC01MDEsNyArNTAxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAKICAgICBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBjdXN0b21EYXRhOwogICAgIGN1c3RvbURh
dGEuc2V0T3JpZ2luKGNvbnRlbnQuY29udGVudE9yaWdpbik7Ci0gICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlw
ZSgpKV07CisgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpjdXN0b21EYXRh
LmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5n
ZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV07CiAKICAg
ICByZWdpc3Rlckl0ZW1Ub1Bhc3RlYm9hcmQocmVwcmVzZW50YXRpb25zVG9SZWdpc3Rlci5nZXQo
KSwgbV9wYXN0ZWJvYXJkLmdldCgpKTsKIH0KQEAgLTUxNCwxNCArNTE0LDE0IEBAIHZvaWQgUGxh
dGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJ
bWFnZSkKICAgICBhdXRvJiBkYXRhID0gcGFzdGVib2FyZEltYWdlLmNsaWVudERhdGE7CiAgICAg
QVNTRVJUKHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDAsIHNpemUgPSB0eXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXByZXNl
bnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6ZGF0YVtpXS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
Zm9yVHlwZTp0eXBlc1tpXV07CisgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFk
ZERhdGE6ZGF0YVtpXS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9y
VHlwZTp0eXBlc1tpXV07CiAKICAgICBpZiAocGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSAm
JiAhcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAg
IGF1dG8gdXRpT3JNSU1FVHlwZSA9IHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlOwog
ICAgICAgICBpZiAoIWlzRGVjbGFyZWRVVEkodXRpT3JNSU1FVHlwZSkpCiAgICAgICAgICAgICB1
dGlPck1JTUVUeXBlID0gVVRJRnJvbU1JTUVUeXBlKHV0aU9yTUlNRVR5cGUpOwogCi0gICAgICAg
IGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNE
YXRhKCk7CisgICAgICAgIGF1dG8gaW1hZ2VEYXRhID0gcGFzdGVib2FyZEltYWdlLnJlc291cmNl
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIFtyZXByZXNl
bnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6aW1hZ2VEYXRhLmdldCgpIGZvclR5cGU6KE5TU3Ry
aW5nICopdXRpT3JNSU1FVHlwZV07CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVy
IHNldFByZWZlcnJlZFByZXNlbnRhdGlvblNpemU6cGFzdGVib2FyZEltYWdlLmltYWdlU2l6ZV07
CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIHNldFN1Z2dlc3RlZE5hbWU6cGFz
dGVib2FyZEltYWdlLnN1Z2dlc3RlZE5hbWVdOwpAQCAtNjM1LDcgKzYzNSw3IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGNyZWF0ZUl0ZW1Q
cm92aWRlclJlZ2lzdHJhCiAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0UHJlZmVy
cmVkUHJlc2VudGF0aW9uU3R5bGU6V2ViUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVJbmxpbmVd
OwogCiAgICAgaWYgKGRhdGEuaGFzU2FtZU9yaWdpbkN1c3RvbURhdGEoKSB8fCAhZGF0YS5vcmln
aW4oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc2VyaWFsaXplZFNoYXJlZEJ1ZmZl
ciA9IGRhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCktPmNyZWF0ZU5TRGF0YSgpKSB7CisgICAgICAg
IGlmIChhdXRvIHNlcmlhbGl6ZWRTaGFyZWRCdWZmZXIgPSBkYXRhLmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkgewogICAgICAgICAgICAgLy8g
V2Ugc3Rhc2ggdGhlIGxpc3Qgb2Ygc3VwcGxpZWQgcGFzdGVib2FyZCB0eXBlcyBpbiB0ZWFtRGF0
YSBoZXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggZHJhZyBhbmQgZHJvcC4KICAgICAgICAgICAg
IC8vIFNpbmNlIHRoZSBjb250ZW50cyBvZiBpdGVtIHByb3ZpZGVycyBjYW5ub3QgYmUgbG9hZGVk
IHByaW9yIHRvIGRyb3AsIGJ1dCB0aGUgcGFzdGVib2FyZCB0eXBlcyBhcmUKICAgICAgICAgICAg
IC8vIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGN1c3RvbSBkYXRhIGJsb2IgYW5kIHdlIG5lZWQgdG8g
dmVuZCB0aGVtIHRvIHRoZSBwYWdlIHdoZW4gZmlyaW5nIGBkcmFnb3ZlcmAKQEAgLTY3Miw4ICs2
NzIsOCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNo
YXJlZEJ1ZmZlcj4+KHZhbHVlKTsKLSAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIg
YWRkRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICop
Y29jb2FUeXBlXTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKKyAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgYWRkRGF0YTpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKICAgICB9KTsKIAogICAgIHJldHVybiBy
ZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQppbmRleCA1NDQ2NTNjNDQwM2QyNjA0MGE1NWQy
M2U5MzY5MWJmZWRjYzkyYjQyLi5iZmUzNmFiZDk3NDNhNmJhNDVlNDNjMGU4YjdkOWFlMWFlOTA2
ZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZl
cnRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZl
cnRlcklPUy5tbQpAQCAtODIsNyArODIsNyBAQCBAZW5kCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciYgcHJvdmlkZXIpCi0gICAgOiBt
X3ByZXZpZXdEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgOiBtX3ByZXZpZXdE
YXRhIHsgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQogICAgICwgbV9vcmlnaW5h
bFJlc3BvbnNlIHsgcmVzcG9uc2UgfQogICAgICwgbV9wcm92aWRlciB7IHByb3ZpZGVyIH0KICAg
ICAsIG1fcGxhdGZvcm1EZWxlZ2F0ZSB7IGFkb3B0TlMoW1tXZWJQcmV2aWV3Q29udmVydGVyRGVs
ZWdhdGUgYWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6KnRoaXNdKSB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDY3N2Y4Y2FkYWI1OTEyM2UxYjYy
ZDFiYWMyZDE5MDhiZjY3NmEyZjkuLjBkMjU0OThiODZiZWYxODVkMzc2OWQ1YTViYzBiYzJmNzMx
YzcwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJk
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
CkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBDb2xvciYg
Y29sb3IpCiAKIHN0YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBlcihjb25zdCBQYXN0ZWJv
YXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKLSAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5T
KFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3Rl
Ym9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgYXV0
byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmls
ZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91
cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZp
bGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHBhc3RlYm9hcmRJbWFnZS51cmwu
dXJsLCBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSldOwogICAgIHJldHVybiB3cmFw
cGVyLmF1dG9yZWxlYXNlKCk7CiB9CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xp
Y3kgYWxsb3cKICAgICAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVJURkRQ
YXN0ZWJvYXJkVHlwZSgpKSkpIHsKICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IHJlYWRCdWZmZXJB
dFByZWZlcnJlZEl0ZW1JbmRleChsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgaXRlbUluZGV4
LCBzdHJhdGVneSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKSkgewotICAgICAgICAgICAg
aWYgKGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoUlRGRDpkYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBkb2N1bWVudEF0
dHJpYnV0ZXM6bmlsXSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGF0dHJpYnV0ZWRTdHJpbmcg
PSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFJURkQ6ZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZG9jdW1lbnRBdHRyaWJ1dGVz
Om5pbF0pKSB7CiAgICAgICAgICAgICAgICAgdGV4dC50ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcg
c3RyaW5nXTsKICAgICAgICAgICAgICAgICB0ZXh0LmlzVVJMID0gZmFsc2U7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRXcml0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZFdyaXRlci5tbQppbmRleCAzNTNkMDA2YjkwY2JjZTYwOWU2ZGZkMzdjMjgwODEzMWYyMTRiOGRh
Li44OGQwNDAyNTg0MzcwMmU0YWE0ZjVhOWE1NTZiODgxYzZlNDBjMmZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZFdyaXRlci5tbQpAQCAtMTI4LDExICsx
MjgsMTEgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBb
cGFzdGVib2FyZEl0ZW0gc2V0U3RyaW5nOndlYkNvbnRlbnQtPmRhdGFJblN0cmluZ0Zvcm1hdCBm
b3JUeXBlOk5TUGFzdGVib2FyZFR5cGVTdHJpbmddOwogCiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCB3ZWJDb250ZW50LT5jbGllbnRUeXBlcy5zaXplKCk7ICsraSkKLSAgICAgICAg
ICAgIFtwYXN0ZWJvYXJkSXRlbSBzZXREYXRhOndlYkNvbnRlbnQtPmNsaWVudERhdGFbaV0tPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6dG9VVElVbmxlc3NBbHJlYWR5VVRJKHdlYkNvbnRl
bnQtPmNsaWVudFR5cGVzW2ldKS5nZXQoKV07CisgICAgICAgICAgICBbcGFzdGVib2FyZEl0ZW0g
c2V0RGF0YTp3ZWJDb250ZW50LT5jbGllbnREYXRhW2ldLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSSh3ZWJDb250ZW50
LT5jbGllbnRUeXBlc1tpXSkuZ2V0KCldOwogCiAgICAgICAgIFBhc3RlYm9hcmRDdXN0b21EYXRh
IGN1c3RvbURhdGE7CiAgICAgICAgIGN1c3RvbURhdGEuc2V0T3JpZ2luKHdlYkNvbnRlbnQtPmNv
bnRlbnRPcmlnaW4pOwotICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRh
LmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOnRvVVRJ
VW5sZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgp
KSkuZ2V0KCldOworICAgICAgICBbcGFzdGVib2FyZEl0ZW0gc2V0RGF0YTpjdXN0b21EYXRhLmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBmb3JUeXBlOnRvVVRJVW5sZXNzQWxyZWFkeVVUSShTdHJpbmcoUGFzdGVib2FyZEN1c3RvbURh
dGE6OmNvY29hVHlwZSgpKSkuZ2V0KCldOwogICAgIH0KIAogICAgIHJldHVybiBwYXN0ZWJvYXJk
SXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBh
c3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0
ZWJvYXJkTWFjLm1tCmluZGV4IGQ5YjdkMjQ4MDM4YzJkYjhhYWIwOTJjYjkxZmZhNTZmMmNiNGNl
NzMuLmMzYjRkMmQ5NjIxNzQ3MWM3MzVlMjRmZTdhNWY5ZDkyMzdkZjQ3MDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpA
QCAtMjYzLDggKzI2Myw4IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25z
dCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICAgICAgaWYgKHBsYXRmb3JtVHlwZS5p
c0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAg
ICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+
KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIp
KSB7CisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnBs
YXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBp
ZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAg
ICAgICAgICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsK
QEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29u
c3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgfSk7CiAKICAgICBpZiAoc2hvdWxk
V3JpdGVDdXN0b21EYXRhKSB7Ci0gICAgICAgIGlmIChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRh
ID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+Y3JlYXRlTlNEYXRhKCkpCisgICAgICAgIGlm
IChhdXRvIHNlcmlhbGl6ZWRDdXN0b21EYXRhID0gZGF0YS5jcmVhdGVTaGFyZWRCdWZmZXIoKS0+
bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICBbbV9wYXN0ZWJv
YXJkIHNldERhdGE6c2VyaWFsaXplZEN1c3RvbURhdGEuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9h
cmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwogICAgIH0KIApAQCAtMzQxLDEyICszNDEsMTIg
QEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMpCiAgICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQgZGVjbGFyZVR5
cGVzOmNyZWF0ZU5TQXJyYXkocGFzdGVib2FyZFR5cGVzKS5nZXQoKSBvd25lcjpuaWxdOwogfQog
Ci1pbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZm
ZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK2ludDY0X3QgUGxhdGZv
cm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAoIWNhbldyaXRl
UGFzdGVib2FyZFR5cGUocGFzdGVib2FyZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZl
ci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07Cisg
ICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBl
OnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7CkBAIC01MDQsOCArNTA0LDggQEAgc3RhdGlj
IFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQ
YXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAgaWYgKCFwbGF0Zm9ybVR5cGUpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJl
ZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZv
cm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3Jl
YXRlTlNEYXRhKCkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7CisgICAgICAgICAgICBpZiAo
YXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
KHN0cmluZ09yQnVmZmVyKS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAg
ICAgICAgICAgICAgW2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0
Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3Ry
aW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpn
ZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKaW5kZXgg
NjgxM2Q1ZGE3ZGNiMGZjMjU5ZjFiZDFlZDBhNTRjMWExYTlmZDljZi4uNzk2NTU0ZjRjOTc2NDUx
NDAxZTFhMTIzNzQ2ODcwNDBiMjRiMWNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaApAQCAt
NDMsNyArNDMsNyBAQCBjbGFzcyBNZWRpYVNhbXBsZTsKIGNsYXNzIE1lZGlhU3RyZWFtUHJpdmF0
ZTsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOwogY2xhc3MgUGxhdGZvcm1BdWRpb0Rh
dGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
CiBzdHJ1Y3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOwogCkBAIC01OSw3ICs1OSw3IEBA
IHB1YmxpYzoKICAgICB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBdWRpb1ZpZGVvU2Vs
ZWN0ZWRUcmFja3Mgc2VsZWN0VHJhY2tzKE1lZGlhU3RyZWFtUHJpdmF0ZSYpOwogCi0gICAgdXNp
bmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+OworICAgIHVzaW5n
IEZldGNoRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT47CiAg
ICAgdmlydHVhbCB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmKSA9IDA7CiAgICAg
dmlydHVhbCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgPSAwOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXJQcml2YXRlTW9jay5jcHAKaW5kZXggYzI1ZGY5MTU3NGE2NWJjNDFiZGI3MDY3OGRj
NDc3MjQ4MzZkZDE0NS4uNDk4ZDRlZTEzNDBjNGI5NDAwMWI2MGMzNDQ3OWI3ZjcyZDVjOGU2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJpdmF0ZU1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6Z2VuZXJhdGVNb2NrQ291bnRlclN0cmluZygp
CiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpmZXRjaERhdGEoRmV0Y2hEYXRhQ2Fs
bGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB7
CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2J1ZmZlckxvY2sgfTsKICAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHZhbHVlIHsgbV9idWZmZXIuY2hhcmFjdGVyczgoKSwgbV9idWZmZXIubGVuZ3Ro
KCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLmgKaW5kZXggMjExZjc1ZWU3M2FmNjkxOWU3ZjRjOTk1OGUwY2QzNDgyNTMyZDA5Zi4uOWMy
Yzc5N2I4MTk1MTJkOGZkNTc5MDE1ZGMzYjZlNDA1ZTNiYzYwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTcwLDcgKzcwLDcg
QEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIoTWVkaWFTYW1wbGUm
KTsKICAgICB2b2lkIGFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9E
YXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIGNvbnN0IFdURjo6TWVkaWFUaW1l
Jiwgc2l6ZV90KTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKLSAgICB2b2lkIGZldGNoRGF0
YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+
JiYpOworICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYpOwogCiAgICAgdm9pZCBwYXVzZSgp
OwogICAgIHZvaWQgcmVzdW1lKCk7CkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgZmluaXNoZWRGbHVzaGluZ1NhbXBsZXMoKTsKICAgICB2b2lkIGNvbXBsZXRlRmV0Y2hE
YXRhKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKIAogICAgIGJvb2wgbV9oYXNBdWRp
byB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1ZpZGVvIHsgZmFsc2UgfTsKQEAgLTExNyw4ICsx
MTcsOCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxBVkFzc2V0V3JpdGVyPiBtX3dyaXRlcjsK
IAogICAgIExvY2sgbV9kYXRhTG9jazsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGEg
V1RGX0dVQVJERURfQllfTE9DSyhtX2RhdGFMb2NrKTsKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlv
bkhhbmRsZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGEgV1RGX0dVQVJERURfQllf
TE9DSyhtX2RhdGFMb2NrKTsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5k
bGVyOwogCiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fYXVkaW9Gb3Jt
YXREZXNjcmlwdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yPiBtX2F1ZGlvQ29tcHJlc3NvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCA4YzFmN2MwZTUzMTNiNmI4NTZjZDNj
ZGY1ZTgzODRmMzZiN2I1M2Y1Li44NDg0MTAwZWFjNWUxMTVlOWIwY2YwMTIwYmFiZjc4ZmIxYTEy
NzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLm1tCkBAIC0xMzcsMTAgKzEzNyw4IEBAIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Ojp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIoKQogICAgICAgICBtX3dyaXRlci5jbGVhcigp
OwogICAgIH0KIAotICAgIC8vIEF0IHRoaXMgcG9pbnRlciwgd2Ugc2hvdWxkIG5vIGxvbmdlciBi
ZSB3cml0aW5nIGFueSBkYXRhLCBzbyBpdCBzaG91bGQgYmUgc2FmZSB0byBjbG9zZSBhbmQgbnVs
bGlmeSBtX2RhdGEgd2l0aG91dCBsb2NraW5nLgogICAgIGlmIChtX3dyaXRlckRlbGVnYXRlKQog
ICAgICAgICBbbV93cml0ZXJEZWxlZ2F0ZSBjbG9zZV07Ci0gICAgbV9kYXRhID0gbnVsbHB0cjsK
IAogICAgIGlmIChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2ZldGNoRGF0YUNv
bXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7
CkBAIC00OTUsNyArNDkzLDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3Rv
cFJlY29yZGluZygpCiAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cik7CiAKQEAgLTUzNywxOCArNTM1LDEzIEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmNvbXBsZXRlRmV0Y2hEYXRhKCkKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgTG9j
a2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBpZiAoIW1fZGF0YSkgewotICAgICAgICBt
X2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2RhdGEuYXBw
ZW5kKGRhdGEsIHNpemUpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSgpCiB7CiAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fZGF0YUxvY2sgfTsKLSAgICBhdXRvIGRhdGEgPSBXVEZNb3ZlKG1fZGF0YSk7Ci0g
ICAgcmV0dXJuIGRhdGE7CisgICAgcmV0dXJuIG1fZGF0YS50YWtlKCk7CiB9CiAKIHZvaWQgTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnBhdXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaAppbmRleCBhOWIyOWQ1OWU5YWEzYjQ2NTU0
MTViZDhiZWYwOTg0YzU0NGI3M2YwLi5jZGVlNjAzNTIzY2Q2Njk0NWY0MjhmNjk0Nzg5NjBmNmZk
NzRjNzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFV
UkxEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJM
RGVjb2Rlci5oCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNw
YWNlIERhdGFVUkxEZWNvZGVyIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IGZhZmRmZTg3YzgzN2U2MTU3ZDJmMTNlOWE3Y2Ew
MDk2OWQ1MGIxYzcuLjRiZWJjYjUwOThkMTVjMjk2NmVkOGM3ZWUxMzZhZTNhMmFlNGEyMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgK
QEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlOwogY2xhc3MgVGltZXI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNs
aWVudC5jcHAKaW5kZXggNmU2NWJiODkxOGM2ZWMxMmY4YWVhODZlYmU3MDQ4ODRlMmU3MzY2Zi4u
YmE4ZmQ0ZmY0ZjFlNDFjOWFkNGZhNzRhNDJiZTRlMmJkMTFhYTg0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5j
cHAKQEAgLTM2LDkgKzM2LDkgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OlJlc291cmNlSGFuZGxl
Q2xpZW50KCkgPSBkZWZhdWx0OwogCiBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFu
ZGxlQ2xpZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRS
ZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50
OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRp
ZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CisgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUNsaWVudC5oCmluZGV4IGI2MzM3ZDU2Y2U4Y2Q5YmVmZjlkZmJlMTEzNjYyYmM3
NzU2YjY1MzcuLmM0ZjA1NDg1ZjI4NzBiMTE2ZGE3Yzc2MGQzYzBmY2U5NmVjMmI0YTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGVudW0gQ2FjaGVTdG9yYWdlUG9saWN5IHsKICAgICBTdG9yYWdlQWxsb3dlZCwKQEAgLTY2
LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShSZXNvdXJj
ZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25n
IGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGlu
dCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIHsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBSZXNvdXJjZUVycm9yJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXgg
MWZmMDY1MjE2ZmE2ODA4ODE5MzcxNGJjZjJiY2RhZjY5NmYwMjQwNi4uMDA4ZTIyNmZmOTE5MDA0
YjQ1MTQ4YTI0NzI2MTE2MTUwOTg5NjI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5t
bQpAQCAtNDEsOCArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgUmFuZ2VSZXNw
b25zZUdlbmVyYXRvcjo6RGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwogICAgIERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYgcmVzb3VyY2UpCi0gICAgICAgIDogYnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCkpCi0gICAgICAgICwgb3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKKyAgICAgICAgOiBv
cmlnaW5hbFJlc3BvbnNlKHJlc3BvbnNlKQogICAgICAgICAsIHJlc291cmNlKCZyZXNvdXJjZSkg
eyB9CiAKICAgICBzdHJ1Y3QgVGFza0RhdGEgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8VGFza0Rh
dGE+IHsKQEAgLTU1LDkgKzU0LDkgQEAgc3RydWN0IFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OkRh
dGEgewogICAgICAgICBzaXplX3QgbmV4dEJ5dGVUb0dpdmVCdWZmZXJJbmRleCB7IDAgfTsKICAg
ICAgICAgZW51bSBjbGFzcyBSZXNwb25zZVN0YXRlIDogdWludDhfdCB7IE5vdFN5bnRoZXNpemVk
WWV0LCBXYWl0aW5nRm9yU2Vzc2lvbiwgU2Vzc2lvbkNhbGxlZENvbXBsZXRpb25IYW5kbGVyIH0g
cmVzcG9uc2VTdGF0ZSB7IFJlc3BvbnNlU3RhdGU6Ok5vdFN5bnRoZXNpemVkWWV0IH07CiAgICAg
fTsKLSAgICAKKwogICAgIEhhc2hNYXA8UmV0YWluUHRyPFdlYkNvcmVOU1VSTFNlc3Npb25EYXRh
VGFzaz4sIHN0ZDo6dW5pcXVlX3B0cjxUYXNrRGF0YT4+IHRhc2tEYXRhOwotICAgIFJlZjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBS
ZXNvdXJjZVJlc3BvbnNlIG9yaWdpbmFsUmVzcG9uc2U7CiAgICAgZW51bSBjbGFzcyBTdWNjZXNz
ZnVsbHlGaW5pc2hlZExvYWRpbmcgOiBib29sIHsgTm8sIFllcyB9IHN1Y2Nlc3NmdWxseUZpbmlz
aGVkTG9hZGluZyB7IFN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6Tm8gfTsKICAgICBSZWZQ
dHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXNvdXJjZTsKQEAgLTEwNiwyMiArMTA1LDIyIEBA
IHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6cmVtb3ZlVGFzayhXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2sgKnRhc2spCiB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNw
b25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFU
YXNrICp0YXNrLCBjb25zdCBQYXJzZWRSZXF1ZXN0UmFuZ2UmIHJhbmdlLCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBjb25zdCBEYXRhJiBkYXRhKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlcjsK
LSAgICBhdXRvIGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKTsKIAogICAgIC8vIEZJWE1FOiBX
ZSBvdWdodCB0byBiZSBhYmxlIHRvIGp1c3QgbWFrZSBhIHJhbmdlIHdpdGggYSAqIGFmdGVyIHRo
ZSAvIGJ1dCBBVkZvdW5kYXRpb24gZG9lc24ndCBhY2NlcHQgc3VjaCByYW5nZXMuCiAgICAgLy8g
SW5zdGVhZCwgd2UganVzdCB3YWl0IHVudGlsIHRoZSBsb2FkIGhhcyBjb21wbGV0ZWQsIGF0IHdo
aWNoIHRpbWUgd2Ugd2lsbCBrbm93IHRoZSBjb250ZW50IGxlbmd0aCBmcm9tIHRoZSBidWZmZXIg
bGVuZ3RoLgogICAgIGlmICghZXhwZWN0ZWRDb250ZW50TGVuZ3RoKQogICAgICAgICByZXR1cm47
CiAKKyAgICBhdXRvIGJ1ZmZlclNpemUgPSBkYXRhLmJ1ZmZlci5zaXplKCk7CiAgICAgaWYgKGJ1
ZmZlclNpemUgPCByYW5nZS5iZWdpbikKICAgICAgICAgcmV0dXJuOwotICAgIAorCisgICAgYXV0
byBidWZmZXIgPSBkYXRhLmJ1ZmZlci5nZXQoKTsKICAgICBhdXRvKiB0YXNrRGF0YSA9IGRhdGEu
dGFza0RhdGEuZ2V0KHRhc2spOwogICAgIGlmICghdGFza0RhdGEpCiAgICAgICAgIHJldHVybjsK
LSAgICAKLSAgICBhdXRvIGdpdmVCeXRlc1RvVGFzayA9IFt0YXNrID0gcmV0YWluUHRyKHRhc2sp
LCBidWZmZXIsIHRhc2tEYXRhID0gV2Vha1B0ciB7ICp0YXNrRGF0YSB9LCBnZW5lcmF0b3IgPSBX
ZWFrUHRyIHsgKnRoaXMgfV0geworCisgICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9
IHJldGFpblB0cih0YXNrKSwgYnVmZmVyLCBidWZmZXJTaXplLCB0YXNrRGF0YSA9IFdlYWtQdHIg
eyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKICAgICAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKFt0YXNrIHN0YXRlXSAhPSBOU1VS
TFNlc3Npb25UYXNrU3RhdGVSdW5uaW5nKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTMwLDcg
KzEyOSw3IEBAIHZvaWQgUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6Z2l2ZVJlc3BvbnNlVG9UYXNr
SWZCeXRlc0luUmFuZ2VSZWNlaXZlZChXZWJDb3JlTlNVCiAgICAgICAgIGF1dG8mIHJhbmdlID0g
dGFza0RhdGEtPnJhbmdlOwogICAgICAgICBhdXRvJiBieXRlSW5kZXggPSB0YXNrRGF0YS0+bmV4
dEJ5dGVUb0dpdmVCdWZmZXJJbmRleDsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAg
ICAgIGlmIChieXRlSW5kZXggPj0gYnVmZmVyLT5zaXplKCkpCisgICAgICAgICAgICBpZiAoYnl0
ZUluZGV4ID49IGJ1ZmZlclNpemUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBhdXRvIGJ1ZmZlclZpZXcgPSBidWZmZXItPmdldFNvbWVEYXRhKGJ5dGVJbmRleCk7CiAgICAg
ICAgICAgICBpZiAoIWJ1ZmZlclZpZXcuc2l6ZSgpIHx8IGJ5dGVJbmRleCA+IHJhbmdlLmVuZCkK
QEAgLTE3NSw3ICsxNzQsNyBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gUmFuZ2VSZXNwb25zZUdl
bmVyYXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEoY29ucwogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKGRhdGEuc3VjY2Vzc2Z1bGx5RmluaXNoZWRMb2Fk
aW5nID09IERhdGE6OlN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9hZGluZzo6WWVzKQotICAgICAgICBy
ZXR1cm4gZGF0YS5idWZmZXItPnNpemUoKTsKKyAgICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyLnNp
emUoKTsKIAogICAgIC8vIEZJWE1FOiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXhwZWN0ZWRDb250
ZW50TGVuZ3RoKCkgc2hvdWxkIHJldHVybiBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5zdGVhZCBv
ZiB1cyBkb2luZyB0aGlzIGNoZWNrIGhlcmUuCiAgICAgYXV0byBleHBlY3RlZENvbnRlbnRMZW5n
dGggPSBkYXRhLm9yaWdpbmFsUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CkBAIC0y
NDQsNyArMjQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKSBmaW5hbAorICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgZmluYWwK
ICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmICghbV9n
ZW5lcmF0b3IpCkBAIC0yNTIsNyArMjUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byogZGF0
YSA9IG1fZ2VuZXJhdG9yLT5tX21hcC5nZXQobV91cmxTdHJpbmcpOwogICAgICAgICBpZiAoIWRh
dGEpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRhdGEtPmJ1ZmZlci0+YXBwZW5kKFdU
Rk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZm
ZXIpKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NXaXRoRmluaXNo
ZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAppbmRleCA0MDQ4
ODVhZTYzNzZmY2U2ODA0MGQyYTA1YzAwYmVjNDdmZTE2YWE4Li5jZTRjMjU0NWNkZTBmMmY0NmFj
MzM4Zjk2YzQ5MDg4ZWI0NWQwOTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaApAQCAtNTAsNyAr
NTAsNyBAQCBjbGFzcyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFz
cyBTaGFyZWRCdWZmZXJEYXRhVmlldzsKIGNsYXNzIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFz
a0NsaWVudDsKIGVudW0gY2xhc3MgU2hvdWxkQ29udGludWVQb2xpY3lDaGVjayA6IGJvb2w7CkBA
IC0xNTgsNyArMTU4LDcgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJDb3JlTlNVUkxT
ZXNzaW9uIDogTlNPYmplY3QgewogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzZW50Qnl0ZXM6KHVuc2lnbmVkIGxvbmcg
bG9uZylieXRlc1NlbnQgdG90YWxCeXRlc1RvQmVTZW50Oih1bnNpZ25lZCBsb25nIGxvbmcpdG90
YWxCeXRlc1RvQmVTZW50OwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxh
dGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlc3BvbnNlOihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJilj
b21wbGV0aW9uSGFuZGxlcjsKIC0gKEJPT0wpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2U7Ci0tICh2b2lkKXJlc291cmNlOihu
dWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVk
RGF0YTooUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJilkYXRhOworLSAodm9pZClyZXNvdXJj
ZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNl
aXZlZERhdGE6KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKWRhdGE7CiAt
ICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2Uq
KXJlc291cmNlIHJlY2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKXJlc3BvbnNlIHJlcXVlc3Q6KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKXJlcXVlc3Qg
Y29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClyZXNvdXJjZToobnVs
bGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBhY2Nlc3NDb250
cm9sQ2hlY2tGYWlsZWRXaXRoRXJyb3I6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKWVy
cm9yOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJl
c291cmNlKilyZXNvdXJjZSBsb2FkRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJillcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlMDQwMTBhOTgx
MWI0YzlhZTE0OTQ5OTg3MDFjYTE1NDg5ZjU3MTZjLi44Yzg5ZDkzODY1NzkzM2ExZGEyOTAzMTk5
MTU4NGM0ZGIyZmFhOWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC02MDgsNyArNjA4
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBi
b29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJy
aWRlOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxT
aGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAg
ICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKQEAgLTY1Miw3ICs2NTIsNyBAQCBib29sIFdlYkNvcmVO
U1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1l
ZGlhUmVzb3VyYwogICAgIHJldHVybiBbbV90YXNrIHJlc291cmNlOiZyZXNvdXJjZSBzaG91bGRD
YWNoZVJlc3BvbnNlOnJlc3BvbnNlXTsKIH0KIAotdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0
YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRh
dGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJj
ZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIExvY2tlciBs
b2NrZXIgeyBtX3Rhc2tMb2NrIH07CiAgICAgaWYgKCFtX3Rhc2spCkBAIC05MTUsMTEgKzkxNSwx
MSBAQCAtIChCT09MKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNo
b3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFJlcwogICAgIHJldHVybiByZXNwb25zZS5odHRwSGVh
ZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRSYW5nZSkuaXNFbXB0eSgpOwogfQogCi0t
ICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVk
RGF0YTooUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJilkYXRhCistICh2b2lkKXJlc291cmNl
OihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpZGF0YQogewogICAgIEFTU0VSVF9VTlVTRUQo
cmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFtzZWxm
LnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBz
ZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gZGF0
YS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRP
ZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6ZSgpOwogICAgICAgICBpZDxOU1VSTFNlc3Npb25E
YXRhRGVsZWdhdGU+IGRhdGFEZWxlZ2F0ZSA9IChpZDxOU1VSTFNlc3Npb25EYXRhRGVsZWdhdGU+
KXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbi5kZWxlZ2F0ZTsKICAgICAgICAgaWYgKFtkYXRhRGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uOmRhdGFUYXNrOmRp
ZFJlY2VpdmVEYXRhOildKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAppbmRleCBjMzZlMWY4ODc2NDMwNDYwY2U3NTBhM2I4
YzY1OGM3MzRlY2IxNTA4Li4zNDk0NDU5MjU0YWM5M2ZjMTljYjEyMTUwYTYxYmMyYmNlZDAyZDZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERv
d25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bERvd25sb2FkLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJs
RGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVzcG9uc2UmJiBy
CiB9CiAKIAotdm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1
ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxEb3dubG9hZDo6Y3Vy
bERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCmluZGV4
IGEzYWEwY2Y1ZmNkMjk1NWJiN2IxNmIxMWExYTgxY2E3NGFlNjFjOGQuLmNkZTQ0NDU3NzVmNzQ0
MjMzMDUzMGI2NWIxMzU3YmE2YmZkOWJiODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJp
dmF0ZToKICAgICBSZWY8Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYpOwogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQg
bG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgY3Vy
bERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJs
UmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2
b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSBv
dmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVz
b3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0
SGFuZGxlLmNwcAppbmRleCBiYmRhM2ZiZGE3NTgzZDk5MTkzMWRmZTE2OWY3YjNhOTEzM2U2ZGEy
Li4wOTBkMDM5YmE0NWRlMTAyOGVkZjc2ODRjNmQ3ZDJmMjk2ZTNhMzRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBh
cnRIYW5kbGUuY3BwCkBAIC0xMTksMTIgKzExOSwxMiBAQCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpD
dXJsTXVsdGlwYXJ0SGFuZGxlKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmIGNsaWVudCwgY29u
cwogCiB9CiAKLXZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAo
bV9zdGF0ZSA9PSBTdGF0ZTo6RW5kKQogICAgICAgICByZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlz
IGNsb3NlZCBkb3duIHNvIGlnbm9yZSBldmVyeXRoaW5nLgogCi0gICAgbV9idWZmZXIuYXBwZW5k
KGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZm
ZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAogICAgIHdoaWxl
IChwcm9jZXNzQ29udGVudCgpKSB7IH0KIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxN
dWx0aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKCkKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6
RW5kKSB7CiAgICAgICAgIC8vIEl0IHNlZW1zIHdlIGFyZSBzdGlsbCBub3QgYXQgdGhlIGVuZCBv
ZiB0aGUgcHJvY2Vzc2luZy4KICAgICAgICAgLy8gUHVzaCBvdXQgdGhlIHJlbWFpbmluZyBkYXRh
LgotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgpLCBtX2J1ZmZlci5zaXplKCkpKTsKKyAgICAgICAg
bV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUobV9idWZmZXIpKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxNdWx0aXBhcnRIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKaW5kZXggNWMwOGJjYzVlYjNlNGJiY2MwMjliNDc2Nzg2
OGY0M2UyZjk1YzM0MS4uOWExYTFiYmQxOTM4YTE0ZjY5ZmNjZWUzZjBmODliOTdhNGEyMTg3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0
aXBhcnRIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybE11bHRpcGFydEhhbmRsZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudDsKIGNsYXNzIEN1cmxSZXNwb25z
ZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgQ3VybE11bHRpcGFydEhhbmRsZShDdXJs
TXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiwgY29uc3QgU3RyaW5nJik7CiAgICAgfkN1cmxNdWx0aXBh
cnRIYW5kbGUoKSB7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZSgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlw
YXJ0SGFuZGxlQ2xpZW50LmgKaW5kZXggZmQxM2ZkMzgxMzE0M2NiMjY1OWI4ZmQxZGIyNDQ0NzY1
ZTk4YTU4MC4uYzgxMzg4NmE4ZDVjNWZhNmMxMmQxNDEzMzE5MTAxYWYyNTAyYTJhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRI
YW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCkBAIC0yOCwxMiArMjgsMTIgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybFJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRs
ZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVIZWFkZXJGcm9t
TXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIH5DdXJsTXVsdGlwYXJ0SGFu
ZGxlQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBkMzViMGU4MzkxOTUxZDM4NjM0ZTk5MDkzYjY4
NjU2MjRkOTk3OTUxLi5kODJkZDNjMTBhYzY0NzEzNTk5MWZkN2FlNjY5N2U5ZDhlMzEzZTg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdC5jcHAKQEAgLTM5Niw3ICszOTYsNyBAQCBzaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2Vp
dmVIZWFkZXIoU3RyaW5nJiYgaGVhZGVyKQogCiAvLyBjYWxsZWQgd2l0aCBkYXRhIGFmdGVyIGFs
bCBoZWFkZXJzIGhhdmUgYmVlbiBwcm9jZXNzZWQgdmlhIGhlYWRlckNhbGxiYWNrCiAKLXNpemVf
dCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CitzaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoaXNDb21wbGV0ZWRPckNhbmNlbGxlZCgpKQog
ICAgICAgICByZXR1cm4gMDsKQEAgLTQ0NCw3ICs0NDQsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0Ojpk
aWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYgaGVhZGVy
cykKICAgICBpbnZva2VEaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIEFjdGlvbjo6Tm9uZSk7
CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRh
RnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAg
ICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzc3
LDcgKzc3Nyw3IEBAIGNvbnN0IFN0cmluZyYgQ3VybFJlcXVlc3Q6OmdldERvd25sb2FkZWRGaWxl
UGF0aCgpCiAgICAgcmV0dXJuIG1fZG93bmxvYWRGaWxlUGF0aDsKIH0KIAotdm9pZCBDdXJsUmVx
dWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5h
YmxlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgewogICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kb3dubG9hZE11dGV4IH07CkBAIC03OTAsNyArNzkwLDcg
QEAgdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgfQogCiAgICAgaWYgKG1fZG93bmxvYWRGaWxl
SGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAg
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9k
b3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZl
ci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbG9zZURvd25sb2FkRmlsZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5o
CmluZGV4IDZiZDhhNmJmYmEzNzUyY2VkZGRiYzUwMDllYWU4M2M0ZjBlZWQ2NDEuLjNjN2NkZDg4
M2ViNjJiZmU5MmNmMDQ0NWVkMjliZDI2ZWNlM2U5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCkBAIC00Miw3ICs0Miw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEN1cmxSZXF1ZXN0Q2xpZW50OwogY2xhc3MgTmV0
d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTeW5jaHJvbm91c0xvYWRl
ck1lc3NhZ2VRdWV1ZTsKIAogY2xhc3MgQ3VybFJlcXVlc3QgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8Q3VybFJlcXVlc3Q+LCBwdWJsaWMgQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQs
IHB1YmxpYyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50IHsKQEAgLTEyMiw5ICsxMjIsOSBAQCBw
cml2YXRlOgogICAgIENVUkwqIHNldHVwVHJhbnNmZXIoKSBvdmVycmlkZTsKICAgICBzaXplX3Qg
d2lsbFNlbmREYXRhKGNoYXIqLCBzaXplX3QsIHNpemVfdCk7CiAgICAgc2l6ZV90IGRpZFJlY2Vp
dmVIZWFkZXIoU3RyaW5nJiYpOwotICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVk
QnVmZmVyPiYmKTsKKyAgICBzaXplX3QgZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUhlYWRlckZyb21NdWx0aXBhcnQoY29u
c3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhRnJv
bU11bHRpcGFydChSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVRyYW5zZmVyKENVUkxjb2RlKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZENhbmNlbFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5hbGl6
ZVRyYW5zZmVyKCk7CkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICBOZXR3b3JrTG9h
ZE1ldHJpY3MgbmV0d29ya0xvYWRNZXRyaWNzKCk7CiAKICAgICAvLyBEb3dubG9hZAotICAgIHZv
aWQgd3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7
CisgICAgdm9pZCB3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBjbG9zZURvd25sb2FkRmlsZSgpOwogICAgIHZv
aWQgY2xlYW51cERvd25sb2FkRmlsZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCmluZGV4IDA4Yzg2Yzdk
NDY4NGJhNmY3OGQ2MTZiNjhkMDY5MDRjMzdhOTY2NzcuLjM0Nzk4MzJmNTc2ZDQxMjhhZmE1MWM4
MTQyNGNjZmQ3NDFkZjZhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIGNs
YXNzIEN1cmxSZXF1ZXN0OwogY2xhc3MgQ3VybFJlc3BvbnNlOwogY2xhc3MgTmV0d29ya0xvYWRN
ZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxSZXF1ZXN0Q2xpZW50IHsKIHB1
YmxpYzoKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGN1cmxE
aWRTZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVu
c2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0Jiwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkUmVjZWl2
ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtM
b2FkTWV0cmljcyYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9y
KEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgPSAwOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDgxOGQ1YTk1ZTNl
MTI0ZGMzYTcyZjc0M2U1Y2Q0NTNkNzE3ZTAxMGYuLjMwNWQ0ZTVjOWZjMjcwNzc1Nzg3YjBmOWE5
MTk3OWMwODg4OWE4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApA
QCAtMTQyLDE1ICsxNDIsMTYgQEAgdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3Vy
bERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3UKICAgICB9KTsKIH0K
IAotdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIo
Q3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRh
KG1faGFuZGxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwotICAgIGNsaWVudCgp
LT5kaWRSZWNlaXZlQnVmZmVyKCZtX2hhbmRsZSwgV1RGTW92ZShidWZmZXIpLCBidWZmZXItPnNp
emUoKSk7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91
cygpOworICAgIEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVEYXRhKG1f
aGFuZGxlLCBjb250aWd1b3VzQnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBj
bGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcigmbV9oYW5kbGUsIFdURk1vdmUoY29udGlndW91c0J1
ZmZlciksIGJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZTo6Y3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYg
bWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgKaW5kZXggNmQ1NTg2NDQ1
MmZkNDZlZTc4MDBlOTMxMjNiMTI4YmRjNjRjZTQ4Ny4uZGFmMGE1OWE0ZTU4NmQ3MTE0YWJiNGU1
ZWY5YzU0ZjZhOGJlZmM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgKQEAg
LTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJl
cXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcg
dG90YWxCeXRlc1RvQmVTZW50KSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9u
c2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgZmluYWw7Ci0gICAgdm9pZCBjdXJsRGlk
UmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwor
ICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJl
cXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkRmFp
bFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZv
JiYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggYmM0ZGFhZmJm
MjFhMTVjMGU2ZGQxYWNkNDYyMmFmYTU2YjdiOGQ1ZC4uMWY0YTE5MzEzMzEyYzVkZDZhNDhhZDUz
MzlkZmQyYzNiNWRlYzI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMzEs
MTIgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xv
YWRlckNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBk
ZWZhdWx0OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgeyB9CiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMmIzMTI4NTg3
MDMwM2QwOWIwMjQ1MzY1ZDYxYWI4OTExMTFkYWFiNS4uODNlNjZkMDg2NTM5NjE4YzAwMmZhYjIz
MDNlYjljYmY5M2NlMGMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcApAQCAtMzU2LDcgKzM1Niw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFk
U3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogc3RydWN0IFBhc3RlYm9h
cmRGaWxlQ291bnRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICB2b2lkIHJl
YWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSBmaW5hbCB7ICsrY291bnQ7IH0KLSAgICB2b2lkIHJl
YWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWwgeyArK2NvdW50OyB9CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbCB7ICsr
Y291bnQ7IH0KIAogICAgIHVuc2lnbmVkIGNvdW50IHsgMCB9OwogfTsKQEAgLTk2Niw3ICs5NjYs
NyBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIG1lbU9iajsKIH0KIAotc3Rh
dGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRh
dGEpCitzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgSEdMT0JBTCBtZW1PYmogPSBHbG9iYWxBbGxv
YyhHUFRSLCBkYXRhLT5zaXplKCkpOwogICAgIGlmICghbWVtT2JqKSAKQEAgLTk3OCwxNSArOTc4
LDE1IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoU2hhcmVk
QnVmZmVyKiBkYXRhKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoZGF0YS0+
ZGF0YSgpKQotICAgICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgZGF0YS0+ZGF0YSgpLCBk
YXRhLT5zaXplKCkpOworICAgIGlmIChkYXRhLT5zaXplKCkpCisgICAgICAgIENvcHlNZW1vcnko
ZmlsZUNvbnRlbnRzLCBkYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGEtPnNpemUo
KSk7CiAKICAgICBHbG9iYWxVbmxvY2sobWVtT2JqKTsKIAogICAgIHJldHVybiBtZW1PYmo7CiB9
CiAKLXN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVy
bCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRhKQorc3RhdGljIEhHTE9CQUwg
Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1l
LCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmIChmaWxlTmFtZS5pc0Vt
cHR5KCkgfHwgIWRhdGEpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTAzMCw4ICsxMDMwLDggQEAg
c3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBT
dHJpbmcmIGZpbGVOYW1lLCBTaGFyZWQKICAgICAgICAgLy8gV3JpdGUgdGhlIGRhdGEgdG8gdGhp
cyB0ZW1wIGZpbGUuCiAgICAgICAgIERXT1JEIHdyaXR0ZW47CiAgICAgICAgIEJPT0wgdGVtcFdy
aXRlU3VjY2VlZGVkID0gRkFMU0U7Ci0gICAgICAgIGlmIChkYXRhLT5kYXRhKCkpCi0gICAgICAg
ICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CisgICAgICAgIGlmIChkYXRhLT5z
aXplKCkpCisgICAgICAgICAgICB0ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZp
bGVIYW5kbGUsIGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpLCAm
d3JpdHRlbiwgMCk7CiAgICAgICAgIENsb3NlSGFuZGxlKHRlbXBGaWxlSGFuZGxlKTsKICAgICAg
ICAgaWYgKCF0ZW1wV3JpdGVTdWNjZWVkZWQpCiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTEw
NjMsNyArMTA2Myw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZVRvRGF0YU9iamVjdChF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCkKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8
ICFjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihlbGVtZW50LnJlbmRlcmVyKCkpIHx8ICFj
YWNoZWRJbWFnZS0+aXNMb2FkZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2hhcmVkQnVm
ZmVyKiBpbWFnZUJ1ZmZlciA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVsZW1lbnQu
cmVuZGVyZXIoKSktPmRhdGEoKTsKKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpbWFnZUJ1
ZmZlciA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSkt
PmRhdGEoKTsKICAgICBpZiAoIWltYWdlQnVmZmVyIHx8ICFpbWFnZUJ1ZmZlci0+c2l6ZSgpKQog
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5j
cHAKaW5kZXggNDExZWRiYjM1MTdiODQ4ZmFjMDYzZDE5ZThjZDk1ZWMwMDM3Y2Q2MS4uODRmYTI5
Y2UxZjMwMGZlMjkwYjA0MTQ2NDhmMGY3MjkwYTdjYmViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBNb2NrQ0RNRmFj
dG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiAgICAgcmV0
dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uoa2V5U3lzdGVtLCAib3JnLndlYmtpdC5tb2NrIik7
CiB9CiAKLXZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3Qg
U3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGtleXMpCit2b2lkIE1vY2tD
RE1GYWN0b3J5OjphZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3Rv
cjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYga2V5cykKIHsKICAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fc2Vzc2lvbnMuYWRkKGlkLCBXVEZNb3ZlKGtleXMpKTsKICAgICBpZiAoYWRkUmVz
dWx0LmlzTmV3RW50cnkpCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgTW9ja0NETUZhY3Rvcnk6OmFk
ZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxTaGFyZWRC
CiAgICAgICAgIHZhbHVlLmFwcGVuZChXVEZNb3ZlKGtleSkpOwogfQogCi1WZWN0b3I8UmVmPFNo
YXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQo
Y29uc3QgU3RyaW5nJiBpZCkKK1ZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IE1v
Y2tDRE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBp
ZCkKIHsKICAgICBhdXRvIGl0ID0gbV9zZXNzaW9ucy5maW5kKGlkKTsKICAgICBpZiAoaXQgPT0g
bV9zZXNzaW9ucy5lbmQoKSkKQEAgLTgzLDcgKzgzLDcgQEAgVmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+PiBNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0
cmkKICAgICByZXR1cm4gV1RGTW92ZShpdC0+dmFsdWUpOwogfQogCi1jb25zdCBWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+KiBNb2NrQ0RNRmFjdG9yeTo6a2V5c0ZvclNlc3Npb25XaXRoSUQoY29u
c3QgU3RyaW5nJiBpZCkgY29uc3QKK2NvbnN0IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+KiBNb2NrQ0RNRmFjdG9yeTo6a2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5n
JiBpZCkgY29uc3QKIHsKICAgICBhdXRvIGl0ID0gbV9zZXNzaW9ucy5maW5kKGlkKTsKICAgICBp
ZiAoaXQgPT0gbV9zZXNzaW9ucy5lbmQoKSkKQEAgLTIwMiw3ICsyMDIsNyBAQCBib29sIE1vY2tD
RE06OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJldHVybiBtX2ZhY3RvcnkgJiYgbV9m
YWN0b3J5LT5zdXBwb3J0c1Nlc3Npb25zKCk7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgaW5pdERhdGEpIGNvbnN0Citib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkgY29uc3QKIHsKICAgICBpZiAoIXN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250
YWlucyhpbml0RGF0YVR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTEsMTIgKzIx
MSwxMyBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZQogICAgIHJldHVybiB0cnVlOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
TW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBy
ZXNwb25zZSkgY29uc3QKIHsKLSAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShyZXNwb25z
ZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCisgICAgYXV0byBidWZmZXIgPSByZXNwb25zZS5t
YWtlQ29udGlndW91cygpOworICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGJ1ZmZlci0+
ZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkgPSBTdHJpbmcocmVzcG9uc2UuZGF0YSgpLCBy
ZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VB
cnJheSA9IFN0cmluZyhidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcp
OwogCiAgICAgaWYgKCFyZXNwb25zZUFycmF5LmNvbnRhaW5zKFN0cmluZygidmFsaWQtcmVzcG9u
c2UiX3MpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNjksOSArMjcwLDkgQEAgdm9p
ZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRp
YUtleVN5c3RlbUNvbmZpZ3VyYXQKICAgICBjYWxsYmFjayhpbml0aWFsaXplKCkpOwogfQogCi12
b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1vY2tD
RE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIFN0
cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5kYXRhKCksIGNlcnRp
ZmljYXRlLT5zaXplKCkpOworICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNl
cnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkp
OwogCiAgICAgY2FsbGJhY2soZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjZXJ0aWZpY2F0ZVN0cmlu
Z1ZpZXcsICJ2YWxpZCIpID8gU3VjY2VlZGVkIDogRmFpbGVkKTsKIH0KQEAgLTI5Nyw3ICsyOTgs
NyBAQCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQ
dHI8TW9ja0NETUluc3RhbmNlPiYmIGluc3RhbgogewogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5j
ZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExp
Y2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGlj
ZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgTW9ja0NETUZhY3RvcnkqIGZhY3Rvcnkg
PSBtX2luc3RhbmNlID8gbV9pbnN0YW5jZS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAgICBpZiAo
IWZhY3RvcnkpIHsKQEAgLTMyMyw3ICszMjQsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Np
b246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tUwog
ICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGxpY2Vuc2UuZGF0YSgpLCBsaWNlbnNl
Lmxlbmd0aCgpKSwgc2Vzc2lvbklELCBmYWxzZSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwog
fQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNl
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNl
U2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5
cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1f
aW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFj
dG9yeSkgewpAQCAtMzMxLDcgKzMzMiw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9
IFN0cmluZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwor
ICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlVmVjdG9yID0gU3RyaW5nKHJlc3BvbnNlLT5tYWtl
Q29udGlndW91cygpLT5kYXRhKCksIHJlc3BvbnNlLT5zaXplKCkpLnNwbGl0KCcgJyk7CiAKICAg
ICBpZiAocmVzcG9uc2VWZWN0b3IuY29udGFpbnMoU3RyaW5nKCJpbnZhbGlkLWZvcm1hdCJfcykp
KSB7CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDRE1GYWN0b3J5LmgKaW5kZXggZjVjZGE1MDVjZjJhMzNjMTA1ZjAyNWM5N2M5MzUwYTk2
ODY5OGUxZS4uZDk2YzE1NmVlNGQyNzkxYjhiMDk5OGRhZjk0MGVjNzUzNzgwN2JjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaApAQCAtNzcsOSArNzcsOSBAQCBwdWJs
aWM6CiAKICAgICBib29sIGhhc1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgeyByZXR1
cm4gbV9zZXNzaW9ucy5jb250YWlucyhpZCk7IH0KICAgICB2b2lkIHJlbW92ZVNlc3Npb25XaXRo
SUQoY29uc3QgU3RyaW5nJiBpZCkgeyBtX3Nlc3Npb25zLnJlbW92ZShpZCk7IH0KLSAgICB2b2lk
IGFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+PiYmKTsKLSAgICBjb25zdCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+KiBrZXlz
Rm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdDsKLSAgICBWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+IHJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcm
IGlkKTsKKyAgICB2b2lkIGFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwg
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJik7CisgICAgY29uc3QgVmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4qIGtleXNGb3JTZXNzaW9uV2l0aElEKGNvbnN0
IFN0cmluZyYgaWQpIGNvbnN0OworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+IHJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKTsKIAogcHJp
dmF0ZToKICAgICBNb2NrQ0RNRmFjdG9yeSgpOwpAQCAtOTYsNyArOTYsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9jYW5DcmVhdGVJbnN0YW5jZXMgeyB0cnVlIH07CiAgICAgYm9vbCBtX3N1cHBv
cnRzU2VydmVyQ2VydGlmaWNhdGVzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9zdXBwb3J0c1Nlc3Np
b25zIHsgdHJ1ZSB9OwotICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZl
cj4+PiBtX3Nlc3Npb25zOworICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+Pj4gbV9zZXNzaW9uczsKIH07CiAKIGNsYXNzIE1vY2tDRE0gOiBwdWJs
aWMgQ0RNUHJpdmF0ZSB7CkBAIC0xMjEsOCArMTIxLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGxv
YWRBbmRJbml0aWFsaXplKCkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmlj
YXRlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZp
bmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3Qg
U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBib29s
IHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qg
ZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0
IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiAgICAgV2Vha1B0cjxNb2NrQ0RNRmFjdG9yeT4gbV9m
YWN0b3J5OwpAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW1wbGVt
ZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIElt
cGxlbWVudGF0aW9uVHlwZTo6TW9jazsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1
cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3Rp
dmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBm
aW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYs
IFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRl
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7
CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAg
IGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPENETUlu
c3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAtMTU0LDggKzE1NCw4IEBA
IHB1YmxpYzoKICAgICBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8TW9ja0NETUluc3Rh
bmNlPiYmKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5p
dERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VV
cGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQg
bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExv
YWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3Qg
U3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVT
ZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFD
YWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZp
bHRlci5jcHAKaW5kZXggZmMxMjdiN2I2N2JlYTczNDQ2M2NkMmQ1YjA3NTZiNTliZWJhNThhZS4u
MDU5ZjNhMzg2YjZjZjVmYTc5YjNjMTg5NzAxNTMxM2Y3Y2RiNGVmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCB2
b2lkIE1vY2tDb250ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQogICAgIG1heWJlRGV0
ZXJtaW5lU3RhdHVzKERlY2lzaW9uUG9pbnQ6OkFmdGVyRmluaXNoZWRBZGRpbmdEYXRhKTsKIH0K
IAotUmVmPFNoYXJlZEJ1ZmZlcj4gTW9ja0NvbnRlbnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgp
IGNvbnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTW9ja0NvbnRlbnRGaWx0ZXI6OnJl
cGxhY2VtZW50RGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRpZEJsb2NrRGF0YSgpKTsKICAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9yZXBsYWNlbWVudERhdGEuZGF0YSgpLCBt
X3JlcGxhY2VtZW50RGF0YS5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlci5oCmluZGV4IDQxMWEzMDA5NDdiNTM5ZTI2YWE2YzY0YTAwOTMyOTJlOWZmYmU2
YjkuLjYzNWFjODRiZTc5Mzg0N2FhNTcyMTNkMDFmZmMxZTc0Zjc2Yjc1OTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92
ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCmluZGV4IDZkNDhiZDAyZDFjOTFm
N2VlZDg2NGExNmNkNzU2YmIwNzdkNjU1MmEuLjVmODU0NWViYTViMGU3YjhiYmFiYTVjNjkzYzJh
NDM0MTg4YjJiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKQEAg
LTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU2NyaXB0QnVmZmVyOjpTY3JpcHRC
dWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0
ZjgoKTsKLSAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1
dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVu
Z3RoKCkpOwogfQogCiBTY3JpcHRCdWZmZXIgU2NyaXB0QnVmZmVyOjplbXB0eSgpCkBAIC00Niwx
NCArNDYsMTMgQEAgU2NyaXB0QnVmZmVyIFNjcmlwdEJ1ZmZlcjo6ZW1wdHkoKQogICAgIHJldHVy
biBTY3JpcHRCdWZmZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH07CiB9CiAKLQogU3RyaW5n
IFNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIGlmICghbV9idWZmZXIpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAg
ICBtX2J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICBtX2J1
ZmZlci5nZXQoKS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKICAgICAgICAg
YnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5z
aXplKCkpKTsKICAgICB9KTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpAQCAtNjEs
MTUgKzYwLDEzIEBAIFN0cmluZyBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgY29uc3QKIAogYm9v
bCBTY3JpcHRCdWZmZXI6OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSBjb25zdAog
ewotICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci0+aGFzT25lU2VnbWVudCgpICYmIG1f
YnVmZmVyLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCk7CisgICAg
cmV0dXJuIG1fYnVmZmVyICYmIG1fYnVmZmVyLmdldCgpLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9i
dWZmZXIuZ2V0KCktPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKTsK
IH0KIAogdm9pZCBTY3JpcHRCdWZmZXI6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN0cmluZykKIHsK
LSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBtX2J1ZmZlci0+YXBw
ZW5kKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQodXRm
OC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2Ny
aXB0QnVmZmVyJiBhLCBjb25zdCBTY3JpcHRCdWZmZXImIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
Y3JpcHRCdWZmZXIuaAppbmRleCBiMzlkOWMxMzAzMzAzMTFjMDRkN2YzNzk2YjcxYTA0MzEzNGM2
NjQ2Li5mZDJjMWFlMmY2M2I2MGQ3NGMzMGQyNDJhOTg5YTBiZmQ5MWRlNDk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgU2NyaXB0
QnVmZmVyIHsKIHB1YmxpYzoKICAgICBTY3JpcHRCdWZmZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICBT
Y3JpcHRCdWZmZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgU2NyaXB0QnVm
ZmVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBt
X2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiAgICAgewogICAgIH0KQEAgLTQ4LDE3ICs0OCwxNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2NyaXB0QnVmZmVyKGNvbnN0
IFN0cmluZyYpOwogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0gICAgU2hhcmVkQnVm
ZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQorICAgIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
LmdldCgpLmdldCgpOyB9CiAKLSAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3Qg
eyByZXR1cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9i
dWZmZXItPmNvcHkoKSkgOiBudWxscHRyKTsgfQorICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENv
cHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4obV9idWZmZXIuY29weSgpKSA6IG51bGxwdHIpOyB9CiAgICAgZXhw
bGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXIgfHwgIW1fYnVmZmVyLT5zaXpl
KCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5pc0VtcHR5
KCk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnNTaW5nbGVGaWxlTWFwcGVk
U2VnbWVudCgpIGNvbnN0OwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwogCiBwcml2
YXRlOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUg
VVRGLTggZW5jb2RlZCBzY3JpcHQuCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcjsg
Ly8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgogfTsKIAogYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IDQzM2Q5
ZTFhNDVjMjk4ODU0MmIwNWU3NGI0NzE3YTc3MDU3MjhiYjYuLjgxNTgxMjhhNjMxODU5Y2U3MzQ3
M2ZiYzVjMjNiZTlkNDVjYjBkZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJGb250
U2VsZWN0aW9uQWxnb3JpdGhtLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgog
I2luY2x1ZGUgIldPRkZGaWxlRm9ybWF0LmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUu
aCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgiCkBAIC03OCw5ICs3NywxMyBA
QCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29y
a2VyR2xvYmFsU2NvcGUpCiBib29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9t
Rm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAg
Y29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShtX2RhdGEpOwotICAgICAgICBpZiAobV9kYXRh
KSB7Ci0gICAgICAgICAgICBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKCptX2RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3Ry
aW5nKCkpOworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YTsKKyAg
ICAgICAgaWYgKG1fZGF0YSkKKyAgICAgICAgICAgIGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLnRh
a2VBc0NvbnRpZ3VvdXMoKTsKKyAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShj
b250aWd1b3VzRGF0YSk7CisgICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgeworICAgICAgICAg
ICAgbV9kYXRhLmFwcGVuZCgqY29udGlndW91c0RhdGEpOworICAgICAgICAgICAgbV9mb250Q3Vz
dG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSgqY29udGlndW91
c0RhdGEsIG1fdXJsLmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCkpOwogICAgICAgICAg
ICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCiAgICAgICAgICAgICAgICAgbV9lcnJv
ck9jY3VycmVkID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTE3LDEwICsxMjAsNyBAQCB2b2lkIFdv
cmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGRhdGFMZW5ndGgpCiAgICAgaWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKCFtX2RhdGEpCi0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7Ci0KLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2Rh
dGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIFdvcmtlckZvbnRMb2FkUmVx
dWVzdDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBiOWZjZmIx
ZDZmZWE4YWQ1ZTc4MGJkZWViYzVjNmUwNGExZTg2M2M3Li5kYWI3M2ZjN2IxYTkzZWQ0ZTNmZWIz
MWQ2NzA5OGQ5OWI1MTc2YTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
Rm9udExvYWRSZXF1ZXN0LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkZvbnRMb2Fk
UmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgorI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNp
bmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTM2LDcgKzM3
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0Owog
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFdvcmtlckdsb2JhbFNjb3BlOwogCiBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKQEAg
LTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9u
dExvYWRSZXF1ZXN0Q2xpZW50IHsgbnVsbHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRh
OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyRmV0Y2guaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJGZXRjaC5oCmluZGV4IGViMjY2YjZjMDdlNjczZDkxNjZjYWNlNmIzMzkxOWQ4
MGViYmYzMWMuLjA5NzU0M2UxYjNiMzBmZjMxNDdkOTIzMmE1OGNlNGE5ZTYyZjNlNGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJGZXRjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJGZXRjaC5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGU7CiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgU2VydmljZVdvcmtl
ckZldGNoIHsKIGNsYXNzIENsaWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDbGll
bnQsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKQEAgLTUxLDcgKzUxLDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDg5YTg3
NWY4YWZjMGQ2MjM1NWFjNjIyOWE2NGMxY2E0M2QxODU2NTIuLjlhOGZiMzVjYTUzNjEwNWJiNmQ2
ZmM0NmVlMTIyNDU5MzNmNzBiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsxMjcs
OCBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3
ZSBuZWVkIHRvIGRpc2FibGUgZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQgaGF2
aW5nIHRvbyBtYW55IGZpbGUgZGVzY3JpcHRvcnMgb3Blbj8KLSAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBT
aGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1heVVz
ZUZpbGVNYXBwaW5nOjpObyk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgs
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGlu
ZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hh
cmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIHJldHVybiBidWZmZXI7CiB9
CiAKIHZvaWQgU1dTY3JpcHRTdG9yYWdlOjpjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAppbmRleCBlMGNkYzcyMzRjNTRhMTNkZjcwYTY4MDVjMjgxYjk0ODA1NDVhZTI2Li45YjEx
MmI5ZGIyY2Q4NGQwMzJmNTlkYWZhOGU4ZTM4ZTA3MGU1M2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJSdW50aW1lQXBw
bGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpblBvbGljeS5oIgogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAi
U3RyaW5nQWRhcHRvcnMuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5j
bHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgpAQCAtMjA4LDcgKzIwNyw3IEBAIFJlZjxCbG9iPiBY
TUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkKICAgICAvLyBGSVhNRTogV2UganVz
dCByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIE5ldHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNlbmRpbmcg
aXQgYmFjay4gVGhpcyBpcyBpbmVmZmljaWVudC4KICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsK
ICAgICBpZiAobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgIGRhdGEgPSBzdGQ6OmV4
Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLCBudWxscHRyKS0+ZXh0cmFjdERhdGEoKTsK
KyAgICAgICAgZGF0YSA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLnRha2UoKS0+ZXh0cmFjdERh
dGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxvYjo6bm9ybWFsaXpl
ZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlwZTo6WWVzKSk7IC8vIHJl
c3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5IGJlIGluY29ycmVj
dC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RG
TW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAgLTIxOCw5ICsyMTcsNyBA
QCBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5
QnVmZmVyKCkKICAgICBBU1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVzcG9uc2VUeXBlOjpBcnJh
eWJ1ZmZlcik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkpOwogCi0gICAgYXV0byBy
ZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
LT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRyLCAw
KTsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICByZXR1cm4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIudGFrZUFzQXJyYXlCdWZm
ZXIoKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6OnNldFRpbWVvdXQo
dW5zaWduZWQgdGltZW91dCkKQEAgLTc0MSw3ICs3MzgsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0
OjpjbGVhclJlc3BvbnNlQnVmZmVycygpCiAgICAgbV9yZXNwb25zZUVuY29kaW5nID0gU3RyaW5n
KCk7CiAgICAgbV9jcmVhdGVkRG9jdW1lbnQgPSBmYWxzZTsKICAgICBtX3Jlc3BvbnNlRG9jdW1l
bnQgPSBudWxscHRyOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKKyAg
ICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci5yZXNldCgpOwogICAgIG1fcmVzcG9uc2VDYWNoZUlz
VmFsaWQgPSBmYWxzZTsKIH0KIApAQCAtMTA2NSw5ICsxMDYyLDcgQEAgdm9pZCBYTUxIdHRwUmVx
dWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKICAgICAg
ICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikp
OwogICAgIGVsc2UgewogICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAgIGlm
ICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgICAgICBtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIG1fYmluYXJ5UmVzcG9u
c2VCdWlsZGVyLT5hcHBlbmQoZGF0YSwgbGVuKTsKKyAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1
aWxkZXIuYXBwZW5kKGRhdGEsIGxlbik7CiAgICAgfQogCiAgICAgaWYgKCFtX2Vycm9yKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDA0ODQ2MjZiMmU1ZGZkZGE3Y2IxNmM0
ZjU1MjJkZWY4NGM0YWMxODYuLjJkMTNiZWMzOTQ2NDQ4YjliNGY5MjVkMzJiZDg2YmEyZDgwMzc3
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRl
ICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0
b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC00NSw3ICs0Niw2IEBAIGNsYXNzIEJsb2I7
CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgU2VjdXJpdHlPcmln
aW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogY2xh
c3MgVGhyZWFkYWJsZUxvYWRlcjsKIGNsYXNzIFVSTFNlYXJjaFBhcmFtczsKQEAgLTIzNyw3ICsy
MzcsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9jdW1l
bnQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlcjsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOwogCiAgICAg
U3RyaW5nQnVpbGRlciBtX3Jlc3BvbnNlQnVpbGRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCmluZGV4
IDU3MzA2N2UzZGQwNTBmZWI3YzU3OWQwMDEwMmVlOWY2MDQ1YjUzMTMuLjMxYzJkNzZmMmVlMWI5
ZDI0OWIwMDFiN2VmZjg5MmVjMmE3NDU2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKQEAgLTYxLDcg
KzYxLDcgQEAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6flJlbW90ZUNETUluc3RhbmNlUHJveHko
KQogICAgIG1faW5zdGFuY2UtPmNsZWFyQ2xpZW50KCk7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5z
dGFuY2VQcm94eTo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBT
dHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2b2lkIFJlbW90ZUNE
TUluc3RhbmNlUHJveHk6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29u
c3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkK
IHsKICAgICBpZiAoIW1fY2RtKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaAppbmRleCA4
ZTczZDNkOWE2NGI5OGJmYzAwOTM2Y2Q0N2M0YzI1YTkyNzlmMmM4Li4wMmM1Y2QzN2FlNTQ4MDJm
NmQwYzhkY2NjYjBiYTgwY2YzMzg4YzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKQEAgLTY2LDcgKzY2LDcg
QEAgcHJpdmF0ZToKICAgICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RN
UHJveHk+JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4mJiwgVW5pcXVlUmVmPFJlbW90ZUNE
TUluc3RhbmNlQ29uZmlndXJhdGlvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyKTsK
IAogICAgIC8vIENETUluc3RhbmNlQ2xpZW50Ci0gICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxp
emF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpIGZpbmFsOworICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNl
aXZlZChjb25zdCBTdHJpbmcmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAppbmRleCBlNTc2NmMyMzM0Y2ZkMzg5MzEwY2Q0YjIx
NzIzY2FiYTM3NDJmYzdjLi5kZTgyNzNiOWNmNTAwYTRkNjZhYTE0NGVkZTAyMDFlZWYxZWQ4NjJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9p
ZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUgdHlwZSwgQXRvbVN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zZXNz
aW9uLT5yZXF1ZXN0TGljZW5zZSh0eXBlLCBpbml0RGF0YVR5cGUsIGluaXREYXRhLmJ1ZmZlcigp
LnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wg
bmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUg
c3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUs
IGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBs
ZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFs
aXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRh
YmxlIHsKICAgICAgICAgY29tcGxldGlvbihXVEZNb3ZlKG1lc3NhZ2UpLCBzZXNzaW9uSWQsIG5l
ZWRzSW5kaXZpZHVhbGl6YXRpb24sIHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1
Y2NlZWRlZCk7CiAgICAgfSk7CiB9CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBDbG9zZVMKIAogdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVtb3ZlU2Vz
c2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlbW92
ZVNlc3Npb25EYXRhQ2FsbGJhY2smJiBjb21wbGV0aW9uKQogewotICAgIG1fc2Vzc2lvbi0+cmVt
b3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29t
cGxldGlvbildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1
c2VzLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0Rh
dGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7
CisgICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21w
bGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3Rh
dHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3Vj
Y2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8SVBD
OjpTaGFyZWRCdWZmZXJDb3B5PiBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2U7CiAgICAgICAg
IGlmIChleHBpcmVkU2Vzc2lvbnNEYXRhKQogICAgICAgICAgICAgZXhwaXJlZFNlc3Npb25EYXRh
UmVmZXJlbmNlID0gSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoKmV4cGlyZWRTZXNzaW9u
c0RhdGEpKTsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5Ojp1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dQogICAg
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlVwZGF0ZUtleVN0YXR1c2VzKFdURk1vdmUoa2V5U3Rh
dHVzZXMpKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBtZXNzYWdlKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1l
c3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
bWVzc2FnZSkKIHsKICAgICBpZiAoIW1fY2RtKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eS5oCmluZGV4IDhhNjFmOWQ1ZmFiYzg0ODZhN2EwZTg2MGY0YzYzMTJjMGI0
NDU1MTQuLmZlNzMwOTcxMzFlMGJiMjBhNTAwMWUxNTAxNjAyZDY1MTg2YjMwOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAKICAgICAv
LyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQKICAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtl
eVN0YXR1c1ZlY3RvciYmKSBmaW5hbDsKLSAgICB2b2lkIHNlbmRNZXNzYWdlKFdlYkNvcmU6OkNE
TU1lc3NhZ2VUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFs
OworICAgIHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQg
c2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBQbGF0Zm9ybURpc3Bs
YXlJRCBkaXNwbGF5SUQoKSBmaW5hbCB7IHJldHVybiBtX2Rpc3BsYXlJRDsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcAppbmRleCA5
YWIzNTc1ZjRjM2I1NTk1NTViOWI4N2IyMzM3MWIxYjFhNjZkYzE3Li5mN2NiNmE2M2ViOTMzYWJk
NGQ0NTNhMjJhYjI5NGYxMzAzMjMyYjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKQEAgLTYzLDEyICs2MywxMiBAQCBSZW1vdGVD
RE1Qcm94eTo6UmVtb3RlQ0RNUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYg
ZmFjdG9yeSwgc3RkOjp1bgogCiBSZW1vdGVDRE1Qcm94eTo6flJlbW90ZUNETVByb3h5KCkgPSBk
ZWZhdWx0OwogCi1ib29sIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIHR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK2Jvb2wgUmVtb3RlQ0RN
UHJveHk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5zdXBw
b3J0c0luaXREYXRhKHR5cGUsIGRhdGEpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBSZW1v
dGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNl
KQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFJlbW90ZUNETVByb3h5OjpzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQogewogICAg
IHJldHVybiBtX3ByaXZhdGUtPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2UpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaAppbmRleCA2OTI0
ZTc0ZTNmNTAxMWJlMjE1YmU0YmQ5NmIyMzQ4MjY0NzBmNDIzLi4zYjY2Yzc3NTc4NzA2OWU5NzZl
ZTA2NGY5NmZmMDdjMGY3MTJhOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNUHJveHkuaApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQg
OiB1aW50OF90OwogZW51bSBjbGFzcyBDRE1TZXNzaW9uVHlwZSA6IHVpbnQ4X3Q7CiBzdHJ1Y3Qg
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKQEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogCiAg
ICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5KiBmYWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9mYWN0
b3J5LmdldCgpOyB9CiAKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
JiByZXNwb25zZSk7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
LCBjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpOwogICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1Qcm94eS5oCmluZGV4IGUyY2QwNWQ3Y2M3NGYyMGVjNjlmYWRmZTNlZTA4NTc1
OTJhZDg3OWIuLmRlOGY2ZGY1NWE2ZTFmYThiZTk2NmY5NDFlMDdmZTJmNWM1MDIxYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Q
cm94eS5oCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5
LmgKaW5kZXggZjE0YzYyN2Y2NTkzZTFhODc4ZDBmNDU5OTJiM2M0MWIyMjJjN2YwMC4uMTU0NmJk
ZmRmZGNmMDkxMDg3ODk0NGYzNDA3OTY3YTdhYjM4YmY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkuaApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGVnYWN5
Q0RNOwogY2xhc3MgTGVnYWN5Q0RNU2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBJUEMgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3Bw
CmluZGV4IGM0NWU1MjU1ZDY3YjUyYzdhZTEwNDQ5OTg4Y2UwMTkwYzdmZmI1MzguLjYxN2Y0NzY4
OTU2NDJkZWMyMzI1NGI1NDBlZTgxOTExYWM0YTJkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKQEAgLTk2LDcg
Kzk2LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhU2VudCh1aW50NjRfdCBieXRl
c1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2UKICAgICAgICAgbV9jbGllbnQtPmRhdGFT
ZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgUmVt
b3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkK
K3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVu
dC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCmluZGV4IGQxM2Qy
NWY2NWYwMjI0YTZjNzY3ZjY5YTRkNDE5Y2QwNTNiYjc5NWQuLjViN2E3ZTJhNzQyNDQzMmQ4NmNi
MjhhMWJlNzE3MThhMTY3Mzc1ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJik7CiAgICAgdm9p
ZCByZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZvaWQgZGF0YVNlbnQodWludDY0X3QsIHVpbnQ2
NF90KTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJik7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoY29uc3QgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
d2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCA3ZTU3MmIzYTc0YTIwMjdlNzRj
YWE3NjcyZTUyZGEwYWY4MzQyMDcyLi5lODNmOTE0M2QyMGE3MmUyYmU0ZmZjYmZlZDEzYjBiYjRk
ZDMxZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMv
UmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTEwNyw3ICsxMDcsOCBAQCB2b2lkIFJlbW90ZU1l
ZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2Ft
cGxlJiYgcmVtbwogdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBtX3dyaXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1lQ29kZSkg
bXV0YWJsZSB7Ci0gICAgICAgIGF1dG8qIHBvaW50ZXIgPSBkYXRhID8gZGF0YS0+ZGF0YSgpIDog
bnVsbHB0cjsKKyAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+KCk7CisgICAgICAgIGF1dG8qIHBv
aW50ZXIgPSBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRhdGEgPyBkYXRhLT5z
aXplKCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKaW5kZXgg
NTJjYzVkYTEyMWEyZmI1OWQ4Y2YwNTkzYjY4NTA5ZmQ2NTVjMGNkYy4uNzFmZDAyMjI5YmJiMWM1
NzMyNmZkZmNmZTI2YzExZjc2MWFiY2Y3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKQEAgLTY4LDcgKzY4
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxz
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFs
czsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBS
ZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgZGlk
RmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggM2YzOWViMzJmMWFhODA3Njc4NWRhNzllZTExZGFk
OGYwYzMyNmI3OS4uZDg5MjBlOTg3NjRmZDliNjRiOWNkZGM2MGExZDg0ZDYxOWIyZDQwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdo
dENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQog
Ci12b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
OjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikK
IHsKICAgICBDT1JTX0NIRUNLRVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1By
ZWZsaWdodENoZWNrZXIuaAppbmRleCBiYmIxNDYyYTMxNjFlMmZjZTllYTU3ODQ0YjE5YjkzZTYx
OWM4MWIwLi5lMTFiZjU2MzE5MDdhZTQ3MzM2ZWY4NWE1ZDIyZTg4MzU3NDY1MWIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7
CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRo
RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90
YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAg
ICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2suaAppbmRleCBkNjAxOGY2MTM4M2FlM2E1MWU5ZDQ3MjJjZjZh
NjBlMmQ4Yjg3YTdkLi5lMDQ5ZTViMTJkZGU1ZmU1MWI0Njk1NTI4OWE3YTdmNjk5ODJhZmNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKQEAg
LTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRs
ZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5n
ZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1Nl
bnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB3YXNCbG9ja2VkKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmNwcAppbmRleCBiYWMwMjJhYjQ1NDMwZjY1MWIxODlhYzAxMjA3YTA2MDYwOGMx
NjcxLi43OTc1ZDQxYmFkODkxNWZlZWRiZGFiMTU1NGU4MWUxZGIyMDMwZjgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcApAQCAtMjU2LDcgKzI1Niw3
IEBAIHZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJl
c3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0CiAgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2
ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBi
ZSB0aGUgZW5jb2RlZCBkYXRhIGxlbmd0aCwgbm90IHRoZSBkZWNvZGVkIGRhdGEgbGVuZ3RoLgog
ICAgIGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5oCmluZGV4IGMzNzczYzk4Nzg1NTNjZTUzNGQwNTRhYmZmZGRlYmIy
OWVlMDg0ZDIuLmVlNWViMDA2YWEzNzliNzhmY2JjMGJkMTc0ZTMyYmQ2MzlmOTVlNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKQEAgLTgwLDcgKzgwLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0
Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdl
KFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMs
IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRM
UywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
OwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZv
aWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0
ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKaW5k
ZXggMGE1ZjY2YmQ5NjdlYzlmZGY2NjRlNTJlNWFmMzk0ZTQ4ZWNlMWY3Yi4uMzQ4Y2ZmYjllOGUy
NWVlODNiYmIzOWEwMmNkM2NmNmQyODU0ZDM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBOZXR3
b3JrTG9hZE1ldHJpY3M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogZW51bSBjbGFzcyBQb2xpY3lBY3Rpb24gOiB1aW50OF90OwogfQogCkBAIC01
MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWdu
ZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0Jl
U2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRp
cmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KCkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGU1MGNmNGFiYmU1NjRlNGNhM2ZiNzI2Y2FhOWQ1Njlj
NTRiMDlkNzIuLmU3ZmIwNTBjMDAzNmUwMzZlNWY2ZWMxMzk1NjI1M2QzMWU0NjUyZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTg3LDE0ICs4NywxNCBAQCBzdHJ1Y3QgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpTeW5jaHJvbm91c0xvYWREYXRhIHsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogfTsKIAot
c3RhdGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpTeW5jaHJvbm91c0xvYWREYXRhJiBkYXRhLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1
ZmZlciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQorc3RhdGljIHZvaWQgc2Vu
ZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJv
bm91c0xvYWREYXRhJiBkYXRhLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBBU1NFUlQoZGF0YS5k
ZWxheWVkUmVwbHkpOwogICAgIEFTU0VSVCghZGF0YS5yZXNwb25zZS5pc051bGwoKSB8fCAhZGF0
YS5lcnJvci5pc051bGwoKSk7CiAKICAgICBWZWN0b3I8dWludDhfdD4gcmVzcG9uc2VCdWZmZXI7
CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKLSAgICAgICAgcmVzcG9uc2VCdWZm
ZXIuYXBwZW5kKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgIHJlc3Bv
bnNlQnVmZmVyLmFwcGVuZChidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOwogCiAgICAgZGF0YS5yZXNwb25zZS5zZXREZXByZWNhdGVkTmV0d29ya0xvYWRN
ZXRyaWNzKEJveDxOZXR3b3JrTG9hZE1ldHJpY3M+OjpjcmVhdGUobWV0cmljcykpOwogCkBAIC0z
MDYsMTAgKzMwNiwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3Jr
TG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgICAgICBjb25zdW1l
U2FuZGJveEV4dGVuc2lvbnMoKTsKIAogICAgICAgICBpZiAoaXNTeW5jaHJvbm91cygpIHx8IG1f
cGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA+IDBfcykKLSAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fYnVmZmVy
ZWREYXRhLmVtcHR5KCk7CiAKICAgICAgICAgaWYgKGNhblVzZUNhY2hlKHJlcXVlc3QpKQotICAg
ICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmVtcHR5KCk7CiAgICAgfQogCiAg
ICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMgPSBtX3BhcmFtZXRlcnM7CkBAIC03
MzQsMTYgKzczNCwxNiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbgogICAgICAgICAmJiBtX3Jl
c3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPigx
ICogTUIpCiAgICAgICAgICYmIGlzRmV0Y2hPclhIUihyZXNvdXJjZUxvYWRJbmZvKQogICAgICAg
ICAmJiBpc01lZGlhTUlNRVR5cGUobV9yZXNwb25zZS5taW1lVHlwZSgpKSkgewotICAgICAgICBt
X2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIG1fYnVmZmVy
ZWREYXRhLmVtcHR5KCk7CiAgICAgICAgIG1fcGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGlt
ZSA9IFdlYkxvYWRlclN0cmF0ZWd5OjptZWRpYU1heGltdW1CdWZmZXJpbmdUaW1lOwogICAgIH0K
IAogICAgIC8vIEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGRpZFJlY2VpdmVSZXNwb25z
ZUFzeW5jIGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBidWZmZXJpbmcgd291bGQgcmVx
dWlyZSBzcGVjaWFsIGhhbmRsaW5nLgogICAgIGlmICghaXNTeW5jaHJvbm91cygpICYmIG1fcmVz
cG9uc2UuaXNNdWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBudWxscHRyOwor
ICAgICAgICBtX2J1ZmZlcmVkRGF0YS5yZXNldCgpOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuaXNN
dWx0aXBhcnQoKSkKLSAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZSA9IG51bGxwdHI7Cisg
ICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKIAogICAgIGlmIChtX2NhY2hl
RW50cnlGb3JWYWxpZGF0aW9uKSB7CiAgICAgICAgIGJvb2wgdmFsaWRhdGlvblN1Y2NlZWRlZCA9
IG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQ7IC8vIDMwNCBOb3QgTW9kaWZpZWQK
QEAgLTg1OCw3ICs4NTgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZERpZFJl
Y2VpdmVSZXNwb25zZVBvdGVudGlhbGx5SW5OZXdCcm93c2luZ0NvbnRleAogICAgIH0pOwogfQog
Ci12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAg
IGlmICghbV9udW1CeXRlc1JlY2VpdmVkKQogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRp
ZFJlY2VpdmVCdWZmZXI6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGg9JWQpIiwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CkBAIC04NjksMTAgKzg2
OSwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0
cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNhY2hlLgogICAg
ICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFj
aXR5KCkgLyA4OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS0+c2l6ZSgpICsg
YnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUtPmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAo
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVt
Q2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBl
bmQoYnVmZmVyLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9idWZmZXJlZERh
dGFGb3JDYWNoZSA9IG51bGxwdHI7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LnJlc2V0KCk7CiAgICAgfQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtODgwLDcgKzg4MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAg
ICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
ID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVyLT5zaXplKCk7CiAKICAg
ICBpZiAobV9idWZmZXJlZERhdGEpIHsKLSAgICAgICAgbV9idWZmZXJlZERhdGEtPmFwcGVuZChi
dWZmZXIuZ2V0KCkpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS5hcHBlbmQoYnVmZmVyLmdldCgp
KTsKICAgICAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0
YUxlbmd0aDsKICAgICAgICAgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgICAg
IHJldHVybjsKQEAgLTkwOSwxMSArOTA5LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAj
ZW5kaWYKIAogICAgIGlmIChpc1N5bmNocm9ub3VzKCkpCi0gICAgICAgIHNlbmRSZXBseVRvU3lu
Y2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG1fYnVmZmVyZWREYXRhLmdl
dCgpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3Vz
UmVxdWVzdCgqbV9zeW5jaHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS5nZXQoKS5nZXQo
KSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKG1fYnVmZmVy
ZWREYXRhICYmICFtX2J1ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKSB7CisgICAgICAgIGlmICghbV9i
dWZmZXJlZERhdGEuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogUGFzcyBhIHJl
YWwgdmFsdWUgb3IgcmVtb3ZlIHRoZSBlbmNvZGVkIGRhdGEgc2l6ZSBmZWF0dXJlLgotICAgICAg
ICAgICAgc2VuZEJ1ZmZlcigqbV9idWZmZXJlZERhdGEsIC0xKTsKKyAgICAgICAgICAgIHNlbmRC
dWZmZXIoKm1fYnVmZmVyZWREYXRhLmdldCgpLCAtMSk7CiAgICAgICAgIH0KICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3
b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CkBAIC0xMjU5LDE2ICsxMjU5LDE2IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKCkKICAgICBBU1NFUlQobV9i
dWZmZXJlZERhdGEpOwogICAgIEFTU0VSVChtX25ldHdvcmtMb2FkKTsKIAotICAgIGlmIChtX2J1
ZmZlcmVkRGF0YS0+aXNFbXB0eSgpKQorICAgIGlmIChtX2J1ZmZlcmVkRGF0YS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVy
OjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZlcmVkRGF0YSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29k
ZWREYXRhTGVuZ3RoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRp
ZFJlY2VpdmVEYXRhKHsgKm1fYnVmZmVyZWREYXRhLmdldCgpIH0sIG1fYnVmZmVyZWREYXRhRW5j
b2RlZERhdGFMZW5ndGgpKTsKIAotICAgIG1fYnVmZmVyZWREYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKKyAgICBtX2J1ZmZlcmVkRGF0YS5lbXB0eSgpOwogICAgIG1fYnVmZmVyZWREYXRh
RW5jb2RlZERhdGFMZW5ndGggPSAwOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c2VuZEJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3Ro
KQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJU
KCFpc1N5bmNocm9ub3VzKCkpOwogCkBAIC0xMjg5LDEyICsxMjg5LDEyIEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjp0cnlTdG9yZUFzQ2FjaGVFbnRyeSgpCiAgICAgaWYgKGlzQ3Jvc3NP
cmlnaW5QcmVmZXRjaCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9jb25uZWN0
aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKSkgewogICAg
ICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJ0cnlTdG9yZUFzQ2FjaGVFbnRyeTogU3Rvcmlu
ZyBlbnRyeSBpbiBwcmVmZXRjaCBjYWNoZSIpOwotICAgICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0
Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdU
Rk1vdmUobV9yZXNwb25zZSksIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAg
ICAgICAgICAgc2Vzc2lvbi0+cHJlZmV0Y2hDYWNoZSgpLnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1
cnJlbnRSZXF1ZXN0KCkudXJsKCksIFdURk1vdmUobV9yZXNwb25zZSksIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUudGFrZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IExPQURFUl9SRUxFQVNFX0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkg
aW4gSFRUUCBkaXNrIGNhY2hlIik7Ci0gICAgbV9jYWNoZS0+c3RvcmUobV9uZXR3b3JrTG9hZC0+
Y3VycmVudFJlcXVlc3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNh
Y2hlKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJvZHkpIG11dGFibGUg
eworICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1f
cmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFrZSgpLCBbbG9hZGVyID0gUmVmIHsg
KnRoaXMgfV0oYXV0byYgbWFwcGVkQm9keSkgbXV0YWJsZSB7CiAjaWYgRU5BQkxFKFNIQVJFQUJM
RV9SRVNPVVJDRSkKICAgICAgICAgaWYgKG1hcHBlZEJvZHkuc2hhcmVhYmxlUmVzb3VyY2VIYW5k
bGUuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBkMjM0ZGFiNWJl
ZWE1YjY0NzMwNTUwYzc3MzcwYTlmMTU5NTk3Zjk3Li5jZjEwY2YwZTcxYTFiYzY1NTQwZTg3ZDZi
YTRjMWI5Yzg1NmMwYTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeVZpb2xhdGlv
bkV2ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtMTE0LDcgKzEx
NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxz
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFs
czsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAg
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
ICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBm
aW5hbDsKICAgICB2b2lkIGRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSBmaW5hbDsK
QEAgLTE5Miw3ICsxOTMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzdGFydEJ1ZmZlcmluZ1Rp
bWVySWZOZWVkZWQoKTsKICAgICB2b2lkIGJ1ZmZlcmluZ1RpbWVyRmlyZWQoKTsKLSAgICB2b2lk
IHNlbmRCdWZmZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVu
Z3RoKTsKKyAgICB2b2lkIHNlbmRCdWZmZXIoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAKICAgICB2b2lkIGNvbnN1bWVTYW5kYm94
RXh0ZW5zaW9ucygpOwogICAgIHZvaWQgaW52YWxpZGF0ZVNhbmRib3hFeHRlbnNpb25zKCk7CkBA
IC0yMjUsNyArMjI2LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
IG1fcmVzcG9uc2U7CiAKICAgICBzaXplX3QgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0
aCB7IDAgfTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcmVkRGF0
YTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhOwogICAg
IHVuc2lnbmVkIG1fcmVkaXJlY3RDb3VudCB7IDAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxT
eW5jaHJvbm91c0xvYWREYXRhPiBtX3N5bmNocm9ub3VzTG9hZERhdGE7CkBAIC0yNDAsNyArMjQx
LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fYnVmZmVyaW5nVGltZXI7CiAg
ICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKKyAgICBXZWJDb3JlOjpT
aGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGU7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb247CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeUZvck1h
eEFnZUNhcFZhbGlkYXRpb247CiAgICAgYm9vbCBtX2lzV2FpdGluZ0NvbnRpbnVlV2lsbFNlbmRS
ZXF1ZXN0Rm9yQ2FjaGVkUmVkaXJlY3QgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1BpbmdMb2FkLmNwcAppbmRleCAxMTQ4NTNlNDViNzI1MzM2NGM3NDdhNzFjYjJiNWFi
OGNjMzhlZmQ1Li4xYWYxZTA4ZTNjNDQxZTI0ZjMwMDY1ZTlmMjA3NzZlNmY5ZmMzM2RiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcApAQCAtMTcyLDcgKzE3Miw3
IEBAIHZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUCiAgICAgZGlkRmluaXNoKHsgfSwgcmVzcG9uc2Up
OwogfQogCi12b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYm
KQordm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpCiB7CiAgICAgUElOR19SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGEiKTsKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
aAppbmRleCAxOWVjOGNlYjkyZTNjOGEwNTZmNDkyNzM2NjBjZmZmOTI2NDM0MWQxLi5hYjI5YTBi
MWFjODQ2NmIwZWQ2MWVmNThlZjRjMjIwYWJhYjZlYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZp
bmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFu
ZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRl
V2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90
IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFs
OwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAppbmRleCA0NTU3ODJkNTRhMmVhOWJlZTE4NjUw
ZTFhZmQxY2Y3YjJjZTk4YzQ5Li4xN2Q0NzkwN2EzZjZlZTUyYmU2NTAxZDFkYWIwY2E2MDc1MWQ2
YjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RU
YXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNr
LmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbQogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKIH0KIAotdm9pZCBQcmVjb25uZWN0
VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCmluZGV4IDFjMWZmMTY0NzExMWM2ZmE4NDk0
YWY1Y2YwYzdiYmVhYTFiMjY1MDMuLjg1ODA4ZTEyMWI2OGNhOGI3M2UyNTE4ZDE5M2FiMzk1ODFl
YWQxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVj
dFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNr
LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2ln
bmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9C
ZVNlbnQpIGZpbmFsOwogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmlu
YWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25Q
cmVsb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAppbmRleCA3MWUwY2Y2YzZkYzdi
ZWE1MjJjOTA2MDA1NTVmNTcyMTYxYzNjMmY0Li44MTk2NjMwMjBjNjk1Y2UwYzZhYmE5OTljNjc1
YWFiNDI4MmM3ZmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRlci5jcHAKQEAgLTE3NCwxMCArMTc0LDEwIEBAIHZvaWQgU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzCiAgICAgICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAg
IGlmIChtX2JvZHlDYWxsYmFjaykKLSAgICAgICAgbV9ib2R5Q2FsbGJhY2soV1RGTW92ZShidWZm
ZXIpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgbV9ib2R5Q2FsbGJhY2so
YnVmZmVyLT5tYWtlQ29udGlndW91cygpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKIH0K
IAogdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkRmluaXNoTG9hZGlu
Zyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKaW5kZXggMWU3
OGMyY2VmYTE1NDg0MTA0MDYwZjNiMTlkYzUwZTZjYjhmMWViNC4uZWUxYmM4YjdkNmNiZmZjMzM0
MWQ2NzNmYjcyNDIyMzhmNjcxN2YyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIGZp
bmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICBib29sIHNob3VsZENhcHR1cmVF
eHRyYU5ldHdvcmtMb2FkTWV0cmljcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2hvdWxkQ2Fw
dHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCA4ZWUxMTJhOWRmODI4OTU0YzE2MjNm
ZmYyMmMyYTIwZmQ4ZTJmZTdkLi43YTI2MjIxOWRlNzhiMjM1ZDEyNWE5MmI2ZTIzNmQzMzI2MmY3
YTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
ci5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBSZXNvdXJjZUVycm9yIFNlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyOjpwcm9jZXNzUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwbwogICAgIHJl
dHVybiB7IH07CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9kZWNvZGVyKSB7CiAgICAgICAg
IGlmICghbV9yZXNwb25zZUVuY29kaW5nLmlzRW1wdHkoKSkKQEAgLTE4Nyw3ICsxODcsNyBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLAogICAgIH0KIAogICAgIGlmIChhdXRvIHNpemUgPSBidWZm
ZXItPnNpemUoKSkKLSAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1
ZmZlci0+ZGF0YSgpLCBzaXplKSk7CisgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXIt
PmRlY29kZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkpOwogfQogCiB2
b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCmluZGV4IDE4ZjU0NjkxZjM3YzJiYWJiYzhjMWEzYmMw
OTQzNzBlOWIyOWViNzEuLjQ0ZmMwNjg1ZmEwZmVkYzg3NDIxOTE2ZTkxM2E2NzRiMWMwZmRiZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCkBA
IC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JD
cmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmlu
YWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmNwcAppbmRleCAwNDc3NjgzNmY5OTkwOTM5MTBiMzk5ZDc1NTM4NTVkNWQzZjFmZjRl
Li5kZDMwNWFmMjk3NjYxZTQ3NmM0OTY3N2RmNTcyMWVmZDFlYzkzMmY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC00
NTQsNyArNDU0LDcgQEAgdm9pZCBDYWNoZTo6Y29tcGxldGVSZXRyaWV2ZShSZXRyaWV2ZUNvbXBs
ZXRpb25IYW5kbGVyJiYgaGFuZGxlciwgc3RkOjp1bmlxdWVfcHQKICAgICBoYW5kbGVyKFdURk1v
dmUoZW50cnkpLCBpbmZvKTsKIH0KICAgICAKLXN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6
Om1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSkKK3N0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6
Om1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEpCiB7CiAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUocmVz
cG9uc2VEYXRhKSwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3Jr
UHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbklEKSwgcmVxdWVzdCwgcmVzcG9uc2Up
KTsKIH0KQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpt
YWtlUmVkaXJlY3RFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmCiAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwgcmVzcG9uc2UsIHJl
ZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3
b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbklEKSwgcmVxdWVzdCwgcmVzcG9u
c2UpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmUoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25z
ZURhdGEsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
c3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VE
YXRhLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBBU1NFUlQocmVzcG9uc2VEYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKaW5kZXggMTk5ZjBjZmI3MzI1NDNjNWZlYWY0
ZmUyMzAxZTZhMWMxMmY4OGZlOC4uZWQwNGViY2EwYjM2ZjNmOWM0YzBlN2JhYzcxMzM2YjllOTZj
MzU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5oCkBAIC00Myw3ICs0Myw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBM
b3dQb3dlck1vZGVOb3RpZmllcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtMTY2LDcgKzE2Niw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHVzaW5nIFJl
dHJpZXZlQ29tcGxldGlvbkhhbmRsZXIgPSBGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4sIGNvbnN0IFJldHJpZXZlSW5mbyYpPjsKICAgICB2b2lkIHJldHJpZXZlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBzdGQ6Om9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxl
ciYmKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiA9
IG51bGxwdHIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmUoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkKE1h
cHBlZEJvZHkmKT4mJiA9IG51bGxwdHIpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3Rv
cmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRp
cmVjdFJlcXVlc3QsIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FwKTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+IHVwZGF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBFbnRyeSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZhbGlkYXRp
bmdSZXNwb25zZSk7CiAKQEAgLTE4NSw3ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXRy
aWV2ZURhdGEoY29uc3QgRGF0YUtleSYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgdWludDhfdCosIHNp
emVfdCk+KTsKICAgICB2b2lkIHN0b3JlRGF0YShjb25zdCBEYXRhS2V5JiwgIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCk7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtl
RW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeT4gbWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBt
YWtlUmVkaXJlY3RFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZWRpcmVjdFJlcXVlc3QpOwogCiAgICAgdm9pZCBkdW1wQ29udGVudHNUb0ZpbGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVFbnRyeS5jcHAKaW5kZXggYmEzOWQ5ZTJjMjZhMDFhOTI2YjExYWE3OTllMzY2MmZjNmFlMDU0
OS4uNzYxMDc4ZGVhMDkzYzA0NTU1YmU5OGIwNTE3M2UzNDE1MDY3YTg1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRy
eS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIE5l
dHdvcmtDYWNoZSB7CiAKLUVudHJ5OjpFbnRyeShjb25zdCBLZXkmIGtleSwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZh
cnlpbmdSZXF1ZXN0SGVhZGVycykKK0VudHJ5OjpFbnRyeShjb25zdCBLZXkmIGtleSwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJp
bmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpCiAgICAgOiBtX2tleShrZXkpCiAg
ICAgLCBtX3RpbWVTdGFtcChXYWxsVGltZTo6bm93KCkpCiAgICAgLCBtX3Jlc3BvbnNlKHJlc3Bv
bnNlKQpAQCAtMTAxLDggKzEwMSwxMCBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29kZUFz
U3RvcmFnZVJlY29yZCgpIGNvbnN0CiAKICAgICBEYXRhIGhlYWRlcihlbmNvZGVyLmJ1ZmZlcigp
LCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiAgICAgRGF0YSBib2R5OwotICAgIGlmIChtX2J1ZmZl
cikKLSAgICAgICAgYm9keSA9IHsgbV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9
OworICAgIGlmIChtX2J1ZmZlcikgeworICAgICAgICBtX2J1ZmZlciA9IG1fYnVmZmVyLT5tYWtl
Q29udGlndW91cygpOworICAgICAgICBib2R5ID0geyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXIqPihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSB9Owor
ICAgIH0KIAogICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVhZGVyLCBib2R5LCB7
IH0gfTsKIH0KQEAgLTE5NCw3ICsxOTYsNyBAQCB2b2lkIEVudHJ5Ojppbml0aWFsaXplQnVmZmVy
RnJvbVN0b3JhZ2VSZWNvcmQoKSBjb25zdAogICAgIG1fYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjcmVhdGUobV9zb3VyY2VTdG9yYWdlUmVjb3JkLmJvZHkuZGF0YSgpLCBtX3NvdXJj
ZVN0b3JhZ2VSZWNvcmQuYm9keS5zaXplKCkpOwogfQogCi1XZWJDb3JlOjpTaGFyZWRCdWZmZXIq
IEVudHJ5OjpidWZmZXIoKSBjb25zdAorV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
RW50cnk6OmJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgaW5p
dGlhbGl6ZUJ1ZmZlckZyb21TdG9yYWdlUmVjb3JkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKaW5kZXggOTY5MTVj
MzgwMWMzN2RkYWMzZThlNjAzMjFmODhjMjIyOWNkNTlhMC4uOWMwNDIwZDQ0YTgxNThkZmM1YjIx
Y2YxODgyMDRjZjNhOTE2YjQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaApAQCAtMzUsNyArMzUsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7
CiBjbGFzcyBFbnRyeSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgRW50cnkoY29uc3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3Ry
aW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKTsKKyAgICBFbnRyeShjb25zdCBL
ZXkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBT
dHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKTsKICAgICBFbnRyeShjb25zdCBLZXkmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBT
dHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKTsKICAgICBleHBsaWNpdCBFbnRyeShjb25z
dCBTdG9yYWdlOjpSZWNvcmQmKTsKICAgICBFbnRyeShjb25zdCBFbnRyeSYpOwpAQCAtNTcsNyAr
NTcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAgICAgY29uc3QgVmVjdG9yPHN0
ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMoKSBjb25zdCB7
IHJldHVybiBtX3ZhcnlpbmdSZXF1ZXN0SGVhZGVyczsgfQogCi0gICAgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyKiBidWZmZXIoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBidWZmZXIoKSBjb25zdDsKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdD4mIHJlZGlyZWN0UmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVkaXJl
Y3RSZXF1ZXN0OyB9CiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQpAQCAtODgsNyAr
ODgsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBt
X3ZhcnlpbmdSZXF1ZXN0SGVhZGVyczsKIAogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0PiBtX3JlZGlyZWN0UmVxdWVzdDsKLSAgICBtdXRhYmxlIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIG11dGFibGUgUmVmUHRyPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogI2lmIEVOQUJMRShTSEFSRUFCTEVf
UkVTT1VSQ0UpCiAgICAgbXV0YWJsZSBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIG1fc2hhcmVh
YmxlUmVzb3VyY2VIYW5kbGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmNwcAppbmRleCBhZDA5ZGY0NGQ5YWYxMmZkNDA4MDMxMDU0NjgzNTM2ZWEwZGM4MTkzLi40MWQ4
MjM1MDI0NzQ3YjZmYzRhM2FjNTQ4ZTEzMzRlZDZjYjVlZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFNwZWN1bGF0aXZlTG9hZDo6U3Bl
Y3VsYXRpdmVMb2FkKENhY2hlJiBjYWNoZSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZ2xvYmFsRnJh
bWVJCiAgICAgOiBtX2NhY2hlKGNhY2hlKQogICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAsIG1fb3JpZ2luYWxSZXF1ZXN0KHJlcXVlc3Qp
Ci0gICAgLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCisg
ICAgLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpKQogICAgICwgbV9jYWNoZUVudHJ5KFdURk1vdmUoY2FjaGVFbnRyeUZvclZhbGlkYXRpb24p
KQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5IHx8IG1fY2FjaGVFbnRyeS0+bmVlZHNWYWxp
ZGF0aW9uKCkpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAg
ICAgbV9yZXNwb25zZSA9IHJlY2VpdmVkUmVzcG9uc2U7CiAKICAgICBpZiAobV9yZXNwb25zZS5p
c011bHRpcGFydCgpKQotICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsK
KyAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogCiAgICAgYm9vbCB2YWxp
ZGF0aW9uU3VjY2VlZGVkID0gbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsgLy8g
MzA0IE5vdCBNb2RpZmllZAogICAgIGlmICh2YWxpZGF0aW9uU3VjY2VlZGVkICYmIG1fY2FjaGVF
bnRyeSkKQEAgLTEyMCwxNyArMTIwLDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlCiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIFNwZWN1bGF0
aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5KTsKIAog
ICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVt
b3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAgICBjb25zdCBzaXpl
X3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlm
IChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhp
bXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS0+
YXBwZW5kKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hl
LnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAg
ICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlID0gbnVsbHB0cjsK
KyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiB9CiAK
QEAgLTEzOSwxMCArMTM5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRGaW5pc2hMb2Fk
aW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCiAgICAgaWYgKG1fZGlkQ29t
cGxldGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fY2FjaGVFbnRyeSAmJiBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlKSB7Ci0gICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPnN0b3Jl
KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmNv
cHlSZWYoKSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKKyAgICAgICAgbV9jYWNoZUVudHJ5
ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUuZ2V0KCksIFtdKGF1dG8mIG1hcHBlZEJvZHkpIHsgfSk7CiAgICAgICAg
IC8vIENyZWF0ZSBhIHN5bnRoZXRpYyBjYWNoZSBlbnRyeSBpZiB3ZSBjYW4ndCBzdG9yZS4KICAg
ICAgICAgaWYgKCFtX2NhY2hlRW50cnkgJiYgaXNTdGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZhdWx0
KG1fcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkpCi0gICAgICAgICAgICBtX2NhY2hlRW50cnkg
PSBtX2NhY2hlLT5tYWtlRW50cnkobV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIFdURk1v
dmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSkpOworICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0g
bV9jYWNoZS0+bWFrZUVudHJ5KG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAgfQogCiAgICAgZGlkQ29tcGxldGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4IGMwZTFlMTRiMmFjNDYwMzU4ZjgxNDA3
Y2Q3MGM0MDkwNTJhZjhlZmUuLjFiODQzZGI3ZWMyNzBkYjlkYWI5ZThhMjVmMmE0OGE4ZWNhZTJh
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNjEsNyArNjEsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVx
dWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgbV9idWZmZXJlZERhdGFGb3JDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0Nh
Y2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5OwogICAgIGJvb2wgbV9kaWRDb21wbGV0ZSB7IGZhbHNl
IH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9Q
cmVmZXRjaENhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJl
ZmV0Y2hDYWNoZS5jcHAKaW5kZXggNWUyZTAyZTJmYmEwYjRhMGMwM2I1ZDNlNjZiOTdmN2JjY2M3
OTU4Yi4uMzE5OWJmZjMxMWI2YzNlZWZiZTk1MGI0NWU2YjBhOTZlMzI3NzdmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3Bw
CkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QcmVmZXRjaENhY2hl
OjpFbnRyeTo6RW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK1ByZWZldGNoQ2FjaGU6OkVudHJ5
OjpFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IHJlc3BvbnNlKFdU
Rk1vdmUocmVzcG9uc2UpKSwgYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKIH0KQEAgLTcyLDcg
KzcyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFByZWZldGNoQ2FjaGU6OkVudHJ5PiBQcmVmZXRjaENh
Y2hlOjp0YWtlKGNvbnN0IFVSTCYgdXJsKQogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyBleHBpcmF0
aW9uVGltZW91dCB7IDVfcyB9OwogCi12b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVS
TCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUHJlZmV0Y2hDYWNoZTo6
c3RvcmUoY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKIHsKICAgICBpZiAoIW1fc2Vzc2lvblByZWZldGNoZXMpCiAgICAgICAgIG1fc2Vzc2lvblBy
ZWZldGNoZXMgPSBtYWtlVW5pcXVlPFByZWZldGNoRW50cmllc01hcD4oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKaW5kZXggYTI1
MTUyMGIzMWVhYzkyMWMyMmQzMTE1MWQ2ZDIzMWExYmVkMTM4Yy4uNTJjMGIxMGZjYzZkNWE2ZGUx
MTQ0N2U3ZTRlODIyZGY4Zjg0MWNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKQEAgLTQ3LDE4ICs0NywxOCBAQCBwdWJsaWM6
CiAKICAgICBzdHJ1Y3QgRW50cnkgewogICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7Ci0gICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
OwogICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmKTsKIAotICAgICAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBy
ZWxlYXNlQnVmZmVyKCkgeyByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7IH0KKyAgICAg
ICAgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlbGVhc2VCdWZmZXIoKSB7
IHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsgfQogCiAgICAgICAgIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlZGlyZWN0
UmVxdWVzdDsKICAgICB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiB0YWtlKGNvbnN0
IFVSTCYpOwotICAgIHZvaWQgc3RvcmUoY29uc3QgVVJMJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIHN0b3Jl
KGNvbnN0IFVSTCYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgc3RvcmVSZWRpcmVjdChjb25z
dCBVUkwmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRleCBiOWFiMGRlZWJiOWY5
MjdjNzM3NDJlODZhMGJlN2Y5NzE2MGJkNmZiLi40MTY2OGE1YjFjZDczODY5NjdiOGZkOTczZTk2
NzMyZWNhOTA3ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC02Miw3ICs2Miw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZE5lZ290aWF0ZU1vZGVyblRMUyhjb25zdCBVUkwmKTsKICAgICB2b2lk
IGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25z
dCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIHZvaWQgd2lsbFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lk
IHRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQoRG93bmxvYWQmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLm1tCmluZGV4IGU3ODBkNmMxYzNjZDFlYjJjMmZmNWEwYzU2NGEwZTRkODhiN2VhNWQu
LjMwNTFmMTY5Y2IwYTM3MDk5ODVhMTYxMTIyYzI1ZjBlOGYxN2JkOGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5tbQpAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRp
ZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVyCiAgICAg
ICAgIG1fY2xpZW50LT5kaWRDb21wbGV0ZVdpdGhFcnJvcihlcnJvciwgbmV0d29ya0xvYWRNZXRy
aWNzKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZURhdGEoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
ZGF0YSkKIHsKICAgICBXVEZFbWl0U2lnbnBvc3QobV90YXNrLmdldCgpLCAiRGF0YVRhc2siLCAi
cmVjZWl2ZWQgJXpkIGJ5dGVzIiwgZGF0YS0+c2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCmlu
ZGV4IDY3N2M2MWRhMWExODk0YzFmNTk2NTZkOTI3MDllYjcxZDU5MWE1NTMuLjNkYzY1ZmY4MmM5
ZGE4OTJkMjBjMzQ4ODZlNWExYzRkNzlkYWRlZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAgLTE3
Miw3ICsxNzIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlUmVz
cG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXNwbwogICAgIGludm9rZURpZFJlY2Vp
dmVSZXNwb25zZSgpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNl
aXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lk
IE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0Jiwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIFJlZiBwcm90ZWN0
ZWRUaGlzIHsgKnRoaXMgfTsKICAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8
IHN0YXRlKCkgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAoIW1fY2xpZW50ICYmICFpc0Rvd25sb2Fk
KCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdv
cmtEYXRhVGFza0N1cmwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrRGF0YVRhc2tDdXJsLmgKaW5kZXggMWM0MjdkZGI3OGQ2OTUzZmU4OTYwYzU2OTJhZmRlNGY0
ZjBlZWU4NS4uNDViZTVjZTE4NDMyNTI3MWQ1YzA4MGRkMzRmMWVlNGExNjY0MmExZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1
cmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFU
YXNrQ3VybC5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmPFdlYkNvcmU6OkN1
cmxSZXF1ZXN0PiBjcmVhdGVDdXJsUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
UmVxdWVzdFN0YXR1cyA9IFJlcXVlc3RTdGF0dXM6Ok5ld1JlcXVlc3QpOwogICAgIHZvaWQgY3Vy
bERpZFNlbmREYXRhKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1
bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6OkN1cmxSZXNwb25zZSYmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OkN1cmxSZXF1ZXN0
JiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJs
RGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0
ZShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYmKSBv
dmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKFdlYkNvcmU6OkN1cmxSZXF1
ZXN0JiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8m
Jikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKaW5kZXggZjVkYjcwNmM0NDU4MDIxMDg3Zjk1
OTk2NjlkZmE3ZDlmODM3OTc4Yy4uMzNkNDNiNzIyMzhkMjAzZTdlZGVjOTQxNGNhZjlmZGE4ZjQw
NTI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0
d29ya1JUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKQEAgLTU1LDcgKzU1LDcgQEAgc3RydWN0IFBhY2tldE9w
dGlvbnM7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmgKaW5kZXggN2UwZDhkYmUxOTAyNTk5ZDAyYmMxMDhlNTYzYTZlM2RmMTgzMmU5
Zi4uMTdmMDhjMjhlYTEyNWI1NTA5OTNlZWQyNGQ1OTYzYjg1MTBhMTE0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtMjMsNyArMjMsNyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIEVuY29kZXMg
YSBTaGFyZWRCdWZmZXIgdGhhdCBpcyByZWNlaXZlZCBhcyBhIGNvcHkgb2YgdGhlIGRlY29kZWQg
ZGF0YSBpbiBhIG5ldyBTaGFyZWRCdWZmZXIuCisvLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgY29weSBvZiB0aGUgZGVjb2RlZCBkYXRhIGlu
IGEgbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAvLyBUbyBhdm9pZCBjb3B5aW5nIGZyb20g
dGhlIERlY29kZXIsIHVzZSBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHRvIHJlY2VpdmUgYSBE
YXRhUmVmZXJlbmNlIGluc3RlYWQuCiAKICNwcmFnbWEgb25jZQpAQCAtNDMsMTEgKzQzLDEyIEBA
IHB1YmxpYzoKICAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQogICAgIFNo
YXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAg
ICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVy
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCi0gICAgewotICAgICAgICBtX2J1ZmZl
ci0+YXBwZW5kKGJ1ZmZlcik7Ci0gICAgfQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVm
ZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+KCkpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKSkgeyB9CisgICAgU2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIo
YnVmZmVyLm1ha2VDb250aWd1b3VzKCkpIHsgfQogCiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAgICAgY29uc3QgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlLmgKaW5kZXggZDNkMGVjNWU5Nzg1NTk5YjYzNGE4NGM2YzQ0NzFiNTJjZDIy
MTNmMS4uNjdlYzhlNWU5MmJkMDI0MTE1ZGIwZDQwODBhMjRmZTczNTcwZDNmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVu
Y2UuaApAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLS8vIEVuY29kZXMgYSBTaGFyZWRCdWZmZXIgb3IgRGF0YVJlZmVyZW5jZSB0aGF0
IGlzIHJlY2VpdmVkIGFzIGEgRGF0YVJlZmVyZW5jZSB0byB0aGUgZGVjb2RlZCBkYXRhLgorLy8g
RW5jb2RlcyBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgb3IgRGF0YVJlZmVyZW5jZSB0aGF0IGlz
IHJlY2VpdmVkIGFzIGEgRGF0YVJlZmVyZW5jZSB0byB0aGUgZGVjb2RlZCBkYXRhLgogCiAjcHJh
Z21hIG9uY2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1v
cnkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCmluZGV4IGQy
NDA2ZWUyOTA1MzExZjY5Yjc1ODQyMWU3N2EzZTY2Y2JhMjdiNjUuLmMwMjZmNTQ5NTY5YjJiZTAw
NzhhZTMyNWQwNTM5ZTA3MWFmMTEwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vU2hhcmVkTWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1l
bW9yeS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCi1SZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNv
cHlCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8U2hhcmVkTWVtb3J5
PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTUxLDcgKzUxLDcgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5
Ojpjb3B5QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogUmVmPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25z
dAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXplKCkpOwotICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSh7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdt
ZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0g
KCkgLT4gY29uc3QgdWludDhfdCogewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihwcm90ZWN0ZWRUaGlzLT5kYXRhKCkpOwogICAgICAgICB9LApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggZTM3MWJjZDczMDJjZjg1ZWJhYjJiNWE4
NWU3YmU0OWRjZjU2NTJhYi4uMWI0ZmRmYWY2ODM4OWRjZTcyOGZmMzRlNWU1ZjAxMmUyNDNmYTJj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC00NSw2ICs0NSw3IEBA
IGNsYXNzIEVuY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKICNpZiBPUyhEQVJXSU4pCkBA
IC0xMjAsNyArMTIxLDcgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IENoYW5nZSB0aGVzZSBm
YWN0b3J5IGZ1bmN0aW9ucyB0byByZXR1cm4gUmVmPFNoYXJlZE1lbW9yeT4gYW5kIGNyYXNoIG9u
IGZhaWx1cmUuCiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGFsbG9jYXRlKHNpemVf
dCk7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGNvcHlCdWZmZXIoY29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGNv
cHlCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtYXAoY29uc3QgSGFuZGxlJiwgUHJvdGVjdGlvbik7
CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRN
ZW1vcnk+IHdyYXBNYXAodm9pZCosIHNpemVfdCwgaW50IGZpbGVEZXNjcmlwdG9yKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQppbmRleCBjYTBjMjRi
Mjc3MzU0NzY3NmUzNDgwMWM3OWExZDU2NWJmOTVmZTVkLi4xMTBlMGFkZGU1NThhOWQ5MzM4YjI0
NTA2ZTg5MTYzYzkzNjk3MTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUElX
ZWJBcmNoaXZlUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJV2ViQXJj
aGl2ZVJlc291cmNlLm1tCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VXZWJB
cmNoaXZlUmVzb3VyY2VEYXRhKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogCiBS
ZWY8QVBJOjpEYXRhPiBXZWJBcmNoaXZlUmVzb3VyY2U6OmRhdGEoKQogewotICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZVJlc291cmNlLT5kYXRhKCkuY3JlYXRlQ0ZE
YXRhKCk7CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlUmVzb3Vy
Y2UtPmRhdGEoKS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKTsKIAogICAgIC8vIEJh
bGFuY2VkIGJ5IENGUmVsZWFzZSBpbiByZWxlYXNlV2ViQXJjaGl2ZVJlc291cmNlRGF0YS4KICAg
ICBDRlJldGFpbihjZkRhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCA4N2Y0ZWIxZWJh
Mjg3MmUwY2IwYWI5NTkxNmFmZWRlMjlmY2JhMjQ0Li4zYzFiNTdkNWFhMjZlYzcyZTYwYjVkNzhh
MTFlOWZkODUyY2ZmZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtNTY0LDEzICs1NjQsMTIgQEAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJl
ZjxXZWJDb3JlOjpGb250Pj46OmRlY28KICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGlmICgqaW5jbHVkZXNDcmVhdGlvbkRhdGEpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRh
OwogICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgaWYgKCFmb250RmFj
ZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIC8vIFVw
b24gcmVjZWlwdCwgY29weSB0aGUgZGF0YSBmb3Igc2VjdXJpdHksIHNvIHRoZSBzZW5kZXIgY2Fu
J3Qgc2NyaWJibGUgb3ZlciBpdCB3aGlsZSB3ZSdyZSB1c2luZyBpdC4KLSAgICAgICAgYXV0byBs
b2NhbEZvbnRGYWNlRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZvbnRGYWNl
RGF0YS52YWx1ZSgpLT5kYXRhKCksIGZvbnRGYWNlRGF0YS52YWx1ZSgpLT5zaXplKCkpOworICAg
ICAgICBhdXRvIGxvY2FsRm9udEZhY2VEYXRhID0gZm9udEZhY2VEYXRhLnZhbHVlKCktPm1ha2VD
b250aWd1b3VzKCk7CiAKICAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGl0ZW1JbkNvbGxl
Y3Rpb247CiAgICAgICAgIGRlY29kZXIgPj4gaXRlbUluQ29sbGVjdGlvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCBjNjk2MWM3MTQ0MDJiZjM3N2Fl
OTEwZmJiNmNjYWE1MmQzYjg0MTI4Li42ZmEwMmE3YmMzZWU1NGFlNmQzMjUzODEwZDc4ZGVjMzE2
NTM1M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAKIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQogewotICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpQcm92aWRl
ciB7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRl
ciB7CiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5kYXRh
KCk7IH0sCiAgICAgICAgIFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5z
aXplKCk7IH0KICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCmluZGV4IDY0OTgyYmM0ODEwMmE0YWRiMjBhN2U2MGUyMWJkNDkyZDY1MzM3
NGMuLjg0M2ZkNDczMTNhZWVjYTI5OTMwNjEyZmM1ZWM1Nzg3NTU0MzQyZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTY0LDcgKzE2
NCw3IEBAIERFRklORV9TSU1QTEVfQVJHVU1FTlRfQ09ERVJfRk9SX1NPVVJDRShEaXNwbGF5TGlz
dDo6U2V0SW5saW5lU3Ryb2tlQ29sb3IpCiAKICN1bmRlZiBERUZJTkVfU0lNUExFX0FSR1VNRU5U
X0NPREVSX0ZPUl9TT1VSQ0UKIAotc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQorc3RhdGljIHZvaWQgZW5j
b2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGJ1ZmZlcikKIHsKICAgICBib29sIGlzTnVsbCA9ICFidWZmZXI7CiAgICAgZW5jb2Rl
ciA8PCBpc051bGw7CkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVk
QnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogICAg
ICAgICByZXR1cm47CiAKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICAvLyBEbyBu
b3QgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIFNoYXJlZEJ1ZmZlciBlbmNvZGluZyBpbiBVbml4LCBi
ZWNhdXNlIGl0J3MgZWFzeSB0byByZWFjaCB0aGUKKyAgICAvLyBEbyBub3QgdXNlIHNoYXJlZCBt
ZW1vcnkgZm9yIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgZW5jb2RpbmcgaW4gVW5peCwgYmVjYXVz
ZSBpdCdzIGVhc3kgdG8gcmVhY2ggdGhlCiAgICAgLy8gbWF4aW11bSBudW1iZXIgb2YgZmlsZSBk
ZXNjcmlwdG9ycyBvcGVuIHBlciBwcm9jZXNzIHdoZW4gc2VuZGluZyBsYXJnZSBkYXRhIGluIHNt
YWxsIGNodW5rcwogICAgIC8vIG92ZXIgdGhlIElQQy4gQ29ubmVjdGlvblVuaXguY3BwIGFscmVh
ZHkgdXNlcyBzaGFyZWQgbWVtb3J5IHRvIHNlbmQgYW55IElQQyBtZXNzYWdlIHRoYXQgaXMKICAg
ICAvLyB0b28gbGFyZ2UuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA4NTcxLgpAQCAtMjY0LDcgKzI2NCw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluCiAg
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVT
aGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgZGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgZGF0YS5hcHBl
bmQoYnVmZmVyKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE1NTAsMTAgKzE1NTAs
MTAgQEAgdm9pZCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdAogICAgIGlmIChoYXNTdHJpbmcpCiAgICAgICAg
IGVuY29kZXIgPDwgc3RkOjpnZXQ8U3RyaW5nPihwbGF0Zm9ybURhdGEpOwogCi0gICAgYm9vbCBo
YXNCdWZmZXIgPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihwbGF0
Zm9ybURhdGEpOworICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSk7CiAgICAgZW5jb2RlciA8
PCBoYXNCdWZmZXI7CiAgICAgaWYgKGhhc0J1ZmZlcikKLSAgICAgICAgZW5jb2RlU2hhcmVkQnVm
ZmVyKGVuY29kZXIsIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpLnB0
cigpKTsKKyAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIHN0ZDo6Z2V0PFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKS5wdHIoKSk7CiB9CiAKIGJvb2wg
QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5JiBkYXRhKQpAQCAtMjk3Niw3
ICsyOTc2LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7
IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH19OworICAgIHJldHVybiB7
IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OwogfQogCiAjZW5k
aWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTMwMTAsNiArMzAxMCwzNCBAQCBz
dGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpTZXJpYWxpemVkUAogfQogI2VuZGlmCiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxS
ZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7
Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBBcmd1
bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
KyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKwordm9pZCBBcmd1
bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0
cigpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IEFy
Z3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwor
ICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBidWZmZXIucmVsZWFz
ZU5vbk51bGwoKTsKK30KKwogdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29k
ZXIsIGJ1ZmZlci5nZXQoKSk7CkBAIC0zMTA3LDcgKzMxMzUsNyBAQCB2b2lkIEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZQogewogICAgIGVuY29kZXIgPDwgbWVzc2FnZS5maXJzdDsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5zZWNvbmQuY29weVJlZigpOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uuc2Vj
b25kLmNvcHlSZWYoKTsKICAgICBlbmNvZGVyIDw8IG1lc3NhZ2VEYXRhOwogfQogCkBAIC0zMTE3
LDcgKzMxNDUsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6
TWVzc2FnZT4gIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSQogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUodHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAyNWYwMWMwMjkyYTAxOWYwNjc2MjRiYmI1NTM0MDJk
ZjFhMzNjNWI2Li42ZmFjMmFhMWVhNzg0NmZmNmJmODkwMjFmMGY1MmU5YWE3YWUwM2M4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTE0LDYg
KzExNCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxvYlBhcnQ7
CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBDb2xvcjsKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOwog
Y2xhc3MgQ3Vyc29yOwpAQCAtMTM4LDcgKzEzOSw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRCdWZmZXI7CiBjbGFzcyBTZWN1
cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTcHJpbmdUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIFN0ZXBzVGltaW5nRnVu
Y3Rpb247CiBjbGFzcyBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7CkBAIC03NTEs
NiArNzUyLDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2Vy
aWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiB7CiB9OwogI2VuZGlmCiAKK3RlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVy
Jik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiwgY29uc3QgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Jik7CisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBk
ZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mKTsKICAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERl
Y29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1
bHREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNw
cAppbmRleCBjZjJlNGQ1ZjkzZmQyZDk0NmJhYmZmOTNlZWEzZTllODYwYWViYmY0Li5iNjA3YWNl
ODM4ZTA0YmNlMWE2YWVlNGRhNTY1NTllMDk2OTgzOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFdlYkhpdFRl
c3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0YShjb25zdCBXZWJDb3JlOjpIaXRUZXN0
UmVzdWx0JiBoaXRUZXN0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChJbWFnZSogaW1hZ2Ug
PSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gaW1hZ2UtPmRhdGEoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7CiAgICAgICAgIGlmIChidWZmZXIpIHsKICAg
ICAgICAgICAgIGltYWdlU2hhcmVkTWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNvcHlC
dWZmZXIoKmJ1ZmZlcik7CiAgICAgICAgICAgICBpbWFnZVNpemUgPSBidWZmZXItPnNpemUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4
IDI1YTMwN2YzODI5ZTkyNzhiNWVhNzhmZjgyOTY3ODgzMzc3YTMxYmEuLjY3MTc1OGEyODBhNWU0
NDBhYTA2MGE3OWNmMWYwZjEyNmRiN2JlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Z3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEFyZ3VtZW50
Q29kZXI8U2VsZWN0aW9uRGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTZWxl
Y3Rpb25EYXRhJgogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSA9IHNlbGVjdGlvbi5oYXNDdXN0b21E
YXRhKCk7CiAgICAgZW5jb2RlciA8PCBoYXNDdXN0b21EYXRhOwogICAgIGlmIChoYXNDdXN0b21E
YXRhKQotICAgICAgICBlbmNvZGVyIDw8IFJlZlB0cjxTaGFyZWRCdWZmZXI+KHNlbGVjdGlvbi5j
dXN0b21EYXRhKCkpOworICAgICAgICBlbmNvZGVyIDw8IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPihzZWxlY3Rpb24uY3VzdG9tRGF0YSgpKTsKIAogICAgIGJvb2wgY2FuU21hcnRSZXBs
YWNlID0gc2VsZWN0aW9uLmNhblNtYXJ0UmVwbGFjZSgpOwogICAgIGVuY29kZXIgPDwgY2FuU21h
cnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0
dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
Y3BwCmluZGV4IGIzNGVjNzM2MzYzYzRmMWQyYjBlNzYwYWQzZjRhOWQ1YmFjMWEzNGUuLjE0OTBj
NTExYmRjMzhiZDhhYjRhNjk1YWVjZjMwNmQ5NWZhYTM5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gQXR0YWNobWVudDo6ZmlsZVNpemVGb3JEaXNwbGF5KCkgY29uc3QK
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAorUmVmUHRyPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0
YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBhZmE5MjljZjA5M2QyMmVjNzZhZDg2ZmRh
MDNiNTAxYmJmZDI5ZGMzLi5mZTUwZTUzOGI4ZWJiMzUxYTQ4MzZkMWRkODkzZDE0N2E1NmE4Nzdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTM5
LDYgKzM5LDcgQEAgT0JKQ19DTEFTUyBOU1N0cmluZzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC04Miw3ICs4Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0OwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZW5j
bG9zaW5nSW1hZ2VEYXRhKCkgY29uc3Q7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0OwogICAgIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IGZpbGVTaXplRm9yRGlzcGxheSgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRI
YXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xvc2luZ0ltYWdlKSB7IG1faGFzRW5jbG9zaW5n
SW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaAppbmRleCA3ZmMwNTQ1N2U2NGNm
NTg5YjBmYjBlN2UwMzZmNjkwZmEyYzE3YmFjLi40ZTI2NmYzNjdhYzYwMmI4ZWYxZWFmNzU3YTBh
MDRkYzczZjc3MWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV1RG
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9u
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVu
dC5oCmluZGV4IDU2MjM0MDE0NTlkYTVmZTMwZjQ5MWE0MWZiMzQ3YTY3NTcyMDJjNDAuLjExMWYw
OTI2M2Y4MjIzODI5YTVhZDI2NDQzNGJhNDIwZjE5OGRkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaApAQCAtNDcsNyArNDcsNyBA
QCBzdHJ1Y3QgQ29udGVudFJ1bGVMaXN0UmVzdWx0czsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBTZWN1cml0
eU9yaWdpbkRhdGE7CiB9CiAKQEAgLTExOSw3ICsxMTksNyBAQCBwdWJsaWM6CiAKICNpZiBVU0Uo
UVVJQ0tfTE9PSykKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6
U3RyaW5nJiB1dGkpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIHsgfQogI2VuZGlm
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIFJlZjxOYXZpZ2F0aW9uQWN0aW9uPiYmLCBSZWY8V2ViS2l0OjpX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIE9iamVjdCopCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2Nv
YS5tbQppbmRleCBjZjQ2MjE2Y2EyNWE5ZWRmODJlMzE5YTMzMDMwNzkxZThkNGUxNTNjLi5kZmVm
M2UwNzBmOTYxNjMwNDk3MTQ0ZGFmM2YzMDBjYjRjYTUxOTVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KQEAg
LTEzNyw3ICsxMzcsNyBAQCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBBdHRhY2htZW50OjpmaWxl
U2l6ZUZvckRpc3BsYXkoKSBjb25zdAogICAgIHJldHVybiBbZmlsZVdyYXBwZXIgcmVndWxhckZp
bGVDb250ZW50c10ubGVuZ3RoOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBB
dHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX2hhc0VuY2xvc2luZ0ltYWdlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CmluZGV4IGE3MmQwZDJjOTJkN2RlZDQ1ZTBlNDEwYjQxZGNiOGZiNGRhNWFlODUuLjNmYmRmMTQ3
MWVmZjlhNTM2ZGM5OTMzYWE0NGEwOTZiOTRlZDJiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTU5Niw3ICsxNTk2LDcgQEAgLSAo
dm9pZClfc3RvcmVBcHBIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpaGln
aGxpZ2h0CiAgICAgaWYgKGhpZ2hsaWdodC50ZXh0KQogICAgICAgICB0ZXh0ID0gaGlnaGxpZ2h0
LnRleHQudmFsdWUoKTsKIAotICAgIGF1dG8gd2tIaWdobGlnaHQgPSBhZG9wdE5TKFtbX1dLQXBw
SGlnaGxpZ2h0IGFsbG9jXSBpbml0V2l0aEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0LT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSB0ZXh0OnRleHQgaW1hZ2U6bmlsXSk7CisgICAgYXV0byB3a0hp
Z2hsaWdodCA9IGFkb3B0TlMoW1tfV0tBcHBIaWdobGlnaHQgYWxsb2NdIGluaXRXaXRoSGlnaGxp
Z2h0OmhpZ2hsaWdodC5oaWdobGlnaHQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIHRleHQ6dGV4dCBpbWFnZTpuaWxdKTsKIAogICAgIGlmIChbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzdG9yZUFwcEhpZ2hsaWdodDppbk5ld0dy
b3VwOnJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6KV0pCiAgICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmll
dzpzZWxmIHN0b3JlQXBwSGlnaGxpZ2h0OndrSGlnaGxpZ2h0LmdldCgpIGluTmV3R3JvdXA6aGln
aGxpZ2h0LmlzTmV3R3JvdXAgPT0gV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQ6
OlllcyByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOmhpZ2hsaWdodC5yZXF1ZXN0T3JpZ2luYXRlZElu
QXBwID09IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHA6Olllc107CkBA
IC0yMjIxLDcgKzIyMjEsNyBAQCAtICh2b2lkKV9yZXF1ZXN0UmVzb3VyY2U6KE5TVVJMUmVxdWVz
dCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNEYQogewogICAgIF9wYWdl
LT5yZXF1ZXN0UmVzb3VyY2UocmVxdWVzdCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2Nr
UHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImJiBlcnJvcikgewogICAgICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCi0gICAgICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSwgcmVzcG9uc2UubnNVUkxSZXNwb25zZSgpLCBuaWwpOworICAgICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCksIHJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSwgbmlsKTsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobmlsLCBuaWwsIGVycm9yLm5zRXJyb3IoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCmluZGV4IGFjNGEw
ZjQzNzAxNTJlZDU3MmI1MDkxZGZhNTFiYWViYWI4N2Y0ZTkuLmM4MDI5YzE0MGE2ZGQxNGIxOTY0
OTIyNWI4NzgzMGVlYzEzNDAwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5oCkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKIAogI2lm
IFVTRShRVUlDS19MT09LKQogICAgICAgICB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6
OlN0cmluZyYgdXRpKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKKyAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCAzODU1ODgyYzg3ZGM5ZWQzMWMx
ZWYwYmFiNjE2YjFlNjQ1OTQ0ZWVmLi44ZDNhODU2NDYyZWFlZjc0MWQ4YzI5ZTI1OTJmZDU3MzY2
ZjU5OWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLm1tCkBAIC0xMjIwLDcgKzEyMjAsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5Gcgog
ICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdh
dGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS0+bV93ZWJWaWV3
IGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVXaXRoRmlsZU5hbWU6
ZmlsZU5hbWUgdXRpOnV0aV07CiB9CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX25hdmlnYXRp
b25TdGF0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBOYXZp
Z2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tE
b2N1bWVudEluTWFpbkYKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+
PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5t
X3dlYlZpZXcgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6YnVm
ZmVyLmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdh
dGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6
bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZTpidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCku
Z2V0KCldOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggODAyZmZhYTZkNmVkYmVhMmU5NzI3
NzRlMjY5NjViMmRiYjJhNzM1ZS4uNjgzMzczZWFlMDBmNWRiNDJiODE0NmNlOWQ1MzFiYzhhYzBh
NTRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vz
c1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Byb3h5Q29jb2EubW0KQEAgLTMwMiwxMiArMzAyLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKCkKICAgICAgICAgaWYgKG5vRXJy
ICE9IEF1ZGlvQ29tcG9uZW50RmV0Y2hTZXJ2ZXJSZWdpc3RyYXRpb25zKCZyZWdpc3RyYXRpb25z
KSB8fCAhcmVnaXN0cmF0aW9ucykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHJlZ2lz
dHJhdGlvbnMgPSBhZG9wdENGKHJlZ2lzdHJhdGlvbnMpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBy
ZWdpc3RyYXRpb25zID0gYWRvcHRDRihyZWdpc3RyYXRpb25zKV0gKCkgewogICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGF1
dG8gcmVnaXN0cmF0aW9uRGF0YSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lz
dHJhdGlvbnMuZ2V0KCkpOwotICAgICAgICAgICAgd2Vha1RoaXMtPnNlbmQoTWVzc2FnZXM6Oldl
YlByb2Nlc3M6OkNvbnN1bWVBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoeyByZWdpc3RyYXRp
b25EYXRhIH0pLCAwKTsKKyAgICAgICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKHsgV1RGTW92ZShyZWdp
c3RyYXRpb25EYXRhKSB9KSwgMCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKaW5kZXggM2Y2ZGQxZjI0MmU3YTEx
NWVjZjc5ODM5MGYzNGI2MzVjNmU4ZDZmOS4uZjU4OTEyNDE3MDJkYWE0MjBjYzRlNmUyNDYyOGEx
Y2RlODkwN2QyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5oCkBAIC01MDYsNyArNTA2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdGFydERyYWcoY29u
c3QgV2ViQ29yZTo6RHJhZ0l0ZW0mLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1h
Z2UpOwogICAgIHZvaWQgc2V0RmlsZUFuZFVSTFR5cGVzKE5TU3RyaW5nICpmaWxlbmFtZSwgTlNT
dHJpbmcgKmV4dGVuc2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0cmlu
ZyAqdmlzaWJsZVVSTCwgTlNQYXN0ZWJvYXJkICopOwotICAgIHZvaWQgc2V0UHJvbWlzZWREYXRh
Rm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpl
eHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2li
bGVVUkwsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYXJjaGl2ZUJ1ZmZlciwgTlNTdHJpbmcgKnBh
c3RlYm9hcmROYW1lLCBOU1N0cmluZyAqcGFzdGVib2FyZE9yaWdpbik7CisgICAgdm9pZCBzZXRQ
cm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSosIE5TU3RyaW5nICpmaWxlbmFtZSwg
TlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0
cmluZyAqdmlzaWJsZVVSTCwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYXJjaGl2
ZUJ1ZmZlciwgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU1N0cmluZyAqcGFzdGVib2FyZE9y
aWdpbik7CiAgICAgdm9pZCBwYXN0ZWJvYXJkQ2hhbmdlZE93bmVyKE5TUGFzdGVib2FyZCAqKTsK
ICAgICB2b2lkIHByb3ZpZGVEYXRhRm9yUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKiwgTlNTdHJp
bmcgKnR5cGUpOwogICAgIE5TQXJyYXkgKm5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVz
dGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW5hdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDNkOWU4NzdiMGNiNzU2NTRiNjM5MTYzOTU1
N2Y1MmI2MDM5MmNhYzkuLjYyMzY3ZGM1YWQxZmUxMjIxZjdiMDk5ZTliYjQ0NTRkYjM3YTU4ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC00
NDQ5LDcgKzQ0NDksNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRGaWxlQW5kVVJMVHlwZXMoTlNT
dHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOUwogICAgIG1fcHJvbWlzZWRV
UkwgPSB1cmw7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdl
KFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0
ZW5zaW9uLCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxl
VVJMLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0
ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKm9yaWdpbklkZW50aWZpZXIpCit2b2lkIFdlYlZpZXdJbXBs
OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5n
ICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmlu
ZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJsZVVSTCwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogYXJjaGl2ZUJ1ZmZlciwgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU1N0cmluZyAq
b3JpZ2luSWRlbnRpZmllcikKIHsKICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQ
YXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoTmFtZTpwYXN0ZWJvYXJkTmFtZV07CiAgICAgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5PiB0eXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhPYmplY3RzOldlYkNvcmU6OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRU
eXBlKCksIG5pbF0pOwpAQCAtNDQ3MCw3ICs0NDcwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0
UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmls
ZW4KICAgICBzZXRGaWxlQW5kVVJMVHlwZXMoZmlsZW5hbWUsIGV4dGVuc2lvbiwgdGl0bGUsIHVy
bCwgdmlzaWJsZVVSTCwgcGFzdGVib2FyZCk7CiAKICAgICBpZiAoYXJjaGl2ZUJ1ZmZlcikgewot
ICAgICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOworICAg
ICAgICBhdXRvIG5zRGF0YSA9IGFyY2hpdmVCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZU5TRGF0YSgpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAg
W3Bhc3RlYm9hcmQgc2V0RGF0YTpuc0RhdGEuZ2V0KCkgZm9yVHlwZTooX19icmlkZ2UgTlNTdHJp
bmcgKilrVVRUeXBlV2ViQXJjaGl2ZV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKQEAgLTQ1MDEsNyArNDUwMSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByb3ZpZGVEYXRhRm9y
UGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TU3RyaW5nICp0CiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChbdHlwZSBpc0VxdWFsOm1fcHJvbWlzZWRJbWFnZS0+dXRpKCld
ICYmIG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHBsYXRmb3Jt
RGF0YSA9IG1fcHJvbWlzZWRJbWFnZS0+ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAg
aWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gbV9wcm9taXNlZEltYWdlLT5kYXRhKCktPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0
YTooX19icmlkZ2UgTlNEYXRhICopcGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6dHlwZV07CiAg
ICAgfQogCkBAIC00NTU0LDcgKzQ1NTQsNyBAQCBOU0FycmF5ICpXZWJWaWV3SW1wbDo6bmFtZXNP
ZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3RpbgogICAg
IFJldGFpblB0cjxOU0RhdGE+IGRhdGE7CiAKICAgICBpZiAobV9wcm9taXNlZEltYWdlKSB7Ci0g
ICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCk7Cisg
ICAgICAgIGRhdGEgPSBtX3Byb21pc2VkSW1hZ2UtPmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBl
ciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRhdGEuZ2V0KCldKTsKICAgICB9
IGVsc2UKICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzptX3Byb21pc2VkVVJMXSBvcHRpb25zOk5T
RmlsZVdyYXBwZXJSZWFkaW5nSW1tZWRpYXRlIGVycm9yOm5pbF0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCmluZGV4IGM0ODVjN2ZjMzEzZWEwODMzZmM2MDYyNjcxNjlkNjkyYTgy
NDA5MjguLmI0NjJkOGRiNWNjNjIwMzg2ZTc2ODNkYjI0ODM2YWIzY2U2NGZlZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTMyOCw3ICszMjgsNyBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogI2lmIFVTRShBUFBLSVQpCi0gICAgdmlydHVhbCB2b2lkIHNldFByb21pc2VkRGF0
YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNv
bnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2li
bGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVC
dWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgPSAwOwogI2VuZGlmCiAKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IDlhODE2ZmRiMzE4M2ExOWI2NzllODc3MDNhMGY0NDBlNWFiOTA5MDMuLmI0ZGE2
ZmQ2ODhlYmRlOWVjNWE3MWY3ODQ3OGJkYmY1ZjkwOWQ4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yNTksNyArMjU5LDcgQEAgY2xhc3MgSW50U2l6ZTsKIGNs
YXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJ1bkxvb3BPYnNlcnZlcjsKIGNsYXNzIFNlbGVj
dGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OwogY2xhc3MgVGV4dEluZGljYXRv
cjsKIGNsYXNzIFZhbGlkYXRpb25CdWJibGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGRmNTlkNTZmZDY5N2YyYWRmMjA5ZjZjNDdiZWYwNTFk
ODBjMTZiZDEuLmUxMjY0Y2UyMWJhNTdmMmE0Mjc0OGUzM2ExZGFkODhhMGUyNThiYzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0xNjgsNyAr
MTY4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIC0+IEUKICAgICByZXR1cm4gRXhjZXB0aW9uVHlw
ZTo6Tm9uZTsKIH0KIAotYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHlwZQorYXV0byBXZWJVUkxTY2hl
bWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpIC0+IEV4Y2VwdGlvblR5cGUKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwog
CkBAIC0xODcsMTAgKzE4Nyw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURh
dGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5CiAgICAgbV9kYXRh
U2VudCA9IHRydWU7CiAKICAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgaWYgKG1fc3luY0Rh
dGEpCi0gICAgICAgICAgICBtX3N5bmNEYXRhLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV9zeW5jRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAg
ICAgICAgbV9zeW5jRGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCkBAIC0yMTUsMTQgKzIxMiwxMSBAQCBhdXRv
IFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KSAtPiBFeGNlcHRpb25UeXBlCiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpXYWl0aW5n
Rm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcjsKIAogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsK
LSAgICAKLSAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7
Ci0gICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0
YS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKIAorICAgIGlmIChpc1N5bmMoKSkgewor
ICAgICAgICBzaXplX3Qgc2l6ZSA9IG1fc3luY0RhdGEuc2l6ZSgpOworICAgICAgICBWZWN0b3I8
dWludDhfdD4gZGF0YSA9IHsgbV9zeW5jRGF0YS50YWtlQXNDb250aWd1b3VzKCktPmRhdGEoKSwg
c2l6ZSB9OwogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwg
ZXJyb3IsIFdURk1vdmUoZGF0YSkpOwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAg
ICB9CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRh
c2tEaWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJj
ZUxvYWRlcklELCBlcnJvciksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2RkMGE0N2Yy
YzEzMDg1MjY3Li5mNmZmNDZlZWE1ZjI5MGI3YjdlM2ZlNTkyMWRmOWYxOTRiYWNkMTE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC00Myw3ICs0Myw2
IEBAIGNsYXNzIEZyYW1lSW5mbzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTg0LDcgKzgzLDcgQEAgcHVibGljOgogICAgIEV4Y2Vw
dGlvblR5cGUgd2lsbFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCAgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIEV4Y2VwdGlvblR5cGUgZGlkUGVyZm9ybVJlZGly
ZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpOwogICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVEYXRh
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVj
ZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIEV4
Y2VwdGlvblR5cGUgZGlkQ29tcGxldGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwog
CiAgICAgdm9pZCBzdG9wKCk7CkBAIC0xMTUsNyArMTE0LDcgQEAgcHJpdmF0ZToKIAogICAgIFN5
bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3N5bmNSZXNwb25zZTsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBtX3N5bmNEYXRhOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1
aWxkZXIgbV9zeW5jRGF0YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvQ2xpcGJvYXJkLmgKaW5kZXggNzg2NmNkYjE3NzQ2MDA3YWIwYTdhMTdjNTViODdjN2YxNjRj
MmJhZS4uNzI3OWY4NDRjYzJiYmQyYjAxN2ZlMGYwOTdkZTAxODcwYTlhODUyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaApAQCAtMzYsNyArMzYsNyBAQCB0eXBlZGVm
IHN0cnVjdCBfR3RrQ2xpcGJvYXJkIEd0a0NsaXBib2FyZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTUsNyArNTUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb3JtYXRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFN0cmluZz4mJik+JiYpOwogICAgIHZvaWQgcmVhZFRleHQoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdHJpbmcmJik+JiYpOwogICAgIHZvaWQgcmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29u
c3QgY2hhciosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJik+JiYpOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBjaGFyKiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYpOwog
ICAgIHZvaWQgd3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKTsKICAgICB2b2lkIGNsZWFy
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRH
dGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcApp
bmRleCBjMmJmNTE4M2IzMGYxMGU5ZWI3ODEzY2RhZGEyMjNlOTE4OWM3NDU5Li41OTY2ZDU1NzRj
MjgyZjUzMTY5NDA5NjA4Mjk2MGFlMzM5Y2ExMTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCkBAIC0xMjYsMTUgKzEyNiwxNSBAQCB2b2lkIENs
aXBib2FyZDo6cmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJp
bmc+JiYpPiYmIGNvbXBsZQogc3RydWN0IFJlYWRCdWZmZXJBc3luY0RhdGEgewogICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJBc3lu
Y0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KT4mJiBoYW5kbGVyKQorICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJBc3luY0RhdGEoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYg
aGFuZGxlcikKICAgICAgICAgOiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKQog
ICAgIHsKICAgICB9CiAKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKKyAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlv
bkhhbmRsZXI7CiB9OwogCi12b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiBm
b3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25z
dCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGd0a19j
bGlwYm9hcmRfcmVxdWVzdF9jb250ZW50cyhtX2NsaXBib2FyZCwgZ2RrX2F0b21faW50ZXJuKGZv
cm1hdCwgVFJVRSksIFtdKEd0a0NsaXBib2FyZCosIEd0a1NlbGVjdGlvbkRhdGEqIHNlbGVjdGlv
biwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlYWRCdWZm
ZXJBc3luY0RhdGE+IGRhdGEoc3RhdGljX2Nhc3Q8UmVhZEJ1ZmZlckFzeW5jRGF0YSo+KHVzZXJE
YXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJk
R3RrNC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAK
aW5kZXggMDdhYmI3MTMxOTg4NTNiNzg3YzYzMjRiZDQ4MGIxZTA4OGEyYTNkMy4uNWI4MWZhOGYy
OWQzZjdjZjFjM2YwOWQxZmMzYzg4NzM0ZGM1MWEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcApAQCAtMTIwLDE1ICsxMjAsMTUgQEAgdm9pZCBD
bGlwYm9hcmQ6OnJlYWRGaWxlUGF0aHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3Ry
aW5nPiYmKT4mJiBjb21wbGUKIHN0cnVjdCBSZWFkQnVmZmVyQXN5bmNEYXRhIHsKICAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAKLSAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5
bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
Jik+JiYgaGFuZGxlcikKKyAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRhKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYm
IGhhbmRsZXIpCiAgICAgICAgIDogY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkK
ICAgICB7CiAgICAgfQogCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRp
b25IYW5kbGVyOwogfTsKIAotdm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hhciog
Zm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29u
c3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb25z
dCBjaGFyKiBtaW1lVHlwZXNbXSA9IHsgZm9ybWF0LCBudWxscHRyIH07CiAgICAgZ2RrX2NsaXBi
b2FyZF9yZWFkX2FzeW5jKG1fY2xpcGJvYXJkLCBtaW1lVHlwZXMsIEdfUFJJT1JJVFlfREVGQVVM
VCwgbnVsbHB0ciwgW10oR09iamVjdCogY2xpcGJvYXJkLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwg
Z3BvaW50ZXIgdXNlckRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsTWFjLmgKaW5kZXggZDIyMzhmZGM5ZDE2Zjc3ZjhjM2QzMDJjYTk5NzZmZTgz
ZjFiM2YzNy4uYWI4N2MyYTdlOGMzNTdhNjViM2NmZTYwNzkzOGZkZmVjOGE2NTJiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTEw
MCw4ICsxMDAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZXhlY3V0ZVVuZG9SZWRvKFVuZG9PclJl
ZG8pIG92ZXJyaWRlOwogICAgIGJvb2wgZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoY29u
c3QgU3RyaW5nJiBzZWxlY3Rvcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdGFydERyYWcoY29uc3Qg
V2ViQ29yZTo6RHJhZ0l0ZW0mLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2Up
IG92ZXJyaWRlOwotICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0
IFN0cmluZyYgdGl0bGUsCi0gICAgICAgIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IHZpc2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRs
ZSwKKyAgICAgICAgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwg
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0
ZVNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0U2VjdXJlSW5wdXRT
dGF0ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5SW5wdXRDb250ZXh0QWJvdXREaXNjYXJk
ZWRDb21wb3NpdGlvbigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IGE0MTEyMTM1ZjJlZjE5MDE1YTUyZjFlMWIw
M2FlMzBhMWYyMjNkMmEuLmMzNjNlOTU1ZTg3OWMwZTE4NmI0MTUwOTA5MTMzNjVjMjBmZTkwNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
bW0KQEAgLTQwMCw3ICs0MDAsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzdGFydERyYWcoY29u
c3QgV2ViQ29yZTo6RHJhZ0l0ZW0mIGl0ZW0sIGNvbnN0IFNoYXJlYWJsZUJpdAogICAgIG1faW1w
bC0+c3RhcnREcmFnKGl0ZW0sIGltYWdlKTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0
UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYXJjaGl2
ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQordm9pZCBQYWdlQ2xpZW50
SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdp
bklkZW50aWZpZXIpCiB7CiAgICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsK
ICAgICBpbWFnZS0+c2V0RGF0YShXVEZNb3ZlKGltYWdlQnVmZmVyKSwgdHJ1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBlYWY3ZTA3
OWFlNDFmN2FkZTNmYzhjYWY1ZDg4MWYyY2ExYmEyMzc0Li4zMjNlZjAyOTJhZGUzNzZhMjBlMzk0
NmQ2NmY5ZWNlMzllNTUyOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0KQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUwogICAgICAgICByZXR1cm47CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHNoYXJlZE1lbW9y
eUltYWdlLT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1hZ2VIYW5kbGUuZGF0YVNpemUpOwogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKICAgICBpZiAoIWFyY2hpdmVIYW5kbGUuaGFu
ZGxlLmlzTnVsbCgpKSB7CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QXJjaGl2ZSA9IFNoYXJl
ZE1lbW9yeTo6bWFwKGFyY2hpdmVIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rp
b246OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnlBcmNoaXZlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCmluZGV4IGZh
OTQwMjVlZDc0NzMwZDI4ZTcxNjQ2Mjg1ZjllNWJhNjUzYjhmMTIuLmMyOGZlNjVmMGNmMTY0Mzk5
ODE4YWNhMzJmOTgxY2M3NzhmMWU5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBSZW1vdGVD
RE06OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1TZXNzaW9u
VHlwZSYsIGNvbnMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVtb3RlQ0RNOjpzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkgY29uc3QKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0CiB7
CiAgICAgLy8gVGhpcyBjaGVjayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBpbnNpZGUgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlcXVlc3RMaWNlbnNlKCkuCiAgICAgcmV0dXJuIHRydWU7
CkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBSZW1vdGVDRE06OmxvYWRBbmRJbml0aWFsaXplKCkK
ICAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpMb2FkQW5kSW5pdGlhbGl6ZSgpLCBtX2lkZW50aWZp
ZXIpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBSZW1vdGVDRE06OnNhbml0aXplUmVzcG9u
c2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjaGVjayB3aWxs
IGJlIGRvbmUsIGxhdGVyLCBpbnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVw
ZGF0ZUxpY2Vuc2UoKS4KICAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKaW5kZXggMGFkZGY4MzM1M2I2
ZWExYjJlOGIwMmM2YjdlZTNkYWY0NjhjZDM4My4uOGM0NTRlYjgzZTU5OTRhOGU0ZDU5MmQ1MWRm
OTFmZjliNTIzY2JlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETS5oCkBAIC00OCwxMyArNDgsMTMgQEAgcHJpdmF0ZToKICAgICBib29sIHN1cHBv
cnRzQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
JikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb25XaXRoUmVzdHJp
Y3Rpb25zKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBX
ZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRz
U2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1TZXNzaW9uVHlw
ZSYsIGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5h
bDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50IGRpc3RpbmN0
aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7
CiAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQgcGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQo
Y29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6
OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZGlzdGluY3RpdmVJZGVu
dGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBXZWJDb3JlOjpDRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPFdlYkNvcmU6
OkNETUluc3RhbmNlPiBjcmVhdGVJbnN0YW5jZSgpIGZpbmFsOwogICAgIHZvaWQgbG9hZEFuZElu
aXRpYWxpemUoKSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsK
ICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5n
JikgY29uc3QgZmluYWw7CiAKICAgICBWZWN0b3I8QXRvbVN0cmluZz4gc3VwcG9ydGVkSW5pdERh
dGFUeXBlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5zdXBwb3J0ZWRJ
bml0RGF0YVR5cGVzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCmluZGV4IGI1ZGVhMjFlOTk1YTczN2YwMzZm
NjQ1MzhjMWZiM2VjYjVlNmJiNTUuLmExM2U1MTQ2MGY2YmI5ZjgwZWYzZDFhODQyZWZjMGI5ZjQ0
NTkwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1L
ZXlTeXN0ZW1DCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlUHJveHk6
OkluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBkaXN0aW5jdGl2ZUlk
ZW50aWZpZXJzLCBwZXJzaXN0ZW50U3RhdGUpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9pZGVudGlm
aWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNr
JiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3Vj
Y2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsKICAgICAg
ICAgY2FsbGJhY2soRmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaAppbmRleCAxMDZiYTNiMTE2MWM4ZGYwOWQ3
MWRmZTY3OWJhMzNkNDIzMDc5ZTk2Li4yYzc4NTFlNDQwYjA4YTUyYTJhZTcwZGE3ZTQxODg4MmUz
YzYxNDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZS5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAKICAgICBJ
bXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gSW1wbGVtZW50YXRpb25UeXBlOjpSZW1vdGU7IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRo
Q29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwg
QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vz
c0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZv
aWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0o
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24ua2V5U3lzdGVtOyB9CiAgICAg
UmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCmluZGV4IGFmMGJhZDRjOTBkOGRkNTEzNzc0
YWVmNmExNWI3N2JhODlmYzUwNjQuLmM3NDBjMDQ1MDZmZGVkYWM5ZjRjZjUwMmMyMDVhOGEzN2Zj
YTQ1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0
cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGYKIHsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxi
YWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsKICAgICAgICAgY2FsbGJhY2soU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxlZCk7CkBAIC02
NSw3ICs2NSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nCiAgICAgfSwgbV9pZGVudGlmaWVy
KTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3Bv
bnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFj
dG9yeSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIExpY2VucwogICAgIH0KIAogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTo6UmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlKSwg
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChLZXlTdGF0dXNWZWN0b3ImJiBjaGFuZ2Vk
S2V5cywgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+JiYgbWVzc2FnZSwgYm9v
bCBzdWNjZWVkZWQpIG11dGFibGUgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRC
dWZmZXI+PiByZWFsTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gc3RkOjpudWxsb3B0
OwogICAgICAgICBpZiAobWVzc2FnZSAmJiBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkpCiAgICAg
ICAgICAgICByZWFsTWVzc2FnZSA9IG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKS5yZWxlYXNlTm9u
TnVsbCgpOwogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92ZShy
ZWFsTWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24uaAppbmRleCA0ZmZlNGNhY2VjY2RlNDNkNWNiMTFlMjM2Y2EwNDVhY2RhODNh
N2ViLi40ZTRjZDJjMDA1YzZiMDA2NWY5Y2RiMTg4YzRiY2UwYjViZmE2NjAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uLmgKQEAgLTU5LDggKzU5LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
c2V0Q2xpZW50KFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiYmIGNs
aWVudCkgZmluYWwgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsgfQogICAgIHZvaWQgY2xl
YXJDbGllbnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0cjsgfQotICAgIHZvaWQgcmVxdWVz
dExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZp
bmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGlj
ZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VV
cGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Cisg
ICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlw
ZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vu
c2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VU
eXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIExvYWRT
ZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQg
cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBS
ZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3Bw
CmluZGV4IDlhMjE5YTU0NGU1NTM4M2Y1NGU3MWRhYmQzNTRjYzQ0MGE0MTQyYjkuLjYyOTI2Nzk4
YzVjMTEzMjRhMzFhYTUwY2RhN2VkMWZiZjc0ZmU3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5j
cHAKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RXhw
ZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZQogCiAvLyBJZiBh
bGxEYXRhUmVjZWl2ZWQgaXMgdHJ1ZSwgdGhlIGNhbGxlciBleHBlY3RzIGVuY29kZWREYXRhU3Rh
dHVzKCkgdG8gYmUgPj0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGUKIC8vIGFmdGVy
IHRoaXMgZnVuY3Rpb24gcmV0dXJucyAoaW4gdGhlIHNhbWUgcnVuIGxvb3ApLgotdm9pZCBSZW1v
dGVJbWFnZURlY29kZXJBVkY6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKK3ZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXREYXRhKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmICgh
bV9ncHVQcm9jZXNzQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
LmgKaW5kZXggZTVjZmU5NGVjZDNhOWMwNjAwZmMwMDMyMGZmNDMwNjFjOTBlZDY5Yi4uNDBkMzcz
NGY3YTMyMmU4YmFjYjlkMWMwZGVhNzA3OWUyYWQxN2VhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5o
CkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFJlbW90ZUltYWdlRGVjb2RlckFWRiBmaW5hbAogICAg
IDogcHVibGljIFdlYkNvcmU6OkltYWdlRGVjb2RlcgogICAgICwgcHVibGljIENhbk1ha2VXZWFr
UHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVt
b3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGUoUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlciYg
bWFuYWdlciwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciYgaWRlbnRpZmll
ciwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKKyAgICBz
dGF0aWMgUmVmPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlKFJlbW90ZUltYWdlRGVjb2Rl
ckFWRk1hbmFnZXImIG1hbmFnZXIsIGNvbnN0IFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZp
ZXImIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGKG1hbmFnZXIsIGlkZW50aWZpZXIsIG1pbWVUeXBlKSk7CiAgICAg
fQpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0
ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2
ZWwgPSBXZWJDb3JlOjpTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBXZWJDb3JlOjpE
ZWNvZGluZ09wdGlvbnMmID0gV2ViQ29yZTo6RGVjb2RpbmdPcHRpb25zKFdlYkNvcmU6OkRlY29k
aW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250
ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwotICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRh
KFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
ZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShz
aXplX3QpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcAppbmRl
eCA0MWQ1Mzg4MDIzZDM5MTQ5NTIxODM1ZjY4OGRlNGQ0OGY2NWQ3NjdlLi4wODJiMzM2NmM4YmM3
MTMwZDc1ZDU2OThhN2Q3OWU2ODkyYWQ4ZjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
TWFuYWdlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBSZW1v
dGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIoU2hhcmVkQnVmZmVy
JiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitS
ZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2Vy
OjpjcmVhdGVJbWFnZURlY29kZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIHN0ZDo6b3B0
aW9uYWw8SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4gaW1hZ2VEZWNvZGVySWRlbnRpZmllcjsKICAg
ICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSB7IGRhdGEgfTsK
QEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OnNl
dFVzZUdQVVByb2Nlc3MoYm9vbCB1c2VHUFVQcm9jZXNzKQogICAgIEltYWdlRGVjb2Rlcjo6aW5z
dGFsbEZhY3RvcnkoewogICAgICAgICBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnN1cHBvcnRzTWVk
aWFUeXBlLAogICAgICAgICBSZW1vdGVJbWFnZURlY29kZXJBVkY6OmNhbkRlY29kZVR5cGUsCi0g
ICAgICAgIFt0aGlzXShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbikgeworICAgICAgICBbdGhpc10oRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKSB7CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW1hZ2VEZWNvZGVyKGRhdGEsIG1pbWVU
eXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgICAgICB9
CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oCmluZGV4IGMyMzc4MmI2
NTA0ZWM3OWJlNDZlMTI2ZjRlNTkxYjNmZjdmNmRiYTguLjM2MThhZmQxMjA5OGI1NTc2YjRkZDRm
ZmJmM2MwNmZiYTg0MmE3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oCkBA
IC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZW5zdXJl
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8UmVtb3RlSW1h
Z2VEZWNvZGVyQVZGPiBjcmVhdGVJbWFnZURlY29kZXIoV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBk
YXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpBbHBoYU9wdGlvbiwgV2ViQ29y
ZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIFJlZlB0cjxSZW1vdGVJbWFnZURl
Y29kZXJBVkY+IGNyZWF0ZUltYWdlRGVjb2RlcihXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpBbHBoYU9wdGlvbiwg
V2ViQ29yZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgLy8gR1BVUHJvY2Vz
c0Nvbm5lY3Rpb246OkNsaWVudC4KICAgICB2b2lkIGdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xv
c2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGUuY3BwCmluZGV4IDk2NmZjOTNiNzdhZmFhM2U2MjA4ZDdhYmE1YWVkMmM3YTk0Yzc0YjIuLjAw
NWEzN2NjMjZlYzRjMDkwMWJmNGYzNzEyMjM4NjVkZTJkMTY2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQ
cml2YXRlUmVtb3RlLmNwcApAQCAtNzgsNyArNzgsNyBAQCBTb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlOjp+U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZSgpCiAgICAgbV9ncHVQcm9jZXNzQ29ubmVj
dGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcmVt
b3RlU291cmNlQnVmZmVySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAotdm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjphcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgZGF0YSkKIHsKICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggMzYwMTc1YmZiZTlk
MWFmODNlZDU3OTEzNzNiNzc1ZWU3NTBhYzdjYy4uZWE1ZmEzZWMzNmMyYjg1OWVlNTc4Y2NkMGUw
MzQ4YzczY2I4NmQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKQEAgLTcyLDcgKzcy
LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCiAg
ICAgdm9pZCBzZXRBY3RpdmUoYm9vbCkgZmluYWw7Ci0gICAgdm9pZCBhcHBlbmQoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBhcHBlbmQoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWJvcnQoKSBmaW5h
bDsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZWRG
cm9tTWVkaWFTb3VyY2UoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAppbmRleCAxMWI0
YTg2ZTQ4NTJmNmMyMDYxZmEzZmM5YWYyOWY4ODk5ZjRlYjlmLi5iNDA4OWZkMzU0OGM5N2YxN2Zj
MmI5ZmIwMDI3ODBkNjQzY2YyM2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCkBAIC0xNjUs
MTAgKzE2NSwxMCBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzdG9yYWdlQ2hhbmdlZChT
aGFyZWRNZW1vcnkqIHN0b3JhZ2UsIGNvbnN0IFdlYkNvcmU6OgogICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6QXVkaW9TYW1wbGVzU3RvcmFnZUNo
YW5nZWQgeyBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgZGF0YVNp
emUgfSwgZm9ybWF0LCBmcmFtZUNvdW50IH0sIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgTWVk
aWFSZWNvcmRlclByaXZhdGU6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJs
ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpmZXRj
aERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6RmV0Y2hEYXRhIHsgfSwgW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1pbWVUeXBlID0gbWltZVR5cGUoKV0o
YXV0byYmIGRhdGEsIGRvdWJsZSB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKGRhdGEuc2l6ZSgpKQogICAgICAgICAgICAgYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpLCBtaW1lVHlwZSwgdGltZUNvZGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFS
ZWNvcmRlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01l
ZGlhUmVjb3JkZXJQcml2YXRlLmgKaW5kZXggMzAzYTU0Zjc2ZjE4NWU5NjQ1NGVmOWY1YmI0NjFm
MjhlMTI2Nzg2ZC4uNTc2ZmQxYzZlOTdjMGNhZDhjYmZlYzk0ZTNiZDM2MzMwNzZlNDRlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRl
clByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRp
YVJlY29yZGVyUHJpdmF0ZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgLy8gV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGUKICAgICB2b2lkIHZpZGVvU2FtcGxl
QXZhaWxhYmxlKFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiwgV2ViQ29yZTo6VmlkZW9TYW1wbGVNZXRh
ZGF0YSkgZmluYWw7Ci0gICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBk
b3VibGUpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmKSBmaW5hbDsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmco
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0UmVjb3Jk
aW5nKFN0YXJ0UmVjb3JkaW5nQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBhdWRpb1NhbXBs
ZXNBdmFpbGFibGUoY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBjb25zdCBXZWJDb3JlOjpQbGF0Zm9y
bUF1ZGlvRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBzaXpl
X3QpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNs
aWVudC5oCmluZGV4IDA2NzNmNzRkZGZiNDhlNWJkZjQzOGNkOTBiZTM3OTRlZWUyMDkxYmIuLjAz
NTNhYWJmN2Q0YjkyNWFhMmYxNTYyZDU3M2FhZjMwOTNjODNiYzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKQEAgLTMxLDkgKzMxLDkgQEAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIE5vZGU7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBzdHJ1Y3QgU2lt
cGxlUmFuZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuaAppbmRleCBhMDYzNTIwNDMzNWIzYWIwZTZkZmIwYzY3Nzc2N2Y0Mjhl
OGE3N2UyLi4xODBiMTExMWVjZjAxMTMyODA5MjY2YTFiY2UyN2QyNjBlNGZhMDBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgK
QEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgRE9NV2luZG93RXh0ZW5zaW9uOwogY2xhc3MgRE9NV3Jh
cHBlcldvcmxkOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+UGFnZUxvYWRlckNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxs
TG9hZFVSTFJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgQVBJOjpPYmplY3QqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWREYXRh
UmVxdWVzdChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6
U3RyaW5nJiwgY29uc3QgV1RGOjpVUkwmLCBBUEk6Ok9iamVjdCopIHsgfQorICAgIHZpcnR1YWwg
dm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25z
dCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpVUkwmLCBBUEk6
Ok9iamVjdCopIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYsIFJlZlB0cjxBUEk6
Ok9iamVjdD4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJG
cmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOGQ1MjRiNTI1YzZlN2EwY2M2YmRlNWU4
MGE0N2MxNzFlMzQxNDY4Yy4uOTRmZWQyZTdlMzYzMDI5MWY5OWY1Mzc4YWNiZGQyYzM5NTBkM2U2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAK
QEAgLTYyLDE4ICs2MiwxOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6
d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlcwogc3RhdGljIHZvaWQg
cmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkKIHsK
ICAgICAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoKS4KLSAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIq
Pihjb25zdF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8Y29u
c3QgU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIs
IGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25z
dCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCit2b2lkIEluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBw
YWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBl
bmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50LndpbGxMb2FkRGF0YVJlcXVlc3QpCiAgICAgICAg
IHJldHVybjsKIAogICAgIFJlZlB0cjxBUEk6OkRhdGE+IGRhdGE7CiAgICAgaWYgKHNoYXJlZEJ1
ZmZlcikgewotICAgICAgICBzaGFyZWRCdWZmZXItPnJlZigpOwotICAgICAgICBkYXRhID0gQVBJ
OjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hhciopc2hhcmVk
QnVmZmVyLT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCByZWxlYXNlU2hhcmVkQnVmZmVy
LCBzaGFyZWRCdWZmZXIpOworICAgICAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBzaGFyZWRC
dWZmZXItPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGNvbnRpZ3VvdXNCdWZmZXItPnJlZigp
OworICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhjb250aWd1
b3VzQnVmZmVyLT5kYXRhKCksIGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKSwgcmVsZWFzZVNoYXJl
ZEJ1ZmZlciwgY29udGlndW91c0J1ZmZlci5wdHIoKSk7CiAgICAgfQogCiAgICAgbV9jbGllbnQu
d2lsbExvYWREYXRhUmVxdWVzdCh0b0FQSSgmcGFnZSksIHRvQVBJKHJlcXVlc3QpLCB0b0FQSShk
YXRhLmdldCgpKSwgdG9BUEkoTUlNRVR5cGUuaW1wbCgpKSwgdG9BUEkoZW5jb2RpbmdOYW1lLmlt
cGwoKSksIHRvVVJMUmVmKHVucmVhY2hhYmxlVVJMLnN0cmluZygpLmltcGwoKSksIHRvQVBJKHVz
ZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAppbmRleCAzNmJkOTgwYjJmYWExYWY0NWFjMzEwNmVi
MDFlOWYzNzZiYTEzYWNmLi44NjNiZGFiNjI4NGNhM2FhZDJmOWQ1ZmZmNWZkNjhlYWI4YjJiNzMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC00
Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQoY29uc3QgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50QmFzZSopOwogCiAgICAgdm9p
ZCB3aWxsTG9hZFVSTFJlcXVlc3QoV2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB3aWxsTG9hZERhdGFSZXF1
ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29u
c3QgVVJMJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxMb2FkRGF0YVJl
cXVlc3QoV2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6
U3RyaW5nJiwgY29uc3QgVVJMJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlJiwgV2ViRnJhbWUmLCBSZWZQ
dHI8QVBJOjpPYmplY3Q+Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlJiwgV2ViRnJhbWUmLCBSZWZQ
dHI8QVBJOjpPYmplY3Q+Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2Rl
bFBsYXllck1hYy5tbQppbmRleCBlNTI0ZDhlMWIwMTdhYThlNWUwM2I4OTJkOTJiNzU4OTRjNThm
Mzc0Li5hNzg0ZWMzODhiMjI1MjRjYzBkYTYzMjc4ZTVlNzU5MTM3ZGNmNjZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01v
ZGVsUGxheWVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMv
QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KQEAgLTEwNiw3ICsxMDYsNyBAQCB2
b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyTWFjOjpjcmVhdGVGaWxlKFdlYkNvcmU6
Ok1vZGVsJiBtb2RlbFNvdXJjZSkKICAgICBpZiAoZmlsZSA8PSAwKQogICAgICAgICByZXR1cm47
CiAKLSAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCkt
PmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5zaXplKCkpOworICAgIEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VG
aWxlKGZpbGUpOwogICAgIG1fZmlsZVBhdGggPSBmaWxlUGF0aDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCmluZGV4IDk0ZDlkMmNjM2ViMjg4MGNkY2YyMmMwNzJhMzlhOTg5NTVmZDQ0MzAu
LjAyMjcwYTUzYWY5YmE4YmY4MGQ3YzNiM2RjZGM4Y2ViNTY1MTc2ZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmNwcApAQCAtMjgxLDkgKzI4MSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwK
ICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAg
IGF1dG8gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICgh
YnVmZmVyKSB7Ci0gICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZm
ZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJl
cXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIGNyZWF0ZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxlUmVz
b3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggMjU5NDQ5NDIzODU1ZmVkM2FhYWFiNDE0ODE5Zjg5NTFhM2I4YjdmZi4uMzEwZmNhNzg3NWMz
MmMzY2Q3NDc4ZGI2NGY1OWFjMmNmNTAxNjM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMTU1LDcgKzE1
NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vCiAgICAgaWYgKEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UobV9jb3JlTG9hZGVyLT5mcmFt
ZSgpLCByZXNwb25zZSkpIHsKICAgICAgICAgYXV0byBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlm
aWVyID0gbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCk7CiAgICAgICAgIG1faW50ZXJjZXB0Q29u
dHJvbGxlci5iZWdpbkludGVyY2VwdGluZ1Jlc3BvbnNlKGludGVyY2VwdGVkUmVxdWVzdElkZW50
aWZpZXIpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2Vw
dFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJhbWUoKSwgcmVzcG9uc2UsIGludGVyY2VwdGVkUmVx
dWVzdElkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaW50
ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgcG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIGluc3BlY3RvclJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvdmVy
cmlkZURhdGEpIG11dGFibGUgeworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJL
aXQ6OmludGVyY2VwdFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJhbWUoKSwgcmVzcG9uc2UsIGlu
dGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgcG9saWN5RGVjaXNpb25Db21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcild
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGluc3BlY3RvclJlc3BvbnNlLCBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlm
ICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkgewogICAgICAg
ICAgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzcG9u
c2U6IG5vdCBjb250aW51aW5nIGludGVyY2VwdCBsb2FkIGJlY2F1c2Ugbm8gY29yZUxvYWRlciBv
ciBubyBJRCIpOwogICAgICAgICAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5jb250aW51
ZVJlc3BvbnNlKGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIpOwpAQCAtMjk1LDExICsyOTUs
MTEgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNo
YXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmQKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9j
ZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlIGZvciAnJXMnIiwgbV9j
b3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwogICAgIFdFQlJFU09V
UkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzb3VyY2U6Iik7CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlX
cmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBzZW50
IGZyb20gdGhlIG5ldHdvcmsgcHJvY2Vzcy4iKTsKLSAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJf
UkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZTogVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRC
dWZmZXIiKTsKKyAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2Vp
dmVSZXNvdXJjZTogVW5hYmxlIHRvIGNyZWF0ZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIik7CiAg
ICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IG1fY29yZUxvYWRlci0+ZnJhbWUoKSkgewogICAgICAg
ICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQogICAgICAgICAgICAgICAgIHBh
Z2UtPmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29y
ZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnRlcm5hbEVycm9yS2V5KCksIFdlYkNvcmU6OkRp
YWdub3N0aWNMb2dnaW5nS2V5czo6Y3JlYXRlU2hhcmVkQnVmZmVyRmFpbGVkS2V5KCksIFdlYkNv
cmU6OlNob3VsZFNhbXBsZTo6Tm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4IDQyZGU0NjE0MTk3NzhiN2M0NTBmY2ExZWIwMzdj
MWNlOTdkMmQ2MzEuLmE3ZjQ1Yzg0MDFiMmZkMmY4NzBlMzY3OGM1OGZjMzEwYzJlMWYyNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgK
QEAgLTIwNyw3ICsyMDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3Rh
dGVDaGFuZ2VkKGJvb2wpIGZpbmFsIHsgfQogICAgIGJvb2wgZ2V0Rm9ybVZhbHVlKFN0cmluZyYg
Zm9ybVZhbHVlKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaGFuZGxlU2Nyb2xs
KFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpIGZp
bmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEo
KSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgd2lsbERldGFjaFJl
bmRlcmVyKCkgZmluYWw7CiAgICAgYm9vbCBwbHVnaW5IYW5kbGVzQ29udGVudE9mZnNldEZvckFj
Y2Vzc2liaWxpdHlIaXRUZXN0KCkgY29uc3QgZmluYWw7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBkMjNhYmI5ZTY1
MTFiMTNiYmQ1MjNhZjQ1MWY0NDE3ODczYTZjMWUwLi5kNDdmMzJiN2Q0OTE5NTZiZGNlNzdiZmU2
ZjE1Y2E3ODY1YmZkMTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTI1NTIsNyArMjU1Miw3IEBAIHZvaWQgUERGUGx1Z2lu
Ojpub3RpZnlEaXNwbGF5TW9kZUNoYW5nZWQoaW50KQogICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUERGUGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkg
Y29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQREZQbHVnaW46OmxpdmVSZXNv
dXJjZURhdGEoKSBjb25zdAogewogICAgIE5TRGF0YSAqcGRmRGF0YSA9IGxpdmVEYXRhKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggODhmNDVjZTUx
Y2UzMWRmMGM1YjNiNzU4NjIzNmMzZjBkOWM5M2FkMy4uNThkNzBhMzlhMTZkNmE0YzBlOGIwY2E5
ZDAzYWMzZDM3YWVkZmNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luLmgKQEAgLTYxLDcgKzYxLDcgQEAgY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0Owog
Y2xhc3MgSW50U2l6ZTsKIGNsYXNzIFNjcm9sbGJhcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
Mjg4LDcgKzI4OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQg
Y29udmVydFRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50SW5Mb2NhbENv
b3JkaW5hdGVzKSBjb25zdDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Qg
PSAwOwogCiAgICAgdmlydHVhbCBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlv
bihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGRjNTZkMmM2NmVkODZiOTYy
OTUwYTM0ODIwODNlMzQ1OGIzMmI1MmMuLjRkNTM3MzQ3MjcxMzZjZDZmNDFlMDk3MTFlYjdiZmQw
MzQ3ZDRiMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCkBAIC00MDMsMTAgKzQwMyw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9h
ZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAg
aWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1fbWFudWFsU3RyZWFtU3Rh
dGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9uc2UpOwotICAgICAgICBp
ZiAoIW1fbWFudWFsU3RyZWFtRGF0YSkKLSAgICAgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLT5h
cHBlbmQoYnl0ZXMsIGxlbmd0aCk7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS5hcHBlbmQo
Ynl0ZXMsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQzNyw3ICs0MzQs
NyBAQCB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIG1fbWFudWFs
U3RyZWFtU3RhdGUgPSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQ7CiAgICAgICAgIG1fbWFu
dWFsU3RyZWFtRXJyb3IgPSBlcnJvcjsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVs
bHB0cjsKKyAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhLnJlc2V0KCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTkyNiwxMSArOTIzLDExIEBAIHZvaWQgUGx1Z2luVmlldzo6d2lsbERl
dGFjaFJlbmRlcmVyKCkKICAgICBtX3BsdWdpbi0+d2lsbERldGFjaFJlbmRlcmVyKCk7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25z
dAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJj
ZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikg
ewotICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhICYmIG1fbWFudWFsU3RyZWFtU3RhdGUg
PT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkKQotICAgICAgICAgICAgcmV0dXJuIG1fbWFu
dWFsU3RyZWFtRGF0YTsKKyAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFs
U3RyZWFtU3RhdGU6OkZpbmlzaGVkKQorICAgICAgICAgICAgcmV0dXJuIG1fbWFudWFsU3RyZWFt
RGF0YS5nZXQoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xMjQzLDkg
KzEyNDAsOSBAQCB2b2lkIFBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSgpCiAKICAg
ICAvLyBEZWxpdmVyIHRoZSBkYXRhLgogICAgIGlmIChtX21hbnVhbFN0cmVhbURhdGEpIHsKLSAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogKm1fbWFudWFsU3RyZWFtRGF0YSkKKyAg
ICAgICAgYXV0byBidWZmZXIgPSBtX21hbnVhbFN0cmVhbURhdGEudGFrZSgpOworICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBidWZmZXIuZ2V0KCkpCiAgICAgICAgICAgICBtYW51
YWxMb2FkRGlkUmVjZWl2ZURhdGEoZWxlbWVudC5zZWdtZW50LT5kYXRhKCksIGVsZW1lbnQuc2Vn
bWVudC0+c2l6ZSgpKTsKLSAgICAgICAgbV9tYW51YWxTdHJlYW1EYXRhID0gbnVsbHB0cjsKICAg
ICB9CiAKICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6
RmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmgKaW5kZXggMjEyNmViOGVkYjU1OTM4NmIzNDIyNWViMmJkNWJmY2Q2ODAyM2YyMy4uZjc1YWM4
OWJmMzlhNTFlMDE4ZDI2MmMwYmU3YzBhNjJkZWI2OTNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvUGx1Z2luVmlld0Jhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
RXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNp
bmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0xMTUsNyArMTE2LDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBzaG91bGRBbGxvd1NjcmlwdGluZygpOwogCi0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0OworICAg
IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRh
KCkgY29uc3Q7CiAgICAgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIFN0cmluZyBnZXRTZWxlY3Rpb25Gb3JXb3Jk
QXRQb2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgY29uc3Q7CiAgICAgYm9vbCBleGlz
dGluZ1NlbGVjdGlvbkNvbnRhaW5zUG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIGNv
bnN0OwpAQCAtMjUyLDcgKzI1Myw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlIG1fbWFudWFsU3RyZWFtUmVzcG9uc2U7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBtX21hbnVhbFN0cmVhbUVycm9yOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IG1fbWFudWFsU3RyZWFtRGF0YTsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVy
IG1fbWFudWFsU3RyZWFtRGF0YTsKIAogICAgIC8vIFRoaXMgc25hcHNob3QgaXMgdXNlZCB0byBh
dm9pZCBzaWRlIGVmZmVjdHMgc2hvdWxkIHRoZSBwbHVnaW4gcnVuIEpTIGR1cmluZyBwYWludGlu
Zy4KICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX3RyYW5zaWVudFBhaW50aW5nU25hcHNo
b3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IGZlZThmZWE3
YmNjOGQ1OWMwN2UzYzViYTRkNjA5NTUyYTRkNjI4YmYuLmIwNGNjY2YxMTNlNDkyOGZhNjYzODNi
ZDI0MzFkYjg3NDg1M2NjYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
Y3BwCkBAIC03MSwxNiArNzEsMTUgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKICAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2Vp
dmVSZXNwb25zZSB7IHJlc3BvbnNlLCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKK3ZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghbV9jb25u
ZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7Ci0gICAgICAgIGlmICghc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpKQotICAgICAgICAgICAg
bV9yZXNwb25zZURhdGEgPSBidWZmZXItPmNvcHkoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKS0+YXBwZW5kKFdU
Rk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTaGFy
ZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkpCisgICAgICAgICAgICBtX3Jlc3BvbnNl
RGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKTsKKyAgICAgICAgc3RkOjpnZXQ8U2hhcmVkQnVm
ZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDYsOCArMjA1LDggQEAgdm9pZCBXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCiAgICAg
c3dpdGNoT24obV9yZXNwb25zZURhdGEsIFt0aGlzXShzdGQ6Om51bGxwdHJfdCYpIHsKICAgICAg
ICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7Ci0gICAgfSwgW3Ro
aXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKLSAgICAgICAgZGlkUmVjZWl2ZURhdGEo
V1RGTW92ZShidWZmZXIpKTsKKyAgICB9LCBbdGhpc10oY29uc3QgU2hhcmVkQnVmZmVyQnVpbGRl
ciYgYnVmZmVyKSB7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKCpidWZmZXIuZ2V0KCkpOwogICAg
ICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9LCBb
dGhpc10oUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQuaAppbmRleCBiMzQ3Y2FkMmFiNWY1NzFiMWEwZTIwNzIwODA0MzY3ZDc3MDE4NjAw
Li42YjBhNDE3Y2YwZDNhZTBkN2I4OTNhOTk4NjgzYWJmMmJjNGE0ZDk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9GZXRjaExvYWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtl
ckZldGNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4K
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00OSw3ICs1MCw3IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYmKSBmaW5hbDsK
ICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkRmluaXNoKCkgZmluYWw7CkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAg
ICAgc3RkOjpvcHRpb25hbDxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX25l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIHsgZmFsc2UgfTsKICAgICBib29s
IG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07
Ci0gICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiwgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiwgVW5pcXVlUmVmPFdlYkNvcmU6OlJlc291cmNl
RXJyb3I+PiBtX3Jlc3BvbnNlRGF0YTsKKyAgICBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3Qs
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIsIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVu
aXF1ZVJlZjxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CiAgICAgYm9v
bCBtX2RpZEZpbmlzaCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4
IDgxZTM3OWUzM2QxYTlhY2RjODZlZjVjNGJlMjFhNzI2MGQ5NGQ0OGUuLjdjZmMwM2E4NWQzOWQ4
MWYzOTJjMGFhMTMwZjgzZmJkMmM4MzRmMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0x
NDIsNyArMTQyLDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUoY29u
c3QgU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSwgY29uc3Qgc3RkOjoKIAogI2lmIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1l
bnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50
aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhKQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEoaWRlbnRpZmllciwgY29udGVu
dFR5cGUsIHByZWZlcnJlZEZpbGVOYW1lLCBkYXRhLmdldCgpKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKaW5kZXggNTA2ZDlmNTQxMzhkMzdjYjRjNjRlZDQ2MGY1OWE1YzI4ZmU1MjJhNi4uYjA1ODYx
ODkxZWNjODRjNjM2OGEyMDZjMjcwMTA2MGY1MDUyZjVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApA
QCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkTW92ZVJhbmdlQWZ0ZXJE
ZWxldGUoY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVS
YW5nZSYpIGZpbmFsOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICB2b2lk
IHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJ
ZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0
IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCkgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8
V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDRiZGJiY2NkM2ZiYzYyMGUwNzU0MTA1Y2VhMDllZGRm
MDUxMjBiNmIuLjE0YTA4M2NhMjA3YTkwNjNjZjgwYjFlN2U5NjcwYTQ4N2NmNGQzOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE4OCw4ICsxMTg4LDggQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIpCiAgICAgICAgICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9h
ZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2Ug
ZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+ZGF0YSgp
IDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6
IDApOworICAgICAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNv
dXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICAgICAgICAgIElQQzo6
RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3Vy
Y2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VE
YXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgICAgICAgICB3ZWJQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3Vz
dG9tQ29udGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgp
LCBkYXRhUmVmZXJlbmNlKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcAppbmRleCBmNDFhNzBlZjViYjZjMGVjZThiZDg2Mjc0MTE2MDFjZjczMGU2MmExLi40
YThiZWU1N2ZkYjFmZmNkZWYwMDg5ZmE2NWU5NzUzNzUwZDI1MGU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIGludDY0X3QgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBjCiAgICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50OwogfQogCi1pbnQ2NF90IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitpbnQ2NF90IFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9y
eTo6SGFuZGxlIGhhbmRsZTsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggZTI4MDk5NjNmNGY1MDY4MWI3ZDAxZjQx
YTY4NTMxYWI3MzIxNGZiMC4uMWZmODNlMTFiYzE3ODlhYWMwZjkwMGM5M2RjMjJmYmYyMzllYTJi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNjYsNyArNjYsNyBAQCBwcml2
YXRlOgogCiAgICAgaW50NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VHlwZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBp
bnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNldEJ1
ZmZlckZvclR5cGUoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRVUkwo
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50
NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAg
ICAgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRleCAwN2IxNjdlMGVlZWU3Njg4NzViMDM5ZGZhNTlmNWZk
MTNjNzU0ZTEwLi5lZDkzYWViN2VhOTIwYWU2YzZkMzZiOTg1ZDgxZjEyNjZkNzc1N2ZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlBy
ZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTMyLDcgKzMyLDYg
QEAKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZm
ZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNDUsMTMgKzQ0LDEyIEBAIFdl
YlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5n
JiBmaWxlTmFtZSwgY29uc3QgU3RyCiAgICAgOiBtX2ZpbGVOYW1lIHsgZmlsZU5hbWUgfQogICAg
ICwgbV91dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQotICAgICwgbV9idWZm
ZXIgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KIHsKIH0KIAogV2ViUHJldmlld0xvYWRlckNs
aWVudDo6fldlYlByZXZpZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV2ViUHJl
dmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK3ZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byB3ZWJQYWdlID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShtX3BhZ2VJRCk7CiAgICAgaWYgKCF3ZWJQ
YWdlKQpAQCAtNjksMTMgKzY3LDEyIEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlk
RmluaXNoTG9hZGluZygpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSht
X2J1ZmZlci5nZXQoKSk7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgd2ViUGFnZS0+ZGlk
RmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXItPnRha2Uo
KS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkRmFpbCgpCiB7
Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgbV9idWZmZXItPnJlc2V0KCk7CiB9CiAKIHZv
aWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZv
aWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IDA0OTJjZWVjMmY5YjljZDg1MzgzODQ4NGZiYzI2
YzA3Y2I1M2RhODcuLjdiODIxNTBlOTAxY2QzYWMyOTdiMzdhNzc2YmRkYzBmMmE5YjAwMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0yOSw2ICsyOSw4IEBA
CiAKICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRC
dWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDUsNyArNDcsNyBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgV2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbCgpIG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9y
dHNQYXNzd29yZEVudHJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNTQs
NyArNTYsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1lOwogICAgIGNv
bnN0IFN0cmluZyBtX3V0aTsKICAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3Bh
Z2VJRDsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBXZWJD
b3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggYTY0YzZhOGIzYzY5NWUx
NzMzNjQzMzZiY2IwZjY4ZGJkZDljMmQyMS4uZTFlMGU2MTEyYTJkZWRjM2I4YmI2MzA5ODUzNTM3
NmVmNDNhZDUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtMTUwLDcgKzE1
MCw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAKICAgICBOU1VSTFJlc3BvbnNlICpyZXNw
b25zZSA9IGltYWdlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKICAgICAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7Cisg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAgICAgc2l6ZV90
IGltYWdlU2l6ZSA9IGltYWdlQnVmZmVyLT5zaXplKCk7CiAKICAgICBhdXRvIHNoYXJlZE1lbW9y
eUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqaW1hZ2VCdWZmZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDliZDRjZDJk
MGNiMTAzYjQ1YWE4ZTZjMWQ0MjdjMGIxN2JmNWVkMTMuLmQ4OGY0NGNmY2RlNWUxNWY2NmMxMjRi
NDBmNWI1NDM1Yjk0Njk3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKQEAgLTM0MCwxMCArMzQwLDEwIEBAIFN0cmluZyBXZWJGcmFtZTo6c291
cmNlKCkgY29uc3QKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBtX2NvcmVG
cmFtZS0+bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWRvY3VtZW50
TG9hZGVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBk
b2N1bWVudExvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNl
RGF0YSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBkZWNvZGVyLT5lbmNv
ZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEt
PnNpemUoKSk7CisgICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNv
dXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6
ZSgpKTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjpjb250ZW50c0FzU3RyaW5nKCkgY29uc3QgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDRhZDY3
N2EzZDA2YjJiYzEzMDllYjk1ZWY2NDVkOGI2ZmI1NjdiZmUuLmY0NmQxOTY4NzI0N2ExNDZiNWFl
MTI0NDU3NWMyNTA3MDhiYzhlM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0xNzM4LDcgKzE3MzgsNyBAQCBOT19SRVRVUk4gdm9pZCBXZWJQ
YWdlOjpsb2FkUmVxdWVzdFdhaXRpbmdGb3JQcm9jZXNzTGF1bmNoKExvYWRQYXJhbWV0ZXJzJiYs
IFVSTAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJz
aXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBz
aGFyZWRCdWZmZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNp
YmlsaXR5IHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQordm9pZCBXZWJQYWdlOjpsb2FkRGF0
YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQg
c2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBz
aGFyZWRCdWZmZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNp
YmlsaXR5IHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQogewogI2lmIEVOQUJMRShBUFBfQk9V
TkRfRE9NQUlOUykKICAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sICZtX21haW5GcmFtZS5nZXQoKSk7CkBAIC0xNzUzLDcgKzE3
NTMsNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaAogCiAgICAgLy8gTGV0IHRoZSBJbmplY3Rl
ZEJ1bmRsZSBrbm93IHdlIGFyZSBhYm91dCB0byBzdGFydCB0aGUgbG9hZCwgcGFzc2luZyB0aGUg
dXNlciBkYXRhIGZyb20gdGhlIFVJUHJvY2VzcwogICAgIC8vIHRvIGFsbCB0aGUgY2xpZW50IHRv
IHNldCB1cCBhbnkgbmVlZGVkIHN0YXRlLgotICAgIG1fbG9hZGVyQ2xpZW50LT53aWxsTG9hZERh
dGFSZXF1ZXN0KCp0aGlzLCByZXF1ZXN0LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHN1YnN0
aXR1dGVEYXRhLmNvbnRlbnQoKSksIHN1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCksIHN1YnN0aXR1
dGVEYXRhLnRleHRFbmNvZGluZygpLCBzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCksIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2Jq
ZWN0KCkpLmdldCgpKTsKKyAgICBtX2xvYWRlckNsaWVudC0+d2lsbExvYWREYXRhUmVxdWVzdCgq
dGhpcywgcmVxdWVzdCwgY29uc3RfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4oc3Vic3Rp
dHV0ZURhdGEuY29udGVudCgpKSwgc3Vic3RpdHV0ZURhdGEubWltZVR5cGUoKSwgc3Vic3RpdHV0
ZURhdGEudGV4dEVuY29kaW5nKCksIHN1YnN0aXR1dGVEYXRhLmZhaWxpbmdVUkwoKSwgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmpl
Y3QoKSkuZ2V0KCkpOwogCiAgICAgLy8gSW5pdGF0ZSB0aGUgbG9hZCBpbiBXZWJDb3JlLgogICAg
IEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCgqbV9tYWluRnJhbWUtPmNvcmVGcmFt
ZSgpLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CkBAIC0zODYxLDcgKzM4NjEsNyBAQCB2b2lk
IFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKAogCiB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFP
ZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmIGNh
bGxiYWNrKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChXZWJGcmFtZSogZnJhbWUg
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkgewogICAgICAgICBp
ZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IHBsdWdpblZpZXdGb3JGcmFtZShmcmFtZS0+Y29y
ZUZyYW1lKCkpKQogICAgICAgICAgICAgYnVmZmVyID0gcGx1Z2luVmlldy0+bGl2ZVJlc291cmNl
RGF0YSgpOwpAQCAtMzg3Nyw3ICszODc3LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3Vy
Y2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmQKICAg
ICBjYWxsYmFjayhkYXRhUmVmZXJlbmNlKTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXJj
ZVVSTCkKK3N0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRh
Rm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cmNlVVJMKQogewogICAgIERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsK
ICAgICBpZiAoIWxvYWRlcikKQEAgLTM4OTIsNyArMzg5Miw3IEBAIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYg
cmVzb3VyCiAKIHZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMU3RyaW5nLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlm
IChhdXRvKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQp
KSB7CiAgICAgICAgIFVSTCByZXNvdXJjZVVSTChVUkwoKSwgcmVzb3VyY2VVUkxTdHJpbmcpOwog
ICAgICAgICBidWZmZXIgPSByZXNvdXJjZURhdGFGb3JGcmFtZShmcmFtZS0+Y29yZUZyYW1lKCks
IHJlc291cmNlVVJMKTsKQEAgLTY5ODcsNyArNjk4Nyw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkR2V0
TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVudGlm
aWVyCiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7CiAKLSAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9y
SWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIudG9JbnRlZ2VyKCksIFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
KiBpY29uRGF0YSkgbXV0YWJsZSB7CisgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNp
c2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLnRvSW50ZWdlcigpLCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGljb25EYXRhKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyBpY29uRGF0YSB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhNWM0MmIzMmNkODkyZmRmNTg2Zjg1ZTI5MTY0
M2Y0ZTcxOTc2MTkwLi5kOTk2ZDEzY2JhNWMyYzQyYTVmN2U5OWFmMTVmNGI4ZmNjZjRiYmIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0yMTYsNyAr
MjE2LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
IGNsYXNzIFNlbGVjdGlvbkRhdGE7CiBjbGFzcyBTZWxlY3Rpb25HZW9tZXRyeTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0
dXRlRGF0YTsKIGNsYXNzIFRleHRDaGVja2luZ1JlcXVlc3Q7CiBjbGFzcyBWaXNpYmxlUG9zaXRp
b247CkBAIC0xMzk3LDcgKzEzOTcsNyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykK
ICAgICB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGkpOwotICAgIHZvaWQgZGlkRmlu
aXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAg
dm9pZCByZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+
JiYpOwogI2VuZGlmCiAKQEAgLTE1OTYsNyArMTU5Niw3IEBAIHByaXZhdGU6CiAKICAgICBTdHJp
bmcgc291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAotICAgIHZvaWQgbG9hZERhdGFJbXBsKHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmLCBzdGQ6
Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgV2ViQ29yZTo6U3Vic3RpdHV0
ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNo
b3VsZE5vdEFsbG93KTsKKyAgICB2b2lkIGxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYsIHN0ZDo6b3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6
U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90
QWxsb3cpOwogCiAgICAgLy8gQWN0aW9ucwogICAgIHZvaWQgdHJ5Q2xvc2UoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGM5NWMzODQ2MzkyMjE4NGYyNTdhNzE5ZGI1
YmE5YTQ4MjlhZWRmMWIuLjg1ZTY1MTg2OTJlZDYwYzc4OGU3MmE3Y2UzMmYzZjBlMTVjYTc3ODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCkBAIC0zMjE3LDcgKzMyMTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25P
bkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQogICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1h
Z2UgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKmVsZW1lbnQucmVuZGVyZXIoKSkuY2FjaGVkSW1h
Z2UoKTsKICAgICAgICAgaWYgKCFjYWNoZWRJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNl
QnVmZmVyKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hh
cmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpAQCAtNDY4Myw3ICs0NjgzLDcgQEAgdm9p
ZCBXZWJQYWdlOjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoZmlsZU5hbWUsIHV0aSkp
OwogfQogCi12b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBXZWJQYWdlOjpkaWRG
aW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKCFidWZmZXIuaXNFbXB0eSgpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQppbmRleCA2MGY4NGE0NWMzODAzNWYyZGNlOTI1Y2JlZTJjMzE5OTJlNjQwMzJmLi4zY2I1
MDYyNGJmMGQ3YTgxMTAyZjdjODU0NGIzNDFkYjk2NjI3YmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtNTY2LDcgKzU2
Niw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0CiAgICAgaWYgKGZyYW1lLnNlbGVjdGlvbigp
LmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLmVkaXRvcigpLmRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGZyYW1l
LmVkaXRvcigpLmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKTsKICAg
ICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAg
ICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1
ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nl
c3NXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNw
cAppbmRleCBkM2QzOGNhYzQxMjExZDdlMjliNTdmMjQ1MjM2NGUzN2I0MjNjMzFhLi4zN2YyN2U5
NTJkMDcxNzExMjFjYjRmNTQ4N2E4Yjg0YjlmOGE2MzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKK1JlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNv
bnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCmluZGV4IDFmNTU4NGZhMzg3ZDc2Y2Nl
OTRmZjdiNTY5NjhlN2U4MjIwNjA2MDYuLmEyNTU2MGExMGMyODgyZTFhYmQxNzg0NTY5NDg2ZWEx
M2VkODk2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQv
UGluZ0hhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGlu
Z0hhbmRsZS5oCkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CiAgICAgICAgIHBpbmdMb2FkQ29tcGxldGUoeyB9LCByZXNwb25zZSk7CiAgICAg
fQotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCkgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRl
KCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUq
LCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50KSBmaW5hbCB7IHBp
bmdMb2FkQ29tcGxldGUoKTsgfQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
IHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsg
cGluZ0xvYWRDb21wbGV0ZShlcnJvcik7IH0KICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikgZmluYWwgeyByZXR1cm4gbV9zaG91bGRV
c2VDcmVkZW50aWFsU3RvcmFnZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9ucy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RP
TS9ET01VSUtpdEV4dGVuc2lvbnMubW0KaW5kZXggZWIzOTQxZjI2NmRmMTNjMjhhOTA2ZWU3ZDE2
MWFlMjFlMTc1NDA5MS4uNjM1NWI2ZjkwMzE4MDA1NWNiNjA3YTgwYmU3NzAxMzg0ZDg4ZGQ3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTVVJS2l0RXh0ZW5zaW9u
cy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NVUlLaXRFeHRlbnNpb25z
Lm1tCkBAIC0zODgsNyArMzg4LDcgQEAgLSAoTlNEYXRhICopZGF0YVJlcHJlc2VudGF0aW9uOihC
T09MKXJhd0ltYWdlRGF0YQogICAgIGF1dG8qIGRhdGEgPSByYXdJbWFnZURhdGEgPyBjYWNoZWRJ
bWFnZS0+cmVzb3VyY2VCdWZmZXIoKSA6IGltYWdlLT5kYXRhKCk7CiAgICAgaWYgKCFkYXRhKQog
ICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBkYXRhLT5jcmVhdGVOU0RhdGEoKS5hdXRv
cmVsZWFzZSgpOworICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0Rh
dGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKW1pbWVUeXBlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAppbmRleCBhMjU5OGYzMmZiNzYwYTdkODgzYzlmNGNlZWMxOGNmNTkx
ZWI4ZWFkLi45NTlkNzQ4YjU2YmUxMDc2YmQ5Nzc5OTIyY2QzNTZkMjFhNjgxNzRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI0OCw3ICsyNDgsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2VuZEgyUGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVk
PFNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+JiYpPiYmKSBmaW5hbDsKIAogICAgIHZv
aWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3Jl
OjpMaW5rSWNvbiYsIHVpbnQ2NF90Pj4mKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaGVkTG9hZGlu
Z0ljb24oV2ViQ29yZTo6U2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJ
Y29uKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIAogI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGJvb2wgbV9sb2FkaW5nSWNvbiB7IGZhbHNlIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCmluZGV4IGI4NDlkMmFhYzJhOTNmYmVlNDE3MjlmMjRhODZjZGNmNmIx
ZmUwMTkuLmFhMmNjOTgxNDc0YTEzY2U1MDg0Nzk4OTQyMzY4NDQ5MWM4OGY2ZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0yMDEyLDcgKzIwMTIsNyBAQCBSZWZQdHI8V2ViQ29y
ZTo6TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0
ZVByZXZpZXdMbwogICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fZmlsZVBhdGg7CiAgICAg
ICAgIFJldGFpblB0cjxOU0ZpbGVIYW5kbGU+IG1fZmlsZUhhbmRsZTsKIAotICAgICAgICB2b2lk
IGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpIG92
ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGF1dG8gZGF0YUFycmF5ID0gYnVmZmVyLmNyZWF0ZU5TRGF0YUFycmF5KCk7CiAgICAgICAg
ICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBkYXRhQXJyYXkuZ2V0KCkpCkBAIC0yMDk0LDcgKzIw
OTQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29u
cyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcgogICAgICAgICB9CiAKICAgICAgICAgbV9s
b2FkaW5nSWNvbiA9IHRydWU7Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVj
aXNpb25Gb3JJY29uKHRydWUsIGljb24tPnNlY29uZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH1dIChXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGJ1ZmZlcikgeworICAgICAgICBk
b2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29uLT5zZWNv
bmQsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGZpbmlzaGVkTG9hZGluZ0ljb24o
YnVmZmVyKTsKQEAgLTIxMzEsNyArMjEzMSw3IEBAIHN0YXRpYyBOU0ltYWdlICp3ZWJHZXROU0lt
YWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTaXplIHNpemUpCiB9CiAjZW5kaWYgLy8gIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVk
TG9hZGluZ0ljb24oV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBpY29uRGF0YSkKK3ZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogaWNvbkRhdGEpCiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
QVNTRVJUKG1fbG9hZGluZ0ljb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAy
NGI2OTk3MDZkZjBkNmI3MTkyYWE1MjAyZGU2MWQ4YjFlNTczMmY5Li41MjdmYTU1MjE5MGJhMDAx
NDUxN2ZmZGU3Mzc3MjBiMmU3YTkwYWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApA
QCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogCiAgICAgaW50NjRfdCBhZGRUeXBlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGlu
dDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKKyAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgaW50NjRfdCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggZmMwNzc2ZTYyZDY2YmU5YWM5M2Q0ODdk
ZGZkMzAwYTZkNDA3YzU1My4uMzk4Njg1OWY3MzM4ZTI4NDU3ZWQ0YjE5MGNiYTY3MDUyMjEwMDI0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMTU0LDcgKzE1NCw3IEBAIGlu
dDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBjCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0
ZWJvYXJkTmFtZSkuc2V0VHlwZXMocGFzdGVib2FyZFR5cGVzKTsKIH0KIAotaW50NjRfdCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9h
cmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLCBwYXN0ZWJvYXJkVHlw
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRh
dGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3Vy
Y2UubW0KaW5kZXggMjg5YzAwMjliZjkxMzQxOGQwYjI5OWY5MGE0ZDk3MTEzYmM1OGE0Yi4uODNl
ODU5MTQzNDVlYTdjYjg0MWQ5OWZkMWZiNjY2ZDhjY2YwMzAyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNDYwLDEwICs0NjAs
MTAgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKE5TRGF0YSAqKWRhdGEKIHsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2
YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZh
dGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURh
dGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPmNy
ZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0g
KGlkIDxXZWJEb2N1bWVudFJlcHJlc2VudGF0aW9uPilyZXByZXNlbnRhdGlvbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlv
bi5tbQppbmRleCA4MGNkMzBlZjQ2NzYwZTE0YzhlNjdhODhhMjczM2M5ZDQzN2ZhNWQ5Li4zOGQ3
ZTUzMmQ2ZWFhMGNhYzM4ODYyZjNlMGUxNjlmZTI4MTI3N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQpA
QCAtMjMwLDcgKzIzMCw3IEBAIC0gKEJPT0wpY2FuU2F2ZUFzV2ViQXJjaGl2ZQogLSAoTlNTdHJp
bmcgKilkb2N1bWVudFNvdXJjZQogewogICAgIGlmIChbc2VsZiBfaXNEaXNwbGF5aW5nV2ViQXJj
aGl2ZV0pIHsgICAgICAgICAgICAKLSAgICAgICAgU2hhcmVkQnVmZmVyICpwYXJzZWRBcmNoaXZl
RGF0YSA9IFtfcHJpdmF0ZS0+ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNo
aXZlRGF0YSgpOworICAgICAgICBhdXRvICpwYXJzZWRBcmNoaXZlRGF0YSA9IFtfcHJpdmF0ZS0+
ZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdLT5wYXJzZWRBcmNoaXZlRGF0YSgpOwogICAgICAg
ICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6cGFyc2VkQXJj
aGl2ZURhdGEgPyBwYXJzZWRBcmNoaXZlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwg
ZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXgg
ODM4ZTQxMzM4MWE4MDc1YTNkNjI0NTk0NTUyNjdhNWJiYjU1YTk5MS4uMjhkODc1OTI5Y2NhY2Ri
OWExMzg4YTgyNmIyZmQ1ZWNmNDZlY2NkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQwLDggKzM1NDAsOCBAQCBzdGF0aWMgUmV0
YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdCYgaAogICAgIH0KIAogICAgIGlmIChhdXRvKiBpbWFnZSA9IGhpdFRlc3RSZXN1
bHQuaW1hZ2UoKSkgewotICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKLSAgICAgICAgICAgIFtpdGVtcyBhZGRPYmplY3Q6YWRv
cHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6
YnVmZmVyLT5kYXRhKCkgbGVuZ3RoOmJ1ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKKyAgICAgICAg
aWYgKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFn
ZS0+ZGF0YSgpKQorICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFn
ZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOwogICAg
IH0KIAogICAgIGlmICghaGl0VGVzdFJlc3VsdC5zZWxlY3RlZFRleHQoKS5pc0VtcHR5KCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2Uu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCmluZGV4
IGIwOGMxZDIxY2Y5ZjA0ZTYxMWI1OTVlZGUzY2I2NWExN2M0OTk3OWUuLjEyZDU5YzBhMTc2ODE4
ZTY2MmM0M2MwNzQ0YTUzYTEwMWM4NTYxZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQpAQCAtMTYzLDIxICsxNjMsMjEgQEAgLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCiAtICh2b2lkKWVuY29kZVdp
dGhDb2RlcjooTlNDb2RlciAqKWVuY29kZXIKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IF9wcml2
YXRlLT5jb3JlUmVzb3VyY2UuZ2V0KCk7Ci0gICAgCi0gICAgTlNEYXRhICpkYXRhID0gbmlsOwor
CisgICAgUmV0YWluUHRyPE5TRGF0YT4gZGF0YTsKICAgICBOU1VSTCAqdXJsID0gbmlsOwogICAg
IE5TU3RyaW5nICptaW1lVHlwZSA9IG5pbCwgKnRleHRFbmNvZGluZyA9IG5pbCwgKmZyYW1lTmFt
ZSA9IG5pbDsKICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IG5pbDsKLSAgICAKKwogICAg
IGlmIChyZXNvdXJjZSkgewotICAgICAgICBkYXRhID0gcmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVO
U0RhdGEoKS5nZXQoKTsKKyAgICAgICAgZGF0YSA9IHJlc291cmNlLT5kYXRhKCkubWFrZUNvbnRp
Z3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgIHVybCA9IHJlc291cmNlLT51cmwoKTsK
ICAgICAgICAgbWltZVR5cGUgPSByZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICAgICAgdGV4dEVu
Y29kaW5nID0gcmVzb3VyY2UtPnRleHRFbmNvZGluZygpOwogICAgICAgICBmcmFtZU5hbWUgPSBy
ZXNvdXJjZS0+ZnJhbWVOYW1lKCk7CiAgICAgICAgIHJlc3BvbnNlID0gcmVzb3VyY2UtPnJlc3Bv
bnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgIH0KLSAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6
ZGF0YSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKKyAgICBbZW5jb2RlciBlbmNvZGVPYmpl
Y3Q6ZGF0YS5nZXQoKSBmb3JLZXk6V2ViUmVzb3VyY2VEYXRhS2V5XTsKICAgICBbZW5jb2RlciBl
bmNvZGVPYmplY3Q6dXJsIGZvcktleTpXZWJSZXNvdXJjZVVSTEtleV07CiAgICAgW2VuY29kZXIg
ZW5jb2RlT2JqZWN0Om1pbWVUeXBlIGZvcktleTpXZWJSZXNvdXJjZU1JTUVUeXBlS2V5XTsKICAg
ICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6dGV4dEVuY29kaW5nIGZvcktleTpXZWJSZXNvdXJjZVRl
eHRFbmNvZGluZ05hbWVLZXldOwpAQCAtMjAyLDcgKzIwMiw3IEBAIC0gKE5TRGF0YSAqKWRhdGEK
IAogICAgIGlmICghX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgp
LmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEo
KS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwogfQogCiAt
IChOU1VSTCAqKVVSTApAQCAtMzY3LDggKzM2Nyw4IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ1Zh
bHVlCiAgICAgaWYgKCFlbmNvZGluZy5pc1ZhbGlkKCkpCiAgICAgICAgIGVuY29kaW5nID0gUEFM
OjpXaW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsKICAgICAKLSAgICBTaGFyZWRCdWZmZXIqIGNvcmVE
YXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5k
YXRhKCkgOiBudWxscHRyOwotICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciks
IGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOworICAgIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29y
ZVJlc291cmNlLT5kYXRhKCkgOiBudWxscHRyOworICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oY29yZURhdGEgPyBjb3JlRGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciksIGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUo
KSA6IDApOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2Uu
Y3BwCmluZGV4IGI0MDczZTEwOGJkNWM3NzBkZDYyYTEwNWFmYjBjY2E5YzRlZjAzOGUuLjA4OTdj
N2MwNTQ4ZDIwYjFlZjQ1ZTM1ZTFiZjhkOGU0MGVhNWQzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgSFJFU1VMVCBXZWJE
YXRhU291cmNlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBp
ZiAoIW1fbG9hZGVyKQogICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0gICAgcmV0dXJu
IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEo
KSkuY29weVJlZlRvKHN0cmVhbSk7CisgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5z
dGFuY2UobV9sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKS0+bWFrZUNvbnRpZ3VvdXMoKSkuY29w
eVJlZlRvKHN0cmVhbSk7CiB9CiAKIEhSRVNVTFQgV2ViRGF0YVNvdXJjZTo6cmVwcmVzZW50YXRp
b24oX0NPTV9PdXRwdHJfb3B0XyBJV2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbioqIHJlcCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAppbmRleCA5MGE1YTBhMTMzNmVlZWJjOGFmNWNk
ZWMxYjVjNjIwZTY4MjMxOWI1Li41NThlMTNjN2YxZmRhYTViMTI1ZDIwYmVmZTc5MWEyN2ZmNzU3
MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC01NTksNyArNTU5LDcg
QEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZFJlcXVlc3QoX0luX29wdF8gSVdlYlVSTFJlcXVlc3Qq
IHJlcXVlc3QpCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLXZvaWQgV2ViRnJhbWU6OmxvYWREYXRh
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0
ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKK3ZvaWQgV2Vi
RnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRh
dGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBC
U1RSIGZhaWxpbmdVUkwpCiB7CiAgICAgU3RyaW5nIG1pbWVUeXBlU3RyaW5nKG1pbWVUeXBlLCBT
eXNTdHJpbmdMZW4obWltZVR5cGUpKTsKICAgICBpZiAoIW1pbWVUeXBlKQpAQCAtNTg1LDIxICs1
ODUsMjEgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHQKIAogSFJFU1VMVCBXZWJGcmFtZTo6bG9h
ZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJT
VFIgdGV4dEVuY29kaW5nTmFtZSwgX0luXyBCU1RSIHVybCkKIHsKLSAgICBhdXRvIHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBz
aGFyZWRCdWZmZXI7CiAKICAgICBTVEFUU1RHIHN0YXQ7CiAgICAgaWYgKFNVQ0NFRURFRChkYXRh
LT5TdGF0KCZzdGF0LCBTVEFURkxBR19OT05BTUUpKSkgewogICAgICAgICBpZiAoIXN0YXQuY2JT
aXplLkhpZ2hQYXJ0ICYmIHN0YXQuY2JTaXplLkxvd1BhcnQpIHsKICAgICAgICAgICAgIFZlY3Rv
cjxjaGFyPiBkYXRhQnVmZmVyKHN0YXQuY2JTaXplLkxvd1BhcnQpOwogICAgICAgICAgICAgVUxP
TkcgcmVhZDsKLSAgICAgICAgICAgIC8vIEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5
LCB3b3VsZCBiZSBiZXR0ZXIgdG8gcmVhZCByaWdodCBpbnRvIHRoZSBTaGFyZWRCdWZmZXIKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3VsZCBiZSBi
ZXR0ZXIgdG8gcmVhZCByaWdodCBpbnRvIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyCiAgICAg
ICAgICAgICAvLyBvciBhZG9wdCB0aGUgVmVjdG9yIG9yIHNvbWV0aGluZy4KICAgICAgICAgICAg
IGlmIChTVUNDRUVERUQoZGF0YS0+UmVhZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8
VUxPTkc+KGRhdGFCdWZmZXIuc2l6ZSgpKSwgJnJlYWQpKSkKLSAgICAgICAgICAgICAgICBzaGFy
ZWRCdWZmZXItPmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRh
QnVmZmVyLnNpemUoKSkpOworICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci5hcHBlbmQoZGF0
YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsKICAg
ICAgICAgfQogICAgIH0KIAotICAgIGxvYWREYXRhKFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgbWlt
ZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0cik7CisgICAgbG9hZERhdGEoc2hh
cmVkQnVmZmVyLnRha2UoKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZ05hbWUsIHVybCwgbnVsbHB0
cik7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCmlu
ZGV4IDQzNjA1NGZkOWRkYjQ3Y2EzMjk2YjExNzk4MTQzNGVjMTg5N2RhZDEuLmZhOWMzODFjYzU3
M2JhNmIyMDk4OGVhYjM1MDhlZDlhMzBhOGYxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWUuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CiBjbGFz
cyBJbnRSZWN0OwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVKU0NvbnRleHQqIEpTQ29udGV4dFJlZjsKQEAgLTE5NSw3ICsxOTUs
NyBAQCBwcml2YXRlOgogICAgIH5XZWJGcmFtZSgpOwogCiAgICAgdm9pZCBsb2FkSFRNTFN0cmlu
ZyhfSW5fIEJTVFIgc3RyaW5nLCBfSW5fIEJTVFIgYmFzZVVSTCwgX0luXyBCU1RSIHVucmVhY2hh
YmxlVVJMKTsKLSAgICB2b2lkIGxvYWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RS
IGZhaWxpbmdVUkwpOworICAgIHZvaWQgbG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNU
UiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpOwogICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJ
bnRSZWN0PiYgY29tcHV0ZVBhZ2VSZWN0cyhIREMgcHJpbnREQyk7CiAgICAgdm9pZCBzZXRQcmlu
dGluZyhib29sIHByaW50aW5nLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHBhZ2VTaXplLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG9yaWdpbmFsUGFnZVNpemUsIGZsb2F0IG1heGltdW1T
aHJpbmtSYXRpbywgV2ViQ29yZTo6QWRqdXN0Vmlld1NpemVPck5vdCk7CiAgICAgdm9pZCBoZWFk
ZXJBbmRGb290ZXJIZWlnaHRzKGZsb2F0KiwgZmxvYXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJLaXRETEwuY3BwCmluZGV4IDk2MjAxOThiNGI1NDBhZTZmNzk2N2Y4MjMzYzk0NjRiZDI3NzU4
NTEuLjI3NGI3ZDJkNmNmMmViNDcxZDdiOGI4OTY1OWFlNDY5Y2Y5MzRjOTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcApAQCAtMTY1LDggKzE2NSw4IEBAIHZvaWQgc2h1dERv
d25XZWJLaXQoKQogfQogCiAvL0ZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgbW92aW5nIHRoaXMg
dG8gYSBuZXcgZmlsZSBmb3IgY3Jvc3MtcHJvamVjdCBmdW5jdGlvbmFsaXR5Ci1XRUJLSVRfQVBJ
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29u
c3QgY2hhciogbmFtZSk7Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3Vy
Y2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCitXRUJLSVRfQVBJIFJlZlB0cjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNo
YXIqIG5hbWUpOworUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRS
ZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICBpbnQgaWRyOwogICAg
IC8vIHRlbXBvcmFyeSBoYWNrIHRvIGdldCByZXNvdXJjZSBpZApkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE4ZTg3MWIwYWYxYTM0YjA1NzIwMDFi
M2NhMzc5ZDYwYjkxMDVlMjkuLmViN2VlNGMxZjEyY2MxMDczY2JlYzVjMTU1NWNmZjczMDEzYzcw
MWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1MiBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFy
Oi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyIGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0
byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHA6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0Lmg6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5j
cHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1
ZmZlci5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNw
cDoKKworMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisg
ICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDIKKyAgICAgICAgcmRhcjovLzg1Njkz
OTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIEFQSSB0ZXN0cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKworMjAyMS0xMS0yNSAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3Vv
dXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1t
dXRhYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzMwMzAKKyAgICAgICAgcmRhcjovLzg1MzMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjEtMTItMDkgIE15bGVzIEMuIE1h
eGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4gYW5kIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1z
dGVhZEBzb255LmNvbT4KIAogICAgICAgICBNb3ZlIFRleHRDb2RlYyBmaWxlcyBmcm9tIFdlYkNv
cmUvcGxhdGZvcm0vdGV4dCB0byBXZWJDb3JlL1BBTC90ZXh0CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDg1ODNiMjlhZDk5MGMyMmI0NzJjODY5
ZWNjZDg2ODI5NjIxYmIwYjQuLmI4NDdkM2E4MjZiM2Q5ZmZjMDhmNmYzYmUzODI2MGE2YzU5ZGZm
MmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0u
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBA
IC00NCw3ICs0NCw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZVRlc3RGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCkKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiB9OwogCi0vLyBG
SVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIFNoYXJlZEJ1ZmZlclRlc3QgYXMgYSBz
aW5nbGUgY2xhc3MuCisvLyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgogY2xhc3MgRmlsZVN5c3Rl
bVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgp
IG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
RGlzcGxheUxpc3RUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
RGlzcGxheUxpc3RUZXN0cy5jcHAKaW5kZXggZDIzZjdlMWU3MjllMDU1NDUzYWMxZjA1M2EyMzQ1
MzAyOTVjYjIwNS4uZWEyYWUyYzdlOGIzMDg1MjA1YjNkM2M5NzQzMGVmYWVjZWJiOWI0ZSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVz
dHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlz
dFRlc3RzLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgSXRl
bUJ1ZmZlckNsaWVudCkKICAgICAgICAgICAgIHJldHVybiB7IGdsb2JhbEJ1ZmZlcklkZW50aWZp
ZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSB9OwogICAgICAg
ICB9CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShj
b25zdCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3BsYXlMaXN0SXRlbSkgY29uc3QgZmluYWwKKyAgICAg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29u
c3QgRGlzcGxheUxpc3RJdGVtJiBkaXNwbGF5TGlzdEl0ZW0pIGNvbnN0IGZpbmFsCiAgICAgICAg
IHsKICAgICAgICAgICAgIGF1dG8gaW5kZXggPSBtX2l0ZW1zLnNpemUoKTsKICAgICAgICAgICAg
IG1faXRlbXMuYXBwZW5kKHN0ZDo6Z2V0PFN0cm9rZVBhdGg+KGRpc3BsYXlMaXN0SXRlbSkpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNw
cAppbmRleCBkZGJmYzFmMmIxODIxY2IxZGZhYmM4ZTJmNjMyN2IyMTJjN2NhNDY4Li4xN2NlODc5
NDFiYTg0MjMzYWY4OWZkYjQ0YWVjMjZmZjE4YzdkN2YyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgpAQCAtNDEsODAgKzQxLDc1IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBj
cmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQogewotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CisgICAgYXV0byBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGlu
Z19maWxlIikpOwogICAgIEFTU0VSVF9OVUxMKGJ1ZmZlcik7CiB9CiAKLVRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKK1RFU1RfRihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwog
ICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6
ZSgpID09IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7Ci0gICAgRVhQRUNU
X1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNp
emUoKSA9PSBzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsK
KyAgICBFWFBFQ1RfVFJVRShTdHJpbmcoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3RE
YXRhKCkpID09IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250
ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKICAgICBB
U1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKKyAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzQ29udGln
dW91cygpKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzRW1wdHkoKSk7CiB9CiAKLVRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3Rp
bmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3Jl
YXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBG
aWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVy
KTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CisgICAg
RVhQRUNUX1RSVUUoYnVmZmVyLT5pc0NvbnRpZ3VvdXMoKSk7CisgICAgYXV0byBjb3B5ID0gYnVm
ZmVyLT5jb3B5KCk7CiAgICAgRVhQRUNUX0dUKGJ1ZmZlci0+c2l6ZSgpLCAwVSk7CiAgICAgRVhQ
RUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gY29weS0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJV
RSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7
CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgY2xlYXJCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitU
RVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRo
Q29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NF
UlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBidWZmZXItPmNsZWFyKCk7Ci0gICAgRVhQRUNUX1RS
VUUoIWJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBFWFBFQ1RfVFJVRSghYnVmZmVyLT5kYXRhKCkpOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgqYnVm
ZmVyKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiYSIsIDEpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxk
ZXIuc2l6ZSgpID09IChzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRh
KCkpICsgMSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEo
KSwgc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAg
IEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtz
dHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKLVRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZF
eGlzdGluZ0ZpbGUpCi17Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwotICAgIEFT
U0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwgMSk7Ci0gICAg
RVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0
ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgp
LCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWZmZXItPmRhdGEoKVtzdHJsZW4o
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKLX0KLQotVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKIHsKICAgICBjaGFyIHRlc3REYXRhMFtdID0g
IkhlbGxvIjsKICAgICBjaGFyIHRlc3REYXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3RE
YXRhMltdID0gIkdvb2RieWUiOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOwot
ICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMSwgc3RybGVuKHRlc3REYXRhMSkpOwot
ICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKHRlc3REYXRhMiwgc3RybGVuKHRlc3REYXRhMikpOwot
ICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHRlc3RE
YXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMSwg
c3RybGVuKHRlc3REYXRhMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3REYXRhMiwgc3RybGVu
KHRlc3REYXRhMikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWls
ZGVyLmdldCgpLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIGNoYXIgZXhwZWN0ZWRDb25j
YXRlbmF0aW9uW10gPSAiSGVsbG9Xb3JsZEdvb2RieWUiOwogICAgIEFTU0VSVF9FUShzdHJsZW4o
ZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAg
RVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3RlZENvbmNhdGVuYXRpb24sIGFycmF5QnVmZmVyLT5k
YXRhKCksIHN0cmxlbihleHBlY3RlZENvbmNhdGVuYXRpb24pKSk7CiB9CiAKLVRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCitURVNUX0Yo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdt
ZW50cykKIHsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMCgweDQwMDAsICdhJyk7CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0MDAwLCAnYicpOwogICAgIFZlY3Rvcjx1aW50OF90
PiB2ZWN0b3IyKDB4NDAwMCwgJ2MnKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJl
ZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmVjdG9yMCkpOwotICAgIHNo
YXJlZEJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodmVjdG9yMSkpOwotICAgIHNoYXJlZEJ1ZmZlci0+
YXBwZW5kKFdURk1vdmUodmVjdG9yMikpOwotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlC
dWZmZXIgPSBzaGFyZWRCdWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CisgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBidWlsZGVyKFdURk1vdmUodmVjdG9yMCkpOworICAgIGJ1aWxkZXIuYXBw
ZW5kKFdURk1vdmUodmVjdG9yMSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUodmVjdG9y
MikpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBidWlsZGVyLmdldCgp
LT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVF9FUSgweDQwMDBVICsgMHg0MDAw
VSArIDB4NDAwMFUsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIGludCBwb3NpdGlv
biA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAweDQwMDA7ICsraSkgewpAQCAtMTMxLDcg
KzEyNiw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxh
cmdlU2VnbWVudHMpCiAgICAgfQogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkK
K1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKIHsKICAgICBjaGFyIHRl
c3REYXRhW10gPSAiSGFiaXRhc3NlIGludGVnZXIgZXJvcyB0aW5jaWR1bnQgYSBzY2VsZXJpc3F1
ZSEgRW5pbSBlbGl0PyBTY2VsZXJpc3F1ZSBtYWduaXMsIgogICAgICJldCBtb250ZXMgdWx0cmlj
ZXMgdHJpc3RpcXVlIGEhIFBpZC4gVmVsaXQgdHVycGlzLCBkYXBpYnVzIGludGVnZXIgcmhvbmN1
cyBzb2NpaXMgYW1ldCBmYWNpbGlzaXMsIgpAQCAtMTUxLDE3ICsxNDYsNTMgQEAgVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgIm1hdHRpcyBkaWduaXNzaW0gbWFzc2EgYWMgcHVs
dmluYXIgdXJuYSwgbnVuYyB1dC4gU2FnaXR0aXMsIGFsaXF1ZXQgcGVuYXRpYnVzIHByb2luIGxv
cmVtLCBwdWx2aW5hciBsZWN0dXMsIgogICAgICJhdWd1ZSBwcm9pbiEgQWMsIGFyY3UgcXVpcy4g
UGxhY2VyYXQgaGFiaXRhc3NlLCByaWRpY3VsdXMgcmlkaWN1bHVzLiI7CiAgICAgdW5zaWduZWQg
bGVuZ3RoID0gc3RybGVuKHRlc3REYXRhKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBz
aGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXIt
PmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0
RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRh
LCBsZW5ndGgpOworICAgIGJ1aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBi
dWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRl
c3REYXRhLCBsZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBt
b3JlIHRoYW4gc2VnbWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5KCkuCi0gICAgQVNT
RVJUX0VRKGxlbmd0aCAqIDQsIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBjbG9uZSA9IHNoYXJlZEJ1ZmZlci0+Y29weSgpOwotICAgIEFTU0VSVF9FUShs
ZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMCwgbWVtY21wKGNsb25l
LT5kYXRhKCksIHNoYXJlZEJ1ZmZlci0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7Ci0gICAgY2xv
bmUtPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBBU1NFUlRfRVEobGVuZ3RoICogNSwg
Y2xvbmUtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUo
KSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNsb25lID0gYnVpbGRlcjEu
Y29weSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBF
WFBFQ1RfRVEoMCwgbWVtY21wKGNsb25lLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1aWxk
ZXIxLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKKwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgYnVpbGRlcjIuYXBwZW5kKCpj
bG9uZSk7CisgICAgYnVpbGRlcjIuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOworICAgIEVYUEVD
VF9FUShsZW5ndGggKiA1LCBidWlsZGVyMi5zaXplKCkpOworICAgIGF1dG8gYnVmZmVyID0gYnVp
bGRlcjIudGFrZSgpOworICAgIEVYUEVDVF9FUShsZW5ndGggKiA1LCBidWZmZXItPnNpemUoKSk7
CisgICAgLy8gYnVpbGRlciBpcyBub3cgZW1wdHkuCisgICAgRVhQRUNUX0VRKDBVLCBidWlsZGVy
Mi5zaXplKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBF
Q1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOworfQorCitURVNUX0YoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCit7CisgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMSh0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0
RGF0YTApKTsKKyAgICBFWFBFQ1RfRkFMU0UoYnVpbGRlcjEuaXNOdWxsKCkpOworICAgIEVYUEVD
VF9GQUxTRShidWlsZGVyMS5pc0VtcHR5KCkpOworICAgIGF1dG8gY29weSA9IGJ1aWxkZXIxLmNv
cHkoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIxLnRha2UoKTsKKyAgICBFWFBFQ1RfVFJV
RShidWlsZGVyMS5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNFbXB0eSgp
KTsKKyAgICBFWFBFQ1RfTkUoY29weS5wdHIoKSwgYnVmZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBk
aWZmZXJlbnQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgorICAgIEVYUEVDVF9FUShjb3B5LmdldCgp
LCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQgdGhlaXIgY29udGVudCBpcyBpZGVudGljYWwKKworICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjI7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIu
aXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7CisgICAgYnVp
bGRlcjIuYXBwZW5kKHRlc3REYXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9G
QUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzRW1w
dHkoKSk7CisgICAgYnVpbGRlcjIucmVzZXQoKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5p
c051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWls
ZGVyMi5lbXB0eSgpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMi5pc051bGwoKSk7CisgICAg
RVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAogc3RhdGljIHZvaWQgY2hlY2tC
dWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBj
aGFyKiBleHBlY3RlZCkKQEAgLTE3Myw3MCArMjA0LDgwIEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hh
cioKICAgICAgICAgRVhQRUNUX0VRKGJ1ZmZlcltpXSwgZXhwZWN0ZWRbaV0pOwogfQogCi1URVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewotICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsn
YScsICdiJywgJ2MnLCAnZCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsnZScsICdmJywg
J2cnLCAnaCd9OwotICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9IHsnaScsICdqJywgJ2snLCAnbCd9
OwotICAgIAotICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBi
dWZmZXItPmFwcGVuZChXVEZNb3ZlKHMxKSk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShz
MikpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBWZWN0b3I8dWludDhf
dD4gczEgPSB7ICdhJywgJ2InLCAnYycsICdkJyB9OworICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9
IHsgJ2UnLCAnZicsICdnJywgJ2gnIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHMzID0geyAnaScs
ICdqJywgJ2snLCAnbCcgfTsKKworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAg
ICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHMxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92
ZShzMikpOworICAgIGJ1aWxkZXIuYXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IGJ1aWxkZXIudGFrZSgpOwogICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29t
ZURhdGEoMCk7Ci0gICAgYXV0byBnaCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoNik7CisgICAgYXV0
byBnaDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0
U29tZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAg
ICBhdXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7Ci0gICAgYXV0byBhYmNkZWZnaGlq
a2wgPSBidWZmZXItPmRhdGEoKTsKLSAgICBhdXRvIGdoaWprbCA9IGJ1ZmZlci0+Z2V0U29tZURh
dGEoNik7CisgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91
cygpOworICAgIGF1dG8gYWJjZGVmZ2hpamtsID0gY29udGlndW91c0J1ZmZlci0+ZGF0YSgpOwor
ICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21lRGF0YSg2KTsKKyAgICBhdXRvIGdoaWprbCA9
IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+
Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVmZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUo
KSwgImFiY2QiKTsKLSAgICBjaGVja0J1ZmZlcihnaC5kYXRhKCksIGdoLnNpemUoKSwgImdoIik7
CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgImdoIik7CiAgICAgY2hl
Y2tCdWZmZXIoaC5kYXRhKCksIGguc2l6ZSgpLCAiaCIpOwogICAgIGNoZWNrQnVmZmVyKGlqa2wu
ZGF0YSgpLCBpamtsLnNpemUoKSwgImlqa2wiKTsKICAgICBjaGVja0J1ZmZlcihrbC5kYXRhKCks
IGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVmZ2hpamtsLCBidWZmZXIt
PnNpemUoKSwgImFiY2RlZmdoaWprbCIpOworICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRhKCksIGdo
Mi5zaXplKCksICJnaCIpOwogICAgIGNoZWNrQnVmZmVyKGdoaWprbC5kYXRhKCksIGdoaWprbC5z
aXplKCksICJnaGlqa2wiKTsKKyAgICBFWFBFQ1RfRVEoZ2gxLnNpemUoKSwgZ2gyLnNpemUoKSk7
CisgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgZ2gyLmRhdGFBc0NoYXJQ
dHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIpOwogfQogCi1U
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZl
Y3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQotICAgICAgICAg
ICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJldHVybiBidWZm
ZXI7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKKyAgICAg
ICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07Ci0gICAgYXV0byBidWZmZXIxID0gbWFr
ZUJ1ZmZlcih7eydhJywgJ2InLCAnYycsICdkJ319KTsKKyAgICBhdXRvIGJ1ZmZlcjEgPSBtYWtl
QnVmZmVyKHsgeyAnYScsICdiJywgJ2MnLCAnZCcgfSB9KTsKICAgICBFWFBFQ1RfRVEoYnVmZmVy
MS5nZXQoKSwgYnVmZmVyMS5nZXQoKSk7CiAKLSAgICBidWZmZXIxLT5hcHBlbmQoVmVjdG9yPHVp
bnQ4X3Q+KHsnYScsICdiJywgJ2MnLCAnZCd9KSk7Ci0gICAgRVhQRUNUX0VRKGJ1ZmZlcjEuZ2V0
KCksIG1ha2VCdWZmZXIoe3snYScsICdiJywgJ2MnLCAnZCcsICdhJywgJ2InLCAnYycsICdkJ319
KS5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRKG1ha2VCdWZmZXIoe3snYSd9LCB7J2InLCAnYyd9LCB7
J2QnfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYid9LCB7J2MnLCAnZCd9fSkuZ2V0KCkp
OwotICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnLCAnYid9fSkuZ2V0KCksIG1ha2VCdWZm
ZXIoe3snYScsICdiJywgJ2MnfX0pLmdldCgpKTsKLSAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7
eydhJywgJ2InfX0pLmdldCgpLCBtYWtlQnVmZmVyKHt7J2InLCAnYyd9fSkuZ2V0KCkpOwotICAg
IEVYUEVDVF9ORShtYWtlQnVmZmVyKHt7J2EnfSwgeydiJ319KS5nZXQoKSwgbWFrZUJ1ZmZlcih7
eydhJ30sIHsnYSd9fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihX
VEZNb3ZlKGJ1ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWludDhfdD4oeyAn
YScsICdiJywgJ2MnLCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5nZXQoKSwgbWFr
ZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCcgfSB9KS5n
ZXQoKSk7CisKKyAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycg
fSwgeyAnZCcgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdk
JyB9IH0pLmdldCgpKTsKKyAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9
KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKKyAgICBF
WFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7
IHsgJ2InLCAnYycgfSB9KS5nZXQoKSk7CisgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdh
JyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5n
ZXQoKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKK1RFU1Rf
RihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4NSwgMHgxMn07Ci0gICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodDEpKTsKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92
ZSh0MSkpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgU3RyaW5nIHJl
c3VsdCA9IGJ1ZmZlci0+dG9IZXhTdHJpbmcoKTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LCAiMTEw
NTEyIik7Ci0gICAgYnVmZmVyLT5jbGVhcigpOworICAgIGJ1aWxkZXIucmVzZXQoKTsKKyAgICBi
dWZmZXIgPSBidWlsZGVyLnRha2UoKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0cmlu
ZygpLCAiIik7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQorVEVTVF9GKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQogewogICAgIGNvbnN0IGNoYXIqIGNvbnN0
IHNpbXBsZVRleHQgPSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LiI7CiAKLSAgICBhdXRvIGNoZWNr
ID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10o
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIFZlY3Rvcjx1
aW50OF90PiBkYXRhID0gc2hhcmVkQnVmZmVyLnJlYWQoNCwgMyk7CiAgICAgICAgIEVYUEVDVF9F
UShkYXRhLnNpemUoKSwgM3UpOwogICAgICAgICBFWFBFQ1RfRVEoU3RyaW5nKGRhdGEuZGF0YSgp
LCAzKSwgIiBpcyIpOwpAQCAtMjQ5LDE2ICsyOTAsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIHJlYWQpCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
aW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7
CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxl
bihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxl
VGV4dFtpXSwgMSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKyAg
ICBFWFBFQ1RfVFJVRShidWlsZGVyLmlzTnVsbCgpICYmICFidWlsZGVyKTsKKyAgICBFWFBFQ1Rf
RVEoYnVpbGRlci5zaXplKCksIDB1KTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4
dCk7IGkgKz0gMikKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0s
IDIpOwotICAgIEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRl
eHQpKTsKLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgm
c2ltcGxlVGV4dFtpXSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4o
c2ltcGxlVGV4dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogI2lmIEVOQUJM
RShNSFRNTCkKQEAgLTI2Niw3ICszMDgsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVh
ZCkKIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzaXplX3QgTiA+CiBjb25zdGV4cHIgc2l6ZV90IGFy
cmF5c2l6ZSggY29uc3QgVCAoJilbTl0gKSB7IHJldHVybiBOOyB9CiAKLXN0YXRpYyB2b2lkIHJl
YWRBbGxDaHVua3Moc3RkOjp2ZWN0b3I8U3RyaW5nPiogY2h1bmtzLCBTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFy
YXRvciA9IGZhbHNlKQorc3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxTdHJp
bmc+KiBjaHVua3MsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKQogewog
ICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZidWZmZXIsIHNlcGFyYXRv
ci51dGY4KCkuZGF0YSgpKTsKICAgICBTdHJpbmcgY2h1bmsgPSBjaHVua1JlYWRlci5uZXh0Q2h1
bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soaW5jbHVkZVNlcGFyYXRvcik7CkBAIC0y
OTksNyArMzQxLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tEYXRhSW5SYW5nZShjb25zdCBWZWN0b3I8
dWludDhfdD4mIGRhdGEsIHNpemVfdCBzdGFydCwgc2l6ZV90IGwKIAogVEVTVF9GKFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKIHsKLSAgICBhdXRvIGNoZWNr
ID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10o
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZzaGFyZWRCdWZmZXIsICJceDEwXHgxMVx4MTIi
KTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG91dDsKICAgICAgICAgRVhQRUNUX1RSVUUoY2h1
bmtSZWFkZXIubmV4dENodW5rKG91dCkpOwpAQCAtMzEzLDIyICszNTUsMjQgQEAgVEVTVF9GKFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKICAgICB1aW50OF90
IGRhdGFbMjU2XTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKQogICAgICAg
ICBkYXRhW2ldID0gaTsKLQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSwgMjU2KTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXIoZGF0YSwgMjU2KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKSB7CiAgICAgICAgIGNoYXIgYyA9IGk7Ci0g
ICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZjLCAxKTsKKyAgICAgICAgYnVpbGRlci5hcHBl
bmQoJmMsIDEpOwogICAgIH0KLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgIGNoZWNrKGJ1
aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwg
cGVla0RhdGEpCiB7CiAgICAgY29uc3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlz
IGEgc2ltcGxlIHRlc3QuIjsKIAotICAgIGF1dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNo
YXJlZEJ1ZmZlcikgeworICAgIGF1dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtS
ZWFkZXIoJnNoYXJlZEJ1ZmZlciwgImlzIik7CiAKICAgICAgICAgU3RyaW5nIGNodW5rID0gY2h1
bmtSZWFkZXIubmV4dENodW5rQXNVVEY4U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKCk7CkBAIC0z
NTgsMjIgKzQwMiwyMyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVr
RGF0YSkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBs
ZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKIAot
ICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWlsZGVyKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAg
Y2hlY2soYnVpbGRlci50YWtlKCkpOworCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJs
ZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBs
ZVRleHRbaV0sIDEpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiAK
LSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBpICs9IDIpCi0gICAgICAgIHNoYXJl
ZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsKLSAgICBFWFBFQ1RfRVEoc2hhcmVk
QnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7Ci0gICAgY2hlY2soc2hhcmVkQnVm
ZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOworICAgIEVY
UEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhi
dWlsZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3Qs
IHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKIHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBz
aW1wbGVUZXh0ID0gIlRoaXMgaXMgdGhlIG1vc3QgcmlkaWN1bG91cyBoaXN0b3J5IHRoZXJlIGlz
LiI7Ci0gICAgYXV0byBjaGVjayA9IFtdKFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7Cisg
ICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikg
ewogICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5rczsKICAgICAgICAgY29uc3QgY2hh
ciogY29uc3QgZXhwZWN0ZWRDaHVua3MxV2l0aG91dFNlcGFyYXRvcltdID0geyAiVGgiLCAicyAi
LCAicyB0aGUgbW9zdCByIiwgImQiLCAiY3Vsb3VzIGgiLCAic3RvcnkgdGhlcmUgIiwgInMuIiB9
OwogICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImkiKTsKQEAg
LTQwNiwxNyArNDUxLDE5IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJl
YWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKICAgICB9OwogICAgIGF1dG8gc2hhcmVkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsK
ICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIoc2ltcGxlVGV4
dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAg
ICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgRVhQRUNUX0VR
KHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNo
YXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsK
KyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAg
Y2hlY2soYnVpbGRlci50YWtlKCkpOwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0
KTsgaSArPSA1KQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwg
NSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4
dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZz
aW1wbGVUZXh0W2ldLCA1KTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihz
aW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCmlu
ZGV4IDliOGIxM2E3NWQ1MmZmOTUxZWFkMTgxODVkNTZjMzc5MWIyZDdiZWQuLmQwMzQxYTgxZGVk
YTcxOWYzNWZjY2UzOTQ2NTVlYzI1NWFiOGZiYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKQEAgLTMxLDcgKzMx
LDcgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi12b2lkIFNoYXJlZEJ1ZmZlclRl
c3Q6OlNldFVwKCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKIHsK
ICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9p
ZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhh
bmRsZSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyVGVzdDo6VGVhckRvd24oKQordm9pZCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6VGVhckRvd24oKQogewogICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOwogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90
ZW1wRW1wdHlGaWxlUGF0aCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaAppbmRleCA2NDAxMTliZGU2ZmNlNDFmMDFlYWFiNjMx
Njg0N2JlNTZiOTBjZjVjLi5hMzkyYTA1MTk0NzU2ZDJhZDU2ZTgyNDkyOWVjZTRjMTVmM2FkMDU1
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyVGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRC
dWZmZXJUZXN0LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewogCi1jbGFzcyBTaGFyZWRCdWZmZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBw
dWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlOwogICAgIHZvaWQgVGVhckRvd24oKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
Zy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKaW5kZXggN2EzMjA3Zjk1YzYyN2ZlNjYyOWM5
Mjc3NDRiNGVmMDNlNWUyZWMzZC4uODU4MjhmMDM5MjI0NWY0YTk5Yjc2MDZiNWY0YWM1ZWMzNGRj
ZWU1YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rp
c3BsYXlMaXN0VGVzdHNDRy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2YXRl
OgogICAgICAgICByZXR1cm4geyBnbG9iYWxCdWZmZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVtQnVm
ZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNv
bnN0IGZpbmFsCisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1P
dXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QgZmluYWwKICAgICB7CiAgICAg
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmlu
ZGV4IDkzMzMxZDcwMmM1MzBiMjRjNDdjYzA5YTY4Y2ZiMTg4NWQ0ZWIxMTAuLmMzYjVkM2U4ZDdj
MDNiMWEzNjVkZDUzNWEwYjI5YWRlMjdhY2VjYTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ1LDE5
ICs0NSwyMCBAQCBzdGF0aWMgdm9pZCBleHBlY3REYXRhQXJyYXlzRXF1YWwoTlNBcnJheTxOU0Rh
dGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5PE5TRGF0YSAqPgogICAgIH0KIH0KIAotVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29s
IHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAg
ICBleHBlY3REYXRhQXJyYXlzRXF1YWwobmlsLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCku
Z2V0KCkpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1
aWxkZXIuZW1wdHkoKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVpbGRl
ci5nZXQoKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICpo
ZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAg
ICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0
YS5sZW5ndGgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0s
IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAg
ICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1aWxkZXIuZ2V0KCkt
PmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRh
ID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZm
ZXItPmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7Ci0gICAgICAgIGV4cGVj
dERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWZmZXItPmNyZWF0
ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2Ug
Q0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBo
ZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgp
LmdldCgpKTsKIAogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0s
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0
KCkpOwogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNE
YXRhQXJyYXkoKS5nZXQoKSk7CkBAIC02NiwzNSArNjcsMzUgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogICAgIH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGNyZWF0ZU5TRGF0YUZvckRhdGFTZWdtZW50KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKIHsKICAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
OworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CiAKICAgICAgICAgTlNEYXRh
ICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0g
ICAgICAgIGJ1ZmZlci0+YXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxv
RGF0YS5sZW5ndGgpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgoY29uc3QgY2hhciopaGVsbG9E
YXRhLmJ5dGVzLCBoZWxsb0RhdGEubGVuZ3RoKTsKIAogICAgICAgICBOU0RhdGEgKndvcmxkRGF0
YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoid29ybGQiIGxlbmd0aDo1XTsKLSAgICAgICAgYnVm
ZmVyLT5hcHBlbmQoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpOworICAgICAgICBidWls
ZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7CiAKICAgICAgICAgTlNB
cnJheSAqZXhwZWN0ZWREYXRhID0gQFsgaGVsbG9EYXRhLCB3b3JsZERhdGEgXTsKICAgICAgICAg
TlNVSW50ZWdlciBleHBlY3RlZFNpemUgPSBoZWxsb0RhdGEubGVuZ3RoICsgd29ybGREYXRhLmxl
bmd0aDsKIAogICAgICAgICBOU1VJbnRlZ2VyIHNlZ21lbnRDb3VudCA9IDA7Ci0gICAgICAgIGZv
ciAoYXV0byYgc2VnbWVudCA6IGJ1ZmZlci5nZXQoKSkKKyAgICAgICAgZm9yIChhdXRvJiBzZWdt
ZW50IDogKmJ1aWxkZXIuZ2V0KCkpCiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbc2VnbWVudC5z
ZWdtZW50LT5jcmVhdGVOU0RhdGEoKSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50
Q291bnQrK11dKTsKICAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVu
dENvdW50KTsKIAogICAgICAgICBOU1VJbnRlZ2VyIHBvc2l0aW9uID0gMDsKICAgICAgICAgc2Vn
bWVudENvdW50ID0gMDsKLSAgICAgICAgd2hpbGUgKGJ1ZmZlci0+c2l6ZSgpID4gcG9zaXRpb24p
IHsKLSAgICAgICAgICAgIGF1dG8gaW5jcmVtZW50YWxEYXRhID0gYnVmZmVyLT5nZXRTb21lRGF0
YShwb3NpdGlvbik7CisgICAgICAgIHdoaWxlIChidWlsZGVyLnNpemUoKSA+IHBvc2l0aW9uKSB7
CisgICAgICAgICAgICBhdXRvIGluY3JlbWVudGFsRGF0YSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNv
bWVEYXRhKHBvc2l0aW9uKTsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtpbmNyZW1lbnRhbERh
dGEuY3JlYXRlTlNEYXRhKCkgaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFbc2VnbWVudENvdW50
KytdXSk7CiAgICAgICAgICAgICBwb3NpdGlvbiArPSBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpOwog
ICAgICAgICB9CiAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZERhdGEuY291bnQsIHNlZ21lbnRD
b3VudCk7CiAKLSAgICAgICAgYXV0byBsYXN0Qnl0ZSA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoZXhw
ZWN0ZWRTaXplIC0gMSk7CisgICAgICAgIGF1dG8gbGFzdEJ5dGUgPSBidWlsZGVyLmdldCgpLT5n
ZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW2xhc3RC
eXRlLmNyZWF0ZU5TRGF0YSgpIGlzRXF1YWxUb0RhdGE6W0AiZCIgZGF0YVVzaW5nRW5jb2Rpbmc6
TlNBU0NJSVN0cmluZ0VuY29kaW5nXV0pOwogICAgICAgICBFWFBFQ1RfRVEoMUxVLCBsYXN0Qnl0
ZS5zaXplKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rl
c3RXZWJDb3JlU3R1YnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVT
dHVicy5jcHAKaW5kZXggNDZjNzYyMDNlMWIyNWFhYWI3YTAyZTBiYjJiZjVlMGM0MzZlZDY4Ny4u
NWJlNjY1OTQ2MTM3MzFlMjFlZDk3ZGE3NGM1NzM4YzdjYTI4NWJmNCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKIAog
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciopCitSZWZQdHI8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25z
dCBjaGFyKikKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjAx
YWI5MGI0NzdkNmZkZTk1NzA0MTBhNGZkZWQwYTAyM2U2YmE4NS4uNWExZjQwYWQyZTFhZDVjMzdj
YzZmZGU2OGM5MTYyZTgxZmRiNWMwMCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAg
IERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMg
b25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGVjb2RlclRlc3QvRGVjb2RlclRlc3Qv
bWFpbi5tbToKKyAgICAgICAgKG1haW4pOgorCiAyMDIxLTEyLTA4ICBBbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbGF5b3V0IHBlcmZvcm1hbmNlIHRlc3QgZm9y
IHNpbXBsZSBiaWRpIGNvbnRlbnQgd2l0aCBpbmxpbmUgYm94ZXMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446536</attachid>
            <date>2021-12-09 06:26:34 -0800</date>
            <delta_ts>2021-12-13 08:34:43 -0800</delta_ts>
            <desc>Patch for review</desc>
            <filename>bug-233677-20211210012630.patch</filename>
            <type>text/plain</type>
            <size>732215</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2Nzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NTM5OGMzNmJmOTcxYTk4NjYwODYyYjM2MGQ3YjQwYmY2OGUwNTVlLi5mYWIwZWQxODk4NmY2NWQz
MDgxZjY0MDYzZGJlZjljYjg4ZDFhMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8v
cHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBi
ZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0FycmF5QnVmZmVyLmg6CisKIDIwMjEtMTItMDkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBJbnRyb2R1Y2UgQmFzZWxpbmVDYWxsTGlu
a0luZm8gYW5kIE9wdGltaXppbmdDYWxsTGlua0luZm8gdG8gc2hyaW5rIHNpemVvZihCYXNlbGlu
ZUNhbGxMaW5rSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwY2JiZjc5Mjc0NTI3MWE5YjU3OGE5NzQ5OWJj
MWQyY2JjODBiODMzLi42NTU3ZTc3OWIyNWM1NzEwMzIxNTUyZjcyZWJjMTA2N2I3MTZlMDI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQ1IEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2Vz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3
CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8g
U2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBl
cy4KKworICAgICAgICBSZW5hbWUgb25seSwgbm8gY2hhbmdlIGluIGJlaGF2aW91ci4KKworICAg
ICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcDoK
KyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5o
OgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgICogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAg
ICAqIE1vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICog
TW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5oOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwOgorICAg
ICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0NETS5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE0uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oOgor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5Lmg6CisgICAg
ICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHA6CisgICAgICAgICog
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oOgorICAgICAgICAqIE1v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNo
TG9hZGVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmg6CisgICAg
ICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5n
ZURhdGEuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdl
RGF0YS5oOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2Uu
Y3BwOgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHA6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHA6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaDoKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsUmVtb3RlSGFuZGxlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6
CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJj
ZS5jcHA6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZG9t
L0RhdGFUcmFuc2Zlci5jcHA6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVkQXR0YWNo
bWVudERhdGEuaDoKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaDoKKyAgICAg
ICAgKiBlZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHA6CisgICAgICAgICog
ZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaDoKKyAgICAgICAgKiBlZGl0aW5n
L2NvY29hL0VkaXRvckNvY29hLm1tOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZl
cnRlci5tbToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5t
bToKKyAgICAgICAgKiBlZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcDoKKyAgICAg
ICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAgICAgICogZmlsZWFwaS9CbG9iLmg6
CisgICAgICAgICogZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKiBmaWxl
YXBpL05ldHdvcmtTZW5kUXVldWUuaDoKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAg
ICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSW1hZ2VEb2N1bWVudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25XZWJLaXQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50
RmlsdGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9h
ZGVyL0xvYWRlclN0cmF0ZWd5Lmg6CisgICAgICAgICogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Lmg6CisgICAgICAg
ICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0
dXRlRGF0YS5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNo
aXZlL0FyY2hpdmVGYWN0b3J5LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
RmFjdG9yeS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHA6
CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmg6CisgICAgICAgICog
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgICogbG9hZGVy
L2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MQXJjaGl2ZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxBcmNoaXZlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmg6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0RvY3VtZW50LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmg6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5
bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2Eu
aDoKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tOgorICAg
ICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oOgorICAgICAgICAqIGxvYWRl
ci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVu
dC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFs
aXplci5jcHA6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBh
Z2UvU2hhcmVEYXRhLmg6CisgICAgICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL0tleWVkQ29kaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vTm93UGxh
eWluZ01hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2Fy
ZEN1c3RvbURhdGEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRh
Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICog
cGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0
Zm9ybUNvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJldmll
d0NvbnZlcnRlckNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQ
cm92aWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL1N0YXRpY1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Ob3dQbGF5
aW5nSW5mby5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRl
ckNvY29hLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Q
YXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2Nv
Y29hL1Bhc3RlYm9hcmRDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRC
dWZmZXJDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0
YW5jZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vz
c2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJp
Yy9LZXllZEVuY29kZXJHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVu
Y29kZXJHbGliLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRh
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29k
ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdl
RGVjb2RlckFWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5t
bToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0
YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRo
RGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlw
ZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxp
dGllcy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVV
dGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVZlcnRpY2FsRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVj
dFdyaXRlVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
U2VsZWN0aW9uRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxh
YmxlSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9T
Y2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJ
bWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9Q
TkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dl
YnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3Rl
Ym9hcmRJT1MubW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElP
Uy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
RGF0YVVSTERlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRv
ci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Np
b24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Np
b24ubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9T
aGFyZWRCdWZmZXJXaW4uY3BwOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3Bw
OgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuaDoKKyAgICAgICAgKiB0ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyLmg6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHA6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNz
b3JMaWJ4c2x0LmNwcDoKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGli
eG1sMi5jcHA6CisKIDIwMjEtMTEtMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBh
NjFjNDYwZGQ3YTRmYjcyMjVlMjM4ODJmMWFiMWM5MTE5ZGQ0MGViLi5iYTFhOGQxM2RlNjVkZGRl
NDkzNmM5MDEzNzBmZDkwZTEyZDAxOGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NSBAQAorMjAy
MS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJl
bmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2Mzkw
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJl
ZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBD
b250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0
aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETVByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETVByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvblByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5j
cHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5j
cHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
bGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RU
YXNrLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5Lmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNw
cDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNw
cDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oOgorICAgICAgICAqIFBs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlLmg6CisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcDoKKyAg
ICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKiBT
aGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFy
ZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1l
bnRDb2RlcnNHdGsuY3BwOgorICAgICAgICAqIFNoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzV2luLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQ
SUF0dGFjaG1lbnRDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFy
Z2V0R3RrMy5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlwYm9h
cmRHdGs0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVy
UHJpdmF0ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJ
SW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3Mvd2lu
L1dlYlByb2Nlc3NXaW4uY3BwOgorCiAyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cKaW5kZXggNmI5ZGZkYzY2MWYyMmMwNzFkODBmMzIwOWZlNzFmZmZiYjkw
ZWRhNy4uYTRkOTM4NmUzNzAwNTdmNjdhMGE5OWU1ZmYxZWNkMTgyNjI4NDI2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5h
cmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nl
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3
NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRv
IFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlw
ZXMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmg6CisKIDIwMjEtMTIt
MDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4gYW5kIERvbiBPbG1z
dGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBNb3ZlIFRleHRDb2RlYyBm
aWxlcyBmcm9tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dCB0byBXZWJDb3JlL1BBTC90ZXh0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggODE3OTUxMjExM2JjNjgzZjliYWU0OGExZWFlYTgy
Mjk5ZTYzYzRiNS4uM2M2ZjU3NWQ2ZmE3ZGZkYjg4Njk0NmI0NGMyYTAwZDAzZDFmZjUwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTEyLTAzICBK
ZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJl
ZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFy
ZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVh
bAorICAgICAgICB0eXBlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFT
b3VyY2UubW06CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlJlc291cmNlLm1tOgorCiAyMDIxLTExLTI1ICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRC
dWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAzZDBmN2ZiN2Y3YjE2NTNhN2JjYzkxZDVm
NDVkZmYwYmFhMTViYzNiLi44Y2YzMWYyMWU3MjYyNzBhMzlmZTQ4MWM4YzJjNzk2Y2JiY2NlNTA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEtMTIt
MDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUg
U2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZm
ZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIg
YWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAgICogTWVtb3J5U3RyZWFtLmNwcDoKKyAg
ICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAgKiBXZWJBcmNoaXZlLmNwcDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAg
ICAgICAgKiBXZWJGcmFtZS5oOgorICAgICAgICAqIFdlYktpdERMTC5jcHA6CisgICAgICAgICog
V2ViUmVzb3VyY2UuY3BwOgorICAgICAgICAqIFdlYlJlc291cmNlLmg6CisKIDIwMjEtMTItMDEg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgU2hhcmVk
QnVmZmVyQnVpbGRlciBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyLmgKaW5kZXggZWFjY2EyYzIzM2E4YTY5MzcxNTkwODA3ZGZkMzY3NWIwNjE1OTQyOC4u
YjQ2OTNmOTFjNjA3ZDhkMDc0NTk0NjQ2ZThkYzQzNzJlOWJjOTllNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCkBAIC0xMjksNyArMTI5LDcgQEAgcHVi
bGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRy
eUNyZWF0ZShBcnJheUJ1ZmZlciYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQ
dHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRl
TGVuZ3RoKTsKIAotICAgIC8vIE9ubHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6dHJ5
Q3JlYXRlVW5pbml0aWFsaXplZCBhbmQgU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZl
ci4KKyAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVu
aW5pdGlhbGl6ZWQgYW5kIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVm
ZmVyLgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0
ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNp
emUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50
Qnl0ZVNpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAKaW5kZXggMzM1NGI1MmE1
MGNiYjE4OWZkZmFlYjdkODI0ODNiZTBjNDFjM2Q0ZS4uZGEzMzZlNmY1YjE2OTRlMzc0NzY5MGM0
M2QyYjUzZjM1MThjMDlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcApAQCAtMzMs
NyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCiAK
LXZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdl
UmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmRJbWFnZVJlYWRlci5oCmluZGV4IDJiNjI2Mjg0MTliMDljYmI2OTU1MjE1YjBkNWQ3ZDczYzBi
Mzc0NGQuLjZlMjIwNDhjZjVmZWE5YWE2MmRhZGY0NWIxZjM1YzRjZTBkN2Q2ZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdl
UmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXIuaApAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBDbGlwYm9hcmRJbWFnZVJlYWRlciA6IFBhc3RlYm9h
cmRGaWxlUmVhZGVyIHsKICAgICBDbGlwYm9hcmRJbWFnZVJlYWRlcihEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmluYWwgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQogCiAgICAgYm9vbCBzaG91bGRSZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYpIGNv
bnN0IGZpbmFsOwotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQg
cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxEb2N1bWVu
dD4gbV9kb2N1bWVudDsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggMmIxNjBhMDc4MDRhMTMyNzhk
NmRiMWZmODNjODA4MjFkOTBiZDhjZC4uZWZmMTBiNWI2NWZkODFhZDliYTMyZjgwYjNmMmNmMmY4
ZTk4ZjFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZS5jcHAKQEAgLTIxNiw4ICsyMTYsOCBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2U6Omludm9rZUNvbXBsZXRpb25IYW5kbGVyKCkKICAgICAgICAgYXV0byYgZGF0YSA9IGl0
ZW1UeXBlTG9hZGVyLT5kYXRhKCk7CiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFN0cmluZz4oZGF0YSkgJiYgISFzdGQ6OmdldDxTdHJpbmc+KGRhdGEpKQogICAgICAgICAgICAg
Y3VzdG9tRGF0YS53cml0ZVN0cmluZyh0eXBlLCBzdGQ6OmdldDxTdHJpbmc+KGRhdGEpKTsKLSAg
ICAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4o
ZGF0YSkpCi0gICAgICAgICAgICBjdXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCBzdGQ6OmdldDxS
ZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkuY29weVJlZigpKTsKKyAgICAgICAgZWxzZSBpZiAoc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQor
ICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwgc3RkOjpnZXQ8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PihkYXRhKS5jb3B5UmVmKCkpOwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0yNjUsOCArMjY1LDggQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlOjpDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKIHsKICAg
ICBpZiAobV90eXBlID09ICJ0ZXh0L2h0bWwiX3MpIHsKICAgICAgICAgU3RyaW5nIG1hcmt1cFRv
U2FuaXRpemU7Ci0gICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRC
dWZmZXI+PihtX2RhdGEpKSB7Ci0gICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBzdGQ6OmdldDxS
ZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKTsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7CisgICAgICAgICAg
ICBhdXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KG1f
ZGF0YSk7CiAgICAgICAgICAgICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAg
ICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpKQogICAg
ICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFN0cmluZz4obV9kYXRhKTsKQEAg
LTI3OCw5ICsyNzgsOSBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNs
aXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogICAgIH0KIAogICAgIGlm
IChtX3R5cGUgPT0gImltYWdlL3BuZyJfcykgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXJUb1Nhbml0aXplOwotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxS
ZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkKLSAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUg
PSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKS5wdHIoKTsKKyAgICAgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRpemU7CisgICAgICAgIGlm
IChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4obV9k
YXRhKSkKKyAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSBzdGQ6OmdldDxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkucHRyKCk7CiAgICAgICAgIGVsc2UgaWYgKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpKQogICAgICAgICAgICAgYnVmZmVyVG9T
YW5pdGl6ZSA9IHV0ZjhCdWZmZXIoc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRl
bUJpbmRpbmdzRGF0YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCmluZGV4IDJjYzJjOGUxYTU0
ZTE4ZDczNDk1YzUzMGNkNzdkNTRmOTlhNTI5YTcuLjM3YzgyNWUyMzVhOGE4YjdlNDRlNDBmYjBj
MmQ3NzI0NDA3YTc1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgRE9NUHJvbWlzZTsKIGNsYXNzIEZpbGVS
ZWFkZXJMb2FkZXI7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlIDogcHVi
bGljIENsaXBib2FyZEl0ZW1EYXRhU291cmNlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaW52b2tlQ29tcGxldGlv
bkhhbmRsZXIoKTsKIAotICAgIHVzaW5nIEJ1ZmZlck9yU3RyaW5nID0gc3RkOjp2YXJpYW50PFN0
cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIEJ1ZmZlck9yU3RyaW5nID0gc3Rk
Ojp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAgICBjbGFz
cyBDbGlwYm9hcmRJdGVtVHlwZUxvYWRlciA6IHB1YmxpYyBGaWxlUmVhZGVyTG9hZGVyQ2xpZW50
LCBwdWJsaWMgUmVmQ291bnRlZDxDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcj4gewogICAgIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljIFJlZjxDbGlwYm9hcmRJdGVtVHlwZUxvYWRlcj4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgdHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCmluZGV4IDU4
Y2U4MDlhZTY5ZTIwNGI3YzA5ZTU5YTgyMDZmNzZkMDI3YTA1NWYuLjI3NGUwMzhkNDE4NzAxNjFl
NGVlYjgwYzEyYWJiYTg3MWY5ZDRhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXJJT1MubW0KQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12
b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDbGlwYm9hcmRJbWFn
ZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fbWltZVR5cGUgPT0g
ImltYWdlL3BuZyIpIHsKICAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NV
SUltYWdlSW5zdGFuY2UoKSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVy
TWFjLm1tCmluZGV4IGY0MTBhYWIxNTE3ZTM5MDg5MjZlOGVmNWU5MjhmM2M4Yzg0MzYwOWMuLjM4
MjFiMDM3MTgwMjgyM2Q2OWE4MzBhMzEwZGEzNDcwOGQ2MzMwNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRl
ck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMv
Q2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9p
ZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYg
KG1fbWltZVR5cGUgPT0gImltYWdlL3BuZyIpIHsKICAgICAgICAgYXV0byBpbWFnZSA9IGFkb3B0
TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygp
LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKaW5kZXggOGJmZjgwNzA2ZTZl
MTk5YTU0YzUzNzMwZmI2YzM3YzlmZjgzMjlmMi4uOWIzZjg0MDc0NWQxYTA2OTg4M2EyMGMzYTY1
Zjk5NzlmYjFhMjQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9D
YWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCkBAIC01MCw3ICs1MCw3IEBAIHVpbnQ2NF90
IENhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmNvbXB1dGVSZWFsQm9keVNpemUoY29uc3QgRE9NQ2Fj
aGVFbmdpbmU6OlJlc3BvCiAgICAgdWludDY0X3QgcmVzdWx0ID0gMDsKICAgICBXVEY6OnN3aXRj
aE9uKGJvZHksIFsmXSAoY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAg
cmVzdWx0ID0gZm9ybURhdGFTaXplKGZvcm1EYXRhKTsKLSAgICB9LCBbJl0gKGNvbnN0IFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChjb25zdCBSZWY8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIHJlc3VsdCA9IGJ1ZmZlci0+c2l6ZSgp
OwogICAgIH0sIFtdIChjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggNDJmZThmZGZkNDlkMWU2MGE4
ZGNmMTFjMTJmMmZiMDNlMzQ2ODkwMS4uOTVhYTA4NjU5NGE2ZmI2MGQ1NmZkNzE1ZTNmNDJlMjQ0
Njg5YTFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAg
LTMwNyw3ICszMDcsNyBAQCB2b2lkIERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZv
PiYmIGluZm9zLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgIH0KIH0KIAotdm9p
ZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4m
JiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVlc3QsIFJlZjxGZXRjaFJlc3BvbnNl
PiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JiYgcmVzcG9uc2VCb2R5KQordm9pZCBET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0YShET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmIHJlcXVl
c3QsIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hh
cmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCiB7CiAgICAgaWYgKHJlc3BvbnNlQm9keS5oYXNF
eGNlcHRpb24oKSkgewogICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMs
IFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
LCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVsZWFzZUV4Y2VwdGlvbigpXSgpIG11dGFibGUg
ewpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGlu
Zm8sIFJlZjxGZXRjaFJlc3BvbnNlPiYmIHJlc3BvbnNlLCBET01Qcm9taXNlCiAgICAgICAgICAg
ICBpZiAoYXV0byogY2h1bmsgPSByZXN1bHQucmV0dXJuVmFsdWUoKSkKICAgICAgICAgICAgICAg
ICBkYXRhLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUo
cHJvbWlzZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4geyBkYXRhLnRha2VBc0NvbnRpZ3VvdXMoKSB9KTsKKyAgICAg
ICAgICAgICAgICB0aGlzLT5wdXRXaXRoUmVzcG9uc2VEYXRhKFdURk1vdmUocHJvbWlzZSksIFdU
Rk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVzcG9uc2UpLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiB7
IGRhdGEudGFrZUFzQ29udGlndW91cygpIH0pOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAppbmRleCBjMzVj
YzNjYmNlZGIzYjI1MTFiZjM1N2EzMWFmZTJkMjc0MzhiZDRjLi4xMzk3NTRkMzBlNDAwNzg1NGE2
NDRhNzQxMWEzYzgxN2NkOWQxZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7
CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogCi0g
ICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBS
ZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYmKTsKKyAgICB2b2lkIHB1dFdpdGhSZXNwb25z
ZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJl
ZjxGZXRjaFJlc3BvbnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJik7
CiAKICAgICBlbnVtIGNsYXNzIFNob3VsZFJldHJpZXZlUmVzcG9uc2VzIDogYm9vbCB7IE5vLCBZ
ZXMgfTsKICAgICB1c2luZyBSZWNvcmRzQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4Y2VwdGlvbk9yPFZlY3RvcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPj4mJik+OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAppbmRleCA0NzUw
NGNiZWJkYWUwMzgxNjc1OWE4ZjY4ZThjMjQ2MmZkZjJhNWU1Li5jMGY4MDMyYjA0NTJjMzdlZTRj
YWZiY2FmZDc5ZjA5ZDIxNDYzMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlRW5naW5lLmNwcApAQCAtMTMxLDggKzEzMSw4IEBAIFJlc3BvbnNlQm9keSBp
c29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJvZHkpCiB7CiAgICAgcmV0
dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEp
IC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0YS0+aXNvbGF0ZWRDb3B5
KCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IC0+IFJlc3BvbnNlQm9keSB7Ci0gICAgICAgIHJldHVybiBidWZmZXIuY29weVJlZigpOyAvLyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyIGFyZSBpbW11dGFibGUgYW5kIGNhbiBiZSByZXR1cm5lZCBh
cy1pcy4KKyAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNw
b25zZUJvZHkgeworICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsgLy8gU2hhcmVkQnVm
ZmVyIGFyZSBpbW11dGFibGUgYW5kIGNhbiBiZSByZXR1cm5lZCBhcy1pcy4KICAgICB9LCBbXShj
b25zdCBzdGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBE
T01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKICAgICB9KTsKQEAgLTE0Miw3ICsxNDIs
NyBAQCBSZXNwb25zZUJvZHkgY29weVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmIGJv
ZHkpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYm9keSwgW10oY29uc3QgUmVmPEZvcm1E
YXRhPiYgZm9ybURhdGEpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBmb3JtRGF0
YS5jb3B5UmVmKCk7Ci0gICAgfSwgW10oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIGJ1ZmZlci5j
b3B5UmVmKCk7CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJv
ZHkgewogICAgICAgICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKaW5kZXggY2Jm
OGI2OGJhOGEzY2EzYWFjMmU0MTIwYmNjZGJhZjJmYTE1NjY2My4uOTRhZDIxMmEwNzBmY2UyNmFi
MGE1OTVhZjgyYTU3MzZjMTM0NThlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGVFbmdpbmUuaApAQCAtNTcsNyArNTcsNyBAQCBFeGNlcHRpb24gY29udmVydFRv
RXhjZXB0aW9uQW5kTG9nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFcnJvcik7CiBXRUJDT1JF
X0VYUE9SVCBib29sIHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY2FjaGVkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJik7CiBXRUJDT1JFX0VYUE9SVCBib29s
IHF1ZXJ5Q2FjaGVNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFVS
TCYgdXJsLCBib29sIGhhc1ZhcnlTdGFyLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYg
dmFyeUhlYWRlcnMsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJik7CiAKLXVzaW5nIFJlc3BvbnNl
Qm9keSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PjsKK3VzaW5nIFJlc3BvbnNlQm9keSA9IHN0ZDo6dmFyaWFu
dDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwogUmVz
cG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYpOwogV0VC
Q09SRV9FWFBPUlQgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VC
b2R5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNw
cAppbmRleCAyODUwZGJhMWUzYmZhMTFmNDg5YjQ0NDAzNTEzZDUxYWUxYmVhZDNhLi45ZDFiYzY3
NGZjODI2Y2I2ZDE2ZDAyNTEwY2Y4NDAxMGFkY2JkNzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCkBAIC0xMzUsMTcgKzEzNSwxNyBAQCBib29s
IENETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
KSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0ZWRJbml0
RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gQ0RNOjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBDRE06OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICByZXR1
cm4gSW5pdERhdGFSZWdpc3RyeTo6c2hhcmVkKCkuc2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5
cGUsIGluaXREYXRhKTsKIH0KIAotYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorYm9v
bCBDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICByZXR1cm4gbV9w
cml2YXRlICYmIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXRE
YXRhKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJl
c3BvbnNlKQogewogICAgIGlmICghbV9wcml2YXRlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCmluZGV4IGQ4YTRi
M2FmMTJmMWE3OTIzZDg4NzA1ZDViOTU4MWQzNmYxMDI3MGMuLmQ3YjFkNTNkMDQ5MWY3Mjc3OWI1
OTRiMmQ4M2MwOWI4M2JjZjIwN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvQ0RNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9DRE0uaApAQCAtNTIsNyArNTIsNyBAQCBjbGFzcyBDRE1JbnN0YW5jZTsKIGNsYXNz
IENETVByaXZhdGU7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
CiBjbGFzcyBDRE0gOiBwdWJsaWMgUmVmQ291bnRlZDxDRE0+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8Q0RNPiwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CkBA
IC03MywxMCArNzMsMTAgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNv
bnN0OwogICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNv
bnN0OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIGJvb2wg
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVy
Jik7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2Uo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKaW5kZXgg
MjFlNTJmNGI3MTRmYjkxZjY3Y2ZjMzk2MTM5YzE2NTI1YmZiN2I5Yi4uNDEwZWQyZmI2NDI3NTYy
Y2U5YmQ4ZWRhNGQ5MWE4NmJhOThjYWE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oCkBAIC0zNiwxNCArMzYsMTQgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0RNSW5zdGFuY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDRE1DbGllbnQgOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8Q0RNQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RN
Q2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCB2b2lkIGNkbUNsaWVudEF0dGVtcHRU
b1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNkbUNs
aWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjZG1DbGllbnRVbnJl
cXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9J
bml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRleCAyYzYzOGY3Yzg0MTk0NjQ5MGUyMDQ4NzY0MmM5YTcy
MTczYzUwNTlmLi42Zjg4OGUxNzg1OGRkYTZkOTQ3MWVjMWY2ZWY1ZDA2NmRmMGU0OTkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5p
dERhdGFSZWdpc3RyeS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgbmFtZXNwYWNlIHsKICAgICBjb25z
dCB1aW50MzJfdCBrS2V5SWRzTWF4S2V5SWRTaXplSW5CeXRlcyA9IDUxMjsKIH0KIAotc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tl
eWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyAxLiBGb3JtYXQK
ICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdp
c3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQKQEAgLTc0LDcgKzc0LDcgQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tl
eWlkcyhjb25zdCBTaGFyZWQKICAgICBpZiAoIWtpZHNBcnJheSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAg
IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBmb3IgKGF1
dG8mIHZhbHVlIDogKmtpZHNBcnJheSkgewogICAgICAgICBhdXRvIGtleUlEID0gdmFsdWUtPmFz
U3RyaW5nKCk7CiAgICAgICAgIGlmICgha2V5SUQpCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlp
ZHMoY29uc3QgU2hhcmVkCiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotc3RhdGljIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQor
c3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gMS4gRm9ybWF0CiAg
ICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0
cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CkBAIC0xMTEsNyArMTExLDcgQEAgc3RhdGlj
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShqc29uRGF0YS5kYXRhKCks
IGpzb25EYXRhLmxlbmd0aCgpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YVJl
Z2lzdHJ5OjpleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5
c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RQc3NoQm94
ZXNGcm9tQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAg
Ly8gNC4gQ29tbW9uIFN5c3RlbUlEIGFuZCBQU1NIIEJveCBGb3JtYXQKICAgICAvLyBodHRwczov
L3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9j
ZW5jLmh0bWwjY29tbW9uLXN5c3RlbQpAQCAtMTUxLDkgKzE1MSw5IEBAIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJC
b3g+Pj4gSW5pCiAgICAgcmV0dXJuIHBzc2hCb3hlczsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2Vu
Yyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHND
ZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiBrZXlJRHM7CiAKICAgICBhdXRvIHBzc2hCb3hlcyA9IGV4dHJhY3RQc3NoQm94
ZXNGcm9tQ2VuYyhidWZmZXIpOwogICAgIGlmICghcHNzaEJveGVzKQpAQCAtMTg1LDcgKzE4NSw3
IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdp
c3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uCiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVDZW5jKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXRE
YXRhUmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgLy8gNC4gQ29tbW9uIFN5c3RlbUlEIGFuZCBQU1NIIEJveCBGb3JtYXQK
ICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdp
c3RyeS9pbml0ZGF0YS9jZW5jLmh0bWwjY29tbW9uLXN5c3RlbQpAQCAtMTk1LDcgKzE5NSw3IEBA
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAot
c3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplV2ViTShjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK3N0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emVXZWJNKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBD
aGVjayBpZiB0aGUgYnVmZmVyIGlzIGEgdmFsaWQgV2ViTSBpbml0RGF0YS4KICAgICAvLyBUaGUg
V2ViTSBpbml0RGF0YSBpcyB0aGUgQ29udGVudEVuY0tleUlELCBzbyBzaG91bGQgYmUgbGVzcyB0
aGFuIGtXZWJNTWF4Q29udGVudEVuY0tleUlEU2l6ZS4KQEAgLTIwNSwxMCArMjA1LDEwIEBAIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAKLXN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNXZWJNKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNXZWJNKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
IGtleUlEczsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRCdWZmZXIgPSBzYW5p
dGl6ZVdlYk0oYnVmZmVyKTsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PiBrZXlJRHM7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZEJ1
ZmZlciA9IHNhbml0aXplV2ViTShidWZmZXIpOwogICAgIGlmICghc2FuaXRpemVkQnVmZmVyKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0yMzMsNyArMjMzLDcgQEAgSW5pdERh
dGFSZWdpc3RyeTo6SW5pdERhdGFSZWdpc3RyeSgpCiAKIEluaXREYXRhUmVnaXN0cnk6On5Jbml0
RGF0YVJlZ2lzdHJ5KCkgPSBkZWZhdWx0OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0
YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBhdXRvIGl0ZXIgPSBtX3R5cGVzLmZpbmQoaW5pdERhdGFUeXBlKTsKICAgICBpZiAoaXRl
ciA9PSBtX3R5cGVzLmVuZCgpIHx8ICFpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQpAQCAt
MjQxLDcgKzI0MSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNh
bml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhCiAgICAgcmV0dXJuIGl0ZXIt
PnZhbHVlLnNhbml0aXplSW5pdERhdGEoYnVmZmVyKTsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzKGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBJbml0
RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gaXRl
ciA9IG1fdHlwZXMuZmluZChpbml0RGF0YVR5cGUpOwogICAgIGlmIChpdGVyID09IG1fdHlwZXMu
ZW5kKCkgfHwgIWl0ZXItPnZhbHVlLnNhbml0aXplSW5pdERhdGEpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oCmlu
ZGV4IGNkMTM4N2E2YmQwMzhmZjM0ZTJjZmI3NWY0NDNkZTdkOTQwMzIxYjAuLjc3ZDYwNGIwOGJi
N2Y3ZTM4YmNjYjM1NDViMzRjOGIxMzQzNTVlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oCkBAIC0zOCwx
OSArMzgsMTkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSVNPUHJvdGVjdGlvblN5
c3RlbVNwZWNpZmljSGVhZGVyQm94OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSW5pdERhdGFSZWdpc3RyeSB7CiBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEluaXREYXRhUmVnaXN0cnkmIHNoYXJlZCgpOwogICAg
IGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxJbml0RGF0YVJlZ2lzdHJ5PjsKIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHMoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+PiBleHRyYWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgc3RydWN0IEluaXREYXRhVHlwZUNh
bGxiYWNrcyB7Ci0gICAgICAgIHVzaW5nIFNhbml0aXplSW5pdERhdGFDYWxsYmFjayA9IEZ1bmN0
aW9uPFJlZlB0cjxTaGFyZWRCdWZmZXI+KGNvbnN0IFNoYXJlZEJ1ZmZlciYpPjsKLSAgICAgICAg
dXNpbmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0gRnVuY3Rpb248c3RkOjpvcHRpb25hbDxWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+Pihjb25zdCBTaGFyZWRCdWZmZXImKT47CisgICAgICAgIHVz
aW5nIFNhbml0aXplSW5pdERhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik+OworICAgICAgICB1
c2luZyBFeHRyYWN0S2V5SURzQ2FsbGJhY2sgPSBGdW5jdGlvbjxzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+Pihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik+OwogCiAgICAgICAgIFNhbml0aXplSW5pdERhdGFDYWxsYmFjayBzYW5pdGl6ZUluaXRE
YXRhOwogICAgICAgICBFeHRyYWN0S2V5SURzQ2FsbGJhY2sgZXh0cmFjdEtleUlEczsKQEAgLTYx
LDkgKzYxLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBrZXlpZHNO
YW1lKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHdlYm1OYW1lKCk7CiAKLSAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25T
eXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3Qg
U2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAg
c3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplQ2VuYyhjb25zdCBTaGFyZWRCdWZm
ZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElT
T1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBleHRyYWN0UHNzaEJveGVzRnJv
bUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURz
Q2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpOwogCiBwcml2YXRlOgogICAgIEluaXREYXRhUmVnaXN0cnkoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNz
aW9uLmNwcAppbmRleCA4YmZiMWNlNzAxYTJmNWE2OWI1YjUxOTkxYWE4NjMyZWJiODkyNWY5Li4x
NDc3NmMyMDE1MWJmZWZlMzgwNzlhMzM3MzBjODg2NjI2OGJhNDZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24u
Y3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVx
dWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEJ1ZmYKICAgICBxdWV1
ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0
aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBpbml0RGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEubGVuZ3RoKCkpLCBpbml0RGF0YVR5
cGUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVu
dGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDEwLjEuIElmIHRoZSBpbml0IGRhdGEg
aXMgbm90IHZhbGlkIGZvciBpbml0RGF0YVR5cGUsIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXds
eSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgLy8gMTAuMi4gTGV0IHNhbml0aXplZCBpbml0
IGRhdGEgYmUgYSB2YWxpZGF0ZWQgYW5kIHNhbml0aXplZCB2ZXJzaW9uIG9mIGluaXQgZGF0YS4K
LSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkSW5pdERhdGEgPSBtX2ltcGxl
bWVudGF0aW9uLT5zYW5pdGl6ZUluaXREYXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpOworICAg
ICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkSW5pdERhdGEgPSBt
X2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZUluaXREYXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEp
OwogCiAgICAgICAgIC8vIDEwLjMuIElmIHRoZSBwcmVjZWRpbmcgc3RlcCBmYWlsZWQsIHJlamVj
dCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFz
YW5pdGl6ZWRJbml0RGF0YSkgewpAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgTWVkaWFLZXlTZXNz
aW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25z
dCBCdWZmCiAgICAgICAgICAgICBtX2xhdGVzdERlY3J5cHRUaW1lID0gMDsKICAgICAgICAgfQog
Ci0gICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZXF1ZXN0TGljZW5zZShtX3Nlc3Npb25UeXBl
LCBpbml0RGF0YVR5cGUsIHNhbml0aXplZEluaXREYXRhLnJlbGVhc2VOb25OdWxsKCksIFt0aGlz
LCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZN
b3ZlKGlkZW50aWZpZXIpXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNl
c3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBtX2luc3Rh
bmNlU2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UobV9zZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBz
YW5pdGl6ZWRJbml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBbdGhpcywgd2Vha1RoaXMsIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0g
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6
U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtU
aGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNDIyLDcgKzQyMiw3IEBAIHZvaWQg
TWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUoY29uc3QgQnVmZmVyU291cmNlJiByZXNwb25zZSwgUmVm
PERlZmVycmVkUHJvbWlzZT4mCiAgICAgLy8gNi4gUnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4g
cGFyYWxsZWw6CiAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291
cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcmVz
cG9uc2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLmxl
bmd0aCgpKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3Zl
KGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgLy8gNi4xLiBMZXQgc2FuaXRpemVk
IHJlc3BvbnNlIGJlIGEgdmFsaWRhdGVkIGFuZC9vciBzYW5pdGl6ZWQgdmVyc2lvbiBvZiByZXNw
b25zZSBjb3B5LgotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRSZXNwb25z
ZSA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2UpOworICAgICAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkUmVzcG9uc2UgPSBtX2lt
cGxlbWVudGF0aW9uLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIAogICAgICAgICAvLyA2
LjIuIElmIHRoZSBwcmVjZWRpbmcgc3RlcCBmYWlsZWQsIG9yIGlmIHNhbml0aXplZCByZXNwb25z
ZSBpcyBlbXB0eSwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9y
LgogICAgICAgICBpZiAoIXNhbml0aXplZFJlc3BvbnNlIHx8IHNhbml0aXplZFJlc3BvbnNlLT5p
c0VtcHR5KCkpIHsKQEAgLTYwMSw3ICs2MDEsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6cmVt
b3ZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAgICAgLy8gNC4zLiBMZXQg
bWVzc2FnZSB0eXBlIGJlIG51bGwuCiAKICAgICAgICAgLy8gNC40LiBVc2UgdGhlIGNkbSB0byBl
eGVjdXRlIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5y
ZW1vdmVTZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgW3RoaXMsIHdlYWtU
aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRl
bnRpZmllcildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtleXMsIHN0
ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNz
aW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnN0YW5j
ZVNlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBlLCBb
dGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0g
V1RGTW92ZShpZGVudGlmaWVyKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9y
JiYga2V5cywgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYgbWVz
c2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
CkBAIC02NDksNyArNjQ5LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnJlbW92ZShSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgLy8gNS4gUmV0dXJuIHByb21pc2UuCiB9CiAK
LXZvaWQgTWVkaWFLZXlTZXNzaW9uOjplbnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBl
IG1lc3NhZ2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIG1lc3NhZ2UpCit2b2lkIE1lZGlhS2V5
U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwg
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgbWVzc2FnZSkKIHsKICAgICAvLyA2LjQuMSBR
dWV1ZSBhICJtZXNzYWdlIiBFdmVudAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNy
eXB0ZWQtbWVkaWEvI3F1ZXVlLW1lc3NhZ2UKQEAgLTcxNiw3ICs3MTYsNyBAQCB2b2lkIE1lZGlh
S2V5U2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVzZXMoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0
dXNWZWN0b3ImJiBpbgogICAgICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYUtleVNlc3Npb246OnNl
bmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IG1lc3NhZ2UpCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5
cGUgbWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7
CiAgICAgZW5xdWV1ZU1lc3NhZ2UobWVzc2FnZVR5cGUsIG1lc3NhZ2UpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9u
LmgKaW5kZXggM2Q5NmY4ODAyZTc0Nzg0MWM0ZWZkYTgxZGNiOTQxZWE2ZTRhNzVlNC4uMzY1YWNl
NWMwOTVlN2RjMGM1NzFlNzZjY2YyYzA3YWFmYzYyYmFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBAIC01
Nyw3ICs1Nyw3IEBAIGNsYXNzIENETTsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIE1l
ZGlhS2V5U3RhdHVzTWFwOwogY2xhc3MgTWVkaWFLZXlzOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlw
ZT4gY2xhc3MgRE9NUHJvbWlzZVByb3h5OwogCkBAIC04NywyMCArODcsMjAgQEAgcHVibGljOgog
ICAgIHVzaW5nIENsb3NlZFByb21pc2UgPSBET01Qcm9taXNlUHJveHk8SURMVW5kZWZpbmVkPjsK
ICAgICBDbG9zZWRQcm9taXNlJiBjbG9zZWQoKSB7IHJldHVybiBtX2Nsb3NlZFByb21pc2UuZ2V0
KCk7IH0KIAotICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIE1l
ZGlhS2V5U3RhdHVzPj4mIHN0YXR1c2VzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXNlczsgfQor
ICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBN
ZWRpYUtleVN0YXR1cz4+JiBzdGF0dXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzZXM7IH0K
IAogICAgIHVuc2lnbmVkIGludGVybmFsSW5zdGFuY2VTZXNzaW9uT2JqZWN0UmVmQ291bnQoKSBj
b25zdCB7IHJldHVybiBtX2luc3RhbmNlU2Vzc2lvbi0+cmVmQ291bnQoKTsgfQogCiBwcml2YXRl
OgogICAgIE1lZGlhS2V5U2Vzc2lvbihEb2N1bWVudCYsIFdlYWtQdHI8TWVkaWFLZXlzPiYmLCBN
ZWRpYUtleVNlc3Npb25UeXBlLCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgUmVmPENE
TT4mJiwgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4mJik7Ci0gICAgdm9pZCBlbnF1ZXVlTWVzc2Fn
ZShNZWRpYUtleU1lc3NhZ2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGVu
cXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKTsKICAgICB2b2lkIHVwZGF0ZUV4cGlyYXRpb24oZG91YmxlKTsKICAgICB2b2lkIHNl
c3Npb25DbG9zZWQoKTsKICAgICBTdHJpbmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNv
bnN0OwogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50CiAgICAgdm9pZCB1cGRhdGVL
ZXlTdGF0dXNlcyhDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1c1ZlY3RvciYmKSBv
dmVycmlkZTsKLSAgICB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOworICAgIHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2Fn
ZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOwogICAg
IHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBQbGF0Zm9y
bURpc3BsYXlJRCBkaXNwbGF5SUQoKSBmaW5hbDsKIApAQCAtMTQwLDEwICsxNDAsMTAgQEAgcHJp
dmF0ZToKICAgICBNZWRpYUtleVNlc3Npb25UeXBlIG1fc2Vzc2lvblR5cGU7CiAgICAgUmVmPENE
TT4gbV9pbXBsZW1lbnRhdGlvbjsKICAgICBSZWY8Q0RNSW5zdGFuY2VTZXNzaW9uPiBtX2luc3Rh
bmNlU2Vzc2lvbjsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IG1fcmVjb3JkT2ZLZXlV
c2FnZTsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX3JlY29yZE9m
S2V5VXNhZ2U7CiAgICAgZG91YmxlIG1fZmlyc3REZWNyeXB0VGltZSB7IDAgfTsKICAgICBkb3Vi
bGUgbV9sYXRlc3REZWNyeXB0VGltZSB7IDAgfTsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPFJlZjxT
aGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+IG1fc3RhdHVzZXM7CisgICAgVmVjdG9yPHN0
ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4gbV9z
dGF0dXNlczsKIAogICAgIHVzaW5nIERpc3BsYXlDaGFuZ2VkT2JzZXJ2ZXIgPSBPYnNlcnZlcjx2
b2lkKFBsYXRmb3JtRGlzcGxheUlEKT47CiAgICAgRGlzcGxheUNoYW5nZWRPYnNlcnZlciBtX2Rp
c3BsYXlDaGFuZ2VkT2JzZXJ2ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCmluZGV4IDA2YWZmYjVm
MmVkZmUxODI5NzE5ZWExN2MyNzg4NTRiYzVhNmU2MGMuLjM5OGU4YWIxYjY1NmI0NDU5MjdiZWI2
YmM2OTNkZDM5OWE2ODdhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCkBAIC01Niw3ICs1Niw3
IEBAIHVuc2lnbmVkIGxvbmcgTWVkaWFLZXlTdGF0dXNNYXA6OnNpemUoKQogICAgIHJldHVybiBt
X3Nlc3Npb24tPnN0YXR1c2VzKCkuc2l6ZSgpOwogfQogCi1zdGF0aWMgYm9vbCBrZXlJZHNNYXRj
aChjb25zdCBTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgYikKK3N0YXRpYyBi
b29sIGtleUlkc01hdGNoKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGEsIGNvbnN0IEJ1
ZmZlclNvdXJjZSYgYikKIHsKICAgICBhdXRvIGxlbmd0aCA9IGEuc2l6ZSgpOwogICAgIGlmICgh
bGVuZ3RoIHx8IGxlbmd0aCAhPSBiLmxlbmd0aCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCmluZGV4IGMy
MTExMTNhMmM2ZGFjNzk3OTI0YTk5ZDJkMmRmOTdjMmU2NWY4NTAuLjYwZDYyYWFmZjgwNzRkYWRh
NmUzMWEzZjJiMzcwYTZkNmQwMWY2MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKQEAgLTM4LDcgKzM4
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFLZXlTZXNzaW9uOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3Mg
TWVkaWFLZXlTdGF0dXNNYXAgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUtleVN0YXR1c01hcD4g
ewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleXMuY3BwCmluZGV4IDgzYjI0YWNlYWE1YjEyOTRiYjRlYTQzOWZiMmQ1YzRmNmNj
ZDQ3NTMuLjM2N2YzMWQxODZiNTE2MzlhOWM3NDIxM2YwY2Y4ZTZmMmY4ZDI2ZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAK
QEAgLTE3Nyw3ICsxNzcsNyBAQCBib29sIE1lZGlhS2V5czo6aGFzT3BlblNlc3Npb25zKCkgY29u
c3QKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFLZXlzOjp1bnJlcXVlc3RlZEluaXRpYWxp
emF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGluaXREYXRhKQordm9pZCBNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6
YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIGZvciAoYXV0byYgY2RtQ2xpZW50
IDogbV9jZG1DbGllbnRzKQogICAgICAgICBjZG1DbGllbnQuY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJ
bml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChpbml0RGF0YVR5cGUsIGluaXREYXRhLmNvcHlSZWYo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eXMuaAppbmRleCA3YjU5YTNiYzZkMjI1NmZjNjU2ZjA4Y2JmMjY4OTE4NTEwOTgzYTIyLi45MWEx
YTA3MTE0MzNiZTI0N2RkMmE4NWM1ZjRhZDA5MzhhMDlhN2FjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKQEAgLTg2LDcgKzg2LDcg
QEAgcHJvdGVjdGVkOgogICAgIE1lZGlhS2V5cyhEb2N1bWVudCYsIGJvb2wgdXNlRGlzdGluY3Rp
dmVJZGVudGlmaWVyLCBib29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsIGNvbnN0IFZlY3RvcjxN
ZWRpYUtleVNlc3Npb25UeXBlPiYsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0YW5jZT4mJik7CiAK
ICAgICAvLyBDRE1JbnN0YW5jZUNsaWVudAotICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXph
dGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKKyAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3Qg
U3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJl
dHVybiBtX2xvZ2dlcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
Y3BwCmluZGV4IGQ2NWIyN2JmZThhMWVmMjE5OTJiOWUxYWQwNWFjYTU0ZTcyZDYwNWUuLmI4ZjJl
YzM3M2Q4NzNjYzljOGFjYjNjNmVjODQ1ZjZhYjAwMDlhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTI5NywxNCArMjk3LDE0IEBAIEZldGNoQm9k
eTo6VGFrZW5EYXRhIEZldGNoQm9keTo6dGFrZSgpCiAgICAgICAgIHJldHVybiBmb3JtRGF0YUJv
ZHkoKTsKIAogICAgIGlmIChpc1RleHQoKSkKLSAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBQ
QUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0Qm9keSgpLCBQ
QUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgaWYgKGlzVVJMU2VhcmNo
UGFyYW1zKCkpCi0gICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
UEFMOjpVVEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5n
KCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBBTDo6VVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJj
aFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0
aWVzKSk7CiAKICAgICBpZiAoaXNBcnJheUJ1ZmZlcigpKQotICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1
ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgo
KSk7CiAgICAgaWYgKGlzQXJyYXlCdWZmZXJWaWV3KCkpCi0gICAgICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5
QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5
dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkp
LCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKIAogICAgIHJldHVybiBudWxs
cHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggMDg5
ODNlYzAwNDNmNmM5OWE3ZmFlYWZjNjkzY2U4MjgyM2I0MDFiYy4uYmFkMWI1ZWEyM2I3NzFiMzQ3
ZjRiMDRhNTY3NThmYzAwODhlMTJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxGb3JtRGF0
YT4gYm9keUFzRm9ybURhdGEoKSBjb25zdDsKIAotICAgIHVzaW5nIFRha2VuRGF0YSA9IHN0ZDo6
dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PjsKKyAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxs
cHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKICAgICBUYWtlbkRhdGEg
dGFrZSgpOwogCiAgICAgdm9pZCBzZXRBc0Zvcm1EYXRhKFJlZjxGb3JtRGF0YT4mJiBkYXRhKSB7
IG1fZGF0YSA9IFdURk1vdmUoZGF0YSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggZGQ3N2UzYmViMzM0MjA5ZGRiNmU5
NjQ0NmM2ODliMzg2YTQ0MmZiYi4uMTkxOWMxY2I5MTMwODNlNDVlMzExODQ4NjY2ZDM3Nzc3Mjg0
NzliNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKQEAgLTMyOSwxMyArMzI5LDEzIEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6
OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplKQogICAgIG1fYnVmZmVy
LmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAotdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0RGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXRE
YXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgbV9idWZmZXIu
cmVzZXQoKTsKICAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShkYXRhKSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSgpCitSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKIHsKICAg
ICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCA2YmJiY2U3MzQ3
YWEzYmMyZjcwZjRlYzZkOGJiMGUxODcyYWFmODk3Li44NzFkMmMwODYzMzFhOTgyOTRhMTY2YTRi
NDJlMzE4NGUwMzc3NzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5oCkBAIC01MCwxMCArNTAsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0
YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQotICAgIHZvaWQg
c2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KKyAg
ICB2b2lkIHNldERhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gdGFrZURhdGEoKTsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gdGFrZUFz
QXJyYXlCdWZmZXIoKTsKICAgICBTdHJpbmcgdGFrZUFzVGV4dCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4IGZjNTVjYzdkODNkOGJjMTFm
MDg1NGRjM2NmZDg1MDk3YTMxZjEwZjYuLjAzZjg5YjYxY2E1ZjdjNzE3NmI5ZDg4Y2QxMzY2MGU4
NmI3YTI1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIu
Y3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBGZXRjaExvYWRlcjo6c3RvcCgpCiAgICAgICAg
IG1fbG9hZGVyLT5jYW5jZWwoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hMb2Fk
ZXI6OnN0YXJ0U3RyZWFtaW5nKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRj
aExvYWRlcjo6c3RhcnRTdHJlYW1pbmcoKQogewogICAgIEFTU0VSVChtX2NvbnN1bWVyKTsKICAg
ICBhdXRvIGZpcnN0Q2h1bmsgPSBtX2NvbnN1bWVyLT50YWtlRGF0YSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCmluZGV4IDJmOTBmMGVjM2ZmOTA1YTI2MjMx
Yzg0YzcyYTdhMTg2Y2Q0YmZlODMuLjQ2MTJkMGUwZTNhN2VmZTMwNjAzOTZiMGQ3NWEyZmEzYmM0
ZWRkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKQEAg
LTM5LDE0ICszOSwxNCBAQCBjbGFzcyBGZXRjaEJvZHlDb25zdW1lcjsKIGNsYXNzIEZldGNoTG9h
ZGVyQ2xpZW50OwogY2xhc3MgRmV0Y2hSZXF1ZXN0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIEZldGNoTG9hZGVyIGZpbmFsIDogcHVibGljIFRocmVhZGFibGVMb2FkZXJDbGll
bnQgewogcHVibGljOgogICAgIEZldGNoTG9hZGVyKEZldGNoTG9hZGVyQ2xpZW50JiwgRmV0Y2hC
b2R5Q29uc3VtZXIqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+RmV0Y2hMb2FkZXIoKTsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CiAKICAgICB2b2lkIHN0YXJ0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBGZXRjaFJlcXVlc3QmLCBjb25zdCBTdHJpbmcm
KTsKICAgICB2b2lkIHN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBCbG9iJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRl
eCBiOTM0MzkyYTkwM2Q0YTVmZDFjNTRhZTgxNDhiMmU2ZTc5ZTc2YzZiLi5lMzhhODNhZGU3ZDZl
MGFhZjcwY2ViOWM1YWE4ZmU4YWI0OTQzZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIEZldGNo
UmVzcG9uc2U6OnNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmIGRhdGEsIHVpbnQ2NF90IGJvZHlT
aXplV2l0aFBhZGRpbgogICAgICAgICAgICAgICAgIHNldEJvZHkoeyB9KTsKICAgICAgICAgICAg
IGJvZHkoKS5zZXRBc0Zvcm1EYXRhKFdURk1vdmUoZm9ybURhdGEpKTsKICAgICAgICAgfSwKLSAg
ICAgICAgW3RoaXNdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAg
ICAgIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgICAgICBpZiAo
aXNCb2R5TnVsbCgpKQogICAgICAgICAgICAgICAgIHNldEJvZHkoeyB9KTsKICAgICAgICAgICAg
IGJvZHkoKS5jb25zdW1lcigpLnNldERhdGEoV1RGTW92ZShidWZmZXIpKTsKQEAgLTUwNCw3ICs1
MDQsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OmZlZWRTdHJlYW0oKQogICAgIGNsb3NlU3RyZWFt
KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6
OnN0YXJ0U3RyZWFtaW5nKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaFJl
c3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiB7CiAgICAgQVNTRVJUKG1fbG9h
ZGVyKTsKICAgICByZXR1cm4gbV9sb2FkZXItPnN0YXJ0U3RyZWFtaW5nKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM3NDhjOGY1OTI3Mjkz
MGJiYzJkMTY2NmM2YWViNTQ3YTFiNWVmMDYuLmNmNzg2MzIzOWZkOTQ2ZWUwZThkODhlYWVhNzJm
ZTk4OWVlZDMxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJlYW0oKSBm
aW5hbDsKICAgICB2b2lkIGNhbmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9uc2VEYXRh
ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFu
dDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwogICAg
IFJlc3BvbnNlRGF0YSBjb25zdW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEoUmVzcG9u
c2VEYXRhJiYsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCkBAIC0xMzQsNyArMTM0
LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIGNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1l
RGF0YUJ5Q2h1bmtDYWxsYmFjayYmKTsKIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
dGFydFN0cmVhbWluZygpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
c3RhcnRTdHJlYW1pbmcoKTsKICAgICAgICAgTm90aWZpY2F0aW9uQ2FsbGJhY2sgdGFrZU5vdGlm
aWNhdGlvbkNhbGxiYWNrKCkgeyByZXR1cm4gV1RGTW92ZShtX3Jlc3BvbnNlQ2FsbGJhY2spOyB9
CiAgICAgICAgIENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrIHRha2VDb25zdW1lRGF0YUNhbGxi
YWNrKCkgeyByZXR1cm4gV1RGTW92ZShtX2NvbnN1bWVEYXRhQ2FsbGJhY2spOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKaW5kZXggNjEz
N2MyY2Y2ZmY0N2EzNjg0MGYxMWI5NjZiOWU1MjU4NzFkODE1Zi4uMWE2NmJmODE4MzIwZTk1NjA3
ZDYxNWYxYTA4MmE4Mjc2ZWIyYTM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTM4LDcgKzM4LDcgQEAgZW51bSBjbGFzcyBDcmVh
dGVOZXdHcm91cEZvckhpZ2hsaWdodCA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIEhp
Z2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgOiBib29sIHsgTm8sIFllcyB9OwogCiBzdHJ1
Y3QgQXBwSGlnaGxpZ2h0IHsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBoaWdobGln
aHQ7CisgICAgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGhpZ2hsaWdodDsK
ICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGV4dDsKICAgICBDcmVhdGVOZXdHcm91cEZvckhp
Z2hsaWdodCBpc05ld0dyb3VwOwogICAgIEhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHAg
cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IDgzYjk1ZDdj
ZjAwN2FhNTRmYmZlMjM0YjdkOGIxZWI4ZTE5OTYzZTQuLjVlODBmMGMwNzJkNDlhM2VmNzk2OTU5
MzAyYzQ0NTZjZDJhYmRlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDQsNyArNDQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0ZXhwciB1aW50NjRfdCBoaWdobGlnaHRGaWxl
U2lnbmF0dXJlID0gMHg0MTQxNTA0ODMyMzAzMjMxOyAvLyBGaWxlIFNpZ25hdHVyZSAgKEEpcHBs
ZShBUClwbGljYXRpb24oSClpZ2hsaWdodHMoMjAyMSkKIAotc3RkOjpvcHRpb25hbDxBcHBIaWdo
bGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFw
cEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKICAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRp
Z3VvdXMoKTsKICAgICBhdXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7
CkBAIC01Myw3ICs1Myw3IEBAIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBB
cHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBTaGFyZWRCCiAgICAgcmV0dXJuIGRh
dGE7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6dG9TaGFy
ZWRCdWZmZXIoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEFwcEhpZ2hsaWdo
dFJhbmdlRGF0YTo6dG9TaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIFdURjo6UGVyc2lzdGVu
Y2U6OkVuY29kZXIgZW5jb2RlcjsKICAgICBlbmNvZGVyIDw8ICp0aGlzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEu
aAppbmRleCBjZjYzODFhY2ZiMGE1MjExYjQzNTA4YjdiNTE3ZDZkYjJmNmZjNzQzLi5iNWRhZjYw
MjUzOThhM2Y3ZTZmMWQzN2FiZWNlODQ0ZDRmMWM2NTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaApAQCAt
MzMsMTIgKzMzLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShBUFBfSElH
SExJR0hUUykKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhIHsKIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gY3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0
YT4gY3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBzdHJ1Y3QgTm9k
ZVBhdGhDb21wb25lbnQgewogICAgICAgICBTdHJpbmcgaWRlbnRpZmllcjsKICAgICAgICAgU3Ry
aW5nIG5vZGVOYW1lOwpAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
PiBkZWNvZGUoRGVjb2RlciYpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdG9TaGFyZWRCdWZm
ZXIoKSBjb25zdDsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdG9TaGFyZWRCdWZm
ZXIoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9y
YWdlLmNwcAppbmRleCBkYzM5YTBmMGQxOGZmZmNhN2RmYjQ2NTIxOWNkNjEyYTlmNzM4ZjhmLi5l
NWRlODQ5NGYzNTA0NTM1OTRiMmYyZTg4YzNkZGEzM2ZhOWFmNzA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNw
cApAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6c3RvcmVBcHBI
aWdobGlnaHQoUmVmPFN0YXRpY1JhbmdlPiYmIHJhbmdlKQogICAgIG1fZG9jdW1lbnQtPnBhZ2Uo
KS0+Y2hyb21lKCkuc3RvcmVBcHBIaWdobGlnaHQoV1RGTW92ZShoaWdobGlnaHQpKTsKIH0KIAot
dm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIFNjcm9sbFRvSGlnaGxpZ2h0IHNjcm9sbCkKK3Zv
aWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgU2Nyb2xsVG9IaWdobGlnaHQgc2Ny
b2xsKQogewogICAgIGF1dG8gYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhID0gQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhOjpjcmVhdGUoYnVmZmVyKTsKICAgICBpZiAoIWFwcEhpZ2hsaWdodFJhbmdlRGF0YSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFN0b3JhZ2UuaAppbmRleCBiMTUyZjc2ZWQ0MjQwODkyZWE3ZGUyMWUyY2IwNmQ0NzJkODczMzYw
Li5lMjc2NjMzYjQ4NGY4MTA5NGFkZWNlNDVmNjRhYmJlZDE3ODEyNTAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5o
CkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoQVBQX0hJ
R0hMSUdIVFMpCiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0YXRpY1JhbmdlOwogY2xhc3MgSGlnaGxp
Z2h0OwogCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB+QXBwSGlnaGxpZ2h0U3RvcmFn
ZSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9yZUFwcEhpZ2hsaWdodChSZWY8U3Rh
dGljUmFuZ2U+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdG9yZUFuZFNjcm9sbFRv
QXBwSGlnaGxpZ2h0KFJlZjxTaGFyZWRCdWZmZXI+JiYsIFNjcm9sbFRvSGlnaGxpZ2h0KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU2Nyb2xsVG9IaWdobGlnaHQpOwogICAgIHZvaWQg
cmVzdG9yZVVucmVzdG9yZWRBcHBIaWdobGlnaHRzKCk7CiAgICAgTW9ub3RvbmljVGltZSBsYXN0
UmFuZ2VTZWFyY2hUaW1lKCkgY29uc3QgeyByZXR1cm4gbV90aW1lQXRMYXN0UmFuZ2VTZWFyY2g7
IH0KICAgICB2b2lkIHJlc2V0TGFzdFJhbmdlU2VhcmNoVGltZSgpIHsgbV90aW1lQXRMYXN0UmFu
Z2VTZWFyY2ggPSBNb25vdG9uaWNUaW1lOjpub3coKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3Bw
CmluZGV4IGExYzkzMTJkNDVlYmJmY2U5ZjMyZTZjYzFhMWEyZTg0ZGRjYTdjNzIuLjJhMmMxZmMz
Mjk1ODA1ZDUyZmQ1NmFmMzBiNDU1YWUyY2NjYzQ4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5j
cHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIEtl
eVBhdGhUeXBlIHsgTnVsbCwgU3RyaW5nLCBBcnJheSB9OwogCi1SZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktl
eVBhdGg+JiBrZXlQYXRoKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0
aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQogewogICAgIGF1dG8g
ZW5jb2RlciA9IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOwogCkBAIC0yODIsMTMgKzI4MiwxMyBA
QCBzdGF0aWMgdm9pZCBlbmNvZGVLZXkoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBjb25zdCBJREJL
ZXlEYXRhJiBrZXkpCiAgICAgfQogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
c2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCitSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKICAg
ICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7
CiAKICAgICBlbmNvZGVLZXkoZGF0YSwga2V5KTsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZUtleShjb25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJ
REJLZXlEYXRhJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAppbmRleCBhYWZkYjM3MDFmMGVm
NDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZhYThhLi42NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0
MDE3MDY3YTRmNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKQEAgLTMyLDEwICszMiwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQktleURhdGE7CiAKLVJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgo
Y29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktl
eVBhdGgoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgc3RkOjpvcHRp
b25hbDxJREJLZXlQYXRoPiYpOwogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2Vy
aWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CitSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmKTsKIGJvb2wgZGVzZXJpYWxp
emVJREJLZXlEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIElE
QktleURhdGEmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDBh
NDY5YmQwYmQxZjM4ZGNiOTZiMzlkOGMzMDAwYWY3M2QxMmFiNTkuLmM5ZDZkYTZiZGQ5ZjkzOTUw
MWY0ZjQyMzJiNGM3ODM3ZDg0MGRhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVJlY29yZGVyOjpzdGFydFJlY29yZGluZyhzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiB0aW1lU2xpYwogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyBp
bmxpbmUgUmVmPEJsb2JFdmVudD4gY3JlYXRlRGF0YUF2YWlsYWJsZUV2ZW50KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUgdGltZUNvZGUpCitzdGF0aWMgaW5saW5lIFJlZjxC
bG9iRXZlbnQ+IGNyZWF0ZURhdGFBdmFpbGFibGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkKIHsKICAgICBhdXRvIGJsb2IgPSBi
dWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCBtaW1l
VHlwZSkgOiBCbG9iOjpjcmVhdGUoY29udGV4dCk7CiAgICAgcmV0dXJuIEJsb2JFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEJsb2JFdmVudDo6SW5pdCB7IHsg
ZmFsc2UsIGZhbHNlLCBmYWxzZSB9LCBXVEZNb3ZlKGJsb2IpLCB0aW1lQ29kZSB9LCBCbG9iRXZl
bnQ6OklzVHJ1c3RlZDo6WWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCmluZGV4IDc3MTJiNDQ1MjgzNjdkOGMyNzI1MDJh
ZGJhYWNhYWY5Nzg4Y2JkYjAuLjFlOWI3NGFiMTdlMzEwOGRiNDIwOWI5YjRmMDIxNGRhMTFhYzZl
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXIuaApAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNw
YXRjaEVycm9yKEV4Y2VwdGlvbiYmKTsKIAogICAgIGVudW0gY2xhc3MgVGFrZVByaXZhdGVSZWNv
cmRlciB7IE5vLCBZZXMgfTsKLSAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IEZ1bmN0aW9u
PHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91
YmxlKT47CisgICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3Vi
bGUpPjsKICAgICB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmLCBUYWtlUHJpdmF0
ZVJlY29yZGVyKTsKIAogICAgIC8vIE1lZGlhU3RyZWFtOjpPYnNlcnZlcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAppbmRl
eCAzZjRjOWJjZDEzM2FjMjlmM2Y3ZGRlMTk5NDc4ZTM5MjU3ZDVlNjZiLi44NzRhYTdmMGIxOGYw
ZWU3NTg4MGJhNWY1ZWY2N2Q0N2JmYzJiMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcApAQCAtNzcsNyArNzcsNyBA
QCB2b2lkIEFydHdvcmtJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBOZXR3b3JrTAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8v
IFNhbml0aXplIHRoZSBpbWFnZSBieSBkZWNvZGluZyBpdCBpbnRvIGEgQml0bWFwSW1hZ2UuCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2Ut
PmltYWdlKCktPmRhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBhdXRv
IGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGJpdG1hcEltYWdlLT5z
ZXREYXRhKFdURk1vdmUoYnVmZmVyVG9TYW5pdGl6ZSksIHRydWUpOwogICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQ
aXhlbEZvcm1hdDo6QkdSQTgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IDJiM2NkZTM2MDgyNDcxYzExYzg3ZmNmNjFj
YzgxY2MzNjBjMzlkOTAuLmQzNzhhZmM2ZjhhMWI1N2EwMzAyZTJjODY4YjI0MGEyMDk3ZmU0YzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5jcHAKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVm
ZmVyVGltZXJGaXJlZCgpCiAgICAgLy8gaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlh
L3Jhdy1maWxlL3RpcC9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLmh0bWwjc291cmNlYnVmZmVy
LXNlZ21lbnQtcGFyc2VyLWxvb3AKICAgICAvLyBXaGVuIHRoZSBzZWdtZW50IHBhcnNlciBsb29w
IGFsZ29yaXRobSBpcyBpbnZva2VkLCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGFwcGVuZERhdGEgPSBXVEZNb3ZlKG1fcGVuZGluZ0FwcGVuZERh
dGEpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBhcHBlbmREYXRhID0gV1RG
TW92ZShtX3BlbmRpbmdBcHBlbmREYXRhKTsKICAgICAvLyAxLiBMb29wIFRvcDogSWYgdGhlIGlu
cHV0IGJ1ZmZlciBpcyBlbXB0eSwgdGhlbiBqdW1wIHRvIHRoZSBuZWVkIG1vcmUgZGF0YSBzdGVw
IGJlbG93LgogICAgIGlmICghYXBwZW5kRGF0YSB8fCAhYXBwZW5kRGF0YS0+c2l6ZSgpKSB7CiAg
ICAgICAgIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQ6OkFw
cGVuZFN1Y2NlZWRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL1NvdXJjZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuaAppbmRleCA1MjBjMDc3NTY5NmEyZjBlMmU3MzAwNzM1ZThjOTc3NDk1
ZjFhNjE0Li5kNGM4NTc5YzBiYmQ0NDNhNTEyZmE5ZjY4YzQyN2VjMDQ4ODVkMGQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKQEAg
LTIyMiw3ICsyMjIsNyBAQCBwcml2YXRlOgogCiAgICAgV1RGOjpPYnNlcnZlcjx2b2lkKigpPiBt
X29wYXF1ZVJvb3RQcm92aWRlcjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGVuZGlu
Z0FwcGVuZERhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fcGVuZGlu
Z0FwcGVuZERhdGE7CiAgICAgVGltZXIgbV9hcHBlbmRCdWZmZXJUaW1lcjsKIAogICAgIFJlZlB0
cjxWaWRlb1RyYWNrTGlzdD4gbV92aWRlb1RyYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlci5oCmluZGV4IGY1ODI3ZGY5Mzc5NDkzZDI4MTI3MDE3N2NjZmJjYTA1NTE1MzIzMWYuLjcz
OTQyYTgzNTkzMWE5ZDI4NGM2YTQ1MWJiOGRiZmI1NzY1Y2FkYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ7CiBjbGFzcyBSVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXJDb25uZWN0aW9uOwogY2xhc3MgUlRDRXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBSVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIgZmluYWwgOiBwdWJsaWMgUlRDRGF0YUNoYW5uZWxIYW5kbGVyLCBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyPiB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAKICAgICBz
dHJ1Y3QgTWVzc2FnZSB7CiAgICAgICAgIGJvb2wgaXNSYXcgeyBmYWxzZSB9OwotICAgICAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBWZWN0b3I8TWVzc2FnZT4gbV9wZW5kaW5nTWVzc2Fn
ZXM7CiAgICAgYm9vbCBtX2lzUGVuZGluZ0Nsb3NlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IGU3OWViZGJhYzQw
ODNlOTQ1NGM2OWQxOTk2ZTZmZDJkOGM3Mjk4MTkuLjNjZWVkMGEwMTFlN2I1NDZmYWRkZjQ4YmJk
YTIxMWRmZGQ1MjRjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlcjo6c2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50
LAogICAgIG1fY29udGV4dElkZW50aWZpZXIgPSBjb250ZXh0SWRlbnRpZmllcjsKIAogICAgIGZv
ciAoYXV0byYgbWVzc2FnZSA6IG1fYnVmZmVyZWRNZXNzYWdlcykgewotICAgICAgICBzd2l0Y2hP
bihtZXNzYWdlLCBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKKyAgICAgICAgc3dpdGNo
T24obWVzc2FnZSwgWyZdKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgZGF0YSkgewogICAg
ICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwgWyZdKFN0cmluZyYgdGV4dCkgewog
ICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdEYXRhKHRleHQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAppbmRleCA0MWY5NTI4MjFl
NjIwMDkzZjhlZWZlMzJjNWVkNGFlMGY1ZTU0MTk3Li4xMWJkNDVkZTkxNTU3NzlmZmM5ZWZiMDNl
OTU1MjhmMDVlNjRkNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXIuaApAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogICAgICAgICBSVENEYXRh
Q2hhbm5lbFN0YXRlIHN0YXRlOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPHdlYnJ0Yzo6UlRDRXJy
b3I+IGVycm9yOwogICAgIH07Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxTdGF0
ZUNoYW5nZSwgU3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgTWVzc2FnZSA9
IHN0ZDo6dmFyaWFudDxTdGF0ZUNoYW5nZSwgU3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+OwogICAgIHVzaW5nIFBlbmRpbmdNZXNzYWdlcyA9IFZlY3RvcjxNZXNzYWdlPjsKICAg
ICB2b2lkIHN0b3JlTWVzc2FnZShQZW5kaW5nTWVzc2FnZXMmLCBjb25zdCB3ZWJydGM6OkRhdGFC
dWZmZXImKTsKICAgICB2b2lkIHByb2Nlc3NNZXNzYWdlKGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZl
ciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtU2luay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtU2luay5oCmluZGV4IDBiODk4ZjZhZGI1N2ViMjVkYzQ5MzdkODFmZjVkMTRkNTI5NzZjODQu
LmQ1MTczZmJmOGI0MDM0MWM1Y2Y4ZDhhNGY1NWVlYWM4ZmY4MzhhMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKQEAgLTM1
LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCdWZmZXJTb3VyY2U7CiBj
bGFzcyBSZWFkYWJsZVN0cmVhbTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJlYWRhYmxlU3RyZWFtU2luayA6IHB1YmxpYyBSZWZD
b3VudGVkPFJlYWRhYmxlU3RyZWFtU2luaz4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDg1MTQ3YzA5NjFjOTk3
MzE2MzFmMGVkZmI5ZWZlNzRlNWMzNmNhY2IuLjUyNTEwYzMwODE4ZjBjYTkxNmE4ODQzNzdkMjI0
YTFhYmE3OTViODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2Uq
IGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YgogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBGb3JtRGF0YSBsb2FkaW5nLgogICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMjQ4CiAgICAgICAg
IGNvbXBpbGVyLT5mYWlsKGdsb2JhbE9iamVjdCwgY3JlYXRlRE9NRXhjZXB0aW9uKCpnbG9iYWxP
YmplY3QsIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiTm90IGltcGxlbWVudGVkIl9z
ICB9KSk7Ci0gICAgfSwgWyZdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7
CisgICAgfSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgY29tcGls
ZXItPmFkZEJ5dGVzKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIGNv
bXBpbGVyLT5maW5hbGl6ZShnbG9iYWxPYmplY3QpOwogICAgIH0sIFsmXShzdGQ6Om51bGxwdHJf
dCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZl
clNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZm
ZXJTb3VyY2VQcm92aWRlci5oCmluZGV4IGI5MThmMzE0MWFmMmY1MjE2NDI2ODk4ZmFlYTg0ZjRi
MDJiMWUyN2UuLmI4Yjc3ODVmOTFkMDY4YzJhNDZjZWIxZDY1OTc1OGZjZjhiNjlkOTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3Zp
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNl
UHJvdmlkZXIuaApAQCAtOTQsNyArOTQsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFNjcmlw
dEJ1ZmZlciBtX3NjcmlwdEJ1ZmZlcjsKLSAgICBtdXRhYmxlIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBtX2NvbnRpZ3VvdXNCdWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2NvbnRpZ3VvdXNCdWZmZXI7CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX3Njcmlw
dEhhc2ggeyAwIH07CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9jYWNoZWRTY3JpcHRTdHJpbmc7CiAg
ICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fY29udGFpbnNPbmx5QVNDSUk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmlu
ZGV4IDdlNDlhOWU3MzIyNmI2NWNjMjhiZjU5NDgxM2IwZjgzYjI2OWQyMmIuLmVmMzdmMWQwY2E0
NjJiYjliN2M5YjZhNTVkMThlYmI0YzExODFhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC01NSw3ICs1NSw3IEBAIGNs
YXNzIERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzOwogY2xhc3MgSURCVmFsdWU7CiBjbGFzcyBNZXNz
YWdlUG9ydDsKIGNsYXNzIEltYWdlQml0bWFwQmFja2luZzsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBlbnVtIGNsYXNzIFNlcmlhbGl6YXRpb25S
ZXR1cm5Db2RlOwogCiBlbnVtIGNsYXNzIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgeyBOb25UaHJv
d2luZywgVGhyb3dpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3Bw
CmluZGV4IDNjNWVhOWI4OWE5YzllOTAzNzBiOThkZjUyODU2MzA2NDk5MDA3ZDkuLmFlYjRiNmNj
NTBhMTI2Yzk4MzBkNjA2YWJiMGMzYThjNjlhOWMzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgQ1NTRm9udEZhY2VT
b3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAgICAgIEFTU0VSVCgh
bV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgICAgICBTVkdGb250
RWxlbWVudCYgZm9udEVsZW1lbnQgPSBkb3duY2FzdDxTVkdGb250RWxlbWVudD4oKm1fc3ZnRm9u
dEZhY2VFbGVtZW50LT5wYXJlbnROb2RlKCkpOwogICAgICAgICAgICAgICAgIGlmIChhdXRvIG90
ZkZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KGZvbnRFbGVtZW50KSkKLSAgICAgICAgICAgICAg
ICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9nZW5l
cmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90ZkZvbnQudmFs
dWUoKSkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dlbmVyYXRlZE9URkJ1ZmZlcikgewogICAg
ICAgICAgICAgICAgICAgICBtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2dlbmVyYXRlZE9URkJ1ZmZlciwgU3RyaW5nKCkpOwog
ICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbkRvY3Vt
ZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIENTU0ZvbnRG
YWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgfSBlbHNlIGlmICht
X2ltbWVkaWF0ZVNvdXJjZSkgewogICAgICAgICAgICAgQVNTRVJUKCFtX2ltbWVkaWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgYm9vbCB3cmFwcGluZzsKLSAgICAgICAg
ICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1t
ZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVT
b3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsK
ICAgICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IENhY2hlZEZv
bnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGJ1ZmZlci5nZXQoKSwgU3RyaW5nKCksIHdyYXBwaW5n
KTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2ltbWVkaWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA2YTgyY2YxZTNkYzkxNTk3ODUzMzY1YmQzMWUzNjIz
Mjc4NmEwODgyLi4xMDhlNmM4NzY3ZDBkMmZkYWNiZTY1MDRlYmM1MDcwZTg4MmJlNjQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3MgQ1NTRm9udFNlbGVj
dG9yOwotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgRm9udDsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7
CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxDU1NGb250U2VsZWN0b3I+
IG1fZm9udFNlbGVjdG9yOyAvLyBGb3IgcmVtb3RlIGZvbnRzLCB0byBvcmNoZXN0cmF0ZSBsb2Fk
aW5nLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+IG1fZm9udFJlcXVlc3Q7
IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywgYSBwb2ludGVyIHRvIHRoZSByZXNvdXJjZSByZXF1
ZXN0LgogCi0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVkT1RG
QnVmZmVyOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOwog
ICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gbV9pbW1lZGlhdGVTb3VyY2U7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1faW1tZWRpYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAppbmRleCAx
ZGVhYzRmNDFjZjQ5ZjFmODgyZGNjZWZkNDhjZjZhOTczMmYzZWQ5Li5jNDJlYzA1MWZlMTFlYmEx
NGY4MTMzNTlkOGQxN2EyYzI4MTY2NGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RGF0YVRyYW5zZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNw
cApAQCAtNDAyLDcgKzQwMiw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkRmlsZVR5cGVSZWFkZXIgZmlu
YWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgICAgIHR5cGVzLmFkZChGaWxlOjpjb250
ZW50VHlwZUZvckZpbGUoZmlsZW5hbWUpKTsKICAgICB9CiAKLSAgICB2b2lkIHJlYWRCdWZmZXIo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKQor
ICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQogICAgIHsKICAgICAgICAgdHlwZXMuYWRkKHR5
cGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBmYTE0NjdkYjhlZDg3
Mzc0N2MwNDQ3M2IxNGM2ODlhZDdiNzBhMTNkLi5jNWU5ZTI2YjM3MmFlNjgzZjE4NjhlOTIwYzQ1
ZWQ3MGVkZjU1NDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00MTI1LDcgKzQx
MjUsNyBAQCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIEVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50
SW5mbyhFbGVtZW50JiBlbGVtZW50KQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgVmVjdG9y
PFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4gYWRkaXRpb25hbERhdGE7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZ2V0UGFzdGVi
b2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoZWxlbWVudCwgYWRkaXRpb25hbFR5cGVzLCBh
ZGRpdGlvbmFsRGF0YSk7CiAjZW5kaWYKQEAgLTQxMzMsNyArNDEzMyw3IEBAIFByb21pc2VkQXR0
YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1l
bnQpCiAgICAgcmV0dXJuIHsgYXR0YWNobWVudC0+dW5pcXVlSWRlbnRpZmllcigpLCBXVEZNb3Zl
KGFkZGl0aW9uYWxUeXBlcyksIFdURk1vdmUoYWRkaXRpb25hbERhdGEpIH07CiB9CiAKLXZvaWQg
RWRpdG9yOjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRG
aWxlTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBFZGl0b3I6OnJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGlmIChhdXRvKiBjbGllbnQgPSB0
aGlzLT5jbGllbnQoKSkKICAgICAgICAgY2xpZW50LT5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlm
aWVyKGlkZW50aWZpZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxlTmFtZSwgV1RGTW92ZShk
YXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBmNWZjZGNjYjY2NjU4MjAyMzg1MjBl
NjMyMzUxYzlmZmEyYWI5YWE4Li4xZDA3MTZjNWI5M2M4YmI3YWQ3M2Y0MTc0Y2E4MDQ1OTA1Zjkx
OTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU4LDcgKzU4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjsKIGNsYXNzIEFyY2hp
dmVSZXNvdXJjZTsKIGNsYXNzIENvbXBvc2l0ZUVkaXRDb21tYW5kOwotY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEN1c3RvbVVuZG9TdGVw
OwogY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjsKQEAg
LTc1LDcgKzc1LDcgQEAgY2xhc3MgS2lsbFJpbmc7CiBjbGFzcyBQYXN0ZWJvYXJkOwogY2xhc3Mg
UGFzdGVib2FyZFdyaXRlckRhdGE7CiBjbGFzcyBSZW5kZXJMYXllcjsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250OwogY2xhc3Mg
U3BlbGxDaGVja1JlcXVlc3Q7CiBjbGFzcyBTcGVsbENoZWNrZXI7CkBAIC01MzcsNyArNTM3LDcg
QEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
YWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSos
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5nU3RhbmRhbG9u
ZUltYWdlcygpIGNvbnN0OwpAQCAtNTY0LDcgKzU2NCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnRBdHRh
Y2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4m
JiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmls
ZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZmlsZURhdGEpOworICAgIHZvaWQgcmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBmaWxlRGF0YSk7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3Rv
cjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2ht
ZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50
aWZpZXIoY29uc3QgU3RyaW5nJik7CkBAIC01NzQsNyArNTc0LDcgQEAgcHVibGljOgogCiAgICAg
V0VCQ09SRV9FWFBPUlQgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBwcm9taXNlZEF0dGFjaG1lbnRJ
bmZvKEVsZW1lbnQmKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGdldFBhc3RlYm9h
cmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0b3I8U3RyaW5nPiYgb3V0
VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsK
KyAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQm
LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4m
IG91dERhdGEpOwogI2VuZGlmCiAjZW5kaWYKIApAQCAtNjE5LDEyICs2MTksMTIgQEAgcHJpdmF0
ZToKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBhZGp1c3RlZFNlbGVjdGlvblJhbmdl
KCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CiAgICAgU3RyaW5nIHNlbGVjdGlv
bkluSFRNTEZvcm1hdCgpOwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBpbWFn
ZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYpOwogICAgIHN0YXRpYyBTdHJpbmcgdXNl
clZpc2libGVTdHJpbmcoY29uc3QgVVJMJik7Ci0gICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKLSAg
ICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdChO
U0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwogI2Vu
ZGlmCiAgICAgdm9pZCBwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGb250
QXR0cmlidXRlcyYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCmluZGV4IDM5YzNiMWZh
M2Q4NTZmOGQ4NDljNjkzMzFkODllOTk4ZjdlNzYyM2IuLmYzMDI4MjM1NjkwMDZmNWNmOWRiYjRl
ZmMzNzNlNjdlZjA1ZjE5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJp
YWxpemVkQXR0YWNobWVudERhdGEuaApAQCAtMzMsMTIgKzMzLDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1
ZmZlcjsKIAogc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YSB7CiAgICAgU3RyaW5nIGlk
ZW50aWZpZXI7CiAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAgIFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhOworICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29u
dGVudFJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgK
aW5kZXggMDhhYTEyNDI2NjIwZjc2OTUzYTc5YjM0ZWRlNWY2ZGYwNTI3YjAxNS4uOTU3YjRmZDRh
NTU3ZmM4MWNkMzA2OWVlYWNiODk0ODhhOTQ3YjdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb250ZW50UmVhZGVyLmgKQEAgLTcyLDE2ICs3MiwxNiBAQCBwcml2YXRlOgogICAgIGJv
b2wgcmVhZEZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVk
UHJlc2VudGF0aW9uU2l6ZSA9IHsgfSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSA9IHsgfSkg
b3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikg
b3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAg
ICBib29sIHJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUs
IFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJp
ZGU7CisgICAgYm9vbCByZWFkSW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplID0geyB9KSBvdmVycmlkZTsKICAgICBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29s
IHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJU
RkQoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJl
ZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkV2Vi
QXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFk
UlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRG
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWREYXRhQnVm
ZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0g
eyB9KSBvdmVycmlkZTsKICNlbmRpZgogfTsKIApAQCAtOTksMTYgKzk5LDE2IEBAIHByaXZhdGU6
CiAgICAgYm9vbCByZWFkRmlsZVBhdGgoY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9
IHsgfSwgY29uc3QgU3RyaW5nJiA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICBib29sIHJlYWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
Ci0gICAgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiwg
UHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIHJlYWRJbWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5n
JiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KICAgICBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
Ym9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJl
YWRSVEZEKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURihTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCByZWFkV2ViQXJjaGl2ZShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRGRChGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRGKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWREYXRhQnVmZmVyKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25T
aXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRl
ci5jcHAKaW5kZXggNTQ5ZWI3ZDJlNGMwNzU0OGU0YThjOWVhMjRlYzIwZTRmMjFiZmEyNS4uMTE3
ZGJhNjhlZGIwYmQ0YjZjMzBlMDk0ODVkOWQwYzBmMjljMzgyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcApAQCAt
MzksNyArMzksNyBAQCB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEZpbGVu
YW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0
ZShjb250ZXh0LmdldCgpLCBmaWxlbmFtZSkpOwogfQogCi12b2lkIFdlYkNvcmVQYXN0ZWJvYXJk
RmlsZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBXZWJDb3JlUGFzdGVi
b2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAg
ICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBCbG9iOjpjcmVhdGUo
Y29udGV4dC5nZXQoKSwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCB0eXBlKSwgZmlsZW5hbWUpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRG
aWxlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmls
ZVJlYWRlci5oCmluZGV4IDVjNTI5ZGQ3YzhlY2MwMDA0OGZjYjRkMTU4MTQ2MzViMjRkOTBiYjcu
LjlkODE2MDVmMTk5Mjk4ZjE5YzBlZDY5OTVmZTNiZDc3ODMwMzRmZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaApAQCAt
NDEsNyArNDEsNyBAQCBzdHJ1Y3QgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyIGZpbmFsIDog
UGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIH5XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIo
KTsKIAogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgIHZv
aWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBj
b250ZXh0OwogICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXggZDBjOTMzMTAwYzY1NWYxZmE4NTI1Mjc4
ODE4NzA0OTljMmY2MWZlMy4uYTg1YjdhYTc1MjZiMmY3YzUxYTNmNWM0NjdiZWIzNTBlOTkxNGFh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC03
MSwxMiArNzEsMTIgQEAgdm9pZCBFZGl0b3I6OnBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVj
dGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLAogICAgICAgICBhdHRyaWJ1dGVz
LmZvbnQgPSAoX19icmlkZ2UgaWQpY3RGb250OwogfQogCi1zdGF0aWMgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1
dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQorc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRy
aWJ1dGVkU3RyaW5nKQogewogICAgIGlmICghYXR0cmlidXRlZFN0cmluZy5sZW5ndGgpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJp
YnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7Cisg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWRE
YXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6
WUVTIGVycm9yOm51bGxwdHJdKTsKIH0KIAogU3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1M
Rm9ybWF0KCkKQEAgLTg3LDcgKzg3LDcgQEAgU3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1M
Rm9ybWF0KCkKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKLXZvaWQgRWRpdG9y
OjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50
LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+JiBvdXREYXRhKQordm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERh
dGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBl
cywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKIHsKICAgICBhdXRvIGVs
ZW1lbnRSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoZWxlbWVudCk7CiAgICAgY2xpZW50
KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRhKGVsZW1lbnRSYW5nZSwgb3V0VHlwZXMsIG91dERh
dGEpOwpAQCAtOTksNyArOTksNyBAQCB2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5k
RGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cgogICAgICAgICBp
ZiAoYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCplbGVtZW50UmFuZ2Up
KSB7CiAgICAgICAgICAgICBpZiAoYXV0byBkYXRhID0gYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2Vu
dGF0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBvdXRUeXBlcy5hcHBlbmQoV2ViQXJjaGl2ZVBi
b2FyZFR5cGUpOwotICAgICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7CisgICAgICAgICAgICAgICAgb3V0RGF0YS5h
cHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQpAQCAtMTUxLDEyICsxNTEsMTIgQEAgdm9pZCBFZGl0b3I6OndyaXRl
U2VsZWN0aW9uKFBhc3RlYm9hcmRXcml0ZXJEYXRhJiBwYXN0ZWJvYXJkV3JpdGVyRGF0YSkKICAg
ICBwYXN0ZWJvYXJkV3JpdGVyRGF0YS5zZXRXZWJDb250ZW50KFdURk1vdmUod2ViQ29udGVudCkp
OwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25J
bldlYkFyY2hpdmVGb3JtYXQoKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rp
b25JbldlYkFyY2hpdmVGb3JtYXQoKQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24obV9kb2N1bWVudC5mcmFtZSgpKTsKICAgICBpZiAo
IWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0
KCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVw
cmVzZW50YXRpb24oKS5nZXQoKSk7CiB9CiAKIC8vIEZJWE1FOiBNYWtlcyBubyBzZW5zZSB0aGF0
IHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2ZlciBhbHdheXMgaW5jbHVkZXMgYWx0IHRleHQsIGJ1
dCBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkIGRvZXMgbm90LgpAQCAtMjAxLDI3ICsyMDEs
MjcgQEAgU3RyaW5nIEVkaXRvcjo6dXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJMJiB1cmwpCiAg
ICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKIH0KIAotUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRT
dHJpbmcgKnN0cmluZykKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZv
cm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICBOU1VJbnRlZ2VyIGxlbmd0
aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFu
Z2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVu
Z3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJp
bmcpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJp
YnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5s
ZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgp
IGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRB
dHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKICAgICBy
ZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZl
cnRlci5tbQppbmRleCAzYzVlNTQzMjViOWZlMjM1NjdlZTQyZGU5OWY5YjViMTVjNDJiMTAwLi4w
NzgyNDgzNjJhYTA1NGRjM2FiMDAwMDQ1MTcxODQxOThhNTgwZjc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0yMzIyLDcgKzIzMjIsNyBA
QCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJMKERvY3Vt
ZW50TG9hZGVyKiBkYXRhU291cmNlLCBOUwogc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVy
PiBmaWxlV3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAg
ICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7
Ci0gICAgICAgIGlmIChTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdlLT5y
ZXNvdXJjZUJ1ZmZlcigpKQorICAgICAgICBpZiAoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hh
cmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhD
b250ZW50czpzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
V2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IGFkYTY2ZDJhYzI5NjMwNWQ2MGM2MzE3MzY3
MzA5ODE2NzlmOWYwZmEuLjc2YjFhMDA5ZGU0MzBmYTNiNTRkOWExNWU2NzhjZDgzZjMxNDVmZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJl
YWRlckNvY29hLm1tCkBAIC0yNDUsNyArMjQ1LDcgQEAgc3RhdGljIGJvb2wgc3VwcG9ydHNDbGll
bnRTaWRlQXR0YWNobWVudERhdGEoY29uc3QgRnJhbWUmIGZyYW1lKQogCiAjZW5kaWYKIAotc3Rh
dGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVu
dChGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVy
cmVkU2l6ZSkKK3N0YXRpYyBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJ
bWFnZUF0dGFjaG1lbnQoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
UHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQogewogI2lmIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCiAgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojpj
cmVhdGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1bWVudCk7CkBAIC0yODUsNyArMjg1
LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1l
JiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICBzdHJ1Y3QgQXR0YWNobWVudEluc2Vy
dGlvbkluZm8gewogICAgICAgICBTdHJpbmcgZmlsZU5hbWU7CiAgICAgICAgIFN0cmluZyBjb250
ZW50VHlwZTsKLSAgICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAg
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgICAgIFJlZjxFbGVtZW50PiBvcmlnaW5h
bEVsZW1lbnQ7CiAgICAgfTsKIApAQCAtNDI4LDcgKzQyOCw3IEBAIHN0cnVjdCBNYXJrdXBBbmRB
cmNoaXZlIHsKICAgICBSZWY8QXJjaGl2ZT4gYXJjaGl2ZTsKIH07CiAKLXN0YXRpYyBzdGQ6Om9w
dGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNh
blNob3dNSU1FVHlwZUFzSFRNTCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hp
dmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5
cGVBc0hUTUwpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KFVSTCgpLCBidWZmZXIpOwogICAgIGlmICghYXJjaGl2ZSkKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBz
dGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1
bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgIHJldHVybiBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFn
bWVudEluRG9jdW1lbnQoV1RGTW92ZShmcmFnbWVudCksICpzdGFnaW5nRG9jdW1lbnQsIG1zb0xp
c3RRdWlya3MsIG1hcmt1cEFuZEFyY2hpdmUubWFya3VwKTsKIH0KIAotYm9vbCBXZWJDb250ZW50
UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29u
dGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkg
fHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUzMiw3ICs1
MzIsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJrdXBS
ZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250
ZW50TWFya3VwUmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC02MTIsNyArNjEyLDcgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFk
SFRNTChjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gIW1hcmt1cC5pc0VtcHR5KCk7
CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZv
ckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC02MjYsNyArNjI2LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFy
a3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVu
dE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
NjM5LDcgKzYzOSw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJl
YWRlcjo6cmVhZFJURihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYg
KGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtNjUzLDcgKzY1Myw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVh
ZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBX
ZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9v
bCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTY3Niw3ICs2NzYsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFp
blRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdl
YkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNp
emUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBw
cmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQogewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgp
KTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwpAQCAtNzQ2LDcgKzc0
Niw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIHJldHVybiBhdHRh
Y2htZW50OwogfQogCi1zdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShG
cmFtZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkU2l6ZSkK
K3N0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JEYXRhKEZyYW1lJiBmcmFtZSwg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkU2l6ZSkKIHsK
ICAgICBSZWYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKICAgICBhdXRvIGF0dGFjaG1l
bnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRU
YWcsIGRvY3VtZW50KTsKQEAgLTgzMyw3ICs4MzMsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6
OnJlYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZmZXIoU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQ
cmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRl
bnRSZWFkZXI6OnJlYWREYXRhQnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUg
cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0
ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAppbmRleCA2MDQ4NmU3MWFkNTlmZWNjNzE1ZmYwYTA5
YjFjMzU1OGI3YjM0MmMyLi5kM2U5ODE5YmQ1MzFmODQ4NmEzMTdhYjlmOWVkODNhOTg4NWJlMmJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVy
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVy
R3RrLmNwcApAQCAtNzEsNyArNzEsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRQbGFp
blRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdl
YkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNp
emUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBw
cmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQogewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgp
KTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDVmOGJjMzQ3N2MxY2EyMWIwYzcyMjcyMjdh
YWYyZGE0YjE5MmJkMWEuLjJkMTliOWM3YzIyYjNlYmMyNjdjNjc2MTA2Yzg5MmYwOWI3Nzc1M2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE2NiwxNSArMTY2
LDE1IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgY2xpZW50KCktPnNldEluc2VydGlv
blBhc3RlYm9hcmQoU3RyaW5nKCkpOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQp
CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVs
ZW1lbnQmIGltYWdlRWxlbWVudCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUoaW1hZ2VFbGVtZW50KTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
YXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOworICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7
CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8U2hh
cmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgLy8gRklYTUU6IFRoZSBpbnRlcmZhY2UgdG8gdGhp
cyBmdW5jdGlvbiBpcyBhd2t3YXJkLiBXZSdkIHByb2JhYmx5IGJlIGJldHRlciBvZmYgd2l0aCB0
aHJlZSBzZXBhcmF0ZSBmdW5jdGlvbnMuIEFzIG9mIHRoaXMgd3JpdGluZywgdGhpcyBpcyBvbmx5
IHVzZWQgaW4gV2ViS2l0MiB0byBpbXBsZW1lbnQgdGhlIG1ldGhvZCAtW1dLVmlldyB3cml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZDp0eXBlczpdLCB3aGljaCBpcyBvbmx5IHVzZWQgdG8gc3VwcG9y
dCBPUyBYIHNlcnZpY2VzLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Js
b2IuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCmluZGV4IDQ1ZDkzM2UxM2NhNGQy
MjUxYzVkZWQ4NDhhYTllOTg3MmM3Njc0ODkuLmJjYTY2OTZlYmU2ZjBlZGRkZGVlNzliNzNjM2Vl
MTQ0OTZkODJmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNz
IEJsb2JMb2FkZXI7CiBjbGFzcyBEZWZlcnJlZFByb21pc2U7CiBjbGFzcyBSZWFkYWJsZVN0cmVh
bTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3Mg
RXhjZXB0aW9uT3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29y
a1NlbmRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUu
Y3BwCmluZGV4IDU1OWViY2M0OGM1ZjA5NmFjMTliYWU3ZDlmNzE4YjcxZjJhMzUzMjIuLjQyZjQx
ODBkZmE4NDI3ZTBlNjBmODFlYjc5YjE5MTg3Y2FmZGJhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIE5ldHdv
cmtTZW5kUXVldWU6OnByb2Nlc3NNZXNzYWdlcygpCiAgICAgICAgIGJvb2wgc2hvdWxkU3RvcFBy
b2Nlc3NpbmcgPSBmYWxzZTsKICAgICAgICAgc3dpdGNoT24obV9xdWV1ZS5maXJzdCgpLCBbdGhp
c10oY29uc3QgQ1N0cmluZyYgdXRmOCkgewogICAgICAgICAgICAgbV93cml0ZVN0cmluZyh1dGY4
KTsKLSAgICAgICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CisgICAgICAg
IH0sIFt0aGlzXShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKICAgICAgICAg
ICAgIGRhdGEtPmZvckVhY2hTZWdtZW50KG1fd3JpdGVSYXdEYXRhKTsKICAgICAgICAgfSwgW3Ro
aXMsICZzaG91bGRTdG9wUHJvY2Vzc2luZ10oVW5pcXVlUmVmPEJsb2JMb2FkZXI+JiBsb2FkZXIp
IHsKICAgICAgICAgICAgIGF1dG8gZXJyb3JDb2RlID0gbG9hZGVyLT5lcnJvckNvZGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgKaW5kZXggNTUxZjcwZjkxNjdi
MmJmY2IyNDRiYjJiMzcwMGJmYmFhZjU0Nzk2Yy4uZDIzY2ZlYmI0NTA4YmMzMDA5MTViYjk5NmQz
ZjE1MDYyY2UzNTA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3Jr
U2VuZFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVl
LmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9iOwog
Y2xhc3MgQmxvYkxvYWRlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIE5ldHdvcmtTZW5kUXVldWUgOiBw
dWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgpAQCAtNjMsNyArNjMs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc01lc3NhZ2VzKCk7CiAKLSAg
ICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PENTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+
LCBVbmlxdWVSZWY8QmxvYkxvYWRlcj4+OworICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnZhcmlh
bnQ8Q1N0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBVbmlxdWVSZWY8QmxvYkxv
YWRlcj4+OwogICAgIERlcXVlPE1lc3NhZ2U+IG1fcXVldWU7CiAKICAgICBXcml0ZVN0cmluZyBt
X3dyaXRlU3RyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3Rv
cnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50
LmNwcAppbmRleCAxMDE2ZGNmM2MxOTllNTRjYTgxNGMyNjQ1YTlhODU5OGE1YzFkMzVlLi43NTIz
MDE3YmE3Mjk0MDU2M2I3NWY0NjZhNjhlZDFjY2IzZGVlOGJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtMjc2LDkgKzI3Niw5IEBAIHZvaWQg
RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OnBhcnNlQW5kQXBwZW5kT25lTGluZShjb25zdCBT
dHJpbmcmIGlucHV0TGluZSkKICAgICBhcHBlbmRFbnRyeShmaWxlbmFtZSwgcHJvY2Vzc0ZpbGVz
aXplU3RyaW5nKHJlc3VsdC5maWxlU2l6ZSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50
cnkpLCBwcm9jZXNzRmlsZURhdGVTdHJpbmcocmVzdWx0Lm1vZGlmaWVkVGltZSksIHJlc3VsdC50
eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KTsKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0
dGluZ3MmIHNldHRpbmdzKQorc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVh
dGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAg
YXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUoc2V0dGluZ3MuZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOworICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2V0dGluZ3MuZnRw
RGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOwogICAgIGlmIChidWZmZXIpCiAgICAgICAgIExPRyhG
VFAsICJMb2FkZWQgRlRQRGlyZWN0b3J5VGVtcGxhdGUgb2YgbGVuZ3RoICV6dVxuIiwgYnVmZmVy
LT5zaXplKCkpOwogICAgIHJldHVybiBidWZmZXI7CkBAIC0yODYsNyArMjg2LDcgQEAgc3RhdGlj
IGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1
bWVudERhdGEoY29uc3QgU2UKICAgICAKIGJvb2wgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6
OmxvYWREb2N1bWVudFRlbXBsYXRlKCkKIHsKLSAgICBzdGF0aWMgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShk
b2N1bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIFNoYXJlZEJ1ZmZl
ciogdGVtcGxhdGVEb2N1bWVudERhdGEgPSBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShkb2N1
bWVudCgpLT5zZXR0aW5ncygpKS5sZWFrUmVmKCk7CiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2Yg
c3RvcmluZyB0aGUgZGF0YSwgaXQgd291bGQgYmUgbW9yZSBlZmZpY2llbnQgaWYgd2UgY291bGQg
cGFyc2UgdGhlIHRlbXBsYXRlIGRhdGEgaW50byB0aGUKICAgICAvLyB0ZW1wbGF0ZSBEb2N1bWVu
dCBvbmNlLCBzdG9yZSB0aGF0IGRvY3VtZW50LCB0aGVuICJjb3B5IiBpdCB3aGVuZXZlciB3ZSBn
ZXQgYW4gRlRQIGRpcmVjdG9yeSBsaXN0aW5nLgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCmluZGV4IDU2YTA2ZmNhZjI3M2QyNWRjNGM3NWRj
ZTU2OWFhYzhmMWFhNTk1MjcuLmQyYjg3NDFhMDQ0MzQyYzdmZmQ5ZThhNTMzY2M4YTEyMGUyOWJh
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAK
QEAgLTIyNyw3ICsyMjcsNyBAQCBzdGF0aWMgYm9vbCBtaW1lVHlwZUlzU3VpdGFibGVGb3JJbmxp
bmVJbWFnZUF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICByZXR1cm4gTUlN
RVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlKG1pbWVUeXBlKSB8fCBNSU1F
VHlwZVJlZ2lzdHJ5Ojppc1BERk1JTUVUeXBlKG1pbWVUeXBlKTsKIH0KIAotdm9pZCBIVE1MQXR0
YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEhUTUxBdHRh
Y2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAg
ICAgYXV0byogaG9zdEVsZW1lbnQgPSBzaGFkb3dIb3N0KCk7CiAgICAgaWYgKCFpczxIVE1MSW1h
Z2VFbGVtZW50Pihob3N0RWxlbWVudCkgfHwgIWJ1ZmZlci0+c2l6ZSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKaW5kZXggNTczZWMyZWFlMWNkYzA2MDlm
MjYxYzM4NDAwYmIwMmM0ODBmN2JkZC4uNjYxZGVjOTM3NmQ4YTlkNmQ0NzE3ZmQwYjRjZTdmODJm
ZjAzZjc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5o
CkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEZpbGU7CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50Owog
Y2xhc3MgUmVuZGVyQXR0YWNobWVudDsKIGNsYXNzIFNoYXJlYWJsZUJpdG1hcDsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEhUTUxB
dHRhY2htZW50RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChIVE1MQXR0YWNobWVudEVsZW1lbnQpOwpAQCAtNTcsNyArNTcsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllc0Zyb21FbGVtZW50
KGNvbnN0IEVsZW1lbnQmKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRl
QXR0cmlidXRlcyhzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIG5ld0ZpbGVTaXplLCBjb25zdCBT
dHJpbmcmIG5ld0NvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5ld0ZpbGVuYW1lKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB1cGRhdGVUaHVtYm5haWwoY29uc3QgUmVmUHRyPEltYWdlPiYgdGh1
bWJuYWlsKTsKIAogICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0Fu
Y2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGVjODM1MWMwOTc3NDhiMTQ5YTk0NDM5
YmFiNjk1NzhlZTkwMDFhMGUuLjU2NGMzMTUyOWU2OWMzNjVhZmRmOTc4ZTkyMWQxODU4NDdkNDI1
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMjkzOSw3
ICsyOTM5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjZG1DbGllbnRBdHRlbXB0VG9SZXN1
bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkKICAgICBhdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVj
ZXNzYXJ5KCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2RtQ2xpZW50VW5yZXF1ZXN0
ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2Rt
Q2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCiB7
CiAgICAgbWVkaWFQbGF5ZXJJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YVR5
cGUsIGluaXREYXRhLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggNmI0MDRhYTg3MzUyNzc3YjQ3MTgzNWYxMjBmZjE1
N2NlZWQ4NGE2OS4uOTEyOGJjZGJlZTU5ZDVmZDE3MjJlNzQ3MTk4ZDU2MjY0YzZlZjgwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTcyMSw3ICs3MjEsNyBAQCBw
cml2YXRlOgogCiAgICAgLy8gQ0RNQ2xpZW50CiAgICAgdm9pZCBjZG1DbGllbnRBdHRlbXB0VG9S
ZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkgZmluYWw7Ci0gICAgdm9pZCBjZG1DbGllbnRVbnJl
cXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFs
aXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJikgZmluYWw7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01F
RElBKSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1
bWVudC5jcHAKaW5kZXggNzdjZDRmMzgwZTI4MzIwZTU0NDRmOTM5Y2FhZDYwMDNhYWZlODFkYi4u
NDM3MGQ2ODE4NzJkOTVjMTBjMGY0ZTk1OWUxNDc0MzlhZDU3NDQwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBJbWFnZURvY3Vt
ZW50Ojp1cGRhdGVEdXJpbmdQYXJzaW5nKCkKICAgICBpZiAoIW1faW1hZ2VFbGVtZW50KQogICAg
ICAgICBjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpOwogCi0gICAgaWYgKFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCkpCisgICAgaWYgKFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBsb2FkZXIoKS0+bWFpblJlc291
cmNlRGF0YSgpKQogICAgICAgICBtX2ltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKS0+dXBkYXRl
QnVmZmVyKCpidWZmZXIpOwogCiAgICAgaW1hZ2VVcGRhdGVkKCk7CkBAIC0xNTEsNyArMTUxLDcg
QEAgdm9pZCBJbWFnZURvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcoKQogewogICAgIGlmICghcGFy
c2VyKCktPmlzU3RvcHBlZCgpICYmIG1faW1hZ2VFbGVtZW50KSB7CiAgICAgICAgIENhY2hlZElt
YWdlJiBjYWNoZWRJbWFnZSA9ICptX2ltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKTsKLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRh
KCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhID0gbG9hZGVy
KCktPm1haW5SZXNvdXJjZURhdGEoKTsKIAogICAgICAgICAvLyBJZiB0aGlzIGlzIGEgbXVsdGlw
YXJ0IGltYWdlLCBtYWtlIGEgY29weSBvZiB0aGUgY3VycmVudCBwYXJ0LCBzaW5jZSB0aGUgcmVz
b3VyY2UgZGF0YQogICAgICAgICAvLyB3aWxsIGJlIG92ZXJ3cml0dGVuIGJ5IHRoZSBuZXh0IHBh
cnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwCmluZGV4IGE3Y2E3MTYyZDc5MWVkN2ZiYThjYzkxYzIxYTJjZjNhZjZlNjlh
N2UuLjE4NzkzZmYwNjYzMzhmYjYwYTM0ZGVjOTA5YmMyZGRkMjhiZWFmYjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CkBAIC04NTAsNyArODUwLDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVy
Y2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW0KICAgICAgICAgbmV0
d29ya0FnZW50LT5pbnRlcmNlcHRSZXF1ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25zZUltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpp
bnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0Fn
ZW50cywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7
CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxl
ZE5ldHdvcmtBZ2VudCgpKQogICAgICAgICBuZXR3b3JrQWdlbnQtPmludGVyY2VwdFJlc3BvbnNl
KHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCA4ZTY1
YzRlYjEwMjMzNTIxZjQ4YzdmNGIxMjBhZDJjODkwOWEwN2JhLi5kMjk1NzgxMGQ4MzgyYzkzNTFk
NWE5M2YxNDRhZWQxNDkzYmNjNjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC05Myw3ICs5Myw3IEBAIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CiBjbGFzcyBTaGFkb3dSb290OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRpbWVyQmFzZTsKIGNsYXNzIFdlYktp
dE5hbWVkRmxvdzsKIGNsYXNzIFdlYlNvY2tldENoYW5uZWw7CkBAIC0yMzYsNyArMjM2LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJh
bWUmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRl
cmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAg
ICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiwgRnVuY3Rpb248
dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJik7Ci0gICAgc3RhdGljIHZvaWQgaW50ZXJj
ZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGlu
dGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
c291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiAKICAg
ICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmLCBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VU
b0NvbnNvbGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwpAQCAtNDQxLDcgKzQ0MSw3IEBAIHByaXZhdGU6CiAg
ICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZElu
dGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmLCBSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik+JiYpOwotICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNl
cHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYp
OwogCiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CiAK
QEAgLTEyODksNyArMTI4OSw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBGCiAgICAgICAgIGlu
dGVyY2VwdFJlcXVlc3RJbXBsKCphZ2VudHMsIGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7CiB9
CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9u
c2UoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5k
bGVyKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNw
b25zZShjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEFTU0VSVChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGZyYW1lLCByZXNwb25zZSkpOwogICAgIGlmIChhdXRv
KiBhZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzKGZyYW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5j
cHAKaW5kZXggNjFlNGJjM2JhMDE5ZWUyNWU1YzhiYzIyMWRmZjYwNzdlZGRiODYzZC4uZjA2NDAz
YTYyMzRiNDJiNmFkMmE4MGIwMTk0YTU5NmQ4OWY2ZTZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5j
cHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6
OmludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZUxvYWRlciYgbG8KICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QobG9hZGVyLCBXVEZNb3ZlKGhhbmRs
ZXIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2Vw
dFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+KT4mJiBoYW5kbGVyKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6
OmludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGZyYW1lLCByZXNwb25zZSwgaWRlbnRp
ZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKaW5kZXggZjc2MTE0
Y2U5OGY0MmE3ZmY5MDZhNDhkMDQyMGI5NjMwNWQzNjkxNC4uMDdiNDIxYjU5YzE1NTVlMWEyOTFl
MThlYmIyNjIyMTIyZjE2NThiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaApAQCAtMzYsMjAgKzM2LDIw
IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzaG91
bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVz
dChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+
JiYpOwotICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4pPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSos
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPik+JiYpOwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHNob3Vs
ZEludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwo
Y29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQg
aW50ZXJjZXB0UmVxdWVzdEludGVybmFsKFJlc291cmNlTG9hZGVyJiwgRnVuY3Rpb248dm9pZChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJik7Ci0gICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVz
cG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQg
aW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+
JiYpOwogfTsKIAogaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Ojpz
aG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQpAQCAtNzYsNyArNzYsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImIGxv
YQogICAgIGludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikp
OwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVy
Y2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVy
Pik+JiYgaGFuZGxlcikKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktp
dDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQoSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVz
cG9uc2UpKTsKICAgICBpbnRlcmNlcHRSZXNwb25zZUludGVybmFsKCpmcmFtZSwgcmVzcG9uc2Us
IGlkZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggYjk5NzZhZjJlNGRkNDA5YTg5
YzNhNDI0NDEzOWEzZTk5YjRlN2MwYi4uMzliMDExY2YwNmY3ZjM4NTMyNDNlMGE3NjNhM2IxZDQ1
NDkwNDE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6YWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIENhY2hlZFJlc28K
ICAgICByZXNvdXJjZURhdGEtPnNldENhY2hlZFJlc291cmNlKGNhY2hlZFJlc291cmNlKTsKIH0K
IAotdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjph
ZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGlu
Z05hbWUpCiB7CiAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSByZXNvdXJjZURhdGFG
b3JSZXF1ZXN0SWQocmVxdWVzdElkKTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggMDRiMzU1
MDczMzdjOGI4NjFiMzgzZDg4MTNkYzAzZjJhMzg5MTcyMC4uZGFhZTVmZTRhMzFlMzE1OTM2Mzc5
MDQyM2Y1ZmJkMzM3MGM1Y2QzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05l
dHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTQxLDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3Mg
VGV4dFJlc291cmNlRGVjb2RlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTmV0d29y
a1Jlc291cmNlc0RhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtODksOCAr
ODgsOCBAQCBwdWJsaWM6CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNv
ZGVyKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVyLmNvcHlSZWYoKTsgfQogICAgICAgICB2b2lk
IHNldERlY29kZXIoUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+JiYgZGVjb2RlcikgeyBtX2Rl
Y29kZXIgPSBXVEZNb3ZlKGRlY29kZXIpOyB9CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuY29weVJlZigpOyB9Ci0gICAgICAg
IHZvaWQgc2V0QnVmZmVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fYnVmZmVy
ID0gV1RGTW92ZShidWZmZXIpOyB9CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5jb3B5UmVmKCk7IH0KKyAgICAg
ICAgdm9pZCBzZXRCdWZmZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KSB7IG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOyB9CiAKICAgICAgICAgY29uc3Qgc3RkOjpv
cHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVy
biBtX2NlcnRpZmljYXRlSW5mbzsgfQogICAgICAgICB2b2lkIHNldENlcnRpZmljYXRlSW5mbyhj
b25zdCBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmljYXRlSW5mbykgeyBt
X2NlcnRpZmljYXRlSW5mbyA9IGNlcnRpZmljYXRlSW5mbzsgfQpAQCAtMTIxLDcgKzEyMCw3IEBA
IHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0
UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CiAgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIg
bV9kYXRhQnVmZmVyOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAg
ICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBz
dGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAg
IENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJlc291cmNlIHsgbnVsbHB0ciB9OwogICAgICAgICBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSBtX3R5cGUgeyBJbnNwZWN0b3JQYWdlQWdl
bnQ6Ok90aGVyUmVzb3VyY2UgfTsKQEAgLTE0NSw3ICsxNDQsNyBAQCBwdWJsaWM6CiAgICAgUmVz
b3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwogICAgIHZvaWQg
bWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2
b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBDYWNoZWRSZXNv
dXJjZSopOwotICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0SWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nTmFtZSk7CisgICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nTmFtZSk7CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRhKGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICBSZXNvdXJjZURhdGEgY29uc3QqIGRhdGFGb3JVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpOwogICAgIFZlY3RvcjxTdHJpbmc+IHJlbW92ZUNhY2hlZFJlc291
cmNlKENhY2hlZFJlc291cmNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggZTU4YmNjMmFhN2Y4
MTRkOTc3ZmY3ZDhmMjYyM2MzN2VjYmE3YzFmYy4uMjIzYTY3NjdiZTI3MWVlNGQyMmRlZDFkNmJl
NjBjYTcwNzgxN2M4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtMTE0MCw3ICsxMTQwLDcgQEAg
dm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2Fk
ZXImIGxvYWRlciwgRnVuY3Rpb248dm8KICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVxdWVz
dEludGVyY2VwdGVkKHJlcXVlc3RJZCwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QobG9h
ZGVyLnJlcXVlc3QoKSkpOwogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJj
ZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK3ZvaWQg
SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQobV9lbmFibGVk
KTsKICAgICBBU1NFUlQobV9pbnRlcmNlcHRpb25FbmFibGVkKTsKQEAgLTEyNDMsNyArMTI0Myw3
IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
aW50ZXJjZXB0V2l0aFJlc3BvbnNlKGNvbnN0CiAgICAgICAgIG92ZXJyaWRlUmVzcG9uc2Uuc2V0
SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgb3ZlcnJpZGVSZXNw
b25zZS5taW1lVHlwZSgpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvdmVy
cmlkZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG92ZXJyaWRlRGF0
YTsKICAgICBpZiAoYmFzZTY0RW5jb2RlZCkgewogICAgICAgICBhdXRvIGJ1ZmZlciA9IGJhc2U2
NERlY29kZShjb250ZW50KTsKICAgICAgICAgaWYgKCFidWZmZXIpCkBAIC0xMjcxLDcgKzEyNzEs
NyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmludGVyY2VwdFJlcXVlc3RXaXRoUmVzcG9ucwogICAgIGlmIChsb2FkZXItPnJlYWNoZWRUZXJt
aW5hbFN0YXRlKCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiVW5hYmxlIHRvIGZ1
bGZpbGwgcmVxdWVzdCwgaXQgaGFzIGFscmVhZHkgYmVlbiBwcm9jZXNzZWQiX3MpOwogCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gZGF0YTsKICAgICBpZiAoYmFzZTY0RW5jb2RlZCkgewogICAgICAgICBhdXRvIGJ1ZmZl
ciA9IGJhc2U2NERlY29kZShjb250ZW50KTsKICAgICAgICAgaWYgKCFidWZmZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuaAppbmRleCA4ZjZmYmNjMjkzYWViZjhiOWQ1Yzk0NWQyODI5YTE1MjdiNzRiYzdmLi42YmNk
ODdkZGNkOGIwNDQxMzA4ZDFkMDFlY2E2YjBlNmRhMTQxM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAg
LTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB3aWxsSW50ZXJjZXB0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKICAgICBib29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4m
Jik7CisgICAgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKICAg
ICB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKIAogICAgIHZvaWQgc2VhcmNoT3RoZXJSZXF1ZXN0
cyhjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiwgUmVmPEpTT046OkFycmF5T2Y8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKTsKQEAgLTE4NSw3ICsx
ODUsNyBAQCBwcml2YXRlOgogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQZW5kaW5nSW50
ZXJjZXB0UmVzcG9uc2UpOwogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiBvcmlnaW5hbFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgICAgIFBlbmRpbmdJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiBvcmlnaW5hbFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogICAgICAgICAgICAgOiBtX29yaWdpbmFsUmVzcG9uc2Uob3JpZ2luYWxSZXNw
b25zZSkKICAgICAgICAgICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSkKICAgICAgICAgeyB9CkBAIC0yMDIsNyArMjAyLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIHJlc3BvbmQobV9vcmlnaW5hbFJlc3BvbnNlLCBudWxscHRyKTsKICAgICAgICAg
fQogCi0gICAgICAgIHZvaWQgcmVzcG9uZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSkKKyAgICAgICAgdm9pZCByZXNwb25kKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gZGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCFtX3Jlc3BvbmRlZCk7CiAg
ICAgICAgICAgICBpZiAobV9yZXNwb25kZWQpCkBAIC0yMTUsNyArMjE1LDcgQEAgcHJpdmF0ZToK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9vcmlnaW5hbFJlc3Bv
bnNlOwotICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAgICAg
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPik+IG1fY29tcGxldGlvbkhhbmRsZXI7CiAgICAgICAgIGJv
b2wgbV9yZXNwb25kZWQgeyBmYWxzZSB9OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCBhM2M2
MGMzYjY5NmE4M2Q4MzFkODk3ZjgxNjdhMzJiZTIzNzM3MWJhLi5hNGZmZDEzNjFjZGRlNWFiN2Q5
NzNjZDAwZDE5YTkxMGFlOWVkMjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0xMDAsMTMgKzEwMCwxMyBA
QCBzdGF0aWMgYm9vbCBkZWNvZGVCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCB1bnNpZ25l
ZCBzaXplLCBjb25zdCBTdHJpbmcmIHRleAogCiBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6bWFp
blJlc291cmNlQ29udGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3Ry
aW5nKiByZXN1bHQpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUt
PmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250
ZW50KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJh
bWUtPmRvY3VtZW50KCktPmVuY29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9
CiAKLWJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJv
b2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpCitib29sIEluc3BlY3RvclBhZ2VB
Z2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0
RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKICAgICByZXR1cm4gZGF0YUNvbnRlbnQoYnVmZmVy
ID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IDAsIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJl
c3VsdCk7CiB9CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJl
c291cmNlQ29udGVudChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBGcmEKICAg
ICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAg
ICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdGcmFnbWVudElk
ZW50aWZpZXIodXJsLCBsb2FkZXItPnVybCgpKSkgewogICAgICAgICAqYmFzZTY0RW5jb2RlZCA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmgKaW5kZXggYjUxYWRkYjFiZDhmMmNjZTY5NTYwNzk5Y2QxZDk1MmQyZGU0
MjgzOC4uM2Q1ZTU2NmRiZTBjNWVjMTFkOWU4ZGY2N2ZjZjBhNzA5ODhhMmY4ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5o
CkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIEluc3BlY3RvckNsaWVudDsKIGNsYXNzIEluc3BlY3Rv
ck92ZXJsYXk7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVuZGVyT2JqZWN0OwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSW5zcGVjdG9y
UGFnZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3Bl
Y3Rvcjo6UGFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSW5zcGVjdG9yUGFnZUFnZW50KTsKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAg
ICAgICBPdGhlclJlc291cmNlLAogICAgIH07CiAKLSAgICBzdGF0aWMgYm9vbCBzaGFyZWRCdWZm
ZXJDb250ZW50KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7CisgICAgc3Rh
dGljIGJvb2wgc2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNv
ZGUsIFN0cmluZyogcmVzdWx0KTsKICAgICBzdGF0aWMgVmVjdG9yPENhY2hlZFJlc291cmNlKj4g
Y2FjaGVkUmVzb3VyY2VzRm9yRnJhbWUoRnJhbWUqKTsKICAgICBzdGF0aWMgdm9pZCByZXNvdXJj
ZUNvbnRlbnQoSW5zcGVjdG9yOjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBGcmFtZSosIGNvbnN0
IFVSTCYsIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKICAgICBzdGF0aWMg
U3RyaW5nIHNvdXJjZU1hcFVSTEZvclJlc291cmNlKENhY2hlZFJlc291cmNlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggOTc0ZjIyYTJkYTdhMDJjNjQ4OWMx
YjUwYTVhMjIwZmU0NGIxOTYzMC4uNmFlNTI2NTk3Y2QyODYzMWJlNzk1MGZjMzM1MzZmOGYzNDdk
N2FmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAtMjc2LDcg
KzI3Niw3IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBBU1NFUlQod2lsbEhhbmRsZVBy
b3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHJlcGxhY2VtZW50RGF0YSB7IG1fYmxvY2tpbmdDb250ZW50RmlsdGVyLT5yZXBsYWNlbWVudERh
dGEoKSB9OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERh
dGEgeyBtX2Jsb2NraW5nQ29udGVudEZpbHRlci0+cmVwbGFjZW1lbnREYXRhKCkgfTsKICAgICBS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgVVJMKCksICJ0ZXh0L2h0bWwiX3MsIHN0YXRpY19j
YXN0PGxvbmcgbG9uZz4ocmVwbGFjZW1lbnREYXRhLT5zaXplKCkpLCAiVVRGLTgiX3MgfTsKICAg
ICBTdWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0YSB7IFdURk1vdmUocmVwbGFjZW1lbnREYXRh
KSwgZXJyb3IuZmFpbGluZ1VSTCgpLCByZXNwb25zZSwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25I
aXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVuIH07CiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gbG9hZGlu
Z0Jsb2NrZWRQYWdlIHsgbV9pc0xvYWRpbmdCbG9ja2VkUGFnZSwgdHJ1ZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcApp
bmRleCBkMDk2MWFmYzdiN2U3M2U2MTdlNzgwNmE2N2M2ZmZkMDlmMTVjYTkzLi45NGMzNmVmNTA3
ZWYwMzdiNzA3YzkwZDE5YTdhMWE3NDQ1YjFmNzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTM5LDcgKzEz
OSw3IEBAIHZvaWQgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyOjpkb1ByZWZsaWdodChEb2N1
bWVudFRocmVhZGFibGVMb2FkZXImIGxvYWRlciwKICAgICBSZXNvdXJjZVJlcXVlc3QgcHJlZmxp
Z2h0UmVxdWVzdCA9IGNyZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KHJlcXVlc3Qs
IGxvYWRlci5zZWN1cml0eU9yaWdpbigpLCBsb2FkZXIucmVmZXJyZXIoKSk7CiAgICAgUmVzb3Vy
Y2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGE7CiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXIuZG9jdW1lbnQoKS5mcmFtZSgp
LT5sb2FkZXIoKS5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHByZWZsaWdodFJlcXVlc3QsIENs
aWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzLCBGZXRj
aE9wdGlvbnMgeyB9LCB7IH0sIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGZkZmQwZWFhZjNhNTAxOGQ5MDBiYTFh
NmQ3YTQ4YWU1NzMyZjM0YzguLjBhYjRlMTRmOWNlMzVhMWNjZjZkZDZiY2U4MzAyNDE2YzFlY2Rl
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMjA4LDcg
KzIwOCw3IEBAIERvY3VtZW50TG9hZGVyOjp+RG9jdW1lbnRMb2FkZXIoKQogI2VuZGlmCiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhKCkg
Y29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBEb2N1bWVudExvYWRlcjo6bWFp
blJlc291cmNlRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxp
ZCgpKQogICAgICAgICByZXR1cm4gbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCktPmNvcHkoKTsK
QEAgLTE2NDksNyArMTY0OSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyQXJjaGl2ZVJl
c291cmNlcygpCiAgICAgbV9zdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyLnN0b3AoKTsK
IH0KIAotQ29udGlndW91c1NoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hp
dmVEYXRhKCkgY29uc3QKK1NoYXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hp
dmVEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYXJzZWRBcmNoaXZlRGF0YS5nZXQoKTsK
IH0KQEAgLTE2NjgsNyArMTY2OCw3IEBAIEFyY2hpdmVSZXNvdXJjZSogRG9jdW1lbnRMb2FkZXI6
OmFyY2hpdmVSZXNvdXJjZUZvclVSTChjb25zdCBVUkwmIHVybCkgY29uc3QKIAogUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZSgpIGNvbnN0CiB7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsK
ICAgICBpZiAoIWRhdGEpCiAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwog
ICAgIGF1dG8mIHJlc3BvbnNlID0gdGhpcy0+cmVzcG9uc2UoKTsKQEAgLTIyNTIsNyArMjI1Miw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRl
bnQoKQogCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21t
aXR0ZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBt
YWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJl
c291cmNlRGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKICAgICBjb21taXRMb2FkKHJlc291cmNl
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZURhdGEtPnNpemUoKSk7CiB9
CiAKQEAgLTIyODksNyArMjI4OSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxv
YWRpbmcoKQogICAgIG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmdldExvYWREZWNpc2lvbkZv
ckljb25zKGljb25EZWNpc2lvbnMpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29s
IGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
YXV0byBpY29uID0gbV9pY29uc1BlbmRpbmdMb2FkRGVjaXNpb24udGFrZShsb2FkSWRlbnRpZmll
cik7CiAKQEAgLTIzMTAsNyArMjMxMCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExv
YWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50CiAgICAg
cmF3SWNvbkxvYWRlci0+c3RhcnRMb2FkaW5nKCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6
OmZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYgbG9hZGVyLCBTaGFyZWRCdWZmZXIqIGJ1
ZmZlcikKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRl
ciYgbG9hZGVyLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgLy8gSWYg
dGhlIERvY3VtZW50TG9hZGVyIGhhcyBkZXRhY2hlZCBmcm9tIGl0cyBmcmFtZSwgYWxsIGljb24g
bG9hZHMgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNhbmNlbGxlZC4KICAgICBBU1NFUlQobV9m
cmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGEwMGUxNGE3
M2IwZTk0NmEwYTM3NTdiOTMxN2NiMGY0MmQ0ZDlmMTIuLjRkNGQzMDg1Y2FlODdlOWU0MmFiMzNj
MjkzMTM0YTlhMGJhNjM0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
CkBAIC03NSw3ICs3NSw3IEBAIGNsYXNzIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb247CiBjbGFz
cyBDYWNoZWRSYXdSZXNvdXJjZTsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3Mg
Q29udGVudEZpbHRlcjsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CiBzdHJ1Y3QgQ3VzdG9tSGVhZGVyRmllbGRzOwogY2xhc3MgRm9ybVN0YXRlOwog
Y2xhc3MgRnJhbWU7CkBAIC04NCw3ICs4NCw3IEBAIGNsYXNzIEljb25Mb2FkZXI7CiBjbGFzcyBQ
YWdlOwogY2xhc3MgUHJldmlld0NvbnZlcnRlcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNX
Q2xpZW50Q29ubmVjdGlvbjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwogY2xhc3MgU3Vic3Rp
dHV0ZVJlc291cmNlOwpAQCAtMTcyLDcgKzE3Miw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVf
RVhQT1JUIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlcigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIFN1YnJlc291cmNlTG9hZGVyKiBtYWluUmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKLSAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1h
aW5SZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICAKICAgICBEb2N1bWVudFdyaXRlciYgd3JpdGVy
KCkgY29uc3QgeyByZXR1cm4gbV93cml0ZXI7IH0KIApAQCAtMjI5LDcgKzIyOSw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2
ZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQXJjaGl2ZVJlc291cmNlKFJlZjxBcmNo
aXZlUmVzb3VyY2U+JiYpOwogICAgIFJlZlB0cjxBcmNoaXZlPiBwb3BBcmNoaXZlRm9yU3ViZnJh
bWUoY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFVSTCYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzY2hlZHVsZUFyY2hpdmVMb2FkKFJlc291cmNl
TG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKQEAgLTM5Myw4ICszOTMs
OCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgc3RhcnRJY29uTG9hZGluZygpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lz
aW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFy
ZWRCdWZmZXIqKT4mJik7Ci0gICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXIm
LCBTaGFyZWRCdWZmZXIqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEdldExvYWREZWNp
c2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmKTsKKyAgICB2b2lk
IGZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
KTsKIAogICAgIGNvbnN0IFZlY3RvcjxMaW5rSWNvbj4mIGxpbmtJY29ucygpIGNvbnN0IHsgcmV0
dXJuIG1fbGlua0ljb25zOyB9CiAKQEAgLTYwMyw3ICs2MDMsNyBAQCBwcml2YXRlOgogICAgIHN0
ZDo6dW5pcXVlX3B0cjxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPiBtX2FyY2hpdmVSZXNvdXJj
ZUNvbGxlY3Rpb247CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAg
ICAgUmVmUHRyPEFyY2hpdmU+IG1fYXJjaGl2ZTsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZlRGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X3BhcnNlZEFyY2hpdmVEYXRhOwogI2VuZGlmCiAKICAgICBIYXNoU2V0PFN0cmluZz4gbV9yZXNv
dXJjZXNDbGllbnRLbm93c0Fib3V0OwpAQCAtNjIyLDcgKzYyMiw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX3dhaXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5IHsgZmFsc2UgfTsKIAogICAgIEhhc2hN
YXA8dWludDY0X3QsIExpbmtJY29uPiBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbjsKLSAgICBI
YXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTaGFyZWRCdWZmZXIqKT4+IG1faWNvbkxvYWRlcnM7CisgICAgSGFzaE1hcDxzdGQ6OnVuaXF1
ZV9wdHI8SWNvbkxvYWRlcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciopPj4gbV9pY29uTG9hZGVyczsKICAgICBWZWN0b3I8TGlua0ljb24+IG1fbGlua0lj
b25zOwogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBjNzA5NjQx
MGE3YWEwNTRlNTFkNzA0NDVkNjYzNTJmMjgxNDA2OGE5Li45YTRkNGIyMTJmZGZkMjgxODQzNzZk
NGI3MGM3ZGE0ZjNlYjdjODMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNTk1LDcgKzU5NSw3IEBAIHZvaWQgRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBTZWN1cml0eUNoCiAgICAgbG9hZFRpbWluZy5tYXJrU3RhcnRUaW1lKCk7CiAKICAgICAvLyBG
SVhNRTogVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMuc25pZmZDb250ZW50IGlzIG5vdCBzdXBwb3J0
ZWQgZm9yIHN5bmNocm9ub3VzIHJlcXVlc3RzLgotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgUmVzb3Vy
Y2VFcnJvciBlcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIGF1dG8g
aWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFJlc291cmNlTG9hZGVyPihzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcAppbmRleCAxMWY2NzAyZDFmNjhmZGViYWU0YWVhMzUyNjZlMDJmODQxN2RlMmJi
Li5kNjg4ZDgwYTliZDg4OGQyOWFiOTA2ZTY0NjcwNjAxN2NmYjY4YTRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMjc4LDcgKzI3OCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQog
ICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JikgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZCgpIGZpbmFsIHsgfQotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEo
Y29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3Rv
cjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CisgICAgdm9pZCBn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYs
IFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsg
fQogICAgIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYpIGZpbmFsIHsgfQogICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRo
U29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBlOTFjOGY2MGQzYTk4YTllYjhkYTNjZTZiNDRmYWQy
YmMzZWI1NTQ3Li42YzVlZTNhOWIzMWFlOGI4NGRiOTIwYjY2ZWJmMjE0ZjI2ZWM5YWQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTMxMDYsNyArMzEwNiw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYgcmVxdWVz
dCwgY29uc3QgU3RyaW5nJiByZWZlCiAgICAgfSk7CiB9CiAKLVJlc291cmNlTG9hZGVySWRlbnRp
ZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlh
bFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFw
JiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkK
K1Jlc291cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hy
b25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIENsaWVudENyZWRlbnRpYWxQ
b2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25z
LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVy
cm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiBkYXRhKQogewogICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgIFN0cmlu
ZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJh
bWUuZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdS
ZWZlcnJlcigpKTsKQEAgLTMxNTQsNyArMzE1NCw3IEBAIFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJl
CiAgICAgICAgIGlmICghZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5t
YXliZUxvYWRTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSkp
IHsKICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAgICAgICAgICAgICBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+bG9hZFJlc291cmNlU3luY2hyb25v
dXNseSgqdGhpcywgaWRlbnRpZmllciwgbmV3UmVxdWVzdCwgY2xpZW50Q3JlZGVudGlhbFBvbGlj
eSwgb3B0aW9ucywgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgZXJyb3IsIHJlc3BvbnNlLCBidWZm
ZXIpOwotICAgICAgICAgICAgZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgICAgICBkb2N1bWVudExvYWRlcigpLT5hcHBsaWNh
dGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShuZXdSZXF1ZXN0
LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnNoYXJlZCgpLmxvZ1N1YnJlc291cmNlTG9hZGluZygmbV9mcmFtZSwgbmV3UmVxdWVzdCwg
cmVzcG9uc2UsCiAgICAgICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0aW9uKG9wdGlv
bnMuZGVzdGluYXRpb24pID8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25J
c1NjcmlwdExpa2U6OlllcyA6IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9u
SXNTY3JpcHRMaWtlOjpObykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCA5
YzNmNzRjNDJkYjhlN2JhZTk1NDA1ZjU0MGYzZTI4NzE5ODJlOTE0Li43NWFlMjg0YzJjMzRmZGQ4
OWU4NTY0ZGE0MzlkYTc3MjVhZmJjOGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aApAQCAtNTksNyArNTksNyBAQCBjbGFzcyBDYWNoZWRGcmFtZUJhc2U7CiBjbGFzcyBDYWNoZWRQ
YWdlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDaHJvbWU7Ci1jbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NV3JhcHBlcldv
cmxkOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKQEAgLTEyNyw3ICsx
MjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwp
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkQXJjaGl2ZShSZWY8QXJjaGl2ZT4mJik7CiAj
ZW5kaWYKLSAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25v
dXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25z
dCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpOwor
ICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNo
T3B0aW9ucyYsIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQs
IEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9IHN0ZDo6bnVsbG9wdCwg
Y29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRvbSgpLCBjb25zdCBT
eXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oRnJhbWVM
b2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRyLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlj
a01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNGZkNjM3YTkwMTRhNWQ0MWEyMjZlZTQ1OTE3YjZiM2U5
YTc5MGViYi4uZWU5ZjNkMGM5ODRkNDU1Y2JiOTFiNDYwYzFiYzEyODk4ZDEyMzY1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTk4LDcgKzk4LDcgQEAg
Y2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiBj
bGFzcyBXaWRnZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJT
dHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKaW5kZXgg
YWVmNjY4YmQ2M2VkNWZjZDQ1ZTYxZTlkMWYxMDdjZmI2YWVmMjY0Yi4uMjlkMmUzZjQ2MTQwYWFh
NTExNjBlNmEyODU2MmYzNzBlMzcxZWIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0
cmF0ZWd5LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiAKIHN0cnVjdCBGZXRjaE9wdGlvbnM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNw
cAppbmRleCA2MzM3NTU5NjMyMDAxNDYzODI4OWUyODI2MDRjNTViMGFmNDQ1MzEzLi42MDQzYWM5
YmUyNjdlYTRmYmM3MWUxMTE4YjkwNzkxNTVlMzkxNTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKQEAgLTE0NiwxMiAr
MTQ2LDEyIEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9h
ZFR5cGUpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5
cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0
ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBl
KTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5
cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBSZWY8TmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCmluZGV4
IDQ4YmIyMTUzYzkzZjJkYzc1NGUyMDczMjI1MmMwNTA5Y2Y3MDRhNDEuLmI1MTc0ZWRjOTRiOTky
MzkwMjA1ZjBmYWQ0NTJlYTVhYzM4Nzg5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25z
dCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIAotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlw
ZSk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQs
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAKICAgICB2b2lkIG5vdGlmeURvbmUoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0
LmNwcAppbmRleCBjNjI3NzY4NThhNmRjNWFmZmQzNmRjOWU3ODVjOGJkMjQ3MmJiNzRkLi5kOTRi
NzAwMDc0MWNkOTEyYjkxNzNlMmIzNzQ2ZDRkYThiMzY4YTU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcApAQCAtMTU1
LDcgKzE1NSw3IEBAIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGln
ZXN0Rm9yQnl0ZXMoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnCiAgICAgcmV0dXJuIHsgYWxnb3Jp
dGhtLCBjcnlwdG9EaWdlc3QtPmNvbXB1dGVIYXNoKCkgfTsKIH0KIAotUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZmZXIoUmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtLCBjb25zdCBTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcikKK1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGln
ZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGht
IGFsZ29yaXRobSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogewogICAg
IGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSh0b0NyeXB0b0Rp
Z2VzdEFsZ29yaXRobShhbGdvcml0aG0pKTsKICAgICBpZiAoYnVmZmVyKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmgKaW5kZXgg
YWVhM2RjNTdjODc4MzEzMDEzYTViMTZjOTM5Yjc3NGVkNDg0MzI0Yy4uODNiODYxM2NmZGEyMzI5
YWUzMGJiZjZhYmMxNGI5OWQ0NDIzN2IwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaApAQCAtMzQsNyArMzQsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBSZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3QgewogICAgIGVudW0gY2xhc3MgQWxnb3JpdGhtIHsKQEAgLTc1LDcg
Kzc1LDcgQEAgc3RkOjpvcHRpb25hbDxFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0
PiBwYXJzZUVuY29kZWRDcnlwdG9ncmFwaGljRGlnZXMKIAogc3RkOjpvcHRpb25hbDxSZXNvdXJj
ZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IGRlY29kZUVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3QoY29uc3QgRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCYpOwogCi1SZXNv
dXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZl
cihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29uc3QgU2hhcmVkQnVm
ZmVyKik7CitSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZv
clNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0
IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRlcyhSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6
OkFsZ29yaXRobSwgY29uc3Qgdm9pZCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBiODQ5MWFiMzBlNDhjNzMx
NmI4ODgxYmJkMzljZjA0YTFjNGY2YjA5Li42ZGViYjI1ODhhM2U4MmIyMWM2MWQ3ZThmMzZlNGY0
YmJiYTI1ZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTE4OCw3ICsxODgsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjppbml0KFJlc291cmNlUmVxdWVz
dCYmIGNsaWVudFJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaQogICAgIH0pOwogfQogCi12
b2lkIFJlc291cmNlTG9hZGVyOjpkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQg
UmVzb3VyY2VMb2FkZXI6OmRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
IHsKICAgICBkaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpXSgpIG11dGFibGUgewog
ICAgICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKQEAgLTMyOCw3ICszMjgsNyBAQCB2
b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQogICAg
ICAgICBtX2hhbmRsZS0+Y2FuY2VsKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFNoYXJlZEJ1
ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNv
dXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQogewogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGlj
eSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJldHVy
bjsKQEAgLTM0Miw3ICszNDIsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBTaGFyZQogICAgICAgICBt
X3Jlc291cmNlRGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKIH0KIAotY29uc3QgU2hhcmVkQnVm
ZmVyKiBSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKK2NvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAogewog
ICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKS5nZXQoKTsKIH0KQEAgLTU1MCwxNCArNTUw
LDE0IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZl
cihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5
cGUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVu
Y29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAg
IGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZmZXIpLCBlbmNv
ZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUp
CiB7Ci0gICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgZ2V0IGRhdGErbGVuZ3RoICpPUiog
YSBTaGFyZWRCdWZmZXIuCisgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgZ2V0IGRhdGEr
bGVuZ3RoICpPUiogYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgogICAgIEFTU0VSVCghYnVmZmVy
IHx8ICghZGF0YSAmJiAhbGVuZ3RoKSk7CiAKICAgICAvLyBQcm90ZWN0IHRoaXMgaW4gdGhpcyBk
ZWxlZ2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8KQEAg
LTczNCw3ICs3MzQsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbgogICAgIGRpZFJlY2VpdmVE
YXRhKGRhdGEsIGxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwog
fQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxl
KiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3Zv
aWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkK
IHsKICAgICBkaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkQnl0ZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaAppbmRleCAzN2Q2NjdkODM3NmQwMGRhNzg5NDYyZGNjZTFhZGIzMzY4ODlmZDBkLi43MGVh
MjIwZGMxN2M3Mzc2ZWQ2NjBmYTdhNjFhODRlMzFjMzM0Y2JiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgaW5pdChSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CiAKLSAgICB2b2lkIGRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgZGVsaXZlclJl
c3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2aXJ0dWFs
IHZvaWQgc3RhcnRMb2FkaW5nKCkKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAKLSAgICBjb25zdCBTaGFy
ZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0OworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZURh
dGEoKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJyZXNvdXJjZUxvYWRlcigpIGNvbnN0
OwpAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERh
dGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFs
Qnl0ZXNUb0JlU2VudCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNv
bXBsZXRpb25IYW5kbGVyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3Qg
dWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCkBA
IC0xNjcsNyArMTY3LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCB3YXNDYW5jZWxsZWQoKSBj
b25zdCB7IHJldHVybiBtX2NhbmNlbGxhdGlvblN0YXR1cyA+PSBDYW5jZWxsZWQ7IH0KIAotICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBh
eWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCosIHVuc2lnbmVkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIAogICAgIHZvaWQgc2V0
UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3kpIHsgbV9vcHRpb25z
LnJlZmVycmVyUG9saWN5ID0gcmVmZXJyZXJQb2xpY3k7IH0KICAgICBSZWZlcnJlclBvbGljeSBy
ZWZlcnJlclBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5yZWZlcnJlclBvbGljeTsg
fQpAQCAtMTkyLDcgKzE5Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDYW5j
ZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2Vs
KGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAKLSAgICB2b2lkIGFkZERhdGFPckJ1ZmZlcihj
b25zdCB1aW50OF90KiwgdW5zaWduZWQsIFNoYXJlZEJ1ZmZlciosIERhdGFQYXlsb2FkVHlwZSk7
CisgICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiwgRGF0YVBheWxvYWRUeXBlKTsKICAgICB2b2lkIGxvYWREYXRh
VVJMKCk7CiAgICAgdm9pZCBmaW5pc2hOZXR3b3JrTG9hZCgpOwogCkBAIC0yMDMsNyArMjAzLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFu
ZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBS
ZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXNwb25zZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3Vy
Y2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdhc0Jsb2NrZWQo
UmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IDcxOTY4MmM2NDY0ODIwMzQwMTdmNjhlNWZhNjkzODhiZWRi
MmVlYWEuLjM3ZDBiYjgyMWFiZDg2YTliNTYwNmUxMjdlZmM5NDEyYTUxYmIxYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNTMwLDcgKzUzMCw3
IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihk
YXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUp
OwogfQogCi12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewog
I2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChhdXRvIHByZXZpZXdMb2FkZXIgPSBtX3ByZXZp
ZXdMb2FkZXIuZ2V0KCkpIHsKQEAgLTU0Miw3ICs1NDIsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxv
bmcgZQogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShidWZm
ZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBTdWJy
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgbGVuZ3RoLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVu
Y29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBT
dWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKIHsKICAgICBBU1NFUlQobV9yZXNvdXJjZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmgKaW5kZXggMzcyM2I2YjlhYjlmZGRhYWE1NTc0YmZiMGU2ZjM4
Y2VkN2FlZmI3NS4uODMyYzlmMGU3M2QzODQ2NGE3OTVmNDAzODYwZjc5YzM0ZTczYmM3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgKQEAgLTc0LDcgKzc0LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRl
c1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxD
YW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTIsNyBAQCBw
cml2YXRlOgogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZXNwb25zZUNyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgRXhwZWN0ZWQ8
dm9pZCwgU3RyaW5nPiBjaGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcHJldmlvdXNSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KTsKIAotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSk7CiAKICAgICB2b2lkIG5vdGlmeURvbmUoTG9hZENvbXBsZXRpb25UeXBlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaAppbmRleCBmNjYyOTJlMzFjYmVi
NDI2NDMwYTgzMmFkZWY0Mjk5MWNiNTc0MzZlLi5hOGE0OWI0N2Y5MjczNDI3NGJhNGNlYWJjMTcw
N2ZlZmE3YjY2NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0
ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaApAQCAt
NDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIFN1YnN0aXR1dGVEYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgY29udGVudCwg
Y29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkpCisg
ICAgICAgIFN1YnN0aXR1dGVEYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNv
bnRlbnQsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0
b3J5KQogICAgICAgICAgICAgOiBtX2NvbnRlbnQoV1RGTW92ZShjb250ZW50KSkKICAgICAgICAg
ICAgICwgbV9mYWlsaW5nVVJMKGZhaWxpbmdVUkwpCiAgICAgICAgICAgICAsIG1fcmVzcG9uc2Uo
cmVzcG9uc2UpCkBAIC01NCwxNCArNTQsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQgIT0gbnVsbHB0cjsgfQog
ICAgICAgICBib29sIHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX3Nob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgPT0gU2Vzc2lvbkhpc3RvcnlWaXNpYmls
aXR5OjpWaXNpYmxlOyB9CiAKLSAgICAgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBjb250ZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZW50LmdldCgpOyB9CisgICAgICAgIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQuZ2V0KCk7
IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
cG9uc2UubWltZVR5cGUoKTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZygp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOyB9CiAgICAgICAg
IGNvbnN0IFVSTCYgZmFpbGluZ1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFpbGluZ1VSTDsgfQog
ICAgICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzcG9uc2U7IH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9jb250ZW50OworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gbV9jb250ZW50OwogICAgICAgICBVUkwgbV9mYWlsaW5nVVJMOwogICAgICAgICBSZXNv
dXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgICAgIFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0
eSBtX3Nob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgeyBTZXNzaW9uSGlzdG9yeVZpc2liaWxp
dHk6OkhpZGRlbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1
dGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5o
CmluZGV4IDM0NGNhOTgyODU3NTJlOGYxMDE3MGYyMzIwNDllMGNhMmFkNGZjODYuLmNmMmRlMGM2
MmQ5NWYzMzI1YjQyYjQ2ZTI0MDM3NzQ0MTA3NDJhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKQEAgLTM3LDE0ICszNywxNCBAQCBwdWJsaWM6CiAKICAg
ICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9Ci0g
ICAgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9j
YXN0PFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9KTsgfQorICAgIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nh
c3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9KTsgfQogICAg
IHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgbV9kYXRhLmFw
cGVuZChkYXRhLCBsZW5ndGgpOyB9CiAgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmVtcHR5KCk7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsg
bG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7
IH0KIAogcHJvdGVjdGVkOgotICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291
cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQorICAgIFN1
YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKICAgICAgICAgOiBtX3VybChXVEZN
b3ZlKHVybCkpCiAgICAgICAgICwgbV9yZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSkKICAgICAg
ICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDcyMGE5MjcxY2Qz
MjY1ZWY0Y2UyMzI2MWEyNmRiMGQ4MjhjNjMzNDYuLjUxOTc4ZjQxMjM4NzRkYzU2NjBlZmY0NzA2
NTk3MDdkNGU1ZDg1YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMjUzLDE0ICsyNTMsMTQgQEAgVVJM
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkK
ICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXJGcm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkK
K3N0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7CiAgICAgaWYgKHJlc291cmNlLnBh
dGgoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRp
Z3VvdXMoKTsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CiB9CiAKLWJvb2wgQXBw
bGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRp
b25DYWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZSogcmVzb3VyY2U7CiAgICAgaWYgKCFzaG91bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGljYXRpb25D
YWNoZShyZXF1ZXN0LCByZXNvdXJjZSkpCkBAIC0yNzcsNyArMjc3LDcgQEAgYm9vbCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFJlc28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIC8vIElmIG5v
cm1hbCBsb2FkaW5nIHJlc3VsdHMgaW4gYSByZWRpcmVjdCB0byBhIHJlc291cmNlIHdpdGggYW5v
dGhlciBvcmlnaW4gKGluZGljYXRpdmUgb2YgYSBjYXB0aXZlIHBvcnRhbCksIG9yIGEgNHh4IG9y
IDV4eCBzdGF0dXMgY29kZSBvciBlcXVpdmFsZW50LAogICAgIC8vIG9yIGlmIHRoZXJlIHdlcmUg
bmV0d29yayBlcnJvcnMgKGJ1dCBub3QgaWYgdGhlIHVzZXIgY2FuY2VsZWQgdGhlIGRvd25sb2Fk
KSwgdGhlbiBpbnN0ZWFkIGdldCwgZnJvbSB0aGUgY2FjaGUsIHRoZSByZXNvdXJjZSBvZiB0aGUg
ZmFsbGJhY2sgZW50cnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggZGM4NThmZGQ2ZDU0NTNlYjQzNTkyOGQzZWQ3
NTc1NzA4MzU5NDVlMC4uYjk2MzU2ZTc4NTYxMzg5NTZhZTRjMDU5ODMxNzBjZGY3MjM2NzJhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNs
YXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZTsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOwotY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7
CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwpAQCAtMTA0LDggKzEwNCw4IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVz
cG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNlTG9hZGVy
KiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgYm9vbCBtYXliZUxvYWRTeW5jaHJvbm91
c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7Ci0gICAgdm9pZCBtYXliZUxvYWRGYWxs
YmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYs
IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAg
ICBib29sIG1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworICAgIHZv
aWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
KTsKIAogICAgIGJvb2wgY2FuQ2FjaGVJbkJhY2tGb3J3YXJkQ2FjaGUoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlLmNwcAppbmRleCA2NzEwOTU3YzNhYjc0YTc1OWZjMjc1MWZkN2EwNmIzMTFlNTE4Y2U1
Li4yYmIzZmU3NWI5OTc3ZTgzMzIyYWUyNTgwZjcyMTJlZTViZjIxNjEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlLmNwcApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
ZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3Jl
YXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5z
aWduZWQgdHlwZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
cGF0aCkKK1JlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCF1cmwuaGFzRnJhZ21lbnRJ
ZGVudGlmaWVyKCkpOwogICAgIGlmICghYnVmZmVyKQpAQCAtNDAsNyArNDAsNyBAQCBSZWY8QXBw
bGljYXRpb25DYWNoZVJlc291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShj
b25zdCBVUkwmIHVybCwgYwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZShVUkwgeyB1cmwgfSwgV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSwgdHlwZSwg
YnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIHBhdGgpKTsKIH0KIAotQXBwbGljYXRpb25DYWNoZVJl
c291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBwYXRoKQorQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIHVu
c2lnbmVkIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0
cmluZyYgcGF0aCkKICAgICA6IFN1YnN0aXR1dGVSZXNvdXJjZShXVEZNb3ZlKHVybCksIFdURk1v
dmUocmVzcG9uc2UpLCBXVEZNb3ZlKGRhdGEpKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBt
X3N0b3JhZ2VJRCgwKQpAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6
OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJgog
CiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxvYWRlciYg
bG9hZGVyKQogewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCks
IG1fcGF0aC5pc0VtcHR5KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBsb2Fk
ZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8g
ZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50
c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFk
ZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgKaW5kZXggODhjOTRkZTFhNzc0
MTA0NjljOTMxYTQyYTQ3OWIxZTY3NzdhNzAyZS4uYzI4OGU3MDM2YzY3NjJhZDQ4NzZiYTg4MTQ2
OWE3NWQyMjM3ZTFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJs
aWM6CiAgICAgICAgIEZhbGxiYWNrID0gMSA8PCA0CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8
QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUoY29uc3QgVVJMJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJpbmcoKSk7CisgICAg
c3RhdGljIFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGNyZWF0ZShjb25zdCBVUkwmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBh
dGggPSBTdHJpbmcoKSk7CiAKICAgICB1bnNpZ25lZCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9CiAgICAgdm9pZCBhZGRUeXBlKHVuc2lnbmVkIHR5cGUpOwpAQCAtNTgsNyArNTgsNyBA
QCBwdWJsaWM6CiAjZW5kaWYKICAgICAKIHByaXZhdGU6Ci0gICAgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlKFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlKFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHBhdGgpOwogCiAgICAgdm9pZCBk
ZWxpdmVyKFJlc291cmNlTG9hZGVyJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmlu
ZGV4IGM3NzBkNzY0MTM1MDY1MmY1Zjc0YTBkY2U1MGNlOGQzM2QxZmM1ZTQuLjhjZjA1Y2NlMTg4
MDEyOGRlNTliZTcwYTk5ODM2ZjVhNzQ1YjZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAt
MTExMiw3ICsxMTEyLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKQogICAgICAgICBpbnQgaHR0
cFN0YXR1c0NvZGUgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uSW50KDEpOwogCiAgICAgICAgIHVu
c2lnbmVkIHR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2FjaGVTdGF0ZW1lbnQtPmNvbHVt
bkludDY0KDIpKTsKLSAgICAgICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKKyAgICAgICAgYXV0byBkYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOwog
ICAgICAgICAKICAgICAgICAgU3RyaW5nIHBhdGggPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uVGV4
dCg3KTsKICAgICAgICAgbG9uZyBsb25nIHNpemUgPSAwOwpAQCAtMTI3Miw3ICsxMjcyLDcgQEAg
Ym9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZp
bGUoQXBwbGljYXRpb25DYWNoZVJlc28KICAgICByZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZSh0eXBlLCAiYXVkaW8vIikgfHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZSh0eXBlLCAidmlkZW8vIik7CiB9CiAgICAgCi1ib29sIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShTaGFyZWRCdWZmZXIm
IGRhdGEsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgZmlsZUV4dGVuc2lvbikKK2Jvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0
YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZUV4
dGVuc2lvbikKIHsKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCmlu
ZGV4IDlhOTUzMDA4NzY2YTg4ODU1NjFiMzQ4ODg5YjhjZWRhMmIyZWIzMzguLjQxMDJhMTgwOGI0
NTU1N2I2NDVlMzZlN2U2ODFmYzRjNmQyMDdjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCkBAIC0zOSw3
ICszOSw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOwogY2xhc3MgU2VjdXJp
dHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0b3JhZ2VJREpvdXJuYWw7CiAKIGNsYXNz
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8QXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U+IHsKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZW5z
dXJlT3JpZ2luUmVjb3JkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKik7CiAgICAgc3RhdGljIGJvb2wg
c2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKik7
CiAgICAgdm9pZCBkZWxldGVUYWJsZXMoKTsKLSAgICBib29sIHdyaXRlRGF0YVRvVW5pcXVlRmls
ZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJp
bmcmIG91dEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pOworICAgIGJvb2wg
d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIGZpbGVFeHRlbnNpb24pOwogCiAgICAgdm9pZCBsb2FkTWFuaWZlc3RIb3N0SGFzaGVzKCk7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9y
eS5jcHAKaW5kZXggNmRlODBjMTBhYzdkMjVjZjM0NjlmNmRlZjBmYWY3MjQxZjU5NjQyOC4uNGVm
OWNkNjZiZDA4OGI3NGMwNDZjMDY5MGQxZTlkM2U1ZTMzNjBmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcApAQCAtNDYsMTIgKzQ2LDEy
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBSZWZQdHI8QXJjaGl2ZT4gUmF3
RGF0YUNyZWF0aW9uRnVuY3Rpb24oY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJik7Cit0eXBlZGVm
IFJlZlB0cjxBcmNoaXZlPiBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbihjb25zdCBVUkwmLCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJik7CiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSYXdEYXRhQ3Jl
YXRpb25GdW5jdGlvbiosIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gQXJjaGl2ZU1JTUVUeXBl
c01hcDsKIAogLy8gVGhlIGNyZWF0ZSBmdW5jdGlvbnMgaW4gdGhlIGFyY2hpdmUgY2xhc3NlcyBy
ZXR1cm4gUmVmUHRyIHRvIGNvbmNyZXRlIHN1YmNsYXNzZXMKIC8vIG9mIEFyY2hpdmUuIFRoaXMg
YWRhcHRvciBtYWtlcyB0aGUgZnVuY3Rpb25zIGhhdmUgYSB1bmlmb3JtIHJldHVybiB0eXBlLgot
dGVtcGxhdGU8dHlwZW5hbWUgQXJjaGl2ZUNsYXNzPiBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGFy
Y2hpdmVGYWN0b3J5Q3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K3RlbXBsYXRlPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBh
cmNoaXZlRmFjdG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIHJldHVybiBBcmNoaXZlQ2xhc3M6OmNyZWF0ZSh1cmwsIGJ1ZmZl
cik7CiB9CkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgQXJjaGl2ZUZhY3Rvcnk6OmlzQXJjaGl2ZU1J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuICFtaW1lVHlwZS5pc0Vt
cHR5KCkgJiYgYXJjaGl2ZU1JTUVUeXBlcygpLmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0KIAotUmVm
UHRyPEFyY2hpdmU+IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK1JlZlB0cjxBcmNoaXZlPiBB
cmNoaXZlRmFjdG9yeTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIGlmICghZGF0YSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
QXJjaGl2ZUZhY3RvcnkuaAppbmRleCAyMWQyMzY1Y2Y4ZDlkOTAxZWZlN2FhZDU1MmJmM2RhNDA2
OWZlNDBkLi41NTY0NTE1YzllMGQ5ZDAzM2I3OTBjNzQ3Mjg1YTI1ODUzYWJlMDJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKQEAgLTM0LDEy
ICszNCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEFyY2hpdmVGYWN0b3J5IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc0FyY2hpdmVNSU1FVHlwZShjb25zdCBTdHJpbmcm
KTsKLSAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIHN0YXRpYyBSZWZQdHI8
QXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyS25vd25B
cmNoaXZlTUlNRVR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
Jik7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNo
aXZlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJl
c291cmNlLmNwcAppbmRleCBmYzIwZGEzZGEwMzJjYmVmNzRmMmU5Yzg0MjhhY2I0ZWUzN2JlZjIz
Li4wNzM4Mzk0YTgyODcxNGFhMGI5MGVlNzUwNzlkNDg2ZjViMGU4Njk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKQEAgLTMzLDcg
KzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgQXJjaGl2ZVJlc291cmNl
OjpBcmNoaXZlUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNv
bnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
K2lubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICA6IFN1YnN0aXR1dGVSZXNvdXJj
ZShVUkwgeyB1cmwgfSwgUmVzb3VyY2VSZXNwb25zZSB7IHJlc3BvbnNlIH0sIFdURk1vdmUoZGF0
YSkpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV90ZXh0RW5jb2RpbmcodGV4
dEVuY29kaW5nKQpAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNo
aXZlUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybAogewog
fQogCi1SZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0
IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTU0LDcgKzU0LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJj
aGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb24KICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcmNoaXZlUmVzb3VyY2UoZGF0YS5yZWxlYXNlTm9uTnVs
bCgpLCB1cmwsIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwgcmVzcG9uc2UpKTsK
IH0KIAotUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCitSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3Vy
Y2U6OmNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBV
UkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgcmV0dXJu
IGNyZWF0ZShXVEZNb3ZlKGRhdGEpLCB1cmwsIHJlc3BvbnNlLm1pbWVUeXBlKCksIHJlc3BvbnNl
LnRleHRFbmNvZGluZ05hbWUoKSwgU3RyaW5nKCksIHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKaW5kZXggMjA5ZTk3MTdh
ZWIwOTM2MGRiMzkyN2U2ZWZhMWU1YmYxYzJjOTdjYS4uMDU0OGVmNzIxZWZkMjdjMDBjZTkzZDEy
MjcwZWNlYzQ2YzAyYWY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvQXJjaGl2ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
QXJjaGl2ZVJlc291cmNlLmgKQEAgLTM0LDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBBcmNoaXZlUmVzb3VyY2UgOiBwdWJsaWMgU3Vic3RpdHV0ZVJlc291cmNlIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsCisgICAgc3RhdGljIFJlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsCiAgICAgICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwKICAg
ICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgPSBSZXNvdXJjZVJlc3BvbnNlKCkpOwogCkBA
IC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZElnbm9yZVdoZW5VbmFyY2hp
dmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkSWdub3JlV2hlblVuYXJjaGl2aW5nOyB9CiAK
IHByaXZhdGU6Ci0gICAgQXJjaGl2ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5n
LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAg
IEFyY2hpdmVSZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNv
bnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICBT
dHJpbmcgbV9taW1lVHlwZTsKICAgICBTdHJpbmcgbV90ZXh0RW5jb2Rpbmc7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmlu
ZGV4IGY1ZWM0ZGQ2N2Y3ZGY4ZDlkYTIwOWI0MGUyM2MwNDM5YjZlNjhiMDMuLjcxMTUwY2JkZDg5
NjllNmFmMDI4Njg0YjZiZjZjYmMwYTUwYjJmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC0yNDgsMTIgKzI0
OCwxMiBAQCBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFJl
ZjxBcmNoaXZlUmVzb3VyY2U+JiYgbWFpblJlc291cgogICAgIHJldHVybiBhcmNoaXZlOwogfQog
Ci1SZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICByZXR1cm4gY3Jl
YXRlKFVSTCgpLCBkYXRhKTsKIH0KIAotUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImIGRhdGEpCitSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5
V2ViQXJjaGl2ZSAtIENyZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCmluZGV4IGQwOWVj
OWY3NWFiYTEzNmE4NjMzOWViNGQ4NmFiZDgyNzdjNGZmMDQuLjVhMDdiMTBiNGJlNmY4NjIwMTFh
NzgyYTdkZWQyMzY3NTkyNDM2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKQEAgLTQxLDggKzQxLDggQEAgc3RydWN0IFNp
bXBsZVJhbmdlOwogY2xhc3MgTGVnYWN5V2ViQXJjaGl2ZSBmaW5hbCA6IHB1YmxpYyBBcmNoaXZl
IHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPExlZ2FjeVdlYkFyY2hp
dmU+IGNyZWF0ZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2Vi
QXJjaGl2ZT4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZl
ciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lXZWJB
cmNoaXZlPiBjcmVhdGUoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiBtYWluUmVzb3VyY2UsIFZlY3Rv
cjxSZWY8QXJjaGl2ZVJlc291cmNlPj4mJiBzdWJyZXNvdXJjZXMsIFZlY3RvcjxSZWY8TGVnYWN5
V2ViQXJjaGl2ZT4+JiYgc3ViZnJhbWVBcmNoaXZlcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoTm9kZSYsIEZ1bmN0aW9uPGJvb2wo
RnJhbWUmKT4mJiBmcmFtZUZpbHRlciA9IHsgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoRnJhbWUmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmluZGV4IDk5
M2MyYjhlODMwZGMzZDc1YzVhZDMxOWJiYWZlOWRmNDVjNTAxMGUuLmQwMTM5Zjg3YTA2Zjk2OTc4
Yjc0NzdlOWY0OTk5YzM0ZWE5Zjg2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIFJl
ZjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNSFRNTEFyY2hpdmUpOwogfQogCi1SZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFy
Y2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVyJiBkYXRhKQorUmVmUHRy
PE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gRm9yIHNlY3VyaXR5IHJlYXNvbnMg
d2Ugb25seSBsb2FkIE1IVE1MIHBhZ2VzIGZyb20gbG9jYWwgVVJMcy4KICAgICBpZiAoIUxlZ2Fj
eVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwodXJsLnByb3RvY29s
KCkudG9TdHJpbmcoKSkpCkBAIC0xMzAsNyArMTMwLDcgQEAgUmVmUHRyPE1IVE1MQXJjaGl2ZT4g
TUhUTUxBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciYgZGF0YSkK
ICAgICByZXR1cm4gbWFpbkFyY2hpdmU7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJj
aGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKK1JlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCiB7CiAg
ICAgVmVjdG9yPFBhZ2VTZXJpYWxpemVyOjpSZXNvdXJjZT4gcmVzb3VyY2VzOwogICAgIFBhZ2VT
ZXJpYWxpemVyIHBhZ2VTZXJpYWxpemVyKHJlc291cmNlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oCmluZGV4IDNkMmRiN2M5NjAw
MmViZTY4NGIyYmVmOGYxZWE5ZTJlOTc5NGE1ODkuLjJkZmU4N2U4MmU3YTRkY2UwZjM0MWMzNjE5
NDNjOTkwMjA1YzhkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MQXJjaGl2ZS5oCkBAIC0zOCwxNCArMzgsMTQgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBNSFRNTFBhcnNlcjsKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNSFRNTEFyY2hpdmUg
ZmluYWwgOiBwdWJsaWMgQXJjaGl2ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNSFRNTEFy
Y2hpdmU+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBSZWZQdHI8TUhUTUxBcmNoaXZlPiBjcmVhdGUo
Y29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxNSFRNTEFyY2hp
dmU+IGNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKLSAgICBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZ2VuZXJhdGVNSFRNTERhdGEoUGFnZSopOworICAgIHN0
YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZ2VuZXJhdGVNSFRNTERhdGEoUGFnZSop
OwogCiAgICAgdmlydHVhbCB+TUhUTUxBcmNoaXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCA2NjVlNjljYTc3
MTRlNDQ5YWZlNGNhNjhhNzI0MTUyMzBkMTA5YjE0Li5lNTE4NmVmYjBiNGZhNzBjYjYwOTMxZjQ4
NGU1MDBjYzEwZTAwYmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyBib29sIHNr
aXBMaW5lc1VudGlsQm91bmRhcnlGb3VuZChTaGFyZWRCdWZmZXJDaHVua1JlYWRlciYgbGluZVJl
YWRlciwgY29uCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1NSFRNTFBhcnNlcjo6TUhUTUxQYXJz
ZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQorTUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2VyKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgOiBtX2xpbmVSZWFkZXIoZGF0YSwgIlxyXG4iKQog
ewogfQpAQCAtMjE1LDcgKzIxNSw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFy
c2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgICAg
IExPR19FUlJPUigiSW52YWxpZCBlbmNvZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIGNvbnRlbnRC
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICAvLyBGSVhN
RTogdGhlIFVSTCBpbiB0aGUgTUlNRSBoZWFkZXIgY291bGQgYmUgcmVsYXRpdmUsIHdlIHNob3Vs
ZCByZXNvbHZlIGl0IGlmIGl0IGlzLgogICAgIC8vIFRoZSBzcGVjcyBtZW50aW9ucyA1IHdheXMg
dG8gcmVzb2x2ZSBhIFVSTDogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjU1NyNzZWN0
aW9uLTUKICAgICAvLyBJRSBhbmQgRmlyZWZveCAoVU5NaHQpIHNlZW0gdG8gZ2VuZXJhdGUgb25s
eSBhYnNvbHV0ZSBVUkxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MUGFyc2VyLmgKaW5kZXggMWU5YmQ0ZDc3NjdlZTM5MWEwMDIyZjcxNzQ4ZjAwYjg1
YzgxYjI1Zi4uMGQ2MDQzNDNmM2Q3YWQxNzhjYzIyMDAzYzk3OWMyMmU1MGEzYjk5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oCkBA
IC00MiwxMSArNDIsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXJjaGl2ZVJlc291
cmNlOwogY2xhc3MgTUhUTUxBcmNoaXZlOwogY2xhc3MgTUlNRUhlYWRlcjsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1IVE1MUGFy
c2VyIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBNSFRNTFBhcnNlcihTaGFyZWRCdWZmZXIqKTsK
KyAgICBleHBsaWNpdCBNSFRNTFBhcnNlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICAg
ICBSZWZQdHI8TUhUTUxBcmNoaXZlPiBwYXJzZUFyY2hpdmUoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3Bw
CmluZGV4IDk3Y2Q0ZGZmZDE4OGMyODExMWZkNjlhYzBkYmEzMzhhNjczMzM1YTQuLmRkZDBiMWI4
OWIxZDg3MmJiNDI3MjdlZTc4ZDhmZDYzOWU0Yjg5NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAg
LTQwLDcgKzQwLDcgQEAgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXEKIHsKIH0KIAotdm9pZCBDYWNo
ZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAo
ZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0LmgKaW5kZXggNjRiMTRkNWY2NWZmZmM4NTU0ZGY0NjY1Yzc1OTE2ZjM0ZDFkNTQ2YS4uMzc5
OGE5YjRkOTAxM2NmZGVhNmY1NmZiZGYwMDE1YWY4OTQ3NTcwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCkBA
IC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNh
dGlvbk1hbmlmZXN0PiBwcm9jZXNzKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYg
ZG9jdW1lbnRVUkwsIERvY3VtZW50KiA9IG51bGxwdHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIGNv
bnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2RlY29kZXIucHRyKCk7IH0KICAgICB2b2lkIHNldEVuY29kaW5nKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxl
U2hlZXQuY3BwCmluZGV4IDlkMmRjNzM2NDgwMmQwZDYyYTY1OTFkZTY4OWE1YTdhMjQ0MzA1MTEu
LjM4YTJlMTdmMGQwNmM4YWM5OGRlMjRiMWU1MmI4ZTYwZTkyNDEyMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTk3
LDcgKzk3LDcgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpzZXRCb2R5RGF0YUZyb20oY29u
c3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgICAgICBzYXZlUGFyc2VkU3R5bGVTaGVl
dCgqc2hlZXQubV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwogfQogCi12b2lkIENhY2hlZENTU1N0
eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZp
bmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1f
ZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAppbmRleCBkMzdmYWZhY2MwMTIyYzg3NTQw
ZjQ2NGI5ZTU2MTYwY2NhZTQ2OWY5Li5lNjU1YzY5ZTNlZGI2MDk1MDIzOWNjZTQ1NDVmMDk2YjUy
NjU2ZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NT
dHlsZVNoZWV0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29k
aW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZp
bmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlz
aExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRlc3Ryb3lE
ZWNvZGVkRGF0YSgpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2Fj
aGVkUmVzb3VyY2UmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmNwcAppbmRleCBmOWFkNzcxM2M2MDNhNmEwYTU2YmNhMjc5Y2U4MjUwNjY2YTMyMGZhLi5k
MmJjMjgyMTQ3OWM1OWEyMzIzZTRmNjVjZDk0YjYzYjQyMzczNjQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgQ2Fj
aGVkRm9udDo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGllbnQpCiAgICAg
ICAgIHN0YXRpY19jYXN0PENhY2hlZEZvbnRDbGllbnQmPihjbGllbnQpLmZvbnRMb2FkZWQoKnRo
aXMpOwogfQogCi12b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hl
ZEZvbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAg
ICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CkBAIC05NSw3ICs5NSw3IEBA
IFN0cmluZyBDYWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKICAg
ICByZXR1cm4gdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAotYm9v
bCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVy
KiBkYXRhKQorYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZm
ZXIqIGRhdGEpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVycm9y
T2NjdXJyZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBib29sIHdyYXBw
aW5nOwpAQCAtMTA4LDcgKzEwOCw3IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9u
dERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9mb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYg
d3JhcHBpbmcpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2FjaGVk
Rm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3Ry
aW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKICAgICBSZWZQdHIgYnVm
ZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRvU2ZudElmTmVj
ZXNzYXJ5KGJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApp
bmRleCAxNTRkYjhjYmFiZjNkNWEzOGUwOTYxYWNiNTVjZWFjZmYyZjI5NzNhLi4xMzQ2NmNjOTlk
MGQxOWNiZjNkOGVmM2RmYmQ5NmYzNGQwZjg1NDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3Rp
bGxOZWVkc0xvYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5pdGlhdGVkOyB9
CiAKICAgICB2aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgcmVtb3RlVVJJKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZv
bnREYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9v
bCYgd3JhcHBpbmcpOwogICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0YUZy
b21DdXN0b21EYXRhKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEmLCBjb25zdCBGb250RGVzY3JpcHRp
b24mLCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7
CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYsIGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xkLCBi
b29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwpAQCAtNjIs
NyArNjIsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRm9udFBsYXRmb3JtRGF0YSBwbGF0
Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJvbGQs
IGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKLSAgICBib29sIGVu
c3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJv
b2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKIAogcHJpdmF0ZToK
ICAgICBTdHJpbmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0OwpAQCAtNzQsNyAr
NzQsNyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgc2V0Qm9k
eURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBv
dmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5n
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggN2MwMWM4
Y2MyMzExNzg2YzYyNGY0ODVlZGVmNjkzNWZiN2VmYTVmYi4uOTQ2Mjc5NTIwZDBkYTQ0NjIyYzZh
Y2QzNjY2MjI4ODEwNWU4MTk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwCkBAIC00NjgsNyArNDY4LDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6
OmNsZWFySW1hZ2UoKQogICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lk
IENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImIGRh
dGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3Vv
dXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CkBAIC01MjMsMTQgKzUy
MywxNCBAQCBib29sIENhY2hlZEltYWdlOjpzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNv
bnN0CiAgICAgcmV0dXJuIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fbGFzdFVwZGF0ZUltYWdl
RGF0YVRpbWUpLnNlY29uZHMoKSA8IHVwZGF0ZUltYWdlRGF0YUJhY2tvZmZJbnRlcnZhbHNbaW50
ZXJ2YWxdOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6
OmNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7CiAgICAgaWYgKCFkYXRh
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIWlzUG9zdFNjcmlwdFJlc291cmNl
KCkpCiAgICAgICAgIHJldHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpOwogI2lmIFBMQVRGT1JN
KE1BQykgJiYgIVVTRShXRUJLSVRfSU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlw
dERhdGFUb1BERihkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkp
OworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252
ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRh
dGEoKSkuZ2V0KCkpOwogI2Vsc2UKICAgICAvLyBMb2FkaW5nIHRoZSBpbWFnZSBzaG91bGQgaGF2
ZSBiZWVuIGNhbmNlbGVkIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBjb252ZXJ0aW5n
IFBvc3RTY3JpcHQgdG8gUERGLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTU1LDcg
KzU1NSw3IEBAIEVuY29kZWREYXRhU3RhdHVzIENhY2hlZEltYWdlOjp1cGRhdGVJbWFnZURhdGEo
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBDYWNo
ZWRJbWFnZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2Fj
aGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
KQogewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1Bv
bGljeTo6QnVmZmVyRGF0YSk7CiAgICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoZGF0YSk7CkBAIC01
NjksNyArNTY5LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEo
ZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25z
dCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
K3ZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIG1f
ZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRlZChkYXRhKTsKICAgICBpZiAobV9kYXRhKSB7CkBA
IC01OTUsNyArNTk1LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKIHZvaWQgQ2FjaGVkSW1h
Z2U6OmRpZFJlcGxhY2VTaGFyZWRCdWZmZXJDb250ZW50cygpCiB7CiAgICAgaWYgKG1faW1hZ2Up
IHsKLSAgICAgICAgLy8gTGV0IHRoZSBJbWFnZSBrbm93IHRoYXQgdGhlIFNoYXJlZEJ1ZmZlciBo
YXMgYmVlbiByZWppZ2dlZCwgc28gaXQgY2FuIGxldCBnbyBvZiBhbnkgcmVmZXJlbmNlcyB0byB0
aGUgaGVhcC1hbGxvY2F0ZWQgcmVzb3VyY2UgYnVmZmVyLgorICAgICAgICAvLyBMZXQgdGhlIElt
YWdlIGtub3cgdGhhdCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBoYXMgYmVlbiByZWppZ2dl
ZCwgc28gaXQgY2FuIGxldCBnbyBvZiBhbnkgcmVmZXJlbmNlcyB0byB0aGUgaGVhcC1hbGxvY2F0
ZWQgcmVzb3VyY2UgYnVmZmVyLgogICAgICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8yNDI3
NTYxNyk6IEl0IHdvdWxkIGJlIGJldHRlciBpZiB3ZSBjb3VsZCBzb21laG93IHRlbGwgdGhlIElt
YWdlJ3MgZGVjb2RlciB0byBzd2FwIGluIHRoZSBuZXcgY29udGVudHMgd2l0aG91dCBkZXN0cm95
aW5nIGFueXRoaW5nLgogICAgICAgICBtX2ltYWdlLT5kZXN0cm95RGVjb2RlZERhdGEodHJ1ZSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBk
NTEzZTE2Y2JhNWE5NzA3YzMzYWZjNzkzOTE1MTg2NmZhNDM4YTVmLi4wODNmOTJmODg4Mjc2ZWVk
YTg5OTEyMDMxZDI0NDlhOTY4ZTI2NWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaApAQCAtNjksOCArNjksOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbWFnZUhh
c1JlbGF0aXZlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1Jl
bGF0aXZlV2lkdGgoKTsgfQogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsgfQogCi0g
ICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOwogCiAgICAgZW51bSBTaXplVHlwZSB7CiAgICAgICAgIFVzZWRTaXplLApAQCAtMTI1LDcg
KzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlk
ZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdDsKLSAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0
IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29u
dmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNv
bnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0
dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2b2lkIHVwZGF0
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKQEAg
LTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJ
bWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRl
KGNvbnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOworICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29u
dGVudHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggODQyYmY1ZjIwZTA2ZmQ4M2E3MDQ2NTVkNjAwYWRm
ZGM2NDgwNDQ4Mi4uODk1ZGIxMTU4YjZiOGM4ZmJmN2IxMGI0M2I2MTRlZGE5NjAyMWNkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3Bw
CkBAIC00OCw3ICs0OCw3IEBAIENhY2hlZFJhd1Jlc291cmNlOjpDYWNoZWRSYXdSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUeXBlIHR5cGUsCiAgICAgQVNTRVJUKGlz
TWFpbk9yTWVkaWFPckljb25PclJhd1Jlc291cmNlKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFNo
YXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50
YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorc3RkOjpvcHRpb25h
bDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3Jl
bWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0
CiB7CiAgICAgc2l6ZV90IHByZXZpb3VzRGF0YUxlbmd0aCA9IGVuY29kZWRTaXplKCk7CiAgICAg
aWYgKCFkYXRhIHx8IGRhdGEtPnNpemUoKSA8PSBwcmV2aW91c0RhdGFMZW5ndGgpCkBAIC01Niw3
ICs1Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jl
c291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDCiAgICAgcmV0dXJuIGRhdGEtPmdldFNv
bWVEYXRhKHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6
OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFJhd1Jl
c291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKICAgICAvLyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5lc3RlZCBy
dW5sb29wcy4gV2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExvYWRpbmcu
CiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC05Niw3ICs5Niw3IEBAIHZv
aWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0
aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lk
IENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBp
ZiAobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBtYXkgZ2V0IGhl
cmUgc3luY2hyb25vdXNseSBmcm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxsYmFjayB0aGVy
ZSBlbmRzIHVwIHNwaW5uaW5nIGEgcnVubG9vcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXggNTdmZDdhYjVjMTAwZGMwOWFkZjI2ZWM0
Y2JhYzQ1MTRmMzZmNzVmZi4uYTc4NjVmOGFkMTc4YWVmYjMyMjBhNTZkY2ZmMTk1OTkzY2Y5NWFl
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
LmgKQEAgLTUxLDkgKzUxLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkQWRk
Q2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgZmlu
aXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgYm9vbCBzaG91
bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CkBAIC02Niw3ICs2
Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291
cmNlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2FsbG93RW5jb2RlZERhdGFSZXBsYWNlbWVudDsgfQogCi0g
ICAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50
YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyKikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25h
bDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopIGNvbnN0OwogICAgIHZvaWQgbm90aWZ5Q2xpZW50
c0RhdGFXYXNSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwog
ICAgIAogI2lmIFVTRShRVUlDS19MT09LKQpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAg
IFZlY3RvcjxSZWRpcmVjdFBhaXIsIDAsIENyYXNoT25PdmVyZmxvdywgMD4gbV9yZWRpcmVjdENo
YWluOwogCiAgICAgc3RydWN0IERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsKLSAgICAgICAgUmVmUHRy
PGNvbnN0IFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxEZWxh
eWVkRmluaXNoTG9hZGluZz4gbV9kZWxheWVkRmluaXNoTG9hZGluZzsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA1NTY5NjQzY2Q1
ZTY4OTdhM2M1OGZiNDYyMzQ1NDZmMDZkYTBhYTFhLi45ZGUwYTA0Y2Q1ZWM1ZjNmYWQyZmIxNmQ3
YjMyMmM4NThhMzhhNmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpj
aGVja05vdGlmeShjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNs
aWVudC0+bm90aWZ5RmluaXNoZWQoKnRoaXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJl
c291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVz
b3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikKIHsKICAg
ICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1
ZmZlckRhdGEpOwogfQpAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVw
ZGF0ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkKQogICAgIEFTU0VSVChkYXRhQnVmZmVy
aW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0K
IAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFJlc291cmNl
OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAg
Y2hlY2tOb3RpZnkobWV0cmljcyk7CkBAIC05MTUsNyArOTE1LDcgQEAgdm9pZCBDYWNoZWRSZXNv
dXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQoKQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNP
VVJDRSkKIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnRyeVJl
cGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKIHsKICAgICBpZiAoIW1f
ZGF0YSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaAppbmRleCAyMThkNzRmMjc3NmE5NjVmY2VhNDhiNjFhMzI1Zjk3MjhhNzkw
ZGQ5Li5jOTgyZGQ2OTM3YTBiYzJiZjM4YzQyNjEyNmZmZTZlNzhjNzk2NDc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtNDksNyArNDksNyBA
QCBjbGFzcyBDb29raWVKYXI7CiBjbGFzcyBNZW1vcnlDYWNoZTsKIGNsYXNzIE5ldHdvcmtMb2Fk
TWV0cmljczsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwogY2xh
c3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIApAQCAtMTEyLDkgKzExMiw5IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVh
bCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1
YWwgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlz
aExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7
CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwgdm9pZCBlcnJv
cihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VFcnJvcihj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgeyBtX2Vycm9yID0gZXJyb3I7IH0KQEAgLTIxMyw3
ICsyMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAKLSAgICBDb250
aWd1b3VzU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YS5nZXQoKTsgfQorICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVk
KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZpcnR1YWwgdm9pZCByZXNw
b25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTI4NCw3ICsyODQsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9u
ZyAvKiBieXRlc1NlbnQgKi8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNl
bnQgKi8pIHsgfQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVy
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERhdGEoU2hhcmVk
QnVmZmVyJik7CiAjZW5kaWYKIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlm
aWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRp
ZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3ICszMzYsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgSGFzaENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGllbnQqPiBtX2Ns
aWVudHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gbV9vcmlnaW5hbFJl
cXVlc3Q7IC8vIE5lZWRlZCBieSBQaW5nIGxvYWRzLgogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxv
YWRlcj4gbV9sb2FkZXI7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0
YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAKIHByaXZhdGU6CiAgICAgTW9u
b3RvbmljVGltZSBtX2xhc3REZWNvZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBhICJ0aHJhc2gg
Z3VhcmQiIGluIHRoZSBjYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggYjBmNzZhNTA5NjEwZjY3MTA1N2JlZWJmMGEwYjlh
NjAxY2E4MjIyYi4uZGI0MzE2MDdhZTU2MzgzMDM4MDBkZDI1OWMxMDM0Y2QwOTBmY2ZlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3Bw
CkBAIC01Miw3ICs1Miw3IEBAIFN0cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5jb2RpbmcoKSBj
b25zdAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lk
IENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTVkdEb2N1
bWVudDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAg
ICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0aGUg
bmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAppbmRleCBiMDEyYmE5
OGVlZGY3MzJjMDgyYzM2M2IwY2JlMTMwMzQ3NGMzMDQ5Li40NDVlNGY5ZjQyYzNjMjc0MDc5NzZh
NjRlOTE1NDA3ZjhiNTM0ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5n
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJl
c291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsg
fQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJy
aWRlOwogCiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxU
ZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXggOWNmMDQzNzE5NGE4YTJmY2E1ZTUyNWM3YmZm
OWZlOGU5OGE1MGMzMi4uZDJjMWRlNDdlZmI3ODEzOThmNDQzOGI3Y2E0ZWEyNjBlMjIxOTc2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAt
OTEsNyArOTEsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNv
bnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9u
dEVsZW1lbnQgfHwgIWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09U
RkZvbnQoKm1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRl
ZEZvbnQgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRG
b250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRleCBhMTVlYWQwZTE2NDA5MDI3ZWY5MjA0
ZWI5MzNiNGYwNTRjMzg1ODIzLi4zNTNkM2RlNjNiMDYyODYxM2FiYWY3NzdmZWIyNTNjNWI2MjQ5
MGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9u
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAg
LTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0aWFs
aXplRXh0ZXJuYWxTVkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwog
ICAgIFNWR0ZvbnRGYWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5nJiBy
ZW1vdGVVUkkpOwogCi0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udmVy
dGVkRm9udDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAg
UmVmUHRyPFNWR0RvY3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVs
ZW1lbnQqIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0
dGluZ3M+IG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
Y3JpcHQuY3BwCmluZGV4IDFkZjVjNGIxN2VlZWJjYjRlNGJiZmU0YWY4ODkxYWRlY2I2YWI5NjAu
LjYyYTE2ZTg2YjMyMTkzZDhlNTZkNjE5MmY3N2U5YmM2ZjQwOGU5YmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHVu
c2lnbmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAgICAgcmV0dXJuIG1fc2NyaXB0SGFz
aDsKIH0KIAotdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hl
ZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsK
ICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA3NWJlNGRiNzE1NzllMzFhYWRhOTcw
NjlkOWJmZmMyYzdlNjM0MzIxLi44NjUxZTYzOWFkOTA2MTcyODU2MWMzMjRiZmE3YWY0Y2Y5N2Y2
ZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCkBAIC00
Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcm
KSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBU
ZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2su
Y3BwCmluZGV4IDU0MjY2ZGQ5MDgxOWMzNGU5MTUwODQzNDg5NDJlOTEzYWRlODFlZDQuLjBjODQy
OGJiOTlkYjZkZmIxNmEzNDgxMzRjMzgyNjgzNmNjZTU0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCkBAIC00MCwxMCArNDAsMTAgQEAg
Q2FjaGVkVGV4dFRyYWNrOjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgUEFMOjpTZXNzaW9uSUQKIHsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRv
VXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRy
YWNrOjpkb1VwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQog
ewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGlj
eTo6QnVmZmVyRGF0YSk7Ci0gICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKKyAgICBtX2RhdGEgPSBkYXRh
ID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxTaGFyZWRCdWZmZXI+KCk7CiAgICAg
c2V0RW5jb2RlZFNpemUoZGF0YSA/IGRhdGEtPnNpemUoKSA6IDApOwogCiAgICAgQ2FjaGVkUmVz
b3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMp
OwpAQCAtNTEsMTMgKzUxLDEzIEBAIHZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZl
cihjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgICAgIGNsaWVudC0+ZGVwcmVjYXRlZERp
ZFJlY2VpdmVDYWNoZWRSZXNvdXJjZSgqdGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNr
Ojp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRUZXh0
VHJhY2s6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQog
ewogICAgIGRvVXBkYXRlQnVmZmVyKCZkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRl
QnVmZmVyKGRhdGEpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhj
b25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsK
ICAgICBkb1VwZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9h
ZGluZyhkYXRhLCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRUZXh0VHJhY2suaAppbmRleCBmNDYzMTc4MzIxZWRjN2NhODY5NzBjZjRhZGRhNDA4OTY5Mjk2
ODg1Li4wOWI0MzM5YTM3YjY3M2IyYWM0ZmRhZTE0NmIyOWI5NjQ3NzdmY2VlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCkBAIC0zNSwxMCArMzUs
MTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWRE
YXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgdXBkYXRlQnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGlu
Zyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAotICAgIHZvaWQg
ZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBkb1VwZGF0ZUJ1
ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5jcHAKaW5kZXggYjlhNjU4NzUzY2U5ZjdlYzM2MzNmMWEyZjc0ZTdjYzllYTM5
ODU3NC4uZDJlZmYyZDJkNDBjOTI3NzM4NzU2YzRhOGYwY2JiOTM0M2JlMTBhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApA
QCAtNjEsNyArNjEsNyBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBj
b25zdAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lk
IENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFhTTFN0
eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7
CiAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAppbmRleCBjMDRkZDRm
MTZjZjNiN2VjYTI1ODkxMGI5ZWZhZjQxMjU0ZTJkNzI4Li5iZDIzMTIxNGYyZDIwYmEzOTY0NDYw
MzY2ZTA0MWI5NDEzNWFjNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGlu
ZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNv
dXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAg
ICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAg
IFN0cmluZyBtX3NoZWV0OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29k
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9u
aXRvckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRv
ckNvY29hLmgKaW5kZXggZDAyMGFjM2RjODA4NDRhNjdhMDdjYjViMWQxNTlmNzFjMGNkY2QxNC4u
Y2U1MmNmZWJkNzYxZTU2NDc1YTIwMWU4MTQzODUzMzRlYTRkYmE1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaApAQCAtMzIs
MTcgKzMyLDE3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9DRkNhY2hlZFVSTFJlc3BvbnNlKiBD
RkNhY2hlZFVSTFJlc3BvbnNlUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIERpc2tD
YWNoZU1vbml0b3IgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG1vbml0b3JGaWxlQmFja2lu
Z1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWYpOwotICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gdHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3Bv
bnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiB0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2Uo
Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAKIHByaXZhdGU6CiAgICAgRGlza0NhY2hlTW9uaXRv
cihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNw
b25zZVJlZik7CiAKLSAgICB2b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVk
QnVmZmVyJik7CiAKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0OyB9CiAgICAgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IDkz
ZWU5NjM3NGYwM2JhMzEyNDQzZDI4MWM1MmE0ODQwNjlkZjJhMzEuLmZhNGI5MDNiZWY5Mzk0ODFj
MjJlYTdkZjU1MWU4YjU1ZTdlMGU1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQpAQCAtNDIsMTMgKzQyLDEzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHdlJ2xs
IHRyeSB0byB3YWl0IGZvciBhIHJlc291cmNlIHRvIGJlIGRpc2sgY2FjaGVkIGJlZm9yZSB3ZSBm
b3JnZXQgdGhlIHJlcXVlc3QuCiBzdGF0aWMgY29uc3QgZG91YmxlIGRpc2tDYWNoZU1vbml0b3JU
aW1lb3V0ID0gMjA7CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVN
b25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9u
c2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKK1JlZlB0cjxTaGFyZWRC
dWZmZXI+IERpc2tDYWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9t
Q0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNl
KQogewogICAgIGF1dG8gZGF0YSA9IF9DRkNhY2hlZFVSTFJlc3BvbnNlR2V0TWVtTWFwcGVkRGF0
YShjYWNoZWRSZXNwb25zZSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7Cisg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogfQogCiB2b2lkIERpc2tDYWNo
ZU1vbml0b3I6Om1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCkBAIC0xMTMsNyArMTEzLDcgQEAgRGlza0NhY2hlTW9u
aXRvcjo6RGlza0NhY2hlTW9uaXRvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBB
TDo6U2Vzc2lvbkkKICAgICBfQ0ZDYWNoZWRVUkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRD
YWxsQmFja0Jsb2NrKGNhY2hlZFJlc3BvbnNlLCBibG9ja1RvUnVuLCBkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpKTsKIH0KIAotdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZp
bGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZlcikKK3ZvaWQg
RGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYg
ZmlsZUJhY2tlZEJ1ZmZlcikKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpz
aW5nbGV0b24oKS5yZXNvdXJjZUZvclJlcXVlc3QobV9yZXNvdXJjZVJlcXVlc3QsIG1fc2Vzc2lv
bklEKTsKICAgICBpZiAoIXJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXIuaAppbmRleCBmZjQwYzQxNmNjNjE2ZTkyYjEzMDdiYWJiN2Uz
NDNiMzdlNTQ2MDAwLi5lOGJlMWIyMTM3NmEwNTg2OWQwZTYyNWNkODRiYmVhMmM4ZWEyOGEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApA
QCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgYm9vbCBkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIGJvb2wgZGlkUmVjZWl2ZUJ1ZmZl
cihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBib29sIGRpZFJlY2VpdmVCdWZmZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIGJvb2wgZGlkRmluaXNoTG9hZGluZygpOwog
ICAgIHZvaWQgZGlkRmFpbCgpOwogCkBAIC02MCwxMiArNjAsMTIgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikg
ZmluYWwgeyB9OwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxVcGRhdGluZyhQcmV2
aWV3Q29udmVydGVyJikgZmluYWw7CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRD
b252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKLSAgICB2b2lkIHByZXZpZXdDb252
ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hhcmVkQnVmZmVy
JikgZmluYWw7CisgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmll
d0NvbnZlcnRlciYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2
b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXIm
KSBmaW5hbDsKICAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsQ29udmVydGluZyhQcmV2
aWV3Q29udmVydGVyJikgZmluYWw7CiAKICAgICAvLyBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIK
LSAgICB2b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdD
b252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYm
KSBmaW5hbDsKKyAgICB2b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVy
KFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqKT4mJikgZmluYWw7CiAgICAgdm9pZCBwcm92aWRlUGFzc3dvcmRGb3JQ
cmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFN0cmluZyYpPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVydGVy
PiBtX2NvbnZlcnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVn
YWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJl
dmlld0xvYWRlci5tbQppbmRleCBjMGRjZjgzMTRkNWE3ZmI0MmNjMmFjOThlOWQ3MGE5ZDZjZmZm
ZDQwLi4zNWY2YzE0OTlhNTRiNDAwMDkzYmMyZTg5MmQ3OTgzNzYwM2Q2YzA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC02Myw3
ICs2Myw3IEBAIHN0YXRpYyBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gbWFrZUNsaWVu
dChjb25zdCBSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjCiAgICAgcmV0dXJuIGVtcHR5Q2xpZW50
KCk7CiB9CiAKLWJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAg
aWYgKG1fZmluaXNoZWRMb2FkaW5nRGF0YUludG9Db252ZXJ0ZXIpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZp
ZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYgYwogICAgIH0p
OwogfQogCi12b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNl
aXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9p
ZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJl
dmlld0NvbnZlcnRlciYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAg
ICAgYXV0byByZXNvdXJjZUxvYWRlciA9IG1fcmVzb3VyY2VMb2FkZXIuZ2V0KCk7CiAgICAgaWYg
KCFyZXNvdXJjZUxvYWRlcikKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdM
b2FkZXI6OnByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRl
ciYgYwogICAgIG1fY2xpZW50LT5kaWRSZXF1ZXN0UGFzc3dvcmQoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCi12b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVz
b3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1haW5SZXNvdXJjZUZvclBy
ZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnZlcnRlciwgJmNvbnZlcnRlciA9PSBtX2Nv
bnZlcnRlcik7CiAgICAgY29tcGxldGlvbkhhbmRsZXIobV9vcmlnaW5hbERhdGEuZ2V0KCkuZ2V0
KCkpOwpAQCAtMjM1LDcgKzIzNSw3IEBAIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2
aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwogTGVnYWN5UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmll
d0xvYWRlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKICAgICA6IG1fY29udmVydGVyIHsgUHJldmlld0NvbnZlcnRlcjo6Y3JlYXRlKHJl
c3BvbnNlLCAqdGhpcykgfQogICAgICwgbV9jbGllbnQgeyBtYWtlQ2xpZW50KGxvYWRlciwgbV9j
b252ZXJ0ZXItPnByZXZpZXdGaWxlTmFtZSgpLCBtX2NvbnZlcnRlci0+cHJldmlld1VUSSgpKSB9
Ci0gICAgLCBtX29yaWdpbmFsRGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpIH0KKyAgICAs
IG1fb3JpZ2luYWxEYXRhIHsgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpIH0KICAg
ICAsIG1fcmVzb3VyY2VMb2FkZXIgeyBsb2FkZXIgfQogICAgICwgbV9zaG91bGREZWNpZGVQb2xp
Y3lCZWZvcmVMb2FkaW5nIHsgbG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuc2hvdWxkRGVjaWRl
UG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXcoKSB9CiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
ZGl0b3JDbGllbnQuaAppbmRleCBhMzYzYjdiMDJjYjNjOTc3ZDU1ZmNkZmNjY2JhNDMxZDM1MDcw
NjgzLi5lYTYxNWRmZjRkZDBlZDUxNGJmZjY0NDI2NDdlYzQ2MjBmNjMyMmFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmgKQEAgLTM4LDEzICszOCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGVudW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAKLWNs
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBE
b2N1bWVudEZyYWdtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgS2V5
Ym9hcmRFdmVudDsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogY2xhc3MgVGV4dENo
ZWNrZXJDbGllbnQ7CiBjbGFzcyBWaXNpYmxlU2VsZWN0aW9uOwpAQCAtNzksNyArNzksNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKGNvbnN0
IFNpbXBsZVJhbmdlJiwgY29uc3QgU2ltcGxlUmFuZ2UmKSA9IDA7CiAKICNpZiBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBj
b250ZW50VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBwcmVmZXJyZWRGaWxlTmFtZSAqLywgUmVm
PFNoYXJlZEJ1ZmZlcj4mJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVu
dElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBjb25zdCBTdHJpbmcm
IC8qIGNvbnRlbnRUeXBlICovLCBjb25zdCBTdHJpbmcmIC8qIHByZWZlcnJlZEZpbGVOYW1lICov
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICov
LCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICovLCBjb25zdCBTdHJpbmcmIC8qIGZpbGVQ
YXRoICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8
U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0
ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8pIHsg
fQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRp
bmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRC
dWZmZXI+PiYgcGFzdGVib2FyZERhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENh
bmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVj
a2luZ1Jlc3VsdCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDljOTAwYmU4ZjRjNTIxMTQ3
NTY2MzAxOTExYmI5M2IwY2UzN2E2YjEuLjJjZDE5YTExMGIyYjg2OTIzZjQ2MzEyOTlkYTM1NTA2
M2M4YmI1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTk1NSw3ICsxOTU1LDcgQEAgY29uc3Qg
U3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hv
dWxkIGhhcHBlbiB3aGVuIGl0IGZpbmlzaGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNw
ZWN0CiAgICAgLy8gdG8gd2hlbiB0aGUgbG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6
Y2xvc2UgaXMgY2FsbGVkLCBhbmQgd2hlbgogICAgIC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dl
ZCB0byBoYXBwZW4uCi0gICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRh
dGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNo
ZWV0UGF0aCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVl
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCAwMWUxNmRkOThm
NGRmMGNlYjIxZGY5MDhkMWY0MGM2MjRhYWU0YzI3Li4wMjAwMWFiMzQzMDE4YTczMjU1OTk4ZmM0
NzRjZWJmYzQ5ZjhjODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJp
YWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcApA
QCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKEZy
YW1lKiBmcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBTdHJpbmcgdGV4dCA9IGFj
Y3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVzKCpkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCksIFNl
cmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05vZGUpOwotICAgIG1fcmVzb3VyY2VzLmFw
cGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1JTUVUeXBlKCksIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKHRleHQsIFBBTDo6VW5lbmNvZGFi
bGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmws
IGRvY3VtZW50LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0
RW5jb2RpbmcuZW5jb2RlKHRleHQsIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMp
KSB9KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIAogICAgIGZvciAoYXV0byYgbm9k
ZSA6IG5vZGVzKSB7CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2Vy
aWFsaXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBVUkwK
ICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjaGVjayB3aGV0aGVyIGEgY2hhcnNldCBoYXMg
YmVlbiBzcGVjaWZpZWQgYW5kIGlmIG5vbmUgd2FzIGZvdW5kIGFkZCBvbmUuCiAgICAgICAgIFBB
TDo6VGV4dEVuY29kaW5nIHRleHRFbmNvZGluZyhzdHlsZVNoZWV0LT5jb250ZW50cygpLmNoYXJz
ZXQoKSk7CiAgICAgICAgIEFTU0VSVCh0ZXh0RW5jb2RpbmcuaXNWYWxpZCgpKTsKLSAgICAgICAg
bV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgUEFM
OjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOworICAgICAgICBtX3Jlc291cmNl
cy5hcHBlbmQoeyB1cmwsICJ0ZXh0L2NzcyJfcywgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVu
Y29kaW5nLmVuY29kZShjc3NUZXh0LnRvU3RyaW5nKCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGlu
Zzo6RW50aXRpZXMpKSB9KTsKICAgICAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiAgICAg
fQogfQpAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9S
ZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBpbWFnCiAgICAgaWYg
KCFpbWFnZSB8fCBpbWFnZS0+aW1hZ2UoKSA9PSAmSW1hZ2U6Om51bGxJbWFnZSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gaW1hZ2VSZW5kZXJl
ciA/IGltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlUmVuZGVyZXIpLT5kYXRhKCkgOiAwOwor
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhID0gaW1hZ2VSZW5kZXJlciA/
IGltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlUmVuZGVyZXIpLT5kYXRhKCkgOiAwOwogICAg
IGlmICghZGF0YSkKICAgICAgICAgZGF0YSA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAppbmRleCBiZmNiZTdiOGRiZmQ0OWY3OWQxYTAw
YzgwMDRlYWRlMjljNDgwODIxLi5mZjNlMmUxZmNiMDYxYTRmZmZjNWRlZmQ0YzJkMTgwYWY0OWJm
NzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCkBAIC01NCw3ICs1NCw3IEBA
IHB1YmxpYzoKICAgICBzdHJ1Y3QgUmVzb3VyY2UgewogICAgICAgICBVUkwgdXJsOwogICAgICAg
ICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBkYXRhOworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIH07CiAKICAg
ICBleHBsaWNpdCBQYWdlU2VyaWFsaXplcihWZWN0b3I8UmVzb3VyY2U+Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
aGFyZURhdGEuaAppbmRleCAzZWRkOWM3MWJiMjdlNTBmZGZkZmFjZWUyNzFlZmVmYjdjYjI5MWY1
Li42OGIwZGQyYzMwNmI3OTQ1MzFkMjliZDE0MGRjYjQyYjQ4ZTI3MzY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2hhcmVEYXRhLmgKQEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0IFNoYXJlRGF0YSB7CiAKIHN0cnVj
dCBSYXdGaWxlIHsKICAgICBTdHJpbmcgZmlsZU5hbWU7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGZpbGVEYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVEYXRh
OwogfTsKICAgICAKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAppbmRleCBkNjgwNWEzZWU1MzRjMzY2NGYyNTk0OTU5
M2RmYjViNDkxM2E1NGYyLi43NTgzNmI4NzkxNDNiNjBhN2YzNTE5NzAzMjA3YjZhZDNkOGQ0Zjg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBAIC03Niw3ICs3Niw3
IEBAIHZvaWQgU2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGludCBsb2FkSW5kZXgs
IGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5m
aWxlTmFtZSA9IGZpbGVOYW1lOwotICAgIGZpbGUuZmlsZURhdGEgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVm
ZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBmaWxlLmZpbGVE
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hh
cio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAg
ICBtX3NoYXJlRGF0YS5maWxlcy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1Jl
YWRTb0ZhcisrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENv
ZGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAppbmRleCAzZDgw
ZDdhMWQ0MjQ1ODUyMGJkNTQzOGVmMzZkOGE1N2NiNWQ0ZTdlLi43OWEyMzUzNTVmMWU4ZWY4NjE1
MzUyZTYzOWM4YzYzMThmNDAzNzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9LZXllZENvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5n
LmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBLZXllZERl
Y29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTYwLDcgKzE2MCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0cmluZyYga2V5
LCBkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmlu
ZyYga2V5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3RyaW5nJiBrZXksIFQgdmFsdWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaAppbmRleCBlMzgw
NmU4N2RmNzlhM2Q5YjVjYWUxMjE0ZGU2NmFhMmE2NTg0N2RiLi5mYzY2YzM2NWEyZjI5YTRjNzhl
NjA2MTllNDdhNzFjNzI1OGQ4ZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Ob3dQbGF5aW5nTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1Bs
YXlpbmdNYW5hZ2VyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlv
bmFsPE5vd1BsYXlpbmdJbmZvPiBtX25vd1BsYXlpbmdJbmZvOwogICAgIHN0cnVjdCBBcnR3b3Jr
Q2FjaGUgewogICAgICAgICBTdHJpbmcgc3JjOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBpbWFnZURhdGE7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbWFn
ZURhdGE7CiAgICAgfTsKICAgICBzdGQ6Om9wdGlvbmFsPEFydHdvcmtDYWNoZT4gbV9ub3dQbGF5
aW5nSW5mb0FydHdvcms7CiAgICAgYm9vbCBtX3NldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uIHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKaW5kZXggMTU3MzFl
YjIzZmE3Njk0OTYwZGQ4MDQ5NmZhOGYyZjllOGM3NzgwZi4uMDdlZDQ4ZTU4ODRlY2VlZGM2MWZk
OTNlNmIyMjE3MWJlODg1ODlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5j
cHAKQEAgLTg5LDcgKzg5LDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiB0eXBlKQogewogICAgIGlmIChhdXRvKiBzdHJhdGVneSA9IHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKSkKICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5LT5yZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHR5cGUsIG5hbWUoKSwgY29udGV4dCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCAxMTQ1NDYyN2UwY2RjY2ExM2Q3MzkzNGFh
MDQzNmVlN2Y3OTQ5M2FlLi4zNTc2M2VlMTJhMzkwZWZjODQ1MmMzNTgwNmI1MTJiZTQyOWFkOTcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC02MSwxMyArNjEsMTMgQEAg
dHlwZWRlZiBzdHJ1Y3QgSFdORF9fKiBIV05EOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBE
b2N1bWVudEZyYWdtZW50OwogY2xhc3MgRHJhZ0RhdGE7CiBjbGFzcyBFbGVtZW50OwogY2xhc3Mg
RnJhbWU7CiBjbGFzcyBQYXN0ZWJvYXJkU3RyYXRlZ3k7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiAKQEAg
LTgzLDE0ICs4MywxNCBAQCBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQgewogICAgIFdFQkNP
UkVfRVhQT1JUIH5QYXN0ZWJvYXJkV2ViQ29udGVudCgpOwogICAgIFN0cmluZyBjb250ZW50T3Jp
Z2luOwogICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7Ci0gICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7Ci0gICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRG
Rm9ybWF0OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdG
b3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJblN0
cmluZ0Zvcm1hdDsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdU
SykKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKQEAgLTEyMCwxNyArMTIwLDE3IEBAIHN0cnVj
dCBQYXN0ZWJvYXJkSW1hZ2UgewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkSW1hZ2Uo
KTsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwogICAgIFN0cmluZyBk
YXRhSW5IVE1MRm9ybWF0OwogI2VuZGlmCiAjaWYgIVBMQVRGT1JNKFdJTikKICAgICBQYXN0ZWJv
YXJkVVJMIHVybDsKICNlbmRpZgogI2lmICEoUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4p
KQotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOwogICAgIFN0cmluZyByZXNvdXJjZU1J
TUVUeXBlOwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3RvcjxSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAgICAgU3RyaW5nIHN1Z2dlc3Rl
ZE5hbWU7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZTsKQEAgLTE0OCwxNiArMTQ4LDE2IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIFByZXNl
bnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkRmlsZVBhdGhz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkSFRNTChj
b25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRJbWFnZShSZWY8U2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVk
UHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkSW1hZ2Uo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2Vu
dGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7CiAgICAgdmly
dHVhbCBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpID0gMDsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVhbCBib29sIHJlYWRXZWJBcmNoaXZl
KFNoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVm
ZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgcmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVk
UHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJj
aGl2ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFk
UlRGRChGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFk
UlRGKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRE
YXRhQnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplID0geyB9KSA9IDA7CiAjZW5kaWYKIH07CiAKQEAgLTE3Miw3ICsxNzIsNyBAQCBzdHJ1Y3Qg
UGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIHZpcnR1YWwgflBhc3RlYm9hcmRGaWxlUmVhZGVy
KCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5n
JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYg
LyogdHlwZSAqLykgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCByZWFk
QnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpID0gMDsKIH07CiAKIGNsYXNzIFBhc3RlYm9hcmQgewpAQCAtMjk3LDcgKzI5Nyw3
IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gcGFzdGVi
b2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3Q7CiAKICAgICBTdHJpbmcgcmVhZFN0cmlu
ZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlw
ZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXIoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIFVSTCByZWFkVVJMKHNp
emVfdCBpbmRleCwgU3RyaW5nJiB0aXRsZSk7CiAKICAgICBjb25zdCBQYXN0ZWJvYXJkQ29udGV4
dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQpAQCAtMzI5LDcg
KzMyOSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWRkSFRNTENsaXBib2FyZFR5cGVz
Rm9yQ29jb2FUeXBlKExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdFR5cGVzLCBjb25zdCBTdHJp
bmcmIGNvY29hVHlwZSk7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGb3JQbGF0Zm9ybVR5cGUoY29u
c3QgU3RyaW5nJik7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hl
Y2soKTsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZvclR5
cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOwog
I2VuZGlmCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IG1fY29udGV4
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21E
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNw
cAppbmRleCA2ZGNlY2I2Yzk4ODA4Zjk1YTRiZTUxZDAwZDZkYjg4ODc1Zjg4OTc4Li43YjRiM2Qz
NmFhNjgwMzYxMTg3OTEzMWI1YTFiMjI2YjU4OGQzNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCkBAIC0zMywxMyArMzMsMTMgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgc3RkOjp2YXJpYW50PFN0cmluZywgUmVm
PFNoYXJlZEJ1ZmZlcj4+IGNvcHlQbGF0Zm9ybURhdGEoY29uc3Qgc3RkOjp2YXJpYW50PFN0cmlu
ZywgUmVmPFNoYXJlZEJ1ZmZlcj4+JiBvdGhlcikKK3N0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5n
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGNvcHlQbGF0Zm9ybURhdGEoY29uc3Qgc3Rk
Ojp2YXJpYW50PFN0cmluZywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYgb3RoZXIpCiB7
CiAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihvdGhlcikpCiAgICAgICAg
IHJldHVybiB7IHN0ZDo6Z2V0PFN0cmluZz4ob3RoZXIpIH07CiAKLSAgICBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4ob3RoZXIpKQotICAgICAgICByZXR1cm4g
eyBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ob3RoZXIpLmNvcHlSZWYoKSB9OworICAgIGlm
IChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ob3Ro
ZXIpKQorICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+KG90aGVyKS5jb3B5UmVmKCkgfTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC04MCw3ICs4
MCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YShTdHJpbmcm
JiBvcmlnaW4sIFZlY3RvcjxFbnRyeT4mJiBkYXRhCiB7CiB9CiAKLVJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29u
c3QKK1JlZjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRC
dWZmZXIoKSBjb25zdAogewogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBjdXJyZW50Q3VzdG9tRGF0
YVNlcmlhbGl6YXRpb25WZXJzaW9uID0gMTsKIApAQCAtODksNyArODksNyBAQCBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX29yaWdpbjsKICAgICBlbmNvZGVyIDw8IHNhbWVP
cmlnaW5DdXN0b21TdHJpbmdEYXRhKCk7CiAgICAgZW5jb2RlciA8PCBvcmRlcmVkVHlwZXMoKTsK
LSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVy
KCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVBlcnNpc3RlbmNlRGVjb2Rl
cihXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYgZGVjb2RlcikKQEAgLTEyNCw3ICsxMjQsNyBA
QCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVBlcnNpc3Rl
bmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVBhc3Rl
Ym9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1Bhc3RlYm9hcmRDdXN0b21EYXRh
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIHJldHVybiBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKGJ1ZmZlci5k
ZWNvZGVyKCkpOwogfQpAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgUGFzdGVib2FyZEN1c3RvbURh
dGE6OndyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
ICAgICBhZGRPck1vdmVFbnRyeVRvRW5kKHR5cGUpLnBsYXRmb3JtRGF0YSA9IHsgdmFsdWUgfTsK
IH0KIAotdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6d3JpdGVEYXRhKGNvbnN0IFN0cmluZyYg
dHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6d3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgZGF0YSkKIHsKICAgICBhZGRPck1vdmVFbnRyeVRvRW5kKHR5cGUpLnBsYXRmb3JtRGF0
YSA9IHsgV1RGTW92ZShkYXRhKSB9OwogfQpAQCAtMjAyLDE0ICsyMDIsMTQgQEAgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4gUGFzdGVib2FyZEN1c3RvbURhdGE6OnNhbWVPcmlnaW5DdXN0b21TdHJp
bmdEYXRhKCkgY29uc3QKICAgICByZXR1cm4gY3VzdG9tRGF0YTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0
eXBlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBmb3Ig
KGF1dG8mIGVudHJ5IDogbV9kYXRhKSB7CiAgICAgICAgIGlmIChlbnRyeS50eXBlICE9IHR5cGUp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRhKSkKLSAgICAgICAgICAg
IHJldHVybiBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRhKS5j
b3B5UmVmKCk7CisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRhKSkKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6OmdldDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0
YSkuY29weVJlZigpOwogCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTI2NSwx
MSArMjY1LDExIEBAIHZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZvckVhY2hDdXN0b21TdHJp
bmcoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsCiAgICAgfQogfQogCi12b2lkIFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpmb3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihGdW5jdGlv
bjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVm
PFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKT4mJiBmdW5jdGlvbikgY29uc3QKK3ZvaWQgUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKT4mJiBmdW5jdGlvbikgY29uc3QKIHsKICAgICBmb3Ig
KGF1dG8mIGVudHJ5IDogbV9kYXRhKSB7CiAgICAgICAgIGF1dG8mIGRhdGEgPSBlbnRyeS5wbGF0
Zm9ybURhdGE7Ci0gICAgICAgIGlmICgoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRh
dGEpICYmICFzdGQ6OmdldDxTdHJpbmc+KGRhdGEpLmlzTnVsbCgpKSB8fCBzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihkYXRhKSkKKyAgICAgICAgaWYgKChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYgIXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSku
aXNOdWxsKCkpIHx8IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PihkYXRhKSkKICAgICAgICAgICAgIGZ1bmN0aW9uKGVudHJ5LnR5cGUsIGRhdGEpOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0
YS5oCmluZGV4IGJmYWZjM2VjNjA3NjA1NWFjMTg3ODU0Y2NkODg3N2M4YzVmYmYwMWQuLjk3ZmY5
ODVlMjRlMTFiNGM3YmI0MTQzNzM3ZjAyODQwYzM1ZmZjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaApAQCAtMzQsOCArMzQsOCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YSB7CiBwdWJsaWM6CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoK
IAogICAgICAgICBTdHJpbmcgdHlwZTsKICAgICAgICAgU3RyaW5nIGN1c3RvbURhdGE7Ci0gICAg
ICAgIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiBwbGF0Zm9ybURhdGE7
CisgICAgICAgIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4gcGxhdGZvcm1EYXRhOwogICAgIH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YSgpOwpAQCAtNjEsMTYgKzYxLDE2IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJp
bmcmIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgdm9pZCBzZXRPcmln
aW4oY29uc3QgU3RyaW5nJiBvcmlnaW4pIHsgbV9vcmlnaW4gPSBvcmlnaW47IH0KIAotICAgIFdF
QkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZm
ZXIoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURh
dGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21T
aGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJz
aXN0ZW5jZTo6RGVjb2RlciYmKTsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSkgY29uc3Q7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHR5cGUpIGNvbnN0OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAgICAgU3RyaW5nIHJlYWRT
dHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKIAogICAgIHZvaWQg
d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAg
ICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
ZGF0YSk7CisgICAgdm9pZCB3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICB2b2lkIHdyaXRlU3RyaW5nSW5DdXN0b21E
YXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKICAgICB2b2lk
IGNsZWFyKCk7CkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZm9yRWFjaFR5
cGUoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJikgY29uc3Q7CiAgICAgdm9pZCBmb3JF
YWNoUGxhdGZvcm1TdHJpbmcoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IFN0cmluZyYgZGF0YSk+JiYpIGNvbnN0OwotICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5n
T3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFy
aWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYpIGNvbnN0OworICAgIHZv
aWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4mIGRhdGEpPiYmKSBjb25zdDsKICAgICB2b2lkIGZvckVhY2hDdXN0b21TdHJpbmco
RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk+JiYp
IGNvbnN0OwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IGE3ODhmYjczMGVkYzFjM2VmYWRlODcw
YTQwMTFmOGM0YmJhYzJiNDUuLmM0MWUwODUyNDQ5NmM2N2YxZjE1MDM4ZmJiMjZlOWMyOWRhNjk4
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVn
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBA
IC0zMSwxMSArMzEsMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7Ci1j
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3Mg
UGFzdGVib2FyZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNl
bGVjdGlvbkRhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUlu
Zm87CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmly
dHVhbCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVh
bCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc3Ry
aW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFs
IFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikgPSAwOwpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGludDY0
X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAg
ICAgdmlydHVhbCBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwg
aW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VVJMKGNv
bnN0IFBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0Q29sb3IoY29u
c3QgQ29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTcyLDcgKzcy
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVybFN0cmluZ1N1aXRhYmxlRm9yTG9h
ZGluZyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRT
dHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250
ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9h
cmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxWZWN0b3I8UGFz
dGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KikgPSAwOwpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8U3Ry
aW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVh
bCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlUGF0aHNGcm9tQ2xp
cGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9
IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0YSYmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICNl
bmRpZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZFdyaXRlckRhdGEuaAppbmRleCBiNDVjZTFmOTM4Y2JhNTA2NjM4YjZhNDEyMWQ3NjczNjNm
OGJlNTIyLi44ZTJjOGZiOTJkOTcyZmQ0MjE2MDA3YmM4Nzc3NTJjZmQzNDhmODRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKQEAgLTMwLDcg
KzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0
YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEsMTQgQEAgcHVibGljOgogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICAgICAgICAgYm9vbCBj
YW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAgICAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgICAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKKyAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YUluUlRGRm9ybWF0OworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5B
dHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsK
ICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICAgICAgVmVjdG9yPFN0cmlu
Zz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+IGNsaWVudERhdGE7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4g
Y2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKaW5kZXggM2Y0ODMyYTVhNjU4YzFjYzdjMGFhMTNi
MjZlMGVhNDczM2U5ZDNiNy4uOWU3MmU0NGEyZWFjNGQ4ZWY3MzBiOTg3MWQwZWM1MDhlZDlmYWM0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50Rmls
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVy
LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtQ29udGVudEZpbHRlciB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgPSAwOwotICAgIHZpcnR1YWwgUmVm
PFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0ID0gMDsK
ICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgdmlydHVhbCBDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCA9IDA7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggYmE2ODFmZTA1
NTA0NzZjYWI4YjNmNmYwYmNhNTQzNjRhZmMyMGRlYS4uNzFkZmI5M2U1NzU2MGUzM2E3ZjZjODBj
MjBmOTJkNWIyY2FlYzEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Q
YXN0ZWJvYXJkLmgKQEAgLTQ3LDE0ICs0NywxNCBAQCBzdHJ1Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOwotY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRh
OwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3Qg
UGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgUGFzdGVi
b2FyZFdlYkNvbnRlbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybVBhc3RlYm9hcmQgewogcHVibGljOgpAQCAtNzIs
NyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBwbGF0Zm9ybVBhc3RlYm9hcmRU
eXBlRm9yU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIGRvbVR5cGUs
IEluY2x1ZGVJbWFnZVR5cGVzID0gSW5jbHVkZUltYWdlVHlwZXM6Ok5vKTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3Ry
aW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxT
dHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKQEAgLTg2
LDcgKzg2LDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB3aWxsIHJldHVybiAw
IGlmIHBhc3RlYm9hcmQgb3duZXJzaGlwIGhhcyBiZWVuIHRha2VuIGZyb20gdXMuCiAgICAgV0VC
Q09SRV9FWFBPUlQgaW50NjRfdCBjb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIq
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2
NF90IHNldEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0VVJMKGNv
bnN0IFBhc3RlYm9hcmRVUkwmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldENvbG9y
KGNvbnN0IENvbG9yJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRTdHJpbmdGb3JU
eXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwpAQCAtOTQs
NyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQ
YXN0ZWJvYXJkSW1hZ2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyByZWFkU3Ry
aW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxl
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY291bnQoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKaW5kZXggOWViNGJkZGYwN2Nm
NjE2NmE1ODYwYmFjMDc0NjI2ZDI5NWFjYjMyYi4uYTRlMDg3NTA5ZTU5NGQxODcxMTI1ZDEzYzk5
NTNjNGU0Mzk0OTM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmll
d0NvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZl
cnRlci5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgY29uc3QgUmVzb3VyY2VFcnJvciYgUHJldmlld0Nv
bnZlcnRlcjo6cHJldmlld0Vycm9yKCkgY29uc3QKICAgICByZXR1cm4gbV9wcmV2aWV3RXJyb3I7
CiB9CiAKLWNvbnN0IFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJldmlld0RhdGEo
KSBjb25zdAorY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6
cHJldmlld0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiAqbV9wcmV2aWV3RGF0YS5nZXQoKTsK
IH0KQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWluUmVz
b3VyY2UoKQogICAgIH0pOwogfQogCi12b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmFwcGVuZEZyb21C
dWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6
OmFwcGVuZEZyb21CdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIHdoaWxlIChidWZmZXIuc2l6ZSgpID4gbV9sZW5ndGhBcHBlbmRlZCkgewogICAgICAg
ICBhdXRvIG5ld0RhdGEgPSBidWZmZXIuZ2V0U29tZURhdGEobV9sZW5ndGhBcHBlbmRlZCk7CkBA
IC0yMzgsNyArMjM4LDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQ
cmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xpZW50LnByZXZpZXdDb252ZXJ0
ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKCp0aGlzKTsKIH0KIAotdm9pZCBQcmV2aWV3Q29udmVydGVy
OjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQg
UHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyB7IFJlZiB7ICp0
aGlzIH0gfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0Nv
bnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCmlu
ZGV4IGYxNGRlMWQ5MTRhNGNiY2ExNWE3NWQ2ZDVlNWUwZGNiNGM0YTlmNzYuLjVhZWRhM2I3MmY0
MGJhNWFmNzQxMTJjMDA0NTdmOTY2YTdhMDNiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RydWN0IFByZXZpZXdDb252
ZXJ0ZXJQcm92aWRlcjsKIHN0cnVjdCBQcmV2aWV3UGxhdGZvcm1EZWxlZ2F0ZSA6IENhbk1ha2VX
ZWFrUHRyPFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlPiB7CiAgICAgdmlydHVhbCB+UHJldmlld1Bs
YXRmb3JtRGVsZWdhdGUoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVE
aWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRGaW5pc2hMb2FkaW5nKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZEZhaWxXaXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJv
ciYpID0gMDsKIH07CkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgcHJldmlld0ZpbGVOYW1lKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIHByZXZpZXdVVEkoKSBjb25zdDsKICAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBwcmV2aWV3
RXJyb3IoKSBjb25zdDsKLSAgICBjb25zdCBTaGFyZWRCdWZmZXImIHByZXZpZXdEYXRhKCkgY29u
c3Q7CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcHJldmlld0RhdGEoKSBjb25z
dDsKIAogICAgIHZvaWQgZmFpbGVkVXBkYXRpbmcoKTsKICAgICB2b2lkIGZpbmlzaFVwZGF0aW5n
KCk7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1BsYXRmb3JtUGFzc3dv
cmRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiB2b2lkIGl0ZXJhdGVDbGllbnRzKFQmJiBjYWxsYmFjayk7Ci0gICAgdm9pZCBhcHBl
bmRGcm9tQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgYXBwZW5kRnJvbUJ1
ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBkaWRBZGRDbGll
bnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYpOwogICAgIHZvaWQgZGlkRmFpbENvbnZlcnRpbmdX
aXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkRmFpbFVwZGF0aW5n
KCk7CkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtVW5sb2Nr
V2l0aFBhc3N3b3JkKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gUHJldmlld1BsYXRmb3JtRGVs
ZWdhdGUKLSAgICB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JikgZmluYWw7CisgICAgdm9pZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRlbGVnYXRlRGlkRmluaXNoTG9hZGlu
ZygpIGZpbmFsOwogICAgIHZvaWQgZGVsZWdhdGVEaWRGYWlsV2l0aEVycm9yKGNvbnN0IFJlc291
cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmll
d0NvbnZlcnRlckNsaWVudC5oCmluZGV4IDA0ZWEzNjgwNjkyYjI1MmExOTg5YzI2Y2EyMDQyMTI3
NzdhYTNiN2IuLjljZWU5MzMyMGIyMzhiNGNkNzNjZGQyZTAzMDJjM2JmNGRhZDY4YmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmgKQEAg
LTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQcmV2aWV3Q29udmVy
dGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50IDog
Q2FuTWFrZVdlYWtQdHI8UHJldmlld0NvbnZlcnRlckNsaWVudD4gewogICAgIHZpcnR1YWwgflBy
ZXZpZXdDb252ZXJ0ZXJDbGllbnQoKSA9IGRlZmF1bHQ7CkBAIC00Miw3ICs0Miw3IEBAIHN0cnVj
dCBQcmV2aWV3Q29udmVydGVyQ2xpZW50IDogQ2FuTWFrZVdlYWtQdHI8UHJldmlld0NvbnZlcnRl
ckNsaWVudD4gewogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmluaXNoVXBk
YXRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0Nv
bnZlcnRlckRpZEZhaWxVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0
ZXImKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0
YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBuZXdEYXRhKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29u
dmVydGVyJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgbmV3RGF0YSkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZyhQcmV2aWV3
Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFp
bENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCmluZGV4IDgyNzg2Mzkz
ZmNlZDc1NGM4NWY3YjI4OTEyNTJmNTE2YmVkMGQ1NDkuLmI5ODZlZTQwZDE5NzUxNzRmNTRhZDI5
YTE2OGNhZGYxODk0NTZjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgOiBDYW5NYWtlV2Vha1B0cjxQ
cmV2aWV3Q29udmVydGVyUHJvdmlkZXI+IHsKICAgICB2aXJ0dWFsIH5QcmV2aWV3Q29udmVydGVy
UHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJvdmlkZU1haW5SZXNv
dXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByb3ZpZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0
ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
b21pc2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2Vk
QXR0YWNobWVudEluZm8uaAppbmRleCBhMWNjNzY5NWMwYTYzZWQ3ODdlMjEwYTdjODI3Nzc2N2Rj
Y2U3MWFmLi4xZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVjMzJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCkBAIC0z
MCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21pc2VkQXR0YWNo
bWVudEluZm8gewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zOCw3ICszOCw3
IEBAIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAgICAgVmVjdG9y
PFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4gYWRkaXRpb25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCAxNjcyMDhjZThk
YWI3MTVkYjQ1ZWE4ZGEwOWE0YmQzYWQ1NGU2N2YyLi5hMzM5MjVkM2FjMjQ3MjMwMGUwNzdjZjIw
NzZkYzgxZTAzZTUyZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5j
cHAKQEAgLTM3LDY5ICszNyw2OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcik7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQorUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoZGF0YSwgc2l6ZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRh
KQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRhKQogewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRh
KSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RG
TW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFy
ZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKIH0KIAotUmVmPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQorUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShW
ZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7CiB9CiAKLVJlZjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3Zp
ZGVyKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIp
KSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OworRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcigpID0gZGVmYXVsdDsKIAot
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBm
aWxlRGF0YSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIo
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKICAgICA6IG1fc2l6ZShmaWxl
RGF0YS5zaXplKCkpCiB7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6
Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKSB9KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRC
dWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCitGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHBy
b3ZpZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUoKSkKIHsKICAgICBtX3NlZ21lbnRz
LmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRlcikpIH0pOwog
fQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGFwcGVuZChXVEZNb3ZlKGJ1
ZmZlcikpOwogfQogCiAjaWYgVVNFKEdTVFJFQU1FUikKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCitSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdz
dE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKG1hcHBlZEJ1ZmZlcikpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIobWFwcGVkQnVmZmVyKSk7CiB9CiAKLVNoYXJlZEJ1
ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCitG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93
bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiAgICAgOiBtX3NpemUobWFwcGVkQnVmZmVyLnNpemUo
KSkKIHsKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoJm1h
cHBlZEJ1ZmZlcikgfSk7CiB9CiAjZW5kaWYKIAotc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21i
aW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3ImIHNl
Z21lbnRzLCBzaXplX3Qgc2l6ZSkKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21l
bnRzRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYg
c2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERh
dGE7CiAgICAgY29tYmluZWREYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7CkBAIC0x
MDksMTkgKzEwOSwxOSBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0Rh
dGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvcgogICAgIHJldHVybiBjb21i
aW5lZERhdGE7CiB9CiAKLVJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
Om1ha2VDb250aWd1b3VzKCkgY29uc3QKK1JlZjxTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzKCkgY29uc3QKIHsKICAgICBpZiAobV9jb250aWd1b3Vz
KQotICAgICAgICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIqPihjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSB9OworICAgICAgICByZXR1cm4g
UmVmIHsgKnN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcio+KHRoaXMpKSB9OwogICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCi0gICAg
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpID09
IDEpCi0gICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9zZWdt
ZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsKICAgICBhdXRvIGNvbWJp
bmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9zaXplKTsKLSAgICBy
ZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRh
KSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29tYmluZWREYXRh
KSk7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QK
K1ZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0
CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0YS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHNpemUoKSk7CkBAIC0xMzEsNyArMTMxLDcgQEAgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJl
ZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdAogICAgIHJldHVybiBkYXRhOwogfQogCi1WZWN0b3I8
dWludDhfdD4gU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCitWZWN0b3I8dWludDhfdD4gRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKQogewogICAgIGlmIChtX3NlZ21lbnRzLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTE0NiwxMyArMTQ2LDEzIEBAIFZlY3Rvcjx1
aW50OF90PiBTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkKICAgICByZXR1cm4gY29tYmluZWREYXRh
OwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNp
emVfdCBwb3NpdGlvbikgY29uc3QKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKIHsKICAgICBjb25z
dCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBlbGVtZW50ID0gZ2V0U2VnbWVudEZvclBvc2l0aW9u
KHBvc2l0aW9uKTsKICAgICByZXR1cm4geyBlbGVtZW50LT5zZWdtZW50LmNvcHlSZWYoKSwgcG9z
aXRpb24gLSBlbGVtZW50LT5iZWdpblBvc2l0aW9uIH07CiB9CiAKLWNvbnN0IFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogU2hhcmVkQnVmZmVyOjpnZXRTZWdtZW50Rm9yUG9z
aXRpb24oc2l6ZV90IHBvc2l0aW9uKSBjb25zdAorY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Z2V0U2Vn
bWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGlvbikgY29uc3QKIHsKICAgICBSRUxFQVNFX0FT
U0VSVChwb3NpdGlvbiA8IG1fc2l6ZSk7CiAgICAgYXV0byBjb21wYXJhdG9yID0gW10oY29uc3Qg
c2l6ZV90JiBwb3NpdGlvbiwgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSYgZW50cnkpIHsK
QEAgLTE2Myw3ICsxNjMsNyBAQCBjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9y
RW50cnkqIFNoYXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9uKAogICAgIHJldHVybiBl
bGVtZW50OwogfQogCi1TdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CitT
dHJpbmcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogewogICAg
IFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBmb3JFYWNoU2VnbWVudChbJl0oYXV0
byYgc2VnbWVudCkgewpAQCAtMTczLDcgKzE3Myw3IEBAIFN0cmluZyBTaGFyZWRCdWZmZXI6OnRv
SGV4U3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwog
fQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKSBjb25zdAorUmVmUHRyPEFycmF5QnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0
cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFy
cmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
aXplKCkpLCAxKTsKICAgICBpZiAoIWFycmF5QnVmZmVyKSB7CkBAIC0xOTIsNyArMTkyLDcgQEAg
UmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkg
Y29uc3QKICAgICByZXR1cm4gYXJyYXlCdWZmZXI7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjph
cHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjphcHBlbmQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBB
U1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgbV9zZWdtZW50cy5yZXNlcnZlQ2FwYWNpdHkobV9z
ZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgpKTsKQEAgLTIwMyw3ICsyMDMs
NyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkK
ICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVm
ZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBs
ZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIFZlY3Rvcjx1aW50OF90
PiB2ZWN0b3I7CkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogICAgIEFTU0VSVChpbnRlcm5hbGx5
Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSkKIHsKICAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgYXV0
byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwpAQCAtMjIyLDE2ICsyMjIsMTYgQEAgdm9pZCBTaGFy
ZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogICAgIEFTU0VSVChpbnRl
cm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyKCkKK3Zv
aWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogewogICAgIG1fc2l6ZSA9IDA7CiAg
ICAgbV9zZWdtZW50cy5jbGVhcigpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgp
KTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKK1Jl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5KCkg
Y29uc3QKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgU2hh
cmVkQnVmZmVyKTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBhZG9w
dFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOwogICAgIGNsb25lLT5tX3NpemUgPSBt
X3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3Nl
Z21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50
cykKQEAgLTI0MSwxNCArMjQxLDE0IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y29weSgpIGNvbnN0CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6
Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4
X3Q+Jik+JiBhcHBseSkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9yRWFj
aFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+
JiBhcHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50czsKICAgICBm
b3IgKGF1dG8mIHNlZ21lbnQgOiBzZWdtZW50cykKICAgICAgICAgYXBwbHkoU3BhbiB7IHNlZ21l
bnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSB9KTsKIH0KIAotYm9v
bCBTaGFyZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJl
Zml4KSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0
IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKIHsKICAgICBpZiAocHJlZml4LmVt
cHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjcwLDcgKzI3MCw3IEBAIGJvb2wgU2hh
cmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkg
Y29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZm
ZXI6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKK1ZlY3Rvcjx1aW50
OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBs
ZW5ndGgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgaWYgKG9mZnNl
dCA+PSBzaXplKCkpCkBAIC0yOTcsMTIgKzI5NywxMiBAQCBWZWN0b3I8dWludDhfdD4gU2hhcmVk
QnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiAgICAgcmV0
dXJuIGRhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRp
b24sIHNpemVfdCBsZW5ndGgpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNv
cHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIHsKICAgICByZXR1
cm4gY29weVRvKGRlc3RpbmF0aW9uLCAwLCBsZW5ndGgpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZl
cjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3Ro
KSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGlu
YXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KGxlbmd0aCArIG9mZnNldCA8PSBzaXplKCkpOwogICAgIGlmIChvZmZzZXQgPj0gc2l6ZSgpKQpA
QCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGlu
YXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB9CiAKICNpZiBBU1NF
UlRfRU5BQkxFRAotYm9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29u
c3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBj
b25zdAogewogICAgIHNpemVfdCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBl
bGVtZW50IDogbV9zZWdtZW50cykgewpAQCAtMzU0LDEyICszNTQsMTIgQEAgYm9vbCBTaGFyZWRC
dWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKICNlbmRpZiAvLyBBU1NFUlRfRU5B
QkxFRAogCiAjaWYgIVVTRShDRikKLXZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVl
ZGVkU29vbigpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlO
b3ROZWVkZWRTb29uKCkgY29uc3QKIHsKIH0KICNlbmRpZgogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6
b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAorYm9vbCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IG90aGVyKSBjb25zdAogewogICAgIGlmICh0aGlzID09ICZvdGhlcikKICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC00MDgsMTkgKzQwOCwxOSBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9
PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1Db250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkKK1NoYXJl
ZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKCkKIHsKICAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOwogfQog
Ci1Db250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRh
U2VnbWVudD4mJiBzZWdtZW50KQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPERhdGFT
ZWdtZW50PiYmIHNlZ21lbnQpCiB7CiAgICAgbV9zaXplID0gc2VnbWVudC0+c2l6ZSgpOwogICAg
IG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsKICAgICBtX2NvbnRp
Z3VvdXMgPSB0cnVlOwogfQogCi1Db250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikKK1NoYXJlZEJ1
ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3Vv
dXNCdWZmZXIpCiB7CiAgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09uZVNlZ21lbnQo
KSB8fCBjb250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOwogICAgIG1fc2l6ZSA9IGNvbnRpZ3Vv
dXNCdWZmZXItPnNpemUoKTsKQEAgLTQyOSwzMSArNDI5LDMxIEBAIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjb250aWd1
b3VzQnVmCiAgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKIH0KIAotQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
IGRhdGEpCi0gICAgOiBTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKK1NoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICA6IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKIHsKICAgICBtX2NvbnRpZ3VvdXMg
PSB0cnVlOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxl
TWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VGaWxlTWFwcGlu
ZyBtYXlVc2VGaWxlTWFwcGluZykKIHsKICAgICBpZiAobWF5VXNlRmlsZU1hcHBpbmcgPT0gTWF5
VXNlRmlsZU1hcHBpbmc6OlllcykgewogICAgICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwogICAg
ICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShmaWxlUGF0aCwg
bWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKICAgICAgICAgaWYgKG1hcHBpbmdTdWNj
ZXNzKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwogICAgIH0KICAg
ICByZXR1cm4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQYXRoKTsKIH0KIAotY29uc3QgdWlu
dDhfdCogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Citjb25zdCB1aW50OF90
KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAogewogICAgIGlmIChtX3NlZ21lbnRzLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG1fc2VnbWVudHNbMF0u
c2VnbWVudC0+ZGF0YSgpOwogfQogCi1XVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAorV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciBTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAogewogICAgIHJldHVybiB7IHsgZGF0YSgp
LCBzaXplKCkgfSB9OwogfQpAQCAtNTQ0LDEzICs1NDQsMTMgQEAgdm9pZCBTaGFyZWRCdWZmZXJC
dWlsZGVyOjplbXB0eSgpCiAgICAgZW5zdXJlQnVmZmVyKCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2UoKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2UoKQogewogICAgIGVuc3VyZUJ1ZmZlcigpOwog
ICAgIHJldHVybiBtX2J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOwogfQogCi1SZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZUFzQ29udGlndW91cygpCitS
ZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlQXNDb250aWd1b3VzKCkK
IHsKICAgICByZXR1cm4gdGFrZSgpLT5tYWtlQ29udGlndW91cygpOwogfQpAQCAtNTgyLDE2ICs1
ODIsMTYgQEAgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3JiBvdGhlciwgc2kKIHsKIH0KIAotUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBj
b25zdAorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50ID0g
bV9zZWdtZW50OwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0
YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0
YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlZ21lbnQsIGRhdGEgPSBkYXRhKCldKCkg
eyByZXR1cm4gZGF0YTsgfSwKICAgICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6
ZTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1
ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZm
ZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgLy8gQWxsb2NhdGUgYSBidWZmZXIgYmln
IGVub3VnaCB0byBob2xkIGFsbCB0aGUgY2hhcmFjdGVycy4KICAgICBjb25zdCBzaXplX3QgbGVu
Z3RoID0gc3RyaW5nLmxlbmd0aCgpOwpAQCAtNjE3LDcgKzYxNyw3IEBAIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0K
IAogICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5k
YXRhKCkpKTsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoYnVmZmVyKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVm
ZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmgKaW5kZXggOTgwZDc1ZGVjMjZiYjE5ZjE5ZGI4NzAyYjc4Yzc3ZDRmYTFj
Y2UzMC4uYTA4ZWVkM2E5Y2E4NWFiMDI2MjY0MDYzYzgwZDMzZDUxNzllMjFlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3MgRGVj
b2RlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAK
IC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVj
YXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgpAQCAtMTMwLDQyICsx
MzAsNDIgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSwKICAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKLSAgICBmcmllbmQgY2xh
c3MgU2hhcmVkQnVmZmVyOwotICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OyAvLyBGb3IgY3JlYXRlQ0ZEYXRhCisgICAgZnJpZW5kIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNGRGF0
YQogfTsKIAotY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFNoYXJlZEJ1ZmZlcj4geworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB7CiBwdWJsaWM6Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWlu
dDhfdCosIHNpemVfdCk7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gY3JlYXRlKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEm
Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJv
dmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBjcmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBzdGF0
aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3Qgc2l6ZSkgeyByZXR1cm4gY3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGRhdGEpLCBzaXplKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShE
YXRhU2VnbWVudDo6UHJvdmlkZXImJik7CiAKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBXRUJD
T1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0
YSopOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKE5TRGF0YSopOwogI2VuZGlmCiAjaWYgVVNFKENGKQotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRh
dGFSZWYpOwogI2VuZGlmCiAKICNpZiBVU0UoR0xJQikKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwogI2Vu
ZGlmCiAKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8
U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBw
ZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4
X3Q+IGNvcHlEYXRhKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+
IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAKLSAgICAvLyBTaW1p
bGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRh
dGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJl
ZCkuCisgICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQg
d2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KICAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFj
dERhdGEoKTsKIAotICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlz
IFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAvLyBDcmVhdGVzIGFuIEFycmF5
QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3MgY29udGVudHMg
dG8gdGhhdAogICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVm
ZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5
QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0OwogCkBAIC0xNzMsMTQgKzE3Mywx
NCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsg
fQogICAgIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3QgeyByZXR1cm4gbV9jb250aWd1b3VzOyB9
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6
ZV90IGxlbmd0aCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCog
ZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNv
bnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsK
IAotICAgIHVzaW5nIERhdGFTZWdtZW50ID0gV2ViQ29yZTo6RGF0YVNlZ21lbnQ7IC8vIFRvIGtl
ZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aGVuIHVzaW5nIFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBU
byBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkg
ewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTE5OCwzOCArMTk4LDM4IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgaGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdDsKIAotICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25z
dDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdDsKKyAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3VvdXMoKSBjb25zdDsKIAogcHJv
dGVjdGVkOgotICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworICAgIGZy
aWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKICAgICBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21l
bnRzOwogICAgIGJvb2wgbV9jb250aWd1b3VzIHsgZmFsc2UgfTsKIAotICAgIFdFQkNPUkVfRVhQ
T1JUIFNoYXJlZEJ1ZmZlcigpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KLSAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgYXBwZW5k
KGRhdGEsIHNpemUpOyB9Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEpIHsgYXBwZW5kKFdURk1vdmUoZGF0YSkpOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlk
ZXImJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKCk7CisgICAgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KKyAgICBl
eHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBz
aXplKSB7IGFwcGVuZChkYXRhLCBzaXplKTsgfQorICAgIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgeyBhcHBlbmQoV1RGTW92ZShkYXRhKSk7
IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1
ZmZlcj4mJik7CiAjaWYgVVNFKENGKQotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEdCeXRlcyopOwogI2VuZGlm
CiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYK
ICAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBT
aGFyZWRCdWZmZXJCdWlsZGVyOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChj
b25zdCB1aW50OF90Kiwgc2l6ZV90KTsKICAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhKSwgbGVuZ3RoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rv
cjx1aW50OF90PiYmKTsKQEAgLTI0Miw3ICsyNDIsNyBAQCBwcml2YXRlOgogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjbGVhcigpOwogCi0gICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50
cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRo
ZSBTaGFyZWRCdWZmZXIuCisgICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEg
VmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyLgogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0YWtl
RGF0YSgpOwogICAgIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkqIGdldFNlZ21lbnRGb3JQ
b3NpdGlvbihzaXplX3QgcG9zaXRpdGlvbikgY29uc3Q7CiAKQEAgLTI1MSwyMCArMjUxLDIwIEBA
IHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLS8vIEEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBpcyBh
IFNoYXJlZEJ1ZmZlciB0aGF0IGFsbG93cyB0byBkaXJlY3RseSBhY2Nlc3MgaXRzIGNvbnRlbnQg
dmlhIHRoZSBkYXRhKCkgYW5kIHJlbGF0ZWQgbWV0aG9kcy4KLWNsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIgOiBwdWJsaWMgU2hhcmVkQnVmZmVyIHsKKy8vIEEgU2hhcmVkQnVmZmVyIGlzIGEg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB0aGF0IGFsbG93cyB0byBkaXJlY3RseSBhY2Nlc3MgaXRz
IGNvbnRlbnQgdmlhIHRoZSBkYXRhKCkgYW5kIHJlbGF0ZWQgbWV0aG9kcy4KK2NsYXNzIFNoYXJl
ZEJ1ZmZlciA6IHB1YmxpYyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIHsKIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KLSAgICBzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQogICAgIHsKICAgICAgICAgaWYgY29uc3RleHBy
ICghc2l6ZW9mLi4uKEFyZ3MpKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcigpKTsKICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihB
cmdzKSA9PSAxCiAgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFT
ZWdtZW50Pj4gJiYuLi4pKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUo
YnVmZmVyKSkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKICAgICAg
ICAgfQogICAgIH0KIApAQCAtMjczLDcgKzI3Myw3IEBAIHB1YmxpYzoKICAgICBXVEY6OlBlcnNp
c3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKIAogICAgIGVudW0gY2xhc3MgTWF5VXNl
RmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlV
c2VGaWxlTWFwcGluZzo6WWVzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1v
ZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsK
IAogI2lmIFVTRShGT1VOREFUSU9OKQogICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0Rh
dGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwpAQCAtMjg2LDE5ICsyODYsMTkgQEAgcHVibGljOgog
I2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcigpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYpOwotICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1
ZmZlcj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8RGF0YVNl
Z21lbnQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
OwogfTsKIAogY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlcigpID0gZGVmYXVsdDsK
LSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIHsKICAgICAgICAgaWYgKCFidWZmZXIpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0zMTAsMTMgKzMxMCwxMyBAQCBwdWJsaWM6CiAgICAgICAg
IH0KICAgICAgICAgYXBwZW5kKCpidWZmZXIpOwogICAgIH0KLSAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXJCdWlsZGVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBXVEZNb3ZlKGJ1ZmZlcikgfSkK
KyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiB7IFdURk1vdmUoYnVmZmVyKSB9KQogICAgIHsKICAgICB9CiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihB
cmdzJiYuLi4gYXJncykKLSAgICAgICAgOiBtX2J1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkg
eyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KICAgICB2b2lkIGFwcGVuZChB
cmdzJiYuLi4gYXJncykKQEAgLTMzNCwxOCArMzM0LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
c2V0KCkgeyBtX2J1ZmZlciA9IG51bGxwdHI7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVt
cHR5KCk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBnZXQoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlcjsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gdGFrZSgpOwotICAgIFdFQkNPUkVf
RVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0YWtlQXNDb250aWd1b3VzKCk7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyOyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiB0YWtlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gdGFr
ZUFzQ29udGlndW91cygpOwogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
dGFrZUFzQXJyYXlCdWZmZXIoKTsKIAogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGVuc3VyZUJ1ZmZlcigpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKLWlubGluZSBW
ZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCitpbmxpbmUgVmVjdG9y
PHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIHsKICAgICBp
ZiAoaGFzT25lUmVmKCkpCiAgICAgICAgIHJldHVybiB0YWtlRGF0YSgpOwpAQCAtMzYwLDcgKzM2
MCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsgfQogICAgIGNvbnN0
IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihkYXRhKCkpOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAjaWYg
VVNFKEZPVU5EQVRJT04pCiAgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TRGF0YT4gY3Jl
YXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTM3MCw2ICszNzAsNiBAQCBwcml2YXRlOgog
ICAgIGNvbnN0IHNpemVfdCBtX3NpemU7CiB9OwogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IHV0
ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcApp
bmRleCBjZGI2ZTcwMzQwNGQ0MjZkZDIxYjQ3OWZhODljMGRhOWI4YzQ5ZjhlLi45ZDA1NWNlMjdk
ODhjM2Q2MmU1YmQxY2Q0NmFkOTFmNWNjNDMxZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShNSFRNTCkKIAotU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVy
LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcikKK1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
OjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIs
IGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKQogICAgIDogbV9pdGVyYXRvckN1cnJlbnQo
YnVmZmVyLT5iZWdpbigpKQogICAgICwgbV9pdGVyYXRvckVuZChidWZmZXItPmVuZCgpKQogICAg
ICwgbV9zZWdtZW50KG1faXRlcmF0b3JDdXJyZW50ICE9IG1faXRlcmF0b3JFbmQgPyBtX2l0ZXJh
dG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0YSgpIDogbnVsbHB0cikKQEAgLTQ0LDcgKzQ0LDcgQEAg
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1
ZmZlciogYnVmZmVyLCBjb25zdCBWZWMKIHsKIH0KIAotU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6
OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBjaGFy
KiBzZXBhcmF0b3IpCitTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBjaGFyKiBzZXBhcmF0
b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVudChidWZmZXItPmJlZ2luKCkpCiAgICAgLCBtX2l0
ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAgLCBtX3NlZ21lbnQobV9pdGVyYXRvckN1cnJl
bnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRlcmF0b3JDdXJyZW50LT5zZWdtZW50LT5kYXRhKCkg
OiBudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyLmgKaW5kZXggNWQ0ZTZmZWU1ODJjNjYxNmZkMDdlMzk5NGZmNzVjOGYwN2EyZmNl
MS4uMWM2NDA4ZDRjNzM2YTFjNGE0NWNlZTdiM2Y2OTY1N2JjOWEyNjE1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oCkBAIC00MSw4
ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIgewogcHVibGljOgotICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKTsKLSAgICBT
aGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqLCBjb25zdCBjaGFyKiBzZXBhcmF0
b3IpOworICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcik7CisgICAgU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IGNoYXIqIHNlcGFyYXRvcik7CiAK
ICAgICB2b2lkIHNldFNlcGFyYXRvcihjb25zdCBWZWN0b3I8Y2hhcj4mKTsKICAgICB2b2lkIHNl
dFNlcGFyYXRvcihjb25zdCBjaGFyKik7CkBAIC01OCw4ICs1OCw4IEBAIHB1YmxpYzoKICAgICBz
aXplX3QgcGVlayhWZWN0b3I8dWludDhfdD4mLCBzaXplX3QpOwogCiBwcml2YXRlOgotICAgIFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JD
dXJyZW50OwotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0
X2l0ZXJhdG9yIG1faXRlcmF0b3JFbmQ7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JDdXJyZW50OworICAgIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVy
YXRvciBtX2l0ZXJhdG9yRW5kOwogICAgIGNvbnN0IHVpbnQ4X3QqIG1fc2VnbWVudCB7IG51bGxw
dHIgfTsKICAgICBzaXplX3QgbV9zZWdtZW50SW5kZXggeyAwIH07CiAgICAgVmVjdG9yPGNoYXI+
IG1fc2VwYXJhdG9yIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGlj
UGFzdGVib2FyZC5jcHAKaW5kZXggYjJkN2E1NTBkNDYwZTk0Y2QzMTUxMzRhMzE5NWJjZDkxYzdi
Nzg5NC4uYTRiNGJiMTA0YjRkODQwMTViOGFhNWI1M2U3ZGZhNzg4Y2VkMjVmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAKQEAgLTczLDcgKzczLDcg
QEAgdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9jdXN0b21EYXRhLndyaXRlU3RyaW5nKHR5cGUs
IHZhbHVlKTsKIH0KIAotdm9pZCBTdGF0aWNQYXN0ZWJvYXJkOjp3cml0ZURhdGEoY29uc3QgU3Ry
aW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFN0YXRpY1Bhc3RlYm9h
cmQ6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGRhdGEpCiB7CiAgICAgbV9ub25EZWZhdWx0RGF0YVR5cGVzLmFkZCh0eXBlKTsKICAg
ICBtX2N1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIFdURk1vdmUoZGF0YSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCmluZGV4IGMwOWI2ZGUzMWYyZWRlYmUw
MTg4ZGM5YzQ2NmEyNzFlMWI4YjllMTQuLmVkZDcxMzYyM2YwNmQyMmIzOGU4MzJhMjgzN2ZlNjY5
OTlkZmQ3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3Rl
Ym9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgK
QEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBTdGF0aWNQYXN0
ZWJvYXJkIGZpbmFsIDogcHVibGljIFBhc3RlYm9hcmQgewogcHVibGljOgpAQCAtNTIsNyArNTIs
NyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3Ry
aW5nJiB0eXBlKSBmaW5hbDsKIAogICAgIHZvaWQgd3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpIGZpbmFsOwotICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0
IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICB2b2lkIHdyaXRl
RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRh
dGEpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIGRhdGEpOwogICAgIHZvaWQgY2xlYXIoKSBmaW5hbDsKICAgICB2b2lk
IGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaAppbmRleCA2ODc5NTkwMGM1YWRmOWNjOTA0NWUw
ZWFiYjIyYjE4ZmE2Njk2MzE0Li4xZDY1YmM0MDNhZDg1MjQzYzY3MjVlNzA0NDhkNmNkYWRjY2Nj
ZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5n
SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZv
LmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IE5vd1BsYXlp
bmdJbmZvQXJ0d29yayB7CiAgICAgU3RyaW5nIHNyYzsKICAgICBTdHJpbmcgbWltZVR5cGU7Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm93
UGxheWluZ0luZm9BcnR3b3JrJiBvdGhlcikgY29uc3QKICAgICB7CkBAIC02Nyw3ICs2Nyw3IEBA
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJ
bmZvQXJ0d29yaz4gTm93UGxheWluZ0luCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtaW1lVHlw
ZSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFn
ZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGltYWdlRGF0YSkpCiAgICAgICAgIHJldHVybiB7IH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmls
ZVJlYWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1
ZGlvRmlsZVJlYWRlckNvY29hLmNwcAppbmRleCBlOGIxOWJmMzRlYmEyM2I4NTcyMDdiZTg4Y2Ux
YjQ1YmY4ZjJjY2MzLi5mMzIxNDI5NTFiMTc5OTZlNmNlMTY3NTYzMTZiZmQ0NzNmYWE0ZWRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVS
ZWFkZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
QXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgY2xhc3MgQXVkaW9G
aWxlUmVhZGVyV2ViTURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBwdWJs
aWM6Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAgICAgUmVm
PEF1ZGlvVHJhY2tQcml2YXRlV2ViTT4gbV90cmFjazsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCmluZGV4IDliM2VjYTFhMTU0NDk4YzBl
N2UzNGM3YzkxMzM2OTVjY2Q5NDdlN2IuLjQ0NzNlYzI4ZDA0YzU0MzYzMjNjMDdkMzdiZjJjOWNk
N2RlZDIxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5j
b2RlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5jcHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyQ0Y6OmVuZEFycmF5
KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxT
aGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgYXV0
byBkYXRhID0gYWRvcHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgbV9yb290RGljdGlvbmFyeS5nZXQoKSwga0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0
X3YxXzAsIDAsIG51bGxwdHIpKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQo
KSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9LZXllZEVuY29kZXJDRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRF
bmNvZGVyQ0YuaAppbmRleCBmYWI2NmZjYmNhOGY0NzE5N2U5OGQ3OWJmMDJlZjgxNjFhNDI3NmE0
Li5mNTg2YzAyYmIxNWJmMzliNzI4M2ZiYTlhYTVlOGExMjZiODRmZWZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVi
bGljOgogICAgIH5LZXllZEVuY29kZXJDRigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOworICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CiAK
ICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwg
c2l6ZV90KSBmaW5hbDsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJv
b2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVk
QnVmZmVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0Yu
Y3BwCmluZGV4IDQ3YzEwZjk4MDIzNGM5YWJjNjA4NGVjMjEwNDU2ZjZiMTU0ODE5MTEuLjRjYmVm
MTI3OTBkNGE0MzRkNDUxMWIyM2M5NjAxNTM2ZTkyNzAyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYg
ZGF0YSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoQ0ZE
YXRhUmVmIGRhdGEpCiB7CiAgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGFwcGVuZChk
YXRhKTsKQEAgLTQyLDcgKzQyLDcgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRh
UmVmIGRhdGEpCiAvLyBVc2luZyBGb3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZlbiBtb3JlIGVm
ZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28gb25seSB1c2Ug
dGhpcyB2ZXJzaW9uIGZvciBub24tRm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5EQVRJT04pCi1S
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEo
KSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEo
KSBjb25zdAogewogICAgIGlmIChoYXNPbmVTZWdtZW50KCkpIHsKICAgICAgICAgaWYgKGF1dG8q
IGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0u
c2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKQEAgLTUyLDEyICs1MiwxMiBAQCBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAog
fQogI2VuZGlmCiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0
YVJlZiBkYXRhKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNyZWF0ZShDRkRhdGFSZWYgZGF0YSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoZGF0YSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIoZGF0YSkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9y
eU5vdE5lZWRlZFNvb24oKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpoaW50
TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRy
eSA6IG1fc2VnbWVudHMpIHsKICAgICAgICAgaWYgKGVudHJ5LnNlZ21lbnQtPmhhc09uZVJlZigp
KSB7CkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVl
ZGVkU29vbigpIGNvbnN0CiAgICAgfQogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENG
RGF0YVJlZiBkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRh
UmVmIGRhdGEpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9zZWdtZW50cy5hcHBlbmQo
e21fc2l6ZSwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShkYXRhKX0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyLmgKaW5kZXggMDc5N2RmYmU4ZDAxOGJlNjM2MTc0NGM1OGY4OTJkZDU2ZWQ2ODljNS4uY2Jl
ODc3MWE0NWQ4NjJjYjVhYjA1ZWNhMzk5OTI3ZTA3ODM4ZjU0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVj
ZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZp
bmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxh
Y2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICAgICBDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzUmVxdWlyZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIubW0KaW5kZXggNDI5MGRiMTI4ZDAwMGE0MGVlZjcwZmQyOTQxZDYzNDQ5MDQ2ZGUwMy4u
MmVmMjcwMWZlNjc4YmY5YjkyZGIyMTJiYmVhNWM5MTVhM2ZjM2EyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXIubW0KQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIE5ldHdvcmtFeHRlbnNpb25D
b250ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQogICAgIHNlbWFwaG9yZS53YWl0KCk7
CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpy
ZXBsYWNlbWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE5ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAogewogICAg
IEFTU0VSVChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KG1fcmVwbGFjZW1lbnREYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCmluZGV4
IDA2OGNkY2IzODNmNDIzNjVhYzMyNjRlMjI5YTZkNjNiYzJiNGFiZDYuLjY3OWFlOTMyOTUxN2Ux
ZjM5NDNiYTU3NjJhYzhmNTZlODYwYzhjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaApA
QCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZERhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGlu
Z0RhdGEoKSBvdmVycmlkZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFj
ZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0
IG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCmluZGV4IGI0NjFm
OTc1MzZkZTNhMTU4MTNhNTgyN2I4NjcxMzhiOTZkNGYzOGMuLjFjOTYwNDcxNmI0MjY5M2Q1ZTQ2
YzJlMjNlOTQxZGEwMGM4M2U0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCkBAIC0x
MDksNyArMTA5LDcgQEAgdm9pZCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6ZmluaXNo
ZWRBZGRpbmdEYXRhKCkKICAgICB1cGRhdGVGaWx0ZXJTdGF0ZSgpOwogfQogCi1SZWY8U2hhcmVk
QnVmZmVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkg
Y29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVu
dEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZGlkQmxvY2tE
YXRhKCkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0
YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0
ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJk
Q29jb2EubW0KaW5kZXggNmY1MGYwMzVhZGZlYWE5ZGJhZGIwMmFjYWQ4ZjA2N2M3ODNmY2JlNS4u
YjgxNzA4MTdjZWM1OWUyMmQzYzBlOWE3OGYxNDZjMDMzZTRjMTY2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpAQCAtNDcsNyArNDcs
NyBAQCBzdGF0aWMgTlNCaXRtYXBJbWFnZUZpbGVUeXBlIGJpdG1hcFBOR0ZpbGVUeXBlKCkKIH0K
ICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLS8vIE1ha2luZyB0aGlzIG5vbi1pbmxpbmUgc28g
dGhhdCBXZWJLaXQgMidzIGRlY29kaW5nIGRvZXNuJ3QgaGF2ZSB0byBpbmNsdWRlIFNoYXJlZEJ1
ZmZlci5oLgorLy8gTWFraW5nIHRoaXMgbm9uLWlubGluZSBzbyB0aGF0IFdlYktpdCAyJ3MgZGVj
b2RpbmcgZG9lc24ndCBoYXZlIHRvIGluY2x1ZGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci5oLgog
UGFzdGVib2FyZFdlYkNvbnRlbnQ6OlBhc3RlYm9hcmRXZWJDb250ZW50KCkgPSBkZWZhdWx0Owog
UGFzdGVib2FyZFdlYkNvbnRlbnQ6On5QYXN0ZWJvYXJkV2ViQ29udGVudCgpID0gZGVmYXVsdDsK
IApAQCAtMjExLDExICsyMTEsMTEgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXNG
b3JMZWdhY3lVbnNhZmVCaW5kaW5ncygpCiB9CiAKICNpZiBQTEFURk9STShNQUMpCi1zdGF0aWMg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVy
JiB0aWZmQnVmZmVyKQorc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkco
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZlcikKIHsKICAgICBhdXRvIGltYWdlID0g
YWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZl
ci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIE5TRGF0YSAq
cG5nRGF0YSA9IFtpbWFnZSByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpiaXRtYXBQTkdGaWxlVHlw
ZSgpIHByb3BlcnRpZXM6QHsgfV07Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShwbmdEYXRhKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0
YSk7CiB9CiAjZW5kaWYKIApAQCAtMzE2LDcgKzMxNiw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3Rl
Ym9hcmQ6OnJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCkKICAgICByZXR1cm4gY29jb2FUeXBl
czsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRC
dWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlD
aGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmJ1ZmZlckZvclR5cGUodHlwZSwgbV9w
YXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQppbmRleCA5ODA1NDdiOGNjNGM0YTg4Y2Ex
NTVjYmIxNzgyMGFmODVlMmRjOTY5Li4yNWYzMTFmMjU4OWI4MmVmZDI1NzdhMDg4OTRiNmM1ZTA2
NmI5Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRC
dWZmZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRC
dWZmZXJDb2NvYS5tbQpAQCAtODgsMzcgKzg4LDM3IEBAIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShOU0RhdGEgKmRh
dGEpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKE5TRGF0YSAqZGF0YSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoYnJpZGdlX2Nhc3QoZGF0YSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKGJyaWRnZV9jYXN0KGRhdGEpKSk7CiB9CiAKLXZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjphcHBlbmQoTlNEYXRhICpkYXRhKQogewogICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAg
ICByZXR1cm4gYXBwZW5kKGJyaWRnZV9jYXN0KGRhdGEpKTsKIH0KIAotUmV0YWluUHRyPE5TRGF0
YT4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0
cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1
cm4gYnJpZGdlX2Nhc3QoY3JlYXRlQ0ZEYXRhKCkpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRy
PENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewogICAgIGlm
ICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0
ZShudWxscHRyLCBudWxscHRyLCAwKSk7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KG1fc2VnbWVu
dHNbMF0uc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkpOwogfQogCi1SZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAg
IGlmIChhdXRvIHJlc291cmNlRGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpm
aWxlUGF0aF0pCi0gICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
cmVzb3VyY2VEYXRhKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291
cmNlRGF0YSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJldGFpblB0cjxOU0FycmF5PiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKK1JldGFpblB0cjxOU0FycmF5
PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkobV9zZWdtZW50cywgW10gKGF1dG8mIHNlZ21lbnQpIHsK
ICAgICAgICAgcmV0dXJuIHNlZ21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaApp
bmRleCBmYmMyODNmYmMzMzY5YmY4MjdlMzE2OTk0YzRjOTRlMDYzNjNjYjgxLi4yZGU0MTkzNGRh
MTk4NzlkNzVjMGRmOGE4OWU2NGU1OTljMjlhZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKQEAgLTQ2LDcgKzQ2LDcg
QEAgY2xhc3MgTG9nZ2VyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBDRE1JbnN0YW5jZVNl
c3Npb247CiBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKIApAQCAtNTQsNyArNTQs
NyBAQCBjbGFzcyBDRE1JbnN0YW5jZUNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1J
bnN0YW5jZUNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkNETUluc3RhbmNlQ2xpZW50
KCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRp
b25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNv
bnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiB9OwogCiAv
LyBKYXZhU2NyaXB0J3MgaGFuZGxlIHRvIGEgQ0RNSW5zdGFuY2UsIG11c3QgYmUgdXNlZCBmcm9t
IHRoZQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUs
IFN1Y2Nlc3NDYWxsYmFjayYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlcnZlckNlcnRp
ZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTdG9y
YWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPENETUluc3RhbmNl
U2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXgg
MzdjZDA3YzdiZjJkYzc1ZTQxZmQ1YzZjN2RlY2Y0M2UxMDM5ZTExNC4uZDI1OTIyNWJhOWUwMmE2
NGQwY2VjZDYxNTFmZGY5M2Y0ZjI0NjZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTQz
LDE2ICs0MywxNiBAQCBjbGFzcyBMb2dnZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3Mg
Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPENETUluc3Rh
bmNlU2Vzc2lvbkNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkNETUluc3RhbmNlU2Vz
c2lvbkNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHVzaW5nIEtleVN0YXR1cyA9IENETUtleVN0
YXR1czsKLSAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZjxT
aGFyZWRCdWZmZXI+LCBLZXlTdGF0dXM+PjsKKyAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBW
ZWN0b3I8c3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIG1lc3NhZ2UpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2Uo
Q0RNTWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSA9IDA7
CiAgICAgdXNpbmcgUGxhdGZvcm1EaXNwbGF5SUQgPSB1aW50MzJfdDsKICAgICB2aXJ0dWFsIFBs
YXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpID0gMDsKQEAgLTc4LDEzICs3OCwxMyBAQCBwdWJs
aWM6CiAgICAgICAgIFN1Y2NlZWRlZCwKICAgICB9OwogCi0gICAgdXNpbmcgTGljZW5zZUNhbGxi
YWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIFN1
Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdExpY2Vuc2Uo
TGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpID0gMDsKKyAgICB1c2luZyBMaWNl
bnNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5k
aXZpZHVhbGl6YXRpb24sIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmKSA9IDA7CiAKICAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBDRE1JbnN0YW5jZVNl
c3Npb25DbGllbnQ6OktleVN0YXR1c1ZlY3RvcjsKLSAgICB1c2luZyBNZXNzYWdlID0gc3RkOjpw
YWlyPE1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgTWVzc2FnZSA9
IHN0ZDo6cGFpcjxNZXNzYWdlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAg
ICB1c2luZyBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wgc2Vzc2lvbldhc0Nsb3NlZCwgc3RkOjpvcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hh
bmdlZEtleXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBzdGQ6
Om9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+Owot
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBM
aWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNh
bGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgPSAwOwogCiAgICAgZW51bSBjbGFz
cyBTZXNzaW9uTG9hZEZhaWx1cmUgOiB1aW50OF90IHsKICAgICAgICAgTm9uZSwKQEAgLTEwMCw3
ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sgPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVNlc3Npb24oY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpID0gMDsKIAotICAg
IHVzaW5nIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEtleVN0YXR1c1ZlY3RvciYmLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmLCBT
dWNjZXNzVmFsdWUpPjsKKyAgICB1c2luZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChLZXlTdGF0dXNWZWN0b3ImJiwgc3RkOjpvcHRpb25hbDxSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYsIFN1Y2Nlc3NWYWx1ZSk+OwogICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5
cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lk
IHN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5o
CmluZGV4IGNjNmRjN2YxNDBjZDY3ZDJiN2I4NGY2YWIyYzI4NDMxNmRmZGRjY2YuLjUyYTYxNDhj
ODNjZDUzOTNjOGY4NzRlZDg1YWQ4YmYyN2U1YmU1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKQEAgLTczLDggKzczLDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0
aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6
ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcApp
bmRleCBmMjE4Zjk3OTA0ZmJiYTQ5ZjFlYmRmNDhlMjA1ZmU3M2RmYWZiNjQ4Li40YmE3NWJmMDBk
OWY3MTNiNWFmYmJhNzkzNDAxOTcxNmNkOGYwMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCkBAIC0yMjcsNyArMjI3LDcg
QEAgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgS2V5U3RvcmU6OmNvbnZlcnRU
b0pTS2V5U3RhdHVzVmVjdG9yKCkgY29uc3QKICAgICBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0
YXR1c1ZlY3RvciBrZXlTdGF0dXNWZWN0b3I7CiAgICAga2V5U3RhdHVzVmVjdG9yLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkobnVtS2V5cygpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGtleSA6IG1f
a2V5cykKLSAgICAgICAga2V5U3RhdHVzVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChzdGQ6OnBhaXI8
UmVmPFNoYXJlZEJ1ZmZlcj4sIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzPiB7IGtleS0+
aWRBc1NoYXJlZEJ1ZmZlcigpLCBrZXktPnN0YXR1cygpIH0pOworICAgICAgICBrZXlTdGF0dXNW
ZWN0b3IudW5jaGVja2VkQXBwZW5kKHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4sIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzPiB7IGtleS0+aWRBc1NoYXJlZEJ1ZmZl
cigpLCBrZXktPnN0YXR1cygpIH0pOwogICAgIHJldHVybiBrZXlTdGF0dXNWZWN0b3I7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVBy
b3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5o
CmluZGV4IGE1ODRiNmNkMjY2YjA5ODA5MDI1NGQ3ZGNiZGRiZjYwZDkzMzFmYmIuLmUxZTA5OGEx
ZDVmNWZmYzY1YzJhNDhmYTQwYWE5NzJmZTg5ZTFlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaApAQCAtNjEsNyArNjEsNyBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBLZXlIYW5kbGUoc3Rh
dHVzLCBXVEZNb3ZlKGtleUlEKSwgV1RGTW92ZShrZXlIYW5kbGVWYWx1ZSkpKTsKICAgICB9Ci0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gaWRBc1NoYXJlZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG1faWQuZGF0YSgpLCBtX2lkLnNpemUoKSk7IH0KKyAgICBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaWRBc1NoYXJlZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1faWQuZGF0YSgpLCBtX2lkLnNpemUoKSk7IH0KIAogICAg
IGJvb2wgdGFrZVZhbHVlSWZEaWZmZXJlbnQoS2V5SGFuZGxlVmFsdWVWYXJpYW50JiYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGls
aXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRp
bGl0aWVzLmNwcAppbmRleCA2NjcyNmY3NGU1OGQ4ZTEyMmNiYzkwYjg2N2I5YmY5NjE3NzgwM2Q0
Li5mY2E2ZjIzODhhNTZhNmExYzcyNDcwZTVhNDZmZGQyOGYwNzM3NTBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5j
cHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgQ0RN
VXRpbGl0aWVzIHsKIAotUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2Jq
ZWN0KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBGYWls
IG9uIGxhcmdlIGJ1ZmZlcnMgd2hvc2Ugc2l6ZSBkb2Vzbid0IGZpdCBpbnRvIGEgMzItYml0IHVu
c2lnbmVkIGludGVnZXIuCiAgICAgc2l6ZV90IHNpemUgPSBidWZmZXIuc2l6ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMu
aAppbmRleCA3NGY1MTViMGJkMmE4NzE2OGVlZjI0YjE4Zjk1ZGVhYmVlODI4ZTZjLi5mY2Y1YmRk
YTdjNTk3ZDNjM2FjMzQ5ZWUxNzg5ZTRhZDZlMGM5NTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaApAQCAtMzUsMTEg
KzM1LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIENETVV0aWxpdGllcyB7
CiAKLVJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZm
ZXImKTsKK1JlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApp
bmRleCAyYWRkZWU3ZWU4YjRlZWI4MzVmYTcwYzI0ZjFkNGVmODlkNzM0M2VmLi4zMWE5ZmRmYTAy
ZDZkMDBjYTI2MTgyNTJkZWQ5MzUzMTNkYzU4YWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJL
ZXkuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VMaWNlbnNlUmVsZWFz
ZUFja25vd2xlZGdlbWVudEZvcm1hdChjb25zdCBKU09OOjpPYmplY3QmIHJvb3QpCiAvLyBdOwog
CiAvLyBUaGlzIGZ1bmN0aW9uIGV4dHJhY3RzIHRoZSBLZXlJZHMgY291bnQgYW5kIHRoZSBsb2Nh
dGlvbiBvZiB0aGUgZmlyc3QgS2V5SWQgaW4gaW5pdERhdGEgYnVmZmVyLgotc3RhdGljIHN0ZDo6
cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5p
dERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBzdGQ6OnBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIHN0ZDo6cGFpcjx1
bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCgwLCAwKTsKIApAQCAtMTg5LDEzICsxODksMTMg
QEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2Nh
dGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBjaGVja3Mg
aWYgdGhlIGluaXREYXRhIHNoYXJlZEJ1ZmZlciBpcyBhIHZhbGlkIENFTkMgaW5pdERhdGEuCi1z
dGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQor
c3RhdGljIGJvb2wgaXNDZW5jSW5pdERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
aW5pdERhdGEpCiB7CiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFw
ID0gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAg
cmV0dXJuICgoa2V5SWRzTWFwLmZpcnN0KSAmJiAoa2V5SWRzTWFwLnNlY29uZCkpOwogfQogCi1z
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAK
QEAgLTIzMCw3ICsyMzAsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlk
c0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogICAgIHJldHVybiBr
ZXlJZHMudGFrZSgpOwogfQogCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlk
RnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGljIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIga2V5SWRzOwogCkBAIC0zOTAsNyArMzkwLDcgQEAgYm9vbCBDRE1Qcml2YXRlQ2xl
YXJLZXk6OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29s
IENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25z
dAogewogICAgIC8vIFZhbGlkYXRlIHRoZSBpbml0RGF0YSBidWZmZXIgYXMgYW4gSlNPTiBvYmpl
Y3QgaW4ga2V5aWRzIGNhc2UuCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGluaXREYXRhVHlwZSwgImtleWlkcyIpICYmIENETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0
KGluaXREYXRhKSkKQEAgLTQwNyw3ICs0MDcsNyBAQCBib29sIENETVByaXZhdGVDbGVhcktleTo6
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlQ2xl
YXJLZXk6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29u
c3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlQ2xlYXJLZXk6OnNh
bml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNv
bnN0CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhlIHJlc3BvbnNlIGJ1ZmZlciBhcyBhbiBKU09OIG9i
amVjdC4KICAgICBpZiAoIUNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KHJlc3BvbnNlKSkK
QEAgLTQzMyw3ICs0MzMsNyBAQCB2b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OmluaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cgogICAgIGNhbGxiYWNr
KHN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2sp
Cit2b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAg
ICAvLyBSZWplY3Qgc2V0dGluZyBhbnkgc2VydmVyIGNlcnRpZmljYXRlLgogICAgIGNhbGxiYWNr
KEZhaWxlZCk7CkBAIC00NTUsNyArNDU1LDcgQEAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4g
Q0RNSW5zdGFuY2VDbGVhcktleTo6Y3JlYXRlU2Vzc2lvbigpCiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleSgqdGhpcykpOwogfQogCi12b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBM
aWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJL
ZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBzdGF0aWMgdWludDMyX3Qgc19zZXNzaW9uSWRWYWx1
ZSA9IDA7CiAgICAgKytzX3Nlc3Npb25JZFZhbHVlOwpAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBj
b25zdCBBdG9tU3RyaW5nJiBpCiAgICAgICAgIH0pOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vz
c2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNl
bnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxi
YWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxi
YWNrKQogewogI2lmIExPR19ESVNBQkxFRAogICAgIC8vIFdlIG9ubHkgdXNlIHRoZSBzZXNpb24g
SUQgZm9yIGRlYnVnIGxvZ2dpbmcuIFRoZSB2ZXJib3NlIHByZXByb2Nlc3NvciBjaGVja3MgYXJl
IGJlY2F1c2UKQEAgLTU2OCw3ICs1NjgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFy
S2V5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZQogICAg
IEFTU0VSVChzZXNzaW9uSWQgPT0gbV9zZXNzaW9uSUQpOwogCiAgICAgYXV0byBkaXNwYXRjaENh
bGxiYWNrID0KLSAgICAgICAgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sICZjYWxsYmFj
a10oS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzVmVjdG9yLCBzdGQ6Om9wdGlvbmFsPFJlZjxT
aGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZXNzKSB7CisgICAgICAg
IFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCAmY2FsbGJhY2tdKEtleVN0YXR1c1ZlY3Rv
ciYmIGtleVN0YXR1c1ZlY3Rvciwgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoCiAgICAgICAgICAgICAgICAgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp3
ZWFrVGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBrZXlTdGF0dXNWZWN0b3Ig
PSBXVEZNb3ZlKGtleVN0YXR1c1ZlY3RvciksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBz
dWNjZXNzXSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQpA
QCAtNTgxLDcgKzU4MSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlbW92
ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlCiAgICAgLy8gQ29uc3Ry
dWN0IHRoZSBLZXlTdGF0dXNWZWN0b3Igb2JqZWN0LCByZXByZXNlbnRpbmcgcmVsZWFzZWQga2V5
cywgYW5kIHRoZSBtZXNzYWdlIGluIHRoZQogICAgIC8vICdsaWNlbnNlIHJlbGVhc2UnIGZvcm1h
dC4KICAgICBLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzVmVjdG9yID0gbV9rZXlTdG9yZS5hbGxL
ZXlzQXMoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXM6OlJlbGVhc2VkKTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtZXNzYWdlOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBtZXNzYWdlOwogICAgIHsKICAgICAgICAgLy8gQ29uc3RydWN0IEpTT04gdGhhdCByZXBy
ZXNlbnRzIHRoZSAnbGljZW5zZSByZWxlYXNlJyBmb3JtYXQsIGNyZWF0aW5nIGEgJ2tpZHMnIGFy
cmF5CiAgICAgICAgIC8vIG9mIGJhc2U2NFVSTC1lbmNvZGVkIGtleSBJRHMgZm9yIGFsbCBrZXlz
IHRoYXQgd2VyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBzZXNzaW9uLgpAQCAtNTk1LDE0ICs1OTUs
MTQgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKICAgICAgICAgICAgIHJvb3RPYmplY3QtPnNl
dEFycmF5KCJraWRzIiwgV1RGTW92ZShhcnJheSkpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8g
Q29weSB0aGUgSlNPTiBkYXRhIGludG8gYSBTaGFyZWRCdWZmZXIgb2JqZWN0LgorICAgICAgICAv
LyBDb3B5IHRoZSBKU09OIGRhdGEgaW50byBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgb2JqZWN0
LgogICAgICAgICBTdHJpbmcgbWVzc2FnZVN0cmluZyA9IHJvb3RPYmplY3QtPnRvSlNPTlN0cmlu
ZygpOwogICAgICAgICBDU3RyaW5nIG1lc3NhZ2VDU3RyaW5nID0gbWVzc2FnZVN0cmluZy51dGY4
KCk7CiAgICAgICAgIG1lc3NhZ2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtZXNzYWdlQ1N0cmlu
Zy5kYXRhKCksIG1lc3NhZ2VDU3RyaW5nLmxlbmd0aCgpKTsKICAgICB9CiAKICAgICBtX2tleVN0
b3JlLnVucmVmQWxsS2V5cygpOwotICAgIGRpc3BhdGNoQ2FsbGJhY2soV1RGTW92ZShrZXlTdGF0
dXNWZWN0b3IpLCBSZWY8U2hhcmVkQnVmZmVyPigqbWVzc2FnZSksIFN1Y2Nlc3NWYWx1ZTo6U3Vj
Y2VlZGVkKTsKKyAgICBkaXNwYXRjaENhbGxiYWNrKFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KCptZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNj
ZWVkZWQpOwogfQogCiB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpzdG9yZVJlY29y
ZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCmluZGV4
IDljMDc0N2RjMWJkOGU2N2YzYmE4NjRkOWI4MTEzMzc2MjVjOGE2NzkuLjllMjdmZTkxMmM0ZGEw
NjdmYjI2Y2FmYmM3ZjZhNjUxZGE0NzUyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaApA
QCAtODYsOCArODYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZp
bmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsK
ICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBv
cnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0
IGZpbmFsOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3Qg
U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNv
bnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmlu
YWw7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2Uo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5h
bDsKIH07CiAKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgIC8vIENETUluc3RhbmNlCiAg
ICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6Q2xlYXJLZXk7IH0KICAgICB2b2lkIGluaXRpYWxp
emVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxs
b3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0Nh
bGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVy
Q2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFj
ayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikg
ZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbDsKICAgICBS
ZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CkBAIC0xMDks
OCArMTA5LDggQEAgY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkgZmluYWwgOiBwdWJs
aWMgQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgewogcHVibGljOgogICAgIENETUluc3RhbmNlU2Vz
c2lvbkNsZWFyS2V5KENETUluc3RhbmNlQ2xlYXJLZXkmIHBhcmVudCkKICAgICAgICAgOiBDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eShwYXJlbnQpIHsgfQotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2Uo
TGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsK
KyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7
CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vz
c2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2
b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVT
ZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKaW5kZXggN2FhOTRiNGI0
YmMyY2JmOTIyYWFkYTU4ODc1NzNkNzVkN2MwYmM2Ny4uN2JmMDA4MzJhNDAyZWVhZDU3MjNjYTQy
OGU5YWZiN2NjNDFhMGM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCkBAIC0xMzksOSArMTM5LDkgQEAgdm9p
ZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmRBcnJheSgpCiAgICAgbV9lbmNvZGVyIDw8IFR5cGU6
OkVuZEFycmF5OwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRF
bmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQogewotICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVy
U2l6ZSgpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZl
cigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rl
ckdlbmVyaWMuaAppbmRleCA1ODA1ODNiODM4MTBlZGU1ZDJjOWM2NWE4MzkzYjMyNmQ4N2IyNzQ3
Li5lY2Y0ZTA4YzliOTkxYWRlMjczYmQ0NGM2MGJiMTVmZTAxNjM1YjE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaApA
QCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEtleWVkRW5jb2Rl
ckdlbmVyaWMgZmluYWwgOiBwdWJsaWMgS2V5ZWRFbmNvZGVyIHsKIHB1YmxpYzoKQEAgLTU3LDcg
KzU3LDcgQEAgcHVibGljOgogICAgIH07CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZW5jb2Rl
Qnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRl
OwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rlckds
aWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNw
cAppbmRleCBlNmQ3OGQ1MjgzZWY4ZTUzYzdiZGIwYmI4MDRlOWUyN2UxMGExNzkzLi43MGQyNGMx
MTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTEzMiwxMiArMTMyLDEy
IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2xpYjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5y
ZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVu
Y29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVu
Y29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgZ19hc3NlcnQobV92YXJpYW50QnVp
bGRlclN0YWNrLmxhc3QoKSA9PSAmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHVmFy
aWFudD4gdmFyaWFudCA9IGdfdmFyaWFudF9idWlsZGVyX2VuZCgmbV92YXJpYW50QnVpbGRlcik7
CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGRhdGEgPSBnX3ZhcmlhbnRfZ2V0X2RhdGFfYXNfYnl0ZXMo
dmFyaWFudC5nZXQoKSk7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRh
LmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5dGVzX2dldF9zaXpl
KGRhdGEuZ2V0KCkpKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51
bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQo
KSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAppbmRleCBjZTEzNjQ5NmM0ZTEzZWFjMTQ5
ZWE2MTg5NWM1NDE0MGZmZDU5NmY3Li5lNTY0MmJjZjY3MGNlMjU5OWZjMDRkZjcyOWUyYjRjMWY4
MjExZjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5j
b2RlckdsaWIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rl
ckdsaWIuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckdsaWIo
KTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBl
bmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCmluZGV4IDc4ODkxN2Rh
ZWY5Njg5Y2E3ZWU3NDRlMWE0MDYxNWRjNDliMTM5MDUuLjkzN2QxZmI2ZjBjOGQ3YjUxZjE4ZmYx
NTU2MGIzYjk0YTc0ZjYxYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAtMjYsMjggKzI2LDI4IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoR0J5dGVzKiBieXRlcykKK0Zy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoR0J5dGVzKiBieXRl
cykKIHsKICAgICBBU1NFUlQoYnl0ZXMpOwogICAgIG1fc2l6ZSA9IGdfYnl0ZXNfZ2V0X3NpemUo
Ynl0ZXMpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShH
UmVmUHRyPEdCeXRlcz4oYnl0ZXMpKSB9KTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoR0J5dGVzKiBieXRlcykKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoR0J5dGVzKiBieXRlcykKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGJ5dGVzKSk7CiB9CiAKLUdSZWZQdHI8
R0J5dGVzPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdAorR1Jl
ZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKIHsKICAgICBy
ZWYoKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdf
d2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKGdwb2ludGVyIGRhdGEpIHsKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwot
ICAgIH0sIGNvbnN0X2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CisgICAg
ICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOworICAgIH0sIGNv
bnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpKTsKICAgICByZXR1cm4gYnl0ZXM7CiB9CiAK
LVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC02MSw3ICs2MSw3IEBAIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMuZ2V0KCksIHNpemUpOworICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50cy5nZXQoKSwgc2l6ZSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5k
ZXggMTI1ODYyZTcyYTlmOWQ4Njk2Y2UxNmNhY2ZmNmJmNzIwN2I0NWNlNC4uNGU5NDlkZmFiOTc2
NWEyYTA3YzQ4NzhhYmVlMTAzZmJhZjIxZjU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0
ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIElu
dGUKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBp
bnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIp
KTsKIH0KIAotUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBi
b29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljKQorUmVmPEZvbnQ+IEZvbnQ6
OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9y
aWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJ
dGFsaWMpCiB7CiAgICAgYm9vbCB3cmFwcGluZzsKICAgICBhdXRvIGN1c3RvbUZvbnREYXRhID0g
Q2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoZm9udEZhY2VEYXRhLmdldCgpLCB7IH0s
IHdyYXBwaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA0
YzVjOGEzOTYzM2EwNjQ3ODk4YjUyYTM5NDUyNWZiMWFmYjEyZThhLi44MmViYTczYmFjNGM3NmZl
YTBiYjYwZWJhNDQzNjgyZDIyYzdmZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZv
bnRDYWNoZTsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEdseXBoUGFnZTsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBH
bHlwaERhdGE7CiAKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgVmlz
aWJpbGl0eSA6IGJvb2wgeyBWaXNpYmxlLCBJbnZpc2libGUgfTsKICAgICBlbnVtIGNsYXNzIE9y
aWVudGF0aW9uRmFsbGJhY2sgOiBib29sIHsgTm8sIFllcyB9OwogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4g
PSBPcmlnaW46OkxvY2FsLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLCBWaXNpYmls
aXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0
aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4gPSBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4g
Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6
T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRp
Y0l0YWxpYyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNp
emUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgfkZvbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCmluZGV4IGUyMzg0YjllZTRlY2U2MDFlZWQ3YTRj
MGIzZGJkZjk4YmU5NTMwOTMuLmZiYmNjYzQzNjg0NDc0OTA4M2NlODkxZjM2M2Y2Y2M0MGYyOTc0
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0
Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxh
dGZvcm1EYXRhLmgKQEAgLTIyMywxMyArMjIzLDEzIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0K
IAotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdDsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGxh
dGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNv
bnN0OwogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgQ3Jl
YXRpb25EYXRhIHsKLSAgICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZvbnRGYWNl
RGF0YTsKKyAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZm9udEZhY2VEYXRhOwogICAgICAgICBT
dHJpbmcgaXRlbUluQ29sbGVjdGlvbjsKICNpZiBQTEFURk9STShXSU4pCiAgICAgICAgIFJlZjxG
b250TWVtb3J5UmVzb3VyY2U+IG1fZm9udFJlc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IDRhODUzZWI2NDk1M2Q0YWU0ODM0Zjg3YzU0ODdh
Y2QzNjRjNTdkODEuLmUzMmEzNmM2MDc2MTkyMTY4YzZhMzc5MzE4Zjc4YWUxNzg5YzQ4MmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTEwNCw3ICsx
MDQsNyBAQCBib29sIEltYWdlOjppc1Bvc3RTY3JpcHRSZXNvdXJjZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBVUkwmIHVybCkKIH0KIAogCi1FbmNvZGVkRGF0YVN0YXR1cyBJbWFnZTo6
c2V0RGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQorRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2U6OnNldERhdGEoUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgbV9lbmNvZGVk
SW1hZ2VEYXRhID0gV1RGTW92ZShkYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmgKaW5kZXggNmEwODE2OTU3YWE5M2M0MTFhNTZjZDRjMmJjMjBkZDZkOTA0NGRl
Yy4uNjU1ZGZlNzNjZmY2YWQxZDA0ZjQ4YmMyMDE5ZWJiODA0MTdkNjEzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC03MCw3ICs3MCw3IEBAIGNsYXNzIEFm
ZmluZVRyYW5zZm9ybTsKIGNsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFz
cyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogc3RydWN0IExlbmd0aDsKIAogLy8gVGhpcyBjbGFzcyBnZXRzIG5vdGlm
aWVkIHdoZW4gYW4gaW1hZ2UgY3JlYXRlcyBvciBkZXN0cm95cyBkZWNvZGVkIGZyYW1lcyBhbmQg
d2hlbiBpdCBhZHZhbmNlcyBhbmltYXRpb24gZnJhbWVzLgpAQCAtMTI0LDcgKzEyNCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25z
dCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2aXJ0dWFsIEltYWdlT3JpZW50YXRpb24g
b3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2U7
IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIEVuY29kZWREYXRhU3RhdHVzIHNldERhdGEoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgRW5jb2RlZERhdGFTdGF0dXMgc2V0RGF0YShSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdmlydHVhbCBFbmNv
ZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChib29sIC8qYWxsRGF0YVJlY2VpdmVkKi8pIHsgcmV0
dXJuIEVuY29kZWREYXRhU3RhdHVzOjpVbmtub3duOyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyB1
dGkoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAvLyBudWxsIHN0cmluZyBpZiB1bmtub3du
CkBAIC0xMzMsOCArMTMzLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lE
ZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwgPSB0cnVlKSA9IDA7CiAKLSAgICBTaGFyZWRCdWZm
ZXIqIGRhdGEoKSB7IHJldHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KLSAgICBjb25z
dCBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWRJbWFnZURhdGEu
Z2V0KCk7IH0KKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgeyByZXR1cm4gbV9l
bmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQogCiAg
ICAgdmlydHVhbCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpOwogCkBAIC0yMDks
NyArMjA5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgQ29sb3Igc2luZ2xlUGl4ZWxTb2xp
ZENvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQogCiBwcml2YXRlOgotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fZW5jb2RlZEltYWdlRGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVkSW1hZ2VEYXRhOwogICAgIEltYWdlT2JzZXJ2ZXIqIG1f
aW1hZ2VPYnNlcnZlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fYW5pbWF0aW9uU3Rh
cnRUaW1lcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCYWNraW5nU3RvcmUuaAppbmRleCA0ZGRiNmRmODNlY2I4YjliNzk1N2Y0NjY0ZTE4NGYw
MDgxZTgxMDExLi5kZTMzZjFhZjQxMmRjMDhiMmI5NjFhMTk0OTQ1YzljYzkwYWE2NjI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0
b3JlLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgICAgIGJ1ZmZlci5ncm93KGJ1ZmZlclNpemUpOwotICAgICAgICBtX3BpeGVscyA9
IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAg
ICAgICBtX3BpeGVscyA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVh
dGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9j
YXN0PHVpbnQzMl90Kj4oY29uc3RfY2FzdDx1aW50OF90Kj4obV9waXhlbHMtPmRhdGEoKSkpOwog
ICAgICAgICBtX3NpemUgPSBzaXplOwogICAgICAgICBtX2ZyYW1lUmVjdCA9IEludFJlY3QoSW50
UG9pbnQoKSwgbV9zaXplKTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBwcml2YXRlOgogICAgIHsKICAg
ICAgICAgQVNTRVJUKCFtX3NpemUuaXNFbXB0eSgpICYmICFpc092ZXJTaXplKG1fc2l6ZSkpOwog
ICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyIHsgb3RoZXIubV9waXhlbHMtPmRhdGEoKSwg
b3RoZXIubV9waXhlbHMtPnNpemUoKSB9OwotICAgICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBtX3BpeGVs
cyA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShi
dWZmZXIpKTsKICAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90
Kj4oY29uc3RfY2FzdDx1aW50OF90Kj4obV9waXhlbHMtPmRhdGEoKSkpOwogICAgIH0KIApAQCAt
MjMzLDcgKzIzMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBQYWNrZWRDb2xvcjo6QVJH
QiB7IHJlc3VsdCB9LnZhbHVlOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50PiBtX3BpeGVsczsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQ+IG1fcGl4ZWxzOwogICAgIHVpbnQzMl90KiBtX3BpeGVsc1B0ciB7IG51bGxw
dHIgfTsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBJbnRSZWN0IG1fZnJhbWVSZWN0OyAvLyBU
aGlzIHdpbGwgYWx3YXlzIGp1c3QgYmUgdGhlIGVudGlyZSBidWZmZXIgZXhjZXB0IGZvciBHSUYg
YW5kIFBORyBmcmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZURlY29kZXIuY3BwCmluZGV4IDA4NjllOTlhMDA4ODZmN2NkMTIxODZmZTMxNjFkZTA0N2Zh
NTEzNjEuLjdjNTQ5NDdmNGQ4MTQwODU1OWNjNDVjNGFjNDlhMTliOWZjODZmOTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcApAQCAt
ODIsNyArODIsNyBAQCB2b2lkIEltYWdlRGVjb2Rlcjo6Y2xlYXJGYWN0b3JpZXMoKQogfQogI2Vu
ZGlmCiAKLVJlZlB0cjxJbWFnZURlY29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQorUmVmUHRyPEltYWdlRGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKQogewogICAgIFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKaW5kZXggYTFhMDhhZGMxNzVk
NDRiYWE0NDJlNDRhOTRhYTk2N2EwNGY1ZjYwNy4uNmE4ZmZjYjYwZmMxMTU2ZWI4NDg3NmRlZmIw
N2NiYzBiMTE5ODQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VEZWNvZGVyLmgKQEAgLTM3LDEyICszNywxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIEltYWdlRGVjb2RlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZURl
Y29kZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7Cisg
ICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAK
ICAgICBlbnVtIGNsYXNzIE1lZGlhVHlwZSB7CkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgdXNpbmcgU3VwcG9ydHNNZWRpYVR5cGVGdW5jID0g
RnVuY3Rpb248Ym9vbChNZWRpYVR5cGUpPjsKICAgICB1c2luZyBDYW5EZWNvZGVUeXBlRnVuYyA9
IEZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nJik+OwotICAgIHVzaW5nIENyZWF0ZUltYWdlRGVj
b2RlckZ1bmMgPSBGdW5jdGlvbjxSZWZQdHI8SW1hZ2VEZWNvZGVyPihTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pPjsK
KyAgICB1c2luZyBDcmVhdGVJbWFnZURlY29kZXJGdW5jID0gRnVuY3Rpb248UmVmUHRyPEltYWdl
RGVjb2Rlcj4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik+OwogCiAgICAgc3RydWN0IEltYWdlRGVj
b2RlckZhY3RvcnkgewogICAgICAgICBTdXBwb3J0c01lZGlhVHlwZUZ1bmMgc3VwcG9ydHNNZWRp
YVR5cGU7CkBAIC0xMjksNyArMTI5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGxhdGZvcm1J
bWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwg
PSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVj
b2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQWxsRGF0YVJlY2VpdmVk
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6
ZV90KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmNwcAppbmRleCBkODFjNDgwMTkyODQ2ZGQ3ZTMyMWMyZGZiZmJmMWUwYzIwZGFhNjcx
Li4zMDc3NDMzMTVhNDFlY2ExYzliMmJjNzczZDA3OWVlNWQ0M2JhZjY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC03Miw3ICs3
Miw3IEBAIEltYWdlU291cmNlOjp+SW1hZ2VTb3VyY2UoKQogICAgIEFTU0VSVCgmbV9ydW5Mb29w
ID09ICZSdW5Mb29wOjpjdXJyZW50KCkpOwogfQogCi1ib29sIEltYWdlU291cmNlOjplbnN1cmVE
ZWNvZGVyQXZhaWxhYmxlKFNoYXJlZEJ1ZmZlciogZGF0YSkKK2Jvb2wgSW1hZ2VTb3VyY2U6OmVu
c3VyZURlY29kZXJBdmFpbGFibGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAg
ICBpZiAoIWRhdGEgfHwgaXNEZWNvZGVyQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtOTYsNyArOTYsNyBAQCBib29sIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZhaWxh
YmxlKFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbWFn
ZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQordm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIWRhdGEgfHwgIWVuc3VyZURlY29k
ZXJBdmFpbGFibGUoZGF0YSkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNCwxMyArMTA0LDEzIEBA
IHZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKICAgICBtX2RlY29kZXItPnNldERhdGEoKmRhdGEsIGFsbERhdGFSZWNlaXZl
ZCk7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEp
Cit2b2lkIEltYWdlU291cmNlOjpyZXNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSkKIHsKICAgICBtX2RlY29kZXIgPSBudWxscHRyOwogICAgIHNldERhdGEoZGF0YSwgaXNBbGxE
YXRhUmVjZWl2ZWQoKSk7CiB9CiAKLUVuY29kZWREYXRhU3RhdHVzIEltYWdlU291cmNlOjpkYXRh
Q2hhbmdlZChTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorRW5jb2Rl
ZERhdGFTdGF0dXMgSW1hZ2VTb3VyY2U6OmRhdGFDaGFuZ2VkKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIHNldERhdGEoZGF0YSwgYWxs
RGF0YVJlY2VpdmVkKTsKICAgICBjbGVhck1ldGFkYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCA4YWY1MDgwYTAwYTk5MTYwODBm
MWYwYjI3NzA3M2MyYTg1MzQ1MjU4Li44MTRmMGUxMmViYWE0OGY4NmFjYjUyMTk3M2MzMWQ1ZDM4
MmY2ZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQml0bWFw
SW1hZ2U7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbWFnZURlY29kZXI7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJ
bWFnZVNvdXJjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZVNvdXJjZT4sIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxJbWFnZVNvdXJjZT4gewogICAgIGZyaWVuZCBjbGFzcyBCaXRt
YXBJbWFnZTsKQEAgLTU2LDkgKzU2LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBJbWFnZVNvdXJjZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSkpOwogICAgIH0KIAotICAg
IHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsK
LSAgICB2b2lkIHJlc2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOwotICAgIEVuY29kZWREYXRh
U3RhdHVzIGRhdGFDaGFuZ2VkKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCByZXNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSk7CisgICAgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGJvb2wgaXNB
bGxEYXRhUmVjZWl2ZWQoKTsKIAogICAgIHVuc2lnbmVkIGRlY29kZWRTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZWNvZGVkU2l6ZTsgfQpAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIGZpcnN0RnJhbWVNZXRhZGF0YUNhY2hlSWZOZWVk
ZWQoVCYgY2FjaGVkVmFsdWUsIE1ldGFkYXRhVHlwZSwgVCAoSW1hZ2VGcmFtZTo6KmZ1bmN0b3Ip
KCkgY29uc3QsIEltYWdlRnJhbWU6OkNhY2hpbmcsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Vic2Ft
cGxpbmdMZXZlbD4mID0geyB9KTsKIAotICAgIGJvb2wgZW5zdXJlRGVjb2RlckF2YWlsYWJsZShT
aGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJlRGVjb2RlckF2YWlsYWJsZShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKICAgICBib29sIGlzRGVjb2RlckF2YWlsYWJsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlcjsgfQogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRh
KHNpemVfdCBmcmFtZUNvdW50LCBzaXplX3QgZXhjbHVkZUZyYW1lKTsKICAgICB2b2lkIGRlY29k
ZWRTaXplQ2hhbmdlZChsb25nIGxvbmcgZGVjb2RlZFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmluZGV4IDVhZGU3ZWY2OWUyOWE3N2YyYjg0MDkyOWU2
NGJlMGM0NGU1MTY0MzkuLjU3N2JkNTA4YTVjNDA5ZjRiZTllNGNmMjAyYjgxZTYxZTQ1YjQ0YWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKQEAgLTMwLDEy
ICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxNb2RlbD4gTW9kZWw6OmNy
ZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUs
IFVSTCB1cmwpCitSZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgTW9kZWwoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShtaW1lVHlwZSksIFdURk1vdmUodXJsKSkp
OwogfQogCi1Nb2RlbDo6TW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
U3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorTW9kZWw6Ok1vZGVsKFJlZjxTaGFyZWRCdWZmZXI+
JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogICAgIDogbV9kYXRhKFdURk1vdmUo
ZGF0YSkpCiAgICAgLCBtX21pbWVUeXBlKFdURk1vdmUobWltZVR5cGUpKQogICAgICwgbV91cmwo
V1RGTW92ZSh1cmwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKaW5k
ZXggOTE1NjBhZTg4ZmE2NGMyYTBjMTAwMTQxNGYzMjQxY2UwMDU2YTFmNC4uZTZiZGUxNjZmOTQ0
Y2RlN2RiMzI4YzI5NzZlYzY4MmFkYjZkMTAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Nb2RlbC5oCkBAIC0zOCwxMCArMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBNb2RlbCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVsPiB7CiBwdWJsaWM6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxNb2RlbD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB+TW9kZWwoKTsKIAotICAgIFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogICAgIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBlOyB9CiAgICAgY29uc3QgVVJMJiB1
cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIApAQCAtNDksOSArNDksOSBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFJlZlB0cjxNb2RlbD4gZGVj
b2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNb2RlbChSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOworICAgIGV4cGxpY2l0IE1vZGVsKFJl
ZjxTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKIAotICAgIFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBtX2RhdGE7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogICAgIFN0
cmluZyBtX21pbWVUeXBlOwogICAgIFVSTCBtX3VybDsKIH07CkBAIC05Myw3ICs5Myw3IEBAIFJl
ZlB0cjxNb2RlbD4gTW9kZWw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghdXJs
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBNb2RlbDo6Y3JlYXRlKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgqbWlt
ZVR5cGUpLCBXVEZNb3ZlKCp1cmwpKTsKKyAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSwgV1RGTW92ZSgqbWltZVR5cGUpLCBXVEZNb3Zl
KCp1cmwpKTsKIH0KIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IE1vZGVsJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRl
ci5oCmluZGV4IDc0NTljNTg1OGQyNDg3ZWYyYzVmZDM3MTczOTg2YjMzNzM0ZWMyOGEuLjg4Njkx
ZGMyNTZkNmRkNmM0NWY0NmUwMTU0OTY3NDI0NWFhMzUzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJj
ZUxvYWRlci5oCkBAIC01MSw4ICs1MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVk
aXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNw
b25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hh
cmVkQnVmZmVyPiYmKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICAvLyBU
aGlzIG1ldGhvZCBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50
IHVzZXMgU2hhcmVkQnVmZmVyLgorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBy
ZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgdXNlcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyLgogICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiBwbGF0Zm9ybSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBkYXRhUmVj
ZWl2ZWQocGxhdGZvcm0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkpOyB9CiAg
ICAgdmlydHVhbCB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRG
YWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcAppbmRleCA1NDk5ZjM3YTdmMzY0NmJkNWYzOTVhNDhiMDlkOTQxMWQ0Yzli
NjY0Li5kM2UxYjU4MDRlODVhOTkxMWNmMjBmY2VkMzRiZjI1NWEzMTQ0MzRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2
YXRlLmNwcApAQCAtMTMxOCw3ICsxMzE4LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpk
aWRSZWNlaXZlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBvcmlnaW5hbFNhbXBsZSkKICAgICB1
cGRhdGVIaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wKCk7CiB9CiAKLXZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZTo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlOjphcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogewogICAgIGFwcGVuZChidWZmZXItPmV4dHJhY3REYXRhKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5o
CmluZGV4IGVmODZhNDczNjkzNzFjODNlODgzYjI5YmJiNmI5YWI5NmVjYTVmMWQuLjZiN2Q5NWU1
MmI5ZGYwYzgxYWYzYmUxZDZkOWYzYzhlZDM5NTQxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAgLTQ5LDcg
KzQ5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgVGltZVJhbmdlczsKIAogZW51bSBj
bGFzcyBTb3VyY2VCdWZmZXJBcHBlbmRNb2RlIDogdWludDhfdCB7CkBAIC02OCw3ICs2OCw3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQcml2YXRl
KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpID0gMDsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgYXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBhcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpOwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cmVzZXRQYXJzZXJTdGF0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21NZWRp
YVNvdXJjZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1dPRkZGaWxlRm9ybWF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmNwcAppbmRleCBhMGU3M2IzZjNlYmNiM2M3ODBmZTM1MWU5ZDZhODBi
NmZiOTA1NWI0Li5iMzdlYmZjNTYyMDQ4ZmU2ZDc5NDFkMmU1Y2MxYmNhMWRjMTU3MWM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQu
Y3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCBrV29mZjJTaWduYXR1
cmUgPSAweDc3NGY0NjMyOyAvLyAid09GMiIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgYm9vbCByZWFkVUludDMyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90
JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50MzIoU2hhcmVk
QnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCiB7CiAgICAg
QVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVm
ZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBAIC00OSw3ICs0OSw3IEBAIHN0
YXRpYyBib29sIHJlYWRVSW50MzIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXpl
X3QmIG9mZnNldCwgdWludDMyX3QmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29s
IHJlYWRVSW50MTYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNl
dCwgdWludDE2X3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQxNihTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRf
QVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6
ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIGJv
b2wgd3JpdGVVSW50MTYoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IsIHVpbnQxNl90IHZhbHVlKQog
CiBzdGF0aWMgY29uc3QgdWludDMyX3Qgd29mZlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2NDY7IC8qICd3
T0ZGJyAqLwogCi1ib29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiti
b29sIGlzV09GRihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBzaXplX3Qgb2Zmc2V0ID0g
MDsKICAgICB1aW50MzJfdCBzaWduYXR1cmU7CkBAIC0xMjYsNyArMTI2LDcgQEAgcHJpdmF0ZToK
IH07CiAjZW5kaWYKIAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50
KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogewogICAgIEFTU0VS
VF9BUkcoc2ZudCwgc2ZudC5pc0VtcHR5KCkpOwogCkBAIC0yODMsNyArMjgzLDcgQEAgYm9vbCBj
b252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWlu
dDhfdD4mIHNmbnQpCiAgICAgcmV0dXJuIHNmbnQuc2l6ZSgpID09IHRvdGFsU2ZudFNpemU7CiB9
CiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IFVOVVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMjk0LDcgKzI5NCw3IEBAIGJvb2wgY29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikKIAogICAgIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0ZWRGb250OwogICAgIGlmIChjb252ZXJ0
V09GRlRvU2ZudCgqYnVmZmVyLCBjb252ZXJ0ZWRGb250KSkKLSAgICAgICAgYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOworICAg
ICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQp
KTsKICAgICBlbHNlCiAgICAgICAgIGJ1ZmZlciA9IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCmluZGV4IDc4YWM0YTdh
ZmZmNGQ0YmVlOWZkMDJjYWJlN2E5OGYyZmU3ZGRlODIuLjNkNTcwMTA3ZjI4Zjg1NDQ3NDFlMzQ5
NWMwMTYwN2U0ZGU5MDJkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvV09GRkZpbGVGb3JtYXQuaApAQCAtMzAsMTkgKzMwLDE5IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1
ZmZlcjsKIAogLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBidWZmZXIgaXMgYSBXT0ZGIGZpbGUuCi1i
b29sIGlzV09GRihDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7Citib29sIGlzV09GRihTaGFyZWRC
dWZmZXImKTsKIAogLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgV09GRiBmaWxlIHdvZmYgaXMgaW52
YWxpZCBvciBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIHNmbnQgKGZvciBleGFtcGxlLAogLy8g
aWYgY29udmVyc2lvbiByYW4gb3V0IG9mIG1lbW9yeSkuIE90aGVyd2lzZSByZXR1cm5zIHRydWUg
YW5kIHdyaXRlcyB0aGUgc2ZudCBwYXlsb2FkIGludG8gc2ZudC4KLWJvb2wgY29udmVydFdPRkZU
b1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50
KTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWlu
dDhfdD4mIHNmbnQpOwogCiAvLyBJZiB0aGUgZ2l2ZW4gYnVmZmVyIGlzIGEgV09GRiBmaWxlIGFu
ZCB0aGUgY3VycmVudCBwbGF0Zm9ybSBoYXMgbm8gbmF0aXZlIHN1cHBvcnQgZm9yIFdPRkYKIC8v
IGZvbnRzLCBjb252ZXJ0IGl0IHRvIHNmbnQuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gYnVm
ZmVyIHdhcyBjb252ZXJ0ZWQuIElmIGNvbnZlcnNpb24gZmFpbHMsCiAvLyB0aGUgYnVmZmVyIHdp
bGwgYmUgc2V0IHRvIG51bGxwdHIuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3Nhcnko
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50
SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAppbmRleCBk
N2MwMTNkNTRlM2RlZDA3ODU0OTAyOGQ1MWQ2ZTAyOGM5NzUwN2M2Li44YjA0ZjliZTk2YzM2ZTBh
MjYyMTgwYTI1ZWEzNzQ1OTYyYjNkN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxh
eVN0cmVhbWluZy5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgY29uc3QgQXRvbVN0cmluZyYgQ0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpza2ROYW1lKCkKICAgICByZXR1cm4gc2tkOwogfQogCi1z
dGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICAvLyBKU09OIG9mIHRoZSBmb3JtYXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNv
ZGVkLXN0cmluZz4gXSB9IgogICAgIGlmIChidWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpKQpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0YXRpYyBWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICBpZiAoIXNpbmZBcnJheSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gc2luZnM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4gc2luZnM7CiAgICAgc2luZnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShz
aW5mQXJyYXktPmxlbmd0aCgpKTsKIAogICAgIGZvciAoYXV0byYgdmFsdWUgOiAqc2luZkFycmF5
KSB7CkBAIC0xMjQsNyArMTI0LDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4g
ZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogfQogCiB1c2luZyBT
Y2hlbWVBbmRLZXlSZXN1bHQgPSBWZWN0b3I8c3RkOjpwYWlyPEZvdXJDQywgVmVjdG9yPHVpbnQ4
X3Q+Pj47Ci1zdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZy
b21TaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFNjaGVtZUFuZEtleVJl
c3VsdCBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBidWZmZXJzID0gZXh0cmFjdFNpbmZEYXRhKGJ1
ZmZlcik7CiAgICAgaWYgKCFidWZmZXJzLnNpemUoKSkKQEAgLTE3MCw5ICsxNzAsOSBAQCBzdGF0
aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpleHRyYWN0S2V5SURzU2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOwor
ICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBhdXRv
IHJlc3VsdHMgPSBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihidWZmZXIpOwogCiAgICAg
Zm9yIChhdXRvJiByZXN1bHQgOiByZXN1bHRzKSB7CkBAIC0xODMsNyArMTgzLDcgQEAgc3RkOjpv
cHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJl
YW1pbmc6OmV4dHJhY3RLZXkKICAgICByZXR1cm4ga2V5SURzOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gQ29tbW9uIFNJTkYgQm94IEZvcm1hdAogICAg
IFVOVVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMTkxLDE3ICsxOTEsMTcgQEAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3Qg
U2hhcmVkQnVmZmUKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNrZChjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Q
cml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGQ6Om9wdGlv
bmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
Zzo6ZXh0cmFjdEtleUlEc1NrZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSW4gdGhlICdza2QnIHNjaGVtZSwgdGhlIGluaXQgZGF0
YSBpcyB0aGUga2V5IElELgotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOwor
ICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBrZXlJ
RHMuYXBwZW5kKGJ1ZmZlci5jb3B5KCkpOwogICAgIHJldHVybiBrZXlJRHM7CiB9CkBAIC0zOTMs
NyArMzkzLDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzU2Vz
c2lvbnMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29sIENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25z
dAogewogICAgIGlmICghdmFsaWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBl
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDIzLDcgKzQyMyw3IEBAIGJvb2wgQ0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVy
PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hh
cmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlc3Bv
bnNlLmNvcHkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKaW5k
ZXggYmM5M2Y2ZjZhN2JkZDAxZWZiZjU1YjYyYmRiNmE0ZTY2ZWY5MTJiMy4uMzE3YmI4ZDU3ZTg2
YzA2MjE0ZTBiNDA1OWRkZjRmODgwN2M3NGM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmgKQEAgLTcxLDE3ICs3MSwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2Fk
QW5kSW5pdGlhbGl6ZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZp
Y2F0ZXMoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25z
dCBvdmVycmlkZTsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5p
dGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRp
YyBjb25zdCBBdG9tU3RyaW5nJiBzaW5mTmFtZSgpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNpbmYo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHNhbml0aXplU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAg
ICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc2tkTmFtZSgpOwotICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTa2QoY29uc3Qg
U2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXpl
U2tkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2tkKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHNhbml0aXplU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAog
ICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8Rm91ckNDPiYgdmFsaWRGYWlyUGxheVN0cmVhbWluZ1Nj
aGVtZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5kZXggMTU5YjkwY2RiNDhmN2ZlNDRi
YjQ5YmUyZWMxYzFjMmY0MzI4NjQwMC4uNTZiNThjMjVhMjg3MDlmYjM4MjIxODM5ZTU1YmFlNDVl
ZDkzY2Y2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBAIC04NCw3ICs4NCw3IEBAIHB1Ymxp
YzoKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpGYWlyUGxheVN0cmVhbWluZzsgfQogCiAg
ICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50
U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRp
ZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAg
ICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNy
ZWF0ZVNlc3Npb24oKSBmaW5hbDsKICAgICB2b2lkIHNldENsaWVudChXZWFrUHRyPENETUluc3Rh
bmNlQ2xpZW50PiYmKSBmaW5hbDsKQEAgLTk0LDEwICs5NCwxMCBAQCBwdWJsaWM6CiAKICAgICBO
U1VSTCAqc3RvcmFnZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZVVSTC5nZXQoKTsgfQog
ICAgIGJvb2wgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lz
dGVudFN0YXRlQWxsb3dlZDsgfQotICAgIFNoYXJlZEJ1ZmZlciogc2VydmVyQ2VydGlmaWNhdGUo
KSBjb25zdCB7IHJldHVybiBtX3NlcnZlckNlcnRpZmljYXRlLmdldCgpOyB9CisgICAgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogc2VydmVyQ2VydGlmaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX3Nl
cnZlckNlcnRpZmljYXRlLmdldCgpOyB9CiAgICAgQVZDb250ZW50S2V5U2Vzc2lvbiogY29udGVu
dEtleVNlc3Npb24oKTsKIAotICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiB0YWtl
VW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBTaGFyZWRCdWZmZXImIGluaXREYXRhKTsKKyAgICBSZXRhaW5QdHI8
QVZDb250ZW50S2V5UmVxdWVzdD4gdGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6
YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgaW5pdERhdGEpOwogCiAgICAgLy8gQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRl
Q2xpZW50CiAgICAgdm9pZCBkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0Kikg
ZmluYWw7CkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgb3V0cHV0T2JzY3Vy
ZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCkgZmluYWw7
CiAgICAgdm9pZCBleHRlcm5hbFByb3RlY3Rpb25TdGF0dXNEaWRDaGFuZ2VGb3JDb250ZW50S2V5
UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7CiAKLSAgICB1c2luZyBLZXlzID0g
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBLZXlzID0gVmVjdG9yPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yS2V5SURzKGNvbnN0IEtleXMmKSBjb25zdDsKICAg
ICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JH
cm91cChBVkNvbnRlbnRLZXlSZXBvcnRHcm91cCopIGNvbnN0OwogICAgIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvclJlcXVlc3QoQVZDb250ZW50
S2V5UmVxdWVzdCopIGNvbnN0OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgV2Vh
a1B0cjxDRE1JbnN0YW5jZUNsaWVudD4gbV9jbGllbnQ7CiAgICAgUmV0YWluUHRyPEFWQ29udGVu
dEtleVNlc3Npb24+IG1fc2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUZQU0NvbnRlbnRL
ZXlTZXNzaW9uRGVsZWdhdGU+IG1fZGVsZWdhdGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9zZXJ2ZXJDZXJ0aWZpY2F0ZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bV9zZXJ2ZXJDZXJ0aWZpY2F0ZTsKICAgICBib29sIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dlZCB7
IHRydWUgfTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IG1fc3RvcmFnZVVSTDsKICAgICBWZWN0b3I8
V2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+PiBtX3Nl
c3Npb25zOwpAQCAtMTUwLDggKzE1MCw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gQ0RN
SW5zdGFuY2VTZXNzaW9uCi0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRh
LCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwg
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRl
TGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRT
ZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vz
c2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmlu
ZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lv
bkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJh
Y2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IDYyYmQxMzQ3OWM2YzMz
NjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUuLmJhNTA2MWViYjVjNWZiZTA3NGQzYTI5ZGVhNGY5
MThmYzI2MjFjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0yMTcsNyArMjE3LDcg
QEAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKICAgICByZXR1cm4gQXRvbVN0cmlu
Zyhuc0luaXRUeXBlKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGluaXRpYWxpemF0
aW9uRGF0YUZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCogcmVxdWVzdCkKK3N0YXRpYyBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdGlhbGl6YXRpb25EYXRhRm9yUmVxdWVzdChB
VkNvbnRlbnRLZXlSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIGlmICghcmVxdWVzdCkKICAgICAg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CkBAIC0yNjUsNyArMjY1LDcgQEAgQVZD
b250ZW50S2V5U2Vzc2lvbiogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmNv
bnRlbnRLZXlTZXNzaW9uKCkKICAgICByZXR1cm4gbV9zZXNzaW9uLmdldCgpOwogfQogCi1SZXRh
aW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitSZXRh
aW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXRE
YXRhKQogewogICAgIGZvciAoYXV0byByZXF1ZXN0SXRlciA9IG1fdW5leHBlY3RlZEtleVJlcXVl
c3RzLmJlZ2luKCk7IHJlcXVlc3RJdGVyICE9IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzLmVuZCgp
OyArK3JlcXVlc3RJdGVyKSB7CiAgICAgICAgIGF1dG8mIHJlcXVlc3QgPSAqcmVxdWVzdEl0ZXI7
CkBAIC0zMTYsNyArMzE2LDcgQEAgcHJpdmF0ZToKICAgICBSZXNwb25zZU1hcCBtX3Jlc3BvbnNl
czsKIH07CiAKLXN0YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VK
U09OVmFsdWUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8v
IEZhaWwgb24gbGFyZ2UgYnVmZmVycyB3aG9zZSBzaXplIGRvZXNuJ3QgZml0IGludG8gYSAzMi1i
aXQgdW5zaWduZWQgaW50ZWdlci4KICAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci5zaXplKCk7CkBA
IC0zODAsNyArMzgwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUsKICAgICBjYWxsYmFjayhp
bml0aWFsaXplKCkpOwogfQogCi12b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIHNlcnZlckNlcnRp
ZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIHNlcnZlckNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAgICAg
bV9zZXJ2ZXJDZXJ0aWZpY2F0ZSA9IFdURk1vdmUoc2VydmVyQ2VydGlmaWNhdGUpOwpAQCAtNTg1
LDggKzU4NSw4IEBAIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyog
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6CiAgICAgICAgICAgICBjb250aW51
ZTsKIAogICAgICAgICBhdXRvIHNlc3Npb25LZXlzID0gc2Vzc2lvbkludGVyZmFjZS0+a2V5SURz
KCk7Ci0gICAgICAgIGlmIChhbnlPZihzZXNzaW9uS2V5cywgWyZdKGNvbnN0IFJlZjxTaGFyZWRC
dWZmZXI+JiBzZXNzaW9uS2V5KSB7Ci0gICAgICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRNYXRj
aGluZyhbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGtleUlEKSB7CisgICAgICAgIGlmIChh
bnlPZihzZXNzaW9uS2V5cywgWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYg
c2Vzc2lvbktleSkgeworICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kTWF0Y2hpbmcoWyZd
KGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYga2V5SUQpIHsKICAgICAgICAgICAg
ICAgICByZXR1cm4ga2V5SUQuZ2V0KCkgPT0gc2Vzc2lvbktleS5nZXQoKTsKICAgICAgICAgICAg
IH0pICE9IG5vdEZvdW5kOwogICAgICAgICB9KSkKQEAgLTY3Myw3ICs2NzMsNyBAQCBLZXlzIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6a2V5SURzKCkKICAgICBy
ZXR1cm4ga2V5SURzOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwg
TGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5
cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlm
ICghaXNMaWNlbnNlVHlwZVN1cHBvcnRlZChsaWNlbnNlVHlwZSkpIHsKICAgICAgICAgREVCVUdf
TE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgZmFsc2UsIGxpY2Vuc2VUeXBlIFwiIiwg
bGljZW5zZVR5cGUsICJcIiBub3Qgc3VwcG9ydGVkIik7CkBAIC03MzYsNyArNzM2LDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIGlzRXF1YWwoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorc3RhdGljIGJvb2wg
aXNFcXVhbChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQogewogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBkYXRhLnRyeUNyZWF0ZUFycmF5QnVm
ZmVyKCk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikKQEAgLTc1NCw3ICs3NTQsNyBAQCBzdGF0aWMg
Ym9vbCBpc0VxdWFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKICAgICByZXR1cm4gc3RyaW5nT3JFeGNlcHRpb24ucmV0dXJuVmFsdWUoKSA9PSB2YWx1ZTsK
IH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiByZXNwb25zZURhdGEsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAg
IGlmICghbV9leHBpcmVkU2Vzc2lvbnMuaXNFbXB0eSgpICYmIGlzRXF1YWwocmVzcG9uc2VEYXRh
LCAiYWNrbm93bGVkZ2VkIl9zKSkgewogICAgICAgICBhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5z
dGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCk7CkBAIC04NTYsNyArODU2LDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAgIGF1dG8ga2V5SUQgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKCprZXlJRFZlY3RvcikpOwogICAgICAgICAgICAgYXV0byBmb3VuZEluZGV4
ID0gbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpbmRNYXRjaGluZyhbJl0gKGF1
dG8mIHJlcXVlc3QpIHsKICAgICAgICAgICAgICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJl
cXVlc3QocmVxdWVzdC5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5k
TWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBpZCkgeworICAgICAgICAgICAg
ICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mIGlkKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpZC5nZXQoKSA9
PSBrZXlJRC5nZXQoKTsKICAgICAgICAgICAgICAgICB9KSAhPSBub3RGb3VuZDsKICAgICAgICAg
ICAgIH0pOwpAQCAtMTE1NSw3ICsxMTU1LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAg
ICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgp
KQogICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCkt
PmNyZWF0ZU5TRGF0YSgpOwogCi0gICAgdXNpbmcgUmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6
cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKKyAgICB1c2lu
ZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdh
dG9yIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRv
cj4gewogICAgICAgICB1c2luZyBDYWxsYmFja0Z1bmN0aW9uID0gRnVuY3Rpb248dm9pZChSZXF1
ZXN0c0RhdGEmJik+OwogICAgICAgICBzdGF0aWMgUmVmUHRyPENhbGxiYWNrQWdncmVnYXRvcj4g
Y3JlYXRlKENhbGxiYWNrRnVuY3Rpb24mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEyMTEsNyAr
MTIxMSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgQHRyeSB7CiAgICAgICAgIGZv
ciAoYXV0byByZXF1ZXN0IDogbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzKSB7CiAg
ICAgICAgICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7
Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5SURz
LmZpcnN0KCkpOworICAgICAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGtl
eUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7CiAgICAgICAgICAgICBhdXRvIGNvbnRlbnRJ
ZGVudGlmaWVyID0ga2V5SUQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAg
ICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFw
cDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVy
LmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOltrZXlJRCA9IFdURk1vdmUoa2V5
SUQpLCBhZ2dyZWdhdG9yXSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3Ig
KmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDAzMzRk
NjIzYjJhNzYwNWM5YmUxMjIxM2I1YWJkYmJhYzJiMDNmMTUuLjYyYjgzZmJmZDU3OTQwNTBlYmM5
NDA2MzcwNDkwYmEyYjNlYzA4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURl
Y29kZXJBVkZPYmpDLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uOwogCiBjbGFzcyBJbWFnZURlY29kZXJBVkZPYmpDIDogcHVibGljIEltYWdlRGVj
b2RlciB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURl
Y29kZXJBVkZPYmpDPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IGNyZWF0ZShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXJBVkZP
YmpDKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzdXBwb3J0c01lZGlhVHlw
ZShNZWRpYVR5cGUpOwpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5h
bDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25n
IGxvbmcpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZm
ZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
ZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyRnJh
bWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsOwogCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+IGZyYW1l
SW5mb3MoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyQVZGT2JqQyhGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIEFWQXNzZXRUcmFjayAqZmlyc3RFbmFibGVkVHJh
Y2soKTsKICAgICB2b2lkIHJlYWRTYW1wbGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCBhNTRkZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1YmNh
NDlmYzU1NjhmZWI5Li4zNWM2Y2U2N2U4NWY4NmFlMTY0YzIxYTcyNjA3ZmMwNjVlY2I1MDU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTI4
OSw3ICsyODksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRv
ciBpdGVyKQogCiAjcHJhZ21hIG1hcmsgLSBJbWFnZURlY29kZXJBVkZPYmpDCiAKLVJlZlB0cjxJ
bWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
CitSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRl
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICAvLyBBVkZvdW5kYXRpb24gbWF5IG5vdCBiZSBh
dmFpbGFibGUgYXQgcnVudGltZS4KICAgICBpZiAoIUFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5n
bGV0b24oKS5pc0F2YWlsYWJsZSgpKQpAQCAtMzAxLDcgKzMwMSw3IEBAIFJlZlB0cjxJbWFnZURl
Y29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBk
YXRhLCBjb25zCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyQVZGT2JqQyhk
YXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7
CiB9CiAKLUltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZP
YmpDKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICA6IEltYWdlRGVj
b2RlcigpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV91dGkoV2ViQ29yZTo6
VVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKSkKQEAgLTY0MSw3ICs2NDEsNyBAQCB2b2lkIEltYWdl
RGVjb2RlckFWRk9iakM6OnNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nIGV4cGVjdGVk
Q29udGVudFNpemUpCiAgICAgbV9sb2FkZXIuZ2V0KCkuZXhwZWN0ZWRDb250ZW50U2l6ZSA9IGV4
cGVjdGVkQ29udGVudFNpemU7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0
YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURl
Y29kZXJBVkZPYmpDOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQogewogICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNv
bnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVk
XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDIwMGUxYThmOWFmYmEwZmNiYmE1YjBhM2Vk
NzA0Y2QzNDFiNDUwZDYuLmM5ZDliMmE5Njg1YjAxZTkxYWFhMDBjMGUwMDMwNzczODU2OTE0MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgSW5iYW5kTWV0
YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOwogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNs
YXNzIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDOwogY2xhc3MgUGl4ZWxCdWZmZXJDb25mb3Jt
ZXJDVjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiBjbGFzcyBWaWRlb0xheWVyTWFuYWdlck9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZUFW
Rk9iakM7CiBjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI7CkBAIC00MjYsNyArNDI2LDcg
QEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1fd2FsbENs
b2NrQXRDYWNoZWRDdXJyZW50VGltZTsKICAgICBtdXRhYmxlIGludCBtX3RpbWVDb250cm9sU3Rh
dHVzQXRDYWNoZWRDdXJyZW50VGltZSB7IDAgfTsKICAgICBtdXRhYmxlIGRvdWJsZSBtX3JlcXVl
c3RlZFJhdGVBdENhY2hlZEN1cnJlbnRUaW1lIHsgMCB9OwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fa2V5SUQ7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fa2V5SUQ7
CiAgICAgZG91YmxlIG1fY2FjaGVkUmF0ZSB7IDAgfTsKICAgICBib29sIG1fcmVxdWVzdGVkUGxh
eWluZyB7IGZhbHNlIH07CiAgICAgZG91YmxlIG1fcmVxdWVzdGVkUmF0ZSB7IDEuMCB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KaW5kZXggZDdjZjlkNGJmMWZlZDY5YTVmM2NhYzMxZWFmZWU3ZjM5
OGE0NTNjMS4uZGExYWMwZDcxMDE1NjFmMWEyMTU2M2I1NjZkNDVkNWViNjA0M2JhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCkBAIC0yNzkyLDcgKzI3OTIsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RN
SW5zdGFuYwogICAgIGlmICghbV9rZXlJRCB8fCAhbV9jZG1JbnN0YW5jZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3RhbmNlLT5zZXNzaW9u
Rm9yS2V5SURzKFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj46OmZyb20oKm1fa2V5SUQpKTsKKyAg
ICBhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1fY2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMo
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmZyb20oKm1fa2V5SUQpKTsKICAg
ICBpZiAoIWluc3RhbmNlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCAwMzQy
MGYxMzgzNjRmYWMyMDkxZTEwNGQxMzZmZjM4YTFmYjlmZTIyLi5lYWQwODNhNmNjN2U3MzZiNDIx
NzEwZmFjMzkyYTA3ZGZmOTJiZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKQEAgLTczLDcgKzczLDcgQEAgY2xhc3MgVmlk
ZW9UcmFja1ByaXZhdGU7CiBjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
QzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOwogY2xhc3MgV2Vi
Q29yZURlY29tcHJlc3Npb25TZXNzaW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakNF
cnJvckNsaWVudCB7CiBwdWJsaWM6CkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lkKFJlZjxNZWRpYVNhbXBsZT4mJiwgdWlu
dDY0X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpOwogCiAgICAgLy8gU291cmNl
QnVmZmVyUHJpdmF0ZSBvdmVycmlkZXMKLSAgICB2b2lkIGFwcGVuZChSZWY8U2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CiAgICAgdm9pZCBhYm9ydCgpIGZpbmFsOwogICAgIHZvaWQgcmVzZXRQYXJzZXJT
dGF0ZSgpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpIGZpbmFsOwpA
QCAtMjIxLDcgKzIyMSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCiAgICAgUmVmUHRyPENETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPiBtX2NkbUluc3RhbmNlOwotICAgIFZlY3RvcjxS
ZWY8U2hhcmVkQnVmZmVyPj4gbV9rZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4gbV9rZXlJRHM7CiAjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRT
aXplPiBtX2NhY2hlZFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDNhMjg2N2ExYWMyNDNiYjljOTNjOWQ2Yjcw
Y2E1NmIwMjk0OGZjOWMuLjI0YWUwZTE0MDYwMTkxNDNmYWQ0ZjE1MjllNjhlZDQ5YjQxNjUzY2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLm1tCkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KICAg
ICBVTlVTRURfUEFSQU0oaGFzU2Vzc2lvblNlbWFwaG9yZSk7CiB9CiAKLXZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgZGF0YSkKIHsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJkYXRhIGxl
bmd0aCA9ICIsIGRhdGEtPnNpemUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggNTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5
NmRjMTIyOTViNmJjNzQzZC4uMGVmZWVhZWY1YjJkNzFiYzZkNjcwNGRkMWI5NzVhY2JhZTExM2Ji
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzsKIGNsYXNzIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjsKIGNsYXNzIFJlc291
cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGxvYWRG
YWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKCk7Ci0g
ICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7
CisgICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpOwogCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyog
bV9wYXJlbnQ7CiAgICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBt
X2F2UmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlci5tbQppbmRleCBiNmUyMzdiNWRmNWRkZjZhNzJkNTQxNjk1YTA3ODIzMTgxYWNh
ZGFkLi5mOTIxZjNkYTBlNjliMzM5OTc3YzllM2U0OTY2N2EyOGY1ZTk1Y2JkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0x
NTYsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVx
dWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBs
b25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQgZGF0YVJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAg
IHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmlu
YWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFp
bGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVkKCk7IH0K
QEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9h
ZEZpbmlzaGVkKCkKICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQoKTsKIH0KIAotdm9pZCBQbGF0
Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIG1fYnVmZmVyLmFwcGVuZChXVEZN
b3ZlKGJ1ZmZlcikpOwogICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigq
bV9idWZmZXIuZ2V0KCkpOwpAQCAtMjI1LDcgKzIyNSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZXNvdXJjZVJlc3Bv
bnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVm
ZmVyOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogRGF0YVVSTFJl
c291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlciYgcGFyZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjM1
LDcgKzIzNSw3IEBAIERhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VN
ZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImCiAKICAgICBpZiAoYXV0byByZXN1
bHQgPSBEYXRhVVJMRGVjb2Rlcjo6ZGVjb2RlKHJlcXVlc3QudXJsKCksIERhdGFVUkxEZWNvZGVy
OjpNb2RlOjpGb3JnaXZpbmdCYXNlNjQpKSB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJj
ZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UocmVxdWVzdC51cmwoKSwgKnJlc3VsdCk7Ci0gICAg
ICAgIG1fYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVz
dWx0LT5kYXRhKSk7CisgICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShyZXN1bHQtPmRhdGEpKTsKICAgICB9CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
LCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CkBAIC0zODUsNyArMzg1LDcgQEAgdm9p
ZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExvYWRp
bmcoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJ
blNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFS
ZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYg
KCFkYXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA0NmIwN2Zl
NzEyZTc5ZTYxMzE3YzBkMTE2ZmU2YTNmMDRhZjlmZmNiLi45NDE5YmNlYTM4ZGJmOGQ2NDkyZjY4
MDFkOWEyMTU2MjM2NmEyYzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0z
MSwxMSArMzEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERl
c2NyaXB0aW9uOwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNp
ZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOwogCkBAIC00Niw3
ICs0Niw3IEBAIHN0cnVjdCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKTsKIHB1YmxpYzoKLSAgICBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKEZUX0ZhY2UsIFNo
YXJlZEJ1ZmZlciYpOworICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSwgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIH5Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKCkgPSBkZWZh
dWx0OwogICAgIEZvbnRQbGF0Zm9ybURhdGEgZm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVz
Y3JpcHRpb24mLCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250
ZXh0Jik7CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJik7CkBA
IC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPGNhaXJvX2ZvbnRfZmFjZV90PiBt
X2ZvbnRGYWNlOwogfTsKIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IDIwMzVjOTlhN2Y2
OGI1NDg5Yzg1OGEzZTZkNzAzM2QxMzVkMWY3ZGIuLmI2ZDNlYjM2MzExMjQ0NjEzYjM4MDNmMmYz
ZDI0ZDMwODdlYTI0ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxJbnRTaXplPiBkZW5zaXR5Q29ycmVjdGVkU2l6ZUZyb21Qcm9wZXJ0aWVz
KENGRGljdGlvbmFyeVJlZgogI2lmICFQTEFURk9STShDT0NPQSkKIHNpemVfdCBzaGFyZWRCdWZm
ZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBvZmZfdCBwb3Np
dGlvbiwgc2l6ZV90IGNvdW50KQogewotICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHNoYXJl
ZEJ1ZmZlciA9IHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihpbmZvKTsKKyAg
ICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+
KGluZm8pOwogICAgIHNpemVfdCBzb3VyY2VTaXplID0gc2hhcmVkQnVmZmVyLT5zaXplKCk7CiAg
ICAgaWYgKHBvc2l0aW9uID49IHNvdXJjZVNpemUpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjQ0
LDEyICsyNDQsMTIgQEAgc2l6ZV90IHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lk
KiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9uLAogCiB2b2lkIHNoYXJlZEJ1ZmZl
clJlbGVhc2Uodm9pZCogaW5mbykKIHsKLSAgICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9
IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOworICAgIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
PihpbmZvKTsKICAgICBzaGFyZWRCdWZmZXItPmRlcmVmKCk7CiB9CiAjZW5kaWYKIAotSW1hZ2VE
ZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2Rl
ckNHKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7
CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQpAQCAtNTYyLDIwICs1NjIsMjAgQEAgUGxhdGZv
cm1JbWFnZVB0ciBJbWFnZURlY29kZXJDRzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGkKICAgICByZXR1cm4gbWFza2VkSW1hZ2UgPyBtYXNrZWRJbWFnZSA6
IGltYWdlOwogfQogCi12b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRh
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewog
ICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQgPSBhbGxEYXRhUmVjZWl2ZWQ7CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICAvLyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZl
ciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mg
a25vd2xlZGdlLgotICAgIC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAg
aXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IElt
YWdlSU8gaXMKLSAgICAvLyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVkQnVmZmVyLgorICAg
IC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBj
YW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcidzIGtub3dsZWRnZS4KKyAgICAvLyBXZSB1c2UgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcidz
IGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMs
IGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcworICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyLgogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0
aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5n
ZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbHNlCi0gICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJv
dmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVmZmVyLgorICAgIC8vIENyZWF0ZSBhIENHRGF0YVBy
b3ZpZGVyIHRvIHdyYXAgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAgICAgYXV0byBjb250
aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBjb250aWd1b3VzRGF0YS5n
ZXQoKS5yZWYoKTsKLSAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFj
ayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVmZmVy
CisgICAgLy8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRo
YW4gdGhlIEdldEJ5dGVQb2ludGVyIG9uZSBiZWNhdXNlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIK
ICAgICAvLyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUgYnl0ZSBwb2lu
dGVyIGFuZCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAogICAgIC8vIGlzIGEg
cmVxdWlyZW1lbnQgZm9yIHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFjay4KICAgICBD
R0RhdGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsgMCwgMCwg
MCwgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJSZWxlYXNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuaAppbmRleCA5NzQwNzM2YTIxYWM5OThhYjA1ZjFjOWI0ZjViMTY3NWU0NGQyYzkxLi5h
MGFjMWMyZmJlZTUyN2U1YWIxMTE0NTU4MTJiZGI3MzYzYTA1NTQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKQEAgLTMy
LDkgKzMyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW1hZ2VEZWNvZGVyQ0cgZmlu
YWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBJbWFnZURlY29kZXJDRyhTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyQ0coRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKTsKIAotICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyQ0c+IGNyZWF0ZShTaGFy
ZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICBzdGF0aWMgUmVmPElt
YWdlRGVjb2RlckNHPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFP
cHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1h
Z2VEZWNvZGVyQ0coZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KSk7CiAgICAgfQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybUltYWdl
UHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGlu
Z09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCi0gICAgdm9pZCBz
ZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2
b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hl
KHNpemVfdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQppbmRleCA4
NDRhYzQ0ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5NDFlNzI3NTRiLi44NTQyMWUzZGU3MDljZTE1
OWM0OTRiNDBmYjhkMWFkMjM1OTNjM2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1t
CkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFs
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgIHJldHVybiBDRkVxdWFs
KG1fZm9udC5nZXQoKSwgb3RoZXIubV9mb250LmdldCgpKTsKIH0KIAotUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1
aW50MzJfdCkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBs
YXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCmluZGV4IGY3NDdkODBmYjYxZDMwZmM1MDIy
ZTY4MmQ2MzU2MTMzZDNjYTY5N2EuLmM4YTgwNjEyMjA1M2Y2NDhhZGRiMDJhYzM4OWNlNzE0MzY4
ZGJiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcApAQCAtODAsNyArODAsNyBAQCB2b2lk
IFNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0TWluaW11bUF1ZGlvU2FtcGxlRHVyYXRpb24oZmxvYXQp
CiB7CiB9CiAKLVNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudChSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK1NvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudChS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX3NlZ21lbnQoV1RG
TW92ZShidWZmZXIpKQogewogfQpAQCAtMTAxLDcgKzEwMSw3IEBAIHNpemVfdCBTb3VyY2VCdWZm
ZXJQYXJzZXI6OlNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIGNsYW1w
VG88c2l6ZV90PihNVFBsdWdpbkJ5dGVTb3VyY2VHZXRMZW5ndGgoYnl0ZVNvdXJjZS5nZXQoKSkp
OwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIpCisgICAgICAgIFtdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYg
YnVmZmVyKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gYnVmZmVyLT5zaXplKCk7CiAg
ICAgICAgIH0KQEAgLTEyNSw3ICsxMjUsNyBAQCBhdXRvIFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2Vn
bWVudDo6cmVhZChzaXplX3QgcG9zaXRpb24sIHNpemVfdCBzaXplVG9SZWFkLCB1aW50OAogICAg
ICAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVhZEVycm9yPiB7IFJlYWRFcnJvcjo6RmF0YWxF
cnJvciB9OwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAgIFsmXShjb25zdCBSZWY8U2hhcmVk
QnVmZmVyPiYgYnVmZmVyKSAtPiBSZWFkUmVzdWx0CisgICAgICAgIFsmXShjb25zdCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVhZFJlc3VsdAogICAgICAgICB7CiAg
ICAgICAgICAgICBidWZmZXItPmNvcHlUbyhkZXN0aW5hdGlvbiwgcG9zaXRpb24sIHNpemVUb1Jl
YWQpOwogICAgICAgICAgICAgcmV0dXJuIHNpemVUb1JlYWQ7CkBAIC0xMzMsNyArMTMzLDcgQEAg
YXV0byBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnJlYWQoc2l6ZV90IHBvc2l0aW9uLCBz
aXplX3Qgc2l6ZVRvUmVhZCwgdWludDgKICAgICApOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBT
b3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VTaGFyZWRCdWZmZXIoKQorUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJl
ZEJ1ZmZlcigpCiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9zZWdtZW50LAogI2lmIEhB
VkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCkBAIC0xNDIsMjggKzE0MiwyOCBAQCBSZWY8U2hh
cmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VTaGFyZWRCdWZmZXIo
KQogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcihzaXplKCkpOwogICAgICAgICAg
ICAgYXV0byByZWFkUmVzdWx0ID0gcmVhZCgwLCB2ZWN0b3Iuc2l6ZSgpLCB2ZWN0b3IuZGF0YSgp
KTsKICAgICAgICAgICAgIGlmICghcmVhZFJlc3VsdC5oYXNfdmFsdWUoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICB2ZWN0b3Iu
c2hyaW5rKHJlYWRSZXN1bHQudmFsdWUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKTsKKyAgICAgICAgICAgIHJldHVybiBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKTsKICAgICAgICAgfSwKICNl
bmRpZgotICAgICAgICBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAgICAgICAgWyZd
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShidWZmZXIsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkp
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UoYnVmZmVyLCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSk7CiAgICAgICAgIH0KICAgICApOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OmdldFNoYXJlZEJ1ZmZlcigp
IGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gU291cmNlQnVmZmVyUGFyc2Vy
OjpTZWdtZW50OjpnZXRTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3
aXRjaE9uKG1fc2VnbWVudCwKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVSKQotICAg
ICAgICBbJl0oY29uc3QgUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mKSAtPiBSZWZQ
dHI8U2hhcmVkQnVmZmVyPgorICAgICAgICBbJl0oY29uc3QgUmV0YWluUHRyPE1UUGx1Z2luQnl0
ZVNvdXJjZVJlZj4mKSAtPiBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4KICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAg
ICAgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlZlB0cjxTaGFyZWRC
dWZmZXI+CisgICAgICAgIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikgLT4gUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+CiAgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybiBidWZmZXIucHRyKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
LmgKaW5kZXggNTIwYjUyMDdmYzI3MWQ3OTgxNTMzZmIxNGQyMzE1NTk0YTg4ODM2NS4uNzI5N2E3
OTE0YTc5YWRmNjQyZGM2YjE2YjM2ZTYwZjljZDAyOWYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50
VHlwZTsKIGNsYXNzIE1lZGlhU2FtcGxlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU291cmNlQnVmZmVy
UGFyc2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNvdXJjZUJ1ZmZlclBhcnNlcj4g
ewogcHVibGljOgpAQCAtNjksMTEgKzY5LDExIEBAIHB1YmxpYzoKICNpZiBIQVZFKE1UX1BMVUdJ
Tl9GT1JNQVRfUkVBREVSKQogICAgICAgICBTZWdtZW50KFJldGFpblB0cjxNVFBsdWdpbkJ5dGVT
b3VyY2VSZWY+JiYpOwogI2VuZGlmCi0gICAgICAgIFNlZ21lbnQoUmVmPFNoYXJlZEJ1ZmZlcj4m
Jik7CisgICAgICAgIFNlZ21lbnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAg
ICAgICBTZWdtZW50KFNlZ21lbnQmJikgPSBkZWZhdWx0OwotICAgICAgICBSZWY8U2hhcmVkQnVm
ZmVyPiB0YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAgICAgIC8vIFdpbGwgcmV0dXJuIG51bGxwdHIg
aWYgU2VnbWVudCdzIGJhY2tlbmQgaXNuJ3QgYSBTaGFyZWRCdWZmZXIuCi0gICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZVNoYXJlZEJ1ZmZlcigpOworICAgICAgICAvLyBXaWxs
IHJldHVybiBudWxscHRyIGlmIFNlZ21lbnQncyBiYWNrZW5kIGlzbid0IGEgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlci4KKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdldFNo
YXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKQEAg
LTg3LDcgKzg3LDcgQEAgcHVibGljOgogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIp
CiAgICAgICAgICAgICBSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiwKICNlbmRpZgot
ICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4KKyAgICAgICAgICAgIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPgogICAgICAgICA+IG1fc2VnbWVudDsKICAgICB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDYxZGJkNjJjOWUzZTlmMzE1Nzk4NTA1ZWI1MDQw
Zjk5ZmY4YzViZjEuLjliYzE4OTQxOTg2MzBiYWQ4ZDdjYmQwYjNhNWIyOGU0NmU5ZWZlMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0zODgsNyArMzg4LDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgIGFkdmFuY2VUb05leHRTZWdtZW50KCk7CiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBjdXJyZW50U2VnbWVudC5nZXRTaGFyZWRCdWZmZXIoKTsK
KyAgICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIg
PSBjdXJyZW50U2VnbWVudC5nZXRTaGFyZWRCdWZmZXIoKTsKICAgICAgICAgICAgIENNQmxvY2tC
dWZmZXJSZWYgcmF3QmxvY2tCdWZmZXIgPSBudWxscHRyOwogICAgICAgICAgICAgdWludDY0X3Qg
bGFzdFJlYWQgPSAwOwogICAgICAgICAgICAgc2l6ZV90IGRlc3RpbmF0aW9uT2Zmc2V0ID0gbV9w
b3NpdGlvbldpdGhpblNlZ21lbnQ7CkBAIC00MDksNyArNDA5LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgIGRlc3RpbmF0aW9uT2Zmc2V0ID0gMDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKHNoYXJlZEJ1ZmZlci0+aGFzT25lU2VnbWVudCgpLCAiQ2Fu
IG9ubHkgZGVhbCB3aXRoIHNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGEgc2luZ2xlIERhdGFTZWdt
ZW50Iik7Ci0gICAgICAgICAgICAgICAgLy8gQSBTaGFyZWRCdWZmZXIgZG9lc24ndCBoYXZlIHRo
cmVhZC1zYWZlIHJlZmNvdW50aW5nLCBhcyBzdWNoIHdlIG11c3Qga2VlcCBhIHJlZmVyZW5jZSB0
byB0aGUgRGF0YVNlZ21lbnQgaW5zdGVhZC4KKyAgICAgICAgICAgICAgICAvLyBBIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIgZG9lc24ndCBoYXZlIHRocmVhZC1zYWZlIHJlZmNvdW50aW5nLCBhcyBz
dWNoIHdlIG11c3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgRGF0YVNlZ21lbnQgaW5zdGVhZC4K
ICAgICAgICAgICAgICAgICAvLyBUT0RPOiBjb3VsZCB3ZSBvbmx5IGNyZWF0ZSBhIG5ldyBDTUJs
b2NrQnVmZmVyIGlmIHRoZSBiYWNrZW5kIG1lbW9yeSBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91
cyBvbmU/CiAgICAgICAgICAgICAgICAgYXV0byBmaXJzdFNlZ21lbnQgPSBzaGFyZWRCdWZmZXIt
PmJlZ2luKCktPnNlZ21lbnQ7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGNhblJlYWQgPSBzdGQ6
Om1pbjxzaXplX3Q+KG51bVRvUmVhZCwgZmlyc3RTZWdtZW50LT5zaXplKCkgLSBtX3Bvc2l0aW9u
V2l0aGluU2VnbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNw
cAppbmRleCBjYzU5NGYzODRlNTYzNWRlZGE4ZjQyM2Y2ODRkYTViNTU0OTcwNjcxLi41OWQyMTY2
NzlkMmZlNGM4MGM2OWFhYTcxZjM5MjFkNjI1N2FhYzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQ
bGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKQEAgLTE1MSwxMCArMTUxLDEwIEBAIFJldGFpblB0cjxD
RlR5cGVSZWY+IEZvbnRQbGF0Zm9ybURhdGE6Om9iamVjdEZvckVxdWFsaXR5Q2hlY2soKSBjb25z
dAogICAgIHJldHVybiBvYmplY3RGb3JFcXVhbGl0eUNoZWNrKGN0Rm9udCgpKTsKIH0KIAotUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFi
bGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZv
cm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIGlmIChS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDVEZvbnRDb3B5VGFibGUoY3RGb250
KCksIHRhYmxlLCBrQ1RGb250VGFibGVPcHRpb25Ob09wdGlvbnMpKSkKLSAgICAgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHBsYXRm
b3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1CdWZmZXIuY3BwCmluZGV4IDQwMjVlMDY5MmRjNWExNWU5NzM2OTU4MDMzM2Y2ZmEzYjli
ZmJkNGIuLmJhNjA1ZGNiMzFkNTI5NDdhYzJhNzE0NmMxZGU4NDBjZDRhNDg3NWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCkBAIC03MzcsNyArNzM3LDcg
QEAgRGlkQ2hhbmdlSXRlbUJ1ZmZlciBJdGVtQnVmZmVyOjpzd2FwV3JpdGFibGVCdWZmZXJJZk5l
ZWRlZChzaXplX3QgbnVtYmVyT2ZCeXRlcykKIHZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kKGNvbnN0
IERpc3BsYXlMaXN0SXRlbSYgdGVtcG9yYXJ5SXRlbSkKIHsKICAgICBhdXRvIHJlcXVpcmVkU2l6
ZUZvckl0ZW0gPSBtX3dyaXRpbmdDbGllbnQtPnJlcXVpcmVkU2l6ZUZvckl0ZW0odGVtcG9yYXJ5
SXRlbSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3V0T2ZMaW5lSXRlbTsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gb3V0T2ZMaW5lSXRlbTsKICAgICBpZiAoIXJlcXVp
cmVkU2l6ZUZvckl0ZW0pIHsKICAgICAgICAgb3V0T2ZMaW5lSXRlbSA9IG1fd3JpdGluZ0NsaWVu
dC0+ZW5jb2RlSXRlbU91dE9mTGluZSh0ZW1wb3JhcnlJdGVtKTsKICAgICAgICAgaWYgKCFvdXRP
ZkxpbmVJdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCmluZGV4
IGM4NzMxOTgyZWY4MzkzMWJiYWUzMWI3ODY1MGFjMGRhMjBhMDVmYzUuLmIzMWJjNWZkNGU5MjE0
YjE1YTM3NjFmYmU5OGQ2MGNlYjQ3YTk4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtQnVmZmVyLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0CisgICAg
dmlydHVhbCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGlu
ZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQpAQCAtMTY4LDcgKzE2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB3aXRoIHBh
ZGRpbmcgYmV0d2VlbiBlYWNoIGl0ZW0gdG8gZW5zdXJlIHRoYXQgYWxsIGl0ZW1zIGFyZSBhbGln
bmVkIHRvIDggYnl0ZXMuCiAgICAgLy8KICAgICAvLyBJZiBhIHdyaXRpbmcgY2xpZW50IGlzIHBy
ZXNlbnQgYW5kIHJlcXVpcmVzIGN1c3RvbSBlbmNvZGluZyBmb3IgdGhlIGdpdmVuIGl0ZW0gdHlw
ZSBULCB0aGUKLSAgICAvLyBpdGVtIGJ1ZmZlciB3aWxsIGFzayB0aGUgY2xpZW50IGZvciBhbiBv
cGFxdWUgU2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgZW5jb2RlZCBkYXRhIGZvciB0aGUKKyAgICAv
LyBpdGVtIGJ1ZmZlciB3aWxsIGFzayB0aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGVuY29kZWQgZGF0YSBmb3IgdGhlCiAgICAgLy8gaXRl
bS4gVGhpcyBlbmNvZGVkIGRhdGEgaXMgdGhlbiBhcHBlbmRlZCB0byB0aGUgaXRlbSBidWZmZXIs
IHdpdGggcGFkZGluZyB0byBlbnN1cmUgdGhhdAogICAgIC8vIHRoZSBzdGFydCBhbmQgZW5kIG9m
IHRoaXMgZGF0YSBhcmUgYWxpZ25lZCB0byA4IGJ5dGVzLCBpZiBuZWNlc3NhcnkuIFdoZW4gY29u
c3VtaW5nIGVuY29kZWQKICAgICAvLyBpdGVtIGRhdGEsIGEgY29ycmVzcG9uZGluZyBJdGVtQnVm
ZmVyUmVhZGluZ0NsaWVudCB3aWxsIGJlIHJlcXVpcmVkIHRvIGNvbnZlcnQgdGhpcyBlbmNvZGVk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApp
bmRleCBjY2RhZGIwZGExMWI1OTg1YTM0Mzg2MTlkYjBkZjIzMzAxYTcyNWEzLi4yYjQ0M2ZiYmVk
MmMxZmRlNDhiY2RlOWNiZTQwOTUzNDk3ZmRlOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyB2b2lkIHJlbGVhc2VDdXN0b21Gb250RGF0YSh2b2lk
KiBkYXRhKQogewotICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigp
OworICAgIHN0YXRpY19jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYo
KTsKIH0KIAogc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBmcmVlVHlwZUZhY2VLZXk7CiAK
LUZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSBm
cmVlVHlwZUZhY2UsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorRm9udEN1c3RvbVBsYXRmb3JtRGF0
YTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9GYWNlIGZyZWVUeXBlRmFjZSwgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIDogbV9mb250RmFjZShhZG9wdFJlZihjYWlyb19m
dF9mb250X2ZhY2VfY3JlYXRlX2Zvcl9mdF9mYWNlKGZyZWVUeXBlRmFjZSwgRlRfTE9BRF9ERUZB
VUxUKSkpCiB7CiAgICAgYnVmZmVyLnJlZigpOyAvLyBUaGlzIGlzIGJhbGFuY2VkIGJ5IHRoZSBi
dWZmZXItPmRlcmVmKCkgaW4gcmVsZWFzZUN1c3RvbUZvbnREYXRhLgpAQCAtMTI5LDcgKzEyOSw3
IEBAIHN0YXRpYyBib29sIGluaXRpYWxpemVGcmVlVHlwZUxpYnJhcnkoRlRfTGlicmFyeSYgbGli
cmFyeSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgc3RhdGljIEZUX0xpYnJhcnkgbGlicmFy
eTsKICAgICBpZiAoIWxpYnJhcnkgJiYgIWluaXRpYWxpemVGcmVlVHlwZUxpYnJhcnkobGlicmFy
eSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IGZl
ZDg1NDBmNGFlYmM4NGM2OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYuLjY4OWNiNjc5ZTYzMmUyZjVh
MmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0
YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6
aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAogICAgICAgICAmJiBGVF9TZWxlY3RfQ2hhcm1h
cChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2FwcGxlX3JvbWFuKSk7CiB9CiAKLVJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVp
bnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0
YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBDYWlyb0Z0RmFj
ZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3NjYWxlZEZvbnQuZ2V0KCkpOwogICAgIEZUX0Zh
Y2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRGYWNlKCk7CkBAIC0yNjgsNyAr
MjY4LDcgQEAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6
Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGMKICAgICBpZiAoZXJyb3IgfHwgdGFibGVT
aXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7Cisg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiAjaWYg
VVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5UWVBFX01BVEgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJD
b21tb24uY3BwCmluZGV4IGI3NDlmYzE1OGRmYWJlZmQzYmQ4YzQ1NDk4YmEwYTViMjkzYmY0MDku
LmNkZWQ0YTYwYjUwYmJiYWVhNWI4NDViZGVmYmI2ODZmZTI1MjU5MzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uY3BwCkBAIC00MjQsOSArNDI0LDkgQEAgVmVjdG9yPHVpbnQ4X3Q+IEdzdE1h
cHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4geyBkYXRhKCksIHNp
emUoKSB9OwogfQogCi1SZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRC
dWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCitSZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRP
d25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0cmVhbWVyUGx1Z2luQXZhaWxhYmxlKGNvbnN0
IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXggMmI2MDU5MjM5YmI3ZjBk
OGZiZTQ1NjAyNmU1ODJhM2ZjNmYwOWMxNi4uZDgyY2QzZTE4ZWNlMDQ3NjFkNmFkNGVjMmQ1MmUy
YWQ5ZGMzODQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAtMzIsNyArMzIsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwotY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogaW5saW5lIGJvb2wgd2Via2l0R3N0
Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQgbWljcm8pCiB7CkBA
IC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgogICAgICAgICB1bm1hcEVhcmx5KCk7CiAgICAgfQog
Ci0gICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOwor
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOwogCiBwcml2YXRlOgog
ICAgIEdzdE1hcHBlZE93bmVkQnVmZmVyKEdSZWZQdHI8R3N0QnVmZmVyPiYmIGJ1ZmZlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXggMjliM2E1MDFkOGU5YTk2
MmEwYzNkMDRmYjI2MTI2ZWE0M2EzNTUyNi4uZGZiYzU4MGZiOGU5YjMwOTM2Y2NhMDhiYjg4YjQ5
YzJiYjY1M2FjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKQEAg
LTgxLDEyICs4MSwxMiBAQCBJbWFnZURlY29kZXJHU3RyZWFtZXJTYW1wbGUqIHRvU2FtcGxlKEl0
ZXJhdG9yIGl0ZXIpCiAgICAgcmV0dXJuIChJbWFnZURlY29kZXJHU3RyZWFtZXJTYW1wbGUqKWl0
ZXItPnNlY29uZC5nZXQoKTsKIH0KIAotUmVmUHRyPEltYWdlRGVjb2RlckdTdHJlYW1lcj4gSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8SW1hZ2VEZWNvZGVy
R1N0cmVhbWVyPiBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyKGRh
dGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsK
IH0KIAotSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbWFnZURlY29kZXJHU3RyZWFtZXIoU2hhcmVk
QnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURlY29kZXJHU3RyZWFtZXI6OkltYWdlRGVjb2Rl
ckdTdHJlYW1lcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgOiBt
X21pbWVUeXBlKG1pbWVUeXBlKQogewogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxh
ZzsKQEAgLTE5OSw3ICsxOTksNyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckdTdHJl
YW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdQogICAgIHJldHVy
biBudWxscHRyOwogfQogCi12b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0YShTaGFy
ZWRCdWZmZXImIGRhdGEsIGJvb2wpCit2b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0
YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sKQogewogICAgIHB1c2hFbmNvZGVk
RGF0YShkYXRhKTsKIH0KQEAgLTQyNiw3ICs0MjYsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFn
ZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25z
dAogICAgIHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6VW5rbm93bjsKIH0KIAotdm9pZCBJbWFn
ZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gY29udGlndW91c0J1
ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOwogICAgIG1fZW9zID0gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKaW5kZXggNjZmMzM3Mjg0NmE0ZGY4NzRmNDIw
ZGI2NTRlNjg5YzllNDNiMGM1Mi4uZDNlZjZhNDVjZDdkYmRmYzMxMjBlYTIzZjhkZWIzYzU5OTcx
YWU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaApAQCAtNDEsOCArNDEs
OCBAQCBjbGFzcyBJbWFnZURlY29kZXJHU3RyZWFtZXIgZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNv
ZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShJbWFnZURlY29kZXJHU3RyZWFtZXIpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKLSAg
ICBJbWFnZURlY29kZXJHU3RyZWFtZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEltYWdlRGVjb2RlckdTdHJlYW1lcj4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pOworICAgIEltYWdlRGVjb2RlckdTdHJlYW1lcihGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXJHU3RyZWFtZXIo
KSA9IGRlZmF1bHQ7CiAKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c01lZGlhVHlwZShNZWRpYVR5
cGUgdHlwZSkgeyByZXR1cm4gdHlwZSA9PSBNZWRpYVR5cGU6OlZpZGVvOyB9CkBAIC03Miw3ICs3
Miw3IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQs
IGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpT
eW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxv
bmcgbG9uZykgZmluYWwgeyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0
YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9lb3M7IH0KICAgICB2b2lkIGNsZWFy
RnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsOwogCkBAIC0xMjIsNyArMTIyLDcgQEAgcHJp
dmF0ZToKICAgICB9OwogCiAgICAgdm9pZCBoYW5kbGVTYW1wbGUoR1JlZlB0cjxHc3RTYW1wbGU+
JiYpOwotICAgIHZvaWQgcHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAg
IHZvaWQgcHVzaEVuY29kZWREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAog
ICAgIGNvbnN0IEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZSogc2FtcGxlQXRJbmRleChzaXpl
X3QpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDVkODZmYjFhZjQ4N2MwMjg5ZTAwMTI1NTk2NWMzMWRjZGE5NzM0MjYuLjkzMDE5MDk5
NDViNGEyM2Q2Njc4MmYzNTBiNTZlNDQ3OWY4MDI2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAg
ICAvLyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRob2RzLgogICAgIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNo
ZWNrKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lk
IGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtMTA5Myw3ICsxMDkzLDcg
QEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb24KICAgICBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRD
b250aW51ZVBvbGljeUNoZWNrOjpZZXMpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlU3RyZWFt
aW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Ojpk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgV2Vi
S2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5
Q2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvQ0RNUHJveHlDbGVhcktleS5oCmluZGV4IDY5MmE5OTZkMTljMjRlZmQ5YTQ4NTUyMzczYTU2
NzliNTJlMWVmMWMuLjM0OWJmZGNhYWQ2YzdkN2Y4ZDVhZGEwYTE3MjE5ZmQ5ZTcwNjI2ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
Q0RNUHJveHlDbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCkBAIC02MiwxMSArNjIsMTEgQEAgcHVi
bGljOgogICAgIENETVByb3h5Q2xlYXJLZXkoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+Q0RN
UHJveHlDbGVhcktleSgpOwogCi0gICAgLy8gRklYTUU6IFRoZXJlJ3MgYSBsYWNrIG9mIGNvbnNp
c3RlbmN5IGJldHdlZW4gU2hhcmVkQnVmZmVycywKKyAgICAvLyBGSVhNRTogVGhlcmUncyBhIGxh
Y2sgb2YgY29uc2lzdGVuY3kgYmV0d2VlbiBGcmFnbWVudGVkU2hhcmVkQnVmZmVycywKICAgICAv
LyBWZWN0b3I8Y2hhcj4ncyBhbmQge3VpbnQ4X3QqLHNpemVfdH0gaWRpb21zIGZvciByZXByZXNl
bnRpbmcgYSBjaHVuayBvZgotICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBzb21laG93LiBOb3RlIFNo
YXJlZEJ1ZmZlcnMgYXJlIGRhbmdlcm91cyBzaW5jZQorICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBz
b21laG93LiBOb3RlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJzIGFyZSBkYW5nZXJvdXMgc2luY2UK
ICAgICAvLyB0aGV5J3JlIG5vdCB0aHJlYWQtc2FmZSBhbmQgdGhpcyBjbGFzcyBtdXN0IG1haW50
YWluCi0gICAgLy8gdGhyZWFkLXNhZmV0eSwgYnV0IG1heWJlIFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQgY291bGQgYmUKKyAgICAvLyB0aHJlYWQtc2FmZXR5LCBidXQgbWF5YmUgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQgY291bGQgYmUKICAgICAvLyBtYWRlIHRvIHdvcmss
IGhvd2V2ZXIgdGhhdCBoYXMgemVybyBoZWxwZXJzIGZvciBkcm9wcGluZyBpbnRvCiAgICAgLy8g
aXRlcmF0b3ItYXdhcmUgLyBjb21wYXJhdG9yLWF3YXJlIGNvbnRhaW5lcnMuLi4KICAgICBzdHJ1
Y3QgY2VuY0RlY3J5cHRDb250ZXh0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCmluZGV4IDJl
ZmEwNDM2MGU4ODQ4MzgwNjE0NGMzZDcxZGU2M2FkN2I0MmI1NjEuLmMzODkxNmU3ZDA1OWU4ODli
NWM4OGVlYjA5ZTBmNGNmYzAzYzFkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcApAQCAt
MjIwLDcgKzIyMCw3IEBAIGJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzU2Vzc2lvbnMo
KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZhdGVUaHVuZGVyOjpz
dXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hh
cmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBv
cnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUg
aW5pdERhdGEgYnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0IGluIGtleWlkcyBjYXNlLgogICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJrZXlpZHMiKSAm
JiBDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdChpbml0RGF0YSkpCkBAIC0yMzcsNyArMjM3
LDcgQEAgYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJl
ZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gQ0RNUHJpdmF0ZVRodW5kZXI6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlc3BvbnNl
LmNvcHkoKTsKIH0KQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6
aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYQog
ICAgIGNhbGxiYWNrKFN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjpz
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCAgU3Vj
Y2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6c2V0U2Vy
dmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUs
ICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBPcGVuQ0RNRXJyb3IgZXJyb3Ig
PSBvcGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2NlcnRpZmljYXRlKG1fdGh1bmRlclN5c3RlbS5n
ZXQoKSwgY29uc3RfY2FzdDx1aW50OF90Kj4oY2VydGlmaWNhdGUtPmRhdGEoKSksCiAgICAgICAg
IGNlcnRpZmljYXRlLT5zaXplKCkpOwpAQCAtMzI2LDcgKzMyNiw3IEBAIFJlZlB0cjxDRE1JbnN0
YW5jZVNlc3Npb24+IENETUluc3RhbmNlVGh1bmRlcjo6Y3JlYXRlU2Vzc2lvbigpCiBjbGFzcyBQ
YXJzZWRSZXNwb25zZU1lc3NhZ2UgewogCiBwdWJsaWM6Ci0gICAgUGFyc2VkUmVzcG9uc2VNZXNz
YWdlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgUGFyc2VkUmVzcG9u
c2VNZXNzYWdlKGNvbnN0IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQog
ICAgIHsKICAgICAgICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+c2l6ZSgpKQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMzU0LDggKzM1NCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsgfQogICAgIGJvb2wgaGFzUGF5bG9hZCgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KG1fcGF5bG9hZCk7IH0KLSAgICBjb25zdCBS
ZWY8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0JiB7IEFTU0VSVChtX3BheWxvYWQpOyBy
ZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiYgcGF5bG9h
ZCgpICYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9Cisg
ICAgY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QmIHsg
QVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxvYWQudmFsdWUoKTsgfQorICAgIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpICYgeyBBU1NFUlQobV9wYXlsb2FkKTsg
cmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CiAgICAgYm9vbCBoYXNUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlLmhhc192YWx1ZSgpOyB9CiAgICAgV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdl
VHlwZSB0eXBlKCkgY29uc3QgeyBBU1NFUlQobV90eXBlKTsgcmV0dXJuIG1fdHlwZS52YWx1ZSgp
OyB9CiAgICAgV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSB0eXBlT3IoV2ViQ29yZTo6TWVk
aWFLZXlNZXNzYWdlVHlwZSBhbHRlcm5hdGUpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA/IG1fdHlw
ZS52YWx1ZSgpIDogYWx0ZXJuYXRlOyB9CkBAIC0zNjQsMTEgKzM2NCwxMSBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgYm9vbCBtX2lzVmFsaWQgeyBmYWxzZSB9OwotICAgIHN0ZDo6b3B0aW9u
YWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IG1fcGF5bG9hZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9wYXlsb2FkOwogICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZT4gbV90eXBlOwogfTsKIAotdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25UaHVuZGVyOjpjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6Y2hhbGxl
bmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogewogICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2Uo
YnVmZmVyKTsKICAgICBpZiAoIXBhcnNlZFJlc3BvbnNlTWVzc2FnZSkgewpAQCAtNDc1LDcgKzQ3
NSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6a2V5c1VwZGF0ZURvbmVDYWxs
YmFjaygpCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQogCi12b2lk
IENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNh
bGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7CiAgICAg
R1NUX0VSUk9SKCJDRE0gZXJyb3IiKTsKICAgICBHU1RfTUVNRFVNUCgiZXJyb3IgZHVtcCIsIG1l
c3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKQEAgLTQ4OCw3ICs0ODgsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBtZXNzYWdlKQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsK
IH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhU2hhcmVkQnVmZmVyLAordm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YVNoYXJlZEJ1ZmZlciwKICAgICBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtNTA2LDcgKzUwNiw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGlj
ZW5zZVR5cGUsIGNvbnN0IEF0CiAgICAgICAgIG1faW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCks
IG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCksIG51bGxwdHIsIDAsICZtX3RodW5kZXJTZXNz
aW9uQ2FsbGJhY2tzLCB0aGlzLCAmc2Vzc2lvbik7CiAgICAgaWYgKCFzZXNzaW9uKSB7CiAgICAg
ICAgIEdTVF9FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBzZXNzaW9uIik7Ci0gICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CisgICAgICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5
bG9hZCgpOwogICAgICAgICBjYWxsYmFjayhpbml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCB7IH0s
IGZhbHNlLCBGYWlsZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTE1LDcgKzUxNSw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5z
ZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0CiAKICAgICBhdXRvIGdlbmVyYXRlQ2hhbGxlbmdl
ID0gW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOwogICAgICAg
ICBpZiAobV9zZXNzaW9uSUQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBHU1RfRVJST1IoImNv
dWxkIG5vdCBjcmVhdGUgc2Vzc2lvbiBpZCIpOwogICAgICAgICAgICAgY2FsbGJhY2soaW5pdERh
dGEucmVsZWFzZU5vbk51bGwoKSwgeyB9LCBmYWxzZSwgRmFpbGVkKTsKQEAgLTU0NSwxMyArNTQ1
LDEzIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6c2Vzc2lvbkZhaWx1cmUoKQog
ICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklE
LCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0
ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSBt
X3Nlc3Npb25JRCk7CiAKICAgICBHU1RfVFJBQ0UoIlVwZGF0aW5nIHNlc3Npb24gJXMiLCBzZXNz
aW9uSUQudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFw
cGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7CisgICAgbV9z
ZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
cmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghcmVzcG9uc2VNZXNz
YWdlKQpAQCAtNTYyLDcgKzU2Miw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5CiAgICAgICAg
ICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShyZXNw
b25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3Nh
Z2UpOwogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9h
ZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBX
VEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAg
ICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2Vk
UmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJV
RygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAg
ICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2Fn
ZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0LApAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklECiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSBtX3Nl
c3Npb25JRCk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdl
ZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJv
b2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNz
YWdlKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAg
aWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghcmVzcG9uc2VNZXNzYWdlKQpAQCAtNTk3
LDcgKzU5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24o
TGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiAgICAgICAgICAgICAgICAgUGFy
c2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShyZXNwb25zZU1lc3NhZ2Up
OwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAg
ICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNl
ZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAgICAgICBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNz
YWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygiZ290IG1lc3Nh
Z2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBH
U1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsK
ICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQs
IHN0ZDo6bWFrZV9wYWlyKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS50eXBlT3IoTWVkaWFLZXlNZXNz
YWdlVHlwZTo6TGljZW5zZVJlcXVlc3QpLApAQCAtNjQwLDcgKzY0MCw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSUQsIExpY2VuCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIG1fc2Vzc2lvbklE
ID09IHNlc3Npb25JRCk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChb
dGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdlZENh
bGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wg
c3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBtdXRhYmxl
IHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3Mp
IHsKICAgICAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtNjQ5LDcgKzY0OSw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSUQsIExpY2VuCiAgICAgICAgICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBh
cnNlZFJlc3BvbnNlTWVzc2FnZShidWZmZXIpOwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJz
ZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1l
c3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwor
ICAgICAgICAgICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9
IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIEdTVF9ERUJVRygic2Vzc2lvbiAlcyByZW1vdmVkLCBtZXNzYWdlIGxlbmd0aCAlenUi
LCBtX3Nlc3Npb25JRC51dGY4KCkuZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAg
ICAgICAgICAgICBjYWxsYmFjayhtX2tleVN0b3JlLmFsbEtleXNBcyhNZWRpYUtleVN0YXR1czo6
UmVsZWFzZWQpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKaW5kZXggY2RkOGRh
MjExMjNjMTc5MWFlMmZiNjQzOWZmMmQ2ZmEwZDJlYjIxYy4uMTAyMGUxNTMyMjcxYjUzNTFlMTA2
ZGRlOGYyMWVhNTQwNWE5YzIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKQEAgLTkzLDggKzkz
LDggQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKICAgICBi
b29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBz
dXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKIHByaXZh
dGU6CkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgIC8vIENETUluc3RhbmNlCiAgICAg
SW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6VGh1bmRlcjsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdp
dGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rp
c3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJh
Y2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0
aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5h
bDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
a2V5U3lzdGVtOyB9CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lv
bigpIGZpbmFsOwpAQCAtMTI2LDggKzEyNiw4IEBAIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvblRo
dW5kZXIgZmluYWwgOiBwdWJsaWMgQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgewogcHVibGljOgog
ICAgIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXIoQ0RNSW5zdGFuY2VUaHVuZGVyJik7CiAKLSAg
ICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYm
KSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsK
KyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNl
bnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmlu
YWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2Fs
bGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcm
LCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKQEAgLTE0
MSwxNCArMTQxLDE0IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ0RNSW5zdGFuY2VUaHVuZGVy
KiBjZG1JbnN0YW5jZVRodW5kZXIoKSBjb25zdDsKIAotICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9
IHZvaWQgKENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OiopKFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpOworICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9IHZvaWQgKENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OiopKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKTsKICAgICB1c2luZyBDaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZv
aWQoKT47Ci0gICAgdXNpbmcgU2Vzc2lvbkNoYW5nZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQo
Ym9vbCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+OworICAgIHVzaW5nIFNlc3Npb25DaGFuZ2Vk
Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGJvb2wsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKT47CiAKLSAgICB2b2lkIGNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgY2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQga2V5VXBkYXRlZENhbGxi
YWNrKEtleUlEVHlwZSYmKTsKICAgICB2b2lkIGtleXNVcGRhdGVEb25lQ2FsbGJhY2soKTsKLSAg
ICB2b2lkIGVycm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBl
cnJvckNhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBDRE1J
bnN0YW5jZVNlc3Npb246OktleVN0YXR1cyBzdGF0dXMoY29uc3QgS2V5SURUeXBlJikgY29uc3Q7
CiAgICAgdm9pZCBzZXNzaW9uRmFpbHVyZSgpOwogCkBAIC0xNTksNyArMTU5LDcgQEAgcHJpdmF0
ZToKICAgICBJbml0RGF0YSBtX2luaXREYXRhOwogICAgIE9wZW5DRE1TZXNzaW9uQ2FsbGJhY2tz
IG1fdGh1bmRlclNlc3Npb25DYWxsYmFja3MgeyB9OwogICAgIEJveFB0cjxPcGVuQ0RNU2Vzc2lv
bj4gbV9zZXNzaW9uOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWVzc2FnZTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdlOwogICAgIGJvb2wgbV9uZWVk
c0luZGl2aWR1YWxpemF0aW9uIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8Q2hhbGxlbmdlR2VuZXJh
dGVkQ2FsbGJhY2s+IG1fY2hhbGxlbmdlQ2FsbGJhY2tzOwogICAgIFZlY3RvcjxTZXNzaW9uQ2hh
bmdlZENhbGxiYWNrPiBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVV
dGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCmluZGV4IGNhYTUwZWQ1YzNjMzk5ODMyMmQ0
YTJjMjc2MjU2ZTE4MDFmMWViYjEuLmVhODkwZjY3ZGEyMTM4N2Y0MGRhNjUxYTBjYTVjNzM0OTNl
ODRmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAK
QEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgR01hcmt1cFBh
cnNlQ29udGV4dFVzZXJEYXRhIHsKICAgICBib29sIGlzUGFyc2luZ1Bzc2ggeyBmYWxzZSB9Owot
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwc3NoOworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHBzc2g7CiB9OwogCiBzdGF0aWMgdm9pZCBtYXJrdXBTdGFydEVsZW1lbnQoR01h
cmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdjaGFyKiBlbGVtZW50TmFtZSwgY29uc3QgZ2NoYXIq
KiwgY29uc3QgZ2NoYXIqKiwgZ3BvaW50ZXIgdXNlckRhdGFQdHIsIEdFcnJvcioqKQpAQCAtNTcs
NyArNTcsNyBAQCBzdGF0aWMgdm9pZCBtYXJrdXBUZXh0KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBj
b25zdCBnY2hhciogdGV4dCwgZ3NpemUgdGV4dExlbmd0aAogICAgIGlmICh1c2VyRGF0YS0+aXNQ
YXJzaW5nUHNzaCkgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcHNz
aCA9IGJhc2U2NERlY29kZSh0ZXh0LCB0ZXh0TGVuZ3RoKTsKICAgICAgICAgaWYgKHBzc2guaGFz
X3ZhbHVlKCkpCi0gICAgICAgICAgICB1c2VyRGF0YS0+cHNzaCA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7CisgICAgICAgICAgICB1c2VyRGF0YS0+cHNz
aCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBzc2gpKTsKICAgICB9CiB9CiAKQEAg
LTcxLDkgKzcxLDkgQEAgc3RhdGljIHZvaWQgbWFya3VwRXJyb3IoR01hcmt1cFBhcnNlQ29udGV4
dCosIEdFcnJvciosIGdwb2ludGVyKQogCiBzdGF0aWMgR01hcmt1cFBhcnNlciBtYXJrdXBQYXJz
ZXIgeyBtYXJrdXBTdGFydEVsZW1lbnQsIG1hcmt1cEVuZEVsZW1lbnQsIG1hcmt1cFRleHQsIG1h
cmt1cFBhc3N0aHJvdWdoLCBtYXJrdXBFcnJvciB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJ
bml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiB1bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5p
dERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNl
ZFBheWxvYWQpCiB7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBheWxvYWQg
PSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5
bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKICAgICBpZiAoIXBheWxvYWQgfHwgIXBh
eWxvYWQtPnNpemUoKSkKICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmluZGV4IDMzMGJlMjEzYzdmZWZlZGIyZjc4OGI1
YzFlYzQ0MWFmNzE5NDlkNDkuLmFiMjY0ZjM3NzdmZDY5ODk3NWU4M2I4ZDdiZjhhYzk2OGIyOWFj
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAtNTQs
NyArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBh
eWxvYWQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogCi0gICAgSW5pdERhdGEoY29uc3QgU3Ry
aW5nJiBzeXN0ZW1JZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQorICAgIEluaXRE
YXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIHBheWxvYWQpCiAgICAgICAgIDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKICAgICB7CiAgICAg
ICAgIGlmIChwYXlsb2FkKSB7CkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9w
YXlsb2FkLmFwcGVuZCgqaW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkLmdldCgpOyB9
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJl
dHVybiBtX3BheWxvYWQuZ2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29u
c3QgeyByZXR1cm4gbV9zeXN0ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlw
ZSgpIGNvbnN0CiAgICAgewpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biAiY2VuYyJfczsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0
cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CisgICAg
c3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVk
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5c3Rl
bUlkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IDU2NGUxZTc1NDRhNTgzZjQx
OGUwZGViZTBlMjVjZTZiNGJmNTQ3OTkuLmJkMTEzYmI2YzI3MzFmYTE5YWRkZWZkMzNhOTlkNDZi
YjRhMWY0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTUyLDcgKzUyLDcg
QEAgRm9udFBsYXRmb3JtRGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1E
YXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYKICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShm
b250LmdldCgpLCBzaXplLCBib2xkLCBpdGFsaWMsIG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQs
IGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpLCAmY3JlYXRpb25EYXRhKTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+IGJ1ZmZlckRhdGEgPSBidWZmZXIuY3JlYXRlQ0ZEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5oCmluZGV4IDdiYzY2N2U0NjliMDA2MTUxZWIyNWI3OWM4ODY5Zjc2YTMyZjAwNzEu
LjY5MjhhNjNlOTcxYzdjMzVlODg0NGVlZjczYmZhNDRhOGQ4YzAzMDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZv
bnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xh
c3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBG
b250RmVhdHVyZVNldHRpbmdzOwpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBs
YXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLVdFQkNPUkVfRVhQ
T1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsK
K1dFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYp
OwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlTWF0aERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKaW5kZXggYjQxNzkyM2U2ZDc1Zjkz
Y2ZkMWU0Y2MzMWY4NTAzNmUxYzYyZjRjMi4uNWQ4OGNkNzc2ODk4YzA1YTkwMzU4OWUyZDRiYWM3
MzBhYTFkZjk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKQEAgLTY1LDcgKzY1LDcg
QEAgc3RydWN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7
CiAgICAgT3BlblR5cGU6OlVJbnQxNiBpdGFsaWNzQ29ycmVjdGlvbkNvdW50OwogICAgIE9wZW5U
eXBlOjpNYXRoVmFsdWVSZWNvcmQgaXRhbGljc0NvcnJlY3Rpb25bMV07IC8vIFRoZXJlIGFyZSBp
dGFsaWNzQ29ycmVjdGlvbkNvdW50IGl0YWxpYyBjb3JyZWN0aW9uIHZhbHVlcy4KIAotICAgIGlu
dDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIEdseXBoIGdseXBoKSBjb25zdAorICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlv
bihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgewog
ICAgICAgICB1aW50MTZfdCBjb3VudCA9IHVpbnQxNl90KGl0YWxpY3NDb3JyZWN0aW9uQ291bnQp
OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmaXRhbGljc0NvcnJlY3Rpb25bY291
bnRdKSkKQEAgLTkzLDcgKzkzLDcgQEAgc3RydWN0IE1hdGhHbHlwaEluZm8gOiBUYWJsZVdpdGhD
b3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBleHRlbmRlZFNoYXBlQ292ZXJhZ2VPZmZz
ZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoS2VybkluZm9PZmZzZXQ7CiAKLSAgICBjb25z
dCBNYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRo
SXRhbGljc0NvcnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0
ID0gbWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkK
QEAgLTEyMCw3ICsxMjAsNyBAQCBzdHJ1Y3QgR2x5cGhBc3NlbWJseSA6IFRhYmxlQmFzZSB7CiAg
ICAgICAgIFBhcnRGbGFnc0V4dGVuZGVyID0gMHgwMQogICAgIH07CiAKLSAgICB2b2lkIGdldEFz
c2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8
T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAg
ICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3Rv
cjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAog
ICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBwYXJ0Q291bnQ7CiAgICAgICAgIGlmICgh
aXNWYWxpZEVuZChidWZmZXIsICZwYXJ0UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTQzLDcgKzE0Myw3
IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICBP
cGVuVHlwZTo6VUludDE2IGFkdmFuY2VNZWFzdXJlbWVudDsKICAgICB9IG1hdGhHbHlwaFZhcmlh
bnRSZWNvcmRzWzFdOyAvLyBUaGVyZSBhcmUgdmFyaWFudENvdW50IE1hdGhHbHlwaFZhcmlhbnRS
ZWNvcmQncy4KIAotICAgIHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CisgICAgdm9p
ZCBnZXRTaXplVmFyaWFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlw
aD4mIHZhcmlhbnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSB2YXJp
YW50Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhWYXJp
YW50UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhD
b25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICAgICAgdmFyaWFudHNbaV0gPSBtYXRo
R2x5cGhWYXJpYW50UmVjb3Jkc1tpXS52YXJpYW50R2x5cGg7CiAgICAgfQogCi0gICAgdm9pZCBn
ZXRBc3NlbWJseVBhcnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVj
dG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0
CisgICAgdm9pZCBnZXRBc3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBW
ZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29u
c3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IGdseXBoQXNzZW1ibHlPZmZzZXQ7
CiAgICAgICAgIGNvbnN0IEdseXBoQXNzZW1ibHkqIGdseXBoQXNzZW1ibHkgPSB2YWxpZGF0ZU9m
ZnNldDxHbHlwaEFzc2VtYmx5PihidWZmZXIsIG9mZnNldCk7CkBAIC0xNzAsNyArMTcwLDcgQEAg
c3RydWN0IE1hdGhWYXJpYW50cyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6
VUludDE2IGhvcml6b250YWxHbHlwaENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEds
eXBoQ29uc3RydWN0aW9uc09mZnNldFsxXTsgLy8gVGhlcmUgYXJlIHZlcnRpY2FsR2x5cGhDb3Vu
dCB2ZXJ0aWNhbCBnbHlwaCBjb250cnVjdGlvbnMgYW5kIGhvcml6b250YWxHbHlwaENvdW50IHZl
cnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucy4KIAotICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVj
dGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKKyAgICBjb25zdCBN
YXRoR2x5cGhDb25zdHJ1Y3Rpb24qIG1hdGhHbHlwaENvbnN0cnVjdGlvbihjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKICAgICB7
CiAgICAgICAgIHVpbnQzMl90IGNvdW50ID0gdWludDE2X3QodmVydGljYWxHbHlwaENvdW50KSAr
IHVpbnQxNl90KGhvcml6b250YWxHbHlwaENvdW50KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5k
KGJ1ZmZlciwgJm1hdGhHbHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbY291bnRdKSkKQEAgLTIwNCw3
ICsyMDQsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6
T2Zmc2V0IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoVmFy
aWFudHNPZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRo
Q29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aENvbnN0YW50c09mZnNldDsK
ICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIxMiw3ICsyMTIsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxl
IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29u
c3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5m
byhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQx
Nl90IG9mZnNldCA9IG1hdGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBA
IC0yMjAsNyArMjIwLDcgQEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZh
cmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBj
b25zdCBNYXRoVmFyaWFudHMqIG1hdGhWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhWYXJpYW50c09m
ZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAppbmRleCAz
ZmY2NmQzMTE4MmU1YzRiMzZkZDNmMzMwN2E2ODRiOTVkOTU5M2UzLi4yOTkwYmZiMDNmNTYxOTQ1
NzdmZGQ0NDc2ZjE0NDk0YWIxODAzNWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC00
MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURh
dGE7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwog
Y2xhc3MgRm9udDsKIAogY2xhc3MgT3BlblR5cGVNYXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVk
PE9wZW5UeXBlTWF0aERhdGE+IHsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIGV4
cGxpY2l0IE9wZW5UeXBlTWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogCiAjaWYg
RU5BQkxFKE9QRU5UWVBFX01BVEgpCi0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IG1fbWF0aEJ1ZmZlcjsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CiAj
ZWxpZiBVU0UoSEFSRkJVWlopCiAgICAgSGJVbmlxdWVQdHI8aGJfZm9udF90PiBtX21hdGhGb250
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKaW5kZXggMzA0OTYzYTVkZTkwYzgxYzhkNjMwOTEy
Njc3ODg3NTMxZDg2ZDJhZi4uYzg2NGIyYzNhOGZiMWFlMzc2MzA5M2VlNTA1NWIzNjUxZWYwMTI2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVHlwZXMuaApAQCAtNzMsNyArNzMsNyBAQCB0eXBlZGVmIFVJbnQxNiBH
bHlwaElEOwogdHlwZWRlZiB1aW50MzJfdCBUYWc7CiAjZGVmaW5lIE9UX01BS0VfVEFHKGNoMSwg
Y2gyLCBjaDMsIGNoNCkgKCgoKHVpbnQzMl90KShjaDQpKSA8PCAyNCkgfCAoKCh1aW50MzJfdCko
Y2gzKSkgPDwgMTYpIHwgKCgodWludDMyX3QpKGNoMikpIDw8IDgpIHwgKCh1aW50MzJfdCkoY2gx
KSkpCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJs
ZShjb25zdCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNv
dW50ID0gMSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVU
YWJsZShjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAx
KQogewogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c2l6ZSgpIDwgc2l6ZW9mKFQpICogY291
bnQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtODIsNyArODIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZQogCiBzdHJ1Y3QgVGFibGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgYm9v
bCBpc1ZhbGlkRW5kKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
dm9pZCogcG9zaXRpb24pCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24pCiAgICAgewogICAgICAgICBpZiAo
cG9zaXRpb24gPCBidWZmZXIuZGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
OTAsNyArOTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBvZmZzZXQgPD0gYnVmZmVy
LnNpemUoKTsgLy8gIjw9IiBiZWNhdXNlIGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxpZAogICAgIH0K
IAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlv
bikKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlUHRy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7
CiAgICAgICAgIGNvbnN0IFQqIGNhc3RlZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KHBv
c2l0aW9uKTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmNhc3RlZFsxXSkpCkBA
IC05OCw3ICs5OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIGNhc3RlZDsKICAgICB9
CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRlT2Zmc2V0KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gdmFsaWRhdGVQdHI8VD4oYnVmZmVyLCByZWludGVycHJldF9jYXN0PGNvbnN0
IGludDhfdCo+KHRoaXMpICsgb2Zmc2V0KTsKICAgICB9CkBAIC0xMjcsNyArMTI3LDcgQEAgc3Ry
dWN0IENvdmVyYWdlMlRhYmxlIDogQ292ZXJhZ2VUYWJsZSB7CiAjaWYgRU5BQkxFKE9QRU5UWVBF
X01BVEgpCiBzdHJ1Y3QgVGFibGVXaXRoQ292ZXJhZ2UgOiBUYWJsZUJhc2UgewogcHJvdGVjdGVk
OgotICAgIGJvb2wgZ2V0Q292ZXJhZ2VJbmRleChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWlu
dDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CisgICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwg
R2x5cGggZ2x5cGgsIHVpbnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAogICAgIHsKICAgICAg
ICAgc3dpdGNoIChjb3ZlcmFnZS0+Y292ZXJhZ2VGb3JtYXQpIHsKICAgICAgICAgY2FzZSAxOiB7
IC8vIENvdmVyYWdlIEZvcm1hdCAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKaW5kZXgg
M2NhNzI3YWFmYmQyY2FkNGJlMTA2ZjFkYzRjM2YyZTdkZDQ0ODA1Zi4uMzIxNmI3ZWYwNmU5YTQ4
MDA5OTE1OTIzMDU2YWNhM2ZjYmY5MmQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNw
cApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgRU9USGVhZGVyOjphcHBlbmRQYWRkaW5nU2hvcnQo
KQogCiAvLyBhZGRzIGZvbnROYW1lIHRvIHRoZSBmb250IHRhYmxlIGluIGZvbnREYXRhLCBhbmQg
d3JpdGVzIHRoZSBuZXcgZm9udCB0YWJsZSB0byByZXdyaXR0ZW5Gb250VGFibGUKIC8vIHJldHVy
bnMgdGhlIHNpemUgb2YgdGhlIG5hbWUgdGFibGUgKHdoaWNoIGlzIHVzZWQgYnkgcmVuYW1lQW5k
QWN0aXZhdGVGb250KSwgb3IgMCBvbiBlYXJseSBhYm9ydAotYm9vbCByZW5hbWVGb250KGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1l
LCBWZWN0b3I8dWludDhfdD4mIHJld3JpdHRlbkZvbnREYXRhKQorYm9vbCByZW5hbWVGb250KGNv
bnN0IFNoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rv
cjx1aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCiB7CiAgICAgc2l6ZV90IG9yaWdpbmFsRGF0
YVNpemUgPSBmb250RGF0YS5zaXplKCk7CiAgICAgY29uc3Qgc2ZudEhlYWRlciogc2ZudCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2ZudEhlYWRlcio+KGZvbnREYXRhLmRhdGEoKSk7CkBAIC0y
NjYsNyArMjY2LDcgQEAgYm9vbCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLAogfQogCiAvLyBSZW5hbWUgdGhl
IGZvbnQgYW5kIGluc3RhbGwgdGhlIG5ldyBmb250IGRhdGEgaW50byB0aGUgc3lzdGVtCi1SZWZQ
dHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCitSZWZQ
dHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVk
QnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKIHsKICAgICBWZWN0b3I8
dWludDhfdD4gcmV3cml0dGVuRm9udERhdGE7CiAgICAgaWYgKCFyZW5hbWVGb250KGZvbnREYXRh
LCBmb250TmFtZSwgcmV3cml0dGVuRm9udERhdGEpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgK
aW5kZXggMjJiZTIzMGE2MDVjNjZhMGVmNWJjMTQ4YTI2Mjc5N2QzNzJjMmFjNC4uZmEwMDA4MTE2
MDY2OTdkYzVjNTExMjMzM2M5MGM4YzkyYjRiNjcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGll
cy5oCkBAIC0zNSwxMCArMzUsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEJp
Z0VuZGlhblVTaG9ydDsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CiBzdHJ1Y3QgRU9UUHJlZml4OwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3Ry
dWN0IEVPVEhlYWRlciB7CiAgICAgRU9USGVhZGVyKCk7CkBAIC01NSw4ICs1NSw4IEBAIHByaXZh
dGU6CiAgICAgVmVjdG9yPHVpbnQ4X3QsIDUxMj4gbV9idWZmZXI7CiB9OwogCi1ib29sIHJlbmFt
ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rv
cjx1aW50OF90PiYpOwotUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZh
dGVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK2Jv
b2wgcmVuYW1lRm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8
dWludDhfdD4mKTsKK1JlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRl
Rm9udChjb25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5kZXggNzll
OWVmZTA2MDUzMzU3OWU5Y2EzYmMxMDMyMzhiZmQyODJmNzE1Yy4uMGZhOGYzMDZhZDk1MmQwNmEw
OTI5N2QwYjFkMjg3Yjg5ODgzMmEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRh
LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHN0cnVjdCBTdWJzdGl0dXRpb25TdWJUYWJsZSA6IFRh
YmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBzdWJzdEZvcm1hdDsKICAgICBPcGVuVHlw
ZTo6T2Zmc2V0IGNvdmVyYWdlT2Zmc2V0OwogCi0gICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292
ZXJhZ2UoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVy
biB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihidWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsg
fQorICAgIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihidWZm
ZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQogfTsKIAogc3RydWN0IFNpbmdsZVN1YnN0aXR1dGlvbjJT
dWJUYWJsZSA6IFN1YnN0aXR1dGlvblN1YlRhYmxlIHsKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdHJ1
Y3QgTG9va3VwVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgc3ViVGFi
bGVPZmZzZXRzWzFdOwogICAgIC8vIE9wZW5UeXBlOjpVSW50MTYgbWFya0ZpbHRlcmluZ1NldDsg
dGhpcyBmaWVsZCBjb21lcyBhZnRlciB2YXJpYWJsZSBsZW5ndGgsIHNvIG9mZnNldCBpcyBkZXRl
cm1pbmVkIGR5bmFtaWNhbGx5LgogCi0gICAgYm9vbCBnZXRTdWJzdGl0dXRpb25zKEhhc2hNYXA8
R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CisgICAgYm9vbCBnZXRTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiog
bWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVp
bnQxNl90IGNvdW50U3ViVGFibGUgPSBzdWJUYWJsZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFs
aWRFbmQoYnVmZmVyLCAmc3ViVGFibGVPZmZzZXRzW2NvdW50U3ViVGFibGVdKSkKQEAgLTE5NCw3
ICsxOTQsNyBAQCBzdHJ1Y3QgTG9va3VwTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6
OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cE9mZnNldHNb
MV07CiAKLSAgICBjb25zdCBMb29rdXBUYWJsZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTG9va3Vw
VGFibGUqIGxvb2t1cCh1aW50MTZfdCBpbmRleCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxvb2t1cENvdW50OwogICAg
ICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmbG9va3VwT2Zm
c2V0c1tjb3VudF0pKQpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0cnVjdCBGZWF0dXJlVGFibGUgOiBU
YWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgbG9va3VwQ291bnQ7CiAgICAgT3BlblR5
cGU6OlVJbnQxNiBsb29rdXBMaXN0SW5kZXhbMV07CiAKLSAgICBib29sIGdldEdseXBoU3Vic3Rp
dHV0aW9ucyhjb25zdCBMb29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4q
IG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJv
b2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cHMsIEhhc2hN
YXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlm
ICghaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBMaXN0SW5kZXhbY291bnRdKSkKQEAgLTIyOSw3
ICsyMjksNyBAQCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVu
VHlwZTo6T2Zmc2V0IGZlYXR1cmVPZmZzZXQ7CiAgICAgfSBmZWF0dXJlc1sxXTsKIAotICAgIGNv
bnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRhZyB0
YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25z
dCBGZWF0dXJlVGFibGUqIGZlYXR1cmUodWludDE2X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFn
LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQx
Nl90IGNvdW50ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwg
IWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbY291bnRdKSkKQEAgLTIzOSw3ICsyMzksNyBA
QCBzdHJ1Y3QgRmVhdHVyZUxpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAKLSAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcg
dGFnLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29u
c3QgRmVhdHVyZVRhYmxlKiBmaW5kRmVhdHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBmb3IgKHVpbnQxNl90IGkg
PSAwOyBpIDwgZmVhdHVyZUNvdW50OyArK2kpIHsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkRW5k
KGJ1ZmZlciwgJmZlYXR1cmVzW2ldKSAmJiBmZWF0dXJlc1tpXS5mZWF0dXJlVGFnID09IHRhZykK
QEAgLTI1NSw3ICsyNTUsNyBAQCBzdHJ1Y3QgTGFuZ1N5c1RhYmxlIDogVGFibGVCYXNlIHsKICAg
ICBPcGVuVHlwZTo6VUludDE2IGZlYXR1cmVDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGZl
YXR1cmVJbmRleFsxXTsKIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlw
ZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJs
ZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBm
ZWF0dXJlcywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICB1aW50MTZfdCBjb3VudCA9IGZlYXR1cmVDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5k
KGJ1ZmZlciwgJmZlYXR1cmVJbmRleFtjb3VudF0pKQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHN0cnVj
dCBTY3JpcHRUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgbGFu
Z1N5c09mZnNldDsKICAgICB9IGxhbmdTeXNSZWNvcmRzWzFdOwogCi0gICAgY29uc3QgTGFuZ1N5
c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50
ID0gbGFuZ1N5c0NvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbGFuZ1N5
c1JlY29yZHNbY291bnRdKSkKQEAgLTI5OCw3ICsyOTgsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6
IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgc2NyaXB0T2Zmc2V0OwogICAg
IH0gc2NyaXB0c1sxXTsKIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6
OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAg
ICBjb25zdCBTY3JpcHRUYWJsZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0g
c2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzY3JpcHRzW2Nv
dW50XSkpCkBAIC0zMTAsNyArMzEwLDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2Ug
ewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBjb25zdCBTY3JpcHRUYWJsZSogZGVm
YXVsdFNjcmlwdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0Cisg
ICAgY29uc3QgU2NyaXB0VGFibGUqIGRlZmF1bHRTY3JpcHQoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENvdW50
OwogICAgICAgICBpZiAoIWNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291
bnRdKSkKQEAgLTMyMSw3ICszMjEsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7
CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZU9mZnNldDxTY3JpcHRUYWJsZT4oYnVmZmVyLCBzY3Jp
cHRzWzBdLnNjcmlwdE9mZnNldCk7CiAgICAgfQogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBk
ZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3Jp
cHRUYWJsZSA9IGRlZmF1bHRTY3JpcHQoYnVmZmVyKTsKICAgICAgICAgaWYgKCFzY3JpcHRUYWJs
ZSkKQEAgLTMzNiwxMSArMzM2LDExIEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2Ugewog
ICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZUxpc3RPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9m
ZnNldCBsb29rdXBMaXN0T2Zmc2V0OwogCi0gICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlz
dChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZh
bGlkYXRlT2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KLSAg
ICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZUxpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4o
YnVmZmVyLCBmZWF0dXJlTGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBMb29rdXBMaXN0KiBsb29r
dXBMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1
cm4gdmFsaWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsg
fQorICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZlciwg
c2NyaXB0TGlzdE9mZnNldCk7IH0KKyAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZUxpc3Qo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0
PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IExv
b2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsg
cmV0dXJuIHZhbGlkYXRlT2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwgbG9va3VwTGlzdE9mZnNl
dCk7IH0KIAotICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJs
ZSogZGVmYXVsdExhbmdTeXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAg
ewogICAgICAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRzID0gc2NyaXB0TGlzdChidWZmZXIp
OwogICAgICAgICBpZiAoIXNjcmlwdHMpCkBAIC0zNDgsNyArMzQ4LDcgQEAgc3RydWN0IEdTVUJU
YWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBzY3JpcHRzLT5kZWZhdWx0TGFuZ1N5
cyhidWZmZXIpOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVu
VHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBm
ZWF0dXJlVGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIGNvbnN0IExhbmdTeXNUYWJsZSogbGFuZ1N5cyA9IGRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7
CiAgICAgICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcyA9IGZlYXR1cmVMaXN0KGJ1ZmZl
cik7CkBAIC0zNjUsNyArMzY1LDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAg
ICAgICAgIHJldHVybiBmZWF0dXJlOwogICAgIH0KIAotICAgIGJvb2wgZ2V0VmVydGljYWxHbHlw
aFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldFZlcnRpY2FsR2x5cGhT
dWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogdmVy
dGljYWxGZWF0dXJlVGFibGUgPSBmZWF0dXJlKE9wZW5UeXBlOjpWZXJ0RmVhdHVyZVRhZywgYnVm
ZmVyKTsKICAgICAgICAgaWYgKCF2ZXJ0aWNhbEZlYXR1cmVUYWJsZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0
aWVzLmgKaW5kZXggYTYyNzE5YjE3MTlhNzRmOTc2OTIyMTlkZjVmN2FhZWRjNDkwNjQ2Ni4uMGRi
NGFmYWRiM2Y3NDJiODNhNGUxNmNmMzcxODcwYTJiMDQwNGVhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0
aWVzLmgKQEAgLTQzLDcgKzQzLDcgQEAgZW51bSBEV1JJVEVfRk9OVF9TVFJFVENIOwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIERpcmVjdFdy
aXRlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IDhiZTFiMWEzM2E2MjA1
YzE4MWNlZmYxYWMzNDM0YmM4N2E3ODNiZTUuLmM4NjgzYTdlZjU4OWMzZmU2NTRkODQ1NzEyOTVl
MjQwZDIyNDQ5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTEwNiw3ICsx
MDYsNyBAQCBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4g
Zm9udE5hbWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBj
cmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJp
bmcgZm9udE5hbWUgPSBjcmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291
cmNlID0gcmVuYW1lQW5kQWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmgKaW5kZXggZmMwNGYxNzVjNzg4YjliZTk5OGY1ZjNiNzExZjU5N2MwMjZi
YmY5ZS4uMDhmYzlmMTllYWVhOTQ4M2VhNThlYzFhZWVkZDQ1NzI1NmNlMjdiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zNiwxMyArMzYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dG
b250KiBDR0ZvbnRSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNv
bnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7
CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250
VmFyaWFudFNldHRpbmdzOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0
aW5nczsKIHR5cGVkZWYgRm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5n
czsKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0
aW9uRGF0YSBjcmVhdGlvbkRhdGE7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3Bw
CmluZGV4IGY0ZmJmN2E3ZjRkN2M4M2ZmMjExNmMzMWU1NDZjYTkxZTA1ODljYjEuLjNjMWQ0ZTJm
M2M3NTRhNzNhODIzYTAwYzE2NzRlYzMwNDQ5MzExMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhQ2Fpcm8uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRl
VW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBp
dGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZv
bnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQo
YnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCmluZGV4
IDRjNjc0YzQ3NDNiYzAxMThhOTcwMTBjYzY5Mjg5YjU4NmRiYjBjZDEuLjMxYTFlNWM1MzFmMjA5
MDNjNWNmYjMyODYwYmE1ZWYyMDY0ZTkzZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9X
aW4uY3BwCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1J
c0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgICAgICAmJiBt
X3VzZUdESSA9PSBvdGhlci5tX3VzZUdESTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNv
bnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxl
KHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIHJldHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFi
bGUodGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCmluZGV4IDQzOWNmODYzYjg3M2Rj
OWNmN2Y4MTA1OTllNWE2MDFlN2Y3Mzc5OTcuLjZjYjU1MTEwNGE5M2JkYmQyMmI0MTdhNDU0NmQy
MGZhZDBlMmEzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKQEAgLTU5LDE4ICs1OSwxOCBA
QCBGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4gZm9u
dCwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLAogICAgIFJlc3RvcmVEQyhoZGMsIC0xKTsKIH0KIAot
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3Jt
T3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+
IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkg
Y29uc3QKIHsKICAgICBIV25kREMgaGRjKDApOwogICAgIEhHRElPQkogb2xkRm9udCA9IFNlbGVj
dE9iamVjdChoZGMsIGhmb250KCkpOwogCiAgICAgRFdPUkQgc2l6ZSA9IEdldEZvbnREYXRhKGhk
YywgdGFibGUsIDAsIDAsIDApOwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXI7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChzaXplICE9
IEdESV9FUlJPUikgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YShzaXplKTsKICAgICAg
ICAgRFdPUkQgcmVzdWx0ID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgKFBWT0lEKWRhdGEu
ZGF0YSgpLCBzaXplKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9PSBz
aXplKTsKLSAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpOworICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGRhdGEpKTsKICAgICB9CiAKICAgICBTZWxlY3RPYmplY3QoaGRjLCBvbGRGb250KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29k
ZXJEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VEZWNvZGVyRGlyZWN0MkQuY3BwCmluZGV4IDYyOWUwZTYxYTEwNGM1NjdhMWQ0ZWRjYjdlNTc5
N2RjZjY3YzZlOGUuLjc3MzU3MzliOTMzNGY0NGQ5OWEzZjEyZmZjNWJmN2I0MWY3Y2M2ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29k
ZXJEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIFBsYXRmb3JtSW1h
Z2VQdHIgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVf
dCBpbmRleCwgU3ViCiAgICAgcmV0dXJuIGJpdG1hcDsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJE
aXJlY3QyRDo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQordm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIWFsbERhdGFSZWNl
aXZlZCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAppbmRleCA0ZjQ3MjU4
NmI0MjRiZGExY2Y2ZmEwMTQzY2JhMjNkMDMwMDE2ZTQ1Li5jMjM2NWZkNzQ0YzYxMThjMTk5OWUw
NWI4MDJlZDViNDhmMzY0ODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaApAQCAtNDEsNyArNDEs
NyBAQCBjbGFzcyBJbWFnZURlY29kZXJEaXJlY3QyRCBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29k
ZXIgewogcHVibGljOgogICAgIEltYWdlRGVjb2RlckRpcmVjdDJEKCk7CiAKLSAgICBzdGF0aWMg
UmVmPEltYWdlRGVjb2RlckRpcmVjdDJEPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNv
ZGVyRGlyZWN0MkQ+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgQWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgSW1hZ2VEZWNvZGVyRGlyZWN0MkQoKSk7CiAgICAgfQpAQCAtNzIsNyArNzIsNyBA
QCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNv
bnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cykpIGZpbmFsOwogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0
YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQog
ICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWwgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwCmluZGV4
IDBkODgyMGU5ZjNkNmZkNzczNWQ1NzBiMzY0MTQ4OGY1M2JkN2VjZTkuLjJkOTcyNzBhNzM0ODM0
ODkzZTc4YzgxZmYwZWM1YmI1ZGZlYzNmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiAvLyBUaGlzIGZ1bmN0aW9uIGxvYWRzIHJlc291cmNlcyBm
cm9tIFdlYktpdAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50
b0J1ZmZlcihjb25zdCBjaGFyKik7CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKik7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVj
dGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgK
aW5kZXggN2UzYjM2MzJiOTBjNjE5NDE1ZTQ4YTUyYTIyNThiMTQyZTAwMWE1Ny4uY2YyYjUxZjZm
MDI4MzdhMTEwNmY0ZDk5OWYyZjEzMGUyNTgwOTg2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldENhblNtYXJ0UmVwbGFjZShib29sIGNhblNtYXJ0UmVwbGFjZSkgeyBtX2NhblNtYXJ0
UmVwbGFjZSA9IGNhblNtYXJ0UmVwbGFjZTsgfQogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlKCkg
Y29uc3QgeyByZXR1cm4gbV9jYW5TbWFydFJlcGxhY2U7IH0KIAotICAgIHZvaWQgc2V0Q3VzdG9t
RGF0YShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRh
ID0gV1RGTW92ZShidWZmZXIpOyB9Ci0gICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogY3VzdG9t
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tRGF0YS5nZXQoKTsgfQorICAgIHZvaWQgc2V0
Q3VzdG9tRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBX
VEZNb3ZlKGJ1ZmZlcik7IH0KKyAgICBTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7
IHJldHVybiBtX2N1c3RvbURhdGEuZ2V0KCk7IH0KICAgICBib29sIGhhc0N1c3RvbURhdGEoKSBj
b25zdCB7IHJldHVybiAhIW1fY3VzdG9tRGF0YTsgfQogICAgIHZvaWQgY2xlYXJDdXN0b21EYXRh
KCkgeyBtX2N1c3RvbURhdGEgPSBudWxscHRyOyB9CiAKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8U3RyaW5nPiBtX2ZpbGVuYW1lczsKICAgICBSZWZQdHI8SW1hZ2U+IG1f
aW1hZ2U7CiAgICAgYm9vbCBtX2NhblNtYXJ0UmVwbGFjZSB7IGZhbHNlIH07Ci0gICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKKyAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2N1c3RvbURhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUlt
YWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9T
Y2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKaW5kZXggZDk1NmQ5ZTc2MjVkNWJiNWE3MGYwNjkzZTc3
OThlZTkwODQ5ZjE2NS4uMzNjOTVlYzMzMzNhOTIwYzY0YTAxODE3NTFlYjRhNTA1ZWYxYTdhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSB7CiAKLXN0YXRpYyB1bnNpZ25lZCBjb3B5RnJvbVNo
YXJlZEJ1ZmZlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QgU2hh
cmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpCitzdGF0aWMgdW5zaWduZWQgY29weUZyb21TaGFyZWRC
dWZmZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikKIHsKICAgICB1bnNpZ25lZCBieXRlc0V4dHJh
Y3RlZCA9IDA7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogc2hhcmVkQnVmZmVyKSB7
CkBAIC0xMzUsNyArMTM1LDcgQEAgYm9vbCBtYXRjaGVzQ1VSU2lnbmF0dXJlKGNoYXIqIGNvbnRl
bnRzKQogCiB9CiAKLVJlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gU2NhbGFibGVJbWFnZURl
Y29kZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikK
K1JlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0
ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxlbmd0aE9mTG9uZ2VzdFNpZ25hdHVyZSA9IDE0
OyAvLyBUbyB3aXQ6ICJSSUZGPz8/P1dFQlBWUCIKICAgICBjaGFyIGNvbnRlbnRzW2xlbmd0aE9m
TG9uZ2VzdFNpZ25hdHVyZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCAzYzZhM2E1
MGM4MjA5NjRlOGE5YjA3NDkwMWE5MmIzZjNjNDc4OWI3Li45YzQwNTU3ODI0MWQwYzUxMjcwMjk1
MTVjMjIxMjY1OGY4YzRmNjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTYwLDcg
KzYwLDcgQEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyBudWxscHRyIGlmIHdlIGNhbid0IHNu
aWZmIGEgc3VwcG9ydGVkIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgZGF0YSAocG9zc2libHkKICAg
ICAvLyBiZWNhdXNlIHRoZXJlIGlzbid0IGVub3VnaCBkYXRhIHlldCkuCi0gICAgc3RhdGljIFJl
ZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRy
PFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQog
CkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fZW5jb2RlZERhdGFT
dGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlOwogICAgIH0KIAotICAgIHZvaWQg
c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlk
ZQorICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKICAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFT
dGF0dXM6OkVycm9yKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlv
bmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RkOjpudWxs
b3B0OyB9CiAKIHByb3RlY3RlZDoKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dD4gbV9kYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dD4gbV9kYXRhOwogICAgIFZlY3RvcjxTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lLCAxPiBtX2Zy
YW1lQnVmZmVyQ2FjaGUgV1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOwogICAgIG11dGFibGUg
TG9jayBtX2xvY2s7CiAgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJ
bWFnZVJlYWRlci5jcHAKaW5kZXggN2M2MDNmZDgzNThjMjE0YWM5MTg0ZjMxODk5NzJmZTg0MWI2
MWU4MC4uMjZmODg2NDk2ZTVhNWExNGUyOGFmYjFhZmE5YmZjMzAxNzdmNTFjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VS
ZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2
aWYvQVZJRkltYWdlUmVhZGVyLmNwcApAQCAtNDEsNyArNDEsNyBAQCBBVklGSW1hZ2VSZWFkZXI6
OkFWSUZJbWFnZVJlYWRlcihSZWZQdHI8QVZJRkltYWdlRGVjb2Rlcj4mJiBkZWNvZGVyKQogCiBB
VklGSW1hZ2VSZWFkZXI6On5BVklGSW1hZ2VSZWFkZXIoKSA9IGRlZmF1bHQ7CiAKLWJvb2wgQVZJ
RkltYWdlUmVhZGVyOjpwYXJzZUhlYWRlcihjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK2Jvb2wgQVZJRkltYWdlUmVhZGVyOjpwYXJz
ZUhlYWRlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGF2aWZEZWNvZGVyU2V0SU9NZW1vcnko
bV9hdmlmRGVjb2Rlci5nZXQoKSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSAhPSBBVklGX1JF
U1VMVF9PSykKICAgICAgICAgcmV0dXJuIGFsbERhdGFSZWNlaXZlZCA/IG1fZGVjb2Rlci0+c2V0
RmFpbGVkKCkgOiBmYWxzZTsKQEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBBVklGSW1hZ2VSZWFkZXI6
OnBhcnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wg
YWwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBVklGSW1hZ2VSZWFkZXI6OmRlY29kZUZy
YW1lKHNpemVfdCBmcmFtZUluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiBidWZmZXIs
IGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpCit2b2lkIEFWSUZJbWFnZVJl
YWRlcjo6ZGVjb2RlRnJhbWUoc2l6ZV90IGZyYW1lSW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVy
RnJhbWUmIGJ1ZmZlciwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQm
IGRhdGEpCiB7CiAgICAgaWYgKG1fZGVjb2Rlci0+ZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYv
QVZJRkltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCmluZGV4IGNiY2EwYjhjMTI0YmZmMGZmYzMzMDFiYTM1
YmNlMDFlZDI3MjJkZjguLjQ5NmY2OWY4MTJiZDc1YjBlZGE2MzU3YmFhODYwY2ZjY2I1YmE0YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYv
QVZJRkltYWdlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAg
ICAgQVZJRkltYWdlUmVhZGVyKFJlZlB0cjxBVklGSW1hZ2VEZWNvZGVyPiYmKTsKICAgICB+QVZJ
RkltYWdlUmVhZGVyKCk7CiAKLSAgICBib29sIHBhcnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQmLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgdm9pZCBkZWNvZGVG
cmFtZShzaXplX3QgaW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmLCBjb25zdCBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50Jik7CisgICAgYm9vbCBwYXJzZUhlYWRlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsK
KyAgICB2b2lkIGRlY29kZUZyYW1lKHNpemVfdCBpbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJG
cmFtZSYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Jik7CiAgICAg
c2l6ZV90IGltYWdlQ291bnQoKSBjb25zdDsKICAgICBkb3VibGUgcmVwZXRpdGlvbkNvdW50KCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggNzI3NjlhNjkyNmVjMjQx
OWJmNjYzODI1MjhkM2Q3NzIwYTU0YWRhZS4uZjc0NTVjMTQ2YzdlOGFlYjA0Y2M4YzU2ZjMzMGUy
YTAxZjNiYTcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ2LDcgKzQ2LDcg
QEAgQk1QSW1hZ2VEZWNvZGVyOjpCTVBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AKIHsKIH0KIAotdm9pZCBCTVBJbWFnZURlY29kZXI6
OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQg
Qk1QSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1w
L0JNUEltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCmluZGV4IGM3YzdjYTgxZmVhNmI4YTc3NGJiMzA4ZTUz
OGRjZDA0OGM5OTVlZWEuLjY0ZGVkNmFiYmUyYzBhMjliMTFmOWZiNWVjZDZiNDg3MjRkNTg5NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9C
TVBJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAg
ICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24o
KSBjb25zdCBmaW5hbCB7IHJldHVybiAiYm1wIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAg
ICBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGlu
ZGV4KSBmaW5hbDsKICAgICAvLyBDQVVUSU9OOiBzZXRGYWlsZWQoKSBkZWxldGVzIHxtX3JlYWRl
cnwuIEJlIGNhcmVmdWwgdG8gYXZvaWQKICAgICAvLyBhY2Nlc3NpbmcgZGVsZXRlZCBtZW1vcnks
IGVzcGVjaWFsbHkgd2hlbiBjYWxsaW5nIHRoaXMgZnJvbSBpbnNpZGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVh
ZGVyLmgKaW5kZXggNDg0NGYzODBkYzE3ZWM3MDQ1ODhmYjEyZjUzZWFiYzZkMjBlNjBmNC4uYmQ0
MzBlOGE4YmVhMmM4MTZiMmM1MjJiZjViYTc4ODQ2YzM4ZTBmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVh
ZGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgQk1QSW1hZ2VSZWFkZXIgewogcHVibGljOgog
ICAgIC8vIFJlYWQgYSB2YWx1ZSBmcm9tIHxkYXRhW29mZnNldF18LCBjb252ZXJ0aW5nIGZyb20g
bGl0dGxlIHRvIG5hdGl2ZQogICAgIC8vIGVuZGlhbm5lc3MuCi0gICAgc3RhdGljIGlubGluZSB1
aW50MTZfdCByZWFkVWludDE2KGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEs
IGludCBvZmZzZXQpCisgICAgc3RhdGljIGlubGluZSB1aW50MTZfdCByZWFkVWludDE2KGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQog
ICAgIHsKICAgICAgICAgdWludDE2X3QgcmVzdWx0OwogICAgICAgICBtZW1jcHkoJnJlc3VsdCwg
JmRhdGEuZGF0YSgpW29mZnNldF0sIDIpOwpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgc3RhdGljIGlubGluZSB1aW50MzJfdCBy
ZWFkVWludDMyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZz
ZXQpCisgICAgc3RhdGljIGlubGluZSB1aW50MzJfdCByZWFkVWludDMyKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQogICAgIHsKICAg
ICAgICAgdWludDMyX3QgcmVzdWx0OwogICAgICAgICBtZW1jcHkoJnJlc3VsdCwgJmRhdGEuZGF0
YSgpW29mZnNldF0sIDQpOwpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgQk1QSW1hZ2VS
ZWFkZXIoU2NhbGFibGVJbWFnZURlY29kZXIqIHBhcmVudCwgc2l6ZV90IGRlY29kZWRBbmRIZWFk
ZXJPZmZzZXQsIHNpemVfdCBpbWdEYXRhT2Zmc2V0LCBib29sIHVzZXNBbmRNYXNrKTsKIAogICAg
IHZvaWQgc2V0QnVmZmVyKFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGJ1ZmZlcikgeyBtX2J1
ZmZlciA9IGJ1ZmZlcjsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50JiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9CiAK
ICAgICAvLyBEb2VzIHRoZSBhY3R1YWwgZGVjb2RpbmcuIElmIHxvbmx5U2l6ZXwgaXMgdHJ1ZSwg
ZGVjb2Rpbmcgb25seQogICAgIC8vIHByb2dyZXNzZXMgYXMgZmFyIGFzIG5lY2Vzc2FyeSB0byBn
ZXQgdGhlIGltYWdlIHNpemUuIFJldHVybnMKQEAgLTI3Miw3ICsyNzIsNyBAQCBwcml2YXRlOgog
ICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIG1fYnVmZmVyOwogCiAgICAgLy8gVGhlIGZp
bGUgdG8gZGVjb2RlLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2Rh
dGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2Rh
dGE7CiAKICAgICAvLyBBbiBpbmRleCBpbnRvIHxtX2RhdGF8IHJlcHJlc2VudGluZyBob3cgbXVj
aCB3ZSd2ZSBhbHJlYWR5IGRlY29kZWQuCiAgICAgc2l6ZV90IG1fZGVjb2RlZE9mZnNldDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0lt
YWdlQmFja2luZ1N0b3JlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAKaW5kZXggNjAxMjAzNzRm
OWM0MzE2OGE2NTIxYjY5YzU0YWZiZTJhMDBmNTVmNy4uNGEyMTI1NWE4YzBmYjY3OGU0YWFkZDc2
NjNlYjdmOTE4ZTdmZTk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVD
YWlyby5jcHAKQEAgLTM3LDcgKzM3LDkgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZUJhY2tpbmdT
dG9yZTo6aW1hZ2UoKSBjb25zdAogICAgICAgICByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNo
YXIqPihjb25zdF9jYXN0PHVpbnQzMl90Kj4obV9waXhlbHNQdHIpKSwKICAgICAgICAgQ0FJUk9f
Rk9STUFUX0FSR0IzMiwgc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSwgc2l6ZSgpLndp
ZHRoKCkgKiBzaXplb2YodWludDMyX3QpKSk7CiAgICAgc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9r
ZXlfdCBzX3N1cmZhY2VEYXRhS2V5OwotICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0YShz
dXJmYWNlLmdldCgpLCAmc19zdXJmYWNlRGF0YUtleSwgbV9waXhlbHMuZ2V0KCksIFtdKHZvaWQq
IGRhdGEpIHsgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KGRhdGEpLT5k
ZXJlZigpOyB9KTsKKyAgICBjYWlyb19zdXJmYWNlX3NldF91c2VyX2RhdGEoc3VyZmFjZS5nZXQo
KSwgJnNfc3VyZmFjZURhdGFLZXksIG1fcGl4ZWxzLmdldCgpLCBbXSh2b2lkKiBkYXRhKSB7Cisg
ICAgICAgIHN0YXRpY19jYXN0PERhdGFTZWdtZW50Kj4oZGF0YSktPmRlcmVmKCk7CisgICAgfSk7
CiAKICAgICByZXR1cm4gc3VyZmFjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKaW5k
ZXggZTZhYmUwZDk1NDRiNmMxODVjNjQ1ZGVjZTA5ZjIzZjk1NjY2MDdjYi4uYjllYzAxYjhhZThl
OGQyOWJjNzgyNTI2ZTA3NjUyNTUxZTM1OWMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5j
cHAKQEAgLTM4LDcgKzM4LDcgQEAgR0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFnZURlY29kZXIoQWxw
aGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AKIAogR0lGSW1hZ2VE
ZWNvZGVyOjp+R0lGSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lkIEdJRkltYWdlRGVj
b2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQor
dm9pZCBHSUZJbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKaW5kZXggMzVkZjMzZjZkZmM0ODNmZDg0NzEz
NjZhZTUzYmIwYjk2MWNhZWQyZS4uYzc0NzE5OTk5Yjk4NmMxY2VmODQ3ODc1OWQyMzcxOGM5MDQy
ZDNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6
CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVu
c2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJnaWYiX3M7IH0KLSAgICB2b2lkIHNldERhdGEo
U2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9p
ZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKSBmaW5hbDsKICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsOwogICAg
IHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3QgZmluYWw7CiAgICAgUmVwZXRpdGlvbkNvdW50IHJl
cGV0aXRpb25Db3VudCgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAppbmRleCA0
MjE0NmUwMzI5MzIzNjk5Nzg5ZWI1ZTQyYWY0YzczZDM0YWI5Y2M2Li4xMDgyZmRmMGRmZjIzOTFl
NTY1MzBhNDFmODdiYTQzOTgyMzI3NTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaApAQCAtMjM3
LDcgKzIzNyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7
IH0KKyAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KICAgICAvLyBGSVhNRTogaGFsdEF0
RnJhbWUgc2hvdWxkIGJlIHNpemVfdC4KICAgICBib29sIGRlY29kZShXZWJDb3JlOjpHSUZJbWFn
ZURlY29kZXI6OkdJRlF1ZXJ5LCB1bnNpZ25lZCBoYWx0QXRGcmFtZSk7CiAKQEAgLTMxNiw2ICsz
MTYsNiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8R0lGRnJhbWVDb250
ZXh0PiA+IG1fZnJhbWVzOwogICAgIHNpemVfdCBtX2N1cnJlbnREZWNvZGluZ0ZyYW1lOwogCi0g
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1f
ZGF0YTsKICAgICBib29sIG1fcGFyc2VDb21wbGV0ZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNv
ZGVyLmNwcAppbmRleCBjNzE3YzQ1ZDMwNTdjMDU1MzZlZTYwNTBmOTM5NzA0NmQxMGRmMmE3Li5j
MDcxMzQ1YjhiZjM2OWI4MDI3MWZiZGYwYTBjZTAxNzRmMDUwM2IxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1h
Z2VEZWNvZGVyLmNwcApAQCAtNTIsNyArNTIsNyBAQCBJQ09JbWFnZURlY29kZXI6OklDT0ltYWdl
RGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAog
CiBJQ09JbWFnZURlY29kZXI6On5JQ09JbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQg
SUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCit2b2lkIElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAppbmRleCBmYjdhOTAzYjJh
MDc1Mzk0OTE3YWJiYmYxMWIxY2VkODNmZjQzMmEwLi4xMGVlOWI0ZDJlOGM5ZDg4N2UxZDJiOGJl
MTM5YmI3NDI3MWQ1N2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0Niw3
IEBAIHB1YmxpYzoKIAogICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZp
bGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gImljbyJfczsgfQotICAgIHZv
aWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7Cisg
ICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNl
aXZlZCkgZmluYWw7CiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgZmluYWw7CiAgICAgSW50U2l6
ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QgZmluYWw7
CiAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuY3BwCmluZGV4IDFjODcxZjRkNTY0OTFiZjc3NWU4NTAwYzE2ZDBiYjg5NGQ1
NGU2ZGMuLjhmYjkyMjBlZTM3ZjZhZDgxOTM4MjA3NzRjZTIyYjFkNWNjM2E1NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdl
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIHN0YXRpYyBib29s
IGlzSUNDTWFya2VyKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIpCiAgICAgICAgICYmIG1h
cmtlci0+ZGF0YVsxMV0gPT0gJ1wwJzsKIH0KIAotc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQor
c3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVz
c19zdHJ1Y3QqIGluZm8pCiB7CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAg
Zm9yIChqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2VyID0gaW5mby0+bWFya2VyX2xpc3Q7IG1h
cmtlcjsgbWFya2VyID0gbWFya2VyLT5uZXh0KSB7CkBAIC0zMjAsNyArMzIwLDcgQEAgcHVibGlj
OgogICAgICAgICBtX2J5dGVzVG9Ta2lwID0gc3RkOjptYXgobnVtQnl0ZXMgLSBieXRlc1RvU2tp
cCwgc3RhdGljX2Nhc3Q8bG9uZz4oMCkpOwogICAgIH0KIAotICAgIGJvb2wgZGVjb2RlKGNvbnN0
IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgb25seVNpemUpCisgICAgYm9v
bCBkZWNvZGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEs
IGJvb2wgb25seVNpemUpCiAgICAgewogICAgICAgICBtX2RlY29kaW5nU2l6ZU9ubHkgPSBvbmx5
U2l6ZTsKIApAQCAtNzI2LDcgKzcyNiw3IEBAIHZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2Rl
KGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogfQogCiAjaWYgVVNFKExDTVMp
Ci12b2lkIEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9m
aWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghYnVmZmVyKQog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCmluZGV4IGMwM2FhNjc4
MjIwM2NiZDRjZmM4M2ZkZThmODcxMmI3MDgxZTNhYTkuLmQyZDdmYTZhYjQ5YjQyNDdhZmZiOGUx
ZmJlZTQ2OTUzYjBjYjA1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCkBAIC02OCw3
ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldE9yaWVudGF0
aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVu
dGF0aW9uOyB9CiAjaWYgVVNFKExDTVMpCi0gICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIHZvaWQgc2V0SUNDUHJvZmls
ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQ
RUcyMDAwSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBiZWNmNjQ1MDI3
N2VlYjc0YjA5ZGU1MmVlMTgyZmY2ZTExZWQyNzYyLi4yMDQ3M2YwZWVlYmI1NmM3MTMxNGY2NTU2
YmRhMDkwMzM0OTA3NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURl
Y29kZXIuY3BwCkBAIC0zODAsNyArMzgwLDcgQEAgdm9pZCBKUEVHMjAwMEltYWdlRGVjb2Rlcjo6
ZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIH0KIAogICAg
IHN0cnVjdCBSZWFkZXIgewotICAgICAgICBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRh
OworICAgICAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YTsKICAg
ICAgICAgc2l6ZV90IG9mZnNldDsKICAgICB9IHJlYWRlciA9IHsgKm1fZGF0YSwgMCB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5H
SW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCmluZGV4IGMxMmM0NTlhNWEzZTViMzUxYzViY2M2MmJm
MDBiOGEyODFiZDViYTMuLjRjYmQzMjNkOWE3NTAyNmVmODY1OGYzODE2ZGQ3MzhkMzdjYThlZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9Q
TkdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgcHVibGlj
OgogICAgICAgICBtX3JlYWRPZmZzZXQgPSAwOwogICAgIH0KIAotICAgIGJvb2wgZGVjb2RlKGNv
bnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgc2l6ZU9ubHksIHVuc2ln
bmVkIGhhbHRBdEZyYW1lKQorICAgIGJvb2wgZGVjb2RlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIHNpemVPbmx5LCB1bnNpZ25lZCBoYWx0QXRG
cmFtZSkKICAgICB7CiAgICAgICAgIG1fZGVjb2RpbmdTaXplT25seSA9IHNpemVPbmx5OwogICAg
ICAgICBQTkdJbWFnZURlY29kZXIqIGRlY29kZXIgPSBzdGF0aWNfY2FzdDxQTkdJbWFnZURlY29k
ZXIqPihwbmdfZ2V0X3Byb2dyZXNzaXZlX3B0cihtX3BuZykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdl
RGVjb2Rlci5jcHAKaW5kZXggMDJmMWIwOWRiYzc2NTE2MDFmOTIyZGRlMjlmODA1YTY1ODcxZTJk
Mi4uYjFiZWM1NWU3OGM0MzQ4MDFjMjU0YWNlMGRmNTk5MzFhMzZiNzRiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNv
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJw
L1dFQlBJbWFnZURlY29kZXIuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFdFQlBJbWFnZURlY29kZXI6
OldFQlBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlCiAKIFdFQlBJbWFnZURlY29kZXI6On5XRUJQSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0
OwogCi12b2lkIFdFQlBJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBp
ZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFdF
QlBJbWFnZURlY29kZXI6OmRlY29kZShzaXplX3QgZnJhbWVJbmRleCwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiAgICAgLy8gVGhpcyBjYW4gYmUgZXhlY3V0ZWQgYm90aCBpbiB0aGUgbWFpbiB0aHJl
YWQgKHdoZW4gbm90IHVzaW5nIGFzeW5jIGRlY29kaW5nKSBvciBpbiB0aGUgZGVjb2RpbmcgdGhy
ZWFkLgogICAgIC8vIFdoZW4gZXhlY3V0ZWQgaW4gdGhlIGRlY29kaW5nIHRocmVhZCwgYSBjYWxs
IHRvIHNldERhdGEoKSBmcm9tIHRoZSBtYWluIHRocmVhZCBtYXkgY2hhbmdlIHRoZSBkYXRhCiAg
ICAgLy8gdGhlIFdlYlBEZW11eGVyIGlzIHVzaW5nLCBsZWF2aW5nIGl0IGluIGFuIGluY29uc2lz
dGVudCBzdGF0ZSwgc28gd2UgbmVlZCB0byBwcm90ZWN0IHRoZSBkYXRhLgotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBwcm90ZWN0ZWREYXRhKG1fZGF0YSk7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBwcm90ZWN0ZWREYXRhKG1f
ZGF0YSk7CiAgICAgV2ViUERhdGEgaW5wdXREYXRhID0geyBwcm90ZWN0ZWREYXRhLT5kYXRhKCks
IHByb3RlY3RlZERhdGEtPnNpemUoKSB9OwogICAgIFdlYlBEZW11eFN0YXRlIGRlbXV4ZXJTdGF0
ZTsKICAgICBXZWJQRGVtdXhlciogZGVtdXhlciA9IFdlYlBEZW11eFBhcnRpYWwoJmlucHV0RGF0
YSwgJmRlbXV4ZXJTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCmluZGV4IGFmMzY1
ZTljZjljN2NlOTUzOGI2NGJhNzg5YmYwMTdkNDhmNmVkZTEuLmRkMjhiYzg4ZGY1YzBmYTNjMTU3
Mzc4NjliMjYwOTczYWFhMGQyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCkBAIC00
Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XRUJQSW1hZ2VEZWNvZGVyKCk7CiAK
ICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
d2VicCJfczsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsK
KyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwog
ICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3Qg
aW5kZXgpIG92ZXJyaWRlOwogICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBj
b25zdCBvdmVycmlkZTsKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fZnJhbWVDb3VudDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFz
dGVib2FyZElPUy5tbQppbmRleCA5MDllOGU3NjhhZGI2OGJhYjI4NDQ1ZDI4MjczNjBhM2YzZmEy
MmMzLi5iMjM3N2ZlMzQxMWQyYWM0MDE1MTNiZjA5YWU4Y2NhZTc4NmJkOGViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtMjM2LDE0ICsyMzYs
MTQgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIAogI2lmICFQTEFURk9S
TShNQUNDQVRBTFlTVCkKICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBO
U1N0cmluZyAqKWtVVFR5cGVGbGF0UlRGRF0pIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwg
a1VUVHlwZUZsYXRSVEZELCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZUZsYXRSVEZELCBtX3Bhc3RlYm9hcmRO
YW1lLCBjb250ZXh0KCkpOwogICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3Vu
dCgpKQogICAgICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5n
ZWRFeHRlcm5hbGx5OwogICAgICAgICByZXR1cm4gYnVmZmVyICYmIHJlYWRlci5yZWFkUlRGRCgq
YnVmZmVyKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJl
YWRUeXBlOwogICAgIH0KIAogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KF9fYnJpZGdl
IE5TU3RyaW5nICopa1VUVHlwZVJURl0pIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VU
VHlwZVJURiwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVSVEYsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQo
KSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAg
ICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7
CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRSVEYoKmJ1ZmZlcikgPyBSZWFk
ZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKQEAgLTI1
MSw3ICsyNTEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogI2VuZGlm
IC8vICFQTEFURk9STShNQUNDQVRBTFlTVCkKIAogICAgIGlmIChbc3VwcG9ydGVkSW1hZ2VUeXBl
cygpIGNvbnRhaW5zT2JqZWN0OnR5cGVdKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIHR5
cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9h
cmQoaXRlbUluZGV4LCB0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgICAg
ICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJu
IFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAgICBy
ZXR1cm4gYnVmZmVyICYmIHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCks
IHR5cGUsIGl0ZW1JbmZvLnByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpID8gUmVhZGVyUmVzdWx0
OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCA1
YWQxZjZmYWM0YjY1NDc1MWQ1OTFkMzYzNWM0Njg1MDM5ZDU3Mjc1Li4xNmIzZDVkNDQxNWQyNTg1
MTVmNjYwYTg2YWM2Y2VmYmRjZGI2NGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTc5LDEwICs3OSwxMCBAQCB2
b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQog
ICAgIHR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5
cGVzXSk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSkKIHsKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVi
b2FyZFR5cGU6dHlwZV0pCi0gICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSk7CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMzM4LDcgKzMzOCw3IEBAIGludDY0X3QgUGxh
dGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpCiAgICAgcmV0
dXJuIDA7CiB9CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBl
KFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYpCitpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6c2V0QnVmZmVyRm9yVHlwZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5n
JikKIHsKICAgICByZXR1cm4gMDsKIH0KQEAgLTYwOSw3ICs2MDksNyBAQCBWZWN0b3I8U3RyaW5n
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0
IFN0cmluZyYgbwogI2VuZGlmIC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9OX1NU
WUxFX0FORF9URUFNX0RBVEEKIAogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRh
ID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2Vy
aWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0g
b3JpZ2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBl
cygpKQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC02
NzIsNyArNjcyLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0
PFJlZjxTaGFyZWRCdWZmZXI+Pih2YWx1ZSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpn
ZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pih2YWx1ZSk7CiAgICAgICAgIFtyZXByZXNl
bnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CiAgICAgfSk7
CiAKQEAgLTc0Niw3ICs3NDYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OmFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKICAgICByZXR1cm4g
c3RyaW5nczsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBpZiAoKE5TSW50
ZWdlcilpbmRleCA8IDAgfHwgKE5TSW50ZWdlcilpbmRleCA+PSBbbV9wYXN0ZWJvYXJkIG51bWJl
ck9mSXRlbXNdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTc1Nyw3ICs3NTcsNyBAQCBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVm
ZmVyKHNpemVfdCBpbmRleCwgY29ucwogCiAgICAgaWYgKCFbcGFzdGVib2FyZEl0ZW0gY291bnRd
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4OjBdKTsKKyAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0p
OwogfQogCiBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBpbmRl
eCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQppbmRleCA1NDQ2NTNjNDQwM2QyNjA0MGE1
NWQyM2U5MzY5MWJmZWRjYzkyYjQyLi5iZmUzNmFiZDk3NDNhNmJhNDVlNDNjMGU4YjdkOWFlMWFl
OTA2ZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0Nv
bnZlcnRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0Nv
bnZlcnRlcklPUy5tbQpAQCAtODIsNyArODIsNyBAQCBAZW5kCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciYgcHJvdmlkZXIpCi0gICAg
OiBtX3ByZXZpZXdEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CisgICAgOiBtX3ByZXZp
ZXdEYXRhIHsgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQogICAgICwgbV9vcmln
aW5hbFJlc3BvbnNlIHsgcmVzcG9uc2UgfQogICAgICwgbV9wcm92aWRlciB7IHByb3ZpZGVyIH0K
ICAgICAsIG1fcGxhdGZvcm1EZWxlZ2F0ZSB7IGFkb3B0TlMoW1tXZWJQcmV2aWV3Q29udmVydGVy
RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6KnRoaXNdKSB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGZkNTdkMjIyYzJkNzQzMDE2
MTE2MmMwZTJiODhlOWYxY2MzMTk5MTQuLjBkMjU0OThiODZiZWYxODVkMzc2OWQ1YTViYzBiYzJm
NzMxYzcwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tCkBAIC0zMzAsNyArMzMwLDcgQEAgc3RhdGljIFN0cmluZyByZWFkU3RyaW5nQXRQcmVmZXJy
ZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHMKICAgICByZXR1
cm4gc3RyYXRlZ3kuc3RyaW5nRm9yVHlwZSh0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7
CiB9CiAKLXN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0
UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IGl0ZW1JbmRleCwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitzdGF0
aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckF0UHJlZmVycmVkSXRlbUluZGV4KGNv
bnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCwgUGFzdGVi
b2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKGl0ZW1JbmRleCkKICAg
ICAgICAgcmV0dXJuIHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCgqaXRlbUluZGV4
LCB0eXBlLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCAxYjkxOTE0ZTNm
NzI3YThlZjY4ZjllMWE2YWUxNTUzODZkOWZiYTJjLi5jM2I0ZDJkOTYyMTc0NzFjNzM1ZTI0ZmU3
YTVmOWQ5MjM3ZGY0NzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTY4LDEyICs2OCwxMiBAQCB2b2lkIFBsYXRm
b3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVz
ID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgdHlwZXNdKTsKIH0KIAotUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxh
dGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpCiB7CiAgICAgTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpwYXN0
ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29w
eV0pLmdldCgpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0
YSBjb3B5XSkuZ2V0KCkpOwogfQogCiBpbnQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpudW1iZXJPZkZp
bGVzKCkgY29uc3QKQEAgLTIxOCw3ICsyMTgsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgbwog
ewogICAgIExpc3RIYXNoU2V0PFN0cmluZz4gZG9tUGFzdGVib2FyZFR5cGVzOwogICAgIGlmIChO
U0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yVHlwZTpA
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0
YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBh
dXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAo
ZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6
IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVz
LmFkZCh0eXBlKTsKQEAgLTI2Myw4ICsyNjMsOCBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEpCiAgICAgICAgIGlmIChw
bGF0Zm9ybVR5cGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlm
IChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZl
cikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxT
aGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5T
RGF0YSgpKQorICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgeworICAgICAgICAgICAgaWYgKGF1dG8g
cGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihzdHJp
bmdPckJ1ZmZlciktPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAg
ICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpw
bGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3Rk
OjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CkBAIC0zNDEsNyArMzQxLDcgQEAgaW50NjRf
dCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMpCiAgICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQgZGVjbGFyZVR5cGVzOmNyZWF0
ZU5TQXJyYXkocGFzdGVib2FyZFR5cGVzKS5nZXQoKSBvd25lcjpuaWxdOwogfQogCi1pbnQ2NF90
IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJv
YXJkOjpzZXRCdWZmZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAoIWNhbldyaXRlUGFzdGVib2Fy
ZFR5cGUocGFzdGVib2FyZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTQ0Niw3ICs0NDYs
NyBAQCBzdGF0aWMgU3RyaW5nIHdlYlNhZmVNSU1FVHlwZUZvck1vZGVyblBhc3RlYm9hcmRUeXBl
KE5TUGFzdGVib2FyZFR5cGUgcGxhdGZvcm1UeQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0CiB7CiAgICAgTlNQYXN0ZWJvYXJkSXRlbSAqaXRlbSA9IGl0ZW1B
dEluZGV4KGluZGV4KTsKICAgICBpZiAoIWl0ZW0pCkBAIC00NTQsNyArNDU0LDcgQEAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihz
aXplX3QgaW5kZXgsIGNvbnMKIAogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbaXRlbSBkYXRhRm9y
VHlwZTp0eXBlXSkgewogICAgICAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoZGF0YS5jb3B5KTsK
LSAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0
KCkpOworICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsK
ICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUwNCw4ICs1MDQsOCBAQCBzdGF0aWMg
UmV0YWluUHRyPE5TUGFzdGVib2FyZEl0ZW0+IGNyZWF0ZVBhc3RlYm9hcmRJdGVtKGNvbnN0IFBh
c3RlYm9hcmRDdXN0b21EYQogICAgICAgICBpZiAoIXBsYXRmb3JtVHlwZSkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVk
QnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9y
bURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtl
Q29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbaXRlbSBzZXREYXRhOnBsYXRmb3JtRGF0YS5n
ZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0
byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGUuaAppbmRleCA2ODEzZDVkYTdkY2IwZmMyNTlmMWJkMWVkMGE1NGMxYTFhOWZkOWNm
Li43OTY1NTRmNGM5NzY0NTE0MDFlMWExMjM3NDY4NzA0MGIyNGIxY2MxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZS5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIE1lZGlhU2FtcGxlOwogY2xhc3Mg
TWVkaWFTdHJlYW1Qcml2YXRlOwogY2xhc3MgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU7CiBjbGFz
cyBQbGF0Zm9ybUF1ZGlvRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnM7CiAK
QEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIH07CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIEF1ZGlvVmlkZW9TZWxlY3RlZFRyYWNrcyBzZWxlY3RUcmFja3MoTWVkaWFTdHJlYW1Qcml2
YXRlJik7CiAKLSAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91
YmxlKT47CisgICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBkb3VibGUpPjsKICAgICB2aXJ0dWFsIHZvaWQgZmV0Y2hEYXRhKEZldGNoRGF0YUNhbGxi
YWNrJiYpID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCA9
IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcAppbmRleCBjMjVkZjkxNTc0
YTY1YmM0MWJkYjcwNjc4ZGM0NzcyNDgzNmRkMTQ1Li40OThkNGVlMTM0MGM0Yjk0MDAxYjYwYzM0
NDc5YjdmNzJkNWM4ZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCkBA
IC05Myw3ICs5Myw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpnZW5lcmF0ZU1v
Y2tDb3VudGVyU3RyaW5nKCkKIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6OmZldGNo
RGF0YShGZXRjaERhdGFDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYnVmZmVyTG9jayB9
OwogICAgICAgICBWZWN0b3I8dWludDhfdD4gdmFsdWUgeyBtX2J1ZmZlci5jaGFyYWN0ZXJzOCgp
LCBtX2J1ZmZlci5sZW5ndGgoKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyQ29jb2EuaAppbmRleCA1ZWQ5OGM0MTMwYjliZTAzNTIzN2JmMmVmNTA2
M2Y2YjJlY2RjMDU1Li45YzJjNzk3YjgxOTUxMmQ4ZmQ1NzkwMTVkYzNiNmU0MDVlM2JjNjBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
aApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRWaWRlb1NhbXBsZUJ1
ZmZlcihNZWRpYVNhbXBsZSYpOwogICAgIHZvaWQgYXBwZW5kQXVkaW9TYW1wbGVCdWZmZXIoY29u
c3QgUGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgY29u
c3QgV1RGOjpNZWRpYVRpbWUmLCBzaXplX3QpOwogICAgIHZvaWQgc3RvcFJlY29yZGluZygpOwot
ICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiwgZG91YmxlKT4mJik7CisgICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4mJik7CiAK
ICAgICB2b2lkIHBhdXNlKCk7CiAgICAgdm9pZCByZXN1bWUoKTsKQEAgLTEwNSw3ICsxMDUsNyBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBmaW5pc2hlZEZsdXNoaW5nU2FtcGxlcygpOwogICAgIHZv
aWQgY29tcGxldGVGZXRjaERhdGEoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0YWtlRGF0
YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgpOwogCiAg
ICAgYm9vbCBtX2hhc0F1ZGlvIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmlkZW8geyBmYWxz
ZSB9OwpAQCAtMTE4LDcgKzExOCw3IEBAIHByaXZhdGU6CiAKICAgICBMb2NrIG1fZGF0YUxvY2s7
CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX2Rh
dGFMb2NrKTsKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4g
bV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsKIAogICAgIFJldGFpblB0cjxDTUZvcm1hdERl
c2NyaXB0aW9uUmVmPiBtX2F1ZGlvRm9ybWF0RGVzY3JpcHRpb247CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcj4gbV9hdWRpb0NvbXByZXNzb3I7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KaW5k
ZXggYzcxYWE4NGFmYzFlYzEwMDNkOWM3NGI1ZDdmMTNmZWU0Mzc2NWUzYS4uODQ4NDEwMGVhYzVl
MTE1ZTliMGNmMDEyMGJhYmY3OGZiMWExMjc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtNDkzLDcgKzQ5Myw3IEBAIHZv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnN0b3BSZWNvcmRpbmcoKQogICAgIH0pOwog
fQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRv
dWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9mZXRjaERhdGFDb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwogCkBAIC01MzgsNyArNTM4LDcg
QEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIHNpemUpOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEoKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjp0YWtlRGF0YSgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sg
fTsKICAgICByZXR1cm4gbV9kYXRhLnRha2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaAppbmRleCBhOWIyOWQ1OWU5YWEzYjQ2NTU0MTVi
ZDhiZWYwOTg0YzU0NGI3M2YwLi5jZGVlNjAzNTIzY2Q2Njk0NWY0MjhmNjk0Nzg5NjBmNmZkNzRj
NzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxE
ZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVj
b2Rlci5oCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNl
IERhdGFVUkxEZWNvZGVyIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmNwcAppbmRleCA2MjM2NGQ3MTNjOTVhOWY4NDNjN2QyOWMwMWYwZGViOWFlNmQxNzVh
Li4wYzkwODE3YzRlOWI0MWYzNDlhNDFhZTY0YjcxOTA2Yjk1MWViODlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtNDEyLDEzICs0MTIsMTMg
QEAgdWludDY0X3QgRm9ybURhdGE6Omxlbmd0aEluQnl0ZXMoKSBjb25zdAogICAgIHJldHVybiAq
bV9sZW5ndGhJbkJ5dGVzOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9y
bURhdGE6OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZvcm1E
YXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDog
bV9lbGVtZW50cykgewogICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9y
PHVpbnQ4X3Q+PihlbGVtZW50LmRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigp
KTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZmxhdHRlbigpKTsKIH0KIAogVVJM
IEZvcm1EYXRhOjphc0Jsb2JVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5oCmluZGV4IDEwODI4MTEzMWY4M2U5OTM3MGZjNTA5NzgzM2NjNTBlZThh
ZGJkYWEuLmU5ZDM0NDNmOGI1YzY4MjQ0NjY1NmMxODgwNTY1N2NjMjlkMmQ4MzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTM2LDcgKzM2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIGNsYXNzIERPTUZv
cm1EYXRhOwogY2xhc3MgRmlsZTsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgIHN0cnVjdCBF
bmNvZGVkRmlsZURhdGE7CkBAIC0yMzIsNyArMjMyLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFZl
Y3RvcjxGb3JtRGF0YUVsZW1lbnQ+JiBlbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVu
dHM7IH0KICAgICBjb25zdCBWZWN0b3I8Y2hhcj4mIGJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4g
bV9ib3VuZGFyeTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIGJvb2wgYWx3
YXlzU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gbV9hbHdheXNTdHJlYW07IH0KICAgICB2b2lkIHNl
dEFsd2F5c1N0cmVhbShib29sIGFsd2F5c1N0cmVhbSkgeyBtX2Fsd2F5c1N0cmVhbSA9IGFsd2F5
c1N0cmVhbTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5oCmluZGV4IGZhZmRmZTg3YzgzN2U2MTU3ZDJmMTNlOWE3Y2EwMDk2OWQ1MGIxYzcu
LjRiZWJjYjUwOThkMTVjMjk2NmVkOGM3ZWUxMzZhZTNhMmFlNGEyMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKQEAgLTg0LDcgKzg0
LDcgQEAgY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN5bmNocm9u
b3VzTG9hZGVyTWVzc2FnZVF1ZXVlOwogY2xhc3MgVGltZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKaW5k
ZXggODE4ZTE4MTg0NTE5NjdhYjUyZDE5OGQ5NTg3YjIwYTE0NDQ3OGRkOS4uYmE4ZmQ0ZmY0ZjFl
NDFjOWFkNGZhNzRhNDJiZTRlMmJkMTFhYTg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKQEAgLTM2LDcg
KzM2LDcgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OlJlc291cmNlSGFuZGxlQ2xpZW50KCkgPSBk
ZWZhdWx0OwogCiBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50KCkg
PSBkZWZhdWx0OwogCi12b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVy
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZl
QnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGRpZFJlY2VpdmVEYXRh
KGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
LCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKaW5kZXggYjYzMzdkNTZjZThjZDli
ZWZmOWRmYmUxMTM2NjJiYzc3NTZiNjUzNy4uYzRmMDU0ODVmMjg3MGIxMTZkYTdjNzYwZDNjMGZj
ZTk2ZWMyYjRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBSZXNvdXJj
ZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIAogZW51bSBDYWNoZVN0b3JhZ2VQb2xpY3kgewogICAgIFN0b3Jh
Z2VBbGxvd2VkLApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50
Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4
X3QqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgeyB9Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAg
CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWUuY3BwCmluZGV4IDg4ZGVkZmE0NWMzZjRjNDNhMzgxNTI4MGRhNWE0MWUyNjk3
NWI3MWYuLmY3MDAzNTVkNTY4YjA0MmE2YWRmMTA3MGRiYjgzODE5MjUzNjk0YWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlk
UmVjZWl2ZURhdGEoQ0ZECiAgICAgICAgIAogICAgICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0g
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6
ZGlkUmVjZWl2ZURhdGEoaGFuZGxlPSVwKSAoJXMpIiwgaGFuZGxlLCBoYW5kbGUtPmZpcnN0UmVx
dWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIGhhbmRsZS0+
Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoaGFuZGxlLCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5nZXQoKSksIG9yaWdpbmFsTGVuZ3RoKTsKKyAgICAgICAgaGFuZGxlLT5j
bGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5kbGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZ2V0KCkpLCBvcmlnaW5hbExlbmd0aCk7CiAgICAgfTsKICAgICAKICAgICBpZiAobV9tZXNz
YWdlUXVldWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggZTJjMzVlZDMxMGIz
MTEwNjUxMTZjOGZjODZjMmU0MDI5YTgyYzlhNC4uMDA4ZTIyNmZmOTE5MDA0YjQ1MTQ4YTI0NzI2
MTE2MTUwOTg5NjI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtMjQzLDcg
KzI0Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB2
b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikgZmluYWwKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFsCiAgICAg
ewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoIW1fZ2VuZXJh
dG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAppbmRleCA0MDQ4ODVhZTYzNzZmY2U2ODA0MGQyYTA1
YzAwYmVjNDdmZTE2YWE4Li5jZTRjMjU0NWNkZTBmMmY0NmFjMzM4Zjk2YzQ5MDg4ZWI0NWQwOTI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmll
dzsKIGNsYXNzIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDsKIGVudW0gY2xhc3Mg
U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayA6IGJvb2w7CkBAIC0xNTgsNyArMTU4LDcgQEAgV0VC
Q09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJDb3JlTlNVUkxTZXNzaW9uIDogTlNPYmplY3Qgewog
LSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNl
KilyZXNvdXJjZSBzZW50Qnl0ZXM6KHVuc2lnbmVkIGxvbmcgbG9uZylieXRlc1NlbnQgdG90YWxC
eXRlc1RvQmVTZW50Oih1bnNpZ25lZCBsb25nIGxvbmcpdG90YWxCeXRlc1RvQmVTZW50OwogLSAo
dm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKily
ZXNvdXJjZSByZWNlaXZlZFJlc3BvbnNlOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JilyZXNwb25zZSBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0g
KEJPT0wpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSop
cmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpcmVzcG9uc2U7Ci0tICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJilkYXRhOworLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKWRhdGE7CiAtICh2b2lkKXJlc291cmNlOihudWxs
YWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkUmVk
aXJlY3Q6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlIHJlcXVlc3Q6
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKWNvbXBs
ZXRpb25IYW5kbGVyOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZv
cm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWRXaXRoRXJy
b3I6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKWVycm9yOwogLSAodm9pZClyZXNvdXJj
ZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBsb2Fk
RmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBlNTkyMjdlMzhhYTA2MTJkOTI3YzgyNTlkMDE0N2Rh
NGJmNmE3NjliLi44Yzg5ZDkzODY1NzkzM2ExZGEyOTAzMTk5MTU4NGM0ZGIyZmFhOWE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VS
TFNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLm1tCkBAIC02MDgsNyArNjA4LDcgQEAgcHVibGljOgogICAgIHZv
aWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVz
b3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9u
c2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQg
bG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlOwotICAgIHZvaWQgZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92ZXJy
aWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGFjY2Vzc0NvbnRy
b2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9y
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlk
ZTsKQEAgLTY1Miw3ICs2NTIsNyBAQCBib29sIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0Ns
aWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyYwogICAgIHJldHVy
biBbbV90YXNrIHJlc291cmNlOiZyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOnJlc3BvbnNl
XTsKIH0KIAotdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNl
aXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKK3ZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX3Rhc2tMb2NrIH07
CiAgICAgaWYgKCFtX3Rhc2spCkBAIC05MTUsNyArOTE1LDcgQEAgLSAoQk9PTClyZXNvdXJjZToo
UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOihjb25z
dCBSZXMKICAgICByZXR1cm4gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1l
OjpDb250ZW50UmFuZ2UpLmlzRW1wdHkoKTsKIH0KIAotLSAodm9pZClyZXNvdXJjZTooUGxhdGZv
cm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpZGF0YQorLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNl
KilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKWRhdGEKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAhcmVzb3VyY2UgfHwg
cmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKICAgICBbc2VsZi5zZXNzaW9uIGFkZERlbGVnYXRlT3Bl
cmF0aW9uOltzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9LCBkYXRhID0gV1RGTW92ZShk
YXRhKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybERvd25sb2FkLmNwcAppbmRleCBjMzZlMWY4ODc2NDMwNDYwY2U3NTBhM2I4YzY1OGM3MzRl
Y2IxNTA4Li4zNDk0NDU5MjU0YWM5M2ZjMTljYjEyMTUwYTYxYmMyYmNlZDAyZDZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2
ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVzcG9uc2UmJiByCiB9CiAKIAot
dm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2Vp
dmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCmluZGV4IGEzYWEwY2Y1
ZmNkMjk1NWJiN2IxNmIxMWExYTgxY2E3NGFlNjFjOGQuLmNkZTQ0NDU3NzVmNzQ0MjMzMDUzMGI2
NWIxMzU3YmE2YmZkOWJiODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAg
ICBSZWY8Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYpOwog
ICAgIHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25n
LCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgY3VybERpZFJlY2Vp
dmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4m
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxE
aWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJv
ciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNw
cAppbmRleCBkNjM1Zjc5Y2QxZWM2MjFhZGZlYjZkY2M0OTM2ZWVlZjUwY2Y5YWRjLi4wOTBkMDM5
YmE0NWRlMTAyOGVkZjc2ODRjNmQ3ZDJmMjk2ZTNhMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUu
Y3BwCkBAIC0xMTksNyArMTE5LDcgQEAgQ3VybE11bHRpcGFydEhhbmRsZTo6Q3VybE11bHRpcGFy
dEhhbmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiBjbGllbnQsIGNvbnMKIAogfQogCi12
b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQordm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fc3RhdGUgPT0g
U3RhdGU6OkVuZCkKICAgICAgICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQgZG93
biBzbyBpZ25vcmUgZXZlcnl0aGluZy4KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEN1cmxNdWx0
aXBhcnRIYW5kbGU6OmRpZENvbXBsZXRlKCkKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6RW5k
KSB7CiAgICAgICAgIC8vIEl0IHNlZW1zIHdlIGFyZSBzdGlsbCBub3QgYXQgdGhlIGVuZCBvZiB0
aGUgcHJvY2Vzc2luZy4KICAgICAgICAgLy8gUHVzaCBvdXQgdGhlIHJlbWFpbmluZyBkYXRhLgot
ICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUobV9idWZmZXIpKSk7CisgICAgICAgIG1fY2xpZW50
LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KG1fYnVmZmVyKSkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZDsKICAgICB9CiAKQEAg
LTIzNCwxMyArMjM0LDEzIEBAIGJvb2wgQ3VybE11bHRpcGFydEhhbmRsZTo6cHJvY2Vzc0NvbnRl
bnQoKQogCiAgICAgICAgIGlmICghY2hlY2tGb3JCb3VuZGFyeShib3VuZGFyeVN0YXJ0LCBsYXN0
UGFydGlhbE1hdGNoKSAmJiBib3VuZGFyeVN0YXJ0ID09IG5vdEZvdW5kKSB7CiAgICAgICAgICAg
ICAvLyBEaWQgbm90IGZpbmQgdGhlIGJvdW5kYXJ5IHN0YXJ0LCBhbGwgZGF0YSB1cCB0byB0aGUg
bGFzdFBhcnRpYWxNYXRjaCBpcyBvay4KLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVE
YXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIu
ZGF0YSgpLCBsYXN0UGFydGlhbE1hdGNoKSk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNl
aXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIuZGF0YSgp
LCBsYXN0UGFydGlhbE1hdGNoKSk7CiAgICAgICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgbGFz
dFBhcnRpYWxNYXRjaCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBUaGVyZSB3YXMgYSBib3VuZGFyeSBzdGFydCAob3IgZW5kIHdlJ2xsIGNoZWNr
IHRoYXQgbGF0ZXIpLCBwdXNoIG91dCBwYXJ0IG9mIHRoZSBkYXRhLgotICAgICAgICBtX2NsaWVu
dC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOworICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9idWZmZXIu
ZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CiAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBib3Vu
ZGFyeVN0YXJ0ICsgbV9ib3VuZGFyeS5sZW5ndGgoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0
ZTo6RW5kQm91bmRhcnk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKaW5kZXggNWMwOGJjYzVl
YjNlNGJiY2MwMjliNDc2Nzg2OGY0M2UyZjk1YzM0MS4uOWExYTFiYmQxOTM4YTE0ZjY5ZmNjZWUz
ZjBmODliOTdhNGEyMTg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCkBAIC0zNCw3ICszNCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudDsK
IGNsYXNzIEN1cmxSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGUgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgQ3VybE11
bHRpcGFydEhhbmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiwgY29uc3QgU3RyaW5nJik7
CiAgICAgfkN1cmxNdWx0aXBhcnRIYW5kbGUoKSB7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZSgpOwogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKaW5kZXggZmQxM2ZkMzgxMzE0M2Ni
MjY1OWI4ZmQxZGIyNDQ0NzY1ZTk4YTU4MC4uYzgxMzg4NmE4ZDVjNWZhNmMxMmQxNDEzMzE5MTAx
YWYyNTAyYTJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCkBAIC0yOCwxMiAr
MjgsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3VybFJlc3BvbnNlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3Mg
Q3VybE11bHRpcGFydEhhbmRsZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPFNoYXJlZEJ1
ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBh
cnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIAogcHJvdGVjdGVkOgogICAg
IH5DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBhY2Q4OGUxYjAy
OWI5YjFlN2YxNGI3ZDE0MDMyOTI2YjkzMTc1YTBmLi5kODJkZDNjMTBhYzY0NzEzNTk5MWZkN2Fl
NjY5N2U5ZDhlMzEzZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTM5Niw3ICszOTYsNyBAQCBzaXplX3QgQ3Vy
bFJlcXVlc3Q6OmRpZFJlY2VpdmVIZWFkZXIoU3RyaW5nJiYgaGVhZGVyKQogCiAvLyBjYWxsZWQg
d2l0aCBkYXRhIGFmdGVyIGFsbCBoZWFkZXJzIGhhdmUgYmVlbiBwcm9jZXNzZWQgdmlhIGhlYWRl
ckNhbGxiYWNrCiAKLXNpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCitzaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoaXNDb21wbGV0
ZWRPckNhbmNlbGxlZCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTQ0NCw3ICs0NDQsNyBAQCB2
b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0
b3I8U3RyaW5nPiYgaGVhZGVycykKICAgICBpbnZva2VEaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9u
c2UsIEFjdGlvbjo6Tm9uZSk7CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRh
RnJvbU11bHRpcGFydChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlcXVl
c3Q6OmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNzc3LDcgKzc3Nyw3IEBAIGNvbnN0IFN0cmluZyYgQ3VybFJlcXVlc3Q6
OmdldERvd25sb2FkZWRGaWxlUGF0aCgpCiAgICAgcmV0dXJuIG1fZG93bmxvYWRGaWxlUGF0aDsK
IH0KIAotdm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFU
b0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kb3dubG9hZE11dGV4IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dC5oCmluZGV4IDZiZDhhNmJmYmEzNzUyY2VkZGRiYzUwMDllYWU4M2M0ZjBlZWQ2NDEuLjNjN2Nk
ZDg4M2ViNjJiZmU5MmNmMDQ0NWVkMjliZDI2ZWNlM2U5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCkBAIC00Miw3ICs0Miw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEN1cmxSZXF1ZXN0Q2xpZW50OwogY2xhc3Mg
TmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTeW5jaHJvbm91c0xv
YWRlck1lc3NhZ2VRdWV1ZTsKIAogY2xhc3MgQ3VybFJlcXVlc3QgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8Q3VybFJlcXVlc3Q+LCBwdWJsaWMgQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGll
bnQsIHB1YmxpYyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50IHsKQEAgLTEyMiw5ICsxMjIsOSBA
QCBwcml2YXRlOgogICAgIENVUkwqIHNldHVwVHJhbnNmZXIoKSBvdmVycmlkZTsKICAgICBzaXpl
X3Qgd2lsbFNlbmREYXRhKGNoYXIqLCBzaXplX3QsIHNpemVfdCk7CiAgICAgc2l6ZV90IGRpZFJl
Y2VpdmVIZWFkZXIoU3RyaW5nJiYpOwotICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0YShSZWY8U2hh
cmVkQnVmZmVyPiYmKTsKKyAgICBzaXplX3QgZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUhlYWRlckZyb21NdWx0aXBhcnQo
Y29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
RnJvbU11bHRpcGFydChSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVRyYW5zZmVyKENVUkxjb2RlKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZENhbmNlbFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5h
bGl6ZVRyYW5zZmVyKCk7CkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICBOZXR3b3Jr
TG9hZE1ldHJpY3MgbmV0d29ya0xvYWRNZXRyaWNzKCk7CiAKICAgICAvLyBEb3dubG9hZAotICAg
IHZvaWQgd3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgU2hhcmVkQnVmZmVy
Jik7CisgICAgdm9pZCB3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBjbG9zZURvd25sb2FkRmlsZSgpOwogICAg
IHZvaWQgY2xlYW51cERvd25sb2FkRmlsZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCmluZGV4IDA4Yzg2
YzdkNDY4NGJhNmY3OGQ2MTZiNjhkMDY5MDRjMzdhOTY2NzcuLjM0Nzk4MzJmNTc2ZDQxMjhhZmE1
MWM4MTQyNGNjZmQ3NDFkZjZhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oCkBAIC0zNCw3ICszNCw3IEBA
IGNsYXNzIEN1cmxSZXF1ZXN0OwogY2xhc3MgQ3VybFJlc3BvbnNlOwogY2xhc3MgTmV0d29ya0xv
YWRNZXRyaWNzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxSZXF1ZXN0Q2xpZW50IHsK
IHB1YmxpYzoKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGN1
cmxEaWRTZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQs
IHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYm
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0
JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkUmVj
ZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdv
cmtMb2FkTWV0cmljcyYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRGYWlsV2l0aEVy
cm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgPSAw
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IGVkMDVkZTdh
ZWU5MzIxZTlmZDAzODFmYzczZGNlMjc5NjdkZmNkODEuLjMwNWQ0ZTVjOWZjMjcwNzc1Nzg3YjBm
OWE5MTk3OWMwODg4OWE4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNw
cApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1
cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1CiAgICAgfSk7CiB9
CiAKLXZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVy
KEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oCmluZGV4IDZkNTU4
NjQ0NTJmZDQ2ZWU3ODAwZTkzMTIzYjEyOGJkYzY0Y2U0ODcuLmRhZjBhNTlhNGU1ODZkNzExNGFi
YjRlNWVmOWM1NGY2YThiZWZjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5o
CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKEN1
cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBs
b25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZVJl
c3BvbnNlKEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpIGZpbmFsOwotICAgIHZvaWQgY3Vy
bERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKKyAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgY3VybERpZENvbXBsZXRlKEN1
cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYpIGZpbmFsOwogICAgIHZvaWQgY3VybERp
ZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiYsIENlcnRpZmljYXRl
SW5mbyYmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IGJjNGRh
YWZiZjIxYTE1YzBlNmRkMWFjZDQ2MjJhZmE1NmI3YjhkNWQuLjFmNGExOTMxMzMxMmM1ZGQ2YTQ4
YWQ1MzM5ZGZkMmMzYjVkZWMyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAg
LTMxLDEyICszMSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIExlZ2FjeVByZXZp
ZXdMb2FkZXJDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TGVnYWN5UHJldmlld0xvYWRlckNsaWVudCgp
ID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFy
ZWRCdWZmZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVgu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3Bw
CmluZGV4IDNjYTIwODIyYzAzMThhNTQ5MTExODY3NWQyN2I4NzhkZDE4M2ZlOWIuLjBmYjQ1MDA3
MmZhMTA0MjJmNmE5ZmU0MzJjMzgxZDNkMTk2MTNlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKQEAgLTM0LDcgKzM0LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmIChmaWxl
UGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjgsNyArNjgsNyBA
QCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbgogICAgIGlmICh0b3RhbEJ5dGVzUmVhZCAhPSBieXRl
c1RvUmVhZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApp
bmRleCBhYWNjMzdjZDI4NzI4MGYxYmUwMDg3OTczNTFhOThiZjhiYzFiZWFiLi44M2U2NmQwODY1
Mzk2MThjMDAyZmFiMjMwM2ViOWNiZjkzY2UwYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0zNTYsNyArMzU2LDcgQEAgU3RyaW5nIFBh
c3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogCiBz
dHJ1Y3QgUGFzdGVib2FyZEZpbGVDb3VudGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIg
ewogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgKytjb3VudDsg
fQotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8
U2hhcmVkQnVmZmVyPiYmKSBmaW5hbCB7ICsrY291bnQ7IH0KKyAgICB2b2lkIHJlYWRCdWZmZXIo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpIGZpbmFsIHsgKytjb3VudDsgfQogCiAgICAgdW5zaWduZWQgY291bnQgeyAwIH07CiB9OwpA
QCAtOTY2LDcgKzk2Niw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURl
c2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gbWVt
T2JqOwogfQogCi1zdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KFNo
YXJlZEJ1ZmZlciogZGF0YSkKK3N0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNv
bnRlbnQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBIR0xPQkFMIG1lbU9i
aiA9IEdsb2JhbEFsbG9jKEdQVFIsIGRhdGEtPnNpemUoKSk7CiAgICAgaWYgKCFtZW1PYmopIApA
QCAtOTg2LDcgKzk4Niw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNv
bnRlbnQoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVybiBtZW1PYmo7CiB9CiAKLXN0YXRp
YyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5n
JiBmaWxlTmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRhKQorc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xv
YmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmIChmaWxlTmFtZS5pc0VtcHR5KCkgfHwg
IWRhdGEpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTA2Myw3ICsxMDYzLDcgQEAgdm9pZCBQYXN0
ZWJvYXJkOjp3cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVS
TCYgdXJsKQogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgIWNhY2hlZEltYWdlLT5pbWFnZUZvclJl
bmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSkgfHwgIWNhY2hlZEltYWdlLT5pc0xvYWRlZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0gY2FjaGVk
SW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgpOworICAg
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0gY2FjaGVkSW1hZ2UtPmltYWdl
Rm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgpOwogICAgIGlmICghaW1hZ2VC
dWZmZXIgfHwgIWltYWdlQnVmZmVyLT5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NoYXJlZEJ1ZmZlcldpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAppbmRleCAwNzM5
ZGRmNDRiZjAzYzVmMTk5MWVlMjY2YmRhMWQ1ZDVkNzM4ZDE3Li44OWNmNmEwYmI2NTg3MDgzNDU0
MTQ2MDY2N2M1MTVhOGFhY2Y4NzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2hhcmVkQnVmZmVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2hhcmVkQnVmZmVyV2luLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKK1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NSw3ICs0NSw3IEBAIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUoY29uCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiByZXN1bHQ7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVz
dWx0OwogICAgIERXT1JEIGJ5dGVzVG9SZWFkID0gR2V0RmlsZVNpemUoZmlsZUhhbmRsZSwgMCk7
CiAgICAgRFdPUkQgbGFzdEVycm9yID0gR2V0TGFzdEVycm9yKCk7CiAKQEAgLTUzLDcgKzUzLDcg
QEAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb24KICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZl
cihieXRlc1RvUmVhZCk7CiAgICAgICAgIERXT1JEIGJ5dGVzUmVhZDsKICAgICAgICAgaWYgKFJl
YWRGaWxlKGZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ5dGVzVG9SZWFkLCAmYnl0ZXNSZWFk
LCAwKSAmJiBieXRlc1RvUmVhZCA9PSBieXRlc1JlYWQpCi0gICAgICAgICAgICByZXN1bHQgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29u
dGVudHMgb2YgZmlsZSAlcywgR2V0TGFzdEVycm9yKCkgPSAldSIsIGZpbGVQYXRoLmFzY2lpKCku
ZGF0YSgpLCBHZXRMYXN0RXJyb3IoKSk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDY1MjcyNTBlNWFiY2RkYmEwMDAyYjBmYmNlNjU2
NWQyZjU4NjVkMDYuLjg0ZmEyOWNlMWYzMDBmZTI5MGIwNDE0NjQ4ZjBmNzI5MGE3Y2JlYmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC02Myw3ICs2Myw3
IEBAIGJvb2wgTW9ja0NETUZhY3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtKQogICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGtleVN5c3RlbSwg
Im9yZy53ZWJraXQubW9jayIpOwogfQogCi12b2lkIE1vY2tDRE1GYWN0b3J5OjphZGRLZXlzVG9T
ZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4m
JiBrZXlzKQordm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25z
dCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIGtleXMp
CiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nlc3Npb25zLmFkZChpZCwgV1RGTW92ZShrZXlz
KSk7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQpAQCAtNzQsNyArNzQsNyBAQCB2b2lk
IE1vY2tDRE1GYWN0b3J5OjphZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQs
IFZlY3RvcjxSZWY8U2hhcmVkQgogICAgICAgICB2YWx1ZS5hcHBlbmQoV1RGTW92ZShrZXkpKTsK
IH0KIAotVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5
c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpCitWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiBNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0
aElEKGNvbnN0IFN0cmluZyYgaWQpCiB7CiAgICAgYXV0byBpdCA9IG1fc2Vzc2lvbnMuZmluZChp
ZCk7CiAgICAgaWYgKGl0ID09IG1fc2Vzc2lvbnMuZW5kKCkpCkBAIC04Myw3ICs4Myw3IEBAIFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vz
c2lvbldpdGhJRChjb25zdCBTdHJpCiAgICAgcmV0dXJuIFdURk1vdmUoaXQtPnZhbHVlKTsKIH0K
IAotY29uc3QgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiogTW9ja0NETUZhY3Rvcnk6OmtleXNG
b3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0Citjb25zdCBWZWN0b3I8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiogTW9ja0NETUZhY3Rvcnk6OmtleXNGb3JTZXNzaW9u
V2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0CiB7CiAgICAgYXV0byBpdCA9IG1fc2Vzc2lv
bnMuZmluZChpZCk7CiAgICAgaWYgKGl0ID09IG1fc2Vzc2lvbnMuZW5kKCkpCkBAIC0yMDIsNyAr
MjAyLDcgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QKICAgICByZXR1
cm4gbV9mYWN0b3J5ICYmIG1fZmFjdG9yeS0+c3VwcG9ydHNTZXNzaW9ucygpOwogfQogCi1ib29s
IE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAorYm9vbCBNb2NrQ0RNOjpzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAgICAgaWYgKCFzdXBwb3J0ZWRJ
bml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMjExLDcgKzIxMSw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVz
cG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIGF1dG8gYnVmZmVyID0gcmVz
cG9uc2UubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShi
dWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lk
IE1vY2tDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IE1lZGlh
S2V5U3lzdGVtQ29uZmlndXJhdAogICAgIGNhbGxiYWNrKGluaXRpYWxpemUoKSk7CiB9CiAKLXZv
aWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVy
PiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NE
TUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgU3Ry
aW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAKQEAgLTI5OCw3ICsyOTgsNyBAQCBN
b2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8TW9j
a0NETUluc3RhbmNlPiYmIGluc3RhbgogewogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Np
b246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VD
YWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0
TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNh
bGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2lu
c3RhbmNlID8gbV9pbnN0YW5jZS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3Rv
cnkpIHsKQEAgLTMyNCw3ICszMjQsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tUwogICAgIGNh
bGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGxpY2Vuc2UuZGF0YSgpLCBsaWNlbnNlLmxlbmd0
aCgpKSwgc2Vzc2lvbklELCBmYWxzZSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwogfQogCi12
b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lv
bjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFu
Y2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCmluZGV4IGY1Y2RhNTA1Y2Yy
YTMzYzEwNWYwMjVjOTdjOTM1MGE5Njg2OThlMWUuLmQ5NmMxNTZlZTRkMjc5MWI4YjA5OThkYWY5
NDBlYzc1Mzc4MDdiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgK
QEAgLTc3LDkgKzc3LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNTZXNzaW9uV2l0aElEKGNv
bnN0IFN0cmluZyYgaWQpIHsgcmV0dXJuIG1fc2Vzc2lvbnMuY29udGFpbnMoaWQpOyB9CiAgICAg
dm9pZCByZW1vdmVTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIHsgbV9zZXNzaW9ucy5y
ZW1vdmUoaWQpOyB9Ci0gICAgdm9pZCBhZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmlu
ZyYgaWQsIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4mJik7Ci0gICAgY29uc3QgVmVjdG9yPFJl
ZjxTaGFyZWRCdWZmZXI+Pioga2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkg
Y29uc3Q7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiByZW1vdmVLZXlzRnJvbVNlc3Np
b25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCk7CisgICAgdm9pZCBhZGRLZXlzVG9TZXNzaW9uV2l0
aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
JiYpOworICAgIGNvbnN0IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KiBrZXlz
Rm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdDsKKyAgICBWZWN0b3I8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiByZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29u
c3QgU3RyaW5nJiBpZCk7CiAKIHByaXZhdGU6CiAgICAgTW9ja0NETUZhY3RvcnkoKTsKQEAgLTk2
LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2FuQ3JlYXRlSW5zdGFuY2VzIHsgdHJ1
ZSB9OwogICAgIGJvb2wgbV9zdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcyB7IHRydWUgfTsKICAg
ICBib29sIG1fc3VwcG9ydHNTZXNzaW9ucyB7IHRydWUgfTsKLSAgICBIYXNoTWFwPFN0cmluZywg
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gbV9zZXNzaW9uczsKKyAgICBIYXNoTWFwPFN0cmlu
ZywgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IG1fc2Vzc2lvbnM7CiB9Owog
CiBjbGFzcyBNb2NrQ0RNIDogcHVibGljIENETVByaXZhdGUgewpAQCAtMTIxLDggKzEyMSw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwogICAgIGJvb2wg
c3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBv
cnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikg
Y29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBz
YW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAgIFdlYWtQ
dHI8TW9ja0NETUZhY3Rvcnk+IG1fZmFjdG9yeTsKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6Ok1vY2s7IH0KICAgICB2b2lk
IGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRl
LCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9p
ZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3Vj
Y2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25z
dCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZp
bmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5h
bDsKQEAgLTE1NCw4ICsxNTQsOCBAQCBwdWJsaWM6CiAgICAgTW9ja0NETUluc3RhbmNlU2Vzc2lv
bihXZWFrUHRyPE1vY2tDRE1JbnN0YW5jZT4mJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCByZXF1
ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0g
ICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNr
JiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNl
VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZv
aWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZp
bmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5
cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGZjMTI3YjdiNjdiZWE3MzQ0NjNj
ZDJkNWIwNzU2YjU5YmViYTU4YWUuLjA1OWYzYTM4NmI2Y2Y1ZmE3OWIzYzE4OTcwMTUzMTNmN2Nk
YjRlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3Bw
CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6ZmluaXNoZWRBZGRp
bmdEYXRhKCkKICAgICBtYXliZURldGVybWluZVN0YXR1cyhEZWNpc2lvblBvaW50OjpBZnRlckZp
bmlzaGVkQWRkaW5nRGF0YSk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE1vY2tDb250ZW50Rmls
dGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IE1vY2tDb250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAogewogICAgIEFTU0VS
VChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVw
bGFjZW1lbnREYXRhLmRhdGEoKSwgbV9yZXBsYWNlbWVudERhdGEuc2l6ZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaAppbmRleCA0MTFhMzAwOTQ3YjUzOWUy
NmFhNmM2NGEwMDkzMjkyZTlmZmJlNmI5Li42MzVhYzg0YmU3OTM4NDdhYTU3MjEzZDAxZmZjMWU3
NGY3NmI3NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50
RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5o
CkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRk
aW5nRGF0YSgpIG92ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0
YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBs
YWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCiAgICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkgY29u
c3Qgb3ZlcnJpZGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
U2NyaXB0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCmlu
ZGV4IDM3ZjFhNDg3ZjhjNTJiNDRlYTI0MzBjY2NkMWZhMDI1ZWU5MWFhYzMuLmZkMmMxYWUyZjYz
YjYwZDc0YzMwZDI0MmE5ODlhMGJmZDkxZGU0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3Jp
cHRCdWZmZXIuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBTY3JpcHRCdWZmZXIgewogcHVibGlj
OgogICAgIFNjcmlwdEJ1ZmZlcigpID0gZGVmYXVsdDsKIAotICAgIFNjcmlwdEJ1ZmZlcihSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBTY3JpcHRCdWZmZXIoUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUo
YnVmZmVyKSkKICAgICB7CiAgICAgfQpAQCAtNDgsOSArNDgsOSBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiAgICAg
U3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgp
LmdldCgpOyB9CiAKLSAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1
cm4gU2NyaXB0QnVmZmVyKG1fYnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXIu
Y29weSgpKSA6IG51bGxwdHIpOyB9CisgICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNv
bnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQogICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzRW1wdHkoKTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKaW5kZXggYTNjYWY0
YTI2ZjZmMTM5NzIxZGFkNDNhZTY1M2IwYTE2YmFmYWFkNC4uODE1ODEyOGE2MzE4NTljZTczNDcz
ZmJjNWMyM2JlOWQ0NWNiMGRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFdvcmtlckZvbnRM
b2FkUmVxdWVzdDo6bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBi
b29sIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRv
bVN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJy
b3JPY2N1cnJlZCAmJiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhOworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBjb250aWd1b3VzRGF0YTsKICAgICAgICAgaWYgKG1fZGF0YSkKICAgICAgICAgICAgIGNvbnRp
Z3VvdXNEYXRhID0gbV9kYXRhLnRha2VBc0NvbnRpZ3VvdXMoKTsKICAgICAgICAgY29udmVydFdP
RkZUb1NmbnRJZk5lY2Vzc2FyeShjb250aWd1b3VzRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNo
LmNwcAppbmRleCAwYmNkOTc2ZWRhOWQ0YTc4MTA5ZTYyNjNkODEwOGMzNzUwNzU4Yjc3Li44YTkx
MzhkMjNiMGQ1ZGVjNTNkMjk5MGRlZDVkYjc3NjM1NGU1MjQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJG
ZXRjaC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUmVzcG9uc2Uo
UmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJlZjxGZXRjaFJlc3BvbnNlPiwgcwogICAg
IGF1dG8gYm9keSA9IHJlc3BvbnNlLT5jb25zdW1lQm9keSgpOwogICAgIFdURjo6c3dpdGNoT24o
Ym9keSwgWyZdIChSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICBjbGllbnQtPmRp
ZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChXVEZNb3ZlKGZvcm1EYXRhKSk7Ci0gICAgfSwgWyZd
IChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAoUmVm
PFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRh
KFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGNsaWVudC0+ZGlkRmluaXNoKCk7CiAgICAgfSwg
WyZdIChzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmgKaW5kZXggZWIyNjZi
NmMwN2U2NzNkOTE2NmNhY2U2YjMzOTE5ZDgwZWJiZjMxYy4uMDk3NTQzZTFiM2IzMGZmMzE0N2Q5
MjMyYTU4Y2U0YTllNjJmM2U0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmgKQEAgLTQyLDcgKzQy
LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNs
YXNzIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsKIGNsYXNzIFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIG5hbWVzcGFjZSBTZXJ2aWNlV29ya2VyRmV0Y2ggewogY2xhc3MgQ2xpZW50IDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPENsaWVudCwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFp
bj4gewpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlz
aChSZWY8Rm9ybURhdGE+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBS
ZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2goKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0
U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Ny
aXB0U3RvcmFnZS5jcHAKaW5kZXggMDNhNzIxMWZjZWJiMWY4ZTQ2MjhkNTllYTQ1YmNjYjc4ODAy
ZmI0MS4uOWE4ZmIzNWNhNTM2MTA1YmI2ZDZmYzQ2ZWUxMjI0NTkzM2Y3MGJmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRT
dG9yYWdlLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIFNjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0b3Jh
Z2U6OnJldHJpZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzCiAg
ICAgfQogCiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gZGlzYWJsZSBmaWxlIG1hcHBpbmcg
aW4gbW9yZSBjYXNlcyB0byBhdm9pZCBoYXZpbmcgdG9vIG1hbnkgZmlsZSBkZXNjcmlwdG9ycyBv
cGVuPwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0
ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IFNoYXJlZEJ1ZmZlcjo6TWF5VXNl
RmlsZU1hcHBpbmc6OlllcyA6IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsK
ICAgICByZXR1cm4gYnVmZmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNz
b3JMaWJ4c2x0LmNwcAppbmRleCBhMzBmNTE0MWE4ZTE0ZjI3OGY1YjkxMzE3MzNkMjYxNDYyODEy
Y2I2Li5kZjhhYmU0MjZlMDY3MTcxYWZmZjkwZTAzMzM4NTA1OWYzMzEwMzY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBA
QCBzdGF0aWMgeG1sRG9jUHRyIGRvY0xvYWRlckZ1bmMoY29uc3QgeG1sQ2hhciogdXJpLAogICAg
ICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlOwogCi0gICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOworICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgICAgIGJvb2wgcmVxdWVzdEFs
bG93ZWQgPSBnbG9iYWxDYWNoZWRSZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSAmJiBnbG9iYWxDYWNo
ZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0
KHVybCk7CiAgICAgICAgIGlmIChyZXF1ZXN0QWxsb3dlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGRi
MjZiYjM5ZGQ1YWY5OWYzMWU2NjJjMzRjZWQzZGJmOTY3N2Y1YWIuLmE4YzNlMThlNDdhZWNhZDBh
MDIyYTA4NGM0OWEyMWY2YzcxNGMzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ2NCw3ICs0NjQsNyBA
QCBzdGF0aWMgdm9pZCogb3BlbkZ1bmMoY29uc3QgY2hhciogdXJpKQogICAgICAgICByZXR1cm4g
Jmdsb2JhbERlc2NyaXB0b3I7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGRhdGE7CiAKICAgICB7CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5jcHAKaW5kZXggNTczMDY3ZTNkZDA1MGZlYjdjNTc5ZDAwMTAyZWU5ZjYwNDViNTMx
My4uMzFjMmQ3NmYyZWUxYjlkMjQ5YjAwMWI3ZWZmODkyZWMyYTc0NTZjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVBy
b3h5LmNwcApAQCAtNjEsNyArNjEsNyBAQCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojp+UmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eSgpCiAgICAgbV9pbnN0YW5jZS0+Y2xlYXJDbGllbnQoKTsKIH0KIAot
dm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0
YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0
YSkKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlv
bkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhKQogewogICAgIGlmICghbV9jZG0pCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5oCmluZGV4IDhlNzNkM2Q5YTY0Yjk4YmZjMDA5MzZjZDQ3YzRjMjVhOTI3OWYyYzgu
LjAyYzVjZDM3YWU1NDgwMmY2ZDBjOGRjY2NiMGJhODBjZjMzODhjMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHku
aApAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIFJlbW90ZUNETUluc3RhbmNlUHJveHko
V2Vha1B0cjxSZW1vdGVDRE1Qcm94eT4mJiwgUmVmPFdlYkNvcmU6OkNETUluc3RhbmNlPiYmLCBV
bmlxdWVSZWY8UmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9uPiYmLCBSZW1vdGVDRE1JbnN0
YW5jZUlkZW50aWZpZXIpOwogCiAgICAgLy8gQ0RNSW5zdGFuY2VDbGllbnQKLSAgICB2b2lkIHVu
cmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCB1bnJlcXVlc3RlZEluaXRp
YWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVy
CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCmluZGV4IGU1NzY2YzIz
MzRjZmQzODkzMTBjZDRiMjE3MjNjYWJhMzc0MmZjN2MuLmRlODI3M2I5Y2Y1MDBhNGQ2NmFhMTQ0
ZWRlMDIwMWVlZjFlZDg2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcApAQCAt
NzAsNyArNzAsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0
TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5nCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwg
aW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24gPSBXVEZNb3Zl
KGNvbXBsZXRpb24pXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Np
b246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbi0+cmVx
dWVzdExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0YS5idWZmZXIoKS5yZWxlYXNl
Tm9uTnVsbCgpLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9v
bCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1
ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uKFdURk1vdmUobWVzc2Fn
ZSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgc3VjY2VlZGVkID09IENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKICAgICB9KTsKIH0KQEAgLTExNSw3ICsxMTUsNyBA
QCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjbG9zZVNlc3Npb24oY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlUwogCiB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5z
ZVR5cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNvbXBsZXRpb24pCiB7Ci0g
ICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0
aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
VmVjdG9yJiYga2V5U3RhdHVzZXMsIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYg
ZXhwaXJlZFNlc3Npb25zRGF0YSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3Vj
Y2VlZGVkKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKHNlc3Np
b25JZCwgdHlwZSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNlcywgc3RkOjpvcHRpb25hbDxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYgZXhwaXJlZFNlc3Npb25zRGF0YSwgQ0RNSW5z
dGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAg
c3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGV4cGlyZWRTZXNzaW9uRGF0YVJl
ZmVyZW5jZTsKICAgICAgICAgaWYgKGV4cGlyZWRTZXNzaW9uc0RhdGEpCiAgICAgICAgICAgICBl
eHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2UgPSBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92
ZSgqZXhwaXJlZFNlc3Npb25zRGF0YSkpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3Rv
ciYmIGtleVN0YXR1CiAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6VXBkYXRlS2V5U3RhdHVz
ZXMoV1RGTW92ZShrZXlTdGF0dXNlcykpLCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSB0eXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5OjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSB0eXBlLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewogICAgIGlmICghbV9jZG0pCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKaW5kZXggOGE2MWY5ZDVmYWJjODQ4NmE3
YTBlODYwZjRjNjMxMmMwYjQ0NTUxNC4uZmU3MzA5NzEzMWUwYmIyMGE1MDAxZTE1MDE2MDJkNjUx
ODZiMzA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmgKQEAgLTc3LDcgKzc3LDcgQEAg
cHJpdmF0ZToKIAogICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAogICAgIHZvaWQgdXBk
YXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpIGZpbmFsOwotICAgIHZvaWQgc2VuZE1l
c3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYgbWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNz
YWdlVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkg
ZmluYWw7CiAgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwog
ICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGZpbmFsIHsgcmV0dXJuIG1fZGlzcGxh
eUlEOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
UHJveHkuY3BwCmluZGV4IDlhYjM1NzVmNGMzYjU1OTU1NWI5Yjg3YjIzMzcxYjFiMWE2NmRjMTcu
LmY3Y2I2YTYzZWI5MzNhYmQ0ZDQ1M2EyMmFiMjk0ZjEzMDMyMzJiMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcApAQCAtNjMsMTIg
KzYzLDEyIEBAIFJlbW90ZUNETVByb3h5OjpSZW1vdGVDRE1Qcm94eShXZWFrUHRyPFJlbW90ZUNE
TUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBzdGQ6OnVuCiAKIFJlbW90ZUNETVByb3h5Ojp+UmVt
b3RlQ0RNUHJveHkoKSA9IGRlZmF1bHQ7CiAKLWJvb2wgUmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KQorYm9vbCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiB0eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIHJldHVy
biBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEodHlwZSwgZGF0YSk7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IFJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgcmVzcG9uc2UpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUmVtb3Rl
Q0RNUHJveHk6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
cmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2FuaXRpemVSZXNwb25zZShyZXNw
b25zZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Q
cm94eS5oCmluZGV4IDY5MjRlNzRlM2Y1MDExYmUyMTViZTRiZDk2YjIzNDgyNjQ3MGY0MjMuLjNi
NjZjNzc1Nzg3MDY5ZTk3NmVlMDY0Zjk2ZmYwN2MwZjcxMmE5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oCkBAIC0zNiw3ICszNiw3IEBA
CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogZW51bSBjbGFz
cyBDRE1SZXF1aXJlbWVudCA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIENETVNlc3Npb25UeXBlIDog
dWludDhfdDsKIHN0cnVjdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uOwpAQCAtNTgsOCArNTgs
OCBAQCBwdWJsaWM6CiAKICAgICBSZW1vdGVDRE1GYWN0b3J5UHJveHkqIGZhY3RvcnkoKSBjb25z
dCB7IHJldHVybiBtX2ZhY3RvcnkuZ2V0KCk7IH0KIAotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0
YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImIHJlc3BvbnNlKTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVS
ZXNwb25zZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSk7
CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKaW5kZXggZTJjZDA1ZDdjYzc0ZjIw
ZWM2OWZhZGZlM2VlMDg1NzU5MmFkODc5Yi4uZGU4ZjZkZjU1YTZlMWZhOGJlOTY2Zjk0MWUwN2Zl
MmY1YzUwMjFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uUHJveHkuaAppbmRleCBmMTRjNjI3ZjY1OTNlMWE4NzhkMGY0NTk5MmIzYzQx
YjIyMmM3ZjAwLi4xNTQ2YmRmZGZkY2YwOTEwODc4OTQ0ZjM0MDc5NjdhN2FiMzhiZjg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVNlc3Npb25Qcm94eS5oCkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBMZWdhY3lDRE07CiBjbGFzcyBMZWdhY3lDRE1TZXNzaW9uOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNl
IElQQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZS5jcHAKaW5kZXggYzQ1ZTUyNTVkNjdiNTJjN2FlMTA0NDk5ODhjZTAxOTBj
N2ZmYjUzOC4uNjE3ZjQ3Njg5NTY0MmRlYzIzMjU0YjU0MGVlODE5MTFhYzRhMmRmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlLmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFT
ZW50KHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZQogICAgICAg
ICBtX2NsaWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50
KTsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQp
CiAgICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIFdURk1vdmUoZGF0YSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVz
b3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlLmgKaW5kZXggZDEzZDI1ZjY1ZjAyMjRhNmM3NjdmNjlhNGQ0MTljZDA1M2JiNzk1ZC4uNWI3
YTdlMmE3NDI0NDMyZDg2Y2IyOGExYmU3MTcxOGExNjczNzVlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCkBAIC0zNCw3
ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmlj
czsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29s
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlNob3VsZENvbnRpbnVlUG9saWN5Q2hl
Y2spPiYmKTsKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCBkYXRhU2Vu
dCh1aW50NjRfdCwgdWludDY0X3QpOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0Zh
aWxlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmFpbGVk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IGVi
ZGU3NTMwZWM4NmZmNmM0MWJlY2Q0ZTVlYzQyOGEzYzhhZjgwZjcuLmU4M2Y5MTQzZDIwYTcyZTJi
ZTRmZmNiZmVkMTNiMGJiNGRkMzFlMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw3
IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29y
ZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vCiB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OmZl
dGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSYmLCBkb3Vi
bGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fd3JpdGVyLT5mZXRjaERhdGEoW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBkYXRh
LCBhdXRvIHRpbWVDb2RlKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8g
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPigpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGln
dW91cygpIDogUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4oKTsKICAgICAgICAgYXV0byog
cG9pbnRlciA9IGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoSVBDOjpEYXRhUmVmZXJlbmNlIHsgcG9pbnRlciwgZGF0YSA/IGRhdGEt
PnNpemUoKSA6IDAgfSwgdGltZUNvZGUpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAppbmRleCA1
MmNjNWRhMTIxYTJmYjU5ZDhjZjA1OTNiNjg1MDlmZDY1NWMwY2RjLi43MWZkMDIyMjliYmIxYzU3
MzI2ZmRmY2ZlMjZjMTFmNzYxYWJjZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaApAQCAtNjgsNyArNjgs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxz
OyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRG
YWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyLmNwcAppbmRleCAzZjM5ZWIzMmYxYWE4MDc2Nzg1ZGE3OWVlMTFkYWQ4
ZjBjMzI2Yjc5Li5kODkyMGU5ODc2NGZkOWI2NGI5Y2RkYzYwYTFkODRkNjE5YjJkNDA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBOZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYKICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7CiB9CiAK
LXZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YShSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKQordm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6
OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQog
ewogICAgIENPUlNfQ0hFQ0tFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZURhdGEiKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGln
aHRDaGVja2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlci5oCmluZGV4IGJiYjE0NjJhMzE2MWUyZmNlOWVhNTc4NDRiMTliOTNlNjE5
YzgxYjAuLmUxMWJmNTYzMTkwN2FlNDczMzZlZjg1YTVkMjJlODgzNTc0NjUxYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuaApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBl
cmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
JiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhF
cnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3Rh
bEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAg
ICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFzay5oCmluZGV4IGQ2MDE4ZjYxMzgzYWUzYTUxZTlkNDcyMmNmNmE2
MGUyZDhiODdhN2QuLmUwNDllNWIxMmRkZTVmZTUxYjQ2OTU1Mjg5YTdhN2Y2OTk4MmFmY2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaApAQCAt
NDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxl
ciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdl
Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBS
ZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2Vu
dCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHdhc0Jsb2NrZWQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuY3BwCmluZGV4IGJhYzAyMmFiNDU0MzBmNjUxYjE4OWFjMDEyMDdhMDYwNjA4YzE2
NzEuLjc5NzVkNDFiYWQ4OTE1ZmVlZGJkYWIxNTU0ZTgxZTFkYjIwMzBmODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC0yNTYsNyArMjU2LDcg
QEAgdm9pZCBOZXR3b3JrTG9hZDo6bm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXQKICAgICBtX2NsaWVudC5nZXQoKS5kaWRSZWNlaXZl
UmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAotdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCit2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJl
IHRoZSBlbmNvZGVkIGRhdGEgbGVuZ3RoLCBub3QgdGhlIGRlY29kZWQgZGF0YSBsZW5ndGguCiAg
ICAgYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmgKaW5kZXggYzM3NzNjOTg3ODU1M2NlNTM0ZDA1NGFiZmZkZGViYjI5
ZWUwODRkMi4uZWU1ZWIwMDZhYTM3OWI3OGZjYmMwYmQxNzRlMzJiZDYzOWY5NWU2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaApAQCAtODAsNyArODAsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RD
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2Uo
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywg
Q2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExT
LCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7
CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRl
c0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAppbmRl
eCAwYTVmNjZiZDk2N2VjOWZkZjY2NGU1MmU1YWYzOTRlNDhlY2UxZjdiLi4zNDhjZmZiOWU4ZTI1
ZWU4M2JiYjM5YTAyY2QzY2Y2ZDI4NTRkMzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIE5ldHdv
cmtMb2FkTWV0cmljczsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiBlbnVtIGNsYXNzIFBvbGljeUFjdGlvbiA6IHVpbnQ4X3Q7CiB9CiAKQEAgLTUx
LDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25l
ZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVT
ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGly
ZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Up
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
KSB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMGI5ZjQ5ZDM2NGMyNTk1ZTIyM2IzMTE0ZGVhZmNlZTky
YTQwMGZlZC4uZTdmYjA1MGMwMDM2ZTAzNmU1ZjZlYzEzOTU2MjUzZDMxZTQ2NTJmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcApAQCAtODcsNyArODcsNyBAQCBzdHJ1Y3QgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpT
eW5jaHJvbm91c0xvYWREYXRhIHsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogfTsKIAotc3Rh
dGljIHZvaWQgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpTeW5jaHJvbm91c0xvYWREYXRhJiBkYXRhLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZl
ciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQorc3RhdGljIHZvaWQgc2VuZFJl
cGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpTeW5jaHJvbm91
c0xvYWREYXRhJiBkYXRhLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBBU1NFUlQoZGF0YS5kZWxh
eWVkUmVwbHkpOwogICAgIEFTU0VSVCghZGF0YS5yZXNwb25zZS5pc051bGwoKSB8fCAhZGF0YS5l
cnJvci5pc051bGwoKSk7CkBAIC04NTgsNyArODU4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnNlbmREaWRSZWNlaXZlUmVzcG9uc2VQb3RlbnRpYWxseUluTmV3QnJvd3NpbmdDb250
ZXgKICAgICB9KTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fbnVtQnl0ZXNSZWNlaXZlZCkKICAgICAgICAgTE9BREVS
X1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlQnVmZmVyOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoPSVkKSIsIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
OwpAQCAtMTI2OCw3ICsxMjY4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmJ1ZmZl
cmluZ1RpbWVyRmlyZWQoKQogICAgIG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggPSAw
OwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnNlbmRCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXpl
X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFpc1N5bmNocm9ub3VzKCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaAppbmRleCBjNDIzNDY1MWJhOTI4Yjk1ZDhjNmY1N2JlMjVjNWYyMTE4OTg5ZjNiLi5j
ZjEwY2YwZTcxYTFiYzY1NTQwZTg3ZDZiYTRjMWI5Yzg1NmMwYTFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTEx
NSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVk
ZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3Jl
ZGVudGlhbHM7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5h
bDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkg
ZmluYWw7CkBAIC0xOTMsNyArMTkzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc3RhcnRCdWZm
ZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgdm9pZCBidWZmZXJpbmdUaW1lckZpcmVkKCk7Ci0g
ICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVk
RGF0YUxlbmd0aCk7CisgICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOwogCiAgICAgdm9pZCBjb25zdW1l
U2FuZGJveEV4dGVuc2lvbnMoKTsKICAgICB2b2lkIGludmFsaWRhdGVTYW5kYm94RXh0ZW5zaW9u
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAppbmRleCAxMTQ4
NTNlNDViNzI1MzM2NGM3NDdhNzFjYjJiNWFiOGNjMzhlZmQ1Li4xYWYxZTA4ZTNjNDQxZTI0ZjMw
MDY1ZTlmMjA3NzZlNmY5ZmMzM2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1BpbmdMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Bp
bmdMb2FkLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUCiAg
ICAgZGlkRmluaXNoKHsgfSwgcmVzcG9uc2UpOwogfQogCi12b2lkIFBpbmdMb2FkOjpkaWRSZWNl
aXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKQordm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURh
dGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCiB7CiAgICAgUElOR19SRUxFQVNFX0xP
RygiZGlkUmVjZWl2ZURhdGEiKTsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAppbmRleCAxOWVjOGNlYjkyZTNjOGEwNTZmNDky
NzM2NjBjZmZmOTI2NDM0MWQxLi5hYjI5YTBiMWFjODQ2NmIwZWQ2MWVmNThlZjRjMjIwYWJhYjZl
YmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCkBAIC01NCw3ICs1
NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRp
cmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxs
ZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5
VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdh
Y3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFz
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcApp
bmRleCA0NTU3ODJkNTRhMmVhOWJlZTE4NjUwZTFhZmQxY2Y3YjJjZTk4YzQ5Li4xN2Q0NzkwN2Ez
ZjZlZTUyYmU2NTAxZDFkYWIwY2E2MDc1MWQ2YjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIFBy
ZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3Bv
bnNlLCBSZXNwb25zZUNvbQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdu
b3JlKTsKIH0KIAotdm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hh
cmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUHJlY29u
bmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25u
ZWN0VGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5o
CmluZGV4IDFjMWZmMTY0NzExMWM2ZmE4NDk0YWY1Y2YwYzdiYmVhYTFiMjY1MDMuLjg1ODA4ZTEy
MWI2OGNhOGI3M2UyNTE4ZDE5M2FiMzk1ODFlYWQxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2ln
bmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIGZpbmFsOwogICAgIHZvaWQgd2lsbFNl
bmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
JiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAg
IHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZGVyLmNwcAppbmRleCAzYTU1MTc0OTAxZDQ3ODk5YzFjMDJkMGQyN2E4ODhhN2NiZGE1ZDYyLi44
MTk2NjMwMjBjNjk1Y2UwYzZhYmE5OTljNjc1YWFiNDI4MmM3ZmQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKQEAgLTE3NCw3
ICsxNzQsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlcwogICAgICAgICBjYWxsYmFjaygpOwog
fQogCi12b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2spCiAgICAgICAgIG1f
Ym9keUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSwgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlci5oCmluZGV4IDVjNGM4ZTcxZDRkZDM4MzVjMWQ1NzIyYjgxY2M3YjU5ODQwZThhYTgu
LmVlMWJjOGI3ZDZjYmZmYzMzNDFkNjczZmI3MjQyMjM4ZjY3MTdmMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCkBAIC01Miw3ICs1
Miw3IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIFJlc3BvbnNlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2
b2lkKCk+OwogICAgIHZvaWQgd2FpdEZvclJlc3BvbnNlKFJlc3BvbnNlQ2FsbGJhY2smJik7Ci0g
ICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsK
KyAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47CiAgICAgdm9p
ZCB3YWl0Rm9yQm9keShCb2R5Q2FsbGJhY2smJik7CiAKICAgICBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KQEAgLTY3LDcgKzY3
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxz
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJl
Y3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJl
ZGlyZWN0UmVzcG9uc2UpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5h
bDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGlu
Zyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRp
ZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICBi
b29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCA5NDIz
NTM0ODI3M2U4OTFiMDdiODc1NjFjMWQ2MTJlYTJhNDQzNTkzLi43YTI2MjIxOWRlNzhiMjM1ZDEy
NWE5MmI2ZTIzNmQzMzI2MmY3YTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBSZXNvdXJjZUVycm9y
IFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpwcm9jZXNzUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwbwogICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9k
ZWNvZGVyKSB7CiAgICAgICAgIGlmICghbV9yZXNwb25zZUVuY29kaW5nLmlzRW1wdHkoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgKaW5kZXggMThm
NTQ2OTFmMzdjMmJhYmJjOGMxYTNiYzA5NDM3MGU5YjI5ZWI3MS4uNDRmYzA2ODVmYTBmZWRjODc0
MjE5MTZlOTEzYTY3NGIxYzBmZGJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIGZpbmFsOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
IGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcApp
bmRleCBmZGJmYjE0MzU5NzZjYmY2NWY2MTI1NjgzYWMxZWRkMjQwOWUyNzg3Li42ZjI2YjRjYzJk
ZWZhMGQ5ODg3YzZmNDI0NWU4ZjU0ZmJlYzRiYTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
LmNwcApAQCAtNTgxLDcgKzU4MSw3IEBAIFN0b3JhZ2U6OlJlY29yZCBDYWNoZTo6ZW5jb2RlKGNv
bnN0IFJlY29yZEluZm9ybWF0aW9uJiByZWNvcmRJbmZvcm1hdGlvbiwgY29uc3QKICAgICBEYXRh
IGJvZHk7CiAgICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbXShjb25zdCBS
ZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICAvLyBGSVhNRTogU3Rv
cmUgZm9ybSBkYXRhIGJvZHkuCi0gICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdKGNvbnN0IFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgYm9keSA9IHsgYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpIH07CiAgICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7
CiAgICAgfSk7CkBAIC02NzMsNyArNjczLDcgQEAgc3RkOjpvcHRpb25hbDxSZWNvcmQ+IENhY2hl
OjpkZWNvZGUoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdlKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgYXV0byByZWNvcmQgPSBXVEZNb3ZlKHJlc3VsdC0+cmVjb3Jk
KTsKLSAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOwor
ICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKIAogICAgIHJldHVybiBy
ZWNvcmQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5jcHAKaW5kZXggMDQ3NzY4MzZmOTk5MDkzOTEwYjM5OWQ3NTUzODU1ZDVkM2Yx
ZmY0ZS4uZGQzMDVhZjI5NzY2MWU0NzZjNDk2NzdkZjU3MjFlZmQxZWM5MzJmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApA
QCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgQ2FjaGU6OmNvbXBsZXRlUmV0cmlldmUoUmV0cmlldmVD
b21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIsIHN0ZDo6dW5pcXVlX3B0CiAgICAgaGFuZGxlcihX
VEZNb3ZlKGVudHJ5KSwgaW5mbyk7CiB9CiAgICAgCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENh
Y2hlOjptYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEpCitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENh
Y2hlOjptYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhKQogewogICAgIHJldHVybiBt
YWtlVW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3Zl
KHJlc3BvbnNlRGF0YSksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMobmV0
d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25JRCksIHJlcXVlc3QsIHJlc3Bv
bnNlKSk7CiB9CkBAIC00NjQsNyArNDY0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNo
ZTo6bWFrZVJlZGlyZWN0RW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JgogICAg
IHJldHVybiBtYWtlVW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVLZXkocmVxdWVzdCksIHJlc3BvbnNl
LCByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMo
bmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25JRCksIHJlcXVlc3QsIHJl
c3BvbnNlKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3JlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVz
cG9uc2VEYXRhLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3N0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3Bv
bnNlRGF0YSwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKHJlc3BvbnNlRGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IDE5OWYwY2ZiNzMyNTQzYzVm
ZWFmNGZlMjMwMWU2YTFjMTJmODhmZTguLmVkMDRlYmNhMGIzNmYzZjljNGMwZTdiYWM3MTMzNmI5
ZTk2YzM1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuaApAQCAtNDMsNyArNDMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgTG93UG93ZXJNb2RlTm90aWZpZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTE2Niw3ICsxNjYsNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICB1c2lu
ZyBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyID0gRnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+LCBjb25zdCBSZXRyaWV2ZUluZm8mKT47CiAgICAgdm9pZCByZXRyaWV2ZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgc3RkOjpv
cHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFJldHJpZXZlQ29tcGxldGlvbkhh
bmRsZXImJik7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9yZShjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+
JiYgPSBudWxscHRyKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgRnVuY3Rpb248dm9p
ZChNYXBwZWRCb2R5Jik+JiYgPSBudWxscHRyKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+
IHN0b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVkaXJlY3RSZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IG1heEFnZUNhcCk7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEVudHJ5PiB1cGRhdGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgRW50cnkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiB2YWxp
ZGF0aW5nUmVzcG9uc2UpOwogCkBAIC0xODUsNyArMTg1LDcgQEAgcHVibGljOgogICAgIHZvaWQg
cmV0cmlldmVEYXRhKGNvbnN0IERhdGFLZXkmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpPik7CiAgICAgdm9pZCBzdG9yZURhdGEoY29uc3QgRGF0YUtleSYsICBjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QpOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4g
bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IG1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gbWFrZVJlZGlyZWN0RW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVkaXJlY3RSZXF1ZXN0KTsKIAogICAgIHZvaWQgZHVtcENvbnRlbnRzVG9GaWxlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRW50cnkuY3BwCmluZGV4IGYxZWZmZjM1MGZhMzdmNmI0NjgxNTlmYzY2MmU3YWE5NDI4
M2Q3ZTEuLjc2MTA3OGRlYTA5M2MwNDU1NWJlOThiMDUxNzNlMzQxNTA2N2E4NTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuY3BwCkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFj
ZSBOZXR3b3JrQ2FjaGUgewogCi1FbnRyeTo6RW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+
JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpCitFbnRyeTo6RW50cnkoY29uc3QgS2V5JiBrZXksIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8
U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKQogICAgIDogbV9rZXkoa2V5
KQogICAgICwgbV90aW1lU3RhbXAoV2FsbFRpbWU6Om5vdygpKQogICAgICwgbV9yZXNwb25zZShy
ZXNwb25zZSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBTdG9yYWdlOjpSZWNvcmQgRW50cnk6OmVuY29k
ZUFzU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAgICAgRGF0YSBib2R5OwogICAgIGlmIChtX2J1ZmZl
cikgewogICAgICAgICBtX2J1ZmZlciA9IG1fYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwotICAg
ICAgICBib2R5ID0geyBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Kj4obV9idWZmZXIuZ2V0KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKKyAgICAgICAg
Ym9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U2hhcmVkQnVmZmVyKj4obV9idWZmZXIuZ2V0
KCkpLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCkgfTsKICAgICB9CiAKICAgICByZXR1cm4geyBt
X2tleSwgbV90aW1lU3RhbXAsIGhlYWRlciwgYm9keSwgeyB9IH07CkBAIC0xOTYsNyArMTk2LDcg
QEAgdm9pZCBFbnRyeTo6aW5pdGlhbGl6ZUJ1ZmZlckZyb21TdG9yYWdlUmVjb3JkKCkgY29uc3QK
ICAgICBtX2J1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc291cmNlU3Rv
cmFnZVJlY29yZC5ib2R5LmRhdGEoKSwgbV9zb3VyY2VTdG9yYWdlUmVjb3JkLmJvZHkuc2l6ZSgp
KTsKIH0KIAotV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBFbnRyeTo6YnVmZmVyKCkgY29uc3QKK1dl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIEVudHJ5OjpidWZmZXIoKSBjb25zdAogewog
ICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIGluaXRpYWxpemVCdWZmZXJGcm9tU3RvcmFnZVJl
Y29yZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5oCmluZGV4IDk2OTE1YzM4MDFjMzdkZGFjM2U4ZTYwMzIxZjg4YzIy
MjljZDU5YTAuLjljMDQyMGQ0NGE4MTU4ZGZjNWIyMWNmMTg4MjA0Y2YzYTkxNmI0MmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50
cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmgKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw3ICs0
NCw3IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogY2xhc3MgRW50cnkgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1
ZXN0SGVhZGVycyk7CisgICAgRW50cnkoY29uc3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVh
ZGVycyk7CiAgICAgRW50cnkoY29uc3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBj
b25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVh
ZGVycyk7CiAgICAgZXhwbGljaXQgRW50cnkoY29uc3QgU3RvcmFnZTo6UmVjb3JkJik7CiAgICAg
RW50cnkoY29uc3QgRW50cnkmKTsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNwb25zZTsgfQogICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYg
dmFyeWluZ1JlcXVlc3RIZWFkZXJzKCkgY29uc3QgeyByZXR1cm4gbV92YXJ5aW5nUmVxdWVzdEhl
YWRlcnM7IH0KIAotICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3Q7Cisg
ICAgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3Q7CiAgICAg
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+JiByZWRpcmVjdFJl
cXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlZGlyZWN0UmVxdWVzdDsgfQogCiAjaWYgRU5BQkxF
KFNIQVJFQUJMRV9SRVNPVVJDRSkKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gbV92YXJ5aW5nUmVxdWVzdEhlYWRlcnM7CiAK
ICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gbV9yZWRpcmVjdFJl
cXVlc3Q7Ci0gICAgbXV0YWJsZSBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZl
cjsKKyAgICBtdXRhYmxlIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcjsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogICAgIG11dGFibGUgU2hh
cmVhYmxlUmVzb3VyY2U6OkhhbmRsZSBtX3NoYXJlYWJsZVJlc291cmNlSGFuZGxlOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggZDQzYzA4OWQ2MTg1M2M1
MTllMzYyZmYyYzhjN2M0MTgzY2VjMTAwYi4uNDFkODIzNTAyNDc0N2I2ZmM0YTNhYzU0OGUxMzM0
ZWQ2Y2I1ZWY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtNDYs
NyArNDYsNyBAQCBTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZChDYWNoZSYgY2FjaGUs
IGNvbnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZyYW1lSQogICAgIDogbV9jYWNoZShjYWNoZSkK
ICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAg
ICAgLCBtX29yaWdpbmFsUmVxdWVzdChyZXF1ZXN0KQotICAgICwgbV9idWZmZXJlZERhdGFGb3JD
YWNoZShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKQorICAgICwgbV9idWZmZXJlZERhdGFGb3JDYWNo
ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKICAgICAsIG1fY2FjaGVFbnRyeShX
VEZNb3ZlKGNhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSkKIHsKICAgICBBU1NFUlQoIW1fY2FjaGVF
bnRyeSB8fCBtX2NhY2hlRW50cnktPm5lZWRzVmFsaWRhdGlvbigpKTsKQEAgLTEyMCw3ICsxMjAs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVz
cG9uc2UmJiByZWNlaXZlZFJlc3BvbnNlLCBSZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGlj
eUFjdGlvbjo6VXNlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZm
ZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKQordm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkK
IHsKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZC5oCmluZGV4IDY3ODMwZGYwYjMwMzQzMzAyYTExYjU1MWQ3YTA5ZjZkMWE4NWY1NjMuLjFi
ODQzZGI3ZWMyNzBkYjlkYWI5ZThhMjVmMmE0OGE4ZWNhZTJhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWQuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNB
bGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBS
ZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmco
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcAppbmRleCA1
ZTJlMDJlMmZiYTBiNGEwYzAzYjVkM2U2NmI5N2Y3YmNjYzc5NThiLi4zMTk5YmZmMzExYjZjM2Vl
ZmJlOTUwYjQ1ZTZiMGE5NmUzMjc3N2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLVByZWZldGNoQ2FjaGU6OkVudHJ5OjpFbnRyeShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQorUHJlZmV0Y2hDYWNoZTo6RW50cnk6OkVudHJ5KFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogICAgIDogcmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpLCBidWZm
ZXIoV1RGTW92ZShidWZmZXIpKQogewogfQpAQCAtNzIsNyArNzIsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UHJlZmV0Y2hDYWNoZTo6RW50cnk+IFByZWZldGNoQ2FjaGU6OnRha2UoY29uc3QgVVJMJiB1
cmwpCiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIGV4cGlyYXRpb25UaW1lb3V0IHsgNV9zIH07CiAK
LXZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmUoY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQordm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZShjb25zdCBVUkwmIHJlcXVl
c3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghbV9zZXNz
aW9uUHJlZmV0Y2hlcykKICAgICAgICAgbV9zZXNzaW9uUHJlZmV0Y2hlcyA9IG1ha2VVbmlxdWU8
UHJlZmV0Y2hFbnRyaWVzTWFwPigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaAppbmRleCBhMjUxNTIwYjMxZWFjOTIxYzIyZDMxMTUx
ZDZkMjMxYTFiZWQxMzhjLi41MmMwYjEwZmNjNmQ1YTZkZTExNDQ3ZTdlNGU4MjJkZjhmODQxY2I1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNo
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNo
Q2FjaGUuaApAQCAtNDcsMTggKzQ3LDE4IEBAIHB1YmxpYzoKIAogICAgIHN0cnVjdCBFbnRyeSB7
CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgRW50cnko
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKTsKKyAgICAgICAgRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgICAgIEVudHJ5KFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogCi0g
ICAgICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlbGVhc2VCdWZmZXIoKSB7IHJldHVy
biBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsgfQorICAgICAgICBSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gcmVsZWFzZUJ1ZmZlcigpIHsgcmV0dXJuIGJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpOyB9CiAKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZTsKLSAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAg
ICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVkaXJlY3RSZXF1ZXN0OwogICAgIH07CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHRha2UoY29uc3QgVVJMJik7Ci0gICAgdm9pZCBzdG9y
ZShjb25zdCBVUkwmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgc3RvcmUoY29uc3QgVVJMJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJik7CiAgICAgdm9pZCBzdG9yZVJlZGlyZWN0KGNvbnN0IFVSTCYsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5oCmluZGV4IGI5YWIwZGVlYmI5ZjkyN2M3Mzc0MmU4NmEwYmU3Zjk3MTYw
YmQ2ZmIuLjQxNjY4YTViMWNkNzM4Njk2N2I4ZmQ5NzNlOTY3MzJlY2E5MDdlZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTmVnb3Rp
YXRlTW9kZXJuVExTKGNvbnN0IFVSTCYpOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciYmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpOwogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRp
cmVjdENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgdHJhbnNmZXJTYW5kYm94RXh0ZW5z
aW9uVG9Eb3dubG9hZChEb3dubG9hZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggZTc4MGQ2
YzFjM2NkMWViMmMyZmY1YTBjNTY0YTBlNGQ4OGI3ZWE1ZC4uMzA1MWYxNjljYjBhMzcwOTk4NWEx
NjExMjJjMjVmMGU4ZjE3YmQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC00NDIsNyArNDQy
LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkQ29tcGxldGVXaXRoRXJyb3IoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXIKICAgICAgICAgbV9jbGllbnQtPmRpZENvbXBs
ZXRlV2l0aEVycm9yKGVycm9yLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogfQogCi12b2lkIE5ldHdv
cmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIGRhdGEpCit2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIFdURkVtaXRT
aWducG9zdChtX3Rhc2suZ2V0KCksICJEYXRhVGFzayIsICJyZWNlaXZlZCAlemQgYnl0ZXMiLCBk
YXRhLT5zaXplKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKaW5kZXggNjc3YzYxZGExYTE4OTRjMWY1
OTY1NmQ5MjcwOWViNzFkNTkxYTU1My4uM2RjNjVmZjgyYzlkYTg5MmQyMGMzNDg4NmU1YTFjNGQ3
OWRhZGVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtEYXRhVGFza0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVx
dWVzdCwgQ3VybFJlc3BvCiAgICAgaW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9CiAKLXZv
aWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3Qm
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6
Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwogICAg
IGlmIChzdGF0ZSgpID09IFN0YXRlOjpDYW5jZWxpbmcgfHwgc3RhdGUoKSA9PSBTdGF0ZTo6Q29t
cGxldGVkIHx8ICghbV9jbGllbnQgJiYgIWlzRG93bmxvYWQoKSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaAppbmRl
eCAxYzQyN2RkYjc4ZDY5NTNmZTg5NjBjNTY5MmFmZGU0ZjRmMGVlZTg1Li40NWJlNWNlMTg0MzI1
MjcxZDVjMDgwZGQzNGYxZWU0YTE2NjQyYTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKQEAgLTY4LDcgKzY4
LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8V2ViQ29yZTo6Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1cmxS
ZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZXF1ZXN0U3RhdHVzID0gUmVxdWVz
dFN0YXR1czo6TmV3UmVxdWVzdCk7CiAgICAgdm9pZCBjdXJsRGlkU2VuZERhdGEoV2ViQ29yZTo6
Q3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OkN1cmxSZXF1
ZXN0JiwgV2ViQ29yZTo6Q3VybFJlc3BvbnNlJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgY3VybERp
ZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0JiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZENvbXBsZXRlKFdlYkNvcmU6OkN1cmxSZXF1ZXN0
JiwgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3Vy
bERpZEZhaWxXaXRoRXJyb3IoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiYsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYmKSBvdmVycmlkZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1Nv
dXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwCmluZGV4IGU2NWIyZWE4MzhiMDgxODNjOTZiODMxMjBiMWZlZjE1NmJiOGMwOTUu
LmU2N2UwNWJhODQ3OGE1ODE4MzBlMzk3MDY4YjMyZmIwOGQ5MWI3ZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAKQEAgLTE3NjEsNyArMTc2MSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlk
UmVhZERhdGFVUkwoc3RkOjpvcHRpb25hbDxEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmCiAgICAg
fQogCiAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZSht
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCByZXN1bHQudmFsdWUoKSk7Ci0gICAgYXV0byBieXRlcyA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpLT5j
cmVhdGVHQnl0ZXMoKTsKKyAgICBhdXRvIGJ5dGVzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CiAgICAgbV9pbnB1dFN0cmVhbSA9
IGFkb3B0R1JlZihnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fYnl0ZXMoYnl0ZXMuZ2V0
KCkpKTsKICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIu
aAppbmRleCBmNWRiNzA2YzQ0NTgwMjEwODdmOTU5OTY2OWRmYTdkOWY4Mzc5NzhjLi4zM2Q0M2I3
MjIzOGQyMDNlN2VkZWM5NDE0Y2FmOWZkYThmNDA1MjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaApAQCAt
NTUsNyArNTUsNyBAQCBzdHJ1Y3QgUGFja2V0T3B0aW9uczsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgUmVnaXN0cmFibGVEb21haW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggMjlmNzFk
N2U2ZGM3NTBlZjE5ZjMyODYyYzg5YjcxODVlMDNiZjg5Ni4uZGY4ZWUzMGM0M2MwZmZmNGQwZWE2
ZDhjZWNlM2ZjZjRjYjMzZWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTUxLDkgKzUxLDkgQEAgc3RkOjpvcHRpb25hbDxTaGFy
ZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRh
dGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwog
ICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgcmV0
dXJuIHsgV1RGTW92ZShidWZmZXIpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCBlOWNkODcyZjhkNDRmMTVlMGVlMzdjNzM0OTJi
MmQ4MDJhYzkwNzE2Li4xN2YwOGMyOGVhMTI1YjU1MDk5M2VlZDI0ZDU5NjNiODUxMGExMTQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC0y
Myw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
Ly8gRW5jb2RlcyBhIFNoYXJlZEJ1ZmZlciB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgY29weSBvZiB0
aGUgZGVjb2RlZCBkYXRhIGluIGEgbmV3IFNoYXJlZEJ1ZmZlci4KKy8vIEVuY29kZXMgYSBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBjb3B5IG9mIHRoZSBkZWNv
ZGVkIGRhdGEgaW4gYSBuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KIC8vIFRvIGF2b2lkIGNv
cHlpbmcgZnJvbSB0aGUgRGVjb2RlciwgdXNlIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgdG8g
cmVjZWl2ZSBhIERhdGFSZWZlcmVuY2UgaW5zdGVhZC4KIAogI3ByYWdtYSBvbmNlCkBAIC0zOSwx
OSArMzksMTkgQEAgY2xhc3MgU2hhcmVkQnVmZmVyQ29weSB7CiBwdWJsaWM6CiAgICAgU2hhcmVk
QnVmZmVyQ29weSgpID0gZGVmYXVsdDsKIAotICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVm
ZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9Ci0gICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIo
V1RGTW92ZShidWZmZXIpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/IGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPigpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQog
ICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CisgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICBTaGFyZWRCdWZm
ZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
KyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJDb3B5
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAg
OiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3VzKCkpIHsgfQotICAgIFNoYXJlZEJ1ZmZl
ckNvcHkoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCisgICAgU2hhcmVkQnVm
ZmVyQ29weShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAg
ICAgICAgIDogbV9idWZmZXIoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpIHsgfQogCi0gICAgUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVybiBt
X2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBj
b25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXI7IH0KIAogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CiAgICAgc2l6ZV90IHNp
emUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CkBA
IC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIHN0
ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0
ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7
CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaAppbmRleCBkM2QwZWM1ZTk3ODU1OTliNjM0YTg0YzZj
NDQ3MWI1MmNkMjIxM2YxLi42N2VjOGU1ZTkyYmQwMjQxMTVkYjBkNDA4MGEyNGZlNzM1NzBkM2Y1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZS5oCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotLy8gRW5jb2RlcyBhIFNoYXJlZEJ1ZmZlciBvciBEYXRhUmVm
ZXJlbmNlIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBEYXRhUmVmZXJlbmNlIHRvIHRoZSBkZWNvZGVk
IGRhdGEuCisvLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBvciBEYXRhUmVmZXJl
bmNlIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBEYXRhUmVmZXJlbmNlIHRvIHRoZSBkZWNvZGVkIGRh
dGEuCiAKICNwcmFnbWEgb25jZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L1NoYXJlZE1lbW9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5j
cHAKaW5kZXggYjNhOTlhZjhmNTEyN2Y2YTY1M2NjMWM4Zjg1YjYyYjZjYWFmMTU4YS4uYzAyNmY1
NDk1NjliMmJlMDA3OGFlMzI1ZDA1MzllMDcxYWYxMTA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vU2hhcmVkTWVtb3J5LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJl
ZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxT
aGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtNDgsMTAgKzQ4LDEwIEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+
IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAg
ICByZXR1cm4gc2hhcmVkTWVtb3J5OwogfQogCi1SZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
U2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25zdAor
UmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90
IGRhdGFTaXplKSBjb25zdAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXplKCkpOwotICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyIHsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyIHsKICAgICAgICAgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSAtPiBjb25z
dCB1aW50OF90KiB7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7CiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9TaGFyZWRNZW1vcnkuaAppbmRleCA3NmI3M2NhZTRjODVkN2VlMzY4YjFmODRkNTFlZTAwZjky
ZTkwNDdjLi4xYjRmZGZhZjY4Mzg5ZGNlNzI4ZmYzNGU1ZTVmMDEyZTI0M2ZhMmNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTQ0LDggKzQ0LDggQEAgY2xhc3MgRW5j
b2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiB9CiAKICNpZiBPUyhEQVJXSU4pCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogCiAgICAg
Ly8gRklYTUU6IENoYW5nZSB0aGVzZSBmYWN0b3J5IGZ1bmN0aW9ucyB0byByZXR1cm4gUmVmPFNo
YXJlZE1lbW9yeT4gYW5kIGNyYXNoIG9uIGZhaWx1cmUuCiAgICAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRNZW1vcnk+IGFsbG9jYXRlKHNpemVfdCk7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1v
cnk+IGNvcHlCdWZmZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGlj
IFJlZlB0cjxTaGFyZWRNZW1vcnk+IGNvcHlCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOwogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtYXAoY29u
c3QgSGFuZGxlJiwgUHJvdGVjdGlvbik7CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAg
ICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHdyYXBNYXAodm9pZCosIHNpemVfdCwgaW50
IGZpbGVEZXNjcmlwdG9yKTsKQEAgLTE1NCw3ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0
dXJuIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGluIGJ5dGVzLgogICAgIHN0YXRpYyB1bnNpZ25lZCBz
eXN0ZW1QYWdlU2l6ZSgpOwogCi0gICAgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OworICAgIFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OwogCiBwcml2YXRl
OgogI2lmIE9TKERBUldJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggMzVlYTE2MjE1NmEyMDcwMjZk
ZjEzNDFjNWMwYTg3M2EyM2E3ZWM3MS4uM2MxYjU3ZDVhYTI2ZWM3MmU2MGI1ZDc4YTExZTlmZDg1
MmNmZmVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTU2NCw3ICs1NjQsNyBAQCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6
OkZvbnQ+Pjo6ZGVjbwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCpp
bmNsdWRlc0NyZWF0aW9uRGF0YSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CiAgICAgICAg
IGRlY29kZXIgPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdElt
YWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggNDU0MTY0MzZjMjUwNTIwODM4ZTVkZmRjYzJiZmUz
NTNmYjU5YzJhMS4uZTlhNTEzYTMwNWVkZDY1YmRmYTM3NGUxYmQwZTNmZWFiMWY2YjgyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtMTA1LDcg
KzEwNSw3IEBAIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlCiAgICAgUkVMRUFTRV9MT0coUmVtb3Rl
TGF5ZXJUcmVlLCAiQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZCBvZiBzaXplICVkeCVk
IGVuY29kZWQgZGlzcGxheSBsaXN0IG9mICVsZCBieXRlcyIsIHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKTsKICNlbmRpZgogCi0gICAgcmV0
dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7IFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSB9IH07Cisg
ICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29w
eSB7IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKIH0KIAog
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5k
Ojpjb250ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJl
YWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmNwcAppbmRleCAyYzE2MTFjOWU3MGY4ZjlhMTM3OWMyYzg0MzA4NDczNTJlNGM5NmNhLi42ZmEw
MmE3YmMzZWU1NGFlNmQzMjUzODEwZDc4ZGVjMzE2NTM1M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC01NSwxNSArNTUsMTUgQEAgYm9vbCBTaGFy
ZWFibGVSZXNvdXJjZTo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5k
bGUmIGhhbmRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQorUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiB7
Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6
UHJvdmlkZXIgeworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6
UHJvdmlkZXIgewogICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4gc2Vs
Zi0+ZGF0YSgpOyB9LAogICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4g
c2VsZi0+c2l6ZSgpOyB9CiAgICAgfSk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBj
b25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5
V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBSZWZQdHI8U2hhcmVhYmxlUmVzb3Vy
Y2U+IHJlc291cmNlID0gU2hhcmVhYmxlUmVzb3VyY2U6Om1hcCgqdGhpcyk7CiAgICAgaWYgKCFy
ZXNvdXJjZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVz
b3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKaW5kZXgg
YTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2NiNGY2NGU0MTJhYS4uZGExZWVlMGFkNjJjYjM0
ODRjMWMzNDA1YzQ4NzBjZjBjNTFlMTYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFi
bGVSZXNvdXJjZS5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xh
c3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0LDcgKzU0LDcg
QEAgcHVibGljOgogICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAg
ICAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXIm
LCBIYW5kbGUmKTsKIAotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlYWJsZVJlc291cmNlOwpAQCAtODAs
NyArODAsNyBAQCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIFNoYXJlYWJsZVJlc291cmNl
KFJlZjxTaGFyZWRNZW1vcnk+JiYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6ZSk7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1
ZmZlcigpOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJlZEJ1
ZmZlcigpOwogCiAgICAgUmVmPFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDY3Yjdl
YjkwMzQwNTVkN2YxMWM0YzYxNTMzZjIyYzAxYmM1ODE5NTguLjg0M2ZkNDczMTNhZWVjYTI5OTMw
NjEyZmM1ZWM1Nzg3NTU0MzQyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIERFRklORV9TSU1QTEVfQVJH
VU1FTlRfQ09ERVJfRk9SX1NPVVJDRShEaXNwbGF5TGlzdDo6U2V0SW5saW5lU3Ryb2tlQ29sb3Ip
CiAKICN1bmRlZiBERUZJTkVfU0lNUExFX0FSR1VNRU5UX0NPREVSX0ZPUl9TT1VSQ0UKIAotc3Rh
dGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciogYnVmZmVyKQorc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICBi
b29sIGlzTnVsbCA9ICFidWZmZXI7CiAgICAgZW5jb2RlciA8PCBpc051bGw7CkBAIC0xNzcsNyAr
MTc3LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICNpZiBVU0Uo
VU5JWF9ET01BSU5fU09DS0VUUykKLSAgICAvLyBEbyBub3QgdXNlIHNoYXJlZCBtZW1vcnkgZm9y
IFNoYXJlZEJ1ZmZlciBlbmNvZGluZyBpbiBVbml4LCBiZWNhdXNlIGl0J3MgZWFzeSB0byByZWFj
aCB0aGUKKyAgICAvLyBEbyBub3QgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIgZW5jb2RpbmcgaW4gVW5peCwgYmVjYXVzZSBpdCdzIGVhc3kgdG8gcmVhY2ggdGhl
CiAgICAgLy8gbWF4aW11bSBudW1iZXIgb2YgZmlsZSBkZXNjcmlwdG9ycyBvcGVuIHBlciBwcm9j
ZXNzIHdoZW4gc2VuZGluZyBsYXJnZSBkYXRhIGluIHNtYWxsIGNodW5rcwogICAgIC8vIG92ZXIg
dGhlIElQQy4gQ29ubmVjdGlvblVuaXguY3BwIGFscmVhZHkgdXNlcyBzaGFyZWQgbWVtb3J5IHRv
IHNlbmQgYW55IElQQyBtZXNzYWdlIHRoYXQgaXMKICAgICAvLyB0b28gbGFyZ2UuIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NTcxLgpAQCAtMTkxLDcgKzE5
MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgogfQogCi1zdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNOdWxsOwog
ICAgIGRlY29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVm
UHRyPENvbnRpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghYnVmZmVyU2l6ZSkg
ewotICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8Q29udGkK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICNlbHNlCiAgICAgU2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXBjSGFu
ZGxlKSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
ZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxDb250aQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyB2b2lkIGVuY29kZVR5cGVz
QW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNv
bnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKHR5
cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZW5jb2RlciA8PCB0eXBlczsKQEAgLTI0
OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjbwogICAgICAgICBlbmNvZGVTaGFy
ZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8
U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBk
YXRhKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShE
ZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hh
cmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlcykpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2MSw3ICsyNjEsNyBAQCBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3Rv
cjxTdHJpbgogICAgIEFTU0VSVChkYXRhU2l6ZSA9PSB0eXBlcy5zaXplKCkpOwogCiAgICAgZm9y
ICh1aW50NjRfdCBpID0gMDsgaSA8IGRhdGFTaXplOyBpKyspIHsKLSAgICAgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZm
ZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkYXRhLmFwcGVuZChidWZm
ZXIpOwpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2lu
ZTo6UmVjb3JkPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IERPTUNhCiAgICAgZW5j
b2RlciA8PCByZWNvcmQudXBkYXRlUmVzcG9uc2VDb3VudGVyOwogICAgIGVuY29kZXIgPDwgcmVj
b3JkLnJlc3BvbnNlQm9keVNpemU7CiAKLSAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25z
ZUJvZHksIFsmXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewor
ICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgZW5jb2RlciA8PCB0cnVlOwogICAgICAgICBl
bmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKICAgICB9LCBbJl0oY29u
c3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKQEAgLTQxNCw3ICs0MTQsNyBAQCBzdGQ6Om9w
dGlvbmFsPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdp
bmU6OlJlY29yZD46OmRlYwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KGhhc1NoYXJlZEJ1ZmZlckJvZHkpIHsKLSAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAg
ICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKGJ1ZmZlcikKQEAgLTE1NTAsMTAg
KzE1NTAsMTAgQEAgdm9pZCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRy
eT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdAogICAgIGlmIChoYXNTdHJpbmcpCiAg
ICAgICAgIGVuY29kZXIgPDwgc3RkOjpnZXQ8U3RyaW5nPihwbGF0Zm9ybURhdGEpOwogCi0gICAg
Ym9vbCBoYXNCdWZmZXIgPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+
PihwbGF0Zm9ybURhdGEpOworICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSk7CiAgICAgZW5j
b2RlciA8PCBoYXNCdWZmZXI7CiAgICAgaWYgKGhhc0J1ZmZlcikKLSAgICAgICAgZW5jb2RlU2hh
cmVkQnVmZmVyKGVuY29kZXIsIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURh
dGEpLnB0cigpKTsKKyAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIHN0ZDo6Z2V0
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKS5wdHIoKSk7CiB9CiAK
IGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5JiBkYXRhKQpAQCAt
MTU4Myw3ICsxNTgzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpFbnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWIKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgaWYgKGhhc0J1ZmZlcikgewotICAgICAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gdmFsdWU7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVl
OwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCB2YWx1ZSkgfHwgIXZh
bHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkYXRhLnBsYXRmb3JtRGF0
YSA9IHsgdmFsdWUucmVsZWFzZU5vbk51bGwoKSB9OwpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgc3Rk
OjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50
aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OworICAgIHJldHVybiB7IHsg
V1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OwogfQogCiAjZW5kaWYg
Ly8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTMwMTAsNTYgKzMwMTAsNTYgQEAgc3Rk
OjpvcHRpb25hbDxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6U2VyaWFsaXplZFAKIH0KICNlbmRpZgogCi12b2lkIEFyZ3VtZW50Q29kZXI8UmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3ZvaWQgQXJndW1lbnRD
b2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpCiB7CiAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5n
ZXQoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50
Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBBcmd1
bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVj
b2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICByZXR1cm4gYnVmZmVyOwogfQogCi12b2lkIEFyZ3VtZW50Q29kZXI8UmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3ZvaWQgQXJndW1lbnRDb2RlcjxS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIp
CiB7CiAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7CiB9CiAK
LXN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9u
YWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewot
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIs
IGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVy
PFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
IGJ1ZmZlcikKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYgYnVmZmVyKQogewogICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZm
ZXIuZ2V0KCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAo
IWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVm
ZmVyKQogewogICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOwog
fQogCi1zdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRD
b2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNv
ZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
QEAgLTMxMjMsNyArMzEyMyw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVy
PiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kCiAgICAgICAgIHJl
dHVybiBkZWNvZGVTY3JpcHRCdWZmZXJBc1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKGRlY29kZXIp
OwogI2VuZGlmCiAKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1
ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBA
IC0zMTM1LDcgKzMxMzUsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZQogewogICAgIGVuY29k
ZXIgPDwgbWVzc2FnZS5maXJzdDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2VE
YXRhID0gbWVzc2FnZS5zZWNvbmQuY29weVJlZigpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlSZWYoKTsKICAgICBl
bmNvZGVyIDw8IG1lc3NhZ2VEYXRhOwogfQogCkBAIC0zMTQ1LDcgKzMxNDUsNyBAQCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gIEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6Q0RNSQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApp
bmRleCBlZjAxMTFmYjU2MmNkZWI2Y2IwZjdhMjUyMWYwOTNhZjI3OTg2NzlmLi42ZmFjMmFhMWVh
Nzg0NmZmNmJmODkwMjFmMGY1MmU5YWE3YWUwM2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTE0LDcgKzExNCw3IEBAIGNsYXNzIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBDZXJ0aWZpY2F0ZUlu
Zm87CiBjbGFzcyBDb2xvcjsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKQEAgLTEzOSw3ICsxMzksNyBAQCBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0QnVmZmVyOwog
Y2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3ByaW5nVGltaW5nRnVuY3Rpb247CiBjbGFzcyBTdGVw
c1RpbWluZ0Z1bmN0aW9uOwogY2xhc3MgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRz
OwpAQCAtNzUyLDYgKzc1MiwxNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gewogfTsKICNlbmRpZgogCit0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3Qg
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBkZWNv
ZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYp
OworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Jik7
CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
IGRlY29kZShEZWNvZGVyJik7CkBAIC03NjIsMTYgKzc3Miw2IEBAIHRlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXIm
KTsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29k
ZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKLSAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gewotICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+Jik7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwotfTsKLQogdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IHsKICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYpOwogICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29k
ZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHRE
YXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcApp
bmRleCBjZjJlNGQ1ZjkzZmQyZDk0NmJhYmZmOTNlZWEzZTllODYwYWViYmY0Li5iNjA3YWNlODM4
ZTA0YmNlMWE2YWVlNGRhNTY1NTllMDk2OTgzOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFdlYkhpdFRlc3RS
ZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0YShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0JiBoaXRUZXN0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChJbWFnZSogaW1hZ2UgPSBo
aXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gaW1hZ2UtPmRhdGEoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7CiAgICAgICAgIGlmIChidWZmZXIpIHsKICAgICAg
ICAgICAgIGltYWdlU2hhcmVkTWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNvcHlCdWZm
ZXIoKmJ1ZmZlcik7CiAgICAgICAgICAgICBpbWFnZVNpemUgPSBidWZmZXItPnNpemUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4IDY0
NWQ5YmZhYjc1N2IzMWQ3ZTYwMGU3OGJhYjAzYTdlODkzOTcxODUuLjY3MTc1OGEyODBhNWU0NDBh
YTA2MGE3OWNmMWYwZjEyNmRiN2JlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3Rr
L0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEFyZ3VtZW50Q29k
ZXI8U2VsZWN0aW9uRGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTZWxlY3Rp
b25EYXRhJgogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSA9IHNlbGVjdGlvbi5oYXNDdXN0b21EYXRh
KCk7CiAgICAgZW5jb2RlciA8PCBoYXNDdXN0b21EYXRhOwogICAgIGlmIChoYXNDdXN0b21EYXRh
KQotICAgICAgICBlbmNvZGVyIDw8IFJlZlB0cjxTaGFyZWRCdWZmZXI+KHNlbGVjdGlvbi5jdXN0
b21EYXRhKCkpOworICAgICAgICBlbmNvZGVyIDw8IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPihzZWxlY3Rpb24uY3VzdG9tRGF0YSgpKTsKIAogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNl
ID0gc2VsZWN0aW9uLmNhblNtYXJ0UmVwbGFjZSgpOwogICAgIGVuY29kZXIgPDwgY2FuU21hcnRS
ZXBsYWNlOwpAQCAtMTU5LDEwICsxNTksMTAgQEAgc3RkOjpvcHRpb25hbDxTZWxlY3Rpb25EYXRh
PiBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0N1c3RvbURhdGEpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmIChoYXNDdXN0b21EYXRhKSB7Ci0gICAgICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURhdGEo
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKKyAgICAgICAgc2VsZWN0aW9u
LnNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOwogICAgIH0KIAogICAg
IGJvb2wgY2FuU21hcnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
d2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93
aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAppbmRleCA4YWVmNGE1MDFkYWQ5Mjc2NmM3
MTlmYzUwMDZjNmRmMTJhZGE1YWEwLi4yOTJkNzE0NTJjNWMzYTk0OTJiMmY1YjYxNjgyNzM1MzBh
YzJkZDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFy
Z3VtZW50Q29kZXJzV2luLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0ZDo6b3B0aW9uYWw8Rm9u
dFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURh
dGEoRGVjCiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhKiBjcmVhdGlvbkRhdGEg
PSBudWxscHRyOwogCiAgICAgaWYgKGluY2x1ZGVzQ3JlYXRpb25EYXRhLnZhbHVlKCkpIHsKLSAg
ICAgICAgc3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNl
RGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VE
YXRhOwogICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgaWYgKCFmb250
RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IGM5MGQzZDgxMTNmNzE5
MDFiMDhmMjY0ODkxNmFkMmNjMjlkOTgzMzQuLjE0OTBjNTExYmRjMzhiZDhhYjRhNjk1YWVjZjMw
NmQ5NWZhYTM5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNo
bWVudC5jcHAKQEAgLTk4LDE3ICs5OCwxNyBAQCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBBdHRh
Y2htZW50OjpmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdAogICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xv
c2luZ0ltYWdlRGF0YSgpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVw
cmVzZW50YXRpb24oKSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEF0
dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKK3ZvaWQgQXR0
YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCmluZGV4IGM2YzJhMDZlYzk3ZGRmMGQ2
Y2FiNDJiNGE2NDA5YjNjNDdiNGRlZmUuLmZlNTBlNTM4YjhlYmIzNTFhNDgzNmQxZGQ4OTNkMTQ3
YTU2YTg3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
aApAQCAtMzgsOCArMzgsOCBAQCBPQkpDX0NMQVNTIE5TRmlsZVdyYXBwZXI7CiBPQkpDX0NMQVNT
IE5TU3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04MywxNCArODMsMTQgQEAgcHVibGljOgog
CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBlbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3Q7CiAgICAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemVGb3JEaXNwbGF5KCkgY29uc3Q7CiAKICAg
ICB2b2lkIHNldEhhc0VuY2xvc2luZ0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsgbV9o
YXNFbmNsb3NpbmdJbWFnZSA9IGhhc0VuY2xvc2luZ0ltYWdlOyB9CiAgICAgYm9vbCBoYXNFbmNs
b3NpbmdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRW5jbG9zaW5nSW1hZ2U7IH0KIAotICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVk
UmVwcmVzZW50YXRpb24oKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVw
cmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7CisgICAgdm9pZCB1
cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgQXR0YWNobWVudChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0
OjpXZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDJmNDQ4YTc2MzkyN2UwMmVjYzE1
OTc1NjAyYzkwMWI3MTlhMWE2MTAuLjM2YTZmNGZiMDdmMGFiOWRkYzdhNDYxOGZlZDQyMmVjMzg5
NzQwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHRlbXBsYXRlPD4gdm9p
ZCBnZXREYXRhKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBkYXRhLCBjb25zdCBG
dW5jdGlvbjxiCiB7CiAgICAgZGF0YS5hcHBseShmdW5jdGlvbik7CiB9Ci10ZW1wbGF0ZTw+IHZv
aWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBkYXRhLCBj
b25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCit0ZW1w
bGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKIHsKICAg
ICBmdW5jdGlvbih7IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSB9KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKaW5k
ZXggN2ZjMDU0NTdlNjRjZjU4OWIwZmIwZTdlMDM2ZjY5MGZhMmMxN2JhYy4uNGUyNjZmMzY3YWM2
MDJiOGVmMWVhZjc1N2EwYTA0ZGM3M2Y3NzFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKQEAgLTMwLDcgKzMwLDcg
QEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0K
IAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SU5hdmlnYXRpb25DbGllbnQuaAppbmRleCA1NjIzNDAxNDU5ZGE1ZmUzMGY0OTFhNDFmYjM0N2E2
NzU3MjAyYzQwLi4xMTFmMDkyNjNmODIyMzgyOWE1YWQyNjQ0MzRiYTQyMGYxOThkZDFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgc3RydWN0IENvbnRlbnRSdWxlTGlzdFJlc3VsdHM7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogfQogCkBAIC0xMTksNyArMTE5LDcgQEAgcHVi
bGljOgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0TG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVO
YW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xv
b2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKSB7IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBSZWY8TmF2aWdhdGlvbkFjdGlvbj4m
JiwgUmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBP
YmplY3QqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQ
SUF0dGFjaG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9B
UElBdHRhY2htZW50Q29jb2EubW0KaW5kZXggOTRkYjU1NzUzMjg1ZjhhMDNmMGRhMmMzY2EyZDg2
ODE3YzI5NTI5NS4uZGZlZjNlMDcwZjk2MTYzMDQ5NzE0NGRhZjNmMzAwY2I0Y2E1MTk1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNo
bWVudENvY29hLm1tCkBAIC0xMzcsNyArMTM3LDcgQEAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
QXR0YWNobWVudDo6ZmlsZVNpemVGb3JEaXNwbGF5KCkgY29uc3QKICAgICByZXR1cm4gW2ZpbGVX
cmFwcGVyIHJlZ3VsYXJGaWxlQ29udGVudHNdLmxlbmd0aDsKIH0KIAotUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKK1Jl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3Np
bmdJbWFnZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9oYXNFbmNsb3NpbmdJbWFnZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBBdHRhY2htZW50
Ojppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gIW1fZmlsZVdyYXBwZXIgJiYgIW1fZmlsZVdy
YXBwZXJHZW5lcmF0b3I7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAor
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICBhdXRvIGZpbGVXcmFwcGVyID0gdGhpcy0+
ZmlsZVdyYXBwZXIoKTsKIApAQCAtMTcwLDEwICsxNzAsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNl
bnRhdGkKICAgICBpZiAoIXNlcmlhbGl6ZWREYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2Vy
aWFsaXplZERhdGEpOworICAgIHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
ZXJpYWxpemVkRGF0YSk7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBz
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkK
K3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29uc3Qg
V1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGlmICghbV93ZWJQYWdlKQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRh
cmdldEd0azMuY3BwCmluZGV4IDZiNzU2YWE0MTdiNTFlZGQ3ZmQzZmZiZGRmM2MyMmU0NDUzMTky
OTAuLmY1YWYwOTJiYjIyNTgyMDU5NmNiMDI1MzBkMGRiMGI3Njk0NDAzMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCkBAIC0y
MTEsNyArMjExLDcgQEAgdm9pZCBEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQoSW50UG9pbnQmJiBw
b3NpdGlvbiwgR3RrU2VsZWN0aW9uRGF0YSogZGF0YSwgdW5zaWcKICAgICAgICAgaW50IGxlbmd0
aDsKICAgICAgICAgY29uc3QgYXV0byogY3VzdG9tRGF0YSA9IGd0a19zZWxlY3Rpb25fZGF0YV9n
ZXRfZGF0YV93aXRoX2xlbmd0aChkYXRhLCAmbGVuZ3RoKTsKICAgICAgICAgaWYgKGxlbmd0aCA+
IDApCi0gICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVu
Z3RoKSkpOworICAgICAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAppbmRleCBhYzRhMGY0MzcwMTUyZWQ1NzJiNTA5
MWRmYTUxYmFlYmFiODdmNGU5Li5jODAyOWMxNDBhNmRkMTRiMTk2NDkyMjViODc4MzBlZWMxMzQw
MGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykK
ICAgICAgICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
KGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgb3Zl
cnJpZGU7Ci0gICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgICAg
IHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3Qg
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUubW0KaW5kZXggNzI1Yjc3MGY2YzU0MjZhYzhjYjdiNjc0YzQ2MWY4MWUzZWUz
NjYwNy4uOGQzYTg1NjQ2MmVhZWY3NDFkOGMyOWUyNTkyZmQ1NzM2NmY1OTljOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTIy
MCw3ICsxMjIwLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRp
ZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnIKICAgICBbc3RhdGljX2Nhc3Q8
aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQo
KSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRTdGFydExvYWRGb3JR
dWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lV2l0aEZpbGVOYW1lOmZpbGVOYW1lIHV0aTp1dGld
OwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNo
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNo
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggYmUxNDM3MGRlMDliZDU3MDJiOWM3ZGRjZDZjNzdiOGY2
ZGE1ZjViOC4uNjgzMzczZWFlMDBmNWRiNDJiODE0NmNlOWQ1MzFiYzhhYzBhNTRjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29j
b2EubW0KQEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZEF1ZGlv
Q29tcG9uZW50UmVnaXN0cmF0aW9ucygpCiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25EYXRh
ID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlvbnMu
Z2V0KCkpOworICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7CiAgICAgICAgICAgICB3ZWFr
VGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVn
aXN0cmF0aW9ucyh7IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkgfSksIDApOwogICAgICAgICB9
KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5o
CmluZGV4IDNmNmRkMWYyNDJlN2ExMTVlY2Y3OTgzOTBmMzRiNjM1YzZlOGQ2ZjkuLmY1ODkxMjQx
NzAyZGFhNDIwY2M0ZTZlMjQ2MjhhMWNkZTg5MDdkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaApAQCAtNTA2LDcgKzUwNiw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUmIGltYWdlKTsKICAgICB2b2lkIHNldEZpbGVBbmRVUkxUeXBlcyhO
U1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwg
TlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIE5TUGFzdGVib2FyZCAqKTsKLSAg
ICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiwgTlNTdHJpbmcg
KmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5n
ICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGFyY2hp
dmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKnBhc3RlYm9hcmRP
cmlnaW4pOworICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2Uq
LCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRs
ZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwg
TlNTdHJpbmcgKnBhc3RlYm9hcmRPcmlnaW4pOwogICAgIHZvaWQgcGFzdGVib2FyZENoYW5nZWRP
d25lcihOU1Bhc3RlYm9hcmQgKik7CiAgICAgdm9pZCBwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQo
TlNQYXN0ZWJvYXJkICosIE5TU3RyaW5nICp0eXBlKTsKICAgICBOU0FycmF5ICpuYW1lc09mUHJv
bWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluYXRpb24pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCA2ODE0
YTcwYTAyYmE1ZGNhZWFhZjRmNDRlMDUxNDg3Zjc5N2I0ZTA5Li42MjM2N2RjNWFkMWZlMTIyMWY3
YjA5OWU5YmI0NDU0ZGIzN2E1OGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbQpAQCAtMjk3Niw3ICsyOTc2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6
d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU0Fy
cmF5ICoKICAgICAgICAgaWYgKFtbdHlwZXMgb2JqZWN0QXRJbmRleDppXSBpc0VxdWFsVG86V2Vi
Q29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0pCiAgICAgICAgICAgICBbcGFzdGVi
b2FyZCBzZXRTdHJpbmc6bV9wYWdlLT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgZm9y
VHlwZTpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0
QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RB
dEluZGV4OmldKTsKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVm
ZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOlt0eXBlcyBvYmplY3RBdElu
ZGV4OmldXTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ0NDksNyArNDQ0OSw3IEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OnNldEZpbGVBbmRVUkxUeXBlcyhOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5n
ICpleHRlbnNpb24sIE5TCiAgICAgbV9wcm9taXNlZFVSTCA9IHVybDsKIH0KIAotdm9pZCBXZWJW
aWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBO
U1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwg
TlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciogYXJjaGl2ZUJ1ZmZlciwgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU1N0cmluZyAqb3Jp
Z2luSWRlbnRpZmllcikKK3ZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdl
KFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0
ZW5zaW9uLCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxl
VVJMLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBhcmNoaXZlQnVmZmVyLCBOU1N0
cmluZyAqcGFzdGVib2FyZE5hbWUsIE5TU3RyaW5nICpvcmlnaW5JZGVudGlmaWVyKQogewogICAg
IE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhO
YW1lOnBhc3RlYm9hcmROYW1lXTsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHR5cGVz
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6V2ViQ29y
ZTo6bGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKSwgbmlsXSk7CkBAIC00NTg0LDcg
KzQ1ODQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN0cmluZyYgbwogICAgIGhhbmRsZURPTVBhc3RlUmVx
dWVzdFdpdGhSZXN1bHQoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9y
R2VzdHVyZSk7CiAKICAgICBOU0RhdGEgKmRhdGEgPSBbTlNQYXN0ZWJvYXJkLmdlbmVyYWxQYXN0
ZWJvYXJkIGRhdGFGb3JUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29h
VHlwZSgpKV07Ci0gICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhKTsKICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6
OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBvcmlnaW5JZGVudGlm
aWVyKSB7CiAgICAgICAgIG1fcGFnZS0+Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQYXN0ZWJvYXJkRGF0
YShOU1Bhc3RlYm9hcmROYW1lR2VuZXJhbCk7CiAgICAgICAgIGNvbXBsZXRpb24oV2ViQ29yZTo6
RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6R3JhbnRlZEZvckdlc3R1cmUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDU1MTY2NjZjNWEzMTE3MmM5ODZlMzJhYmYzYzZiMDFk
NDU2ZjM2YWYuLmI0NjJkOGRiNWNjNjIwMzg2ZTc2ODNkYjI0ODM2YWIzY2U2NGZlZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTMyOCw3ICszMjgsNyBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogI2lmIFVTRShBUFBLSVQpCi0gICAgdmlydHVhbCB2b2lkIHNldFByb21pc2Vk
RGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0
IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFn
ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24s
IGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZp
c2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hp
dmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgPSAwOwogI2VuZGlmCiAK
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmKSA9IDA7CkBAIC00NjgsNyArNDY4LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzaW5nRWxlbWVudCgpID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wg
aXNDaGFyRXZlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRp
ZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFy
eShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJp
bmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlv
bkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5l
Y2Vzc2FyeShXZWJLaXQ6OlRhcElkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggNzIzY2ZlNWI3Mjc2MTVmNmVkMThiNWYyNWQxZTgwZGI3MzMx
Zjk2OC4uYjRkYTZmZDY4OGViZGU5ZWM1YTcxZjc4NDc4YmRiZjVmOTA5ZDgwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI1OSw3ICsyNTksNyBAQCBjbGFzcyBJ
bnRTaXplOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUnVuTG9vcE9ic2VydmVyOwog
Y2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q7CiBjbGFzcyBU
ZXh0SW5kaWNhdG9yOwogY2xhc3MgVmFsaWRhdGlvbkJ1YmJsZTsKQEAgLTExODEsNyArMTE4MSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vu
cyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVsZW1lblRva2VuLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIHdpbmRvd1Rva2VuKTsKICAgICBib29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBTdHJpbmcgc3RyaW5nU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZCgpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICB2b2lk
IG1ha2VGaXJzdFJlc3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VG
aXJzdFJlc3BvbmRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZVRhc2suY3BwCmluZGV4IGVkOGNiNjUzZWNmZGQxMzQ3M2VlMWQyYWY1MGJhYTdhNmY3YTEwMTIu
LmUxMjY0Y2UyMWJhNTdmMmE0Mjc0OGUzM2ExZGFkODhhMGUyNThiYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAg
YXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpIC0+IEUKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsK
IH0KIAotYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHlwZQorYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpk
aWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4
Y2VwdGlvblR5cGUKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggZGQ2YjcyNDEwYWRkNGVm
NjMxZDI4MDY5ZTE0YTNmMmEwMGM1Y2NiMi4uZjZmZjQ2ZWVhNWYyOTBiN2I3ZTNmZTU5MjFkZjlm
MTk0YmFjZDExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
aApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uVHlwZSB3aWxsUGVyZm9y
bVJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsICBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4m
Jik7CiAgICAgRXhjZXB0aW9uVHlwZSBkaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgRXhjZXB0
aW9uVHlwZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpOwotICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJik7CisgICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgRXhjZXB0aW9uVHlwZSBkaWRDb21w
bGV0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIHN0b3AoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaAppbmRleCA3ODY2Y2RiMTc3NDYw
MDdhYjBhN2ExN2M1NWI4N2M3ZjE2NGMyYmFlLi43Mjc5Zjg0NGNjMmJiZDJiMDE3ZmUwZjA5N2Rl
MDE4NzBhOWE4NTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xp
cGJvYXJkLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oCkBA
IC0zNiw3ICszNiw3IEBAIHR5cGVkZWYgc3RydWN0IF9HdGtDbGlwYm9hcmQgR3RrQ2xpcGJvYXJk
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvcm1hdHMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CiAgICAgdm9pZCByZWFk
VGV4dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CiAgICAgdm9pZCByZWFk
RmlsZVBhdGhzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwot
ICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBjaGFyKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4mJik7CisgICAgdm9pZCByZWFkQnVmZmVyKGNv
bnN0IGNoYXIqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKT4mJik7CiAgICAgdm9pZCB3cml0ZShXZWJDb3JlOjpTZWxlY3Rpb25E
YXRhJiYpOwogICAgIHZvaWQgY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL0NsaXBib2FyZEd0azMuY3BwCmluZGV4IGMyYmY1MTgzYjMwZjEwZTllYjc4MTNjZGFkYTIy
M2U5MTg5Yzc0NTkuLjU5NjZkNTU3NGMyODJmNTMxNjk0MDk2MDgyOTYwYWUzMzljYTExMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKQEAgLTEy
NiwxNSArMTI2LDE1IEBAIHZvaWQgQ2xpcGJvYXJkOjpyZWFkRmlsZVBhdGhzKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxlCiBzdHJ1Y3QgUmVhZEJ1ZmZl
ckFzeW5jRGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAg
ZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5jRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYmIGhhbmRsZXIpCisgICAgZXhwbGljaXQgUmVhZEJ1
ZmZlckFzeW5jRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBoYW5kbGVyKQogICAgICAgICA6IGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoaGFuZGxlcikpCiAgICAgewogICAgIH0KIAotICAgIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5kbGVy
OworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKIH07CiAKLXZvaWQgQ2xpcGJvYXJkOjpy
ZWFkQnVmZmVyKGNvbnN0IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQ2xp
cGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgZ3RrX2NsaXBib2FyZF9yZXF1ZXN0X2NvbnRlbnRzKG1fY2xpcGJv
YXJkLCBnZGtfYXRvbV9pbnRlcm4oZm9ybWF0LCBUUlVFKSwgW10oR3RrQ2xpcGJvYXJkKiwgR3Rr
U2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uLCBncG9pbnRlciB1c2VyRGF0YSkgewogICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVhZEJ1ZmZlckFzeW5jRGF0YT4gZGF0YShzdGF0aWNfY2FzdDxSZWFk
QnVmZmVyQXN5bmNEYXRhKj4odXNlckRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9DbGlwYm9hcmRHdGs0LmNwcAppbmRleCAwN2FiYjcxMzE5ODg1M2I3ODdjNjMyNGJkNDgw
YjFlMDg4YTJhM2QzLi41YjgxZmE4ZjI5ZDNmN2NmMWMzZjA5ZDFmYzNjODg3MzRkYzUxYTBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCkBAIC0x
MjAsMTUgKzEyMCwxNSBAQCB2b2lkIENsaXBib2FyZDo6cmVhZEZpbGVQYXRocyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZQogc3RydWN0IFJlYWRCdWZm
ZXJBc3luY0RhdGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAg
IGV4cGxpY2l0IFJlYWRCdWZmZXJBc3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4mJiBoYW5kbGVyKQorICAgIGV4cGxpY2l0IFJlYWRC
dWZmZXJBc3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKICAgICAgICAgOiBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKGhhbmRsZXIpKQogICAgIHsKICAgICB9CiAKLSAgICBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxl
cjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCi12b2lkIENsaXBib2FyZDo6
cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENs
aXBib2FyZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGNvbnN0IGNoYXIqIG1pbWVUeXBlc1tdID0geyBmb3JtYXQsIG51
bGxwdHIgfTsKICAgICBnZGtfY2xpcGJvYXJkX3JlYWRfYXN5bmMobV9jbGlwYm9hcmQsIG1pbWVU
eXBlcywgR19QUklPUklUWV9ERUZBVUxULCBudWxscHRyLCBbXShHT2JqZWN0KiBjbGlwYm9hcmQs
IEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCBlOWQyMzY5M2Nk
YzlhNzBlZjFkMjE0ODA2MzFhNDVjZmU5NjdhYThjLi41NjA3M2JiODM3N2IwNmJjNDE1ZDU2ZTA2
NzhjMzE2ZjZjOGUyYmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MuaApAQCAtMTg3LDcgKzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZWxlY3Rpb25EaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICBib29sIGludGVycHJldEtleUV2ZW50
KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSBvdmVycmlk
ZTsKICAgICB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhdmVJbWFnZVRv
TGlicmFyeShSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNW
aWRlbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRl
U2hhcmluZ1BvbGljeSwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaG93RGF0
YURldGVjdG9yc1VJRm9yUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggNjZhYzRjYWE4YzgzMmIzZGI1MTg5
NzliMGVkYmZiNjE2NDY0ZDAzNi4uMzJkMWY4OWMwNThiOWI0MGExOGU4ZjY3YmM3YmU5ZjBhMTAy
NTA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbQpAQCAtMzU3LDcgKzM1Nyw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnBvc2l0aW9u
SW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0CiAgICAg
W21fY29udGVudFZpZXcgX3Bvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2U6aW5mb107CiB9CiAK
LXZvaWQgUGFnZUNsaWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNhdmVJbWFn
ZVRvTGlicmFyeShSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyKQogewogICAgIFJldGFp
blB0cjxOU0RhdGE+IGltYWdlRGF0YSA9IGltYWdlQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKICAg
ICBVSUltYWdlRGF0YVdyaXRlVG9TYXZlZFBob3Rvc0FsYnVtKGltYWdlRGF0YS5nZXQoKSwgbmls
LCBOVUxMLCBOVUxMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDRjODYyNzNjM2ZhY2FhMGE2NDJlOWY3
NWM0ZDZiZGY0MWE1M2EyNDIuLjc1Y2I3NTEyY2NhNjc0NzRhNTU0MjRhZDNhMjhjZjZjN2VlMGFj
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMzg0Miw3ICszODQyLDcgQEAgLSAoQk9PTCljYW5QZXJm
b3JtQWN0aW9uRm9yV2ViVmlldzooU0VMKWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5kZXIKIAog
ICAgICAgICBOU0FycmF5ICphbGxDdXN0b21QYXN0ZWJvYXJkRGF0YSA9IFtwYXN0ZWJvYXJkIGRh
dGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2Nv
YVR5cGUoKSkgaW5JdGVtU2V0OmluZGljZXNdOwogICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBp
biBhbGxDdXN0b21QYXN0ZWJvYXJkRGF0YSkgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgICAg
ICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAg
ICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVm
ZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgPT0gZm9jdXNlZERvY3VtZW50T3JpZ2luKQogICAg
ICAgICAgICAgICAgIHJldHVybiBZRVM7CiAgICAgICAgIH0KQEAgLTY2MjUsNyArNjYyNSw3IEBA
IHN0YXRpYyBCT09MIGFsbFBhc3RlYm9hcmRJdGVtT3JpZ2luc01hdGNoT3JpZ2luKFVJUGFzdGVi
b2FyZCAqcGFzdGVib2FyZCwgY29uc3QKICAgICAgICAgaWYgKCFkYXRhLmxlbmd0aCkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgICAgICBpZiAoV2ViQ29yZTo6
UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmln
aW4oKSAhPSBvcmlnaW5JZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIE5POwogCkBAIC03
NTk2LDcgKzc1OTYsNyBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNo
ZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IHNoYXJlRWxlbWVudFdpdAogewogICAgIFdlYkNvcmU6
OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgc2hhcmVEYXRhOwogICAgIE5TU3RyaW5nKiBmaWxlTmFt
ZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAucG5nIiwgKE5TU3RyaW5nKilXRUJf
VUlfU1RSSU5HKCJTaGFyZWQgSW1hZ2UiLCAiRGVmYXVsdCBuYW1lIGZvciB0aGUgZmlsZSBjcmVh
dGVkIGZvciBhIHNoYXJlZCBpbWFnZSB3aXRoIG5vIGV4cGxpY2l0IG5hbWUuIildOwotICAgIHNo
YXJlRGF0YS5maWxlcyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKKyAgICBz
aGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihpbWFnZSkpIH0gfTsKICAgICBbc2VsZiBfc2hv
d1NoYXJlU2hlZXQ6c2hhcmVEYXRhIGluUmVjdDogeyBbc2VsZiBjb252ZXJ0UmVjdDpib3VuZGlu
Z1JlY3QgdG9WaWV3OnNlbGYud2ViVmlld10gfSBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRl
eCBiYTk5NWZiOWUwNmJmOGRkYWY1NWFhMDdkYjBmMmZmYTgyZDE4MzEzLi5mODBjODI0OWRhNDY3
Yjk0MjAzNWU0NjA2ZTg5OWJjYjY0ZWRiYzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTEzOCw3ICsxMzgsNyBAQCBTdHJpbmcgV2Vi
UGFnZVByb3h5OjpzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gU3Ry
aW5nKCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQ
YWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCitSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbE1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLmgKaW5kZXggZDIyMzhmZGM5ZDE2Zjc3ZjhjM2QzMDJjYTk5NzZmZTgzZjFiM2Yz
Ny4uYWI4N2MyYTdlOGMzNTdhNjViM2NmZTYwNzkzOGZkZmVjOGE2NTJiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKQEAgLTEwMCw4ICsx
MDAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZXhlY3V0ZVVuZG9SZWRvKFVuZG9PclJlZG8pIG92
ZXJyaWRlOwogICAgIGJvb2wgZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoY29uc3QgU3Ry
aW5nJiBzZWxlY3Rvcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdGFydERyYWcoY29uc3QgV2ViQ29y
ZTo6RHJhZ0l0ZW0mLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2UpIG92ZXJy
aWRlOwotICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmlu
ZyYgdGl0bGUsCi0gICAgICAgIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2li
bGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFByb21p
c2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwKKyAg
ICAgICAgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRy
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVNlY3Vy
ZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0U2VjdXJlSW5wdXRTdGF0ZSgp
IG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5SW5wdXRDb250ZXh0QWJvdXREaXNjYXJkZWRDb21w
b3NpdGlvbigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IGE0MTEyMTM1ZjJlZjE5MDE1YTUyZjFlMWIwM2FlMzBh
MWYyMjNkMmEuLmMzNjNlOTU1ZTg3OWMwZTE4NmI0MTUwOTA5MTMzNjVjMjBmZTkwNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KQEAg
LTQwMCw3ICs0MDAsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzdGFydERyYWcoY29uc3QgV2Vi
Q29yZTo6RHJhZ0l0ZW0mIGl0ZW0sIGNvbnN0IFNoYXJlYWJsZUJpdAogICAgIG1faW1wbC0+c3Rh
cnREcmFnKGl0ZW0sIGltYWdlKTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0UHJvbWlz
ZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6
c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50
aWZpZXIpCiB7CiAgICAgYXV0byBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICBp
bWFnZS0+c2V0RGF0YShXVEZNb3ZlKGltYWdlQnVmZmVyKSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCAxYjNmZTg2ODlmMTc5
NTc1MDY2NzMwNDFiMWU2ZDFiNzM2NmQxMzlkLi4zMjNlZjAyOTJhZGUzNzZhMjBlMzk0NmQ2NmY5
ZWNlMzllNTUyOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0KQEAgLTIyNyw3ICsyMjcsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJp
bmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI3Nyw3ICsyNzcsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUwogICAgICAgICByZXR1cm47CiAgICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IHNoYXJlZE1lbW9yeUltYWdlLT5jcmVhdGVTaGFyZWRCdWZmZXIoaW1hZ2VIYW5k
bGUuZGF0YVNpemUpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcjsKICAgICBp
ZiAoIWFyY2hpdmVIYW5kbGUuaGFuZGxlLmlzTnVsbCgpKSB7CiAgICAgICAgIGF1dG8gc2hhcmVk
TWVtb3J5QXJjaGl2ZSA9IFNoYXJlZE1lbW9yeTo6bWFwKGFyY2hpdmVIYW5kbGUuaGFuZGxlLCBT
aGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFzaGFyZWRN
ZW1vcnlBcmNoaXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE0uY3BwCmluZGV4IGZhOTQwMjVlZDc0NzMwZDI4ZTcxNjQ2Mjg1ZjllNWJhNjUzYjhm
MTIuLmMyOGZlNjVmMGNmMTY0Mzk5ODE4YWNhMzJmOTgxY2M3NzhmMWU5MTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKQEAgLTg0LDcg
Kzg0LDcgQEAgYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJh
dGlvbihjb25zdCBDRE1TZXNzaW9uVHlwZSYsIGNvbnMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkgY29uc3QKK2Jvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjaGVjayB3aWxsIGJlIGRvbmUsIGxh
dGVyLCBpbnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlcXVlc3RMaWNlbnNl
KCkuCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBSZW1vdGVDRE06
OmxvYWRBbmRJbml0aWFsaXplKCkKICAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETVByb3h5OjpMb2FkQW5kSW5p
dGlhbGl6ZSgpLCBtX2lkZW50aWZpZXIpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBSZW1v
dGVDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29u
c3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBSZW1vdGVDRE06OnNhbml0aXplUmVz
cG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAg
ICAgLy8gVGhpcyBjaGVjayB3aWxsIGJlIGRvbmUsIGxhdGVyLCBpbnNpZGUgUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUxpY2Vuc2UoKS4KICAgICByZXR1cm4gcmVzcG9uc2Uu
Y29weSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
LmgKaW5kZXggMGFkZGY4MzM1M2I2ZWExYjJlOGIwMmM2YjdlZTNkYWY0NjhjZDM4My4uOGM0NTRl
YjgzZTU5OTRhOGU0ZDU5MmQ1MWRmOTFmZjliNTIzY2JlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCkBAIC00OCwxMyArNDgsMTMgQEAgcHJp
dmF0ZToKICAgICBib29sIHN1cHBvcnRzQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c0Nv
bmZpZ3VyYXRpb25XaXRoUmVzdHJpY3Rpb25zKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5h
bDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBX
ZWJDb3JlOjpDRE1TZXNzaW9uVHlwZSYsIGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwor
ICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNvcmU6OkNE
TVJlcXVpcmVtZW50IGRpc3RpbmN0aXZlSWRlbnRpZmllcnNSZXF1aXJlbWVudChjb25zdCBXZWJD
b3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJp
Y3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQgcGVyc2lz
dGVudFN0YXRlUmVxdWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAg
IGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJs
ZShjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7
CiAgICAgUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlPiBjcmVhdGVJbnN0YW5jZSgpIGZpbmFs
OwogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVT
ZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKICAgICBWZWN0b3I8QXRvbVN0
cmluZz4gc3VwcG9ydGVkSW5pdERhdGFUeXBlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29u
ZmlndXJhdGlvbi5zdXBwb3J0ZWRJbml0RGF0YVR5cGVzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCmluZGV4
IGI1ZGVhMjFlOTk1YTczN2YwMzZmNjQ1MzhjMWZiM2VjYjVlNmJiNTUuLmExM2U1MTQ2MGY2YmI5
ZjgwZWYzZDFhODQyZWZjMGI5ZjQ0NTkwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCkBAIC03OCw3ICs3
OCw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlv
bihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1DCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJl
bW90ZUNETUluc3RhbmNlUHJveHk6OkluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1
cmF0aW9uLCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBwZXJzaXN0ZW50U3RhdGUpLCBXVEZNb3Zl
KGNhbGxiYWNrKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6
c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZp
Y2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNl
OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYg
KCFtX2ZhY3RvcnkpIHsKICAgICAgICAgY2FsbGJhY2soRmFpbGVkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaAppbmRl
eCAxMDZiYTNiMTE2MWM4ZGYwOWQ3MWRmZTY3OWJhMzNkNDIzMDc5ZTk2Li4yYzc4NTFlNDQwYjA4
YTUyYTJhZTcwZGE3ZTQxODg4MmUzYzYxNDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCkBAIC01NCw3ICs1NCw3
IEBAIHByaXZhdGU6CiAKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpSZW1vdGU7IH0KICAg
ICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1Bl
cnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2Vy
dmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxi
YWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAg
ICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRp
b24ua2V5U3lzdGVtOyB9CiAgICAgUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4g
Y3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCmluZGV4
IGFmMGJhZDRjOTBkOGRkNTEzNzc0YWVmNmExNWI3N2JhODlmYzUwNjQuLmM3NDBjMDQ1MDZmZGVk
YWM5ZjRjZjUwMmMyMDVhOGEzN2ZjYTQ1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5j
cHAKQEAgLTQ5LDcgKzQ5LDcgQEAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb24oV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGYKIHsKIH0KIAotdm9p
ZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5
cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBp
bml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0
YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsK
ICAgICAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW1wdHlTdHJpbmcoKSwg
ZmFsc2UsIEZhaWxlZCk7CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5n
CiAgICAgfSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYm
IGNhbGxiYWNrKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFj
aykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKQEAgLTEwOSw3
ICsxMDksNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2VucwogICAgIH0KIAogICAgIG1fZmFjdG9y
eS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVtb3ZlU2Vzc2lvbkRh
dGEoc2Vzc2lvbklkLCB0eXBlKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChLZXlT
dGF0dXNWZWN0b3ImJiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHk+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgewotICAgICAgICBzdGQ6
Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiByZWFsTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHJlYWxN
ZXNzYWdlID0gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAobWVzc2FnZSAmJiBtZXNzYWdlLnZh
bHVlKCkuYnVmZmVyKCkpCiAgICAgICAgICAgICByZWFsTWVzc2FnZSA9IG1lc3NhZ2UudmFsdWUo
KS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpOwogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNo
YW5nZWRLZXlzKSwgV1RGTW92ZShyZWFsTWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6
IEZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaAppbmRleCA0ZmZlNGNhY2VjY2RlNDNk
NWNiMTFlMjM2Y2EwNDVhY2RhODNhN2ViLi40ZTRjZDJjMDA1YzZiMDA2NWY5Y2RiMTg4YzRiY2Uw
YjViZmE2NjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTU5LDggKzU5LDggQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uQ2xpZW50PiYmIGNsaWVudCkgZmluYWwgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xp
ZW50KTsgfQogICAgIHZvaWQgY2xlYXJDbGllbnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0
cjsgfQotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwg
TGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNl
Q2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lk
IGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBj
bG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkYuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkYuY3BwCmluZGV4IDlhMjE5YTU0NGU1NTM4M2Y1NGU3MWRhYmQzNTRj
YzQ0MGE0MTQyYjkuLjYyOTI2Nzk4YzVjMTEzMjRhMzFhYTUwY2RhN2VkMWZiZjc0ZmU3MDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRi5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIFJlbW90ZUlt
YWdlRGVjb2RlckFWRjo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRD
b250ZW50U2l6ZQogCiAvLyBJZiBhbGxEYXRhUmVjZWl2ZWQgaXMgdHJ1ZSwgdGhlIGNhbGxlciBl
eHBlY3RzIGVuY29kZWREYXRhU3RhdHVzKCkgdG8gYmUgPj0gRW5jb2RlZERhdGFTdGF0dXM6OlNp
emVBdmFpbGFibGUKIC8vIGFmdGVyIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAoaW4gdGhlIHNhbWUg
cnVuIGxvb3ApLgotdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldERhdGEoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogewogICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbikKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkYuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKaW5kZXggZTVjZmU5NGVjZDNhOWMwNjAwZmMwMDMyMGZm
NDMwNjFjOTBlZDY5Yi4uNDBkMzczNGY3YTMyMmU4YmFjYjlkMWMwZGVhNzA3OWUyYWQxN2VhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRi5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFJlbW90ZUltYWdl
RGVjb2RlckFWRiBmaW5hbAogICAgIDogcHVibGljIFdlYkNvcmU6OkltYWdlRGVjb2RlcgogICAg
ICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGUoUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGTWFuYWdlciYgbWFuYWdlciwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
SWRlbnRpZmllciYgaWRlbnRpZmllciwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3Jl
YXRlKFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXImIG1hbmFnZXIsIGNvbnN0IFdlYkNvcmU6
OkltYWdlRGVjb2RlcklkZW50aWZpZXImIGlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGKG1hbmFnZXIsIGlkZW50aWZp
ZXIsIG1pbWVUeXBlKSk7CiAgICAgfQpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgV2Vi
Q29yZTo6UGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFdl
YkNvcmU6OlN1YnNhbXBsaW5nTGV2ZWwgPSBXZWJDb3JlOjpTdWJzYW1wbGluZ0xldmVsOjpEZWZh
dWx0LCBjb25zdCBXZWJDb3JlOjpEZWNvZGluZ09wdGlvbnMmID0gV2ViQ29yZTo6RGVjb2RpbmdP
cHRpb25zKFdlYkNvcmU6OkRlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAg
IHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwotICAgIHZvaWQg
c2V0RGF0YShXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmlu
YWw7CisgICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICB2b2lkIGNs
ZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkZNYW5hZ2VyLmNwcAppbmRleCA0MWQ1Mzg4MDIzZDM5MTQ5NTIxODM1ZjY4OGRlNGQ0OGY2
NWQ3NjdlLi4wODJiMzM2NmM4YmM3MTMwZDc1ZDU2OThhN2Q3OWU2ODkyYWQ4ZjczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWZQdHI8UmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGPiBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFn
ZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBo
YU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBSZW1vdGVJ
bWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKQogewogICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VEZWNvZGVySWRlbnRpZmllcj4gaW1hZ2VE
ZWNvZGVySWRlbnRpZmllcjsKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0
YVJlZmVyZW5jZSB7IGRhdGEgfTsKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIFJlbW90ZUltYWdl
RGVjb2RlckFWRk1hbmFnZXI6OnNldFVzZUdQVVByb2Nlc3MoYm9vbCB1c2VHUFVQcm9jZXNzKQog
ICAgIEltYWdlRGVjb2Rlcjo6aW5zdGFsbEZhY3RvcnkoewogICAgICAgICBSZW1vdGVJbWFnZURl
Y29kZXJBVkY6OnN1cHBvcnRzTWVkaWFUeXBlLAogICAgICAgICBSZW1vdGVJbWFnZURlY29kZXJB
VkY6OmNhbkRlY29kZVR5cGUsCi0gICAgICAgIFt0aGlzXShTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikgeworICAgICAgICBb
dGhpc10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSB7CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW1h
Z2VEZWNvZGVyKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOwogICAgICAgICB9CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFu
YWdlci5oCmluZGV4IGMyMzc4MmI2NTA0ZWM3OWJlNDZlMTI2ZjRlNTkxYjNmZjdmNmRiYTguLjM2
MThhZmQxMjA5OGI1NTc2YjRkZDRmZmJmM2MwNmZiYTg0MmE3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGTWFuYWdlci5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBHUFVQcm9j
ZXNzQ29ubmVjdGlvbiYgZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAogcHJpdmF0ZToK
LSAgICBSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGVJbWFnZURlY29kZXIoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3Jl
OjpBbHBoYU9wdGlvbiwgV2ViQ29yZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAg
IFJlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZUltYWdlRGVjb2RlcihXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBX
ZWJDb3JlOjpBbHBoYU9wdGlvbiwgV2ViQ29yZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OwogCiAgICAgLy8gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudC4KICAgICB2b2lkIGdwdVBy
b2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Nv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDk2NmZjOTNiNzdhZmFhM2U2MjA4ZDdh
YmE1YWVkMmM3YTk0Yzc0YjIuLjAwNWEzN2NjMjZlYzRjMDkwMWJmNGYzNzEyMjM4NjVkZTJkMTY2
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtNzgsNyArNzgsNyBAQCBT
b3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjp+U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZSgpCiAg
ICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fcmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjphcHBlbmQoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjphcHBlbmQo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBpZiAoIW1fZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
LmgKaW5kZXggMzYwMTc1YmZiZTlkMWFmODNlZDU3OTEzNzNiNzc1ZWU3NTBhYzdjYy4uZWE1ZmEz
ZWMzNmMyYjg1OWVlNTc4Y2NkMGUwMzQ4YzczY2I4NmQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRl
UmVtb3RlLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNvdXJjZUJ1ZmZl
clByaXZhdGUgb3ZlcnJpZGVzCiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCkgZmluYWw7Ci0gICAg
dm9pZCBhcHBlbmQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9p
ZCBhcHBlbmQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwog
ICAgIHZvaWQgYWJvcnQoKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSBmaW5h
bDsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQ
cml2YXRlLmNwcAppbmRleCAxMWI0YTg2ZTQ4NTJmNmMyMDYxZmEzZmM5YWYyOWY4ODk5ZjRlYjlm
Li5iNDA4OWZkMzU0OGM5N2YxN2ZjMmI5ZmIwMDI3ODBkNjQzY2YyM2JkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRl
clByaXZhdGUuY3BwCkBAIC0xNjUsMTAgKzE2NSwxMCBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2
YXRlOjpzdG9yYWdlQ2hhbmdlZChTaGFyZWRNZW1vcnkqIHN0b3JhZ2UsIGNvbnN0IFdlYkNvcmU6
OgogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6
QXVkaW9TYW1wbGVzU3RvcmFnZUNoYW5nZWQgeyBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdU
Rk1vdmUoaGFuZGxlKSwgZGF0YVNpemUgfSwgZm9ybWF0LCBmcmFtZUNvdW50IH0sIG1faWRlbnRp
Zmllcik7CiB9CiAKLXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OmZldGNoRGF0YShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE1lZGlh
UmVjb3JkZXJQcml2YXRlOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFSZWNvcmRlcjo6RmV0Y2hEYXRh
IHsgfSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1p
bWVUeXBlID0gbWltZVR5cGUoKV0oYXV0byYmIGRhdGEsIGRvdWJsZSB0aW1lQ29kZSkgbXV0YWJs
ZSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKGRhdGEuc2l6ZSgp
KQogICAgICAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIp
LCBtaW1lVHlwZSwgdGltZUNvZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKaW5kZXggMzAzYTU0Zjc2
ZjE4NWU5NjQ1NGVmOWY1YmI0NjFmMjhlMTI2Nzg2ZC4uNTc2ZmQxYzZlOTdjMGNhZDhjYmZlYzk0
ZTNiZDM2MzMwNzZlNDRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCkBAIC01Nyw3ICs1Nyw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGUK
ICAgICB2b2lkIHZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6Ok1lZGlhU2FtcGxlJiwgV2Vi
Q29yZTo6VmlkZW9TYW1wbGVNZXRhZGF0YSkgZmluYWw7Ci0gICAgdm9pZCBmZXRjaERhdGEoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGZldGNoRGF0
YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmKSBmaW5hbDsKICAg
ICB2b2lkIHN0b3BSZWNvcmRpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsK
ICAgICB2b2lkIHN0YXJ0UmVjb3JkaW5nKFN0YXJ0UmVjb3JkaW5nQ2FsbGJhY2smJikgZmluYWw7
CiAgICAgdm9pZCBhdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBj
b25zdCBXZWJDb3JlOjpQbGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24mLCBzaXplX3QpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJ
bmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCmluZGV4IDJjMTM0ZTllNzE5Zjk3MjY1YzhkMDkw
MzM0OWMxZTJmOWMxZTJlODQuLjAzNTNhYWJmN2Q0YjkyNWFhMmYxNTYyZDU3M2FhZjMwOTNjODNi
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50
LmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBOb2RlOwogY2xh
c3MgU3R5bGVQcm9wZXJ0aWVzOwpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViS2l0OjpXZWJQYWdlJiwg
Y29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFdyaXRlVG9QYXN0
ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2Fy
ZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlVG9Q
YXN0ZWJvYXJkKFdlYktpdDo6V2ViUGFnZSYpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3Jt
VHdvU3RlcERyb3AoV2ViS2l0OjpXZWJQYWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYs
IGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuaAppbmRleCBhMDYzNTIwNDMzNWIzYWIwZTZkZmIwYzY3Nzc2N2Y0MjhlOGE3N2UyLi4xODBi
MTExMWVjZjAxMTMyODA5MjY2YTFiY2UyN2QyNjBlNGZhMDBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKQEAgLTM2LDcgKzM2
LDcgQEAgY2xhc3MgRE9NV2luZG93RXh0ZW5zaW9uOwogY2xhc3MgRE9NV3JhcHBlcldvcmxkOwog
Y2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UGFnZUxvYWRl
ckNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZFVSTFJlcXVl
c3QoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgQVBJ
OjpPYmplY3QqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJL
aXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29u
c3QgV1RGOjpVUkwmLCBBUEk6Ok9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9h
ZERhdGFSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpVUkwmLCBBUEk6Ok9iamVjdCopIHsg
fQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2Vi
S2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlJiwgV2ViS2l0OjpXZWJGcmFtZSYsIFJlZlB0
cjxBUEk6Ok9iamVjdD4mKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRl
eCBkZjhkODgwNDdmZjY3MzE3Y2I0YWJmZTM1MTMwNWEwNzVhMGMzYWJmLi5iYzhlYWI5ODc5YmU4
MGQ4NTFiMDAxYzIwMGMwZjE4NTdhNmM3YTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyLm1tCkBAIC02MzQsNyArNjM0LDcgQEAgLSAodm9pZClfc2V0RWRpdGluZ0RlbGVnYXRlOihp
ZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0aW5nRGVsZWcKICAgICAg
ICAgICAgIFttX2NvbnRyb2xsZXItPl9lZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIHdpbGxXcml0ZVJhbmdl
VG9QYXN0ZWJvYXJkOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKV07
CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2Vi
S2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
IHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCisg
ICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAo
IW1fZGVsZWdhdGVNZXRob2RzLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNjQyLDcgKzY0Miw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxl
Z2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVn
CiAgICAgICAgICAgICBhdXRvIGRhdGFCeVR5cGUgPSBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0Rl
bGVnYXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1f
Y29udHJvbGxlciBwYXN0ZWJvYXJkRGF0YUZvclJhbmdlOndyYXBwZXIoV2ViS2l0OjpjcmVhdGVI
YW5kbGUocmFuZ2UpLmdldCgpKV07CiAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICp0eXBlIGlu
IGRhdGFCeVR5cGUpIHsKICAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5
cGUpOwotICAgICAgICAgICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOworICAgICAgICAg
ICAgICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhQnlUeXBlW3R5cGVdKSk7CiAgICAgICAgICAgICB9OwogICAgICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKaW5kZXggYzM5ODEx
ZWFjOTRlMjk1ZTM4MzNiZmNkZDZjMTgyYTRhMzEwMTk5Yi4uMzUzNjA2NTI1Yjg0NTc2OGUzMDE1
ODM4Zjg5MTFkZThmMmUwODA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUVkaXRvckNsaWVudC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudDo6d2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmIHBhZ2UsIGNv
bnN0CiAgICAgICAgIG1fY2xpZW50LndpbGxXcml0ZVRvUGFzdGVib2FyZCh0b0FQSSgmcGFnZSks
IHRvQVBJKGNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdl
YlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgaWYgKG1fY2xpZW50LmdldFBhc3RlYm9hcmREYXRh
Rm9yUmFuZ2UpIHsKICAgICAgICAgV0tBcnJheVJlZiB0eXBlcyA9IG51bGxwdHI7CkBAIC0xNTYs
NyArMTU2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3Rl
Ym9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY28KICAgICAgICAgICAgIHBhc3RlYm9h
cmRUeXBlcy5hcHBlbmQodHlwZS0+c3RyaW5nKCkpOwogCiAgICAgICAgIGZvciAoYXV0byBpdGVt
IDogZGF0YUFycmF5LT5lbGVtZW50c09mVHlwZTxBUEk6OkRhdGE+KCkpIHsKLSAgICAgICAgICAg
IGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGl0ZW0tPmJ5dGVz
KCksIGl0ZW0tPnNpemUoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGl0ZW0tPmJ5dGVzKCksIGl0ZW0tPnNpemUoKSk7CiAgICAgICAgICAgICBwYXN0
ZWJvYXJkRGF0YS5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgfQogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAppbmRleCBkOThlZTFj
MTU1ZDRmYjgyOTJhNThkOWM1OGU4ODAwN2ExMzQwNTFhLi4zMWUxMzk2ZTcwYWQ2MGMxOWQ5M2M2
NzVjNzYzNDZmZTBkYTc5NDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudC5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFu
Z2UoV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uTmFtZSkgZmluYWw7CiAgICAg
dm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb24oV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgbm90aWZpY2F0
aW9uTmFtZSkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7Ci0gICAg
dm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdl
YlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlVG9QYXN0
ZWJvYXJkKFdlYlBhZ2UmKSBmaW5hbDsKICAgICBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJQ
YWdlJiwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJh
bmdlJiBkZXN0aW5hdGlvbiwgYm9vbCBpc01vdmUpIGZpbmFsOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYTM0ZTIxMmQwN2FmMmZm
NTczZTFhOGEzNDBlYzFkM2ZjZWI0MmExYS4uOTRmZWQyZTdlMzYzMDI5MWY5OWY1Mzc4YWNiZGQy
YzM5NTBkM2U2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5jcHAKQEAgLTYyLDEwICs2MiwxMCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudDo6d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlcwogc3Rh
dGljIHZvaWQgcmVsZWFzZVNoYXJlZEJ1ZmZlcih1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCog
ZGF0YSkKIHsKICAgICAvLyBCYWxhbmNlZCBieSByZWYoKSBpbiBJbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoKS4KLSAgICBzdGF0aWNfY2FzdDxjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nh
c3Q8Y29uc3QgU2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CiB9CiAKLXZvaWQgSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmIHBh
Z2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2hhcmVkQnVmZmVyKiBzaGFyZWRC
dWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1l
LCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCit2b2lk
IEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQ
YWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3Ry
aW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIW1fY2xpZW50LndpbGxMb2FkRGF0YVJlcXVlc3QpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuaAppbmRleCAzNmJkOTgwYjJmYWExYWY0NWFjMzEwNmViMDFlOWYzNzZiYTEzYWNmLi44NjNi
ZGFiNjI4NGNhM2FhZDJmOWQ1ZmZmNWZkNjhlYWI4YjJiNzMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQoY29uc3QgV0tCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50QmFzZSopOwogCiAgICAgdm9pZCB3aWxsTG9hZFVSTFJlcXVlc3Qo
V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIEFQSTo6T2JqZWN0Kikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBX
VEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgVVJMJiwgQVBJOjpPYmplY3Qq
KSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgVVJMJiwg
QVBJOjpPYmplY3QqKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZShXZWJQYWdlJiwgV2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExv
YWRGb3JGcmFtZShXZWJQYWdlJiwgV2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA5OGE2ZTJlN2I1N2U1MjMxOGY0
MmM4Y2QxN2U0ZjBkZTA1MDk0MDkzLi4wMjI3MGE1M2FmOWJhOGJmODBkN2MzYjNkY2RjOGNlYjU2
NTE3NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsCiAgICAgCiAgICAgYXV0byBidWZmZXIgPSBoYW5kbGUudHJ5
V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpIHsKLSAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNl
IGhhbmRsZSBmb3IgcmVzb3VyY2UgdXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291cmNl
IHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCA4NzI5OGIzNzI1MDQ5ODU3MWFlNDhm
OGM5MjE4NWViMjBlMzFkZTEyLi4zMTBmY2E3ODc1YzMyYzNjZDc0NzhkYjY0ZjU5YWMyY2Y1MDE2
MzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBib28KICAgICBpZiAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjpzaG91bGRJbnRl
cmNlcHRSZXNwb25zZShtX2NvcmVMb2FkZXItPmZyYW1lKCksIHJlc3BvbnNlKSkgewogICAgICAg
ICBhdXRvIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIgPSBtX2NvcmVMb2FkZXItPmlkZW50
aWZpZXIoKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmJlZ2luSW50ZXJjZXB0aW5n
UmVzcG9uc2UoaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllcik7Ci0gICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UobV9jb3JlTG9hZGVyLT5m
cmFtZSgpLCByZXNwb25zZSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVy
LCBwb2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShwb2xpY3lEZWNpc2lv
bkNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgaW5zcGVjdG9yUmVz
cG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG92ZXJyaWRlRGF0YSkgbXV0YWJsZSB7CisgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVzcG9uc2UobV9j
b3JlTG9hZGVyLT5mcmFtZSgpLCByZXNwb25zZSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmll
ciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBpbnRlcmNlcHRlZFJlcXVl
c3RJZGVudGlmaWVyLCBwb2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShw
b2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
aW5zcGVjdG9yUmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdmVycmlk
ZURhdGEpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29y
ZUxvYWRlci0+aWRlbnRpZmllcigpKSB7CiAgICAgICAgICAgICAgICAgV0VCUkVTT1VSQ0VMT0FE
RVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgaW50ZXJj
ZXB0IGxvYWQgYmVjYXVzZSBubyBjb3JlTG9hZGVyIG9yIG5vIElEIik7CiAgICAgICAgICAgICAg
ICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmNvbnRpbnVlUmVzcG9uc2UoaW50ZXJjZXB0ZWRSZXF1
ZXN0SWRlbnRpZmllcik7CkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90
IGUKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25z
ZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxp
ZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250
cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAg
ICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBtX2ludGVyY2VwdENv
bnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVk
RGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIpCiAg
ICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoeyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGgpOwpAQCAtMjk1LDExICsyOTUsMTEgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291
cmNlOjpIYW5kbGUmIGhhbmQKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51
cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwogICAgIFdFQlJFU09VUkNFTE9BREVSX1JF
TEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzb3VyY2U6Iik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRC
dWZmZXIoKTsKIAogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIGNyZWF0ZSBidWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBzZW50IGZyb20gdGhlIG5l
dHdvcmsgcHJvY2Vzcy4iKTsKLSAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0co
ImRpZFJlY2VpdmVSZXNvdXJjZTogVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIiKTsKKyAg
ICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZTog
VW5hYmxlIHRvIGNyZWF0ZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIik7CiAgICAgICAgIGlmIChh
dXRvKiBmcmFtZSA9IG1fY29yZUxvYWRlci0+ZnJhbWUoKSkgewogICAgICAgICAgICAgaWYgKGF1
dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQogICAgICAgICAgICAgICAgIHBhZ2UtPmRpYWdub3N0
aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6RGlhZ25vc3Rp
Y0xvZ2dpbmdLZXlzOjppbnRlcm5hbEVycm9yS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dn
aW5nS2V5czo6Y3JlYXRlU2hhcmVkQnVmZmVyRmFpbGVkS2V5KCksIFdlYkNvcmU6OlNob3VsZFNh
bXBsZTo6Tm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5oCmluZGV4IDQyZGU0NjE0MTk3NzhiN2M0NTBmY2ExZWIwMzdjMWNlOTdkMmQ2MzEu
LmE3ZjQ1Yzg0MDFiMmZkMmY4NzBlMzY3OGM1OGZjMzEwYzJlMWYyNDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTIwNyw3ICsy
MDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJv
b2wpIGZpbmFsIHsgfQogICAgIGJvb2wgZ2V0Rm9ybVZhbHVlKFN0cmluZyYgZm9ybVZhbHVlKSBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaGFuZGxlU2Nyb2xsKFdlYkNvcmU6OlNj
cm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpIGZpbmFsOwotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBmaW5h
bDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291
cmNlRGF0YSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgd2lsbERldGFjaFJlbmRlcmVyKCkgZmlu
YWw7CiAgICAgYm9vbCBwbHVnaW5IYW5kbGVzQ29udGVudE9mZnNldEZvckFjY2Vzc2liaWxpdHlI
aXRUZXN0KCkgY29uc3QgZmluYWw7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBkMjNhYmI5ZTY1MTFiMTNiYmQ1MjNh
ZjQ1MWY0NDE3ODczYTZjMWUwLi5kNDdmMzJiN2Q0OTE5NTZiZGNlNzdiZmU2ZjE1Y2E3ODY1YmZk
MTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0KQEAgLTI1NTIsNyArMjU1Miw3IEBAIHZvaWQgUERGUGx1Z2luOjpub3RpZnlEaXNw
bGF5TW9kZUNoYW5nZWQoaW50KQogICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gUERGUGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQREZQbHVnaW46OmxpdmVSZXNvdXJjZURhdGEoKSBj
b25zdAogewogICAgIE5TRGF0YSAqcGRmRGF0YSA9IGxpdmVEYXRhKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggODhmNDVjZTUxY2UzMWRmMGM1YjNi
NzU4NjIzNmMzZjBkOWM5M2FkMy4uNThkNzBhMzlhMTZkNmE0YzBlOGIwY2E5ZDAzYWMzZDM3YWVk
ZmNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTYx
LDcgKzYxLDcgQEAgY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6
ZTsKIGNsYXNzIFNjcm9sbGJhcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjg4LDcgKzI4OCw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydFRvUm9v
dFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50SW5Mb2NhbENvb3JkaW5hdGVzKSBj
b25zdDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJl
c291cmNlRGF0YSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgPSAwOwogCiAgICAg
dmlydHVhbCBib29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDA4Y2ZiYjU1MGVkY2I1NmM1OTk3YTA0MzZjMjk2
NTNlZjBlODAzZWYuLjRkNTM3MzQ3MjcxMzZjZDZmNDFlMDk3MTFlYjdiZmQwMzQ3ZDRiMDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBA
IC05MjMsNyArOTIzLDcgQEAgdm9pZCBQbHVnaW5WaWV3Ojp3aWxsRGV0YWNoUmVuZGVyZXIoKQog
ICAgIG1fcGx1Z2luLT53aWxsRGV0YWNoUmVuZGVyZXIoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gUGx1Z2luVmlldzo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKSB7CiAgICAgICAgIGlmICht
X21hbnVhbFN0cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCA3MzI3NDFk
OTVlZTZhMmI2NTZmM2Q4YzA4YzhhZmZiYTdlMmZhZjYzLi5mNzVhYzg5YmYzOWE1MWUwMThkMjYy
YzBiZTdjMGE2MmRlYjY5M2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oCkBAIC0xMTYsNyArMTE2LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBz
aG91bGRBbGxvd1NjcmlwdGluZygpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0OworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgYm9vbCBwZXJm
b3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYp
OwogICAgIFN0cmluZyBnZXRTZWxlY3Rpb25Gb3JXb3JkQXRQb2ludChjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50JikgY29uc3Q7CiAgICAgYm9vbCBleGlzdGluZ1NlbGVjdGlvbkNvbnRhaW5zUG9p
bnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCA3NmRjNDMwNmQ1ZjIwODczYmIxMzhiZjY2YmIwY2Jk
MzY4NzdmNjFiLi5iMDRjY2NmMTEzZTQ5MjhmYTY2MzgzYmQyNDMxZGI4NzQ4NTNjY2ExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNzEsNyArNzEsNyBAQCB2
b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJgogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG1f
bmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9mZXRjaElkZW50aWZp
ZXIpOwogfQogCi12b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2Vp
dmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBXZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAppbmRleCBjOGMwZDg2MmQ3MTM5Mzhj
NzUzODQxZDI4YzgyNGZkYjUzNWU3NWU0Li42YjBhNDE3Y2YwZDNhZTBkN2I4OTNhOTk4NjgzYWJm
MmJjNGE0ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCkBAIC01MCw3
ICs1MCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVk
aXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPFdl
YkNvcmU6OkZvcm1EYXRhPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoKCkgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IDE1MjA1YmE4ZDI0NTI3NjAyMzQxMjRmMDU2MDI0NGIz
Zjg1ZTRjNWMuLjdjZmMwM2E4NWQzOWQ4MWYzOTJjMGFhMTMwZjgzZmJkMmM4MzRmMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBXZWJFZGl0b3JDbGll
bnQ6OnNob3VsZEFwcGx5U3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSwgY29uc3Qg
c3RkOjoKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKLXZvaWQgV2ViRWRpdG9y
Q2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRG
aWxlTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6
OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1l
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJv
bURhdGEoaWRlbnRpZmllciwgY29udGVudFR5cGUsIHByZWZlcnJlZEZpbGVOYW1lLCBkYXRhLmdl
dCgpKSk7CiB9CkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAg
ICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkud2lsbFdyaXRlVG9QYXN0ZWJv
YXJkKCptX3BhZ2UsIHJhbmdlKTsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVu
dFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6Omdl
dENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBy
YW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRs
ZUVkaXRvckNsaWVudCgpLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoKm1fcGFnZSwgcmFuZ2Us
IHBhc3RlYm9hcmRUeXBlcywgcGFzdGVib2FyZERhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmlu
ZGV4IDkxNDZlNGM2ZDJlMTg5ZWI1MTk5YWZjOTU4MzY1YmI0MmRiNTIxZGMuLmIwNTg2MTg5MWVj
Yzg0YzYzNjhhMjA2YzI3MDEwNjBmNTA1MmY1ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTY1
LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRl
KGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2Um
KSBmaW5hbDsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgdm9pZCByZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJp
bmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBT
dHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFdlYkNv
cmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJikgZmluYWw7CkBAIC04Nyw3ICs4Nyw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxs
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICAKICAgICB2b2lkIHJlZ2lzdGVyVW5kb1N0
ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAo
V2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IDk1OTIyM2Q3NzZlZjkzMmFiMWE3MzcxNjA2ZTMyOTFkMjMyOWQzY2IuLjE0YTA4M2Nh
MjA3YTkwNjNjZjgwYjFlN2U5NjcwYTQ4N2NmNGQzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcApAQCAtMTE4OCw3ICsxMTg4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICBp
ZiAoIXdlYlBhZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VE
YXRhKCk7CisgICAgICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJl
c291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgICAgICAgICAgSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNv
dXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJj
ZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKICAgICAgICAgICAgIHdlYlBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JD
dXN0b21Db250ZW50UHJvdmlkZXIobG9hZGVyLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1l
KCksIGRhdGFSZWZlcmVuY2UpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcAppbmRleCA2ZjNmNTY2YzUyZjFlMzlkZWYwMGI1ZjMxOWZlYmFlNjY3OGExOWMwLi40
YThiZWU1N2ZkYjFmZmNkZWYwMDg5ZmE2NWU5NzUzNzUwZDI1MGU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWIKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJv
YXJkVHlwZXMocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2Fn
ZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzOjpSZXBseSh0eXBlcyks
IDApOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0
KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0
KQogewogICAgIC8vIEZpcnN0IGNoZWNrIHRoZSBvdmVycmlkZXMuCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IG92ZXJyaWRlQnVmZmVyOwogICAgIGlmIChXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjpzaGFy
ZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZvck92ZXJyaWRlKHBhc3RlYm9hcmROYW1l
LCBwYXN0ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIpKQotICAgICAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsKKyAgICAg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVCdWZmZXIpKTsK
IAogICAgIC8vIEZhbGxiYWNrIHRvIG1lc3NhZ2luZyB0aGUgVUkgcHJvY2VzcyBmb3IgbmF0aXZl
IHBhc3RlYm9hcmQgY29udGVudC4KICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5k
bGU7CkBAIC0yMDksNyArMjA5LDcgQEAgaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNl
dFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGMKICAgICByZXR1
cm4gbmV3Q2hhbmdlQ291bnQ7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpz
ZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCogY29udGV4dCkKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZm
ZXJGb3JUeXBlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxl
OwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpIHsKQEAgLTMyNCw3ICszMjQsNyBA
QCBWZWN0b3I8U3RyaW5nPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRGaWxlUGF0aHNGcm9t
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZm
ZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAKICAgICBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkgZGF0YTsKQEAgLTQwNiw3ICs0MDYsNyBAQCBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9h
cmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1hdGlvbkZvckl0ZW1BdElu
ZAogICAgIHJldHVybiBpbmZvOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZl
ckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
IGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChpbmRleCwgcGFzdGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihj
b250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZDo6UmVwbHkoaXBjSGFuZGxlKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmgKaW5kZXggM2ZmMzU1ODA4ZTFkNmViMmFlMzJiNTdiN2ViZjdlMzVhY2ZmNGU5YS4uMWZmODNl
MTFiYzE3ODlhYWMwZjkwMGM5M2RjMjJmYmYyMzllYTJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIGludCBnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBn
ZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZl
Y3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxT
dHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwpAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogCiAgICAgaW50NjRfdCBhZGRUeXBlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKKyAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgaW50NjRfdCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpD
b2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHJlYWRU
ZXh0RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsK
ICAgICBWZWN0b3I8U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBjbGVhckNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsK
ICNlbmRpZgpAQCAtODksNyArODksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBTdHJpbmcg
cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1J
bmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuY3BwCmluZGV4IDIzZDAxMTRiMGU5NDBlZTEzNDNlMjQ3OTZmM2ZjOTdhYWUzMmU5
MDcuLmVkOTNhZWI3ZWE5MjBhZTZjNmQzNmI5ODVkODFmMTI2NmQ3NzU3ZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAtNDksNyArNDksNyBAQCBXZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUsIGNvbnN0IFN0cgogCiBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50Ojp+V2ViUHJldmll
d0xvYWRlckNsaWVudCgpID0gZGVmYXVsdDsKIAotdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50
OjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBXZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS53ZWJQYWdlKG1fcGFnZUlEKTsKICAgICBpZiAoIXdlYlBhZ2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdM
b2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IDllNmY1MGYxYjMyNWExMzMzZjJjOTRj
MTc0NzRjMGE3ZjUzNGU1YWIuLjdiODIxNTBlOTAxY2QzYWMyOTdiMzdhNzc2YmRkYzBmMmE5YjAw
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC00Nyw3ICs0
Nyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKCkgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkRyYWdDbGllbnRNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KaW5kZXggNGI2ZTIxN2JiZTM3ZjhjMWRm
MTdhYmNjYmJjODc3NDMxYTJiMWUzYi4uZTFlMGU2MTEyYTJkZWRjM2I4YmI2MzA5ODUzNTM3NmVm
NDNhZDUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQpAQCAtMTYzLDcgKzE2Myw3
IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgYXJj
aGl2ZUhhbmRsZTsKICAgICBzaXplX3QgYXJjaGl2ZVNpemUgPSAwOwogICAgIGlmIChkYXRhKSB7
Ci0gICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CisgICAgICAgIGF1dG8gYXJjaGl2
ZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdl
dCgpKTsKICAgICAgICAgYXV0byBhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVt
b3J5Ojpjb3B5QnVmZmVyKGFyY2hpdmVCdWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAoIWFyY2hp
dmVTaGFyZWRNZW1vcnlCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggOTI5YjE2MGVlYTlhNjQ3
MmMyY2E3ZDAzYWMzMTMzYjdlMWVlOWY4Ny4uZDg4ZjQ0Y2ZjZGU1ZTE1ZjY2YzEyNGI0MGY1YjU0
MzViOTQ2OTdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcApAQCAtMzQwLDcgKzM0MCw3IEBAIFN0cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29u
c3QKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBtX2NvcmVGcmFtZS0+bG9h
ZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJl
c291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExv
YWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRl
Y29kZShtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNv
dXJjZURhdGEtPnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IDRhZDY3N2EzZDA2YjJiYzEzMDllYjk1ZWY2NDVkOGI2ZmI1NjdiZmUu
LmY0NmQxOTY4NzI0N2ExNDZiNWFlMTI0NDU3NWMyNTA3MDhiYzhlM2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNzM4LDcgKzE3MzgsNyBA
QCBOT19SRVRVUk4gdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdFdhaXRpbmdGb3JQcm9jZXNzTGF1
bmNoKExvYWRQYXJhbWV0ZXJzJiYsIFVSTAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBzaGFyZWRCdWZmZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVS
TCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBTdWJzdGl0dXRlRGF0
YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgU2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQor
dm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBzaGFyZWRCdWZmZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVS
TCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBTdWJzdGl0dXRlRGF0
YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgU2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQog
ewogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBzZXRJc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sICZtX21haW5GcmFtZS5n
ZXQoKSk7CkBAIC0xNzUzLDcgKzE3NTMsNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaAogCiAg
ICAgLy8gTGV0IHRoZSBJbmplY3RlZEJ1bmRsZSBrbm93IHdlIGFyZSBhYm91dCB0byBzdGFydCB0
aGUgbG9hZCwgcGFzc2luZyB0aGUgdXNlciBkYXRhIGZyb20gdGhlIFVJUHJvY2VzcwogICAgIC8v
IHRvIGFsbCB0aGUgY2xpZW50IHRvIHNldCB1cCBhbnkgbmVlZGVkIHN0YXRlLgotICAgIG1fbG9h
ZGVyQ2xpZW50LT53aWxsTG9hZERhdGFSZXF1ZXN0KCp0aGlzLCByZXF1ZXN0LCBjb25zdF9jYXN0
PFNoYXJlZEJ1ZmZlcio+KHN1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKSksIHN1YnN0aXR1dGVEYXRh
Lm1pbWVUeXBlKCksIHN1YnN0aXR1dGVEYXRhLnRleHRFbmNvZGluZygpLCBzdWJzdGl0dXRlRGF0
YS5mYWlsaW5nVVJMKCksIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybUhhbmRsZXNU
b09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBtX2xvYWRlckNsaWVudC0+
d2lsbExvYWREYXRhUmVxdWVzdCgqdGhpcywgcmVxdWVzdCwgY29uc3RfY2FzdDxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKj4oc3Vic3RpdHV0ZURhdGEuY29udGVudCgpKSwgc3Vic3RpdHV0ZURhdGEu
bWltZVR5cGUoKSwgc3Vic3RpdHV0ZURhdGEudGV4dEVuY29kaW5nKCksIHN1YnN0aXR1dGVEYXRh
LmZhaWxpbmdVUkwoKSwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtSGFuZGxlc1Rv
T2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogCiAgICAgLy8gSW5pdGF0ZSB0aGUg
bG9hZCBpbiBXZWJDb3JlLgogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCgq
bV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CkBAIC0z
ODYxLDcgKzM4NjEsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogCiB2b2lkIFdlYlBhZ2U6
OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAg
IGlmIChXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShm
cmFtZUlEKSkgewogICAgICAgICBpZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IHBsdWdpblZp
ZXdGb3JGcmFtZShmcmFtZS0+Y29yZUZyYW1lKCkpKQogICAgICAgICAgICAgYnVmZmVyID0gcGx1
Z2luVmlldy0+bGl2ZVJlc291cmNlRGF0YSgpOwpAQCAtMzg3Nyw3ICszODc3LDcgQEAgdm9pZCBX
ZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgQ29tcGxldGlvbkhhbmQKICAgICBjYWxsYmFjayhkYXRhUmVmZXJlbmNlKTsKIH0KIAotc3Rh
dGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFt
ZSwgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkKK3N0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJl
c291cmNlVVJMKQogewogICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWxvYWRlcikKQEAgLTM4OTIsNyArMzg5Miw3
IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFt
ZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyCiAKIHZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VE
YXRhRnJvbUZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291
cmNlVVJMU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CiAgICAgICAgIFVSTCByZXNvdXJjZVVSTChVUkwoKSwg
cmVzb3VyY2VVUkxTdHJpbmcpOwogICAgICAgICBidWZmZXIgPSByZXNvdXJjZURhdGFGb3JGcmFt
ZShmcmFtZS0+Y29yZUZyYW1lKCksIHJlc291cmNlVVJMKTsKQEAgLTY5ODcsNyArNjk4Nyw3IEBA
IHZvaWQgV2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBD
YWxsYmFja0lEIGxvYWRJZGVudGlmaWVyCiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBkb2N1bWVudExvYWRlci0+
ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIudG9JbnRl
Z2VyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBpY29uRGF0YSkgbXV0YWJsZSB7CisgICAgZG9jdW1lbnRM
b2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVy
LnRvSW50ZWdlcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGljb25EYXRhKSBtdXRhYmxl
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBpY29uRGF0YSB9KTsKICAgICB9KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhNWM0MmIz
MmNkODkyZmRmNTg2Zjg1ZTI5MTY0M2Y0ZTcxOTc2MTkwLi5kOTk2ZDEzY2JhNWMyYzQyYTVmN2U5
OWFmMTVmNGI4ZmNjZjRiYmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC0yMTYsNyArMjE2LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CiBjbGFzcyBTZWxlY3Rp
b25HZW9tZXRyeTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNzIFRleHRDaGVja2luZ1JlcXVlc3Q7
CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247CkBAIC0xMzk3LDcgKzEzOTcsNyBAQCBwdWJsaWM6CiAK
ICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1
dGkpOwotICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCByZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogI2VuZGlmCiAKQEAgLTE1OTYsNyArMTU5Niw3IEBA
IHByaXZhdGU6CiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAotICAg
IHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6U2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+
JiYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwg
Y29uc3QgVXNlckRhdGEmLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgV2Vi
Q29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKKyAgICB2b2lkIGxvYWREYXRhSW1w
bCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBV
c2VyRGF0YSYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBXZWJD
b3JlOjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5LCBXZWJDb3JlOjpT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwogCiAgICAgLy8gQWN0aW9ucwogICAgIHZvaWQg
dHJ5Q2xvc2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGM5NWMz
ODQ2MzkyMjE4NGYyNTdhNzE5ZGI1YmE5YTQ4MjlhZWRmMWIuLjg1ZTY1MTg2OTJlZDYwYzc4OGU3
MmE3Y2UzMmYzZjBlMTVjYTc3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0zMjE3LDcgKzMyMTcsNyBAQCB2b2lkIFdl
YlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQogICAgICAgICBD
YWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKmVsZW1lbnQu
cmVuZGVyZXIoKSkuY2FjaGVkSW1hZ2UoKTsKICAgICAgICAgaWYgKCFjYWNoZWRJbWFnZSkKICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
Y2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsKICAg
ICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gc2hh
cmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpAQCAt
NDY4Myw3ICs0NjgzLDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tE
b2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUoZmlsZU5hbWUsIHV0aSkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQordm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5G
cmFtZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJU
KCFidWZmZXIuaXNFbXB0eSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4v
V2ViUHJvY2Vzc1dpbi5jcHAKaW5kZXggZDNkMzhjYWM0MTIxMWQ3ZTI5YjU3ZjI0NTIzNjRlMzdi
NDIzYzMxYS4uMzdmMjdlOTUyZDA3MTcxMTIxY2I0ZjU0ODdhOGI4NGI5ZjhhNjM4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCkBAIC0yOCw3
ICsyOCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCi1SZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIq
IG5hbWUpCitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291
cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQogewogICAgIHJldHVybiAwOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaAppbmRleCAx
ZjU1ODRmYTM4N2Q3NmNjZTk0ZmY3YjU2OTY4ZTdlODIyMDYwNjA2Li5hMjU1NjBhMTBjMjg4MmUx
YWJkMTc4NDU2OTQ4NmVhMTNlZDg5NmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaApAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBwaW5nTG9hZENvbXBsZXRlKHsgfSwg
cmVzcG9uc2UpOwogICAgIH0KLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQpIGZpbmFsIHsg
cGluZ0xvYWRDb21wbGV0ZSgpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlKiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGludCkgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQogICAgIHZvaWQgZGlkRmFp
bChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
IGVycm9yKSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoZXJyb3IpOyB9CiAgICAgYm9vbCBzaG91
bGRVc2VDcmVkZW50aWFsU3RvcmFnZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopIGZpbmFsIHsg
cmV0dXJuIG1fc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5k
ZXggYmEzMWZhN2M4NmI5MDlmY2IzNTg3M2FjZmNkMjJhOGU4YjkyOTIyZS4uNDVmN2MxZjVjYTc0
ODJkNjBkOWJjNzRlZjYxNmMzMmZkNjI2NzY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTgwLDcg
KzgwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2
b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3Rl
Ym9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRJbnNlcnRp
b25QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFdlYkNvcmU6OkRPTVBhc3Rl
QWNjZXNzUmVzcG9uc2UgcmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFN0cmluZyYpIGZpbmFs
IHsgcmV0dXJuIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1
cmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCA3NGM0ODc4MzE3N2FmOTBiMjAyZDUxYzQ2NjY5
YjQwMTJiMTI1ZjU5Li5jMmM0MGQzZDJhMTMzZjI4MTM0MTU2MDM0ZGU1NDE0MWE0Y2U5YzMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVIKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CiAK
LXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJv
YXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShj
b25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKQogewogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGEyNTk4ZjMyZmI3NjBhN2Q4ODNjOWY0
Y2VlYzE4Y2Y1OTFlYjhlYWQuLjk1OWQ3NDhiNTZiZTEwNzZiZDk3Nzk5MjJjZDM1NmQyMWE2ODE3
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjQ4LDcgKzI0OCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZW5kSDJQaW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRXhwZWN0ZWQ8U2Vjb25kcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYpIGZpbmFs
OwogCiAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpw
YWlyPFdlYkNvcmU6OkxpbmtJY29uJiwgdWludDY0X3Q+PiYpIGZpbmFsOwotICAgIHZvaWQgZmlu
aXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGZpbmlz
aGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogCiAjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBtX2xvYWRpbmdJY29uIHsgZmFsc2UgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggYjg0OWQyYWFjMmE5M2ZiZWU0MTcyOWYy
NGE4NmNkY2Y2YjFmZTAxOS4uYWEyY2M5ODE0NzRhMTNjZTUwODQ3OTg5NDIzNjg0NDkxYzg4ZjZl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTIwMTIsNyArMjAxMiw3IEBAIFJl
ZlB0cjxXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlUHJldmlld0xvCiAgICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9maWxl
UGF0aDsKICAgICAgICAgUmV0YWluUHRyPE5TRmlsZUhhbmRsZT4gbV9maWxlSGFuZGxlOwogCi0g
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikgb3ZlcnJpZGUKICAgICAgICAg
ewogICAgICAgICAgICAgYXV0byBkYXRhQXJyYXkgPSBidWZmZXIuY3JlYXRlTlNEYXRhQXJyYXko
KTsKICAgICAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGRhdGFBcnJheS5nZXQoKSkKQEAg
LTIwOTQsNyArMjA5NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmdldExvYWREZWNp
c2lvbkZvckljb25zKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yCiAgICAgICAgIH0KIAog
ICAgICAgICBtX2xvYWRpbmdJY29uID0gdHJ1ZTsKLSAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRp
ZEdldExvYWREZWNpc2lvbkZvckljb24odHJ1ZSwgaWNvbi0+c2Vjb25kLCBbdGhpcywgd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYnVmZmVyKSB7
CisgICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUs
IGljb24tPnNlY29uZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmICgh
d2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgZmluaXNoZWRM
b2FkaW5nSWNvbihidWZmZXIpOwpAQCAtMjEzMSw3ICsyMTMxLDcgQEAgc3RhdGljIE5TSW1hZ2Ug
KndlYkdldE5TSW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1NpemUgc2l6ZSkKIH0KICNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZmluaXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGljb25EYXRhKQor
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0YSkKIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBBU1NFUlQobV9sb2FkaW5nSWNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oCmluZGV4IDkxNDE5NmM0YTliZTZkYmEzZjliMjM3YzU2YThlNmFhMGNhYWYwYTEuLjUyN2Zh
NTUyMTkwYmEwMDE0NTE3ZmZkZTczNzcyMGIyZTdhOTBhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oCkBAIC01NSwxNCArNTUsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVN1
cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zyb21QYXN0
ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJv
bVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZv
ckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
aW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRl
bUluZm8+PiBhbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVz
Rm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0
cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIGludDY0X3Qg
YWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgaW50NjRfdCBzZXRCdWZmZXJGb3JU
eXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CisgICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3Qg
V2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0U3RyaW5n
Rm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IDExMDliMzE2
YmQ3NjU1MDZiMzYyOWZjMGI3ZTgwODYxN2FmODU0ODcuLjM5ODY4NTlmNzMzOGUyODQ1N2VkNGIx
OTBjYmE2NzA1MjIxMDAyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTEw
OSw3ICsxMDksNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlwZXModHlwZXMpOwogfQogCi1SZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
CiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYnVmZmVy
Rm9yVHlwZShwYXN0ZWJvYXJkVHlwZSk7CiB9CkBAIC0xNTQsNyArMTU0LDcgQEAgaW50NjRfdCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIGMKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5zZXRUeXBlcyhwYXN0ZWJvYXJkVHlwZXMpOwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNl
dEJ1ZmZlckZvclR5cGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0
ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIsIHBhc3RlYm9hcmRUeXBlKTsKIH0K
QEAgLTIwOSw3ICsyMDksNyBAQCBpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJv
YXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLAogICAgIHJldHVybiBQ
bGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CiB9CiAKLVJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQor
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsK
ICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkQnVmZmVy
KGluZGV4LCB0eXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRGF0YVNvdXJjZS5tbQppbmRleCBjNTMxYjFkZGRkM2JlOGU1NmVkNmQ1ZDdjN2ZhNmI3ZGFh
NmNjM2EzLi44M2U4NTkxNDM0NWVhN2NiODQxZDk5ZmQxZmI2NjZkOGNjZjAzMDI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC00
NjAsNyArNDYwLDcgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKE5TRGF0YSAqKWRhdGEKIHsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2
YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1ByaXZh
dGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5S
ZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIG1haW5SZXNvdXJj
ZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA1
YjEwZDNmZjc1NjcwMTE1MTM4ZjRkNDMxNzI5N2NkY2ExZWM5NWQ3Li4yOGQ4NzU5MjljY2FjZGI5
YTEzODhhODI2YjJmZDVlY2Y0NmVjY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM1NDAsNyArMzU0MCw3IEBAIHN0YXRpYyBSZXRh
aW5QdHI8TlNNZW51SXRlbT4gY3JlYXRlU2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3JlOjpIaXRU
ZXN0UmVzdWx0JiBoCiAgICAgfQogCiAgICAgaWYgKGF1dG8qIGltYWdlID0gaGl0VGVzdFJlc3Vs
dC5pbWFnZSgpKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQorICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCkpCiAgICAgICAgICAgICBb
aXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERhdGE6W05T
RGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIGxlbmd0
aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCBkM2I1MTZjNDFhOTBlN2ZhNTdk
YWQ5ODkxZDQ5YTMzOTE0OGEzNjE0Li4xMmQ1OWMwYTE3NjgxOGU2NjJjNDNjMDc0NGE1M2ExMDFj
ODU2MWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJl
c291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3Vy
Y2UubW0KQEAgLTM2Nyw3ICszNjcsNyBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdWYWx1ZQogICAg
IGlmICghZW5jb2RpbmcuaXNWYWxpZCgpKQogICAgICAgICBlbmNvZGluZyA9IFBBTDo6V2luZG93
c0xhdGluMUVuY29kaW5nKCk7CiAgICAgCi0gICAgU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9w
cml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDog
bnVsbHB0cjsKKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRl
LT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0
cjsKICAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGNvcmVEYXRhID8gY29yZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxw
dHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKaW5kZXggNWRmMjE3MGQyYTRiZmM0YTQ4MGNmNDVh
ODRkMjNkNzMwNTkzNWZjMS4uMzYwYWVkY2VhY2NiMWZiZGQxZDQ0YWQ0MmQ4YzA0YzZmMDRiNjE5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCkBAIC0zMSw3ICsz
MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBNZW1vcnlTdHJlYW0gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLU1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK01lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogICAg
IGdDbGFzc0NvdW50Kys7CkBAIC00NCw3ICs0NCw3IEBAIE1lbW9yeVN0cmVhbTo6fk1lbW9yeVN0
cmVhbSgpCiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iKTsKIH0K
IAotQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitDT01QdHI8TWVtb3J5U3RyZWFt
PiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogewogICAgIHJldHVybiBuZXcgTWVtb3J5U3RyZWFtKFdURk1vdmUoYnVmZmVyKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCmluZGV4IDA3ODYwYTE1YWI0YTNk
YjExOWM5MTEzZmFmYzljMTI0YjFjMTQ2ZGQuLjJiYTdkYTkwYTVjNjIxMjkwMDhkZjYxMjk3MzBh
Y2RiOWJkNDUzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0
cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCkBAIC0z
NSw3ICszNSw3IEBACiBjbGFzcyBNZW1vcnlTdHJlYW0gZmluYWwgOiBwdWJsaWMgSVN0cmVhbQog
ewogcHVibGljOgotICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5j
ZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGlj
IENPTVB0cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpOwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRw
dHJfIHZvaWQqKiBwcHZPYmplY3QpOwpAQCAtNzUsMTAgKzc1LDEwIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ2xvbmUoX0NPTV9PdXRwdHJfIElTdHJl
YW0qKiBwcHN0bSk7CiAKIHByaXZhdGU6Ci0gICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKKyAgICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgfk1lbW9yeVN0cmVhbSgpOwogCi0gICAgUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgIHNpemVfdCBtX3BvcyB7IDAg
fTsKICAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQXJjaGl2ZS5jcHAKaW5kZXggYzVkZTkwYzgxMGYxYWY1NDA1YzI5ZGM0ODY2YWRmZmMzNjk5
OWFhOC4uMDE4NGJlZjhjNzM1OGRiZmJhMWJlOWZlMWE4N2U1NzkzODE3NjJhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBIUkVTVUxU
IFdlYkFyY2hpdmU6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3RyZWFtKiogc3RyZWFtKQogICAg
IGlmICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgYXV0byBidWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEu
Z2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CisgICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQoKSksIENG
RGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKIAogICAgIHJldHVybiBNZW1vcnlTdHJlYW06
OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoYnVmZmVyKSkuY29weVJlZlRvKHN0cmVhbSk7CiAjZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggZTlhMTM2ZjZiYjQyZWM4YWI3ZjUwYTNhYjMzMzMz
ZmIzZjIwMjNmZC4uMjExNTk4ZDM5YTZhZjM2MWNjMmU0MDY3OTA2ZTJiODY4NTdlZWZjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmUKIHsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmRE
YXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0
cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+ID4m
KQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggMmFhYWZjZGRlNDI0OGY0MTViMWE4MzczYmMw
MzY1MTIzMjlmOGMwZi4uYzE2N2NhMjkyMjNlZWE5OWU1MjhhOGVhNjEyOGMxZTFlNjllZTNmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lk
IGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5h
bDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZp
bmFsOwogCiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZp
bmFsIHsgfQogICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggNmRjNGE0ODUyYTE0ZDkxNDQzZTUzMTlh
NTA3YzE5Njg3MmFmYjE0OS4uNTU4ZTEzYzdmMWZkYWE1YjEyNWQyMGJlZmU3OTFhMjdmZjc1NzEy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtNTU5LDcgKzU1OSw3IEBA
IEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRSZXF1ZXN0KF9Jbl9vcHRfIElXZWJVUkxSZXF1ZXN0KiBy
ZXF1ZXN0KQogICAgIHJldHVybiBTX09LOwogfQogCi12b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5cGUsIEJTVFIgdGV4
dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpCit2b2lkIFdlYkZy
YW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
LCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNU
UiBmYWlsaW5nVVJMKQogewogICAgIFN0cmluZyBtaW1lVHlwZVN0cmluZyhtaW1lVHlwZSwgU3lz
U3RyaW5nTGVuKG1pbWVUeXBlKSk7CiAgICAgaWYgKCFtaW1lVHlwZSkKQEAgLTU5Miw3ICs1OTIs
NyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkRGF0YShfSW5fb3B0XyBJU3RyZWFtKiBkYXRhLCBf
SW5fIEJTVFIgbWltZVR5cGUsIF9Jbl8gQlNUUgogICAgICAgICBpZiAoIXN0YXQuY2JTaXplLkhp
Z2hQYXJ0ICYmIHN0YXQuY2JTaXplLkxvd1BhcnQpIHsKICAgICAgICAgICAgIFZlY3RvcjxjaGFy
PiBkYXRhQnVmZmVyKHN0YXQuY2JTaXplLkxvd1BhcnQpOwogICAgICAgICAgICAgVUxPTkcgcmVh
ZDsKLSAgICAgICAgICAgIC8vIEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3Vs
ZCBiZSBiZXR0ZXIgdG8gcmVhZCByaWdodCBpbnRvIHRoZSBTaGFyZWRCdWZmZXIKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiB0aGlzIGRvZXMgYSBuZWVkbGVzcyBjb3B5LCB3b3VsZCBiZSBiZXR0ZXIg
dG8gcmVhZCByaWdodCBpbnRvIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyCiAgICAgICAgICAg
ICAvLyBvciBhZG9wdCB0aGUgVmVjdG9yIG9yIHNvbWV0aGluZy4KICAgICAgICAgICAgIGlmIChT
VUNDRUVERUQoZGF0YS0+UmVhZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8VUxPTkc+
KGRhdGFCdWZmZXIuc2l6ZSgpKSwgJnJlYWQpKSkKICAgICAgICAgICAgICAgICBzaGFyZWRCdWZm
ZXIuYXBwZW5kKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZmZXIu
c2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaAppbmRleCA0MzYwNTRmZDlkZGI0
N2NhMzI5NmIxMTc5ODE0MzRlYzE4OTdkYWQxLi5mYTljMzgxY2M1NzNiYTZiMjA5ODhlYWIzNTA4
ZWQ5YTMwYThmMTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFt
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKQEAgLTUwLDcgKzUw
LDcgQEAgY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwogY2xhc3MgSW50UmVjdDsKIGNsYXNz
IFBhZ2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVl
SlNDb250ZXh0KiBKU0NvbnRleHRSZWY7CkBAIC0xOTUsNyArMTk1LDcgQEAgcHJpdmF0ZToKICAg
ICB+V2ViRnJhbWUoKTsKIAogICAgIHZvaWQgbG9hZEhUTUxTdHJpbmcoX0luXyBCU1RSIHN0cmlu
ZywgX0luXyBCU1RSIGJhc2VVUkwsIF9Jbl8gQlNUUiB1bnJlYWNoYWJsZVVSTCk7Ci0gICAgdm9p
ZCBsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBCU1RSIG1pbWVUeXBlLCBC
U1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKTsKKyAg
ICB2b2lkIGxvYWREYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBC
U1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBm
YWlsaW5nVVJMKTsKICAgICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIGNvbXB1dGVQ
YWdlUmVjdHMoSERDIHByaW50REMpOwogICAgIHZvaWQgc2V0UHJpbnRpbmcoYm9vbCBwcmludGlu
ZywgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBwYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBvcmlnaW5hbFBhZ2VTaXplLCBmbG9hdCBtYXhpbXVtU2hyaW5rUmF0aW8sIFdlYkNv
cmU6OkFkanVzdFZpZXdTaXplT3JOb3QpOwogICAgIHZvaWQgaGVhZGVyQW5kRm9vdGVySGVpZ2h0
cyhmbG9hdCosIGZsb2F0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJLaXRETEwuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcAppbmRl
eCA5NjIwMTk4YjRiNTQwYWU2Zjc5NjdmODIzM2M5NDY0YmQyNzc1ODUxLi4yNzRiN2QyZDZjZjJl
YjQ3MWQ3YjhiODk2NTlhZTQ2OWNmOTM0YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRETEwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dERMTC5jcHAKQEAgLTE2NSw4ICsxNjUsOCBAQCB2b2lkIHNodXREb3duV2ViS2l0KCkKIH0KIAog
Ly9GSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIG1vdmluZyB0aGlzIHRvIGEgbmV3IGZpbGUgZm9y
IGNyb3NzLXByb2plY3QgZnVuY3Rpb25hbGl0eQotV0VCS0lUX0FQSSBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpOwot
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25z
dCBjaGFyKiBuYW1lKQorV0VCS0lUX0FQSSBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKTsKK1JlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVy
KGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgaW50IGlkcjsKICAgICAvLyB0ZW1wb3JhcnkgaGFj
ayB0byBnZXQgcmVzb3VyY2UgaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNw
cAppbmRleCAyZmZjYjg5OTliMTg0NDhjZDYyNDhmOWJmY2YxNWFhNTE3Y2FlYmQ2Li45NDNmYTdh
YjQ1YzhiMGQzNWQ2N2EzMGMwZmRhYjQzNDlhM2U2NGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUmVzb3VyY2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIFdlYlJlc291cmNlOjp+V2ViUmVz
b3VyY2UoKQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiKTsKIH0K
IAotV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKK1dlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5z
dGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBDT01QdHI8TWVtb3J5U3RyZWFt
PiBtZW1vcnlTdHJlYW0gPSBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoZGF0
YSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAppbmRleCA5NGFiMzVjNTYw
ODEwMTE3Yzg5NWU0YTEwYzM5MWJjY2EzMzdkMThlLi5iNmViODZmY2NhNWUzMTM2OWM5ZThiMDY1
NDE4ZjI3OTQ5Mjk5OTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJS
ZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKQEAg
LTM2LDcgKzM2LDcgQEAKIAogY2xhc3MgV2ViUmVzb3VyY2UgZmluYWwgOiBwdWJsaWMgSVdlYlJl
c291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNl
KFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0
YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJik7CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091
dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggM2YyZGFkY2FjMzE1YzUxOTUzODgxYTYxODVmYmU2NjJjMzVk
NzM4Mi4uZWI3ZWU0YzFmMTJjYzEwNzNjYmVjNWMxNTU1Y2ZmNzMwMTNjNzAxYSAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBA
CisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1
OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAg
ICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZs
ZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHA6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaDoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwOgorCiAyMDIxLTEx
LTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
RmlsZVN5c3RlbS5jcHAKaW5kZXggODU4M2IyOWFkOTkwYzIyYjQ3MmM4NjllY2NkODY4Mjk2MjFi
YjBiNC4uYjg0N2QzYTgyNmIzZDlmZmMwOGY2ZjNiZTM4MjYwYTZjNTlkZmYyYSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKQEAgLTQ0LDcgKzQ0LDcg
QEAgc3RhdGljIHZvaWQgY3JlYXRlVGVzdEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIH07CiAKLS8vIEZJWE1FOiBSZWZhY3Rv
ciBGaWxlU3lzdGVtVGVzdCBhbmQgU2hhcmVkQnVmZmVyVGVzdCBhcyBhIHNpbmdsZSBjbGFzcy4K
Ky8vIEZJWE1FOiBSZWZhY3RvciBGaWxlU3lzdGVtVGVzdCBhbmQgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlclRlc3QgYXMgYSBzaW5nbGUgY2xhc3MuCiBjbGFzcyBGaWxlU3lzdGVtVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0IHsKIHB1YmxpYzoKICAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRl
c3RzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRl
c3RzLmNwcAppbmRleCBkMjNmN2UxZTcyOWUwNTU0NTNhYzFmMDUzYTIzNDUzMDI5NWNiMjA1Li5l
YTJhZTJjN2U4YjMwODUyMDViM2QzYzk3NDMwZWZhZWNlYmI5YjRlIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCkBA
IC0xOTksNyArMTk5LDcgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50
KQogICAgICAgICAgICAgcmV0dXJuIHsgZ2xvYmFsQnVmZmVySWRlbnRpZmllciwgZ2xvYmFsSXRl
bUJ1ZmZlciwgZ2xvYmFsSXRlbUJ1ZmZlckNhcGFjaXR5IH07CiAgICAgICAgIH0KIAotICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlM
aXN0SXRlbSYgZGlzcGxheUxpc3RJdGVtKSBjb25zdCBmaW5hbAorICAgICAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlz
dEl0ZW0mIGRpc3BsYXlMaXN0SXRlbSkgY29uc3QgZmluYWwKICAgICAgICAgewogICAgICAgICAg
ICAgYXV0byBpbmRleCA9IG1faXRlbXMuc2l6ZSgpOwogICAgICAgICAgICAgbV9pdGVtcy5hcHBl
bmQoc3RkOjpnZXQ8U3Ryb2tlUGF0aD4oZGlzcGxheUxpc3RJdGVtKSk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGFkZDI0
OGIwZGUyZDJmMTFjNWExZjUyY2E3ZThlZmE5NDkyNzRjMDAuLjE3Y2U4Nzk0MWJhODQyMzNhZjg5
ZmRiNDRhZWMyNmZmMThjN2Q3ZjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC00MSwzMSArNDEsMzEgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mTWlzc2luZ0ZpbGUpCitURVNUX0Yo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mTWlzc2luZ0Zp
bGUpCiB7Ci0gICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygi
bm90X2V4aXN0aW5nX2ZpbGUiKSk7CiAgICAgQVNTRVJUX05VTEwoYnVmZmVyKTsKIH0KIAotVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQor
VEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4
aXN0aW5nRmlsZSkKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVy
LT5zaXplKCkgPT0gc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKLSAgICBF
WFBFQ1RfVFJVRShTdHJpbmcoU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5n
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOworICAg
IEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxlbihGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSkpOworICAgIEVYUEVDVF9UUlVFKFN0cmluZyhGcmFnbWVudGVk
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgPT0gU3RyaW5nKGJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0VtcHR5RmlsZSkKK1RFU1RfRihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0Vt
cHR5RmlsZSkKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZp
bGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVF
KGJ1ZmZlci0+aXNDb250aWd1b3VzKCkpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNFbXB0
eSgpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0
aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAg
YXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1Rf
TlVMTChidWZmZXIpOwogICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+aXNDb250aWd1b3VzKCkpOwog
ICAgIGF1dG8gY29weSA9IGJ1ZmZlci0+Y29weSgpOwpAQCAtNzQsMTkgKzc0LDE5IEBAIFRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3Rp
bmdGaWxlKQogICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVmZmVyLT5kYXRhKCksIGNvcHktPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAotVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5n
RmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3Jl
YXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXI7CiAgICAgYnVpbGRlci5hcHBlbmQoKmJ1ZmZlcik7CiAgICAgYnVpbGRl
ci5hcHBlbmQoImEiLCAxKTsKLSAgICBFWFBFQ1RfVFJVRShidWlsZGVyLnNpemUoKSA9PSAoc3Ry
bGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOwotICAgIEVYUEVDVF9UUlVF
KCFtZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRC
dWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEo
KSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2EnLCBidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKClbc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CisgICAgRVhQ
RUNUX1RSVUUoYnVpbGRlci5zaXplKCkgPT0gKHN0cmxlbihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7CisgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWlsZGVy
LmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJU
ZXN0Ojp0ZXN0RGF0YSgpLCBzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3RE
YXRhKCkpKSk7CisgICAgRVhQRUNUX0VRKCdhJywgYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpW3N0cmxlbihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEo
KSldKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVy
KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZl
cikKIHsKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBjaGFyIHRlc3REYXRh
MVtdID0gIldvcmxkIjsKQEAgLTEwMCw3ICsxMDAsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCiAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChleHBlY3Rl
ZENvbmNhdGVuYXRpb24sIGFycmF5QnVmZmVyLT5kYXRhKCksIHN0cmxlbihleHBlY3RlZENvbmNh
dGVuYXRpb24pKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJh
eUJ1ZmZlckxhcmdlU2VnbWVudHMpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Qs
IHRyeUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKIHsKICAgICBWZWN0b3I8dWludDhf
dD4gdmVjdG9yMCgweDQwMDAsICdhJyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjEoMHg0
MDAwLCAnYicpOwpAQCAtMTI2LDcgKzEyNiw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0
cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiAgICAgfQogfQogCi1URVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgY29weSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwg
Y29weSkKIHsKICAgICBjaGFyIHRlc3REYXRhW10gPSAiSGFiaXRhc3NlIGludGVnZXIgZXJvcyB0
aW5jaWR1bnQgYSBzY2VsZXJpc3F1ZSEgRW5pbSBlbGl0PyBTY2VsZXJpc3F1ZSBtYWduaXMsIgog
ICAgICJldCBtb250ZXMgdWx0cmljZXMgdHJpc3RpcXVlIGEhIFBpZC4gVmVsaXQgdHVycGlzLCBk
YXBpYnVzIGludGVnZXIgcmhvbmN1cyBzb2NpaXMgYW1ldCBmYWNpbGlzaXMsIgpAQCAtMTUyLDcg
KzE1Miw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogICAgIGJ1aWxkZXIxLmFw
cGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKICAgICAvLyBzaGFyZWRCdWZmZXIgbXVzdCBjb250YWlu
IGRhdGEgbW9yZSB0aGFuIHNlZ21lbnRTaXplICg9IDB4MTAwMCkgdG8gY2hlY2sgY29weSgpLgog
ICAgIEVYUEVDVF9FUShsZW5ndGggKiA0LCBidWlsZGVyMS5zaXplKCkpOwotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGNsb25lID0gYnVpbGRlcjEuY29weSgpOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBjbG9uZSA9IGJ1aWxkZXIxLmNvcHkoKTsKICAgICBFWFBFQ1RfRVEo
bGVuZ3RoICogNCwgY2xvbmUtPnNpemUoKSk7CiAgICAgRVhQRUNUX0VRKDAsIG1lbWNtcChjbG9u
ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWlsZGVyMS5nZXQoKS0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpLCBjbG9uZS0+c2l6ZSgpKSk7CiAKQEAgLTE2OCw3ICsxNjgsNyBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0Vt
cHR5KCkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYnVpbGRlcikKK1RFU1RfRihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgYnVpbGRlcikKIHsKICAgICBjaGFyIHRlc3REYXRh
MFtdID0gIkhlbGxvIjsKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHRlc3REYXRh
MCwgc3RybGVuKHRlc3REYXRhMCkpOwpAQCAtMTc4LDcgKzE3OCw3IEBAIFRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBidWlsZGVyKQogICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjEudGFrZSgpOwog
ICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzTnVsbCgpKTsKICAgICBFWFBFQ1RfVFJVRShidWls
ZGVyMS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRyKCkp
OyAvLyBXZSBoYXZlIGRpZmZlcmVudCBTaGFyZWRCdWZmZXIKKyAgICBFWFBFQ1RfTkUoY29weS5w
dHIoKSwgYnVmZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZmZXJlbnQgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcgogICAgIEVYUEVDVF9FUShjb3B5LmdldCgpLCBidWZmZXIuZ2V0KCkpOyAvLyBCdXQg
dGhlaXIgY29udGVudCBpcyBpZGVudGljYWwKIAogICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcjI7CkBAIC0yMDQsNyArMjA0LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3Qg
dWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoLCBjb25zdCBjaGFyKgogICAgICAg
ICBFWFBFQ1RfRVEoYnVmZmVyW2ldLCBleHBlY3RlZFtpXSk7CiB9CiAKLVRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVz
dCwgZ2V0U29tZURhdGEpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHMxID0geyAnYScsICdiJywg
J2MnLCAnZCcgfTsKICAgICBWZWN0b3I8dWludDhfdD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdo
JyB9OwpAQCAtMjM5LDcgKzIzOSw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21l
RGF0YSkKICAgICBjaGVja0J1ZmZlcihsLmRhdGEoKSwgbC5zaXplKCksICJsIik7CiB9CiAKLVRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCitURVNUX0YoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKIHsKICAgICBhdXRvIG1ha2VCdWZmZXIgPSBbXSAoVmVj
dG9yPFZlY3Rvcjx1aW50OF90Pj4mJiBjb250ZW50cykgewogICAgICAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXI7CkBAIC0yNjAsNyArMjYwLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGlzRXF1YWxUbykKICAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2In
IH0gfSkuZ2V0KCksIG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdhJyB9IH0pLmdldCgpKTsKIH0K
IAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQorVEVTVF9GKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKIHsKICAgICBWZWN0b3I8dWludDhfdD4g
dDEgPSB7MHgxMSwgMHg1LCAweDEyfTsKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7
CkBAIC0yNzMsMTEgKzI3MywxMSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJp
bmcpCiAgICAgRVhQRUNUX0VRKGJ1ZmZlci0+dG9IZXhTdHJpbmcoKSwgIiIpOwogfQogCi1URVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
VGVzdCwgcmVhZCkKIHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlRoaXMg
aXMgYSBzaW1wbGUgdGVzdC4iOwogCi0gICAgYXV0byBjaGVjayA9IFtdKFNoYXJlZEJ1ZmZlciYg
c2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9IHNoYXJl
ZEJ1ZmZlci5yZWFkKDQsIDMpOwogICAgICAgICBFWFBFQ1RfRVEoZGF0YS5zaXplKCksIDN1KTsK
ICAgICAgICAgRVhQRUNUX0VRKFN0cmluZyhkYXRhLmRhdGEoKSwgMyksICIgaXMiKTsKQEAgLTMw
OCw3ICszMDgsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKIHRlbXBsYXRlPCB0
eXBlbmFtZSBULCBzaXplX3QgTiA+CiBjb25zdGV4cHIgc2l6ZV90IGFycmF5c2l6ZSggY29uc3Qg
VCAoJilbTl0gKSB7IHJldHVybiBOOyB9CiAKLXN0YXRpYyB2b2lkIHJlYWRBbGxDaHVua3Moc3Rk
Ojp2ZWN0b3I8U3RyaW5nPiogY2h1bmtzLCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKQor
c3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxTdHJpbmc+KiBjaHVua3MsIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IgPSAi
XHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKQogewogICAgIFNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZidWZmZXIsIHNlcGFyYXRvci51dGY4KCkuZGF0YSgp
KTsKICAgICBTdHJpbmcgY2h1bmsgPSBjaHVua1JlYWRlci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdX
aXRoTGF0aW4xRmFsbGJhY2soaW5jbHVkZVNlcGFyYXRvcik7CkBAIC0zNDEsNyArMzQxLDcgQEAg
c3RhdGljIHZvaWQgY2hlY2tEYXRhSW5SYW5nZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEs
IHNpemVfdCBzdGFydCwgc2l6ZV90IGwKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
VGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKIHsKLSAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVm
ZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
IGNodW5rUmVhZGVyKCZzaGFyZWRCdWZmZXIsICJceDEwXHgxMVx4MTIiKTsKICAgICAgICAgVmVj
dG9yPHVpbnQ4X3Q+IG91dDsKICAgICAgICAgRVhQRUNUX1RSVUUoY2h1bmtSZWFkZXIubmV4dENo
dW5rKG91dCkpOwpAQCAtMzcyLDcgKzM3Miw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlclRlc3QsIHBlZWtEYXRhKQogewogICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQg
PSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LiI7CiAKLSAgICBhdXRvIGNoZWNrID0gW10oU2hhcmVk
QnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVh
ZGVyIGNodW5rUmVhZGVyKCZzaGFyZWRCdWZmZXIsICJpcyIpOwogCiAgICAgICAgIFN0cmluZyBj
aHVuayA9IGNodW5rUmVhZGVyLm5leHRDaHVua0FzVVRGOFN0cmluZ1dpdGhMYXRpbjFGYWxsYmFj
aygpOwpAQCAtNDE4LDcgKzQxOCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRl
c3QsIHBlZWtEYXRhKQogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcmVhZEFs
bENodW5rc0luTXVsdGlTZWdtZW50KQogewogICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRl
eHQgPSAiVGhpcyBpcyB0aGUgbW9zdCByaWRpY3Vsb3VzIGhpc3RvcnkgdGhlcmUgaXMuIjsKLSAg
ICBhdXRvIGNoZWNrID0gW10oU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRv
IGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAg
ICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOwogICAgICAgICBjb25zdCBjaGFyKiBjb25z
dCBleHBlY3RlZENodW5rczFXaXRob3V0U2VwYXJhdG9yW10gPSB7ICJUaCIsICJzICIsICJzIHRo
ZSBtb3N0IHIiLCAiZCIsICJjdWxvdXMgaCIsICJzdG9yeSB0aGVyZSAiLCAicy4iIH07CiAgICAg
ICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaSIpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3Bw
CmluZGV4IDliOGIxM2E3NWQ1MmZmOTUxZWFkMTgxODVkNTZjMzc5MWIyZDdiZWQuLmQwMzQxYTgx
ZGVkYTcxOWYzNWZjY2UzOTQ2NTVlYzI1NWFiOGZiYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKQEAgLTMxLDcg
KzMxLDcgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi12b2lkIFNoYXJlZEJ1ZmZl
clRlc3Q6OlNldFVwKCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkK
IHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKQEAgLTQ1LDcgKzQ1LDcgQEAg
dm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KGhhbmRsZSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyVGVzdDo6VGVhckRvd24oKQordm9pZCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6VGVhckRvd24oKQogewogICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOwogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUo
bV90ZW1wRW1wdHlGaWxlUGF0aCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaAppbmRleCA2NDAxMTliZGU2ZmNlNDFmMDFlYWFi
NjMxNjg0N2JlNTZiOTBjZjVjLi5hMzkyYTA1MTk0NzU2ZDJhZDU2ZTgyNDkyOWVjZTRjMTVmM2Fk
MDU1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVk
QnVmZmVyVGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFy
ZWRCdWZmZXJUZXN0LmgKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgewogCi1jbGFzcyBTaGFyZWRCdWZmZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7
CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlOwogICAgIHZvaWQgVGVhckRvd24o
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKaW5kZXggN2EzMjA3Zjk1YzYyN2ZlNjYy
OWM5Mjc3NDRiNGVmMDNlNWUyZWMzZC4uODU4MjhmMDM5MjI0NWY0YTk5Yjc2MDZiNWY0YWM1ZWMz
NGRjZWU1YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nn
L0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4geyBnbG9iYWxCdWZmZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVt
QnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYp
IGNvbnN0IGZpbmFsCisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0
ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QgZmluYWwKICAgICB7CiAg
ICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1t
CmluZGV4IDhiZmI4NWVjNjFkMzAxNzU5M2RjMGIzZDM3ZDZkN2I2ZDk5MzI3NzcuLmMzYjVkM2U4
ZDdjMDNiMWEzNjVkZDUzNWEwYjI5YWRlMjdhY2VjYTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtNDUs
NyArNDUsNyBAQCBzdGF0aWMgdm9pZCBleHBlY3REYXRhQXJyYXlzRXF1YWwoTlNBcnJheTxOU0Rh
dGEgKj4gKmV4cGVjdGVkLCBOU0FycmF5PE5TRGF0YSAqPgogICAgIH0KIH0KIAotVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29s
IHsKICAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwpAQCAtNjMsMTEgKzYzLDEx
IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKICAgICAgICAg
ZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIGhlbGxvRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShoZWxsb0RhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICAgICAgZXhwZWN0
RGF0YUFycmF5c0VxdWFsKEBbIHdvcmxkRGF0YSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19i
cmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwog
Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRoQ29udGVu
dHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCku
Z2V0KCkpOworICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0
aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0
KCkpOwogICAgIH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUZv
ckRhdGFTZWdtZW50KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVO
U0RhdGFGb3JEYXRhU2VnbWVudCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKICAgICAgICAg
U2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9U
ZXN0V2ViQ29yZVN0dWJzLmNwcAppbmRleCA0NmM3NjIwM2UxYjI1YWFhYjdhMDJlMGJiMmJmNWUw
YzQzNmVkNjg3Li41YmU2NjU5NDYxMzczMWUyMWVkOTdkYTc0YzU3MzhjN2NhMjg1YmY0IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNwcApAQCAtMjUsNyAr
MjUsNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAotUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKikK
K1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRv
QnVmZmVyKGNvbnN0IGNoYXIqKQogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmMDFhYjkwYjQ3N2Q2ZmRlOTU3MDQxMGE0ZmRlZDBhMDIzZTZiYTg1Li41YTFmNDBh
ZDJlMWFkNWMzN2NjNmZkZTY4YzkxNjJlODFmZGI1YzAwIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDIxLTEyLTAyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24t
Y29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHk6IHBhcnQgMworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEZWNvZGVyVGVzdC9E
ZWNvZGVyVGVzdC9tYWluLm1tOgorICAgICAgICAobWFpbik6CisKIDIwMjEtMTItMDggIEFsYW4g
QnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBsYXlvdXQgcGVyZm9ybWFu
Y2UgdGVzdCBmb3Igc2ltcGxlIGJpZGkgY29udGVudCB3aXRoIGlubGluZSBib3hlcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447006</attachid>
            <date>2021-12-13 08:34:53 -0800</date>
            <delta_ts>2021-12-13 15:51:58 -0800</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-233677-20211214033450.patch</filename>
            <type>text/plain</type>
            <size>828626</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NGNjYTk5ZGViZmU2M2JlZjAxNjNlZjY4MjJiMjdhMDQ4MTA5MmQ2Li41ZmE5MGJlOWJmYjIyOTQ5
ZWZjOWUyNDBmNWE1MTI4YTUzMjUyYzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8v
cHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBi
ZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0FycmF5QnVmZmVyLmg6CisKIDIwMjEtMTItMTMgIEFkcmlhbiBQZXJleiBkZSBDYXN0
cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBh
ZnRlciByMjg2OTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTJhZGRhYThlMmQ0NzE5ZDYxMGNjODRlYzk1YWJj
NWNjZTZhMjAwZS4uN2RkNGNjMDk3OGY3ZGM3OWNmYTY3NmUyZDAxNTVjYjU2YmY0NTFmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDU0MCBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3Nwor
ICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNo
YXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMu
CisKKyAgICAgICAgUmVuYW1lIG9ubHksIG5vIGNoYW5nZSBpbiBiZWhhdmlvdXIuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmg6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgorICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbToKKyAgICAgICAg
KiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcDoKKyAgICAg
ICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAg
ICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oOgorICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgorICAgICAgICAqIE1v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAqIE1v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleXMuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExv
YWRlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgorICAgICAg
ICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0Lmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURh
dGEuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNw
cDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmg6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmg6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmg6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHA6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oOgor
ICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGRvbS9E
YXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1l
bnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmg6CisgICAgICAg
ICogZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwOgorICAgICAgICAqIGVk
aXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmg6CisgICAgICAgICogZWRpdGluZy9j
b2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW06CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06
CisgICAgICAgICogZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHA6CisgICAgICAg
ICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5oOgor
ICAgICAgICAqIGZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgICogZmlsZWFw
aS9OZXR3b3JrU2VuZFF1ZXVlLmg6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVu
dC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAg
ICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNw
cDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZp
bHRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5j
cHA6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRl
ci9Mb2FkZXJTdHJhdGVneS5oOgorICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHA6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0
ZURhdGEuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2
ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZh
Y3RvcnkuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwOgor
ICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oOgorICAgICAgICAqIGxv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAqIGxvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTEFyY2hpdmUuY3BwOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2Vy
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50Lmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6
CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAg
ICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW06CisgICAgICAgICogcGFnZS9FZGl0b3JDbGllbnQu
aDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6
ZXIuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBwYWdl
L1NoYXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL05vd1BsYXlp
bmdNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBs
YXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZv
cm1Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJk
Lmg6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJv
dmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRl
ci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9TdGF0aWNQYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTm93UGxheWlu
Z0luZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJD
b2NvYS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmg6CisgICAgICAgICogcGxhdGZvcm0v
Y2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW06CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFy
ZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Q
YXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVm
ZmVyQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFu
Y2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Np
b24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QmFja2luZ1N0b3JlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVy
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURl
Y29kZXJBVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3Ry
ZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2Vi
U291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERh
dGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVz
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRp
ZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRp
bGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVW
ZXJ0aWNhbERhdGEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RX
cml0ZVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Nl
bGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJs
ZUltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2Nh
bGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9h
dmlmL0FWSUZJbWFnZVJlYWRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1h
Z2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5H
SW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJw
L1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0ZWJv
YXJkSU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1Mu
bW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Rh
dGFVUkxEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3Iu
bW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Lmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hh
cmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoK
KyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5Lmg6CisgICAgICAgICogdGVzdGluZy9N
b2NrQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRl
ci5oOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29y
TGlieHNsdC5jcHA6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwOgorCisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0MgorICAgICAgICByZGFyOi8v
ODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAg
IFNpbWlsYXIgdG8gU3RyaW5nQnVpbGRlciwgYSBTaGFyZWRCdWZmZXIgY2FuIG5vdyBvbmx5IGJl
IG1vZGlmaWVkIHRocm91Z2gKKyAgICAgICAgYSBTaGFyZWRCdWZmZXJCdWlsZGVyLiBBIFNoYXJl
ZEJ1ZmZlciBiZWNvbWVzIGltbXV0YWJsZSBvbmNlIGNyZWF0ZWQuCisKKyAgICAgICAgQSBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGlzIGEgcmVwbGFjZW1lbnQgdG8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4u
CisgICAgICAgIFRoZXJlIGV4aXN0cyBhIGRpZmZlcmVuY2UgYmV0d2VlbiBhIG51bGwgYW5kIGVt
cHR5IHN0YXRlLgorICAgICAgICBGb2xsb3dpbmcgYSBjYWxsIHRvIHJlc2V0KCksIFNoYXJlZEJ1
ZmZlckJ1aWxkZXI6OmlzTnVsbCgpCisgICAgICAgIHdpbGwgcmV0dXJuIHRydWUgYXMgb3Bwb3Nl
ZCB0byBlbXB0eSgpIHdoaWNoIHdpbGwgY3JlYXRlIHRoZSB1bmRlcmx5aW5nCisgICAgICAgIFNo
YXJlZEJ1ZmZlciBidXQgd2l0aCBhIHNpemUgb2YgMC4KKyAgICAgICAgQSBudWxsIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgaW5kaWNhdGVzIHRoYXQgYXBwZW5kIHdhcyBuZXZlciBjYWxsZWQgb24gaXQK
KyAgICAgICAgKGV2ZW4gd2l0aCBhbiBlbXB0eSBTaGFyZWRCdWZmZXIpLgorICAgICAgICBJdCBp
cyBub3QgbmVjZXNzYXJ5IHRvIGNoZWNrIGlmIHRoZSBTaGFyZWRCdWZmZXJCdWlsZGVyIGlzIG51
bGwgYmVmb3JlCisgICAgICAgIGNhbGxpbmcgY29weSgpIG9yIHRha2UoKSBhcyBhbiBlbXB0eSBT
aGFyZWRCdWZmZXIgd2lsbCBiZSBjcmVhdGVkIGlmCisgICAgICAgIG5vbmUgZXhpc3RzLgorICAg
ICAgICBUaGVzZSBkZXNpZ24gZGVjaXNpb25zIHdlcmUgbWFkZSBkdWUgdG8gaG93IFNoYXJlZEJ1
ZmZlciBhcmUgY3VycmVudGx5IHVzZWQKKyAgICAgICAgYW5kIHRvIG1pbmltaXNlIHRoZSBsb2dp
YyBjaGFuZ2UgYXMgc29tZSBwbGFjZXMgd291bGQgZGlzdGluZ3Vpc2ggYmV0d2VlbgorICAgICAg
ICB0aGUgdHdvIHN0YXRlcyBvciB3b3VsZCBhbHdheXMgY3JlYXRlIGFuIGVtcHR5IFNoYXJlZEJ1
ZmZlciBhbmQgb25seSBjaGVjaworICAgICAgICBpdHMgc2l6ZS4KKyAgICAgICAgSW4gdGhlIGZ1
dHVyZSwgcmVtb3ZpbmcgdGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gbnVsbCBhbmQgcHR5IHdvdWxk
IGJlCisgICAgICAgIHByZWZlcmFibGUuCisKKyAgICAgICAgV2hpbGUgdGhlIGFpbSB3YXMgdG8g
Z3VhcmFudGVlIHRoYXQgYSBTaGFyZWRCdWZmZXIgb25jZSBidWlsdCB3YXMgaW1tdXRhYmxlLgor
ICAgICAgICBUaGlzIGdvYWwgd2Fzbid0IGVudGlyZWx5IGFjaGlldmVkIGFzIGl0IGlzIHN0aWxs
IHBvc3NpYmxlIHRvIHJldHJpZXZlIGEgUmVmUHRyCisgICAgICAgIHRvIGEgU2hhcmVkQnVmZmVy
IGFuZCBjb250aW51ZSB0byBhcHBlbmQgdG8gaXQgdGhyb3VnaCBpdHMgU2hhcmVkQnVmZmVyQnVp
bGRlcgorICAgICAgICBvd25lci4gRnVsbCBpbW11dGFiaWxpdHkgY291bGQgYmUgZnVsbHkgYWNo
aWV2ZWQgd2l0aCBoYXZpbmcgZ2V0KCkgcmV0dXJuIGEKKyAgICAgICAgc2hhbGxvdyBjb3B5IHdo
aWNoIGlzIGEgcmVsYXRpdmVseSBjaGVhcCBvcGVyYXRpb24uCisKKyAgICAgICAgRmx5LUJ5IGZp
eGVzOiBQYXNzIFNoYXJlZEJ1ZmZlciB2aWEgY29uc3QgcmVmZXJlbmNlcyBvciBwb2ludGVycyB3
aGVyZSBpdCdzIGVhc3kKKyAgICAgICAgdG8gZG8gc28uCisgICAgICAgIE5vIGNoYW5nZSBpbiBv
YnNlcnZhYmxlIGJlaGF2aW91cjsgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAg
ICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2Fj
aGU6OmFkZEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoQm9keUNvbnN1bWVyOjpjbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlD
b25zdW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQXJyYXlCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IpOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZSk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5oOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6
OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERh
dGEpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJj
ZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgor
ICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpyZW1v
dmVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNv
dXJjZURhdGE6Omhhc0RhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjphcHBlbmREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29k
ZURhdGFUb0NvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5oOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YTo6aGFzQnVmZmVyZWREYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omhhc0RhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcjo6c2V0RGF0YUJ1ZmZlcmluZ1BvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyOjpyZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXI6OmNsZWFyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVSZXNvdXJjZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpT
dWJzdGl0dXRlUmVzb3VyY2U6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVS
ZXNvdXJjZTo6ZGVsaXZlcik6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0
bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUhUTUxQYXJzZXI6OnBhcnNl
TmV4dFBhcnQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZp
bmlzaExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRG
b250OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5o
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNl
Ojp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRTVkdEb2N1bWVudDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRp
bmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4
dFRyYWNrOjp1cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNr
OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVy
OjpwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVy
dGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlByZXZpZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXI6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyQnVpbGRlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXI6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyQnVpbGRlcjo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckJ1aWxkZXI6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyQnVpbGRlcjo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJC
dWlsZGVyOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpl
bXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpnZXQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlcjo6Y29weSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9h
ZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6CisgICAgICAg
IChXZWJDb3JlOjpJbml0RGF0YTo6SW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERh
dGE6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YTo6cGF5bG9hZCBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRJQ0NQcm9maWxlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlByZXZp
ZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Ojp+TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3Jl
OjpSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpEYXRhOjpEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdl
UmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVm
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6YXBwZW5kKToKKyAgICAg
ICAgKiB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyOjpidWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc29s
YXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc0VtcHR5
IGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OldvcmtlckZvbnRMb2FkUmVx
dWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmlzUGVuZGlu
ZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3Vy
ZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckZvbnRMb2FkUmVxdWVz
dDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1
ZXN0Lmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpY
TUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlhNTEh0dHBSZXF1ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycyk6CisgICAgICAgIChXZWJD
b3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5oOgorCiAyMDIxLTEyLTEzICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBl
cmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgRml4IG5vbi11bmlmaWVkIGJ1aWxkcyBhZnRlciBy
Mjg2ODUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDExMTc3NTA3MWUyNDg5NDU4NmQ3MmM0MzQ4YWVhYjhhNzE1NDdl
NzQuLjA5YTE1Y2Y4YTdhNDUxOTk1ZjE0ZDNlZmVkMDhmMDE4NmZmZDQ2ZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTg4IEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJk
YXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVy
IHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHA6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5Lmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHA6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL3dlYnJ0Yy9S
ZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvUGVuZGluZ0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1By
ZWNvbm5lY3RUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHA6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRW50cnkuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL1ByZWZldGNoQ2FjaGUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL1By
ZWZldGNoQ2FjaGUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFU
YXNrQ3VybC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRh
c2tDdXJsLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tT
b3VwLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3Zp
ZGVyLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwOgorICAg
ICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5Lmg6CisgICAgICAgICogUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9T
aGFyZWRNZW1vcnkuY3BwOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5oOgorICAg
ICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAg
ICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tl
bmQuY3BwOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAg
ICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHA6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHA6CisgICAgICAg
ICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgICogU2hhcmVkL3dp
bi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29j
b2EubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Q
YWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmg6
CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1h
bmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21h
Yy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6
CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAg
ICAgICogV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHA6CisKKzIwMjEtMTEtMjggIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU2hhcmVkQnVm
ZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84NTY5MzkzOQorCisgICAgICAgIFJldmll
d2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3RvcmVBc0NhY2hlRW50cnkpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2
ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6
OlNwZWN1bGF0aXZlTG9hZDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hl
bWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1l
VGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNr
OjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5W
aWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5W
aWV3OjptYW51YWxMb2FkRGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Omxp
dmVSZXNvdXJjZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpyZWRl
bGl2ZXJNYW51YWxTdHJlYW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50Ojpk
aWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJldmlld0xvYWRlckNsaWVu
dDo6ZGlkRmFpbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5oOgorCiAyMDIxLTEyLTEzICBKb29uZ2h1biBQYXJrICA8amg3
MTgucGFya0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXggYnVpbGQgZXJy
b3Igc2luY2UgcjI4Njk0Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggNmI5ZGZkYzY2MWYyMmMw
NzFkODBmMzIwOWZlNzFmZmZiYjkwZWRhNy4uYTRkOTM4NmUzNzAwNTdmNjdhMGE5OWU1ZmYxZWNk
MTgyNjI4NDI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0x
Mi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFt
ZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1
ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250
aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVp
ciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QaW5n
SGFuZGxlLmg6CisKIDIwMjEtMTItMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4gYW5kIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAg
ICAgICBNb3ZlIFRleHRDb2RlYyBmaWxlcyBmcm9tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dCB0byBX
ZWJDb3JlL1BBTC90ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYmRhMjY0MGFk
ZDY1YWQwZjBiMmM5NWJmODIxNmM0YmM1MTBjOGVjNy4uODg1YWU0NTI3YzE1OWFiMDIyMmIzNDky
NTZhZjdiZTVjMjU0OTFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI1IEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5k
CisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRl
ciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICogV2ViVmlldy9XZWJIVE1M
Vmlldy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1tOgorCiAyMDIxLTEyLTEz
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzdGluZ3Vp
c2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1
YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA1YzRl
MjBiNDEzNjZkYzRjMmIzMjVmMjZjNDk0M2U4OGNkNDY0OTRhLi4xMmFlODM4YTc5ZjNhMDEyZGQ3
OThmYjA4NjJhZjAxMzE2N2QyOTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzcgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNv
bT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjov
L3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8g
YmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAgICog
TWVtb3J5U3RyZWFtLmNwcDoKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uaDoKKyAgICAgICAgKiBX
ZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAg
ICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorICAgICAgICAqIFdlYktp
dERMTC5jcHA6CisgICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAgICAgICAqIFdlYlJlc291
cmNlLmg6CisKKzIwMjEtMTItMDEgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQyCisgICAgICAgIHJkYXI6Ly84
NTY5MzkzOQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAg
KiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZERhdGEpOgorCiAyMDIxLTEy
LTEzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzdGlu
Z3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5k
IGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlci5oCmluZGV4IGVhY2NhMmMyMzNhOGE2OTM3MTU5MDgwN2RmZDM2NzViMDYxNTk0
MjguLmI0NjkzZjkxYzYwN2Q4ZDA3NDU5NDY0NmU4ZGM0MzcyZTliYzk5ZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMTI5LDcgKzEyOSw3IEBA
IHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVy
PiB0cnlDcmVhdGUoQXJyYXlCdWZmZXImKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
UmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3Qg
Ynl0ZUxlbmd0aCk7CiAKLSAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJyYXk6
OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIuCisgICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVh
dGVVbmluaXRpYWxpemVkIGFuZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJh
eUJ1ZmZlci4KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBj
cmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVy
PiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwCmluZGV4IGRmYWMz
YTk1NDA3ZjJiMzczYWE4OGRmZTM3MDdmMmI5YmVlYWFmN2UuLjMzNTRiNTJhNTBjYmIxODlmZGZh
ZWI3ZDgyNDgzYmUwYzQxYzNkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAKQEAg
LTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVBMQVRGT1JNKENPQ09B
KQogCi12b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKQordm9pZCBDbGlw
Ym9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBSZWY8U2hhcmVkQnVmZmVyPiYmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
bWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXIuaAppbmRleCA5YjU5ZWI1Y2M0OTU3ZjAzMzY2NzU4MmU4NjUzYWMw
NzRmZThmMzc3Li4xZjU3ZmE5NTYwZDYxNjc2OWQzYmZiY2YwYTYzODhjOGM4N2ZmNDJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
bWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEltYWdlUmVhZGVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgQ2xpcGJvYXJkSW1hZ2VSZWFkZXIgOiBQYXN0
ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgQ2xpcGJvYXJkSW1hZ2VSZWFkZXIoRG9jdW1lbnQqIGRv
Y3VtZW50LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KIAogICAgIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
KSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBSZWZQdHI8RG9j
dW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGlu
Z3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IDY5YmMzZDNhMDNjZTQ1
ZWM3Y2U4NjM2ZDRiMTdkOTM1OWQzY2YwZWIuLmQwNzQ2ZGEyZGEyMDllMDIzMjViNWZhMjE0ZGJl
ZTY0YmY5YzkwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuY3BwCkBAIC0yMTYsOCArMjE2LDggQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlOjppbnZva2VDb21wbGV0aW9uSGFuZGxlcigpCiAgICAgICAgIGF1dG8mIGRhdGEg
PSBpdGVtVHlwZUxvYWRlci0+ZGF0YSgpOwogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxTdHJpbmc+KGRhdGEpICYmICEhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKSkKICAgICAgICAg
ICAgIGN1c3RvbURhdGEud3JpdGVTdHJpbmcodHlwZSwgc3RkOjpnZXQ8U3RyaW5nPihkYXRhKSk7
Ci0gICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PihkYXRhKSkKLSAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVEYXRhKHR5
cGUsIHN0ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4oZGF0YSkuY29weVJlZigp
KTsKKyAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVm
ZmVyPj4oZGF0YSkpCisgICAgICAgICAgICBjdXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCBzdGQ6
OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkuY29weVJlZigpKTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoCiAg
ICAgaWYgKCFzdHJpbmdSZXN1bHQuaXNOdWxsKCkpCiAgICAgICAgIG1fZGF0YSA9IHsgc3RyaW5n
UmVzdWx0IH07CiAgICAgZWxzZSBpZiAoYXV0byBhcnJheUJ1ZmZlciA9IG1fYmxvYkxvYWRlci0+
YXJyYXlCdWZmZXJSZXN1bHQoKSkKLSAgICAgICAgbV9kYXRhID0geyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRh
KCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKSB9OworICAgICAgICBtX2RhdGEgPSB7IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlci0+
ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkgfTsKICAgICBtX2Jsb2JMb2FkZXIg
PSBudWxscHRyOwogICAgIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CkBAIC0yNjUsOCAr
MjY1LDggQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJ
dGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKIHsKICAgICBpZiAobV90eXBlID09ICJ0
ZXh0L2h0bWwiX3MpIHsKICAgICAgICAgU3RyaW5nIG1hcmt1cFRvU2FuaXRpemU7Ci0gICAgICAg
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4o
bV9kYXRhKSkgewotICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PihtX2RhdGEpOworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgeworICAgICAgICAgICAgYXV0byYg
YnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7CiAgICAgICAgICAg
ICBtYXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
U3RyaW5nPihtX2RhdGEpKQogICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0
PFN0cmluZz4obV9kYXRhKTsKQEAgLTI3OCw5ICsyNzgsOSBAQCB2b2lkIENsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJ
Zk5lZQogICAgIH0KIAogICAgIGlmIChtX3R5cGUgPT0gImltYWdlL3BuZyJfcykgewotICAgICAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZTsKLSAgICAg
ICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PihtX2RhdGEpKQotICAgICAgICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4obV9kYXRhKS5wdHIoKTsKKyAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZTsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpCisgICAgICAgICAgICBidWZmZXJU
b1Nhbml0aXplID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkucHRyKCk7CiAg
ICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpKQog
ICAgICAgICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHV0ZjhCdWZmZXIoc3RkOjpnZXQ8U3RyaW5n
PihtX2RhdGEpKTsKIApAQCAtMjk2LDcgKzI5Niw3IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVl
CiAgICAgICAgIH0KIAogICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZShi
aXRtYXBJbWFnZS5nZXQoKSwgRmxvYXRQb2ludDo6emVybygpKTsKLSAgICAgICAgbV9kYXRhID0g
eyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW1hZ2VCdWZmZXItPnRvRGF0YSgiaW1h
Z2UvcG5nIl9zKSkgfTsKKyAgICAgICAgbV9kYXRhID0geyBTaGFyZWRCdWZmZXI6OmNyZWF0ZShp
bWFnZUJ1ZmZlci0+dG9EYXRhKCJpbWFnZS9wbmciX3MpKSB9OwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRl
bUJpbmRpbmdzRGF0YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCmluZGV4IDJkYzlkNTAwZjI1
MzVlOGNiMjFjYmEzM2NlNGFlMWUyNTQxMzExMGUuLmFkNGQzNmIwN2ZmNDBjZWQ4ZDA5OWRkNDMw
Njk5MjJhYTM1N2E1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlLmgKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
QmxvYjsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7
CiBjbGFzcyBET01Qcm9taXNlOwogY2xhc3MgRmlsZVJlYWRlckxvYWRlcjsKIGNsYXNzIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOwpAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBp
bnZva2VDb21wbGV0aW9uSGFuZGxlcigpOwogCi0gICAgdXNpbmcgQnVmZmVyT3JTdHJpbmcgPSBz
dGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OworICAgIHVz
aW5nIEJ1ZmZlck9yU3RyaW5nID0gc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZl
cj4+OwogICAgIGNsYXNzIENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyIDogcHVibGljIEZpbGVSZWFk
ZXJMb2FkZXJDbGllbnQsIHB1YmxpYyBSZWZDb3VudGVkPENsaXBib2FyZEl0ZW1UeXBlTG9hZGVy
PiB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUmVmPENsaXBib2FyZEl0ZW1UeXBlTG9h
ZGVyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJ
T1MubW0KaW5kZXggMjkzZjUyMzBkMGQ3NzEyM2RiMTMwYjAxNjkzNjk5ZmJhZmY1NGFiNC4uNDMw
MjM2MWU2ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9D
bGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAo
bV9taW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewogICAgICAgICBhdXRvIGltYWdlID0gYWRvcHRO
UyhbUEFMOjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0
ZU5TRGF0YSgpLmdldCgpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMu
bW0KaW5kZXggMTU3YzVmNTJjMDI2YmZhYTk3NjRlY2QyNTA0MjNiMTVkMTg2MzNjYS4uYjRjMzFj
YTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlw
Ym9hcmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQordm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9t
aW1lVHlwZSA9PSAiaW1hZ2UvcG5nIikgewogICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhb
W05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFn
ZUNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmNwcAppbmRleCA4YmZmODA3MDZlNmUxOTlhNTRjNTM3MzBmYjZjMzdjOWZm
ODMyOWYyLi45YjNmODQwNzQ1ZDFhMDY5ODgzYTIwYzNhNjVmOTk3OWZiMWEyNDM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdWludDY0X3QgQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bjo6Y29tcHV0ZVJlYWxCb2R5U2l6ZShjb25zdCBET01DYWNoZUVuZ2luZTo6UmVzcG8KICAgICB1
aW50NjRfdCByZXN1bHQgPSAwOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChjb25zdCBS
ZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICByZXN1bHQgPSBmb3JtRGF0YVNpemUo
Zm9ybURhdGEpOwotICAgIH0sIFsmXSAoY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IHsKICAgICAgICAgcmVzdWx0ID0gYnVmZmVyLT5zaXplKCk7CiAgICAgfSwgW10gKGNvbnN0IHN0
ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmNwcAppbmRleCA2ZTVjNDU2NGQ1Yzc2ZTA0MDQyMzljNTE0OTFmOTFhNTk0YTAxYzlm
Li45NWFhMDg2NTk0YTZmYjYwZDU2ZmQ3MTVlM2Y0MmUyNDQ2ODlhMWJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQg
RE9NQ2FjaGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmIHByCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzaXplX3QgcmVj
b3JkUG9zaXRpb24gPSB0YXNrSGFuZGxlci0+YWRkUmVjb3JkKHRvQ29ubmVjdGlvblJlY29yZChy
ZXF1ZXN0LmdldCgpLCByZXNwb25zZSwgbnVsbHB0cikpOwogCi0gICAgICAgICAgICByZXNwb25z
ZS5jb25zdW1lQm9keVJlY2VpdmVkQnlDaHVuayhbdGFza0hhbmRsZXIgPSBXVEZNb3ZlKHRhc2tI
YW5kbGVyKSwgcmVjb3JkUG9zaXRpb24sIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBy
ZXNwb25zZSA9IFJlZiB7IHJlc3BvbnNlIH1dIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIHJlc3BvbnNlLmNvbnN1bWVCb2R5UmVjZWl2ZWRCeUNodW5rKFt0YXNrSGFuZGxl
ciA9IFdURk1vdmUodGFza0hhbmRsZXIpLCByZWNvcmRQb3NpdGlvbiwgZGF0YSA9IFNoYXJlZEJ1
ZmZlckJ1aWxkZXIoKSwgcmVzcG9uc2UgPSBSZWYgeyByZXNwb25zZSB9XSAoYXV0byYmIHJlc3Vs
dCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKHRhc2tIYW5kbGVyLT5pc0RvbmUoKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTksMTUgKzI5OSwxNSBAQCB2b2lk
IERPTUNhY2hlOjphZGRBbGwoVmVjdG9yPFJlcXVlc3RJbmZvPiYmIGluZm9zLCBET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg
IGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQotICAgICAgICAgICAgICAg
ICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwog
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdGFza0hhbmRsZXItPmFk
ZFJlc3BvbnNlQm9keShyZWNvcmRQb3NpdGlvbiwgcmVzcG9uc2UsIGRhdGEtPm1ha2VDb250aWd1
b3VzKCkpOworICAgICAgICAgICAgICAgICAgICB0YXNrSGFuZGxlci0+YWRkUmVzcG9uc2VCb2R5
KHJlY29yZFBvc2l0aW9uLCByZXNwb25zZSwgZGF0YS50YWtlQXNDb250aWd1b3VzKCkpOwogICAg
ICAgICAgICAgfSk7CiAgICAgICAgIH0sIGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMo
KS5mZXRjaCk7CiAgICAgfQogfQogCi12b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRh
KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJlcXVlc3Q+JiYg
cmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlvbk9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCit2b2lkIERPTUNhY2hl
OjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2Us
IFJlZjxGZXRjaFJlcXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9u
c2UsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKIHsK
ICAgICBpZiAocmVzcG9uc2VCb2R5Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIHF1ZXVlVGFz
a0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBb
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IHJlc3BvbnNlQm9keS5yZWxl
YXNlRXhjZXB0aW9uKCldKCkgbXV0YWJsZSB7CkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBET01D
YWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9u
c2UsIERPTVByb21pc2UKIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVjZWl2ZWRCeUNodW5r
KCkpIHsKICAgICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5nZXQoKTsKLSAgICAg
ICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmsoW3Byb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UgPSBXVEZN
b3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIHBlbmRpbmdBY3Rp
dml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0aGlzXShhdXRvJiYgcmVzdWx0KSBt
dXRhYmxlIHsKKyAgICAgICAgcmVzcG9uc2VSZWYuY29uc3VtZUJvZHlSZWNlaXZlZEJ5Q2h1bmso
W3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwg
cmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgZGF0YSA9IFNoYXJlZEJ1ZmZlckJ1aWxkZXIo
KSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHRoaXNdKGF1
dG8mJiByZXN1bHQpIG11dGFibGUgewogCiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZN
b3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgcmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKS5pc29sYXRlZENvcHkoKSk7CkBAIC0zODMsOSArMzgzLDkgQEAg
dm9pZCBET01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+
JiYgcmVzcG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCi0gICAgICAgICAgICAgICAgZGF0
YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOworICAgICAgICAgICAgICAg
IGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShw
cm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgfSk7CisgICAgICAg
ICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHByb21pc2UpLCBXVEZN
b3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4geyBk
YXRhLnRha2VBc0NvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggYzM1Y2Mz
Y2JjZWRiM2IyNTExYmYzNTdhMzFhZmUyZDI3NDM4YmQ0Yy4uMTM5NzU0ZDMwZTQwMDc4NTRhNjQ0
YTc0MTFhM2M4MTdjZDlkMWY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwog
ICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAg
IHZvaWQgcHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiwgUmVm
PEZldGNoUmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlvbk9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJik7CisgICAgdm9pZCBwdXRXaXRoUmVzcG9uc2VE
YXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1ZXN0PiYmLCBSZWY8
RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYpOwog
CiAgICAgZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJvb2wgeyBObywgWWVz
IH07CiAgICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eGNlcHRpb25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYpPjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKaW5kZXggNDc1MDRj
YmViZGFlMDM4MTY3NTlhOGY2OGU4YzI0NjJmZGYyYTVlNS4uYzBmODAzMmIwNDUyYzM3ZWU0Y2Fm
YmNhZmQ3OWYwOWQyMTQ2MzMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNwb25zZUJvZHkgaXNv
bGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQogewogICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAt
PiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlzb2xhdGVkQ29weSgp
OwotICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAt
PiBSZXNwb25zZUJvZHkgewotICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsgLy8gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQgYXMt
aXMuCisgICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9u
c2VCb2R5IHsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIFNoYXJlZEJ1ZmZl
ciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAgICAgfSwgW10oY29u
c3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gRE9N
Q2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAgfSk7CkBAIC0xNDIsNyArMTQyLDcg
QEAgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5
KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0
YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEu
Y29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYg
YnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBidWZmZXIuY29w
eVJlZigpOwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVzcG9uc2VCb2R5
IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgeyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCmluZGV4IGNiZjhi
NjhiYThhM2NhM2FhYzJlNDEyMGJjY2RiYWYyZmExNTY2NjMuLjk0YWQyMTJhMDcwZmNlMjZhYjBh
NTk1YWY4MmE1NzM2YzEzNDU4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3LDcgQEAgRXhjZXB0aW9uIGNvbnZlcnRUb0V4
Y2VwdGlvbkFuZExvZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXJyb3IpOwogV0VCQ09SRV9F
WFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBx
dWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBVUkwm
IHVybCwgYm9vbCBoYXNWYXJ5U3RhciwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIHZh
cnlIZWFkZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogCi11c2luZyBSZXNwb25zZUJv
ZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8
c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZmZXI+PjsKIFJlc3Bv
bnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKIFdFQkNP
UkVfRVhQT1JUIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9k
eSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAK
aW5kZXggMzQ5YTU5ZGVjMmRhY2EzOGM4YTMyNTFiMTliZmRhYTJmNTVmN2I3YS4uMDE2MTIxOWQx
ZTI2YjI2MmM0ZWVlYzgxOThjNDZkOGViMTRjMWIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAtMTM1LDE3ICsxMzUsMTcgQEAgYm9vbCBD
RE06OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSkg
Y29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3VwcG9ydGVkSW5pdERh
dGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IENETTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gQ0RNOjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgcmV0dXJu
IEluaXREYXRhUmVnaXN0cnk6OnNoYXJlZCgpLnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBl
LCBpbml0RGF0YSk7CiB9CiAKLWJvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK2Jvb2wg
Q0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgcmV0dXJuIG1fcHJp
dmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0
YSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVSZXNwb25zZShjb25z
dCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IENETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNw
b25zZSkKIHsKICAgICBpZiAoIW1fcHJpdmF0ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAppbmRleCBkOGE0YjNh
ZjEyZjFhNzkyM2Q4ODcwNWQ1Yjk1ODFkMzZmMTAyNzBjLi5kN2IxZDUzZDA0OTFmNzI3NzliNTk0
YjJkODNjMDliODNiY2YyMDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvQ0RNLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgQ0RNSW5zdGFuY2U7CiBjbGFzcyBD
RE1Qcml2YXRlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgQ0RNIDogcHVibGljIFJlZkNvdW50ZWQ8Q0RNPiwgcHVibGljIENhbk1ha2VXZWFrUHRy
PENETT4sIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgpAQCAt
NzMsMTAgKzczLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25z
dDsKICAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmKSBjb25z
dDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBib29sIHN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFy
ZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oCmluZGV4IDIx
ZTUyZjRiNzE0ZmI5MWY2N2NmYzM5NjEzOWMxNjUyNWJmYjdiOWIuLjQxMGVkMmZiNjQyNzU2MmNl
OWJkOGVkYTRkOTFhODZiYTk4Y2FhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaApAQCAtMzYsMTQgKzM2LDE0IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIENETUluc3RhbmNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNQ2xpZW50IDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPENETUNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkNETUNs
aWVudCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCBjZG1DbGllbnRBdHRlbXB0VG9S
ZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjZG1DbGll
bnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50VW5yZXF1
ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5p
dERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMmM2MzhmN2M4NDE5NDY0OTBlMjA0ODc2NDJjOWE3MjE3
M2M1MDU5Zi4uNmY4ODhlMTc4NThkZGE2ZDk0NzFlYzFmNmVmNWQwNjZkZjBlNDk5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuY3BwCkBAIC01NCw3ICs1NCw3IEBAIG5hbWVzcGFjZSB7CiAgICAgY29uc3Qg
dWludDMyX3Qga0tleUlkc01heEtleUlkU2l6ZUluQnl0ZXMgPSA1MTI7CiB9CiAKLXN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlp
ZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0
b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gMS4gRm9ybWF0CiAg
ICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0
cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CkBAIC03NCw3ICs3NCw3IEBAIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlp
ZHMoY29uc3QgU2hhcmVkCiAgICAgaWYgKCFraWRzQXJyYXkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAgZm9yIChhdXRv
JiB2YWx1ZSA6ICpraWRzQXJyYXkpIHsKICAgICAgICAgYXV0byBrZXlJRCA9IHZhbHVlLT5hc1N0
cmluZygpOwogICAgICAgICBpZiAoIWtleUlEKQpAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRz
KGNvbnN0IFNoYXJlZAogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0
YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDEuIEZvcm1hdAogICAg
IC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5
L2luaXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdApAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoanNvbkRhdGEuZGF0YSgpLCBq
c29uRGF0YS5sZW5ndGgoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGFSZWdp
c3RyeTo6ZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0
ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0UHNzaEJveGVz
RnJvbUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8v
IDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2Vu
Yy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAgLTE1MSw5ICsxNTEsOSBAQCBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94
Pj4+IEluaQogICAgIHJldHVybiBwc3NoQm94ZXM7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2Vu
Yyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJl
ZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4ga2V5SURzOwogCiAgICAgYXV0byBwc3NoQm94ZXMgPSBleHRyYWN0UHNzaEJveGVz
RnJvbUNlbmMoYnVmZmVyKTsKICAgICBpZiAoIXBzc2hCb3hlcykKQEAgLTE4NSw3ICsxODUsNyBA
QCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0
cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNvbgogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0
YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0CiAg
ICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0
cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAgLTE5NSw3ICsxOTUsNyBAQCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAKLXN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXpl
V2ViTShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gQ2hl
Y2sgaWYgdGhlIGJ1ZmZlciBpcyBhIHZhbGlkIFdlYk0gaW5pdERhdGEuCiAgICAgLy8gVGhlIFdl
Yk0gaW5pdERhdGEgaXMgdGhlIENvbnRlbnRFbmNLZXlJRCwgc28gc2hvdWxkIGJlIGxlc3MgdGhh
biBrV2ViTU1heENvbnRlbnRFbmNLZXlJRFNpemUuCkBAIC0yMDUsMTAgKzIwNSwxMCBAQCBzdGF0
aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGF0aWMgc3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzV2ViTShjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzV2ViTShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBr
ZXlJRHM7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkQnVmZmVyID0gc2FuaXRp
emVXZWJNKGJ1ZmZlcik7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4g
a2V5SURzOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRCdWZm
ZXIgPSBzYW5pdGl6ZVdlYk0oYnVmZmVyKTsKICAgICBpZiAoIXNhbml0aXplZEJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMjMzLDcgKzIzMyw3IEBAIEluaXREYXRh
UmVnaXN0cnk6OkluaXREYXRhUmVnaXN0cnkoKQogCiBJbml0RGF0YVJlZ2lzdHJ5Ojp+SW5pdERh
dGFSZWdpc3RyeSgpID0gZGVmYXVsdDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFS
ZWdpc3RyeTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgYXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXREYXRhVHlwZSk7CiAgICAgaWYgKGl0ZXIg
PT0gbV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUuc2FuaXRpemVJbml0RGF0YSkKQEAgLTI0
MSw3ICsyNDEsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5p
dGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYQogICAgIHJldHVybiBpdGVyLT52
YWx1ZS5zYW5pdGl6ZUluaXREYXRhKGJ1ZmZlcik7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyhjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQor
c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gSW5pdERh
dGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGl0ZXIg
PSBtX3R5cGVzLmZpbmQoaW5pdERhdGFUeXBlKTsKICAgICBpZiAoaXRlciA9PSBtX3R5cGVzLmVu
ZCgpIHx8ICFpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaAppbmRl
eCBjZDEzODdhNmJkMDM4ZmYzNGUyY2ZiNzVmNDQzZGU3ZDk0MDMyMWIwLi43N2Q2MDRiMDhiYjdm
N2UzOGJjY2IzNTQ1YjM0YzhiMTM0MzU1ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaApAQCAtMzgsMTkg
KzM4LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElTT1Byb3RlY3Rpb25TeXN0
ZW1TcGVjaWZpY0hlYWRlckJveDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEluaXREYXRhUmVnaXN0cnkgewogcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbml0RGF0YVJlZ2lzdHJ5JiBzaGFyZWQoKTsKICAgICBm
cmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8SW5pdERhdGFSZWdpc3RyeT47CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpv
cHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzKGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+Pj4gZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0cnVjdCBJbml0RGF0YVR5cGVDYWxs
YmFja3MgewotICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlv
bjxSZWZQdHI8U2hhcmVkQnVmZmVyPihjb25zdCBTaGFyZWRCdWZmZXImKT47Ci0gICAgICAgIHVz
aW5nIEV4dHJhY3RLZXlJRHNDYWxsYmFjayA9IEZ1bmN0aW9uPHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFJlZjxTaGFyZWRCdWZmZXI+Pj4oY29uc3QgU2hhcmVkQnVmZmVyJik+OworICAgICAgICB1c2lu
ZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKKyAgICAgICAgdXNp
bmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0gRnVuY3Rpb248c3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpPjsKIAogICAgICAgICBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgc2FuaXRpemVJbml0RGF0
YTsKICAgICAgICAgRXh0cmFjdEtleUlEc0NhbGxiYWNrIGV4dHJhY3RLZXlJRHM7CkBAIC02MSw5
ICs2MSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYga2V5aWRzTmFt
ZSgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiB3ZWJtTmFtZSgpOwogCi0gICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lz
dGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVy
Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Q
cm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hlc0Zyb21D
ZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0Nl
bmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKTsKIAogcHJpdmF0ZToKICAgICBJbml0RGF0YVJlZ2lzdHJ5KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lv
bi5jcHAKaW5kZXggOGJmYjFjZTcwMWEyZjVhNjliNWI1MTk5MWFhODYzMmViYjg5MjVmOS4uMTQ3
NzZjMjAxNTFiZmVmZTM4MDc5YTMzNzMwYzg4NjYyNjhiYTQ2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNw
cApAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVl
c3QoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgcXVldWVU
YXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhp
cywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaW5pdERhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLmxlbmd0aCgpKSwgaW5pdERhdGFUeXBl
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRp
ZmllcildICgpIG11dGFibGUgewogICAgICAgICAvLyAxMC4xLiBJZiB0aGUgaW5pdCBkYXRhIGlz
IG5vdCB2YWxpZCBmb3IgaW5pdERhdGFUeXBlLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkg
Y3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIC8vIDEwLjIuIExldCBzYW5pdGl6ZWQgaW5pdCBk
YXRhIGJlIGEgdmFsaWRhdGVkIGFuZCBzYW5pdGl6ZWQgdmVyc2lvbiBvZiBpbml0IGRhdGEuCi0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZEluaXREYXRhID0gbV9pbXBsZW1l
bnRhdGlvbi0+c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKKyAgICAg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZEluaXREYXRhID0gbV9p
bXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsK
IAogICAgICAgICAvLyAxMC4zLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCByZWplY3Qg
cHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIGlmICghc2Fu
aXRpemVkSW5pdERhdGEpIHsKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lv
bjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3Qg
QnVmZgogICAgICAgICAgICAgbV9sYXRlc3REZWNyeXB0VGltZSA9IDA7CiAgICAgICAgIH0KIAot
ICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UobV9zZXNzaW9uVHlwZSwg
aW5pdERhdGFUeXBlLCBzYW5pdGl6ZWRJbml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBbdGhpcywg
d2Vha1RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92
ZShpZGVudGlmaWVyKV0gKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNz
aW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnN0YW5j
ZVNlc3Npb24tPnJlcXVlc3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUsIGluaXREYXRhVHlwZSwgc2Fu
aXRpemVkSW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1
Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIE1l
ZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJlZjxE
ZWZlcnJlZFByb21pc2U+JgogICAgIC8vIDYuIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBh
cmFsbGVsOgogICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJj
ZTo6TmV0d29ya2luZywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlc3Bv
bnNlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5sZW5n
dGgoKSksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShp
ZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDYuMS4gTGV0IHNhbml0aXplZCBy
ZXNwb25zZSBiZSBhIHZhbGlkYXRlZCBhbmQvb3Igc2FuaXRpemVkIHZlcnNpb24gb2YgcmVzcG9u
c2UgY29weS4KLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkUmVzcG9uc2Ug
PSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICAgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3BvbnNlID0gbV9pbXBs
ZW1lbnRhdGlvbi0+c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7CiAKICAgICAgICAgLy8gNi4y
LiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCBvciBpZiBzYW5pdGl6ZWQgcmVzcG9uc2Ug
aXMgZW1wdHksIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4K
ICAgICAgICAgaWYgKCFzYW5pdGl6ZWRSZXNwb25zZSB8fCBzYW5pdGl6ZWRSZXNwb25zZS0+aXNF
bXB0eSgpKSB7CkBAIC02MDEsNyArNjAxLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnJlbW92
ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIC8vIDQuMy4gTGV0IG1l
c3NhZ2UgdHlwZSBiZSBudWxsLgogCiAgICAgICAgIC8vIDQuNC4gVXNlIHRoZSBjZG0gdG8gZXhl
Y3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVt
b3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhp
cywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50
aWZpZXIpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBzdGQ6
Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lv
bjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VT
ZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgW3Ro
aXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdU
Rk1vdmUoaWRlbnRpZmllcildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYm
IGtleXMsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIG1lc3Nh
Z2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApA
QCAtNjQ5LDcgKzY0OSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUoUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIC8vIDUuIFJldHVybiBwcm9taXNlLgogfQogCi12
b2lkIE1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZSBt
ZXNzYWdlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBtZXNzYWdlKQordm9pZCBNZWRpYUtleVNl
c3Npb246OmVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG1lc3NhZ2UpCiB7CiAgICAgLy8gNi40LjEgUXVl
dWUgYSAibWVzc2FnZSIgRXZlbnQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlw
dGVkLW1lZGlhLyNxdWV1ZS1tZXNzYWdlCkBAIC03MTYsNyArNzE2LDcgQEAgdm9pZCBNZWRpYUtl
eVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
VmVjdG9yJiYgaW4KICAgICAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFLZXlTZXNzaW9uOjpzZW5k
TWVzc2FnZShDRE1NZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBt
ZXNzYWdlKQordm9pZCBNZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBl
IG1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewog
ICAgIGVucXVldWVNZXNzYWdlKG1lc3NhZ2VUeXBlLCBtZXNzYWdlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5o
CmluZGV4IDNkOTZmODgwMmU3NDc4NDFjNGVmZGE4MWRjYjk0MWVhNmU0YTc1ZTQuLjM2NWFjZTVj
MDk1ZTdkYzBjNTcxZTc2Y2NmMmMwN2FhZmM2MmJhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtNTcs
NyArNTcsNyBAQCBjbGFzcyBDRE07CiBjbGFzcyBEZWZlcnJlZFByb21pc2U7CiBjbGFzcyBNZWRp
YUtleVN0YXR1c01hcDsKIGNsYXNzIE1lZGlhS2V5czsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+
IGNsYXNzIERPTVByb21pc2VQcm94eTsKIApAQCAtODcsMjAgKzg3LDIwIEBAIHB1YmxpYzoKICAg
ICB1c2luZyBDbG9zZWRQcm9taXNlID0gRE9NUHJvbWlzZVByb3h5PElETFVuZGVmaW5lZD47CiAg
ICAgQ2xvc2VkUHJvbWlzZSYgY2xvc2VkKCkgeyByZXR1cm4gbV9jbG9zZWRQcm9taXNlLmdldCgp
OyB9CiAKLSAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBNZWRp
YUtleVN0YXR1cz4+JiBzdGF0dXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzZXM7IH0KKyAg
ICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgTWVk
aWFLZXlTdGF0dXM+PiYgc3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1c2VzOyB9CiAK
ICAgICB1bnNpZ25lZCBpbnRlcm5hbEluc3RhbmNlU2Vzc2lvbk9iamVjdFJlZkNvdW50KCkgY29u
c3QgeyByZXR1cm4gbV9pbnN0YW5jZVNlc3Npb24tPnJlZkNvdW50KCk7IH0KIAogcHJpdmF0ZToK
ICAgICBNZWRpYUtleVNlc3Npb24oRG9jdW1lbnQmLCBXZWFrUHRyPE1lZGlhS2V5cz4mJiwgTWVk
aWFLZXlTZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIFJlZjxDRE0+
JiYsIFJlZjxDRE1JbnN0YW5jZVNlc3Npb24+JiYpOwotICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2Uo
TWVkaWFLZXlNZXNzYWdlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBlbnF1
ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJik7CiAgICAgdm9pZCB1cGRhdGVFeHBpcmF0aW9uKGRvdWJsZSk7CiAgICAgdm9pZCBzZXNz
aW9uQ2xvc2VkKCk7CiAgICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25z
dDsKIAogICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAogICAgIHZvaWQgdXBkYXRlS2V5
U3RhdHVzZXMoQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3ImJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VU
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKICAgICB2
b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUGxhdGZvcm1E
aXNwbGF5SUQgZGlzcGxheUlEKCkgZmluYWw7CiAKQEAgLTE0MCwxMCArMTQwLDEwIEBAIHByaXZh
dGU6CiAgICAgTWVkaWFLZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25UeXBlOwogICAgIFJlZjxDRE0+
IG1faW1wbGVtZW50YXRpb247CiAgICAgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4gbV9pbnN0YW5j
ZVNlc3Npb247Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBtX3JlY29yZE9mS2V5VXNh
Z2U7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9yZWNvcmRPZktl
eVVzYWdlOwogICAgIGRvdWJsZSBtX2ZpcnN0RGVjcnlwdFRpbWUgeyAwIH07CiAgICAgZG91Ymxl
IG1fbGF0ZXN0RGVjcnlwdFRpbWUgeyAwIH07Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hh
cmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiBtX3N0YXR1c2VzOworICAgIFZlY3RvcjxzdGQ6
OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+IG1fc3Rh
dHVzZXM7CiAKICAgICB1c2luZyBEaXNwbGF5Q2hhbmdlZE9ic2VydmVyID0gT2JzZXJ2ZXI8dm9p
ZChQbGF0Zm9ybURpc3BsYXlJRCk+OwogICAgIERpc3BsYXlDaGFuZ2VkT2JzZXJ2ZXIgbV9kaXNw
bGF5Q2hhbmdlZE9ic2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCAwNmFmZmI1ZjJl
ZGZlMTgyOTcxOWVhMTdjMjc4ODU0YmM1YTZlNjBjLi4zOThlOGFiMWI2NTZiNDQ1OTI3YmViNmJj
NjkzZGQzOTlhNjg3YWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtNTYsNyArNTYsNyBA
QCB1bnNpZ25lZCBsb25nIE1lZGlhS2V5U3RhdHVzTWFwOjpzaXplKCkKICAgICByZXR1cm4gbV9z
ZXNzaW9uLT5zdGF0dXNlcygpLnNpemUoKTsKIH0KIAotc3RhdGljIGJvb2wga2V5SWRzTWF0Y2go
Y29uc3QgU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIpCitzdGF0aWMgYm9v
bCBrZXlJZHNNYXRjaChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZm
ZXJTb3VyY2UmIGIpCiB7CiAgICAgYXV0byBsZW5ndGggPSBhLnNpemUoKTsKICAgICBpZiAoIWxl
bmd0aCB8fCBsZW5ndGggIT0gYi5sZW5ndGgoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaAppbmRleCBjMjEx
MTEzYTJjNmRhYzc5NzkyNGE5OWQyZDJkZjk3YzJlNjVmODUwLi42MGQ2MmFhZmY4MDc0ZGFkYTZl
MzFhM2YyYjM3MGE2ZDZkMDFmNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCkBAIC0zOCw3ICszOCw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhS2V5U2Vzc2lvbjsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1l
ZGlhS2V5U3RhdHVzTWFwIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFLZXlTdGF0dXNNYXA+IHsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlzLmNwcAppbmRleCA4M2IyNGFjZWFhNWIxMjk0YmI0ZWE0MzlmYjJkNWM0ZjZjY2Q0
NzUzLi4zNjdmMzFkMTg2YjUxNjM5YTljNzQyMTNmMGNmOGU2ZjJmOGQyNmVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCkBA
IC0xNzcsNyArMTc3LDcgQEAgYm9vbCBNZWRpYUtleXM6Omhhc09wZW5TZXNzaW9ucygpIGNvbnN0
CiAgICAgICAgIH0pOwogfQogCi12b2lkIE1lZGlhS2V5czo6dW5yZXF1ZXN0ZWRJbml0aWFsaXph
dGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YSkKK3ZvaWQgTWVkaWFLZXlzOjp1bnJlcXVlc3RlZEluaXRpYWxpemF0
aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBmb3IgKGF1dG8mIGNkbUNsaWVudCA6
IG1fY2RtQ2xpZW50cykKICAgICAgICAgY2RtQ2xpZW50LmNkbUNsaWVudFVucmVxdWVzdGVkSW5p
dGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0YS5jb3B5UmVmKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlz
LmgKaW5kZXggN2I1OWEzYmM2ZDIyNTZmYzY1NmYwOGNiZjI2ODkxODUxMDk4M2EyMi4uOTFhMWEw
NzExNDMzYmUyNDdkZDJhODVjNWY0YWQwOTM4YTA5YTdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCkBAIC04Niw3ICs4Niw3IEBA
IHByb3RlY3RlZDoKICAgICBNZWRpYUtleXMoRG9jdW1lbnQmLCBib29sIHVzZURpc3RpbmN0aXZl
SWRlbnRpZmllciwgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkLCBjb25zdCBWZWN0b3I8TWVk
aWFLZXlTZXNzaW9uVHlwZT4mLCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2U+JiYpOwogCiAg
ICAgLy8gQ0RNSW5zdGFuY2VDbGllbnQKLSAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRp
b25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7
CisgICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0
cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1
cm4gbV9sb2dnZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNw
cAppbmRleCBkNjViMjdiZmU4YTFlZjIxOTkyYjllMWFkMDVhY2E1NGU3MmQ2MDVlLi5iOGYyZWMz
NzNkODczY2M5YzhhY2IzYzZlYzg0NWY2YWIwMDA5YWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yOTcsMTQgKzI5NywxNCBAQCBGZXRjaEJvZHk6
OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4gZm9ybURhdGFCb2R5
KCk7CiAKICAgICBpZiAoaXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoUEFMOjpVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgUEFM
OjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoUEFMOjpVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgUEFM
OjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChpc1VSTFNlYXJjaFBh
cmFtcygpKQotICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBB
TDo6VVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygp
LCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQ
YXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGll
cykpOwogCiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZm
ZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKKyAgICAg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihh
cnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkp
OwogICAgIGlmIChpc0FycmF5QnVmZmVyVmlldygpKQotICAgICAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1
ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRl
TGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwg
YXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IDA4OTgz
ZWMwMDQzZjZjOTlhN2ZhZWFmYzY5M2NlODI4MjNiNDAxYmMuLmJhZDFiNWVhMjNiNzcxYjM0N2Y0
YjA0YTU2NzU4ZmMwMDg4ZTEyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHkuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+
IGJvZHlBc0Zvcm1EYXRhKCkgY29uc3Q7CiAKLSAgICB1c2luZyBUYWtlbkRhdGEgPSBzdGQ6OnZh
cmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj47CisgICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0
cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CiAgICAgVGFrZW5EYXRhIHRh
a2UoKTsKIAogICAgIHZvaWQgc2V0QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+JiYgZGF0YSkgeyBt
X2RhdGEgPSBXVEZNb3ZlKGRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IDM3YjgzODZhNzhhZTg3NWRjMjU2M2Vi
Y2IyYTc4ODg1ZDMwYmFjNDQuLmMyMzFmMjA3ZGEyNWNkMmExNTg2MGQyOGRiM2NlMTdlODU3NTc3
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBl
QW5kRGF0YShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIAog
dm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4oKQogewotICAgIG1fYnVmZmVyID0gbnVsbHB0
cjsKKyAgICBtX2J1ZmZlci5yZXNldCgpOwogICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAg
ICBpZiAobV9zaW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFjaygpOwpAQCAtMjY2
LDE2ICsyNjYsMTggQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UsIGNvbnN0IFN0cmluZyYgY28KIHsKICAgICBpZiAoc3RyZWFt
KSB7CiAgICAgICAgIEFTU0VSVCghbV9zaW5rKTsKLSAgICAgICAgbV9zaW5rID0gUmVhZGFibGVT
dHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSksIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCB0eXBlID0gbV90eXBlLCBjb250ZW50
VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIG1fc2luayA9IFJlYWRhYmxl
U3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCBkYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpLCB0eXBlID0gbV90eXBlLCBjb250ZW50
VHlwZV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhh
c0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkp
Ci0gICAgICAgICAgICAgICAgZGF0YS0+YXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXpl
KCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFu
ZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBkYXRhLmFw
cGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YS50YWtlQXNDb250aWd1b3VzKCk7Cisg
ICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0
eXBlLCBjb250ZW50VHlwZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7
CiAgICAgICAgIHJldHVybjsKQEAgLTMyNCwyNiArMzI2LDI0IEBAIHZvaWQgRmV0Y2hCb2R5Q29u
c3VtZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBzaXplKQogICAgICAg
ICBtX3NvdXJjZS0+ZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEsIHNpemUpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fYnVmZmVyKSB7Ci0gICAgICAgIG1f
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgbV9idWZmZXItPmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICBtX2J1ZmZl
ci5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9k
eUNvbnN1bWVyOjp0YWtlRGF0YSgpCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUo
bV9idWZmZXIpOworICAgIG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsKIH0KIAotUmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCitS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRh
KCkKIHsKICAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZShudWxscHRyLCAwKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IG1fYnVmZmVyLnRha2UoKTsKK30KIAotICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBtX2J1ZmZlci0+
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgcmV0
dXJuIGFycmF5QnVmZmVyOworUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IEZldGNoQm9keUNvbnN1
bWVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG1fYnVmZmVyLnRha2VBc0Fy
cmF5QnVmZmVyKCk7CiB9CiAKIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxv
YihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAtMzUxLDkgKzM1MSw3IEBAIFJl
ZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBCbG9iOjpj
cmVhdGUoY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50
VHlwZShtX2NvbnRlbnRUeXBlKSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2Uo
bV9idWZmZXIsIG51bGxwdHIpOwotICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci0+ZXh0cmFjdERhdGEo
KTsKLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIFdURk1vdmUoZGF0YSksIG1fY29u
dGVudFR5cGUpOworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgbV9idWZmZXIudGFr
ZSgpLT5leHRyYWN0RGF0YSgpLCBtX2NvbnRlbnRUeXBlKTsKIH0KIAogU3RyaW5nIEZldGNoQm9k
eUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2Miw4ICszNjAsOCBAQCBTdHJpbmcgRmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRl
eHRGcm9tVVRGOChtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX2J1ZmZlci0+
c2l6ZSgpKTsKLSAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgYXV0byBidWZmZXIgPSBtX2J1
ZmZlci50YWtlQXNDb250aWd1b3VzKCk7CisgICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVj
b2Rlcjo6dGV4dEZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAg
cmV0dXJuIHRleHQ7CiB9CiAKQEAgLTM4MywxMCArMzgxLDggQEAgdm9pZCBGZXRjaEJvZHlDb25z
dW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXRT
b3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAgbV9zb3VyY2UgPSBX
VEZNb3ZlKHNvdXJjZSk7Ci0gICAgaWYgKG1fYnVmZmVyKSB7Ci0gICAgICAgIG1fc291cmNlLT5l
bnF1ZXVlKG1fYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKLSAgICAgICAgbV9idWZm
ZXIgPSBudWxscHRyOwotICAgIH0KKyAgICBpZiAobV9idWZmZXIpCisgICAgICAgIG1fc291cmNl
LT5lbnF1ZXVlKG1fYnVmZmVyLnRha2VBc0FycmF5QnVmZmVyKCkpOwogfQogCiB2b2lkIEZldGNo
Qm9keUNvbnN1bWVyOjpsb2FkaW5nRmFpbGVkKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCmlu
ZGV4IDJiMDU2ZjEyNjQzYmE5NjdmZTQxYTAxNTEzYTg5YjczNjI2NDJkNGMuLjg3MWQyYzA4NjMz
MWE5ODI5NGExNjZhNGI0MmUzMTg0ZTAzNzc3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTUwLDEwICs1MCwxMCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQpOwogCiAg
ICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGNvbnN0
IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9Ci0g
ICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkgeyBtX2J1ZmZlciA9IFdU
Rk1vdmUoZGF0YSk7IH0KKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KKyAgICB2b2lkIHNldERhdGEo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gdGFrZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZURh
dGEoKTsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsK
ICAgICBTdHJpbmcgdGFrZUFzVGV4dCgpOwogCkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAK
ICAgICBUeXBlIG1fdHlwZTsKICAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVy
OwogICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IG1fY29uc3VtZVByb21pc2U7CiAgICAgUmVm
UHRyPFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rPiBtX3Npbms7CiAgICAgUmVmUHRy
PEZldGNoQm9keVNvdXJjZT4gbV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4IGZjNTVjYzdkODNkOGJjMTFmMDg1NGRjM2NmZDg1MDk3
YTMxZjEwZjYuLjAzZjg5YjYxY2E1ZjdjNzE3NmI5ZDg4Y2QxMzY2MGU4NmI3YTI1NDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCkBAIC0xMzUsNyAr
MTM1LDcgQEAgdm9pZCBGZXRjaExvYWRlcjo6c3RvcCgpCiAgICAgICAgIG1fbG9hZGVyLT5jYW5j
ZWwoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hMb2FkZXI6OnN0YXJ0U3RyZWFt
aW5nKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaExvYWRlcjo6c3RhcnRT
dHJlYW1pbmcoKQogewogICAgIEFTU0VSVChtX2NvbnN1bWVyKTsKICAgICBhdXRvIGZpcnN0Q2h1
bmsgPSBtX2NvbnN1bWVyLT50YWtlRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlci5oCmluZGV4IDJmOTBmMGVjM2ZmOTA1YTI2MjMxYzg0YzcyYTdhMTg2Y2Q0
YmZlODMuLjQ2MTJkMGUwZTNhN2VmZTMwNjAzOTZiMGQ3NWEyZmEzYmM0ZWRkYWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKQEAgLTM5LDE0ICszOSwxNCBA
QCBjbGFzcyBGZXRjaEJvZHlDb25zdW1lcjsKIGNsYXNzIEZldGNoTG9hZGVyQ2xpZW50OwogY2xh
c3MgRmV0Y2hSZXF1ZXN0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEZldGNo
TG9hZGVyIGZpbmFsIDogcHVibGljIFRocmVhZGFibGVMb2FkZXJDbGllbnQgewogcHVibGljOgog
ICAgIEZldGNoTG9hZGVyKEZldGNoTG9hZGVyQ2xpZW50JiwgRmV0Y2hCb2R5Q29uc3VtZXIqKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB+RmV0Y2hMb2FkZXIoKTsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CiAKICAgICB2b2lkIHN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBjb25zdCBGZXRjaFJlcXVlc3QmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHN0
YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBCbG9iJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCBiOTM0MzkyYTkwM2Q0
YTVmZDFjNTRhZTgxNDhiMmU2ZTc5ZTc2YzZiLi5lMzhhODNhZGU3ZDZlMGFhZjcwY2ViOWM1YWE4
ZmU4YWI0OTQzZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5jcHAKQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OnNldEJv
ZHlEYXRhKFJlc3BvbnNlRGF0YSYmIGRhdGEsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbgog
ICAgICAgICAgICAgICAgIHNldEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5zZXRBc0Zv
cm1EYXRhKFdURk1vdmUoZm9ybURhdGEpKTsKICAgICAgICAgfSwKLSAgICAgICAgW3RoaXNdKFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgICAgIFt0aGlzXShSZWY8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgICAgICBpZiAoaXNCb2R5TnVsbCgpKQog
ICAgICAgICAgICAgICAgIHNldEJvZHkoeyB9KTsKICAgICAgICAgICAgIGJvZHkoKS5jb25zdW1l
cigpLnNldERhdGEoV1RGTW92ZShidWZmZXIpKTsKQEAgLTUwNCw3ICs1MDQsNyBAQCB2b2lkIEZl
dGNoUmVzcG9uc2U6OmZlZWRTdHJlYW0oKQogICAgIGNsb3NlU3RyZWFtKCk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0U3RyZWFtaW5n
KCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaFJlc3BvbnNlOjpCb2R5TG9h
ZGVyOjpzdGFydFN0cmVhbWluZygpCiB7CiAgICAgQVNTRVJUKG1fbG9hZGVyKTsKICAgICByZXR1
cm4gbV9sb2FkZXItPnN0YXJ0U3RyZWFtaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM3NDhjOGY1OTI3MjkzMGJiYzJkMTY2NmM2YWVi
NTQ3YTFiNWVmMDYuLmNmNzg2MzIzOWZkOTQ2ZWUwZThkODhlYWVhNzJmZTk4OWVlZDMxNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC04NSw3
ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJlYW0oKSBmaW5hbDsKICAgICB2b2lk
IGNhbmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50
PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+OworICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJf
dCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwogICAgIFJlc3BvbnNlRGF0YSBj
b25zdW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYsIHVpbnQ2
NF90IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCkBAIC0xMzQsNyArMTM0LDcgQEAgcHJpdmF0ZToK
IAogICAgICAgICB2b2lkIGNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1lRGF0YUJ5Q2h1bmtDYWxs
YmFjayYmKTsKIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzdGFydFN0cmVhbWluZygp
OworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc3RhcnRTdHJlYW1pbmco
KTsKICAgICAgICAgTm90aWZpY2F0aW9uQ2FsbGJhY2sgdGFrZU5vdGlmaWNhdGlvbkNhbGxiYWNr
KCkgeyByZXR1cm4gV1RGTW92ZShtX3Jlc3BvbnNlQ2FsbGJhY2spOyB9CiAgICAgICAgIENvbnN1
bWVEYXRhQnlDaHVua0NhbGxiYWNrIHRha2VDb25zdW1lRGF0YUNhbGxiYWNrKCkgeyByZXR1cm4g
V1RGTW92ZShtX2NvbnN1bWVEYXRhQ2FsbGJhY2spOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKaW5kZXggNjEzN2MyY2Y2ZmY0N2EzNjg0
MGYxMWI5NjZiOWU1MjU4NzFkODE1Zi4uMWE2NmJmODE4MzIwZTk1NjA3ZDYxNWYxYTA4MmE4Mjc2
ZWIyYTM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0LmgKQEAgLTM4LDcgKzM4LDcgQEAgZW51bSBjbGFzcyBDcmVhdGVOZXdHcm91cEZvckhp
Z2hsaWdodCA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIEhpZ2hsaWdodFJlcXVlc3RP
cmlnaW5hdGVkSW5BcHAgOiBib29sIHsgTm8sIFllcyB9OwogCiBzdHJ1Y3QgQXBwSGlnaGxpZ2h0
IHsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBoaWdobGlnaHQ7CisgICAgUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGhpZ2hsaWdodDsKICAgICBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gdGV4dDsKICAgICBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBpc05ld0dy
b3VwOwogICAgIEhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgcmVxdWVzdE9yaWdpbmF0
ZWRJbkFwcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IDgzYjk1ZDdjZjAwN2FhNTRmYmZlMjM0
YjdkOGIxZWI4ZTE5OTYzZTQuLjVlODBmMGMwNzJkNDlhM2VmNzk2OTU5MzAyYzQ0NTZjZDJhYmRl
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQv
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNvbnN0ZXhwciB1aW50NjRfdCBoaWdobGlnaHRGaWxlU2lnbmF0dXJlID0gMHg0
MTQxNTA0ODMyMzAzMjMxOyAvLyBGaWxlIFNpZ25hdHVyZSAgKEEpcHBsZShBUClwbGljYXRpb24o
SClpZ2hsaWdodHMoMjAyMSkKIAotc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+
IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdl
RGF0YTo6Y3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBh
dXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7CkBAIC01Myw3ICs1Myw3
IEBAIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5n
ZURhdGE6OmNyZWF0ZShjb25zdCBTaGFyZWRCCiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLVJlZjxT
aGFyZWRCdWZmZXI+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6dG9TaGFyZWRCdWZmZXIoKSBjb25z
dAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6dG9T
aGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgZW5j
b2RlcjsKICAgICBlbmNvZGVyIDw8ICp0aGlzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaAppbmRleCBjZjYzODFh
Y2ZiMGE1MjExYjQzNTA4YjdiNTE3ZDZkYjJmNmZjNzQzLi5iNWRhZjYwMjUzOThhM2Y3ZTZmMWQz
N2FiZWNlODQ0ZDRmMWM2NTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaApAQCAtMzMsMTIgKzMzLDEyIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKIAotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3Mg
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhIHsKIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJh
bmdlRGF0YT4gY3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gY3JlYXRlKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBzdHJ1Y3QgTm9kZVBhdGhDb21wb25lbnQg
ewogICAgICAgICBTdHJpbmcgaWRlbnRpZmllcjsKICAgICAgICAgU3RyaW5nIG5vZGVOYW1lOwpA
QCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBkZWNvZGUoRGVjb2Rl
ciYpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdG9TaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAg
ICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdG9TaGFyZWRCdWZmZXIoKSBjb25zdDsKIAog
cHJpdmF0ZToKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcAppbmRleCBk
YzM5YTBmMGQxOGZmZmNhN2RmYjQ2NTIxOWNkNjEyYTlmNzM4ZjhmLi5lNWRlODQ5NGYzNTA0NTM1
OTRiMmYyZTg4YzNkZGEzM2ZhOWFmNzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcApAQCAtMjM3LDcgKzIz
Nyw3IEBAIHZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6c3RvcmVBcHBIaWdobGlnaHQoUmVmPFN0
YXRpY1JhbmdlPiYmIHJhbmdlKQogICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCkuc3Rv
cmVBcHBIaWdobGlnaHQoV1RGTW92ZShoaWdobGlnaHQpKTsKIH0KIAotdm9pZCBBcHBIaWdobGln
aHRTdG9yYWdlOjpyZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIFNjcm9sbFRvSGlnaGxpZ2h0IHNjcm9sbCkKK3ZvaWQgQXBwSGlnaGxpZ2h0
U3RvcmFnZTo6cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgU2Nyb2xsVG9IaWdobGlnaHQgc2Nyb2xsKQogewogICAgIGF1
dG8gYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhID0gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUo
YnVmZmVyKTsKICAgICBpZiAoIWFwcEhpZ2hsaWdodFJhbmdlRGF0YSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaAppbmRl
eCBiMTUyZjc2ZWQ0MjQwODkyZWE3ZGUyMWUyY2IwNmQ0NzJkODczMzYwLi5lMjc2NjMzYjQ4NGY4
MTA5NGFkZWNlNDVmNjRhYmJlZDE3ODEyNTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCkBAIC0zOSw3ICszOSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAKIGNs
YXNzIERvY3VtZW50OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFN0YXRpY1JhbmdlOwogY2xhc3MgSGlnaGxpZ2h0OwogCkBAIC01NCw3
ICs1NCw3IEBAIHB1YmxpYzoKICAgICB+QXBwSGlnaGxpZ2h0U3RvcmFnZSgpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzdG9yZUFwcEhpZ2hsaWdodChSZWY8U3RhdGljUmFuZ2U+JiYpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJl
ZjxTaGFyZWRCdWZmZXI+JiYsIFNjcm9sbFRvSGlnaGxpZ2h0KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgU2Nyb2xsVG9IaWdobGlnaHQpOwogICAgIHZvaWQgcmVzdG9yZVVucmVzdG9y
ZWRBcHBIaWdobGlnaHRzKCk7CiAgICAgTW9ub3RvbmljVGltZSBsYXN0UmFuZ2VTZWFyY2hUaW1l
KCkgY29uc3QgeyByZXR1cm4gbV90aW1lQXRMYXN0UmFuZ2VTZWFyY2g7IH0KICAgICB2b2lkIHJl
c2V0TGFzdFJhbmdlU2VhcmNoVGltZSgpIHsgbV90aW1lQXRMYXN0UmFuZ2VTZWFyY2ggPSBNb25v
dG9uaWNUaW1lOjpub3coKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IGExYzkzMTJk
NDVlYmJmY2U5ZjMyZTZjYzFhMWEyZTg0ZGRjYTdjNzIuLjJhMmMxZmMzMjk1ODA1ZDUyZmQ1NmFm
MzBiNDU1YWUyY2NjYzQ4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIEtleVBhdGhUeXBlIHsgTnVs
bCwgU3RyaW5nLCBBcnJheSB9OwogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2Vy
aWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRo
KQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9w
dGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQogewogICAgIGF1dG8gZW5jb2RlciA9IEtleWVk
RW5jb2Rlcjo6ZW5jb2RlcigpOwogCkBAIC0yODIsMTMgKzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBl
bmNvZGVLZXkoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAg
ICAgfQogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5
RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxp
emVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKICAgICBWZWN0b3I8dWludDhf
dD4gZGF0YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7CiAKICAgICBlbmNvZGVL
ZXkoZGF0YSwga2V5KTsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpKTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZUtleShj
b25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJREJLZXlEYXRhJiByZXN1
bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VyaWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcmlhbGl6YXRpb24uaAppbmRleCBhYWZkYjM3MDFmMGVmNDQ4ZDZiOGFiNTEwMTE4
NWM0YjM0ZmZhYThhLi42NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0MDE3MDY3YTRmNDI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
aWFsaXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJpYWxpemF0aW9uLmgKQEAgLTMyLDEwICszMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIElEQktleURhdGE7CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mKTsK
K1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRp
b25hbDxJREJLZXlQYXRoPiYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWlu
dDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRo
PiYpOwogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5RGF0
YShjb25zdCBJREJLZXlEYXRhJik7CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJL
ZXlEYXRhKGNvbnN0IElEQktleURhdGEmKTsKIGJvb2wgZGVzZXJpYWxpemVJREJLZXlEYXRhKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIElEQktleURhdGEmKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDBhNDY5YmQwYmQxZjM4ZGNi
OTZiMzlkOGMzMDAwYWY3M2QxMmFiNTkuLmM5ZDZkYTZiZGQ5ZjkzOTUwMWY0ZjQyMzJiNGM3ODM3
ZDg0MGRhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBNZWRpYVJlY29yZGVyOjpzdGFydFJlY29yZGluZyhzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiB0aW1lU2xpYwogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmPEJsb2JF
dmVudD4gY3JlYXRlRGF0YUF2YWlsYWJsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBkb3VibGUgdGltZUNvZGUpCitzdGF0aWMgaW5saW5lIFJlZjxCbG9iRXZlbnQ+IGNyZWF0
ZURhdGFBdmFpbGFibGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGRvdWJsZSB0aW1lQ29kZSkKIHsKICAgICBhdXRvIGJsb2IgPSBidWZmZXIgPyBCbG9iOjpj
cmVhdGUoY29udGV4dCwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCBtaW1lVHlwZSkgOiBCbG9iOjpj
cmVhdGUoY29udGV4dCk7CiAgICAgcmV0dXJuIEJsb2JFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5kYXRhYXZhaWxhYmxlRXZlbnQsIEJsb2JFdmVudDo6SW5pdCB7IHsgZmFsc2UsIGZhbHNlLCBm
YWxzZSB9LCBXVEZNb3ZlKGJsb2IpLCB0aW1lQ29kZSB9LCBCbG9iRXZlbnQ6OklzVHJ1c3RlZDo6
WWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9N
ZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlci5oCmluZGV4IDc3MTJiNDQ1MjgzNjdkOGMyNzI1MDJhZGJhYWNhYWY5Nzg4Y2Jk
YjAuLjFlOWI3NGFiMTdlMzEwOGRiNDIwOWI5YjRmMDIxNGRhMTFhYzZlMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaApA
QCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaEVycm9yKEV4Y2Vw
dGlvbiYmKTsKIAogICAgIGVudW0gY2xhc3MgVGFrZVByaXZhdGVSZWNvcmRlciB7IE5vLCBZZXMg
fTsKLSAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT47CisgICAgdXNp
bmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPjsKICAgICB2b2lk
IGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmLCBUYWtlUHJpdmF0ZVJlY29yZGVyKTsKIAog
ICAgIC8vIE1lZGlhU3RyZWFtOjpPYnNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAppbmRleCAzZjRjOWJjZDEzM2Fj
MjlmM2Y3ZGRlMTk5NDc4ZTM5MjU3ZDVlNjZiLi44NzRhYTdmMGIxOGYwZWU3NTg4MGJhNWY1ZWY2
N2Q0N2JmYzJiMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vz
c2lvbi9NZWRpYU1ldGFkYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcApAQCAtNzcsNyArNzcsNyBAQCB2b2lkIEFydHdvcmtJ
bWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25z
dCBOZXR3b3JrTAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIFNhbml0aXplIHRoZSBp
bWFnZSBieSBkZWNvZGluZyBpdCBpbnRvIGEgQml0bWFwSW1hZ2UuCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEo
KTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZSA9
IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBhdXRvIGJpdG1hcEltYWdlID0g
Qml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGJpdG1hcEltYWdlLT5zZXREYXRhKFdURk1vdmUo
YnVmZmVyVG9TYW5pdGl6ZSksIHRydWUpOwogICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VC
dWZmZXIuY3BwCmluZGV4IDJiM2NkZTM2MDgyNDcxYzExYzg3ZmNmNjFjYzgxY2MzNjBjMzlkOTAu
LmQzNzhhZmM2ZjhhMWI1N2EwMzAyZTJjODY4YjI0MGEyMDk3ZmU0YzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKQEAgLTUz
MCw3ICs1MzAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCgp
CiAgICAgLy8gaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL3RpcC9t
ZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLmh0bWwjc291cmNlYnVmZmVyLXNlZ21lbnQtcGFyc2Vy
LWxvb3AKICAgICAvLyBXaGVuIHRoZSBzZWdtZW50IHBhcnNlciBsb29wIGFsZ29yaXRobSBpcyBp
bnZva2VkLCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGFwcGVuZERhdGEgPSBXVEZNb3ZlKG1fcGVuZGluZ0FwcGVuZERhdGEpOworICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBhcHBlbmREYXRhID0gV1RGTW92ZShtX3BlbmRpbmdB
cHBlbmREYXRhKTsKICAgICAvLyAxLiBMb29wIFRvcDogSWYgdGhlIGlucHV0IGJ1ZmZlciBpcyBl
bXB0eSwgdGhlbiBqdW1wIHRvIHRoZSBuZWVkIG1vcmUgZGF0YSBzdGVwIGJlbG93LgogICAgIGlm
ICghYXBwZW5kRGF0YSB8fCAhYXBwZW5kRGF0YS0+c2l6ZSgpKSB7CiAgICAgICAgIHNvdXJjZUJ1
ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2NlZWRlZCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIu
aAppbmRleCA1MjBjMDc3NTY5NmEyZjBlMmU3MzAwNzM1ZThjOTc3NDk1ZjFhNjE0Li5kNGM4NTc5
YzBiYmQ0NDNhNTEyZmE5ZjY4YzQyN2VjMDQ4ODVkMGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKQEAgLTIyMiw3ICsyMjIsNyBA
QCBwcml2YXRlOgogCiAgICAgV1RGOjpPYnNlcnZlcjx2b2lkKigpPiBtX29wYXF1ZVJvb3RQcm92
aWRlcjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGVuZGluZ0FwcGVuZERhdGE7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fcGVuZGluZ0FwcGVuZERhdGE7CiAg
ICAgVGltZXIgbV9hcHBlbmRCdWZmZXJUaW1lcjsKIAogICAgIFJlZlB0cjxWaWRlb1RyYWNrTGlz
dD4gbV92aWRlb1RyYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCmluZGV4IGY1
ODI3ZGY5Mzc5NDkzZDI4MTI3MDE3N2NjZmJjYTA1NTE1MzIzMWYuLjczOTQyYTgzNTkzMWE5ZDI4
NGM2YTQ1MWJiOGRiZmI1NzY1Y2FkYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIu
aApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSVENEYXRhQ2hh
bm5lbEhhbmRsZXJDbGllbnQ7CiBjbGFzcyBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXJDb25u
ZWN0aW9uOwogY2xhc3MgUlRDRXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIg
ZmluYWwgOiBwdWJsaWMgUlRDRGF0YUNoYW5uZWxIYW5kbGVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAKICAgICBzdHJ1Y3QgTWVzc2FnZSB7
CiAgICAgICAgIGJvb2wgaXNSYXcgeyBmYWxzZSB9OwotICAgICAgICBSZWY8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAg
ICAgfTsKICAgICBWZWN0b3I8TWVzc2FnZT4gbV9wZW5kaW5nTWVzc2FnZXM7CiAgICAgYm9vbCBt
X2lzUGVuZGluZ0Nsb3NlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IGU3OWViZGJhYzQwODNlOTQ1NGM2OWQxOTk2
ZTZmZDJkOGM3Mjk4MTkuLjNjZWVkMGEwMTFlN2I1NDZmYWRkZjQ4YmJkYTIxMWRmZGQ1MjRjNTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNw
cApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlcjo6c2V0
Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50LAogICAgIG1fY29udGV4
dElkZW50aWZpZXIgPSBjb250ZXh0SWRlbnRpZmllcjsKIAogICAgIGZvciAoYXV0byYgbWVzc2Fn
ZSA6IG1fYnVmZmVyZWRNZXNzYWdlcykgewotICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBbJl0o
UmVmPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKKyAgICAgICAgc3dpdGNoT24obWVzc2FnZSwgWyZd
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgZGF0YSkgewogICAgICAgICAgICAgY2xpZW50
LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKICAgICAgICAgfSwgWyZdKFN0cmluZyYgdGV4dCkgewogICAgICAgICAgICAgY2xp
ZW50LmRpZFJlY2VpdmVTdHJpbmdEYXRhKHRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAppbmRleCA0MWY5NTI4MjFlNjIwMDkzZjhlZWZlMzJj
NWVkNGFlMGY1ZTU0MTk3Li4xMWJkNDVkZTkxNTU3NzlmZmM5ZWZiMDNlOTU1MjhmMDVlNjRkNzQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaApA
QCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogICAgICAgICBSVENEYXRhQ2hhbm5lbFN0YXRlIHN0
YXRlOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPHdlYnJ0Yzo6UlRDRXJyb3I+IGVycm9yOwogICAg
IH07Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxTdGF0ZUNoYW5nZSwgU3RyaW5n
LCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxT
dGF0ZUNoYW5nZSwgU3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAgIHVz
aW5nIFBlbmRpbmdNZXNzYWdlcyA9IFZlY3RvcjxNZXNzYWdlPjsKICAgICB2b2lkIHN0b3JlTWVz
c2FnZShQZW5kaW5nTWVzc2FnZXMmLCBjb25zdCB3ZWJydGM6OkRhdGFCdWZmZXImKTsKICAgICB2
b2lkIHByb2Nlc3NNZXNzYWdlKGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQuY3BwCmluZGV4IDc1ZGVhZDNiOTYwYmE5YmM1MmFjYzcyMWU4YTkxY2I4NDIwYTY2ZmEuLjI3
YTZkNzAzMzRjYTMyMDZhOTRlOTE5OTQzMzYzN2M0YTMwNTJlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5j
cHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVS
TChjb25zdCBVUkwmIHVybCkKIAogICAgIG1fc291cmNlVVJMID0gdXJsOwogCi0gICAgbV9kYXRh
ID0gbnVsbHB0cjsKKyAgICBtX2RhdGEucmVzZXQoKTsKICAgICBtX2RhdGFDb21wbGV0ZSA9IGZh
bHNlOwogCiAgICAgaWYgKG1fcmVzb3VyY2UpIHsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIEhU
TUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAg
bV9kYXRhLmVtcHR5KCk7CiAKICAgICBtX3Jlc291cmNlID0gcmVzb3VyY2UudmFsdWUoKTsKICAg
ICBtX3Jlc291cmNlLT5hZGRDbGllbnQoKnRoaXMpOwpAQCAtMTgwLDggKzE4MCw3IEBAIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVuZGVyU3R5bGUmJiBzCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVu
Z3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291
cmNlKTsKLSAgICBBU1NFUlQobV9kYXRhKTsKLSAgICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRh
TGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIEhU
TUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwg
Y29uc3QgTmV0d29ya0xvYQogICAgIH07CiAKICAgICBpZiAocmVzb3VyY2UubG9hZEZhaWxlZE9y
Q2FuY2VsZWQoKSkgewotICAgICAgICBtX2RhdGEgPSBudWxscHRyOworICAgICAgICBtX2RhdGEu
cmVzZXQoKTsKIAogICAgICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRVcGRhdGVSZW5k
ZXJlcigpOwogCkBAIC0yMDQsNyArMjAzLDcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2EKICAg
ICB9CiAKICAgICBtX2RhdGFDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9tb2RlbCA9IE1vZGVsOjpj
cmVhdGUobV9kYXRhLnJlbGVhc2VOb25OdWxsKCktPm1ha2VDb250aWd1b3VzKCkuZ2V0KCksIHJl
c291cmNlLm1pbWVUeXBlKCksIHJlc291cmNlLnVybCgpKTsKKyAgICBtX21vZGVsID0gTW9kZWw6
OmNyZWF0ZShtX2RhdGEudGFrZUFzQ29udGlndW91cygpLmdldCgpLCByZXNvdXJjZS5taW1lVHlw
ZSgpLCByZXNvdXJjZS51cmwoKSk7CiAKICAgICBpbnZhbGlkYXRlUmVzb3VyY2VIYW5kbGVBbmRV
cGRhdGVSZW5kZXJlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCAwNWExY2RhYTNlMTQ4NzdhMGFl
NDY1YjYzNDlhYTViYmIxYWYyYzgyLi5jZTAwOWQ0ZTVlZGMzMDk3NDVlMDI3YjA2MzJiZDFlNmU4
NTgwM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogCiAg
ICAgVVJMIG1fc291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jl
c291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKICAgICBSZWZQdHI8TW9kZWw+IG1fbW9kZWw7
CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAgICAgYm9vbCBt
X2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKaW5kZXggMGI4OThmNmFkYjU3ZWIyNWRjNDkz
N2Q4MWZmNWQxNGQ1Mjk3NmM4NC4uZDUxNzNmYmY4YjQwMzQxYzVjZjhkOGE0ZjU1ZWVhYzhmZjgz
OGEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtU2luay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbVNpbmsuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFtOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUmVhZGFibGVTdHJl
YW1TaW5rIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1TaW5rPiB7CiBwdWJsaWM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAK
aW5kZXggODUxNDdjMDk2MWM5OTczMTYzMWYwZWRmYjllZmU3NGU1YzM2Y2FjYi4uNTI1MTBjMzA4
MThmMGNhOTE2YTg4NDM3N2QyMjRhMWFiYTc5NWI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBAIHN0
YXRpYyBKU0M6OkpTUHJvbWlzZSogaGFuZGxlUmVzcG9uc2VPblN0cmVhbWluZ0FjdGlvbihKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IEZvcm1EYXRh
IGxvYWRpbmcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjEyNDgKICAgICAgICAgY29tcGlsZXItPmZhaWwoZ2xvYmFsT2JqZWN0LCBjcmVhdGVE
T01FeGNlcHRpb24oKmdsb2JhbE9iamVjdCwgRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3Is
ICJOb3QgaW1wbGVtZW50ZWQiX3MgIH0pKTsKLSAgICB9LCBbJl0oUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgewogICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFsaXplKGdsb2JhbE9iamVjdCk7CiAgICAg
fSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKaW5kZXggYjkxOGYzMTQxYWYy
ZjUyMTY0MjY4OThmYWVhODRmNGIwMmIxZTI3ZS4uYjhiNzc4NWY5MWQwNjhjMmE0NmNlYjFkNjU5
NzU4ZmNmOGI2OWQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6
CiAgICAgfQogCiAgICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0QnVmZmVyOwotICAgIG11dGFibGUg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udGlndW91c0J1ZmZlcjsKKyAgICBt
dXRhYmxlIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udGlndW91c0J1ZmZlcjsKICAgICBtdXRh
YmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAgICBtdXRhYmxlIFN0cmluZyBtX2Nh
Y2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9jb250
YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgKaW5kZXggN2U0OWE5ZTczMjI2YjY1Y2MyOGJmNTk0ODEzYjBmODNi
MjY5ZDIyYi4uZWYzN2YxZDBjYTQ2MmJiOWI3YzliNmE1NWQxOGViYjRjMTE4MWE3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgK
QEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgRGV0YWNoZWRPZmZzY3JlZW5DYW52YXM7CiBjbGFzcyBJ
REJWYWx1ZTsKIGNsYXNzIE1lc3NhZ2VQb3J0OwogY2xhc3MgSW1hZ2VCaXRtYXBCYWNraW5nOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGVudW0g
Y2xhc3MgU2VyaWFsaXphdGlvblJldHVybkNvZGU7CiAKIGVudW0gY2xhc3MgU2VyaWFsaXphdGlv
bkVycm9yTW9kZSB7IE5vblRocm93aW5nLCBUaHJvd2luZyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggM2M1ZWE5Yjg5YTljOWU5MDM3MGI5OGRmNTI4NTYz
MDY0OTkwMDdkOS4uYWViNGI2Y2M1MGExMjZjOTgzMGQ2MDZhYmIwYzNhOGM2OWE5YzMxZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCkBAIC0xNjcsNyArMTY3LDcg
QEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAg
ICAgICAgICAgICAgQVNTRVJUKCFtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAg
ICAgICAgICAgICAgIFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVudCA9IGRvd25jYXN0PFNWR0Zv
bnRFbGVtZW50PigqbV9zdmdGb250RmFjZUVsZW1lbnQtPnBhcmVudE5vZGUoKSk7CiAgICAgICAg
ICAgICAgICAgaWYgKGF1dG8gb3RmRm9udCA9IGNvbnZlcnRTVkdUb09URkZvbnQoZm9udEVsZW1l
bnQpKQotICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90ZkZvbnQudmFsdWUoKSkpOworICAgICAg
ICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ2VuZXJh
dGVkT1RGQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5Eb2N1bWVudEN1c3RvbVBs
YXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKm1fZ2VuZXJhdGVkT1RG
QnVmZmVyLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNf
Y2FzdDxib29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEpOwpAQCAtMTc2LDcgKzE3
Niw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQog
ICAgICAgICB9IGVsc2UgaWYgKG1faW1tZWRpYXRlU291cmNlKSB7CiAgICAgICAgICAgICBBU1NF
UlQoIW1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgICAgICBib29s
IHdyYXBwaW5nOwotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1faW1tZWRpYXRlU291cmNlLT5i
YXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAg
ICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1tZWRpYXRlU291
cmNlLT5ieXRlTGVuZ3RoKCkpOwogICAgICAgICAgICAgbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoYnVmZmVyLmdldCgp
LCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0
PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7CiAgICAgICAgIH0gZWxz
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCmluZGV4IDZhODJjZjFlM2Rj
OTE1OTc4NTMzNjViZDMxZTM2MjMyNzg2YTA4ODIuLjEwOGU2Yzg3NjdkMGQyZmRhY2JlNjUwNGVi
YzUwNzBlODgyYmU2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCkBA
IC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTRm9udEZhY2U7
CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwor
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGb250OwogY2xhc3Mg
Rm9udENyZWF0aW9uQ29udGV4dDsKQEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0ZToKICAgICBXZWFr
UHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7IC8vIEZvciByZW1vdGUgZm9udHMs
IHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRMb2FkUmVx
dWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxzbyBmb3IgcmVtb3RlIGZvbnRzLCBhIHBvaW50ZXIg
dG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9n
ZW5lcmF0ZWRPVEZCdWZmZXI7CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiBtX2lt
bWVkaWF0ZVNvdXJjZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRh
VHJhbnNmZXIuY3BwCmluZGV4IGY1YmYyYjcyNmU2YWU5Njg5MzUzYzBhN2UwOGI0NWVmZGE1ZDkw
NGIuLjFkZWFjNGY0MWNmNDlmMWY4ODJkY2NlZmQ0OGNmNmE5NzMyZjNlZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC00MDIsNyArNDAyLDcgQEAgc3RydWN0IFBhc3RlYm9h
cmRGaWxlVHlwZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICAgICAg
dHlwZXMuYWRkKEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShmaWxlbmFtZSkpOwogICAgIH0KIAot
ICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKQorICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCiAgICAgewog
ICAgICAgICB0eXBlcy5hZGQodHlwZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CmluZGV4IGNmMzJhYmMxODI3ZmNlYjU0YWQ1ZWEwMWJhMDJlYjAxZjE3NGY3MDQuLjQwYzc4NGMz
ZTM4YjhkYTg5MjEyYmI4OTgwMmRjYzkyZTZiODNhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKQEAgLTQxNTksNyArNDE1OSw3IEBAIFByb21pc2VkQXR0YWNobWVudEluZm8gRWRpdG9y
Ojpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIHJldHVy
biB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVj
dG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChlbGVtZW50
LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhKTsKICNlbmRpZgpAQCAtNDE2Nyw3ICs0
MTY3LDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6OnByb21pc2VkQXR0YWNobWVu
dEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4geyBhdHRhY2htZW50LT51bmlxdWVJ
ZGVudGlmaWVyKCksIFdURk1vdmUoYWRkaXRpb25hbFR5cGVzKSwgV1RGTW92ZShhZGRpdGlvbmFs
RGF0YSkgfTsKIH0KIAotdm9pZCBFZGl0b3I6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2
b2lkIEVkaXRvcjo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVy
cmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAg
aWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQogICAgICAgICBjbGllbnQtPnJlZ2lz
dGVyQXR0YWNobWVudElkZW50aWZpZXIoaWRlbnRpZmllciwgY29udGVudFR5cGUsIHByZWZlcnJl
ZEZpbGVOYW1lLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDhk
YTlmY2M2NDE2YjY3MjE3ZDE3NDllYmI4OTc4MDdlNDc2MTExMjUuLjg2ZDhjOGMyNjAxODMwYmRj
M2E5N2Y4NzM3OWZhMDFlM2VkYzhkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNTgs
NyArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOwogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwogY2xhc3MgQ29tcG9zaXRlRWRpdENvbW1h
bmQ7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwog
Y2xhc3MgQ3VzdG9tVW5kb1N0ZXA7CiBjbGFzcyBEYXRhVHJhbnNmZXI7CiBjbGFzcyBEZWxldGVC
dXR0b25Db250cm9sbGVyOwpAQCAtNzUsNyArNzUsNyBAQCBjbGFzcyBLaWxsUmluZzsKIGNsYXNz
IFBhc3RlYm9hcmQ7CiBjbGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0YTsKIGNsYXNzIFJlbmRlckxh
eWVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IGNsYXNzIEZvbnQ7CiBjbGFzcyBTcGVsbENoZWNrUmVxdWVzdDsKIGNsYXNzIFNwZWxsQ2hlY2tl
cjsKQEAgLTUzOSw3ICs1MzksNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVwbGFjZU5vZGVG
cm9tUGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOworICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlmCiAKICAgICBib29sIGNhbkNv
cHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCkgY29uc3Q7CkBAIC01NjYsNyArNTY2LDcgQEAg
cHVibGljOgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmaWxlRGF0YSk7
CisgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGZpbGVEYXRhKTsKICAgICB2b2lkIHJlZ2lz
dGVyQXR0YWNobWVudHMoVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJik7CiAgICAg
dm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwogICAgIHZvaWQgcmVn
aXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKQEAgLTU3Niw3ICs1NzYs
NyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQcm9taXNlZEF0dGFjaG1lbnRJbmZv
IHByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYpOwogI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYs
IFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mIG91dERhdGEpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZv
ckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSk7CiAjZW5kaWYKICNlbmRpZgogCkBAIC02MjQs
MTIgKzYyNCwxMiBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGFk
anVzdGVkU2VsZWN0aW9uUmFuZ2UoKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsK
ICAgICBTdHJpbmcgc2VsZWN0aW9uSW5IVE1MRm9ybWF0KCk7Ci0gICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmKTsKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7CiAg
ICAgc3RhdGljIFN0cmluZyB1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBVUkwmKTsKLSAgICBzdGF0
aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQoTlNBdHRy
aWJ1dGVkU3RyaW5nICopOwotICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKKyAgICBzdGF0aWMgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7
CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdChOU0F0dHJp
YnV0ZWRTdHJpbmcgKik7CiAjZW5kaWYKICAgICB2b2lkIHBsYXRmb3JtRm9udEF0dHJpYnV0ZXNB
dFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNo
bWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhLmgKaW5kZXggMzljM2IxZmEzZDg1NmY4ZDg0OWM2OTMzMWQ4OWU5OThmN2U3NjIzYi4uZjMw
MjgyMzU2OTAwNmY1Y2Y5ZGJiNGVmYzM3M2U2N2VmMDVmMTlhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCkBAIC0zMywxMiArMzMs
MTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgU2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhIHsKICAgICBTdHJpbmcgaWRlbnRpZmllcjsKICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4g
ZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1dlYkNvbnRlbnRSZWFkZXIuaAppbmRleCAxZDk3YWNkM2NjNzkxNjFiMGFjNTBjNGJmNzBjYjE1
MmZjMGY0ODRjLi40YWY5NzBiMWY1YjQyNTBjOTUyZDQwOWE4NzE4YTg4MDM0ZjQ4NzVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaApAQCAtNzIsMTYgKzcyLDE2
IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWFkRmlsZVBhdGgoY29uc3QgU3RyaW5nJiwgUHJlc2Vu
dGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlID0geyB9KSBvdmVycmlkZTsKICAgICBib29sIHJlYWRGaWxlUGF0aHMoY29u
c3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKICAgICBib29sIHJlYWRIVE1MKGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYs
IGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRp
b25TaXplID0geyB9KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRJbWFnZShSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHBy
ZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOwogICAgIGJvb2wgcmVhZFVS
TChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKICAgICBib29sIHJl
YWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURkQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURihDb250aWd1b3VzU2hhcmVkQnVmZmVyJikgb3Zl
cnJpZGU7Ci0gICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUg
cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFk
V2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEZEKFNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKKyAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJl
ZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOwogI2VuZGlmCiB9OwogCkBAIC05OSwx
NiArOTksMTYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcm
LCBQcmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBTdHJpbmcmID0geyB9KSBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCByZWFkSFRNTChjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZEltYWdlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZFBsYWluVGV4dChj
b25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBib29sIHJlYWRXZWJBcmNoaXZlKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZEKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0p
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBi
b29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29y
ZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29y
ZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCA3NGZlODI4N2U4YzM5M2JlMTdhNjc2NjUz
OGQ5ZjM0YTA5MGIzMzRiLi41NDllYjdkMmU0YzA3NTQ4ZTRhOGM5ZWEyNGVjMjBlNGYyMWJmYTI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmls
ZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2Fy
ZEZpbGVSZWFkZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHZvaWQgV2ViQ29yZVBhc3RlYm9hcmRG
aWxlUmVhZGVyOjpyZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICBmaWxl
cy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGZpbGVuYW1lKSk7CiB9CiAKLXZv
aWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQordm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQu
Z2V0KCksIEJsb2I6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBidWZmZXItPmV4dHJhY3REYXRhKCks
IHR5cGUpLCBmaWxlbmFtZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKaW5kZXggZTdhMDcxY2E0MDM5ZTAxZjQ4ZDBi
NDk5NTAxZWQ2NGRlNjI2ZjBmYi4uNWM1MjlkZDdjOGVjYzAwMDQ4ZmNiNGQxNTgxNDYzNWIyNGQ5
MGJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2Fy
ZEZpbGVSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJv
YXJkRmlsZVJlYWRlci5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBXZWJDb3JlUGFzdGVib2Fy
ZEZpbGVSZWFkZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgfldlYkNvcmVQ
YXN0ZWJvYXJkRmlsZVJlYWRlcigpOwogCiAgICAgdm9pZCByZWFkRmlsZW5hbWUoY29uc3QgU3Ry
aW5nJikgZmluYWw7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
OworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAgICAgUmVmUHRyPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ+IGNvbnRleHQ7CiAgICAgVmVjdG9yPFJlZjxGaWxlPj4gZmlsZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQppbmRleCBkMGM5
MzMxMDBjNjU1ZjFmYTg1MjUyNzg4MTg3MDQ5OWMyZjYxZmUzLi5hODViN2FhNzUyNmIyZjdjNTFh
M2Y1YzQ2N2JlYjM1MGU5OTE0YWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
RWRpdG9yQ29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBAQCB2b2lkIEVkaXRvcjo6cGxhdGZvcm1G
b250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMs
CiAgICAgICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2JyaWRnZSBpZCljdEZvbnQ7CiB9CiAKLXN0
YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmli
dXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCitzdGF0aWMg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyhOU0F0
dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCiB7CiAgICAgaWYgKCFhdHRyaWJ1dGVk
U3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRh
V2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVT
IGVycm9yOm51bGxwdHJdKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5
ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nIHJl
cXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0pOwogfQogCiBTdHJpbmcgRWRp
dG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAtODcsNyArODcsNyBAQCBTdHJpbmcgRWRp
dG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKIAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2ht
ZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpCit2b2lkIEVkaXRvcjo6Z2V0
UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVj
dG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBvdXRE
YXRhKQogewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZShl
bGVtZW50KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoZWxlbWVudFJh
bmdlLCBvdXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgRWRpdG9yOjpn
ZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50LCBW
ZWN0b3I8U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGUoKmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAgICAgIGlmIChhdXRvIGRhdGEgPSBhcmNo
aXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewogICAgICAgICAgICAgICAgIG91dFR5cGVz
LmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0gICAgICAgICAgICAgICAgb3V0RGF0YS5h
cHBlbmQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpKTsKKyAgICAg
ICAgICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgp
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTEsMTIgKzE1MSwxMiBA
QCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2FyZFdyaXRlckRhdGEmIHBhc3Rl
Ym9hcmRXcml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRXcml0ZXJEYXRhLnNldFdlYkNvbnRlbnQo
V1RGTW92ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpCitSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpCiB7CiAgICAgYXV0byBh
cmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihtX2RvY3VtZW50
LmZyYW1lKCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRh
UmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKIH0KIAogLy8gRklYTUU6
IE1ha2VzIG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0Rm9yRGF0YVRyYW5zZmVyIGFsd2F5cyBp
bmNsdWRlcyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQgZG9lcyBu
b3QuCkBAIC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcgRWRpdG9yOjp1c2VyVmlzaWJsZVN0cmlu
Zyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RGOjp1c2VyVmlzaWJsZVN0cmluZyh1cmwp
OwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZE
Rm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQogewog
ICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAoIWxlbmd0aCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlMKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRG
REZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9
XSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGREZyb21SYW5n
ZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CiAgICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0
dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0
YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQogewogICAgIE5TVUludGVn
ZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5T
TWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dKTsKKyAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9tUmFuZ2U6TlNNYWtlUmFuZ2Uo
MCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwogICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IDNjNWU1NDMyNWI5ZmUyMzU2N2VlNDJk
ZTk5ZjliNWIxNWM0MmIxMDAuLjA3ODI0ODM2MmFhMDU0ZGMzYWIwMDAwNDUxNzE4NDE5OGE1ODBm
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRl
ci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0K
QEAgLTIzMjIsNyArMjMyMiw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmls
ZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TCiBzdGF0aWMgUmV0
YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yRWxlbWVudChIVE1MSW1hZ2VFbGVt
ZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBlbGVt
ZW50LmNhY2hlZEltYWdlKCkpIHsKLSAgICAgICAgaWYgKFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVm
ZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgIGlmIChGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZm
ZXIoKSkKICAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10g
aW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggNDQwNTli
ZTVhZTllODFkYTM5ZDYyODkyMDFkOGVkNDkxNTk3MzUzNS4uNmM4ZDNiN2M3NDNmNTJlM2RkMWRl
ZDkyNmVlYmJiNDU2MTg0ZWVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0
aWMgYm9vbCBzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0YShjb25zdCBGcmFtZSYgZnJh
bWUpCiAKICNlbmRpZgogCi1zdGF0aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdt
ZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUHJl
c2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQorc3RhdGljIFJlZjxEb2N1bWVudEZyYWdtZW50
PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJhbWUsIERvY3VtZW50
JiBkb2N1bWVudCwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFNpemUpCiB7CiAj
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1M
QXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3Vt
ZW50KTsKQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRX
aXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgIHN0
cnVjdCBBdHRhY2htZW50SW5zZXJ0aW9uSW5mbyB7CiAgICAgICAgIFN0cmluZyBmaWxlTmFtZTsK
ICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAgICAgICBSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICAgICAg
UmVmPEVsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudDsKICAgICB9OwogCkBAIC00MjgsNyArNDI4LDcg
QEAgc3RydWN0IE1hcmt1cEFuZEFyY2hpdmUgewogICAgIFJlZjxBcmNoaXZlPiBhcmNoaXZlOwog
fTsKIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJjaGl2ZT4gZXh0cmFjdE1hcmt1
cEFuZEFyY2hpdmUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6OmZ1
bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZl
KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3Ry
aW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKIHsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGUoVVJMKCksIGJ1ZmZlcik7CiAgICAgaWYgKCFhcmNoaXZlKQpA
QCAtNDk3LDcgKzQ5Nyw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2
ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgcmV0dXJuIHNh
bml0aXplZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChXVEZNb3ZlKGZyYWdtZW50KSwgKnN0
YWdpbmdEb2N1bWVudCwgbXNvTGlzdFF1aXJrcywgbWFya3VwQW5kQXJjaGl2ZS5tYXJrdXApOwog
fQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUo
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVy
TUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtNTMyLDcgKzUzMiw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFdl
YkFyY2hpdmUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6
cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5k
b2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MTIsNyArNjEyLDcgQEAgYm9v
bCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkSFRNTChjb25zdCBTdHJpbmcmIHN0cmluZykK
ICAgICByZXR1cm4gIW1hcmt1cC5pc0VtcHR5KCk7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZFJURkQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250
ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoZnJh
bWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpIHx8ICFmcmFtZS5kb2N1bWVu
dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MjYsNyArNjI2LDcgQEAgYm9vbCBXZWJD
b250ZW50UmVhZGVyOjpyZWFkUlRGRChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJU
RkQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBXZWJDb250ZW50TWFya3Vw
UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1l
LmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYzOSw3ICs2MzksNyBAQCBi
b29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVy
OjpyZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVu
dFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoZnJhbWUu
c2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC02NTMsNyArNjUzLDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTY3Niw3ICs2NzYsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRQ
bGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlv
blNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6
ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQogewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVu
dCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwpAQCAtNzQ2LDcg
Kzc0Niw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIHJldHVybiBh
dHRhY2htZW50OwogfQogCi1zdGF0aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRGF0
YShGcmFtZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkU2l6
ZSkKK3N0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JEYXRhKEZyYW1lJiBmcmFt
ZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkU2l6ZSkK
IHsKICAgICBSZWYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKICAgICBhdXRvIGF0dGFj
aG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1l
bnRUYWcsIGRvY3VtZW50KTsKQEAgLTgzMyw3ICs4MzMsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFk
ZXI6OnJlYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZERhdGFCdWZmZXIoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQor
Ym9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNp
emUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAgICBpZiAoYnVmZmVyLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAppbmRleCA2MDQ4NmU3MWFkNTlmZWNjNzE1ZmYw
YTA5YjFjMzU1OGI3YjM0MmMyLi5kM2U5ODE5YmQ1MzFmODQ4NmEzMTdhYjlmOWVkODNhOTg4NWJl
MmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVh
ZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVh
ZGVyR3RrLmNwcApAQCAtNzEsNyArNzEsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRQ
bGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlv
blNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6
ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQogewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVu
dCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IGRmMDkxOWY3NWFjZjc5YTgzOTI4MzIx
MTkwYzVjYjJiYWY3NDdlNGMuLjMwMzZjZDMyZDZjZDgzMmMyMjAyODNhODQ0NWE4OTlhNWE2NmNh
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTExNiw3ICsx
MTYsNyBAQCB2b2lkIEVkaXRvcjo6cGxhdGZvcm1Db3B5Rm9udCgpCiAgICAgUGFzdGVib2FyZEJ1
ZmZlciBwYXN0ZWJvYXJkQnVmZmVyOwogICAgIHBhc3RlYm9hcmRCdWZmZXIuY29udGVudE9yaWdp
biA9IG1fZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKICAgICBwYXN0
ZWJvYXJkQnVmZmVyLnR5cGUgPSBsZWdhY3lGb250UGFzdGVib2FyZFR5cGUoKTsKLSAgICBwYXN0
ZWJvYXJkQnVmZmVyLmRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZm9udERh
dGEuZ2V0KCkpOworICAgIHBhc3RlYm9hcmRCdWZmZXIuZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGZvbnREYXRhLmdldCgpKTsKICAgICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRCdWZm
ZXIpOwogfQogCkBAIC0yNTAsMTUgKzI1MCwxNSBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVG
cm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQog
ICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0cmluZygpKTsKIH0KIAotUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3Jt
YXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpp
bWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVsZW1lbnQpCiB7CiAgICAgYXV0
byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGltYWdlRWxlbWVudCk7CiAgICAg
aWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigp
LmdldCgpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0
YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIC8vIEZJ
WE1FOiBUaGUgaW50ZXJmYWNlIHRvIHRoaXMgZnVuY3Rpb24gaXMgYXdrd2FyZC4gV2UnZCBwcm9i
YWJseSBiZSBiZXR0ZXIgb2ZmIHdpdGggdGhyZWUgc2VwYXJhdGUgZnVuY3Rpb25zLiBBcyBvZiB0
aGlzIHdyaXRpbmcsIHRoaXMgaXMgb25seSB1c2VkIGluIFdlYktpdDIgdG8gaW1wbGVtZW50IHRo
ZSBtZXRob2QgLVtXS1ZpZXcgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQ6dHlwZXM6XSwgd2hp
Y2ggaXMgb25seSB1c2VkIHRvIHN1cHBvcnQgT1MgWCBzZXJ2aWNlcy4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Js
b2IuaAppbmRleCA0NWQ5MzNlMTNjYTRkMjI1MWM1ZGVkODQ4YWE5ZTk4NzJjNzY3NDg5Li5iY2E2
Njk2ZWJlNmYwZWRkZGRlZTc5YjczYzNlZTE0NDk2ZDgyZmI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
aApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBCbG9iTG9hZGVyOwogY2xhc3MgRGVmZXJyZWRQcm9t
aXNlOwogY2xhc3MgUmVhZGFibGVTdHJlYW07CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
dGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEV4Y2VwdGlvbk9yOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAppbmRleCA1NTllYmNjNDhjNWYwOTZhYzE5YmFl
N2Q5ZjcxOGI3MWYyYTM1MzIyLi40MmY0MTgwZGZhODQyN2UwZTYwZjgxZWI3OWIxOTE4N2NhZmRi
YTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKQEAg
LTk0LDcgKzk0LDcgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVzc2FnZXMoKQog
ICAgICAgICBib29sIHNob3VsZFN0b3BQcm9jZXNzaW5nID0gZmFsc2U7CiAgICAgICAgIHN3aXRj
aE9uKG1fcXVldWUuZmlyc3QoKSwgW3RoaXNdKGNvbnN0IENTdHJpbmcmIHV0ZjgpIHsKICAgICAg
ICAgICAgIG1fd3JpdGVTdHJpbmcodXRmOCk7Ci0gICAgICAgIH0sIFt0aGlzXShSZWY8U2hhcmVk
QnVmZmVyPiYgZGF0YSkgeworICAgICAgICB9LCBbdGhpc10oUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiBkYXRhKSB7CiAgICAgICAgICAgICBkYXRhLT5mb3JFYWNoU2VnbWVudChtX3dyaXRl
UmF3RGF0YSk7CiAgICAgICAgIH0sIFt0aGlzLCAmc2hvdWxkU3RvcFByb2Nlc3NpbmddKFVuaXF1
ZVJlZjxCbG9iTG9hZGVyPiYgbG9hZGVyKSB7CiAgICAgICAgICAgICBhdXRvIGVycm9yQ29kZSA9
IGxvYWRlci0+ZXJyb3JDb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L05ldHdvcmtTZW5kUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRR
dWV1ZS5oCmluZGV4IDU1MWY3MGY5MTY3YjJiZmNiMjQ0YmIyYjM3MDBiZmJhYWY1NDc5NmMuLmQy
M2NmZWJiNDUwOGJjMzAwOTE1YmI5OTZkM2YxNTA2MmNlMzUwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQmxvYjsKIGNsYXNzIEJsb2JMb2FkZXI7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VY
UE9SVCBOZXR3b3JrU2VuZFF1ZXVlIDogcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
IHsKIHB1YmxpYzoKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lk
IHByb2Nlc3NNZXNzYWdlcygpOwogCi0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxD
U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPiwgVW5pcXVlUmVmPEJsb2JMb2FkZXI+PjsKKyAgICB1
c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PENTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiwgVW5pcXVlUmVmPEJsb2JMb2FkZXI+PjsKICAgICBEZXF1ZTxNZXNzYWdlPiBtX3F1
ZXVlOwogCiAgICAgV3JpdGVTdHJpbmcgbV93cml0ZVN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggMTAxNmRjZjNjMTk5ZTU0Y2E4MTRj
MjY0NWE5YTg1OThhNWMxZDM1ZS4uNzUyMzAxN2JhNzI5NDA1NjNiNzVmNDY2YTY4ZWQxY2NiM2Rl
ZThiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAK
QEAgLTI3Niw5ICsyNzYsOSBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpwYXJz
ZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExpbmUpCiAgICAgYXBwZW5kRW50
cnkoZmlsZW5hbWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1bHQuZmlsZVNpemUsIHJlc3Vs
dC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0ZpbGVEYXRlU3RyaW5nKHJlc3Vs
dC5tb2RpZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3RvcnlFbnRyeSk7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBs
YXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKK3N0YXRpYyBpbmxpbmUg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoY29uc3QgU2V0
dGluZ3MmIHNldHRpbmdzKQogewotICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBs
YXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKICAgICBp
ZiAoYnVmZmVyKQogICAgICAgICBMT0coRlRQLCAiTG9hZGVkIEZUUERpcmVjdG9yeVRlbXBsYXRl
IG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4gYnVmZmVyOwpA
QCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNlCiAgICAgCiBib29sIEZU
UERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiB7Ci0gICAg
c3RhdGljIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3Jl
YXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigp
OworICAgIHN0YXRpYyBTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9jdW1lbnREYXRhID0gY3JlYXRl
VGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSkubGVha1JlZigpOwog
ICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHN0b3JpbmcgdGhlIGRhdGEsIGl0IHdvdWxkIGJlIG1v
cmUgZWZmaWNpZW50IGlmIHdlIGNvdWxkIHBhcnNlIHRoZSB0ZW1wbGF0ZSBkYXRhIGludG8gdGhl
CiAgICAgLy8gdGVtcGxhdGUgRG9jdW1lbnQgb25jZSwgc3RvcmUgdGhhdCBkb2N1bWVudCwgdGhl
biAiY29weSIgaXQgd2hlbmV2ZXIgd2UgZ2V0IGFuIEZUUCBkaXJlY3RvcnkgbGlzdGluZy4KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAppbmRl
eCA1NmEwNmZjYWYyNzNkMjVkYzRjNzVkY2U1NjlhYWM4ZjFhYTU5NTI3Li5kMmI4NzQxYTA0NDM0
MmM3ZmZkOWU4YTUzM2NjOGExMjBlMjliYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgc3RhdGljIGJvb2wg
bWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VBdHRhY2htZW50KGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCiAgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZShtaW1lVHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlwZShtaW1l
VHlwZSk7CiB9CiAKLXZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJ
bWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQordm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0lt
YWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGF1dG8qIGhvc3RFbGVtZW50ID0gc2hhZG93SG9z
dCgpOwogICAgIGlmICghaXM8SFRNTEltYWdlRWxlbWVudD4oaG9zdEVsZW1lbnQpIHx8ICFidWZm
ZXItPnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1l
bnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5o
CmluZGV4IDU3M2VjMmVhZTFjZGMwNjA5ZjI2MWMzODQwMGJiMDJjNDgwZjdiZGQuLjY2MWRlYzkz
NzZkOGE5ZDZkNDcxN2ZkMGI0Y2U3ZjgyZmYwM2Y3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBGaWxlOwog
Y2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIFJlbmRlckF0dGFjaG1lbnQ7CiBjbGFzcyBT
aGFyZWFibGVCaXRtYXA7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1lbnQgZmluYWwgOiBwdWJsaWMg
SFRNTEVsZW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSFRNTEF0dGFjaG1lbnRF
bGVtZW50KTsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29weU5vbkF0dHJp
YnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JikgZmluYWw7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUF0dHJpYnV0ZXMoc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4mJiBuZXdGaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50VHlwZSwgY29uc3QgU3Ry
aW5nJiBuZXdGaWxlbmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVFbmNsb3Np
bmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVFbmNsb3NpbmdJbWFn
ZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGRhdGEpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVGh1bWJuYWls
KGNvbnN0IFJlZlB0cjxJbWFnZT4mIHRodW1ibmFpbCk7CiAKICAgICBJbnNlcnRlZEludG9BbmNl
c3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJO
b2RlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRl
eCBlYzgzNTFjMDk3NzQ4YjE0OWE5NDQzOWJhYjY5NTc4ZWU5MDAxYTBlLi41NjRjMzE1MjllNjlj
MzY1YWZkZjk3OGU5MjFkMTg1ODQ3ZDQyNWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKQEAgLTI5MzksNyArMjkzOSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6Y2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpCiAgICAgYXR0
ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpOwogfQogCi12b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29u
c3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25E
YXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIG1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25E
YXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0YS0+dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDZiNDA0
YWE4NzM1Mjc3N2I0NzE4MzVmMTIwZmYxNTdjZWVkODRhNjkuLjkxMjhiY2RiZWU1OWQ1ZmQxNzIy
ZTc0NzE5OGQ1NjI2NGM2ZWY4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCkBAIC03MjEsNyArNzIxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENETUNsaWVudAogICAg
IHZvaWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpIGZpbmFs
OwotICAgIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZl
ZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGNk
bUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5n
JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDc3Y2Q0ZjM4MGUyODMyMGU1
NDQ0ZjkzOWNhYWQ2MDAzYWFmZTgxZGIuLjQzNzBkNjgxODcyZDk1YzEwYzBmNGU5NTllMTQ3NDM5
YWQ1NzQ0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAtMTQxLDcg
KzE0MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6dXBkYXRlRHVyaW5nUGFyc2luZygpCiAgICAg
aWYgKCFtX2ltYWdlRWxlbWVudCkKICAgICAgICAgY3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKTsK
IAotICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBsb2FkZXIoKS0+bWFpblJl
c291cmNlRGF0YSgpKQorICAgIGlmIChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSkKICAgICAgICAgbV9pbWFnZUVsZW1l
bnQtPmNhY2hlZEltYWdlKCktPnVwZGF0ZUJ1ZmZlcigqYnVmZmVyKTsKIAogICAgIGltYWdlVXBk
YXRlZCgpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6ZmluaXNoZWRQ
YXJzaW5nKCkKIHsKICAgICBpZiAoIXBhcnNlcigpLT5pc1N0b3BwZWQoKSAmJiBtX2ltYWdlRWxl
bWVudCkgewogICAgICAgICBDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UgPSAqbV9pbWFnZUVsZW1l
bnQtPmNhY2hlZEltYWdlKCk7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBs
b2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gZGF0YSA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAKICAgICAg
ICAgLy8gSWYgdGhpcyBpcyBhIG11bHRpcGFydCBpbWFnZSwgbWFrZSBhIGNvcHkgb2YgdGhlIGN1
cnJlbnQgcGFydCwgc2luY2UgdGhlIHJlc291cmNlIGRhdGEKICAgICAgICAgLy8gd2lsbCBiZSBv
dmVyd3JpdHRlbiBieSB0aGUgbmV4dCBwYXJ0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBhN2NhNzE2MmQ3OTFl
ZDdmYmE4Y2M5MWMyMWEyY2YzYWY2ZTY5YTdlLi4xODc5M2ZmMDY2MzM4ZmI2MGEzNGRlYzkwOWJj
MmRkZDI4YmVhZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtODUwLDcgKzg1MCw3IEBAIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiBpbnN0cnVtCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVxdWVzdChsb2Fk
ZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQoKSkKICAgICAgICAgbmV0d29y
a0FnZW50LT5pbnRlcmNlcHRSZXNwb25zZShyZXNwb25zZSwgaWRlbnRpZmllciwgV1RGTW92ZSho
YW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgKaW5kZXggOGU2NWM0ZWIxMDIzMzUyMWY0OGM3ZjRiMTIwYWQyYzg5MDlh
MDdiYS4uZDI5NTc4MTBkODM4MmM5MzUxZDVhOTNmMTQ0YWVkMTQ5M2JjYzY1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApA
QCAtOTMsNyArOTMsNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU2hhZG93Um9vdDsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFz
cyBUaW1lckJhc2U7CiBjbGFzcyBXZWJLaXROYW1lZEZsb3c7CiBjbGFzcyBXZWJTb2NrZXRDaGFu
bmVsOwpAQCAtMjM2LDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJ
bnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChS
ZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYp
OwotICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4p
PiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPik+JiYpOwogCiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29s
ZShQYWdlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKICAg
ICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKQEAgLTQ0
MSw3ICs0NDEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2VwdFJl
cXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsK
ICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRl
cmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXImLCBG
dW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9p
ZCBpbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7
CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VU
b0NvbnNvbGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4pOwogCkBAIC0xMjg5LDcgKzEyODksNyBAQCBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2Fk
ZXImIGxvYWRlciwgRgogICAgICAgICBpbnRlcmNlcHRSZXF1ZXN0SW1wbCgqYWdlbnRzLCBsb2Fk
ZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKIHsKICAgICBBU1NFUlQo
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNlcHRSZXNwb25zZShmcmFtZSwg
cmVzcG9uc2UpKTsKICAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50cyhm
cmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCmluZGV4IDYxZTRiYzNiYTAxOWVlMjVlNWM4YmMy
MjFkZmY2MDc3ZWRkYjg2M2QuLmYwNjQwM2E2MjM0YjQyYjZhZDJhODBiMDE5NGE1OTZkODlmNmU2
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25XZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoUmVzb3Vy
Y2VMb2FkZXImIGxvCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1
ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiBm
cmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK3ZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0
IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhh
bmRsZXIpCiB7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXNwb25z
ZShmcmFtZSwgcmVzcG9uc2UsIGlkZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdC5oCmluZGV4IGY3NjExNGNlOThmNDJhN2ZmOTA2YTQ4ZDA0MjBiOTYzMDVkMzY5
MTQuLjA3YjQyMWI1OWMxNTU1ZTFhMjkxZTE4ZWJiMjYyMjEyMmYxNjU4YjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0LmgKQEAgLTM2LDIwICszNiwyMCBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIFJlc291cmNl
TG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNs
YXNzIFdFQkNPUkVfRVhQT1JUIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFtZSos
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3VsZEludGVyY2Vw
dFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0
YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lk
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRS
ZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJj
ZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogcHJpdmF0
ZToKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoY29uc3Qg
RnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJ
bnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3RJbnRlcm5hbChSZXNvdXJj
ZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwotICAg
IHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVy
Pik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoY29uc3Qg
RnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIH07CiAKIGlubGluZSBib29sIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25zdCBGcmFt
ZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTc2LDcgKzc2LDcg
QEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRS
ZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2EKICAgICBpbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwo
bG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSogZnJhbWUs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCitpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1l
KiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50
ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAgaW50ZXJjZXB0UmVzcG9uc2VJ
bnRlcm5hbCgqZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
CmluZGV4IGQ3MGJhOWVmZjFjOTJhOGQzMDNmMmVlNDc4ZjVkNDY4NWY0ZjE4NGMuLjM5YjAxMWNm
MDZmN2YzODUzMjQzZTBhNzYzYTNiMWQ0NTQ5MDQxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMzMsNyArMzMsNiBAQAog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3dGYv
dGV4dC9CYXNlNjQuaD4KIApAQCAtNjMsOCArNjIsOCBAQCB1bnNpZ25lZCBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpyZW1vdmVDb250ZW50KCkKICAgICB1bnNpZ25lZCByZXN1
bHQgPSAwOwogICAgIGlmIChoYXNEYXRhKCkpIHsKICAgICAgICAgQVNTRVJUKCFoYXNDb250ZW50
KCkpOwotICAgICAgICByZXN1bHQgPSBtX2RhdGFCdWZmZXItPnNpemUoKTsKLSAgICAgICAgbV9k
YXRhQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgcmVzdWx0ID0gbV9kYXRhQnVmZmVyLnNpemUo
KTsKKyAgICAgICAgbV9kYXRhQnVmZmVyLnJlc2V0KCk7CiAgICAgfQogCiAgICAgaWYgKGhhc0Nv
bnRlbnQoKSkgewpAQCAtODEsMzYgKzgwLDM3IEBAIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGE6OmV2aWN0Q29udGVudCgpCiAgICAgcmV0dXJuIHJlbW92ZUNvbnRl
bnQoKTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpoYXNE
YXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gISFtX2RhdGFCdWZmZXI7Cit9CisKIHNpemVfdCBO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpkYXRhTGVuZ3RoKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9kYXRhQnVmZmVyID8gbV9kYXRhQnVmZmVyLT5zaXplKCkgOiAwOworICAg
IHJldHVybiBtX2RhdGFCdWZmZXIuc2l6ZSgpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGRhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFoYXNDb250ZW50KCkpOwotICAgIGlmICghbV9k
YXRhQnVmZmVyKQotICAgICAgICBtX2RhdGFCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLCBkYXRhTGVuZ3RoKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZGF0YUJ1ZmZlci0+YXBwZW5k
KGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1fZGF0YUJ1ZmZlci5hcHBlbmQoZGF0YSwgZGF0YUxl
bmd0aCk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
OmRlY29kZURhdGFUb0NvbnRlbnQoKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKIAot
ICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gbV9kYXRhQnVmZmVyLT5zaXplKCk7CisgICAgYXV0byBi
dWZmZXIgPSBtX2RhdGFCdWZmZXIudGFrZUFzQ29udGlndW91cygpOworICAgIHNpemVfdCBkYXRh
TGVuZ3RoID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBpZiAobV9kZWNvZGVyKSB7CiAgICAgICAg
IG1fYmFzZTY0RW5jb2RlZCA9IGZhbHNlOwotICAgICAgICBtX2NvbnRlbnQgPSBtX2RlY29kZXIt
PmRlY29kZUFuZEZsdXNoKG1fZGF0YUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBk
YXRhTGVuZ3RoKTsKKyAgICAgICAgbV9jb250ZW50ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVz
aChidWZmZXItPmRhdGEoKSwgZGF0YUxlbmd0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9i
YXNlNjRFbmNvZGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jb250ZW50ID0gYmFzZTY0RW5jb2RlVG9T
dHJpbmcobV9kYXRhQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGRhdGFMZW5ndGgp
OworICAgICAgICBtX2NvbnRlbnQgPSBiYXNlNjRFbmNvZGVUb1N0cmluZyhidWZmZXItPmRhdGEo
KSwgZGF0YUxlbmd0aCk7CiAgICAgfQogCi0gICAgbV9kYXRhQnVmZmVyID0gbnVsbHB0cjsKLQog
ICAgIHJldHVybiBtX2NvbnRlbnQuc2l6ZUluQnl0ZXMoKSAtIGRhdGFMZW5ndGg7CiB9CiAKQEAg
LTI2Nyw3ICsyNjcsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRDYWNoZWRSZXNv
dXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzbwogICAgIHJlc291cmNlRGF0
YS0+c2V0Q2FjaGVkUmVzb3VyY2UoY2FjaGVkUmVzb3VyY2UpOwogfQogCi12b2lkIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nTmFtZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hhcmVk
QnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKIHsKICAgICBS
ZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1
ZXN0SWQpOwogICAgIGlmICghcmVzb3VyY2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBlZmEwMDA1M2FlMTE3YTU0ZGZiMTI2
ZDEyZjlhYmVlN2RhNTkwOGQ3Li5kYWFlNWZlNGEzMWUzMTU5MzYzNzkwNDIzZjVmYmQzMzcwYzVj
ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuaApAQCAtMzAsNiArMzAsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbnNwZWN0
b3JQYWdlQWdlbnQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYv
RGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGlt
ZS5oPgpAQCAtNDAsNyArNDEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYWNoZWRS
ZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNv
ZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VzRGF0YSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC04OCw4ICs4OCw4IEBAIHB1YmxpYzoK
ICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXIoKSBjb25zdCB7IHJl
dHVybiBtX2RlY29kZXIuY29weVJlZigpOyB9CiAgICAgICAgIHZvaWQgc2V0RGVjb2RlcihSZWZQ
dHI8VGV4dFJlc291cmNlRGVjb2Rlcj4mJiBkZWNvZGVyKSB7IG1fZGVjb2RlciA9IFdURk1vdmUo
ZGVjb2Rlcik7IH0KIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlci5jb3B5UmVmKCk7IH0KLSAgICAgICAgdm9pZCBzZXRCdWZmZXIo
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZl
cik7IH0KKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyLmNvcHlSZWYoKTsgfQorICAgICAgICB2b2lkIHNldEJ1ZmZl
cihSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9idWZmZXIgPSBX
VEZNb3ZlKGJ1ZmZlcik7IH0KIAogICAgICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPENlcnRpZmlj
YXRlSW5mbz4mIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNhdGVJ
bmZvOyB9CiAgICAgICAgIHZvaWQgc2V0Q2VydGlmaWNhdGVJbmZvKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8Q2VydGlmaWNhdGVJbmZvPiYgY2VydGlmaWNhdGVJbmZvKSB7IG1fY2VydGlmaWNhdGVJbmZv
ID0gY2VydGlmaWNhdGVJbmZvOyB9CkBAIC0xMDMsMTAgKzEwMywxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIFdhbGxUaW1lIHJlc3BvbnNlVGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25z
ZVRpbWVzdGFtcDsgfQogICAgICAgICB2b2lkIHNldFJlc3BvbnNlVGltZXN0YW1wKFdhbGxUaW1l
IHRpbWUpIHsgbV9yZXNwb25zZVRpbWVzdGFtcCA9IHRpbWU7IH0KIAotICAgICAgICBib29sIGhh
c0J1ZmZlcmVkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQorICAgICAgICBi
b29sIGhhc0J1ZmZlcmVkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGhhc0RhdGEoKTsgfQogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVm
ZmVyOyB9CisgICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwogICAgICAgICBzaXplX3QgZGF0
YUxlbmd0aCgpIGNvbnN0OwogICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwogICAgICAgICB1bnNpZ25lZCBkZWNvZGVEYXRhVG9D
b250ZW50KCk7CkBAIC0xMTksOCArMTE5LDggQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgbV90
ZXh0RW5jb2RpbmdOYW1lOwogICAgICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICAgICAgUmVm
UHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9kYXRhQnVmZmVyOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1
ZmZlcjsKKyAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGFCdWZmZXI7CisgICAgICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICAgICAgc3RkOjpv
cHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJbmZvOwogICAgICAgICBDYWNo
ZWRSZXNvdXJjZSogbV9jYWNoZWRSZXNvdXJjZSB7IG51bGxwdHIgfTsKICAgICAgICAgSW5zcGVj
dG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgbV90eXBlIHsgSW5zcGVjdG9yUGFnZUFnZW50OjpP
dGhlclJlc291cmNlIH07CkBAIC0xNDQsNyArMTQ0LDcgQEAgcHVibGljOgogICAgIFJlc291cmNl
RGF0YSBjb25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQs
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICB2b2lkIG1heWJl
RGVjb2RlRGF0YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgdm9pZCBh
ZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzb3VyY2Uq
KTsKLSAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVz
dElkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05h
bWUpOworICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1
ZXN0SWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUpOwogICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0YShjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCk7CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRhRm9yVVJMKGNvbnN0
IFN0cmluZyYgdXJsKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZW1vdmVDYWNoZWRSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IGU1OGJjYzJhYTdmODE0ZDk3
N2ZmN2Q4ZjI2MjNjMzdlY2JhN2MxZmMuLjIyM2E2NzY3YmUyNzFlZTRkMjJkZWQxZDZiZTYwY2E3
MDc4MTdjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQg
SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBs
b2FkZXIsIEZ1bmN0aW9uPHZvCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RJbnRl
cmNlcHRlZChyZXF1ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci5y
ZXF1ZXN0KCkpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lkIEluc3Bl
Y3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1fZW5hYmxlZCk7CiAg
ICAgQVNTRVJUKG1faW50ZXJjZXB0aW9uRW5hYmxlZCk7CkBAIC0xMjQzLDcgKzEyNDMsNyBAQCBQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVy
Y2VwdFdpdGhSZXNwb25zZShjb25zdAogICAgICAgICBvdmVycmlkZVJlc3BvbnNlLnNldEhUVFBI
ZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIG92ZXJyaWRlUmVzcG9uc2Uu
bWltZVR5cGUoKSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVE
YXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGE7CiAg
ICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNv
ZGUoY29udGVudCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTI3MSw3ICsxMjcxLDcgQEAg
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRl
cmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnMKICAgICBpZiAobG9hZGVyLT5yZWFjaGVkVGVybWluYWxT
dGF0ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJsZSB0byBmdWxmaWxs
IHJlcXVlc3QsIGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zKTsKIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGRhdGE7CiAgICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBi
YXNlNjREZWNvZGUoY29udGVudCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgK
aW5kZXggOGY2ZmJjYzI5M2FlYmY4YjlkNWM5NDVkMjgyOWExNTI3Yjc0YmM3Zi4uNmJjZDg3ZGRj
ZDhiMDQ0MTMwOGQxZDAxZWNhNmIwZTZkYTE0MTNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCkBAIC0xMjMs
NyArMTIzLDcgQEAgcHVibGljOgogICAgIGJvb2wgd2lsbEludGVyY2VwdChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKTsKICAgICBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAgICAgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOwor
ICAgIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiAgICAgdm9p
ZCBpbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKT4mJik7CiAKICAgICB2b2lkIHNlYXJjaE90aGVyUmVxdWVzdHMoY29u
c3QgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYsIFJlZjxKU09OOjpBcnJheU9mPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jik7CkBAIC0xODUsNyArMTg1LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGVuZGluZ0ludGVyY2Vw
dFJlc3BvbnNlKTsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGlj
OgotICAgICAgICBQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgb3JpZ2luYWxSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgICAgICBQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
b3JpZ2luYWxSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKICAgICAgICAgICAgIDogbV9vcmlnaW5hbFJlc3BvbnNlKG9yaWdpbmFsUmVzcG9uc2Up
CiAgICAgICAgICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpCiAgICAgICAgIHsgfQpAQCAtMjAyLDcgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICByZXNwb25kKG1fb3JpZ2luYWxSZXNwb25zZSwgbnVsbHB0cik7CiAgICAgICAgIH0KIAot
ICAgICAgICB2b2lkIHJlc3BvbmQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEpCisgICAgICAgIHZvaWQgcmVzcG9uZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRh
dGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9yZXNwb25kZWQpOwogICAgICAg
ICAgICAgaWYgKG1fcmVzcG9uZGVkKQpAQCAtMjE1LDcgKzIxNSw3IEBAIHByaXZhdGU6CiAKICAg
ICBwcml2YXRlOgogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsK
LSAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgICAgICBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOwogICAgICAgICBib29sIG1f
cmVzcG9uZGVkIHsgZmFsc2UgfTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggYTNjNjBjM2I2
OTZhODNkODMxZDg5N2Y4MTY3YTMyYmUyMzczNzFiYS4uYTRmZmQxMzYxY2RkZTVhYjdkOTczY2Qw
MGQxOWE5MTBhZTllZDI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAwLDEzICsxMDAsMTMgQEAgc3Rh
dGljIGJvb2wgZGVjb2RlQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgdW5zaWduZWQgc2l6
ZSwgY29uc3QgU3RyaW5nJiB0ZXgKIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNv
dXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyog
cmVzdWx0KQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2Fk
ZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExv
YWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChi
dWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5k
b2N1bWVudCgpLT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCi1i
b29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdp
dGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQorYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29k
ZSwgU3RyaW5nKiByZXN1bHQpCiB7CiAgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVy
LT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQp
OwogfQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJj
ZUNvbnRlbnQoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgRnJhCiAgICAgaWYg
KCFsb2FkZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGJv
b2wgc3VjY2VzcyA9IGZhbHNlOwogICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlm
aWVyKHVybCwgbG9hZGVyLT51cmwoKSkpIHsKICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5oCmluZGV4IGI1MWFkZGIxYmQ4ZjJjY2U2OTU2MDc5OWNkMWQ5NTJkMmRlNDI4Mzgu
LjNkNWU1NjZkYmUwYzVlYzExZDllOGRmNjdmY2YwYTcwOTg4YTJmOGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAt
NDksNyArNDksNyBAQCBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JPdmVy
bGF5OwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlck9iamVjdDsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEluc3BlY3RvclBhZ2VB
Z2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6
OlBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEluc3BlY3RvclBhZ2VBZ2VudCk7CkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICAgICAg
T3RoZXJSZXNvdXJjZSwKICAgICB9OwogCi0gICAgc3RhdGljIGJvb2wgc2hhcmVkQnVmZmVyQ29u
dGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05h
bWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOworICAgIHN0YXRpYyBi
b29sIHNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBT
dHJpbmcqIHJlc3VsdCk7CiAgICAgc3RhdGljIFZlY3RvcjxDYWNoZWRSZXNvdXJjZSo+IGNhY2hl
ZFJlc291cmNlc0ZvckZyYW1lKEZyYW1lKik7CiAgICAgc3RhdGljIHZvaWQgcmVzb3VyY2VDb250
ZW50KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgRnJhbWUqLCBjb25zdCBVUkwm
LCBTdHJpbmcqIHJlc3VsdCwgYm9vbCogYmFzZTY0RW5jb2RlZCk7CiAgICAgc3RhdGljIFN0cmlu
ZyBzb3VyY2VNYXBVUkxGb3JSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IDk3NGYyMmEyZGE3YTAyYzY0ODljMWI1MGE1
YTIyMGZlNDRiMTk2MzAuLjZhZTUyNjU5N2NkMjg2MzFiZTc5NTBmYzMzNTM2ZjhmMzQ3ZDdhZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTI3Niw3ICsyNzYs
NyBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgQVNTRVJUKHdpbGxIYW5kbGVQcm92aXNp
b25hbExvYWRGYWlsdXJlKGVycm9yKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXBs
YWNlbWVudERhdGEgeyBtX2Jsb2NraW5nQ29udGVudEZpbHRlci0+cmVwbGFjZW1lbnREYXRhKCkg
fTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhIHsg
bV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXItPnJlcGxhY2VtZW50RGF0YSgpIH07CiAgICAgUmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZSB7IFVSTCgpLCAidGV4dC9odG1sIl9zLCBzdGF0aWNfY2FzdDxs
b25nIGxvbmc+KHJlcGxhY2VtZW50RGF0YS0+c2l6ZSgpKSwgIlVURi04Il9zIH07CiAgICAgU3Vi
c3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEgeyBXVEZNb3ZlKHJlcGxhY2VtZW50RGF0YSksIGVy
cm9yLmZhaWxpbmdVUkwoKSwgcmVzcG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9y
eVZpc2liaWxpdHk6OkhpZGRlbiB9OwogICAgIFNldEZvclNjb3BlPGJvb2w+IGxvYWRpbmdCbG9j
a2VkUGFnZSB7IG1faXNMb2FkaW5nQmxvY2tlZFBhZ2UsIHRydWUgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXgg
ZDA5NjFhZmM3YjdlNzNlNjE3ZTc4MDZhNjdjNmZmZDA5ZjE1Y2E5My4uOTRjMzZlZjUwN2VmMDM3
YjcwN2M5MGQxOWE3YTFhNzQ0NWIxZjcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBA
QCB2b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQoRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyJiBsb2FkZXIsCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJl
cXVlc3QgPSBjcmVhdGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LCBsb2Fk
ZXIuc2VjdXJpdHlPcmlnaW4oKSwgbG9hZGVyLnJlZmVycmVyKCkpOwogICAgIFJlc291cmNlRXJy
b3IgZXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
OwogCiAgICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVyLmRvY3VtZW50KCkuZnJhbWUoKS0+bG9h
ZGVyKCkubG9hZFJlc291cmNlU3luY2hyb25vdXNseShwcmVmbGlnaHRSZXF1ZXN0LCBDbGllbnRD
cmVkZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRp
b25zIHsgfSwgeyB9LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBmZGZkMGVhYWYzYTUwMThkOTAwYmExYTZkN2E0
OGFlNTczMmYzNGM4Li4wYWI0ZTE0ZjljZTM1YTFjY2Y2ZGQ2YmNlODMwMjQxNmMxZWNkZWNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTIwOCw3ICsyMDgs
NyBAQCBEb2N1bWVudExvYWRlcjo6fkRvY3VtZW50TG9hZGVyKCkKICNlbmRpZgogfQogCi1SZWZQ
dHI8U2hhcmVkQnVmZmVyPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSgpIGNvbnN0
CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNv
dXJjZURhdGEoKSBjb25zdAogewogICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkK
ICAgICAgICAgcmV0dXJuIG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5jb3B5KCk7CkBAIC0x
NjQ5LDcgKzE2NDksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJj
ZXMoKQogICAgIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lci5zdG9wKCk7CiB9CiAK
LUNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0
YSgpIGNvbnN0CitTaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0
YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFyc2VkQXJjaGl2ZURhdGEuZ2V0KCk7CiB9CkBA
IC0xNjY4LDcgKzE2NjgsNyBAQCBBcmNoaXZlUmVzb3VyY2UqIERvY3VtZW50TG9hZGVyOjphcmNo
aXZlUmVzb3VyY2VGb3JVUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAKIFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2UoKSBjb25zdAogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CiAgICAg
aWYgKCFkYXRhKQogICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBh
dXRvJiByZXNwb25zZSA9IHRoaXMtPnJlc3BvbnNlKCk7CkBAIC0yMjUyLDcgKzIyNTIsNyBAQCB2
b2lkIERvY3VtZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkK
IAogICAgIGZyYW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29tbWl0dGVk
ID0gZmFsc2U7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJl
c291cmNlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJj
ZURhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCkBA
IC0yMjg5LDcgKzIyODksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2FkaW5n
KCkKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5nZXRMb2FkRGVjaXNpb25Gb3JJY29u
cyhpY29uRGVjaXNpb25zKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERl
Y2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNp
c2lvbiwgdWludDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8g
aWNvbiA9IG1faWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uLnRha2UobG9hZElkZW50aWZpZXIpOwog
CkBAIC0yMzEwLDcgKzIzMTAsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVj
aXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudAogICAgIHJhd0lj
b25Mb2FkZXItPnN0YXJ0TG9hZGluZygpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpmaW5p
c2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImIGxvYWRlciwgU2hhcmVkQnVmZmVyKiBidWZmZXIp
Cit2b2lkIERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImIGxv
YWRlciwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogewogICAgIC8vIElmIHRoZSBE
b2N1bWVudExvYWRlciBoYXMgZGV0YWNoZWQgZnJvbSBpdHMgZnJhbWUsIGFsbCBpY29uIGxvYWRz
IHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBjYW5jZWxsZWQuCiAgICAgQVNTRVJUKG1fZnJhbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCA2YmQzMmZjMmVjZjQ2
YWY3Y2Q5Mzc5YTlkMDBjOTkxMTZlYjdhNmI1Li40YmY5NmY3ZGJkZDQ3MzczODZjYzU0OWU4Yzky
MWU3ZGM1MmI0OTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAt
NzUsNyArNzUsNyBAQCBjbGFzcyBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogY2xhc3MgQ2Fj
aGVkUmF3UmVzb3VyY2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENvbnRl
bnRGaWx0ZXI7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVm
ZmVyOwogc3RydWN0IEN1c3RvbUhlYWRlckZpZWxkczsKIGNsYXNzIEZvcm1TdGF0ZTsKIGNsYXNz
IEZyYW1lOwpAQCAtODQsNyArODQsNyBAQCBjbGFzcyBJY29uTG9hZGVyOwogY2xhc3MgUGFnZTsK
IGNsYXNzIFByZXZpZXdDb252ZXJ0ZXI7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTV0NsaWVu
dENvbm5lY3Rpb247CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFN1YnN0aXR1dGVS
ZXNvdXJjZTsKQEAgLTE3OSw3ICsxNzksNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBT
dWJyZXNvdXJjZUxvYWRlciogbWFpblJlc291cmNlTG9hZGVyKCkgY29uc3Q7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVz
b3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgCiAgICAgRG9jdW1lbnRXcml0ZXImIHdyaXRlcigpIGNv
bnN0IHsgcmV0dXJuIG1fd3JpdGVyOyB9CiAKQEAgLTIzNiw3ICsyMzYsNyBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJl
c291cmNlPiYmKTsKICAgICBSZWZQdHI8QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNv
bnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRl
ciYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlmCkBAIC00MDMsOCArNDAzLDggQEAg
cHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0SWNvbkxvYWRpbmcoKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwg
dWludDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVm
ZmVyKik+JiYpOwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgU2hh
cmVkQnVmZmVyKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25G
b3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJik7CisgICAgdm9pZCBmaW5p
c2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAK
ICAgICBjb25zdCBWZWN0b3I8TGlua0ljb24+JiBsaW5rSWNvbnMoKSBjb25zdCB7IHJldHVybiBt
X2xpbmtJY29uczsgfQogCkBAIC02MTMsNyArNjEzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xs
ZWN0aW9uOwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJl
ZlB0cjxBcmNoaXZlPiBtX2FyY2hpdmU7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJz
ZWRBcmNoaXZlRGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2Vz
Q2xpZW50S25vd3NBYm91dDsKQEAgLTYzMiw3ICs2MzIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV93YWl0aW5nRm9yTmF2aWdhdGlvblBvbGljeSB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPHVp
bnQ2NF90LCBMaW5rSWNvbj4gbV9pY29uc1BlbmRpbmdMb2FkRGVjaXNpb247Ci0gICAgSGFzaE1h
cDxzdGQ6OnVuaXF1ZV9wdHI8SWNvbkxvYWRlcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hh
cmVkQnVmZmVyKik+PiBtX2ljb25Mb2FkZXJzOworICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRy
PEljb25Mb2FkZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqKT4+IG1faWNvbkxvYWRlcnM7CiAgICAgVmVjdG9yPExpbmtJY29uPiBtX2xpbmtJY29uczsK
IAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggMjNlNjBhY2Y1MTIz
MTg3NTI2MTUwMDRiOWVkMDJlMGU3YTIxNTBiOC4uYjljNDEzNTI1Njc2MjY3MjE5MDdhZjM2NmRm
YjFkZWM3OTRjMjQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIERvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2Vj
dXJpdHlDaAogICAgIGxvYWRUaW1pbmcubWFya1N0YXJ0VGltZSgpOwogCiAgICAgLy8gRklYTUU6
IFRocmVhZGFibGVMb2FkZXJPcHRpb25zLnNuaWZmQ29udGVudCBpcyBub3Qgc3VwcG9ydGVkIGZv
ciBzeW5jaHJvbm91cyByZXF1ZXN0cy4KLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIFJlc291cmNlRXJy
b3IgZXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICBhdXRvIGlkZW50
aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxSZXNvdXJjZUxvYWRlcj4oc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50NjRfdD46Om1heCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKaW5kZXggMGRhZjRjN2FiNjA1OWJkNDdhN2NiYmQ4YzgzMTczNGM0YmIxMDM0Ny4uZmUz
MmQ5NGU0Mjg2NTlkNWQ2MWRhYmE3MjE5OGViMTk1OWJhMjVmNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAKQEAgLTI3OCw3ICsyNzgsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2
b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYpIGZpbmFsIHsgfQogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZvaWQgZ2V0Q2xp
ZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAg
ICB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mKSBmaW5hbCB7IH0KICAgICB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRT
cGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKaW5kZXggZTkxYzhmNjBkM2E5OGE5ZWI4ZGEzY2U2YjQ0ZmFkMmJjM2Vi
NTU0Ny4uNmM1ZWUzYTliMzFhZThiODRkYjkyMGI2NmViZjIxNGYyNmVjOWFkNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0zMTA2LDcgKzMxMDYsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFN0cmluZyYgcmVmZQogICAgIH0pOwogfQogCi1SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xp
Y3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3Jp
Z2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCitSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5
IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29u
c3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYg
ZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYg
ZGF0YSkKIHsKICAgICBBU1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICBTdHJpbmcgcmVm
ZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRv
Y3VtZW50KCktPnJlZmVycmVyUG9saWN5KCksIHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJy
ZXIoKSk7CkBAIC0zMTU0LDcgKzMxNTQsNyBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJh
bWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAg
ICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVM
b2FkU3luY2hyb25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAg
ICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwogICAgICAgICAgICAgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
KnRoaXMsIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIG9w
dGlvbnMsIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIGVycm9yLCByZXNwb25zZSwgYnVmZmVyKTsK
LSAgICAgICAgICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShidWZmZXIpKTsKKyAgICAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGJ1ZmZlcikpOwogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25D
YWNoZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJy
b3IsIHJlc3BvbnNlLCBkYXRhKTsKICAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpz
aGFyZWQoKS5sb2dTdWJyZXNvdXJjZUxvYWRpbmcoJm1fZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3Bv
bnNlLAogICAgICAgICAgICAgICAgIChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRl
c3RpbmF0aW9uKSA/IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3Jp
cHRMaWtlOjpZZXMgOiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2Ny
aXB0TGlrZTo6Tm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggOWMzZjc0
YzQyZGI4ZTdiYWU5NTQwNWY1NDBmM2UyODcxOTgyZTkxNC4uNzVhZTI4NGMyYzM0ZmRkODllODU2
NGRhNDM5ZGE3NzI1YWZiYzhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAg
LTU5LDcgKzU5LDcgQEAgY2xhc3MgQ2FjaGVkRnJhbWVCYXNlOwogY2xhc3MgQ2FjaGVkUGFnZTsK
IGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgQ2hyb21lOwotY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsK
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBAIC0xMjcsNyArMTI3LDcg
QEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9hZEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYpOwogI2VuZGlm
Ci0gICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0
Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKTsKKyAgICBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlv
bnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNoYW5nZUxvY2F0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBFdmVu
dCosIGNvbnN0IFJlZmVycmVyUG9saWN5JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwg
c3RkOjpvcHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQsIGNvbnN0
IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29uc3QgU3lzdGVt
UHJldmlld0luZm8mID0geyB9LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50
PiYmID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1lTG9hZFJl
cXVlc3QmJiwgRXZlbnQqID0gbnVsbHB0ciwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlckNsaWVudC5oCmluZGV4IDRmZDYzN2E5MDE0YTVkNDFhMjI2ZWU0NTkxN2I2YjNlOWE3OTBl
YmIuLmVlOWYzZDBjOTg0ZDQ1NWNiYjkxYjQ2MGMxYmMxMjg5OGQxMjM2NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC05OCw3ICs5OCw3IEBAIGNsYXNz
IFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3Mg
V2lkZ2V0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRl
Z3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmluZGV4IGFlZjY2
OGJkNjNlZDVmY2Q0NWU2MWU5ZDFmMTA3Y2ZiNmFlZjI2NGIuLjI5ZDJlM2Y0NjE0MGFhYTUxMTYw
ZTZhMjg1NjJmMzcwZTM3MWViMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9M
b2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVn
eS5oCkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNs
YXNzIFN1YnJlc291cmNlTG9hZGVyOwogCiBzdHJ1Y3QgRmV0Y2hPcHRpb25zOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKaW5k
ZXggNjMzNzU1OTYzMjAwMTQ2MzgyODllMjgyNjA0YzU1YjBhZjQ0NTMxMy4uNjA0M2FjOWJlMjY3
ZWE0ZmJjNzFlMTExOGI5MDc5MTU1ZTM5MTUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCkBAIC0xNDYsMTIgKzE0Niwx
MiBAQCB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZQogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
ZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBl
KTsKIH0KIAotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRh
dGFQYXlsb2FkVHlwZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAs
IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9
CiAKLXZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRh
dGFQYXlsb2FkVHlwZSkKK3ZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgUmVmPE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAppbmRleCA0OGJi
MjE1M2M5M2YyZGM3NTRlMjA3MzIyNTJjMDUwOWNmNzA0YTQxLi5iNTE3NGVkYzk0Yjk5MjM5MDIw
NWYwZmFkNDUyZWE1YWMzODc4OTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291
cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlEb25lKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAK
aW5kZXggNDg0MGYxNGNmMjVkZGYxZjYwMGFlOTZkYWM2M2Q5NzExYzhjOTQwNy4uNTJlMWUyM2Ey
YzU0NTRiM2IyZmEwYWU3ZTJkMTVlYTNjYzNjYWI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKQEAgLTE1NSw3ICsx
NTUsNyBAQCBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZv
ckJ5dGVzKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZwogICAgIHJldHVybiB7IGFsZ29yaXRobSwg
Y3J5cHRvRGlnZXN0LT5jb21wdXRlSGFzaCgpIH07CiB9CiAKLVJlc291cmNlQ3J5cHRvZ3JhcGhp
Y0RpZ2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSwgY29uc3QgU2hhcmVkQnVmZmVyKiBi
dWZmZXIpCitSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZv
clNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSBhbGdv
cml0aG0sIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICBhdXRv
IGNyeXB0b0RpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUodG9DcnlwdG9EaWdlc3RB
bGdvcml0aG0oYWxnb3JpdGhtKSk7CiAgICAgaWYgKGJ1ZmZlcikgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCmluZGV4IGFlYTNk
YzU3Yzg3ODMxMzAxM2E1YjE2YzkzOWI3NzRlZDQ4NDMyNGMuLjgzYjg2MTNjZmRhMjMyOWFlMzBi
YmY2YWJjMTRiOTlkNDQyMzdiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmgKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0IHsKICAgICBlbnVtIGNsYXNzIEFsZ29yaXRobSB7CkBAIC03NSw3ICs3NSw3
IEBAIHN0ZDo6b3B0aW9uYWw8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFy
c2VFbmNvZGVkQ3J5cHRvZ3JhcGhpY0RpZ2VzCiAKIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VDcnlw
dG9ncmFwaGljRGlnZXN0PiBkZWNvZGVFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0
KGNvbnN0IEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QmKTsKIAotUmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZmZXIoUmVz
b3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0sIGNvbnN0IFNoYXJlZEJ1ZmZlciop
OworUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFy
ZWRCdWZmZXIoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0sIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlw
dG9ncmFwaGljRGlnZXN0Rm9yQnl0ZXMoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdv
cml0aG0sIGNvbnN0IHZvaWQqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMmYyZTgyYzJiMTdmM2M5NGRlYmYw
YTZhNDE4ZjQ0MzNlNGFhYmQ2YS4uNmRlYmIyNTg4YTNlODJiMjFjNjFkN2U4ZjM2ZTRmNGJiYmEy
NWU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MCw3
ICs1MCw2IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNl
SGFuZGxlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTExOCw3ICsxMTcs
NyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKIAogICAgIG1faWRl
bnRpZmllciA9IHsgfTsKIAotICAgIG1fcmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICBtX3Jl
c291cmNlRGF0YS5yZXNldCgpOwogICAgIG1fZGVmZXJyZWRSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1
ZXN0KCk7CiB9CiAKQEAgLTE4OSw3ICsxODgsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjppbml0
KFJlc291cmNlUmVxdWVzdCYmIGNsaWVudFJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaQog
ICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkZWxpdmVyUmVzcG9uc2VBbmREYXRh
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBkaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIp
XSgpIG11dGFibGUgewogICAgICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKQEAgLTMx
OCw3ICszMTcsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpzZXREYXRhQnVmZmVyaW5nUG9saWN5
KERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbAogCiAgICAgLy8gUmVzZXQgYW55
IGFscmVhZHkgYnVmZmVyZWQgZGF0YQogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERh
dGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURh
dGEgPSBudWxscHRyOworICAgICAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOwogfQogCiB2b2lk
IFJlc291cmNlTG9hZGVyOjp3aWxsU3dpdGNoVG9TdWJzdGl0dXRlUmVzb3VyY2UoKQpAQCAtMzI5
LDI0ICszMjgsMjkgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3aXRjaFRvU3Vic3RpdHV0
ZVJlc291cmNlKCkKICAgICAgICAgbV9oYW5kbGUtPmNhbmNlbCgpOwogfQogCi12b2lkIFJlc291
cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwg
RGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBpZiAobV9vcHRpb25zLmRh
dGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRh
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVzb3VyY2VEYXRhIHx8IGRhdGFQYXls
b2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpCi0gICAgICAgIG1fcmVzb3VyY2VE
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICAKKyAgICBpZiAoZGF0YVBheWxvYWRU
eXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZURhdGEu
cmVzZXQoKTsKKwogICAgIGlmIChidWZmZXIpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBl
bmQoKmJ1ZmZlcik7CisgICAgICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVuZCgqYnVmZmVyKTsKICAg
ICBlbHNlCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhLT5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAg
ICAgICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Cit9CisKK2NvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25z
dAoreworICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKS5nZXQoKTsKIH0KIAogdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZURhdGEoKQogewogICAgIGlmIChtX3Jlc291cmNl
RGF0YSkKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmNsZWFyKCk7CisgICAgICAgIG1fcmVzb3Vy
Y2VEYXRhLmVtcHR5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmlzU3VicmVzb3VyY2VM
b2FkZXIoKSBjb25zdApAQCAtNTQ2LDE0ICs1NTAsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25n
IGwKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5j
b2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3Zv
aWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxs
cHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5
cGUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRh
dGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91
bGQgb25seSBnZXQgZGF0YStsZW5ndGggKk9SKiBhIFNoYXJlZEJ1ZmZlci4KKyAgICAvLyBUaGlz
IG1ldGhvZCBzaG91bGQgb25seSBnZXQgZGF0YStsZW5ndGggKk9SKiBhIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIuCiAgICAgQVNTRVJUKCFidWZmZXIgfHwgKCFkYXRhICYmICFsZW5ndGgpKTsKIAog
ICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlzIGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRk
aXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwpAQCAtNzMwLDcgKzczNCw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduCiAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoLCBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGRpZFJlY2VpdmVCdWZmZXIoV1RG
TW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDRmZDJiZjBiYmIzYjFiZDIx
NTQ1ZGI1MmMyZTFjYTY0ZWU0MmI5MTcuLjcwZWEyMjBkYzE3YzczNzZlZDY2MGZhN2E2MWE4NGUz
MWMzMzRjYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC0zNSw2
ICszNSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIlJl
c291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CiAKQEAgLTY2LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIGluaXQoUmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOwogCi0gICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRlbGl2ZXJSZXNwb25z
ZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVhbCB2b2lk
IHN0YXJ0TG9hZGluZygpCkBAIC05OCw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgcmVsZWFzZVJlc291cmNlcygpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogCi0gICAgU2hhcmVkQnVmZmVyKiBy
ZXNvdXJjZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKTsgfQorICAg
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHJlc291cmNlRGF0YSgpIGNvbnN0OwogICAg
IHZvaWQgY2xlYXJSZXNvdXJjZURhdGEoKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJy
ZXNvdXJjZUxvYWRlcigpIGNvbnN0OwpAQCAtMTA3LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5z
aWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYpOwogCkBAIC0xNjYsNyArMTY3LDcgQEAgcHJvdGVjdGVkOgogCiAgICAg
Ym9vbCB3YXNDYW5jZWxsZWQoKSBjb25zdCB7IHJldHVybiBtX2NhbmNlbGxhdGlvblN0YXR1cyA+
PSBDYW5jZWxsZWQ7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1
aW50OF90KiwgdW5zaWduZWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
OwogICAgIAogICAgIHZvaWQgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJQb2xpY3kgcmVmZXJy
ZXJQb2xpY3kpIHsgbV9vcHRpb25zLnJlZmVycmVyUG9saWN5ID0gcmVmZXJyZXJQb2xpY3k7IH0K
ICAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0
aW9ucy5yZWZlcnJlclBvbGljeTsgfQpAQCAtMTkxLDcgKzE5Miw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAKLSAgICB2
b2lkIGFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIFNoYXJlZEJ1ZmZl
ciosIERhdGFQYXlsb2FkVHlwZSk7CisgICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgdWlu
dDhfdCosIHVuc2lnbmVkLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgRGF0YVBheWxvYWRUeXBl
KTsKICAgICB2b2lkIGxvYWREYXRhVVJMKCk7CiAgICAgdm9pZCBmaW5pc2hOZXR3b3JrTG9hZCgp
OwogCkBAIC0yMDIsNyArMjAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXNwb25zZSYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0QXN5
bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXNwb25zZSYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3Qq
LCB1bnNpZ25lZCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihS
ZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2Rl
ZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsK
ICAgICB2b2lkIHdhc0Jsb2NrZWQoUmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZTsKQEAgLTIyNyw3
ICsyMjgsNyBAQCBwcml2YXRlOgogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAg
ICBSZXNvdXJjZVJlcXVlc3QgbV9vcmlnaW5hbFJlcXVlc3Q7IC8vIEJlZm9yZSByZWRpcmVjdHMu
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9yZXNvdXJjZURhdGE7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBtX3Jlc291cmNlRGF0YTsKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgbV9pZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcAppbmRleCA3MTk2ODJjNjQ2NDgyMDM0MDE3ZjY4ZTVmYTY5Mzg4YmVkYjJlZWFh
Li4zN2QwYmI4MjFhYmQ4NmE5YjU2MDZlMTI3ZWZjOTQxMmE1MWJiMWE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTUzMCw3ICs1MzAsNyBAQCB2
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgsIGxvbgogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwg
bGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0K
IAotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5
cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICNpZiBV
U0UoUVVJQ0tfTE9PSykKICAgICBpZiAoYXV0byBwcmV2aWV3TG9hZGVyID0gbV9wcmV2aWV3TG9h
ZGVyLmdldCgpKSB7CkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGUK
ICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwg
ZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgU3VicmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUp
CiB7CiAgICAgQVNTRVJUKG1fcmVzb3VyY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5oCmluZGV4IDM3MjNiNmI5YWI5ZmRkYWFhNTU3NGJmYjBlNmYzOGNlZDdh
ZWZiNzUuLjgzMmM5ZjBlNzNkMzg0NjRhNzk1ZjQwMzg2MGY3OWMzNGU3M2JjN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC03NCw3ICs3NCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50
LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
RmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsQ2FuY2Vs
KGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0
ZToKICAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVzcG9uc2VDcm9zc09yaWdpbkFj
Y2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIEV4cGVjdGVkPHZvaWQs
IFN0cmluZz4gY2hlY2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHByZXZpb3VzUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCk7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlEb25lKExvYWRDb21wbGV0aW9uVHlwZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKaW5kZXggZjY2MjkyZTMxY2JlYjQyNjQz
MGE4MzJhZGVmNDI5OTFjYjU3NDM2ZS4uYThhNDliNDdmOTI3MzQyNzRiYTRjZWFiYzE3MDdmZWZh
N2I2NjQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKQEAgLTQzLDcg
KzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAg
ICAgICBTdWJzdGl0dXRlRGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGNvbnRlbnQsIGNvbnN0
IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFNlc3Np
b25IaXN0b3J5VmlzaWJpbGl0eSBzaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KQorICAgICAg
ICBTdWJzdGl0dXRlRGF0YShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjb250ZW50
LCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSkK
ICAgICAgICAgICAgIDogbV9jb250ZW50KFdURk1vdmUoY29udGVudCkpCiAgICAgICAgICAgICAs
IG1fZmFpbGluZ1VSTChmYWlsaW5nVVJMKQogICAgICAgICAgICAgLCBtX3Jlc3BvbnNlKHJlc3Bv
bnNlKQpAQCAtNTQsMTQgKzU0LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9v
bCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50ICE9IG51bGxwdHI7IH0KICAgICAg
ICAgYm9vbCBzaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9z
aG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5ID09IFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6
VmlzaWJsZTsgfQogCi0gICAgICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogY29udGVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGVudC5nZXQoKTsgfQorICAgICAgICBjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBjb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50LmdldCgpOyB9CiAg
ICAgICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNl
Lm1pbWVUeXBlKCk7IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcoKSBjb25z
dCB7IHJldHVybiBtX3Jlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKTsgfQogICAgICAgICBjb25z
dCBVUkwmIGZhaWxpbmdVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZhaWxpbmdVUkw7IH0KICAgICAg
ICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jl
c3BvbnNlOyB9CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fY29udGVudDsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IG1fY29udGVudDsKICAgICAgICAgVVJMIG1fZmFpbGluZ1VSTDsKICAgICAgICAgUmVzb3VyY2VS
ZXNwb25zZSBtX3Jlc3BvbnNlOwogICAgICAgICBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgbV9z
aG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5IHsgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpI
aWRkZW4gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVz
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRl
eCA1OTY2NGI1ODU0Zjg1YjAyY2RmMzQ5MDIwYTBlZmYxM2ViNzg4ODc5Li5jZjJkZTBjNjJkOTVm
MzMyNWI0MmI0NmUyNDAzNzc0NDEwNzQyYTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0zNywxMiArMzcsMTQgQEAgcHVibGljOgogCiAgICAgY29u
c3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQotICAgIFNo
YXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxT
aGFyZWRCdWZmZXI+KG1fZGF0YSk7IH0KKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsg
fQorICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0YS5lbXB0eSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9u
c2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS0+Y29weSgpKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25z
ZUFuZERhdGEobV9yZXNwb25zZSwgbV9kYXRhLmNvcHkoKSk7IH0KIAogcHJvdGVjdGVkOgotICAg
IFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25z
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQorICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwm
JiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgZGF0YSkKICAgICAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAgICAgICAgICwg
bV9yZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSkKICAgICAgICAgLCBtX2RhdGEoV1RGTW92ZShk
YXRhKSkKQEAgLTUyLDcgKzU0LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBVUkwgbV91
cmw7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IG1fZGF0YTsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDcyMGE5MjcxY2QzMjY1ZWY0Y2Uy
MzI2MWEyNmRiMGQ4MjhjNjMzNDYuLjUxOTc4ZjQxMjM4NzRkYzU2NjBlZmY0NzA2NTk3MDdkNGU1
ZDg1YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMjUzLDE0ICsyNTMsMTQgQEAgVVJMIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpjcmVhdGVGaWxlVVJMKGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgog
fQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJG
cm9tUmVzb3VyY2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKK3N0YXRpYyBp
bmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJlc291cmNlKEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCiB7CiAgICAgaWYgKHJlc291cmNlLnBhdGgoKS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiByZXNvdXJjZS5kYXRhKCkubWFrZUNvbnRpZ3VvdXMoKTsK
LSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHJlc291cmNlLnBhdGgoKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlLnBhdGgoKSk7CiB9CiAKLWJvb2wgQXBwbGljYXRpb25D
YWNoZUhvc3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZUhv
c3Q6Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiBkYXRhKQogewogICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3Vy
Y2U7CiAgICAgaWYgKCFzaG91bGRMb2FkUmVzb3VyY2VGcm9tQXBwbGljYXRpb25DYWNoZShyZXF1
ZXN0LCByZXNvdXJjZSkpCkBAIC0yNzcsNyArMjc3LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJl
c28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5
YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBkYXRhKQogewogICAgIC8vIElmIG5vcm1hbCBsb2Fk
aW5nIHJlc3VsdHMgaW4gYSByZWRpcmVjdCB0byBhIHJlc291cmNlIHdpdGggYW5vdGhlciBvcmln
aW4gKGluZGljYXRpdmUgb2YgYSBjYXB0aXZlIHBvcnRhbCksIG9yIGEgNHh4IG9yIDV4eCBzdGF0
dXMgY29kZSBvciBlcXVpdmFsZW50LAogICAgIC8vIG9yIGlmIHRoZXJlIHdlcmUgbmV0d29yayBl
cnJvcnMgKGJ1dCBub3QgaWYgdGhlIHVzZXIgY2FuY2VsZWQgdGhlIGRvd25sb2FkKSwgdGhlbiBp
bnN0ZWFkIGdldCwgZnJvbSB0aGUgY2FjaGUsIHRoZSByZXNvdXJjZSBvZiB0aGUgZmFsbGJhY2sg
ZW50cnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmgKaW5kZXggZGM4NThmZGQ2ZDU0NTNlYjQzNTkyOGQzZWQ3NTc1NzA4MzU5
NDVlMC4uYjk2MzU2ZTc4NTYxMzg5NTZhZTRjMDU5ODMxNzBjZGY3MjM2NzJhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZTsKIGNsYXNzIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNz
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOwotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTUFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBE
b2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwpAQCAtMTA0LDggKzEwNCw4IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UoUmVz
b3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNlTG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpOwogCi0gICAgYm9vbCBtYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291
cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7Ci0gICAgdm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNo
cm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKKyAgICBib29sIG1h
eWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJl
c291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOworICAgIHZvaWQgbWF5YmVM
b2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNl
RXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKIAogICAg
IGJvb2wgY2FuQ2FjaGVJbkJhY2tGb3J3YXJkQ2FjaGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNw
cAppbmRleCA2NzEwOTU3YzNhYjc0YTc1OWZjMjc1MWZkN2EwNmIzMTFlNTE4Y2U1Li4yYmIzZmU3
NWI5OTc3ZTgzMzIyYWUyNTgwZjcyMTJlZTViZjIxNjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNw
cApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgdHlw
ZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkKK1Jl
ZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3Jl
YXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5z
aWduZWQgdHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCF1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVy
KCkpOwogICAgIGlmICghYnVmZmVyKQpAQCAtNDAsNyArNDAsNyBAQCBSZWY8QXBwbGljYXRpb25D
YWNoZVJlc291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBVUkwm
IHVybCwgYwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZShVUkwgeyB1cmwgfSwgV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSwgdHlwZSwgYnVmZmVyLnJl
bGVhc2VOb25OdWxsKCksIHBhdGgpKTsKIH0KIAotQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
cG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBwYXRoKQorQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5
cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgcGF0
aCkKICAgICA6IFN1YnN0aXR1dGVSZXNvdXJjZShXVEZNb3ZlKHVybCksIFdURk1vdmUocmVzcG9u
c2UpLCBXVEZNb3ZlKGRhdGEpKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3N0b3JhZ2VJ
RCgwKQpAQCAtNTEsNyArNTEsNyBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJgogCiB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQog
ewotICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5p
c0VtcHR5KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKKyAgICBsb2FkZXIuZGVsaXZl
clJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLm1h
a2VDb250aWd1b3VzKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSht
X3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUodW5z
aWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgKaW5kZXggODhjOTRkZTFhNzc0MTA0NjljOTMx
YTQyYTQ3OWIxZTY3NzdhNzAyZS4uYzI4OGU3MDM2YzY3NjJhZDQ4NzZiYTg4MTQ2OWE3NWQyMjM3
ZTFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIEZhbGxiYWNrID0gMSA8PCA0CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8QXBwbGljYXRp
b25DYWNoZVJlc291cmNlPiBjcmVhdGUoY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJpbmcoKSk7CisgICAgc3RhdGljIFJl
ZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjb25zdCBTdHJpbmcmIHBhdGggPSBTdHJp
bmcoKSk7CiAKICAgICB1bnNpZ25lZCB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAg
ICAgdm9pZCBhZGRUeXBlKHVuc2lnbmVkIHR5cGUpOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6
CiAjZW5kaWYKICAgICAKIHByaXZhdGU6Ci0gICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVS
TCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVS
TCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHBhdGgpOwogCiAgICAgdm9pZCBkZWxpdmVyKFJl
c291cmNlTG9hZGVyJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggMWM1MDg0N2E2ZTg5NTE3ODllM2IzZmJhZmRhODUxODY2MjkwZWViMC4uN2IyZmI2
YzljMjUzZDk0MzdmNDA3ZThjOTdiOGI1MDc0YzcxMjkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIG1f
YXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5kYXRhKCkuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Cisg
ICAgbV9hcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQog
CiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4m
JiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDk2OTZkZTE3NmQxNTliMTA3NjRi
ZWMzNTI0M2VkZGZjY2FjMGZlNzkuLjhjZjA1Y2NlMTg4MDEyOGRlNTliZTcwYTk5ODM2ZjVhNzQ1
YjZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtNzgzLDcgKzc4Myw2IEBAIGJvb2wgQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVz
b3VyY2UsIHVuc2lnbmVkCiAgICAgYXV0byBkYXRhU3RhdGVtZW50ID0gbV9kYXRhYmFzZS5wcmVw
YXJlU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBDYWNoZVJlc291cmNlRGF0YSAoZGF0YSwgcGF0aCkg
VkFMVUVTICg/LCA/KSJfcyk7CiAgICAgaWYgKCFkYXRhU3RhdGVtZW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgCiAKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgaWYgKCFyZXNvdXJj
ZS0+cGF0aCgpLmlzRW1wdHkoKSkKQEAgLTg3MywxMiArODcyLDEyIEBAIGJvb2wgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2Us
IHVuc2lnbmVkCiAgICAgCiAgICAgaWYgKCFleGVjdXRlU3RhdGVtZW50KGVudHJ5U3RhdGVtZW50
LnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICAvLyBEaWQgd2Ug
c3VjY2Vzc2Z1bGx5IHdyaXRlIHRoZSByZXNvdXJjZSBkYXRhIHRvIGEgZmlsZT8gSWYgc28sCiAg
ICAgLy8gcmVsZWFzZSB0aGUgcmVzb3VyY2UncyBkYXRhIGFuZCBmcmVlIHVwIGEgcG90ZW50aWFs
bHkgbGFyZ2UgYW1vdW50CiAgICAgLy8gb2YgbWVtb3J5OgogICAgIGlmICghZnVsbFBhdGguaXNF
bXB0eSgpKQotICAgICAgICByZXNvdXJjZS0+ZGF0YSgpLmNsZWFyKCk7CisgICAgICAgIHJlc291
cmNlLT5jbGVhcigpOwogCiAgICAgcmVzb3VyY2UtPnNldFN0b3JhZ2VJRChyZXNvdXJjZUlkKTsK
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMTMsNyArMTExMiw3IEBAIFJlZlB0cjxBcHBsaWNhdGlv
bkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3Jh
Z2VJRCkKICAgICAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVt
bkludCgxKTsKIAogICAgICAgICB1bnNpZ25lZCB0eXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgyKSk7Ci0gICAgICAgIGF1dG8gZGF0YSA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2
KSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNhY2hlU3RhdGVt
ZW50LT5jb2x1bW5CbG9iKDYpKTsKICAgICAgICAgCiAgICAgICAgIFN0cmluZyBwYXRoID0gY2Fj
aGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoNyk7CiAgICAgICAgIGxvbmcgbG9uZyBzaXplID0gMDsK
QEAgLTEyNzMsNyArMTI3Miw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnNob3Vs
ZFN0b3JlUmVzb3VyY2VBc0ZsYXRGaWxlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvCiAgICAgcmV0dXJu
IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgImF1ZGlvLyIpIHx8IHN0
YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgInZpZGVvLyIpOwogfQogICAg
IAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5E
aXJlY3RvcnkoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pCitib29sIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBwYXRo
LCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pCiB7CiAgICAgU3RyaW5nIGZ1bGxQYXRoOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuaAppbmRleCA5YTk1MzAwODc2NmE4ODg1NTYxYjM0ODg4OWI4Y2Vk
YTJiMmViMzM4Li40MTAyYTE4MDhiNDU1NTdiNjQ1ZTM2ZTdlNjgxZmM0YzZkMjA3Y2UyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBTdG9y
YWdlSURKb3VybmFsOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlPiB7CkBAIC0xMjIsNyArMTIyLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIGVuc3VyZU9yaWdpblJlY29yZChjb25zdCBTZWN1cml0eU9yaWdp
biopOwogICAgIHN0YXRpYyBib29sIHNob3VsZFN0b3JlUmVzb3VyY2VBc0ZsYXRGaWxlKEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZSopOwogICAgIHZvaWQgZGVsZXRlVGFibGVzKCk7Ci0gICAgYm9v
bCB3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBvdXRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBmaWxl
RXh0ZW5zaW9uKTsKKyAgICBib29sIHdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBv
dXRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKTsKIAogICAgIHZvaWQgbG9h
ZE1hbmlmZXN0SG9zdEhhc2hlcygpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCmluZGV4IDZkZTgwYzEwYWM3ZDI1Y2YzNDY5ZjZk
ZWYwZmFmNzI0MWY1OTY0MjguLjRlZjljZDY2YmQwODhiNzRjMDQ2YzA2OTBkMWU5ZDNlNWUzMzYw
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0
b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9y
eS5jcHAKQEAgLTQ2LDEyICs0NiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVk
ZWYgUmVmUHRyPEFyY2hpdmU+IFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKGNvbnN0IFVSTCYsIFNo
YXJlZEJ1ZmZlciYpOwordHlwZWRlZiBSZWZQdHI8QXJjaGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVu
Y3Rpb24oY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogdHlwZWRlZiBIYXNo
TWFwPFN0cmluZywgUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24qLCBBU0NJSUNhc2VJbnNlbnNpdGl2
ZUhhc2g+IEFyY2hpdmVNSU1FVHlwZXNNYXA7CiAKIC8vIFRoZSBjcmVhdGUgZnVuY3Rpb25zIGlu
IHRoZSBhcmNoaXZlIGNsYXNzZXMgcmV0dXJuIFJlZlB0ciB0byBjb25jcmV0ZSBzdWJjbGFzc2Vz
CiAvLyBvZiBBcmNoaXZlLiBUaGlzIGFkYXB0b3IgbWFrZXMgdGhlIGZ1bmN0aW9ucyBoYXZlIGEg
dW5pZm9ybSByZXR1cm4gdHlwZS4KLXRlbXBsYXRlPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3Rh
dGljIFJlZlB0cjxBcmNoaXZlPiBhcmNoaXZlRmFjdG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBBcmNoaXZlQ2xhc3M+IHN0
YXRpYyBSZWZQdHI8QXJjaGl2ZT4gYXJjaGl2ZUZhY3RvcnlDcmVhdGUoY29uc3QgVVJMJiB1cmws
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gQXJjaGl2ZUNs
YXNzOjpjcmVhdGUodXJsLCBidWZmZXIpOwogfQpAQCAtODMsNyArODMsNyBAQCBib29sIEFyY2hp
dmVGYWN0b3J5Ojppc0FyY2hpdmVNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAg
IHJldHVybiAhbWltZVR5cGUuaXNFbXB0eSgpICYmIGFyY2hpdmVNSU1FVHlwZXMoKS5jb250YWlu
cyhtaW1lVHlwZSk7CiB9CiAKLVJlZlB0cjxBcmNoaXZlPiBBcmNoaXZlRmFjdG9yeTo6Y3JlYXRl
KGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpCitSZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBVUkwmIHVy
bCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
IHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKaW5kZXggMjFkMjM2NWNmOGQ5
ZDkwMWVmZTdhYWQ1NTJiZjNkYTQwNjlmZTQwZC4uNTU2NDUxNWM5ZTBkOWQwMzNiNzkwYzc0NzI4
NWEyNTg1M2FiZTAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
QXJjaGl2ZUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNo
aXZlRmFjdG9yeS5oCkBAIC0zNCwxMiArMzQsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBBcmNoaXZlRmFjdG9yeSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNBcmNoaXZl
TUlNRVR5cGUoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBjcmVh
dGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KTsKKyAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKICAgICBzdGF0
aWMgdm9pZCByZWdpc3Rlcktub3duQXJjaGl2ZU1JTUVUeXBlcyhIYXNoU2V0PFN0cmluZywgQVND
SUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKaW5kZXggZmMyMGRhM2RhMDMyY2JlZjc0
ZjJlOWM4NDI4YWNiNGVlMzdiZWYyMy4uMDczODM5NGE4Mjg3MTRhYTBiOTBlZTc1MDc5ZDQ4NmY1
YjBlODY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
UmVzb3VyY2UuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
aW5saW5lIEFyY2hpdmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+
JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCitpbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVz
b3VyY2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25z
dCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAg
ICAgOiBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMIHsgdXJsIH0sIFJlc291cmNlUmVzcG9uc2UgeyBy
ZXNwb25zZSB9LCBXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAg
ICAsIG1fdGV4dEVuY29kaW5nKHRleHRFbmNvZGluZykKQEAgLTQyLDcgKzQyLDcgQEAgaW5saW5l
IEFyY2hpdmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0
YSwgY29uc3QgVVJMJiB1cmwKIHsKIH0KIAotUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2
ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rpbmcs
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKK1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01NCw3ICs1NCw3IEBAIFJlZlB0
cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgZGF0YSwgY29uCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXJjaGl2ZVJlc291
cmNlKGRhdGEucmVsZWFzZU5vbk51bGwoKSwgdXJsLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nLCBm
cmFtZU5hbWUsIHJlc3BvbnNlKSk7CiB9CiAKLVJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hp
dmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQogewogICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShkYXRhKSwgdXJsLCByZXNwb25z
ZS5taW1lVHlwZSgpLCByZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCksIFN0cmluZygpLCByZXNw
b25zZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNo
aXZlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNv
dXJjZS5oCmluZGV4IDIwOWU5NzE3YWViMDkzNjBkYjM5MjdlNmVmYTFlNWJmMWMyYzk3Y2EuLjA1
NDhlZjcyMWVmZDI3YzAwY2U5M2QxMjI3MGVjZWM0NmMwMmFmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oCkBAIC0zNCw4ICszNCw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXJjaGl2ZVJlc291cmNlIDogcHVibGljIFN1
YnN0aXR1dGVSZXNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVz
b3VyY2U+IGNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLAor
ICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRl
KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLAogICAgICAgICBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3Qg
U3RyaW5nJiBmcmFtZU5hbWUsCiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmID0gUmVz
b3VyY2VSZXNwb25zZSgpKTsKIApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBz
aG91bGRJZ25vcmVXaGVuVW5hcmNoaXZpbmcoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZElnbm9y
ZVdoZW5VbmFyY2hpdmluZzsgfQogCiBwcml2YXRlOgotICAgIEFyY2hpdmVSZXNvdXJjZShSZWY8
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKKyAgICBBcmNoaXZlUmVzb3VyY2UoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwogCiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgU3RyaW5nIG1fdGV4
dEVuY29kaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCBmNWVjNGRkNjdmN2RmOGQ5ZGEyMDliNDBlMjNjMDQz
OWI2ZTY4YjAzLi43MTE1MGNiZGQ4OTY5ZTZhZjAyODY4NGI2YmY2Y2JjMGE1MGIyZmM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNo
aXZlLmNwcApAQCAtMjQ4LDEyICsyNDgsMTIgQEAgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmIG1haW5SZXNvdXIKICAg
ICByZXR1cm4gYXJjaGl2ZTsKIH0KIAotUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEpCitSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShVUkwoKSwgZGF0YSk7CiB9CiAKLVJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVk
QnVmZmVyJiBkYXRhKQorUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAg
IExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBmcm9tIHJhdyBkYXRh
Iik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2Fj
eVdlYkFyY2hpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdl
YkFyY2hpdmUuaAppbmRleCBkMDllYzlmNzVhYmExMzZhODYzMzllYjRkODZhYmQ4Mjc3YzRmZjA0
Li41YTA3YjEwYjRiZTZmODYyMDExYTc4MmE3ZGVkMjM2NzU5MjQzNjI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCkBAIC00
MSw4ICs0MSw4IEBAIHN0cnVjdCBTaW1wbGVSYW5nZTsKIGNsYXNzIExlZ2FjeVdlYkFyY2hpdmUg
ZmluYWwgOiBwdWJsaWMgQXJjaGl2ZSB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShTaGFyZWRCdWZmZXImKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShj
b25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUo
Y29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKFJlZjxBcmNoaXZlUmVzb3VyY2U+
JiYgbWFpblJlc291cmNlLCBWZWN0b3I8UmVmPEFyY2hpdmVSZXNvdXJjZT4+JiYgc3VicmVzb3Vy
Y2VzLCBWZWN0b3I8UmVmPExlZ2FjeVdlYkFyY2hpdmU+PiYmIHN1YmZyYW1lQXJjaGl2ZXMpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRl
KE5vZGUmLCBGdW5jdGlvbjxib29sKEZyYW1lJik+JiYgZnJhbWVGaWx0ZXIgPSB7IH0pOwogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKEZy
YW1lJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTEFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhU
TUxBcmNoaXZlLmNwcAppbmRleCBhY2ZiYmI3MDIwMjJkMDZhZmU2MjAwNDA0ODdmZDM0ZDkyMWQ3
MjdjLi5kMDEzOWY4N2EwNmY5Njk3OGI3NDc3ZTlmNDk5OWMzNGVhOWY4NjI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAK
QEAgLTEwNiw3ICsxMDYsNyBAQCBSZWY8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0
ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTUhUTUxBcmNoaXZlKTsKIH0KIAotUmVmUHRy
PE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRl
KGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIC8v
IEZvciBzZWN1cml0eSByZWFzb25zIHdlIG9ubHkgbG9hZCBNSFRNTCBwYWdlcyBmcm9tIGxvY2Fs
IFVSTHMuCiAgICAgaWYgKCFMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hl
bWVBc0xvY2FsKHVybC5wcm90b2NvbCgpLnRvU3RyaW5nKCkpKQpAQCAtMTMwLDcgKzEzMCw3IEBA
IFJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJs
LCBTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgcmV0dXJuIG1haW5BcmNoaXZlOwogfQogCi1SZWY8
U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqIHBhZ2Up
CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1M
RGF0YShQYWdlKiBwYWdlKQogewogICAgIFZlY3RvcjxQYWdlU2VyaWFsaXplcjo6UmVzb3VyY2U+
IHJlc291cmNlczsKICAgICBQYWdlU2VyaWFsaXplciBwYWdlU2VyaWFsaXplcihyZXNvdXJjZXMp
OwpAQCAtMTYyLDggKzE2Miw4IEBAIFJlZjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2Vu
ZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkKICAgICAvLyBXZSB1c2UgdXRmOCgpIGJlbG93IGlu
c3RlYWQgb2YgYXNjaWkoKSBhcyBhc2NpaSgpIHJlcGxhY2VzIENSTEZzIHdpdGggPz8gKHdlIHN0
aWxsIG9ubHkgaGF2ZSBwdXQgQVNDSUkgY2hhcmFjdGVycyBpbiBpdCkuCiAgICAgQVNTRVJUKHN0
cmluZ0J1aWxkZXIudG9TdHJpbmcoKS5pc0FsbEFTQ0lJKCkpOwogICAgIENTdHJpbmcgYXNjaWlT
dHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgIGF1dG8gbWh0bWxE
YXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLSAgICBtaHRtbERhdGEtPmFwcGVuZChhc2Np
aVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIG1odG1sRGF0YTsKKyAgICBtaHRtbERhdGEuYXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEo
KSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOwogCiAgICAgZm9yIChhdXRvJiByZXNvdXJjZSA6IHJl
c291cmNlcykgewogICAgICAgICBzdHJpbmdCdWlsZGVyLmNsZWFyKCk7CkBAIC0xNzgsMTUgKzE3
OCwxNSBAQCBSZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRlTUhUTUxEYXRh
KFBhZ2UqIHBhZ2UpCiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcclxuQ29udGVudC1U
cmFuc2Zlci1FbmNvZGluZzogIiwgY29udGVudEVuY29kaW5nLCAiXHJcbkNvbnRlbnQtTG9jYXRp
b246ICIsIHJlc291cmNlLnVybC5zdHJpbmcoKSwgIlxyXG5cclxuIik7CiAKICAgICAgICAgYXNj
aWlTdHJpbmcgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwotICAgICAgICBtaHRt
bERhdGEtPmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5nLmxlbmd0aCgpKTsK
KyAgICAgICAgbWh0bWxEYXRhLmFwcGVuZChhc2NpaVN0cmluZy5kYXRhKCksIGFzY2lpU3RyaW5n
Lmxlbmd0aCgpKTsKIAogICAgICAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSB3b3VsZCBlbmNvZGUg
dGhlIGNvbnRlbnQgYXMgYSBzdHJlYW0gd2l0aG91dCBoYXZpbmcgdG8gZmV0Y2ggaXQgYWxsLgog
ICAgICAgICBhdXRvKiBkYXRhID0gcmVzb3VyY2UuZGF0YS0+ZGF0YSgpOwogICAgICAgICBzaXpl
X3QgZGF0YUxlbmd0aCA9IHJlc291cmNlLmRhdGEtPnNpemUoKTsKICAgICAgICAgaWYgKCFzdHJj
bXAoY29udGVudEVuY29kaW5nLCBxdW90ZWRQcmludGFibGUpKSB7CiAgICAgICAgICAgICBhdXRv
IGVuY29kZWREYXRhID0gcXVvdGVkUHJpbnRhYmxlRW5jb2RlKGRhdGEsIGRhdGFMZW5ndGgpOwot
ICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVk
RGF0YS5zaXplKCkpOwotICAgICAgICAgICAgbWh0bWxEYXRhLT5hcHBlbmQoIlxyXG4iLCAyKTsK
KyAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpLCBlbmNvZGVk
RGF0YS5zaXplKCkpOworICAgICAgICAgICAgbWh0bWxEYXRhLmFwcGVuZCgiXHJcbiIsIDIpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKCFzdHJjbXAoY29udGVudEVuY29k
aW5nLCBiYXNlNjQpKTsKICAgICAgICAgICAgIC8vIFdlIGFyZSBub3Qgc3BlY2lmeWluZyBpbnNl
cnRMRnMgPSB0cnVlIGJlbG93IGFzIGl0IHdvdWxkIGN1dCB0aGUgbGluZXMgd2l0aCBMRnMgYW5k
IE1IVE1MIHJlcXVpcmVzIENSTEZzLgpAQCAtMTk2LDE3ICsxOTYsMTcgQEAgUmVmPFNoYXJlZEJ1
ZmZlcj4gTUhUTUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogICAgICAg
ICAgICAgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoID0gZW5jb2RlZERhdGEuc2l6ZSgpOwogICAg
ICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgIHNpemVfdCBsaW5lTGVuZ3RoID0gc3RkOjpt
aW4oZW5jb2RlZERhdGFMZW5ndGggLSBpbmRleCwgbWF4aW11bUxpbmVMZW5ndGgpOwotICAgICAg
ICAgICAgICAgIG1odG1sRGF0YS0+YXBwZW5kKGVuY29kZWREYXRhLmRhdGEoKSArIGluZGV4LCBs
aW5lTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBtaHRtbERhdGEtPmFwcGVuZCgiXHJcbiIsIDIp
OworICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoZW5jb2RlZERhdGEuZGF0YSgpICsg
aW5kZXgsIGxpbmVMZW5ndGgpOworICAgICAgICAgICAgICAgIG1odG1sRGF0YS5hcHBlbmQoIlxy
XG4iLCAyKTsKICAgICAgICAgICAgICAgICBpbmRleCArPSBtYXhpbXVtTGluZUxlbmd0aDsKICAg
ICAgICAgICAgIH0gd2hpbGUgKGluZGV4IDwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9
CiAgICAgfQogCiAgICAgYXNjaWlTdHJpbmcgPSBtYWtlU3RyaW5nKCItLSIsIGJvdW5kYXJ5LCAi
LS1cclxuIikudXRmOCgpOwotICAgIG1odG1sRGF0YS0+YXBwZW5kKGFzY2lpU3RyaW5nLmRhdGEo
KSwgYXNjaWlTdHJpbmcubGVuZ3RoKCkpOworICAgIG1odG1sRGF0YS5hcHBlbmQoYXNjaWlTdHJp
bmcuZGF0YSgpLCBhc2NpaVN0cmluZy5sZW5ndGgoKSk7CiAKLSAgICByZXR1cm4gbWh0bWxEYXRh
OworICAgIHJldHVybiBtaHRtbERhdGEudGFrZSgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oCmluZGV4IDNkMmRiN2M5
NjAwMmViZTY4NGIyYmVmOGYxZWE5ZTJlOTc5NGE1ODkuLjJkZmU4N2U4MmU3YTRkY2UwZjM0MWMz
NjE5NDNjOTkwMjA1YzhkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MQXJjaGl2ZS5oCkBAIC0zOCwxNCArMzgsMTQgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBNSFRNTFBhcnNlcjsKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNSFRNTEFyY2hp
dmUgZmluYWwgOiBwdWJsaWMgQXJjaGl2ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNSFRN
TEFyY2hpdmU+IGNyZWF0ZSgpOwotICAgIHN0YXRpYyBSZWZQdHI8TUhUTUxBcmNoaXZlPiBjcmVh
dGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxNSFRNTEFy
Y2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKLSAg
ICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZ2VuZXJhdGVNSFRNTERhdGEoUGFnZSopOworICAg
IHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZ2VuZXJhdGVNSFRNTERhdGEoUGFn
ZSopOwogCiAgICAgdmlydHVhbCB+TUhUTUxBcmNoaXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCA3MzM2YjM3
ZGUzYmRkZGE2ZmEzZGY5NjMyZjliNmMzMWQ0MmM1MzJmLi5lNTE4NmVmYjBiNGZhNzBjYjYwOTMx
ZjQ4NGU1MDBjYzEwZTAwYmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyBib29s
IHNraXBMaW5lc1VudGlsQm91bmRhcnlGb3VuZChTaGFyZWRCdWZmZXJDaHVua1JlYWRlciYgbGlu
ZVJlYWRlciwgY29uCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1NSFRNTFBhcnNlcjo6TUhUTUxQ
YXJzZXIoU2hhcmVkQnVmZmVyKiBkYXRhKQorTUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2VyKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgOiBtX2xpbmVSZWFkZXIoZGF0YSwgIlxyXG4i
KQogewogfQpAQCAtMTQwLDcgKzE0MCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1M
UGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiB7CiAg
ICAgQVNTRVJUKGVuZE9mUGFydEJvdW5kYXJ5LmlzRW1wdHkoKSA9PSBlbmRPZkRvY3VtZW50Qm91
bmRhcnkuaXNFbXB0eSgpKTsKIAotICAgIGF1dG8gY29udGVudCA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBjb250ZW50OwogICAgIGNvbnN0IGJvb2wg
Y2hlY2tCb3VuZGFyeSA9ICFlbmRPZlBhcnRCb3VuZGFyeS5pc0VtcHR5KCk7CiAgICAgYm9vbCBl
bmRPZlBhcnRSZWFjaGVkID0gZmFsc2U7CiAgICAgaWYgKG1pbWVIZWFkZXIuY29udGVudFRyYW5z
ZmVyRW5jb2RpbmcoKSA9PSBNSU1FSGVhZGVyOjpCaW5hcnkpIHsKQEAgLTE1NCw3ICsxNTQsNyBA
QCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25z
dCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICAgICAgTE9HX0VSUk9SKCJCaW5hcnkg
Y29udGVudHMgcmVxdWlyZXMgZW5kIG9mIHBhcnQiKTsKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRlbnQtPmFwcGVuZChXVEZNb3ZlKHBhcnQpKTsK
KyAgICAgICAgY29udGVudC5hcHBlbmQoV1RGTW92ZShwYXJ0KSk7CiAgICAgICAgIG1fbGluZVJl
YWRlci5zZXRTZXBhcmF0b3IoIlxyXG4iKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IG5leHRD
aGFyczsKICAgICAgICAgaWYgKG1fbGluZVJlYWRlci5wZWVrKG5leHRDaGFycywgMikgIT0gMikg
ewpAQCAtMTgwLDEwICsxODAsMTAgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJz
ZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3
ZSB1c2UgbGluZS51dGY4KCkgYW5kIG5vdCBsaW5lLmFzY2lpKCkgYXMgYXNjaWkgdHVybnMgc3Bl
Y2lhbCBjaGFyYWN0ZXJzIChzdWNoIGFzIHRhYiwgbGluZS1mZWVkLi4uKSBpbnRvICc/Jy4KLSAg
ICAgICAgICAgIGNvbnRlbnQtPmFwcGVuZChsaW5lLnV0ZjgoKS5kYXRhKCksIGxpbmUubGVuZ3Ro
KCkpOworICAgICAgICAgICAgY29udGVudC5hcHBlbmQobGluZS51dGY4KCkuZGF0YSgpLCBsaW5l
Lmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmIChtaW1lSGVhZGVyLmNvbnRlbnRUcmFuc2ZlckVu
Y29kaW5nKCkgPT0gTUlNRUhlYWRlcjo6UXVvdGVkUHJpbnRhYmxlKSB7CiAgICAgICAgICAgICAg
ICAgLy8gVGhlIGxpbmUgcmVhZGVyIHJlbW92ZXMgdGhlIFxyXG4sIGJ1dCB3ZSBuZWVkIHRoZW0g
Zm9yIHRoZSBjb250ZW50IGluIHRoaXMgY2FzZSBhcyB0aGUgUXVvdGVkUHJpbnRhYmxlIGRlY29k
ZXIgZXhwZWN0cyBDUi1MRiB0ZXJtaW5hdGVkIGxpbmVzLgotICAgICAgICAgICAgICAgIGNvbnRl
bnQtPmFwcGVuZCgiXHJcbiIsIDIpOworICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKCJc
clxuIiwgMik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTMsMTAgKzE5
MywxMCBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFy
dChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhOwotICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBjb250ZW50LT5tYWtlQ29u
dGlndW91cygpOworICAgIGF1dG8gY29udGlndW91c0NvbnRlbnQgPSBjb250ZW50LnRha2VBc0Nv
bnRpZ3VvdXMoKTsKICAgICBzd2l0Y2ggKG1pbWVIZWFkZXIuY29udGVudFRyYW5zZmVyRW5jb2Rp
bmcoKSkgewogICAgIGNhc2UgTUlNRUhlYWRlcjo6QmFzZTY0OiB7Ci0gICAgICAgIGF1dG8gZGVj
b2RlZERhdGEgPSBiYXNlNjREZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGVu
dC0+c2l6ZSgpKTsKKyAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGJhc2U2NERlY29kZShjb250
aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgpKTsKICAgICAg
ICAgaWYgKCFkZWNvZGVkRGF0YSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGJh
c2U2NCBjb250ZW50IGZvciBNSFRNTCBwYXJ0LiIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0yMDUsMTcgKzIwNSwxNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBh
cnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpRdW90ZWRQcmludGFibGU6Ci0g
ICAgICAgIGRhdGEgPSBxdW90ZWRQcmludGFibGVEZWNvZGUoY29udGlndW91c0NvbnRlbnQtPmRh
dGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YSA9IHF1b3RlZFByaW50YWJsZURl
Y29kZShjb250aWd1b3VzQ29udGVudC0+ZGF0YSgpLCBjb250aWd1b3VzQ29udGVudC0+c2l6ZSgp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNSU1FSGVhZGVyOjpTZXZlbkJpdDoKICAgICBj
YXNlIE1JTUVIZWFkZXI6OkJpbmFyeToKLSAgICAgICAgZGF0YS5hcHBlbmQoY29udGlndW91c0Nv
bnRlbnQtPmRhdGEoKSwgY29udGVudC0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YS5hcHBlbmQoY29u
dGlndW91c0NvbnRlbnQtPmRhdGEoKSwgY29udGlndW91c0NvbnRlbnQtPnNpemUoKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBlbmNv
ZGluZyBmb3IgTUhUTUwgcGFydC4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQot
ICAgIGF1dG8gY29udGVudEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGRhdGEpKTsKKyAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAgICAvLyBGSVhNRTogdGhlIFVSTCBpbiB0aGUgTUlNRSBo
ZWFkZXIgY291bGQgYmUgcmVsYXRpdmUsIHdlIHNob3VsZCByZXNvbHZlIGl0IGlmIGl0IGlzLgog
ICAgIC8vIFRoZSBzcGVjcyBtZW50aW9ucyA1IHdheXMgdG8gcmVzb2x2ZSBhIFVSTDogaHR0cDov
L3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjU1NyNzZWN0aW9uLTUKICAgICAvLyBJRSBhbmQgRmly
ZWZveCAoVU5NaHQpIHNlZW0gdG8gZ2VuZXJhdGUgb25seSBhYnNvbHV0ZSBVUkxzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmgKaW5kZXgg
MWU5YmQ0ZDc3NjdlZTM5MWEwMDIyZjcxNzQ4ZjAwYjg1YzgxYjI1Zi4uMGQ2MDQzNDNmM2Q3YWQx
NzhjYzIyMDAzYzk3OWMyMmU1MGEzYjk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oCkBAIC00MiwxMSArNDIsMTEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwogY2xhc3MgTUhUTUxBcmNoaXZl
OwogY2xhc3MgTUlNRUhlYWRlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1IVE1MUGFyc2VyIHsKIHB1YmxpYzoKLSAgICBleHBs
aWNpdCBNSFRNTFBhcnNlcihTaGFyZWRCdWZmZXIqKTsKKyAgICBleHBsaWNpdCBNSFRNTFBhcnNl
cihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICAgICBSZWZQdHI8TUhUTUxBcmNoaXZlPiBw
YXJzZUFyY2hpdmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4IDg0YWE3MmRmMTk2MDNhMTlm
YWM4ZjJkMGQ3NDI5Y2ZiOGQ1N2U3NzMuLmRkZDBiMWI4OWIxZDg3MmJiNDI3MjdlZTc4ZDhmZDYz
OWU0Yjg5NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRB
cHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgQ2FjaGVkQXBw
bGljYXRpb25NYW5pZmVzdDo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdChDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJiByZXEKIHsKIH0KIAotdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Ojpm
aW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQordm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5n
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBkYXRh
LT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5kZXggMDdmMmEwNzljNTY0ZWVmZmI2
OTdjMzdjNzg1NjVlMWVhOGQ5YWU1ZS4uMzc5OGE5YjRkOTAxM2NmZGVhNmY1NmZiZGYwMDE1YWY4
OTQ3NTcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFw
cGxpY2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBz
dGQ6Om9wdGlvbmFsPHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0PiBwcm9jZXNzKGNvbnN0IFVS
TCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERvY3VtZW50KiA9IG51bGxw
dHIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRp
bmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJj
ZURlY29kZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIucHRyKCk7IH0KICAg
ICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBl
bmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDY2ZDNlYWM1YjVkY2M2MDFkOGUw
MTY3MjcyNzY3ZTUzZmEyZjhjNTAuLjM4YTJlMTdmMGQwNmM4YWM5OGRlMjRiMWU1MmI4ZTYwZTky
NDEyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NT
dHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0
OjpzZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgICAg
ICBzYXZlUGFyc2VkU3R5bGVTaGVldCgqc2hlZXQubV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUpOwog
fQogCi12b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZENT
U1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRh
KSB7CiAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAppbmRleCA1ZDRk
ZDNkYzdlMzUzZWUzY2IyZmI5M2YyNzhkMjU3OWI4ZDlhN2ExLi5lNjU1YzY5ZTNlZGI2MDk1MDIz
OWNjZTQ1NDVmMDk2YjUyNjU2ZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNv
ZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRS
ZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0K
LSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lk
IGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRCb2R5RGF0YUZyb20o
Y29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmNwcAppbmRleCBmNjQzMzNmMDQzMzZiMzZjNjEwN2E0NjMwYzAyNDE3ZTQ4
NGEyNWNjLi5kMmJjMjgyMTQ3OWM1OWEyMzIzZTRmNjVjZDk0YjYzYjQyMzczNjQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC02NCw3ICs2NCw3IEBA
IHZvaWQgQ2FjaGVkRm9udDo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjbGll
bnQpCiAgICAgICAgIHN0YXRpY19jYXN0PENhY2hlZEZvbnRDbGllbnQmPihjbGllbnQpLmZvbnRM
b2FkZWQoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoU2hhcmVk
QnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENh
Y2hlZEZvbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7
CiAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CkBAIC05NSw3ICs5NSw3
IEBAIFN0cmluZyBDYWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QK
ICAgICByZXR1cm4gdXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCkudG9TdHJpbmcoKTsKIH0KIAot
Ym9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKiBkYXRhKQorYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRC
dWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIWVy
cm9yT2NjdXJyZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAgICBib29sIHdy
YXBwaW5nOwpAQCAtMTA4LDcgKzEwOCw3IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9t
Rm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1cm4gbV9mb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmdldCgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9v
bCYgd3JhcHBpbmcpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gQ2Fj
aGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3Qg
U3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZykKIHsKICAgICBSZWZQdHIg
YnVmZmVyID0geyAmYnl0ZXMgfTsKICAgICB3cmFwcGluZyA9ICFjb252ZXJ0V09GRlRvU2ZudElm
TmVjZXNzYXJ5KGJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aAppbmRleCAwYjdlZDliZjFjNjA5OWY1NzVhYWIzMGU5NTM0MWYxNzZmODExODZkLi4xMzQ2NmNj
OTlkMGQxOWNiZjNkOGVmM2RmYmQ5NmYzNGQwZjg1NDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wg
c3RpbGxOZWVkc0xvYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5pdGlhdGVk
OyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0
cmluZyYgcmVtb3RlVVJJKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUN1c3Rv
bUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwg
Ym9vbCYgd3JhcHBpbmcpOwogICAgIHN0YXRpYyBGb250UGxhdGZvcm1EYXRhIHBsYXRmb3JtRGF0
YUZyb21DdXN0b21EYXRhKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEmLCBjb25zdCBGb250RGVzY3Jp
cHRpb24mLCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0
Jik7CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxGb250PiBjcmVhdGVGb250KGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYsIGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSwgYm9vbCBzeW50aGV0aWNCb2xk
LCBib29sIHN5bnRoZXRpY0l0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwpAQCAt
NjIsNyArNjIsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRm9udFBsYXRmb3JtRGF0YSBw
bGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJv
bGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAKLSAgICBib29s
IGVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGRhdGEpOworICAg
IGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKIAogcHJpdmF0
ZToKICAgICBTdHJpbmcgY2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0OwpAQCAtNzQs
NyArNzQsNyBAQCBwcml2YXRlOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgc2V0
Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikgZmluYWwgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQogCiAgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQm
KSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggNzJjMTlmNjU3
YmQ0NzdjMTNhOThkMDFkYjgwZWZjMDU3MGFkYzg5ZS4uOTQ2Mjc5NTIwZDBkYTQ0NjIyYzZhY2Qz
NjY2MjI4ODEwNWU4MTk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwCkBAIC00NjgsNyArNDY4LDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNs
ZWFySW1hZ2UoKQogICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lkIENh
Y2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lk
IENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhKQogewogICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKICAg
ICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CkBAIC01MjMsMTQgKzUyMywxNCBAQCBi
b29sIENhY2hlZEltYWdlOjpzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0CiAgICAg
cmV0dXJuIChNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fbGFzdFVwZGF0ZUltYWdlRGF0YVRpbWUp
LnNlY29uZHMoKSA8IHVwZGF0ZUltYWdlRGF0YUJhY2tvZmZJbnRlcnZhbHNbaW50ZXJ2YWxdOwog
fQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRl
ZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CiB7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICBpZiAoIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCiAgICAgICAgIHJl
dHVybiBkYXRhLT5tYWtlQ29udGlndW91cygpOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShX
RUJLSVRfSU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRh
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOworICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERh
dGFUb1BERihkYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOwog
I2Vsc2UKICAgICAvLyBMb2FkaW5nIHRoZSBpbWFnZSBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGVk
IGlmIHRoZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBjb252ZXJ0aW5nIFBvc3RTY3JpcHQgdG8g
UERGLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTU1LDcgKzU1NSw3IEBAIEVuY29k
ZWREYXRhU3RhdHVzIENhY2hlZEltYWdlOjp1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRl
QnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZl
cihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFTU0VSVChkYXRh
QnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAg
ICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoZGF0YSk7CkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBD
YWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5n
dGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKIH0KIAot
dm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExv
YWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIG1fZGF0YSA9IGNvbnZlcnRlZERhdGFJZk5lZWRl
ZChkYXRhKTsKICAgICBpZiAobV9kYXRhKSB7CkBAIC01OTUsNyArNTk1LDcgQEAgdm9pZCBDYWNo
ZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWUKIHZvaWQgQ2FjaGVkSW1hZ2U6OmRpZFJlcGxhY2VTaGFyZWRCdWZmZXJD
b250ZW50cygpCiB7CiAgICAgaWYgKG1faW1hZ2UpIHsKLSAgICAgICAgLy8gTGV0IHRoZSBJbWFn
ZSBrbm93IHRoYXQgdGhlIFNoYXJlZEJ1ZmZlciBoYXMgYmVlbiByZWppZ2dlZCwgc28gaXQgY2Fu
IGxldCBnbyBvZiBhbnkgcmVmZXJlbmNlcyB0byB0aGUgaGVhcC1hbGxvY2F0ZWQgcmVzb3VyY2Ug
YnVmZmVyLgorICAgICAgICAvLyBMZXQgdGhlIEltYWdlIGtub3cgdGhhdCB0aGUgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciBoYXMgYmVlbiByZWppZ2dlZCwgc28gaXQgY2FuIGxldCBnbyBvZiBhbnkg
cmVmZXJlbmNlcyB0byB0aGUgaGVhcC1hbGxvY2F0ZWQgcmVzb3VyY2UgYnVmZmVyLgogICAgICAg
ICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8yNDI3NTYxNyk6IEl0IHdvdWxkIGJlIGJldHRlciBp
ZiB3ZSBjb3VsZCBzb21laG93IHRlbGwgdGhlIEltYWdlJ3MgZGVjb2RlciB0byBzd2FwIGluIHRo
ZSBuZXcgY29udGVudHMgd2l0aG91dCBkZXN0cm95aW5nIGFueXRoaW5nLgogICAgICAgICBtX2lt
YWdlLT5kZXN0cm95RGVjb2RlZERhdGEodHJ1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCA1YzM2ZjkwODM5NjMyZjc5OTQ5ZjQyMmE0OGFi
ODczYjEyODM0MmY1Li4wODNmOTJmODg4Mjc2ZWVkYTg5OTEyMDMxZDI0NDlhOTY4ZTI2NWQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtNjksOCArNjks
OCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtX2ltYWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlV2lkdGgoKTsgfQogICAgIGJvb2wg
aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFn
ZS0+aGFzUmVsYXRpdmVIZWlnaHQoKTsgfQogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hhcmVk
QnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVm
ZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZp
bmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgZW51bSBTaXplVHlwZSB7CiAgICAgICAgIFVz
ZWRTaXplLApAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXN0cm95RGVj
b2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkRGVmZXJVcGRhdGVJbWFnZURh
dGEoKSBjb25zdDsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydGVk
RGF0YUlmTmVlZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CisgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5j
b2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAg
ICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBv
dmVycmlkZTsKQEAgLTE2OSw3ICsxNjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdlZElu
UmVjdChjb25zdCBJbWFnZSYsIGNvbnN0IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVu
ZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVy
bmFsKFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVm
ZmVyQ29udGVudHMoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggYzhmNWQyY2I2ZmQyZGVkYTkxOTZlNmJj
NGJkNGU2NTE1ZjhkZTU2YS4uNzFlMTYwODJmZmU2NTVkMTExZjE2OTkwZDEyMzA1MzViZWFjYmY5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwCkBAIC00OCw3ICs0OCw3IEBAIENhY2hlZFJhd1Jlc291cmNlOjpDYWNoZWRSYXdSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUeXBlIHR5cGUsCiAgICAgQVNT
RVJUKGlzTWFpbk9yTWVkaWFPckljb25PclJhd1Jlc291cmNlKCkpOwogfQogCi1zdGQ6Om9wdGlv
bmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5j
cmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorc3RkOjpv
cHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0
ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEp
IGNvbnN0CiB7CiAgICAgc2l6ZV90IHByZXZpb3VzRGF0YUxlbmd0aCA9IGVuY29kZWRTaXplKCk7
CiAgICAgaWYgKCFkYXRhIHx8IGRhdGEtPnNpemUoKSA8PSBwcmV2aW91c0RhdGFMZW5ndGgpCkBA
IC01Niw3ICs1Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hl
ZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDCiAgICAgcmV0dXJuIGRhdGEt
PmdldFNvbWVEYXRhKHByZXZpb3VzRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVz
b3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZFJhd1Jl
c291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKICAgICAvLyBTa2lwIGFueSB1cGRhdGVCdWZmZXJzIHRyaWdnZXJlZCBmcm9tIG5lc3RlZCBy
dW5sb29wcy4gV2UnbGwgaGF2ZSB0aGUgY29tcGxldGUgYnVmZmVyIGluIGZpbmlzaExvYWRpbmcu
CiAgICAgaWYgKG1faW5JbmNyZW1lbnRhbERhdGFOb3RpZnkpCkBAIC05Niw3ICs5Niw3IEBAIHZv
aWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0
aCk7CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAobV9p
bkluY3JlbWVudGFsRGF0YU5vdGlmeSkgewogICAgICAgICAvLyBXZSBtYXkgZ2V0IGhlcmUgc3lu
Y2hyb25vdXNseSBmcm9tIHVwZGF0ZUJ1ZmZlcigpIGlmIHRoZSBjYWxsYmFjayB0aGVyZSBlbmRz
IHVwIHNwaW5uaW5nIGEgcnVubG9vcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXggODRlMGQ4NDRkNTcxMDk5NTNhZTZiZmY2NTU2NTk5
NTNlMjhiYTY5Yi4uYTc4NjVmOGFkMTc4YWVmYjMyMjBhNTZkY2ZmMTk1OTkzY2Y5NWFlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAg
LTUxLDkgKzUxLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkQWRkQ2xpZW50
KENhY2hlZFJlc291cmNlQ2xpZW50JikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVCdWZmZXIoU2hh
cmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIGZpbmFsOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lk
IGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVz
Q29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGFs
bENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlKCkgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2FsbG93RW5jb2RlZERhdGFSZXBsYWNlbWVudDsgfQogCi0gICAgc3RkOjpvcHRpb25hbDxT
aGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3Qg
U2hhcmVkQnVmZmVyKikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRh
Vmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciopIGNvbnN0OwogICAgIHZvaWQgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIAogI2lmIFVTRShRVUlD
S19MT09LKQpAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWRpcmVjdFBh
aXIsIDAsIENyYXNoT25PdmVyZmxvdywgMD4gbV9yZWRpcmVjdENoYWluOwogCiAgICAgc3RydWN0
IERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOworICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
OwogICAgIH07CiAgICAgc3RkOjpvcHRpb25hbDxEZWxheWVkRmluaXNoTG9hZGluZz4gbV9kZWxh
eWVkRmluaXNoTG9hZGluZzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmNwcAppbmRleCBkZmJhNzYxY2IwNTg2NGY1NDI0NTIzYmEzN2NkNTVjNjAw
NWRlZWMwLi45ZGUwYTA0Y2Q1ZWM1ZjNmYWQyZmIxNmQ3YjMyMmM4NThhMzhhNmIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTMzNiw3
ICszMzYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpjaGVja05vdGlmeShjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG1ldHJpY3MpCiAgICAgICAgIGNsaWVudC0+bm90aWZ5RmluaXNoZWQoKnRo
aXMsIG1ldHJpY3MpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hh
cmVkQnVmZmVyJikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJikKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgp
ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogfQpAQCAtMzQ2LDcgKzM0Niw3
IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2ln
bmVkKQogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1Bv
bGljeTo6RG9Ob3RCdWZmZXJEYXRhKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNo
TG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
Cit2b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgc2V0
TG9hZGluZyhmYWxzZSk7CiAgICAgY2hlY2tOb3RpZnkobWV0cmljcyk7CkBAIC05MTUsNyArOTE1
LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQoKQogCiAjaWYg
RU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVw
bGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIG5ld0J1ZmZlcikKK3ZvaWQg
Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZmZXImIG5ld0J1
ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCBjY2U1ODAxYWVjN2ZjNzc4
ZTlmYWE4NWMxMWQ0YzE3Mjk2ZmZlNzU3Li5jOTgyZGQ2OTM3YTBiYzJiZjM4YzQyNjEyNmZmZTZl
NzhjNzk2NDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBDb29raWVKYXI7CiBjbGFzcyBNZW1vcnlDYWNo
ZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1
YnJlc291cmNlTG9hZGVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIApAQCAtMTEyLDkg
KzExMiw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3Ry
aW5nJikgeyB9CiAgICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBT
dHJpbmcoKTsgfQogICAgIHZpcnR1YWwgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJl
c291cmNlRGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgdmly
dHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJik7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1YWwg
dm9pZCBlcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzKTsKIAogICAgIHZvaWQgc2V0UmVzb3Vy
Y2VFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgeyBtX2Vycm9yID0gZXJyb3I7IH0K
QEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyTG9hZGVyKCk7CiAK
LSAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVj
dFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZpcnR1YWwg
dm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTI4NCw3
ICsyODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVk
IGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5
dGVzVG9CZVNlbnQgKi8pIHsgfQogCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hh
cmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlSZXBsYWNlRW5jb2RlZERh
dGEoU2hhcmVkQnVmZmVyJik7CiAjZW5kaWYKIAogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciBpZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcigpIGNvbnN0IHsgcmV0dXJu
IG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXI7IH0KQEAgLTMzNiw3ICsz
MzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSGFzaENvdW50ZWRTZXQ8Q2FjaGVkUmVzb3VyY2VDbGll
bnQqPiBtX2NsaWVudHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlUmVxdWVzdD4gbV9v
cmlnaW5hbFJlcXVlc3Q7IC8vIE5lZWRlZCBieSBQaW5nIGxvYWRzLgogICAgIFJlZlB0cjxTdWJy
ZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IG1fZGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAKIHByaXZhdGU6
CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3REZWNvZGVkQWNjZXNzVGltZTsgLy8gVXNlZCBhcyBh
ICJ0aHJhc2ggZ3VhcmQiIGluIHRoZSBjYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKaW5kZXggZGU1N2Y0MDQwMzcyNGM1MzZiYTk3
YjJiNmEwNjJlY2FmNjc0NjE5ZS4uZGI0MzE2MDdhZTU2MzgzMDM4MDBkZDI1OWMxMDM0Y2QwOTBm
Y2ZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9j
dW1lbnQuY3BwCkBAIC01Miw3ICs1Miw3IEBAIFN0cmluZyBDYWNoZWRTVkdEb2N1bWVudDo6ZW5j
b2RpbmcoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwog
fQogCi12b2lkIENhY2hlZFNWR0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTVkdE
b2N1bWVudDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsK
ICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZnJhbWUgYmVjYXVzZSB0
aGUgbmV3IGRvY3VtZW50IGJlbG9uZ3MgdG8gdGhlIHBhcmVudCBVc2VFbGVtZW50LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAppbmRleCBlOGMx
NWYzNjBmYzkxYWM4YjM0ZDM5NjI5NWM1M2QzYzdmMTQ3ZWFhLi40NDVlNGY5ZjQyYzNjMjc0MDc5
NzZhNjRlOTE1NDA3ZjhiNTM0ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29k
aW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4
dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQo
KTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRl
OwogCiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIFJlZlB0cjxUZXh0
UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRm9udC5jcHAKaW5kZXggOWNmMDQzNzE5NGE4YTJmY2E1ZTUyNWM3YmZmOWZl
OGU5OGE1MGMzMi4uZDJjMWRlNDdlZmI3ODEzOThmNDQzOGI3Y2E0ZWEyNjBlMjIxOTc2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcApAQCAtOTEs
NyArOTEsNyBAQCBib29sIENhY2hlZFNWR0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0
IEF0b21TdHJpbmcmIHJlbW90ZVVSSSkKICAgICAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRm9udEVs
ZW1lbnQgfHwgIWZpcnN0Rm9udEZhY2UocmVtb3RlVVJJKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgaWYgKGF1dG8gY29udmVydGVkRm9udCA9IGNvbnZlcnRTVkdUb09URkZv
bnQoKm1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCkpCi0gICAgICAgICAgICBtX2NvbnZlcnRlZEZv
bnQgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250
LnZhbHVlKCkpKTsKKyAgICAgICAgICAgIG1fY29udmVydGVkRm9udCA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgICAg
IG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAppbmRleCBhMTVlYWQwZTE2NDA5MDI3ZWY5MjA0ZWI5
MzNiNGYwNTRjMzg1ODIzLi4zNTNkM2RlNjNiMDYyODYxM2FiYWY3NzdmZWIyNTNjNWI2MjQ5MGM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTUw
LDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBTVkdGb250RWxlbWVudCogbWF5YmVJbml0aWFsaXpl
RXh0ZXJuYWxTVkdGb250RWxlbWVudChjb25zdCBBdG9tU3RyaW5nJiByZW1vdGVVUkkpOwogICAg
IFNWR0ZvbnRGYWNlRWxlbWVudCogZmlyc3RGb250RmFjZShjb25zdCBBdG9tU3RyaW5nJiByZW1v
dGVVUkkpOwogCi0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udmVydGVk
Rm9udDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CiAgICAgUmVm
UHRyPFNWR0RvY3VtZW50PiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7CiAgICAgU1ZHRm9udEVsZW1l
bnQqIG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudDsKICAgICBjb25zdCBSZWY8Y29uc3QgU2V0dGlu
Z3M+IG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuY3BwCmluZGV4IGI4YjMwYjdlMDgyY2NjMThlYzUzYjE2MGE3OGQ2ZjlhMjgwMWYyYzguLjYy
YTE2ZTg2YjMyMTkzZDhlNTZkNjE5MmY3N2U5YmM2ZjQwOGU5YmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHVuc2ln
bmVkIENhY2hlZFNjcmlwdDo6c2NyaXB0SGFzaCgpCiAgICAgcmV0dXJuIG1fc2NyaXB0SGFzaDsK
IH0KIAotdm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRh
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNjcmlwdDo6
ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAg
bV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuaAppbmRleCA5MjRiODRjYTJkODcxNmUzNDYwNzdlZWViNWNjMzRi
Y2VkZTdlMjNkLi44NjUxZTYzOWFkOTA2MTcyODU2MWMzMjRiZmE3YWY0Y2Y5N2Y2ZDM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCkBAIC00Nyw3ICs0Nyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBmaW5hbDsK
ICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBUZXh0UmVzb3Vy
Y2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9k
ZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciosIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWw7CiAKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGZpbmFsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmluZGV4IGFiMTcx
MTQ0NDc3ZDY0NWU0MTc4NTJlYzcxZjNiMjQ3MTlhMmEzMmEuLjBjODQyOGJiOTlkYjZkZmIxNmEz
NDgxMzRjMzgyNjgzNmNjZTU0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suY3BwCkBAIC00MCwxMCArNDAsMTAgQEAgQ2FjaGVkVGV4dFRyYWNr
OjpDYWNoZWRUZXh0VHJhY2soQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUEFMOjpT
ZXNzaW9uSUQKIHsKIH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKFNo
YXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEFTU0VSVChkYXRhQnVm
ZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7Ci0gICAg
bV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4oKTsKKyAgICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKSA6IFJlZlB0cjxTaGFyZWRCdWZmZXI+KCk7CiAgICAgc2V0RW5jb2RlZFNpemUoZGF0YSA/
IGRhdGEtPnNpemUoKSA6IDApOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2Fj
aGVkUmVzb3VyY2VDbGllbnQ+IHdhbGtlcihtX2NsaWVudHMpOwpAQCAtNTEsMTMgKzUxLDEzIEBA
IHZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXIqIGRhdGEp
CiAgICAgICAgIGNsaWVudC0+ZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJjZSgqdGhp
cyk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVy
JiBkYXRhKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGRvVXBkYXRlQnVmZmVyKCZkYXRhKTsKICAg
ICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogfQogCi12b2lkIENhY2hlZFRl
eHRUcmFjazo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2FkaW5n
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKIHsKICAgICBkb1VwZGF0ZUJ1ZmZlcihkYXRhKTsKICAgICBDYWNoZWRS
ZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhkYXRhLCBtZXRyaWNzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAppbmRleCA4NWUzOTYyMDY1MTMxNjA3MDM2
NTNlYjIyYzc3MTM4YjkxNTA3YWRkLi4wOWI0MzM5YTM3YjY3M2IyYWM0ZmRhZTE0NmIyOWI5NjQ3
NzdmY2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFj
ay5oCkBAIC0zNSwxMCArMzUsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbWF5
VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgIHZvaWQgdXBkYXRlQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAotICAg
IHZvaWQgZG9VcGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBkb1VwZGF0ZUJ1
ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNM
U3R5bGVTaGVldC5jcHAKaW5kZXggYzE3MGU2MDQzZjQ5ZGNhMDI1OWE2M2ZjMjVkODUyZGE2YjEx
ZmQzMC4uZDJlZmYyZDJkNDBjOTI3NzM4NzU2YzRhOGYwY2JiOTM0M2JlMTBhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApA
QCAtNjEsNyArNjEsNyBAQCBTdHJpbmcgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZW5jb2RpbmcoKSBj
b25zdAogICAgIHJldHVybiBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpOwogfQogCi12b2lk
IENhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFhTTFN0eWxlU2hl
ZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAg
ICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaAppbmRleCA2ODQyYjY0NGY2MWNm
OTBmN2Y2MWIyZjdlYzVlMDA2NTRjZDEwY2NjLi5iZDIzMTIxNGYyZDIwYmEzOTY0NDYwMzY2ZTA0
MWI5NDEzNWFjNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRYU0xTdHlsZVNoZWV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
dEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNv
bnN0IGZpbmFsOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURl
Y29kZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lk
IGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWw7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIFN0cmluZyBtX3No
ZWV0OwogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKaW5k
ZXggZDAyMGFjM2RjODA4NDRhNjdhMDdjYjViMWQxNTlmNzFjMGNkY2QxNC4uY2U1MmNmZWJkNzYx
ZTU2NDc1YTIwMWU4MTQzODUzMzRlYTRkYmE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaApAQCAtMzIsMTcgKzMyLDE3IEBA
IHR5cGVkZWYgY29uc3Qgc3RydWN0IF9DRkNhY2hlZFVSTFJlc3BvbnNlKiBDRkNhY2hlZFVSTFJl
c3BvbnNlUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIERpc2tDYWNoZU1vbml0b3Ig
ewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG1vbml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRp
b24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYpOwotICAgIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdHJ5
R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVk
VVJMUmVzcG9uc2VSZWYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0cnlHZXRG
aWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRVUkxS
ZXNwb25zZVJlZik7CiAKIHByaXZhdGU6CiAgICAgRGlza0NhY2hlTW9uaXRvcihjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25JRCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CiAK
LSAgICB2b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVy
Jik7CisgICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVmZmVyJik7CiAK
ICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzb3VyY2VSZXF1ZXN0OyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkg
Y29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IDkzZWU5NjM3NGYwM2Jh
MzEyNDQzZDI4MWM1MmE0ODQwNjlkZjJhMzEuLmZhNGI5MDNiZWY5Mzk0ODFjMjJlYTdkZjU1MWU4
YjU1ZTdlMGU1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNr
Q2FjaGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rp
c2tDYWNoZU1vbml0b3JDb2NvYS5tbQpAQCAtNDIsMTMgKzQyLDEzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHdlJ2xsIHRyeSB0byB3YWl0
IGZvciBhIHJlc291cmNlIHRvIGJlIGRpc2sgY2FjaGVkIGJlZm9yZSB3ZSBmb3JnZXQgdGhlIHJl
cXVlc3QuCiBzdGF0aWMgY29uc3QgZG91YmxlIGRpc2tDYWNoZU1vbml0b3JUaW1lb3V0ID0gMjA7
CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBEaXNrQ2FjaGVNb25pdG9yOjp0cnlH
ZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVzcG9uc2UoQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IERpc2tD
YWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRS
ZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQogewogICAgIGF1
dG8gZGF0YSA9IF9DRkNhY2hlZFVSTFJlc3BvbnNlR2V0TWVtTWFwcGVkRGF0YShjYWNoZWRSZXNw
b25zZSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogfQogCiB2b2lkIERpc2tDYWNoZU1vbml0b3I6Om1v
bml0b3JGaWxlQmFja2luZ1N0b3JlQ3JlYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2Fj
aGVkUmVzcG9uc2UpCkBAIC0xMTMsNyArMTEzLDcgQEAgRGlza0NhY2hlTW9uaXRvcjo6RGlza0Nh
Y2hlTW9uaXRvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbkkK
ICAgICBfQ0ZDYWNoZWRVUkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRDYWxsQmFja0Jsb2Nr
KGNhY2hlZFJlc3BvbnNlLCBibG9ja1RvUnVuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsK
IH0KIAotdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1ZmZlcikKK3ZvaWQgRGlza0NhY2hlTW9u
aXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYgZmlsZUJhY2tlZEJ1
ZmZlcikKIHsKICAgICBhdXRvKiByZXNvdXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5y
ZXNvdXJjZUZvclJlcXVlc3QobV9yZXNvdXJjZVJlcXVlc3QsIG1fc2Vzc2lvbklEKTsKICAgICBp
ZiAoIXJlc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXIuaAppbmRleCA1NTI1NjFkNmM4MTZkM2QyMGJjZmNjYjJlNjU4M2I3ZGU5NGI5NGEy
Li5lOGJlMWIyMTM3NmEwNTg2OWQwZTYyNWNkODRiYmVhMmM4ZWEyOGEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaApAQCAtMjcsNiArMjcs
NyBAQAogCiAjaW5jbHVkZSAiUHJldmlld0NvbnZlcnRlckNsaWVudC5oIgogI2luY2x1ZGUgIlBy
ZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMzcsNyArMzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VMb2Fk
ZXI7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBMZWdhY3lQcmV2aWV3TG9hZGVyIGZpbmFsIDogcHJpdmF0ZSBQcmV2aWV3Q29udmVydGVyQ2xp
ZW50LCBwcml2YXRlIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBib29sIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgYm9vbCBk
aWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIGJvb2wgZGlkUmVjZWl2
ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgYm9vbCBkaWRGaW5p
c2hMb2FkaW5nKCk7CiAgICAgdm9pZCBkaWRGYWlsKCk7CiAKQEAgLTYwLDE3ICs2MCwxNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZpbmlzaFVwZGF0aW5nKFByZXZp
ZXdDb252ZXJ0ZXImKSBmaW5hbCB7IH07CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFp
bFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKICAgICB2b2lkIHByZXZpZXdDb252
ZXJ0ZXJEaWRTdGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOwotICAgIHZv
aWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25z
dCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRSZWNl
aXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
IGZpbmFsOwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRpbmcoUHJl
dmlld0NvbnZlcnRlciYpIGZpbmFsOwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxD
b252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKIAogICAgIC8vIFByZXZpZXdDb252
ZXJ0ZXJQcm92aWRlcgotICAgIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252
ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hh
cmVkQnVmZmVyKik+JiYpIGZpbmFsOworICAgIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclBy
ZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmKSBmaW5hbDsKICAgICB2b2lkIHByb3Zp
ZGVQYXNzd29yZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpIGZpbmFsOwogCiAgICAgUmVmUHRyPFBy
ZXZpZXdDb252ZXJ0ZXI+IG1fY29udmVydGVyOwogICAgIFJlZjxMZWdhY3lQcmV2aWV3TG9hZGVy
Q2xpZW50PiBtX2NsaWVudDsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX29yaWdpbmFsRGF0YTsK
KyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fb3JpZ2luYWxEYXRhOwogICAgIFdlYWtQdHI8UmVz
b3VyY2VMb2FkZXI+IG1fcmVzb3VyY2VMb2FkZXI7CiAgICAgYm9vbCBtX2ZpbmlzaGVkTG9hZGlu
Z0RhdGFJbnRvQ29udmVydGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzUHJvY2Vzc2VkUmVz
cG9uc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyLm1tCmluZGV4IGQxOGIyNTJlOTc1NmM4Y2UwYzk1YjYzZTc4ZGQwMDk3ZWYy
YTU3MzQuLjM1ZjZjMTQ5OWE1NGI0MDAwOTNiYzJlODkyZDc5ODM3NjAzZDZjMDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAgLTYz
LDEzICs2MywxMyBAQCBzdGF0aWMgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1ha2VD
bGllbnQoY29uc3QgUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgYwogICAgIHJldHVybiBlbXB0eUNs
aWVudCgpOwogfQogCi1ib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIGlmIChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBMT0coTmV0d29yaywgIkxlZ2FjeVByZXZpZXdMb2FkZXIgYXBwZW5k
aW5nIGJ1ZmZlciB3aXRoIHNpemUgJWxkLiIsIGJ1ZmZlci5zaXplKCkpOwotICAgIG1fb3JpZ2lu
YWxEYXRhLT5hcHBlbmQoYnVmZmVyKTsKKyAgICBtX29yaWdpbmFsRGF0YS5hcHBlbmQoYnVmZmVy
KTsKICAgICBtX2NvbnZlcnRlci0+dXBkYXRlTWFpblJlc291cmNlKCk7CiAgICAgbV9jbGllbnQt
PmRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwOSw3ICsx
MDksNyBAQCB2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRTdGFy
dENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYgYwogICAgICAgICByZXR1cm47CiAKICAgICBB
U1NFUlQoIW1faGFzUHJvY2Vzc2VkUmVzcG9uc2UpOwotICAgIG1fb3JpZ2luYWxEYXRhLT5jbGVh
cigpOworICAgIG1fb3JpZ2luYWxEYXRhLmVtcHR5KCk7CiAgICAgcmVzb3VyY2VMb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCktPnNldFByZXZpZXdDb252ZXJ0ZXIoV1RGTW92ZShtX2NvbnZlcnRlcikp
OwogICAgIGF1dG8gcmVzcG9uc2UgeyBjb252ZXJ0ZXIucHJldmlld1Jlc3BvbnNlKCkgfTsKIApA
QCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZl
cnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJiBjCiAgICAgfSk7CiB9CiAK
LXZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRh
KFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIExlZ2Fj
eVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQcmV2aWV3Q29u
dmVydGVyJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBhdXRv
IHJlc291cmNlTG9hZGVyID0gbV9yZXNvdXJjZUxvYWRlci5nZXQoKTsKICAgICBpZiAoIXJlc291
cmNlTG9hZGVyKQpAQCAtMjI0LDEwICsyMjQsMTAgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVy
Ojpwcm92aWRlUGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGMK
ICAgICBtX2NsaWVudC0+ZGlkUmVxdWVzdFBhc3N3b3JkKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAotdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNl
Rm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3
Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZjb252ZXJ0ZXIgPT0gbV9jb252ZXJ0
ZXIpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLnB0cigpKTsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5nZXQoKS5nZXQoKSk7CiB9CiAKIExlZ2Fj
eVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkgPSBkZWZhdWx0OwpAQCAtMjM1
LDcgKzIzNSw3IEBAIExlZ2FjeVByZXZpZXdMb2FkZXI6On5MZWdhY3lQcmV2aWV3TG9hZGVyKCkg
PSBkZWZhdWx0OwogTGVnYWN5UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmlld0xvYWRlcihSZXNv
dXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAg
ICA6IG1fY29udmVydGVyIHsgUHJldmlld0NvbnZlcnRlcjo6Y3JlYXRlKHJlc3BvbnNlLCAqdGhp
cykgfQogICAgICwgbV9jbGllbnQgeyBtYWtlQ2xpZW50KGxvYWRlciwgbV9jb252ZXJ0ZXItPnBy
ZXZpZXdGaWxlTmFtZSgpLCBtX2NvbnZlcnRlci0+cHJldmlld1VUSSgpKSB9Ci0gICAgLCBtX29y
aWdpbmFsRGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQorICAgICwgbV9vcmlnaW5hbERh
dGEgeyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkgfQogICAgICwgbV9yZXNvdXJj
ZUxvYWRlciB7IGxvYWRlciB9CiAgICAgLCBtX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRp
bmcgeyBsb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVM
b2FkaW5nUXVpY2tMb29rUHJldmlldygpIH0KIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5o
CmluZGV4IGNlZDU2MDljMDA1YTUzNTJiMzNkMTE5OGY0NWI5OGJhODRhNzFkMmMuLmExMjA0NGM0
MTZkMGQ0ODZhZmVjOTllMWQwZTEwZWZhZjFmOWRjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JD
bGllbnQuaApAQCAtMzksMTMgKzM5LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGVudW0gY2xh
c3MgRE9NUGFzdGVBY2Nlc3NDYXRlZ29yeSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIERPTVBhc3Rl
QWNjZXNzUmVzcG9uc2UgOiB1aW50OF90OwogCi1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVs
ZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBOb2RlOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFN0eWxlUHJvcGVydGllczsKIGNsYXNzIFRleHRDaGVja2VyQ2xpZW50OwogY2xhc3MgVmlzaWJs
ZVNlbGVjdGlvbjsKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBs
ZVJhbmdlJikgPSAwOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlk
ZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmlu
ZyYgLyogcHJlZmVycmVkRmlsZU5hbWUgKi8sIFJlZjxTaGFyZWRCdWZmZXI+JiYpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYg
LyogaWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3Qg
U3RyaW5nJiAvKiBwcmVmZXJyZWRGaWxlTmFtZSAqLywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50
VHlwZSAqLywgY29uc3QgU3RyaW5nJiAvKiBmaWxlUGF0aCAqLykgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4m
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29u
c3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovKSB7IH0KQEAgLTk5LDcgKzk5LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShj
b25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJv
YXJkRGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShj
b25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWNjZXB0ZWRD
YW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAppbmRleCA3Yjk2MWRiMDQwNGMxZDE5NzM2MDc0ZTRhOWQ2YzFkYzk0MjEyMjdmLi45
N2UwMWI1YzY5NzZkNjdmMGYzYmRmY2VkZWM2YWJjZjA0ODUyYzQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKQEAgLTE5NzMsNyArMTk3Myw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hl
ZXQoKSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hl
cyBsb2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxv
YWQgZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4K
ICAgICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIGF1dG8gZGF0
YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3Vz
ZXJTdHlsZVNoZWV0UGF0aCk7CisgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
U2VyaWFsaXplci5jcHAKaW5kZXggMDFlMTZkZDk4ZjRkZjBjZWIyMWRmOTA4ZDFmNDBjNjI0YWFl
NGMyNy4uMDIwMDFhYjM0MzAxOGE3MzI1NTk5OGZjNDc0Y2ViZmM0OWY4Yzg0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFBh
Z2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgU3RyaW5nIHRleHQgPSBhY2N1bXVsYXRvci5zZXJpYWxpemVOb2Rlcygq
ZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVJbmNs
dWRpbmdOb2RlKTsKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdn
ZXN0ZWRNSU1FVHlwZSgpLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29k
aW5nLmVuY29kZSh0ZXh0LCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7
CisgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5
cGUoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBQQUw6
OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMu
YWRkKHVybCk7CiAKICAgICBmb3IgKGF1dG8mIG5vZGUgOiBub2RlcykgewpAQCAtMjYwLDcgKzI2
MCw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NTU3R5
bGVTaGVldCogc3R5bGVTaGVldCwgY29uc3QgVVJMCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgY2hlY2sgd2hldGhlciBhIGNoYXJzZXQgaGFzIGJlZW4gc3BlY2lmaWVkIGFuZCBpZiBub25l
IHdhcyBmb3VuZCBhZGQgb25lLgogICAgICAgICBQQUw6OlRleHRFbmNvZGluZyB0ZXh0RW5jb2Rp
bmcoc3R5bGVTaGVldC0+Y29udGVudHMoKS5jaGFyc2V0KCkpOwogICAgICAgICBBU1NFUlQodGV4
dEVuY29kaW5nLmlzVmFsaWQoKSk7Ci0gICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwg
InRleHQvY3NzIl9zLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5n
LmVuY29kZShjc3NUZXh0LnRvU3RyaW5nKCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50
aXRpZXMpKSB9KTsKKyAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3Mi
X3MsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0
cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgICAg
IG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogICAgIH0KIH0KQEAgLTI3Myw3ICsyNzMsNyBAQCB2
b2lkIFBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFn
ZSwgUmVuZGVyRWxlbWVudCogaW1hZwogICAgIGlmICghaW1hZ2UgfHwgaW1hZ2UtPmltYWdlKCkg
PT0gJkltYWdlOjpudWxsSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJl
cihpbWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihp
bWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIGRhdGEg
PSBpbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VTZXJpYWxpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVy
LmgKaW5kZXggYmZjYmU3YjhkYmZkNDlmNzlkMWEwMGM4MDA0ZWFkZTI5YzQ4MDgyMS4uZmYzZTJl
MWZjYjA2MWE0ZmZmYzVkZWZkNGMyZDE4MGFmNDliZjc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZVNlcmlhbGl6ZXIuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgc3RydWN0IFJlc291
cmNlIHsKICAgICAgICAgVVJMIHVybDsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAgICAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YTsKICAgICB9OwogCiAgICAgZXhwbGljaXQgUGFnZVNlcmlhbGl6ZXIo
VmVjdG9yPFJlc291cmNlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFy
ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKaW5kZXggM2VkZDljNzFi
YjI3ZTUwZmRmZGZhY2VlMjcxZWZlZmI3Y2IyOTFmNS4uNjhiMGRkMmMzMDZiNzk0NTMxZDI5YmQx
NDBkY2I0MmI0OGUyNzM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCkBAIC0zOSw3ICszOSw3
IEBAIHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3RmlsZSB7CiAgICAgU3RyaW5nIGZp
bGVOYW1lOwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKKyAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAgICAgCiBzdHJ1Y3QgU2hhcmVE
YXRhV2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJl
RGF0YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAK
aW5kZXggZDY4MDVhM2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRmMi4uNzU4MzZiODc5
MTQzYjYwYTdmMzUxOTcwMzIwN2I2YWQzZDhkNGY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hh
cmVEYXRhUmVhZGVyLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFNoYXJlRGF0YVJlYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQog
CiAgICAgUmF3RmlsZSBmaWxlOwogICAgIGZpbGUuZmlsZU5hbWUgPSBmaWxlTmFtZTsKLSAgICBm
aWxlLmZpbGVEYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXIt
PmJ5dGVMZW5ndGgoKSk7CisgICAgZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwg
YXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBwZW5k
KFdURk1vdmUoZmlsZSkpOwogICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0tleWVkQ29kaW5nLmgKaW5kZXggM2Q4MGQ3YTFkNDI0NTg1MjBiZDU0MzhlZjM2ZDhh
NTdjYjVkNGU3ZS4uNzlhMjM1MzU1ZjFlOGVmODYxNTM1MmU2MzljOGM2MzE4ZjQwMzc3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWREZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGVuY29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJikgPSAw
OwogCi0gICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5j
b2RpbmcoKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNv
ZGluZygpID0gMDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBlbmNvZGVF
bnVtKGNvbnN0IFN0cmluZyYga2V5LCBUIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L05vd1BsYXlpbmdNYW5hZ2VyLmgKaW5kZXggZTM4MDZlODdkZjc5YTNkOWI1Y2FlMTIxNGRlNjZh
YTJhNjU4NDdkYi4uZmM2NmMzNjVhMmYyOWE0Yzc4ZTYwNjE5ZTQ3YTcxYzcyNThkOGZlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCkBAIC03MCw3ICs3
MCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gbV9ub3dQ
bGF5aW5nSW5mbzsKICAgICBzdHJ1Y3QgQXJ0d29ya0NhY2hlIHsKICAgICAgICAgU3RyaW5nIHNy
YzsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgICAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogICAgIH07CiAgICAgc3RkOjpv
cHRpb25hbDxBcnR3b3JrQ2FjaGU+IG1fbm93UGxheWluZ0luZm9BcnR3b3JrOwogICAgIGJvb2wg
bV9zZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmQuY3BwCmluZGV4IDU5NmFmYjhlOTE4ODhjMmFhNjcyZmMwZTVkMDZjYjY0
NDlkZWRhN2QuLmJhMTc4NzI0NzFhZTI4NjRmNzcwODJjNDdkNjdmMjYzZWQ1ZGY5NTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC05Myw3ICs5Myw3IEBAIFN0cmlu
ZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBl
KQogICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRl
eCwgY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gUGFz
dGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0
cmluZyYgdHlwZSkKIHsKICAgICBpZiAoYXV0byogc3RyYXRlZ3kgPSBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkpCiAgICAgICAgIHJldHVybiBzdHJhdGVneS0+cmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCB0eXBlLCBuYW1lKCksIGNvbnRleHQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggNGUyNzgyZDliYWNiOWQwMTlkMTIw
MDIwZGZmMDExNmUyNTIzMmQwNC4uZjJlYjk3MjAxOWE0MDJlYjg4Y2VmZjhmNDdjM2U4NjNmZTM0
MDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtNjEsMTMgKzYxLDEz
IEBAIHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xh
c3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRWxlbWVudDsKIGNs
YXNzIEZyYW1lOwogY2xhc3MgUGFzdGVib2FyZFN0cmF0ZWd5OwotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNpbXBsZVJhbmdlOwog
CkBAIC04MywxNCArODMsMTQgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBX
RUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVu
dE9yaWdpbjsKICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJ
blJURkZvcm1hdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3Ry
aW5nRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBkYXRh
SW5TdHJpbmdGb3JtYXQ7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVj
dG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0
b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFURk9S
TShHVEspCiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CkBAIC0xMjAsMTcgKzEyMCwxNyBAQCBz
dHJ1Y3QgUGFzdGVib2FyZEltYWdlIHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZElt
YWdlKCk7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Cisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBTdHJp
bmcgZGF0YUluSFRNTEZvcm1hdDsKICNlbmRpZgogI2lmICFQTEFURk9STShXSU4pCiAgICAgUGFz
dGVib2FyZFVSTCB1cmw7CiAjZW5kaWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0o
V0lOKSkKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVzb3Vy
Y2VNSU1FVHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBzdWdn
ZXN0ZWROYW1lOwogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemU7CkBAIC0xNDQsNyArMTQ0LDcgQEAg
c3RydWN0IFBhc3RlYm9hcmRCdWZmZXIgewogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogI2Vu
ZGlmCiAgICAgU3RyaW5nIHR5cGU7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGRhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKIH07CiAKIC8vIEZvciByZWFk
aW5nIGZyb20gdGhlIHBhc3RlYm9hcmQuCkBAIC0xNTksMTYgKzE1OSwxNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25T
aXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUgPSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEhUTUwoY29uc3QgU3Ry
aW5nJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRh
dGlvblNpemUgPSB7IH0pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZEltYWdlKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNp
emUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSA9IDA7CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShDb250aWd1
b3VzU2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChDb250aWd1
b3VzU2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWREYXRhQnVmZmVyKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYg
bmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9
IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1
YWwgYm9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVh
ZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsg
fSkgPSAwOwogI2VuZGlmCiB9OwogCkBAIC0xODMsNyArMTgzLDcgQEAgc3RydWN0IFBhc3RlYm9h
cmRGaWxlUmVhZGVyIHsKICAgICB2aXJ0dWFsIH5QYXN0ZWJvYXJkRmlsZVJlYWRlcigpID0gZGVm
YXVsdDsKICAgICB2aXJ0dWFsIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIC8qIHR5cGUg
Ki8pIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVhZEJ1ZmZlcihj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRCdWZmZXIoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
KSA9IDA7CiB9OwogCiBjbGFzcyBQYXN0ZWJvYXJkIHsKQEAgLTMwOSw3ICszMDksNyBAQCBwdWJs
aWM6CiAgICAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IHBhc3RlYm9hcmRJdGVt
SW5mbyhzaXplX3QgaW5kZXgpIGNvbnN0OwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90
IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBl
KTsKICAgICBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpOwogCiAgICAg
Y29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRl
eHQuZ2V0KCk7IH0KQEAgLTM0MSw3ICszNDEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lk
IGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShMaXN0SGFzaFNldDxTdHJpbmc+JiBy
ZXN1bHRUeXBlcywgY29uc3QgU3RyaW5nJiBjb2NvYVR5cGUpOwogICAgIFN0cmluZyByZWFkU3Ry
aW5nRm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYpOwogICAgIFZlY3RvcjxTdHJpbmc+IHJl
YWRUeXBlc1dpdGhTZWN1cml0eUNoZWNrKCk7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlD
aGVjayhjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmRDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKaW5kZXggMjBjZDYxZTcxMTIxMzIxY2M0NmQwNzcxOTkx
YWFjNWFhNDc1NTgwMi4uOWQzZjg3YTkxMTRjMzhhNTRlMzNhMDVlMmI5ODk1MmNjZjY3YWU3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNw
cApAQCAtMzMsMTMgKzMzLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHN0
ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY29weVBsYXRm
b3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+JiBvdGhlcikKK3N0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVm
ZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hh
cmVkQnVmZmVyPj4mIG90aGVyKQogewogICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0
cmluZz4ob3RoZXIpKQogICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxTdHJpbmc+KG90aGVyKSB9
OwogCi0gICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PihvdGhlcikpCi0gICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4ob3RoZXIpLmNvcHlSZWYoKSB9OworICAgIGlmIChzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikpCisgICAgICAgIHJldHVybiB7IHN0
ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikuY29weVJlZigpIH07CiAKICAgICByZXR1
cm4geyB9OwogfQpAQCAtODAsNyArODAsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6UGFzdGVi
b2FyZEN1c3RvbURhdGEoU3RyaW5nJiYgb3JpZ2luLCBWZWN0b3I8RW50cnk+JiYgZGF0YQogewog
fQogCi1SZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBjb25zdGV4cHIgdW5z
aWduZWQgY3VycmVudEN1c3RvbURhdGFTZXJpYWxpemF0aW9uVmVyc2lvbiA9IDE7CiAKQEAgLTg5
LDcgKzg5LDcgQEAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47
CiAgICAgZW5jb2RlciA8PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29k
ZXIgPDwgb3JkZXJlZFR5cGVzKCk7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVy
U2l6ZSgpKTsKIH0KIAogUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6
OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmIGRlY29k
ZXIpCkBAIC0xMjQsNyArMTI0LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1
c3RvbURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW4KICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
CitQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1
ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZnJvbVBlcnNp
c3RlbmNlRGVjb2RlcihidWZmZXIuZGVjb2RlcigpKTsKIH0KQEAgLTEzNCw3ICsxMzQsNyBAQCB2
b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgYWRkT3JNb3ZlRW50cnlUb0VuZCh0eXBlKS5wbGF0
Zm9ybURhdGEgPSB7IHZhbHVlIH07CiB9CiAKLXZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6Ondy
aXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
IGRhdGEpCit2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEoY29uc3QgU3RyaW5n
JiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgYWRkT3JNb3ZlRW50cnlU
b0VuZCh0eXBlKS5wbGF0Zm9ybURhdGEgPSB7IFdURk1vdmUoZGF0YSkgfTsKIH0KQEAgLTIwMiwx
NCArMjAyLDE0IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIGN1c3RvbURh
dGE7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8U2hhcmVk
QnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5
cGUpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkgewogICAgICAgICBp
ZiAoZW50cnkudHlwZSAhPSB0eXBlKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
aWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pihl
bnRyeS5wbGF0Zm9ybURhdGEpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRhKS5jb3B5UmVmKCk7CisgICAg
ICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5w
bGF0Zm9ybURhdGEpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZm
ZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpLmNvcHlSZWYoKTsKIAogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CkBAIC0yNjUsMTEgKzI2NSwxMSBAQCB2b2lkIFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpmb3JFYWNoQ3VzdG9tU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBl
LAogICAgIH0KIH0KIAotdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3Jt
U3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0
ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYm
IGZ1bmN0aW9uKSBjb25zdAordm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRm
b3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYgZnVuY3Rp
b24pIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkgewogICAgICAgICBh
dXRvJiBkYXRhID0gZW50cnkucGxhdGZvcm1EYXRhOwotICAgICAgICBpZiAoKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5pc051
bGwoKSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+KGRhdGEpKQorICAgICAgICBpZiAoKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihk
YXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5pc051bGwoKSkgfHwgc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkpCiAgICAgICAgICAgICBmdW5jdGlv
bihlbnRyeS50eXBlLCBkYXRhKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCBjNmNiYzc5MGM3ZTA1ZjMxNDgyMDVmYzVh
MWNjNWE0NjgzYzZkNjE3Li4yYmU4MWQyOTM4YTNkYmQwOTAyNmNhNmVjNjRhYzMyODdlNmFiYzAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgK
QEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YSB7CiBwdWJsaWM6CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgICAg
ICBTdHJpbmcgdHlwZTsKICAgICAgICAgU3RyaW5nIGN1c3RvbURhdGE7Ci0gICAgICAgIHN0ZDo6
dmFyaWFudDxTdHJpbmcsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gcGxhdGZvcm1EYXRh
OworICAgICAgICBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4gcGxhdGZv
cm1EYXRhOwogICAgIH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YSgpOwpAQCAtNjAsMTYgKzYwLDE2IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG9yaWdp
bigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgdm9pZCBzZXRPcmlnaW4oY29uc3Qg
U3RyaW5nJiBvcmlnaW4pIHsgbV9vcmlnaW4gPSBvcmlnaW47IH0KIAotICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25z
dDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNo
YXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6
RGVjb2RlciYmKTsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkg
Y29uc3Q7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1
c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKIAogICAgIHZvaWQgd3JpdGVTdHJp
bmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICB2b2lkIHdy
aXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
IGRhdGEpOworICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICB2b2lkIHdyaXRlU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKICAgICB2b2lkIGNsZWFyKCk7
CkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZm9yRWFjaFR5cGUoRnVuY3Rp
b248dm9pZChjb25zdCBTdHJpbmcmKT4mJikgY29uc3Q7CiAgICAgdm9pZCBmb3JFYWNoUGxhdGZv
cm1TdHJpbmcoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYg
ZGF0YSk+JiYpIGNvbnN0OwotICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIo
RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJp
bmcsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmKSBjb25zdDsKKyAgICB2
b2lkIGZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4m
IGRhdGEpPiYmKSBjb25zdDsKICAgICB2b2lkIGZvckVhY2hDdXN0b21TdHJpbmcoRnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk+JiYpIGNvbnN0Owog
CiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IDliMWQ0Yjk1ZWRmYmRmYTA1OTU2YTM5OTA3MWFiOWZk
OTE4M2I5MDcuLmI0ZDljNTc0ZGNhZTdlMWQwNjM2NjY4N2ZkMzVhYjgyNDRhNzgwZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0zMSwxMSAr
MzEsMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7Ci1jbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2Fy
ZENvbnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRh
dGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
c3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1
Y3QgUGFzdGVib2FyZFVSTDsKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2b2lk
IGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZv
clR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxT
dHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OwpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGludDY0X3QgYWRkVHlw
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVh
bCBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0Kikg
PSAwOwotICAgIHZpcnR1YWwgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFs
IGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBhc3Rl
Ym9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgQ29sb3Im
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
ID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTcyLDcgKzcyLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9t
UGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OwotICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZyb21Q
YXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBz
dGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hh
bmdlQ291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1J
bmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+
IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
ID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRl
VG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0YSYm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCBiNDVjZTFmOTM4Y2Jh
NTA2NjM4YjZhNDEyMWQ3NjczNjNmOGJlNTIyLi44ZTJjOGZiOTJkOTcyZmQ0MjE2MDA3YmM4Nzc3
NTJjZmQzNDhmODRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRX
cml0ZXJEYXRhLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEsMTQg
QEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVudE9y
aWdpbjsKICAgICAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAgICAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgICAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zv
cm1hdDsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dDsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBTdHJp
bmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsK
ICAgICAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgICAgIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKaW5kZXggM2Y0
ODMyYTVhNjU4YzFjYzdjMGFhMTNiMjZlMGVhNDczM2U5ZDNiNy4uOWU3MmU0NGEyZWFjNGQ4ZWY3
MzBiOTg3MWQwZWM1MDhlZDlmYWM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1Db250ZW50RmlsdGVyLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtQ29udGVudEZpbHRl
ciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Niw3ICs1Niw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBsZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkg
PSAwOwotICAgIHZpcnR1YWwgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2Vt
ZW50RGF0YSgpIGNvbnN0ID0gMDsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAg
dmlydHVhbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25z
dCA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJv
YXJkLmgKaW5kZXggNTI3MGM1OTg0MzU1MTA0ZjkxYTVjZTU0MjIyM2I0NDljMmI1MTg5YS4uOGZl
OTI0ZGZlNTZiYzNjOTk2NjZlYmYwNGY3MzU0MDE1NTVhYTMzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTQ3LDE0ICs0NywxNCBAQCBzdHJ1
Y3Qgd3BlX3Bhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOwot
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKIHN0cnVjdCBQYXN0
ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9h
cmRVUkw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybVBhc3RlYm9h
cmQgewogcHVibGljOgpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmlu
ZyBwbGF0Zm9ybVBhc3RlYm9hcmRUeXBlRm9yU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZShj
b25zdCBTdHJpbmcmIGRvbVR5cGUsIEluY2x1ZGVJbWFnZVR5cGVzID0gSW5jbHVkZUltYWdlVHlw
ZXM6Ok5vKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmlu
Zz4mIHR5cGVzKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGlj
OgogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB3aWxsIHJldHVybiAwIGlmIHBhc3RlYm9hcmQgb3du
ZXJzaGlwIGhhcyBiZWVuIHRha2VuIGZyb20gdXMuCiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRf
dCBjb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQpOwotICAgIFdFQkNPUkVfRVhQT1JU
IGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRC
dWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
OwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRVUkwm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldENvbG9yKGNvbnN0IENvbG9yJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwpAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3Qg
UGFzdGVib2FyZFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiByZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBT
dHJpbmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY291bnQoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKaW5kZXgg
NGNiMzMwMWU3ZGY3MDcxYzVkZDlmYzU5YmM1NzE4NWM0ZTkxNDc2OC4uYTRlMDg3NTA5ZTU5NGQx
ODcxMTI1ZDEzYzk5NTNjNGU0Mzk0OTM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgIlByZXZp
ZXdDb252ZXJ0ZXJDbGllbnQuaCIKICNpbmNsdWRlICJQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIu
aCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgog
I2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogCkBAIC02Myw5ICs2Miw5IEBAIGNvbnN0IFJl
c291cmNlRXJyb3ImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdFcnJvcigpIGNvbnN0CiAgICAg
cmV0dXJuIG1fcHJldmlld0Vycm9yOwogfQogCi1jb25zdCBTaGFyZWRCdWZmZXImIFByZXZpZXdD
b252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkgY29uc3QKK2NvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9wcmV2aWV3RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gKm1fcHJldmlld0RhdGEuZ2V0KCk7CiB9
CiAKIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBkYXRlTWFpblJlc291cmNlKCkKQEAgLTkwLDcg
Kzg5LDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRhdGVNYWluUmVzb3VyY2UoKQogICAg
IH0pOwogfQogCi12b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmFwcGVuZEZyb21CdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmFwcGVuZEZyb21C
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHdoaWxl
IChidWZmZXIuc2l6ZSgpID4gbV9sZW5ndGhBcHBlbmRlZCkgewogICAgICAgICBhdXRvIG5ld0Rh
dGEgPSBidWZmZXIuZ2V0U29tZURhdGEobV9sZW5ndGhBcHBlbmRlZCk7CkBAIC0yMjEsOCArMjIw
LDggQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlUb0NsaWVudChQcmV2aWV3Q29udmVy
dGVyQ2xpZW50JiBjbGllbnQpCiAgICAgQVNTRVJUKG1fc3RhdGUgPj0gU3RhdGU6OkNvbnZlcnRp
bmcpOwogICAgIGNsaWVudC5wcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKCp0aGlz
KTsKIAotICAgIGlmICghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpICYmIGhhc0NsaWVudChjbGll
bnQpKQotICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlz
LCBtX3ByZXZpZXdEYXRhLmdldCgpKTsKKyAgICBpZiAoIW1fcHJldmlld0RhdGEuaXNFbXB0eSgp
ICYmIGhhc0NsaWVudChjbGllbnQpKQorICAgICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRp
ZFJlY2VpdmVEYXRhKCp0aGlzLCAqbV9wcmV2aWV3RGF0YS5nZXQoKSk7CiAKICAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6Q29udmVydGluZyB8fCAhaGFzQ2xpZW50KGNsaWVudCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTIzNCwxMiArMjMzLDEyIEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVw
bGF5VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQogICAgIH0KIAogICAg
IEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpGaW5pc2hlZENvbnZlcnRpbmcpOwotICAgIEFTU0VS
VCghbV9wcmV2aWV3RGF0YS0+aXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoIW1fcHJldmlld0RhdGEu
aXNFbXB0eSgpKTsKICAgICBBU1NFUlQobV9wcmV2aWV3RXJyb3IuaXNOdWxsKCkpOwogICAgIGNs
aWVudC5wcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZygqdGhpcyk7CiB9CiAKLXZv
aWQgUHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEpCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmRlbGVnYXRlRGlkUmVjZWl2ZURh
dGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBhdXRvIHByb3Rl
Y3RlZFRoaXMgeyBSZWYgeyAqdGhpcyB9IH07CiAKQEAgLTI1Niw3ICsyNTUsNyBAQCB2b2lkIFBy
ZXZpZXdDb252ZXJ0ZXI6OmRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBkYXRhKQogICAgIGlmIChkYXRhLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wcmV2aWV3RGF0YS0+YXBwZW5kKGRhdGEpOworICAgIG1fcHJldmlld0RhdGEuYXBwZW5kKGRh
dGEpOwogCiAgICAgaXRlcmF0ZUNsaWVudHMoWyZdKGF1dG8mIGNsaWVudCkgewogICAgICAgICBj
bGllbnQucHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKCp0aGlzLCBkYXRhKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAppbmRleCAyYTM3MjkyMjc5OWNl
NmFmZmFhYjNlMTQwZDE5MGJhNjRjZjhjZTJiLi41YWVkYTNiNzJmNDBiYTVhZjc0MTEyYzAwNDU3
Zjk2NmE3YTAzYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3
Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRl
ci5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC00MSwxNSArNDIsMTMgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xh
c3MgU2hhcmVkQnVmZmVyOwotY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBzdHJ1Y3QgUHJl
dmlld0NvbnZlcnRlckNsaWVudDsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI7CiAK
IHN0cnVjdCBQcmV2aWV3UGxhdGZvcm1EZWxlZ2F0ZSA6IENhbk1ha2VXZWFrUHRyPFByZXZpZXdQ
bGF0Zm9ybURlbGVnYXRlPiB7CiAgICAgdmlydHVhbCB+UHJldmlld1BsYXRmb3JtRGVsZWdhdGUo
KSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkUmVj
ZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGVsZWdhdGVEaWRGaW5pc2hMb2FkaW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
ZWxlZ2F0ZURpZEZhaWxXaXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKIH07CkBA
IC03Miw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJldmll
d0ZpbGVOYW1lKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHByZXZpZXdVVEko
KSBjb25zdDsKICAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBwcmV2aWV3RXJyb3IoKSBjb25zdDsK
LSAgICBjb25zdCBTaGFyZWRCdWZmZXImIHByZXZpZXdEYXRhKCkgY29uc3Q7CisgICAgY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcHJldmlld0RhdGEoKSBjb25zdDsKIAogICAgIHZvaWQg
ZmFpbGVkVXBkYXRpbmcoKTsKICAgICB2b2lkIGZpbmlzaFVwZGF0aW5nKCk7CkBAIC05NCw3ICs5
Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1BsYXRmb3JtUGFzc3dvcmRFcnJvcihjb25zdCBS
ZXNvdXJjZUVycm9yJikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGl0
ZXJhdGVDbGllbnRzKFQmJiBjYWxsYmFjayk7Ci0gICAgdm9pZCBhcHBlbmRGcm9tQnVmZmVyKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgYXBwZW5kRnJvbUJ1ZmZlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBkaWRBZGRDbGllbnQoUHJldmlld0NvbnZl
cnRlckNsaWVudCYpOwogICAgIHZvaWQgZGlkRmFpbENvbnZlcnRpbmdXaXRoRXJyb3IoY29uc3Qg
UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkRmFpbFVwZGF0aW5nKCk7CkBAIC0xMDYsNyAr
MTA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtVW5sb2NrV2l0aFBhc3N3b3JkKGNv
bnN0IFN0cmluZyYpOwogCiAgICAgLy8gUHJldmlld1BsYXRmb3JtRGVsZWdhdGUKLSAgICB2b2lk
IGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAg
dm9pZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KSBmaW5hbDsKICAgICB2b2lkIGRlbGVnYXRlRGlkRmluaXNoTG9hZGluZygpIGZpbmFsOwogICAg
IHZvaWQgZGVsZWdhdGVEaWRGYWlsV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5h
bDsKIApAQCAtMTE4LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZpbmlzaGVkQ29udmVy
dGluZywKICAgICB9OwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9wcmV2aWV3RGF0YTsKKyAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcHJldmlld0RhdGE7CiAgICAgUmVzb3VyY2VFcnJvciBt
X3ByZXZpZXdFcnJvcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsK
ICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlVwZGF0aW5nIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmgKaW5kZXggMDRlYTM2ODA2OTJi
MjUyYTE5ODljMjZjYTIwNDIxMjc3N2FhM2I3Yi4uOWNlZTkzMzIwYjIzOGI0Y2Q3M2NkZDJlMDMw
MmMzYmY0ZGFkNjhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmll
d0NvbnZlcnRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXJDbGllbnQuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFByZXZpZXdDb252ZXJ0ZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByZXZp
ZXdDb252ZXJ0ZXJDbGllbnQgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVyQ2xpZW50
PiB7CiAgICAgdmlydHVhbCB+UHJldmlld0NvbnZlcnRlckNsaWVudCgpID0gZGVmYXVsdDsKQEAg
LTQyLDcgKzQyLDcgQEAgc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQgOiBDYW5NYWtlV2Vh
a1B0cjxQcmV2aWV3Q29udmVydGVyQ2xpZW50PiB7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdD
b252ZXJ0ZXJEaWRGaW5pc2hVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0
ZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRTdGFydENvbnZl
cnRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0Nv
bnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBTaGFyZWRCdWZm
ZXImIG5ld0RhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJl
Y2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBuZXdEYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5p
c2hDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBy
ZXZpZXdDb252ZXJ0ZXJEaWRGYWlsQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQ
cm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3Zp
ZGVyLmgKaW5kZXggODI3ODYzOTNmY2VkNzU0Yzg1ZjdiMjg5MTI1MmY1MTZiZWQwZDU0OS4uYjk4
NmVlNDBkMTk3NTE3NGY1NGFkMjlhMTY4Y2FkZjE4OTQ1NmMzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgKQEAgLTMyLDcgKzMy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJQcm92aWRl
ciA6IENhbk1ha2VXZWFrUHRyPFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcj4gewogICAgIHZpcnR1
YWwgflByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcigpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwg
dm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVy
dGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRl
cihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJvdmlkZVBhc3N3
b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJikgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCmluZGV4IGExY2M3Njk1YzBhNjNl
ZDc4N2UyMTBhN2M4Mjc3NzY3ZGNjZTcxYWYuLjFlMTJiOTU1NTgwMjkyYzAzYTU3OGVmM2Y3OGIx
NTdlZDVmZWMzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2Vk
QXR0YWNobWVudEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0
dGFjaG1lbnRJbmZvLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBz
dHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IFByb21pc2VkQXR0YWNobWVudEluZm8gewog
I2VuZGlmCiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0gICAgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CisgICAgVmVj
dG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKIAogICAgIG9wZXJhdG9y
IGJvb2woKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
Y3BwCmluZGV4IDA1NTI2YmZkYmM4NDlkMzVlZWVlNjA0MjUxNWRmNzc1MjQxZWI3ZTguLjc2YmQx
MWM4YTgzNDU0MzkyNTk1OTI4NGI1MGMxZDc5MDc2ZmExMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMzcsNjkgKzM3LDY5IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKQorUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKTsKIH0KIAotUmVmPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7CiB9CiAKLVJlZjxT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhJiYgbWFwcGVkRmlsZURhdGEpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFw
cGVkRmlsZURhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdU
Rk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwogfQogCi1SZWY8U2hh
cmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkp
OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWZWN0b3I8dWlu
dDhfdD4mJiB2ZWN0b3IpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3Rvcikp
KTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21l
bnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3Zp
ZGVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHBy
b3ZpZGVyKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIoV1RGTW92ZShwcm92aWRlcikpKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
KSA9IGRlZmF1bHQ7CitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKCkgPSBkZWZhdWx0OwogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRh
KQogICAgIDogbV9zaXplKGZpbGVEYXRhLnNpemUoKSkKIHsKICAgICBtX3NlZ21lbnRzLmFwcGVu
ZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpIH0pOwogfQogCi1T
aGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRl
cikKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoRGF0YVNl
Z21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCiAgICAgOiBtX3NpemUocHJvdmlkZXIuc2l6ZSgp
KQogewogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZN
b3ZlKHByb3ZpZGVyKSkgfSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAg
ICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKICNpZiBVU0UoR1NUUkVBTUVSKQotUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXIm
IG1hcHBlZEJ1ZmZlcikKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIobWFwcGVkQnVmZmVyKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihtYXBwZWRCdWZm
ZXIpKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZm
ZXImIG1hcHBlZEJ1ZmZlcikKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKICAgICA6IG1fc2l6
ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKSB9KTsKIH0KICNlbmRpZgogCi1zdGF0aWMg
VmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQorc3RhdGljIFZlY3Rvcjx1
aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6ZV90IHNpemUpCiB7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKICAgICBjb21iaW5lZERhdGEucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShzaXplKTsKQEAgLTEwOSwxOSArMTA5LDE5IEBAIHN0YXRpYyBWZWN0b3I8dWludDhf
dD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVj
dG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKSBjb25zdAorUmVmPFNoYXJlZEJ1
ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKSBjb25zdAogewog
ICAgIGlmIChtX2NvbnRpZ3VvdXMpCi0gICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykp
IH07CisgICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29u
c3RfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4odGhpcykpIH07CiAgICAgaWYgKCFtX3Nl
Z21lbnRzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBpZiAo
bV9zZWdtZW50cy5zaXplKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsKKyAgICAgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVm
KCkpOwogICAgIGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21l
bnRzLCBtX3NpemUpOwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShjb21iaW5lZERhdGEpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShjb21iaW5lZERhdGEpKTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZl
cjo6Y29weURhdGEoKSBjb25zdAorVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmNvcHlEYXRhKCkgY29uc3QKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBk
YXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSgpKTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBW
ZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CiAgICAgcmV0dXJu
IGRhdGE7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkKK1Zl
Y3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCiB7CiAgICAg
aWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTQ2LDEz
ICsxNDYsMTMgQEAgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKQogICAg
IHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3IFNoYXJlZEJ1
ZmZlcjo6Z2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdAorU2hhcmVkQnVmZmVyRGF0
YVZpZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9u
KSBjb25zdAogewogICAgIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkqIGVsZW1lbnQgPSBn
ZXRTZWdtZW50Rm9yUG9zaXRpb24ocG9zaXRpb24pOwogICAgIHJldHVybiB7IGVsZW1lbnQtPnNl
Z21lbnQuY29weVJlZigpLCBwb3NpdGlvbiAtIGVsZW1lbnQtPmJlZ2luUG9zaXRpb24gfTsKIH0K
IAotY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBTaGFyZWRCdWZm
ZXI6OmdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpb24pIGNvbnN0Citjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aW9uKSBjb25z
dAogewogICAgIFJFTEVBU0VfQVNTRVJUKHBvc2l0aW9uIDwgbV9zaXplKTsKICAgICBhdXRvIGNv
bXBhcmF0b3IgPSBbXShjb25zdCBzaXplX3QmIHBvc2l0aW9uLCBjb25zdCBEYXRhU2VnbWVudFZl
Y3RvckVudHJ5JiBlbnRyeSkgewpAQCAtMTYzLDcgKzE2Myw3IEBAIGNvbnN0IFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogU2hhcmVkQnVmZmVyOjpnZXRTZWdtZW50Rm9yUG9z
aXRpb24oCiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKLVN0cmluZyBTaGFyZWRCdWZmZXI6OnRv
SGV4U3RyaW5nKCkgY29uc3QKK1N0cmluZyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0b0hleFN0
cmluZygpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgIGZv
ckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CkBAIC0xNzMsNyArMTczLDcgQEAgU3Ry
aW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdC
dWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVy
Ojp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8QXJyYXlCdWZmZXI+IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QKIHsKICAgICBh
dXRvIGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSksIDEpOwogICAgIGlmICghYXJyYXlCdWZmZXIpIHsK
QEAgLTE5Miw3ICsxOTIsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogICAgIHJldHVybiBhcnJheUJ1ZmZlcjsKIH0KIAot
dm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lk
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewogICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBtX3NlZ21lbnRz
LnJlc2VydmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEubV9zZWdtZW50cy5zaXpl
KCkpOwpAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsK
IH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgbGVuZ3RoKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1fY29udGlndW91cyk7
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiAg
ICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZl
cjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewogICAgIEFTU0VSVCghbV9j
b250aWd1b3VzKTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7CkBAIC0yMjIsMTYg
KzIyMiwxNiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRh
dGEpCiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNoYXJl
ZEJ1ZmZlcjo6Y2xlYXIoKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjbGVhcigpCiB7
CiAgICAgbV9zaXplID0gMDsKICAgICBtX3NlZ21lbnRzLmNsZWFyKCk7CiAgICAgQVNTRVJUKGlu
dGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNvcHkoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNsb25l
ID0gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcik7CiAg
ICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50cy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8m
IGVsZW1lbnQgOiBtX3NlZ21lbnRzKQpAQCAtMjQxLDE0ICsyNDEsMTQgQEAgUmVmPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKICAgICByZXR1cm4gY2xvbmU7CiB9CiAK
LXZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNv
bnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAordm9pZCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNw
YW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8gc2VnbWVudHMg
PSBtX3NlZ21lbnRzOwogICAgIGZvciAoYXV0byYgc2VnbWVudCA6IHNlZ21lbnRzKQogICAgICAg
ICBhcHBseShTcGFuIHsgc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2VnbWVudC0+
c2l6ZSgpIH0pOwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6c3RhcnRzV2l0aChjb25zdCBTcGFu
PGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0Citib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdAog
ewogICAgIGlmIChwcmVmaXguZW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yNzAs
NyArMjcwLDcgQEAgYm9vbCBTaGFyZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25z
dCB1aW50OF90PiYgcHJlZml4KSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotVmVjdG9y
PHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3Ro
KSBjb25zdAorVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnJlYWQoc2l6
ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIHsKICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKICAgICBpZiAob2Zmc2V0ID49IHNpemUoKSkKQEAgLTI5NywxMiArMjk3LDEyIEBAIFZl
Y3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxl
bmd0aCkgY29uc3QKICAgICByZXR1cm4gZGF0YTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNv
cHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3QKK3ZvaWQgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3Ro
KSBjb25zdAogewogICAgIHJldHVybiBjb3B5VG8oZGVzdGluYXRpb24sIDAsIGxlbmd0aCk7CiB9
CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkg
Y29uc3QKIHsKICAgICBBU1NFUlQobGVuZ3RoICsgb2Zmc2V0IDw9IHNpemUoKSk7CiAgICAgaWYg
KG9mZnNldCA+PSBzaXplKCkpCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6
OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkg
Y29uc3QKIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECi1ib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJu
YWxseUNvbnNpc3RlbnQoKSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjppbnRl
cm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHBvc2l0aW9uID0gMDsKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKSB7CkBAIC0zNTQsMTIgKzM1
NCwxMiBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAog
I2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKICNpZiAhVVNFKENGKQotdm9pZCBTaGFyZWRCdWZm
ZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogewogfQogI2VuZGlmCiAK
LWJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIp
IGNvbnN0Citib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKHRoaXMgPT0gJm90
aGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQwOCwxOSArNDA4LDE5IEBAIGJvb2wgU2hh
cmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLUNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIoKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoKQogewogICAgIG1fY29u
dGlndW91cyA9IHRydWU7CiB9CiAKLUNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCitTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkKIHsKICAgICBtX3NpemUgPSBz
ZWdtZW50LT5zaXplKCk7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBXVEZNb3ZlKHNlZ21l
bnQpIH0pOwogICAgIG1fY29udGlndW91cyA9IHRydWU7CiB9CiAKLUNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjb250aWd1
b3VzQnVmZmVyKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikKIHsKICAgICBBU1NFUlQoY29udGlndW91c0J1
ZmZlci0+aGFzT25lU2VnbWVudCgpIHx8IGNvbnRpZ3VvdXNCdWZmZXItPmlzRW1wdHkoKSk7CiAg
ICAgbV9zaXplID0gY29udGlndW91c0J1ZmZlci0+c2l6ZSgpOwpAQCAtNDI5LDM2ICs0MjksMzYg
QEAgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hh
cmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWYKICAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOwogfQog
Ci1Db250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKLSAgICA6IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGRh
dGEpKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJiBkYXRhKQorICAgIDogRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQog
ewogICAgIG1fY29udGlndW91cyA9IHRydWU7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVk
RmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQorUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFwcGVkRmlsZU1v
ZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQogewogICAgIGlmIChtYXlV
c2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7CiAgICAgICAgIGJvb2wg
bWFwcGluZ1N1Y2Nlc3M7CiAgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBl
ZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nlc3MpOwogICAg
ICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKKyAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmls
ZURhdGEpKSk7CiAgICAgfQogCiAgICAgYXV0byBidWZmZXIgPSBGaWxlU3lzdGVtOjpyZWFkRW50
aXJlRmlsZShmaWxlUGF0aCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3Zl
KCpidWZmZXIpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqYnVm
ZmVyKSk7CiB9CiAKLWNvbnN0IHVpbnQ4X3QqIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRhdGEo
KSBjb25zdAorY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKIHsKICAg
ICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKIH0KIAotV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2RlciBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKK1dU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkgY29uc3QKIHsK
ICAgICByZXR1cm4geyB7IGRhdGEoKSwgc2l6ZSgpIH0gfTsKIH0KQEAgLTU0Myw2ICs1NDMsNTkg
QEAgc2l6ZV90IERhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNp
dCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCitTaGFyZWRCdWZmZXJCdWlsZGVyOjpT
aGFyZWRCdWZmZXJCdWlsZGVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKK3sKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworICAgIGluaXRpYWxpemUo
YnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOworfQorCitTaGFyZWRCdWZmZXJCdWlsZGVyJiBTaGFy
ZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRvcj0oUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQoreworICAgIGlmICghYnVmZmVyKSB7CisgICAgICAgIG1fYnVmZmVyID0gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICBtX2J1ZmZlciA9IG51bGxw
dHI7CisgICAgaW5pdGlhbGl6ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJu
ICp0aGlzOworfQorCit2b2lkIFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmluaXRpYWxpemUoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit7CisgICAgQVNTRVJUKCFtX2J1ZmZlcik7CisgICAgLy8g
V2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFz
IGFsbCBTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQorICAgIC8vIG9uY2UgY3JlYXRl
ZC4KKyAgICBpZiAoYnVmZmVyLT5oYXNPbmVSZWYoKSAmJiAhYnVmZmVyLT5pc0NvbnRpZ3VvdXMo
KSkgeworICAgICAgICBtX2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBhcHBlbmQoYnVmZmVyKTsKK30KKworUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2UoKQoreworICAgIHJldHVybiBtX2J1ZmZl
ciA/IG1fYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkgOiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsKK30KKworUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFr
ZUFzQ29udGlndW91cygpCit7CisgICAgcmV0dXJuIHRha2UoKS0+bWFrZUNvbnRpZ3VvdXMoKTsK
K30KKworUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlQXNBcnJh
eUJ1ZmZlcigpCit7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0dXJuIEFycmF5QnVm
ZmVyOjp0cnlDcmVhdGUobnVsbHB0ciwgMCk7CisgICAgcmV0dXJuIHRha2UoKS0+dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKTsKK30KKwordm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVyOjplbnN1cmVCdWZm
ZXIoKQoreworICAgIGlmICghbV9idWZmZXIpCisgICAgICAgIG1fYnVmZmVyID0gRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cit9CisKIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFy
ZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0
aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3Nl
Z21lbnQoV1RGTW92ZShzZWdtZW50KSkKICAgICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBv
c2l0aW9uV2l0aGluU2VnbWVudCkKQEAgLTU1NywxNiArNjEwLDE2IEBAIFNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYg
b3RoZXIsIHNpCiB7CiB9CiAKLVJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXJEYXRhVmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAg
IGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKLSAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7Cisg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAg
ICAgICAgIFtzZWdtZW50LCBkYXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCiAgICAg
ICAgIFtzaXplID0gc2l6ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJp
bmcpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogewogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhl
IGNoYXJhY3RlcnMuCiAgICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsK
QEAgLTU5Miw3ICs2NDUsNyBAQCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1
ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB9CiAKICAgICBidWZmZXIuc2hyaW5rKHAg
LSByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZmZXIuZGF0YSgpKSk7Ci0gICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDdk
ODdkMzk3YTMyZGExMWNhMDYyMmMwNDU5NzA2ZTk5ODk3YjgzYzIuLjZhZDVmOGMzNDdlOTFlOTdl
YjRkZDIyODhhMzBmMTYyNGRlZGZlNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtMjcsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRl
IDx2YXJpYW50PgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KQEAgLTYyLDcgKzYzLDcgQEAgY2xhc3MgRGVjb2RlcjsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKIC8vIERhdGEgd3JhcHBlZCBieSBh
IERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJl
bmNlZCBieSBvdGhlciBvYmplY3RzLgpAQCAtMTMwLDQyICsxMzEsNDIgQEAgcHJpdmF0ZToKICNl
bmRpZgogICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKICAgICAgICAgUHJvdmlk
ZXI+IG1faW1tdXRhYmxlRGF0YTsKLSAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwotICAg
IGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOyAvLyBGb3IgY3JlYXRlQ0ZEYXRh
CisgICAgZnJpZW5kIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CisgICAgZnJpZW5kIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNGRGF0YQogfTsKIAotY2xhc3MgU2hhcmVk
QnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
c2l6ZSkgeyByZXR1cm4gY3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEpLCBzaXplKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShWZWN0b3I8dWludDhfdD4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0
ZShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4g
Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsgfQor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+
JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIm
Jik7CiAKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8
TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOwog
I2VuZGlmCiAjaWYgVVNFKENGKQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCiAKICNp
ZiBVU0UoR0xJQikKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwogI2VuZGlmCiAKICNpZiBVU0UoR1NUUkVB
TUVSKQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUo
R3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2Vu
ZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwg
c2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAKLSAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0
IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlz
IHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisgICAgLy8gU2ltaWxhciB0
byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGlu
c3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBpcyBub3Qg
c2hhcmVkKS4KICAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKIAotICAgIC8vIENy
ZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRl
bnRzIHRvIHRoYXQKKyAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhp
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAogICAgIC8vIEFycmF5
QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZm
ZXIuCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpIGNvbnN0OwogCkBAIC0xNzMsMjcgKzE3NCwxNCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQogICAgIGJvb2wgaXNDb250aWd1
b3VzKCkgY29uc3QgeyByZXR1cm4gbV9jb250aWd1b3VzOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICB2b2lkIGFwcGVuZChjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKLSNpZiBVU0UoRk9VTkRBVElPTikKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFwcGVuZChOU0RhdGEgKik7Ci0jZW5kaWYKLSNpZiBVU0UoQ0YpCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoQ0ZEYXRhUmVmKTsKLSNlbmRpZgotCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNo
YXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
b3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBz
aXplX3QgbGVuZ3RoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNl
Z21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+Jikg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29u
c3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7CiAKLSAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdl
YkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hl
biB1c2luZyBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CisgICAgdXNpbmcgRGF0YVNlZ21lbnQg
PSBXZWJDb3JlOjpEYXRhU2VnbWVudDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5
IHdoZW4gdXNpbmcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQKIAogICAgIHN0
cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAgc2l6ZV90IGJlZ2luUG9zaXRp
b247CkBAIC0yMTEsMzcgKzE5OSw1MSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGhpbnRNZW1vcnlO
b3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9y
PT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIG90aGVyKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0K
IAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtYWtlQ29u
dGlndW91cygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IG1h
a2VDb250aWd1b3VzKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICBmcmllbmQgY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwogCiAg
ICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdtZW50czsKICAgICBib29sIG1fY29udGlndW91cyB7
IGZhbHNlIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIoKTsKLSAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgYXBw
ZW5kKGRhdGEsIHNpemUpOyB9Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBzaXplKSB7IGFwcGVuZChkYXRhLCBzaXplKTsgfQotICAgIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7IGFwcGVuZChXVEZNb3ZlKGRh
dGEpKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcigpOworICAgIGV4cGxpY2l0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsg
YXBwZW5kKGRhdGEsIHNpemUpOyB9CisgICAgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0K
KyAgICBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRh
dGEpIHsgYXBwZW5kKFdURk1vdmUoZGF0YSkpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKERhdGFT
ZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYpOwogI2lmIFVTRShDRikKLSAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAj
ZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoR0J5dGVzKik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihHc3RN
YXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAog
cHJpdmF0ZToKLSAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3Ig
YW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4K
KyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlcjsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGVuZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgdm9pZCBh
cHBlbmQoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7IH0KKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFwcGVuZChWZWN0b3I8dWludDhfdD4mJik7CisjaWYgVVNFKEZPVU5EQVRJT04p
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoTlNEYXRhICopOworI2VuZGlmCisjaWYg
VVNFKENGKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKENGRGF0YVJlZik7CisjZW5k
aWYKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKKworICAgIC8vIENvbWJpbmVz
IGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBh
ZnRlciBjbGVhcmluZyB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KICAgICBXRUJDT1JFX0VY
UE9SVCBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZl
Y3RvckVudHJ5KiBnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0
OwogCkBAIC0yNTAsMzQgKzI1MiwyOSBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi0vLyBBIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIgaXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGly
ZWN0bHkgYWNjZXNzIGl0cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhv
ZHMuCi1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyIDogcHVibGljIFNoYXJlZEJ1ZmZlciB7
CisvLyBBIFNoYXJlZEJ1ZmZlciBpcyBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgdGhhdCBhbGxv
d3MgdG8gZGlyZWN0bHkgYWNjZXNzIGl0cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxh
dGVkIG1ldGhvZHMuCitjbGFzcyBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAg
c3RhdGljIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3Mp
CisgICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKICAg
ICB7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdzKSkKLSAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoKSk7CisgICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoKSk7CiAgICAgICAgIGVsc2Ug
aWYgY29uc3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQogICAgICAgICAgICAgJiYgKHN0ZDo6
aXNfc2FtZV92PEFyZ3MsIFJlZjxEYXRhU2VnbWVudD4+ICYmLi4uKSkKLSAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoc3RkOjpmb3J3YXJkPEFy
Z3M+KGFyZ3MpLi4uKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CiAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8
QXJncz4oYXJncykuLi4pOwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKKyAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLik7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIo
V1RGTW92ZShidWZmZXIpKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBFbnN1cmUgdGhh
dCB5b3UgY2FuJ3QgY2FsbCBhcHBlbmQgb24gYSBDb250aWd1b3VzU2hhcmVkQnVmZmVyIGRpcmVj
dGx5LgotICAgIC8vIFdoZW4gY2FsbGVkIGZyb20gdGhlIGJhc2UgY2xhc3MsIGl0IHdpbGwgYXNz
ZXJ0LgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICAgIHZvaWQgYXBwZW5kKEFy
Z3MmJi4uLikgPSBkZWxldGU7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCB1aW50OF90KiBk
YXRhKCkgY29uc3Q7CiAgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0IHsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KICAgICBXVEY6OlBl
cnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKIAogICAgIGVudW0gY2xhc3MgTWF5
VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0g
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBN
YXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVz
KTsKIAogI2lmIFVTRShGT1VOREFUSU9OKQogICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxO
U0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwpAQCAtMjkwLDE1ICsyODcsNjcgQEAgcHVibGlj
OgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcigpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8RGF0
YVNlZ21lbnQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgpOworfTsKKworY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlciB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcigp
ID0gZGVmYXVsdDsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKFNoYXJlZEJ1ZmZlckJ1aWxkZXIm
JikgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1
aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVy
QnVpbGRlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBpbml0aWFsaXplKFdURk1vdmUo
YnVmZmVyKSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgorICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIoc3RkOjppbl9wbGFjZV90LCBBcmdzJiYuLi4gYXJncykKKyAgICAgICAgOiBtX2J1ZmZl
cihGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKSkgeyB9CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyJiBvcGVyYXRvcj0oU2hhcmVkQnVm
ZmVyQnVpbGRlciYmKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVy
QnVpbGRlciYgb3BlcmF0b3I9KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCisg
ICAgeworICAgICAgICBlbnN1cmVCdWZmZXIoKTsKKyAgICAgICAgbV9idWZmZXItPmFwcGVuZChz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhaXNOdWxsKCk7IH0KKyAgICBib29sIGlzTnVsbCgp
IGNvbnN0IHsgcmV0dXJuICFtX2J1ZmZlcjsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmlzRW1wdHkoKSA6IHRydWU7IH0KKworICAgIHNp
emVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDog
MDsgfQorCisgICAgdm9pZCByZXNldCgpIHsgbV9idWZmZXIgPSBudWxscHRyOyB9CisgICAgdm9p
ZCBlbXB0eSgpIHsgbV9idWZmZXIgPSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsg
fQorCisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdldCgpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNvcHkoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiB0YWtlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZl
cj4gdGFrZUFzQ29udGlndW91cygpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3Mg
U2NyaXB0QnVmZmVyOworICAgIGZyaWVuZCBjbGFzcyBGZXRjaEJvZHlDb25zdW1lcjsKKyAgICAv
LyBDb3B5IGNvbnN0cnVjdG9yIHNob3VsZCBtYWtlIGEgY29weSBvZiB0aGUgdW5kZXJseWluZyBT
aGFyZWRCdWZmZXIKKyAgICAvLyBUaGlzIGlzIHByZXZlbnRlZCBieSBTY3JpcHRCdWZmZXIgYW5k
IEZldGNoQm9keUNvbnN1bWVyIGNsYXNzZXMgKGJ1ZyAyMzQyMTUpCisgICAgLy8gRm9yIG5vdyBs
ZXQgdGhlIGRlZmF1bHQgY29uc3RydWN0b3Ivb3BlcmF0b3IgdGFrZSBhIHJlZmVyZW5jZSB0byB0
aGUKKyAgICAvLyBTaGFyZWRCdWZmZXIuCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihjb25zdCBT
aGFyZWRCdWZmZXJCdWlsZGVyJikgPSBkZWZhdWx0OworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIm
IG9wZXJhdG9yPShjb25zdCBTaGFyZWRCdWZmZXJCdWlsZGVyJikgPSBkZWZhdWx0OworCisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0aWFsaXplKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5zdXJlQnVmZmVyKCk7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAotaW5saW5lIFZlY3Rvcjx1aW50OF90PiBT
aGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKK2lubGluZSBWZWN0b3I8dWludDhfdD4gRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkK
ICAgICAgICAgcmV0dXJuIHRha2VEYXRhKCk7CkBAIC0zMTMsNyArMzYyLDcgQEAgcHVibGljOgog
ICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnQtPmRhdGEo
KSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OyB9CiAgICAgY29uc3QgY2hhciogZGF0YUFzQ2hh
clB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEo
KSk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBj
cmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKICNpZiBVU0UoRk9VTkRBVElPTikK
ICAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25z
dDsKICNlbmRpZgpAQCAtMzIzLDYgKzM3Miw2IEBAIHByaXZhdGU6CiAgICAgY29uc3Qgc2l6ZV90
IG1fc2l6ZTsKIH07CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVy
KGNvbnN0IFN0cmluZyYpOworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBT
dHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCmluZGV4IGNkYjZlNzAzNDA0
ZDQyNmRkMjFiNDc5ZmE4OWMwZGE5YjhjNDlmOGUuLjlkMDU1Y2UyN2Q4OGMzZDYyZTViZDFjZDQ2
YWQ5MWY1Y2M0MzFmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAjaWYgRU5BQkxFKE1IVE1MKQogCi1TaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFZlY3Rvcjxj
aGFyPiYgc2VwYXJhdG9yKQorU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgVmVjdG9yPGNo
YXI+JiBzZXBhcmF0b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVudChidWZmZXItPmJlZ2luKCkp
CiAgICAgLCBtX2l0ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAgLCBtX3NlZ21lbnQobV9p
dGVyYXRvckN1cnJlbnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRlcmF0b3JDdXJyZW50LT5zZWdt
ZW50LT5kYXRhKCkgOiBudWxscHRyKQpAQCAtNDQsNyArNDQsNyBAQCBTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNv
bnN0IFZlYwogewogfQogCi1TaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IGNoYXIqIHNlcGFyYXRvcikKK1No
YXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IGNoYXIqIHNlcGFyYXRvcikKICAgICA6IG1faXRl
cmF0b3JDdXJyZW50KGJ1ZmZlci0+YmVnaW4oKSkKICAgICAsIG1faXRlcmF0b3JFbmQoYnVmZmVy
LT5lbmQoKSkKICAgICAsIG1fc2VnbWVudChtX2l0ZXJhdG9yQ3VycmVudCAhPSBtX2l0ZXJhdG9y
RW5kID8gbV9pdGVyYXRvckN1cnJlbnQtPnNlZ21lbnQtPmRhdGEoKSA6IG51bGxwdHIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaAppbmRl
eCA1ZDRlNmZlZTU4MmM2NjE2ZmQwN2UzOTk0ZmY3NWM4ZjA3YTJmY2UxLi4xYzY0MDhkNGM3MzZh
MWM0YTQ1Y2VlN2IzZjY5NjU3YmM5YTI2MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKQEAgLTQxLDggKzQxLDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlciB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVy
KiwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpOwotICAgIFNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyKFNoYXJlZEJ1ZmZlciosIGNvbnN0IGNoYXIqIHNlcGFyYXRvcik7CisgICAgU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFZlY3Rvcjxj
aGFyPiYgc2VwYXJhdG9yKTsKKyAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiwgY29uc3QgY2hhciogc2VwYXJhdG9yKTsKIAogICAgIHZvaWQgc2V0U2Vw
YXJhdG9yKGNvbnN0IFZlY3RvcjxjaGFyPiYpOwogICAgIHZvaWQgc2V0U2VwYXJhdG9yKGNvbnN0
IGNoYXIqKTsKQEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogICAgIHNpemVfdCBwZWVrKFZlY3Rv
cjx1aW50OF90PiYsIHNpemVfdCk7CiAKIHByaXZhdGU6Ci0gICAgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbV9pdGVyYXRvckN1cnJlbnQ7Ci0gICAgY29u
c3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbV9pdGVy
YXRvckVuZDsKKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rvcjo6
Y29uc3RfaXRlcmF0b3IgbV9pdGVyYXRvckN1cnJlbnQ7CisgICAgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JF
bmQ7CiAgICAgY29uc3QgdWludDhfdCogbV9zZWdtZW50IHsgbnVsbHB0ciB9OwogICAgIHNpemVf
dCBtX3NlZ21lbnRJbmRleCB7IDAgfTsKICAgICBWZWN0b3I8Y2hhcj4gbV9zZXBhcmF0b3IgeyBm
YWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVi
b2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcApp
bmRleCAzZjdmYmE0MWE0YTFlZmIxMWNjZGZmZDU3MjY3OGNkZmZlNTNkMDkxLi5iMmQ3YTU1MGQ0
NjBlOTRjZDMxNTEzNGEzMTk1YmNkOTFjN2I3ODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFN0YXRpY1Bh
c3RlYm9hcmQ6OndyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKICAgICBtX2N1c3RvbURhdGEud3JpdGVTdHJpbmcodHlwZSwgdmFsdWUpOwogfQogCi12
b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6Ondy
aXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsK
ICAgICBtX25vbkRlZmF1bHREYXRhVHlwZXMuYWRkKHR5cGUpOwogICAgIG1fY3VzdG9tRGF0YS53
cml0ZURhdGEodHlwZSwgV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
dGF0aWNQYXN0ZWJvYXJkLmgKaW5kZXggYTAzOWMyNTI1ZWQ1ZmU2MzUwY2NiMGExYWEzNjUwZDMx
OTg2ZjYxOS4uYzA5YjZkZTMxZjJlZGViZTAxODhkYzljNDY2YTI3MWUxYjhiOWUxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaApAQCAtMzIsNyArMzIsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFN0YXRpY1Bhc3RlYm9hcmQgZmluYWwgOiBw
dWJsaWMgUGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAg
ICBTdHJpbmcgcmVhZFN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpIGZpbmFs
OwogCiAgICAgdm9pZCB3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgZGF0YSkgZmluYWw7Ci0gICAgdm9pZCB3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICB2b2lkIHdyaXRlRGF0YShj
b25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CiAgICAgdm9pZCB3
cml0ZVN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYg
ZGF0YSk7CiAgICAgdm9pZCBjbGVhcigpIGZpbmFsOwogICAgIHZvaWQgY2xlYXIoY29uc3QgU3Ry
aW5nJiB0eXBlKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL05vd1BsYXlpbmdJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQ
bGF5aW5nSW5mby5oCmluZGV4IDY4Nzk1OTAwYzVhZGY5Y2M5MDQ1ZTBlYWJiMjJiMThmYTY2OTYz
MTQuLjFkNjViYzQwM2FkODUyNDNjNjcyNWU3MDQ0OGQ2Y2RhZGNjY2NlMWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaApAQCAtMzYsNyArMzYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgTm93UGxheWluZ0luZm9BcnR3b3JrIHsK
ICAgICBTdHJpbmcgc3JjOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBpbWFnZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGlt
YWdlRGF0YTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb3dQbGF5aW5nSW5mb0FydHdv
cmsmIG90aGVyKSBjb25zdAogICAgIHsKQEAgLTY3LDcgKzY3LDcgQEAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gaW5saW5lIHN0ZDo6b3B0aW9uYWw8Tm93UGxheWluZ0luZm9BcnR3b3JrPiBOb3dQ
bGF5aW5nSW4KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1pbWVUeXBlKSkKICAgICAgICAgcmV0
dXJuIHsgfTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaW1hZ2VEYXRhKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29j
b2EuY3BwCmluZGV4IGMxNDk0ZWFiMWYyODY0ZTc3Mzk1MjRiZTlkYWY1OTI2NWVhMjBiOTQuLmQ0
YmI1NzlmMzAwYzVmZTIxZTRkZTA4NDExMGE5NDZkNjk0YzczZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJD
b2NvYS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBjbGFzcyBBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0
YSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKLSAgICBSZWY8U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9i
dWZmZXI7CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICBSZWY8QXVkaW9UcmFja1ByaXZh
dGVXZWJNPiBtX3RyYWNrOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9L
ZXllZEVuY29kZXJDRi5jcHAKaW5kZXggOWIzZWNhMWExNTQ0OThjMGU3ZTM0YzdjOTEzMzY5NWNj
ZDk0N2U3Yi4uNDQ3M2VjMjhkMDRjNTQzNjMyM2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApAQCAtMTQ2LDEy
ICsxNDYsMTIgQEAgdm9pZCBLZXllZEVuY29kZXJDRjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlT
dGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBL
ZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5
ZWRFbmNvZGVyQ0Y6OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBhdXRvIGRhdGEgPSBhZG9wdENG
KENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3Jvb3REaWN0
aW9uYXJ5LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCwgMCwgbnVsbHB0
cikpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2Rl
ckNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCmluZGV4
IGZhYjY2ZmNiY2E4ZjQ3MTk3ZTk4ZDc5YmYwMmVmODE2MWE0Mjc2YTQuLmY1ODZjMDJiYjE1YmYz
OWI3MjgzZmJhOWFhNWU4YTEyNmI4NGZlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvS2V5ZWRFbmNvZGVyQ0YuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgfktleWVk
RW5jb2RlckNGKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQgZW5jb2Rl
Qnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwog
ICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNjhiMDg5
NGNjODU2ZWY1MjI3MDM0MzcwMjliMjZjNWIzZGQ1OTI1NC4uMWJhYTNkZTQxMTJjMmY3ZGY3Mjdh
OTM5NmVhNThlZTUzZjgwOTNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1No
YXJlZEJ1ZmZlckNGLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQorRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIHsK
ICAgICBhcHBlbmQoZGF0YSk7CiB9CkBAIC00MSw3ICs0MSw3IEBAIFNoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQogLy8gVXNpbmcgRm91bmRhdGlvbiBhbGxvd3MgZm9y
IGFuIGV2ZW4gbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiwK
IC8vIHNvIG9ubHkgdXNlIHRoaXMgdmVyc2lvbiBmb3Igbm9uLUZvdW5kYXRpb24uCiAjaWYgIVVT
RShGT1VOREFUSU9OKQotUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoaGFzT25lU2VnbWVudCgpKSB7CiAg
ICAgICAgIGlmIChhdXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+
KCZtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCkBAIC01MSwxMiArNTEs
MTIgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
Q0ZEYXRhKCkgY29uc3QKIH0KICNlbmRpZgogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShDRkRhdGFSZWYgZGF0YSkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGRhdGEpKTsKIH0KIAotdm9pZCBTaGFyZWRC
dWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogewogICAgIGZvciAo
Y29uc3QgYXV0byYgZW50cnkgOiBtX3NlZ21lbnRzKSB7CiAgICAgICAgIGlmIChlbnRyeS5zZWdt
ZW50LT5oYXNPbmVSZWYoKSkgewpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6
aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogICAgIH0KIH0KIAotdm9pZCBTaGFyZWRC
dWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQogewogICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsK
ICAgICBpZiAoZGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKaW5kZXggMDc5N2RmYmU4
ZDAxOGJlNjM2MTc0NGM1OGY4OTJkZDU2ZWQ2ODljNS4uY2JlODc3MWE0NWQ4NjJjYjVhYjA1ZWNh
Mzk5OTI3ZTA3ODM4ZjU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCkBAIC01MSw3ICs1
MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92
ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEo
KSBjb25zdCBvdmVycmlkZTsKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9j
a0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBi
b29sIGlzUmVxdWlyZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KaW5kZXggNDI5MGRi
MTI4ZDAwMGE0MGVlZjcwZmQyOTQxZDYzNDQ5MDQ2ZGUwMy4uMmVmMjcwMWZlNjc4YmY5YjkyZGIy
MTJiYmVhNWM5MTVhM2ZjM2EyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KQEAgLTE3
NSw3ICsxNzUsNyBAQCB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpmaW5pc2hl
ZEFkZGluZ0RhdGEoKQogICAgIHNlbWFwaG9yZS53YWl0KCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZm
ZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25z
dAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChkaWRCbG9ja0RhdGEo
KSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVwbGFjZW1lbnREYXRhLmdl
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFs
Q29udHJvbHNDb250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Q
YXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCmluZGV4IDA2OGNkY2IzODNmNDIzNjVhYzMy
NjRlMjI5YTZkNjNiYzJiNGFiZDYuLjY3OWFlOTMyOTUxN2UxZjM5NDNiYTU3NjJhYzhmNTZlODYw
YzhjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFs
Q29udHJvbHNDb250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBv
dmVycmlkZTsKICAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKLSAg
ICBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3Zl
cnJpZGU7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xz
Q29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFs
Q29udHJvbHNDb250ZW50RmlsdGVyLm1tCmluZGV4IGI0NjFmOTc1MzZkZTNhMTU4MTNhNTgyN2I4
NjcxMzhiOTZkNGYzOGMuLjFjOTYwNDcxNmI0MjY5M2Q1ZTQ2YzJlMjNlOTQxZGEwMGM4M2U0ZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJv
bHNDb250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBQ
YXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6ZmluaXNoZWRBZGRpbmdEYXRhKCkKICAgICB1
cGRhdGVGaWx0ZXJTdGF0ZSgpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBQYXJlbnRhbENvbnRy
b2xzQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKK1JlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnRE
YXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkpOwogICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNmY1MGYw
MzVhZGZlYWE5ZGJhZGIwMmFjYWQ4ZjA2N2M3ODNmY2JlNS4uYjgxNzA4MTdjZWM1OWUyMmQzYzBl
OWE3OGYxNDZjMDMzZTRjMTY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1Bhc3RlYm9hcmRDb2NvYS5tbQpAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgTlNCaXRtYXBJ
bWFnZUZpbGVUeXBlIGJpdG1hcFBOR0ZpbGVUeXBlKCkKIH0KICNlbmRpZiAvLyBQTEFURk9STShN
QUMpCiAKLS8vIE1ha2luZyB0aGlzIG5vbi1pbmxpbmUgc28gdGhhdCBXZWJLaXQgMidzIGRlY29k
aW5nIGRvZXNuJ3QgaGF2ZSB0byBpbmNsdWRlIFNoYXJlZEJ1ZmZlci5oLgorLy8gTWFraW5nIHRo
aXMgbm9uLWlubGluZSBzbyB0aGF0IFdlYktpdCAyJ3MgZGVjb2RpbmcgZG9lc24ndCBoYXZlIHRv
IGluY2x1ZGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci5oLgogUGFzdGVib2FyZFdlYkNvbnRlbnQ6
OlBhc3RlYm9hcmRXZWJDb250ZW50KCkgPSBkZWZhdWx0OwogUGFzdGVib2FyZFdlYkNvbnRlbnQ6
On5QYXN0ZWJvYXJkV2ViQ29udGVudCgpID0gZGVmYXVsdDsKIApAQCAtMjExLDExICsyMTEsMTEg
QEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5n
cygpCiB9CiAKICNpZiBQTEFURk9STShNQUMpCi1zdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3RhdGlj
IFJlZjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgdGlmZkJ1ZmZlcikKIHsKICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1h
Z2VSZXAgYWxsb2NdIGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIE5TRGF0YSAqcG5nRGF0YSA9IFtpbWFnZSByZXBy
ZXNlbnRhdGlvblVzaW5nVHlwZTpiaXRtYXBQTkdGaWxlVHlwZSgpIHByb3BlcnRpZXM6QHsgfV07
Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKKyAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9CiAjZW5kaWYKIApAQCAt
MzE2LDcgKzMxNiw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRUeXBlc1dpdGhT
ZWN1cml0eUNoZWNrKCkKICAgICByZXR1cm4gY29jb2FUeXBlczsKIH0KIAotUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3Vy
aXR5Q2hlY2soY29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVi
b2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5
cGUpCiB7CiAgICAgYXV0byBidWZmZXIgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPmJ1ZmZlckZvclR5cGUodHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4
dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVk
QnVmZmVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZm
ZXJDb2NvYS5tbQppbmRleCBhZDk2ZjdmNTNhMmRjYzA0ZDI5MzIxMDJlZWQ4MTk4MGZiZmQ1MDFh
Li42NjQyN2RmYmYwNWZkNzI2YWZkOTlhMzI5YzZhYzExYWM5ZWQ3YTU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpAQCAtODgs
MzAgKzg4LDMwIEBAIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShOU0RhdGEgKmRhdGEpCitSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnJpZGdlX2Nhc3QoZGF0
YSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGJy
aWRnZV9jYXN0KGRhdGEpKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRh
ICpkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRh
KQogewogICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICByZXR1cm4gYXBwZW5kKGJyaWRn
ZV9jYXN0KGRhdGEpKTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlTlNEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QoY3JlYXRl
Q0ZEYXRhKCkpOwogfQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewogICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkp
CiAgICAgICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBudWxscHRyLCAw
KSk7CiAgICAgcmV0dXJuIGJyaWRnZV9jYXN0KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+Y3JlYXRl
TlNEYXRhKCkpOwogfQogCi1SZXRhaW5QdHI8TlNBcnJheT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVO
U0RhdGFBcnJheSgpIGNvbnN0CitSZXRhaW5QdHI8TlNBcnJheT4gRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdAogewogICAgIHJldHVybiBjcmVhdGVOU0Fy
cmF5KG1fc2VnbWVudHMsIFtdIChhdXRvJiBzZWdtZW50KSB7CiAgICAgICAgIHJldHVybiBzZWdt
ZW50LnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKaW5kZXggZmJjMjgzZmJjMzM2OWJm
ODI3ZTMxNjk5NGM0Yzk0ZTA2MzYzY2I4MS4uMmRlNDE5MzRkYTE5ODc5ZDc1YzBkZjhhODllNjRl
NTk5YzI5YWUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNSW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIExvZ2dlcjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uOwogc3RydWN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb247CiAKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgQ0RNSW5zdGFu
Y2VDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+IHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZUNsaWVudCgpID0gZGVmYXVsdDsKIAotICAg
IHZpcnR1YWwgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0
IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5y
ZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogLy8gSmF2YVNjcmlwdCdzIGhhbmRs
ZSB0byBhIENETUluc3RhbmNlLCBtdXN0IGJlIHVzZWQgZnJvbSB0aGUKQEAgLTk4LDcgKzk4LDcg
QEAgcHVibGljOgogICAgIH07CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0
aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVm
ZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxi
YWNrJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBT
dHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Np
b24oKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCmluZGV4IDM3Y2QwN2M3YmYyZGM3NWU0MWZk
NWM2YzdkZWNmNDNlMTAzOWUxMTQuLmQyNTkyMjViYTllMDJhNjRkMGNlY2Q2MTUxZmRmOTNmNGYy
NDY2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCkBAIC00MywxNiArNDMsMTYgQEAgY2xhc3Mg
TG9nZ2VyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvbkNs
aWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+IHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZVNlc3Npb25DbGllbnQoKSA9IGRlZmF1
bHQ7CiAKICAgICB1c2luZyBLZXlTdGF0dXMgPSBDRE1LZXlTdGF0dXM7Ci0gICAgdXNpbmcgS2V5
U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgS2V5U3Rh
dHVzPj47CisgICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIEtleVN0YXR1cz4+OwogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdl
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHVzaW5nIFBsYXRmb3Jt
RGlzcGxheUlEID0gdWludDMyX3Q7CiAgICAgdmlydHVhbCBQbGF0Zm9ybURpc3BsYXlJRCBkaXNw
bGF5SUQoKSA9IDA7CkBAIC03OCwxMyArNzgsMTMgQEAgcHVibGljOgogICAgICAgICBTdWNjZWVk
ZWQsCiAgICAgfTsKIAotICAgIHVzaW5nIExpY2Vuc2VDYWxsYmFjayA9IENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVk
KT47Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExp
Y2Vuc2VDYWxsYmFjayYmKSA9IDA7CisgICAgdXNpbmcgTGljZW5zZUNhbGxiYWNrID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNj
ZXNzVmFsdWUgc3VjY2VlZGVkKT47CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExp
Y2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgPSAwOwogCiAgICAg
dXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0
dXNWZWN0b3I7Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6cGFpcjxNZXNzYWdlVHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5
cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgdXNpbmcgTGljZW5zZVVwZGF0
ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHNlc3Npb25XYXNDbG9zZWQs
IHN0ZDo6b3B0aW9uYWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxNZXNzYWdlPiYm
IG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vu
c2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrJiYpID0gMDsKIAogICAgIGVudW0gY2xhc3MgU2Vzc2lvbkxvYWRGYWlsdXJl
IDogdWludDhfdCB7CiAgICAgICAgIE5vbmUsCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIENsb3NlU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PjsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSA9IDA7CiAKLSAgICB1c2luZyBSZW1vdmVTZXNzaW9u
RGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChLZXlTdGF0dXNWZWN0b3ImJiwg
c3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiwgU3VjY2Vzc1ZhbHVlKT47CisgICAg
dXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
S2V5U3RhdHVzVmVjdG9yJiYsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiYmLCBTdWNjZXNzVmFsdWUpPjsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0
YUNhbGxiYWNrJiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNh
Z2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAppbmRleCBjYzZkYzdmMTQwY2Q2
N2QyYjdiODRmNmFiMmMyODQzMTZkZmRkY2NmLi41MmE2MTQ4YzgzY2Q1MzkzYzhmODc0ZWQ4NWFk
OGJmMjdlNWJlNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC03Myw4ICs3Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c1Nlc3Npb25zKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7Ci0g
ICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0
YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3Ry
aW5nJikgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKaW5kZXggZjIxOGY5NzkwNGZiYmE0
OWYxZWJkZjQ4ZTIwNWZlNzNkZmFmYjY0OC4uNGJhNzViZjAwZDlmNzEzYjVhZmJiYTc5MzQwMTk3
MTZjZDhmMDM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVByb3h5LmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIENETUluc3RhbmNlU2Vzc2lv
bjo6S2V5U3RhdHVzVmVjdG9yIEtleVN0b3JlOjpjb252ZXJ0VG9KU0tleVN0YXR1c1ZlY3Rvcigp
IGNvbnN0CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVz
VmVjdG9yOwogICAgIGtleVN0YXR1c1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bUtl
eXMoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBrZXkgOiBtX2tleXMpCi0gICAgICAgIGtleVN0
YXR1c1ZlY3Rvci51bmNoZWNrZWRBcHBlbmQoc3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBD
RE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1cz4geyBrZXktPmlkQXNTaGFyZWRCdWZmZXIoKSwg
a2V5LT5zdGF0dXMoKSB9KTsKKyAgICAgICAga2V5U3RhdHVzVmVjdG9yLnVuY2hlY2tlZEFwcGVu
ZChzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBDRE1JbnN0YW5jZVNlc3Np
b246OktleVN0YXR1cz4geyBrZXktPmlkQXNTaGFyZWRCdWZmZXIoKSwga2V5LT5zdGF0dXMoKSB9
KTsKICAgICByZXR1cm4ga2V5U3RhdHVzVmVjdG9yOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaAppbmRleCBhNTg0YjZjZDI2NmIw
OTgwOTAyNTRkN2RjYmRkYmY2MGQ5MzMxZmJiLi5lMWUwOThhMWQ1ZjVmZmM2NWMyYTQ4ZmE0MGFh
OTcyZmU4OWUxZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETVByb3h5LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgS2V5SGFuZGxlKHN0YXR1cywgV1RGTW92ZShrZXlJRCks
IFdURk1vdmUoa2V5SGFuZGxlVmFsdWUpKSk7CiAgICAgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+
IGlkQXNTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSht
X2lkLmRhdGEoKSwgbV9pZC5zaXplKCkpOyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGlkQXNTaGFyZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShtX2lkLmRhdGEoKSwgbV9pZC5zaXplKCkpOyB9CiAKICAgICBib29sIHRha2VWYWx1ZUlmRGlm
ZmVyZW50KEtleUhhbmRsZVZhbHVlVmFyaWFudCYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKaW5kZXggNjY3
MjZmNzRlNThkOGUxMjJjYmM5MGI4NjdiOWJmOTYxNzc4MDNkNC4uZmNhNmYyMzg4YTU2YTZhMWM3
MjQ3MGU1YTQ2ZmRkMjhmMDczNzUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC0zOCw3ICszOCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIENETVV0aWxpdGllcyB7CiAKLVJlZlB0
cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK1JlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gRmFpbCBvbiBsYXJnZSBidWZmZXJzIHdo
b3NlIHNpemUgZG9lc24ndCBmaXQgaW50byBhIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLgogICAg
IHNpemVfdCBzaXplID0gYnVmZmVyLnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmgKaW5kZXggNzRmNTE1YjBiZDJh
ODcxNjhlZWYyNGIxOGY5NWRlYWJlZTgyOGU2Yy4uZmNmNWJkZGE3YzU5N2QzYzNhYzM0OWVlMTc4
OWU0YWQ2ZTBjOTU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmgKQEAgLTM1LDExICszNSwxMSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBDRE1VdGlsaXRpZXMgewogCi1SZWZQdHI8SlNPTjo6T2Jq
ZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJik7CitSZWZQdHI8SlNPTjo6
T2JqZWN0PiBwYXJzZUpTT05PYmplY3QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwog
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggMzgyOThhMWZlYWI1ZGYz
YTczZDUzZTVmNzE5NTZhMmU4MzIwMGY3Yi4uMzFhOWZkZmEwMmQ2ZDAwY2EyNjE4MjUyZGVkOTM1
MzEzZGM1OGFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMTMwLDcgKzEz
MCw3IEBAIHN0YXRpYyBib29sIHBhcnNlTGljZW5zZVJlbGVhc2VBY2tub3dsZWRnZW1lbnRGb3Jt
YXQoY29uc3QgSlNPTjo6T2JqZWN0JiByb290KQogLy8gXTsKIAogLy8gVGhpcyBmdW5jdGlvbiBl
eHRyYWN0cyB0aGUgS2V5SWRzIGNvdW50IGFuZCB0aGUgbG9jYXRpb24gb2YgdGhlIGZpcnN0IEtl
eUlkIGluIGluaXREYXRhIGJ1ZmZlci4KLXN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2ln
bmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpCitzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0
cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBpbml0RGF0YSkKIHsKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBr
ZXlJZHNNYXAoMCwgMCk7CiAKQEAgLTE4OSwxNSArMTg5LDE1IEBAIHN0YXRpYyBzdGQ6OnBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRh
KGNvbnN0CiB9CiAKIC8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBpbml0RGF0YSBzaGFy
ZWRCdWZmZXIgaXMgYSB2YWxpZCBDRU5DIGluaXREYXRhLgotc3RhdGljIGJvb2wgaXNDZW5jSW5p
dERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBib29sIGlzQ2VuY0lu
aXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIHN0
ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCA9IGV4dHJhY3RLZXlpZHNMb2Nh
dGlvbkZyb21DZW5jSW5pdERhdGEoaW5pdERhdGEpOwogICAgIHJldHVybiAoKGtleUlkc01hcC5m
aXJzdCkgJiYgKGtleUlkc01hcC5zZWNvbmQpKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5p
dERhdGEpCitzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNG
cm9tQ2VuY0luaXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQog
ewotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGtleUlkcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAKICAgICBzdGQ6OnBhaXI8dW5zaWdu
ZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAgPSBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0lu
aXREYXRhKGluaXREYXRhKTsKICAgICB1bnNpZ25lZCBrZXlJZENvdW50ID0ga2V5SWRzTWFwLmZp
cnN0OwpAQCAtMjA1LDcgKzIwNSw3IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0
S2V5aWRzRnJvbUNlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXRECiAKICAgICAv
LyBDaGVjayBpZiBpbml0RGF0YSBpcyBhIHZhbGlkIENFTkMgaW5pdERhdGEuCiAgICAgaWYgKCFr
ZXlJZENvdW50IHx8ICFpbmRleCkKLSAgICAgICAgcmV0dXJuIGtleUlkczsKKyAgICAgICAgcmV0
dXJuIGtleUlkcy50YWtlKCk7CiAKICAgICBhdXRvIGNvbnRpZ3VvdXNJbml0RGF0YSA9IGluaXRE
YXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgYXV0byogZGF0YSA9IGNvbnRpZ3VvdXNJbml0RGF0
YS0+ZGF0YSgpOwpAQCAtMjI2LDE3ICsyMjYsMTcgQEAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdEQK
IAogICAgIG9iamVjdC0+c2V0QXJyYXkoImtpZHMiLCBXVEZNb3ZlKGtleUlkc0FycmF5KSk7CiAg
ICAgQ1N0cmluZyBqc29uRGF0YSA9IG9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpOwotICAg
IGtleUlkcy0+YXBwZW5kKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwotICAg
IHJldHVybiBrZXlJZHM7CisgICAga2V5SWRzLmFwcGVuZChqc29uRGF0YS5kYXRhKCksIGpzb25E
YXRhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAotc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZXh0
cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBrZXlJZHMgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCiAgICAgLy8gQ2hl
Y2sgaWYgaW5pdERhdGEgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIGlmIChpbml0RGF0
YS5pc0VtcHR5KCkgfHwgaW5pdERhdGEuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4ga2V5SWRzOworICAgICAgICByZXR1cm4ga2V5
SWRzLnRha2UoKTsKIAogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsK
ICAgICBhdXRvIGtleUlkc0FycmF5ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwpAQCAtMjUxLDgg
KzI1MSw4IEBAIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUlu
aXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhCiAKICAgICBvYmplY3QtPnNldEFycmF5
KCJraWRzIiwgV1RGTW92ZShrZXlJZHNBcnJheSkpOwogICAgIENTdHJpbmcganNvbkRhdGEgPSBv
YmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKTsKLSAgICBrZXlJZHMtPmFwcGVuZChqc29uRGF0
YS5kYXRhKCksIGpzb25EYXRhLmxlbmd0aCgpKTsKLSAgICByZXR1cm4ga2V5SWRzOworICAgIGtl
eUlkcy5hcHBlbmQoanNvbkRhdGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CisgICAgcmV0
dXJuIGtleUlkcy50YWtlKCk7CiB9CiAKIENETUZhY3RvcnlDbGVhcktleSYgQ0RNRmFjdG9yeUNs
ZWFyS2V5OjpzaW5nbGV0b24oKQpAQCAtMzkwLDcgKzM5MCw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUNs
ZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAorYm9v
bCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29u
c3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUgaW5pdERhdGEgYnVmZmVyIGFzIGFuIEpTT04gb2Jq
ZWN0IGluIGtleWlkcyBjYXNlLgogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShpbml0RGF0YVR5cGUsICJrZXlpZHMiKSAmJiBDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVj
dChpbml0RGF0YSkpCkBAIC00MDcsNyArNDA3LDcgQEAgYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6
OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdAog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUNs
ZWFyS2V5OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNv
bnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUNsZWFyS2V5Ojpz
YW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBj
b25zdAogewogICAgIC8vIFZhbGlkYXRlIHRoZSByZXNwb25zZSBidWZmZXIgYXMgYW4gSlNPTiBv
YmplY3QuCiAgICAgaWYgKCFDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdChyZXNwb25zZSkp
CkBAIC00MzMsNyArNDMzLDcgQEAgdm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5Ojppbml0aWFsaXpl
V2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXIKICAgICBjYWxsYmFj
ayhzdWNjZWVkZWQpOwogfQogCi12b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OnNldFNlcnZlckNl
cnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNr
KQordm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAg
ICAgLy8gUmVqZWN0IHNldHRpbmcgYW55IHNlcnZlciBjZXJ0aWZpY2F0ZS4KICAgICBjYWxsYmFj
ayhGYWlsZWQpOwpAQCAtNDU1LDcgKzQ1NSw3IEBAIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+
IENETUluc3RhbmNlQ2xlYXJLZXk6OmNyZWF0ZVNlc3Npb24oKQogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkoKnRoaXMpKTsKIH0KIAotdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwg
TGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFy
S2V5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNh
bGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgc3RhdGljIHVpbnQzMl90IHNfc2Vzc2lvbklkVmFs
dWUgPSAwOwogICAgICsrc19zZXNzaW9uSWRWYWx1ZTsKQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwg
Y29uc3QgQXRvbVN0cmluZyYgaQogICAgICAgICB9KTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGlj
ZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxs
YmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRl
TGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKICNpZiBMT0dfRElTQUJMRUQKICAgICAvLyBXZSBvbmx5IHVzZSB0aGUgc2VzaW9u
IElEIGZvciBkZWJ1ZyBsb2dnaW5nLiBUaGUgdmVyYm9zZSBwcmVwcm9jZXNzb3IgY2hlY2tzIGFy
ZSBiZWNhdXNlCkBAIC01NjgsNyArNTY4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVh
cktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKICAg
ICBBU1NFUlQoc2Vzc2lvbklkID09IG1fc2Vzc2lvbklEKTsKIAogICAgIGF1dG8gZGlzcGF0Y2hD
YWxsYmFjayA9Ci0gICAgICAgIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCAmY2FsbGJh
Y2tdKEtleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c1ZlY3Rvciwgc3RkOjpvcHRpb25hbDxSZWY8
U2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VzcykgeworICAgICAg
ICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgJmNhbGxiYWNrXShLZXlTdGF0dXNWZWN0
b3ImJiBrZXlTdGF0dXNWZWN0b3IsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZXNzKSB7CiAgICAgICAgICAgICBj
YWxsT25NYWluVGhyZWFkKAogICAgICAgICAgICAgICAgIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
d2Vha1RoaXMgfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwga2V5U3RhdHVzVmVjdG9y
ID0gV1RGTW92ZShrZXlTdGF0dXNWZWN0b3IpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwg
c3VjY2Vzc10oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykK
QEAgLTU4MSw3ICs1ODEsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZW1v
dmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZQogICAgIC8vIENvbnN0
cnVjdCB0aGUgS2V5U3RhdHVzVmVjdG9yIG9iamVjdCwgcmVwcmVzZW50aW5nIHJlbGVhc2VkIGtl
eXMsIGFuZCB0aGUgbWVzc2FnZSBpbiB0aGUKICAgICAvLyAnbGljZW5zZSByZWxlYXNlJyBmb3Jt
YXQuCiAgICAgS2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c1ZlY3RvciA9IG1fa2V5U3RvcmUuYWxs
S2V5c0FzKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzOjpSZWxlYXNlZCk7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gbWVzc2FnZTsKICAgICB7CiAgICAgICAgIC8vIENvbnN0cnVjdCBKU09OIHRoYXQgcmVw
cmVzZW50cyB0aGUgJ2xpY2Vuc2UgcmVsZWFzZScgZm9ybWF0LCBjcmVhdGluZyBhICdraWRzJyBh
cnJheQogICAgICAgICAvLyBvZiBiYXNlNjRVUkwtZW5jb2RlZCBrZXkgSURzIGZvciBhbGwga2V5
cyB0aGF0IHdlcmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc2Vzc2lvbi4KQEAgLTU5NSwxNCArNTk1
LDE0IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlbW92ZVNlc3Npb25EYXRh
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlCiAgICAgICAgICAgICByb290T2JqZWN0LT5z
ZXRBcnJheSgia2lkcyIsIFdURk1vdmUoYXJyYXkpKTsKICAgICAgICAgfQogCi0gICAgICAgIC8v
IENvcHkgdGhlIEpTT04gZGF0YSBpbnRvIGEgU2hhcmVkQnVmZmVyIG9iamVjdC4KKyAgICAgICAg
Ly8gQ29weSB0aGUgSlNPTiBkYXRhIGludG8gYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIG9iamVj
dC4KICAgICAgICAgU3RyaW5nIG1lc3NhZ2VTdHJpbmcgPSByb290T2JqZWN0LT50b0pTT05TdHJp
bmcoKTsKICAgICAgICAgQ1N0cmluZyBtZXNzYWdlQ1N0cmluZyA9IG1lc3NhZ2VTdHJpbmcudXRm
OCgpOwogICAgICAgICBtZXNzYWdlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUobWVzc2FnZUNTdHJp
bmcuZGF0YSgpLCBtZXNzYWdlQ1N0cmluZy5sZW5ndGgoKSk7CiAgICAgfQogCiAgICAgbV9rZXlT
dG9yZS51bnJlZkFsbEtleXMoKTsKLSAgICBkaXNwYXRjaENhbGxiYWNrKFdURk1vdmUoa2V5U3Rh
dHVzVmVjdG9yKSwgUmVmPFNoYXJlZEJ1ZmZlcj4oKm1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1
Y2NlZWRlZCk7CisgICAgZGlzcGF0Y2hDYWxsYmFjayhXVEZNb3ZlKGtleVN0YXR1c1ZlY3Rvciks
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPigqbWVzc2FnZSksIFN1Y2Nlc3NWYWx1ZTo6U3Vj
Y2VlZGVkKTsKIH0KIAogdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6c3RvcmVSZWNv
cmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAppbmRl
eCA5YzA3NDdkYzFiZDhlNjdmM2JhODY0ZDliODExMzM3NjI1YzhhNjc5Li45ZTI3ZmU5MTJjNGRh
MDY3ZmIyNmNhZmJjN2Y2YTY1MWRhNDc1MjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgK
QEAgLTg2LDggKzg2LDggQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBm
aW5hbDsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7
CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25z
dCBmaW5hbDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZp
bmFsOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmlu
YWw7CiB9OwogCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICAvLyBDRE1JbnN0YW5jZQog
ICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkNsZWFyS2V5OyB9CiAgICAgdm9pZCBpbml0aWFs
aXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFs
bG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3ND
YWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFy
ZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJh
Y2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYp
IGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CiAgICAg
UmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAtMTA5
LDggKzEwOSw4IEBAIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5IGZpbmFsIDogcHVi
bGljIENETUluc3RhbmNlU2Vzc2lvblByb3h5IHsKIHB1YmxpYzoKICAgICBDRE1JbnN0YW5jZVNl
c3Npb25DbGVhcktleShDRE1JbnN0YW5jZUNsZWFyS2V5JiBwYXJlbnQpCiAgICAgICAgIDogQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHkocGFyZW50KSB7IH0KLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7
CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFs
OwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNl
c3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAg
dm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3Zl
U2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCmluZGV4IDdhYTk0YjRi
NGJjMmNiZjkyMmFhZGE1ODg3NTczZDc1ZDdjMGJjNjcuLjdiZjAwODMyYTQwMmVlYWQ1NzIzY2E0
MjhlOWFmYjdjYzQxYTBjNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcApAQCAtMTM5LDkgKzEzOSw5IEBAIHZv
aWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5kQXJyYXkoKQogICAgIG1fZW5jb2RlciA8PCBUeXBl
OjpFbmRBcnJheTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5j
b2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVk
RW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKIHsKLSAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZl
clNpemUoKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZm
ZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmgKaW5kZXggNTgwNTgzYjgzODEwZWRlNWQyYzljNjVhODM5M2IzMjZkODdiMjc0
Ny4uZWNmNGUwOGM5Yjk5MWFkZTI3M2JkNDRjNjBiYjE1ZmUwMTYzNWIxNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgK
QEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBLZXllZEVuY29k
ZXJHZW5lcmljIGZpbmFsIDogcHVibGljIEtleWVkRW5jb2RlciB7CiBwdWJsaWM6CkBAIC01Nyw3
ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOworICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGVuY29k
ZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBvdmVycmlk
ZTsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJH
bGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5j
cHAKaW5kZXggZTZkNzhkNTI4M2VmOGU1M2M3YmRiMGJiODA0ZTllMjdlMTBhMTc5My4uNzBkMjRj
MTE5M2Y4ZTVjNzBkMWQzOTg3YzVlMDA5OGNiNmMwMGJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCkBAIC0xMzIsMTIgKzEzMiwx
MiBAQCB2b2lkIEtleWVkRW5jb2RlckdsaWI6OmVuZEFycmF5KCkKICAgICBtX2FycmF5U3RhY2su
cmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRF
bmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRF
bmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGdfYXNzZXJ0KG1fdmFyaWFudEJ1
aWxkZXJTdGFjay5sYXN0KCkgPT0gJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R1Zh
cmlhbnQ+IHZhcmlhbnQgPSBnX3ZhcmlhbnRfYnVpbGRlcl9lbmQoJm1fdmFyaWFudEJ1aWxkZXIp
OwogICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRhID0gZ192YXJpYW50X2dldF9kYXRhX2FzX2J5dGVz
KHZhcmlhbnQuZ2V0KCkpOwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0
YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ19ieXRlc19nZXRfc2l6
ZShkYXRhLmdldCgpKSkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBu
dWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0
KCkpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKaW5kZXggY2UxMzY0OTZjNGUxM2VhYzE0
OWVhNjE4OTVjNTQxNDBmZmQ1OTZmNy4uZTU2NDJiY2Y2NzBjZTI1OTlmYzA0ZGY3MjllMmI0YzFm
ODIxMWYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVu
Y29kZXJHbGliLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29k
ZXJHbGliLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIH5LZXllZEVuY29kZXJHbGli
KCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29u
c3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQg
ZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAppbmRleCA4N2Q3ODRi
YzY2NTE4ZmFiMjZiMzQ2NjNhNDY0NDAwOTNkZTI3MThiLi41MDEyNTlkYjg0ODQ3ODkxZmE3ZjY3
ZWFmYzA4YTgzMGUwMTNlZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAgLTI2LDI0ICsyNiwyNCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdCeXRlcyogYnl0ZXMpCitG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEdCeXRlcyogYnl0
ZXMpCiB7CiAgICAgQVNTRVJUKGJ5dGVzKTsKICAgICBtX3NpemUgPSBnX2J5dGVzX2dldF9zaXpl
KGJ5dGVzKTsKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUo
R1JlZlB0cjxHQnl0ZXM+KGJ5dGVzKSkgfSk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKGJ5dGVzKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihieXRlcykpOwogfQogCi1HUmVmUHRy
PEdCeXRlcz4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKK0dS
ZWZQdHI8R0J5dGVzPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUdCeXRlcygpIGNvbnN0CiB7CiAgICAg
cmVmKCk7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVmKGdfYnl0ZXNfbmV3
X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBbXShncG9pbnRlciBkYXRhKSB7Ci0gICAg
ICAgIHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsK
LSAgICB9LCBjb25zdF9jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPih0aGlzKSkpOworICAg
ICAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICB9LCBj
b25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CiAgICAgcmV0dXJuIGJ5dGVzOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDEyNTg2MmU3
MmE5ZjlkODY5NmNlMTZjYWNmZjZiZjcyMDdiNDVjZTQuLjRlOTQ5ZGZhYjk3NjVhMmEwN2M0ODc4
YWJlZTEwM2ZiYWYyMWY1NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuY3BwCkBAIC02Myw3ICs2Myw3IEBAIFJlZjxGb250PiBGb250OjpjcmVhdGUoY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBPcmlnaW4gb3JpZ2luLCBJbnRlCiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRm9udChwbGF0Zm9ybURhdGEsIG9yaWdpbiwgaW50ZXJzdGl0aWFs
LCB2aXNpYmlsaXR5LCBvcmllbnRhdGlvbkZhbGxiYWNrLCBpZGVudGlmaWVyKSk7CiB9CiAKLVJl
ZjxGb250PiBGb250OjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZm9udEZh
Y2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0
aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYykKK1JlZjxGb250PiBGb250OjpjcmVhdGUoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0
IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljKQogewog
ICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0b21Gb250RGF0YSA9IENhY2hlZEZvbnQ6
OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0YS5nZXQoKSwgeyB9LCB3cmFwcGluZyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggNGM1YzhhMzk2MzNh
MDY0Nzg5OGI1MmEzOTQ1MjVmYjFhZmIxMmU4YS4uODJlYmE3M2JhYzRjNzZmZWEwYmI2MGViYTQ0
MzY4MmQyMmM3ZmUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApA
QCAtNTksNyArNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGb250Q2FjaGU7CiBj
bGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBHbHlwaFBhZ2U7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgR2x5cGhEYXRhOwog
CkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFZpc2liaWxpdHkgOiBi
b29sIHsgVmlzaWJsZSwgSW52aXNpYmxlIH07CiAgICAgZW51bSBjbGFzcyBPcmllbnRhdGlvbkZh
bGxiYWNrIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PEZvbnQ+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luID0gT3JpZ2luOjpM
b2NhbCwgSW50ZXJzdGl0aWFsID0gSW50ZXJzdGl0aWFsOjpObywgVmlzaWJpbGl0eSA9IFZpc2li
aWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNr
OjpObywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpu
dWxsb3B0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxv
YXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5
bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljKTsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IH5Gb250KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRQbGF0Zm9ybURhdGEuaAppbmRleCBlMjM4NGI5ZWU0ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJl
OTUzMDkzLi5mYmJjY2M0MzY4NDQ3NDkwODNjZTg5MWYzNjNmNmNjNDBmMjk3NDUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5o
CkBAIC0yMjMsMTMgKzIyMywxMyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkg
Y29uc3Q7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5
cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKIAogICAg
IFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgc3RydWN0IENyZWF0aW9uRGF0YSB7
Ci0gICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmb250RmFjZURhdGE7CisgICAg
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgU3RyaW5nIGl0ZW1J
bkNvbGxlY3Rpb247CiAjaWYgUExBVEZPUk0oV0lOKQogICAgICAgICBSZWY8Rm9udE1lbW9yeVJl
c291cmNlPiBtX2ZvbnRSZXNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAKaW5kZXggNjc1ZTI0YjQwYWM3YWFkZTc0MDg2ZjI0
MmVhZDAxNTIyMWMwMjRmYy4uMmNmNDQ4YmVhMmZhNmFlNGQ0N2Y5NjQwMDJiM2E5MDZjMDEyOTA2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxp
dGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxp
dGllcy5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgU3RyaW5nIGNyZWF0ZUFWQ0NvZGVjUGFyYW1ldGVy
c1N0cmluZyhjb25zdCBBVkNQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgICAgICAsIGhleChw
YXJhbWV0ZXJzLmxldmVsSURDLCAyKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8QVZDUGFyYW1ldGVy
cz4gcGFyc2VBVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNlQVZD
RGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgLy8gSVNPL0lFQyAxNDQ5Ni0xMDoyMDE0CiAgICAgLy8gNy4zLjIuMS4xIFNlcXVlbmNl
IHBhcmFtZXRlciBzZXQgZGF0YSBzeW50YXgKQEAgLTI1NSw3ICsyNTUsNyBAQCBTdHJpbmcgY3Jl
YXRlSEVWQ0NvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25zdCBIRVZDUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKICAgICAgICAgLCBjb21wYXRpYmlsaXR5RmxhZ3MudG9TdHJpbmcoKSk7CiB9CiAKLXN0
ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0RlY29kZXJDb25maWd1cmF0aW9u
UmVjb3JkKGNvbnN0IEZvdXJDQyYgY29kZWNDb2RlLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNv
ZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBGb3VyQ0MmIGNvZGVjQ29kZSwgY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSVNPL0lFQyAxNDQ5Ni0xNToyMDE0CiAgICAg
Ly8gOC4zLjMuMSBIRVZDIGRlY29kZXIgY29uZmlndXJhdGlvbiByZWNvcmQKQEAgLTQzNiw3ICs0
MzYsNyBAQCBzdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlDb2RlY1BhcmFt
ZXRlcnMoU3RyaW5nVmlldyBjb2RlY1ZpZXcpCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CiAK
LXN0ZDo6b3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0
aW9uUmVjb3JkKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0
aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVjb3Jk
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIFRoZSBmb3JtYXQgb2YgdGhl
IERvVmkgQ29uZmlndXJhdGlvbiBSZWNvcmQgaXMgY29udGFpbmVkIGluICJEb2xieSBWaXNpb24g
U3RyZWFtcyBXaXRoaW4KICAgICAvLyB0aGUgSVNPIEJhc2UgTWVkaWEgRmlsZSBGb3JtYXQsIFZl
cnNpb24gMi4wIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SEVWQ1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0
aWxpdGllcy5oCmluZGV4IGVkZmVjYjI2ZDg5NDY3YTIzZDFmNTcxY2JjNWU5MWIyZmEzNDc4NWMu
LjNmNTAxMDM0MTRmYjVlY2FkMmI4MmE3YWY5MWU0YTNjYTI0NTY2M2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmgKQEAgLTMxLDcgKzMx
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0IEZvdXJDQzsKIAogc3RydWN0IEFWQ1Bh
cmFtZXRlcnMgewpAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgQVZDUGFyYW1ldGVycyB7CiB9Owog
CiBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNlQVZDQ29k
ZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcpOwotV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxB
VkNQYXJhbWV0ZXJzPiBwYXJzZUFWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8QVZD
UGFyYW1ldGVycz4gcGFyc2VBVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBTaGFy
ZWRCdWZmZXImKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVBVkNDb2RlY1BhcmFtZXRl
cnNTdHJpbmcoY29uc3QgQVZDUGFyYW1ldGVycyYpOwogCiBzdHJ1Y3QgSEVWQ1BhcmFtZXRlcnMg
ewpAQCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3QgSEVWQ1BhcmFtZXRlcnMgewogfTsKIAogV0VCQ09S
RV9FWFBPUlQgc3RkOjpvcHRpb25hbDxIRVZDUGFyYW1ldGVycz4gcGFyc2VIRVZDQ29kZWNQYXJh
bWV0ZXJzKFN0cmluZ1ZpZXcpOwotV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxIRVZDUGFy
YW1ldGVycz4gcGFyc2VIRVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgRm91ckND
JiwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpv
cHRpb25hbDxIRVZDUGFyYW1ldGVycz4gcGFyc2VIRVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNv
cmQoY29uc3QgRm91ckNDJiwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgY3JlYXRlSEVWQ0NvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25zdCBIRVZDUGFyYW1ldGVy
cyYpOwogCiBzdHJ1Y3QgRG9WaVBhcmFtZXRlcnMgewpAQCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3Qg
RG9WaVBhcmFtZXRlcnMgewogfTsKIAogV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxEb1Zp
UGFyYW1ldGVycz4gcGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcpOwotV0VCQ09S
RV9FWFBPUlQgc3RkOjpvcHRpb25hbDxEb1ZpUGFyYW1ldGVycz4gcGFyc2VEb1ZpRGVjb2RlckNv
bmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOworV0VCQ09S
RV9FWFBPUlQgc3RkOjpvcHRpb25hbDxEb1ZpUGFyYW1ldGVycz4gcGFyc2VEb1ZpRGVjb2RlckNv
bmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiBXRUJDT1JFX0VYUE9SVCBT
dHJpbmcgY3JlYXRlRG9WaUNvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25zdCBEb1ZpUGFyYW1ldGVy
cyYpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5k
ZXggNGE4NTNlYjY0OTUzZDRhZTQ4MzRmODdjNTQ4N2FjZDM2NGM1N2Q4MS4uZTMyYTM2YzYwNzYx
OTIxNjhjNmEzNzkzMThmNzhhZTE3ODljNDgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgSW1hZ2U6OmlzUG9z
dFNjcmlwdFJlc291cmNlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgdXJsKQog
fQogCiAKLUVuY29kZWREYXRhU3RhdHVzIEltYWdlOjpzZXREYXRhKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCitFbmNvZGVkRGF0YVN0YXR1cyBJbWFn
ZTo6c2V0RGF0YShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKIHsKICAgICBtX2VuY29kZWRJbWFnZURhdGEgPSBXVEZNb3ZlKGRhdGEp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCA2YTA4MTY5
NTdhYTkzYzQxMWE1NmNkNGMyYmMyMGRkNmQ5MDQ0ZGVjLi42NTVkZmU3M2NmZjZhZDFkMDRmNDhi
YzIwMTllYmI4MDQxN2Q2MTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKQEAgLTcwLDcgKzcwLDcgQEAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgRmxv
YXRQb2ludDsKIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgTGVu
Z3RoOwogCiAvLyBUaGlzIGNsYXNzIGdldHMgbm90aWZpZWQgd2hlbiBhbiBpbWFnZSBjcmVhdGVz
IG9yIGRlc3Ryb3lzIGRlY29kZWQgZnJhbWVzIGFuZCB3aGVuIGl0IGFkdmFuY2VzIGFuaW1hdGlv
biBmcmFtZXMuCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgc3RkOjpv
cHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsg
fQogICAgIHZpcnR1YWwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQg
RW5jb2RlZERhdGFTdGF0dXMgc2V0RGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFbmNvZGVkRGF0YVN0YXR1
cyBzZXREYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKTsKICAgICB2aXJ0dWFsIEVuY29kZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2Vk
KGJvb2wgLyphbGxEYXRhUmVjZWl2ZWQqLykgeyByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OlVu
a25vd247IH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIHV0aSgpIGNvbnN0IHsgcmV0dXJuIFN0cmlu
ZygpOyB9IC8vIG51bGwgc3RyaW5nIGlmIHVua25vd24KQEAgLTEzMyw4ICsxMzMsOCBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveURlY29kZWREYXRhKGJvb2wgZGVzdHJveUFs
bCA9IHRydWUpID0gMDsKIAotICAgIFNoYXJlZEJ1ZmZlciogZGF0YSgpIHsgcmV0dXJuIG1fZW5j
b2RlZEltYWdlRGF0YS5nZXQoKTsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQorICAgIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGRhdGEoKSB7IHJldHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0K
KyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBjb2xvclNwYWNlKCk7CiAKQEAgLTIwOSw3ICsyMDksNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdCB7IHJldHVybiBD
b2xvcigpOyB9CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVk
SW1hZ2VEYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2VuY29kZWRJ
bWFnZURhdGE7CiAgICAgSW1hZ2VPYnNlcnZlciogbV9pbWFnZU9ic2VydmVyOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxUaW1lcj4gbV9hbmltYXRpb25TdGFydFRpbWVyOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4
IDRkZGI2ZGY4M2VjYjhiOWI3OTU3ZjQ2NjRlMTg0ZjAwODFlODEwMTEuLmRlMzNmMWFmNDEyZGMw
OGIyYjk2MWExOTQ5NDVjOWNjOTBhYTY2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaApAQCAtNjYsNyArNjYsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgYnVmZmVyLmdyb3co
YnVmZmVyU2l6ZSk7Ci0gICAgICAgIG1fcGl4ZWxzID0gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1fcGl4ZWxzID0gRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAg
ICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0
PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgICAgIG1fc2l6ZSA9IHNpemU7CiAg
ICAgICAgIG1fZnJhbWVSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBtX3NpemUpOwpAQCAtMjA2
LDcgKzIwNiw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBBU1NFUlQoIW1fc2l6ZS5pc0Vt
cHR5KCkgJiYgIWlzT3ZlclNpemUobV9zaXplKSk7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBi
dWZmZXIgeyBvdGhlci5tX3BpeGVscy0+ZGF0YSgpLCBvdGhlci5tX3BpeGVscy0+c2l6ZSgpIH07
Ci0gICAgICAgIG1fcGl4ZWxzID0gU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdU
Rk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1fcGl4ZWxzID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX3BpeGVs
c1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPiht
X3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgfQogCkBAIC0yMzMsNyArMjMzLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIFBhY2tlZENvbG9yOjpBUkdCIHsgcmVzdWx0IH0udmFsdWU7CiAgICAg
fQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fcGl4ZWxzOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9waXhlbHM7CiAg
ICAgdWludDMyX3QqIG1fcGl4ZWxzUHRyIHsgbnVsbHB0ciB9OwogICAgIEludFNpemUgbV9zaXpl
OwogICAgIEludFJlY3QgbV9mcmFtZVJlY3Q7IC8vIFRoaXMgd2lsbCBhbHdheXMganVzdCBiZSB0
aGUgZW50aXJlIGJ1ZmZlciBleGNlcHQgZm9yIEdJRiBhbmQgUE5HIGZyYW1lcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggMDg2
OWU5OWEwMDg4NmY3Y2QxMjE4NmZlMzE2MWRlMDQ3ZmE1MTM2MS4uN2M1NDk0N2Y0ZDgxNDA4NTU5
Y2M0NWM0YWM0OWExOWI5ZmM4NmY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgSW1hZ2VE
ZWNvZGVyOjpjbGVhckZhY3RvcmllcygpCiB9CiAjZW5kaWYKIAotUmVmUHRyPEltYWdlRGVjb2Rl
cj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8SW1hZ2VEZWNvZGVyPiBJ
bWFnZURlY29kZXI6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgVU5VU0VEX1BB
UkFNKG1pbWVUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZURlY29kZXIuaAppbmRleCBhMWEwOGFkYzE3NWQ0NGJhYTQ0MmU0NGE5NGFhOTY3YTA0ZjVm
NjA3Li42YThmZmNiNjBmYzExNTZlYjg0ODc2ZGVmYjA3Y2JjMGIxMTk4NDk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaApAQCAtMzcsMTIg
KzM3LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSW1hZ2VEZWNvZGVyIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlRGVjb2Rlcj4gewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBj
cmVhdGUoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVj
b2Rlcj4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1
YWwgfkltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAogICAgIGVudW0gY2xhc3MgTWVkaWFUeXBl
IHsKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAg
ICB1c2luZyBTdXBwb3J0c01lZGlhVHlwZUZ1bmMgPSBGdW5jdGlvbjxib29sKE1lZGlhVHlwZSk+
OwogICAgIHVzaW5nIENhbkRlY29kZVR5cGVGdW5jID0gRnVuY3Rpb248Ym9vbChjb25zdCBTdHJp
bmcmKT47Ci0gICAgdXNpbmcgQ3JlYXRlSW1hZ2VEZWNvZGVyRnVuYyA9IEZ1bmN0aW9uPFJlZlB0
cjxJbWFnZURlY29kZXI+KFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIEFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik+OworICAgIHVzaW5nIENyZWF0ZUltYWdlRGVj
b2RlckZ1bmMgPSBGdW5jdGlvbjxSZWZQdHI8SW1hZ2VEZWNvZGVyPihGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKT47CiAKICAgICBzdHJ1Y3QgSW1hZ2VEZWNvZGVyRmFjdG9yeSB7CiAgICAgICAgIFN1
cHBvcnRzTWVkaWFUeXBlRnVuYyBzdXBwb3J0c01lZGlhVHlwZTsKQEAgLTEyOSw3ICsxMjksNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRFeHBlY3RlZENvbnRl
bnRTaXplKGxvbmcgbG9uZykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVm
ZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0
YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpID0gMDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IGQ4MWM0ODAx
OTI4NDZkZDdlMzIxYzJkZmJmYmYxZTBjMjBkYWE2NzEuLjMwNzc0MzMxNWE0MWVjYTFjOWIyYmM3
NzNkMDc5ZWU1ZDQzYmFmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgSW1hZ2VTb3VyY2U6On5JbWFn
ZVNvdXJjZSgpCiAgICAgQVNTRVJUKCZtX3J1bkxvb3AgPT0gJlJ1bkxvb3A6OmN1cnJlbnQoKSk7
CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVm
ZmVyKiBkYXRhKQorYm9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmICghZGF0YSB8fCBpc0RlY29kZXJB
dmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC05Niw3ICs5Niw3IEBAIGJvb2wg
SW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRhKQog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1
ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlU291cmNlOjpzZXRE
YXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ewogICAgIGlmICghZGF0YSB8fCAhZW5zdXJlRGVjb2RlckF2YWlsYWJsZShkYXRhKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTA0LDEzICsxMDQsMTMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0
YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIG1fZGVjb2Rl
ci0+c2V0RGF0YSgqZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0KIAotdm9pZCBJbWFnZVNvdXJj
ZTo6cmVzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0
RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIG1fZGVjb2RlciA9IG51
bGxwdHI7CiAgICAgc2V0RGF0YShkYXRhLCBpc0FsbERhdGFSZWNlaXZlZCgpKTsKIH0KIAotRW5j
b2RlZERhdGFTdGF0dXMgSW1hZ2VTb3VyY2U6OmRhdGFDaGFuZ2VkKFNoYXJlZEJ1ZmZlciogZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCitFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZVNvdXJjZTo6
ZGF0YUNoYW5nZWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiB7CiAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGNsZWFy
TWV0YWRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5oCmluZGV4IDhhZjUwODBhMDBhOTkxNjA4MGYxZjBiMjc3MDczYzJhODUzNDUyNTguLjgx
NGYwZTEyZWJhYTQ4Zjg2YWNiNTIxOTczYzMxZDVkMzgyZjZmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtMzksNyArMzksNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCaXRtYXBJbWFnZTsKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dDsKIGNsYXNzIEltYWdlRGVjb2RlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEltYWdlU291cmNlIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPEltYWdlU291cmNlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEltYWdl
U291cmNlPiB7CiAgICAgZnJpZW5kIGNsYXNzIEJpdG1hcEltYWdlOwpAQCAtNTYsOSArNTYsOSBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlU291cmNlKFdURk1v
dmUobmF0aXZlSW1hZ2UpKSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZl
ciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIHZvaWQgcmVzZXREYXRhKFNoYXJl
ZEJ1ZmZlciogZGF0YSk7Ci0gICAgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQoU2hhcmVk
QnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgdm9pZCBzZXREYXRhKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2
b2lkIHJlc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBFbmNvZGVk
RGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCk7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpOwogCiAgICAg
dW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZWRTaXplOyB9CkBA
IC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAg
IFQgZmlyc3RGcmFtZU1ldGFkYXRhQ2FjaGVJZk5lZWRlZChUJiBjYWNoZWRWYWx1ZSwgTWV0YWRh
dGFUeXBlLCBUIChJbWFnZUZyYW1lOjoqZnVuY3RvcikoKSBjb25zdCwgSW1hZ2VGcmFtZTo6Q2Fj
aGluZywgY29uc3Qgc3RkOjpvcHRpb25hbDxTdWJzYW1wbGluZ0xldmVsPiYgPSB7IH0pOwogCi0g
ICAgYm9vbCBlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKFNoYXJlZEJ1ZmZlciogZGF0YSk7CisgICAg
Ym9vbCBlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEp
OwogICAgIGJvb2wgaXNEZWNvZGVyQXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVy
OyB9CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoc2l6ZV90IGZyYW1lQ291bnQsIHNpemVf
dCBleGNsdWRlRnJhbWUpOwogICAgIHZvaWQgZGVjb2RlZFNpemVDaGFuZ2VkKGxvbmcgbG9uZyBk
ZWNvZGVkU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAK
aW5kZXggNWFkZTdlZjY5ZTI5YTc3ZjJiODQwOTI5ZTY0YmUwYzQ0ZTUxNjQzOS4uNTc3YmQ1MDhh
NWM0MDlmNGJlOWU0Y2YyMDJiODFlNjFlNDViNDRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01vZGVsLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK1JlZjxNb2RlbD4gTW9k
ZWw6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJM
IHVybCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2RlbChXVEZNb3ZlKGRhdGEpLCBX
VEZNb3ZlKG1pbWVUeXBlKSwgV1RGTW92ZSh1cmwpKSk7CiB9CiAKLU1vZGVsOjpNb2RlbChSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwp
CitNb2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBTdHJpbmcgbWltZVR5cGUs
IFVSTCB1cmwpCiAgICAgOiBtX2RhdGEoV1RGTW92ZShkYXRhKSkKICAgICAsIG1fbWltZVR5cGUo
V1RGTW92ZShtaW1lVHlwZSkpCiAgICAgLCBtX3VybChXVEZNb3ZlKHVybCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAppbmRleCA5MTU2MGFlODhmYTY0YzJhMGMxMDAx
NDE0ZjMyNDFjZTAwNTZhMWY0Li5lNmJkZTE2NmY5NDRjZGU3ZGIzMjhjMjk3NmVjNjgyYWRiNmQx
MDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKQEAgLTM4LDEw
ICszOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vZGVsIGZpbmFsIDogcHVi
bGljIFJlZkNvdW50ZWQ8TW9kZWw+IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmlu
ZywgVVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5Nb2Rl
bCgpOwogCi0gICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGE7IH0KKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhOyB9CiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWltZVR5cGU7IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJs
OyB9CiAgICAgCkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRl
OgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJp
bmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5n
LCBVUkwpOwogCi0gICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgVVJM
IG1fdXJsOwogfTsKQEAgLTkzLDcgKzkzLDcgQEAgUmVmUHRyPE1vZGVsPiBNb2RlbDo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOwor
ICAgIHJldHVybiBNb2RlbDo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdURk1vdmUoKnVybCkpOwogfQogCiBXRUJDT1JFX0VY
UE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3Qg
TW9kZWwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bs
YXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXggNzQ1OWM1ODU4ZDI0ODdl
ZjJjNWZkMzcxNzM5ODZiMzM3MzRlYzI4YS4uODg2OTFkYzI1NmQ2ZGQ2YzQ1ZjQ2ZTAxNTQ5Njc0
MjQ1YWEzNTMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKQEAgLTUxLDggKzUxLDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVh
bCB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9u
ZywgdW5zaWduZWQgbG9uZyBsb25nKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1v
dmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgdXNlcyBTaGFyZWRCdWZmZXIuCisgICAg
dmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CisgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBDYWNoZWRSYXdSZXNv
dXJjZUNsaWVudCB1c2VzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAgICAgdmlydHVhbCB2b2lk
IGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHBsYXRmb3JtLCBjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IGRhdGFSZWNlaXZlZChwbGF0Zm9ybSwgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29u
dHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJy
b3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCmluZGV4IDU0OTlm
MzdhN2YzNjQ2YmQ1ZjM5NWE0OGIwOWQ5NDExZDRjOWI2NjQuLmQzZTFiNTgwNGU4NWE5OTExY2Yy
MGZjZWQzNGJmMjU1YTMxNDQzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC0xMzE4LDcgKzEzMTgs
NyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVTYW1wbGUoUmVmPE1lZGlh
U2FtcGxlPiYmIG9yaWdpbmFsU2FtcGxlKQogICAgIHVwZGF0ZUhpZ2hlc3RQcmVzZW50YXRpb25U
aW1lc3RhbXAoKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZChS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgYXBwZW5kKGJ1ZmZl
ci0+ZXh0cmFjdERhdGEoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKaW5kZXggZWY4NmE0NzM2OTM3MWM4M2U4
ODNiMjliYmI2YjlhYjk2ZWNhNWYxZC4uNmI3ZDk1ZTUyYjlkZjBjODFhZjNiZTFkNmQ5ZjNjOGVk
Mzk1NDE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291
cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtNDksNyArNDksNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBUaW1lUmFuZ2VzOwogCiBlbnVtIGNsYXNzIFNvdXJjZUJ1ZmZlckFwcGVuZE1v
ZGUgOiB1aW50OF90IHsKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclByaXZhdGUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRBY3RpdmUoYm9vbCkgPSAwOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBhcHBl
bmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IGFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdmlydHVhbCB2b2lk
IGFib3J0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCmluZGV4
IGEwZTczYjNmM2ViY2IzYzc4MGZlMzUxZTlkNmE4MGI2ZmI5MDU1YjQuLmIzN2ViZmM1NjIwNDhm
ZTZkNzk0MWQyZTVjYzFiY2ExZGMxNTcxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3Rh
dGljIGNvbnN0IHVpbnQzMl90IGtXb2ZmMlNpZ25hdHVyZSA9IDB4Nzc0ZjQ2MzI7IC8vICJ3T0Yy
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHJlYWRVSW50MzIoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVl
KQorc3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBv
ZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0
IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZmZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6
ZW9mKHZhbHVlKSkKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIGJvb2wgcmVhZFVJbnQzMihDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgcmVhZFVJbnQxNihDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCitzdGF0
aWMgYm9vbCByZWFkVUludDE2KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwg
dWludDE2X3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVm
ZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFs
dWUpKQpAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVJbnQxNihWZWN0b3I8dWlu
dDhfdD4mIHZlY3RvciwgdWludDE2X3QgdmFsdWUpCiAKIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3
b2ZmU2lnbmF0dXJlID0gMHg3NzRmNDY0NjsgLyogJ3dPRkYnICovCiAKLWJvb2wgaXNXT0ZGKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIHNpemVfdCBvZmZzZXQgPSAwOwogICAgIHVpbnQzMl90IHNpZ25hdHVy
ZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2YXRlOgogfTsKICNlbmRpZgogCi1ib29sIGNvbnZl
cnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90
PiYgc2ZudCkKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQoU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0
b3I8dWludDhfdD4mIHNmbnQpCiB7CiAgICAgQVNTRVJUX0FSRyhzZm50LCBzZm50LmlzRW1wdHko
KSk7CiAKQEAgLTI4Myw3ICsyODMsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKICAgICByZXR1cm4g
c2ZudC5zaXplKCkgPT0gdG90YWxTZm50U2l6ZTsKIH0KIAotYm9vbCBjb252ZXJ0V09GRlRvU2Zu
dElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorYm9v
bCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBA
IC0yOTQsNyArMjk0LDcgQEAgYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGNvbnZlcnRlZEZvbnQ7CiAgICAgaWYgKGNvbnZlcnRXT0ZGVG9TZm50KCpidWZmZXIsIGNvbnZl
cnRlZEZvbnQpKQotICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CisgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkpOwogICAgIGVsc2UKICAgICAgICAgYnVm
ZmVyID0gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvV09GRkZpbGVGb3JtYXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1dPRkZGaWxlRm9ybWF0LmgKaW5kZXggNzhhYzRhN2FmZmY0ZDRiZWU5ZmQwMmNhYmU3YTk4ZjJm
ZTdkZGU4Mi4uM2Q1NzAxMDdmMjhmODU0NDc0MWUzNDk1YzAxNjA3ZTRkZTkwMmQ1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCkBA
IC0zMCwxOSArMzAsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiAvLyBSZXR1cm5zIHdoZXRo
ZXIgdGhlIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZS4KLWJvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImKTsKK2Jvb2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZh
bHNlIGlmIHRoZSBXT0ZGIGZpbGUgd29mZiBpcyBpbnZhbGlkIG9yIGNvdWxkIG5vdCBiZSBjb252
ZXJ0ZWQgdG8gc2ZudCAoZm9yIGV4YW1wbGUsCiAvLyBpZiBjb252ZXJzaW9uIHJhbiBvdXQgb2Yg
bWVtb3J5KS4gT3RoZXJ3aXNlIHJldHVybnMgdHJ1ZSBhbmQgd3JpdGVzIHRoZSBzZm50IHBheWxv
YWQgaW50byBzZm50LgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudChDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpOworYm9vbCBjb252ZXJ0V09GRlRvU2Zu
dChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7CiAKIC8vIElmIHRo
ZSBnaXZlbiBidWZmZXIgaXMgYSBXT0ZGIGZpbGUgYW5kIHRoZSBjdXJyZW50IHBsYXRmb3JtIGhh
cyBubyBuYXRpdmUgc3VwcG9ydCBmb3IgV09GRgogLy8gZm9udHMsIGNvbnZlcnQgaXQgdG8gc2Zu
dC4gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBidWZmZXIgd2FzIGNvbnZlcnRlZC4gSWYgY29u
dmVyc2lvbiBmYWlscywKIC8vIHRoZSBidWZmZXIgd2lsbCBiZSBzZXQgdG8gbnVsbHB0ci4KLWJv
b2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mKTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVk
QnVmZmVyPiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVh
bWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Q0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IGQ3YzAxM2Q1NGUzZGVkMDc4NTQ5MDI4ZDUx
ZDZlMDI4Yzk3NTA3YzYuLjhiMDRmOWJlOTZjMzZlMGEyNjIxODBhMjVlYTM3NDU5NjJiM2Q3ZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtODYsNyAr
ODYsNyBAQCBjb25zdCBBdG9tU3RyaW5nJiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNr
ZE5hbWUoKQogICAgIHJldHVybiBza2Q7CiB9CiAKLXN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1
ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRp
YyBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEpTT04gb2YgdGhl
IGZvcm1hdDogInsgc2luZjogWyA8YmFzZTY0LWVuY29kZWQtc3RyaW5nPiBdIH0iCiAgICAgaWYg
KGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCkBA
IC0xMDUsNyArMTA1LDcgQEAgc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFj
dFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIGlmICghc2luZkFycmF5
KQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBz
aW5mczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBzaW5mczsKICAg
ICBzaW5mcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpbmZBcnJheS0+bGVuZ3RoKCkpOwogCiAg
ICAgZm9yIChhdXRvJiB2YWx1ZSA6ICpzaW5mQXJyYXkpIHsKQEAgLTEyNCw3ICsxMjQsNyBAQCBz
dGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB9CiAKIHVzaW5nIFNjaGVtZUFuZEtleVJlc3VsdCA9IFZlY3Rv
cjxzdGQ6OnBhaXI8Rm91ckNDLCBWZWN0b3I8dWludDhfdD4+PjsKLXN0YXRpYyBTY2hlbWVBbmRL
ZXlSZXN1bHQgZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJvbVNpbmYoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitzdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJ
ZEZyb21TaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBh
dXRvIGJ1ZmZlcnMgPSBleHRyYWN0U2luZkRhdGEoYnVmZmVyKTsKICAgICBpZiAoIWJ1ZmZlcnMu
c2l6ZSgpKQpAQCAtMTcwLDkgKzE3MCw5IEBAIHN0YXRpYyBTY2hlbWVBbmRLZXlSZXN1bHQgZXh0
cmFjdFNjaGVtZUFuZEtleUlkRnJvbVNpbmYoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZl
cj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5
SURzU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4ga2V5SURzOwogICAgIGF1dG8gcmVzdWx0cyA9IGV4dHJhY3RTY2hlbWVB
bmRLZXlJZEZyb21TaW5mKGJ1ZmZlcik7CiAKICAgICBmb3IgKGF1dG8mIHJlc3VsdCA6IHJlc3Vs
dHMpIHsKQEAgLTE4Myw3ICsxODMsNyBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleQogICAgIHJl
dHVybiBrZXlJRHM7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6c2FuaXRpemVTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c2FuaXRpemVTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICAvLyBDb21tb24gU0lORiBCb3ggRm9ybWF0CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBA
IC0xOTEsMTcgKzE5MSwxNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBTaGFyZWRCdWZmZQogICAgIHJldHVybiBi
dWZmZXIuY29weSgpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc6OnNhbml0aXplU2tkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c2FuaXRpemVTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IFVOVVNFRF9QQVJBTShidWZmZXIpOwogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJu
IGJ1ZmZlci5jb3B5KCk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2tkKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5
SURzU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBJ
biB0aGUgJ3NrZCcgc2NoZW1lLCB0aGUgaW5pdCBkYXRhIGlzIHRoZSBrZXkgSUQuCi0gICAgVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4ga2V5SURzOwogICAgIGtleUlEcy5hcHBlbmQoYnVmZmVyLmNvcHkoKSk7
CiAgICAgcmV0dXJuIGtleUlEczsKIH0KQEAgLTM5Myw3ICszOTMsNyBAQCBib29sIENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0lu
aXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0CiB7CiAgICAgaWYgKCF2YWxpZEluaXRE
YXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC00MjMsNyArNDIzLDcgQEAgYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXAKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25z
dAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNw
b25zZSkgY29uc3QKIHsKICAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAppbmRleCBiYzkzZjZmNmE3YmRkMDFlZmJmNTVi
NjJiZGI2YTRlNjZlZjkxMmIzLi4zMTdiYjhkNTdlODZjMDYyMTRlMGI0MDU5ZGRmNGY4ODA3Yzc0
YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaApAQCAtNzEsMTcg
KzcxLDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgb3ZlcnJpZGU7
CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgc3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShj
b25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBj
b25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHNpbmZO
YW1lKCk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplU2luZihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAg
IHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTaW5mKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5n
JiBza2ROYW1lKCk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRC
dWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NrZChjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBzdGF0
aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTa2QoY29uc3QgU2hhcmVkQnVmZmVyJik7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4+IGV4dHJhY3RLZXlJRHNTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwor
ICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTa2QoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxG
b3VyQ0M+JiB2YWxpZEZhaXJQbGF5U3RyZWFtaW5nU2NoZW1lcygpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vRm9ybWF0RGVzY3Jp
cHRpb25VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0Zvcm1hdERlc2NyaXB0aW9uVXRpbGl0aWVzLmNwcAppbmRleCBmYzlhYTk5YTY5
ZGZhZTg5ZTY1YjJhYjNhZjQ4OTE0MDc2ODVmZGJkLi4xNjExYmFhYzQzNzBiNWZjOThhMjkyMDc3
MjM1ZDQ1ZTAyYjVkMGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vRm9ybWF0RGVzY3JpcHRpb25VdGlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlw
dGlvblV0aWxpdGllcy5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBTdHJpbmcgY29kZWNGcm9tRm9y
bWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbikK
ICAgICAgICAgICAgIGF1dG8gc2FtcGxlRXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PENGRGF0YVJl
Zj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc2FtcGxlRXh0ZW5zaW9uc0RpY3QsIENGU1RSKCJhdmND
IikpKTsKICAgICAgICAgICAgIGlmICghc2FtcGxlRXh0ZW5zaW9ucykKICAgICAgICAgICAgICAg
ICByZXR1cm4gImF2YzEiOwotICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkQnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNhbXBsZUV4dGVuc2lvbnMpOwor
ICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7CiAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlcnMg
PSBwYXJzZUFWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbmZpZ3VyYXRpb25SZWNvcmRC
dWZmZXIpOwogICAgICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKQogICAgICAgICAgICAgICAgIHJl
dHVybiAiYXZjMSI7CkBAIC0xMjIsNyArMTIyLDcgQEAgU3RyaW5nIGNvZGVjRnJvbUZvcm1hdERl
c2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24pCiAgICAg
ICAgICAgICBhdXRvIHNhbXBsZUV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENG
RGljdGlvbmFyeUdldFZhbHVlKHNhbXBsZUV4dGVuc2lvbnNEaWN0LCBDRlNUUigiaHZjQyIpKSk7
CiAgICAgICAgICAgICBpZiAoIXNhbXBsZUV4dGVuc2lvbnMpCiAgICAgICAgICAgICAgICAgcmV0
dXJuICJodmMxIjsKLSAgICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKKyAgICAg
ICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHNhbXBsZUV4dGVuc2lvbnMpOwogICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gcGFy
c2VIRVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoa0NNVmlkZW9Db2RlY1R5cGVfSEVWQywg
Y29uZmlndXJhdGlvblJlY29yZEJ1ZmZlcik7CiAgICAgICAgICAgICBpZiAoIXBhcmFtZXRlcnMp
CiAgICAgICAgICAgICAgICAgcmV0dXJuICJodmMxIjsKQEAgLTEzNyw3ICsxMzcsNyBAQCBTdHJp
bmcgY29kZWNGcm9tRm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3Jt
YXREZXNjcmlwdGlvbikKICAgICAgICAgICAgIGF1dG8gc2FtcGxlRXh0ZW5zaW9ucyA9IHN0YXRp
Y19jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc2FtcGxlRXh0ZW5zaW9uc0Rp
Y3QsIENGU1RSKCJkdmNDIikpKTsKICAgICAgICAgICAgIGlmICghc2FtcGxlRXh0ZW5zaW9ucykK
ICAgICAgICAgICAgICAgICByZXR1cm4gImR2aDEiOwotICAgICAgICAgICAgYXV0byBjb25maWd1
cmF0aW9uUmVjb3JkQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNhbXBs
ZUV4dGVuc2lvbnMpOworICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7CiAgICAgICAgICAgICBh
dXRvIHBhcmFtZXRlcnMgPSBwYXJzZURvVmlEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25m
aWd1cmF0aW9uUmVjb3JkQnVmZmVyKTsKICAgICAgICAgICAgIGlmICghcGFyYW1ldGVycykKICAg
ICAgICAgICAgICAgICByZXR1cm4gImR2aDEiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5kZXgg
MTU5YjkwY2RiNDhmN2ZlNDRiYjQ5YmUyZWMxYzFjMmY0MzI4NjQwMC4uNTZiNThjMjVhMjg3MDlm
YjM4MjIxODM5ZTU1YmFlNDVlZDkzY2Y2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBAIC04
NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRp
b25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpGYWlyUGxh
eVN0cmVhbWluZzsgfQogCiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVy
cywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2
b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBz
ZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFJlZlB0cjxDRE1J
bnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKICAgICB2b2lkIHNldENsaWVu
dChXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50PiYmKSBmaW5hbDsKQEAgLTk0LDEwICs5NCwxMCBA
QCBwdWJsaWM6CiAKICAgICBOU1VSTCAqc3RvcmFnZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rv
cmFnZVVSTC5nZXQoKTsgfQogICAgIGJvb2wgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dlZDsgfQotICAgIFNoYXJlZEJ1ZmZlciog
c2VydmVyQ2VydGlmaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlckNlcnRpZmljYXRlLmdl
dCgpOyB9CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2VydmVyQ2VydGlmaWNhdGUoKSBj
b25zdCB7IHJldHVybiBtX3NlcnZlckNlcnRpZmljYXRlLmdldCgpOyB9CiAgICAgQVZDb250ZW50
S2V5U2Vzc2lvbiogY29udGVudEtleVNlc3Npb24oKTsKIAotICAgIFJldGFpblB0cjxBVkNvbnRl
bnRLZXlSZXF1ZXN0PiB0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRh
dGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBTaGFyZWRCdWZmZXImIGluaXREYXRh
KTsKKyAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gdGFrZVVuZXhwZWN0ZWRLZXlS
ZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpOwogCiAgICAgLy8gQVZDb250ZW50
S2V5U2Vzc2lvbkRlbGVnYXRlQ2xpZW50CiAgICAgdm9pZCBkaWRQcm92aWRlUmVxdWVzdChBVkNv
bnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7CkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogICAg
IHZvaWQgb3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNo
YW5nZWQoYm9vbCkgZmluYWw7CiAgICAgdm9pZCBleHRlcm5hbFByb3RlY3Rpb25TdGF0dXNEaWRD
aGFuZ2VGb3JDb250ZW50S2V5UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7CiAK
LSAgICB1c2luZyBLZXlzID0gVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBL
ZXlzID0gVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yS2V5SURzKGNvbnN0
IEtleXMmKSBjb25zdDsKICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMqIHNlc3Npb25Gb3JHcm91cChBVkNvbnRlbnRLZXlSZXBvcnRHcm91cCopIGNvbnN0Owog
ICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZv
clJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCopIGNvbnN0OwpAQCAtMTI5LDcgKzEyOSw3IEBA
IHByaXZhdGU6CiAgICAgV2Vha1B0cjxDRE1JbnN0YW5jZUNsaWVudD4gbV9jbGllbnQ7CiAgICAg
UmV0YWluUHRyPEFWQ29udGVudEtleVNlc3Npb24+IG1fc2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8
V2ViQ29yZUZQU0NvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGU+IG1fZGVsZWdhdGU7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZTsKICAgICBib29sIG1fcGVyc2lz
dGVudFN0YXRlQWxsb3dlZCB7IHRydWUgfTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IG1fc3RvcmFn
ZVVSTDsKICAgICBWZWN0b3I8V2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM+PiBtX3Nlc3Npb25zOwpAQCAtMTUwLDggKzE1MCw4IEBAIHB1YmxpYzoKICNl
bmRpZgogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uCi0gICAgdm9pZCByZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFs
OworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5h
bDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VT
ZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92
ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmlu
ZGV4IDYyYmQxMzQ3OWM2YzMzNjJjYmU3MjUxYmY2OWVhOGQxZjgxMGJlMjUuLmJhNTA2MWViYjVj
NWZiZTA3NGQzYTI5ZGVhNGY5MThmYzI2MjFjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1t
CkBAIC0yMTcsNyArMjE3LDcgQEAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKICAg
ICByZXR1cm4gQXRvbVN0cmluZyhuc0luaXRUeXBlKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGluaXRpYWxpemF0aW9uRGF0YUZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCog
cmVxdWVzdCkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdGlhbGl6YXRp
b25EYXRhRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIGlm
ICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CkBAIC0y
NjUsNyArMjY1LDcgQEAgQVZDb250ZW50S2V5U2Vzc2lvbiogQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmNvbnRlbnRLZXlTZXNzaW9uKCkKICAgICByZXR1cm4gbV9zZXNzaW9u
LmdldCgpOwogfQogCi1SZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRp
YWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZl
ciYgaW5pdERhdGEpCitSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRp
YWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIGZvciAoYXV0byByZXF1ZXN0SXRlciA9IG1f
dW5leHBlY3RlZEtleVJlcXVlc3RzLmJlZ2luKCk7IHJlcXVlc3RJdGVyICE9IG1fdW5leHBlY3Rl
ZEtleVJlcXVlc3RzLmVuZCgpOyArK3JlcXVlc3RJdGVyKSB7CiAgICAgICAgIGF1dG8mIHJlcXVl
c3QgPSAqcmVxdWVzdEl0ZXI7CkBAIC0zMTYsNyArMzE2LDcgQEAgcHJpdmF0ZToKICAgICBSZXNw
b25zZU1hcCBtX3Jlc3BvbnNlczsKIH07CiAKLXN0YXRpYyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBh
cnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJlZlB0cjxK
U09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIC8vIEZhaWwgb24gbGFyZ2UgYnVmZmVycyB3aG9zZSBzaXplIGRvZXNu
J3QgZml0IGludG8gYSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlci4KICAgICBzaXplX3Qgc2l6ZSA9
IGJ1ZmZlci5zaXplKCk7CkBAIC0zODAsNyArMzgwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENE
TUsKICAgICBjYWxsYmFjayhpbml0aWFsaXplKCkpOwogfQogCi12b2lkIENETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVm
ZmVyPiYmIHNlcnZlckNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3Zv
aWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFNlcnZlckNlcnRpZmlj
YXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHNlcnZlckNlcnRpZmljYXRlLCBTdWNj
ZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9H
SURFTlRJRklFUik7CiAgICAgbV9zZXJ2ZXJDZXJ0aWZpY2F0ZSA9IFdURk1vdmUoc2VydmVyQ2Vy
dGlmaWNhdGUpOwpAQCAtNTg1LDggKzU4NSw4IEBAIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQyogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6CiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRvIHNlc3Npb25LZXlzID0gc2Vzc2lv
bkludGVyZmFjZS0+a2V5SURzKCk7Ci0gICAgICAgIGlmIChhbnlPZihzZXNzaW9uS2V5cywgWyZd
KGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBzZXNzaW9uS2V5KSB7Ci0gICAgICAgICAgICByZXR1
cm4ga2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGtleUlE
KSB7CisgICAgICAgIGlmIChhbnlPZihzZXNzaW9uS2V5cywgWyZdKGNvbnN0IFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYgc2Vzc2lvbktleSkgeworICAgICAgICAgICAgcmV0dXJuIGtleUlE
cy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYga2V5
SUQpIHsKICAgICAgICAgICAgICAgICByZXR1cm4ga2V5SUQuZ2V0KCkgPT0gc2Vzc2lvbktleS5n
ZXQoKTsKICAgICAgICAgICAgIH0pICE9IG5vdEZvdW5kOwogICAgICAgICB9KSkKQEAgLTY3Myw3
ICs2NzMsNyBAQCBLZXlzIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6a2V5SURzKCkKICAgICByZXR1cm4ga2V5SURzOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUg
bGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNh
bGxiYWNrKQogewogICAgIGlmICghaXNMaWNlbnNlVHlwZVN1cHBvcnRlZChsaWNlbnNlVHlwZSkp
IHsKICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgZmFsc2Us
IGxpY2Vuc2VUeXBlIFwiIiwgbGljZW5zZVR5cGUsICJcIiBub3Qgc3VwcG9ydGVkIik7CkBAIC03
MzYsNyArNzM2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAgICB9CiB9CiAKLXN0YXRp
YyBib29sIGlzRXF1YWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQorc3RhdGljIGJvb2wgaXNFcXVhbChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBkYXRh
LnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikKQEAgLTc1NCw3
ICs3NTQsNyBAQCBzdGF0aWMgYm9vbCBpc0VxdWFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICByZXR1cm4gc3RyaW5nT3JFeGNlcHRpb24ucmV0dXJu
VmFsdWUoKSA9PSB2YWx1ZTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sm
JiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYm
IGNhbGxiYWNrKQogewogICAgIGlmICghbV9leHBpcmVkU2Vzc2lvbnMuaXNFbXB0eSgpICYmIGlz
RXF1YWwocmVzcG9uc2VEYXRhLCAiYWNrbm93bGVkZ2VkIl9zKSkgewogICAgICAgICBhdXRvKiBj
ZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCk7CkBAIC04NTYsNyAr
ODU2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAgIGF1dG8ga2V5SUQg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCprZXlJRFZlY3RvcikpOwogICAgICAgICAg
ICAgYXV0byBmb3VuZEluZGV4ID0gbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZp
bmRNYXRjaGluZyhbJl0gKGF1dG8mIHJlcXVlc3QpIHsKICAgICAgICAgICAgICAgICBhdXRvIGtl
eUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGtleUlEcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBp
ZCkgeworICAgICAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25z
dCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGlkKSB7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBpZC5nZXQoKSA9PSBrZXlJRC5nZXQoKTsKICAgICAgICAgICAgICAgICB9KSAhPSBu
b3RGb3VuZDsKICAgICAgICAgICAgIH0pOwpAQCAtMTE1NSw3ICsxMTU1LDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0
cyhWZWN0b3I8UmV0YWkKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5z
ZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQogICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUt
Pm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCi0gICAgdXNpbmcgUmVxdWVzdHNE
YXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5T
RGF0YT4+PjsKKyAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKICAgICBzdHJ1
Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PENhbGxiYWNrQWdncmVnYXRvcj4gewogICAgICAgICB1c2luZyBDYWxsYmFja0Z1bmN0aW9uID0g
RnVuY3Rpb248dm9pZChSZXF1ZXN0c0RhdGEmJik+OwogICAgICAgICBzdGF0aWMgUmVmUHRyPENh
bGxiYWNrQWdncmVnYXRvcj4gY3JlYXRlKENhbGxiYWNrRnVuY3Rpb24mJiBjb21wbGV0aW9uSGFu
ZGxlcikKQEAgLTEyMTEsNyArMTIxMSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAg
QHRyeSB7CiAgICAgICAgIGZvciAoYXV0byByZXF1ZXN0IDogbV9jdXJyZW50UmVxdWVzdC52YWx1
ZSgpLnJlcXVlc3RzKSB7CiAgICAgICAgICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVl
c3QocmVxdWVzdC5nZXQoKSk7Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlJ
RCA9IFdURk1vdmUoa2V5SURzLmZpcnN0KCkpOworICAgICAgICAgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7CiAgICAgICAg
ICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SUQtPm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZU5TRGF0YSgpOwogICAgICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRL
ZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVy
OmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOltr
ZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yXSAoTlNEYXRhICpjb250ZW50S2V5UmVx
dWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBVTlVT
RURfUEFSQU0oZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5oCmluZGV4IDAzMzRkNjIzYjJhNzYwNWM5YmUxMjIxM2I1YWJkYmJhYzJiMDNmMTUuLjYy
YjgzZmJmZDU3OTQwNTBlYmM5NDA2MzcwNDkwYmEyYjNlYzA4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2Rl
ckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3Mg
V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOwogCiBjbGFzcyBJbWFnZURlY29kZXJBVkZPYmpD
IDogcHVibGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2RlckFWRk9i
akM+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2aXJ0dWFs
IH5JbWFnZURlY29kZXJBVkZPYmpDKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9v
bCBzdXBwb3J0c01lZGlhVHlwZShNZWRpYVR5cGUpOwpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6
U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RXhwZWN0
ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29s
IGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFsOwogCkBAIC05NCw3
ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8SW1hZ2VEZWNvZGVy
OjpGcmFtZUluZm8+IGZyYW1lSW5mb3MoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBJbWFnZURl
Y29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyQVZG
T2JqQyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIEFWQXNzZXRUcmFj
ayAqZmlyc3RFbmFibGVkVHJhY2soKTsKICAgICB2b2lkIHJlYWRTYW1wbGVzKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCBhNTRkZjNkYmFk
ZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5Li4zNWM2Y2U2N2U4NWY4NmFlMTY0YzIxYTcy
NjA3ZmMwNjVlY2I1MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2Rl
ckFWRk9iakMubW0KQEAgLTI4OSw3ICsyODksNyBAQCBJbWFnZURlY29kZXJBVkZPYmpDU2FtcGxl
KiB0b1NhbXBsZShJdGVyYXRvciBpdGVyKQogCiAjcHJhZ21hIG1hcmsgLSBJbWFnZURlY29kZXJB
VkZPYmpDCiAKLVJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpD
OjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBo
YU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gSW1hZ2VEZWNv
ZGVyQVZGT2JqQzo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICAvLyBBVkZvdW5k
YXRpb24gbWF5IG5vdCBiZSBhdmFpbGFibGUgYXQgcnVudGltZS4KICAgICBpZiAoIUFWQXNzZXRN
SU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWlsYWJsZSgpKQpAQCAtMzAxLDcgKzMwMSw3
IEBAIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVh
dGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1h
Z2VEZWNvZGVyQVZGT2JqQyhkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKSk7CiB9CiAKLUltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2Rl
ckFWRk9iakMoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURlY29kZXJBVkZPYmpD
OjpJbWFnZURlY29kZXJBVkZPYmpDKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKICAgICA6IEltYWdlRGVjb2RlcigpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAg
ICwgbV91dGkoV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBlKG1pbWVUeXBlKSkKQEAgLTY0MSw3ICs2
NDEsNyBAQCB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldEV4cGVjdGVkQ29udGVudFNpemUo
bG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCiAgICAgbV9sb2FkZXIuZ2V0KCkuZXhwZWN0
ZWRDb250ZW50U2l6ZSA9IGV4cGVjdGVkQ29udGVudFNpemU7CiB9CiAKLXZvaWQgSW1hZ2VEZWNv
ZGVyQVZGT2JqQzo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQordm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIFttX2xvYWRlciB1cGRh
dGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxl
dGU6YWxsRGF0YVJlY2VpdmVkXTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDI3ZjFlZDA4
MmFmNmJmOTc2OGRlMDRlMDA0ZWYyNTZkY2YyNTI0OTEuLmViNDU1MmU1NmE1MWFhNjBjY2MzZGVh
Mzc0M2I2MzRlMTBkZDM2NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTY3LDcgKzY3LDcg
QEAgY2xhc3MgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOwogY2xhc3MgTWVkaWFQ
bGF5YmFja1RhcmdldDsKIGNsYXNzIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDOwogY2xhc3Mg
UGl4ZWxCdWZmZXJDb25mb3JtZXJDVjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBWaWRlb0xheWVyTWFuYWdlck9iakM7CiBjbGFzcyBW
aWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM7CiBjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI7
CkBAIC00MjcsNyArNDI3LDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8
V2FsbFRpbWU+IG1fd2FsbENsb2NrQXRDYWNoZWRDdXJyZW50VGltZTsKICAgICBtdXRhYmxlIGlu
dCBtX3RpbWVDb250cm9sU3RhdHVzQXRDYWNoZWRDdXJyZW50VGltZSB7IDAgfTsKICAgICBtdXRh
YmxlIGRvdWJsZSBtX3JlcXVlc3RlZFJhdGVBdENhY2hlZEN1cnJlbnRUaW1lIHsgMCB9OwotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fa2V5SUQ7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IG1fa2V5SUQ7CiAgICAgZG91YmxlIG1fY2FjaGVkUmF0ZSB7IDAgfTsKICAgICBi
b29sIG1fcmVxdWVzdGVkUGxheWluZyB7IGZhbHNlIH07CiAgICAgZG91YmxlIG1fcmVxdWVzdGVk
UmF0ZSB7IDEuMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggZWJmMWFiNThhZDU3NDVh
NDAyNmJlMDNlZWVhZGM3Yzg4YzBjYmViZS4uMTVkYjVlZWY2ZmMzMzRjZTI5ZThmMmJiZTE4ZGE0
M2Y0NTYwZWIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0yNzk4LDcgKzI3OTgsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmF0dGVtcHRUb0RlY3J5
cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFuYwogICAgIGlmICghbV9rZXlJRCB8fCAhbV9jZG1JbnN0
YW5jZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2Nk
bUluc3RhbmNlLT5zZXNzaW9uRm9yS2V5SURzKFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj46OmZy
b20oKm1fa2V5SUQpKTsKKyAgICBhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1fY2RtSW5zdGFuY2Ut
PnNlc3Npb25Gb3JLZXlJRHMoVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmZy
b20oKm1fa2V5SUQpKTsKICAgICBpZiAoIWluc3RhbmNlU2Vzc2lvbikKICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMuaAppbmRleCAwMzQyMGYxMzgzNjRmYWMyMDkxZTEwNGQxMzZmZjM4YTFmYjlmZTIyLi5l
YWQwODNhNmNjN2U3MzZiNDIxNzEwZmFjMzkyYTA3ZGZmOTJiZTU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKQEAgLTczLDcg
KzczLDcgQEAgY2xhc3MgVmlkZW9UcmFja1ByaXZhdGU7CiBjbGFzcyBBdWRpb1RyYWNrUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOwogY2xhc3MgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakNFcnJvckNsaWVudCB7CiBwdWJsaWM6CkBAIC0xNTMsNyArMTUzLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lkKFJlZjxN
ZWRpYVNhbXBsZT4mJiwgdWludDY0X3QgdHJhY2tJZCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUp
OwogCiAgICAgLy8gU291cmNlQnVmZmVyUHJpdmF0ZSBvdmVycmlkZXMKLSAgICB2b2lkIGFwcGVu
ZChSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZChSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBhYm9ydCgpIGZpbmFsOwogICAg
IHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlZEZyb21NZWRp
YVNvdXJjZSgpIGZpbmFsOwpAQCAtMjIxLDcgKzIyMSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCiAg
ICAgUmVmUHRyPENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPiBtX2NkbUluc3Rh
bmNlOwotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gbV9rZXlJRHM7CisgICAgVmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9rZXlJRHM7CiAjZW5kaWYKIAogICAgIHN0
ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBtX2NhY2hlZFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDNhMjg2N2Ex
YWMyNDNiYjljOTNjOWQ2YjcwY2E1NmIwMjk0OGZjOWMuLjI0YWUwZTE0MDYwMTkxNDNmYWQ0ZjE1
MjllNjhlZDQ5YjQxNjUzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlh
bGl6YXRpb25EYXRhRm8KICAgICBVTlVTRURfUEFSQU0oaGFzU2Vzc2lvblNlbWFwaG9yZSk7CiB9
CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChSZWY8U2hhcmVkQnVm
ZmVyPiYmIGRhdGEpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmQoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIsICJkYXRhIGxlbmd0aCA9ICIsIGRhdGEtPnNpemUoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKaW5kZXggZjBkOGU3
MTEzMmY2YzI4N2EyZTYyOWE0Yjg4YTUzOWRmZDUzY2JlMi4uMGVmZWVhZWY1YjJkNzFiYzZkNjcw
NGRkMWI5NzVhY2JhZTExM2JiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzsKIGNsYXNzIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxv
YWRlcjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3Mg
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC02NSw3ICs2NSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQg
bG9hZEZpbmlzaGVkKCk7Ci0gICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoU2hh
cmVkQnVmZmVyJik7CisgICAgdm9pZCBuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQyogbV9wYXJlbnQ7CiAgICAgUmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRp
bmdSZXF1ZXN0PiBtX2F2UmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCAzMmM1YTY2OGExNmFlNDhlZWU4YzlkMzhk
YmZmMTMzMDVmZGFjMGIxLi5mOTIxZjNkYTBlNjliMzM5OTc3YzllM2U0OTY2N2EyOGY1ZTk1Y2Jk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyLm1tCkBAIC0xNTYsMTQgKzE1NiwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVkaXJlY3RS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsIHsgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1
bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgZmluYWwgeyB9Ci0gICAgdm9p
ZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29u
dHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmFp
bGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBm
aW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBsb2Fk
RmluaXNoZWQoKTsgfQogCiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBtX3BhcmVudDsK
ICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBtX3Jlc291cmNlOwotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9idWZm
ZXI7CiB9OwogCiBXZWFrUHRyPFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcj4gUGxhdGZvcm1S
ZXNvdXJjZU1lZGlhTG9hZGVyOjpjcmVhdGUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJl
bnQsIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0KQpAQCAtMjExLDEyICsyMTEsMTAgQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVk
aWFMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgbV9wYXJlbnQubG9hZEZpbmlzaGVkKCk7CiB9
CiAKLXZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFBsYXRm
b3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBpZiAoIW1f
YnVmZmVyKQotICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAg
bV9idWZmZXItPmFwcGVuZChidWZmZXIuZ2V0KCkpOwotICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9y
ZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIpOworICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3Zl
KGJ1ZmZlcikpOworICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9i
dWZmZXIuZ2V0KCkpOwogfQogCiBjbGFzcyBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlciA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcj4gewpAQCAtMjI3
LDcgKzIyNSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyJiBtX3BhcmVudDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fYnVmZmVyOwogfTsKIAogRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFV
UkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYgcGFyZW50LCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjM3LDcgKzIzNSw3IEBAIERhdGFVUkxSZXNv
dXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXImCiAKICAgICBpZiAoYXV0byByZXN1bHQgPSBEYXRhVVJMRGVjb2Rlcjo6ZGVj
b2RlKHJlcXVlc3QudXJsKCksIERhdGFVUkxEZWNvZGVyOjpNb2RlOjpGb3JnaXZpbmdCYXNlNjQp
KSB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9u
c2UocmVxdWVzdC51cmwoKSwgKnJlc3VsdCk7Ci0gICAgICAgIG1fYnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7CisgICAgICAgIG1f
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKICAg
ICB9CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9XSB7CkBAIC0zODcsNyArMzg1LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0KIAotdm9pZCBXZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZm
ZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZElu
U2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAg
QVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVxdWVzdCA9IFttX2F2UmVx
dWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuaAppbmRleCA0NmIwN2ZlNzEyZTc5ZTYxMzE3YzBkMTE2ZmU2YTNmMDRhZjlm
ZmNiLi45NDE5YmNlYTM4ZGJmOGQ2NDkyZjY4MDFkOWEyMTU2MjM2NmEyYzZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zMSwxMSArMzEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3Qg
RlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250Q3Jl
YXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udFBsYXRmb3Jt
RGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250
VmFyaWFudFNldHRpbmdzOwogCkBAIC00Niw3ICs0Niw3IEBAIHN0cnVjdCBGb250Q3VzdG9tUGxh
dGZvcm1EYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKIHB1YmxpYzoKLSAgICBGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKEZUX0ZhY2UsIFNoYXJlZEJ1ZmZlciYpOworICAgIEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoRlRfRmFjZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIH5Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhKCkgPSBkZWZhdWx0OwogICAgIEZvbnRQbGF0Zm9ybURhdGEgZm9u
dFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29sIGJvbGQsIGJvb2wgaXRh
bGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAgICAgc3RhdGljIGJvb2wgc3VwcG9y
dHNGb3JtYXQoY29uc3QgU3RyaW5nJik7CkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPGNhaXJvX2ZvbnRfZmFjZV90PiBtX2ZvbnRGYWNlOwogfTsKIAotc3RkOjp1bmlxdWVf
cHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwCmluZGV4IDIwMzVjOTlhN2Y2OGI1NDg5Yzg1OGEzZTZkNzAzM2QxMzVkMWY3ZGIu
LmI2ZDNlYjM2MzExMjQ0NjEzYjM4MDNmMmYzZDI0ZDMwODdlYTI0ZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAK
QEAgLTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnRTaXplPiBkZW5zaXR5
Q29ycmVjdGVkU2l6ZUZyb21Qcm9wZXJ0aWVzKENGRGljdGlvbmFyeVJlZgogI2lmICFQTEFURk9S
TShDT0NPQSkKIHNpemVfdCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24odm9pZCogaW5m
bywgdm9pZCogYnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNvdW50KQogewotICAgIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIqPihpbmZvKTsKKyAgICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9
IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAgIHNpemVfdCBzb3VyY2VTaXpl
ID0gc2hhcmVkQnVmZmVyLT5zaXplKCk7CiAgICAgaWYgKHBvc2l0aW9uID49IHNvdXJjZVNpemUp
CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjQ0LDEyICsyNDQsMTIgQEAgc2l6ZV90IHNoYXJlZEJ1
ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBv
c2l0aW9uLAogCiB2b2lkIHNoYXJlZEJ1ZmZlclJlbGVhc2Uodm9pZCogaW5mbykKIHsKLSAgICBT
aGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGlu
Zm8pOworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19j
YXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBzaGFyZWRCdWZmZXItPmRl
cmVmKCk7CiB9CiAjZW5kaWYKIAotSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQor
SW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQpA
QCAtNTYyLDIwICs1NjIsMjAgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJDRzo6Y3Jl
YXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGkKICAgICByZXR1cm4g
bWFza2VkSW1hZ2UgPyBtYXNrZWRJbWFnZSA6IGltYWdlOwogfQogCi12b2lkIEltYWdlRGVjb2Rl
ckNHOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2
b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIG1faXNBbGxEYXRhUmVjZWl2ZWQgPSBhbGxE
YXRhUmVjZWl2ZWQ7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAvLyBPbiBNYWMgdGhlIE5T
RGF0YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8g
d2l0aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgotICAgIC8vIFdlIHVzZSBTaGFy
ZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBDRkRhdGEgdG8gZ2V0IGFy
b3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMKLSAgICAvLyByZWFsbHkgbG9va2lu
ZyBhdCB0aGUgU2hhcmVkQnVmZmVyLgorICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0
aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkgYXBwZW5kZWQgdG8gd2l0
aG91dCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRnZS4KKyAgICAvLyBXZSB1
c2UgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRl
IENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcworICAg
IC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgogICAgIENH
SW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgZGF0YS5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICNlbHNl
Ci0gICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgU2hhcmVkQnVmZmVy
LgorICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAgdGhlIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIuCiAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3Vv
dXMoKTsKICAgICBjb250aWd1b3VzRGF0YS5nZXQoKS5yZWYoKTsKLSAgICAvLyBXZSB1c2UgdGhl
IEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50
ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCisgICAgLy8gV2UgdXNlIHRoZSBHZXRCeXRlc0F0
UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdldEJ5dGVQb2ludGVyIG9uZSBiZWNh
dXNlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIKICAgICAvLyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5
IHRvIGxvY2sgZG93biB0aGUgYnl0ZSBwb2ludGVyIGFuZCBndWFyYW50ZWUgdGhhdCBpdCB3b24n
dCBtb3ZlLCB3aGljaAogICAgIC8vIGlzIGEgcmVxdWlyZW1lbnQgZm9yIHVzaW5nIHRoZSBHZXRC
eXRlUG9pbnRlciBjYWxsYmFjay4KICAgICBDR0RhdGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBw
cm92aWRlckNhbGxiYWNrcyA9IHsgMCwgMCwgMCwgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0
aW9uLCBzaGFyZWRCdWZmZXJSZWxlYXNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAppbmRleCA5NzQwNzM2YTIxYWM5OThh
YjA1ZjFjOWI0ZjViMTY3NWU0NGQyYzkxLi5hMGFjMWMyZmJlZTUyN2U1YWIxMTE0NTU4MTJiZGI3
MzYzYTA1NTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlRGVjb2RlckNHLmgKQEAgLTMyLDkgKzMyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgSW1hZ2VEZWNvZGVyQ0cgZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJbWFnZURlY29kZXJDRyhT
aGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bik7CisgICAgSW1hZ2VEZWNvZGVyQ0coRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAotICAgIHN0YXRpYyBSZWY8
SW1hZ2VEZWNvZGVyQ0c+IGNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikKKyAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2RlckNHPiBjcmVhdGUoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyQ0coZGF0YSwgYWxwaGFPcHRpb24s
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiAgICAgfQpAQCAtNjQsNyArNjQsNyBAQCBw
dWJsaWM6CiAKICAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0
IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJv
bm91cykpIGZpbmFsOwogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJl
Y2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAg
IHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURh
dGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQ
bGF0Zm9ybURhdGFDb2NvYS5tbQppbmRleCA4NDRhYzQ0ZjNhZGRmYTlmMzk1Nzg2Yjk0YmRkNTA5
NDFlNzI3NTRiLi44NTQyMWUzZGU3MDljZTE1OWM0OTRiNDBmYjhkMWFkMjM1OTNjM2JiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZv
cm1EYXRhQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgRm9udFBs
YXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIG90aGVy
KSBjb25zdAogICAgIHJldHVybiBDRkVxdWFsKG1fZm9udC5nZXQoKSwgb3RoZXIubV9mb250Lmdl
dCgpKTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURh
dGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QKK1JlZlB0cjxTaGFyZWRC
dWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3Bw
CmluZGV4IGY3NDdkODBmYjYxZDMwZmM1MDIyZTY4MmQ2MzU2MTMzZDNjYTY5N2EuLmM4YTgwNjEy
MjA1M2Y2NDhhZGRiMDJhYzM4OWNlNzE0MzY4ZGJiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
LmNwcApAQCAtODAsNyArODAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcjo6c2V0TWluaW11
bUF1ZGlvU2FtcGxlRHVyYXRpb24oZmxvYXQpCiB7CiB9CiAKLVNvdXJjZUJ1ZmZlclBhcnNlcjo6
U2VnbWVudDo6U2VnbWVudChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK1NvdXJjZUJ1ZmZl
clBhcnNlcjo6U2VnbWVudDo6U2VnbWVudChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShidWZmZXIpKQogewogfQpAQCAtMTAxLDcg
KzEwMSw3IEBAIHNpemVfdCBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnNpemUoKSBjb25z
dAogICAgICAgICAgICAgcmV0dXJuIGNsYW1wVG88c2l6ZV90PihNVFBsdWdpbkJ5dGVTb3VyY2VH
ZXRMZW5ndGgoYnl0ZVNvdXJjZS5nZXQoKSkpOwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAg
IFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgICAgIFtdKGNvbnN0IFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gYnVmZmVyLT5zaXplKCk7CiAgICAgICAgIH0KQEAgLTEyNSw3ICsxMjUsNyBAQCBh
dXRvIFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6cmVhZChzaXplX3QgcG9zaXRpb24sIHNp
emVfdCBzaXplVG9SZWFkLCB1aW50OAogICAgICAgICAgICAgcmV0dXJuIFVuZXhwZWN0ZWQ8UmVh
ZEVycm9yPiB7IFJlYWRFcnJvcjo6RmF0YWxFcnJvciB9OwogICAgICAgICB9LAogI2VuZGlmCi0g
ICAgICAgIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZWFkUmVzdWx0
CisgICAgICAgIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikg
LT4gUmVhZFJlc3VsdAogICAgICAgICB7CiAgICAgICAgICAgICBidWZmZXItPmNvcHlUbyhkZXN0
aW5hdGlvbiwgcG9zaXRpb24sIHNpemVUb1JlYWQpOwogICAgICAgICAgICAgcmV0dXJuIHNpemVU
b1JlYWQ7CkBAIC0xMzMsNyArMTMzLDcgQEAgYXV0byBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21l
bnQ6OnJlYWQoc2l6ZV90IHBvc2l0aW9uLCBzaXplX3Qgc2l6ZVRvUmVhZCwgdWludDgKICAgICAp
OwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRh
a2VTaGFyZWRCdWZmZXIoKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZl
clBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1ZmZlcigpCiB7CiAgICAgcmV0dXJuIFdURjo6
c3dpdGNoT24obV9zZWdtZW50LAogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCkBA
IC0xNDIsMjggKzE0MiwyOCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6
OlNlZ21lbnQ6OnRha2VTaGFyZWRCdWZmZXIoKQogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHZlY3RvcihzaXplKCkpOwogICAgICAgICAgICAgYXV0byByZWFkUmVzdWx0ID0gcmVhZCgwLCB2
ZWN0b3Iuc2l6ZSgpLCB2ZWN0b3IuZGF0YSgpKTsKICAgICAgICAgICAgIGlmICghcmVhZFJlc3Vs
dC5oYXNfdmFsdWUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CiAgICAgICAgICAgICB2ZWN0b3Iuc2hyaW5rKHJlYWRSZXN1bHQudmFsdWUoKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKTsK
KyAgICAgICAgICAgIHJldHVybiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZSh2ZWN0b3IpKTsKICAgICAgICAgfSwKICNlbmRpZgotICAgICAgICBbJl0oUmVmPFNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikKKyAgICAgICAgWyZdKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYg
YnVmZmVyKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShidWZm
ZXIsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6ZXhj
aGFuZ2UoYnVmZmVyLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7CiAgICAgICAg
IH0KICAgICApOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6
OlNlZ21lbnQ6OmdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpnZXRTaGFyZWRCdWZmZXIoKSBj
b25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc2VnbWVudCwKICNpZiBIQVZFKE1U
X1BMVUdJTl9GT1JNQVRfUkVBREVSKQotICAgICAgICBbJl0oY29uc3QgUmV0YWluUHRyPE1UUGx1
Z2luQnl0ZVNvdXJjZVJlZj4mKSAtPiBSZWZQdHI8U2hhcmVkQnVmZmVyPgorICAgICAgICBbJl0o
Y29uc3QgUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mKSAtPiBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAgICAgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIpIC0+IFJlZlB0cjxTaGFyZWRCdWZmZXI+CisgICAgICAgIFsmXShjb25zdCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBidWZmZXIucHRyKCk7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKaW5kZXggNTIwYjUyMDdmYzI3MWQ3OTgxNTMz
ZmIxNGQyMzE1NTk0YTg4ODM2NS4uNzI5N2E3OTE0YTc5YWRmNjQyZGM2YjE2YjM2ZTYwZjljZDAy
OWYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlwZTsKIGNsYXNzIE1lZGlhU2FtcGxlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgU291cmNlQnVmZmVyUGFyc2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFNvdXJjZUJ1ZmZlclBhcnNlcj4gewogcHVibGljOgpAQCAtNjksMTEgKzY5LDExIEBA
IHB1YmxpYzoKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVSKQogICAgICAgICBTZWdt
ZW50KFJldGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VSZWY+JiYpOwogI2VuZGlmCi0gICAgICAg
IFNlZ21lbnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIFNlZ21lbnQoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgICAgICBTZWdtZW50KFNlZ21lbnQmJikgPSBkZWZh
dWx0OwotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiB0YWtlU2hhcmVkQnVmZmVyKCk7Ci0gICAg
ICAgIC8vIFdpbGwgcmV0dXJuIG51bGxwdHIgaWYgU2VnbWVudCdzIGJhY2tlbmQgaXNuJ3QgYSBT
aGFyZWRCdWZmZXIuCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGdldFNoYXJlZEJ1ZmZl
cigpIGNvbnN0OworICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZVNoYXJl
ZEJ1ZmZlcigpOworICAgICAgICAvLyBXaWxsIHJldHVybiBudWxscHRyIGlmIFNlZ21lbnQncyBi
YWNrZW5kIGlzbid0IGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgICAg
IHNpemVfdCBzaXplKCkgY29uc3Q7CiAKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogI2lmIEhB
VkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAgICAgICBSZXRhaW5QdHI8TVRQbHVn
aW5CeXRlU291cmNlUmVmPiwKICNlbmRpZgotICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4K
KyAgICAgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPgogICAgICAgICA+IG1fc2Vn
bWVudDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDYx
ZGJkNjJjOWUzZTlmMzE1Nzk4NTA1ZWI1MDQwZjk5ZmY4YzViZjEuLjliYzE4OTQxOTg2MzBiYWQ4
ZDdjYmQwYjNhNWIyOGU0NmU5ZWZlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwCkBAIC0zODgsNyArMzg4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGFkdmFuY2VU
b05leHRTZWdtZW50KCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBjdXJyZW50
U2VnbWVudC5nZXRTaGFyZWRCdWZmZXIoKTsKKyAgICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBjdXJyZW50U2VnbWVudC5nZXRTaGFyZWRCdWZm
ZXIoKTsKICAgICAgICAgICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3QmxvY2tCdWZmZXIgPSBudWxs
cHRyOwogICAgICAgICAgICAgdWludDY0X3QgbGFzdFJlYWQgPSAwOwogICAgICAgICAgICAgc2l6
ZV90IGRlc3RpbmF0aW9uT2Zmc2V0ID0gbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CkBAIC00MDks
NyArNDA5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uT2Zmc2V0ID0g
MDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHNoYXJlZEJ1
ZmZlci0+aGFzT25lU2VnbWVudCgpLCAiQ2FuIG9ubHkgZGVhbCB3aXRoIHNoYXJlZEJ1ZmZlciBj
b250YWluaW5nIGEgc2luZ2xlIERhdGFTZWdtZW50Iik7Ci0gICAgICAgICAgICAgICAgLy8gQSBT
aGFyZWRCdWZmZXIgZG9lc24ndCBoYXZlIHRocmVhZC1zYWZlIHJlZmNvdW50aW5nLCBhcyBzdWNo
IHdlIG11c3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgRGF0YVNlZ21lbnQgaW5zdGVhZC4KKyAg
ICAgICAgICAgICAgICAvLyBBIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgZG9lc24ndCBoYXZlIHRo
cmVhZC1zYWZlIHJlZmNvdW50aW5nLCBhcyBzdWNoIHdlIG11c3Qga2VlcCBhIHJlZmVyZW5jZSB0
byB0aGUgRGF0YVNlZ21lbnQgaW5zdGVhZC4KICAgICAgICAgICAgICAgICAvLyBUT0RPOiBjb3Vs
ZCB3ZSBvbmx5IGNyZWF0ZSBhIG5ldyBDTUJsb2NrQnVmZmVyIGlmIHRoZSBiYWNrZW5kIG1lbW9y
eSBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBvbmU/CiAgICAgICAgICAgICAgICAgYXV0byBm
aXJzdFNlZ21lbnQgPSBzaGFyZWRCdWZmZXItPmJlZ2luKCktPnNlZ21lbnQ7CiAgICAgICAgICAg
ICAgICAgc2l6ZV90IGNhblJlYWQgPSBzdGQ6Om1pbjxzaXplX3Q+KG51bVRvUmVhZCwgZmlyc3RT
ZWdtZW50LT5zaXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRh
Q29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
Rm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAppbmRleCBjYzU5NGYzODRlNTYzNWRlZGE4ZjQy
M2Y2ODRkYTViNTU0OTcwNjcxLi41OWQyMTY2NzlkMmZlNGM4MGM2OWFhYTcxZjM5MjFkNjI1N2Fh
YzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4
dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKQEAgLTE1
MSwxMCArMTUxLDEwIEBAIFJldGFpblB0cjxDRlR5cGVSZWY+IEZvbnRQbGF0Zm9ybURhdGE6Om9i
amVjdEZvckVxdWFsaXR5Q2hlY2soKSBjb25zdAogICAgIHJldHVybiBvYmplY3RGb3JFcXVhbGl0
eUNoZWNrKGN0Rm9udCgpKTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZv
bnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90
IHRhYmxlKSBjb25zdAogewogICAgIGlmIChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gYWRv
cHRDRihDVEZvbnRDb3B5VGFibGUoY3RGb250KCksIHRhYmxlLCBrQ1RGb250VGFibGVPcHRpb25O
b09wdGlvbnMpKSkKLSAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
Z2V0KCkpOwogCiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IGIzYzE0ZWM5
YjY5ZDkzZWEwZmYyZmRlZmVlMzIzZWEwNDc0ZGY5ZmQuLjQ2M2IxMzQ2ZGMzNzIzNDVhNDljYjhh
NWI1NjIyZDI2ZDc4NjE0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1C
dWZmZXIuY3BwCkBAIC03MzgsNyArNzM4LDcgQEAgRGlkQ2hhbmdlSXRlbUJ1ZmZlciBJdGVtQnVm
ZmVyOjpzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChzaXplX3QgbnVtYmVyT2ZCeXRlcykKIHZv
aWQgSXRlbUJ1ZmZlcjo6YXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgdGVtcG9yYXJ5SXRl
bSkKIHsKICAgICBhdXRvIHJlcXVpcmVkU2l6ZUZvckl0ZW0gPSBtX3dyaXRpbmdDbGllbnQtPnJl
cXVpcmVkU2l6ZUZvckl0ZW0odGVtcG9yYXJ5SXRlbSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gb3V0T2ZMaW5lSXRlbTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gb3V0
T2ZMaW5lSXRlbTsKICAgICBpZiAoIXJlcXVpcmVkU2l6ZUZvckl0ZW0pIHsKICAgICAgICAgb3V0
T2ZMaW5lSXRlbSA9IG1fd3JpdGluZ0NsaWVudC0+ZW5jb2RlSXRlbU91dE9mTGluZSh0ZW1wb3Jh
cnlJdGVtKTsKICAgICAgICAgaWYgKCFvdXRPZkxpbmVJdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbUJ1ZmZlci5oCmluZGV4IGM4NzMxOTgyZWY4MzkzMWJiYWUzMWI3ODY1MGFj
MGRhMjBhMDVmYzUuLmIzMWJjNWZkNGU5MjE0YjE1YTM3NjFmYmU5OGQ2MGNlYjQ3YTk4ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKQEAgLTEwMiw3ICsxMDIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAg
dmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERp
c3BsYXlMaXN0SXRlbSYpIGNvbnN0CisgICAgdmlydHVhbCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTY4LDcgKzE2OCw3
IEBAIHB1YmxpYzoKICAgICAvLyB3aXRoIHBhZGRpbmcgYmV0d2VlbiBlYWNoIGl0ZW0gdG8gZW5z
dXJlIHRoYXQgYWxsIGl0ZW1zIGFyZSBhbGlnbmVkIHRvIDggYnl0ZXMuCiAgICAgLy8KICAgICAv
LyBJZiBhIHdyaXRpbmcgY2xpZW50IGlzIHByZXNlbnQgYW5kIHJlcXVpcmVzIGN1c3RvbSBlbmNv
ZGluZyBmb3IgdGhlIGdpdmVuIGl0ZW0gdHlwZSBULCB0aGUKLSAgICAvLyBpdGVtIGJ1ZmZlciB3
aWxsIGFzayB0aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgU2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcg
ZW5jb2RlZCBkYXRhIGZvciB0aGUKKyAgICAvLyBpdGVtIGJ1ZmZlciB3aWxsIGFzayB0aGUgY2xp
ZW50IGZvciBhbiBvcGFxdWUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGVuY29k
ZWQgZGF0YSBmb3IgdGhlCiAgICAgLy8gaXRlbS4gVGhpcyBlbmNvZGVkIGRhdGEgaXMgdGhlbiBh
cHBlbmRlZCB0byB0aGUgaXRlbSBidWZmZXIsIHdpdGggcGFkZGluZyB0byBlbnN1cmUgdGhhdAog
ICAgIC8vIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoaXMgZGF0YSBhcmUgYWxpZ25lZCB0byA4IGJ5
dGVzLCBpZiBuZWNlc3NhcnkuIFdoZW4gY29uc3VtaW5nIGVuY29kZWQKICAgICAvLyBpdGVtIGRh
dGEsIGEgY29ycmVzcG9uZGluZyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB3aWxsIGJlIHJlcXVp
cmVkIHRvIGNvbnZlcnQgdGhpcyBlbmNvZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCBjY2RhZGIwZGExMWI1OTg1YTM0Mzg2MTlk
YjBkZjIzMzAxYTcyNWEzLi4yYjQ0M2ZiYmVkMmMxZmRlNDhiY2RlOWNiZTQwOTUzNDk3ZmRlOTEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5j
cHAKQEAgLTM4LDEyICszOCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyB2b2lk
IHJlbGVhc2VDdXN0b21Gb250RGF0YSh2b2lkKiBkYXRhKQogewotICAgIHN0YXRpY19jYXN0PFNo
YXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOworICAgIHN0YXRpY19jYXN0PEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKIH0KIAogc3RhdGljIGNhaXJvX3VzZXJfZGF0
YV9rZXlfdCBmcmVlVHlwZUZhY2VLZXk7CiAKLUZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OkZvbnRD
dXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSBmcmVlVHlwZUZhY2UsIFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQorRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9G
YWNlIGZyZWVUeXBlRmFjZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIDog
bV9mb250RmFjZShhZG9wdFJlZihjYWlyb19mdF9mb250X2ZhY2VfY3JlYXRlX2Zvcl9mdF9mYWNl
KGZyZWVUeXBlRmFjZSwgRlRfTE9BRF9ERUZBVUxUKSkpCiB7CiAgICAgYnVmZmVyLnJlZigpOyAv
LyBUaGlzIGlzIGJhbGFuY2VkIGJ5IHRoZSBidWZmZXItPmRlcmVmKCkgaW4gcmVsZWFzZUN1c3Rv
bUZvbnREYXRhLgpAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBib29sIGluaXRpYWxpemVGcmVl
VHlwZUxpYnJhcnkoRlRfTGlicmFyeSYgbGlicmFyeSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
KQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCiB7CiAg
ICAgc3RhdGljIEZUX0xpYnJhcnkgbGlicmFyeTsKICAgICBpZiAoIWxpYnJhcnkgJiYgIWluaXRp
YWxpemVGcmVlVHlwZUxpYnJhcnkobGlicmFyeSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IGZlZDg1NDBmNGFlYmM4NGM2OWIyOTA4MDY5N2MxMjQ2
MDFkNWI2MjYuLjY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4NjZhOTBjNDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0
Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMjQ5LDcgKzI0OSw3
IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6aGFzQ29tcGF0aWJsZUNoYXJtYXAoKSBjb25zdAog
ICAgICAgICAmJiBGVF9TZWxlY3RfQ2hhcm1hcChmcmVlVHlwZUZhY2UsIGZ0X2VuY29kaW5nX2Fw
cGxlX3JvbWFuKSk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb250UGxh
dGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJs
ZSkgY29uc3QKIHsKICAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3Nj
YWxlZEZvbnQuZ2V0KCkpOwogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VM
b2NrZXIuZnRGYWNlKCk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUp
IGMKICAgICBpZiAoZXJyb3IgfHwgdGFibGVTaXplICE9IGV4cGVjdGVkVGFibGVTaXplKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoZGF0YSkpOwogfQogCiAjaWYgVVNFKEhBUkZCVVpaKSAmJiAhRU5BQkxFKE9QRU5U
WVBFX01BVEgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGI3NDlmYzE1OGRmYWJl
ZmQzYmQ4YzQ1NDk4YmEwYTViMjkzYmY0MDkuLmNkZWQ0YTYwYjUwYmJiYWVhNWI4NDViZGVmYmI2
ODZmZTI1MjU5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC00MjQsOSArNDI0
LDkgQEAgVmVjdG9yPHVpbnQ4X3Q+IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29u
c3QKICAgICByZXR1cm4geyBkYXRhKCksIHNpemUoKSB9OwogfQogCi1SZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCitS
ZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVy
KCkKIHsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsK
KyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogfQogCiBib29sIGlzR1N0
cmVhbWVyUGx1Z2luQXZhaWxhYmxlKGNvbnN0IGNoYXIqIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29t
bW9uLmgKaW5kZXggMmI2MDU5MjM5YmI3ZjBkOGZiZTQ1NjAyNmU1ODJhM2ZjNmYwOWMxNi4uZDgy
Y2QzZTE4ZWNlMDQ3NjFkNmFkNGVjMmQ1MmUyYWQ5ZGMzODQ2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJD
b21tb24uaApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJ
bnRTaXplOwotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKIAogaW5saW5lIGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1aW50IG1ham9yLCBndWlu
dCBtaW5vciwgZ3VpbnQgbWljcm8pCiB7CkBAIC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgogICAg
ICAgICB1bm1hcEVhcmx5KCk7CiAgICAgfQogCi0gICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOworICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNo
YXJlZEJ1ZmZlcigpOwogCiBwcml2YXRlOgogICAgIEdzdE1hcHBlZE93bmVkQnVmZmVyKEdSZWZQ
dHI8R3N0QnVmZmVyPiYmIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1l
ci5jcHAKaW5kZXggMjliM2E1MDFkOGU5YTk2MmEwYzNkMDRmYjI2MTI2ZWE0M2EzNTUyNi4uZGZi
YzU4MGZiOGU5YjMwOTM2Y2NhMDhiYjg4YjQ5YzJiYjY1M2FjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlRGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTgxLDEyICs4MSwxMiBAQCBJbWFnZURlY29kZXJH
U3RyZWFtZXJTYW1wbGUqIHRvU2FtcGxlKEl0ZXJhdG9yIGl0ZXIpCiAgICAgcmV0dXJuIChJbWFn
ZURlY29kZXJHU3RyZWFtZXJTYW1wbGUqKWl0ZXItPnNlY29uZC5nZXQoKTsKIH0KIAotUmVmUHRy
PEltYWdlRGVjb2RlckdTdHJlYW1lcj4gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGUoU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCitSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBJbWFnZURlY29kZXJHU3RyZWFt
ZXI6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKIH0KIAotSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJ
bWFnZURlY29kZXJHU3RyZWFtZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURl
Y29kZXJHU3RyZWFtZXI6OkltYWdlRGVjb2RlckdTdHJlYW1lcihGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pCiAgICAgOiBtX21pbWVUeXBlKG1pbWVUeXBlKQogewogICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKQEAgLTE5OSw3ICsxOTksNyBAQCBQbGF0Zm9y
bUltYWdlUHRyIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBTdQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEltYWdlRGVj
b2RlckdTdHJlYW1lcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wpCit2b2lkIElt
YWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
LCBib29sKQogewogICAgIHB1c2hFbmNvZGVkRGF0YShkYXRhKTsKIH0KQEAgLTQyNiw3ICs0MjYs
NyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJHU3RyZWFtZXI6OklubmVyRGVjb2Rl
cjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogICAgIHJldHVybiBFbmNvZGVkRGF0YVN0YXR1
czo6VW5rbm93bjsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVk
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygp
OwogICAgIG1fZW9zID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgK
aW5kZXggNjZmMzM3Mjg0NmE0ZGY4NzRmNDIwZGI2NTRlNjg5YzllNDNiMGM1Mi4uZDNlZjZhNDVj
ZDdkYmRmYzMxMjBlYTIzZjhkZWIzYzU5OTcxYWU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29k
ZXJHU3RyZWFtZXIuaApAQCAtNDEsOCArNDEsOCBAQCBjbGFzcyBJbWFnZURlY29kZXJHU3RyZWFt
ZXIgZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZURlY29kZXJHU3RyZWFtZXIpOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBjcmVhdGUo
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKLSAgICBJbWFnZURlY29kZXJHU3RyZWFtZXIoU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2RlckdTdHJlYW1l
cj4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIEltYWdlRGVj
b2RlckdTdHJlYW1lcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2aXJ0
dWFsIH5JbWFnZURlY29kZXJHU3RyZWFtZXIoKSA9IGRlZmF1bHQ7CiAKICAgICBzdGF0aWMgYm9v
bCBzdXBwb3J0c01lZGlhVHlwZShNZWRpYVR5cGUgdHlwZSkgeyByZXR1cm4gdHlwZSA9PSBNZWRp
YVR5cGU6OlZpZGVvOyB9CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybUlt
YWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9
IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNv
ZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgdm9p
ZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWwgeyB9Ci0gICAgdm9pZCBz
ZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2
b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9lb3M7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIGZpbmFs
OwogCkBAIC0xMjIsNyArMTIyLDcgQEAgcHJpdmF0ZToKICAgICB9OwogCiAgICAgdm9pZCBoYW5k
bGVTYW1wbGUoR1JlZlB0cjxHc3RTYW1wbGU+JiYpOwotICAgIHZvaWQgcHVzaEVuY29kZWREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgcHVzaEVuY29kZWREYXRhKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIGNvbnN0IEltYWdlRGVjb2RlckdTdHJlYW1l
clNhbXBsZSogc2FtcGxlQXRJbmRleChzaXplX3QpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9X
ZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDVkODZmYjFhZjQ4N2MwMjg5ZTAwMTI1
NTk2NWMzMWRjZGE5NzM0MjYuLjkzMDE5MDk5NDViNGEyM2Q2Njc4MmYzNTBiNTZlNDQ3OWY4MDI2
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC03
MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGll
bnQgdmlydHVhbCBtZXRob2RzLgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNz
Q29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlz
aGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92
ZXJyaWRlOwpAQCAtMTA5Myw3ICsxMDkzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWlu
Z0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb24KICAg
ICBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRDb250aW51ZVBvbGljeUNoZWNrOjpZZXMpOwogfQog
Ci12b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENhY2hl
ZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NS
QyhtX3NyYy5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCmluZGV4IDY5
MmE5OTZkMTljMjRlZmQ5YTQ4NTUyMzczYTU2NzliNTJlMWVmMWMuLjM0OWJmZGNhYWQ2YzdkN2Y4
ZDVhZGEwYTE3MjE5ZmQ5ZTcwNjI2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktl
eS5oCkBAIC02MiwxMSArNjIsMTEgQEAgcHVibGljOgogICAgIENETVByb3h5Q2xlYXJLZXkoKSA9
IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+Q0RNUHJveHlDbGVhcktleSgpOwogCi0gICAgLy8gRklY
TUU6IFRoZXJlJ3MgYSBsYWNrIG9mIGNvbnNpc3RlbmN5IGJldHdlZW4gU2hhcmVkQnVmZmVycywK
KyAgICAvLyBGSVhNRTogVGhlcmUncyBhIGxhY2sgb2YgY29uc2lzdGVuY3kgYmV0d2VlbiBGcmFn
bWVudGVkU2hhcmVkQnVmZmVycywKICAgICAvLyBWZWN0b3I8Y2hhcj4ncyBhbmQge3VpbnQ4X3Qq
LHNpemVfdH0gaWRpb21zIGZvciByZXByZXNlbnRpbmcgYSBjaHVuayBvZgotICAgIC8vIGJ5dGVz
LiBGaXggdGhhdCBzb21laG93LiBOb3RlIFNoYXJlZEJ1ZmZlcnMgYXJlIGRhbmdlcm91cyBzaW5j
ZQorICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBzb21laG93LiBOb3RlIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXJzIGFyZSBkYW5nZXJvdXMgc2luY2UKICAgICAvLyB0aGV5J3JlIG5vdCB0aHJlYWQtc2Fm
ZSBhbmQgdGhpcyBjbGFzcyBtdXN0IG1haW50YWluCi0gICAgLy8gdGhyZWFkLXNhZmV0eSwgYnV0
IG1heWJlIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQgY291bGQgYmUKKyAgICAvLyB0aHJlYWQt
c2FmZXR5LCBidXQgbWF5YmUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQgY291
bGQgYmUKICAgICAvLyBtYWRlIHRvIHdvcmssIGhvd2V2ZXIgdGhhdCBoYXMgemVybyBoZWxwZXJz
IGZvciBkcm9wcGluZyBpbnRvCiAgICAgLy8gaXRlcmF0b3ItYXdhcmUgLyBjb21wYXJhdG9yLWF3
YXJlIGNvbnRhaW5lcnMuLi4KICAgICBzdHJ1Y3QgY2VuY0RlY3J5cHRDb250ZXh0IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
VGh1bmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0NETVRodW5kZXIuY3BwCmluZGV4IDJlZmEwNDM2MGU4ODQ4MzgwNjE0NGMzZDcxZGU2M2Fk
N2I0MmI1NjEuLmMzODkxNmU3ZDA1OWU4ODliNWM4OGVlYjA5ZTBmNGNmYzAzYzFkYjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
VGh1bmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9DRE1UaHVuZGVyLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wgQ0RNUHJpdmF0
ZVRodW5kZXI6OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jv
b2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29u
c3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUgaW5pdERhdGEgYnVmZmVyIGFzIGFuIEpTT04gb2Jq
ZWN0IGluIGtleWlkcyBjYXNlLgogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShpbml0RGF0YVR5cGUsICJrZXlpZHMiKSAmJiBDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVj
dChpbml0RGF0YSkpCkBAIC0yMzcsNyArMjM3LDcgQEAgYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFMK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVU
aHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNv
bnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZVRodW5kZXI6OnNh
bml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKIH0KQEAgLTI2MCw3ICsyNjAsNyBA
QCB2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNv
bnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYQogICAgIGNhbGxiYWNrKFN1Y2NlZWRlZCk7CiB9CiAK
LXZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVk
QnVmZmVyPiYmIGNlcnRpZmljYXRlLCAgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lk
IENETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKICAgICBPcGVuQ0RNRXJyb3IgZXJyb3IgPSBvcGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2Nl
cnRpZmljYXRlKG1fdGh1bmRlclN5c3RlbS5nZXQoKSwgY29uc3RfY2FzdDx1aW50OF90Kj4oY2Vy
dGlmaWNhdGUtPmRhdGEoKSksCiAgICAgICAgIGNlcnRpZmljYXRlLT5zaXplKCkpOwpAQCAtMzI2
LDcgKzMyNiw3IEBAIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNlVGh1bmRl
cjo6Y3JlYXRlU2Vzc2lvbigpCiBjbGFzcyBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgewogCiBwdWJs
aWM6Ci0gICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiBidWZmZXIpCisgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlKGNvbnN0IFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgIHsKICAgICAgICAgaWYgKCFidWZmZXIgfHwg
IWJ1ZmZlci0+c2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzU0LDggKzM1NCw4IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWYWxpZDsg
fQogICAgIGJvb2wgaGFzUGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+
KG1fcGF5bG9hZCk7IH0KLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNv
bnN0JiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KLSAg
ICBSZWY8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpICYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0
dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CisgICAgY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiBwYXlsb2FkKCkgY29uc3QmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3Bh
eWxvYWQudmFsdWUoKTsgfQorICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgcGF5bG9h
ZCgpICYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CiAg
ICAgYm9vbCBoYXNUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlLmhhc192YWx1ZSgpOyB9CiAg
ICAgV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSB0eXBlKCkgY29uc3QgeyBBU1NFUlQobV90
eXBlKTsgcmV0dXJuIG1fdHlwZS52YWx1ZSgpOyB9CiAgICAgV2ViQ29yZTo6TWVkaWFLZXlNZXNz
YWdlVHlwZSB0eXBlT3IoV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSBhbHRlcm5hdGUpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZSA/IG1fdHlwZS52YWx1ZSgpIDogYWx0ZXJuYXRlOyB9CkBAIC0z
NjQsMTEgKzM2NCwxMSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzVmFsaWQg
eyBmYWxzZSB9OwotICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IG1fcGF5bG9h
ZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9wYXls
b2FkOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZT4gbV90
eXBlOwogfTsKIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpjaGFsbGVuZ2VHZW5l
cmF0ZWRDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcjo6Y2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIFBhcnNlZFJlc3BvbnNlTWVz
c2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UoYnVmZmVyKTsKICAgICBpZiAoIXBhcnNlZFJlc3Bv
bnNlTWVzc2FnZSkgewpAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
VGh1bmRlcjo6a2V5c1VwZGF0ZURvbmVDYWxsYmFjaygpCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENh
bGxiYWNrcy5jbGVhcigpOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVy
cm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIG1lc3NhZ2UpCiB7CiAgICAgR1NUX0VSUk9SKCJDRE0gZXJyb3IiKTsKICAgICBH
U1RfTUVNRFVNUCgiZXJyb3IgZHVtcCIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgp
KTsKQEAgLTQ4OCw3ICs0ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVy
cm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogICAgIG1fc2Vzc2lv
bkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25U
aHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhU2hhcmVk
QnVmZmVyLAordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YVNoYXJlZEJ1ZmZlciwKICAgICBM
aWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwpAQCAtNTA2LDcgKzUwNiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0CiAgICAgICAgIG1f
aW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCksIG1faW5pdERhdGEucGF5bG9hZCgpLT5zaXplKCks
IG51bGxwdHIsIDAsICZtX3RodW5kZXJTZXNzaW9uQ2FsbGJhY2tzLCB0aGlzLCAmc2Vzc2lvbik7
CiAgICAgaWYgKCFzZXNzaW9uKSB7CiAgICAgICAgIEdTVF9FUlJPUigiQ291bGQgbm90IGNyZWF0
ZSBzZXNzaW9uIik7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9p
bml0RGF0YS5wYXlsb2FkKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOwogICAgICAgICBjYWxsYmFjayhpbml0
RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCB7IH0sIGZhbHNlLCBGYWlsZWQpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1
bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0CiAK
ICAgICBhdXRvIGdlbmVyYXRlQ2hhbGxlbmdlID0gW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2Fk
KCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1f
aW5pdERhdGEucGF5bG9hZCgpOwogICAgICAgICBpZiAobV9zZXNzaW9uSUQuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICBHU1RfRVJST1IoImNvdWxkIG5vdCBjcmVhdGUgc2Vzc2lvbiBpZCIpOwog
ICAgICAgICAgICAgY2FsbGJhY2soaW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgeyB9LCBmYWxz
ZSwgRmFpbGVkKTsKQEAgLTU0NSwxMyArNTQ1LDEzIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
VGh1bmRlcjo6c2Vzc2lvbkZhaWx1cmUoKQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3Mu
Y2xlYXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENE
TUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25z
ZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSBtX3Nlc3Npb25JRCk7CiAKICAgICBHU1RfVFJBQ0Uo
IlVwZGF0aW5nIHNlc3Npb24gJXMiLCBzZXNzaW9uSUQudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBt
X3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNl
TWVzc2FnZSkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQo
W3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKICAg
ICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAg
ICAgICAgICAgIGlmICghcmVzcG9uc2VNZXNzYWdlKQpAQCAtNTYyLDcgKzU2Miw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNl
c3Npb25JRCwgTGljZW5zZVR5CiAgICAgICAgICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdl
IHBhcnNlZFJlc3BvbnNlTWVzc2FnZShyZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAg
IEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGlmIChwYXJz
ZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5w
YXlsb2FkKCkpOworICAgICAgICAgICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBt
ZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2Fn
ZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAg
ICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LApAQCAtNTg2LDcg
KzU4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24oTGlj
ZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiB7CiAgICAgQVNTRVJUX1VOVVNFRChz
ZXNzaW9uSUQsIHNlc3Npb25JRCA9PSBtX3Nlc3Npb25JRCk7CiAKLSAgICBtX3Nlc3Npb25DaGFu
Z2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
Ym9vbCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0
YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlm
ICghcmVzcG9uc2VNZXNzYWdlKQpAQCAtNTk3LDcgKzU5Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklECiAgICAgICAgICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3Bv
bnNlTWVzc2FnZShyZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJz
ZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1l
c3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwor
ICAgICAgICAgICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9
IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIEdTVF9ERUJVRygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXpl
KCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2Ut
PmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2so
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bWFrZV9wYWlyKHBhcnNlZFJlc3BvbnNl
TWVzc2FnZS50eXBlT3IoTWVkaWFLZXlNZXNzYWdlVHlwZTo6TGljZW5zZVJlcXVlc3QpLApAQCAt
NjQwLDcgKzY0MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vz
c2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2VuCiB7CiAgICAgQVNTRVJUX1VO
VVNFRChzZXNzaW9uSUQsIG1fc2Vzc2lvbklEID09IHNlc3Npb25JRCk7CiAKLSAgICBtX3Nlc3Np
b25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgbXV0YWJs
ZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghYnVmZmVyKQpA
QCAtNjQ5LDcgKzY0OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3Zl
U2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2VuCiAgICAgICAgICAgICAg
ICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShidWZmZXIpOwog
ICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAg
ICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJl
c3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAgICAgICBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdl
LnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygic2Vzc2lvbiAlcyBy
ZW1vdmVkLCBtZXNzYWdlIGxlbmd0aCAlenUiLCBtX3Nlc3Npb25JRC51dGY4KCkuZGF0YSgpLCBt
ZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhtX2tleVN0b3Jl
LmFsbEtleXNBcyhNZWRpYUtleVN0YXR1czo6UmVsZWFzZWQpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBT
dWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
VGh1bmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9DRE1UaHVuZGVyLmgKaW5kZXggY2RkOGRhMjExMjNjMTc5MWFlMmZiNjQzOWZmMmQ2ZmEwZDJl
YjIxYy4uMTAyMGUxNTMyMjcxYjUzNTFlMTA2ZGRlOGYyMWVhNTQwNWE5YzIzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVu
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9DRE1UaHVuZGVyLmgKQEAgLTkzLDggKzkzLDggQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEFu
ZEluaXRpYWxpemUoKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVz
KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7
Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFy
ZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBz
YW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5h
bDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3Ry
aW5nJikgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6CkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGlj
OgogICAgIC8vIENETUluc3RhbmNlCiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0
aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6VGh1bmRl
cjsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVy
c2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmlu
YWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURp
cmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fa2V5U3lzdGVtOyB9CiAgICAgUmVmUHRyPENETUlu
c3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAtMTI2LDggKzEyNiw4IEBA
IGNsYXNzIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXIgZmluYWwgOiBwdWJsaWMgQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHkgewogcHVibGljOgogICAgIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXIo
Q0RNSW5zdGFuY2VUaHVuZGVyJik7CiAKLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vu
c2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9p
ZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZv
aWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYs
IExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29u
c3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1v
dmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRh
dGFDYWxsYmFjayYmKSBmaW5hbDsKQEAgLTE0MSwxNCArMTQxLDE0IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgQ0RNSW5zdGFuY2VUaHVuZGVyKiBjZG1JbnN0YW5jZVRodW5kZXIoKSBjb25zdDsK
IAotICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9IHZvaWQgKENETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OiopKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHVzaW5nIE5vdGlm
aWNhdGlvbiA9IHZvaWQgKENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OiopKFJlZlB0cjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB1c2luZyBDaGFsbGVuZ2VHZW5l
cmF0ZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47Ci0gICAgdXNpbmcgU2Vzc2lvbkNoYW5n
ZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoYm9vbCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik+
OworICAgIHVzaW5nIFNlc3Npb25DaGFuZ2VkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGJvb2ws
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT47CiAKLSAgICB2b2lkIGNoYWxsZW5n
ZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgY2hh
bGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
OwogICAgIHZvaWQga2V5VXBkYXRlZENhbGxiYWNrKEtleUlEVHlwZSYmKTsKICAgICB2b2lkIGtl
eXNVcGRhdGVEb25lQ2FsbGJhY2soKTsKLSAgICB2b2lkIGVycm9yQ2FsbGJhY2soUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBlcnJvckNhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKTsKICAgICBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1cyBzdGF0
dXMoY29uc3QgS2V5SURUeXBlJikgY29uc3Q7CiAgICAgdm9pZCBzZXNzaW9uRmFpbHVyZSgpOwog
CkBAIC0xNTksNyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICBJbml0RGF0YSBtX2luaXREYXRhOwog
ICAgIE9wZW5DRE1TZXNzaW9uQ2FsbGJhY2tzIG1fdGh1bmRlclNlc3Npb25DYWxsYmFja3MgeyB9
OwogICAgIEJveFB0cjxPcGVuQ0RNU2Vzc2lvbj4gbV9zZXNzaW9uOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IG1fbWVzc2FnZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bV9tZXNzYWdlOwogICAgIGJvb2wgbV9uZWVkc0luZGl2aWR1YWxpemF0aW9uIHsgZmFsc2UgfTsK
ICAgICBWZWN0b3I8Q2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2s+IG1fY2hhbGxlbmdlQ2FsbGJh
Y2tzOwogICAgIFZlY3RvcjxTZXNzaW9uQ2hhbmdlZENhbGxiYWNrPiBtX3Nlc3Npb25DaGFuZ2Vk
Q2FsbGJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3Bw
CmluZGV4IGNhYTUwZWQ1YzNjMzk5ODMyMmQ0YTJjMjc2MjU2ZTE4MDFmMWViYjEuLmVhODkwZjY3
ZGEyMTM4N2Y0MGRhNjUxYTBjYTVjNzM0OTNlODRmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdHJ1Y3QgR01hcmt1cFBhcnNlQ29udGV4dFVzZXJEYXRhIHsKICAgICBib29s
IGlzUGFyc2luZ1Bzc2ggeyBmYWxzZSB9OwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBwc3NoOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBzc2g7CiB9OwogCiBzdGF0aWMg
dm9pZCBtYXJrdXBTdGFydEVsZW1lbnQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdjaGFy
KiBlbGVtZW50TmFtZSwgY29uc3QgZ2NoYXIqKiwgY29uc3QgZ2NoYXIqKiwgZ3BvaW50ZXIgdXNl
ckRhdGFQdHIsIEdFcnJvcioqKQpAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgdm9pZCBtYXJrdXBU
ZXh0KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciogdGV4dCwgZ3NpemUgdGV4dExl
bmd0aAogICAgIGlmICh1c2VyRGF0YS0+aXNQYXJzaW5nUHNzaCkgewogICAgICAgICBzdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcHNzaCA9IGJhc2U2NERlY29kZSh0ZXh0LCB0ZXh0TGVu
Z3RoKTsKICAgICAgICAgaWYgKHBzc2guaGFzX3ZhbHVlKCkpCi0gICAgICAgICAgICB1c2VyRGF0
YS0+cHNzaCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpwc3NoKSk7
CisgICAgICAgICAgICB1c2VyRGF0YS0+cHNzaCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1v
dmUoKnBzc2gpKTsKICAgICB9CiB9CiAKQEAgLTcxLDkgKzcxLDkgQEAgc3RhdGljIHZvaWQgbWFy
a3VwRXJyb3IoR01hcmt1cFBhcnNlQ29udGV4dCosIEdFcnJvciosIGdwb2ludGVyKQogCiBzdGF0
aWMgR01hcmt1cFBhcnNlciBtYXJrdXBQYXJzZXIgeyBtYXJrdXBTdGFydEVsZW1lbnQsIG1hcmt1
cEVuZEVsZW1lbnQsIG1hcmt1cFRleHQsIG1hcmt1cFBhc3N0aHJvdWdoLCBtYXJrdXBFcnJvciB9
OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCitSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RDZW5jSWZOZWVkZWQoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCiB7Ci0gICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2VkUGF5bG9hZCk7Cisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2Fk
KTsKICAgICBpZiAoIXBheWxvYWQgfHwgIXBheWxvYWQtPnNpemUoKSkKICAgICAgICAgcmV0dXJu
IHBheWxvYWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCmlu
ZGV4IDdiYjI3NDNhODI4YTFhZjA0YTc5ZWRkNzkzM2YzN2M0NTFmMzJjNTAuLmFiMjY0ZjM3Nzdm
ZDY5ODk3NWU4M2I4ZDdiZjhhYzk2OGIyOWFjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAtNTAsMTMgKzUwLDE3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIEdTVF9DQVRfTEVWRUxfTE9HKHdlYmtpdF9tZWRpYV9jb21tb25fZW5jcnlwdGlvbl9kZWNy
eXB0X2RlYnVnX2NhdGVnb3J5LCBHU1RfTEVWRUxfRVJST1IsIG51bGxwdHIsICJjYW5ub3QgbWFw
ICVzIHByb3RlY3Rpb24gZGF0YSIsIHN5c3RlbUlkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgbV9wYXlsb2FkID0g
ZXh0cmFjdENlbmNJZk5lZWRlZChtYXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkp
OworICAgICAgICBpZiAoYXV0byBwYXJzZWRQYXlsb2FkID0gZXh0cmFjdENlbmNJZk5lZWRlZCht
YXBwZWRJbml0RGF0YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpKQorICAgICAgICAgICAgbV9wYXls
b2FkLmFwcGVuZChwYXJzZWRQYXlsb2FkLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KIAotICAg
IEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYg
cGF5bG9hZCkKKyAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQogICAgICAgICA6IG1fc3lzdGVtSWQoc3lz
dGVtSWQpCi0gICAgICAgICwgbV9wYXlsb2FkKGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZCA/
IHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4oKSkpCiAgICAgeworICAgICAgICBpZiAocGF5bG9hZCkgeworICAgICAgICAgICAgaWYgKGF1
dG8gcGFyc2VkUGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQocGF5bG9hZC0+bWFrZUNvbnRp
Z3VvdXMoKSkpCisgICAgICAgICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZChwYXJzZWRQYXlsb2Fk
LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmQo
SW5pdERhdGEmJiBpbml0RGF0YSkKQEAgLTcyLDEwICs3NiwxMCBAQCBwdWJsaWM6CiAgICAgICAg
IC8vIGl0J3Mgbm90IHZlcnkgcm9idXN0LCBzbyBiZSBjYXJlZnVsIGhlcmUhCiAgICAgICAgIG1f
c3lzdGVtSWQgPSBpbml0RGF0YS5tX3N5c3RlbUlkOwogCi0gICAgICAgIG1fcGF5bG9hZC0+YXBw
ZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOworICAgICAgICBtX3BheWxvYWQuYXBwZW5kKCppbml0
RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAgIGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiBwYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkOyB9CisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQuZ2V0
KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29uc3QgeyByZXR1cm4gbV9zeXN0
ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgpIGNvbnN0CiAgICAgewpA
QCAtODYsMTEgKzkwLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAg
IH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVk
KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3lzdGVtSWQ7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9wYXlsb2FkOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9wYXls
b2FkOwogfTsKIAogY2xhc3MgUHJvdGVjdGlvblN5c3RlbUV2ZW50cyB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBs
YXRmb3JtRGF0YS5jcHAKaW5kZXggNTY0ZTFlNzU0NGE1ODNmNDE4ZTBkZWJlMGUyNWNlNmI0YmY1
NDc5OS4uYmQxMTNiYjZjMjczMWZhMTlhZGRlZmQzM2E5OWQ0NmJiNGExZjRhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtNTIsNyArNTIsNyBAQCBGb250UGxhdGZvcm1EYXRh
IEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2Ny
aXB0aW9uJgogICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKGZvbnQuZ2V0KCksIHNpemUsIGJv
bGQsIGl0YWxpYywgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFudCwgZm9udERlc2NyaXB0aW9uLnRl
eHRSZW5kZXJpbmdNb2RlKCksICZjcmVhdGlvbkRhdGEpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlv
bikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1J
bkNvbGxlY3Rpb24pCiB7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gYnVmZmVyRGF0YSA9IGJ1
ZmZlci5jcmVhdGVDRkRhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggN2Jj
NjY3ZTQ2OWIwMDYxNTFlYjI1Yjc5Yzg4NjlmNzZhMzJmMDA3MS4uNjkyOGE2M2U5NzFjN2MzNWU4
ODQ0ZWVmNzNiZmE0NGE4ZDhjMDMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0z
Niw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRl
eHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmll
ZENhcGFiaWxpdGllczsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGlu
Z3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7
CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlv
bkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAotV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRy
PEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRo
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZU1hdGhEYXRhLmNwcAppbmRleCBiNDE3OTIzZTZkNzVmOTNjZmQxZTRjYzMxZjg1MDM2ZTFj
NjJmNGMyLi41ZDg4Y2Q3NzY4OThjMDVhOTAzNTg5ZTJkNGJhYzczMGFhMWRmOTkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1h
dGhEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZU1hdGhEYXRhLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3QgTWF0aEl0YWxp
Y3NDb3JyZWN0aW9uSW5mbyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUlu
dDE2IGl0YWxpY3NDb3JyZWN0aW9uQ291bnQ7CiAgICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29y
ZCBpdGFsaWNzQ29ycmVjdGlvblsxXTsgLy8gVGhlcmUgYXJlIGl0YWxpY3NDb3JyZWN0aW9uQ291
bnQgaXRhbGljIGNvcnJlY3Rpb24gdmFsdWVzLgogCi0gICAgaW50MTZfdCBnZXRJdGFsaWNDb3Jy
ZWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgp
IGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNv
dW50ID0gdWludDE2X3QoaXRhbGljc0NvcnJlY3Rpb25Db3VudCk7CiAgICAgICAgIGlmICghaXNW
YWxpZEVuZChidWZmZXIsICZpdGFsaWNzQ29ycmVjdGlvbltjb3VudF0pKQpAQCAtOTMsNyArOTMs
NyBAQCBzdHJ1Y3QgTWF0aEdseXBoSW5mbyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVu
VHlwZTo6T2Zmc2V0IGV4dGVuZGVkU2hhcGVDb3ZlcmFnZU9mZnNldDsKICAgICBPcGVuVHlwZTo6
T2Zmc2V0IG1hdGhLZXJuSW5mb09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVj
dGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbklu
Zm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoSXRhbGljc0NvcnJl
Y3Rpb25JbmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMTIwLDcgKzEyMCw3IEBA
IHN0cnVjdCBHbHlwaEFzc2VtYmx5IDogVGFibGVCYXNlIHsKICAgICAgICAgUGFydEZsYWdzRXh0
ZW5kZXIgPSAweDAxCiAgICAgfTsKIAotICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpB
c3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQ
YXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6
OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50
MTZfdCBjb3VudCA9IHBhcnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwg
JnBhcnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNDMsNyArMTQzLDcgQEAgc3RydWN0IE1hdGhHbHlw
aENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgYWR2
YW5jZU1lYXN1cmVtZW50OwogICAgIH0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNbMV07IC8vIFRo
ZXJlIGFyZSB2YXJpYW50Q291bnQgTWF0aEdseXBoVmFyaWFudFJlY29yZCdzLgogCi0gICAgdm9p
ZCBnZXRTaXplVmFyaWFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBW
ZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKKyAgICB2b2lkIGdldFNpemVWYXJpYW50cyhj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0
CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHZhcmlhbnRDb3VudDsKICAgICAgICAg
aWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2NvdW50XSkp
CkBAIC0xNTMsNyArMTUzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxl
QmFzZSB7CiAgICAgICAgICAgICB2YXJpYW50c1tpXSA9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRz
W2ldLnZhcmlhbnRHbHlwaDsKICAgICB9CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0
YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2Vt
Ymx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhE
YXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAg
dWludDE2X3Qgb2Zmc2V0ID0gZ2x5cGhBc3NlbWJseU9mZnNldDsKICAgICAgICAgY29uc3QgR2x5
cGhBc3NlbWJseSogZ2x5cGhBc3NlbWJseSA9IHZhbGlkYXRlT2Zmc2V0PEdseXBoQXNzZW1ibHk+
KGJ1ZmZlciwgb2Zmc2V0KTsKQEAgLTE3MCw3ICsxNzAsNyBAQCBzdHJ1Y3QgTWF0aFZhcmlhbnRz
IDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgaG9yaXpvbnRhbEds
eXBoQ291bnQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zm
c2V0WzFdOyAvLyBUaGVyZSBhcmUgdmVydGljYWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNv
bnRydWN0aW9ucyBhbmQgaG9yaXpvbnRhbEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29udHJ1
Y3Rpb25zLgogCi0gICAgY29uc3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25z
dHJ1Y3Rpb24oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlw
aCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlv
biogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlw
aCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDMyX3Qg
Y291bnQgPSB1aW50MTZfdCh2ZXJ0aWNhbEdseXBoQ291bnQpICsgdWludDE2X3QoaG9yaXpvbnRh
bEdseXBoQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBo
Q29uc3RydWN0aW9uc09mZnNldFtjb3VudF0pKQpAQCAtMjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBN
QVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoSW5m
b09mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhWYXJpYW50c09mZnNldDsKIAotICAg
IGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25z
dGFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1
aW50MTZfdCBvZmZzZXQgPSBtYXRoQ29uc3RhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0
KQpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBt
YXRoR2x5cGhJbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
KyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEds
eXBoSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIyMCw3ICsyMjAsNyBAQCBz
dHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgY29uc3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhWYXJpYW50cyog
bWF0aFZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aFZhcmlhbnRzT2Zmc2V0OwogICAgICAgICBpZiAo
b2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCmluZGV4IDNmZjY2ZDMxMTgyZTVjNGIzNmRk
M2YzMzA3YTY4NGI5NWQ5NTkzZTMuLjI5OTBiZmIwM2Y1NjE5NDU3N2ZkZDQ0NzZmMTQ0OTRhYjE4
MDM1Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlTWF0aERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250OwogCiBjbGFz
cyBPcGVuVHlwZU1hdGhEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8T3BlblR5cGVNYXRoRGF0YT4g
ewpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgT3BlblR5cGVNYXRo
RGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7CiAKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFU
SCkKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOworICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsKICNlbGlmIFVTRShIQVJGQlVaWikK
ICAgICBIYlVuaXF1ZVB0cjxoYl9mb250X3Q+IG1fbWF0aEZvbnQ7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlw
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VHlwZXMuaAppbmRleCAzMDQ5NjNhNWRlOTBjODFjOGQ2MzA5MTI2Nzc4ODc1MzFkODZkMmFmLi5j
ODY0YjJjM2E4ZmIxYWUzNzYzMDkzZWU1MDU1YjM2NTFlZjAxMjZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBl
cy5oCkBAIC03Myw3ICs3Myw3IEBAIHR5cGVkZWYgVUludDE2IEdseXBoSUQ7CiB0eXBlZGVmIHVp
bnQzMl90IFRhZzsKICNkZWZpbmUgT1RfTUFLRV9UQUcoY2gxLCBjaDIsIGNoMywgY2g0KSAoKCgo
dWludDMyX3QpKGNoNCkpIDw8IDI0KSB8ICgoKHVpbnQzMl90KShjaDMpKSA8PCAxNikgfCAoKCh1
aW50MzJfdCkoY2gyKSkgPDwgOCkgfCAoKHVpbnQzMl90KShjaDEpKSkKIAotdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiBidWZmZXIsIHNpemVfdCBjb3VudCA9IDEpCiB7CiAgICAgaWYgKCFidWZm
ZXIgfHwgYnVmZmVyLT5zaXplKCkgPCBzaXplb2YoVCkgKiBjb3VudCkKICAgICAgICAgcmV0dXJu
IDA7CkBAIC04Miw3ICs4Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3Qg
VCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8Q29udGlndW91c1NoYXJlCiAKIHN0cnVjdCBU
YWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKKyAg
ICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlvbiA8IGJ1ZmZlci5k
YXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJl
Y2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgY29uc3QgVCog
Y2FzdGVkID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocG9zaXRpb24pOwogICAgICAgICBp
ZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmY2FzdGVkWzFdKSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICByZXR1cm4gY2FzdGVkOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0
ZVB0cjxUPihidWZmZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90Kj4odGhpcykgKyBv
ZmZzZXQpOwogICAgIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgQ292ZXJhZ2UyVGFibGUg
OiBDb3ZlcmFnZVRhYmxlIHsKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKIHN0cnVjdCBUYWJs
ZVdpdGhDb3ZlcmFnZSA6IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBnZXRDb3Zl
cmFnZUluZGV4KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292
ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRl
eCkgY29uc3QKKyAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMy
X3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvdmVyYWdl
LT5jb3ZlcmFnZUZvcm1hdCkgewogICAgICAgICBjYXNlIDE6IHsgLy8gQ292ZXJhZ2UgRm9ybWF0
IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAppbmRleCAzY2E3MjdhYWZiZDJjYWQ0YmUx
MDZmMWRjNGMzZjJlN2RkNDQ4MDVmLi4zMjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNi
ZjkyZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0xOTksNyArMTk5LDcg
QEAgdm9pZCBFT1RIZWFkZXI6OmFwcGVuZFBhZGRpbmdTaG9ydCgpCiAKIC8vIGFkZHMgZm9udE5h
bWUgdG8gdGhlIGZvbnQgdGFibGUgaW4gZm9udERhdGEsIGFuZCB3cml0ZXMgdGhlIG5ldyBmb250
IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUg
bmFtZSB0YWJsZSAod2hpY2ggaXMgdXNlZCBieSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQpLCBvciAw
IG9uIGVhcmx5IGFib3J0Ci1ib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYg
cmV3cml0dGVuRm9udERhdGEpCitib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBm
b250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0
ZW5Gb250RGF0YSkKIHsKICAgICBzaXplX3Qgb3JpZ2luYWxEYXRhU2l6ZSA9IGZvbnREYXRhLnNp
emUoKTsKICAgICBjb25zdCBzZm50SGVhZGVyKiBzZm50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBzZm50SGVhZGVyKj4oZm9udERhdGEuZGF0YSgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29s
IHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0
IFN0cmluZyYgZm9udE5hbWUsCiB9CiAKIC8vIFJlbmFtZSB0aGUgZm9udCBhbmQgaW5zdGFsbCB0
aGUgbmV3IGZvbnQgZGF0YSBpbnRvIHRoZSBzeXN0ZW0KLVJlZlB0cjxGb250TWVtb3J5UmVzb3Vy
Y2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBm
b250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKK1JlZlB0cjxGb250TWVtb3J5UmVzb3Vy
Y2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBj
b25zdCBTdHJpbmcmIGZvbnROYW1lKQogewogICAgIFZlY3Rvcjx1aW50OF90PiByZXdyaXR0ZW5G
b250RGF0YTsKICAgICBpZiAoIXJlbmFtZUZvbnQoZm9udERhdGEsIGZvbnROYW1lLCByZXdyaXR0
ZW5Gb250RGF0YSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAppbmRleCAyMmJlMjMwYTYwNWM2
NmEwZWY1YmMxNDhhMjYyNzk3ZDM3MmMyYWM0Li5mYTAwMDgxMTYwNjY5N2RjNWM1MTEyMzMzYzkw
YzhjOTJiNGI2NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTM1LDEwICszNSwx
MCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5kaWFuVVNob3J0OwotY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBF
T1RQcmVmaXg7CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgRU9USGVhZGVyIHsKICAg
ICBFT1RIZWFkZXIoKTsKQEAgLTU1LDggKzU1LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWlu
dDhfdCwgNTEyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7Ci1SZWZQ
dHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworYm9vbCByZW5hbWVGb250KGNvbnN0
IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOworUmVmUHRy
PEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1
ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VmVydGljYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAppbmRleCA3OWU5ZWZlMDYwNTMzNTc5ZTljYTNi
YzEwMzIzOGJmZDI4MmY3MTVjLi4wZmE4ZjMwNmFkOTUyZDA2YTA5Mjk3ZDBiMWQyODdiODk4ODMy
YTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlw
ZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0xMTYsNyArMTE2
LDcgQEAgc3RydWN0IFN1YnN0aXR1dGlvblN1YlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVu
VHlwZTo6VUludDE2IHN1YnN0Rm9ybWF0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgY292ZXJhZ2VP
ZmZzZXQ7CiAKLSAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENv
dmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9CisgICAgY29uc3QgQ292ZXJh
Z2VUYWJsZSogY292ZXJhZ2UoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0
dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQp
OyB9CiB9OwogCiBzdHJ1Y3QgU2luZ2xlU3Vic3RpdHV0aW9uMlN1YlRhYmxlIDogU3Vic3RpdHV0
aW9uU3ViVGFibGUgewpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0cnVjdCBMb29rdXBUYWJsZSA6IFRh
YmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNbMV07CiAgICAg
Ly8gT3BlblR5cGU6OlVJbnQxNiBtYXJrRmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxkIGNvbWVzIGFm
dGVyIHZhcmlhYmxlIGxlbmd0aCwgc28gb2Zmc2V0IGlzIGRldGVybWluZWQgZHluYW1pY2FsbHku
CiAKLSAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAs
IGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdl
dFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnRTdWJUYWJs
ZSA9IHN1YlRhYmxlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzdWJU
YWJsZU9mZnNldHNbY291bnRTdWJUYWJsZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0cnVjdCBM
b29rdXBMaXN0IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50
OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwT2Zmc2V0c1sxXTsKIAotICAgIGNvbnN0IExv
b2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMb29rdXBUYWJsZSogbG9va3VwKHVpbnQx
Nl90IGluZGV4LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBj
b3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBPZmZzZXRzW2NvdW50XSkpCkBAIC0y
MDgsNyArMjA4LDcgQEAgc3RydWN0IEZlYXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3Bl
blR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cExp
c3RJbmRleFsxXTsKIAotICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1
cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1
dGlvbnMoY29uc3QgTG9va3VwTGlzdCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBt
YXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWlu
dDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZl
ciwgJmxvb2t1cExpc3RJbmRleFtjb3VudF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0cnVjdCBG
ZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVy
ZU9mZnNldDsKICAgICB9IGZlYXR1cmVzWzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBm
ZWF0dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVh
dHVyZSh1aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJl
Q291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIs
ICZmZWF0dXJlc1tjb3VudF0pKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlz
dCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IEZl
YXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZp
bmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBmZWF0dXJlQ291
bnQ7ICsraSkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNb
aV0pICYmIGZlYXR1cmVzW2ldLmZlYXR1cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcgKzI1NSw3IEBA
IHN0cnVjdCBMYW5nU3lzVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYg
ZmVhdHVyZUNvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUluZGV4WzFdOwogCi0g
ICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywg
Y29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBl
OjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0g
ZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZUlu
ZGV4W2NvdW50XSkpCkBAIC0yNzcsNyArMjc3LDcgQEAgc3RydWN0IFNjcmlwdFRhYmxlIDogVGFi
bGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0OwogICAgIH0g
bGFuZ1N5c1JlY29yZHNbMV07CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5n
U3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25z
dCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsYW5nU3lzQ291bnQ7CiAg
ICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tjb3VudF0pKQpA
QCAtMjk4LDcgKzI5OCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAg
ICAgT3BlblR5cGU6Ok9mZnNldCBzY3JpcHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRzWzFdOwogCi0g
ICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxl
KiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAg
ICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMxMCw3ICsz
MTAsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJs
ZSogZGVmYXVsdFNjcmlwdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7
CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghY291
bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzIxLDcgKzMy
MSw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHZh
bGlkYXRlT2Zmc2V0PFNjcmlwdFRhYmxlPihidWZmZXIsIHNjcmlwdHNbMF0uc2NyaXB0T2Zmc2V0
KTsKICAgICB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lz
VGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdFRhYmxlID0gZGVmYXVsdFNj
cmlwdChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2LDExICszMzYs
MTEgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNl
dCBmZWF0dXJlTGlzdE9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cExpc3RPZmZz
ZXQ7CiAKLSAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0
TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IEZlYXR1cmVMaXN0
KiBmZWF0dXJlTGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0
T2Zmc2V0KTsgfQotICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxM
b29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgU2NyaXB0
TGlzdCogc2NyaXB0TGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1
cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsg
fQorICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZl
ciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgTG9va3VwTGlzdCogbG9va3VwTGlz
dChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZz
ZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQogCi0gICAgY29uc3Qg
TGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNj
cmlwdExpc3QqIHNjcmlwdHMgPSBzY3JpcHRMaXN0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2Ny
aXB0cykKQEAgLTM0OCw3ICszNDgsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsK
ICAgICAgICAgcmV0dXJuIHNjcmlwdHMtPmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgfQog
Ci0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRh
ZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0
IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgTGFuZ1N5c1Rh
YmxlKiBsYW5nU3lzID0gZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICAgICAgY29uc3QgRmVh
dHVyZUxpc3QqIGZlYXR1cmVzID0gZmVhdHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2NSw3ICszNjUs
NyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIGZlYXR1
cmU7CiAgICAgfQogCi0gICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNo
TWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1h
cDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgY29uc3QgRmVhdHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1cmVUYWJsZSA9
IGZlYXR1cmUoT3BlblR5cGU6OlZlcnRGZWF0dXJlVGFnLCBidWZmZXIpOwogICAgICAgICBpZiAo
IXZlcnRpY2FsRmVhdHVyZVRhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaAppbmRleCBhNjI3MTli
MTcxOWE3NGY5NzY5MjIxOWRmNWY3YWFlZGM0OTA2NDY2Li4wZGI0YWZhZGIzZjc0MmI4M2E0ZTE2
Y2YzNzE4NzBhMmIwNDA0ZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaApAQCAtNDMsNyArNDMs
NyBAQCBlbnVtIERXUklURV9GT05UX1NUUkVUQ0g7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgRGlyZWN0V3JpdGUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggOGJlMWIxYTMzYTYyMDVjMTgxY2VmZjFhYzM0MzRiYzg3
YTc4M2JlNS4uYzg2ODNhN2VmNTg5YzNmZTY1NGQ4NDU3MTI5NWUyNDBkMjI0NDllNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBTdHJp
bmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0
ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0
ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3Rp
dmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRl
eCBmYzA0ZjE3NWM3ODhiOWJlOTk4ZjVmM2I3MTFmNTk3YzAyNmJiZjllLi4wOGZjOWYxOWVhZWE5
NDgzZWE1OGVjMWFlZWRkNDU3MjU2Y2UyN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
QEAgLTM2LDEzICszNiwxMyBAQCB0eXBlZGVmIHN0cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xh
c3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnRE
ZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKIHN0cnVjdCBGb250U2VsZWN0
aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250
VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpAQCAtNjUsNyArNjUsNyBA
QCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0
YTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJp
bmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggZjRmYmY3YTdmNGQ3
YzgzZmYyMTE2YzMxZTU0NmNhOTFlMDU4OWNiMS4uM2MxZDRlMmYzYzc1NGE3M2E4MjNhMDBjMTY3
NGVjMzA0NDkzMTEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAK
QEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAg
ICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRm
b3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7
CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRv
IGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxh
dGZvcm1EYXRhQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKaW5kZXggNGM2NzRjNDc0M2JjMDExOGE5
NzAxMGNjNjkyODliNTg2ZGJiMGNkMS4uMzFhMWU1YzUzMWYyMDkwM2M1Y2ZiMzI4NjBiYTVlZjIw
NjRlOTNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKQEAgLTk4LDcgKzk4
LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgICAgICYmIG1fdXNlR0RJID09IG90aGVyLm1f
dXNlR0RJOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxTaGFyZWRC
dWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3Jt
RGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBs
YXRmb3JtRGF0YVdpbi5jcHAKaW5kZXggNDM5Y2Y4NjNiODczZGM5Y2Y3ZjgxMDU5OWU1YTYwMWU3
ZjczNzk5Ny4uNmNiNTUxMTA0YTkzYmRiZDIyYjQxN2E0NTQ2ZDIwZmFkMGUyYTM0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURh
dGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
UGxhdGZvcm1EYXRhV2luLmNwcApAQCAtNTksMTggKzU5LDE4IEBAIEZvbnRQbGF0Zm9ybURhdGE6
OkZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiBmb250LCBmbG9hdCBzaXplLCBib29s
IGJvbGQsCiAgICAgUmVzdG9yZURDKGhkYywgLTEpOwogfQogCi1SZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6
cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIEhXbmRE
QyBoZGMoMCk7CiAgICAgSEdESU9CSiBvbGRGb250ID0gU2VsZWN0T2JqZWN0KGhkYywgaGZvbnQo
KSk7CiAKICAgICBEV09SRCBzaXplID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgMCwgMCk7
Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKHNpemUgIT0gR0RJX0VSUk9SKSB7CiAgICAg
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKHNpemUpOwogICAgICAgICBEV09SRCByZXN1bHQgPSBH
ZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAoUFZPSUQpZGF0YS5kYXRhKCksIHNpemUpOwogICAg
ICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IHNpemUpOwotICAgICAgICBidWZm
ZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAg
ICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIH0K
IAogICAgIFNlbGVjdE9iamVjdChoZGMsIG9sZEZvbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5j
cHAKaW5kZXggNjI5ZTBlNjFhMTA0YzU2N2ExZDRlZGNiN2U1Nzk3ZGNmNjdjNmU4ZS4uNzczNTcz
OWI5MzM0ZjQ0ZDk5YTNmMTJmZmM1YmY3YjQxZjdjYzZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuY3BwCkBAIC0yNzIsNyArMjcyLDcgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJE
aXJlY3QyRDo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWIKICAgICBy
ZXR1cm4gYml0bWFwOwogfQogCi12b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2Rl
ckRpcmVjdDJEOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogewogICAgIGlmICghYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VEZWNvZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCmluZGV4IDRmNDcyNTg2YjQyNGJkYTFjZjZmYTAxNDNj
YmEyM2QwMzAwMTZlNDUuLmMyMzY1ZmQ3NDRjNjExOGMxOTk5ZTA1YjgwMmVkNWI0OGYzNjQ4MjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURl
Y29kZXJEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEltYWdlRGVj
b2RlckRpcmVjdDJEIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6CiAgICAg
SW1hZ2VEZWNvZGVyRGlyZWN0MkQoKTsKIAotICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyRGly
ZWN0MkQ+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJEaXJlY3QyRD4gY3JlYXRl
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29k
ZXJEaXJlY3QyRCgpKTsKICAgICB9CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIFBs
YXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25z
JiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAK
LSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZp
bmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1l
QnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAKaW5kZXggMGQ4ODIwZTlmM2Q2ZmQ3NzM1
ZDU3MGIzNjQxNDg4ZjUzYmQ3ZWNlOS4uMmQ5NzI3MGE3MzQ4MzQ4OTNlNzhjODFmZjBlYzViYjVk
ZmVjM2Y4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VXaW4uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAKIC8vIFRoaXMgZnVuY3Rpb24gbG9hZHMgcmVzb3VyY2VzIGZyb20gV2ViS2l0Ci1SZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIq
KTsKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJ
bnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAppbmRleCA3ZTNiMzYzMmI5MGM2
MTk0MTVlNDhhNTJhMjI1OGIxNDJlMDAxYTU3Li5jZjJiNTFmNmYwMjgzN2ExMTA2ZjRkOTk5ZjJm
MTMwZTI1ODA5ODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Vs
ZWN0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25E
YXRhLmgKQEAgLTYwLDggKzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FuU21hcnRSZXBs
YWNlKGJvb2wgY2FuU21hcnRSZXBsYWNlKSB7IG1fY2FuU21hcnRSZXBsYWNlID0gY2FuU21hcnRS
ZXBsYWNlOyB9CiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2UoKSBjb25zdCB7IHJldHVybiBtX2Nh
blNtYXJ0UmVwbGFjZTsgfQogCi0gICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7
IH0KLSAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CisgICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsgfQor
ICAgIFNoYXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tRGF0
YS5nZXQoKTsgfQogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9j
dXN0b21EYXRhOyB9CiAgICAgdm9pZCBjbGVhckN1c3RvbURhdGEoKSB7IG1fY3VzdG9tRGF0YSA9
IG51bGxwdHI7IH0KIApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJp
bmc+IG1fZmlsZW5hbWVzOwogICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKICAgICBib29sIG1f
Y2FuU21hcnRSZXBsYWNlIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gbV9jdXN0b21EYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0
YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVy
LmNwcAppbmRleCBkOTU2ZDllNzYyNWQ1YmI1YTcwZjA2OTNlNzc5OGVlOTA4NDlmMTY1Li4zM2M5
NWVjMzMzM2E5MjBjNjRhMDE4MTc1MWViNGE1MDVlZjFhN2FiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFn
ZURlY29kZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFt
ZXNwYWNlIHsKIAotc3RhdGljIHVuc2lnbmVkIGNvcHlGcm9tU2hhcmVkQnVmZmVyKGNoYXIqIGJ1
ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoLCBjb25zdCBTaGFyZWRCdWZmZXImIHNoYXJlZEJ1
ZmZlcikKK3N0YXRpYyB1bnNpZ25lZCBjb3B5RnJvbVNoYXJlZEJ1ZmZlcihjaGFyKiBidWZmZXIs
IHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hh
cmVkQnVmZmVyKQogewogICAgIHVuc2lnbmVkIGJ5dGVzRXh0cmFjdGVkID0gMDsKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBzaGFyZWRCdWZmZXIpIHsKQEAgLTEzNSw3ICsxMzUsNyBA
QCBib29sIG1hdGNoZXNDVVJTaWduYXR1cmUoY2hhciogY29udGVudHMpCiAKIH0KIAotUmVmUHRy
PFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPFNjYWxhYmxlSW1h
Z2VEZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgbGVuZ3RoT2ZMb25nZXN0U2lnbmF0dXJlID0gMTQ7IC8vIFRvIHdpdDogIlJJRkY/
Pz8/V0VCUFZQIgogICAgIGNoYXIgY29udGVudHNbbGVuZ3RoT2ZMb25nZXN0U2lnbmF0dXJlXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxh
YmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IDNjNmEzYTUwYzgyMDk2NGU4YTliMDc0OTAx
YTkyYjNmM2M0Nzg5YjcuLjljNDA1NTc4MjQxZDBjNTEyNzAyOTUxNWMyMjEyNjU4ZjhjNGY2OGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxh
YmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBSZXR1cm5zIG51bGxwdHIgaWYgd2UgY2FuJ3Qgc25pZmYgYSBzdXBwb3J0ZWQgdHlw
ZSBmcm9tIHRoZSBwcm92aWRlZCBkYXRhIChwb3NzaWJseQogICAgIC8vIGJlY2F1c2UgdGhlcmUg
aXNuJ3QgZW5vdWdoIGRhdGEgeWV0KS4KLSAgICBzdGF0aWMgUmVmUHRyPFNjYWxhYmxlSW1hZ2VE
ZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8U2NhbGFibGVJbWFnZURlY29k
ZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkg
Y29uc3QgeyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhhOyB9CiAKQEAgLTcwLDcgKzcwLDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0
YVN0YXR1czo6Q29tcGxldGU7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlCisgICAgdm9pZCBzZXREYXRh
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBp
ZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCkBAIC0x
OTQsNyArMTk0LDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNw
b3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogcHJvdGVjdGVk
OgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CiAgICAgVmVj
dG9yPFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUsIDE+IG1fZnJhbWVCdWZmZXJDYWNoZSBXVEZf
R1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CiAgICAgbXV0YWJsZSBMb2NrIG1fbG9jazsKICAgICBi
b29sIG1fcHJlbXVsdGlwbHlBbHBoYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcAppbmRl
eCA3YzYwM2ZkODM1OGMyMTRhYzkxODRmMzE4OTk3MmZlODQxYjYxZTgwLi4yNmY4ODY0OTZlNWE1
YTE0ZTI4YWZiMWFmYTliZmMzMDE3N2Y1MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIu
Y3BwCkBAIC00MSw3ICs0MSw3IEBAIEFWSUZJbWFnZVJlYWRlcjo6QVZJRkltYWdlUmVhZGVyKFJl
ZlB0cjxBVklGSW1hZ2VEZWNvZGVyPiYmIGRlY29kZXIpCiAKIEFWSUZJbWFnZVJlYWRlcjo6fkFW
SUZJbWFnZVJlYWRlcigpID0gZGVmYXVsdDsKIAotYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNl
SGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQorYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKIHsKICAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01lbW9yeShtX2F2aWZEZWNvZGVyLmdldCgp
LCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpICE9IEFWSUZfUkVTVUxUX09LKQogICAgICAgICBy
ZXR1cm4gYWxsRGF0YVJlY2VpdmVkID8gbV9kZWNvZGVyLT5zZXRGYWlsZWQoKSA6IGZhbHNlOwpA
QCAtNTgsNyArNTgsNyBAQCBib29sIEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29uc3Qg
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBhbAogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIEFWSUZJbWFnZVJlYWRlcjo6ZGVjb2RlRnJhbWUoc2l6ZV90IGZyYW1lSW5k
ZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmIGJ1ZmZlciwgY29uc3QgU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudCYgZGF0YSkKK3ZvaWQgQVZJRkltYWdlUmVhZGVyOjpkZWNvZGVGcmFtZShz
aXplX3QgZnJhbWVJbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYgYnVmZmVyLCBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkKIHsKICAgICBpZiAo
bV9kZWNvZGVyLT5mYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVh
ZGVyLmgKaW5kZXggY2JjYTBiOGMxMjRiZmYwZmZjMzMwMWJhMzViY2UwMWVkMjcyMmRmOC4uNDk2
ZjY5ZjgxMmJkNzViMGVkYTYzNTdiYWE4NjBjZmNjYjViYTRiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFn
ZVJlYWRlci5oCkBAIC0zOSw4ICszOSw4IEBAIHB1YmxpYzoKICAgICBBVklGSW1hZ2VSZWFkZXIo
UmVmUHRyPEFWSUZJbWFnZURlY29kZXI+JiYpOwogICAgIH5BVklGSW1hZ2VSZWFkZXIoKTsKIAot
ICAgIGJvb2wgcGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIGRlY29kZUZyYW1lKHNpemVfdCBpbmRleCwg
U2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQmKTsKKyAgICBib29sIHBhcnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgZGVjb2RlRnJh
bWUoc2l6ZV90IGluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiwgY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKTsKICAgICBzaXplX3QgaW1hZ2VDb3VudCgp
IGNvbnN0OwogICAgIGRvdWJsZSByZXBldGl0aW9uQ291bnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVj
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3Mjc2OWE2OTI2ZWMyNDE5YmY2NjM4MjUyOGQzZDc3MjBh
NTRhZGFlLi5mNzQ1NWMxNDZjN2U4YWViMDRjYzhjNTZmMzMwZTJhMDFmM2JhNzJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VE
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9i
bXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDYsNyArNDYsNyBAQCBCTVBJbWFnZURlY29kZXI6
OkJNUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcAogewogfQogCi12b2lkIEJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZm
ZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBCTVBJbWFnZURlY29kZXI6OnNl
dERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNv
ZGVyLmgKaW5kZXggYzdjN2NhODFmZWE2YjhhNzc0YmIzMDhlNTM4ZGNkMDQ4Yzk5NWVlYS4uNjRk
ZWQ2YWJiZTJjMGEyOWIxMWY5ZmI1ZWNkNmI0ODcyNGQ1ODk3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURl
Y29kZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdl
RGVjb2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuICJibXAiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIFNjYWxhYmxlSW1hZ2VEZWNv
ZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIGZpbmFsOwogICAgIC8v
IENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gQmUgY2FyZWZ1bCB0byBh
dm9pZAogICAgIC8vIGFjY2Vzc2luZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxseSB3aGVuIGNh
bGxpbmcgdGhpcyBmcm9tIGluc2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaAppbmRleCA0ODQ0ZjM4
MGRjMTdlYzcwNDU4OGZiMTJmNTNlYWJjNmQyMGU2MGY0Li5iZDQzMGU4YThiZWEyYzgxNmIyYzUy
MmJmNWJhNzg4NDZjMzhlMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaApAQCAtNDIsNyArNDIs
NyBAQCBjbGFzcyBCTVBJbWFnZVJlYWRlciB7CiBwdWJsaWM6CiAgICAgLy8gUmVhZCBhIHZhbHVl
IGZyb20gfGRhdGFbb2Zmc2V0XXwsIGNvbnZlcnRpbmcgZnJvbSBsaXR0bGUgdG8gbmF0aXZlCiAg
ICAgLy8gZW5kaWFubmVzcy4KLSAgICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJlYWRVaW50MTYo
Y29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkKKyAgICBz
dGF0aWMgaW5saW5lIHVpbnQxNl90IHJlYWRVaW50MTYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQpCiAgICAgewogICAgICAgICB1aW50
MTZfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNweSgmcmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0
XSwgMik7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKLSAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29uc3QgU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkKKyAgICBzdGF0aWMgaW5s
aW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQpCiAgICAgewogICAgICAgICB1aW50MzJfdCByZXN1
bHQ7CiAgICAgICAgIG1lbWNweSgmcmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgNCk7CkBA
IC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBCTVBJbWFnZVJlYWRlcihTY2FsYWJsZUltYWdl
RGVjb2RlciogcGFyZW50LCBzaXplX3QgZGVjb2RlZEFuZEhlYWRlck9mZnNldCwgc2l6ZV90IGlt
Z0RhdGFPZmZzZXQsIGJvb2wgdXNlc0FuZE1hc2spOwogCiAgICAgdm9pZCBzZXRCdWZmZXIoU2Nh
bGFibGVJbWFnZURlY29kZXJGcmFtZSogYnVmZmVyKSB7IG1fYnVmZmVyID0gYnVmZmVyOyB9Ci0g
ICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRh
ID0gJmRhdGE7IH0KKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KIAogICAgIC8vIERvZXMgdGhlIGFj
dHVhbCBkZWNvZGluZy4gSWYgfG9ubHlTaXplfCBpcyB0cnVlLCBkZWNvZGluZyBvbmx5CiAgICAg
Ly8gcHJvZ3Jlc3NlcyBhcyBmYXIgYXMgbmVjZXNzYXJ5IHRvIGdldCB0aGUgaW1hZ2Ugc2l6ZS4g
UmV0dXJucwpAQCAtMjcyLDcgKzI3Miw3IEBAIHByaXZhdGU6CiAgICAgU2NhbGFibGVJbWFnZURl
Y29kZXJGcmFtZSogbV9idWZmZXI7CiAKICAgICAvLyBUaGUgZmlsZSB0byBkZWNvZGUuCi0gICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKIAogICAgIC8vIEFuIGlu
ZGV4IGludG8gfG1fZGF0YXwgcmVwcmVzZW50aW5nIGhvdyBtdWNoIHdlJ3ZlIGFscmVhZHkgZGVj
b2RlZC4KICAgICBzaXplX3QgbV9kZWNvZGVkT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWly
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFn
ZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAppbmRleCA2MDEyMDM3NGY5YzQzMTY4YTY1MjFiNjljNTRh
ZmJlMmEwMGY1NWY3Li40YTIxMjU1YThjMGZiNjc4ZTRhYWRkNzY2M2ViN2Y5MThlN2ZlOTRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9J
bWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcApAQCAtMzcsNyAr
MzcsOSBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0
CiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8dWlu
dDMyX3QqPihtX3BpeGVsc1B0cikpLAogICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMyLCBzaXpl
KCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpLCBzaXplKCkud2lkdGgoKSAqIHNpemVvZih1aW50
MzJfdCkpKTsKICAgICBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tleV90IHNfc3VyZmFjZURhdGFL
ZXk7Ci0gICAgY2Fpcm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRhKHN1cmZhY2UuZ2V0KCksICZzX3N1
cmZhY2VEYXRhS2V5LCBtX3BpeGVscy5nZXQoKSwgW10odm9pZCogZGF0YSkgeyBzdGF0aWNfY2Fz
dDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4oZGF0YSktPmRlcmVmKCk7IH0pOworICAgIGNh
aXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0YShzdXJmYWNlLmdldCgpLCAmc19zdXJmYWNlRGF0YUtl
eSwgbV9waXhlbHMuZ2V0KCksIFtdKHZvaWQqIGRhdGEpIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8
RGF0YVNlZ21lbnQqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICB9KTsKIAogICAgIHJldHVybiBzdXJm
YWNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBlNmFiZTBkOTU0NGI2YzE4
NWM2NDVkZWNlMDlmMjNmOTU2NjYwN2NiLi5iOWVjMDFiOGFlOGU4ZDI5YmM3ODI1MjZlMDc2NTI1
NTFlMzU5YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzgsNyArMzgsNyBA
QCBHSUZJbWFnZURlY29kZXI6OkdJRkltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBHSUZJbWFnZURlY29kZXI6On5HSUZJbWFnZURl
Y29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEdJRkltYWdlRGVjb2Rl
cjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29k
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFn
ZURlY29kZXIuaAppbmRleCAzNWRmMzNmNmRmYzQ4M2ZkODQ3MTM2NmFlNTNiYjBiOTYxY2FlZDJl
Li5jNzQ3MTk5OTliOTg2YzFjZWY4NDc4NzU5ZDIzNzE4YzkwNDJkM2ViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFNjYWxhYmxl
SW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gImdpZiJfczsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJv
b2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CiAgICAgc2l6ZV90IGZyYW1lQ291bnQo
KSBjb25zdCBmaW5hbDsKICAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29u
c3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCmluZGV4IDQyMTQ2ZTAzMjkzMjM2OTk3ODll
YjVlNDJhZjRjNzNkMzRhYjljYzYuLjEwODJmZGYwZGZmMjM5MWU1NjUzMGE0MWY4N2JhNDM5ODIz
Mjc1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2dpZi9HSUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCkBAIC0yMzcsNyArMjM3LDcgQEAgcHVibGlj
OgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQorICAgIHZvaWQgc2V0RGF0
YShXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBt
X2RhdGEgPSAmZGF0YTsgfQogICAgIC8vIEZJWE1FOiBoYWx0QXRGcmFtZSBzaG91bGQgYmUgc2l6
ZV90LgogICAgIGJvb2wgZGVjb2RlKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6R0lGUXVlcnks
IHVuc2lnbmVkIGhhbHRBdEZyYW1lKTsKIApAQCAtMzE2LDYgKzMxNiw2IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxHSUZGcmFtZUNvbnRleHQ+ID4gbV9mcmFtZXM7CiAg
ICAgc2l6ZV90IG1fY3VycmVudERlY29kaW5nRnJhbWU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOwogICAgIGJvb2wgbV9w
YXJzZUNvbXBsZXRlZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IGM3MTdj
NDVkMzA1N2MwNTUzNmVlNjA1MGY5Mzk3MDQ2ZDEwZGYyYTcuLmMwNzEzNDViOGJmMzY5YjgwMjcx
ZmJkZjBhMGNlMDE3NGYwNTAzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC01
Miw3ICs1Miw3IEBAIElDT0ltYWdlRGVjb2Rlcjo6SUNPSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9u
IGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiAKIElDT0ltYWdlRGVjb2Rlcjo6
fklDT0ltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBJQ09JbWFnZURlY29kZXI6OnNl
dERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSUNP
SW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lD
T0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
aWNvL0lDT0ltYWdlRGVjb2Rlci5oCmluZGV4IGZiN2E5MDNiMmEwNzUzOTQ5MTdhYmJiZjExYjFj
ZWQ4M2ZmNDMyYTAuLjEwZWU5YjRkMmU4YzlkODg3ZTFkMmI4YmUxMzliYjc0MjcxZDU3YTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09J
bWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAg
Ly8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBj
b25zdCBmaW5hbCB7IHJldHVybiAiaWNvIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1
ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBJ
bnRTaXplIHNpemUoKSBjb25zdCBmaW5hbDsKICAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdCBmaW5hbDsKICAgICBib29sIHNldFNpemUo
Y29uc3QgSW50U2l6ZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5k
ZXggZTU2NDcxMjAwMTY3YTNmYmQ0ZTZmMTcwM2RiOWVmZWI2YzdkNDQ0NC4uOGZiOTIyMGVlMzdm
NmFkODE5MzgyMDc3NGNlMjJiMWQ1Y2MzYTU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuY3BwCkBAIC0yMjAsOSArMjIwLDkgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19z
YXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKICAgICAgICAgJiYgbWFya2VyLT5kYXRhWzExXSA9PSAn
XDAnOwogfQogCi1zdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQ
cm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCitzdGF0aWMgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsK
LSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hhcmVkQnVm
ZmVyQnVpbGRlciBidWZmZXI7CiAgICAgZm9yIChqcGVnX3NhdmVkX21hcmtlcl9wdHIgbWFya2Vy
ID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0gbWFya2VyLT5uZXh0KSB7CiAg
ICAgICAgIGlmICghaXNJQ0NNYXJrZXIobWFya2VyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpA
QCAtMjM2LDEzICsyMzYsMTMgQEAgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiByZWFkSUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmYKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgICAgIHVuc2lnbmVkIG1hcmtlclNpemUgPSBtYXJrZXIt
PmRhdGFfbGVuZ3RoIC0gaWNjSGVhZGVyU2l6ZTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWFya2VyLT5kYXRhICsgaWNjSGVhZGVyU2l6
ZSksIG1hcmtlclNpemUpOworICAgICAgICBidWZmZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KG1hcmtlci0+ZGF0YSArIGljY0hlYWRlclNpemUpLCBtYXJrZXJTaXpl
KTsKICAgICB9CiAKLSAgICBpZiAoYnVmZmVyLT5pc0VtcHR5KCkpCisgICAgaWYgKGJ1ZmZlci5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICByZXR1cm4gYnVmZmVyLnRha2VBc0NvbnRpZ3VvdXMoKTsK
IH0KICNlbmRpZgogCkBAIC0zMjAsNyArMzIwLDcgQEAgcHVibGljOgogICAgICAgICBtX2J5dGVz
VG9Ta2lwID0gc3RkOjptYXgobnVtQnl0ZXMgLSBieXRlc1RvU2tpcCwgc3RhdGljX2Nhc3Q8bG9u
Zz4oMCkpOwogICAgIH0KIAotICAgIGJvb2wgZGVjb2RlKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQmIGRhdGEsIGJvb2wgb25seVNpemUpCisgICAgYm9vbCBkZWNvZGUoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgb25seVNpemUpCiAg
ICAgewogICAgICAgICBtX2RlY29kaW5nU2l6ZU9ubHkgPSBvbmx5U2l6ZTsKIApAQCAtNzI2LDcg
KzcyNiw3IEBAIHZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQogfQogCiAjaWYgVVNFKExDTVMpCi12b2lkIEpQRUdJbWFnZURl
Y29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQordm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCmluZGV4IGMwM2FhNjc4MjIwM2NiZDRjZmM4M2ZkZThm
ODcxMmI3MDgxZTNhYTkuLmQyZDdmYTZhYjQ5YjQyNDdhZmZiOGUxZmJlZTQ2OTUzYjBjYjA1Y2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCkBAIC02OCw3ICs2OCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldE9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CiAjaWYgVVNF
KExDTVMpCi0gICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJik7CisgICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmKTsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQ
RUcyMDAwSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBiZWNmNjQ1MDI3N2VlYjc0YjA5ZGU1MmVlMTgy
ZmY2ZTExZWQyNzYyLi4yMDQ3M2YwZWVlYmI1NmM3MTMxNGY2NTU2YmRhMDkwMzM0OTA3NDQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAw
MC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCkBAIC0zODAs
NyArMzgwLDcgQEAgdm9pZCBKUEVHMjAwMEltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNp
emUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIH0KIAogICAgIHN0cnVjdCBSZWFkZXIgewot
ICAgICAgICBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhOworICAgICAgICBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YTsKICAgICAgICAgc2l6ZV90IG9mZnNl
dDsKICAgICB9IHJlYWRlciA9IHsgKm1fZGF0YSwgMCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29k
ZXIuY3BwCmluZGV4IGMxMmM0NTlhNWEzZTViMzUxYzViY2M2MmJmMDBiOGEyODFiZDViYTMuLjRj
YmQzMjNkOWE3NTAyNmVmODY1OGYzODE2ZGQ3MzhkMzdjYThlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFn
ZURlY29kZXIuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgcHVibGljOgogICAgICAgICBtX3JlYWRP
ZmZzZXQgPSAwOwogICAgIH0KIAotICAgIGJvb2wgZGVjb2RlKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgc2l6ZU9ubHksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKQor
ICAgIGJvb2wgZGVjb2RlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
JiBkYXRhLCBib29sIHNpemVPbmx5LCB1bnNpZ25lZCBoYWx0QXRGcmFtZSkKICAgICB7CiAgICAg
ICAgIG1fZGVjb2RpbmdTaXplT25seSA9IHNpemVPbmx5OwogICAgICAgICBQTkdJbWFnZURlY29k
ZXIqIGRlY29kZXIgPSBzdGF0aWNfY2FzdDxQTkdJbWFnZURlY29kZXIqPihwbmdfZ2V0X3Byb2dy
ZXNzaXZlX3B0cihtX3BuZykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKaW5kZXgg
MDJmMWIwOWRiYzc2NTE2MDFmOTIyZGRlMjlmODA1YTY1ODcxZTJkMi4uYjFiZWM1NWU3OGM0MzQ4
MDFjMjU0YWNlMGRmNTk5MzFhMzZiNzRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
Y3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFdFQlBJbWFnZURlY29kZXI6OldFQlBJbWFnZURlY29kZXIo
QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlCiAKIFdFQlBJbWFn
ZURlY29kZXI6On5XRUJQSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lkIFdFQlBJbWFn
ZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKK3ZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFdFQlBJbWFnZURlY29kZXI6OmRl
Y29kZShzaXplX3QgZnJhbWVJbmRleCwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgLy8gVGhp
cyBjYW4gYmUgZXhlY3V0ZWQgYm90aCBpbiB0aGUgbWFpbiB0aHJlYWQgKHdoZW4gbm90IHVzaW5n
IGFzeW5jIGRlY29kaW5nKSBvciBpbiB0aGUgZGVjb2RpbmcgdGhyZWFkLgogICAgIC8vIFdoZW4g
ZXhlY3V0ZWQgaW4gdGhlIGRlY29kaW5nIHRocmVhZCwgYSBjYWxsIHRvIHNldERhdGEoKSBmcm9t
IHRoZSBtYWluIHRocmVhZCBtYXkgY2hhbmdlIHRoZSBkYXRhCiAgICAgLy8gdGhlIFdlYlBEZW11
eGVyIGlzIHVzaW5nLCBsZWF2aW5nIGl0IGluIGFuIGluY29uc2lzdGVudCBzdGF0ZSwgc28gd2Ug
bmVlZCB0byBwcm90ZWN0IHRoZSBkYXRhLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50PiBwcm90ZWN0ZWREYXRhKG1fZGF0YSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBwcm90ZWN0ZWREYXRhKG1fZGF0YSk7CiAgICAgV2ViUERh
dGEgaW5wdXREYXRhID0geyBwcm90ZWN0ZWREYXRhLT5kYXRhKCksIHByb3RlY3RlZERhdGEtPnNp
emUoKSB9OwogICAgIFdlYlBEZW11eFN0YXRlIGRlbXV4ZXJTdGF0ZTsKICAgICBXZWJQRGVtdXhl
ciogZGVtdXhlciA9IFdlYlBEZW11eFBhcnRpYWwoJmlucHV0RGF0YSwgJmRlbXV4ZXJTdGF0ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJw
L1dFQlBJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCmluZGV4IGFmMzY1ZTljZjljN2NlOTUzOGI2NGJh
Nzg5YmYwMTdkNDhmNmVkZTEuLmRkMjhiYzg4ZGY1YzBmYTNjMTU3Mzc4NjliMjYwOTczYWFhMGQy
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dl
YnAvV0VCUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5XRUJQSW1hZ2VEZWNvZGVyKCk7CiAKICAgICBTdHJpbmcgZmlsZW5h
bWVFeHRlbnNpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAid2VicCJfczsgfQotICAgIHZv
aWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwogICAgIFNjYWxhYmxlSW1hZ2VE
ZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIG92ZXJyaWRlOwog
ICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZnJhbWVDb3Vu
dDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRl
eCBhN2Y0NTAzMjBlOTA4YzZhMWY1ZjBmODk1NjA5MmFlMjQ3OTVhMjRhLi4zNjg3MjJhMzZmNThj
YzBlNzJhZjg3NjU1ZWJhZTZjYTVkNGI5NzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtMjQwLDE0ICsyNDAsMTQgQEAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIAogI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICAg
ICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVG
bGF0UlRGRF0pIHsKLSAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVG
bGF0UlRGRCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0
ZW1JbmRleCwga1VUVHlwZUZsYXRSVEZELCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwog
ICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAg
cmV0dXJuIFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAg
ICAgICByZXR1cm4gYnVmZmVyICYmIHJlYWRlci5yZWFkUlRGRCgqYnVmZmVyKSA/IFJlYWRlclJl
c3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwogICAgIH0KIAog
ICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlw
ZVJURl0pIHsKLSAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVSVEYs
IG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgs
IGtVVFR5cGVSVEYsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmICht
X2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVy
UmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiBi
dWZmZXIgJiYgcmVhZGVyLnJlYWRSVEYoKmJ1ZmZlcikgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBl
IDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKQEAgLTI1NSw3ICsyNTUsNyBAQCBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogI2VuZGlmIC8vICFQTEFURk9STShNQUND
QVRBTFlTVCkKIAogICAgIGlmIChbc3VwcG9ydGVkSW1hZ2VUeXBlcygpIGNvbnRhaW5zT2JqZWN0
OnR5cGVdKSB7Ci0gICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCB0eXBlLCBtX3Bh
c3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCB0eXBl
LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgICAgICBpZiAobV9jaGFuZ2VDb3Vu
dCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6UGFz
dGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAgICByZXR1cm4gYnVmZmVyICYmIHJl
YWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIHR5cGUsIGl0ZW1JbmZvLnBy
ZWZlcnJlZFByZXNlbnRhdGlvblNpemUpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRl
clJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCBkOWY0OGVkMWIzNDA1ZDJkZWE5
Nzc4YzNhNmM1NzJiYzUzMmZiOTMxLi5kNjRiOTY4MzQ3Mzc4MzJkMmVlZDY4ODIzNjAxMjI3MDY1
NTg1M2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVBhc3RlYm9hcmRJT1MubW0KQEAgLTc5LDEwICs3OSwxMCBAQCB2b2lkIFBsYXRmb3JtUGFzdGVi
b2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKSBjb25zdAogICAgIHR5cGVzID0g
bWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzXSk7CiB9CiAK
LVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZl
ckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
UGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3QKIHsKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVi
b2FyZFR5cGU6dHlwZV0pCi0gICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSk7CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMzM4LDcgKzMzOCw3IEBAIGludDY0X3QgUGxh
dGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpCiAgICAgcmV0
dXJuIDA7CiB9CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBl
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKQoraW50NjRfdCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5n
JikKIHsKICAgICByZXR1cm4gMDsKIH0KQEAgLTYwOSw3ICs2MDksNyBAQCBWZWN0b3I8U3RyaW5n
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0
IFN0cmluZyYgbwogI2VuZGlmIC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9OX1NU
WUxFX0FORF9URUFNX0RBVEEKIAogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21EYXRh
ID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2Vy
aWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0g
b3JpZ2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBl
cygpKQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC02
NzIsNyArNjcyLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6Z2V0
PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4odmFsdWUpOworICAgICAgICBhdXRvIGJ1ZmZl
ciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Pih2YWx1ZSk7CiAgICAgICAgIFtyZXByZXNl
bnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBm
b3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CiAgICAgfSk7CiAKQEAgLTc0Niw3ICs3NDYs
NyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFN0cmluZ3NGb3JUeXBl
KGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKICAgICByZXR1cm4gc3RyaW5nczsKIH0KIAotUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZl
cihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QK
K1JlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAg
ICBpZiAoIWluZGV4KQogICAgICAgICByZXR1cm4gYnVmZmVyRm9yVHlwZSh0eXBlKTsKQEAgLTc2
MSw3ICs3NjEsNyBAQCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZQogCiAgICAgaWYgKCFbcGFzdGVi
b2FyZEl0ZW0gY291bnRdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdEluZGV4
OjBdKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9i
amVjdEF0SW5kZXg6MF0pOwogfQogCiBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkU3Ry
aW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQppbmRleCA1NDQ2
NTNjNDQwM2QyNjA0MGE1NWQyM2U5MzY5MWJmZWRjYzkyYjQyLi5iZmUzNmFiZDk3NDNhNmJhNDVl
NDNjMGU4YjdkOWFlMWFlOTA2ZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQpAQCAtODIsNyArODIsNyBAQCBAZW5kCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlciYg
cHJvdmlkZXIpCi0gICAgOiBtX3ByZXZpZXdEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9
CisgICAgOiBtX3ByZXZpZXdEYXRhIHsgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkg
fQogICAgICwgbV9vcmlnaW5hbFJlc3BvbnNlIHsgcmVzcG9uc2UgfQogICAgICwgbV9wcm92aWRl
ciB7IHByb3ZpZGVyIH0KICAgICAsIG1fcGxhdGZvcm1EZWxlZ2F0ZSB7IGFkb3B0TlMoW1tXZWJQ
cmV2aWV3Q29udmVydGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6KnRoaXNdKSB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGEx
NTE2YWUzNGY4MjliYTcyY2E1NjFkOTVlNGZjOTc4Yjk1MmQzOGYuLjNlNTYzM2ZiZGE3MzVkNWEx
MTQ1ZTI1MWNjOTgxODk1ZDI0MjMwZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0yNjMsNyArMjYzLDcgQEAgc3RhdGljIHZvaWQgd3JpdGVG
aWxlV3JhcHBlckFzUlRGREF0dGFjaG1lbnQoTlNGaWxlV3JhcHBlciAqd3JhcHBlciwgY29uc3Qg
U3RyaW4KICAgICBpZiAoIVJURkREYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBuZXdDaGFu
Z2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0
QnVmZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUlRGRERhdGEpLnB0
cigpLCBsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQp
OworICAgIG5ld0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRT
dHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFJURkREYXRh
KS5wdHIoKSwgbGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIHBhc3RlYm9hcmROYW1lLCBjb250
ZXh0KTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2Um
IHBhc3RlYm9hcmRJbWFnZSkKQEAgLTI4NSw3ICsyODUsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKICAgICB9CiAKICAgICBtX2NoYW5nZUNvdW50ID0gd3JpdGVVUkxGb3JU
eXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZEltYWdlLnVybCwgY29udGV4
dCgpKTsKLSAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShpbWFnZURhdGEpLnB0cigpLCBsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0
ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJh
dGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGltYWdlRGF0YSkucHRyKCksIGxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgp
LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgIGlmIChhdXRvIGFyY2hpdmVEYXRh
ID0gcGFzdGVib2FyZEltYWdlLmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsKICAgICAgICAgbV9j
aGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+
c2V0QnVmZmVyRm9yVHlwZShhcmNoaXZlRGF0YS5nZXQoKSwgV2ViQXJjaGl2ZVBib2FyZFR5cGUs
IG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKQEAgLTM0NCw3ICszNDQsNyBAQCBzdGF0
aWMgU3RyaW5nIHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5
cGUsIHN0ZDo6b3B0aW9uYWw8cwogICAgIHJldHVybiBzdHJhdGVneS5zdHJpbmdGb3JUeXBlKHR5
cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3Ry
aW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3Ry
YXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK3N0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4
dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250
ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBh
c3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0
ZWJvYXJkTWFjLm1tCmluZGV4IGI0OWFkN2MwNGE1MjgxODJhNTFiOGEzYTk4NGQ3ZDkwNGQ2Mzk3
OTkuLmE3ZmU3MjU1NDM3NjY1ZThiOGEwYzc0NTNkMzA0NzQ5ZDQ1NjJmNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpA
QCAtNjgsMTIgKzY4LDEyIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0
b3I8U3RyaW5nPiYgdHlwZXMpIGNvbnN0CiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4o
W21fcGFzdGVib2FyZCB0eXBlc10pOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3QKIHsKICAg
ICBOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOnBhc3RlYm9hcmRUeXBl
XTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0KCkp
OworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5n
ZXQoKSk7CiB9CiAKIGludCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Om51bWJlck9mRmlsZXMoKSBjb25z
dApAQCAtMjE4LDcgKzIxOCw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6
dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBvCiB7CiAgICAgTGlz
dEhhc2hTZXQ8U3RyaW5nPiBkb21QYXN0ZWJvYXJkVHlwZXM7CiAgICAgaWYgKE5TRGF0YSAqc2Vy
aWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0YSA9
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9yaWdp
bigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRl
cmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUp
OwpAQCAtMjYzLDggKzI2Myw4IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShj
b25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICAgICAgaWYgKHBsYXRmb3JtVHlw
ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZl
cikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkK
KyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0
cmluZ09yQnVmZmVyKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3Rk
OjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkp
CiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnBsYXRmb3JtRGF0YS5nZXQo
KSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0byBz
dHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKQEAgLTM0MSw3ICszNDEs
NyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhc3RlYm9hcmRUeXBlcykKICAgICByZXR1cm4gW21fcGFzdGVib2FyZCBkZWNsYXJl
VHlwZXM6Y3JlYXRlTlNBcnJheShwYXN0ZWJvYXJkVHlwZXMpLmdldCgpIG93bmVyOm5pbF07CiB9
CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK2lu
dDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciog
YnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIGlmICghY2FuV3Jp
dGVQYXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkpCiAgICAgICAgIHJldHVybiAwOwpAQCAt
NDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBTdHJpbmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJuUGFz
dGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlwZSBwbGF0Zm9ybVR5CiAgICAgcmV0dXJuIHsgfTsK
IH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6
cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlw
ZSkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1
ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3QKIHsKICAgICBpZiAoIWluZGV4KQogICAgICAgICByZXR1cm4gYnVmZmVyRm9yVHlwZSh0eXBl
KTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxh
dGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZQogCiAgICAgaWYg
KE5TRGF0YSAqZGF0YSA9IFtpdGVtIGRhdGFGb3JUeXBlOnR5cGVdKSB7CiAgICAgICAgIGF1dG8g
bnNEYXRhID0gYWRvcHROUyhkYXRhLmNvcHkpOwotICAgICAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIHJldHVybiBudWxscHRy
OwpAQCAtNTA3LDggKzUwNyw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkSXRlbT4g
Y3JlYXRlUGFzdGVib2FyZEl0ZW0oY29uc3QgUGFzdGVib2FyZEN1c3RvbURhCiAgICAgICAgIGlm
ICghcGxhdGZvcm1UeXBlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JC
dWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRh
KCkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+
PihzdHJpbmdPckJ1ZmZlcikpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9
IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0
YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZv
clR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmlu
ZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZS5oCmluZGV4IDY4MTNkNWRhN2RjYjBmYzI1OWYxYmQxZWQwYTU0YzFhMWE5ZmQ5Y2YuLjc5NjU1
NGY0Yzk3NjQ1MTQwMWUxYTEyMzc0Njg3MDQwYjI0YjFjYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgTWVkaWFTYW1wbGU7CiBjbGFzcyBNZWRpYVN0
cmVhbVByaXZhdGU7CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTsKIGNsYXNzIFBsYXRm
b3JtQXVkaW9EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogc3RydWN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9uczsKIApAQCAtNTks
NyArNTksNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQXVk
aW9WaWRlb1NlbGVjdGVkVHJhY2tzIHNlbGVjdFRyYWNrcyhNZWRpYVN0cmVhbVByaXZhdGUmKTsK
IAotICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPjsK
KyAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRv
dWJsZSk+OwogICAgIHZpcnR1YWwgdm9pZCBmZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJikg
PSAwOwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0ID0gMDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJpdmF0ZU1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCmluZGV4IGMyNWRmOTE1NzRhNjViYzQx
YmRiNzA2NzhkYzQ3NzI0ODM2ZGQxNDUuLjQ5OGQ0ZWUxMzQwYzRiOTQwMDFiNjBjMzQ0NzliN2Y3
MmQ1YzhlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKQEAgLTkzLDcg
KzkzLDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6OmdlbmVyYXRlTW9ja0NvdW50
ZXJTdHJpbmcoKQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6ZmV0Y2hEYXRhKEZl
dGNoRGF0YUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZm
ZXI7CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9idWZmZXJMb2NrIH07CiAgICAg
ICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZSB7IG1fYnVmZmVyLmNoYXJhY3RlcnM4KCksIG1fYnVm
ZmVyLmxlbmd0aCgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZh
dGVXcml0ZXJDb2NvYS5oCmluZGV4IDIxMWY3NWVlNzNhZjY5MTllN2Y0Yzk5NThlMGNkMzQ4MjUz
MmQwOWYuLjljMmM3OTdiODE5NTEyZDhmZDU3OTAxNWRjM2I2ZTQwNWUzYmM2MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCkBAIC03
MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFZpZGVvU2FtcGxlQnVmZmVyKE1l
ZGlhU2FtcGxlJik7CiAgICAgdm9pZCBhcHBlbmRBdWRpb1NhbXBsZUJ1ZmZlcihjb25zdCBQbGF0
Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBjb25zdCBXVEY6
Ok1lZGlhVGltZSYsIHNpemVfdCk7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKCk7Ci0gICAgdm9p
ZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
LCBkb3VibGUpPiYmKTsKKyAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiYmKTsKIAogICAgIHZv
aWQgcGF1c2UoKTsKICAgICB2b2lkIHJlc3VtZSgpOwpAQCAtMTA1LDcgKzEwNSw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGZpbmlzaGVkRmx1c2hpbmdTYW1wbGVzKCk7CiAgICAgdm9pZCBjb21w
bGV0ZUZldGNoRGF0YSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRha2VEYXRhKCk7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHRha2VEYXRhKCk7CiAKICAgICBib29s
IG1faGFzQXVkaW8geyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWaWRlbyB7IGZhbHNlIH07CkBA
IC0xMTcsOCArMTE3LDggQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8QVZBc3NldFdyaXRlcj4g
bV93cml0ZXI7CiAKICAgICBMb2NrIG1fZGF0YUxvY2s7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7Ci0gICAgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0
YUNvbXBsZXRpb25IYW5kbGVyOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhIFdURl9H
VUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4gbV9mZXRjaERhdGFDb21w
bGV0aW9uSGFuZGxlcjsKIAogICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBt
X2F1ZGlvRm9ybWF0RGVzY3JpcHRpb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcj4gbV9hdWRpb0NvbXByZXNzb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRl
V3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KaW5kZXggOGMxZjdjMGU1MzEz
YjZiODU2Y2QzY2RmNWU4Mzg0ZjM2YjdiNTNmNS4uODQ4NDEwMGVhYzVlMTE1ZTliMGNmMDEyMGJh
YmY3OGZiMWExMjc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtMTM3LDEwICsxMzcsOCBAQCBNZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlcjo6fk1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyKCkKICAgICAgICAgbV93cml0
ZXIuY2xlYXIoKTsKICAgICB9CiAKLSAgICAvLyBBdCB0aGlzIHBvaW50ZXIsIHdlIHNob3VsZCBu
byBsb25nZXIgYmUgd3JpdGluZyBhbnkgZGF0YSwgc28gaXQgc2hvdWxkIGJlIHNhZmUgdG8gY2xv
c2UgYW5kIG51bGxpZnkgbV9kYXRhIHdpdGhvdXQgbG9ja2luZy4KICAgICBpZiAobV93cml0ZXJE
ZWxlZ2F0ZSkKICAgICAgICAgW21fd3JpdGVyRGVsZWdhdGUgY2xvc2VdOwotICAgIG1fZGF0YSA9
IG51bGxwdHI7CiAKICAgICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUobV9m
ZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51
bGxwdHIsIDApOwpAQCAtNDk1LDcgKzQ5Myw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OnN0b3BSZWNvcmRpbmcoKQogICAgIH0pOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpOwogCkBAIC01MzcsMTggKzUzNSwxMyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2
YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQog
ewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgaWYgKCFtX2RhdGEpIHsK
LSAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9kYXRhLT5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAg
bV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEoKQogewogICAg
IExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07Ci0gICAgYXV0byBkYXRhID0gV1RGTW92ZSht
X2RhdGEpOwotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBtX2RhdGEudGFrZSgpOwogfQog
CiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpwYXVzZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKaW5kZXggYTliMjlkNTll
OWFhM2I0NjU1NDE1YmQ4YmVmMDk4NGM1NDRiNzNmMC4uY2RlZTYwMzUyM2NkNjY5NDVmNDI4ZjY5
NDc4OTYwZjZmZDc0Yzc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9EYXRhVVJMRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRGF0YVVSTERlY29kZXIuaApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIG5hbWVzcGFjZSBEYXRhVVJMRGVjb2RlciB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggNjIzNjRkNzEzYzk1YTlmODQzYzdkMjljMDFm
MGRlYjlhZTZkMTc1YS4uMGM5MDgxN2M0ZTliNDFmMzQ5YTQxYWU2NGI3MTkwNmI5NTFlYjg5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTQx
MiwxMyArNDEyLDEzIEBAIHVpbnQ2NF90IEZvcm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QK
ICAgICByZXR1cm4gKm1fbGVuZ3RoSW5CeXRlczsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8U2hhcmVk
QnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGZvciAoYXV0
byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFZlY3Rvcjx1aW50OF90Pj4oZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGZsYXR0ZW4oKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4o
KSk7CiB9CiAKIFVSTCBGb3JtRGF0YTo6YXNCbG9iVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCAxMDgyODExMzFmODNlOTkzNzBmYzUw
OTc4MzNjYzUwZWU4YWRiZGFhLi5lOWQzNDQzZjhiNWM2ODI0NDY2NTZjMTg4MDU2NTdjYzI5ZDJk
ODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0z
Niw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7
CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIEZpbGU7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsK
ICAgICBzdHJ1Y3QgRW5jb2RlZEZpbGVEYXRhOwpAQCAtMjMyLDcgKzIzMiw3IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiYgZWxlbWVudHMoKSBjb25zdCB7IHJl
dHVybiBtX2VsZW1lbnRzOyB9CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+JiBib3VuZGFyeSgpIGNv
bnN0IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAK
ICAgICBib29sIGFsd2F5c1N0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9
CiAgICAgdm9pZCBzZXRBbHdheXNTdHJlYW0oYm9vbCBhbHdheXNTdHJlYW0pIHsgbV9hbHdheXNT
dHJlYW0gPSBhbHdheXNTdHJlYW07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCBmYWZkZmU4N2M4MzdlNjE1N2QyZjEzZTlhN2Nh
MDA5NjlkNTBiMWM3Li40YmViY2I1MDk4ZDE1YzI5NjZlZDhjN2VlMTM2YWUzYTJhZTRhMjBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5o
CkBAIC04NCw3ICs4NCw3IEBAIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdp
bjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBj
bGFzcyBTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZTsKIGNsYXNzIFRpbWVyOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuY3BwCmluZGV4IDgxOGUxODE4NDUxOTY3YWI1MmQxOThkOTU4N2IyMGExNDQ0NzhkZDku
LmJhOGZkNGZmNGYxZTQxYzlhZDRmYTc0YTQyYmU0ZTJiZDExYWE4NDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwCkBAIC0zNiw3ICszNiw3IEBAIFJlc291cmNlSGFuZGxlQ2xpZW50OjpSZXNvdXJjZUhhbmRs
ZUNsaWVudCgpID0gZGVmYXVsdDsKIAogUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhh
bmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAotdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVu
dDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBk
aWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCmluZGV4IGI2
MzM3ZDU2Y2U4Y2Q5YmVmZjlkZmJlMTEzNjYyYmM3NzU2YjY1MzcuLmM0ZjA1NDg1ZjI4NzBiMTE2
ZGE3Yzc2MGQzYzBmY2U5NmVjMmI0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAg
Y2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGVudW0gQ2FjaGVTdG9yYWdlUG9saWN5
IHsKICAgICBTdG9yYWdlQWxsb3dlZCwKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9u
ZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQq
LykgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIHsg
fQotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291
cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJj
ZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgpOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAppbmRleCA4OGRlZGZhNDVjM2Y0YzQzYTM4MTUy
ODBkYTVhNDFlMjY5NzViNzFmLi5mNzAwMzU1ZDU2OGIwNDJhNmFkZjEwNzBkYmI4MzgxOTI1MzY5
NGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKQEAgLTIxOSw3ICsyMTks
NyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKENGRAogICAgICAgICAKICAgICAgICAgTE9HKE5ldHdv
cmssICJDRk5ldCAtIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKGhhbmRsZT0lcCkgKCVzKSIsIGhhbmRsZSwgaGFu
ZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAg
ICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKGhhbmRsZSwgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpLCBvcmlnaW5hbExlbmd0aCk7CisgICAg
ICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoaGFuZGxlLCBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLmdldCgpKSwgb3JpZ2luYWxMZW5ndGgpOwogICAgIH07CiAgICAgCiAg
ICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4
IDFmZjA2NTIxNmZhNjgwODgxOTM3MTRiY2YyYmNkYWY2OTZmMDI0MDYuLjAwOGUyMjZmZjkxOTAw
NGI0NTE0OGEyNDcyNjExNjE1MDk4OTYyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3Iu
bW0KQEAgLTQxLDggKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFJhbmdlUmVz
cG9uc2VHZW5lcmF0b3I6OkRhdGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKICAgICBEYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmIHJlc291cmNlKQotICAgICAgICA6IGJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpKQotICAgICAgICAsIG9yaWdpbmFsUmVzcG9uc2UocmVzcG9uc2UpCisgICAgICAgIDog
b3JpZ2luYWxSZXNwb25zZShyZXNwb25zZSkKICAgICAgICAgLCByZXNvdXJjZSgmcmVzb3VyY2Up
IHsgfQogCiAgICAgc3RydWN0IFRhc2tEYXRhIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFRhc2tE
YXRhPiB7CkBAIC01NSw5ICs1NCw5IEBAIHN0cnVjdCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpE
YXRhIHsKICAgICAgICAgc2l6ZV90IG5leHRCeXRlVG9HaXZlQnVmZmVySW5kZXggeyAwIH07CiAg
ICAgICAgIGVudW0gY2xhc3MgUmVzcG9uc2VTdGF0ZSA6IHVpbnQ4X3QgeyBOb3RTeW50aGVzaXpl
ZFlldCwgV2FpdGluZ0ZvclNlc3Npb24sIFNlc3Npb25DYWxsZWRDb21wbGV0aW9uSGFuZGxlciB9
IHJlc3BvbnNlU3RhdGUgeyBSZXNwb25zZVN0YXRlOjpOb3RTeW50aGVzaXplZFlldCB9OwogICAg
IH07Ci0gICAgCisKICAgICBIYXNoTWFwPFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0
YVRhc2s+LCBzdGQ6OnVuaXF1ZV9wdHI8VGFza0RhdGE+PiB0YXNrRGF0YTsKLSAgICBSZWY8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAg
UmVzb3VyY2VSZXNwb25zZSBvcmlnaW5hbFJlc3BvbnNlOwogICAgIGVudW0gY2xhc3MgU3VjY2Vz
c2Z1bGx5RmluaXNoZWRMb2FkaW5nIDogYm9vbCB7IE5vLCBZZXMgfSBzdWNjZXNzZnVsbHlGaW5p
c2hlZExvYWRpbmcgeyBTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6Ok5vIH07CiAgICAgUmVm
UHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVzb3VyY2U7CkBAIC0xMDYsMjIgKzEwNSwyMiBA
QCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OnJlbW92ZVRhc2soV2ViQ29yZU5TVVJMU2Vz
c2lvbkRhdGFUYXNrICp0YXNrKQogdm9pZCBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpnaXZlUmVz
cG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKFdlYkNvcmVOU1VSTFNlc3Npb25EYXRh
VGFzayAqdGFzaywgY29uc3QgUGFyc2VkUmVxdWVzdFJhbmdlJiByYW5nZSwgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IGV4cGVjdGVkQ29udGVudExlbmd0aCwgY29uc3QgRGF0YSYgZGF0YSkKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8gYnVmZmVyID0gZGF0YS5idWZmZXI7
Ci0gICAgYXV0byBidWZmZXJTaXplID0gYnVmZmVyLT5zaXplKCk7CiAKICAgICAvLyBGSVhNRTog
V2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBqdXN0IG1ha2UgYSByYW5nZSB3aXRoIGEgKiBhZnRlciB0
aGUgLyBidXQgQVZGb3VuZGF0aW9uIGRvZXNuJ3QgYWNjZXB0IHN1Y2ggcmFuZ2VzLgogICAgIC8v
IEluc3RlYWQsIHdlIGp1c3Qgd2FpdCB1bnRpbCB0aGUgbG9hZCBoYXMgY29tcGxldGVkLCBhdCB3
aGljaCB0aW1lIHdlIHdpbGwga25vdyB0aGUgY29udGVudCBsZW5ndGggZnJvbSB0aGUgYnVmZmVy
IGxlbmd0aC4KICAgICBpZiAoIWV4cGVjdGVkQ29udGVudExlbmd0aCkKICAgICAgICAgcmV0dXJu
OwogCisgICAgYXV0byBidWZmZXJTaXplID0gZGF0YS5idWZmZXIuc2l6ZSgpOwogICAgIGlmIChi
dWZmZXJTaXplIDwgcmFuZ2UuYmVnaW4pCiAgICAgICAgIHJldHVybjsKLSAgICAKKworICAgIGF1
dG8gYnVmZmVyID0gZGF0YS5idWZmZXIuZ2V0KCk7CiAgICAgYXV0byogdGFza0RhdGEgPSBkYXRh
LnRhc2tEYXRhLmdldCh0YXNrKTsKICAgICBpZiAoIXRhc2tEYXRhKQogICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgYXV0byBnaXZlQnl0ZXNUb1Rhc2sgPSBbdGFzayA9IHJldGFpblB0cih0YXNr
KSwgYnVmZmVyLCB0YXNrRGF0YSA9IFdlYWtQdHIgeyAqdGFza0RhdGEgfSwgZ2VuZXJhdG9yID0g
V2Vha1B0ciB7ICp0aGlzIH1dIHsKKworICAgIGF1dG8gZ2l2ZUJ5dGVzVG9UYXNrID0gW3Rhc2sg
PSByZXRhaW5QdHIodGFzayksIGJ1ZmZlciwgYnVmZmVyU2l6ZSwgdGFza0RhdGEgPSBXZWFrUHRy
IHsgKnRhc2tEYXRhIH0sIGdlbmVyYXRvciA9IFdlYWtQdHIgeyAqdGhpcyB9XSB7CiAgICAgICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChbdGFzayBzdGF0ZV0gIT0gTlNV
UkxTZXNzaW9uVGFza1N0YXRlUnVubmluZykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzMCw3
ICsxMjksNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFz
a0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogICAgICAgICBhdXRvJiByYW5nZSA9
IHRhc2tEYXRhLT5yYW5nZTsKICAgICAgICAgYXV0byYgYnl0ZUluZGV4ID0gdGFza0RhdGEtPm5l
eHRCeXRlVG9HaXZlQnVmZmVySW5kZXg7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAg
ICAgICBpZiAoYnl0ZUluZGV4ID49IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAgICAgICAgaWYgKGJ5
dGVJbmRleCA+PSBidWZmZXJTaXplKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgYXV0byBidWZmZXJWaWV3ID0gYnVmZmVyLT5nZXRTb21lRGF0YShieXRlSW5kZXgpOwogICAg
ICAgICAgICAgaWYgKCFidWZmZXJWaWV3LnNpemUoKSB8fCBieXRlSW5kZXggPiByYW5nZS5lbmQp
CkBAIC0xNzUsNyArMTc0LDcgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IFJhbmdlUmVzcG9uc2VH
ZW5lcmF0b3I6OmV4cGVjdGVkQ29udGVudExlbmd0aEZyb21EYXRhKGNvbnMKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChkYXRhLnN1Y2Nlc3NmdWxseUZpbmlzaGVkTG9h
ZGluZyA9PSBEYXRhOjpTdWNjZXNzZnVsbHlGaW5pc2hlZExvYWRpbmc6OlllcykKLSAgICAgICAg
cmV0dXJuIGRhdGEuYnVmZmVyLT5zaXplKCk7CisgICAgICAgIHJldHVybiBkYXRhLmJ1ZmZlci5z
aXplKCk7CiAKICAgICAvLyBGSVhNRTogUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGVjdGVkQ29u
dGVudExlbmd0aCgpIHNob3VsZCByZXR1cm4gc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluc3RlYWQg
b2YgdXMgZG9pbmcgdGhpcyBjaGVjayBoZXJlLgogICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50TGVu
Z3RoID0gZGF0YS5vcmlnaW5hbFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpOwpAQCAt
MjQ0LDcgKzI0Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikgZmluYWwKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFs
CiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoIW1f
Z2VuZXJhdG9yKQpAQCAtMjUyLDcgKzI1MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8qIGRh
dGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAgICAgICAgaWYgKCFk
YXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5idWZmZXItPmFwcGVuZChX
VEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVm
ZmVyKSk7CiAgICAgICAgIG1fZ2VuZXJhdG9yLT5naXZlUmVzcG9uc2VUb1Rhc2tzV2l0aEZpbmlz
aGVkUmFuZ2VzKCpkYXRhKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgKaW5kZXggNDA0
ODg1YWU2Mzc2ZmNlNjgwNDBkMmEwNWMwMGJlYzQ3ZmUxNmFhOC4uY2U0YzI1NDVjZGUwZjJmNDZh
YzMzOGY5NmM0OTA4OGViNDVkMDkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgKQEAgLTUwLDcg
KzUwLDcgQEAgY2xhc3MgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3Vy
Y2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xh
c3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBjbGFzcyBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRh
c2tDbGllbnQ7CiBlbnVtIGNsYXNzIFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2sgOiBib29sOwpA
QCAtMTU4LDcgKzE1OCw3IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJM
U2Vzc2lvbiA6IE5TT2JqZWN0IHsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2VudEJ5dGVzOih1bnNpZ25lZCBsb25n
IGxvbmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2VudDoodW5zaWduZWQgbG9uZyBsb25nKXRv
dGFsQnl0ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZXNwb25zZTooY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXI6KENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYp
Y29tcGxldGlvbkhhbmRsZXI7CiAtIChCT09MKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlOwotLSAodm9pZClyZXNvdXJjZToo
bnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZl
ZERhdGE6KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpZGF0YTsKKy0gKHZvaWQpcmVzb3Vy
Y2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVj
ZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJilkYXRhOwog
LSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNl
KilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJilyZXNwb25zZSByZXF1ZXN0OihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0
IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51
bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgYWNjZXNzQ29u
dHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJill
cnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhFcnJvcjooY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggZTU5MjI3ZTM4
YWEwNjEyZDkyN2M4MjU5ZDAxNDdkYTRiZjZhNzY5Yi4uOGM4OWQ5Mzg2NTc5MzNhMWRhMjkwMzE5
OTE1ODRjNGRiMmZhYTlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtNjA4LDcgKzYw
OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8
U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC02NTIsNyArNjUyLDcgQEAgYm9vbCBXZWJDb3Jl
TlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1N
ZWRpYVJlc291cmMKICAgICByZXR1cm4gW21fdGFzayByZXNvdXJjZTomcmVzb3VyY2Ugc2hvdWxk
Q2FjaGVSZXNwb25zZTpyZXNwb25zZV07CiB9CiAKLXZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRh
dGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJj
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25E
YXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3Vy
Y2UsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBMb2NrZXIg
bG9ja2VyIHsgbV90YXNrTG9jayB9OwogICAgIGlmICghbV90YXNrKQpAQCAtOTE1LDcgKzkxNSw3
IEBAIC0gKEJPT0wpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hv
dWxkQ2FjaGVSZXNwb25zZTooY29uc3QgUmVzCiAgICAgcmV0dXJuIHJlc3BvbnNlLmh0dHBIZWFk
ZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFJhbmdlKS5pc0VtcHR5KCk7CiB9CiAKLS0g
KHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRE
YXRhOihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKWRhdGEKKy0gKHZvaWQpcmVzb3VyY2U6
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJilkYXRhCiB7CiAgICAgQVNTRVJUX1VOVVNFRChy
ZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7CiAgICAgW3NlbGYu
c2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNl
bGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKaW5kZXggYzM2ZTFmODg3NjQz
MDQ2MGNlNzUwYTNiOGM2NThjNzM0ZWNiMTUwOC4uMzQ5NDQ1OTI1NGFjOTNmYzE5Y2IxMjE1MGE2
MWJjMmJjZWQwMmQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEN1cmxE
b3dubG9hZDo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3Vy
bFJlc3BvbnNlJiYgcgogfQogCiAKLXZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZUJ1
ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDdXJs
RG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
RG93bmxvYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93
bmxvYWQuaAppbmRleCBhM2FhMGNmNWZjZDI5NTViYjdiMTZiMTFhMWE4MWNhNzRhZTYxYzhkLi5j
ZGU0NDQ1Nzc1Zjc0NDIzMzA1MzBiNjViMTM1N2JhNmJmZDliYjgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCkBAIC03Miw3
ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgUmVmPEN1cmxSZXF1ZXN0PiBjcmVhdGVDdXJsUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVxdWVz
dCYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZSB7IH0K
ICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9u
c2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVz
dCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY3VybERpZFJlY2Vp
dmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9h
ZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJs
UmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggZDYzNWY3OWNkMWVjNjIxYWRmZWI2ZGNjNDkz
NmVlZWY1MGNmOWFkYy4uMDkwZDAzOWJhNDVkZTEwMjhlZGY3Njg0YzZkN2QyZjI5NmUzYTM0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0
aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIEN1cmxNdWx0aXBh
cnRIYW5kbGU6OkN1cmxNdWx0aXBhcnRIYW5kbGUoQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudCYg
Y2xpZW50LCBjb25zCiAKIH0KIAotdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybE11bHRpcGFydEhhbmRs
ZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpFbmQpCiAgICAgICAgIHJldHVybjsgLy8gVGhl
IGhhbmRsZXIgaXMgY2xvc2VkIGRvd24gc28gaWdub3JlIGV2ZXJ5dGhpbmcuCkBAIC0xMzcsNyAr
MTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSgpCiAgICAgaWYg
KG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkgewogICAgICAgICAvLyBJdCBzZWVtcyB3ZSBhcmUgc3Rp
bGwgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3NpbmcuCiAgICAgICAgIC8vIFB1c2ggb3V0
IHRoZSByZW1haW5pbmcgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9t
TXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVy
KSkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX2J1ZmZlcikpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0
YXRlOjpFbmQ7CiAgICAgfQogCkBAIC0yMzQsMTMgKzIzNCwxMyBAQCBib29sIEN1cmxNdWx0aXBh
cnRIYW5kbGU6OnByb2Nlc3NDb250ZW50KCkKIAogICAgICAgICBpZiAoIWNoZWNrRm9yQm91bmRh
cnkoYm91bmRhcnlTdGFydCwgbGFzdFBhcnRpYWxNYXRjaCkgJiYgYm91bmRhcnlTdGFydCA9PSBu
b3RGb3VuZCkgewogICAgICAgICAgICAgLy8gRGlkIG5vdCBmaW5kIHRoZSBib3VuZGFyeSBzdGFy
dCwgYWxsIGRhdGEgdXAgdG8gdGhlIGxhc3RQYXJ0aWFsTWF0Y2ggaXMgb2suCi0gICAgICAgICAg
ICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOworICAgICAg
ICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOwogICAgICAgICAgICAg
bV9idWZmZXIucmVtb3ZlKDAsIGxhc3RQYXJ0aWFsTWF0Y2gpOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlcmUgd2FzIGEgYm91bmRhcnkgc3Rh
cnQgKG9yIGVuZCB3ZSdsbCBjaGVjayB0aGF0IGxhdGVyKSwgcHVzaCBvdXQgcGFydCBvZiB0aGUg
ZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQp
KTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOwogICAgICAgICBt
X2J1ZmZlci5yZW1vdmUoMCwgYm91bmRhcnlTdGFydCArIG1fYm91bmRhcnkubGVuZ3RoKCkpOwog
ICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZEJvdW5kYXJ5OwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhh
bmRsZS5oCmluZGV4IDVjMDhiY2M1ZWIzZTRiYmNjMDI5YjQ3Njc4NjhmNDNlMmY5NWMzNDEuLjlh
MWExYmJkMTkzOGExNGY2OWZjY2VlM2YwZjg5Yjk3YTRhMjE4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGUuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxN
dWx0aXBhcnRIYW5kbGVDbGllbnQ7CiBjbGFzcyBDdXJsUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsTXVsdGlw
YXJ0SGFuZGxlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ0LDcgKzQ0LDcg
QEAgcHVibGljOgogICAgIEN1cmxNdWx0aXBhcnRIYW5kbGUoQ3VybE11bHRpcGFydEhhbmRsZUNs
aWVudCYsIGNvbnN0IFN0cmluZyYpOwogICAgIH5DdXJsTXVsdGlwYXJ0SGFuZGxlKCkgeyB9CiAK
LSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQg
ZGlkQ29tcGxldGUoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5o
CmluZGV4IGZkMTNmZDM4MTMxNDNjYjI2NTliOGZkMWRiMjQ0NDc2NWU5OGE1ODAuLmM4MTM4ODZh
OGQ1YzVmYTZjMTJkMTQxMzMxOTEwMWFmMjUwMmEyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5k
bGVDbGllbnQuaApAQCAtMjgsMTIgKzI4LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEN1cmxSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQgewogcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBW
ZWN0b3I8U3RyaW5nPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9t
TXVsdGlwYXJ0KFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9
IDA7CiAKIHByb3RlY3RlZDoKICAgICB+Q3VybE11bHRpcGFydEhhbmRsZUNsaWVudCgpIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dC5jcHAKaW5kZXggYWNkODhlMWIwMjliOWIxZTdmMTRiN2QxNDAzMjkyNmI5MzE3NWEwZi4uZDgy
ZGQzYzEwYWM2NDcxMzU5OTFmZDdhZTY2OTdlOWQ4ZTMxM2U4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC0zOTYs
NyArMzk2LDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYm
IGhlYWRlcikKIAogLy8gY2FsbGVkIHdpdGggZGF0YSBhZnRlciBhbGwgaGVhZGVycyBoYXZlIGJl
ZW4gcHJvY2Vzc2VkIHZpYSBoZWFkZXJDYWxsYmFjawogCi1zaXplX3QgQ3VybFJlcXVlc3Q6OmRp
ZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorc2l6ZV90IEN1cmxSZXF1
ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7
CkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZUhlYWRlckZy
b21NdWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhlYWRlcnMpCiAgICAgaW52b2tlRGlk
UmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBBY3Rpb246Ok5vbmUpOwogfQogCi12b2lkIEN1cmxS
ZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChpc0NvbXBsZXRl
ZE9yQ2FuY2VsbGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTc3Nyw3ICs3NzcsNyBAQCBjb25z
dCBTdHJpbmcmIEN1cmxSZXF1ZXN0OjpnZXREb3dubG9hZGVkRmlsZVBhdGgoKQogICAgIHJldHVy
biBtX2Rvd25sb2FkRmlsZVBhdGg7CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRv
RG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBD
dXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fZG93bmxvYWRNdXRleCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAppbmRleCA2YmQ4YTZiZmJhMzc1MmNlZGRkYmM1MDA5
ZWFlODNjNGYwZWVkNjQxLi4zYzdjZGQ4ODNlYjYyYmZlOTJjZjA0NDVlZDI5YmQyNmVjZTNlOTIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3QuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDdXJs
UmVxdWVzdENsaWVudDsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNl
RXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogY2xhc3MgU3luY2hyb25vdXNMb2FkZXJNZXNzYWdlUXVldWU7CiAKIGNsYXNzIEN1cmxSZXF1
ZXN0IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEN1cmxSZXF1ZXN0PiwgcHVibGljIEN1
cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50LCBwdWJsaWMgQ3VybE11bHRpcGFydEhhbmRsZUNsaWVu
dCB7CkBAIC0xMjIsOSArMTIyLDkgQEAgcHJpdmF0ZToKICAgICBDVVJMKiBzZXR1cFRyYW5zZmVy
KCkgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IHdpbGxTZW5kRGF0YShjaGFyKiwgc2l6ZV90LCBzaXpl
X3QpOwogICAgIHNpemVfdCBkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmKTsKLSAgICBzaXplX3Qg
ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc2l6ZV90IGRpZFJlY2Vp
dmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB2b2lkIGRpZFJlY2Vp
dmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ29tcGxldGVUcmFu
c2ZlcihDVVJMY29kZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWxUcmFuc2ZlcigpIG92
ZXJyaWRlOwogICAgIHZvaWQgZmluYWxpemVUcmFuc2ZlcigpOwpAQCAtMTUzLDcgKzE1Myw3IEBA
IHByaXZhdGU6CiAgICAgTmV0d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtMb2FkTWV0cmljcygpOwog
CiAgICAgLy8gRG93bmxvYWQKLSAgICB2b2lkIHdyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFi
bGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgd3JpdGVEYXRhVG9Eb3dubG9hZEZp
bGVJZkVuYWJsZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgY2xv
c2VEb3dubG9hZEZpbGUoKTsKICAgICB2b2lkIGNsZWFudXBEb3dubG9hZEZpbGUoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3RDbGllbnQuaAppbmRleCAwOGM4NmM3ZDQ2ODRiYTZmNzhkNjE2YjY4ZDA2OTA0YzM3YTk2Njc3
Li4zNDc5ODMyZjU3NmQ0MTI4YWZhNTFjODE0MjRjY2ZkNzQxZGY2YWU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGll
bnQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBDdXJsUmVxdWVzdDsKIGNsYXNzIEN1cmxSZXNw
b25zZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBDdXJsUmVxdWVzdENsaWVudCB7CiBwdWJsaWM6CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25l
ZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVT
ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJl
cXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkUmVj
ZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkQ29tcGxl
dGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwg
Q2VydGlmaWNhdGVJbmZvJiYpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmNwcAppbmRleCBlZDA1ZGU3YWVlOTMyMWU5ZmQwMzgxZmM3M2RjZTI3OTY3ZGZjZDgxLi4z
MDVkNGU1YzlmYzI3MDc3NTc4N2IwZjlhOTE5NzljMDg4ODlhOGE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdh
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIEN1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiBy
ZXF1ZXN0LCBDdQogICAgIH0pOwogfQogCi12b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRl
OjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQordm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVC
dWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGUuaAppbmRleCA2ZDU1ODY0NDUyZmQ0NmVlNzgwMGU5MzEyM2IxMjhiZGM2NGNlNDg3
Li5kYWYwYTU5YTRlNTg2ZDcxMTRhYmI0ZTVlZjljNTRmNmE4YmVmYzcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRl
c1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIGZpbmFsOwogICAg
IHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYm
KSBmaW5hbDsKLSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihD
dXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2
b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSBm
aW5hbDsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3Vy
Y2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXJDbGllbnQuaAppbmRleCBiYzRkYWFmYmYyMWExNWMwZTZkZDFhY2Q0NjIyYWZhNTZiN2I4ZDVk
Li4xZjRhMTkzMTMzMTJjNWRkNmE0OGFkNTMzOWRmZDJjM2I1ZGVjMjU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJl
dmlld0xvYWRlckNsaWVudC5oCkBAIC0zMSwxMiArMzEsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8
TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2Fj
eVByZXZpZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZh
aWwoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQppbmRleCAzNWQ1MjYxNTE3ZWY0ZjA0MzM2
MWQ1ZDEwMGZkNzhkNmM4ZDA5ZmI3Li4zMTVlMDY1MTUzMGRjZGIwMjgwMTY1NGI3NTdkODE0NzNj
MjBmZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9X
ZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNP
cGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCkBAIC0zMDAsNyArMzAwLDcgQEAgLSAodm9pZCljb25u
ZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhOihOU0Rh
dGEgKilkYXRhIGwKICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTc5MwogICAgICAgICAvLyAtMSBtZWFucyB3ZSBkbyBub3QgcHJvdmlk
ZSBhbnkgZGF0YSBhYm91dCB0cmFuc2ZlciBzaXplIHRvIGluc3BlY3RvciBzbyBpdCB3b3VsZCB1
c2UKICAgICAgICAgLy8gQ29udGVudC1MZW5ndGggaGVhZGVycyBvciBjb250ZW50IHNpemUgdG8g
c2hvdyB0cmFuc2ZlciBzaXplLgotICAgICAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2Vp
dmVCdWZmZXIobV9oYW5kbGUsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdl
dCgpKSwgLTEpOworICAgICAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIo
bV9oYW5kbGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpLCAtMSk7CiAgICAgfTsK
IAogICAgIFtzZWxmIGNhbGxGdW5jdGlvbk9uTWFpblRocmVhZDpXVEZNb3ZlKHdvcmspXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBmNDk4
NmIwMDEwOGIxNzhmNjQ3ZTc2ZTczNGNhMmMzZjczYzA3NGJlLi44NWY5NmQ4NWQyYjM3MmNmYzIx
NzFhODM0MTFkNTI4NjkyMDczY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0zNTYsNyArMzU2LDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6
OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogCiBzdHJ1Y3QgUGFz
dGVib2FyZEZpbGVDb3VudGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIHZv
aWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgKytjb3VudDsgfQotICAgIHZv
aWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJikgZmluYWwgeyArK2NvdW50OyB9CisgICAgdm9pZCByZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
IHsgKytjb3VudDsgfQogCiAgICAgdW5zaWduZWQgY291bnQgeyAwIH07CiB9OwpAQCAtOTY2LDcg
Kzk2Niw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3Io
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gbWVtT2JqOwogfQog
Ci1zdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZl
ciogZGF0YSkKK3N0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBIR0xPQkFMIG1lbU9iaiA9IEdsb2Jh
bEFsbG9jKEdQVFIsIGRhdGEtPnNpemUoKSk7CiAgICAgaWYgKCFtZW1PYmopIApAQCAtOTg2LDcg
Kzk4Niw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoU2hh
cmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVybiBtZW1PYmo7CiB9CiAKLXN0YXRpYyBIR0xPQkFM
IGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFt
ZSwgU2hhcmVkQnVmZmVyKiBkYXRhKQorc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BD
b250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBkYXRhKQogewogICAgIGlmIChmaWxlTmFtZS5pc0VtcHR5KCkgfHwgIWRhdGEpCiAg
ICAgICAgIHJldHVybiAwOwpAQCAtMTA2Myw3ICsxMDYzLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsKQog
ICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgIWNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVs
ZW1lbnQucmVuZGVyZXIoKSkgfHwgIWNhY2hlZEltYWdlLT5pc0xvYWRlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0gY2FjaGVkSW1hZ2UtPmlt
YWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgpOworICAgIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVy
ZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIgfHwg
IWltYWdlQnVmZmVyLT5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA2NTI3MjUwZTVhYmNkZGJhMDAwMmIwZmJj
ZTY1NjVkMmY1ODY1ZDA2Li44NGZhMjljZTFmMzAwZmUyOTBiMDQxNDY0OGYwZjcyOTBhN2NiZWJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtNjMsNyAr
NjMsNyBAQCBib29sIE1vY2tDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSkKICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShrZXlTeXN0
ZW0sICJvcmcud2Via2l0Lm1vY2siKTsKIH0KIAotdm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5
c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZl
cj4+JiYga2V5cykKK3ZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQo
Y29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBr
ZXlzKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXNzaW9ucy5hZGQoaWQsIFdURk1vdmUo
a2V5cykpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKQEAgLTc0LDcgKzc0LDcgQEAg
dm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcm
IGlkLCBWZWN0b3I8UmVmPFNoYXJlZEIKICAgICAgICAgdmFsdWUuYXBwZW5kKFdURk1vdmUoa2V5
KSk7CiB9CiAKLVZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92
ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQorVmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lv
bldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQogewogICAgIGF1dG8gaXQgPSBtX3Nlc3Npb25zLmZp
bmQoaWQpOwogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25zLmVuZCgpKQpAQCAtODMsNyArODMsNyBA
QCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJv
bVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaQogICAgIHJldHVybiBXVEZNb3ZlKGl0LT52YWx1ZSk7
CiB9CiAKLWNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4qIE1vY2tDRE1GYWN0b3J5Ojpr
ZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdAorY29uc3QgVmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4qIE1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vz
c2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdAogewogICAgIGF1dG8gaXQgPSBtX3Nl
c3Npb25zLmZpbmQoaWQpOwogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25zLmVuZCgpKQpAQCAtMjAy
LDcgKzIwMiw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAg
cmV0dXJuIG1fZmFjdG9yeSAmJiBtX2ZhY3RvcnktPnN1cHBvcnRzU2Vzc2lvbnMoKTsKIH0KIAot
Ym9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgTW9ja0NETTo6
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewogICAgIGlmICghc3VwcG9y
dGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZQogICAg
IHJldHVybiB0cnVlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICBhdXRvIGJ1ZmZlciA9
IHJlc3BvbnNlLm1ha2VDb250aWd1b3VzKCk7CiAgICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVND
SUkoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCkBAIC0yNzAsNyArMjcwLDcgQEAg
dm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBN
ZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXQKICAgICBjYWxsYmFjayhpbml0aWFsaXplKCkpOwogfQog
Ci12b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1v
Y2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAg
IFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOwogCkBAIC0yOTgsNyArMjk4LDcg
QEAgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRy
PE1vY2tDRE1JbnN0YW5jZT4mJiBpbnN0YW4KIHsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VT
ZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNl
bnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vu
c2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0g
bV9pbnN0YW5jZSA/IG1faW5zdGFuY2UtPmZhY3RvcnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFm
YWN0b3J5KSB7CkBAIC0zMjQsNyArMzI0LDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9u
OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVMKICAg
ICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShsaWNlbnNlLmRhdGEoKSwgbGljZW5zZS5s
ZW5ndGgoKSksIHNlc3Npb25JRCwgZmFsc2UsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKIH0K
IAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwg
TGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNl
c3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNh
bGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2lu
c3RhbmNlID8gbV9pbnN0YW5jZS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3Rv
cnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rvcnku
aCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAppbmRleCBmNWNkYTUw
NWNmMmEzM2MxMDVmMDI1Yzk3YzkzNTBhOTY4Njk4ZTFlLi5kOTZjMTU2ZWU0ZDI3OTFiOGIwOTk4
ZGFmOTQwZWM3NTM3ODA3YmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDRE1GYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5oCkBAIC03Nyw5ICs3Nyw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzU2Vzc2lvbldpdGhJ
RChjb25zdCBTdHJpbmcmIGlkKSB7IHJldHVybiBtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKTsgfQog
ICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSB7IG1fc2Vzc2lv
bnMucmVtb3ZlKGlkKTsgfQotICAgIHZvaWQgYWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBT
dHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYpOwotICAgIGNvbnN0IFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4qIGtleXNGb3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYg
aWQpIGNvbnN0OwotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gcmVtb3ZlS2V5c0Zyb21T
ZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpOworICAgIHZvaWQgYWRkS2V5c1RvU2Vzc2lv
bldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiYmKTsKKyAgICBjb25zdCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Piog
a2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3Q7CisgICAgVmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gcmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElE
KGNvbnN0IFN0cmluZyYgaWQpOwogCiBwcml2YXRlOgogICAgIE1vY2tDRE1GYWN0b3J5KCk7CkBA
IC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhbkNyZWF0ZUluc3RhbmNlcyB7
IHRydWUgfTsKICAgICBib29sIG1fc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMgeyB0cnVlIH07
CiAgICAgYm9vbCBtX3N1cHBvcnRzU2Vzc2lvbnMgeyB0cnVlIH07Ci0gICAgSGFzaE1hcDxTdHJp
bmcsIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IG1fc2Vzc2lvbnM7CisgICAgSGFzaE1hcDxT
dHJpbmcsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBtX3Nlc3Npb25zOwog
fTsKIAogY2xhc3MgTW9ja0NETSA6IHB1YmxpYyBDRE1Qcml2YXRlIHsKQEAgLTEyMSw4ICsxMjEs
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKICAgICBi
b29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBz
dXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKICAgICBX
ZWFrUHRyPE1vY2tDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CkBAIC0xMzksNyArMTM5LDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpNb2NrOyB9CiAgICAg
dm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRT
dGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlm
aWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAg
IHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25z
dCBmaW5hbDsKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkg
ZmluYWw7CkBAIC0xNTQsOCArMTU0LDggQEAgcHVibGljOgogICAgIE1vY2tDRE1JbnN0YW5jZVNl
c3Npb24oV2Vha1B0cjxNb2NrQ0RNSW5zdGFuY2U+JiYpOwogCiBwcml2YXRlOgotICAgIHZvaWQg
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFs
OwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZv
aWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGlj
ZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAg
ICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYm
KSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vu
c2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAppbmRleCBmYzEyN2I3YjY3YmVhNzM0
NDYzY2QyZDViMDc1NmI1OWJlYmE1OGFlLi4wNTlmM2EzODZiNmNmNWZhNzliM2MxODk3MDE1MzEz
ZjdjZGI0ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50
RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
LmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OmZpbmlzaGVk
QWRkaW5nRGF0YSgpCiAgICAgbWF5YmVEZXRlcm1pbmVTdGF0dXMoRGVjaXNpb25Qb2ludDo6QWZ0
ZXJGaW5pc2hlZEFkZGluZ0RhdGEpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBNb2NrQ29udGVu
dEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBNb2NrQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKIHsKICAgICBB
U1NFUlQoZGlkQmxvY2tEYXRhKCkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSht
X3JlcGxhY2VtZW50RGF0YS5kYXRhKCksIG1fcmVwbGFjZW1lbnREYXRhLnNpemUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKaW5kZXggNDExYTMwMDk0N2I1
MzllMjZhYTZjNjRhMDA5MzI5MmU5ZmZiZTZiOS4uNjM1YWM4NGJlNzkzODQ3YWE1NzIxM2QwMWZm
YzFlNzRmNzZiNzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZERhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hl
ZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVu
dERhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
cmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigp
IGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1NjcmlwdEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZl
ci5jcHAKaW5kZXggNmQ0OGJkMDJkMWM5MWY3ZWVkODY0YTE2Y2Q3NTZiYjA3N2Q2NTUyYS4uNWY4
NTQ1ZWJhNWIwZTdiOGJiYWJhNWM2OTNjMmE0MzQxODhiMmJhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsK
ICAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIG1fYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworICAgIG1fYnVmZmVyLmFw
cGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIFNjcmlwdEJ1ZmZlciBTY3Jp
cHRCdWZmZXI6OmVtcHR5KCkKQEAgLTQ2LDE0ICs0NiwxMyBAQCBTY3JpcHRCdWZmZXIgU2NyaXB0
QnVmZmVyOjplbXB0eSgpCiAgICAgcmV0dXJuIFNjcmlwdEJ1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCkgfTsKIH0KIAotCiBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIG1fYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0o
YXV0byYgc2VnbWVudCkgeworICAgIG1fYnVmZmVyLmdldCgpLT5mb3JFYWNoU2VnbWVudChbJl0o
YXV0byYgc2VnbWVudCkgewogICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4
KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSkpOwogICAgIH0pOwogICAgIHJldHVybiBi
dWlsZGVyLnRvU3RyaW5nKCk7CkBAIC02MSwxNSArNjAsMTMgQEAgU3RyaW5nIFNjcmlwdEJ1ZmZl
cjo6dG9TdHJpbmcoKSBjb25zdAogCiBib29sIFNjcmlwdEJ1ZmZlcjo6Y29udGFpbnNTaW5nbGVG
aWxlTWFwcGVkU2VnbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVmZmVyICYmIG1fYnVm
ZmVyLT5oYXNPbmVTZWdtZW50KCkgJiYgbV9idWZmZXItPmJlZ2luKCktPnNlZ21lbnQtPmNvbnRh
aW5zTWFwcGVkRmlsZURhdGEoKTsKKyAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXIuZ2V0
KCktPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci5nZXQoKS0+YmVnaW4oKS0+c2VnbWVudC0+
Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOwogfQogCiB2b2lkIFNjcmlwdEJ1ZmZlcjo6YXBwZW5k
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIGlmICghbV9idWZmZXIpCi0gICAgICAgIG1f
YnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvIHV0ZjggPSBzdHJpbmcu
dXRmOCgpOwotICAgIG1fYnVmZmVyLT5hcHBlbmQodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkp
OworICAgIG1fYnVmZmVyLmFwcGVuZCh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAK
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImIGEsIGNvbnN0IFNjcmlwdEJ1ZmZl
ciYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCmluZGV4IGIzOWQ5YzEzMDMz
MDMxMWMwNGQ3ZjM3OTZiNzFhMDQzMTM0YzY2NDYuLmZkMmMxYWUyZjYzYjYwZDc0YzMwZDI0MmE5
ODlhMGJmZDkxZGU0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaApAQCAt
MzgsNyArMzgsNyBAQCBjbGFzcyBTY3JpcHRCdWZmZXIgewogcHVibGljOgogICAgIFNjcmlwdEJ1
ZmZlcigpID0gZGVmYXVsdDsKIAotICAgIFNjcmlwdEJ1ZmZlcihSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKKyAgICBTY3JpcHRCdWZmZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKICAgICB7
CiAgICAgfQpAQCAtNDgsMTcgKzQ4LDE3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBTY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcgdG9TdHJp
bmcoKSBjb25zdDsKLSAgICBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyLmdldCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KIAotICAgIFNjcmlwdEJ1
ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIg
PyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci0+Y29weSgpKSA6IG51bGxwdHIpOyB9Cisg
ICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZl
cihtX2J1ZmZlciA/IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5
KCkpIDogbnVsbHB0cik7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyBy
ZXR1cm4gISFtX2J1ZmZlcjsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFt
X2J1ZmZlciB8fCAhbV9idWZmZXItPnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyLmlzRW1wdHkoKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7CiAgICAgdm9pZCBhcHBl
bmQoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KKyAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIG1fYnVmZmVyOyAvLyBDb250YWlucyB0aGUgVVRGLTggZW5jb2RlZCBz
Y3JpcHQuCiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3Qg
U2NyaXB0QnVmZmVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckZvbnRMb2FkUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5jcHAKaW5kZXggZThiYzM5NzlmOTNmNDNkZDRmZmVkM2JlMDVlNjE3NmRkN2Ez
N2Q3ZS4uODJhMmE4YzRiMThhY2NlNzk4YjI3YzJjOGQwMDk1ODlmZjc1Y2JhOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcApAQCAtMzQs
NyArMzQsNiBAQAogI2luY2x1ZGUgIkZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaCIKICNpbmNsdWRl
ICJSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCi0j
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiV09GRkZpbGVGb3JtYXQuaCIKICNp
bmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZGFibGVM
b2FkZXIuaCIKQEAgLTc4LDE1ICs3NywxNSBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6
bG9hZChXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUpCiBib29sIFdvcmtlckZv
bnRMb2FkUmVxdWVzdDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7
CiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGEgJiYgIW1fZXJyb3JPY2N1cnJlZCAm
JiAhbV9pc0xvYWRpbmcpIHsKLSAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhID0gbV9kYXRhLT5tYWtl
Q29udGlndW91cygpOwotICAgICAgICAgICAgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShj
b250aWd1b3VzRGF0YSk7Ci0gICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YTsKLSAg
ICAgICAgICAgIGlmIChjb250aWd1b3VzRGF0YSkgewotICAgICAgICAgICAgICAgIG1fZm9udEN1
c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3Vv
dXNEYXRhLCBtX3VybC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKLSAgICAgICAg
ICAgICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKLSAgICAgICAgICAgICAgICAg
ICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CisgICAgICAgIGlmIChtX2RhdGEpCisgICAg
ICAgICAgICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS50YWtlQXNDb250aWd1b3VzKCk7CisgICAg
ICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOworICAgICAg
ICBpZiAoY29udGlndW91c0RhdGEpIHsKKyAgICAgICAgICAgIG1fZm9udEN1c3RvbVBsYXRmb3Jt
RGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKmNvbnRpZ3VvdXNEYXRhLCBtX3Vy
bC5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIG1fZGF0YSA9
IFdURk1vdmUoY29udGlndW91c0RhdGEpOworICAgICAgICAgICAgaWYgKCFtX2ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEpCisgICAgICAgICAgICAgICAgbV9lcnJvck9jY3VycmVkID0gdHJ1ZTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtMTIxLDEwICsxMjAsNyBAQCB2b2lkIFdvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5n
dGgpCiAgICAgaWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KCFtX2RhdGEpCi0gICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0KLSAg
ICBtX2RhdGEtPmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGRh
dGEsIGRhdGFMZW5ndGgpOwogfQogCiB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkRmlu
aXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaAppbmRleCBiOWZjZmIxZDZmZWE4YWQ1ZTc4
MGJkZWViYzVjNmUwNGExZTg2M2M3Li5kYWI3M2ZjN2IxYTkzZWQ0ZTNmZWIzMWQ2NzA5OGQ5OWI1
MTc2YTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2Fk
UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1
ZXN0LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkZvbnRMb2FkUmVxdWVzdC5oIgog
I2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTM2LDcgKzM3LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFdvcmtlckdsb2Jh
bFNjb3BlOwogCiBzdHJ1Y3QgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKQEAgLTc2LDcgKzc2LDcg
QEAgcHJpdmF0ZToKICAgICBGb250TG9hZFJlcXVlc3RDbGllbnQqIG1fZm9udExvYWRSZXF1ZXN0
Q2xpZW50IHsgbnVsbHB0ciB9OwogCiAgICAgV2Vha1B0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0
PiBtX2NvbnRleHQ7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxh
dGZvcm1EYXRhPiBtX2ZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
ckZldGNoLmNwcAppbmRleCAwYmNkOTc2ZWRhOWQ0YTc4MTA5ZTYyNjNkODEwOGMzNzUwNzU4Yjc3
Li44YTkxMzhkMjNiMGQ1ZGVjNTNkMjk5MGRlZDVkYjc3NjM1NGU1MjQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJGZXRjaC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUmVz
cG9uc2UoUmVmPENsaWVudD4mJiBjbGllbnQsIEV4cGVjdGVkPFJlZjxGZXRjaFJlc3BvbnNlPiwg
cwogICAgIGF1dG8gYm9keSA9IHJlc3BvbnNlLT5jb25zdW1lQm9keSgpOwogICAgIFdURjo6c3dp
dGNoT24oYm9keSwgWyZdIChSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICBjbGll
bnQtPmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChXVEZNb3ZlKGZvcm1EYXRhKSk7Ci0gICAg
fSwgWyZdIChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsm
XSAoUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjbGllbnQtPmRpZFJlY2Vp
dmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIGNsaWVudC0+ZGlkRmluaXNoKCk7CiAg
ICAgfSwgWyZdIChzdGQ6Om51bGxwdHJfdCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmgKaW5kZXgg
ZGU5ZTIzMGY5YmRiOTlhNWU4Mzg3ZGZkOTYwM2FlYzVjYWEzZjAwYi4uZmJhMzYzMjJiMjlhNmQ1
Yjc5N2IzOWVkYzNjM2QxNzEyNGIzYjViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmgKQEAgLTQy
LDcgKzQyLDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKIGNsYXNzIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsKIGNsYXNzIFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIG5hbWVzcGFjZSBTZXJ2aWNlV29ya2VyRmV0Y2ggewogY2xhc3MgQ2xpZW50IDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENsaWVudCwgV1RGOjpEZXN0cnVjdGlvblRocmVh
ZDo6TWFpbj4gewpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YUFu
ZEZpbmlzaChSZWY8Rm9ybURhdGE+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChj
b25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2goKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2NyaXB0U3RvcmFnZS5jcHAKaW5kZXggMDNhNzIxMWZjZWJiMWY4ZTQ2MjhkNTllYTQ1YmNj
Yjc4ODAyZmI0MS4uOWE4ZmIzNWNhNTM2MTA1YmI2ZDZmYzQ2ZWUxMjI0NTkzM2Y3MGJmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0
b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
Y3JpcHRTdG9yYWdlLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIFNjcmlwdEJ1ZmZlciBTV1Njcmlw
dFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJl
Z2lzCiAgICAgfQogCiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gZGlzYWJsZSBmaWxlIG1h
cHBpbmcgaW4gbW9yZSBjYXNlcyB0byBhdm9pZCBoYXZpbmcgdG9vIG1hbnkgZmlsZSBkZXNjcmlw
dG9ycyBvcGVuPwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlTW9kZTo6UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVT
aXplKSA/IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOworICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6
UHJpdmF0ZSwgc2hvdWxkVXNlRmlsZU1hcHBpbmcoKmZpbGVTaXplKSA/IFNoYXJlZEJ1ZmZlcjo6
TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IFNoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6
Ok5vKTsKICAgICByZXR1cm4gYnVmZmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAppbmRleCBlMGNkYzcyMzRjNTRhMTNkZjcwYTY4MDVjMjgxYjk0ODA1NDVhZTI2Li45
YjExMmI5ZGIyY2Q4NGQwMzJmNTlkYWZhOGU4ZTM4ZTA3MGU1M2Y3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJSdW50aW1l
QXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpblBvbGljeS5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiU3RyaW5nQWRhcHRvcnMuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAj
aW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgpAQCAtMjA4LDcgKzIwNyw3IEBAIFJlZjxCbG9i
PiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkKICAgICAvLyBGSVhNRTogV2Ug
anVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIE5ldHdvcmtQcm9jZXNzLCBhbmQgYXJlIHNlbmRp
bmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmljaWVudC4KICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YTsKICAgICBpZiAobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgIGRhdGEgPSBzdGQ6
OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLCBudWxscHRyKS0+ZXh0cmFjdERhdGEo
KTsKKyAgICAgICAgZGF0YSA9IG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLnRha2UoKS0+ZXh0cmFj
dERhdGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBlID0gQmxvYjo6bm9ybWFs
aXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmluYWxNSU1FVHlwZTo6WWVzKSk7IC8v
IHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hpY2ggbWF5IGJlIGluY29y
cmVjdC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
V1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsKIH0KQEAgLTIxOCw5ICsyMTcs
NyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNwb25zZUFy
cmF5QnVmZmVyKCkKICAgICBBU1NFUlQocmVzcG9uc2VUeXBlKCkgPT0gUmVzcG9uc2VUeXBlOjpB
cnJheWJ1ZmZlcik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkpOwogCi0gICAgYXV0
byByZXN1bHQgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA/IG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpIDogQXJyYXlCdWZmZXI6OmNyZWF0ZShudWxscHRy
LCAwKTsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxwdHI7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKKyAgICByZXR1cm4gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIudGFrZUFzQXJyYXlC
dWZmZXIoKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6OnNldFRpbWVv
dXQodW5zaWduZWQgdGltZW91dCkKQEAgLTc0MSw3ICs3MzgsNyBAQCB2b2lkIFhNTEh0dHBSZXF1
ZXN0OjpjbGVhclJlc3BvbnNlQnVmZmVycygpCiAgICAgbV9yZXNwb25zZUVuY29kaW5nID0gU3Ry
aW5nKCk7CiAgICAgbV9jcmVhdGVkRG9jdW1lbnQgPSBmYWxzZTsKICAgICBtX3Jlc3BvbnNlRG9j
dW1lbnQgPSBudWxscHRyOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsK
KyAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci5yZXNldCgpOwogICAgIG1fcmVzcG9uc2VDYWNo
ZUlzVmFsaWQgPSBmYWxzZTsKIH0KIApAQCAtMTA2NSw5ICsxMDYyLDcgQEAgdm9pZCBYTUxIdHRw
UmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKICAg
ICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxl
bikpOwogICAgIGVsc2UgewogICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCi0gICAgICAg
IGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAgICAgICBtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAgIG1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyLT5hcHBlbmQoZGF0YSwgbGVuKTsKKyAgICAgICAgbV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXIuYXBwZW5kKGRhdGEsIGxlbik7CiAgICAgfQogCiAgICAgaWYgKCFtX2Vycm9yKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDA0ODQ2MjZiMmU1ZGZkZGE3Y2Ix
NmM0ZjU1MjJkZWY4NGM0YWMxODYuLjJkMTNiZWMzOTQ2NDQ4YjliNGY5MjVkMzJiZDg2YmEyZDgw
Mzc3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1
ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNs
dWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRp
Y2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC00NSw3ICs0Niw2IEBAIGNsYXNzIEJs
b2I7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERPTUZvcm1EYXRhOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwog
Y2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsKIGNsYXNzIFVSTFNlYXJjaFBhcmFtczsKQEAgLTIzNyw3
ICsyMzcsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlRG9j
dW1lbnQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
cjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyOwogCiAg
ICAgU3RyaW5nQnVpbGRlciBtX3Jlc3BvbnNlQnVpbGRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKaW5kZXggYTMwZjUxNDFhOGUxNGYyNzhmNWI5MTMx
NzMzZDI2MTQ2MjgxMmNiNi4uZGY4YWJlNDI2ZTA2NzE3MWFmZmY5MGUwMzMzODUwNTlmMzMxMDM2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0x
MDcsNyArMTA3LDcgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENo
YXIqIHVyaSwKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICAgICAgUmVzb3VyY2VS
ZXNwb25zZSByZXNwb25zZTsKIAotICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgICAgICBi
b29sIHJlcXVlc3RBbGxvd2VkID0gZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmZyYW1lKCkg
JiYgZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2lu
KCkuY2FuUmVxdWVzdCh1cmwpOwogICAgICAgICBpZiAocmVxdWVzdEFsbG93ZWQpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcAppbmRleCBkYjI2YmIzOWRkNWFmOTlmMzFlNjYyYzM0Y2VkM2RiZjk2NzdmNWFiLi5hOGMz
ZTE4ZTQ3YWVjYWQwYTAyMmEwODRjNDlhMjFmNmM3MTRjMzkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC00
NjQsNyArNDY0LDcgQEAgc3RhdGljIHZvaWQqIG9wZW5GdW5jKGNvbnN0IGNoYXIqIHVyaSkKICAg
ICAgICAgcmV0dXJuICZnbG9iYWxEZXNjcmlwdG9yOwogCiAgICAgUmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZTsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgewogICAgICAgICBSZXNvdXJjZUVycm9y
IGVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlUHJveHkuY3BwCmluZGV4IDU3MzA2N2UzZGQwNTBmZWI3YzU3OWQwMDEw
MmVlOWY2MDQ1YjUzMTMuLjMxYzJkNzZmMmVlMWI5ZDI0OWIwMDFiN2VmZjg5MmVjMmE3NDU2Y2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eTo6flJlbW90ZUNETUluc3RhbmNlUHJveHkoKQogICAgIG1faW5zdGFuY2UtPmNsZWFyQ2xp
ZW50KCk7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6dW5yZXF1ZXN0ZWRJbml0
aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgaW5pdERhdGEpCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnVucmVxdWVzdGVk
SW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBpZiAoIW1fY2RtKQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlUHJveHkuaAppbmRleCA4ZTczZDNkOWE2NGI5OGJmYzAwOTM2Y2Q0N2M0
YzI1YTkyNzlmMmM4Li4wMmM1Y2QzN2FlNTQ4MDJmNmQwYzhkY2NjYjBiYTgwY2YzMzg4YzMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVByb3h5LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVDRE1J
bnN0YW5jZVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYsIFJlZjxXZWJDb3JlOjpDRE1J
bnN0YW5jZT4mJiwgVW5pcXVlUmVmPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4mJiwg
UmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyKTsKIAogICAgIC8vIENETUluc3RhbmNlQ2xpZW50
Ci0gICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0
cmluZyYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgdW5y
ZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICAvLyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcApp
bmRleCBlNTc2NmMyMzM0Y2ZkMzg5MzEwY2Q0YjIxNzIzY2FiYTM3NDJmYzdjLi5kZTgyNzNiOWNm
NTAwYTRkNjZhYTE0NGVkZTAyMDFlZWYxZWQ4NjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgQXRvbVN0cmluZwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zZXNzaW9uLT5yZXF1ZXN0TGljZW5zZSh0eXBlLCBp
bml0RGF0YVR5cGUsIGluaXREYXRhLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0
aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RN
SW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICBt
X3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVm
ZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24p
XSAoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9u
OjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbihX
VEZNb3ZlKG1lc3NhZ2UpLCBzZXNzaW9uSWQsIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIHN1Y2Nl
ZWRlZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2NlZWRlZCk7CiAgICAgfSk7CiB9CkBAIC0x
MTUsNyArMTE1LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Y2xvc2VT
ZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVMKIAogdm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJiBjb21w
bGV0aW9uKQogewotICAgIG1fc2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0
eXBlLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChDRE1JbnN0YW5jZVNlc3Np
b246OktleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFy
ZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3Vj
Y2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNz
aW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9u
KV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIHN0
ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9u
c0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJs
ZSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBleHBpcmVk
U2Vzc2lvbkRhdGFSZWZlcmVuY2U7CiAgICAgICAgIGlmIChleHBpcmVkU2Vzc2lvbnNEYXRhKQog
ICAgICAgICAgICAgZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlID0gSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5KFdURk1vdmUoKmV4cGlyZWRTZXNzaW9uc0RhdGEpKTsKQEAgLTE0OSw3ICsxNDksNyBA
QCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVLZXlTdGF0dXNlcyhL
ZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dQogICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mt
PmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlVw
ZGF0ZUtleVN0YXR1c2VzKFdURk1vdmUoa2V5U3RhdHVzZXMpKSwgbV9pZGVudGlmaWVyKTsKIH0K
IAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVz
c2FnZVR5cGUgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBpZiAoIW1fY2Rt
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCmluZGV4IDhhNjFm
OWQ1ZmFiYzg0ODZhN2EwZTg2MGY0YzYzMTJjMGI0NDU1MTQuLmZlNzMwOTcxMzFlMGJiMjBhNTAw
MWUxNTAxNjAyZDY1MTg2YjMwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCkBAIC03
Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQK
ICAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKSBmaW5hbDsKLSAg
ICB2b2lkIHNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOworICAgIHZvaWQgc2VuZE1lc3NhZ2UoV2Vi
Q29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIG1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJp
bmcmKSBmaW5hbDsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBmaW5hbCB7IHJl
dHVybiBtX2Rpc3BsYXlJRDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETVByb3h5LmNwcAppbmRleCA5YWIzNTc1ZjRjM2I1NTk1NTViOWI4N2IyMzM3
MWIxYjFhNjZkYzE3Li5mN2NiNmE2M2ViOTMzYWJkNGQ0NTNhMjJhYjI5NGYxMzAzMjMyYjA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5j
cHAKQEAgLTYzLDEyICs2MywxMiBAQCBSZW1vdGVDRE1Qcm94eTo6UmVtb3RlQ0RNUHJveHkoV2Vh
a1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgc3RkOjp1bgogCiBSZW1vdGVD
RE1Qcm94eTo6flJlbW90ZUNETVByb3h5KCkgPSBkZWZhdWx0OwogCi1ib29sIFJlbW90ZUNETVBy
b3h5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKK2Jvb2wgUmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5zdXBwb3J0c0luaXREYXRhKHR5cGUsIGRhdGEpOwog
fQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25z
ZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IFJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIHJlc3BvbnNlKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPnNhbml0aXpl
UmVzcG9uc2UocmVzcG9uc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNUHJveHkuaAppbmRleCA2OTI0ZTc0ZTNmNTAxMWJlMjE1YmU0YmQ5NmIyMzQ4
MjY0NzBmNDIzLi4zYjY2Yzc3NTc4NzA2OWU5NzZlZTA2NGY5NmZmMDdjMGY3MTJhOTBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaApAQCAt
MzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIGVudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgOiB1aW50OF90OwogZW51bSBjbGFzcyBDRE1T
ZXNzaW9uVHlwZSA6IHVpbnQ4X3Q7CiBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsK
QEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogCiAgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5KiBm
YWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9mYWN0b3J5LmdldCgpOyB9CiAKLSAgICBib29sIHN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiByZXNwb25zZSk7CisgICAgYm9vbCBzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgcmVzcG9uc2UpOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25J
ZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCmluZGV4IGUy
Y2QwNWQ3Y2M3NGYyMGVjNjlmYWRmZTNlZTA4NTc1OTJhZDg3OWIuLmRlOGY2ZGY1NWE2ZTFmYThi
ZTk2NmY5NDFlMDdmZTJmNWM1MDIxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCkBAIC0zNiw3ICszNiw3IEBACiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKaW5kZXggZjE0YzYyN2Y2NTkzZTFhODc4
ZDBmNDU5OTJiM2M0MWIyMjJjN2YwMC4uMTU0NmJkZmRmZGNmMDkxMDg3ODk0NGYzNDA3OTY3YTdh
YjM4YmY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaApAQCAtMzcsNyArMzcsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGVnYWN5Q0RNOwogY2xhc3MgTGVnYWN5Q0RNU2Vzc2lv
bjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9
CiAKIG5hbWVzcGFjZSBJUEMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCmluZGV4IGM0NWU1MjU1ZDY3YjUyYzdhZTEw
NDQ5OTg4Y2UwMTkwYzdmZmI1MzguLjYxN2Y0NzY4OTU2NDJkZWMyMzI1NGI1NDBlZTgxOTExYWM0
YTJkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZS5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVJl
c291cmNlOjpkYXRhU2VudCh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNU
b0JlU2UKICAgICAgICAgbV9jbGllbnQtPmRhdGFTZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFs
Qnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2Vp
dmVkKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6
ZGF0YVJlY2VpdmVkKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAg
aWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBXVEZN
b3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZS5oCmluZGV4IGQxM2QyNWY2NWYwMjI0YTZjNzY3ZjY5YTRkNDE5Y2Qw
NTNiYjc5NWQuLjViN2E3ZTJhNzQyNDQzMmQ4NmNiMjhhMWJlNzE3MThhMTY3Mzc1ZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2UuaApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOZXR3
b3JrTG9hZE1ldHJpY3M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU3LDcgKzU3LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250
aW51ZVBvbGljeUNoZWNrKT4mJik7CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAg
IHZvaWQgZGF0YVNlbnQodWludDY0X3QsIHVpbnQ2NF90KTsKLSAgICB2b2lkIGRhdGFSZWNlaXZl
ZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBhY2Nlc3ND
b250cm9sQ2hlY2tGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZv
aWQgbG9hZEZhaWxlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBs
b2FkRmluaXNoZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
LmNwcAppbmRleCBlYmRlNzUzMGVjODZmZjZjNDFiZWNkNGU1ZWM0MjhhM2M4YWY4MGY3Li5lODNm
OTE0M2QyMGE3MmUyYmU0ZmZjYmZlZDEzYjBiYjRkZDMxZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAg
LTEwNyw3ICsxMDcsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZh
aWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1vdGVNZWRp
YVJlY29yZGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZl
cmVuY2UmJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dyaXRlci0+
ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShhdXRvJiYgZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gYnVm
ZmVyID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+KCk7CiAg
ICAgICAgIGF1dG8qIHBvaW50ZXIgPSBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIs
IGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9h
ZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25s
b2FkLmgKaW5kZXggNTJjYzVkYTEyMWEyZmI1OWQ4Y2YwNTkzYjY4NTA5ZmQ2NTVjMGNkYy4uNzFm
ZDAyMjI5YmJiMWM1NzMyNmZkZmNmZTI2YzExZjc2MWFiY2Y3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgK
QEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZv
ckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1VzZXJG
b3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJl
Y3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRlOwotICAgIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OworICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGUgeyB9Owog
ICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggM2YzOWViMzJmMWFhODA3Njc4
NWRhNzllZTExZGFkOGYwYzMyNmI3OS4uZDg5MjBlOTg3NjRmZDliNjRiOWNkZGM2MGExZDg0ZDYx
OWIyZDQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZv
aWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9u
OjpVc2UpOwogfQogCi12b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2
ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikKIHsKICAgICBDT1JTX0NIRUNLRVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVE
YXRhIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAppbmRleCBiYmIxNDYyYTMxNjFlMmZjZTllYTU3
ODQ0YjE5YjkzZTYxOWM4MWIwLi5lMTFiZjU2MzE5MDdhZTQ3MzM2ZWY4NWE1ZDIyZTg4MzU3NDY1
MWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRs
ZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBs
ZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
Q29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEo
dWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2Vu
ZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAppbmRleCBkNjAxOGY2MTM4M2FlM2E1
MWU5ZDQ3MjJjZjZhNjBlMmQ4Yjg3YTdkLi5lMDQ5ZTViMTJkZGU1ZmU1MWI0Njk1NTI4OWE3YTdm
Njk5ODJhZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtEYXRhVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxl
bmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lU
TFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRl
ZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtM
b2FkTWV0cmljcyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3Qg
dG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB3YXNCbG9ja2VkKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAppbmRleCA2ZGYxNDEwNzM2YWJhMmYyZDlhMTk2MTU2
YzBiMWJhZmE4ZTcwNDQ3Li40NjkwZmRjNWQ1YWQ3Zjg5MmMxZGU2OGQ1Yjg1NjQwZGVkMzgyOGY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcApAQCAt
MjYzLDcgKzI2Myw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0CiAgICAgbV9jbGllbnQuZ2V0
KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCBiZSB0aGUgZW5jb2RlZCBkYXRhIGxlbmd0aCwgbm90IHRoZSBkZWNvZGVkIGRh
dGEgbGVuZ3RoLgogICAgIGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCmluZGV4IGI5MmY5YzYxZTEzNTkwYzQxY2Jj
MWQ4YjM4MjhkM2FjY2I3NTFiMzguLmI0YTk0NTIzM2I5NWUyYmE1YWFlYzBlMmY3ZWNjMDNhMzk1
ZWMyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKQEAg
LTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0
aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNl
aXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0
ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3Rp
YXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2
NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2Vk
KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2xpZW50LmgKaW5kZXggMGE1ZjY2YmQ5NjdlYzlmZGY2NjRlNTJlNWFmMzk0ZTQ4ZWNlMWY3Yi4u
MzQ4Y2ZmYjllOGUyNWVlODNiYmIzOWEwMmNkM2NmNmQyODU0ZDM5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaApAQCAtMzIsNyArMzIs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7
CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogZW51bSBjbGFzcyBQb2xpY3lBY3Rpb24gOiB1aW50OF90
OwogfQogCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2Vu
ZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRv
dGFsQnl0ZXNUb0JlU2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0
ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKCkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDZmODAzODhjOTMzZDZlZDI5OWQz
NjM1YzNmYWUwNjI5MTNjNjlkMzEuLjVkYzgyNzNkOGZkZjc1ZTQ1NWU3NDEyNjY3NzEwZTE3NzBl
NjczNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RydWN0IE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSB7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJv
cjsKIH07CiAKLXN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSYgZGF0YSwgY29uc3QgU2hhcmVk
QnVmZmVyKiBidWZmZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3N0YXRp
YyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6U3luY2hyb25vdXNMb2FkRGF0YSYgZGF0YSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogYnVmZmVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgQVNT
RVJUKGRhdGEuZGVsYXllZFJlcGx5KTsKICAgICBBU1NFUlQoIWRhdGEucmVzcG9uc2UuaXNOdWxs
KCkgfHwgIWRhdGEuZXJyb3IuaXNOdWxsKCkpOwpAQCAtMzA2LDEwICszMDYsMTAgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgRmlyc3RMb2EKICAgICAgICAgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAK
ICAgICAgICAgaWYgKGlzU3luY2hyb25vdXMoKSB8fCBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZl
cmluZ1RpbWUgPiAwX3MpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YS5lbXB0eSgpOwogCiAgICAg
ICAgIGlmIChjYW5Vc2VDYWNoZShyZXF1ZXN0KSkKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS5lbXB0eSgpOwogICAgIH0KIAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVy
cyBwYXJhbWV0ZXJzID0gbV9wYXJhbWV0ZXJzOwpAQCAtNzM5LDE2ICs3MzksMTYgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNl
JiYgcmVjZWl2ZWRSZXNwb24KICAgICAgICAgJiYgbV9yZXNwb25zZS5leHBlY3RlZENvbnRlbnRM
ZW5ndGgoKSA+IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oMSAqIE1CKQogICAgICAgICAmJiBpc0Zl
dGNoT3JYSFIocmVzb3VyY2VMb2FkSW5mbykKICAgICAgICAgJiYgaXNNZWRpYU1JTUVUeXBlKG1f
cmVzcG9uc2UubWltZVR5cGUoKSkpIHsKLSAgICAgICAgbV9idWZmZXJlZERhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS5lbXB0eSgpOwogICAgICAg
ICBtX3BhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBXZWJMb2FkZXJTdHJhdGVneTo6
bWVkaWFNYXhpbXVtQnVmZmVyaW5nVGltZTsKICAgICB9CiAKICAgICAvLyBGb3IgbXVsdGlwYXJ0
L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxlZCBtdWx0
aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZy4K
ICAgICBpZiAoIWlzU3luY2hyb25vdXMoKSAmJiBtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0g
ICAgICAgIG1fYnVmZmVyZWREYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9idWZmZXJlZERhdGEu
cmVzZXQoKTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAgICAgIG1f
YnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlLnJlc2V0KCk7CiAKICAgICBpZiAobV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikgewog
ICAgICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBtX3Jlc3BvbnNlLmh0dHBTdGF0dXND
b2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCkBAIC04NjMsNyArODYzLDcgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmREaWRSZWNlaXZlUmVzcG9uc2VQb3RlbnRpYWxs
eUluTmV3QnJvd3NpbmdDb250ZXgKICAgICB9KTsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fbnVtQnl0ZXNSZWNlaXZl
ZCkKICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlQnVmZmVyOiBTdGFydGVk
IHJlY2VpdmluZyBkYXRhIChyZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoPSVkKSIsIHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpOwpAQCAtODc0LDEwICs4NzQsMTAgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGludCByZXAKICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQ
cmV2ZW50IG1lbW9yeSBncm93dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQg
c2l6ZSBvZiBlbnRyaWVzIGluIHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGlt
dW1DYWNoZUJ1ZmZlclNpemUgPSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsKLSAgICAgICAgaWYg
KG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGlt
dW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5h
cHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUu
c2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAg
ICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOwor
ICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KICAgICBp
ZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTg4NSw3ICs4
ODUsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogICAgIHVuc2lnbmVkIGVuY29kZWREYXRh
TGVuZ3RoID0gcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCA+PSAwID8gcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCA6IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7
Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhLT5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAg
bV9idWZmZXJlZERhdGEuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIG1fYnVmZmVyZWRE
YXRhRW5jb2RlZERhdGFMZW5ndGggKz0gZW5jb2RlZERhdGFMZW5ndGg7CiAgICAgICAgIHN0YXJ0
QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm47CkBAIC05MTQsMTEgKzkx
NCwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogI2VuZGlmCiAKICAgICBpZiAoaXNTeW5j
aHJvbm91cygpKQotICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5j
aHJvbm91c0xvYWREYXRhLCBtX2J1ZmZlcmVkRGF0YS5nZXQoKSwgbmV0d29ya0xvYWRNZXRyaWNz
KTsKKyAgICAgICAgc2VuZFJlcGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNM
b2FkRGF0YSwgbV9idWZmZXJlZERhdGEuZ2V0KCkuZ2V0KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7
CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YSAmJiAhbV9idWZmZXJlZERh
dGEtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIW1fYnVmZmVyZWREYXRhLmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgLy8gRklYTUU6IFBhc3MgYSByZWFsIHZhbHVlIG9yIHJlbW92ZSB0aGUg
ZW5jb2RlZCBkYXRhIHNpemUgZmVhdHVyZS4KLSAgICAgICAgICAgIHNlbmRCdWZmZXIoKm1fYnVm
ZmVyZWREYXRhLCAtMSk7CisgICAgICAgICAgICBzZW5kQnVmZmVyKCptX2J1ZmZlcmVkRGF0YS5n
ZXQoKSwgLTEpOwogICAgICAgICB9CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAg
fQpAQCAtMTI2NCwxNiArMTI2NCwxNiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVm
ZmVyaW5nVGltZXJGaXJlZCgpCiAgICAgQVNTRVJUKG1fYnVmZmVyZWREYXRhKTsKICAgICBBU1NF
UlQobV9uZXR3b3JrTG9hZCk7CiAKLSAgICBpZiAobV9idWZmZXJlZERhdGEtPmlzRW1wdHkoKSkK
KyAgICBpZiAobV9idWZmZXJlZERhdGEuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEoeyAqbV9i
dWZmZXJlZERhdGEgfSwgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCkpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlRGF0YSh7ICptX2J1ZmZl
cmVkRGF0YS5nZXQoKSB9LCBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoKSk7CiAKLSAg
ICBtX2J1ZmZlcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9idWZmZXJl
ZERhdGEuZW1wdHkoKTsKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0gMDsK
IH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIoU2hhcmVkQnVmZmVy
JiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzZW5kQnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90
IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaXNTeW5jaHJvbm91cygpKTsKIApA
QCAtMTI5NCwxMiArMTI5NCwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJ5U3Rv
cmVBc0NhY2hlRW50cnkoKQogICAgIGlmIChpc0Nyb3NzT3JpZ2luUHJlZmV0Y2goKSkgewogICAg
ICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5u
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkpIHsKICAgICAgICAgICAgIExPQURFUl9SRUxFQVNF
X0xPRygidHJ5U3RvcmVBc0NhY2hlRW50cnk6IFN0b3JpbmcgZW50cnkgaW4gcHJlZmV0Y2ggY2Fj
aGUiKTsKLSAgICAgICAgICAgIHNlc3Npb24tPnByZWZldGNoQ2FjaGUoKS5zdG9yZShtX25ldHdv
cmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBXVEZNb3ZlKG1fcmVzcG9uc2UpLCBXVEZN
b3ZlKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpKTsKKyAgICAgICAgICAgIHNlc3Npb24tPnByZWZl
dGNoQ2FjaGUoKS5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBX
VEZNb3ZlKG1fcmVzcG9uc2UpLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnRha2UoKSk7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBMT0FERVJfUkVMRUFTRV9MT0coInRy
eVN0b3JlQXNDYWNoZUVudHJ5OiBTdG9yaW5nIGVudHJ5IGluIEhUVFAgZGlzayBjYWNoZSIpOwot
ICAgIG1fY2FjaGUtPnN0b3JlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCksIG1fcmVz
cG9uc2UsIFdURk1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSksIFtsb2FkZXIgPSBSZWYgeyAq
dGhpcyB9XShhdXRvJiBtYXBwZWRCb2R5KSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlLT5zdG9yZSht
X25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBtX3Jlc3BvbnNlLCBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLnRha2UoKSwgW2xvYWRlciA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mIG1hcHBlZEJv
ZHkpIG11dGFibGUgewogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgICAgIGlm
IChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291cmNlSGFuZGxlLmlzTnVsbCgpKQogICAgICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDIzNGRhYjViZWVhNWI2NDczMDU1MGM3NzM3MGE5ZjE1
OTU5N2Y5Ny4uY2YxMGNmMGU3MWExYmM2NTU0MGU4N2Q2YmE0YzFiOWM4NTZjMGExZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKQEAgLTExNCw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHdpbGxTZW5k
UmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGlu
Zyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRCbG9j
a0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgZmluYWw7CkBAIC0xOTIsNyArMTkzLDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgdm9p
ZCBidWZmZXJpbmdUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBzZW5kQnVm
ZmVyKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFM
ZW5ndGgpOwogCiAgICAgdm9pZCBjb25zdW1lU2FuZGJveEV4dGVuc2lvbnMoKTsKICAgICB2b2lk
IGludmFsaWRhdGVTYW5kYm94RXh0ZW5zaW9ucygpOwpAQCAtMjI1LDcgKzIyNiw3IEBAIHByaXZh
dGU6CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogCiAgICAgc2l6
ZV90IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggeyAwIH07Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXJlZERhdGE7CisgICAgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyQnVpbGRlciBtX2J1ZmZlcmVkRGF0YTsKICAgICB1bnNpZ25lZCBtX3JlZGlyZWN0Q291
bnQgeyAwIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3luY2hyb25vdXNMb2FkRGF0YT4gbV9z
eW5jaHJvbm91c0xvYWREYXRhOwpAQCAtMjQwLDcgKzI0MSw3IEBAIHByaXZhdGU6CiAKICAgICBX
ZWJDb3JlOjpUaW1lciBtX2J1ZmZlcmluZ1RpbWVyOwogICAgIFJlZlB0cjxOZXR3b3JrQ2FjaGU6
OkNhY2hlPiBtX2NhY2hlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGU7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVu
dHJ5PiBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uOwogICAg
IGJvb2wgbV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5k
ZXggMTE0ODUzZTQ1YjcyNTMzNjRjNzQ3YTcxY2IyYjVhYjhjYzM4ZWZkNS4uMWFmMWUwOGUzYzQ0
MWUyNGYzMDA2NWU5ZjIwNzc2ZTZmOWZjMzNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFBpbmdMb2FkOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVn
YWN5VAogICAgIGRpZEZpbmlzaCh7IH0sIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBQaW5nTG9hZDo6
ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgUGluZ0xvYWQ6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQogewogICAgIFBJTkdfUkVM
RUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKaW5kZXggMTllYzhjZWI5MmUzYzhh
MDU2ZjQ5MjczNjYwY2ZmZjkyNjQzNDFkMS4uYWIyOWEwYjFhYzg0NjZiMGVkNjFlZjU4ZWY0YzIy
MGFiYWI2ZWJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5n
TG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAt
NTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2Vp
dmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRl
ZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlh
dGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0
X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQo
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29u
bmVjdFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFz
ay5jcHAKaW5kZXggNDU1NzgyZDU0YTJlYTliZWUxODY1MGUxYWZkMWNmN2IyY2U5OGM0OS4uMTdk
NDc5MDdhM2Y2ZWU1MmJlNjUwMWQxZGFiMGNhNjA3NTFkNmIwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKQEAgLTc5LDcgKzc5LDcgQEAg
dm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgUmVzcG9uc2VDb20KICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rp
b246Oklnbm9yZSk7CiB9CiAKLXZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lk
IFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJlY29ubmVjdFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVj
dFRhc2suaAppbmRleCAxYzFmZjE2NDcxMTFjNmZhODQ5NGFmNWNmMGM3YmJlYWExYjI2NTAzLi44
NTgwOGUxMjFiNjhjYThiNzNlMjUxOGQxOTNhYjM5NTgxZWFkMWU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCkBAIC01NSw3ICs1NSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50
LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBmaW5hbDsKICAgICB2b2lk
IHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9u
SGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5h
bDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlv
blByZWxvYWRlci5jcHAKaW5kZXggYjM3NzE3OTY5NGNmYjQ2YjViM2ExNzdmNDc3YzkxMDM4NmQ2
YmYwNi4uNWQ5YmQzMzMzOTIxMWNhMWNkNDQ3Yjg3OTJmNTQ2MWVhODdlZGRmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCkBA
IC0xNzUsNyArMTc1LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXMKICAgICAgICAgY2FsbGJh
Y2soKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNrKQogICAg
ICAgICBtX2JvZHlDYWxsYmFjayhidWZmZXItPm1ha2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXIuaAppbmRleCAzMjY1NzBlNjljYTQwNjJjNzg1YTRlY2ZmOTYxYTAxZTBh
OTBhMWNhLi42N2FiYzU1YzYwZmYyNGUzOWRkMDRlY2M1MDIxYjYwNWVlOGJlYmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAt
NTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBSZXNwb25zZUNhbGxiYWNrID0gRnVu
Y3Rpb248dm9pZCgpPjsKICAgICB2b2lkIHdhaXRGb3JSZXNwb25zZShSZXNwb25zZUNhbGxiYWNr
JiYpOwotICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKT47CisgICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+Owog
ICAgIHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNrJiYpOwogCiAgICAgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CkBAIC03
MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVk
ZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2Vu
ZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lk
IGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAg
dm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7
CiAgICAgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljczsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5k
ZXggOTQyMzUzNDgyNzNlODkxYjA3Yjg3NTYxYzFkNjEyZWEyYTQ0MzU5My4uN2EyNjIyMTlkZTc4
YjIzNWQxMjVhOTJiNmUyMzZkMzMyNjJmN2EyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgUmVzb3Vy
Y2VFcnJvciBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6cHJvY2Vzc1Jlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG8KICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIFNlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBp
ZiAoIW1fZGVjb2RlcikgewogICAgICAgICBpZiAoIW1fcmVzcG9uc2VFbmNvZGluZy5pc0VtcHR5
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCmlu
ZGV4IDE4ZjU0NjkxZjM3YzJiYWJiYzhjMWEzYmMwOTQzNzBlOWIyOWViNzEuLjQ0ZmMwNjg1ZmEw
ZmVkYzg3NDIxOTE2ZTkxM2E2NzRiMWMwZmRiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVj
dFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBm
aW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZS5jcHAKaW5kZXggZmRiZmIxNDM1OTc2Y2JmNjVmNjEyNTY4M2FjMWVkZDI0MDllMjc4Ny4uNmYy
NmI0Y2MyZGVmYTBkOTg4N2M2ZjQyNDVlOGY1NGZiZWM0YmEyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZS5jcHAKQEAgLTU4MSw3ICs1ODEsNyBAQCBTdG9yYWdlOjpSZWNvcmQgQ2FjaGU6OmVu
Y29kZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRpb24sIGNvbnN0CiAg
ICAgRGF0YSBib2R5OwogICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgW10o
Y29uc3QgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgLy8gRklY
TUU6IFN0b3JlIGZvcm0gZGF0YSBib2R5LgotICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShjb25zdCBSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGJvZHkgPSB7IGJ1ZmZl
ci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9OwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0
cl90JikgewogICAgIH0pOwpAQCAtNjczLDcgKzY3Myw3IEBAIHN0ZDo6b3B0aW9uYWw8UmVjb3Jk
PiBDYWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcmVjb3JkID0gV1RGTW92ZShyZXN1bHQt
PnJlY29yZCk7Ci0gICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6
ZSgpKTsKKyAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CiAKICAgICBy
ZXR1cm4gcmVjb3JkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IDA0Nzc2ODM2Zjk5OTA5MzkxMGIzOTlkNzU1Mzg1
NWQ1ZDNmMWZmNGUuLmRkMzA1YWYyOTc2NjFlNDc2YzQ5Njc3ZGY1NzIxZWZkMWVjOTMyZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIENhY2hlOjpjb21wbGV0ZVJldHJpZXZlKFJl
dHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyLCBzdGQ6OnVuaXF1ZV9wdAogICAgIGhh
bmRsZXIoV1RGTW92ZShlbnRyeSksIGluZm8pOwogfQogICAgIAotc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhKQorc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSkKIHsKICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwg
V1RGTW92ZShyZXNwb25zZURhdGEpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFk
ZXJzKG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24obV9zZXNzaW9uSUQpLCByZXF1ZXN0
LCByZXNwb25zZSkpOwogfQpAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gQ2FjaGU6Om1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCBy
ZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RI
ZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24obV9zZXNzaW9uSUQpLCByZXF1
ZXN0LCByZXNwb25zZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9y
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiByZXNwb25zZURhdGEsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIEFTU0VSVChyZXNwb25zZURhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAppbmRleCAxOTlmMGNmYjcz
MjU0M2M1ZmVhZjRmZTIzMDFlNmExYzEyZjg4ZmU4Li5lZDA0ZWJjYTBiMzZmM2Y5YzRjMGU3YmFj
NzEzMzZiOWU5NmMzNTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTQzLDcgKzQzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIExvd1Bvd2VyTW9kZU5vdGlmaWVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjYsNyArMTY2LDcgQEAgcHVibGljOgogICAgIH07CiAg
ICAgdXNpbmcgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQoc3RkOjp1
bmlxdWVfcHRyPEVudHJ5PiwgY29uc3QgUmV0cmlldmVJbmZvJik+OwogICAgIHZvaWQgcmV0cmll
dmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJhbWVJRCYs
IHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBSZXRyaWV2ZUNvbXBs
ZXRpb25IYW5kbGVyJiYpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmUoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIEZ1bmN0aW9uPHZvaWQoTWFwcGVk
Qm9keSYpPiYmID0gbnVsbHB0cik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9yZShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIEZ1bmN0
aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmID0gbnVsbHB0cik7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEVudHJ5PiBzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXAp
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gdXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IEVudHJ5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgdmFsaWRhdGluZ1Jlc3BvbnNlKTsKIApAQCAtMTg1LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJldHJpZXZlRGF0YShjb25zdCBEYXRhS2V5JiwgRnVuY3Rpb248dm9pZChjb25zdCB1
aW50OF90Kiwgc2l6ZV90KT4pOwogICAgIHZvaWQgc3RvcmVEYXRhKGNvbnN0IERhdGFLZXkmLCAg
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
RW50cnk+IG1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
Jik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+IG1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCk7CiAKICAgICB2b2lkIGR1bXBDb250ZW50c1Rv
RmlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBmMWVmZmYzNTBmYTM3ZjZiNDY4MTU5ZmM2NjJl
N2FhOTQyODNkN2UxLi43NjEwNzhkZWEwOTNjMDQ1NTViZTk4YjA1MTczZTM0MTUwNjdhODU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmNwcApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiBu
YW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAotRW50cnk6OkVudHJ5KGNvbnN0IEtleSYga2V5LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBT
dHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKQorRW50cnk6OkVudHJ5KGNvbnN0IEtleSYg
a2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8c3Rk
OjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycykKICAgICA6IG1f
a2V5KGtleSkKICAgICAsIG1fdGltZVN0YW1wKFdhbGxUaW1lOjpub3coKSkKICAgICAsIG1fcmVz
cG9uc2UocmVzcG9uc2UpCkBAIC0xMDMsNyArMTAzLDcgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5
OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogICAgIERhdGEgYm9keTsKICAgICBpZiAo
bV9idWZmZXIpIHsKICAgICAgICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KTsKLSAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcio+KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07Cisg
ICAgICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcio+KG1fYnVm
ZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CiAgICAgfQogCiAgICAgcmV0
dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFkZXIsIGJvZHksIHsgfSB9OwpAQCAtMTk2LDcg
KzE5Niw3IEBAIHZvaWQgRW50cnk6OmluaXRpYWxpemVCdWZmZXJGcm9tU3RvcmFnZVJlY29yZCgp
IGNvbnN0CiAgICAgbV9idWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3Nv
dXJjZVN0b3JhZ2VSZWNvcmQuYm9keS5kYXRhKCksIG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5
LnNpemUoKSk7CiB9CiAKLVdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogRW50cnk6OmJ1ZmZlcigpIGNv
bnN0CitXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBFbnRyeTo6YnVmZmVyKCkgY29u
c3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBpbml0aWFsaXplQnVmZmVyRnJvbVN0
b3JhZ2VSZWNvcmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaAppbmRleCA5NjkxNWMzODAxYzM3ZGRhYzNlOGU2MDMy
MWY4OGMyMjI5Y2Q1OWEwLi45YzA0MjBkNDRhODE1OGRmYzViMjFjZjE4ODIwNGNmM2E5MTZiNDJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVFbnRyeS5oCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIGNsYXNzIEVudHJ5IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBFbnRyeShjb25zdCBLZXkm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5
aW5nUmVxdWVzdEhlYWRlcnMpOworICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVx
dWVzdEhlYWRlcnMpOwogICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVx
dWVzdCwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVx
dWVzdEhlYWRlcnMpOwogICAgIGV4cGxpY2l0IEVudHJ5KGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYp
OwogICAgIEVudHJ5KGNvbnN0IEVudHJ5Jik7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzcG9uc2U7IH0KICAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3Ry
aW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyeWluZ1Jl
cXVlc3RIZWFkZXJzOyB9CiAKLSAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNv
bnN0OworICAgIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0
OwogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiYgcmVk
aXJlY3RSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWRpcmVjdFJlcXVlc3Q7IH0KIAogI2lm
IEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IG1fdmFyeWluZ1JlcXVlc3RIZWFk
ZXJzOwogCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IG1fcmVk
aXJlY3RSZXF1ZXN0OwotICAgIG11dGFibGUgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gbV9idWZmZXI7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICBtdXRh
YmxlIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgbV9zaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IGFkMDlkZjQ0
ZDlhZjEyZmQ0MDgwMzEwNTQ2ODM1MzZlYTBkYzgxOTMuLjQxZDgyMzUwMjQ3NDdiNmZjNGEzYWM1
NDhlMTMzNGVkNmNiNWVmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAK
QEAgLTQ2LDcgKzQ2LDcgQEAgU3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQoQ2FjaGUm
IGNhY2hlLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBnbG9iYWxGcmFtZUkKICAgICA6IG1fY2FjaGUo
Y2FjaGUpCiAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKQogICAgICwgbV9vcmlnaW5hbFJlcXVlc3QocmVxdWVzdCkKLSAgICAsIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKKyAgICAsIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2NhY2hl
RW50cnkoV1RGTW92ZShjYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikpCiB7CiAgICAgQVNTRVJUKCFt
X2NhY2hlRW50cnkgfHwgbV9jYWNoZUVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CkBAIC0xMDks
NyArMTA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBtX3Jlc3BvbnNlID0gcmVj
ZWl2ZWRSZXNwb25zZTsKIAogICAgIGlmIChtX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpCi0gICAg
ICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICBtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLnJlc2V0KCk7CiAKICAgICBib29sIHZhbGlkYXRpb25TdWNjZWVkZWQgPSBt
X3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0OyAvLyAzMDQgTm90IE1vZGlmaWVkCiAg
ICAgaWYgKHZhbGlkYXRpb25TdWNjZWVkZWQgJiYgbV9jYWNoZUVudHJ5KQpAQCAtMTIwLDE3ICsx
MjAsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBjb21wbGV0aW9uSGFuZGxlcihQ
b2xpY3lBY3Rpb246OlVzZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZl
QnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkKK3ZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnkpOwogCiAgICAgaWYgKG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUpIHsKICAgICAgICAgLy8gUHJldmVudCBtZW1vcnkgZ3Jvd3RoIGluIGNhc2Ug
b2Ygc3RyZWFtaW5nIGRhdGEuCiAgICAgICAgIGNvbnN0IHNpemVfdCBtYXhpbXVtQ2FjaGVCdWZm
ZXJTaXplID0gMTAgKiAxMDI0ICogMTAyNDsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUtPnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUp
Ci0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLT5hcHBlbmQoYnVmZmVyLmdldCgp
KTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5z
aXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUgPSBudWxscHRyOworICAgICAgICAgICAgbV9idWZm
ZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KIH0KIApAQCAtMTM5LDEwICsxMzksMTAg
QEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6
TmV0d29ya0xvYWRNZXRyaWNzJikKICAgICBpZiAobV9kaWRDb21wbGV0ZSkKICAgICAgICAgcmV0
dXJuOwogICAgIGlmICghbV9jYWNoZUVudHJ5ICYmIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpIHsK
LSAgICAgICAgbV9jYWNoZUVudHJ5ID0gbV9jYWNoZS0+c3RvcmUobV9vcmlnaW5hbFJlcXVlc3Qs
IG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuY29weVJlZigpLCBbXShhdXRvJiBt
YXBwZWRCb2R5KSB7IH0pOworICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5zdG9yZSht
X29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5nZXQo
KSwgW10oYXV0byYgbWFwcGVkQm9keSkgeyB9KTsKICAgICAgICAgLy8gQ3JlYXRlIGEgc3ludGhl
dGljIGNhY2hlIGVudHJ5IGlmIHdlIGNhbid0IHN0b3JlLgogICAgICAgICBpZiAoIW1fY2FjaGVF
bnRyeSAmJiBpc1N0YXR1c0NvZGVDYWNoZWFibGVCeURlZmF1bHQobV9yZXNwb25zZS5odHRwU3Rh
dHVzQ29kZSgpKSkKLSAgICAgICAgICAgIG1fY2FjaGVFbnRyeSA9IG1fY2FjaGUtPm1ha2VFbnRy
eShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlKSk7CisgICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBtX2NhY2hlLT5tYWtlRW50cnko
bV9vcmlnaW5hbFJlcXVlc3QsIG1fcmVzcG9uc2UsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUudGFr
ZSgpKTsKICAgICB9CiAKICAgICBkaWRDb21wbGV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmgKaW5kZXggYzBlMWUxNGIyYWM0NjAzNThmODE0MDdjZDcwYzQwOTA1MmFmOGVmZS4u
MWI4NDNkYjdlYzI3MGRiOWRhYjllOGEyNWYyYTQ4YThlY2FlMmE4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGlu
Zyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKQEAgLTc1LDcgKzc1
LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25z
ZTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGU7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVyQnVpbGRlciBtX2J1ZmZlcmVkRGF0YUZv
ckNhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hl
RW50cnk7CiAgICAgYm9vbCBtX2RpZENvbXBsZXRlIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcAppbmRl
eCA1ZTJlMDJlMmZiYTBiNGEwYzAzYjVkM2U2NmI5N2Y3YmNjYzc5NThiLi4zMTk5YmZmMzExYjZj
M2VlZmJlOTUwYjQ1ZTZiMGE5NmUzMjc3N2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVByZWZldGNoQ2FjaGU6OkVudHJ5OjpFbnRyeShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQorUHJlZmV0Y2hDYWNoZTo6RW50cnk6OkVudHJ5KFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIDogcmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpLCBi
dWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogfQpAQCAtNzIsNyArNzIsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8UHJlZmV0Y2hDYWNoZTo6RW50cnk+IFByZWZldGNoQ2FjaGU6OnRha2UoY29uc3QgVVJM
JiB1cmwpCiAKIHN0YXRpYyBjb25zdCBTZWNvbmRzIGV4cGlyYXRpb25UaW1lb3V0IHsgNV9zIH07
CiAKLXZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmUoY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQordm9pZCBQcmVmZXRjaENhY2hlOjpzdG9yZShjb25zdCBVUkwmIHJl
cXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghbV9z
ZXNzaW9uUHJlZmV0Y2hlcykKICAgICAgICAgbV9zZXNzaW9uUHJlZmV0Y2hlcyA9IG1ha2VVbmlx
dWU8UHJlZmV0Y2hFbnRyaWVzTWFwPigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuaAppbmRleCBhMjUxNTIwYjMxZWFjOTIxYzIyZDMx
MTUxZDZkMjMxYTFiZWQxMzhjLi41MmMwYjEwZmNjNmQ1YTZkZTExNDQ3ZTdlNGU4MjJkZjhmODQx
Y2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZl
dGNoQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZl
dGNoQ2FjaGUuaApAQCAtNDcsMTggKzQ3LDE4IEBAIHB1YmxpYzoKIAogICAgIHN0cnVjdCBFbnRy
eSB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgRW50
cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKTsKKyAgICAgICAgRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQ
dHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgICAgIEVudHJ5KFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwog
Ci0gICAgICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlbGVhc2VCdWZmZXIoKSB7IHJl
dHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsgfQorICAgICAgICBSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVsZWFzZUJ1ZmZlcigpIHsgcmV0dXJuIGJ1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpOyB9CiAKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZTsKLSAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAg
ICAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAg
ICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVkaXJlY3RSZXF1ZXN0OwogICAgIH07CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHRha2UoY29uc3QgVVJMJik7Ci0gICAgdm9pZCBz
dG9yZShjb25zdCBVUkwmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgc3RvcmUoY29uc3QgVVJMJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJik7CiAgICAgdm9pZCBzdG9yZVJlZGlyZWN0KGNvbnN0IFVSTCYsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5oCmluZGV4IGI5YWIwZGVlYmI5ZjkyN2M3Mzc0MmU4NmEwYmU3Zjk3
MTYwYmQ2ZmIuLjQxNjY4YTViMWNkNzM4Njk2N2I4ZmQ5NzNlOTY3MzJlY2E5MDdlZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTmVn
b3RpYXRlTW9kZXJuVExTKGNvbnN0IFVSTCYpOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtM
b2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpOwogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBS
ZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgdHJhbnNmZXJTYW5kYm94RXh0
ZW5zaW9uVG9Eb3dubG9hZChEb3dubG9hZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggZTc4
MGQ2YzFjM2NkMWViMmMyZmY1YTBjNTY0YTBlNGQ4OGI3ZWE1ZC4uMzA1MWYxNjljYjBhMzcwOTk4
NWExNjExMjJjMjVmMGU4ZjE3YmQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC00NDIsNyAr
NDQyLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkQ29tcGxldGVXaXRoRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXIKICAgICAgICAgbV9jbGllbnQtPmRpZENv
bXBsZXRlV2l0aEVycm9yKGVycm9yLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogfQogCi12b2lkIE5l
dHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmIGRhdGEpCit2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIFdURkVt
aXRTaWducG9zdChtX3Rhc2suZ2V0KCksICJEYXRhVGFzayIsICJyZWNlaXZlZCAlemQgYnl0ZXMi
LCBkYXRhLT5zaXplKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKaW5kZXggNjc3YzYxZGExYTE4OTRj
MWY1OTY1NmQ5MjcwOWViNzFkNTkxYTU1My4uM2RjNjVmZjgyYzlkYTg5MmQyMGMzNDg4NmU1YTFj
NGQ3OWRhZGVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJs
L05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQg
TmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYg
cmVxdWVzdCwgQ3VybFJlc3BvCiAgICAgaW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9CiAK
LXZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVl
c3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgTmV0d29ya0RhdGFUYXNrQ3Vy
bDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9Owog
ICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpDYW5jZWxpbmcgfHwgc3RhdGUoKSA9PSBTdGF0ZTo6
Q29tcGxldGVkIHx8ICghbV9jbGllbnQgJiYgIWlzRG93bmxvYWQoKSkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaApp
bmRleCAxYzQyN2RkYjc4ZDY5NTNmZTg5NjBjNTY5MmFmZGU0ZjRmMGVlZTg1Li40NWJlNWNlMTg0
MzI1MjcxZDVjMDgwZGQzNGYxZWU0YTE2NjQyYTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKQEAgLTY4LDcg
KzY4LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8V2ViQ29yZTo6Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1
cmxSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZXF1ZXN0U3RhdHVzID0gUmVx
dWVzdFN0YXR1czo6TmV3UmVxdWVzdCk7CiAgICAgdm9pZCBjdXJsRGlkU2VuZERhdGEoV2ViQ29y
ZTo6Q3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykg
b3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OkN1cmxS
ZXF1ZXN0JiwgV2ViQ29yZTo6Q3VybFJlc3BvbnNlJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgY3Vy
bERpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKFdl
YkNvcmU6OkN1cmxSZXF1ZXN0JiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZENvbXBsZXRlKFdlYkNvcmU6OkN1cmxSZXF1
ZXN0JiwgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiYpIG92ZXJyaWRlOwogICAgIHZvaWQg
Y3VybERpZEZhaWxXaXRoRXJyb3IoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiYsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYmKSBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRh
VGFza1NvdXAuY3BwCmluZGV4IGU2NWIyZWE4MzhiMDgxODNjOTZiODMxMjBiMWZlZjE1NmJiOGMw
OTUuLmU2N2UwNWJhODQ3OGE1ODE4MzBlMzk3MDY4YjMyZmIwOGQ5MWI3ZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNr
U291cC5jcHAKQEAgLTE3NjEsNyArMTc2MSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6
ZGlkUmVhZERhdGFVUkwoc3RkOjpvcHRpb25hbDxEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiYmCiAg
ICAgfQogCiAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25z
ZShtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCByZXN1bHQudmFsdWUoKSk7Ci0gICAgYXV0byBieXRl
cyA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkp
LT5jcmVhdGVHQnl0ZXMoKTsKKyAgICBhdXRvIGJ5dGVzID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CiAgICAgbV9pbnB1dFN0cmVh
bSA9IGFkb3B0R1JlZihnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fYnl0ZXMoYnl0ZXMu
Z2V0KCkpKTsKICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZSgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlk
ZXIuaAppbmRleCBmNWRiNzA2YzQ0NTgwMjEwODdmOTU5OTY2OWRmYTdkOWY4Mzc5NzhjLi4zM2Q0
M2I3MjIzOGQyMDNlN2VkZWM5NDE0Y2FmOWZkYThmNDA1MjZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaApA
QCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3QgUGFja2V0T3B0aW9uczsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgUmVnaXN0cmFibGVEb21haW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggMjlm
NzFkN2U2ZGM3NTBlZjE5ZjMyODYyYzg5YjcxODVlMDNiZjg5Ni4uZGY4ZWUzMGM0M2MwZmZmNGQw
ZWE2ZDhjZWNlM2ZjZjRjYjMzZWY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKQEAgLTUxLDkgKzUxLDkgQEAgc3RkOjpvcHRpb25hbDxT
aGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGRhdGEpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
OwogICAgIGlmIChkYXRhLnNpemUoKSkKLSAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAg
cmV0dXJuIHsgV1RGTW92ZShidWZmZXIpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCBlOWNkODcyZjhkNDRmMTVlMGVlMzdjNzM0
OTJiMmQ4MDJhYzkwNzE2Li4xN2YwOGMyOGVhMTI1YjU1MDk5M2VlZDI0ZDU5NjNiODUxMGExMTQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBA
IC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotLy8gRW5jb2RlcyBhIFNoYXJlZEJ1ZmZlciB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgY29weSBv
ZiB0aGUgZGVjb2RlZCBkYXRhIGluIGEgbmV3IFNoYXJlZEJ1ZmZlci4KKy8vIEVuY29kZXMgYSBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBjb3B5IG9mIHRoZSBk
ZWNvZGVkIGRhdGEgaW4gYSBuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KIC8vIFRvIGF2b2lk
IGNvcHlpbmcgZnJvbSB0aGUgRGVjb2RlciwgdXNlIFNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Ug
dG8gcmVjZWl2ZSBhIERhdGFSZWZlcmVuY2UgaW5zdGVhZC4KIAogI3ByYWdtYSBvbmNlCkBAIC0z
OSwxOSArMzksMTkgQEAgY2xhc3MgU2hhcmVkQnVmZmVyQ29weSB7CiBwdWJsaWM6CiAgICAgU2hh
cmVkQnVmZmVyQ29weSgpID0gZGVmYXVsdDsKIAotICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1f
YnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9Ci0gICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZm
ZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlciA/
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPigpKSB7IH0KKyAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsg
fQogICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCisgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KKyAgICBTaGFyZWRC
dWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKKyAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkg
OiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigpKSB7IH0KKyAgICBTaGFyZWRCdWZmZXJD
b3B5KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAg
ICAgOiBtX2J1ZmZlcihidWZmZXItPm1ha2VDb250aWd1b3VzKCkpIHsgfQotICAgIFNoYXJlZEJ1
ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCisgICAgU2hhcmVk
QnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiAgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpIHsgfQogCi0gICAg
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSB7IHJldHVy
biBtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAg
ICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9idWZmZXI7IH0KIAogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOyB9CiAgICAgc2l6ZV90
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9
CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVjb2RlKERlY29kZXImKTsKIAogcHJp
dmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaAppbmRleCBkM2QwZWM1ZTk3ODU1OTliNjM0YTg0
YzZjNDQ3MWI1MmNkMjIxM2YxLi42N2VjOGU1ZTkyYmQwMjQxMTVkYjBkNDA4MGEyNGZlNzM1NzBk
M2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZS5oCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLy8gRW5jb2RlcyBhIFNoYXJlZEJ1ZmZlciBvciBEYXRh
UmVmZXJlbmNlIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBEYXRhUmVmZXJlbmNlIHRvIHRoZSBkZWNv
ZGVkIGRhdGEuCisvLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBvciBEYXRhUmVm
ZXJlbmNlIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBEYXRhUmVmZXJlbmNlIHRvIHRoZSBkZWNvZGVk
IGRhdGEuCiAKICNwcmFnbWEgb25jZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL1NoYXJlZE1lbW9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9y
eS5jcHAKaW5kZXggYjNhOTlhZjhmNTEyN2Y2YTY1M2NjMWM4Zjg1YjYyYjZjYWFmMTU4YS4uYzAy
NmY1NDk1NjliMmJlMDA3OGFlMzI1ZDA1MzllMDcxYWYxMTA0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vU2hhcmVkTWVtb3J5LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0cjxTaGFyZWRNZW1vcnk+IFNo
YXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0
cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtNDgsMTAgKzQ4LDEwIEBAIFJlZlB0cjxTaGFyZWRNZW1v
cnk+IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
ICAgICByZXR1cm4gc2hhcmVkTWVtb3J5OwogfQogCi1SZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90IGRhdGFTaXplKSBjb25z
dAorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkTWVtb3J5OjpjcmVhdGVTaGFyZWRCdWZmZXIoc2l6
ZV90IGRhdGFTaXplKSBjb25zdAogewogICAgIEFTU0VSVChkYXRhU2l6ZSA8PSBzaXplKCkpOwot
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyIHsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyIHsKICAgICAgICAgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XSAoKSAtPiBj
b25zdCB1aW50OF90KiB7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KHByb3RlY3RlZFRoaXMtPmRhdGEoKSk7CiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9TaGFyZWRNZW1vcnkuaAppbmRleCA3NmI3M2NhZTRjODVkN2VlMzY4YjFmODRkNTFlZTAw
ZjkyZTkwNDdjLi4xYjRmZGZhZjY4Mzg5ZGNlNzI4ZmYzNGU1ZTVmMDEyZTI0M2ZhMmNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKQEAgLTQ0LDggKzQ0LDggQEAgY2xhc3Mg
RW5jb2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiB9CiAKICNpZiBPUyhEQVJXSU4pCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogCiAg
ICAgLy8gRklYTUU6IENoYW5nZSB0aGVzZSBmYWN0b3J5IGZ1bmN0aW9ucyB0byByZXR1cm4gUmVm
PFNoYXJlZE1lbW9yeT4gYW5kIGNyYXNoIG9uIGZhaWx1cmUuCiAgICAgc3RhdGljIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IGFsbG9jYXRlKHNpemVfdCk7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRN
ZW1vcnk+IGNvcHlCdWZmZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CisgICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGNvcHlCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtYXAo
Y29uc3QgSGFuZGxlJiwgUHJvdGVjdGlvbik7CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMp
CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHdyYXBNYXAodm9pZCosIHNpemVfdCwg
aW50IGZpbGVEZXNjcmlwdG9yKTsKQEAgLTE1NCw3ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgLy8g
UmV0dXJuIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGluIGJ5dGVzLgogICAgIHN0YXRpYyB1bnNpZ25l
ZCBzeXN0ZW1QYWdlU2l6ZSgpOwogCi0gICAgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OworICAgIFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QpIGNvbnN0OwogCiBwcml2
YXRlOgogI2lmIE9TKERBUldJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggMzVlYTE2MjE1NmEyMDcw
MjZkZjEzNDFjNWMwYTg3M2EyM2E3ZWM3MS4uM2MxYjU3ZDVhYTI2ZWM3MmU2MGI1ZDc4YTExZTlm
ZDg1MmNmZmVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTU2NCw3ICs1NjQsNyBAQCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNv
cmU6OkZvbnQ+Pjo6ZGVjbwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KCppbmNsdWRlc0NyZWF0aW9uRGF0YSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CiAgICAg
ICAgIGRlY29kZXIgPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2Vu
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlz
dEltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggNDU0MTY0MzZjMjUwNTIwODM4ZTVkZmRjYzJi
ZmUzNTNmYjU5YzJhMS4uZTlhNTEzYTMwNWVkZDY1YmRmYTM3NGUxYmQwZTNmZWFiMWY2YjgyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtMTA1
LDcgKzEwNSw3IEBAIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBDR0Rpc3BsYXlMaXN0SW1hZ2VC
dWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlCiAgICAgUkVMRUFTRV9MT0coUmVt
b3RlTGF5ZXJUcmVlLCAiQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZCBvZiBzaXplICVk
eCVkIGVuY29kZWQgZGlzcGxheSBsaXN0IG9mICVsZCBieXRlcyIsIHNpemUud2lkdGgoKSwgc2l6
ZS5oZWlnaHQoKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKTsKICNlbmRpZgogCi0gICAg
cmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVyQ29weSB7
IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSB9IH07
CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSB7IElQQzo6U2hhcmVkQnVmZmVy
Q29weSB7IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKIH0K
IAogV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNr
ZW5kOjpjb250ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291
cmNlLmNwcAppbmRleCAyYzE2MTFjOWU3MGY4ZjlhMTM3OWMyYzg0MzA4NDczNTJlNGM5NmNhLi42
ZmEwMmE3YmMzZWU1NGFlNmQzMjUzODEwZDc4ZGVjMzE2NTM1M2RiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC01NSwxNSArNTUsMTUgQEAgYm9vbCBT
aGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBI
YW5kbGUmIGhhbmRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQorUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigp
CiB7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVu
dDo6UHJvdmlkZXIgeworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVu
dDo6UHJvdmlkZXIgewogICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1cm4g
c2VsZi0+ZGF0YSgpOyB9LAogICAgICAgICBbc2VsZiA9IFJlZiB7ICp0aGlzIH1dKCkgeyByZXR1
cm4gc2VsZi0+c2l6ZSgpOyB9CiAgICAgfSk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIo
KSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6
dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBSZWZQdHI8U2hhcmVhYmxlUmVz
b3VyY2U+IHJlc291cmNlID0gU2hhcmVhYmxlUmVzb3VyY2U6Om1hcCgqdGhpcyk7CiAgICAgaWYg
KCFyZXNvdXJjZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKaW5k
ZXggYTBlZDA4NTczNGI3NzU1MTRjMTE2N2RlZjNkN2NiNGY2NGU0MTJhYS4uZGExZWVlMGFkNjJj
YjM0ODRjMWMzNDA1YzQ4NzBjZjBjNTFlMTYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWFibGVSZXNvdXJjZS5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwor
Y2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0LDcgKzU0
LDcgQEAgcHVibGljOgogICAgICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsK
ICAgICAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRlY29k
ZXImLCBIYW5kbGUmKTsKIAotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gdHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlYWJsZVJlc291cmNlOwpAQCAt
ODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIFNoYXJlYWJsZVJlc291
cmNlKFJlZjxTaGFyZWRNZW1vcnk+JiYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6ZSk7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJl
ZEJ1ZmZlcigpOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHdyYXBJblNoYXJl
ZEJ1ZmZlcigpOwogCiAgICAgUmVmPFNoYXJlZE1lbW9yeT4gbV9zaGFyZWRNZW1vcnk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGU5
M2ZkODllN2VmYzA3NmE5YjkxODc3N2JkNjA4YzgzNDRiOTRhYmEuLmE2OWViYzU5NjMyNTllYTRh
ZDQ1MTcxNWI3NzFjZGQyZGI2NDQzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIERFRklORV9TSU1QTEVf
QVJHVU1FTlRfQ09ERVJfRk9SX1NPVVJDRShEaXNwbGF5TGlzdDo6U2V0SW5saW5lU3Ryb2tlQ29s
b3IpCiAKICN1bmRlZiBERUZJTkVfU0lNUExFX0FSR1VNRU5UX0NPREVSX0ZPUl9TT1VSQ0UKIAot
c3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNo
YXJlZEJ1ZmZlciogYnVmZmVyKQorc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAg
ICBib29sIGlzTnVsbCA9ICFidWZmZXI7CiAgICAgZW5jb2RlciA8PCBpc051bGw7CkBAIC0xNzcs
NyArMTc3LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICNpZiBV
U0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICAvLyBEbyBub3QgdXNlIHNoYXJlZCBtZW1vcnkg
Zm9yIFNoYXJlZEJ1ZmZlciBlbmNvZGluZyBpbiBVbml4LCBiZWNhdXNlIGl0J3MgZWFzeSB0byBy
ZWFjaCB0aGUKKyAgICAvLyBEbyBub3QgdXNlIHNoYXJlZCBtZW1vcnkgZm9yIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIgZW5jb2RpbmcgaW4gVW5peCwgYmVjYXVzZSBpdCdzIGVhc3kgdG8gcmVhY2gg
dGhlCiAgICAgLy8gbWF4aW11bSBudW1iZXIgb2YgZmlsZSBkZXNjcmlwdG9ycyBvcGVuIHBlciBw
cm9jZXNzIHdoZW4gc2VuZGluZyBsYXJnZSBkYXRhIGluIHNtYWxsIGNodW5rcwogICAgIC8vIG92
ZXIgdGhlIElQQy4gQ29ubmVjdGlvblVuaXguY3BwIGFscmVhZHkgdXNlcyBzaGFyZWQgbWVtb3J5
IHRvIHNlbmQgYW55IElQQyBtZXNzYWdlIHRoYXQgaXMKICAgICAvLyB0b28gbGFyZ2UuIFNlZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NTcxLgpAQCAtMTkxLDcg
KzE5MSw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICNlbmRpZgogfQogCi1zdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNOdWxs
OwogICAgIGRlY29kZXIgPj4gaXNOdWxsOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2Rlciwg
UmVmUHRyPENvbnRpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghYnVmZmVyU2l6
ZSkgewotICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
KyAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8Q29u
dGkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSwgMSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICNlbHNlCiAgICAgU2hhcmVk
TWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXBj
SGFuZGxlKSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxDb250aQogICAg
IHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyB2b2lkIGVuY29kZVR5
cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMs
IGNvbnN0IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgQVNTRVJU
KHR5cGVzLnNpemUoKSA9PSBkYXRhLnNpemUoKSk7CiAgICAgZW5jb2RlciA8PCB0eXBlczsKQEAg
LTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjbwogICAgICAgICBlbmNvZGVT
aGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKIH0KIAotc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0
b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JiBkYXRhKQorc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0
YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mIGRhdGEpCiB7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlcykp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2MSw3ICsyNjEsNyBAQCBzdGF0aWMgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZl
Y3RvcjxTdHJpbgogICAgIEFTU0VSVChkYXRhU2l6ZSA9PSB0eXBlcy5zaXplKCkpOwogCiAgICAg
Zm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGRhdGFTaXplOyBpKyspIHsKLSAgICAgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBi
dWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkYXRhLmFwcGVuZChi
dWZmZXIpOwpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxET01DYWNoZUVu
Z2luZTo6UmVjb3JkPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IERPTUNhCiAgICAg
ZW5jb2RlciA8PCByZWNvcmQudXBkYXRlUmVzcG9uc2VDb3VudGVyOwogICAgIGVuY29kZXIgPDwg
cmVjb3JkLnJlc3BvbnNlQm9keVNpemU7CiAKLSAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNw
b25zZUJvZHksIFsmXShjb25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikg
eworICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxT
aGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgZW5jb2RlciA8PCB0cnVlOwogICAgICAg
ICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKICAgICB9LCBbJl0o
Y29uc3QgUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKQEAgLTQxNCw3ICs0MTQsNyBAQCBzdGQ6
Om9wdGlvbmFsPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVF
bmdpbmU6OlJlY29yZD46OmRlYwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
aWYgKGhhc1NoYXJlZEJ1ZmZlckJvZHkpIHsKLSAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwog
ICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKGJ1ZmZlcikKQEAgLTE1NTAs
MTAgKzE1NTAsMTAgQEAgdm9pZCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpF
bnRyeT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdAogICAgIGlmIChoYXNTdHJpbmcp
CiAgICAgICAgIGVuY29kZXIgPDwgc3RkOjpnZXQ8U3RyaW5nPihwbGF0Zm9ybURhdGEpOwogCi0g
ICAgYm9vbCBoYXNCdWZmZXIgPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKTsKKyAgICBib29sIGhhc0J1ZmZlciA9IHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSk7CiAgICAg
ZW5jb2RlciA8PCBoYXNCdWZmZXI7CiAgICAgaWYgKGhhc0J1ZmZlcikKLSAgICAgICAgZW5jb2Rl
U2hhcmVkQnVmZmVyKGVuY29kZXIsIHN0ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4ocGxhdGZvcm1EYXRhKS5wdHIoKSk7CisgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNv
ZGVyLCBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKS5wdHIoKSk7CiB9
CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5JiBkYXRhKQpA
QCAtMTU4Myw3ICsxNTgzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpFbnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWIKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKGhhc0J1ZmZlcikgewotICAgICAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gdmFsdWU7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHZh
bHVlOwogICAgICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCB2YWx1ZSkgfHwg
IXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBkYXRhLnBsYXRmb3Jt
RGF0YSA9IHsgdmFsdWUucmVsZWFzZU5vbk51bGwoKSB9OwpAQCAtMjk3Niw3ICsyOTc2LDcgQEAg
c3RkOjpvcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6U2VyaWFsaXplZEF0dGFjaG0KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlk
ZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OworICAgIHJldHVybiB7
IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfSB9OwogfQogCiAjZW5k
aWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKQEAgLTMwMTAsNTYgKzMwMTAsNTYgQEAg
c3RkOjpvcHRpb25hbDxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6U2VyaWFsaXplZFAKIH0KICNlbmRpZgogCi12b2lkIEFyZ3VtZW50Q29kZXI8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3ZvaWQgQXJndW1l
bnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiBidWZmZXIpCiB7CiAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZl
ci5nZXQoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3Vt
ZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBB
cmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICgh
ZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICByZXR1cm4gYnVmZmVyOwogfQogCi12b2lkIEFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3ZvaWQgQXJndW1lbnRDb2Rl
cjxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCiB7CiAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7CiB9
CiAKLXN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0
aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ewotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29k
ZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKIH0KIAotdm9pZCBBcmd1bWVudENv
ZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBi
dWZmZXIuZ2V0KCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UmVmUHRyPFNo
YXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBp
ZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotdm9pZCBBcmd1bWVudENv
ZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKQogewogICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkp
OwogfQogCi1zdGQ6Om9wdGlvbmFsPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gQXJndW1l
bnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50
Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihk
ZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKQEAgLTMxMjMsNyArMzEyMyw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVm
ZmVyPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmRlY29kCiAgICAgICAg
IHJldHVybiBkZWNvZGVTY3JpcHRCdWZmZXJBc1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKGRlY29k
ZXIpOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVy
OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJl
ZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CkBAIC0zMTM1LDcgKzMxMzUsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZQogewogICAgIGVu
Y29kZXIgPDwgbWVzc2FnZS5maXJzdDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1lc3Nh
Z2VEYXRhID0gbWVzc2FnZS5zZWNvbmQuY29weVJlZigpOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlSZWYoKTsKICAg
ICBlbmNvZGVyIDw8IG1lc3NhZ2VEYXRhOwogfQogCkBAIC0zMTQ1LDcgKzMxNDUsNyBAQCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gIEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6Q0RNSQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAppbmRleCBlZjAxMTFmYjU2MmNkZWI2Y2IwZjdhMjUyMWYwOTNhZjI3OTg2NzlmLi42ZmFjMmFh
MWVhNzg0NmZmNmJmODkwMjFmMGY1MmU5YWE3YWUwM2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTE0LDcgKzExNCw3IEBAIGNsYXNzIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBDZXJ0aWZpY2F0
ZUluZm87CiBjbGFzcyBDb2xvcjsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgQ3ViaWNCZXppZXJUaW1p
bmdGdW5jdGlvbjsKIGNsYXNzIEN1cnNvcjsKQEAgLTEzOSw3ICsxMzksNyBAQCBjbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0QnVmZmVy
OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3ByaW5nVGltaW5nRnVuY3Rpb247CiBjbGFzcyBT
dGVwc1RpbWluZ0Z1bmN0aW9uOwogY2xhc3MgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFp
bnRzOwpAQCAtNzUyLDYgKzc1MiwxNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gewogfTsKICNlbmRpZgog
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29u
c3QgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBk
ZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
Jik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+IGRlY29kZShEZWNvZGVyJik7CkBAIC03NjIsMTYgKzc3Miw2IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29k
ZXImKTsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsK
LSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gewotICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+Jik7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwotfTsKLQogdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IHsKICAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYpOwog
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlKERl
Y29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1
bHREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNw
cAppbmRleCBjZjJlNGQ1ZjkzZmQyZDk0NmJhYmZmOTNlZWEzZTllODYwYWViYmY0Li5iNjA3YWNl
ODM4ZTA0YmNlMWE2YWVlNGRhNTY1NTllMDk2OTgzOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFdlYkhpdFRl
c3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0YShjb25zdCBXZWJDb3JlOjpIaXRUZXN0
UmVzdWx0JiBoaXRUZXN0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChJbWFnZSogaW1hZ2Ug
PSBoaXRUZXN0UmVzdWx0LmltYWdlKCkpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gaW1hZ2UtPmRhdGEoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7CiAgICAgICAgIGlmIChidWZmZXIpIHsKICAg
ICAgICAgICAgIGltYWdlU2hhcmVkTWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNvcHlC
dWZmZXIoKmJ1ZmZlcik7CiAgICAgICAgICAgICBpbWFnZVNpemUgPSBidWZmZXItPnNpemUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCmluZGV4
IDY0NWQ5YmZhYjc1N2IzMWQ3ZTYwMGU3OGJhYjAzYTdlODkzOTcxODUuLjY3MTc1OGEyODBhNWU0
NDBhYTA2MGE3OWNmMWYwZjEyNmRiN2JlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Z3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEFyZ3VtZW50
Q29kZXI8U2VsZWN0aW9uRGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTZWxl
Y3Rpb25EYXRhJgogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSA9IHNlbGVjdGlvbi5oYXNDdXN0b21E
YXRhKCk7CiAgICAgZW5jb2RlciA8PCBoYXNDdXN0b21EYXRhOwogICAgIGlmIChoYXNDdXN0b21E
YXRhKQotICAgICAgICBlbmNvZGVyIDw8IFJlZlB0cjxTaGFyZWRCdWZmZXI+KHNlbGVjdGlvbi5j
dXN0b21EYXRhKCkpOworICAgICAgICBlbmNvZGVyIDw8IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPihzZWxlY3Rpb24uY3VzdG9tRGF0YSgpKTsKIAogICAgIGJvb2wgY2FuU21hcnRSZXBs
YWNlID0gc2VsZWN0aW9uLmNhblNtYXJ0UmVwbGFjZSgpOwogICAgIGVuY29kZXIgPDwgY2FuU21h
cnRSZXBsYWNlOwpAQCAtMTU5LDEwICsxNTksMTAgQEAgc3RkOjpvcHRpb25hbDxTZWxlY3Rpb25E
YXRhPiBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2QK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0N1c3RvbURhdGEpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGlmIChoYXNDdXN0b21EYXRhKSB7Ci0gICAgICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQogICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURh
dGEoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKKyAgICAgICAgc2VsZWN0
aW9uLnNldEN1c3RvbURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOwogICAgIH0KIAog
ICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcAppbmRleCA4YWVmNGE1MDFkYWQ5Mjc2
NmM3MTlmYzUwMDZjNmRmMTJhZGE1YWEwLi4yOTJkNzE0NTJjNWMzYTk0OTJiMmY1YjYxNjgyNzM1
MzBhYzJkZDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFy
Z3VtZW50Q29kZXJzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzV2luLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0ZDo6b3B0aW9uYWw8
Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9y
bURhdGEoRGVjCiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhKiBjcmVhdGlvbkRh
dGEgPSBudWxscHRyOwogCiAgICAgaWYgKGluY2x1ZGVzQ3JlYXRpb25EYXRhLnZhbHVlKCkpIHsK
LSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGZvbnRG
YWNlRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gZm9udEZh
Y2VEYXRhOwogICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgaWYgKCFm
b250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IGM5MGQzZDgxMTNm
NzE5MDFiMDhmMjY0ODkxNmFkMmNjMjlkOTgzMzQuLjE0OTBjNTExYmRjMzhiZDhhYjRhNjk1YWVj
ZjMwNmQ5NWZhYTM5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0
YWNobWVudC5jcHAKQEAgLTk4LDE3ICs5OCwxNyBAQCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBB
dHRhY2htZW50OjpmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdAogICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVu
Y2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVk
UmVwcmVzZW50YXRpb24oKSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lk
IEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJikKK3ZvaWQg
QXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCmluZGV4IGM2YzJhMDZlYzk3ZGRm
MGQ2Y2FiNDJiNGE2NDA5YjNjNDdiNGRlZmUuLmZlNTBlNTM4YjhlYmIzNTFhNDgzNmQxZGQ4OTNk
MTQ3YTU2YTg3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1l
bnQuaApAQCAtMzgsOCArMzgsOCBAQCBPQkpDX0NMQVNTIE5TRmlsZVdyYXBwZXI7CiBPQkpDX0NM
QVNTIE5TU3RyaW5nOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04MywxNCArODMsMTQgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBlbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3Q7CiAg
ICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemVGb3JEaXNwbGF5KCkgY29uc3Q7CiAK
ICAgICB2b2lkIHNldEhhc0VuY2xvc2luZ0ltYWdlKGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UpIHsg
bV9oYXNFbmNsb3NpbmdJbWFnZSA9IGhhc0VuY2xvc2luZ0ltYWdlOyB9CiAgICAgYm9vbCBoYXNF
bmNsb3NpbmdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRW5jbG9zaW5nSW1hZ2U7IH0KIAot
ICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxp
emVkUmVwcmVzZW50YXRpb24oKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVk
UmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7CisgICAgdm9p
ZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSk7CiAKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgQXR0YWNobWVudChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2Vi
S2l0OjpXZWJQYWdlUHJveHkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCmluZGV4IDFiOWI1NGI2MjcxODE0OTUw
OGY5MDI3YzgzYzY3MzIwNmJhODI5ODIuLjY0NDkxZTE2MmVjNmM1YmNmYTNmYzRjYjI0OWY4ZDlj
Y2I2MzliMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHRlbXBsYXRlPD4g
dm9pZCBnZXREYXRhKGNvbnN0IFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhJiBkYXRhLCBjb25z
dCBGdW5jdGlvbjxiCiB7CiAgICAgZGF0YS5hcHBseShmdW5jdGlvbik7CiB9Ci10ZW1wbGF0ZTw+
IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBkYXRh
LCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCit0
ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEs
IGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bhbjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKIHsK
ICAgICBmdW5jdGlvbih7IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgK
aW5kZXggMjA4MzRkNzg4ZTQwMzYxNDFjZjkyYmU1NGY0MzFiY2I4YTYwZWY2NC4uYTBhMzcwYzdj
NjhmYTk0NDllNDkwYmFiZmJhNzEyZDU0ZTJjYmI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmgKQEAgLTMwLDcgKzMw
LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IH0KIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb25DbGllbnQuaAppbmRleCA1NjIzNDAxNDU5ZGE1ZmUzMGY0OTFhNDFmYjM0
N2E2NzU3MjAyYzQwLi4xMTFmMDkyNjNmODIyMzgyOWE1YWQyNjQ0MzRiYTQyMGYxOThkZDFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50
LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RydWN0IENvbnRlbnRSdWxlTGlzdFJlc3VsdHM7CiBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogfQogCkBAIC0xMTksNyArMTE5LDcgQEAg
cHVibGljOgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlj
a0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKSB7IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBSZWY8TmF2aWdhdGlvbkFjdGlv
bj4mJiwgUmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVy
LCBPYmplY3QqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L0FQSUF0dGFjaG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9BUElBdHRhY2htZW50Q29jb2EubW0KaW5kZXggOTRkYjU1NzUzMjg1ZjhhMDNmMGRhMmMzY2Ey
ZDg2ODE3YzI5NTI5NS4uZGZlZjNlMDcwZjk2MTYzMDQ5NzE0NGRhZjNmMzAwY2I0Y2E1MTk1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1l
bnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0
YWNobWVudENvY29hLm1tCkBAIC0xMzcsNyArMTM3LDcgQEAgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gQXR0YWNobWVudDo6ZmlsZVNpemVGb3JEaXNwbGF5KCkgY29uc3QKICAgICByZXR1cm4gW2Zp
bGVXcmFwcGVyIHJlZ3VsYXJGaWxlQ29udGVudHNdLmxlbmd0aDsKIH0KIAotUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QK
K1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNs
b3NpbmdJbWFnZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9oYXNFbmNsb3NpbmdJbWFnZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNTksNyArMTU5LDcgQEAgYm9vbCBBdHRhY2ht
ZW50Ojppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gIW1fZmlsZVdyYXBwZXIgJiYgIW1fZmls
ZVdyYXBwZXJHZW5lcmF0b3I7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25z
dAorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICBhdXRvIGZpbGVXcmFwcGVyID0gdGhp
cy0+ZmlsZVdyYXBwZXIoKTsKIApAQCAtMTcwLDEwICsxNzAsMTAgQEAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGkKICAgICBpZiAoIXNlcmlhbGl6ZWREYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIHJldHVybiBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c2VyaWFsaXplZERhdGEpOworICAgIHJldHVybiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzZXJpYWxpemVkRGF0YSk7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlh
bGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlw
ZSkKK3ZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbiwgY29u
c3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGlmICghbV93ZWJQYWdlKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQppbmRleCAzZTkyM2NmNjQ5ZDk2ZTM0ZWQyYTUxZjkxNzBkNWIxNzQxZmE2NTE4Li5j
ZTk2M2YxZDNiOGQwMzlkOGM0NDk2YmM1MDE4ZjJkNTg3NGQzNmZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTIyMjMsNyArMjIyMyw3
IEBAIC0gKHZvaWQpX3N0YXJ0SW1hZ2VBbmFseXNpczooTlNTdHJpbmcgKilpZGVudGlmaWVyCiAK
IC0gKHZvaWQpX3JlcXVlc3RSZXNvdXJjZTooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCheKShOU0RhdGEgKiwgTlNVUkxSZXNwb25zZSAqLCBOU0Vycm9yICop
KWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgX3BhZ2UtPnJlcXVlc3RSZXNvdXJjZShyZXF1ZXN0
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAo
UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiBlcnJv
cikgeworICAgIF9wYWdlLT5yZXF1ZXN0UmVzb3VyY2UocmVxdWVzdCwgW2NvbXBsZXRpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiBlcnJvcikgewogICAgICAgICBpZiAoZXJyb3IuaXNO
dWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoYnVmZmVyLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSwgcmVzcG9uc2UubnNVUkxSZXNwb25zZSgpLCBuaWwpOwogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihuaWwsIG5pbCwgZXJyb3IubnNFcnJvcigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKaW5kZXgg
NmI3NTZhYTQxN2I1MWVkZDdmZDNmZmJkZGYzYzIyZTQ0NTMxOTI5MC4uZjVhZjA5MmJiMjI1ODIw
NTk2Y2IwMjUzMGQwZGIwYjc2OTQ0MDMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lk
IERyb3BUYXJnZXQ6OmRhdGFSZWNlaXZlZChJbnRQb2ludCYmIHBvc2l0aW9uLCBHdGtTZWxlY3Rp
b25EYXRhKiBkYXRhLCB1bnNpZwogICAgICAgICBpbnQgbGVuZ3RoOwogICAgICAgICBjb25zdCBh
dXRvKiBjdXN0b21EYXRhID0gZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF9kYXRhX3dpdGhfbGVuZ3Ro
KGRhdGEsICZsZW5ndGgpOwogICAgICAgICBpZiAobGVuZ3RoID4gMCkKLSAgICAgICAgICAgIG1f
c2VsZWN0aW9uRGF0YS0+c2V0Q3VzdG9tRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoY3VzdG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7CisgICAgICAgICAg
ICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoY3Vz
dG9tRGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5oCmluZGV4IGFjNGEwZjQzNzAxNTJlZDU3MmI1MDkxZGZhNTFiYWViYWI4N2Y0ZTku
LmM4MDI5YzE0MGE2ZGQxNGIxOTY0OTIyNWI4NzgzMGVlYzEzNDAwZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCkBAIC0xMzMsNyArMTMz
LDcgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgICAgICB2b2lkIGRpZFN0
YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcm
IGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSBvdmVycmlkZTsKLSAgICAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRl
eCA3MjViNzcwZjZjNTQyNmFjOGNiN2I2NzRjNDYxZjgxZTNlZTM2NjA3Li44ZDNhODU2NDYyZWFl
Zjc0MWQ4YzI5ZTI1OTJmZDU3MzY2ZjU5OWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0xMjIwLDcgKzEyMjAsNyBAQCB2b2lk
IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcgogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVs
ZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmln
YXRpb25TdGF0ZS0+bV93ZWJWaWV3IGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWVXaXRoRmlsZU5hbWU6ZmlsZU5hbWUgdXRpOnV0aV07CiB9CiAKLXZvaWQgTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpp
bmRleCBiZTE0MzcwZGUwOWJkNTcwMmI5YzdkZGNkNmM3N2I4ZjZkYTVmNWI4Li42ODMzNzNlYWUw
MGY1ZGI0MmI4MTQ2Y2U5ZDUzMWJjOGFjMGE1NGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtMzA2LDcgKzMw
Niw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRp
b25zKCkKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7CisgICAgICAgICAg
ICBhdXRvIHJlZ2lzdHJhdGlvbkRhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShy
ZWdpc3RyYXRpb25zLmdldCgpKTsKICAgICAgICAgICAgIHdlYWtUaGlzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpDb25zdW1lQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKHsgV1RGTW92
ZShyZWdpc3RyYXRpb25EYXRhKSB9KSwgMCk7CiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKaW5kZXggOTM0MDk0MDAyMTRi
NmI2N2IyMDg5ZjdkMGUzN2VkMGNiMWVjYmEyMC4uMTI0MTc4M2JjY2NlYTAwOTVhNmVkYmJkMmQ2
OTZhNmJlMWY0ZDUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5oCkBAIC01MDQsNyArNTA0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdGFydERyYWco
Y29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0mLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYg
aW1hZ2UpOwogICAgIHZvaWQgc2V0RmlsZUFuZFVSTFR5cGVzKE5TU3RyaW5nICpmaWxlbmFtZSwg
TlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0
cmluZyAqdmlzaWJsZVVSTCwgTlNQYXN0ZWJvYXJkICopOwotICAgIHZvaWQgc2V0UHJvbWlzZWRE
YXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5n
ICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZp
c2libGVVUkwsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYXJjaGl2ZUJ1ZmZlciwgTlNTdHJpbmcg
KnBhc3RlYm9hcmROYW1lLCBOU1N0cmluZyAqcGFzdGVib2FyZE9yaWdpbik7CisgICAgdm9pZCBz
ZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSosIE5TU3RyaW5nICpmaWxlbmFt
ZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBO
U1N0cmluZyAqdmlzaWJsZVVSTCwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYXJj
aGl2ZUJ1ZmZlciwgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU1N0cmluZyAqcGFzdGVib2Fy
ZE9yaWdpbik7CiAgICAgdm9pZCBwYXN0ZWJvYXJkQ2hhbmdlZE93bmVyKE5TUGFzdGVib2FyZCAq
KTsKICAgICB2b2lkIHByb3ZpZGVEYXRhRm9yUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKiwgTlNT
dHJpbmcgKnR5cGUpOwogICAgIE5TQXJyYXkgKm5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0
RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW5hdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDExY2M3NTI4YTFlNWY2YTg2ODRmY2Uw
NjdlMGFkYTA3NDYyZWU0YzYuLjczNzQ4Y2FmMTRlYjEzMGUwNzQ1MzcxMmE0ZTAzN2RmZjQ1NWJh
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBA
IC0yOTgzLDcgKzI5ODMsNyBAQCBib29sIFdlYlZpZXdJbXBsOjp3cml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TQXJyYXkgKgogICAgICAgICBpZiAo
W1t0eXBlcyBvYmplY3RBdEluZGV4OmldIGlzRXF1YWxUbzpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQ
YXN0ZWJvYXJkVHlwZSgpXSkKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldFN0cmluZzptX3Bh
Z2UtPnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSBmb3JUeXBlOldlYkNvcmU6OmxlZ2Fj
eVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRh
dGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKKyAgICAg
ICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1fcGFnZS0+ZGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0pOwogICAgICAg
ICAgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIDogbmlsIGZvclR5cGU6W3R5cGVzIG9iamVjdEF0SW5kZXg6aV1dOwogICAgICAgICB9
CiAgICAgfQpAQCAtNDQ1Niw3ICs0NDU2LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0RmlsZUFu
ZFVSTFR5cGVzKE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlMKICAg
ICBtX3Byb21pc2VkVVJMID0gdXJsOwogfQogCi12b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNl
ZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbmFtZSwg
TlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0
cmluZyAqdmlzaWJsZVVSTCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBhcmNoaXZlQnVmZmVyLCBO
U1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5TU3RyaW5nICpvcmlnaW5JZGVudGlmaWVyKQordm9p
ZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGlt
YWdlLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0
aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFt
ZSwgTlNTdHJpbmcgKm9yaWdpbklkZW50aWZpZXIpCiB7CiAgICAgTlNQYXN0ZWJvYXJkICpwYXN0
ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0aE5hbWU6cGFzdGVib2FyZE5hbWVd
OwogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gdHlwZXMgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpXZWJDb3JlOjpsZWdhY3lGaWxlc1Byb21p
c2VQYXN0ZWJvYXJkVHlwZSgpLCBuaWxdKTsKQEAgLTQ2MTMsNyArNDYxMyw3IEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OnJlcXVlc3RET01QYXN0ZUFjY2VzcyhXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc0Nh
dGVnb3J5IHBhc3RlQWNjCiAgICAgaGlkZURPTVBhc3RlTWVudVdpdGhSZXN1bHQoV2ViQ29yZTo6
RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZSk7CiAKICAgICBOU0RhdGEg
KmRhdGEgPSBbcGFzdGVib2FyZEZvckFjY2Vzc0NhdGVnb3J5KHBhc3RlQWNjZXNzQ2F0ZWdvcnkp
IGRhdGFGb3JUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgp
KV07Ci0gICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSk7CisgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhKTsKICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21T
aGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBvcmlnaW5JZGVudGlmaWVyKSB7
CiAgICAgICAgIG1fcGFnZS0+Z3JhbnRBY2Nlc3NUb0N1cnJlbnRQYXN0ZWJvYXJkRGF0YShwYXN0
ZWJvYXJkTmFtZUZvckFjY2Vzc0NhdGVnb3J5KHBhc3RlQWNjZXNzQ2F0ZWdvcnkpKTsKICAgICAg
ICAgY29tcGxldGlvbihXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpHcmFudGVkRm9y
R2VzdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzOTMyMGNhZGViYTI2MTA1Y2IwOWM4MTQxMmIx
M2RmYTM2NzYwNWQzLi5iMTFmMmQ1M2NmZmE4NWY5NmYyNzQxMWQ5ZDJkYjA3ZDk2YTA3YzM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKQEAgLTMzNSwxMCArMzM1LDEwIEBAIERvd25sb2FkUHJveHkmIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmNyZWF0ZURvd25sb2FkUHJveHkoV2Vic2l0ZURhdGFTdG9yZSYgZGF0
YVN0CiAgICAgcmV0dXJuIG1fZG93bmxvYWRQcm94eU1hcC0+Y3JlYXRlRG93bmxvYWRQcm94eShk
YXRhU3RvcmUsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QsIGZyYW1lSW5mbywgb3JpZ2lu
YXRpbmdQYWdlKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0UmVzb3Vy
Y2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0UmVzb3VyY2UoV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVxdWVzdFJlc291cmNl
KHBhZ2VJRCwgc2Vzc2lvbklELCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlKHJlcXVl
c3QuaHR0cEJvZHkoKSkpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKElQQzo6RGF0YVJlZmVyZW5jZSYmIGRhdGEsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmIGVycm9yKSBtdXRhYmxl
IHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGJ1ZmZlciksIFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGVy
cm9yKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDcwYjU3YjU0NDUzOTI2NTNiNDI2YWQ3
ODhmYjExMjI1Yjc5MmFkOTIuLmFmNmNlZDllNzFkOTZlMWZkYzgwMjA3OGNhMWEzMjYxMWZmOWIy
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCkBAIC02NSw3ICs2NSw3IEBAIGNsYXNzIFNlc3Npb25JRDsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7Ci1jbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgUHJvdGVj
dGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogZW51bSBjbGFzcyBTaG91bGRTYW1w
bGUgOiBib29sOwpAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHkmJik7CiAKICAg
ICBEb3dubG9hZFByb3h5JiBjcmVhdGVEb3dubG9hZFByb3h5KFdlYnNpdGVEYXRhU3RvcmUmLCBX
ZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEZy
YW1lSW5mb0RhdGEmLCBXZWJQYWdlUHJveHkqIG9yaWdpbmF0aW5nUGFnZSk7Ci0gICAgdm9pZCBy
ZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYpOworICAgIHZvaWQgcmVxdWVzdFJlc291
cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImJik+JiYpOwogCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hP
cHRpb24+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYnNpdGVEYXRhKT4mJik7CiAgICAgdm9p
ZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5k
ZXggZWQ5ZDgzMzdmNDc0Zjc3OGVmNzZiMTk0YzY5MjBhMTE4NGYyYTQwOS4uOWM2NTYxN2I4OTZi
MTVmOWY0N2ExZDE0NDgwZjZlMzVjYjZlZmZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaApAQCAtMzI5LDcgKzMyOSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgVVNFKEFQ
UEtJVCkKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNv
bnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2li
bGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFBy
b21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwg
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBvcmlnaW5JZGVudGlmaWVyKSA9IDA7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6
RmxvYXRSZWN0IGNvbnZlcnRUb0RldmljZVNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYp
ID0gMDsKQEAgLTQ2OSw3ICs0NjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRm9j
dXNpbmdFbGVtZW50KCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpbnRlcnByZXRLZXlFdmVudChj
b25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1h
Z2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
KGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJD
b3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
c2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5KFdlYktpdDo6VGFwSWRl
bnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggNzA3ZmQyZGU3YjdhYzBiMjYyZmQwZjc2NzNjMjg5ZDg4MjNhYmUxMC4uODk1ZTdiOGNkNWI5
Mzk5MjY0OTM2MTVkOGY3NzU2Y2Y1ODdhODY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC02Mzc3LDcgKzYzNzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZG93bmxvYWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBs
ZXRpbwogICAgIGRvd25sb2FkLnNldERpZFN0YXJ0Q2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlc291cmNlKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UmVzb3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgd2Vic2l0ZURhdGFTdG9yZSgp
Lm5ldHdvcmtQcm9jZXNzKCkucmVxdWVzdFJlc291cmNlKGlkZW50aWZpZXIoKSwgc2Vzc2lvbklE
KCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOTAyMzdhZTU1ZmY5M2RlNWI5
NDc5MTY5NmUxMzlhYjE1ZTM4NzM0ZC4uMGY4OGJiNWI3OWViYzZmYTJhOWU4OTY1NDMzMTRmMDIw
MjhmNjVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI1OSw3
ICsyNTksNyBAQCBjbGFzcyBJbnRTaXplOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3Mg
UnVuTG9vcE9ic2VydmVyOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3Q7CiBjbGFzcyBUZXh0SW5kaWNhdG9yOwogY2xhc3MgVmFsaWRhdGlvbkJ1YmJsZTsK
QEAgLTExODMsNyArMTE4Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVUlQcm9jZXNz
QWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGVsZW1lblRva2Vu
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rva2VuKTsKICAgICBib29sIHJlYWRT
ZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAg
ICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOwotICAgIFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlKTsKICAgICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0
aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpOwogCkBAIC0xMzc1LDcgKzEzNzUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSYp
OwogICAgIHZvaWQgcmVzdW1lRG93bmxvYWQoY29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRhLCBj
b25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSop
PiYmKTsKICAgICB2b2lkIGRvd25sb2FkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+JiYpOwotICAgIHZvaWQg
cmVxdWVzdFJlc291cmNlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYpOworICAg
IHZvaWQgcmVxdWVzdFJlc291cmNlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJik7CiAKICAgICB2
b2lkIGFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKTsK
ICAgICB2b2lkIGNoYW5nZVNwZWxsaW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYgd29yZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGY5NGRlOTMz
ZmQwY2Q0M2U0OGJiYWVlNzdmMzBhYmI2OGYwZGFiODguLmUxMjY0Y2UyMWJhNTdmMmE0Mjc0OGUz
M2ExZGFkODhhMGUyNThiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIC0+IEUK
ICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0KIAotYXV0byBXZWJVUkxTY2hlbWVU
YXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0
aW9uVHlwZQorYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKIHsKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xODcsMTAgKzE4Nyw3IEBAIGF1dG8gV2ViVVJM
U2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+
IEV4Y2VwdGlvblR5CiAgICAgbV9kYXRhU2VudCA9IHRydWU7CiAKICAgICBpZiAoaXNTeW5jKCkp
IHsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpCi0gICAgICAgICAgICBtX3N5bmNEYXRhLT5hcHBl
bmQoV1RGTW92ZShidWZmZXIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zeW5jRGF0
YSA9IFdURk1vdmUoYnVmZmVyKTsKKyAgICAgICAgbV9zeW5jRGF0YS5hcHBlbmQoV1RGTW92ZShi
dWZmZXIpKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCkBA
IC0yMTUsMTQgKzIxMiwxMSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb25UeXBlOjpXYWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcjsKIAog
ICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKLSAgICAKLSAgICBpZiAoaXNTeW5jKCkpIHsKLSAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgICAgIGlmIChtX3N5bmNEYXRhKQotICAgICAg
ICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtX3N5
bmNEYXRhLT5zaXplKCkgfTsKIAorICAgIGlmIChpc1N5bmMoKSkgeworICAgICAgICBzaXplX3Qg
c2l6ZSA9IG1fc3luY0RhdGEuc2l6ZSgpOworICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9
IHsgbV9zeW5jRGF0YS50YWtlQXNDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSB9OwogICAgICAg
ICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3IsIFdURk1vdmUo
ZGF0YSkpOwotICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZSht
X3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBlcnJv
ciksIG1fd2ViUGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suaAppbmRleCA2YTg1NjAyMWIxMjk5MjQ2YzcwMDA5M2RkMGE0N2YyYzEzMDg1MjY3Li5mNmZm
NDZlZWE1ZjI5MGI3YjdlM2ZlNTkyMWRmOWYxOTRiYWNkMTE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC00Myw3ICs0Myw2IEBAIGNsYXNzIEZyYW1l
SW5mbzsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTg0LDcgKzgzLDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvblR5cGUgd2lsbFBl
cmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCAgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYpOwogICAgIEV4Y2VwdGlvblR5cGUgZGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIEV4
Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmKTsKLSAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYpOworICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZURhdGEoUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIEV4Y2VwdGlvblR5cGUgZGlk
Q29tcGxldGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAgICAgdm9pZCBzdG9w
KCk7CkBAIC0xMTUsNyArMTE0LDcgQEAgcHJpdmF0ZToKIAogICAgIFN5bmNMb2FkQ29tcGxldGlv
bkhhbmRsZXIgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSBtX3N5bmNSZXNwb25zZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBtX3N5bmNEYXRhOworICAgIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9zeW5jRGF0
YTsKIAogICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxi
YWNrIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvQ2xpcGJvYXJkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgK
aW5kZXggNzg2NmNkYjE3NzQ2MDA3YWIwYTdhMTdjNTViODdjN2YxNjRjMmJhZS4uNzI3OWY4NDRj
YzJiYmQyYjAxN2ZlMGYwOTdkZTAxODcwYTlhODUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9DbGlwYm9hcmQuaApAQCAtMzYsNyArMzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBfR3RrQ2xp
cGJvYXJkIEd0a0NsaXBib2FyZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2VsZWN0
aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBmb3JtYXRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+
JiYpOwogICAgIHZvaWQgcmVhZFRleHQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+
JiYpOwogICAgIHZvaWQgcmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgY2hhciosIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYpOworICAg
IHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBjaGFyKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYpOwogICAgIHZvaWQgd3JpdGUo
V2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKTsKICAgICB2b2lkIGNsZWFyKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAppbmRleCBjMmJmNTE4M2Iz
MGYxMGU5ZWI3ODEzY2RhZGEyMjNlOTE4OWM3NDU5Li41OTY2ZDU1NzRjMjgyZjUzMTY5NDA5NjA4
Mjk2MGFlMzM5Y2ExMTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
Q2xpcGJvYXJkR3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBi
b2FyZEd0azMuY3BwCkBAIC0xMjYsMTUgKzEyNiwxNSBAQCB2b2lkIENsaXBib2FyZDo6cmVhZEZp
bGVQYXRocyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBs
ZQogc3RydWN0IFJlYWRCdWZmZXJBc3luY0RhdGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNU
X0FMTE9DQVRFRDsKIAotICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJBc3luY0RhdGEoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4mJiBoYW5kbGVyKQor
ICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJBc3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKICAgICAg
ICAgOiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKQogICAgIHsKICAgICB9CiAK
LSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
PiBjb21wbGV0aW9uSGFuZGxlcjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CiB9Owog
Ci12b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGd0a19jbGlwYm9hcmRfcmVxdWVz
dF9jb250ZW50cyhtX2NsaXBib2FyZCwgZ2RrX2F0b21faW50ZXJuKGZvcm1hdCwgVFJVRSksIFtd
KEd0a0NsaXBib2FyZCosIEd0a1NlbGVjdGlvbkRhdGEqIHNlbGVjdGlvbiwgZ3BvaW50ZXIgdXNl
ckRhdGEpIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlYWRCdWZmZXJBc3luY0RhdGE+IGRh
dGEoc3RhdGljX2Nhc3Q8UmVhZEJ1ZmZlckFzeW5jRGF0YSo+KHVzZXJEYXRhKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKaW5kZXggMDdhYmI3MTMx
OTg4NTNiNzg3YzYzMjRiZDQ4MGIxZTA4OGEyYTNkMy4uNWI4MWZhOGYyOWQzZjdjZjFjM2YwOWQx
ZmMzYzg4NzM0ZGM1MWEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L0NsaXBib2FyZEd0azQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlw
Ym9hcmRHdGs0LmNwcApAQCAtMTIwLDE1ICsxMjAsMTUgQEAgdm9pZCBDbGlwYm9hcmQ6OnJlYWRG
aWxlUGF0aHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21w
bGUKIHN0cnVjdCBSZWFkQnVmZmVyQXN5bmNEYXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CiAKLSAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRhKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikK
KyAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGhhbmRsZXIpCiAgICAg
ICAgIDogY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkKICAgICB7CiAgICAgfQog
Ci0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5kbGVyOwogfTsK
IAotdm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9ybWF0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb25zdCBjaGFyKiBtaW1lVHlw
ZXNbXSA9IHsgZm9ybWF0LCBudWxscHRyIH07CiAgICAgZ2RrX2NsaXBib2FyZF9yZWFkX2FzeW5j
KG1fY2xpcGJvYXJkLCBtaW1lVHlwZXMsIEdfUFJJT1JJVFlfREVGQVVMVCwgbnVsbHB0ciwgW10o
R09iamVjdCogY2xpcGJvYXJkLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRh
dGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
LmgKaW5kZXggNWM4ZTNiOTJmMDg5OTJlZjRkYWQ2MmIxNzdhODJmMzE2MDhiYmIyNy4uM2IwNGE4
MzNkYmUwYjZiNjZlZTE0ZDNjMzAwZjMwNjg3MThiZjJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTE4OCw3ICsxODgsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgYm9v
bCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBp
c0NoYXJFdmVudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hh
bmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFy
Z2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRS
ZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29u
c3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGI2
ODRlMWM5NGVhY2I2NzI4YmIxMzA2OGNiNjk1MjI3MDFmYThmODMuLmZhYzllN2ZiNzhiZWUwZjYy
OTQ1NjcyZTNiYjc0YjllMDUyMGUzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFBhZ2VD
bGllbnRJbXBsOjpwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9u
SW5mb3JtYXRpb25BdAogICAgIFttX2NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlk
Q2hhbmdlOmluZm9dOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJh
cnkoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCit2b2lkIFBhZ2VD
bGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1
ZmZlcikKIHsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgVUlJbWFnZURhdGFXcml0ZVRvU2F2ZWRQaG90b3NBbGJ1bShp
bWFnZURhdGEuZ2V0KCksIG5pbCwgTlVMTCwgTlVMTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA5OWFl
ZDAzNjg4ZTBlNWM2MTc0NzkwZmRkZDhkMjUwZTlhYjcwYTJlLi4xMmYzYTE1YTQzYjhhYzRkMTUx
ZmYzMDNjM2M1Zjc3ZDEzNTMwY2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4NDIsNyArMzg0Miw3
IEBAIC0gKEJPT0wpY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6KFNFTClhY3Rpb24gd2l0aFNl
bmRlcjooaWQpc2VuZGVyCiAKICAgICAgICAgTlNBcnJheSAqYWxsQ3VzdG9tUGFzdGVib2FyZERh
dGEgPSBbcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChXZWJDb3JlOjpQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpIGluSXRlbVNldDppbmRpY2VzXTsKICAgICAgICAg
Zm9yIChOU0RhdGEgKmRhdGEgaW4gYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEpIHsKLSAgICAgICAg
ICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IGZvY3VzZWRE
b2N1bWVudE9yaWdpbikKICAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICB9CkBA
IC02NjUwLDcgKzY2NTAsNyBAQCBzdGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNN
YXRjaE9yaWdpbihVSVBhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAgICAgICAgIGlmICgh
ZGF0YS5sZW5ndGgpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGJ1ZmZl
ciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAg
ICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAg
ICAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVy
KGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgIT0gb3JpZ2luSWRlbnRpZmllcikKICAgICAgICAgICAg
IHJldHVybiBOTzsKIApAQCAtNzYyMyw3ICs3NjIzLDcgQEAgLSAodm9pZClhY3Rpb25TaGVldEFz
c2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRX
aXQKIHsKICAgICBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0YTsKICAg
ICBOU1N0cmluZyogZmlsZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALnBu
ZyIsIChOU1N0cmluZyopV0VCX1VJX1NUUklORygiU2hhcmVkIEltYWdlIiwgIkRlZmF1bHQgbmFt
ZSBmb3IgdGhlIGZpbGUgY3JlYXRlZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0aCBubyBleHBsaWNp
dCBuYW1lLiIpXTsKLSAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24o
aW1hZ2UpKSB9IH07CisgICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9
IH07CiAgICAgW3NlbGYgX3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0YSBpblJlY3Q6IHsgW3NlbGYg
Y29udmVydFJlY3Q6Ym91bmRpbmdSZWN0IHRvVmlldzpzZWxmLndlYlZpZXddIH0gY29tcGxldGlv
bkhhbmRsZXI6bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KaW5kZXggN2E4ZmFjZDMxN2EwNjM5NmQ2M2I4ZGVlYzY1NzFlNTUxM2Vj
NDk1Zi4uZGQ4Mjk1M2I5MGY0ZjEzYmRiOGNhNzZjNDI4ZDBjMDcyYzBjNWRiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzgsNyAr
MTM4LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmKQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5
OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCmluZGV4IDk2YmY0MjhiMTliNWJhOWQ3NDZh
M2VhMTExNTFiZDNjYWZiMTZkZWMuLjgzZGI3NmUwZDAxZmUyNmY2YWFjMmY5YmRkN2JjZDA2ZjAw
ZTg1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bE1hYy5oCkBAIC0xMDAsOCArMTAwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGV4ZWN1dGVVbmRv
UmVkbyhVbmRvT3JSZWRvKSBvdmVycmlkZTsKICAgICBib29sIGV4ZWN1dGVTYXZlZENvbW1hbmRC
eVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpIG92ZXJyaWRlOwogICAgIHZvaWQgc3Rh
cnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUmIGltYWdlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0
ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAotICAgICAgICBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgb3ZlcnJpZGU7
CisgICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0
IFN0cmluZyYgdGl0bGUsCisgICAgICAgIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IHZpc2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFy
Y2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNl
dFNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUlucHV0Q29udGV4
dEFib3V0RGlzY2FyZGVkQ29tcG9zaXRpb24oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCA2MjkwYTgwOTBlMzU5
YjYzMDIwOGRiNzEyNjkyNDA3NGQxYzVkN2MyLi40YTA4MGIyYzE3MTUxNDVjNDE3MmY4NzkwOGFi
NGUxYjk3OTI4Y2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsTWFjLm1tCkBAIC00MDAsNyArNDAwLDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6
c3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiBpdGVtLCBjb25zdCBTaGFyZWFibGVC
aXQKICAgICBtX2ltcGwtPnN0YXJ0RHJhZyhpdGVtLCBpbWFnZSk7CiB9CiAKLXZvaWQgUGFnZUNs
aWVudEltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKK3Zv
aWQgUGFnZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVy
LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3Qg
U3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVS
TCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQogewogICAgIGF1dG8gaW1hZ2UgPSBCaXRtYXBJbWFn
ZTo6Y3JlYXRlKCk7CiAgICAgaW1hZ2UtPnNldERhdGEoV1RGTW92ZShpbWFnZUJ1ZmZlciksIHRy
dWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0K
aW5kZXggY2E2Yjg3M2IxYzgzZjVhNTA3Yjg1ZWEwZmYzMWNlZGFkZDFhYWIwYS4uYjRjZWFlZTY3
MzljMDM1NDE1YmUyODJkYzRiOTY4NDVjZjFlYTc5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yMjcsNyArMjI3LDcgQEAgU3RyaW5n
IFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJu
IHZhbHVlOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2Vi
UGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5Ojpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQog
ewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZv
ckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFMKICAgICAgICAgcmV0
dXJuOwogICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBzaGFyZWRNZW1vcnlJbWFnZS0+Y3JlYXRlU2hh
cmVkQnVmZmVyKGltYWdlSGFuZGxlLmRhdGFTaXplKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGFyY2hpdmVCdWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGFy
Y2hpdmVCdWZmZXI7CiAgICAgaWYgKCFhcmNoaXZlSGFuZGxlLmhhbmRsZS5pc051bGwoKSkgewog
ICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUFyY2hpdmUgPSBTaGFyZWRNZW1vcnk6Om1hcChhcmNo
aXZlSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAg
ICAgICAgIGlmICghc2hhcmVkTWVtb3J5QXJjaGl2ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAppbmRleCBmYTk0MDI1ZWQ3NDczMGQyOGU3
MTY0NjI4NWY5ZTViYTY1M2I4ZjEyLi5jMjhmZTY1ZjBjZjE2NDM5OTgxOGFjYTMyZjk4MWNjNzc4
ZjFlOTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE0uY3BwCkBAIC04NCw3ICs4NCw3IEBAIGJvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c1Nlc3Np
b25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25zCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbW90ZUNETTo6c3VwcG9ydHNJbml0RGF0YShjb25z
dCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0Citib29s
IFJlbW90ZUNETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKSBjb25zdAogewogICAgIC8vIFRoaXMgY2hl
Y2sgd2lsbCBiZSBkb25lLCBsYXRlciwgaW5zaWRlIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblBy
b3h5OjpyZXF1ZXN0TGljZW5zZSgpLgogICAgIHJldHVybiB0cnVlOwpAQCAtMTI5LDcgKzEyOSw3
IEBAIHZvaWQgUmVtb3RlQ0RNOjpsb2FkQW5kSW5pdGlhbGl6ZSgpCiAgICAgbV9mYWN0b3J5LT5n
cHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVD
RE1Qcm94eTo6TG9hZEFuZEluaXRpYWxpemUoKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUmVt
b3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJl
c3BvbnNlKSBjb25zdAogewogICAgIC8vIFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwg
aW5zaWRlIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKCkuCiAg
ICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETS5oCmluZGV4IDBhZGRmODMzNTNiNmVhMWIyZThiMDJjNmI3ZWUz
ZGFmNDY4Y2QzODMuLjhjNDU0ZWI4M2U1OTk0YThlNGQ1OTJkNTFkZjkxZmY5YjUyM2NiZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaApAQCAt
NDgsMTMgKzQ4LDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24o
Y29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwog
ICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBXZWJD
b3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJp
Y3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENv
bmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGUmLCBjb25zdCBXZWJDb3Jl
OjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBw
b3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0
cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5h
bDsKICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVx
dWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNvcmU6OkNE
TVJlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMm
KSBjb25zdCBmaW5hbDsKICAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQ
ZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4gY3Jl
YXRlSW5zdGFuY2UoKSBmaW5hbDsKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwog
CiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVkSW5pdERhdGFUeXBlczsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlLmNwcAppbmRleCBiNWRlYTIxZTk5NWE3MzdmMDM2ZjY0NTM4YzFmYjNlY2I1ZTZi
YjU1Li5hMTNlNTE0NjBmNmJiOWY4MGVmM2QxYTg0MmVmYzBiOWY0NDU5MGM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlOjppbml0aWFs
aXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQwogICAgIG1f
ZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpJbml0aWFsaXplV2l0aENv
bmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgZGlzdGluY3RpdmVJZGVudGlmaWVycywgcGVyc2lz
dGVudFN0YXRlKSwgV1RGTW92ZShjYWxsYmFjayksIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9p
ZCBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNh
bGxiYWNrKQogewogICAgIGlmICghbV9mYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKEZhaWxl
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlLmgKaW5kZXggMTA2YmEzYjExNjFjOGRmMDlkNzFkZmU2NzliYTMzZDQyMzA3
OWU5Ni4uMmM3ODUxZTQ0MGIwOGE1MmEyYWU3MGRhN2U0MTg4ODJlM2M2MTQzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2UuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogCiAgICAgSW1wbGVtZW50YXRpb25UeXBl
IGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9u
VHlwZTo6UmVtb3RlOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29u
c3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJ
ZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5h
bDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRp
ZmljYXRlKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2Fs
bGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9jb25maWd1cmF0aW9uLmtleVN5c3RlbTsgfQogICAgIFJlZlB0cjxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLmNwcAppbmRleCBhZjBiYWQ0YzkwZDhkZDUxMzc3NGFlZjZhMTViNzdiYTg5ZmM1
MDY0Li5jNzQwYzA0NTA2ZmRlZGFjOWY0Y2Y1MDJjMjA1YThhMzdmY2E0NTllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uY3BwCkBAIC00OSw3ICs0OSw3IEBAIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbjo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9y
eT4mJiBmCiB7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQor
dm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
IHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAg
IGlmICghbV9mYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBGYWlsZWQpOwpAQCAtNjUsNyArNjUsNyBAQCB2b2lk
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlw
ZSwgY29uc3QgQXRvbVN0cmluZwogICAgIH0sIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0
ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsKICAgICAgICAg
Y2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQs
IEZhaWxlZCk7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b246OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnMKICAg
ICB9CiAKICAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHk6OlJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSksIFtjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXSAoS2V5U3RhdHVzVmVjdG9yJiYgY2hhbmdlZEtleXMsIHN0ZDo6b3B0aW9u
YWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBtdXRh
YmxlIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gcmVhbE1lc3Nh
Z2UgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiByZWFsTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKG1l
c3NhZ2UgJiYgbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpKQogICAgICAgICAgICAgcmVhbE1lc3Nh
Z2UgPSBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAg
Y2FsbGJhY2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUocmVhbE1lc3NhZ2UpLCBzdWNj
ZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5k
ZXggNGZmZTRjYWNlY2NkZTQzZDVjYjExZTIzNmNhMDQ1YWNkYTgzYTdlYi4uNGU0Y2QyYzAwNWM2
YjAwNjVmOWNkYjE4OGM0YmNlMGI1YmZhNjYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5o
CkBAIC01OSw4ICs1OSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldENsaWVudChXZWFrUHRy
PFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudD4mJiBjbGllbnQpIGZpbmFsIHsgbV9j
bGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7IH0KICAgICB2b2lkIGNsZWFyQ2xpZW50KCkgZmluYWwg
eyBtX2NsaWVudCA9IG51bGxwdHI7IH0KLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikg
ZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sm
JikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBD
bG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRh
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFD
YWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcAppbmRleCA5YTIxOWE1NDRl
NTUzODNmNTRlNzFkYWJkMzU0Y2M0NDBhNDE0MmI5Li42MjkyNjc5OGM1YzExMzI0YTMxYWE1MGNk
YTdlZDFmYmY3NGZlNzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCkBAIC0yMDAsNyArMjAw
LDcgQEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldEV4cGVjdGVkQ29udGVudFNpemUo
bG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUKIAogLy8gSWYgYWxsRGF0YVJlY2VpdmVkIGlz
IHRydWUsIHRoZSBjYWxsZXIgZXhwZWN0cyBlbmNvZGVkRGF0YVN0YXR1cygpIHRvIGJlID49IEVu
Y29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlCiAvLyBhZnRlciB0aGlzIGZ1bmN0aW9uIHJl
dHVybnMgKGluIHRoZSBzYW1lIHJ1biBsb29wKS4KLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
OjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lk
IFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCmluZGV4IGU1Y2ZlOTRl
Y2QzYTljMDYwMGZjMDAzMjBmZjQzMDYxYzkwZWQ2OWIuLjQwZDM3MzRmN2EzMjJlOGJhY2I5ZDFj
MGRlYTcwNzllMmFkMTdlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaApAQCAtNDUsNyArNDUsNyBA
QCBjbGFzcyBSZW1vdGVJbWFnZURlY29kZXJBVkYgZmluYWwKICAgICA6IHB1YmxpYyBXZWJDb3Jl
OjpJbWFnZURlY29kZXIKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVJbWFnZURl
Y29kZXJBVkY+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUltYWdlRGVjb2RlckFW
Rj4gY3JlYXRlKFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXImIG1hbmFnZXIsIGNvbnN0IFdl
YkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXImIGlkZW50aWZpZXIsIFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCisgICAgc3RhdGljIFJlZjxSZW1vdGVJ
bWFnZURlY29kZXJBVkY+IGNyZWF0ZShSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyJiBtYW5h
Z2VyLCBjb25zdCBXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUltYWdlRGVjb2RlckFW
RihtYW5hZ2VyLCBpZGVudGlmaWVyLCBtaW1lVHlwZSkpOwogICAgIH0KQEAgLTgwLDcgKzgwLDcg
QEAgcHVibGljOgogICAgIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBXZWJDb3JlOjpTdWJzYW1wbGluZ0xldmVsID0gV2ViQ29yZTo6U3Vi
c2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgV2ViQ29yZTo6RGVjb2RpbmdPcHRpb25zJiA9
IFdlYkNvcmU6OkRlY29kaW5nT3B0aW9ucyhXZWJDb3JlOjpEZWNvZGluZ01vZGU6OlN5bmNocm9u
b3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25n
KSBmaW5hbDsKLSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wg
aXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2Vp
dmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkZNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKaW5kZXggNDFkNTM4ODAyM2QzOTE0
OTUyMTgzNWY2ODhkZTRkNDhmNjVkNzY3ZS4uMDgyYjMzNjZjOGJjNzEzMGQ3NWQ1Njk4YTdkNzll
Njg5MmFkOGY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCkBAIC0z
OSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAotUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
TWFuYWdlcjo6Y3JlYXRlSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPFJlbW90ZUltYWdl
RGVjb2RlckFWRj4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6Y3JlYXRlSW1hZ2VEZWNv
ZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPEltYWdlRGVjb2Rl
cklkZW50aWZpZXI+IGltYWdlRGVjb2RlcklkZW50aWZpZXI7CiAgICAgSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UgeyBkYXRhIH07CkBAIC0xMDgsNyArMTA4LDcg
QEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpzZXRVc2VHUFVQcm9jZXNzKGJv
b2wgdXNlR1BVUHJvY2VzcykKICAgICBJbWFnZURlY29kZXI6Omluc3RhbGxGYWN0b3J5KHsKICAg
ICAgICAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzdXBwb3J0c01lZGlhVHlwZSwKICAgICAgICAg
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpjYW5EZWNvZGVUeXBlLAotICAgICAgICBbdGhpc10oU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pIHsKKyAgICAgICAgW3RoaXNdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikgewogICAgICAgICAg
ICAgcmV0dXJuIGNyZWF0ZUltYWdlRGVjb2RlcihkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24s
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICAgICAgfQogICAgIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkZNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaAppbmRleCBjMjM3ODJiNjUwNGVjNzliZTQ2ZTEyNmY0
ZTU5MWIzZmY3ZjZkYmE4Li4zNjE4YWZkMTIwOThiNTU3NmI0ZGQ0ZmZiZjNjMDZmYmE4NDJhNzY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaApAQCAtNTksNyArNTksNyBAQCBw
dWJsaWM6CiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGVuc3VyZUdQVVByb2Nlc3NDb25uZWN0
aW9uKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3Jl
YXRlSW1hZ2VEZWNvZGVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgV2ViQ29yZTo6QWxwaGFPcHRpb24sIFdlYkNvcmU6OkdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKTsKKyAgICBSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGVJ
bWFnZURlY29kZXIoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6QWxwaGFPcHRpb24sIFdlYkNvcmU6OkdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIC8vIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGll
bnQuCiAgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25u
ZWN0aW9uJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA5NjZm
YzkzYjc3YWZhYTNlNjIwOGQ3YWJhNWFlZDJjN2E5NGM3NGIyLi4wMDVhMzdjYzI2ZWM0YzA5MDFi
ZjRmMzcxMjIzODY1ZGUyZDE2NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAK
QEAgLTc4LDcgKzc4LDcgQEAgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6flNvdXJjZUJ1ZmZl
clByaXZhdGVSZW1vdGUoKQogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNl
aXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklk
ZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZTo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZTo6YXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7
CiAgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDM2MDE3NWJmYmU5ZDFhZjgzZWQ1NzkxMzczYjc3
NWVlNzUwYWM3Y2MuLmVhNWZhM2VjMzZjMmI4NTllZTU3OGNjZDBlMDM0OGM3M2NiODZkNjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAK
ICAgICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcwogICAgIHZvaWQgc2V0QWN0aXZl
KGJvb2wpIGZpbmFsOwotICAgIHZvaWQgYXBwZW5kKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNl
dFBhcnNlclN0YXRlKCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dl
YnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKaW5kZXggMTFiNGE4NmU0ODUyZjZjMjA2MWZh
M2ZjOWFmMjlmODg5OWY0ZWI5Zi4uYjQwODlmZDM1NDhjOTdmMTdmYzJiOWZiMDAyNzgwZDY0M2Nm
MjNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVk
aWFSZWNvcmRlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcApAQCAtMTY1LDEwICsxNjUsMTAgQEAgdm9p
ZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KiBzdG9y
YWdlLCBjb25zdCBXZWJDb3JlOjoKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUmVjb3JkZXI6OkF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkIHsgU2hhcmVkTWVt
b3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGRhdGFTaXplIH0sIGZvcm1hdCwgZnJh
bWVDb3VudCB9LCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRl
OjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6ZmV0Y2hEYXRhKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UmVjb3JkZXI6OkZldGNoRGF0YSB7IH0sIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBtaW1lVHlwZSA9IG1pbWVUeXBlKCldKGF1dG8mJiBkYXRhLCBkb3Vi
bGUgdGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAg
ICAgIGlmIChkYXRhLnNpemUoKSkKICAgICAgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoYnVmZmVyKSwgbWltZVR5cGUsIHRpbWVDb2RlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0
ZS5oCmluZGV4IDMwM2E1NGY3NmYxODVlOTY0NTRlZjlmNWJiNDYxZjI4ZTEyNjc4NmQuLjU3NmZk
MWM2ZTk3YzBjYWQ4Y2JmZWM5NGUzYmQzNjMzMDc2ZTQ0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUu
aApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6Ok1l
ZGlhUmVjb3JkZXJQcml2YXRlCiAgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3Jl
OjpNZWRpYVNhbXBsZSYsIFdlYkNvcmU6OlZpZGVvU2FtcGxlTWV0YWRhdGEpIGZpbmFsOwotICAg
IHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJikgZmluYWw7
CisgICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91
YmxlKT4mJikgZmluYWw7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJikgZmluYWw7CiAgICAgdm9pZCBzdGFydFJlY29yZGluZyhTdGFydFJlY29yZGlu
Z0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0
IFdURjo6TWVkaWFUaW1lJiwgY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1BdWRpb0RhdGEmLCBjb25z
dCBXZWJDb3JlOjpBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5q
ZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCAyYzEz
NGU5ZTcxOWY5NzI2NWM4ZDA5MDMzNDljMWUyZjljMWUyZTg0Li4wMzUzYWFiZjdkNGI5MjVhYTJm
MTU2MmQ1NzNhYWYzMDkzYzgzYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3Rl
ZEJ1bmRsZUVkaXRvckNsaWVudC5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50
OwogY2xhc3MgTm9kZTsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsKQEAgLTYzLDcgKzYzLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29u
c3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9u
KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBnZXRQ
YXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JikgeyB9CisgICAgdmlydHVh
bCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+
JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmKSB7IH0KICAgICB2
aXJ0dWFsIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYktpdDo6V2ViUGFnZSYsIFdlYkNvcmU6
OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYsIGJvb2wpIHsg
cmV0dXJuIGZhbHNlOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggYTA2MzUyMDQzMzViM2FiMGU2ZGZiMGM2Nzc3
NjdmNDI4ZThhNzdlMi4uMTgwYjExMTFlY2YwMTEzMjgwOTI2NmExYmNlMjdkMjYwZTRmYTAwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9B
UElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIERPTVdpbmRvd0V4dGVuc2lvbjsKIGNsYXNz
IERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgflBhZ2VMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIEFQSTo6T2JqZWN0KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxM
b2FkRGF0YVJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25z
dCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6VVJMJiwgQVBJOjpPYmplY3QqKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6VVJM
JiwgQVBJOjpPYmplY3QqKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBSZWZQ
dHI8QVBJOjpPYmplY3Q+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktp
dDo6V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIubW0KaW5kZXggZGY4ZDg4MDQ3ZmY2NzMxN2NiNGFiZmUzNTEzMDVhMDc1YTBj
M2FiZi4uYmM4ZWFiOTg3OWJlODBkODUxYjAwMWMyMDBjMGYxODU3YTZjN2EyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjM0LDcgKzYzNCw3IEBAIC0gKHZvaWQpX3Nl
dEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4p
ZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRl
LmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJv
bGxlciB3aWxsV3JpdGVSYW5nZVRvUGFzdGVib2FyZDp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFu
ZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBnZXRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3Rl
Ym9hcmREYXRhKSBmaW5hbAorICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uo
V2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5n
ZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5nZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTY0Miw3ICs2NDIsNyBAQCAtICh2
b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVs
ZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgYXV0byBkYXRhQnlUeXBlID0gW21fY29u
dHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgcGFzdGVib2FyZERhdGFGb3JSYW5nZTp3cmFw
cGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICAgICAgZm9y
IChOU1N0cmluZyAqdHlwZSBpbiBkYXRhQnlUeXBlKSB7CiAgICAgICAgICAgICAgICAgcGFzdGVi
b2FyZFR5cGVzLmFwcGVuZCh0eXBlKTsKLSAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5h
cHBlbmQoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVb
dHlwZV0pKTsKKyAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOwogICAgICAgICAgICAgfTsK
ICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuY3BwCmluZGV4IGMzOTgxMWVhYzk0ZTI5NWUzODMzYmZjZGQ2YzE4MmE0YTMxMDE5OWIuLjM1
MzYwNjUyNWI4NDU3NjhlMzAxNTgzOGY4OTExZGU4ZjJlMDgwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVRvUGFzdGVib2Fy
ZChXZWJQYWdlJiBwYWdlLCBjb25zdAogICAgICAgICBtX2NsaWVudC53aWxsV3JpdGVUb1Bhc3Rl
Ym9hcmQodG9BUEkoJnBhZ2UpLCB0b0FQSShjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIGlmIChtX2NsaWVu
dC5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKSB7CiAgICAgICAgIFdLQXJyYXlSZWYgdHlwZXMg
PSBudWxscHRyOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvCiAg
ICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUtPnN0cmluZygpKTsKIAogICAg
ICAgICBmb3IgKGF1dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxlbWVudHNPZlR5cGU8QVBJOjpEYXRh
PigpKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOworICAgICAgICAgICAgYXV0byBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkp
OwogICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmgKaW5kZXggZDk4ZWUxYzE1NWQ0ZmI4MjkyYTU4ZDljNThlODgwMDdhMTM0MDUxYS4uMzFl
MTM5NmU3MGFkNjBjMTlkOTNjNjc1Yzc2MzQ2ZmUwZGE3OTQ5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkQ2hhbmdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlv
bk5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYlBhZ2UmLCBjb25z
dCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlVG9Q
YXN0ZWJvYXJkKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdl
JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAg
dm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmluYWw7CiAgICAgYm9vbCBwZXJm
b3JtVHdvU3RlcERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25z
dCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYgZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlKSBmaW5hbDsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IGEzNGUyMTJkMDdhZjJmZjU3M2UxYThhMzQwZWMxZDNmY2ViNDJhMWEuLjk0ZmVkMmU3ZTM2
MzAyOTFmOTlmNTM3OGFjYmRkMmMzOTUwZDNlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC02MiwxMCArNjIsMTAgQEAgdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlJiBw
YWdlLCBjb25zdCBSZXMKIHN0YXRpYyB2b2lkIHJlbGVhc2VTaGFyZWRCdWZmZXIodW5zaWduZWQg
Y2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiB7CiAgICAgLy8gQmFsYW5jZWQgYnkgcmVmKCkgaW4g
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KCkuCi0g
ICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJl
ZigpOworICAgIHN0YXRpY19jYXN0PGNvbnN0IFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigp
OwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRh
UmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNo
YXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBT
dHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxM
b2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYg
TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hh
YmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC53aWxs
TG9hZERhdGFSZXF1ZXN0KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggMzZiZDk4MGIyZmFhMWFmNDVhYzMxMDZlYjAx
ZTlmMzc2YmExM2FjZi4uODYzYmRhYjYyODRjYTNhYWQyZjlkNWZmZjVmZDY4ZWFiOGIyYjczMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50KGNvbnN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJhc2UqKTsKIAogICAgIHZvaWQg
d2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwotICAgIHZvaWQgd2lsbExvYWREYXRhUmVxdWVz
dChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0
IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsTG9hZERhdGFSZXF1
ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0
cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRy
PEFQSTo6T2JqZWN0PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRy
PEFQSTo6T2JqZWN0PiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXgg
OThhNmUyZTdiNTdlNTIzMThmNDJjOGNkMTdlNGYwZGUwNTA5NDA5My4uMDIyNzBhNTNhZjliYThi
ZjgwZDdjM2IzZGNkYzhjZWI1NjUxNzZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBA
IC0yODMsNyArMjgzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hl
UmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgIAogICAgIGF1dG8g
YnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVy
KSB7Ci0gICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgZnJv
bSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3Qu
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIGNyZWF0ZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2Ug
aGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODcy
OThiMzcyNTA0OTg1NzFhZTQ4ZjhjOTIxODVlYjIwZTMxZGUxMi4uMzEwZmNhNzg3NWMzMmMzY2Q3
NDc4ZGI2NGY1OWFjMmNmNTAxNjM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vCiAgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UobV9jb3JlTG9hZGVyLT5mcmFtZSgpLCBy
ZXNwb25zZSkpIHsKICAgICAgICAgYXV0byBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyID0g
bV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCk7CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxl
ci5iZWdpbkludGVyY2VwdGluZ1Jlc3BvbnNlKGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIp
OwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3Bv
bnNlKG1fY29yZUxvYWRlci0+ZnJhbWUoKSwgcmVzcG9uc2UsIGludGVyY2VwdGVkUmVxdWVzdElk
ZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaW50ZXJjZXB0
ZWRSZXF1ZXN0SWRlbnRpZmllciwgcG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIGluc3BlY3RvclJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvdmVycmlkZURh
dGEpIG11dGFibGUgeworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6Omlu
dGVyY2VwdFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJhbWUoKSwgcmVzcG9uc2UsIGludGVyY2Vw
dGVkUmVxdWVzdElkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgcG9saWN5RGVjaXNpb25Db21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcildKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIGluc3BlY3RvclJlc3BvbnNlLCBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghbV9j
b3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkgewogICAgICAgICAgICAg
ICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5v
dCBjb250aW51aW5nIGludGVyY2VwdCBsb2FkIGJlY2F1c2Ugbm8gY29yZUxvYWRlciBvciBubyBJ
RCIpOwogICAgICAgICAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5jb250aW51ZVJlc3Bv
bnNlKGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIpOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHZv
aWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nl
c3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRh
dGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElL
RUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlk
ZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAg
ICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmll
cigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1v
dmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBp
ZiAobV9jb3JlTG9hZGVyKQogICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKQEAgLTI5NSwx
MSArMjk1LDExIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZShj
b25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kCiAgICAgTE9HKE5ldHdvcmssICIo
V2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZSBmb3IgJyVz
JyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBX
RUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiIpOwogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1
ZmZlcigpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5k
bGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3Vy
Y2Ugc2VudCBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7Ci0gICAgICAgIFdFQlJFU09VUkNF
TE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUg
U2hhcmVkQnVmZmVyIik7CisgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJk
aWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciIpOwogICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBtX2NvcmVMb2FkZXItPmZyYW1lKCkpIHsK
ICAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAg
ICAgICBwYWdlLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdl
KFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxFcnJvcktleSgpLCBXZWJD
b3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmNyZWF0ZVNoYXJlZEJ1ZmZlckZhaWxlZEtleSgp
LCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCA0MmRlNDYxNDE5Nzc4YjdjNDUwZmNh
MWViMDM3YzFjZTk3ZDJkNjMxLi5hN2Y0NWM4NDAxYjJmZDJmODcwZTM2NzhjNThmYzMxMGMyZTFm
MjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5oCkBAIC0yMDcsNyArMjA3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByaXZhdGVCcm93
c2luZ1N0YXRlQ2hhbmdlZChib29sKSBmaW5hbCB7IH0KICAgICBib29sIGdldEZvcm1WYWx1ZShT
dHJpbmcmIGZvcm1WYWx1ZSkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGhhbmRs
ZVNjcm9sbChXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFy
aXR5KSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3Vy
Y2VEYXRhKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHdpbGxE
ZXRhY2hSZW5kZXJlcigpIGZpbmFsOwogICAgIGJvb2wgcGx1Z2luSGFuZGxlc0NvbnRlbnRPZmZz
ZXRGb3JBY2Nlc3NpYmlsaXR5SGl0VGVzdCgpIGNvbnN0IGZpbmFsOwogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggZDIz
YWJiOWU2NTExYjEzYmJkNTIzYWY0NTFmNDQxNzg3M2E2YzFlMC4uZDQ3ZjMyYjdkNDkxOTU2YmRj
ZTc3YmZlNmYxNWNhNzg2NWJmZDE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0yNTUyLDcgKzI1NTIsNyBAQCB2b2lkIFBE
RlBsdWdpbjo6bm90aWZ5RGlzcGxheU1vZGVDaGFuZ2VkKGludCkKICAgICB1cGRhdGVTY3JvbGxi
YXJzKCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBERlBsdWdpbjo6bGl2ZVJlc291cmNl
RGF0YSgpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUERGUGx1Z2luOjps
aXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBOU0RhdGEgKnBkZkRhdGEgPSBsaXZlRGF0
YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCmluZGV4IDg4
ZjQ1Y2U1MWNlMzFkZjBjNWIzYjc1ODYyMzZjM2YwZDljOTNhZDMuLjU4ZDcwYTM5YTE2ZDZhNGMw
ZThiMGNhOWQwM2FjM2QzN2FlZGZjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbi5oCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50
UmVjdDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBTY3JvbGxiYXI7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTI4OCw3ICsyODgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6Oklu
dFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludElu
TG9jYWxDb29yZGluYXRlcykgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBS
ZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgp
IGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0
TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpID0gMDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBkYzU2ZDJjNjZl
ZDg2Yjk2Mjk1MGEzNDgyMDgzZTM0NThiMzJiNTJjLi40ZDUzNzM0NzI3MTM2Y2Q2ZjQxZTA5NzEx
ZWI3YmZkMDM0N2Q0YjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcApAQCAtNDAzLDEwICs0MDMsNyBAQCB2b2lkIFBsdWdpblZpZXc6Om1h
bnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkK
IAogICAgIGlmICghbV9pc0luaXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VSVChtX21hbnVhbFN0
cmVhbVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpIYXNSZWNlaXZlZFJlc3BvbnNlKTsKLSAg
ICAgICAgaWYgKCFtX21hbnVhbFN0cmVhbURhdGEpCi0gICAgICAgICAgICBtX21hbnVhbFN0cmVh
bURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotCi0gICAgICAgIG1fbWFudWFsU3RyZWFt
RGF0YS0+YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEu
YXBwZW5kKGJ5dGVzLCBsZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00Mzcs
NyArNDM0LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCkgewogICAgICAgICBt
X21hbnVhbFN0cmVhbVN0YXRlID0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVkOwogICAgICAg
ICBtX21hbnVhbFN0cmVhbUVycm9yID0gZXJyb3I7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0
YSA9IG51bGxwdHI7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS5yZXNldCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC05MjYsMTEgKzkyMywxMSBAQCB2b2lkIFBsdWdpblZpZXc6
OndpbGxEZXRhY2hSZW5kZXJlcigpCiAgICAgbV9wbHVnaW4tPndpbGxEZXRhY2hSZW5kZXJlcigp
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRh
KCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpsaXZl
UmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9w
bHVnaW4pIHsKLSAgICAgICAgaWYgKG1fbWFudWFsU3RyZWFtRGF0YSAmJiBtX21hbnVhbFN0cmVh
bVN0YXRlID09IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKLSAgICAgICAgICAgIHJldHVy
biBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgICAgIGlmIChtX21hbnVhbFN0cmVhbVN0YXRlID09
IE1hbnVhbFN0cmVhbVN0YXRlOjpGaW5pc2hlZCkKKyAgICAgICAgICAgIHJldHVybiBtX21hbnVh
bFN0cmVhbURhdGEuZ2V0KCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAt
MTI0Myw5ICsxMjQwLDkgQEAgdm9pZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0o
KQogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRh
KSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6ICptX21hbnVhbFN0cmVhbURh
dGEpCisgICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLnRha2UoKTsKKyAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQogICAgICAgICAg
ICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpLCBlbGVt
ZW50LnNlZ21lbnQtPnNpemUoKSk7Ci0gICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YSA9IG51bGxw
dHI7CiAgICAgfQogCiAgICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFt
U3RhdGU6OkZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oCmluZGV4IDIxMjZlYjhlZGI1NTkzODZiMzQyMjVlYjJiZDViZmNkNjgwMjNmMjMu
LmY3NWFjODliZjM5YTUxZTAxOGQyNjJjMGJlN2MwYTYyZGViNjkzYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpblZpZXdCYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVy
Lmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpAQCAtMTE1LDcg
KzExNiw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxkQWxsb3dTY3JpcHRpbmcoKTsKIAot
ICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25z
dDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291
cmNlRGF0YSgpIGNvbnN0OwogICAgIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0
aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAgICBTdHJpbmcgZ2V0U2VsZWN0aW9u
Rm9yV29yZEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIGNvbnN0OwogICAgIGJv
b2wgZXhpc3RpbmdTZWxlY3Rpb25Db250YWluc1BvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmKSBjb25zdDsKQEAgLTI1Miw3ICsyNTMsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSBtX21hbnVhbFN0cmVhbVJlc3BvbnNlOwogICAgIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgbV9tYW51YWxTdHJlYW1FcnJvcjsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBtX21hbnVhbFN0cmVhbURhdGE7CisgICAgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
QnVpbGRlciBtX21hbnVhbFN0cmVhbURhdGE7CiAKICAgICAvLyBUaGlzIHNuYXBzaG90IGlzIHVz
ZWQgdG8gYXZvaWQgc2lkZSBlZmZlY3RzIHNob3VsZCB0aGUgcGx1Z2luIHJ1biBKUyBkdXJpbmcg
cGFpbnRpbmcuCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV90cmFuc2llbnRQYWludGlu
Z1NuYXBzaG90OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBj
N2RlNDE2NjkxNzNjNDU4N2UzOTFiMjI2NzVkYmNjYWJmZWFhMjhkLi5lZTQwZmI5NTg1ZTc5ZDg2
YjNjZmQyZjU3OWVkNDZlNjFiOWVjNjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmNwcApAQCAtNzIsMTYgKzcyLDE1IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmCiAg
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpE
aWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlTWVzc2FnZSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCit2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2Vp
dmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAo
IW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fd2FpdGluZ0ZvckNv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkgewotICAgICAgICBpZiAoIXN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKSkKLSAgICAg
ICAgICAgIG1fcmVzcG9uc2VEYXRhID0gYnVmZmVyLT5jb3B5KCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX3Jlc3BvbnNlRGF0YSktPmFw
cGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8U2hhcmVkQnVmZmVyQnVpbGRlcj4obV9yZXNwb25zZURhdGEpKQorICAgICAgICAgICAgbV9y
ZXNwb25zZURhdGEgPSBTaGFyZWRCdWZmZXJCdWlsZGVyKCk7CisgICAgICAgIHN0ZDo6Z2V0PFNo
YXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoV1RGTW92ZShidWZmZXIp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjI4LDggKzIyNyw4IEBAIHZvaWQgV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Uo
KQogICAgIHN3aXRjaE9uKG1fcmVzcG9uc2VEYXRhLCBbdGhpc10oc3RkOjpudWxscHRyX3QmKSB7
CiAgICAgICAgIGlmIChtX2RpZEZpbmlzaCkKICAgICAgICAgICAgIGRpZEZpbmlzaCgpOwotICAg
IH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJlY2Vp
dmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgfSwgW3RoaXNdKGNvbnN0IFNoYXJlZEJ1ZmZl
ckJ1aWxkZXImIGJ1ZmZlcikgeworICAgICAgICBkaWRSZWNlaXZlRGF0YSgqYnVmZmVyLmdldCgp
KTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAg
ICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggMDFmNjEwYmQ0MzNhMmU5YWZjOWExZmRkNTRiMDg0MzBi
OTgzN2Q3MS4uZTk4N2UxOWFjOGI3Mzg4NzFhYWQ4MmI0YjM4NTYyOTY4YTJiNmM5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvRmV0Y2hMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJGZXRjaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDksNyArNTAsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZv
aWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBm
aW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaCgpIGZpbmFsOwpAQCAtODMsNyArODQsNyBAQCBwcml2
YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8QmxvYkxvYWRlcj4gbV9ibG9iTG9hZGVyOwogICAgIGJv
b2wgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgeyBm
YWxzZSB9OwotICAgIHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4sIFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4sIFVuaXF1ZVJlZjxXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yPj4gbV9yZXNwb25zZURhdGE7CisgICAgc3RkOjp2YXJpYW50PHN0ZDo6bnVs
bHB0cl90LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyLCBSZWY8V2ViQ29yZTo6Rm9ybURh
dGE+LCBVbmlxdWVSZWY8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4+IG1fcmVzcG9uc2VEYXRhOwog
ICAgIGJvb2wgbV9kaWRGaW5pc2ggeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0Rvd25sb2FkIHsg
ZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGEwMTAzYjAyYTBmNGQ0YTkx
ZTE3ZjM1MmJmOGY5ZjEwNTI1ZDhjZWUuLjI4YzE0YmE1MzY2M2M1NWI2MWIxMDk4MTJjMDQ4YTAy
MDU2YmQzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgYm9v
bCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZEFwcGx5U3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVz
JiBzdHlsZSwgY29uc3Qgc3RkOjoKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAK
LXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3Ry
aW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHBy
ZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewog
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlckF0dGFjaG1l
bnRJZGVudGlmaWVyRnJvbURhdGEoaWRlbnRpZmllciwgY29udGVudFR5cGUsIHByZWZlcnJlZEZp
bGVOYW1lLCBkYXRhLmdldCgpKSk7CiB9CkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVIKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkud2ls
bFdyaXRlVG9QYXN0ZWJvYXJkKCptX3BhZ2UsIHJhbmdlKTsKIH0KIAotdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQordm9pZCBXZWJF
ZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVj
dG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCiB7CiAgICAgbV9wYWdl
LT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uo
Km1fcGFnZSwgcmFuZ2UsIHBhc3RlYm9hcmRUeXBlcywgcGFzdGVib2FyZERhdGEpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCmluZGV4IGUxNmIwY2YzODE4MDYxMTBkYmM2ZTE3ZWI3NWQ5MWQzZTRiMDlh
NGUuLjBmNzNlNGZiNjM2MjJjNmZhZTk2MzUyMThiNTdmMDYwZTI2MTEyNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZE1vdmVS
YW5nZUFmdGVyRGVsZXRlKGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJiwgY29uc3QgV2ViQ29y
ZTo6U2ltcGxlUmFuZ2UmKSBmaW5hbDsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
Ci0gICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUs
IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJ
ZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRl
bnRpZmllcihjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVu
dHMoVmVjdG9yPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJikgZmluYWw7CkBA
IC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7
CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKICAgICAKICAgICB2b2lk
IHJlZ2lzdGVyVW5kb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKICAgICB2b2lkIHJl
Z2lzdGVyUmVkb1N0ZXAoV2ViQ29yZTo6VW5kb1N0ZXAmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCmluZGV4IDk1OTIyM2Q3NzZlZjkzMmFiMWE3MzcxNjA2ZTMyOTFkMjMy
OWQzY2IuLjE0YTA4M2NhMjA3YTkwNjNjZjgwYjFlN2U5NjcwYTQ4N2NmNGQzOTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE4OCw3ICsxMTg4LDcgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIp
CiAgICAgICAgICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVy
LT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwog
ICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UobWFpblJlc291cmNl
RGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxw
dHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkgOiAwKTsKICAg
ICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNo
TG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIobG9hZGVyLT5yZXNwb25zZSgpLnN1
Z2dlc3RlZEZpbGVuYW1lKCksIGRhdGFSZWZlcmVuY2UpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCA0YzY2NmRkNDBkNWU5ZDQ1MWExZTA2YzExZmQw
ODAwMjdhOThiMmExLi42MGMyMDdlZDBlZWE4MzZiNDg3MGRkYTdjNmJiMzBhMTQ1NGNhNDk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMTMyLDEyICsxMzIsMTIgQEAg
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXMocGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNv
bnRleHQpKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVz
OjpSZXBseSh0eXBlcyksIDApOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KiBjb250ZXh0KQogewogICAgIC8vIEZpcnN0IGNoZWNrIHRoZSBvdmVycmlkZXMuCiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IG92ZXJyaWRlQnVmZmVyOwogICAgIGlmIChXZWJQYXN0ZWJvYXJk
T3ZlcnJpZGVzOjpzaGFyZWRQYXN0ZWJvYXJkT3ZlcnJpZGVzKCkuZ2V0RGF0YUZvck92ZXJyaWRl
KHBhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkVHlwZSwgb3ZlcnJpZGVCdWZmZXIpKQotICAgICAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3ZlcnJpZGVC
dWZmZXIpKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3Zl
cnJpZGVCdWZmZXIpKTsKIAogICAgIC8vIEZhbGxiYWNrIHRvIG1lc3NhZ2luZyB0aGUgVUkgcHJv
Y2VzcyBmb3IgbmF0aXZlIHBhc3RlYm9hcmQgY29udGVudC4KICAgICBTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZSBpcGNIYW5kbGU7CkBAIC0yMDksNyArMjA5LDcgQEAgaW50NjRfdCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIGMKICAgICByZXR1cm4gbmV3Q2hhbmdlQ291bnQ7CiB9CiAKLWludDY0X3QgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitpbnQ2NF90IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgU2hhcmVkTWVtb3J5
OjpIYW5kbGUgaGFuZGxlOwogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5zaXplKCkpIHsKQEAg
LTMyNCw3ICszMjQsNyBAQCBWZWN0b3I8U3RyaW5nPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJl
YWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcAogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAKICAg
ICBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YTsKQEAgLTQwNiw3ICs0MDYsNyBAQCBzdGQ6Om9w
dGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbmZvcm1h
dGlvbkZvckl0ZW1BdEluZAogICAgIHJldHVybiBpbmZvOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVy
RnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0
ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCiB7
CiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgcGFz
dGVib2FyZFR5cGUsIHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1l
c3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZDo6UmVw
bHkoaXBjSGFuZGxlKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMDQ1
ZDRjYjg5YTk2NjRhMDhlMWI4MWEwNTMwMzVkYzVkOWQwYzU5OS4uMjAwYjZjMDE1OWI2ODhjNzJh
M2ZhZGZiYWUwYTY5NDgzMWI5MzZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApA
QCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGludCBn
ZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0
b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+
JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpAQCAtNjYs
NyArNjYsNyBAQCBwcml2YXRlOgogCiAgICAgaW50NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qg
c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKLSAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CisgICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
aW50NjRfdCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgaW50NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBAIC03OCw3
ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHJlYWRUZXh0RnJvbUNsaXBi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBWZWN0b3I8
U3RyaW5nPiByZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7
CiAgICAgdm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhckNsaXBi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgpAQCAt
ODksNyArODksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBTdHJpbmcgcmVhZFN0cmluZ0Zy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXRQYXN0ZWJv
YXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCmluZGV4IDA3YjE2N2UwZWVlZTc2ODg3NWIw
MzlkZmE1OWY1ZmQxM2M3NTRlMTAuLmEyMDVlMDAxY2E3MTU4MjA5MTNhODFhZTRhODM2NTMwZjlh
MGY2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAt
MzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC00NSwyMiAr
NDQsMjEgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVudChj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKICAgICA6IG1fZmlsZU5hbWUgeyBmaWxl
TmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAgICAgLCBtX3BhZ2VJRCB7IHBhZ2VJRCB9Ci0g
ICAgLCBtX2J1ZmZlciB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQogewogfQogCiBXZWJQcmV2
aWV3TG9hZGVyQ2xpZW50Ojp+V2ViUHJldmlld0xvYWRlckNsaWVudCgpID0gZGVmYXVsdDsKIAot
dm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZl
QnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRv
IHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1fcGFnZUlEKTsKICAg
ICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2J1ZmZlci0+aXNF
bXB0eSgpKQorICAgIGlmIChtX2J1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHdlYlBhZ2UtPmRp
ZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9maWxlTmFtZSwgbV91
dGkpOwogCi0gICAgbV9idWZmZXItPmFwcGVuZChidWZmZXIpOworICAgIG1fYnVmZmVyLmFwcGVu
ZChidWZmZXIpOwogfQogCiB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExv
YWRpbmcoKQpAQCAtNjksMTMgKzY3LDEyIEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6
ZGlkRmluaXNoTG9hZGluZygpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAK
LSAgICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZShtX2J1ZmZlci5nZXQoKSk7Ci0gICAgbV9idWZmZXItPmNsZWFyKCk7CisgICAgd2ViUGFnZS0+
ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9idWZmZXIudGFr
ZSgpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRGYWlsKCkK
IHsKLSAgICBtX2J1ZmZlci0+Y2xlYXIoKTsKKyAgICBtX2J1ZmZlci5yZXNldCgpOwogfQogCiB2
b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2
b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwNDkyY2VlYzJmOWI5Y2Q4NTM4Mzg0ODRmYmMy
NmMwN2NiNTNkYTg3Li4wZGMxNjdlNWI3YmMzYjAzZWYzOTMxZWFiMzU2Yzc4Mjc5Mjk1MjllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMjksNiArMjksNyBA
QAogCiAjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVk
QnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtNDUsNyArNDYsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2ViUHJl
dmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0
aSwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihj
b25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFp
bCgpIG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNTQsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIGNv
bnN0IFN0cmluZyBtX2ZpbGVOYW1lOwogICAgIGNvbnN0IFN0cmluZyBtX3V0aTsKICAgICBjb25z
dCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKLSAgICBSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyIG1f
YnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGll
bnRNYWMubW0KaW5kZXggNGI2ZTIxN2JiZTM3ZjhjMWRmMTdhYmNjYmJjODc3NDMxYTJiMWUzYi4u
ZTFlMGU2MTEyYTJkZWRjM2I4YmI2MzA5ODUzNTM3NmVmNDNhZDUxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RHJhZ0NsaWVudE1hYy5tbQpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6
ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVs
ZW1lCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgYXJjaGl2ZUhhbmRsZTsKICAgICBzaXplX3Qg
YXJjaGl2ZVNpemUgPSAwOwogICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIGF1dG8gYXJjaGl2ZUJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICop
ZGF0YS5nZXQoKSk7CisgICAgICAgIGF1dG8gYXJjaGl2ZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKICAgICAgICAgYXV0byBhcmNo
aXZlU2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGFyY2hpdmVC
dWZmZXIuZ2V0KCkpOwogICAgICAgICBpZiAoIWFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIpCiAg
ICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAKaW5kZXggOTI5YjE2MGVlYTlhNjQ3MmMyY2E3ZDAzYWMzMTMzYjdlMWVlOWY4
Ny4uZDg4ZjQ0Y2ZjZGU1ZTE1ZjY2YzEyNGI0MGY1YjU0MzViOTQ2OTdhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMzQwLDcgKzM0MCw3
IEBAIFN0cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29uc3QKICAgICBEb2N1bWVudExvYWRlciog
ZG9jdW1lbnRMb2FkZXIgPSBtX2NvcmVGcmFtZS0+bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2Fk
ZXIoKTsKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9h
ZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlRGF0YSgp
OwogICAgIGlmICghbWFpblJlc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
ICAgIHJldHVybiBkZWNvZGVyLT5lbmNvZGluZygpLmRlY29kZShtYWluUmVzb3VyY2VEYXRhLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGM0YWEwZDBl
M2VmOWE0ZTg4NDEyZmMwNWUwYzNjYjgxYWRiMjk1MDEuLjYzMjBjMzU4ZTFjZDI2MDMwNmYzNTM0
MmE5MGRjYTJlZjg0YzA4ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0xNzM4LDcgKzE3MzgsNyBAQCBOT19SRVRVUk4gdm9pZCBXZWJQYWdl
Ojpsb2FkUmVxdWVzdFdhaXRpbmdGb3JQcm9jZXNzTGF1bmNoKExvYWRQYXJhbWV0ZXJzJiYsIFVS
TAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRl
UG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzaGFy
ZWRCdWZmZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiBy
ZXNwb25zZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJE
YXRhLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmls
aXR5IHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQordm9pZCBXZWJQYWdlOjpsb2FkRGF0YUlt
cGwodWludDY0X3QgbmF2aWdhdGlvbklELCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0Rh
dGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBzaGFy
ZWRCdWZmZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiBy
ZXNwb25zZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJE
YXRhLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmls
aXR5IHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQogewogI2lmIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKICAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4sICZtX21haW5GcmFtZS5nZXQoKSk7CkBAIC0xNzUzLDcgKzE3NTMs
NyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaAogCiAgICAgLy8gTGV0IHRoZSBJbmplY3RlZEJ1
bmRsZSBrbm93IHdlIGFyZSBhYm91dCB0byBzdGFydCB0aGUgbG9hZCwgcGFzc2luZyB0aGUgdXNl
ciBkYXRhIGZyb20gdGhlIFVJUHJvY2VzcwogICAgIC8vIHRvIGFsbCB0aGUgY2xpZW50IHRvIHNl
dCB1cCBhbnkgbmVlZGVkIHN0YXRlLgotICAgIG1fbG9hZGVyQ2xpZW50LT53aWxsTG9hZERhdGFS
ZXF1ZXN0KCp0aGlzLCByZXF1ZXN0LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHN1YnN0aXR1
dGVEYXRhLmNvbnRlbnQoKSksIHN1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCksIHN1YnN0aXR1dGVE
YXRhLnRleHRFbmNvZGluZygpLCBzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCksIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0
KCkpLmdldCgpKTsKKyAgICBtX2xvYWRlckNsaWVudC0+d2lsbExvYWREYXRhUmVxdWVzdCgqdGhp
cywgcmVxdWVzdCwgY29uc3RfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4oc3Vic3RpdHV0
ZURhdGEuY29udGVudCgpKSwgc3Vic3RpdHV0ZURhdGEubWltZVR5cGUoKSwgc3Vic3RpdHV0ZURh
dGEudGV4dEVuY29kaW5nKCksIHN1YnN0aXR1dGVEYXRhLmZhaWxpbmdVUkwoKSwgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3Qo
KSkuZ2V0KCkpOwogCiAgICAgLy8gSW5pdGF0ZSB0aGUgbG9hZCBpbiBXZWJDb3JlLgogICAgIEZy
YW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCgqbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgp
LCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CkBAIC0zODYxLDcgKzM4NjEsNyBAQCB2b2lkIFdl
YlBhZ2U6OmdldFNvdXJjZUZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKAogCiB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZy
YW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYpPiYmIGNhbGxi
YWNrKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChXZWJGcmFtZSogZnJhbWUgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkgewogICAgICAgICBpZiAo
UGx1Z2luVmlldyogcGx1Z2luVmlldyA9IHBsdWdpblZpZXdGb3JGcmFtZShmcmFtZS0+Y29yZUZy
YW1lKCkpKQogICAgICAgICAgICAgYnVmZmVyID0gcGx1Z2luVmlldy0+bGl2ZVJlc291cmNlRGF0
YSgpOwpAQCAtMzg3Nyw3ICszODc3LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VE
YXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmQKICAgICBj
YWxsYmFjayhkYXRhUmVmZXJlbmNlKTsKIH0KIAotc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXJjZVVS
TCkKK3N0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9y
RnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cmNlVVJMKQogewogICAgIERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAg
ICBpZiAoIWxvYWRlcikKQEAgLTM4OTIsNyArMzg5Miw3IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVz
b3VyCiAKIHZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMU3RyaW5nLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlPiYpPiYmIGNhbGxiYWNrKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChh
dXRvKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7
CiAgICAgICAgIFVSTCByZXNvdXJjZVVSTChVUkwoKSwgcmVzb3VyY2VVUkxTdHJpbmcpOwogICAg
ICAgICBidWZmZXIgPSByZXNvdXJjZURhdGFGb3JGcmFtZShmcmFtZS0+Y29yZUZyYW1lKCksIHJl
c291cmNlVVJMKTsKQEAgLTcwMDEsNyArNzAwMSw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkR2V0TG9h
ZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVy
CiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSk7CiAKLSAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNv
bihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIudG9JbnRlZ2VyKCksIFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBp
Y29uRGF0YSkgbXV0YWJsZSB7CisgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lv
bkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLnRvSW50ZWdlcigpLCBbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGljb25EYXRhKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoeyBpY29uRGF0YSB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA2NzlhYmYxYjE1NWY1MDAyOTcyMjQxMWVkYTlhMzlj
MzJiNDMwNjM1Li4zYmJkNTM1NDgwZDA1NzYxM2M0M2RiM2Q5ZmFkNDdhZmJjNjIxMzQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0yMTYsNyArMjE2
LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNs
YXNzIFNlbGVjdGlvbkRhdGE7CiBjbGFzcyBTZWxlY3Rpb25HZW9tZXRyeTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRl
RGF0YTsKIGNsYXNzIFRleHRDaGVja2luZ1JlcXVlc3Q7CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247
CkBAIC0xNDAzLDcgKzE0MDMsNyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAg
ICB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGkpOwotICAgIHZvaWQgZGlkRmluaXNo
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyJik7CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9p
ZCByZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYp
OwogI2VuZGlmCiAKQEAgLTE2MDIsNyArMTYwMiw3IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcg
c291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAotICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBz
dGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmLCBzdGQ6Om9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgV2ViQ29yZTo6U3Vic3RpdHV0ZURh
dGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3Vs
ZE5vdEFsbG93KTsKKyAgICB2b2lkIGxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJz
aXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYsIHN0ZDo6b3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6U2Vz
c2lvbkhpc3RvcnlWaXNpYmlsaXR5LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxs
b3cpOwogCiAgICAgLy8gQWN0aW9ucwogICAgIHZvaWQgdHJ5Q2xvc2UoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGM5NWMzODQ2MzkyMjE4NGYyNTdhNzE5ZGI1YmE5
YTQ4MjlhZWRmMWIuLjg1ZTY1MTg2OTJlZDYwYzc4OGU3MmE3Y2UzMmYzZjBlMTVjYTc3ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCkBAIC0zMjE3LDcgKzMyMTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVs
ZW1lbnQodWludDMyX3QgYWN0aW9uKQogICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2Ug
PSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKmVsZW1lbnQucmVuZGVyZXIoKSkuY2FjaGVkSW1hZ2Uo
KTsKICAgICAgICAgaWYgKCFjYWNoZWRJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVm
ZmVyKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBj
YWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVk
TWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwpAQCAtNDY4Myw3ICs0NjgzLDcgQEAgdm9pZCBX
ZWJQYWdlOjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFN0
YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoZmlsZU5hbWUsIHV0aSkpOwog
fQogCi12b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkZyYW1lKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBXZWJQYWdlOjpkaWRGaW5p
c2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKCFidWZmZXIuaXNFbXB0eSgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKaW5kZXgg
Y2MwYWM2NzU3MTVmMGU4MmU1MDljNzU2YjMwMmNkNmNmZThhNTc3OC4uZjFlMWM1ZmY0ZDg5MTA5
ZDUxMTllYTBmNGE0MjMzMjM3MzIyODQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlIDxX
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBs
b2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCitSZWZQdHI8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFy
KiBuYW1lKQogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdIYW5kbGUuaAppbmRleCAxZjU1ODRmYTM4N2Q3NmNjZTk0
ZmY3YjU2OTY4ZTdlODIyMDYwNjA2Li5hMjU1NjBhMTBjMjg4MmUxYWJkMTc4NDU2OTQ4NmVhMTNl
ZDg5NmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1Bp
bmdIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1BpbmdI
YW5kbGUuaApAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogICAgICAgICBwaW5nTG9hZENvbXBsZXRlKHsgfSwgcmVzcG9uc2UpOwogICAgIH0K
LSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgp
OyB9CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwg
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCkgZmluYWwgeyBwaW5n
TG9hZENvbXBsZXRlKCk7IH0KICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbCB7
IHBpbmdMb2FkQ29tcGxldGUoKTsgfQogICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IHBp
bmdMb2FkQ29tcGxldGUoZXJyb3IpOyB9CiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopIGZpbmFsIHsgcmV0dXJuIG1fc2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggYzY1ZTk3ODg4Yjk2Yjcz
Nzk1ODgwNWI2ZjhmYTAwOWRjZDFmYjE3Ny4uNDIwMTA3ZGE2NWI3NmI2ZDEyYzRjNDU4MTM5ZjMw
ODI1OGQ5M2ZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBmaW5h
bDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYpIGZpbmFsOwogICAgIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UgcmVx
dWVzdERPTVBhc3RlQWNjZXNzKFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzQ2F0ZWdvcnksIGNvbnN0
IFN0cmluZyYpIGZpbmFsIHsgcmV0dXJuIFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6
OkRlbmllZEZvckdlc3R1cmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCA3NGM0ODc4MzE3N2Fm
OTBiMjAyZDUxYzQ2NjY5YjQwMTJiMTI1ZjU5Li5jMmM0MGQzZDJhMTMzZjI4MTM0MTU2MDM0ZGU1
NDE0MWE0Y2U5YzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC00MTMsNyArNDEzLDcgQEAgdm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVIKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5
IFdlYktpdDIuCiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQs
IG9ubHkgV2ViS2l0Mi4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGEyNTk4ZjMy
ZmI3NjBhN2Q4ODNjOWY0Y2VlYzE4Y2Y1OTFlYjhlYWQuLjk1OWQ3NDhiNTZiZTEwNzZiZDk3Nzk5
MjJjZDM1NmQyMWE2ODE3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjQ4LDcg
KzI0OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kSDJQaW5nKGNvbnN0IFVSTCYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U2Vjb25kcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
cj4mJik+JiYpIGZpbmFsOwogCiAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25z
dCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OkxpbmtJY29uJiwgdWludDY0X3Q+PiYpIGZpbmFs
OwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpTaGFyZWRCdWZmZXIqKTsK
KyAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciopOwogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBtX2xvYWRpbmdJ
Y29uIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggYjg0OWQyYWFj
MmE5M2ZiZWU0MTcyOWYyNGE4NmNkY2Y2YjFmZTAxOS4uYWEyY2M5ODE0NzRhMTNjZTUwODQ3OTg5
NDIzNjg0NDkxYzg4ZjZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTIwMTIs
NyArMjAxMiw3IEBAIFJlZlB0cjxXZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUHJldmlld0xvCiAgICAgICAgIFJldGFpblB0cjxO
U1N0cmluZz4gbV9maWxlUGF0aDsKICAgICAgICAgUmV0YWluUHRyPE5TRmlsZUhhbmRsZT4gbV9m
aWxlSGFuZGxlOwogCi0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikgb3Zl
cnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBkYXRhQXJyYXkgPSBidWZmZXIuY3Jl
YXRlTlNEYXRhQXJyYXkoKTsKICAgICAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGRhdGFB
cnJheS5nZXQoKSkKQEAgLTIwOTQsNyArMjA5NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmdldExvYWREZWNpc2lvbkZvckljb25zKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29y
CiAgICAgICAgIH0KIAogICAgICAgICBtX2xvYWRpbmdJY29uID0gdHJ1ZTsKLSAgICAgICAgZG9j
dW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24odHJ1ZSwgaWNvbi0+c2Vjb25k
LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciogYnVmZmVyKSB7CisgICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNp
b25Gb3JJY29uKHRydWUsIGljb24tPnNlY29uZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH1dIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpIHsKICAg
ICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgZmluaXNoZWRMb2FkaW5nSWNvbihidWZmZXIpOwpAQCAtMjEzMSw3ICsyMTMxLDcgQEAg
c3RhdGljIE5TSW1hZ2UgKndlYkdldE5TSW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1Np
emUgc2l6ZSkKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpTaGFyZWRCdWZm
ZXIqIGljb25EYXRhKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5n
SWNvbihXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0YSkKIHsKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBBU1NFUlQobV9sb2FkaW5nSWNvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGUzNTFlYTk5OGMwN2U0YjMwNDZmYzkwZDI2NDVmYWIz
ZTZkMGQ4OGEuLjFkODFmZmExOWQ5N2YwNGVjN2NjNTc1YjNlY2U1ZTg4ODE0NDBiMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01NSwxNCArNTUsMTQgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBTdHJpbmcgcmVh
ZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3Rl
Ym9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBn
ZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4
KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFu
Z2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+PiBhbGxQ
YXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBj
aGFuZ2VDb3VudCwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0
VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0
b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3Ry
aW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIGludDY0X3QgYWRkVHlwZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpT
aGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogICAgIGludDY0X3Qgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29s
b3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGEzZTNjOTMxNjhkODkzNjUwMmFh
NmU3ZjQ1NGU0ZTU3ZWQxYjEyOGMuLjE4OGVjNTAwNDUwNzdkNzhiMDEyMGE2ZGFmYmIwNGZiNzky
NzY0NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTEwOSw3ICsxMDksNyBA
QCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYgogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJv
YXJkTmFtZSkuZ2V0VHlwZXModHlwZXMpOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0
dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYnVmZmVyRm9yVHlwZShwYXN0
ZWJvYXJkVHlwZSk7CiB9CkBAIC0xNTQsNyArMTU0LDcgQEAgaW50NjRfdCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IGMKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRUeXBl
cyhwYXN0ZWJvYXJkVHlwZXMpOwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
c2V0QnVmZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikKK2ludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRC
dWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
c2V0QnVmZmVyRm9yVHlwZShidWZmZXIsIHBhc3RlYm9hcmRUeXBlKTsKIH0KQEAgLTIwOSw3ICsy
MDksNyBAQCBpbnQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3Vu
dChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLAogICAgIHJldHVybiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
KQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3Rl
Ym9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKS5yZWFkQnVmZmVyKGluZGV4LCB0eXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCBjNTMxYjFkZGRkM2JlOGU1
NmVkNmQ1ZDdjN2ZhNmI3ZGFhNmNjM2EzLi44M2U4NTkxNDM0NWVhN2NiODQxZDk5ZmQxZmI2NjZk
OGNjZjAzMDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJE
YXRhU291cmNlLm1tCkBAIC00NjAsNyArNDYwLDcgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKE5T
RGF0YSAqKWRhdGEKIHsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtYWluUmVz
b3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRh
KCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNv
dXJjZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEo
KTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAg
cmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmF1dG9yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQppbmRleCA1YjEwZDNmZjc1NjcwMTE1MTM4ZjRkNDMxNzI5N2NkY2ExZWM5NWQ3
Li4yOGQ4NzU5MjljY2FjZGI5YTEzODhhODI2YjJmZDVlY2Y0NmVjY2Q5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM1NDAsNyArMzU0
MCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNNZW51SXRlbT4gY3JlYXRlU2hhcmVNZW51SXRlbShj
b25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoCiAgICAgfQogCiAgICAgaWYgKGF1dG8qIGlt
YWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7Ci0gICAgICAgIGlmIChSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQorICAgICAgICBpZiAoUmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRh
KCkpCiAgICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9j
XSBpbml0V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+bWFrZUNvbnRpZ3Vv
dXMoKS0+ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCBk
M2I1MTZjNDFhOTBlN2ZhNTdkYWQ5ODkxZDQ5YTMzOTE0OGEzNjE0Li4xMmQ1OWMwYTE3NjgxOGU2
NjJjNDNjMDc0NGE1M2ExMDFjODU2MWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KQEAgLTM2Nyw3ICszNjcsNyBAQCAtIChOU1N0cmluZyAq
KV9zdHJpbmdWYWx1ZQogICAgIGlmICghZW5jb2RpbmcuaXNWYWxpZCgpKQogICAgICAgICBlbmNv
ZGluZyA9IFBBTDo6V2luZG93c0xhdGluMUVuY29kaW5nKCk7CiAgICAgCi0gICAgU2hhcmVkQnVm
ZmVyKiBjb3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVS
ZXNvdXJjZS0+ZGF0YSgpIDogbnVsbHB0cjsKKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBj
b3JlRGF0YSA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJj
ZS0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKaW5kZXggNWRmMjE3
MGQyYTRiZmM0YTQ4MGNmNDVhODRkMjNkNzMwNTkzNWZjMS4uMzYwYWVkY2VhY2NiMWZiZGQxZDQ0
YWQ0MmQ4YzA0YzZmMDRiNjE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
TWVtb3J5U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJl
YW0uY3BwCkBAIC0zMSw3ICszMSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBN
ZW1vcnlTdHJlYW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKLU1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK01lbW9yeVN0cmVhbTo6TWVtb3J5U3Ry
ZWFtKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIDogbV9idWZmZXIoV1RGTW92
ZShidWZmZXIpKQogewogICAgIGdDbGFzc0NvdW50Kys7CkBAIC00NCw3ICs0NCw3IEBAIE1lbW9y
eVN0cmVhbTo6fk1lbW9yeVN0cmVhbSgpCiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJN
ZW1vcnlTdHJlYW0iKTsKIH0KIAotQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpj
cmVhdGVJbnN0YW5jZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitD
T01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIHJldHVybiBuZXcgTWVtb3J5U3RyZWFtKFdU
Rk1vdmUoYnVmZmVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9N
ZW1vcnlTdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCmlu
ZGV4IDA3ODYwYTE1YWI0YTNkYjExOWM5MTEzZmFmYzljMTI0YjFjMTQ2ZGQuLjJiYTdkYTkwYTVj
NjIxMjkwMDhkZjYxMjk3MzBhY2RiOWJkNDUzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01l
bW9yeVN0cmVhbS5oCkBAIC0zNSw3ICszNSw3IEBACiBjbGFzcyBNZW1vcnlTdHJlYW0gZmluYWwg
OiBwdWJsaWMgSVN0cmVhbQogewogcHVibGljOgotICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5U3Ry
ZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJik7CisgICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNlKFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgLy8gSVVua25vd24KICAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJ
SUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpAQCAtNzUsMTAgKzc1LDEw
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQ2xvbmUo
X0NPTV9PdXRwdHJfIElTdHJlYW0qKiBwcHN0bSk7CiAKIHByaXZhdGU6Ci0gICAgTWVtb3J5U3Ry
ZWFtKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKKyAgICBNZW1v
cnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgfk1lbW9yeVN0
cmVhbSgpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAg
IHNpemVfdCBtX3BvcyB7IDAgfTsKICAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKaW5kZXggYjNhMmM0Y2ZlYjNlOGY4MmEw
NTBhMzhmNTcyNThkOTA2ZDA2YmUzYS4uODE1Nzk5NjEwNzY3ZTBiYjlhZDIyNDU2N2Q3MjVjZDNj
ZGNkYjFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKQEAgLTE2NCw3
ICsxNjQsNyBAQCBIUkVTVUxUIFdlYkFyY2hpdmU6OmRhdGEoX0NPTV9PdXRwdHJfb3B0XyBJU3Ry
ZWFtKiogc3RyZWFtKQogICAgIGlmICghY2ZEYXRhKQogICAgICAgICByZXR1cm4gRV9GQUlMOwog
Ci0gICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRh
R2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7
CisgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRy
KGNmRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKIAogICAgIHJl
dHVybiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoYnVmZmVyKSkuY29weVJl
ZlRvKHN0cmVhbSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggZTlhMTM2ZjZiYjQy
ZWM4YWI3ZjUwYTNhYjMzMzMzZmIzZjIwMjNmZC4uMjExNTk4ZDM5YTZhZjM2MWNjMmU0MDY3OTA2
ZTJiODY4NTdlZWZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0yNjEsNyArMjYxLDcgQEAg
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmUKIHsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6Omdl
dENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxl
UmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+ID4mKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3Rl
Ym9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVj
dG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggOTU4MWFiYmQ5
MzJhNTFiYmU5ODIwNWEyMzEzYTVjODA5YmE2OTdmMy4uMDg3YjY5ZTdhOGIwYjY4OGFjYmZlNDRl
NGRhYjFiN2JkYTU0MWYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0
ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
KSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpIGZpbmFsOwogCiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2Vs
ZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQogICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRl
bnRzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggOTBhNWEw
YTEzMzZlZWViYzhhZjVjZGVjMWI1YzYyMGU2ODIzMTliNS4uNTU4ZTEzYzdmMWZkYWE1YjEyNWQy
MGJlZmU3OTFhMjdmZjc1NzEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApA
QCAtNTU5LDcgKzU1OSw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OmxvYWRSZXF1ZXN0KF9Jbl9vcHRf
IElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgIHJldHVybiBTX09LOwogfQogCi12b2lkIFdl
YkZyYW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIg
bWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxp
bmdVUkwpCit2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUs
IEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKQogewogICAgIFN0cmluZyBtaW1lVHlwZVN0
cmluZyhtaW1lVHlwZSwgU3lzU3RyaW5nTGVuKG1pbWVUeXBlKSk7CiAgICAgaWYgKCFtaW1lVHlw
ZSkKQEAgLTU4NSwyMSArNTg1LDIxIEBAIHZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0CiAKIEhSRVNV
TFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8gQlNUUiBt
aW1lVHlwZSwgX0luXyBCU1RSIHRleHRFbmNvZGluZ05hbWUsIF9Jbl8gQlNUUiB1cmwpCiB7Ci0g
ICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgc2hhcmVkQnVmZmVyOwogCiAgICAgU1RBVFNURyBzdGF0OwogICAgIGlm
IChTVUNDRUVERUQoZGF0YS0+U3RhdCgmc3RhdCwgU1RBVEZMQUdfTk9OQU1FKSkpIHsKICAgICAg
ICAgaWYgKCFzdGF0LmNiU2l6ZS5IaWdoUGFydCAmJiBzdGF0LmNiU2l6ZS5Mb3dQYXJ0KSB7CiAg
ICAgICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YUJ1ZmZlcihzdGF0LmNiU2l6ZS5Mb3dQYXJ0KTsK
ICAgICAgICAgICAgIFVMT05HIHJlYWQ7Ci0gICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2Vz
IGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0aGUg
U2hhcmVkQnVmZmVyCisgICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxlc3Mg
Y29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0aGUgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcgogICAgICAgICAgICAgLy8gb3IgYWRvcHQgdGhlIFZlY3RvciBvciBzb21ldGhp
bmcuCiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPlJlYWQoZGF0YUJ1ZmZlci5kYXRh
KCksIHN0YXRpY19jYXN0PFVMT05HPihkYXRhQnVmZmVyLnNpemUoKSksICZyZWFkKSkpCi0gICAg
ICAgICAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRp
Y19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICBzaGFyZWRC
dWZmZXIuYXBwZW5kKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGFCdWZm
ZXIuc2l6ZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBsb2FkRGF0YShXVEZNb3ZlKHNo
YXJlZEJ1ZmZlciksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmdOYW1lLCB1cmwsIG51bGxwdHIpOwor
ICAgIGxvYWREYXRhKHNoYXJlZEJ1ZmZlci50YWtlKCksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmdO
YW1lLCB1cmwsIG51bGxwdHIpOwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRnJhbWUuaAppbmRleCA0MzYwNTRmZDlkZGI0N2NhMzI5NmIxMTc5ODE0MzRlYzE4OTdk
YWQxLi5mYTljMzgxY2M1NzNiYTZiMjA5ODhlYWIzNTA4ZWQ5YTMwYThmMTM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkZyYW1lLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgSFRNTEZyYW1lT3du
ZXJFbGVtZW50OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZXNvdXJjZUVy
cm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IH0KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0NvbnRleHRSZWY7
CkBAIC0xOTUsNyArMTk1LDcgQEAgcHJpdmF0ZToKICAgICB+V2ViRnJhbWUoKTsKIAogICAgIHZv
aWQgbG9hZEhUTUxTdHJpbmcoX0luXyBCU1RSIHN0cmluZywgX0luXyBCU1RSIGJhc2VVUkwsIF9J
bl8gQlNUUiB1bnJlYWNoYWJsZVVSTCk7Ci0gICAgdm9pZCBsb2FkRGF0YShSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJT
VFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKTsKKyAgICB2b2lkIGxvYWREYXRhKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRF
bmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKTsKICAgICBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIGNvbXB1dGVQYWdlUmVjdHMoSERDIHByaW50REMpOwog
ICAgIHZvaWQgc2V0UHJpbnRpbmcoYm9vbCBwcmludGluZywgY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiBwYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBvcmlnaW5hbFBhZ2VTaXpl
LCBmbG9hdCBtYXhpbXVtU2hyaW5rUmF0aW8sIFdlYkNvcmU6OkFkanVzdFZpZXdTaXplT3JOb3Qp
OwogICAgIHZvaWQgaGVhZGVyQW5kRm9vdGVySGVpZ2h0cyhmbG9hdCosIGZsb2F0Kik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcAppbmRleCA5NjIwMTk4YjRiNTQwYWU2Zjc5Njdm
ODIzM2M5NDY0YmQyNzc1ODUxLi4yNzRiN2QyZDZjZjJlYjQ3MWQ3YjhiODk2NTlhZTQ2OWNmOTM0
YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAKQEAgLTE2NSw4ICsxNjUs
OCBAQCB2b2lkIHNodXREb3duV2ViS2l0KCkKIH0KIAogLy9GSVhNRTogV2Ugc2hvdWxkIGNvbnNp
ZGVyIG1vdmluZyB0aGlzIHRvIGEgbmV3IGZpbGUgZm9yIGNyb3NzLXByb2plY3QgZnVuY3Rpb25h
bGl0eQotV0VCS0lUX0FQSSBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3Vy
Y2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpOwotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQorV0VCS0lUX0FQ
SSBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50
b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKTsKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAg
ICAgaW50IGlkcjsKICAgICAvLyB0ZW1wb3JhcnkgaGFjayB0byBnZXQgcmVzb3VyY2UgaWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAppbmRleCAyZmZjYjg5OTliMTg0NDhj
ZDYyNDhmOWJmY2YxNWFhNTE3Y2FlYmQ2Li45NDNmYTdhYjQ1YzhiMGQzNWQ2N2EzMGMwZmRhYjQz
NDlhM2U2NGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCkBAIC01
MSw3ICs1MSw3IEBAIFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiKTsKIH0KIAotV2ViUmVzb3VyY2UqIFdlYlJlc291
cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1dl
YlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKIHsKICAgICBDT01QdHI8TWVtb3J5U3RyZWFtPiBtZW1vcnlTdHJlYW0gPSBNZW1vcnlT
dHJlYW06OmNyZWF0ZUluc3RhbmNlKFdURk1vdmUoZGF0YSkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUmVzb3VyY2UuaAppbmRleCA5NGFiMzVjNTYwODEwMTE3Yzg5NWU0YTEwYzM5MWJjY2Ez
MzdkMThlLi5iNmViODZmY2NhNWUzMTM2OWM5ZThiMDY1NDE4ZjI3OTQ5Mjk5OTAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKQEAgLTM2LDcgKzM2LDcgQEAKIAogY2xhc3Mg
V2ViUmVzb3VyY2UgZmluYWwgOiBwdWJsaWMgSVdlYlJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Cisg
ICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICAv
LyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUlu
dGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCk7
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTAw
NTgwMDNlNjAxY2EwNDQwZjc5NTQ4ZjM2YmNkOGRlY2I4MTFjYS4uMmY4Y2ZhMDc5ZjE5NTIyYjUz
NTYzZGNkODA4MmNhN2I4YTRhMTIyNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBj
bGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVk
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAg
ICB0eXBlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0u
Y3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRl
c3RzLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyVGVzdC5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlclRlc3QuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cv
RGlzcGxheUxpc3RUZXN0c0NHLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvd2lu
L1Rlc3RXZWJDb3JlU3R1YnMuY3BwOgorCisyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzQ0Mgor
ICAgICAgICByZGFyOi8vODU2OTM5MzkKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFi
bGV0LgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIw
MjEtMTItMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCBTZXJ2aWNlV29ya2VyIGRvd25sb2FkcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9GaWxlU3lzdGVtLmNwcAppbmRleCBmMzMyZDcyYmFkMDczNDljZWQ4OTM4NDJkNzMyNDc3ZmJm
ZDY2YzIzLi44NmU1YTRiM2Y2MzhhMzhmMGYxOGNhMTJkNjZkNTI5MTAwMmUzMjg0IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAtNDQsNyArNDQs
NyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVUZXN0RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogfTsKIAotLy8gRklYTUU6IFJlZmFj
dG9yIEZpbGVTeXN0ZW1UZXN0IGFuZCBTaGFyZWRCdWZmZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNz
LgorLy8gRklYTUU6IFJlZmFjdG9yIEZpbGVTeXN0ZW1UZXN0IGFuZCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyVGVzdCBhcyBhIHNpbmdsZSBjbGFzcy4KIGNsYXNzIEZpbGVTeXN0ZW1UZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0
VGVzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0
VGVzdHMuY3BwCmluZGV4IGY3ZTU1Nzk5MjQ1OWFmNWQxYTliODE3MDg5N2Y4ZTQ2NDQxMDVhYTgu
LmYyNGRmMDFkZDU3NGE3NjQxODAxOGJlZDM1ZThlZTBjMGZlOGQ2OTcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAK
QEAgLTE5OSw3ICsxOTksNyBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGll
bnQpCiAgICAgICAgICAgICByZXR1cm4geyBnbG9iYWxCdWZmZXJJZGVudGlmaWVyLCBnbG9iYWxJ
dGVtQnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkgfTsKICAgICAgICAgfQogCi0gICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxh
eUxpc3RJdGVtJiBkaXNwbGF5TGlzdEl0ZW0pIGNvbnN0IGZpbmFsCisgICAgICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlM
aXN0SXRlbSYgZGlzcGxheUxpc3RJdGVtKSBjb25zdCBmaW5hbAogICAgICAgICB7CiAgICAgICAg
ICAgICBhdXRvIGluZGV4ID0gbV9pdGVtcy5zaXplKCk7CiAgICAgICAgICAgICBtX2l0ZW1zLmFw
cGVuZChzdGQ6OmdldDxTdHJva2VQYXRoPihkaXNwbGF5TGlzdEl0ZW0pKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggYmFh
ZTI3YTk5OGZmZDY5MWMxMDZiODg3MTU1NmJkNGYwNTIyYzIwMC4uZjEyYjlmMDgzNjA1NTg5NGNk
NjVhODIzZDVmZjZlMzRiOThhZDU5OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
QEAgLTQxLDMxICs0MSwzMSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgewogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENv
bnRlbnRzT2ZNaXNzaW5nRmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwg
Y3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5v
dF9leGlzdGluZ19maWxlIikpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpKTsKICAgICBB
U1NFUlRfTlVMTChidWZmZXIpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRl
V2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
clRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIGF1dG8gYnVm
ZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRl
bXBGaWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVm
ZmVyKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oU2hhcmVkQnVm
ZmVyVGVzdDo6dGVzdERhdGEoKSkpOwotICAgIEVYUEVDVF9UUlVFKFN0cmluZyhTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5k
YXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkg
PT0gc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7CisgICAg
RVhQRUNUX1RSVUUoU3RyaW5nKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
KSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNP
ZkV4aXN0aW5nRW1wdHlGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBj
cmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQogewotICAgIGF1dG8gYnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBF
bXB0eUZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9O
VUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0NvbnRpZ3VvdXMoKSk7CiAg
ICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5KCkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVm
ZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKK1RF
U1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29u
dGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAg
YXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1w
RmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RS
VUUoYnVmZmVyLT5pc0NvbnRpZ3VvdXMoKSk7CiAgICAgYXV0byBjb3B5ID0gYnVmZmVyLT5jb3B5
KCk7CkBAIC03NCw1MCArNzQsNDIgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZm
ZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiAgICAgRVhQRUNUX1RSVUUoIW1l
bWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY2xlYXJCdWZmZXJD
cmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmls
ZSkKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBi
dWZmZXItPmNsZWFyKCk7Ci0gICAgRVhQRUNUX1RSVUUoIWJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBF
WFBFQ1RfVFJVRSghYnVmZmVyLT5kYXRhKCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVp
bGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgqYnVmZmVyKTsKKyAgICBidWlsZGVyLmFwcGVuZCgi
YSIsIDEpOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuc2l6ZSgpID09IChzdHJsZW4oRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOworICAgIEVYUEVDVF9UUlVF
KCFtZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0
KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBl
bmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCi17Ci0gICAgYXV0byBj
b250aWd1b3VzQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKLSAgICBBU1NFUlRfTk9UX05VTEwoY29udGlndW91
c0J1ZmZlcik7Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250aWd1
b3VzQnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwotICAgIGJ1ZmZlci0+YXBwZW5kKCJhIiwgMSk7
Ci0gICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJU
ZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpLCBz
dHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpKTsKLSAgICBFWFBFQ1RfRVEoJ2En
LCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVz
dDo6dGVzdERhdGEoKSldKTsKLX0KLQotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0
ZUFycmF5QnVmZmVyKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVh
dGVBcnJheUJ1ZmZlcikKIHsKICAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxvIjsKICAgICBj
aGFyIHRlc3REYXRhMVtdID0gIldvcmxkIjsKICAgICBjaGFyIHRlc3REYXRhMltdID0gIkdvb2Ri
eWUiOwotICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodGVzdERh
dGEwLCBzdHJsZW4odGVzdERhdGEwKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERh
dGExLCBzdHJsZW4odGVzdERhdGExKSk7Ci0gICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQodGVzdERh
dGEyLCBzdHJsZW4odGVzdERhdGEyKSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1
ZmZlciA9IHNoYXJlZEJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1aWxkZXIoc3RkOjppbl9wbGFjZSwgdGVzdERhdGEwLCBzdHJsZW4odGVz
dERhdGEwKSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGExLCBzdHJsZW4odGVzdERhdGEx
KSk7CisgICAgYnVpbGRlci5hcHBlbmQodGVzdERhdGEyLCBzdHJsZW4odGVzdERhdGEyKSk7Cisg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IGJ1aWxkZXIuZ2V0KCktPnRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgY2hhciBleHBlY3RlZENvbmNhdGVuYXRpb25bXSA9ICJI
ZWxsb1dvcmxkR29vZGJ5ZSI7CiAgICAgQVNTRVJUX0VRKHN0cmxlbihleHBlY3RlZENvbmNhdGVu
YXRpb24pLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBFWFBFQ1RfRVEoMCwgbWVt
Y21wKGV4cGVjdGVkQ29uY2F0ZW5hdGlvbiwgYXJyYXlCdWZmZXItPmRhdGEoKSwgc3RybGVuKGV4
cGVjdGVkQ29uY2F0ZW5hdGlvbikpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRy
eUNyZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVk
QnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQogewogICAgIFZl
Y3Rvcjx1aW50OF90PiB2ZWN0b3IwKDB4NDAwMCwgJ2EnKTsKICAgICBWZWN0b3I8dWludDhfdD4g
dmVjdG9yMSgweDQwMDAsICdiJyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjIoMHg0MDAw
LCAnYycpOwogCi0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKHZlY3RvcjApKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3Rv
cjEpKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKLSAgICBS
ZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gc2hhcmVkQnVmZmVyLT50cnlDcmVhdGVB
cnJheUJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihzdGQ6OmluX3Bs
YWNlLCBXVEZNb3ZlKHZlY3RvcjApKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3Rv
cjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKHZlY3RvcjIpKTsKKyAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gYnVpbGRlci5nZXQoKS0+dHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKTsKICAgICBBU1NFUlRfRVEoMHg0MDAwVSArIDB4NDAwMFUgKyAweDQwMDBVLCBhcnJh
eUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBpbnQgcG9zaXRpb24gPSAwOwogICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgMHg0MDAwOyArK2kpIHsKQEAgLTEzNCw3ICsxMjYsNyBAQCBURVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQogICAg
IH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCitURVNUX0YoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiB7CiAgICAgY2hhciB0ZXN0RGF0YVtdID0gIkhhYml0
YXNzZSBpbnRlZ2VyIGVyb3MgdGluY2lkdW50IGEgc2NlbGVyaXNxdWUhIEVuaW0gZWxpdD8gU2Nl
bGVyaXNxdWUgbWFnbmlzLCIKICAgICAiZXQgbW9udGVzIHVsdHJpY2VzIHRyaXN0aXF1ZSBhISBQ
aWQuIFZlbGl0IHR1cnBpcywgZGFwaWJ1cyBpbnRlZ2VyIHJob25jdXMgc29jaWlzIGFtZXQgZmFj
aWxpc2lzLCIKQEAgLTE1NCwxNyArMTQ2LDUzIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBj
b3B5KQogICAgICJtYXR0aXMgZGlnbmlzc2ltIG1hc3NhIGFjIHB1bHZpbmFyIHVybmEsIG51bmMg
dXQuIFNhZ2l0dGlzLCBhbGlxdWV0IHBlbmF0aWJ1cyBwcm9pbiBsb3JlbSwgcHVsdmluYXIgbGVj
dHVzLCIKICAgICAiYXVndWUgcHJvaW4hIEFjLCBhcmN1IHF1aXMuIFBsYWNlcmF0IGhhYml0YXNz
ZSwgcmlkaWN1bHVzIHJpZGljdWx1cy4iOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbih0
ZXN0RGF0YSk7Ci0gICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0
ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVu
Z3RoKTsKLSAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKLSAgICBz
aGFyZWRCdWZmZXItPmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXIxKHN0ZDo6aW5fcGxhY2UsIHRlc3REYXRhLCBsZW5ndGgpOworICAgIGJ1
aWxkZXIxLmFwcGVuZCh0ZXN0RGF0YSwgbGVuZ3RoKTsKKyAgICBidWlsZGVyMS5hcHBlbmQodGVz
dERhdGEsIGxlbmd0aCk7CisgICAgYnVpbGRlcjEuYXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwog
ICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0YSBtb3JlIHRoYW4gc2VnbWVudFNp
emUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5KCkuCi0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQs
IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKLSAgICBhdXRvIGNsb25lID0gc2hhcmVkQnVmZmVyLT5j
b3B5KCk7Ci0gICAgQVNTRVJUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwotICAgIEFT
U0VSVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2hhcmVk
QnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKLSAgICBj
bG9uZS0+YXBwZW5kKHRlc3REYXRhLCBsZW5ndGgpOwotICAgIEFTU0VSVF9FUShsZW5ndGggKiA1
LCBjbG9uZS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgYnVpbGRlcjEuc2l6
ZSgpKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBidWlsZGVy
MS5jb3B5KCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOworICAg
IEVYUEVDVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVp
bGRlcjEuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwor
CisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBidWlsZGVyMi5hcHBlbmQo
KmNsb25lKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CisgICAgRVhQ
RUNUX0VRKGxlbmd0aCAqIDUsIGJ1aWxkZXIyLnNpemUoKSk7CisgICAgYXV0byBidWZmZXIgPSBi
dWlsZGVyMi50YWtlKCk7CisgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDUsIGJ1ZmZlci0+c2l6ZSgp
KTsKKyAgICAvLyBidWlsZGVyIGlzIG5vdyBlbXB0eS4KKyAgICBFWFBFQ1RfRVEoMFUsIGJ1aWxk
ZXIyLnNpemUoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNOdWxsKCkpOworICAgIEVY
UEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHkoKSk7Cit9CisKK1RFU1RfRihGcmFnbWVudGVkU2hh
cmVkQnVmZmVyVGVzdCwgYnVpbGRlcikKK3sKKyAgICBjaGFyIHRlc3REYXRhMFtdID0gIkhlbGxv
IjsKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIxKHN0ZDo6aW5fcGxhY2UsIHRlc3RE
YXRhMCwgc3RybGVuKHRlc3REYXRhMCkpOworICAgIEVYUEVDVF9GQUxTRShidWlsZGVyMS5pc051
bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7CisgICAgYXV0byBj
b3B5ID0gYnVpbGRlcjEuY29weSgpOworICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlcjEudGFrZSgp
OworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIxLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShi
dWlsZGVyMS5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRy
KCkpOyAvLyBXZSBoYXZlIGRpZmZlcmVudCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyCisgICAgRVhQ
RUNUX0VRKGNvcHkuZ2V0KCksIGJ1ZmZlci5nZXQoKSk7IC8vIEJ1dCB0aGVpciBjb250ZW50IGlz
IGlkZW50aWNhbAorCisgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMjsKKyAgICBFWFBF
Q1RfVFJVRShidWlsZGVyMi5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNF
bXB0eSgpKTsKKyAgICBidWlsZGVyMi5hcHBlbmQodGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEw
KSk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFM
U0UoYnVpbGRlcjIuaXNFbXB0eSgpKTsKKyAgICBidWlsZGVyMi5yZXNldCgpOworICAgIEVYUEVD
VF9UUlVFKGJ1aWxkZXIyLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0Vt
cHR5KCkpOworICAgIGJ1aWxkZXIyLmVtcHR5KCk7CisgICAgRVhQRUNUX0ZBTFNFKGJ1aWxkZXIy
LmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShidWlsZGVyMi5pc0VtcHR5KCkpOwogfQogCiBz
dGF0aWMgdm9pZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZm
ZXJMZW5ndGgsIGNvbnN0IGNoYXIqIGV4cGVjdGVkKQpAQCAtMTc2LDI1ICsyMDQsMjcgQEAgc3Rh
dGljIHZvaWQgY2hlY2tCdWZmZXIoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVy
TGVuZ3RoLCBjb25zdCBjaGFyKgogICAgICAgICBFWFBFQ1RfRVEoYnVmZmVyW2ldLCBleHBlY3Rl
ZFtpXSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKK1RFU1Rf
RihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiB7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHMxID0geyAnYScsICdiJywgJ2MnLCAnZCcgfTsKICAgICBWZWN0b3I8dWludDhf
dD4gczIgPSB7ICdlJywgJ2YnLCAnZycsICdoJyB9OwogICAgIFZlY3Rvcjx1aW50OF90PiBzMyA9
IHsgJ2knLCAnaicsICdrJywgJ2wnIH07CiAKLSAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCk7Ci0gICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShzMSkpOwotICAgIGJ1ZmZl
ci0+YXBwZW5kKFdURk1vdmUoczIpKTsKLSAgICBidWZmZXItPmFwcGVuZChXVEZNb3ZlKHMzKSk7
Ci0gICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwor
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZChXVEZN
b3ZlKHMxKSk7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZShzMikpOworICAgIGJ1aWxkZXIu
YXBwZW5kKFdURk1vdmUoczMpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIudGFrZSgpOwog
ICAgIAogICAgIGF1dG8gYWJjZCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMCk7CiAgICAgYXV0byBn
aDEgPSBidWZmZXItPmdldFNvbWVEYXRhKDYpOwogICAgIGF1dG8gaCA9IGJ1ZmZlci0+Z2V0U29t
ZURhdGEoNyk7CiAgICAgYXV0byBpamtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSg4KTsKICAgICBh
dXRvIGtsID0gYnVmZmVyLT5nZXRTb21lRGF0YSgxMCk7CisgICAgYXV0byBjb250aWd1b3VzQnVm
ZmVyID0gYnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIGF1dG8gYWJjZGVmZ2hpamtsID0g
Y29udGlndW91c0J1ZmZlci0+ZGF0YSgpOwogICAgIGF1dG8gZ2gyID0gYnVmZmVyLT5nZXRTb21l
RGF0YSg2KTsKKyAgICBhdXRvIGdoaWprbCA9IGNvbnRpZ3VvdXNCdWZmZXItPmdldFNvbWVEYXRh
KDYpOwogICAgIGF1dG8gbCA9IGJ1ZmZlci0+Z2V0U29tZURhdGEoMTEpOwogICAgIGNoZWNrQnVm
ZmVyKGFiY2QuZGF0YSgpLCBhYmNkLnNpemUoKSwgImFiY2QiKTsKICAgICBjaGVja0J1ZmZlcihn
aDEuZGF0YSgpLCBnaDEuc2l6ZSgpLCAiZ2giKTsKQEAgLTIwMyw0NiArMjMzLDUxIEBAIFRFU1Rf
RihTaGFyZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKICAgICBjaGVja0J1ZmZlcihrbC5kYXRh
KCksIGtsLnNpemUoKSwgImtsIik7CiAgICAgY2hlY2tCdWZmZXIoYWJjZGVmZ2hpamtsLCBidWZm
ZXItPnNpemUoKSwgImFiY2RlZmdoaWprbCIpOwogICAgIGNoZWNrQnVmZmVyKGdoMi5kYXRhKCks
IGdoMi5zaXplKCksICJnaCIpOworICAgIGNoZWNrQnVmZmVyKGdoaWprbC5kYXRhKCksIGdoaWpr
bC5zaXplKCksICJnaGlqa2wiKTsKICAgICBFWFBFQ1RfRVEoZ2gxLnNpemUoKSwgZ2gyLnNpemUo
KSk7CiAgICAgY2hlY2tCdWZmZXIoZ2gxLmRhdGEoKSwgZ2gxLnNpemUoKSwgZ2gyLmRhdGFBc0No
YXJQdHIoKSk7CiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIpOwogfQog
Ci1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQorVEVTVF9GKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVyID0gW10g
KFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKLSAgICAgICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgY29udGVudCA6IGNvbnRlbnRzKQotICAgICAg
ICAgICAgYnVmZmVyLT5hcHBlbmQoV1RGTW92ZShjb250ZW50KSk7Ci0gICAgICAgIHJldHVybiBi
dWZmZXI7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChXVEZNb3ZlKGNvbnRlbnQpKTsKKyAg
ICAgICAgcmV0dXJuIGJ1aWxkZXIudGFrZSgpOwogICAgIH07CiAgICAgYXV0byBidWZmZXIxID0g
bWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJywgJ2QnIH0gfSk7CiAgICAgRVhQRUNUX0VRKGJ1
ZmZlcjEuZ2V0KCksIGJ1ZmZlcjEuZ2V0KCkpOwogCi0gICAgYnVmZmVyMS0+YXBwZW5kKFZlY3Rv
cjx1aW50OF90Pih7J2EnLCAnYicsICdjJywgJ2QnfSkpOwotICAgIEVYUEVDVF9FUShidWZmZXIx
LmdldCgpLCBtYWtlQnVmZmVyKHt7J2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAn
ZCd9fSkuZ2V0KCkpOworICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcihXVEZNb3ZlKGJ1
ZmZlcjEpKTsKKyAgICBidWlsZGVyLmFwcGVuZChWZWN0b3I8dWludDhfdD4oeyAnYScsICdiJywg
J2MnLCAnZCcgfSkpOworICAgIEVYUEVDVF9FUSgqYnVpbGRlci5nZXQoKSwgbWFrZUJ1ZmZlcih7
IHsgJ2EnLCAnYicsICdjJywgJ2QnLCAnYScsICdiJywgJ2MnLCAnZCcgfSB9KS5nZXQoKSk7CisK
ICAgICBFWFBFQ1RfRVEobWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2InLCAnYycgfSwgeyAnZCcg
fSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSwgeyAnYycsICdkJyB9IH0pLmdl
dCgpKTsKICAgICBFWFBFQ1RfTkUobWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwg
bWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicsICdjJyB9IH0pLmdldCgpKTsKICAgICBFWFBFQ1RfTkUo
bWFrZUJ1ZmZlcih7IHsgJ2EnLCAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2InLCAn
YycgfSB9KS5nZXQoKSk7CiAgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdi
JyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5nZXQoKSk7CiB9
CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKK1RFU1RfRihGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHQxID0gezB4MTEsIDB4NSwgMHgxMn07Ci0gICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwotICAgIGJ1ZmZlci0+YXBwZW5kKFdURk1vdmUodDEpKTsKKyAgICBTaGFyZWRC
dWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoV1RGTW92ZSh0MSkpOwor
ICAgIGF1dG8gYnVmZmVyID0gYnVpbGRlci50YWtlKCk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1
ZmZlci0+dG9IZXhTdHJpbmcoKTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LCAiMTEwNTEyIik7Ci0g
ICAgYnVmZmVyLT5jbGVhcigpOworICAgIGJ1aWxkZXIucmVzZXQoKTsKKyAgICBidWZmZXIgPSBi
dWlsZGVyLnRha2UoKTsKICAgICBFWFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0cmluZygpLCAiIik7
CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQorVEVTVF9GKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXJUZXN0LCByZWFkKQogewogICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRl
eHQgPSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LiI7CiAKLSAgICBhdXRvIGNoZWNrID0gW10oU2hh
cmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhID0gc2hhcmVkQnVmZmVyLnJlYWQoNCwgMyk7CiAgICAgICAgIEVYUEVDVF9FUShkYXRhLnNp
emUoKSwgM3UpOwogICAgICAgICBFWFBFQ1RfRVEoU3RyaW5nKGRhdGEuZGF0YSgpLCAzKSwgIiBp
cyIpOwpAQCAtMjU1LDE2ICsyOTAsMTcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQp
CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0
LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CiAKLSAgICBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVU
ZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwg
MSk7Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNp
bXBsZVRleHRbaV0sIDEpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKKyAgICBFWFBFQ1Rf
VFJVRShidWlsZGVyLmlzTnVsbCgpICYmICFidWlsZGVyKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRl
ci5zaXplKCksIDB1KTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkgKz0g
MikKLSAgICAgICAgc2hhcmVkQnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDIpOwotICAg
IEVYUEVDVF9FUShzaGFyZWRCdWZmZXItPnNpemUoKSwgc3RybGVuKHNpbXBsZVRleHQpKTsKLSAg
ICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgmc2ltcGxlVGV4
dFtpXSwgMik7CisgICAgRVhQRUNUX0VRKGJ1aWxkZXIuc2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4
dCkpOworICAgIGNoZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkK
QEAgLTI3Miw3ICszMDgsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKIHRlbXBs
YXRlPCB0eXBlbmFtZSBULCBzaXplX3QgTiA+CiBjb25zdGV4cHIgc2l6ZV90IGFycmF5c2l6ZSgg
Y29uc3QgVCAoJilbTl0gKSB7IHJldHVybiBOOyB9CiAKLXN0YXRpYyB2b2lkIHJlYWRBbGxDaHVu
a3Moc3RkOjp2ZWN0b3I8U3RyaW5nPiogY2h1bmtzLCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZh
bHNlKQorc3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxTdHJpbmc+KiBjaHVu
a3MsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBzZXBhcmF0
b3IgPSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKQogewogICAgIFNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZidWZmZXIsIHNlcGFyYXRvci51dGY4KCku
ZGF0YSgpKTsKICAgICBTdHJpbmcgY2h1bmsgPSBjaHVua1JlYWRlci5uZXh0Q2h1bmtBc1VURjhT
dHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soaW5jbHVkZVNlcGFyYXRvcik7CkBAIC0zMDUsNyArMzQx
LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tEYXRhSW5SYW5nZShjb25zdCBWZWN0b3I8dWludDhfdD4m
IGRhdGEsIHNpemVfdCBzdGFydCwgc2l6ZV90IGwKIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKIHsKLSAgICBhdXRvIGNoZWNrID0gW10oU2hh
cmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIFNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyIGNodW5rUmVhZGVyKCZzaGFyZWRCdWZmZXIsICJceDEwXHgxMVx4MTIiKTsKICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IG91dDsKICAgICAgICAgRVhQRUNUX1RSVUUoY2h1bmtSZWFkZXIu
bmV4dENodW5rKG91dCkpOwpAQCAtMzE5LDIyICszNTUsMjQgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyVGVzdCwgaW5jbHVkZVNlcGFyYXRvcikKICAgICB1aW50OF90IGRhdGFbMjU2
XTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKQogICAgICAgICBkYXRhW2ld
ID0gaTsKLQogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSwgMjU2KTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIo
c3RkOjppbl9wbGFjZSwgZGF0YSwgMjU2KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDI1NjsgKytpKSB7CiAgICAgICAgIGNoYXIgYyA9
IGk7Ci0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZjLCAxKTsKKyAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJmMsIDEpOwogICAgIH0KLSAgICBjaGVjayhzaGFyZWRCdWZmZXIpOworICAgIGNo
ZWNrKGJ1aWxkZXIudGFrZSgpKTsKIH0KIAogVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
VGVzdCwgcGVla0RhdGEpCiB7CiAgICAgY29uc3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJU
aGlzIGlzIGEgc2ltcGxlIHRlc3QuIjsKIAotICAgIGF1dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZm
ZXImIHNoYXJlZEJ1ZmZlcikgeworICAgIGF1dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIg
Y2h1bmtSZWFkZXIoJnNoYXJlZEJ1ZmZlciwgImlzIik7CiAKICAgICAgICAgU3RyaW5nIGNodW5r
ID0gY2h1bmtSZWFkZXIubmV4dENodW5rQXNVVEY4U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKCk7
CkBAIC0zNjQsMjIgKzQwMiwyMyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0
LCBwZWVrRGF0YSkKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgY2hlY2soc2hhcmVkQnVmZmVy
KTsKIAotICAgIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyKHN0ZDo6aW5fcGxhY2UsIHNpbXBsZVRleHQsIHN0cmxl
bihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkpOworCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzdHJsZW4oc2ltcGxlVGV4dCk7IGkrKykKLSAgICAgICAgc2hhcmVk
QnVmZmVyLT5hcHBlbmQoJnNpbXBsZVRleHRbaV0sIDEpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZl
cik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBjaGVj
ayhidWlsZGVyLnRha2UoKSk7CiAKLSAgICBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RybGVuKHNpbXBsZVRleHQpOyBp
ICs9IDIpCi0gICAgICAgIHNoYXJlZEJ1ZmZlci0+YXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAyKTsK
LSAgICBFWFBFQ1RfRVEoc2hhcmVkQnVmZmVyLT5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7
Ci0gICAgY2hlY2soc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJnNpbXBs
ZVRleHRbaV0sIDIpOworICAgIEVYUEVDVF9FUShidWlsZGVyLnNpemUoKSwgc3RybGVuKHNpbXBs
ZVRleHQpKTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKIFRFU1RfRihTaGFyZWRC
dWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKIHsKICAg
ICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgdGhlIG1vc3QgcmlkaWN1
bG91cyBoaXN0b3J5IHRoZXJlIGlzLiI7Ci0gICAgYXV0byBjaGVjayA9IFtdKFNoYXJlZEJ1ZmZl
ciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5r
czsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3MxV2l0aG91dFNlcGFy
YXRvcltdID0geyAiVGgiLCAicyAiLCAicyB0aGUgbW9zdCByIiwgImQiLCAiY3Vsb3VzIGgiLCAi
c3RvcnkgdGhlcmUgIiwgInMuIiB9OwogICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNo
YXJlZEJ1ZmZlciwgImkiKTsKQEAgLTQxMiwxNyArNDUxLDE5IEBAIFRFU1RfRihTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKICAgICB9Owog
ICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwg
c3RybGVuKHNpbXBsZVRleHQpKTsKICAgICBjaGVjayhzaGFyZWRCdWZmZXIpOwotICAgIHNoYXJl
ZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisKKyAgICBTaGFyZWRCdWZmZXJCdWls
ZGVyIGJ1aWxkZXIoc3RkOjppbl9wbGFjZSwgc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQp
KTsKKyAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSsrKQotICAgICAgICBzaGFyZWRCdWZmZXItPmFwcGVu
ZCgmc2ltcGxlVGV4dFtpXSwgMSk7Ci0gICAgRVhQRUNUX0VRKHNoYXJlZEJ1ZmZlci0+c2l6ZSgp
LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJlZEJ1ZmZlcik7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCAxKTsKKyAgICBFWFBFQ1RfRVEoYnVpbGRl
ci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hlY2soYnVpbGRlci50YWtlKCkp
OwogCi0gICAgc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHN0cmxlbihzaW1wbGVUZXh0KTsgaSArPSA1KQotICAgICAgICBz
aGFyZWRCdWZmZXItPmFwcGVuZCgmc2ltcGxlVGV4dFtpXSwgNSk7Ci0gICAgRVhQRUNUX0VRKHNo
YXJlZEJ1ZmZlci0+c2l6ZSgpLCBzdHJsZW4oc2ltcGxlVGV4dCkpOwotICAgIGNoZWNrKHNoYXJl
ZEJ1ZmZlcik7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCZzaW1wbGVUZXh0W2ldLCA1KTsKKyAg
ICBFWFBFQ1RfRVEoYnVpbGRlci5zaXplKCksIHN0cmxlbihzaW1wbGVUZXh0KSk7CisgICAgY2hl
Y2soYnVpbGRlci50YWtlKCkpOwogfQogCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJU
ZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCmluZGV4IDliOGIxM2E3NWQ1MmZmOTUx
ZWFkMTgxODVkNTZjMzc5MWIyZDdiZWQuLmQwMzQxYTgxZGVkYTcxOWYzNWZjY2UzOTQ2NTVlYzI1
NWFiOGZiYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXJUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewogCi12b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKK3ZvaWQgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVN
YWluVGhyZWFkKCk7CiAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpT
ZXRVcCgpCiAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiB9CiAKLXZvaWQgU2hh
cmVkQnVmZmVyVGVzdDo6VGVhckRvd24oKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVz
dDo6VGVhckRvd24oKQogewogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBh
dGgpOwogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVy
VGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRl
c3QuaAppbmRleCA2NDAxMTliZGU2ZmNlNDFmMDFlYWFiNjMxNjg0N2JlNTZiOTBjZjVjLi5hMzky
YTA1MTk0NzU2ZDJhZDU2ZTgyNDkyOWVjZTRjMTVmM2FkMDU1IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmgKQEAgLTI5LDcg
KzI5LDcgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1jbGFzcyBTaGFyZWRCdWZm
ZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRV
cCgpIG92ZXJyaWRlOwogICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVz
dHNDRy5jcHAKaW5kZXggN2EzMjA3Zjk1YzYyN2ZlNjYyOWM5Mjc3NDRiNGVmMDNlNWUyZWMzZC4u
ODU4MjhmMDM5MjI0NWY0YTk5Yjc2MDZiNWY0YWM1ZWMzNGRjZWU1YiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVz
dHNDRy5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4geyBn
bG9iYWxCdWZmZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVtQnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVy
Q2FwYWNpdHkgfTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVt
T3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0IGZpbmFsCisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxh
eUxpc3RJdGVtJikgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCmluZGV4IDg3MjkwMzQ1YjQyZjEwYzli
MmYyMzgzY2ZiYzRjMzlmOGRhNmMzMTcuLmMzYjVkM2U4ZDdjMDNiMWEzNjVkZDUzNWEwYjI5YWRl
MjdhY2VjYTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
b2NvYS9TaGFyZWRCdWZmZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ1LDU2ICs0NSw1NyBAQCBzdGF0aWMgdm9p
ZCBleHBlY3REYXRhQXJyYXlzRXF1YWwoTlNBcnJheTxOU0RhdGEgKj4gKmV4cGVjdGVkLCBOU0Fy
cmF5PE5TRGF0YSAqPgogICAgIH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0
ZU5TRGF0YUFycmF5KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVO
U0RhdGFBcnJheSkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1
YWwobmlsLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOworICAgICAgICBTaGFy
ZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuZW1wdHkoKTsKKyAgICAg
ICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKG5pbCwgYnVpbGRlci5nZXQoKS0+Y3JlYXRlTlNEYXRh
QXJyYXkoKS5nZXQoKSk7CiAKICAgICAgICAgTlNEYXRhICpoZWxsb0RhdGEgPSBbTlNEYXRhIGRh
dGFXaXRoQnl0ZXM6ImhlbGxvIiBsZW5ndGg6NV07Ci0gICAgICAgIGJ1ZmZlci0+YXBwZW5kKChj
b25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOwotICAgICAgICBl
eHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1ZmZlci0+Y3JlYXRlTlNEYXRh
QXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxs
b0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5sZW5ndGgpOworICAgICAgICBleHBlY3REYXRhQXJyYXlz
RXF1YWwoQFsgaGVsbG9EYXRhIF0sIGJ1aWxkZXIuZ2V0KCktPmNyZWF0ZU5TRGF0YUFycmF5KCku
Z2V0KCkpOwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5
dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2Ug
Q0ZEYXRhUmVmKXdvcmxkRGF0YSk7Ci0gICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBo
ZWxsb0RhdGEsIHdvcmxkRGF0YSBdLCBidWZmZXItPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkp
OworICAgICAgICBidWlsZGVyLmFwcGVuZCgoX19icmlkZ2UgQ0ZEYXRhUmVmKXdvcmxkRGF0YSk7
CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBd
LCBidWlsZGVyLmdldCgpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAogICAgICAgICBl
eHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAgICAgICBleHBlY3RE
YXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChfX2Jy
aWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAK
LSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50
c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5n
ZXQoKSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNEYXRhIGRhdGFXaXRo
Q29udGVudHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQo
KSk7CiAgICAgfQogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9y
RGF0YVNlZ21lbnQpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5T
RGF0YUZvckRhdGFTZWdtZW50KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBh
dXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIFNoYXJlZEJ1ZmZl
ckJ1aWxkZXIgYnVpbGRlcjsKIAogICAgICAgICBOU0RhdGEgKmhlbGxvRGF0YSA9IFtOU0RhdGEg
ZGF0YVdpdGhCeXRlczoiaGVsbG8iIGxlbmd0aDo1XTsKLSAgICAgICAgYnVmZmVyLT5hcHBlbmQo
KGNvbnN0IGNoYXIqKWhlbGxvRGF0YS5ieXRlcywgaGVsbG9EYXRhLmxlbmd0aCk7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKChjb25zdCBjaGFyKiloZWxsb0RhdGEuYnl0ZXMsIGhlbGxvRGF0YS5s
ZW5ndGgpOwogCiAgICAgICAgIE5TRGF0YSAqd29ybGREYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5
dGVzOiJ3b3JsZCIgbGVuZ3RoOjVdOwotICAgICAgICBidWZmZXItPmFwcGVuZCgoX19icmlkZ2Ug
Q0ZEYXRhUmVmKXdvcmxkRGF0YSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKChfX2JyaWRnZSBD
RkRhdGFSZWYpd29ybGREYXRhKTsKIAogICAgICAgICBOU0FycmF5ICpleHBlY3RlZERhdGEgPSBA
WyBoZWxsb0RhdGEsIHdvcmxkRGF0YSBdOwogICAgICAgICBOU1VJbnRlZ2VyIGV4cGVjdGVkU2l6
ZSA9IGhlbGxvRGF0YS5sZW5ndGggKyB3b3JsZERhdGEubGVuZ3RoOwogCiAgICAgICAgIE5TVUlu
dGVnZXIgc2VnbWVudENvdW50ID0gMDsKLSAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogYnVm
ZmVyLmdldCgpKQorICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiAqYnVpbGRlci5nZXQoKSkK
ICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtzZWdtZW50LnNlZ21lbnQtPmNyZWF0ZU5TRGF0YSgp
IGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhW3NlZ21lbnRDb3VudCsrXV0pOwogICAgICAgICBF
WFBFQ1RfRVEoZXhwZWN0ZWREYXRhLmNvdW50LCBzZWdtZW50Q291bnQpOwogCiAgICAgICAgIE5T
VUludGVnZXIgcG9zaXRpb24gPSAwOwogICAgICAgICBzZWdtZW50Q291bnQgPSAwOwotICAgICAg
ICB3aGlsZSAoYnVmZmVyLT5zaXplKCkgPiBwb3NpdGlvbikgewotICAgICAgICAgICAgYXV0byBp
bmNyZW1lbnRhbERhdGEgPSBidWZmZXItPmdldFNvbWVEYXRhKHBvc2l0aW9uKTsKKyAgICAgICAg
d2hpbGUgKGJ1aWxkZXIuc2l6ZSgpID4gcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGF1dG8gaW5j
cmVtZW50YWxEYXRhID0gYnVpbGRlci5nZXQoKS0+Z2V0U29tZURhdGEocG9zaXRpb24pOwogICAg
ICAgICAgICAgRVhQRUNUX1RSVUUoW2luY3JlbWVudGFsRGF0YS5jcmVhdGVOU0RhdGEoKSBpc0Vx
dWFsVG9EYXRhOmV4cGVjdGVkRGF0YVtzZWdtZW50Q291bnQrK11dKTsKICAgICAgICAgICAgIHBv
c2l0aW9uICs9IGluY3JlbWVudGFsRGF0YS5zaXplKCk7CiAgICAgICAgIH0KICAgICAgICAgRVhQ
RUNUX0VRKGV4cGVjdGVkRGF0YS5jb3VudCwgc2VnbWVudENvdW50KTsKIAotICAgICAgICBhdXRv
IGxhc3RCeXRlID0gYnVmZmVyLT5nZXRTb21lRGF0YShleHBlY3RlZFNpemUgLSAxKTsKKyAgICAg
ICAgYXV0byBsYXN0Qnl0ZSA9IGJ1aWxkZXIuZ2V0KCktPmdldFNvbWVEYXRhKGV4cGVjdGVkU2l6
ZSAtIDEpOwogICAgICAgICBFWFBFQ1RfVFJVRShbbGFzdEJ5dGUuY3JlYXRlTlNEYXRhKCkgaXNF
cXVhbFRvRGF0YTpbQCJkIiBkYXRhVXNpbmdFbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2Rpbmdd
XSk7CiAgICAgICAgIEVYUEVDVF9FUSgxTFUsIGxhc3RCeXRlLnNpemUoKSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNwcAppbmRleCA0NmM3NjIw
M2UxYjI1YWFhYjdhMDJlMGJiMmJmNWUwYzQzNmVkNjg3Li41YmU2NjU5NDYxMzczMWUyMWVkOTdk
YTc0YzU3MzhjN2NhMjg1YmY0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9U
ZXN0V2ViQ29yZVN0dWJzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2Vi
Q29yZVN0dWJzLmNwcApAQCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRCdWZmZXIuaD4KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNl
SW50b0J1ZmZlcihjb25zdCBjaGFyKikKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKQogewogICAgIHJldHVy
biBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwppbmRleCBmMDFhYjkwYjQ3N2Q2ZmRlOTU3MDQxMGE0
ZmRlZDBhMDIzZTZiYTg1Li41YTFmNDBhZDJlMWFkNWMzN2NjNmZkZTY4YzkxNjJlODFmZGI1YzAw
IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5j
ZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEyLTAyICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91
cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGlndW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11
dGFiaWxpdHk6IHBhcnQgMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMzNjc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBEZWNvZGVyVGVzdC9EZWNvZGVyVGVzdC9tYWluLm1tOgorICAgICAgICAobWFp
bik6CisKIDIwMjEtMTItMDggIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBsYXlvdXQgcGVyZm9ybWFuY2UgdGVzdCBmb3Igc2ltcGxlIGJpZGkgY29udGVudCB3
aXRoIGlubGluZSBib3hlcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447007</attachid>
            <date>2021-12-13 08:36:34 -0800</date>
            <delta_ts>2021-12-13 15:52:07 -0800</delta_ts>
            <desc>Patch for review</desc>
            <filename>bug-233677-20211214033632.patch</filename>
            <type>text/plain</type>
            <size>745878</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NGNjYTk5ZGViZmU2M2JlZjAxNjNlZjY4MjJiMjdhMDQ4MTA5MmQ2Li41ZmE5MGJlOWJmYjIyOTQ5
ZWZjOWUyNDBmNWE1MTI4YTUzMjUyYzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8v
cHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBi
ZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0FycmF5QnVmZmVyLmg6CisKIDIwMjEtMTItMTMgIEFkcmlhbiBQZXJleiBkZSBDYXN0
cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBh
ZnRlciByMjg2OTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDZkMDk5NDc1YTMyYzhiNjRhYjg1Yjk3NDgyZTE4
OWRlMTZlMmQ2Zi4uN2RkNGNjMDk3OGY3ZGM3OWNmYTY3NmUyZDAxNTVjYjU2YmY0NTFmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDM0NSBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3Nwor
ICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNo
YXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMu
CisKKyAgICAgICAgUmVuYW1lIG9ubHksIG5vIGNoYW5nZSBpbiBiZWhhdmlvdXIuCisKKyAgICAg
ICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHA6Cisg
ICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaDoK
KyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9h
cmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmg6CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgorICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbToKKyAgICAgICAg
KiBNb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcDoKKyAgICAg
ICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmg6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAg
ICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oOgorICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgorICAgICAgICAqIE1v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwOgorICAgICAgICAqIE1v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleXMuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExv
YWRlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oOgorICAgICAg
ICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0Lmg6CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURh
dGEuaDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNw
cDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmg6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmg6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmg6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHA6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oOgor
ICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2Uu
Y3BwOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5oOgorICAgICAgICAqIGRvbS9E
YXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1l
bnREYXRhLmg6CisgICAgICAgICogZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmg6CisgICAgICAg
ICogZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwOgorICAgICAgICAqIGVk
aXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmg6CisgICAgICAgICogZWRpdGluZy9j
b2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW06CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06
CisgICAgICAgICogZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHA6CisgICAgICAg
ICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5oOgor
ICAgICAgICAqIGZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHA6CisgICAgICAgICogZmlsZWFw
aS9OZXR3b3JrU2VuZFF1ZXVlLmg6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVu
dC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgorICAgICAg
ICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uV2ViS2l0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNw
cDoKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZp
bHRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5j
cHA6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRl
ci9Mb2FkZXJTdHJhdGVneS5oOgorICAgICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHA6Cisg
ICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0
ZURhdGEuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmg6CisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2
ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZh
Y3RvcnkuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwOgor
ICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oOgorICAgICAgICAqIGxv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAqIGxvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTEFyY2hpdmUuY3BwOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MQXJjaGl2ZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2Vy
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5oOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50Lmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
WFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuaDoKKyAgICAgICAgKiBsb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6
CisgICAgICAgICogbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbToKKyAgICAg
ICAgKiBsb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW06CisgICAgICAgICogcGFnZS9FZGl0b3JDbGllbnQu
aDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6
ZXIuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoKKyAgICAgICAgKiBwYWdl
L1NoYXJlRGF0YS5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9LZXllZENvZGluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL05vd1BsYXlp
bmdNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRD
dXN0b21EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
OgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBs
YXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZv
cm1Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJk
Lmg6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJv
dmlkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRl
ci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9TdGF0aWNQYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vTm93UGxheWlu
Z0luZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJD
b2NvYS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmg6CisgICAgICAgICogcGxhdGZvcm0v
Y2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW06CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUGFy
ZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Q
YXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2Nv
YS9QYXN0ZWJvYXJkQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVm
ZmVyQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFu
Y2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Np
b24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvS2V5ZWRFbmNv
ZGVyR2xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QmFja2luZ1N0b3JlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVy
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
b2RlbC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1dPRkZGaWxlRm9ybWF0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURl
Y29kZXJBVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3Ry
ZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2Vi
U291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERh
dGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVz
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRp
ZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRp
bGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVW
ZXJ0aWNhbERhdGEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RX
cml0ZVV0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Nl
bGVjdGlvbkRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJs
ZUltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2Nh
bGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9h
dmlmL0FWSUZJbWFnZVJlYWRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1h
Z2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5H
SW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJw
L1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0ZWJv
YXJkSU9TLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1Mu
bW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJD
b2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Rh
dGFVUkxEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3Iu
bW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Lmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2hh
cmVkQnVmZmVyV2luLmNwcDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoK
KyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5Lmg6CisgICAgICAgICogdGVzdGluZy9N
b2NrQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRl
ci5oOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29y
TGlieHNsdC5jcHA6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwOgorCiAyMDIxLTExLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjFl
NWQ4NzM1Y2IwMzEyOTZmY2FhNjgyNWJlMThmZDAwMzcwOTVhYi4uMDlhMTVjZjhhN2E0NTE5OTVm
MTRkM2VmZWQwOGYwMTg2ZmZkNDZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNDUgQEAKKzIwMjEt
MTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5h
bWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRC
dWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhl
aXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1Qcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
UHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVz
b3VyY2UuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJj
ZS5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3Bw
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xp
ZW50Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFz
ay5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHA6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaDoKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckNvcHkuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZS5oOgorICAgICAgICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHA6CisgICAg
ICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5Lmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dl
YkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXll
clRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgICogU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVz
b3VyY2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAg
ICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVk
L1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL0FyZ3VtZW50
Q29kZXJzR3RrLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVy
c1dpbi5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElB
dHRhY2htZW50Q29jb2EubW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdl
dEd0azMuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW06CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Z3RrL0NsaXBib2FyZEd0azMuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJk
R3RrNC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgICogVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbE1hYy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMubW06CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHA6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUu
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclBy
aXZhdGUuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVy
UHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUlu
amVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlci5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdM
b2FkZXJDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9z
L1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3dpbi9X
ZWJQcm9jZXNzV2luLmNwcDoKKwogMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvQ2hhbmdlTG9nCmluZGV4IDZiOWRmZGM2NjFmMjJjMDcxZDgwZjMyMDlmZTcxZmZmYmI5MGVk
YTcuLmE0ZDkzODZlMzcwMDU3ZjY3YTBhOTllNWZmMWVjZDE4MjYyODQyNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJk
ICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcK
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBT
aGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVz
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oOgorCiAyMDIxLTEyLTA5
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+IGFuZCBEb24gT2xtc3Rl
YWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgTW92ZSBUZXh0Q29kZWMgZmls
ZXMgZnJvbSBXZWJDb3JlL3BsYXRmb3JtL3RleHQgdG8gV2ViQ29yZS9QQUwvdGV4dApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGJkYTI2NDBhZGQ2NWFkMGYwYjJjOTViZjgyMTZjNGJj
NTEwYzhlYzcuLjg4NWFlNDUyN2MxNTlhYjAyMjJiMzQ5MjU2YWY3YmU1YzI1NDkxZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0xMi0wMyAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRC
dWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUg
cmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3VzU2hh
cmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwK
KyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291
cmNlLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICogV2Vi
Vmlldy9XZWJSZXNvdXJjZS5tbToKKwogMjAyMS0xMi0xMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxq
eWFAYXBwbGUuY29tPgogCiAgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVm
ZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggMDM5ZjQ4OWZhZjAyMTM4OTIzMWU2OTViMjAy
NzAzMjU0YTVkYmEyNy4uMTJhZTgzOGE3OWYzYTAxMmRkNzk4ZmIwODYyYWYwMTMxNjdkMjkxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTEyLTAz
ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNo
YXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVy
IGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFj
dHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICAqIE1lbW9yeVN0cmVhbS5jcHA6CisgICAg
ICAgICogTWVtb3J5U3RyZWFtLmg6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAg
ICAgICogV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJLaXRETEwuY3BwOgorICAgICAgICAqIFdl
YlJlc291cmNlLmNwcDoKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5oOgorCiAyMDIxLTEyLTAxICBK
ZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1
ZmZlci5oCmluZGV4IGVhY2NhMmMyMzNhOGE2OTM3MTU5MDgwN2RmZDM2NzViMDYxNTk0MjguLmI0
NjkzZjkxYzYwN2Q4ZDA3NDU5NDY0NmU4ZGM0MzcyZTliYzk5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaApAQCAtMTI5LDcgKzEyOSw3IEBAIHB1Ymxp
YzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlD
cmVhdGUoQXJyYXlCdWZmZXImKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRy
PEFycmF5QnVmZmVyPiB0cnlDcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCBzaXplX3QgYnl0ZUxl
bmd0aCk7CiAKLSAgICAvLyBPbmx5IGZvciB1c2UgYnkgVWludDhDbGFtcGVkQXJyYXk6OnRyeUNy
ZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIu
CisgICAgLy8gT25seSBmb3IgdXNlIGJ5IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmlu
aXRpYWxpemVkIGFuZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZl
ci4KICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPEFycmF5QnVmZmVyPiBjcmVhdGVV
bmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXpl
KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlD
cmVhdGVVbmluaXRpYWxpemVkKHNpemVfdCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5
dGVTaXplKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuY3BwCmluZGV4IGRmYWMzYTk1NDA3
ZjJiMzczYWE4OGRmZTM3MDdmMmI5YmVlYWFmN2UuLjMzNTRiNTJhNTBjYmIxODlmZGZhZWI3ZDgy
NDgzYmUwYzQxYzNkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5jcHAKQEAgLTMzLDcg
KzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogCi12
b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKQordm9pZCBDbGlwYm9hcmRJ
bWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8
U2hhcmVkQnVmZmVyPiYmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJl
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXIuaAppbmRleCA5YjU5ZWI1Y2M0OTU3ZjAzMzY2NzU4MmU4NjUzYWMwNzRmZThm
Mzc3Li4xZjU3ZmE5NTYwZDYxNjc2OWQzYmZiY2YwYTYzODhjOGM4N2ZmNDJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJl
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEltYWdlUmVhZGVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgQ2xpcGJvYXJkSW1hZ2VSZWFkZXIgOiBQYXN0ZWJvYXJk
RmlsZVJlYWRlciB7CiAgICAgQ2xpcGJvYXJkSW1hZ2VSZWFkZXIoRG9jdW1lbnQqIGRvY3VtZW50
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KIAogICAgIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmKSBjb25z
dCBmaW5hbDsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29u
c3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgZmluYWw7Cisg
ICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYg
dHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICBSZWZQdHI8RG9jdW1lbnQ+
IG1fZG9jdW1lbnQ7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IDY5YmMzZDNhMDNjZTQ1ZWM3Y2U4
NjM2ZDRiMTdkOTM1OWQzY2YwZWIuLmQwNzQ2ZGEyZGEyMDllMDIzMjViNWZhMjE0ZGJlZTY0YmY5
YzkwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
Y3BwCkBAIC0yMTYsOCArMjE2LDggQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291
cmNlOjppbnZva2VDb21wbGV0aW9uSGFuZGxlcigpCiAgICAgICAgIGF1dG8mIGRhdGEgPSBpdGVt
VHlwZUxvYWRlci0+ZGF0YSgpOwogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxT
dHJpbmc+KGRhdGEpICYmICEhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKSkKICAgICAgICAgICAgIGN1
c3RvbURhdGEud3JpdGVTdHJpbmcodHlwZSwgc3RkOjpnZXQ8U3RyaW5nPihkYXRhKSk7Ci0gICAg
ICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PihkYXRhKSkKLSAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIHN0
ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4oZGF0YSkuY29weVJlZigpKTsKKyAg
ICAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4o
ZGF0YSkpCisgICAgICAgICAgICBjdXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCBzdGQ6OmdldDxS
ZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkuY29weVJlZigpKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNv
dXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoCiAgICAgaWYg
KCFzdHJpbmdSZXN1bHQuaXNOdWxsKCkpCiAgICAgICAgIG1fZGF0YSA9IHsgc3RyaW5nUmVzdWx0
IH07CiAgICAgZWxzZSBpZiAoYXV0byBhcnJheUJ1ZmZlciA9IG1fYmxvYkxvYWRlci0+YXJyYXlC
dWZmZXJSZXN1bHQoKSkKLSAgICAgICAgbV9kYXRhID0geyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBh
cnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKSB9OworICAgICAgICBtX2RhdGEgPSB7IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgp
KSwgYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkgfTsKICAgICBtX2Jsb2JMb2FkZXIgPSBudWxs
cHRyOwogICAgIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CkBAIC0yNjUsOCArMjY1LDgg
QEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlw
ZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKIHsKICAgICBpZiAobV90eXBlID09ICJ0ZXh0L2h0
bWwiX3MpIHsKICAgICAgICAgU3RyaW5nIG1hcmt1cFRvU2FuaXRpemU7Ci0gICAgICAgIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4obV9kYXRh
KSkgewotICAgICAgICAgICAgYXV0byYgYnVmZmVyID0gc3RkOjpnZXQ8UmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PihtX2RhdGEpOworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKSkgeworICAgICAgICAgICAgYXV0byYgYnVmZmVy
ID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7CiAgICAgICAgICAgICBtYXJr
dXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5n
PihtX2RhdGEpKQogICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFN0cmlu
Zz4obV9kYXRhKTsKQEAgLTI3OCw5ICsyNzgsOSBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQog
ICAgIH0KIAogICAgIGlmIChtX3R5cGUgPT0gImltYWdlL3BuZyJfcykgewotICAgICAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZTsKLSAgICAgICAgaWYg
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihtX2Rh
dGEpKQotICAgICAgICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHN0ZDo6Z2V0PFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4obV9kYXRhKS5wdHIoKTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZTsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpCisgICAgICAgICAgICBidWZmZXJUb1Nhbml0
aXplID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkucHRyKCk7CiAgICAgICAg
IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpKQogICAgICAg
ICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHV0ZjhCdWZmZXIoc3RkOjpnZXQ8U3RyaW5nPihtX2Rh
dGEpKTsKIApAQCAtMjk2LDcgKzI5Niw3IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiAgICAg
ICAgIH0KIAogICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZShiaXRtYXBJ
bWFnZS5nZXQoKSwgRmxvYXRQb2ludDo6emVybygpKTsKLSAgICAgICAgbV9kYXRhID0geyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW1hZ2VCdWZmZXItPnRvRGF0YSgiaW1hZ2UvcG5n
Il9zKSkgfTsKKyAgICAgICAgbV9kYXRhID0geyBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbWFnZUJ1
ZmZlci0+dG9EYXRhKCJpbWFnZS9wbmciX3MpKSB9OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5oCmluZGV4IDJkYzlkNTAwZjI1MzVlOGNi
MjFjYmEzM2NlNGFlMWUyNTQxMzExMGUuLmFkNGQzNmIwN2ZmNDBjZWQ4ZDA5OWRkNDMwNjk5MjJh
YTM1N2E1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
LmgKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYjsK
LWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFz
cyBET01Qcm9taXNlOwogY2xhc3MgRmlsZVJlYWRlckxvYWRlcjsKIGNsYXNzIFBhc3RlYm9hcmRD
dXN0b21EYXRhOwpAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbnZva2VD
b21wbGV0aW9uSGFuZGxlcigpOwogCi0gICAgdXNpbmcgQnVmZmVyT3JTdHJpbmcgPSBzdGQ6OnZh
cmlhbnQ8U3RyaW5nLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIEJ1
ZmZlck9yU3RyaW5nID0gc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+Owog
ICAgIGNsYXNzIENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyIDogcHVibGljIEZpbGVSZWFkZXJMb2Fk
ZXJDbGllbnQsIHB1YmxpYyBSZWZDb3VudGVkPENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyPiB7CiAg
ICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUmVmPENsaXBib2FyZEl0ZW1UeXBlTG9hZGVyPiBj
cmVhdGUoY29uc3QgU3RyaW5nJiB0eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0K
aW5kZXggMjkzZjUyMzBkMGQ3NzEyM2RiMTMwYjAxNjkzNjk5ZmJhZmY1NGFiNC4uNDMwMjM2MWU2
ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9h
cmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
dm9pZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1l
VHlwZSA9PSAiaW1hZ2UvcG5nIikgewogICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbUEFM
OjphbGxvY1VJSW1hZ2VJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KaW5k
ZXggMTU3YzVmNTJjMDI2YmZhYTk3NjRlY2QyNTA0MjNiMTVkMTg2MzNjYS4uYjRjMzFjYTUwNjM5
Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJ
bWFnZVJlYWRlck1hYy5tbQpAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXZvaWQgQ2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9p
ZCBDbGlwYm9hcmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAobV9taW1lVHlw
ZSA9PSAiaW1hZ2UvcG5nIikgewogICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1h
Z2UgYWxsb2NdIGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmNwcAppbmRleCA4YmZmODA3MDZlNmUxOTlhNTRjNTM3MzBmYjZjMzdjOWZmODMyOWYy
Li45YjNmODQwNzQ1ZDFhMDY5ODgzYTIwYzNhNjVmOTk3OWZiMWEyNDM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5j
cHAKQEAgLTUwLDcgKzUwLDcgQEAgdWludDY0X3QgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29t
cHV0ZVJlYWxCb2R5U2l6ZShjb25zdCBET01DYWNoZUVuZ2luZTo6UmVzcG8KICAgICB1aW50NjRf
dCByZXN1bHQgPSAwOwogICAgIFdURjo6c3dpdGNoT24oYm9keSwgWyZdIChjb25zdCBSZWY8Rm9y
bURhdGE+JiBmb3JtRGF0YSkgewogICAgICAgICByZXN1bHQgPSBmb3JtRGF0YVNpemUoZm9ybURh
dGEpOwotICAgIH0sIFsmXSAoY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIHsKKyAgICB9LCBbJl0gKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAg
ICAgICAgcmVzdWx0ID0gYnVmZmVyLT5zaXplKCk7CiAgICAgfSwgW10gKGNvbnN0IHN0ZDo6bnVs
bHB0cl90JikgewogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9j
YWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
LmNwcAppbmRleCA0MmZlOGZkZmQ0OWQxZTYwYThkY2YxMWMxMmYyZmIwM2UzNDY4OTAxLi45NWFh
MDg2NTk0YTZmYjYwZDU2ZmQ3MTVlM2Y0MmUyNDQ2ODlhMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgRE9NQ2Fj
aGU6OmFkZEFsbChWZWN0b3I8UmVxdWVzdEluZm8+JiYgaW5mb3MsIERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmIHByCiAgICAgfQogfQogCi12b2lkIERPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VE
YXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UsIFJlZjxGZXRjaFJlcXVlc3Q+
JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVzcG9uc2UsIEV4Y2VwdGlvbk9yPFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJiByZXNwb25zZUJvZHkpCit2b2lkIERPTUNh
Y2hlOjpwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21p
c2UsIFJlZjxGZXRjaFJlcXVlc3Q+JiYgcmVxdWVzdCwgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVz
cG9uc2UsIEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9keSkK
IHsKICAgICBpZiAocmVzcG9uc2VCb2R5Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIHF1ZXVl
VGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9u
LCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IHJlc3BvbnNlQm9keS5y
ZWxlYXNlRXhjZXB0aW9uKCldKCkgbXV0YWJsZSB7CkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBE
T01DYWNoZTo6cHV0KFJlcXVlc3RJbmZvJiYgaW5mbywgUmVmPEZldGNoUmVzcG9uc2U+JiYgcmVz
cG9uc2UsIERPTVByb21pc2UKICAgICAgICAgICAgIGlmIChhdXRvKiBjaHVuayA9IHJlc3VsdC5y
ZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKGNodW5rLT5kYXRhKCks
IGNodW5rLT5zaXplKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMt
PnB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwg
V1RGTW92ZShyZXNwb25zZSksIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB7IGRhdGEu
dGFrZUFzQ29udGlndW91cygpIH0pOworICAgICAgICAgICAgICAgIHRoaXMtPnB1dFdpdGhSZXNw
b25zZURhdGEoV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNw
b25zZSksIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlQXNDb250aWd1b3VzKCkgfSk7
CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5oCmluZGV4IGMzNWNjM2NiY2VkYjNiMjUxMWJmMzU3YTMxYWZlMmQy
NzQzOGJkNGMuLjEzOTc1NGQzMGU0MDA3ODU0YTY0NGE3NDExYTNjODE3Y2Q5ZDFmOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHN0b3AoKSBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01P
YmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIHB1dFdpdGhSZXNwb25zZURhdGEo
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYsIFJlZjxGZXRjaFJlcXVlc3Q+JiYsIFJlZjxGZXRj
aFJlc3BvbnNlPiYmLCBFeGNlcHRpb25PcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JiYpOworICAgIHZvaWQgcHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2VwdGlv
bk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmKTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkUmV0
cmlldmVSZXNwb25zZXMgOiBib29sIHsgTm8sIFllcyB9OwogICAgIHVzaW5nIFJlY29yZHNDYWxs
YmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPERPTUNhY2hl
RW5naW5lOjpSZWNvcmQ+PiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGVFbmdpbmUuY3BwCmluZGV4IDQ3NTA0Y2JlYmRhZTAzODE2NzU5YThmNjhlOGMyNDYy
ZmRmMmE1ZTUuLmMwZjgwMzJiMDQ1MmMzN2VlNGNhZmJjYWZkNzlmMDlkMjE0NjMzMjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwCkBAIC0x
MzEsOCArMTMxLDggQEAgUmVzcG9uc2VCb2R5IGlzb2xhdGVkUmVzcG9uc2VCb2R5KGNvbnN0IFJl
c3BvbnNlQm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihib2R5LCBbXShj
b25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VCb2R5IHsKICAgICAgICAg
cmV0dXJuIGZvcm1EYXRhLT5pc29sYXRlZENvcHkoKTsKLSAgICB9LCBbXShjb25zdCBSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsKLSAgICAgICAg
cmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8vIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgYXJlIGlt
bXV0YWJsZSBhbmQgY2FuIGJlIHJldHVybmVkIGFzLWlzLgorICAgIH0sIFtdKGNvbnN0IFJlZjxT
aGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CisgICAgICAgIHJldHVybiBi
dWZmZXIuY29weVJlZigpOyAvLyBTaGFyZWRCdWZmZXIgYXJlIGltbXV0YWJsZSBhbmQgY2FuIGJl
IHJldHVybmVkIGFzLWlzLgogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4gUmVz
cG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkg
eyB9OwogICAgIH0pOwpAQCAtMTQyLDcgKzE0Miw3IEBAIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9u
c2VCb2R5KGNvbnN0IFJlc3BvbnNlQm9keSYgYm9keSkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0
Y2hPbihib2R5LCBbXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3JtRGF0YSkgLT4gUmVzcG9uc2VC
b2R5IHsKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhLmNvcHlSZWYoKTsKLSAgICB9LCBbXShjb25z
dCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVzcG9uc2VCb2R5IHsK
KyAgICB9LCBbXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJv
ZHkgewogICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlSZWYoKTsKICAgICB9LCBbXShjb25zdCBz
dGQ6Om51bGxwdHJfdCYpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVybiBET01DYWNo
ZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCBjYmY4YjY4YmE4YTNjYTNhYWMyZTQxMjBiY2NkYmFm
MmZhMTU2NjYzLi45NGFkMjEyYTA3MGZjZTI2YWIwYTU5NWFmODJhNTczNmMxMzQ1OGVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCkBAIC01Nyw3
ICs1Nyw3IEBAIEV4Y2VwdGlvbiBjb252ZXJ0VG9FeGNlcHRpb25BbmRMb2coU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEVycm9yKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNo
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBj
YWNoZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgQ2FjaGVRdWVyeU9w
dGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcXVlcnlDYWNoZU1hdGNoKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiB1cmwsIGJvb2wgaGFzVmFyeVN0YXIsIGNv
bnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB2YXJ5SGVhZGVycywgY29uc3QgQ2FjaGVRdWVy
eU9wdGlvbnMmKTsKIAotdXNpbmcgUmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVs
bHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OwordXNp
bmcgUmVzcG9uc2VCb2R5ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURh
dGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CiBSZXNwb25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJv
ZHkoY29uc3QgUmVzcG9uc2VCb2R5Jik7CiBXRUJDT1JFX0VYUE9SVCBSZXNwb25zZUJvZHkgY29w
eVJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJvZHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDM0OWE1OWRlYzJkYWNhMzhjOGEz
MjUxYjE5YmZkYWEyZjU1ZjdiN2EuLjAxNjEyMTlkMWUyNmIyNjJjNGVlZWM4MTk4YzQ2ZDhlYjE0
YzFiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
Q0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5j
cHAKQEAgLTEzNSwxNyArMTM1LDE3IEBAIGJvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0
ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0
YVR5cGUpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXRE
YXRhKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVJbml0RGF0
YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGluaXREYXRhKQogewogICAgIHJldHVybiBJbml0RGF0YVJlZ2lzdHJ5OjpzaGFyZWQo
KS5zYW5pdGl6ZUluaXREYXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpOwogfQogCi1ib29sIENE
TTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitib29sIENETTo6c3VwcG9ydHNJbml0RGF0YShjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGluaXREYXRhKQogewogICAgIHJldHVybiBtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0
c0luaXREYXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkK
K1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplUmVzcG9uc2UoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFtX3ByaXZh
dGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvQ0RNLmgKaW5kZXggZDhhNGIzYWYxMmYxYTc5MjNkODg3MDVkNWI5NTgxZDM2
ZjEwMjcwYy4uZDdiMWQ1M2QwNDkxZjcyNzc5YjU5NGIyZDgzYzA5YjgzYmNmMjA3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCkBAIC01Miw3ICs1Miw3
IEBAIGNsYXNzIENETUluc3RhbmNlOwogY2xhc3MgQ0RNUHJpdmF0ZTsKIGNsYXNzIERvY3VtZW50
OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENETSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPENETT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE0+LCBwcml2YXRlIENvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKQEAgLTczLDEwICs3MywxMCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c0luaXRE
YXRhVHlwZShjb25zdCBBdG9tU3RyaW5nJikgY29uc3Q7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29u
c3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgYm9vbCBz
dXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CiAKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9DRE1DbGllbnQuaAppbmRleCAyMWU1MmY0YjcxNGZiOTFmNjdjZmMzOTYxMzlj
MTY1MjViZmI3YjliLi40MTBlZDJmYjY0Mjc1NjJjZTliZDhlZGE0ZDkxYTg2YmE5OGNhYTYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50
LmgKQEAgLTM2LDE0ICszNiwxNCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDRE1J
bnN0YW5jZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIENETUNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1DbGllbnQ+
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1DbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB2
aXJ0dWFsIHZvaWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlv
bkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVj
ZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4IDJj
NjM4ZjdjODQxOTQ2NDkwZTIwNDg3NjQyYzlhNzIxNzNjNTA1OWYuLjZmODg4ZTE3ODU4ZGRhNmQ5
NDcxZWMxZjZlZjVkMDY2ZGYwZTQ5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtNTQsNyAr
NTQsNyBAQCBuYW1lc3BhY2UgewogICAgIGNvbnN0IHVpbnQzMl90IGtLZXlJZHNNYXhLZXlJZFNp
emVJbkJ5dGVzID0gNTEyOwogfQogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNo
YXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIC8vIDEuIEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zv
cm1hdApAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNo
YXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIGlmICgh
a2lkc0FycmF5KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgVmVjdG9yPFJl
ZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4ga2V5SURzOwogICAgIGZvciAoYXV0byYgdmFsdWUgOiAqa2lkc0FycmF5KSB7CiAg
ICAgICAgIGF1dG8ga2V5SUQgPSB2YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAgaWYgKCFrZXlJ
RCkKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWQKICAgICByZXR1cm4g
a2V5SURzOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHNhbml0aXplS2V5aWRzKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKICAgICAvLyAxLiBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8v
ZW5jcnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3Jt
YXQKQEAgLTExMSw3ICsxMTEsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emVLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGpzb25EYXRhLmRhdGEoKSwganNvbkRhdGEubGVuZ3RoKCkpOwogfQogCi1z
dGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNw
ZWNpZmljSGVhZGVyQm94Pj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RQc3NoQm94ZXNGcm9t
Q2VuYyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5p
dERhdGFSZWdpc3RyeTo6ZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyA0LiBDb21tb24gU3lzdGVtSUQgYW5kIFBT
U0ggQm94IEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVk
aWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2NlbmMuaHRtbCNjb21tb24tc3lzdGVtCkBAIC0x
NTEsOSArMTUxLDkgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1By
b3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbmkKICAgICByZXR1cm4gcHNzaEJv
eGVzOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IEluaXRE
YXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gSW5p
dERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOwor
ICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKIAogICAgIGF1
dG8gcHNzaEJveGVzID0gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGJ1ZmZlcik7CiAgICAgaWYg
KCFwc3NoQm94ZXMpCkBAIC0xODUsNyArMTg1LDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2VuYyhjb24K
ICAgICByZXR1cm4ga2V5SURzOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJl
Z2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVDZW5jKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyA0LiBDb21tb24g
U3lzdGVtSUQgYW5kIFBTU0ggQm94IEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2NlbmMuaHRtbCNjb21t
b24tc3lzdGVtCkBAIC0xOTUsNyArMTk1LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gSW5pdERh
dGFSZWdpc3RyeTo6c2FuaXRpemVDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAg
IHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIENoZWNrIGlmIHRoZSBidWZmZXIgaXMgYSB2YWxp
ZCBXZWJNIGluaXREYXRhLgogICAgIC8vIFRoZSBXZWJNIGluaXREYXRhIGlzIHRoZSBDb250ZW50
RW5jS2V5SUQsIHNvIHNob3VsZCBiZSBsZXNzIHRoYW4ga1dlYk1NYXhDb250ZW50RW5jS2V5SURT
aXplLgpAQCAtMjA1LDEwICsyMDUsMTAgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNh
bml0aXplV2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gYnVmZmVy
LmNvcHkoKTsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+Pj4gZXh0cmFjdEtleUlEc1dlYk0oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0
aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0
cmFjdEtleUlEc1dlYk0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewot
ICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNhbml0aXplZEJ1ZmZlciA9IHNhbml0aXplV2ViTShidWZmZXIpOworICAgIFZlY3Rv
cjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkQnVmZmVyID0gc2FuaXRpemVXZWJNKGJ1ZmZlcik7
CiAgICAgaWYgKCFzYW5pdGl6ZWRCdWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCBJbml0RGF0YVJlZ2lzdHJ5OjpJbml0RGF0YVJlZ2lzdHJ5
KCkKIAogSW5pdERhdGFSZWdpc3RyeTo6fkluaXREYXRhUmVnaXN0cnkoKSA9IGRlZmF1bHQ7CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5p
dGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gaXRlciA9IG1fdHlwZXMuZmlu
ZChpbml0RGF0YVR5cGUpOwogICAgIGlmIChpdGVyID09IG1fdHlwZXMuZW5kKCkgfHwgIWl0ZXIt
PnZhbHVlLnNhbml0aXplSW5pdERhdGEpCkBAIC0yNDEsNyArMjQxLDcgQEAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGEKICAgICByZXR1cm4gaXRlci0+dmFsdWUuc2FuaXRpemVJbml0RGF0YShidWZm
ZXIpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IEluaXRE
YXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHMo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXREYXRhVHlw
ZSk7CiAgICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUuc2FuaXRp
emVJbml0RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvSW5pdERhdGFSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmgKaW5kZXggY2QxMzg3YTZiZDAzOGZmMzRlMmNmYjc1
ZjQ0M2RlN2Q5NDAzMjFiMC4uNzdkNjA0YjA4YmI3ZjdlMzhiY2NiMzU0NWIzNGM4YjEzNDM1NWVm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0
RGF0YVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9Jbml0RGF0YVJlZ2lzdHJ5LmgKQEAgLTM4LDE5ICszOCwxOSBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJ
bml0RGF0YVJlZ2lzdHJ5IHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSW5p
dERhdGFSZWdpc3RyeSYgc2hhcmVkKCk7CiAgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVk
PEluaXREYXRhUmVnaXN0cnk+OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRC
dWZmZXI+Pj4gZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBz
YW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHMoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7
CiAKICAgICBzdHJ1Y3QgSW5pdERhdGFUeXBlQ2FsbGJhY2tzIHsKLSAgICAgICAgdXNpbmcgU2Fu
aXRpemVJbml0RGF0YUNhbGxiYWNrID0gRnVuY3Rpb248UmVmUHRyPFNoYXJlZEJ1ZmZlcj4oY29u
c3QgU2hhcmVkQnVmZmVyJik+OwotICAgICAgICB1c2luZyBFeHRyYWN0S2V5SURzQ2FsbGJhY2sg
PSBGdW5jdGlvbjxzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+KGNvbnN0
IFNoYXJlZEJ1ZmZlciYpPjsKKyAgICAgICAgdXNpbmcgU2FuaXRpemVJbml0RGF0YUNhbGxiYWNr
ID0gRnVuY3Rpb248UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKT47CisgICAgICAgIHVzaW5nIEV4dHJhY3RLZXlJRHNDYWxsYmFjayA9
IEZ1bmN0aW9uPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4+KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKT47CiAKICAgICAgICAgU2FuaXRpemVJ
bml0RGF0YUNhbGxiYWNrIHNhbml0aXplSW5pdERhdGE7CiAgICAgICAgIEV4dHJhY3RLZXlJRHND
YWxsYmFjayBleHRyYWN0S2V5SURzOwpAQCAtNjEsOSArNjEsOSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0IEF0b21TdHJpbmcmIGtleWlkc05hbWUoKTsKICAgICBzdGF0aWMgY29uc3QgQXRv
bVN0cmluZyYgd2VibU5hbWUoKTsKIAotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IGV4
dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzQ2Vu
Yyhjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVh
ZGVyQm94Pj4+IGV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0
aXplQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKIHByaXZhdGU6CiAgICAg
SW5pdERhdGFSZWdpc3RyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IDhiZmIxY2U3MDFhMmY1
YTY5YjViNTE5OTFhYTg2MzJlYmI4OTI1ZjkuLjE0Nzc2YzIwMTUxYmZlZmUzODA3OWEzMzczMGM4
ODY2MjY4YmE0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lk
IE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgQnVmZgogICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhp
cywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIGluaXREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW5pdERhdGEuZGF0YSgpLCBp
bml0RGF0YS5sZW5ndGgoKSksIGluaXREYXRhVHlwZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAg
ICAgLy8gMTAuMS4gSWYgdGhlIGluaXQgZGF0YSBpcyBub3QgdmFsaWQgZm9yIGluaXREYXRhVHlw
ZSwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAg
ICAvLyAxMC4yLiBMZXQgc2FuaXRpemVkIGluaXQgZGF0YSBiZSBhIHZhbGlkYXRlZCBhbmQgc2Fu
aXRpemVkIHZlcnNpb24gb2YgaW5pdCBkYXRhLgotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZWRJbml0RGF0YSA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXplSW5pdERhdGEo
aW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZWRJbml0RGF0YSA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXplSW5p
dERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CiAKICAgICAgICAgLy8gMTAuMy4gSWYgdGhl
IHByZWNlZGluZyBzdGVwIGZhaWxlZCwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0
ZWQgVHlwZUVycm9yLgogICAgICAgICBpZiAoIXNhbml0aXplZEluaXREYXRhKSB7CkBAIC0yMjMs
NyArMjIzLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEJ1ZmYKICAgICAgICAgICAgIG1fbGF0ZXN0
RGVjcnlwdFRpbWUgPSAwOwogICAgICAgICB9CiAKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24t
PnJlcXVlc3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUsIGluaXREYXRhVHlwZSwgc2FuaXRpemVkSW5p
dERhdGEucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChSZWY8U2hhcmVk
QnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5k
aXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRl
ZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZXF1ZXN0TGljZW5zZSht
X3Nlc3Npb25UeXBlLCBpbml0RGF0YVR5cGUsIHNhbml0aXplZEluaXREYXRhLnJlbGVhc2VOb25O
dWxsKCksIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50
aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFs
aXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCkBAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZShjb25z
dCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYKICAgICAvLyA2
LiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKICAgICBxdWV1ZVRhc2tLZWVw
aW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCB3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXNwb25zZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2UubGVuZ3RoKCkpLCBwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewog
ICAgICAgICAvLyA2LjEuIExldCBzYW5pdGl6ZWQgcmVzcG9uc2UgYmUgYSB2YWxpZGF0ZWQgYW5k
L29yIHNhbml0aXplZCB2ZXJzaW9uIG9mIHJlc3BvbnNlIGNvcHkuCi0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3BvbnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRp
emVSZXNwb25zZShyZXNwb25zZSk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZWRSZXNwb25zZSA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXplUmVzcG9u
c2UocmVzcG9uc2UpOwogCiAgICAgICAgIC8vIDYuMi4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZh
aWxlZCwgb3IgaWYgc2FuaXRpemVkIHJlc3BvbnNlIGlzIGVtcHR5LCByZWplY3QgcHJvbWlzZSB3
aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIGlmICghc2FuaXRpemVkUmVz
cG9uc2UgfHwgc2FuaXRpemVkUmVzcG9uc2UtPmlzRW1wdHkoKSkgewpAQCAtNjAxLDcgKzYwMSw3
IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlKQogICAgICAgICAvLyA0LjMuIExldCBtZXNzYWdlIHR5cGUgYmUgbnVsbC4KIAogICAg
ICAgICAvLyA0LjQuIFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBzdGVwczoK
LSAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKG1fc2Vzc2lvbklk
LCBtX3Nlc3Npb25UeXBlLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKENETUluc3RhbmNlU2Vzc2lv
bjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5cywgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVy
Pj4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQp
IG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEo
bV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5z
dGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1
Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTY0OSw3ICs2NDksNyBAQCB2b2lkIE1l
ZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAg
ICAvLyA1LiBSZXR1cm4gcHJvbWlzZS4KIH0KIAotdm9pZCBNZWRpYUtleVNlc3Npb246OmVucXVl
dWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgbWVzc2FnZSkKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjplbnF1ZXVlTWVzc2FnZShNZWRp
YUtleU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBtZXNzYWdlKQogewogICAgIC8vIDYuNC4xIFF1ZXVlIGEgIm1lc3NhZ2UiIEV2ZW50CiAgICAg
Ly8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jcXVldWUtbWVzc2FnZQpA
QCAtNzE2LDcgKzcxNiw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNl
cyhDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGluCiAgICAgICAgIH0pOwog
fQogCi12b2lkIE1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgbWVz
c2FnZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKK3ZvaWQgTWVkaWFLZXlTZXNz
aW9uOjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBlbnF1ZXVlTWVzc2FnZShtZXNzYWdl
VHlwZSwgbWVzc2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAppbmRleCAzZDk2Zjg4MDJlNzQ3ODQxYzRl
ZmRhODFkY2I5NDFlYTZlNGE3NWU0Li4zNjVhY2U1YzA5NWU3ZGMwYzU3MWU3NmNjZjJjMDdhYWZj
NjJiYWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKQEAgLTU3LDcgKzU3LDcgQEAgY2xhc3MgQ0RNOwogY2xh
c3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgTWVkaWFLZXlTdGF0dXNNYXA7CiBjbGFzcyBNZWRp
YUtleXM7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Qcm9taXNlUHJveHk7CiAK
QEAgLTg3LDIwICs4NywyMCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ2xvc2VkUHJvbWlzZSA9IERP
TVByb21pc2VQcm94eTxJRExVbmRlZmluZWQ+OwogICAgIENsb3NlZFByb21pc2UmIGNsb3NlZCgp
IHsgcmV0dXJuIG1fY2xvc2VkUHJvbWlzZS5nZXQoKTsgfQogCi0gICAgY29uc3QgVmVjdG9yPHN0
ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiYgc3RhdHVzZXMoKSBj
b25zdCB7IHJldHVybiBtX3N0YXR1c2VzOyB9CisgICAgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4mIHN0YXR1c2VzKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0dXNlczsgfQogCiAgICAgdW5zaWduZWQgaW50ZXJuYWxJbnN0
YW5jZVNlc3Npb25PYmplY3RSZWZDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zdGFuY2VTZXNz
aW9uLT5yZWZDb3VudCgpOyB9CiAKIHByaXZhdGU6CiAgICAgTWVkaWFLZXlTZXNzaW9uKERvY3Vt
ZW50JiwgV2Vha1B0cjxNZWRpYUtleXM+JiYsIE1lZGlhS2V5U2Vzc2lvblR5cGUsIGJvb2wgdXNl
RGlzdGluY3RpdmVJZGVudGlmaWVyLCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2VTZXNzaW9u
PiYmKTsKLSAgICB2b2lkIGVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdl
VHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgdXBkYXRlRXhw
aXJhdGlvbihkb3VibGUpOwogICAgIHZvaWQgc2Vzc2lvbkNsb3NlZCgpOwogICAgIFN0cmluZyBt
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAKICAgICAvLyBDRE1JbnN0YW5jZVNl
c3Npb25DbGllbnQKICAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKENETUluc3RhbmNlU2Vzc2lv
bkNsaWVudDo6S2V5U3RhdHVzVmVjdG9yJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2VuZE1lc3Nh
Z2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7Cisg
ICAgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CiAgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0
IFN0cmluZyYpIGZpbmFsOwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGZpbmFs
OwogCkBAIC0xNDAsMTAgKzE0MCwxMCBAQCBwcml2YXRlOgogICAgIE1lZGlhS2V5U2Vzc2lvblR5
cGUgbV9zZXNzaW9uVHlwZTsKICAgICBSZWY8Q0RNPiBtX2ltcGxlbWVudGF0aW9uOwogICAgIFJl
ZjxDRE1JbnN0YW5jZVNlc3Npb24+IG1faW5zdGFuY2VTZXNzaW9uOwotICAgIFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4gbV9yZWNvcmRPZktleVVzYWdlOworICAgIFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+IG1fcmVjb3JkT2ZLZXlVc2FnZTsKICAgICBkb3VibGUgbV9maXJz
dERlY3J5cHRUaW1lIHsgMCB9OwogICAgIGRvdWJsZSBtX2xhdGVzdERlY3J5cHRUaW1lIHsgMCB9
OwotICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVz
Pj4gbV9zdGF0dXNlczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiBtX3N0YXR1c2VzOwogCiAgICAgdXNpbmcgRGlzcGxh
eUNoYW5nZWRPYnNlcnZlciA9IE9ic2VydmVyPHZvaWQoUGxhdGZvcm1EaXNwbGF5SUQpPjsKICAg
ICBEaXNwbGF5Q2hhbmdlZE9ic2VydmVyIG1fZGlzcGxheUNoYW5nZWRPYnNlcnZlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0
dXNNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVN0YXR1c01hcC5jcHAKaW5kZXggMDZhZmZiNWYyZWRmZTE4Mjk3MTllYTE3YzI3ODg1NGJjNWE2
ZTYwYy4uMzk4ZThhYjFiNjU2YjQ0NTkyN2JlYjZiYzY5M2RkMzk5YTY4N2FjNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01h
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVN0YXR1c01hcC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdW5zaWduZWQgbG9uZyBNZWRpYUtleVN0
YXR1c01hcDo6c2l6ZSgpCiAgICAgcmV0dXJuIG1fc2Vzc2lvbi0+c3RhdHVzZXMoKS5zaXplKCk7
CiB9CiAKLXN0YXRpYyBib29sIGtleUlkc01hdGNoKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYSwgY29u
c3QgQnVmZmVyU291cmNlJiBiKQorc3RhdGljIGJvb2wga2V5SWRzTWF0Y2goY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYSwgY29uc3QgQnVmZmVyU291cmNlJiBiKQogewogICAgIGF1dG8g
bGVuZ3RoID0gYS5zaXplKCk7CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoICE9IGIubGVuZ3Ro
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U3RhdHVzTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U3RhdHVzTWFwLmgKaW5kZXggYzIxMTExM2EyYzZkYWM3OTc5MjRhOTlkMmQyZGY5
N2MyZTY1Zjg1MC4uNjBkNjJhYWZmODA3NGRhZGE2ZTMxYTNmMmIzNzBhNmQ2ZDAxZjYxOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0
YXR1c01hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTdGF0dXNNYXAuaApAQCAtMzgsNyArMzgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBNZWRpYUtleVNlc3Npb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNZWRpYUtleVN0YXR1c01hcCA6IHB1YmxpYyBS
ZWZDb3VudGVkPE1lZGlhS2V5U3RhdHVzTWFwPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKaW5kZXggODNiMjRh
Y2VhYTViMTI5NGJiNGVhNDM5ZmIyZDVjNGY2Y2NkNDc1My4uMzY3ZjMxZDE4NmI1MTYzOWE5Yzc0
MjEzZjBjZjhlNmYyZjhkMjZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIGJvb2wgTWVk
aWFLZXlzOjpoYXNPcGVuU2Vzc2lvbnMoKSBjb25zdAogICAgICAgICB9KTsKIH0KIAotdm9pZCBN
ZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2b2lkIE1l
ZGlhS2V5czo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJp
bmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEp
CiB7CiAgICAgZm9yIChhdXRvJiBjZG1DbGllbnQgOiBtX2NkbUNsaWVudHMpCiAgICAgICAgIGNk
bUNsaWVudC5jZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGlu
aXREYXRhVHlwZSwgaW5pdERhdGEuY29weVJlZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCmluZGV4IDdiNTlhM2JjNmQyMjU2ZmM2
NTZmMDhjYmYyNjg5MTg1MTA5ODNhMjIuLjkxYTFhMDcxMTQzM2JlMjQ3ZGQyYTg1YzVmNGFkMDkz
OGEwOWE3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleXMuaApAQCAtODYsNyArODYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFLZXlz
KERvY3VtZW50JiwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIGJvb2wgcGVyc2lzdGVu
dFN0YXRlQWxsb3dlZCwgY29uc3QgVmVjdG9yPE1lZGlhS2V5U2Vzc2lvblR5cGU+JiwgUmVmPENE
TT4mJiwgUmVmPENETUluc3RhbmNlPiYmKTsKIAogICAgIC8vIENETUluc3RhbmNlQ2xpZW50Ci0g
ICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmlu
ZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0
aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikgZmluYWw7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25z
dCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggZDY1YjI3YmZlOGExZWYyMTk5
MmI5ZTFhZDA1YWNhNTRlNzJkNjA1ZS4uYjhmMmVjMzczZDg3M2NjOWM4YWNiM2M2ZWM4NDVmNmFi
MDAwOWFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApA
QCAtMjk3LDE0ICsyOTcsMTQgQEAgRmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtl
KCkKICAgICAgICAgcmV0dXJuIGZvcm1EYXRhQm9keSgpOwogCiAgICAgaWYgKGlzVGV4dCgpKQot
ICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBBTDo6VVRGOEVu
Y29kaW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50
aXRpZXMpKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBBTDo6VVRGOEVu
Y29kaW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50
aXRpZXMpKTsKICAgICBpZiAoaXNVUkxTZWFyY2hQYXJhbXMoKSkKLSAgICAgICAgcmV0dXJuIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29kZSh1
cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5n
OjpFbnRpdGllcykpOworICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUEFMOjpV
VEY4RW5jb2RpbmcoKS5lbmNvZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFBB
TDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAgIGlmIChpc0FycmF5QnVm
ZmVyKCkpCi0gICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVm
ZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwg
YXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNBcnJheUJ1ZmZlclZp
ZXcoKSkKLSAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNz
KCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1
ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRl
TGVuZ3RoKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCAwODk4M2VjMDA0M2Y2Yzk5YTdmYWVhZmM2OTNjZTgy
ODIzYjQwMWJjLi5iYWQxYjVlYTIzYjc3MWIzNDdmNGIwNGE1Njc1OGZjMDA4OGUxMmU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTY0LDcgKzY0LDcgQEAg
cHVibGljOgogCiAgICAgUmVmUHRyPEZvcm1EYXRhPiBib2R5QXNGb3JtRGF0YSgpIGNvbnN0Owog
Ci0gICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8
Rm9ybURhdGE+LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFRha2Vu
RGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNo
YXJlZEJ1ZmZlcj4+OwogICAgIFRha2VuRGF0YSB0YWtlKCk7CiAKICAgICB2b2lkIHNldEFzRm9y
bURhdGEoUmVmPEZvcm1EYXRhPiYmIGRhdGEpIHsgbV9kYXRhID0gV1RGTW92ZShkYXRhKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cAppbmRleCBmYWRlNjNlNGJlNDlmNGQxOTM5ZDFkYjhhZTEzMjE4MWFkMGE5YTJiLi5jMjMxZjIw
N2RhMjVjZDJhMTU4NjBkMjhkYjNjZTE3ZTg1NzU3N2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMzI5LDEyICszMjks
MTIgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHVuc2lnbmVkIHNpemUpCiAgICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIHNpemUpOwogfQogCi12
b2lkIEZldGNoQm9keUNvbnN1bWVyOjpzZXREYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkK
K3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgZGF0YSkKIHsKICAgICBtX2J1ZmZlciA9IFdURk1vdmUoZGF0YSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IEZldGNoQm9keUNvbnN1bWVyOjp0YWtlRGF0YSgpCitSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKIHsKICAg
ICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCA2YmJiY2U3MzQ3
YWEzYmMyZjcwZjRlYzZkOGJiMGUxODcyYWFmODk3Li44NzFkMmMwODYzMzFhOTgyOTRhMTY2YTRi
NDJlMzE4NGUwMzc3NzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5oCkBAIC01MCwxMCArNTAsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkKTsKIAogICAgIGJvb2wgaGFzRGF0
YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KLSAgICBjb25zdCBTaGFyZWRCdWZmZXIq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQotICAgIHZvaWQg
c2V0RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KKyAg
ICB2b2lkIHNldERhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gdGFrZURhdGEoKTsKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gdGFrZUFz
QXJyYXlCdWZmZXIoKTsKICAgICBTdHJpbmcgdGFrZUFzVGV4dCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4IGZjNTVjYzdkODNkOGJjMTFm
MDg1NGRjM2NmZDg1MDk3YTMxZjEwZjYuLjAzZjg5YjYxY2E1ZjdjNzE3NmI5ZDg4Y2QxMzY2MGU4
NmI3YTI1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIu
Y3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBGZXRjaExvYWRlcjo6c3RvcCgpCiAgICAgICAg
IG1fbG9hZGVyLT5jYW5jZWwoKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0Y2hMb2Fk
ZXI6OnN0YXJ0U3RyZWFtaW5nKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRj
aExvYWRlcjo6c3RhcnRTdHJlYW1pbmcoKQogewogICAgIEFTU0VSVChtX2NvbnN1bWVyKTsKICAg
ICBhdXRvIGZpcnN0Q2h1bmsgPSBtX2NvbnN1bWVyLT50YWtlRGF0YSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCmluZGV4IDJmOTBmMGVjM2ZmOTA1YTI2MjMx
Yzg0YzcyYTdhMTg2Y2Q0YmZlODMuLjQ2MTJkMGUwZTNhN2VmZTMwNjAzOTZiMGQ3NWEyZmEzYmM0
ZWRkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKQEAg
LTM5LDE0ICszOSwxNCBAQCBjbGFzcyBGZXRjaEJvZHlDb25zdW1lcjsKIGNsYXNzIEZldGNoTG9h
ZGVyQ2xpZW50OwogY2xhc3MgRmV0Y2hSZXF1ZXN0OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIEZldGNoTG9hZGVyIGZpbmFsIDogcHVibGljIFRocmVhZGFibGVMb2FkZXJDbGll
bnQgewogcHVibGljOgogICAgIEZldGNoTG9hZGVyKEZldGNoTG9hZGVyQ2xpZW50JiwgRmV0Y2hC
b2R5Q29uc3VtZXIqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+RmV0Y2hMb2FkZXIoKTsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CisgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7CiAKICAgICB2b2lkIHN0YXJ0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBGZXRjaFJlcXVlc3QmLCBjb25zdCBTdHJpbmcm
KTsKICAgICB2b2lkIHN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBCbG9iJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRl
eCBiOTM0MzkyYTkwM2Q0YTVmZDFjNTRhZTgxNDhiMmU2ZTc5ZTc2YzZiLi5lMzhhODNhZGU3ZDZl
MGFhZjcwY2ViOWM1YWE4ZmU4YWI0OTQzZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIEZldGNo
UmVzcG9uc2U6OnNldEJvZHlEYXRhKFJlc3BvbnNlRGF0YSYmIGRhdGEsIHVpbnQ2NF90IGJvZHlT
aXplV2l0aFBhZGRpbgogICAgICAgICAgICAgICAgIHNldEJvZHkoeyB9KTsKICAgICAgICAgICAg
IGJvZHkoKS5zZXRBc0Zvcm1EYXRhKFdURk1vdmUoZm9ybURhdGEpKTsKICAgICAgICAgfSwKLSAg
ICAgICAgW3RoaXNdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAg
ICAgIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgICAgICBpZiAo
aXNCb2R5TnVsbCgpKQogICAgICAgICAgICAgICAgIHNldEJvZHkoeyB9KTsKICAgICAgICAgICAg
IGJvZHkoKS5jb25zdW1lcigpLnNldERhdGEoV1RGTW92ZShidWZmZXIpKTsKQEAgLTUwNCw3ICs1
MDQsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OmZlZWRTdHJlYW0oKQogICAgIGNsb3NlU3RyZWFt
KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6
OnN0YXJ0U3RyZWFtaW5nKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGZXRjaFJl
c3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiB7CiAgICAgQVNTRVJUKG1fbG9h
ZGVyKTsKICAgICByZXR1cm4gbV9sb2FkZXItPnN0YXJ0U3RyZWFtaW5nKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDM3NDhjOGY1OTI3Mjkz
MGJiYzJkMTY2NmM2YWViNTQ3YTFiNWVmMDYuLmNmNzg2MzIzOWZkOTQ2ZWUwZThkODhlYWVhNzJm
ZTk4OWVlZDMxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5oCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZlZWRTdHJlYW0oKSBm
aW5hbDsKICAgICB2b2lkIGNhbmNlbCgpIGZpbmFsOwogCi0gICAgdXNpbmcgUmVzcG9uc2VEYXRh
ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIFJlc3BvbnNlRGF0YSA9IHN0ZDo6dmFyaWFu
dDxzdGQ6Om51bGxwdHJfdCwgUmVmPEZvcm1EYXRhPiwgUmVmPFNoYXJlZEJ1ZmZlcj4+OwogICAg
IFJlc3BvbnNlRGF0YSBjb25zdW1lQm9keSgpOwogICAgIHZvaWQgc2V0Qm9keURhdGEoUmVzcG9u
c2VEYXRhJiYsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbmcpOwogCkBAIC0xMzQsNyArMTM0
LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIGNvbnN1bWVEYXRhQnlDaHVuayhDb25zdW1l
RGF0YUJ5Q2h1bmtDYWxsYmFjayYmKTsKIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
dGFydFN0cmVhbWluZygpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
c3RhcnRTdHJlYW1pbmcoKTsKICAgICAgICAgTm90aWZpY2F0aW9uQ2FsbGJhY2sgdGFrZU5vdGlm
aWNhdGlvbkNhbGxiYWNrKCkgeyByZXR1cm4gV1RGTW92ZShtX3Jlc3BvbnNlQ2FsbGJhY2spOyB9
CiAgICAgICAgIENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNrIHRha2VDb25zdW1lRGF0YUNhbGxi
YWNrKCkgeyByZXR1cm4gV1RGTW92ZShtX2NvbnN1bWVEYXRhQ2FsbGJhY2spOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKaW5kZXggNjEz
N2MyY2Y2ZmY0N2EzNjg0MGYxMWI5NjZiOWU1MjU4NzFkODE1Zi4uMWE2NmJmODE4MzIwZTk1NjA3
ZDYxNWYxYTA4MmE4Mjc2ZWIyYTM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9o
aWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTM4LDcgKzM4LDcgQEAgZW51bSBjbGFzcyBDcmVh
dGVOZXdHcm91cEZvckhpZ2hsaWdodCA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIEhp
Z2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgOiBib29sIHsgTm8sIFllcyB9OwogCiBzdHJ1
Y3QgQXBwSGlnaGxpZ2h0IHsKLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBoaWdobGln
aHQ7CisgICAgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGhpZ2hsaWdodDsK
ICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGV4dDsKICAgICBDcmVhdGVOZXdHcm91cEZvckhp
Z2hsaWdodCBpc05ld0dyb3VwOwogICAgIEhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHAg
cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IDgzYjk1ZDdj
ZjAwN2FhNTRmYmZlMjM0YjdkOGIxZWI4ZTE5OTYzZTQuLjVlODBmMGMwNzJkNDlhM2VmNzk2OTU5
MzAyYzQ0NTZjZDJhYmRlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNDQsNyArNDQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0ZXhwciB1aW50NjRfdCBoaWdobGlnaHRGaWxl
U2lnbmF0dXJlID0gMHg0MTQxNTA0ODMyMzAzMjMxOyAvLyBGaWxlIFNpZ25hdHVyZSAgKEEpcHBs
ZShBUClwbGljYXRpb24oSClpZ2hsaWdodHMoMjAyMSkKIAotc3RkOjpvcHRpb25hbDxBcHBIaWdo
bGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFw
cEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKICAgICBhdXRvIGNvbnRpZ3VvdXNCdWZmZXIgPSBidWZmZXIubWFrZUNvbnRp
Z3VvdXMoKTsKICAgICBhdXRvIGRlY29kZXIgPSBjb250aWd1b3VzQnVmZmVyLT5kZWNvZGVyKCk7
CkBAIC01Myw3ICs1Myw3IEBAIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBB
cHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShjb25zdCBTaGFyZWRCCiAgICAgcmV0dXJuIGRh
dGE7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6dG9TaGFy
ZWRCdWZmZXIoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEFwcEhpZ2hsaWdo
dFJhbmdlRGF0YTo6dG9TaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIFdURjo6UGVyc2lzdGVu
Y2U6OkVuY29kZXIgZW5jb2RlcjsKICAgICBlbmNvZGVyIDw8ICp0aGlzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEu
aAppbmRleCBjZjYzODFhY2ZiMGE1MjExYjQzNTA4YjdiNTE3ZDZkYjJmNmZjNzQzLi5iNWRhZjYw
MjUzOThhM2Y3ZTZmMWQzN2FiZWNlODQ0ZDRmMWM2NTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaApAQCAt
MzMsMTIgKzMzLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShBUFBfSElH
SExJR0hUUykKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhIHsKIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gY3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0
YT4gY3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBzdHJ1Y3QgTm9k
ZVBhdGhDb21wb25lbnQgewogICAgICAgICBTdHJpbmcgaWRlbnRpZmllcjsKICAgICAgICAgU3Ry
aW5nIG5vZGVOYW1lOwpAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
PiBkZWNvZGUoRGVjb2RlciYpOwogCi0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gdG9TaGFyZWRCdWZm
ZXIoKSBjb25zdDsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdG9TaGFyZWRCdWZm
ZXIoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9y
YWdlLmNwcAppbmRleCBkYzM5YTBmMGQxOGZmZmNhN2RmYjQ2NTIxOWNkNjEyYTlmNzM4ZjhmLi5l
NWRlODQ5NGYzNTA0NTM1OTRiMmYyZTg4YzNkZGEzM2ZhOWFmNzA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNw
cApAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6c3RvcmVBcHBI
aWdobGlnaHQoUmVmPFN0YXRpY1JhbmdlPiYmIHJhbmdlKQogICAgIG1fZG9jdW1lbnQtPnBhZ2Uo
KS0+Y2hyb21lKCkuc3RvcmVBcHBIaWdobGlnaHQoV1RGTW92ZShoaWdobGlnaHQpKTsKIH0KIAot
dm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIFNjcm9sbFRvSGlnaGxpZ2h0IHNjcm9sbCkKK3Zv
aWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgU2Nyb2xsVG9IaWdobGlnaHQgc2Ny
b2xsKQogewogICAgIGF1dG8gYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhID0gQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhOjpjcmVhdGUoYnVmZmVyKTsKICAgICBpZiAoIWFwcEhpZ2hsaWdodFJhbmdlRGF0YSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFN0b3JhZ2UuaAppbmRleCBiMTUyZjc2ZWQ0MjQwODkyZWE3ZGUyMWUyY2IwNmQ0NzJkODczMzYw
Li5lMjc2NjMzYjQ4NGY4MTA5NGFkZWNlNDVmNjRhYmJlZDE3ODEyNTAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5o
CkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoQVBQX0hJ
R0hMSUdIVFMpCiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0YXRpY1JhbmdlOwogY2xhc3MgSGlnaGxp
Z2h0OwogCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB+QXBwSGlnaGxpZ2h0U3RvcmFn
ZSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9yZUFwcEhpZ2hsaWdodChSZWY8U3Rh
dGljUmFuZ2U+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdG9yZUFuZFNjcm9sbFRv
QXBwSGlnaGxpZ2h0KFJlZjxTaGFyZWRCdWZmZXI+JiYsIFNjcm9sbFRvSGlnaGxpZ2h0KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU2Nyb2xsVG9IaWdobGlnaHQpOwogICAgIHZvaWQg
cmVzdG9yZVVucmVzdG9yZWRBcHBIaWdobGlnaHRzKCk7CiAgICAgTW9ub3RvbmljVGltZSBsYXN0
UmFuZ2VTZWFyY2hUaW1lKCkgY29uc3QgeyByZXR1cm4gbV90aW1lQXRMYXN0UmFuZ2VTZWFyY2g7
IH0KICAgICB2b2lkIHJlc2V0TGFzdFJhbmdlU2VhcmNoVGltZSgpIHsgbV90aW1lQXRMYXN0UmFu
Z2VTZWFyY2ggPSBNb25vdG9uaWNUaW1lOjpub3coKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3Bw
CmluZGV4IGExYzkzMTJkNDVlYmJmY2U5ZjMyZTZjYzFhMWEyZTg0ZGRjYTdjNzIuLjJhMmMxZmMz
Mjk1ODA1ZDUyZmQ1NmFmMzBiNDU1YWUyY2NjYzQ4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5j
cHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIEtl
eVBhdGhUeXBlIHsgTnVsbCwgU3RyaW5nLCBBcnJheSB9OwogCi1SZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktl
eVBhdGg+JiBrZXlQYXRoKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0
aChjb25zdCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+JiBrZXlQYXRoKQogewogICAgIGF1dG8g
ZW5jb2RlciA9IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOwogCkBAIC0yODIsMTMgKzI4MiwxMyBA
QCBzdGF0aWMgdm9pZCBlbmNvZGVLZXkoVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBjb25zdCBJREJL
ZXlEYXRhJiBrZXkpCiAgICAgfQogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
c2VyaWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJiBrZXkpCitSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmIGtleSkKIHsKICAg
ICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBkYXRhLmFwcGVuZChTSURCS2V5VmVyc2lvbik7
CiAKICAgICBlbmNvZGVLZXkoZGF0YSwga2V5KTsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAogc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZUtleShjb25zdCB1aW50OF90KiYgZGF0YSwgY29uc3QgdWludDhfdCogZW5kLCBJ
REJLZXlEYXRhJiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaAppbmRleCBhYWZkYjM3MDFmMGVm
NDQ4ZDZiOGFiNTEwMTE4NWM0YjM0ZmZhYThhLi42NWM0YTYzYzc4N2YzNjk0MTQ2ZTIzMWM4YzU0
MDE3MDY3YTRmNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmgKQEAgLTMyLDEwICszMiwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQktleURhdGE7CiAKLVJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8
SURCS2V5UGF0aD4mKTsKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleVBhdGgo
Y29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktl
eVBhdGgoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgc3RkOjpvcHRp
b25hbDxJREJLZXlQYXRoPiYpOwogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gc2Vy
aWFsaXplSURCS2V5RGF0YShjb25zdCBJREJLZXlEYXRhJik7CitSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzZXJpYWxpemVJREJLZXlEYXRhKGNvbnN0IElEQktleURhdGEmKTsKIGJvb2wgZGVzZXJpYWxp
emVJREJLZXlEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUsIElE
QktleURhdGEmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDBh
NDY5YmQwYmQxZjM4ZGNiOTZiMzlkOGMzMDAwYWY3M2QxMmFiNTkuLmM5ZDZkYTZiZGQ5ZjkzOTUw
MWY0ZjQyMzJiNGM3ODM3ZDg0MGRhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVJlY29yZGVyOjpzdGFydFJlY29yZGluZyhzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiB0aW1lU2xpYwogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyBp
bmxpbmUgUmVmPEJsb2JFdmVudD4gY3JlYXRlRGF0YUF2YWlsYWJsZUV2ZW50KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUgdGltZUNvZGUpCitzdGF0aWMgaW5saW5lIFJlZjxC
bG9iRXZlbnQ+IGNyZWF0ZURhdGFBdmFpbGFibGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkKIHsKICAgICBhdXRvIGJsb2IgPSBi
dWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCBtaW1l
VHlwZSkgOiBCbG9iOjpjcmVhdGUoY29udGV4dCk7CiAgICAgcmV0dXJuIEJsb2JFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEJsb2JFdmVudDo6SW5pdCB7IHsg
ZmFsc2UsIGZhbHNlLCBmYWxzZSB9LCBXVEZNb3ZlKGJsb2IpLCB0aW1lQ29kZSB9LCBCbG9iRXZl
bnQ6OklzVHJ1c3RlZDo6WWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCmluZGV4IDc3MTJiNDQ1MjgzNjdkOGMyNzI1MDJh
ZGJhYWNhYWY5Nzg4Y2JkYjAuLjFlOWI3NGFiMTdlMzEwOGRiNDIwOWI5YjRmMDIxNGRhMTFhYzZl
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXIuaApAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNw
YXRjaEVycm9yKEV4Y2VwdGlvbiYmKTsKIAogICAgIGVudW0gY2xhc3MgVGFrZVByaXZhdGVSZWNv
cmRlciB7IE5vLCBZZXMgfTsKLSAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IEZ1bmN0aW9u
PHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91
YmxlKT47CisgICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3Vi
bGUpPjsKICAgICB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmLCBUYWtlUHJpdmF0
ZVJlY29yZGVyKTsKIAogICAgIC8vIE1lZGlhU3RyZWFtOjpPYnNlcnZlcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAppbmRl
eCAzZjRjOWJjZDEzM2FjMjlmM2Y3ZGRlMTk5NDc4ZTM5MjU3ZDVlNjZiLi44NzRhYTdmMGIxOGYw
ZWU3NTg4MGJhNWY1ZWY2N2Q0N2JmYzJiMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcApAQCAtNzcsNyArNzcsNyBA
QCB2b2lkIEFydHdvcmtJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBOZXR3b3JrTAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8v
IFNhbml0aXplIHRoZSBpbWFnZSBieSBkZWNvZGluZyBpdCBpbnRvIGEgQml0bWFwSW1hZ2UuCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2Ut
PmltYWdlKCktPmRhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBhdXRv
IGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGJpdG1hcEltYWdlLT5z
ZXREYXRhKFdURk1vdmUoYnVmZmVyVG9TYW5pdGl6ZSksIHRydWUpOwogICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQ
aXhlbEZvcm1hdDo6QkdSQTgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IDJiM2NkZTM2MDgyNDcxYzExYzg3ZmNmNjFj
YzgxY2MzNjBjMzlkOTAuLmQzNzhhZmM2ZjhhMWI1N2EwMzAyZTJjODY4YjI0MGEyMDk3ZmU0YzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5jcHAKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVm
ZmVyVGltZXJGaXJlZCgpCiAgICAgLy8gaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlh
L3Jhdy1maWxlL3RpcC9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLmh0bWwjc291cmNlYnVmZmVy
LXNlZ21lbnQtcGFyc2VyLWxvb3AKICAgICAvLyBXaGVuIHRoZSBzZWdtZW50IHBhcnNlciBsb29w
IGFsZ29yaXRobSBpcyBpbnZva2VkLCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKIAotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGFwcGVuZERhdGEgPSBXVEZNb3ZlKG1fcGVuZGluZ0FwcGVuZERh
dGEpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBhcHBlbmREYXRhID0gV1RG
TW92ZShtX3BlbmRpbmdBcHBlbmREYXRhKTsKICAgICAvLyAxLiBMb29wIFRvcDogSWYgdGhlIGlu
cHV0IGJ1ZmZlciBpcyBlbXB0eSwgdGhlbiBqdW1wIHRvIHRoZSBuZWVkIG1vcmUgZGF0YSBzdGVw
IGJlbG93LgogICAgIGlmICghYXBwZW5kRGF0YSB8fCAhYXBwZW5kRGF0YS0+c2l6ZSgpKSB7CiAg
ICAgICAgIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQ6OkFw
cGVuZFN1Y2NlZWRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL1NvdXJjZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuaAppbmRleCA1MjBjMDc3NTY5NmEyZjBlMmU3MzAwNzM1ZThjOTc3NDk1
ZjFhNjE0Li5kNGM4NTc5YzBiYmQ0NDNhNTEyZmE5ZjY4YzQyN2VjMDQ4ODVkMGQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKQEAg
LTIyMiw3ICsyMjIsNyBAQCBwcml2YXRlOgogCiAgICAgV1RGOjpPYnNlcnZlcjx2b2lkKigpPiBt
X29wYXF1ZVJvb3RQcm92aWRlcjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fcGVuZGlu
Z0FwcGVuZERhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fcGVuZGlu
Z0FwcGVuZERhdGE7CiAgICAgVGltZXIgbV9hcHBlbmRCdWZmZXJUaW1lcjsKIAogICAgIFJlZlB0
cjxWaWRlb1RyYWNrTGlzdD4gbV92aWRlb1RyYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFu
ZGxlci5oCmluZGV4IGY1ODI3ZGY5Mzc5NDkzZDI4MTI3MDE3N2NjZmJjYTA1NTE1MzIzMWYuLjcz
OTQyYTgzNTkzMWE5ZDI4NGM2YTQ1MWJiOGRiZmI1NzY1Y2FkYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQ7CiBjbGFzcyBSVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXJDb25uZWN0aW9uOwogY2xhc3MgUlRDRXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBSVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIgZmluYWwgOiBwdWJsaWMgUlRDRGF0YUNoYW5uZWxIYW5kbGVyLCBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyPiB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAKICAgICBz
dHJ1Y3QgTWVzc2FnZSB7CiAgICAgICAgIGJvb2wgaXNSYXcgeyBmYWxzZSB9OwotICAgICAgICBS
ZWY8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBWZWN0b3I8TWVzc2FnZT4gbV9wZW5kaW5nTWVzc2Fn
ZXM7CiAgICAgYm9vbCBtX2lzUGVuZGluZ0Nsb3NlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCmluZGV4IGU3OWViZGJhYzQw
ODNlOTQ1NGM2OWQxOTk2ZTZmZDJkOGM3Mjk4MTkuLjNjZWVkMGEwMTFlN2I1NDZmYWRkZjQ4YmJk
YTIxMWRmZGQ1MjRjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIExpYldlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlcjo6c2V0Q2xpZW50KFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCYgY2xpZW50
LAogICAgIG1fY29udGV4dElkZW50aWZpZXIgPSBjb250ZXh0SWRlbnRpZmllcjsKIAogICAgIGZv
ciAoYXV0byYgbWVzc2FnZSA6IG1fYnVmZmVyZWRNZXNzYWdlcykgewotICAgICAgICBzd2l0Y2hP
bihtZXNzYWdlLCBbJl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKKyAgICAgICAgc3dpdGNo
T24obWVzc2FnZSwgWyZdKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgZGF0YSkgewogICAg
ICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVSYXdEYXRhKGRhdGEtPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgfSwgWyZdKFN0cmluZyYgdGV4dCkgewog
ICAgICAgICAgICAgY2xpZW50LmRpZFJlY2VpdmVTdHJpbmdEYXRhKHRleHQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAppbmRleCA0MWY5NTI4MjFl
NjIwMDkzZjhlZWZlMzJjNWVkNGFlMGY1ZTU0MTk3Li4xMWJkNDVkZTkxNTU3NzlmZmM5ZWZiMDNl
OTU1MjhmMDVlNjRkNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hh
bm5lbEhhbmRsZXIuaApAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogICAgICAgICBSVENEYXRh
Q2hhbm5lbFN0YXRlIHN0YXRlOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPHdlYnJ0Yzo6UlRDRXJy
b3I+IGVycm9yOwogICAgIH07Ci0gICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6dmFyaWFudDxTdGF0
ZUNoYW5nZSwgU3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgTWVzc2FnZSA9
IHN0ZDo6dmFyaWFudDxTdGF0ZUNoYW5nZSwgU3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+OwogICAgIHVzaW5nIFBlbmRpbmdNZXNzYWdlcyA9IFZlY3RvcjxNZXNzYWdlPjsKICAg
ICB2b2lkIHN0b3JlTWVzc2FnZShQZW5kaW5nTWVzc2FnZXMmLCBjb25zdCB3ZWJydGM6OkRhdGFC
dWZmZXImKTsKICAgICB2b2lkIHByb2Nlc3NNZXNzYWdlKGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZl
ciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtU2luay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtU2luay5oCmluZGV4IDBiODk4ZjZhZGI1N2ViMjVkYzQ5MzdkODFmZjVkMTRkNTI5NzZjODQu
LmQ1MTczZmJmOGI0MDM0MWM1Y2Y4ZDhhNGY1NWVlYWM4ZmY4MzhhMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKQEAgLTM1
LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCdWZmZXJTb3VyY2U7CiBj
bGFzcyBSZWFkYWJsZVN0cmVhbTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJlYWRhYmxlU3RyZWFtU2luayA6IHB1YmxpYyBSZWZD
b3VudGVkPFJlYWRhYmxlU3RyZWFtU2luaz4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDg1MTQ3YzA5NjFjOTk3
MzE2MzFmMGVkZmI5ZWZlNzRlNWMzNmNhY2IuLjUyNTEwYzMwODE4ZjBjYTkxNmE4ODQzNzdkMjI0
YTFhYmE3OTViODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCBzdGF0aWMgSlNDOjpKU1Byb21pc2Uq
IGhhbmRsZVJlc3BvbnNlT25TdHJlYW1pbmdBY3Rpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YgogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBGb3JtRGF0YSBsb2FkaW5nLgogICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMjQ4CiAgICAgICAg
IGNvbXBpbGVyLT5mYWlsKGdsb2JhbE9iamVjdCwgY3JlYXRlRE9NRXhjZXB0aW9uKCpnbG9iYWxP
YmplY3QsIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiTm90IGltcGxlbWVudGVkIl9z
ICB9KSk7Ci0gICAgfSwgWyZdKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7
CisgICAgfSwgWyZdKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgY29tcGls
ZXItPmFkZEJ5dGVzKGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIGNv
bXBpbGVyLT5maW5hbGl6ZShnbG9iYWxPYmplY3QpOwogICAgIH0sIFsmXShzdGQ6Om51bGxwdHJf
dCYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZl
clNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZm
ZXJTb3VyY2VQcm92aWRlci5oCmluZGV4IGI5MThmMzE0MWFmMmY1MjE2NDI2ODk4ZmFlYTg0ZjRi
MDJiMWUyN2UuLmI4Yjc3ODVmOTFkMDY4YzJhNDZjZWIxZDY1OTc1OGZjZjhiNjlkOTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3Zp
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNl
UHJvdmlkZXIuaApAQCAtOTQsNyArOTQsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFNjcmlw
dEJ1ZmZlciBtX3NjcmlwdEJ1ZmZlcjsKLSAgICBtdXRhYmxlIFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBtX2NvbnRpZ3VvdXNCdWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBtX2NvbnRpZ3VvdXNCdWZmZXI7CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX3Njcmlw
dEhhc2ggeyAwIH07CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9jYWNoZWRTY3JpcHRTdHJpbmc7CiAg
ICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fY29udGFpbnNPbmx5QVNDSUk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmlu
ZGV4IDdlNDlhOWU3MzIyNmI2NWNjMjhiZjU5NDgxM2IwZjgzYjI2OWQyMmIuLmVmMzdmMWQwY2E0
NjJiYjliN2M5YjZhNTVkMThlYmI0YzExODFhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC01NSw3ICs1NSw3IEBAIGNs
YXNzIERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzOwogY2xhc3MgSURCVmFsdWU7CiBjbGFzcyBNZXNz
YWdlUG9ydDsKIGNsYXNzIEltYWdlQml0bWFwQmFja2luZzsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBlbnVtIGNsYXNzIFNlcmlhbGl6YXRpb25S
ZXR1cm5Db2RlOwogCiBlbnVtIGNsYXNzIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgeyBOb25UaHJv
d2luZywgVGhyb3dpbmcgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3Bw
CmluZGV4IDNjNWVhOWI4OWE5YzllOTAzNzBiOThkZjUyODU2MzA2NDk5MDA3ZDkuLmFlYjRiNmNj
NTBhMTI2Yzk4MzBkNjA2YWJiMGMzYThjNjlhOWMzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgQ1NTRm9udEZhY2VT
b3VyY2U6OmxvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICAgICAgICAgIEFTU0VSVCgh
bV9pbkRvY3VtZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKICAgICAgICAgICAgICAgICBTVkdGb250
RWxlbWVudCYgZm9udEVsZW1lbnQgPSBkb3duY2FzdDxTVkdGb250RWxlbWVudD4oKm1fc3ZnRm9u
dEZhY2VFbGVtZW50LT5wYXJlbnROb2RlKCkpOwogICAgICAgICAgICAgICAgIGlmIChhdXRvIG90
ZkZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KGZvbnRFbGVtZW50KSkKLSAgICAgICAgICAgICAg
ICAgICAgbV9nZW5lcmF0ZWRPVEZCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShvdGZGb250LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9nZW5l
cmF0ZWRPVEZCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90ZkZvbnQudmFs
dWUoKSkpOwogICAgICAgICAgICAgICAgIGlmIChtX2dlbmVyYXRlZE9URkJ1ZmZlcikgewogICAg
ICAgICAgICAgICAgICAgICBtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKCptX2dlbmVyYXRlZE9URkJ1ZmZlciwgU3RyaW5nKCkpOwog
ICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4obV9pbkRvY3Vt
ZW50Q3VzdG9tUGxhdGZvcm1EYXRhKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIENTU0ZvbnRG
YWNlU291cmNlOjpsb2FkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgfSBlbHNlIGlmICht
X2ltbWVkaWF0ZVNvdXJjZSkgewogICAgICAgICAgICAgQVNTRVJUKCFtX2ltbWVkaWF0ZUZvbnRD
dXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgYm9vbCB3cmFwcGluZzsKLSAgICAgICAg
ICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3MoKSksIG1faW1t
ZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV9pbW1lZGlhdGVT
b3VyY2UtPmJhc2VBZGRyZXNzKCkpLCBtX2ltbWVkaWF0ZVNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsK
ICAgICAgICAgICAgIG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IENhY2hlZEZv
bnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGJ1ZmZlci5nZXQoKSwgU3RyaW5nKCksIHdyYXBwaW5n
KTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2ltbWVkaWF0ZUZv
bnRDdXN0b21QbGF0Zm9ybURhdGEpOwogICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuaAppbmRleCA2YTgyY2YxZTNkYzkxNTk3ODUzMzY1YmQzMWUzNjIz
Mjc4NmEwODgyLi4xMDhlNmM4NzY3ZDBkMmZkYWNiZTY1MDRlYmM1MDcwZTg4MmJlNjQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0ZvbnRGYWNlOwogY2xhc3MgQ1NTRm9udFNlbGVj
dG9yOwotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgRm9udDsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7
CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxDU1NGb250U2VsZWN0b3I+
IG1fZm9udFNlbGVjdG9yOyAvLyBGb3IgcmVtb3RlIGZvbnRzLCB0byBvcmNoZXN0cmF0ZSBsb2Fk
aW5nLgogICAgIHN0ZDo6dW5pcXVlX3B0cjxGb250TG9hZFJlcXVlc3Q+IG1fZm9udFJlcXVlc3Q7
IC8vIEFsc28gZm9yIHJlbW90ZSBmb250cywgYSBwb2ludGVyIHRvIHRoZSByZXNvdXJjZSByZXF1
ZXN0LgogCi0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVkT1RG
QnVmZmVyOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZ2VuZXJhdGVkT1RGQnVmZmVyOwog
ICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4gbV9pbW1lZGlhdGVTb3VyY2U7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IG1faW1tZWRpYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAppbmRleCBm
NWJmMmI3MjZlNmFlOTY4OTM1M2MwYTdlMDhiNDVlZmRhNWQ5MDRiLi4xZGVhYzRmNDFjZjQ5ZjFm
ODgyZGNjZWZkNDhjZjZhOTczMmYzZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RGF0YVRyYW5zZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNw
cApAQCAtNDAyLDcgKzQwMiw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkRmlsZVR5cGVSZWFkZXIgZmlu
YWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRlciB7CiAgICAgICAgIHR5cGVzLmFkZChGaWxlOjpjb250
ZW50VHlwZUZvckZpbGUoZmlsZW5hbWUpKTsKICAgICB9CiAKLSAgICB2b2lkIHJlYWRCdWZmZXIo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4mJikKKyAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKQogICAgIHsKICAgICAgICAgdHlwZXMuYWRkKHR5
cGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBjZjMyYWJjMTgyN2Zj
ZWI1NGFkNWVhMDFiYTAyZWIwMWYxNzRmNzA0Li40MGM3ODRjM2UzOGI4ZGE4OTIxMmJiODk4MDJk
Y2M5MmU2YjgzYTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC00MTU5LDcgKzQx
NTksNyBAQCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIEVkaXRvcjo6cHJvbWlzZWRBdHRhY2htZW50
SW5mbyhFbGVtZW50JiBlbGVtZW50KQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgVmVjdG9y
PFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4gYWRkaXRpb25hbERhdGE7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZ2V0UGFzdGVi
b2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoZWxlbWVudCwgYWRkaXRpb25hbFR5cGVzLCBh
ZGRpdGlvbmFsRGF0YSk7CiAjZW5kaWYKQEAgLTQxNjcsNyArNDE2Nyw3IEBAIFByb21pc2VkQXR0
YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1l
bnQpCiAgICAgcmV0dXJuIHsgYXR0YWNobWVudC0+dW5pcXVlSWRlbnRpZmllcigpLCBXVEZNb3Zl
KGFkZGl0aW9uYWxUeXBlcyksIFdURk1vdmUoYWRkaXRpb25hbERhdGEpIH07CiB9CiAKLXZvaWQg
RWRpdG9yOjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRG
aWxlTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBFZGl0b3I6OnJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGlmIChhdXRvKiBjbGllbnQgPSB0
aGlzLT5jbGllbnQoKSkKICAgICAgICAgY2xpZW50LT5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlm
aWVyKGlkZW50aWZpZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxlTmFtZSwgV1RGTW92ZShk
YXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCA4ZGE5ZmNjNjQxNmI2NzIxN2QxNzQ5
ZWJiODk3ODA3ZTQ3NjExMTI1Li44NmQ4YzhjMjYwMTgzMGJkYzNhOTdmODczNzlmYTAxZTNlZGM4
ZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTU4LDcgKzU4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjsKIGNsYXNzIEFyY2hp
dmVSZXNvdXJjZTsKIGNsYXNzIENvbXBvc2l0ZUVkaXRDb21tYW5kOwotY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEN1c3RvbVVuZG9TdGVw
OwogY2xhc3MgRGF0YVRyYW5zZmVyOwogY2xhc3MgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjsKQEAg
LTc1LDcgKzc1LDcgQEAgY2xhc3MgS2lsbFJpbmc7CiBjbGFzcyBQYXN0ZWJvYXJkOwogY2xhc3Mg
UGFzdGVib2FyZFdyaXRlckRhdGE7CiBjbGFzcyBSZW5kZXJMYXllcjsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250OwogY2xhc3Mg
U3BlbGxDaGVja1JlcXVlc3Q7CiBjbGFzcyBTcGVsbENoZWNrZXI7CkBAIC01MzksNyArNTM5LDcg
QEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
YWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSos
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5nU3RhbmRhbG9u
ZUltYWdlcygpIGNvbnN0OwpAQCAtNTY2LDcgKzU2Niw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnRBdHRh
Y2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4m
JiBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSk7Ci0gICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmls
ZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZmlsZURhdGEpOworICAgIHZvaWQgcmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBmaWxlRGF0YSk7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3Rv
cjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2ht
ZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50
aWZpZXIoY29uc3QgU3RyaW5nJik7CkBAIC01NzYsNyArNTc2LDcgQEAgcHVibGljOgogCiAgICAg
V0VCQ09SRV9FWFBPUlQgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBwcm9taXNlZEF0dGFjaG1lbnRJ
bmZvKEVsZW1lbnQmKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGdldFBhc3RlYm9h
cmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmLCBWZWN0b3I8U3RyaW5nPiYgb3V0
VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBvdXREYXRhKTsK
KyAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQm
LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4m
IG91dERhdGEpOwogI2VuZGlmCiAjZW5kaWYKIApAQCAtNjI0LDEyICs2MjQsMTIgQEAgcHJpdmF0
ZToKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBhZGp1c3RlZFNlbGVjdGlvblJhbmdl
KCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CiAgICAgU3RyaW5nIHNlbGVjdGlv
bkluSFRNTEZvcm1hdCgpOwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBpbWFn
ZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50Jik7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
aW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYpOwogICAgIHN0YXRpYyBTdHJpbmcgdXNl
clZpc2libGVTdHJpbmcoY29uc3QgVVJMJik7Ci0gICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKLSAg
ICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdChO
U0F0dHJpYnV0ZWRTdHJpbmcgKik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGFJblJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOworICAgIHN0YXRpYyBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwogI2Vu
ZGlmCiAgICAgdm9pZCBwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGb250
QXR0cmlidXRlcyYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VyaWFsaXplZEF0dGFjaG1lbnREYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oCmluZGV4IDM5YzNiMWZh
M2Q4NTZmOGQ4NDljNjkzMzFkODllOTk4ZjdlNzYyM2IuLmYzMDI4MjM1NjkwMDZmNWNmOWRiYjRl
ZmMzNzNlNjdlZjA1ZjE5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJp
YWxpemVkQXR0YWNobWVudERhdGEuaApAQCAtMzMsMTIgKzMzLDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1
ZmZlcjsKIAogc3RydWN0IFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YSB7CiAgICAgU3RyaW5nIGlk
ZW50aWZpZXI7CiAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAgIFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBkYXRhOworICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29u
dGVudFJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgK
aW5kZXggMWQ5N2FjZDNjYzc5MTYxYjBhYzUwYzRiZjcwY2IxNTJmYzBmNDg0Yy4uNGFmOTcwYjFm
NWI0MjUwYzk1MmQ0MDlhODcxOGE4ODAzNGY0ODc1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb250ZW50UmVhZGVyLmgKQEAgLTcyLDE2ICs3MiwxNiBAQCBwcml2YXRlOgogICAgIGJv
b2wgcmVhZEZpbGVQYXRoKGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVk
UHJlc2VudGF0aW9uU2l6ZSA9IHsgfSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSA9IHsgfSkg
b3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikg
b3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAg
ICBib29sIHJlYWRJbWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUs
IFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJp
ZGU7CisgICAgYm9vbCByZWFkSW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplID0geyB9KSBvdmVycmlkZTsKICAgICBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29s
IHJlYWRXZWJBcmNoaXZlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBi
b29sIHJlYWRSVEZEKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29s
IHJlYWRSVEYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVh
ZERhdGFCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlv
blNpemUgPSB7IH0pIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVm
ZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBvdmVycmlk
ZTsKKyAgICBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCBy
ZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0g
eyB9KSBvdmVycmlkZTsKICNlbmRpZgogfTsKIApAQCAtOTksMTYgKzk5LDE2IEBAIHByaXZhdGU6
CiAgICAgYm9vbCByZWFkRmlsZVBhdGgoY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSA9
IHsgfSwgY29uc3QgU3RyaW5nJiA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICBib29sIHJlYWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
Ci0gICAgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiwg
UHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIHJlYWRJbWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5n
JiwgUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KICAgICBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
Ym9vbCByZWFkV2ViQXJjaGl2ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCByZWFkUlRGRChDb250aWd1b3VzU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCByZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29s
IHJlYWREYXRhQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
CisgICAgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJl
YWRSVEYoU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25T
aXplID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRl
ci5jcHAKaW5kZXggNzRmZTgyODdlOGMzOTNiZTE3YTY3NjY1MzhkOWYzNGEwOTBiMzM0Yi4uNTQ5
ZWI3ZDJlNGMwNzU0OGU0YThjOWVhMjRlYzIwZTRmMjFiZmEyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcApAQCAt
MzksNyArMzksNyBAQCB2b2lkIFdlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEZpbGVu
YW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0
ZShjb250ZXh0LmdldCgpLCBmaWxlbmFtZSkpOwogfQogCi12b2lkIFdlYkNvcmVQYXN0ZWJvYXJk
RmlsZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2Vi
Q29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAg
ICAgZmlsZXMuYXBwZW5kKEZpbGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBCbG9iOjpjcmVhdGUo
Y29udGV4dC5nZXQoKSwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCB0eXBlKSwgZmlsZW5hbWUpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRG
aWxlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmls
ZVJlYWRlci5oCmluZGV4IGU3YTA3MWNhNDAzOWUwMWY0OGQwYjQ5OTUwMWVkNjRkZTYyNmYwZmIu
LjVjNTI5ZGQ3YzhlY2MwMDA0OGZjYjRkMTU4MTQ2MzViMjRkOTBiYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaApAQCAt
NDEsNyArNDEsNyBAQCBzdHJ1Y3QgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyIGZpbmFsIDog
UGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIH5XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIo
KTsKIAogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgIHZv
aWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUs
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBj
b250ZXh0OwogICAgIFZlY3RvcjxSZWY8RmlsZT4+IGZpbGVzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXggZDBjOTMzMTAwYzY1NWYxZmE4NTI1Mjc4
ODE4NzA0OTljMmY2MWZlMy4uYTg1YjdhYTc1MjZiMmY3YzUxYTNmNWM0NjdiZWIzNTBlOTkxNGFh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC03
MSwxMiArNzEsMTIgQEAgdm9pZCBFZGl0b3I6OnBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVj
dGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLAogICAgICAgICBhdHRyaWJ1dGVz
LmZvbnQgPSAoX19icmlkZ2UgaWQpY3RGb250OwogfQogCi1zdGF0aWMgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1
dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQorc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRy
aWJ1dGVkU3RyaW5nKQogewogICAgIGlmICghYXR0cmlidXRlZFN0cmluZy5sZW5ndGgpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OmF0dHJp
YnV0ZWRTdHJpbmcgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXSk7Cisg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWRE
YXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6
WUVTIGVycm9yOm51bGxwdHJdKTsKIH0KIAogU3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1M
Rm9ybWF0KCkKQEAgLTg3LDcgKzg3LDcgQEAgU3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1M
Rm9ybWF0KCkKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKLXZvaWQgRWRpdG9y
OjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50
LCBWZWN0b3I8U3RyaW5nPiYgb3V0VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+JiBvdXREYXRhKQordm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERh
dGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBl
cywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSkKIHsKICAgICBhdXRvIGVs
ZW1lbnRSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoZWxlbWVudCk7CiAgICAgY2xpZW50
KCktPmdldENsaWVudFBhc3RlYm9hcmREYXRhKGVsZW1lbnRSYW5nZSwgb3V0VHlwZXMsIG91dERh
dGEpOwpAQCAtOTksNyArOTksNyBAQCB2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5k
RGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cgogICAgICAgICBp
ZiAoYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKCplbGVtZW50UmFuZ2Up
KSB7CiAgICAgICAgICAgICBpZiAoYXV0byBkYXRhID0gYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2Vu
dGF0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBvdXRUeXBlcy5hcHBlbmQoV2ViQXJjaGl2ZVBi
b2FyZFR5cGUpOwotICAgICAgICAgICAgICAgIG91dERhdGEuYXBwZW5kKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSk7CisgICAgICAgICAgICAgICAgb3V0RGF0YS5h
cHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQpAQCAtMTUxLDEyICsxNTEsMTIgQEAgdm9pZCBFZGl0b3I6OndyaXRl
U2VsZWN0aW9uKFBhc3RlYm9hcmRXcml0ZXJEYXRhJiBwYXN0ZWJvYXJkV3JpdGVyRGF0YSkKICAg
ICBwYXN0ZWJvYXJkV3JpdGVyRGF0YS5zZXRXZWJDb250ZW50KFdURk1vdmUod2ViQ29udGVudCkp
OwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rpb25J
bldlYkFyY2hpdmVGb3JtYXQoKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpzZWxlY3Rp
b25JbldlYkFyY2hpdmVGb3JtYXQoKQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24obV9kb2N1bWVudC5mcmFtZSgpKTsKICAgICBpZiAo
IWFyY2hpdmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0
KCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVw
cmVzZW50YXRpb24oKS5nZXQoKSk7CiB9CiAKIC8vIEZJWE1FOiBNYWtlcyBubyBzZW5zZSB0aGF0
IHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2ZlciBhbHdheXMgaW5jbHVkZXMgYWx0IHRleHQsIGJ1
dCBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkIGRvZXMgbm90LgpAQCAtMjAxLDI3ICsyMDEs
MjcgQEAgU3RyaW5nIEVkaXRvcjo6dXNlclZpc2libGVTdHJpbmcoY29uc3QgVVJMJiB1cmwpCiAg
ICAgcmV0dXJuIFdURjo6dXNlclZpc2libGVTdHJpbmcodXJsKTsKIH0KIAotUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRT
dHJpbmcgKnN0cmluZykKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGREZv
cm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICBOU1VJbnRlZ2VyIGxlbmd0
aCA9IHN0cmluZy5sZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFu
Z2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOworICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVu
Z3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJp
bmcpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRhdGFJblJURkZvcm1hdChOU0F0dHJp
YnV0ZWRTdHJpbmcgKnN0cmluZykKIHsKICAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IHN0cmluZy5s
ZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShbc3RyaW5nIFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgp
IGRvY3VtZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRB
dHRyaWJ1dGVzOkB7IH1dKTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKICAgICBy
ZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZl
cnRlci5tbQppbmRleCAzYzVlNTQzMjViOWZlMjM1NjdlZTQyZGU5OWY5YjViMTVjNDJiMTAwLi4w
NzgyNDgzNjJhYTA1NGRjM2FiMDAwMDQ1MTcxODQxOThhNTgwZjc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0yMzIyLDcgKzIzMjIsNyBA
QCBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJMKERvY3Vt
ZW50TG9hZGVyKiBkYXRhU291cmNlLCBOUwogc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVy
PiBmaWxlV3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAg
ICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7
Ci0gICAgICAgIGlmIChTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdlLT5y
ZXNvdXJjZUJ1ZmZlcigpKQorICAgICAgICBpZiAoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hh
cmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhD
b250ZW50czpzaGFyZWRCdWZmZXItPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
V2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IDQ0MDU5YmU1YWU5ZTgxZGEzOWQ2Mjg5MjAx
ZDhlZDQ5MTU5NzM1MzUuLjZjOGQzYjdjNzQzZjUyZTNkZDFkZWQ5MjZlZWJiYjQ1NjE4NGVlZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJl
YWRlckNvY29hLm1tCkBAIC0yNDUsNyArMjQ1LDcgQEAgc3RhdGljIGJvb2wgc3VwcG9ydHNDbGll
bnRTaWRlQXR0YWNobWVudERhdGEoY29uc3QgRnJhbWUmIGZyYW1lKQogCiAjZW5kaWYKIAotc3Rh
dGljIFJlZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVu
dChGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVy
cmVkU2l6ZSkKK3N0YXRpYyBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJ
bWFnZUF0dGFjaG1lbnQoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
UHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQogewogI2lmIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCiAgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojpj
cmVhdGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1bWVudCk7CkBAIC0yODUsNyArMjg1
LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1l
JiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVudCYgZnIKICAgICBzdHJ1Y3QgQXR0YWNobWVudEluc2Vy
dGlvbkluZm8gewogICAgICAgICBTdHJpbmcgZmlsZU5hbWU7CiAgICAgICAgIFN0cmluZyBjb250
ZW50VHlwZTsKLSAgICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAg
ICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgICAgIFJlZjxFbGVtZW50PiBvcmlnaW5h
bEVsZW1lbnQ7CiAgICAgfTsKIApAQCAtNDI4LDcgKzQyOCw3IEBAIHN0cnVjdCBNYXJrdXBBbmRB
cmNoaXZlIHsKICAgICBSZWY8QXJjaGl2ZT4gYXJjaGl2ZTsKIH07CiAKLXN0YXRpYyBzdGQ6Om9w
dGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJrdXBBbmRBcmNoaXZlKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0
cmluZyk+JiBjYW5TaG93TUlNRVR5cGVBc0hUTUwpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxNYXJr
dXBBbmRBcmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY29uc3Qgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyk+JiBjYW5TaG93TUlNRVR5
cGVBc0hUTUwpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KFVSTCgpLCBidWZmZXIpOwogICAgIGlmICghYXJjaGl2ZSkKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBz
dGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1
bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgIHJldHVybiBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFn
bWVudEluRG9jdW1lbnQoV1RGTW92ZShmcmFnbWVudCksICpzdGFnaW5nRG9jdW1lbnQsIG1zb0xp
c3RRdWlya3MsIG1hcmt1cEFuZEFyY2hpdmUubWFya3VwKTsKIH0KIAotYm9vbCBXZWJDb250ZW50
UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiti
b29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIGlmIChmcmFtZS5zZXR0aW5ncygpLnByZWZlck1JTUVUeXBlRm9ySW1hZ2VzKCkg
fHwgIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUzMiw3ICs1
MzIsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250
ZW50TWFya3VwUmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCitib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRXZWJBcmNoaXZlKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNjEyLDcgKzYxMiw3IEBAIGJvb2wgV2ViQ29udGVudE1hcmt1cFJl
YWRlcjo6cmVhZEhUTUwoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuICFtYXJrdXAu
aXNFbXB0eSgpOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEZEKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQo
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVy
TUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtNjI2LDcgKzYyNiw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJU
RkQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6cmVhZFJURkQoU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC02MzksNyArNjM5LDcgQEAgYm9vbCBXZWJDb250ZW50TWFya3Vw
UmVhZGVyOjpyZWFkUlRGRChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRSVEYoU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1lLnNldHRpbmdzKCkucHJlZmVyTUlN
RVR5cGVGb3JJbWFnZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjUzLDcgKzY1Myw3
IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1hcmt1cFJl
YWRlcjo6cmVhZFJURihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIFdlYkNv
bnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAg
aWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NzYsNyAr
Njc2LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmlu
ZyYgdGV4dCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpy
ZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwg
UHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250
ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZSkKIHsKICAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9j
dW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKQEAgLTc0Niw3ICs3NDYsNyBAQCBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICByZXR1cm4gYXR0YWNobWVudDsKIH0KIAotc3Rh
dGljIFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckRhdGEoRnJhbWUmIGZyYW1lLCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFNpemUpCitzdGF0aWMgUmVmPEhUTUxF
bGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBu
YW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFNpemUpCiB7CiAgICAgUmVmIGRvY3VtZW50
ID0gKmZyYW1lLmRvY3VtZW50KCk7CiAgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1l
bnRFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1bWVudCk7CkBA
IC04MzMsNyArODMzLDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFdlYkNvbnRlbnRSZWFkZXI6OnJlYWREYXRhQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRh
dGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKK2Jvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRh
dGlvblNpemUpCiB7CiAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRS
ZWFkZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRl
ckd0ay5jcHAKaW5kZXggNjA0ODZlNzFhZDU5ZmVjYzcxNWZmMGEwOWIxYzM1NThiN2IzNDJjMi4u
ZDNlOTgxOWJkNTMxZjg0ODZhMzE3YWI5ZjllZDgzYTk4ODViZTJiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKQEAgLTcxLDcg
KzcxLDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmlu
ZyYgdGV4dCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50UmVhZGVyOjpy
ZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwg
UHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250
ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZSkKIHsKICAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9j
dW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbQppbmRleCBkZjA5MTlmNzVhY2Y3OWE4MzkyODMyMTE5MGM1Y2IyYmFmNzQ3ZTRjLi4z
MDM2Y2QzMmQ2Y2Q4MzJjMjIwMjgzYTg0NDVhODk5YTVhNjZjYTNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBFZGl0b3I6
OnBsYXRmb3JtQ29weUZvbnQoKQogICAgIFBhc3RlYm9hcmRCdWZmZXIgcGFzdGVib2FyZEJ1ZmZl
cjsKICAgICBwYXN0ZWJvYXJkQnVmZmVyLmNvbnRlbnRPcmlnaW4gPSBtX2RvY3VtZW50Lm9yaWdp
bklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgcGFzdGVib2FyZEJ1ZmZlci50eXBlID0g
bGVnYWN5Rm9udFBhc3RlYm9hcmRUeXBlKCk7Ci0gICAgcGFzdGVib2FyZEJ1ZmZlci5kYXRhID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZvbnREYXRhLmdldCgpKTsKKyAgICBwYXN0
ZWJvYXJkQnVmZmVyLmRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmb250RGF0YS5nZXQoKSk7
CiAgICAgcGFzdGVib2FyZC53cml0ZShwYXN0ZWJvYXJkQnVmZmVyKTsKIH0KIApAQCAtMjUwLDE1
ICsyNTAsMTUgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSog
bm9kZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICBjbGllbnQoKS0+c2V0SW5z
ZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBFZGl0b3I6OmltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KEVsZW1lbnQmIGltYWdlRWxl
bWVudCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1hZ2VJbldlYkFyY2hpdmVGb3Jt
YXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQogewogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZShpbWFnZUVsZW1lbnQpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdl
dCgpKTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0
cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICAvLyBGSVhNRTogVGhlIGludGVyZmFjZSB0
byB0aGlzIGZ1bmN0aW9uIGlzIGF3a3dhcmQuIFdlJ2QgcHJvYmFibHkgYmUgYmV0dGVyIG9mZiB3
aXRoIHRocmVlIHNlcGFyYXRlIGZ1bmN0aW9ucy4gQXMgb2YgdGhpcyB3cml0aW5nLCB0aGlzIGlz
IG9ubHkgdXNlZCBpbiBXZWJLaXQyIHRvIGltcGxlbWVudCB0aGUgbWV0aG9kIC1bV0tWaWV3IHdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkOnR5cGVzOl0sIHdoaWNoIGlzIG9ubHkgdXNlZCB0byBz
dXBwb3J0IE9TIFggc2VydmljZXMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQmxvYi5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKaW5kZXggNDVkOTMzZTEz
Y2E0ZDIyNTFjNWRlZDg0OGFhOWU5ODcyYzc2NzQ4OS4uYmNhNjY5NmViZTZmMGVkZGRkZWU3OWI3
M2MzZWUxNDQ5NmQ4MmZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9i
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKQEAgLTUzLDcgKzUzLDcgQEAg
Y2xhc3MgQmxvYkxvYWRlcjsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIGNsYXNzIFJlYWRhYmxl
U3RyZWFtOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBj
bGFzcyBFeGNlcHRpb25PcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9O
ZXR3b3JrU2VuZFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRR
dWV1ZS5jcHAKaW5kZXggNTU5ZWJjYzQ4YzVmMDk2YWMxOWJhZTdkOWY3MThiNzFmMmEzNTMyMi4u
NDJmNDE4MGRmYTg0MjdlMGU2MGY4MWViNzliMTkxODdjYWZkYmExYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQg
TmV0d29ya1NlbmRRdWV1ZTo6cHJvY2Vzc01lc3NhZ2VzKCkKICAgICAgICAgYm9vbCBzaG91bGRT
dG9wUHJvY2Vzc2luZyA9IGZhbHNlOwogICAgICAgICBzd2l0Y2hPbihtX3F1ZXVlLmZpcnN0KCks
IFt0aGlzXShjb25zdCBDU3RyaW5nJiB1dGY4KSB7CiAgICAgICAgICAgICBtX3dyaXRlU3RyaW5n
KHV0ZjgpOwotICAgICAgICB9LCBbdGhpc10oUmVmPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpIHsKKyAg
ICAgICAgfSwgW3RoaXNdKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgZGF0YSkgewogICAg
ICAgICAgICAgZGF0YS0+Zm9yRWFjaFNlZ21lbnQobV93cml0ZVJhd0RhdGEpOwogICAgICAgICB9
LCBbdGhpcywgJnNob3VsZFN0b3BQcm9jZXNzaW5nXShVbmlxdWVSZWY8QmxvYkxvYWRlcj4mIGxv
YWRlcikgewogICAgICAgICAgICAgYXV0byBlcnJvckNvZGUgPSBsb2FkZXItPmVycm9yQ29kZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaAppbmRleCA1NTFmNzBm
OTE2N2IyYmZjYjI0NGJiMmIzNzAwYmZiYWFmNTQ3OTZjLi5kMjNjZmViYjQ1MDhiYzMwMDkxNWJi
OTk2ZDNmMTUwNjJjZTM1MDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05l
dHdvcmtTZW5kUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5k
UXVldWUuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJs
b2I7CiBjbGFzcyBCbG9iTG9hZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgTmV0d29ya1NlbmRRdWV1
ZSA6IHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CkBAIC02Myw3
ICs2Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzTWVzc2FnZXMoKTsK
IAotICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnZhcmlhbnQ8Q1N0cmluZywgUmVmPFNoYXJlZEJ1
ZmZlcj4sIFVuaXF1ZVJlZjxCbG9iTG9hZGVyPj47CisgICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6
dmFyaWFudDxDU3RyaW5nLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIFVuaXF1ZVJlZjxC
bG9iTG9hZGVyPj47CiAgICAgRGVxdWU8TWVzc2FnZT4gbV9xdWV1ZTsKIAogICAgIFdyaXRlU3Ry
aW5nIG1fd3JpdGVTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERp
cmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwCmluZGV4IDEwMTZkY2YzYzE5OWU1NGNhODE0YzI2NDVhOWE4NTk4YTVjMWQzNWUu
Ljc1MjMwMTdiYTcyOTQwNTYzYjc1ZjQ2NmE2OGVkMWNjYjNkZWU4YmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yNzYsOSArMjc2LDkgQEAg
dm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNv
bnN0IFN0cmluZyYgaW5wdXRMaW5lKQogICAgIGFwcGVuZEVudHJ5KGZpbGVuYW1lLCBwcm9jZXNz
RmlsZXNpemVTdHJpbmcocmVzdWx0LmZpbGVTaXplLCByZXN1bHQudHlwZSA9PSBGVFBEaXJlY3Rv
cnlFbnRyeSksIHByb2Nlc3NGaWxlRGF0ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRUaW1lKSwgcmVz
dWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpOwogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0ZURvY3VtZW50RGF0YShjb25z
dCBTZXR0aW5ncyYgc2V0dGluZ3MpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncykKIHsK
LSAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShzZXR0aW5ncy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CisgICAgYXV0
byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5n
cy5mdHBEaXJlY3RvcnlUZW1wbGF0ZVBhdGgoKSk7CiAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAg
TE9HKEZUUCwgIkxvYWRlZCBGVFBEaXJlY3RvcnlUZW1wbGF0ZSBvZiBsZW5ndGggJXp1XG4iLCBi
dWZmZXItPnNpemUoKSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKQEAgLTI4Niw3ICsyODYsNyBAQCBz
dGF0aWMgaW5saW5lIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVUZW1wbGF0
ZURvY3VtZW50RGF0YShjb25zdCBTZQogICAgIAogYm9vbCBGVFBEaXJlY3RvcnlEb2N1bWVudFBh
cnNlcjo6bG9hZERvY3VtZW50VGVtcGxhdGUoKQogewotICAgIHN0YXRpYyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnRE
YXRhKGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgU2hhcmVk
QnVmZmVyKiB0ZW1wbGF0ZURvY3VtZW50RGF0YSA9IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRh
KGRvY3VtZW50KCktPnNldHRpbmdzKCkpLmxlYWtSZWYoKTsKICAgICAvLyBGSVhNRTogSW5zdGVh
ZCBvZiBzdG9yaW5nIHRoZSBkYXRhLCBpdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCBpZiB3ZSBj
b3VsZCBwYXJzZSB0aGUgdGVtcGxhdGUgZGF0YSBpbnRvIHRoZQogICAgIC8vIHRlbXBsYXRlIERv
Y3VtZW50IG9uY2UsIHN0b3JlIHRoYXQgZG9jdW1lbnQsIHRoZW4gImNvcHkiIGl0IHdoZW5ldmVy
IHdlIGdldCBhbiBGVFAgZGlyZWN0b3J5IGxpc3RpbmcuCiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5kZXggNTZhMDZmY2FmMjczZDI1ZGM0
Yzc1ZGNlNTY5YWFjOGYxYWE1OTUyNy4uZDJiODc0MWEwNDQzNDJjN2ZmZDllOGE1MzNjYzhhMTIw
ZTI5YmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50
LmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIHN0YXRpYyBib29sIG1pbWVUeXBlSXNTdWl0YWJsZUZv
cklubGluZUltYWdlQXR0YWNobWVudChjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVy
biBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUobWltZVR5cGUpIHx8
IE1JTUVUeXBlUmVnaXN0cnk6OmlzUERGTUlNRVR5cGUobWltZVR5cGUpOwogfQogCi12b2lkIEhU
TUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgSFRN
TEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
IHsKICAgICBhdXRvKiBob3N0RWxlbWVudCA9IHNoYWRvd0hvc3QoKTsKICAgICBpZiAoIWlzPEhU
TUxJbWFnZUVsZW1lbnQ+KGhvc3RFbGVtZW50KSB8fCAhYnVmZmVyLT5zaXplKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAppbmRleCA1NzNlYzJlYWUxY2Rj
MDYwOWYyNjFjMzg0MDBiYjAyYzQ4MGY3YmRkLi42NjFkZWM5Mzc2ZDhhOWQ2ZDQ3MTdmZDBiNGNl
N2Y4MmZmMDNmNzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2ht
ZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgRmlsZTsKIGNsYXNzIEhUTUxJbWFnZUVsZW1l
bnQ7CiBjbGFzcyBSZW5kZXJBdHRhY2htZW50OwogY2xhc3MgU2hhcmVhYmxlQml0bWFwOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3Mg
SFRNTEF0dGFjaG1lbnRFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKICAgICBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEKEhUTUxBdHRhY2htZW50RWxlbWVudCk7CkBAIC01Nyw3ICs1
Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVs
ZW1lbnQoY29uc3QgRWxlbWVudCYpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1
cGRhdGVBdHRyaWJ1dGVzKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+JiYgbmV3RmlsZVNpemUsIGNv
bnN0IFN0cmluZyYgbmV3Q29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgbmV3RmlsZW5hbWUpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+
JiB0aHVtYm5haWwpOwogCiAgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJ
bnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZWM4MzUxYzA5Nzc0OGIxNDlh
OTQ0MzliYWI2OTU3OGVlOTAwMWEwZS4uNTY0YzMxNTI5ZTY5YzM2NWFmZGY5NzhlOTIxZDE4NTg0
N2Q0MjVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0y
OTM5LDcgKzI5MzksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudEF0dGVtcHRU
b1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKQogICAgIGF0dGVtcHRUb1Jlc3VtZVBsYXliYWNr
SWZOZWNlc3NhcnkoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjZG1DbGllbnRVbnJl
cXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFU
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQordm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0
cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0
YSkKIHsKICAgICBtZWRpYVBsYXllckluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXRE
YXRhVHlwZSwgaW5pdERhdGEtPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA2YjQwNGFhODczNTI3NzdiNDcxODM1ZjEy
MGZmMTU3Y2VlZDg0YTY5Li45MTI4YmNkYmVlNTlkNWZkMTcyMmU3NDcxOThkNTYyNjRjNmVmODAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNzIxLDcgKzcyMSw3
IEBAIHByaXZhdGU6CiAKICAgICAvLyBDRE1DbGllbnQKICAgICB2b2lkIGNkbUNsaWVudEF0dGVt
cHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKSBmaW5hbDsKLSAgICB2b2lkIGNkbUNsaWVu
dFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZElu
aXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKSBmaW5hbDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBU
RURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZURvY3VtZW50LmNwcAppbmRleCA3N2NkNGYzODBlMjgzMjBlNTQ0NGY5MzljYWFkNjAwM2FhZmU4
MWRiLi40MzcwZDY4MTg3MmQ5NWMxMGMwZjRlOTU5ZTE0NzQzOWFkNTc0NDBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEltYWdl
RG9jdW1lbnQ6OnVwZGF0ZUR1cmluZ1BhcnNpbmcoKQogICAgIGlmICghbV9pbWFnZUVsZW1lbnQp
CiAgICAgICAgIGNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCk7CiAKLSAgICBpZiAoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSkKKyAgICBp
ZiAoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGxvYWRlcigpLT5tYWlu
UmVzb3VyY2VEYXRhKCkpCiAgICAgICAgIG1faW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpLT51
cGRhdGVCdWZmZXIoKmJ1ZmZlcik7CiAKICAgICBpbWFnZVVwZGF0ZWQoKTsKQEAgLTE1MSw3ICsx
NTEsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygpCiB7CiAgICAgaWYg
KCFwYXJzZXIoKS0+aXNTdG9wcGVkKCkgJiYgbV9pbWFnZUVsZW1lbnQpIHsKICAgICAgICAgQ2Fj
aGVkSW1hZ2UmIGNhY2hlZEltYWdlID0gKm1faW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpOwot
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gbG9hZGVyKCktPm1haW5SZXNvdXJj
ZURhdGEoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBs
b2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogCiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBt
dWx0aXBhcnQgaW1hZ2UsIG1ha2UgYSBjb3B5IG9mIHRoZSBjdXJyZW50IHBhcnQsIHNpbmNlIHRo
ZSByZXNvdXJjZSBkYXRhCiAgICAgICAgIC8vIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIG5l
eHQgcGFydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYTdjYTcxNjJkNzkxZWQ3ZmJhOGNjOTFjMjFhMmNmM2Fm
NmU2OWE3ZS4uMTg3OTNmZjA2NjMzOGZiNjBhMzRkZWM5MDliYzJkZGQyOGJlYWZiNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAKQEAgLTg1MCw3ICs4NTAsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
aW50ZXJjZXB0UmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bQogICAgICAg
ICBuZXR3b3JrQWdlbnQtPmludGVyY2VwdFJlcXVlc3QobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIp
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNl
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmludGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxl
cikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5l
bmFibGVkTmV0d29ya0FnZW50KCkpCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50ZXJjZXB0UmVz
cG9uc2UocmVzcG9uc2UsIGlkZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4
IDhlNjVjNGViMTAyMzM1MjFmNDhjN2Y0YjEyMGFkMmM4OTA5YTA3YmEuLmQyOTU3ODEwZDgzODJj
OTM1MWQ1YTkzZjE0NGFlZDE0OTNiY2M2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTkzLDcgKzkzLDcgQEAgY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYWRvd1Jvb3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgVGltZXJCYXNlOwogY2xhc3Mg
V2ViS2l0TmFtZWRGbG93OwogY2xhc3MgV2ViU29ja2V0Q2hhbm5lbDsKQEAgLTIzNiw3ICsyMzYs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVxdWVzdChjb25z
dCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBib29sIHNob3Vs
ZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2FkZXImLCBGdW5j
dGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBp
bnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZv
aWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsK
IAogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSYsIHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CiAgICAgc3RhdGljIHZvaWQgYWRkTWVz
c2FnZVRvQ29uc29sZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIHN0ZDo6dW5pcXVlX3B0
cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CkBAIC00NDEsNyArNDQxLDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hv
dWxkSW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVxdWVzdEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIFJlc291cmNlTG9hZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKT4mJik7Ci0gICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGlu
dGVyY2VwdFJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
KT4mJik7CiAKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
KTsKIApAQCAtMTI4OSw3ICsxMjg5LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIEYKICAgICAg
ICAgaW50ZXJjZXB0UmVxdWVzdEltcGwoKmFnZW50cywgbG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIp
KTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRS
ZXNwb25zZShjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYm
IGhhbmRsZXIpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2Vw
dFJlc3BvbnNlKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAgaWYg
KGF1dG8qIGFnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHMoZnJhbWUpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2Vi
S2l0LmNwcAppbmRleCA2MWU0YmMzYmEwMTllZTI1ZTVjOGJjMjIxZGZmNjA3N2VkZGI4NjNkLi5m
MDY0MDNhNjIzNGI0MmI2YWQyYTgwYjAxOTRhNTk2ZDg5ZjZlNmJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2Vi
S2l0LmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldl
YktpdDo6aW50ZXJjZXB0UmVxdWVzdEludGVybmFsKFJlc291cmNlTG9hZGVyJiBsbwogICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdURk1vdmUo
aGFuZGxlcikpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50
ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldl
YktpdDo6aW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbChjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlLCBp
ZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaAppbmRleCBm
NzYxMTRjZTk4ZjQyYTdmZjkwNmE0OGQwNDIwYjk2MzA1ZDM2OTE0Li4wN2I0MjFiNTljMTU1NWUx
YTI5MWUxOGViYjI2MjIxMjJmMTY1OGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCkBAIC0zNiwyMCAr
MzYsMjAgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQgewogcHVibGljOgogICAgIHN0YXRpYyBib29s
IHNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFt
ZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRS
ZXF1ZXN0KFJlc291cmNlTG9hZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKT4mJik7Ci0gICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUq
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZy
YW1lKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wg
c2hvdWxkSW50ZXJjZXB0UmVxdWVzdEludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2VJbnRl
cm5hbChjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMg
dm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNl
cHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICBzdGF0aWMg
dm9pZCBpbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+KT4mJik7CiB9OwogCiBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJL
aXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCkBAIC03Niw3ICs3Niw3IEBAIGlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRl
ciYgbG9hCiAgICAgaW50ZXJjZXB0UmVxdWVzdEludGVybmFsKGxvYWRlciwgV1RGTW92ZShoYW5k
bGVyKSk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6
aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+KT4mJiBoYW5kbGVyKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEFTU0VSVChJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlc3BvbnNlKGZyYW1l
LCByZXNwb25zZSkpOwogICAgIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwoKmZyYW1lLCByZXNw
b25zZSwgaWRlbnRpZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCBiOTk3NmFmMmU0ZGQ0
MDlhODljM2E0MjQ0MTM5YTNlOTliNGU3YzBiLi4zOWIwMTFjZjA2ZjdmMzg1MzI0M2UwYTc2M2Ez
YjFkNDU0OTA0MTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjphZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVk
UmVzbwogICAgIHJlc291cmNlRGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2UoY2FjaGVkUmVzb3VyY2Up
OwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZl
cihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0Rh
dGE6OmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nTmFtZSkKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IHJlc291cmNl
RGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogICAgIGlmICghcmVzb3VyY2VEYXRhKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCAw
NGIzNTUwNzMzN2M4Yjg2MWIzODNkODgxM2RjMDNmMmEzODkxNzIwLi5kYWFlNWZlNGEzMWUzMTU5
MzYzNzkwNDIzZjVmYmQzMzcwYzVjZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtNDEsNyArNDEsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBj
bGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBO
ZXR3b3JrUmVzb3VyY2VzRGF0YSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC04
OSw4ICs4OCw4IEBAIHB1YmxpYzoKICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+
IGRlY29kZXIoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXIuY29weVJlZigpOyB9CiAgICAgICAg
IHZvaWQgc2V0RGVjb2RlcihSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4mJiBkZWNvZGVyKSB7
IG1fZGVjb2RlciA9IFdURk1vdmUoZGVjb2Rlcik7IH0KIAotICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5jb3B5UmVmKCk7IH0KLSAg
ICAgICAgdm9pZCBzZXRCdWZmZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9i
dWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmNvcHlSZWYoKTsgfQor
ICAgICAgICB2b2lkIHNldEJ1ZmZlcihSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KIAogICAgICAgICBjb25zdCBz
dGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0IHsg
cmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOyB9CiAgICAgICAgIHZvaWQgc2V0Q2VydGlmaWNhdGVJ
bmZvKGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiYgY2VydGlmaWNhdGVJbmZv
KSB7IG1fY2VydGlmaWNhdGVJbmZvID0gY2VydGlmaWNhdGVJbmZvOyB9CkBAIC0xMjEsNyArMTIw
LDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICAgICAgUmVmUHRy
PFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKICAgICAgICAgU2hhcmVkQnVmZmVyQnVp
bGRlciBtX2RhdGFCdWZmZXI7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVy
OworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBtX2NlcnRpZmljYXRlSW5mbzsKICAg
ICAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fY2FjaGVkUmVzb3VyY2UgeyBudWxscHRyIH07CiAgICAg
ICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIG1fdHlwZSB7IEluc3BlY3RvclBh
Z2VBZ2VudDo6T3RoZXJSZXNvdXJjZSB9OwpAQCAtMTQ1LDcgKzE0NCw3IEBAIHB1YmxpYzoKICAg
ICBSZXNvdXJjZURhdGEgY29uc3QqIG1heWJlQWRkUmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCk7CiAgICAg
dm9pZCBtYXliZURlY29kZURhdGFUb0NvbnRlbnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwog
ICAgIHZvaWQgYWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIENhY2hl
ZFJlc291cmNlKik7Ci0gICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmdOYW1lKTsKKyAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3Qg
U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKICAgICBSZXNvdXJjZURhdGEgY29uc3QqIGRhdGEo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0YUZv
clVSTChjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVtb3ZlQ2FjaGVk
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCBlNThiY2My
YWE3ZjgxNGQ5NzdmZjdkOGYyNjIzYzM3ZWNiYTdjMWZjLi4yMjNhNjc2N2JlMjcxZWU0ZDIyZGVk
MWQ2YmU2MGNhNzA3ODE3YzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xMTQwLDcgKzExNDAs
NyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJj
ZUxvYWRlciYgbG9hZGVyLCBGdW5jdGlvbjx2bwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5y
ZXF1ZXN0SW50ZXJjZXB0ZWQocmVxdWVzdElkLCBidWlsZE9iamVjdEZvclJlc291cmNlUmVxdWVz
dChsb2FkZXIucmVxdWVzdCgpKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpp
bnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQor
dm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIEFTU0VSVChtX2Vu
YWJsZWQpOwogICAgIEFTU0VSVChtX2ludGVyY2VwdGlvbkVuYWJsZWQpOwpAQCAtMTI0Myw3ICsx
MjQzLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjppbnRlcmNlcHRXaXRoUmVzcG9uc2UoY29uc3QKICAgICAgICAgb3ZlcnJpZGVSZXNwb25z
ZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlLCBvdmVycmlk
ZVJlc3BvbnNlLm1pbWVUeXBlKCkpOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG92ZXJyaWRlRGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gb3ZlcnJp
ZGVEYXRhOwogICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0g
YmFzZTY0RGVjb2RlKGNvbnRlbnQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKQEAgLTEyNzEsNyAr
MTI3MSw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6aW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zCiAgICAgaWYgKGxvYWRlci0+cmVhY2hl
ZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJVbmFibGUg
dG8gZnVsZmlsbCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfcyk7CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBkYXRhOwogICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CiAgICAgICAgIGF1dG8g
YnVmZmVyID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5oCmluZGV4IDhmNmZiY2MyOTNhZWJmOGI5ZDVjOTQ1ZDI4MjlhMTUyN2I3NGJjN2Yu
LjZiY2Q4N2RkY2Q4YjA0NDEzMDhkMWQwMWVjYTZiMGU2ZGExNDEzZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
aApAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICBib29sIHdpbGxJbnRlcmNlcHQoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4pPiYmKTsKKyAgICB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYp
OwogICAgIHZvaWQgaW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZv
aWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYpOwogCiAgICAgdm9pZCBzZWFyY2hPdGhlclJl
cXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mLCBSZWY8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYpOwpAQCAtMTg1
LDcgKzE4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBlbmRp
bmdJbnRlcmNlcHRSZXNwb25zZSk7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIHB1YmxpYzoKLSAgICAgICAgUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIG9yaWdpbmFsUmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICAgICAgUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIG9yaWdpbmFsUmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiAgICAgICAgICAgICA6IG1fb3JpZ2luYWxSZXNwb25zZShvcmlnaW5h
bFJlc3BvbnNlKQogICAgICAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKQogICAgICAgICB7IH0KQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgcmVzcG9uZChtX29yaWdpbmFsUmVzcG9uc2UsIG51bGxwdHIpOwogICAg
ICAgICB9CiAKLSAgICAgICAgdm9pZCByZXNwb25kKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhKQorICAgICAgICB2b2lkIHJlc3BvbmQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBkYXRhKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIW1fcmVzcG9uZGVk
KTsKICAgICAgICAgICAgIGlmIChtX3Jlc3BvbmRlZCkKQEAgLTIxNSw3ICsyMTUsNyBAQCBwcml2
YXRlOgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBtX29yaWdpbmFs
UmVzcG9uc2U7Ci0gICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAg
ICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4gbV9jb21wbGV0aW9uSGFuZGxlcjsKICAgICAg
ICAgYm9vbCBtX3Jlc3BvbmRlZCB7IGZhbHNlIH07CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4
IGEzYzYwYzNiNjk2YTgzZDgzMWQ4OTdmODE2N2EzMmJlMjM3MzcxYmEuLmE0ZmZkMTM2MWNkZGU1
YWI3ZDk3M2NkMDBkMTlhOTEwYWU5ZWQyOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEwMCwxMyArMTAw
LDEzIEBAIHN0YXRpYyBib29sIGRlY29kZUJ1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHVu
c2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4CiAKIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50
OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2Rl
LCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBm
cmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghYnVmZmVyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGF0
YUNvbnRlbnQoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
LCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0
KTsKIH0KIAotYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFt
ZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKK2Jvb2wgSW5zcGVjdG9y
UGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhC
YXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQogewogICAgIHJldHVybiBkYXRhQ29udGVudChi
dWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZl
ciA/IGJ1ZmZlci0+c2l6ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29k
ZSwgcmVzdWx0KTsKIH0KQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6cmVzb3VyY2VDb250ZW50KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEZy
YQogICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdt
ZW50SWRlbnRpZmllcih1cmwsIGxvYWRlci0+dXJsKCkpKSB7CiAgICAgICAgICpiYXNlNjRFbmNv
ZGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCBiNTFhZGRiMWJkOGYyY2NlNjk1NjA3OTljZDFkOTUy
ZDJkZTQyODM4Li4zZDVlNTY2ZGJlMGM1ZWMxMWQ5ZThkZjY3ZmNmMGE3MDk4OGEyZjhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5z
cGVjdG9yT3ZlcmxheTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJPYmplY3Q7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbnNw
ZWN0b3JQYWdlQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMg
SW5zcGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShJbnNwZWN0b3JQYWdlQWdlbnQpOwpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6
CiAgICAgICAgIE90aGVyUmVzb3VyY2UsCiAgICAgfTsKIAotICAgIHN0YXRpYyBib29sIHNoYXJl
ZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKKyAg
ICBzdGF0aWMgYm9vbCBzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2
NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwogICAgIHN0YXRpYyBWZWN0b3I8Q2FjaGVkUmVzb3Vy
Y2UqPiBjYWNoZWRSZXNvdXJjZXNGb3JGcmFtZShGcmFtZSopOwogICAgIHN0YXRpYyB2b2lkIHJl
c291cmNlQ29udGVudChJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIEZyYW1lKiwg
Y29uc3QgVVJMJiwgU3RyaW5nKiByZXN1bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwogICAgIHN0
YXRpYyBTdHJpbmcgc291cmNlTWFwVVJMRm9yUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAppbmRleCA5NzRmMjJhMmRhN2EwMmM2
NDg5YzFiNTBhNWEyMjBmZTQ0YjE5NjMwLi42YWU1MjY1OTdjZDI4NjMxYmU3OTUwZmMzMzUzNmY4
ZjM0N2Q3YWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0y
NzYsNyArMjc2LDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRG
YWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIEFTU0VSVCh3aWxsSGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcikpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gcmVwbGFjZW1lbnREYXRhIHsgbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXItPnJlcGxhY2Vt
ZW50RGF0YSgpIH07CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2Vt
ZW50RGF0YSB7IG1fYmxvY2tpbmdDb250ZW50RmlsdGVyLT5yZXBsYWNlbWVudERhdGEoKSB9Owog
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyBVUkwoKSwgInRleHQvaHRtbCJfcywgc3Rh
dGljX2Nhc3Q8bG9uZyBsb25nPihyZXBsYWNlbWVudERhdGEtPnNpemUoKSksICJVVEYtOCJfcyB9
OwogICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhIHsgV1RGTW92ZShyZXBsYWNlbWVu
dERhdGEpLCBlcnJvci5mYWlsaW5nVVJMKCksIHJlc3BvbnNlLCBTdWJzdGl0dXRlRGF0YTo6U2Vz
c2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4gfTsKICAgICBTZXRGb3JTY29wZTxib29sPiBs
b2FkaW5nQmxvY2tlZFBhZ2UgeyBtX2lzTG9hZGluZ0Jsb2NrZWRQYWdlLCB0cnVlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIu
Y3BwCmluZGV4IGQwOTYxYWZjN2I3ZTczZTYxN2U3ODA2YTY3YzZmZmQwOWYxNWNhOTMuLjk0YzM2
ZWY1MDdlZjAzN2I3MDdjOTBkMTlhN2ExYTc0NDViMWY3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwCkBAIC0xMzks
NyArMTM5LDcgQEAgdm9pZCBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXI6OmRvUHJlZmxpZ2h0
KERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYgbG9hZGVyLAogICAgIFJlc291cmNlUmVxdWVzdCBw
cmVmbGlnaHRSZXF1ZXN0ID0gY3JlYXRlQWNjZXNzQ29udHJvbFByZWZsaWdodFJlcXVlc3QocmVx
dWVzdCwgbG9hZGVyLnNlY3VyaXR5T3JpZ2luKCksIGxvYWRlci5yZWZlcnJlcigpKTsKICAgICBS
ZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YTsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IGxvYWRlci5kb2N1bWVudCgpLmZy
YW1lKCktPmxvYWRlcigpLmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocHJlZmxpZ2h0UmVxdWVz
dCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMs
IEZldGNoT3B0aW9ucyB7IH0sIHsgfSwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggZmRmZDBlYWFmM2E1MDE4ZDkw
MGJhMWE2ZDdhNDhhZTU3MzJmMzRjOC4uMGFiNGUxNGY5Y2UzNWExY2NmNmRkNmJjZTgzMDI0MTZj
MWVjZGVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0y
MDgsNyArMjA4LDcgQEAgRG9jdW1lbnRMb2FkZXI6On5Eb2N1bWVudExvYWRlcigpCiAjZW5kaWYK
IH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURh
dGEoKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IERvY3VtZW50TG9hZGVy
OjptYWluUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5p
c1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+Y29w
eSgpOwpAQCAtMTY0OSw3ICsxNjQ5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJBcmNo
aXZlUmVzb3VyY2VzKCkKICAgICBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIuc3Rv
cCgpOwogfQogCi1Db250aWd1b3VzU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2Vk
QXJjaGl2ZURhdGEoKSBjb25zdAorU2hhcmVkQnVmZmVyKiBEb2N1bWVudExvYWRlcjo6cGFyc2Vk
QXJjaGl2ZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhcnNlZEFyY2hpdmVEYXRhLmdl
dCgpOwogfQpAQCAtMTY2OCw3ICsxNjY4LDcgQEAgQXJjaGl2ZVJlc291cmNlKiBEb2N1bWVudExv
YWRlcjo6YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogCiBSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlKCkgY29uc3QK
IHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwor
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhID0gbWFpblJlc291cmNlRGF0
YSgpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CiAgICAgYXV0byYgcmVzcG9uc2UgPSB0aGlzLT5yZXNwb25zZSgpOwpAQCAtMjI1Miw3ICsy
MjUyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0
Q29udGVudCgpCiAKICAgICBmcmFtZUxvYWRlcigpLT5zZXR1cEZvclJlcGxhY2UoKTsKICAgICBt
X2NvbW1pdHRlZCA9IGZhbHNlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0
YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwogICAgIGNvbW1pdExvYWQocmVz
b3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6ZSgp
KTsKIH0KIApAQCAtMjI4OSw3ICsyMjg5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRJ
Y29uTG9hZGluZygpCiAgICAgbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZ2V0TG9hZERlY2lz
aW9uRm9ySWNvbnMoaWNvbkRlY2lzaW9ucyk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRp
ZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29u
KGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBhdXRvIGljb24gPSBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbi50YWtlKGxvYWRJZGVu
dGlmaWVyKTsKIApAQCAtMjMxMCw3ICsyMzEwLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGlk
R2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnQK
ICAgICByYXdJY29uTG9hZGVyLT5zdGFydExvYWRpbmcoKTsKIH0KIAotdm9pZCBEb2N1bWVudExv
YWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiBsb2FkZXIsIFNoYXJlZEJ1ZmZl
ciogYnVmZmVyKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbihJY29u
TG9hZGVyJiBsb2FkZXIsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICAv
LyBJZiB0aGUgRG9jdW1lbnRMb2FkZXIgaGFzIGRldGFjaGVkIGZyb20gaXRzIGZyYW1lLCBhbGwg
aWNvbiBsb2FkcyBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY2FuY2VsbGVkLgogICAgIEFTU0VS
VChtX2ZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggNmJk
MzJmYzJlY2Y0NmFmN2NkOTM3OWE5ZDAwYzk5MTE2ZWI3YTZiNS4uNGJmOTZmN2RiZGQ0NzM3Mzg2
Y2M1NDllOGM5MjFlN2RjNTJiNDk0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgKQEAgLTc1LDcgKzc1LDcgQEAgY2xhc3MgQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjsK
IGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBj
bGFzcyBDb250ZW50RmlsdGVyOwotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBDdXN0b21IZWFkZXJGaWVsZHM7CiBjbGFzcyBGb3JtU3Rh
dGU7CiBjbGFzcyBGcmFtZTsKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgSWNvbkxvYWRlcjsKIGNs
YXNzIFBhZ2U7CiBjbGFzcyBQcmV2aWV3Q29udmVydGVyOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xh
c3MgU1dDbGllbnRDb25uZWN0aW9uOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBT
dWJzdGl0dXRlUmVzb3VyY2U7CkBAIC0xNzksNyArMTc5LDcgQEAgcHVibGljOgogCiAgICAgV0VC
Q09SRV9FWFBPUlQgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyKCkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgU3VicmVzb3VyY2VMb2FkZXIqIG1haW5SZXNvdXJjZUxvYWRlcigpIGNvbnN0Owot
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gbWFpblJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIAogICAgIERvY3VtZW50V3JpdGVyJiB3
cml0ZXIoKSBjb25zdCB7IHJldHVybiBtX3dyaXRlcjsgfQogCkBAIC0yMzYsNyArMjM2LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNlcyhB
cmNoaXZlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRBcmNoaXZlUmVzb3VyY2UoUmVm
PEFyY2hpdmVSZXNvdXJjZT4mJik7CiAgICAgUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVGb3JT
dWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIqIHBhcnNlZEFyY2hpdmVEYXRhKCkg
Y29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQoUmVz
b3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgpAQCAtNDAzLDgg
KzQwMyw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBzdGFydEljb25Mb2FkaW5nKCk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wg
ZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFNoYXJlZEJ1ZmZlciopPiYmKTsKLSAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxv
YWRlciYsIFNoYXJlZEJ1ZmZlciopOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkR2V0TG9h
ZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYpOworICAg
IHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciopOwogCiAgICAgY29uc3QgVmVjdG9yPExpbmtJY29uPiYgbGlua0ljb25zKCkgY29uc3Qg
eyByZXR1cm4gbV9saW5rSWNvbnM7IH0KIApAQCAtNjEzLDcgKzYxMyw3IEBAIHByaXZhdGU6CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+IG1fYXJjaGl2ZVJl
c291cmNlQ29sbGVjdGlvbjsKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRN
TCkKICAgICBSZWZQdHI8QXJjaGl2ZT4gbV9hcmNoaXZlOwotICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBtX3BhcnNlZEFyY2hpdmVEYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fcGFyc2VkQXJjaGl2ZURhdGE7CiAjZW5kaWYKIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBt
X3Jlc291cmNlc0NsaWVudEtub3dzQWJvdXQ7CkBAIC02MzIsNyArNjMyLDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgeyBmYWxzZSB9OwogCiAgICAg
SGFzaE1hcDx1aW50NjRfdCwgTGlua0ljb24+IG1faWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uOwot
ICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPEljb25Mb2FkZXI+LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFNoYXJlZEJ1ZmZlciopPj4gbV9pY29uTG9hZGVyczsKKyAgICBIYXNoTWFwPHN0ZDo6
dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKik+PiBtX2ljb25Mb2FkZXJzOwogICAgIFZlY3RvcjxMaW5rSWNvbj4gbV9s
aW5rSWNvbnM7CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDIz
ZTYwYWNmNTEyMzE4NzUyNjE1MDA0YjllZDAyZTBlN2EyMTUwYjguLmI5YzQxMzUyNTY3NjI2NzIx
OTA3YWYzNjZkZmIxZGVjNzk0YzI0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC02MDUsNyArNjA1LDcgQEAgdm9pZCBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFNlY3VyaXR5Q2gKICAgICBsb2FkVGltaW5nLm1hcmtTdGFydFRpbWUoKTsKIAogICAg
IC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucy5zbmlmZkNvbnRlbnQgaXMgbm90IHN1
cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVzdHMuCi0gICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICBS
ZXNvdXJjZUVycm9yIGVycm9yOwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAg
YXV0byBpZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UmVzb3VyY2VMb2FkZXI+KHN0
ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwCmluZGV4IDBkYWY0YzdhYjYwNTliZDQ3YTdjYmJkOGM4MzE3MzRjNGJi
MTAzNDcuLmZlMzJkOTRlNDI4NjU5ZDVkNjFkYWJhNzIxOThlYjE5NTliYTI1ZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0yNzgsNyArMjc4LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwg
eyB9CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0
aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+Jiwg
VmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KKyAgICB2
b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JikgZmlu
YWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9pZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0
ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGU5MWM4ZjYwZDNhOThhOWViOGRhM2NlNmI0
NGZhZDJiYzNlYjU1NDcuLjZjNWVlM2E5YjMxYWU4Yjg0ZGI5MjBiNjZlYmYyMTRmMjZlYzlhZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzEwNiw3ICszMTA2LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmUKICAgICB9KTsKIH0KIAotUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBk
YXRhKQorUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVu
dGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9w
dGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291
cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAg
U3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIo
bV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgpLCBvdXRn
b2luZ1JlZmVycmVyKCkpOwpAQCAtMzE1NCw3ICszMTU0LDcgQEAgUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291
cmNlUmUKICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9z
dCgpLm1heWJlTG9hZFN5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBk
YXRhKSkgewogICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAgICAgICAgICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5sb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KCp0aGlzLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCBjbGllbnRDcmVkZW50aWFs
UG9saWN5LCBvcHRpb25zLCBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBlcnJvciwgcmVzcG9uc2Us
IGJ1ZmZlcik7Ci0gICAgICAgICAgICBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyKCktPmFw
cGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KG5ld1Jl
cXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAgICAgICAgICBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2hhcmVkKCkubG9nU3VicmVzb3VyY2VMb2FkaW5nKCZtX2ZyYW1lLCBuZXdSZXF1
ZXN0LCByZXNwb25zZSwKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGluYXRpb24o
b3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5h
dGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGlu
YXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmlu
ZGV4IDljM2Y3NGM0MmRiOGU3YmFlOTU0MDVmNTQwZjNlMjg3MTk4MmU5MTQuLjc1YWUyODRjMmMz
NGZkZDg5ZTg1NjRkYTQzOWRhNzcyNWFmYmM4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIENhY2hlZEZyYW1lQmFzZTsKIGNsYXNzIENh
Y2hlZFBhZ2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIENocm9tZTsKLWNsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01XcmFw
cGVyV29ybGQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwpAQCAtMTI3
LDcgKzEyNyw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShN
SFRNTCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvYWRBcmNoaXZlKFJlZjxBcmNoaXZlPiYm
KTsKICNlbmRpZgotICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ks
IGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9y
JiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0
YSk7CisgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3Qg
RmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2NhdGlvbihjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRh
cmdldCwgRXZlbnQqLCBjb25zdCBSZWZlcnJlclBvbGljeSYsIFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+ID0gc3RkOjpudWxs
b3B0LCBjb25zdCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tKCksIGNv
bnN0IFN5c3RlbVByZXZpZXdJbmZvJiA9IHsgfSwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihG
cmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50KiA9IG51bGxwdHIsIHN0ZDo6b3B0aW9uYWw8UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA0ZmQ2MzdhOTAxNGE1ZDQxYTIyNmVlNDU5MTdi
NmIzZTlhNzkwZWJiLi5lZTlmM2QwYzk4NGQ0NTVjYmI5MWI0NjBjMWJjMTI4OThkMTIzNjUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtOTgsNyArOTgs
NyBAQCBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0
YTsKIGNsYXNzIFdpZGdldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xv
YWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApp
bmRleCBhZWY2NjhiZDYzZWQ1ZmNkNDVlNjFlOWQxZjEwN2NmYjZhZWYyNjRiLi4yOWQyZTNmNDYx
NDBhYWE1MTE2MGU2YTI4NTYyZjM3MGUzNzFlYjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9h
ZGVyU3RyYXRlZ3kuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1
cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIAogc3RydWN0IEZldGNoT3B0aW9uczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIuY3BwCmluZGV4IDYzMzc1NTk2MzIwMDE0NjM4Mjg5ZTI4MjYwNGM1NWIwYWY0NDUzMTMuLjYw
NDNhYzliZTI2N2VhNGZiYzcxZTExMThiOTA3OTE1NWUzOTE1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcApAQCAtMTQ2
LDEyICsxNDYsMTIgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGUKICAgICBkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQ
YXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihu
dWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9h
ZFR5cGUpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXls
b2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgs
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIFJl
ZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgK
aW5kZXggNDhiYjIxNTNjOTNmMmRjNzU0ZTIwNzMyMjUyYzA1MDljZjcwNGE0MS4uYjUxNzRlZGM5
NGI5OTIzOTAyMDVmMGZhZDQ1MmVhNWFjMzg3ODkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgKQEAgLTYzLDcgKzYzLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWls
KGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApAQCAtNzQsNyArNzQsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCi0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxv
YWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCos
IGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKIAogICAgIHZvaWQgbm90aWZ5RG9uZSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGlj
RGlnZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3QuY3BwCmluZGV4IDQ4NDBmMTRjZjI1ZGRmMWY2MDBhZTk2ZGFjNjNkOTcxMWM4Yzk0MDcu
LjUyZTFlMjNhMmM1NDU0YjNiMmZhMGFlN2UyZDE1ZWEzY2MzY2FiNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCkBA
IC0xNTUsNyArMTU1LDcgQEAgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBo
aWNEaWdlc3RGb3JCeXRlcyhSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWcKICAgICByZXR1cm4geyBh
bGdvcml0aG0sIGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKSB9OwogfQogCi1SZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNv
dXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0sIGNvbnN0IFNoYXJl
ZEJ1ZmZlciogYnVmZmVyKQorUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBo
aWNEaWdlc3RGb3JTaGFyZWRCdWZmZXIoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdv
cml0aG0gYWxnb3JpdGhtLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7
CiAgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKHRvQ3J5
cHRvRGlnZXN0QWxnb3JpdGhtKGFsZ29yaXRobSkpOwogICAgIGlmIChidWZmZXIpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaApp
bmRleCBhZWEzZGM1N2M4NzgzMTMwMTNhNWIxNmM5MzliNzc0ZWQ0ODQzMjRjLi44M2I4NjEzY2Zk
YTIzMjlhZTMwYmJmNmFiYzE0Yjk5ZDQ0MjM3YjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCkBAIC0zNCw3ICszNCw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZFJlc291cmNlOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFJlc291
cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCB7CiAgICAgZW51bSBjbGFzcyBBbGdvcml0aG0gewpAQCAt
NzUsNyArNzUsNyBAQCBzdGQ6Om9wdGlvbmFsPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3Q+IHBhcnNlRW5jb2RlZENyeXB0b2dyYXBoaWNEaWdlcwogCiBzdGQ6Om9wdGlvbmFsPFJl
c291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gZGVjb2RlRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdChjb25zdCBFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Jik7CiAK
LVJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVk
QnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBjb25zdCBTaGFy
ZWRCdWZmZXIqKTsKK1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGln
ZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGht
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvckJ5dGVzKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdDo6QWxnb3JpdGhtLCBjb25zdCB2b2lkKiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGI4NDkxYWIzMGU0
OGM3MzE2Yjg4ODFiYmQzOWNmMDRhMWM0ZjZiMDkuLjZkZWJiMjU4OGEzZTgyYjIxYzYxZDdlOGYz
NmU0ZjRiYmJhMjVlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cApAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmluaXQoUmVzb3VyY2VS
ZXF1ZXN0JiYgY2xpZW50UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pCiAgICAgfSk7CiB9
CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQor
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogewogICAgIGRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildKCkgbXV0YWJs
ZSB7CiAgICAgICAgIGlmIChyZWFjaGVkVGVybWluYWxTdGF0ZSgpKQpAQCAtMzI4LDcgKzMyOCw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSgp
CiAgICAgICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6
YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hh
cmVkQnVmZmVyKiBidWZmZXIsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lk
IFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIERhdGFQYXlsb2Fk
VHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgaWYgKG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5n
UG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMzQyLDcgKzM0Miw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmFkZERhdGFP
ckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFNoYXJlCiAgICAg
ICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOwogfQogCi1jb25zdCBTaGFy
ZWRCdWZmZXIqIFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdAorY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fcmVzb3VyY2VEYXRhLmdldCgpLmdldCgpOwogfQpAQCAtNTUwLDE0
ICs1NTAsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGwKICAgICBkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXls
b2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7
CiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciks
IGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIFJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKIHsKLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBnZXQgZGF0YStsZW5ndGgg
Kk9SKiBhIFNoYXJlZEJ1ZmZlci4KKyAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBnZXQg
ZGF0YStsZW5ndGggKk9SKiBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAgICAgQVNTRVJUKCFi
dWZmZXIgfHwgKCFkYXRhICYmICFsZW5ndGgpKTsKIAogICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0
aGlzIGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBk
bwpAQCAtNzM0LDcgKzczNCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduCiAgICAgZGlkUmVj
ZWl2ZURhdGEoZGF0YSwgbGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRl
cyk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VI
YW5kbGUqLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3Ro
KQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSos
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKQogewogICAgIGRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5oCmluZGV4IDM3ZDY2N2Q4Mzc2ZDAwZGE3ODk0NjJkY2NlMWFkYjMzNjg4OWZkMGQu
LjcwZWEyMjBkYzE3YzczNzZlZDY2MGZhN2E2MWE4NGUzMWMzMzRjYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBpbml0KFJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKIAotICAgIHZvaWQgZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkZWxp
dmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHZp
cnR1YWwgdm9pZCBzdGFydExvYWRpbmcoKQpAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHJlbGVhc2VSZXNvdXJjZXMoKTsKICAgICBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIGNvbnN0
IFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3Q7CisgICAgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VEYXRhKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhclJlc291
cmNlRGF0YSgpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1N1YnJlc291cmNlTG9hZGVyKCkg
Y29uc3Q7CkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRT
ZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcg
dG90YWxCeXRlc1RvQmVTZW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9s
aWN5Q29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hh
cmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlw
ZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBl
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7
CiAKQEAgLTE2Nyw3ICsxNjcsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIHdhc0NhbmNlbGxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuY2VsbGF0aW9uU3RhdHVzID49IENhbmNlbGxlZDsgfQog
Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBE
YXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1
aW50OF90KiwgdW5zaWduZWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgCiAgICAgdm9p
ZCBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSkgeyBtX29w
dGlvbnMucmVmZXJyZXJQb2xpY3kgPSByZWZlcnJlclBvbGljeTsgfQogICAgIFJlZmVycmVyUG9s
aWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLnJlZmVycmVyUG9s
aWN5OyB9CkBAIC0xOTIsNyArMTkyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRD
YW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKIAotICAgIHZvaWQgYWRkRGF0YU9yQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgU2hhcmVkQnVmZmVyKiwgRGF0YVBheWxvYWRU
eXBlKTsKKyAgICB2b2lkIGFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWduZWQs
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIHZvaWQgbG9h
ZERhdGFVUkwoKTsKICAgICB2b2lkIGZpbmlzaE5ldHdvcmtMb2FkKCk7CiAKQEAgLTIwMyw3ICsy
MDMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3Vy
Y2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRs
ZSosIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihS
ZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0
aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2FzQmxv
Y2tlZChSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNzE5NjgyYzY0NjQ4MjAzNDAxN2Y2OGU1ZmE2OTM4
OGJlZGIyZWVhYS4uMzdkMGJiODIxYWJkODZhOWI1NjA2ZTEyN2VmYzk0MTJhNTFiYjFhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MzAsNyAr
NTMwLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb24KICAgICBkaWRSZWNlaXZlRGF0YU9yQnVm
ZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2Fk
VHlwZSk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUp
CiB7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9IG1f
cHJldmlld0xvYWRlci5nZXQoKSkgewpAQCAtNTQyLDcgKzU0Miw3IEBAIHZvaWQgU3VicmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxv
bmcgbG9uZyBlCiAgICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3Zl
KGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lk
IFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBh
eWxvYWRUeXBlKQogewogICAgIEFTU0VSVChtX3Jlc291cmNlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAppbmRleCAzNzIzYjZiOWFiOWZkZGFhYTU1NzRiZmIw
ZTZmMzhjZWQ3YWVmYjc1Li44MzJjOWYwZTczZDM4NDY0YTc5NWY0MDM4NjBmNzljMzRlNzNiYzdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaApAQCAtNzQsNyAr
NzQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25n
IGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25n
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQg
d2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CkBAIC05Miw3ICs5Miw3
IEBAIHByaXZhdGU6CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiBjaGVja1Jlc3BvbnNlQ3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBFeHBl
Y3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVkaXJlY3Rpb25Dcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2woY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcmV2aW91c1JlcXVlc3QsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QpOwogCi0gICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCBpbnQsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlKTsKIAogICAgIHZvaWQgbm90aWZ5RG9uZShMb2FkQ29tcGxldGlvblR5
cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCmluZGV4IGY2NjI5MmUz
MWNiZWI0MjY0MzBhODMyYWRlZjQyOTkxY2I1NzQzNmUuLmE4YTQ5YjQ3ZjkyNzM0Mjc0YmE0Y2Vh
YmMxNzA3ZmVmYTdiNjY0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5o
CkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAg
ICB9CiAKLSAgICAgICAgU3Vic3RpdHV0ZURhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBjb250
ZW50LCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9y
eSkKKyAgICAgICAgU3Vic3RpdHV0ZURhdGEoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgY29udGVudCwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNob3VsZFJldmVhbFRvU2Vzc2lv
bkhpc3RvcnkpCiAgICAgICAgICAgICA6IG1fY29udGVudChXVEZNb3ZlKGNvbnRlbnQpKQogICAg
ICAgICAgICAgLCBtX2ZhaWxpbmdVUkwoZmFpbGluZ1VSTCkKICAgICAgICAgICAgICwgbV9yZXNw
b25zZShyZXNwb25zZSkKQEAgLTU0LDE0ICs1NCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudCAhPSBudWxscHRy
OyB9CiAgICAgICAgIGJvb2wgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSA9PSBTZXNzaW9uSGlzdG9yeVZp
c2liaWxpdHk6OlZpc2libGU7IH0KIAotICAgICAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGNvbnRl
bnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQuZ2V0KCk7IH0KKyAgICAgICAgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogY29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudC5n
ZXQoKTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNwb25zZS5taW1lVHlwZSgpOyB9CiAgICAgICAgIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCk7IH0KICAg
ICAgICAgY29uc3QgVVJMJiBmYWlsaW5nVVJMKCkgY29uc3QgeyByZXR1cm4gbV9mYWlsaW5nVVJM
OyB9CiAgICAgICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNwb25zZTsgfQogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBtX2NvbnRlbnQ7CiAgICAgICAgIFVSTCBtX2ZhaWxpbmdVUkw7CiAgICAgICAg
IFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICAgICAgU2Vzc2lvbkhpc3RvcnlWaXNp
YmlsaXR5IG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSB7IFNlc3Npb25IaXN0b3J5Vmlz
aWJpbGl0eTo6SGlkZGVuIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
c3RpdHV0ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291
cmNlLmgKaW5kZXggMzQ0Y2E5ODI4NTc1MmU4ZjEwMTcwZjIzMjA0OWUwY2EyYWQ0ZmM4Ni4uY2Yy
ZGUwYzYyZDk1ZjMzMjViNDJiNDZlMjQwMzc3NDQxMDc0MmEwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaApAQCAtMzcsMTQgKzM3LDE0IEBAIHB1YmxpYzoK
IAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7
IH0KLSAgICBTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJl
bmNlX2Nhc3Q8U2hhcmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9CisgICAgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVu
Y2VfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9
CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBtX2Rh
dGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7IH0KICAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuZW1w
dHkoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRl
cikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEuY29w
eSgpKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVybCwg
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCisg
ICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3Bv
bnNlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogICAgICAgICA6IG1fdXJs
KFdURk1vdmUodXJsKSkKICAgICAgICAgLCBtX3Jlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKQog
ICAgICAgICAsIG1fZGF0YShXVEZNb3ZlKGRhdGEpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggNzIwYTky
NzFjZDMyNjVlZjRjZTIzMjYxYTI2ZGIwZDgyOGM2MzM0Ni4uNTE5NzhmNDEyMzg3NGRjNTY2MGVm
ZjQ3MDY1OTcwN2Q0ZTVkODVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC0yNTMsMTQgKzI1MywxNCBA
QCBVUkwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmNyZWF0ZUZpbGVVUkwoY29uc3QgU3RyaW5nJiBw
YXRoKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UmIHJlc291
cmNlKQorc3RhdGljIGlubGluZSBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGcm9tUmVzb3Vy
Y2UoQXBwbGljYXRpb25DYWNoZVJlc291cmNlJiByZXNvdXJjZSkKIHsKICAgICBpZiAocmVzb3Vy
Y2UucGF0aCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHJlc291cmNlLmRhdGEoKS5tYWtl
Q29udGlndW91cygpOwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2UucGF0aCgpKTsKIH0KIAotYm9v
bCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQorYm9vbCBBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlKiByZXNvdXJjZTsKICAgICBpZiAoIXNob3VsZExvYWRSZXNvdXJjZUZyb21BcHBsaWNh
dGlvbkNhY2hlKHJlcXVlc3QsIHJlc291cmNlKSkKQEAgLTI3Nyw3ICsyNzcsNyBAQCBib29sIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgUmVzbwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgZGF0YSkKK3ZvaWQgQXBw
bGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpCiB7CiAgICAgLy8g
SWYgbm9ybWFsIGxvYWRpbmcgcmVzdWx0cyBpbiBhIHJlZGlyZWN0IHRvIGEgcmVzb3VyY2Ugd2l0
aCBhbm90aGVyIG9yaWdpbiAoaW5kaWNhdGl2ZSBvZiBhIGNhcHRpdmUgcG9ydGFsKSwgb3IgYSA0
eHggb3IgNXh4IHN0YXR1cyBjb2RlIG9yIGVxdWl2YWxlbnQsCiAgICAgLy8gb3IgaWYgdGhlcmUg
d2VyZSBuZXR3b3JrIGVycm9ycyAoYnV0IG5vdCBpZiB0aGUgdXNlciBjYW5jZWxlZCB0aGUgZG93
bmxvYWQpLCB0aGVuIGluc3RlYWQgZ2V0LCBmcm9tIHRoZSBjYWNoZSwgdGhlIHJlc291cmNlIG9m
IHRoZSBmYWxsYmFjayBlbnRyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCBkYzg1OGZkZDZkNTQ1M2ViNDM1OTI4
ZDNlZDc1NzU3MDgzNTk0NWUwLi5iOTYzNTZlNzg1NjEzODk1NmFlNGMwNTk4MzE3MGNkZjcyMzY3
MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hl
OwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7Ci1jbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRE9NQXBwbGljYXRpb25D
YWNoZTsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CkBAIC0xMDQsOCArMTA0
LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tG
b3JSZXNwb25zZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yRXJyb3IoUmVzb3VyY2VM
b2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICBib29sIG1heWJlTG9hZFN5bmNo
cm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9u
c2UmLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKLSAgICB2b2lkIG1heWJlTG9h
ZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVy
cm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYp
OworICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmLCBSZXNv
dXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7Cisg
ICAgdm9pZCBtYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYpOwogCiAgICAgYm9vbCBjYW5DYWNoZUluQmFja0ZvcndhcmRDYWNoZSgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UuY3BwCmluZGV4IDY3MTA5NTdjM2FiNzRhNzU5ZmMyNzUxZmQ3YTA2YjMxMWU1
MThjZTUuLjJiYjNmZTc1Yjk5NzdlODMzMjJhZTI1ODBmNzIxMmVlNWJmMjE2MTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gQXBwbGljYXRpb25DYWNoZVJlc291cmNl
OjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBwYXRoKQorUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQoIXVybC5oYXNGcmFn
bWVudElkZW50aWZpZXIoKSk7CiAgICAgaWYgKCFidWZmZXIpCkBAIC00MCw3ICs0MCw3IEBAIFJl
ZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3Jl
YXRlKGNvbnN0IFVSTCYgdXJsLCBjCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXBwbGljYXRp
b25DYWNoZVJlc291cmNlKFVSTCB7IHVybCB9LCBXVEZNb3ZlKHJlc291cmNlUmVzcG9uc2UpLCB0
eXBlLCBidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgcGF0aCkpOwogfQogCi1BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCitBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25z
ZSwgdW5zaWduZWQgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29u
c3QgU3RyaW5nJiBwYXRoKQogICAgIDogU3Vic3RpdHV0ZVJlc291cmNlKFdURk1vdmUodXJsKSwg
V1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX3R5cGUodHlwZSkKICAg
ICAsIG1fc3RvcmFnZUlEKDApCkBAIC01MSw3ICs1MSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25z
ZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKFJlc291cmNlTG9h
ZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9u
c2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29udGlndW91cygpIDogQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOworICAg
IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5pc0VtcHR5
KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKG1fcGF0aCkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZTo6YWRkVHlwZSh1bnNpZ25lZCB0eXBlKSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaAppbmRleCA4OGM5NGRl
MWE3NzQxMDQ2OWM5MzFhNDJhNDc5YjFlNjc3N2E3MDJlLi5jMjg4ZTcwMzZjNjc2MmFkNDg3NmJh
ODgxNDY5YTc1ZDIyMzdlMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCkBAIC00MCw3ICs0MCw3IEBA
IHB1YmxpYzoKICAgICAgICAgRmFsbGJhY2sgPSAxIDw8IDQKICAgICB9OwogCi0gICAgc3RhdGlj
IFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGNvbnN0IFN0cmluZyYgcGF0aCA9IFN0cmluZygpKTsK
KyAgICBzdGF0aWMgUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gY3JlYXRlKGNvbnN0IFVS
TCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGNvbnN0IFN0cmlu
ZyYgcGF0aCA9IFN0cmluZygpKTsKIAogICAgIHVuc2lnbmVkIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3R5cGU7IH0KICAgICB2b2lkIGFkZFR5cGUodW5zaWduZWQgdHlwZSk7CkBAIC01OCw3ICs1
OCw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIAogcHJpdmF0ZToKLSAgICBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UoVVJMJiYsIFJlc291cmNlUmVzcG9uc2UmJiwgdW5zaWduZWQgdHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UoVVJMJiYsIFJlc291cmNlUmVzcG9uc2UmJiwgdW5zaWduZWQgdHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKICAgICB2
b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAKaW5kZXggYzc3MGQ3NjQxMzUwNjUyZjVmNzRhMGRjZTUwY2U4ZDMzZDFmYzVlNC4uOGNmMDVj
Y2UxODgwMTI4ZGU1OWJlNzBhOTk4MzZmNWE3NDViNmQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
CkBAIC0xMTEyLDcgKzExMTIsNyBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQpCiAgICAgICAgIGlu
dCBodHRwU3RhdHVzQ29kZSA9IGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQoMSk7CiAKICAgICAg
ICAgdW5zaWduZWQgdHlwZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjYWNoZVN0YXRlbWVudC0+
Y29sdW1uSW50NjQoMikpOwotICAgICAgICBhdXRvIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoY2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkJsb2IoNikpOworICAgICAgICBhdXRv
IGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0YXRlbWVudC0+Y29sdW1uQmxvYig2
KSk7CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgcGF0aCA9IGNhY2hlU3RhdGVtZW50LT5jb2x1
bW5UZXh0KDcpOwogICAgICAgICBsb25nIGxvbmcgc2l6ZSA9IDA7CkBAIC0xMjcyLDcgKzEyNzIs
NyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzaG91bGRTdG9yZVJlc291cmNlQXNG
bGF0RmlsZShBcHBsaWNhdGlvbkNhY2hlUmVzbwogICAgIHJldHVybiBzdGFydHNXaXRoTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJhdWRpby8iKSB8fCBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHR5cGUsICJ2aWRlby8iKTsKIH0KICAgICAKLWJvb2wgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1
ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0cmluZyYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBmaWxlRXh0ZW5zaW9uKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3Jp
dGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBm
aWxlRXh0ZW5zaW9uKQogewogICAgIFN0cmluZyBmdWxsUGF0aDsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmgKaW5kZXggOWE5NTMwMDg3NjZhODg4NTU2MWIzNDg4ODliOGNlZGEyYjJlYjMzOC4uNDEwMmEx
ODA4YjQ1NTU3YjY0NWUzNmU3ZTY4MWZjNGM2ZDIwN2NlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgKQEAg
LTM5LDcgKzM5LDcgQEAgY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwogY2xhc3MgQXBwbGlj
YXRpb25DYWNoZUhvc3Q7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBT
ZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgU3RvcmFnZUlESm91cm5hbDsKIAog
Y2xhc3MgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZT4gewpAQCAtMTIyLDcgKzEyMiw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBlbnN1cmVPcmlnaW5SZWNvcmQoY29uc3QgU2VjdXJpdHlPcmlnaW4qKTsKICAgICBzdGF0aWMg
Ym9vbCBzaG91bGRTdG9yZVJlc291cmNlQXNGbGF0RmlsZShBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UqKTsKICAgICB2b2lkIGRlbGV0ZVRhYmxlcygpOwotICAgIGJvb2wgd3JpdGVEYXRhVG9Vbmlx
dWVGaWxlSW5EaXJlY3RvcnkoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rvcnks
IFN0cmluZyYgb3V0RmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbik7CisgICAg
Ym9vbCB3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0cmluZyYgb3V0RmlsZW5hbWUsIGNvbnN0
IFN0cmluZyYgZmlsZUV4dGVuc2lvbik7CiAKICAgICB2b2lkIGxvYWRNYW5pZmVzdEhvc3RIYXNo
ZXMoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0Fy
Y2hpdmVGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVG
YWN0b3J5LmNwcAppbmRleCA2ZGU4MGMxMGFjN2QyNWNmMzQ2OWY2ZGVmMGZhZjcyNDFmNTk2NDI4
Li40ZWY5Y2Q2NmJkMDg4Yjc0YzA0NmMwNjkwZDFlOWQzZTVlMzM2MGZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCkBAIC00NiwxMiAr
NDYsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIFJlZlB0cjxBcmNoaXZl
PiBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbihjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKK3R5
cGVkZWYgUmVmUHRyPEFyY2hpdmU+IFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKGNvbnN0IFVSTCYs
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJhd0Rh
dGFDcmVhdGlvbkZ1bmN0aW9uKiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBBcmNoaXZlTUlN
RVR5cGVzTWFwOwogCiAvLyBUaGUgY3JlYXRlIGZ1bmN0aW9ucyBpbiB0aGUgYXJjaGl2ZSBjbGFz
c2VzIHJldHVybiBSZWZQdHIgdG8gY29uY3JldGUgc3ViY2xhc3NlcwogLy8gb2YgQXJjaGl2ZS4g
VGhpcyBhZGFwdG9yIG1ha2VzIHRoZSBmdW5jdGlvbnMgaGF2ZSBhIHVuaWZvcm0gcmV0dXJuIHR5
cGUuCi10ZW1wbGF0ZTx0eXBlbmFtZSBBcmNoaXZlQ2xhc3M+IHN0YXRpYyBSZWZQdHI8QXJjaGl2
ZT4gYXJjaGl2ZUZhY3RvcnlDcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQordGVtcGxhdGU8dHlwZW5hbWUgQXJjaGl2ZUNsYXNzPiBzdGF0aWMgUmVmUHRyPEFyY2hp
dmU+IGFyY2hpdmVGYWN0b3J5Q3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIEFyY2hpdmVDbGFzczo6Y3JlYXRlKHVybCwg
YnVmZmVyKTsKIH0KQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBBcmNoaXZlRmFjdG9yeTo6aXNBcmNo
aXZlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICByZXR1cm4gIW1pbWVUeXBl
LmlzRW1wdHkoKSAmJiBhcmNoaXZlTUlNRVR5cGVzKCkuY29udGFpbnMobWltZVR5cGUpOwogfQog
Ci1SZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwg
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQorUmVmUHRyPEFyY2hp
dmU+IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgaWYgKCFkYXRh
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9BcmNoaXZlRmFjdG9yeS5oCmluZGV4IDIxZDIzNjVjZjhkOWQ5MDFlZmU3YWFkNTUyYmYz
ZGE0MDY5ZmU0MGQuLjU1NjQ1MTVjOWUwZDlkMDMzYjc5MGM3NDcyODVhMjU4NTNhYmUwMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaApAQCAt
MzQsMTIgKzM0LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQXJjaGl2ZUZhY3Rv
cnkgewogcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzQXJjaGl2ZU1JTUVUeXBlKGNvbnN0IFN0
cmluZyYpOwotICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgc3RhdGljIFJl
ZlB0cjxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJL
bm93bkFyY2hpdmVNSU1FVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZl
SGFzaD4mKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L0FyY2hpdmVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNo
aXZlUmVzb3VyY2UuY3BwCmluZGV4IGZjMjBkYTNkYTAzMmNiZWY3NGYyZTljODQyOGFjYjRlZTM3
YmVmMjMuLjA3MzgzOTRhODI4NzE0YWEwYjkwZWU3NTA3OWQ0ODZmNWIwZTg2OTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcApAQCAt
MzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBBcmNoaXZlUmVz
b3VyY2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGlu
ZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQoraW5saW5lIEFyY2hpdmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291cmNlKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIDogU3Vic3RpdHV0ZVJl
c291cmNlKFVSTCB7IHVybCB9LCBSZXNvdXJjZVJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgV1RGTW92
ZShkYXRhKSkKICAgICAsIG1fbWltZVR5cGUobWltZVR5cGUpCiAgICAgLCBtX3RleHRFbmNvZGlu
Zyh0ZXh0RW5jb2RpbmcpCkBAIC00Miw3ICs0Miw3IEBAIGlubGluZSBBcmNoaXZlUmVzb3VyY2U6
OkFyY2hpdmVSZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJs
CiB7CiB9CiAKLVJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRl
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtNTQsNyArNTQsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNl
PiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNv
bgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFyY2hpdmVSZXNvdXJjZShkYXRhLnJlbGVhc2VO
b25OdWxsKCksIHVybCwgbWltZVR5cGUsIHRleHRFbmNvZGluZywgZnJhbWVOYW1lLCByZXNwb25z
ZSkpOwogfQogCi1SZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0
ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBy
ZXR1cm4gY3JlYXRlKFdURk1vdmUoZGF0YSksIHVybCwgcmVzcG9uc2UubWltZVR5cGUoKSwgcmVz
cG9uc2UudGV4dEVuY29kaW5nTmFtZSgpLCBTdHJpbmcoKSwgcmVzcG9uc2UpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaAppbmRleCAyMDll
OTcxN2FlYjA5MzYwZGIzOTI3ZTZlZmExZTViZjFjMmM5N2NhLi4wNTQ4ZWY3MjFlZmQyN2MwMGNl
OTNkMTIyNzBlY2VjNDZjMDJhZjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9BcmNoaXZlUmVzb3VyY2UuaApAQCAtMzQsOCArMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZSA6IHB1YmxpYyBTdWJzdGl0dXRlUmVzb3VyY2Ug
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVh
dGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwKKyAgICBzdGF0aWMgUmVmUHRy
PEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwKICAgICAgICAgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LAogICAgICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiA9IFJlc291cmNlUmVzcG9uc2UoKSk7
CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkSWdub3JlV2hlblVu
YXJjaGl2aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRJZ25vcmVXaGVuVW5hcmNoaXZpbmc7
IH0KIAogcHJpdmF0ZToKLSAgICBBcmNoaXZlUmVzb3VyY2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5j
b2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CisgICAgQXJjaGl2ZVJlc291cmNlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGlu
ZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAog
ICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgIFN0cmluZyBtX3RleHRFbmNvZGluZzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHAKaW5kZXggZjVlYzRkZDY3ZjdkZjhkOWRhMjA5YjQwZTIzYzA0MzliNmU2OGIwMy4uNzExNTBj
YmRkODk2OWU2YWYwMjg2ODRiNmJmNmNiYzBhNTBiMmZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTI0OCwx
MiArMjQ4LDEyIEBAIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiBtYWluUmVzb3VyCiAgICAgcmV0dXJuIGFyY2hpdmU7
CiB9CiAKLVJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUo
U2hhcmVkQnVmZmVyJiBkYXRhKQorUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIHJldHVy
biBjcmVhdGUoVVJMKCksIGRhdGEpOwogfQogCi1SZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1Jl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgVVJM
JiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBMT0coQXJjaGl2ZXMsICJM
ZWdhY3lXZWJBcmNoaXZlIC0gQ3JlYXRpbmcgZnJvbSByYXcgZGF0YSIpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKaW5kZXgg
ZDA5ZWM5Zjc1YWJhMTM2YTg2MzM5ZWI0ZDg2YWJkODI3N2M0ZmYwNC4uNWEwN2IxMGI0YmU2Zjg2
MjAxMWE3ODJhN2RlZDIzNjc1OTI0MzYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaApAQCAtNDEsOCArNDEsOCBAQCBzdHJ1
Y3QgU2ltcGxlUmFuZ2U7CiBjbGFzcyBMZWdhY3lXZWJBcmNoaXZlIGZpbmFsIDogcHVibGljIEFy
Y2hpdmUgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TGVnYWN5V2Vi
QXJjaGl2ZT4gY3JlYXRlKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBjcmVhdGUoU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVk
QnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPExlZ2Fj
eVdlYkFyY2hpdmU+IGNyZWF0ZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmIG1haW5SZXNvdXJjZSwg
VmVjdG9yPFJlZjxBcmNoaXZlUmVzb3VyY2U+PiYmIHN1YnJlc291cmNlcywgVmVjdG9yPFJlZjxM
ZWdhY3lXZWJBcmNoaXZlPj4mJiBzdWJmcmFtZUFyY2hpdmVzKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShOb2RlJiwgRnVuY3Rpb248
Ym9vbChGcmFtZSYpPiYmIGZyYW1lRmlsdGVyID0geyB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFtZSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5k
ZXggOTkzYzJiOGU4MzBkYzNkNzVjNWFkMzE5YmJhZmU5ZGY0NWM1MDEwZS4uZDAxMzlmODdhMDZm
OTY5NzhiNzQ3N2U5ZjQ5OTljMzRlYTlmODYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xMDYsNyArMTA2LDcg
QEAgUmVmPE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUoKQogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE1IVE1MQXJjaGl2ZSk7CiB9CiAKLVJlZlB0cjxNSFRNTEFyY2hpdmU+IE1I
VE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGRhdGEpCitS
ZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICAvLyBGb3Igc2VjdXJpdHkgcmVh
c29ucyB3ZSBvbmx5IGxvYWQgTUhUTUwgcGFnZXMgZnJvbSBsb2NhbCBVUkxzLgogICAgIGlmICgh
TGVnYWN5U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCh1cmwucHJv
dG9jb2woKS50b1N0cmluZygpKSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBSZWZQdHI8TUhUTUxBcmNo
aXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVyJiBk
YXRhKQogICAgIHJldHVybiBtYWluQXJjaGl2ZTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gTUhU
TUxBcmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQorUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSkK
IHsKICAgICBWZWN0b3I8UGFnZVNlcmlhbGl6ZXI6OlJlc291cmNlPiByZXNvdXJjZXM7CiAgICAg
UGFnZVNlcmlhbGl6ZXIgcGFnZVNlcmlhbGl6ZXIocmVzb3VyY2VzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgKaW5kZXggM2QyZGI3
Yzk2MDAyZWJlNjg0YjJiZWY4ZjFlYTllMmU5Nzk0YTU4OS4uMmRmZTg3ZTgyZTdhNGRjZTBmMzQx
YzM2MTk0M2M5OTAyMDVjOGRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgKQEAgLTM4LDE0ICszOCwxNCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIE1IVE1MUGFyc2VyOwogY2xhc3MgUGFnZTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE1IVE1MQXJj
aGl2ZSBmaW5hbCA6IHB1YmxpYyBBcmNoaXZlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1I
VE1MQXJjaGl2ZT4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFJlZlB0cjxNSFRNTEFyY2hpdmU+IGNy
ZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPE1IVE1M
QXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAot
ICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7Cisg
ICAgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBnZW5lcmF0ZU1IVE1MRGF0YShQ
YWdlKik7CiAKICAgICB2aXJ0dWFsIH5NSFRNTEFyY2hpdmUoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4IDY2NWU2
OWNhNzcxNGU0NDlhZmU0Y2E2OGE3MjQxNTIzMGQxMDliMTQuLmU1MTg2ZWZiMGI0ZmE3MGNiNjA5
MzFmNDg0ZTUwMGNjMTBlMDBiY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIGJv
b2wgc2tpcExpbmVzVW50aWxCb3VuZGFyeUZvdW5kKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyJiBs
aW5lUmVhZGVyLCBjb24KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU1IVE1MUGFyc2VyOjpNSFRN
TFBhcnNlcihTaGFyZWRCdWZmZXIqIGRhdGEpCitNSFRNTFBhcnNlcjo6TUhUTUxQYXJzZXIoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICA6IG1fbGluZVJlYWRlcihkYXRhLCAiXHJc
biIpCiB7CiB9CkBAIC0yMTUsNyArMjE1LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhU
TUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAg
ICAgICAgTE9HX0VSUk9SKCJJbnZhbGlkIGVuY29kaW5nIGZvciBNSFRNTCBwYXJ0LiIpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgYXV0byBjb250ZW50QnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGF1dG8gY29u
dGVudEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIC8v
IEZJWE1FOiB0aGUgVVJMIGluIHRoZSBNSU1FIGhlYWRlciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ug
c2hvdWxkIHJlc29sdmUgaXQgaWYgaXQgaXMuCiAgICAgLy8gVGhlIHNwZWNzIG1lbnRpb25zIDUg
d2F5cyB0byByZXNvbHZlIGEgVVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3
I3NlY3Rpb24tNQogICAgIC8vIElFIGFuZCBGaXJlZm94IChVTk1odCkgc2VlbSB0byBnZW5lcmF0
ZSBvbmx5IGFic29sdXRlIFVSTHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxQYXJzZXIuaAppbmRleCAxZTliZDRkNzc2N2VlMzkxYTAwMjJmNzE3NDhm
MDBiODVjODFiMjVmLi4wZDYwNDM0M2YzZDdhZDE3OGNjMjIwMDNjOTc5YzIyZTUwYTNiOTllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2Vy
LmgKQEAgLTQyLDExICs0MiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBcmNoaXZl
UmVzb3VyY2U7CiBjbGFzcyBNSFRNTEFyY2hpdmU7CiBjbGFzcyBNSU1FSGVhZGVyOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTUhU
TUxQYXJzZXIgewogcHVibGljOgotICAgIGV4cGxpY2l0IE1IVE1MUGFyc2VyKFNoYXJlZEJ1ZmZl
ciopOworICAgIGV4cGxpY2l0IE1IVE1MUGFyc2VyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsK
IAogICAgIFJlZlB0cjxNSFRNTEFyY2hpdmU+IHBhcnNlQXJjaGl2ZSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5jcHAKaW5kZXggOTdjZDRkZmZkMTg4YzI4MTExZmQ2OWFjMGRiYTMzOGE2NzMzMzVhNC4uZGRk
MGIxYjg5YjFkODcyYmI0MjcyN2VlNzhkOGZkNjM5ZTRiODk0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNw
cApAQCAtNDAsNyArNDAsNyBAQCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBs
aWNhdGlvbk1hbmlmZXN0KENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcQogewogfQogCi12b2lk
IENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAg
IGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QuaAppbmRleCA2NGIxNGQ1ZjY1ZmZmYzg1NTRkZjQ2NjVjNzU5MTZmMzRkMWQ1NDZh
Li4zNzk4YTliNGQ5MDEzY2ZkZWE2ZjU2ZmJkZjAwMTVhZjg5NDc1NzAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0
LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8c3RydWN0IEFw
cGxpY2F0aW9uTWFuaWZlc3Q+IHByb2Nlc3MoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3Qg
VVJMJiBkb2N1bWVudFVSTCwgRG9jdW1lbnQqID0gbnVsbHB0cik7CiAKIHByaXZhdGU6Ci0gICAg
dm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAg
ICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVjb2Rlci5wdHIoKTsgfQogICAgIHZvaWQgc2V0RW5jb2Rp
bmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Q1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5jcHAKaW5kZXggOWQyZGM3MzY0ODAyZDBkNjJhNjU5MWRlNjg5YTVhN2EyNDQz
MDUxMS4uMzhhMmUxN2YwZDA2YzhhYzk4ZGUyNGIxZTUyYjhlNjBlOTI0MTIwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcApA
QCAtOTcsNyArOTcsNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJv
bShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgICAgIHNhdmVQYXJzZWRTdHls
ZVNoZWV0KCpzaGVldC5tX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSk7CiB9CiAKLXZvaWQgQ2FjaGVk
Q1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVl
dDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAg
ICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCmluZGV4IGQzN2ZhZmFjYzAxMjJj
ODc1NDBmNDY0YjllNTYxNjBjY2FlNDY5ZjkuLmU2NTVjNjllM2VkYjYwOTUwMjM5Y2NlNDU0NWYw
OTZiNTI2NTZkZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29u
c3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4dFJlc291cmNlRGVj
b2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsgfQotICAgIHZvaWQg
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGVz
dHJveURlY29kZWREYXRhKCkgZmluYWw7CiAKICAgICB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25z
dCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEZvbnQuY3BwCmluZGV4IGY5YWQ3NzEzYzYwM2E2YTBhNTZiY2EyNzljZTgyNTA2NjZhMzIw
ZmEuLmQyYmMyODIxNDc5YzU5YTIzMjNlNGY2NWNkOTRiNjNiNDIzNzM2NDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9p
ZCBDYWNoZWRGb250OjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmIGNsaWVudCkK
ICAgICAgICAgc3RhdGljX2Nhc3Q8Q2FjaGVkRm9udENsaWVudCY+KGNsaWVudCkuZm9udExvYWRl
ZCgqdGhpcyk7CiB9CiAKLXZvaWQgQ2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQg
Q2FjaGVkRm9udDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEp
IHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKQEAgLTk1LDcgKzk1
LDcgQEAgU3RyaW5nIENhY2hlZEZvbnQ6OmNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25z
dAogICAgIHJldHVybiB1cmwoKS5mcmFnbWVudElkZW50aWZpZXIoKS50b1N0cmluZygpOwogfQog
Ci1ib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIqIGRhdGEpCitib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoYXJl
ZEJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAoIW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAh
ZXJyb3JPY2N1cnJlZCgpICYmICFpc0xvYWRpbmcoKSAmJiBkYXRhKSB7CiAgICAgICAgIGJvb2wg
d3JhcHBpbmc7CkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVDdXN0
b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVybiBtX2Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuZ2V0KCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhPiBDYWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBieXRlcywgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uLCBi
b29sJiB3cmFwcGluZykKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBD
YWNoZWRGb250OjpjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXImIGJ5dGVzLCBjb25z
dCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQogewogICAgIFJlZlB0
ciBidWZmZXIgPSB7ICZieXRlcyB9OwogICAgIHdyYXBwaW5nID0gIWNvbnZlcnRXT0ZGVG9TZm50
SWZOZWNlc3NhcnkoYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5oCmluZGV4IDE1NGRiOGNiYWJmM2Q1YTM4ZTA5NjFhY2I1NWNlYWNmZjJmMjk3M2EuLjEzNDY2
Y2M5OWQwZDE5Y2JmM2Q4ZWYzZGZiZDk2ZjM0ZDBmODU0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2xvYWRJbml0aWF0
ZWQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9t
U3RyaW5nJiByZW1vdGVVUkkpOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpOworICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlQ3Vz
dG9tRm9udERhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9u
LCBib29sJiB3cmFwcGluZyk7CiAgICAgc3RhdGljIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1E
YXRhRnJvbUN1c3RvbURhdGEoRm9udEN1c3RvbVBsYXRmb3JtRGF0YSYsIGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRl
eHQmKTsKIAogICAgIHZpcnR1YWwgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERl
c2NyaXB0aW9uJiwgY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJLCBib29sIHN5bnRoZXRpY0Jv
bGQsIGJvb2wgc3ludGhldGljSXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CkBA
IC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBGb250UGxhdGZvcm1EYXRh
IHBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wg
Ym9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKIAotICAgIGJv
b2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSk7Cisg
ICAgYm9vbCBlbnN1cmVDdXN0b21Gb250RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEpOwogCiBwcml2
YXRlOgogICAgIFN0cmluZyBjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3Q7CkBAIC03
NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBz
ZXRCb2R5RGF0YUZyb20oY29uc3QgQ2FjaGVkUmVzb3VyY2UmKSBmaW5hbCB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CiAKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVu
dCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIq
LCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExv
YWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCA3
YzAxYzhjYzIzMTE3ODZjNjI0ZjQ4NWVkZWY2OTM1ZmI3ZWZhNWZiLi45NDYyNzk1MjBkMGRhNDQ2
MjJjNmFjZDM2NjYyMjg4MTA1ZTgxOTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTQ2OCw3ICs0NjgsNyBAQCBpbmxpbmUgdm9pZCBDYWNoZWRJ
bWFnZTo6Y2xlYXJJbWFnZSgpCiAgICAgbV91cGRhdGVJbWFnZURhdGFDb3VudCA9IDA7CiB9CiAK
LXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgbV9kYXRhID0gZGF0YS5tYWtlQ29u
dGlndW91cygpOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsKQEAgLTUyMywx
NCArNTIzLDE0IEBAIGJvb2wgQ2FjaGVkSW1hZ2U6OnNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRh
KCkgY29uc3QKICAgICByZXR1cm4gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0VXBkYXRl
SW1hZ2VEYXRhVGltZSkuc2Vjb25kcygpIDwgdXBkYXRlSW1hZ2VEYXRhQmFja29mZkludGVydmFs
c1tpbnRlcnZhbF07CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBDYWNoZWRJ
bWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29u
c3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVk
ZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKIHsKICAgICBpZiAo
IWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICghaXNQb3N0U2NyaXB0UmVz
b3VyY2UoKSkKICAgICAgICAgcmV0dXJuIGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAjaWYgUExB
VEZPUk0oTUFDKSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0
U2NyaXB0RGF0YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpKS5n
ZXQoKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50SW1hZ2U6
OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0
ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQogICAgIC8vIExvYWRpbmcgdGhlIGltYWdlIHNob3Vs
ZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGNvbnZl
cnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01
NTUsNyArNTU1LDcgQEAgRW5jb2RlZERhdGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdl
RGF0YShib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lk
IENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9p
ZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVy
aW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChkYXRhKTsK
QEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIENhY2hlZEltYWdlOjp1cGRhdGVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRl
RGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5n
KGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQordm9pZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAg
ICAgbV9kYXRhID0gY29udmVydGVkRGF0YUlmTmVlZGVkKGRhdGEpOwogICAgIGlmIChtX2RhdGEp
IHsKQEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIENhY2hlZEltYWdlOjpmaW5pc2hMb2FkaW5nKGNv
bnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogdm9pZCBDYWNo
ZWRJbWFnZTo6ZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCkKIHsKICAgICBpZiAobV9p
bWFnZSkgewotICAgICAgICAvLyBMZXQgdGhlIEltYWdlIGtub3cgdGhhdCB0aGUgU2hhcmVkQnVm
ZmVyIGhhcyBiZWVuIHJlamlnZ2VkLCBzbyBpdCBjYW4gbGV0IGdvIG9mIGFueSByZWZlcmVuY2Vz
IHRvIHRoZSBoZWFwLWFsbG9jYXRlZCByZXNvdXJjZSBidWZmZXIuCisgICAgICAgIC8vIExldCB0
aGUgSW1hZ2Uga25vdyB0aGF0IHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGhhcyBiZWVuIHJl
amlnZ2VkLCBzbyBpdCBjYW4gbGV0IGdvIG9mIGFueSByZWZlcmVuY2VzIHRvIHRoZSBoZWFwLWFs
bG9jYXRlZCByZXNvdXJjZSBidWZmZXIuCiAgICAgICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVt
LzI0Mjc1NjE3KTogSXQgd291bGQgYmUgYmV0dGVyIGlmIHdlIGNvdWxkIHNvbWVob3cgdGVsbCB0
aGUgSW1hZ2UncyBkZWNvZGVyIHRvIHN3YXAgaW4gdGhlIG5ldyBjb250ZW50cyB3aXRob3V0IGRl
c3Ryb3lpbmcgYW55dGhpbmcuCiAgICAgICAgIG1faW1hZ2UtPmRlc3Ryb3lEZWNvZGVkRGF0YSh0
cnVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmlu
ZGV4IGQ1MTNlMTZjYmE1YTk3MDdjMzNhZmM3OTM5MTUxODY2ZmE0MzhhNWYuLjA4M2Y5MmY4ODgy
NzZlZWRhODk5MTIwMzFkMjQ0OWE5NjhlMjY1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5oCkBAIC02OSw4ICs2OSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlt
YWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UgJiYgbV9pbWFnZS0+
aGFzUmVsYXRpdmVXaWR0aCgpOyB9CiAgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkg
Y29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZUhlaWdodCgpOyB9
CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
LSAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
b3ZlcnJpZGU7CiAKICAgICBlbnVtIFNpemVUeXBlIHsKICAgICAgICAgVXNlZFNpemUsCkBAIC0x
MjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92
ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGREZWZlclVwZGF0ZUltYWdlRGF0YSgpIGNvbnN0Owot
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQo
Y29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBjb252ZXJ0ZWREYXRhSWZOZWVkZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSkgY29uc3Q7CiAgICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0
YVN0YXR1cyB1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZvaWQg
dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRl
OwpAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjaGFuZ2VkSW5SZWN0KGNv
bnN0IEltYWdlJiwgY29uc3QgSW50UmVjdCopOwogICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGUoY29uc3QgSW1hZ2UmKTsKIAotICAgIHZvaWQgdXBkYXRlQnVmZmVySW50ZXJuYWwoY29u
c3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICB2b2lkIGRpZFJlcGxhY2VTaGFyZWRCdWZm
ZXJDb250ZW50cygpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA5MDBiZDMzMjhhNjRiYTc3MmU2YzgwMTFh
YmFhNWU2MTFjNjQ2NTVmLi43MWUxNjA4MmZmZTY1NWQxMTFmMTY5OTBkMTIzMDUzNWJlYWNiZjk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgQ2FjaGVkUmF3UmVzb3VyY2U6OkNhY2hlZFJhd1Jlc291
cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFR5cGUgdHlwZSwKICAgICBBU1NF
UlQoaXNNYWluT3JNZWRpYU9ySWNvbk9yUmF3UmVzb3VyY2UoKSk7CiB9CiAKLXN0ZDo6b3B0aW9u
YWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNy
ZW1lbnRhbERhdGFDaHVuayhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0CitzdGQ6Om9w
dGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRl
SW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkg
Y29uc3QKIHsKICAgICBzaXplX3QgcHJldmlvdXNEYXRhTGVuZ3RoID0gZW5jb2RlZFNpemUoKTsK
ICAgICBpZiAoIWRhdGEgfHwgZGF0YS0+c2l6ZSgpIDw9IHByZXZpb3VzRGF0YUxlbmd0aCkKQEAg
LTU2LDcgKzU2LDcgQEAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVk
UmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUMKICAgICByZXR1cm4gZGF0YS0+
Z2V0U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNv
dXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhKQogewogICAgIC8vIFNraXAgYW55IHVwZGF0ZUJ1ZmZlcnMgdHJpZ2dlcmVkIGZyb20gbmVz
dGVkIHJ1bmxvb3BzLiBXZSdsbCBoYXZlIHRoZSBjb21wbGV0ZSBidWZmZXIgaW4gZmluaXNoTG9h
ZGluZy4KICAgICBpZiAobV9pbkluY3JlbWVudGFsRGF0YU5vdGlmeSkKQEAgLTk2LDcgKzk2LDcg
QEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwg
bGVuZ3RoKTsKIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25z
dCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykK
K3ZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewog
ICAgIGlmIChtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5KSB7CiAgICAgICAgIC8vIFdlIG1heSBn
ZXQgaGVyZSBzeW5jaHJvbm91c2x5IGZyb20gdXBkYXRlQnVmZmVyKCkgaWYgdGhlIGNhbGxiYWNr
IHRoZXJlIGVuZHMgdXAgc3Bpbm5pbmcgYSBydW5sb29wLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAppbmRleCA1N2ZkN2FiNWMxMDBkYzA5YWRm
MjZlYzRjYmFjNDUxNGYzNmY3NWZmLi5hNzg2NWY4YWQxNzhhZWZiMzIyMGE1NmRjZmYxOTU5OTNj
Zjk1YWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaApAQCAtNTEsOSArNTEsOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0
ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZl
cihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgZmluYWw7Ci0gICAgdm9p
ZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIGZpbmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBib29s
IHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKQEAgLTY2
LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVk
UmVzb3VyY2UoKSBvdmVycmlkZTsKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYWxsb3dFbmNvZGVkRGF0YVJlcGxhY2VtZW50OyB9
CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBjYWxjdWxhdGVJbmNy
ZW1lbnRhbERhdGFDaHVuayhjb25zdCBTaGFyZWRCdWZmZXIqKSBjb25zdDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVu
ayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKikgY29uc3Q7CiAgICAgdm9pZCBub3RpZnlD
bGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCk7CiAgICAgCiAjaWYgVVNFKFFVSUNLX0xPT0spCkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPFJlZGlyZWN0UGFpciwgMCwgQ3Jhc2hPbk92ZXJmbG93LCAwPiBtX3JlZGly
ZWN0Q2hhaW47CiAKICAgICBzdHJ1Y3QgRGVsYXllZEZpbmlzaExvYWRpbmcgewotICAgICAgICBS
ZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgfTsKICAgICBzdGQ6Om9wdGlvbmFs
PERlbGF5ZWRGaW5pc2hMb2FkaW5nPiBtX2RlbGF5ZWRGaW5pc2hMb2FkaW5nOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDU1Njk2
NDNjZDVlNjg5N2EzYzU4ZmI0NjIzNDU0NmYwNmRhMGFhMWEuLjlkZTBhMDRjZDVlYzVmM2ZhZDJm
YjE2ZDdiMzIyYzg1OGEzOGE2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQgQ2FjaGVkUmVzb3Vy
Y2U6OmNoZWNrTm90aWZ5KGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKICAgICAg
ICAgY2xpZW50LT5ub3RpZnlGaW5pc2hlZCgqdGhpcywgbWV0cmljcyk7CiB9CiAKLXZvaWQgQ2Fj
aGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKQordm9pZCBDYWNo
ZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKQog
ewogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGlj
eTo6QnVmZmVyRGF0YSk7CiB9CkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJj
ZTo6dXBkYXRlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQpCiAgICAgQVNTRVJUKGRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEp
OwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1
ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkUmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsK
ICAgICBjaGVja05vdGlmeShtZXRyaWNzKTsKQEAgLTkxNSw3ICs5MTUsNyBAQCB2b2lkIENhY2hl
ZFJlc291cmNlOjpDYWxsYmFjazo6dGltZXJGaXJlZCgpCiAKICNpZiBFTkFCTEUoU0hBUkVBQkxF
X1JFU09VUkNFKQogCi12b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6
dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlm
ICghbV9kYXRhKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDIxOGQ3NGYyNzc2YTk2NWZjZWE0OGI2MWEzMjVmOTcy
OGE3OTBkZDkuLmM5ODJkZDY5MzdhMGJjMmJmMzhjNDI2MTI2ZmZlNmU3OGM3OTY0NzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC00OSw3ICs0
OSw3IEBAIGNsYXNzIENvb2tpZUphcjsKIGNsYXNzIE1lbW9yeUNhY2hlOwogY2xhc3MgTmV0d29y
a0xvYWRNZXRyaWNzOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7
CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCkBAIC0xMTIsOSArMTEyLDkgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2
aXJ0dWFsIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAg
dmlydHVhbCBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkg
Y29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lk
IGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMpOwogCiAgICAgdm9pZCBzZXRSZXNvdXJjZUVy
cm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7IG1fZXJyb3IgPSBlcnJvcjsgfQpAQCAt
MjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJMb2FkZXIoKTsKIAotICAg
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhLmdldCgpOyB9CisgICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVj
ZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdmlydHVhbCB2b2lk
IHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtMjg0LDcgKzI4
NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9u
ZyBsb25nIC8qIGJ5dGVzU2VudCAqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qIHRvdGFsQnl0ZXNU
b0JlU2VudCAqLykgeyB9CiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShT
aGFyZWRCdWZmZXImKTsKICNlbmRpZgogCiAgICAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcjsgfQpAQCAtMzM2LDcgKzMzNiw3
IEBAIHByb3RlY3RlZDoKICAgICBIYXNoQ291bnRlZFNldDxDYWNoZWRSZXNvdXJjZUNsaWVudCo+
IG1fY2xpZW50czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBtX29yaWdp
bmFsUmVxdWVzdDsgLy8gTmVlZGVkIGJ5IFBpbmcgbG9hZHMuCiAgICAgUmVmUHRyPFN1YnJlc291
cmNlTG9hZGVyPiBtX2xvYWRlcjsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
bV9kYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKIAogcHJpdmF0ZToKICAg
ICBNb25vdG9uaWNUaW1lIG1fbGFzdERlY29kZWRBY2Nlc3NUaW1lOyAvLyBVc2VkIGFzIGEgInRo
cmFzaCBndWFyZCIgaW4gdGhlIGNhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcAppbmRleCBiMGY3NmE1MDk2MTBmNjcxMDU3YmVlYmYw
YTBiOWE2MDFjYTgyMjJiLi5kYjQzMTYwN2FlNTYzODMwMzgwMGRkMjU5YzEwMzRjZDA5MGZjZmUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVu
dC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgU3RyaW5nIENhY2hlZFNWR0RvY3VtZW50OjplbmNvZGlu
ZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAK
LXZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZFNW
R0RvY3VtZW50OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkg
ewogICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBmcmFtZSBiZWNhdXNl
IHRoZSBuZXcgZG9jdW1lbnQgYmVsb25ncyB0byB0aGUgcGFyZW50IFVzZUVsZW1lbnQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCmluZGV4IGIw
MTJiYTk4ZWVkZjczMmMwODJjMzYzYjBjYmUxMzAzNDc0YzMwNDkuLjQ0NWU0ZjlmNDJjM2MyNzQw
Nzk3NmE2NGU5MTU0MDdmOGI1MzRkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBTdHJpbmcgZW5j
b2RpbmcoKSBjb25zdCBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0
ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZWNvZGVyLmdl
dCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
b3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVm
UHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAppbmRleCA5Y2YwNDM3MTk0YThhMmZjYTVlNTI1
YzdiZmY5ZmU4ZTk4YTUwYzMyLi5kMmMxZGU0N2VmYjc4MTM5OGY0NDM4YjdjYTRlYTI2MGUyMjE5
NzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9u
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3Bw
CkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERh
dGEoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKQogICAgICAgICBpZiAoIW1fZXh0ZXJuYWxT
VkdGb250RWxlbWVudCB8fCAhZmlyc3RGb250RmFjZShyZW1vdGVVUkkpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoYXV0byBjb252ZXJ0ZWRGb250ID0gY29udmVydFNW
R1RvT1RGRm9udCgqbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50KSkKLSAgICAgICAgICAgIG1fY29u
dmVydGVkRm9udCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZl
cnRlZEZvbnQudmFsdWUoKSkpOworICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250LnZhbHVlKCkpKTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQgPSBudWxscHRyOwogICAg
ICAgICAgICAgbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCmluZGV4IGExNWVhZDBlMTY0MDkwMjdl
ZjkyMDRlYjkzM2I0ZjA1NGMzODU4MjMuLjM1M2QzZGU2M2IwNjI4NjEzYWJhZjc3N2ZlYjI1M2M1
YjYyNDkwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
VkdGb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQu
aApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIFNWR0ZvbnRFbGVtZW50KiBtYXliZUlu
aXRpYWxpemVFeHRlcm5hbFNWR0ZvbnRFbGVtZW50KGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVS
SSk7CiAgICAgU1ZHRm9udEZhY2VFbGVtZW50KiBmaXJzdEZvbnRGYWNlKGNvbnN0IEF0b21TdHJp
bmcmIHJlbW90ZVVSSSk7CiAKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9j
b252ZXJ0ZWRGb250OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udmVydGVkRm9udDsK
ICAgICBSZWZQdHI8U1ZHRG9jdW1lbnQ+IG1fZXh0ZXJuYWxTVkdEb2N1bWVudDsKICAgICBTVkdG
b250RWxlbWVudCogbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50OwogICAgIGNvbnN0IFJlZjxjb25z
dCBTZXR0aW5ncz4gbV9zZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNjcmlwdC5jcHAKaW5kZXggMWRmNWM0YjE3ZWVlYmNiNGU0YmJmZTRhZjg4OTFhZGVjYjZh
Yjk2MC4uNjJhMTZlODZiMzIxOTNkOGU1NmQ2MTkyZjc3ZTliYzZmNDA4ZTliYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTk2LDcgKzk2LDcg
QEAgdW5zaWduZWQgQ2FjaGVkU2NyaXB0OjpzY3JpcHRIYXNoKCkKICAgICByZXR1cm4gbV9zY3Jp
cHRIYXNoOwogfQogCi12b2lkIENhY2hlZFNjcmlwdDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFy
ZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQg
Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0
YSkgewogICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCmluZGV4IDc1YmU0ZGI3MTU3OWUzMWFh
ZGE5NzA2OWQ5YmZmYzJjN2U2MzQzMjEuLjg2NTFlNjM5YWQ5MDYxNzI4NTYxYzMyNGJmYTdhZjRj
Zjk3ZjZkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
Y3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0
cmluZyYpIGZpbmFsOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IGZpbmFsOwogICAgIGNv
bnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29u
c3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAg
dm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRh
KCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRU
cmFjay5jcHAKaW5kZXggNTQyNjZkZDkwODE5YzM0ZTkxNTA4NDM0ODk0MmU5MTNhZGU4MWVkNC4u
MGM4NDI4YmI5OWRiNmRmYjE2YTM0ODEzNGMzODI2ODM2Y2NlNTQwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAKQEAgLTQwLDEwICs0MCwx
MCBAQCBDYWNoZWRUZXh0VHJhY2s6OkNhY2hlZFRleHRUcmFjayhDYWNoZWRSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRAogewogfQogCi12b2lkIENhY2hlZFRleHRUcmFj
azo6ZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBDYWNoZWRU
ZXh0VHJhY2s6OmRvVXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRh
dGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5n
UG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRp
Z3VvdXMoKSA6IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigpOworICAgIG1fZGF0YSA9
IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4oKTsK
ICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNo
ZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xp
ZW50cyk7CkBAIC01MSwxMyArNTEsMTMgQEAgdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmRvVXBkYXRl
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICAgICAgY2xpZW50LT5kZXByZWNh
dGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKCp0aGlzKTsKIH0KIAotdm9pZCBDYWNoZWRUZXh0
VHJhY2s6OnVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hl
ZFRleHRUcmFjazo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEpCiB7CiAgICAgZG9VcGRhdGVCdWZmZXIoJmRhdGEpOwogICAgIENhY2hlZFJlc291cmNlOjp1
cGRhdGVCdWZmZXIoZGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpmaW5pc2hMb2Fk
aW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQordm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNz
KQogewogICAgIGRvVXBkYXRlQnVmZmVyKGRhdGEpOwogICAgIENhY2hlZFJlc291cmNlOjpmaW5p
c2hMb2FkaW5nKGRhdGEsIG1ldHJpY3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5oCmluZGV4IGY0NjMxNzgzMjFlZGM3Y2E4Njk3MGNmNGFkZGE0MDg5
NjkyOTY4ODUuLjA5YjQzMzlhMzdiNjczYjJhYzRmZGFlMTQ2YjI5Yjk2NDc3N2ZjZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgKQEAgLTM1LDEw
ICszNSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5j
b2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCB1cGRh
dGVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92
ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCi0gICAg
dm9pZCBkb1VwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIqKTsKKyAgICB2b2lkIGRvVXBk
YXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRYU0xTdHlsZVNoZWV0LmNwcAppbmRleCBiOWE2NTg3NTNjZTlmN2VjMzYzM2YxYTJmNzRlN2Nj
OWVhMzk4NTc0Li5kMmVmZjJkMmQ0MGM5Mjc3Mzg3NTZjNGE4ZjBjYmI5MzQzYmUxMGFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQu
Y3BwCkBAIC02MSw3ICs2MSw3IEBAIFN0cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGlu
ZygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCk7CiB9CiAK
LXZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVk
WFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRh
dGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCmluZGV4IGMw
NGRkNGYxNmNmM2I3ZWNhMjU4OTEwYjllZmFmNDEyNTRlMmQ3MjguLmJkMjMxMjE0ZjJkMjBiYTM5
NjQ0NjAzNjZlMDQxYjk0MTM1YWM0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgU3RyaW5nIGVu
Y29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogdGV4
dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsg
fQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
CiAgICAgU3RyaW5nIG1fc2hlZXQ7CiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1f
ZGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2Fj
aGVNb25pdG9yQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVN
b25pdG9yQ29jb2EuaAppbmRleCBkMDIwYWMzZGM4MDg0NGE2N2EwN2NiNWIxZDE1OWY3MWMwY2Rj
ZDE0Li5jZTUyY2ZlYmQ3NjFlNTY0NzVhMjAxZTgxNDM4NTMzNGVhNGRiYTVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCkBA
IC0zMiwxNyArMzIsMTcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVzcG9u
c2UqIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3Mg
RGlza0NhY2hlTW9uaXRvciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgbW9uaXRvckZpbGVC
YWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQQUw6OlNlc3Npb25J
RCwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7Ci0gICAgc3RhdGljIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiB0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVk
UmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNw
b25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKIAogcHJpdmF0ZToKICAgICBEaXNrQ2FjaGVN
b25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmKTsKIAotICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIHJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChT
aGFyZWRCdWZmZXImKTsKIAogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1
ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KICAgICBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KaW5k
ZXggOTNlZTk2Mzc0ZjAzYmEzMTI0NDNkMjgxYzUyYTQ4NDA2OWRmMmEzMS4uZmE0YjkwM2JlZjkz
OTQ4MWMyMmVhN2RmNTUxZThiNTVlN2UwZTUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCkBAIC00MiwxMyArNDIsMTMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMg
d2UnbGwgdHJ5IHRvIHdhaXQgZm9yIGEgcmVzb3VyY2UgdG8gYmUgZGlzayBjYWNoZWQgYmVmb3Jl
IHdlIGZvcmdldCB0aGUgcmVxdWVzdC4KIHN0YXRpYyBjb25zdCBkb3VibGUgZGlza0NhY2hlTW9u
aXRvclRpbWVvdXQgPSAyMDsKIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IERpc2tD
YWNoZU1vbml0b3I6OnRyeUdldEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRS
ZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hlZFJlc3BvbnNlKQorUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0RmlsZUJhY2tlZFNoYXJlZEJ1ZmZl
ckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgY2FjaGVkUmVz
cG9uc2UpCiB7CiAgICAgYXV0byBkYXRhID0gX0NGQ2FjaGVkVVJMUmVzcG9uc2VHZXRNZW1NYXBw
ZWREYXRhKGNhY2hlZFJlc3BvbnNlKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
KTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiB9CiAKIHZvaWQgRGlz
a0NhY2hlTW9uaXRvcjo6bW9uaXRvckZpbGVCYWNraW5nU3RvcmVDcmVhdGlvbihjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKQEAgLTExMyw3ICsxMTMsNyBAQCBEaXNrQ2Fj
aGVNb25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgUEFMOjpTZXNzaW9uSQogICAgIF9DRkNhY2hlZFVSTFJlc3BvbnNlU2V0QmVjYW1lRmlsZUJh
Y2tlZENhbGxCYWNrQmxvY2soY2FjaGVkUmVzcG9uc2UsIGJsb2NrVG9SdW4sIGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCkpOwogfQogCi12b2lkIERpc2tDYWNoZU1vbml0b3I6OnJlc291cmNlQmVj
YW1lRmlsZUJhY2tlZChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmaWxlQmFja2VkQnVmZmVyKQor
dm9pZCBEaXNrQ2FjaGVNb25pdG9yOjpyZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoU2hhcmVkQnVm
ZmVyJiBmaWxlQmFja2VkQnVmZmVyKQogewogICAgIGF1dG8qIHJlc291cmNlID0gTWVtb3J5Q2Fj
aGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChtX3Jlc291cmNlUmVxdWVzdCwgbV9z
ZXNzaW9uSUQpOwogICAgIGlmICghcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCmluZGV4IGZmNDBjNDE2Y2M2MTZlOTJiMTMwN2Jh
YmI3ZTM0M2IzN2U1NDYwMDAuLmU4YmUxYjIxMzc2YTA1ODY5ZDBlNjI1Y2Q4NGJiZWEyYzhlYTI4
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ci5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBib29sIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgYm9vbCBkaWRSZWNlaXZl
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIGJvb2wgZGlkUmVjZWl2ZUJ1ZmZlcihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgYm9vbCBkaWRGaW5pc2hMb2FkaW5n
KCk7CiAgICAgdm9pZCBkaWRGYWlsKCk7CiAKQEAgLTYwLDEyICs2MCwxMiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZpbmlzaFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0
ZXImKSBmaW5hbCB7IH07CiAgICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbFVwZGF0aW5n
KFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKICAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRT
dGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsOwotICAgIHZvaWQgcHJldmll
d0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBTaGFyZWRC
dWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQ
cmV2aWV3Q29udmVydGVyJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwog
ICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRpbmcoUHJldmlld0NvbnZl
cnRlciYpIGZpbmFsOwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZhaWxDb252ZXJ0aW5n
KFByZXZpZXdDb252ZXJ0ZXImKSBmaW5hbDsKIAogICAgIC8vIFByZXZpZXdDb252ZXJ0ZXJQcm92
aWRlcgotICAgIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJl
dmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVy
Kik+JiYpIGZpbmFsOworICAgIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252
ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmKSBmaW5hbDsKICAgICB2b2lkIHByb3ZpZGVQYXNzd29y
ZEZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYpIGZpbmFsOwogCiAgICAgUmVmUHRyPFByZXZpZXdDb252
ZXJ0ZXI+IG1fY29udmVydGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLm1tCmluZGV4IDIzYzk3MjQyYmI5ZmI3NTNmYWI3NDM3YWY3ZTA4YTA5
ZGE5NjIxZjkuLjM1ZjZjMTQ5OWE1NGI0MDAwOTNiYzJlODkyZDc5ODM3NjAzZDZjMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KQEAg
LTYzLDcgKzYzLDcgQEAgc3RhdGljIFJlZjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBtYWtl
Q2xpZW50KGNvbnN0IFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGMKICAgICByZXR1cm4gZW1wdHlD
bGllbnQoKTsKIH0KIAotYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBpZiAobV9maW5pc2hlZExvYWRpbmdEYXRhSW50b0NvbnZlcnRlcikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6
cHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJiBjCiAg
ICAgfSk7CiB9CiAKLXZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRp
ZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEp
Cit2b2lkIExlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0
YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKICAgICBhdXRvIHJlc291cmNlTG9hZGVyID0gbV9yZXNvdXJjZUxvYWRlci5nZXQoKTsKICAg
ICBpZiAoIXJlc291cmNlTG9hZGVyKQpAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgTGVnYWN5UHJl
dmlld0xvYWRlcjo6cHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29u
dmVydGVyJiBjCiAgICAgbV9jbGllbnQtPmRpZFJlcXVlc3RQYXNzd29yZChXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJvdmlkZU1h
aW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYgY29udmVydGVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNl
Rm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoY29udmVydGVyLCAmY29udmVydGVyID09
IG1fY29udmVydGVyKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihtX29yaWdpbmFsRGF0YS5nZXQo
KS5nZXQoKSk7CkBAIC0yMzUsNyArMjM1LDcgQEAgTGVnYWN5UHJldmlld0xvYWRlcjo6fkxlZ2Fj
eVByZXZpZXdMb2FkZXIoKSA9IGRlZmF1bHQ7CiBMZWdhY3lQcmV2aWV3TG9hZGVyOjpMZWdhY3lQ
cmV2aWV3TG9hZGVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogICAgIDogbV9jb252ZXJ0ZXIgeyBQcmV2aWV3Q29udmVydGVyOjpjcmVh
dGUocmVzcG9uc2UsICp0aGlzKSB9CiAgICAgLCBtX2NsaWVudCB7IG1ha2VDbGllbnQobG9hZGVy
LCBtX2NvbnZlcnRlci0+cHJldmlld0ZpbGVOYW1lKCksIG1fY29udmVydGVyLT5wcmV2aWV3VVRJ
KCkpIH0KLSAgICAsIG1fb3JpZ2luYWxEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9Cisg
ICAgLCBtX29yaWdpbmFsRGF0YSB7IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKSB9
CiAgICAgLCBtX3Jlc291cmNlTG9hZGVyIHsgbG9hZGVyIH0KICAgICAsIG1fc2hvdWxkRGVjaWRl
UG9saWN5QmVmb3JlTG9hZGluZyB7IGxvYWRlci5mcmFtZSgpLT5zZXR0aW5ncygpLnNob3VsZERl
Y2lkZVBvbGljeUJlZm9yZUxvYWRpbmdRdWlja0xvb2tQcmV2aWV3KCkgfQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRWRpdG9yQ2xpZW50LmgKaW5kZXggY2VkNTYwOWMwMDVhNTM1MmIzM2QxMTk4ZjQ1Yjk4YmE4
NGE3MWQyYy4uYTEyMDQ0YzQxNmQwZDQ4NmFmZWM5OWUxZDBlMTBlZmFmMWY5ZGM4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0zOSwxMyArMzksMTMgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogZW51bSBjbGFzcyBET01QYXN0ZUFjY2Vzc0NhdGVnb3J5IDogdWludDhfdDsKIGVu
dW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiAKLWNsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZy
YWdtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgS2V5Ym9hcmRFdmVu
dDsKIGNsYXNzIE5vZGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogY2xhc3MgVGV4dENoZWNrZXJDbGll
bnQ7CiBjbGFzcyBWaXNpYmxlU2VsZWN0aW9uOwpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIHNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKGNvbnN0IFNpbXBsZVJh
bmdlJiwgY29uc3QgU2ltcGxlUmFuZ2UmKSA9IDA7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlw
ZSAqLywgY29uc3QgU3RyaW5nJiAvKiBwcmVmZXJyZWRGaWxlTmFtZSAqLywgUmVmPFNoYXJlZEJ1
ZmZlcj4mJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRl
bnRUeXBlICovLCBjb25zdCBTdHJpbmcmIC8qIHByZWZlcnJlZEZpbGVOYW1lICovLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0
YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVudGlmaWVyICovLCBjb25zdCBT
dHJpbmcmIC8qIGNvbnRlbnRUeXBlICovLCBjb25zdCBTdHJpbmcmIC8qIGZpbGVQYXRoICovKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0b3I8U2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhPiYmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2ht
ZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8pIHsgfQpAQCAtOTks
NyArOTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVu
dFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVu
dFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNG
b3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3Vs
dCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDdiOTYxZGIwNDA0YzFkMTk3MzYwNzRlNGE5
ZDZjMWRjOTQyMTIyN2YuLjk3ZTAxYjVjNjk3NmQ2N2YwZjNiZGZjZWRlYzZhYmNmMDQ4NTJjNDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTk3Myw3ICsxOTczLDcgQEAgY29uc3QgU3RyaW5nJiBQ
YWdlOjp1c2VyU3R5bGVTaGVldCgpIGNvbnN0CiAgICAgLy8gYW5kIHdoYXQgc2hvdWxkIGhhcHBl
biB3aGVuIGl0IGZpbmlzaGVzIGxvYWRpbmcsIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0CiAgICAg
Ly8gdG8gd2hlbiB0aGUgbG9hZCBldmVudCBmaXJlcywgd2hlbiBEb2N1bWVudDo6Y2xvc2UgaXMg
Y2FsbGVkLCBhbmQgd2hlbgogICAgIC8vIGxheW91dC9wYWludCBhcmUgYWxsb3dlZCB0byBoYXBw
ZW4uCi0gICAgYXV0byBkYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKKyAgICBhdXRvIGRhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJTdHlsZVNoZWV0UGF0aCk7
CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCAwMWUxNmRkOThmNGRmMGNlYjIx
ZGY5MDhkMWY0MGM2MjRhYWU0YzI3Li4wMjAwMWFiMzQzMDE4YTczMjU1OTk4ZmM0NzRjZWJmYzQ5
ZjhjODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMTk2LDcg
KzE5Niw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKEZyYW1lKiBmcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBTdHJpbmcgdGV4dCA9IGFjY3VtdWxhdG9y
LnNlcmlhbGl6ZU5vZGVzKCpkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCksIFNlcmlhbGl6ZWRO
b2Rlczo6U3VidHJlZUluY2x1ZGluZ05vZGUpOwotICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVy
bCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1JTUVUeXBlKCksIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKHRleHQsIFBBTDo6VW5lbmNvZGFibGVIYW5kbGlu
Zzo6RW50aXRpZXMpKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50
LT5zdWdnZXN0ZWRNSU1FVHlwZSgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2Rpbmcu
ZW5jb2RlKHRleHQsIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKSB9KTsKICAg
ICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIAogICAgIGZvciAoYXV0byYgbm9kZSA6IG5vZGVz
KSB7CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NT
U3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBVUkwKICAgICAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBjaGVjayB3aGV0aGVyIGEgY2hhcnNldCBoYXMgYmVlbiBzcGVj
aWZpZWQgYW5kIGlmIG5vbmUgd2FzIGZvdW5kIGFkZCBvbmUuCiAgICAgICAgIFBBTDo6VGV4dEVu
Y29kaW5nIHRleHRFbmNvZGluZyhzdHlsZVNoZWV0LT5jb250ZW50cygpLmNoYXJzZXQoKSk7CiAg
ICAgICAgIEFTU0VSVCh0ZXh0RW5jb2RpbmcuaXNWYWxpZCgpKTsKLSAgICAgICAgbV9yZXNvdXJj
ZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3MsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgUEFMOjpVbmVuY29k
YWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOworICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQo
eyB1cmwsICJ0ZXh0L2NzcyJfcywgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVu
Y29kZShjc3NUZXh0LnRvU3RyaW5nKCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRp
ZXMpKSB9KTsKICAgICAgICAgbV9yZXNvdXJjZVVSTHMuYWRkKHVybCk7CiAgICAgfQogfQpAQCAt
MjczLDcgKzI3Myw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMo
Q2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBpbWFnCiAgICAgaWYgKCFpbWFnZSB8
fCBpbWFnZS0+aW1hZ2UoKSA9PSAmSW1hZ2U6Om51bGxJbWFnZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gaW1hZ2VSZW5kZXJlciA/IGltYWdl
LT5pbWFnZUZvclJlbmRlcmVyKGltYWdlUmVuZGVyZXIpLT5kYXRhKCkgOiAwOworICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhID0gaW1hZ2VSZW5kZXJlciA/IGltYWdlLT5p
bWFnZUZvclJlbmRlcmVyKGltYWdlUmVuZGVyZXIpLT5kYXRhKCkgOiAwOwogICAgIGlmICghZGF0
YSkKICAgICAgICAgZGF0YSA9IGltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZVNlcmlhbGl6ZXIuaAppbmRleCBiZmNiZTdiOGRiZmQ0OWY3OWQxYTAwYzgwMDRlYWRl
MjljNDgwODIxLi5mZjNlMmUxZmNiMDYxYTRmZmZjNWRlZmQ0YzJkMTgwYWY0OWJmNzcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoK
ICAgICBzdHJ1Y3QgUmVzb3VyY2UgewogICAgICAgICBVUkwgdXJsOwogICAgICAgICBTdHJpbmcg
bWltZVR5cGU7Ci0gICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhOwor
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIH07CiAKICAgICBleHBsaWNp
dCBQYWdlU2VyaWFsaXplcihWZWN0b3I8UmVzb3VyY2U+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEu
aAppbmRleCAzZWRkOWM3MWJiMjdlNTBmZGZkZmFjZWUyNzFlZmVmYjdjYjI5MWY1Li42OGIwZGQy
YzMwNmI3OTQ1MzFkMjliZDE0MGRjYjQyYjQ4ZTI3MzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NoYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRh
LmgKQEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0IFNoYXJlRGF0YSB7CiAKIHN0cnVjdCBSYXdGaWxl
IHsKICAgICBTdHJpbmcgZmlsZU5hbWU7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGZpbGVEYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbGVEYXRhOwogfTsKICAg
ICAKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hh
cmVEYXRhUmVhZGVyLmNwcAppbmRleCBkNjgwNWEzZWU1MzRjMzY2NGYyNTk0OTU5M2RmYjViNDkx
M2E1NGYyLi43NTgzNmI4NzkxNDNiNjBhN2YzNTE5NzAzMjA3YjZhZDNkOGQ0Zjg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQg
U2hhcmVEYXRhUmVhZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGludCBsb2FkSW5kZXgsIGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUpCiAKICAgICBSYXdGaWxlIGZpbGU7CiAgICAgZmlsZS5maWxlTmFtZSA9
IGZpbGVOYW1lOwotICAgIGZpbGUuZmlsZURhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRh
KCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBmaWxlLmZpbGVEYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGFycmF5
QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICBtX3NoYXJl
RGF0YS5maWxlcy5hcHBlbmQoV1RGTW92ZShmaWxlKSk7CiAgICAgbV9maWxlc1JlYWRTb0Zhcisr
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAppbmRleCAzZDgwZDdhMWQ0MjQ1
ODUyMGJkNTQzOGVmMzZkOGE1N2NiNWQ0ZTdlLi43OWEyMzUzNTVmMWU4ZWY4NjE1MzUyZTYzOWM4
YzYzMThmNDAzNzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LZXllZENv
ZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKQEAgLTMx
LDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBLZXllZERlY29kZXIgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBj
b25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBmaW5pc2hFbmNvZGluZygpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgPSAwOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
ICAgICB2b2lkIGVuY29kZUVudW0oY29uc3QgU3RyaW5nJiBrZXksIFQgdmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaAppbmRleCBlMzgwNmU4N2RmNzlh
M2Q5YjVjYWUxMjE0ZGU2NmFhMmE2NTg0N2RiLi5mYzY2YzM2NWEyZjI5YTRjNzhlNjA2MTllNDdh
NzFjNzI1OGQ4ZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5
aW5nTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5h
Z2VyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPE5vd1Bs
YXlpbmdJbmZvPiBtX25vd1BsYXlpbmdJbmZvOwogICAgIHN0cnVjdCBBcnR3b3JrQ2FjaGUgewog
ICAgICAgICBTdHJpbmcgc3JjOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZURh
dGE7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CiAg
ICAgfTsKICAgICBzdGQ6Om9wdGlvbmFsPEFydHdvcmtDYWNoZT4gbV9ub3dQbGF5aW5nSW5mb0Fy
dHdvcms7CiAgICAgYm9vbCBtX3NldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uIHsgZmFsc2UgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKaW5kZXggNTk2YWZiOGU5MTg4OGMy
YWE2NzJmYzBlNWQwNmNiNjQ0OWRlZGE3ZC4uYmExNzg3MjQ3MWFlMjg2NGY3NzA4MmM0N2Q2N2Yy
NjNlZDVkZjk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKQEAgLTkz
LDcgKzkzLDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHR5cGUpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpvcHRp
b25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlmIChhdXRvKiBzdHJhdGVneSA9
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKSkKICAgICAgICAgcmV0
dXJuIHN0cmF0ZWd5LT5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHR5cGUsIG5hbWUo
KSwgY29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCA0ZTI3
ODJkOWJhY2I5ZDAxOWQxMjAwMjBkZmYwMTE2ZTI1MjMyZDA0Li5mMmViOTcyMDE5YTQwMmViODhj
ZWZmOGY0N2MzZTg2M2ZlMzQwMmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5o
CkBAIC02MSwxMyArNjEsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgSFdORF9fKiBIV05EOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRHJhZ0RhdGE7CiBj
bGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBQYXN0ZWJvYXJkU3RyYXRlZ3k7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1
Y3QgU2ltcGxlUmFuZ2U7CiAKQEAgLTgzLDE0ICs4MywxNCBAQCBzdHJ1Y3QgUGFzdGVib2FyZFdl
YkNvbnRlbnQgewogICAgIFdFQkNPUkVfRVhQT1JUIH5QYXN0ZWJvYXJkV2ViQ29udGVudCgpOwog
ICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7
Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3Jt
YXQ7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7
Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zv
cm1hdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0Owor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7
CiAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGll
bnRUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGll
bnREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNl
bmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKQEAgLTEy
MCwxNyArMTIwLDE3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2UgewogICAgIFdFQkNPUkVfRVhQ
T1JUIH5QYXN0ZWJvYXJkSW1hZ2UoKTsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOwogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2Vi
QXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZl
Rm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogI2VuZGlmCiAjaWYgIVBMQVRG
T1JNKFdJTikKICAgICBQYXN0ZWJvYXJkVVJMIHVybDsKICNlbmRpZgogI2lmICEoUExBVEZPUk0o
R1RLKSB8fCBQTEFURk9STShXSU4pKQotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiByZXNvdXJjZURhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOwog
ICAgIFN0cmluZyByZXNvdXJjZU1JTUVUeXBlOwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5
cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERh
dGE7CisgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlm
CiAgICAgU3RyaW5nIHN1Z2dlc3RlZE5hbWU7CiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZTsKQEAg
LTE0NCw3ICsxNDQsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEJ1ZmZlciB7CiAgICAgU3RyaW5nIGNv
bnRlbnRPcmlnaW47CiAjZW5kaWYKICAgICBTdHJpbmcgdHlwZTsKLSAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwog
fTsKIAogLy8gRm9yIHJlYWRpbmcgZnJvbSB0aGUgcGFzdGVib2FyZC4KQEAgLTE1OSwxNiArMTU5
LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRoKGNvbnN0IFN0cmlu
ZyYsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFk
RmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBy
ZWFkSFRNTChjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWRJbWFnZShS
ZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUg
cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBy
ZWFkSW1hZ2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7
CiAgICAgdmlydHVhbCBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRs
ZSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpID0g
MDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVhbCBib29sIHJlYWRX
ZWJBcmNoaXZlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29s
IHJlYWRSVEZEKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29s
IHJlYWRSVEYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wg
cmVhZERhdGFCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRh
dGlvblNpemUgPSB7IH0pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFdlYkFyY2hpdmUoU2hh
cmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChTaGFyZWRCdWZmZXIm
KSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRSVEYoU2hhcmVkQnVmZmVyJikgPSAwOworICAg
IHZpcnR1YWwgYm9vbCByZWFkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVz
ZW50YXRpb25TaXplID0geyB9KSA9IDA7CiAjZW5kaWYKIH07CiAKQEAgLTE4Myw3ICsxODMsNyBA
QCBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIHZpcnR1YWwgflBhc3RlYm9hcmRG
aWxlUmVhZGVyKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCByZWFkRmlsZW5hbWUoY29u
c3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYgLyogdHlwZSAqLykgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwg
dm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKIH07CiAKIGNsYXNzIFBhc3RlYm9hcmQgewpAQCAtMzA5
LDcgKzMwOSw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5m
bz4gcGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3Q7CiAKICAgICBTdHJpbmcg
cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc3RkOjpvcHRpb25h
bDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBj
b25zdCBTdHJpbmcmIHR5cGUpOwogICAgIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3RyaW5n
JiB0aXRsZSk7CiAKICAgICBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQpAQCAtMzQxLDcgKzM0MSw3IEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIHZvaWQgYWRkSFRNTENsaXBib2FyZFR5cGVzRm9yQ29jb2FUeXBlKExpc3RI
YXNoU2V0PFN0cmluZz4mIHJlc3VsdFR5cGVzLCBjb25zdCBTdHJpbmcmIGNvY29hVHlwZSk7CiAg
ICAgU3RyaW5nIHJlYWRTdHJpbmdGb3JQbGF0Zm9ybVR5cGUoY29uc3QgU3RyaW5nJik7CiAgICAg
VmVjdG9yPFN0cmluZz4gcmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKTsKLSAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVj
ayhjb25zdCBTdHJpbmcmKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRm9y
VHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAppbmRleCAyMGNkNjFlNzEx
MjEzMjFjYzQ2ZDA3NzE5OTFhYWM1YWE0NzU1ODAyLi45ZDNmODdhOTExNGMzOGE1NGUzM2EwNWUy
Yjk4OTUyY2NmNjdhZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZEN1c3RvbURhdGEuY3BwCkBAIC0zMywxMyArMzMsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiBjb3B5UGxhdGZvcm1EYXRhKGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG90aGVyKQorc3RhdGljIHN0ZDo6dmFyaWFudDxTdHJp
bmcsIFJlZjxTaGFyZWRCdWZmZXI+PiBjb3B5UGxhdGZvcm1EYXRhKGNvbnN0IHN0ZDo6dmFyaWFu
dDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiYgb3RoZXIpCiB7CiAgICAgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihvdGhlcikpCiAgICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0
PFN0cmluZz4ob3RoZXIpIH07CiAKLSAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KG90aGVyKSkKLSAgICAgICAgcmV0dXJuIHsgc3RkOjpn
ZXQ8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihvdGhlcikuY29weVJlZigpIH07CisgICAg
aWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG90aGVyKSkKKyAg
ICAgICAgcmV0dXJuIHsgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG90aGVyKS5jb3B5UmVm
KCkgfTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC04MCw3ICs4MCw3IEBAIFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YShTdHJpbmcmJiBvcmlnaW4sIFZlY3RvcjxF
bnRyeT4mJiBkYXRhCiB7CiB9CiAKLVJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxTaGFyZWRCdWZm
ZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewog
ICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBjdXJyZW50Q3VzdG9tRGF0YVNlcmlhbGl6YXRpb25WZXJz
aW9uID0gMTsKIApAQCAtODksNyArODksNyBAQCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
UGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiAgICAgZW5j
b2RlciA8PCBtX29yaWdpbjsKICAgICBlbmNvZGVyIDw8IHNhbWVPcmlnaW5DdXN0b21TdHJpbmdE
YXRhKCk7CiAgICAgZW5jb2RlciA8PCBvcmRlcmVkVHlwZXMoKTsKLSAgICByZXR1cm4gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVy
U2l6ZSgpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZW5jb2Rlci5idWZmZXIo
KSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOwogfQogCiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyJiYgZGVjb2RlcikKQEAgLTEyNCw3ICsxMjQsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihXVEY6OlBl
cnNpc3RlbgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVBhc3RlYm9hcmRDdXN0b21EYXRhIFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK1Bhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IHJldHVybiBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKGJ1ZmZlci5kZWNvZGVyKCkpOwogfQpAQCAt
MTM0LDcgKzEzNCw3IEBAIHZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OndyaXRlU3RyaW5nKGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBhZGRPck1vdmVFbnRy
eVRvRW5kKHR5cGUpLnBsYXRmb3JtRGF0YSA9IHsgdmFsdWUgfTsKIH0KIAotdm9pZCBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6d3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OndyaXRl
RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAg
ICBhZGRPck1vdmVFbnRyeVRvRW5kKHR5cGUpLnBsYXRmb3JtRGF0YSA9IHsgV1RGTW92ZShkYXRh
KSB9OwogfQpAQCAtMjAyLDE0ICsyMDIsMTQgQEAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gUGFz
dGVib2FyZEN1c3RvbURhdGE6OnNhbWVPcmlnaW5DdXN0b21TdHJpbmdEYXRhKCkgY29uc3QKICAg
ICByZXR1cm4gY3VzdG9tRGF0YTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpyZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9k
YXRhKSB7CiAgICAgICAgIGlmIChlbnRyeS50eXBlICE9IHR5cGUpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCi0gICAgICAgICAgICByZXR1cm4g
c3RkOjpnZXQ8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEp
LmNvcHlSZWYoKTsKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJl
ZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpn
ZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkuY29weVJlZigpOwogCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTI2NSwxMSArMjY1LDExIEBAIHZvaWQg
UGFzdGVib2FyZEN1c3RvbURhdGE6OmZvckVhY2hDdXN0b21TdHJpbmcoRnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmIHR5cGUsCiAgICAgfQogfQogCi12b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpmb3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiYgZGF0YSk+JiYgZnVuY3Rpb24pIGNvbnN0Cit2b2lkIFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpmb3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+
JiBkYXRhKT4mJiBmdW5jdGlvbikgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9k
YXRhKSB7CiAgICAgICAgIGF1dG8mIGRhdGEgPSBlbnRyeS5wbGF0Zm9ybURhdGE7Ci0gICAgICAg
IGlmICgoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRhdGEpICYmICFzdGQ6OmdldDxT
dHJpbmc+KGRhdGEpLmlzTnVsbCgpKSB8fCBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4oZGF0YSkpCisgICAgICAgIGlmICgoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxTdHJpbmc+KGRhdGEpICYmICFzdGQ6OmdldDxTdHJpbmc+KGRhdGEpLmlzTnVsbCgp
KSB8fCBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihkYXRhKSkKICAg
ICAgICAgICAgIGZ1bmN0aW9uKGVudHJ5LnR5cGUsIGRhdGEpOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCmluZGV4IGM2Y2JjNzkw
YzdlMDVmMzE0ODIwNWZjNWExY2M1YTQ2ODNjNmQ2MTcuLjJiZTgxZDI5MzhhM2RiZDA5MDI2Y2E2
ZWM2NGFjMzI4N2U2YWJjMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRDdXN0b21EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZEN1c3RvbURhdGEuaApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAK
IGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhIHsKIHB1YmxpYzoKQEAgLTQ4LDcgKzQ4LDcgQEAg
cHVibGljOgogCiAgICAgICAgIFN0cmluZyB0eXBlOwogICAgICAgICBTdHJpbmcgY3VzdG9tRGF0
YTsKLSAgICAgICAgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiBwbGF0Zm9ybURhdGE7CisgICAgICAgIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFy
ZWRCdWZmZXI+PiBwbGF0Zm9ybURhdGE7CiAgICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFBh
c3RlYm9hcmRDdXN0b21EYXRhKCk7CkBAIC02MCwxNiArNjAsMTYgQEAgcHVibGljOgogICAgIGNv
bnN0IFN0cmluZyYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAgICB2b2lk
IHNldE9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbikgeyBtX29yaWdpbiA9IG9yaWdpbjsgfQog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNo
YXJlZEJ1ZmZlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVyKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZm
ZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURh
dGEgZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVBlcnNpc3RlbmNlRGVjb2RlcihX
VEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiYpOwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoY29u
c3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OworICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKICAgICBTdHJp
bmcgcmVhZFN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwogCiAg
ICAgdm9pZCB3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFs
dWUpOwotICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CisgICAgdm9pZCB3cml0ZURhdGEoY29uc3QgU3RyaW5n
JiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdJ
bkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAog
ICAgIHZvaWQgY2xlYXIoKTsKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBm
b3JFYWNoVHlwZShGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBjb25zdDsKICAgICB2
b2lkIGZvckVhY2hQbGF0Zm9ybVN0cmluZyhGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBkYXRhKT4mJikgY29uc3Q7Ci0gICAgdm9pZCBmb3JFYWNoUGxhdGZv
cm1TdHJpbmdPckJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
c3RkOjp2YXJpYW50PFN0cmluZywgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSk+
JiYpIGNvbnN0OworICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rp
b248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJl
ZjxTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYpIGNvbnN0OwogICAgIHZvaWQgZm9yRWFjaEN1c3Rv
bVN0cmluZyhGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBk
YXRhKT4mJikgY29uc3Q7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggOWIxZDRiOTVlZGZiZGZh
MDU5NTZhMzk5MDcxYWI5ZmQ5MTgzYjkwNy4uYjRkOWM1NzRkY2FlN2UxZDA2MzY2Njg3ZmQzNWFi
ODI0NGE3ODBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0
ZWd5LmgKQEAgLTMxLDExICszMSwxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
b2xvcjsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7
CiBjbGFzcyBQYXN0ZWJvYXJkQ29udGV4dDsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwog
Y2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9h
cmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMOwpAQCAtNTIsNyArNTIsNyBAQCBwdWJs
aWM6CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKLSAg
ICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0
aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFN0
cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAg
IHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKSA9IDA7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgaW50NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCop
ID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5
cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0Kikg
PSAwOworICAgIHZpcnR1YWwgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlcios
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBz
ZXRVUkwoY29uc3QgUGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRD
b2xvcihjb25zdCBDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgaW50NjRfdCBzZXRTdHJpbmdGb3JU
eXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAt
NzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXJsU3RyaW5nU3VpdGFi
bGVGb3JMb2FkaW5nKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogI2VuZGlmCiAgICAgdmlydHVhbCBTdHJp
bmcgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFs
IFVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0g
MDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBpbmZvcm1h
dGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7
CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBh
bGxQYXN0ZWJvYXJkSXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRf
dCBjaGFuZ2VDb3VudCwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC04Niw3ICs4
Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkVGV4dEZy
b21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1
YWwgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgd3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBTZWxlY3Rpb25EYXRhJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGlwYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogI2VuZGlmIC8vIFBMQVRGT1JNKEdU
SykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmlu
ZGV4IGI0NWNlMWY5MzhjYmE1MDY2MzhiNmE0MTIxZDc2NzM2M2Y4YmU1MjIuLjhlMmM4ZmI5MmQ5
NzJmZDQyMTYwMDdiYzg3Nzc1MmNmZDM0OGY4NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CiAKIGNsYXNzIFBhc3RlYm9hcmRXcml0ZXJEYXRhIGZpbmFsIHsKIHB1YmxpYzoK
QEAgLTUxLDE0ICs1MSwxNCBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAg
IFN0cmluZyBjb250ZW50T3JpZ2luOwogICAgICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRl
OwotICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2
ZUZvcm1hdDsKLSAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJU
RkRGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5S
VEZGb3JtYXQ7Ci0gICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5B
dHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
SW5XZWJBcmNoaXZlRm9ybWF0OworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5S
VEZERm9ybWF0OworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7
CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3Jt
YXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgICAgICBTdHJpbmcgZGF0
YUluU3RyaW5nRm9ybWF0OwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAg
ICAgICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsK
KyAgICAgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlm
CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1D
b250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRG
aWx0ZXIuaAppbmRleCAzZjQ4MzJhNWE2NThjMWNjN2MwYWExM2IyNmUwZWE0NzMzZTlkM2I3Li45
ZTcyZTQ0YTJlYWM0ZDhlZjczMGI5ODcxZDBlYzUwOGVkOWZhYzQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaApAQCAtMzQsNyArMzQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxh
dGZvcm1Db250ZW50RmlsdGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTU2
LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFkZERhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaW5p
c2hlZEFkZGluZ0RhdGEoKSA9IDA7Ci0gICAgdmlydHVhbCBSZWY8U2hhcmVkQnVmZmVyPiByZXBs
YWNlbWVudERhdGEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3QgPSAwOwogI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKICAgICB2aXJ0dWFsIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJs
b2NrSGFuZGxlcigpIGNvbnN0ID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCA1MjcwYzU5ODQzNTUxMDRmOTFhNWNlNTQyMjIz
YjQ0OWMyYjUxODlhLi44ZmU5MjRkZmU1NmJjM2M5OTY2NmViZjA0ZjczNTQwMTU1NWFhMzNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAtNDcs
MTQgKzQ3LDE0IEBAIHN0cnVjdCB3cGVfcGFzdGVib2FyZDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ29sb3I7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hh
cmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25E
YXRhOwogc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87
CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IFBsYXRmb3JtUGFzdGVib2FyZCB7CiBwdWJsaWM6CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgU3RyaW5nIHBsYXRmb3JtUGFzdGVib2FyZFR5cGVGb3JTYWZlVHlwZUZvckRP
TVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgZG9tVHlwZSwgSW5jbHVkZUltYWdlVHlwZXMg
PSBJbmNsdWRlSW1hZ2VUeXBlczo6Tm8pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRU
eXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJp
bmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGFsbFN0
cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwpAQCAtODYs
NyArODYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHdpbGwgcmV0dXJuIDAg
aWYgcGFzdGVib2FyZCBvd25lcnNoaXAgaGFzIGJlZW4gdGFrZW4gZnJvbSB1cy4KICAgICBXRUJD
T1JFX0VYUE9SVCBpbnQ2NF90IGNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRVUkwoY29u
c3QgUGFzdGVib2FyZFVSTCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0Q29sb3Io
Y29uc3QgQ29sb3ImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldFN0cmluZ0ZvclR5
cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CkBAIC05NCw3
ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBh
c3RlYm9hcmRJbWFnZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgcmVhZFVS
TChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IGludCBjb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmNwcAppbmRleCA5ZWI0YmRkZjA3Y2Y2MTY2YTU4NjBiYWMwNzQ2MjZkMjk1YWNiMzJi
Li5hNGUwODc1MDllNTk0ZDE4NzExMjVkMTNjOTk1M2M0ZTQzOTQ5MzdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcApAQCAtNjIsNyArNjIsNyBAQCBj
b25zdCBSZXNvdXJjZUVycm9yJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RXJyb3IoKSBjb25z
dAogICAgIHJldHVybiBtX3ByZXZpZXdFcnJvcjsKIH0KIAotY29uc3QgU2hhcmVkQnVmZmVyJiBQ
cmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgpIGNvbnN0Citjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBQcmV2aWV3Q29udmVydGVyOjpwcmV2aWV3RGF0YSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuICptX3ByZXZpZXdEYXRhLmdldCgpOwogfQpAQCAtODksNyArODksNyBAQCB2b2lkIFBy
ZXZpZXdDb252ZXJ0ZXI6OnVwZGF0ZU1haW5SZXNvdXJjZSgpCiAgICAgfSk7CiB9CiAKLXZvaWQg
UHJldmlld0NvbnZlcnRlcjo6YXBwZW5kRnJvbUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6YXBwZW5kRnJvbUJ1ZmZlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgd2hpbGUgKGJ1ZmZlci5zaXplKCkg
PiBtX2xlbmd0aEFwcGVuZGVkKSB7CiAgICAgICAgIGF1dG8gbmV3RGF0YSA9IGJ1ZmZlci5nZXRT
b21lRGF0YShtX2xlbmd0aEFwcGVuZGVkKTsKQEAgLTIzOCw3ICsyMzgsNyBAQCB2b2lkIFByZXZp
ZXdDb252ZXJ0ZXI6OnJlcGxheVRvQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmIGNsaWVu
dCkKICAgICBjbGllbnQucHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRpbmcoKnRoaXMp
OwogfQogCi12b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBQcmV2aWV3Q29udmVydGVyOjpkZWxlZ2F0ZURp
ZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAg
YXV0byBwcm90ZWN0ZWRUaGlzIHsgUmVmIHsgKnRoaXMgfSB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKaW5kZXggZjE0ZGUxZDkxNGE0Y2JjYTE1YTc1ZDZk
NWU1ZTBkY2I0YzRhOWY3Ni4uNWFlZGEzYjcyZjQwYmE1YWY3NDExMmMwMDQ1N2Y5NjZhN2EwM2I2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaApAQCAtNDgs
NyArNDgsNyBAQCBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyOwogc3RydWN0IFByZXZp
ZXdQbGF0Zm9ybURlbGVnYXRlIDogQ2FuTWFrZVdlYWtQdHI8UHJldmlld1BsYXRmb3JtRGVsZWdh
dGU+IHsKICAgICB2aXJ0dWFsIH5QcmV2aWV3UGxhdGZvcm1EZWxlZ2F0ZSgpID0gZGVmYXVsdDsK
IAotICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0
ZURpZEZpbmlzaExvYWRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkRmFp
bFdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogfTsKQEAgLTcxLDcgKzcxLDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwcmV2aWV3RmlsZU5hbWUoKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcHJldmlld1VUSSgpIGNvbnN0OwogICAg
IGNvbnN0IFJlc291cmNlRXJyb3ImIHByZXZpZXdFcnJvcigpIGNvbnN0OwotICAgIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgcHJldmlld0RhdGEoKSBjb25zdDsKKyAgICBjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBwcmV2aWV3RGF0YSgpIGNvbnN0OwogCiAgICAgdm9pZCBmYWlsZWRVcGRhdGlu
ZygpOwogICAgIHZvaWQgZmluaXNoVXBkYXRpbmcoKTsKQEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0
ZToKICAgICBib29sIGlzUGxhdGZvcm1QYXNzd29yZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBjb25zdDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgaXRlcmF0ZUNsaWVudHMo
VCYmIGNhbGxiYWNrKTsKLSAgICB2b2lkIGFwcGVuZEZyb21CdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CisgICAgdm9pZCBhcHBlbmRGcm9tQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKTsKICAgICB2b2lkIGRpZEFkZENsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50Jik7
CiAgICAgdm9pZCBkaWRGYWlsQ29udmVydGluZ1dpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9y
Jik7CiAgICAgdm9pZCBkaWRGYWlsVXBkYXRpbmcoKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcGxhdGZvcm1VbmxvY2tXaXRoUGFzc3dvcmQoY29uc3QgU3RyaW5nJik7
CiAKICAgICAvLyBQcmV2aWV3UGxhdGZvcm1EZWxlZ2F0ZQotICAgIHZvaWQgZGVsZWdhdGVEaWRS
ZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICB2b2lkIGRlbGVnYXRl
RGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAg
IHZvaWQgZGVsZWdhdGVEaWRGaW5pc2hMb2FkaW5nKCkgZmluYWw7CiAgICAgdm9pZCBkZWxlZ2F0
ZURpZEZhaWxXaXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xpZW50LmgKaW5kZXggMDRl
YTM2ODA2OTJiMjUyYTE5ODljMjZjYTIwNDIxMjc3N2FhM2I3Yi4uOWNlZTkzMzIwYjIzOGI0Y2Q3
M2NkZDJlMDMwMmMzYmY0ZGFkNjhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFByZXZpZXdDb252ZXJ0ZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3Ry
dWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQgOiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVy
dGVyQ2xpZW50PiB7CiAgICAgdmlydHVhbCB+UHJldmlld0NvbnZlcnRlckNsaWVudCgpID0gZGVm
YXVsdDsKQEAgLTQyLDcgKzQyLDcgQEAgc3RydWN0IFByZXZpZXdDb252ZXJ0ZXJDbGllbnQgOiBD
YW5NYWtlV2Vha1B0cjxQcmV2aWV3Q29udmVydGVyQ2xpZW50PiB7CiAgICAgdmlydHVhbCB2b2lk
IHByZXZpZXdDb252ZXJ0ZXJEaWRGaW5pc2hVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbFVwZGF0aW5nKFByZXZp
ZXdDb252ZXJ0ZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRT
dGFydENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBT
aGFyZWRCdWZmZXImIG5ld0RhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZl
cnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBuZXdEYXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0
ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVy
JikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdD
b252ZXJ0ZXJQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZl
cnRlclByb3ZpZGVyLmgKaW5kZXggODI3ODYzOTNmY2VkNzU0Yzg1ZjdiMjg5MTI1MmY1MTZiZWQw
ZDU0OS4uYjk4NmVlNDBkMTk3NTE3NGY1NGFkMjlhMTY4Y2FkZjE4OTQ1NmMzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgKQEAg
LTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFByZXZpZXdDb252ZXJ0
ZXJQcm92aWRlciA6IENhbk1ha2VXZWFrUHRyPFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcj4gewog
ICAgIHZpcnR1YWwgflByZXZpZXdDb252ZXJ0ZXJQcm92aWRlcigpID0gZGVmYXVsdDsKIAotICAg
IHZpcnR1YWwgdm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2
aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIq
KT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmll
d0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJv
dmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJikgPSAwOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5mby5oCmluZGV4IGExY2M3
Njk1YzBhNjNlZDc4N2UyMTBhN2M4Mjc3NzY3ZGNjZTcxYWYuLjFlMTJiOTU1NTgwMjkyYzAzYTU3
OGVmM2Y3OGIxNTdlZDVmZWMzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Byb21pc2VkQXR0YWNobWVudEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
cm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVm
ZmVyOwogCiBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IFByb21pc2VkQXR0YWNobWVu
dEluZm8gewogI2VuZGlmCiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsVHlwZXM7Ci0g
ICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7
CisgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKIAogICAg
IG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCmluZGV4IDZmNTMwZDEzMjliYmZjZTE2YTlkYTdhZDAxNTg5Y2E1MmVkMzA3
YTEuLjc2YmQxMWM4YTgzNDU0MzkyNTk1OTI4NGI1MGMxZDc5MDc2ZmExMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMzcsNjkgKzM3LDY5IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKTsKIH0KIAotUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihkYXRhLCBzaXplKSk7CiB9
CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZURhdGEpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhJiYgbWFwcGVkRmlsZURhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVk
QnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwogfQog
Ci1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUo
YnVmZmVyKSkpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShW
ZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZlY3RvcikKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3Zl
KHZlY3RvcikpKTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
RGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRl
ciYmIHByb3ZpZGVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKHByb3ZpZGVyKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFy
ZWRCdWZmZXIoKSA9IGRlZmF1bHQ7CitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0OwogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQorRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYm
IGZpbGVEYXRhKQogICAgIDogbV9zaXplKGZpbGVEYXRhLnNpemUoKSkKIHsKICAgICBtX3NlZ21l
bnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShmaWxlRGF0YSkpIH0p
OwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXIm
JiBwcm92aWRlcikKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCiAgICAgOiBtX3NpemUocHJvdmlk
ZXIuc2l6ZSgpKQogewogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNy
ZWF0ZShXVEZNb3ZlKHByb3ZpZGVyKSkgfSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVm
ZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK0ZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7CiAgICAgYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKICNpZiBVU0UoR1NUUkVB
TUVSKQotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3du
ZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1
ZmZlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIobWFwcGVkQnVm
ZmVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciht
YXBwZWRCdWZmZXIpKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoR3N0TWFwcGVk
T3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImIG1hcHBlZEJ1ZmZlcikKICAg
ICA6IG1fc2l6ZShtYXBwZWRCdWZmZXIuc2l6ZSgpKQogewogICAgIG1fc2VnbWVudHMuYXBwZW5k
KHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZSgmbWFwcGVkQnVmZmVyKSB9KTsKIH0KICNlbmRpZgog
Ci1zdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQorc3RhdGlj
IFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6ZV90IHNpemUpCiB7CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKICAgICBjb21iaW5lZERhdGEucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKQEAgLTEwOSwxOSArMTA5LDE5IEBAIHN0YXRpYyBWZWN0
b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50VmVjdG9yCiAgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKIH0KIAotUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKSBjb25zdAorUmVm
PFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6bWFrZUNvbnRpZ3VvdXMoKSBj
b25zdAogewogICAgIGlmIChtX2NvbnRpZ3VvdXMpCi0gICAgICAgIHJldHVybiBSZWYgeyAqc3Rh
dGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVy
Kj4odGhpcykpIH07CisgICAgICAgIHJldHVybiBSZWYgeyAqc3RhdGljX2Nhc3Q8U2hhcmVkQnVm
ZmVyKj4oY29uc3RfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4odGhpcykpIH07CiAgICAg
aWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
ICAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsK
KyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVu
dC5jb3B5UmVmKCkpOwogICAgIGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0
YShtX3NlZ21lbnRzLCBtX3NpemUpOwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKTsKIH0KIAotVmVjdG9yPHVpbnQ4X3Q+IFNo
YXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdAorVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YTsKICAgICBkYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSgpKTsKQEAgLTEzMSw3ICsx
MzEsNyBAQCBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0YSgpIGNvbnN0CiAg
ICAgcmV0dXJuIGRhdGE7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnRha2VE
YXRhKCkKK1ZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgp
CiB7CiAgICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9OwpA
QCAtMTQ2LDEzICsxNDYsMTMgQEAgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6dGFrZURh
dGEoKQogICAgIHJldHVybiBjb21iaW5lZERhdGE7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3
IFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdAorU2hhcmVk
QnVmZmVyRGF0YVZpZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEoc2l6ZV90
IHBvc2l0aW9uKSBjb25zdAogewogICAgIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkqIGVs
ZW1lbnQgPSBnZXRTZWdtZW50Rm9yUG9zaXRpb24ocG9zaXRpb24pOwogICAgIHJldHVybiB7IGVs
ZW1lbnQtPnNlZ21lbnQuY29weVJlZigpLCBwb3NpdGlvbiAtIGVsZW1lbnQtPmJlZ2luUG9zaXRp
b24gfTsKIH0KIAotY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBT
aGFyZWRCdWZmZXI6OmdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpb24pIGNvbnN0
Citjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpnZXRTZWdtZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0
aW9uKSBjb25zdAogewogICAgIFJFTEVBU0VfQVNTRVJUKHBvc2l0aW9uIDwgbV9zaXplKTsKICAg
ICBhdXRvIGNvbXBhcmF0b3IgPSBbXShjb25zdCBzaXplX3QmIHBvc2l0aW9uLCBjb25zdCBEYXRh
U2VnbWVudFZlY3RvckVudHJ5JiBlbnRyeSkgewpAQCAtMTYzLDcgKzE2Myw3IEBAIGNvbnN0IFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogU2hhcmVkQnVmZmVyOjpnZXRTZWdt
ZW50Rm9yUG9zaXRpb24oCiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKLVN0cmluZyBTaGFyZWRC
dWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKK1N0cmluZyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Ojp0b0hleFN0cmluZygpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVy
OwogICAgIGZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CkBAIC0xNzMsNyArMTcz
LDcgQEAgU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25zdAogICAgIHJldHVy
biBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLVJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8QXJyYXlCdWZm
ZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3QK
IHsKICAgICBhdXRvIGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZVVuaW5pdGlh
bGl6ZWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNpemUoKSksIDEpOwogICAgIGlmICghYXJyYXlC
dWZmZXIpIHsKQEAgLTE5Miw3ICsxOTIsNyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogICAgIHJldHVybiBhcnJheUJ1ZmZl
cjsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGRh
dGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBt
X3NlZ21lbnRzLnJlc2VydmVDYXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSArIGRhdGEubV9zZWdt
ZW50cy5zaXplKCkpOwpAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBl
bmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lz
dGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3QgbGVuZ3RoKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1fY29u
dGlndW91cyk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKQEAgLTIxMyw3ICsyMTMsNyBA
QCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBs
ZW5ndGgpCiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lkIFNo
YXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCit2b2lkIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewogICAgIEFT
U0VSVCghbV9jb250aWd1b3VzKTsKICAgICBhdXRvIGRhdGFTaXplID0gZGF0YS5zaXplKCk7CkBA
IC0yMjIsMTYgKzIyMiwxNiBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEpCiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12
b2lkIFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpj
bGVhcigpCiB7CiAgICAgbV9zaXplID0gMDsKICAgICBtX3NlZ21lbnRzLmNsZWFyKCk7CiAgICAg
QVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogewotICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IGNsb25lID0gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOworICAgIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcik7CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKQpAQCAtMjQxLDE0ICsyNDEsMTQgQEAgUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKICAgICByZXR1cm4gY2xv
bmU7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlv
bjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAordm9pZCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lk
KGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAogewogICAgIGF1dG8g
c2VnbWVudHMgPSBtX3NlZ21lbnRzOwogICAgIGZvciAoYXV0byYgc2VnbWVudCA6IHNlZ21lbnRz
KQogICAgICAgICBhcHBseShTcGFuIHsgc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQu
c2VnbWVudC0+c2l6ZSgpIH0pOwogfQogCi1ib29sIFNoYXJlZEJ1ZmZlcjo6c3RhcnRzV2l0aChj
b25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0Citib29sIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4
KSBjb25zdAogewogICAgIGlmIChwcmVmaXguZW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC0yNzAsNyArMjcwLDcgQEAgYm9vbCBTaGFyZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3Qg
U3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXpl
X3QgbGVuZ3RoKSBjb25zdAorVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIHsKICAgICBWZWN0b3I8
dWludDhfdD4gZGF0YTsKICAgICBpZiAob2Zmc2V0ID49IHNpemUoKSkKQEAgLTI5NywxMiArMjk3
LDEyIEBAIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnJlYWQoc2l6ZV90IG9mZnNldCwg
c2l6ZV90IGxlbmd0aCkgY29uc3QKICAgICByZXR1cm4gZGF0YTsKIH0KIAotdm9pZCBTaGFyZWRC
dWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3QKK3Zv
aWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXpl
X3QgbGVuZ3RoKSBjb25zdAogewogICAgIHJldHVybiBjb3B5VG8oZGVzdGluYXRpb24sIDAsIGxl
bmd0aCk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24s
IHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGxlbmd0aCkgY29uc3QKIHsKICAgICBBU1NFUlQobGVuZ3RoICsgb2Zmc2V0IDw9IHNpemUoKSk7
CiAgICAgaWYgKG9mZnNldCA+PSBzaXplKCkpCkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBTaGFy
ZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGxlbmd0aCkgY29uc3QKIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECi1ib29sIFNoYXJlZEJ1ZmZl
cjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHBvc2l0aW9u
ID0gMDsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3NlZ21lbnRzKSB7CkBAIC0z
NTQsMTIgKzM1NCwxMiBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQo
KSBjb25zdAogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKICNpZiAhVVNFKENGKQotdm9pZCBT
aGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKK3ZvaWQgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogewogfQog
I2VuZGlmCiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgb3RoZXIpIGNvbnN0Citib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6Om9wZXJhdG9yPT0o
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKHRo
aXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQwOCwxOSArNDA4LDE5IEBA
IGJvb2wgU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIp
IGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIoKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoKQogewog
ICAgIG1fY29udGlndW91cyA9IHRydWU7CiB9CiAKLUNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCitTaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkKIHsKICAgICBt
X3NpemUgPSBzZWdtZW50LT5zaXplKCk7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBXVEZN
b3ZlKHNlZ21lbnQpIH0pOwogICAgIG1fY29udGlndW91cyA9IHRydWU7CiB9CiAKLUNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBjb250aWd1b3VzQnVmZmVyKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikKIHsKICAgICBBU1NFUlQoY29u
dGlndW91c0J1ZmZlci0+aGFzT25lU2VnbWVudCgpIHx8IGNvbnRpZ3VvdXNCdWZmZXItPmlzRW1w
dHkoKSk7CiAgICAgbV9zaXplID0gY29udGlndW91c0J1ZmZlci0+c2l6ZSgpOwpAQCAtNDI5LDM2
ICs0MjksMzYgQEAgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cihSZWY8U2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWYKICAgICBtX2NvbnRpZ3VvdXMgPSB0
cnVlOwogfQogCi1Db250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
KEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKLSAgICA6IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKGRhdGEpKQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJiBkYXRhKQorICAgIDogRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3Zl
KGRhdGEpKQogewogICAgIG1fY29udGlndW91cyA9IHRydWU7CiB9CiAKLVJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1v
ZGUgbWFwcGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQor
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgbWFw
cGVkRmlsZU1vZGUsIE1heVVzZUZpbGVNYXBwaW5nIG1heVVzZUZpbGVNYXBwaW5nKQogewogICAg
IGlmIChtYXlVc2VGaWxlTWFwcGluZyA9PSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKSB7CiAgICAg
ICAgIGJvb2wgbWFwcGluZ1N1Y2Nlc3M7CiAgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwZWRGaWxlTW9kZSwgbWFwcGluZ1N1Y2Nl
c3MpOwogICAgICAgICBpZiAobWFwcGluZ1N1Y2Nlc3MpCi0gICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkp
KTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUo
bWFwcGVkRmlsZURhdGEpKSk7CiAgICAgfQogCiAgICAgYXV0byBidWZmZXIgPSBGaWxlU3lzdGVt
OjpyZWFkRW50aXJlRmlsZShmaWxlUGF0aCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKCpidWZmZXIpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZSgqYnVmZmVyKSk7CiB9CiAKLWNvbnN0IHVpbnQ4X3QqIENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmRhdGEoKSBjb25zdAorY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29u
c3QKIHsKICAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIHJldHVybiBtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPmRhdGEoKTsKIH0KIAotV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2RlciBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkg
Y29uc3QKK1dURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgU2hhcmVkQnVmZmVyOjpkZWNvZGVyKCkg
Y29uc3QKIHsKICAgICByZXR1cm4geyB7IGRhdGEoKSwgc2l6ZSgpIH0gfTsKIH0KQEAgLTU0Mywx
NCArNTQzLDE0IEBAIHNpemVfdCBEYXRhU2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJu
IHN0ZDo6dmlzaXQodmlzaXRvciwgbV9pbW11dGFibGVEYXRhKTsKIH0KIAotU2hhcmVkQnVmZmVy
QnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKK1NoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghYnVmZmVyKQogICAgICAg
ICByZXR1cm47CiAgICAgaW5pdGlhbGl6ZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAK
LVNoYXJlZEJ1ZmZlckJ1aWxkZXImIFNoYXJlZEJ1ZmZlckJ1aWxkZXI6Om9wZXJhdG9yPShSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK1NoYXJlZEJ1ZmZlckJ1aWxkZXImIFNoYXJlZEJ1
ZmZlckJ1aWxkZXI6Om9wZXJhdG9yPShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiB7CiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgbV9idWZmZXIgPSBudWxscHRy
OwpAQCAtNTczLDEyICs1NzMsMTIgQEAgdm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVyOjppbml0aWFs
aXplKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIGFwcGVuZChidWZmZXIpOwogfQog
Ci1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlKCkKK1JlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlKCkKIHsKLSAgICBy
ZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpIDogU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsKKyAgICByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci5yZWxlYXNlTm9uTnVs
bCgpIDogRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiB9CiAKLVJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlQXNDb250aWd1b3VzKCkK
K1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2VBc0NvbnRpZ3VvdXMo
KQogewogICAgIHJldHVybiB0YWtlKCktPm1ha2VDb250aWd1b3VzKCk7CiB9CkBAIC01OTMsNyAr
NTkzLDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlQXNB
cnJheUJ1ZmZlcigpCiB2b2lkIFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcigpCiB7
CiAgICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpOworICAgICAgICBtX2J1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOwogfQogCiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVm
PERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQpAQCAtNjEwLDE2ICs2MTAsMTYgQEAgU2hhcmVkQnVm
ZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFW
aWV3JiBvdGhlciwgc2kKIHsKIH0KIAotUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmPFNoYXJlZEJ1
ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7
CiAgICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OwotICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVy
IHsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVy
IHsKICAgICAgICAgW3NlZ21lbnQsIGRhdGEgPSBkYXRhKCldKCkgeyByZXR1cm4gZGF0YTsgfSwK
ICAgICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQogICAgIH0pOwogfQog
Ci1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcm
IHN0cmluZykKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCiB7CiAgICAgLy8gQWxsb2NhdGUgYSBidWZmZXIgYmlnIGVub3VnaCB0byBob2xkIGFs
bCB0aGUgY2hhcmFjdGVycy4KICAgICBjb25zdCBzaXplX3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0
aCgpOwpAQCAtNjQ1LDcgKzY0NSw3IEBAIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1
dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJp
bmsocCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5k
ZXggNzYwZWI3OGExODY2ZmVkMjNiMzA0M2NkNWUxNGFkNWNlZGRlNDcyNi4uNmFkNWY4YzM0N2U5
MWU5N2ViNGRkMjI4OGEzMGYxNjI0ZGVkZmU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmgKQEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgRGVjb2RlcjsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKIC8vIERhdGEgd3JhcHBlZCBi
eSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVm
ZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgpAQCAtMTMxLDQyICsxMzEsNDIgQEAgcHJpdmF0ZToK
ICNlbmRpZgogICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKICAgICAgICAgUHJv
dmlkZXI+IG1faW1tdXRhYmxlRGF0YTsKLSAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwot
ICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOyAvLyBGb3IgY3JlYXRlQ0ZE
YXRhCisgICAgZnJpZW5kIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CisgICAgZnJpZW5k
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNGRGF0YQogfTsKIAotY2xhc3MgU2hh
cmVkQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4gewor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0g
ICAgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgeyByZXR1cm4gY3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEpLCBzaXplKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShWZWN0b3I8dWludDhfdD4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gY3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsg
fQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
Y3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxTaGFyZWRCdWZm
ZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlk
ZXImJik7CiAKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5Q
dHI8TlNBcnJheT4gY3JlYXRlTlNEYXRhQXJyYXkoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSop
OwogI2VuZGlmCiAjaWYgVVNFKENGKQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCiAK
ICNpZiBVU0UoR0xJQikKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKEdCeXRlcyopOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwogI2VuZGlmCiAKICNpZiBVU0UoR1NU
UkVBTUVSKQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwog
I2VuZGlmCiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNl
dCwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAKLSAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkg
YnV0IGF2b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0
IGlzIHNhZmUgKFRoZSBTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCisgICAgLy8gU2ltaWxh
ciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRh
IGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBpcyBu
b3Qgc2hhcmVkKS4KICAgICBWZWN0b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKIAotICAgIC8v
IENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNv
bnRlbnRzIHRvIHRoYXQKKyAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMg
dGhpcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAogICAgIC8vIEFy
cmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBi
dWZmZXIuCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVB
cnJheUJ1ZmZlcigpIGNvbnN0OwogCkBAIC0xNzQsMTQgKzE3NCwxNCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQogICAgIGJvb2wgaXNDb250
aWd1b3VzKCkgY29uc3QgeyByZXR1cm4gbV9jb250aWd1b3VzOyB9CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVf
dCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWlu
dDhfdD4mKT4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0c1dpdGgoY29u
c3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKIAotICAgIHVzaW5nIERhdGFT
ZWdtZW50ID0gV2ViQ29yZTo6RGF0YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFja3dhcmQgY29tcGF0
aWJpbGl0eSB3aGVuIHVzaW5nIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQKKyAgICB1c2luZyBE
YXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNv
bXBhdGliaWxpdHkgd2hlbiB1c2luZyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewogICAgICAgICBzaXplX3Qg
YmVnaW5Qb3NpdGlvbjsKQEAgLTE5OSwzOCArMTk5LDM4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9y
PT0ob3RoZXIpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09
KG90aGVyKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJl
ZEJ1ZmZlcj4gbWFrZUNvbnRpZ3VvdXMoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIGZyaWVu
ZCBjbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRC
dWZmZXI7CiAKICAgICBEYXRhU2VnbWVudFZlY3RvciBtX3NlZ21lbnRzOwogICAgIGJvb2wgbV9j
b250aWd1b3VzIHsgZmFsc2UgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlcigp
OwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgYXBwZW5kKGRhdGEsIHNpemUpOyB9Ci0g
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsgYXBwZW5k
KFdURk1vdmUoZGF0YSkpOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKCk7CisgICAg
ZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KKyAgICBleHBsaWNpdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IGFwcGVuZChkYXRh
LCBzaXplKTsgfQorICAgIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoVmVjdG9yPHVp
bnQ4X3Q+JiYgZGF0YSkgeyBhcHBlbmQoV1RGTW92ZShkYXRhKSk7IH0KKyAgICBXRUJDT1JFX0VY
UE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNF
KENGKQotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYp
OworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoQ0ZE
YXRhUmVmKTsKICNlbmRpZgogI2lmIFVTRShHTElCKQotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKEdCeXRlcyopOwogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1F
UikKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3du
ZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKICAgICBzaXplX3QgbV9zaXpl
IHsgMCB9OwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVy
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6
ZV90KTsKICAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7
IGFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsg
fQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKQEAg
LTI0Myw3ICsyNDMsNyBAQCBwcml2YXRlOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVh
cigpOwogCi0gICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFu
ZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCisg
ICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5z
IHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgog
ICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAgIGNvbnN0
IERhdGFTZWdtZW50VmVjdG9yRW50cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9z
aXRpdGlvbikgY29uc3Q7CiAKQEAgLTI1MiwyMCArMjUyLDIwIEBAIHByaXZhdGU6CiAjZW5kaWYK
IH07CiAKLS8vIEEgQ29udGlndW91c1NoYXJlZEJ1ZmZlciBpcyBhIFNoYXJlZEJ1ZmZlciB0aGF0
IGFsbG93cyB0byBkaXJlY3RseSBhY2Nlc3MgaXRzIGNvbnRlbnQgdmlhIHRoZSBkYXRhKCkgYW5k
IHJlbGF0ZWQgbWV0aG9kcy4KLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgOiBwdWJsaWMg
U2hhcmVkQnVmZmVyIHsKKy8vIEEgU2hhcmVkQnVmZmVyIGlzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciB0aGF0IGFsbG93cyB0byBkaXJlY3RseSBhY2Nlc3MgaXRzIGNvbnRlbnQgdmlhIHRoZSBk
YXRhKCkgYW5kIHJlbGF0ZWQgbWV0aG9kcy4KK2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyIHsKIHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUu
Li4gQXJncz4KLSAgICBzdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZShB
cmdzJiYuLi4gYXJncykKKyAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEFyZ3Mm
Ji4uLiBhcmdzKQogICAgIHsKICAgICAgICAgaWYgY29uc3RleHByICghc2l6ZW9mLi4uKEFyZ3Mp
KQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cigpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcigpKTsK
ICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCiAgICAgICAg
ICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQot
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgICAg
ICAgICAgYXV0byBidWZmZXIgPSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
Mjc0LDcgKzI3NCw3IEBAIHB1YmxpYzoKICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRl
Y29kZXIoKSBjb25zdDsKIAogICAgIGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29s
IHsgTm8sIFllcyB9OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVz
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNl
RmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKIAogI2lmIFVTRShGT1VOREFU
SU9OKQogICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgp
IGNvbnN0OwpAQCAtMjg3LDEyICsyODcsMTIgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigpOwotICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1No
YXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
RnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwogfTsKIAogY2xhc3MgU2hh
cmVkQnVmZmVyQnVpbGRlciB7CkBAIC0zMDUsNyArMzA1LDcgQEAgcHVibGljOgogCiAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihzdGQ6Omlu
X3BsYWNlX3QsIEFyZ3MmJi4uLiBhcmdzKQotICAgICAgICA6IG1fYnVmZmVyKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpIHsgfQorICAgICAgICA6IG1f
YnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pKSB7IH0KIAogICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXImIG9wZXJhdG9yPShTaGFy
ZWRCdWZmZXJCdWlsZGVyJiYpID0gZGVmYXVsdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRC
dWZmZXJCdWlsZGVyJiBvcGVyYXRvcj0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CkBAIC0zMjQs
MTIgKzMyNCwxMiBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CiAKICAgICB2b2lkIHJlc2V0KCkgeyBt
X2J1ZmZlciA9IG51bGxwdHI7IH0KLSAgICB2b2lkIGVtcHR5KCkgeyBtX2J1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAgICB2b2lkIGVtcHR5KCkgeyBtX2J1ZmZlciA9IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBnZXQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+
IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZl
cj4gdGFrZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiB0YWtlQXNDb250aWd1b3VzKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5
KCkgOiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgUmVmPFNoYXJlZEJ1ZmZlcj4gdGFrZUFzQ29udGlndW91cygpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKIAogcHJpdmF0ZToK
QEAgLTM0NCwxMCArMzQ0LDEwIEBAIHByaXZhdGU6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluaXRpYWxpemUoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBlbnN1cmVCdWZmZXIoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCi1pbmxpbmUg
VmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQoraW5saW5lIFZlY3Rv
cjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiB7CiAgICAg
aWYgKGhhc09uZVJlZigpKQogICAgICAgICByZXR1cm4gdGFrZURhdGEoKTsKQEAgLTM2Miw3ICsz
NjIsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7IH0KICAgICBjb25z
dCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSgpKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lm
IFVTRShGT1VOREFUSU9OKQogICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNy
ZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlmCkBAIC0zNzIsNiArMzcyLDYgQEAgcHJpdmF0ZToK
ICAgICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsKIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CitSZWZQdHI8U2hhcmVkQnVmZmVyPiB1
dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAK
aW5kZXggY2RiNmU3MDM0MDRkNDI2ZGQyMWI0NzlmYTg5YzBkYTliOGM0OWY4ZS4uOWQwNTVjZTI3
ZDg4YzNkNjJlNWJkMWNkNDZhZDkxZjVjYzQzMWY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcApAQCAtMzYsNyArMzYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoTUhUTUwpCiAKLVNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqIGJ1ZmZl
ciwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpCitTaGFyZWRCdWZmZXJDaHVua1JlYWRl
cjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVy
LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcikKICAgICA6IG1faXRlcmF0b3JDdXJyZW50
KGJ1ZmZlci0+YmVnaW4oKSkKICAgICAsIG1faXRlcmF0b3JFbmQoYnVmZmVyLT5lbmQoKSkKICAg
ICAsIG1fc2VnbWVudChtX2l0ZXJhdG9yQ3VycmVudCAhPSBtX2l0ZXJhdG9yRW5kID8gbV9pdGVy
YXRvckN1cnJlbnQtPnNlZ21lbnQtPmRhdGEoKSA6IG51bGxwdHIpCkBAIC00NCw3ICs0NCw3IEBA
IFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRC
dWZmZXIqIGJ1ZmZlciwgY29uc3QgVmVjCiB7CiB9CiAKLVNoYXJlZEJ1ZmZlckNodW5rUmVhZGVy
OjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgY2hh
ciogc2VwYXJhdG9yKQorU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgY2hhciogc2VwYXJh
dG9yKQogICAgIDogbV9pdGVyYXRvckN1cnJlbnQoYnVmZmVyLT5iZWdpbigpKQogICAgICwgbV9p
dGVyYXRvckVuZChidWZmZXItPmVuZCgpKQogICAgICwgbV9zZWdtZW50KG1faXRlcmF0b3JDdXJy
ZW50ICE9IG1faXRlcmF0b3JFbmQgPyBtX2l0ZXJhdG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0YSgp
IDogbnVsbHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJD
aHVua1JlYWRlci5oCmluZGV4IDVkNGU2ZmVlNTgyYzY2MTZmZDA3ZTM5OTRmZjc1YzhmMDdhMmZj
ZTEuLjFjNjQwOGQ0YzczNmExYzRhNDVjZWU3YjNmNjk2NTdiYzlhMjYxNWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaApAQCAtNDEs
OCArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyIHsKIHB1YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlcihTaGFyZWRCdWZmZXIqLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcik7Ci0gICAg
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiwgY29uc3QgY2hhciogc2VwYXJh
dG9yKTsKKyAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpOworICAgIFNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpOwog
CiAgICAgdm9pZCBzZXRTZXBhcmF0b3IoY29uc3QgVmVjdG9yPGNoYXI+Jik7CiAgICAgdm9pZCBz
ZXRTZXBhcmF0b3IoY29uc3QgY2hhciopOwpAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAgICAg
c2l6ZV90IHBlZWsoVmVjdG9yPHVpbnQ4X3Q+Jiwgc2l6ZV90KTsKIAogcHJpdmF0ZToKLSAgICBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9y
Q3VycmVudDsKLSAgICBjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25z
dF9pdGVyYXRvciBtX2l0ZXJhdG9yRW5kOworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yQ3VycmVudDsKKyAgICBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRl
cmF0b3IgbV9pdGVyYXRvckVuZDsKICAgICBjb25zdCB1aW50OF90KiBtX3NlZ21lbnQgeyBudWxs
cHRyIH07CiAgICAgc2l6ZV90IG1fc2VnbWVudEluZGV4IHsgMCB9OwogICAgIFZlY3RvcjxjaGFy
PiBtX3NlcGFyYXRvciB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRp
Y1Bhc3RlYm9hcmQuY3BwCmluZGV4IDNmN2ZiYTQxYTRhMWVmYjExY2NkZmZkNTcyNjc4Y2RmZmU1
M2QwOTEuLmIyZDdhNTUwZDQ2MGU5NGNkMzE1MTM0YTMxOTViY2Q5MWM3Yjc4OTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCkBAIC03Myw3ICs3Myw3
IEBAIHZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIG1fY3VzdG9tRGF0YS53cml0ZVN0cmluZyh0eXBl
LCB2YWx1ZSk7CiB9CiAKLXZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVEYXRhKGNvbnN0IFN0
cmluZyYgdHlwZSwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgU3Rh
dGljUGFzdGVib2FyZDo6d3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhKQogewogICAgIG1fbm9uRGVmYXVsdERhdGFUeXBlcy5hZGQodHlwZSk7CiAg
ICAgbV9jdXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAppbmRleCBhMDM5YzI1MjVlZDVmZTYz
NTBjY2IwYTFhYTM2NTBkMzE5ODZmNjE5Li5jMDliNmRlMzFmMmVkZWJlMDE4OGRjOWM0NjZhMjcx
ZTFiOGI5ZTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0
ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5o
CkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgU3RhdGljUGFz
dGVib2FyZCBmaW5hbCA6IHB1YmxpYyBQYXN0ZWJvYXJkIHsKIHB1YmxpYzoKQEAgLTUyLDcgKzUy
LDcgQEAgcHVibGljOgogICAgIFN0cmluZyByZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0
cmluZyYgdHlwZSkgZmluYWw7CiAKICAgICB2b2lkIHdyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKSBmaW5hbDsKLSAgICB2b2lkIHdyaXRlRGF0YShjb25z
dCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAg
IHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhKTsKICAgICB2b2lkIHdyaXRlU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBkYXRhKTsKICAgICB2b2lkIGNsZWFyKCkgZmluYWw7CiAgICAgdm9p
ZCBjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKaW5kZXggNjg3OTU5MDBjNWFkZjljYzkwNDVl
MGVhYmIyMmIxOGZhNjY5NjMxNC4uMWQ2NWJjNDAzYWQ4NTI0M2M2NzI1ZTcwNDQ4ZDZjZGFkY2Nj
Y2UxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWlu
Z0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5m
by5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBOb3dQbGF5
aW5nSW5mb0FydHdvcmsgewogICAgIFN0cmluZyBzcmM7CiAgICAgU3RyaW5nIG1pbWVUeXBlOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5v
d1BsYXlpbmdJbmZvQXJ0d29yayYgb3RoZXIpIGNvbnN0CiAgICAgewpAQCAtNjcsNyArNjcsNyBA
QCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5n
SW5mb0FydHdvcms+IE5vd1BsYXlpbmdJbgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZVR5
cGUpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1h
Z2VEYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbWFnZURhdGEpKQogICAgICAgICByZXR1cm4geyB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Zp
bGVSZWFkZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKaW5kZXggYzE0OTRlYWIxZjI4NjRlNzczOTUyNGJlOWRh
ZjU5MjY1ZWEyMGI5NC4uZDRiYjU3OWYzMDBjNWZlMjFlNGRlMDg0MTEwYTk0NmQ2OTRjNzNkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxl
UmVhZGVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIGNsYXNzIEF1ZGlv
RmlsZVJlYWRlcldlYk1EYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogcHVi
bGljOgotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIFJl
ZjxBdWRpb1RyYWNrUHJpdmF0ZVdlYk0+IG1fdHJhY2s7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCA5YjNlY2ExYTE1NDQ5OGMw
ZTdlMzRjN2M5MTMzNjk1Y2NkOTQ3ZTdiLi40NDczZWMyOGQwNGM1NDM2MzIzYzA3ZDM3YmYyYzlj
ZDdkZWQyMTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVu
Y29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVy
Q0YuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckNGOjplbmRBcnJh
eSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8
U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGF1
dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJpbmFyeUZvcm1h
dF92MV8wLCAwLCBudWxscHRyKSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0
KCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmgKaW5kZXggZmFiNjZmY2JjYThmNDcxOTdlOThkNzliZjAyZWY4MTYxYTQyNzZh
NC4uZjU4NmMwMmJiMTViZjM5YjcyODNmYmE5YWE1ZThhMTI2Yjg0ZmVmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCkBAIC0zNyw3ICszNyw3IEBAIHB1
YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwog
CiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCos
IHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBi
b29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJl
ZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcAppbmRleCA2OGIwODk0Y2M4NTZlZjUyMjcwMzQzNzAyOWIyNmM1YjNkZDU5MjU0Li4xYmFh
M2RlNDExMmMyZjdkZjcyN2E5Mzk2ZWE1OGVlNTNmODA5M2UwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVm
IGRhdGEpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKENG
RGF0YVJlZiBkYXRhKQogewogICAgIGFwcGVuZChkYXRhKTsKIH0KQEAgLTQxLDcgKzQxLDcgQEAg
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCiAvLyBVc2luZyBGb3Vu
ZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZlbiBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBv
ZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28gb25seSB1c2UgdGhpcyB2ZXJzaW9uIGZvciBub24tRm91
bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5EQVRJT04pCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0
YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewogICAgIGlmIChoYXNP
bmVTZWdtZW50KCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRh
aW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRh
KSkKQEAgLTUxLDEyICs1MSwxMiBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogfQogI2VuZGlmCiAKLVJlZjxTaGFyZWRC
dWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YVJlZiBkYXRhKQorUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFSZWYg
ZGF0YSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0YSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoZGF0YSkpOwog
fQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAor
dm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNv
bnN0CiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IG1fc2VnbWVudHMpIHsKICAgICAg
ICAgaWYgKGVudHJ5LnNlZ21lbnQtPmhhc09uZVJlZigpKSB7CkBAIC02Niw3ICs2Niw3IEBAIHZv
aWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAgICAgfQog
fQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQordm9pZCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7CiAgICAgQVNTRVJU
KCFtX2NvbnRpZ3VvdXMpOwogICAgIGlmIChkYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIu
aAppbmRleCAwNzk3ZGZiZThkMDE4YmU2MzYxNzQ0YzU4Zjg5MmRkNTZlZDY4OWM1Li5jYmU4Nzcx
YTQ1ZDg2MmNiNWFiMDVlY2EzOTk5MjdlMDc4MzhmNTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGREYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNo
ZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1l
bnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIENvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIGJvb2wgaXNSZXF1aXJlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
ci5tbQppbmRleCA0MjkwZGIxMjhkMDAwYTQwZWVmNzBmZDI5NDFkNjM0NDkwNDZkZTAzLi4yZWYy
NzAxZmU2NzhiZjliOTJkYjIxMmJiZWE1YzkxNWEzZmMzYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlci5tbQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgTmV0d29ya0V4dGVuc2lvbkNvbnRl
bnRGaWx0ZXI6OmZpbmlzaGVkQWRkaW5nRGF0YSgpCiAgICAgc2VtYXBob3JlLndhaXQoKTsKIH0K
IAotUmVmPFNoYXJlZEJ1ZmZlcj4gTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OnJlcGxh
Y2VtZW50RGF0YSgpIGNvbnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKGRpZEJsb2NrRGF0YSgpKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9y
ZXBsYWNlbWVudERhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKaW5kZXggMDY4
Y2RjYjM4M2Y0MjM2NWFjMzI2NGUyMjlhNmQ2M2JjMmI0YWJkNi4uNjc5YWU5MzI5NTE3ZTFmMzk0
M2JhNTc2MmFjOGY1NmU4NjBjOGMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCkBAIC00
NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0
YSgpIG92ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNv
bnN0IG92ZXJyaWRlOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVu
dERhdGEoKSBjb25zdCBvdmVycmlkZTsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAg
ICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkgY29uc3Qgb3Zl
cnJpZGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KaW5kZXggYjQ2MWY5NzUz
NmRlM2ExNTgxM2E1ODI3Yjg2NzEzOGI5NmQ0ZjM4Yy4uMWM5NjA0NzE2YjQyNjkzZDVlNDZjMmUy
M2U5NDFkYTAwYzgzZTRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KQEAgLTEwOSw3
ICsxMDksNyBAQCB2b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpmaW5pc2hlZEFk
ZGluZ0RhdGEoKQogICAgIHVwZGF0ZUZpbHRlclN0YXRlKCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZm
ZXI+IFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25z
dAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBhcmVudGFsQ29udHJvbHNDb250ZW50Rmls
dGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChkaWRCbG9ja0RhdGEo
KSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVwbGFjZW1lbnREYXRhLmdl
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9h
cmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2Nv
YS5tbQppbmRleCA2ZjUwZjAzNWFkZmVhYTlkYmFkYjAyYWNhZDhmMDY3Yzc4M2ZjYmU1Li5iODE3
MDgxN2NlYzU5ZTIyZDNjMGU5YTc4ZjE0NmMwMzNlNGMxNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC00Nyw3ICs0Nyw3IEBA
IHN0YXRpYyBOU0JpdG1hcEltYWdlRmlsZVR5cGUgYml0bWFwUE5HRmlsZVR5cGUoKQogfQogI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykKIAotLy8gTWFraW5nIHRoaXMgbm9uLWlubGluZSBzbyB0aGF0
IFdlYktpdCAyJ3MgZGVjb2RpbmcgZG9lc24ndCBoYXZlIHRvIGluY2x1ZGUgU2hhcmVkQnVmZmVy
LmguCisvLyBNYWtpbmcgdGhpcyBub24taW5saW5lIHNvIHRoYXQgV2ViS2l0IDIncyBkZWNvZGlu
ZyBkb2Vzbid0IGhhdmUgdG8gaW5jbHVkZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLmguCiBQYXN0
ZWJvYXJkV2ViQ29udGVudDo6UGFzdGVib2FyZFdlYkNvbnRlbnQoKSA9IGRlZmF1bHQ7CiBQYXN0
ZWJvYXJkV2ViQ29udGVudDo6flBhc3RlYm9hcmRXZWJDb250ZW50KCkgPSBkZWZhdWx0OwogCkBA
IC0yMTEsMTEgKzIxMSwxMSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0Zvckxl
Z2FjeVVuc2FmZUJpbmRpbmdzKCkKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLXN0YXRpYyBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRp
ZmZCdWZmZXIpCitzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQogewogICAgIGF1dG8gaW1hZ2UgPSBhZG9w
dE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdE
YXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkg
cHJvcGVydGllczpAeyB9XTsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHBuZ0RhdGEpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsK
IH0KICNlbmRpZgogCkBAIC0zMTYsNyArMzE2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2Fy
ZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKQogICAgIHJldHVybiBjb2NvYVR5cGVzOwog
fQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZl
ckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8U2hh
cmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNr
KGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bhc3Rl
Ym9hcmROYW1lLCBjb250ZXh0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCmluZGV4IGFkOTZmN2Y1M2EyZGNjMDRkMjkzMjEw
MmVlZDgxOTgwZmJmZDUwMWEuLjY2NDI3ZGZiZjA1ZmQ3MjZhZmQ5OWEzMjljNmFjMTFhYzllZDdh
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZl
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZl
ckNvY29hLm1tCkBAIC04OCwzMCArODgsMzAgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkK
K1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVh
dGUoTlNEYXRhICpkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihicmlkZ2VfY2FzdChkYXRhKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIoYnJpZGdlX2Nhc3QoZGF0YSkpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZm
ZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFw
cGVuZChOU0RhdGEgKmRhdGEpCiB7CiAgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIHJl
dHVybiBhcHBlbmQoYnJpZGdlX2Nhc3QoZGF0YSkpOwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5T
RGF0YT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiBi
cmlkZ2VfY2FzdChjcmVhdGVDRkRhdGEoKSk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X3NlZ21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51
bGxwdHIsIG51bGxwdHIsIDApKTsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdtZW50c1sw
XS5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSk7CiB9CiAKLVJldGFpblB0cjxOU0FycmF5PiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKK1JldGFpblB0cjxOU0FycmF5PiBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGNyZWF0ZU5TQXJyYXkobV9zZWdtZW50cywgW10gKGF1dG8mIHNlZ21lbnQpIHsKICAg
ICAgICAgcmV0dXJuIHNlZ21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRl
eCBmYmMyODNmYmMzMzY5YmY4MjdlMzE2OTk0YzRjOTRlMDYzNjNjYjgxLi4yZGU0MTkzNGRhMTk4
NzlkNzVjMGRmOGE4OWU2NGU1OTljMjlhZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAg
Y2xhc3MgTG9nZ2VyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBDRE1JbnN0YW5jZVNlc3Np
b247CiBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKIApAQCAtNTQsNyArNTQsNyBA
QCBjbGFzcyBDRE1JbnN0YW5jZUNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1JbnN0
YW5jZUNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkNETUluc3RhbmNlQ2xpZW50KCkg
PSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25E
YXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0
IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiB9OwogCiAvLyBK
YXZhU2NyaXB0J3MgaGFuZGxlIHRvIGEgQ0RNSW5zdGFuY2UsIG11c3QgYmUgdXNlZCBmcm9tIHRo
ZQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHZpcnR1YWwgdm9pZCBp
bml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
biYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1
Y2Nlc3NDYWxsYmFjayYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlcnZlckNlcnRpZmlj
YXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTdG9yYWdl
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPENETUluc3RhbmNlU2Vz
c2lvbj4gY3JlYXRlU2Vzc2lvbigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXggMzdj
ZDA3YzdiZjJkYzc1ZTQxZmQ1YzZjN2RlY2Y0M2UxMDM5ZTExNC4uZDI1OTIyNWJhOWUwMmE2NGQw
Y2VjZDYxNTFmZGY5M2Y0ZjI0NjZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAgLTQzLDE2
ICs0MywxNiBAQCBjbGFzcyBMb2dnZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RN
SW5zdGFuY2VTZXNzaW9uQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPENETUluc3RhbmNl
U2Vzc2lvbkNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkNETUluc3RhbmNlU2Vzc2lv
bkNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHVzaW5nIEtleVN0YXR1cyA9IENETUtleVN0YXR1
czsKLSAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFy
ZWRCdWZmZXI+LCBLZXlTdGF0dXM+PjsKKyAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBWZWN0
b3I8c3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIG1lc3NhZ2UpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2UoQ0RN
TWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSA9IDA7CiAg
ICAgdXNpbmcgUGxhdGZvcm1EaXNwbGF5SUQgPSB1aW50MzJfdDsKICAgICB2aXJ0dWFsIFBsYXRm
b3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpID0gMDsKQEAgLTc4LDEzICs3OCwxMyBAQCBwdWJsaWM6
CiAgICAgICAgIFN1Y2NlZWRlZCwKICAgICB9OwogCi0gICAgdXNpbmcgTGljZW5zZUNhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIFN1Y2Nl
c3NWYWx1ZSBzdWNjZWVkZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpID0gMDsKKyAgICB1c2luZyBMaWNlbnNl
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZp
ZHVhbGl6YXRpb24sIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFj
ayYmKSA9IDA7CiAKICAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBDRE1JbnN0YW5jZVNlc3Np
b25DbGllbnQ6OktleVN0YXR1c1ZlY3RvcjsKLSAgICB1c2luZyBNZXNzYWdlID0gc3RkOjpwYWly
PE1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgTWVzc2FnZSA9IHN0
ZDo6cGFpcjxNZXNzYWdlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAgICB1
c2luZyBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wg
c2Vzc2lvbldhc0Nsb3NlZCwgc3RkOjpvcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdl
ZEtleXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBzdGQ6Om9w
dGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+OwotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNl
bnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxi
YWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJl
c3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgPSAwOwogCiAgICAgZW51bSBjbGFzcyBT
ZXNzaW9uTG9hZEZhaWx1cmUgOiB1aW50OF90IHsKICAgICAgICAgTm9uZSwKQEAgLTEwMCw3ICsx
MDAsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVNlc3Npb24oY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpID0gMDsKIAotICAgIHVz
aW5nIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtl
eVN0YXR1c1ZlY3RvciYmLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmLCBTdWNj
ZXNzVmFsdWUpPjsKKyAgICB1c2luZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChLZXlTdGF0dXNWZWN0b3ImJiwgc3RkOjpvcHRpb25hbDxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYsIFN1Y2Nlc3NWYWx1ZSk+OwogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUs
IFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHN0
b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCmlu
ZGV4IGNjNmRjN2YxNDBjZDY3ZDJiN2I4NGY2YWIyYzI4NDMxNmRmZGRjY2YuLjUyYTYxNDhjODNj
ZDUzOTNjOGY4NzRlZDg1YWQ4YmYyN2U1YmU1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKQEAgLTczLDggKzczLDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXpl
UmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNl
c3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcAppbmRl
eCBmMjE4Zjk3OTA0ZmJiYTQ5ZjFlYmRmNDhlMjA1ZmU3M2RmYWZiNjQ4Li40YmE3NWJmMDBkOWY3
MTNiNWFmYmJhNzkzNDAxOTcxNmNkOGYwMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAg
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgS2V5U3RvcmU6OmNvbnZlcnRUb0pT
S2V5U3RhdHVzVmVjdG9yKCkgY29uc3QKICAgICBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1
c1ZlY3RvciBrZXlTdGF0dXNWZWN0b3I7CiAgICAga2V5U3RhdHVzVmVjdG9yLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobnVtS2V5cygpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGtleSA6IG1fa2V5
cykKLSAgICAgICAga2V5U3RhdHVzVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChzdGQ6OnBhaXI8UmVm
PFNoYXJlZEJ1ZmZlcj4sIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzPiB7IGtleS0+aWRB
c1NoYXJlZEJ1ZmZlcigpLCBrZXktPnN0YXR1cygpIH0pOworICAgICAgICBrZXlTdGF0dXNWZWN0
b3IudW5jaGVja2VkQXBwZW5kKHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4s
IENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzPiB7IGtleS0+aWRBc1NoYXJlZEJ1ZmZlcigp
LCBrZXktPnN0YXR1cygpIH0pOwogICAgIHJldHVybiBrZXlTdGF0dXNWZWN0b3I7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCmlu
ZGV4IGE1ODRiNmNkMjY2YjA5ODA5MDI1NGQ3ZGNiZGRiZjYwZDkzMzFmYmIuLmUxZTA5OGExZDVm
NWZmYzY1YzJhNDhmYTQwYWE5NzJmZTg5ZTFlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBLZXlIYW5kbGUoc3RhdHVz
LCBXVEZNb3ZlKGtleUlEKSwgV1RGTW92ZShrZXlIYW5kbGVWYWx1ZSkpKTsKICAgICB9Ci0gICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gaWRBc1NoYXJlZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKG1faWQuZGF0YSgpLCBtX2lkLnNpemUoKSk7IH0KKyAgICBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gaWRBc1NoYXJlZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG1faWQuZGF0YSgpLCBtX2lkLnNpemUoKSk7IH0KIAogICAgIGJv
b2wgdGFrZVZhbHVlSWZEaWZmZXJlbnQoS2V5SGFuZGxlVmFsdWVWYXJpYW50JiYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0
aWVzLmNwcAppbmRleCA2NjcyNmY3NGU1OGQ4ZTEyMmNiYzkwYjg2N2I5YmY5NjE3NzgwM2Q0Li5m
Y2E2ZjIzODhhNTZhNmExYzcyNDcwZTVhNDZmZGQyOGYwNzM3NTBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAK
QEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgQ0RNVXRp
bGl0aWVzIHsKIAotUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBGYWlsIG9u
IGxhcmdlIGJ1ZmZlcnMgd2hvc2Ugc2l6ZSBkb2Vzbid0IGZpdCBpbnRvIGEgMzItYml0IHVuc2ln
bmVkIGludGVnZXIuCiAgICAgc2l6ZV90IHNpemUgPSBidWZmZXIuc2l6ZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaApp
bmRleCA3NGY1MTViMGJkMmE4NzE2OGVlZjI0YjE4Zjk1ZGVhYmVlODI4ZTZjLi5mY2Y1YmRkYTdj
NTk3ZDNjM2FjMzQ5ZWUxNzg5ZTRhZDZlMGM5NTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaApAQCAtMzUsMTEgKzM1
LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIENETVV0aWxpdGllcyB7CiAK
LVJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXIm
KTsKK1JlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJik7CiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRl
eCAyYWRkZWU3ZWU4YjRlZWI4MzVmYTcwYzI0ZjFkNGVmODlkNzM0M2VmLi4zMWE5ZmRmYTAyZDZk
MDBjYTI2MTgyNTJkZWQ5MzUzMTNkYzU4YWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
Y3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VMaWNlbnNlUmVsZWFzZUFj
a25vd2xlZGdlbWVudEZvcm1hdChjb25zdCBKU09OOjpPYmplY3QmIHJvb3QpCiAvLyBdOwogCiAv
LyBUaGlzIGZ1bmN0aW9uIGV4dHJhY3RzIHRoZSBLZXlJZHMgY291bnQgYW5kIHRoZSBsb2NhdGlv
biBvZiB0aGUgZmlyc3QgS2V5SWQgaW4gaW5pdERhdGEgYnVmZmVyLgotc3RhdGljIHN0ZDo6cGFp
cjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBzdGQ6OnBhaXI8dW5zaWdu
ZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIHN0ZDo6cGFpcjx1bnNp
Z25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCgwLCAwKTsKIApAQCAtMTg5LDEzICsxODksMTMgQEAg
c3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlv
bkZyb21DZW5jSW5pdERhdGEoY29uc3QKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYg
dGhlIGluaXREYXRhIHNoYXJlZEJ1ZmZlciBpcyBhIHZhbGlkIENFTkMgaW5pdERhdGEuCi1zdGF0
aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorc3Rh
dGljIGJvb2wgaXNDZW5jSW5pdERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5p
dERhdGEpCiB7CiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0g
ZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAgICAgcmV0
dXJuICgoa2V5SWRzTWFwLmZpcnN0KSAmJiAoa2V5SWRzTWFwLnNlY29uZCkpOwogfQogCi1zdGF0
aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7CiAKQEAg
LTIzMCw3ICsyMzAsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zy
b21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogICAgIHJldHVybiBrZXlJ
ZHMudGFrZSgpOwogfQogCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJv
bVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGljIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIga2V5SWRzOwogCkBAIC0zOTAsNyArMzkwLDcgQEAgYm9vbCBDRE1Qcml2YXRlQ2xlYXJL
ZXk6OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citib29sIENE
TVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAog
ewogICAgIC8vIFZhbGlkYXRlIHRoZSBpbml0RGF0YSBidWZmZXIgYXMgYW4gSlNPTiBvYmplY3Qg
aW4ga2V5aWRzIGNhc2UuCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGlu
aXREYXRhVHlwZSwgImtleWlkcyIpICYmIENETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KGlu
aXREYXRhKSkKQEAgLTQwNyw3ICs0MDcsNyBAQCBib29sIENETVByaXZhdGVDbGVhcktleTo6c3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlQ2xlYXJL
ZXk6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QK
K1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlQ2xlYXJLZXk6OnNhbml0
aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0
CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhlIHJlc3BvbnNlIGJ1ZmZlciBhcyBhbiBKU09OIG9iamVj
dC4KICAgICBpZiAoIUNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KHJlc3BvbnNlKSkKQEAg
LTQzMyw3ICs0MzMsNyBAQCB2b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OmluaXRpYWxpemVXaXRo
Q29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cgogICAgIGNhbGxiYWNrKHN1
Y2NlZWRlZCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlm
aWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2
b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICAv
LyBSZWplY3Qgc2V0dGluZyBhbnkgc2VydmVyIGNlcnRpZmljYXRlLgogICAgIGNhbGxiYWNrKEZh
aWxlZCk7CkBAIC00NTUsNyArNDU1LDcgQEAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gQ0RN
SW5zdGFuY2VDbGVhcktleTo6Y3JlYXRlU2Vzc2lvbigpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleSgqdGhpcykpOwogfQogCi12b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNl
bnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6
OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKICAgICBzdGF0aWMgdWludDMyX3Qgc19zZXNzaW9uSWRWYWx1ZSA9
IDA7CiAgICAgKytzX3Nlc3Npb25JZFZhbHVlOwpAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25z
dCBBdG9tU3RyaW5nJiBpCiAgICAgICAgIH0pOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lv
bkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNl
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNr
JiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNr
KQogewogI2lmIExPR19ESVNBQkxFRAogICAgIC8vIFdlIG9ubHkgdXNlIHRoZSBzZXNpb24gSUQg
Zm9yIGRlYnVnIGxvZ2dpbmcuIFRoZSB2ZXJib3NlIHByZXByb2Nlc3NvciBjaGVja3MgYXJlIGJl
Y2F1c2UKQEAgLTU2OCw3ICs1NjgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5
OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZQogICAgIEFT
U0VSVChzZXNzaW9uSWQgPT0gbV9zZXNzaW9uSUQpOwogCiAgICAgYXV0byBkaXNwYXRjaENhbGxi
YWNrID0KLSAgICAgICAgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sICZjYWxsYmFja10o
S2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzVmVjdG9yLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFy
ZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZXNzKSB7CisgICAgICAgIFt3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCAmY2FsbGJhY2tdKEtleVN0YXR1c1ZlY3RvciYm
IGtleVN0YXR1c1ZlY3Rvciwgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoCiAgICAgICAgICAgICAgICAgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp3ZWFr
VGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBrZXlTdGF0dXNWZWN0b3IgPSBX
VEZNb3ZlKGtleVN0YXR1c1ZlY3RvciksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNj
ZXNzXSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAt
NTgxLDcgKzU4MSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlbW92ZVNl
c3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlCiAgICAgLy8gQ29uc3RydWN0
IHRoZSBLZXlTdGF0dXNWZWN0b3Igb2JqZWN0LCByZXByZXNlbnRpbmcgcmVsZWFzZWQga2V5cywg
YW5kIHRoZSBtZXNzYWdlIGluIHRoZQogICAgIC8vICdsaWNlbnNlIHJlbGVhc2UnIGZvcm1hdC4K
ICAgICBLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzVmVjdG9yID0gbV9rZXlTdG9yZS5hbGxLZXlz
QXMoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXM6OlJlbGVhc2VkKTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtZXNzYWdlOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBtZXNzYWdlOwogICAgIHsKICAgICAgICAgLy8gQ29uc3RydWN0IEpTT04gdGhhdCByZXByZXNl
bnRzIHRoZSAnbGljZW5zZSByZWxlYXNlJyBmb3JtYXQsIGNyZWF0aW5nIGEgJ2tpZHMnIGFycmF5
CiAgICAgICAgIC8vIG9mIGJhc2U2NFVSTC1lbmNvZGVkIGtleSBJRHMgZm9yIGFsbCBrZXlzIHRo
YXQgd2VyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBzZXNzaW9uLgpAQCAtNTk1LDE0ICs1OTUsMTQg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKICAgICAgICAgICAgIHJvb3RPYmplY3QtPnNldEFy
cmF5KCJraWRzIiwgV1RGTW92ZShhcnJheSkpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gQ29w
eSB0aGUgSlNPTiBkYXRhIGludG8gYSBTaGFyZWRCdWZmZXIgb2JqZWN0LgorICAgICAgICAvLyBD
b3B5IHRoZSBKU09OIGRhdGEgaW50byBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgb2JqZWN0Lgog
ICAgICAgICBTdHJpbmcgbWVzc2FnZVN0cmluZyA9IHJvb3RPYmplY3QtPnRvSlNPTlN0cmluZygp
OwogICAgICAgICBDU3RyaW5nIG1lc3NhZ2VDU3RyaW5nID0gbWVzc2FnZVN0cmluZy51dGY4KCk7
CiAgICAgICAgIG1lc3NhZ2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtZXNzYWdlQ1N0cmluZy5k
YXRhKCksIG1lc3NhZ2VDU3RyaW5nLmxlbmd0aCgpKTsKICAgICB9CiAKICAgICBtX2tleVN0b3Jl
LnVucmVmQWxsS2V5cygpOwotICAgIGRpc3BhdGNoQ2FsbGJhY2soV1RGTW92ZShrZXlTdGF0dXNW
ZWN0b3IpLCBSZWY8U2hhcmVkQnVmZmVyPigqbWVzc2FnZSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2Vl
ZGVkKTsKKyAgICBkaXNwYXRjaENhbGxiYWNrKFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KCptZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVk
ZWQpOwogfQogCiB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpzdG9yZVJlY29yZE9m
S2V5VXNhZ2UoY29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCmluZGV4IDlj
MDc0N2RjMWJkOGU2N2YzYmE4NjRkOWI4MTEzMzc2MjVjOGE2NzkuLjllMjdmZTkxMmM0ZGEwNjdm
YjI2Y2FmYmM3ZjZhNjUxZGE0NzUyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaApAQCAt
ODYsOCArODYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFs
OwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAg
ICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZp
bmFsOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hh
cmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsK
IH07CiAKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgIC8vIENETUluc3RhbmNlCiAgICAg
SW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6Q2xlYXJLZXk7IH0KICAgICB2b2lkIGluaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dE
aXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxi
YWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYm
KSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmlu
YWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbDsKICAgICBSZWZQ
dHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CkBAIC0xMDksOCAr
MTA5LDggQEAgY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkgZmluYWwgOiBwdWJsaWMg
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgewogcHVibGljOgogICAgIENETUluc3RhbmNlU2Vzc2lv
bkNsZWFyS2V5KENETUluc3RhbmNlQ2xlYXJLZXkmIHBhcmVudCkKICAgICAgICAgOiBDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eShwYXJlbnQpIHsgfQotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRl
TGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwg
TGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2Uo
TGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAg
ICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAg
ICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lv
bihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lk
IHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNz
aW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKaW5kZXggN2FhOTRiNGI0YmMy
Y2JmOTIyYWFkYTU4ODc1NzNkNzVkN2MwYmM2Ny4uN2JmMDA4MzJhNDAyZWVhZDU3MjNjYTQyOGU5
YWZiN2NjNDFhMGM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCkBAIC0xMzksOSArMTM5LDkgQEAgdm9pZCBL
ZXllZEVuY29kZXJHZW5lcmljOjplbmRBcnJheSgpCiAgICAgbV9lbmNvZGVyIDw8IFR5cGU6OkVu
ZEFycmF5OwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVy
R2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNv
ZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQogewotICAgIHJldHVybiBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6
ZSgpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigp
LCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJH
ZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuaAppbmRleCA1ODA1ODNiODM4MTBlZGU1ZDJjOWM2NWE4MzkzYjMyNmQ4N2IyNzQ3Li5l
Y2Y0ZTA4YzliOTkxYWRlMjczYmQ0NGM2MGJiMTVmZTAxNjM1YjE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaApAQCAt
MzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEtleWVkRW5jb2Rlckdl
bmVyaWMgZmluYWwgOiBwdWJsaWMgS2V5ZWRFbmNvZGVyIHsKIHB1YmxpYzoKQEAgLTU3LDcgKzU3
LDcgQEAgcHVibGljOgogICAgIH07CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZW5jb2RlQnl0
ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcApp
bmRleCBlNmQ3OGQ1MjgzZWY4ZTUzYzdiZGIwYmI4MDRlOWUyN2UxMGExNzkzLi43MGQyNGMxMTkz
ZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBA
IHZvaWQgS2V5ZWRFbmNvZGVyR2xpYjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1v
dmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29k
ZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29k
ZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgZ19hc3NlcnQobV92YXJpYW50QnVpbGRl
clN0YWNrLmxhc3QoKSA9PSAmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHVmFyaWFu
dD4gdmFyaWFudCA9IGdfdmFyaWFudF9idWlsZGVyX2VuZCgmbV92YXJpYW50QnVpbGRlcik7CiAg
ICAgR1JlZlB0cjxHQnl0ZXM+IGRhdGEgPSBnX3ZhcmlhbnRfZ2V0X2RhdGFfYXNfYnl0ZXModmFy
aWFudC5nZXQoKSk7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdl
dCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRh
dGEuZ2V0KCkpKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxw
dHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAppbmRleCBjZTEzNjQ5NmM0ZTEzZWFjMTQ5ZWE2
MTg5NWM1NDE0MGZmZDU5NmY3Li5lNTY0MmJjZjY3MGNlMjU5OWZjMDRkZjcyOWUyYjRjMWY4MjEx
ZjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rl
ckdsaWIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rlckds
aWIuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckdsaWIoKTsK
IAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNv
ZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCmluZGV4IDg3ZDc4NGJjNjY1
MThmYWIyNmIzNDY2M2E0NjQ0MDA5M2RlMjcxOGIuLjUwMTI1OWRiODQ4NDc4OTFmYTdmNjdlYWZj
MDhhODMwZTAxM2VlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIv
U2hhcmVkQnVmZmVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9T
aGFyZWRCdWZmZXJHbGliLmNwcApAQCAtMjYsMjQgKzI2LDI0IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoR0J5dGVzKiBieXRlcykKK0ZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoR0J5dGVzKiBieXRlcykK
IHsKICAgICBBU1NFUlQoYnl0ZXMpOwogICAgIG1fc2l6ZSA9IGdfYnl0ZXNfZ2V0X3NpemUoYnl0
ZXMpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShHUmVm
UHRyPEdCeXRlcz4oYnl0ZXMpKSB9KTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoR0J5dGVzKiBieXRlcykKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoR0J5dGVzKiBieXRlcykKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGJ5dGVzKSk7CiB9CiAKLUdSZWZQdHI8R0J5
dGVzPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdAorR1JlZlB0
cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKIHsKICAgICByZWYo
KTsKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0
aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKGdwb2ludGVyIGRhdGEpIHsKLSAgICAgICAg
c3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwotICAg
IH0sIGNvbnN0X2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7CisgICAgICAg
IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOworICAgIH0sIGNvbnN0
X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpKTsKICAgICByZXR1cm4gYnl0ZXM7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggMTI1ODYyZTcyYTlm
OWQ4Njk2Y2UxNmNhY2ZmNmJmNzIwN2I0NWNlNC4uNGU5NDlkZmFiOTc2NWEyYTA3YzQ4NzhhYmVl
MTAzZmJhZjIxZjU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5j
cHAKQEAgLTYzLDcgKzYzLDcgQEAgUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxh
dGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEludGUKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZp
c2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIpKTsKIH0KIAotUmVmPEZv
bnQ+IEZvbnQ6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURh
dGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0Jv
bGQsIGJvb2wgc3ludGhldGljSXRhbGljKQorUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8U2hh
cmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9u
dFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpCiB7CiAgICAg
Ym9vbCB3cmFwcGluZzsKICAgICBhdXRvIGN1c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9udDo6Y3Jl
YXRlQ3VzdG9tRm9udERhdGEoZm9udEZhY2VEYXRhLmdldCgpLCB7IH0sIHdyYXBwaW5nKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA0YzVjOGEzOTYzM2EwNjQ3
ODk4YjUyYTM5NDUyNWZiMWFmYjEyZThhLi44MmViYTczYmFjNGM3NmZlYTBiYjYwZWJhNDQzNjgy
ZDIyYzdmZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC01
OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZvbnRDYWNoZTsKIGNsYXNz
IEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEdseXBoUGFnZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBHbHlwaERhdGE7CiAKQEAg
LTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgVmlzaWJpbGl0eSA6IGJvb2wg
eyBWaXNpYmxlLCBJbnZpc2libGUgfTsKICAgICBlbnVtIGNsYXNzIE9yaWVudGF0aW9uRmFsbGJh
Y2sgOiBib29sIHsgTm8sIFllcyB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9u
dD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4gPSBPcmlnaW46OkxvY2Fs
LCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLCBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0
eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5v
LCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxv
cHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBm
b250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYyk7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhl
dGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkZv
bnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dFBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBs
YXRmb3JtRGF0YS5oCmluZGV4IGUyMzg0YjllZTRlY2U2MDFlZWQ3YTRjMGIzZGJkZjk4YmU5NTMw
OTMuLmZiYmNjYzQzNjg0NDc0OTA4M2NlODkxZjM2M2Y2Y2M0MGYyOTc0NTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAg
LTIyMywxMyArMjIzLDEzIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAotICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25z
dDsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRh
YmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvcGVu
VHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OwogCiAgICAgU3Ry
aW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgQ3JlYXRpb25EYXRhIHsKLSAg
ICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gZm9udEZhY2VEYXRhOwogICAgICAgICBTdHJpbmcgaXRlbUluQ29s
bGVjdGlvbjsKICNpZiBQTEFURk9STShXSU4pCiAgICAgICAgIFJlZjxGb250TWVtb3J5UmVzb3Vy
Y2U+IG1fZm9udFJlc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9IRVZDVXRpbGl0aWVzLmNwcAppbmRleCA2NzVlMjRiNDBhYzdhYWRlNzQwODZmMjQyZWFk
MDE1MjIxYzAyNGZjLi4yY2Y0NDhiZWEyZmE2YWU0ZDQ3Zjk2NDAwMmIzYTkwNmMwMTI5MDY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVz
LmNwcApAQCAtOTcsNyArOTcsNyBAQCBTdHJpbmcgY3JlYXRlQVZDQ29kZWNQYXJhbWV0ZXJzU3Ry
aW5nKGNvbnN0IEFWQ1BhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgICAgICwgaGV4KHBhcmFt
ZXRlcnMubGV2ZWxJREMsIDIpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxBVkNQYXJhbWV0ZXJzPiBw
YXJzZUFWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8QVZDUGFyYW1ldGVycz4gcGFyc2VBVkNEZWNv
ZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICAvLyBJU08vSUVDIDE0NDk2LTEwOjIwMTQKICAgICAvLyA3LjMuMi4xLjEgU2VxdWVuY2UgcGFy
YW1ldGVyIHNldCBkYXRhIHN5bnRheApAQCAtMjU1LDcgKzI1NSw3IEBAIFN0cmluZyBjcmVhdGVI
RVZDQ29kZWNQYXJhbWV0ZXJzU3RyaW5nKGNvbnN0IEhFVkNQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQogICAgICAgICAsIGNvbXBhdGliaWxpdHlGbGFncy50b1N0cmluZygpKTsKIH0KIAotc3RkOjpv
cHRpb25hbDxIRVZDUGFyYW1ldGVycz4gcGFyc2VIRVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNv
cmQoY29uc3QgRm91ckNDJiBjb2RlY0NvZGUsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0RlY29kZXJD
b25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IEZvdXJDQyYgY29kZWNDb2RlLCBjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBJU08vSUVDIDE0NDk2LTE1OjIwMTQKICAgICAvLyA4
LjMuMy4xIEhFVkMgZGVjb2RlciBjb25maWd1cmF0aW9uIHJlY29yZApAQCAtNDM2LDcgKzQzNiw3
IEBAIHN0ZDo6b3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaUNvZGVjUGFyYW1ldGVy
cyhTdHJpbmdWaWV3IGNvZGVjVmlldykKICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0KIAotc3Rk
OjpvcHRpb25hbDxEb1ZpUGFyYW1ldGVycz4gcGFyc2VEb1ZpRGVjb2RlckNvbmZpZ3VyYXRpb25S
ZWNvcmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25h
bDxEb1ZpUGFyYW1ldGVycz4gcGFyc2VEb1ZpRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gVGhlIGZvcm1hdCBvZiB0aGUgRG9W
aSBDb25maWd1cmF0aW9uIFJlY29yZCBpcyBjb250YWluZWQgaW4gIkRvbGJ5IFZpc2lvbiBTdHJl
YW1zIFdpdGhpbgogICAgIC8vIHRoZSBJU08gQmFzZSBNZWRpYSBGaWxlIEZvcm1hdCwgVmVyc2lv
biAyLjAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZD
VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0
aWVzLmgKaW5kZXggZWRmZWNiMjZkODk0NjdhMjNkMWY1NzFjYmM1ZTkxYjJmYTM0Nzg1Yy4uM2Y1
MDEwMzQxNGZiNWVjYWQyYjgyYTdhZjkxZTRhM2NhMjQ1NjYzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuaApAQCAtMzEsNyArMzEsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm91ckNDOwogCiBzdHJ1Y3QgQVZDUGFyYW1l
dGVycyB7CkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBBVkNQYXJhbWV0ZXJzIHsKIH07CiAKIFdF
QkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8QVZDUGFyYW1ldGVycz4gcGFyc2VBVkNDb2RlY1Bh
cmFtZXRlcnMoU3RyaW5nVmlldyk7Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEFWQ1Bh
cmFtZXRlcnM+IHBhcnNlQVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxBVkNQYXJh
bWV0ZXJzPiBwYXJzZUFWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNyZWF0ZUFWQ0NvZGVjUGFyYW1ldGVyc1N0
cmluZyhjb25zdCBBVkNQYXJhbWV0ZXJzJik7CiAKIHN0cnVjdCBIRVZDUGFyYW1ldGVycyB7CkBA
IC01NSw3ICs1NSw3IEBAIHN0cnVjdCBIRVZDUGFyYW1ldGVycyB7CiB9OwogCiBXRUJDT1JFX0VY
UE9SVCBzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRl
cnMoU3RyaW5nVmlldyk7Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0
ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBGb3VyQ0MmLCBj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlv
bmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChj
b25zdCBGb3VyQ0MmLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBjcmVhdGVIRVZDQ29kZWNQYXJhbWV0ZXJzU3RyaW5nKGNvbnN0IEhFVkNQYXJhbWV0ZXJzJik7
CiAKIHN0cnVjdCBEb1ZpUGFyYW1ldGVycyB7CkBAIC02NSw3ICs2NSw3IEBAIHN0cnVjdCBEb1Zp
UGFyYW1ldGVycyB7CiB9OwogCiBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPERvVmlQYXJh
bWV0ZXJzPiBwYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyk7Ci1XRUJDT1JFX0VY
UE9SVCBzdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlEZWNvZGVyQ29uZmln
dXJhdGlvblJlY29yZChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CitXRUJDT1JFX0VY
UE9SVCBzdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlEZWNvZGVyQ29uZmln
dXJhdGlvblJlY29yZChjb25zdCBTaGFyZWRCdWZmZXImKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBjcmVhdGVEb1ZpQ29kZWNQYXJhbWV0ZXJzU3RyaW5nKGNvbnN0IERvVmlQYXJhbWV0ZXJzJik7
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAppbmRleCA0
YTg1M2ViNjQ5NTNkNGFlNDgzNGY4N2M1NDg3YWNkMzY0YzU3ZDgxLi5lMzJhMzZjNjA3NjE5MjE2
OGM2YTM3OTMxOGY3OGFlMTc4OWM0ODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBJbWFnZTo6aXNQb3N0U2Ny
aXB0UmVzb3VyY2UoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJMJiB1cmwpCiB9CiAK
IAotRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2U6OnNldERhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK0VuY29kZWREYXRhU3RhdHVzIEltYWdlOjpz
ZXREYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQogewogICAgIG1fZW5jb2RlZEltYWdlRGF0YSA9IFdURk1vdmUoZGF0YSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDZhMDgxNjk1N2Fh
OTNjNDExYTU2Y2Q0YzJiYzIwZGQ2ZDkwNDRkZWMuLjY1NWRmZTczY2ZmNmFkMWQwNGY0OGJjMjAx
OWViYjgwNDE3ZDYxMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
aApAQCAtNzAsNyArNzAsNyBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBGbG9hdFBv
aW50OwogY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBMZW5ndGg7
CiAKIC8vIFRoaXMgY2xhc3MgZ2V0cyBub3RpZmllZCB3aGVuIGFuIGltYWdlIGNyZWF0ZXMgb3Ig
ZGVzdHJveXMgZGVjb2RlZCBmcmFtZXMgYW5kIHdoZW4gaXQgYWR2YW5jZXMgYW5pbWF0aW9uIGZy
YW1lcy4KQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlv
bmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAg
ICAgdmlydHVhbCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4g
SW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBFbmNv
ZGVkRGF0YVN0YXR1cyBzZXREYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpOworICAgIFdFQkNPUkVfRVhQT1JUIEVuY29kZWREYXRhU3RhdHVzIHNl
dERhdGEoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpOwogICAgIHZpcnR1YWwgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQoYm9v
bCAvKmFsbERhdGFSZWNlaXZlZCovKSB7IHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6VW5rbm93
bjsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgdXRpKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7
IH0gLy8gbnVsbCBzdHJpbmcgaWYgdW5rbm93bgpAQCAtMTMzLDggKzEzMyw4IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsID0g
dHJ1ZSkgPSAwOwogCi0gICAgU2hhcmVkQnVmZmVyKiBkYXRhKCkgeyByZXR1cm4gbV9lbmNvZGVk
SW1hZ2VEYXRhLmdldCgpOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CisgICAgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogZGF0YSgpIHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQorICAg
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2Vu
Y29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgRGVzdGluYXRpb25Db2xvclNw
YWNlIGNvbG9yU3BhY2UoKTsKIApAQCAtMjA5LDcgKzIwOSw3IEBAIHByb3RlY3RlZDoKICAgICB2
aXJ0dWFsIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9y
KCk7IH0KIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2VuY29kZWRJbWFn
ZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fZW5jb2RlZEltYWdl
RGF0YTsKICAgICBJbWFnZU9ic2VydmVyKiBtX2ltYWdlT2JzZXJ2ZXI7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFRpbWVyPiBtX2FuaW1hdGlvblN0YXJ0VGltZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKaW5kZXggNGRk
YjZkZjgzZWNiOGI5Yjc5NTdmNDY2NGUxODRmMDA4MWU4MTAxMS4uZGUzM2YxYWY0MTJkYzA4YjJi
OTYxYTE5NDk0NWM5Y2M5MGFhNjYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCkBAIC02Niw3ICs2Niw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBidWZmZXIuZ3JvdyhidWZm
ZXJTaXplKTsKLSAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpj
cmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9waXhlbHMgPSBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAg
IG1fcGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8dWlu
dDhfdCo+KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICAgICAgbV9zaXplID0gc2l6ZTsKICAgICAg
ICAgbV9mcmFtZVJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSk7CkBAIC0yMDYsNyAr
MjA2LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9zaXplLmlzRW1wdHko
KSAmJiAhaXNPdmVyU2l6ZShtX3NpemUpKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZl
ciB7IG90aGVyLm1fcGl4ZWxzLT5kYXRhKCksIG90aGVyLm1fcGl4ZWxzLT5zaXplKCkgfTsKLSAg
ICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92
ZShidWZmZXIpKTsKKyAgICAgICAgbV9waXhlbHMgPSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fcGl4ZWxzUHRy
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8dWludDhfdCo+KG1fcGl4
ZWxzLT5kYXRhKCkpKTsKICAgICB9CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCBwcml2YXRlOgogICAg
ICAgICByZXR1cm4gUGFja2VkQ29sb3I6OkFSR0IgeyByZXN1bHQgfS52YWx1ZTsKICAgICB9CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9waXhlbHM7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3BpeGVsczsKICAgICB1
aW50MzJfdCogbV9waXhlbHNQdHIgeyBudWxscHRyIH07CiAgICAgSW50U2l6ZSBtX3NpemU7CiAg
ICAgSW50UmVjdCBtX2ZyYW1lUmVjdDsgLy8gVGhpcyB3aWxsIGFsd2F5cyBqdXN0IGJlIHRoZSBl
bnRpcmUgYnVmZmVyIGV4Y2VwdCBmb3IgR0lGIGFuZCBQTkcgZnJhbWVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAwODY5ZTk5
YTAwODg2ZjdjZDEyMTg2ZmUzMTYxZGUwNDdmYTUxMzYxLi43YzU0OTQ3ZjRkODE0MDg1NTljYzQ1
YzRhYzQ5YTE5YjlmYzg2Zjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBJbWFnZURlY29k
ZXI6OmNsZWFyRmFjdG9yaWVzKCkKIH0KICNlbmRpZgogCi1SZWZQdHI8SW1hZ2VEZWNvZGVyPiBJ
bWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXI+IEltYWdl
RGVjb2Rlcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBVTlVTRURfUEFSQU0o
bWltZVR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
RGVjb2Rlci5oCmluZGV4IGExYTA4YWRjMTc1ZDQ0YmFhNDQyZTQ0YTk0YWE5NjdhMDRmNWY2MDcu
LjZhOGZmY2I2MGZjMTE1NmViODQ4NzZkZWZiMDdjYmMwYjExOTg0OTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCkBAIC0zNywxMiArMzcs
MTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbWFnZURlY29kZXIgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VEZWNvZGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXI+IGNyZWF0
ZShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVy
PiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgdmlydHVhbCB+
SW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCiAgICAgZW51bSBjbGFzcyBNZWRpYVR5cGUgewpA
QCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIHVz
aW5nIFN1cHBvcnRzTWVkaWFUeXBlRnVuYyA9IEZ1bmN0aW9uPGJvb2woTWVkaWFUeXBlKT47CiAg
ICAgdXNpbmcgQ2FuRGVjb2RlVHlwZUZ1bmMgPSBGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYp
PjsKLSAgICB1c2luZyBDcmVhdGVJbWFnZURlY29kZXJGdW5jID0gRnVuY3Rpb248UmVmUHRyPElt
YWdlRGVjb2Rlcj4oU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgQWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKT47CisgICAgdXNpbmcgQ3JlYXRlSW1hZ2VEZWNvZGVy
RnVuYyA9IEZ1bmN0aW9uPFJlZlB0cjxJbWFnZURlY29kZXI+KEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImLCBjb25zdCBTdHJpbmcmLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pPjsKIAogICAgIHN0cnVjdCBJbWFnZURlY29kZXJGYWN0b3J5IHsKICAgICAgICAgU3VwcG9y
dHNNZWRpYVR5cGVGdW5jIHN1cHBvcnRzTWVkaWFUeXBlOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5
bmNocm9ub3VzKSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNp
emUobG9uZyBsb25nKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXIm
LCBib29sIGFsbERhdGFSZWNlaXZlZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZDgxYzQ4MDE5Mjg0
NmRkN2UzMjFjMmRmYmZiZjFlMGMyMGRhYTY3MS4uMzA3NzQzMzE1YTQxZWNhMWM5YjJiYzc3M2Qw
NzllZTVkNDNiYWY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmNwcApAQCAtNzIsNyArNzIsNyBAQCBJbWFnZVNvdXJjZTo6fkltYWdlU291
cmNlKCkKICAgICBBU1NFUlQoJm1fcnVuTG9vcCA9PSAmUnVuTG9vcDo6Y3VycmVudCgpKTsKIH0K
IAotYm9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShTaGFyZWRCdWZmZXIq
IGRhdGEpCitib29sIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZhaWxhYmxlKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKCFkYXRhIHx8IGlzRGVjb2RlckF2YWls
YWJsZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk2LDcgKzk2LDcgQEAgYm9vbCBJbWFn
ZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hhcmVkQnVmZmVy
KiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAg
ICAgaWYgKCFkYXRhIHx8ICFlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKGRhdGEpKQogICAgICAgICBy
ZXR1cm47CkBAIC0xMDQsMTMgKzEwNCwxMyBAQCB2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNo
YXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgbV9kZWNvZGVyLT5z
ZXREYXRhKCpkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCi12b2lkIEltYWdlU291cmNlOjpy
ZXNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBJbWFnZVNvdXJjZTo6cmVzZXREYXRh
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgbV9kZWNvZGVyID0gbnVsbHB0
cjsKICAgICBzZXREYXRhKGRhdGEsIGlzQWxsRGF0YVJlY2VpdmVkKCkpOwogfQogCi1FbmNvZGVk
RGF0YVN0YXR1cyBJbWFnZVNvdXJjZTo6ZGF0YUNoYW5nZWQoU2hhcmVkQnVmZmVyKiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKK0VuY29kZWREYXRhU3RhdHVzIEltYWdlU291cmNlOjpkYXRh
Q2hhbmdlZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKIHsKICAgICBzZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgY2xlYXJNZXRh
ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmgKaW5kZXggOGFmNTA4MGEwMGE5OTE2MDgwZjFmMGIyNzcwNzNjMmE4NTM0NTI1OC4uODE0ZjBl
MTJlYmFhNDhmODZhY2I1MjE5NzNjMzFkNWQzODJmNmZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJpdG1hcEltYWdlOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwogY2xhc3MgSW1hZ2VEZWNvZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSW1hZ2VTb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8SW1hZ2VTb3VyY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW1hZ2VTb3Vy
Y2U+IHsKICAgICBmcmllbmQgY2xhc3MgQml0bWFwSW1hZ2U7CkBAIC01Niw5ICs1Niw5IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VTb3VyY2UoV1RGTW92ZShu
YXRpdmVJbWFnZSkpKTsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyKiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgdm9pZCByZXNldERhdGEoU2hhcmVkQnVm
ZmVyKiBkYXRhKTsKLSAgICBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChTaGFyZWRCdWZm
ZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQg
cmVzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIEVuY29kZWREYXRh
U3RhdHVzIGRhdGFDaGFuZ2VkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKTsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCk7CiAKICAgICB1bnNp
Z25lZCBkZWNvZGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlZFNpemU7IH0KQEAgLTE1
NCw3ICsxNTQsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgVCBm
aXJzdEZyYW1lTWV0YWRhdGFDYWNoZUlmTmVlZGVkKFQmIGNhY2hlZFZhbHVlLCBNZXRhZGF0YVR5
cGUsIFQgKEltYWdlRnJhbWU6OipmdW5jdG9yKSgpIGNvbnN0LCBJbWFnZUZyYW1lOjpDYWNoaW5n
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiA9IHsgfSk7CiAKLSAgICBi
b29sIGVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBib29s
IGVuc3VyZURlY29kZXJBdmFpbGFibGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSk7CiAg
ICAgYm9vbCBpc0RlY29kZXJBdmFpbGFibGUoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXI7IH0K
ICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShzaXplX3QgZnJhbWVDb3VudCwgc2l6ZV90IGV4
Y2x1ZGVGcmFtZSk7CiAgICAgdm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQobG9uZyBsb25nIGRlY29k
ZWRTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01v
ZGVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAppbmRl
eCA1YWRlN2VmNjllMjlhNzdmMmI4NDA5MjllNjRiZTBjNDRlNTE2NDM5Li41NzdiZDUwOGE1YzQw
OWY0YmU5ZTRjZjIwMmI4MWU2MWU0NWI0NGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTW9kZWwuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorUmVmPE1vZGVsPiBNb2RlbDo6
Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJs
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vZGVsKFdURk1vdmUoZGF0YSksIFdURk1v
dmUobWltZVR5cGUpLCBXVEZNb3ZlKHVybCkpKTsKIH0KIAotTW9kZWw6Ok1vZGVsKFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK01v
ZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJM
IHVybCkKICAgICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9taW1lVHlwZShXVEZN
b3ZlKG1pbWVUeXBlKSkKICAgICAsIG1fdXJsKFdURk1vdmUodXJsKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmluZGV4IDkxNTYwYWU4OGZhNjRjMmEwYzEwMDE0MTRm
MzI0MWNlMDA1NmExZjQuLmU2YmRlMTY2Zjk0NGNkZTdkYjMyOGMyOTc2ZWM2ODJhZGI2ZDEwMzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaApAQCAtMzgsMTAgKzM4
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwgZmluYWwgOiBwdWJsaWMg
UmVmQ291bnRlZDxNb2RlbD4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8TW9kZWw+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBV
UkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hh
cmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1vZGVsKCk7
CiAKLSAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YTsgfQorICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2RhdGE7IH0KICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9t
aW1lVHlwZTsgfQogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0K
ICAgICAKQEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0g
ICAgZXhwbGljaXQgTW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywg
VVJMKTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVS
TCk7CiAKLSAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZjxT
aGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBVUkwgbV91
cmw7CiB9OwpAQCAtOTMsNyArOTMsNyBAQCBSZWZQdHI8TW9kZWw+IE1vZGVsOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CisgICAg
cmV0dXJuIE1vZGVsOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSks
IFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CiB9CiAKIFdFQkNPUkVfRVhQT1JU
IFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBNb2Rl
bCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRleCA3NDU5YzU4NThkMjQ4N2VmMmM1
ZmQzNzE3Mzk4NmIzMzczNGVjMjhhLi44ODY5MWRjMjU2ZDZkZDZjNDVmNDZlMDE1NDk2NzQyNDVh
YTM1MzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaApAQCAtNTEsOCArNTEsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAg
dmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1
bnNpZ25lZCBsb25nIGxvbmcpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgeyBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIGJlIHJlbW92ZWQg
b25jZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB1c2VzIFNoYXJlZEJ1ZmZlci4KKyAgICB2aXJ0
dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAg
ICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIENhY2hlZFJhd1Jlc291cmNl
Q2xpZW50IHVzZXMgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KICAgICB2aXJ0dWFsIHZvaWQgZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcGxhdGZvcm0sIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBsZW5ndGgpIHsgZGF0YVJlY2VpdmVkKHBsYXRmb3JtLCBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLCBsZW5ndGgpKTsgfQogICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NDb250cm9s
Q2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKaW5kZXggNTQ5OWYzN2E3
ZjM2NDZiZDVmMzk1YTQ4YjA5ZDk0MTFkNGM5YjY2NC4uZDNlMWI1ODA0ZTg1YTk5MTFjZjIwZmNl
ZDM0YmYyNTVhMzE0NDM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTEzMTgsNyArMTMxOCw3IEBA
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZVNhbXBsZShSZWY8TWVkaWFTYW1w
bGU+JiYgb3JpZ2luYWxTYW1wbGUpCiAgICAgdXBkYXRlSGlnaGVzdFByZXNlbnRhdGlvblRpbWVz
dGFtcCgpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZChSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBhcHBlbmQoYnVmZmVyLT5l
eHRyYWN0RGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAppbmRleCBlZjg2YTQ3MzY5MzcxYzgzZTg4M2Iy
OWJiYjZiOWFiOTZlY2E1ZjFkLi42YjdkOTVlNTJiOWRmMGM4MWFmM2JlMWQ2ZDlmM2M4ZWQzOTU0
MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VC
dWZmZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291
cmNlQnVmZmVyUHJpdmF0ZS5oCkBAIC00OSw3ICs0OSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IGNsYXNzIFRpbWVSYW5nZXM7CiAKIGVudW0gY2xhc3MgU291cmNlQnVmZmVyQXBwZW5kTW9kZSA6
IHVpbnQ4X3QgewpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB+U291cmNlQnVmZmVyUHJpdmF0ZSgpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEFj
dGl2ZShib29sKSA9IDA7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGFwcGVuZChS
ZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgYXBw
ZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgYWJv
cnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKaW5kZXggYTBl
NzNiM2YzZWJjYjNjNzgwZmUzNTFlOWQ2YTgwYjZmYjkwNTViNC4uYjM3ZWJmYzU2MjA0OGZlNmQ3
OTQxZDJlNWNjMWJjYTFkYzE1NzFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcApAQCAtMzcsNyArMzcsNyBAQCBzdGF0aWMg
Y29uc3QgdWludDMyX3Qga1dvZmYyU2lnbmF0dXJlID0gMHg3NzRmNDYzMjsgLy8gIndPRjIiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgcmVhZFVJbnQzMihDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCitz
dGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNl
dCwgdWludDMyX3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0g
YnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2Yo
dmFsdWUpKQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgYm9vbCByZWFkVUludDMyKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JgogICAgIHJl
dHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCByZWFkVUludDE2KENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKK3N0YXRpYyBi
b29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50
MTZfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIu
c2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkp
CkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBib29sIHdyaXRlVUludDE2KFZlY3Rvcjx1aW50OF90
PiYgdmVjdG9yLCB1aW50MTZfdCB2YWx1ZSkKIAogc3RhdGljIGNvbnN0IHVpbnQzMl90IHdvZmZT
aWduYXR1cmUgPSAweDc3NGY0NjQ2OyAvKiAnd09GRicgKi8KIAotYm9vbCBpc1dPRkYoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgc2l6ZV90IG9mZnNldCA9IDA7CiAgICAgdWludDMyX3Qgc2lnbmF0dXJlOwpA
QCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiB9OwogI2VuZGlmCiAKLWJvb2wgY29udmVydFdP
RkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBz
Zm50KQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1
aW50OF90PiYgc2ZudCkKIHsKICAgICBBU1NFUlRfQVJHKHNmbnQsIHNmbnQuaXNFbXB0eSgpKTsK
IApAQCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogICAgIHJldHVybiBzZm50
LnNpemUoKSA9PSB0b3RhbFNmbnRTaXplOwogfQogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZO
ZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCitib29sIGNv
bnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikK
IHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKQEAgLTI5
NCw3ICsyOTQsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAKICAgICBWZWN0b3I8dWludDhfdD4gY29u
dmVydGVkRm9udDsKICAgICBpZiAoY29udmVydFdPRkZUb1NmbnQoKmJ1ZmZlciwgY29udmVydGVk
Rm9udCkpCi0gICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsKKyAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CiAgICAgZWxzZQogICAgICAgICBidWZmZXIg
PSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XT0ZGRmlsZUZvcm1hdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09G
RkZpbGVGb3JtYXQuaAppbmRleCA3OGFjNGE3YWZmZjRkNGJlZTlmZDAyY2FiZTdhOThmMmZlN2Rk
ZTgyLi4zZDU3MDEwN2YyOGY4NTQ0NzQxZTM0OTVjMDE2MDdlNGRlOTAyZDVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKQEAgLTMw
LDE5ICszMCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIC8vIFJldHVybnMgd2hldGhlciB0
aGUgYnVmZmVyIGlzIGEgV09GRiBmaWxlLgotYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYpOworYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJik7CiAKIC8vIFJldHVybnMgZmFsc2Ug
aWYgdGhlIFdPRkYgZmlsZSB3b2ZmIGlzIGludmFsaWQgb3IgY291bGQgbm90IGJlIGNvbnZlcnRl
ZCB0byBzZm50IChmb3IgZXhhbXBsZSwKIC8vIGlmIGNvbnZlcnNpb24gcmFuIG91dCBvZiBtZW1v
cnkpLiBPdGhlcndpc2UgcmV0dXJucyB0cnVlIGFuZCB3cml0ZXMgdGhlIHNmbnQgcGF5bG9hZCBp
bnRvIHNmbnQuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7Citib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNo
YXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKIAogLy8gSWYgdGhlIGdp
dmVuIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZSBhbmQgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaGFzIG5v
IG5hdGl2ZSBzdXBwb3J0IGZvciBXT0ZGCiAvLyBmb250cywgY29udmVydCBpdCB0byBzZm50LiBS
ZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGJ1ZmZlciB3YXMgY29udmVydGVkLiBJZiBjb252ZXJz
aW9uIGZhaWxzLAogLy8gdGhlIGJ1ZmZlciB3aWxsIGJlIHNldCB0byBudWxscHRyLgotYm9vbCBj
b252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZm
ZXI+Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1G
YWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggZDdjMDEzZDU0ZTNkZWQwNzg1NDkwMjhkNTFkNmUw
MjhjOTc1MDdjNi4uOGIwNGY5YmU5NmMzNmUwYTI2MjE4MGEyNWVhMzc0NTk2MmIzZDdkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NE
TUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC04Niw3ICs4Niw3
IEBAIGNvbnN0IEF0b21TdHJpbmcmIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFt
ZSgpCiAgICAgcmV0dXJuIHNrZDsKIH0KIAotc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSlNPTiBvZiB0aGUgZm9y
bWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVm
ZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKQEAgLTEw
NSw3ICsxMDUsNyBAQCBzdGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2lu
ZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKCFzaW5mQXJyYXkpCiAg
ICAgICAgIHJldHVybiB7IH07CiAKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IHNpbmZz
OworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHNpbmZzOwogICAgIHNp
bmZzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2luZkFycmF5LT5sZW5ndGgoKSk7CiAKICAgICBm
b3IgKGF1dG8mIHZhbHVlIDogKnNpbmZBcnJheSkgewpAQCAtMTI0LDcgKzEyNCw3IEBAIHN0YXRp
YyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIH0KIAogdXNpbmcgU2NoZW1lQW5kS2V5UmVzdWx0ID0gVmVjdG9yPHN0
ZDo6cGFpcjxGb3VyQ0MsIFZlY3Rvcjx1aW50OF90Pj4+Owotc3RhdGljIFNjaGVtZUFuZEtleVJl
c3VsdCBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK3N0YXRpYyBTY2hlbWVBbmRLZXlSZXN1bHQgZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJv
bVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8g
YnVmZmVycyA9IGV4dHJhY3RTaW5mRGF0YShidWZmZXIpOwogICAgIGlmICghYnVmZmVycy5zaXpl
KCkpCkBAIC0xNzAsOSArMTcwLDkgQEAgc3RhdGljIFNjaGVtZUFuZEtleVJlc3VsdCBleHRyYWN0
U2NoZW1lQW5kS2V5SWRGcm9tU2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmYKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+
IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNT
aW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAgYXV0byByZXN1bHRzID0gZXh0cmFjdFNjaGVtZUFuZEtl
eUlkRnJvbVNpbmYoYnVmZmVyKTsKIAogICAgIGZvciAoYXV0byYgcmVzdWx0IDogcmVzdWx0cykg
ewpAQCAtMTgzLDcgKzE4Myw3IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5CiAgICAgcmV0dXJu
IGtleUlEczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3Ry
ZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5p
dGl6ZVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8v
IENvbW1vbiBTSU5GIEJveCBGb3JtYXQKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKQEAgLTE5
MSwxNyArMTkxLDE3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6c2FuaXRpemVTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlCiAgICAgcmV0dXJuIGJ1ZmZl
ci5jb3B5KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6c2FuaXRpemVTa2QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5p
dGl6ZVNrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGJ1ZmZlcik7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gYnVm
ZmVyLmNvcHkoKTsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTa2QoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNT
a2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEluIHRo
ZSAnc2tkJyBzY2hlbWUsIHRoZSBpbml0IGRhdGEgaXMgdGhlIGtleSBJRC4KLSAgICBWZWN0b3I8
UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAga2V5SURzLmFwcGVuZChidWZmZXIuY29weSgpKTsKICAg
ICByZXR1cm4ga2V5SURzOwogfQpAQCAtMzkzLDcgKzM5Myw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGlu
aXREYXRhKSBjb25zdAorYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAgICBpZiAoIXZhbGlkSW5pdERhdGFU
eXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTQyMyw3ICs0MjMsNyBAQCBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9y
dHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNl
KSBjb25zdAogewogICAgIHJldHVybiByZXNwb25zZS5jb3B5KCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlT
dHJlYW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCmluZGV4IGJjOTNmNmY2YTdiZGQwMWVmYmY1NWI2MmJk
YjZhNGU2NmVmOTEyYjMuLjMxN2JiOGQ1N2U4NmMwNjIxNGUwYjQwNTlkZGY0Zjg4MDdjNzRjNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCkBAIC03MSwxNyArNzEs
MTcgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBvdmVycmlkZTsKICAg
ICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBv
dmVycmlkZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0
YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0
IG92ZXJyaWRlOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJl
c3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKICAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc2luZk5hbWUo
KTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBl
eHRyYWN0S2V5SURzU2luZihjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBl
eHRyYWN0S2V5SURzU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3Rh
dGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNpbmYoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHNr
ZE5hbWUoKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZl
cj4+PiBleHRyYWN0S2V5SURzU2tkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNrZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
Pj4gZXh0cmFjdEtleUlEc1NrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAg
c3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNrZChjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPEZvdXJD
Qz4mIHZhbGlkRmFpclBsYXlTdHJlYW1pbmdTY2hlbWVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlwdGlv
blV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vRm9ybWF0RGVzY3JpcHRpb25VdGlsaXRpZXMuY3BwCmluZGV4IGZjOWFhOTlhNjlkZmFl
ODllNjViMmFiM2FmNDg5MTQwNzY4NWZkYmQuLjE2MTFiYWFjNDM3MGI1ZmM5OGEyOTIwNzcyMzVk
NDVlMDJiNWQwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlwdGlvblV0aWxpdGllcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0Zvcm1hdERlc2NyaXB0aW9u
VXRpbGl0aWVzLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIFN0cmluZyBjb2RlY0Zyb21Gb3JtYXRE
ZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uKQogICAg
ICAgICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPihD
RkRpY3Rpb25hcnlHZXRWYWx1ZShzYW1wbGVFeHRlbnNpb25zRGljdCwgQ0ZTVFIoImF2Y0MiKSkp
OwogICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRlbnNpb25zKQogICAgICAgICAgICAgICAgIHJl
dHVybiAiYXZjMSI7Ci0gICAgICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7CisgICAg
ICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKICAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IHBh
cnNlQVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uZmlndXJhdGlvblJlY29yZEJ1ZmZl
cik7CiAgICAgICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCiAgICAgICAgICAgICAgICAgcmV0dXJu
ICJhdmMxIjsKQEAgLTEyMiw3ICsxMjIsNyBAQCBTdHJpbmcgY29kZWNGcm9tRm9ybWF0RGVzY3Jp
cHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbikKICAgICAgICAg
ICAgIGF1dG8gc2FtcGxlRXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUoc2FtcGxlRXh0ZW5zaW9uc0RpY3QsIENGU1RSKCJodmNDIikpKTsKICAg
ICAgICAgICAgIGlmICghc2FtcGxlRXh0ZW5zaW9ucykKICAgICAgICAgICAgICAgICByZXR1cm4g
Imh2YzEiOwotICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNhbXBsZUV4dGVuc2lvbnMpOworICAgICAgICAg
ICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c2FtcGxlRXh0ZW5zaW9ucyk7CiAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBwYXJzZUhF
VkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChrQ01WaWRlb0NvZGVjVHlwZV9IRVZDLCBjb25m
aWd1cmF0aW9uUmVjb3JkQnVmZmVyKTsKICAgICAgICAgICAgIGlmICghcGFyYW1ldGVycykKICAg
ICAgICAgICAgICAgICByZXR1cm4gImh2YzEiOwpAQCAtMTM3LDcgKzEzNyw3IEBAIFN0cmluZyBj
b2RlY0Zyb21Gb3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERl
c2NyaXB0aW9uKQogICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25zID0gc3RhdGljX2Nh
c3Q8Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzYW1wbGVFeHRlbnNpb25zRGljdCwg
Q0ZTVFIoImR2Y0MiKSkpOwogICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRlbnNpb25zKQogICAg
ICAgICAgICAgICAgIHJldHVybiAiZHZoMSI7Ci0gICAgICAgICAgICBhdXRvIGNvbmZpZ3VyYXRp
b25SZWNvcmRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2FtcGxlRXh0
ZW5zaW9ucyk7CisgICAgICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKICAgICAgICAgICAgIGF1dG8g
cGFyYW1ldGVycyA9IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbmZpZ3Vy
YXRpb25SZWNvcmRCdWZmZXIpOwogICAgICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKQogICAgICAg
ICAgICAgICAgIHJldHVybiAiZHZoMSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAppbmRleCAxNTli
OTBjZGI0OGY3ZmU0NGJiNDliZTJlYzFjMWMyZjQzMjg2NDAwLi41NmI1OGMyNWEyODcwOWZiMzgy
MjE4MzllNTViYWU0NWVkOTNjZjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAgLTg0LDcg
Kzg0LDcgQEAgcHVibGljOgogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5
cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkZhaXJQbGF5U3Ry
ZWFtaW5nOyB9CiAKICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBB
bGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQg
c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNr
JiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0
b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUmVmUHRyPENETUluc3Rh
bmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwogICAgIHZvaWQgc2V0Q2xpZW50KFdl
YWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+JiYpIGZpbmFsOwpAQCAtOTQsMTAgKzk0LDEwIEBAIHB1
YmxpYzoKIAogICAgIE5TVVJMICpzdG9yYWdlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdl
VVJMLmdldCgpOyB9CiAgICAgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkKCkgY29uc3QgeyBy
ZXR1cm4gbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkOyB9Ci0gICAgU2hhcmVkQnVmZmVyKiBzZXJ2
ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7
IH0KKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0KICAgICBBVkNvbnRlbnRLZXlT
ZXNzaW9uKiBjb250ZW50S2V5U2Vzc2lvbigpOwogCi0gICAgUmV0YWluUHRyPEFWQ29udGVudEtl
eVJlcXVlc3Q+IHRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpOwor
ICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiB0YWtlVW5leHBlY3RlZEtleVJlcXVl
c3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSk7CiAKICAgICAvLyBBVkNvbnRlbnRLZXlT
ZXNzaW9uRGVsZWdhdGVDbGllbnQKICAgICB2b2lkIGRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVu
dEtleVJlcXVlc3QqKSBmaW5hbDsKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdl
ZChib29sKSBmaW5hbDsKICAgICB2b2lkIGV4dGVybmFsUHJvdGVjdGlvblN0YXR1c0RpZENoYW5n
ZUZvckNvbnRlbnRLZXlSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBmaW5hbDsKIAotICAg
IHVzaW5nIEtleXMgPSBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5nIEtleXMg
PSBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAgICBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JLZXlJRHMoY29uc3QgS2V5
cyYpIGNvbnN0OwogICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qyogc2Vzc2lvbkZvckdyb3VwKEFWQ29udGVudEtleVJlcG9ydEdyb3VwKikgY29uc3Q7CiAgICAg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yUmVx
dWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgY29uc3Q7CkBAIC0xMjksNyArMTI5LDcgQEAgcHJp
dmF0ZToKICAgICBXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50PiBtX2NsaWVudDsKICAgICBSZXRh
aW5QdHI8QVZDb250ZW50S2V5U2Vzc2lvbj4gbV9zZXNzaW9uOwogICAgIFJldGFpblB0cjxXZWJD
b3JlRlBTQ29udGVudEtleVNlc3Npb25EZWxlZ2F0ZT4gbV9kZWxlZ2F0ZTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOwogICAgIGJvb2wgbV9wZXJzaXN0ZW50
U3RhdGVBbGxvd2VkIHsgdHJ1ZSB9OwogICAgIFJldGFpblB0cjxOU1VSTD4gbV9zdG9yYWdlVVJM
OwogICAgIFZlY3RvcjxXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQz4+IG1fc2Vzc2lvbnM7CkBAIC0xNTAsOCArMTUwLDggQEAgcHVibGljOgogI2VuZGlm
CiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb24KLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExp
Y2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYs
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Cisg
ICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Np
b24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9p
ZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vz
c2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXgg
NjJiZDEzNDc5YzZjMzM2MmNiZTcyNTFiZjY5ZWE4ZDFmODEwYmUyNS4uYmE1MDYxZWJiNWM1ZmJl
MDc0ZDNhMjlkZWE0ZjkxOGZjMjYyMWNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KQEAg
LTIxNyw3ICsyMTcsNyBAQCBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAogICAgIHJl
dHVybiBBdG9tU3RyaW5nKG5zSW5pdFR5cGUpOwogfQogCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gaW5pdGlhbGl6YXRpb25EYXRhRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KiByZXF1
ZXN0KQorc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0aWFsaXphdGlvbkRh
dGFGb3JSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgaWYgKCFy
ZXF1ZXN0KQogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKQEAgLTI2NSw3
ICsyNjUsNyBAQCBBVkNvbnRlbnRLZXlTZXNzaW9uKiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6Y29udGVudEtleVNlc3Npb24oKQogICAgIHJldHVybiBtX3Nlc3Npb24uZ2V0
KCk7CiB9CiAKLVJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiBDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6dGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6
YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkKK1JldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiBDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6dGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6
YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgZm9yIChhdXRvIHJlcXVlc3RJdGVyID0gbV91bmV4
cGVjdGVkS2V5UmVxdWVzdHMuYmVnaW4oKTsgcmVxdWVzdEl0ZXIgIT0gbV91bmV4cGVjdGVkS2V5
UmVxdWVzdHMuZW5kKCk7ICsrcmVxdWVzdEl0ZXIpIHsKICAgICAgICAgYXV0byYgcmVxdWVzdCA9
ICpyZXF1ZXN0SXRlcjsKQEAgLTMxNiw3ICszMTYsNyBAQCBwcml2YXRlOgogICAgIFJlc3BvbnNl
TWFwIG1fcmVzcG9uc2VzOwogfTsKIAotc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VK
U09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgUmVmUHRyPEpTT046
OlZhbHVlPiBwYXJzZUpTT05WYWx1ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgLy8gRmFpbCBvbiBsYXJnZSBidWZmZXJzIHdob3NlIHNpemUgZG9lc24ndCBm
aXQgaW50byBhIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLgogICAgIHNpemVfdCBzaXplID0gYnVm
ZmVyLnNpemUoKTsKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIENETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNSwog
ICAgIGNhbGxiYWNrKGluaXRpYWxpemUoKSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+
JiYgc2VydmVyQ2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBD
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgc2VydmVyQ2VydGlmaWNhdGUsIFN1Y2Nlc3ND
YWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVO
VElGSUVSKTsKICAgICBtX3NlcnZlckNlcnRpZmljYXRlID0gV1RGTW92ZShzZXJ2ZXJDZXJ0aWZp
Y2F0ZSk7CkBAIC01ODUsOCArNTg1LDggQEAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDKiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzoKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8gc2Vzc2lvbktleXMgPSBzZXNzaW9uSW50
ZXJmYWNlLT5rZXlJRHMoKTsKLSAgICAgICAgaWYgKGFueU9mKHNlc3Npb25LZXlzLCBbJl0oY29u
c3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIHNlc3Npb25LZXkpIHsKLSAgICAgICAgICAgIHJldHVybiBr
ZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYga2V5SUQpIHsK
KyAgICAgICAgaWYgKGFueU9mKHNlc3Npb25LZXlzLCBbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiBzZXNzaW9uS2V5KSB7CisgICAgICAgICAgICByZXR1cm4ga2V5SURzLmZp
bmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBrZXlJRCkg
ewogICAgICAgICAgICAgICAgIHJldHVybiBrZXlJRC5nZXQoKSA9PSBzZXNzaW9uS2V5LmdldCgp
OwogICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQ7CiAgICAgICAgIH0pKQpAQCAtNjczLDcgKzY3
Myw3IEBAIEtleXMgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpr
ZXlJRHMoKQogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNl
bnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7CiAgICAgaWYgKCFpc0xpY2Vuc2VUeXBlU3VwcG9ydGVkKGxpY2Vuc2VUeXBlKSkgewog
ICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBmYWxzZSwgbGlj
ZW5zZVR5cGUgXCIiLCBsaWNlbnNlVHlwZSwgIlwiIG5vdCBzdXBwb3J0ZWQiKTsKQEAgLTczNiw3
ICs3MzYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZQogICAgIH0KIH0KIAotc3RhdGljIGJv
b2wgaXNFcXVhbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUp
CitzdGF0aWMgYm9vbCBpc0VxdWFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IGRhdGEudHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBpZiAoIWFycmF5QnVmZmVyKQpAQCAtNzU0LDcgKzc1
NCw3IEBAIHN0YXRpYyBib29sIGlzRXF1YWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25z
dCBTdHJpbmcmIHZhbHVlKQogICAgIHJldHVybiBzdHJpbmdPckV4Y2VwdGlvbi5yZXR1cm5WYWx1
ZSgpID09IHZhbHVlOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNh
bGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCiB7CiAgICAgaWYgKCFtX2V4cGlyZWRTZXNzaW9ucy5pc0VtcHR5KCkgJiYgaXNFcXVh
bChyZXNwb25zZURhdGEsICJhY2tub3dsZWRnZWQiX3MpKSB7CiAgICAgICAgIGF1dG8qIGNlcnRp
ZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKTsKQEAgLTg1Niw3ICs4NTYs
NyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICAgICAgYXV0byBrZXlJRCA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKmtleUlEVmVjdG9yKSk7CiAgICAgICAgICAgICBh
dXRvIGZvdW5kSW5kZXggPSBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmluZE1h
dGNoaW5nKFsmXSAoYXV0byYgcmVxdWVzdCkgewogICAgICAgICAgICAgICAgIGF1dG8ga2V5SURz
ID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4ga2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGlkKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgaWQpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGlkLmdldCgpID09IGtleUlELmdldCgpOwogICAgICAgICAgICAgICAgIH0pICE9IG5vdEZv
dW5kOwogICAgICAgICAgICAgfSk7CkBAIC0xMTU1LDcgKzExNTUsNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZl
Y3RvcjxSZXRhaQogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZl
ckNlcnRpZmljYXRlKCkpCiAgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKLSAgICB1c2luZyBSZXF1ZXN0c0RhdGEg
PSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRh
Pj4+OworICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OwogICAgIHN0cnVjdCBD
YWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2Fs
bGJhY2tBZ2dyZWdhdG9yPiB7CiAgICAgICAgIHVzaW5nIENhbGxiYWNrRnVuY3Rpb24gPSBGdW5j
dGlvbjx2b2lkKFJlcXVlc3RzRGF0YSYmKT47CiAgICAgICAgIHN0YXRpYyBSZWZQdHI8Q2FsbGJh
Y2tBZ2dyZWdhdG9yPiBjcmVhdGUoQ2FsbGJhY2tGdW5jdGlvbiYmIGNvbXBsZXRpb25IYW5kbGVy
KQpAQCAtMTIxMSw3ICsxMjExLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICBAdHJ5
IHsKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCku
cmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChy
ZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUlEID0g
V1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7CisgICAgICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKICAgICAgICAgICAg
IGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRl
TlNEYXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJl
cXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29u
dGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W2tleUlE
ID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0
RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgICAgIFVOVVNFRF9Q
QVJBTShlcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpD
LmgKaW5kZXggMDMzNGQ2MjNiMmE3NjA1YzliZTEyMjEzYjVhYmRiYmFjMmIwM2YxNS4uNjJiODNm
YmZkNTc5NDA1MGViYzk0MDYzNzA0OTBiYTJiM2VjMDg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBXZWJD
b3JlRGVjb21wcmVzc2lvblNlc3Npb247CiAKIGNsYXNzIEltYWdlRGVjb2RlckFWRk9iakMgOiBw
dWJsaWMgSW1hZ2VEZWNvZGVyIHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4g
Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBB
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfklt
YWdlRGVjb2RlckFWRk9iakMoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHN1
cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSk7CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNv
bnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cykpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFeHBlY3RlZENv
bnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRE
YXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAgLTk0LDcgKzk0
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxJbWFnZURlY29kZXI6OkZy
YW1lSW5mbz4gZnJhbWVJbmZvcygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIEltYWdlRGVjb2Rl
ckFWRk9iakMoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBJbWFnZURlY29kZXJBVkZPYmpD
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgQVZBc3NldFRyYWNrICpm
aXJzdEVuYWJsZWRUcmFjaygpOwogICAgIHZvaWQgcmVhZFNhbXBsZXMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdl
RGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IGE1NGRmM2RiYWRmOTA0
ZjQ1NDg0YjhjZTViY2E0OWZjNTU2OGZlYjkuLjM1YzZjZTY3ZTg1Zjg2YWUxNjRjMjFhNzI2MDdm
YzA2NWVjYjUwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5tbQpAQCAtMjg5LDcgKzI4OSw3IEBAIEltYWdlRGVjb2RlckFWRk9iakNTYW1wbGUqIHRv
U2FtcGxlKEl0ZXJhdG9yIGl0ZXIpCiAKICNwcmFnbWEgbWFyayAtIEltYWdlRGVjb2RlckFWRk9i
akMKIAotUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNy
ZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJB
VkZPYmpDOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIC8vIEFWRm91bmRhdGlv
biBtYXkgbm90IGJlIGF2YWlsYWJsZSBhdCBydW50aW1lLgogICAgIGlmICghQVZBc3NldE1JTUVU
eXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpCkBAIC0zMDEsNyArMzAxLDcgQEAg
UmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShT
aGFyZWRCdWZmZXImIGRhdGEsIGNvbnMKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURl
Y29kZXJBVkZPYmpDKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pKTsKIH0KIAotSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZG
T2JqQyhTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckFWRk9iakM6Oklt
YWdlRGVjb2RlckFWRk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQog
ICAgIDogSW1hZ2VEZWNvZGVyKCkKICAgICAsIG1fbWltZVR5cGUobWltZVR5cGUpCiAgICAgLCBt
X3V0aShXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpKQpAQCAtNjQxLDcgKzY0MSw3
IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25n
IGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKICAgICBtX2xvYWRlci5nZXQoKS5leHBlY3RlZENv
bnRlbnRTaXplID0gZXhwZWN0ZWRDb250ZW50U2l6ZTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJB
VkZPYmpDOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
Cit2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgW21fbG9hZGVyIHVwZGF0ZURh
dGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTph
bGxEYXRhUmVjZWl2ZWRdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggMjdmMWVkMDgyYWY2
YmY5NzY4ZGUwNGUwMDRlZjI1NmRjZjI1MjQ5MS4uZWI0NTUyZTU2YTUxYWE2MGNjYzNkZWEzNzQz
YjYzNGUxMGRkMzY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtNjcsNyArNjcsNyBAQCBj
bGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY7CiBjbGFzcyBNZWRpYVBsYXli
YWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7CiBjbGFzcyBQaXhl
bEJ1ZmZlckNvbmZvcm1lckNWOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzsKIGNsYXNzIFZpZGVv
VHJhY2tQcml2YXRlQVZGT2JqQzsKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjsKQEAg
LTQyNyw3ICs0MjcsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxXYWxs
VGltZT4gbV93YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRUaW1lOwogICAgIG11dGFibGUgaW50IG1f
dGltZUNvbnRyb2xTdGF0dXNBdENhY2hlZEN1cnJlbnRUaW1lIHsgMCB9OwogICAgIG11dGFibGUg
ZG91YmxlIG1fcmVxdWVzdGVkUmF0ZUF0Q2FjaGVkQ3VycmVudFRpbWUgeyAwIH07Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gbV9rZXlJRDsKICAgICBkb3VibGUgbV9jYWNoZWRSYXRlIHsgMCB9OwogICAgIGJvb2wg
bV9yZXF1ZXN0ZWRQbGF5aW5nIHsgZmFsc2UgfTsKICAgICBkb3VibGUgbV9yZXF1ZXN0ZWRSYXRl
IHsgMS4wIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBlYmYxYWI1OGFkNTc0NWE0MDI2
YmUwM2VlZWFkYzdjODhjMGNiZWJlLi4xNWRiNWVlZjZmYzMzNGNlMjllOGYyYmJlMThkYTQzZjQ1
NjBlYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTI3OTgsNyArMjc5OCw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YXR0ZW1wdFRvRGVjcnlwdFdp
dGhJbnN0YW5jZShDRE1JbnN0YW5jCiAgICAgaWYgKCFtX2tleUlEIHx8ICFtX2NkbUluc3RhbmNl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1fY2RtSW5z
dGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMoVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgq
bV9rZXlJRCkpOworICAgIGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vz
c2lvbkZvcktleUlEcyhWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgq
bV9rZXlJRCkpOwogICAgIGlmICghaW5zdGFuY2VTZXNzaW9uKQogICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5oCmluZGV4IDAzNDIwZjEzODM2NGZhYzIwOTFlMTA0ZDEzNmZmMzhhMWZiOWZlMjIuLmVhZDA4
M2E2Y2M3ZTczNmI0MjE3MTBmYWMzOTJhMDdkZmY5MmJlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtNzMsNyArNzMs
NyBAQCBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZTsKIGNsYXNzIEF1ZGlvVHJhY2tQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOwogY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM7CiBjbGFzcyBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb247Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQ0Vycm9yQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTE1Myw3ICsxNTMsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSWQoUmVmPE1lZGlh
U2FtcGxlPiYmLCB1aW50NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CiAK
ICAgICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcwotICAgIHZvaWQgYXBwZW5kKFJl
ZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9p
ZCByZXNldFBhcnNlclN0YXRlKCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291
cmNlKCkgZmluYWw7CkBAIC0yMjEsNyArMjIxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKICAgICBS
ZWZQdHI8Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+IG1fY2RtSW5zdGFuY2U7
Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBtX2tleUlEczsKKyAgICBWZWN0b3I8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX2tleUlEczsKICNlbmRpZgogCiAgICAgc3RkOjpv
cHRpb25hbDxGbG9hdFNpemU+IG1fY2FjaGVkU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggM2EyODY3YTFhYzI0
M2JiOWM5M2M5ZDZiNzBjYTU2YjAyOTQ4ZmM5Yy4uMjRhZTBlMTQwNjAxOTE0M2ZhZDRmMTUyOWU2
OGVkNDliNDE2NTNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTU2Myw3ICs1NjMsNyBAQCB2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXph
dGlvbkRhdGFGbwogICAgIFVOVVNFRF9QQVJBTShoYXNTZXNzaW9uU2VtYXBob3JlKTsKIH0KIAot
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+
JiYgZGF0YSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUiwgImRhdGEgbGVuZ3RoID0gIiwgZGF0YS0+c2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCA1ODM4ZTQ5Mzdk
Zjg5ZjU4NjFhY2Q5ZDk2ZGMxMjI5NWI2YmM3NDNkLi4wZWZlZWFlZjViMmQ3MWJjNmQ2NzA0ZGQx
Yjk3NWFjYmFlMTEzYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOwogY2xhc3MgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVy
OwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXI+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwog
ICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2Fk
RmluaXNoZWQoKTsKLSAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBT
aGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDKiBtX3BhcmVudDsKICAgICBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9h
ZGluZ1JlcXVlc3Q+IG1fYXZSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGI2ZTIzN2I1ZGY1ZGRmNmE3MmQ1NDE2
OTVhMDc4MjMxODFhY2FkYWQuLmY5MjFmM2RhMGU2OWIzMzk5NzdjOWUzZTQ5NjY3YTI4ZjVlOTVj
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIubW0KQEAgLTE1Niw3ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVkaXJlY3RS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsIHsgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1
bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgZmluYWwgeyB9Ci0gICAgdm9p
ZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29u
dHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmFp
bGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBm
aW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBsb2Fk
RmluaXNoZWQoKTsgfQpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwog
fQogCi12b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBQbGF0
Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgbV9idWZm
ZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZElu
U2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQoKSk7CkBAIC0yMjUsNyArMjI1LDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAg
IFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9
OwogCiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2Fk
ZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QpCkBAIC0yMzUsNyArMjM1LDcgQEAgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRh
dGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYKIAogICAg
IGlmIChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNvZGVyOjpkZWNvZGUocmVxdWVzdC51cmwoKSwg
RGF0YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmluZ0Jhc2U2NCkpIHsKICAgICAgICAgbV9yZXNw
b25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShyZXF1ZXN0LnVybCgpLCAq
cmVzdWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKKyAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOwogICAgIH0KIAogICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKQEAgLTM4NSw3
ICszODUsNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkK
ICAgICBzdG9wTG9hZGluZygpOwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6
bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3Zv
aWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBVkFzc2V0UmVzb3Vy
Y2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1
ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5o
CmluZGV4IDQ2YjA3ZmU3MTJlNzllNjEzMTdjMGQxMTZmZTZhM2YwNGFmOWZmY2IuLjk0MTliY2Vh
MzhkYmY4ZDY0OTJmNjgwMWQ5YTIxNTYyMzY2YTJjNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmgKQEAgLTMxLDExICszMSwxMSBAQCB0eXBlZGVmIHN0cnVjdCBGVF9GYWNlUmVjXyog
IEZUX0ZhY2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7
CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250
U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGlu
Z3M7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZv
bnRDdXN0b21QbGF0Zm9ybURhdGEpOwogcHVibGljOgotICAgIEZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoRlRfRmFjZSwgU2hhcmVkQnVmZmVyJik7CisgICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShG
VF9GYWNlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgfkZvbnRDdXN0b21QbGF0Zm9y
bURhdGEoKSA9IGRlZmF1bHQ7CiAgICAgRm9udFBsYXRmb3JtRGF0YSBmb250UGxhdGZvcm1EYXRh
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZv
bnRDcmVhdGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zvcm1hdChjb25z
dCBTdHJpbmcmKTsKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Y2Fpcm9f
Zm9udF9mYWNlX3Q+IG1fZm9udEZhY2U7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3Rv
bVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5k
ZXggMjAzNWM5OWE3ZjY4YjU0ODljODU4YTNlNmQ3MDMzZDEzNWQxZjdkYi4uYjZkM2ViMzYzMTEy
NDQ2MTNiMzgwM2YyZjNkMjRkMzA4N2VhMjRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjMxLDcgKzIz
MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXpl
RnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVmCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogc2l6
ZV90IHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZm
ZXIsIG9mZl90IHBvc2l0aW9uLCBzaXplX3QgY291bnQpCiB7Ci0gICAgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cio+KGluZm8pOworICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8
U2hhcmVkQnVmZmVyKj4oaW5mbyk7CiAgICAgc2l6ZV90IHNvdXJjZVNpemUgPSBzaGFyZWRCdWZm
ZXItPnNpemUoKTsKICAgICBpZiAocG9zaXRpb24gPj0gc291cmNlU2l6ZSkKICAgICAgICAgcmV0
dXJuIDA7CkBAIC0yNDQsMTIgKzI0NCwxMiBAQCBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNB
dFBvc2l0aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24sCiAKIHZv
aWQgc2hhcmVkQnVmZmVyUmVsZWFzZSh2b2lkKiBpbmZvKQogewotICAgIFNoYXJlZEJ1ZmZlciog
c2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CisgICAgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAgIHNoYXJlZEJ1ZmZlci0+ZGVyZWYoKTsKIH0KICNl
bmRpZgogCi1JbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRh
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURlY29kZXJD
Rzo6SW1hZ2VEZWNvZGVyQ0coRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gdXRpSGludDsKICAgICBpZiAoZGF0YS5zaXplKCkgPj0gMzIpCkBAIC01NjIsMjAgKzU2
MiwyMCBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFtZUltYWdl
QXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaQogICAgIHJldHVybiBtYXNrZWRJbWFnZSA/
IG1hc2tlZEltYWdlIDogaW1hZ2U7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEo
U2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNv
ZGVyQ0c6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCiB7CiAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZlZDsK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0
aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBT
aGFyZWRCdWZmZXIncyBrbm93bGVkZ2UuCi0gICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFi
aWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVu
c3VyaW5nIHRoYXQgSW1hZ2VJTyBpcwotICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFy
ZWRCdWZmZXIuCisgICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgorICAgIC8vIFdlIHVzZSBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdl
dCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCisgICAgLy8gcmVhbGx5IGxv
b2tpbmcgYXQgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAgICAgQ0dJbWFnZVNvdXJjZVVw
ZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNy
ZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UKLSAgICAvLyBDcmVh
dGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCisgICAgLy8gQ3Jl
YXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4K
ICAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwogICAgIGNv
bnRpZ3VvdXNEYXRhLmdldCgpLnJlZigpOwotICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBv
c2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVz
ZSBTaGFyZWRCdWZmZXIKKyAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxs
YmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcgogICAgIC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3du
IHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNo
CiAgICAgLy8gaXMgYSByZXF1aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNh
bGxiYWNrLgogICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJh
Y2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1
ZmZlclJlbGVhc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5oCmluZGV4IDk3NDA3MzZhMjFhYzk5OGFiMDVmMWM5YjRmNWIx
Njc1ZTQ0ZDJjOTEuLmEwYWMxYzJmYmVlNTI3ZTVhYjExMTQ1NTgxMmJkYjczNjNhMDU1NDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rl
ckNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuaApAQCAtMzIsOSArMzIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbWFn
ZURlY29kZXJDRyBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEltYWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBJbWFn
ZURlY29kZXJDRyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCi0gICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJD
Rz4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAg
IHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyQ0c+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJbWFnZURlY29kZXJDRyhkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pKTsKICAgICB9CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAg
IFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1w
bGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRp
b25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7
CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
IGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZy
YW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNv
Y29hLm1tCmluZGV4IDg0NGFjNDRmM2FkZGZhOWYzOTU3ODZiOTRiZGQ1MDk0MWU3Mjc1NGIuLjg1
NDIxZTNkZTcwOWNlMTU5YzQ5NGI0MGZiOGQxYWQyMzU5M2MzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZv
cm1EYXRhQ29jb2EubW0KQEAgLTU3LDcgKzU3LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpw
bGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAg
cmV0dXJuIENGRXF1YWwobV9mb250LmdldCgpLCBvdGhlci5tX2ZvbnQuZ2V0KCkpOwogfQogCi1S
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1P
cGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBs
YXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAogewogICAg
IHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKaW5kZXggZjc0N2Q4
MGZiNjFkMzBmYzUwMjJlNjgyZDYzNTYxMzNkM2NhNjk3YS4uYzhhODA2MTIyMDUzZjY0OGFkZGIw
MmFjMzg5Y2U3MTQzNjhkYmJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCkBAIC04MCw3
ICs4MCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyOjpzZXRNaW5pbXVtQXVkaW9TYW1wbGVE
dXJhdGlvbihmbG9hdCkKIHsKIH0KIAotU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdt
ZW50KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorU291cmNlQnVmZmVyUGFyc2VyOjpTZWdt
ZW50OjpTZWdtZW50KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6
IG1fc2VnbWVudChXVEZNb3ZlKGJ1ZmZlcikpCiB7CiB9CkBAIC0xMDEsNyArMTAxLDcgQEAgc2l6
ZV90IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAgICAgICAgICAg
ICByZXR1cm4gY2xhbXBUbzxzaXplX3Q+KE1UUGx1Z2luQnl0ZVNvdXJjZUdldExlbmd0aChieXRl
U291cmNlLmdldCgpKSk7CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgUmVm
PFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAgICAgICAgW10oY29uc3QgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBidWZm
ZXItPnNpemUoKTsKICAgICAgICAgfQpAQCAtMTI1LDcgKzEyNSw3IEBAIGF1dG8gU291cmNlQnVm
ZmVyUGFyc2VyOjpTZWdtZW50OjpyZWFkKHNpemVfdCBwb3NpdGlvbiwgc2l6ZV90IHNpemVUb1Jl
YWQsIHVpbnQ4CiAgICAgICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxSZWFkRXJyb3I+IHsgUmVh
ZEVycm9yOjpGYXRhbEVycm9yIH07CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAgICAgWyZdKGNv
bnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlYWRSZXN1bHQKKyAgICAgICAgWyZd
KGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZWFkUmVzdWx0
CiAgICAgICAgIHsKICAgICAgICAgICAgIGJ1ZmZlci0+Y29weVRvKGRlc3RpbmF0aW9uLCBwb3Np
dGlvbiwgc2l6ZVRvUmVhZCk7CiAgICAgICAgICAgICByZXR1cm4gc2l6ZVRvUmVhZDsKQEAgLTEz
Myw3ICsxMzMsNyBAQCBhdXRvIFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6cmVhZChzaXpl
X3QgcG9zaXRpb24sIHNpemVfdCBzaXplVG9SZWFkLCB1aW50OAogICAgICk7CiB9CiAKLVJlZjxT
aGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1ZmZl
cigpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdt
ZW50Ojp0YWtlU2hhcmVkQnVmZmVyKCkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3Nl
Z21lbnQsCiAjaWYgSEFWRShNVF9QTFVHSU5fRk9STUFUX1JFQURFUikKQEAgLTE0MiwyOCArMTQy
LDI4IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFr
ZVNoYXJlZEJ1ZmZlcigpCiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yKHNpemUo
KSk7CiAgICAgICAgICAgICBhdXRvIHJlYWRSZXN1bHQgPSByZWFkKDAsIHZlY3Rvci5zaXplKCks
IHZlY3Rvci5kYXRhKCkpOwogICAgICAgICAgICAgaWYgKCFyZWFkUmVzdWx0Lmhhc192YWx1ZSgp
KQotICAgICAgICAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAg
ICAgICAgICAgIHJldHVybiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAg
ICAgICAgIHZlY3Rvci5zaHJpbmsocmVhZFJlc3VsdC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpOworICAgICAgICAgICAg
cmV0dXJuIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpOwog
ICAgICAgICB9LAogI2VuZGlmCi0gICAgICAgIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVy
KQorICAgICAgICBbJl0oUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKGJ1ZmZlciwgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShidWZmZXIs
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKTsKICAgICAgICAgfQogICAgICk7CiB9
CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6Z2V0
U2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBTb3Vy
Y2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OmdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIFdURjo6c3dpdGNoT24obV9zZWdtZW50LAogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1B
VF9SRUFERVIpCi0gICAgICAgIFsmXShjb25zdCBSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNl
UmVmPiYpIC0+IFJlZlB0cjxTaGFyZWRCdWZmZXI+CisgICAgICAgIFsmXShjb25zdCBSZXRhaW5Q
dHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiYpIC0+IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPgogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfSwK
ICNlbmRpZgotICAgICAgICBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4g
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4KKyAgICAgICAgWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4KICAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5wdHIoKTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXIuaAppbmRleCA1MjBiNTIwN2ZjMjcxZDc5ODE1MzNmYjE0ZDIzMTU1OTRh
ODg4MzY1Li43Mjk3YTc5MTRhNzlhZGY2NDJkYzZiMTZiMzZlNjBmOWNkMDI5ZjBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXIuaApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENvbnRlbnRUeXBlOwogY2xhc3MgTWVkaWFTYW1wbGU7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9S
VCBTb3VyY2VCdWZmZXJQYXJzZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNl
QnVmZmVyUGFyc2VyPiB7CiBwdWJsaWM6CkBAIC02OSwxMSArNjksMTEgQEAgcHVibGljOgogI2lm
IEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAgIFNlZ21lbnQoUmV0YWluUHRy
PE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJik7CiAjZW5kaWYKLSAgICAgICAgU2VnbWVudChSZWY8
U2hhcmVkQnVmZmVyPiYmKTsKKyAgICAgICAgU2VnbWVudChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJik7CiAgICAgICAgIFNlZ21lbnQoU2VnbWVudCYmKSA9IGRlZmF1bHQ7Ci0gICAgICAg
IFJlZjxTaGFyZWRCdWZmZXI+IHRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICAgICAgLy8gV2lsbCBy
ZXR1cm4gbnVsbHB0ciBpZiBTZWdtZW50J3MgYmFja2VuZCBpc24ndCBhIFNoYXJlZEJ1ZmZlci4K
LSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0U2hhcmVkQnVmZmVyKCkgY29uc3Q7Cisg
ICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlU2hhcmVkQnVmZmVyKCk7Cisg
ICAgICAgIC8vIFdpbGwgcmV0dXJuIG51bGxwdHIgaWYgU2VnbWVudCdzIGJhY2tlbmQgaXNuJ3Qg
YSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgorICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gZ2V0U2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICAgICAgc2l6ZV90IHNpemUo
KSBjb25zdDsKIApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAjaWYgSEFWRShNVF9QTFVHSU5f
Rk9STUFUX1JFQURFUikKICAgICAgICAgICAgIFJldGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VS
ZWY+LAogI2VuZGlmCi0gICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPgorICAgICAgICAgICAg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+CiAgICAgICAgID4gbV9zZWdtZW50OwogICAgIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggNjFkYmQ2MmM5ZTNlOWYz
MTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMS4uOWJjMTg5NDE5ODYzMGJhZDhkN2NiZDBiM2E1YjI4
ZTQ2ZTllZmUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTM4OCw3
ICszODgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgYWR2YW5jZVRvTmV4dFNlZ21lbnQo
KTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IGN1cnJlbnRTZWdtZW50LmdldFNo
YXJlZEJ1ZmZlcigpOworICAgICAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IHNoYXJlZEJ1ZmZlciA9IGN1cnJlbnRTZWdtZW50LmdldFNoYXJlZEJ1ZmZlcigpOwogICAgICAg
ICAgICAgQ01CbG9ja0J1ZmZlclJlZiByYXdCbG9ja0J1ZmZlciA9IG51bGxwdHI7CiAgICAgICAg
ICAgICB1aW50NjRfdCBsYXN0UmVhZCA9IDA7CiAgICAgICAgICAgICBzaXplX3QgZGVzdGluYXRp
b25PZmZzZXQgPSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKQEAgLTQwOSw3ICs0MDksNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25PZmZzZXQgPSAwOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoc2hhcmVkQnVmZmVyLT5oYXNPbmVT
ZWdtZW50KCksICJDYW4gb25seSBkZWFsIHdpdGggc2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgYSBz
aW5nbGUgRGF0YVNlZ21lbnQiKTsKLSAgICAgICAgICAgICAgICAvLyBBIFNoYXJlZEJ1ZmZlciBk
b2Vzbid0IGhhdmUgdGhyZWFkLXNhZmUgcmVmY291bnRpbmcsIGFzIHN1Y2ggd2UgbXVzdCBrZWVw
IGEgcmVmZXJlbmNlIHRvIHRoZSBEYXRhU2VnbWVudCBpbnN0ZWFkLgorICAgICAgICAgICAgICAg
IC8vIEEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBkb2Vzbid0IGhhdmUgdGhyZWFkLXNhZmUgcmVm
Y291bnRpbmcsIGFzIHN1Y2ggd2UgbXVzdCBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBEYXRhU2Vn
bWVudCBpbnN0ZWFkLgogICAgICAgICAgICAgICAgIC8vIFRPRE86IGNvdWxkIHdlIG9ubHkgY3Jl
YXRlIGEgbmV3IENNQmxvY2tCdWZmZXIgaWYgdGhlIGJhY2tlbmQgbWVtb3J5IGNoYW5nZWQgc2lu
Y2UgdGhlIHByZXZpb3VzIG9uZT8KICAgICAgICAgICAgICAgICBhdXRvIGZpcnN0U2VnbWVudCA9
IHNoYXJlZEJ1ZmZlci0+YmVnaW4oKS0+c2VnbWVudDsKICAgICAgICAgICAgICAgICBzaXplX3Qg
Y2FuUmVhZCA9IHN0ZDo6bWluPHNpemVfdD4obnVtVG9SZWFkLCBmaXJzdFNlZ21lbnQtPnNpemUo
KSAtIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1E
YXRhQ29yZVRleHQuY3BwCmluZGV4IGNjNTk0ZjM4NGU1NjM1ZGVkYThmNDIzZjY4NGRhNWI1NTQ5
NzA2NzEuLjU5ZDIxNjY3OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9y
bURhdGFDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAg
QEAgUmV0YWluUHRyPENGVHlwZVJlZj4gRm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxp
dHlDaGVjaygpIGNvbnN0CiAgICAgcmV0dXJuIG9iamVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250
KCkpOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0
YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0
CiB7CiAgICAgaWYgKFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENv
cHlUYWJsZShjdEZvbnQoKSwgdGFibGUsIGtDVEZvbnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQot
ICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkp
OworICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAg
ICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggYjNjMTRlYzliNjlkOTNlYTBmZjJm
ZGVmZWUzMjNlYTA0NzRkZjlmZC4uNDYzYjEzNDZkYzM3MjM0NWE0OWNiOGE1YjU2MjJkMjZkNzg2
MTQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAg
LTczOCw3ICs3MzgsNyBAQCBEaWRDaGFuZ2VJdGVtQnVmZmVyIEl0ZW1CdWZmZXI6OnN3YXBXcml0
YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVzKQogdm9pZCBJdGVtQnVmZmVy
OjphcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJdGVtJiB0ZW1wb3JhcnlJdGVtKQogewogICAgIGF1
dG8gcmVxdWlyZWRTaXplRm9ySXRlbSA9IG1fd3JpdGluZ0NsaWVudC0+cmVxdWlyZWRTaXplRm9y
SXRlbSh0ZW1wb3JhcnlJdGVtKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvdXRPZkxpbmVJ
dGVtOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdXRPZkxpbmVJdGVtOwog
ICAgIGlmICghcmVxdWlyZWRTaXplRm9ySXRlbSkgewogICAgICAgICBvdXRPZkxpbmVJdGVtID0g
bV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtT3V0T2ZMaW5lKHRlbXBvcmFyeUl0ZW0pOwogICAg
ICAgICBpZiAoIW91dE9mTGluZUl0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmgKaW5kZXggYzg3MzE5ODJlZjgzOTMxYmJhZTMxYjc4NjUwYWMwZGEyMGEwNWZjNS4u
YjMxYmM1ZmQ0ZTkyMTRiMTVhMzc2MWZiZTk4ZDYwY2ViNDdhOThmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaApAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVt
JikgY29uc3QKKyAgICB2aXJ0dWFsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBlbmNv
ZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xNjgsNyArMTY4LDcgQEAgcHVibGljOgog
ICAgIC8vIHdpdGggcGFkZGluZyBiZXR3ZWVuIGVhY2ggaXRlbSB0byBlbnN1cmUgdGhhdCBhbGwg
aXRlbXMgYXJlIGFsaWduZWQgdG8gOCBieXRlcy4KICAgICAvLwogICAgIC8vIElmIGEgd3JpdGlu
ZyBjbGllbnQgaXMgcHJlc2VudCBhbmQgcmVxdWlyZXMgY3VzdG9tIGVuY29kaW5nIGZvciB0aGUg
Z2l2ZW4gaXRlbSB0eXBlIFQsIHRoZQotICAgIC8vIGl0ZW0gYnVmZmVyIHdpbGwgYXNrIHRoZSBj
bGllbnQgZm9yIGFuIG9wYXF1ZSBTaGFyZWRCdWZmZXIgY29udGFpbmluZyBlbmNvZGVkIGRhdGEg
Zm9yIHRoZQorICAgIC8vIGl0ZW0gYnVmZmVyIHdpbGwgYXNrIHRoZSBjbGllbnQgZm9yIGFuIG9w
YXF1ZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgZW5jb2RlZCBkYXRhIGZvciB0
aGUKICAgICAvLyBpdGVtLiBUaGlzIGVuY29kZWQgZGF0YSBpcyB0aGVuIGFwcGVuZGVkIHRvIHRo
ZSBpdGVtIGJ1ZmZlciwgd2l0aCBwYWRkaW5nIHRvIGVuc3VyZSB0aGF0CiAgICAgLy8gdGhlIHN0
YXJ0IGFuZCBlbmQgb2YgdGhpcyBkYXRhIGFyZSBhbGlnbmVkIHRvIDggYnl0ZXMsIGlmIG5lY2Vz
c2FyeS4gV2hlbiBjb25zdW1pbmcgZW5jb2RlZAogICAgIC8vIGl0ZW0gZGF0YSwgYSBjb3JyZXNw
b25kaW5nIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IHdpbGwgYmUgcmVxdWlyZWQgdG8gY29udmVy
dCB0aGlzIGVuY29kZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
RnJlZVR5cGUuY3BwCmluZGV4IGNjZGFkYjBkYTExYjU5ODVhMzQzODYxOWRiMGRmMjMzMDFhNzI1
YTMuLjJiNDQzZmJiZWQyYzFmZGU0OGJjZGU5Y2JlNDA5NTM0OTdmZGU5MTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAtMzgsMTIg
KzM4LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHZvaWQgcmVsZWFzZUN1c3Rv
bUZvbnREYXRhKHZvaWQqIGRhdGEpCiB7Ci0gICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4o
ZGF0YSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+
KGRhdGEpLT5kZXJlZigpOwogfQogCiBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tleV90IGZyZWVU
eXBlRmFjZUtleTsKIAotRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Rm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShGVF9GYWNlIGZyZWVUeXBlRmFjZSwgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhKEZUX0ZhY2UgZnJlZVR5cGVG
YWNlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgOiBtX2ZvbnRGYWNlKGFk
b3B0UmVmKGNhaXJvX2Z0X2ZvbnRfZmFjZV9jcmVhdGVfZm9yX2Z0X2ZhY2UoZnJlZVR5cGVGYWNl
LCBGVF9MT0FEX0RFRkFVTFQpKSkKIHsKICAgICBidWZmZXIucmVmKCk7IC8vIFRoaXMgaXMgYmFs
YW5jZWQgYnkgdGhlIGJ1ZmZlci0+ZGVyZWYoKSBpbiByZWxlYXNlQ3VzdG9tRm9udERhdGEuCkBA
IC0xMjksNyArMTI5LDcgQEAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShG
VF9MaWJyYXJ5JiBsaWJyYXJ5KQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCitzdGQ6OnVuaXF1
ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJikKIHsKICAgICBzdGF0aWMgRlRf
TGlicmFyeSBsaWJyYXJ5OwogICAgIGlmICghbGlicmFyeSAmJiAhaW5pdGlhbGl6ZUZyZWVUeXBl
TGlicmFyeShsaWJyYXJ5KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHAKaW5kZXggZmVkODU0MGY0YWViYzg0YzY5YjI5MDgwNjk3YzEyNDYwMWQ1YjYyNi4uNjg5
Y2I2NzllNjMyZTJmNWEyYTJmZTA2NDU4MTFkODg2NmE5MGM0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9G
b250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgYm9vbCBGb250
UGxhdGZvcm1EYXRhOjpoYXNDb21wYXRpYmxlQ2hhcm1hcCgpIGNvbnN0CiAgICAgICAgICYmIEZU
X1NlbGVjdF9DaGFybWFwKGZyZWVUeXBlRmFjZSwgZnRfZW5jb2RpbmdfYXBwbGVfcm9tYW4pKTsK
IH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9w
ZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBG
b250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewog
ICAgIENhaXJvRnRGYWNlTG9ja2VyIGNhaXJvRnRGYWNlTG9ja2VyKG1fc2NhbGVkRm9udC5nZXQo
KSk7CiAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2UgPSBjYWlyb0Z0RmFjZUxvY2tlci5mdEZhY2Uo
KTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9u
dFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgYwogICAgIGlmIChl
cnJvciB8fCB0YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJsZVNpemUpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSk7CiB9CiAKICNpZiBVU0UoSEFSRkJVWlopICYmICFFTkFCTEUoT1BFTlRZUEVfTUFUSCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggYjc0OWZjMTU4ZGZhYmVmZDNiZDhjNDU0OThi
YTBhNWIyOTNiZjQwOS4uY2RlZDRhNjBiNTBiYmJhZWE1Yjg0NWJkZWZiYjY4NmZlMjUyNTkzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTQyNCw5ICs0MjQsOSBAQCBWZWN0b3I8
dWludDhfdD4gR3N0TWFwcGVkQnVmZmVyOjpjcmVhdGVWZWN0b3IoKSBjb25zdAogICAgIHJldHVy
biB7IGRhdGEoKSwgc2l6ZSgpIH07CiB9CiAKLVJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBH
c3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxTaGFyZWRCdWZm
ZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIoKQogewotICAgIHJl
dHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CiAKIGJvb2wgaXNHU3RyZWFtZXJQbHVnaW5B
dmFpbGFibGUoY29uc3QgY2hhciogbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaAppbmRleCAy
YjYwNTkyMzliYjdmMGQ4ZmJlNDU2MDI2ZTU4MmEzZmM2ZjA5YzE2Li5kODJjZDNlMThlY2UwNDc2
MWQ2YWQ0ZWMyZDUyZTJhZDlkYzM4NDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5oCkBAIC0z
Miw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFNpemU7Ci1jbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBpbmxpbmUg
Ym9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24oZ3VpbnQgbWFqb3IsIGd1aW50IG1pbm9yLCBndWlu
dCBtaWNybykKIHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHVubWFwRWFy
bHkoKTsKICAgICB9CiAKLSAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hh
cmVkQnVmZmVyKCk7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7
CiAKIHByaXZhdGU6CiAgICAgR3N0TWFwcGVkT3duZWRCdWZmZXIoR1JlZlB0cjxHc3RCdWZmZXI+
JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRleCAy
OWIzYTUwMWQ4ZTlhOTYyYTBjM2QwNGZiMjYxMjZlYTQzYTM1NTI2Li5kZmJjNTgwZmI4ZTliMzA5
MzZjY2EwOGJiODhiNDljMmJiNjUzYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmNwcApAQCAtODEsMTIgKzgxLDEyIEBAIEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBs
ZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRlcikKICAgICByZXR1cm4gKEltYWdlRGVjb2RlckdTdHJl
YW1lclNhbXBsZSopaXRlci0+c2Vjb25kLmdldCgpOwogfQogCi1SZWZQdHI8SW1hZ2VEZWNvZGVy
R1N0cmVhbWVyPiBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRh
dGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0
cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhh
T3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29k
ZXJHU3RyZWFtZXIoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikpOwogfQogCi1JbWFnZURlY29kZXJHU3RyZWFtZXI6OkltYWdlRGVjb2RlckdT
dHJlYW1lcihTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckdTdHJlYW1l
cjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKICAgICA6IG1fbWltZVR5cGUobWltZVR5cGUpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VGbGFnOwpAQCAtMTk5LDcgKzE5OSw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
OjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCkKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wpCiB7CiAg
ICAgcHVzaEVuY29kZWREYXRhKGRhdGEpOwogfQpAQCAtNDI2LDcgKzQyNiw3IEBAIEVuY29kZWRE
YXRhU3RhdHVzIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjplbmNvZGVkRGF0
YVN0YXR1cygpIGNvbnN0CiAgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpVbmtub3duOwog
fQogCi12b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNv
ZGVkRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0
byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CiAgICAgbV9lb3Mg
PSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAppbmRleCA2NmYzMzcy
ODQ2YTRkZjg3NGY0MjBkYjY1NGU2ODljOWU0M2IwYzUyLi5kM2VmNmE0NWNkN2RiZGZjMzEyMGVh
MjNmOGRlYjNjNTk5NzFhZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5o
CkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIEltYWdlRGVjb2RlckdTdHJlYW1lciBmaW5hbCA6IHB1
YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2RlckdTdHJlYW1lcik7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOwotICAgIEltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBjcmVhdGUoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdlRGVj
b2RlckdTdHJlYW1lcigpID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzTWVk
aWFUeXBlKE1lZGlhVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID09IE1lZGlhVHlwZTo6VmlkZW87
IH0KQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhE
ZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVk
Q29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVk
QnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAg
IGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2VvczsgfQog
ICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAgLTEyMiw3
ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICB2b2lkIGhhbmRsZVNhbXBsZShHUmVm
UHRyPEdzdFNhbXBsZT4mJik7Ci0gICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJik7CisgICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKiBzYW1w
bGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHAKaW5kZXggNWQ4NmZiMWFmNDg3YzAyODllMDAxMjU1OTY1YzMxZGNkYTk3
MzQyNi4uOTMwMTkwOTk0NWI0YTIzZDY2NzgyZjM1MGI1NmU0NDc5ZjgwMjZmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNv
dXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAg
cHJpdmF0ZToKIAogICAgIC8vIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudCB2aXJ0dWFsIG1l
dGhvZHMuCiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENv
bnRpbnVlUG9saWN5Q2hlY2spPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tG
YWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC0x
MDkzLDcgKzEwOTMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNw
b25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbgogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Olllcyk7CiB9CiAKLXZvaWQgQ2FjaGVk
UmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJl
YW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvQ0RNUHJveHlDbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmgKaW5kZXggNjkyYTk5NmQxOWMyNGVm
ZDlhNDg1NTIzNzNhNTY3OWI1MmUxZWYxYy4uMzQ5YmZkY2FhZDZjN2Q3ZjhkNWFkYTBhMTcyMTlm
ZDllNzA2MjZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmgKQEAgLTYyLDEx
ICs2MiwxMSBAQCBwdWJsaWM6CiAgICAgQ0RNUHJveHlDbGVhcktleSgpID0gZGVmYXVsdDsKICAg
ICB2aXJ0dWFsIH5DRE1Qcm94eUNsZWFyS2V5KCk7CiAKLSAgICAvLyBGSVhNRTogVGhlcmUncyBh
IGxhY2sgb2YgY29uc2lzdGVuY3kgYmV0d2VlbiBTaGFyZWRCdWZmZXJzLAorICAgIC8vIEZJWE1F
OiBUaGVyZSdzIGEgbGFjayBvZiBjb25zaXN0ZW5jeSBiZXR3ZWVuIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXJzLAogICAgIC8vIFZlY3RvcjxjaGFyPidzIGFuZCB7dWludDhfdCosc2l6ZV90fSBpZGlv
bXMgZm9yIHJlcHJlc2VudGluZyBhIGNodW5rIG9mCi0gICAgLy8gYnl0ZXMuIEZpeCB0aGF0IHNv
bWVob3cuIE5vdGUgU2hhcmVkQnVmZmVycyBhcmUgZGFuZ2Vyb3VzIHNpbmNlCisgICAgLy8gYnl0
ZXMuIEZpeCB0aGF0IHNvbWVob3cuIE5vdGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcnMgYXJlIGRh
bmdlcm91cyBzaW5jZQogICAgIC8vIHRoZXkncmUgbm90IHRocmVhZC1zYWZlIGFuZCB0aGlzIGNs
YXNzIG11c3QgbWFpbnRhaW4KLSAgICAvLyB0aHJlYWQtc2FmZXR5LCBidXQgbWF5YmUgU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCBjb3VsZCBiZQorICAgIC8vIHRocmVhZC1zYWZldHksIGJ1dCBt
YXliZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCBjb3VsZCBiZQogICAgIC8v
IG1hZGUgdG8gd29yaywgaG93ZXZlciB0aGF0IGhhcyB6ZXJvIGhlbHBlcnMgZm9yIGRyb3BwaW5n
IGludG8KICAgICAvLyBpdGVyYXRvci1hd2FyZSAvIGNvbXBhcmF0b3ItYXdhcmUgY29udGFpbmVy
cy4uLgogICAgIHN0cnVjdCBjZW5jRGVjcnlwdENvbnRleHQgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRl
ci5jcHAKaW5kZXggMmVmYTA0MzYwZTg4NDgzODA2MTQ0YzNkNzFkZTYzYWQ3YjQyYjU2MS4uYzM4
OTE2ZTdkMDU5ZTg4OWI1Yzg4ZWViMDllMGY0Y2ZjMDNjMWRiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRo
dW5kZXIuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3Vw
cG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ0RNUHJp
dmF0ZVRodW5kZXI6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAorYm9vbCBDRE1Qcml2YXRl
VGh1bmRlcjo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewogICAgIC8v
IFZhbGlkYXRlIHRoZSBpbml0RGF0YSBidWZmZXIgYXMgYW4gSlNPTiBvYmplY3QgaW4ga2V5aWRz
IGNhc2UuCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlw
ZSwgImtleWlkcyIpICYmIENETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KGluaXREYXRhKSkK
QEAgLTIzNyw3ICsyMzcsNyBAQCBib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgUwogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZVRodW5kZXI6OnNhbml0
aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlVGh1bmRlcjo6c2FuaXRpemVSZXNwb25z
ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICBy
ZXR1cm4gcmVzcG9uc2UuY29weSgpOwogfQpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VUaHVuZGVyOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lz
dGVtQ29uZmlndXJhCiAgICAgY2FsbGJhY2soU3VjY2VlZGVkKTsKIH0KIAotdm9pZCBDRE1JbnN0
YW5jZVRodW5kZXI6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2Vy
dGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VU
aHVuZGVyOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBjZXJ0aWZpY2F0ZSwgIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIE9wZW5D
RE1FcnJvciBlcnJvciA9IG9wZW5jZG1fc3lzdGVtX3NldF9zZXJ2ZXJfY2VydGlmaWNhdGUobV90
aHVuZGVyU3lzdGVtLmdldCgpLCBjb25zdF9jYXN0PHVpbnQ4X3QqPihjZXJ0aWZpY2F0ZS0+ZGF0
YSgpKSwKICAgICAgICAgY2VydGlmaWNhdGUtPnNpemUoKSk7CkBAIC0zMjYsNyArMzI2LDcgQEAg
UmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gQ0RNSW5zdGFuY2VUaHVuZGVyOjpjcmVhdGVTZXNz
aW9uKCkKIGNsYXNzIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSB7CiAKIHB1YmxpYzoKLSAgICBQYXJz
ZWRSZXNwb25zZU1lc3NhZ2UoY29uc3QgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAg
ICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UoY29uc3QgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpCiAgICAgewogICAgICAgICBpZiAoIWJ1ZmZlciB8fCAhYnVmZmVyLT5zaXpl
KCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNTQsOCArMzU0LDggQEAgcHVibGljOgogCiAg
ICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9pc1ZhbGlkOyB9CiAgICAgYm9vbCBo
YXNQYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9wYXlsb2FkKTsg
fQotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QmIHsgQVNTRVJU
KG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxvYWQudmFsdWUoKTsgfQotICAgIFJlZjxTaGFyZWRC
dWZmZXI+JiBwYXlsb2FkKCkgJiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2Fk
LnZhbHVlKCk7IH0KKyAgICBjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHBheWxv
YWQoKSBjb25zdCYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgp
OyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgJiB7IEFTU0VS
VChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KICAgICBib29sIGhhc1R5
cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUuaGFzX3ZhbHVlKCk7IH0KICAgICBXZWJDb3JlOjpN
ZWRpYUtleU1lc3NhZ2VUeXBlIHR5cGUoKSBjb25zdCB7IEFTU0VSVChtX3R5cGUpOyByZXR1cm4g
bV90eXBlLnZhbHVlKCk7IH0KICAgICBXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlIHR5cGVP
cihXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlIGFsdGVybmF0ZSkgY29uc3QgeyByZXR1cm4g
bV90eXBlID8gbV90eXBlLnZhbHVlKCkgOiBhbHRlcm5hdGU7IH0KQEAgLTM2NCwxMSArMzY0LDEx
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIG1faXNWYWxpZCB7IGZhbHNlIH07Ci0g
ICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gbV9wYXlsb2FkOworICAgIHN0ZDo6
b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX3BheWxvYWQ7CiAgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlPiBtX3R5cGU7CiB9OwogCi12
b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNr
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25U
aHVuZGVyOjpjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJl
c3BvbnNlTWVzc2FnZShidWZmZXIpOwogICAgIGlmICghcGFyc2VkUmVzcG9uc2VNZXNzYWdlKSB7
CkBAIC00NzUsNyArNDc1LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjprZXlz
VXBkYXRlRG9uZUNhbGxiYWNrKCkKICAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmNsZWFy
KCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRo
dW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVz
c2FnZSkKIHsKICAgICBHU1RfRVJST1IoIkNETSBlcnJvciIpOwogICAgIEdTVF9NRU1EVU1QKCJl
cnJvciBkdW1wIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwpAQCAtNDg4LDcg
KzQ4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxi
YWNrcy5jbGVhcigpOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGFTaGFyZWRCdWZmZXIsCit2b2lk
IENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxp
Y2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhU2hhcmVkQnVmZmVyLAogICAgIExpY2Vuc2VDYWxsYmFj
ayYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC01MDYsNyAr
NTA2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXQKICAgICAgICAgbV9pbml0RGF0YS5wYXls
b2FkKCktPmRhdGEoKSwgbV9pbml0RGF0YS5wYXlsb2FkKCktPnNpemUoKSwgbnVsbHB0ciwgMCwg
Jm1fdGh1bmRlclNlc3Npb25DYWxsYmFja3MsIHRoaXMsICZzZXNzaW9uKTsKICAgICBpZiAoIXNl
c3Npb24pIHsKICAgICAgICAgR1NUX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIHNlc3Npb24iKTsK
LSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxv
YWQoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGluaXREYXRhID0g
bV9pbml0RGF0YS5wYXlsb2FkKCk7CiAgICAgICAgIGNhbGxiYWNrKGluaXREYXRhLnJlbGVhc2VO
b25OdWxsKCksIHsgfSwgZmFsc2UsIEZhaWxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC01MTUsNyArNTE1LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0
TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXQKIAogICAgIGF1dG8gZ2Vu
ZXJhdGVDaGFsbGVuZ2UgPSBbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKKyAgICAgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXls
b2FkKCk7CiAgICAgICAgIGlmIChtX3Nlc3Npb25JRC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IEdTVF9FUlJPUigiY291bGQgbm90IGNyZWF0ZSBzZXNzaW9uIGlkIik7CiAgICAgICAgICAgICBj
YWxsYmFjayhpbml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCB7IH0sIGZhbHNlLCBGYWlsZWQpOwpA
QCAtNTQ1LDEzICs1NDUsMTMgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpzZXNz
aW9uRmFpbHVyZSgpCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQog
Ci12b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNl
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5z
ZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBk
YXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwg
c2Vzc2lvbklEID09IG1fc2Vzc2lvbklEKTsKIAogICAgIEdTVF9UUkFDRSgiVXBkYXRpbmcgc2Vz
c2lvbiAlcyIsIHNlc3Npb25JRC51dGY4KCkuZGF0YSgpKTsKIAotICAgIG1fc2Vzc2lvbkNoYW5n
ZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShi
b29sIHN1Y2Nlc3MsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRh
YmxlIHsKKyAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiByZXNwb25zZU1lc3NhZ2UpIG11dGFibGUgewogICAgICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoc3VjY2VzcykgewogICAgICAgICAgICAgaWYg
KCFyZXNwb25zZU1lc3NhZ2UpCkBAIC01NjIsNyArNTYyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNl
bnNlVHkKICAgICAgICAgICAgICAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9u
c2VNZXNzYWdlKHJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNl
ZFJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVz
c2FnZS5oYXNQYXlsb2FkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZl
cj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0g
V1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAg
ICAgICAgR1NUX0RFQlVHKCJnb3QgbWVzc2FnZSBvZiBzaXplICV6dSIsIG1lc3NhZ2UtPnNpemUo
KSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1QKCJtZXNzYWdlIiwgbWVzc2FnZS0+
ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhm
YWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsCkBAIC01ODYsNyArNTg2LDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29u
c3QgU3RyaW5nJiBzZXNzaW9uSUQKIHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vz
c2lvbklEID09IG1fc2Vzc2lvbklEKTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3Mu
YXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3Ms
IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKKyAgICBt
X3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiByZXNwb25zZU1lc3NhZ2UpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgICAgICBpZiAoc3VjY2VzcykgewogICAgICAgICAgICAgaWYgKCFyZXNwb25zZU1l
c3NhZ2UpCkBAIC01OTcsNyArNTk3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVy
Ojpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQKICAgICAg
ICAgICAgICAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKHJl
c3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNlTWVz
c2FnZSk7CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXls
b2FkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9
IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CisgICAgICAgICAgICAg
ICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJz
ZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX0RF
QlVHKCJnb3QgbWVzc2FnZSBvZiBzaXplICV6dSIsIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIEdTVF9NRU1EVU1QKCJtZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNz
YWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCwgc3RkOjptYWtlX3BhaXIocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnR5cGVP
cihNZWRpYUtleU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVzdCksCkBAIC02NDAsNyArNjQwLDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YShjb25z
dCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW4KIHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25J
RCwgbV9zZXNzaW9uSUQgPT0gc2Vzc2lvbklEKTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxs
YmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1
Y2Nlc3MsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBtdXRhYmxlIHsKKyAgICBtX3Nl
c3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAg
ICBpZiAoc3VjY2VzcykgewogICAgICAgICAgICAgaWYgKCFidWZmZXIpCkBAIC02NDksNyArNjQ5
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YShj
b25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW4KICAgICAgICAgICAgICAgICBQYXJzZWRSZXNw
b25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKGJ1ZmZlcik7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgaWYgKHBh
cnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdl
LnBheWxvYWQoKSk7CisgICAgICAgICAgICAgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsK
ICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJzZXNzaW9uICVzIHJlbW92ZWQsIG1lc3Nh
Z2UgbGVuZ3RoICV6dSIsIG1fc2Vzc2lvbklELnV0ZjgoKS5kYXRhKCksIG1lc3NhZ2UtPnNpemUo
KSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG1fa2V5U3RvcmUuYWxsS2V5c0FzKE1l
ZGlhS2V5U3RhdHVzOjpSZWxlYXNlZCksIFdURk1vdmUobWVzc2FnZSksIFN1Y2Nlc3NWYWx1ZTo6
U3VjY2VlZGVkKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIu
aAppbmRleCBjZGQ4ZGEyMTEyM2MxNzkxYWUyZmI2NDM5ZmYyZDZmYTBkMmViMjFjLi4xMDIwZTE1
MzIyNzFiNTM1MWUxMDZkZGU4ZjIxZWE1NDA1YTljMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIu
aApAQCAtOTMsOCArOTMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgp
IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5h
bDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNv
bnN0IGZpbmFsOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29u
c3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qg
ZmluYWw7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9u
c2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBm
aW5hbDsKIAogcHJpdmF0ZToKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RN
SW5zdGFuY2UKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpUaHVuZGVyOyB9CiAgICAgdm9p
ZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUs
IFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRl
KFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lk
IHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNj
ZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9rZXlTeXN0ZW07IH0KICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9u
PiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CkBAIC0xMjYsOCArMTI2LDggQEAgY2xhc3MgQ0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlciBmaW5hbCA6IHB1YmxpYyBDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eSB7CiBwdWJsaWM6CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcihDRE1JbnN0YW5jZVRo
dW5kZXImKTsKIAotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGlj
ZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxi
YWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lv
bihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25D
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBD
bG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRh
KGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYp
IGZpbmFsOwpAQCAtMTQxLDE0ICsxNDEsMTQgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBDRE1J
bnN0YW5jZVRodW5kZXIqIGNkbUluc3RhbmNlVGh1bmRlcigpIGNvbnN0OwogCi0gICAgdXNpbmcg
Tm90aWZpY2F0aW9uID0gdm9pZCAoQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6KikoUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdXNpbmcgTm90aWZpY2F0aW9uID0gdm9p
ZCAoQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6KikoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHVzaW5nIENoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNr
ID0gRnVuY3Rpb248dm9pZCgpPjsKLSAgICB1c2luZyBTZXNzaW9uQ2hhbmdlZENhbGxiYWNrID0g
RnVuY3Rpb248dm9pZChib29sLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKT47CisgICAgdXNpbmcg
U2Vzc2lvbkNoYW5nZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoYm9vbCwgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpPjsKIAotICAgIHZvaWQgY2hhbGxlbmdlR2VuZXJhdGVkQ2Fs
bGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBjaGFsbGVuZ2VHZW5lcmF0
ZWRDYWxsYmFjayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBr
ZXlVcGRhdGVkQ2FsbGJhY2soS2V5SURUeXBlJiYpOwogICAgIHZvaWQga2V5c1VwZGF0ZURvbmVD
YWxsYmFjaygpOwotICAgIHZvaWQgZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
KTsKKyAgICB2b2lkIGVycm9yQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpOwogICAgIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzIHN0YXR1cyhjb25zdCBLZXlJ
RFR5cGUmKSBjb25zdDsKICAgICB2b2lkIHNlc3Npb25GYWlsdXJlKCk7CiAKQEAgLTE1OSw3ICsx
NTksNyBAQCBwcml2YXRlOgogICAgIEluaXREYXRhIG1faW5pdERhdGE7CiAgICAgT3BlbkNETVNl
c3Npb25DYWxsYmFja3MgbV90aHVuZGVyU2Vzc2lvbkNhbGxiYWNrcyB7IH07CiAgICAgQm94UHRy
PE9wZW5DRE1TZXNzaW9uPiBtX3Nlc3Npb247Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9t
ZXNzYWdlOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX21lc3NhZ2U7CiAg
ICAgYm9vbCBtX25lZWRzSW5kaXZpZHVhbGl6YXRpb24geyBmYWxzZSB9OwogICAgIFZlY3RvcjxD
aGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjaz4gbV9jaGFsbGVuZ2VDYWxsYmFja3M7CiAgICAgVmVj
dG9yPFNlc3Npb25DaGFuZ2VkQ2FsbGJhY2s+IG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3M7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKaW5kZXggY2FhNTBl
ZDVjM2MzOTk4MzIyZDRhMmMyNzYyNTZlMTgwMWYxZWJiMS4uZWE4OTBmNjdkYTIxMzg3ZjQwZGE2
NTFhMGNhNWM3MzQ5M2U4NGY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
cnVjdCBHTWFya3VwUGFyc2VDb250ZXh0VXNlckRhdGEgewogICAgIGJvb2wgaXNQYXJzaW5nUHNz
aCB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBzc2g7Cisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcHNzaDsKIH07CiAKIHN0YXRpYyB2b2lkIG1hcmt1cFN0
YXJ0RWxlbWVudChHTWFya3VwUGFyc2VDb250ZXh0KiwgY29uc3QgZ2NoYXIqIGVsZW1lbnROYW1l
LCBjb25zdCBnY2hhcioqLCBjb25zdCBnY2hhcioqLCBncG9pbnRlciB1c2VyRGF0YVB0ciwgR0Vy
cm9yKiopCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIG1hcmt1cFRleHQoR01hcmt1cFBh
cnNlQ29udGV4dCosIGNvbnN0IGdjaGFyKiB0ZXh0LCBnc2l6ZSB0ZXh0TGVuZ3RoCiAgICAgaWYg
KHVzZXJEYXRhLT5pc1BhcnNpbmdQc3NoKSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBwc3NoID0gYmFzZTY0RGVjb2RlKHRleHQsIHRleHRMZW5ndGgpOwogICAgICAg
ICBpZiAocHNzaC5oYXNfdmFsdWUoKSkKLSAgICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKnBzc2gpKTsKKyAgICAgICAgICAg
IHVzZXJEYXRhLT5wc3NoID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOwog
ICAgIH0KIH0KIApAQCAtNzEsOSArNzEsOSBAQCBzdGF0aWMgdm9pZCBtYXJrdXBFcnJvcihHTWFy
a3VwUGFyc2VDb250ZXh0KiwgR0Vycm9yKiwgZ3BvaW50ZXIpCiAKIHN0YXRpYyBHTWFya3VwUGFy
c2VyIG1hcmt1cFBhcnNlciB7IG1hcmt1cFN0YXJ0RWxlbWVudCwgbWFya3VwRW5kRWxlbWVudCwg
bWFya3VwVGV4dCwgbWFya3VwUGFzc3Rocm91Z2gsIG1hcmt1cEVycm9yIH07CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKK1JlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENlbmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKIHsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJzZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxvYWQpOwogICAgIGlmICgh
cGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQogICAgICAgICByZXR1cm4gcGF5bG9hZDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKaW5kZXggMzMwYmUyMTNj
N2ZlZmVkYjJmNzg4YjVjMWVjNDQxYWY3MTk0OWQ0OS4uYWIyNjRmMzc3N2ZkNjk4OTc1ZTgzYjhk
N2JmOGFjOTY4YjI5YWNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxp
dGllcy5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fcGF5bG9hZC5h
cHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiAKLSAgICBJbml0
RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxv
YWQpCisgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAgICAgICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlk
KQogICAgIHsKICAgICAgICAgaWYgKHBheWxvYWQpIHsKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGlj
OgogICAgICAgICBtX3BheWxvYWQuYXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0K
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3Bh
eWxvYWQuZ2V0KCk7IH0KKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcGF5bG9h
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZC5nZXQoKTsgfQogICAgIGNvbnN0IFN0cmluZyYg
c3lzdGVtSWQoKSBjb25zdCB7IHJldHVybiBtX3N5c3RlbUlkOyB9CiAgICAgU3RyaW5nIHBheWxv
YWRDb250YWluZXJUeXBlKCkgY29uc3QKICAgICB7CkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJh
Y3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CiAKIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fc3lzdGVtSWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggNTY0
ZTFlNzU0NGE1ODNmNDE4ZTBkZWJlMGUyNWNlNmI0YmY1NDc5OS4uYmQxMTNiYjZjMjczMWZhMTlh
ZGRlZmQzM2E5OWQ0NmJiNGExZjRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApA
QCAtNTIsNyArNTIsNyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6
OmZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJgogICAgIHJldHVybiBGb250
UGxhdGZvcm1EYXRhKGZvbnQuZ2V0KCksIHNpemUsIGJvbGQsIGl0YWxpYywgb3JpZW50YXRpb24s
IHdpZHRoVmFyaWFudCwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCksICZjcmVh
dGlvbkRhdGEpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250
Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgUmV0
YWluUHRyPENGRGF0YVJlZj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5jcmVhdGVDRkRhdGEoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggN2JjNjY3ZTQ2OWIwMDYxNTFlYjI1Yjc5Yzg4
NjlmNzZhMzJmMDA3MS4uNjkyOGE2M2U5NzFjN2MzNWU4ODQ0ZWVmNzNiZmE0NGE4ZDhjMDMwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRp
b247CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRT
ZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC02MCw3ICs2MCw3IEBAIHB1Ymxp
YzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhOwogfTsK
IAotV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwg
Y29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAppbmRleCBi
NDE3OTIzZTZkNzVmOTNjZmQxZTRjYzMxZjg1MDM2ZTFjNjJmNGMyLi41ZDg4Y2Q3NzY4OThjMDVh
OTAzNTg5ZTJkNGJhYzczMGFhMWRmOTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcApA
QCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3QgTWF0aEl0YWxpY3NDb3JyZWN0aW9uSW5mbyA6IFRhYmxl
V2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGl0YWxpY3NDb3JyZWN0aW9uQ291
bnQ7CiAgICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFsaWNzQ29ycmVjdGlvblsxXTsg
Ly8gVGhlcmUgYXJlIGl0YWxpY3NDb3JyZWN0aW9uQ291bnQgaXRhbGljIGNvcnJlY3Rpb24gdmFs
dWVzLgogCi0gICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CisgICAgaW50MTZfdCBnZXRJ
dGFsaWNDb3JyZWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gdWludDE2X3QoaXRhbGljc0Nv
cnJlY3Rpb25Db3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZpdGFsaWNz
Q29ycmVjdGlvbltjb3VudF0pKQpAQCAtOTMsNyArOTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoSW5m
byA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGV4dGVuZGVkU2hh
cGVDb3ZlcmFnZU9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhLZXJuSW5mb09mZnNl
dDsKIAotICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29y
cmVjdGlvbkluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAor
ICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlv
bkluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1
aW50MTZfdCBvZmZzZXQgPSBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvT2Zmc2V0OwogICAgICAg
ICBpZiAob2Zmc2V0KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVjdCBHbHlwaEFzc2VtYmx5IDog
VGFibGVCYXNlIHsKICAgICAgICAgUGFydEZsYWdzRXh0ZW5kZXIgPSAweDAxCiAgICAgfTsKIAot
ICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBh
cnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5
UGFydHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHBhcnRDb3VudDsK
ICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnBhcnRSZWNvcmRzW2NvdW50XSkpCkBA
IC0xNDMsNyArMTQzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFz
ZSB7CiAgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgYWR2YW5jZU1lYXN1cmVtZW50OwogICAgIH0g
bWF0aEdseXBoVmFyaWFudFJlY29yZHNbMV07IC8vIFRoZXJlIGFyZSB2YXJpYW50Q291bnQgTWF0
aEdseXBoVmFyaWFudFJlY29yZCdzLgogCi0gICAgdm9pZCBnZXRTaXplVmFyaWFudHMoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykg
Y29uc3QKKyAgICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZf
dCBjb3VudCA9IHZhcmlhbnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwg
Jm1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNTMsNyArMTUzLDcgQEAgc3Ry
dWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAgICAgICB2YXJp
YW50c1tpXSA9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2ldLnZhcmlhbnRHbHlwaDsKICAgICB9
CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1i
bHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3Nl
bWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gZ2x5cGhB
c3NlbWJseU9mZnNldDsKICAgICAgICAgY29uc3QgR2x5cGhBc3NlbWJseSogZ2x5cGhBc3NlbWJs
eSA9IHZhbGlkYXRlT2Zmc2V0PEdseXBoQXNzZW1ibHk+KGJ1ZmZlciwgb2Zmc2V0KTsKQEAgLTE3
MCw3ICsxNzAsNyBAQCBzdHJ1Y3QgTWF0aFZhcmlhbnRzIDogVGFibGVXaXRoQ292ZXJhZ2Ugewog
ICAgIE9wZW5UeXBlOjpVSW50MTYgaG9yaXpvbnRhbEdseXBoQ291bnQ7CiAgICAgT3BlblR5cGU6
Ok9mZnNldCBtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0WzFdOyAvLyBUaGVyZSBhcmUgdmVy
dGljYWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0aW9ucyBhbmQgaG9yaXpvbnRh
bEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25zLgogCi0gICAgY29uc3QgTWF0
aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rpb24oY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25z
dAorICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9u
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2Fs
KSBjb25zdAogICAgIHsKICAgICAgICAgdWludDMyX3QgY291bnQgPSB1aW50MTZfdCh2ZXJ0aWNh
bEdseXBoQ291bnQpICsgdWludDE2X3QoaG9yaXpvbnRhbEdseXBoQ291bnQpOwogICAgICAgICBp
ZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoQ29uc3RydWN0aW9uc09mZnNldFtjb3Vu
dF0pKQpAQCAtMjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2Ugewog
ICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoSW5mb09mZnNldDsKICAgICBPcGVuVHlwZTo6
T2Zmc2V0IG1hdGhWYXJpYW50c09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1h
dGhDb25zdGFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAor
ICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoQ29u
c3RhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0
cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZv
KiBtYXRoR2x5cGhJbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEdseXBoSW5mb09mZnNldDsKICAgICAgICAg
aWYgKG9mZnNldCkKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVC
YXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aFZh
cmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAorICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0g
bWF0aFZhcmlhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRo
RGF0YS5oCmluZGV4IDNmZjY2ZDMxMTgyZTVjNGIzNmRkM2YzMzA3YTY4NGI5NWQ5NTkzZTMuLjI5
OTBiZmIwM2Y1NjE5NDU3N2ZkZDQ0NzZmMTQ0OTRhYjE4MDM1Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1h
dGhEYXRhLmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Rm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CiBjbGFzcyBGb250OwogCiBjbGFzcyBPcGVuVHlwZU1hdGhEYXRhIDogcHVi
bGljIFJlZkNvdW50ZWQ8T3BlblR5cGVNYXRoRGF0YT4gewpAQCAtMTMzLDcgKzEzMyw3IEBAIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgT3BlblR5cGVNYXRoRGF0YShjb25zdCBGb250UGxhdGZvcm1E
YXRhJik7CiAKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKLSAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
bWF0aEJ1ZmZlcjsKICNlbGlmIFVTRShIQVJGQlVaWikKICAgICBIYlVuaXF1ZVB0cjxoYl9mb250
X3Q+IG1fbWF0aEZvbnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaAppbmRleCAzMDQ5NjNhNWRl
OTBjODFjOGQ2MzA5MTI2Nzc4ODc1MzFkODZkMmFmLi5jODY0YjJjM2E4ZmIxYWUzNzYzMDkzZWU1
MDU1YjM2NTFlZjAxMjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCkBAIC03Myw3ICs3Myw3IEBAIHR5
cGVkZWYgVUludDE2IEdseXBoSUQ7CiB0eXBlZGVmIHVpbnQzMl90IFRhZzsKICNkZWZpbmUgT1Rf
TUFLRV9UQUcoY2gxLCBjaDIsIGNoMywgY2g0KSAoKCgodWludDMyX3QpKGNoNCkpIDw8IDI0KSB8
ICgoKHVpbnQzMl90KShjaDMpKSA8PCAxNikgfCAoKCh1aW50MzJfdCkoY2gyKSkgPDwgOCkgfCAo
KHVpbnQzMl90KShjaDEpKSkKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBU
KiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVm
ZmVyLCBzaXplX3QgY291bnQgPSAxKQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25z
dCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNp
emVfdCBjb3VudCA9IDEpCiB7CiAgICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zaXplKCkgPCBz
aXplb2YoVCkgKiBjb3VudCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04Miw3ICs4Miw3IEBAIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBS
ZWZQdHI8Q29udGlndW91c1NoYXJlCiAKIHN0cnVjdCBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgot
ICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5k
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7
CiAgICAgICAgIGlmIChwb3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG9m
ZnNldCA8PSBidWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFz
IHZhbGlkCiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBU
KiB2YWxpZGF0ZVB0cihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IHZvaWQqIHBvc2l0aW9uKQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3Qg
VCogdmFsaWRhdGVQdHIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBv
c2l0aW9uKQogICAgIHsKICAgICAgICAgY29uc3QgVCogY2FzdGVkID0gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBUKj4ocG9zaXRpb24pOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAm
Y2FzdGVkWzFdKSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4g
Y2FzdGVkOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxp
ZGF0ZU9mZnNldChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90
IG9mZnNldCkgY29uc3QKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRh
dGVPZmZzZXQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZVB0cjxUPihidWZmZXIsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgaW50OF90Kj4odGhpcykgKyBvZmZzZXQpOwogICAgIH0KQEAgLTEyNyw3
ICsxMjcsNyBAQCBzdHJ1Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3ZlcmFnZVRhYmxlIHsKICNpZiBF
TkFCTEUoT1BFTlRZUEVfTUFUSCkKIHN0cnVjdCBUYWJsZVdpdGhDb3ZlcmFnZSA6IFRhYmxlQmFz
ZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEds
eXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29uc3QKKyAgICBib29sIGdldENv
dmVyYWdlSW5kZXgoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFi
bGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0
CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvdmVyYWdlLT5jb3ZlcmFnZUZvcm1hdCkgewogICAg
ICAgICBjYXNlIDE6IHsgLy8gQ292ZXJhZ2UgRm9ybWF0IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0
aWVzLmNwcAppbmRleCAzY2E3MjdhYWZiZDJjYWQ0YmUxMDZmMWRjNGMzZjJlN2RkNDQ4MDVmLi4z
MjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVVdGlsaXRpZXMuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFwcGVu
ZFBhZGRpbmdTaG9ydCgpCiAKIC8vIGFkZHMgZm9udE5hbWUgdG8gdGhlIGZvbnQgdGFibGUgaW4g
Zm9udERhdGEsIGFuZCB3cml0ZXMgdGhlIG5ldyBmb250IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRU
YWJsZQogLy8gcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMgdXNl
ZCBieSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVhcmx5IGFib3J0Ci1ib29sIHJl
bmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0
cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0dGVuRm9udERhdGEpCitib29s
IHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBm
b250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250RGF0YSkKIHsKICAgICBzaXpl
X3Qgb3JpZ2luYWxEYXRhU2l6ZSA9IGZvbnREYXRhLnNpemUoKTsKICAgICBjb25zdCBzZm50SGVh
ZGVyKiBzZm50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzZm50SGVhZGVyKj4oZm9udERhdGEu
ZGF0YSgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsCiB9CiAK
IC8vIFJlbmFtZSB0aGUgZm9udCBhbmQgaW5zdGFsbCB0aGUgbmV3IGZvbnQgZGF0YSBpbnRvIHRo
ZSBzeXN0ZW0KLVJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9u
dChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBm
b250TmFtZSkKK1JlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9u
dChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQog
ewogICAgIFZlY3Rvcjx1aW50OF90PiByZXdyaXR0ZW5Gb250RGF0YTsKICAgICBpZiAoIXJlbmFt
ZUZvbnQoZm9udERhdGEsIGZvbnROYW1lLCByZXdyaXR0ZW5Gb250RGF0YSkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxp
dGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVVdGlsaXRpZXMuaAppbmRleCAyMmJlMjMwYTYwNWM2NmEwZWY1YmMxNDhhMjYyNzk3ZDM3MmMy
YWM0Li5mYTAwMDgxMTYwNjY5N2RjNWM1MTEyMzMzYzkwYzhjOTJiNGI2NzA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxp
dGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTM1LDEwICszNSwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdHJ1Y3QgQmlnRW5kaWFuVVNob3J0OwotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVmaXg7CiBjbGFzcyBGb250TWVt
b3J5UmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogCiBzdHJ1Y3QgRU9USGVhZGVyIHsKICAgICBFT1RIZWFkZXIoKTsKQEAgLTU1LDgg
KzU1LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWludDhfdCwgNTEyPiBtX2J1ZmZlcjsKIH07
CiAKLWJvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7Ci1SZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiBy
ZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYpOworYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOworUmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVu
YW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRh
LmNwcAppbmRleCA3OWU5ZWZlMDYwNTMzNTc5ZTljYTNiYzEwMzIzOGJmZDI4MmY3MTVjLi4wZmE4
ZjMwNmFkOTUyZDA2YTA5Mjk3ZDBiMWQyODdiODk4ODMyYTNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgc3RydWN0IFN1YnN0aXR1dGlv
blN1YlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IHN1YnN0Rm9ybWF0
OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgY292ZXJhZ2VPZmZzZXQ7CiAKLSAgICBjb25zdCBDb3Zl
cmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292
ZXJhZ2VPZmZzZXQpOyB9CisgICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVy
YWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9CiB9OwogCiBzdHJ1Y3QgU2luZ2xl
U3Vic3RpdHV0aW9uMlN1YlRhYmxlIDogU3Vic3RpdHV0aW9uU3ViVGFibGUgewpAQCAtMTMxLDcg
KzEzMSw3IEBAIHN0cnVjdCBMb29rdXBUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6
Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNbMV07CiAgICAgLy8gT3BlblR5cGU6OlVJbnQxNiBtYXJr
RmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxkIGNvbWVzIGFmdGVyIHZhcmlhYmxlIGxlbmd0aCwgc28g
b2Zmc2V0IGlzIGRldGVybWluZWQgZHluYW1pY2FsbHkuCiAKLSAgICBib29sIGdldFN1YnN0aXR1
dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxH
bHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAg
IHsKICAgICAgICAgdWludDE2X3QgY291bnRTdWJUYWJsZSA9IHN1YlRhYmxlQ291bnQ7CiAgICAg
ICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzdWJUYWJsZU9mZnNldHNbY291bnRTdWJUYWJs
ZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0cnVjdCBMb29rdXBMaXN0IDogVGFibGVCYXNlIHsK
ICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQg
bG9va3VwT2Zmc2V0c1sxXTsKIAotICAgIGNvbnN0IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2
X3QgaW5kZXgsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAg
ICBjb25zdCBMb29rdXBUYWJsZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9v
a3VwQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZm
ZXIsICZsb29rdXBPZmZzZXRzW2NvdW50XSkpCkBAIC0yMDgsNyArMjA4LDcgQEAgc3RydWN0IEZl
YXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3Vu
dDsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cExpc3RJbmRleFsxXTsKIAotICAgIGJvb2wg
Z2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8
R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIp
IGNvbnN0CisgICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMoY29uc3QgTG9va3VwTGlzdCog
bG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsb29rdXBDb3Vu
dDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxvb2t1cExpc3RJbmRleFtjb3Vu
dF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7
CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZU9mZnNldDsKICAgICB9IGZlYXR1cmVz
WzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKHVpbnQxNl90IGluZGV4LCBP
cGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1aW50MTZfdCBpbmRleCwgT3Bl
blR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJlQ291bnQ7CiAgICAgICAgIGlmIChpbmRl
eCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZmZWF0dXJlc1tjb3VudF0pKQpAQCAt
MjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUo
T3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikg
Y29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcg
dGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGZv
ciAodWludDE2X3QgaSA9IDA7IGkgPCBmZWF0dXJlQ291bnQ7ICsraSkgewogICAgICAgICAgICAg
aWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbaV0pICYmIGZlYXR1cmVzW2ldLmZlYXR1
cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0cnVjdCBMYW5nU3lzVGFibGUgOiBU
YWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUNvdW50OwogICAgIE9wZW5U
eXBlOjpVSW50MTYgZmVhdHVyZUluZGV4WzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBm
ZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1
cmVzLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29u
c3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3Qg
RmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBp
ZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZUluZGV4W2NvdW50XSkpCkBAIC0yNzcsNyAr
Mjc3LDcgQEAgc3RydWN0IFNjcmlwdFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5
cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0OwogICAgIH0gbGFuZ1N5c1JlY29yZHNbMV07CiAKLSAg
ICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRM
YW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAg
dWludDE2X3QgY291bnQgPSBsYW5nU3lzQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChi
dWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tjb3VudF0pKQpAQCAtMjk4LDcgKzI5OCw3IEBAIHN0cnVj
dCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBzY3Jp
cHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRzWzFdOwogCi0gICAgY29uc3QgU2NyaXB0VGFibGUqIHNj
cmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0
YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWlu
dDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZl
ciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMxMCw3ICszMTAsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlz
dCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IFNj
cmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50
ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVy
LCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzIxLDcgKzMyMSw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0
IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdFRhYmxl
PihidWZmZXIsIHNjcmlwdHNbMF0uc2NyaXB0T2Zmc2V0KTsKICAgICB9CiAKLSAgICBjb25zdCBM
YW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgU2Ny
aXB0VGFibGUqIHNjcmlwdFRhYmxlID0gZGVmYXVsdFNjcmlwdChidWZmZXIpOwogICAgICAgICBp
ZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2LDExICszMzYsMTEgQEAgc3RydWN0IEdTVUJUYWJsZSA6
IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0dXJlTGlzdE9mZnNldDsKICAg
ICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cExpc3RPZmZzZXQ7CiAKLSAgICBjb25zdCBTY3JpcHRM
aXN0KiBzY3JpcHRMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0
T2Zmc2V0KTsgfQotICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0
PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IExv
b2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1
cExpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0
TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IEZlYXR1cmVMaXN0
KiBmZWF0dXJlTGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4g
dmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9
CisgICAgY29uc3QgTG9va3VwTGlzdCogbG9va3VwTGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBs
b29rdXBMaXN0T2Zmc2V0KTsgfQogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFu
Z1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29u
c3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlwdExpc3QqIHNjcmlwdHMgPSBzY3Jp
cHRMaXN0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0cykKQEAgLTM0OCw3ICszNDgsNyBA
QCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHNjcmlwdHMt
PmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgfQogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxl
KiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShP
cGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBsYW5nU3lzID0gZGVmYXVsdExh
bmdTeXMoYnVmZmVyKTsKICAgICAgICAgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzID0gZmVh
dHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2NSw3ICszNjUsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDog
VGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIGZlYXR1cmU7CiAgICAgfQogCi0gICAgYm9vbCBn
ZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwg
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0
VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgRmVh
dHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1cmVUYWJsZSA9IGZlYXR1cmUoT3BlblR5cGU6OlZlcnRG
ZWF0dXJlVGFnLCBidWZmZXIpOwogICAgICAgICBpZiAoIXZlcnRpY2FsRmVhdHVyZVRhYmxlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdy
aXRlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGly
ZWN0V3JpdGVVdGlsaXRpZXMuaAppbmRleCBhNjI3MTliMTcxOWE3NGY5NzY5MjIxOWRmNWY3YWFl
ZGM0OTA2NDY2Li4wZGI0YWZhZGIzZjc0MmI4M2E0ZTE2Y2YzNzE4NzBhMmIwNDA0ZWE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVV
dGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGly
ZWN0V3JpdGVVdGlsaXRpZXMuaApAQCAtNDMsNyArNDMsNyBAQCBlbnVtIERXUklURV9GT05UX1NU
UkVUQ0g7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBuYW1l
c3BhY2UgRGlyZWN0V3JpdGUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXgg
OGJlMWIxYTMzYTYyMDVjMTgxY2VmZjFhYzM0MzRiYzg3YTc4M2JlNS4uYzg2ODNhN2VmNTg5YzNm
ZTY1NGQ4NDU3MTI5NWUyNDBkMjI0NDllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUo
KQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9u
KQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAg
YXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBmYzA0ZjE3NWM3ODhiOWJlOTk4ZjVm
M2I3MTFmNTk3YzAyNmJiZjllLi4wOGZjOWYxOWVhZWE5NDgzZWE1OGVjMWFlZWRkNDU3MjU2Y2Uy
N2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTM2LDEzICszNiwxMyBAQCB0eXBl
ZGVmIHN0cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3Mg
Rm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRN
ZW1vcnlSZXNvdXJjZTsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVz
Owogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3Mg
Rm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250
RmVhdHVyZVNldHRpbmdzOwpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRm
b3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFDYWlyby5jcHAKaW5kZXggZjRmYmY3YTdmNGQ3YzgzZmYyMTE2YzMxZTU0NmNhOTFlMDU4
OWNiMS4uM2MxZDRlMmYzYzc1NGE3M2E4MjNhMDBjMTY3NGVjMzA0NDkzMTEyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGlj
IFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1E
YXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0g
Y3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFu
ZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWly
b1dpbi5jcHAKaW5kZXggNGM2NzRjNDc0M2JjMDExOGE5NzAxMGNjNjkyODliNTg2ZGJiMGNkMS4u
MzFhMWU1YzUzMWYyMDkwM2M1Y2ZiMzI4NjBiYTVlZjIwNjRlOTNkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFDYWlyb1dpbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBGb250UGxhdGZvcm1E
YXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0
CiAgICAgICAgICYmIG1fdXNlR0RJID09IG90aGVyLm1fdXNlR0RJOwogfQogCi1SZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50
MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6
Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBsYXRm
b3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXgg
NDM5Y2Y4NjNiODczZGM5Y2Y3ZjgxMDU5OWU1YTYwMWU3ZjczNzk5Ny4uNmNiNTUxMTA0YTkzYmRi
ZDIyYjQxN2E0NTQ2ZDIwZmFkMGUyYTM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcApAQCAt
NTksMTggKzU5LDE4IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEoR0RJT2Jq
ZWN0PEhGT05UPiBmb250LCBmbG9hdCBzaXplLCBib29sIGJvbGQsCiAgICAgUmVzdG9yZURDKGhk
YywgLTEpOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3Jt
RGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVp
bnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIEhXbmREQyBoZGMoMCk7CiAgICAgSEdESU9CSiBv
bGRGb250ID0gU2VsZWN0T2JqZWN0KGhkYywgaGZvbnQoKSk7CiAKICAgICBEV09SRCBzaXplID0g
R2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgMCwgMCk7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAg
ICAgaWYgKHNpemUgIT0gR0RJX0VSUk9SKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRh
KHNpemUpOwogICAgICAgICBEV09SRCByZXN1bHQgPSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAw
LCAoUFZPSUQpZGF0YS5kYXRhKCksIHNpemUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0ID09IHNpemUpOwotICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIH0KIAogICAgIFNlbGVjdE9iamVjdChoZGMs
IG9sZEZvbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKaW5kZXggNjI5ZTBlNjFhMTA0YzU2
N2ExZDRlZGNiN2U1Nzk3ZGNmNjdjNmU4ZS4uNzczNTczOWI5MzM0ZjQ0ZDk5YTNmMTJmZmM1YmY3
YjQxZjdjYzZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCkBAIC0yNzIsNyArMjcyLDcg
QEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJEaXJlY3QyRDo6Y3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWIKICAgICByZXR1cm4gYml0bWFwOwogfQogCi12b2lk
IEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlm
ICghYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5o
CmluZGV4IDRmNDcyNTg2YjQyNGJkYTFjZjZmYTAxNDNjYmEyM2QwMzAwMTZlNDUuLmMyMzY1ZmQ3
NDRjNjExOGMxOTk5ZTA1YjgwMmVkNWI0OGYzNjQ4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5o
CkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEltYWdlRGVjb2RlckRpcmVjdDJEIGZpbmFsIDogcHVi
bGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6CiAgICAgSW1hZ2VEZWNvZGVyRGlyZWN0MkQoKTsK
IAotICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyRGlyZWN0MkQ+IGNyZWF0ZShTaGFyZWRCdWZm
ZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgc3RhdGlj
IFJlZjxJbWFnZURlY29kZXJEaXJlY3QyRD4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJEaXJlY3QyRCgpKTsKICAgICB9CkBA
IC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNv
ZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVk
QnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAg
IGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0
YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5h
bCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZVdpbi5jcHAKaW5kZXggMGQ4ODIwZTlmM2Q2ZmQ3NzM1ZDU3MGIzNjQxNDg4ZjUzYmQ3ZWNlOS4u
MmQ5NzI3MGE3MzQ4MzQ4OTNlNzhjODFmZjBlYzViYjVkZmVjM2Y4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwCkBAIC0zMCw3ICsz
MCw3IEBACiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIC8vIFRoaXMgZnVuY3Rpb24gbG9h
ZHMgcmVzb3VyY2VzIGZyb20gV2ViS2l0Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBs
b2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsKK1JlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Nl
bGVjdGlvbkRhdGEuaAppbmRleCA3ZTNiMzYzMmI5MGM2MTk0MTVlNDhhNTJhMjI1OGIxNDJlMDAx
YTU3Li5jZjJiNTFmNmYwMjgzN2ExMTA2ZjRkOTk5ZjJmMTMwZTI1ODA5ODZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKQEAgLTYwLDggKzYwLDggQEAg
cHVibGljOgogICAgIHZvaWQgc2V0Q2FuU21hcnRSZXBsYWNlKGJvb2wgY2FuU21hcnRSZXBsYWNl
KSB7IG1fY2FuU21hcnRSZXBsYWNlID0gY2FuU21hcnRSZXBsYWNlOyB9CiAgICAgYm9vbCBjYW5T
bWFydFJlcGxhY2UoKSBjb25zdCB7IHJldHVybiBtX2NhblNtYXJ0UmVwbGFjZTsgfQogCi0gICAg
dm9pZCBzZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikg
eyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KLSAgICBDb250aWd1b3VzU2hhcmVk
QnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9
CisgICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1f
Y3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsgfQorICAgIFNoYXJlZEJ1ZmZlciogY3VzdG9t
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tRGF0YS5nZXQoKTsgfQogICAgIGJvb2wgaGFz
Q3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9jdXN0b21EYXRhOyB9CiAgICAgdm9pZCBj
bGVhckN1c3RvbURhdGEoKSB7IG1fY3VzdG9tRGF0YSA9IG51bGxwdHI7IH0KIApAQCAtNzYsNyAr
NzYsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IG1fZmlsZW5hbWVzOwogICAgIFJl
ZlB0cjxJbWFnZT4gbV9pbWFnZTsKICAgICBib29sIG1fY2FuU21hcnRSZXBsYWNlIHsgZmFsc2Ug
fTsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOworICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBkOTU2ZDllNzYyNWQ1
YmI1YTcwZjA2OTNlNzc5OGVlOTA4NDlmMTY1Li4zM2M5NWVjMzMzM2E5MjBjNjRhMDE4MTc1MWVi
NGE1MDVlZjFhN2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCkBAIC01MSw3ICs1
MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKIAotc3RhdGljIHVuc2ln
bmVkIGNvcHlGcm9tU2hhcmVkQnVmZmVyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVu
Z3RoLCBjb25zdCBTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikKK3N0YXRpYyB1bnNpZ25lZCBj
b3B5RnJvbVNoYXJlZEJ1ZmZlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCwg
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKQogewogICAgIHVuc2ln
bmVkIGJ5dGVzRXh0cmFjdGVkID0gMDsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBz
aGFyZWRCdWZmZXIpIHsKQEAgLTEzNSw3ICsxMzUsNyBAQCBib29sIG1hdGNoZXNDVVJTaWduYXR1
cmUoY2hhciogY29udGVudHMpCiAKIH0KIAotUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBT
Y2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRp
b24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQorUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUltYWdl
RGVjb2Rlcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9u
IGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbGVuZ3RoT2ZMb25nZXN0
U2lnbmF0dXJlID0gMTQ7IC8vIFRvIHdpdDogIlJJRkY/Pz8/V0VCUFZQIgogICAgIGNoYXIgY29u
dGVudHNbbGVuZ3RoT2ZMb25nZXN0U2lnbmF0dXJlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5o
CmluZGV4IDNjNmEzYTUwYzgyMDk2NGU4YTliMDc0OTAxYTkyYjNmM2M0Nzg5YjcuLjljNDA1NTc4
MjQxZDBjNTEyNzAyOTUxNWMyMjEyNjU4ZjhjNGY2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29k
ZXIuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIG51bGxwdHIg
aWYgd2UgY2FuJ3Qgc25pZmYgYSBzdXBwb3J0ZWQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBkYXRh
IChwb3NzaWJseQogICAgIC8vIGJlY2F1c2UgdGhlcmUgaXNuJ3QgZW5vdWdoIGRhdGEgeWV0KS4K
LSAgICBzdGF0aWMgUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAg
IHN0YXRpYyBSZWZQdHI8U2NhbGFibGVJbWFnZURlY29kZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OwogCiAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9wcmVtdWx0
aXBseUFscGhhOyB9CiAKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxldGU7CiAgICAg
fQogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIG92ZXJyaWRlCisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9
PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCkBAIC0xOTQsNyArMTk0LDcgQEAgcHVibGljOgog
ICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CiAgICAgVmVjdG9yPFNjYWxhYmxlSW1hZ2VEZWNvZGVy
RnJhbWUsIDE+IG1fZnJhbWVCdWZmZXJDYWNoZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7
CiAgICAgbXV0YWJsZSBMb2NrIG1fbG9jazsKICAgICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYv
QVZJRkltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcAppbmRleCA3YzYwM2ZkODM1OGMyMTRhYzkxODRm
MzE4OTk3MmZlODQxYjYxZTgwLi4yNmY4ODY0OTZlNWE1YTE0ZTI4YWZiMWFmYTliZmMzMDE3N2Y1
MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9h
dmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIEFW
SUZJbWFnZVJlYWRlcjo6QVZJRkltYWdlUmVhZGVyKFJlZlB0cjxBVklGSW1hZ2VEZWNvZGVyPiYm
IGRlY29kZXIpCiAKIEFWSUZJbWFnZVJlYWRlcjo6fkFWSUZJbWFnZVJlYWRlcigpID0gZGVmYXVs
dDsKIAotYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorYm9vbCBBVklGSW1h
Z2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoYXZpZkRlY29k
ZXJTZXRJT01lbW9yeShtX2F2aWZEZWNvZGVyLmdldCgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXpl
KCkpICE9IEFWSUZfUkVTVUxUX09LKQogICAgICAgICByZXR1cm4gYWxsRGF0YVJlY2VpdmVkID8g
bV9kZWNvZGVyLT5zZXRGYWlsZWQoKSA6IGZhbHNlOwpAQCAtNTgsNyArNTgsNyBAQCBib29sIEFW
SUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dCYgZGF0YSwgYm9vbCBhbAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFWSUZJbWFnZVJl
YWRlcjo6ZGVjb2RlRnJhbWUoc2l6ZV90IGZyYW1lSW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVy
RnJhbWUmIGJ1ZmZlciwgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkKK3Zv
aWQgQVZJRkltYWdlUmVhZGVyOjpkZWNvZGVGcmFtZShzaXplX3QgZnJhbWVJbmRleCwgU2NhbGFi
bGVJbWFnZURlY29kZXJGcmFtZSYgYnVmZmVyLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudCYgZGF0YSkKIHsKICAgICBpZiAobV9kZWNvZGVyLT5mYWlsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgKaW5kZXggY2JjYTBiOGMxMjRi
ZmYwZmZjMzMwMWJhMzViY2UwMWVkMjcyMmRmOC4uNDk2ZjY5ZjgxMmJkNzViMGVkYTYzNTdiYWE4
NjBjZmNjYjViYTRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCkBAIC0zOSw4ICszOSw4
IEBAIHB1YmxpYzoKICAgICBBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJbWFnZURlY29kZXI+
JiYpOwogICAgIH5BVklGSW1hZ2VSZWFkZXIoKTsKIAotICAgIGJvb2wgcGFyc2VIZWFkZXIoY29u
c3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAg
ICB2b2lkIGRlY29kZUZyYW1lKHNpemVfdCBpbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFt
ZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKTsKKyAgICBib29sIHBhcnNlSGVh
ZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpOworICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4LCBTY2FsYWJs
ZUltYWdlRGVjb2RlckZyYW1lJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQmKTsKICAgICBzaXplX3QgaW1hZ2VDb3VudCgpIGNvbnN0OwogICAgIGRvdWJsZSByZXBl
dGl0aW9uQ291bnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3
Mjc2OWE2OTI2ZWMyNDE5YmY2NjM4MjUyOGQzZDc3MjBhNTRhZGFlLi5mNzQ1NWMxNDZjN2U4YWVi
MDRjYzhjNTZmMzMwZTJhMDFmM2JhNzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApA
QCAtNDYsNyArNDYsNyBAQCBCTVBJbWFnZURlY29kZXI6OkJNUEltYWdlRGVjb2RlcihBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogewogfQogCi12b2lkIEJN
UEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQordm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzdjN2NhODFmZWE2
YjhhNzc0YmIzMDhlNTM4ZGNkMDQ4Yzk5NWVlYS4uNjRkZWQ2YWJiZTJjMGEyOWIxMWY5ZmI1ZWNk
NmI0ODcyNGQ1ODk3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaApAQCAtNDQsNyArNDQsNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmluZyBmaWxl
bmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJibXAiX3M7IH0KLSAgICB2b2lk
IHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAg
IHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpIGZpbmFsOwogICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJ
bmRleChzaXplX3QgaW5kZXgpIGZpbmFsOwogICAgIC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRl
bGV0ZXMgfG1fcmVhZGVyfC4gQmUgY2FyZWZ1bCB0byBhdm9pZAogICAgIC8vIGFjY2Vzc2luZyBk
ZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxseSB3aGVuIGNhbGxpbmcgdGhpcyBmcm9tIGluc2lkZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JN
UEltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9i
bXAvQk1QSW1hZ2VSZWFkZXIuaAppbmRleCA0ODQ0ZjM4MGRjMTdlYzcwNDU4OGZiMTJmNTNlYWJj
NmQyMGU2MGY0Li5iZDQzMGU4YThiZWEyYzgxNmIyYzUyMmJmNWJhNzg4NDZjMzhlMGZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1h
Z2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9i
bXAvQk1QSW1hZ2VSZWFkZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBCTVBJbWFnZVJlYWRl
ciB7CiBwdWJsaWM6CiAgICAgLy8gUmVhZCBhIHZhbHVlIGZyb20gfGRhdGFbb2Zmc2V0XXwsIGNv
bnZlcnRpbmcgZnJvbSBsaXR0bGUgdG8gbmF0aXZlCiAgICAgLy8gZW5kaWFubmVzcy4KLSAgICBz
dGF0aWMgaW5saW5lIHVpbnQxNl90IHJlYWRVaW50MTYoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJl
YWRVaW50MTYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEs
IGludCBvZmZzZXQpCiAgICAgewogICAgICAgICB1aW50MTZfdCByZXN1bHQ7CiAgICAgICAgIG1l
bWNweSgmcmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgMik7CkBAIC01Miw3ICs1Miw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBzdGF0aWMgaW5s
aW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYg
ZGF0YSwgaW50IG9mZnNldCkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIo
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZz
ZXQpCiAgICAgewogICAgICAgICB1aW50MzJfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNweSgmcmVz
dWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgNCk7CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoK
ICAgICBCTVBJbWFnZVJlYWRlcihTY2FsYWJsZUltYWdlRGVjb2RlciogcGFyZW50LCBzaXplX3Qg
ZGVjb2RlZEFuZEhlYWRlck9mZnNldCwgc2l6ZV90IGltZ0RhdGFPZmZzZXQsIGJvb2wgdXNlc0Fu
ZE1hc2spOwogCiAgICAgdm9pZCBzZXRCdWZmZXIoU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSog
YnVmZmVyKSB7IG1fYnVmZmVyID0gYnVmZmVyOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KKyAgICB2b2lkIHNl
dERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRh
ID0gJmRhdGE7IH0KIAogICAgIC8vIERvZXMgdGhlIGFjdHVhbCBkZWNvZGluZy4gSWYgfG9ubHlT
aXplfCBpcyB0cnVlLCBkZWNvZGluZyBvbmx5CiAgICAgLy8gcHJvZ3Jlc3NlcyBhcyBmYXIgYXMg
bmVjZXNzYXJ5IHRvIGdldCB0aGUgaW1hZ2Ugc2l6ZS4gUmV0dXJucwpAQCAtMjcyLDcgKzI3Miw3
IEBAIHByaXZhdGU6CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogbV9idWZmZXI7CiAK
ICAgICAvLyBUaGUgZmlsZSB0byBkZWNvZGUuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+IG1fZGF0YTsKIAogICAgIC8vIEFuIGluZGV4IGludG8gfG1fZGF0YXwgcmVwcmVz
ZW50aW5nIGhvdyBtdWNoIHdlJ3ZlIGFscmVhZHkgZGVjb2RlZC4KICAgICBzaXplX3QgbV9kZWNv
ZGVkT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcApp
bmRleCA2MDEyMDM3NGY5YzQzMTY4YTY1MjFiNjljNTRhZmJlMmEwMGY1NWY3Li40YTIxMjU1YThj
MGZiNjc4ZTRhYWRkNzY2M2ViN2Y5MThlN2ZlOTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFn
ZUJhY2tpbmdTdG9yZUNhaXJvLmNwcApAQCAtMzcsNyArMzcsOSBAQCBQbGF0Zm9ybUltYWdlUHRy
IEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0CiAgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8dWludDMyX3QqPihtX3BpeGVsc1B0cikpLAog
ICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMyLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdo
dCgpLCBzaXplKCkud2lkdGgoKSAqIHNpemVvZih1aW50MzJfdCkpKTsKICAgICBzdGF0aWMgY2Fp
cm9fdXNlcl9kYXRhX2tleV90IHNfc3VyZmFjZURhdGFLZXk7Ci0gICAgY2Fpcm9fc3VyZmFjZV9z
ZXRfdXNlcl9kYXRhKHN1cmZhY2UuZ2V0KCksICZzX3N1cmZhY2VEYXRhS2V5LCBtX3BpeGVscy5n
ZXQoKSwgW10odm9pZCogZGF0YSkgeyBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50Kj4oZGF0YSktPmRlcmVmKCk7IH0pOworICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0
YShzdXJmYWNlLmdldCgpLCAmc19zdXJmYWNlRGF0YUtleSwgbV9waXhlbHMuZ2V0KCksIFtdKHZv
aWQqIGRhdGEpIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8RGF0YVNlZ21lbnQqPihkYXRhKS0+ZGVy
ZWYoKTsKKyAgICB9KTsKIAogICAgIHJldHVybiBzdXJmYWNlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VE
ZWNvZGVyLmNwcAppbmRleCBlNmFiZTBkOTU0NGI2YzE4NWM2NDVkZWNlMDlmMjNmOTU2NjYwN2Ni
Li5iOWVjMDFiOGFlOGU4ZDI5YmM3ODI1MjZlMDc2NTI1NTFlMzU5YzAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VEZWNvZGVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBHSUZJbWFnZURlY29kZXI6OkdJRklt
YWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cAogCiBHSUZJbWFnZURlY29kZXI6On5HSUZJbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZv
aWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCit2b2lkIEdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVk
KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAppbmRleCAzNWRmMzNm
NmRmYzQ4M2ZkODQ3MTM2NmFlNTNiYjBiOTYxY2FlZDJlLi5jNzQ3MTk5OTliOTg2YzFjZWY4NDc4
NzU5ZDIzNzE4YzkwNDJkM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0
Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5n
IGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gImdpZiJfczsgfQotICAg
IHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBm
aW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXpl
JikgZmluYWw7CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCBmaW5hbDsKICAgICBSZXBl
dGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJl
YWRlci5oCmluZGV4IDQyMTQ2ZTAzMjkzMjM2OTk3ODllYjVlNDJhZjRjNzNkMzRhYjljYzYuLjEw
ODJmZGYwZGZmMjM5MWU1NjUzMGE0MWY4N2JhNDM5ODIzMjc1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJl
YWRlci5oCkBAIC0yMzcsNyArMjM3LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2
b2lkIHNldERhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBt
X2RhdGEgPSAmZGF0YTsgfQorICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQogICAgIC8v
IEZJWE1FOiBoYWx0QXRGcmFtZSBzaG91bGQgYmUgc2l6ZV90LgogICAgIGJvb2wgZGVjb2RlKFdl
YkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6R0lGUXVlcnksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKTsK
IApAQCAtMzE2LDYgKzMxNiw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxHSUZGcmFtZUNvbnRleHQ+ID4gbV9mcmFtZXM7CiAgICAgc2l6ZV90IG1fY3VycmVudERlY29k
aW5nRnJhbWU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dD4gbV9kYXRhOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudD4gbV9kYXRhOwogICAgIGJvb2wgbV9wYXJzZUNvbXBsZXRlZDsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1h
Z2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IGM3MTdjNDVkMzA1N2MwNTUzNmVlNjA1MGY5Mzk3
MDQ2ZDEwZGYyYTcuLmMwNzEzNDViOGJmMzY5YjgwMjcxZmJkZjBhMGNlMDE3NGYwNTAzYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09J
bWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIElDT0ltYWdlRGVj
b2Rlcjo6SUNPSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wCiAKIElDT0ltYWdlRGVjb2Rlcjo6fklDT0ltYWdlRGVjb2RlcigpID0gZGVm
YXVsdDsKIAotdm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAg
IGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCmlu
ZGV4IGZiN2E5MDNiMmEwNzUzOTQ5MTdhYmJiZjExYjFjZWQ4M2ZmNDMyYTAuLjEwZWU5YjRkMmU4
YzlkODg3ZTFkMmI4YmUxMzliYjc0MjcxZDU3YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgK
QEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIK
ICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiAiaWNv
Il9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCBmaW5h
bDsKICAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
KSBjb25zdCBmaW5hbDsKICAgICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggMWM4NzFmNGQ1NjQ5MWJmNzc1ZTg1
MDBjMTZkMGJiODk0ZDU0ZTZkYy4uOGZiOTIyMGVlMzdmNmFkODE5MzgyMDc3NGNlMjJiMWQ1Y2Mz
YTU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC0yMjAsNyArMjIwLDcg
QEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlcikK
ICAgICAgICAgJiYgbWFya2VyLT5kYXRhWzExXSA9PSAnXDAnOwogfQogCi1zdGF0aWMgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19z
dHJ1Y3QqIGluZm8pCitzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUo
anBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
IGJ1ZmZlcjsKICAgICBmb3IgKGpwZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIgPSBpbmZvLT5t
YXJrZXJfbGlzdDsgbWFya2VyOyBtYXJrZXIgPSBtYXJrZXItPm5leHQpIHsKQEAgLTMyMCw3ICsz
MjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYnl0ZXNUb1NraXAgPSBzdGQ6Om1heChudW1CeXRl
cyAtIGJ5dGVzVG9Ta2lwLCBzdGF0aWNfY2FzdDxsb25nPigwKSk7CiAgICAgfQogCi0gICAgYm9v
bCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5
U2l6ZSkKKyAgICBib29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkKICAgICB7CiAgICAgICAgIG1fZGVjb2RpbmdT
aXplT25seSA9IG9ubHlTaXplOwogCkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBKUEVHSW1hZ2VE
ZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB9CiAK
ICNpZiBVU0UoTENNUykKLXZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEpQRUdJbWFnZURlY29k
ZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAg
aWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgK
aW5kZXggYzAzYWE2NzgyMjAzY2JkNGNmYzgzZmRlOGY4NzEyYjcwODFlM2FhOS4uZDJkN2ZhNmFi
NDliNDI0N2FmZmI4ZTFmYmVlNDY5NTNiMGNiMDVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNv
ZGVyLmgKQEAgLTY4LDcgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZv
aWQgc2V0T3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVu
dGF0aW9uID0gb3JpZW50YXRpb247IH0KICNpZiBVU0UoTENNUykKLSAgICAgICAgdm9pZCBzZXRJ
Q0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKKyAgICAgICAgdm9p
ZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOwogI2VuZGlmCiAKICAgICBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCmlu
ZGV4IGJlY2Y2NDUwMjc3ZWViNzRiMDlkZTUyZWUxODJmZjZlMTFlZDI3NjIuLjIwNDczZjBlZWVi
YjU2YzcxMzE0ZjY1NTZiZGEwOTAzMzQ5MDc0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9K
UEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIEpQRUcyMDAw
SW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiAgICAgfQogCiAgICAgc3RydWN0IFJlYWRlciB7Ci0gICAgICAgIFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQmIGRhdGE7CisgICAgICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50JiBkYXRhOwogICAgICAgICBzaXplX3Qgb2Zmc2V0OwogICAgIH0gcmVhZGVyID0geyAqbV9k
YXRhLCAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYzEyYzQ1OWE1YTNl
NWIzNTFjNWJjYzYyYmYwMGI4YTI4MWJkNWJhMy4uNGNiZDMyM2Q5YTc1MDI2ZWY4NjU4ZjM4MTZk
ZDczOGQzN2NhOGVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE1Miw3ICsx
NTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVhZE9mZnNldCA9IDA7CiAgICAgfQogCi0gICAg
Ym9vbCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBz
aXplT25seSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpCisgICAgYm9vbCBkZWNvZGUoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgc2l6ZU9ubHksIHVu
c2lnbmVkIGhhbHRBdEZyYW1lKQogICAgIHsKICAgICAgICAgbV9kZWNvZGluZ1NpemVPbmx5ID0g
c2l6ZU9ubHk7CiAgICAgICAgIFBOR0ltYWdlRGVjb2RlciogZGVjb2RlciA9IHN0YXRpY19jYXN0
PFBOR0ltYWdlRGVjb2Rlcio+KHBuZ19nZXRfcHJvZ3Jlc3NpdmVfcHRyKG1fcG5nKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJ
bWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAwMmYxYjA5ZGJjNzY1MTYwMWY5MjJkZGUy
OWY4MDVhNjU4NzFlMmQyLi5iMWJlYzU1ZTc4YzQzNDgwMWMyNTRhY2UwZGY1OTkzMWEzNmI3NGJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJw
L1dFQlBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgV0VC
UEltYWdlRGVjb2Rlcjo6V0VCUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGUKIAogV0VCUEltYWdlRGVjb2Rlcjo6fldFQlBJbWFnZURlY29k
ZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRC
dWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBXRUJQSW1hZ2VEZWNvZGVy
OjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTMyLDcgKzEz
Miw3IEBAIHZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKHNpemVfdCBmcmFtZUluZGV4LCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBUaGlzIGNhbiBiZSBleGVjdXRlZCBib3RoIGlu
IHRoZSBtYWluIHRocmVhZCAod2hlbiBub3QgdXNpbmcgYXN5bmMgZGVjb2RpbmcpIG9yIGluIHRo
ZSBkZWNvZGluZyB0aHJlYWQuCiAgICAgLy8gV2hlbiBleGVjdXRlZCBpbiB0aGUgZGVjb2Rpbmcg
dGhyZWFkLCBhIGNhbGwgdG8gc2V0RGF0YSgpIGZyb20gdGhlIG1haW4gdGhyZWFkIG1heSBjaGFu
Z2UgdGhlIGRhdGEKICAgICAvLyB0aGUgV2ViUERlbXV4ZXIgaXMgdXNpbmcsIGxlYXZpbmcgaXQg
aW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLCBzbyB3ZSBuZWVkIHRvIHByb3RlY3QgdGhlIGRhdGEu
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHByb3RlY3RlZERhdGEobV9k
YXRhKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHBy
b3RlY3RlZERhdGEobV9kYXRhKTsKICAgICBXZWJQRGF0YSBpbnB1dERhdGEgPSB7IHByb3RlY3Rl
ZERhdGEtPmRhdGEoKSwgcHJvdGVjdGVkRGF0YS0+c2l6ZSgpIH07CiAgICAgV2ViUERlbXV4U3Rh
dGUgZGVtdXhlclN0YXRlOwogICAgIFdlYlBEZW11eGVyKiBkZW11eGVyID0gV2ViUERlbXV4UGFy
dGlhbCgmaW5wdXREYXRhLCAmZGVtdXhlclN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVy
LmgKaW5kZXggYWYzNjVlOWNmOWM3Y2U5NTM4YjY0YmE3ODliZjAxN2Q0OGY2ZWRlMS4uZGQyOGJj
ODhkZjVjMGZhM2MxNTczNzg2OWIyNjA5NzNhYWEwZDIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldFQlBJbWFn
ZURlY29kZXIoKTsKIAogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICJ3ZWJwIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYs
IGJvb2wpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
Ym9vbCkgZmluYWw7CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogZnJhbWVCdWZmZXJB
dEluZGV4KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0
aXRpb25Db3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcmFtZUNvdW50OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IGE3ZjQ1MDMyMGU5MDhjNmExZjVmMGY4
OTU2MDkyYWUyNDc5NWEyNGEuLjM2ODcyMmEzNmY1OGNjMGU3MmFmODc2NTVlYmFlNmNhNWQ0Yjk3
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBA
IC0yNDAsMTQgKzI0MCwxNCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgog
CiAjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJp
bmc6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUZsYXRSVEZEXSkgewotICAgICAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZUZsYXRSVEZELCBtX3Bhc3RlYm9hcmROYW1l
LCBjb250ZXh0KCkpOworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJh
dGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCBrVVRUeXBlRmxhdFJURkQs
IG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50
ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0
ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVh
ZGVyLnJlYWRSVEZEKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJl
c3VsdDo6RGlkTm90UmVhZFR5cGU7CiAgICAgfQogCiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0
cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUlRGXSkgewotICAgICAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVJURiwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4
dCgpKTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVJURiwgbV9wYXN0ZWJvYXJk
TmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291
bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFu
Z2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAmJiByZWFkZXIucmVhZFJURigq
YnVmZmVyKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJl
YWRUeXBlOwpAQCAtMjU1LDcgKzI1NSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCiAjZW5kaWYgLy8gIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogCiAgICAgaWYgKFtzdXBw
b3J0ZWRJbWFnZVR5cGVzKCkgY29udGFpbnNPYmplY3Q6dHlwZV0pIHsKLSAgICAgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChpdGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7
CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRl
eHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAg
ICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFs
bHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRJbWFnZShidWZmZXIucmVs
ZWFzZU5vbk51bGwoKSwgdHlwZSwgaXRlbUluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkg
PyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJk
SU9TLm1tCmluZGV4IGQ5ZjQ4ZWQxYjM0MDVkMmRlYTk3NzhjM2E2YzU3MmJjNTMyZmI5MzEuLmQ2
NGI5NjgzNDczNzgzMmQyZWVkNjg4MjM2MDEyMjcwNjU1ODUzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtNzks
MTAgKzc5LDEwIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3Ry
aW5nPiYgdHlwZXMpIGNvbnN0CiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFz
dGVib2FyZCBwYXN0ZWJvYXJkVHlwZXNdKTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZl
ckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmIChOU0RhdGEgKmRh
dGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTp0eXBlXSkKLSAgICAgICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIHJldHVybiBudWxscHRyOwogfQog
CkBAIC0zMzgsNyArMzM4LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKICAgICByZXR1cm4gMDsKIH0KIAotaW50NjRfdCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcios
IGNvbnN0IFN0cmluZyYpCitpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9y
VHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiAwOwogfQpA
QCAtNjA5LDcgKzYwOSw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlw
ZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBvCiAjZW5kaWYgLy8gUEFT
VEVCT0FSRF9TVVBQT1JUU19QUkVTRU5UQVRJT05fU1RZTEVfQU5EX1RFQU1fREFUQQogCiAgICAg
aWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQ
YXN0ZWJvYXJkVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0g
ICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVy
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0
KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJl
ZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkp
OwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZv
ciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9t
UGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTY3Miw3ICs2NzIsNyBAQCBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+Pih2YWx1ZSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1
ZmZlcj4+KHZhbHVlKTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0
YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FU
eXBlXTsKICAgICB9KTsKIApAQCAtNzQ2LDcgKzc0Niw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRm
b3JtUGFzdGVib2FyZDo6YWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25z
dAogICAgIHJldHVybiBzdHJpbmdzOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBp
bmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxh
dGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmICghaW5kZXgpCiAgICAgICAgIHJl
dHVybiBidWZmZXJGb3JUeXBlKHR5cGUpOwpAQCAtNzYxLDcgKzc2MSw3IEBAIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpv
cHRpb25hbDxzaXplCiAKICAgICBpZiAoIVtwYXN0ZWJvYXJkSXRlbSBjb3VudF0pCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOworICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJbmRleDowXSk7CiB9CiAKIFN0
cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHR5cGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUHJldmlld0NvbnZlcnRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
cmV2aWV3Q29udmVydGVySU9TLm1tCmluZGV4IDU0NDY1M2M0NDAzZDI2MDQwYTU1ZDIzZTkzNjkx
YmZlZGNjOTJiNDIuLmJmZTM2YWJkOTc0M2E2YmE0NWU0M2MwZThiN2Q5YWUxYWU5MDZmMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9T
Lm1tCkBAIC04Miw3ICs4Miw3IEBAIEBlbmQKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUHJldmll
d0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRlcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyJiBwcm92aWRlcikKLSAgICA6IG1fcHJldmll
d0RhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICA6IG1fcHJldmlld0RhdGEgeyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CiAgICAgLCBtX29yaWdpbmFsUmVzcG9u
c2UgeyByZXNwb25zZSB9CiAgICAgLCBtX3Byb3ZpZGVyIHsgcHJvdmlkZXIgfQogICAgICwgbV9w
bGF0Zm9ybURlbGVnYXRlIHsgYWRvcHROUyhbW1dlYlByZXZpZXdDb252ZXJ0ZXJEZWxlZ2F0ZSBh
bGxvY10gaW5pdFdpdGhEZWxlZ2F0ZToqdGhpc10pIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggYTE1MTZhZTM0ZjgyOWJhNzJjYTU2MWQ5NWU0
ZmM5NzhiOTUyZDM4Zi4uM2U1NjMzZmJkYTczNWQ1YTExNDVlMjUxY2M5ODE4OTVkMjQyMzBmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTI2
Myw3ICsyNjMsNyBAQCBzdGF0aWMgdm9pZCB3cml0ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNobWVu
dChOU0ZpbGVXcmFwcGVyICp3cmFwcGVyLCBjb25zdCBTdHJpbgogICAgIGlmICghUlRGRERhdGEp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG5ld0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShSVEZERGF0YSkucHRyKCksIGxlZ2FjeVJURkRQYXN0ZWJvYXJk
VHlwZSgpLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CisgICAgbmV3Q2hhbmdlQ291bnQgPSBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5
cGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoUlRGRERhdGEpLnB0cigpLCBsZWdhY3lSVEZEUGFzdGVi
b2FyZFR5cGUoKSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQpAQCAtMjg1
LDcgKzI4NSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIH0KIAog
ICAgIG1fY2hhbmdlQ291bnQgPSB3cml0ZVVSTEZvclR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmRO
YW1lLCBwYXN0ZWJvYXJkSW1hZ2UudXJsLCBjb250ZXh0KCkpOwotICAgIG1fY2hhbmdlQ291bnQg
PSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZv
clR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGltYWdlRGF0YSkucHRyKCksIGxl
Z2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwor
ICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW1hZ2VEYXRhKS5w
dHIoKSwgbGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRl
eHQoKSk7CiAgICAgaWYgKGF1dG8gYXJjaGl2ZURhdGEgPSBwYXN0ZWJvYXJkSW1hZ2UuZGF0YUlu
V2ViQXJjaGl2ZUZvcm1hdCkgewogICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJh
dGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGFyY2hpdmVE
YXRhLmdldCgpLCBXZWJBcmNoaXZlUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4
dCgpKTsKIApAQCAtMzQ0LDcgKzM0NCw3IEBAIHN0YXRpYyBTdHJpbmcgcmVhZFN0cmluZ0F0UHJl
ZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpvcHRpb25hbDxzCiAgICAg
cmV0dXJuIHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUodHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRl
eHQpOwogfQogCi1zdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQor
c3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRl
eChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBh
c3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIGlmIChpdGVtSW5kZXgp
CiAgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoKml0ZW1J
bmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggYjQ5YWQ3
YzA0YTUyODE4MmE1MWI4YTNhOTg0ZDdkOTA0ZDYzOTc5OS4uYTdmZTcyNTU0Mzc2NjVlOGI4YTBj
NzQ1M2QzMDQ3NDlkNDU2MmY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCwxMiArNjgsMTIgQEAgdm9pZCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykgY29uc3QK
ICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0ZWJvYXJkIHR5cGVzXSk7CiB9
CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3QKK1JlZlB0cjxT
aGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdAogewogICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3Rl
Ym9hcmQgZGF0YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmICghZGF0YSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsKIH0KIAogaW50IFBsYXRmb3Jt
UGFzdGVib2FyZDo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgVmVj
dG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRX
cml0ZShjb25zdCBTdHJpbmcmIG8KIHsKICAgICBMaXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3Rl
Ym9hcmRUeXBlczsKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bh
c3RlYm9hcmQgZGF0YUZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkp
XSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJl
ZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURh
dGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEp
LmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAg
ICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBlcygpKQogICAgICAgICAgICAg
ICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC0yNjMsOCArMjYzLDggQEAgaW50
NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRh
JiBkYXRhKQogICAgICAgICBpZiAocGxhdGZvcm1UeXBlLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1
dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pihz
dHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4o
c3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAgICAgICAgICAgICBbbV9wYXN0
ZWJvYXJkIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsK
ICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5n
T3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4o
c3RyaW5nT3JCdWZmZXIpOwpAQCAtMzQxLDcgKzM0MSw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0
ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKQog
ICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpjcmVhdGVOU0FycmF5KHBhc3Rl
Ym9hcmRUeXBlcykuZ2V0KCkgb3duZXI6bmlsXTsKIH0KIAotaW50NjRfdCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogYnVmZmVyLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQoraW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFjYW5Xcml0ZVBhc3RlYm9hcmRUeXBlKHBhc3RlYm9h
cmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00NDYsNyArNDQ2LDcgQEAgc3RhdGljIFN0
cmluZyB3ZWJTYWZlTUlNRVR5cGVGb3JNb2Rlcm5QYXN0ZWJvYXJkVHlwZShOU1Bhc3RlYm9hcmRU
eXBlIHBsYXRmb3JtVHkKICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8
c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmICghaW5kZXgpCiAg
ICAgICAgIHJldHVybiBidWZmZXJGb3JUeXBlKHR5cGUpOwpAQCAtNDU3LDcgKzQ1Nyw3IEBAIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZm
ZXIoc3RkOjpvcHRpb25hbDxzaXplCiAKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0
YUZvclR5cGU6dHlwZV0pIHsKICAgICAgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKGRhdGEuY29w
eSk7Ci0gICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRh
LmdldCgpKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQo
KSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MDcsOCArNTA3LDggQEAgc3Rh
dGljIFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25z
dCBQYXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAgaWYgKCFwbGF0Zm9ybVR5cGUpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlm
IChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgeworICAg
ICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZl
cj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW2l0
ZW0gc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAg
ICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1
ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJp
bmdPckJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKaW5kZXggNjgxM2Q1ZGE3ZGNiMGZj
MjU5ZjFiZDFlZDBhNTRjMWExYTlmZDljZi4uNzk2NTU0ZjRjOTc2NDUxNDAxZTFhMTIzNzQ2ODcw
NDBiMjRiMWNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaApAQCAtNDMsNyArNDMsNyBAQCBj
bGFzcyBNZWRpYVNhbXBsZTsKIGNsYXNzIE1lZGlhU3RyZWFtUHJpdmF0ZTsKIGNsYXNzIE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlOwogY2xhc3MgUGxhdGZvcm1BdWRpb0RhdGE7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgTWVkaWFS
ZWNvcmRlclByaXZhdGVPcHRpb25zOwogCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB9
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBdWRpb1ZpZGVvU2VsZWN0ZWRUcmFja3Mgc2Vs
ZWN0VHJhY2tzKE1lZGlhU3RyZWFtUHJpdmF0ZSYpOwogCi0gICAgdXNpbmcgRmV0Y2hEYXRhQ2Fs
bGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+OworICAgIHVzaW5nIEZldGNoRGF0YUNhbGxi
YWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT47CiAgICAgdmlydHVhbCB2b2lk
IGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmKSA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
TW9jay5jcHAKaW5kZXggYzI1ZGY5MTU3NGE2NWJjNDFiZGI3MDY3OGRjNDc3MjQ4MzZkZDE0NS4u
NDk4ZDRlZTEzNDBjNGI5NDAwMWI2MGMzNDQ3OWI3ZjcyZDVjOGU2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1v
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGVNb2NrLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlTW9jazo6Z2VuZXJhdGVNb2NrQ291bnRlclN0cmluZygpCiAKIHZvaWQgTWVkaWFS
ZWNvcmRlclByaXZhdGVNb2NrOjpmZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB7CiAgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX2J1ZmZlckxvY2sgfTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVl
IHsgbV9idWZmZXIuY2hhcmFjdGVyczgoKSwgbV9idWZmZXIubGVuZ3RoKCkgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKaW5kZXggNWVk
OThjNDEzMGI5YmUwMzUyMzdiZjJlZjUwNjNmNmIyZWNkYzA1NS4uOWMyYzc5N2I4MTk1MTJkOGZk
NTc5MDE1ZGMzYjZlNDA1ZTNiYzYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAg
IHZvaWQgYXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIoTWVkaWFTYW1wbGUmKTsKICAgICB2b2lkIGFw
cGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbiYsIGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgc2l6ZV90KTsKICAg
ICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKLSAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYpOworICAgIHZvaWQg
ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGRvdWJsZSk+JiYpOwogCiAgICAgdm9pZCBwYXVzZSgpOwogICAgIHZvaWQgcmVz
dW1lKCk7CkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZmluaXNoZWRG
bHVzaGluZ1NhbXBsZXMoKTsKICAgICB2b2lkIGNvbXBsZXRlRmV0Y2hEYXRhKCk7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gdGFrZURhdGEoKTsKIAogICAgIGJvb2wgbV9oYXNBdWRpbyB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2hhc1ZpZGVvIHsgZmFsc2UgfTsKQEAgLTExOCw3ICsxMTgsNyBAQCBwcml2YXRl
OgogCiAgICAgTG9jayBtX2RhdGFMb2NrOwogICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRh
IFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7Ci0gICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRp
b25IYW5kbGVyOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CiAK
ICAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9hdWRpb0Zvcm1hdERlc2Ny
aXB0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+
IG1fYXVkaW9Db21wcmVzc29yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVy
UHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IGM3MWFhODRhZmMxZWMxMDAzZDljNzRiNWQ3ZjEz
ZmVlNDM3NjVlM2EuLjg0ODQxMDBlYWM1ZTExNWU5YjBjZjAxMjBiYWJmNzhmYjFhMTI3NGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVk
aWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
bW0KQEAgLTQ5Myw3ICs0OTMsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpz
dG9wUmVjb3JkaW5nKCkKICAgICB9KTsKIH0KIAotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKTsKIApAQCAtNTM4LDcgKzUzOCw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgbV9k
YXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFrZURhdGEoKQogewogICAgIExv
Y2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07CiAgICAgcmV0dXJuIG1fZGF0YS50YWtlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKaW5k
ZXggYTliMjlkNTllOWFhM2I0NjU1NDE1YmQ4YmVmMDk4NGM1NDRiNzNmMC4uY2RlZTYwMzUyM2Nk
NjY5NDVmNDI4ZjY5NDc4OTYwZjZmZDc0Yzc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBEYXRhVVJMRGVjb2RlciB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggNjIzNjRkNzEzYzk1YTlm
ODQzYzdkMjljMDFmMGRlYjlhZTZkMTc1YS4uMGM5MDgxN2M0ZTliNDFmMzQ5YTQxYWU2NGI3MTkw
NmI5NTFlYjg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5jcHAKQEAgLTQxMiwxMyArNDEyLDEzIEBAIHVpbnQ2NF90IEZvcm1EYXRhOjpsZW5ndGhJbkJ5
dGVzKCkgY29uc3QKICAgICByZXR1cm4gKm1fbGVuZ3RoSW5CeXRlczsKIH0KIAotUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CitS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAogewog
ICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKICAgICAgICAgaWYgKCFzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rvcjx1aW50OF90Pj4oZWxlbWVudC5kYXRhKSkKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGZsYXR0ZW4oKSk7CiB9CiAKIFVSTCBGb3JtRGF0YTo6YXNCbG9iVVJMKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCAxMDgyODExMzFm
ODNlOTkzNzBmYzUwOTc4MzNjYzUwZWU4YWRiZGFhLi5lOWQzNDQzZjhiNWM2ODI0NDY2NTZjMTg4
MDU2NTdjYzI5ZDJkODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JS
ZWdpc3RyeUltcGw7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNzIEZpbGU7Ci1jbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgRm9ybURh
dGFFbGVtZW50IHsKICAgICBzdHJ1Y3QgRW5jb2RlZEZpbGVEYXRhOwpAQCAtMjMyLDcgKzIzMiw3
IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiYgZWxlbWVudHMo
KSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+JiBi
b3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0KIAotICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVy
KCkgY29uc3Q7CiAKICAgICBib29sIGFsd2F5c1N0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx3
YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBzZXRBbHdheXNTdHJlYW0oYm9vbCBhbHdheXNTdHJlYW0p
IHsgbV9hbHdheXNTdHJlYW0gPSBhbHdheXNTdHJlYW07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCBmYWZkZmU4N2M4MzdlNjE1
N2QyZjEzZTlhN2NhMDA5NjlkNTBiMWM3Li40YmViY2I1MDk4ZDE1YzI5NjZlZDhjN2VlMTM2YWUz
YTJhZTRhMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5oCkBAIC04NCw3ICs4NCw3IEBAIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBT
ZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZTsKIGNsYXNzIFRp
bWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IDgxOGUxODE4NDUxOTY3YWI1MmQxOThkOTU4N2Iy
MGExNDQ0NzhkZDkuLmJhOGZkNGZmNGYxZTQxYzlhZDRmYTc0YTQyYmU0ZTJiZDExYWE4NDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuY3BwCkBAIC0zNiw3ICszNiw3IEBAIFJlc291cmNlSGFuZGxlQ2xpZW50OjpS
ZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogUmVzb3VyY2VIYW5kbGVDbGllbnQ6
On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAotdm9pZCBSZXNvdXJjZUhhbmRs
ZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJj
ZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0
aCkKIHsKICAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5oCmluZGV4IGI2MzM3ZDU2Y2U4Y2Q5YmVmZjlkZmJlMTEzNjYyYmM3NzU2YjY1MzcuLmM0ZjA1
NDg1ZjI4NzBiMTE2ZGE3Yzc2MGQzYzBmY2U5NmVjMmI0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKQEAgLTUw
LDcgKzUwLDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGVudW0gQ2FjaGVT
dG9yYWdlUG9saWN5IHsKICAgICBTdG9yYWdlQWxsb3dlZCwKQEAgLTY2LDcgKzY2LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2ln
bmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyp0b3RhbEJ5
dGVzVG9CZVNlbnQqLykgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCAvKmVuY29kZWREYXRh
TGVuZ3RoKi8pIHsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWRE
YXRhTGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9y
JikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAppbmRleCA4OGRlZGZhNDVj
M2Y0YzQzYTM4MTUyODBkYTVhNDFlMjY5NzViNzFmLi5mNzAwMzU1ZDU2OGIwNDJhNmFkZjEwNzBk
YmI4MzgxOTI1MzY5NGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKQEAg
LTIxOSw3ICsyMTksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKENGRAogICAgICAgICAKICAgICAg
ICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKGhhbmRsZT0lcCkgKCVzKSIs
IGhhbmRsZSwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKIAotICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKGhhbmRs
ZSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpLCBvcmlnaW5hbExl
bmd0aCk7CisgICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoaGFuZGxl
LCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSwgb3JpZ2luYWxMZW5ndGgpOwogICAg
IH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJh
dG9yLm1tCmluZGV4IGUyYzM1ZWQzMTBiMzExMDY1MTE2YzhmYzg2YzJlNDAyOWE4MmM5YTQuLjAw
OGUyMjZmZjkxOTAwNGI0NTE0OGEyNDcyNjExNjE1MDk4OTYyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9u
c2VHZW5lcmF0b3IubW0KQEAgLTI0Myw3ICsyNDMsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFsCisgICAgdm9pZCBkYXRh
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKSBmaW5hbAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICAgICAgaWYgKCFtX2dlbmVyYXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgKaW5kZXgg
NDA0ODg1YWU2Mzc2ZmNlNjgwNDBkMmEwNWMwMGJlYzQ3ZmUxNmFhOC4uY2U0YzI1NDVjZGUwZjJm
NDZhYzMzOGY5NmM0OTA4OGViNDVkMDkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmgKQEAgLTUw
LDcgKzUwLDcgQEAgY2xhc3MgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVz
b3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
Y2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBjbGFzcyBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0
YVRhc2tDbGllbnQ7CiBlbnVtIGNsYXNzIFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2sgOiBib29s
OwpAQCAtMTU4LDcgKzE1OCw3IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5T
VVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2VudEJ5dGVzOih1bnNpZ25lZCBs
b25nIGxvbmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2VudDoodW5zaWduZWQgbG9uZyBsb25n
KXRvdGFsQnl0ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZXNwb25zZTooY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXI6KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+
JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtIChCT09MKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlOwotLSAodm9pZClyZXNvdXJj
ZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNl
aXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpZGF0YTsKKy0gKHZvaWQpcmVz
b3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ug
cmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJilkYXRh
OwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291
cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJilyZXNwb25zZSByZXF1ZXN0OihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJilyZXF1
ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpcmVzb3VyY2U6
KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgYWNjZXNz
Q29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JillcnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhFcnJvcjooY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggZTU5MjI3
ZTM4YWEwNjEyZDkyN2M4MjU5ZDAxNDdkYTRiZjZhNzY5Yi4uOGM4OWQ5Mzg2NTc5MzNhMWRhMjkw
MzE5OTE1ODRjNGRiMmZhYTlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtNjA4LDcg
KzYwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBv
dmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC02NTIsNyArNjUyLDcgQEAgYm9vbCBXZWJD
b3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZv
cm1NZWRpYVJlc291cmMKICAgICByZXR1cm4gW21fdGFzayByZXNvdXJjZTomcmVzb3VyY2Ugc2hv
dWxkQ2FjaGVSZXNwb25zZTpyZXNwb25zZV07CiB9CiAKLXZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lv
bkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNv
dXJjZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVz
b3VyY2UsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV90YXNrTG9jayB9OwogICAgIGlmICghbV90YXNrKQpAQCAtOTE1LDcgKzkx
NSw3IEBAIC0gKEJPT0wpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ug
c2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3QgUmVzCiAgICAgcmV0dXJuIHJlc3BvbnNlLmh0dHBI
ZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFJhbmdlKS5pc0VtcHR5KCk7CiB9CiAK
LS0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2
ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKWRhdGEKKy0gKHZvaWQpcmVzb3Vy
Y2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJilkYXRhCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9yZXNvdXJjZSk7CiAgICAgW3Nl
bGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7
IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKaW5kZXggYzM2ZTFmODg3
NjQzMDQ2MGNlNzUwYTNiOGM2NThjNzM0ZWNiMTUwOC4uMzQ5NDQ1OTI1NGFjOTNmYzE5Y2IxMjE1
MGE2MWJjMmJjZWQwMmQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEN1
cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwg
Q3VybFJlc3BvbnNlJiYgcgogfQogCiAKLXZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2
ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBD
dXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
RG93bmxvYWQuaAppbmRleCBhM2FhMGNmNWZjZDI5NTViYjdiMTZiMTFhMWE4MWNhNzRhZTYxYzhk
Li5jZGU0NDQ1Nzc1Zjc0NDIzMzA1MzBiNjViMTM1N2JhNmJmZDliYjgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCkBAIC03
Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgUmVmPEN1cmxSZXF1ZXN0PiBjcmVhdGVDdXJsUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVx
dWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZSB7
IH0KICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVz
cG9uc2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVx
dWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY3VybERpZFJl
Y2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3Jr
TG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihD
dXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggZDYzNWY3OWNkMWVjNjIxYWRmZWI2ZGNj
NDkzNmVlZWY1MGNmOWFkYy4uMDkwZDAzOWJhNDVkZTEwMjhlZGY3Njg0YzZkN2QyZjI5NmUzYTM0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxN
dWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIEN1cmxNdWx0
aXBhcnRIYW5kbGU6OkN1cmxNdWx0aXBhcnRIYW5kbGUoQ3VybE11bHRpcGFydEhhbmRsZUNsaWVu
dCYgY2xpZW50LCBjb25zCiAKIH0KIAotdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybE11bHRpcGFydEhh
bmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpFbmQpCiAgICAgICAgIHJldHVybjsgLy8g
VGhlIGhhbmRsZXIgaXMgY2xvc2VkIGRvd24gc28gaWdub3JlIGV2ZXJ5dGhpbmcuCkBAIC0xMzcs
NyArMTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRDb21wbGV0ZSgpCiAgICAg
aWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkgewogICAgICAgICAvLyBJdCBzZWVtcyB3ZSBhcmUg
c3RpbGwgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3NpbmcuCiAgICAgICAgIC8vIFB1c2gg
b3V0IHRoZSByZW1haW5pbmcgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFG
cm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fYnVm
ZmVyKSkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hh
cmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX2J1ZmZlcikpKTsKICAgICAgICAgbV9zdGF0ZSA9
IFN0YXRlOjpFbmQ7CiAgICAgfQogCkBAIC0yMzQsMTMgKzIzNCwxMyBAQCBib29sIEN1cmxNdWx0
aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250ZW50KCkKIAogICAgICAgICBpZiAoIWNoZWNrRm9yQm91
bmRhcnkoYm91bmRhcnlTdGFydCwgbGFzdFBhcnRpYWxNYXRjaCkgJiYgYm91bmRhcnlTdGFydCA9
PSBub3RGb3VuZCkgewogICAgICAgICAgICAgLy8gRGlkIG5vdCBmaW5kIHRoZSBib3VuZGFyeSBz
dGFydCwgYWxsIGRhdGEgdXAgdG8gdGhlIGxhc3RQYXJ0aWFsTWF0Y2ggaXMgb2suCi0gICAgICAg
ICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOworICAg
ICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxNYXRjaCkpOwogICAgICAgICAg
ICAgbV9idWZmZXIucmVtb3ZlKDAsIGxhc3RQYXJ0aWFsTWF0Y2gpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlcmUgd2FzIGEgYm91bmRhcnkg
c3RhcnQgKG9yIGVuZCB3ZSdsbCBjaGVjayB0aGF0IGxhdGVyKSwgcHVzaCBvdXQgcGFydCBvZiB0
aGUgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3Rh
cnQpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRhcnlTdGFydCkpOwogICAgICAg
ICBtX2J1ZmZlci5yZW1vdmUoMCwgYm91bmRhcnlTdGFydCArIG1fYm91bmRhcnkubGVuZ3RoKCkp
OwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZEJvdW5kYXJ5OwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFy
dEhhbmRsZS5oCmluZGV4IDVjMDhiY2M1ZWIzZTRiYmNjMDI5YjQ3Njc4NjhmNDNlMmY5NWMzNDEu
LjlhMWExYmJkMTkzOGExNGY2OWZjY2VlM2YwZjg5Yjk3YTRhMjE4NzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRI
YW5kbGUuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1
cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQ7CiBjbGFzcyBDdXJsUmVzcG9uc2U7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsTXVs
dGlwYXJ0SGFuZGxlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ0LDcgKzQ0
LDcgQEAgcHVibGljOgogICAgIEN1cmxNdWx0aXBhcnRIYW5kbGUoQ3VybE11bHRpcGFydEhhbmRs
ZUNsaWVudCYsIGNvbnN0IFN0cmluZyYpOwogICAgIH5DdXJsTXVsdGlwYXJ0SGFuZGxlKCkgeyB9
CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZv
aWQgZGlkQ29tcGxldGUoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVu
dC5oCmluZGV4IGZkMTNmZDM4MTMxNDNjYjI2NTliOGZkMWRiMjQ0NDc2NWU5OGE1ODAuLmM4MTM4
ODZhOGQ1YzVmYTZjMTJkMTQxMzMxOTEwMWFmMjUwMmEyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRI
YW5kbGVDbGllbnQuaApAQCAtMjgsMTIgKzI4LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEN1cmxSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQgewogcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25z
dCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFG
cm9tTXVsdGlwYXJ0KFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB+Q3VybE11bHRpcGFydEhhbmRsZUNsaWVudCgpIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdC5jcHAKaW5kZXggYWNkODhlMWIwMjliOWIxZTdmMTRiN2QxNDAzMjkyNmI5MzE3NWEwZi4u
ZDgyZGQzYzEwYWM2NDcxMzU5OTFmZDdhZTY2OTdlOWQ4ZTMxM2U4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC0z
OTYsNyArMzk2LDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyKFN0cmlu
ZyYmIGhlYWRlcikKIAogLy8gY2FsbGVkIHdpdGggZGF0YSBhZnRlciBhbGwgaGVhZGVycyBoYXZl
IGJlZW4gcHJvY2Vzc2VkIHZpYSBoZWFkZXJDYWxsYmFjawogCi1zaXplX3QgQ3VybFJlcXVlc3Q6
OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorc2l6ZV90IEN1cmxS
ZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJu
IDA7CkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZUhlYWRl
ckZyb21NdWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhlYWRlcnMpCiAgICAgaW52b2tl
RGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBBY3Rpb246Ok5vbmUpOwogfQogCi12b2lkIEN1
cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChpc0NvbXBs
ZXRlZE9yQ2FuY2VsbGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTc3Nyw3ICs3NzcsNyBAQCBj
b25zdCBTdHJpbmcmIEN1cmxSZXF1ZXN0OjpnZXREb3dubG9hZGVkRmlsZVBhdGgoKQogICAgIHJl
dHVybiBtX2Rvd25sb2FkRmlsZVBhdGg7CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0
YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9p
ZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHsKICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fZG93bmxvYWRNdXRleCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAppbmRleCA2YmQ4YTZiZmJhMzc1MmNlZGRkYmM1
MDA5ZWFlODNjNGYwZWVkNjQxLi4zYzdjZGQ4ODNlYjYyYmZlOTJjZjA0NDVlZDI5YmQyNmVjZTNl
OTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBD
dXJsUmVxdWVzdENsaWVudDsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291
cmNlRXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU3luY2hyb25vdXNMb2FkZXJNZXNzYWdlUXVldWU7CiAKIGNsYXNzIEN1cmxS
ZXF1ZXN0IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEN1cmxSZXF1ZXN0PiwgcHVibGlj
IEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50LCBwdWJsaWMgQ3VybE11bHRpcGFydEhhbmRsZUNs
aWVudCB7CkBAIC0xMjIsOSArMTIyLDkgQEAgcHJpdmF0ZToKICAgICBDVVJMKiBzZXR1cFRyYW5z
ZmVyKCkgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IHdpbGxTZW5kRGF0YShjaGFyKiwgc2l6ZV90LCBz
aXplX3QpOwogICAgIHNpemVfdCBkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmKTsKLSAgICBzaXpl
X3QgZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc2l6ZV90IGRpZFJl
Y2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4m
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ29tcGxldGVU
cmFuc2ZlcihDVVJMY29kZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWxUcmFuc2Zlcigp
IG92ZXJyaWRlOwogICAgIHZvaWQgZmluYWxpemVUcmFuc2ZlcigpOwpAQCAtMTUzLDcgKzE1Myw3
IEBAIHByaXZhdGU6CiAgICAgTmV0d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtMb2FkTWV0cmljcygp
OwogCiAgICAgLy8gRG93bmxvYWQKLSAgICB2b2lkIHdyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZF
bmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgd3JpdGVEYXRhVG9Eb3dubG9h
ZEZpbGVJZkVuYWJsZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQg
Y2xvc2VEb3dubG9hZEZpbGUoKTsKICAgICB2b2lkIGNsZWFudXBEb3dubG9hZEZpbGUoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3RDbGllbnQuaAppbmRleCAwOGM4NmM3ZDQ2ODRiYTZmNzhkNjE2YjY4ZDA2OTA0YzM3YTk2
Njc3Li4zNDc5ODMyZjU3NmQ0MTI4YWZhNTFjODE0MjRjY2ZkNzQxZGY2YWU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RD
bGllbnQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBDdXJsUmVxdWVzdDsKIGNsYXNzIEN1cmxS
ZXNwb25zZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBDdXJsUmVxdWVzdENsaWVudCB7CiBwdWJsaWM6CkBAIC00Myw3ICs0Myw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNp
Z25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1Rv
QmVTZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3Vy
bFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlk
UmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkQ29t
cGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3Im
JiwgQ2VydGlmaWNhdGVJbmZvJiYpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlLmNwcAppbmRleCBlZDA1ZGU3YWVlOTMyMWU5ZmQwMzgxZmM3M2RjZTI3OTY3ZGZjZDgx
Li4zMDVkNGU1YzlmYzI3MDc3NTc4N2IwZjlhOTE5NzljMDg4ODlhOGE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIEN1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0
JiByZXF1ZXN0LCBDdQogICAgIH0pOwogfQogCi12b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQordm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2Vp
dmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuaAppbmRleCA2ZDU1ODY0NDUyZmQ0NmVlNzgwMGU5MzEyM2IxMjhiZGM2NGNl
NDg3Li5kYWYwYTU5YTRlNTg2ZDcxMTRhYmI0ZTVlZjljNTRmNmE4YmVmYzcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZyBi
eXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIGZpbmFsOwog
ICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25z
ZSYmKSBmaW5hbDsKLSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0Jiwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZl
cihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAg
ICB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYm
KSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVz
b3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXJDbGllbnQuaAppbmRleCBiYzRkYWFmYmYyMWExNWMwZTZkZDFhY2Q0NjIyYWZhNTZiN2I4
ZDVkLi4xZjRhMTkzMTMzMTJjNWRkNmE0OGFkNTMzOWRmZDJjM2I1ZGVjMjU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5
UHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0zMSwxMiArMzEsMTIgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50IDogcHVibGljIFJlZkNvdW50
ZWQ8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkxl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWwoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0
ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJj
ZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQppbmRleCAzNWQ1MjYxNTE3ZWY0ZjA0
MzM2MWQ1ZDEwMGZkNzhkNmM4ZDA5ZmI3Li4zMTVlMDY1MTUzMGRjZGIwMjgwMTY1NGI3NTdkODE0
NzNjMjBmZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCkBAIC0zMDAsNyArMzAwLDcgQEAgLSAodm9pZClj
b25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhOihO
U0RhdGEgKilkYXRhIGwKICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTc5MwogICAgICAgICAvLyAtMSBtZWFucyB3ZSBkbyBub3QgcHJv
dmlkZSBhbnkgZGF0YSBhYm91dCB0cmFuc2ZlciBzaXplIHRvIGluc3BlY3RvciBzbyBpdCB3b3Vs
ZCB1c2UKICAgICAgICAgLy8gQ29udGVudC1MZW5ndGggaGVhZGVycyBvciBjb250ZW50IHNpemUg
dG8gc2hvdyB0cmFuc2ZlciBzaXplLgotICAgICAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFJl
Y2VpdmVCdWZmZXIobV9oYW5kbGUsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmdldCgpKSwgLTEpOworICAgICAgICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZm
ZXIobV9oYW5kbGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpLCAtMSk7CiAgICAg
fTsKIAogICAgIFtzZWxmIGNhbGxGdW5jdGlvbk9uTWFpblRocmVhZDpXVEZNb3ZlKHdvcmspXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBm
NDk4NmIwMDEwOGIxNzhmNjQ3ZTc2ZTczNGNhMmMzZjczYzA3NGJlLi44NWY5NmQ4NWQyYjM3MmNm
YzIxNzFhODM0MTFkNTI4NjkyMDczY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0zNTYsNyArMzU2LDcgQEAgU3RyaW5nIFBhc3RlYm9h
cmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQogCiBzdHJ1Y3Qg
UGFzdGVib2FyZEZpbGVDb3VudGVyIGZpbmFsIDogUGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAg
IHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgKytjb3VudDsgfQotICAg
IHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJikgZmluYWwgeyArK2NvdW50OyB9CisgICAgdm9pZCByZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsIHsgKytjb3VudDsgfQogCiAgICAgdW5zaWduZWQgY291bnQgeyAwIH07CiB9OwpAQCAtOTY2
LDcgKzk2Niw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0
b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gbWVtT2JqOwog
fQogCi1zdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1
ZmZlciogZGF0YSkKK3N0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBIR0xPQkFMIG1lbU9iaiA9IEds
b2JhbEFsbG9jKEdQVFIsIGRhdGEtPnNpemUoKSk7CiAgICAgaWYgKCFtZW1PYmopIApAQCAtOTg2
LDcgKzk4Niw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQo
U2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVybiBtZW1PYmo7CiB9CiAKLXN0YXRpYyBIR0xP
QkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxl
TmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRhKQorc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERy
b3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmIChmaWxlTmFtZS5pc0VtcHR5KCkgfHwgIWRhdGEp
CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTA2Myw3ICsxMDYzLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJs
KQogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgIWNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVy
KGVsZW1lbnQucmVuZGVyZXIoKSkgfHwgIWNhY2hlZEltYWdlLT5pc0xvYWRlZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0gY2FjaGVkSW1hZ2Ut
PmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgpOworICAgIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVu
ZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIg
fHwgIWltYWdlQnVmZmVyLT5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA2NTI3MjUwZTVhYmNkZGJhMDAwMmIw
ZmJjZTY1NjVkMmY1ODY1ZDA2Li44NGZhMjljZTFmMzAwZmUyOTBiMDQxNDY0OGYwZjcyOTBhN2Ni
ZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtNjMs
NyArNjMsNyBAQCBib29sIE1vY2tDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSkKICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShrZXlT
eXN0ZW0sICJvcmcud2Via2l0Lm1vY2siKTsKIH0KIAotdm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRk
S2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEJ1
ZmZlcj4+JiYga2V5cykKK3ZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRo
SUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4m
JiBrZXlzKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXNzaW9ucy5hZGQoaWQsIFdURk1v
dmUoa2V5cykpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKQEAgLTc0LDcgKzc0LDcg
QEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJp
bmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEIKICAgICAgICAgdmFsdWUuYXBwZW5kKFdURk1vdmUo
a2V5KSk7CiB9CiAKLVZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJl
bW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQorVmVjdG9yPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vz
c2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQogewogICAgIGF1dG8gaXQgPSBtX3Nlc3Npb25z
LmZpbmQoaWQpOwogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25zLmVuZCgpKQpAQCAtODMsNyArODMs
NyBAQCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5OjpyZW1vdmVLZXlz
RnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaQogICAgIHJldHVybiBXVEZNb3ZlKGl0LT52YWx1
ZSk7CiB9CiAKLWNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4qIE1vY2tDRE1GYWN0b3J5
OjprZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdAorY29uc3QgVmVj
dG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4qIE1vY2tDRE1GYWN0b3J5OjprZXlzRm9y
U2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdAogewogICAgIGF1dG8gaXQgPSBt
X3Nlc3Npb25zLmZpbmQoaWQpOwogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25zLmVuZCgpKQpAQCAt
MjAyLDcgKzIwMiw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fZmFjdG9yeSAmJiBtX2ZhY3RvcnktPnN1cHBvcnRzU2Vzc2lvbnMoKTsKIH0K
IAotYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgTW9ja0NE
TTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewogICAgIGlmICghc3Vw
cG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICBhdXRvIGJ1ZmZl
ciA9IHJlc3BvbnNlLm1ha2VDb250aWd1b3VzKCk7CiAgICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxs
QVNDSUkoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCkBAIC0yNzAsNyArMjcwLDcg
QEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25z
dCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXQKICAgICBjYWxsYmFjayhpbml0aWFsaXplKCkpOwog
fQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lk
IE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewog
ICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNlcnRpZmljYXRlLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkpOwogCkBAIC0yOTgsNyArMjk4
LDcgQEAgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbihXZWFr
UHRyPE1vY2tDRE1JbnN0YW5jZT4mJiBpbnN0YW4KIHsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBM
aWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExp
Y2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5
ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFuY2UtPmZhY3RvcnkoKSA6IG51bGxwdHI7CiAgICAgaWYg
KCFmYWN0b3J5KSB7CkBAIC0zMjQsNyArMzI0LDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNz
aW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVMK
ICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShsaWNlbnNlLmRhdGEoKSwgbGljZW5z
ZS5sZW5ndGgoKSksIHNlc3Npb25JRCwgZmFsc2UsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsK
IH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25z
ZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5j
ZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VU
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0
ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBt
X2luc3RhbmNlID8gbV9pbnN0YW5jZS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZh
Y3RvcnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rv
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAppbmRleCBmNWNk
YTUwNWNmMmEzM2MxMDVmMDI1Yzk3YzkzNTBhOTY4Njk4ZTFlLi5kOTZjMTU2ZWU0ZDI3OTFiOGIw
OTk4ZGFmOTQwZWM3NTM3ODA3YmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDRE1GYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFj
dG9yeS5oCkBAIC03Nyw5ICs3Nyw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzU2Vzc2lvbldp
dGhJRChjb25zdCBTdHJpbmcmIGlkKSB7IHJldHVybiBtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKTsg
fQogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSB7IG1fc2Vz
c2lvbnMucmVtb3ZlKGlkKTsgfQotICAgIHZvaWQgYWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25z
dCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYpOwotICAgIGNvbnN0IFZl
Y3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4qIGtleXNGb3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmlu
ZyYgaWQpIGNvbnN0OwotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gcmVtb3ZlS2V5c0Zy
b21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpOworICAgIHZvaWQgYWRkS2V5c1RvU2Vz
c2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiYmKTsKKyAgICBjb25zdCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
Pioga2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3Q7CisgICAgVmVj
dG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gcmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0
aElEKGNvbnN0IFN0cmluZyYgaWQpOwogCiBwcml2YXRlOgogICAgIE1vY2tDRE1GYWN0b3J5KCk7
CkBAIC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhbkNyZWF0ZUluc3RhbmNl
cyB7IHRydWUgfTsKICAgICBib29sIG1fc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMgeyB0cnVl
IH07CiAgICAgYm9vbCBtX3N1cHBvcnRzU2Vzc2lvbnMgeyB0cnVlIH07Ci0gICAgSGFzaE1hcDxT
dHJpbmcsIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IG1fc2Vzc2lvbnM7CisgICAgSGFzaE1h
cDxTdHJpbmcsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBtX3Nlc3Npb25z
OwogfTsKIAogY2xhc3MgTW9ja0NETSA6IHB1YmxpYyBDRE1Qcml2YXRlIHsKQEAgLTEyMSw4ICsx
MjEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKICAg
ICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9v
bCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9t
U3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKICAg
ICBXZWFrUHRyPE1vY2tDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CkBAIC0xMzksNyArMTM5LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25U
eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpNb2NrOyB9CiAg
ICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3Rl
bnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwor
ICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBj
b25zdCBmaW5hbDsKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9u
KCkgZmluYWw7CkBAIC0xNTQsOCArMTU0LDggQEAgcHVibGljOgogICAgIE1vY2tDRE1JbnN0YW5j
ZVNlc3Npb24oV2Vha1B0cjxNb2NrQ0RNSW5zdGFuY2U+JiYpOwogCiBwcml2YXRlOgotICAgIHZv
aWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZp
bmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAg
IHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VD
YWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwg
TGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsK
ICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFj
ayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExp
Y2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAppbmRleCBmYzEyN2I3YjY3YmVh
NzM0NDYzY2QyZDViMDc1NmI1OWJlYmE1OGFlLi4wNTlmM2EzODZiNmNmNWZhNzliM2MxODk3MDE1
MzEzZjdjZGI0ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OmZpbmlz
aGVkQWRkaW5nRGF0YSgpCiAgICAgbWF5YmVEZXRlcm1pbmVTdGF0dXMoRGVjaXNpb25Qb2ludDo6
QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBNb2NrQ29u
dGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBNb2NrQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKIHsKICAg
ICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShtX3JlcGxhY2VtZW50RGF0YS5kYXRhKCksIG1fcmVwbGFjZW1lbnREYXRhLnNpemUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKaW5kZXggNDExYTMwMDk0
N2I1MzllMjZhYTZjNjRhMDA5MzI5MmU5ZmZiZTZiOS4uNjM1YWM4NGJlNzkzODQ3YWE1NzIxM2Qw
MWZmYzFlNzRmNzZiNzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRG
aWx0ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2Vp
dmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGFkZERhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5p
c2hlZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNl
bWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKQogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxl
cigpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1NjcmlwdEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZm
ZXIuaAppbmRleCAzN2YxYTQ4N2Y4YzUyYjQ0ZWEyNDMwY2NjZDFmYTAyNWVlOTFhYWMzLi5mZDJj
MWFlMmY2M2I2MGQ3NGMzMGQyNDJhOTg5YTBiZmQ5MWRlNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2NyaXB0QnVmZmVyLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgU2NyaXB0QnVmZmVyIHsK
IHB1YmxpYzoKICAgICBTY3JpcHRCdWZmZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICBTY3JpcHRCdWZm
ZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgU2NyaXB0QnVmZmVyKFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihX
VEZNb3ZlKGJ1ZmZlcikpCiAgICAgewogICAgIH0KQEAgLTQ4LDkgKzQ4LDkgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsK
IAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciog
YnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KKyAgICBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZl
ci5nZXQoKS5nZXQoKTsgfQogCi0gICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0
IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1f
YnVmZmVyLmNvcHkoKSkgOiBudWxscHRyKTsgfQorICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENv
cHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZmZXIgPyBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4obV9idWZmZXIuY29weSgpKSA6IG51bGxwdHIpOyB9CiAgICAgZXhw
bGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9idWZmZXI7IH0KICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5pc0VtcHR5KCk7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4
IGNmNmQ3NjViYzg5NGNmNGJkZjdiZDVhNmU1YWYxMjc4YjE2ZmRlMGEuLjgyYTJhOGM0YjE4YWNj
ZTc5OGIyN2MyYzhkMDA5NTg5ZmY3NWNiYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBXb3Jr
ZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29ya2VyR2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNj
b3BlKQogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNv
bnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYm
ICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0gICAgICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YTsKKyAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CiAgICAgICAgIGlmIChtX2RhdGEpCiAgICAgICAgICAg
ICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS50YWtlQXNDb250aWd1b3VzKCk7CiAgICAgICAgIGNv
bnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0RhdGEpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNo
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJGZXRjaC5jcHAKaW5kZXggMGJjZDk3NmVkYTlkNGE3ODEwOWU2MjYzZDgxMDhjMzc1MDc1OGI3
Ny4uOGE5MTM4ZDIzYjBkNWRlYzUzZDI5OTBkZWQ1ZGI3NzYzNTRlNTI0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNo
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyRmV0Y2guY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1Jl
c3BvbnNlKFJlZjxDbGllbnQ+JiYgY2xpZW50LCBFeHBlY3RlZDxSZWY8RmV0Y2hSZXNwb25zZT4s
IHMKICAgICBhdXRvIGJvZHkgPSByZXNwb25zZS0+Y29uc3VtZUJvZHkoKTsKICAgICBXVEY6OnN3
aXRjaE9uKGJvZHksIFsmXSAoUmVmPEZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgY2xp
ZW50LT5kaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goV1RGTW92ZShmb3JtRGF0YSkpOwotICAg
IH0sIFsmXSAoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBb
Jl0gKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNl
aXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBjbGllbnQtPmRpZEZpbmlzaCgpOwog
ICAgIH0sIFsmXSAoc3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCmluZGV4
IGRlOWUyMzBmOWJkYjk5YTVlODM4N2RmZDk2MDNhZWM1Y2FhM2YwMGIuLmZiYTM2MzIyYjI5YTZk
NWI3OTdiMzllZGMzYzNkMTcxMjRiM2I1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCkBAIC00
Miw3ICs0Miw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7CiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CiBjbGFzcyBTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogCiBuYW1lc3BhY2UgU2VydmljZVdvcmtlckZldGNoIHsKIGNsYXNzIENsaWVudCA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDbGllbnQsIFdURjo6RGVzdHJ1Y3Rpb25UaHJl
YWQ6Ok1haW4+IHsKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4m
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGFB
bmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoKCkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDAzYTcyMTFmY2ViYjFmOGU0NjI4ZDU5ZWE0NWJj
Y2I3ODgwMmZiNDEuLjlhOGZiMzVjYTUzNjEwNWJiNmQ2ZmM0NmVlMTIyNDU5MzNmNzBiZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRT
dG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBTY3JpcHRCdWZmZXIgU1dTY3Jp
cHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBy
ZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGRpc2FibGUgZmlsZSBt
YXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQgaGF2aW5nIHRvbyBtYW55IGZpbGUgZGVzY3Jp
cHRvcnMgb3Blbj8KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxl
U2l6ZSkgPyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDog
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBpbmc6Ok5vKTsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6
OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBTaGFyZWRCdWZmZXI6
Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5n
OjpObyk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xU
UHJvY2Vzc29yTGlieHNsdC5jcHAKaW5kZXggYTMwZjUxNDFhOGUxNGYyNzhmNWI5MTMxNzMzZDI2
MTQ2MjgxMmNiNi4uZGY4YWJlNDI2ZTA2NzE3MWFmZmY5MGUwMzMzODUwNTlmMzMxMDM2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0xMDcsNyAr
MTA3LDcgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVy
aSwKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25z
ZSByZXNwb25zZTsKIAotICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0
YTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgICAgICBib29sIHJl
cXVlc3RBbGxvd2VkID0gZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmZyYW1lKCkgJiYgZ2xv
YmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2Fu
UmVxdWVzdCh1cmwpOwogICAgICAgICBpZiAocmVxdWVzdEFsbG93ZWQpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApp
bmRleCBkYjI2YmIzOWRkNWFmOTlmMzFlNjYyYzM0Y2VkM2RiZjk2NzdmNWFiLi5hOGMzZTE4ZTQ3
YWVjYWQwYTAyMmEwODRjNDlhMjFmNmM3MTRjMzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC00NjQsNyAr
NDY0LDcgQEAgc3RhdGljIHZvaWQqIG9wZW5GdW5jKGNvbnN0IGNoYXIqIHVyaSkKICAgICAgICAg
cmV0dXJuICZnbG9iYWxEZXNjcmlwdG9yOwogCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZTsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgewogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9y
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlUHJveHkuY3BwCmluZGV4IDU3MzA2N2UzZGQwNTBmZWI3YzU3OWQwMDEwMmVlOWY2
MDQ1YjUzMTMuLjMxYzJkNzZmMmVlMWI5ZDI0OWIwMDFiN2VmZjg5MmVjMmE3NDU2Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VQcm94eS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6
flJlbW90ZUNETUluc3RhbmNlUHJveHkoKQogICAgIG1faW5zdGFuY2UtPmNsZWFyQ2xpZW50KCk7
CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6dW5yZXF1ZXN0ZWRJbml0aWFsaXph
dGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGEpCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6OnVucmVxdWVzdGVkSW5pdGlh
bGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBpZiAoIW1fY2RtKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlUHJveHkuaAppbmRleCA4ZTczZDNkOWE2NGI5OGJmYzAwOTM2Y2Q0N2M0YzI1YTky
NzlmMmM4Li4wMmM1Y2QzN2FlNTQ4MDJmNmQwYzhkY2NjYjBiYTgwY2YzMzg4YzMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVByb3h5LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVDRE1JbnN0YW5j
ZVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5j
ZT4mJiwgVW5pcXVlUmVmPFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4mJiwgUmVtb3Rl
Q0RNSW5zdGFuY2VJZGVudGlmaWVyKTsKIAogICAgIC8vIENETUluc3RhbmNlQ2xpZW50Ci0gICAg
dm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYs
IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgdW5yZXF1ZXN0
ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAppbmRleCBl
NTc2NmMyMzM0Y2ZkMzg5MzEwY2Q0YjIxNzIzY2FiYTM3NDJmYzdjLi5kZTgyNzNiOWNmNTAwYTRk
NjZhYTE0NGVkZTAyMDFlZWYxZWQ4NjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5j
cHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6
cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgQXRvbVN0cmluZwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgbV9zZXNzaW9uLT5yZXF1ZXN0TGljZW5zZSh0eXBlLCBpbml0RGF0
YVR5cGUsIGluaXREYXRhLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0g
V1RGTW92ZShjb21wbGV0aW9uKV0gKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Np
b24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCku
cmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNj
ZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbihXVEZNb3Zl
KG1lc3NhZ2UpLCBzZXNzaW9uSWQsIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIHN1Y2NlZWRlZCA9
PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2NlZWRlZCk7CiAgICAgfSk7CiB9CkBAIC0xMTUsNyAr
MTE1LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6Y2xvc2VTZXNzaW9u
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVMKIAogdm9pZCBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IExpY2Vuc2VUeXBlIHR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJiBjb21wbGV0aW9u
KQogewotICAgIG1fc2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlLCBb
Y29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChDRE1JbnN0YW5jZVNlc3Npb246Oktl
eVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZm
ZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1Zh
bHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0
YShzZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENE
TUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIHN0ZDo6b3B0
aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEs
IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBleHBpcmVkU2Vzc2lv
bkRhdGFSZWZlcmVuY2U7CiAgICAgICAgIGlmIChleHBpcmVkU2Vzc2lvbnNEYXRhKQogICAgICAg
ICAgICAgZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlID0gSVBDOjpTaGFyZWRCdWZmZXJDb3B5
KFdURk1vdmUoKmV4cGlyZWRTZXNzaW9uc0RhdGEpKTsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lk
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0
dXNWZWN0b3ImJiBrZXlTdGF0dQogICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlVwZGF0ZUtl
eVN0YXR1c2VzKFdURk1vdmUoa2V5U3RhdHVzZXMpKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9p
ZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5
cGUgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBpZiAoIW1fY2RtKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCmluZGV4IDhhNjFmOWQ1ZmFi
Yzg0ODZhN2EwZTg2MGY0YzYzMTJjMGI0NDU1MTQuLmZlNzMwOTcxMzFlMGJiMjBhNTAwMWUxNTAx
NjAyZDY1MTg2YjMwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCkBAIC03Nyw3ICs3
Nyw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQKICAgICB2
b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKSBmaW5hbDsKLSAgICB2b2lk
IHNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOworICAgIHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6
Q0RNTWVzc2FnZVR5cGUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1l
c3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBm
aW5hbDsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBmaW5hbCB7IHJldHVybiBt
X2Rpc3BsYXlJRDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETVByb3h5LmNwcAppbmRleCA5YWIzNTc1ZjRjM2I1NTk1NTViOWI4N2IyMzM3MWIxYjFh
NjZkYzE3Li5mN2NiNmE2M2ViOTMzYWJkNGQ0NTNhMjJhYjI5NGYxMzAzMjMyYjA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKQEAg
LTYzLDEyICs2MywxMiBAQCBSZW1vdGVDRE1Qcm94eTo6UmVtb3RlQ0RNUHJveHkoV2Vha1B0cjxS
ZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgc3RkOjp1bgogCiBSZW1vdGVDRE1Qcm94
eTo6flJlbW90ZUNETVByb3h5KCkgPSBkZWZhdWx0OwogCi1ib29sIFJlbW90ZUNETVByb3h5Ojpz
dXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKK2Jvb2wgUmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRv
bVN0cmluZyYgdHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAg
ICByZXR1cm4gbV9wcml2YXRlLT5zdXBwb3J0c0luaXREYXRhKHR5cGUsIGRhdGEpOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZShjb25z
dCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IFJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIHJlc3BvbnNlKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPnNhbml0aXplUmVzcG9u
c2UocmVzcG9uc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNUHJveHkuaAppbmRleCA2OTI0ZTc0ZTNmNTAxMWJlMjE1YmU0YmQ5NmIyMzQ4MjY0NzBm
NDIzLi4zYjY2Yzc3NTc4NzA2OWU5NzZlZTA2NGY5NmZmMDdjMGY3MTJhOTBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaApAQCAtMzYsNyAr
MzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGVu
dW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgOiB1aW50OF90OwogZW51bSBjbGFzcyBDRE1TZXNzaW9u
VHlwZSA6IHVpbnQ4X3Q7CiBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKQEAgLTU4
LDggKzU4LDggQEAgcHVibGljOgogCiAgICAgUmVtb3RlQ0RNRmFjdG9yeVByb3h5KiBmYWN0b3J5
KCkgY29uc3QgeyByZXR1cm4gbV9mYWN0b3J5LmdldCgpOyB9CiAKLSAgICBib29sIHN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
OwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiByZXNwb25zZSk7CisgICAgYm9vbCBzdXBwb3J0c0lu
aXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJik7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNh
bml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVz
cG9uc2UpOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCmluZGV4IGUyY2QwNWQ3
Y2M3NGYyMGVjNjlmYWRmZTNlZTA4NTc1OTJhZDg3OWIuLmRlOGY2ZGY1NWE2ZTFmYThiZTk2NmY5
NDFlMDdmZTJmNWM1MDIxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKaW5kZXggZjE0YzYyN2Y2NTkzZTFhODc4ZDBmNDU5
OTJiM2M0MWIyMjJjN2YwMC4uMTU0NmJkZmRmZGNmMDkxMDg3ODk0NGYzNDA3OTY3YTdhYjM4YmY4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETVNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgTGVnYWN5Q0RNOwogY2xhc3MgTGVnYWN5Q0RNU2Vzc2lvbjsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5h
bWVzcGFjZSBJUEMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCmluZGV4IGM0NWU1MjU1ZDY3YjUyYzdhZTEwNDQ5OTg4
Y2UwMTkwYzdmZmI1MzguLjYxN2Y0NzY4OTU2NDJkZWMyMzI1NGI1NDBlZTgxOTExYWM0YTJkZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZS5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNl
OjpkYXRhU2VudCh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2UK
ICAgICAgICAgbV9jbGllbnQtPmRhdGFTZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNU
b0JlU2VudCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJl
Y2VpdmVkKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBXVEZNb3ZlKGRh
dGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZS5oCmluZGV4IGQxM2QyNWY2NWYwMjI0YTZjNzY3ZjY5YTRkNDE5Y2QwNTNiYjc5
NWQuLjViN2E3ZTJhNzQyNDQzMmQ4NmNiMjhhMWJlNzE3MThhMTY3Mzc1ZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaApA
QCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOZXR3b3JrTG9h
ZE1ldHJpY3M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBv
bGljeUNoZWNrKT4mJik7CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZvaWQg
ZGF0YVNlbnQodWludDY0X3QsIHVpbnQ2NF90KTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9s
Q2hlY2tGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9h
ZEZhaWxlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmlu
aXNoZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApp
bmRleCBlYmRlNzUzMGVjODZmZjZjNDFiZWNkNGU1ZWM0MjhhM2M4YWY4MGY3Li5lODNmOTE0M2Qy
MGE3MmUyYmU0ZmZjYmZlZDEzYjBiYjRkZDMxZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKQEAgLTEwNyw3
ICsxMDcsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxl
KFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1vdGVNZWRpYVJlY29y
ZGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2Um
JiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dyaXRlci0+ZmV0Y2hE
YXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRv
JiYgZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0g
ZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4oKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBkYXRhID8gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+KCk7CiAgICAgICAg
IGF1dG8qIHBvaW50ZXIgPSBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IG51bGxwdHI7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRhdGEg
PyBkYXRhLT5zaXplKCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgK
aW5kZXggNTJjYzVkYTEyMWEyZmI1OWQ4Y2YwNTkzYjY4NTA5ZmQ2NTVjMGNkYy4uNzFmZDAyMjI5
YmJiMWM1NzMyNmZkZmNmZTI2YzExZjc2MWFiY2Y3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKQEAgLTY4
LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRl
bnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVk
ZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmco
Y29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGUgeyB9OwogICAgIHZv
aWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggM2YzOWViMzJmMWFhODA3Njc4NWRhNzll
ZTExZGFkOGYwYzMyNmI3OS4uZDg5MjBlOTg3NjRmZDliNjRiOWNkZGM2MGExZDg0ZDYxOWIyZDQw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1By
ZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2Up
OwogfQogCi12b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikKIHsKICAgICBDT1JTX0NIRUNLRVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuaAppbmRleCBiYmIxNDYyYTMxNjFlMmZjZTllYTU3ODQ0YjE5
YjkzZTYxOWM4MWIwLi5lMTFiZjU2MzE5MDdhZTQ3MzM2ZWY4NWE1ZDIyZTg4MzU3NDY1MWIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9u
SGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxl
dGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0
X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmlu
YWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAppbmRleCBkNjAxOGY2MTM4M2FlM2E1MWU5ZDQ3
MjJjZjZhNjBlMmQ4Yjg3YTdkLi5lMDQ5ZTViMTJkZGU1ZmU1MWI0Njk1NTI4OWE3YTdmNjk5ODJh
ZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
LmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlv
bkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2Fj
eVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxC
eXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCB3YXNCbG9ja2VkKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmNwcAppbmRleCA2ZGYxNDEwNzM2YWJhMmYyZDlhMTk2MTU2YzBiMWJh
ZmE4ZTcwNDQ3Li40NjkwZmRjNWQ1YWQ3Zjg5MmMxZGU2OGQ1Yjg1NjQwZGVkMzgyOGY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcApAQCAtMjYzLDcg
KzI2Myw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0CiAgICAgbV9jbGllbnQuZ2V0KCkuZGlk
UmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBiZSB0aGUgZW5jb2RlZCBkYXRhIGxlbmd0aCwgbm90IHRoZSBkZWNvZGVkIGRhdGEgbGVu
Z3RoLgogICAgIGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCmluZGV4IGI5MmY5YzYxZTEzNTkwYzQxY2JjMWQ4YjM4
MjhkM2FjY2I3NTFiMzguLmI0YTk0NTIzM2I5NWUyYmE1YWFlYzBlMmY3ZWNjMDNhMzk1ZWMyMWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKQEAgLTgxLDcg
KzgxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJl
ZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hh
bGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdh
Y3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExl
Z2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
IGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRv
dGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50
LmgKaW5kZXggMGE1ZjY2YmQ5NjdlYzlmZGY2NjRlNTJlNWFmMzk0ZTQ4ZWNlMWY3Yi4uMzQ4Y2Zm
YjllOGUyNWVlODNiYmIzOWEwMmNkM2NmNmQyODU0ZDM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaApAQCAtMzIsNyArMzIsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFz
cyBOZXR3b3JrTG9hZE1ldHJpY3M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogZW51bSBjbGFzcyBQb2xpY3lBY3Rpb24gOiB1aW50OF90OwogfQog
CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEo
dW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0
ZXNUb0JlU2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1
ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJl
c3BvbnNlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKCkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDNlOWNiN2RmNTUxZDc2ZmQ1ZjIwOTkwNmE2
ZTFjNzhmMmQ1NmI2OTEuLjVkYzgyNzNkOGZkZjc1ZTQ1NWU3NDEyNjY3NzEwZTE3NzBlNjczNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RydWN0IE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSB7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKIH07
CiAKLXN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSYgZGF0YSwgY29uc3QgU2hhcmVkQnVmZmVy
KiBidWZmZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3N0YXRpYyB2b2lk
IHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3lu
Y2hyb25vdXNMb2FkRGF0YSYgZGF0YSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVm
ZmVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgQVNTRVJUKGRh
dGEuZGVsYXllZFJlcGx5KTsKICAgICBBU1NFUlQoIWRhdGEucmVzcG9uc2UuaXNOdWxsKCkgfHwg
IWRhdGEuZXJyb3IuaXNOdWxsKCkpOwpAQCAtODYzLDcgKzg2Myw3IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzZW5kRGlkUmVjZWl2ZVJlc3BvbnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dz
aW5nQ29udGV4CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpCiAgICAgICAg
IExPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZUJ1ZmZlcjogU3RhcnRlZCByZWNlaXZpbmcg
ZGF0YSAocmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aD0lZCkiLCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKTsKQEAgLTEyNzMsNyArMTI3Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpidWZmZXJpbmdUaW1lckZpcmVkKCkKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVu
Z3RoID0gMDsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIoU2hh
cmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaXNTeW5jaHJvbm91
cygpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgKaW5kZXggYzQyMzQ2NTFiYTkyOGI5NWQ4YzZmNTdiZTI1YzVmMjExODk4
OWYzYi4uY2YxMGNmMGU3MWExYmM2NTU0MGU4N2Q2YmE0YzFiOWM4NTZjMGExZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5o
CkBAIC0xMTUsNyArMTE1LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2Vy
Rm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsb3dlZFRvQXNrVXNl
ckZvckNyZWRlbnRpYWxzOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRp
cmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSgpIGZpbmFsOwpAQCAtMTkzLDcgKzE5Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN0
YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwogICAgIHZvaWQgYnVmZmVyaW5nVGltZXJGaXJl
ZCgpOwotICAgIHZvaWQgc2VuZEJ1ZmZlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBzaXplX3Qg
ZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgc2VuZEJ1ZmZlcihXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKIAogICAgIHZvaWQg
Y29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlU2FuZGJveEV4
dGVuc2lvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5k
ZXggMTE0ODUzZTQ1YjcyNTMzNjRjNzQ3YTcxY2IyYjVhYjhjYzM4ZWZkNS4uMWFmMWUwOGUzYzQ0
MWUyNGYzMDA2NWU5ZjIwNzc2ZTZmOWZjMzNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFBpbmdMb2FkOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVn
YWN5VAogICAgIGRpZEZpbmlzaCh7IH0sIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBQaW5nTG9hZDo6
ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgUGluZ0xvYWQ6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQogewogICAgIFBJTkdfUkVM
RUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKaW5kZXggMTllYzhjZWI5MmUzYzhh
MDU2ZjQ5MjczNjYwY2ZmZjkyNjQzNDFkMS4uYWIyOWEwYjFhYzg0NjZiMGVkNjFlZjU4ZWY0YzIy
MGFiYWI2ZWJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5n
TG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAt
NTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2Vp
dmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRl
ZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlh
dGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0
X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQo
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29u
bmVjdFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFz
ay5jcHAKaW5kZXggNDU1NzgyZDU0YTJlYTliZWUxODY1MGUxYWZkMWNmN2IyY2U5OGM0OS4uMTdk
NDc5MDdhM2Y2ZWU1MmJlNjUwMWQxZGFiMGNhNjA3NTFkNmIwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKQEAgLTc5LDcgKzc5LDcgQEAg
dm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgUmVzcG9uc2VDb20KICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rp
b246Oklnbm9yZSk7CiB9CiAKLXZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lk
IFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJlY29ubmVjdFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVj
dFRhc2suaAppbmRleCAxYzFmZjE2NDcxMTFjNmZhODQ5NGFmNWNmMGM3YmJlYWExYjI2NTAzLi44
NTgwOGUxMjFiNjhjYThiNzNlMjUxOGQxOTNhYjM5NTgxZWFkMWU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCkBAIC01NSw3ICs1NSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50
LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBmaW5hbDsKICAgICB2b2lk
IHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9u
SGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5h
bDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlv
blByZWxvYWRlci5jcHAKaW5kZXggYjM3NzE3OTY5NGNmYjQ2YjViM2ExNzdmNDc3YzkxMDM4NmQ2
YmYwNi4uNWQ5YmQzMzMzOTIxMWNhMWNkNDQ3Yjg3OTJmNTQ2MWVhODdlZGRmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCkBA
IC0xNzUsNyArMTc1LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXMKICAgICAgICAgY2FsbGJh
Y2soKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1fYm9keUNhbGxiYWNrKQogICAg
ICAgICBtX2JvZHlDYWxsYmFjayhidWZmZXItPm1ha2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXIuaAppbmRleCAzMjY1NzBlNjljYTQwNjJjNzg1YTRlY2ZmOTYxYTAxZTBh
OTBhMWNhLi42N2FiYzU1YzYwZmYyNGUzOWRkMDRlY2M1MDIxYjYwNWVlOGJlYmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAt
NTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBSZXNwb25zZUNhbGxiYWNrID0gRnVu
Y3Rpb248dm9pZCgpPjsKICAgICB2b2lkIHdhaXRGb3JSZXNwb25zZShSZXNwb25zZUNhbGxiYWNr
JiYpOwotICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKT47CisgICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+Owog
ICAgIHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNrJiYpOwogCiAgICAgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CkBAIC03
MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVk
ZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2Vu
ZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lk
IGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAg
dm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7
CiAgICAgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljczsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5k
ZXggOTQyMzUzNDgyNzNlODkxYjA3Yjg3NTYxYzFkNjEyZWEyYTQ0MzU5My4uN2EyNjIyMTlkZTc4
YjIzNWQxMjVhOTJiNmUyMzZkMzMyNjJmN2EyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgUmVzb3Vy
Y2VFcnJvciBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6cHJvY2Vzc1Jlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG8KICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIFNlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBp
ZiAoIW1fZGVjb2RlcikgewogICAgICAgICBpZiAoIW1fcmVzcG9uc2VFbmNvZGluZy5pc0VtcHR5
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCmlu
ZGV4IDE4ZjU0NjkxZjM3YzJiYWJiYzhjMWEzYmMwOTQzNzBlOWIyOWViNzEuLjQ0ZmMwNjg1ZmEw
ZmVkYzg3NDIxOTE2ZTkxM2E2NzRiMWMwZmRiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVj
dFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBm
aW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZS5jcHAKaW5kZXggZmRiZmIxNDM1OTc2Y2JmNjVmNjEyNTY4M2FjMWVkZDI0MDllMjc4Ny4uNmYy
NmI0Y2MyZGVmYTBkOTg4N2M2ZjQyNDVlOGY1NGZiZWM0YmEyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZS5jcHAKQEAgLTU4MSw3ICs1ODEsNyBAQCBTdG9yYWdlOjpSZWNvcmQgQ2FjaGU6OmVu
Y29kZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mb3JtYXRpb24sIGNvbnN0CiAg
ICAgRGF0YSBib2R5OwogICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgW10o
Y29uc3QgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYgZm9ybURhdGEpIHsKICAgICAgICAgLy8gRklY
TUU6IFN0b3JlIGZvcm0gZGF0YSBib2R5LgotICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXShjb25zdCBSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGJvZHkgPSB7IGJ1ZmZl
ci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9OwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0
cl90JikgewogICAgIH0pOwpAQCAtNjczLDcgKzY3Myw3IEBAIHN0ZDo6b3B0aW9uYWw8UmVjb3Jk
PiBDYWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcmVjb3JkID0gV1RGTW92ZShyZXN1bHQt
PnJlY29yZCk7Ci0gICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6
ZSgpKTsKKyAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CiAKICAgICBy
ZXR1cm4gcmVjb3JkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IDA0Nzc2ODM2Zjk5OTA5MzkxMGIzOTlkNzU1Mzg1
NWQ1ZDNmMWZmNGUuLmRkMzA1YWYyOTc2NjFlNDc2YzQ5Njc3ZGY1NzIxZWZkMWVjOTMyZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIENhY2hlOjpjb21wbGV0ZVJldHJpZXZlKFJl
dHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyLCBzdGQ6OnVuaXF1ZV9wdAogICAgIGhh
bmRsZXIoV1RGTW92ZShlbnRyeSksIGluZm8pOwogfQogICAgIAotc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhKQorc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSkKIHsKICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwg
V1RGTW92ZShyZXNwb25zZURhdGEpLCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFk
ZXJzKG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24obV9zZXNzaW9uSUQpLCByZXF1ZXN0
LCByZXNwb25zZSkpOwogfQpAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gQ2FjaGU6Om1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCBy
ZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RI
ZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24obV9zZXNzaW9uSUQpLCByZXF1
ZXN0LCByZXNwb25zZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9y
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiByZXNwb25zZURhdGEsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIEFTU0VSVChyZXNwb25zZURhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAppbmRleCAxOTlmMGNmYjcz
MjU0M2M1ZmVhZjRmZTIzMDFlNmExYzEyZjg4ZmU4Li5lZDA0ZWJjYTBiMzZmM2Y5YzRjMGU3YmFj
NzEzMzZiOWU5NmMzNTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTQzLDcgKzQzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIExvd1Bvd2VyTW9kZU5vdGlmaWVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjYsNyArMTY2LDcgQEAgcHVibGljOgogICAgIH07CiAg
ICAgdXNpbmcgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQoc3RkOjp1
bmlxdWVfcHRyPEVudHJ5PiwgY29uc3QgUmV0cmlldmVJbmZvJik+OwogICAgIHZvaWQgcmV0cmll
dmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJhbWVJRCYs
IHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBSZXRyaWV2ZUNvbXBs
ZXRpb25IYW5kbGVyJiYpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmUoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIEZ1bmN0aW9uPHZvaWQoTWFwcGVk
Qm9keSYpPiYmID0gbnVsbHB0cik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9yZShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIEZ1bmN0
aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmID0gbnVsbHB0cik7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEVudHJ5PiBzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXAp
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gdXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IEVudHJ5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgdmFsaWRhdGluZ1Jlc3BvbnNlKTsKIApAQCAtMTg1LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJldHJpZXZlRGF0YShjb25zdCBEYXRhS2V5JiwgRnVuY3Rpb248dm9pZChjb25zdCB1
aW50OF90Kiwgc2l6ZV90KT4pOwogICAgIHZvaWQgc3RvcmVEYXRhKGNvbnN0IERhdGFLZXkmLCAg
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
RW50cnk+IG1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
Jik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+IG1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCk7CiAKICAgICB2b2lkIGR1bXBDb250ZW50c1Rv
RmlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBmMWVmZmYzNTBmYTM3ZjZiNDY4MTU5ZmM2NjJl
N2FhOTQyODNkN2UxLi43NjEwNzhkZWEwOTNjMDQ1NTViZTk4YjA1MTczZTM0MTUwNjdhODU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmNwcApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiBu
YW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAotRW50cnk6OkVudHJ5KGNvbnN0IEtleSYga2V5LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBT
dHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKQorRW50cnk6OkVudHJ5KGNvbnN0IEtleSYg
a2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8c3Rk
OjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycykKICAgICA6IG1f
a2V5KGtleSkKICAgICAsIG1fdGltZVN0YW1wKFdhbGxUaW1lOjpub3coKSkKICAgICAsIG1fcmVz
cG9uc2UocmVzcG9uc2UpCkBAIC0xMDMsNyArMTAzLDcgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5
OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogICAgIERhdGEgYm9keTsKICAgICBpZiAo
bV9idWZmZXIpIHsKICAgICAgICAgbV9idWZmZXIgPSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KTsKLSAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcio+KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07Cisg
ICAgICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcio+KG1fYnVm
ZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CiAgICAgfQogCiAgICAgcmV0
dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFkZXIsIGJvZHksIHsgfSB9OwpAQCAtMTk2LDcg
KzE5Niw3IEBAIHZvaWQgRW50cnk6OmluaXRpYWxpemVCdWZmZXJGcm9tU3RvcmFnZVJlY29yZCgp
IGNvbnN0CiAgICAgbV9idWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3Nv
dXJjZVN0b3JhZ2VSZWNvcmQuYm9keS5kYXRhKCksIG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5
LnNpemUoKSk7CiB9CiAKLVdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogRW50cnk6OmJ1ZmZlcigpIGNv
bnN0CitXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBFbnRyeTo6YnVmZmVyKCkgY29u
c3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBpbml0aWFsaXplQnVmZmVyRnJvbVN0
b3JhZ2VSZWNvcmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaAppbmRleCA5NjkxNWMzODAxYzM3ZGRhYzNlOGU2MDMy
MWY4OGMyMjI5Y2Q1OWEwLi45YzA0MjBkNDRhODE1OGRmYzViMjFjZjE4ODIwNGNmM2E5MTZiNDJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVFbnRyeS5oCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIGNsYXNzIEVudHJ5IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBFbnRyeShjb25zdCBLZXkm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5
aW5nUmVxdWVzdEhlYWRlcnMpOworICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVx
dWVzdEhlYWRlcnMpOwogICAgIEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVx
dWVzdCwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVx
dWVzdEhlYWRlcnMpOwogICAgIGV4cGxpY2l0IEVudHJ5KGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYp
OwogICAgIEVudHJ5KGNvbnN0IEVudHJ5Jik7CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzcG9uc2U7IH0KICAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3Ry
aW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyeWluZ1Jl
cXVlc3RIZWFkZXJzOyB9CiAKLSAgICBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNv
bnN0OworICAgIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0
OwogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiYgcmVk
aXJlY3RSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWRpcmVjdFJlcXVlc3Q7IH0KIAogI2lm
IEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IG1fdmFyeWluZ1JlcXVlc3RIZWFk
ZXJzOwogCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IG1fcmVk
aXJlY3RSZXF1ZXN0OwotICAgIG11dGFibGUgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bV9idWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gbV9idWZmZXI7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICBtdXRh
YmxlIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgbV9zaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IGQ0M2MwODlk
NjE4NTNjNTE5ZTM2MmZmMmM4YzdjNDE4M2NlYzEwMGIuLjQxZDgyMzUwMjQ3NDdiNmZjNGEzYWM1
NDhlMTMzNGVkNmNiNWVmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAK
QEAgLTQ2LDcgKzQ2LDcgQEAgU3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQoQ2FjaGUm
IGNhY2hlLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBnbG9iYWxGcmFtZUkKICAgICA6IG1fY2FjaGUo
Y2FjaGUpCiAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKQogICAgICwgbV9vcmlnaW5hbFJlcXVlc3QocmVxdWVzdCkKLSAgICAsIG1fYnVmZmVyZWRE
YXRhRm9yQ2FjaGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKKyAgICAsIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2NhY2hl
RW50cnkoV1RGTW92ZShjYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikpCiB7CiAgICAgQVNTRVJUKCFt
X2NhY2hlRW50cnkgfHwgbV9jYWNoZUVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CkBAIC0xMjAs
NyArMTIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBjb21wbGV0aW9uSGFuZGxl
cihQb2xpY3lBY3Rpb246OlVzZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNl
aXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkKK3ZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuaAppbmRleCA2NzgzMGRmMGIzMDM0MzMwMmExMWI1NTFkN2EwOWY2ZDFhODVm
NTYzLi4xYjg0M2RiN2VjMjcwZGI5ZGFiOWU4YTI1ZjJhNDhhOGVjYWUyYThhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWxM
b2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAK
aW5kZXggNWUyZTAyZTJmYmEwYjRhMGMwM2I1ZDNlNjZiOTdmN2JjY2M3OTU4Yi4uMzE5OWJmZjMx
MWI2YzNlZWZiZTk1MGI0NWU2YjBhOTZlMzI3NzdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCkBAIC0zMCw3ICszMCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QcmVmZXRjaENhY2hlOjpFbnRyeTo6RW50cnko
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK1ByZWZldGNoQ2FjaGU6OkVudHJ5OjpFbnRyeShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IHJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2Up
KSwgYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKIH0KQEAgLTcyLDcgKzcyLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFByZWZldGNoQ2FjaGU6OkVudHJ5PiBQcmVmZXRjaENhY2hlOjp0YWtlKGNvbnN0
IFVSTCYgdXJsKQogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyBleHBpcmF0aW9uVGltZW91dCB7IDVf
cyB9OwogCi12b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVSTCYgcmVxdWVzdFVybCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUHJlZmV0Y2hDYWNoZTo6c3RvcmUoY29uc3QgVVJM
JiByZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0
cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAo
IW1fc2Vzc2lvblByZWZldGNoZXMpCiAgICAgICAgIG1fc2Vzc2lvblByZWZldGNoZXMgPSBtYWtl
VW5pcXVlPFByZWZldGNoRW50cmllc01hcD4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKaW5kZXggYTI1MTUyMGIzMWVhYzkyMWMy
MmQzMTE1MWQ2ZDIzMWExYmVkMTM4Yy4uNTJjMGIxMGZjYzZkNWE2ZGUxMTQ0N2U3ZTRlODIyZGY4
Zjg0MWNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9Q
cmVmZXRjaENhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9Q
cmVmZXRjaENhY2hlLmgKQEAgLTQ3LDE4ICs0NywxOCBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3Qg
RW50cnkgewogICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAg
IEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJik7CisgICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgICAgICBFbnRy
eShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
KTsKIAotICAgICAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWxlYXNlQnVmZmVyKCkg
eyByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7IH0KKyAgICAgICAgUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlbGVhc2VCdWZmZXIoKSB7IHJldHVybiBidWZmZXIu
cmVsZWFzZU5vbk51bGwoKTsgfQogCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
cmVzcG9uc2U7Ci0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
KyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
ICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlZGlyZWN0UmVxdWVzdDsKICAgICB9
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiB0YWtlKGNvbnN0IFVSTCYpOwotICAgIHZv
aWQgc3RvcmUoY29uc3QgVVJMJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIHN0b3JlKGNvbnN0IFVSTCYsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgc3RvcmVSZWRpcmVjdChjb25zdCBVUkwmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRleCBiOWFiMGRlZWJiOWY5MjdjNzM3NDJlODZhMGJl
N2Y5NzE2MGJkNmZiLi40MTY2OGE1YjFjZDczODY5NjdiOGZkOTczZTk2NzMyZWNhOTA3ZWRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZE5lZ290aWF0ZU1vZGVyblRMUyhjb25zdCBVUkwmKTsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0
aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXImJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIHRyYW5zZmVyU2FuZGJv
eEV4dGVuc2lvblRvRG93bmxvYWQoRG93bmxvYWQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4
IGU3ODBkNmMxYzNjZDFlYjJjMmZmNWEwYzU2NGEwZTRkODhiN2VhNWQuLjMwNTFmMTY5Y2IwYTM3
MDk5ODVhMTYxMTIyYzI1ZjBlOGYxN2JkOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtNDQy
LDcgKzQ0Miw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZENvbXBsZXRlV2l0aEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVyCiAgICAgICAgIG1fY2xpZW50LT5k
aWRDb21wbGV0ZVdpdGhFcnJvcihlcnJvciwgbmV0d29ya0xvYWRNZXRyaWNzKTsKIH0KIAotdm9p
ZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZURh
dGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBX
VEZFbWl0U2lnbnBvc3QobV90YXNrLmdldCgpLCAiRGF0YVRhc2siLCAicmVjZWl2ZWQgJXpkIGJ5
dGVzIiwgZGF0YS0+c2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCmluZGV4IDY3N2M2MWRhMWEx
ODk0YzFmNTk2NTZkOTI3MDllYjcxZDU5MWE1NTMuLjNkYzY1ZmY4MmM5ZGE4OTJkMjBjMzQ4ODZl
NWExYzRkNzlkYWRlZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVl
c3QmIHJlcXVlc3QsIEN1cmxSZXNwbwogICAgIGludm9rZURpZFJlY2VpdmVSZXNwb25zZSgpOwog
fQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxS
ZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIE5ldHdvcmtEYXRhVGFz
a0N1cmw6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMg
fTsKICAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IHN0YXRlKCkgPT0gU3Rh
dGU6OkNvbXBsZXRlZCB8fCAoIW1fY2xpZW50ICYmICFpc0Rvd25sb2FkKCkpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJs
LmgKaW5kZXggMWM0MjdkZGI3OGQ2OTUzZmU4OTYwYzU2OTJhZmRlNGY0ZjBlZWU4NS4uNDViZTVj
ZTE4NDMyNTI3MWQ1YzA4MGRkMzRmMWVlNGExNjY0MmExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCkBAIC02
OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmPFdlYkNvcmU6OkN1cmxSZXF1ZXN0PiBjcmVh
dGVDdXJsUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVxdWVzdFN0YXR1cyA9
IFJlcXVlc3RTdGF0dXM6Ok5ld1JlcXVlc3QpOwogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKFdl
YkNvcmU6OkN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxv
bmcpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpD
dXJsUmVxdWVzdCYsIFdlYkNvcmU6OkN1cmxSZXNwb25zZSYmKSBvdmVycmlkZTsKLSAgICB2b2lk
IGN1cmxEaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZl
cihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShXZWJDb3JlOjpDdXJs
UmVxdWVzdCYsIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYmKSBvdmVycmlkZTsKICAgICB2
b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYmLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mJikgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0
YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
RGF0YVRhc2tTb3VwLmNwcAppbmRleCBlNjViMmVhODM4YjA4MTgzYzk2YjgzMTIwYjFmZWYxNTZi
YjhjMDk1Li5lNjdlMDViYTg0NzhhNTgxODMwZTM5NzA2OGIzMmZiMDhkOTFiN2VkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRh
VGFza1NvdXAuY3BwCkBAIC0xNzYxLDcgKzE3NjEsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1Nv
dXA6OmRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9uYWw8RGF0YVVSTERlY29kZXI6OlJlc3VsdD4m
JgogICAgIH0KIAogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVz
cG9uc2UobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgcmVzdWx0LnZhbHVlKCkpOwotICAgIGF1dG8g
Ynl0ZXMgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRh
dGEpKS0+Y3JlYXRlR0J5dGVzKCk7CisgICAgYXV0byBieXRlcyA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOwogICAgIG1faW5wdXRT
dHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19mcm9tX2J5dGVzKGJ5
dGVzLmdldCgpKSk7CiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92
aWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1By
b3ZpZGVyLmgKaW5kZXggZjVkYjcwNmM0NDU4MDIxMDg3Zjk1OTk2NjlkZmE3ZDlmODM3OTc4Yy4u
MzNkNDNiNzIyMzhkMjAzZTdlZGVjOTQxNGNhZjlmZGE4ZjQwNTI2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVy
LmgKQEAgLTU1LDcgKzU1LDcgQEAgc3RydWN0IFBhY2tldE9wdGlvbnM7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmluZGV4
IDI5ZjcxZDdlNmRjNzUwZWYxOWYzMjg2MmM4OWI3MTg1ZTAzYmY4OTYuLmRmOGVlMzBjNDNjMGZm
ZjRkMGVhNmQ4Y2VjZTNmY2Y0Y2IzM2VmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC01MSw5ICs1MSw5IEBAIHN0ZDo6b3B0aW9u
YWw8U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKICAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBi
dWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwog
ICAgIHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggZTljZDg3MmY4ZDQ0ZjE1ZTBlZTM3
YzczNDkyYjJkODAyYWM5MDcxNi4uMTdmMDhjMjhlYTEyNWI1NTA5OTNlZWQyNGQ1OTYzYjg1MTBh
MTE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVy
Q29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aApAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLS8vIEVuY29kZXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBpcyByZWNlaXZlZCBhcyBhIGNv
cHkgb2YgdGhlIGRlY29kZWQgZGF0YSBpbiBhIG5ldyBTaGFyZWRCdWZmZXIuCisvLyBFbmNvZGVz
IGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgY29weSBvZiB0
aGUgZGVjb2RlZCBkYXRhIGluIGEgbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAvLyBUbyBh
dm9pZCBjb3B5aW5nIGZyb20gdGhlIERlY29kZXIsIHVzZSBTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlIHRvIHJlY2VpdmUgYSBEYXRhUmVmZXJlbmNlIGluc3RlYWQuCiAKICNwcmFnbWEgb25jZQpA
QCAtMzksMTkgKzM5LDE5IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlckNvcHkgewogcHVibGljOgogICAg
IFNoYXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAg
OiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVm
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1f
YnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZm
ZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4oKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIp
KSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CisgICAgU2hh
cmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91
cygpIDogUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4oKSkgeyB9CisgICAgU2hhcmVkQnVm
ZmVyQ29weShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAg
ICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5tYWtlQ29udGlndW91cygpKSB7IH0KLSAgICBTaGFy
ZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorICAgIFNo
YXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKSB7IH0KIAot
ICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyBy
ZXR1cm4gbV9idWZmZXI7IH0KLSAgICBjb25zdCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9
CisgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsgfQogICAgIHNp
emVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDog
MDsgfQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRlY29kZShEZWNvZGVyJik7CiAK
IHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKaW5kZXggZDNkMGVjNWU5Nzg1NTk5YjYz
NGE4NGM2YzQ0NzFiNTJjZDIyMTNmMS4uNjdlYzhlNWU5MmJkMDI0MTE1ZGIwZDQwODBhMjRmZTcz
NTcwZDNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaApAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIEVuY29kZXMgYSBTaGFyZWRCdWZmZXIgb3Ig
RGF0YVJlZmVyZW5jZSB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgRGF0YVJlZmVyZW5jZSB0byB0aGUg
ZGVjb2RlZCBkYXRhLgorLy8gRW5jb2RlcyBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgb3IgRGF0
YVJlZmVyZW5jZSB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgRGF0YVJlZmVyZW5jZSB0byB0aGUgZGVj
b2RlZCBkYXRhLgogCiAjcHJhZ21hIG9uY2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRN
ZW1vcnkuY3BwCmluZGV4IGIzYTk5YWY4ZjUxMjdmNmE2NTNjYzFjOGY4NWI2MmI2Y2FhZjE1OGEu
LmMwMjZmNTQ5NTY5YjJiZTAwNzhhZTMyNWQwNTM5ZTA3MWFmMTEwNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWZQdHI8U2hhcmVkTWVtb3J5
PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitS
ZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ4LDEwICs0OCwxMCBAQCBSZWZQdHI8U2hhcmVk
TWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiAgICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKIH0KIAotUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkg
Y29uc3QKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVy
KHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoZGF0YVNpemUgPD0gc2l6ZSgp
KTsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50
OjpQcm92aWRlciB7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50
OjpQcm92aWRlciB7CiAgICAgICAgIFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkg
LT4gY29uc3QgdWludDhfdCogewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihwcm90ZWN0ZWRUaGlzLT5kYXRhKCkpOwogICAgICAgICB9LApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggNzZiNzNjYWU0Yzg1ZDdlZTM2OGIxZjg0ZDUx
ZWUwMGY5MmU5MDQ3Yy4uMWI0ZmRmYWY2ODM4OWRjZTcyOGZmMzRlNWU1ZjAxMmUyNDNmYTJjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC00NCw4ICs0NCw4IEBAIGNs
YXNzIEVuY29kZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogfQogCiAjaWYgT1MoREFSV0lOKQpAQCAtMTIxLDcgKzEyMSw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIEZJWE1FOiBDaGFuZ2UgdGhlc2UgZmFjdG9yeSBmdW5jdGlvbnMgdG8gcmV0dXJu
IFJlZjxTaGFyZWRNZW1vcnk+IGFuZCBjcmFzaCBvbiBmYWlsdXJlLgogICAgIHN0YXRpYyBSZWZQ
dHI8U2hhcmVkTWVtb3J5PiBhbGxvY2F0ZShzaXplX3QpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hh
cmVkTWVtb3J5PiBjb3B5QnVmZmVyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOworICAg
IHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBjb3B5QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4g
bWFwKGNvbnN0IEhhbmRsZSYsIFByb3RlY3Rpb24pOwogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NL
RVRTKQogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiB3cmFwTWFwKHZvaWQqLCBzaXpl
X3QsIGludCBmaWxlRGVzY3JpcHRvcik7CkBAIC0xNTQsNyArMTU0LDcgQEAgcHVibGljOgogICAg
IC8vIFJldHVybiB0aGUgc3lzdGVtIHBhZ2Ugc2l6ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5z
aWduZWQgc3lzdGVtUGFnZVNpemUoKTsKIAotICAgIFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKKyAgICBSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKIAog
cHJpdmF0ZToKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDM1ZWExNjIxNTZh
MjA3MDI2ZGYxMzQxYzVjMGE4NzNhMjNhN2VjNzEuLjNjMWI1N2Q1YWEyNmVjNzJlNjBiNWQ3OGEx
MWU5ZmQ4NTJjZmZlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dl
YkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC01NjQsNyArNTY0LDcgQEAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxX
ZWJDb3JlOjpGb250Pj46OmRlY28KICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGlmICgqaW5jbHVkZXNDcmVhdGlvbkRhdGEpIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwog
ICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgaWYgKCFmb250RmFjZURh
dGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IDQ1NDE2NDM2YzI1MDUyMDgzOGU1ZGZk
Y2MyYmZlMzUzZmI1OWMyYTEuLmU5YTUxM2EzMDVlZGQ2NWJkZmEzNzRlMWJkMGUzZmVhYjFmNmI4
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAg
LTEwNSw3ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNwbGF5TGlzdElt
YWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZQogICAgIFJFTEVBU0VfTE9H
KFJlbW90ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQgb2Ygc2l6
ZSAlZHglZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBvZiAlbGQgYnl0ZXMiLCBzaXplLndpZHRoKCks
IHNpemUuaGVpZ2h0KCksIENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKSk7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkgeyBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkg
fSB9OworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkgeyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSB9IH07
CiB9CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVy
QmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5jcHAKaW5kZXggMmMxNjExYzllNzBmOGY5YTEzNzljMmM4NDMwODQ3MzUyZTRjOTZj
YS4uNmZhMDJhN2JjM2VlNTRhZTZkMzI1MzgxMGQ3OGRlYzMxNjUzNTNkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAtNTUsMTUgKzU1LDE1IEBAIGJv
b2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkK
K1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZm
ZXIoKQogewotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNl
Z21lbnQ6OlByb3ZpZGVyIHsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNl
Z21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0
dXJuIHNlbGYtPmRhdGEoKTsgfSwKICAgICAgICAgW3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsg
cmV0dXJuIHNlbGYtPnNpemUoKTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVm
ZmVyKCkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5k
bGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgUmVmUHRyPFNoYXJlYWJs
ZVJlc291cmNlPiByZXNvdXJjZSA9IFNoYXJlYWJsZVJlc291cmNlOjptYXAoKnRoaXMpOwogICAg
IGlmICghcmVzb3VyY2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJl
YWJsZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5o
CmluZGV4IGEwZWQwODU3MzRiNzc1NTE0YzExNjdkZWYzZDdjYjRmNjRlNDEyYWEuLmRhMWVlZTBh
ZDYyY2IzNDg0YzFjMzQwNWM0ODcwY2YwYzUxZTE2MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVhYmxlUmVzb3VyY2UuaApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NCw3
ICs1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29u
c3Q7CiAgICAgICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpE
ZWNvZGVyJiwgSGFuZGxlJik7CiAKLSAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWFibGVSZXNvdXJjZTsK
QEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBTaGFyZWFibGVS
ZXNvdXJjZShSZWY8U2hhcmVkTWVtb3J5PiYmLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIHNp
emUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB3cmFwSW5T
aGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB3cmFwSW5T
aGFyZWRCdWZmZXIoKTsKIAogICAgIFJlZjxTaGFyZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRl
eCBlOTNmZDg5ZTdlZmMwNzZhOWI5MTg3NzdiZDYwOGM4MzQ0Yjk0YWJhLi5hNjllYmM1OTYzMjU5
ZWE0YWQ0NTE3MTViNzcxY2RkMmRiNjQ0MzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBERUZJTkVfU0lN
UExFX0FSR1VNRU5UX0NPREVSX0ZPUl9TT1VSQ0UoRGlzcGxheUxpc3Q6OlNldElubGluZVN0cm9r
ZUNvbG9yKQogCiAjdW5kZWYgREVGSU5FX1NJTVBMRV9BUkdVTUVOVF9DT0RFUl9GT1JfU09VUkNF
CiAKLXN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3N0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7
CiAgICAgYm9vbCBpc051bGwgPSAhYnVmZmVyOwogICAgIGVuY29kZXIgPDwgaXNOdWxsOwpAQCAt
MTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAj
aWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgLy8gRG8gbm90IHVzZSBzaGFyZWQgbWVt
b3J5IGZvciBTaGFyZWRCdWZmZXIgZW5jb2RpbmcgaW4gVW5peCwgYmVjYXVzZSBpdCdzIGVhc3kg
dG8gcmVhY2ggdGhlCisgICAgLy8gRG8gbm90IHVzZSBzaGFyZWQgbWVtb3J5IGZvciBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyIGVuY29kaW5nIGluIFVuaXgsIGJlY2F1c2UgaXQncyBlYXN5IHRvIHJl
YWNoIHRoZQogICAgIC8vIG1heGltdW0gbnVtYmVyIG9mIGZpbGUgZGVzY3JpcHRvcnMgb3BlbiBw
ZXIgcHJvY2VzcyB3aGVuIHNlbmRpbmcgbGFyZ2UgZGF0YSBpbiBzbWFsbCBjaHVua3MKICAgICAv
LyBvdmVyIHRoZSBJUEMuIENvbm5lY3Rpb25Vbml4LmNwcCBhbHJlYWR5IHVzZXMgc2hhcmVkIG1l
bW9yeSB0byBzZW5kIGFueSBJUEMgbWVzc2FnZSB0aGF0IGlzCiAgICAgLy8gdG9vIGxhcmdlLiBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODU3MS4KQEAgLTE5
MSw3ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAjZW5kaWYKIH0KIAotc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVy
LCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3N0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlz
TnVsbDsKICAgICBkZWNvZGVyID4+IGlzTnVsbDsKQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29k
ZXIsIFJlZlB0cjxDb250aQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWJ1ZmZl
clNpemUpIHsKLSAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIApAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRy
PENvbnRpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCksIDEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAjZWxzZQogICAgIFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGlwY0hhbmRsZSkpCkBAIC0yNDAsNyArMjQwLDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8Q29udGkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMgdm9pZCBlbmNv
ZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5
cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIEFT
U0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAgIGVuY29kZXIgPDwgdHlwZXM7
CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY28KICAgICAgICAgZW5j
b2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7CiB9CiAKLXN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2Rlciwg
VmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiYgZGF0YSkKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0Fu
ZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlw
ZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjEsNyArMjYxLDcgQEAgc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVy
LCBWZWN0b3I8U3RyaW4KICAgICBBU1NFUlQoZGF0YVNpemUgPT0gdHlwZXMuc2l6ZSgpKTsKIAog
ICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBkYXRhU2l6ZTsgaSsrKSB7Ci0gICAgICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rl
ciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZGF0YS5hcHBl
bmQoYnVmZmVyKTsKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RE9NQ2Fj
aGVFbmdpbmU6OlJlY29yZD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBET01DYQog
ICAgIGVuY29kZXIgPDwgcmVjb3JkLnVwZGF0ZVJlc3BvbnNlQ291bnRlcjsKICAgICBlbmNvZGVy
IDw8IHJlY29yZC5yZXNwb25zZUJvZHlTaXplOwogCi0gICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQu
cmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIHsKKyAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBS
ZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsKICAg
ICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7CiAgICAgfSwg
WyZdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CkBAIC00MTQsNyArNDE0LDcgQEAg
c3RkOjpvcHRpb25hbDxET01DYWNoZUVuZ2luZTo6UmVjb3JkPiBBcmd1bWVudENvZGVyPERPTUNh
Y2hlRW5naW5lOjpSZWNvcmQ+OjpkZWMKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGlmIChoYXNTaGFyZWRCdWZmZXJCb2R5KSB7Ci0gICAgICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChidWZmZXIpCkBAIC0x
NTUwLDEwICsxNTUwLDEwIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6RW50cnk+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QKICAgICBpZiAoaGFzU3Ry
aW5nKQogICAgICAgICBlbmNvZGVyIDw8IHN0ZDo6Z2V0PFN0cmluZz4ocGxhdGZvcm1EYXRhKTsK
IAotICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSk7CisgICAgYm9vbCBoYXNCdWZmZXIgPSBz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpOwog
ICAgIGVuY29kZXIgPDwgaGFzQnVmZmVyOwogICAgIGlmIChoYXNCdWZmZXIpCi0gICAgICAgIGVu
Y29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBzdGQ6OmdldDxSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+KHBsYXRmb3JtRGF0YSkucHRyKCkpOworICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIo
ZW5jb2Rlciwgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSkucHRyKCkp
OwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeSYgZGF0
YSkKQEAgLTE1ODMsNyArMTU4Myw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGViCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNCdWZmZXIpIHsKLSAgICAgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHZhbHVlOworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiB2YWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgdmFsdWUp
IHx8ICF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZGF0YS5wbGF0
Zm9ybURhdGEgPSB7IHZhbHVlLnJlbGVhc2VOb25OdWxsKCkgfTsKQEAgLTI5NzYsNyArMjk3Niw3
IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRh
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7IHsgV1RGTW92
ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH0gfTsKKyAgICByZXR1
cm4geyB7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH0gfTsKIH0KIAog
I2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0zMDEwLDU2ICszMDEwLDU2
IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRQCiB9CiAjZW5kaWYKIAotdm9pZCBBcmd1bWVudENv
ZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit2b2lkIEFy
Z3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBi
dWZmZXIuZ2V0KCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBB
cmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBp
ZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotdm9pZCBBcmd1bWVudENv
ZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit2b2lkIEFyZ3VtZW50
Q29kZXI8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYg
YnVmZmVyKQogewogICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkp
OwogfQogCi1zdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6
Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihk
ZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKLXZvaWQgQXJndW1l
bnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rl
ciwgYnVmZmVyLmdldCgpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAg
ICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLXZvaWQgQXJndW1l
bnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiBidWZmZXIpCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikKIHsKICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0
cigpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFy
Z3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBBcmd1
bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiB7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZm
ZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCkBAIC0zMTIzLDcgKzMxMjMsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlw
dEJ1ZmZlcj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZAogICAg
ICAgICByZXR1cm4gZGVjb2RlU2NyaXB0QnVmZmVyQXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZShk
ZWNvZGVyKTsKICNlbmRpZgogCi0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVT
aGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIApAQCAtMzEzNSw3ICszMTM1LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGUKIHsKICAg
ICBlbmNvZGVyIDw8IG1lc3NhZ2UuZmlyc3Q7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
ZXNzYWdlRGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlSZWYoKTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZURhdGEgPSBtZXNzYWdlLnNlY29uZC5jb3B5UmVmKCk7
CiAgICAgZW5jb2RlciA8PCBtZXNzYWdlRGF0YTsKIH0KIApAQCAtMzE0NSw3ICszMTQ1LDcgQEAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+ICBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OkNETUkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKaW5kZXggZWYwMTExZmI1NjJjZGViNmNiMGY3YTI1MjFmMDkzYWYyNzk4Njc5Zi4uNmZh
YzJhYTFlYTc4NDZmZjZiZjg5MDIxZjBmNTJlOWFhN2FlMDNjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTExNCw3ICsxMTQsNyBAQCBjbGFz
cyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQ2VydGlm
aWNhdGVJbmZvOwogY2xhc3MgQ29sb3I7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwor
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6aWVy
VGltaW5nRnVuY3Rpb247CiBjbGFzcyBDdXJzb3I7CkBAIC0xMzksNyArMTM5LDcgQEAgY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNjcmlwdEJ1
ZmZlcjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNwcmluZ1RpbWluZ0Z1bmN0aW9uOwogY2xh
c3MgU3RlcHNUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25z
dHJhaW50czsKQEAgLTc1Miw2ICs3NTIsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+IHsKIH07CiAjZW5k
aWYKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYs
IGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYpOworICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZv
aWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtNzYyLDE2ICs3NzIsNiBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShE
ZWNvZGVyJik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gewotICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
Jik7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKLSAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKLX07Ci0KIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiB7CiAgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRCdWZmZXIm
KTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGRlY29k
ZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0
UmVzdWx0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0
YS5jcHAKaW5kZXggY2YyZTRkNWY5M2ZkMmQ5NDZiYWJmZjkzZWVhM2U5ZTg2MGFlYmJmNC4uYjYw
N2FjZTgzOGUwNGJjZTFhNmFlZTRkYTU2NTU5ZTA5Njk4Mzk4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcApAQCAtODUsNyArODUsNyBAQCBXZWJI
aXRUZXN0UmVzdWx0RGF0YTo6V2ViSGl0VGVzdFJlc3VsdERhdGEoY29uc3QgV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdCYgaGl0VGVzdAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoSW1hZ2UqIGlt
YWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpOwogICAgICAgICBpZiAoYnVmZmVyKSB7
CiAgICAgICAgICAgICBpbWFnZVNoYXJlZE1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5Ojpj
b3B5QnVmZmVyKCpidWZmZXIpOwogICAgICAgICAgICAgaW1hZ2VTaXplID0gYnVmZmVyLT5zaXpl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNH
dGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApp
bmRleCA2NDVkOWJmYWI3NTdiMzFkN2U2MDBlNzhiYWIwM2E3ZTg5Mzk3MTg1Li42NzE3NThhMjgw
YTVlNDQwYWEwNjBhNzljZjFmMGYxMjZkYjdiZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBBcmd1
bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
U2VsZWN0aW9uRGF0YSYKICAgICBib29sIGhhc0N1c3RvbURhdGEgPSBzZWxlY3Rpb24uaGFzQ3Vz
dG9tRGF0YSgpOwogICAgIGVuY29kZXIgPDwgaGFzQ3VzdG9tRGF0YTsKICAgICBpZiAoaGFzQ3Vz
dG9tRGF0YSkKLSAgICAgICAgZW5jb2RlciA8PCBSZWZQdHI8U2hhcmVkQnVmZmVyPihzZWxlY3Rp
b24uY3VzdG9tRGF0YSgpKTsKKyAgICAgICAgZW5jb2RlciA8PCBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4oc2VsZWN0aW9uLmN1c3RvbURhdGEoKSk7CiAKICAgICBib29sIGNhblNtYXJ0
UmVwbGFjZSA9IHNlbGVjdGlvbi5jYW5TbWFydFJlcGxhY2UoKTsKICAgICBlbmNvZGVyIDw8IGNh
blNtYXJ0UmVwbGFjZTsKQEAgLTE1OSwxMCArMTU5LDEwIEBAIHN0ZDo6b3B0aW9uYWw8U2VsZWN0
aW9uRGF0YT4gQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDdXN0b21EYXRhKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzQ3VzdG9tRGF0YSkgewotICAgICAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0
b21EYXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigqYnVmZmVyKSk7CisgICAgICAgIHNl
bGVjdGlvbi5zZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKICAgICB9
CiAKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKaW5kZXggOGFlZjRhNTAxZGFk
OTI3NjZjNzE5ZmM1MDA2YzZkZjEyYWRhNWFhMC4uMjkyZDcxNDUyYzVjM2E5NDkyYjJmNWI2MTY4
MjczNTMwYWMyZGQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNv
cmVBcmd1bWVudENvZGVyc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dl
YkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGQ6Om9wdGlv
bmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxh
dGZvcm1EYXRhKERlYwogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSogY3JlYXRp
b25EYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChpbmNsdWRlc0NyZWF0aW9uRGF0YS52YWx1ZSgp
KSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBm
b250RmFjZURhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IGZv
bnRGYWNlRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGlm
ICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCBjOTBkM2Q4
MTEzZjcxOTAxYjA4ZjI2NDg5MTZhZDJjYzI5ZDk4MzM0Li4xNDkwYzUxMWJkYzM4YmQ4YWI0YTY5
NWFlY2YzMDZkOTVmYWEzOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUF0dGFjaG1lbnQuY3BwCkBAIC05OCwxNyArOTgsMTcgQEAgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gQXR0YWNobWVudDo6ZmlsZVNpemVGb3JEaXNwbGF5KCkgY29uc3QKICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50
OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25z
dAorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
dm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCit2
b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAppbmRleCBjNmMyYTA2ZWM5
N2RkZjBkNmNhYjQyYjRhNjQwOWIzYzQ3YjRkZWZlLi5mZTUwZTUzOGI4ZWJiMzUxYTQ4MzZkMWRk
ODkzZDE0N2E1NmE4NzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRh
Y2htZW50LmgKQEAgLTM4LDggKzM4LDggQEAgT0JKQ19DTEFTUyBOU0ZpbGVXcmFwcGVyOwogT0JK
Q19DTEFTUyBOU1N0cmluZzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODMsMTQgKzgzLDE0IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCi0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3Q7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0
OwogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplRm9yRGlzcGxheSgpIGNvbnN0
OwogCiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShib29sIGhhc0VuY2xvc2luZ0ltYWdl
KSB7IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJbWFnZTsgfQogICAgIGJvb2wg
aGFzRW5jbG9zaW5nSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2hhc0VuY2xvc2luZ0ltYWdlOyB9
CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFs
aXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0OworICAg
IHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOwogCiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IEF0dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIs
IFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCAxYjliNTRiNjI3MTgx
NDk1MDhmOTAyN2M4M2M2NzMyMDZiYTgyOTgyLi42NDQ5MWUxNjJlYzZjNWJjZmEzZmM0Y2IyNDlm
OGQ5Y2NiNjM5YjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCB0ZW1wbGF0
ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZGF0YSwg
Y29uc3QgRnVuY3Rpb248YgogewogICAgIGRhdGEuYXBwbHkoZnVuY3Rpb24pOwogfQotdGVtcGxh
dGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9u
KQordGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBk
YXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24p
CiB7CiAgICAgZnVuY3Rpb24oeyBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9y
ZS5oCmluZGV4IDIwODM0ZDc4OGU0MDM2MTQxY2Y5MmJlNTRmNDMxYmNiOGE2MGVmNjQuLmEwYTM3
MGM3YzY4ZmE5NDQ5ZTQ5MGJhYmZiYTcxMmQ1NGUyY2JiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oCkBAIC0zMCw3
ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiB9CiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggNTYyMzQwMTQ1OWRhNWZlMzBmNDkxYTQx
ZmIzNDdhNjc1NzIwMmM0MC4uMTExZjA5MjYzZjgyMjM4MjlhNWFkMjY0NDM0YmE0MjBmMTk4ZGQx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25D
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNs
aWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBDb250ZW50UnVsZUxpc3RSZXN1bHRzOwog
Y2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KIApAQCAtMTE5LDcgKzExOSw3
IEBAIHB1YmxpYzoKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZpcnR1YWwgdm9pZCBkaWRT
dGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5n
JiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJikgeyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgUmVmPE5hdmlnYXRpb25B
Y3Rpb24+JiYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0
ZW5lciwgT2JqZWN0KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IDk0ZGI1NTc1MzI4NWY4YTAzZjBkYTJj
M2NhMmQ4NjgxN2MyOTUyOTUuLmRmZWYzZTA3MGY5NjE2MzA0OTcxNDRkYWYzZjMwMGNiNGNhNTE5
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRh
Y2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQ
SUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTM3LDcgKzEzNyw3IEBAIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IEF0dGFjaG1lbnQ6OmZpbGVTaXplRm9yRGlzcGxheSgpIGNvbnN0CiAgICAgcmV0dXJu
IFtmaWxlV3JhcHBlciByZWd1bGFyRmlsZUNvbnRlbnRzXS5sZW5ndGg7CiB9CiAKLVJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNv
bnN0CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6
ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1faGFzRW5jbG9zaW5nSW1h
Z2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTU5LDcgKzE1OSw3IEBAIGJvb2wgQXR0
YWNobWVudDo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2ZpbGVXcmFwcGVyICYmICFt
X2ZpbGVXcmFwcGVyR2VuZXJhdG9yOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkg
Y29uc3QKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgYXV0byBmaWxlV3JhcHBlciA9
IHRoaXMtPmZpbGVXcmFwcGVyKCk7CiAKQEAgLTE3MCwxMCArMTcwLDEwIEBAIFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVk
UmVwcmVzZW50YXRpCiAgICAgaWYgKCFzZXJpYWxpemVkRGF0YSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHNlcmlhbGl6ZWREYXRhKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
cmVhdGUoc2VyaWFsaXplZERhdGEpOwogfQogCi12b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21T
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVu
dFR5cGUpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRp
b24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24s
IGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBpZiAoIW1fd2ViUGFnZSkK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KaW5kZXggM2U5MjNjZjY0OWQ5NmUzNGVkMmE1MWY5MTcwZDViMTc0MWZhNjUx
OC4uY2U5NjNmMWQzYjhkMDM5ZDhjNDQ5NmJjNTAxOGYyZDU4NzRkMzZmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0yMjIzLDcgKzIy
MjMsNyBAQCAtICh2b2lkKV9zdGFydEltYWdlQW5hbHlzaXM6KE5TU3RyaW5nICopaWRlbnRpZmll
cgogCiAtICh2b2lkKV9yZXF1ZXN0UmVzb3VyY2U6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNEYXRhICosIE5TVVJMUmVzcG9uc2UgKiwgTlNFcnJv
ciAqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIF9wYWdlLT5yZXF1ZXN0UmVzb3VyY2UocmVx
dWVzdCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0gKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYg
ZXJyb3IpIHsKKyAgICBfcGFnZS0+cmVxdWVzdFJlc291cmNlKHJlcXVlc3QsIFtjb21wbGV0aW9u
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3Bv
bnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYgZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9y
LmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGJ1ZmZlci0+
Y3JlYXRlTlNEYXRhKCkuZ2V0KCksIHJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSwgbmlsKTsKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsLCBuaWwsIGVycm9yLm5zRXJyb3IoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmlu
ZGV4IDZiNzU2YWE0MTdiNTFlZGQ3ZmQzZmZiZGRmM2MyMmU0NDUzMTkyOTAuLmY1YWYwOTJiYjIy
NTgyMDU5NmNiMDI1MzBkMGRiMGI3Njk0NDAzMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAg
dm9pZCBEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQoSW50UG9pbnQmJiBwb3NpdGlvbiwgR3RrU2Vs
ZWN0aW9uRGF0YSogZGF0YSwgdW5zaWcKICAgICAgICAgaW50IGxlbmd0aDsKICAgICAgICAgY29u
c3QgYXV0byogY3VzdG9tRGF0YSA9IGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0YV93aXRoX2xl
bmd0aChkYXRhLCAmbGVuZ3RoKTsKICAgICAgICAgaWYgKGxlbmd0aCA+IDApCi0gICAgICAgICAg
ICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOworICAgICAg
ICAgICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSkpOwogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUuaAppbmRleCBhYzRhMGY0MzcwMTUyZWQ1NzJiNTA5MWRmYTUxYmFlYmFiODdm
NGU5Li5jODAyOWMxNDBhNmRkMTRiMTk2NDkyMjViODc4MzBlZWMxMzQwMGZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTMzLDcg
KzEzMyw3IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAgICAgdm9pZCBk
aWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgb3ZlcnJpZGU7Ci0gICAgICAg
IHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkRmluaXNo
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0K
aW5kZXggNzI1Yjc3MGY2YzU0MjZhYzhjYjdiNjc0YzQ2MWY4MWUzZWUzNjYwNy4uOGQzYTg1NjQ2
MmVhZWY3NDFkOGMyOWUyNTkyZmQ1NzM2NmY1OTljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTIyMCw3ICsxMjIwLDcgQEAg
dm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFN0YXJ0TG9hZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnIKICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlv
bkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9u
YXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lV2l0aEZpbGVOYW1lOmZpbGVOYW1lIHV0aTp1dGldOwogfQogCi12b2lkIE5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIE5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUpCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2Eu
bW0KaW5kZXggYmUxNDM3MGRlMDliZDU3MDJiOWM3ZGRjZDZjNzdiOGY2ZGE1ZjViOC4uNjgzMzcz
ZWFlMDBmNWRiNDJiODE0NmNlOWQ1MzFiYzhhYzBhNTRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTMwNiw3
ICszMDYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZEF1ZGlvQ29tcG9uZW50UmVnaXN0
cmF0aW9ucygpCiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlvbnMuZ2V0KCkpOworICAgICAg
ICAgICAgYXV0byByZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7CiAgICAgICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNz
YWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucyh7IFdU
Rk1vdmUocmVnaXN0cmF0aW9uRGF0YSkgfSksIDApOwogICAgICAgICB9KTsKICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCmluZGV4IDkzNDA5NDAw
MjE0YjZiNjdiMjA4OWY3ZDBlMzdlZDBjYjFlY2JhMjAuLjEyNDE3ODNiY2NjZWEwMDk1YTZlZGJi
ZDJkNjk2YTZiZTFmNGQ1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwuaApAQCAtNTA0LDcgKzUwNCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnRE
cmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUmIGltYWdlKTsKICAgICB2b2lkIHNldEZpbGVBbmRVUkxUeXBlcyhOU1N0cmluZyAqZmlsZW5h
bWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwg
TlNTdHJpbmcgKnZpc2libGVVUkwsIE5TUGFzdGVib2FyZCAqKTsKLSAgICB2b2lkIHNldFByb21p
c2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0
cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5n
ICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3Ry
aW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKnBhc3RlYm9hcmRPcmlnaW4pOworICAgIHZv
aWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqLCBOU1N0cmluZyAqZmls
ZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVy
bCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKnBhc3Rl
Ym9hcmRPcmlnaW4pOwogICAgIHZvaWQgcGFzdGVib2FyZENoYW5nZWRPd25lcihOU1Bhc3RlYm9h
cmQgKik7CiAgICAgdm9pZCBwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICos
IE5TU3RyaW5nICp0eXBlKTsKICAgICBOU0FycmF5ICpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3Bw
ZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAxMWNjNzUyOGExZTVmNmE4Njg0
ZmNlMDY3ZTBhZGEwNzQ2MmVlNGM2Li43Mzc0OGNhZjE0ZWIxMzBlMDc0NTM3MTJhNGUwMzdkZmY0
NTViYTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQpAQCAtMjk4Myw3ICsyOTgzLDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBOU0FycmF5ICoKICAgICAgICAg
aWYgKFtbdHlwZXMgb2JqZWN0QXRJbmRleDppXSBpc0VxdWFsVG86V2ViQ29yZTo6bGVnYWN5U3Ry
aW5nUGFzdGVib2FyZFR5cGUoKV0pCiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6
bV9wYWdlLT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkgZm9yVHlwZTpXZWJDb3JlOjps
ZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdl
LT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2JqZWN0QXRJbmRleDppXSk7Cisg
ICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2Ut
PmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmplY3RBdEluZGV4OmldKTsKICAg
ICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOlt0eXBlcyBvYmplY3RBdEluZGV4OmldXTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTQ0NTYsNyArNDQ1Niw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldEZp
bGVBbmRVUkxUeXBlcyhOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5T
CiAgICAgbV9wcm9taXNlZFVSTCA9IHVybDsKIH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJv
bWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW5h
bWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwg
TlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogYXJjaGl2ZUJ1ZmZl
ciwgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU1N0cmluZyAqb3JpZ2luSWRlbnRpZmllcikK
K3ZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdl
KiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmlu
ZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBhcmNoaXZlQnVmZmVyLCBOU1N0cmluZyAqcGFzdGVib2Fy
ZE5hbWUsIE5TU3RyaW5nICpvcmlnaW5JZGVudGlmaWVyKQogewogICAgIE5TUGFzdGVib2FyZCAq
cGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhOYW1lOnBhc3RlYm9hcmRO
YW1lXTsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHR5cGVzID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6V2ViQ29yZTo6bGVnYWN5RmlsZXNQ
cm9taXNlUGFzdGVib2FyZFR5cGUoKSwgbmlsXSk7CkBAIC00NjEzLDcgKzQ2MTMsNyBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoV2ViQ29yZTo6RE9NUGFzdGVBY2Nl
c3NDYXRlZ29yeSBwYXN0ZUFjYwogICAgIGhpZGVET01QYXN0ZU1lbnVXaXRoUmVzdWx0KFdlYkNv
cmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdlc3R1cmUpOwogCiAgICAgTlNE
YXRhICpkYXRhID0gW3Bhc3RlYm9hcmRGb3JBY2Nlc3NDYXRlZ29yeShwYXN0ZUFjY2Vzc0NhdGVn
b3J5KSBkYXRhRm9yVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5
cGUoKSldOwotICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEpOworICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSk7CiAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpm
cm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgPT0gb3JpZ2luSWRlbnRpZmll
cikgewogICAgICAgICBtX3BhZ2UtPmdyYW50QWNjZXNzVG9DdXJyZW50UGFzdGVib2FyZERhdGEo
cGFzdGVib2FyZE5hbWVGb3JBY2Nlc3NDYXRlZ29yeShwYXN0ZUFjY2Vzc0NhdGVnb3J5KSk7CiAg
ICAgICAgIGNvbXBsZXRpb24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6R3JhbnRl
ZEZvckdlc3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMzkzMjBjYWRlYmEyNjEwNWNiMDljODE0
MTJiMTNkZmEzNjc2MDVkMy4uYjExZjJkNTNjZmZhODVmOTZmMjc0MTFkOWQyZGIwN2Q5NmEwN2Mz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCkBAIC0zMzUsMTAgKzMzNSwxMCBAQCBEb3dubG9hZFByb3h5JiBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3dubG9hZFByb3h5KFdlYnNpdGVEYXRhU3RvcmUm
IGRhdGFTdAogICAgIHJldHVybiBtX2Rvd25sb2FkUHJveHlNYXAtPmNyZWF0ZURvd25sb2FkUHJv
eHkoZGF0YVN0b3JlLCBwcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1ZXN0LCBmcmFtZUluZm8sIG9y
aWdpbmF0aW5nUGFnZSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFJl
c291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFJlc291cmNlKFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlcXVlc3RSZXNv
dXJjZShwYWdlSUQsIHNlc3Npb25JRCwgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZShy
ZXF1ZXN0Lmh0dHBCb2R5KCkpKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildIChJUEM6OkRhdGFSZWZlcmVuY2UmJiBkYXRhLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiBlcnJvcikgbXV0
YWJsZSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92
ZShlcnJvcikpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA3MGI1N2I1NDQ1MzkyNjUzYjQy
NmFkNzg4ZmIxMTIyNWI3OTJhZDkyLi5hZjZjZWQ5ZTcxZDk2ZTFmZGM4MDIwNzhjYTFhMzI2MTFm
ZjliMmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaApAQCAtNjUsNyArNjUsNyBAQCBjbGFzcyBTZXNzaW9uSUQ7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwotY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBy
b3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGVudW0gY2xhc3MgU2hvdWxk
U2FtcGxlIDogYm9vbDsKQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgTWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5JiYpOwog
CiAgICAgRG93bmxvYWRQcm94eSYgY3JlYXRlRG93bmxvYWRQcm94eShXZWJzaXRlRGF0YVN0b3Jl
JiwgV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBGcmFtZUluZm9EYXRhJiwgV2ViUGFnZVByb3h5KiBvcmlnaW5hdGluZ1BhZ2UpOwotICAgIHZv
aWQgcmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklE
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RS
ZXNvdXJjZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiYpPiYmKTsKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Np
b25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZl
dGNoT3B0aW9uPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSk+JiYpOwogICAg
IHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CmluZGV4IGVkOWQ4MzM3ZjQ3NGY3NzhlZjc2YjE5NGM2OTIwYTExODRmMmE0MDkuLjljNjU2MTdi
ODk2YjE1ZjlmNDdhMWQxNDQ4MGY2ZTM1Y2I2ZWZmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmgKQEAgLTMyOSw3ICszMjksNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFVT
RShBUFBLSVQpCi0gICAgdmlydHVhbCB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgaW1h
Z2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9u
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2
aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIs
IGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0
cmluZyYgb3JpZ2luSWRlbnRpZmllcikgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIFdlYkNv
cmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmKSA9IDA7CkBAIC00NjksNyArNDY5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBp
c0ZvY3VzaW5nRWxlbWVudCgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaW50ZXJwcmV0S2V5RXZl
bnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRl
cmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2
ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBp
Y2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwg
V2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0
IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeShXZWJLaXQ6OlRh
cElkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IDcwN2ZkMmRlN2I3YWMwYjI2MmZkMGY3NjczYzI4OWQ4ODIzYWJlMTAuLjg5NWU3Yjhj
ZDViOTM5OTI2NDkzNjE1ZDhmNzc1NmNmNTg3YTg2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjM3Nyw3ICs2Mzc3LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRvd25sb2FkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBD
b21wbGV0aW8KICAgICBkb3dubG9hZC5zZXREaWRTdGFydENhbGxiYWNrKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RSZXNvdXJjZShX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlc291cmNlKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHdlYnNpdGVEYXRhU3Rv
cmUoKS5uZXR3b3JrUHJvY2VzcygpLnJlcXVlc3RSZXNvdXJjZShpZGVudGlmaWVyKCksIHNlc3Np
b25JRCgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDkwMjM3YWU1NWZmOTNk
ZTViOTQ3OTE2OTZlMTM5YWIxNWUzODczNGQuLjBmODhiYjViNzllYmM2ZmEyYTllODk2NTQzMzE0
ZjAyMDI4ZjY1ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0y
NTksNyArMjU5LDcgQEAgY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNs
YXNzIFJ1bkxvb3BPYnNlcnZlcjsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1jbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0OwogY2xhc3MgVGV4dEluZGljYXRvcjsKIGNsYXNzIFZhbGlkYXRpb25CdWJi
bGU7CkBAIC0xMTgzLDcgKzExODMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclVJUHJv
Y2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBlbGVtZW5U
b2tlbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB3aW5kb3dUb2tlbik7CiAgICAgYm9vbCBy
ZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7
CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKTsKICAgICB2b2lkIGFz
c2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsKIApAQCAtMTM3NSw3ICsxMzc1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJv
eHkmKTsKICAgICB2b2lkIHJlc3VtZURvd25sb2FkKGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0
YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJv
eHkqKT4mJik7CiAgICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmKTsKLSAgICB2
b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmKTsK
KyAgICB2b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+JiYpOwogCiAg
ICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlv
bik7CiAgICAgdm9pZCBjaGFuZ2VTcGVsbGluZ1RvV29yZChjb25zdCBTdHJpbmcmIHdvcmQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCBlZDhj
YjY1M2VjZmRkMTM0NzNlZTFkMmFmNTBiYWE3YTZmN2ExMDEyLi5lMTI2NGNlMjFiYTU3ZjJhNDI3
NDhlMzNhMWRhZDg4YTBlMjU4YmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFz
azo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSAt
PiBFCiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKLWF1dG8gV2ViVVJMU2No
ZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4
Y2VwdGlvblR5cGUKK2F1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCiB7CiAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5oCmluZGV4IGRkNmI3MjQxMGFkZDRlZjYzMWQyODA2OWUxNGEzZjJhMDBj
NWNjYjIuLmY2ZmY0NmVlYTVmMjkwYjdiN2UzZmU1OTIxZGY5ZjE5NGJhY2QxMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTgzLDcgKzgzLDcgQEAg
cHVibGljOgogICAgIEV4Y2VwdGlvblR5cGUgd2lsbFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCAgRnVuY3Rp
b248dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIEV4Y2VwdGlvblR5
cGUgZGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBFeGNlcHRpb25U
eXBlIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIEV4
Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpOwogICAgIEV4Y2VwdGlvblR5cGUgZGlkQ29tcGxldGUoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpOwogCiAgICAgdm9pZCBzdG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkLmgKaW5kZXggNzg2NmNkYjE3NzQ2MDA3YWIwYTdhMTdjNTViODdjN2Yx
NjRjMmJhZS4uNzI3OWY4NDRjYzJiYmQyYjAxN2ZlMGYwOTdkZTAxODcwYTlhODUyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaApAQCAtMzYsNyArMzYsNyBAQCB0eXBl
ZGVmIHN0cnVjdCBfR3RrQ2xpcGJvYXJkIEd0a0NsaXBib2FyZDsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTUsNyAr
NTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb3JtYXRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPFN0cmluZz4mJik+JiYpOwogICAgIHZvaWQgcmVhZFRleHQoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcmJik+JiYpOwogICAgIHZvaWQgcmVhZEZpbGVQYXRocyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2b2lkIHJlYWRCdWZmZXIo
Y29uc3QgY2hhciosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJik+JiYpOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBjaGFyKiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYp
OwogICAgIHZvaWQgd3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmKTsKICAgICB2b2lkIGNs
ZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9h
cmRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNw
cAppbmRleCBjMmJmNTE4M2IzMGYxMGU5ZWI3ODEzY2RhZGEyMjNlOTE4OWM3NDU5Li41OTY2ZDU1
NzRjMjgyZjUzMTY5NDA5NjA4Mjk2MGFlMzM5Y2ExMTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCkBAIC0xMjYsMTUgKzEyNiwxNSBAQCB2b2lk
IENsaXBib2FyZDo6cmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxT
dHJpbmc+JiYpPiYmIGNvbXBsZQogc3RydWN0IFJlYWRCdWZmZXJBc3luY0RhdGEgewogICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJB
c3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKT4mJiBoYW5kbGVyKQorICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJBc3luY0RhdGEoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+
JiYgaGFuZGxlcikKICAgICAgICAgOiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIp
KQogICAgIHsKICAgICB9CiAKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKKyAgICBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4gY29tcGxl
dGlvbkhhbmRsZXI7CiB9OwogCi12b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFy
KiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihj
b25zdCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGd0
a19jbGlwYm9hcmRfcmVxdWVzdF9jb250ZW50cyhtX2NsaXBib2FyZCwgZ2RrX2F0b21faW50ZXJu
KGZvcm1hdCwgVFJVRSksIFtdKEd0a0NsaXBib2FyZCosIEd0a1NlbGVjdGlvbkRhdGEqIHNlbGVj
dGlvbiwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlYWRC
dWZmZXJBc3luY0RhdGE+IGRhdGEoc3RhdGljX2Nhc3Q8UmVhZEJ1ZmZlckFzeW5jRGF0YSo+KHVz
ZXJEYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJv
YXJkR3RrNC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5j
cHAKaW5kZXggMDdhYmI3MTMxOTg4NTNiNzg3YzYzMjRiZDQ4MGIxZTA4OGEyYTNkMy4uNWI4MWZh
OGYyOWQzZjdjZjFjM2YwOWQxZmMzYzg4NzM0ZGM1MWEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcApAQCAtMTIwLDE1ICsxMjAsMTUgQEAgdm9p
ZCBDbGlwYm9hcmQ6OnJlYWRGaWxlUGF0aHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U3RyaW5nPiYmKT4mJiBjb21wbGUKIHN0cnVjdCBSZWFkQnVmZmVyQXN5bmNEYXRhIHsKICAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAKLSAgICBleHBsaWNpdCBSZWFkQnVmZmVy
QXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJik+JiYgaGFuZGxlcikKKyAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRhKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
PiYmIGhhbmRsZXIpCiAgICAgICAgIDogY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVy
KSkKICAgICB7CiAgICAgfQogCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+IGNvbXBs
ZXRpb25IYW5kbGVyOwogfTsKIAotdm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hh
ciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIo
Y29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBj
b25zdCBjaGFyKiBtaW1lVHlwZXNbXSA9IHsgZm9ybWF0LCBudWxscHRyIH07CiAgICAgZ2RrX2Ns
aXBib2FyZF9yZWFkX2FzeW5jKG1fY2xpcGJvYXJkLCBtaW1lVHlwZXMsIEdfUFJJT1JJVFlfREVG
QVVMVCwgbnVsbHB0ciwgW10oR09iamVjdCogY2xpcGJvYXJkLCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggNWM4ZTNiOTJmMDg5OTJlZjRkYWQ2MmIxNzdhODJm
MzE2MDhiYmIyNy4uM2IwNGE4MzNkYmUwYjZiNjZlZTE0ZDNjMzAwZjMwNjg3MThiZjJjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAg
LTE4OCw3ICsxODgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkg
b3ZlcnJpZGU7CiAgICAgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXli
b2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwb3NpdGlv
bkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2F2ZUltYWdl
VG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0
aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCmluZGV4IGI2ODRlMWM5NGVhY2I2NzI4YmIxMzA2OGNiNjk1MjI3MDFmYThmODMu
LmZhYzllN2ZiNzhiZWUwZjYyOTQ1NjcyZTNiYjc0YjllMDUyMGUzMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTM1Nyw3ICsz
NTcsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdl
KGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdAogICAgIFttX2NvbnRlbnRWaWV3IF9wb3Np
dGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlOmluZm9dOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBs
OjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgaW1hZ2VC
dWZmZXIpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKIHsKICAgICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURh
dGEgPSBpbWFnZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgVUlJbWFnZURhdGFXcml0ZVRv
U2F2ZWRQaG90b3NBbGJ1bShpbWFnZURhdGEuZ2V0KCksIG5pbCwgTlVMTCwgTlVMTCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQppbmRleCA5OWFlZDAzNjg4ZTBlNWM2MTc0NzkwZmRkZDhkMjUwZTlhYjcwYTJlLi4x
MmYzYTE1YTQzYjhhYzRkMTUxZmYzMDNjM2M1Zjc3ZDEzNTMwY2JlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
QEAgLTM4NDIsNyArMzg0Miw3IEBAIC0gKEJPT0wpY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6
KFNFTClhY3Rpb24gd2l0aFNlbmRlcjooaWQpc2VuZGVyCiAKICAgICAgICAgTlNBcnJheSAqYWxs
Q3VzdG9tUGFzdGVib2FyZERhdGEgPSBbcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6
QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpIGluSXRlbVNldDpp
bmRpY2VzXTsKICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gYWxsQ3VzdG9tUGFzdGVib2Fy
ZERhdGEpIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgICAgIGlmIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9y
aWdpbigpID09IGZvY3VzZWREb2N1bWVudE9yaWdpbikKICAgICAgICAgICAgICAgICByZXR1cm4g
WUVTOwogICAgICAgICB9CkBAIC02NjUwLDcgKzY2NTAsNyBAQCBzdGF0aWMgQk9PTCBhbGxQYXN0
ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdpbihVSVBhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIGNv
bnN0CiAgICAgICAgIGlmICghZGF0YS5sZW5ndGgpCiAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhKTsKICAgICAgICAgaWYgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkgIT0gb3JpZ2luSWRlbnRp
ZmllcikKICAgICAgICAgICAgIHJldHVybiBOTzsKIApAQCAtNzYyMyw3ICs3NjIzLDcgQEAgLSAo
dm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lz
dGFudCBzaGFyZUVsZW1lbnRXaXQKIHsKICAgICBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2Vk
VVJMIHNoYXJlRGF0YTsKICAgICBOU1N0cmluZyogZmlsZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIiVALnBuZyIsIChOU1N0cmluZyopV0VCX1VJX1NUUklORygiU2hhcmVkIElt
YWdlIiwgIkRlZmF1bHQgbmFtZSBmb3IgdGhlIGZpbGUgY3JlYXRlZCBmb3IgYSBzaGFyZWQgaW1h
Z2Ugd2l0aCBubyBleHBsaWNpdCBuYW1lLiIpXTsKLSAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsg
ZmlsZU5hbWUsIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdl
UE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CisgICAgc2hhcmVEYXRhLmZpbGVzID0geyB7
IGZpbGVOYW1lLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVz
ZW50YXRpb24oaW1hZ2UpKSB9IH07CiAgICAgW3NlbGYgX3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0
YSBpblJlY3Q6IHsgW3NlbGYgY29udmVydFJlY3Q6Ym91bmRpbmdSZWN0IHRvVmlldzpzZWxmLndl
YlZpZXddIH0gY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggN2E4ZmFjZDMxN2EwNjM5NmQ2
M2I4ZGVlYzY1NzFlNTUxM2VjNDk1Zi4uZGQ4Mjk1M2I5MGY0ZjEzYmRiOGNhNzZjNDI4ZDBjMDcy
YzBjNWRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCkBAIC0xMzgsNyArMTM4LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJp
bmcmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCmluZGV4IDk2
YmY0MjhiMTliNWJhOWQ3NDZhM2VhMTExNTFiZDNjYWZiMTZkZWMuLjgzZGI3NmUwZDAxZmUyNmY2
YWFjMmY5YmRkN2JjZDA2ZjAwZTg1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCkBAIC0xMDAsOCArMTAwLDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhVbmRvT3JSZWRvKSBvdmVycmlkZTsKICAgICBib29sIGV4
ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpIG92ZXJy
aWRlOwogICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3Qg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFBy
b21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAotICAgICAgICBj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRl
bnRpZmllcikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsCisgICAgICAgIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRp
Zmllcikgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCByZXNldFNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lk
IG5vdGlmeUlucHV0Q29udGV4dEFib3V0RGlzY2FyZGVkQ29tcG9zaXRpb24oKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQpp
bmRleCA2MjkwYTgwOTBlMzU5YjYzMDIwOGRiNzEyNjkyNDA3NGQxYzVkN2MyLi40YTA4MGIyYzE3
MTUxNDVjNDE3MmY4NzkwOGFiNGUxYjk3OTI4Y2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCkBAIC00MDAsNyArNDAwLDcgQEAgdm9p
ZCBQYWdlQ2xpZW50SW1wbDo6c3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiBpdGVt
LCBjb25zdCBTaGFyZWFibGVCaXQKICAgICBtX2ltcGwtPnN0YXJ0RHJhZyhpdGVtLCBpbWFnZSk7
CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIs
IGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJM
LCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luSWRlbnRpZmllcikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0YUZvcklt
YWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcm
IGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYXJj
aGl2ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQogewogICAgIGF1dG8g
aW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgaW1hZ2UtPnNldERhdGEoV1RGTW92
ZShpbWFnZUJ1ZmZlciksIHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0KaW5kZXggY2E2Yjg3M2IxYzgzZjVhNTA3Yjg1ZWEwZmYzMWNlZGFk
ZDFhYWIwYS4uYjRjZWFlZTY3MzljMDM1NDE1YmUyODJkYzRiOTY4NDVjZjFlYTc5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yMjcs
NyArMjI3LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCgpCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFMKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBzaGFyZWRNZW1v
cnlJbWFnZS0+Y3JlYXRlU2hhcmVkQnVmZmVyKGltYWdlSGFuZGxlLmRhdGFTaXplKTsKIAotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVCdWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGFyY2hpdmVCdWZmZXI7CiAgICAgaWYgKCFhcmNoaXZlSGFuZGxlLmhh
bmRsZS5pc051bGwoKSkgewogICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUFyY2hpdmUgPSBTaGFy
ZWRNZW1vcnk6Om1hcChhcmNoaXZlSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uOjpSZWFkT25seSk7CiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5QXJjaGl2ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAppbmRleCBm
YTk0MDI1ZWQ3NDczMGQyOGU3MTY0NjI4NWY5ZTViYTY1M2I4ZjEyLi5jMjhmZTY1ZjBjZjE2NDM5
OTgxOGFjYTMyZjk4MWNjNzc4ZjFlOTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCkBAIC04NCw3ICs4NCw3IEBAIGJvb2wgUmVtb3Rl
Q0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lv
blR5cGUmLCBjb25zCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbW90ZUNETTo6c3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEpIGNvbnN0Citib29sIFJlbW90ZUNETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9t
U3RyaW5nJiB0eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKSBjb25zdAog
ewogICAgIC8vIFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwgaW5zaWRlIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZSgpLgogICAgIHJldHVybiB0cnVl
OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgUmVtb3RlQ0RNOjpsb2FkQW5kSW5pdGlhbGl6ZSgp
CiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6TG9hZEFuZEluaXRpYWxpemUoKSwgbV9pZGVudGlm
aWVyKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3Bv
bnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIC8vIFRoaXMgY2hlY2sgd2ls
bCBiZSBkb25lLCBsYXRlciwgaW5zaWRlIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1
cGRhdGVMaWNlbnNlKCkuCiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCmluZGV4IDBhZGRmODMzNTNi
NmVhMWIyZThiMDJjNmI3ZWUzZGFmNDY4Y2QzODMuLjhjNDU0ZWI4M2U1OTk0YThlNGQ1OTJkNTFk
ZjkxZmY5YjUyM2NiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE0uaApAQCAtNDgsMTMgKzQ4LDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdXBw
b3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
biYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3Ry
aWN0aW9ucyhjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3Qg
V2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0
c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5
cGUmLCBjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmlu
YWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVudCBkaXN0aW5j
dGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFs
OwogICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50
KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3Jl
OjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBib29sIGRpc3RpbmN0aXZlSWRl
bnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUoY29uc3QgV2ViQ29yZTo6Q0RN
S2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxXZWJDb3Jl
OjpDRE1JbnN0YW5jZT4gY3JlYXRlSW5zdGFuY2UoKSBmaW5hbDsKICAgICB2b2lkIGxvYWRBbmRJ
bml0aWFsaXplKCkgZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNw
b25zZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7
CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0IGZpbmFsOwogCiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXRE
YXRhVHlwZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVk
SW5pdERhdGFUeXBlczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcAppbmRleCBiNWRlYTIxZTk5NWE3MzdmMDM2
ZjY0NTM4YzFmYjNlY2I1ZTZiYjU1Li5hMTNlNTE0NjBmNmJiOWY4MGVmM2QxYTg0MmVmYzBiOWY0
NDU5MGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFJlbW90ZUNE
TUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RN
S2V5U3lzdGVtQwogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5
OjpJbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgZGlzdGluY3RpdmVJ
ZGVudGlmaWVycywgcGVyc2lzdGVudFN0YXRlKSwgV1RGTW92ZShjYWxsYmFjayksIG1faWRlbnRp
Zmllcik7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRl
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFj
ayYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNh
dGUoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1
Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9mYWN0b3J5KSB7CiAgICAg
ICAgIGNhbGxiYWNrKEZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKaW5kZXggMTA2YmEzYjExNjFjOGRmMDlk
NzFkZmU2NzliYTMzZDQyMzA3OWU5Ni4uMmM3ODUxZTQ0MGIwOGE1MmEyYWU3MGRhN2U0MTg4ODJl
M2M2MTQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2UuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogCiAgICAg
SW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6UmVtb3RlOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0
aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYs
IEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nl
c3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2
b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmtleVN5c3RlbTsgfQogICAg
IFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAppbmRleCBhZjBiYWQ0YzkwZDhkZDUxMzc3
NGFlZjZhMTViNzdiYTg5ZmM1MDY0Li5jNzQwYzA0NTA2ZmRlZGFjOWY0Y2Y1MDJjMjA1YThhMzdm
Y2E0NTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCkBAIC00OSw3ICs0OSw3IEBA
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQ
dHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmCiB7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYm
IGNhbGxiYWNrKQogewogICAgIGlmICghbV9mYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNlLCBGYWlsZWQpOwpAQCAt
NjUsNyArNjUsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZwogICAgIH0sIG1faWRlbnRpZmll
cik7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVy
PiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNw
b25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2Zh
Y3RvcnkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCk7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkLCBMaWNlbnMKICAgICB9CiAKICAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSks
IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoS2V5U3RhdHVzVmVjdG9yJiYgY2hhbmdl
ZEtleXMsIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiYmIG1lc3NhZ2UsIGJv
b2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVk
QnVmZmVyPj4gcmVhbE1lc3NhZ2UgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiByZWFsTWVzc2FnZSA9IHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgaWYgKG1lc3NhZ2UgJiYgbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpKQogICAg
ICAgICAgICAgcmVhbE1lc3NhZ2UgPSBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkucmVsZWFzZU5v
bk51bGwoKTsKICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUo
cmVhbE1lc3NhZ2UpLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmgKaW5kZXggNGZmZTRjYWNlY2NkZTQzZDVjYjExZTIzNmNhMDQ1YWNkYTgz
YTdlYi4uNGU0Y2QyYzAwNWM2YjAwNjVmOWNkYjE4OGM0YmNlMGI1YmZhNjYwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5oCkBAIC01OSw4ICs1OSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHNldENsaWVudChXZWFrUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudD4mJiBj
bGllbnQpIGZpbmFsIHsgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7IH0KICAgICB2b2lkIGNs
ZWFyQ2xpZW50KCkgZmluYWwgeyBtX2NsaWVudCA9IG51bGxwdHI7IH0KLSAgICB2b2lkIHJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBm
aW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExp
Y2Vuc2VUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNl
VXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwor
ICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5
cGUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNl
VHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBMb2Fk
U2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lk
IHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwg
UmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNw
cAppbmRleCA5YTIxOWE1NDRlNTUzODNmNTRlNzFkYWJkMzU0Y2M0NDBhNDE0MmI5Li42MjkyNjc5
OGM1YzExMzI0YTMxYWE1MGNkYTdlZDFmYmY3NGZlNzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYu
Y3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldEV4
cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUKIAogLy8gSWYg
YWxsRGF0YVJlY2VpdmVkIGlzIHRydWUsIHRoZSBjYWxsZXIgZXhwZWN0cyBlbmNvZGVkRGF0YVN0
YXR1cygpIHRvIGJlID49IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlCiAvLyBhZnRl
ciB0aGlzIGZ1bmN0aW9uIHJldHVybnMgKGluIHRoZSBzYW1lIHJ1biBsb29wKS4KLXZvaWQgUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RGF0YShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAo
IW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFW
Ri5oCmluZGV4IGU1Y2ZlOTRlY2QzYTljMDYwMGZjMDAzMjBmZjQzMDYxYzkwZWQ2OWIuLjQwZDM3
MzRmN2EzMjJlOGJhY2I5ZDFjMGRlYTcwNzllMmFkMTdlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYu
aApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBSZW1vdGVJbWFnZURlY29kZXJBVkYgZmluYWwKICAg
ICA6IHB1YmxpYyBXZWJDb3JlOjpJbWFnZURlY29kZXIKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJl
bW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlKFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIm
IG1hbmFnZXIsIGNvbnN0IFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXImIGlkZW50aWZp
ZXIsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCisgICAg
c3RhdGljIFJlZjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZShSZW1vdGVJbWFnZURlY29k
ZXJBVkZNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlm
aWVyJiBpZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJl
bW90ZUltYWdlRGVjb2RlckFWRihtYW5hZ2VyLCBpZGVudGlmaWVyLCBtaW1lVHlwZSkpOwogICAg
IH0KQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQ
dHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBXZWJDb3JlOjpTdWJzYW1wbGluZ0xl
dmVsID0gV2ViQ29yZTo6U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgV2ViQ29yZTo6
RGVjb2RpbmdPcHRpb25zJiA9IFdlYkNvcmU6OkRlY29kaW5nT3B0aW9ucyhXZWJDb3JlOjpEZWNv
ZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29u
dGVudFNpemUobG9uZyBsb25nKSBmaW5hbDsKLSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0
YShXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
IGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUo
c2l6ZV90KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKaW5k
ZXggNDFkNTM4ODAyM2QzOTE0OTUyMTgzNWY2ODhkZTRkNDhmNjVkNzY3ZS4uMDgyYjMzNjZjOGJj
NzEzMGQ3NWQ1Njk4YTdkNzllNjg5MmFkOGY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFW
Rk1hbmFnZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6Y3JlYXRlSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQor
UmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdl
cjo6Y3JlYXRlSW1hZ2VEZWNvZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBzdGQ6Om9w
dGlvbmFsPEltYWdlRGVjb2RlcklkZW50aWZpZXI+IGltYWdlRGVjb2RlcklkZW50aWZpZXI7CiAg
ICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UgeyBkYXRhIH07
CkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpz
ZXRVc2VHUFVQcm9jZXNzKGJvb2wgdXNlR1BVUHJvY2VzcykKICAgICBJbWFnZURlY29kZXI6Omlu
c3RhbGxGYWN0b3J5KHsKICAgICAgICAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzdXBwb3J0c01l
ZGlhVHlwZSwKICAgICAgICAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpjYW5EZWNvZGVUeXBlLAot
ICAgICAgICBbdGhpc10oU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pIHsKKyAgICAgICAgW3RoaXNdKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikgewogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUltYWdlRGVjb2RlcihkYXRhLCBtaW1l
VHlwZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICAgICAg
fQogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaAppbmRleCBjMjM3ODJi
NjUwNGVjNzliZTQ2ZTEyNmY0ZTU5MWIzZmY3ZjZkYmE4Li4zNjE4YWZkMTIwOThiNTU3NmI0ZGQ0
ZmZiZjNjMDZmYmE4NDJhNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaApA
QCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGVuc3Vy
ZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFJlbW90ZUlt
YWdlRGVjb2RlckFWRj4gY3JlYXRlSW1hZ2VEZWNvZGVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6QWxwaGFPcHRpb24sIFdlYkNv
cmU6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBSZWZQdHI8UmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGPiBjcmVhdGVJbWFnZURlY29kZXIoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6QWxwaGFPcHRpb24s
IFdlYkNvcmU6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIC8vIEdQVVByb2Nl
c3NDb25uZWN0aW9uOjpDbGllbnQuCiAgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENs
b3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlLmNwcAppbmRleCA5NjZmYzkzYjc3YWZhYTNlNjIwOGQ3YWJhNWFlZDJjN2E5NGM3NGIyLi4w
MDVhMzdjYzI2ZWM0YzA5MDFiZjRmMzcxMjIzODY1ZGUyZDE2NmJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgU291cmNlQnVmZmVyUHJpdmF0ZVJl
bW90ZTo6flNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUoKQogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3Jl
bW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKLXZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZTo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3Zv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6YXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDM2MDE3NWJmYmU5
ZDFhZjgzZWQ1NzkxMzczYjc3NWVlNzUwYWM3Y2MuLmVhNWZhM2VjMzZjMmI4NTllZTU3OGNjZDBl
MDM0OGM3M2NiODZkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCkBAIC03Miw3ICs3
Miw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcwog
ICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wpIGZpbmFsOwotICAgIHZvaWQgYXBwZW5kKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kKFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmlu
YWw7CiAgICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVk
RnJvbU1lZGlhU291cmNlKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAKaW5kZXggMTFi
NGE4NmU0ODUyZjZjMjA2MWZhM2ZjOWFmMjlmODg5OWY0ZWI5Zi4uYjQwODlmZDM1NDhjOTdmMTdm
YzJiOWZiMDAyNzgwZDY0M2NmMjNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcApAQCAtMTY1
LDEwICsxNjUsMTAgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c3RvcmFnZUNoYW5nZWQo
U2hhcmVkTWVtb3J5KiBzdG9yYWdlLCBjb25zdCBXZWJDb3JlOjoKICAgICBtX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OkF1ZGlvU2FtcGxlc1N0b3JhZ2VD
aGFuZ2VkIHsgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGRhdGFT
aXplIH0sIGZvcm1hdCwgZnJhbWVDb3VudCB9LCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3Vi
bGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6ZmV0
Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OkZldGNoRGF0YSB7IH0sIFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtaW1lVHlwZSA9IG1pbWVUeXBlKCld
KGF1dG8mJiBkYXRhLCBkb3VibGUgdGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBidWZmZXI7CiAgICAgICAgIGlmIChkYXRhLnNpemUoKSkKICAgICAgICAgICAgIGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSwgbWltZVR5cGUsIHRpbWVDb2Rl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlh
UmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9N
ZWRpYVJlY29yZGVyUHJpdmF0ZS5oCmluZGV4IDMwM2E1NGY3NmYxODVlOTY0NTRlZjlmNWJiNDYx
ZjI4ZTEyNjc4NmQuLjU3NmZkMWM2ZTk3YzBjYWQ4Y2JmZWM5NGUzYmQzNjMzMDc2ZTQ0ZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3Jk
ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVk
aWFSZWNvcmRlclByaXZhdGUuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIC8vIFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlCiAgICAgdm9pZCB2aWRlb1NhbXBs
ZUF2YWlsYWJsZShXZWJDb3JlOjpNZWRpYVNhbXBsZSYsIFdlYkNvcmU6OlZpZGVvU2FtcGxlTWV0
YWRhdGEpIGZpbmFsOwotICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
ZG91YmxlKT4mJikgZmluYWw7CisgICAgdm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJikgZmluYWw7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5n
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAgICAgdm9pZCBzdGFydFJlY29y
ZGluZyhTdGFydFJlY29yZGluZ0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgYXVkaW9TYW1w
bGVzQXZhaWxhYmxlKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29uc3QgV2ViQ29yZTo6UGxhdGZv
cm1BdWRpb0RhdGEmLCBjb25zdCBXZWJDb3JlOjpBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6
ZV90KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JD
bGllbnQuaAppbmRleCAyYzEzNGU5ZTcxOWY5NzI2NWM4ZDA5MDMzNDljMWUyZjljMWUyZTg0Li4w
MzUzYWFiZjdkNGI5MjVhYTJmMTU2MmQ1NzNhYWYzMDkzYzgzYmM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxl
RWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCkBAIC0zMSw3ICszMSw3IEBA
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
LWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFz
cyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgTm9kZTsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsK
QEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2UoV2Vi
S2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBh
Z2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6
U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0
OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
PiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6Oldl
YlBhZ2UmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYktpdDo6
V2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1w
bGVSYW5nZSYsIGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggYTA2MzUyMDQz
MzViM2FiMGU2ZGZiMGM2Nzc3NjdmNDI4ZThhNzdlMi4uMTgwYjExMTFlY2YwMTEzMjgwOTI2NmEx
YmNlMjdkMjYwZTRmYTAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIERPTVdpbmRv
d0V4dGVuc2lvbjsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIFJlc291cmNlRXJyb3I7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU2LDcgKzU2
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflBhZ2VMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7
CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIEFQSTo6T2JqZWN0KikgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3Qg
V1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6VVJMJiwgQVBJOjpP
YmplY3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJLaXQ6
OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIGNvbnN0IFdURjo6VVJMJiwgQVBJOjpPYmplY3QqKSB7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktp
dDo6V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktp
dDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggZGY4ZDg4MDQ3ZmY2NzMxN2Ni
NGFiZmUzNTEzMDVhMDc1YTBjM2FiZi4uYmM4ZWFiOTg3OWJlODBkODUxYjAwMWMyMDBjMGYxODU3
YTZjN2EyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dL
V2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNjM0LDcgKzYz
NCw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJ
bkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAgICAgICBbbV9jb250cm9sbGVy
LT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyOm1fY29udHJvbGxlciB3aWxsV3JpdGVSYW5nZVRvUGFzdGVib2FyZDp3cmFwcGVy
KFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICB9CiAKLSAgICAg
ICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAorICAgICAgICB2b2lkIGdldFBhc3Rl
Ym9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0
YSkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5n
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTY0
Miw3ICs2NDIsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nl
c3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwogICAgICAgICAgICAgYXV0byBk
YXRhQnlUeXBlID0gW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgcGFzdGVib2Fy
ZERhdGFGb3JSYW5nZTp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSld
OwogICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqdHlwZSBpbiBkYXRhQnlUeXBlKSB7CiAgICAg
ICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlKTsKLSAgICAgICAgICAgICAg
ICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKKyAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0
YS5hcHBlbmQoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkp
OwogICAgICAgICAgICAgfTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCmluZGV4IGMzOTgxMWVhYzk0ZTI5NWUzODMzYmZjZGQ2
YzE4MmE0YTMxMDE5OWIuLjM1MzYwNjUyNWI4NDU3NjhlMzAxNTgzOGY4OTExZGU4ZjJlMDgwOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBA
IC0xMzUsNyArMTM1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6Ondp
bGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiBwYWdlLCBjb25zdAogICAgICAgICBtX2NsaWVu
dC53aWxsV3JpdGVUb1Bhc3RlYm9hcmQodG9BUEkoJnBhZ2UpLCB0b0FQSShjcmVhdGVIYW5kbGUo
cmFuZ2UpLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2Vi
UGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRv
ckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQog
ewogICAgIGlmIChtX2NsaWVudC5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKSB7CiAgICAgICAg
IFdLQXJyYXlSZWYgdHlwZXMgPSBudWxscHRyOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdl
YlBhZ2UmIHBhZ2UsIGNvCiAgICAgICAgICAgICBwYXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUt
PnN0cmluZygpKTsKIAogICAgICAgICBmb3IgKGF1dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxlbWVu
dHNPZlR5cGU8QVBJOjpEYXRhPigpKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOwor
ICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRl
cygpLCBpdGVtLT5zaXplKCkpOwogICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdU
Rk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKaW5kZXggZDk4ZWUxYzE1NWQ0ZmI4MjkyYTU4ZDljNThl
ODgwMDdhMTM0MDUxYS4uMzFlMTM5NmU3MGFkNjBjMTlkOTNjNjc1Yzc2MzQ2ZmUwZGE3OTQ5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNjQs
NyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2hhbmdlKFdlYlBhZ2UmLCBjb25zdCBT
dHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0
aW9uKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAg
IHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwor
ICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmlu
YWw7CiAgICAgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3Vt
ZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYgZGVzdGluYXRpb24sIGJv
b2wgaXNNb3ZlKSBmaW5hbDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuY3BwCmluZGV4IGEzNGUyMTJkMDdhZjJmZjU3M2UxYThhMzQwZWMxZDNmY2Vi
NDJhMWEuLjk0ZmVkMmU3ZTM2MzAyOTFmOTlmNTM3OGFjYmRkMmMzOTUwZDNlNmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC02MiwxMCAr
NjIsMTAgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkVVJM
UmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXMKIHN0YXRpYyB2b2lkIHJlbGVhc2VTaGFy
ZWRCdWZmZXIodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiB7CiAgICAgLy8gQmFs
YW5jZWQgYnkgcmVmKCkgaW4gSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9h
ZERhdGFSZXF1ZXN0KCkuCi0gICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcio+KGRhdGEpLT5kZXJlZigpOworICAgIHN0YXRpY19jYXN0PGNvbnN0IFNoYXJlZEJ1ZmZl
cio+KGRhdGEpLT5kZXJlZigpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcm
IE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNo
YWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZm
ZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBj
b25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAg
aWYgKCFtX2NsaWVudC53aWxsTG9hZERhdGFSZXF1ZXN0KQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggMzZiZDk4MGIy
ZmFhMWFmNDVhYzMxMDZlYjAxZTlmMzc2YmExM2FjZi4uODYzYmRhYjYyODRjYTNhYWQyZjlkNWZm
ZjVmZDY4ZWFiOGIyYjczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KGNvbnN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJh
c2UqKTsKIAogICAgIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwotICAgIHZvaWQg
d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBX
VEY6OlN0cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgdm9p
ZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJp
bmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSYs
IFdlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSYs
IFdlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5jcHAKaW5kZXggOThhNmUyZTdiNTdlNTIzMThmNDJjOGNkMTdlNGYwZGUwNTA5NDA5
My4uMDIyNzBhNTNhZjliYThiZjgwZDdjM2IzZGNkYzhjZWI1NjUxNzZlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCkBAIC0yODMsNyArMjgzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LAogICAgIAogICAgIGF1dG8gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigp
OwogICAgIGlmICghYnVmZmVyKSB7Ci0gICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0
ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291cmNl
IHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGZyb20g
U2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHAKaW5kZXggODcyOThiMzcyNTA0OTg1NzFhZTQ4ZjhjOTIxODVlYjIwZTMxZGUxMi4u
MzEwZmNhNzg3NWMzMmMzY2Q3NDc4ZGI2NGY1OWFjMmNmNTAxNjM5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApA
QCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vCiAgICAgaWYgKEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UobV9jb3Jl
TG9hZGVyLT5mcmFtZSgpLCByZXNwb25zZSkpIHsKICAgICAgICAgYXV0byBpbnRlcmNlcHRlZFJl
cXVlc3RJZGVudGlmaWVyID0gbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCk7CiAgICAgICAgIG1f
aW50ZXJjZXB0Q29udHJvbGxlci5iZWdpbkludGVyY2VwdGluZ1Jlc3BvbnNlKGludGVyY2VwdGVk
UmVxdWVzdElkZW50aWZpZXIpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJL
aXQ6OmludGVyY2VwdFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJhbWUoKSwgcmVzcG9uc2UsIGlu
dGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgcG9saWN5RGVjaXNpb25Db21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcild
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGluc3BlY3RvclJlc3BvbnNlLCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBvdmVycmlkZURhdGEpIG11dGFibGUgeworICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJhbWUoKSwg
cmVzcG9uc2UsIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwgcG9saWN5
RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0
aW9uSGFuZGxlcildKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGluc3BlY3RvclJlc3BvbnNlLCBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIo
KSkgewogICAgICAgICAgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRS
ZWNlaXZlUmVzcG9uc2U6IG5vdCBjb250aW51aW5nIGludGVyY2VwdCBsb2FkIGJlY2F1c2Ugbm8g
Y29yZUxvYWRlciBvciBubyBJRCIpOwogICAgICAgICAgICAgICAgIG1faW50ZXJjZXB0Q29udHJv
bGxlci5jb250aW51ZVJlc3BvbnNlKGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIpOwpAQCAt
MTk1LDcgKzE5NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mg
c2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIp
OwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGlu
ZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7
CisgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29y
ZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQogICAgICAgICAgICAgICAgIGRpZFJl
Y2VpdmVEYXRhKHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRh
TGVuZ3RoKTsKQEAgLTI5NSwxMSArMjk1LDExIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kCiAg
ICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNvdXJjZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4x
KCkuZGF0YSgpKTsKICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2
ZVJlc291cmNlOiIpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxl
LnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAo
IWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZy
b20gU2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7Ci0g
ICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzb3VyY2U6
IFVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIik7CisgICAgICAgIFdFQlJFU09VUkNFTE9B
REVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciIpOwogICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBtX2NvcmVM
b2FkZXItPmZyYW1lKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBh
Z2UoKSkKICAgICAgICAgICAgICAgICBwYWdlLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxv
Z0RpYWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW50ZXJu
YWxFcnJvcktleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmNyZWF0ZVNoYXJl
ZEJ1ZmZlckZhaWxlZEtleSgpLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCA0MmRl
NDYxNDE5Nzc4YjdjNDUwZmNhMWViMDM3YzFjZTk3ZDJkNjMxLi5hN2Y0NWM4NDAxYjJmZDJmODcw
ZTM2NzhjNThmYzMxMGMyZTFmMjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC0yMDcsNyArMjA3LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sKSBmaW5hbCB7IH0KICAgICBi
b29sIGdldEZvcm1WYWx1ZShTdHJpbmcmIGZvcm1WYWx1ZSkgZmluYWwgeyByZXR1cm4gZmFsc2U7
IH0KICAgICBib29sIGhhbmRsZVNjcm9sbChXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNv
cmU6OlNjcm9sbEdyYW51bGFyaXR5KSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBmaW5h
bDsKICAgICB2b2lkIHdpbGxEZXRhY2hSZW5kZXJlcigpIGZpbmFsOwogICAgIGJvb2wgcGx1Z2lu
SGFuZGxlc0NvbnRlbnRPZmZzZXRGb3JBY2Nlc3NpYmlsaXR5SGl0VGVzdCgpIGNvbnN0IGZpbmFs
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0KaW5kZXggZDIzYWJiOWU2NTExYjEzYmJkNTIzYWY0NTFmNDQxNzg3M2E2YzFlMC4u
ZDQ3ZjMyYjdkNDkxOTU2YmRjZTc3YmZlNmYxNWNhNzg2NWJmZDE5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0yNTUyLDcg
KzI1NTIsNyBAQCB2b2lkIFBERlBsdWdpbjo6bm90aWZ5RGlzcGxheU1vZGVDaGFuZ2VkKGludCkK
ICAgICB1cGRhdGVTY3JvbGxiYXJzKCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBERlBs
dWdpbjo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gUERGUGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBOU0RhdGEg
KnBkZkRhdGEgPSBsaXZlRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbi5oCmluZGV4IDg4ZjQ1Y2U1MWNlMzFkZjBjNWIzYjc1ODYyMzZjM2YwZDljOTNhZDMu
LjU4ZDcwYTM5YTE2ZDZhNGMwZThiMGNhOWQwM2FjM2QzN2FlZGZjZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIElu
dFBvaW50OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBTY3JvbGxiYXI7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTI4OCw3ICsyODgsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBwb2ludEluTG9jYWxDb29yZGluYXRlcykgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3Jt
RGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpID0g
MDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAppbmRleCAwOGNmYmI1NTBlZGNiNTZjNTk5N2EwNDM2YzI5NjUzZWYwZTgwM2VmLi40ZDUzNzM0
NzI3MTM2Y2Q2ZjQxZTA5NzExZWI3YmZkMDM0N2Q0YjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtOTIzLDcgKzkyMyw3IEBAIHZv
aWQgUGx1Z2luVmlldzo6d2lsbERldGFjaFJlbmRlcmVyKCkKICAgICBtX3BsdWdpbi0+d2lsbERl
dGFjaFJlbmRlcmVyKCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6Omxp
dmVSZXNvdXJjZURhdGEoKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBs
dWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlmICghbV9pc0luaXRp
YWxpemVkIHx8ICFtX3BsdWdpbikgewogICAgICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9
PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggNzMyNzQxZDk1ZWU2YTJiNjU2ZjNkOGMwOGM4
YWZmYmE3ZTJmYWY2My4uZjc1YWM4OWJmMzlhNTFlMDE4ZDI2MmMwYmU3YzBhNjJkZWI2OTNhMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAt
MTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxkQWxsb3dTY3JpcHRpbmco
KTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEo
KSBjb25zdDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbGl2
ZVJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBB
dExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKICAgICBTdHJpbmcgZ2V0U2Vs
ZWN0aW9uRm9yV29yZEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIGNvbnN0Owog
ICAgIGJvb2wgZXhpc3RpbmdTZWxlY3Rpb25Db250YWluc1BvaW50KGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAK
aW5kZXggNDJlZDk3ZGU1ZGMwZmMwMmI5MzNmNGM1OTVmMmE5ZGI3ZTJkZGVjOS4uZWU0MGZiOTU4
NWU3OWQ4NmIzY2ZkMmY1NzllZDQ2ZTYxYjllYzYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBtX25lZWRzQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlk
UmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAg
IGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmgKaW5kZXggMmM3MzcxZjFkZGY0MGU0NmFlMzQxMzlmM2U0MGI5YzE1YTM0
ZmJkOC4uZTk4N2UxOWFjOGI3Mzg4NzFhYWQ4MmI0YjM4NTYyOTY4YTJiNmM5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZv
aWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBm
aW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApp
bmRleCBhMDEwM2IwMmEwZjRkNGE5MWUxN2YzNTJiZjhmOWYxMDUyNWQ4Y2VlLi4yOGMxNGJhNTM2
NjNjNTViNjFiMTA5ODEyYzA0OGEwMjA1NmJkMzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApA
QCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRBcHBseVN0eWxl
KGNvbnN0IFN0eWxlUHJvcGVydGllcyYgc3R5bGUsIGNvbnN0IHN0ZDo6CiAKICNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJBdHRh
Y2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgZGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJ
ZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6UmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGlkZW50aWZpZXIsIGNv
bnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxlTmFtZSwgZGF0YS5nZXQoKSkpOwogfQpAQCAtMjY1LDcg
KzI2NSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1
bmRsZUVkaXRvckNsaWVudCgpLndpbGxXcml0ZVRvUGFzdGVib2FyZCgqbV9wYWdlLCByYW5nZSk7
CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0
ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0
YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9h
cmREYXRhKQogewogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5nZXRQ
YXN0ZWJvYXJkRGF0YUZvclJhbmdlKCptX3BhZ2UsIHJhbmdlLCBwYXN0ZWJvYXJkVHlwZXMsIHBh
c3RlYm9hcmREYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBlMTZiMGNmMzgxODA2MTEw
ZGJjNmUxN2ViNzVkOTFkM2U0YjA5YTRlLi4wZjczZTRmYjYzNjIyYzZmYWU5NjM1MjE4YjU3ZjA2
MGUyNjExMjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShjb25zdCBXZWJDb3JlOjpTaW1w
bGVSYW5nZSYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJikgZmluYWw7CiAKICNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJp
bmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFt
ZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZv
aWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKSBmaW5hbDsKICAgICB2b2lk
IHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAg
dm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNo
bWVudERhdGE+JiYpIGZpbmFsOwpAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7
CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZv
aWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZp
bmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkg
ZmluYWw7CiAgICAgCiAgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVw
JikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlclJlZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA5NTkyMjNkNzc2ZWY5
MzJhYjFhNzM3MTYwNmUzMjkxZDIzMjlkM2NiLi4xNGEwODNjYTIwN2E5MDYzY2Y4MGIxZTdlOTY3
MGE0ODdjZjRkMzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExODgs
NyArMTE4OCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhE
b2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFp
blJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOworICAgICAgICAgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXIt
Pm1haW5SZXNvdXJjZURhdGEoKTsKICAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRh
UmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGln
dW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNl
RGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVy
KGxvYWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggNGM2NjZk
ZDQwZDVlOWQ0NTFhMWUwNmMxMWZkMDgwMDI3YTk4YjJhMS4uNjBjMjA3ZWQwZWVhODM2YjQ4NzBk
ZGE3YzZiYjMwYTE0NTRjYTQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAK
QEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBl
cyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGViCiAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmRO
YW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OkdldFBhc3RlYm9hcmRUeXBlczo6UmVwbHkodHlwZXMpLCAwKTsKIH0KIAotUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICAvLyBGaXJzdCBj
aGVjayB0aGUgb3ZlcnJpZGVzLgogICAgIFZlY3Rvcjx1aW50OF90PiBvdmVycmlkZUJ1ZmZlcjsK
ICAgICBpZiAoV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVib2FyZE92ZXJyaWRl
cygpLmdldERhdGFGb3JPdmVycmlkZShwYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIG92
ZXJyaWRlQnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CiAKICAgICAvLyBGYWxsYmFjayB0
byBtZXNzYWdpbmcgdGhlIFVJIHByb2Nlc3MgZm9yIG5hdGl2ZSBwYXN0ZWJvYXJkIGNvbnRlbnQu
CiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxlOwpAQCAtMjA5LDcgKzIwOSw3
IEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjCiAgICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50Owog
fQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShDb250
aWd1b3VzU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBj
b250ZXh0KQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUo
U2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0
KQogewogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKICAgICBpZiAoYnVmZmVyICYm
IGJ1ZmZlci0+c2l6ZSgpKSB7CkBAIC0zMjQsNyArMzI0LDcgQEAgVmVjdG9yPFN0cmluZz4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJp
bmcmIHAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQor
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJv
bUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlKQogewogCiAgICAgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGE7CkBAIC00
MDYsNyArNDA2LDcgQEAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmQKICAgICByZXR1cm4gaW5mbzsK
IH0KIAotUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hh
bmRsZTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlk
ZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGlwY0hhbmRsZSksIDApOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCmluZGV4IDA0NWQ0Y2I4OWE5NjY0YTA4ZTFiODFhMDUzMDM1ZGM1ZDlkMGM1
OTkuLjIwMGI2YzAxNTliNjg4YzcyYTNmYWRmYmFlMGE2OTQ4MzFiOTM2ZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVz
Rm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0
cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKIAogICAgIGludDY0X3Qg
YWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgaW50NjRfdCBzZXRCdWZmZXJGb3JU
eXBlKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlw
ZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3Qg
V2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0U3RyaW5n
Rm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJp
bmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFN0
cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92
ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9t
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgd3JpdGVUb0NsaXBib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYpIG92ZXJyaWRl
OwogICAgIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAg
ICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6
Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250
ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZy
b21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
U3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRl
eCA3OTU2MjZiMDQ4NjIyMGY5YTMwOWRiMmZiNzI1ZTA0YjIyMjU0YTNhLi5hMjA1ZTAwMWNhNzE1
ODIwOTEzYTgxYWU0YTgzNjUzMGY5YTBmNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV2ViUHJldmlld0xvYWRlckNsaWVu
dDo6V2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBT
dHIKIAogV2ViUHJldmlld0xvYWRlckNsaWVudDo6fldlYlByZXZpZXdMb2FkZXJDbGllbnQoKSA9
IGRlZmF1bHQ7CiAKLXZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZl
cihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVu
dDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgYXV0byB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZSht
X3BhZ2VJRCk7CiAgICAgaWYgKCF3ZWJQYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuaAppbmRleCAyN2FkMWM1MjAyNjYwMWU3YzQ5ZWQxODc3N2VlYWZmNjBjZDE5YjEy
Li4wZGMxNjdlNWI3YmMzYjAzZWYzOTMxZWFiMzU2Yzc4Mjc5Mjk1MjllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgV2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBjb25zdCBTdHJpbmcmIHV0aSwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwotICAgIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkRmFpbCgpIG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNQYXNz
d29yZEVudHJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50
TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJE
cmFnQ2xpZW50TWFjLm1tCmluZGV4IDRiNmUyMTdiYmUzN2Y4YzFkZjE3YWJjY2JiYzg3NzQzMWEy
YjFlM2IuLmUxZTBlNjExMmEyZGVkYzNiOGJiNjMwOTg1MzUzNzZlZjQzYWQ1MTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0Ns
aWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFdlYkRyYWdD
bGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBFbGVtZQogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGFyY2hpdmVIYW5kbGU7CiAgICAg
c2l6ZV90IGFyY2hpdmVTaXplID0gMDsKICAgICBpZiAoZGF0YSkgewotICAgICAgICBhdXRvIGFy
Y2hpdmVCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5T
RGF0YSAqKWRhdGEuZ2V0KCkpOworICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSk7CiAgICAgICAgIGF1
dG8gYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihh
cmNoaXZlQnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKCFhcmNoaXZlU2hhcmVkTWVtb3J5QnVm
ZmVyKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDkyOWIxNjBlZWE5YTY0NzJjMmNhN2QwM2FjMzEzM2I3
ZTFlZTlmODcuLmQ4OGY0NGNmY2RlNWUxNWY2NmMxMjRiNDBmNWI1NDM1Yjk0Njk3YTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTM0MCw3
ICszNDAsNyBAQCBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0CiAgICAgRG9jdW1lbnRM
b2FkZXIqIGRvY3VtZW50TG9hZGVyID0gbV9jb3JlRnJhbWUtPmxvYWRlcigpLmFjdGl2ZURvY3Vt
ZW50TG9hZGVyKCk7CiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1
bWVudExvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJj
ZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKICAgICByZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNl
RGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBj
NGFhMGQwZTNlZjlhNGU4ODQxMmZjMDVlMGMzY2I4MWFkYjI5NTAxLi42MzIwYzM1OGUxY2QyNjAz
MDZmMzUzNDJhOTBkY2EyZWY4NGMwODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTczOCw3ICsxNzM4LDcgQEAgTk9fUkVUVVJOIHZvaWQg
V2ViUGFnZTo6bG9hZFJlcXVlc3RXYWl0aW5nRm9yUHJvY2Vzc0xhdW5jaChMb2FkUGFyYW1ldGVy
cyYmLCBVUkwKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFdl
YlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8
V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgc2hhcmVkQnVmZmVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5
VmlzaWJpbGl0eSBzZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKK3ZvaWQgV2ViUGFnZTo6bG9h
ZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdM
b2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgc2hhcmVkQnVmZmVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5
VmlzaWJpbGl0eSBzZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKIHsKICNpZiBFTkFCTEUoQVBQ
X0JPVU5EX0RPTUFJTlMpCiAgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCAmbV9tYWluRnJhbWUuZ2V0KCkpOwpAQCAtMTc1Myw3
ICsxNzUzLDcgQEAgdm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlv
bklELCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2gKIAogICAgIC8vIExldCB0aGUgSW5q
ZWN0ZWRCdW5kbGUga25vdyB3ZSBhcmUgYWJvdXQgdG8gc3RhcnQgdGhlIGxvYWQsIHBhc3Npbmcg
dGhlIHVzZXIgZGF0YSBmcm9tIHRoZSBVSVByb2Nlc3MKICAgICAvLyB0byBhbGwgdGhlIGNsaWVu
dCB0byBzZXQgdXAgYW55IG5lZWRlZCBzdGF0ZS4KLSAgICBtX2xvYWRlckNsaWVudC0+d2lsbExv
YWREYXRhUmVxdWVzdCgqdGhpcywgcmVxdWVzdCwgY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPihz
dWJzdGl0dXRlRGF0YS5jb250ZW50KCkpLCBzdWJzdGl0dXRlRGF0YS5taW1lVHlwZSgpLCBzdWJz
dGl0dXRlRGF0YS50ZXh0RW5jb2RpbmcoKSwgc3Vic3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgpLCBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRh
Lm9iamVjdCgpKS5nZXQoKSk7CisgICAgbV9sb2FkZXJDbGllbnQtPndpbGxMb2FkRGF0YVJlcXVl
c3QoKnRoaXMsIHJlcXVlc3QsIGNvbnN0X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KHN1
YnN0aXR1dGVEYXRhLmNvbnRlbnQoKSksIHN1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCksIHN1YnN0
aXR1dGVEYXRhLnRleHRFbmNvZGluZygpLCBzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCksIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEu
b2JqZWN0KCkpLmdldCgpKTsKIAogICAgIC8vIEluaXRhdGUgdGhlIGxvYWQgaW4gV2ViQ29yZS4K
ICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QoKm1fbWFpbkZyYW1lLT5jb3Jl
RnJhbWUoKSwgcmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwpAQCAtMzg2MSw3ICszODYxLDcgQEAg
dm9pZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgKIAogdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VE
YXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4m
JiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoV2ViRnJhbWUqIGZy
YW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKICAgICAg
ICAgaWYgKFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSBwbHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUt
PmNvcmVGcmFtZSgpKSkKICAgICAgICAgICAgIGJ1ZmZlciA9IHBsdWdpblZpZXctPmxpdmVSZXNv
dXJjZURhdGEoKTsKQEAgLTM4NzcsNyArMzg3Nyw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0TWFpblJl
c291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5k
CiAgICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVz
b3VyY2VVUkwpCitzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNl
RGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkKIHsKICAg
ICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCk7CiAgICAgaWYgKCFsb2FkZXIpCkBAIC0zODkyLDcgKzM4OTIsNyBAQCBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBV
UkwmIHJlc291cgogCiB2b2lkIFdlYlBhZ2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTFN0cmluZywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAg
ICBpZiAoYXV0byogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFt
ZUlEKSkgewogICAgICAgICBVUkwgcmVzb3VyY2VVUkwoVVJMKCksIHJlc291cmNlVVJMU3RyaW5n
KTsKICAgICAgICAgYnVmZmVyID0gcmVzb3VyY2VEYXRhRm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFt
ZSgpLCByZXNvdXJjZVVSTCk7CkBAIC03MDAxLDcgKzcwMDEsNyBAQCB2b2lkIFdlYlBhZ2U6OmRp
ZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgQ2FsbGJhY2tJRCBsb2FkSWRl
bnRpZmllcgogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcih7IH0pOwogCi0gICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lv
bkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLnRvSW50ZWdlcigpLCBbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciogaWNvbkRhdGEpIG11dGFibGUgeworICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllci50b0ludGVnZXIoKSwgW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHsgaWNvbkRhdGEgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNjc5YWJmMWIxNTVmNTAwMjk3MjI0MTFl
ZGE5YTM5YzMyYjQzMDYzNS4uM2JiZDUzNTQ4MGQwNTc2MTNjNDNkYjNkOWZhZDQ3YWZiYzYyMTM0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMjE2
LDcgKzIxNiw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwogY2xhc3MgU2VsZWN0aW9uR2VvbWV0cnk7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vi
c3RpdHV0ZURhdGE7CiBjbGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0OwogY2xhc3MgVmlzaWJsZVBv
c2l0aW9uOwpAQCAtMTQwMyw3ICsxNDAzLDcgQEAgcHVibGljOgogCiAjaWYgVVNFKFFVSUNLX0xP
T0spCiAgICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpKTsKLSAgICB2b2lkIGRp
ZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwog
ICAgIHZvaWQgcmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmKTsKICNlbmRpZgogCkBAIC0xNjAyLDcgKzE2MDIsNyBAQCBwcml2YXRlOgogCiAgICAg
U3RyaW5nIHNvdXJjZUZvckZyYW1lKFdlYkZyYW1lKik7CiAKLSAgICB2b2lkIGxvYWREYXRhSW1w
bCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJiwg
c3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFdlYkNvcmU6OlN1YnN0
aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFdlYkNvcmU6OlNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
OjpTaG91bGROb3RBbGxvdyk7CisgICAgdm9pZCBsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdh
dGlvbklELCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9u
YWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmLCBzdGQ6Om9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgV2ViQ29yZTo6U3Vic3RpdHV0ZURh
dGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3Vs
ZE5vdEFsbG93KTsKIAogICAgIC8vIEFjdGlvbnMKICAgICB2b2lkIHRyeUNsb3NlKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBjOTVjMzg0NjM5MjIxODRmMjU3YTcx
OWRiNWJhOWE0ODI5YWVkZjFiLi44NWU2NTE4NjkyZWQ2MGM3ODhlNzJhN2NlMzJmM2YwZTE1Y2E3
NzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQpAQCAtMzIxNyw3ICszMjE3LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0
aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbikKICAgICAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hl
ZEltYWdlID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCplbGVtZW50LnJlbmRlcmVyKCkpLmNhY2hl
ZEltYWdlKCk7CiAgICAgICAgIGlmICghY2FjaGVkSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNv
dXJjZUJ1ZmZlcigpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CiAgICAgICAgIGlmICghYnVmZmVy
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9
IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKQEAgLTQ2ODMsNyArNDY4Myw3IEBA
IHZvaWQgV2ViUGFnZTo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGZpbGVOYW1lLCB1
dGkpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgV2ViUGFnZTo6
ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVCghYnVmZmVyLmlzRW1wdHko
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vz
c1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3Bw
CmluZGV4IGNjMGFjNjc1NzE1ZjBlODJlNTA5Yzc1NmIzMDJjZDZjZmU4YTU3NzguLmYxZTFjNWZm
NGQ4OTEwOWQ1MTE5ZWEwZjRhNDIzMzIzNzMyMjg0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5j
bHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQorUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29u
c3QgY2hhciogbmFtZSkKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKaW5kZXggMWY1NTg0ZmEzODdk
NzZjY2U5NGZmN2I1Njk2OGU3ZTgyMjA2MDYwNi4uYTI1NTYwYTEwYzI4ODJlMWFiZDE3ODQ1Njk0
ODZlYTEzZWQ4OTZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3Vw
cG9ydC9QaW5nSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9y
dC9QaW5nSGFuZGxlLmgKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKICAgICAgICAgcGluZ0xvYWRDb21wbGV0ZSh7IH0sIHJlc3BvbnNlKTsK
ICAgICB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
KiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50KSBmaW5hbCB7IHBpbmdMb2FkQ29t
cGxldGUoKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZSosIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQpIGZpbmFs
IHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmlu
YWwgeyBwaW5nTG9hZENvbXBsZXRlKGVycm9yKTsgfQogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBmaW5hbCB7IHJldHVybiBtX3No
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGM2NWU5Nzg4
OGI5NmI3Mzc5NTg4MDViNmY4ZmEwMDlkY2QxZmIxNzcuLjQyMDEwN2RhNjViNzZiNmQxMmM0YzQ1
ODEzOWYzMDgyNThkOTNmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC04MCw3ICs4MCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1w
bGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJk
KCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBw
YXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0SW5zZXJ0aW9uUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3Bv
bnNlIHJlcXVlc3RET01QYXN0ZUFjY2VzcyhXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc0NhdGVnb3J5
LCBjb25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jl
c3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggNzRjNDg3
ODMxNzdhZjkwYjIwMmQ1MWM0NjY2OWI0MDEyYjEyNWY1OS4uYzJjNDBkM2QyYTEzM2YyODEzNDE1
NjAzNGRlNTQxNDFhNGNlOWMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNDEzLDcgKzQxMyw3
IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
Y29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktp
dCwgb25seSBXZWJLaXQyLgogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFz
dGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQg
V2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBh
MjU5OGYzMmZiNzYwYTdkODgzYzlmNGNlZWMxOGNmNTkxZWI4ZWFkLi45NTlkNzQ4YjU2YmUxMDc2
YmQ5Nzc5OTIyY2QzNTZkMjFhNjgxNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAg
LTI0OCw3ICsyNDgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZEgyUGluZyhjb25zdCBVUkwm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFNlY29uZHMsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3I+JiYpPiYmKSBmaW5hbDsKIAogICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNv
bnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90Pj4m
KSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyKik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqKTsKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGJvb2wgbV9s
b2FkaW5nSWNvbiB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGI4
NDlkMmFhYzJhOTNmYmVlNDE3MjlmMjRhODZjZGNmNmIxZmUwMTkuLmFhMmNjOTgxNDc0YTEzY2U1
MDg0Nzk4OTQyMzY4NDQ5MWM4OGY2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBA
IC0yMDEyLDcgKzIwMTIsNyBAQCBSZWZQdHI8V2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlckNs
aWVudD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVByZXZpZXdMbwogICAgICAgICBSZXRh
aW5QdHI8TlNTdHJpbmc+IG1fZmlsZVBhdGg7CiAgICAgICAgIFJldGFpblB0cjxOU0ZpbGVIYW5k
bGU+IG1fZmlsZUhhbmRsZTsKIAotICAgICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gZGF0YUFycmF5ID0gYnVm
ZmVyLmNyZWF0ZU5TRGF0YUFycmF5KCk7CiAgICAgICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBp
biBkYXRhQXJyYXkuZ2V0KCkpCkBAIC0yMDk0LDcgKzIwOTQsNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWly
PFdlYkNvcgogICAgICAgICB9CiAKICAgICAgICAgbV9sb2FkaW5nSWNvbiA9IHRydWU7Ci0gICAg
ICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUsIGljb24t
PnNlY29uZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChXZWJDb3JlOjpT
aGFyZWRCdWZmZXIqIGJ1ZmZlcikgeworICAgICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9h
ZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29uLT5zZWNvbmQsIFt0aGlzLCB3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9XSAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVy
KSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIGZpbmlzaGVkTG9hZGluZ0ljb24oYnVmZmVyKTsKQEAgLTIxMzEsNyArMjEz
MSw3IEBAIHN0YXRpYyBOU0ltYWdlICp3ZWJHZXROU0ltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFn
ZSwgTlNTaXplIHNpemUpCiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKLXZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6U2hh
cmVkQnVmZmVyKiBpY29uRGF0YSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVk
TG9hZGluZ0ljb24oV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpCiB7
CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQVNTRVJUKG1fbG9hZGluZ0ljb24pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBlMzUxZWE5OThjMDdlNGIzMDQ2ZmM5MGQy
NjQ1ZmFiM2U2ZDBkODhhLi4xZDgxZmZhMTlkOTdmMDRlYzdjYzU3NWIzZWNlNWU4ODgxNDQwYjM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTUsMTQgKzU1LDE0IEBAIHByaXZh
dGU6CiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgU3Ry
aW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZy
b21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0
ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5n
JiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVt
QXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0
X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZv
Pj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGlu
dDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3Zl
cnJpZGU7CiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2
b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5
cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+
IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAKICAgICBpbnQ2NF90IGFkZFR5
cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFVSTChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
VVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldENvbG9yKGNvbnN0IFdlYkNv
cmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFN0cmluZ0ZvclR5
cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQppbmRleCBhM2UzYzkzMTY4ZDg5
MzY1MDJhYTZlN2Y0NTRlNGU1N2VkMWIxMjhjLi4xODhlYzUwMDQ1MDc3ZDc4YjAxMjBhNmRhZmJi
MDRmYjc5Mjc2NDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC0xMDksNyAr
MTA5LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJp
bmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpLmdldFR5cGVzKHR5cGVzKTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewog
ICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5
cGUocGFzdGVib2FyZFR5cGUpOwogfQpAQCAtMTU0LDcgKzE1NCw3IEBAIGludDY0X3QgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBjCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
c2V0VHlwZXMocGFzdGVib2FyZFR5cGVzKTsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogYnVmZmVyLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLCBwYXN0ZWJvYXJkVHlwZSk7CiB9CkBAIC0y
MDksNyArMjA5LDcgQEAgaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0
ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwKICAgICByZXR1cm4gUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb3VudCgpOwogfQogCi1SZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KikKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRl
eCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChw
YXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihpbmRleCwgdHlwZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggYzUzMWIxZGRk
ZDNiZThlNTZlZDZkNWQ3YzdmYTZiN2RhYTZjYzNhMy4uODNlODU5MTQzNDVlYTdjYjg0MWQ5OWZk
MWZiNjY2ZDhjY2YwMzAyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNDYwLDcgKzQ2MCw3IEBAIC0gKHZvaWQpZGVhbGxvYwog
CiAtIChOU0RhdGEgKilkYXRhCiB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291
cmNlRGF0YSgpOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBt
YWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3Vy
Y2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gbmls
OwogICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKS5hdXRvcmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggNWIxMGQzZmY3NTY3MDExNTEzOGY0ZDQzMTcyOTdjZGNh
MWVjOTVkNy4uMjhkODc1OTI5Y2NhY2RiOWExMzg4YTgyNmIyZmQ1ZWNmNDZlY2NkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQw
LDcgKzM1NDAsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVu
dUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaAogICAgIH0KIAogICAgIGlmIChh
dXRvKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgewotICAgICAgICBpZiAoUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKKyAgICAgICAg
aWYgKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFn
ZS0+ZGF0YSgpKQogICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFn
ZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNv
dXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0K
aW5kZXggZDNiNTE2YzQxYTkwZTdmYTU3ZGFkOTg5MWQ0OWEzMzkxNDhhMzYxNC4uMTJkNTljMGEx
NzY4MThlNjYyYzQzYzA3NDRhNTNhMTAxYzg1NjFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCkBAIC0zNjcsNyArMzY3LDcgQEAgLSAoTlNT
dHJpbmcgKilfc3RyaW5nVmFsdWUKICAgICBpZiAoIWVuY29kaW5nLmlzVmFsaWQoKSkKICAgICAg
ICAgZW5jb2RpbmcgPSBQQUw6OldpbmRvd3NMYXRpbjFFbmNvZGluZygpOwogICAgIAotICAgIFNo
YXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2YXRl
LT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3Jl
UmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgp
IDogMCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0
cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCmluZGV4
IDVkZjIxNzBkMmE0YmZjNGE0ODBjZjQ1YTg0ZDIzZDczMDU5MzVmYzEuLjM2MGFlZGNlYWNjYjFm
YmRkMWQ0NGFkNDJkOGMwNGM2ZjA0YjYxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL01lbW9yeVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVt
b3J5U3RyZWFtLmNwcApAQCAtMzEsNyArMzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogLy8gTWVtb3J5U3RyZWFtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1NZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitNZW1vcnlTdHJlYW06Ok1l
bW9yeVN0cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fYnVmZmVy
KFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwpAQCAtNDQsNyArNDQsNyBA
QCBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiTWVtb3J5U3RyZWFtIik7CiB9CiAKLUNPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0
cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQorQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gbmV3IE1lbW9yeVN0
cmVhbShXVEZNb3ZlKGJ1ZmZlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vTWVtb3J5U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJl
YW0uaAppbmRleCAwNzg2MGExNWFiNGEzZGIxMTljOTExM2ZhZmM5YzEyNGIxYzE0NmRkLi4yYmE3
ZGE5MGE1YzYyMTI5MDA4ZGY2MTI5NzMwYWNkYjliZDQ1M2JhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9NZW1vcnlTdHJlYW0uaApAQCAtMzUsNyArMzUsNyBAQAogY2xhc3MgTWVtb3J5U3RyZWFt
IGZpbmFsIDogcHVibGljIElTdHJlYW0KIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgQ09NUHRyPE1l
bW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0
YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIC8vIElVbmtub3du
CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9J
bl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KTsKQEAgLTc1LDEw
ICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IENsb25lKF9DT01fT3V0cHRyXyBJU3RyZWFtKiogcHBzdG0pOwogCiBwcml2YXRlOgotICAgIE1l
bW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7Cisg
ICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOwogICAgIH5N
ZW1vcnlTdHJlYW0oKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZl
cjsKICAgICBzaXplX3QgbV9wb3MgeyAwIH07CiAgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCmluZGV4IGIzYTJjNGNmZWIz
ZThmODJhMDUwYTM4ZjU3MjU4ZDkwNmQwNmJlM2EuLjgxNTc5OTYxMDc2N2UwYmI5YWQyMjQ1Njdk
NzI1Y2QzY2RjZGIxZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFy
Y2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCkBA
IC0xNjQsNyArMTY0LDcgQEAgSFJFU1VMVCBXZWJBcmNoaXZlOjpkYXRhKF9DT01fT3V0cHRyX29w
dF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIEVf
RkFJTDsKIAotICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5n
ZXQoKSkpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0
Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CiAK
ICAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGJ1ZmZlcikp
LmNvcHlSZWZUbyhzdHJlYW0pOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGU5YTEz
NmY2YmI0MmVjOGFiN2Y1MGEzYWIzMzMzM2ZiM2YyMDIzZmQuLjIxMTU5OGQzOWE2YWYzNjFjYzJl
NDA2NzkwNmUyYjg2ODU3ZWVmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMjYxLDcgKzI2
MSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlCiB7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiA+JikKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
ID4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDk1
ODFhYmJkOTMyYTUxYmJlOTgyMDVhMjMxM2E1YzgwOWJhNjk3ZjMuLjA4N2I2OWU3YThiMGI2ODhh
Y2JmZTQ0ZTRkYWIxYjdiZGE1NDFmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC01NSw3ICs1NSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3
aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0
ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdn
ZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHJlc3BvbmRUb0NoYW5n
ZWRDb250ZW50cygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4
IDZkYzRhNDg1MmExNGQ5MTQ0M2U1MzE5YTUwN2MxOTY4NzJhZmIxNDkuLjU1OGUxM2M3ZjFmZGFh
NWIxMjVkMjBiZWZlNzkxYTI3ZmY3NTcxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFt
ZS5jcHAKQEAgLTU1OSw3ICs1NTksNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpsb2FkUmVxdWVzdChf
SW5fb3B0XyBJV2ViVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICByZXR1cm4gU19PSzsKIH0KIAot
dm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRh
LCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNU
UiBmYWlsaW5nVVJMKQordm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2Rp
bmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKIHsKICAgICBTdHJpbmcgbWlt
ZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5c1N0cmluZ0xlbihtaW1lVHlwZSkpOwogICAgIGlmICgh
bWltZVR5cGUpCkBAIC01OTIsNyArNTkyLDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEo
X0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIKICAg
ICAgICAgaWYgKCFzdGF0LmNiU2l6ZS5IaWdoUGFydCAmJiBzdGF0LmNiU2l6ZS5Mb3dQYXJ0KSB7
CiAgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YUJ1ZmZlcihzdGF0LmNiU2l6ZS5Mb3dQYXJ0
KTsKICAgICAgICAgICAgIFVMT05HIHJlYWQ7Ci0gICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBk
b2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0
aGUgU2hhcmVkQnVmZmVyCisgICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxl
c3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0aGUgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcgogICAgICAgICAgICAgLy8gb3IgYWRvcHQgdGhlIFZlY3RvciBvciBzb21l
dGhpbmcuCiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGRhdGEtPlJlYWQoZGF0YUJ1ZmZlci5k
YXRhKCksIHN0YXRpY19jYXN0PFVMT05HPihkYXRhQnVmZmVyLnNpemUoKSksICZyZWFkKSkpCiAg
ICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLmFwcGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZy
YW1lLmgKaW5kZXggNDM2MDU0ZmQ5ZGRiNDdjYTMyOTZiMTE3OTgxNDM0ZWMxODk3ZGFkMS4uZmE5
YzM4MWNjNTczYmE2YjIwOTg4ZWFiMzUwOGVkOWEzMGE4ZjEzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJGcmFtZS5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVu
dDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTQ29udGV4dCogSlNDb250ZXh0UmVmOwpAQCAtMTk1
LDcgKzE5NSw3IEBAIHByaXZhdGU6CiAgICAgfldlYkZyYW1lKCk7CiAKICAgICB2b2lkIGxvYWRI
VE1MU3RyaW5nKF9Jbl8gQlNUUiBzdHJpbmcsIF9Jbl8gQlNUUiBiYXNlVVJMLCBfSW5fIEJTVFIg
dW5yZWFjaGFibGVVUkwpOwotICAgIHZvaWQgbG9hZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VV
UkwsIEJTVFIgZmFpbGluZ1VSTCk7CisgICAgdm9pZCBsb2FkRGF0YShSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdO
YW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7CiAgICAgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OkludFJlY3Q+JiBjb21wdXRlUGFnZVJlY3RzKEhEQyBwcmludERDKTsKICAgICB2b2lk
IHNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgcGFn
ZVNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgb3JpZ2luYWxQYWdlU2l6ZSwgZmxvYXQg
bWF4aW11bVNocmlua1JhdGlvLCBXZWJDb3JlOjpBZGp1c3RWaWV3U2l6ZU9yTm90KTsKICAgICB2
b2lkIGhlYWRlckFuZEZvb3RlckhlaWdodHMoZmxvYXQqLCBmbG9hdCopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdERMTC5jcHAKaW5kZXggOTYyMDE5OGI0YjU0MGFlNmY3OTY3ZjgyMzNjOTQ2
NGJkMjc3NTg1MS4uMjc0YjdkMmQ2Y2YyZWI0NzFkN2I4Yjg5NjU5YWU0NjljZjkzNGM5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCkBAIC0xNjUsOCArMTY1LDggQEAgdm9p
ZCBzaHV0RG93bldlYktpdCgpCiB9CiAKIC8vRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciBtb3Zp
bmcgdGhpcyB0byBhIG5ldyBmaWxlIGZvciBjcm9zcy1wcm9qZWN0IGZ1bmN0aW9uYWxpdHkKLVdF
QktJVF9BUEkgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1
ZmZlcihjb25zdCBjaGFyKiBuYW1lKTsKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxv
YWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKK1dFQktJVF9BUEkgUmVmUHRy
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIo
Y29uc3QgY2hhciogbmFtZSk7CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKQogewogICAgIGludCBp
ZHI7CiAgICAgLy8gdGVtcG9yYXJ5IGhhY2sgdG8gZ2V0IHJlc291cmNlIGlkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggMmZmY2I4OTk5YjE4NDQ4Y2Q2MjQ4Zjli
ZmNmMTVhYTUxN2NhZWJkNi4uOTQzZmE3YWI0NWM4YjBkMzVkNjdhMzBjMGZkYWI0MzQ5YTNlNjRh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcApAQCAtNTEsNyArNTEs
NyBAQCBXZWJSZXNvdXJjZTo6fldlYlJlc291cmNlKCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYlJlc291cmNlIik7CiB9CiAKLVdlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3Jl
YXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0
YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitXZWJSZXNvdXJj
ZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7
CiAgICAgQ09NUHRyPE1lbW9yeVN0cmVhbT4gbWVtb3J5U3RyZWFtID0gTWVtb3J5U3RyZWFtOjpj
cmVhdGVJbnN0YW5jZShXVEZNb3ZlKGRhdGEpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJl
c291cmNlLmgKaW5kZXggOTRhYjM1YzU2MDgxMDExN2M4OTVlNGExMGMzOTFiY2NhMzM3ZDE4ZS4u
YjZlYjg2ZmNjYTVlMzEzNjljOWU4YjA2NTQxOGYyNzk0OTI5OTkwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJSZXNvdXJjZS5oCkBAIC0zNiw3ICszNiw3IEBACiAKIGNsYXNzIFdlYlJlc291
cmNlIGZpbmFsIDogcHVibGljIElXZWJSZXNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdl
YlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRp
YyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgLy8gSVVua25v
d24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2Uo
X0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk1ZGFiYTBiY2Rh
ZTVjZjcwODVmODE3ZDBhZDlmMGZkZmZlMjQyYjkuLjJmOGNmYTA3OWYxOTUyMmI1MzU2M2RjZDgw
ODJjYTdiOGE0YTEyMjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQg
IDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3Nwor
ICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNo
YXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMu
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcDoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHA6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3Qu
Y3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJU
ZXN0Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlM
aXN0VGVzdHNDRy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nv
Y29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2Vi
Q29yZVN0dWJzLmNwcDoKKwogMjAyMS0xMS0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWlsZGVyIGNsYXNzCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IGYzMzJkNzJiYWQw
NzM0OWNlZDg5Mzg0MmQ3MzI0NzdmYmZkNjZjMjMuLjg2ZTVhNGIzZjYzOGEzOGYwZjE4Y2ExMmQ2
NmQ1MjkxMDAyZTMyODQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVT
eXN0ZW0uY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZVRlc3RGaWxlKGNv
bnN0IFN0cmluZyYgcGF0aCkKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7
CiB9OwogCi0vLyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIFNoYXJlZEJ1ZmZl
clRlc3QgYXMgYSBzaW5nbGUgY2xhc3MuCisvLyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRl
c3QgYW5kIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgogY2xh
c3MgRmlsZVN5c3RlbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAg
dm9pZCBTZXRVcCgpIG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKaW5kZXggZjdlNTU3OTkyNDU5YWY1ZDFh
OWI4MTcwODk3ZjhlNDY0NDEwNWFhOC4uZjI0ZGYwMWRkNTc0YTc2NDE4MDE4YmVkMzVlOGVlMGMw
ZmU4ZDY5NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rp
c3BsYXlMaXN0VGVzdHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9EaXNwbGF5TGlzdFRlc3RzLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIFRFU1QoRGlzcGxheUxp
c3RUZXN0cywgSXRlbUJ1ZmZlckNsaWVudCkKICAgICAgICAgICAgIHJldHVybiB7IGdsb2JhbEJ1
ZmZlcklkZW50aWZpZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0
eSB9OwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRl
bU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3BsYXlMaXN0SXRlbSkgY29uc3Qg
ZmluYWwKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1P
dXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJiBkaXNwbGF5TGlzdEl0ZW0pIGNvbnN0IGZp
bmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gaW5kZXggPSBtX2l0ZW1zLnNpemUoKTsK
ICAgICAgICAgICAgIG1faXRlbXMuYXBwZW5kKHN0ZDo6Z2V0PFN0cm9rZVBhdGg+KGRpc3BsYXlM
aXN0SXRlbSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyLmNwcAppbmRleCA4ZjMyYWJjODgwMWQ1MTg4ODgyMzVlZmZiZDBjZWVhNzc3ZGUz
YzllLi5mMTJiOWYwODM2MDU1ODk0Y2Q2NWE4MjNkNWZmNmUzNGI5OGFkNTk4IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAt
NDEsMzEgKzQxLDMxIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSSB7CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVu
dHNPZk1pc3NpbmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVh
dGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQogewotICAgIGF1dG8gYnVmZmVyID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4
aXN0aW5nX2ZpbGUiKSk7CisgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOwogICAgIEFTU0VS
VF9OVUxMKGJ1ZmZlcik7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRo
Q29udGVudHNPZkV4aXN0aW5nRmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVz
dCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgYXV0byBidWZmZXIg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZp
bGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIp
OwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0cmxlbihTaGFyZWRCdWZmZXJU
ZXN0Ojp0ZXN0RGF0YSgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBz
dHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKTsKKyAgICBFWFBF
Q1RfVFJVRShTdHJpbmcoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09
IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkp
KTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhp
c3RpbmdFbXB0eUZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0
ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCiB7Ci0gICAgYXV0byBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5
RmlsZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwo
YnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzQ29udGlndW91cygpKTsKICAgICBF
WFBFQ1RfVFJVRShidWZmZXItPmlzRW1wdHkoKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQorVEVTVF9G
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50
c09mRXhpc3RpbmdGaWxlKQogewotICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShi
dWZmZXItPmlzQ29udGlndW91cygpKTsKICAgICBhdXRvIGNvcHkgPSBidWZmZXItPmNvcHkoKTsK
QEAgLTc0LDE5ICs3NCwxOSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNy
ZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKICAgICBFWFBFQ1RfVFJVRSghbWVtY21w
KGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+
c2l6ZSgpKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVh
dGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkK
IHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdp
dGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1
ZmZlcik7CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwogICAgIGJ1aWxkZXIuYXBw
ZW5kKCpidWZmZXIpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwgMSk7Ci0gICAgRVhQRUNUX1RS
VUUoYnVpbGRlci5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
KSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVpbGRl
ci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKV0pOworICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuc2l6ZSgpID09IChzdHJs
ZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpICsgMSkpOworICAgIEVY
UEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1
aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtzdHJsZW4oRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
VGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCiB7CiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJI
ZWxsbyI7CiAgICAgY2hhciB0ZXN0RGF0YTFbXSA9ICJXb3JsZCI7CkBAIC0xMDAsNyArMTAwLDcg
QEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQogICAgIEVY
UEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRDb25jYXRlbmF0aW9uLCBhcnJheUJ1ZmZlci0+ZGF0
YSgpLCBzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSkpOwogfQogCi1URVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQorVEVTVF9GKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVu
dHMpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjAoMHg0MDAwLCAnYScpOwogICAgIFZl
Y3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBU
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRz
KQogICAgIH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCitURVNUX0YoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiB7CiAgICAgY2hhciB0ZXN0RGF0YVtdID0g
IkhhYml0YXNzZSBpbnRlZ2VyIGVyb3MgdGluY2lkdW50IGEgc2NlbGVyaXNxdWUhIEVuaW0gZWxp
dD8gU2NlbGVyaXNxdWUgbWFnbmlzLCIKICAgICAiZXQgbW9udGVzIHVsdHJpY2VzIHRyaXN0aXF1
ZSBhISBQaWQuIFZlbGl0IHR1cnBpcywgZGFwaWJ1cyBpbnRlZ2VyIHJob25jdXMgc29jaWlzIGFt
ZXQgZmFjaWxpc2lzLCIKQEAgLTE1Miw3ICsxNTIsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgY29weSkKICAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEsIGxlbmd0aCk7CiAgICAgLy8g
c2hhcmVkQnVmZmVyIG11c3QgY29udGFpbiBkYXRhIG1vcmUgdGhhbiBzZWdtZW50U2l6ZSAoPSAw
eDEwMDApIHRvIGNoZWNrIGNvcHkoKS4KICAgICBFWFBFQ1RfRVEobGVuZ3RoICogNCwgYnVpbGRl
cjEuc2l6ZSgpKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IGJ1aWxkZXIxLmNv
cHkoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBidWlsZGVy
MS5jb3B5KCk7CiAgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNsb25lLT5zaXplKCkpOwogICAg
IEVYUEVDVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVp
bGRlcjEuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwog
CkBAIC0xNjgsNyArMTY4LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAg
RVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGJ1aWxkZXIpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxk
ZXIpCiB7CiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CiAgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWlsZGVyMShzdGQ6OmluX3BsYWNlLCB0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0
YTApKTsKQEAgLTE3OCw3ICsxNzgsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgYnVpbGRl
cikKICAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIxLnRha2UoKTsKICAgICBFWFBFQ1RfVFJVRShi
dWlsZGVyMS5pc051bGwoKSk7CiAgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNFbXB0eSgpKTsK
LSAgICBFWFBFQ1RfTkUoY29weS5wdHIoKSwgYnVmZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZm
ZXJlbnQgU2hhcmVkQnVmZmVyCisgICAgRVhQRUNUX05FKGNvcHkucHRyKCksIGJ1ZmZlci5wdHIo
KSk7IC8vIFdlIGhhdmUgZGlmZmVyZW50IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIKICAgICBFWFBF
Q1RfRVEoY29weS5nZXQoKSwgYnVmZmVyLmdldCgpKTsgLy8gQnV0IHRoZWlyIGNvbnRlbnQgaXMg
aWRlbnRpY2FsCiAKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXIyOwpAQCAtMjA0LDcg
KzIwNCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwg
c2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhcioKICAgICAgICAgRVhQRUNUX0VRKGJ1ZmZl
cltpXSwgZXhwZWN0ZWRbaV0pOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29t
ZURhdGEpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQog
ewogICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsgJ2EnLCAnYicsICdjJywgJ2QnIH07CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScsICdmJywgJ2cnLCAnaCcgfTsKQEAgLTIzOSw3ICsy
MzksNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCiAgICAgY2hlY2tC
dWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgaXNFcXVhbFRvKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBpc0Vx
dWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhf
dD4+JiYgY29udGVudHMpIHsKICAgICAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwpA
QCAtMjYwLDcgKzI2MCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiAg
ICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtl
QnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5nZXQoKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCB0b0hleFN0cmluZykKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVz
dCwgdG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4NSwg
MHgxMn07CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwpAQCAtMjczLDExICsyNzMs
MTEgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQogICAgIEVYUEVDVF9F
UShidWZmZXItPnRvSGV4U3RyaW5nKCksICIiKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIHJlYWQpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiB7CiAg
ICAgY29uc3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3Qu
IjsKIAotICAgIGF1dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewor
ICAgIGF1dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIp
IHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSBzaGFyZWRCdWZmZXIucmVhZCg0LCAz
KTsKICAgICAgICAgRVhQRUNUX0VRKGRhdGEuc2l6ZSgpLCAzdSk7CiAgICAgICAgIEVYUEVDVF9F
UShTdHJpbmcoZGF0YS5kYXRhKCksIDMpLCAiIGlzIik7CkBAIC0zMDgsNyArMzA4LDcgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgc2l6ZV90
IE4gPgogY29uc3RleHByIHNpemVfdCBhcnJheXNpemUoIGNvbnN0IFQgKCYpW05dICkgeyByZXR1
cm4gTjsgfQogCi1zdGF0aWMgdm9pZCByZWFkQWxsQ2h1bmtzKHN0ZDo6dmVjdG9yPFN0cmluZz4q
IGNodW5rcywgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yID0g
IlxyXG4iLCBib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSkKK3N0YXRpYyB2b2lkIHJlYWRB
bGxDaHVua3Moc3RkOjp2ZWN0b3I8U3RyaW5nPiogY2h1bmtzLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yID0gIlxyXG4iLCBib29sIGluY2x1
ZGVTZXBhcmF0b3IgPSBmYWxzZSkKIHsKICAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlciBjaHVu
a1JlYWRlcigmYnVmZmVyLCBzZXBhcmF0b3IudXRmOCgpLmRhdGEoKSk7CiAgICAgU3RyaW5nIGNo
dW5rID0gY2h1bmtSZWFkZXIubmV4dENodW5rQXNVVEY4U3RyaW5nV2l0aExhdGluMUZhbGxiYWNr
KGluY2x1ZGVTZXBhcmF0b3IpOwpAQCAtMzQxLDcgKzM0MSw3IEBAIHN0YXRpYyB2b2lkIGNoZWNr
RGF0YUluUmFuZ2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBzaXplX3Qgc3RhcnQsIHNp
emVfdCBsCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGluY2x1ZGVTZXBh
cmF0b3IpCiB7Ci0gICAgYXV0byBjaGVjayA9IFtdKFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVy
KSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1
ZmZlcikgewogICAgICAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlciBjaHVua1JlYWRlcigmc2hh
cmVkQnVmZmVyLCAiXHgxMFx4MTFceDEyIik7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBvdXQ7
CiAgICAgICAgIEVYUEVDVF9UUlVFKGNodW5rUmVhZGVyLm5leHRDaHVuayhvdXQpKTsKQEAgLTM3
Miw3ICszNzIsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0
YSkKIHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgYSBzaW1w
bGUgdGVzdC4iOwogCi0gICAgYXV0byBjaGVjayA9IFtdKFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVm
ZmVyKSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJl
ZEJ1ZmZlcikgewogICAgICAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlciBjaHVua1JlYWRlcigm
c2hhcmVkQnVmZmVyLCAiaXMiKTsKIAogICAgICAgICBTdHJpbmcgY2h1bmsgPSBjaHVua1JlYWRl
ci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soKTsKQEAgLTQxOCw3ICs0
MTgsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKIFRF
U1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2Vn
bWVudCkKIHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgdGhl
IG1vc3QgcmlkaWN1bG91cyBoaXN0b3J5IHRoZXJlIGlzLiI7Ci0gICAgYXV0byBjaGVjayA9IFtd
KFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBzdGQ6OnZlY3RvcjxT
dHJpbmc+IGNodW5rczsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3Mx
V2l0aG91dFNlcGFyYXRvcltdID0geyAiVGgiLCAicyAiLCAicyB0aGUgbW9zdCByIiwgImQiLCAi
Y3Vsb3VzIGgiLCAic3RvcnkgdGhlcmUgIiwgInMuIiB9OwogICAgICAgICByZWFkQWxsQ2h1bmtz
KCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImkiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcAppbmRleCA5YjhiMTNhNzVk
NTJmZjk1MWVhZDE4MTg1ZDU2YzM3OTFiMmQ3YmVkLi5kMDM0MWE4MWRlZGE3MTlmMzVmY2NlMzk0
NjU1ZWMyNTVhYjhmYmI2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCit2
b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCiB7CiAgICAgV1RGOjppbml0
aWFsaXplTWFpblRocmVhZCgpOwogCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVy
VGVzdDo6U2V0VXAoKQogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogfQogCi12
b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlRlYXJEb3duKCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlclRlc3Q6OlRlYXJEb3duKCkKIHsKICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVt
cEZpbGVQYXRoKTsKICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEVtcHR5RmlsZVBh
dGgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlclRlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRC
dWZmZXJUZXN0LmgKaW5kZXggNjQwMTE5YmRlNmZjZTQxZjAxZWFhYjYzMTY4NDdiZTU2YjkwY2Y1
Yy4uYTM5MmEwNTE5NDc1NmQyYWQ1NmU4MjQ5MjllY2U0YzE1ZjNhZDA1NSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oCkBA
IC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotY2xhc3MgU2hh
cmVkQnVmZmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIHZv
aWQgU2V0VXAoKSBvdmVycmlkZTsKICAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RU
ZXN0c0NHLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5
TGlzdFRlc3RzQ0cuY3BwCmluZGV4IDdhMzIwN2Y5NWM2MjdmZTY2MjljOTI3NzQ0YjRlZjAzZTVl
MmVjM2QuLjg1ODI4ZjAzOTIyNDVmNGE5OWI3NjA2YjVmNGFjNWVjMzRkY2VlNWIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3Rz
Q0cuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5
TGlzdFRlc3RzQ0cuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0
dXJuIHsgZ2xvYmFsQnVmZmVySWRlbnRpZmllciwgZ2xvYmFsSXRlbUJ1ZmZlciwgZ2xvYmFsSXRl
bUJ1ZmZlckNhcGFjaXR5IH07CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5j
b2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdCBmaW5hbAorICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0
IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQppbmRleCA4YmZiODVlYzYx
ZDMwMTc1OTNkYzBiM2QzN2Q2ZDdiNmQ5OTMyNzc3Li5jM2I1ZDNlOGQ3YzAzYjFhMzY1ZGQ1MzVh
MGIyOWFkZTI3YWNlY2E4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGlj
IHZvaWQgZXhwZWN0RGF0YUFycmF5c0VxdWFsKE5TQXJyYXk8TlNEYXRhICo+ICpleHBlY3RlZCwg
TlNBcnJheTxOU0RhdGEgKj4KICAgICB9CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBj
cmVhdGVOU0RhdGFBcnJheSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3Jl
YXRlTlNEYXRhQXJyYXkpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKQEAgLTYzLDExICs2MywxMSBAQCBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNF
cXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3Jl
YXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChA
WyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3
b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKIAotICAgICAgICBleHBlY3RE
YXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxl
UGF0aCgpXSBdLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZp
bGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAg
ZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0
ZW1wRmlsZVBhdGgoKV0gXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsKICAgICB9CiB9CiAK
LVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKK1RF
U1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21l
bnQpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJD
b3JlU3R1YnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5j
cHAKaW5kZXggNDZjNzYyMDNlMWIyNWFhYWI3YTAyZTBiYjJiZjVlMGM0MzZlZDY4Ny4uNWJlNjY1
OTQ2MTM3MzFlMjFlZDk3ZGE3NGM1NzM4YzdjYTI4NWJmNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1
ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciopCitSZWZQdHI8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFy
KikKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjAxYWI5MGI0
NzdkNmZkZTk1NzA0MTBhNGZkZWQwYTAyM2U2YmE4NS4uNWExZjQwYWQyZTFhZDVjMzdjYzZmZGU2
OGM5MTYyZTgxZmRiNWMwMCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0x
Mi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIERpc3Rp
bmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFu
ZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGVjb2RlclRlc3QvRGVjb2RlclRlc3QvbWFpbi5t
bToKKyAgICAgICAgKG1haW4pOgorCiAyMDIxLTEyLTA4ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgbGF5b3V0IHBlcmZvcm1hbmNlIHRlc3QgZm9yIHNpbXBs
ZSBiaWRpIGNvbnRlbnQgd2l0aCBpbmxpbmUgYm94ZXMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447077</attachid>
            <date>2021-12-13 15:52:20 -0800</date>
            <delta_ts>2021-12-13 16:59:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233677-20211214105214.patch</filename>
            <type>text/plain</type>
            <size>747158</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NmU1ODI4YmM3YjZhMzEzNDRiNTgwYWJhMjJhYjZhNTBjNDIyZWY5Li43ODA5YmE1MzRhYzU1NGE1
OTgwZWI3ZGFlNDAwNmE3MWQyZmZkYzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8v
cHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBi
ZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0FycmF5QnVmZmVyLmg6CisKIDIwMjEtMTItMTMgIHdhZGRsZXNwbGFzaCAgPHdhZGRs
ZXNwbGFzaEBnbWFpbC5jb20+CiAKICAgICAgICAgRXhlY3V0YWJsZUFsbG9jYXRvcjogRG8gbm90
IHN0b3JlIHRoaW5ncyBpbiBnX2NvbmZpZyB3aGVuIFVTRShTWVNURU1fTUFMTE9DKS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAyMmRhOWNjYTQzZDJlZTRjODRlN2FjMzRjNGRmNGRiNWMwNjE0M2Y4Li41NzRjYmVh
YzM1YjFhNGE5NjEzNWZjMDNjZWYwMTA2MDAyN2I2ZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzQ1IEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5k
CisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRl
ciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICBSZW5hbWUg
b25seSwgbm8gY2hhbmdlIGluIGJlaGF2aW91ci4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAg
ICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFj
L0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUv
RE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5j
cHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5Lmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN0YXR1c01hcC5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN0YXR1c01hcC5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlzLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
cy5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAgICAgICAq
IE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oOgorICAgICAgICAqIE1v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwOgorICAgICAgICAqIE1vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9N
ZWRpYU1ldGFkYXRhLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxl
ci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3Vy
Y2VQcm92aWRlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgICogY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5jcHA6Cisg
ICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6
CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaDoKKyAgICAgICAg
KiBlZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvcmVQ
YXN0ZWJvYXJkRmlsZVJlYWRlci5jcHA6CisgICAgICAgICogZWRpdGluZy9XZWJDb3JlUGFzdGVi
b2FyZEZpbGVSZWFkZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1t
OgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKiBlZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0
b3JNYWMubW06CisgICAgICAgICogZmlsZWFwaS9CbG9iLmg6CisgICAgICAgICogZmlsZWFwaS9O
ZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtTZW5kUXVldWUu
aDoKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKiBo
dG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1
bWVudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAqIGluc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAg
ICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0xvYWRlclN0cmF0ZWd5Lmg6
CisgICAgICAgICogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvUmVz
b3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlRGF0YS5oOgorICAgICAgICAq
IGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNw
cDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oOgorICAgICAgICAq
IGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZVJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5j
cHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmg6CisgICAg
ICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAqIGxv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHls
ZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0ZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRU
cmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oOgorICAgICAgICAq
IGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVn
YWN5UHJldmlld0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xv
YWRlci5tbToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAqIHBhZ2Uv
UGFnZS5jcHA6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5jcHA6CisgICAgICAgICog
cGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhLmg6CisgICAg
ICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVk
Q29kaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdy
aXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1N0
YXRpY1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVu
dEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5t
bToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oOgorICAgICAgICAqIHBs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1V
dGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxp
dGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmlj
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1NvdXJjZUJ1ZmZlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZG
RmlsZUZvcm1hdC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3Jt
YXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBs
YXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9y
bURhdGFDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0
ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGFGcmVlVHlwZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVh
cktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1
bmRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1U
aHVuZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGFDYWlyby5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9y
bURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQ
bGF0Zm9ybURhdGFXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlRGVjb2RlckRpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVy
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJl
YWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURl
Y29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1h
Z2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFn
ZUJhY2tpbmdTdG9yZUNhaXJvLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNv
ZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZv
cm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3RDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9wb3Np
eC9TaGFyZWRCdWZmZXJQT1NJWC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9h
cmRXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwOgor
ICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAqIHRlc3Rpbmcv
TW9ja0NETUZhY3RvcnkuaDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNw
cDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmg6CisgICAgICAgICogd29y
a2Vycy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVx
dWVzdC5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
ckZldGNoLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3Rv
cmFnZS5jcHA6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcDoKKyAgICAg
ICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisKIDIwMjEtMTIt
MTMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgU2hh
cmVkQnVmZmVyQnVpbGRlciBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2ZDM0ZTgxZTM5MzE5Mzk4MmNiYjI4
MTMzMGVhZTRmYTg2YjUwN2FkLi4xZjY0MGNmNDcwZjYzOGE3OGFhMGU0YzEwNTlhNTA1YzZiOGIy
MjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NSBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2
ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xh
c3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVy
IHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAg
dHlwZXMuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJv
eHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5
LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHA6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
dXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENQcm92aWRlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJDb3B5LmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmg6CisgICAg
ICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2EubW06CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0
SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAq
IFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERh
dGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwOgorICAg
ICAgICAqIFNoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1
bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVM
aXN0U3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Z3RrL0NsaXBib2FyZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmg6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbToKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkYuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHA6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdD
bGllbnRNYWMubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwOgor
CiAyMDIxLTEyLTEzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXgg
NmI5ZGZkYzY2MWYyMmMwNzFkODBmMzIwOWZlNzFmZmZiYjkwZWRhNy4uYTRkOTM4NmUzNzAwNTdm
NjdhMGE5OWU1ZmYxZWNkMTgyNjI4NDI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgor
CisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8vcHJv
YmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFu
ZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0
ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9QaW5nSGFuZGxlLmg6CisKIDIwMjEtMTItMDkgIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4gYW5kIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBz
b255LmNvbT4KIAogICAgICAgICBNb3ZlIFRleHRDb2RlYyBmaWxlcyBmcm9tIFdlYkNvcmUvcGxh
dGZvcm0vdGV4dCB0byBXZWJDb3JlL1BBTC90ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
aW5kZXggYmRhMjY0MGFkZDY1YWQwZjBiMmM5NWJmODIxNmM0YmM1MTBjOGVjNy4uODg1YWU0NTI3
YzE1OWFiMDIyMmIzNDkyNTZhZjdiZTVjMjU0OTFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAg
ICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVk
QnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICog
V2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1t
OgorCiAyMDIxLTEyLTEzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAg
ICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGln
dW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZwppbmRleCA5ZGU0MGNkMzEzNTNkZGQwNThlMzExYjYxYmZhZTU5ZTg2YTQ0MDZjLi45ZWRj
ZmZlZGFmNDUyMGE0ZDNmYmVmN2VmZjc0MzVkYmY4YjM3NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJk
ICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcK
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBT
aGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVz
LgorCisgICAgICAgICogTWVtb3J5U3RyZWFtLmNwcDoKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0u
aDoKKyAgICAgICAgKiBXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oOgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJGcmFtZS5oOgor
ICAgICAgICAqIFdlYktpdERMTC5jcHA6CisgICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAg
ICAgICAqIFdlYlJlc291cmNlLmg6CisKIDIwMjEtMTItMTMgIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggZWFjY2Ey
YzIzM2E4YTY5MzcxNTkwODA3ZGZkMzY3NWIwNjE1OTQyOC4uYjQ2OTNmOTFjNjA3ZDhkMDc0NTk0
NjQ2ZThkYzQzNzJlOWJjOTllNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlci5oCkBAIC0xMjksNyArMTI5LDcgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYp
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNy
ZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKTsKIAotICAgIC8vIE9u
bHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBh
bmQgU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlci4KKyAgICAvLyBPbmx5IGZvciB1
c2UgYnkgVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyLgogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90
IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQo
c2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFn
ZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJbWFnZVJlYWRlci5jcHAKaW5kZXggZGZhYzNhOTU0MDdmMmIzNzNhYTg4ZGZlMzcwN2Yy
YjliZWVhYWY3ZS4uMzM1NGI1MmE1MGNiYjE4OWZkZmFlYjdkODI0ODNiZTBjNDFjM2Q0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCiAKLXZvaWQgQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYpCit2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCmluZGV4
IDliNTllYjVjYzQ5NTdmMDMzNjY3NTgyZTg2NTNhYzA3NGZlOGYzNzcuLjFmNTdmYTk1NjBkNjE2
NzY5ZDNiZmJjZjBhNjM4OGM4Yzg3ZmY0MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaApA
QCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0
cnVjdCBDbGlwYm9hcmRJbWFnZVJlYWRlciA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICBD
bGlwYm9hcmRJbWFnZVJlYWRlcihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWFkRmlsZW5hbWUo
Y29uc3QgU3RyaW5nJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgYm9v
bCBzaG91bGRSZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQg
cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRCdWZmZXIo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBT
dHJpbmcgbV9taW1lVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZS5jcHAKaW5kZXggNjliYzNkM2EwM2NlNDVlYzdjZTg2MzZkNGIxN2Q5MzU5ZDNjZjBl
Yi4uZDA3NDZkYTJkYTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRiZjljOTA3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTIxNiw4ICsyMTYs
OCBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6Omludm9rZUNvbXBsZXRp
b25IYW5kbGVyKCkKICAgICAgICAgYXV0byYgZGF0YSA9IGl0ZW1UeXBlTG9hZGVyLT5kYXRhKCk7
CiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYgISFz
dGQ6OmdldDxTdHJpbmc+KGRhdGEpKQogICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZVN0cmlu
Zyh0eXBlLCBzdGQ6OmdldDxTdHJpbmc+KGRhdGEpKTsKLSAgICAgICAgZWxzZSBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KGRhdGEpKQotICAg
ICAgICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwgc3RkOjpnZXQ8UmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PihkYXRhKS5jb3B5UmVmKCkpOworICAgICAgICBlbHNlIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihkYXRhKSkKKyAgICAgICAgICAg
IGN1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Pihk
YXRhKS5jb3B5UmVmKCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNDksNyArMjQ5
LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVt
VHlwZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZygKICAgICBpZiAoIXN0cmluZ1Jlc3VsdC5pc051
bGwoKSkKICAgICAgICAgbV9kYXRhID0geyBzdHJpbmdSZXN1bHQgfTsKICAgICBlbHNlIGlmIChh
dXRvIGFycmF5QnVmZmVyID0gbV9ibG9iTG9hZGVyLT5hcnJheUJ1ZmZlclJlc3VsdCgpKQotICAg
ICAgICBtX2RhdGEgPSB7IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVu
Z3RoKCkpIH07CisgICAgICAgIG1fZGF0YSA9IHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpKSB9OwogICAgIG1fYmxvYkxvYWRlciA9IG51bGxwdHI7CiAgICAgaW52b2tlQ29t
cGxldGlvbkhhbmRsZXIoKTsKIH0KQEAgLTI2NSw4ICsyNjUsOCBAQCB2b2lkIENsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURh
dGFJZk5lZQogewogICAgIGlmIChtX3R5cGUgPT0gInRleHQvaHRtbCJfcykgewogICAgICAgICBT
dHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7Ci0gICAgICAgICAgICBh
dXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KG1fZGF0
YSk7CisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+
PihtX2RhdGEpKSB7CisgICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hh
cmVkQnVmZmVyPj4obV9kYXRhKTsKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJp
bmc6OmZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAg
ICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwpAQCAtMjc4
LDkgKzI3OCw5IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJv
YXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiAgICAgfQogCiAgICAgaWYgKG1f
dHlwZSA9PSAiaW1hZ2UvcG5nIl9zKSB7Ci0gICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXJUb1Nhbml0aXplOwotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpCi0gICAgICAgICAgICBi
dWZmZXJUb1Nhbml0aXplID0gc3RkOjpnZXQ8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Piht
X2RhdGEpLnB0cigpOworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0
aXplOworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVy
Pj4obV9kYXRhKSkKKyAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSBzdGQ6OmdldDxSZWY8
U2hhcmVkQnVmZmVyPj4obV9kYXRhKS5wdHIoKTsKICAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBidWZmZXJUb1Nhbml0
aXplID0gdXRmOEJ1ZmZlcihzdGQ6OmdldDxTdHJpbmc+KG1fZGF0YSkpOwogCkBAIC0yOTYsNyAr
Mjk2LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJ
dGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKICAgICAgICAgfQogCiAgICAgICAgIGlt
YWdlQnVmZmVyLT5jb250ZXh0KCkuZHJhd0ltYWdlKGJpdG1hcEltYWdlLmdldCgpLCBGbG9hdFBv
aW50Ojp6ZXJvKCkpOwotICAgICAgICBtX2RhdGEgPSB7IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShpbWFnZUJ1ZmZlci0+dG9EYXRhKCJpbWFnZS9wbmciX3MpKSB9OworICAgICAgICBt
X2RhdGEgPSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGltYWdlQnVmZmVyLT50b0RhdGEoImltYWdl
L3BuZyJfcykpIH07CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGlu
Z3NEYXRhU291cmNlLmgKaW5kZXggMmRjOWQ1MDBmMjUzNWU4Y2IyMWNiYTMzY2U0YWUxZTI1NDEz
MTEwZS4uYWQ0ZDM2YjA3ZmY0MGNlZDhkMDk5ZGQ0MzA2OTkyMmFhMzU3YTVkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaApAQCAtMzQsNyArMzQsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9iOwotY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVByb21pc2U7CiBjbGFz
cyBGaWxlUmVhZGVyTG9hZGVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CkBAIC01Myw3
ICs1Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7
CiAKLSAgICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgQnVmZmVyT3JTdHJpbmcgPSBzdGQ6
OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj47CiAgICAgY2xhc3MgQ2xpcGJvYXJk
SXRlbVR5cGVMb2FkZXIgOiBwdWJsaWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCwgcHVibGljIFJl
ZkNvdW50ZWQ8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAg
IHN0YXRpYyBSZWY8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcm
IHR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlw
Ym9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCAyOTNmNTIzMGQwZDc3
MTIzZGIxMzBiMDE2OTM2OTlmYmFmZjU0YWI0Li40MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhh
ZjMwN2EzYTQ0MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1t
CkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9h
cmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENsaXBib2FyZEltYWdl
UmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmci
KSB7CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3Rh
bmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9h
cmRJbWFnZVJlYWRlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQppbmRleCAxNTdjNWY1MmMwMjZiZmFh
OTc2NGVjZDI1MDQyM2IxNWQxODYzM2NhLi5iNGMzMWNhNTA2MzljY2NhNGM1NTA1NGQ0OTEzMTc4
NjlkYTdlNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCkBA
IC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9hcmRJ
bWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENsaXBib2FyZEltYWdlUmVh
ZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7
CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhE
YXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDhi
ZmY4MDcwNmU2ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIuLjliM2Y4NDA3NDVkMWEwNjk4
ODNhMjBjM2E2NWY5OTc5ZmIxYTI0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAsNyArNTAsNyBA
QCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKGNv
bnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7CiAgICAg
V1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7
CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAgfSwgWyZdIChj
b25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAo
Y29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1bHQgPSBidWZm
ZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDQyZmU4ZmRm
ZDQ5ZDFlNjBhOGRjZjExYzEyZjJmYjAzZTM0Njg5MDEuLjk1YWEwODY1OTRhNmZiNjBkNTZmZDcx
NWUzZjQyZTI0NDY4OWExYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuY3BwCkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxS
ZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICB9
CiB9CiAKLXZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0
Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKK3ZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25z
ZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVz
dD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25z
ZUJvZHkuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFs
aXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0o
KSBtdXRhYmxlIHsKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVz
dEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQog
ICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCiAgICAg
ICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0
YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlQXNDb250aWd1b3VzKCkg
fSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHBy
b21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4geyBkYXRhLnRha2VBc0NvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgK
aW5kZXggYzM1Y2MzY2JjZWRiM2IyNTExYmYzNTdhMzFhZmUyZDI3NDM4YmQ0Yy4uMTM5NzU0ZDMw
ZTQwMDc4NTRhNjQ0YTc0MTFhM2M4MTdjZDlkMWY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3Rv
cCgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBm
aW5hbDsKIAotICAgIHZvaWQgcHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJik7CisgICAgdm9pZCBwdXRX
aXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1
ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+JiYpOwogCiAgICAgZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJv
b2wgeyBObywgWWVzIH07CiAgICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeGNlcHRpb25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYp
PjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAK
aW5kZXggNDc1MDRjYmViZGFlMDM4MTY3NTlhOGY2OGU4YzI0NjJmZGYyYTVlNS4uYzBmODAzMmIw
NDUyYzM3ZWU0Y2FmYmNhZmQ3OWYwOWQyMTQ2MzMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNw
b25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQog
ewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4m
IGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlz
b2xhdGVkQ29weSgpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlS
ZWYoKTsgLy8gQ29udGlndW91c1NoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUg
cmV0dXJuZWQgYXMtaXMuCisgICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8v
IFNoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAg
ICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAg
ICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAgfSk7CkBAIC0x
NDIsNyArMTQyLDcgQEAgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9u
c2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0
IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1
cm4gZm9ybURhdGEuY29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJl
ZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVy
biBidWZmZXIuY29weVJlZigpOwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4g
UmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJv
ZHkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5o
CmluZGV4IGNiZjhiNjhiYThhM2NhM2FhYzJlNDEyMGJjY2RiYWYyZmExNTY2NjMuLjk0YWQyMTJh
MDcwZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEzNDU4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3LDcgQEAgRXhjZXB0aW9u
IGNvbnZlcnRUb0V4Y2VwdGlvbkFuZExvZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXJyb3Ip
OwogV0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogV0VCQ09SRV9F
WFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBVUkwmIHVybCwgYm9vbCBoYXNWYXJ5U3RhciwgY29uc3QgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4mIHZhcnlIZWFkZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogCi11c2lu
ZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0
YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBz
dGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZm
ZXI+PjsKIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJv
ZHkmKTsKIFdFQkNPUkVfRVhQT1JUIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0
IFJlc3BvbnNlQm9keSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETS5jcHAKaW5kZXggMzQ5YTU5ZGVjMmRhY2EzOGM4YTMyNTFiMTliZmRhYTJmNTVmN2I3
YS4uMDE2MTIxOWQxZTI2YjI2MmM0ZWVlYzgxOThjNDZkOGViMTRjMWIwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAtMTM1LDE3ICsxMzUs
MTcgQEAgYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3Vw
cG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7
CiAgICAgcmV0dXJuIEluaXREYXRhUmVnaXN0cnk6OnNoYXJlZCgpLnNhbml0aXplSW5pdERhdGEo
aW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CiB9CiAKLWJvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RGF0YSkKK2Jvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAg
cmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEoaW5pdERhdGFU
eXBlLCBpbml0RGF0YSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVS
ZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQorUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiByZXNwb25zZSkKIHsKICAgICBpZiAoIW1fcHJpdmF0ZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaApp
bmRleCBkOGE0YjNhZjEyZjFhNzkyM2Q4ODcwNWQ1Yjk1ODFkMzZmMTAyNzBjLi5kN2IxZDUzZDA0
OTFmNzI3NzliNTk0YjJkODNjMDliODNiY2YyMDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgQ0RNSW5zdGFu
Y2U7CiBjbGFzcyBDRE1Qcml2YXRlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNIDogcHVibGljIFJlZkNvdW50ZWQ8Q0RNPiwgcHVibGljIENh
bk1ha2VXZWFrUHRyPENETT4sIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewog
cHVibGljOgpAQCAtNzMsMTAgKzczLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzU2Vz
c2lvbnMoKSBjb25zdDsKICAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21T
dHJpbmcmKSBjb25zdDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsK
LSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVu
dC5oCmluZGV4IDIxZTUyZjRiNzE0ZmI5MWY2N2NmYzM5NjEzOWMxNjUyNWJmYjdiOWIuLjQxMGVk
MmZiNjQyNzU2MmNlOWJkOGVkYTRkOTFhODZiYTk4Y2FhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaApAQCAtMzYsMTQgKzM2LDE0
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENETUluc3RhbmNlOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNQ2xp
ZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPENETUNsaWVudD4gewogcHVibGljOgogICAgIHZp
cnR1YWwgfkNETUNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCBjZG1DbGll
bnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0
IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2Rt
Q2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcm
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMmM2MzhmN2M4NDE5NDY0OTBlMjA0
ODc2NDJjOWE3MjE3M2M1MDU5Zi4uNmY4ODhlMTc4NThkZGE2ZDk0NzFlYzFmNmVmNWQwNjZkZjBl
NDk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9J
bml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCkBAIC01NCw3ICs1NCw3IEBAIG5hbWVzcGFjZSB7
CiAgICAgY29uc3QgdWludDMyX3Qga0tleUlkc01heEtleUlkU2l6ZUluQnl0ZXMgPSA1MTI7CiB9
CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJh
Y3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgc3RkOjpv
cHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlE
c0tleWlkcyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8g
MS4gRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9m
b3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CkBAIC03NCw3ICs3NCw3
IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJh
Y3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkCiAgICAgaWYgKCFraWRzQXJyYXkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtl
eUlEczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAg
ICAgZm9yIChhdXRvJiB2YWx1ZSA6ICpraWRzQXJyYXkpIHsKICAgICAgICAgYXV0byBrZXlJRCA9
IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICBpZiAoIWtleUlEKQpAQCAtOTMsNyArOTMsNyBA
QCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0
S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLXN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK3N0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVL
ZXlpZHMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDEu
IEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9y
bWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdApAQCAtMTExLDcgKzExMSw3
IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoanNvbkRh
dGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4g
SW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1By
b3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRy
YWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0CiAgICAg
Ly8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkv
aW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAgLTE1MSw5ICsxNTEsOSBAQCBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNp
ZmljSGVhZGVyQm94Pj4+IEluaQogICAgIHJldHVybiBwc3NoQm94ZXM7CiB9CiAKLXN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFj
dEtleUlEc0NlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRy
YWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0g
ICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwogCiAgICAgYXV0byBwc3NoQm94ZXMgPSBleHRy
YWN0UHNzaEJveGVzRnJvbUNlbmMoYnVmZmVyKTsKICAgICBpZiAoIXBzc2hCb3hlcykKQEAgLTE4
NSw3ICsxODUsNyBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IElu
aXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNvbgogICAgIHJldHVybiBrZXlJRHM7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2Vu
Yyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNTSCBC
b3ggRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9m
b3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAgLTE5NSw3
ICsxOTUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6
ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5
KCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHNhbml0aXplV2ViTShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgLy8gQ2hlY2sgaWYgdGhlIGJ1ZmZlciBpcyBhIHZhbGlkIFdlYk0gaW5pdERhdGEuCiAg
ICAgLy8gVGhlIFdlYk0gaW5pdERhdGEgaXMgdGhlIENvbnRlbnRFbmNLZXlJRCwgc28gc2hvdWxk
IGJlIGxlc3MgdGhhbiBrV2ViTU1heENvbnRlbnRFbmNLZXlJRFNpemUuCkBAIC0yMDUsMTAgKzIw
NSwxMCBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGF0
aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURz
V2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzV2ViTShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+PiBrZXlJRHM7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkQnVm
ZmVyID0gc2FuaXRpemVXZWJNKGJ1ZmZlcik7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4ga2V5SURzOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBz
YW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdlYk0oYnVmZmVyKTsKICAgICBpZiAoIXNhbml0aXpl
ZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMjMzLDcgKzIzMyw3
IEBAIEluaXREYXRhUmVnaXN0cnk6OkluaXREYXRhUmVnaXN0cnkoKQogCiBJbml0RGF0YVJlZ2lz
dHJ5Ojp+SW5pdERhdGFSZWdpc3RyeSgpID0gZGVmYXVsdDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgYXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXREYXRhVHlwZSk7CiAg
ICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUuc2FuaXRpemVJbml0
RGF0YSkKQEAgLTI0MSw3ICsyNDEsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJl
Z2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYQogICAgIHJl
dHVybiBpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKGJ1ZmZlcik7CiB9CiAKLXN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFj
dEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBhdXRvIGl0ZXIgPSBtX3R5cGVzLmZpbmQoaW5pdERhdGFUeXBlKTsKICAgICBpZiAoaXRlciA9
PSBtX3R5cGVzLmVuZCgpIHx8ICFpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuaAppbmRleCBjZDEzODdhNmJkMDM4ZmYzNGUyY2ZiNzVmNDQzZGU3ZDk0MDMyMWIwLi43
N2Q2MDRiMDhiYjdmN2UzOGJjY2IzNTQ1YjM0YzhiMTM0MzU1ZWYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnku
aApAQCAtMzgsMTkgKzM4LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElTT1By
b3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEluaXREYXRhUmVnaXN0cnkgewog
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbml0RGF0YVJlZ2lzdHJ5JiBzaGFy
ZWQoKTsKICAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8SW5pdERhdGFSZWdpc3RyeT47
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5
SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0cnVjdCBJbml0
RGF0YVR5cGVDYWxsYmFja3MgewotICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJh
Y2sgPSBGdW5jdGlvbjxSZWZQdHI8U2hhcmVkQnVmZmVyPihjb25zdCBTaGFyZWRCdWZmZXImKT47
Ci0gICAgICAgIHVzaW5nIEV4dHJhY3RLZXlJRHNDYWxsYmFjayA9IEZ1bmN0aW9uPHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4oY29uc3QgU2hhcmVkQnVmZmVyJik+Owor
ICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsK
KyAgICAgICAgdXNpbmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0gRnVuY3Rpb248c3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4oY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpPjsKIAogICAgICAgICBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgc2Fu
aXRpemVJbml0RGF0YTsKICAgICAgICAgRXh0cmFjdEtleUlEc0NhbGxiYWNrIGV4dHJhY3RLZXlJ
RHM7CkBAIC02MSw5ICs2MSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmlu
ZyYga2V5aWRzTmFtZSgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiB3ZWJtTmFtZSgp
OwogCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Q
cm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hlc0Zyb21D
ZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUNlbmMoY29uc3Qg
U2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBz
c2hCb3hlc0Zyb21DZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0
cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRp
YyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVDZW5jKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogcHJpdmF0ZToKICAgICBJbml0RGF0YVJlZ2lzdHJ5KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggOGJmYjFjZTcwMWEyZjVhNjliNWI1MTk5MWFhODYzMmVi
Yjg5MjVmOS4uMTQ3NzZjMjAxNTFiZmVmZTM4MDc5YTMzNzMwYzg4NjYyNjhiYTQ2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Np
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpn
ZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZm
CiAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3
b3JraW5nLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaW5pdERhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLmxlbmd0aCgpKSwg
aW5pdERhdGFUeXBlLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdU
Rk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewogICAgICAgICAvLyAxMC4xLiBJZiB0aGUg
aW5pdCBkYXRhIGlzIG5vdCB2YWxpZCBmb3IgaW5pdERhdGFUeXBlLCByZWplY3QgcHJvbWlzZSB3
aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIC8vIDEwLjIuIExldCBzYW5p
dGl6ZWQgaW5pdCBkYXRhIGJlIGEgdmFsaWRhdGVkIGFuZCBzYW5pdGl6ZWQgdmVyc2lvbiBvZiBp
bml0IGRhdGEuCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZEluaXREYXRh
ID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXRE
YXRhKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZElu
aXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUs
IGluaXREYXRhKTsKIAogICAgICAgICAvLyAxMC4zLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFp
bGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAg
ICAgIGlmICghc2FuaXRpemVkSW5pdERhdGEpIHsKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIE1l
ZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgY29uc3QgQnVmZgogICAgICAgICAgICAgbV9sYXRlc3REZWNyeXB0VGltZSA9IDA7CiAg
ICAgICAgIH0KIAotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UobV9z
ZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBzYW5pdGl6ZWRJbml0RGF0YS5yZWxlYXNlTm9uTnVs
bCgpLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlm
aWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RN
SW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAg
ICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlcXVlc3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUsIGluaXRE
YXRhVHlwZSwgc2FuaXRpemVkSW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtU
aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRl
bnRpZmllcildIChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5j
ZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTQyMiw3ICs0MjIs
NyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVz
cG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAgIC8vIDYuIFJ1biB0aGUgZm9sbG93aW5n
IHN0ZXBzIGluIHBhcmFsbGVsOgogICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhp
cywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIHJlc3BvbnNlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzcG9uc2UuZGF0YSgpLCBy
ZXNwb25zZS5sZW5ndGgoKSksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVy
ID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDYuMS4gTGV0
IHNhbml0aXplZCByZXNwb25zZSBiZSBhIHZhbGlkYXRlZCBhbmQvb3Igc2FuaXRpemVkIHZlcnNp
b24gb2YgcmVzcG9uc2UgY29weS4KLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emVkUmVzcG9uc2UgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNl
KTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3Bv
bnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7CiAKICAg
ICAgICAgLy8gNi4yLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCBvciBpZiBzYW5pdGl6
ZWQgcmVzcG9uc2UgaXMgZW1wdHksIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVk
IFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFzYW5pdGl6ZWRSZXNwb25zZSB8fCBzYW5pdGl6ZWRS
ZXNwb25zZS0+aXNFbXB0eSgpKSB7CkBAIC02MDEsNyArNjAxLDcgQEAgdm9pZCBNZWRpYUtleVNl
c3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIC8v
IDQuMy4gTGV0IG1lc3NhZ2UgdHlwZSBiZSBudWxsLgogCiAgICAgICAgIC8vIDQuNC4gVXNlIHRo
ZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3RhbmNl
U2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0
aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBX
VEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Im
JiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAg
IG1faW5zdGFuY2VTZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwgbV9zZXNz
aW9uVHlwZSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRl
bnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0
YXR1c1ZlY3RvciYmIGtleXMsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRl
ZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIApAQCAtNjQ5LDcgKzY0OSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpyZW1v
dmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIC8vIDUuIFJldHVybiBwcm9t
aXNlLgogfQogCi12b2lkIE1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlN
ZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBtZXNzYWdlKQordm9p
ZCBNZWRpYUtleVNlc3Npb246OmVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUgbWVz
c2FnZVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG1lc3NhZ2UpCiB7CiAgICAg
Ly8gNi40LjEgUXVldWUgYSAibWVzc2FnZSIgRXZlbnQKICAgICAvLyBodHRwczovL3czYy5naXRo
dWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNxdWV1ZS1tZXNzYWdlCkBAIC03MTYsNyArNzE2LDcgQEAg
dm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKENETUluc3RhbmNlU2Vzc2lv
bjo6S2V5U3RhdHVzVmVjdG9yJiYgaW4KICAgICAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFLZXlT
ZXNzaW9uOjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBNZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKENE
TU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBt
ZXNzYWdlKQogewogICAgIGVucXVldWVNZXNzYWdlKG1lc3NhZ2VUeXBlLCBtZXNzYWdlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5oCmluZGV4IDNkOTZmODgwMmU3NDc4NDFjNGVmZGE4MWRjYjk0MWVhNmU0YTc1
ZTQuLjM2NWFjZTVjMDk1ZTdkYzBjNTcxZTc2Y2NmMmMwN2FhZmM2MmJhYTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Np
b24uaApAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBDRE07CiBjbGFzcyBEZWZlcnJlZFByb21pc2U7
CiBjbGFzcyBNZWRpYUtleVN0YXR1c01hcDsKIGNsYXNzIE1lZGlhS2V5czsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VQcm94eTsKIApAQCAtODcsMjAgKzg3LDIwIEBA
IHB1YmxpYzoKICAgICB1c2luZyBDbG9zZWRQcm9taXNlID0gRE9NUHJvbWlzZVByb3h5PElETFVu
ZGVmaW5lZD47CiAgICAgQ2xvc2VkUHJvbWlzZSYgY2xvc2VkKCkgeyByZXR1cm4gbV9jbG9zZWRQ
cm9taXNlLmdldCgpOyB9CiAKLSAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRC
dWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+JiBzdGF0dXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dHVzZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiYgc3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBtX3N0
YXR1c2VzOyB9CiAKICAgICB1bnNpZ25lZCBpbnRlcm5hbEluc3RhbmNlU2Vzc2lvbk9iamVjdFJl
ZkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnN0YW5jZVNlc3Npb24tPnJlZkNvdW50KCk7IH0K
IAogcHJpdmF0ZToKICAgICBNZWRpYUtleVNlc3Npb24oRG9jdW1lbnQmLCBXZWFrUHRyPE1lZGlh
S2V5cz4mJiwgTWVkaWFLZXlTZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZp
ZXIsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0YW5jZVNlc3Npb24+JiYpOwotICAgIHZvaWQgZW5x
dWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7Cisg
ICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCB1cGRhdGVFeHBpcmF0aW9uKGRvdWJsZSk7CiAg
ICAgdm9pZCBzZXNzaW9uQ2xvc2VkKCk7CiAgICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKSBjb25zdDsKIAogICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAogICAgIHZv
aWQgdXBkYXRlS2V5U3RhdHVzZXMoQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNW
ZWN0b3ImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRNZXNzYWdl
KENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBm
aW5hbDsKICAgICB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAg
ICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgZmluYWw7CiAKQEAgLTE0MCwxMCArMTQw
LDEwIEBAIHByaXZhdGU6CiAgICAgTWVkaWFLZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25UeXBlOwog
ICAgIFJlZjxDRE0+IG1faW1wbGVtZW50YXRpb247CiAgICAgUmVmPENETUluc3RhbmNlU2Vzc2lv
bj4gbV9pbnN0YW5jZVNlc3Npb247Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBtX3Jl
Y29yZE9mS2V5VXNhZ2U7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4g
bV9yZWNvcmRPZktleVVzYWdlOwogICAgIGRvdWJsZSBtX2ZpcnN0RGVjcnlwdFRpbWUgeyAwIH07
CiAgICAgZG91YmxlIG1fbGF0ZXN0RGVjcnlwdFRpbWUgeyAwIH07Ci0gICAgVmVjdG9yPHN0ZDo6
cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiBtX3N0YXR1c2VzOworICAg
IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0
YXR1cz4+IG1fc3RhdHVzZXM7CiAKICAgICB1c2luZyBEaXNwbGF5Q2hhbmdlZE9ic2VydmVyID0g
T2JzZXJ2ZXI8dm9pZChQbGF0Zm9ybURpc3BsYXlJRCk+OwogICAgIERpc3BsYXlDaGFuZ2VkT2Jz
ZXJ2ZXIgbV9kaXNwbGF5Q2hhbmdlZE9ic2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRl
eCAwNmFmZmI1ZjJlZGZlMTgyOTcxOWVhMTdjMjc4ODU0YmM1YTZlNjBjLi4zOThlOGFiMWI2NTZi
NDQ1OTI3YmViNmJjNjkzZGQzOTlhNjg3YWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAt
NTYsNyArNTYsNyBAQCB1bnNpZ25lZCBsb25nIE1lZGlhS2V5U3RhdHVzTWFwOjpzaXplKCkKICAg
ICByZXR1cm4gbV9zZXNzaW9uLT5zdGF0dXNlcygpLnNpemUoKTsKIH0KIAotc3RhdGljIGJvb2wg
a2V5SWRzTWF0Y2goY29uc3QgU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIp
CitzdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBh
LCBjb25zdCBCdWZmZXJTb3VyY2UmIGIpCiB7CiAgICAgYXV0byBsZW5ndGggPSBhLnNpemUoKTsK
ICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggIT0gYi5sZW5ndGgoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
aAppbmRleCBjMjExMTEzYTJjNmRhYzc5NzkyNGE5OWQyZDJkZjk3YzJlNjVmODUwLi42MGQ2MmFh
ZmY4MDc0ZGFkYTZlMzFhM2YyYjM3MGE2ZDZkMDFmNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCkBA
IC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhS2V5U2Vz
c2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIE1lZGlhS2V5U3RhdHVzTWFwIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFLZXlT
dGF0dXNNYXA+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAppbmRleCA4M2IyNGFjZWFhNWIxMjk0YmI0ZWE0Mzlm
YjJkNWM0ZjZjY2Q0NzUzLi4zNjdmMzFkMTg2YjUxNjM5YTljNzQyMTNmMGNmOGU2ZjJmOGQyNmVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleXMuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgYm9vbCBNZWRpYUtleXM6Omhhc09wZW5TZXNz
aW9ucygpIGNvbnN0CiAgICAgICAgIH0pOwogfQogCi12b2lkIE1lZGlhS2V5czo6dW5yZXF1ZXN0
ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKK3ZvaWQgTWVkaWFLZXlzOjp1bnJlcXVlc3Rl
ZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBmb3IgKGF1dG8m
IGNkbUNsaWVudCA6IG1fY2RtQ2xpZW50cykKICAgICAgICAgY2RtQ2xpZW50LmNkbUNsaWVudFVu
cmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0
YS5jb3B5UmVmKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmgKaW5kZXggN2I1OWEzYmM2ZDIyNTZmYzY1NmYwOGNiZjI2ODkxODUxMDk4
M2EyMi4uOTFhMWEwNzExNDMzYmUyNDdkZDJhODVjNWY0YWQwOTM4YTA5YTdhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCkBAIC04
Niw3ICs4Niw3IEBAIHByb3RlY3RlZDoKICAgICBNZWRpYUtleXMoRG9jdW1lbnQmLCBib29sIHVz
ZURpc3RpbmN0aXZlSWRlbnRpZmllciwgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkLCBjb25z
dCBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mLCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFu
Y2U+JiYpOwogCiAgICAgLy8gQ0RNSW5zdGFuY2VDbGllbnQKLSAgICB2b2lkIHVucmVxdWVzdGVk
SW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJikgZmluYWw7CisgICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2Vp
dmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
IAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkg
Y29uc3QgeyByZXR1cm4gbV9sb2dnZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcAppbmRleCBkNjViMjdiZmU4YTFlZjIxOTkyYjllMWFkMDVhY2E1NGU3MmQ2
MDVlLi5iOGYyZWMzNzNkODczY2M5YzhhY2IzYzZlYzg0NWY2YWIwMDA5YWE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yOTcsMTQgKzI5NywxNCBA
QCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4g
Zm9ybURhdGFCb2R5KCk7CiAKICAgICBpZiAoaXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUEFMOjpVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4
dEJvZHkoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUEFMOjpVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4
dEJvZHkoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChp
c1VSTFNlYXJjaFBhcmFtcygpKQotICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFBBTDo6VVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHko
KS50b1N0cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAg
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29k
ZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRs
aW5nOjpFbnRpdGllcykpOwogCiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0
aCgpKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5i
eXRlTGVuZ3RoKCkpOwogICAgIGlmIChpc0FycmF5QnVmZmVyVmlldygpKQotICAgICAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmll
d0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNl
QWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5o
CmluZGV4IDA4OTgzZWMwMDQzZjZjOTlhN2ZhZWFmYzY5M2NlODI4MjNiNDAxYmMuLmJhZDFiNWVh
MjNiNzcxYjM0N2Y0YjA0YTU2NzU4ZmMwMDg4ZTEyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQ
dHI8Rm9ybURhdGE+IGJvZHlBc0Zvcm1EYXRhKCkgY29uc3Q7CiAKLSAgICB1c2luZyBUYWtlbkRh
dGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50
PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CiAgICAg
VGFrZW5EYXRhIHRha2UoKTsKIAogICAgIHZvaWQgc2V0QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+
JiYgZGF0YSkgeyBtX2RhdGEgPSBXVEZNb3ZlKGRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGZhZGU2M2U0YmU0
OWY0ZDE5MzlkMWRiOGFlMTMyMTgxYWQwYTlhMmIuLmMyMzFmMjA3ZGEyNWNkMmExNTg2MGQyOGRi
M2NlMTdlODU3NTc3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0zMjksMTIgKzMyOSwxMiBAQCB2b2lkIEZldGNoQm9k
eUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkKICAg
ICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBGZXRjaEJvZHlDb25z
dW1lcjo6c2V0RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAg
IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0
Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewogICAgIGlmICghbV9idWZmZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDZiYmJjZTczNDdhYTNiYzJmNzBmNGVjNmQ4YmIw
ZTE4NzJhYWY4OTcuLjg3MWQyYzA4NjMzMWE5ODI5NGExNjZhNGI0MmUzMTg0ZTAzNzc3MmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgK
QEAgLTUwLDEwICs1MCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4g
ISFtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRC
dWZmZXI+JiYpOworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZvaWQgc2V0RGF0YShSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0
YWtlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgp
OwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwogICAg
IFN0cmluZyB0YWtlQXNUZXh0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5jcHAKaW5kZXggZmM1NWNjN2Q4M2Q4YmMxMWYwODU0ZGMzY2ZkODUwOTdhMzFm
MTBmNi4uMDNmODliNjFjYTVmN2M3MTc2YjlkODhjZDEzNjYwZTg2YjdhMjU0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTEzNSw3ICsxMzUs
NyBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdG9wKCkKICAgICAgICAgbV9sb2FkZXItPmNhbmNlbCgp
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaExvYWRlcjo6c3RhcnRTdHJlYW1pbmco
KQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoTG9hZGVyOjpzdGFydFN0cmVh
bWluZygpCiB7CiAgICAgQVNTRVJUKG1fY29uc3VtZXIpOwogICAgIGF1dG8gZmlyc3RDaHVuayA9
IG1fY29uc3VtZXItPnRha2VEYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoTG9hZGVyLmgKaW5kZXggMmY5MGYwZWMzZmY5MDVhMjYyMzFjODRjNzJhN2ExODZjZDRiZmU4
My4uNDYxMmQwZTBlM2E3ZWZlMzA2MDM5NmIwZDc1YTJmYTNiYzRlZGRhZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApAQCAtMzksMTQgKzM5LDE0IEBAIGNs
YXNzIEZldGNoQm9keUNvbnN1bWVyOwogY2xhc3MgRmV0Y2hMb2FkZXJDbGllbnQ7CiBjbGFzcyBG
ZXRjaFJlcXVlc3Q7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRmV0Y2hMb2Fk
ZXIgZmluYWwgOiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6CiAgICAg
RmV0Y2hMb2FkZXIoRmV0Y2hMb2FkZXJDbGllbnQmLCBGZXRjaEJvZHlDb25zdW1lciopOwogICAg
IFdFQkNPUkVfRVhQT1JUIH5GZXRjaExvYWRlcigpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc3RhcnRTdHJlYW1pbmcoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
c3RhcnRTdHJlYW1pbmcoKTsKIAogICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIGNvbnN0IEZldGNoUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc3RhcnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEJsb2ImKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDBjNTk4MmRmNzY2NDQ5Y2E1
NGQ3YTllYjhkNjBjYzRmZTM4ODIwNDguLjliODRjNDM4NDljOTY4ZGNmYjExYTVmZjBlN2IyNTU2
Njg4YTdmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcApAQCAtNDQ2LDcgKzQ0Niw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURh
dGEoUmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAgICAg
ICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLnNldEFzRm9ybURh
dGEoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpc10oUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICAgICAgW3RoaXNdKFJlZjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkpCiAgICAg
ICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLmNvbnN1bWVyKCku
c2V0RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpAQCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgRmV0Y2hS
ZXNwb25zZTo6ZmVlZFN0cmVhbSgpCiAgICAgY2xvc2VTdHJlYW0oKTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RhcnRTdHJlYW1pbmcoKQor
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6
OnN0YXJ0U3RyZWFtaW5nKCkKIHsKICAgICBBU1NFUlQobV9sb2FkZXIpOwogICAgIHJldHVybiBt
X2xvYWRlci0+c3RhcnRTdHJlYW1pbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggNmY0YTI0ZTI3NWUxNjlhMTM3NzE0NTAwZGFmY2QxZDY1
NWNhZjUxNS4uNmIwNTA1ZDg4YjEzMmUyOGNiOTU0YWI5YTBlN2VmZTgxM2Y3MDJhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTg1LDcgKzg1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmVlZFN0cmVhbSgpIGZpbmFsOwogICAgIHZvaWQgY2Fu
Y2VsKCkgZmluYWw7CiAKLSAgICB1c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3Rk
OjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47
CisgICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBS
ZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CiAgICAgUmVzcG9uc2VEYXRhIGNvbnN1
bWVCb2R5KCk7CiAgICAgdm9pZCBzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiwgdWludDY0X3Qg
Ym9keVNpemVXaXRoUGFkZGluZyk7CiAKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2YXRlOgogCiAg
ICAgICAgIHZvaWQgY29uc3VtZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNr
JiYpOwogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7Cisg
ICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzdGFydFN0cmVhbWluZygpOwog
ICAgICAgICBOb3RpZmljYXRpb25DYWxsYmFjayB0YWtlTm90aWZpY2F0aW9uQ2FsbGJhY2soKSB7
IHJldHVybiBXVEZNb3ZlKG1fcmVzcG9uc2VDYWxsYmFjayk7IH0KICAgICAgICAgQ29uc3VtZURh
dGFCeUNodW5rQ2FsbGJhY2sgdGFrZUNvbnN1bWVEYXRhQ2FsbGJhY2soKSB7IHJldHVybiBXVEZN
b3ZlKG1fY29uc3VtZURhdGFDYWxsYmFjayk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAppbmRleCA2MTM3YzJjZjZmZjQ3YTM2ODQwZjEx
Yjk2NmI5ZTUyNTg3MWQ4MTVmLi4xYTY2YmY4MTgzMjBlOTU2MDdkNjE1ZjFhMDgyYTgyNzZlYjJh
MzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHQuaApAQCAtMzgsNyArMzgsNyBAQCBlbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxp
Z2h0IDogYm9vbCB7IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgSGlnaGxpZ2h0UmVxdWVzdE9yaWdp
bmF0ZWRJbkFwcCA6IGJvb2wgeyBObywgWWVzIH07CiAKIHN0cnVjdCBBcHBIaWdobGlnaHQgewot
ICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGhpZ2hsaWdodDsKKyAgICBSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaGlnaGxpZ2h0OwogICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiB0ZXh0OwogICAgIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGlzTmV3R3JvdXA7
CiAgICAgSGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCByZXF1ZXN0T3JpZ2luYXRlZElu
QXBwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKaW5kZXggODNiOTVkN2NmMDA3YWE1NGZiZmUyMzRiN2Q4
YjFlYjhlMTk5NjNlNC4uNWU4MGYwYzA3MmQ0OWEzZWY3OTY5NTkzMDJjNDQ1NmNkMmFiZGU4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRSYW5nZURhdGEuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY29uc3RleHByIHVpbnQ2NF90IGhpZ2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1
MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0dXJlICAoQSlwcGxlKEFQKXBsaWNhdGlvbihIKWln
aGxpZ2h0cygyMDIxKQogCi1zdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitz
dGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
OjpjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1
dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOwogICAgIGF1dG8g
ZGVjb2RlciA9IGNvbnRpZ3VvdXNCdWZmZXItPmRlY29kZXIoKTsKQEAgLTUzLDcgKzUzLDcgQEAg
c3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0
YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEIKICAgICByZXR1cm4gZGF0YTsKIH0KIAotUmVmPFNoYXJl
ZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjp0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0CitS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjp0b1NoYXJl
ZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBlbmNvZGVy
OwogICAgIGVuY29kZXIgPDwgKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCmluZGV4IGNmNjM4MWFjZmIw
YTUyMTFiNDM1MDhiN2I1MTdkNmRiMmY2ZmM3NDMuLmI1ZGFmNjAyNTM5OGEzZjdlNmYxZDM3YWJl
Y2U4NDRkNGYxYzY1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCkBAIC0zMywxMiArMzMsMTIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCi1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBBcHBI
aWdobGlnaHRSYW5nZURhdGEgewogV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhPiBjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBjcmVhdGUoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHN0cnVjdCBOb2RlUGF0aENvbXBvbmVudCB7CiAg
ICAgICAgIFN0cmluZyBpZGVudGlmaWVyOwogICAgICAgICBTdHJpbmcgbm9kZU5hbWU7CkBAIC0x
MTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRlY29kZShEZWNvZGVyJik7
CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiBwcml2
YXRlOgogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCmluZGV4IGRjMzlh
MGYwZDE4ZmZmY2E3ZGZiNDY1MjE5Y2Q2MTJhOWY3MzhmOGYuLmU1ZGU4NDk0ZjM1MDQ1MzU5NGIy
ZjJlODhjM2RkYTMzZmE5YWY3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCkBAIC0yMzcsNyArMjM3LDcg
QEAgdm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpzdG9yZUFwcEhpZ2hsaWdodChSZWY8U3RhdGlj
UmFuZ2U+JiYgcmFuZ2UpCiAgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5zdG9yZUFw
cEhpZ2hsaWdodChXVEZNb3ZlKGhpZ2hsaWdodCkpOwogfQogCi12b2lkIEFwcEhpZ2hsaWdodFN0
b3JhZ2U6OnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgU2Nyb2xsVG9IaWdobGlnaHQgc2Nyb2xsKQordm9pZCBBcHBIaWdobGlnaHRTdG9y
YWdlOjpyZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBTY3JvbGxUb0hpZ2hsaWdodCBzY3JvbGwpCiB7CiAgICAgYXV0byBh
cHBIaWdobGlnaHRSYW5nZURhdGEgPSBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShidWZm
ZXIpOwogICAgIGlmICghYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCmluZGV4IGIx
NTJmNzZlZDQyNDA4OTJlYTdkZTIxZTJjYjA2ZDQ3MmQ4NzMzNjAuLmUyNzY2MzNiNDg0ZjgxMDk0
YWRlY2U0NWY2NGFiYmVkMTc4MTI1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKQEAgLTM5LDcgKzM5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKIAogY2xhc3Mg
RG9jdW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU3RhdGljUmFuZ2U7CiBjbGFzcyBIaWdobGlnaHQ7CiAKQEAgLTU0LDcgKzU0
LDcgQEAgcHVibGljOgogICAgIH5BcHBIaWdobGlnaHRTdG9yYWdlKCk7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTdGF0aWNSYW5nZT4mJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiwgU2Nyb2xsVG9IaWdobGlnaHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBTY3JvbGxUb0hpZ2hsaWdodCk7CiAgICAgdm9pZCByZXN0b3JlVW5yZXN0b3JlZEFw
cEhpZ2hsaWdodHMoKTsKICAgICBNb25vdG9uaWNUaW1lIGxhc3RSYW5nZVNlYXJjaFRpbWUoKSBj
b25zdCB7IHJldHVybiBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaDsgfQogICAgIHZvaWQgcmVzZXRM
YXN0UmFuZ2VTZWFyY2hUaW1lKCkgeyBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaCA9IE1vbm90b25p
Y1RpbWU6Om5vdygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKaW5kZXggYTFjOTMxMmQ0NWVi
YmZjZTlmMzJlNmNjMWExYTJlODRkZGNhN2M3Mi4uMmEyYzFmYzMyOTU4MDVkNTJmZDU2YWYzMGI0
NTVhZTJjY2NjNDg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcApAQCAtMzksNyArMzksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgS2V5UGF0aFR5cGUgeyBOdWxsLCBT
dHJpbmcsIEFycmF5IH07CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxp
emVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiB7CiAgICAgYXV0byBlbmNvZGVyID0gS2V5ZWRFbmNv
ZGVyOjplbmNvZGVyKCk7CiAKQEAgLTI4MiwxMyArMjgyLDEzIEBAIHN0YXRpYyB2b2lkIGVuY29k
ZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElEQktleURhdGEmIGtleSkKICAgICB9
CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRh
KGNvbnN0IElEQktleURhdGEmIGtleSkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlE
QktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQogewogICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJzaW9uKTsKIAogICAgIGVuY29kZUtleShk
YXRhLCBrZXkpOwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShkYXRhKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpOwogfQogCiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlS2V5KGNvbnN0
IHVpbnQ4X3QqJiBkYXRhLCBjb25zdCB1aW50OF90KiBlbmQsIElEQktleURhdGEmIHJlc3VsdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VyaWFsaXphdGlvbi5oCmluZGV4IGFhZmRiMzcwMWYwZWY0NDhkNmI4YWI1MTAxMTg1YzRi
MzRmZmFhOGEuLjY1YzRhNjNjNzg3ZjM2OTQxNDZlMjMxYzhjNTQwMTcwNjdhNGY0MjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcmlhbGl6YXRpb24uaApAQCAtMzIsMTAgKzMyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgSURCS2V5RGF0YTsKIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNl
cmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFs
PElEQktleVBhdGg+Jik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCB1aW50OF90
KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7
CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNv
bnN0IElEQktleURhdGEmKTsKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURh
dGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleURhdGEoY29uc3Qg
dWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgSURCS2V5RGF0YSYpOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggMGE0NjliZDBiZDFmMzhkY2I5NmIz
OWQ4YzMwMDBhZjczZDEyYWI1OS4uYzlkNmRhNmJkZDlmOTM5NTAxZjRmNDIzMmI0Yzc4MzdkODQw
ZGFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IE1lZGlhUmVjb3JkZXI6OnN0YXJ0UmVjb3JkaW5nKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRp
bWVTbGljCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3RhdGljIGlubGluZSBSZWY8QmxvYkV2ZW50
PiBjcmVhdGVEYXRhQXZhaWxhYmxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGRvdWJsZSB0aW1lQ29kZSkKK3N0YXRpYyBpbmxpbmUgUmVmPEJsb2JFdmVudD4gY3JlYXRlRGF0
YUF2YWlsYWJsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
ZG91YmxlIHRpbWVDb2RlKQogewogICAgIGF1dG8gYmxvYiA9IGJ1ZmZlciA/IEJsb2I6OmNyZWF0
ZShjb250ZXh0LCBidWZmZXItPmV4dHJhY3REYXRhKCksIG1pbWVUeXBlKSA6IEJsb2I6OmNyZWF0
ZShjb250ZXh0KTsKICAgICByZXR1cm4gQmxvYkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRh
dGFhdmFpbGFibGVFdmVudCwgQmxvYkV2ZW50OjpJbml0IHsgeyBmYWxzZSwgZmFsc2UsIGZhbHNl
IH0sIFdURk1vdmUoYmxvYiksIHRpbWVDb2RlIH0sIEJsb2JFdmVudDo6SXNUcnVzdGVkOjpZZXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyLmgKaW5kZXggNzcxMmI0NDUyODM2N2Q4YzI3MjUwMmFkYmFhY2FhZjk3ODhjYmRiMC4u
MWU5Yjc0YWIxN2UzMTA4ZGI0MjA5YjliNGYwMjE0ZGExMWFjNmUwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCkBAIC0x
MDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoRXJyb3IoRXhjZXB0aW9u
JiYpOwogCiAgICAgZW51bSBjbGFzcyBUYWtlUHJpdmF0ZVJlY29yZGVyIHsgTm8sIFllcyB9Owot
ICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPjsKKyAgICB1c2luZyBG
ZXRjaERhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+OwogICAgIHZvaWQgZmV0
Y2hEYXRhKEZldGNoRGF0YUNhbGxiYWNrJiYsIFRha2VQcml2YXRlUmVjb3JkZXIpOwogCiAgICAg
Ly8gTWVkaWFTdHJlYW06Ok9ic2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCmluZGV4IDNmNGM5YmNkMTMzYWMyOWYz
ZjdkZGUxOTk0NzhlMzkyNTdkNWU2NmIuLjg3NGFhN2YwYjE4ZjBlZTc1ODgwYmE1ZjVlZjY3ZDQ3
YmZjMmIyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L01lZGlhTWV0YWRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhTWV0YWRhdGEuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQXJ0d29ya0ltYWdl
TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5l
dHdvcmtMCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gU2FuaXRpemUgdGhlIGltYWdl
IGJ5IGRlY29kaW5nIGl0IGludG8gYSBCaXRtYXBJbWFnZS4KLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXJUb1Nhbml0aXplID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwor
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplID0gbV9j
YWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIGF1dG8gYml0bWFwSW1hZ2UgPSBCaXRt
YXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgYml0bWFwSW1hZ2UtPnNldERhdGEoV1RGTW92ZShidWZm
ZXJUb1Nhbml0aXplKSwgdHJ1ZSk7CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5jcHAKaW5kZXggMmIzY2RlMzYwODI0NzFjMTFjODdmY2Y2MWNjODFjYzM2MGMzOWQ5MC4uZDM3
OGFmYzZmOGExYjU3YTAzMDJlMmM4NjhiMjQwYTIwOTdmZTRjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAtNTMwLDcg
KzUzMCw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJUaW1lckZpcmVkKCkKICAg
ICAvLyBodHRwczovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL21lZGlh
LXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCNzb3VyY2VidWZmZXItc2VnbWVudC1wYXJzZXItbG9v
cAogICAgIC8vIFdoZW4gdGhlIHNlZ21lbnQgcGFyc2VyIGxvb3AgYWxnb3JpdGhtIGlzIGludm9r
ZWQsIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YXBwZW5kRGF0YSA9IFdURk1vdmUobV9wZW5kaW5nQXBwZW5kRGF0YSk7CisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGFwcGVuZERhdGEgPSBXVEZNb3ZlKG1fcGVuZGluZ0FwcGVu
ZERhdGEpOwogICAgIC8vIDEuIExvb3AgVG9wOiBJZiB0aGUgaW5wdXQgYnVmZmVyIGlzIGVtcHR5
LCB0aGVuIGp1bXAgdG8gdGhlIG5lZWQgbW9yZSBkYXRhIHN0ZXAgYmVsb3cuCiAgICAgaWYgKCFh
cHBlbmREYXRhIHx8ICFhcHBlbmREYXRhLT5zaXplKCkpIHsKICAgICAgICAgc291cmNlQnVmZmVy
UHJpdmF0ZUFwcGVuZENvbXBsZXRlKEFwcGVuZFJlc3VsdDo6QXBwZW5kU3VjY2VlZGVkKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCmlu
ZGV4IDUyMGMwNzc1Njk2YTJmMGUyZTczMDA3MzVlOGM5Nzc0OTVmMWE2MTQuLmQ0Yzg1NzljMGJi
ZDQ0M2E1MTJmYTlmNjhjNDI3ZWMwNDg4NWQwZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAtMjIyLDcgKzIyMiw3IEBAIHBy
aXZhdGU6CiAKICAgICBXVEY6Ok9ic2VydmVyPHZvaWQqKCk+IG1fb3BhcXVlUm9vdFByb3ZpZGVy
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsKICAgICBU
aW1lciBtX2FwcGVuZEJ1ZmZlclRpbWVyOwogCiAgICAgUmVmUHRyPFZpZGVvVHJhY2tMaXN0PiBt
X3ZpZGVvVHJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKaW5kZXggZjU4Mjdk
ZjkzNzk0OTNkMjgxMjcwMTc3Y2NmYmNhMDU1MTUzMjMxZi4uNzM5NDJhODM1OTMxYTlkMjg0YzZh
NDUxYmI4ZGJmYjU3NjVjYWRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCkBA
IC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJUQ0RhdGFDaGFubmVs
SGFuZGxlckNsaWVudDsKIGNsYXNzIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rp
b247CiBjbGFzcyBSVENFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlciBmaW5h
bCA6IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxS
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0cnVjdCBNZXNzYWdlIHsKICAg
ICAgICAgYm9vbCBpc1JhdyB7IGZhbHNlIH07Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB9
OwogICAgIFZlY3RvcjxNZXNzYWdlPiBtX3BlbmRpbmdNZXNzYWdlczsKICAgICBib29sIG1faXNQ
ZW5kaW5nQ2xvc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggZTc5ZWJkYmFjNDA4M2U5NDU0YzY5ZDE5OTZlNmZk
MmQ4YzcyOTgxOS4uM2NlZWQwYTAxMWU3YjU0NmZhZGRmNDhiYmRhMjExZGZkZDUyNGM1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBA
IC05Nyw3ICs5Nyw3IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGll
bnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQsCiAgICAgbV9jb250ZXh0SWRl
bnRpZmllciA9IGNvbnRleHRJZGVudGlmaWVyOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDog
bV9idWZmZXJlZE1lc3NhZ2VzKSB7Ci0gICAgICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsmXShSZWY8
U2hhcmVkQnVmZmVyPiYgZGF0YSkgeworICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBbJl0oUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CiAgICAgICAgICAgICBjbGllbnQuZGlk
UmVjZWl2ZVJhd0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOwogICAgICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBjbGllbnQu
ZGlkUmVjZWl2ZVN0cmluZ0RhdGEodGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlci5oCmluZGV4IDQxZjk1MjgyMWU2MjAwOTNmOGVlZmUzMmM1ZWQ0
YWUwZjVlNTQxOTcuLjExYmQ0NWRlOTE1NTc3OWZmYzllZmIwM2U5NTUyOGYwNWU2NGQ3NDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC04
Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIFJUQ0RhdGFDaGFubmVsU3RhdGUgc3RhdGU7
CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8d2VicnRjOjpSVENFcnJvcj4gZXJyb3I7CiAgICAgfTsK
LSAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PFN0YXRlQ2hhbmdlLCBTdHJpbmcsIFJl
ZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PFN0YXRl
Q2hhbmdlLCBTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgdXNpbmcg
UGVuZGluZ01lc3NhZ2VzID0gVmVjdG9yPE1lc3NhZ2U+OwogICAgIHZvaWQgc3RvcmVNZXNzYWdl
KFBlbmRpbmdNZXNzYWdlcyYsIGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYpOwogICAgIHZvaWQg
cHJvY2Vzc01lc3NhZ2UoY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVyJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKaW5kZXggMGI4
OThmNmFkYjU3ZWIyNWRjNDkzN2Q4MWZmNWQxNGQ1Mjk3NmM4NC4uZDUxNzNmYmY4YjQwMzQxYzVj
ZjhkOGE0ZjU1ZWVhYzhmZjgzOGEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFt
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgUmVhZGFibGVTdHJlYW1TaW5rIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJl
YW1TaW5rPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAKaW5kZXggODUxNDdjMDk2MWM5OTczMTYzMWYwZWRmYjllZmU3NGU1
YzM2Y2FjYi4uNTI1MTBjMzA4MThmMGNhOTE2YTg4NDM3N2QyMjRhMWFiYTc5NWI4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAt
NDc1LDcgKzQ3NSw3IEBAIHN0YXRpYyBKU0M6OkpTUHJvbWlzZSogaGFuZGxlUmVzcG9uc2VPblN0
cmVhbWluZ0FjdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIC8vIEZJWE1F
OiBTdXBwb3J0IEZvcm1EYXRhIGxvYWRpbmcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyNDgKICAgICAgICAgY29tcGlsZXItPmZhaWwoZ2xv
YmFsT2JqZWN0LCBjcmVhdGVET01FeGNlcHRpb24oKmdsb2JhbE9iamVjdCwgRXhjZXB0aW9uIHsg
Tm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgIH0pKTsKLSAgICB9LCBbJl0o
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oUmVmPFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMoYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFsaXplKGds
b2JhbE9iamVjdCk7CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgK
aW5kZXggYjkxOGYzMTQxYWYyZjUyMTY0MjY4OThmYWVhODRmNGIwMmIxZTI3ZS4uYjhiNzc4NWY5
MWQwNjhjMmE0NmNlYjFkNjU5NzU4ZmNmOGI2OWQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC05NCw3
ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0QnVm
ZmVyOwotICAgIG11dGFibGUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udGln
dW91c0J1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udGlndW91
c0J1ZmZlcjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAgICBt
dXRhYmxlIFN0cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggN2U0OWE5ZTczMjI2YjY1
Y2MyOGJmNTk0ODEzYjBmODNiMjY5ZDIyYi4uZWYzN2YxZDBjYTQ2MmJiOWI3YzliNmE1NWQxOGVi
YjRjMTE4MWE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgRGV0YWNoZWRPZmZzY3Jl
ZW5DYW52YXM7CiBjbGFzcyBJREJWYWx1ZTsKIGNsYXNzIE1lc3NhZ2VQb3J0OwogY2xhc3MgSW1h
Z2VCaXRtYXBCYWNraW5nOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgU2VyaWFsaXphdGlvblJldHVybkNvZGU7CiAKIGVudW0g
Y2xhc3MgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB7IE5vblRocm93aW5nLCBUaHJvd2luZyB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggM2M1ZWE5Yjg5YTlj
OWU5MDM3MGI5OGRmNTI4NTYzMDY0OTkwMDdkOS4uYWViNGI2Y2M1MGExMjZjOTgzMGQ2MDZhYmIw
YzNhOGM2OWE5YzMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3Bw
CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2luRG9jdW1lbnRDdXN0b21Q
bGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgICAgIFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVu
dCA9IGRvd25jYXN0PFNWR0ZvbnRFbGVtZW50PigqbV9zdmdGb250RmFjZUVsZW1lbnQtPnBhcmVu
dE5vZGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gb3RmRm9udCA9IGNvbnZlcnRTVkdU
b09URkZvbnQoZm9udEVsZW1lbnQpKQotICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9U
RkJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90ZkZvbnQu
dmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKG1fZ2VuZXJhdGVkT1RGQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1f
aW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoKm1fZ2VuZXJhdGVkT1RGQnVmZmVyLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAg
IHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURh
dGEpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgICAgICB9IGVsc2UgaWYgKG1faW1tZWRpYXRlU291cmNlKSB7
CiAgICAgICAgICAgICBBU1NFUlQoIW1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7
CiAgICAgICAgICAgICBib29sIHdyYXBwaW5nOwotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1f
aW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVM
ZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3Mo
KSksIG1faW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOwogICAgICAgICAgICAgbV9pbW1l
ZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9u
dERhdGEoYnVmZmVyLmdldCgpLCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAgICAgc3Vj
Y2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSk7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5o
CmluZGV4IDZhODJjZjFlM2RjOTE1OTc4NTMzNjViZDMxZTM2MjMyNzg2YTA4ODIuLjEwOGU2Yzg3
NjdkMGQyZmRhY2JlNjUwNGViYzUwNzBlODgyYmU2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNvdXJjZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ1NTRm9udEZhY2U7CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7Ci1jbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnQ7CiBj
bGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKQEAgLTkzLDcgKzkzLDcgQEAg
cHJpdmF0ZToKICAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7IC8v
IEZvciByZW1vdGUgZm9udHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCiAgICAgc3RkOjp1bmlx
dWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxzbyBmb3IgcmVtb3Rl
IGZvbnRzLCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAKLSAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CiAgICAgUmVmUHRyPEpTQzo6QXJy
YXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IGY1YmYyYjcyNmU2YWU5Njg5MzUz
YzBhN2UwOGI0NWVmZGE1ZDkwNGIuLjFkZWFjNGY0MWNmNDlmMWY4ODJkY2NlZmQ0OGNmNmE5NzMy
ZjNlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC00MDIsNyArNDAyLDcg
QEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlVHlwZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxl
UmVhZGVyIHsKICAgICAgICAgdHlwZXMuYWRkKEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShmaWxl
bmFtZSkpOwogICAgIH0KIAotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKQorICAgIHZvaWQg
cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYpCiAgICAgewogICAgICAgICB0eXBlcy5hZGQodHlwZSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGNmMzJhYmMxODI3ZmNlYjU0YWQ1ZWEwMWJhMDJlYjAx
ZjE3NGY3MDQuLjQwYzc4NGMzZTM4YjhkYTg5MjEyYmI4OTgwMmRjYzkyZTZiODNhMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxNTksNyArNDE1OSw3IEBAIFByb21pc2VkQXR0
YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1l
bnQpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFs
VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRp
b25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0
YTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9y
QXR0YWNobWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhKTsKICNl
bmRpZgpAQCAtNDE2Nyw3ICs0MTY3LDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6
OnByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4geyBh
dHRhY2htZW50LT51bmlxdWVJZGVudGlmaWVyKCksIFdURk1vdmUoYWRkaXRpb25hbFR5cGVzKSwg
V1RGTW92ZShhZGRpdGlvbmFsRGF0YSkgfTsKIH0KIAotdm9pZCBFZGl0b3I6OnJlZ2lzdGVyQXR0
YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGRhdGEpCit2b2lkIEVkaXRvcjo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmll
cihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGRhdGEpCiB7CiAgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQogICAg
ICAgICBjbGllbnQtPnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoaWRlbnRpZmllciwgY29u
dGVudFR5cGUsIHByZWZlcnJlZEZpbGVOYW1lLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oCmluZGV4IDhkYTlmY2M2NDE2YjY3MjE3ZDE3NDllYmI4OTc4MDdlNDc2MTExMjUu
Ljg2ZDhjOGMyNjAxODMwYmRjM2E5N2Y4NzM3OWZhMDFlM2VkYzhkNjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaApAQCAtNTgsNyArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBB
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOwogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwogY2xhc3Mg
Q29tcG9zaXRlRWRpdENvbW1hbmQ7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xh
c3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3VzdG9tVW5kb1N0ZXA7CiBjbGFzcyBEYXRhVHJhbnNm
ZXI7CiBjbGFzcyBEZWxldGVCdXR0b25Db250cm9sbGVyOwpAQCAtNzUsNyArNzUsNyBAQCBjbGFz
cyBLaWxsUmluZzsKIGNsYXNzIFBhc3RlYm9hcmQ7CiBjbGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0
YTsKIGNsYXNzIFJlbmRlckxheWVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7CiBjbGFzcyBTcGVsbENoZWNrUmVxdWVzdDsK
IGNsYXNzIFNwZWxsQ2hlY2tlcjsKQEAgLTUzOSw3ICs1MzksNyBAQCBwdWJsaWM6CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlm
CiAKICAgICBib29sIGNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCkgY29uc3Q7CkBA
IC01NjYsNyArNTY2LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJl
Z2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBmaWxlRGF0YSk7CisgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
cHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGZpbGVEYXRh
KTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YT4mJik7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
KTsKQEAgLTU3Niw3ICs1NzYsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQcm9t
aXNlZEF0dGFjaG1lbnRJbmZvIHByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYpOwogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0
dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOworICAgIHZvaWQgZ2V0UGFzdGVi
b2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBv
dXRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSk7CiAjZW5kaWYK
ICNlbmRpZgogCkBAIC02MjQsMTIgKzYyNCwxMiBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+IGFkanVzdGVkU2VsZWN0aW9uUmFuZ2UoKTsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZWxlY3Rpb25Jbldl
YkFyY2hpdmVGb3JtYXQoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZWxlY3Rpb25Jbldl
YkFyY2hpdmVGb3JtYXQoKTsKICAgICBTdHJpbmcgc2VsZWN0aW9uSW5IVE1MRm9ybWF0KCk7Ci0g
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0
KEVsZW1lbnQmKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2ViQXJjaGl2ZUZv
cm1hdChFbGVtZW50Jik7CiAgICAgc3RhdGljIFN0cmluZyB1c2VyVmlzaWJsZVN0cmluZyhjb25z
dCBVUkwmKTsKLSAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJ
blJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwotICAgIHN0YXRpYyBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAq
KTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdChOU0F0
dHJpYnV0ZWRTdHJpbmcgKik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJ
blJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CiAjZW5kaWYKICAgICB2b2lkIHBsYXRm
b3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiwgY29uc3Qg
UmVuZGVyU3R5bGUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhLmgKaW5kZXggMzljM2IxZmEzZDg1NmY4ZDg0OWM2OTMzMWQ4
OWU5OThmN2U3NjIzYi4uZjMwMjgyMzU2OTAwNmY1Y2Y5ZGJiNGVmYzM3M2U2N2VmMDVmMTlhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YS5oCkBAIC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgU2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhIHsKICAgICBTdHJpbmcgaWRlbnRpZmllcjsKICAgICBTdHJp
bmcgbWltZVR5cGU7Ci0gICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaAppbmRleCAxZDk3YWNkM2NjNzkx
NjFiMGFjNTBjNGJmNzBjYjE1MmZjMGY0ODRjLi40YWY5NzBiMWY1YjQyNTBjOTUyZDQwOWE4NzE4
YTg4MDM0ZjQ4NzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRl
bnRSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIu
aApAQCAtNzIsMTYgKzcyLDE2IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWFkRmlsZVBhdGgoY29u
c3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0g
eyB9LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0geyB9KSBvdmVycmlkZTsKICAgICBib29s
IHJlYWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKICAgICBib29s
IHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZEltYWdlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBw
cmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRJ
bWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQ
cmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRl
OwogICAgIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVy
cmlkZTsKICAgICBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURkQoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURihDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUs
IFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJp
ZGU7CisgICAgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAg
ICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJU
RihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50
YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOwogI2Vu
ZGlmCiB9OwogCkBAIC05OSwxNiArOTksMTYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlYWRGaWxl
UGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBTdHJpbmcm
ID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZEZpbGVQYXRo
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
Ym9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRJbWFn
ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0g
eyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZEltYWdlKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXpl
ID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZFVSTChjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJv
b2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIHJlYWRXZWJBcmNoaXZl
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZEKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEYoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNl
bnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBy
ZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEZE
KFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCA3NGZlODI4
N2U4YzM5M2JlMTdhNjc2NjUzOGQ5ZjM0YTA5MGIzMzRiLi41NDllYjdkMmU0YzA3NTQ4ZTRhOGM5
ZWEyNGVjMjBlNGYyMWJmYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHZvaWQg
V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSkKICAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGZp
bGVuYW1lKSk7CiB9CiAKLXZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVS
ZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBmaWxlcy5hcHBlbmQoRmls
ZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIEJsb2I6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBidWZm
ZXItPmV4dHJhY3REYXRhKCksIHR5cGUpLCBmaWxlbmFtZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKaW5kZXggZTdh
MDcxY2E0MDM5ZTAxZjQ4ZDBiNDk5NTAxZWQ2NGRlNjI2ZjBmYi4uNWM1MjlkZDdjOGVjYzAwMDQ4
ZmNiNGQxNTgxNDYzNWIyNGQ5MGJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVj
dCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRl
ciB7CiAgICAgfldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcigpOwogCiAgICAgdm9pZCByZWFk
RmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwog
CiAgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IGNvbnRleHQ7CiAgICAgVmVjdG9y
PFJlZjxGaWxlPj4gZmlsZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JD
b2NvYS5tbQppbmRleCBkMGM5MzMxMDBjNjU1ZjFmYTg1MjUyNzg4MTg3MDQ5OWMyZjYxZmUzLi5h
ODViN2FhNzUyNmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5OTE0YWFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBAQCB2b2lk
IEVkaXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJp
YnV0ZXMmIGF0dHJpYnV0ZXMsCiAgICAgICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2JyaWRnZSBp
ZCljdEZvbnQ7CiB9CiAKLXN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXJj
aGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0
ZWRTdHJpbmcpCitzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0
cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCiB7CiAg
ICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJj
aGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1aXJp
bmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKKyAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDph
dHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0p
OwogfQogCiBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAtODcsNyAr
ODcsNyBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBl
c0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBv
dXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEp
Cit2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxl
bWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNo
YXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQogewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFrZVJh
bmdlU2VsZWN0aW5nTm9kZShlbGVtZW50KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoZWxlbWVudFJhbmdlLCBvdXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3ICs5OSw3
IEBAIHZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChF
bGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hpdmUgPSBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAgICAgIGlm
IChhdXRvIGRhdGEgPSBhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewogICAgICAg
ICAgICAgICAgIG91dFR5cGVzLmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0gICAgICAg
ICAgICAgICAgb3V0RGF0YS5hcHBlbmQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBA
IC0xNTEsMTIgKzE1MSwxMiBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2Fy
ZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRXcml0ZXJE
YXRhLnNldFdlYkNvbnRlbnQoV1RGTW92ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgp
CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1h
dCgpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNl
bGVjdGlvbihtX2RvY3VtZW50LmZyYW1lKCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgp
KTsKIH0KIAogLy8gRklYTUU6IE1ha2VzIG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0Rm9yRGF0
YVRyYW5zZmVyIGFsd2F5cyBpbmNsdWRlcyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVjdGlvbkZv
clBhc3RlYm9hcmQgZG9lcyBub3QuCkBAIC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcgRWRpdG9y
Ojp1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RGOjp1c2Vy
VmlzaWJsZVN0cmluZyh1cmwpOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0
cmluZyAqc3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsK
ICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3Vt
ZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtz
dHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmli
dXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRh
dGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0cjxTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5n
KQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAoIWxl
bmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJp
bmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVz
OkB7IH1dKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9t
UmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwog
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IDNjNWU1
NDMyNWI5ZmUyMzU2N2VlNDJkZTk5ZjliNWIxNWM0MmIxMDAuLjA3ODI0ODM2MmFhMDU0ZGMzYWIw
MDAwNDUxNzE4NDE5OGE1ODBmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0KQEAgLTIzMjIsNyArMjMyMiw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8
TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3Vy
Y2UsIE5TCiBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yRWxl
bWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJbWFnZSog
Y2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCkpIHsKLSAgICAgICAgaWYgKFNoYXJl
ZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCisg
ICAgICAgIGlmIChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBjYWNoZWRJ
bWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKICAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNG
aWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29j
b2EubW0KaW5kZXggNDQwNTliZTVhZTllODFkYTM5ZDYyODkyMDFkOGVkNDkxNTk3MzUzNS4uNmM4
ZDNiN2M3NDNmNTJlM2RkMWRlZDkyNmVlYmJiNDU2MTg0ZWVlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI0
NSw3ICsyNDUsNyBAQCBzdGF0aWMgYm9vbCBzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0
YShjb25zdCBGcmFtZSYgZnJhbWUpCiAKICNlbmRpZgogCi1zdGF0aWMgUmVmPERvY3VtZW50RnJh
Z21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFtZSwgRG9j
dW1lbnQmIGRvY3VtZW50LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQorc3RhdGljIFJl
ZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChGcmFt
ZSYgZnJhbWUsIERvY3VtZW50JiBkb2N1bWVudCwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBQcmVzZW50YXRpb25TaXplIHBy
ZWZlcnJlZFNpemUpCiB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBhdXRv
IGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0
dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMgdm9pZCBy
ZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZy
YWdtZW50JiBmcgogICAgIHN0cnVjdCBBdHRhY2htZW50SW5zZXJ0aW9uSW5mbyB7CiAgICAgICAg
IFN0cmluZyBmaWxlTmFtZTsKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAgICAgICBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmPFNoYXJlZEJ1ZmZl
cj4gZGF0YTsKICAgICAgICAgUmVmPEVsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudDsKICAgICB9Owog
CkBAIC00MjgsNyArNDI4LDcgQEAgc3RydWN0IE1hcmt1cEFuZEFyY2hpdmUgewogICAgIFJlZjxB
cmNoaXZlPiBhcmNoaXZlOwogfTsKIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJj
aGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1F
VHlwZUFzSFRNTCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJh
Y3RNYXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6OmZ1bmN0
aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKIHsKICAgICBh
dXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoVVJMKCksIGJ1ZmZlcik7CiAg
ICAgaWYgKCFhcmNoaXZlKQpAQCAtNDk3LDcgKzQ5Nyw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRp
emVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRv
Y3VtCiAgICAgcmV0dXJuIHNhbml0aXplZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChXVEZN
b3ZlKGZyYWdtZW50KSwgKnN0YWdpbmdEb2N1bWVudCwgbXNvTGlzdFF1aXJrcywgbWFya3VwQW5k
QXJjaGl2ZS5tYXJrdXApOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNo
aXZlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1l
LnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTMyLDcgKzUzMiw3IEBAIGJvb2wgV2ViQ29u
dGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJl
YWRXZWJBcmNoaXZlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29u
dGVudE1hcmt1cFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02
MTIsNyArNjEyLDcgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkSFRNTChjb25z
dCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gIW1hcmt1cC5pc0VtcHR5KCk7CiB9CiAKLWJv
b2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygp
IHx8ICFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MjYsNyAr
NjI2LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1h
cmt1cFJlYWRlcjo6cmVhZFJURkQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9v
bCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTYzOSw3ICs2MzksNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTMsNyArNjUzLDcgQEAgYm9vbCBXZWJDb250ZW50
UmVhZGVyOjpyZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6
cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY3Niw3ICs2NzYsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHBy
ZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFn
ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQogewogICAgIEFT
U0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1
bWVudCgpOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogICAgIHJldHVybiBhdHRhY2htZW50OwogfQogCi1zdGF0aWMgUmVmPEhUTUxFbGVtZW50
PiBhdHRhY2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlv
blNpemUgcHJlZmVycmVkU2l6ZSkKK3N0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRG
b3JEYXRhKEZyYW1lJiBmcmFtZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNp
emUgcHJlZmVycmVkU2l6ZSkKIHsKICAgICBSZWYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQo
KTsKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShI
VE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKQEAgLTgzMyw3ICs4MzMsNyBAQCBi
b29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6
cmVhZERhdGFCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQ
cmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcihT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5h
bWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAgICBp
ZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAppbmRleCA2MDQ4
NmU3MWFkNTlmZWNjNzE1ZmYwYTA5YjFjMzU1OGI3YjM0MmMyLi5kM2U5ODE5YmQ1MzFmODQ4NmEz
MTdhYjlmOWVkODNhOTg4NWJlMmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNzEsNyArNzEsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHBy
ZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFn
ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQogewogICAgIEFT
U0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1
bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IGRmMDkx
OWY3NWFjZjc5YTgzOTI4MzIxMTkwYzVjYjJiYWY3NDdlNGMuLjMwMzZjZDMyZDZjZDgzMmMyMjAy
ODNhODQ0NWE4OTlhNWE2NmNhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JN
YWMubW0KQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEVkaXRvcjo6cGxhdGZvcm1Db3B5Rm9udCgp
CiAgICAgUGFzdGVib2FyZEJ1ZmZlciBwYXN0ZWJvYXJkQnVmZmVyOwogICAgIHBhc3RlYm9hcmRC
dWZmZXIuY29udGVudE9yaWdpbiA9IG1fZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3Rl
Ym9hcmQoKTsKICAgICBwYXN0ZWJvYXJkQnVmZmVyLnR5cGUgPSBsZWdhY3lGb250UGFzdGVib2Fy
ZFR5cGUoKTsKLSAgICBwYXN0ZWJvYXJkQnVmZmVyLmRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZm9udERhdGEuZ2V0KCkpOworICAgIHBhc3RlYm9hcmRCdWZmZXIuZGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZvbnREYXRhLmdldCgpKTsKICAgICBwYXN0ZWJvYXJkLndy
aXRlKHBhc3RlYm9hcmRCdWZmZXIpOwogfQogCkBAIC0yNTAsMTUgKzI1MCwxNSBAQCB2b2lkIEVk
aXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKQogICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0
cmluZygpKTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1h
Z2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQorUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVs
ZW1lbnQpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGlt
YWdlRWxlbWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0Rh
dGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCi1SZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRp
dG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKQogewogICAgIC8vIEZJWE1FOiBUaGUgaW50ZXJmYWNlIHRvIHRoaXMgZnVuY3Rpb24gaXMg
YXdrd2FyZC4gV2UnZCBwcm9iYWJseSBiZSBiZXR0ZXIgb2ZmIHdpdGggdGhyZWUgc2VwYXJhdGUg
ZnVuY3Rpb25zLiBBcyBvZiB0aGlzIHdyaXRpbmcsIHRoaXMgaXMgb25seSB1c2VkIGluIFdlYktp
dDIgdG8gaW1wbGVtZW50IHRoZSBtZXRob2QgLVtXS1ZpZXcgd3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQ6dHlwZXM6XSwgd2hpY2ggaXMgb25seSB1c2VkIHRvIHN1cHBvcnQgT1MgWCBzZXJ2aWNl
cy4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCA0NWQ5MzNlMTNjYTRkMjI1MWM1ZGVkODQ4YWE5
ZTk4NzJjNzY3NDg5Li5iY2E2Njk2ZWJlNmYwZWRkZGRlZTc5YjczYzNlZTE0NDk2ZDgyZmI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2IuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBCbG9iTG9hZGVyOwog
Y2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgUmVhZGFibGVTdHJlYW07CiBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEV4Y2VwdGlvbk9yOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAppbmRleCA1NTll
YmNjNDhjNWYwOTZhYzE5YmFlN2Q5ZjcxOGI3MWYyYTM1MzIyLi40MmY0MTgwZGZhODQyN2UwZTYw
ZjgxZWI3OWIxOTE4N2NhZmRiYTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L05ldHdvcmtTZW5kUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29y
a1NlbmRRdWV1ZS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpw
cm9jZXNzTWVzc2FnZXMoKQogICAgICAgICBib29sIHNob3VsZFN0b3BQcm9jZXNzaW5nID0gZmFs
c2U7CiAgICAgICAgIHN3aXRjaE9uKG1fcXVldWUuZmlyc3QoKSwgW3RoaXNdKGNvbnN0IENTdHJp
bmcmIHV0ZjgpIHsKICAgICAgICAgICAgIG1fd3JpdGVTdHJpbmcodXRmOCk7Ci0gICAgICAgIH0s
IFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgeworICAgICAgICB9LCBbdGhpc10oUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CiAgICAgICAgICAgICBkYXRhLT5mb3JF
YWNoU2VnbWVudChtX3dyaXRlUmF3RGF0YSk7CiAgICAgICAgIH0sIFt0aGlzLCAmc2hvdWxkU3Rv
cFByb2Nlc3NpbmddKFVuaXF1ZVJlZjxCbG9iTG9hZGVyPiYgbG9hZGVyKSB7CiAgICAgICAgICAg
ICBhdXRvIGVycm9yQ29kZSA9IGxvYWRlci0+ZXJyb3JDb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCmluZGV4IDU1MWY3MGY5MTY3YjJiZmNiMjQ0YmIyYjM3
MDBiZmJhYWY1NDc5NmMuLmQyM2NmZWJiNDUwOGJjMzAwOTE1YmI5OTZkM2YxNTA2MmNlMzUwOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCkBAIC00Myw3ICs0
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYjsKIGNsYXNzIEJsb2JMb2Fk
ZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBOZXR3b3JrU2VuZFF1ZXVlIDogcHVibGljIENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NNZXNzYWdlcygpOwogCi0gICAgdXNpbmcgTWVzc2Fn
ZSA9IHN0ZDo6dmFyaWFudDxDU3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPiwgVW5pcXVlUmVmPEJs
b2JMb2FkZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PENTdHJpbmcsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgVW5pcXVlUmVmPEJsb2JMb2FkZXI+PjsKICAgICBE
ZXF1ZTxNZXNzYWdlPiBtX3F1ZXVlOwogCiAgICAgV3JpdGVTdHJpbmcgbV93cml0ZVN0cmluZzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggMTAx
NmRjZjNjMTk5ZTU0Y2E4MTRjMjY0NWE5YTg1OThhNWMxZDM1ZS4uNzUyMzAxN2JhNzI5NDA1NjNi
NzVmNDY2YTY4ZWQxY2NiM2RlZThiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9G
VFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJl
Y3RvcnlEb2N1bWVudC5jcHAKQEAgLTI3Niw5ICsyNzYsOSBAQCB2b2lkIEZUUERpcmVjdG9yeURv
Y3VtZW50UGFyc2VyOjpwYXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExp
bmUpCiAgICAgYXBwZW5kRW50cnkoZmlsZW5hbWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1
bHQuZmlsZVNpemUsIHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0Zp
bGVEYXRlU3RyaW5nKHJlc3VsdC5tb2RpZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJl
Y3RvcnlFbnRyeSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5n
cykKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1
bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQogewotICAgIGF1dG8gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdz
LmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBs
YXRlUGF0aCgpKTsKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBMT0coRlRQLCAiTG9hZGVkIEZU
UERpcmVjdG9yeVRlbXBsYXRlIG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAg
ICByZXR1cm4gYnVmZmVyOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0
IFNlCiAgICAgCiBib29sIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRU
ZW1wbGF0ZSgpCiB7Ci0gICAgc3RhdGljIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHRlbXBsYXRl
RG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0
dGluZ3MoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9j
dW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGlu
Z3MoKSkubGVha1JlZigpOwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHN0b3JpbmcgdGhlIGRh
dGEsIGl0IHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50IGlmIHdlIGNvdWxkIHBhcnNlIHRoZSB0ZW1w
bGF0ZSBkYXRhIGludG8gdGhlCiAgICAgLy8gdGVtcGxhdGUgRG9jdW1lbnQgb25jZSwgc3RvcmUg
dGhhdCBkb2N1bWVudCwgdGhlbiAiY29weSIgaXQgd2hlbmV2ZXIgd2UgZ2V0IGFuIEZUUCBkaXJl
Y3RvcnkgbGlzdGluZy4KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF0dGFjaG1lbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1l
bnRFbGVtZW50LmNwcAppbmRleCA1NmEwNmZjYWYyNzNkMjVkYzRjNzVkY2U1NjlhYWM4ZjFhYTU5
NTI3Li5kMmI4NzQxYTA0NDM0MmM3ZmZkOWU4YTUzM2NjOGExMjBlMjliYWQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0yMjcsNyArMjI3
LDcgQEAgc3RhdGljIGJvb2wgbWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VBdHRhY2ht
ZW50KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6
OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShtaW1lVHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6
aXNQREZNSU1FVHlwZShtaW1lVHlwZSk7CiB9CiAKLXZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50
Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6
OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGF1dG8qIGhvc3RF
bGVtZW50ID0gc2hhZG93SG9zdCgpOwogICAgIGlmICghaXM8SFRNTEltYWdlRWxlbWVudD4oaG9z
dEVsZW1lbnQpIHx8ICFidWZmZXItPnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
dHRhY2htZW50RWxlbWVudC5oCmluZGV4IDU3M2VjMmVhZTFjZGMwNjA5ZjI2MWMzODQwMGJiMDJj
NDgwZjdiZGQuLjY2MWRlYzkzNzZkOGE5ZDZkNDcxN2ZkMGI0Y2U3ZjgyZmYwM2Y3NTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaApAQCAtMzYsNyArMzYs
NyBAQCBjbGFzcyBGaWxlOwogY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIFJlbmRlckF0
dGFjaG1lbnQ7CiBjbGFzcyBTaGFyZWFibGVCaXRtYXA7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1l
bnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoSFRNTEF0dGFjaG1lbnRFbGVtZW50KTsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAg
IHZvaWQgY29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50
JikgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUF0dHJpYnV0ZXMoc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4mJiBuZXdGaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBuZXdDb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuZXdGaWxlbmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1
cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgdXBkYXRlVGh1bWJuYWlsKGNvbnN0IFJlZlB0cjxJbWFnZT4mIHRodW1ibmFpbCk7CiAKICAg
ICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRp
b25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAppbmRleCBlYzgzNTFjMDk3NzQ4YjE0OWE5NDQzOWJhYjY5NTc4ZWU5MDAx
YTBlLi41NjRjMzE1MjllNjljMzY1YWZkZjk3OGU5MjFkMTg1ODQ3ZDQyNWZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTI5MzksNyArMjkzOSw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6Y2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5l
Y2Vzc2FyeSgpCiAgICAgYXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpOwogfQog
Ci12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRp
b25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgaW5pdERhdGEpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVz
dGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIG1lZGlhUGxh
eWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0YS0+
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCmluZGV4IDZiNDA0YWE4NzM1Mjc3N2I0NzE4MzVmMTIwZmYxNTdjZWVkODRhNjkuLjkx
MjhiY2RiZWU1OWQ1ZmQxNzIyZTc0NzE5OGQ1NjI2NGM2ZWY4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC03MjEsNyArNzIxLDcgQEAgcHJpdmF0ZToKIAogICAg
IC8vIENETUNsaWVudAogICAgIHZvaWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJ
Zk5lY2Vzc2FyeSgpIGZpbmFsOwotICAgIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFs
aXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKKyAgICB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVj
ZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VE
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4
IDc3Y2Q0ZjM4MGUyODMyMGU1NDQ0ZjkzOWNhYWQ2MDAzYWFmZTgxZGIuLjQzNzBkNjgxODcyZDk1
YzEwYzBmNGU5NTllMTQ3NDM5YWQ1NzQ0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW1hZ2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3Vt
ZW50LmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6dXBkYXRlRHVy
aW5nUGFyc2luZygpCiAgICAgaWYgKCFtX2ltYWdlRWxlbWVudCkKICAgICAgICAgY3JlYXRlRG9j
dW1lbnRTdHJ1Y3R1cmUoKTsKIAotICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpKQorICAgIGlmIChSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSkKICAg
ICAgICAgbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCktPnVwZGF0ZUJ1ZmZlcigqYnVmZmVy
KTsKIAogICAgIGltYWdlVXBkYXRlZCgpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgSW1hZ2VE
b2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKIHsKICAgICBpZiAoIXBhcnNlcigpLT5pc1N0b3Bw
ZWQoKSAmJiBtX2ltYWdlRWxlbWVudCkgewogICAgICAgICBDYWNoZWRJbWFnZSYgY2FjaGVkSW1h
Z2UgPSAqbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCk7Ci0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGEgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOworICAgICAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGxvYWRlcigpLT5tYWluUmVzb3Vy
Y2VEYXRhKCk7CiAKICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIG11bHRpcGFydCBpbWFnZSwgbWFr
ZSBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgcGFydCwgc2luY2UgdGhlIHJlc291cmNlIGRhdGEKICAg
ICAgICAgLy8gd2lsbCBiZSBvdmVyd3JpdHRlbiBieSB0aGUgbmV4dCBwYXJ0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApp
bmRleCBhN2NhNzE2MmQ3OTFlZDdmYmE4Y2M5MWMyMWEyY2YzYWY2ZTY5YTdlLi4xODc5M2ZmMDY2
MzM4ZmI2MGEzNGRlYzkwOWJjMmRkZDI4YmVhZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtODUwLDcgKzg1
MCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50
ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYm
IGhhbmRsZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9u
c2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIGlmIChhdXRv
KiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQo
KSkKICAgICAgICAgbmV0d29ya0FnZW50LT5pbnRlcmNlcHRSZXNwb25zZShyZXNwb25zZSwgaWRl
bnRpZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggOGU2NWM0ZWIxMDIzMzUyMWY0
OGM3ZjRiMTIwYWQyYzg5MDlhMDdiYS4uZDI5NTc4MTBkODM4MmM5MzUxZDVhOTNmMTQ0YWVkMTQ5
M2JjYzY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaApAQCAtOTMsNyArOTMsNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwog
Y2xhc3MgU2hhZG93Um9vdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiBjbGFzcyBUaW1lckJhc2U7CiBjbGFzcyBXZWJLaXROYW1lZEZsb3c7CiBj
bGFzcyBXZWJTb2NrZXRDaGFubmVsOwpAQCAtMjM2LDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQg
aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik+JiYpOwotICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNv
bnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25z
ZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYpOwogCiAgICAgc3RhdGljIHZvaWQg
YWRkTWVzc2FnZVRvQ29uc29sZShQYWdlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29u
c29sZU1lc3NhZ2U+KTsKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KTsKQEAgLTQ0MSw3ICs0NDEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29s
IHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25z
ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAg
ICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwg
UmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYm
KTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRp
YyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBzdGQ6
OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwogCkBAIC0xMjg5LDcgKzEy
ODksNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJl
cXVlc3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgRgogICAgICAgICBpbnRlcmNlcHRSZXF1ZXN0
SW1wbCgqYWdlbnRzLCBsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi1pbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1l
JiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK2lubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJh
bWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxl
cikKIHsKICAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNl
cHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UpKTsKICAgICBpZiAoYXV0byogYWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50cyhmcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCmluZGV4IDYxZTRi
YzNiYTAxOWVlMjVlNWM4YmMyMjFkZmY2MDc3ZWRkYjg2M2QuLmYwNjQwM2E2MjM0YjQyYjZhZDJh
ODBiMDE5NGE1OTZkODlmNmU2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCkBAIC00NSw3ICs0
NSw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1
ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImIGxvCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjppbnRlcmNlcHRSZXF1ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVy
bmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFu
ZGxlcikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNw
b25zZUludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjppbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UsIGlkZW50aWZpZXIsIFdURk1vdmUo
aGFuZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCmluZGV4IGY3NjExNGNlOThmNDJhN2ZmOTA2
YTQ4ZDA0MjBiOTYzMDVkMzY5MTQuLjA3YjQyMWI1OWMxNTU1ZTFhMjkxZTE4ZWJiMjYyMjEyMmYx
NjU4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKQEAgLTM2LDIwICszNiwyMCBAQCBjbGFzcyBGcmFt
ZTsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVx
dWVzdChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBi
b29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2Fk
ZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0
aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAg
c3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4pPiYmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1
ZXN0SW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBz
dGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVl
c3RJbnRlcm5hbChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik+JiYpOwotICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwo
Y29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3Bv
bnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIH07CiAKIGlu
bGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0
UmVxdWVzdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKQEAgLTc2LDcgKzc2LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2EKICAgICBpbnRlcmNl
cHRSZXF1ZXN0SW50ZXJuYWwobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShj
b25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIp
CitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJl
c3BvbnNlKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAg
aW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbCgqZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBX
VEZNb3ZlKGhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IGI5OTc2YWYyZTRkZDQwOWE4OWMzYTQyNDQxMzlhM2U5
OWI0ZTdjMGIuLjM5YjAxMWNmMDZmN2YzODUzMjQzZTBhNzYzYTNiMWQ0NTQ5MDQxNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApA
QCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZENhY2hlZFJl
c291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBDYWNoZWRSZXNvCiAgICAgcmVzb3VyY2VE
YXRhLT5zZXRDYWNoZWRSZXNvdXJjZShjYWNoZWRSZXNvdXJjZSk7CiB9CiAKLXZvaWQgTmV0d29y
a1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmdOYW1lKQordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRkUmVzb3VyY2VTaGFy
ZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKQogewogICAg
IFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gcmVzb3VyY2VEYXRhRm9yUmVxdWVzdElkKHJl
cXVlc3RJZCk7CiAgICAgaWYgKCFyZXNvdXJjZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IDA0YjM1NTA3MzM3YzhiODYxYjM4
M2Q4ODEzZGMwM2YyYTM4OTE3MjAuLmRhYWU1ZmU0YTMxZTMxNTkzNjM3OTA0MjNmNWZiZDMzNzBj
NWNkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oCkBAIC00MSw3ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhY2hl
ZFJlc291cmNlOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFRleHRSZXNvdXJjZURl
Y29kZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZXNEYXRh
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTg5LDggKzg4LDggQEAgcHVibGlj
OgogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlcigpIGNvbnN0IHsg
cmV0dXJuIG1fZGVjb2Rlci5jb3B5UmVmKCk7IH0KICAgICAgICAgdm9pZCBzZXREZWNvZGVyKFJl
ZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiYmIGRlY29kZXIpIHsgbV9kZWNvZGVyID0gV1RGTW92
ZShkZWNvZGVyKTsgfQogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyLmNvcHlSZWYoKTsgfQotICAgICAgICB2b2lkIHNldEJ1ZmZl
cihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2J1ZmZlciA9IFdURk1vdmUoYnVm
ZmVyKTsgfQorICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIuY29weVJlZigpOyB9CisgICAgICAgIHZvaWQgc2V0QnVm
ZmVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2J1ZmZlciA9
IFdURk1vdmUoYnVmZmVyKTsgfQogCiAgICAgICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q2VydGlm
aWNhdGVJbmZvPiYgY2VydGlmaWNhdGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0
ZUluZm87IH0KICAgICAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZUluZm8oY29uc3Qgc3RkOjpvcHRp
b25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8pIHsgbV9jZXJ0aWZpY2F0ZUlu
Zm8gPSBjZXJ0aWZpY2F0ZUluZm87IH0KQEAgLTEyMSw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rl
cj4gbV9kZWNvZGVyOwogICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YUJ1ZmZlcjsK
LSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICAgICAgc3RkOjpvcHRpb25hbDxD
ZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJbmZvOwogICAgICAgICBDYWNoZWRSZXNvdXJj
ZSogbV9jYWNoZWRSZXNvdXJjZSB7IG51bGxwdHIgfTsKICAgICAgICAgSW5zcGVjdG9yUGFnZUFn
ZW50OjpSZXNvdXJjZVR5cGUgbV90eXBlIHsgSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291
cmNlIH07CkBAIC0xNDUsNyArMTQ0LDcgQEAgcHVibGljOgogICAgIFJlc291cmNlRGF0YSBjb25z
dCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICB2b2lkIG1heWJlRGVjb2RlRGF0
YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgdm9pZCBhZGRDYWNoZWRS
ZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzb3VyY2UqKTsKLSAgICB2
b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOworICAg
IHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGlu
Z05hbWUpOwogICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0YShjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCk7CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRhRm9yVVJMKGNvbnN0IFN0cmluZyYg
dXJsKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IGU1OGJjYzJhYTdmODE0ZDk3N2ZmN2Q4ZjI2
MjNjMzdlY2JhN2MxZmMuLjIyM2E2NzY3YmUyNzFlZTRkMjJkZWQxZDZiZTYwY2E3MDc4MTdjODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQgSW5zcGVjdG9y
TmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIEZ1
bmN0aW9uPHZvCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RJbnRlcmNlcHRlZChy
ZXF1ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci5yZXF1ZXN0KCkp
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lkIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1fZW5hYmxlZCk7CiAgICAgQVNTRVJU
KG1faW50ZXJjZXB0aW9uRW5hYmxlZCk7CkBAIC0xMjQzLDcgKzEyNDMsNyBAQCBQcm90b2NvbDo6
RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhS
ZXNwb25zZShjb25zdAogICAgICAgICBvdmVycmlkZVJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIG92ZXJyaWRlUmVzcG9uc2UubWltZVR5cGUo
KSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGE7CiAgICAgaWYgKGJh
c2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVu
dCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTI3MSw3ICsxMjcxLDcgQEAgUHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1
ZXN0V2l0aFJlc3BvbnMKICAgICBpZiAobG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQog
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJsZSB0byBmdWxmaWxsIHJlcXVlc3Qs
IGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zKTsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGE7CiAg
ICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNv
ZGUoY29udGVudCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKaW5kZXggOGY2
ZmJjYzI5M2FlYmY4YjlkNWM5NDVkMjgyOWExNTI3Yjc0YmM3Zi4uNmJjZDg3ZGRjZDhiMDQ0MTMw
OGQxZDAxZWNhNmIwZTZkYTE0MTNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCkBAIC0xMjMsNyArMTIzLDcg
QEAgcHVibGljOgogICAgIGJvb2wgd2lsbEludGVyY2VwdChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KTsKICAgICBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik7CiAgICAgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7Ci0gICAgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHZvaWQg
aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiAgICAgdm9pZCBpbnRlcmNl
cHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKT4mJik7CiAKICAgICB2b2lkIHNlYXJjaE90aGVyUmVxdWVzdHMoY29uc3QgSlNDOjpZ
YXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYsIFJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jik7CkBAIC0xODUsNyArMTg1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNl
KTsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgotICAgICAg
ICBQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgb3JpZ2lu
YWxSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICBQ
ZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgb3JpZ2luYWxS
ZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAg
ICAgICAgICAgIDogbV9vcmlnaW5hbFJlc3BvbnNlKG9yaWdpbmFsUmVzcG9uc2UpCiAgICAgICAg
ICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAg
ICAgICAgIHsgfQpAQCAtMjAyLDcgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXNw
b25kKG1fb3JpZ2luYWxSZXNwb25zZSwgbnVsbHB0cik7CiAgICAgICAgIH0KIAotICAgICAgICB2
b2lkIHJlc3BvbmQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGEpCisgICAgICAgIHZvaWQgcmVzcG9uZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9yZXNwb25kZWQpOwogICAgICAgICAgICAgaWYg
KG1fcmVzcG9uZGVkKQpAQCAtMjE1LDcgKzIxNSw3IEBAIHByaXZhdGU6CiAKICAgICBwcml2YXRl
OgogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKLSAgICAgICAg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgICAgICBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOwogICAgICAgICBib29sIG1fcmVzcG9uZGVk
IHsgZmFsc2UgfTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggYTNjNjBjM2I2OTZhODNkODMx
ZDg5N2Y4MTY3YTMyYmUyMzczNzFiYS4uYTRmZmQxMzYxY2RkZTVhYjdkOTczY2QwMGQxOWE5MTBh
ZTllZDI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAwLDEzICsxMDAsMTMgQEAgc3RhdGljIGJvb2wg
ZGVjb2RlQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29uc3Qg
U3RyaW5nJiB0ZXgKIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRl
bnQoRnJhbWUqIGZyYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQog
ewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5t
YWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgp
LT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCi1ib29sIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRF
bmNvZGUsIFN0cmluZyogcmVzdWx0KQorYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1
ZmZlckNvbnRlbnQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5n
KiByZXN1bHQpCiB7CiAgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkg
OiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQpAQCAt
MTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQo
UHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgRnJhCiAgICAgaWYgKCFsb2FkZXIp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGJvb2wgc3VjY2Vz
cyA9IGZhbHNlOwogICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHVybCwg
bG9hZGVyLT51cmwoKSkpIHsKICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5o
CmluZGV4IGI1MWFkZGIxYmQ4ZjJjY2U2OTU2MDc5OWNkMWQ5NTJkMmRlNDI4MzguLjNkNWU1NjZk
YmUwYzVlYzExZDllOGRmNjdmY2YwYTcwOTg4YTJmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtNDksNyArNDks
NyBAQCBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JPdmVybGF5OwogY2xh
c3MgUGFnZTsKIGNsYXNzIFJlbmRlck9iamVjdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudCBmaW5h
bCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OlBhZ2VCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3Rv
clBhZ2VBZ2VudCk7CkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICAgICAgT3RoZXJSZXNv
dXJjZSwKICAgICB9OwogCi0gICAgc3RhdGljIGJvb2wgc2hhcmVkQnVmZmVyQ29udGVudChSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wg
d2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOworICAgIHN0YXRpYyBib29sIHNoYXJl
ZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJl
c3VsdCk7CiAgICAgc3RhdGljIFZlY3RvcjxDYWNoZWRSZXNvdXJjZSo+IGNhY2hlZFJlc291cmNl
c0ZvckZyYW1lKEZyYW1lKik7CiAgICAgc3RhdGljIHZvaWQgcmVzb3VyY2VDb250ZW50KEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgRnJhbWUqLCBjb25zdCBVUkwmLCBTdHJpbmcq
IHJlc3VsdCwgYm9vbCogYmFzZTY0RW5jb2RlZCk7CiAgICAgc3RhdGljIFN0cmluZyBzb3VyY2VN
YXBVUkxGb3JSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXIuY3BwCmluZGV4IDk3NGYyMmEyZGE3YTAyYzY0ODljMWI1MGE1YTIyMGZlNDRi
MTk2MzAuLjZhZTUyNjU5N2NkMjg2MzFiZTc5NTBmYzMzNTM2ZjhmMzQ3ZDdhZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lk
IENvbnRlbnRGaWx0ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiB7CiAgICAgQVNTRVJUKHdpbGxIYW5kbGVQcm92aXNpb25hbExvYWRG
YWlsdXJlKGVycm9yKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERh
dGEgeyBtX2Jsb2NraW5nQ29udGVudEZpbHRlci0+cmVwbGFjZW1lbnREYXRhKCkgfTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhIHsgbV9ibG9ja2lu
Z0NvbnRlbnRGaWx0ZXItPnJlcGxhY2VtZW50RGF0YSgpIH07CiAgICAgUmVzb3VyY2VSZXNwb25z
ZSByZXNwb25zZSB7IFVSTCgpLCAidGV4dC9odG1sIl9zLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+
KHJlcGxhY2VtZW50RGF0YS0+c2l6ZSgpKSwgIlVURi04Il9zIH07CiAgICAgU3Vic3RpdHV0ZURh
dGEgc3Vic3RpdHV0ZURhdGEgeyBXVEZNb3ZlKHJlcGxhY2VtZW50RGF0YSksIGVycm9yLmZhaWxp
bmdVUkwoKSwgcmVzcG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxp
dHk6OkhpZGRlbiB9OwogICAgIFNldEZvclNjb3BlPGJvb2w+IGxvYWRpbmdCbG9ja2VkUGFnZSB7
IG1faXNMb2FkaW5nQmxvY2tlZFBhZ2UsIHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggZDA5NjFhZmM3
YjdlNzNlNjE3ZTc4MDZhNjdjNmZmZDA5ZjE1Y2E5My4uOTRjMzZlZjUwN2VmMDM3YjcwN2M5MGQx
OWE3YTFhNzQ0NWIxZjcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Ny
b3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENy
b3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQoRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyJiBsb2FkZXIsCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QgPSBj
cmVhdGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LCBsb2FkZXIuc2VjdXJp
dHlPcmlnaW4oKSwgbG9hZGVyLnJlZmVycmVyKCkpOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7
CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAg
YXV0byBpZGVudGlmaWVyID0gbG9hZGVyLmRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkubG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShwcmVmbGlnaHRSZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFs
UG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zIHsgfSwg
eyB9LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAppbmRleCBmZGZkMGVhYWYzYTUwMThkOTAwYmExYTZkN2E0OGFlNTczMmYz
NGM4Li4wYWI0ZTE0ZjljZTM1YTFjY2Y2ZGQ2YmNlODMwMjQxNmMxZWNkZWNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCBEb2N1
bWVudExvYWRlcjo6fkRvY3VtZW50TG9hZGVyKCkKICNlbmRpZgogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEo
KSBjb25zdAogewogICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuIG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5jb3B5KCk7CkBAIC0xNjQ5LDcgKzE2
NDksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJjZXMoKQogICAg
IG1fc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lci5zdG9wKCk7CiB9CiAKLUNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0
CitTaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fcGFyc2VkQXJjaGl2ZURhdGEuZ2V0KCk7CiB9CkBAIC0xNjY4LDcg
KzE2NjgsNyBAQCBBcmNoaXZlUmVzb3VyY2UqIERvY3VtZW50TG9hZGVyOjphcmNoaXZlUmVzb3Vy
Y2VGb3JVUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAKIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2UoKSBjb25zdAogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFkYXRh
KQogICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvJiByZXNw
b25zZSA9IHRoaXMtPnJlc3BvbnNlKCk7CkBAIC0yMjUyLDcgKzIyNTIsNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKIAogICAgIGZy
YW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29tbWl0dGVkID0gZmFsc2U7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0
YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBt
YWluUmVzb3VyY2VEYXRhKCk7CiAgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCkBAIC0yMjg5LDcg
KzIyODksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKICAgICBt
X2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5nZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhpY29uRGVj
aXNpb25zKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9y
SWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRG9j
dW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWlu
dDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gaWNvbiA9IG1f
aWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uLnRha2UobG9hZElkZW50aWZpZXIpOwogCkBAIC0yMzEw
LDcgKzIzMTAsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudAogICAgIHJhd0ljb25Mb2FkZXIt
PnN0YXJ0TG9hZGluZygpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRp
bmdJY29uKEljb25Mb2FkZXImIGxvYWRlciwgU2hhcmVkQnVmZmVyKiBidWZmZXIpCit2b2lkIERv
Y3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImIGxvYWRlciwgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogewogICAgIC8vIElmIHRoZSBEb2N1bWVudExv
YWRlciBoYXMgZGV0YWNoZWQgZnJvbSBpdHMgZnJhbWUsIGFsbCBpY29uIGxvYWRzIHNob3VsZCBo
YXZlIGFscmVhZHkgYmVlbiBjYW5jZWxsZWQuCiAgICAgQVNTRVJUKG1fZnJhbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCA2YmQzMmZjMmVjZjQ2YWY3Y2Q5Mzc5
YTlkMDBjOTkxMTZlYjdhNmI1Li40YmY5NmY3ZGJkZDQ3MzczODZjYzU0OWU4YzkyMWU3ZGM1MmI0
OTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtNzUsNyArNzUs
NyBAQCBjbGFzcyBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogY2xhc3MgQ2FjaGVkUmF3UmVz
b3VyY2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRGaWx0ZXI7
Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogc3Ry
dWN0IEN1c3RvbUhlYWRlckZpZWxkczsKIGNsYXNzIEZvcm1TdGF0ZTsKIGNsYXNzIEZyYW1lOwpA
QCAtODQsNyArODQsNyBAQCBjbGFzcyBJY29uTG9hZGVyOwogY2xhc3MgUGFnZTsKIGNsYXNzIFBy
ZXZpZXdDb252ZXJ0ZXI7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTV0NsaWVudENvbm5lY3Rp
b247CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFN1YnN0aXR1dGVSZXNvdXJjZTsK
QEAgLTE3OSw3ICsxNzksNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBGcmFtZUxv
YWRlciogZnJhbWVMb2FkZXIoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdWJyZXNvdXJj
ZUxvYWRlciogbWFpblJlc291cmNlTG9hZGVyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRh
KCkgY29uc3Q7CiAgICAgCiAgICAgRG9jdW1lbnRXcml0ZXImIHdyaXRlcigpIGNvbnN0IHsgcmV0
dXJuIG1fd3JpdGVyOyB9CiAKQEAgLTIzNiw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFkZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYm
KTsKICAgICBSZWZQdHI8QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmlu
ZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIFNoYXJlZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlmCkBAIC00MDMsOCArNDAzLDggQEAgcHVibGljOgog
I2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0SWNvbkxvYWRpbmcoKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3Qg
bG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYp
OwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgU2hhcmVkQnVmZmVy
Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJv
b2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRp
bmdJY29uKEljb25Mb2FkZXImLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICAgICBjb25z
dCBWZWN0b3I8TGlua0ljb24+JiBsaW5rSWNvbnMoKSBjb25zdCB7IHJldHVybiBtX2xpbmtJY29u
czsgfQogCkBAIC02MTMsNyArNjEzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwog
I2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJlZlB0cjxBcmNo
aXZlPiBtX2FyY2hpdmU7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFy
c2VkQXJjaGl2ZURhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZl
RGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2VzQ2xpZW50S25v
d3NBYm91dDsKQEAgLTYzMiw3ICs2MzIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV93YWl0aW5n
Rm9yTmF2aWdhdGlvblBvbGljeSB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBM
aW5rSWNvbj4gbV9pY29uc1BlbmRpbmdMb2FkRGVjaXNpb247Ci0gICAgSGFzaE1hcDxzdGQ6OnVu
aXF1ZV9wdHI8SWNvbkxvYWRlcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVy
Kik+PiBtX2ljb25Mb2FkZXJzOworICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPEljb25Mb2Fk
ZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4+IG1f
aWNvbkxvYWRlcnM7CiAgICAgVmVjdG9yPExpbmtJY29uPiBtX2xpbmtJY29uczsKIAogI2lmIEVO
QUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggMjNlNjBhY2Y1MTIzMTg3NTI2MTUw
MDRiOWVkMDJlMGU3YTIxNTBiOC4uYjljNDEzNTI1Njc2MjY3MjE5MDdhZjM2NmRmYjFkZWM3OTRj
MjQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAog
ICAgIGxvYWRUaW1pbmcubWFya1N0YXJ0VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFi
bGVMb2FkZXJPcHRpb25zLnNuaWZmQ29udGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJv
bm91cyByZXF1ZXN0cy4KLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7
CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBt
YWtlT2JqZWN0SWRlbnRpZmllcjxSZXNvdXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1
aW50NjRfdD46Om1heCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5k
ZXggMGRhZjRjN2FiNjA1OWJkNDdhN2NiYmQ4YzgzMTczNGM0YmIxMDM0Ny4uZmUzMmQ5NGU0Mjg2
NTlkNWQ2MWRhYmE3MjE5OGViMTk1OWJhMjVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAKQEAgLTI3OCw3ICsyNzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5k
VXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYpIGZpbmFsIHsgfQogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBm
aW5hbCB7IH0KLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJl
cXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5h
bCB7IH0KICAgICB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4
dENoZWNraW5nUmVzdWx0KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKaW5kZXggZTkxYzhmNjBkM2E5OGE5ZWI4ZGEzY2U2YjQ0ZmFkMmJjM2ViNTU0Ny4uNmM1
ZWUzYTliMzFhZThiODRkYjkyMGI2NmViZjIxNGYyNmVjOWFkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0zMTA2LDcgKzMxMDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVy
Ojpsb2FkUG9zdFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmlu
ZyYgcmVmZQogICAgIH0pOwogfQogCi1SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0
IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1
ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCitSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENy
ZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhl
YWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsK
ICAgICBBU1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBT
ZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCkt
PnJlZmVycmVyUG9saWN5KCksIHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBA
IC0zMTU0LDcgKzMxNTQsNyBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAo
IWRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hy
b25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAg
ICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmxvYWRlclN0cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlk
ZW50aWZpZXIsIG5ld1JlcXVlc3QsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9y
aWdpbmFsUmVxdWVzdEhlYWRlcnMsIGVycm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAg
ICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIp
KTsKKyAgICAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZl
cikpOwogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3Qo
KS5tYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3Bv
bnNlLCBkYXRhKTsKICAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5s
b2dTdWJyZXNvdXJjZUxvYWRpbmcoJm1fZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAg
ICAgICAgICAgICAgIChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9u
KSA/IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZ
ZXMgOiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6
Tm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggOWMzZjc0YzQyZGI4ZTdi
YWU5NTQwNWY1NDBmM2UyODcxOTgyZTkxNC4uNzVhZTI4NGMyYzM0ZmRkODllODU2NGRhNDM5ZGE3
NzI1YWZiYzhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTU5LDcgKzU5
LDcgQEAgY2xhc3MgQ2FjaGVkRnJhbWVCYXNlOwogY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNzIENh
Y2hlZFJlc291cmNlOwogY2xhc3MgQ2hyb21lOwotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIERv
Y3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGlj
OgogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgbG9hZEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYpOwogI2VuZGlmCi0gICAgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25z
JiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKTsKKyAgICBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25z
dCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNoYW5n
ZUxvY2F0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBFdmVudCosIGNvbnN0
IFJlZmVycmVyUG9saWN5JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgc3RkOjpvcHRp
b25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQsIGNvbnN0IEF0b21TdHJp
bmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29uc3QgU3lzdGVtUHJldmlld0lu
Zm8mID0geyB9LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3Rk
OjpudWxsb3B0KTsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1lTG9hZFJlcXVlc3QmJiwg
RXZlbnQqID0gbnVsbHB0ciwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4m
JiA9IHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oCmluZGV4IDRmZDYzN2E5MDE0YTVkNDFhMjI2ZWU0NTkxN2I2YjNlOWE3OTBlYmIuLmVlOWYz
ZDBjOTg0ZDQ1NWNiYjkxYjQ2MGMxYmMxMjg5OGQxMjM2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC05OCw3ICs5OCw3IEBAIGNsYXNzIFJlc291cmNl
SGFuZGxlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgV2lkZ2V0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmluZGV4IGFlZjY2OGJkNjNlZDVm
Y2Q0NWU2MWU5ZDFmMTA3Y2ZiNmFlZjI2NGIuLjI5ZDJlM2Y0NjE0MGFhYTUxMTYwZTZhMjg1NjJm
MzcwZTM3MWViMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJh
dGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCkBAIC01
MSw3ICs1MSw3IEBAIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJl
c291cmNlTG9hZGVyOwogCiBzdHJ1Y3QgRmV0Y2hPcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKaW5kZXggNjMzNzU1
OTYzMjAwMTQ2MzgyODllMjgyNjA0YzU1YjBhZjQ0NTMxMy4uNjA0M2FjOWJlMjY3ZWE0ZmJjNzFl
MTExOGI5MDc5MTU1ZTM5MTUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lk
IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZQogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVu
Z3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAot
dm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUo
YnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQg
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKK3ZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgUmVmPE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAppbmRleCA0OGJiMjE1M2M5M2Yy
ZGM3NTRlMjA3MzIyNTJjMDUwOWNmNzA0YTQxLi5iNTE3NGVkYzk0Yjk5MjM5MDIwNWYwZmFkNDUy
ZWE1YWMzODc4OTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVz
dCYmKT4mJiBjYWxsYmFjaykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xp
Y3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5
cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5
cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJv
ciYpIG92ZXJyaWRlOwogCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxs
Q2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNl
bChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwg
bG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlEb25lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKaW5kZXggNDg0
MGYxNGNmMjVkZGYxZjYwMGFlOTZkYWM2M2Q5NzExYzhjOTQwNy4uNTJlMWUyM2EyYzU0NTRiM2Iy
ZmEwYWU3ZTJkMTVlYTNjYzNjYWI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBS
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvckJ5dGVzKFJl
c291cmNlQ3J5cHRvZ3JhcGhpY0RpZwogICAgIHJldHVybiB7IGFsZ29yaXRobSwgY3J5cHRvRGln
ZXN0LT5jb21wdXRlSGFzaCgpIH07CiB9CiAKLVJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBj
cnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCitS
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1
ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0sIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICBhdXRvIGNyeXB0b0Rp
Z2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUodG9DcnlwdG9EaWdlc3RBbGdvcml0aG0o
YWxnb3JpdGhtKSk7CiAgICAgaWYgKGJ1ZmZlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCmluZGV4IGFlYTNkYzU3Yzg3ODMx
MzAxM2E1YjE2YzkzOWI3NzRlZDQ4NDMyNGMuLjgzYjg2MTNjZmRhMjMyOWFlMzBiYmY2YWJjMTRi
OTlkNDQyMzdiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0LmgKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0IHsKICAgICBlbnVtIGNsYXNzIEFsZ29yaXRobSB7CkBAIC03NSw3ICs3NSw3IEBAIHN0ZDo6
b3B0aW9uYWw8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VFbmNvZGVk
Q3J5cHRvZ3JhcGhpY0RpZ2VzCiAKIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VDcnlwdG9ncmFwaGlj
RGlnZXN0PiBkZWNvZGVFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0KGNvbnN0IEVu
Y29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QmKTsKIAotUmVzb3VyY2VDcnlwdG9ncmFw
aGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZmZXIoUmVzb3VyY2VDcnlw
dG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0sIGNvbnN0IFNoYXJlZEJ1ZmZlciopOworUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZmZXIo
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0sIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqKTsKIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGlj
RGlnZXN0Rm9yQnl0ZXMoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0sIGNv
bnN0IHZvaWQqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYjg0OTFhYjMwZTQ4YzczMTZiODg4MWJiZDM5Y2Yw
NGExYzRmNmIwOS4uNmRlYmIyNTg4YTNlODJiMjFjNjFkN2U4ZjM2ZTRmNGJiYmEyNWU2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xODgsNyArMTg4LDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6aW5pdChSZXNvdXJjZVJlcXVlc3QmJiBjbGllbnRSZXF1
ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2kKICAgICB9KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFJlc291cmNlTG9hZGVy
OjpkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgZGlkUmVj
ZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJl
YWNoZWRUZXJtaW5hbFN0YXRlKCkpCkBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRlcjo6d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKICAgICAgICAgbV9oYW5kbGUt
PmNhbmNlbCgpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwg
RGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmFk
ZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlw
ZSkKIHsKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZl
cmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CkBAIC0zNDIsNyAr
MzQyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICAgICAgbV9yZXNvdXJjZURhdGEu
YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAKLWNvbnN0IFNoYXJlZEJ1ZmZlciogUmVzb3VyY2VM
b2FkZXI6OnJlc291cmNlRGF0YSgpIGNvbnN0Citjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9y
ZXNvdXJjZURhdGEuZ2V0KCkuZ2V0KCk7CiB9CkBAIC01NTAsMTQgKzU1MCwxNCBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgsIGxvbmcgbAogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3Ro
LCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBh
eWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgs
IGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewotICAgIC8vIFRo
aXMgbWV0aG9kIHNob3VsZCBvbmx5IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEgU2hhcmVkQnVmZmVy
LgorICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KICAgICBBU1NFUlQoIWJ1ZmZlciB8fCAoIWRhdGEgJiYg
IWxlbmd0aCkpOwogCiAgICAgLy8gUHJvdGVjdCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9k
IHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvCkBAIC03MzQsNyArNzM0LDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ24KICAgICBkaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5n
dGgsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KIAotdm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgZGlkUmVj
ZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZEJ5dGVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggMzdk
NjY3ZDgzNzZkMDBkYTc4OTQ2MmRjY2UxYWRiMzM2ODg5ZmQwZC4uNzBlYTIyMGRjMTdjNzM3NmVk
NjYwZmE3YTYxYTg0ZTMxYzMzNGNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluaXQo
UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCi0g
ICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRlbGl2ZXJSZXNwb25zZUFuZERhdGEo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0TG9h
ZGluZygpCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFz
ZVJlc291cmNlcygpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogCi0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiByZXNv
dXJjZURhdGEoKSBjb25zdDsKKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiByZXNv
dXJjZURhdGEoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAg
ICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKQEAgLTEwOCw3ICsx
MDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxl
cik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNp
Z25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcg
bG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIApAQCAtMTY3LDcgKzE2Nyw3
IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgd2FzQ2FuY2VsbGVkKCkgY29uc3QgeyByZXR1cm4g
bV9jYW5jZWxsYXRpb25TdGF0dXMgPj0gQ2FuY2VsbGVkOyB9CiAKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAgICAKICAgICB2b2lkIHNldFJlZmVycmVyUG9saWN5
KFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KSB7IG1fb3B0aW9ucy5yZWZlcnJlclBvbGlj
eSA9IHJlZmVycmVyUG9saWN5OyB9CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3ko
KSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3k7IH0KQEAgLTE5Miw3ICsx
OTIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291
cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJj
ZUVycm9yJikgPSAwOwogCi0gICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCos
IHVuc2lnbmVkLCBTaGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgYWRk
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciosIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdm9pZCBsb2FkRGF0YVVSTCgpOwogICAgIHZv
aWQgZmluaXNoTmV0d29ya0xvYWQoKTsKIApAQCAtMjAzLDcgKzIwMyw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNl
UmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2
b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0
JiYsIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxl
Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cAppbmRleCA3MTk2ODJjNjQ2NDgyMDM0MDE3ZjY4ZTVmYTY5Mzg4YmVkYjJlZWFhLi4zN2QwYmI4
MjFhYmQ4NmE5YjU2MDZlMTI3ZWZjOTQxMmE1MWJiMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIFN1YnJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgsIGxvbgogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBu
dWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBT
dWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBh
eWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICNpZiBVU0UoUVVJQ0tf
TE9PSykKICAgICBpZiAoYXV0byBwcmV2aWV3TG9hZGVyID0gbV9wcmV2aWV3TG9hZGVyLmdldCgp
KSB7CkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGUKICAgICBkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERh
dGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAg
QVNTRVJUKG1fcmVzb3VyY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5oCmluZGV4IDM3MjNiNmI5YWI5ZmRkYWFhNTU3NGJmYjBlNmYzOGNlZDdhZWZiNzUuLjgz
MmM5ZjBlNzNkMzg0NjRhNzk1ZjQwMzg2MGY3OWMzNGU3M2JjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25l
ZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25z
dCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBvdmVycmlkZTsKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBF
eHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVzcG9uc2VDcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2woY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4g
Y2hlY2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHByZXZpb3VzUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNl
UmVxdWVzdCYgbmV3UmVxdWVzdCk7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
Y29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVu
Y29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwog
CiAgICAgdm9pZCBub3RpZnlEb25lKExvYWRDb21wbGV0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKaW5kZXggZjY2MjkyZTMxY2JlYjQyNjQzMGE4MzJhZGVm
NDI5OTFjYjU3NDM2ZS4uYThhNDliNDdmOTI3MzQyNzRiYTRjZWFiYzE3MDdmZWZhN2I2NjQwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKQEAgLTQzLDcgKzQzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBTdWJz
dGl0dXRlRGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGNvbnRlbnQsIGNvbnN0IFVSTCYgZmFp
bGluZ1VSTCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFNlc3Npb25IaXN0b3J5
VmlzaWJpbGl0eSBzaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KQorICAgICAgICBTdWJzdGl0
dXRlRGF0YShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjb250ZW50LCBjb25zdCBV
UkwmIGZhaWxpbmdVUkwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTZXNzaW9u
SGlzdG9yeVZpc2liaWxpdHkgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSkKICAgICAgICAg
ICAgIDogbV9jb250ZW50KFdURk1vdmUoY29udGVudCkpCiAgICAgICAgICAgICAsIG1fZmFpbGlu
Z1VSTChmYWlsaW5nVVJMKQogICAgICAgICAgICAgLCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQpAQCAt
NTQsMTQgKzU0LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc1ZhbGlk
KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50ICE9IG51bGxwdHI7IH0KICAgICAgICAgYm9vbCBz
aG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRSZXZl
YWxUb1Nlc3Npb25IaXN0b3J5ID09IFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6VmlzaWJsZTsg
fQogCi0gICAgICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogY29udGVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGVudC5nZXQoKTsgfQorICAgICAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBjb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50LmdldCgpOyB9CiAgICAgICAgIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlLm1pbWVUeXBl
KCk7IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcoKSBjb25zdCB7IHJldHVy
biBtX3Jlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKTsgfQogICAgICAgICBjb25zdCBVUkwmIGZh
aWxpbmdVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZhaWxpbmdVUkw7IH0KICAgICAgICAgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9
CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
Y29udGVudDsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fY29udGVu
dDsKICAgICAgICAgVVJMIG1fZmFpbGluZ1VSTDsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBt
X3Jlc3BvbnNlOwogICAgICAgICBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgbV9zaG91bGRSZXZl
YWxUb1Nlc3Npb25IaXN0b3J5IHsgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4gfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCAzNDRjYTk4
Mjg1NzUyZThmMTAxNzBmMjMyMDQ5ZTBjYTJhZDRmYzg2Li5jZjJkZTBjNjJkOTVmMzMyNWI0MmI0
NmUyNDAzNzc0NDEwNzQyYTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
c3RpdHV0ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVS
ZXNvdXJjZS5oCkBAIC0zNywxNCArMzcsMTQgQEAgcHVibGljOgogCiAgICAgY29uc3QgVVJMJiB1
cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQotICAgIFNoYXJlZEJ1ZmZl
ciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZm
ZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0KKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0KICAgICB2b2lkIGFwcGVuZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVu
Z3RoKTsgfQogICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0YS5lbXB0eSgpOyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVy
UmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHByb3RlY3Rl
ZDoKLSAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKKyAgICBTdWJzdGl0dXRlUmVzb3Vy
Y2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiAgICAgICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQogICAg
ICAgICAsIG1fcmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpCiAgICAgICAgICwgbV9kYXRhKFdU
Rk1vdmUoZGF0YSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA3MjBhOTI3MWNkMzI2NWVmNGNlMjMyNjFh
MjZkYjBkODI4YzYzMzQ2Li41MTk3OGY0MTIzODc0ZGM1NjYwZWZmNDcwNjU5NzA3ZDRlNWQ4NWE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1MywxNCArMjUzLDE0IEBAIFVSTCBBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBhdGgpCiAjZW5kaWYKIH0KIAot
c3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJl
c291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCitzdGF0aWMgaW5saW5l
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UmIHJlc291cmNlKQogewogICAgIGlmIChyZXNvdXJjZS5wYXRoKCkuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7Ci0gICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShy
ZXNvdXJjZS5wYXRoKCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVz
b3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCitib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpt
YXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VF
cnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYgZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwog
ICAgIGlmICghc2hvdWxkTG9hZFJlc291cmNlRnJvbUFwcGxpY2F0aW9uQ2FjaGUocmVxdWVzdCwg
cmVzb3VyY2UpKQpAQCAtMjc3LDcgKzI3Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6
Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJl
c291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICAvLyBJZiBub3JtYWwgbG9hZGluZyBy
ZXN1bHRzIGluIGEgcmVkaXJlY3QgdG8gYSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3JpZ2luIChp
bmRpY2F0aXZlIG9mIGEgY2FwdGl2ZSBwb3J0YWwpLCBvciBhIDR4eCBvciA1eHggc3RhdHVzIGNv
ZGUgb3IgZXF1aXZhbGVudCwKICAgICAvLyBvciBpZiB0aGVyZSB3ZXJlIG5ldHdvcmsgZXJyb3Jz
IChidXQgbm90IGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRoZSBkb3dubG9hZCksIHRoZW4gaW5zdGVh
ZCBnZXQsIGZyb20gdGhlIGNhY2hlLCB0aGUgcmVzb3VyY2Ugb2YgdGhlIGZhbGxiYWNrIGVudHJ5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5oCmluZGV4IGRjODU4ZmRkNmQ1NDUzZWI0MzU5MjhkM2VkNzU3NTcwODM1OTQ1ZTAu
LmI5NjM1NmU3ODU2MTM4OTU2YWU0YzA1OTgzMTcwY2RmNzIzNjcyYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBA
IC00Miw3ICs0Miw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgRG9jdW1l
bnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTEwNCw4ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKFJlc291cmNl
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKIAotICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJl
cXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYpOwotICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91
c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgYm9vbCBtYXliZUxv
YWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICB2b2lkIG1heWJlTG9hZEZh
bGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9y
JiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7CiAKICAgICBib29s
IGNhbkNhY2hlSW5CYWNrRm9yd2FyZENhY2hlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5k
ZXggNjcxMDk1N2MzYWI3NGE3NTlmYzI3NTFmZDdhMDZiMzExZTUxOGNlNS4uMmJiM2ZlNzViOTk3
N2U4MzMyMmFlMjU4MGY3MjEyZWU1YmYyMTYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAg
LTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8QXBwbGljYXRpb25D
YWNoZVJlc291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBVUkwm
IHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhdGgpCitSZWY8QXBw
bGljYXRpb25DYWNoZVJlc291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShj
b25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVk
IHR5cGUsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBwYXRoKQogewogICAgIEFTU0VSVCghdXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKTsK
ICAgICBpZiAoIWJ1ZmZlcikKQEAgLTQwLDcgKzQwLDcgQEAgUmVmPEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZT4gQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmws
IGMKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJM
IHsgdXJsIH0sIFdURk1vdmUocmVzb3VyY2VSZXNwb25zZSksIHR5cGUsIGJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpLCBwYXRoKSk7CiB9CiAKLUFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCB1bnNpZ25lZCB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYg
cGF0aCkKK0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNl
KFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCiAg
ICAgOiBTdWJzdGl0dXRlUmVzb3VyY2UoV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHJlc3BvbnNlKSwg
V1RGTW92ZShkYXRhKSkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9zdG9yYWdlSUQoMCkK
QEAgLTUxLDcgKzUxLDcgQEAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAg
ICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0
eSgpID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNw
b25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29u
dGlndW91cygpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRo
KSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVk
IHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCmluZGV4IDg4Yzk0ZGUxYTc3NDEwNDY5YzkzMWE0MmE0
NzliMWU2Nzc3YTcwMmUuLmMyODhlNzAzNmM2NzYyYWQ0ODc2YmE4ODE0NjlhNzVkMjIzN2UxYmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgICAgICBG
YWxsYmFjayA9IDEgPDwgNAogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZT4gY3JlYXRlKGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1
bnNpZ25lZCB0eXBlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSwgY29uc3QgU3RyaW5nJiBwYXRoID0gU3RyaW5nKCkpOworICAgIHN0YXRpYyBSZWY8QXBw
bGljYXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUoY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgY29uc3QgU3RyaW5nJiBwYXRoID0gU3RyaW5nKCkp
OwogCiAgICAgdW5zaWduZWQgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIHZv
aWQgYWRkVHlwZSh1bnNpZ25lZCB0eXBlKTsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogI2Vu
ZGlmCiAgICAgCiBwcml2YXRlOgotICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiwg
UmVzb3VyY2VSZXNwb25zZSYmLCB1bnNpZ25lZCB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBTdHJpbmcmIHBhdGgpOworICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiwg
UmVzb3VyY2VSZXNwb25zZSYmLCB1bnNpZ25lZCB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBwYXRoKTsKIAogICAgIHZvaWQgZGVsaXZlcihSZXNvdXJj
ZUxvYWRlciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBjNzcwZDc2NDEz
NTA2NTJmNWY3NGEwZGNlNTBjZThkMzNkMWZjNWU0Li44Y2YwNWNjZTE4ODAxMjhkZTU5YmU3MGE5
OTgzNmY1YTc0NWI2ZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTExMTIsNyArMTExMiw3
IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9h
ZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0g
Y2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludCgxKTsKIAogICAgICAgICB1bnNpZ25lZCB0eXBlID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgyKSk7Ci0g
ICAgICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0
YXRlbWVudC0+Y29sdW1uQmxvYig2KSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKICAgICAgICAgCiAgICAg
ICAgIFN0cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoNyk7CiAgICAgICAg
IGxvbmcgbG9uZyBzaXplID0gMDsKQEAgLTEyNzIsNyArMTI3Miw3IEBAIGJvb2wgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OnNob3VsZFN0b3JlUmVzb3VyY2VBc0ZsYXRGaWxlKEFwcGxpY2F0aW9u
Q2FjaGVSZXNvCiAgICAgcmV0dXJuIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
dHlwZSwgImF1ZGlvLyIpIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlw
ZSwgInZpZGVvLyIpOwogfQogICAgIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3Jp
dGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBT
dHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNp
b24pCitib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJ
bkRpcmVjdG9yeShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRp
cmVjdG9yeSwgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pCiB7CiAg
ICAgU3RyaW5nIGZ1bGxQYXRoOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAppbmRleCA5YTk1MzAwODc2
NmE4ODg1NTYxYjM0ODg4OWI4Y2VkYTJiMmViMzM4Li40MTAyYTE4MDhiNDU1NTdiNjQ1ZTM2ZTdl
NjgxZmM0YzZkMjA3Y2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaApAQCAtMzksNyArMzksNyBAQCBjbGFz
cyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdDsKIGNs
YXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHRlbXBsYXRl
PHR5cGVuYW1lPiBjbGFzcyBTdG9yYWdlSURKb3VybmFsOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZSA6IHB1YmxpYyBSZWZDb3VudGVkPEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlPiB7
CkBAIC0xMjIsNyArMTIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGVuc3VyZU9yaWdpblJlY29y
ZChjb25zdCBTZWN1cml0eU9yaWdpbiopOwogICAgIHN0YXRpYyBib29sIHNob3VsZFN0b3JlUmVz
b3VyY2VBc0ZsYXRGaWxlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSopOwogICAgIHZvaWQgZGVs
ZXRlVGFibGVzKCk7Ci0gICAgYm9vbCB3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBvdXRGaWxlbmFt
ZSwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKTsKKyAgICBib29sIHdyaXRlRGF0YVRvVW5p
cXVlRmlsZUluRGlyZWN0b3J5KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
IGRpcmVjdG9yeSwgU3RyaW5nJiBvdXRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5z
aW9uKTsKIAogICAgIHZvaWQgbG9hZE1hbmlmZXN0SG9zdEhhc2hlcygpOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCmluZGV4IDZk
ZTgwYzEwYWM3ZDI1Y2YzNDY5ZjZkZWYwZmFmNzI0MWY1OTY0MjguLjRlZjljZDY2YmQwODhiNzRj
MDQ2YzA2OTBkMWU5ZDNlNWUzMzYwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKQEAgLTQ2LDEyICs0NiwxMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgUmVmUHRyPEFyY2hpdmU+IFJhd0RhdGFDcmVhdGlvbkZ1
bmN0aW9uKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYpOwordHlwZWRlZiBSZWZQdHI8QXJjaGl2
ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24oY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpOwogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24q
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IEFyY2hpdmVNSU1FVHlwZXNNYXA7CiAKIC8vIFRo
ZSBjcmVhdGUgZnVuY3Rpb25zIGluIHRoZSBhcmNoaXZlIGNsYXNzZXMgcmV0dXJuIFJlZlB0ciB0
byBjb25jcmV0ZSBzdWJjbGFzc2VzCiAvLyBvZiBBcmNoaXZlLiBUaGlzIGFkYXB0b3IgbWFrZXMg
dGhlIGZ1bmN0aW9ucyBoYXZlIGEgdW5pZm9ybSByZXR1cm4gdHlwZS4KLXRlbXBsYXRlPHR5cGVu
YW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBhcmNoaXZlRmFjdG9yeUNy
ZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBBcmNoaXZlQ2xhc3M+IHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4gYXJjaGl2ZUZhY3RvcnlD
cmVhdGUoY29uc3QgVVJMJiB1cmwsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICByZXR1cm4gQXJjaGl2ZUNsYXNzOjpjcmVhdGUodXJsLCBidWZmZXIpOwogfQpAQCAtODMs
NyArODMsNyBAQCBib29sIEFyY2hpdmVGYWN0b3J5Ojppc0FyY2hpdmVNSU1FVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiAhbWltZVR5cGUuaXNFbXB0eSgpICYmIGFyY2hp
dmVNSU1FVHlwZXMoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKLVJlZlB0cjxBcmNoaXZlPiBB
cmNoaXZlRmFjdG9yeTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCitSZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6
OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5
LmgKaW5kZXggMjFkMjM2NWNmOGQ5ZDkwMWVmZTdhYWQ1NTJiZjNkYTQwNjlmZTQwZC4uNTU2NDUx
NWM5ZTBkOWQwMzNiNzkwYzc0NzI4NWEyNTg1M2FiZTAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCkBAIC0zNCwxMiArMzQsMTIgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBBcmNoaXZlRmFjdG9yeSB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgaXNBcmNoaXZlTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGlj
IFJlZlB0cjxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGNyZWF0
ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3Rlcktub3duQXJjaGl2ZU1JTUVUeXBl
cyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKaW5k
ZXggZmMyMGRhM2RhMDMyY2JlZjc0ZjJlOWM4NDI4YWNiNGVlMzdiZWYyMy4uMDczODM5NGE4Mjg3
MTRhYTBiOTBlZTc1MDc5ZDQ4NmY1YjBlODY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIEFyY2hpdmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291
cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitpbmxpbmUgQXJjaGl2
ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
ZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgOiBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMIHsgdXJsIH0s
IFJlc291cmNlUmVzcG9uc2UgeyByZXNwb25zZSB9LCBXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9t
aW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1fdGV4dEVuY29kaW5nKHRleHRFbmNvZGluZykKQEAg
LTQyLDcgKzQyLDcgQEAgaW5saW5lIEFyY2hpdmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291cmNlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwKIHsKIH0KIAotUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRF
bmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC01NCw3ICs1NCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6
Y3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uCiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQXJjaGl2ZVJlc291cmNlKGRhdGEucmVsZWFzZU5vbk51bGwoKSwgdXJsLCBtaW1l
VHlwZSwgdGV4dEVuY29kaW5nLCBmcmFtZU5hbWUsIHJlc3BvbnNlKSk7CiB9CiAKLVJlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQorUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIHJldHVybiBjcmVhdGUoV1RGTW92
ZShkYXRhKSwgdXJsLCByZXNwb25zZS5taW1lVHlwZSgpLCByZXNwb25zZS50ZXh0RW5jb2RpbmdO
YW1lKCksIFN0cmluZygpLCByZXNwb25zZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oCmluZGV4IDIwOWU5NzE3YWViMDkzNjBkYjM5Mjdl
NmVmYTFlNWJmMWMyYzk3Y2EuLjA1NDhlZjcyMWVmZDI3YzAwY2U5M2QxMjI3MGVjZWM0NmMwMmFm
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZS5oCkBAIC0zNCw4ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXJjaGl2
ZVJlc291cmNlIDogcHVibGljIFN1YnN0aXR1dGVSZXNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBVUkwmLAorICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBj
cmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBVUkwmLAogICAgICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcm
IHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsCiAgICAgICAgIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmID0gUmVzb3VyY2VSZXNwb25zZSgpKTsKIApAQCAtNDcsNyArNDcsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRJZ25vcmVXaGVuVW5hcmNoaXZpbmcoKSBjb25zdCB7
IHJldHVybiBtX3Nob3VsZElnbm9yZVdoZW5VbmFyY2hpdmluZzsgfQogCiBwcml2YXRlOgotICAg
IEFyY2hpdmVSZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBBcmNoaXZlUmVzb3Vy
Y2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgU3RyaW5nIG1fbWltZVR5
cGU7CiAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCBmNWVjNGRkNjdm
N2RmOGQ5ZGEyMDliNDBlMjNjMDQzOWI2ZTY4YjAzLi43MTE1MGNiZGQ4OTY5ZTZhZjAyODY4NGI2
YmY2Y2JjMGE1MGIyZmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtMjQ4LDEyICsyNDgsMTIgQEAgUmVmPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShSZWY8QXJjaGl2ZVJlc291
cmNlPiYmIG1haW5SZXNvdXIKICAgICByZXR1cm4gYXJjaGl2ZTsKIH0KIAotUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEp
CitSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShVUkwoKSwgZGF0
YSk7CiB9CiAKLVJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhKQorUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhKQogewogICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBD
cmVhdGluZyBmcm9tIHJhdyBkYXRhIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaAppbmRleCBkMDllYzlmNzVhYmExMzZhODYz
MzllYjRkODZhYmQ4Mjc3YzRmZjA0Li41YTA3YjEwYjRiZTZmODYyMDExYTc4MmE3ZGVkMjM2NzU5
MjQzNjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5oCkBAIC00MSw4ICs0MSw4IEBAIHN0cnVjdCBTaW1wbGVSYW5nZTsKIGNs
YXNzIExlZ2FjeVdlYkFyY2hpdmUgZmluYWwgOiBwdWJsaWMgQXJjaGl2ZSB7CiBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0
ZShTaGFyZWRCdWZmZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRl
KFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYgbWFpblJlc291cmNlLCBWZWN0b3I8UmVmPEFyY2hpdmVS
ZXNvdXJjZT4+JiYgc3VicmVzb3VyY2VzLCBWZWN0b3I8UmVmPExlZ2FjeVdlYkFyY2hpdmU+PiYm
IHN1YmZyYW1lQXJjaGl2ZXMpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gY3JlYXRlKE5vZGUmLCBGdW5jdGlvbjxib29sKEZyYW1lJik+JiYgZnJh
bWVGaWx0ZXIgPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5
V2ViQXJjaGl2ZT4gY3JlYXRlKEZyYW1lJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAppbmRleCA5OTNjMmI4ZTgzMGRjM2Q3
NWM1YWQzMTliYmFmZTlkZjQ1YzUwMTBlLi5kMDEzOWY4N2EwNmY5Njk3OGI3NDc3ZTlmNDk5OWMz
NGVhOWY4NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBSZWY8TUhUTUxBcmNoaXZl
PiBNSFRNTEFyY2hpdmU6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTUhUTUxB
cmNoaXZlKTsKIH0KIAotUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUo
Y29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxNSFRNTEFyY2hpdmU+
IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewogICAgIC8vIEZvciBzZWN1cml0eSByZWFzb25zIHdlIG9ubHkgbG9hZCBN
SFRNTCBwYWdlcyBmcm9tIGxvY2FsIFVSTHMuCiAgICAgaWYgKCFMZWdhY3lTY2hlbWVSZWdpc3Ry
eTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHVybC5wcm90b2NvbCgpLnRvU3RyaW5nKCkp
KQpAQCAtMTMwLDcgKzEzMCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6
Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgcmV0dXJuIG1h
aW5BcmNoaXZlOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRl
TUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTUhUTUxB
cmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogewogICAgIFZlY3RvcjxQYWdl
U2VyaWFsaXplcjo6UmVzb3VyY2U+IHJlc291cmNlczsKICAgICBQYWdlU2VyaWFsaXplciBwYWdl
U2VyaWFsaXplcihyZXNvdXJjZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCAzZDJkYjdjOTYwMDJlYmU2ODRiMmJlZjhm
MWVhOWUyZTk3OTRhNTg5Li4yZGZlODdlODJlN2E0ZGNlMGYzNDFjMzYxOTQzYzk5MDIwNWM4ZGIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFy
Y2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFy
Y2hpdmUuaApAQCAtMzgsMTQgKzM4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
TUhUTUxQYXJzZXI7CiBjbGFzcyBQYWdlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTUhUTUxBcmNoaXZlIGZpbmFsIDogcHVibGlj
IEFyY2hpdmUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TUhUTUxBcmNoaXZlPiBjcmVhdGUo
KTsKLSAgICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIFNo
YXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8TUhUTUxBcmNoaXZlPiBjcmVhdGUoY29u
c3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCi0gICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKKyAgICBzdGF0aWMgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKIAogICAgIHZpcnR1
YWwgfk1IVE1MQXJjaGl2ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNjY1ZTY5Y2E3NzE0ZTQ0OWFmZTRjYTY4
YTcyNDE1MjMwZDEwOWIxNC4uZTUxODZlZmIwYjRmYTcwY2I2MDkzMWY0ODRlNTAwY2MxMGUwMGJj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
UGFyc2VyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgYm9vbCBza2lwTGluZXNVbnRpbEJv
dW5kYXJ5Rm91bmQoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGxpbmVSZWFkZXIsIGNvbgogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotTUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2VyKFNoYXJlZEJ1ZmZl
ciogZGF0YSkKK01IVE1MUGFyc2VyOjpNSFRNTFBhcnNlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhKQogICAgIDogbV9saW5lUmVhZGVyKGRhdGEsICJcclxuIikKIHsKIH0KQEAgLTIxNSw3
ICsyMTUsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0
UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBMT0dfRVJST1IoIklu
dmFsaWQgZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KLSAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgLy8gRklYTUU6IHRoZSBVUkwgaW4g
dGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZlLCB3ZSBzaG91bGQgcmVzb2x2ZSBpdCBp
ZiBpdCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlvbnMgNSB3YXlzIHRvIHJlc29sdmUgYSBV
Ukw6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1NTcjc2VjdGlvbi01CiAgICAgLy8g
SUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdlbmVyYXRlIG9ubHkgYWJzb2x1dGUgVVJM
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNl
ci5oCmluZGV4IDFlOWJkNGQ3NzY3ZWUzOTFhMDAyMmY3MTc0OGYwMGI4NWM4MWIyNWYuLjBkNjA0
MzQzZjNkN2FkMTc4Y2MyMjAwM2M5NzljMjJlNTBhM2I5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaApAQCAtNDIsMTEgKzQyLDEx
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKIGNsYXNzIE1I
VE1MQXJjaGl2ZTsKIGNsYXNzIE1JTUVIZWFkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNSFRNTFBhcnNlciB7CiBwdWJsaWM6
Ci0gICAgZXhwbGljaXQgTUhUTUxQYXJzZXIoU2hhcmVkQnVmZmVyKik7CisgICAgZXhwbGljaXQg
TUhUTUxQYXJzZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogCiAgICAgUmVmUHRyPE1IVE1M
QXJjaGl2ZT4gcGFyc2VBcmNoaXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA5N2NkNGRm
ZmQxODhjMjgxMTFmZDY5YWMwZGJhMzM4YTY3MzMzNWE0Li5kZGQwYjFiODliMWQ4NzJiYjQyNzI3
ZWU3OGQ4ZmQ2MzllNGI4OTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MCw3ICs0MCw3IEBA
IENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiB7CiB9CiAKLXZvaWQgQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAg
ICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCmluZGV4IDY0
YjE0ZDVmNjVmZmZjODU1NGRmNDY2NWM3NTkxNmYzNGQxZDU0NmEuLjM3OThhOWI0ZDkwMTNjZmRl
YTZmNTZmYmRmMDAxNWFmODk0NzU3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtNDIsNyArNDIsNyBA
QCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdD4g
cHJvY2Vzcyhjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBE
b2N1bWVudCogPSBudWxscHRyKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3Vy
Y2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9kZWNvZGVyLnB0cigpOyB9CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRl
eCA5ZDJkYzczNjQ4MDJkMGQ2MmE2NTkxZGU2ODlhNWE3YTI0NDMwNTExLi4zOGEyZTE3ZjBkMDZj
OGFjOThkZTI0YjFlNTJiOGU2MGU5MjQxMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZv
aWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSkKICAgICAgICAgc2F2ZVBhcnNlZFN0eWxlU2hlZXQoKnNoZWV0Lm1fcGFy
c2VkU3R5bGVTaGVldENhY2hlKTsKIH0KIAotdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5p
c2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBkYXRhLT5t
YWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggZDM3ZmFmYWNjMDEyMmM4NzU0MGY0NjRiOWU1NjE2MGNj
YWU0NjlmOS4uZTY1NWM2OWUzZWRiNjA5NTAyMzljY2U0NTQ1ZjA5NmI1MjY1NmRlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCkBA
IC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJp
bmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25z
dCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0
IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZv
aWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBm
aW5hbDsKIAogICAgIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXgg
ZjlhZDc3MTNjNjAzYTZhMGE1NmJjYTI3OWNlODI1MDY2NmEzMjBmYS4uZDJiYzI4MjE0NzljNTlh
MjMyM2U0ZjY1Y2Q5NGI2M2I0MjM3MzY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFk
ZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogICAgICAgICBzdGF0aWNfY2Fz
dDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50KS5mb250TG9hZGVkKCp0aGlzKTsKIH0KIAotdm9p
ZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRGb250OjpmaW5pc2hM
b2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEg
PSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpAQCAtOTUsNyArOTUsNyBAQCBTdHJpbmcgQ2FjaGVk
Rm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHVybCgp
LmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CiB9CiAKLWJvb2wgQ2FjaGVkRm9udDo6
ZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSkKK2Jvb2wg
Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQogewog
ICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFlcnJvck9jY3VycmVkKCkgJiYg
IWlzTG9hZGluZygpICYmIGRhdGEpIHsKICAgICAgICAgYm9vbCB3cmFwcGluZzsKQEAgLTEwOCw3
ICsxMDgsNyBAQCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgcmV0dXJuIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5nZXQoKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENh
Y2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ5
dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQorc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1
c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29s
bGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCiB7CiAgICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVz
IH07CiAgICAgd3JhcHBpbmcgPSAhY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggMTU0ZGI4Y2Jh
YmYzZDVhMzhlMDk2MWFjYjU1Y2VhY2ZmMmYyOTczYS4uMTM0NjZjYzk5ZDBkMTljYmYzZDhlZjNk
ZmJkOTZmMzRkMGY4NTQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVh
bCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBp
dGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsK
ICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShG
b250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xk
LCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVh
bCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBB
dG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJ
dGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVi
bGljOgogcHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1
c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywg
Y29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250
RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBib29sIGVuc3VyZUN1c3Rv
bUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNh
bGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0
ZToKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25z
dCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAg
IHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDdjMDFjOGNjMjMxMTc4NmM2MjRm
NDg1ZWRlZjY5MzVmYjdlZmE1ZmIuLjk0NjI3OTUyMGQwZGE0NDYyMmM2YWNkMzY2NjIyODgxMDVl
ODE5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApA
QCAtNDY4LDcgKzQ2OCw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkK
ICAgICBtX3VwZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6
dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNo
ZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0
RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwpAQCAtNTIzLDE0ICs1MjMsMTQgQEAgYm9vbCBD
YWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVy
biAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNv
bmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAot
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRh
SWZOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgaWYgKCFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQogICAgICAgICBy
ZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0Uo
V0VCS0lUX0lNQUdFX0RFQ09ERVJTKQotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHRE
YXRhVG9QREYoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsK
ICNlbHNlCiAgICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxkIGhhdmUgYmVlbiBjYW5jZWxl
ZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVydGluZyBQb3N0U2NyaXB0IHRv
IFBERi4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU1NSw3ICs1NTUsNyBAQCBFbmNv
ZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NF
UlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRh
dGEpOwogICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOwpAQCAtNTY5LDcgKzU2OSw3IEBA
IHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7
CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZElt
YWdlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBjb252ZXJ0
ZWREYXRhSWZOZWVkZWQoZGF0YSk7CiAgICAgaWYgKG1fZGF0YSkgewpAQCAtNTk1LDcgKzU5NSw3
IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiB2b2lkIENhY2hlZEltYWdlOjpkaWRSZXBsYWNl
U2hhcmVkQnVmZmVyQ29udGVudHMoKQogewogICAgIGlmIChtX2ltYWdlKSB7Ci0gICAgICAgIC8v
IExldCB0aGUgSW1hZ2Uga25vdyB0aGF0IHRoZSBTaGFyZWRCdWZmZXIgaGFzIGJlZW4gcmVqaWdn
ZWQsIHNvIGl0IGNhbiBsZXQgZ28gb2YgYW55IHJlZmVyZW5jZXMgdG8gdGhlIGhlYXAtYWxsb2Nh
dGVkIHJlc291cmNlIGJ1ZmZlci4KKyAgICAgICAgLy8gTGV0IHRoZSBJbWFnZSBrbm93IHRoYXQg
dGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgaGFzIGJlZW4gcmVqaWdnZWQsIHNvIGl0IGNhbiBs
ZXQgZ28gb2YgYW55IHJlZmVyZW5jZXMgdG8gdGhlIGhlYXAtYWxsb2NhdGVkIHJlc291cmNlIGJ1
ZmZlci4KICAgICAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMjQyNzU2MTcpOiBJdCB3b3Vs
ZCBiZSBiZXR0ZXIgaWYgd2UgY291bGQgc29tZWhvdyB0ZWxsIHRoZSBJbWFnZSdzIGRlY29kZXIg
dG8gc3dhcCBpbiB0aGUgbmV3IGNvbnRlbnRzIHdpdGhvdXQgZGVzdHJveWluZyBhbnl0aGluZy4K
ICAgICAgICAgbV9pbWFnZS0+ZGVzdHJveURlY29kZWREYXRhKHRydWUpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggZDUxM2UxNmNiYTVhOTcw
N2MzM2FmYzc5MzkxNTE4NjZmYTQzOGE1Zi4uMDgzZjkyZjg4ODI3NmVlZGE4OTkxMjAzMWQyNDQ5
YTk2OGUyNjVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgK
QEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRo
KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZVdpZHRoKCk7
IH0KICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2lt
YWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KIAotICAgIHZvaWQgdXBkYXRl
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIGVu
dW0gU2l6ZVR5cGUgewogICAgICAgICBVc2VkU2l6ZSwKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgb3ZlcnJpZGU7CiAKICAgICBib29s
IHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7Ci0gICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIq
IGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5l
ZWRlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lk
IGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdl
RGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CkBAIC0xNjksNyArMTY5LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJ
bnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYp
OwogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImKTsK
KyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCkgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwCmluZGV4IDkwMGJkMzMyOGE2NGJhNzcyZTZjODAxMWFiYWE1ZTYxMWM2NDY1NWYuLjcx
ZTE2MDgyZmZlNjU1ZDExMWYxNjk5MGQxMjMwNTM1YmVhY2JmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtNDgsNyArNDgs
NyBAQCBDYWNoZWRSYXdSZXNvdXJjZTo6Q2FjaGVkUmF3UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgVHlwZSB0eXBlLAogICAgIEFTU0VSVChpc01haW5Pck1lZGlhT3JJ
Y29uT3JSYXdSZXNvdXJjZSgpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRh
Vmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNv
bnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVy
RGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVu
ayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewogICAgIHNpemVf
dCBwcmV2aW91c0RhdGFMZW5ndGggPSBlbmNvZGVkU2l6ZSgpOwogICAgIGlmICghZGF0YSB8fCBk
YXRhLT5zaXplKCkgPD0gcHJldmlvdXNEYXRhTGVuZ3RoKQpAQCAtNTYsNyArNTYsNyBAQCBzdGQ6
Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3Vs
YXRlSW5jcmVtZW50YWxEYXRhQwogICAgIHJldHVybiBkYXRhLT5nZXRTb21lRGF0YShwcmV2aW91
c0RhdGFMZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRl
QnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gU2tp
cCBhbnkgdXBkYXRlQnVmZmVycyB0cmlnZ2VyZWQgZnJvbSBuZXN0ZWQgcnVubG9vcHMuIFdlJ2xs
IGhhdmUgdGhlIGNvbXBsZXRlIGJ1ZmZlciBpbiBmaW5pc2hMb2FkaW5nLgogICAgIGlmIChtX2lu
SW5jcmVtZW50YWxEYXRhTm90aWZ5KQpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jl
c291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkK
ICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lk
IENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSYXdSZXNv
dXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKG1faW5JbmNyZW1l
bnRhbERhdGFOb3RpZnkpIHsKICAgICAgICAgLy8gV2UgbWF5IGdldCBoZXJlIHN5bmNocm9ub3Vz
bHkgZnJvbSB1cGRhdGVCdWZmZXIoKSBpZiB0aGUgY2FsbGJhY2sgdGhlcmUgZW5kcyB1cCBzcGlu
bmluZyBhIHJ1bmxvb3AuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5oCmluZGV4IDU3ZmQ3YWI1YzEwMGRjMDlhZGYyNmVjNGNiYWM0NTE0ZjM2Zjc1
ZmYuLmE3ODY1ZjhhZDE3OGFlZmIzMjIwYTU2ZGNmZjE5NTk5M2NmOTVhZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC01MSw5ICs1
MSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRS
ZXNvdXJjZUNsaWVudCYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29u
c3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAg
dm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0
YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9p
ZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc3dpdGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJjZSgpIG92ZXJyaWRl
OwogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9hbGxvd0VuY29kZWREYXRhUmVwbGFjZW1lbnQ7IH0KIAotICAgIHN0ZDo6b3B0aW9u
YWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNv
bnN0IFNoYXJlZEJ1ZmZlciopIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVy
RGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqKSBjb25zdDsKICAgICB2b2lkIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2
ZWQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICAKICNpZiBVU0Uo
UVVJQ0tfTE9PSykKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVkaXJl
Y3RQYWlyLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1fcmVkaXJlY3RDaGFpbjsKIAogICAgIHN0
cnVjdCBEZWxheWVkRmluaXNoTG9hZGluZyB7Ci0gICAgICAgIFJlZlB0cjxjb25zdCBTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8RGVsYXllZEZpbmlzaExvYWRp
bmc+IG1fZGVsYXllZEZpbmlzaExvYWRpbmc7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggNTU2OTY0M2NkNWU2ODk3YTNjNThmYjQ2
MjM0NTQ2ZjA2ZGEwYWExYS4uOWRlMGEwNGNkNWVjNWYzZmFkMmZiMTZkN2IzMjJjODU4YTM4YTZi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogICAgICAgICBjbGllbnQtPm5vdGlmeUZp
bmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRl
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpCit2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0K
QEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0
IHVpbnQ4X3QqLCB1bnNpZ25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09
IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVk
UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
Zyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1l
dHJpY3MpOwpAQCAtOTE1LDcgKzkxNSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OkNhbGxiYWNr
Ojp0aW1lckZpcmVkKCkKIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAKLXZvaWQg
Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERh
dGEoU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCiB7CiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgK
aW5kZXggMjE4ZDc0ZjI3NzZhOTY1ZmNlYTQ4YjYxYTMyNWY5NzI4YTc5MGRkOS4uYzk4MmRkNjkz
N2EwYmMyYmYzOGM0MjYxMjZmZmU2ZTc4Yzc5NjQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgQ29va2ll
SmFyOwogY2xhc3MgTWVtb3J5Q2FjaGU7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFRleHRSZXNvdXJj
ZURlY29kZXI7CiAKQEAgLTExMiw5ICsxMTIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29k
aW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRleHRS
ZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBudWxs
cHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0
IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOworICAgIHZpcnR1YWwg
dm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3Vy
Y2U6OlN0YXR1cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNlRXJyb3IoY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CkBAIC0yMTMsNyArMjEzLDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBjbGVhckxvYWRlcigpOwogCi0gICAgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KKyAg
ICBTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdl
dCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVz
b3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50
ICovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRlc1RvQmVTZW50ICovKSB7IH0KIAog
I2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0
cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYpOwogI2Vu
ZGlmCiAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllckZvckxvYWRXaXRo
b3V0UmVzb3VyY2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJGb3JMb2FkV2l0
aG91dFJlc291cmNlTG9hZGVyOyB9CkBAIC0zMzYsNyArMzM2LDcgQEAgcHJvdGVjdGVkOgogICAg
IEhhc2hDb3VudGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBOZWVk
ZWQgYnkgUGluZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVy
OwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogCiBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9s
YXN0RGVjb2RlZEFjY2Vzc1RpbWU7IC8vIFVzZWQgYXMgYSAidGhyYXNoIGd1YXJkIiBpbiB0aGUg
Y2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuY3BwCmluZGV4IGIwZjc2YTUwOTYxMGY2NzEwNTdiZWViZjBhMGI5YTYwMWNhODIyMmIuLmRi
NDMxNjA3YWU1NjM4MzAzODAwZGQyNTljMTAzNGNkMDkwZmNmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTIsNyArNTIs
NyBAQCBTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1
cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRTVkdEb2N1
bWVudDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExv
YWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRv
bid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBi
ZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKaW5kZXggYjAxMmJhOThlZWRmNzMyYzA4MmMz
NjNiMGNiZTEzMDM0NzRjMzA0OS4uNDQ1ZTRmOWY0MmMzYzI3NDA3OTc2YTY0ZTkxNTQwN2Y4YjUz
NGQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZp
bmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIFJl
ZlB0cjxTVkdEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVj
b2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0ZvbnQuY3BwCmluZGV4IDljZjA0MzcxOTRhOGEyZmNhNWU1MjVjN2JmZjlmZThlOThhNTBjMzIu
LmQyYzFkZTQ3ZWZiNzgxMzk4ZjQ0MzhiN2NhNGVhMjYwZTIyMTk3NjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAg
Ym9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5n
JiByZW1vdGVVUkkpCiAgICAgICAgIGlmICghbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50IHx8ICFm
aXJzdEZvbnRGYWNlKHJlbW90ZVVSSSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIGlmIChhdXRvIGNvbnZlcnRlZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KCptX2V4dGVy
bmFsU1ZHRm9udEVsZW1lbnQpKQotICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7
CisgICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX2V4dGVybmFs
U1ZHRm9udEVsZW1lbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdGb250LmgKaW5kZXggYTE1ZWFkMGUxNjQwOTAyN2VmOTIwNGViOTMzYjRmMDU0YzM4
NTgyMy4uMzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3ZmViMjUzYzViNjI0OTBjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01MCw3ICs1MCw3IEBA
IHByaXZhdGU6CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6ZUV4dGVybmFsU1ZH
Rm9udEVsZW1lbnQoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKICAgICBTVkdGb250RmFj
ZUVsZW1lbnQqIGZpcnN0Rm9udEZhY2UoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKIAot
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OwogICAgIFJlZlB0cjxTVkdEb2N1
bWVudD4gbV9leHRlcm5hbFNWR0RvY3VtZW50OwogICAgIFNWR0ZvbnRFbGVtZW50KiBtX2V4dGVy
bmFsU1ZHRm9udEVsZW1lbnQ7CiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRp
bmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRl
eCAxZGY1YzRiMTdlZWViY2I0ZTRiYmZlNGFmODg5MWFkZWNiNmFiOTYwLi42MmExNmU4NmIzMjE5
M2Q4ZTU2ZDYxOTJmNzdlOWJjNmY0MDhlOWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtOTYsNyArOTYsNyBAQCB1bnNpZ25lZCBDYWNoZWRT
Y3JpcHQ6OnNjcmlwdEhhc2goKQogICAgIHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQg
Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlz
aExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmgKaW5kZXggNzViZTRkYjcxNTc5ZTMxYWFkYTk3MDY5ZDliZmZjMmM3ZTYz
NDMyMS4uODY1MWU2MzlhZDkwNjE3Mjg1NjFjMzI0YmZhN2FmNGNmOTdmNmQzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaApAQCAtNDcsNyArNDcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAg
U3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVj
b2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rl
ci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOwogCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCA1NDI2
NmRkOTA4MTljMzRlOTE1MDg0MzQ4OTQyZTkxM2FkZTgxZWQ0Li4wYzg0MjhiYjk5ZGI2ZGZiMTZh
MzQ4MTM0YzM4MjY4MzZjY2U1NDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDAsMTAgKzQwLDEwIEBAIENhY2hlZFRleHRUcmFj
azo6Q2FjaGVkVGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6
U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQo
ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEp
OwotICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VD
b250aWd1b3VzKCkgOiBSZWZQdHI8U2hhcmVkQnVmZmVyPigpOwogICAgIHNldEVuY29kZWRTaXpl
KGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fs
a2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKQEAgLTUxLDEzICs1
MSwxMyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVk
QnVmZmVyKiBkYXRhKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVk
UmVzb3VyY2UoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0
ZUJ1ZmZlcigmZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsK
IH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hl
ZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9VcGRhdGVC
dWZmZXIoZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0
cmljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgK
aW5kZXggZjQ2MzE3ODMyMWVkYzdjYTg2OTcwY2Y0YWRkYTQwODk2OTI5Njg4NS4uMDliNDMzOWEz
N2I2NzNiMmFjNGZkYWUxNDZiMjliOTY0Nzc3ZmNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaApAQCAtMzUsMTAgKzM1LDEwIEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1
cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAg
IHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciopOworICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3Bw
CmluZGV4IGI5YTY1ODc1M2NlOWY3ZWMzNjMzZjFhMmY3NGU3Y2M5ZWEzOTg1NzQuLmQyZWZmMmQy
ZDQwYzkyNzczODc1NmM0YThmMGNiYjkzNDNiZTEwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYxLDcgKzYxLDcg
QEAgU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1
cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5p
c2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2Rh
dGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKaW5kZXggYzA0ZGQ0ZjE2Y2YzYjdlY2EyNTg5
MTBiOWVmYWY0MTI1NGUyZDcyOC4uYmQyMzEyMTRmMmQyMGJhMzk2NDQ2MDM2NmUwNDFiOTQxMzVh
YzRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5
bGVTaGVldC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5h
bDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBTdHJpbmcgbV9zaGVl
dDsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCmluZGV4
IGQwMjBhYzNkYzgwODQ0YTY3YTA3Y2I1YjFkMTU5ZjcxYzBjZGNkMTQuLmNlNTJjZmViZDc2MWU1
NjQ3NWEyMDFlODE0Mzg1MzM0ZWE0ZGJhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKQEAgLTMyLDE3ICszMiwxNyBAQCB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZDYWNoZWRVUkxSZXNwb25zZSogQ0ZDYWNoZWRVUkxSZXNw
b25zZVJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBEaXNrQ2FjaGVNb25pdG9yIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBtb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9u
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3Bv
bnNlUmVmKTsKLSAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeUdl
dEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJ5R2V0Rmls
ZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYpOwogCiBwcml2YXRlOgogICAgIERpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCi0g
ICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYp
OworICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYpOwogCiAg
ICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7IHJldHVy
biBtX3Jlc291cmNlUmVxdWVzdDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQppbmRleCA5M2VlOTYzNzRmMDNiYTMx
MjQ0M2QyODFjNTJhNDg0MDY5ZGYyYTMxLi5mYTRiOTAzYmVmOTM5NDgxYzIyZWE3ZGY1NTFlOGI1
NWU3ZTBlNTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0Nh
Y2hlTW9uaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNr
Q2FjaGVNb25pdG9yQ29jb2EubW0KQEAgLTQyLDEzICs0MiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2Vjb25kcyB3ZSdsbCB0cnkgdG8gd2FpdCBm
b3IgYSByZXNvdXJjZSB0byBiZSBkaXNrIGNhY2hlZCBiZWZvcmUgd2UgZm9yZ2V0IHRoZSByZXF1
ZXN0Lgogc3RhdGljIGNvbnN0IGRvdWJsZSBkaXNrQ2FjaGVNb25pdG9yVGltZW91dCA9IDIwOwog
Ci1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0
RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBEaXNrQ2Fj
aGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVz
cG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKICAgICBhdXRv
IGRhdGEgPSBfQ0ZDYWNoZWRVUkxSZXNwb25zZUdldE1lbU1hcHBlZERhdGEoY2FjaGVkUmVzcG9u
c2UpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKIH0KIAogdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjptb25p
dG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hl
ZFJlc3BvbnNlKQpAQCAtMTEzLDcgKzExMyw3IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tDYWNo
ZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JCiAg
ICAgX0NGQ2FjaGVkVVJMUmVzcG9uc2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9jayhj
YWNoZWRSZXNwb25zZSwgYmxvY2tUb1J1biwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiB9
CiAKLXZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCit2b2lkIERpc2tDYWNoZU1vbml0
b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZm
ZXIpCiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVz
b3VyY2VGb3JSZXF1ZXN0KG1fcmVzb3VyY2VSZXF1ZXN0LCBtX3Nlc3Npb25JRCk7CiAgICAgaWYg
KCFyZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5
UHJldmlld0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLmgKaW5kZXggZmY0MGM0MTZjYzYxNmU5MmIxMzA3YmFiYjdlMzQzYjM3ZTU0NjAwMC4u
ZThiZTFiMjEzNzZhMDU4NjlkMGU2MjVjZDg0YmJlYTJjOGVhMjhhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwogICAgIGJvb2wgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29sIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVk
QnVmZmVyJik7CisgICAgYm9vbCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKICAgICBib29sIGRpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lkIGRpZEZh
aWwoKTsKIApAQCAtNjAsMTIgKzYwLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcmV2aWV3Q29u
dmVydGVyRGlkRmluaXNoVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsIHsgfTsKICAg
ICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYp
IGZpbmFsOwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2
aWV3Q29udmVydGVyJikgZmluYWw7Ci0gICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2
ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAg
IHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBwcmV2aWV3Q29u
dmVydGVyRGlkRmluaXNoQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgZmluYWw7CiAgICAg
dm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYp
IGZpbmFsOwogCiAgICAgLy8gUHJldmlld0NvbnZlcnRlclByb3ZpZGVyCi0gICAgdm9pZCBwcm92
aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJikgZmluYWw7CisgICAg
dm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVy
dGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Kik+JiYpIGZpbmFsOwogICAgIHZvaWQgcHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRl
cihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcm
KT4mJikgZmluYWw7CiAKICAgICBSZWZQdHI8UHJldmlld0NvbnZlcnRlcj4gbV9jb252ZXJ0ZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0K
aW5kZXggMjNjOTcyNDJiYjlmYjc1M2ZhYjc0MzdhZjdlMDhhMDlkYTk2MjFmOS4uMzVmNmMxNDk5
YTU0YjQwMDA5M2JjMmU4OTJkNzk4Mzc2MDNkNmMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtNjMsNyArNjMsNyBAQCBzdGF0
aWMgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1ha2VDbGllbnQoY29uc3QgUmVzb3Vy
Y2VMb2FkZXImIGxvYWRlciwgYwogICAgIHJldHVybiBlbXB0eUNsaWVudCgpOwogfQogCi1ib29s
IExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChtX2ZpbmlzaGVk
TG9hZGluZ0RhdGFJbnRvQ29udmVydGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDcs
NyArMTQ3LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlk
U3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICB9KTsKIH0KIAotdm9pZCBM
ZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmll
d0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgTGVnYWN5UHJldmll
d0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXIm
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGF1dG8gcmVzb3Vy
Y2VMb2FkZXIgPSBtX3Jlc291cmNlTG9hZGVyLmdldCgpOwogICAgIGlmICghcmVzb3VyY2VMb2Fk
ZXIpCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRl
UGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICBtX2Ns
aWVudC0+ZGlkUmVxdWVzdFBhc3N3b3JkKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
IAotdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmll
d0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIExl
Z2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVy
KFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZjb252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwogICAg
IGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLmdldCgpLmdldCgpKTsKQEAgLTIzNSw3
ICsyMzUsNyBAQCBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0g
ZGVmYXVsdDsKIExlZ2FjeVByZXZpZXdMb2FkZXI6OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3Vy
Y2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAg
OiBtX2NvbnZlcnRlciB7IFByZXZpZXdDb252ZXJ0ZXI6OmNyZWF0ZShyZXNwb25zZSwgKnRoaXMp
IH0KICAgICAsIG1fY2xpZW50IHsgbWFrZUNsaWVudChsb2FkZXIsIG1fY29udmVydGVyLT5wcmV2
aWV3RmlsZU5hbWUoKSwgbV9jb252ZXJ0ZXItPnByZXZpZXdVVEkoKSkgfQotICAgICwgbV9vcmln
aW5hbERhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fb3JpZ2luYWxEYXRh
IHsgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpIH0KICAgICAsIG1fcmVzb3VyY2VM
b2FkZXIgeyBsb2FkZXIgfQogICAgICwgbV9zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2FkaW5n
IHsgbG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9h
ZGluZ1F1aWNrTG9va1ByZXZpZXcoKSB9CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0VkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApp
bmRleCBjZWQ1NjA5YzAwNWE1MzUyYjMzZDExOThmNDViOThiYTg0YTcxZDJjLi5hMTIwNDRjNDE2
ZDBkNDg2YWZlYzk5ZTFkMGUxMGVmYWYxZjlkYzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0VkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xp
ZW50LmgKQEAgLTM5LDEzICszOSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNz
IERPTVBhc3RlQWNjZXNzQ2F0ZWdvcnkgOiB1aW50OF90OwogZW51bSBjbGFzcyBET01QYXN0ZUFj
Y2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIAotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBFbGVt
ZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBLZXlib2FyZEV2ZW50OwogY2xhc3MgTm9kZTsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBT
dHlsZVByb3BlcnRpZXM7CiBjbGFzcyBUZXh0Q2hlY2tlckNsaWVudDsKIGNsYXNzIFZpc2libGVT
ZWxlY3Rpb247CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTaW1wbGVS
YW5nZSYpID0gMDsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgdmlydHVh
bCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiAvKiBpZGVu
dGlmaWVyICovLCBjb25zdCBTdHJpbmcmIC8qIGNvbnRlbnRUeXBlICovLCBjb25zdCBTdHJpbmcm
IC8qIHByZWZlcnJlZEZpbGVOYW1lICovLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8q
IGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0
cmluZyYgLyogcHJlZmVycmVkRmlsZU5hbWUgKi8sIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihj
b25zdCBTdHJpbmcmIC8qIGlkZW50aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29udGVudFR5
cGUgKi8sIGNvbnN0IFN0cmluZyYgLyogZmlsZVBhdGggKi8pIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYgLyogaWRlbnRpZmllciAqLykgeyB9CkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2Fy
ZERhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29u
c3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0ZvclNlbGVjdGlvbihjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjY2VwdGVkQ2Fu
ZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4dENoZWNraW5nUmVzdWx0KSB7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKaW5kZXggN2I5NjFkYjA0MDRjMWQxOTczNjA3NGU0YTlkNmMxZGM5NDIxMjI3Zi4uOTdl
MDFiNWM2OTc2ZDY3ZjBmM2JkZmNlZGVjNmFiY2YwNDg1MmM0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CkBAIC0xOTczLDcgKzE5NzMsNyBAQCBjb25zdCBTdHJpbmcmIFBhZ2U6OnVzZXJTdHlsZVNoZWV0
KCkgY29uc3QKICAgICAvLyBhbmQgd2hhdCBzaG91bGQgaGFwcGVuIHdoZW4gaXQgZmluaXNoZXMg
bG9hZGluZywgZXNwZWNpYWxseSB3aXRoIHJlc3BlY3QKICAgICAvLyB0byB3aGVuIHRoZSBsb2Fk
IGV2ZW50IGZpcmVzLCB3aGVuIERvY3VtZW50OjpjbG9zZSBpcyBjYWxsZWQsIGFuZCB3aGVuCiAg
ICAgLy8gbGF5b3V0L3BhaW50IGFyZSBhbGxvd2VkIHRvIGhhcHBlbi4KLSAgICBhdXRvIGRhdGEg
PSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV91c2Vy
U3R5bGVTaGVldFBhdGgpOworICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKG1fdXNlclN0eWxlU2hlZXRQYXRoKTsKICAgICBpZiAoIWRhdGEpCiAg
ICAgICAgIHJldHVybiBtX3VzZXJTdHlsZVNoZWV0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNl
cmlhbGl6ZXIuY3BwCmluZGV4IDAxZTE2ZGQ5OGY0ZGYwY2ViMjFkZjkwOGQxZjQwYzYyNGFhZTRj
MjcuLjAyMDAxYWIzNDMwMThhNzMyNTU5OThmYzQ3NGNlYmZjNDlmOGM4NDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBQYWdl
U2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIFN0cmluZyB0ZXh0ID0gYWNjdW11bGF0b3Iuc2VyaWFsaXplTm9kZXMoKmRv
Y3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgU2VyaWFsaXplZE5vZGVzOjpTdWJ0cmVlSW5jbHVk
aW5nTm9kZSk7Ci0gICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+c3VnZ2Vz
dGVkTUlNRVR5cGUoKSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGlu
Zy5lbmNvZGUodGV4dCwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOwor
ICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1JTUVUeXBl
KCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4dCwgUEFMOjpV
bmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOwogICAgIG1fcmVzb3VyY2VVUkxzLmFk
ZCh1cmwpOwogCiAgICAgZm9yIChhdXRvJiBub2RlIDogbm9kZXMpIHsKQEAgLTI2MCw3ICsyNjAs
NyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KENTU1N0eWxl
U2hlZXQqIHN0eWxlU2hlZXQsIGNvbnN0IFVSTAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGNoZWNrIHdoZXRoZXIgYSBjaGFyc2V0IGhhcyBiZWVuIHNwZWNpZmllZCBhbmQgaWYgbm9uZSB3
YXMgZm91bmQgYWRkIG9uZS4KICAgICAgICAgUEFMOjpUZXh0RW5jb2RpbmcgdGV4dEVuY29kaW5n
KHN0eWxlU2hlZXQtPmNvbnRlbnRzKCkuY2hhcnNldCgpKTsKICAgICAgICAgQVNTRVJUKHRleHRF
bmNvZGluZy5pc1ZhbGlkKCkpOwotICAgICAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsICJ0
ZXh0L2NzcyJfcywgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5l
bmNvZGUoY3NzVGV4dC50b1N0cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0
aWVzKSkgfSk7CisgICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3NzIl9z
LCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJp
bmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpIH0pOwogICAgICAgICBt
X3Jlc291cmNlVVJMcy5hZGQodXJsKTsKICAgICB9CiB9CkBAIC0yNzMsNyArMjczLDcgQEAgdm9p
ZCBQYWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2Us
IFJlbmRlckVsZW1lbnQqIGltYWcKICAgICBpZiAoIWltYWdlIHx8IGltYWdlLT5pbWFnZSgpID09
ICZJbWFnZTo6bnVsbEltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVyID8gaW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIo
aW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGRhdGEgPSBpbWFnZVJlbmRlcmVyID8gaW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1h
Z2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBkYXRhID0g
aW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlU2VyaWFsaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5o
CmluZGV4IGJmY2JlN2I4ZGJmZDQ5Zjc5ZDFhMDBjODAwNGVhZGUyOWM0ODA4MjEuLmZmM2UyZTFm
Y2IwNjFhNGZmZmM1ZGVmZDRjMmQxODBhZjQ5YmY3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VT
ZXJpYWxpemVyLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBSZXNvdXJj
ZSB7CiAgICAgICAgIFVSTCB1cmw7CiAgICAgICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICAgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGE7CiAgICAgfTsKIAogICAgIGV4cGxpY2l0IFBhZ2VTZXJpYWxpemVyKFZl
Y3RvcjxSZXNvdXJjZT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCmluZGV4IDNlZGQ5YzcxYmIy
N2U1MGZkZmRmYWNlZTI3MWVmZWZiN2NiMjkxZjUuLjY4YjBkZDJjMzA2Yjc5NDUzMWQyOWJkMTQw
ZGNiNDJiNDhlMjczNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEuaApAQCAtMzksNyArMzksNyBA
QCBzdHJ1Y3QgU2hhcmVEYXRhIHsKIAogc3RydWN0IFJhd0ZpbGUgewogICAgIFN0cmluZyBmaWxl
TmFtZTsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmlsZURhdGE7CiB9OwogICAgIAogc3RydWN0IFNoYXJlRGF0
YVdpdGhQYXJzZWRVUkwgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURh
dGFSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCmlu
ZGV4IGQ2ODA1YTNlZTUzNGMzNjY0ZjI1OTQ5NTkzZGZiNWI0OTEzYTU0ZjIuLjc1ODM2Yjg3OTE0
M2I2MGE3ZjM1MTk3MDMyMDdiNmFkM2Q4ZDRmODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2hhcmVEYXRhUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJl
RGF0YVJlYWRlci5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBTaGFyZURhdGFSZWFkZXI6OmRp
ZEZpbmlzaExvYWRpbmcoaW50IGxvYWRJbmRleCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKIAog
ICAgIFJhd0ZpbGUgZmlsZTsKICAgICBmaWxlLmZpbGVOYW1lID0gZmlsZU5hbWU7Ci0gICAgZmls
ZS5maWxlRGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxj
b25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5i
eXRlTGVuZ3RoKCkpOworICAgIGZpbGUuZmlsZURhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFy
cmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIG1fc2hhcmVEYXRhLmZpbGVzLmFwcGVuZChX
VEZNb3ZlKGZpbGUpKTsKICAgICBtX2ZpbGVzUmVhZFNvRmFyKys7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9LZXllZENvZGluZy5oCmluZGV4IDNkODBkN2ExZDQyNDU4NTIwYmQ1NDM4ZWYzNmQ4YTU3
Y2I1ZDRlN2UuLjc5YTIzNTM1NWYxZThlZjg2MTUzNTJlNjM5YzhjNjMxOGY0MDM3NzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIEtleWVkRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC0xNjAsNyArMTYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBl
bmNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBlbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYpID0gMDsK
IAotICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29k
aW5nKCkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2Rp
bmcoKSA9IDA7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHZvaWQgZW5jb2RlRW51
bShjb25zdCBTdHJpbmcmIGtleSwgVCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9O
b3dQbGF5aW5nTWFuYWdlci5oCmluZGV4IGUzODA2ZTg3ZGY3OWEzZDliNWNhZTEyMTRkZTY2YWEy
YTY1ODQ3ZGIuLmZjNjZjMzY1YTJmMjlhNGM3OGU2MDYxOWU0N2E3MWM3MjU4ZDhmZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaApAQCAtNzAsNyArNzAs
NyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IG1fbm93UGxh
eWluZ0luZm87CiAgICAgc3RydWN0IEFydHdvcmtDYWNoZSB7CiAgICAgICAgIFN0cmluZyBzcmM7
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAgICAgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKICAgICB9OwogICAgIHN0ZDo6b3B0
aW9uYWw8QXJ0d29ya0NhY2hlPiBtX25vd1BsYXlpbmdJbmZvQXJ0d29yazsKICAgICBib29sIG1f
c2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24geyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkLmNwcAppbmRleCA1OTZhZmI4ZTkxODg4YzJhYTY3MmZjMGU1ZDA2Y2I2NDQ5
ZGVkYTdkLi5iYTE3ODcyNDcxYWUyODY0Zjc3MDgyYzQ3ZDY3ZjI2M2VkNWRmOTU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcApAQCAtOTMsNyArOTMsNyBAQCBTdHJpbmcg
UGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkK
ICAgICByZXR1cm4geyB9OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgs
IGNvbnN0IFN0cmluZyYgdHlwZSkKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFBhc3Rl
Ym9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJp
bmcmIHR5cGUpCiB7CiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQogICAgICAgICByZXR1cm4gc3RyYXRlZ3ktPnJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChpbmRleCwgdHlwZSwgbmFtZSgpLCBjb250ZXh0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDRlMjc4MmQ5YmFjYjlkMDE5ZDEyMDAy
MGRmZjAxMTZlMjUyMzJkMDQuLmYyZWI5NzIwMTlhNDAyZWI4OGNlZmY4ZjQ3YzNlODYzZmUzNDAy
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTYxLDEzICs2MSwxMyBA
QCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBGcmFtZTsKIGNsYXNzIFBhc3RlYm9hcmRTdHJhdGVneTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBTaW1wbGVSYW5nZTsKIApA
QCAtODMsMTQgKzgzLDE0IEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudCB7CiAgICAgV0VC
Q09SRV9FWFBPUlQgflBhc3RlYm9hcmRXZWJDb250ZW50KCk7CiAgICAgU3RyaW5nIGNvbnRlbnRP
cmlnaW47CiAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKLSAgICBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICBSZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgIFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OworICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5S
VEZGb3JtYXQ7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmlu
Z0Zvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICBTdHJpbmcgZGF0YUlu
U3RyaW5nRm9ybWF0OwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgIFZlY3Rv
cjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgVmVjdG9y
PFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOwogI2VuZGlmCiAjaWYgUExBVEZPUk0o
R1RLKQogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwpAQCAtMTIwLDE3ICsxMjAsMTcgQEAgc3Ry
dWN0IFBhc3RlYm9hcmRJbWFnZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhc3RlYm9hcmRJbWFn
ZSgpOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OworICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CiAgICAgU3RyaW5n
IGRhdGFJbkhUTUxGb3JtYXQ7CiAjZW5kaWYKICNpZiAhUExBVEZPUk0oV0lOKQogICAgIFBhc3Rl
Ym9hcmRVUkwgdXJsOwogI2VuZGlmCiAjaWYgIShQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJ
TikpCi0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKKyAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGE7CiAgICAgU3RyaW5nIHJlc291cmNl
TUlNRVR5cGU7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9yPFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8UmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICBTdHJpbmcgc3VnZ2Vz
dGVkTmFtZTsKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplOwpAQCAtMTQ0LDcgKzE0NCw3IEBAIHN0
cnVjdCBQYXN0ZWJvYXJkQnVmZmVyIHsKICAgICBTdHJpbmcgY29udGVudE9yaWdpbjsKICNlbmRp
ZgogICAgIFN0cmluZyB0eXBlOwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBk
YXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGE7CiB9OwogCiAvLyBGb3IgcmVhZGlu
ZyBmcm9tIHRoZSBwYXN0ZWJvYXJkLgpAQCAtMTU5LDE2ICsxNTksMTYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCByZWFkRmlsZVBhdGgoY29uc3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6
ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlID0geyB9KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRGaWxlUGF0aHMoY29uc3QgVmVj
dG9yPFN0cmluZz4mKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHJlYWRIVE1MKGNvbnN0IFN0cmlu
ZyYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYs
IGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRp
b25TaXplID0geyB9KSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRJbWFnZShSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXpl
IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
cmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSA9IDA7CiAgICAgdmlydHVh
bCBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgPSAwOwogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFdlYkFyY2hpdmUoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURihDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkRGF0YUJ1ZmZlcihDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5h
bWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSA9IDA7Cisg
ICAgdmlydHVhbCBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRE
YXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0p
ID0gMDsKICNlbmRpZgogfTsKIApAQCAtMTgzLDcgKzE4Myw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJk
RmlsZVJlYWRlciB7CiAgICAgdmlydHVhbCB+UGFzdGVib2FyZEZpbGVSZWFkZXIoKSA9IGRlZmF1
bHQ7CiAgICAgdmlydHVhbCB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIHNob3VsZFJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiAvKiB0eXBlICov
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRCdWZmZXIoY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikg
PSAwOwogfTsKIAogY2xhc3MgUGFzdGVib2FyZCB7CkBAIC0zMDksNyArMzA5LDcgQEAgcHVibGlj
OgogICAgIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBwYXN0ZWJvYXJkSXRlbUlu
Zm8oc2l6ZV90IGluZGV4KSBjb25zdDsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNv
bnN0IFN0cmluZyYgdHlwZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVh
ZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSk7
CiAgICAgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHRpdGxlKTsKIAogICAgIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0
LmdldCgpOyB9CkBAIC0zNDEsNyArMzQxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBh
ZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVz
dWx0VHlwZXMsIGNvbnN0IFN0cmluZyYgY29jb2FUeXBlKTsKICAgICBTdHJpbmcgcmVhZFN0cmlu
Z0ZvclBsYXRmb3JtVHlwZShjb25zdCBTdHJpbmcmKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZWFk
VHlwZXNXaXRoU2VjdXJpdHlDaGVjaygpOwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiByZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYpOwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hl
Y2soY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJv
YXJkQ29udGV4dD4gbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZEN1c3RvbURhdGEuY3BwCmluZGV4IDIwY2Q2MWU3MTEyMTMyMWNjNDZkMDc3MTk5MWFh
YzVhYTQ3NTU4MDIuLjlkM2Y4N2E5MTE0YzM4YTU0ZTMzYTA1ZTJiOTg5NTJjY2Y2N2FlNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAK
QEAgLTMzLDEzICszMywxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBzdGQ6
OnZhcmlhbnQ8U3RyaW5nLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNvcHlQbGF0Zm9y
bURhdGEoY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PiYgb3RoZXIpCitzdGF0aWMgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZl
cj4+IGNvcHlQbGF0Zm9ybURhdGEoY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJl
ZEJ1ZmZlcj4+JiBvdGhlcikKIHsKICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJp
bmc+KG90aGVyKSkKICAgICAgICAgcmV0dXJuIHsgc3RkOjpnZXQ8U3RyaW5nPihvdGhlcikgfTsK
IAotICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPj4ob3RoZXIpKQotICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+KG90aGVyKS5jb3B5UmVmKCkgfTsKKyAgICBpZiAoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4ob3RoZXIpKQorICAgICAgICByZXR1cm4geyBzdGQ6
OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ob3RoZXIpLmNvcHlSZWYoKSB9OwogCiAgICAgcmV0dXJu
IHsgfTsKIH0KQEAgLTgwLDcgKzgwLDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGE6OlBhc3RlYm9h
cmRDdXN0b21EYXRhKFN0cmluZyYmIG9yaWdpbiwgVmVjdG9yPEVudHJ5PiYmIGRhdGEKIHsKIH0K
IAotUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjcmVh
dGVTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgY29uc3RleHByIHVuc2ln
bmVkIGN1cnJlbnRDdXN0b21EYXRhU2VyaWFsaXphdGlvblZlcnNpb24gPSAxOwogCkBAIC04OSw3
ICs4OSw3IEBAIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fb3JpZ2luOwog
ICAgIGVuY29kZXIgPDwgc2FtZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGEoKTsKICAgICBlbmNvZGVy
IDw8IG9yZGVyZWRUeXBlcygpOwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZW5jb2Rlci5idWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCkpOworICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNp
emUoKSk7CiB9CiAKIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpm
cm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImJiBkZWNvZGVy
KQpAQCAtMTI0LDcgKzEyNCw3IEBAIFBhc3RlYm9hcmRDdXN0b21EYXRhIFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6
OmZyb21TaGFyZWRCdWZmZXIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQor
UGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIGZyb21QZXJzaXN0
ZW5jZURlY29kZXIoYnVmZmVyLmRlY29kZXIoKSk7CiB9CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9p
ZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIHZhbHVlKQogICAgIGFkZE9yTW92ZUVudHJ5VG9FbmQodHlwZSkucGxhdGZv
cm1EYXRhID0geyB2YWx1ZSB9OwogfQogCi12b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0
ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBk
YXRhKQordm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6d3JpdGVEYXRhKGNvbnN0IFN0cmluZyYg
dHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGFkZE9yTW92ZUVudHJ5VG9F
bmQodHlwZSkucGxhdGZvcm1EYXRhID0geyBXVEZNb3ZlKGRhdGEpIH07CiB9CkBAIC0yMDIsMTQg
KzIwMiwxNCBAQCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
c2FtZU9yaWdpbkN1c3RvbVN0cmluZ0RhdGEoKSBjb25zdAogICAgIHJldHVybiBjdXN0b21EYXRh
OwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURh
dGE6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBl
KSBjb25zdAogewogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgaWYg
KGVudHJ5LnR5cGUgIT0gdHlwZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlm
IChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4oZW50
cnkucGxhdGZvcm1EYXRhKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6OmdldDxSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkuY29weVJlZigpOworICAgICAg
ICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZW50cnkucGxh
dGZvcm1EYXRhKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVy
Pj4oZW50cnkucGxhdGZvcm1EYXRhKS5jb3B5UmVmKCk7CiAKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQpAQCAtMjY1LDExICsyNjUsMTEgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Zm9yRWFjaEN1c3RvbVN0cmluZyhGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgdHlwZSwK
ICAgICB9CiB9CiAKLXZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZvckVhY2hQbGF0Zm9ybVN0
cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6
OnZhcmlhbnQ8U3RyaW5nLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKT4mJiBm
dW5jdGlvbikgY29uc3QKK3ZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZvckVhY2hQbGF0Zm9y
bVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBz
dGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1bmN0aW9u
KSBjb25zdAogewogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAgICAgYXV0
byYgZGF0YSA9IGVudHJ5LnBsYXRmb3JtRGF0YTsKLSAgICAgICAgaWYgKChzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYgIXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkuaXNOdWxs
KCkpIHx8IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PihkYXRhKSkKKyAgICAgICAgaWYgKChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0
YSkgJiYgIXN0ZDo6Z2V0PFN0cmluZz4oZGF0YSkuaXNOdWxsKCkpIHx8IHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQogICAgICAgICAgICAgZnVuY3Rpb24o
ZW50cnkudHlwZSwgZGF0YSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKaW5kZXggYzZjYmM3OTBjN2UwNWYzMTQ4MjA1ZmM1YTFj
YzVhNDY4M2M2ZDYxNy4uMmJlODFkMjkzOGEzZGJkMDkwMjZjYTZlYzY0YWMzMjg3ZTZhYmMwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBA
IC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGFzdGVib2FyZEN1
c3RvbURhdGEgewogcHVibGljOgpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICAgICAg
U3RyaW5nIHR5cGU7CiAgICAgICAgIFN0cmluZyBjdXN0b21EYXRhOwotICAgICAgICBzdGQ6OnZh
cmlhbnQ8U3RyaW5nLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IHBsYXRmb3JtRGF0YTsK
KyAgICAgICAgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+IHBsYXRmb3Jt
RGF0YTsKICAgICB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUGFzdGVib2FyZEN1c3RvbURhdGEo
KTsKQEAgLTYwLDE2ICs2MCwxNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBvcmlnaW4o
KSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIHZvaWQgc2V0T3JpZ2luKGNvbnN0IFN0
cmluZyYgb3JpZ2luKSB7IG1fb3JpZ2luID0gb3JpZ2luOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFy
ZWRCdWZmZXIoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBmcm9tU2hhcmVkQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YSBmcm9tUGVyc2lzdGVuY2VEZWNvZGVyKFdURjo6UGVyc2lzdGVuY2U6OkRl
Y29kZXImJik7CiAKICAgICBTdHJpbmcgcmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpIGNv
bnN0OwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYgdHlwZSkgY29uc3Q7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
cihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwogICAgIFN0cmluZyByZWFkU3RyaW5nSW5DdXN0
b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAKICAgICB2b2lkIHdyaXRlU3RyaW5n
KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdm9pZCB3cml0
ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBk
YXRhKTsKKyAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgZGF0YSk7CiAgICAgdm9pZCB3cml0ZVN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiAgICAgdm9pZCBjbGVhcigpOwpA
QCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZvckVhY2hUeXBlKEZ1bmN0aW9u
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYpIGNvbnN0OwogICAgIHZvaWQgZm9yRWFjaFBsYXRmb3Jt
U3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRh
dGEpPiYmKSBjb25zdDsKLSAgICB2b2lkIGZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1
bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5n
LCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBkYXRhKT4mJikgY29uc3Q7CisgICAgdm9p
ZCBmb3JFYWNoUGxhdGZvcm1TdHJpbmdPckJ1ZmZlcihGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3Qgc3RkOjp2YXJpYW50PFN0cmluZywgUmVmPFNoYXJlZEJ1ZmZlcj4+JiBk
YXRhKT4mJikgY29uc3Q7CiAgICAgdm9pZCBmb3JFYWNoQ3VzdG9tU3RyaW5nKEZ1bmN0aW9uPHZv
aWQoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpPiYmKSBjb25zdDsKIAog
ICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCA5YjFkNGI5NWVkZmJkZmEwNTk1NmEzOTkwNzFhYjlmZDkx
ODNiOTA3Li5iNGQ5YzU3NGRjYWU3ZTFkMDYzNjY2ODdmZDM1YWI4MjQ0YTc4MGU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMzEsMTEgKzMx
LDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOwotY2xhc3MgQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBhc3RlYm9hcmRD
b250ZXh0OwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBTZWxlY3Rpb25EYXRh
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0
cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0
IFBhc3RlYm9hcmRVUkw7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBQTEFU
Rk9STShJT1NfRkFNSUxZKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBn
ZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBn
ZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ0ZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3Ry
aW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
QEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBpbnQ2NF90IGFkZFR5cGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwg
aW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0g
MDsKLSAgICB2aXJ0dWFsIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVk
QnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBp
bnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJv
YXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldENvbG9yKGNvbnN0IENvbG9yJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9
IDA7CiAgICAgdmlydHVhbCBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CkBAIC03Miw3ICs3Miw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFN0cmluZyB1cmxTdHJpbmdTdWl0YWJsZUZvckxvYWRpbmcoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqKSA9IDA7CiAjZW5kaWYKICAgICB2aXJ0dWFsIFN0cmluZyByZWFkU3RyaW5nRnJvbVBh
c3RlYm9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsK
LSAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJv
YXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRC
dWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgVVJMIHJlYWRVUkxGcm9tUGFz
dGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmlu
ZyYgdGl0bGUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3Rk
OjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5n
ZUNvdW50LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5m
byhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gdHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRUZXh0RnJvbUNsaXBib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBy
ZWFkRmlsZVBhdGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9
IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZl
ckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSkgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRv
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFNlbGVjdGlvbkRhdGEmJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKaW5kZXggYjQ1Y2UxZjkzOGNiYTUw
NjYzOGI2YTQxMjFkNzY3MzYzZjhiZTUyMi4uOGUyYzhmYjkyZDk3MmZkNDIxNjAwN2JjODc3NzUy
Y2ZkMzQ4Zjg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZFdyaXRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3Jp
dGVyRGF0YS5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3Mg
UGFzdGVib2FyZFdyaXRlckRhdGEgZmluYWwgewogcHVibGljOgpAQCAtNTEsMTQgKzUxLDE0IEBA
IHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgU3RyaW5nIGNvbnRlbnRPcmln
aW47CiAgICAgICAgIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxldGU7Ci0gICAgICAgIFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgICAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKLSAgICAgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKLSAgICAgICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3Jt
YXQ7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7
CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CisgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdDsKICAgICAgICAgU3RyaW5n
IGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAg
ICAgICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwotICAgICAgICBWZWN0b3I8UmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgICAgICBWZWN0b3I8UmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICAgICB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCmluZGV4IDNmNDgz
MmE1YTY1OGMxY2M3YzBhYTEzYjI2ZTBlYTQ3MzNlOWQzYjcuLjllNzJlNDRhMmVhYzRkOGVmNzMw
Yjk4NzFkMGVjNTA4ZWQ5ZmFjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtQ29udGVudEZpbHRlci5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgbGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpID0g
MDsKLSAgICB2aXJ0dWFsIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVu
dERhdGEoKSBjb25zdCA9IDA7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIHZp
cnR1YWwgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkgY29uc3Qg
PSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVBhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2Fy
ZC5oCmluZGV4IDUyNzBjNTk4NDM1NTEwNGY5MWE1Y2U1NDIyMjNiNDQ5YzJiNTE4OWEuLjhmZTky
NGRmZTU2YmMzYzk5NjY2ZWJmMDRmNzM1NDAxNTU1YWEzM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC00NywxNCArNDcsMTQgQEAgc3RydWN0
IHdwZV9wYXN0ZWJvYXJkOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xvcjsKLWNs
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CiBzdHJ1Y3QgUGFzdGVi
b2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRJdGVtSW5mbzsKIHN0cnVjdCBQYXN0ZWJvYXJk
VVJMOwogc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50OwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZvcm1QYXN0ZWJvYXJk
IHsKIHB1YmxpYzoKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcg
cGxhdGZvcm1QYXN0ZWJvYXJkVHlwZUZvclNhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29u
c3QgU3RyaW5nJiBkb21UeXBlLCBJbmNsdWRlSW1hZ2VUeXBlcyA9IEluY2x1ZGVJbWFnZVR5cGVz
OjpObyk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+
JiB0eXBlcykgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIFRoZXNlIG1ldGhvZHMgd2lsbCByZXR1cm4gMCBpZiBwYXN0ZWJvYXJkIG93bmVy
c2hpcCBoYXMgYmVlbiB0YWtlbiBmcm9tIHVzLgogICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qg
Y29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBp
bnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciosIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0QnVm
ZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldFVSTChjb25zdCBQYXN0ZWJvYXJkVVJMJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRDb2xvcihjb25zdCBDb2xvciYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBh
c3RlYm9hcmRVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgcmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCByZWFkVVJMKHNpemVfdCBpbmRleCwgU3Ry
aW5nJiB0aXRsZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IGNvdW50KCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCmluZGV4IDll
YjRiZGRmMDdjZjYxNjZhNTg2MGJhYzA3NDYyNmQyOTVhY2IzMmIuLmE0ZTA4NzUwOWU1OTRkMTg3
MTEyNWQxM2M5OTUzYzRlNDM5NDkzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1By
ZXZpZXdDb252ZXJ0ZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIGNvbnN0IFJlc291cmNlRXJyb3Im
IFByZXZpZXdDb252ZXJ0ZXI6OnByZXZpZXdFcnJvcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJl
dmlld0Vycm9yOwogfQogCi1jb25zdCBTaGFyZWRCdWZmZXImIFByZXZpZXdDb252ZXJ0ZXI6OnBy
ZXZpZXdEYXRhKCkgY29uc3QKK2NvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIFByZXZpZXdD
b252ZXJ0ZXI6OnByZXZpZXdEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gKm1fcHJldmlld0Rh
dGEuZ2V0KCk7CiB9CkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6dXBk
YXRlTWFpblJlc291cmNlKCkKICAgICB9KTsKIH0KIAotdm9pZCBQcmV2aWV3Q29udmVydGVyOjph
cHBlbmRGcm9tQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBQcmV2aWV3
Q29udmVydGVyOjphcHBlbmRGcm9tQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKICAgICB3aGlsZSAoYnVmZmVyLnNpemUoKSA+IG1fbGVuZ3RoQXBwZW5kZWQp
IHsKICAgICAgICAgYXV0byBuZXdEYXRhID0gYnVmZmVyLmdldFNvbWVEYXRhKG1fbGVuZ3RoQXBw
ZW5kZWQpOwpAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgUHJldmlld0NvbnZlcnRlcjo6cmVwbGF5
VG9DbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYgY2xpZW50KQogICAgIGNsaWVudC5wcmV2
aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZygqdGhpcyk7CiB9CiAKLXZvaWQgUHJldmll
d0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRh
dGEpCit2b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBhdXRvIHByb3RlY3RlZFRoaXMg
eyBSZWYgeyAqdGhpcyB9IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1ByZXZpZXdDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252
ZXJ0ZXIuaAppbmRleCBmMTRkZTFkOTE0YTRjYmNhMTVhNzVkNmQ1ZTVlMGRjYjRjNGE5Zjc2Li41
YWVkYTNiNzJmNDBiYTVhZjc0MTEyYzAwNDU3Zjk2NmE3YTAzYjY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5oCkBAIC00OCw3ICs0OCw3IEBAIHN0cnVjdCBQ
cmV2aWV3Q29udmVydGVyUHJvdmlkZXI7CiBzdHJ1Y3QgUHJldmlld1BsYXRmb3JtRGVsZWdhdGUg
OiBDYW5NYWtlV2Vha1B0cjxQcmV2aWV3UGxhdGZvcm1EZWxlZ2F0ZT4gewogICAgIHZpcnR1YWwg
flByZXZpZXdQbGF0Zm9ybURlbGVnYXRlKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lk
IGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlRGlkRmluaXNoTG9hZGluZygp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRGYWlsV2l0aEVycm9yKGNvbnN0IFJl
c291cmNlRXJyb3ImKSA9IDA7CiB9OwpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIHByZXZpZXdGaWxlTmFtZSgpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyBwcmV2aWV3VVRJKCkgY29uc3Q7CiAgICAgY29uc3QgUmVzb3VyY2VFcnJv
ciYgcHJldmlld0Vycm9yKCkgY29uc3Q7Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyJiBwcmV2aWV3
RGF0YSgpIGNvbnN0OworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHByZXZpZXdE
YXRhKCkgY29uc3Q7CiAKICAgICB2b2lkIGZhaWxlZFVwZGF0aW5nKCk7CiAgICAgdm9pZCBmaW5p
c2hVcGRhdGluZygpOwpAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNQbGF0
Zm9ybVBhc3N3b3JkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpIGNvbnN0OwogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBpdGVyYXRlQ2xpZW50cyhUJiYgY2FsbGJhY2spOwotICAg
IHZvaWQgYXBwZW5kRnJvbUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGFw
cGVuZEZyb21CdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQg
ZGlkQWRkQ2xpZW50KFByZXZpZXdDb252ZXJ0ZXJDbGllbnQmKTsKICAgICB2b2lkIGRpZEZhaWxD
b252ZXJ0aW5nV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZEZh
aWxVcGRhdGluZygpOwpAQCAtMTA1LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0
Zm9ybVVubG9ja1dpdGhQYXNzd29yZChjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFByZXZpZXdQ
bGF0Zm9ybURlbGVnYXRlCi0gICAgdm9pZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkZWxlZ2F0ZURpZEZp
bmlzaExvYWRpbmcoKSBmaW5hbDsKICAgICB2b2lkIGRlbGVnYXRlRGlkRmFpbFdpdGhFcnJvcihj
b25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1ByZXZpZXdDb252ZXJ0ZXJDbGllbnQuaAppbmRleCAwNGVhMzY4MDY5MmIyNTJhMTk4OWMy
NmNhMjA0MjEyNzc3YWEzYjdiLi45Y2VlOTMzMjBiMjM4YjRjZDczY2RkMmUwMzAyYzNiZjRkYWQ2
OGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNs
aWVudC5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUHJl
dmlld0NvbnZlcnRlcjsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRl
ckNsaWVudCA6IENhbk1ha2VXZWFrUHRyPFByZXZpZXdDb252ZXJ0ZXJDbGllbnQ+IHsKICAgICB2
aXJ0dWFsIH5QcmV2aWV3Q29udmVydGVyQ2xpZW50KCkgPSBkZWZhdWx0OwpAQCAtNDIsNyArNDIs
NyBAQCBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlckNsaWVudCA6IENhbk1ha2VXZWFrUHRyPFByZXZp
ZXdDb252ZXJ0ZXJDbGllbnQ+IHsKICAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRp
ZEZpbmlzaFVwZGF0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2
aWV3Q29udmVydGVyJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlk
UmVjZWl2ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgbmV3RGF0
YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEo
UHJldmlld0NvbnZlcnRlciYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG5ld0RhdGEp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZEZpbmlzaENvbnZlcnRp
bmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJldmlld0NvbnZl
cnRlckRpZEZhaWxDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImKSA9IDA7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaAppbmRl
eCA4Mjc4NjM5M2ZjZWQ3NTRjODVmN2IyODkxMjUyZjUxNmJlZDBkNTQ5Li5iOTg2ZWU0MGQxOTc1
MTc0ZjU0YWQyOWExNjhjYWRmMTg5NDU2YzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyIDogQ2FuTWFr
ZVdlYWtQdHI8UHJldmlld0NvbnZlcnRlclByb3ZpZGVyPiB7CiAgICAgdmlydHVhbCB+UHJldmll
d0NvbnZlcnRlclByb3ZpZGVyKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIHByb3Zp
ZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZEJ1ZmZlciopPiYmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdD
b252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqKT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcm92aWRlUGFzc3dvcmRGb3JQcmV2
aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Qcm9taXNlZEF0dGFjaG1lbnRJbmZvLmgKaW5kZXggYTFjYzc2OTVjMGE2M2VkNzg3ZTIxMGE3
YzgyNzc3NjdkY2NlNzFhZi4uMWUxMmI5NTU1ODAyOTJjMDNhNTc4ZWYzZjc4YjE1N2VkNWZlYzMy
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50
SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudElu
Zm8uaApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcm9t
aXNlZEF0dGFjaG1lbnRJbmZvIHsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAt
MzgsNyArMzgsNyBAQCBzdHJ1Y3QgUHJvbWlzZWRBdHRhY2htZW50SW5mbyB7CiAjZW5kaWYKIAog
ICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxUeXBlczsKLSAgICBWZWN0b3I8UmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0YTsKKyAgICBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOwogCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXgg
NmY1MzBkMTMyOWJiZmNlMTZhOWRhN2FkMDE1ODljYTUyZWQzMDdhMS4uNGQ5OWU5ZTY1MDJjMGNl
YzUxMTI3MTc3NDZmZDg2ZWMzZWU1YzhjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCkBAIC0zNyw2OSArMzcsNjkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpCitSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK1JlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKGRhdGEsIHNpemUpKTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBw
ZWRGaWxlRGF0YSkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlRGF0
YSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBw
ZWRGaWxlRGF0YSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpj
cmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CiB9CiAKLVJl
ZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PiYmIHZl
Y3RvcikKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQogewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwogfQogCi1S
ZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlk
ZXImJiBwcm92aWRlcikKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUocHJvdmlkZXIpKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3Zl
KHByb3ZpZGVyKSkpOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcigpID0gZGVmYXVs
dDsKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoKSA9IGRl
ZmF1bHQ7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYgZmlsZURhdGEpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBt
X3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0
YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGZpbGVEYXRhKSkgfSk7CiB9CiAKLVNoYXJlZEJ1ZmZl
cjo6U2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmIHByb3ZpZGVyKQorRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJv
dmlkZXImJiBwcm92aWRlcikKICAgICA6IG1fc2l6ZShwcm92aWRlci5zaXplKCkpCiB7CiAgICAg
bV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUocHJvdmlk
ZXIpKSB9KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBhcHBlbmQo
V1RGTW92ZShidWZmZXIpKTsKIH0KIAogI2lmIFVTRShHU1RSRUFNRVIpCi1SZWY8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVm
ZmVyKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihtYXBwZWRCdWZmZXIpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKG1hcHBlZEJ1ZmZlcikpOwogfQog
Ci1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVk
QnVmZmVyKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihH
c3RNYXBwZWRPd25lZEJ1ZmZlciYgbWFwcGVkQnVmZmVyKQogICAgIDogbV9zaXplKG1hcHBlZEJ1
ZmZlci5zaXplKCkpCiB7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRhU2VnbWVudDo6
Y3JlYXRlKCZtYXBwZWRCdWZmZXIpIH0pOwogfQogI2VuZGlmCiAKLXN0YXRpYyBWZWN0b3I8dWlu
dDhfdD4gY29tYmluZVNlZ21lbnRzRGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
VmVjdG9yJiBzZWdtZW50cywgc2l6ZV90IHNpemUpCitzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNv
bWJpbmVTZWdtZW50c0RhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnRWZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4g
Y29tYmluZWREYXRhOwogICAgIGNvbWJpbmVkRGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNp
emUpOwpAQCAtMTA5LDE5ICsxMDksMTkgQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb21iaW5l
U2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3IKICAgICBy
ZXR1cm4gY29tYmluZWREYXRhOwogfQogCi1SZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNvbnN0CitSZWY8U2hhcmVkQnVmZmVyPiBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjptYWtlQ29udGlndW91cygpIGNvbnN0CiB7CiAgICAgaWYgKG1f
Y29udGlndW91cykKLSAgICAgICAgcmV0dXJuIFJlZiB7ICpzdGF0aWNfY2FzdDxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPih0aGlzKSkgfTsKKyAgICAg
ICAgcmV0dXJuIFJlZiB7ICpzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqPih0aGlzKSkgfTsKICAgICBpZiAoIW1fc2VnbWVudHMuc2l6
ZSgpKQotICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Cisg
ICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGlmIChtX3NlZ21lbnRz
LnNpemUoKSA9PSAxKQotICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpOworICAgICAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUobV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CiAgICAg
YXV0byBjb21iaW5lZERhdGEgPSBjb21iaW5lU2VnbWVudHNEYXRhKG1fc2VnbWVudHMsIG1fc2l6
ZSk7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNv
bWJpbmVkRGF0YSkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNv
bWJpbmVkRGF0YSkpOwogfQogCi1WZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjpjb3B5RGF0
YSgpIGNvbnN0CitWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weURh
dGEoKSBjb25zdAogewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGRhdGEucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShzaXplKCkpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIFZlY3Rvcjx1aW50
OF90PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRhKCkgY29uc3QKICAgICByZXR1cm4gZGF0YTsKIH0K
IAotVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKQorVmVjdG9yPHVpbnQ4
X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkKIHsKICAgICBpZiAobV9zZWdt
ZW50cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xNDYsMTMgKzE0NiwxMyBA
QCBWZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCiAgICAgcmV0dXJuIGNv
bWJpbmVkRGF0YTsKIH0KIAotU2hhcmVkQnVmZmVyRGF0YVZpZXcgU2hhcmVkQnVmZmVyOjpnZXRT
b21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0CitTaGFyZWRCdWZmZXJEYXRhVmlldyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0CiB7
CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogZWxlbWVudCA9IGdldFNlZ21lbnRG
b3JQb3NpdGlvbihwb3NpdGlvbik7CiAgICAgcmV0dXJuIHsgZWxlbWVudC0+c2VnbWVudC5jb3B5
UmVmKCksIHBvc2l0aW9uIC0gZWxlbWVudC0+YmVnaW5Qb3NpdGlvbiB9OwogfQogCi1jb25zdCBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yRW50cnkqIFNoYXJlZEJ1ZmZlcjo6Z2V0U2Vn
bWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGlvbikgY29uc3QKK2NvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yRW50cnkqIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQocG9zaXRpb24gPCBtX3NpemUpOwogICAgIGF1dG8gY29tcGFyYXRvciA9
IFtdKGNvbnN0IHNpemVfdCYgcG9zaXRpb24sIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkm
IGVudHJ5KSB7CkBAIC0xNjMsNyArMTYzLDcgQEAgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudFZlY3RvckVudHJ5KiBTaGFyZWRCdWZmZXI6OmdldFNlZ21lbnRGb3JQb3NpdGlvbigKICAg
ICByZXR1cm4gZWxlbWVudDsKIH0KIAotU3RyaW5nIFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmco
KSBjb25zdAorU3RyaW5nIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRvSGV4U3RyaW5nKCkgY29u
c3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CiAgICAgZm9yRWFjaFNlZ21l
bnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKQEAgLTE3Myw3ICsxNzMsNyBAQCBTdHJpbmcgU2hhcmVk
QnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9T
dHJpbmcoKTsKIH0KIAotUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCkgY29uc3QKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSBjb25zdAogewogICAgIGF1dG8gYXJyYXlC
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc2l6ZSgpKSwgMSk7CiAgICAgaWYgKCFhcnJheUJ1ZmZlcikgewpAQCAtMTkyLDcg
KzE5Miw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJh
eUJ1ZmZlcigpIGNvbnN0CiAgICAgcmV0dXJuIGFycmF5QnVmZmVyOwogfQogCi12b2lkIFNoYXJl
ZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEp
CiB7CiAgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIG1fc2VnbWVudHMucmVzZXJ2ZUNh
cGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpICsgZGF0YS5tX3NlZ21lbnRzLnNpemUoKSk7CkBAIC0y
MDMsNyArMjAzLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZm
ZXImIGRhdGEpCiAgICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogfQogCi12b2lk
IFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgp
Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgbGVuZ3RoKQogewogICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBWZWN0
b3I8dWludDhfdD4gdmVjdG9yOwpAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgU2hhcmVkQnVmZmVy
OjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKICAgICBBU1NFUlQo
aW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQo
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBw
ZW5kKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7CiAgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMp
OwogICAgIGF1dG8gZGF0YVNpemUgPSBkYXRhLnNpemUoKTsKQEAgLTIyMiwxNiArMjIyLDE2IEBA
IHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKICAgICBB
U1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpj
bGVhcigpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNsZWFyKCkKIHsKICAgICBtX3Np
emUgPSAwOwogICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNv
bnNpc3RlbnQoKSk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgp
IGNvbnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6Y29weSgpIGNvbnN0CiB7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY2xvbmUgPSBhZG9wdFJl
ZigqbmV3IFNoYXJlZEJ1ZmZlcik7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNs
b25lID0gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKTsKICAgICBjbG9uZS0+
bV9zaXplID0gbV9zaXplOwogICAgIGNsb25lLT5tX3NlZ21lbnRzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkobV9zZWdtZW50cy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6
IG1fc2VnbWVudHMpCkBAIC0yNDEsMTQgKzI0MSwxNCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogICAgIHJldHVybiBjbG9uZTsKIH0KIAotdm9pZCBTaGFy
ZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxj
b25zdCB1aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1
aW50OF90PiYpPiYgYXBwbHkpIGNvbnN0CiB7CiAgICAgYXV0byBzZWdtZW50cyA9IG1fc2VnbWVu
dHM7CiAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogc2VnbWVudHMpCiAgICAgICAgIGFwcGx5KFNw
YW4geyBzZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVudC5zZWdtZW50LT5zaXplKCkgfSk7
CiB9CiAKLWJvb2wgU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWlu
dDhfdD4mIHByZWZpeCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6c3RhcnRz
V2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0CiB7CiAgICAgaWYg
KHByZWZpeC5lbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI3MCw3ICsyNzAsNyBA
QCBib29sIFNoYXJlZEJ1ZmZlcjo6c3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+
JiBwcmVmaXgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1WZWN0b3I8dWludDhfdD4g
U2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CitW
ZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6cmVhZChzaXplX3Qgb2Zmc2V0
LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAg
IGlmIChvZmZzZXQgPj0gc2l6ZSgpKQpAQCAtMjk3LDEyICsyOTcsMTIgQEAgVmVjdG9yPHVpbnQ4
X3Q+IFNoYXJlZEJ1ZmZlcjo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25z
dAogICAgIHJldHVybiBkYXRhOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQq
IGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGNvcHlUbyhkZXN0aW5hdGlvbiwgMCwgbGVuZ3RoKTsKIH0KIAotdm9pZCBT
aGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6
ZV90IGxlbmd0aCkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZv
aWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogewog
ICAgIEFTU0VSVChsZW5ndGggKyBvZmZzZXQgPD0gc2l6ZSgpKTsKICAgICBpZiAob2Zmc2V0ID49
IHNpemUoKSkKQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weVRvKHZv
aWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdAogfQog
CiAjaWYgQVNTRVJUX0VOQUJMRUQKLWJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lz
dGVudCgpIGNvbnN0Citib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25z
aXN0ZW50KCkgY29uc3QKIHsKICAgICBzaXplX3QgcG9zaXRpb24gPSAwOwogICAgIGZvciAoY29u
c3QgYXV0byYgZWxlbWVudCA6IG1fc2VnbWVudHMpIHsKQEAgLTM1NCwxMiArMzU0LDEyIEBAIGJv
b2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiAjZW5kaWYgLy8g
QVNTRVJUX0VOQUJMRUQKIAogI2lmICFVU0UoQ0YpCi12b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1l
bW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpo
aW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB7CiB9CiAjZW5kaWYKIAotYm9vbCBTaGFy
ZWRCdWZmZXI6Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKK2Jv
b2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCiAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtNDA4LDE5ICs0MDgsMTkgQEAgYm9vbCBTaGFyZWRCdWZmZXI6
Om9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cigpCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcigpCiB7CiAgICAgbV9jb250aWd1b3VzID0g
dHJ1ZTsKIH0KIAotQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cihSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVy
KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQogewogICAgIG1fc2l6ZSA9IHNlZ21lbnQtPnNp
emUoKTsKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1vdmUoc2VnbWVudCkgfSk7CiAg
ICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKIH0KIAotQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGNvbnRpZ3VvdXNCdWZmZXIp
CitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBjb250aWd1b3VzQnVmZmVyKQogewogICAgIEFTU0VSVChjb250aWd1b3VzQnVmZmVyLT5oYXNP
bmVTZWdtZW50KCkgfHwgY29udGlndW91c0J1ZmZlci0+aXNFbXB0eSgpKTsKICAgICBtX3NpemUg
PSBjb250aWd1b3VzQnVmZmVyLT5zaXplKCk7CkBAIC00MjksMzYgKzQyOSwzNiBAQCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+
JiYgY29udGlndW91c0J1ZgogICAgIG1fY29udGlndW91cyA9IHRydWU7CiB9CiAKLUNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJiBkYXRhKQotICAgIDogU2hhcmVkQnVmZmVyKFdURk1vdmUoZGF0YSkpCitTaGFy
ZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRhdGEp
CisgICAgOiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUoZGF0YSkpCiB7CiAgICAgbV9j
b250aWd1b3VzID0gdHJ1ZTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwg
TWF5VXNlRmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCitSZWZQdHI8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSBtYXBwZWRGaWxlTW9kZSwgTWF5VXNl
RmlsZU1hcHBpbmcgbWF5VXNlRmlsZU1hcHBpbmcpCiB7CiAgICAgaWYgKG1heVVzZUZpbGVNYXBw
aW5nID09IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpIHsKICAgICAgICAgYm9vbCBtYXBwaW5nU3Vj
Y2VzczsKICAgICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEo
ZmlsZVBhdGgsIG1hcHBlZEZpbGVNb2RlLCBtYXBwaW5nU3VjY2Vzcyk7CiAgICAgICAgIGlmICht
YXBwaW5nU3VjY2VzcykKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOworICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsK
ICAgICB9CiAKICAgICBhdXRvIGJ1ZmZlciA9IEZpbGVTeXN0ZW06OnJlYWRFbnRpcmVGaWxlKGZp
bGVQYXRoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKmJ1ZmZlcikp
OworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpidWZmZXIpKTsKIH0K
IAotY29uc3QgdWludDhfdCogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Citj
b25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdAogewogICAgIGlmIChtX3Nl
Z21lbnRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG1f
c2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOwogfQogCi1XVEY6OlBlcnNpc3RlbmNlOjpEZWNv
ZGVyIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAorV1RGOjpQZXJzaXN0
ZW5jZTo6RGVjb2RlciBTaGFyZWRCdWZmZXI6OmRlY29kZXIoKSBjb25zdAogewogICAgIHJldHVy
biB7IHsgZGF0YSgpLCBzaXplKCkgfSB9OwogfQpAQCAtNTQzLDE0ICs1NDMsMTQgQEAgc2l6ZV90
IERhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjp2aXNpdCh2aXNpdG9y
LCBtX2ltbXV0YWJsZURhdGEpOwogfQogCi1TaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZm
ZXJCdWlsZGVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorU2hhcmVkQnVmZmVyQnVp
bGRlcjo6U2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKICAgICBpbml0
aWFsaXplKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIAotU2hhcmVkQnVmZmVyQnVpbGRl
ciYgU2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3I9KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQorU2hhcmVkQnVmZmVyQnVpbGRlciYgU2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0
b3I9KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAo
IWJ1ZmZlcikgewogICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7CkBAIC01NjEsNyArNTYxLDcg
QEAgU2hhcmVkQnVmZmVyQnVpbGRlciYgU2hhcmVkQnVmZmVyQnVpbGRlcjo6b3BlcmF0b3I9KFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmUKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLXZvaWQg
U2hhcmVkQnVmZmVyQnVpbGRlcjo6aW5pdGlhbGl6ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKK3ZvaWQgU2hhcmVkQnVmZmVyQnVpbGRlcjo6aW5pdGlhbGl6ZShSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKCFtX2J1ZmZlcik7CiAgICAgLy8g
V2UgZG8gbm90IHdhbnQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUgU2hhcmVkQnVmZmVyIGFz
IGFsbCBTaGFyZWRCdWZmZXIgc2hvdWxkIGJlIGltbXV0YWJsZQpAQCAtNTczLDEyICs1NzMsMTIg
QEAgdm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVyOjppbml0aWFsaXplKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogICAgIGFwcGVuZChidWZmZXIpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlKCkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlKCkKIHsKLSAgICByZXR1cm4gbV9idWZmZXIgPyBtX2J1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICByZXR1
cm4gbV9idWZmZXIgPyBtX2J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpIDogRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CiB9CiAKLVJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXJCdWlsZGVyOjp0YWtlQXNDb250aWd1b3VzKCkKK1JlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2VBc0NvbnRpZ3VvdXMoKQogewogICAgIHJldHVybiB0YWtl
KCktPm1ha2VDb250aWd1b3VzKCk7CiB9CkBAIC01OTMsNyArNTkzLDcgQEAgUmVmUHRyPEFycmF5
QnVmZmVyPiBTaGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlQXNBcnJheUJ1ZmZlcigpCiB2b2lkIFNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcigpCiB7CiAgICAgaWYgKCFtX2J1ZmZlcikK
LSAgICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBtX2J1
ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogfQogCiBTaGFyZWRCdWZm
ZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21l
bnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBz
aXplKQpAQCAtNjEwLDE2ICs2MTAsMTYgQEAgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1
ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3JiBvdGhlciwgc2kKIHsKIH0K
IAotUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVh
dGVTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0
YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgY29uc3QgUmVmPERhdGFT
ZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlZ21lbnQs
IGRhdGEgPSBkYXRhKCldKCkgeyByZXR1cm4gZGF0YTsgfSwKICAgICAgICAgW3NpemUgPSBzaXpl
KCldKCkgeyByZXR1cm4gc2l6ZTsgfQogICAgIH0pOwogfQogCi1SZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKK1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgLy8gQWxs
b2NhdGUgYSBidWZmZXIgYmlnIGVub3VnaCB0byBob2xkIGFsbCB0aGUgY2hhcmFjdGVycy4KICAg
ICBjb25zdCBzaXplX3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwpAQCAtNjQ1LDcgKzY0NSw3
IEBAIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGJ1ZmZlci5zaHJpbmsocCAtIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKTsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggNzYwZWI3OGExODY2ZmVkMjNi
MzA0M2NkNWUxNGFkNWNlZGRlNDcyNi4uNWY4YjE2OGU5MTJmOGU5Zjg1M2E1ZTU5YmUzMzRjYWQ1
MjhmMWU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTYzLDcg
KzYzLDcgQEAgY2xhc3MgRGVjb2RlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVk
QnVmZmVyRGF0YVZpZXc7CiAKIC8vIERhdGEgd3JhcHBlZCBieSBhIERhdGFTZWdtZW50IHNob3Vs
ZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUgcmVmZXJlbmNlZCBieSBvdGhlciBvYmpl
Y3RzLgpAQCAtMTMxLDQyICsxMzEsNDIgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgICAgICBGaWxl
U3lzdGVtOjpNYXBwZWRGaWxlRGF0YSwKICAgICAgICAgUHJvdmlkZXI+IG1faW1tdXRhYmxlRGF0
YTsKLSAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwotICAgIGZyaWVuZCBjbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOyAvLyBGb3IgY3JlYXRlQ0ZEYXRhCisgICAgZnJpZW5kIGNsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsg
Ly8gRm9yIGNyZWF0ZUNGRGF0YQogfTsKIAotY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZEJ1ZmZlcj4geworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZm
ZXI+IGNyZWF0ZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVy
PiBjcmVhdGUoY29uc3QgdWludDhfdCosIHNpemVfdCk7Ci0gICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gY3Jl
YXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsgfQotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8dWludDhf
dD4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShjb25zdCB1aW50OF90Kiwg
c2l6ZV90KTsKKyAgICBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gY3JlYXRlKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsgfQorICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1
aW50OF90PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJik7CiAKICNpZiBVU0UoRk9V
TkRBVElPTikKICAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNBcnJheT4gY3JlYXRlTlNE
YXRhQXJyYXkoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKE5TRGF0YSopOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKE5TRGF0YSopOwogI2VuZGlmCiAjaWYgVVNFKENG
KQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQ0ZE
YXRhUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGNyZWF0ZShDRkRhdGFSZWYpOwogI2VuZGlmCiAKICNpZiBVU0UoR0xJQikKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdCeXRlcyopOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlKEdCeXRlcyopOwogI2VuZGlmCiAKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZm
ZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlmCiAgICAgV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29u
c3Q7CiAKLSAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2b2lkcyBjb3B5aW5nIGFu
ZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNhZmUgKFRoZSBTaGFyZWRC
dWZmZXIgaXMgbm90IHNoYXJlZCkuCisgICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBh
dm9pZHMgY29weWluZyBhbmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBz
YWZlIChUaGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBpcyBub3Qgc2hhcmVkKS4KICAgICBWZWN0
b3I8dWludDhfdD4gZXh0cmFjdERhdGEoKTsKIAotICAgIC8vIENyZWF0ZXMgYW4gQXJyYXlCdWZm
ZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRvIHRoYXQKKyAgICAv
LyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFuZCBjb3BpZXMgdGhpcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAogICAgIC8vIEFycmF5QnVmZmVyIHdpdGhvdXQgbWVy
Z2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZmZXIuCiAgICAgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0Owog
CkBAIC0xNzQsMTQgKzE3NCwxNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gIXNpemUoKTsgfQogICAgIGJvb2wgaXNDb250aWd1b3VzKCkgY29uc3QgeyByZXR1
cm4gbV9jb250aWd1b3VzOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVy
PiBjb3B5KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGNvcHkoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvcHlUbyh2b2lk
KiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5n
dGgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVudChjb25z
dCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90
PiYgcHJlZml4KSBjb25zdDsKIAotICAgIHVzaW5nIERhdGFTZWdtZW50ID0gV2ViQ29yZTo6RGF0
YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aGVuIHVzaW5nIFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQKKyAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6
OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2lu
ZyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudAogCiAgICAgc3RydWN0IERhdGFT
ZWdtZW50VmVjdG9yRW50cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKQEAgLTE5
OSwzOCArMTk5LDM4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaGludE1lbW9yeU5vdE5lZWRlZFNv
b24oKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
aGFyZWRCdWZmZXImKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkQnVm
ZmVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQogCi0gICAgV0VC
Q09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3Vv
dXMoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIGZyaWVuZCBjbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOworICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKICAgICBEYXRhU2Vn
bWVudFZlY3RvciBtX3NlZ21lbnRzOwogICAgIGJvb2wgbV9jb250aWd1b3VzIHsgZmFsc2UgfTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlcigpOwotICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmQoZGF0YSwg
c2l6ZSk7IH0KLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IHNpemUpIHsgYXBwZW5kKGRhdGEsIHNpemUpOyB9Ci0gICAgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsgYXBwZW5kKFdURk1vdmUoZGF0YSkpOyB9Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBl
ZEZpbGVEYXRhJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihE
YXRhU2VnbWVudDo6UHJvdmlkZXImJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKCk7CisgICAgZXhwbGljaXQgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeyBhcHBlbmQoZGF0
YSwgc2l6ZSk7IH0KKyAgICBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IGFwcGVuZChkYXRhLCBzaXplKTsgfQorICAgIGV4cGxp
Y2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgeyBhcHBl
bmQoV1RGTW92ZShkYXRhKSk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlBy
b3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CiAjaWYgVVNFKENGKQotICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgogI2lm
IFVTRShHTElCKQotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHQnl0
ZXMqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KEdCeXRlcyopOwogI2VuZGlmCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVk
QnVmZmVyJik7CiAjZW5kaWYKICAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYXBwZW5kKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKICAgICB2b2lkIGFwcGVu
ZChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSB7IGFwcGVuZChyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYXBwZW5kKFZlY3Rvcjx1aW50OF90PiYmKTsKQEAgLTI0Myw3ICsyNDMsNyBAQCBwcml2
YXRlOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOwogCi0gICAgLy8gQ29tYmlu
ZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9y
IGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCisgICAgLy8gQ29tYmluZXMgYWxsIHRo
ZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5zIHRoYXQgdmVjdG9yIGFmdGVyIGNs
ZWFyaW5nIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgogICAgIFdFQkNPUkVfRVhQT1JUIFZl
Y3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogICAgIGNvbnN0IERhdGFTZWdtZW50VmVjdG9yRW50
cnkqIGdldFNlZ21lbnRGb3JQb3NpdGlvbihzaXplX3QgcG9zaXRpdGlvbikgY29uc3Q7CiAKQEAg
LTI1MiwyMCArMjUyLDIwIEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLS8vIEEgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciBpcyBhIFNoYXJlZEJ1ZmZlciB0aGF0IGFsbG93cyB0byBkaXJlY3RseSBh
Y2Nlc3MgaXRzIGNvbnRlbnQgdmlhIHRoZSBkYXRhKCkgYW5kIHJlbGF0ZWQgbWV0aG9kcy4KLWNs
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgOiBwdWJsaWMgU2hhcmVkQnVmZmVyIHsKKy8vIEEg
U2hhcmVkQnVmZmVyIGlzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB0aGF0IGFsbG93cyB0byBk
aXJlY3RseSBhY2Nlc3MgaXRzIGNvbnRlbnQgdmlhIHRoZSBkYXRhKCkgYW5kIHJlbGF0ZWQgbWV0
aG9kcy4KK2NsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IHsKIHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KLSAgICBzdGF0aWMg
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICBz
dGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQogICAgIHsKICAg
ICAgICAgaWYgY29uc3RleHByICghc2l6ZW9mLi4uKEFyZ3MpKQotICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcigpKTsKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcigpKTsKICAgICAgICAgZWxzZSBpZiBjb25z
dGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCiAgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1l
X3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQotICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLik7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3Zl
KGJ1ZmZlcikpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjc0LDcgKzI3NCw3IEBAIHB1Ymxp
YzoKICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIoKSBjb25zdDsKIAogICAg
IGVudW0gY2xhc3MgTWF5VXNlRmlsZU1hcHBpbmcgOiBib29sIHsgTm8sIFllcyB9OwotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVNb2RlID0gRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNl
RmlsZU1hcHBpbmcgPSBNYXlVc2VGaWxlTWFwcGluZzo6WWVzKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlID0gRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlNoYXJlZCwgTWF5VXNlRmlsZU1hcHBpbmcgPSBNYXlVc2VG
aWxlTWFwcGluZzo6WWVzKTsKIAogI2lmIFVTRShGT1VOREFUSU9OKQogICAgIFdFQkNPUkVfRVhQ
T1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwpAQCAtMjg3LDEyICsy
ODcsMTIgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcigpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihSZWY8RGF0YVNl
Z21lbnQ+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVm
ZmVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZUZy
b21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpOwogfTsKIAogY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlciB7CkBA
IC0zMDAsMTUgKzMwMCwxNSBAQCBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsKIHB1YmxpYzoK
ICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKCkgPSBkZWZhdWx0OwogICAgIFNoYXJlZEJ1ZmZlckJ1
aWxkZXIoU2hhcmVkQnVmZmVyQnVpbGRlciYmKSA9IGRlZmF1bHQ7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsK
LSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKSB7IGluaXRpYWxpemUoV1RGTW92ZShidWZmZXIpKTsgfQorICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpOworICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IGluaXRpYWxpemUoV1RGTW92ZShidWZmZXIpKTsgfQog
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRl
cihzdGQ6OmluX3BsYWNlX3QsIEFyZ3MmJi4uLiBhcmdzKQotICAgICAgICA6IG1fYnVmZmVyKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpIHsgfQorICAg
ICAgICA6IG1fYnVmZmVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pKSB7IH0KIAogICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXImIG9wZXJh
dG9yPShTaGFyZWRCdWZmZXJCdWlsZGVyJiYpID0gZGVmYXVsdDsKLSAgICBXRUJDT1JFX0VYUE9S
VCBTaGFyZWRCdWZmZXJCdWlsZGVyJiBvcGVyYXRvcj0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyQnVpbGRlciYgb3BlcmF0b3I9KFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4u
LiBBcmdzPgogICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQpAQCAtMzI0LDEyICszMjQs
MTIgQEAgcHVibGljOgogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIg
PyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQogCiAgICAgdm9pZCByZXNldCgpIHsgbV9idWZmZXIg
PSBudWxscHRyOyB9Ci0gICAgdm9pZCBlbXB0eSgpIHsgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOyB9CisgICAgdm9pZCBlbXB0eSgpIHsgbV9idWZmZXIgPSBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgpIDogU2hhcmVkQnVmZmVy
OjpjcmVhdGUoKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IHRha2Uo
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdGFrZUFz
Q29udGlndW91cygpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBnZXQoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBjb3B5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgpIDogRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxT
aGFyZWRCdWZmZXI+IHRha2VBc0NvbnRpZ3VvdXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8QXJyYXlCdWZmZXI+IHRha2VBc0FycmF5QnVmZmVyKCk7CiAKIHByaXZhdGU6CkBAIC0zNDIs
MTIgKzM0MiwxMiBAQCBwcml2YXRlOgogICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoY29uc3QgU2hh
cmVkQnVmZmVyQnVpbGRlciYpID0gZGVmYXVsdDsKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyJiBv
cGVyYXRvcj0oY29uc3QgU2hhcmVkQnVmZmVyQnVpbGRlciYpID0gZGVmYXVsdDsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxpemUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5zdXJlQnVmZmVyKCk7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IG1fYnVmZmVyOwogfTsKIAotaW5saW5lIFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6
OmV4dHJhY3REYXRhKCkKK2lubGluZSBWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6ZXh0cmFjdERhdGEoKQogewogICAgIGlmIChoYXNPbmVSZWYoKSkKICAgICAgICAgcmV0
dXJuIHRha2VEYXRhKCk7CkBAIC0zNjIsNyArMzYyLDcgQEAgcHVibGljOgogICAgIGNvbnN0IHVp
bnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnQtPmRhdGEoKSArIG1fcG9zaXRp
b25XaXRoaW5TZWdtZW50OyB9CiAgICAgY29uc3QgY2hhciogZGF0YUFzQ2hhclB0cigpIGNvbnN0
IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEoKSk7IH0KIAotICAg
IFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRC
dWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGVTaGFyZWRCdWZmZXIoKSBjb25zdDsKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBXRUJDT1JF
X0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKICNlbmRpZgpA
QCAtMzcyLDYgKzM3Miw2IEBAIHByaXZhdGU6CiAgICAgY29uc3Qgc2l6ZV90IG1fc2l6ZTsKIH07
CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmlu
ZyYpOworUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCmluZGV4IGNkYjZlNzAzNDA0ZDQyNmRkMjFiNDc5
ZmE4OWMwZGE5YjhjNDlmOGUuLjlkMDU1Y2UyN2Q4OGMzZDYyZTViZDFjZDQ2YWQ5MWY1Y2M0MzFm
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVu
a1JlYWRlci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYg
RU5BQkxFKE1IVE1MKQogCi1TaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJh
dG9yKQorU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0
b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVudChidWZmZXItPmJlZ2luKCkpCiAgICAgLCBtX2l0
ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAgLCBtX3NlZ21lbnQobV9pdGVyYXRvckN1cnJl
bnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRlcmF0b3JDdXJyZW50LT5zZWdtZW50LT5kYXRhKCkg
OiBudWxscHRyKQpAQCAtNDQsNyArNDQsNyBAQCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFZlYwogewog
fQogCi1TaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hh
cmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IGNoYXIqIHNlcGFyYXRvcikKK1NoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBidWZmZXIsIGNvbnN0IGNoYXIqIHNlcGFyYXRvcikKICAgICA6IG1faXRlcmF0b3JDdXJyZW50
KGJ1ZmZlci0+YmVnaW4oKSkKICAgICAsIG1faXRlcmF0b3JFbmQoYnVmZmVyLT5lbmQoKSkKICAg
ICAsIG1fc2VnbWVudChtX2l0ZXJhdG9yQ3VycmVudCAhPSBtX2l0ZXJhdG9yRW5kID8gbV9pdGVy
YXRvckN1cnJlbnQtPnNlZ21lbnQtPmRhdGEoKSA6IG51bGxwdHIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaAppbmRleCA1ZDRlNmZlZTU4
MmM2NjE2ZmQwN2UzOTk0ZmY3NWM4ZjA3YTJmY2UxLi4xYzY0MDhkNGM3MzZhMWM0YTQ1Y2VlN2Iz
ZjY5NjU3YmM5YTI2MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXJDaHVua1JlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmgKQEAgLTQxLDggKzQxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlciB7CiBwdWJs
aWM6Ci0gICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiwgY29uc3QgVmVj
dG9yPGNoYXI+JiBzZXBhcmF0b3IpOwotICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IGNoYXIqIHNlcGFyYXRvcik7CisgICAgU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJh
dG9yKTsKKyAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiwgY29uc3QgY2hhciogc2VwYXJhdG9yKTsKIAogICAgIHZvaWQgc2V0U2VwYXJhdG9yKGNvbnN0
IFZlY3RvcjxjaGFyPiYpOwogICAgIHZvaWQgc2V0U2VwYXJhdG9yKGNvbnN0IGNoYXIqKTsKQEAg
LTU4LDggKzU4LDggQEAgcHVibGljOgogICAgIHNpemVfdCBwZWVrKFZlY3Rvcjx1aW50OF90PiYs
IHNpemVfdCk7CiAKIHByaXZhdGU6Ci0gICAgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rv
cjo6Y29uc3RfaXRlcmF0b3IgbV9pdGVyYXRvckN1cnJlbnQ7Ci0gICAgY29uc3QgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbV9pdGVyYXRvckVuZDsKKyAg
ICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0
b3IgbV9pdGVyYXRvckN1cnJlbnQ7CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnRWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIG1faXRlcmF0b3JFbmQ7CiAgICAgY29u
c3QgdWludDhfdCogbV9zZWdtZW50IHsgbnVsbHB0ciB9OwogICAgIHNpemVfdCBtX3NlZ21lbnRJ
bmRleCB7IDAgfTsKICAgICBWZWN0b3I8Y2hhcj4gbV9zZXBhcmF0b3IgeyBmYWxzZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcAppbmRleCAzZjdmYmE0
MWE0YTFlZmIxMWNjZGZmZDU3MjY3OGNkZmZlNTNkMDkxLi5iMmQ3YTU1MGQ0NjBlOTRjZDMxNTEz
NGEzMTk1YmNkOTFjN2I3ODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
dGF0aWNQYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQ
YXN0ZWJvYXJkLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6Ondy
aXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBt
X2N1c3RvbURhdGEud3JpdGVTdHJpbmcodHlwZSwgdmFsdWUpOwogfQogCi12b2lkIFN0YXRpY1Bh
c3RlYm9hcmQ6OndyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFN0YXRpY1Bhc3RlYm9hcmQ6OndyaXRlRGF0YShjb25z
dCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBtX25vbkRl
ZmF1bHREYXRhVHlwZXMuYWRkKHR5cGUpOwogICAgIG1fY3VzdG9tRGF0YS53cml0ZURhdGEodHlw
ZSwgV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
dGF0aWNQYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJv
YXJkLmgKaW5kZXggYTAzOWMyNTI1ZWQ1ZmU2MzUwY2NiMGExYWEzNjUwZDMxOTg2ZjYxOS4uYzA5
YjZkZTMxZjJlZGViZTAxODhkYzljNDY2YTI3MWUxYjhiOWUxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CiAKIGNsYXNzIFN0YXRpY1Bhc3RlYm9hcmQgZmluYWwgOiBwdWJsaWMgUGFzdGVi
b2FyZCB7CiBwdWJsaWM6CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgcmVh
ZFN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpIGZpbmFsOwogCiAgICAgdm9p
ZCB3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkgZmlu
YWw7Ci0gICAgdm9pZCB3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKKyAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcm
IHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CiAgICAgdm9pZCB3cml0ZVN0cmluZ0lu
Q3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAgICAg
dm9pZCBjbGVhcigpIGZpbmFsOwogICAgIHZvaWQgY2xlYXIoY29uc3QgU3RyaW5nJiB0eXBlKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlp
bmdJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5o
CmluZGV4IDY4Nzk1OTAwYzVhZGY5Y2M5MDQ1ZTBlYWJiMjJiMThmYTY2OTYzMTQuLjFkNjViYzQw
M2FkODUyNDNjNjcyNWU3MDQ0OGQ2Y2RhZGNjY2NlMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBzdHJ1Y3QgTm93UGxheWluZ0luZm9BcnR3b3JrIHsKICAgICBTdHJpbmcg
c3JjOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFn
ZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKIAog
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb3dQbGF5aW5nSW5mb0FydHdvcmsmIG90aGVyKSBj
b25zdAogICAgIHsKQEAgLTY3LDcgKzY3LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5s
aW5lIHN0ZDo6b3B0aW9uYWw8Tm93UGxheWluZ0luZm9BcnR3b3JrPiBOb3dQbGF5aW5nSW4KICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW1hZ2VE
YXRhKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCmluZGV4
IGMxNDk0ZWFiMWYyODY0ZTc3Mzk1MjRiZTlkYWY1OTI2NWVhMjBiOTQuLmQ0YmI1NzlmMzAwYzVm
ZTIxZTRkZTA4NDExMGE5NDZkNjk0YzczZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKQEAg
LTEzMCw3ICsxMzAsNyBAQCBjbGFzcyBBdWRpb0ZpbGVSZWFkZXJXZWJNRGF0YSB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcjsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAjaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICBSZWY8QXVkaW9UcmFja1ByaXZhdGVXZWJNPiBtX3Ry
YWNrOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXll
ZEVuY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJD
Ri5jcHAKaW5kZXggOWIzZWNhMWExNTQ0OThjMGU3ZTM0YzdjOTEzMzY5NWNjZDk0N2U3Yi4uNDQ3
M2VjMjhkMDRjNTQzNjMyM2MwN2QzN2JmMmM5Y2Q3ZGVkMjEzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcApAQCAtMTQ2LDEyICsxNDYsMTIgQEAg
dm9pZCBLZXllZEVuY29kZXJDRjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVM
YXN0KCk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJD
Rjo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyQ0Y6
OmZpbmlzaEVuY29kaW5nKCkKIHsKICAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENGUHJvcGVydHlM
aXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3Jvb3REaWN0aW9uYXJ5LmdldCgp
LCBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMCwgMCwgbnVsbHB0cikpOwogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCmluZGV4IGZhYjY2ZmNiY2E4
ZjQ3MTk3ZTk4ZDc5YmYwMmVmODE2MWE0Mjc2YTQuLmY1ODZjMDJiYjE1YmYzOWI3MjgzZmJhOWFh
NWU4YTEyNmI4NGZlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tl
eWVkRW5jb2RlckNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNv
ZGVyQ0YuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2RlckNGKCk7
CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5j
b2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNjhiMDg5NGNjODU2ZWY1MjI3
MDM0MzcwMjliMjZjNWIzZGQ1OTI1NC4uMWJhYTNkZTQxMTJjMmY3ZGY3MjdhOTM5NmVhNThlZTUz
ZjgwOTNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVm
ZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZEJ1
ZmZlcjo6U2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQorRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgZGF0YSkKIHsKICAgICBhcHBlbmQo
ZGF0YSk7CiB9CkBAIC00MSw3ICs0MSw3IEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENG
RGF0YVJlZiBkYXRhKQogLy8gVXNpbmcgRm91bmRhdGlvbiBhbGxvd3MgZm9yIGFuIGV2ZW4gbW9y
ZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiwKIC8vIHNvIG9ubHkg
dXNlIHRoaXMgdmVyc2lvbiBmb3Igbm9uLUZvdW5kYXRpb24uCiAjaWYgIVVTRShGT1VOREFUSU9O
KQotUmV0YWluUHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZE
YXRhKCkgY29uc3QKK1JldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZE
YXRhKCkgY29uc3QKIHsKICAgICBpZiAoaGFzT25lU2VnbWVudCgpKSB7CiAgICAgICAgIGlmIChh
dXRvKiBkYXRhID0gc3RkOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+KCZtX3NlZ21lbnRz
WzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCkBAIC01MSwxMiArNTEsMTIgQEAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkgY29u
c3QKIH0KICNlbmRpZgogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShD
RkRhdGFSZWYgZGF0YSkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhUmVmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKGRhdGEpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKGRhdGEpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRN
ZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAogewogICAgIGZvciAoY29uc3QgYXV0byYg
ZW50cnkgOiBtX3NlZ21lbnRzKSB7CiAgICAgICAgIGlmIChlbnRyeS5zZWdtZW50LT5oYXNPbmVS
ZWYoKSkgewpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5v
dE5lZWRlZFNvb24oKSBjb25zdAogICAgIH0KIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVu
ZChDRkRhdGFSZWYgZGF0YSkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENG
RGF0YVJlZiBkYXRhKQogewogICAgIEFTU0VSVCghbV9jb250aWd1b3VzKTsKICAgICBpZiAoZGF0
YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKaW5kZXggMDc5N2RmYmU4ZDAxOGJlNjM2MTc0
NGM1OGY4OTJkZDU2ZWQ2ODljNS4uY2JlODc3MWE0NWQ4NjJjYjVhYjA1ZWNhMzk5OTI3ZTA3ODM4
ZjU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92
ZXJyaWRlOwogICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3Ro
KSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwotICAg
IFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzUmVxdWly
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KaW5kZXggNDI5MGRiMTI4ZDAwMGE0MGVl
ZjcwZmQyOTQxZDYzNDQ5MDQ2ZGUwMy4uMmVmMjcwMWZlNjc4YmY5YjkyZGIyMTJiYmVhNWM5MTVh
M2ZjM2EyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KQEAgLTE3NSw3ICsxNzUsNyBA
QCB2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEo
KQogICAgIHNlbWFwaG9yZS53YWl0KCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IE5ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXBsYWNl
bWVudERhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVwbGFjZW1lbnREYXRhLmdldCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRy
b2xzQ29udGVudEZpbHRlci5oCmluZGV4IDA2OGNkY2IzODNmNDIzNjVhYzMyNjRlMjI5YTZkNjNi
YzJiNGFiZDYuLjY3OWFlOTMyOTUxN2UxZjM5NDNiYTU3NjJhYzhmNTZlODYwYzhjMjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxD
b250cm9sc0NvbnRlbnRGaWx0ZXIuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKLSAgICBSZWY8U2hhcmVk
QnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
ciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyLm1tCmluZGV4IGI0NjFmOTc1MzZkZTNhMTU4MTNhNTgyN2I4NjcxMzhiOTZkNGYz
OGMuLjFjOTYwNDcxNmI0MjY5M2Q1ZTQ2YzJlMjNlOTQxZGEwMGM4M2U0ZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50Rmls
dGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJv
bHNDb250ZW50RmlsdGVyLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBQYXJlbnRhbENvbnRy
b2xzQ29udGVudEZpbHRlcjo6ZmluaXNoZWRBZGRpbmdEYXRhKCkKICAgICB1cGRhdGVGaWx0ZXJT
dGF0ZSgpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QK
IHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggNmY1MGYwMzVhZGZlYWE5ZGJh
ZGIwMmFjYWQ4ZjA2N2M3ODNmY2JlNS4uYjgxNzA4MTdjZWM1OWUyMmQzYzBlOWE3OGYxNDZjMDMz
ZTRjMTY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVi
b2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9h
cmRDb2NvYS5tbQpAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgTlNCaXRtYXBJbWFnZUZpbGVUeXBl
IGJpdG1hcFBOR0ZpbGVUeXBlKCkKIH0KICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLS8vIE1h
a2luZyB0aGlzIG5vbi1pbmxpbmUgc28gdGhhdCBXZWJLaXQgMidzIGRlY29kaW5nIGRvZXNuJ3Qg
aGF2ZSB0byBpbmNsdWRlIFNoYXJlZEJ1ZmZlci5oLgorLy8gTWFraW5nIHRoaXMgbm9uLWlubGlu
ZSBzbyB0aGF0IFdlYktpdCAyJ3MgZGVjb2RpbmcgZG9lc24ndCBoYXZlIHRvIGluY2x1ZGUgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlci5oLgogUGFzdGVib2FyZFdlYkNvbnRlbnQ6OlBhc3RlYm9hcmRX
ZWJDb250ZW50KCkgPSBkZWZhdWx0OwogUGFzdGVib2FyZFdlYkNvbnRlbnQ6On5QYXN0ZWJvYXJk
V2ViQ29udGVudCgpID0gZGVmYXVsdDsKIApAQCAtMjExLDExICsyMTEsMTEgQEAgVmVjdG9yPFN0
cmluZz4gUGFzdGVib2FyZDo6dHlwZXNGb3JMZWdhY3lVbnNhZmVCaW5kaW5ncygpCiB9CiAKICNp
ZiBQTEFURk9STShNQUMpCi1zdGF0aWMgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNvbnZl
cnRUSUZGVG9QTkcoU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQorc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNvbnZlcnRUSUZGVG9QTkcoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgdGlmZkJ1ZmZl
cikKIHsKICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2Nd
IGluaXRXaXRoRGF0YTogdGlmZkJ1ZmZlci5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOwogICAgIE5TRGF0YSAqcG5nRGF0YSA9IFtpbWFnZSByZXByZXNlbnRhdGlvblVz
aW5nVHlwZTpiaXRtYXBQTkdGaWxlVHlwZSgpIHByb3BlcnRpZXM6QHsgfV07Ci0gICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKKyAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUocG5nRGF0YSk7CiB9CiAjZW5kaWYKIApAQCAtMzE2LDcgKzMxNiw3
IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRUeXBlc1dpdGhTZWN1cml0eUNoZWNr
KCkKICAgICByZXR1cm4gY29jb2FUeXBlczsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFBhc3RlYm9hcmQ6OnJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29u
c3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1
ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAg
YXV0byBidWZmZXIgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PmJ1ZmZlckZvclR5cGUodHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2hhcmVkQnVmZmVyQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpp
bmRleCBhZDk2ZjdmNTNhMmRjYzA0ZDI5MzIxMDJlZWQ4MTk4MGZiZmQ1MDFhLi42NjQyN2RmYmYw
NWZkNzI2YWZkOTlhMzI5YzZhYzExYWM5ZWQ3YTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbQpAQCAtODgsMzAgKzg4LDMwIEBA
IEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShOU0RhdGEgKmRhdGEpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnJpZGdlX2Nhc3QoZGF0YSkpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGJyaWRnZV9jYXN0KGRh
dGEpKSk7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQordm9p
ZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoTlNEYXRhICpkYXRhKQogewogICAgIEFT
U0VSVCghbV9jb250aWd1b3VzKTsKICAgICByZXR1cm4gYXBwZW5kKGJyaWRnZV9jYXN0KGRhdGEp
KTsKIH0KIAotUmV0YWluUHRyPE5TRGF0YT4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
TlNEYXRhKCkgY29uc3QKK1JldGFpblB0cjxOU0RhdGE+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlTlNE
YXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QoY3JlYXRlQ0ZEYXRhKCkpOwog
fQogCi1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVD
RkRhdGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVD
RkRhdGEoKSBjb25zdAogewogICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCiAgICAgICAgIHJl
dHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CiAgICAgcmV0
dXJuIGJyaWRnZV9jYXN0KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCkpOwog
fQogCi1SZXRhaW5QdHI8TlNBcnJheT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgp
IGNvbnN0CitSZXRhaW5QdHI8TlNBcnJheT4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
TlNEYXRhQXJyYXkoKSBjb25zdAogewogICAgIHJldHVybiBjcmVhdGVOU0FycmF5KG1fc2VnbWVu
dHMsIFtdIChhdXRvJiBzZWdtZW50KSB7CiAgICAgICAgIHJldHVybiBzZWdtZW50LnNlZ21lbnQt
PmNyZWF0ZU5TRGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKaW5kZXggZmJjMjgzZmJjMzM2OWJmODI3ZTMxNjk5NGM0
Yzk0ZTA2MzYzY2I4MS4uMmRlNDE5MzRkYTE5ODc5ZDc1YzBkZjhhODllNjRlNTk5YzI5YWUwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5z
dGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1J
bnN0YW5jZS5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIExvZ2dlcjsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uOwogc3RydWN0IENETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb247CiAKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgQ0RNSW5zdGFuY2VDbGllbnQgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5DRE1JbnN0YW5jZUNsaWVudCgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgdm9p
ZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZXF1ZXN0ZWRJbml0
aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogLy8gSmF2YVNjcmlwdCdzIGhhbmRsZSB0byBhIENETUlu
c3RhbmNlLCBtdXN0IGJlIHVzZWQgZnJvbSB0aGUKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgog
ICAgIH07CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNv
bnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmll
cnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNj
ZXNzQ2FsbGJhY2smJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSA9IDA7
CiAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0
YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TUluc3RhbmNlU2Vzc2lvbi5oCmluZGV4IDM3Y2QwN2M3YmYyZGM3NWU0MWZkNWM2YzdkZWNmNDNl
MTAzOWUxMTQuLmQyNTkyMjViYTllMDJhNjRkMGNlY2Q2MTUxZmRmOTNmNGYyNDY2YTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNl
U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TUluc3RhbmNlU2Vzc2lvbi5oCkBAIC00MywxNiArNDMsMTYgQEAgY2xhc3MgTG9nZ2VyOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudCA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5DRE1JbnN0YW5jZVNlc3Npb25DbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB1
c2luZyBLZXlTdGF0dXMgPSBDRE1LZXlTdGF0dXM7Ci0gICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9y
ID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47CisgICAg
dXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4sIEtleVN0YXR1cz4+OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVLZXlTdGF0
dXNlcyhLZXlTdGF0dXNWZWN0b3ImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2Fn
ZShDRE1NZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlc3Npb25JZENo
YW5nZWQoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHVzaW5nIFBsYXRmb3JtRGlzcGxheUlEID0g
dWludDMyX3Q7CiAgICAgdmlydHVhbCBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSA9IDA7
CkBAIC03OCwxMyArNzgsMTMgQEAgcHVibGljOgogICAgICAgICBTdWNjZWVkZWQsCiAgICAgfTsK
IAotICAgIHVzaW5nIExpY2Vuc2VDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBu
ZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Ci0gICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFj
ayYmKSA9IDA7CisgICAgdXNpbmcgTGljZW5zZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3Vj
Y2VlZGVkKT47CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgPSAwOwogCiAgICAgdXNpbmcgS2V5U3Rh
dHVzVmVjdG9yID0gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3I7Ci0g
ICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6cGFpcjxNZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4+OworICAgIHVzaW5nIE1lc3NhZ2UgPSBzdGQ6OnBhaXI8TWVzc2FnZVR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgdXNpbmcgTGljZW5zZVVwZGF0ZUNhbGxiYWNrID0g
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHNlc3Npb25XYXNDbG9zZWQsIHN0ZDo6b3B0aW9u
YWw8S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4m
JiBjaGFuZ2VkRXhwaXJhdGlvbiwgc3RkOjpvcHRpb25hbDxNZXNzYWdlPiYmIG1lc3NhZ2UsIFN1
Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
cmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNr
JiYpID0gMDsKIAogICAgIGVudW0gY2xhc3MgU2Vzc2lvbkxvYWRGYWlsdXJlIDogdWludDhfdCB7
CiAgICAgICAgIE5vbmUsCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIHVzaW5nIENs
b3NlU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPjsKICAgICB2aXJ0
dWFsIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Np
b25DYWxsYmFjayYmKSA9IDA7CiAKLSAgICB1c2luZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChLZXlTdGF0dXNWZWN0b3ImJiwgc3RkOjpvcHRpb25h
bDxSZWY8U2hhcmVkQnVmZmVyPj4mJiwgU3VjY2Vzc1ZhbHVlKT47CisgICAgdXNpbmcgUmVtb3Zl
U2Vzc2lvbkRhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVj
dG9yJiYsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmLCBTdWNj
ZXNzVmFsdWUpPjsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYp
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAppbmRleCBjYzZkYzdmMTQwY2Q2N2QyYjdiODRmNmFi
MmMyODQzMTZkZmRkY2NmLi41MmE2MTQ4YzgzY2Q1MzkzYzhmODc0ZWQ4NWFkOGJmMjdlNWJlNTBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Q
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
UHJpdmF0ZS5oCkBAIC03Myw4ICs3Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbG9h
ZEFuZEluaXRpYWxpemUoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2VydmVyQ2Vy
dGlmaWNhdGVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25z
KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9t
U3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3Qg
PSAwOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKaW5kZXggZjIxOGY5NzkwNGZiYmE0OWYxZWJkZjQ4ZTIw
NWZlNzNkZmFmYjY0OC4uNGJhNzViZjAwZDlmNzEzYjVhZmJiYTc5MzQwMTk3MTZjZDhmMDM4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVBy
b3h5LmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
VmVjdG9yIEtleVN0b3JlOjpjb252ZXJ0VG9KU0tleVN0YXR1c1ZlY3RvcigpIGNvbnN0CiAgICAg
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzVmVjdG9yOwogICAg
IGtleVN0YXR1c1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bUtleXMoKSk7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiBrZXkgOiBtX2tleXMpCi0gICAgICAgIGtleVN0YXR1c1ZlY3Rvci51
bmNoZWNrZWRBcHBlbmQoc3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBDRE1JbnN0YW5jZVNl
c3Npb246OktleVN0YXR1cz4geyBrZXktPmlkQXNTaGFyZWRCdWZmZXIoKSwga2V5LT5zdGF0dXMo
KSB9KTsKKyAgICAgICAga2V5U3RhdHVzVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChzdGQ6OnBhaXI8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1
cz4geyBrZXktPmlkQXNTaGFyZWRCdWZmZXIoKSwga2V5LT5zdGF0dXMoKSB9KTsKICAgICByZXR1
cm4ga2V5U3RhdHVzVmVjdG9yOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaAppbmRleCBhNTg0YjZjZDI2NmIwOTgwOTAyNTRkN2Rj
YmRkYmY2MGQ5MzMxZmJiLi5lMWUwOThhMWQ1ZjVmZmM2NWMyYTQ4ZmE0MGFhOTcyZmU4OWUxZTNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Q
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVBy
b3h5LmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgS2V5SGFuZGxlKHN0YXR1cywgV1RGTW92ZShrZXlJRCksIFdURk1vdmUoa2V5
SGFuZGxlVmFsdWUpKSk7CiAgICAgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGlkQXNTaGFyZWRC
dWZmZXIoKSBjb25zdCB7IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lkLmRhdGEoKSwg
bV9pZC5zaXplKCkpOyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGlkQXNTaGFy
ZWRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2lkLmRhdGEo
KSwgbV9pZC5zaXplKCkpOyB9CiAKICAgICBib29sIHRha2VWYWx1ZUlmRGlmZmVyZW50KEtleUhh
bmRsZVZhbHVlVmFyaWFudCYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKaW5kZXggNjY3MjZmNzRlNThkOGUx
MjJjYmM5MGI4NjdiOWJmOTYxNzc4MDNkNC4uZmNhNmYyMzg4YTU2YTZhMWM3MjQ3MGU1YTQ2ZmRk
MjhmMDczNzUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogbmFtZXNwYWNlIENETVV0aWxpdGllcyB7CiAKLVJlZlB0cjxKU09OOjpPYmpl
Y3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxK
U09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgLy8gRmFpbCBvbiBsYXJnZSBidWZmZXJzIHdob3NlIHNpemUgZG9l
c24ndCBmaXQgaW50byBhIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLgogICAgIHNpemVfdCBzaXpl
ID0gYnVmZmVyLnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmgKaW5kZXggNzRmNTE1YjBiZDJhODcxNjhlZWYyNGIx
OGY5NWRlYWJlZTgyOGU2Yy4uZmNmNWJkZGE3YzU5N2QzYzNhYzM0OWVlMTc4OWU0YWQ2ZTBjOTU5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
VXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNVXRpbGl0aWVzLmgKQEAgLTM1LDExICszNSwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAK
IG5hbWVzcGFjZSBDRE1VdGlsaXRpZXMgewogCi1SZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJzZUpT
T05PYmplY3QoY29uc3QgU2hhcmVkQnVmZmVyJik7CitSZWZQdHI8SlNPTjo6T2JqZWN0PiBwYXJz
ZUpTT05PYmplY3QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9j
bGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggMmFkZGVlN2VlOGI0ZWViODM1ZmE3MGMyNGYx
ZDRlZjg5ZDczNDNlZi4uMzFhOWZkZmEwMmQ2ZDAwY2EyNjE4MjUyZGVkOTM1MzEzZGM1OGFhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJr
ZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHN0YXRp
YyBib29sIHBhcnNlTGljZW5zZVJlbGVhc2VBY2tub3dsZWRnZW1lbnRGb3JtYXQoY29uc3QgSlNP
Tjo6T2JqZWN0JiByb290KQogLy8gXTsKIAogLy8gVGhpcyBmdW5jdGlvbiBleHRyYWN0cyB0aGUg
S2V5SWRzIGNvdW50IGFuZCB0aGUgbG9jYXRpb24gb2YgdGhlIGZpcnN0IEtleUlkIGluIGluaXRE
YXRhIGJ1ZmZlci4KLXN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0
S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERh
dGEpCitzdGF0aWMgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gZXh0cmFjdEtleWlkc0xv
Y2F0aW9uRnJvbUNlbmNJbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0
RGF0YSkKIHsKICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBrZXlJZHNNYXAoMCwg
MCk7CiAKQEAgLTE4OSwxMyArMTg5LDEzIEBAIHN0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVu
c2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0CiB9CiAK
IC8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBpbml0RGF0YSBzaGFyZWRCdWZmZXIgaXMg
YSB2YWxpZCBDRU5DIGluaXREYXRhLgotc3RhdGljIGJvb2wgaXNDZW5jSW5pdERhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBib29sIGlzQ2VuY0luaXREYXRhKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIHN0ZDo6cGFpcjx1bnNp
Z25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCA9IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5j
SW5pdERhdGEoaW5pdERhdGEpOwogICAgIHJldHVybiAoKGtleUlkc01hcC5maXJzdCkgJiYgKGtl
eUlkc01hcC5zZWNvbmQpKTsKIH0KIAotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGV4dHJhY3RL
ZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitzdGF0
aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXRE
YXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCkBAIC0yMzAsNyArMjMwLDcgQEAgc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlpZHNGcm9tQ2VuY0luaXREYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgaW5pdEQKICAgICByZXR1cm4ga2V5SWRzLnRha2UoKTsKIH0KIAotc3RhdGljIFJlZjxT
aGFyZWRCdWZmZXI+IGV4dHJhY3RLZXlJZEZyb21XZWJNSW5pdERhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZXh0cmFj
dEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0
RGF0YSkKIHsKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGtleUlkczsKIApAQCAtMzkwLDcgKzM5
MCw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGluaXREYXRhKSBjb25zdAorYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUgaW5pdERh
dGEgYnVmZmVyIGFzIGFuIEpTT04gb2JqZWN0IGluIGtleWlkcyBjYXNlLgogICAgIGlmIChlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJrZXlpZHMiKSAmJiBDRE1V
dGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdChpbml0RGF0YSkpCkBAIC00MDcsNyArNDA3LDcgQEAg
Ym9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIC8vIFZhbGlkYXRlIHRoZSByZXNw
b25zZSBidWZmZXIgYXMgYW4gSlNPTiBvYmplY3QuCiAgICAgaWYgKCFDRE1VdGlsaXRpZXM6OnBh
cnNlSlNPTk9iamVjdChyZXNwb25zZSkpCkBAIC00MzMsNyArNDMzLDcgQEAgdm9pZCBDRE1JbnN0
YW5jZUNsZWFyS2V5Ojppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lz
dGVtQ29uZmlndXIKICAgICBjYWxsYmFjayhzdWNjZWVkZWQpOwogfQogCi12b2lkIENETUluc3Rh
bmNlQ2xlYXJLZXk6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1
Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0Nh
bGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgLy8gUmVqZWN0IHNldHRpbmcgYW55IHNlcnZlciBj
ZXJ0aWZpY2F0ZS4KICAgICBjYWxsYmFjayhGYWlsZWQpOwpAQCAtNDU1LDcgKzQ1NSw3IEBAIFJl
ZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNlQ2xlYXJLZXk6OmNyZWF0ZVNlc3Np
b24oKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXko
KnRoaXMpKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwg
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgc3RhdGlj
IHVpbnQzMl90IHNfc2Vzc2lvbklkVmFsdWUgPSAwOwogICAgICsrc19zZXNzaW9uSWRWYWx1ZTsK
QEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1
ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaQogICAgICAgICB9KTsK
IH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVz
cG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
TGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNl
bnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICNpZiBMT0dfRElTQUJMRUQKICAgICAv
LyBXZSBvbmx5IHVzZSB0aGUgc2VzaW9uIElEIGZvciBkZWJ1ZyBsb2dnaW5nLiBUaGUgdmVyYm9z
ZSBwcmVwcm9jZXNzb3IgY2hlY2tzIGFyZSBiZWNhdXNlCkBAIC01NjgsNyArNTY4LDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIExpY2UKICAgICBBU1NFUlQoc2Vzc2lvbklkID09IG1fc2Vzc2lvbklE
KTsKIAogICAgIGF1dG8gZGlzcGF0Y2hDYWxsYmFjayA9Ci0gICAgICAgIFt3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9LCAmY2FsbGJhY2tdKEtleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c1Zl
Y3Rvciwgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBTdWNjZXNz
VmFsdWUgc3VjY2VzcykgeworICAgICAgICBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwg
JmNhbGxiYWNrXShLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNWZWN0b3IsIHN0ZDo6b3B0aW9u
YWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBz
dWNjZXNzKSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKAogICAgICAgICAgICAgICAg
IFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqd2Vha1RoaXMgfSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwga2V5U3RhdHVzVmVjdG9yID0gV1RGTW92ZShrZXlTdGF0dXNWZWN0b3IpLCBtZXNz
YWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc3VjY2Vzc10oKSBtdXRhYmxlIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTU4MSw3ICs1ODEsNyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkNsZWFyS2V5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgTGljZQogICAgIC8vIENvbnN0cnVjdCB0aGUgS2V5U3RhdHVzVmVjdG9yIG9iamVjdCwg
cmVwcmVzZW50aW5nIHJlbGVhc2VkIGtleXMsIGFuZCB0aGUgbWVzc2FnZSBpbiB0aGUKICAgICAv
LyAnbGljZW5zZSByZWxlYXNlJyBmb3JtYXQuCiAgICAgS2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1
c1ZlY3RvciA9IG1fa2V5U3RvcmUuYWxsS2V5c0FzKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3Rh
dHVzOjpSZWxlYXNlZCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZTsKICAgICB7CiAgICAgICAgIC8v
IENvbnN0cnVjdCBKU09OIHRoYXQgcmVwcmVzZW50cyB0aGUgJ2xpY2Vuc2UgcmVsZWFzZScgZm9y
bWF0LCBjcmVhdGluZyBhICdraWRzJyBhcnJheQogICAgICAgICAvLyBvZiBiYXNlNjRVUkwtZW5j
b2RlZCBrZXkgSURzIGZvciBhbGwga2V5cyB0aGF0IHdlcmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMg
c2Vzc2lvbi4KQEAgLTU5NSwxNCArNTk1LDE0IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xl
YXJLZXk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlCiAg
ICAgICAgICAgICByb290T2JqZWN0LT5zZXRBcnJheSgia2lkcyIsIFdURk1vdmUoYXJyYXkpKTsK
ICAgICAgICAgfQogCi0gICAgICAgIC8vIENvcHkgdGhlIEpTT04gZGF0YSBpbnRvIGEgU2hhcmVk
QnVmZmVyIG9iamVjdC4KKyAgICAgICAgLy8gQ29weSB0aGUgSlNPTiBkYXRhIGludG8gYSBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyIG9iamVjdC4KICAgICAgICAgU3RyaW5nIG1lc3NhZ2VTdHJpbmcg
PSByb290T2JqZWN0LT50b0pTT05TdHJpbmcoKTsKICAgICAgICAgQ1N0cmluZyBtZXNzYWdlQ1N0
cmluZyA9IG1lc3NhZ2VTdHJpbmcudXRmOCgpOwogICAgICAgICBtZXNzYWdlID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUobWVzc2FnZUNTdHJpbmcuZGF0YSgpLCBtZXNzYWdlQ1N0cmluZy5sZW5ndGgo
KSk7CiAgICAgfQogCiAgICAgbV9rZXlTdG9yZS51bnJlZkFsbEtleXMoKTsKLSAgICBkaXNwYXRj
aENhbGxiYWNrKFdURk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgUmVmPFNoYXJlZEJ1ZmZlcj4oKm1l
c3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CisgICAgZGlzcGF0Y2hDYWxsYmFjayhX
VEZNb3ZlKGtleVN0YXR1c1ZlY3RvciksIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPigqbWVz
c2FnZSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKIH0KIAogdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25DbGVhcktleTo6c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xl
YXJrZXkvQ0RNQ2xlYXJLZXkuaAppbmRleCA5YzA3NDdkYzFiZDhlNjdmM2JhODY0ZDliODExMzM3
NjI1YzhhNjc5Li45ZTI3ZmU5MTJjNGRhMDY3ZmIyNmNhZmJjN2Y2YTY1MWRhNDc1MjhiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L2NsZWFya2V5L0NETUNsZWFyS2V5LmgKQEAgLTg2LDggKzg2LDggQEAgcHVibGljOgogICAgIHZv
aWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2Vy
dGlmaWNhdGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29u
c3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBj
b25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAg
IGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBj
b25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQo
Y29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiB9OwogCkBAIC05OSw3ICs5OSw3IEBAIHB1Ymxp
YzoKICAgICAvLyBDRE1JbnN0YW5jZQogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRh
dGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkNsZWFy
S2V5OyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQ
ZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNl
cnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBm
aW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdl
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtKCkgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRl
U2Vzc2lvbigpIGZpbmFsOwpAQCAtMTA5LDggKzEwOSw4IEBAIGNsYXNzIENETUluc3RhbmNlU2Vz
c2lvbkNsZWFyS2V5IGZpbmFsIDogcHVibGljIENETUluc3RhbmNlU2Vzc2lvblByb3h5IHsKIHB1
YmxpYzoKICAgICBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleShDRE1JbnN0YW5jZUNsZWFyS2V5
JiBwYXJlbnQpCiAgICAgICAgIDogQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkocGFyZW50KSB7IH0K
LSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFj
ayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5z
ZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5h
bDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBM
aWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5
cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9u
Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJp
bmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2Rlckdl
bmVyaWMuY3BwCmluZGV4IDdhYTk0YjRiNGJjMmNiZjkyMmFhZGE1ODg3NTczZDc1ZDdjMGJjNjcu
LjdiZjAwODMyYTQwMmVlYWQ1NzIzY2E0MjhlOWFmYjdjYzQxYTBjNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNw
cApAQCAtMTM5LDkgKzEzOSw5IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5kQXJyYXko
KQogICAgIG1fZW5jb2RlciA8PCBUeXBlOjpFbmRBcnJheTsKIH0KIAotUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkKK1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckdlbmVyaWM6OmZpbmlzaEVuY29kaW5nKCkK
IHsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fZW5jb2Rlci5i
dWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKG1fZW5jb2Rlci5idWZmZXIoKSwgbV9lbmNvZGVyLmJ1ZmZlclNpemUoKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmgKaW5kZXggNTgwNTgzYjgzODEwZWRl
NWQyYzljNjVhODM5M2IzMjZkODdiMjc0Ny4uZWNmNGUwOGM5Yjk5MWFkZTI3M2JkNDRjNjBiYjE1
ZmUwMTYzNWIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJp
Yy9LZXllZEVuY29kZXJHZW5lcmljLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBLZXllZEVuY29kZXJHZW5lcmljIGZpbmFsIDogcHVibGljIEtleWVkRW5j
b2RlciB7CiBwdWJsaWM6CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiBwcml2
YXRlOgotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygp
IG92ZXJyaWRlOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSBvdmVycmlkZTsKICAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3Ry
aW5nJiBrZXksIGJvb2wpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKaW5kZXggZTZkNzhkNTI4M2VmOGU1M2M3YmRiMGJi
ODA0ZTllMjdlMTBhMTc5My4uNzBkMjRjMTE5M2Y4ZTVjNzBkMWQzOTg3YzVlMDA5OGNiNmMwMGJm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJH
bGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rlckds
aWIuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckdsaWI6OmVuZEFy
cmF5KCkKICAgICBtX2FycmF5U3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi1SZWZQdHI8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQorUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2xpYjo6ZmluaXNoRW5jb2RpbmcoKQogewog
ICAgIGdfYXNzZXJ0KG1fdmFyaWFudEJ1aWxkZXJTdGFjay5sYXN0KCkgPT0gJm1fdmFyaWFudEJ1
aWxkZXIpOwogICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZhcmlhbnQgPSBnX3ZhcmlhbnRfYnVpbGRl
cl9lbmQoJm1fdmFyaWFudEJ1aWxkZXIpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRhID0gZ192
YXJpYW50X2dldF9kYXRhX2FzX2J5dGVzKHZhcmlhbnQuZ2V0KCkpOwotICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hh
cio+KGdfYnl0ZXNfZ2V0X2RhdGEoZGF0YS5nZXQoKSwgbnVsbHB0cikpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZ19ieXRlc19nZXRfc2l6ZShkYXRhLmdldCgpKSkpOworICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRl
c19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihn
X2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVy
R2xpYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgK
aW5kZXggY2UxMzY0OTZjNGUxM2VhYzE0OWVhNjE4OTVjNTQxNDBmZmQ1OTZmNy4uZTU2NDJiY2Y2
NzBjZTI1OTlmYzA0ZGY3MjllMmI0YzFmODIxMWYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGlj
OgogICAgIH5LZXllZEVuY29kZXJHbGliKCk7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgZmluYWw7CisgICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKIAog
ICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpIGZpbmFsOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9v
bCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJl
ZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZm
ZXJHbGliLmNwcAppbmRleCA4N2Q3ODRiYzY2NTE4ZmFiMjZiMzQ2NjNhNDY0NDAwOTNkZTI3MThi
Li41MDEyNTlkYjg0ODQ3ODkxZmE3ZjY3ZWFmYzA4YTgzMGUwMTNlZTNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAgLTI2LDI0
ICsyNiwyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKEdCeXRlcyogYnl0ZXMpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKEdCeXRlcyogYnl0ZXMpCiB7CiAgICAgQVNTRVJUKGJ5dGVzKTsKICAgICBt
X3NpemUgPSBnX2J5dGVzX2dldF9zaXplKGJ5dGVzKTsKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7
IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoR1JlZlB0cjxHQnl0ZXM+KGJ5dGVzKSkgfSk7CiB9CiAK
LVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdCeXRlcyogYnl0ZXMpCitS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KEdCeXRlcyogYnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVy
KGJ5dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cihieXRlcykpOwogfQogCi1HUmVmUHRyPEdCeXRlcz4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlR0J5dGVzKCkgY29uc3QKK0dSZWZQdHI8R0J5dGVzPiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZUdCeXRlcygpIGNvbnN0CiB7CiAgICAgcmVmKCk7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVz
ID0gYWRvcHRHUmVmKGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBb
XShncG9pbnRlciBkYXRhKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKLSAgICB9LCBjb25zdF9jYXN0PENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIqPih0aGlzKSkpOworICAgICAgICBzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPihk
YXRhKS0+ZGVyZWYoKTsKKyAgICB9LCBjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7
CiAgICAgcmV0dXJuIGJ5dGVzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwCmluZGV4IDEyNTg2MmU3MmE5ZjlkODY5NmNlMTZjYWNmZjZiZjcyMDdiNDVjZTQu
LjRlOTQ5ZGZhYjk3NjVhMmEwN2M0ODc4YWJlZTEwM2ZiYWYyMWY1NzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC02Myw3ICs2Myw3IEBAIFJlZjxGb250
PiBGb250OjpjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBPcmln
aW4gb3JpZ2luLCBJbnRlCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9udChwbGF0Zm9ybURh
dGEsIG9yaWdpbiwgaW50ZXJzdGl0aWFsLCB2aXNpYmlsaXR5LCBvcmllbnRhdGlvbkZhbGxiYWNr
LCBpZGVudGlmaWVyKSk7CiB9CiAKLVJlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4gb3JpZ2luLCBmbG9h
dCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYykKK1Jl
ZjxGb250PiBGb250OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZv
bnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJv
b2wgc3ludGhldGljSXRhbGljKQogewogICAgIGJvb2wgd3JhcHBpbmc7CiAgICAgYXV0byBjdXN0
b21Gb250RGF0YSA9IENhY2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKGZvbnRGYWNlRGF0
YS5nZXQoKSwgeyB9LCB3cmFwcGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250LmgKaW5kZXggNGM1YzhhMzk2MzNhMDY0Nzg5OGI1MmEzOTQ1MjVmYjFhZmIxMmU4YS4uODJl
YmE3M2JhYzRjNzZmZWEwYmI2MGViYTQ0MzY4MmQyMmM3ZmUxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtNTksNyArNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBGb250Q2FjaGU7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBHbHlw
aFBhZ2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBzdHJ1Y3QgR2x5cGhEYXRhOwogCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICBl
bnVtIGNsYXNzIFZpc2liaWxpdHkgOiBib29sIHsgVmlzaWJsZSwgSW52aXNpYmxlIH07CiAgICAg
ZW51bSBjbGFzcyBPcmllbnRhdGlvbkZhbGxiYWNrIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1E
YXRhJiwgT3JpZ2luID0gT3JpZ2luOjpMb2NhbCwgSW50ZXJzdGl0aWFsID0gSW50ZXJzdGl0aWFs
OjpObywgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJh
Y2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFj
ZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwg
Ym9vbCBzeW50aGV0aWNJdGFsaWMpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9u
dD4gY3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZm9udEZhY2VEYXRhLCBGb250OjpPcmlnaW4s
IGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGlj
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRleCBlMjM4NGI5ZWU0
ZWNlNjAxZWVkN2E0YzBiM2RiZGY5OGJlOTUzMDkzLi5mYmJjY2M0MzY4NDQ3NDkwODNjZTg5MWYz
NjNmNmNjNDBmMjk3NDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC0yMjMsMTMgKzIyMywxMyBAQCBwdWJsaWM6CiAj
ZW5kaWYKICAgICB9CiAKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gb3BlblR5
cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3Q7Cisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29u
c3Q7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQz
Ml90IHRhYmxlKSBjb25zdDsKIAogICAgIFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OwogCiAg
ICAgc3RydWN0IENyZWF0aW9uRGF0YSB7Ci0gICAgICAgIFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBmb250RmFjZURhdGE7CisgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0
YTsKICAgICAgICAgU3RyaW5nIGl0ZW1JbkNvbGxlY3Rpb247CiAjaWYgUExBVEZPUk0oV0lOKQog
ICAgICAgICBSZWY8Rm9udE1lbW9yeVJlc291cmNlPiBtX2ZvbnRSZXNvdXJjZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAKaW5kZXgg
Njc1ZTI0YjQwYWM3YWFkZTc0MDg2ZjI0MmVhZDAxNTIyMWMwMjRmYy4uMmNmNDQ4YmVhMmZhNmFl
NGQ0N2Y5NjQwMDJiM2E5MDZjMDEyOTA2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgU3RyaW5n
IGNyZWF0ZUFWQ0NvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25zdCBBVkNQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQogICAgICAgICAsIGhleChwYXJhbWV0ZXJzLmxldmVsSURDLCAyKSk7CiB9CiAKLXN0
ZDo6b3B0aW9uYWw8QVZDUGFyYW1ldGVycz4gcGFyc2VBVkNEZWNvZGVyQ29uZmlndXJhdGlvblJl
Y29yZChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFs
PEFWQ1BhcmFtZXRlcnM+IHBhcnNlQVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSVNPL0lFQyAxNDQ5Ni0xMDoyMDE0CiAg
ICAgLy8gNy4zLjIuMS4xIFNlcXVlbmNlIHBhcmFtZXRlciBzZXQgZGF0YSBzeW50YXgKQEAgLTI1
NSw3ICsyNTUsNyBAQCBTdHJpbmcgY3JlYXRlSEVWQ0NvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25z
dCBIRVZDUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICAgICAgLCBjb21wYXRpYmlsaXR5Rmxh
Z3MudG9TdHJpbmcoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNl
SEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IEZvdXJDQyYgY29kZWNDb2RlLCBj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPEhFVkNQ
YXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBGb3Vy
Q0MmIGNvZGVjQ29kZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSVNP
L0lFQyAxNDQ5Ni0xNToyMDE0CiAgICAgLy8gOC4zLjMuMSBIRVZDIGRlY29kZXIgY29uZmlndXJh
dGlvbiByZWNvcmQKQEAgLTQzNiw3ICs0MzYsNyBAQCBzdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0
ZXJzPiBwYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBjb2RlY1ZpZXcpCiAgICAg
cmV0dXJuIHBhcmFtZXRlcnM7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBh
cnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaURl
Y29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIC8vIFRoZSBmb3JtYXQgb2YgdGhlIERvVmkgQ29uZmlndXJhdGlvbiBSZWNvcmQgaXMgY29u
dGFpbmVkIGluICJEb2xieSBWaXNpb24gU3RyZWFtcyBXaXRoaW4KICAgICAvLyB0aGUgSVNPIEJh
c2UgTWVkaWEgRmlsZSBGb3JtYXQsIFZlcnNpb24gMi4wIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5oCmluZGV4IGVkZmVjYjI2ZDg5NDY3YTIz
ZDFmNTcxY2JjNWU5MWIyZmEzNDc4NWMuLjNmNTAxMDM0MTRmYjVlY2FkMmI4MmE3YWY5MWU0YTNj
YTI0NTY2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hF
VkNVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZD
VXRpbGl0aWVzLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogc3RydWN0
IEZvdXJDQzsKIAogc3RydWN0IEFWQ1BhcmFtZXRlcnMgewpAQCAtNDEsNyArNDEsNyBAQCBzdHJ1
Y3QgQVZDUGFyYW1ldGVycyB7CiB9OwogCiBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEFW
Q1BhcmFtZXRlcnM+IHBhcnNlQVZDQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcpOwotV0VCQ09S
RV9FWFBPUlQgc3RkOjpvcHRpb25hbDxBVkNQYXJhbWV0ZXJzPiBwYXJzZUFWQ0RlY29kZXJDb25m
aWd1cmF0aW9uUmVjb3JkKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKK1dFQkNPUkVf
RVhQT1JUIHN0ZDo6b3B0aW9uYWw8QVZDUGFyYW1ldGVycz4gcGFyc2VBVkNEZWNvZGVyQ29uZmln
dXJhdGlvblJlY29yZChjb25zdCBTaGFyZWRCdWZmZXImKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBjcmVhdGVBVkNDb2RlY1BhcmFtZXRlcnNTdHJpbmcoY29uc3QgQVZDUGFyYW1ldGVycyYpOwog
CiBzdHJ1Y3QgSEVWQ1BhcmFtZXRlcnMgewpAQCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3QgSEVWQ1Bh
cmFtZXRlcnMgewogfTsKIAogV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxIRVZDUGFyYW1l
dGVycz4gcGFyc2VIRVZDQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcpOwotV0VCQ09SRV9FWFBP
UlQgc3RkOjpvcHRpb25hbDxIRVZDUGFyYW1ldGVycz4gcGFyc2VIRVZDRGVjb2RlckNvbmZpZ3Vy
YXRpb25SZWNvcmQoY29uc3QgRm91ckNDJiwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYp
OworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxIRVZDUGFyYW1ldGVycz4gcGFyc2VIRVZD
RGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgRm91ckNDJiwgY29uc3QgU2hhcmVkQnVm
ZmVyJik7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY3JlYXRlSEVWQ0NvZGVjUGFyYW1ldGVyc1N0
cmluZyhjb25zdCBIRVZDUGFyYW1ldGVycyYpOwogCiBzdHJ1Y3QgRG9WaVBhcmFtZXRlcnMgewpA
QCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3QgRG9WaVBhcmFtZXRlcnMgewogfTsKIAogV0VCQ09SRV9F
WFBPUlQgc3RkOjpvcHRpb25hbDxEb1ZpUGFyYW1ldGVycz4gcGFyc2VEb1ZpQ29kZWNQYXJhbWV0
ZXJzKFN0cmluZ1ZpZXcpOwotV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxEb1ZpUGFyYW1l
dGVycz4gcGFyc2VEb1ZpRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxEb1ZpUGFyYW1l
dGVycz4gcGFyc2VEb1ZpRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY3JlYXRlRG9WaUNvZGVjUGFyYW1ldGVyc1N0
cmluZyhjb25zdCBEb1ZpUGFyYW1ldGVycyYpOwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggNGE4NTNlYjY0OTUzZDRhZTQ4MzRmODdjNTQ4N2Fj
ZDM2NGM1N2Q4MS4uZTMyYTM2YzYwNzYxOTIxNjhjNmEzNzkzMThmNzhhZTE3ODljNDgyZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMTA0LDcgKzEw
NCw3IEBAIGJvb2wgSW1hZ2U6OmlzUG9zdFNjcmlwdFJlc291cmNlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFVSTCYgdXJsKQogfQogCiAKLUVuY29kZWREYXRhU3RhdHVzIEltYWdlOjpz
ZXREYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CitFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZTo6c2V0RGF0YShSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBtX2VuY29kZWRJ
bWFnZURhdGEgPSBXVEZNb3ZlKGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaAppbmRleCA2YTA4MTY5NTdhYTkzYzQxMWE1NmNkNGMyYmMyMGRkNmQ5MDQ0ZGVj
Li42NTVkZmU3M2NmZjZhZDFkMDRmNDhiYzIwMTllYmI4MDQxN2Q2MTM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTcwLDcgKzcwLDcgQEAgY2xhc3MgQWZm
aW5lVHJhbnNmb3JtOwogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNz
IEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiBzdHJ1Y3QgTGVuZ3RoOwogCiAvLyBUaGlzIGNsYXNzIGdldHMgbm90aWZp
ZWQgd2hlbiBhbiBpbWFnZSBjcmVhdGVzIG9yIGRlc3Ryb3lzIGRlY29kZWQgZnJhbWVzIGFuZCB3
aGVuIGl0IGFkdmFuY2VzIGFuaW1hdGlvbiBmcmFtZXMuCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0
IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIHZpcnR1YWwgSW1hZ2VPcmllbnRhdGlvbiBv
cmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZTsg
fQogCi0gICAgV0VCQ09SRV9FWFBPUlQgRW5jb2RlZERhdGFTdGF0dXMgc2V0RGF0YShSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBFbmNvZGVkRGF0YVN0YXR1cyBzZXREYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2aXJ0dWFsIEVuY29k
ZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2VkKGJvb2wgLyphbGxEYXRhUmVjZWl2ZWQqLykgeyByZXR1
cm4gRW5jb2RlZERhdGFTdGF0dXM6OlVua25vd247IH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIHV0
aSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9IC8vIG51bGwgc3RyaW5nIGlmIHVua25vd24K
QEAgLTEzMyw4ICsxMzMsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveURl
Y29kZWREYXRhKGJvb2wgZGVzdHJveUFsbCA9IHRydWUpID0gMDsKIAotICAgIFNoYXJlZEJ1ZmZl
ciogZGF0YSgpIHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQotICAgIGNvbnN0
IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5n
ZXQoKTsgfQorICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSB7IHJldHVybiBtX2Vu
Y29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CiAKICAg
ICB2aXJ0dWFsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCk7CiAKQEAgLTIwOSw3
ICsyMDksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBDb2xvciBzaW5nbGVQaXhlbFNvbGlk
Q29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvcigpOyB9CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVkSW1hZ2VEYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBtX2VuY29kZWRJbWFnZURhdGE7CiAgICAgSW1hZ2VPYnNlcnZlciogbV9p
bWFnZU9ic2VydmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcj4gbV9hbmltYXRpb25TdGFy
dFRpbWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4IDRkZGI2ZGY4M2VjYjhiOWI3OTU3ZjQ2NjRlMTg0ZjAw
ODFlODEwMTEuLmRlMzNmMWFmNDEyZGMwOGIyYjk2MWExOTQ5NDVjOWNjOTBhYTY2MjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3Jl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3Rv
cmUuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAgICAgYnVmZmVyLmdyb3coYnVmZmVyU2l6ZSk7Ci0gICAgICAgIG1fcGl4ZWxzID0g
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAg
ICAgIG1fcGl4ZWxzID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0
ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDMyX3QqPihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAg
ICAgICAgIG1fc2l6ZSA9IHNpemU7CiAgICAgICAgIG1fZnJhbWVSZWN0ID0gSW50UmVjdChJbnRQ
b2ludCgpLCBtX3NpemUpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHByaXZhdGU6CiAgICAgewogICAg
ICAgICBBU1NFUlQoIW1fc2l6ZS5pc0VtcHR5KCkgJiYgIWlzT3ZlclNpemUobV9zaXplKSk7CiAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIgeyBvdGhlci5tX3BpeGVscy0+ZGF0YSgpLCBv
dGhlci5tX3BpeGVscy0+c2l6ZSgpIH07Ci0gICAgICAgIG1fcGl4ZWxzID0gU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1fcGl4ZWxz
ID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1
ZmZlcikpOwogICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Qq
Pihjb25zdF9jYXN0PHVpbnQ4X3QqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgfQogCkBAIC0y
MzMsNyArMjMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIFBhY2tlZENvbG9yOjpBUkdC
IHsgcmVzdWx0IH0udmFsdWU7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+IG1fcGl4ZWxzOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudD4gbV9waXhlbHM7CiAgICAgdWludDMyX3QqIG1fcGl4ZWxzUHRyIHsgbnVsbHB0
ciB9OwogICAgIEludFNpemUgbV9zaXplOwogICAgIEludFJlY3QgbV9mcmFtZVJlY3Q7IC8vIFRo
aXMgd2lsbCBhbHdheXMganVzdCBiZSB0aGUgZW50aXJlIGJ1ZmZlciBleGNlcHQgZm9yIEdJRiBh
bmQgUE5HIGZyYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRGVjb2Rlci5jcHAKaW5kZXggMDg2OWU5OWEwMDg4NmY3Y2QxMjE4NmZlMzE2MWRlMDQ3ZmE1
MTM2MS4uN2M1NDk0N2Y0ZDgxNDA4NTU5Y2M0NWM0YWM0OWExOWI5ZmM4NmY5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwCkBAIC04
Miw3ICs4Miw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyOjpjbGVhckZhY3RvcmllcygpCiB9CiAjZW5k
aWYKIAotUmVmUHRyPEltYWdlRGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
CitSZWZQdHI8SW1hZ2VEZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCiB7CiAgICAgVU5VU0VEX1BBUkFNKG1pbWVUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRleCBhMWEwOGFkYzE3NWQ0
NGJhYTQ0MmU0NGE5NGFhOTY3YTA0ZjVmNjA3Li42YThmZmNiNjBmYzExNTZlYjg0ODc2ZGVmYjA3
Y2JjMGIxMTk4NDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZURlY29kZXIuaApAQCAtMzcsMTIgKzM3LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgSW1hZ2VEZWNvZGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlRGVj
b2Rlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRp
YyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAog
ICAgIGVudW0gY2xhc3MgTWVkaWFUeXBlIHsKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICB1c2luZyBTdXBwb3J0c01lZGlhVHlwZUZ1bmMgPSBG
dW5jdGlvbjxib29sKE1lZGlhVHlwZSk+OwogICAgIHVzaW5nIENhbkRlY29kZVR5cGVGdW5jID0g
RnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT47Ci0gICAgdXNpbmcgQ3JlYXRlSW1hZ2VEZWNv
ZGVyRnVuYyA9IEZ1bmN0aW9uPFJlZlB0cjxJbWFnZURlY29kZXI+KFNoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik+Owor
ICAgIHVzaW5nIENyZWF0ZUltYWdlRGVjb2RlckZ1bmMgPSBGdW5jdGlvbjxSZWZQdHI8SW1hZ2VE
ZWNvZGVyPihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKT47CiAKICAgICBzdHJ1Y3QgSW1hZ2VEZWNv
ZGVyRmFjdG9yeSB7CiAgICAgICAgIFN1cHBvcnRzTWVkaWFUeXBlRnVuYyBzdXBwb3J0c01lZGlh
VHlwZTsKQEAgLTEyOSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQbGF0Zm9ybUlt
YWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9
IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNv
ZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpID0gMDsKIAogICAgIHZpcnR1
YWwgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXpl
X3QpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuY3BwCmluZGV4IGQ4MWM0ODAxOTI4NDZkZDdlMzIxYzJkZmJmYmYxZTBjMjBkYWE2NzEu
LjMwNzc0MzMxNWE0MWVjYTFjOWIyYmM3NzNkMDc5ZWU1ZDQzYmFmNjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTcyLDcgKzcy
LDcgQEAgSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJjZSgpCiAgICAgQVNTRVJUKCZtX3J1bkxvb3Ag
PT0gJlJ1bkxvb3A6OmN1cnJlbnQoKSk7CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmVuc3VyZURl
Y29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRhKQorYm9vbCBJbWFnZVNvdXJjZTo6ZW5z
dXJlRGVjb2RlckF2YWlsYWJsZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAg
IGlmICghZGF0YSB8fCBpc0RlY29kZXJBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC05Niw3ICs5Niw3IEBAIGJvb2wgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFi
bGUoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEltYWdl
U291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
Cit2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmICghZGF0YSB8fCAhZW5zdXJlRGVjb2Rl
ckF2YWlsYWJsZShkYXRhKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA0LDEzICsxMDQsMTMgQEAg
dm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQogICAgIG1fZGVjb2Rlci0+c2V0RGF0YSgqZGF0YSwgYWxsRGF0YVJlY2VpdmVk
KTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6cmVzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSkK
K3ZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRh
KQogewogICAgIG1fZGVjb2RlciA9IG51bGxwdHI7CiAgICAgc2V0RGF0YShkYXRhLCBpc0FsbERh
dGFSZWNlaXZlZCgpKTsKIH0KIAotRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VTb3VyY2U6OmRhdGFD
aGFuZ2VkKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCitFbmNvZGVk
RGF0YVN0YXR1cyBJbWFnZVNvdXJjZTo6ZGF0YUNoYW5nZWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgc2V0RGF0YShkYXRhLCBhbGxE
YXRhUmVjZWl2ZWQpOwogICAgIGNsZWFyTWV0YWRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IDhhZjUwODBhMDBhOTkxNjA4MGYx
ZjBiMjc3MDczYzJhODUzNDUyNTguLjgxNGYwZTEyZWJhYTQ4Zjg2YWNiNTIxOTczYzMxZDVkMzgy
ZjZmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCaXRtYXBJ
bWFnZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEltYWdlRGVjb2RlcjsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIElt
YWdlU291cmNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlU291cmNlPiwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPEltYWdlU291cmNlPiB7CiAgICAgZnJpZW5kIGNsYXNzIEJpdG1h
cEltYWdlOwpAQCAtNTYsOSArNTYsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEltYWdlU291cmNlKFdURk1vdmUobmF0aXZlSW1hZ2UpKSk7CiAgICAgfQogCi0gICAg
dm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwot
ICAgIHZvaWQgcmVzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSk7Ci0gICAgRW5jb2RlZERhdGFT
dGF0dXMgZGF0YUNoYW5nZWQoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCk7CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2b2lkIHJlc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKiBkYXRhKTsKKyAgICBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgYm9vbCBpc0Fs
bERhdGFSZWNlaXZlZCgpOwogCiAgICAgdW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdCB7IHJl
dHVybiBtX2RlY29kZWRTaXplOyB9CkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFQgZmlyc3RGcmFtZU1ldGFkYXRhQ2FjaGVJZk5lZWRl
ZChUJiBjYWNoZWRWYWx1ZSwgTWV0YWRhdGFUeXBlLCBUIChJbWFnZUZyYW1lOjoqZnVuY3Rvciko
KSBjb25zdCwgSW1hZ2VGcmFtZTo6Q2FjaGluZywgY29uc3Qgc3RkOjpvcHRpb25hbDxTdWJzYW1w
bGluZ0xldmVsPiYgPSB7IH0pOwogCi0gICAgYm9vbCBlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKFNo
YXJlZEJ1ZmZlciogZGF0YSk7CisgICAgYm9vbCBlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpOwogICAgIGJvb2wgaXNEZWNvZGVyQXZhaWxhYmxlKCkg
Y29uc3QgeyByZXR1cm4gbV9kZWNvZGVyOyB9CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEo
c2l6ZV90IGZyYW1lQ291bnQsIHNpemVfdCBleGNsdWRlRnJhbWUpOwogICAgIHZvaWQgZGVjb2Rl
ZFNpemVDaGFuZ2VkKGxvbmcgbG9uZyBkZWNvZGVkU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKaW5kZXggNWFkZTdlZjY5ZTI5YTc3ZjJiODQwOTI5ZTY0
YmUwYzQ0ZTUxNjQzOS4uNTc3YmQ1MDhhNWM0MDlmNGJlOWU0Y2YyMDJiODFlNjFlNDViNDRhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcApAQCAtMzAsMTIg
KzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1vZGVsPiBNb2RlbDo6Y3Jl
YXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwg
VVJMIHVybCkKK1JlZjxNb2RlbD4gTW9kZWw6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGRh
dGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBNb2RlbChXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKG1pbWVUeXBlKSwgV1RGTW92ZSh1cmwpKSk7
CiB9CiAKLU1vZGVsOjpNb2RlbChSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBT
dHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCitNb2RlbDo6TW9kZWwoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBkYXRhLCBTdHJpbmcgbWltZVR5cGUsIFVSTCB1cmwpCiAgICAgOiBtX2RhdGEoV1RGTW92ZShk
YXRhKSkKICAgICAsIG1fbWltZVR5cGUoV1RGTW92ZShtaW1lVHlwZSkpCiAgICAgLCBtX3VybChX
VEZNb3ZlKHVybCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaAppbmRl
eCA5MTU2MGFlODhmYTY0YzJhMGMxMDAxNDE0ZjMyNDFjZTAwNTZhMWY0Li5lNmJkZTE2NmY5NDRj
ZGU3ZGIzMjhjMjk3NmVjNjgyYWRiNmQxMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01vZGVsLmgKQEAgLTM4LDEwICszOCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIE1vZGVsIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kZWw+IHsKIHB1YmxpYzoK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPE1vZGVsPiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIH5Nb2RlbCgpOwogCi0gICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgCkBAIC00OSw5ICs0OSw5IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPE1vZGVsPiBkZWNv
ZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1vZGVsKFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CisgICAgZXhwbGljaXQgTW9kZWwoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOwogCi0gICAgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgU3Ry
aW5nIG1fbWltZVR5cGU7CiAgICAgVVJMIG1fdXJsOwogfTsKQEAgLTkzLDcgKzkzLDcgQEAgUmVm
UHRyPE1vZGVsPiBNb2RlbDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCF1cmwp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1l
VHlwZSksIFdURk1vdmUoKnVybCkpOworICAgIHJldHVybiBNb2RlbDo6Y3JlYXRlKFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpLCBXVEZNb3ZlKCptaW1lVHlwZSksIFdURk1vdmUo
KnVybCkpOwogfQogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
V1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVy
LmgKaW5kZXggNzQ1OWM1ODU4ZDI0ODdlZjJjNWZkMzcxNzM5ODZiMzM3MzRlYzI4YS4uODg2OTFk
YzI1NmQ2ZGQ2YzQ1ZjQ2ZTAxNTQ5Njc0MjQ1YWEzNTMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyLmgKQEAgLTUxLDggKzUxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWRp
cmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
c291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHJlcXVlc3QpKTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNoZVJlc3Bv
bnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIC8vIFRo
aXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQg
dXNlcyBTaGFyZWRCdWZmZXIuCisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgeyBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIGJlIHJl
bW92ZWQgb25jZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB1c2VzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIuCiAgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmIHBsYXRmb3JtLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IGRhdGFSZWNl
aXZlZChwbGF0Zm9ybSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZh
aWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQ
cml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZl
clByaXZhdGUuY3BwCmluZGV4IDU0OTlmMzdhN2YzNjQ2YmQ1ZjM5NWE0OGIwOWQ5NDExZDRjOWI2
NjQuLmQzZTFiNTgwNGU4NWE5OTExY2YyMGZjZWQzNGJmMjU1YTMxNDQzNGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZh
dGUuY3BwCkBAIC0xMzE4LDcgKzEzMTgsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmRp
ZFJlY2VpdmVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmIG9yaWdpbmFsU2FtcGxlKQogICAgIHVw
ZGF0ZUhpZ2hlc3RQcmVzZW50YXRpb25UaW1lc3RhbXAoKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlOjphcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGU6OmFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7CiAgICAgYXBwZW5kKGJ1ZmZlci0+ZXh0cmFjdERhdGEoKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgK
aW5kZXggZWY4NmE0NzM2OTM3MWM4M2U4ODNiMjliYmI2YjlhYjk2ZWNhNWYxZC4uNmI3ZDk1ZTUy
YjlkZjBjODFhZjNiZTFkNmQ5ZjNjOGVkMzk1NDE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtNDksNyAr
NDksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBUaW1lUmFuZ2VzOwogCiBlbnVtIGNs
YXNzIFNvdXJjZUJ1ZmZlckFwcGVuZE1vZGUgOiB1aW50OF90IHsKQEAgLTY4LDcgKzY4LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclByaXZhdGUo
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCkgPSAwOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBhcHBlbmQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJik7CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBy
ZXNldFBhcnNlclN0YXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbU1lZGlh
U291cmNlKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvV09GRkZpbGVGb3JtYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
V09GRkZpbGVGb3JtYXQuY3BwCmluZGV4IGEwZTczYjNmM2ViY2IzYzc4MGZlMzUxZTlkNmE4MGI2
ZmI5MDU1YjQuLmIzN2ViZmM1NjIwNDhmZTZkNzk0MWQyZTVjYzFiY2ExZGMxNTcxYzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5j
cHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90IGtXb2ZmMlNpZ25hdHVy
ZSA9IDB4Nzc0ZjQ2MzI7IC8vICJ3T0YyIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBib29sIHJlYWRVSW50MzIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3Qm
IG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQorc3RhdGljIGJvb2wgcmVhZFVJbnQzMihTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90JiB2YWx1ZSkKIHsKICAgICBB
U1NFUlRfQVJHKG9mZnNldCwgb2Zmc2V0IDw9IGJ1ZmZlci5zaXplKCkpOwogICAgIGlmIChidWZm
ZXIuc2l6ZSgpIC0gb2Zmc2V0IDwgc2l6ZW9mKHZhbHVlKSkKQEAgLTQ5LDcgKzQ5LDcgQEAgc3Rh
dGljIGJvb2wgcmVhZFVJbnQzMihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVf
dCYgb2Zmc2V0LCB1aW50MzJfdCYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wg
cmVhZFVJbnQxNihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0
LCB1aW50MTZfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDE2KFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDE2X3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9B
Ukcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXpl
KCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgYm9v
bCB3cml0ZVVJbnQxNihWZWN0b3I8dWludDhfdD4mIHZlY3RvciwgdWludDE2X3QgdmFsdWUpCiAK
IHN0YXRpYyBjb25zdCB1aW50MzJfdCB3b2ZmU2lnbmF0dXJlID0gMHg3NzRmNDY0NjsgLyogJ3dP
RkYnICovCiAKLWJvb2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jv
b2wgaXNXT0ZGKFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHNpemVfdCBvZmZzZXQgPSAw
OwogICAgIHVpbnQzMl90IHNpZ25hdHVyZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2YXRlOgog
fTsKICNlbmRpZgogCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKK2Jvb2wgY29udmVydFdPRkZUb1NmbnQo
U2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQpCiB7CiAgICAgQVNTRVJU
X0FSRyhzZm50LCBzZm50LmlzRW1wdHkoKSk7CiAKQEAgLTI4Myw3ICsyODMsNyBAQCBib29sIGNv
bnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50
OF90PiYgc2ZudCkKICAgICByZXR1cm4gc2ZudC5zaXplKCkgPT0gdG90YWxTZm50U2l6ZTsKIH0K
IAotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYgYnVmZmVyKQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
VU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0yOTQsNyArMjk0LDcgQEAgYm9vbCBjb252ZXJ0V09G
RlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVy
KQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRlZEZvbnQ7CiAgICAgaWYgKGNvbnZlcnRX
T0ZGVG9TZm50KCpidWZmZXIsIGNvbnZlcnRlZEZvbnQpKQotICAgICAgICBidWZmZXIgPSBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CisgICAg
ICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udCkp
OwogICAgIGVsc2UKICAgICAgICAgYnVmZmVyID0gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgKaW5kZXggNzhhYzRhN2Fm
ZmY0ZDRiZWU5ZmQwMmNhYmU3YTk4ZjJmZTdkZGU4Mi4uM2Q1NzAxMDdmMjhmODU0NDc0MWUzNDk1
YzAxNjA3ZTRkZTkwMmQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvV09GRkZpbGVGb3JtYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9XT0ZGRmlsZUZvcm1hdC5oCkBAIC0zMCwxOSArMzAsMTkgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVm
ZmVyOwogCiAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZS4KLWJv
b2wgaXNXT0ZGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKTsKK2Jvb2wgaXNXT0ZGKFNoYXJlZEJ1
ZmZlciYpOwogCiAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSBXT0ZGIGZpbGUgd29mZiBpcyBpbnZh
bGlkIG9yIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gc2ZudCAoZm9yIGV4YW1wbGUsCiAvLyBp
ZiBjb252ZXJzaW9uIHJhbiBvdXQgb2YgbWVtb3J5KS4gT3RoZXJ3aXNlIHJldHVybnMgdHJ1ZSBh
bmQgd3JpdGVzIHRoZSBzZm50IHBheWxvYWQgaW50byBzZm50LgotYm9vbCBjb252ZXJ0V09GRlRv
U2ZudChDb250aWd1b3VzU2hhcmVkQnVmZmVyJiB3b2ZmLCBWZWN0b3I8dWludDhfdD4mIHNmbnQp
OworYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50
OF90PiYgc2ZudCk7CiAKIC8vIElmIHRoZSBnaXZlbiBidWZmZXIgaXMgYSBXT0ZGIGZpbGUgYW5k
IHRoZSBjdXJyZW50IHBsYXRmb3JtIGhhcyBubyBuYXRpdmUgc3VwcG9ydCBmb3IgV09GRgogLy8g
Zm9udHMsIGNvbnZlcnQgaXQgdG8gc2ZudC4gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBidWZm
ZXIgd2FzIGNvbnZlcnRlZC4gSWYgY29udmVyc2lvbiBmYWlscywKIC8vIHRoZSBidWZmZXIgd2ls
bCBiZSBzZXQgdG8gbnVsbHB0ci4KLWJvb2wgY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKK2Jvb2wgY29udmVydFdPRkZUb1NmbnRJ
Zk5lY2Vzc2FyeShSZWZQdHI8U2hhcmVkQnVmZmVyPiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IGQ3
YzAxM2Q1NGUzZGVkMDc4NTQ5MDI4ZDUxZDZlMDI4Yzk3NTA3YzYuLjhiMDRmOWJlOTZjMzZlMGEy
NjIxODBhMjVlYTM3NDU5NjJiM2Q3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmNwcApAQCAtODYsNyArODYsNyBAQCBjb25zdCBBdG9tU3RyaW5nJiBDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNrZE5hbWUoKQogICAgIHJldHVybiBza2Q7CiB9CiAKLXN0
YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIC8vIEpTT04gb2YgdGhlIGZvcm1hdDogInsgc2luZjogWyA8YmFzZTY0LWVuY29k
ZWQtc3RyaW5nPiBdIH0iCiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkpCkBAIC0xMDUsNyArMTA1LDcgQEAgc3RhdGljIFZlY3RvcjxS
ZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogICAgIGlmICghc2luZkFycmF5KQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBzaW5mczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiBzaW5mczsKICAgICBzaW5mcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNp
bmZBcnJheS0+bGVuZ3RoKCkpOwogCiAgICAgZm9yIChhdXRvJiB2YWx1ZSA6ICpzaW5mQXJyYXkp
IHsKQEAgLTEyNCw3ICsxMjQsNyBAQCBzdGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBl
eHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB9CiAKIHVzaW5nIFNj
aGVtZUFuZEtleVJlc3VsdCA9IFZlY3RvcjxzdGQ6OnBhaXI8Rm91ckNDLCBWZWN0b3I8dWludDhf
dD4+PjsKLXN0YXRpYyBTY2hlbWVBbmRLZXlSZXN1bHQgZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJv
bVNpbmYoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgU2NoZW1lQW5kS2V5UmVz
dWx0IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGJ1ZmZlcnMgPSBleHRyYWN0U2luZkRhdGEoYnVm
ZmVyKTsKICAgICBpZiAoIWJ1ZmZlcnMuc2l6ZSgpKQpAQCAtMTcwLDkgKzE3MCw5IEBAIHN0YXRp
YyBTY2hlbWVBbmRLZXlSZXN1bHQgZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJvbVNpbmYoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RkOjpvcHRpb25h
bDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OmV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQ
bGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7Cisg
ICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwogICAgIGF1dG8g
cmVzdWx0cyA9IGV4dHJhY3RTY2hlbWVBbmRLZXlJZEZyb21TaW5mKGJ1ZmZlcik7CiAKICAgICBm
b3IgKGF1dG8mIHJlc3VsdCA6IHJlc3VsdHMpIHsKQEAgLTE4Myw3ICsxODMsNyBAQCBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6ZXh0cmFjdEtleQogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVTaW5mKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBDb21tb24gU0lORiBCb3ggRm9ybWF0CiAgICAg
VU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0xOTEsMTcgKzE5MSwxNyBAQCBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihjb25zdCBT
aGFyZWRCdWZmZQogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2tkKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwogICAgIG5vdElt
cGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAKLXN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpleHRyYWN0S2V5SURzU2tkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQ
bGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICAvLyBJbiB0aGUgJ3NrZCcgc2NoZW1lLCB0aGUgaW5pdCBkYXRh
IGlzIHRoZSBrZXkgSUQuCi0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7Cisg
ICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwogICAgIGtleUlE
cy5hcHBlbmQoYnVmZmVyLmNvcHkoKSk7CiAgICAgcmV0dXJuIGtleUlEczsKIH0KQEAgLTM5Myw3
ICszOTMsNyBAQCBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNTZXNz
aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZUZhaXJQ
bGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0
CiB7CiAgICAgaWYgKCF2YWxpZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjMsNyArNDIzLDcgQEAgYm9vbCBDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+
IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFy
ZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICByZXR1cm4gcmVzcG9u
c2UuY29weSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAppbmRl
eCBiYzkzZjZmNmE3YmRkMDFlZmJmNTViNjJiZGI2YTRlNjZlZjkxMmIzLi4zMTdiYjhkNTdlODZj
MDYyMTRlMGI0MDU5ZGRmNGY4ODA3Yzc0YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBs
YXlTdHJlYW1pbmcuaApAQCAtNzEsMTcgKzcxLDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRB
bmRJbml0aWFsaXplKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmlj
YXRlcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0
IG92ZXJyaWRlOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwg
Y29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0
aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGlj
IGNvbnN0IEF0b21TdHJpbmcmIHNpbmZOYW1lKCk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgU2hhcmVk
QnVmZmVyJik7Ci0gICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplU2luZihj
b25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAg
IHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBza2ROYW1lKCk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NrZChjb25zdCBT
aGFyZWRCdWZmZXImKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVT
a2QoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTa2QoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAg
ICAgc3RhdGljIGNvbnN0IFZlY3RvcjxGb3VyQ0M+JiB2YWxpZEZhaXJQbGF5U3RyZWFtaW5nU2No
ZW1lcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vRm9ybWF0RGVzY3JpcHRpb25VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0Zvcm1hdERlc2NyaXB0aW9uVXRpbGl0
aWVzLmNwcAppbmRleCA5YmFiOTUwNDU5MTBmODFkN2E4NDk4OTI5NzdkNzkzOTAyMTA4MWVlLi5j
Y2ZkNGFlYTIzYTdkNzY4ZjllYjIwN2Y1ZDI4ZWM4NzQ4ODNlMTdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vRm9ybWF0RGVzY3JpcHRp
b25VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlwdGlvblV0aWxpdGllcy5jcHAKQEAgLTExMiw3ICsxMTIs
NyBAQCBTdHJpbmcgY29kZWNGcm9tRm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlv
blJlZiBmb3JtYXREZXNjcmlwdGlvbikKICAgICAgICAgICAgIGF1dG8gc2FtcGxlRXh0ZW5zaW9u
cyA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc2FtcGxlRXh0
ZW5zaW9uc0RpY3QsIENGU1RSKCJhdmNDIikpKTsKICAgICAgICAgICAgIGlmICghc2FtcGxlRXh0
ZW5zaW9ucykKICAgICAgICAgICAgICAgICByZXR1cm4gImF2YzEiOwotICAgICAgICAgICAgYXV0
byBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHNhbXBsZUV4dGVuc2lvbnMpOworICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVj
b3JkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7CiAgICAg
ICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBwYXJzZUFWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVj
b3JkKGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIpOwogICAgICAgICAgICAgaWYgKCFwYXJhbWV0
ZXJzKQogICAgICAgICAgICAgICAgIHJldHVybiAiYXZjMSI7CkBAIC0xMjgsNyArMTI4LDcgQEAg
U3RyaW5nIGNvZGVjRnJvbUZvcm1hdERlc2NyaXB0aW9uKENNRm9ybWF0RGVzY3JpcHRpb25SZWYg
Zm9ybWF0RGVzY3JpcHRpb24pCiAgICAgICAgICAgICBhdXRvIHNhbXBsZUV4dGVuc2lvbnMgPSBz
dGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHNhbXBsZUV4dGVuc2lv
bnNEaWN0LCBDRlNUUigiaHZjQyIpKSk7CiAgICAgICAgICAgICBpZiAoIXNhbXBsZUV4dGVuc2lv
bnMpCiAgICAgICAgICAgICAgICAgcmV0dXJuICJodmMxIjsKLSAgICAgICAgICAgIGF1dG8gY29u
ZmlndXJhdGlvblJlY29yZEJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
YW1wbGVFeHRlbnNpb25zKTsKKyAgICAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvblJlY29yZEJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNhbXBsZUV4dGVuc2lvbnMpOwogICAgICAgICAg
ICAgYXV0byBwYXJhbWV0ZXJzID0gcGFyc2VIRVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQo
a0NNVmlkZW9Db2RlY1R5cGVfSEVWQywgY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlcik7CiAgICAg
ICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCiAgICAgICAgICAgICAgICAgcmV0dXJuICJodmMxIjsK
QEAgLTE0Myw3ICsxNDMsNyBAQCBTdHJpbmcgY29kZWNGcm9tRm9ybWF0RGVzY3JpcHRpb24oQ01G
b3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbikKICAgICAgICAgICAgIGF1dG8g
c2FtcGxlRXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUoc2FtcGxlRXh0ZW5zaW9uc0RpY3QsIENGU1RSKCJkdmNDIikpKTsKICAgICAgICAgICAg
IGlmICghc2FtcGxlRXh0ZW5zaW9ucykKICAgICAgICAgICAgICAgICByZXR1cm4gImR2aDEiOwot
ICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHNhbXBsZUV4dGVuc2lvbnMpOworICAgICAgICAgICAgYXV0byBj
b25maWd1cmF0aW9uUmVjb3JkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2FtcGxlRXh0
ZW5zaW9ucyk7CiAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBwYXJzZURvVmlEZWNvZGVy
Q29uZmlndXJhdGlvblJlY29yZChjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyKTsKICAgICAgICAg
ICAgIGlmICghcGFyYW1ldGVycykKICAgICAgICAgICAgICAgICByZXR1cm4gImR2aDEiOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDLmgKaW5kZXggMTU5YjkwY2RiNDhmN2ZlNDRiYjQ5YmUyZWMxYzFjMmY0
MzI4NjQwMC4uNTZiNThjMjVhMjg3MDlmYjM4MjIxODM5ZTU1YmFlNDVlZDkzY2Y2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBJbXBsZW1l
bnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1w
bGVtZW50YXRpb25UeXBlOjpGYWlyUGxheVN0cmVhbWluZzsgfQogCiAgICAgdm9pZCBpbml0aWFs
aXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFs
bG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3ND
YWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFy
ZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJh
Y2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYp
IGZpbmFsOwogICAgIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBm
aW5hbDsKICAgICB2b2lkIHNldENsaWVudChXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50PiYmKSBm
aW5hbDsKQEAgLTk0LDEwICs5NCwxMCBAQCBwdWJsaWM6CiAKICAgICBOU1VSTCAqc3RvcmFnZVVS
TCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZVVSTC5nZXQoKTsgfQogICAgIGJvb2wgcGVyc2lz
dGVudFN0YXRlQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dl
ZDsgfQotICAgIFNoYXJlZEJ1ZmZlciogc2VydmVyQ2VydGlmaWNhdGUoKSBjb25zdCB7IHJldHVy
biBtX3NlcnZlckNlcnRpZmljYXRlLmdldCgpOyB9CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogc2VydmVyQ2VydGlmaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlckNlcnRpZmljYXRl
LmdldCgpOyB9CiAgICAgQVZDb250ZW50S2V5U2Vzc2lvbiogY29udGVudEtleVNlc3Npb24oKTsK
IAotICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiB0YWtlVW5leHBlY3RlZEtleVJl
cXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBTaGFyZWRCdWZmZXImIGluaXREYXRhKTsKKyAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVx
dWVzdD4gdGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERh
dGEpOwogCiAgICAgLy8gQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlQ2xpZW50CiAgICAgdm9p
ZCBkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7CkBAIC0xMTIs
NyArMTEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgb3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmlj
aWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCkgZmluYWw7CiAgICAgdm9pZCBleHRl
cm5hbFByb3RlY3Rpb25TdGF0dXNEaWRDaGFuZ2VGb3JDb250ZW50S2V5UmVxdWVzdChBVkNvbnRl
bnRLZXlSZXF1ZXN0KikgZmluYWw7CiAKLSAgICB1c2luZyBLZXlzID0gVmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+PjsKKyAgICB1c2luZyBLZXlzID0gVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj47CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
KiBzZXNzaW9uRm9yS2V5SURzKGNvbnN0IEtleXMmKSBjb25zdDsKICAgICBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JHcm91cChBVkNvbnRlbnRL
ZXlSZXBvcnRHcm91cCopIGNvbnN0OwogICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCopIGNv
bnN0OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxDRE1JbnN0YW5j
ZUNsaWVudD4gbV9jbGllbnQ7CiAgICAgUmV0YWluUHRyPEFWQ29udGVudEtleVNlc3Npb24+IG1f
c2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUZQU0NvbnRlbnRLZXlTZXNzaW9uRGVsZWdh
dGU+IG1fZGVsZWdhdGU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9zZXJ2ZXJDZXJ0aWZp
Y2F0ZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9zZXJ2ZXJDZXJ0aWZp
Y2F0ZTsKICAgICBib29sIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dlZCB7IHRydWUgfTsKICAgICBS
ZXRhaW5QdHI8TlNVUkw+IG1fc3RvcmFnZVVSTDsKICAgICBWZWN0b3I8V2Vha1B0cjxDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+PiBtX3Nlc3Npb25zOwpAQCAtMTUw
LDggKzE1MCw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9u
Ci0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJh
Y2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vu
c2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmlu
YWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwg
TGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vu
c2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VU
eXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lv
bkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3Ry
aW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IDYyYmQxMzQ3OWM2YzMzNjJjYmU3MjUxYmY2OWVh
OGQxZjgxMGJlMjUuLmJhNTA2MWViYjVjNWZiZTA3NGQzYTI5ZGVhNGY5MThmYzI2MjFjZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0yMTcsNyArMjE3LDcgQEAgQUxMT1dfTkVXX0FQ
SV9XSVRIT1VUX0dVQVJEU19FTkQKICAgICByZXR1cm4gQXRvbVN0cmluZyhuc0luaXRUeXBlKTsK
IH0KIAotc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGluaXRpYWxpemF0aW9uRGF0YUZvclJlcXVl
c3QoQVZDb250ZW50S2V5UmVxdWVzdCogcmVxdWVzdCkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gaW5pdGlhbGl6YXRpb25EYXRhRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1
ZXN0KiByZXF1ZXN0KQogewogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CkBAIC0yNjUsNyArMjY1LDcgQEAgQVZDb250ZW50S2V5U2Vzc2lv
biogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmNvbnRlbnRLZXlTZXNzaW9u
KCkKICAgICByZXR1cm4gbV9zZXNzaW9uLmdldCgpOwogfQogCi1SZXRhaW5QdHI8QVZDb250ZW50
S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4
cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitSZXRhaW5QdHI8QVZDb250ZW50
S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4
cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIGZv
ciAoYXV0byByZXF1ZXN0SXRlciA9IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzLmJlZ2luKCk7IHJl
cXVlc3RJdGVyICE9IG1fdW5leHBlY3RlZEtleVJlcXVlc3RzLmVuZCgpOyArK3JlcXVlc3RJdGVy
KSB7CiAgICAgICAgIGF1dG8mIHJlcXVlc3QgPSAqcmVxdWVzdEl0ZXI7CkBAIC0zMTYsNyArMzE2
LDcgQEAgcHJpdmF0ZToKICAgICBSZXNwb25zZU1hcCBtX3Jlc3BvbnNlczsKIH07CiAKLXN0YXRp
YyBSZWZQdHI8SlNPTjo6VmFsdWU+IHBhcnNlSlNPTlZhbHVlKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQorc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEZhaWwgb24gbGFyZ2Ug
YnVmZmVycyB3aG9zZSBzaXplIGRvZXNuJ3QgZml0IGludG8gYSAzMi1iaXQgdW5zaWduZWQgaW50
ZWdlci4KICAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci5zaXplKCk7CkBAIC0zODAsNyArMzgwLDcg
QEAgdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6aW5pdGlhbGl6ZVdp
dGhDb25maWd1cmF0aW9uKGNvbnN0IENETUsKICAgICBjYWxsYmFjayhpbml0aWFsaXplKCkpOwog
fQogCi12b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIHNlcnZlckNlcnRpZmljYXRlLCBTdWNjZXNz
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IHNlcnZlckNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBE
RUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAgICAgbV9zZXJ2ZXJDZXJ0aWZp
Y2F0ZSA9IFdURk1vdmUoc2VydmVyQ2VydGlmaWNhdGUpOwpAQCAtNTg1LDggKzU4NSw4IEBAIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBh
dXRvIHNlc3Npb25LZXlzID0gc2Vzc2lvbkludGVyZmFjZS0+a2V5SURzKCk7Ci0gICAgICAgIGlm
IChhbnlPZihzZXNzaW9uS2V5cywgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBzZXNzaW9u
S2V5KSB7Ci0gICAgICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3Qg
UmVmPFNoYXJlZEJ1ZmZlcj4mIGtleUlEKSB7CisgICAgICAgIGlmIChhbnlPZihzZXNzaW9uS2V5
cywgWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgc2Vzc2lvbktleSkgewor
ICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYga2V5SUQpIHsKICAgICAgICAgICAgICAgICByZXR1cm4ga2V5
SUQuZ2V0KCkgPT0gc2Vzc2lvbktleS5nZXQoKTsKICAgICAgICAgICAgIH0pICE9IG5vdEZvdW5k
OwogICAgICAgICB9KSkKQEAgLTY3Myw3ICs2NzMsNyBAQCBLZXlzIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6a2V5SURzKCkKICAgICByZXR1cm4ga2V5SURzOwog
fQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNr
JiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERh
dGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghaXNMaWNlbnNlVHlw
ZVN1cHBvcnRlZChsaWNlbnNlVHlwZSkpIHsKICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxF
KExPR0lERU5USUZJRVIsICIgZmFsc2UsIGxpY2Vuc2VUeXBlIFwiIiwgbGljZW5zZVR5cGUsICJc
IiBub3Qgc3VwcG9ydGVkIik7CkBAIC03MzYsNyArNzM2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
IGxpY2UKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIGlzRXF1YWwoY29uc3QgU2hhcmVkQnVmZmVy
JiBkYXRhLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorc3RhdGljIGJvb2wgaXNFcXVhbChjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAg
IGF1dG8gYXJyYXlCdWZmZXIgPSBkYXRhLnRyeUNyZWF0ZUFycmF5QnVmZmVyKCk7CiAgICAgaWYg
KCFhcnJheUJ1ZmZlcikKQEAgLTc1NCw3ICs3NTQsNyBAQCBzdGF0aWMgYm9vbCBpc0VxdWFsKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICByZXR1cm4g
c3RyaW5nT3JFeGNlcHRpb24ucmV0dXJuVmFsdWUoKSA9PSB2YWx1ZTsKIH0KIAotdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRh
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYs
IExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEs
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9leHBpcmVk
U2Vzc2lvbnMuaXNFbXB0eSgpICYmIGlzRXF1YWwocmVzcG9uc2VEYXRhLCAiYWNrbm93bGVkZ2Vk
Il9zKSkgewogICAgICAgICBhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNl
cnRpZmljYXRlKCk7CkBAIC04NTYsNyArODU2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkK
ICAgICAgICAgICAgIGF1dG8ga2V5SUQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpr
ZXlJRFZlY3RvcikpOwogICAgICAgICAgICAgYXV0byBmb3VuZEluZGV4ID0gbV9jdXJyZW50UmVx
dWVzdC52YWx1ZSgpLnJlcXVlc3RzLmZpbmRNYXRjaGluZyhbJl0gKGF1dG8mIHJlcXVlc3QpIHsK
ICAgICAgICAgICAgICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdC5n
ZXQoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kTWF0Y2hpbmcoWyZdKGNv
bnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBpZCkgeworICAgICAgICAgICAgICAgIHJldHVybiBrZXlJ
RHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGlk
KSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpZC5nZXQoKSA9PSBrZXlJRC5nZXQoKTsK
ICAgICAgICAgICAgICAgICB9KSAhPSBub3RGb3VuZDsKICAgICAgICAgICAgIH0pOwpAQCAtMTE1
NSw3ICsxMTU1LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICBpZiAoYXV0byogY2Vy
dGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQogICAgICAgICBhcHBJ
ZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
OwogCi0gICAgdXNpbmcgUmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8U2hh
cmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKKyAgICB1c2luZyBSZXF1ZXN0c0RhdGEg
PSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgUmV0YWlu
UHRyPE5TRGF0YT4+PjsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewogICAgICAgICB1
c2luZyBDYWxsYmFja0Z1bmN0aW9uID0gRnVuY3Rpb248dm9pZChSZXF1ZXN0c0RhdGEmJik+Owog
ICAgICAgICBzdGF0aWMgUmVmUHRyPENhbGxiYWNrQWdncmVnYXRvcj4gY3JlYXRlKENhbGxiYWNr
RnVuY3Rpb24mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEyMTEsNyArMTIxMSw3IEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVx
dWVzdHMoVmVjdG9yPFJldGFpCiAgICAgQHRyeSB7CiAgICAgICAgIGZvciAoYXV0byByZXF1ZXN0
IDogbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzKSB7CiAgICAgICAgICAgICBhdXRv
IGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7Ci0gICAgICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5SURzLmZpcnN0KCkpOworICAg
ICAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShr
ZXlJRHMuZmlyc3QoKSk7CiAgICAgICAgICAgICBhdXRvIGNvbnRlbnRJZGVudGlmaWVyID0ga2V5
SUQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogICAgICAgICAgICAgW3JlcXVl
c3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVy
LmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6
bmlsIGNvbXBsZXRpb25IYW5kbGVyOltrZXlJRCA9IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9y
XSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJyb3IgKmVycm9yKSBtdXRhYmxl
IHsKICAgICAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNv
ZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCmluZGV4IDAzMzRkNjIzYjJhNzYwNWM5YmUx
MjIxM2I1YWJkYmJhYzJiMDNmMTUuLjYyYjgzZmJmZDU3OTQwNTBlYmM5NDA2MzcwNDkwYmEyYjNl
YzA4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgK
QEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOwogCiBj
bGFzcyBJbWFnZURlY29kZXJBVkZPYmpDIDogcHVibGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBj
cmVhdGUoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXJBVkZPYmpDKCk7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzdXBwb3J0c01lZGlhVHlwZShNZWRpYVR5cGUpOwpA
QCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1JbWFn
ZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBT
dWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2Rp
bmdPcHRpb25zKERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpKSBmaW5hbDsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcpIGZpbmFsOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERh
dGFSZWNlaXZlZCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREYXRhKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAgICAgYm9v
bCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxEYXRhUmVj
ZWl2ZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShz
aXplX3QpIGZpbmFsOwogCkBAIC05NCw3ICs5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBWZWN0b3I8SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+IGZyYW1lSW5mb3MoKSBjb25zdDsK
IAogcHJpdmF0ZToKLSAgICBJbWFnZURlY29kZXJBVkZPYmpDKFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bik7CisgICAgSW1hZ2VEZWNvZGVyQVZGT2JqQyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKTsKIAogICAgIEFWQXNzZXRUcmFjayAqZmlyc3RFbmFibGVkVHJhY2soKTsKICAgICB2b2lk
IHJlYWRTYW1wbGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5tbQppbmRleCBhNTRkZjNkYmFkZjkwNGY0NTQ4NGI4Y2U1YmNhNDlmYzU1NjhmZWI5Li4z
NWM2Y2U2N2U4NWY4NmFlMTY0YzIxYTcyNjA3ZmMwNjVlY2I1MDU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29k
ZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTI4OSw3ICsyODksNyBAQCBJ
bWFnZURlY29kZXJBVkZPYmpDU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRvciBpdGVyKQogCiAjcHJh
Z21hIG1hcmsgLSBJbWFnZURlY29kZXJBVkZPYmpDCiAKLVJlZlB0cjxJbWFnZURlY29kZXJBVkZP
YmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8SW1hZ2VE
ZWNvZGVyQVZGT2JqQz4gSW1hZ2VEZWNvZGVyQVZGT2JqQzo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKIHsKICAgICAvLyBBVkZvdW5kYXRpb24gbWF5IG5vdCBiZSBhdmFpbGFibGUgYXQgcnVu
dGltZS4KICAgICBpZiAoIUFWQXNzZXRNSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS5pc0F2YWls
YWJsZSgpKQpAQCAtMzAxLDcgKzMwMSw3IEBAIFJlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJ
bWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zCiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyQVZGT2JqQyhkYXRhLCBtaW1lVHlwZSwg
YWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiB9CiAKLUltYWdlRGVj
b2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pCitJbWFnZURlY29kZXJBVkZPYmpDOjpJbWFnZURlY29kZXJBVkZPYmpDKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICA6IEltYWdlRGVjb2RlcigpCiAgICAgLCBt
X21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV91dGkoV2ViQ29yZTo6VVRJRnJvbU1JTUVUeXBl
KG1pbWVUeXBlKSkKQEAgLTY0MSw3ICs2NDEsNyBAQCB2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6
OnNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCiAg
ICAgbV9sb2FkZXIuZ2V0KCkuZXhwZWN0ZWRDb250ZW50U2l6ZSA9IGV4cGVjdGVkQ29udGVudFNp
emU7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RGF0YShTaGFyZWRCdWZmZXIm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpz
ZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogewogICAgIFttX2xvYWRlciB1cGRhdGVEYXRhOmRhdGEubWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCkgY29tcGxldGU6YWxsRGF0YVJlY2VpdmVkXTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5oCmluZGV4IDI3ZjFlZDA4MmFmNmJmOTc2OGRlMDRlMDA0ZWYyNTZkY2YyNTI0OTEu
LmViNDU1MmU1NmE1MWFhNjBjY2MzZGVhMzc0M2I2MzRlMTBkZDM2NmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLmgKQEAgLTY3LDcgKzY3LDcgQEAgY2xhc3MgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGOwogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNzIE1lZGlhU2VsZWN0
aW9uR3JvdXBBVkZPYmpDOwogY2xhc3MgUGl4ZWxCdWZmZXJDb25mb3JtZXJDVjsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBWaWRlb0xh
eWVyTWFuYWdlck9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM7CiBjbGFzcyBX
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI7CkBAIC00MjcsNyArNDI3LDcgQEAgcHJpdmF0ZToKICAg
ICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IG1fd2FsbENsb2NrQXRDYWNoZWRDdXJy
ZW50VGltZTsKICAgICBtdXRhYmxlIGludCBtX3RpbWVDb250cm9sU3RhdHVzQXRDYWNoZWRDdXJy
ZW50VGltZSB7IDAgfTsKICAgICBtdXRhYmxlIGRvdWJsZSBtX3JlcXVlc3RlZFJhdGVBdENhY2hl
ZEN1cnJlbnRUaW1lIHsgMCB9OwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fa2V5SUQ7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fa2V5SUQ7CiAgICAgZG91YmxlIG1f
Y2FjaGVkUmF0ZSB7IDAgfTsKICAgICBib29sIG1fcmVxdWVzdGVkUGxheWluZyB7IGZhbHNlIH07
CiAgICAgZG91YmxlIG1fcmVxdWVzdGVkUmF0ZSB7IDEuMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KaW5kZXggZWJmMWFiNThhZDU3NDVhNDAyNmJlMDNlZWVhZGM3Yzg4YzBjYmViZS4uMTVkYjVl
ZWY2ZmMzMzRjZTI5ZThmMmJiZTE4ZGE0M2Y0NTYwZWIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCkBAIC0yNzk4LDcgKzI3OTgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFuYwogICAgIGlm
ICghbV9rZXlJRCB8fCAhbV9jZG1JbnN0YW5jZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3RhbmNlLT5zZXNzaW9uRm9yS2V5SURzKFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj46OmZyb20oKm1fa2V5SUQpKTsKKyAgICBhdXRvIGluc3RhbmNl
U2Vzc2lvbiA9IG1fY2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMoVmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj46OmZyb20oKm1fa2V5SUQpKTsKICAgICBpZiAoIWluc3RhbmNl
U2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCAwMzQyMGYxMzgzNjRmYWMyMDkx
ZTEwNGQxMzZmZjM4YTFmYjlmZTIyLi5lYWQwODNhNmNjN2U3MzZiNDIxNzEwZmFjMzkyYTA3ZGZm
OTJiZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLmgKQEAgLTczLDcgKzczLDcgQEAgY2xhc3MgVmlkZW9UcmFja1ByaXZhdGU7
CiBjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzsKIGNsYXNzIFZpZGVv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOwogY2xhc3MgV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakNFcnJvckNsaWVudCB7CiBw
dWJsaWM6CkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFByb3ZpZGVN
ZWRpYURhdGFGb3JUcmFja0lkKFJlZjxNZWRpYVNhbXBsZT4mJiwgdWludDY0X3QgdHJhY2tJZCwg
Y29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpOwogCiAgICAgLy8gU291cmNlQnVmZmVyUHJpdmF0ZSBv
dmVycmlkZXMKLSAgICB2b2lkIGFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAg
ICB2b2lkIGFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAg
dm9pZCBhYm9ydCgpIGZpbmFsOwogICAgIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpIGZpbmFsOwog
ICAgIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpIGZpbmFsOwpAQCAtMjIxLDcgKzIyMSw3
IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBIQVZF
KEFWQ09OVEVOVEtFWVNFU1NJT04pCiAgICAgUmVmUHRyPENETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDPiBtX2NkbUluc3RhbmNlOwotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4gbV9rZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9r
ZXlJRHM7CiAjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBtX2NhY2hlZFNp
emU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLm1tCmluZGV4IDNhMjg2N2ExYWMyNDNiYjljOTNjOWQ2YjcwY2E1NmIwMjk0OGZjOWMu
LjI0YWUwZTE0MDYwMTkxNDNmYWQ0ZjE1MjllNjhlZDQ5YjQxNjUzY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC01
NjMsNyArNTYzLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm8KICAgICBVTlVTRURfUEFSQU0o
aGFzU2Vzc2lvblNlbWFwaG9yZSk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjphcHBlbmQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkK
IHsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJkYXRhIGxlbmd0aCA9ICIsIGRhdGEt
PnNpemUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLmgKaW5kZXggNTgzOGU0OTM3ZGY4OWY1ODYxYWNkOWQ5NmRjMTIyOTViNmJjNzQz
ZC4uMGVmZWVhZWY1YjJkNzFiYzZkNjcwNGRkMWI5NzVhY2JhZTExM2JiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgKQEAgLTQzLDcg
KzQzLDcgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzsKIGNsYXNz
IFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyPiB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgUmVz
b3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKCk7Ci0gICAgdm9pZCBuZXdEYXRh
U3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBuZXdE
YXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwog
CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogbV9wYXJlbnQ7CiAgICAg
UmV0YWluUHRyPEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0PiBtX2F2UmVxdWVzdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpp
bmRleCBiNmUyMzdiNWRmNWRkZjZhNzJkNTQxNjk1YTA3ODIzMTgxYWNhZGFkLi5mOTIxZjNkYTBl
NjliMzM5OTc3YzllM2U0OTY2N2EyOGY1ZTk1Y2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC0xNTYsNyArMTU2LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBmaW5hbCB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAg
Ym9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgZGF0YVNl
bnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBs
b25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVk
KGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQog
ICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVkKCk7IH0KQEAgLTIxMSw3ICsyMTEs
NyBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAg
ICBtX3BhcmVudC5sb2FkRmluaXNoZWQoKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVk
aWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRh
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogewogICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwog
ICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkp
OwpAQCAtMjI1LDcgKzIyNSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyJiBtX3BhcmVudDsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7
Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogRGF0YVVSTFJlc291cmNlTWVkaWFMb2Fk
ZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYg
cGFyZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAtMjM1LDcgKzIzNSw3IEBAIERh
dGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyOjpEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcihXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXImCiAKICAgICBpZiAoYXV0byByZXN1bHQgPSBEYXRhVVJMRGVj
b2Rlcjo6ZGVjb2RlKHJlcXVlc3QudXJsKCksIERhdGFVUkxEZWNvZGVyOjpNb2RlOjpGb3JnaXZp
bmdCYXNlNjQpKSB7CiAgICAgICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlOjpkYXRh
VVJMUmVzcG9uc2UocmVxdWVzdC51cmwoKSwgKnJlc3VsdCk7Ci0gICAgICAgIG1fYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSk7Cisg
ICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRh
dGEpKTsKICAgICB9CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9XSB7CkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAgICAgc3RvcExvYWRpbmcoKTsKIH0KIAotdm9p
ZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6Om5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6
bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEpCiB7CiAgICAgQVZBc3NldFJlc291cmNlTG9hZGluZ0RhdGFSZXF1ZXN0KiBkYXRhUmVx
dWVzdCA9IFttX2F2UmVxdWVzdCBkYXRhUmVxdWVzdF07CiAgICAgaWYgKCFkYXRhUmVxdWVzdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCA0NmIwN2ZlNzEyZTc5ZTYxMzE3YzBk
MTE2ZmU2YTNmMDRhZjlmZmNiLi45NDE5YmNlYTM4ZGJmOGQ2NDkyZjY4MDFkOWEyMTU2MjM2NmEy
YzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zMSwxMSArMzEsMTEgQEAg
dHlwZWRlZiBzdHJ1Y3QgRlRfRmFjZVJlY18qICBGVF9GYWNlOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7
CiBjbGFzcyBGb250Q3JlYXRpb25Db250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xh
c3MgRm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGll
czsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzOwogCkBAIC00Niw3ICs0Niw3IEBAIHN0cnVj
dCBGb250Q3VzdG9tUGxhdGZvcm1EYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGb250Q3VzdG9tUGxhdGZvcm1EYXRhKTsKIHB1Ymxp
YzoKLSAgICBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKEZUX0ZhY2UsIFNoYXJlZEJ1ZmZlciYpOwor
ICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpOwogICAgIH5Gb250Q3VzdG9tUGxhdGZvcm1EYXRhKCkgPSBkZWZhdWx0OwogICAgIEZvbnRQ
bGF0Zm9ybURhdGEgZm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBib29s
IGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250Q3JlYXRpb25Db250ZXh0Jik7CiAgICAgc3Rh
dGljIGJvb2wgc3VwcG9ydHNGb3JtYXQoY29uc3QgU3RyaW5nJik7CkBAIC01NSw3ICs1NSw3IEBA
IHByaXZhdGU6CiAgICAgUmVmUHRyPGNhaXJvX2ZvbnRfZmFjZV90PiBtX2ZvbnRGYWNlOwogfTsK
IAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0
b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwor
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IDIwMzVjOTlhN2Y2OGI1NDg5Yzg1OGEzZTZk
NzAzM2QxMzVkMWY3ZGIuLmI2ZDNlYjM2MzExMjQ0NjEzYjM4MDNmMmYzZDI0ZDMwODdlYTI0ZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxJ
bnRTaXplPiBkZW5zaXR5Q29ycmVjdGVkU2l6ZUZyb21Qcm9wZXJ0aWVzKENGRGljdGlvbmFyeVJl
ZgogI2lmICFQTEFURk9STShDT0NPQSkKIHNpemVfdCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9z
aXRpb24odm9pZCogaW5mbywgdm9pZCogYnVmZmVyLCBvZmZfdCBwb3NpdGlvbiwgc2l6ZV90IGNv
dW50KQogewotICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRp
Y19jYXN0PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihpbmZvKTsKKyAgICBTaGFyZWRCdWZmZXIq
IHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAgIHNp
emVfdCBzb3VyY2VTaXplID0gc2hhcmVkQnVmZmVyLT5zaXplKCk7CiAgICAgaWYgKHBvc2l0aW9u
ID49IHNvdXJjZVNpemUpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjQ0LDEyICsyNDQsMTIgQEAg
c2l6ZV90IHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lkKiBi
dWZmZXIsIG9mZl90IHBvc2l0aW9uLAogCiB2b2lkIHNoYXJlZEJ1ZmZlclJlbGVhc2Uodm9pZCog
aW5mbykKIHsKLSAgICBTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IHN0YXRpY19jYXN0PFNo
YXJlZEJ1ZmZlcio+KGluZm8pOworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1
ZmZlciA9IHN0YXRpY19jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPihpbmZvKTsKICAgICBz
aGFyZWRCdWZmZXItPmRlcmVmKCk7CiB9CiAjZW5kaWYKIAotSW1hZ2VEZWNvZGVyQ0c6OkltYWdl
RGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQorSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEu
c2l6ZSgpID49IDMyKQpAQCAtNTYyLDIwICs1NjIsMjAgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFn
ZURlY29kZXJDRzo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1w
bGkKICAgICByZXR1cm4gbWFza2VkSW1hZ2UgPyBtYXNrZWRJbWFnZSA6IGltYWdlOwogfQogCi12
b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckNHOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIG1faXNBbGxEYXRh
UmVjZWl2ZWQgPSBhbGxEYXRhUmVjZWl2ZWQ7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAv
LyBPbiBNYWMgdGhlIE5TRGF0YSBpbnNpZGUgdGhlIFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0
bHkgYXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgotICAg
IC8vIFdlIHVzZSBTaGFyZWRCdWZmZXIncyBhYmlsaXR5IHRvIHdyYXAgaXRzZWxmIGluc2lkZSBD
RkRhdGEgdG8gZ2V0IGFyb3VuZCB0aGlzLCBlbnN1cmluZyB0aGF0IEltYWdlSU8gaXMKLSAgICAv
LyByZWFsbHkgbG9va2luZyBhdCB0aGUgU2hhcmVkQnVmZmVyLgorICAgIC8vIE9uIE1hYyB0aGUg
TlNEYXRhIGluc2lkZSB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBjYW4gYmUgc2VjcmV0bHkg
YXBwZW5kZWQgdG8gd2l0aG91dCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcidzIGtub3dsZWRn
ZS4KKyAgICAvLyBXZSB1c2UgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3Jh
cCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQg
SW1hZ2VJTyBpcworICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRoZSBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyLgogICAgIENHSW1hZ2VTb3VyY2VVcGRhdGVEYXRhKG1fbmF0aXZlRGVjb2Rlci5nZXQo
KSwgZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSwgYWxsRGF0YVJl
Y2VpdmVkKTsKICNlbHNlCi0gICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0
aGUgU2hhcmVkQnVmZmVyLgorICAgIC8vIENyZWF0ZSBhIENHRGF0YVByb3ZpZGVyIHRvIHdyYXAg
dGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRh
dGEubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBjb250aWd1b3VzRGF0YS5nZXQoKS5yZWYoKTsKLSAg
ICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0
aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgU2hhcmVkQnVmZmVyCisgICAgLy8gV2UgdXNl
IHRoZSBHZXRCeXRlc0F0UG9zaXRpb24gY2FsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIEdldEJ5dGVQ
b2ludGVyIG9uZSBiZWNhdXNlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIKICAgICAvLyBkb2VzIG5v
dCBwcm92aWRlIGEgd2F5IHRvIGxvY2sgZG93biB0aGUgYnl0ZSBwb2ludGVyIGFuZCBndWFyYW50
ZWUgdGhhdCBpdCB3b24ndCBtb3ZlLCB3aGljaAogICAgIC8vIGlzIGEgcmVxdWlyZW1lbnQgZm9y
IHVzaW5nIHRoZSBHZXRCeXRlUG9pbnRlciBjYWxsYmFjay4KICAgICBDR0RhdGFQcm92aWRlckRp
cmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsgMCwgMCwgMCwgc2hhcmVkQnVmZmVy
R2V0Qnl0ZXNBdFBvc2l0aW9uLCBzaGFyZWRCdWZmZXJSZWxlYXNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAppbmRleCA5
NzQwNzM2YTIxYWM5OThhYjA1ZjFjOWI0ZjViMTY3NWU0NGQyYzkxLi5hMGFjMWMyZmJlZTUyN2U1
YWIxMTE0NTU4MTJiZGI3MzYzYTA1NTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKQEAgLTMyLDkgKzMyLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW1hZ2VEZWNvZGVyQ0cgZmluYWwgOiBwdWJsaWMgSW1h
Z2VEZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJ
bWFnZURlY29kZXJDRyhTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyQ0coRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAot
ICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyQ0c+IGNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEs
IEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2RlckNHPiBj
cmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyQ0coZGF0
YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiAgICAgfQpAQCAt
NjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6
OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2Rp
bmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1
ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBi
b29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFS
ZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWwg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQppbmRleCA4NDRhYzQ0ZjNhZGRmYTlm
Mzk1Nzg2Yjk0YmRkNTA5NDFlNzI3NTRiLi44NTQyMWUzZGU3MDljZTE1OWM0OTRiNDBmYjhkMWFk
MjM1OTNjM2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCkBAIC01Nyw3ICs1Nyw3
IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgIHJldHVybiBDRkVxdWFsKG1fZm9udC5nZXQoKSwg
b3RoZXIubV9mb250LmdldCgpKTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCkgY29uc3QK
K1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVU
YWJsZSh1aW50MzJfdCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXIuY3BwCmluZGV4IGY3NDdkODBmYjYxZDMwZmM1MDIyZTY4MmQ2MzU2MTMzZDNj
YTY5N2EuLmM4YTgwNjEyMjA1M2Y2NDhhZGRiMDJhYzM4OWNlNzE0MzY4ZGJiYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyLmNwcApAQCAtODAsNyArODAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBh
cnNlcjo6c2V0TWluaW11bUF1ZGlvU2FtcGxlRHVyYXRpb24oZmxvYXQpCiB7CiB9CiAKLVNvdXJj
ZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKK1NvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6U2VnbWVudChSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX3NlZ21lbnQoV1RGTW92ZShidWZmZXIpKQog
ewogfQpAQCAtMTAxLDcgKzEwMSw3IEBAIHNpemVfdCBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21l
bnQ6OnNpemUoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIGNsYW1wVG88c2l6ZV90PihNVFBs
dWdpbkJ5dGVTb3VyY2VHZXRMZW5ndGgoYnl0ZVNvdXJjZS5nZXQoKSkpOwogICAgICAgICB9LAog
I2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAg
ICAgIFtdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm4gYnVmZmVyLT5zaXplKCk7CiAgICAgICAgIH0KQEAgLTEy
NSw3ICsxMjUsNyBAQCBhdXRvIFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6cmVhZChzaXpl
X3QgcG9zaXRpb24sIHNpemVfdCBzaXplVG9SZWFkLCB1aW50OAogICAgICAgICAgICAgcmV0dXJu
IFVuZXhwZWN0ZWQ8UmVhZEVycm9yPiB7IFJlYWRFcnJvcjo6RmF0YWxFcnJvciB9OwogICAgICAg
ICB9LAogI2VuZGlmCi0gICAgICAgIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSAtPiBSZWFkUmVzdWx0CisgICAgICAgIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mIGJ1ZmZlcikgLT4gUmVhZFJlc3VsdAogICAgICAgICB7CiAgICAgICAgICAgICBidWZm
ZXItPmNvcHlUbyhkZXN0aW5hdGlvbiwgcG9zaXRpb24sIHNpemVUb1JlYWQpOwogICAgICAgICAg
ICAgcmV0dXJuIHNpemVUb1JlYWQ7CkBAIC0xMzMsNyArMTMzLDcgQEAgYXV0byBTb3VyY2VCdWZm
ZXJQYXJzZXI6OlNlZ21lbnQ6OnJlYWQoc2l6ZV90IHBvc2l0aW9uLCBzaXplX3Qgc2l6ZVRvUmVh
ZCwgdWludDgKICAgICApOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJz
ZXI6OlNlZ21lbnQ6OnRha2VTaGFyZWRCdWZmZXIoKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1ZmZlcigpCiB7CiAg
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9zZWdtZW50LAogI2lmIEhBVkUoTVRfUExVR0lOX0ZP
Uk1BVF9SRUFERVIpCkBAIC0xNDIsMjggKzE0MiwyOCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTb3Vy
Y2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OnRha2VTaGFyZWRCdWZmZXIoKQogICAgICAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcihzaXplKCkpOwogICAgICAgICAgICAgYXV0byByZWFkUmVz
dWx0ID0gcmVhZCgwLCB2ZWN0b3Iuc2l6ZSgpLCB2ZWN0b3IuZGF0YSgpKTsKICAgICAgICAgICAg
IGlmICghcmVhZFJlc3VsdC5oYXNfdmFsdWUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICB2ZWN0b3Iuc2hyaW5rKHJlYWRSZXN1
bHQudmFsdWUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZSh2ZWN0b3IpKTsKKyAgICAgICAgICAgIHJldHVybiBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKTsKICAgICAgICAgfSwKICNlbmRpZgotICAgICAgICBb
Jl0oUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAgICAgICAgWyZdKFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3Rk
OjpleGNoYW5nZShidWZmZXIsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpOworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6ZXhjaGFuZ2UoYnVmZmVyLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSk7CiAgICAgICAgIH0KICAgICApOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBTb3Vy
Y2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OmdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpnZXRT
aGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fc2VnbWVu
dCwKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVSKQotICAgICAgICBbJl0oY29uc3Qg
UmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mKSAtPiBSZWZQdHI8U2hhcmVkQnVmZmVy
PgorICAgICAgICBbJl0oY29uc3QgUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mKSAt
PiBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAgICAgWyZdKGNvbnN0IFJl
ZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlZlB0cjxTaGFyZWRCdWZmZXI+CisgICAgICAg
IFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBi
dWZmZXIucHRyKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKaW5kZXggNTIwYjUy
MDdmYzI3MWQ3OTgxNTMzZmIxNGQyMzE1NTk0YTg4ODM2NS4uNzI5N2E3OTE0YTc5YWRmNjQyZGM2
YjE2YjM2ZTYwZjljZDAyOWYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKQEAgLTQ1LDcgKzQ1
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50VHlwZTsKIGNsYXNzIE1l
ZGlhU2FtcGxlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgU291cmNlQnVmZmVyUGFyc2VyIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFNvdXJjZUJ1ZmZlclBhcnNlcj4gewogcHVibGljOgpAQCAt
NjksMTEgKzY5LDExIEBAIHB1YmxpYzoKICNpZiBIQVZFKE1UX1BMVUdJTl9GT1JNQVRfUkVBREVS
KQogICAgICAgICBTZWdtZW50KFJldGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VSZWY+JiYpOwog
I2VuZGlmCi0gICAgICAgIFNlZ21lbnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIFNl
Z21lbnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgICAgICBTZWdtZW50KFNl
Z21lbnQmJikgPSBkZWZhdWx0OwotICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPiB0YWtlU2hhcmVk
QnVmZmVyKCk7Ci0gICAgICAgIC8vIFdpbGwgcmV0dXJuIG51bGxwdHIgaWYgU2VnbWVudCdzIGJh
Y2tlbmQgaXNuJ3QgYSBTaGFyZWRCdWZmZXIuCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gdGFrZVNoYXJlZEJ1ZmZlcigpOworICAgICAgICAvLyBXaWxsIHJldHVybiBudWxscHRy
IGlmIFNlZ21lbnQncyBiYWNrZW5kIGlzbid0IGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KKyAg
ICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdldFNoYXJlZEJ1ZmZlcigpIGNv
bnN0OwogCiAgICAgICAgIHNpemVfdCBzaXplKCkgY29uc3Q7CiAKQEAgLTg3LDcgKzg3LDcgQEAg
cHVibGljOgogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAgICAgICBS
ZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiwKICNlbmRpZgotICAgICAgICAgICAgUmVm
PFNoYXJlZEJ1ZmZlcj4KKyAgICAgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPgog
ICAgICAgICA+IG1fc2VnbWVudDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwCmluZGV4IDYxZGJkNjJjOWUzZTlmMzE1Nzk4NTA1ZWI1MDQwZjk5ZmY4YzViZjEuLjli
YzE4OTQxOTg2MzBiYWQ4ZDdjYmQwYjNhNWIyOGU0NmU5ZWZlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0zODgsNyArMzg4LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgIGFkdmFuY2VUb05leHRTZWdtZW50KCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRC
dWZmZXIgPSBjdXJyZW50U2VnbWVudC5nZXRTaGFyZWRCdWZmZXIoKTsKKyAgICAgICAgICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBjdXJyZW50U2VnbWVu
dC5nZXRTaGFyZWRCdWZmZXIoKTsKICAgICAgICAgICAgIENNQmxvY2tCdWZmZXJSZWYgcmF3Qmxv
Y2tCdWZmZXIgPSBudWxscHRyOwogICAgICAgICAgICAgdWludDY0X3QgbGFzdFJlYWQgPSAwOwog
ICAgICAgICAgICAgc2l6ZV90IGRlc3RpbmF0aW9uT2Zmc2V0ID0gbV9wb3NpdGlvbldpdGhpblNl
Z21lbnQ7CkBAIC00MDksNyArNDA5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGRlc3Rp
bmF0aW9uT2Zmc2V0ID0gMDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKHNoYXJlZEJ1ZmZlci0+aGFzT25lU2VnbWVudCgpLCAiQ2FuIG9ubHkgZGVhbCB3aXRo
IHNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGEgc2luZ2xlIERhdGFTZWdtZW50Iik7Ci0gICAgICAg
ICAgICAgICAgLy8gQSBTaGFyZWRCdWZmZXIgZG9lc24ndCBoYXZlIHRocmVhZC1zYWZlIHJlZmNv
dW50aW5nLCBhcyBzdWNoIHdlIG11c3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgRGF0YVNlZ21l
bnQgaW5zdGVhZC4KKyAgICAgICAgICAgICAgICAvLyBBIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIg
ZG9lc24ndCBoYXZlIHRocmVhZC1zYWZlIHJlZmNvdW50aW5nLCBhcyBzdWNoIHdlIG11c3Qga2Vl
cCBhIHJlZmVyZW5jZSB0byB0aGUgRGF0YVNlZ21lbnQgaW5zdGVhZC4KICAgICAgICAgICAgICAg
ICAvLyBUT0RPOiBjb3VsZCB3ZSBvbmx5IGNyZWF0ZSBhIG5ldyBDTUJsb2NrQnVmZmVyIGlmIHRo
ZSBiYWNrZW5kIG1lbW9yeSBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBvbmU/CiAgICAgICAg
ICAgICAgICAgYXV0byBmaXJzdFNlZ21lbnQgPSBzaGFyZWRCdWZmZXItPmJlZ2luKCktPnNlZ21l
bnQ7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGNhblJlYWQgPSBzdGQ6Om1pbjxzaXplX3Q+KG51
bVRvUmVhZCwgZmlyc3RTZWdtZW50LT5zaXplKCkgLSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9G
b250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAppbmRleCBjYzU5NGYz
ODRlNTYzNWRlZGE4ZjQyM2Y2ODRkYTViNTU0OTcwNjcxLi41OWQyMTY2NzlkMmZlNGM4MGM2OWFh
YTcxZjM5MjFkNjI1N2FhYzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3Jl
VGV4dC5jcHAKQEAgLTE1MSwxMCArMTUxLDEwIEBAIFJldGFpblB0cjxDRlR5cGVSZWY+IEZvbnRQ
bGF0Zm9ybURhdGE6Om9iamVjdEZvckVxdWFsaXR5Q2hlY2soKSBjb25zdAogICAgIHJldHVybiBv
YmplY3RGb3JFcXVhbGl0eUNoZWNrKGN0Rm9udCgpKTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFi
bGUpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlw
ZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIGlmIChSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBkYXRhID0gYWRvcHRDRihDVEZvbnRDb3B5VGFibGUoY3RGb250KCksIHRhYmxlLCBrQ1RG
b250VGFibGVPcHRpb25Ob09wdGlvbnMpKSkKLSAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOwogCiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJs
ZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3Bw
CmluZGV4IGIzYzE0ZWM5YjY5ZDkzZWEwZmYyZmRlZmVlMzIzZWEwNDc0ZGY5ZmQuLjQ2M2IxMzQ2
ZGMzNzIzNDVhNDljYjhhNWI1NjIyZDI2ZDc4NjE0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCkBAIC03MzgsNyArNzM4LDcgQEAgRGlkQ2hhbmdlSXRl
bUJ1ZmZlciBJdGVtQnVmZmVyOjpzd2FwV3JpdGFibGVCdWZmZXJJZk5lZWRlZChzaXplX3QgbnVt
YmVyT2ZCeXRlcykKIHZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0SXRl
bSYgdGVtcG9yYXJ5SXRlbSkKIHsKICAgICBhdXRvIHJlcXVpcmVkU2l6ZUZvckl0ZW0gPSBtX3dy
aXRpbmdDbGllbnQtPnJlcXVpcmVkU2l6ZUZvckl0ZW0odGVtcG9yYXJ5SXRlbSk7Ci0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gb3V0T2ZMaW5lSXRlbTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gb3V0T2ZMaW5lSXRlbTsKICAgICBpZiAoIXJlcXVpcmVkU2l6ZUZvckl0ZW0p
IHsKICAgICAgICAgb3V0T2ZMaW5lSXRlbSA9IG1fd3JpdGluZ0NsaWVudC0+ZW5jb2RlSXRlbU91
dE9mTGluZSh0ZW1wb3JhcnlJdGVtKTsKICAgICAgICAgaWYgKCFvdXRPZkxpbmVJdGVtKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCmluZGV4IGM4NzMxOTgyZWY4Mzkz
MWJiYWUzMWI3ODY1MGFjMGRhMjBhMDVmYzUuLmIzMWJjNWZkNGU5MjE0YjE1YTM3NjFmYmU5OGQ2
MGNlYjQ3YTk4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgK
QEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0
T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0CisgICAgdmlydHVhbCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5
TGlzdEl0ZW0mKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpA
QCAtMTY4LDcgKzE2OCw3IEBAIHB1YmxpYzoKICAgICAvLyB3aXRoIHBhZGRpbmcgYmV0d2VlbiBl
YWNoIGl0ZW0gdG8gZW5zdXJlIHRoYXQgYWxsIGl0ZW1zIGFyZSBhbGlnbmVkIHRvIDggYnl0ZXMu
CiAgICAgLy8KICAgICAvLyBJZiBhIHdyaXRpbmcgY2xpZW50IGlzIHByZXNlbnQgYW5kIHJlcXVp
cmVzIGN1c3RvbSBlbmNvZGluZyBmb3IgdGhlIGdpdmVuIGl0ZW0gdHlwZSBULCB0aGUKLSAgICAv
LyBpdGVtIGJ1ZmZlciB3aWxsIGFzayB0aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgU2hhcmVkQnVm
ZmVyIGNvbnRhaW5pbmcgZW5jb2RlZCBkYXRhIGZvciB0aGUKKyAgICAvLyBpdGVtIGJ1ZmZlciB3
aWxsIGFzayB0aGUgY2xpZW50IGZvciBhbiBvcGFxdWUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBj
b250YWluaW5nIGVuY29kZWQgZGF0YSBmb3IgdGhlCiAgICAgLy8gaXRlbS4gVGhpcyBlbmNvZGVk
IGRhdGEgaXMgdGhlbiBhcHBlbmRlZCB0byB0aGUgaXRlbSBidWZmZXIsIHdpdGggcGFkZGluZyB0
byBlbnN1cmUgdGhhdAogICAgIC8vIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoaXMgZGF0YSBhcmUg
YWxpZ25lZCB0byA4IGJ5dGVzLCBpZiBuZWNlc3NhcnkuIFdoZW4gY29uc3VtaW5nIGVuY29kZWQK
ICAgICAvLyBpdGVtIGRhdGEsIGEgY29ycmVzcG9uZGluZyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVu
dCB3aWxsIGJlIHJlcXVpcmVkIHRvIGNvbnZlcnQgdGhpcyBlbmNvZGVkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAppbmRleCBjY2RhZGIwZGEx
MWI1OTg1YTM0Mzg2MTlkYjBkZjIzMzAxYTcyNWEzLi4yYjQ0M2ZiYmVkMmMxZmRlNDhiY2RlOWNi
ZTQwOTUzNDk3ZmRlOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0YXRpYyB2b2lkIHJlbGVhc2VDdXN0b21Gb250RGF0YSh2b2lkKiBkYXRhKQogewotICAg
IHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOworICAgIHN0YXRpY19j
YXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKIH0KIAogc3RhdGlj
IGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBmcmVlVHlwZUZhY2VLZXk7CiAKLUZvbnRDdXN0b21QbGF0
Zm9ybURhdGE6OkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSBmcmVlVHlwZUZhY2UsIFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YShGVF9GYWNlIGZyZWVUeXBlRmFjZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogICAgIDogbV9mb250RmFjZShhZG9wdFJlZihjYWlyb19mdF9mb250X2ZhY2VfY3Jl
YXRlX2Zvcl9mdF9mYWNlKGZyZWVUeXBlRmFjZSwgRlRfTE9BRF9ERUZBVUxUKSkpCiB7CiAgICAg
YnVmZmVyLnJlZigpOyAvLyBUaGlzIGlzIGJhbGFuY2VkIGJ5IHRoZSBidWZmZXItPmRlcmVmKCkg
aW4gcmVsZWFzZUN1c3RvbUZvbnREYXRhLgpAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyBib29s
IGluaXRpYWxpemVGcmVlVHlwZUxpYnJhcnkoRlRfTGlicmFyeSYgbGlicmFyeSkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+
IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYpCiB7CiAgICAgc3RhdGljIEZUX0xpYnJhcnkgbGlicmFyeTsKICAgICBpZiAoIWxp
YnJhcnkgJiYgIWluaXRpYWxpemVGcmVlVHlwZUxpYnJhcnkobGlicmFyeSkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IGZlZDg1NDBmNGFlYmM4NGM2
OWIyOTA4MDY5N2MxMjQ2MDFkNWI2MjYuLjY4OWNiNjc5ZTYzMmUyZjVhMmEyZmUwNjQ1ODExZDg4
NjZhOTBjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApA
QCAtMjQ5LDcgKzI0OSw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6aGFzQ29tcGF0aWJsZUNo
YXJtYXAoKSBjb25zdAogICAgICAgICAmJiBGVF9TZWxlY3RfQ2hhcm1hcChmcmVlVHlwZUZhY2Us
IGZ0X2VuY29kaW5nX2FwcGxlX3JvbWFuKSk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBj
b25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJs
ZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0
RmFjZUxvY2tlcihtX3NjYWxlZEZvbnQuZ2V0KCkpOwogICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNl
ID0gY2Fpcm9GdEZhY2VMb2NrZXIuZnRGYWNlKCk7CkBAIC0yNjgsNyArMjY4LDcgQEAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUo
dWludDMyX3QgdGFibGUpIGMKICAgICBpZiAoZXJyb3IgfHwgdGFibGVTaXplICE9IGV4cGVjdGVk
VGFibGVTaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogfQogCiAjaWYgVVNFKEhBUkZCVVpaKSAm
JiAhRU5BQkxFKE9QRU5UWVBFX01BVEgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4
IGI3NDlmYzE1OGRmYWJlZmQzYmQ4YzQ1NDk4YmEwYTViMjkzYmY0MDkuLmNkZWQ0YTYwYjUwYmJi
YWVhNWI4NDViZGVmYmI2ODZmZTI1MjU5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3Bw
CkBAIC00MjQsOSArNDI0LDkgQEAgVmVjdG9yPHVpbnQ4X3Q+IEdzdE1hcHBlZEJ1ZmZlcjo6Y3Jl
YXRlVmVjdG9yKCkgY29uc3QKICAgICByZXR1cm4geyBkYXRhKCksIHNpemUoKSB9OwogfQogCi1S
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpCitSZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3Jl
YXRlU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCp0aGlzKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOwog
fQogCiBib29sIGlzR1N0cmVhbWVyUGx1Z2luQXZhaWxhYmxlKGNvbnN0IGNoYXIqIG5hbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXggMmI2MDU5MjM5YmI3ZjBkOGZiZTQ1NjAyNmU1ODJh
M2ZjNmYwOWMxNi4uZDgyY2QzZTE4ZWNlMDQ3NjFkNmFkNGVjMmQ1MmUyYWQ5ZGMzODQ2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBJbnRTaXplOwotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKIAogaW5saW5lIGJvb2wgd2Via2l0R3N0Q2hlY2tWZXJzaW9uKGd1
aW50IG1ham9yLCBndWludCBtaW5vciwgZ3VpbnQgbWljcm8pCiB7CkBAIC0xOTAsNyArMTkwLDcg
QEAgcHVibGljOgogICAgICAgICB1bm1hcEVhcmx5KCk7CiAgICAgfQogCi0gICAgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOworICAgIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpOwogCiBwcml2YXRlOgogICAgIEdzdE1hcHBlZE93
bmVkQnVmZmVyKEdSZWZQdHI8R3N0QnVmZmVyPiYmIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXggMjliM2E1MDFkOGU5YTk2MmEwYzNkMDRmYjI2MTI2
ZWE0M2EzNTUyNi4uZGZiYzU4MGZiOGU5YjMwOTM2Y2NhMDhiYjg4YjQ5YzJiYjY1M2FjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdl
RGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTgxLDEyICs4MSwxMiBA
QCBJbWFnZURlY29kZXJHU3RyZWFtZXJTYW1wbGUqIHRvU2FtcGxlKEl0ZXJhdG9yIGl0ZXIpCiAg
ICAgcmV0dXJuIChJbWFnZURlY29kZXJHU3RyZWFtZXJTYW1wbGUqKWl0ZXItPnNlY29uZC5nZXQo
KTsKIH0KIAotUmVmUHRyPEltYWdlRGVjb2RlckdTdHJlYW1lcj4gSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBB
bHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBJbWFn
ZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyKGRhdGEsIG1pbWVUeXBlLCBh
bHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKIH0KIAotSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyOjpJbWFnZURlY29kZXJHU3RyZWFtZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCitJbWFnZURlY29kZXJHU3RyZWFtZXI6OkltYWdlRGVjb2RlckdTdHJlYW1lcihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgOiBtX21pbWVUeXBlKG1pbWVU
eXBlKQogewogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKQEAgLTE5OSw3ICsx
OTksNyBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdQogICAgIHJldHVybiBudWxscHRyOwogfQog
Ci12b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wpCit2b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6c2V0RGF0YShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBib29sKQogewogICAgIHB1c2hFbmNvZGVkRGF0YShkYXRhKTsKIH0K
QEAgLTQyNiw3ICs0MjYsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXJHU3RyZWFt
ZXI6OklubmVyRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogICAgIHJldHVybiBF
bmNvZGVkRGF0YVN0YXR1czo6VW5rbm93bjsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJHU3RyZWFt
ZXI6OnB1c2hFbmNvZGVkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgSW1h
Z2VEZWNvZGVyR1N0cmVhbWVyOjpwdXNoRW5jb2RlZERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5t
YWtlQ29udGlndW91cygpOwogICAgIG1fZW9zID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyLmgKaW5kZXggNjZmMzM3Mjg0NmE0ZGY4NzRmNDIwZGI2NTRlNjg5YzllNDNi
MGM1Mi4uZDNlZjZhNDVjZDdkYmRmYzMxMjBlYTIzZjhkZWIzYzU5OTcxYWU5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2Rl
ckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaApAQCAtNDEsOCArNDEsOCBAQCBjbGFzcyBJbWFn
ZURlY29kZXJHU3RyZWFtZXIgZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZURlY29k
ZXJHU3RyZWFtZXIpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0
cmVhbWVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKLSAgICBJbWFnZURlY29kZXJH
U3RyZWFtZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdl
RGVjb2RlckdTdHJlYW1lcj4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OworICAgIEltYWdlRGVjb2RlckdTdHJlYW1lcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXJHU3RyZWFtZXIoKSA9IGRlZmF1bHQ7CiAK
ICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c01lZGlhVHlwZShNZWRpYVR5cGUgdHlwZSkgeyByZXR1
cm4gdHlwZSA9PSBNZWRpYVR5cGU6OlZpZGVvOyB9CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoK
ICAgICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5n
T3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZp
bmFsOwogCiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWwg
eyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9lb3M7IH0KICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNo
ZShzaXplX3QpIGZpbmFsOwogCkBAIC0xMjIsNyArMTIyLDcgQEAgcHJpdmF0ZToKICAgICB9Owog
CiAgICAgdm9pZCBoYW5kbGVTYW1wbGUoR1JlZlB0cjxHc3RTYW1wbGU+JiYpOwotICAgIHZvaWQg
cHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgcHVzaEVuY29k
ZWREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIGNvbnN0IEltYWdl
RGVjb2RlckdTdHJlYW1lclNhbXBsZSogc2FtcGxlQXRJbmRleChzaXplX3QpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDVkODZmYjFh
ZjQ4N2MwMjg5ZTAwMTI1NTk2NWMzMWRjZGE5NzM0MjYuLjkzMDE5MDk5NDViNGEyM2Q2Njc4MmYz
NTBiNTZlNDQ3OWY4MDI2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3Ry
ZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRob2RzLgogICAgIHZvaWQgcmVzcG9uc2VSZWNl
aXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAg
IHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtMTA5Myw3ICsxMDkzLDcgQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb24KICAgICBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRDb250aW51ZVBvbGljeUNo
ZWNrOjpZZXMpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRh
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMg
PSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVh
cktleS5oCmluZGV4IDY5MmE5OTZkMTljMjRlZmQ5YTQ4NTUyMzczYTU2NzliNTJlMWVmMWMuLjM0
OWJmZGNhYWQ2YzdkN2Y4ZDVhZGEwYTE3MjE5ZmQ5ZTcwNjI2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktl
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
Q0RNUHJveHlDbGVhcktleS5oCkBAIC02MiwxMSArNjIsMTEgQEAgcHVibGljOgogICAgIENETVBy
b3h5Q2xlYXJLZXkoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB+Q0RNUHJveHlDbGVhcktleSgp
OwogCi0gICAgLy8gRklYTUU6IFRoZXJlJ3MgYSBsYWNrIG9mIGNvbnNpc3RlbmN5IGJldHdlZW4g
U2hhcmVkQnVmZmVycywKKyAgICAvLyBGSVhNRTogVGhlcmUncyBhIGxhY2sgb2YgY29uc2lzdGVu
Y3kgYmV0d2VlbiBGcmFnbWVudGVkU2hhcmVkQnVmZmVycywKICAgICAvLyBWZWN0b3I8Y2hhcj4n
cyBhbmQge3VpbnQ4X3QqLHNpemVfdH0gaWRpb21zIGZvciByZXByZXNlbnRpbmcgYSBjaHVuayBv
ZgotICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBzb21laG93LiBOb3RlIFNoYXJlZEJ1ZmZlcnMgYXJl
IGRhbmdlcm91cyBzaW5jZQorICAgIC8vIGJ5dGVzLiBGaXggdGhhdCBzb21laG93LiBOb3RlIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXJzIGFyZSBkYW5nZXJvdXMgc2luY2UKICAgICAvLyB0aGV5J3Jl
IG5vdCB0aHJlYWQtc2FmZSBhbmQgdGhpcyBjbGFzcyBtdXN0IG1haW50YWluCi0gICAgLy8gdGhy
ZWFkLXNhZmV0eSwgYnV0IG1heWJlIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQgY291bGQgYmUK
KyAgICAvLyB0aHJlYWQtc2FmZXR5LCBidXQgbWF5YmUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQgY291bGQgYmUKICAgICAvLyBtYWRlIHRvIHdvcmssIGhvd2V2ZXIgdGhhdCBo
YXMgemVybyBoZWxwZXJzIGZvciBkcm9wcGluZyBpbnRvCiAgICAgLy8gaXRlcmF0b3ItYXdhcmUg
LyBjb21wYXJhdG9yLWF3YXJlIGNvbnRhaW5lcnMuLi4KICAgICBzdHJ1Y3QgY2VuY0RlY3J5cHRD
b250ZXh0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCmluZGV4IDJlZmEwNDM2MGU4ODQ4Mzgw
NjE0NGMzZDcxZGU2M2FkN2I0MmI1NjEuLmMzODkxNmU3ZDA1OWU4ODliNWM4OGVlYjA5ZTBmNGNm
YzAzYzFkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBA
IGJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RGF0YSkgY29uc3QKK2Jvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBpbml0RGF0YSkgY29uc3QKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUgaW5pdERhdGEgYnVmZmVy
IGFzIGFuIEpTT04gb2JqZWN0IGluIGtleWlkcyBjYXNlLgogICAgIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShpbml0RGF0YVR5cGUsICJrZXlpZHMiKSAmJiBDRE1VdGlsaXRpZXM6
OnBhcnNlSlNPTk9iamVjdChpbml0RGF0YSkpCkBAIC0yMzcsNyArMjM3LDcgQEAgYm9vbCBDRE1Q
cml2YXRlVGh1bmRlcjo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IFMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IENETVByaXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJp
dmF0ZVRodW5kZXI6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKIH0KQEAg
LTI2MCw3ICsyNjAsNyBAQCB2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6aW5pdGlhbGl6ZVdpdGhD
b25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYQogICAgIGNhbGxiYWNrKFN1
Y2NlZWRlZCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjpzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCAgU3VjY2Vzc0NhbGxiYWNrJiYg
Y2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6c2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKICAgICBPcGVuQ0RNRXJyb3IgZXJyb3IgPSBvcGVuY2RtX3N5c3Rl
bV9zZXRfc2VydmVyX2NlcnRpZmljYXRlKG1fdGh1bmRlclN5c3RlbS5nZXQoKSwgY29uc3RfY2Fz
dDx1aW50OF90Kj4oY2VydGlmaWNhdGUtPmRhdGEoKSksCiAgICAgICAgIGNlcnRpZmljYXRlLT5z
aXplKCkpOwpAQCAtMzI2LDcgKzMyNiw3IEBAIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IENE
TUluc3RhbmNlVGh1bmRlcjo6Y3JlYXRlU2Vzc2lvbigpCiBjbGFzcyBQYXJzZWRSZXNwb25zZU1l
c3NhZ2UgewogCiBwdWJsaWM6Ci0gICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlKGNvbnN0IFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlKGNvbnN0
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgIHsKICAgICAgICAg
aWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+c2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MzU0LDggKzM1NCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNWYWxpZDsgfQogICAgIGJvb2wgaGFzUGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PGJvb2w+KG1fcGF5bG9hZCk7IH0KLSAgICBjb25zdCBSZWY8U2hhcmVkQnVmZmVy
PiYgcGF5bG9hZCgpIGNvbnN0JiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2Fk
LnZhbHVlKCk7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpICYgeyBBU1NFUlQo
bV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CisgICAgY29uc3QgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QmIHsgQVNTRVJUKG1fcGF5bG9h
ZCk7IHJldHVybiBtX3BheWxvYWQudmFsdWUoKTsgfQorICAgIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYgcGF5bG9hZCgpICYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9h
ZC52YWx1ZSgpOyB9CiAgICAgYm9vbCBoYXNUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlLmhh
c192YWx1ZSgpOyB9CiAgICAgV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSB0eXBlKCkgY29u
c3QgeyBBU1NFUlQobV90eXBlKTsgcmV0dXJuIG1fdHlwZS52YWx1ZSgpOyB9CiAgICAgV2ViQ29y
ZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSB0eXBlT3IoV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlw
ZSBhbHRlcm5hdGUpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA/IG1fdHlwZS52YWx1ZSgpIDogYWx0
ZXJuYXRlOyB9CkBAIC0zNjQsMTEgKzM2NCwxMSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2lzVmFsaWQgeyBmYWxzZSB9OwotICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1
ZmZlcj4+IG1fcGF5bG9hZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4gbV9wYXlsb2FkOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFLZXlN
ZXNzYWdlVHlwZT4gbV90eXBlOwogfTsKIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVy
OjpjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6Y2hhbGxlbmdlR2VuZXJhdGVkQ2Fs
bGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIFBh
cnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UoYnVmZmVyKTsKICAgICBp
ZiAoIXBhcnNlZFJlc3BvbnNlTWVzc2FnZSkgewpAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6a2V5c1VwZGF0ZURvbmVDYWxsYmFjaygpCiAgICAgbV9z
ZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vz
c2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdl
KQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7CiAgICAgR1NUX0VSUk9SKCJDRE0g
ZXJyb3IiKTsKICAgICBHU1RfTUVNRFVNUCgiZXJyb3IgZHVtcCIsIG1lc3NhZ2UtPmRhdGEoKSwg
bWVzc2FnZS0+c2l6ZSgpKTsKQEAgLTQ4OCw3ICs0ODgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdl
KQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNl
VHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGluaXREYXRhU2hhcmVkQnVmZmVyLAordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpy
ZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YVNoYXJl
ZEJ1ZmZlciwKICAgICBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwpAQCAtNTA2LDcgKzUwNiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0
IEF0CiAgICAgICAgIG1faW5pdERhdGEucGF5bG9hZCgpLT5kYXRhKCksIG1faW5pdERhdGEucGF5
bG9hZCgpLT5zaXplKCksIG51bGxwdHIsIDAsICZtX3RodW5kZXJTZXNzaW9uQ2FsbGJhY2tzLCB0
aGlzLCAmc2Vzc2lvbik7CiAgICAgaWYgKCFzZXNzaW9uKSB7CiAgICAgICAgIEdTVF9FUlJPUigi
Q291bGQgbm90IGNyZWF0ZSBzZXNzaW9uIik7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOwogICAgICAg
ICBjYWxsYmFjayhpbml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCB7IH0sIGZhbHNlLCBGYWlsZWQp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5
cGUsIGNvbnN0IEF0CiAKICAgICBhdXRvIGdlbmVyYXRlQ2hhbGxlbmdlID0gW3RoaXMsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9p
bml0RGF0YS5wYXlsb2FkKCk7CisgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOwogICAgICAgICBpZiAobV9zZXNzaW9u
SUQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBHU1RfRVJST1IoImNvdWxkIG5vdCBjcmVhdGUg
c2Vzc2lvbiBpZCIpOwogICAgICAgICAgICAgY2FsbGJhY2soaW5pdERhdGEucmVsZWFzZU5vbk51
bGwoKSwgeyB9LCBmYWxzZSwgRmFpbGVkKTsKQEAgLTU0NSwxMyArNTQ1LDEzIEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6c2Vzc2lvbkZhaWx1cmUoKQogICAgIG1fc2Vzc2lvbkNo
YW5nZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVu
ZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSBtX3Nlc3Npb25JRCk7CiAK
ICAgICBHU1RfVFJBQ0UoIlVwZGF0aW5nIHNlc3Npb24gJXMiLCBzZXNzaW9uSUQudXRmOCgpLmRh
dGEoKSk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdlZENh
bGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wg
c3VjY2VzcywgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdl
KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYg
KHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghcmVzcG9uc2VNZXNzYWdlKQpAQCAtNTYyLDcg
KzU2Miw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5CiAgICAgICAgICAgICAgICAgUGFyc2Vk
UmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShyZXNwb25zZU1lc3NhZ2UpOwog
ICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAg
ICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJl
c3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAgICAgICBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdl
LnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygiZ290IG1lc3NhZ2Ug
b2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1Rf
TUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0LApAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6
bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiB7CiAgICAg
QVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSBtX3Nlc3Npb25JRCk7CiAKLSAg
ICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHJlc3Bv
bnNlTWVzc2FnZSkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBl
bmQoW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsK
ICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsK
ICAgICAgICAgICAgIGlmICghcmVzcG9uc2VNZXNzYWdlKQpAQCAtNTk3LDcgKzU5Nyw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklECiAgICAgICAgICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNz
YWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShyZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAg
ICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIGlmIChw
YXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9hZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2Fn
ZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7
CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUi
LCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVz
c2FnZSIsIG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAg
ICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bWFrZV9wYWly
KHBhcnNlZFJlc3BvbnNlTWVzc2FnZS50eXBlT3IoTWVkaWFLZXlNZXNzYWdlVHlwZTo6TGljZW5z
ZVJlcXVlc3QpLApAQCAtNjQwLDcgKzY0MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1
bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2VuCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIG1fc2Vzc2lvbklEID09IHNlc3Npb25JRCk7
CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQo
W3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBtdXRhYmxlIHsKICAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAg
IGlmICghYnVmZmVyKQpAQCAtNjQ5LDcgKzY0OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
VGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vu
CiAgICAgICAgICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVz
c2FnZShidWZmZXIpOwogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJzZWRSZXNwb25zZU1lc3Nh
Z2UpOwogICAgICAgICAgICAgICAgIGlmIChwYXJzZWRSZXNwb25zZU1lc3NhZ2UuaGFzUGF5bG9h
ZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBX
VEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAg
ICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2Vk
UmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJV
Rygic2Vzc2lvbiAlcyByZW1vdmVkLCBtZXNzYWdlIGxlbmd0aCAlenUiLCBtX3Nlc3Npb25JRC51
dGY4KCkuZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxs
YmFjayhtX2tleVN0b3JlLmFsbEtleXNBcyhNZWRpYUtleVN0YXR1czo6UmVsZWFzZWQpLCBXVEZN
b3ZlKG1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvQ0RNVGh1bmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKaW5kZXggY2RkOGRhMjExMjNjMTc5MWFlMmZi
NjQzOWZmMmQ2ZmEwZDJlYjIxYy4uMTAyMGUxNTMyMjcxYjUzNTFlMTA2ZGRlOGYyMWVhNTQwNWE5
YzIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9DRE1UaHVuZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmgKQEAgLTkzLDggKzkzLDggQEAgcHVibGljOgog
ICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vy
dmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25z
KCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFs
OworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNz
aW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6CkBAIC0xMTAsNyAr
MTEwLDcgQEAgcHVibGljOgogICAgIC8vIENETUluc3RhbmNlCiAgICAgSW1wbGVtZW50YXRpb25U
eXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0
aW9uVHlwZTo6VGh1bmRlcjsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9u
KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRp
ZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0g
ICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNz
Q2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZv
aWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fa2V5U3lzdGVtOyB9CiAg
ICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAt
MTI2LDggKzEyNiw4IEBAIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXIgZmluYWwgOiBw
dWJsaWMgQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgewogcHVibGljOgogICAgIENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXIoQ0RNSW5zdGFuY2VUaHVuZGVyJik7CiAKLSAgICB2b2lkIHJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2
b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikg
ZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBj
bG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7
CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwg
UmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKQEAgLTE0MSwxNCArMTQxLDE0IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ0RNSW5zdGFuY2VUaHVuZGVyKiBjZG1JbnN0YW5jZVRo
dW5kZXIoKSBjb25zdDsKIAotICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9IHZvaWQgKENETUluc3Rh
bmNlU2Vzc2lvblRodW5kZXI6OiopKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOwor
ICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9IHZvaWQgKENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6
OiopKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB1c2lu
ZyBDaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47Ci0gICAgdXNp
bmcgU2Vzc2lvbkNoYW5nZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoYm9vbCwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJik+OworICAgIHVzaW5nIFNlc3Npb25DaGFuZ2VkQ2FsbGJhY2sgPSBGdW5j
dGlvbjx2b2lkKGJvb2wsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT47CiAKLSAg
ICB2b2lkIGNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYp
OworICAgIHZvaWQgY2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQga2V5VXBkYXRlZENhbGxiYWNrKEtleUlEVHlwZSYm
KTsKICAgICB2b2lkIGtleXNVcGRhdGVEb25lQ2FsbGJhY2soKTsKLSAgICB2b2lkIGVycm9yQ2Fs
bGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBlcnJvckNhbGxiYWNrKFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBDRE1JbnN0YW5jZVNlc3Npb246
OktleVN0YXR1cyBzdGF0dXMoY29uc3QgS2V5SURUeXBlJikgY29uc3Q7CiAgICAgdm9pZCBzZXNz
aW9uRmFpbHVyZSgpOwogCkBAIC0xNTksNyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICBJbml0RGF0
YSBtX2luaXREYXRhOwogICAgIE9wZW5DRE1TZXNzaW9uQ2FsbGJhY2tzIG1fdGh1bmRlclNlc3Np
b25DYWxsYmFja3MgeyB9OwogICAgIEJveFB0cjxPcGVuQ0RNU2Vzc2lvbj4gbV9zZXNzaW9uOwot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWVzc2FnZTsKKyAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdlOwogICAgIGJvb2wgbV9uZWVkc0luZGl2aWR1YWxpemF0
aW9uIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8Q2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2s+IG1f
Y2hhbGxlbmdlQ2FsbGJhY2tzOwogICAgIFZlY3RvcjxTZXNzaW9uQ2hhbmdlZENhbGxiYWNrPiBt
X3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJF
TUVVdGlsaXRpZXMuY3BwCmluZGV4IGNhYTUwZWQ1YzNjMzk5ODMyMmQ0YTJjMjc2MjU2ZTE4MDFm
MWViYjEuLmVhODkwZjY3ZGEyMTM4N2Y0MGRhNjUxYTBjYTVjNzM0OTNlODRmNjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVh
bWVyRU1FVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAKQEAgLTMyLDcgKzMyLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgR01hcmt1cFBhcnNlQ29udGV4dFVzZXJE
YXRhIHsKICAgICBib29sIGlzUGFyc2luZ1Bzc2ggeyBmYWxzZSB9OwotICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBwc3NoOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBzc2g7
CiB9OwogCiBzdGF0aWMgdm9pZCBtYXJrdXBTdGFydEVsZW1lbnQoR01hcmt1cFBhcnNlQ29udGV4
dCosIGNvbnN0IGdjaGFyKiBlbGVtZW50TmFtZSwgY29uc3QgZ2NoYXIqKiwgY29uc3QgZ2NoYXIq
KiwgZ3BvaW50ZXIgdXNlckRhdGFQdHIsIEdFcnJvcioqKQpAQCAtNTcsNyArNTcsNyBAQCBzdGF0
aWMgdm9pZCBtYXJrdXBUZXh0KEdNYXJrdXBQYXJzZUNvbnRleHQqLCBjb25zdCBnY2hhciogdGV4
dCwgZ3NpemUgdGV4dExlbmd0aAogICAgIGlmICh1c2VyRGF0YS0+aXNQYXJzaW5nUHNzaCkgewog
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcHNzaCA9IGJhc2U2NERlY29k
ZSh0ZXh0LCB0ZXh0TGVuZ3RoKTsKICAgICAgICAgaWYgKHBzc2guaGFzX3ZhbHVlKCkpCi0gICAg
ICAgICAgICB1c2VyRGF0YS0+cHNzaCA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShX
VEZNb3ZlKCpwc3NoKSk7CisgICAgICAgICAgICB1c2VyRGF0YS0+cHNzaCA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUoKnBzc2gpKTsKICAgICB9CiB9CiAKQEAgLTcxLDkgKzcxLDkgQEAg
c3RhdGljIHZvaWQgbWFya3VwRXJyb3IoR01hcmt1cFBhcnNlQ29udGV4dCosIEdFcnJvciosIGdw
b2ludGVyKQogCiBzdGF0aWMgR01hcmt1cFBhcnNlciBtYXJrdXBQYXJzZXIgeyBtYXJrdXBTdGFy
dEVsZW1lbnQsIG1hcmt1cEVuZEVsZW1lbnQsIG1hcmt1cFRleHQsIG1hcmt1cFBhc3N0aHJvdWdo
LCBtYXJrdXBFcnJvciB9OwogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFj
dENlbmNJZk5lZWRlZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBh
eWxvYWQpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGE6OmV4dHJhY3RD
ZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiB1bnBhcnNlZFBheWxvYWQpCiB7Ci0g
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFy
c2VkUGF5bG9hZCk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUo
dW5wYXJzZWRQYXlsb2FkKTsKICAgICBpZiAoIXBheWxvYWQgfHwgIXBheWxvYWQtPnNpemUoKSkK
ICAgICAgICAgcmV0dXJuIHBheWxvYWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVN
RVV0aWxpdGllcy5oCmluZGV4IDMzMGJlMjEzYzdmZWZlZGIyZjc4OGI1YzFlYzQ0MWFmNzE5NDlk
NDkuLmFiMjY0ZjM3NzdmZDY5ODk3NWU4M2I4ZDdiZjhhYzk2OGIyOWFjZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVy
RU1FVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBtX3BheWxvYWQuYXBwZW5kKHBhcnNlZFBheWxvYWQucmVsZWFzZU5v
bk51bGwoKSk7CiAgICAgfQogCi0gICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBwYXlsb2FkKQorICAgIEluaXREYXRhKGNvbnN0IFN0cmlu
ZyYgc3lzdGVtSWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCiAg
ICAgICAgIDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKICAgICB7CiAgICAgICAgIGlmIChwYXlsb2Fk
KSB7CkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9wYXlsb2FkLmFwcGVuZCgq
aW5pdERhdGEucGF5bG9hZCgpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBw
YXlsb2FkKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkLmdldCgpOyB9CisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQu
Z2V0KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkKCkgY29uc3QgeyByZXR1cm4gbV9z
eXN0ZW1JZDsgfQogICAgIFN0cmluZyBwYXlsb2FkQ29udGFpbmVyVHlwZSgpIGNvbnN0CiAgICAg
ewpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAiY2VuYyJfczsKICAg
ICB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5lZWRl
ZChSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RhdGljIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYpOwogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3N5c3RlbUlkOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IDU2NGUxZTc1NDRhNTgzZjQxOGUwZGViZTBlMjVjZTZi
NGJmNTQ3OTkuLmJkMTEzYmI2YzI3MzFmYTE5YWRkZWZkMzNhOTlkNDZiYjRhMWY0YTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgRm9udFBsYXRmb3Jt
RGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbiYKICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShmb250LmdldCgpLCBzaXpl
LCBib2xkLCBpdGFsaWMsIG9yaWVudGF0aW9uLCB3aWR0aFZhcmlhbnQsIGZvbnREZXNjcmlwdGlv
bi50ZXh0UmVuZGVyaW5nTW9kZSgpLCAmY3JlYXRpb25EYXRhKTsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBp
dGVtSW5Db2xsZWN0aW9uKQogewogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGJ1ZmZlckRhdGEg
PSBidWZmZXIuY3JlYXRlQ0ZEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4
IDdiYzY2N2U0NjliMDA2MTUxZWIyNWI3OWM4ODY5Zjc2YTMyZjAwNzEuLjY5MjhhNjNlOTcxYzdj
MzVlODg0NGVlZjczYmZhNDRhOGQ4YzAzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApA
QCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGb250Q3JlYXRpb25D
b250ZXh0OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVj
aWZpZWRDYXBhYmlsaXRpZXM7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNl
dHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRp
bmdzOwpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3Jl
YXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIHN0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRh
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK1dFQkNPUkVfRVhQT1JU
IHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
TWF0aERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVNYXRoRGF0YS5jcHAKaW5kZXggYjQxNzkyM2U2ZDc1ZjkzY2ZkMWU0Y2MzMWY4NTAz
NmUxYzYyZjRjMi4uNWQ4OGNkNzc2ODk4YzA1YTkwMzU4OWUyZDRiYWM3MzBhYTFkZjk5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5
cGVNYXRoRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RydWN0IE1hdGhJ
dGFsaWNzQ29ycmVjdGlvbkluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAgT3BlblR5cGU6
OlVJbnQxNiBpdGFsaWNzQ29ycmVjdGlvbkNvdW50OwogICAgIE9wZW5UeXBlOjpNYXRoVmFsdWVS
ZWNvcmQgaXRhbGljc0NvcnJlY3Rpb25bMV07IC8vIFRoZXJlIGFyZSBpdGFsaWNzQ29ycmVjdGlv
bkNvdW50IGl0YWxpYyBjb3JyZWN0aW9uIHZhbHVlcy4KIAotICAgIGludDE2X3QgZ2V0SXRhbGlj
Q29ycmVjdGlvbihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIEdseXBoIGds
eXBoKSBjb25zdAorICAgIGludDE2X3QgZ2V0SXRhbGljQ29ycmVjdGlvbihjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZf
dCBjb3VudCA9IHVpbnQxNl90KGl0YWxpY3NDb3JyZWN0aW9uQ291bnQpOwogICAgICAgICBpZiAo
IWlzVmFsaWRFbmQoYnVmZmVyLCAmaXRhbGljc0NvcnJlY3Rpb25bY291bnRdKSkKQEAgLTkzLDcg
KzkzLDcgQEAgc3RydWN0IE1hdGhHbHlwaEluZm8gOiBUYWJsZVdpdGhDb3ZlcmFnZSB7CiAgICAg
T3BlblR5cGU6Ok9mZnNldCBleHRlbmRlZFNoYXBlQ292ZXJhZ2VPZmZzZXQ7CiAgICAgT3BlblR5
cGU6Ok9mZnNldCBtYXRoS2VybkluZm9PZmZzZXQ7CiAKLSAgICBjb25zdCBNYXRoSXRhbGljc0Nv
cnJlY3Rpb25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoSXRhbGljc0NvcnJlY3Rp
b25JbmZvKiBtYXRoSXRhbGljc0NvcnJlY3Rpb25JbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEl0YWxpY3ND
b3JyZWN0aW9uSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTEyMCw3ICsxMjAs
NyBAQCBzdHJ1Y3QgR2x5cGhBc3NlbWJseSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIFBhcnRGbGFn
c0V4dGVuZGVyID0gMHgwMQogICAgIH07CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0
YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2Vt
Ymx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhE
YXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAg
dWludDE2X3QgY291bnQgPSBwYXJ0Q291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZm
ZXIsICZwYXJ0UmVjb3Jkc1tjb3VudF0pKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0cnVjdCBNYXRo
R2x5cGhDb25zdHJ1Y3Rpb24gOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6VUludDE2
IGFkdmFuY2VNZWFzdXJlbWVudDsKICAgICB9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzWzFdOyAv
LyBUaGVyZSBhcmUgdmFyaWFudENvdW50IE1hdGhHbHlwaFZhcmlhbnRSZWNvcmQncy4KIAotICAg
IHZvaWQgZ2V0U2l6ZVZhcmlhbnRzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CisgICAgdm9pZCBnZXRTaXplVmFyaWFu
dHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxHbHlwaD4mIHZhcmlhbnRzKSBj
b25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSB2YXJpYW50Q291bnQ7CiAgICAg
ICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZtYXRoR2x5cGhWYXJpYW50UmVjb3Jkc1tjb3Vu
dF0pKQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0cnVjdCBNYXRoR2x5cGhDb25zdHJ1Y3Rpb24gOiBU
YWJsZUJhc2UgewogICAgICAgICAgICAgdmFyaWFudHNbaV0gPSBtYXRoR2x5cGhWYXJpYW50UmVj
b3Jkc1tpXS52YXJpYW50R2x5cGg7CiAgICAgfQogCi0gICAgdm9pZCBnZXRBc3NlbWJseVBhcnRz
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0
aERhdGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CisgICAgdm9pZCBnZXRB
c3NlbWJseVBhcnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVN
YXRoRGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKICAgICB7CiAgICAg
ICAgIHVpbnQxNl90IG9mZnNldCA9IGdseXBoQXNzZW1ibHlPZmZzZXQ7CiAgICAgICAgIGNvbnN0
IEdseXBoQXNzZW1ibHkqIGdseXBoQXNzZW1ibHkgPSB2YWxpZGF0ZU9mZnNldDxHbHlwaEFzc2Vt
Ymx5PihidWZmZXIsIG9mZnNldCk7CkBAIC0xNzAsNyArMTcwLDcgQEAgc3RydWN0IE1hdGhWYXJp
YW50cyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGhvcml6b250
YWxHbHlwaENvdW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoQ29uc3RydWN0aW9u
c09mZnNldFsxXTsgLy8gVGhlcmUgYXJlIHZlcnRpY2FsR2x5cGhDb3VudCB2ZXJ0aWNhbCBnbHlw
aCBjb250cnVjdGlvbnMgYW5kIGhvcml6b250YWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNv
bnRydWN0aW9ucy4KIAotICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0aEdseXBo
Q29uc3RydWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGgg
Z2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKKyAgICBjb25zdCBNYXRoR2x5cGhDb25zdHJ1
Y3Rpb24qIG1hdGhHbHlwaENvbnN0cnVjdGlvbihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
R2x5cGggZ2x5cGgsIGJvb2wgaXNWZXJ0aWNhbCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQz
Ml90IGNvdW50ID0gdWludDE2X3QodmVydGljYWxHbHlwaENvdW50KSArIHVpbnQxNl90KGhvcml6
b250YWxHbHlwaENvdW50KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhH
bHlwaENvbnN0cnVjdGlvbnNPZmZzZXRbY291bnRdKSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBzdHJ1
Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhHbHlw
aEluZm9PZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoVmFyaWFudHNPZmZzZXQ7CiAK
LSAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRoQ29uc3RhbnRzKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoQ29uc3RhbnRzKiBtYXRo
Q29uc3RhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAg
ICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aENvbnN0YW50c09mZnNldDsKICAgICAgICAgaWYgKG9m
ZnNldCkKQEAgLTIxMiw3ICsyMTIsNyBAQCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgY29uc3QgTWF0aEdseXBoSW5m
byogbWF0aEdseXBoSW5mbyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0CisgICAgY29uc3QgTWF0aEdseXBoSW5mbyogbWF0aEdseXBoSW5mbyhjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1h
dGhHbHlwaEluZm9PZmZzZXQ7CiAgICAgICAgIGlmIChvZmZzZXQpCkBAIC0yMjAsNyArMjIwLDcg
QEAgc3RydWN0IE1BVEhUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZhcmlhbnRzKGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBNYXRoVmFyaWFu
dHMqIG1hdGhWYXJpYW50cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7
CiAgICAgICAgIHVpbnQxNl90IG9mZnNldCA9IG1hdGhWYXJpYW50c09mZnNldDsKICAgICAgICAg
aWYgKG9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAppbmRleCAzZmY2NmQzMTE4MmU1YzRi
MzZkZDNmMzMwN2E2ODRiOTVkOTU5M2UzLi4yOTkwYmZiMDNmNTYxOTQ1NzdmZGQ0NDc2ZjE0NDk0
YWIxODAzNWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCkBAIC00MCw3ICs0MCw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udDsKIAog
Y2xhc3MgT3BlblR5cGVNYXRoRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPE9wZW5UeXBlTWF0aERh
dGE+IHsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IE9wZW5UeXBl
TWF0aERhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwogCiAjaWYgRU5BQkxFKE9QRU5UWVBF
X01BVEgpCi0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX21hdGhCdWZmZXI7CiAjZWxpZiBVU0UoSEFSRkJV
WlopCiAgICAgSGJVbmlxdWVQdHI8aGJfZm9udF90PiBtX21hdGhGb250OwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVR5cGVzLmgKaW5kZXggMzA0OTYzYTVkZTkwYzgxYzhkNjMwOTEyNjc3ODg3NTMxZDg2ZDJh
Zi4uYzg2NGIyYzNhOGZiMWFlMzc2MzA5M2VlNTA1NWIzNjUxZWYwMTI2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VHlwZXMuaApAQCAtNzMsNyArNzMsNyBAQCB0eXBlZGVmIFVJbnQxNiBHbHlwaElEOwogdHlwZWRl
ZiB1aW50MzJfdCBUYWc7CiAjZGVmaW5lIE9UX01BS0VfVEFHKGNoMSwgY2gyLCBjaDMsIGNoNCkg
KCgoKHVpbnQzMl90KShjaDQpKSA8PCAyNCkgfCAoKCh1aW50MzJfdCkoY2gzKSkgPDwgMTYpIHwg
KCgodWludDMyX3QpKGNoMikpIDw8IDgpIHwgKCh1aW50MzJfdCkoY2gxKSkpCiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlciwgc2l6ZV90IGNvdW50ID0gMSkKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQogewogICAgIGlmICgh
YnVmZmVyIHx8IGJ1ZmZlci0+c2l6ZSgpIDwgc2l6ZW9mKFQpICogY291bnQpCiAgICAgICAgIHJl
dHVybiAwOwpAQCAtODIsNyArODIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNv
bnN0IFQqIHZhbGlkYXRlVGFibGUoY29uc3QgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZQogCiBzdHJ1
Y3QgVGFibGVCYXNlIHsKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qgdm9pZCogcG9zaXRpb24p
CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
Y29uc3Qgdm9pZCogcG9zaXRpb24pCiAgICAgewogICAgICAgICBpZiAocG9zaXRpb24gPCBidWZm
ZXIuZGF0YSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTAsNyArOTAsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKTsgLy8gIjw9
IiBiZWNhdXNlIGVuZCBpcyBpbmNsdWRlZCBhcyB2YWxpZAogICAgIH0KIAotICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0IFQqIHZhbGlkYXRlUHRyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGNvbnN0
IFQqIGNhc3RlZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KHBvc2l0aW9uKTsKICAgICAg
ICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmNhc3RlZFsxXSkpCkBAIC05OCw3ICs5OCw3IEBA
IHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIGNhc3RlZDsKICAgICB9CiAKLSAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGNvbnN0IFQqIHZhbGlkYXRlT2Zmc2V0KGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCB1aW50MTZfdCBvZmZzZXQpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gdmFs
aWRhdGVQdHI8VD4oYnVmZmVyLCByZWludGVycHJldF9jYXN0PGNvbnN0IGludDhfdCo+KHRoaXMp
ICsgb2Zmc2V0KTsKICAgICB9CkBAIC0xMjcsNyArMTI3LDcgQEAgc3RydWN0IENvdmVyYWdlMlRh
YmxlIDogQ292ZXJhZ2VUYWJsZSB7CiAjaWYgRU5BQkxFKE9QRU5UWVBFX01BVEgpCiBzdHJ1Y3Qg
VGFibGVXaXRoQ292ZXJhZ2UgOiBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIGJvb2wgZ2V0
Q292ZXJhZ2VJbmRleChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNvdmVyYWdl
SW5kZXgpIGNvbnN0CisgICAgYm9vbCBnZXRDb3ZlcmFnZUluZGV4KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZSwgR2x5cGggZ2x5cGgsIHVp
bnQzMl90JiBjb3ZlcmFnZUluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoIChjb3Zl
cmFnZS0+Y292ZXJhZ2VGb3JtYXQpIHsKICAgICAgICAgY2FzZSAxOiB7IC8vIENvdmVyYWdlIEZv
cm1hdCAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKaW5kZXggM2NhNzI3YWFmYmQyY2Fk
NGJlMTA2ZjFkYzRjM2YyZTdkZDQ0ODA1Zi4uMzIxNmI3ZWYwNmU5YTQ4MDA5OTE1OTIzMDU2YWNh
M2ZjYmY5MmQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcApAQCAtMTk5LDcgKzE5
OSw3IEBAIHZvaWQgRU9USGVhZGVyOjphcHBlbmRQYWRkaW5nU2hvcnQoKQogCiAvLyBhZGRzIGZv
bnROYW1lIHRvIHRoZSBmb250IHRhYmxlIGluIGZvbnREYXRhLCBhbmQgd3JpdGVzIHRoZSBuZXcg
Zm9udCB0YWJsZSB0byByZXdyaXR0ZW5Gb250VGFibGUKIC8vIHJldHVybnMgdGhlIHNpemUgb2Yg
dGhlIG5hbWUgdGFibGUgKHdoaWNoIGlzIHVzZWQgYnkgcmVuYW1lQW5kQWN0aXZhdGVGb250KSwg
b3IgMCBvbiBlYXJseSBhYm9ydAotYm9vbCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBWZWN0b3I8dWludDhf
dD4mIHJld3JpdHRlbkZvbnREYXRhKQorYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3
cml0dGVuRm9udERhdGEpCiB7CiAgICAgc2l6ZV90IG9yaWdpbmFsRGF0YVNpemUgPSBmb250RGF0
YS5zaXplKCk7CiAgICAgY29uc3Qgc2ZudEhlYWRlciogc2ZudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3Qgc2ZudEhlYWRlcio+KGZvbnREYXRhLmRhdGEoKSk7CkBAIC0yNjYsNyArMjY2LDcgQEAg
Ym9vbCByZW5hbWVGb250KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBj
b25zdCBTdHJpbmcmIGZvbnROYW1lLAogfQogCiAvLyBSZW5hbWUgdGhlIGZvbnQgYW5kIGluc3Rh
bGwgdGhlIG5ldyBmb250IGRhdGEgaW50byB0aGUgc3lzdGVtCi1SZWZQdHI8Rm9udE1lbW9yeVJl
c291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUpCitSZWZQdHI8Rm9udE1lbW9yeVJl
c291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0
YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gcmV3cml0
dGVuRm9udERhdGE7CiAgICAgaWYgKCFyZW5hbWVGb250KGZvbnREYXRhLCBmb250TmFtZSwgcmV3
cml0dGVuRm9udERhdGEpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKaW5kZXggMjJiZTIzMGE2
MDVjNjZhMGVmNWJjMTQ4YTI2Mjc5N2QzNzJjMmFjNC4uZmEwMDA4MTE2MDY2OTdkYzVjNTExMjMz
M2M5MGM4YzkyYjRiNjcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCkBAIC0zNSwxMCAr
MzUsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEJpZ0VuZGlhblVTaG9ydDsK
LWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1
Y3QgRU9UUHJlZml4OwogY2xhc3MgRm9udE1lbW9yeVJlc291cmNlOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IEVPVEhlYWRlciB7
CiAgICAgRU9USGVhZGVyKCk7CkBAIC01NSw4ICs1NSw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9y
PHVpbnQ4X3QsIDUxMj4gbV9idWZmZXI7CiB9OwogCi1ib29sIHJlbmFtZUZvbnQoY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOwot
UmVmUHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgcmVuYW1lRm9udChj
b25zdCBTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8dWludDhfdD4mKTsKK1Jl
ZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVZlcnRpY2FsRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKaW5kZXggNzllOWVmZTA2MDUzMzU3OWU5
Y2EzYmMxMDMyMzhiZmQyODJmNzE1Yy4uMGZhOGYzMDZhZDk1MmQwNmEwOTI5N2QwYjFkMjg3Yjg5
ODgzMmEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcApAQCAtMTE2LDcg
KzExNiw3IEBAIHN0cnVjdCBTdWJzdGl0dXRpb25TdWJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAg
T3BlblR5cGU6OlVJbnQxNiBzdWJzdEZvcm1hdDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGNvdmVy
YWdlT2Zmc2V0OwogCi0gICAgY29uc3QgQ292ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNl
dDxDb3ZlcmFnZVRhYmxlPihidWZmZXIsIGNvdmVyYWdlT2Zmc2V0KTsgfQorICAgIGNvbnN0IENv
dmVyYWdlVGFibGUqIGNvdmVyYWdlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7
IHJldHVybiB2YWxpZGF0ZU9mZnNldDxDb3ZlcmFnZVRhYmxlPihidWZmZXIsIGNvdmVyYWdlT2Zm
c2V0KTsgfQogfTsKIAogc3RydWN0IFNpbmdsZVN1YnN0aXR1dGlvbjJTdWJUYWJsZSA6IFN1YnN0
aXR1dGlvblN1YlRhYmxlIHsKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdHJ1Y3QgTG9va3VwVGFibGUg
OiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgc3ViVGFibGVPZmZzZXRzWzFdOwog
ICAgIC8vIE9wZW5UeXBlOjpVSW50MTYgbWFya0ZpbHRlcmluZ1NldDsgdGhpcyBmaWVsZCBjb21l
cyBhZnRlciB2YXJpYWJsZSBsZW5ndGgsIHNvIG9mZnNldCBpcyBkZXRlcm1pbmVkIGR5bmFtaWNh
bGx5LgogCi0gICAgYm9vbCBnZXRTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiog
bWFwLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9v
bCBnZXRTdWJzdGl0dXRpb25zKEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50U3Vi
VGFibGUgPSBzdWJUYWJsZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAm
c3ViVGFibGVPZmZzZXRzW2NvdW50U3ViVGFibGVdKSkKQEAgLTE5NCw3ICsxOTQsNyBAQCBzdHJ1
Y3QgTG9va3VwTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29rdXBD
b3VudDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cE9mZnNldHNbMV07CiAKLSAgICBjb25z
dCBMb29rdXBUYWJsZSogbG9va3VwKHVpbnQxNl90IGluZGV4LCBjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTG9va3VwVGFibGUqIGxvb2t1cCh1
aW50MTZfdCBpbmRleCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewog
ICAgICAgICB1aW50MTZfdCBjb3VudCA9IGxvb2t1cENvdW50OwogICAgICAgICBpZiAoaW5kZXgg
Pj0gY291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmbG9va3VwT2Zmc2V0c1tjb3VudF0pKQpA
QCAtMjA4LDcgKzIwOCw3IEBAIHN0cnVjdCBGZWF0dXJlVGFibGUgOiBUYWJsZUJhc2UgewogICAg
IE9wZW5UeXBlOjpVSW50MTYgbG9va3VwQ291bnQ7CiAgICAgT3BlblR5cGU6OlVJbnQxNiBsb29r
dXBMaXN0SW5kZXhbMV07CiAKLSAgICBib29sIGdldEdseXBoU3Vic3RpdHV0aW9ucyhjb25zdCBM
b29rdXBMaXN0KiBsb29rdXBzLCBIYXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0R2x5cGhTdWJz
dGl0dXRpb25zKGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBo
PiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAg
IHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChi
dWZmZXIsICZsb29rdXBMaXN0SW5kZXhbY291bnRdKSkKQEAgLTIyOSw3ICsyMjksNyBAQCBzdHJ1
Y3QgRmVhdHVyZUxpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICBPcGVuVHlwZTo6T2Zmc2V0IGZl
YXR1cmVPZmZzZXQ7CiAgICAgfSBmZWF0dXJlc1sxXTsKIAotICAgIGNvbnN0IEZlYXR1cmVUYWJs
ZSogZmVhdHVyZSh1aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUq
IGZlYXR1cmUodWludDE2X3QgaW5kZXgsIE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVh
dHVyZUNvdW50OwogICAgICAgICBpZiAoaW5kZXggPj0gY291bnQgfHwgIWlzVmFsaWRFbmQoYnVm
ZmVyLCAmZmVhdHVyZXNbY291bnRdKSkKQEAgLTIzOSw3ICsyMzksNyBAQCBzdHJ1Y3QgRmVhdHVy
ZUxpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBjb25z
dCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxl
KiBmaW5kRmVhdHVyZShPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICBmb3IgKHVpbnQxNl90IGkgPSAwOyBpIDwgZmVhdHVy
ZUNvdW50OyArK2kpIHsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1
cmVzW2ldKSAmJiBmZWF0dXJlc1tpXS5mZWF0dXJlVGFnID09IHRhZykKQEAgLTI1NSw3ICsyNTUs
NyBAQCBzdHJ1Y3QgTGFuZ1N5c1RhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUlu
dDE2IGZlYXR1cmVDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGZlYXR1cmVJbmRleFsxXTsK
IAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVU
YWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVu
VHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlcywgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3Vu
dCA9IGZlYXR1cmVDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmZlYXR1
cmVJbmRleFtjb3VudF0pKQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHN0cnVjdCBTY3JpcHRUYWJsZSA6
IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgbGFuZ1N5c09mZnNldDsKICAg
ICB9IGxhbmdTeXNSZWNvcmRzWzFdOwogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0
TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAg
Y29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gbGFuZ1N5c0NvdW50
OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbGFuZ1N5c1JlY29yZHNbY291bnRd
KSkKQEAgLTI5OCw3ICsyOTgsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAg
ICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgc2NyaXB0T2Zmc2V0OwogICAgIH0gc2NyaXB0c1sxXTsK
IAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRU
YWJsZSogc2NyaXB0KE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAg
ICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzY3JpcHRzW2NvdW50XSkpCkBAIC0zMTAs
NyArMzEwLDcgQEAgc3RydWN0IFNjcmlwdExpc3QgOiBUYWJsZUJhc2UgewogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAKLSAgICBjb25zdCBTY3JpcHRUYWJsZSogZGVmYXVsdFNjcmlwdChjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgU2NyaXB0
VGFibGUqIGRlZmF1bHRTY3JpcHQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAg
ICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHNjcmlwdENvdW50OwogICAgICAgICBpZiAo
IWNvdW50IHx8ICFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMyMSw3
ICszMjEsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVy
biB2YWxpZGF0ZU9mZnNldDxTY3JpcHRUYWJsZT4oYnVmZmVyLCBzY3JpcHRzWzBdLnNjcmlwdE9m
ZnNldCk7CiAgICAgfQogCi0gICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhj
b25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFu
Z1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3JpcHRUYWJsZSA9IGRlZmF1
bHRTY3JpcHQoYnVmZmVyKTsKICAgICAgICAgaWYgKCFzY3JpcHRUYWJsZSkKQEAgLTMzNiwxMSAr
MzM2LDExIEBAIHN0cnVjdCBHU1VCVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpP
ZmZzZXQgZmVhdHVyZUxpc3RPZmZzZXQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBsb29rdXBMaXN0
T2Zmc2V0OwogCi0gICAgY29uc3QgU2NyaXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNj
cmlwdExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBGZWF0dXJl
TGlzdCogZmVhdHVyZUxpc3QoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxGZWF0dXJlTGlzdD4oYnVmZmVyLCBmZWF0dXJl
TGlzdE9mZnNldCk7IH0KLSAgICBjb25zdCBMb29rdXBMaXN0KiBsb29rdXBMaXN0KGNvbnN0IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZz
ZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IFNj
cmlwdExpc3QqIHNjcmlwdExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsg
cmV0dXJuIHZhbGlkYXRlT2Zmc2V0PFNjcmlwdExpc3Q+KGJ1ZmZlciwgc2NyaXB0TGlzdE9mZnNl
dCk7IH0KKyAgICBjb25zdCBGZWF0dXJlTGlzdCogZmVhdHVyZUxpc3QoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0Pihi
dWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0KTsgfQorICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1
cExpc3QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRl
T2Zmc2V0PExvb2t1cExpc3Q+KGJ1ZmZlciwgbG9va3VwTGlzdE9mZnNldCk7IH0KIAotICAgIGNv
bnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdTeXMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IExhbmdTeXNUYWJsZSogZGVmYXVsdExhbmdT
eXMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICBjb25z
dCBTY3JpcHRMaXN0KiBzY3JpcHRzID0gc2NyaXB0TGlzdChidWZmZXIpOwogICAgICAgICBpZiAo
IXNjcmlwdHMpCkBAIC0zNDgsNyArMzQ4LDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFz
ZSB7CiAgICAgICAgIHJldHVybiBzY3JpcHRzLT5kZWZhdWx0TGFuZ1N5cyhidWZmZXIpOwogICAg
IH0KIAotICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1
cmVUYWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBj
b25zdCBGZWF0dXJlVGFibGUqIGZlYXR1cmUoT3BlblR5cGU6OlRhZyBmZWF0dXJlVGFnLCBjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IExhbmdT
eXNUYWJsZSogbGFuZ1N5cyA9IGRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgICAgIGNvbnN0
IEZlYXR1cmVMaXN0KiBmZWF0dXJlcyA9IGZlYXR1cmVMaXN0KGJ1ZmZlcik7CkBAIC0zNjUsNyAr
MzY1LDcgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiBm
ZWF0dXJlOwogICAgIH0KIAotICAgIGJvb2wgZ2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMo
SGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldFZlcnRpY2FsR2x5cGhTdWJzdGl0dXRpb25zKEhh
c2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKICAgICB7CiAgICAgICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogdmVydGljYWxGZWF0dXJlVGFi
bGUgPSBmZWF0dXJlKE9wZW5UeXBlOjpWZXJ0RmVhdHVyZVRhZywgYnVmZmVyKTsKICAgICAgICAg
aWYgKCF2ZXJ0aWNhbEZlYXR1cmVUYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3RXcml0ZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKaW5kZXggYTYy
NzE5YjE3MTlhNzRmOTc2OTIyMTlkZjVmN2FhZWRjNDkwNjQ2Ni4uMGRiNGFmYWRiM2Y3NDJiODNh
NGUxNmNmMzcxODcwYTJiMDQwNGVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmgKQEAgLTQzLDcg
KzQzLDcgQEAgZW51bSBEV1JJVEVfRk9OVF9TVFJFVENIOwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIERpcmVjdFdyaXRlIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IDhiZTFiMWEzM2E2MjA1YzE4MWNlZmYxYWMzNDM0
YmM4N2E3ODNiZTUuLmM4NjgzYTdlZjU4OWMzZmU2NTRkODQ1NzEyOTVlMjQwZDIyNDQ5ZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMg
U3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKICAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBpdGVtSW5Db2xsZWN0aW9uKQorc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKIHsKICAgICBTdHJpbmcgZm9udE5hbWUgPSBj
cmVhdGVVbmlxdWVGb250TmFtZSgpOwogICAgIGF1dG8gZm9udFJlc291cmNlID0gcmVuYW1lQW5k
QWN0aXZhdGVGb250KGJ1ZmZlciwgZm9udE5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgK
aW5kZXggZmMwNGYxNzVjNzg4YjliZTk5OGY1ZjNiNzExZjU5N2MwMjZiYmY5ZS4uMDhmYzlmMTll
YWVhOTQ4M2VhNThlYzFhZWVkZDQ1NzI1NmNlMjdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5oCkBAIC0zNiwxMyArMzYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dGb250KiBDR0ZvbnRSZWY7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBG
b250RGVzY3JpcHRpb247CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7CiBzdHJ1Y3QgRm9udFNl
bGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczsKIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdz
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5nczsKIHR5cGVkZWYg
Rm9udFRhZ2dlZFNldHRpbmdzPGludD4gRm9udEZlYXR1cmVTZXR0aW5nczsKQEAgLTY1LDcgKzY1
LDcgQEAgcHVibGljOgogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlv
bkRhdGE7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCmluZGV4IGY0ZmJmN2E3
ZjRkN2M4M2ZmMjExNmMzMWU1NDZjYTkxZTA1ODljYjEuLjNjMWQ0ZTJmM2M3NTRhNzNhODIzYTAw
YzE2NzRlYzMwNDQ5MzExMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8u
Y3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUo
KQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9u
KQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAg
YXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dFBsYXRmb3JtRGF0YUNhaXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCmluZGV4IDRjNjc0YzQ3NDNiYzAx
MThhOTcwMTBjYzY5Mjg5YjU4NmRiYjBjZDEuLjMxYTFlNWM1MzFmMjA5MDNjNWNmYjMyODYwYmE1
ZWYyMDY0ZTkzZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCkBAIC05OCw3
ICs5OCw3IEBAIGJvb2wgRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1Jc0VxdWFsKGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmIG90aGVyKSBjb25zdAogICAgICAgICAmJiBtX3VzZUdESSA9PSBvdGhl
ci5tX3VzZUdESTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0
Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8U2hh
cmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdAogewogICAgIHJldHVybiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodGFibGUpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRQbGF0Zm9ybURhdGFXaW4uY3BwCmluZGV4IDQzOWNmODYzYjg3M2RjOWNmN2Y4MTA1OTllNWE2
MDFlN2Y3Mzc5OTcuLjZjYjU1MTEwNGE5M2JkYmQyMmI0MTdhNDU0NmQyMGZhZDBlMmEzNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZv
cm1EYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKQEAgLTU5LDE4ICs1OSwxOCBAQCBGb250UGxhdGZvcm1E
YXRhOjpGb250UGxhdGZvcm1EYXRhKEdESU9iamVjdDxIRk9OVD4gZm9udCwgZmxvYXQgc2l6ZSwg
Ym9vbCBib2xkLAogICAgIFJlc3RvcmVEQyhoZGMsIC0xKTsKIH0KIAotUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1
aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURh
dGE6OnBsYXRmb3JtT3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKIHsKICAgICBI
V25kREMgaGRjKDApOwogICAgIEhHRElPQkogb2xkRm9udCA9IFNlbGVjdE9iamVjdChoZGMsIGhm
b250KCkpOwogCiAgICAgRFdPUkQgc2l6ZSA9IEdldEZvbnREYXRhKGhkYywgdGFibGUsIDAsIDAs
IDApOwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChzaXplICE9IEdESV9FUlJPUikgewog
ICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YShzaXplKTsKICAgICAgICAgRFdPUkQgcmVzdWx0
ID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgKFBWT0lEKWRhdGEuZGF0YSgpLCBzaXplKTsK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9PSBzaXplKTsKLSAgICAgICAg
YnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwor
ICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKICAg
ICB9CiAKICAgICBTZWxlY3RPYmplY3QoaGRjLCBvbGRGb250KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuY3BwCmluZGV4IDYyOWUwZTYxYTEwNGM1NjdhMWQ0ZWRjYjdlNTc5N2RjZjY3YzZlOGUuLjc3
MzU3MzliOTMzNGY0NGQ5OWEzZjEyZmZjNWJmN2I0MWY3Y2M2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRp
cmVjdDJELmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQ6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3ViCiAg
ICAgcmV0dXJuIGJpdG1hcDsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJEaXJlY3QyRDo6c2V0RGF0
YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBJbWFnZURl
Y29kZXJEaXJlY3QyRDo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIWFsbERhdGFSZWNlaXZlZCkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlRGVjb2RlckRpcmVjdDJELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAppbmRleCA0ZjQ3MjU4NmI0MjRiZGExY2Y2ZmEw
MTQzY2JhMjNkMDMwMDE2ZTQ1Li5jMjM2NWZkNzQ0YzYxMThjMTk5OWUwNWI4MDJlZDViNDhmMzY0
ODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VEZWNvZGVyRGlyZWN0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBJbWFn
ZURlY29kZXJEaXJlY3QyRCBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogcHVibGljOgog
ICAgIEltYWdlRGVjb2RlckRpcmVjdDJEKCk7CiAKLSAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rl
ckRpcmVjdDJEPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKQorICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyRGlyZWN0MkQ+IGNy
ZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VE
ZWNvZGVyRGlyZWN0MkQoKSk7CiAgICAgfQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAKICAg
ICBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2Ft
cGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0
aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFs
OwogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIHZvaWQgY2xlYXJG
cmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWwgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VXaW4uY3BwCmluZGV4IDBkODgyMGU5ZjNkNmZk
NzczNWQ1NzBiMzY0MTQ4OGY1M2JkN2VjZTkuLjJkOTcyNzBhNzM0ODM0ODkzZTc4YzgxZmYwZWM1
YmI1ZGZlYzNmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlV2luLmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogCiAvLyBUaGlzIGZ1bmN0aW9uIGxvYWRzIHJlc291cmNlcyBmcm9tIFdlYktpdAotUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBj
aGFyKik7CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291
cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKik7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKaW5kZXggN2UzYjM2MzJi
OTBjNjE5NDE1ZTQ4YTUyYTIyNThiMTQyZTAwMWE1Ny4uY2YyYjUxZjZmMDI4MzdhMTEwNmY0ZDk5
OWYyZjEzMGUyNTgwOTg2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1NlbGVjdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0
aW9uRGF0YS5oCkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENhblNtYXJ0
UmVwbGFjZShib29sIGNhblNtYXJ0UmVwbGFjZSkgeyBtX2NhblNtYXJ0UmVwbGFjZSA9IGNhblNt
YXJ0UmVwbGFjZTsgfQogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlKCkgY29uc3QgeyByZXR1cm4g
bV9jYW5TbWFydFJlcGxhY2U7IH0KIAotICAgIHZvaWQgc2V0Q3VzdG9tRGF0YShSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9jdXN0b21EYXRhID0gV1RGTW92ZShidWZm
ZXIpOyB9Ci0gICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fY3VzdG9tRGF0YS5nZXQoKTsgfQorICAgIHZvaWQgc2V0Q3VzdG9tRGF0YShSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7
IH0KKyAgICBTaGFyZWRCdWZmZXIqIGN1c3RvbURhdGEoKSBjb25zdCB7IHJldHVybiBtX2N1c3Rv
bURhdGEuZ2V0KCk7IH0KICAgICBib29sIGhhc0N1c3RvbURhdGEoKSBjb25zdCB7IHJldHVybiAh
IW1fY3VzdG9tRGF0YTsgfQogICAgIHZvaWQgY2xlYXJDdXN0b21EYXRhKCkgeyBtX2N1c3RvbURh
dGEgPSBudWxscHRyOyB9CiAKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8
U3RyaW5nPiBtX2ZpbGVuYW1lczsKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CiAgICAgYm9v
bCBtX2NhblNtYXJ0UmVwbGFjZSB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2N1c3Rv
bURhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVj
b2Rlci5jcHAKaW5kZXggZDk1NmQ5ZTc2MjVkNWJiNWE3MGYwNjkzZTc3OThlZTkwODQ5ZjE2NS4u
MzNjOTVlYzMzMzNhOTIwYzY0YTAxODE3NTFlYjRhNTA1ZWYxYTdhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxl
SW1hZ2VEZWNvZGVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IG5hbWVzcGFjZSB7CiAKLXN0YXRpYyB1bnNpZ25lZCBjb3B5RnJvbVNoYXJlZEJ1ZmZlcihjaGFy
KiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QgU2hhcmVkQnVmZmVyJiBzaGFy
ZWRCdWZmZXIpCitzdGF0aWMgdW5zaWduZWQgY29weUZyb21TaGFyZWRCdWZmZXIoY2hhciogYnVm
ZmVyLCB1bnNpZ25lZCBidWZmZXJMZW5ndGgsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IHNoYXJlZEJ1ZmZlcikKIHsKICAgICB1bnNpZ25lZCBieXRlc0V4dHJhY3RlZCA9IDA7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogc2hhcmVkQnVmZmVyKSB7CkBAIC0xMzUsNyArMTM1
LDcgQEAgYm9vbCBtYXRjaGVzQ1VSU2lnbmF0dXJlKGNoYXIqIGNvbnRlbnRzKQogCiB9CiAKLVJl
ZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZShT
aGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxTY2FsYWJs
ZUltYWdlRGVjb2Rlcj4gU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGxlbmd0aE9mTG9uZ2VzdFNpZ25hdHVyZSA9IDE0OyAvLyBUbyB3aXQ6ICJS
SUZGPz8/P1dFQlBWUCIKICAgICBjaGFyIGNvbnRlbnRzW2xlbmd0aE9mTG9uZ2VzdFNpZ25hdHVy
ZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9T
Y2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCAzYzZhM2E1MGM4MjA5NjRlOGE5YjA3
NDkwMWE5MmIzZjNjNDc4OWI3Li45YzQwNTU3ODI0MWQwYzUxMjcwMjk1MTVjMjIxMjY1OGY4YzRm
NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9T
Y2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGlj
OgogCiAgICAgLy8gUmV0dXJucyBudWxscHRyIGlmIHdlIGNhbid0IHNuaWZmIGEgc3VwcG9ydGVk
IHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgZGF0YSAocG9zc2libHkKICAgICAvLyBiZWNhdXNlIHRo
ZXJlIGlzbid0IGVub3VnaCBkYXRhIHlldCkuCi0gICAgc3RhdGljIFJlZlB0cjxTY2FsYWJsZUlt
YWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNjYWxhYmxlSW1hZ2VE
ZWNvZGVyPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBo
YSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQogCkBAIC03MCw3ICs3MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2Rl
ZERhdGFTdGF0dXM6OkNvbXBsZXRlOwogICAgIH0KIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRC
dWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZQorICAgIHZvaWQgc2V0
RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
b3ZlcnJpZGUKICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAg
ICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQpA
QCAtMTk0LDcgKzE5NCw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBo
b3RTcG90KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKIHByb3Rl
Y3RlZDoKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOwogICAg
IFZlY3RvcjxTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lLCAxPiBtX2ZyYW1lQnVmZmVyQ2FjaGUg
V1RGX0dVQVJERURfQllfTE9DSyhtX2xvY2spOwogICAgIG11dGFibGUgTG9jayBtX2xvY2s7CiAg
ICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAK
aW5kZXggN2M2MDNmZDgzNThjMjE0YWM5MTg0ZjMxODk5NzJmZTg0MWI2MWU4MC4uMjZmODg2NDk2
ZTVhNWExNGUyOGFmYjFhZmE5YmZjMzAxNzdmNTFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVh
ZGVyLmNwcApAQCAtNDEsNyArNDEsNyBAQCBBVklGSW1hZ2VSZWFkZXI6OkFWSUZJbWFnZVJlYWRl
cihSZWZQdHI8QVZJRkltYWdlRGVjb2Rlcj4mJiBkZWNvZGVyKQogCiBBVklGSW1hZ2VSZWFkZXI6
On5BVklGSW1hZ2VSZWFkZXIoKSA9IGRlZmF1bHQ7CiAKLWJvb2wgQVZJRkltYWdlUmVhZGVyOjpw
YXJzZUhlYWRlcihjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKK2Jvb2wgQVZJRkltYWdlUmVhZGVyOjpwYXJzZUhlYWRlcihjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiB7CiAgICAgaWYgKGF2aWZEZWNvZGVyU2V0SU9NZW1vcnkobV9hdmlmRGVjb2Rlci5n
ZXQoKSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSAhPSBBVklGX1JFU1VMVF9PSykKICAgICAg
ICAgcmV0dXJuIGFsbERhdGFSZWNlaXZlZCA/IG1fZGVjb2Rlci0+c2V0RmFpbGVkKCkgOiBmYWxz
ZTsKQEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNv
bnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgYWwKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBBVklGSW1hZ2VSZWFkZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFt
ZUluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiBidWZmZXIsIGNvbnN0IFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpCit2b2lkIEFWSUZJbWFnZVJlYWRlcjo6ZGVjb2RlRnJh
bWUoc2l6ZV90IGZyYW1lSW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmIGJ1ZmZlciwg
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpCiB7CiAgICAg
aWYgKG1fZGVjb2Rlci0+ZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFn
ZVJlYWRlci5oCmluZGV4IGNiY2EwYjhjMTI0YmZmMGZmYzMzMDFiYTM1YmNlMDFlZDI3MjJkZjgu
LjQ5NmY2OWY4MTJiZDc1YjBlZGE2MzU3YmFhODYwY2ZjY2I1YmE0YjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklG
SW1hZ2VSZWFkZXIuaApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAgICAgQVZJRkltYWdlUmVh
ZGVyKFJlZlB0cjxBVklGSW1hZ2VEZWNvZGVyPiYmKTsKICAgICB+QVZJRkltYWdlUmVhZGVyKCk7
CiAKLSAgICBib29sIHBhcnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQm
LCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgdm9pZCBkZWNvZGVGcmFtZShzaXplX3QgaW5k
ZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmLCBjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50Jik7CisgICAgYm9vbCBwYXJzZUhlYWRlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudCYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2b2lkIGRlY29k
ZUZyYW1lKHNpemVfdCBpbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYsIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Jik7CiAgICAgc2l6ZV90IGltYWdlQ291
bnQoKSBjb25zdDsKICAgICBkb3VibGUgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1w
L0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggNzI3NjlhNjkyNmVjMjQxOWJmNjYzODI1MjhkM2Q3
NzIwYTU0YWRhZS4uZjc0NTVjMTQ2YzdlOGFlYjA0Y2M4YzU2ZjMzMGUyYTAxZjNiYTcyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUElt
YWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgQk1QSW1hZ2VEZWNv
ZGVyOjpCTVBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3AKIHsKIH0KIAotdm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVk
QnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgQk1QSW1hZ2VEZWNvZGVy
OjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
RGVjb2Rlci5oCmluZGV4IGM3YzdjYTgxZmVhNmI4YTc3NGJiMzA4ZTUzOGRjZDA0OGM5OTVlZWEu
LjY0ZGVkNmFiYmUyYzBhMjliMTFmOWZiNWVjZDZiNDg3MjRkNTg5NzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1h
Z2VEZWNvZGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2NhbGFibGVJ
bWFnZURlY29kZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7
IHJldHVybiAiYm1wIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBTY2FsYWJsZUltYWdl
RGVjb2RlckZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBmaW5hbDsKICAg
ICAvLyBDQVVUSU9OOiBzZXRGYWlsZWQoKSBkZWxldGVzIHxtX3JlYWRlcnwuIEJlIGNhcmVmdWwg
dG8gYXZvaWQKICAgICAvLyBhY2Nlc3NpbmcgZGVsZXRlZCBtZW1vcnksIGVzcGVjaWFsbHkgd2hl
biBjYWxsaW5nIHRoaXMgZnJvbSBpbnNpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgKaW5kZXggNDg0
NGYzODBkYzE3ZWM3MDQ1ODhmYjEyZjUzZWFiYzZkMjBlNjBmNC4uYmQ0MzBlOGE4YmVhMmM4MTZi
MmM1MjJiZjViYTc4ODQ2YzM4ZTBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgKQEAgLTQyLDcg
KzQyLDcgQEAgY2xhc3MgQk1QSW1hZ2VSZWFkZXIgewogcHVibGljOgogICAgIC8vIFJlYWQgYSB2
YWx1ZSBmcm9tIHxkYXRhW29mZnNldF18LCBjb252ZXJ0aW5nIGZyb20gbGl0dGxlIHRvIG5hdGl2
ZQogICAgIC8vIGVuZGlhbm5lc3MuCi0gICAgc3RhdGljIGlubGluZSB1aW50MTZfdCByZWFkVWlu
dDE2KGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQpCisg
ICAgc3RhdGljIGlubGluZSB1aW50MTZfdCByZWFkVWludDE2KGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQogICAgIHsKICAgICAgICAg
dWludDE2X3QgcmVzdWx0OwogICAgICAgICBtZW1jcHkoJnJlc3VsdCwgJmRhdGEuZGF0YSgpW29m
ZnNldF0sIDIpOwpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCi0gICAgc3RhdGljIGlubGluZSB1aW50MzJfdCByZWFkVWludDMyKGNvbnN0
IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQpCisgICAgc3RhdGlj
IGlubGluZSB1aW50MzJfdCByZWFkVWludDMyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQogICAgIHsKICAgICAgICAgdWludDMyX3Qg
cmVzdWx0OwogICAgICAgICBtZW1jcHkoJnJlc3VsdCwgJmRhdGEuZGF0YSgpW29mZnNldF0sIDQp
OwpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgQk1QSW1hZ2VSZWFkZXIoU2NhbGFibGVJ
bWFnZURlY29kZXIqIHBhcmVudCwgc2l6ZV90IGRlY29kZWRBbmRIZWFkZXJPZmZzZXQsIHNpemVf
dCBpbWdEYXRhT2Zmc2V0LCBib29sIHVzZXNBbmRNYXNrKTsKIAogICAgIHZvaWQgc2V0QnVmZmVy
KFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIGJ1ZmZlcikgeyBtX2J1ZmZlciA9IGJ1ZmZlcjsg
fQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKSB7IG1f
ZGF0YSA9ICZkYXRhOyB9CisgICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50JiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9CiAKICAgICAvLyBEb2VzIHRo
ZSBhY3R1YWwgZGVjb2RpbmcuIElmIHxvbmx5U2l6ZXwgaXMgdHJ1ZSwgZGVjb2Rpbmcgb25seQog
ICAgIC8vIHByb2dyZXNzZXMgYXMgZmFyIGFzIG5lY2Vzc2FyeSB0byBnZXQgdGhlIGltYWdlIHNp
emUuIFJldHVybnMKQEAgLTI3Miw3ICsyNzIsNyBAQCBwcml2YXRlOgogICAgIFNjYWxhYmxlSW1h
Z2VEZWNvZGVyRnJhbWUqIG1fYnVmZmVyOwogCiAgICAgLy8gVGhlIGZpbGUgdG8gZGVjb2RlLgot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CisgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CiAKICAgICAvLyBB
biBpbmRleCBpbnRvIHxtX2RhdGF8IHJlcHJlc2VudGluZyBob3cgbXVjaCB3ZSd2ZSBhbHJlYWR5
IGRlY29kZWQuCiAgICAgc2l6ZV90IG1fZGVjb2RlZE9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlQmFja2luZ1N0b3Jl
Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8v
SW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAKaW5kZXggNjAxMjAzNzRmOWM0MzE2OGE2NTIxYjY5
YzU0YWZiZTJhMDBmNTVmNy4uNGEyMTI1NWE4YzBmYjY3OGU0YWFkZDc2NjNlYjdmOTE4ZTdmZTk0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fp
cm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAKQEAgLTM3
LDcgKzM3LDkgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZUJhY2tpbmdTdG9yZTo6aW1hZ2UoKSBj
b25zdAogICAgICAgICByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihjb25zdF9jYXN0
PHVpbnQzMl90Kj4obV9waXhlbHNQdHIpKSwKICAgICAgICAgQ0FJUk9fRk9STUFUX0FSR0IzMiwg
c2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSwgc2l6ZSgpLndpZHRoKCkgKiBzaXplb2Yo
dWludDMyX3QpKSk7CiAgICAgc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBzX3N1cmZhY2VE
YXRhS2V5OwotICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0YShzdXJmYWNlLmdldCgpLCAm
c19zdXJmYWNlRGF0YUtleSwgbV9waXhlbHMuZ2V0KCksIFtdKHZvaWQqIGRhdGEpIHsgc3RhdGlj
X2Nhc3Q8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCo+KGRhdGEpLT5kZXJlZigpOyB9KTsKKyAg
ICBjYWlyb19zdXJmYWNlX3NldF91c2VyX2RhdGEoc3VyZmFjZS5nZXQoKSwgJnNfc3VyZmFjZURh
dGFLZXksIG1fcGl4ZWxzLmdldCgpLCBbXSh2b2lkKiBkYXRhKSB7CisgICAgICAgIHN0YXRpY19j
YXN0PERhdGFTZWdtZW50Kj4oZGF0YSktPmRlcmVmKCk7CisgICAgfSk7CiAKICAgICByZXR1cm4g
c3VyZmFjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKaW5kZXggZTZhYmUwZDk1NDRi
NmMxODVjNjQ1ZGVjZTA5ZjIzZjk1NjY2MDdjYi4uYjllYzAxYjhhZThlOGQyOWJjNzgyNTI2ZTA3
NjUyNTUxZTM1OWMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKQEAgLTM4LDcgKzM4
LDcgQEAgR0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3AKIAogR0lGSW1hZ2VEZWNvZGVyOjp+R0lGSW1h
Z2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lkIEdJRkltYWdlRGVjb2Rlcjo6c2V0RGF0YShT
aGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBHSUZJbWFnZURl
Y29kZXI6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VE
ZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VEZWNvZGVyLmgKaW5kZXggMzVkZjMzZjZkZmM0ODNmZDg0NzEzNjZhZTUzYmIwYjk2MWNh
ZWQyZS4uYzc0NzE5OTk5Yjk4NmMxY2VmODQ3ODc1OWQyMzcxOGM5MDQyZDNlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZURlY29kZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2Fs
YWJsZUltYWdlRGVjb2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICJnaWYiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRhKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAg
ICBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIGZpbmFsOwogICAgIHNpemVfdCBmcmFtZUNv
dW50KCkgY29uc3QgZmluYWw7CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgp
IGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAppbmRleCA0MjE0NmUwMzI5MzIzNjk5
Nzg5ZWI1ZTQyYWY0YzczZDM0YWI5Y2M2Li4xMDgyZmRmMGRmZjIzOTFlNTY1MzBhNDFmODdiYTQz
OTgyMzI3NTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaApAQCAtMjM3LDcgKzIzNyw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KKyAgICB2b2lkIHNl
dERhdGEoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEp
IHsgbV9kYXRhID0gJmRhdGE7IH0KICAgICAvLyBGSVhNRTogaGFsdEF0RnJhbWUgc2hvdWxkIGJl
IHNpemVfdC4KICAgICBib29sIGRlY29kZShXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OkdJRlF1
ZXJ5LCB1bnNpZ25lZCBoYWx0QXRGcmFtZSk7CiAKQEAgLTMxNiw2ICszMTYsNiBAQCBwcml2YXRl
OgogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8R0lGRnJhbWVDb250ZXh0PiA+IG1fZnJhbWVz
OwogICAgIHNpemVfdCBtX2N1cnJlbnREZWNvZGluZ0ZyYW1lOwogCi0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKICAgICBib29s
IG1fcGFyc2VDb21wbGV0ZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBj
NzE3YzQ1ZDMwNTdjMDU1MzZlZTYwNTBmOTM5NzA0NmQxMGRmMmE3Li5jMDcxMzQ1YjhiZjM2OWI4
MDI3MWZiZGYwYTBjZTAxNzRmMDUwM2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApA
QCAtNTIsNyArNTIsNyBAQCBJQ09JbWFnZURlY29kZXI6OklDT0ltYWdlRGVjb2RlcihBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBJQ09JbWFnZURlY29k
ZXI6On5JQ09JbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgSUNPSW1hZ2VEZWNvZGVy
OjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lk
IElDT0ltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAppbmRleCBmYjdhOTAzYjJhMDc1Mzk0OTE3YWJiYmYx
MWIxY2VkODNmZjQzMmEwLi4xMGVlOWI0ZDJlOGM5ZDg4N2UxZDJiOGJlMTM5YmI3NDI3MWQ1N2E4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIFNjYWxhYmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9u
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gImljbyJfczsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFy
ZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CisgICAgdm9pZCBzZXREYXRh
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgZmluYWw7CiAg
ICAgSW50U2l6ZSBzaXplKCkgY29uc3QgZmluYWw7CiAgICAgSW50U2l6ZSBmcmFtZVNpemVBdElu
ZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzZXRT
aXplKGNvbnN0IEludFNpemUmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3Bw
CmluZGV4IDFjODcxZjRkNTY0OTFiZjc3NWU4NTAwYzE2ZDBiYjg5NGQ1NGU2ZGMuLjhmYjkyMjBl
ZTM3ZjZhZDgxOTM4MjA3NzRjZTIyYjFkNWNjM2E1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VE
ZWNvZGVyLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIHN0YXRpYyBib29sIGlzSUNDTWFya2VyKGpw
ZWdfc2F2ZWRfbWFya2VyX3B0ciBtYXJrZXIpCiAgICAgICAgICYmIG1hcmtlci0+ZGF0YVsxMV0g
PT0gJ1wwJzsKIH0KIAotc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFk
SUNDUHJvZmlsZShqcGVnX2RlY29tcHJlc3Nfc3RydWN0KiBpbmZvKQorc3RhdGljIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8p
CiB7CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWZmZXI7CiAgICAgZm9yIChqcGVnX3NhdmVk
X21hcmtlcl9wdHIgbWFya2VyID0gaW5mby0+bWFya2VyX2xpc3Q7IG1hcmtlcjsgbWFya2VyID0g
bWFya2VyLT5uZXh0KSB7CkBAIC0zMjAsNyArMzIwLDcgQEAgcHVibGljOgogICAgICAgICBtX2J5
dGVzVG9Ta2lwID0gc3RkOjptYXgobnVtQnl0ZXMgLSBieXRlc1RvU2tpcCwgc3RhdGljX2Nhc3Q8
bG9uZz4oMCkpOwogICAgIH0KIAotICAgIGJvb2wgZGVjb2RlKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgb25seVNpemUpCisgICAgYm9vbCBkZWNvZGUoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgb25seVNpemUp
CiAgICAgewogICAgICAgICBtX2RlY29kaW5nU2l6ZU9ubHkgPSBvbmx5U2l6ZTsKIApAQCAtNzI2
LDcgKzcyNiw3IEBAIHZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25seVNpemUs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogfQogCiAjaWYgVVNFKExDTVMpCi12b2lkIEpQRUdJbWFn
ZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQordm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCmluZGV4IGMwM2FhNjc4MjIwM2NiZDRjZmM4M2Zk
ZThmODcxMmI3MDgxZTNhYTkuLmQyZDdmYTZhYjQ5YjQyNDdhZmZiOGUxZmJlZTQ2OTUzYjBjYjA1
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pw
ZWcvSlBFR0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCkBAIC02OCw3ICs2OCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldE9yaWVudGF0aW9uKEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CiAjaWYg
VVNFKExDTVMpCi0gICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIHZvaWQgc2V0SUNDUHJvZmlsZShSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmKTsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNv
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAw
L0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBiZWNmNjQ1MDI3N2VlYjc0YjA5ZGU1MmVl
MTgyZmY2ZTExZWQyNzYyLi4yMDQ3M2YwZWVlYmI1NmM3MTMxNGY2NTU2YmRhMDkwMzM0OTA3NDQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
MjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCkBAIC0z
ODAsNyArMzgwLDcgQEAgdm9pZCBKUEVHMjAwMEltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wgb25s
eVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIH0KIAogICAgIHN0cnVjdCBSZWFkZXIg
ewotICAgICAgICBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhOworICAgICAgICBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YTsKICAgICAgICAgc2l6ZV90IG9m
ZnNldDsKICAgICB9IHJlYWRlciA9IHsgKm1fZGF0YSwgMCB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURl
Y29kZXIuY3BwCmluZGV4IGMxMmM0NTlhNWEzZTViMzUxYzViY2M2MmJmMDBiOGEyODFiZDViYTMu
LjRjYmQzMjNkOWE3NTAyNmVmODY1OGYzODE2ZGQ3MzhkMzdjYThlZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJ
bWFnZURlY29kZXIuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgcHVibGljOgogICAgICAgICBtX3Jl
YWRPZmZzZXQgPSAwOwogICAgIH0KIAotICAgIGJvb2wgZGVjb2RlKGNvbnN0IFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgc2l6ZU9ubHksIHVuc2lnbmVkIGhhbHRBdEZyYW1l
KQorICAgIGJvb2wgZGVjb2RlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50JiBkYXRhLCBib29sIHNpemVPbmx5LCB1bnNpZ25lZCBoYWx0QXRGcmFtZSkKICAgICB7CiAg
ICAgICAgIG1fZGVjb2RpbmdTaXplT25seSA9IHNpemVPbmx5OwogICAgICAgICBQTkdJbWFnZURl
Y29kZXIqIGRlY29kZXIgPSBzdGF0aWNfY2FzdDxQTkdJbWFnZURlY29kZXIqPihwbmdfZ2V0X3By
b2dyZXNzaXZlX3B0cihtX3BuZykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKaW5k
ZXggMDJmMWIwOWRiYzc2NTE2MDFmOTIyZGRlMjlmODA1YTY1ODcxZTJkMi4uYjFiZWM1NWU3OGM0
MzQ4MDFjMjU0YWNlMGRmNTk5MzFhMzZiNzRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29k
ZXIuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFdFQlBJbWFnZURlY29kZXI6OldFQlBJbWFnZURlY29k
ZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlCiAKIFdFQlBJ
bWFnZURlY29kZXI6On5XRUJQSW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCi12b2lkIFdFQlBJ
bWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKK3ZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFdFQlBJbWFnZURlY29kZXI6
OmRlY29kZShzaXplX3QgZnJhbWVJbmRleCwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgLy8g
VGhpcyBjYW4gYmUgZXhlY3V0ZWQgYm90aCBpbiB0aGUgbWFpbiB0aHJlYWQgKHdoZW4gbm90IHVz
aW5nIGFzeW5jIGRlY29kaW5nKSBvciBpbiB0aGUgZGVjb2RpbmcgdGhyZWFkLgogICAgIC8vIFdo
ZW4gZXhlY3V0ZWQgaW4gdGhlIGRlY29kaW5nIHRocmVhZCwgYSBjYWxsIHRvIHNldERhdGEoKSBm
cm9tIHRoZSBtYWluIHRocmVhZCBtYXkgY2hhbmdlIHRoZSBkYXRhCiAgICAgLy8gdGhlIFdlYlBE
ZW11eGVyIGlzIHVzaW5nLCBsZWF2aW5nIGl0IGluIGFuIGluY29uc2lzdGVudCBzdGF0ZSwgc28g
d2UgbmVlZCB0byBwcm90ZWN0IHRoZSBkYXRhLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50PiBwcm90ZWN0ZWREYXRhKG1fZGF0YSk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBwcm90ZWN0ZWREYXRhKG1fZGF0YSk7CiAgICAgV2Vi
UERhdGEgaW5wdXREYXRhID0geyBwcm90ZWN0ZWREYXRhLT5kYXRhKCksIHByb3RlY3RlZERhdGEt
PnNpemUoKSB9OwogICAgIFdlYlBEZW11eFN0YXRlIGRlbXV4ZXJTdGF0ZTsKICAgICBXZWJQRGVt
dXhlciogZGVtdXhlciA9IFdlYlBEZW11eFBhcnRpYWwoJmlucHV0RGF0YSwgJmRlbXV4ZXJTdGF0
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
ZWJwL1dFQlBJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCmluZGV4IGFmMzY1ZTljZjljN2NlOTUzOGI2
NGJhNzg5YmYwMTdkNDhmNmVkZTEuLmRkMjhiYzg4ZGY1YzBmYTNjMTU3Mzc4NjliMjYwOTczYWFh
MGQyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5XRUJQSW1hZ2VEZWNvZGVyKCk7CiAKICAgICBTdHJpbmcgZmls
ZW5hbWVFeHRlbnNpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAid2VicCJfczsgfQotICAg
IHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsKKyAgICB2b2lkIHNldERh
dGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwogICAgIFNjYWxhYmxlSW1h
Z2VEZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIG92ZXJyaWRl
OwogICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZnJhbWVD
b3VudDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpp
bmRleCBhN2Y0NTAzMjBlOTA4YzZhMWY1ZjBmODk1NjA5MmFlMjQ3OTVhMjRhLi4zNjg3MjJhMzZm
NThjYzBlNzJhZjg3NjU1ZWJhZTZjYTVkNGI5NzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtMjQwLDE0ICsyNDAsMTQgQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIAogI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkK
ICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5
cGVGbGF0UlRGRF0pIHsKLSAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5
cGVGbGF0UlRGRCwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
KGl0ZW1JbmRleCwga1VUVHlwZUZsYXRSVEZELCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkp
OwogICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAg
ICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5Owog
ICAgICAgICByZXR1cm4gYnVmZmVyICYmIHJlYWRlci5yZWFkUlRGRCgqYnVmZmVyKSA/IFJlYWRl
clJlc3VsdDo6UmVhZFR5cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwogICAgIH0K
IAogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VU
VHlwZVJURl0pIHsKLSAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIGtVVFR5cGVS
VEYsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5k
ZXgsIGtVVFR5cGVSVEYsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlm
IChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVh
ZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVy
biBidWZmZXIgJiYgcmVhZGVyLnJlYWRSVEYoKmJ1ZmZlcikgPyBSZWFkZXJSZXN1bHQ6OlJlYWRU
eXBlIDogUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKQEAgLTI1NSw3ICsyNTUsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogI2VuZGlmIC8vICFQTEFURk9STShN
QUNDQVRBTFlTVCkKIAogICAgIGlmIChbc3VwcG9ydGVkSW1hZ2VUeXBlcygpIGNvbnRhaW5zT2Jq
ZWN0OnR5cGVdKSB7Ci0gICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCB0eXBlLCBt
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4LCB0
eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgICAgICBpZiAobV9jaGFuZ2VD
b3VudCAhPSBjaGFuZ2VDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6
UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5OwogICAgICAgICByZXR1cm4gYnVmZmVyICYm
IHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIHR5cGUsIGl0ZW1JbmZv
LnByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpID8gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSA6IFJl
YWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCBkOWY0OGVkMWIzNDA1ZDJk
ZWE5Nzc4YzNhNmM1NzJiYzUzMmZiOTMxLi5kNjRiOTY4MzQ3Mzc4MzJkMmVlZDY4ODIzNjAxMjI3
MDY1NTg1M2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0
Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTc5LDEwICs3OSwxMCBAQCB2b2lkIFBsYXRmb3JtUGFz
dGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKSBjb25zdAogICAgIHR5cGVz
ID0gbWFrZVZlY3RvcjxTdHJpbmc+KFttX3Bhc3RlYm9hcmQgcGFzdGVib2FyZFR5cGVzXSk7CiB9
CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1
ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkg
Y29uc3QKIHsKICAgICBpZiAoTlNEYXRhICpkYXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFz
dGVib2FyZFR5cGU6dHlwZV0pCi0gICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSk7CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMzM4LDcgKzMzOCw3IEBAIGludDY0X3Qg
UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpCiAgICAg
cmV0dXJuIDA7CiB9CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JU
eXBlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKQoraW50NjRfdCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29uc3QgU3Ry
aW5nJikKIHsKICAgICByZXR1cm4gMDsKIH0KQEAgLTYwOSw3ICs2MDksNyBAQCBWZWN0b3I8U3Ry
aW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNv
bnN0IFN0cmluZyYgbwogI2VuZGlmIC8vIFBBU1RFQk9BUkRfU1VQUE9SVFNfUFJFU0VOVEFUSU9O
X1NUWUxFX0FORF9URUFNX0RBVEEKIAogICAgIGlmIChOU0RhdGEgKnNlcmlhbGl6ZWRDdXN0b21E
YXRhID0gW21fcGFzdGVib2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFz
dGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkg
PT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRU
eXBlcygpKQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBA
IC02NzIsNyArNjcyLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6
Z2V0PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4odmFsdWUpOworICAgICAgICBhdXRvIGJ1
ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Pih2YWx1ZSk7CiAgICAgICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CiAgICAgfSk7CiAKQEAgLTc0Niw3ICs3
NDYsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFN0cmluZ3NGb3JU
eXBlKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKICAgICByZXR1cm4gc3RyaW5nczsKIH0KIAot
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1
ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVhZEJ1ZmZlcihz
dGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKIHsK
ICAgICBpZiAoIWluZGV4KQogICAgICAgICByZXR1cm4gYnVmZmVyRm9yVHlwZSh0eXBlKTsKQEAg
LTc2MSw3ICs3NjEsNyBAQCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZQogCiAgICAgaWYgKCFbcGFz
dGVib2FyZEl0ZW0gY291bnRdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtwYXN0ZWJvYXJkSXRlbSBvYmplY3RBdElu
ZGV4OjBdKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVt
IG9iamVjdEF0SW5kZXg6MF0pOwogfQogCiBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFk
U3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ByZXZpZXdDb252ZXJ0ZXJJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQppbmRleCA1
NDQ2NTNjNDQwM2QyNjA0MGE1NWQyM2U5MzY5MWJmZWRjYzkyYjQyLi5iZmUzNmFiZDk3NDNhNmJh
NDVlNDNjMGU4YjdkOWFlMWFlOTA2ZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbQpAQCAtODIsNyArODIsNyBAQCBAZW5kCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFByZXZpZXdDb252ZXJ0ZXI6OlByZXZpZXdDb252ZXJ0ZXIo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRl
ciYgcHJvdmlkZXIpCi0gICAgOiBtX3ByZXZpZXdEYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSB9CisgICAgOiBtX3ByZXZpZXdEYXRhIHsgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCkgfQogICAgICwgbV9vcmlnaW5hbFJlc3BvbnNlIHsgcmVzcG9uc2UgfQogICAgICwgbV9wcm92
aWRlciB7IHByb3ZpZGVyIH0KICAgICAsIG1fcGxhdGZvcm1EZWxlZ2F0ZSB7IGFkb3B0TlMoW1tX
ZWJQcmV2aWV3Q29udmVydGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6KnRoaXNd
KSB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4
IGExNTE2YWUzNGY4MjliYTcyY2E1NjFkOTVlNGZjOTc4Yjk1MmQzOGYuLjNlNTYzM2ZiZGE3MzVk
NWExMTQ1ZTI1MWNjOTgxODk1ZDI0MjMwZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0yNjMsNyArMjYzLDcgQEAgc3RhdGljIHZvaWQgd3Jp
dGVGaWxlV3JhcHBlckFzUlRGREF0dGFjaG1lbnQoTlNGaWxlV3JhcHBlciAqd3JhcHBlciwgY29u
c3QgU3RyaW4KICAgICBpZiAoIVJURkREYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBuZXdD
aGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+
c2V0QnVmZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUlRGRERhdGEp
LnB0cigpLCBsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgcGFzdGVib2FyZE5hbWUsIGNvbnRl
eHQpOworICAgIG5ld0NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFJURkRE
YXRhKS5wdHIoKSwgbGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIHBhc3RlYm9hcmROYW1lLCBj
b250ZXh0KTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1h
Z2UmIHBhc3RlYm9hcmRJbWFnZSkKQEAgLTI4NSw3ICsyODUsNyBAQCBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKICAgICB9CiAKICAgICBtX2NoYW5nZUNvdW50ID0gd3JpdGVVUkxG
b3JUeXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZEltYWdlLnVybCwgY29u
dGV4dCgpKTsKLSAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShpbWFnZURhdGEpLnB0cigpLCBsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgbV9w
YXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGltYWdlRGF0YSkucHRyKCksIGxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlw
ZSgpLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogICAgIGlmIChhdXRvIGFyY2hpdmVE
YXRhID0gcGFzdGVib2FyZEltYWdlLmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsKICAgICAgICAg
bV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+c2V0QnVmZmVyRm9yVHlwZShhcmNoaXZlRGF0YS5nZXQoKSwgV2ViQXJjaGl2ZVBib2FyZFR5
cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAKQEAgLTM0NCw3ICszNDQsNyBAQCBz
dGF0aWMgU3RyaW5nIHJlYWRTdHJpbmdBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcm
IHR5cGUsIHN0ZDo6b3B0aW9uYWw8cwogICAgIHJldHVybiBzdHJhdGVneS5zdHJpbmdGb3JUeXBl
KHR5cGUsIHBhc3RlYm9hcmROYW1lLCBjb250ZXh0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3Qg
U3RyaW5nJiB0eXBlLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJk
U3RyYXRlZ3kmIHN0cmF0ZWd5LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK3N0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyQXRQcmVmZXJyZWRJdGVtSW5kZXgoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gaXRlbUluZGV4LCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29u
dGV4dCkKIHsKICAgICBpZiAoaXRlbUluZGV4KQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kucmVh
ZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKCppdGVtSW5kZXgsIHR5cGUsIHBhc3RlYm9hcmROYW1lLCBj
b250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1Q
YXN0ZWJvYXJkTWFjLm1tCmluZGV4IGI0OWFkN2MwNGE1MjgxODJhNTFiOGEzYTk4NGQ3ZDkwNGQ2
Mzk3OTkuLmE3ZmU3MjU1NDM3NjY1ZThiOGEwYzc0NTNkMzA0NzQ5ZDQ1NjJmNjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5t
bQpAQCAtNjgsMTIgKzY4LDEyIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyhW
ZWN0b3I8U3RyaW5nPiYgdHlwZXMpIGNvbnN0CiAgICAgdHlwZXMgPSBtYWtlVmVjdG9yPFN0cmlu
Zz4oW21fcGFzdGVib2FyZCB0eXBlc10pOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3QKIHsK
ICAgICBOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOnBhc3RlYm9hcmRU
eXBlXTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoYWRvcHROUyhbZGF0YSBjb3B5XSkuZ2V0
KCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHld
KS5nZXQoKSk7CiB9CiAKIGludCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Om51bWJlck9mRmlsZXMoKSBj
b25zdApAQCAtMjE4LDcgKzIxOCw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5nJiBvCiB7CiAgICAg
TGlzdEhhc2hTZXQ8U3RyaW5nPiBkb21QYXN0ZWJvYXJkVHlwZXM7CiAgICAgaWYgKE5TRGF0YSAq
c2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JUeXBlOkAoUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmNvY29hVHlwZSgpKV0pIHsKLSAgICAgICAgYXV0byBkYXRhID0gUGFz
dGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CisgICAgICAgIGF1dG8gZGF0
YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHNlcmlhbGl6ZWRDdXN0b21EYXRhKS5nZXQoKSk7CiAgICAgICAgIGlmIChkYXRhLm9y
aWdpbigpID09IG9yaWdpbikgewogICAgICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5v
cmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5
cGUpOwpAQCAtMjYzLDggKzI2Myw4IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0
ZShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSkKICAgICAgICAgaWYgKHBsYXRmb3Jt
VHlwZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1
ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEo
KSkKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+
KHN0cmluZ09yQnVmZmVyKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0g
c3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRh
KCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXREYXRhOnBsYXRmb3JtRGF0YS5n
ZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0gZWxzZSBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkgewogICAgICAgICAgICAgYXV0
byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKQEAgLTM0MSw3ICsz
NDEsNyBAQCBpbnQ2NF90IFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcykKICAgICByZXR1cm4gW21fcGFzdGVib2FyZCBkZWNs
YXJlVHlwZXM6Y3JlYXRlTlNBcnJheShwYXN0ZWJvYXJkVHlwZXMpLmdldCgpIG93bmVyOm5pbF07
CiB9CiAKLWludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkK
K2ludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZl
ciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIGlmICghY2Fu
V3JpdGVQYXN0ZWJvYXJkVHlwZShwYXN0ZWJvYXJkVHlwZSkpCiAgICAgICAgIHJldHVybiAwOwpA
QCAtNDQ2LDcgKzQ0Niw3IEBAIHN0YXRpYyBTdHJpbmcgd2ViU2FmZU1JTUVUeXBlRm9yTW9kZXJu
UGFzdGVib2FyZFR5cGUoTlNQYXN0ZWJvYXJkVHlwZSBwbGF0Zm9ybVR5CiAgICAgcmV0dXJuIHsg
fTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYg
dHlwZSkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6cmVh
ZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkg
Y29uc3QKIHsKICAgICBpZiAoIWluZGV4KQogICAgICAgICByZXR1cm4gYnVmZmVyRm9yVHlwZSh0
eXBlKTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZQogCiAgICAg
aWYgKE5TRGF0YSAqZGF0YSA9IFtpdGVtIGRhdGFGb3JUeXBlOnR5cGVdKSB7CiAgICAgICAgIGF1
dG8gbnNEYXRhID0gYWRvcHROUyhkYXRhLmNvcHkpOwotICAgICAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CisgICAgICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShuc0RhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIHJldHVybiBudWxs
cHRyOwpAQCAtNTA3LDggKzUwNyw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkSXRl
bT4gY3JlYXRlUGFzdGVib2FyZEl0ZW0oY29uc3QgUGFzdGVib2FyZEN1c3RvbURhCiAgICAgICAg
IGlmICghcGxhdGZvcm1UeXBlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4oc3RyaW5n
T3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6Omdl
dDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNE
YXRhKCkpCisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZm
ZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0
YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5T
RGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgp
IGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0
cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJp
dmF0ZS5oCmluZGV4IDY4MTNkNWRhN2RjYjBmYzI1OWYxYmQxZWQwYTU0YzFhMWE5ZmQ5Y2YuLjc5
NjU1NGY0Yzk3NjQ1MTQwMWUxYTEyMzc0Njg3MDQwYjI0YjFjYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cml2YXRlLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgTWVkaWFTYW1wbGU7CiBjbGFzcyBNZWRp
YVN0cmVhbVByaXZhdGU7CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTsKIGNsYXNzIFBs
YXRmb3JtQXVkaW9EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogc3RydWN0IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9uczsKIApAQCAt
NTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
QXVkaW9WaWRlb1NlbGVjdGVkVHJhY2tzIHNlbGVjdFRyYWNrcyhNZWRpYVN0cmVhbVByaXZhdGUm
KTsKIAotICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUp
PjsKKyAgICB1c2luZyBGZXRjaERhdGFDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGRvdWJsZSk+OwogICAgIHZpcnR1YWwgdm9pZCBmZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2sm
JikgPSAwOwogICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0ID0gMDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCmluZGV4IGMyNWRmOTE1NzRhNjVi
YzQxYmRiNzA2NzhkYzQ3NzI0ODM2ZGQxNDUuLjQ5OGQ0ZWUxMzQwYzRiOTQwMDFiNjBjMzQ0Nzli
N2Y3MmQ1YzhlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKQEAgLTkz
LDcgKzkzLDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6OmdlbmVyYXRlTW9ja0Nv
dW50ZXJTdHJpbmcoKQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6ZmV0Y2hEYXRh
KEZldGNoRGF0YUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9idWZmZXJMb2NrIH07CiAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZSB7IG1fYnVmZmVyLmNoYXJhY3RlcnM4KCksIG1f
YnVmZmVyLmxlbmd0aCgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5oCmluZGV4IDVlZDk4YzQxMzBiOWJlMDM1MjM3YmYyZWY1MDYzZjZi
MmVjZGMwNTUuLjljMmM3OTdiODE5NTEyZDhmZDU3OTAxNWRjM2I2ZTQwNWUzYmM2MGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oCkBA
IC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFZpZGVvU2FtcGxlQnVmZmVy
KE1lZGlhU2FtcGxlJik7CiAgICAgdm9pZCBhcHBlbmRBdWRpb1NhbXBsZUJ1ZmZlcihjb25zdCBQ
bGF0Zm9ybUF1ZGlvRGF0YSYsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mLCBjb25zdCBX
VEY6Ok1lZGlhVGltZSYsIHNpemVfdCk7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKCk7Ci0gICAg
dm9pZCBmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmLCBkb3VibGUpPiYmKTsKKyAgICB2b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiYmKTsKIAogICAg
IHZvaWQgcGF1c2UoKTsKICAgICB2b2lkIHJlc3VtZSgpOwpAQCAtMTA1LDcgKzEwNSw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGZpbmlzaGVkRmx1c2hpbmdTYW1wbGVzKCk7CiAgICAgdm9pZCBj
b21wbGV0ZUZldGNoRGF0YSgpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHRha2VEYXRhKCk7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHRha2VEYXRhKCk7CiAKICAgICBi
b29sIG1faGFzQXVkaW8geyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWaWRlbyB7IGZhbHNlIH07
CkBAIC0xMTgsNyArMTE4LDcgQEAgcHJpdmF0ZToKIAogICAgIExvY2sgbV9kYXRhTG9jazsKICAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fZGF0YUxv
Y2spOwotICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwg
ZG91YmxlKT4gbV9mZXRjaERhdGFDb21wbGV0aW9uSGFuZGxlcjsKKyAgICBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBtX2Zl
dGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOwogCiAgICAgUmV0YWluUHRyPENNRm9ybWF0RGVzY3Jp
cHRpb25SZWY+IG1fYXVkaW9Gb3JtYXREZXNjcmlwdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yPiBtX2F1ZGlvQ29tcHJlc3NvcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCBj
NzFhYTg0YWZjMWVjMTAwM2Q5Yzc0YjVkN2YxM2ZlZTQzNzY1ZTNhLi44NDg0MTAwZWFjNWUxMTVl
OWIwY2YwMTIwYmFiZjc4ZmIxYTEyNzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC00OTMsNyArNDkzLDcgQEAgdm9pZCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6c3RvcFJlY29yZGluZygpCiAgICAgfSk7CiB9CiAK
LXZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpmZXRjaERhdGEoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgZG91Ymxl
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CiAKQEAgLTUzOCw3ICs1MzgsNyBAQCB2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKQogICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0
YSgpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OnRha2VEYXRhKCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9Owog
ICAgIHJldHVybiBtX2RhdGEudGFrZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCmluZGV4IGE5YjI5ZDU5ZTlhYTNiNDY1NTQxNWJkOGJl
ZjA5ODRjNTQ0YjczZjAuLmNkZWU2MDM1MjNjZDY2OTQ1ZjQyOGY2OTQ3ODk2MGY2ZmQ3NGM3N2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVy
LmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgRGF0
YVVSTERlY29kZXIgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwCmluZGV4IDYyMzY0ZDcxM2M5NWE5Zjg0M2M3ZDI5YzAxZjBkZWI5YWU2ZDE3NWEuLjBj
OTA4MTdjNGU5YjQxZjM0OWE0MWFlNjRiNzE5MDZiOTUxZWI4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC00MTIsMTMgKzQxMiwxMyBAQCB1
aW50NjRfdCBGb3JtRGF0YTo6bGVuZ3RoSW5CeXRlcygpIGNvbnN0CiAgICAgcmV0dXJuICptX2xl
bmd0aEluQnl0ZXM7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBGb3JtRGF0
YTo6YXNTaGFyZWRCdWZmZXIoKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9ybURhdGE6
OmFzU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBtX2Vs
ZW1lbnRzKSB7CiAgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWlu
dDhfdD4+KGVsZW1lbnQuZGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOwor
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShmbGF0dGVuKCkpOwogfQogCiBVUkwgRm9y
bURhdGE6OmFzQmxvYlVSTCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmgKaW5kZXggMTA4MjgxMTMxZjgzZTk5MzcwZmM1MDk3ODMzY2M1MGVlOGFkYmRh
YS4uZTlkMzQ0M2Y4YjVjNjgyNDQ2NjU2YzE4ODA1NjU3Y2MyOWQyZDgzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOwogY2xhc3MgRE9NRm9ybURh
dGE7CiBjbGFzcyBGaWxlOwotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIAogc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CiAgICAgc3RydWN0IEVuY29k
ZWRGaWxlRGF0YTsKQEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9y
PEZvcm1EYXRhRWxlbWVudD4mIGVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50czsg
fQogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiYgYm91bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2Jv
dW5kYXJ5OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gYXNTaGFyZWRCdWZmZXIoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiAgICAgYm9vbCBhbHdheXNT
dHJlYW0oKSBjb25zdCB7IHJldHVybiBtX2Fsd2F5c1N0cmVhbTsgfQogICAgIHZvaWQgc2V0QWx3
YXlzU3RyZWFtKGJvb2wgYWx3YXlzU3RyZWFtKSB7IG1fYWx3YXlzU3RyZWFtID0gYWx3YXlzU3Ry
ZWFtOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmgKaW5kZXggZmFmZGZlODdjODM3ZTYxNTdkMmYxM2U5YTdjYTAwOTY5ZDUwYjFjNy4uNGJl
YmNiNTA5OGQxNWMyOTY2ZWQ4YzdlZTEzNmFlM2EyYWU0YTIwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtODQsNyArODQsNyBA
QCBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3luY2hyb25vdXNM
b2FkZXJNZXNzYWdlUXVldWU7CiBjbGFzcyBUaW1lcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAppbmRleCA4
MThlMTgxODQ1MTk2N2FiNTJkMTk4ZDk1ODdiMjBhMTQ0NDc4ZGQ5Li5iYThmZDRmZjRmMWU0MWM5
YWQ0ZmE3NGE0MmJlNGUyYmQxMWFhODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApAQCAtMzYsNyArMzYs
NyBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1
bHQ7CiAKIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRl
ZmF1bHQ7CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZm
ZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgZGlkUmVjZWl2ZURhdGEoaGFu
ZGxlLCBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGVu
Y29kZWREYXRhTGVuZ3RoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAppbmRleCBiNjMzN2Q1NmNlOGNkOWJlZmY5
ZGZiZTExMzY2MmJjNzc1NmI2NTM3Li5jNGYwNTQ4NWYyODcwYjExNmRhN2M3NjBkM2MwZmNlOTZl
YzJiNGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFJlc291cmNlSGFu
ZGxlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBlbnVtIENhY2hlU3RvcmFnZVBvbGljeSB7CiAgICAgU3RvcmFnZUFs
bG93ZWQsCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2Vu
ZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgLypieXRlc1NlbnQqLywg
dW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8pIHsgfQogCiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCos
IHVuc2lnbmVkLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSB7IH0KLSAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxT
aGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZS5jcHAKaW5kZXggODhkZWRmYTQ1YzNmNGM0M2EzODE1MjgwZGE1YTQxZTI2OTc1Yjcx
Zi4uZjcwMDM1NWQ1NjhiMDQyYTZhZGYxMDcwZGJiODM4MTkyNTM2OTRhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNl
aXZlRGF0YShDRkQKICAgICAgICAgCiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRS
ZWNlaXZlRGF0YShoYW5kbGU9JXApICglcykiLCBoYW5kbGUsIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0
KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgaGFuZGxlLT5jbGll
bnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihoYW5kbGUsIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmdldCgpKSwgb3JpZ2luYWxMZW5ndGgpOworICAgICAgICBoYW5kbGUtPmNsaWVu
dCgpLT5kaWRSZWNlaXZlQnVmZmVyKGhhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5n
ZXQoKSksIG9yaWdpbmFsTGVuZ3RoKTsKICAgICB9OwogICAgIAogICAgIGlmIChtX21lc3NhZ2VR
dWV1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQppbmRleCBlMmMzNWVkMzEwYjMxMTA2
NTExNmM4ZmM4NmMyZTQwMjlhODJjOWE0Li4wMDhlMjI2ZmY5MTkwMDRiNDUxNDhhMjQ3MjYxMTYx
NTA5ODk2Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC0yNDMsNyArMjQz
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKSBmaW5hbAorICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgZmluYWwKICAgICB7CiAg
ICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmICghbV9nZW5lcmF0b3Ip
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5oCmluZGV4IDQwNDg4NWFlNjM3NmZjZTY4MDQwZDJhMDVjMDBi
ZWM0N2ZlMTZhYTguLmNlNGMyNTQ1Y2RlMGYyZjQ2YWMzMzhmOTZjNDkwODhlYjQ1ZDA5MjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
V2ViQ29yZU5TVVJMU2Vzc2lvbi5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFBsYXRmb3JtTWVk
aWFSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3Owog
Y2xhc3MgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OwogZW51bSBjbGFzcyBTaG91
bGRDb250aW51ZVBvbGljeUNoZWNrIDogYm9vbDsKQEAgLTE1OCw3ICsxNTgsNyBAQCBXRUJDT1JF
X0VYUE9SVCBAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb24gOiBOU09iamVjdCB7CiAtICh2
b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJl
c291cmNlIHNlbnRCeXRlczoodW5zaWduZWQgbG9uZyBsb25nKWJ5dGVzU2VudCB0b3RhbEJ5dGVz
VG9CZVNlbnQ6KHVuc2lnbmVkIGxvbmcgbG9uZyl0b3RhbEJ5dGVzVG9CZVNlbnQ7CiAtICh2b2lk
KXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291
cmNlIHJlY2VpdmVkUmVzcG9uc2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJl
c3BvbnNlIGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAoQk9P
TClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNv
dXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JilyZXNwb25zZTsKLS0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKWRhdGE7CistICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpZGF0YTsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxl
IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZWRpcmVj
dDooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgcmVxdWVzdDooV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpY29tcGxldGlv
bkhhbmRsZXI7CiAtICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UqKXJlc291cmNlIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZFdpdGhFcnJvcjoo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CiAtICh2b2lkKXJlc291cmNlOihu
dWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIGxvYWRGYWls
ZWRXaXRoRXJyb3I6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKWVycm9yOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3Jl
TlNVUkxTZXNzaW9uLm1tCmluZGV4IGU1OTIyN2UzOGFhMDYxMmQ5MjdjODI1OWQwMTQ3ZGE0YmY2
YTc2OWIuLjhjODlkOTM4NjU3OTMzYTFkYTI5MDMxOTkxNTg0YzRkYjJmYWE5YTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24ubW0KQEAgLTYwOCw3ICs2MDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25n
IGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENo
ZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpA
QCAtNjUyLDcgKzY1Miw3IEBAIGJvb2wgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50
OjpzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjCiAgICAgcmV0dXJuIFtt
X3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6cmVzcG9uc2VdOwog
fQogCi12b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQordm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFza0xvY2sgfTsKICAg
ICBpZiAoIW1fdGFzaykKQEAgLTkxNSw3ICs5MTUsNyBAQCAtIChCT09MKXJlc291cmNlOihQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFJl
cwogICAgIHJldHVybiByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNv
bnRlbnRSYW5nZSkuaXNFbXB0eSgpOwogfQogCi0tICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJilkYXRhCistICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJl
c291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpZGF0YQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNv
dXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRp
b246W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEp
XSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
RG93bmxvYWQuY3BwCmluZGV4IGMzNmUxZjg4NzY0MzA0NjBjZTc1MGEzYjhjNjU4YzczNGVjYjE1
MDguLjM0OTQ0NTkyNTRhYzkzZmMxOWNiMTIxNTBhNjFiYzJiY2VkMDJkNmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3Bw
CkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlUmVz
cG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXNwb25zZSYmIHIKIH0KIAogCi12b2lk
IEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZUJ1
ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKaW5kZXggYTNhYTBjZjVmY2Qy
OTU1YmI3YjE2YjExYTFhODFjYTc0YWU2MWM4ZC4uY2RlNDQ0NTc3NWY3NDQyMzMwNTMwYjY1YjEz
NTdiYTZiZmQ5YmI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsRG93bmxvYWQuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIFJl
ZjxDdXJsUmVxdWVzdD4gY3JlYXRlQ3VybFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAg
dm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVu
c2lnbmVkIGxvbmcgbG9uZykgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZVJl
c3BvbnNlKEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBv
dmVycmlkZTsKKyAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZENv
bXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiYs
IENlcnRpZmljYXRlSW5mbyYmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCmlu
ZGV4IGQ2MzVmNzljZDFlYzYyMWFkZmViNmRjYzQ5MzZlZWVmNTBjZjlhZGMuLjA5MGQwMzliYTQ1
ZGUxMDI4ZWRmNzY4NGM2ZDdkMmYyOTZlM2EzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAK
QEAgLTExOSw3ICsxMTksNyBAQCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpDdXJsTXVsdGlwYXJ0SGFu
ZGxlKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmIGNsaWVudCwgY29ucwogCiB9CiAKLXZvaWQg
Q3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCit2b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0
ZTo6RW5kKQogICAgICAgICByZXR1cm47IC8vIFRoZSBoYW5kbGVyIGlzIGNsb3NlZCBkb3duIHNv
IGlnbm9yZSBldmVyeXRoaW5nLgpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3VybE11bHRpcGFy
dEhhbmRsZTo6ZGlkQ29tcGxldGUoKQogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpFbmQpIHsK
ICAgICAgICAgLy8gSXQgc2VlbXMgd2UgYXJlIHN0aWxsIG5vdCBhdCB0aGUgZW5kIG9mIHRoZSBw
cm9jZXNzaW5nLgogICAgICAgICAvLyBQdXNoIG91dCB0aGUgcmVtYWluaW5nIGRhdGEuCi0gICAg
ICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX2J1ZmZlcikpKTsKKyAgICAgICAgbV9jbGllbnQuZGlk
UmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUobV9i
dWZmZXIpKSk7CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6RW5kOwogICAgIH0KIApAQCAtMjM0
LDEzICsyMzQsMTMgQEAgYm9vbCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpwcm9jZXNzQ29udGVudCgp
CiAKICAgICAgICAgaWYgKCFjaGVja0ZvckJvdW5kYXJ5KGJvdW5kYXJ5U3RhcnQsIGxhc3RQYXJ0
aWFsTWF0Y2gpICYmIGJvdW5kYXJ5U3RhcnQgPT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIC8v
IERpZCBub3QgZmluZCB0aGUgYm91bmRhcnkgc3RhcnQsIGFsbCBkYXRhIHVwIHRvIHRoZSBsYXN0
UGFydGlhbE1hdGNoIGlzIG9rLgotICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFG
cm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRh
KCksIGxhc3RQYXJ0aWFsTWF0Y2gpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVE
YXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRhKCksIGxh
c3RQYXJ0aWFsTWF0Y2gpKTsKICAgICAgICAgICAgIG1fYnVmZmVyLnJlbW92ZSgwLCBsYXN0UGFy
dGlhbE1hdGNoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAg
ICAgIC8vIFRoZXJlIHdhcyBhIGJvdW5kYXJ5IHN0YXJ0IChvciBlbmQgd2UnbGwgY2hlY2sgdGhh
dCBsYXRlciksIHB1c2ggb3V0IHBhcnQgb2YgdGhlIGRhdGEuCi0gICAgICAgIG1fY2xpZW50LmRp
ZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
bV9idWZmZXIuZGF0YSgpLCBib3VuZGFyeVN0YXJ0KSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVEYXRhRnJvbU11bHRpcGFydChTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5kYXRh
KCksIGJvdW5kYXJ5U3RhcnQpKTsKICAgICAgICAgbV9idWZmZXIucmVtb3ZlKDAsIGJvdW5kYXJ5
U3RhcnQgKyBtX2JvdW5kYXJ5Lmxlbmd0aCgpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpF
bmRCb3VuZGFyeTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAppbmRleCA1YzA4YmNjNWViM2U0
YmJjYzAyOWI0NzY3ODY4ZjQzZTJmOTVjMzQxLi45YTFhMWJiZDE5MzhhMTRmNjlmY2NlZTNmMGY4
OWI5N2E0YTIxODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50OwogY2xh
c3MgQ3VybFJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZSB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBDdXJsTXVsdGlw
YXJ0SGFuZGxlKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmLCBjb25zdCBTdHJpbmcmKTsKICAg
ICB+Q3VybE11bHRpcGFydEhhbmRsZSgpIHsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZENvbXBsZXRlKCk7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaAppbmRleCBmZDEzZmQzODEzMTQzY2IyNjU5
YjhmZDFkYjI0NDQ3NjVlOThhNTgwLi5jODEzODg2YThkNWM1ZmE2YzEyZDE0MTMzMTkxMDFhZjI1
MDJhMmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKQEAgLTI4LDEyICsyOCwx
MiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJsUmVzcG9uc2U7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJs
TXVsdGlwYXJ0SGFuZGxlQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZUhlYWRlckZyb21NdWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0cmluZz4mKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8U2hhcmVkQnVmZmVy
PiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgfkN1
cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IGFjZDg4ZTFiMDI5Yjli
MWU3ZjE0YjdkMTQwMzI5MjZiOTMxNzVhMGYuLmQ4MmRkM2MxMGFjNjQ3MTM1OTkxZmQ3YWU2Njk3
ZTlkOGUzMTNlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtMzk2LDcgKzM5Niw3IEBAIHNpemVfdCBDdXJsUmVx
dWVzdDo6ZGlkUmVjZWl2ZUhlYWRlcihTdHJpbmcmJiBoZWFkZXIpCiAKIC8vIGNhbGxlZCB3aXRo
IGRhdGEgYWZ0ZXIgYWxsIGhlYWRlcnMgaGF2ZSBiZWVuIHByb2Nlc3NlZCB2aWEgaGVhZGVyQ2Fs
bGJhY2sKIAotc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK3NpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChpc0NvbXBsZXRlZE9y
Q2FuY2VsbGVkKCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNDQ0LDcgKzQ0NCw3IEBAIHZvaWQg
Q3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBoZWFkZXJzKQogICAgIGludm9rZURpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwg
QWN0aW9uOjpOb25lKTsKIH0KIAotdm9pZCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGFGcm9t
TXVsdGlwYXJ0KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDdXJsUmVxdWVzdDo6
ZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKIHsKICAgICBpZiAoaXNDb21wbGV0ZWRPckNhbmNlbGxlZCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC03NzcsNyArNzc3LDcgQEAgY29uc3QgU3RyaW5nJiBDdXJsUmVxdWVzdDo6Z2V0
RG93bmxvYWRlZEZpbGVQYXRoKCkKICAgICByZXR1cm4gbV9kb3dubG9hZEZpbGVQYXRoOwogfQog
Ci12b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93
bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2Rvd25sb2FkTXV0ZXggfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgK
aW5kZXggNmJkOGE2YmZiYTM3NTJjZWRkZGJjNTAwOWVhZTgzYzRmMGVlZDY0MS4uM2M3Y2RkODgz
ZWI2MmJmZTkyY2YwNDQ1ZWQyOWJkMjZlY2UzZTkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKQEAgLTQyLDcgKzQyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3VybFJlcXVlc3RDbGllbnQ7CiBjbGFzcyBOZXR3
b3JrTG9hZE1ldHJpY3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN5bmNocm9ub3VzTG9hZGVy
TWVzc2FnZVF1ZXVlOwogCiBjbGFzcyBDdXJsUmVxdWVzdCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxDdXJsUmVxdWVzdD4sIHB1YmxpYyBDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCwg
cHVibGljIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQgewpAQCAtMTIyLDkgKzEyMiw5IEBAIHBy
aXZhdGU6CiAgICAgQ1VSTCogc2V0dXBUcmFuc2ZlcigpIG92ZXJyaWRlOwogICAgIHNpemVfdCB3
aWxsU2VuZERhdGEoY2hhciosIHNpemVfdCwgc2l6ZV90KTsKICAgICBzaXplX3QgZGlkUmVjZWl2
ZUhlYWRlcihTdHJpbmcmJik7Ci0gICAgc2l6ZV90IGRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRC
dWZmZXI+JiYpOworICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25z
dCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9t
TXVsdGlwYXJ0KFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZENvbXBsZXRlVHJhbnNmZXIoQ1VSTGNvZGUpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkQ2FuY2VsVHJhbnNmZXIoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmFsaXpl
VHJhbnNmZXIoKTsKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIE5ldHdvcmtMb2Fk
TWV0cmljcyBuZXR3b3JrTG9hZE1ldHJpY3MoKTsKIAogICAgIC8vIERvd25sb2FkCi0gICAgdm9p
ZCB3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImKTsK
KyAgICB2b2lkIHdyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGNsb3NlRG93bmxvYWRGaWxlKCk7CiAgICAgdm9p
ZCBjbGVhbnVwRG93bmxvYWRGaWxlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmgKaW5kZXggMDhjODZjN2Q0
Njg0YmE2Zjc4ZDYxNmI2OGQwNjkwNGMzN2E5NjY3Ny4uMzQ3OTgzMmY1NzZkNDEyOGFmYTUxYzgx
NDI0Y2NmZDc0MWRmNmFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xh
c3MgQ3VybFJlcXVlc3Q7CiBjbGFzcyBDdXJsUmVzcG9uc2U7CiBjbGFzcyBOZXR3b3JrTG9hZE1l
dHJpY3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybFJlcXVlc3RDbGllbnQgewogcHVi
bGljOgpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY3VybERp
ZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5z
aWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZl
QnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xv
YWRNZXRyaWNzJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3Io
Q3VybFJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiYsIENlcnRpZmljYXRlSW5mbyYmKSA9IDA7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXggZWQwNWRlN2FlZTkz
MjFlOWZkMDM4MWZjNzNkY2UyNzk2N2RmY2Q4MS4uMzA1ZDRlNWM5ZmMyNzA3NzU3ODdiMGY5YTkx
OTc5YzA4ODg5YThhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBA
IC0xNDIsNyArMTQyLDcgQEAgdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERp
ZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3UKICAgICB9KTsKIH0KIAot
dm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3Vy
bFJlcXVlc3QmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgKaW5kZXggNmQ1NTg2NDQ1
MmZkNDZlZTc4MDBlOTMxMjNiMTI4YmRjNjRjZTQ4Ny4uZGFmMGE1OWE0ZTU4NmQ3MTE0YWJiNGU1
ZWY5YzU0ZjZhOGJlZmM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgKQEAg
LTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJl
cXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcg
dG90YWxCeXRlc1RvQmVTZW50KSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9u
c2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgZmluYWw7Ci0gICAgdm9pZCBjdXJsRGlk
UmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwor
ICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJl
cXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkRmFp
bFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZv
JiYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggYmM0ZGFhZmJm
MjFhMTVjMGU2ZGQxYWNkNDYyMmFmYTU2YjdiOGQ1ZC4uMWY0YTE5MzEzMzEyYzVkZDZhNDhhZDUz
MzlkZmQyYzNiNWRlYzI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMzEs
MTIgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xv
YWRlckNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBk
ZWZhdWx0OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgeyB9CiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdh
dGUubW0KaW5kZXggMzVkNTI2MTUxN2VmNGYwNDMzNjFkNWQxMDBmZDc4ZDZjOGQwOWZiNy4uMzE1
ZTA2NTE1MzBkY2RiMDI4MDE2NTRiNzU3ZDgxNDczYzIwZmQzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQpA
QCAtMzAwLDcgKzMwMCw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICop
Y29ubmVjdGlvbiBkaWRSZWNlaXZlRGF0YTooTlNEYXRhICopZGF0YSBsCiAgICAgICAgIC8vIEZJ
WE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3OTMKICAgICAg
ICAgLy8gLTEgbWVhbnMgd2UgZG8gbm90IHByb3ZpZGUgYW55IGRhdGEgYWJvdXQgdHJhbnNmZXIg
c2l6ZSB0byBpbnNwZWN0b3Igc28gaXQgd291bGQgdXNlCiAgICAgICAgIC8vIENvbnRlbnQtTGVu
Z3RoIGhlYWRlcnMgb3IgY29udGVudCBzaXplIHRvIHNob3cgdHJhbnNmZXIgc2l6ZS4KLSAgICAg
ICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKG1faGFuZGxlLCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIC0xKTsKKyAgICAgICAgbV9oYW5k
bGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlQnVmZmVyKG1faGFuZGxlLCBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLmdldCgpKSwgLTEpOwogICAgIH07CiAKICAgICBbc2VsZiBjYWxsRnVuY3Rpb25P
bk1haW5UaHJlYWQ6V1RGTW92ZSh3b3JrKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggZjQ5ODZiMDAxMDhiMTc4ZjY0N2U3NmU3MzRjYTJj
M2Y3M2MwNzRiZS4uODVmOTZkODVkMmIzNzJjZmMyMTcxYTgzNDExZDUyODY5MjA3M2NkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtMzU2
LDcgKzM1Niw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNv
bnN0IFN0cmluZyYgdHlwZSkKIAogc3RydWN0IFBhc3RlYm9hcmRGaWxlQ291bnRlciBmaW5hbCA6
IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICB2b2lkIHJlYWRGaWxlbmFtZShjb25zdCBTdHJp
bmcmKSBmaW5hbCB7ICsrY291bnQ7IH0KLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpIGZpbmFsIHsg
Kytjb3VudDsgfQorICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBmaW5hbCB7ICsrY291bnQ7IH0KIAogICAgIHVuc2ln
bmVkIGNvdW50IHsgMCB9OwogfTsKQEAgLTk2Niw3ICs5NjYsNyBAQCBzdGF0aWMgSEdMT0JBTCBj
cmVhdGVHbG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmCiAgICAgcmV0dXJuIG1lbU9iajsKIH0KIAotc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xv
YmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCitzdGF0aWMgSEdMT0JBTCBj
cmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEp
CiB7CiAgICAgSEdMT0JBTCBtZW1PYmogPSBHbG9iYWxBbGxvYyhHUFRSLCBkYXRhLT5zaXplKCkp
OwogICAgIGlmICghbWVtT2JqKSAKQEAgLTk4Niw3ICs5ODYsNyBAQCBzdGF0aWMgSEdMT0JBTCBj
cmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1
cm4gbWVtT2JqOwogfQogCi1zdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQo
Y29uc3QgVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSkKK3N0
YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3Ry
aW5nJiBmaWxlTmFtZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAo
ZmlsZU5hbWUuaXNFbXB0eSgpIHx8ICFkYXRhKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEwNjMs
NyArMTA2Myw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZVRvRGF0YU9iamVjdChFbGVt
ZW50JiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCkKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8ICFj
YWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihlbGVtZW50LnJlbmRlcmVyKCkpIHx8ICFjYWNo
ZWRJbWFnZS0+aXNMb2FkZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2hhcmVkQnVmZmVy
KiBpbWFnZUJ1ZmZlciA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVsZW1lbnQucmVu
ZGVyZXIoKSktPmRhdGEoKTsKKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpbWFnZUJ1ZmZl
ciA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSktPmRh
dGEoKTsKICAgICBpZiAoIWltYWdlQnVmZmVyIHx8ICFpbWFnZUJ1ZmZlci0+c2l6ZSgpKQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAK
aW5kZXggNjUyNzI1MGU1YWJjZGRiYTAwMDJiMGZiY2U2NTY1ZDJmNTg2NWQwNi4uODRmYTI5Y2Ux
ZjMwMGZlMjkwYjA0MTQ2NDhmMGY3MjkwYTdjYmViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBNb2NrQ0RNRmFjdG9y
eTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiAgICAgcmV0dXJu
IGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uoa2V5U3lzdGVtLCAib3JnLndlYmtpdC5tb2NrIik7CiB9
CiAKLXZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3Ry
aW5nJiBpZCwgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGtleXMpCit2b2lkIE1vY2tDRE1G
YWN0b3J5OjphZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYga2V5cykKIHsKICAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1fc2Vzc2lvbnMuYWRkKGlkLCBXVEZNb3ZlKGtleXMpKTsKICAgICBpZiAoYWRkUmVzdWx0
LmlzTmV3RW50cnkpCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtl
eXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxTaGFyZWRCCiAg
ICAgICAgIHZhbHVlLmFwcGVuZChXVEZNb3ZlKGtleSkpOwogfQogCi1WZWN0b3I8UmVmPFNoYXJl
ZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29u
c3QgU3RyaW5nJiBpZCkKK1ZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IE1vY2tD
RE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkK
IHsKICAgICBhdXRvIGl0ID0gbV9zZXNzaW9ucy5maW5kKGlkKTsKICAgICBpZiAoaXQgPT0gbV9z
ZXNzaW9ucy5lbmQoKSkKQEAgLTgzLDcgKzgzLDcgQEAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
PiBNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmkK
ICAgICByZXR1cm4gV1RGTW92ZShpdC0+dmFsdWUpOwogfQogCi1jb25zdCBWZWN0b3I8UmVmPFNo
YXJlZEJ1ZmZlcj4+KiBNb2NrQ0RNRmFjdG9yeTo6a2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3Qg
U3RyaW5nJiBpZCkgY29uc3QKK2NvbnN0IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+KiBNb2NrQ0RNRmFjdG9yeTo6a2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBp
ZCkgY29uc3QKIHsKICAgICBhdXRvIGl0ID0gbV9zZXNzaW9ucy5maW5kKGlkKTsKICAgICBpZiAo
aXQgPT0gbV9zZXNzaW9ucy5lbmQoKSkKQEAgLTIwMiw3ICsyMDIsNyBAQCBib29sIE1vY2tDRE06
OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJldHVybiBtX2ZhY3RvcnkgJiYgbV9mYWN0
b3J5LT5zdXBwb3J0c1Nlc3Npb25zKCk7CiB9CiAKLWJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
aW5pdERhdGEpIGNvbnN0Citib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0
RGF0YSkgY29uc3QKIHsKICAgICBpZiAoIXN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlu
cyhpbml0RGF0YVR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTEsNyArMjExLDcg
QEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZm
ZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE1vY2tD
RE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9u
c2UpIGNvbnN0CiB7CiAgICAgYXV0byBidWZmZXIgPSByZXNwb25zZS5tYWtlQ29udGlndW91cygp
OwogICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGJ1ZmZlci0+ZGF0YSgpLCByZXNwb25z
ZS5zaXplKCkpKQpAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlOjppbml0
aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0CiAg
ICAgY2FsbGJhY2soaW5pdGlhbGl6ZSgpKTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nl
c3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNl
cnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNj
ZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRlU3Ry
aW5nVmlldyhjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjZXJ0aWZpY2F0
ZS0+c2l6ZSgpKTsKIApAQCAtMjk4LDcgKzI5OCw3IEBAIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246
Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxNb2NrQ0RNSW5zdGFuY2U+JiYgaW5zdGFu
CiB7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2
b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxp
Y2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
ICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5m
YWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewpAQCAtMzI0LDcgKzMyNCw3
IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TCiAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpj
cmVhdGUobGljZW5zZS5kYXRhKCksIGxpY2Vuc2UubGVuZ3RoKCkpLCBzZXNzaW9uSUQsIGZhbHNl
LCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlU2Vz
c2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNh
bGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAg
IE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFuY2UtPmZhY3Rv
cnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDRE1GYWN0b3J5LmgKaW5kZXggZjVjZGE1MDVjZjJhMzNjMTA1ZjAyNWM5N2M5MzUwYTk2
ODY5OGUxZS4uZDk2YzE1NmVlNGQyNzkxYjhiMDk5OGRhZjk0MGVjNzUzNzgwN2JjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaApAQCAtNzcsOSArNzcsOSBAQCBwdWJs
aWM6CiAKICAgICBib29sIGhhc1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgeyByZXR1
cm4gbV9zZXNzaW9ucy5jb250YWlucyhpZCk7IH0KICAgICB2b2lkIHJlbW92ZVNlc3Npb25XaXRo
SUQoY29uc3QgU3RyaW5nJiBpZCkgeyBtX3Nlc3Npb25zLnJlbW92ZShpZCk7IH0KLSAgICB2b2lk
IGFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+PiYmKTsKLSAgICBjb25zdCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+KiBrZXlz
Rm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdDsKLSAgICBWZWN0b3I8UmVm
PFNoYXJlZEJ1ZmZlcj4+IHJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcm
IGlkKTsKKyAgICB2b2lkIGFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwg
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJik7CisgICAgY29uc3QgVmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4qIGtleXNGb3JTZXNzaW9uV2l0aElEKGNvbnN0
IFN0cmluZyYgaWQpIGNvbnN0OworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+IHJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKTsKIAogcHJp
dmF0ZToKICAgICBNb2NrQ0RNRmFjdG9yeSgpOwpAQCAtOTYsNyArOTYsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9jYW5DcmVhdGVJbnN0YW5jZXMgeyB0cnVlIH07CiAgICAgYm9vbCBtX3N1cHBv
cnRzU2VydmVyQ2VydGlmaWNhdGVzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9zdXBwb3J0c1Nlc3Np
b25zIHsgdHJ1ZSB9OwotICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZl
cj4+PiBtX3Nlc3Npb25zOworICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+Pj4gbV9zZXNzaW9uczsKIH07CiAKIGNsYXNzIE1vY2tDRE0gOiBwdWJs
aWMgQ0RNUHJpdmF0ZSB7CkBAIC0xMjEsOCArMTIxLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGxv
YWRBbmRJbml0aWFsaXplKCkgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmlj
YXRlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZp
bmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3Qg
U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2Fu
aXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBib29s
IHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qg
ZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0
IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiAgICAgV2Vha1B0cjxNb2NrQ0RNRmFjdG9yeT4gbV9m
YWN0b3J5OwpAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW1wbGVt
ZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIElt
cGxlbWVudGF0aW9uVHlwZTo6TW9jazsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1
cmF0aW9uKGNvbnN0IE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3Rp
dmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBm
aW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYs
IFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRl
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7
CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAg
IGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPENETUlu
c3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAtMTU0LDggKzE1NCw4IEBA
IHB1YmxpYzoKICAgICBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8TW9ja0NETUluc3Rh
bmNlPiYmKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5p
dERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VV
cGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQg
bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExv
YWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3Qg
U3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVT
ZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFD
YWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZp
bHRlci5jcHAKaW5kZXggZmMxMjdiN2I2N2JlYTczNDQ2M2NkMmQ1YjA3NTZiNTliZWJhNThhZS4u
MDU5ZjNhMzg2YjZjZjVmYTc5YjNjMTg5NzAxNTMxM2Y3Y2RiNGVmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCB2
b2lkIE1vY2tDb250ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQogICAgIG1heWJlRGV0
ZXJtaW5lU3RhdHVzKERlY2lzaW9uUG9pbnQ6OkFmdGVyRmluaXNoZWRBZGRpbmdEYXRhKTsKIH0K
IAotUmVmPFNoYXJlZEJ1ZmZlcj4gTW9ja0NvbnRlbnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgp
IGNvbnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTW9ja0NvbnRlbnRGaWx0ZXI6OnJl
cGxhY2VtZW50RGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRpZEJsb2NrRGF0YSgpKTsKICAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9yZXBsYWNlbWVudERhdGEuZGF0YSgpLCBt
X3JlcGxhY2VtZW50RGF0YS5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlci5oCmluZGV4IDQxMWEzMDA5NDdiNTM5ZTI2YWE2YzY0YTAwOTMyOTJlOWZmYmU2
YjkuLjYzNWFjODRiZTc5Mzg0N2FhNTcyMTNkMDFmZmMxZTc0Zjc2Yjc1OTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0g
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92
ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKaW5kZXggMzdmMWE0ODdmOGM1MmI0NGVh
MjQzMGNjY2QxZmEwMjVlZTkxYWFjMy4uZmQyYzFhZTJmNjNiNjBkNzRjMzBkMjQyYTk4OWEwYmZk
OTFkZTQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCkBAIC0zOCw3ICsz
OCw3IEBAIGNsYXNzIFNjcmlwdEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgU2NyaXB0QnVmZmVyKCkg
PSBkZWZhdWx0OwogCi0gICAgU2NyaXB0QnVmZmVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQorICAgIFNjcmlwdEJ1ZmZlcihSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogICAgIHsKICAgICB9
CkBAIC00OCw5ICs0OCw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBT
Y3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25z
dDsKLSAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVm
ZmVyLmdldCgpLmdldCgpOyB9CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCkuZ2V0KCk7IH0KIAotICAgIFNjcmlw
dEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZm
ZXIgPyBSZWZQdHI8U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5jb3B5KCkpIDogbnVsbHB0cik7IH0K
KyAgICBTY3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVm
ZmVyKG1fYnVmZmVyID8gUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLmNv
cHkoKSkgOiBudWxscHRyKTsgfQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7
IHJldHVybiAhIW1fYnVmZmVyOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXIuaXNFbXB0eSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCBjZjZkNzY1YmM4OTRjZjRiZGY3YmQ1YTZlNWFm
MTI3OGIxNmZkZTBhLi44MmEyYThjNGIxOGFjY2U3OThiMjdjMmM4ZDAwOTU4OWZmNzVjYmE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
CkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0Ojpsb2FkKFdvcmtl
ckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSkKIGJvb2wgV29ya2VyRm9udExvYWRSZXF1
ZXN0OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKICAgICBpZiAo
IW1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YSAmJiAhbV9lcnJvck9jY3VycmVkICYmICFtX2lzTG9h
ZGluZykgewotICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udGlndW91
c0RhdGE7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnRpZ3VvdXNEYXRhOwogICAg
ICAgICBpZiAobV9kYXRhKQogICAgICAgICAgICAgY29udGlndW91c0RhdGEgPSBtX2RhdGEudGFr
ZUFzQ29udGlndW91cygpOwogICAgICAgICBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KGNv
bnRpZ3VvdXNEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4IDBiY2Q5NzZlZGE5
ZDRhNzgxMDllNjI2M2Q4MTA4YzM3NTA3NThiNzcuLjhhOTEzOGQyM2IwZDVkZWM1M2QyOTkwZGVk
NWRiNzc2MzU0ZTUyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApAQCAtMTMxLDcgKzEz
MSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NSZXNwb25zZShSZWY8Q2xpZW50PiYmIGNsaWVudCwg
RXhwZWN0ZWQ8UmVmPEZldGNoUmVzcG9uc2U+LCBzCiAgICAgYXV0byBib2R5ID0gcmVzcG9uc2Ut
PmNvbnN1bWVCb2R5KCk7CiAgICAgV1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKFJlZjxGb3JtRGF0
YT4mIGZvcm1EYXRhKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmlu
aXNoKFdURk1vdmUoZm9ybURhdGEpKTsKLSAgICB9LCBbJl0gKFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYgYnVmZmVyKSB7CisgICAgfSwgWyZdIChSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKICAg
ICAgICAgY2xpZW50LT5kaWRGaW5pc2goKTsKICAgICB9LCBbJl0gKHN0ZDo6bnVsbHB0cl90Jikg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlckZldGNoLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAppbmRleCBkZTllMjMwZjliZGI5OWE1ZTgzODdkZmQ5NjAz
YWVjNWNhYTNmMDBiLi5mYmEzNjMyMmIyOWE2ZDViNzk3YjM5ZWRjM2MzZDE3MTI0YjNiNWJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyRmV0Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlOwogY2xhc3MgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIFNlcnZpY2VX
b3JrZXJGZXRjaCB7CiBjbGFzcyBDbGllbnQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
Q2xpZW50LCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CkBAIC01MSw3ICs1MSw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3Rpb24oY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAppbmRleCAw
M2E3MjExZmNlYmIxZjhlNDYyOGQ1OWVhNDViY2NiNzg4MDJmYjQxLi45YThmYjM1Y2E1MzYxMDVi
YjZkNmZjNDZlZTEyMjQ1OTMzZjcwYmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC0xMjcsNyAr
MTI3LDcgQEAgU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXMKICAgICB9CiAKICAgICAvLyBGSVhNRTog
RG8gd2UgbmVlZCB0byBkaXNhYmxlIGZpbGUgbWFwcGluZyBpbiBtb3JlIGNhc2VzIHRvIGF2b2lk
IGhhdmluZyB0b28gbWFueSBmaWxlIGRlc2NyaXB0b3JzIG9wZW4/Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHNjcmlwdFBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRl
LCBzaG91bGRVc2VGaWxlTWFwcGluZygqZmlsZVNpemUpID8gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6TWF5VXNlRmlsZU1hcHBpbmc6OlllcyA6IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6Ok1heVVz
ZUZpbGVNYXBwaW5nOjpObyk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNjcmlwdFBhdGgs
IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpQcml2YXRlLCBzaG91bGRVc2VGaWxlTWFwcGlu
ZygqZmlsZVNpemUpID8gU2hhcmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogU2hh
cmVkQnVmZmVyOjpNYXlVc2VGaWxlTWFwcGluZzo6Tm8pOwogICAgIHJldHVybiBidWZmZXI7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IGEz
MGY1MTQxYThlMTRmMjc4ZjViOTEzMTczM2QyNjE0NjI4MTJjYjYuLmRmOGFiZTQyNmUwNjcxNzFh
ZmZmOTBlMDMzMzg1MDU5ZjMzMTAzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
U0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3JMaWJ4c2x0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9j
TG9hZGVyRnVuYyhjb25zdCB4bWxDaGFyKiB1cmksCiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJy
b3I7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAKLSAgICAgICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGE7CiAKICAgICAgICAgYm9vbCByZXF1ZXN0QWxsb3dlZCA9IGdsb2JhbENhY2hlZFJl
c291cmNlTG9hZGVyLT5mcmFtZSgpICYmIGdsb2JhbENhY2hlZFJlc291cmNlTG9hZGVyLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKICAgICAgICAgaWYgKHJl
cXVlc3RBbGxvd2VkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggZGIyNmJiMzlkZDVhZjk5ZjMxZTY2MmMz
NGNlZDNkYmY5Njc3ZjVhYi4uYThjM2UxOGU0N2FlY2FkMGEwMjJhMDg0YzQ5YTIxZjZjNzE0YzM5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXJMaWJ4bWwyLmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVu
Yyhjb25zdCBjaGFyKiB1cmkpCiAgICAgICAgIHJldHVybiAmZ2xvYmFsRGVzY3JpcHRvcjsKIAog
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKIAogICAgIHsK
ICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcAppbmRleCA1NzMw
NjdlM2RkMDUwZmViN2M1NzlkMDAxMDJlZTlmNjA0NWI1MzEzLi4zMWMyZDc2ZjJlZTFiOWQyNDli
MDAxYjdlZmY4OTJlYzJhNzQ1NmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCkBAIC02MSw3ICs2MSw3
IEBAIFJlbW90ZUNETUluc3RhbmNlUHJveHk6On5SZW1vdGVDRE1JbnN0YW5jZVByb3h5KCkKICAg
ICBtX2luc3RhbmNlLT5jbGVhckNsaWVudCgpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNl
UHJveHk6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5n
JiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQordm9pZCBSZW1vdGVDRE1JbnN0
YW5jZVByb3h5Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0
cmluZyYgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCiB7CiAg
ICAgaWYgKCFtX2NkbSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKaW5kZXggOGU3M2Qz
ZDlhNjRiOThiZmMwMDkzNmNkNDdjNGMyNWE5Mjc5ZjJjOC4uMDJjNWNkMzdhZTU0ODAyZjZkMGM4
ZGNjY2IwYmE4MGNmMzM4OGMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCkBAIC02Niw3ICs2Niw3IEBAIHBy
aXZhdGU6CiAgICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRyPFJlbW90ZUNETVByb3h5
PiYmLCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0
YW5jZUNvbmZpZ3VyYXRpb24+JiYsIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllcik7CiAKICAg
ICAvLyBDRE1JbnN0YW5jZUNsaWVudAotICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlv
bkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KSBmaW5hbDsKKyAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQo
Y29uc3QgU3RyaW5nJiwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eS5jcHAKaW5kZXggZTU3NjZjMjMzNGNmZDM4OTMxMGNkNGIyMTcyM2Nh
YmEzNzQyZmM3Yy4uZGU4MjczYjljZjUwMGE0ZDY2YWExNDRlZGUwMjAxZWVmMWVkODYyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5
cGUsIEF0b21TdHJpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fc2Vzc2lvbi0+
cmVxdWVzdExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0YS5idWZmZXIoKS5yZWxl
YXNlTm9uTnVsbCgpLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChSZWY8U2hh
cmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRz
SW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2Nl
ZWRlZCkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uLT5yZXF1ZXN0TGljZW5zZSh0eXBlLCBpbml0
RGF0YVR5cGUsIGluaXREYXRhLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIFtjb21wbGV0aW9u
ID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1l
c3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRp
b24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7
CiAgICAgICAgIGNvbXBsZXRpb24oV1RGTW92ZShtZXNzYWdlKSwgc2Vzc2lvbklkLCBuZWVkc0lu
ZGl2aWR1YWxpemF0aW9uLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZWVk
ZWQpOwogICAgIH0pOwogfQpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHk6OmNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xv
c2VTCiAKIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlbW92ZVNlc3Npb25E
YXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZW1vdmVTZXNz
aW9uRGF0YUNhbGxiYWNrJiYgY29tcGxldGlvbikKIHsKLSAgICBtX3Nlc3Npb24tPnJlbW92ZVNl
c3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRp
b24pXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNlcywg
c3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBleHBpcmVkU2Vzc2lvbnNEYXRhLCBD
RE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAg
IG1fc2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlLCBbY29tcGxldGlv
biA9IFdURk1vdmUoY29tcGxldGlvbildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1Zl
Y3RvciYmIGtleVN0YXR1c2VzLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4mJiBleHBpcmVkU2Vzc2lvbnNEYXRhLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NW
YWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPElQQzo6U2hh
cmVkQnVmZmVyQ29weT4gZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlOwogICAgICAgICBpZiAo
ZXhwaXJlZFNlc3Npb25zRGF0YSkKICAgICAgICAgICAgIGV4cGlyZWRTZXNzaW9uRGF0YVJlZmVy
ZW5jZSA9IElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKCpleHBpcmVkU2Vzc2lvbnNEYXRh
KSk7CkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6dXBkYXRlS2V5U3RhdHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHUKICAgICBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uOjpVcGRhdGVLZXlTdGF0dXNlcyhXVEZNb3ZlKGtleVN0YXR1c2Vz
KSksIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHk6OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
bWVzc2FnZSkKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdl
KENETU1lc3NhZ2VUeXBlIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3Nh
Z2UpCiB7CiAgICAgaWYgKCFtX2NkbSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkuaAppbmRleCA4YTYxZjlkNWZhYmM4NDg2YTdhMGU4NjBmNGM2MzEyYzBiNDQ1NTE0
Li5mZTczMDk3MTMxZTBiYjIwYTUwMDFlMTUwMTYwMmQ2NTE4NmIzMDkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHkuaApAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ0RN
SW5zdGFuY2VTZXNzaW9uQ2xpZW50CiAgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0
dXNWZWN0b3ImJikgZmluYWw7Ci0gICAgdm9pZCBzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNz
YWdlVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKKyAg
ICB2b2lkIHNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKICAgICB2b2lkIHNlc3Np
b25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQg
ZGlzcGxheUlEKCkgZmluYWwgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKaW5kZXggOWFiMzU3
NWY0YzNiNTU5NTU1YjliODdiMjMzNzFiMWIxYTY2ZGMxNy4uZjdjYjZhNjNlYjkzM2FiZDRkNDUz
YTIyYWIyOTRmMTMwMzIzMmIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCkBAIC02MywxMiArNjMsMTIgQEAgUmVtb3RlQ0RNUHJv
eHk6OlJlbW90ZUNETVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiYmIGZhY3Rv
cnksIHN0ZDo6dW4KIAogUmVtb3RlQ0RNUHJveHk6On5SZW1vdGVDRE1Qcm94eSgpID0gZGVmYXVs
dDsKIAotYm9vbCBSZW1vdGVDRE1Qcm94eTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiB0eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCitib29sIFJlbW90ZUNETVByb3h5
OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3VwcG9ydHNJ
bml0RGF0YSh0eXBlLCBkYXRhKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RN
UHJveHk6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKK1Jl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNw
b25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKIHsKICAgICByZXR1
cm4gbV9wcml2YXRlLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKaW5kZXggNjkyNGU3NGUz
ZjUwMTFiZTIxNWJlNGJkOTZiMjM0ODI2NDcwZjQyMy4uM2I2NmM3NzU3ODcwNjllOTc2ZWUwNjRm
OTZmZjA3YzBmNzEyYTkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5LmgKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvVW5pcXVl
UmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBlbnVtIGNsYXNzIENETVJlcXVpcmVtZW50IDogdWlu
dDhfdDsKIGVudW0gY2xhc3MgQ0RNU2Vzc2lvblR5cGUgOiB1aW50OF90Owogc3RydWN0IENETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb247CkBAIC01OCw4ICs1OCw4IEBAIHB1YmxpYzoKIAogICAgIFJl
bW90ZUNETUZhY3RvcnlQcm94eSogZmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZmFjdG9yeS5n
ZXQoKTsgfQogCi0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBj
b25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgcmVz
cG9uc2UpOworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29u
c3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKTsKICAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpOwogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNUHJveHkuaAppbmRleCBlMmNkMDVkN2NjNzRmMjBlYzY5ZmFkZmUzZWUwODU3NTkyYWQ4
NzliLi5kZThmNmRmNTVhNmUxZmE4YmU5NjZmOTQxZTA3ZmUyZjVjNTAyMWE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHku
aApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oCmlu
ZGV4IGYxNGM2MjdmNjU5M2UxYTg3OGQwZjQ1OTkyYjNjNDFiMjIyYzdmMDAuLjE1NDZiZGZkZmRj
ZjA5MTA4Nzg5NDRmMzQwNzk2N2E3YWIzOGJmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgK
QEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExlZ2FjeUNETTsK
IGNsYXNzIExlZ2FjeUNETVNlc3Npb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgSVBDIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAppbmRl
eCBjNDVlNTI1NWQ2N2I1MmM3YWUxMDQ0OTk4OGNlMDE5MGM3ZmZiNTM4Li42MTdmNDc2ODk1NjQy
ZGVjMjMyNTRiNTQwZWU4MTkxMWFjNGEyZGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCkBAIC05Niw3ICs5Niw3
IEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQodWludDY0X3QgYnl0ZXNTZW50
LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlCiAgICAgICAgIG1fY2xpZW50LT5kYXRhU2VudCgq
dGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCi12b2lkIFJlbW90ZU1l
ZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lk
IFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhKQogewogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPmRh
dGFSZWNlaXZlZCgqdGhpcywgV1RGTW92ZShkYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaAppbmRleCBkMTNkMjVmNjVm
MDIyNGE2Yzc2N2Y2OWE0ZDQxOWNkMDUzYmI3OTVkLi41YjdhN2UyYTc0MjQ0MzJkODZjYjI4YTFi
ZTcxNzE4YTE2NzM3NWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpOwogICAgIHZvaWQgcmVk
aXJlY3RSZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIGRhdGFTZW50KHVpbnQ2NF90LCB1aW50NjRfdCk7
Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7Cisg
ICAgdm9pZCBkYXRhUmVjZWl2ZWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtM
b2FkTWV0cmljcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJy
dGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggZWJkZTc1MzBlYzg2ZmY2YzQxYmVjZDRl
NWVjNDI4YTNjOGFmODBmNy4uZTgzZjkxNDNkMjBhNzJlMmJlNGZmY2JmZWQxM2IwYmI0ZGQzMWUw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90
ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVJl
Y29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYm
IHJlbW8KIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgbV93cml0ZXItPmZldGNoRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1dG8gdGltZUNvZGUpIG11dGFi
bGUgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygp
IDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CisgICAgICAgIGF1
dG8gYnVmZmVyID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPigpOwogICAgICAgICBhdXRvKiBwb2ludGVyID0gYnVmZmVyID8gYnVm
ZmVyLT5kYXRhKCkgOiBudWxscHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRh
dGFSZWZlcmVuY2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29k
ZSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCmluZGV4IDUyY2M1ZGExMjFhMmZiNTlkOGNmMDU5
M2I2ODUwOWZkNjU1YzBjZGMuLjcxZmQwMjIyOWJiYjFjNTczMjZmZGZjZmUyNmMxMWY3NjFhYmNm
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1Bl
bmRpbmdEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL1BlbmRpbmdEb3dubG9hZC5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHdpbGxTZW5k
UmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsg
fTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCmlu
ZGV4IDNmMzllYjMyZjFhYTgwNzY3ODVkYTc5ZWUxMWRhZDhmMGMzMjZiNzkuLmQ4OTIwZTk4NzY0
ZmQ5YjY0YjljZGRjNjBhMWQ4NGQ2MTliMmQ0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAK
QEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJgogICAgIGNvbXBsZXRp
b25IYW5kbGVyKFBvbGljeUFjdGlvbjo6VXNlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXI6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
Cit2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCiB7CiAgICAgQ09SU19DSEVDS0VSX1JF
TEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YSIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXgg
YmJiMTQ2MmEzMTYxZTJmY2U5ZWE1Nzg0NGIxOWI5M2U2MTljODFiMC4uZTExYmY1NjMxOTA3YWU0
NzMzNmVmODVhNWQyMmU4ODM1NzQ2NTFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC03MSw3
ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBS
ZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNo
YWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVn
YWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRM
ZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0
b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgK
aW5kZXggZDYwMThmNjEzODNhZTNhNTFlOWQ0NzIyY2Y2YTYwZTJkOGI4N2E3ZC4uZTA0OWU1YjEy
ZGRlNWZlNTFiNDY5NTUyODlhN2E3ZjY5OTgyYWZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgUmVzb3Vy
Y2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVz
RXhwZWN0ZWRUb1NlbmQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZCgpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5kZXggNmRm
MTQxMDczNmFiYTJmMmQ5YTE5NjE1NmMwYjFiYWZhOGU3MDQ0Ny4uNDY5MGZkYzVkNWFkN2Y4OTJj
MWRlNjhkNWI4NTY0MGRlZDM4MjhmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZC5jcHAKQEAgLTI2Myw3ICsyNjMsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpu
b3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdv
dGlhdAogICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3Bv
bnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtMb2Fk
OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgTmV0d29y
a0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgdGhlIGVuY29kZWQgZGF0YSBsZW5n
dGgsIG5vdCB0aGUgZGVjb2RlZCBkYXRhIGxlbmd0aC4KICAgICBhdXRvIHNpemUgPSBidWZmZXIt
PnNpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRl
eCBiOTJmOWM2MWUxMzU5MGM0MWNiYzFkOGIzODI4ZDNhY2NiNzUxYjM4Li5iNGE5NDUyMzNiOTVl
MmJhNWFhZWMwZTJmN2VjYzAzYTM5NWVjMjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5oCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZp
bmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFu
ZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRl
V2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90
IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFs
OwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCmluZGV4IDBhNWY2NmJkOTY3ZWM5ZmRmNjY0
ZTUyZTVhZjM5NGU0OGVjZTFmN2IuLjM0OGNmZmI5ZThlMjVlZTgzYmJiMzlhMDJjZDNjZjZkMjg1
NGQzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2xpZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3Mg
UG9saWN5QWN0aW9uIDogdWludDhfdDsKIH0KIApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQs
IHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIHsgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRl
eCAzZTljYjdkZjU1MWQ3NmZkNWYyMDk5MDZhNmUxYzc4ZjJkNTZiNjkxLi41ZGM4MjczZDhmZGY3
NWU0NTVlNzQxMjY2NzcxMGUxNzcwZTY3Mzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04Nyw3ICs4Nyw3
IEBAIHN0cnVjdCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZERhdGEgewog
ICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiB9OwogCi1zdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5
bmNocm9ub3VzUmVxdWVzdChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZERh
dGEmIGRhdGEsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCitzdGF0aWMgdm9pZCBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVz
dChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OlN5bmNocm9ub3VzTG9hZERhdGEmIGRhdGEsIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewogICAgIEFTU0VSVChkYXRhLmRlbGF5ZWRSZXBseSk7CiAgICAgQVNTRVJU
KCFkYXRhLnJlc3BvbnNlLmlzTnVsbCgpIHx8ICFkYXRhLmVycm9yLmlzTnVsbCgpKTsKQEAgLTg2
Myw3ICs4NjMsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZERpZFJlY2VpdmVS
ZXNwb25zZVBvdGVudGlhbGx5SW5OZXdCcm93c2luZ0NvbnRleAogICAgIH0pOwogfQogCi12b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICgh
bV9udW1CeXRlc1JlY2VpdmVkKQogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2Vp
dmVCdWZmZXI6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGg9JWQpIiwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CkBAIC0xMjczLDcgKzEyNzMsNyBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5nVGltZXJGaXJlZCgpCiAgICAg
bV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9CiAKLXZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5j
b2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkK
IHsKICAgICBBU1NFUlQoIWlzU3luY2hyb25vdXMoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGM0MjM0NjUx
YmE5MjhiOTVkOGM2ZjU3YmUyNWM1ZjIxMTg5ODlmM2IuLmNmMTBjZjBlNzFhMWJjNjU1NDBlODdk
NmJhNGMxYjljODU2YzBhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQg
d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsK
LSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZh
aWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lk
IGRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSBmaW5hbDsKQEAgLTE5Myw3ICsxOTMs
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzdGFydEJ1ZmZlcmluZ1RpbWVySWZOZWVkZWQoKTsK
ICAgICB2b2lkIGJ1ZmZlcmluZ1RpbWVyRmlyZWQoKTsKLSAgICB2b2lkIHNlbmRCdWZmZXIoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lk
IHNlbmRCdWZmZXIoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiAKICAgICB2b2lkIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwog
ICAgIHZvaWQgaW52YWxpZGF0ZVNhbmRib3hFeHRlbnNpb25zKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCmluZGV4IDExNDg1M2U0NWI3MjUzMzY0Yzc0N2E3MWNi
MmI1YWI4Y2MzOGVmZDUuLjFhZjFlMDhlM2M0NDFlMjRmMzAwNjVlOWYyMDc3NmU2ZjlmYzMzZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCkBAIC0xNzIsNyAr
MTcyLDcgQEAgdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVQKICAgICBkaWRGaW5pc2goeyB9LCByZXNw
b25zZSk7CiB9CiAKLXZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZm
ZXI+JiYpCit2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikKIHsKICAgICBQSU5HX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YSIpOwog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5n
TG9hZC5oCmluZGV4IDE5ZWM4Y2ViOTJlM2M4YTA1NmY0OTI3MzY2MGNmZmY5MjY0MzQxZDEuLmFi
MjlhMGIxYWM4NDY2YjBlZDYxZWY1OGVmNGMyMjBhYmFiNmViZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRp
b25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29t
cGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWlu
dDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkg
ZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCmluZGV4IDQ1NTc4MmQ1NGEyZWE5YmVl
MTg2NTBlMWFmZDFjZjdiMmNlOThjNDkuLjE3ZDQ3OTA3YTNmNmVlNTJiZTY1MDFkMWRhYjBjYTYw
NzUxZDZiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29u
bmVjdFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVj
dFRhc2suY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tCiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogfQogCi12b2lkIFByZWNv
bm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKaW5kZXggMWMxZmYxNjQ3MTExYzZm
YTg0OTRhZjVjZjBjN2JiZWFhMWIyNjUwMy4uODU4MDhlMTIxYjY4Y2E4YjczZTI1MThkMTkzYWIz
OTU4MWVhZDFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVj
b25uZWN0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVj
dFRhc2suaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkU2VuZERhdGEo
dW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0
ZXNUb0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRp
cmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
KSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCmluZGV4IGIzNzcxNzk2
OTRjZmI0NmI1YjNhMTc3ZjQ3N2M5MTAzODZkNmJmMDYuLjVkOWJkMzMzMzkyMTFjYTFjZDQ0N2I4
NzkyZjU0NjFlYTg3ZWRkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJl
c3BvbnNlJiYgcmVzCiAgICAgICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewog
ICAgIGlmIChtX2JvZHlDYWxsYmFjaykKICAgICAgICAgbV9ib2R5Q2FsbGJhY2soYnVmZmVyLT5t
YWtlQ29udGlndW91cygpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKaW5kZXggMzI2NTcw
ZTY5Y2E0MDYyYzc4NWE0ZWNmZjk2MWEwMWUwYTkwYTFjYS4uNjdhYmM1NWM2MGZmMjRlMzlkZDA0
ZWNjNTAyMWI2MDVlZThiZWJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAg
dXNpbmcgUmVzcG9uc2VDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoKT47CiAgICAgdm9pZCB3YWl0
Rm9yUmVzcG9uc2UoUmVzcG9uc2VDYWxsYmFjayYmKTsKLSAgICB1c2luZyBCb2R5Q2FsbGJhY2sg
PSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OworICAgIHVzaW5nIEJvZHlDYWxsYmFj
ayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKICAgICB2b2lkIHdhaXRGb3JCb2R5KEJvZHlDYWxs
YmFjayYmKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKCkgY29u
c3QgeyByZXR1cm4gbV9lcnJvcjsgfQpAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJh
TmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zaG91bGRDYXB0dXJl
RXh0cmFOZXR3b3JrTG9hZE1ldHJpY3M7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDk0MjM1MzQ4MjczZTg5MWIwN2I4NzU2MWMx
ZDYxMmVhMmE0NDM1OTMuLjdhMjYyMjE5ZGU3OGIyMzVkMTI1YTkyYjZlMjM2ZDMzMjYyZjdhMjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNw
cApAQCAtMTc3LDcgKzE3Nyw3IEBAIFJlc291cmNlRXJyb3IgU2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXI6OnByb2Nlc3NSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvCiAgICAgcmV0dXJu
IHsgfTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKCFtX2RlY29kZXIpIHsKICAgICAgICAgaWYg
KCFtX3Jlc3BvbnNlRW5jb2RpbmcuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAppbmRleCAxOGY1NDY5MWYzN2MyYmFiYmM4YzFhM2Jj
MDk0MzcwZTliMjllYjcxLi40NGZjMDY4NWZhMGZlZGM4NzQyMTkxNmU5MTNhNjc0YjFjMGZkYmVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaApA
QCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9y
Q3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2ls
bFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IGZkYmZiMTQzNTk3NmNiZjY1
ZjYxMjU2ODNhYzFlZGQyNDA5ZTI3ODcuLjZmMjZiNGNjMmRlZmEwZDk4ODdjNmY0MjQ1ZThmNTRm
YmVjNGJhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC01ODEsNyArNTgxLDcg
QEAgU3RvcmFnZTo6UmVjb3JkIENhY2hlOjplbmNvZGUoY29uc3QgUmVjb3JkSW5mb3JtYXRpb24m
IHJlY29yZEluZm9ybWF0aW9uLCBjb25zdAogICAgIERhdGEgYm9keTsKICAgICBXVEY6OnN3aXRj
aE9uKHJlY29yZC5yZXNwb25zZUJvZHksIFtdKGNvbnN0IFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4m
IGZvcm1EYXRhKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTdG9yZSBmb3JtIGRhdGEgYm9keS4KLSAg
ICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpIHsKKyAgICB9LCBbJl0oY29uc3QgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgewogICAgICAgICBib2R5ID0geyBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkgfTsK
ICAgICB9LCBbXShjb25zdCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICB9KTsKQEAgLTY3Myw3ICs2
NzMsNyBAQCBzdGQ6Om9wdGlvbmFsPFJlY29yZD4gQ2FjaGU6OmRlY29kZShjb25zdCBTdG9yYWdl
OjpSZWNvcmQmIHN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBh
dXRvIHJlY29yZCA9IFdURk1vdmUocmVzdWx0LT5yZWNvcmQpOwotICAgIHJlY29yZC5yZXNwb25z
ZUJvZHkgPSBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5i
b2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5LnNpemUoKSk7CisgICAgcmVjb3JkLnJlc3BvbnNlQm9k
eSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0
b3JhZ2UuYm9keS5zaXplKCkpOwogCiAgICAgcmV0dXJuIHJlY29yZDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCAw
NDc3NjgzNmY5OTkwOTM5MTBiMzk5ZDc1NTM4NTVkNWQzZjFmZjRlLi5kZDMwNWFmMjk3NjYxZTQ3
NmM0OTY3N2RmNTcyMWVmZDFlYzkzMmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC00NTQsNyArNDU0LDcgQEAgdm9p
ZCBDYWNoZTo6Y29tcGxldGVSZXRyaWV2ZShSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYgaGFu
ZGxlciwgc3RkOjp1bmlxdWVfcHQKICAgICBoYW5kbGVyKFdURk1vdmUoZW50cnkpLCBpbmZvKTsK
IH0KICAgICAKLXN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6Om1ha2VFbnRyeShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3Bv
bnNlRGF0YSkKK3N0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6Om1ha2VFbnRyeShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiByZXNwb25zZURhdGEpCiB7CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RW50cnk+KG1ha2VD
YWNoZUtleShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUocmVzcG9uc2VEYXRhKSwgV2ViQ29y
ZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VT
ZXNzaW9uKG1fc2Vzc2lvbklEKSwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKIH0KQEAgLTQ2NCw3ICs0
NjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjptYWtlUmVkaXJlY3RFbnRyeShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RW50
cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwgcmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCwgV2Vi
Q29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhuZXR3b3JrUHJvY2VzcygpLnN0b3Jh
Z2VTZXNzaW9uKG1fc2Vzc2lvbklEKSwgcmVxdWVzdCwgcmVzcG9uc2UpKTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIEZ1bmN0aW9uPHZv
aWQoTWFwcGVkQm9keSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5PiBDYWNoZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBGdW5jdGlvbjx2b2lk
KE1hcHBlZEJvZHkmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQocmVzcG9u
c2VEYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlLmgKaW5kZXggMTk5ZjBjZmI3MzI1NDNjNWZlYWY0ZmUyMzAxZTZhMWMxMmY4OGZl
OC4uZWQwNGViY2EwYjM2ZjNmOWM0YzBlN2JhYzcxMzM2YjllOTZjMzU4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCkBAIC00Myw3
ICs0Myw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMb3dQb3dlck1vZGVOb3RpZmll
cjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTY2LDcg
KzE2Niw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHVzaW5nIFJldHJpZXZlQ29tcGxldGlvbkhh
bmRsZXIgPSBGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4sIGNvbnN0IFJldHJp
ZXZlSW5mbyYpPjsKICAgICB2b2lkIHJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiA9IG51bGxwdHIpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiA9IG51
bGxwdHIpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmVSZWRpcmVjdChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIHN0ZDo6
b3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FwKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+
IHVwZGF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBFbnRyeSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHZhbGlkYXRpbmdSZXNwb25zZSk7CiAKQEAg
LTE4NSw3ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXRyaWV2ZURhdGEoY29uc3QgRGF0
YUtleSYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgdWludDhfdCosIHNpemVfdCk+KTsKICAgICB2b2lk
IHN0b3JlRGF0YShjb25zdCBEYXRhS2V5JiwgIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7
CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlRW50cnkoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gbWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlUmVkaXJlY3RFbnRyeShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3Qp
OwogCiAgICAgdm9pZCBkdW1wQ29udGVudHNUb0ZpbGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKaW5kZXgg
ZjFlZmZmMzUwZmEzN2Y2YjQ2ODE1OWZjNjYyZTdhYTk0MjgzZDdlMS4uNzYxMDc4ZGVhMDkzYzA0
NTU1YmU5OGIwNTE3M2UzNDE1MDY3YTg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAKQEAgLTM3LDcgKzM3
LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAKLUVu
dHJ5OjpFbnRyeShjb25zdCBLZXkmIGtleSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25z
dCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVy
cykKK0VudHJ5OjpFbnRyeShjb25zdCBLZXkmIGtleSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5
aW5nUmVxdWVzdEhlYWRlcnMpCiAgICAgOiBtX2tleShrZXkpCiAgICAgLCBtX3RpbWVTdGFtcChX
YWxsVGltZTo6bm93KCkpCiAgICAgLCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQpAQCAtMTAzLDcgKzEw
Myw3IEBAIFN0b3JhZ2U6OlJlY29yZCBFbnRyeTo6ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCkgY29u
c3QKICAgICBEYXRhIGJvZHk7CiAgICAgaWYgKG1fYnVmZmVyKSB7CiAgICAgICAgIG1fYnVmZmVy
ID0gbV9idWZmZXItPm1ha2VDb250aWd1b3VzKCk7Ci0gICAgICAgIGJvZHkgPSB7IHN0YXRpY19j
YXN0PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihtX2J1ZmZlci5nZXQoKSktPmRh
dGEoKSwgbV9idWZmZXItPnNpemUoKSB9OworICAgICAgICBib2R5ID0geyBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXIqPihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKSwgbV9idWZmZXIt
PnNpemUoKSB9OwogICAgIH0KIAogICAgIHJldHVybiB7IG1fa2V5LCBtX3RpbWVTdGFtcCwgaGVh
ZGVyLCBib2R5LCB7IH0gfTsKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIEVudHJ5Ojppbml0aWFs
aXplQnVmZmVyRnJvbVN0b3JhZ2VSZWNvcmQoKSBjb25zdAogICAgIG1fYnVmZmVyID0gV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUobV9zb3VyY2VTdG9yYWdlUmVjb3JkLmJvZHkuZGF0YSgp
LCBtX3NvdXJjZVN0b3JhZ2VSZWNvcmQuYm9keS5zaXplKCkpOwogfQogCi1XZWJDb3JlOjpTaGFy
ZWRCdWZmZXIqIEVudHJ5OjpidWZmZXIoKSBjb25zdAorV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogRW50cnk6OmJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2J1ZmZlcikKICAg
ICAgICAgaW5pdGlhbGl6ZUJ1ZmZlckZyb21TdG9yYWdlUmVjb3JkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKaW5k
ZXggOTY5MTVjMzgwMWMzN2RkYWMzZThlNjAzMjFmODhjMjIyOWNkNTlhMC4uOWMwNDIwZDQ0YTgx
NThkZmM1YjIxY2YxODgyMDRjZjNhOTE2YjQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaApAQCAtMzUsNyArMzUs
NyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIE5ldHdv
cmtDYWNoZSB7CiBjbGFzcyBFbnRyeSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgRW50cnkoY29uc3QgS2V5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFZlY3RvcjxzdGQ6
OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKTsKKyAgICBFbnRy
eShjb25zdCBLZXkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8
U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKTsKICAgICBFbnRyeShjb25z
dCBLZXkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8
U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKTsKICAgICBleHBsaWNpdCBF
bnRyeShjb25zdCBTdG9yYWdlOjpSZWNvcmQmKTsKICAgICBFbnRyeShjb25zdCBFbnRyeSYpOwpA
QCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAgICAgY29uc3Qg
VmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMo
KSBjb25zdCB7IHJldHVybiBtX3ZhcnlpbmdSZXF1ZXN0SGVhZGVyczsgfQogCi0gICAgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdDsKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdD4mIHJlZGlyZWN0UmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVkaXJlY3RSZXF1ZXN0OyB9CiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQpA
QCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBT
dHJpbmc+PiBtX3ZhcnlpbmdSZXF1ZXN0SGVhZGVyczsKIAogICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0PiBtX3JlZGlyZWN0UmVxdWVzdDsKLSAgICBtdXRhYmxlIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIG11dGFibGUgUmVmUHRy
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogI2lmIEVOQUJMRShT
SEFSRUFCTEVfUkVTT1VSQ0UpCiAgICAgbXV0YWJsZSBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxl
IG1fc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmNwcAppbmRleCBkNDNjMDg5ZDYxODUzYzUxOWUzNjJmZjJjOGM3YzQxODNjZWMx
MDBiLi40MWQ4MjM1MDI0NzQ3YjZmYzRhM2FjNTQ4ZTEzMzRlZDZjYjVlZjdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFNwZWN1bGF0aXZl
TG9hZDo6U3BlY3VsYXRpdmVMb2FkKENhY2hlJiBjYWNoZSwgY29uc3QgR2xvYmFsRnJhbWVJRCYg
Z2xvYmFsRnJhbWVJCiAgICAgOiBtX2NhY2hlKGNhY2hlKQogICAgICwgbV9jb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAsIG1fb3JpZ2luYWxSZXF1ZXN0
KHJlcXVlc3QpCi0gICAgLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCkpCisgICAgLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpKQogICAgICwgbV9jYWNoZUVudHJ5KFdURk1vdmUoY2FjaGVFbnRyeUZvclZh
bGlkYXRpb24pKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5IHx8IG1fY2FjaGVFbnRyeS0+
bmVlZHNWYWxpZGF0aW9uKCkpOwpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVM
b2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9u
c2UsIFJlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12
b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNwZWN1bGF0aXZl
TG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghbV9jYWNo
ZUVudHJ5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggNjc4MzBkZjBi
MzAzNDMzMDJhMTFiNTUxZDdhMDlmNmQxYTg1ZjU2My4uMWI4NDNkYjdlYzI3MGRiOWRhYjllOGEy
NWYyYTQ4YThlY2FlMmE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC02
MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVk
ZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2Vu
ZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUuY3BwCmluZGV4IDVlMmUwMmUyZmJhMGI0YTBjMDNiNWQz
ZTY2Yjk3ZjdiY2NjNzk1OGIuLjMxOTliZmYzMTFiNmMzZWVmYmU5NTBiNDVlNmIwYTk2ZTMyNzc3
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0
Y2hDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVm
ZXRjaENhY2hlLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
UHJlZmV0Y2hDYWNoZTo6RW50cnk6OkVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitQcmVmZXRj
aENhY2hlOjpFbnRyeTo6RW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAg
OiByZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSksIGJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7
CiB9CkBAIC03Miw3ICs3Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQcmVmZXRjaENhY2hlOjpFbnRy
eT4gUHJlZmV0Y2hDYWNoZTo6dGFrZShjb25zdCBVUkwmIHVybCkKIAogc3RhdGljIGNvbnN0IFNl
Y29uZHMgZXhwaXJhdGlvblRpbWVvdXQgeyA1X3MgfTsKIAotdm9pZCBQcmVmZXRjaENhY2hlOjpz
dG9yZShjb25zdCBVUkwmIHJlcXVlc3RVcmwsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFBy
ZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25QcmVmZXRjaGVzKQogICAgICAg
ICBtX3Nlc3Npb25QcmVmZXRjaGVzID0gbWFrZVVuaXF1ZTxQcmVmZXRjaEVudHJpZXNNYXA+KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNo
Q2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNo
ZS5oCmluZGV4IGEyNTE1MjBiMzFlYWM5MjFjMjJkMzExNTFkNmQyMzFhMWJlZDEzOGMuLjUyYzBi
MTBmY2M2ZDVhNmRlMTE0NDdlN2U0ZTgyMmRmOGY4NDFjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oCkBAIC00NywxOCArNDcs
MTggQEAgcHVibGljOgogCiAgICAgc3RydWN0IEVudHJ5IHsKICAgICAgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOworICAgICAgICBFbnRyeShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKTsKICAgICAgICAgRW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAKLSAgICAgICAgUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gcmVsZWFzZUJ1ZmZlcigpIHsgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVs
bCgpOyB9CisgICAgICAgIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZWxl
YXNlQnVmZmVyKCkgeyByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7IH0KIAogICAgICAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwotICAgICAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZWRpcmVjdFJlcXVlc3Q7CiAgICAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRy
eT4gdGFrZShjb25zdCBVUkwmKTsKLSAgICB2b2lkIHN0b3JlKGNvbnN0IFVSTCYsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7Cisg
ICAgdm9pZCBzdG9yZShjb25zdCBVUkwmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB2b2lkIHN0b3Jl
UmVkaXJlY3QoY29uc3QgVVJMJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKaW5kZXgg
YjlhYjBkZWViYjlmOTI3YzczNzQyZTg2YTBiZTdmOTcxNjBiZDZmYi4uNDE2NjhhNWIxY2Q3Mzg2
OTY3YjhmZDk3M2U5NjczMmVjYTkwN2VkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaApAQCAtNjIsNyAr
NjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWROZWdvdGlhdGVNb2Rlcm5UTFMoY29uc3QgVVJM
Jik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVk
TGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICB2
b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIm
Jik7CiAgICAgdm9pZCB0cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKERvd25sb2Fk
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCBhNGNlYjMxM2FiNTAzZGM2N2YxNTAyZmM5MzBk
Njg4YTYzMzI3NjBhLi4wNGE2ZjE4ZjcxYzMzNTFjMmY2NzRhZmE1ZGYxNzM5ZmE3NzgyNTMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTQ0Myw3ICs0NDMsNyBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza0NvY29hOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiBlcgogICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoZXJyb3IsIG5l
dHdvcmtMb2FkTWV0cmljcyk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgTmV0d29y
a0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgV1RGRW1pdFNpZ25wb3N0KG1fdGFzay5nZXQoKSwg
IkRhdGFUYXNrIiwgInJlY2VpdmVkICV6ZCBieXRlcyIsIGRhdGEtPnNpemUoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tD
dXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRh
c2tDdXJsLmNwcAppbmRleCA2NzdjNjFkYTFhMTg5NGMxZjU5NjU2ZDkyNzA5ZWI3MWQ1OTFhNTUz
Li4zZGM2NWZmODJjOWRhODkyZDIwYzM0ODg2ZTVhMWM0ZDc5ZGFkZWY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1
cmwuY3BwCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJs
RGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVzcG8KICAgICBp
bnZva2VEaWRSZWNlaXZlUmVzcG9uc2UoKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJs
OjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQordm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihD
dXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAg
ICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6
OkNhbmNlbGluZyB8fCBzdGF0ZSgpID09IFN0YXRlOjpDb21wbGV0ZWQgfHwgKCFtX2NsaWVudCAm
JiAhaXNEb3dubG9hZCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCmluZGV4IDFjNDI3ZGRiNzhkNjk1M2ZlODk2
MGM1NjkyYWZkZTRmNGYwZWVlODUuLjQ1YmU1Y2UxODQzMjUyNzFkNWMwODBkZDM0ZjFlZTRhMTY2
NDJhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3
b3JrRGF0YVRhc2tDdXJsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJs
L05ldHdvcmtEYXRhVGFza0N1cmwuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIFJl
ZjxXZWJDb3JlOjpDdXJsUmVxdWVzdD4gY3JlYXRlQ3VybFJlcXVlc3QoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFJlcXVlc3RTdGF0dXMgPSBSZXF1ZXN0U3RhdHVzOjpOZXdSZXF1ZXN0KTsK
ICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIHVuc2lnbmVk
IGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxE
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpDdXJsUmVz
cG9uc2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3Jl
OjpDdXJsUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBj
dXJsRGlkQ29tcGxldGUoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihXZWJD
b3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJiwgV2ViQ29yZTo6Q2Vy
dGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggZTY1YjJl
YTgzOGIwODE4M2M5NmI4MzEyMGIxZmVmMTU2YmI4YzA5NS4uZTY3ZTA1YmE4NDc4YTU4MTgzMGUz
OTcwNjhiMzJmYjA4ZDkxYjdlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtMTc2MSw3ICsxNzYx
LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZWFkRGF0YVVSTChzdGQ6Om9wdGlv
bmFsPERhdGFVUkxEZWNvZGVyOjpSZXN1bHQ+JiYKICAgICB9CiAKICAgICBtX3Jlc3BvbnNlID0g
UmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKG1fY3VycmVudFJlcXVlc3QudXJsKCks
IHJlc3VsdC52YWx1ZSgpKTsKLSAgICBhdXRvIGJ5dGVzID0gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRlcygpOworICAgIGF1
dG8gYnl0ZXMgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpLT5j
cmVhdGVHQnl0ZXMoKTsKICAgICBtX2lucHV0U3RyZWFtID0gYWRvcHRHUmVmKGdfbWVtb3J5X2lu
cHV0X3N0cmVhbV9uZXdfZnJvbV9ieXRlcyhieXRlcy5nZXQoKSkpOwogICAgIGRpc3BhdGNoRGlk
UmVjZWl2ZVJlc3BvbnNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dlYnJ0Yy9OZXR3b3JrUlRDUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCmluZGV4IGY1ZGI3MDZjNDQ1ODAy
MTA4N2Y5NTk5NjY5ZGZhN2Q5ZjgzNzk3OGMuLjMzZDQzYjcyMjM4ZDIwM2U3ZWRlYzk0MTRjYWY5
ZmRhOGY0MDUyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oCkBAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBQ
YWNrZXRPcHRpb25zOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZWdpc3RyYWJsZURv
bWFpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCAyOWY3MWQ3ZTZkYzc1MGVmMTlmMzI4NjJjODli
NzE4NWUwM2JmODk2Li5kZjhlZTMwYzQzYzBmZmY0ZDBlYTZkOGNlY2UzZmNmNGNiMzNlZjcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcApA
QCAtNTEsOSArNTEsOSBAQCBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1
ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIElQQzo6RGF0YVJlZmVyZW5j
ZSBkYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGRhdGEuc2l6ZSgpKQot
ICAgICAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlcikg
fTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5o
CmluZGV4IGU5Y2Q4NzJmOGQ0NGYxNWUwZWUzN2M3MzQ5MmIyZDgwMmFjOTA3MTYuLjE3ZjA4YzI4
ZWExMjViNTUwOTkzZWVkMjRkNTk2M2I4NTEwYTExNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vLyBFbmNvZGVzIGEgU2hhcmVkQnVm
ZmVyIHRoYXQgaXMgcmVjZWl2ZWQgYXMgYSBjb3B5IG9mIHRoZSBkZWNvZGVkIGRhdGEgaW4gYSBu
ZXcgU2hhcmVkQnVmZmVyLgorLy8gRW5jb2RlcyBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgdGhh
dCBpcyByZWNlaXZlZCBhcyBhIGNvcHkgb2YgdGhlIGRlY29kZWQgZGF0YSBpbiBhIG5ldyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyLgogLy8gVG8gYXZvaWQgY29weWluZyBmcm9tIHRoZSBEZWNvZGVy
LCB1c2UgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB0byByZWNlaXZlIGEgRGF0YVJlZmVyZW5j
ZSBpbnN0ZWFkLgogCiAjcHJhZ21hIG9uY2UKQEAgLTM5LDE5ICszOSwxOSBAQCBjbGFzcyBTaGFy
ZWRCdWZmZXJDb3B5IHsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJDb3B5KCkgPSBkZWZhdWx0
OwogCi0gICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7
IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQog
ICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCi0gICAgICAgIDogbV9idWZmZXIoYnVmZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygp
IDogUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCkpIHsgfQorICAgICAg
ICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CiAgICAgU2hhcmVkQnVmZmVyQ29weShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihX
VEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKGJ1
ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+KCkpIHsgfQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKSkgeyB9Ci0gICAgU2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKKyAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihidWZm
ZXIubWFrZUNvbnRpZ3VvdXMoKSkgeyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgY29uc3Qg
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBi
dWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQorICAgIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQogCiAgICAg
Y29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXIt
PmRhdGEoKSA6IG51bGxwdHI7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6IDA7IH0KQEAgLTYxLDcgKzYxLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZm
ZXJDb3B5PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZS5oCmluZGV4IGQzZDBlYzVlOTc4NTU5OWI2MzRhODRjNmM0NDcxYjUyY2QyMjEzZjEuLjY3ZWM4
ZTVlOTJiZDAyNDExNWRiMGQ0MDgwYTI0ZmU3MzU3MGQzZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKQEAgLTIz
LDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0v
LyBFbmNvZGVzIGEgU2hhcmVkQnVmZmVyIG9yIERhdGFSZWZlcmVuY2UgdGhhdCBpcyByZWNlaXZl
ZCBhcyBhIERhdGFSZWZlcmVuY2UgdG8gdGhlIGRlY29kZWQgZGF0YS4KKy8vIEVuY29kZXMgYSBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyIG9yIERhdGFSZWZlcmVuY2UgdGhhdCBpcyByZWNlaXZlZCBh
cyBhIERhdGFSZWZlcmVuY2UgdG8gdGhlIGRlY29kZWQgZGF0YS4KIAogI3ByYWdtYSBvbmNlCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAppbmRleCBiM2E5OWFmOGY1MTI3
ZjZhNjUzY2MxYzhmODViNjJiNmNhYWYxNThhLi5jMDI2ZjU0OTU2OWIyYmUwMDc4YWUzMjVkMDUz
OWUwNzFhZjExMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1l
bW9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCkBA
IC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAotUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVt
b3J5Ojpjb3B5QnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00
OCwxMCArNDgsMTAgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5Ojpjb3B5QnVm
ZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBzaGFyZWRNZW1vcnk7
CiB9CiAKLVJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRNZW1vcnk6OmNyZWF0ZVNo
YXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CitSZWY8U2hhcmVkQnVmZmVyPiBTaGFy
ZWRNZW1vcnk6OmNyZWF0ZVNoYXJlZEJ1ZmZlcihzaXplX3QgZGF0YVNpemUpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGRhdGFTaXplIDw9IHNpemUoKSk7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dICgpIC0+IGNvbnN0IHVpbnQ4X3QqIHsKICAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHJvdGVjdGVkVGhpcy0+ZGF0
YSgpKTsKICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hh
cmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCmluZGV4
IDc2YjczY2FlNGM4NWQ3ZWUzNjhiMWY4NGQ1MWVlMDBmOTJlOTA0N2MuLjFiNGZkZmFmNjgzODlk
Y2U3MjhmZjM0ZTVlNWYwMTJlMjQzZmEyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRN
ZW1vcnkuaApAQCAtNDQsOCArNDQsOCBAQCBjbGFzcyBFbmNvZGVyOwogfQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogI2lmIE9TKERBUldJTikK
QEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRTogQ2hhbmdlIHRoZXNl
IGZhY3RvcnkgZnVuY3Rpb25zIHRvIHJldHVybiBSZWY8U2hhcmVkTWVtb3J5PiBhbmQgY3Jhc2gg
b24gZmFpbHVyZS4KICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gYWxsb2NhdGUoc2l6
ZV90KTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gY29weUJ1ZmZlcihjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4g
Y29weUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAg
c3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IG1hcChjb25zdCBIYW5kbGUmLCBQcm90ZWN0aW9u
KTsKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJl
ZE1lbW9yeT4gd3JhcE1hcCh2b2lkKiwgc2l6ZV90LCBpbnQgZmlsZURlc2NyaXB0b3IpOwpAQCAt
MTU0LDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm4gdGhlIHN5c3RlbSBwYWdlIHNp
emUgaW4gYnl0ZXMuCiAgICAgc3RhdGljIHVuc2lnbmVkIHN5c3RlbVBhZ2VTaXplKCk7CiAKLSAg
ICBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVy
KHNpemVfdCkgY29uc3Q7CisgICAgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hh
cmVkQnVmZmVyKHNpemVfdCkgY29uc3Q7CiAKIHByaXZhdGU6CiAjaWYgT1MoREFSV0lOKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbQppbmRleCAzNWVhMTYyMTU2YTIwNzAyNmRmMTM0MWM1YzBhODczYTIzYTdlYzcx
Li4zYzFiNTdkNWFhMjZlYzcyZTYwYjVkNzhhMTFlOWZkODUyY2ZmZWM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2Nv
YS5tbQpAQCAtNTY0LDcgKzU2NCw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBsYXRm
b3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9udD4+OjpkZWNvCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoKmluY2x1ZGVzQ3JlYXRpb25EYXRhKSB7
Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGZvbnRG
YWNlRGF0YTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250RmFjZURh
dGE7CiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApp
bmRleCA0NTQxNjQzNmMyNTA1MjA4MzhlNWRmZGNjMmJmZTM1M2ZiNTljMmExLi5lOWE1MTNhMzA1
ZWRkNjViZGZhMzc0ZTFiZDBlM2ZlYWIxZjZiODI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUltYWdl
QnVmZmVyQmFja2UKICAgICBSRUxFQVNFX0xPRyhSZW1vdGVMYXllclRyZWUsICJDR0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXJCYWNrZW5kIG9mIHNpemUgJWR4JWQgZW5jb2RlZCBkaXNwbGF5IGxpc3Qg
b2YgJWxkIGJ5dGVzIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBDRkRhdGFHZXRMZW5n
dGgoZGF0YS5nZXQoKSkpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpIH0gfTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5IHsgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OwogfQogCiBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQmIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4IDJjMTYxMWM5ZTcw
ZjhmOWExMzc5YzJjODQzMDg0NzM1MmU0Yzk2Y2EuLjZmYTAyYTdiYzNlZTU0YWU2ZDMyNTM4MTBk
NzhkZWMzMTY1MzUzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJj
ZS5jcHAKQEAgLTU1LDE1ICs1NSwxNSBAQCBib29sIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6
OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVy
biB0cnVlOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVz
b3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFi
bGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtz
ZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5kYXRhKCk7IH0sCiAgICAgICAg
IFtzZWxmID0gUmVmIHsgKnRoaXMgfV0oKSB7IHJldHVybiBzZWxmLT5zaXplKCk7IH0KICAgICB9
KTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNl
OjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlOjp0cnlXcmFwSW5TaGFyZWRCdWZmZXIoKSBj
b25zdAogewogICAgIFJlZlB0cjxTaGFyZWFibGVSZXNvdXJjZT4gcmVzb3VyY2UgPSBTaGFyZWFi
bGVSZXNvdXJjZTo6bWFwKCp0aGlzKTsKICAgICBpZiAoIXJlc291cmNlKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAppbmRleCBhMGVkMDg1NzM0Yjc3NTUxNGMxMTY3
ZGVmM2Q3Y2I0ZjY0ZTQxMmFhLi5kYTFlZWUwYWQ2MmNiMzQ4NGMxYzM0MDVjNDg3MGNmMGM1MWUx
NjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKQEAgLTMzLDcg
KzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
LWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZv
aWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgICAgICBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIEhhbmRsZSYpOwogCi0gICAgICAg
IFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFyZWRC
dWZmZXIoKSBjb25zdDsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gdHJ5
V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmll
bmQgY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2U7CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAg
ICAKIHByaXZhdGU6CiAgICAgU2hhcmVhYmxlUmVzb3VyY2UoUmVmPFNoYXJlZE1lbW9yeT4mJiwg
dW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBzaXplKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gd3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBSZWY8U2hh
cmVkTWVtb3J5PiBtX3NoYXJlZE1lbW9yeTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggZTkzZmQ4OWU3ZWZjMDc2YTliOTE4Nzc3YmQ2
MDhjODM0NGI5NGFiYS4uYTY5ZWJjNTk2MzI1OWVhNGFkNDUxNzE1Yjc3MWNkZDJkYjY0NDMxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBA
IC0xNjQsNyArMTY0LDcgQEAgREVGSU5FX1NJTVBMRV9BUkdVTUVOVF9DT0RFUl9GT1JfU09VUkNF
KERpc3BsYXlMaXN0OjpTZXRJbmxpbmVTdHJva2VDb2xvcikKIAogI3VuZGVmIERFRklORV9TSU1Q
TEVfQVJHVU1FTlRfQ09ERVJfRk9SX1NPVVJDRQogCi1zdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRC
dWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCitzdGF0
aWMgdm9pZCBlbmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogewogICAgIGJvb2wgaXNOdWxsID0gIWJ1ZmZlcjsK
ICAgICBlbmNvZGVyIDw8IGlzTnVsbDsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBzdGF0aWMgdm9pZCBl
bmNvZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBi
dWZmZXIpCiAgICAgICAgIHJldHVybjsKIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQot
ICAgIC8vIERvIG5vdCB1c2Ugc2hhcmVkIG1lbW9yeSBmb3IgU2hhcmVkQnVmZmVyIGVuY29kaW5n
IGluIFVuaXgsIGJlY2F1c2UgaXQncyBlYXN5IHRvIHJlYWNoIHRoZQorICAgIC8vIERvIG5vdCB1
c2Ugc2hhcmVkIG1lbW9yeSBmb3IgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBlbmNvZGluZyBpbiBV
bml4LCBiZWNhdXNlIGl0J3MgZWFzeSB0byByZWFjaCB0aGUKICAgICAvLyBtYXhpbXVtIG51bWJl
ciBvZiBmaWxlIGRlc2NyaXB0b3JzIG9wZW4gcGVyIHByb2Nlc3Mgd2hlbiBzZW5kaW5nIGxhcmdl
IGRhdGEgaW4gc21hbGwgY2h1bmtzCiAgICAgLy8gb3ZlciB0aGUgSVBDLiBDb25uZWN0aW9uVW5p
eC5jcHAgYWxyZWFkeSB1c2VzIHNoYXJlZCBtZW1vcnkgdG8gc2VuZCBhbnkgSVBDIG1lc3NhZ2Ug
dGhhdCBpcwogICAgIC8vIHRvbyBsYXJnZS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDg1NzEuCkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIHZvaWQgZW5j
b2RlU2hhcmVkQnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVm
ZmVyKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVT
aGFyZWRCdWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpCitzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVk
QnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7
CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc051bGw7CiAgICAgZGVjb2RlciA+PiBpc051bGw7
CkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8Q29udGkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKCFidWZmZXJTaXplKSB7Ci0gICAgICAgIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTIyMSw3
ICsyMjEsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVm
ZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxDb250aQogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVGaXhlZExlbmd0aERhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCAxKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoZGF0YSkpOworICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpOwogI2Vsc2UKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5k
bGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpcGNIYW5kbGUpKQpAQCAtMjQwLDcgKzI0MCw3
IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVj
b2RlciYgZGVjb2RlciwgUmVmUHRyPENvbnRpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRp
YyB2b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBkYXRhKQorc3RhdGljIHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiYgZGF0YSkKIHsKICAgICBBU1NFUlQodHlwZXMuc2l6ZSgpID09IGRhdGEuc2l6
ZSgpKTsKICAgICBlbmNvZGVyIDw8IHR5cGVzOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyB2
b2lkIGVuY29kZVR5cGVzQW5kRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdHlwZXMsIGNvCiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZm
ZXIuZ2V0KCkpOwogfQogCi1zdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlVHlw
ZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpCitzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlVHlwZXNBbmREYXRhKERlY29kZXImIGRlY29kZXIsIFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgZGF0YSkKIHsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMjYxLDcgKzI2MSw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVU
eXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluCiAgICAgQVNTRVJUKGRh
dGFTaXplID09IHR5cGVzLnNpemUoKSk7CiAKICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwg
ZGF0YVNpemU7IGkrKykgewotICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
YnVmZmVyOworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlm
ICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIGRhdGEuYXBwZW5kKGJ1ZmZlcik7CkBAIC0zNTYsNyArMzU2LDcg
QEAgdm9pZCBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgRE9NQ2EKICAgICBlbmNvZGVyIDw8IHJlY29yZC51cGRhdGVS
ZXNwb25zZUNvdW50ZXI7CiAgICAgZW5jb2RlciA8PCByZWNvcmQucmVzcG9uc2VCb2R5U2l6ZTsK
IAotICAgIFdURjo6c3dpdGNoT24ocmVjb3JkLnJlc3BvbnNlQm9keSwgWyZdKGNvbnN0IFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CisgICAgV1RGOjpzd2l0Y2hPbihyZWNv
cmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewog
ICAgICAgICBlbmNvZGVyIDw8IHRydWU7CiAgICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNv
ZGVyLCBidWZmZXIucHRyKCkpOwogICAgIH0sIFsmXShjb25zdCBSZWY8Rm9ybURhdGE+JiBmb3Jt
RGF0YSkgewpAQCAtNDE0LDcgKzQxNCw3IEBAIHN0ZDo6b3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6
OlJlY29yZD4gQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaGFzU2hhcmVkQnVmZmVyQm9keSkg
ewotICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVk
QnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICBpZiAoYnVmZmVyKQpAQCAtMTU1MCwxMCArMTU1MCwxMCBAQCB2b2lkIEFyZ3Vt
ZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0CiAgICAgaWYgKGhhc1N0cmluZykKICAgICAgICAgZW5jb2RlciA8PCBzdGQ6
OmdldDxTdHJpbmc+KHBsYXRmb3JtRGF0YSk7CiAKLSAgICBib29sIGhhc0J1ZmZlciA9IHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURh
dGEpOworICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hh
cmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKTsKICAgICBlbmNvZGVyIDw8IGhhc0J1ZmZlcjsKICAg
ICBpZiAoaGFzQnVmZmVyKQotICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rlciwgc3Rk
OjpnZXQ8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpLnB0cigpKTsK
KyAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIHN0ZDo6Z2V0PFJlZjxTaGFyZWRC
dWZmZXI+PihwbGF0Zm9ybURhdGEpLnB0cigpKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnkmIGRhdGEpCkBAIC0xNTgzLDcgKzE1ODMsNyBAQCBib29s
IEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIFBhc3RlYgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGFz
QnVmZmVyKSB7Ci0gICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB2YWx1ZTsK
KyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWU7CiAgICAgICAgIGlmICghZGVjb2Rl
U2hhcmVkQnVmZmVyKGRlY29kZXIsIHZhbHVlKSB8fCAhdmFsdWUpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIGRhdGEucGxhdGZvcm1EYXRhID0geyB2YWx1ZS5yZWxlYXNlTm9u
TnVsbCgpIH07CkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobQog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICByZXR1cm4geyB7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5
cGUpLCBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKSB9IH07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBX
VEZNb3ZlKG1pbWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKSB9IH07CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQpAQCAtMzAxMCw1NiArMzAxMCw1NiBAQCBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRQ
bGF0Zm9ybURhdGFDdWVWYWx1ZT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkUAog
fQogI2VuZGlmCiAKLXZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYgYnVmZmVyKQordm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBS
ZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBl
bmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKIH0KIAotc3RkOjpvcHRp
b25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7
Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rl
ciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBi
dWZmZXI7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKQordm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBlbmNvZGVTaGFyZWRC
dWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxSZWY8U2hh
cmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAg
ICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpOwogfQogCi12b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQordm9pZCBBcmd1bWVu
dENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAg
ICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7CiB9CiAKLXN0ZDo6
b3B0aW9uYWw8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQorc3RkOjpvcHRpb25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2Rl
cjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRl
Y29kZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4gYnVmZmVyOwogfQogCi12b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQordm9pZCBBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiB7CiAgICAgZW5jb2RlU2hh
cmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8UmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorc3RkOjpvcHRp
b25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
OwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzEyMyw3ICszMTIzLDcgQEAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2QKICAgICAgICAgcmV0dXJuIGRlY29kZVNjcmlwdEJ1ZmZl
ckFzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoZGVjb2Rlcik7CiAjZW5kaWYKIAotICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTMxMzUsNyArMzEzNSw3IEBAIHZv
aWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlCiB7CiAgICAgZW5jb2RlciA8PCBtZXNzYWdlLmZpcnN0Owog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZURhdGEgPSBtZXNzYWdlLnNlY29uZC5j
b3B5UmVmKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2VEYXRh
ID0gbWVzc2FnZS5zZWNvbmQuY29weVJlZigpOwogICAgIGVuY29kZXIgPDwgbWVzc2FnZURhdGE7
CiB9CiAKQEAgLTMxNDUsNyArMzE0NSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpNZXNzYWdlPiAgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSB8
fCAhYnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGVmMDExMWZiNTYyY2RlYjZj
YjBmN2EyNTIxZjA5M2FmMjc5ODY3OWYuLjZmYWMyYWExZWE3ODQ2ZmY2YmY4OTAyMWYwZjUyZTlh
YTdhZTAzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCkBAIC0xMTQsNyArMTE0LDcgQEAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBj
bGFzcyBCbG9iUGFydDsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIENvbG9yOwotY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIENy
ZWRlbnRpYWw7CiBjbGFzcyBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOwogY2xhc3MgQ3Vyc29y
OwpAQCAtMTM5LDcgKzEzOSw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRCdWZmZXI7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFz
cyBTcHJpbmdUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIFN0ZXBzVGltaW5nRnVuY3Rpb247CiBjbGFz
cyBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7CkBAIC03NTIsNiArNzUyLDE2IEBA
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZVZhbHVlPiB7CiB9OwogI2VuZGlmCiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiB7CisgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWZQdHI8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2Rl
ciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29u
c3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mKTsKICAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKQEAg
LTc2MiwxNiArNzcyLDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAotdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXIm
KTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mKTsKLSAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGRl
Y29kZShEZWNvZGVyJik7Ci19OwotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlNjcmlwdEJ1ZmZlcj4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwg
Y29uc3QgV2ViQ29yZTo6U2NyaXB0QnVmZmVyJik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCmluZGV4IGNmMmU0ZDVmOTNmZDJkOTQ2
YmFiZmY5M2VlYTNlOWU4NjBhZWJiZjQuLmI2MDdhY2U4MzhlMDRiY2UxYTZhZWU0ZGE1NjU1OWUw
OTY5ODM5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1
bHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0
YS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgV2ViSGl0VGVzdFJlc3VsdERhdGE6OldlYkhpdFRlc3RS
ZXN1bHREYXRhKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmIGhpdFRlc3QKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKEltYWdlKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkg
ewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpOwor
ICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRh
dGEoKTsKICAgICAgICAgaWYgKGJ1ZmZlcikgewogICAgICAgICAgICAgaW1hZ2VTaGFyZWRNZW1v
cnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKICAgICAgICAg
ICAgIGltYWdlU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5kZXggNjQ1ZDliZmFiNzU3YjMxZDdlNjAwZTc4
YmFiMDNhN2U4OTM5NzE4NS4uNjcxNzU4YTI4MGE1ZTQ0MGFhMDYwYTc5Y2YxZjBmMTI2ZGI3YmUy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3Bw
CkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNlbGVjdGlvbkRhdGEmCiAgICAgYm9vbCBoYXND
dXN0b21EYXRhID0gc2VsZWN0aW9uLmhhc0N1c3RvbURhdGEoKTsKICAgICBlbmNvZGVyIDw8IGhh
c0N1c3RvbURhdGE7CiAgICAgaWYgKGhhc0N1c3RvbURhdGEpCi0gICAgICAgIGVuY29kZXIgPDwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4oc2VsZWN0aW9uLmN1c3RvbURhdGEoKSk7CisgICAgICAgIGVu
Y29kZXIgPDwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KHNlbGVjdGlvbi5jdXN0b21E
YXRhKCkpOwogCiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2UgPSBzZWxlY3Rpb24uY2FuU21hcnRS
ZXBsYWNlKCk7CiAgICAgZW5jb2RlciA8PCBjYW5TbWFydFJlcGxhY2U7CkBAIC0xNTksMTAgKzE1
OSwxMCBAQCBzdGQ6Om9wdGlvbmFsPFNlbGVjdGlvbkRhdGE+IEFyZ3VtZW50Q29kZXI8U2VsZWN0
aW9uRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aGFzQ3VzdG9tRGF0YSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhh
c0N1c3RvbURhdGEpIHsKLSAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4oKmJ1ZmZlcikpOworICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8U2hh
cmVkQnVmZmVyPigqYnVmZmVyKSk7CiAgICAgfQogCiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNXaW4uY3BwCmluZGV4IDhhZWY0YTUwMWRhZDkyNzY2YzcxOWZjNTAwNmM2ZGYxMmFkYTVhYTAu
LjI5MmQ3MTQ1MmM1YzNhOTQ5MmIyZjViNjE2ODI3MzUzMGFjMmRkMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCkBA
IC0xMDcsNyArMTA3LDcgQEAgc3RkOjpvcHRpb25hbDxGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVu
dENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YShEZWMKICAgICBGb250UGxhdGZv
cm1EYXRhOjpDcmVhdGlvbkRhdGEqIGNyZWF0aW9uRGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAo
aW5jbHVkZXNDcmVhdGlvbkRhdGEudmFsdWUoKSkgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGRlY29kZXIg
Pj4gZm9udEZhY2VEYXRhOwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YSkKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
QXR0YWNobWVudC5jcHAKaW5kZXggYzkwZDNkODExM2Y3MTkwMWIwOGYyNjQ4OTE2YWQyY2MyOWQ5
ODMzNC4uMTQ5MGM1MTFiZGMzOGJkOGFiNGE2OTVhZWNmMzA2ZDk1ZmFhMzk2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtOTgsMTcgKzk4
LDE3IEBAIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IEF0dGFjaG1lbnQ6OmZpbGVTaXplRm9yRGlz
cGxheSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QK
K1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNs
b3NpbmdJbWFnZURhdGEoKSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQogCi1SZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgQXR0YWNobWVudDo6dXBkYXRlRnJvbVNl
cmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmKQordm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFdURjo6U3RyaW5nJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmgKaW5kZXggYzZjMmEwNmVjOTdkZGYwZDZjYWI0MmI0YTY0MDliM2M0N2I0ZGVm
ZS4uZmU1MGU1MzhiOGViYjM1MWE0ODM2ZDFkZDg5M2QxNDdhNTZhODc3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCkBAIC0zOCw4ICszOCw4IEBAIE9C
SkNfQ0xBU1MgTlNGaWxlV3JhcHBlcjsKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTgzLDE0ICs4MywxNCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRW1wdHkoKSBj
b25zdDsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGVuY2xvc2luZ0ltYWdl
RGF0YSgpIGNvbnN0OworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBlbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdDsKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0SGFzRW5jbG9zaW5n
SW1hZ2UoYm9vbCBoYXNFbmNsb3NpbmdJbWFnZSkgeyBtX2hhc0VuY2xvc2luZ0ltYWdlID0gaGFz
RW5jbG9zaW5nSW1hZ2U7IH0KICAgICBib29sIGhhc0VuY2xvc2luZ0ltYWdlKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNFbmNsb3NpbmdJbWFnZTsgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0
OwotICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRU
eXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTZXJpYWxpemVk
UmVwcmVzZW50YXRpb24oKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUZyb21TZXJpYWxpemVkUmVw
cmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJp
bmcmIGNvbnRlbnRUeXBlKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBdHRhY2htZW50KGNv
bnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RT
dG9yZS5jcHAKaW5kZXggMWI5YjU0YjYyNzE4MTQ5NTA4ZjkwMjdjODNjNjczMjA2YmE4Mjk4Mi4u
NjQ0OTFlMTYyZWM2YzViY2ZhM2ZjNGNiMjQ5ZjhkOWNjYjYzOWIyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3Bw
CkBAIC0xNTEsNyArMTUxLDcgQEAgdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OkRhdGEmIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGIKIHsKICAgICBkYXRh
LmFwcGx5KGZ1bmN0aW9uKTsKIH0KLXRlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNvbnN0IFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IEZ1bmN0aW9uPGJvb2woU3Bh
bjxjb25zdCB1aW50OF90Pik+JiBmdW5jdGlvbikKK3RlbXBsYXRlPD4gdm9pZCBnZXREYXRhKGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFu
PGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQogewogICAgIGZ1bmN0aW9uKHsgZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaAppbmRleCAyMDgzNGQ3ODhlNDAzNjE0MWNm
OTJiZTU0ZjQzMWJjYjhhNjBlZjY0Li5hMGEzNzBjN2M2OGZhOTQ0OWU0OTBiYWJmYmE3MTJkNTRl
MmNiYjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVu
dFJ1bGVMaXN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29u
dGVudFJ1bGVMaXN0U3RvcmUuaApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV1RGIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCmlu
ZGV4IDU2MjM0MDE0NTlkYTVmZTMwZjQ5MWE0MWZiMzQ3YTY3NTcyMDJjNDAuLjExMWYwOTI2M2Y4
MjIzODI5YTVhZDI2NDQzNGJhNDIwZjE5OGRkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaApAQCAtNDcsNyArNDcsNyBAQCBzdHJ1
Y3QgQ29udGVudFJ1bGVMaXN0UmVzdWx0czsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgU2hhcmVkQnVm
ZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBTZWN1cml0eU9yaWdp
bkRhdGE7CiB9CiAKQEAgLTExOSw3ICsxMTksNyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoUVVJQ0tf
TE9PSykKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJ
bk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5n
JiB1dGkpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUo
Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIHsgfQogI2VuZGlmCiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYsIFJlZjxOYXZpZ2F0aW9uQWN0aW9uPiYmLCBSZWY8V2ViS2l0OjpXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIE9iamVjdCopCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpp
bmRleCA5NGRiNTU3NTMyODVmOGEwM2YwZGEyYzNjYTJkODY4MTdjMjk1Mjk1Li5kZmVmM2UwNzBm
OTYxNjMwNDk3MTQ0ZGFmM2YzMDBjYjRjYTUxOTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KQEAgLTEzNyw3
ICsxMzcsNyBAQCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBBdHRhY2htZW50OjpmaWxlU2l6ZUZv
ckRpc3BsYXkoKSBjb25zdAogICAgIHJldHVybiBbZmlsZVdyYXBwZXIgcmVndWxhckZpbGVDb250
ZW50c10ubGVuZ3RoOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2ht
ZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX2hhc0VuY2xvc2luZ0ltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTE1OSw3ICsxNTksNyBAQCBib29sIEF0dGFjaG1lbnQ6OmlzRW1wdHkoKSBjb25zdAogICAg
IHJldHVybiAhbV9maWxlV3JhcHBlciAmJiAhbV9maWxlV3JhcHBlckdlbmVyYXRvcjsKIH0KIAot
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0
ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25z
dAogewogICAgIGF1dG8gZmlsZVdyYXBwZXIgPSB0aGlzLT5maWxlV3JhcHBlcigpOwogCkBAIC0x
NzAsMTAgKzE3MCwxMCBAQCBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aQogICAgIGlmICghc2VyaWFs
aXplZERhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVkRGF0YSk7CisgICAgcmV0
dXJuIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKIH0KIAot
dm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHNlcmlhbGl6ZWRSZXByZXNlbnRhdGlv
biwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnRUeXBlKQordm9pZCBBdHRhY2htZW50Ojp1cGRh
dGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5
cGUpCiB7CiAgICAgaWYgKCFtX3dlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDNlOTIzY2Y2NDlk
OTZlMzRlZDJhNTFmOTE3MGQ1YjE3NDFmYTY1MTguLmNlOTYzZjFkM2I4ZDAzOWQ4YzQ0OTZiYzUw
MThmMmQ1ODc0ZDM2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQpAQCAtMjIyMyw3ICsyMjIzLDcgQEAgLSAodm9pZClfc3RhcnRJbWFnZUFu
YWx5c2lzOihOU1N0cmluZyAqKWlkZW50aWZpZXIKIAogLSAodm9pZClfcmVxdWVzdFJlc291cmNl
OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRGF0
YSAqLCBOU1VSTFJlc3BvbnNlICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAg
ICBfcGFnZS0+cmVxdWVzdFJlc291cmNlKHJlcXVlc3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChSZWY8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25z
ZSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmIGVycm9yKSB7CisgICAgX3BhZ2UtPnJlcXVlc3RS
ZXNvdXJjZShyZXF1ZXN0LCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxl
dGlvbkhhbmRsZXIpXSAoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYm
IGVycm9yKSB7CiAgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpLCByZXNwb25z
ZS5uc1VSTFJlc3BvbnNlKCksIG5pbCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCwg
bmlsLCBlcnJvci5uc0Vycm9yKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAppbmRleCA2Yjc1NmFhNDE3YjUxZWRkN2ZkM2ZmYmRk
ZjNjMjJlNDQ1MzE5MjkwLi5mNWFmMDkyYmIyMjU4MjA1OTZjYjAyNTMwZDBkYjBiNzY5NDQwMzI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRH
dGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRH
dGszLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgRHJvcFRhcmdldDo6ZGF0YVJlY2VpdmVk
KEludFBvaW50JiYgcG9zaXRpb24sIEd0a1NlbGVjdGlvbkRhdGEqIGRhdGEsIHVuc2lnCiAgICAg
ICAgIGludCBsZW5ndGg7CiAgICAgICAgIGNvbnN0IGF1dG8qIGN1c3RvbURhdGEgPSBndGtfc2Vs
ZWN0aW9uX2RhdGFfZ2V0X2RhdGFfd2l0aF9sZW5ndGgoZGF0YSwgJmxlbmd0aCk7CiAgICAgICAg
IGlmIChsZW5ndGggPiAwKQotICAgICAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21E
YXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGxlbmd0aCkpKTsKKyAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q3Vz
dG9tRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShjdXN0b21EYXRhLCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGxlbmd0aCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKaW5kZXggYWM0YTBmNDM3
MDE1MmVkNTcyYjUwOTFkZmE1MWJhZWJhYjg3ZjRlOS4uYzgwMjljMTQwYTZkZDE0YjE5NjQ5MjI1
Yjg3ODMwZWVjMTM0MDBmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogCiAjaWYgVVNF
KFFVSUNLX0xPT0spCiAgICAgICAgIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3Ry
aW5nJiB1dGkpIG92ZXJyaWRlOwotICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xv
b2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJy
aWRlOworICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkZyYW1lKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDcyNWI3NzBmNmM1NDI2YWM4Y2I3YjY3
NGM0NjFmODFlM2VlMzY2MDcuLjhkM2E4NTY0NjJlYWVmNzQxZDhjMjllMjU5MmZkNTczNjZmNTk5
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUubW0KQEAgLTEyMjAsNyArMTIyMCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50OjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyCiAgICAg
W3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9u
RGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLT5tX3dlYlZpZXcgZGlk
U3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVdpdGhGaWxlTmFtZTpmaWxl
TmFtZSB1dGk6dXRpXTsKIH0KIAotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGll
bnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGll
bnQ6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0
YXRlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IGJlMTQzNzBkZTA5YmQ1NzAyYjlj
N2RkY2Q2Yzc3YjhmNmRhNWY1YjguLjY4MzM3M2VhZTAwZjVkYjQyYjgxNDZjZTlkNTMxYmM4YWMw
YTU0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQcm94eUNvY29hLm1tCkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnNlbmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoKQogICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGF1dG8gcmVn
aXN0cmF0aW9uRGF0YSA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShy
ZWdpc3RyYXRpb25zLmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uRGF0YSA9
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlvbnMuZ2V0KCkpOwogICAg
ICAgICAgICAgd2Vha1RoaXMtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNvbnN1bWVBdWRp
b0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoeyBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpIH0pLCAw
KTsKICAgICAgICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwuaAppbmRleCA5MzQwOTQwMDIxNGI2YjY3YjIwODlmN2QwZTM3ZWQwY2IxZWNi
YTIwLi4xMjQxNzgzYmNjY2VhMDA5NWE2ZWRiYmQyZDY5NmE2YmUxZjRkNTMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKQEAgLTUwNCw3ICs1MDQsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYs
IGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZSk7CiAgICAgdm9pZCBzZXRGaWxl
QW5kVVJMVHlwZXMoTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0
cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBOU1Bhc3Rl
Ym9hcmQgKik7Ci0gICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFn
ZSosIE5TU3RyaW5nICpmaWxlbmFtZSwgTlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNTdHJpbmcgKnRp
dGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0cmluZyAqdmlzaWJsZVVSTCwgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyKiBhcmNoaXZlQnVmZmVyLCBOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5TU3RyaW5n
ICpwYXN0ZWJvYXJkT3JpZ2luKTsKKyAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKFdl
YkNvcmU6OkltYWdlKiwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBO
U1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBhcmNoaXZlQnVmZmVyLCBOU1N0cmluZyAqcGFz
dGVib2FyZE5hbWUsIE5TU3RyaW5nICpwYXN0ZWJvYXJkT3JpZ2luKTsKICAgICB2b2lkIHBhc3Rl
Ym9hcmRDaGFuZ2VkT3duZXIoTlNQYXN0ZWJvYXJkICopOwogICAgIHZvaWQgcHJvdmlkZURhdGFG
b3JQYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqLCBOU1N0cmluZyAqdHlwZSk7CiAgICAgTlNBcnJh
eSAqbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERl
c3RpbmF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0KaW5kZXggMTFjYzc1MjhhMWU1ZjZhODY4NGZjZTA2N2UwYWRhMDc0NjJlZTRjNi4uNzM3NDhj
YWYxNGViMTMwZTA3NDUzNzEyYTRlMDM3ZGZmNDU1YmE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5ODMsNyArMjk4Myw3IEBAIGJvb2wg
V2ViVmlld0ltcGw6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFz
dGVib2FyZCwgTlNBcnJheSAqCiAgICAgICAgIGlmIChbW3R5cGVzIG9iamVjdEF0SW5kZXg6aV0g
aXNFcXVhbFRvOldlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldKQogICAgICAg
ICAgICAgW3Bhc3RlYm9hcmQgc2V0U3RyaW5nOm1fcGFnZS0+c3RyaW5nU2VsZWN0aW9uRm9yUGFz
dGVib2FyZCgpIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07
CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IG1fcGFnZS0+ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQo
W3R5cGVzIG9iamVjdEF0SW5kZXg6aV0pOworICAgICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChb
dHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CiAgICAgICAgICAgICBbcGFzdGVib2FyZCBzZXREYXRh
OmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBuaWwgZm9yVHlwZTpbdHlw
ZXMgb2JqZWN0QXRJbmRleDppXV07CiAgICAgICAgIH0KICAgICB9CkBAIC00NDU2LDcgKzQ0NTYs
NyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRGaWxlQW5kVVJMVHlwZXMoTlNTdHJpbmcgKmZpbGVu
YW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOUwogICAgIG1fcHJvbWlzZWRVUkwgPSB1cmw7CiB9
CiAKLXZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6Oklt
YWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0
cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwg
TlNTdHJpbmcgKm9yaWdpbklkZW50aWZpZXIpCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRQcm9taXNl
ZERhdGFGb3JJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU3RyaW5nICpmaWxlbmFtZSwg
TlNTdHJpbmcgKmV4dGVuc2lvbiwgTlNTdHJpbmcgKnRpdGxlLCBOU1N0cmluZyAqdXJsLCBOU1N0
cmluZyAqdmlzaWJsZVVSTCwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYXJjaGl2
ZUJ1ZmZlciwgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU1N0cmluZyAqb3JpZ2luSWRlbnRp
ZmllcikKIHsKICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBh
c3RlYm9hcmRXaXRoTmFtZTpwYXN0ZWJvYXJkTmFtZV07CiAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PiB0eXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhP
YmplY3RzOldlYkNvcmU6OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCksIG5pbF0p
OwpAQCAtNDYxMyw3ICs0NjEzLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cmVxdWVzdERPTVBhc3Rl
QWNjZXNzKFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzQ2F0ZWdvcnkgcGFzdGVBY2MKICAgICBoaWRl
RE9NUGFzdGVNZW51V2l0aFJlc3VsdChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpE
ZW5pZWRGb3JHZXN0dXJlKTsKIAogICAgIE5TRGF0YSAqZGF0YSA9IFtwYXN0ZWJvYXJkRm9yQWNj
ZXNzQ2F0ZWdvcnkocGFzdGVBY2Nlc3NDYXRlZ29yeSkgZGF0YUZvclR5cGU6QChXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXTsKLSAgICBhdXRvIGJ1ZmZlciA9IFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICBhdXRvIGJ1
ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIGlmIChXZWJD
b3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkp
Lm9yaWdpbigpID09IG9yaWdpbklkZW50aWZpZXIpIHsKICAgICAgICAgbV9wYWdlLT5ncmFudEFj
Y2Vzc1RvQ3VycmVudFBhc3RlYm9hcmREYXRhKHBhc3RlYm9hcmROYW1lRm9yQWNjZXNzQ2F0ZWdv
cnkocGFzdGVBY2Nlc3NDYXRlZ29yeSkpOwogICAgICAgICBjb21wbGV0aW9uKFdlYkNvcmU6OkRP
TVBhc3RlQWNjZXNzUmVzcG9uc2U6OkdyYW50ZWRGb3JHZXN0dXJlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IDM5MzIwY2FkZWJhMjYxMDVjYjA5YzgxNDEyYjEzZGZhMzY3NjA1ZDMuLmIxMWYyZDUzY2Zm
YTg1Zjk2ZjI3NDExZDlkMmRiMDdkOTZhMDdjMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzM1LDEw
ICszMzUsMTAgQEAgRG93bmxvYWRQcm94eSYgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y3JlYXRlRG93
bmxvYWRQcm94eShXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3QKICAgICByZXR1cm4gbV9kb3dubG9h
ZFByb3h5TWFwLT5jcmVhdGVEb3dubG9hZFByb3h5KGRhdGFTdG9yZSwgcHJvY2Vzc1Bvb2wsIHJl
c291cmNlUmVxdWVzdCwgZnJhbWVJbmZvLCBvcmlnaW5hdGluZ1BhZ2UpOwogfQogCi12b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHBhZ2VJRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpSZXF1ZXN0UmVzb3VyY2UocGFnZUlELCBzZXNzaW9uSUQsIHJlcXVl
c3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UocmVxdWVzdC5odHRwQm9keSgpKSksIFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoSVBDOjpEYXRhUmVmZXJl
bmNlJiYgZGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiYgZXJyb3IpIG11dGFibGUgewotICAgICAgICBhdXRvIGJ1ZmZlciA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
OworICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgp
LCBkYXRhLnNpemUoKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVy
KSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUoZXJyb3IpKTsKICAgICB9KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmgKaW5kZXggNzBiNTdiNTQ0NTM5MjY1M2I0MjZhZDc4OGZiMTEyMjViNzkyYWQ5Mi4uYWY2Y2Vk
OWU3MWQ5NmUxZmRjODAyMDc4Y2ExYTMyNjExZmY5YjJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTY1LDcg
KzY1LDcgQEAgY2xhc3MgU2Vzc2lvbklEOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiBlbnVtIGNsYXNzIFNob3VsZFNhbXBsZSA6IGJvb2w7CkBAIC0xMjQsNyArMTI0
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlBy
b2Nlc3NQcm94eSYsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbkRlbGF5ZWRSZXBseSYmKTsKIAogICAgIERvd25sb2FkUHJveHkmIGNyZWF0ZURv
d25sb2FkUHJveHkoV2Vic2l0ZURhdGFTdG9yZSYsIFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIFdlYlBhZ2VQcm94
eSogb3JpZ2luYXRpbmdQYWdlKTsKLSAgICB2b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYmKT4mJik7CisgICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoV2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJik7CiAKICAgICB2b2lk
IGZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2Vic2l0ZURhdGEpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6
U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRT
aW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBlZDlkODMzN2Y0NzRmNzc4ZWY3NmIx
OTRjNjkyMGExMTg0ZjJhNDA5Li45YzY1NjE3Yjg5NmIxNWY5ZjQ3YTFkMTQ0ODBmNmUzNWNiNmVm
ZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0zMjksNyArMzI5LDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBVU0UoQVBQS0lUKQotICAgIHZpcnR1YWwgdm9pZCBz
ZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZp
ZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYg
ZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBhcmNoaXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpID0gMDsK
ICNlbmRpZgogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvRGV2aWNl
U3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgPSAwOwpAQCAtNDY5LDcgKzQ2OSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2luZ0VsZW1lbnQoKSA9IDA7CiAgICAg
dmlydHVhbCBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZl
bnQmLCBib29sIGlzQ2hhckV2ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9uSW5m
b3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24m
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1h
Z2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBoYXNWaWRlbywgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgZWxlbWVudFJlY3QsIFdlYkNvcmU6OlJvdXRlU2hhcmluZ1BvbGljeSwg
Y29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93RGF0YURldGVjdG9yc1VJ
Rm9yUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3Np
dGlvbiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVy
aW5nVGFwSWZOZWNlc3NhcnkoV2ViS2l0OjpUYXBJZGVudGlmaWVyKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA3MDdmZDJkZTdiN2FjMGIyNjJmZDBm
NzY3M2MyODlkODgyM2FiZTEwLi44OTVlN2I4Y2Q1YjkzOTkyNjQ5MzYxNWQ4Zjc3NTZjZjU4N2E4
NjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTYzNzcs
NyArNjM3Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpkb3dubG9hZFJlcXVlc3QoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvCiAgICAgZG93bmxvYWQuc2V0RGlk
U3RhcnRDYWxsYmFjayhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpyZXF1ZXN0UmVzb3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVl
c3RSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5yZXF1ZXN0
UmVzb3VyY2UoaWRlbnRpZmllcigpLCBzZXNzaW9uSUQoKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCA5MDIzN2FlNTVmZjkzZGU1Yjk0NzkxNjk2ZTEzOWFiMTVlMzg3MzRkLi4w
Zjg4YmI1Yjc5ZWJjNmZhMmE5ZTg5NjU0MzMxNGYwMjAyOGY2NWQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjU5LDcgKzI1OSw3IEBAIGNsYXNzIEludFNpemU7
CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSdW5Mb29wT2JzZXJ2ZXI7CiBjbGFzcyBT
ZWxlY3Rpb25EYXRhOwotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUmVxdWVzdDsKIGNsYXNzIFRleHRJbmRp
Y2F0b3I7CiBjbGFzcyBWYWxpZGF0aW9uQnViYmxlOwpAQCAtMTE4Myw3ICsxMTgzLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZWxlbWVuVG9rZW4sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgd2luZG93VG9rZW4pOwogICAgIGJvb2wgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKCk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIHZvaWQgbWFrZUZp
cnN0UmVzcG9uZGVyKCk7CiAgICAgdm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVz
cG9uZGVyKCk7CiAKQEAgLTEzNzUsNyArMTM3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGhhbmRs
ZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5Jik7CiAgICAgdm9pZCByZXN1bWVEb3dubG9h
ZChjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+JiYpOwogICAgIHZvaWQgZG93bmxvYWRS
ZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KERvd25sb2FkUHJveHkqKT4mJik7Ci0gICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYmKT4mJik7CisgICAgdm9pZCByZXF1ZXN0UmVzb3VyY2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiYpPiYmKTsKIAogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxs
aW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwogICAgIHZvaWQgY2hhbmdlU3BlbGxpbmdU
b1dvcmQoY29uc3QgU3RyaW5nJiB3b3JkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAKaW5kZXggZWQ4Y2I2NTNlY2ZkZDEzNDczZWUxZDJhZjUwYmFhN2E2
ZjdhMTAxMi4uZTEyNjRjZTIxYmE1N2YyYTQyNzQ4ZTMzYTFkYWQ4OGEwZTI1OGJjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTE2OCw3ICsx
NjgsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgLT4gRQogICAgIHJldHVybiBFeGNlcHRpb25UeXBl
OjpOb25lOwogfQogCi1hdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCithdXRvIFdlYlVSTFNjaGVt
ZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikgLT4gRXhjZXB0aW9uVHlwZQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCBkZDZiNzI0
MTBhZGQ0ZWY2MzFkMjgwNjllMTRhM2YyYTAwYzVjY2IyLi5mNmZmNDZlZWE1ZjI5MGI3YjdlM2Zl
NTkyMWRmOWYxOTRiYWNkMTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5oCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25UeXBlIHdp
bGxQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAg
ICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJik7Ci0gICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVEYXRhKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBFeGNlcHRpb25UeXBl
IGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQg
c3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2Fy
ZC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZC5oCmluZGV4IDc4NjZj
ZGIxNzc0NjAwN2FiMGE3YTE3YzU1Yjg3YzdmMTY0YzJiYWUuLjcyNzlmODQ0Y2MyYmJkMmIwMTdm
ZTBmMDk3ZGUwMTg3MGE5YTg1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9DbGlwYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJv
YXJkLmgKQEAgLTM2LDcgKzM2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0d0a0NsaXBib2FyZCBHdGtD
bGlwYm9hcmQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZm9y
bWF0cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKICAgICB2
b2lkIHJlYWRUZXh0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKICAgICB2
b2lkIHJlYWRGaWxlUGF0aHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYm
KT4mJik7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IGNoYXIqLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYmKTsKKyAgICB2b2lkIHJlYWRC
dWZmZXIoY29uc3QgY2hhciosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmKTsKICAgICB2b2lkIHdyaXRlKFdlYkNvcmU6OlNl
bGVjdGlvbkRhdGEmJik7CiAgICAgdm9pZCBjbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKaW5kZXggYzJiZjUxODNiMzBmMTBlOWViNzgx
M2NkYWRhMjIzZTkxODljNzQ1OS4uNTk2NmQ1NTc0YzI4MmY1MzE2OTQwOTYwODI5NjBhZTMzOWNh
MTEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0
azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNw
cApAQCAtMTI2LDE1ICsxMjYsMTUgQEAgdm9pZCBDbGlwYm9hcmQ6OnJlYWRGaWxlUGF0aHMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGUKIHN0cnVjdCBS
ZWFkQnVmZmVyQXN5bmNEYXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CiAKLSAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKKyAgICBleHBsaWNp
dCBSZWFkQnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGhhbmRsZXIpCiAgICAgICAgIDogY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkKICAgICB7CiAgICAgfQogCi0gICAgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlv
bkhhbmRsZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5kbGVyOwogfTsKIAotdm9pZCBDbGlw
Ym9hcmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBndGtfY2xpcGJvYXJkX3JlcXVlc3RfY29udGVudHMo
bV9jbGlwYm9hcmQsIGdka19hdG9tX2ludGVybihmb3JtYXQsIFRSVUUpLCBbXShHdGtDbGlwYm9h
cmQqLCBHdGtTZWxlY3Rpb25EYXRhKiBzZWxlY3Rpb24sIGdwb2ludGVyIHVzZXJEYXRhKSB7CiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFkQnVmZmVyQXN5bmNEYXRhPiBkYXRhKHN0YXRpY19j
YXN0PFJlYWRCdWZmZXJBc3luY0RhdGEqPih1c2VyRGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCmluZGV4IDA3YWJiNzEzMTk4ODUzYjc4N2M2
MzI0YmQ0ODBiMWUwODhhMmEzZDMuLjViODFmYThmMjlkM2Y3Y2YxYzNmMDlkMWZjM2M4ODczNGRj
NTFhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRH
dGs0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5j
cHAKQEAgLTEyMCwxNSArMTIwLDE1IEBAIHZvaWQgQ2xpcGJvYXJkOjpyZWFkRmlsZVBhdGhzKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxlCiBzdHJ1Y3Qg
UmVhZEJ1ZmZlckFzeW5jRGF0YSB7CiAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwogCi0gICAgZXhwbGljaXQgUmVhZEJ1ZmZlckFzeW5jRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYmIGhhbmRsZXIpCisgICAgZXhwbGlj
aXQgUmVhZEJ1ZmZlckFzeW5jRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBoYW5kbGVyKQogICAgICAgICA6IGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoaGFuZGxlcikpCiAgICAgewogICAgIH0KIAotICAgIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRp
b25IYW5kbGVyOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsKIH07CiAKLXZvaWQgQ2xp
cGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgQ2xpcGJvYXJkOjpyZWFkQnVmZmVyKGNvbnN0IGNoYXIqIGZvcm1hdCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgY29uc3QgY2hhciogbWltZVR5cGVzW10gPSB7IGZv
cm1hdCwgbnVsbHB0ciB9OwogICAgIGdka19jbGlwYm9hcmRfcmVhZF9hc3luYyhtX2NsaXBib2Fy
ZCwgbWltZVR5cGVzLCBHX1BSSU9SSVRZX0RFRkFVTFQsIG51bGxwdHIsIFtdKEdPYmplY3QqIGNs
aXBib2FyZCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDVj
OGUzYjkyZjA4OTkyZWY0ZGFkNjJiMTc3YTgyZjMxNjA4YmJiMjcuLjNiMDRhODMzZGJlMGI2YjY2
ZWUxNGQzYzMwMGYzMDY4NzE4YmYyY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xODgsNyArMTg4LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgaW50ZXJwcmV0
S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFyRXZlbnQp
IG92ZXJyaWRlOwogICAgIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHZvaWQgc2F2
ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihi
b29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29y
ZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lk
IHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCBiNjg0ZTFjOTRlYWNi
NjcyOGJiMTMwNjhjYjY5NTIyNzAxZmE4ZjgzLi5mYWM5ZTdmYjc4YmVlMGY2Mjk0NTY3MmUzYmI3
NGI5ZTA1MjBlMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLm1tCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6
cG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9u
QXQKICAgICBbbV9jb250ZW50VmlldyBfcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZTppbmZv
XTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6
c2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCiB7CiAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gaW1hZ2VEYXRhID0gaW1hZ2VCdWZmZXItPmNyZWF0ZU5TRGF0
YSgpOwogICAgIFVJSW1hZ2VEYXRhV3JpdGVUb1NhdmVkUGhvdG9zQWxidW0oaW1hZ2VEYXRhLmdl
dCgpLCBuaWwsIE5VTEwsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggOTlhZWQwMzY4OGUwZTVj
NjE3NDc5MGZkZGQ4ZDI1MGU5YWI3MGEyZS4uMTJmM2ExNWE0M2I4YWM0ZDE1MWZmMzAzYzNjNWY3
N2QxMzUzMGNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zODQyLDcgKzM4NDIsNyBAQCAtIChCT09M
KWNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNl
bmRlcgogCiAgICAgICAgIE5TQXJyYXkgKmFsbEN1c3RvbVBhc3RlYm9hcmREYXRhID0gW3Bhc3Rl
Ym9hcmQgZGF0YUZvclBhc3RlYm9hcmRUeXBlOkAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6OmNvY29hVHlwZSgpKSBpbkl0ZW1TZXQ6aW5kaWNlc107CiAgICAgICAgIGZvciAoTlNEYXRh
ICpkYXRhIGluIGFsbEN1c3RvbVBhc3RlYm9hcmREYXRhKSB7Ci0gICAgICAgICAgICBhdXRvIGJ1
ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAg
ICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSk7CiAgICAgICAgICAgICBpZiAoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21T
aGFyZWRCdWZmZXIoYnVmZmVyLmdldCgpKS5vcmlnaW4oKSA9PSBmb2N1c2VkRG9jdW1lbnRPcmln
aW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIFlFUzsKICAgICAgICAgfQpAQCAtNjY1MCw3ICs2
NjUwLDcgQEAgc3RhdGljIEJPT0wgYWxsUGFzdGVib2FyZEl0ZW1PcmlnaW5zTWF0Y2hPcmlnaW4o
VUlQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBjb25zdAogICAgICAgICBpZiAoIWRhdGEubGVuZ3Ro
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CisgICAgICAgIGF1dG8gYnVm
ZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgICAgIGlmIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihidWZmZXIuZ2V0
KCkpLm9yaWdpbigpICE9IG9yaWdpbklkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm4gTk87
CiAKQEAgLTc2MjMsNyArNzYyMyw3IEBAIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdL
QWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgc2hhcmVFbGVtZW50V2l0CiB7CiAgICAg
V2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCBzaGFyZURhdGE7CiAgICAgTlNTdHJpbmcq
IGZpbGVOYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQC5wbmciLCAoTlNTdHJp
bmcqKVdFQl9VSV9TVFJJTkcoIlNoYXJlZCBJbWFnZSIsICJEZWZhdWx0IG5hbWUgZm9yIHRoZSBm
aWxlIGNyZWF0ZWQgZm9yIGEgc2hhcmVkIGltYWdlIHdpdGggbm8gZXhwbGljaXQgbmFtZS4iKV07
Ci0gICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9
OworICAgIHNoYXJlRGF0YS5maWxlcyA9IHsgeyBmaWxlTmFtZSwgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUoVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlKSkgfSB9OwogICAgIFtz
ZWxmIF9zaG93U2hhcmVTaGVldDpzaGFyZURhdGEgaW5SZWN0OiB7IFtzZWxmIGNvbnZlcnRSZWN0
OmJvdW5kaW5nUmVjdCB0b1ZpZXc6c2VsZi53ZWJWaWV3XSB9IGNvbXBsZXRpb25IYW5kbGVyOm5p
bF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCmluZGV4IDdhOGZhY2QzMTdhMDYzOTZkNjNiOGRlZWM2NTcxZTU1MTNlYzQ5NWYuLmRkODI5
NTNiOTBmNGYxM2JkYjhjYTc2YzQyOGQwYzA3MmMwYzVkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTM4LDcgKzEzOCw3IEBAIFN0
cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJl
dHVybiBTdHJpbmcoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JikKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVj
dGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGxNYWMuaAppbmRleCA5NmJmNDI4YjE5YjViYTlkNzQ2YTNlYTExMTUxYmQz
Y2FmYjE2ZGVjLi44M2RiNzZlMGQwMWZlMjZmNmFhYzJmOWJkZDdiY2QwNmYwMGU4NTEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaApAQCAt
MTAwLDggKzEwMCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBleGVjdXRlVW5kb1JlZG8oVW5kb09y
UmVkbykgb3ZlcnJpZGU7CiAgICAgYm9vbCBleGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rvcihj
b25zdCBTdHJpbmcmIHNlbGVjdG9yKSBvdmVycmlkZTsKICAgICB2b2lkIHN0YXJ0RHJhZyhjb25z
dCBXZWJDb3JlOjpEcmFnSXRlbSYsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFn
ZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVm
ZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29u
c3QgU3RyaW5nJiB0aXRsZSwKLSAgICAgICAgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVm
ZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpIG92ZXJyaWRlOworICAgIHZvaWQg
c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRp
dGxlLAorICAgICAgICBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJM
LCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVy
LCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBk
YXRlU2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzZXRTZWN1cmVJbnB1
dFN0YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlJbnB1dENvbnRleHRBYm91dERpc2Nh
cmRlZENvbXBvc2l0aW9uKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KaW5kZXggNjI5MGE4MDkwZTM1OWI2MzAyMDhkYjcx
MjY5MjQwNzRkMWM1ZDdjMi4uNGEwODBiMmMxNzE1MTQ1YzQxNzJmODc5MDhhYjRlMWI5NzkyOGNl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1h
Yy5tbQpAQCAtNDAwLDcgKzQwMCw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnN0YXJ0RHJhZyhj
b25zdCBXZWJDb3JlOjpEcmFnSXRlbSYgaXRlbSwgY29uc3QgU2hhcmVhYmxlQml0CiAgICAgbV9p
bXBsLT5zdGFydERyYWcoaXRlbSwgaW1hZ2UpOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpz
ZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBhcmNo
aXZlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCit2b2lkIFBhZ2VDbGll
bnRJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luSWRlbnRpZmllcikKIHsKICAgICBhdXRvIGltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgp
OwogICAgIGltYWdlLT5zZXREYXRhKFdURk1vdmUoaW1hZ2VCdWZmZXIpLCB0cnVlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGNhNmI4
NzNiMWM4M2Y1YTUwN2I4NWVhMGZmMzFjZWRhZGQxYWFiMGEuLmI0Y2VhZWU2NzM5YzAzNTQxNWJl
MjgyZGM0Yjk2ODQ1Y2YxZWE3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjI3LDcgKzIyNyw3IEBAIFN0cmluZyBXZWJQYWdlUHJv
eHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgIHJldHVybiB2YWx1ZTsKIH0K
IAotUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6
ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkK
K1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjc3LDcg
KzI3Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTCiAgICAgICAgIHJldHVybjsKICAgICBh
dXRvIGltYWdlQnVmZmVyID0gc2hhcmVkTWVtb3J5SW1hZ2UtPmNyZWF0ZVNoYXJlZEJ1ZmZlcihp
bWFnZUhhbmRsZS5kYXRhU2l6ZSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZl
QnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBhcmNoaXZlQnVmZmVy
OwogICAgIGlmICghYXJjaGl2ZUhhbmRsZS5oYW5kbGUuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0
byBzaGFyZWRNZW1vcnlBcmNoaXZlID0gU2hhcmVkTWVtb3J5OjptYXAoYXJjaGl2ZUhhbmRsZS5o
YW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgICAgICBpZiAo
IXNoYXJlZE1lbW9yeUFyY2hpdmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETS5jcHAKaW5kZXggZmE5NDAyNWVkNzQ3MzBkMjhlNzE2NDYyODVmOWU1
YmE2NTNiOGYxMi4uYzI4ZmU2NWYwY2YxNjQzOTk4MThhY2EzMmY5ODFjYzc3OGYxZTkxOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcApA
QCAtODQsNyArODQsNyBAQCBib29sIFJlbW90ZUNETTo6c3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhD
b25maWd1cmF0aW9uKGNvbnN0IENETVNlc3Npb25UeXBlJiwgY29ucwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotYm9vbCBSZW1vdGVDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgdHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKSBjb25zdAorYm9vbCBSZW1vdGVDRE06
OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSkgY29uc3QKIHsKICAgICAvLyBUaGlzIGNoZWNrIHdpbGwgYmUg
ZG9uZSwgbGF0ZXIsIGluc2lkZSBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVz
dExpY2Vuc2UoKS4KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFJl
bW90ZUNETTo6bG9hZEFuZEluaXRpYWxpemUoKQogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6Okxv
YWRBbmRJbml0aWFsaXplKCksIG1faWRlbnRpZmllcik7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3Bv
bnNlKSBjb25zdAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFJlbW90ZUNETTo6c2Fu
aXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29u
c3QKIHsKICAgICAvLyBUaGlzIGNoZWNrIHdpbGwgYmUgZG9uZSwgbGF0ZXIsIGluc2lkZSBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6dXBkYXRlTGljZW5zZSgpLgogICAgIHJldHVybiBy
ZXNwb25zZS5jb3B5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE0uaAppbmRleCAwYWRkZjgzMzUzYjZlYTFiMmU4YjAyYzZiN2VlM2RhZjQ2OGNkMzgz
Li44YzQ1NGViODNlNTk5NGE4ZTRkNTkyZDUxZGY5MWZmOWI1MjNjYmVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKQEAgLTQ4LDEzICs0OCwx
MyBAQCBwcml2YXRlOgogICAgIGJvb2wgc3VwcG9ydHNDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNv
cmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1
cHBvcnRzQ29uZmlndXJhdGlvbldpdGhSZXN0cmljdGlvbnMoY29uc3QgV2ViQ29yZTo6Q0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpIGNv
bnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9uVHlwZVdpdGhDb25maWd1cmF0aW9u
KGNvbnN0IFdlYkNvcmU6OkNETVNlc3Npb25UeXBlJiwgY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0
YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgY29uc3Qg
ZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25z
dCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgV2Vi
Q29yZTo6Q0RNUmVxdWlyZW1lbnQgZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGNv
bnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpD
RE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBXZWJDb3JlOjpDRE1SZXF1aXJlbWVu
dCBwZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmlu
YWw7CiAgICAgYm9vbCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5k
Q2xlYXJhYmxlKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25z
dCBmaW5hbDsKICAgICBSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+IGNyZWF0ZUluc3RhbmNl
KCkgZmluYWw7CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwotICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBz
YW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAgIFZlY3Rv
cjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRlZEluaXREYXRhVHlwZXM7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5j
cHAKaW5kZXggYjVkZWEyMWU5OTVhNzM3ZjAzNmY2NDUzOGMxZmIzZWNiNWU2YmI1NS4uYTEzZTUx
NDYwZjZiYjlmODBlZjNkMWE4NDJlZmMwYjlmNDQ1OTBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKQEAg
LTc4LDcgKzc4LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUMKICAgICBtX2ZhY3RvcnktPmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6SW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9u
KGNvbmZpZ3VyYXRpb24sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnMsIHBlcnNpc3RlbnRTdGF0ZSks
IFdURk1vdmUoY2FsbGJhY2spLCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUlu
c3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
ICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBjYWxsYmFjayhGYWlsZWQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZS5oCmluZGV4IDEwNmJhM2IxMTYxYzhkZjA5ZDcxZGZlNjc5YmEzM2Q0MjMwNzllOTYuLjJjNzg1
MWU0NDBiMDhhNTJhMmFlNzBkYTdlNDE4ODgyZTNjNjE0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKQEAgLTU0
LDcgKzU0LDcgQEAgcHJpdmF0ZToKIAogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRh
dGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OlJlbW90
ZTsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6
OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMs
IEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9p
ZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBTdWNj
ZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZp
bmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSBmaW5hbDsK
ICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY29u
ZmlndXJhdGlvbi5rZXlTeXN0ZW07IH0KICAgICBSZWZQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5j
cHAKaW5kZXggYWYwYmFkNGM5MGQ4ZGQ1MTM3NzRhZWY2YTE1Yjc3YmE4OWZjNTA2NC4uYzc0MGMw
NDUwNmZkZWRhYzlmNGNmNTAyYzIwNWE4YTM3ZmNhNDU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uLmNwcApAQCAtNDksNyArNDksNyBAQCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRyPFJlbW90ZUNETUZhY3Rvcnk+JiYgZgogewog
fQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5z
ZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFj
dG9yeSkgewogICAgICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0
cmluZygpLCBmYWxzZSwgRmFpbGVkKTsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0
b21TdHJpbmcKICAgICB9LCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5z
ZVR5cGUgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNh
bGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRl
TGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYm
IGNhbGxiYWNrKQogewogICAgIGlmICghbV9mYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKGZh
bHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwpA
QCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZW1vdmVT
ZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zCiAgICAgfQogCiAgICAg
bV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpSZW1vdmVT
ZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUpLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0gKEtleVN0YXR1c1ZlY3RvciYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hh
cmVkQnVmZmVyQ29weT4mJiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7Ci0gICAg
ICAgIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gc3RkOjpu
dWxsb3B0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4gcmVhbE1lc3NhZ2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChtZXNzYWdlICYmIG1l
c3NhZ2UudmFsdWUoKS5idWZmZXIoKSkKICAgICAgICAgICAgIHJlYWxNZXNzYWdlID0gbWVzc2Fn
ZS52YWx1ZSgpLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAgIGNhbGxiYWNrKFdU
Rk1vdmUoY2hhbmdlZEtleXMpLCBXVEZNb3ZlKHJlYWxNZXNzYWdlKSwgc3VjY2VlZGVkID8gU3Vj
Y2VlZGVkIDogRmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oCmluZGV4IDRmZmU0Y2Fj
ZWNjZGU0M2Q1Y2IxMWUyMzZjYTA0NWFjZGE4M2E3ZWIuLjRlNGNkMmMwMDVjNmIwMDY1ZjljZGIx
ODhjNGJjZTBiNWJmYTY2MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaApAQCAtNTksOCAr
NTksOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRDbGllbnQoV2Vha1B0cjxXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+JiYgY2xpZW50KSBmaW5hbCB7IG1fY2xpZW50ID0gV1RG
TW92ZShjbGllbnQpOyB9CiAgICAgdm9pZCBjbGVhckNsaWVudCgpIGZpbmFsIHsgbV9jbGllbnQg
PSBudWxscHRyOyB9Ci0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAg
IHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEs
IExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAg
ICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9u
Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAKaW5kZXggOWEyMTlhNTQ0ZTU1MzgzZjU0ZTcx
ZGFiZDM1NGNjNDQwYTQxNDJiOS4uNjI5MjY3OThjNWMxMTMyNGEzMWFhNTBjZGE3ZWQxZmJmNzRm
ZTcwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQg
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZyBl
eHBlY3RlZENvbnRlbnRTaXplCiAKIC8vIElmIGFsbERhdGFSZWNlaXZlZCBpcyB0cnVlLCB0aGUg
Y2FsbGVyIGV4cGVjdHMgZW5jb2RlZERhdGFTdGF0dXMoKSB0byBiZSA+PSBFbmNvZGVkRGF0YVN0
YXR1czo6U2l6ZUF2YWlsYWJsZQogLy8gYWZ0ZXIgdGhpcyBmdW5jdGlvbiByZXR1cm5zIChpbiB0
aGUgc2FtZSBydW4gbG9vcCkuCi12b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c2V0RGF0YShT
aGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBSZW1vdGVJbWFn
ZURlY29kZXJBVkY6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaAppbmRleCBlNWNmZTk0ZWNkM2E5YzA2MDBm
YzAwMzIwZmY0MzA2MWM5MGVkNjliLi40MGQzNzM0ZjdhMzIyZThiYWNiOWQxYzBkZWE3MDc5ZTJh
ZDE3ZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGIGZpbmFsCiAgICAgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VEZWNv
ZGVyCiAgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZShS
ZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBXZWJDb3JlOjpJbWFn
ZURlY29kZXJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlSW1hZ2VEZWNvZGVy
QVZGPiBjcmVhdGUoUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlciYgbWFuYWdlciwgY29uc3Qg
V2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciYgaWRlbnRpZmllciwgV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVJbWFnZURlY29kZXJBVkYobWFuYWdlciwg
aWRlbnRpZmllciwgbWltZVR5cGUpKTsKICAgICB9CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoK
ICAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCwgV2ViQ29yZTo6U3Vic2FtcGxpbmdMZXZlbCA9IFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2
ZWw6OkRlZmF1bHQsIGNvbnN0IFdlYkNvcmU6OkRlY29kaW5nT3B0aW9ucyYgPSBXZWJDb3JlOjpE
ZWNvZGluZ09wdGlvbnMoV2ViQ29yZTo6RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFs
OwogCiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0g
ICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJl
Y2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAg
IHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCmluZGV4IDQxZDUzODgwMjNkMzkxNDk1MjE4MzVmNjg4
ZGU0ZDQ4ZjY1ZDc2N2UuLjA4MmIzMzY2YzhiYzcxMzBkNzVkNTY5OGE3ZDc5ZTY4OTJhZDhmNzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcApAQCAtMzksNyArMzksNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZlB0
cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNy
ZWF0ZUltYWdlRGVjb2RlcihTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBn
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+
IFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2RlcihGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlv
biBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCiB7CiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlmaWVy
PiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwogICAgIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZSBkYXRhUmVmZXJlbmNlIHsgZGF0YSB9OwpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6c2V0VXNlR1BVUHJvY2Vzcyhib29sIHVzZUdQVVBy
b2Nlc3MpCiAgICAgSW1hZ2VEZWNvZGVyOjppbnN0YWxsRmFjdG9yeSh7CiAgICAgICAgIFJlbW90
ZUltYWdlRGVjb2RlckFWRjo6c3VwcG9ydHNNZWRpYVR5cGUsCiAgICAgICAgIFJlbW90ZUltYWdl
RGVjb2RlckFWRjo6Y2FuRGVjb2RlVHlwZSwKLSAgICAgICAgW3RoaXNdKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSB7Cisg
ICAgICAgIFt0aGlzXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pIHsKICAgICAgICAgICAgIHJldHVybiBj
cmVhdGVJbWFnZURlY29kZXIoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbik7CiAgICAgICAgIH0KICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkZNYW5hZ2VyLmgKaW5kZXggYzIzNzgyYjY1MDRlYzc5YmU0NmUxMjZmNGU1OTFiM2ZmN2Y2
ZGJhOC4uMzYxOGFmZDEyMDk4YjU1NzZiNGRkNGZmYmYzYzA2ZmJhODQyYTc2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkZNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAg
IEdQVVByb2Nlc3NDb25uZWN0aW9uJiBlbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOwogCiBw
cml2YXRlOgotICAgIFJlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZUltYWdlRGVj
b2RlcihXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IFdlYkNvcmU6OkFscGhhT3B0aW9uLCBXZWJDb3JlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bik7CisgICAgUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlSW1hZ2VEZWNvZGVy
KFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIFdlYkNvcmU6OkFscGhhT3B0aW9uLCBXZWJDb3JlOjpHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbik7CiAKICAgICAvLyBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Q2xpZW50LgogICAgIHZv
aWQgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb25EaWRDbG9zZShHUFVQcm9jZXNzQ29ubmVjdGlvbiYpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggOTY2ZmM5M2I3N2FmYWEz
ZTYyMDhkN2FiYTVhZWQyYzdhOTRjNzRiMi4uMDA1YTM3Y2MyNmVjNGMwOTAxYmY0ZjM3MTIyMzg2
NWRlMmQxNjZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCkBAIC03OCw3ICs3
OCw3IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6On5Tb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlKCkKICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyLnRv
VUludDY0KCkpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFwcGVuZChS
ZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6
OmFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIGlmICgh
bV9ncHVQcm9jZXNzQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGUuaAppbmRleCAzNjAxNzViZmJlOWQxYWY4M2VkNTc5MTM3M2I3NzVlZTc1MGFjN2Nj
Li5lYTVmYTNlYzM2YzJiODU5ZWU1NzhjY2QwZTAzNDhjNzNjYjg2ZDY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZl
clByaXZhdGVSZW1vdGUuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gU291
cmNlQnVmZmVyUHJpdmF0ZSBvdmVycmlkZXMKICAgICB2b2lkIHNldEFjdGl2ZShib29sKSBmaW5h
bDsKLSAgICB2b2lkIGFwcGVuZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
KyAgICB2b2lkIGFwcGVuZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
ZmluYWw7CiAgICAgdm9pZCBhYm9ydCgpIGZpbmFsOwogICAgIHZvaWQgcmVzZXRQYXJzZXJTdGF0
ZSgpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRl
clByaXZhdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFS
ZWNvcmRlclByaXZhdGUuY3BwCmluZGV4IDExYjRhODZlNDg1MmY2YzIwNjFmYTNmYzlhZjI5Zjg4
OTlmNGViOWYuLmI0MDg5ZmQzNTQ4Yzk3ZjE3ZmMyYjlmYjAwMjc4MGQ2NDNjZjIzYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQ
cml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRp
YVJlY29yZGVyUHJpdmF0ZS5jcHAKQEAgLTE2NSwxMCArMTY1LDEwIEBAIHZvaWQgTWVkaWFSZWNv
cmRlclByaXZhdGU6OnN0b3JhZ2VDaGFuZ2VkKFNoYXJlZE1lbW9yeSogc3RvcmFnZSwgY29uc3Qg
V2ViQ29yZTo6CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJl
Y29yZGVyOjpBdWRpb1NhbXBsZXNTdG9yYWdlQ2hhbmdlZCB7IFNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBkYXRhU2l6ZSB9LCBmb3JtYXQsIGZyYW1lQ291bnQgfSwg
bV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6ZmV0Y2hEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fY29ubmVj
dGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyOjpG
ZXRjaERhdGEgeyB9LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgbWltZVR5cGUgPSBtaW1lVHlwZSgpXShhdXRvJiYgZGF0YSwgZG91YmxlIHRpbWVDb2Rl
KSBtdXRhYmxlIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoZGF0
YS5zaXplKCkpCiAgICAgICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGJ1ZmZlciksIG1pbWVUeXBlLCB0aW1lQ29kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaAppbmRleCAz
MDNhNTRmNzZmMTg1ZTk2NDU0ZWY5ZjViYjQ2MWYyOGUxMjY3ODZkLi41NzZmZDFjNmU5N2MwY2Fk
OGNiZmVjOTRlM2JkMzYzMzA3NmU0NGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKQEAgLTU3LDcg
KzU3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAvLyBXZWJDb3JlOjpNZWRpYVJlY29yZGVy
UHJpdmF0ZQogICAgIHZvaWQgdmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6TWVkaWFTYW1w
bGUmLCBXZWJDb3JlOjpWaWRlb1NhbXBsZU1ldGFkYXRhKSBmaW5hbDsKLSAgICB2b2lkIGZldGNo
RGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+JiYpIGZpbmFsOworICAgIHZvaWQg
ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+JiYpIGZp
bmFsOwogICAgIHZvaWQgc3RvcFJlY29yZGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
IGZpbmFsOwogICAgIHZvaWQgc3RhcnRSZWNvcmRpbmcoU3RhcnRSZWNvcmRpbmdDYWxsYmFjayYm
KSBmaW5hbDsKICAgICB2b2lkIGF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBXVEY6Ok1lZGlh
VGltZSYsIGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgV2ViQ29yZTo6
QXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIHNpemVfdCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxl
RWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKaW5kZXggMmMxMzRlOWU3MTlmOTcy
NjVjOGQwOTAzMzQ5YzFlMmY5YzFlMmU4NC4uMDM1M2FhYmY3ZDRiOTI1YWEyZjE1NjJkNTczYWFm
MzA5M2M4M2JjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0
b3JDbGllbnQuaApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIE5v
ZGU7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdURjo6U3Ry
aW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJLaXQ6Oldl
YlBhZ2UmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsV3Jp
dGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UGFzdGVib2FyZERh
dGFGb3JSYW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxXVEY6OlN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRQ
YXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
V3JpdGVUb1Bhc3RlYm9hcmQoV2ViS2l0OjpXZWJQYWdlJikgeyB9CiAgICAgdmlydHVhbCBib29s
IHBlcmZvcm1Ud29TdGVwRHJvcChXZWJLaXQ6OldlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZy
YWdtZW50JiwgY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBib29sKSB7IHJldHVybiBmYWxz
ZTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5oCmluZGV4IGEwNjM1MjA0MzM1YjNhYjBlNmRmYjBjNjc3NzY3ZjQyOGU4YTc3
ZTIuLjE4MGIxMTExZWNmMDExMzI4MDkyNjZhMWJjZTI3ZDI2MGU0ZmEwMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAt
MzYsNyArMzYsNyBAQCBjbGFzcyBET01XaW5kb3dFeHRlbnNpb247CiBjbGFzcyBET01XcmFwcGVy
V29ybGQ7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Q
YWdlTG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxMb2Fk
VVJMUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBBUEk6Ok9iamVjdCopIHsgfQotICAgIHZpcnR1YWwgdm9pZCB3aWxsTG9hZERhdGFSZXF1
ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJp
bmcmLCBjb25zdCBXVEY6OlVSTCYsIEFQSTo6T2JqZWN0KikgeyB9CisgICAgdmlydHVhbCB2b2lk
IHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlVSTCYsIEFQSTo6T2Jq
ZWN0KikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2Jq
ZWN0PiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1l
JiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
Lm1tCmluZGV4IGRmOGQ4ODA0N2ZmNjczMTdjYjRhYmZlMzUxMzA1YTA3NWEwYzNhYmYuLmJjOGVh
Yjk4NzliZTgwZDg1MWIwMDFjMjAwYzBmMTg1N2E2YzdhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXIubW0KQEAgLTYzNCw3ICs2MzQsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVs
ZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxl
ZwogICAgICAgICAgICAgW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2NvbnRyb2xsZXIgd2lsbFdy
aXRlUmFuZ2VUb1Bhc3RlYm9hcmQ6d3JhcHBlcihXZWJLaXQ6OmNyZWF0ZUhhbmRsZShyYW5nZSku
Z2V0KCkpXTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZShXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkg
ZmluYWwKKyAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktpdDo6V2Vi
UGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiByYW5nZSwg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CkBAIC02NDIsNyArNjQyLDcgQEAgLSAodm9pZClfc2V0RWRp
dGluZ0RlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRWRpdGluZ0RlbGVnYXRlPillZGl0
aW5nRGVsZWcKICAgICAgICAgICAgIGF1dG8gZGF0YUJ5VHlwZSA9IFttX2NvbnRyb2xsZXItPl9l
ZGl0aW5nRGVsZWdhdGUuZ2V0KCkgX3dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXI6bV9jb250cm9sbGVyIHBhc3RlYm9hcmREYXRhRm9yUmFuZ2U6d3JhcHBlcihXZWJLaXQ6
OmNyZWF0ZUhhbmRsZShyYW5nZSkuZ2V0KCkpXTsKICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcg
KnR5cGUgaW4gZGF0YUJ5VHlwZSkgewogICAgICAgICAgICAgICAgIHBhc3RlYm9hcmRUeXBlcy5h
cHBlbmQodHlwZSk7Ci0gICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhQnlUeXBlW3R5cGVdKSk7Cisg
ICAgICAgICAgICAgICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKICAgICAgICAgICAgIH07CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAppbmRl
eCBjMzk4MTFlYWM5NGUyOTVlMzgzM2JmY2RkNmMxODJhNGEzMTAxOTliLi4zNTM2MDY1MjViODQ1
NzY4ZTMwMTU4MzhmODkxMWRlOGYyZTA4MDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgSW5qZWN0
ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYg
cGFnZSwgY29uc3QKICAgICAgICAgbV9jbGllbnQud2lsbFdyaXRlVG9QYXN0ZWJvYXJkKHRvQVBJ
KCZwYWdlKSwgdG9BUEkoY3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojpn
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQor
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9hcmREYXRhRm9y
UmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJh
bmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQuZ2V0UGFzdGVi
b2FyZERhdGFGb3JSYW5nZSkgewogICAgICAgICBXS0FycmF5UmVmIHR5cGVzID0gbnVsbHB0cjsK
QEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6
Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiBwYWdlLCBjbwogICAgICAgICAgICAg
cGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBlLT5zdHJpbmcoKSk7CiAKICAgICAgICAgZm9yIChh
dXRvIGl0ZW0gOiBkYXRhQXJyYXktPmVsZW1lbnRzT2ZUeXBlPEFQSTo6RGF0YT4oKSkgewotICAg
ICAgICAgICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoaXRl
bS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoaXRlbS0+Ynl0ZXMoKSwgaXRlbS0+c2l6ZSgpKTsKICAgICAgICAg
ICAgIHBhc3RlYm9hcmREYXRhLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICB9CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCmluZGV4
IGQ5OGVlMWMxNTVkNGZiODI5MmE1OGQ5YzU4ZTg4MDA3YTEzNDA1MWEuLjMxZTEzOTZlNzBhZDYw
YzE5ZDkzYzY3NWM3NjM0NmZlMGRhNzk0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50LmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZENoYW5nZShXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25OYW1lKSBmaW5h
bDsKICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBu
b3RpZmljYXRpb25OYW1lKSBmaW5hbDsKICAgICB2b2lkIHdpbGxXcml0ZVRvUGFzdGVib2FyZChX
ZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5h
bDsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9y
UmFuZ2UoV2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+
JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIHZvaWQgZGlkV3Jp
dGVUb1Bhc3RlYm9hcmQoV2ViUGFnZSYpIGZpbmFsOwogICAgIGJvb2wgcGVyZm9ybVR3b1N0ZXBE
cm9wKFdlYlBhZ2UmLCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgY29uc3QgV2ViQ29yZTo6
U2ltcGxlUmFuZ2UmIGRlc3RpbmF0aW9uLCBib29sIGlzTW92ZSkgZmluYWw7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCBhMzRlMjEy
ZDA3YWYyZmY1NzNlMWE4YTM0MGVjMWQzZmNlYjQyYTFhLi45NGZlZDJlN2UzNjMwMjkxZjk5ZjUz
NzhhY2JkZDJjMzk1MGQzZTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50LmNwcApAQCAtNjIsMTAgKzYyLDEwIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZFVSTFJlcXVlc3QoV2ViUGFnZSYgcGFnZSwgY29uc3Qg
UmVzCiBzdGF0aWMgdm9pZCByZWxlYXNlU2hhcmVkQnVmZmVyKHVuc2lnbmVkIGNoYXIqLCBjb25z
dCB2b2lkKiBkYXRhKQogewogICAgIC8vIEJhbGFuY2VkIGJ5IHJlZigpIGluIEluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdCgpLgotICAgIHN0YXRpY19j
YXN0PGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICBz
dGF0aWNfY2FzdDxjb25zdCBTaGFyZWRCdWZmZXIqPihkYXRhKS0+ZGVyZWYoKTsKIH0KIAotdm9p
ZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2Vi
UGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTaGFyZWRCdWZmZXIq
IHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNv
ZGluZ05hbWUsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0
YSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1
ZXN0KFdlYlBhZ2UmIHBhZ2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBj
b25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhKQogewogICAgIGlmICghbV9jbGllbnQud2lsbExvYWREYXRhUmVx
dWVzdCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5oCmluZGV4IDM2YmQ5ODBiMmZhYTFhZjQ1YWMzMTA2ZWIwMWU5ZjM3NmJhMTNh
Y2YuLjg2M2JkYWI2Mjg0Y2EzYWFkMmY5ZDVmZmY1ZmQ2OGVhYjhiMmI3MzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAg
cHVibGljOgogICAgIGV4cGxpY2l0IEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudChjb25z
dCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRCYXNlKik7CiAKICAgICB2b2lkIHdpbGxMb2FkVVJM
UmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgQVBJOjpP
YmplY3QqKSBvdmVycmlkZTsKLSAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcios
IGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBVUkwmLCBBUEk6
Ok9iamVjdCopIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdl
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25z
dCBVUkwmLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2UmLCBXZWJGcmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVj
dD4mKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2UmLCBXZWJGcmFtZSYsIFJlZlB0cjxBUEk6Ok9iamVj
dD4mKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDk4YTZlMmU3YjU3
ZTUyMzE4ZjQyYzhjZDE3ZTRmMGRlMDUwOTQwOTMuLjAyMjcwYTUzYWY5YmE4YmY4MGQ3YzNiM2Rj
ZGM4Y2ViNTY1MTc2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjgzLDcgKzI4
Myw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKICAgICAKICAgICBhdXRvIGJ1ZmZlciA9IGhh
bmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikgewotICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxl
UmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZSBmb3Ig
cmVzb3VyY2UgdXJsICVzIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDg3Mjk4YjM3MjUwNDk4
NTcxYWU0OGY4YzkyMTg1ZWIyMGUzMWRlMTIuLjMxMGZjYTc4NzVjMzJjM2NkNzQ3OGRiNjRmNTlh
YzJjZjUwMTYzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIGJvbwogICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OnNo
b3VsZEludGVyY2VwdFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJhbWUoKSwgcmVzcG9uc2UpKSB7
CiAgICAgICAgIGF1dG8gaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciA9IG1fY29yZUxvYWRl
ci0+aWRlbnRpZmllcigpOwogICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuYmVnaW5JbnRl
cmNlcHRpbmdSZXNwb25zZShpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyKTsKLSAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShtX2NvcmVM
b2FkZXItPmZyYW1lKCksIHJlc3BvbnNlLCBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGludGVyY2VwdGVkUmVxdWVzdElk
ZW50aWZpZXIsIHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHBvbGlj
eURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBpbnNw
ZWN0b3JSZXNwb25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhKSBtdXRhYmxl
IHsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNw
b25zZShtX2NvcmVMb2FkZXItPmZyYW1lKCksIHJlc3BvbnNlLCBpbnRlcmNlcHRlZFJlcXVlc3RJ
ZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGludGVyY2Vw
dGVkUmVxdWVzdElkZW50aWZpZXIsIHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpXShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiBpbnNwZWN0b3JSZXNwb25zZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IG92ZXJyaWRlRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIW1fY29yZUxvYWRlciB8
fCAhbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgICAgICBXRUJSRVNP
VVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc3BvbnNlOiBub3QgY29udGludWlu
ZyBpbnRlcmNlcHQgbG9hZCBiZWNhdXNlIG5vIGNvcmVMb2FkZXIgb3Igbm8gSUQiKTsKICAgICAg
ICAgICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuY29udGludWVSZXNwb25zZShpbnRlcmNl
cHRlZFJlcXVlc3RJZGVudGlmaWVyKTsKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEs
IGludDY0X3QgZQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29y
a1Jlc3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNob3VsZCBub3Qgc2VuZCBkYXRhIHVudGlsIHdl
J3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIAogICAgIGlmIChVTkxJS0VMWShtX2ludGVy
Y2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkp
KSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIG1faW50
ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBidWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlciks
IGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1fY29yZUxv
YWRlcikKICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CkBAIC0yOTUsMTEgKzI5NSwxMSBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVh
YmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZAogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3Mp
IFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UgZm9yICclcyciLCBtX2NvcmVM
b2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgV0VCUkVTT1VSQ0VM
T0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNvdXJjZToiKTsKIAotICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJ
blNoYXJlZEJ1ZmZlcigpOwogCiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gY3JlYXRlIGJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIHNlbnQgZnJv
bSB0aGUgbmV0d29yayBwcm9jZXNzLiIpOwotICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxF
QVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiBVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZl
ciIpOworICAgICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJl
c291cmNlOiBVbmFibGUgdG8gY3JlYXRlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIiKTsKICAgICAg
ICAgaWYgKGF1dG8qIGZyYW1lID0gbV9jb3JlTG9hZGVyLT5mcmFtZSgpKSB7CiAgICAgICAgICAg
ICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCiAgICAgICAgICAgICAgICAgcGFnZS0+
ZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShXZWJDb3JlOjpE
aWFnbm9zdGljTG9nZ2luZ0tleXM6OmludGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25v
c3RpY0xvZ2dpbmdLZXlzOjpjcmVhdGVTaGFyZWRCdWZmZXJGYWlsZWRLZXkoKSwgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlOjpObyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLmgKaW5kZXggNDJkZTQ2MTQxOTc3OGI3YzQ1MGZjYTFlYjAzN2MxY2U5
N2QyZDYzMS4uYTdmNDVjODQwMWIyZmQyZjg3MGUzNjc4YzU4ZmMzMTBjMmUxZjI0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAt
MjA3LDcgKzIwNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNo
YW5nZWQoYm9vbCkgZmluYWwgeyB9CiAgICAgYm9vbCBnZXRGb3JtVmFsdWUoU3RyaW5nJiBmb3Jt
VmFsdWUpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBoYW5kbGVTY3JvbGwoV2Vi
Q29yZTo6U2Nyb2xsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSkgZmluYWw7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNv
bnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBs
aXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCB3aWxsRGV0YWNoUmVuZGVy
ZXIoKSBmaW5hbDsKICAgICBib29sIHBsdWdpbkhhbmRsZXNDb250ZW50T2Zmc2V0Rm9yQWNjZXNz
aWJpbGl0eUhpdFRlc3QoKSBjb25zdCBmaW5hbDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGQyM2FiYjllNjUxMWIx
M2JiZDUyM2FmNDUxZjQ0MTc4NzNhNmMxZTAuLmQ0N2YzMmI3ZDQ5MTk1NmJkY2U3N2JmZTZmMTVj
YTc4NjViZmQxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5tbQpAQCAtMjU1Miw3ICsyNTUyLDcgQEAgdm9pZCBQREZQbHVnaW46Om5v
dGlmeURpc3BsYXlNb2RlQ2hhbmdlZChpbnQpCiAgICAgdXBkYXRlU2Nyb2xsYmFycygpOwogfQog
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBQREZQbHVnaW46OmxpdmVSZXNvdXJjZURhdGEoKSBjb25z
dAorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBERlBsdWdpbjo6bGl2ZVJlc291cmNl
RGF0YSgpIGNvbnN0CiB7CiAgICAgTlNEYXRhICpwZGZEYXRhID0gbGl2ZURhdGEoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCA4OGY0NWNlNTFjZTMx
ZGYwYzViM2I3NTg2MjM2YzNmMGQ5YzkzYWQzLi41OGQ3MGEzOWExNmQ2YTRjMGU4YjBjYTlkMDNh
YzNkMzdhZWRmY2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4u
aApAQCAtNjEsNyArNjEsNyBAQCBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFJlY3Q7CiBjbGFz
cyBJbnRTaXplOwogY2xhc3MgU2Nyb2xsYmFyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yODgs
NyArMjg4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBjb252
ZXJ0VG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnRJbkxvY2FsQ29vcmRp
bmF0ZXMpIGNvbnN0OwogCi0gICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCA9IDA7
CiAKICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggMDhjZmJiNTUwZWRjYjU2YzU5OTdh
MDQzNmMyOTY1M2VmMGU4MDNlZi4uNGQ1MzczNDcyNzEzNmNkNmY0MWUwOTcxMWViN2JmZDAzNDdk
NGIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKQEAgLTkyMyw3ICs5MjMsNyBAQCB2b2lkIFBsdWdpblZpZXc6OndpbGxEZXRhY2hSZW5k
ZXJlcigpCiAgICAgbV9wbHVnaW4tPndpbGxEZXRhY2hSZW5kZXJlcigpOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QKK1JlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBQbHVnaW5WaWV3OjpsaXZlUmVzb3VyY2VEYXRhKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pIHsKICAgICAg
ICAgaWYgKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6OkZpbmlzaGVk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4
IDczMjc0MWQ5NWVlNmEyYjY1NmYzZDhjMDhjOGFmZmJhN2UyZmFmNjMuLmY3NWFjODliZjM5YTUx
ZTAxOGQyNjJjMGJlN2MwYTYyZGViNjkzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiAKICAg
ICBib29sIHNob3VsZEFsbG93U2NyaXB0aW5nKCk7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Q7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICBi
b29sIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaW50Jik7CiAgICAgU3RyaW5nIGdldFNlbGVjdGlvbkZvcldvcmRBdFBvaW50KGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmKSBjb25zdDsKICAgICBib29sIGV4aXN0aW5nU2VsZWN0aW9uQ29u
dGFpbnNQb2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IDQyZWQ5N2RlNWRjMGZjMDJiOTMzZjRj
NTk1ZjJhOWRiN2UyZGRlYzkuLmVlNDBmYjk1ODVlNzlkODZiM2NmZDJmNTc5ZWQ0NmU2MWI5ZWM2
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC03Miw3ICs3
Miw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNw
b25zZSwgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9LCBtX2ZldGNo
SWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6
ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCmluZGV4IDJjNzM3MWYx
ZGRmNDBlNDZhZTM0MTM5ZjNlNDBiOWMxNWEzNGZiZDguLmU5ODdlMTlhYzhiNzM4ODcxYWFkODJi
NGIzODU2Mjk2OGEyYjZjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgK
QEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlz
aChSZWY8V2ViQ29yZTo6Rm9ybURhdGE+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2goKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggYTAxMDNiMDJhMGY0ZDRhOTFlMTdmMzUy
YmY4ZjlmMTA1MjVkOGNlZS4uMjhjMTRiYTUzNjYzYzU1YjYxYjEwOTgxMmMwNDhhMDIwNTZiZDM4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29sIFdlYkVk
aXRvckNsaWVudDo6c2hvdWxkQXBwbHlTdHlsZShjb25zdCBTdHlsZVByb3BlcnRpZXMmIHN0eWxl
LCBjb25zdCBzdGQ6OgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHBy
ZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIFdlYkVkaXRv
ckNsaWVudDo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVk
RmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyQXR0YWNobWVudElkZW50
aWZpZXJGcm9tRGF0YShpZGVudGlmaWVyLCBjb250ZW50VHlwZSwgcHJlZmVycmVkRmlsZU5hbWUs
IGRhdGEuZ2V0KCkpKTsKIH0KQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVu
dDo6d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS53aWxsV3JpdGVU
b1Bhc3RlYm9hcmQoKm1fcGFnZSwgcmFuZ2UpOwogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
IHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdlYkVkaXRvckNs
aWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICBtX3BhZ2UtPmluamVj
dGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZSgqbV9wYWdl
LCByYW5nZSwgcGFzdGVib2FyZFR5cGVzLCBwYXN0ZWJvYXJkRGF0YSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKaW5kZXggZTE2YjBjZjM4MTgwNjExMGRiYzZlMTdlYjc1ZDkxZDNlNGIwOWE0ZS4uMGY3
M2U0ZmI2MzYyMmM2ZmFlOTYzNTIxOGI1N2YwNjBlMjYxMTI1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aApAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkTW92ZVJhbmdlQWZ0
ZXJEZWxldGUoY29uc3QgV2ViQ29yZTo6U2ltcGxlUmFuZ2UmLCBjb25zdCBXZWJDb3JlOjpTaW1w
bGVSYW5nZSYpIGZpbmFsOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICB2
b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCByZWdpc3RlckF0dGFjaG1l
bnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCkgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50cyhWZWN0
b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYmKSBmaW5hbDsKQEAgLTg4LDcg
Kzg4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEVuZEVkaXRpbmcoKSBmaW5hbDsKICAgICB2
b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoKSBmaW5hbDsKLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudFBhc3Rl
Ym9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiwgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwogICAgIAogICAgIHZvaWQgcmVnaXN0
ZXJVbmRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJS
ZWRvU3RlcChXZWJDb3JlOjpVbmRvU3RlcCYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKaW5kZXggOTU5MjIzZDc3NmVmOTMyYWIxYTczNzE2MDZlMzI5MWQyMzI5ZDNjYi4u
MTRhMDgzY2EyMDdhOTA2M2NmODBiMWU3ZTk2NzBhNDg3Y2Y0ZDM5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTg4LDcgKzExODgsNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAg
ICAgICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5S
ZXNvdXJjZURhdGEoKTsKKyAgICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgICAg
ICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8g
bWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFp
blJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOwogICAgICAgICAg
ICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkaW5n
RGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihsb2FkZXItPnJlc3BvbnNlKCkuc3VnZ2VzdGVk
RmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwCmluZGV4IDRjNjY2ZGQ0MGQ1ZTlkNDUxYTFlMDZjMTFmZDA4MDAyN2E5
OGIyYTEuLjYwYzIwN2VkMGVlYTgzNmI0ODcwZGRhN2M2YmIzMGExNDU0Y2E0OTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6Okdl
dFBhc3RlYm9hcmRUeXBlcyhwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkp
LCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpHZXRQYXN0ZWJvYXJkVHlwZXM6OlJlcGx5
KHR5cGVzKSwgMCk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2Fy
ZENvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQq
IGNvbnRleHQpCiB7CiAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIG92ZXJyaWRlcy4KICAgICBWZWN0
b3I8dWludDhfdD4gb3ZlcnJpZGVCdWZmZXI7CiAgICAgaWYgKFdlYlBhc3RlYm9hcmRPdmVycmlk
ZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlkZXMoKS5nZXREYXRhRm9yT3ZlcnJpZGUocGFzdGVi
b2FyZE5hbWUsIHBhc3RlYm9hcmRUeXBlLCBvdmVycmlkZUJ1ZmZlcikpCi0gICAgICAgIHJldHVy
biBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1ZmZlcikp
OworICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShvdmVycmlkZUJ1
ZmZlcikpOwogCiAgICAgLy8gRmFsbGJhY2sgdG8gbWVzc2FnaW5nIHRoZSBVSSBwcm9jZXNzIGZv
ciBuYXRpdmUgcGFzdGVib2FyZCBjb250ZW50LgogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
IGlwY0hhbmRsZTsKQEAgLTIwOSw3ICsyMDksNyBAQCBpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgYwog
ICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogYnVmZmVyLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKK2ludDY0X3QgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRs
ZSBoYW5kbGU7CiAgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkgewpAQCAtMzI0LDcg
KzMyNCw3IEBAIFZlY3RvcjxTdHJpbmc+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEZpbGVQ
YXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKIAogICAgIElQQzo6
U2hhcmVkQnVmZmVyQ29weSBkYXRhOwpAQCAtNDA2LDcgKzQwNiw3IEBAIHN0ZDo6b3B0aW9uYWw8
UGFzdGVib2FyZEl0ZW1JbmZvPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluZm9ybWF0aW9uRm9y
SXRlbUF0SW5kCiAgICAgcmV0dXJuIGluZm87CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KiBjb250ZXh0KQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGU7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
c3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCBwYXN0ZWJvYXJk
VHlwZSwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJZGVudGlmaWVyKGNvbnRleHQpKSwgTWVzc2FnZXM6
OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkOjpSZXBseShpcGNI
YW5kbGUpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAwNDVkNGNiODlh
OTY2NGEwOGUxYjgxYTA1MzAzNWRjNWQ5ZDBjNTk5Li4yMDBiNmMwMTU5YjY4OGM3MmEzZmFkZmJh
ZTBhNjk0ODMxYjkzNmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01Niw3
ICs1Niw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaW50IGdldE51bWJl
ck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJp
bmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhu
YW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAg
ICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4
dCopIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBAIC02Niw3ICs2Niw3
IEBAIHByaXZhdGU6CiAKICAgICBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRUeXBl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwotICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
KyAgICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90
IHNldFVSTChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICBpbnQ2NF90IHNldENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVy
cmlkZTsKICAgICBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTc4LDcgKzc4LDcg
QEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKICAgICBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+
IHJlYWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKICAgICB2
b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29y
ZTo6U2VsZWN0aW9uRGF0YSYmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCkBAIC04OSw3ICs4
OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3Rl
Ym9hcmQoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlv
bmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVt
c0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0
ZWJvYXJkSXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggNzk1NjI2YjA0ODYyMjBmOWEzMDlkYjJmYjcy
NWUwNGIyMjI1NGEzYS4uYTIwNWUwMDFjYTcxNTgyMDkxM2E4MWFlNGE4MzY1MzBmOWEwZjY0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9X
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC00OSw3ICs0
OSw3IEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAKIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6
On5XZWJQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwogCi12b2lkIFdlYlByZXZpZXdM
b2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
Cit2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gd2ViUGFnZSA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobV9wYWdlSUQpOwogICAgIGlmICghd2ViUGFnZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMjdhZDFjNTIwMjY2
MDFlN2M0OWVkMTg3NzdlZWFmZjYwY2QxOWIxMi4uMGRjMTY3ZTViN2JjM2IwM2VmMzkzMWVhYjM1
NmM3ODI3OTI5NTI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgK
QEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdlYlByZXZpZXdMb2Fk
ZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGksIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoKSBvdmVy
cmlkZTsKICAgICBib29sIHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCA0YjZlMjE3
YmJlMzdmOGMxZGYxN2FiY2NiYmM4Nzc0MzFhMmIxZTNiLi5lMWUwZTYxMTJhMmRlZGMzYjhiYjYz
MDk4NTM1Mzc2ZWY0M2FkNTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBAIC0x
NjMsNyArMTYzLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1h
Z2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKICAgICBTaGFyZWRNZW1vcnk6
OkhhbmRsZSBhcmNoaXZlSGFuZGxlOwogICAgIHNpemVfdCBhcmNoaXZlU2l6ZSA9IDA7CiAgICAg
aWYgKGRhdGEpIHsKLSAgICAgICAgYXV0byBhcmNoaXZlQnVmZmVyID0gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKKyAgICAgICAg
YXV0byBhcmNoaXZlQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0
YSAqKWRhdGEuZ2V0KCkpOwogICAgICAgICBhdXRvIGFyY2hpdmVTaGFyZWRNZW1vcnlCdWZmZXIg
PSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoYXJjaGl2ZUJ1ZmZlci5nZXQoKSk7CiAgICAgICAg
IGlmICghYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA5Mjli
MTYwZWVhOWE2NDcyYzJjYTdkMDNhYzMxMzNiN2UxZWU5Zjg3Li5kODhmNDRjZmNkZTVlMTVmNjZj
MTI0YjQwZjViNTQzNWI5NDY5N2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0zNDAsNyArMzQwLDcgQEAgU3RyaW5nIFdlYkZyYW1lOjpz
b3VyY2UoKSBjb25zdAogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IG1fY29y
ZUZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpOwogICAgIGlmICghZG9jdW1l
bnRMb2FkZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEo
KTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9
IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3Vy
Y2VEYXRhKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgcmV0dXJuIGRlY29kZXItPmVu
Y29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYzRhYTBkMGUzZWY5YTRlODg0MTJmYzA1ZTBjM2Ni
ODFhZGIyOTUwMS4uNjMyMGMzNThlMWNkMjYwMzA2ZjM1MzQyYTkwZGNhMmVmODRjMDg4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE3Mzgs
NyArMTczOCw3IEBAIE5PX1JFVFVSTiB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0V2FpdGluZ0Zv
clByb2Nlc3NMYXVuY2goTG9hZFBhcmFtZXRlcnMmJiwgVVJMCiAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0X3Qg
bmF2aWdhdGlvbklELCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0
ZVBvbGljaWVzLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHNoYXJlZEJ1ZmZlciwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBjb25zdCBVUkwmIHVu
cmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHN0ZDo6b3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFN1
YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2Vzc2lvbkhpc3RvcnlWaXNp
YmlsaXR5LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kpCit2b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHNoYXJlZEJ1ZmZlciwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBjb25zdCBVUkwmIHVu
cmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHN0ZDo6b3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFN1
YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2Vzc2lvbkhpc3RvcnlWaXNp
YmlsaXR5LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kpCiB7CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHNldElzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4oaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgJm1f
bWFpbkZyYW1lLmdldCgpKTsKQEAgLTE3NTMsNyArMTc1Myw3IEBAIHZvaWQgV2ViUGFnZTo6bG9h
ZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdM
b2FkIHNoCiAKICAgICAvLyBMZXQgdGhlIEluamVjdGVkQnVuZGxlIGtub3cgd2UgYXJlIGFib3V0
IHRvIHN0YXJ0IHRoZSBsb2FkLCBwYXNzaW5nIHRoZSB1c2VyIGRhdGEgZnJvbSB0aGUgVUlQcm9j
ZXNzCiAgICAgLy8gdG8gYWxsIHRoZSBjbGllbnQgdG8gc2V0IHVwIGFueSBuZWVkZWQgc3RhdGUu
Ci0gICAgbV9sb2FkZXJDbGllbnQtPndpbGxMb2FkRGF0YVJlcXVlc3QoKnRoaXMsIHJlcXVlc3Qs
IGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4oc3Vic3RpdHV0ZURhdGEuY29udGVudCgpKSwgc3Vi
c3RpdHV0ZURhdGEubWltZVR5cGUoKSwgc3Vic3RpdHV0ZURhdGEudGV4dEVuY29kaW5nKCksIHN1
YnN0aXR1dGVEYXRhLmZhaWxpbmdVUkwoKSwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNm
b3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIG1fbG9h
ZGVyQ2xpZW50LT53aWxsTG9hZERhdGFSZXF1ZXN0KCp0aGlzLCByZXF1ZXN0LCBjb25zdF9jYXN0
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPihzdWJzdGl0dXRlRGF0YS5jb250ZW50KCkpLCBzdWJz
dGl0dXRlRGF0YS5taW1lVHlwZSgpLCBzdWJzdGl0dXRlRGF0YS50ZXh0RW5jb2RpbmcoKSwgc3Vi
c3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgpLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAKICAgICAvLyBJ
bml0YXRlIHRoZSBsb2FkIGluIFdlYkNvcmUuCiAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxv
YWRSZXF1ZXN0KCptX21haW5GcmFtZS0+Y29yZUZyYW1lKCksIHJlcXVlc3QsIHN1YnN0aXR1dGVE
YXRhKTsKQEAgLTM4NjEsNyArMzg2MSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U291cmNlRm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoCiAKIHZv
aWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LndlYkZyYW1lKGZyYW1lSUQpKSB7CiAgICAgICAgIGlmIChQbHVnaW5WaWV3KiBwbHVnaW5WaWV3
ID0gcGx1Z2luVmlld0ZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSkpCiAgICAgICAgICAgICBi
dWZmZXIgPSBwbHVnaW5WaWV3LT5saXZlUmVzb3VyY2VEYXRhKCk7CkBAIC0zODc3LDcgKzM4Nzcs
NyBAQCB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZAogICAgIGNhbGxiYWNrKGRhdGFSZWZlcmVuY2Up
OwogfQogCi1zdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUo
RnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cmNlVVJMKQorc3RhdGljIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNv
bnN0IFVSTCYgcmVzb3VyY2VVUkwpCiB7CiAgICAgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IGZy
YW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwogICAgIGlmICghbG9hZGVyKQpAQCAtMzg5
Miw3ICszODkyLDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZv
ckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXIKIAogdm9pZCBXZWJQYWdlOjpn
ZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0
cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3Rk
OjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+Jik+JiYgY2FsbGJhY2sp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKICAgICAgICAgVVJMIHJlc291cmNl
VVJMKFVSTCgpLCByZXNvdXJjZVVSTFN0cmluZyk7CiAgICAgICAgIGJ1ZmZlciA9IHJlc291cmNl
RGF0YUZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSwgcmVzb3VyY2VVUkwpOwpAQCAtNzAwMSw3
ICs3MDAxLDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wg
ZGVjaXNpb24sIENhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIKICAgICBpZiAoIWRvY3VtZW50TG9h
ZGVyKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAotICAgIGRvY3Vt
ZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRp
Zmllci50b0ludGVnZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildIChXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGljb25EYXRhKSBtdXRhYmxlIHsKKyAg
ICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihkZWNpc2lvbiwgbG9h
ZElkZW50aWZpZXIudG9JbnRlZ2VyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogaWNvbkRh
dGEpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGljb25EYXRhIH0pOwog
ICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmlu
ZGV4IDY3OWFiZjFiMTU1ZjUwMDI5NzIyNDExZWRhOWEzOWMzMmI0MzA2MzUuLjNiYmQ1MzU0ODBk
MDU3NjEzYzQzZGIzZDlmYWQ0N2FmYmM2MjEzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTIxNiw3ICsyMTYsNyBAQCBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKIGNs
YXNzIFNlbGVjdGlvbkdlb21ldHJ5OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgVGV4dENoZWNr
aW5nUmVxdWVzdDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKQEAgLTE0MDMsNyArMTQwMyw3IEBA
IHB1YmxpYzoKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQgZGlkU3RhcnRMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25z
dCBTdHJpbmcmIHV0aSk7Ci0gICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1l
bnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIGRp
ZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIHJlcXVlc3RQYXNzd29yZEZvclF1
aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAjZW5kaWYKIApAQCAtMTYwMiw3
ICsxNjAyLDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBzb3VyY2VGb3JGcmFtZShXZWJGcmFt
ZSopOwogCi0gICAgdm9pZCBsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJD
b3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBv
bGljaWVzRGF0YT4mJiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgY29uc3QgVVJMJiBm
YWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+LCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNp
YmlsaXR5LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOworICAgIHZvaWQg
bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6U2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBjb25zdCBVUkwmIGZhaWxpbmdV
UkwsIGNvbnN0IFVzZXJEYXRhJiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbj4sIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHks
IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CiAKICAgICAvLyBBY3Rpb25z
CiAgICAgdm9pZCB0cnlDbG9zZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0K
aW5kZXggYzk1YzM4NDYzOTIyMTg0ZjI1N2E3MTlkYjViYTlhNDgyOWFlZGYxYi4uODVlNjUxODY5
MmVkNjBjNzg4ZTcyYTdjZTMyZjNmMGUxNWNhNzc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTMyMTcsNyArMzIxNyw3
IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24p
CiAgICAgICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGRvd25jYXN0PFJlbmRlckltYWdl
PigqZWxlbWVudC5yZW5kZXJlcigpKS5jYWNoZWRJbWFnZSgpOwogICAgICAgICBpZiAoIWNhY2hl
ZEltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKTsKKyAgICAgICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1
ZmZlcigpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoKmJ1
ZmZlcik7CkBAIC00NjgzLDcgKzQ2ODMsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZFN0YXJ0TG9hZEZv
clF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZQogICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZShmaWxlTmFtZSwgdXRpKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZGlk
RmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCit2b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBBU1NFUlQoIWJ1ZmZlci5pc0VtcHR5KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcAppbmRleCBjYzBhYzY3NTcxNWYwZTgyZTUwOWM3
NTZiMzAyY2Q2Y2ZlOGE1Nzc4Li5mMWUxYzVmZjRkODkxMDlkNTExOWVhMGY0YTQyMzMyMzczMjI4
NDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5j
cHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+
CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIo
Y29uc3QgY2hhciogbmFtZSkKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBw
b3J0L1BpbmdIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGlu
Z0hhbmRsZS5oCmluZGV4IDFmNTU4NGZhMzg3ZDc2Y2NlOTRmZjdiNTY5NjhlN2U4MjIwNjA2MDYu
LmEyNTU2MGExMGMyODgyZTFhYmQxNzg0NTY5NDg2ZWExM2VkODk2ZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oCkBAIC03Myw3ICs3Myw3
IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHBpbmdM
b2FkQ29tcGxldGUoeyB9LCByZXNwb25zZSk7CiAgICAgfQotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIGludCkgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KKyAgICB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgaW50KSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9
CiAgICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZShlcnJvcik7
IH0KICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlKikgZmluYWwgeyByZXR1cm4gbV9zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaAppbmRleCBjNjVlOTc4ODhiOTZiNzM3OTU4ODA1YjZmOGZhMDA5ZGNkMWZi
MTc3Li40MjAxMDdkYTY1Yjc2YjZkMTJjNGM0NTgxMzlmMzA4MjU4ZDkzZmYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGlu
ZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBk
aWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50
UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZv
aWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAKICAg
ICB2b2lkIHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAg
V2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSByZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoV2Vi
Q29yZTo6RE9NUGFzdGVBY2Nlc3NDYXRlZ29yeSwgY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1
cm4gV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZTo6RGVuaWVkRm9yR2VzdHVyZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lm1tCmluZGV4IDc0YzQ4NzgzMTc3YWY5MGIyMDJkNTFjNDY2NjliNDAxMmIx
MjVmNTkuLmMyYzQwZDNkMmExMzNmMjgxMzQxNTYwMzRkZTU0MTQxYTRjZTljMzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW0KQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2ls
bFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUgog
ICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KIAotdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRh
KQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
CiB7CiAgICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYTI1OThmMzJmYjc2MGE3ZDg4M2M5ZjRjZWVjMThj
ZjU5MWViOGVhZC4uOTU5ZDc0OGI1NmJlMTA3NmJkOTc3OTkyMmNkMzU2ZDIxYTY4MTc0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yNDgsNyArMjQ4LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNlbmRIMlBpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBl
Y3RlZDxTZWNvbmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mJikgZmluYWw7CiAKICAg
ICB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb25zKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V2Vi
Q29yZTo6TGlua0ljb24mLCB1aW50NjRfdD4+JikgZmluYWw7Ci0gICAgdm9pZCBmaW5pc2hlZExv
YWRpbmdJY29uKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciopOworICAgIHZvaWQgZmluaXNoZWRMb2Fk
aW5nSWNvbihXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBib29sIG1fbG9hZGluZ0ljb24geyBmYWxzZSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQppbmRleCBiODQ5ZDJhYWMyYTkzZmJlZTQxNzI5ZjI0YTg2Y2Rj
ZjZiMWZlMDE5Li5hYTJjYzk4MTQ3NGExM2NlNTA4NDc5ODk0MjM2ODQ0OTFjODhmNmUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMjAxMiw3ICsyMDEyLDcgQEAgUmVmUHRyPFdl
YkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
cmVhdGVQcmV2aWV3TG8KICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX2ZpbGVQYXRoOwog
ICAgICAgICBSZXRhaW5QdHI8TlNGaWxlSGFuZGxlPiBtX2ZpbGVIYW5kbGU7CiAKLSAgICAgICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBvdmVycmlkZQogICAgICAgICB7CiAgICAg
ICAgICAgICBhdXRvIGRhdGFBcnJheSA9IGJ1ZmZlci5jcmVhdGVOU0RhdGFBcnJheSgpOwogICAg
ICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gZGF0YUFycmF5LmdldCgpKQpAQCAtMjA5NCw3
ICsyMDk0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Z2V0TG9hZERlY2lzaW9uRm9y
SWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3IKICAgICAgICAgfQogCiAgICAgICAg
IG1fbG9hZGluZ0ljb24gPSB0cnVlOwotICAgICAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9h
ZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29uLT5zZWNvbmQsIFt0aGlzLCB3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9XSAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBidWZmZXIpIHsKKyAgICAg
ICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24odHJ1ZSwgaWNvbi0+
c2Vjb25kLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBmaW5pc2hlZExvYWRpbmdJ
Y29uKGJ1ZmZlcik7CkBAIC0yMTMxLDcgKzIxMzEsNyBAQCBzdGF0aWMgTlNJbWFnZSAqd2ViR2V0
TlNJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU2l6ZSBzaXplKQogfQogI2VuZGlmIC8v
ICFQTEFURk9STShJT1NfRkFNSUxZKQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5p
c2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpCit2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGljb25EYXRhKQogewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIEFTU0VSVChtX2xvYWRpbmdJY29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5k
ZXggZTM1MWVhOTk4YzA3ZTRiMzA0NmZjOTBkMjY0NWZhYjNlNmQwZDg4YS4uMWQ4MWZmYTE5ZDk3
ZjA0ZWM3Y2M1NzViM2VjZTVlODg4MTQ0MGIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmgKQEAgLTU1LDE0ICs1NSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU3VwcG9ydGVk
VHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICNlbmRpZgogICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQo
c2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVm
ZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNp
emVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgVVJMIHJlYWRVUkxGcm9tUGFzdGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRD
b250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJk
SXRlbUluZm8+IGluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+IGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludCBnZXROdW1iZXJPZkZp
bGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYg
dHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZm
ZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgU3Ry
aW5nIHN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpAQCAtNzUsNyArNzUsNyBAQCBw
cml2YXRlOgogCiAgICAgaW50NjRfdCBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VHlwZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAg
ICBpbnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
ciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAg
aW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRV
UkwoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAg
aW50NjRfdCBzZXRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
CiAgICAgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW0KaW5kZXggYTNlM2M5MzE2OGQ4OTM2NTAyYWE2ZTdmNDU0ZTRlNTdlZDFiMTI4Yy4u
MTg4ZWM1MDA0NTA3N2Q3OGIwMTIwYTZkYWZiYjA0ZmI3OTI3NjQ2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGViCiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5nZXRUeXBlcyh0eXBl
cyk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQorUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS5idWZmZXJGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsKIH0KQEAgLTE1
NCw3ICsxNTQsNyBAQCBpbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VHlwZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgYwogICAgIHJldHVybiBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldFR5cGVzKHBhc3RlYm9hcmRUeXBlcyk7CiB9
CiAKLWludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQor
aW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVm
ZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKIHsKICAgICByZXR1cm4g
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZl
ciwgcGFzdGVib2FyZFR5cGUpOwogfQpAQCAtMjA5LDcgKzIwOSw3IEBAIGludCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
Y291bnQoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2Fy
ZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAg
IHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZmZXIoaW5k
ZXgsIHR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJE
YXRhU291cmNlLm1tCmluZGV4IGM1MzFiMWRkZGQzYmU4ZTU2ZWQ2ZDVkN2M3ZmE2YjdkYWE2Y2Mz
YTMuLjgzZTg1OTE0MzQ1ZWE3Y2I4NDFkOTlmZDFmYjY2NmQ4Y2NmMDMwMjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTQ2MCw3
ICs0NjAsNyBAQCAtICh2b2lkKWRlYWxsb2MKIAogLSAoTlNEYXRhICopZGF0YQogewotICAgIFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUo
X3ByaXZhdGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShf
cHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291
cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4gbWFpblJlc291cmNlRGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDViMTBk
M2ZmNzU2NzAxMTUxMzhmNGQ0MzE3Mjk3Y2RjYTFlYzk1ZDcuLjI4ZDg3NTkyOWNjYWNkYjlhMTM4
OGE4MjZiMmZkNWVjZjQ2ZWNjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMzU0MCw3ICszNTQwLDcgQEAgc3RhdGljIFJldGFpblB0
cjxOU01lbnVJdGVtPiBjcmVhdGVTaGFyZU1lbnVJdGVtKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RS
ZXN1bHQmIGgKICAgICB9CiAKICAgICBpZiAoYXV0byogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0Lmlt
YWdlKCkpIHsKLSAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IGltYWdlLT5kYXRhKCkpCisgICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKSkKICAgICAgICAgICAgIFtpdGVt
cyBhZGRPYmplY3Q6YWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbTlNEYXRh
IGRhdGFXaXRoQnl0ZXM6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgbGVuZ3RoOmJ1
ZmZlci0+c2l6ZSgpXV0pLmdldCgpXTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCmluZGV4IGQzYjUxNmM0MWE5MGU3ZmE1N2RhZDk4
OTFkNDlhMzM5MTQ4YTM2MTQuLjEyZDU5YzBhMTc2ODE4ZTY2MmM0M2MwNzQ0YTUzYTEwMWM4NTYx
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3Vy
Y2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5t
bQpAQCAtMzY3LDcgKzM2Nyw3IEBAIC0gKE5TU3RyaW5nICopX3N0cmluZ1ZhbHVlCiAgICAgaWYg
KCFlbmNvZGluZy5pc1ZhbGlkKCkpCiAgICAgICAgIGVuY29kaW5nID0gUEFMOjpXaW5kb3dzTGF0
aW4xRW5jb2RpbmcoKTsKICAgICAKLSAgICBTaGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZh
dGUtPmNvcmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxs
cHRyOworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNv
cmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxscHRyOwog
ICAgIHJldHVybiBlbmNvZGluZy5kZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
Y29yZURhdGEgPyBjb3JlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciks
IGNvcmVEYXRhID8gY29yZURhdGEtPnNpemUoKSA6IDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vTWVtb3J5U3RyZWFtLmNwcAppbmRleCA1ZGYyMTcwZDJhNGJmYzRhNDgwY2Y0NWE4NGQy
M2Q3MzA1OTM1ZmMxLi4zNjBhZWRjZWFjY2IxZmJkZDFkNDRhZDQyZDhjMDRjNmYwNGI2MTllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKQEAgLTMxLDcgKzMxLDcg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIE1lbW9yeVN0cmVhbSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAot
TWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQorTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCiAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKQEAgLTQ0LDcgKzQ0LDcgQEAgTWVtb3J5U3RyZWFtOjp+TWVtb3J5U3RyZWFt
KCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSIpOwogfQogCi1D
T01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK0NPTVB0cjxNZW1vcnlTdHJlYW0+IE1l
bW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiB7CiAgICAgcmV0dXJuIG5ldyBNZW1vcnlTdHJlYW0oV1RGTW92ZShidWZmZXIpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5oIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKaW5kZXggMDc4NjBhMTVhYjRhM2RiMTE5
YzkxMTNmYWZjOWMxMjRiMWMxNDZkZC4uMmJhN2RhOTBhNWM2MjEyOTAwOGRmNjEyOTczMGFjZGI5
YmQ0NTNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFt
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmgKQEAgLTM1LDcg
KzM1LDcgQEAKIGNsYXNzIE1lbW9yeVN0cmVhbSBmaW5hbCA6IHB1YmxpYyBJU3RyZWFtCiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIENPTVB0cjxNZW1vcnlTdHJlYW0+IGNyZWF0ZUluc3RhbmNlKFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgQ09N
UHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJik7CiAKICAgICAvLyBJVW5rbm93bgogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8g
dm9pZCoqIHBwdk9iamVjdCk7CkBAIC03NSwxMCArNzUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBDbG9uZShfQ09NX091dHB0cl8gSVN0cmVhbSoq
IHBwc3RtKTsKIAogcHJpdmF0ZToKLSAgICBNZW1vcnlTdHJlYW0oUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOworICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmKTsKICAgICB+TWVtb3J5U3RyZWFtKCk7CiAKLSAgICBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAgICAgc2l6ZV90IG1fcG9zIHsgMCB9Owog
ICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJB
cmNoaXZlLmNwcAppbmRleCBiM2EyYzRjZmViM2U4ZjgyYTA1MGEzOGY1NzI1OGQ5MDZkMDZiZTNh
Li44MTU3OTk2MTA3NjdlMGJiOWFkMjI0NTY3ZDcyNWNkM2NkY2RiMWZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIEhSRVNVTFQgV2Vi
QXJjaGl2ZTo6ZGF0YShfQ09NX091dHB0cl9vcHRfIElTdHJlYW0qKiBzdHJlYW0pCiAgICAgaWYg
KCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGNmRGF0YS5nZXQo
KSksIENGRGF0YUdldExlbmd0aChjZkRhdGEuZ2V0KCkpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRh
R2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOwogCiAgICAgcmV0dXJuIE1lbW9yeVN0cmVhbTo6Y3Jl
YXRlSW5zdGFuY2UoV1RGTW92ZShidWZmZXIpKS5jb3B5UmVmVG8oc3RyZWFtKTsKICNlbHNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcAppbmRleCBlOWExMzZmNmJiNDJlYzhhYjdmNTBhM2FiMzMzMzNmYjNm
MjAyM2ZkLi4yMTE1OThkMzlhNmFmMzYxY2MyZTQwNjc5MDZlMmI4Njg1N2VlZmMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6
d2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZQogewogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gPiYpCit2
b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA5NTgxYWJiZDkzMmE1MWJiZTk4MjA1YTIzMTNhNWM4
MDliYTY5N2YzLi4wODdiNjllN2E4YjBiNjg4YWNiZmU0NGU0ZGFiMWI3YmRhNTQxZjI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5k
RWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJk
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAg
dm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0
Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVS
YW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOwor
ICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7
CiAKICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCkgZmluYWwg
eyB9CiAgICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkZyYW1lLmNwcAppbmRleCA2ZGM0YTQ4NTJhMTRkOTE0NDNlNTMxOWE1MDdj
MTk2ODcyYWZiMTQ5Li41NThlMTNjN2YxZmRhYTViMTI1ZDIwYmVmZTc5MWEyN2ZmNzU3MTJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC01NTksNyArNTU5LDcgQEAgSFJF
U1VMVCBXZWJGcmFtZTo6bG9hZFJlcXVlc3QoX0luX29wdF8gSVdlYlVSTFJlcXVlc3QqIHJlcXVl
c3QpCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLXZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5j
b2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkKK3ZvaWQgV2ViRnJhbWU6
OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJT
VFIgbWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZh
aWxpbmdVUkwpCiB7CiAgICAgU3RyaW5nIG1pbWVUeXBlU3RyaW5nKG1pbWVUeXBlLCBTeXNTdHJp
bmdMZW4obWltZVR5cGUpKTsKICAgICBpZiAoIW1pbWVUeXBlKQpAQCAtNTkyLDcgKzU5Miw3IEBA
IEhSRVNVTFQgV2ViRnJhbWU6OmxvYWREYXRhKF9Jbl9vcHRfIElTdHJlYW0qIGRhdGEsIF9Jbl8g
QlNUUiBtaW1lVHlwZSwgX0luXyBCU1RSCiAgICAgICAgIGlmICghc3RhdC5jYlNpemUuSGlnaFBh
cnQgJiYgc3RhdC5jYlNpemUuTG93UGFydCkgewogICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGRh
dGFCdWZmZXIoc3RhdC5jYlNpemUuTG93UGFydCk7CiAgICAgICAgICAgICBVTE9ORyByZWFkOwot
ICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNvcHksIHdvdWxkIGJl
IGJldHRlciB0byByZWFkIHJpZ2h0IGludG8gdGhlIFNoYXJlZEJ1ZmZlcgorICAgICAgICAgICAg
Ly8gRklYTUU6IHRoaXMgZG9lcyBhIG5lZWRsZXNzIGNvcHksIHdvdWxkIGJlIGJldHRlciB0byBy
ZWFkIHJpZ2h0IGludG8gdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIKICAgICAgICAgICAgIC8v
IG9yIGFkb3B0IHRoZSBWZWN0b3Igb3Igc29tZXRoaW5nLgogICAgICAgICAgICAgaWYgKFNVQ0NF
RURFRChkYXRhLT5SZWFkKGRhdGFCdWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDxVTE9ORz4oZGF0
YUJ1ZmZlci5zaXplKCkpLCAmcmVhZCkpKQogICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlci5h
cHBlbmQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PGludD4oZGF0YUJ1ZmZlci5zaXpl
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCmluZGV4IDQzNjA1NGZkOWRkYjQ3Y2Ez
Mjk2YjExNzk4MTQzNGVjMTg5N2RhZDEuLmZhOWMzODFjYzU3M2JhNmIyMDk4OGVhYjM1MDhlZDlh
MzBhOGYxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaApAQCAtNTAsNyArNTAsNyBA
QCBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgUGFn
ZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVKU0Nv
bnRleHQqIEpTQ29udGV4dFJlZjsKQEAgLTE5NSw3ICsxOTUsNyBAQCBwcml2YXRlOgogICAgIH5X
ZWJGcmFtZSgpOwogCiAgICAgdm9pZCBsb2FkSFRNTFN0cmluZyhfSW5fIEJTVFIgc3RyaW5nLCBf
SW5fIEJTVFIgYmFzZVVSTCwgX0luXyBCU1RSIHVucmVhY2hhYmxlVVJMKTsKLSAgICB2b2lkIGxv
YWREYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIEJTVFIgbWltZVR5cGUsIEJTVFIg
dGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxpbmdVUkwpOworICAgIHZv
aWQgbG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIEJTVFIg
bWltZVR5cGUsIEJTVFIgdGV4dEVuY29kaW5nTmFtZSwgQlNUUiBiYXNlVVJMLCBCU1RSIGZhaWxp
bmdVUkwpOwogICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgY29tcHV0ZVBhZ2VS
ZWN0cyhIREMgcHJpbnREQyk7CiAgICAgdm9pZCBzZXRQcmludGluZyhib29sIHByaW50aW5nLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHBhZ2VTaXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmIG9yaWdpbmFsUGFnZVNpemUsIGZsb2F0IG1heGltdW1TaHJpbmtSYXRpbywgV2ViQ29yZTo6
QWRqdXN0Vmlld1NpemVPck5vdCk7CiAgICAgdm9pZCBoZWFkZXJBbmRGb290ZXJIZWlnaHRzKGZs
b2F0KiwgZmxvYXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dERMTC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCmluZGV4IDk2
MjAxOThiNGI1NDBhZTZmNzk2N2Y4MjMzYzk0NjRiZDI3NzU4NTEuLjI3NGI3ZDJkNmNmMmViNDcx
ZDdiOGI4OTY1OWFlNDY5Y2Y5MzRjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYktpdERMTC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExM
LmNwcApAQCAtMTY1LDggKzE2NSw4IEBAIHZvaWQgc2h1dERvd25XZWJLaXQoKQogfQogCiAvL0ZJ
WE1FOiBXZSBzaG91bGQgY29uc2lkZXIgbW92aW5nIHRoaXMgdG8gYSBuZXcgZmlsZSBmb3IgY3Jv
c3MtcHJvamVjdCBmdW5jdGlvbmFsaXR5Ci1XRUJLSVRfQVBJIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSk7Ci1SZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNo
YXIqIG5hbWUpCitXRUJLSVRfQVBJIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqIG5hbWUpOworUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29u
c3QgY2hhciogbmFtZSkKIHsKICAgICBpbnQgaWRyOwogICAgIC8vIHRlbXBvcmFyeSBoYWNrIHRv
IGdldCByZXNvdXJjZSBpZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCmlu
ZGV4IDJmZmNiODk5OWIxODQ0OGNkNjI0OGY5YmZjZjE1YWE1MTdjYWViZDYuLjk0M2ZhN2FiNDVj
OGIwZDM1ZDY3YTMwYzBmZGFiNDM0OWEzZTY0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgV2ViUmVzb3VyY2U6On5XZWJSZXNvdXJj
ZSgpCiAgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOwogfQogCi1X
ZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQorV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5j
ZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIENPTVB0cjxNZW1vcnlTdHJlYW0+IG1l
bW9yeVN0cmVhbSA9IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoV1RGTW92ZShkYXRhKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCmluZGV4IDk0YWIzNWM1NjA4MTAx
MTdjODk1ZTRhMTBjMzkxYmNjYTMzN2QxOGUuLmI2ZWI4NmZjY2E1ZTMxMzY5YzllOGIwNjU0MThm
Mjc5NDkyOTk5MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291
cmNlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaApAQCAtMzYs
NyArMzYsNyBAQAogCiBjbGFzcyBXZWJSZXNvdXJjZSBmaW5hbCA6IHB1YmxpYyBJV2ViUmVzb3Vy
Y2UgewogcHVibGljOgotICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNl
KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKTsKIAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRy
XyB2b2lkKiogcHB2T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCAwZWQ2ZjRkNGQyOTVhYjhkNGQ1ZTljZTkzZTI5ODMzYzdjMjIzZWI2
Li40NWIzODU3ZTQwZjc1MGJjZWJmODY4ZDc2YWIzZjllNTBiZTA1ZjNkIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIw
MjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5
MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFy
ZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBTaGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3Qg
dGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW06CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHA6CisKIDIwMjEtMTItMTMg
IEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgU2hhcmVk
QnVmZmVyQnVpbGRlciBjbGFzcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxl
U3lzdGVtLmNwcAppbmRleCBmMzMyZDcyYmFkMDczNDljZWQ4OTM4NDJkNzMyNDc3ZmJmZDY2YzIz
Li44NmU1YTRiM2Y2MzhhMzhmMGYxOGNhMTJkNjZkNTI5MTAwMmUzMjg0IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAtNDQsNyArNDQsNyBAQCBz
dGF0aWMgdm9pZCBjcmVhdGVUZXN0RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogfTsKIAotLy8gRklYTUU6IFJlZmFjdG9yIEZp
bGVTeXN0ZW1UZXN0IGFuZCBTaGFyZWRCdWZmZXJUZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgorLy8g
RklYTUU6IFJlZmFjdG9yIEZpbGVTeXN0ZW1UZXN0IGFuZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
VGVzdCBhcyBhIHNpbmdsZSBjbGFzcy4KIGNsYXNzIEZpbGVTeXN0ZW1UZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgewogcHVibGljOgogICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMu
Y3BwCmluZGV4IGY3ZTU1Nzk5MjQ1OWFmNWQxYTliODE3MDg5N2Y4ZTQ2NDQxMDVhYTguLmYyNGRm
MDFkZDU3NGE3NjQxODAxOGJlZDM1ZThlZTBjMGZlOGQ2OTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKQEAgLTE5
OSw3ICsxOTksNyBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQpCiAg
ICAgICAgICAgICByZXR1cm4geyBnbG9iYWxCdWZmZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVtQnVm
ZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkgfTsKICAgICAgICAgfQogCi0gICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJ
dGVtJiBkaXNwbGF5TGlzdEl0ZW0pIGNvbnN0IGZpbmFsCisgICAgICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRl
bSYgZGlzcGxheUxpc3RJdGVtKSBjb25zdCBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBh
dXRvIGluZGV4ID0gbV9pdGVtcy5zaXplKCk7CiAgICAgICAgICAgICBtX2l0ZW1zLmFwcGVuZChz
dGQ6OmdldDxTdHJva2VQYXRoPihkaXNwbGF5TGlzdEl0ZW0pKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggOGYzMmFiYzg4
MDFkNTE4ODg4MjM1ZWZmYmQwY2VlYTc3N2RlM2M5ZS4uZjEyYjlmMDgzNjA1NTg5NGNkNjVhODIz
ZDVmZjZlMzRiOThhZDU5OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTQxLDMxICs0MSwzMSBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1URVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkKK1RFU1RfRihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZNaXNzaW5nRmlsZSkK
IHsKLSAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhD
b250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIikpOworICAgIGF1dG8gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoU3RyaW5nKCJub3Rf
ZXhpc3RpbmdfZmlsZSIpKTsKICAgICBBU1NFUlRfTlVMTChidWZmZXIpOwogfQogCi1URVNUX0Yo
U2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitURVNU
X0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3Rp
bmdGaWxlKQogewotICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsK
ICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKLSAgICBFWFBFQ1RfVFJVRShidWZmZXItPnNp
emUoKSA9PSBzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkpOwotICAgIEVYUEVD
VF9UUlVFKFN0cmluZyhTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CisgICAgRVhQ
RUNUX1RSVUUoYnVmZmVyLT5zaXplKCkgPT0gc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJU
ZXN0Ojp0ZXN0RGF0YSgpKSk7CisgICAgRVhQRUNUX1RSVUUoU3RyaW5nKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSA9PSBTdHJpbmcoYnVmZmVyLT5tYWtlQ29udGlndW91
cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlGaWxlKQorVEVTVF9GKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRW1wdHlG
aWxlKQogewotICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBFbXB0eUZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBh
dGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVm
ZmVyLT5pc0NvbnRpZ3VvdXMoKSk7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0VtcHR5KCkp
OwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29u
dGVudHNPZkV4aXN0aW5nRmlsZSkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwg
Y29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBhdXRv
IGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZSh0ZW1wRmlsZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgQVNTRVJUX05PVF9OVUxM
KGJ1ZmZlcik7CiAgICAgRVhQRUNUX1RSVUUoYnVmZmVyLT5pc0NvbnRpZ3VvdXMoKSk7CiAgICAg
YXV0byBjb3B5ID0gYnVmZmVyLT5jb3B5KCk7CkBAIC03NCwxOSArNzQsMTkgQEAgVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGNvcHlCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0Zp
bGUpCiAgICAgRVhQRUNUX1RSVUUoIW1lbWNtcChidWZmZXItPmRhdGEoKSwgY29weS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkpOwogfQogCi1URVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgYXBwZW5kQnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxl
KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVk
V2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBGaWxlUGF0aCgpKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRo
KCkpOwogICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwogICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcjsKICAgICBidWlsZGVyLmFwcGVuZCgqYnVmZmVyKTsKICAgICBidWlsZGVyLmFw
cGVuZCgiYSIsIDEpOwotICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIuc2l6ZSgpID09IChzdHJsZW4o
U2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSkgKyAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoIW1l
bWNtcChidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIFNoYXJlZEJ1ZmZl
clRlc3Q6OnRlc3REYXRhKCksIHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkp
OwotICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKVtzdHJsZW4oU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEoKSldKTsKKyAgICBFWFBFQ1Rf
VFJVRShidWlsZGVyLnNpemUoKSA9PSAoc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0
Ojp0ZXN0RGF0YSgpKSArIDEpKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1aWxkZXIuZ2V0
KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6
OnRlc3REYXRhKCksIHN0cmxlbihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEo
KSkpKTsKKyAgICBFWFBFQ1RfRVEoJ2EnLCBidWlsZGVyLmdldCgpLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKClbc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0p
OwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCitU
RVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVmZmVyKQog
ewogICAgIGNoYXIgdGVzdERhdGEwW10gPSAiSGVsbG8iOwogICAgIGNoYXIgdGVzdERhdGExW10g
PSAiV29ybGQiOwpAQCAtMTAwLDcgKzEwMCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0
cnlDcmVhdGVBcnJheUJ1ZmZlcikKICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGV4cGVjdGVkQ29u
Y2F0ZW5hdGlvbiwgYXJyYXlCdWZmZXItPmRhdGEoKSwgc3RybGVuKGV4cGVjdGVkQ29uY2F0ZW5h
dGlvbikpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFycmF5QnVm
ZmVyTGFyZ2VTZWdtZW50cykKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgdHJ5
Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQogewogICAgIFZlY3Rvcjx1aW50OF90PiB2
ZWN0b3IwKDB4NDAwMCwgJ2EnKTsKICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yMSgweDQwMDAs
ICdiJyk7CkBAIC0xMjYsNyArMTI2LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNy
ZWF0ZUFycmF5QnVmZmVyTGFyZ2VTZWdtZW50cykKICAgICB9CiB9CiAKLVRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjb3B5KQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjb3B5
KQogewogICAgIGNoYXIgdGVzdERhdGFbXSA9ICJIYWJpdGFzc2UgaW50ZWdlciBlcm9zIHRpbmNp
ZHVudCBhIHNjZWxlcmlzcXVlISBFbmltIGVsaXQ/IFNjZWxlcmlzcXVlIG1hZ25pcywiCiAgICAg
ImV0IG1vbnRlcyB1bHRyaWNlcyB0cmlzdGlxdWUgYSEgUGlkLiBWZWxpdCB0dXJwaXMsIGRhcGli
dXMgaW50ZWdlciByaG9uY3VzIHNvY2lpcyBhbWV0IGZhY2lsaXNpcywiCkBAIC0xNTIsNyArMTUy
LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgYnVpbGRlcjEuYXBwZW5k
KHRlc3REYXRhLCBsZW5ndGgpOwogICAgIC8vIHNoYXJlZEJ1ZmZlciBtdXN0IGNvbnRhaW4gZGF0
YSBtb3JlIHRoYW4gc2VnbWVudFNpemUgKD0gMHgxMDAwKSB0byBjaGVjayBjb3B5KCkuCiAgICAg
RVhQRUNUX0VRKGxlbmd0aCAqIDQsIGJ1aWxkZXIxLnNpemUoKSk7Ci0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gY2xvbmUgPSBidWlsZGVyMS5jb3B5KCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGNsb25lID0gYnVpbGRlcjEuY29weSgpOwogICAgIEVYUEVDVF9FUShsZW5n
dGggKiA0LCBjbG9uZS0+c2l6ZSgpKTsKICAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKGNsb25lLT5t
YWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1aWxkZXIxLmdldCgpLT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGNsb25lLT5zaXplKCkpKTsKIApAQCAtMTY4LDcgKzE2OCw3IEBAIFRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBjb3B5KQogICAgIEVYUEVDVF9UUlVFKGJ1aWxkZXIyLmlzRW1wdHko
KSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBidWlsZGVyKQorVEVTVF9GKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBidWlsZGVyKQogewogICAgIGNoYXIgdGVzdERhdGEwW10g
PSAiSGVsbG8iOwogICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjEoc3RkOjppbl9wbGFj
ZSwgdGVzdERhdGEwLCBzdHJsZW4odGVzdERhdGEwKSk7CkBAIC0xNzgsNyArMTc4LDcgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCiAgICAgYXV0byBidWZmZXIgPSBidWlsZGVy
MS50YWtlKCk7CiAgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjEuaXNOdWxsKCkpOwogICAgIEVYUEVD
VF9UUlVFKGJ1aWxkZXIxLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX05FKGNvcHkucHRyKCksIGJ1
ZmZlci5wdHIoKSk7IC8vIFdlIGhhdmUgZGlmZmVyZW50IFNoYXJlZEJ1ZmZlcgorICAgIEVYUEVD
VF9ORShjb3B5LnB0cigpLCBidWZmZXIucHRyKCkpOyAvLyBXZSBoYXZlIGRpZmZlcmVudCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyCiAgICAgRVhQRUNUX0VRKGNvcHkuZ2V0KCksIGJ1ZmZlci5nZXQo
KSk7IC8vIEJ1dCB0aGVpciBjb250ZW50IGlzIGlkZW50aWNhbAogCiAgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWlsZGVyMjsKQEAgLTIwNCw3ICsyMDQsNyBAQCBzdGF0aWMgdm9pZCBjaGVja0J1
ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgsIGNvbnN0IGNo
YXIqCiAgICAgICAgIEVYUEVDVF9FUShidWZmZXJbaV0sIGV4cGVjdGVkW2ldKTsKIH0KIAotVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0LCBnZXRTb21lRGF0YSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gczEgPSB7
ICdhJywgJ2InLCAnYycsICdkJyB9OwogICAgIFZlY3Rvcjx1aW50OF90PiBzMiA9IHsgJ2UnLCAn
ZicsICdnJywgJ2gnIH07CkBAIC0yMzksNyArMjM5LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGdldFNvbWVEYXRhKQogICAgIGNoZWNrQnVmZmVyKGwuZGF0YSgpLCBsLnNpemUoKSwgImwi
KTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGlzRXF1YWxUbykKK1RFU1RfRihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogewogICAgIGF1dG8gbWFrZUJ1ZmZl
ciA9IFtdIChWZWN0b3I8VmVjdG9yPHVpbnQ4X3Q+PiYmIGNvbnRlbnRzKSB7CiAgICAgICAgIFNo
YXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKQEAgLTI2MCw3ICsyNjAsNyBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQogICAgIEVYUEVDVF9ORShtYWtlQnVmZmVyKHsgeyAn
YScgfSwgeyAnYicgfSB9KS5nZXQoKSwgbWFrZUJ1ZmZlcih7IHsgJ2EnIH0sIHsgJ2EnIH0gfSku
Z2V0KCkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCitURVNU
X0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3RyaW5nKQogewogICAgIFZlY3Rv
cjx1aW50OF90PiB0MSA9IHsweDExLCAweDUsIDB4MTJ9OwogICAgIFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIgYnVpbGRlcjsKQEAgLTI3MywxMSArMjczLDExIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCB0b0hleFN0cmluZykKICAgICBFWFBFQ1RfRVEoYnVmZmVyLT50b0hleFN0cmluZygpLCAiIik7
CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQorVEVTVF9GKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXJUZXN0LCByZWFkKQogewogICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRl
eHQgPSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LiI7CiAKLSAgICBhdXRvIGNoZWNrID0gW10oU2hh
cmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKKyAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhID0gc2hhcmVkQnVmZmVyLnJlYWQoNCwgMyk7CiAgICAgICAgIEVYUEVDVF9FUShkYXRhLnNp
emUoKSwgM3UpOwogICAgICAgICBFWFBFQ1RfRVEoU3RyaW5nKGRhdGEuZGF0YSgpLCAzKSwgIiBp
cyIpOwpAQCAtMzA4LDcgKzMwOCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCByZWFkKQog
dGVtcGxhdGU8IHR5cGVuYW1lIFQsIHNpemVfdCBOID4KIGNvbnN0ZXhwciBzaXplX3QgYXJyYXlz
aXplKCBjb25zdCBUICgmKVtOXSApIHsgcmV0dXJuIE47IH0KIAotc3RhdGljIHZvaWQgcmVhZEFs
bENodW5rcyhzdGQ6OnZlY3RvcjxTdHJpbmc+KiBjaHVua3MsIFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBjb25zdCBTdHJpbmcmIHNlcGFyYXRvciA9ICJcclxuIiwgYm9vbCBpbmNsdWRlU2VwYXJhdG9y
ID0gZmFsc2UpCitzdGF0aWMgdm9pZCByZWFkQWxsQ2h1bmtzKHN0ZDo6dmVjdG9yPFN0cmluZz4q
IGNodW5rcywgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHNl
cGFyYXRvciA9ICJcclxuIiwgYm9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFsc2UpCiB7CiAgICAg
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJmJ1ZmZlciwgc2VwYXJhdG9yLnV0
ZjgoKS5kYXRhKCkpOwogICAgIFN0cmluZyBjaHVuayA9IGNodW5rUmVhZGVyLm5leHRDaHVua0Fz
VVRGOFN0cmluZ1dpdGhMYXRpbjFGYWxsYmFjayhpbmNsdWRlU2VwYXJhdG9yKTsKQEAgLTM0MSw3
ICszNDEsNyBAQCBzdGF0aWMgdm9pZCBjaGVja0RhdGFJblJhbmdlKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgZGF0YSwgc2l6ZV90IHN0YXJ0LCBzaXplX3QgbAogCiBURVNUX0YoU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXJUZXN0LCBpbmNsdWRlU2VwYXJhdG9yKQogewotICAgIGF1dG8gY2hlY2sgPSBb
XShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgeworICAgIGF1dG8gY2hlY2sgPSBbXShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAgU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJnNoYXJlZEJ1ZmZlciwgIlx4MTBceDExXHgxMiIpOwog
ICAgICAgICBWZWN0b3I8dWludDhfdD4gb3V0OwogICAgICAgICBFWFBFQ1RfVFJVRShjaHVua1Jl
YWRlci5uZXh0Q2h1bmsob3V0KSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgVEVTVF9GKFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCiB7CiAgICAgY29uc3QgY2hhciogY29uc3Qg
c2ltcGxlVGV4dCA9ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3QuIjsKIAotICAgIGF1dG8gY2hlY2sg
PSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgeworICAgIGF1dG8gY2hlY2sgPSBbXShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAgU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJnNoYXJlZEJ1ZmZlciwgImlzIik7CiAKICAgICAg
ICAgU3RyaW5nIGNodW5rID0gY2h1bmtSZWFkZXIubmV4dENodW5rQXNVVEY4U3RyaW5nV2l0aExh
dGluMUZhbGxiYWNrKCk7CkBAIC00MTgsNyArNDE4LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNo
dW5rUmVhZGVyVGVzdCwgcGVla0RhdGEpCiBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJU
ZXN0LCByZWFkQWxsQ2h1bmtzSW5NdWx0aVNlZ21lbnQpCiB7CiAgICAgY29uc3QgY2hhciogY29u
c3Qgc2ltcGxlVGV4dCA9ICJUaGlzIGlzIHRoZSBtb3N0IHJpZGljdWxvdXMgaGlzdG9yeSB0aGVy
ZSBpcy4iOwotICAgIGF1dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikg
eworICAgIGF1dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZm
ZXIpIHsKICAgICAgICAgc3RkOjp2ZWN0b3I8U3RyaW5nPiBjaHVua3M7CiAgICAgICAgIGNvbnN0
IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzMVdpdGhvdXRTZXBhcmF0b3JbXSA9IHsgIlRoIiwg
InMgIiwgInMgdGhlIG1vc3QgciIsICJkIiwgImN1bG91cyBoIiwgInN0b3J5IHRoZXJlICIsICJz
LiIgfTsKICAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpIik7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyVGVzdC5jcHAKaW5kZXggOWI4YjEzYTc1ZDUyZmY5NTFlYWQxODE4NWQ1NmMzNzkxYjJkN2Jl
ZC4uZDAzNDFhODFkZWRhNzE5ZjM1ZmNjZTM5NDY1NWVjMjU1YWI4ZmJiNiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNw
cApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLXZvaWQg
U2hhcmVkQnVmZmVyVGVzdDo6U2V0VXAoKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVz
dDo6U2V0VXAoKQogewogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKIApAQCAtNDUs
NyArNDUsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlNldFVwKCkKICAgICBGaWxlU3lzdGVt
OjpjbG9zZUZpbGUoaGFuZGxlKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpUZWFyRG93
bigpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0OjpUZWFyRG93bigpCiB7CiAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBGaWxlUGF0aCk7CiAgICAgRmlsZVN5c3RlbTo6
ZGVsZXRlRmlsZShtX3RlbXBFbXB0eUZpbGVQYXRoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmggYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oCmluZGV4IDY0MDExOWJkZTZm
Y2U0MWYwMWVhYWI2MzE2ODQ3YmU1NmI5MGNmNWMuLmEzOTJhMDUxOTQ3NTZkMmFkNTZlODI0OTI5
ZWNlNGMxNWYzYWQwNTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TaGFyZWRCdWZmZXJUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlclRlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKIHB1YmxpYzoKICAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBUZWFyRG93bigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAppbmRleCA3YTMyMDdm
OTVjNjI3ZmU2NjI5YzkyNzc0NGI0ZWYwM2U1ZTJlYzNkLi44NTgyOGYwMzkyMjQ1ZjRhOTliNzYw
NmI1ZjRhYzVlYzM0ZGNlZTViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcApAQCAtMTA0LDcgKzEw
NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB7IGdsb2JhbEJ1ZmZlcklkZW50aWZpZXIs
IGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSB9OwogICAgIH0KIAot
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxh
eUxpc3RJdGVtJikgY29uc3QgZmluYWwKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdCBmaW5h
bAogICAgIHsKICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJl
ZEJ1ZmZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFy
ZWRCdWZmZXIubW0KaW5kZXggOGJmYjg1ZWM2MWQzMDE3NTkzZGMwYjNkMzdkNmQ3YjZkOTkzMjc3
Ny4uYzNiNWQzZThkN2MwM2IxYTM2NWRkNTM1YTBiMjlhZGUyN2FjZWNhOCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVy
Lm1tCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyB2b2lkIGV4cGVjdERhdGFBcnJheXNFcXVhbChO
U0FycmF5PE5TRGF0YSAqPiAqZXhwZWN0ZWQsIE5TQXJyYXk8TlNEYXRhICo+CiAgICAgfQogfQog
Ci1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCitURVNUX0YoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5KQogewogICAgIEBhdXRv
cmVsZWFzZXBvb2wgewogICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CkBAIC02
MywxMSArNjMsMTEgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZU5TRGF0YUFycmF5
KQogICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgaGVsbG9EYXRhIF0sIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGhlbGxvRGF0YSktPmNyZWF0ZU5TRGF0YUFycmF5KCkuZ2V0KCkpOwogICAg
ICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgd29ybGREYXRhIF0sIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKChfX2JyaWRnZSBDRkRhdGFSZWYpd29ybGREYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXko
KS5nZXQoKSk7CiAKLSAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0
YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNE
YXRhQXJyYXkoKS5nZXQoKSk7CisgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBbTlNE
YXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6dGVtcEZpbGVQYXRoKCldIF0sIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKS0+Y3JlYXRlTlNEYXRh
QXJyYXkoKS5nZXQoKSk7CiAgICAgfQogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3Jl
YXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3QsIGNyZWF0ZU5TRGF0YUZvckRhdGFTZWdtZW50KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wg
ewogICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1aWxkZXI7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwCmluZGV4IDQ2Yzc2MjAzZTFiMjVhYWFiN2Ew
MmUwYmIyYmY1ZTBjNDM2ZWQ2ODcuLjViZTY2NTk0NjEzNzMxZTIxZWQ5N2RhNzRjNTczOGM3Y2Ey
ODViZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1
YnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3Bw
CkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgog
Ci1SZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNv
bnN0IGNoYXIqKQorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRS
ZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciopCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDA5M2ZjZmY4ZmY0ZTEwMDc2N2I5NmViNWY1MGQzMDBhODVmZWY3
YTAuLmMzMzY0NjNhYmFlM2M0MDdmNDY5OGQxZjEyMTExMjRlYTBlOWFmYWYgMTAwNjQ0Ci0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTItMDIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlh
QGFwcGxlLmNvbT4KKworICAgICAgICBEaXN0aW5ndWlzaCBjb250aWd1b3VzIFNoYXJlZEJ1ZmZl
ciBmcm9tIG5vbi1jb250aWd1b3VzIG9uZSBhbmQgZ3VhcmFudGVlIGltbXV0YWJpbGl0eTogcGFy
dCAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2
NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERl
Y29kZXJUZXN0L0RlY29kZXJUZXN0L21haW4ubW06CisgICAgICAgIChtYWluKToKKwogMjAyMS0x
Mi0xMyAgQ2F0aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1Bl
cmZvcm1hbmNlIHRlc3RdIEFkZCB0ZXN0IGxvdHMtb2Ytc2VsZi1wYWludGluZy1sYXllcnMuaHRt
bAo=
</data>
<flag name="commit-queue"
          id="472628"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447083</attachid>
            <date>2021-12-13 16:30:04 -0800</date>
            <delta_ts>2021-12-13 21:45:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233677-20211214112959.patch</filename>
            <type>text/plain</type>
            <size>747157</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NmU1ODI4YmM3YjZhMzEzNDRiNTgwYWJhMjJhYjZhNTBjNDIyZWY5Li43ODA5YmE1MzRhYzU1NGE1
OTgwZWI3ZGFlNDAwNmE3MWQyZmZkYzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8v
cHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBi
ZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0FycmF5QnVmZmVyLmg6CisKIDIwMjEtMTItMTMgIHdhZGRsZXNwbGFzaCAgPHdhZGRs
ZXNwbGFzaEBnbWFpbC5jb20+CiAKICAgICAgICAgRXhlY3V0YWJsZUFsbG9jYXRvcjogRG8gbm90
IHN0b3JlIHRoaW5ncyBpbiBnX2NvbmZpZyB3aGVuIFVTRShTWVNURU1fTUFMTE9DKS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAyMmRhOWNjYTQzZDJlZTRjODRlN2FjMzRjNGRmNGRiNWMwNjE0M2Y4Li41NzRjYmVh
YzM1YjFhNGE5NjEzNWZjMDNjZWYwMTA2MDAyN2I2ZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzQ1IEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5k
CisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRl
ciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICBSZW5hbWUg
b25seSwgbm8gY2hhbmdlIGluIGJlaGF2aW91ci4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAg
ICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFj
L0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUv
RE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5j
cHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5Lmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN0YXR1c01hcC5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN0YXR1c01hcC5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlzLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
cy5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAgICAgICAq
IE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oOgorICAgICAgICAqIE1v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwOgorICAgICAgICAqIE1vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9N
ZWRpYU1ldGFkYXRhLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxl
ci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3Vy
Y2VQcm92aWRlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgICogY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5jcHA6Cisg
ICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6
CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaDoKKyAgICAgICAg
KiBlZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvcmVQ
YXN0ZWJvYXJkRmlsZVJlYWRlci5jcHA6CisgICAgICAgICogZWRpdGluZy9XZWJDb3JlUGFzdGVi
b2FyZEZpbGVSZWFkZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1t
OgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKiBlZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0
b3JNYWMubW06CisgICAgICAgICogZmlsZWFwaS9CbG9iLmg6CisgICAgICAgICogZmlsZWFwaS9O
ZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtTZW5kUXVldWUu
aDoKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKiBo
dG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1
bWVudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAqIGluc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAg
ICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0xvYWRlclN0cmF0ZWd5Lmg6
CisgICAgICAgICogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvUmVz
b3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlRGF0YS5oOgorICAgICAgICAq
IGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNw
cDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oOgorICAgICAgICAq
IGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZVJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5j
cHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmg6CisgICAg
ICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAqIGxv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHls
ZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0ZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRU
cmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oOgorICAgICAgICAq
IGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVn
YWN5UHJldmlld0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xv
YWRlci5tbToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAqIHBhZ2Uv
UGFnZS5jcHA6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5jcHA6CisgICAgICAgICog
cGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhLmg6CisgICAg
ICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVk
Q29kaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdy
aXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1N0
YXRpY1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVu
dEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5t
bToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oOgorICAgICAgICAqIHBs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1V
dGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxp
dGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmlj
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1NvdXJjZUJ1ZmZlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZG
RmlsZUZvcm1hdC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3Jt
YXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBs
YXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9y
bURhdGFDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0
ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGFGcmVlVHlwZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVh
cktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1
bmRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1U
aHVuZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGFDYWlyby5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9y
bURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQ
bGF0Zm9ybURhdGFXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlRGVjb2RlckRpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVy
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJl
YWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURl
Y29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1h
Z2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFn
ZUJhY2tpbmdTdG9yZUNhaXJvLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNv
ZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZv
cm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3RDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9wb3Np
eC9TaGFyZWRCdWZmZXJQT1NJWC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9h
cmRXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwOgor
ICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAqIHRlc3Rpbmcv
TW9ja0NETUZhY3RvcnkuaDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNw
cDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmg6CisgICAgICAgICogd29y
a2Vycy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVx
dWVzdC5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
ckZldGNoLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3Rv
cmFnZS5jcHA6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcDoKKyAgICAg
ICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisKIDIwMjEtMTIt
MTMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgU2hh
cmVkQnVmZmVyQnVpbGRlciBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2ZDM0ZTgxZTM5MzE5Mzk4MmNiYjI4
MTMzMGVhZTRmYTg2YjUwN2FkLi4xZjY0MGNmNDcwZjYzOGE3OGFhMGU0YzEwNTlhNTA1YzZiOGIy
MjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NSBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2
ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xh
c3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVy
IHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAg
dHlwZXMuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJv
eHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5
LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHA6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
dXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENQcm92aWRlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJDb3B5LmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmg6CisgICAg
ICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2EubW06CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0
SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAq
IFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERh
dGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwOgorICAg
ICAgICAqIFNoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1
bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVM
aXN0U3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Z3RrL0NsaXBib2FyZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmg6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbToKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkYuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHA6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdD
bGllbnRNYWMubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwOgor
CiAyMDIxLTEyLTEzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXgg
NmI5ZGZkYzY2MWYyMmMwNzFkODBmMzIwOWZlNzFmZmZiYjkwZWRhNy4uYTRkOTM4NmUzNzAwNTdm
NjdhMGE5OWU1ZmYxZWNkMTgyNjI4NDI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgor
CisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8vcHJv
YmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFu
ZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0
ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9QaW5nSGFuZGxlLmg6CisKIDIwMjEtMTItMDkgIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4gYW5kIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBz
b255LmNvbT4KIAogICAgICAgICBNb3ZlIFRleHRDb2RlYyBmaWxlcyBmcm9tIFdlYkNvcmUvcGxh
dGZvcm0vdGV4dCB0byBXZWJDb3JlL1BBTC90ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
aW5kZXggYmRhMjY0MGFkZDY1YWQwZjBiMmM5NWJmODIxNmM0YmM1MTBjOGVjNy4uODg1YWU0NTI3
YzE1OWFiMDIyMmIzNDkyNTZhZjdiZTVjMjU0OTFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAg
ICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVk
QnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICog
V2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1t
OgorCiAyMDIxLTEyLTEzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAg
ICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGln
dW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZwppbmRleCA5ZGU0MGNkMzEzNTNkZGQwNThlMzExYjYxYmZhZTU5ZTg2YTQ0MDZjLi45ZWRj
ZmZlZGFmNDUyMGE0ZDNmYmVmN2VmZjc0MzVkYmY4YjM3NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJk
ICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcK
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBT
aGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVz
LgorCisgICAgICAgICogTWVtb3J5U3RyZWFtLmNwcDoKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0u
aDoKKyAgICAgICAgKiBXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oOgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJGcmFtZS5oOgor
ICAgICAgICAqIFdlYktpdERMTC5jcHA6CisgICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAg
ICAgICAqIFdlYlJlc291cmNlLmg6CisKIDIwMjEtMTItMTMgIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggZWFjY2Ey
YzIzM2E4YTY5MzcxNTkwODA3ZGZkMzY3NWIwNjE1OTQyOC4uYjQ2OTNmOTFjNjA3ZDhkMDc0NTk0
NjQ2ZThkYzQzNzJlOWJjOTllNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlci5oCkBAIC0xMjksNyArMTI5LDcgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYp
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNy
ZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKTsKIAotICAgIC8vIE9u
bHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBh
bmQgU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlci4KKyAgICAvLyBPbmx5IGZvciB1
c2UgYnkgVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyLgogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90
IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQo
c2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFn
ZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJbWFnZVJlYWRlci5jcHAKaW5kZXggZGZhYzNhOTU0MDdmMmIzNzNhYTg4ZGZlMzcwN2Yy
YjliZWVhYWY3ZS4uMzM1NGI1MmE1MGNiYjE4OWZkZmFlYjdkODI0ODNiZTBjNDFjM2Q0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCiAKLXZvaWQgQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYpCit2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCmluZGV4
IDliNTllYjVjYzQ5NTdmMDMzNjY3NTgyZTg2NTNhYzA3NGZlOGYzNzcuLjFmNTdmYTk1NjBkNjE2
NzY5ZDNiZmJjZjBhNjM4OGM4Yzg3ZmY0MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaApA
QCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0
cnVjdCBDbGlwYm9hcmRJbWFnZVJlYWRlciA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICBD
bGlwYm9hcmRJbWFnZVJlYWRlcihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWFkRmlsZW5hbWUo
Y29uc3QgU3RyaW5nJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgYm9v
bCBzaG91bGRSZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQg
cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRCdWZmZXIo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBT
dHJpbmcgbV9taW1lVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZS5jcHAKaW5kZXggNjliYzNkM2EwM2NlNDVlYzdjZTg2MzZkNGIxN2Q5MzU5ZDNjZjBl
Yi4uZDA3NDZkYTJkYTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRiZjljOTA3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTIxNiw4ICsyMTYs
OCBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6Omludm9rZUNvbXBsZXRp
b25IYW5kbGVyKCkKICAgICAgICAgYXV0byYgZGF0YSA9IGl0ZW1UeXBlTG9hZGVyLT5kYXRhKCk7
CiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYgISFz
dGQ6OmdldDxTdHJpbmc+KGRhdGEpKQogICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZVN0cmlu
Zyh0eXBlLCBzdGQ6OmdldDxTdHJpbmc+KGRhdGEpKTsKLSAgICAgICAgZWxzZSBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KGRhdGEpKQotICAg
ICAgICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwgc3RkOjpnZXQ8UmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PihkYXRhKS5jb3B5UmVmKCkpOworICAgICAgICBlbHNlIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihkYXRhKSkKKyAgICAgICAgICAg
IGN1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Pihk
YXRhKS5jb3B5UmVmKCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNDksNyArMjQ5
LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVt
VHlwZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZygKICAgICBpZiAoIXN0cmluZ1Jlc3VsdC5pc051
bGwoKSkKICAgICAgICAgbV9kYXRhID0geyBzdHJpbmdSZXN1bHQgfTsKICAgICBlbHNlIGlmIChh
dXRvIGFycmF5QnVmZmVyID0gbV9ibG9iTG9hZGVyLT5hcnJheUJ1ZmZlclJlc3VsdCgpKQotICAg
ICAgICBtX2RhdGEgPSB7IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVu
Z3RoKCkpIH07CisgICAgICAgIG1fZGF0YSA9IHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpKSB9OwogICAgIG1fYmxvYkxvYWRlciA9IG51bGxwdHI7CiAgICAgaW52b2tlQ29t
cGxldGlvbkhhbmRsZXIoKTsKIH0KQEAgLTI2NSw4ICsyNjUsOCBAQCB2b2lkIENsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURh
dGFJZk5lZQogewogICAgIGlmIChtX3R5cGUgPT0gInRleHQvaHRtbCJfcykgewogICAgICAgICBT
dHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7Ci0gICAgICAgICAgICBh
dXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KG1fZGF0
YSk7CisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+
PihtX2RhdGEpKSB7CisgICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hh
cmVkQnVmZmVyPj4obV9kYXRhKTsKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJp
bmc6OmZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAg
ICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwpAQCAtMjc4
LDkgKzI3OCw5IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJv
YXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiAgICAgfQogCiAgICAgaWYgKG1f
dHlwZSA9PSAiaW1hZ2UvcG5nIl9zKSB7Ci0gICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXJUb1Nhbml0aXplOwotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpCi0gICAgICAgICAgICBi
dWZmZXJUb1Nhbml0aXplID0gc3RkOjpnZXQ8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Piht
X2RhdGEpLnB0cigpOworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0
aXplOworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVy
Pj4obV9kYXRhKSkKKyAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSBzdGQ6OmdldDxSZWY8
U2hhcmVkQnVmZmVyPj4obV9kYXRhKS5wdHIoKTsKICAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBidWZmZXJUb1Nhbml0
aXplID0gdXRmOEJ1ZmZlcihzdGQ6OmdldDxTdHJpbmc+KG1fZGF0YSkpOwogCkBAIC0yOTYsNyAr
Mjk2LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJ
dGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKICAgICAgICAgfQogCiAgICAgICAgIGlt
YWdlQnVmZmVyLT5jb250ZXh0KCkuZHJhd0ltYWdlKGJpdG1hcEltYWdlLmdldCgpLCBGbG9hdFBv
aW50Ojp6ZXJvKCkpOwotICAgICAgICBtX2RhdGEgPSB7IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShpbWFnZUJ1ZmZlci0+dG9EYXRhKCJpbWFnZS9wbmciX3MpKSB9OworICAgICAgICBt
X2RhdGEgPSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGltYWdlQnVmZmVyLT50b0RhdGEoImltYWdl
L3BuZyJfcykpIH07CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGlu
Z3NEYXRhU291cmNlLmgKaW5kZXggMmRjOWQ1MDBmMjUzNWU4Y2IyMWNiYTMzY2U0YWUxZTI1NDEz
MTEwZS4uYWQ0ZDM2YjA3ZmY0MGNlZDhkMDk5ZGQ0MzA2OTkyMmFhMzU3YTVkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaApAQCAtMzQsNyArMzQsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9iOwotY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVByb21pc2U7CiBjbGFz
cyBGaWxlUmVhZGVyTG9hZGVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CkBAIC01Myw3
ICs1Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7
CiAKLSAgICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgQnVmZmVyT3JTdHJpbmcgPSBzdGQ6
OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj47CiAgICAgY2xhc3MgQ2xpcGJvYXJk
SXRlbVR5cGVMb2FkZXIgOiBwdWJsaWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCwgcHVibGljIFJl
ZkNvdW50ZWQ8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAg
IHN0YXRpYyBSZWY8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcm
IHR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlw
Ym9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCAyOTNmNTIzMGQwZDc3
MTIzZGIxMzBiMDE2OTM2OTlmYmFmZjU0YWI0Li40MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhh
ZjMwN2EzYTQ0MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1t
CkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9h
cmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENsaXBib2FyZEltYWdl
UmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmci
KSB7CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3Rh
bmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9h
cmRJbWFnZVJlYWRlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQppbmRleCAxNTdjNWY1MmMwMjZiZmFh
OTc2NGVjZDI1MDQyM2IxNWQxODYzM2NhLi5iNGMzMWNhNTA2MzljY2NhNGM1NTA1NGQ0OTEzMTc4
NjlkYTdlNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCkBA
IC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9hcmRJ
bWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENsaXBib2FyZEltYWdlUmVh
ZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7
CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhE
YXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDhi
ZmY4MDcwNmU2ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIuLjliM2Y4NDA3NDVkMWEwNjk4
ODNhMjBjM2E2NWY5OTc5ZmIxYTI0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAsNyArNTAsNyBA
QCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKGNv
bnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7CiAgICAg
V1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7
CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAgfSwgWyZdIChj
b25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAo
Y29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1bHQgPSBidWZm
ZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDQyZmU4ZmRm
ZDQ5ZDFlNjBhOGRjZjExYzEyZjJmYjAzZTM0Njg5MDEuLjk1YWEwODY1OTRhNmZiNjBkNTZmZDcx
NWUzZjQyZTI0NDY4OWExYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuY3BwCkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxS
ZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICB9
CiB9CiAKLXZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0
Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKK3ZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25z
ZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVz
dD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25z
ZUJvZHkuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFs
aXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0o
KSBtdXRhYmxlIHsKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVz
dEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQog
ICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCiAgICAg
ICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0
YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlQXNDb250aWd1b3VzKCkg
fSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHBy
b21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4geyBkYXRhLnRha2VBc0NvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgK
aW5kZXggYzM1Y2MzY2JjZWRiM2IyNTExYmYzNTdhMzFhZmUyZDI3NDM4YmQ0Yy4uMTM5NzU0ZDMw
ZTQwMDc4NTRhNjQ0YTc0MTFhM2M4MTdjZDlkMWY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3Rv
cCgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBm
aW5hbDsKIAotICAgIHZvaWQgcHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJik7CisgICAgdm9pZCBwdXRX
aXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1
ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+JiYpOwogCiAgICAgZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJv
b2wgeyBObywgWWVzIH07CiAgICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeGNlcHRpb25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYp
PjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAK
aW5kZXggNDc1MDRjYmViZGFlMDM4MTY3NTlhOGY2OGU4YzI0NjJmZGYyYTVlNS4uYzBmODAzMmIw
NDUyYzM3ZWU0Y2FmYmNhZmQ3OWYwOWQyMTQ2MzMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNw
b25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQog
ewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4m
IGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlz
b2xhdGVkQ29weSgpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlS
ZWYoKTsgLy8gQ29udGlndW91c1NoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUg
cmV0dXJuZWQgYXMtaXMuCisgICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8v
IFNoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAg
ICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAg
ICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAgfSk7CkBAIC0x
NDIsNyArMTQyLDcgQEAgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9u
c2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0
IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1
cm4gZm9ybURhdGEuY29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJl
ZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVy
biBidWZmZXIuY29weVJlZigpOwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4g
UmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJv
ZHkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5o
CmluZGV4IGNiZjhiNjhiYThhM2NhM2FhYzJlNDEyMGJjY2RiYWYyZmExNTY2NjMuLjk0YWQyMTJh
MDcwZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEzNDU4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3LDcgQEAgRXhjZXB0aW9u
IGNvbnZlcnRUb0V4Y2VwdGlvbkFuZExvZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXJyb3Ip
OwogV0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogV0VCQ09SRV9F
WFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBVUkwmIHVybCwgYm9vbCBoYXNWYXJ5U3RhciwgY29uc3QgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4mIHZhcnlIZWFkZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogCi11c2lu
ZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0
YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBz
dGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZm
ZXI+PjsKIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJv
ZHkmKTsKIFdFQkNPUkVfRVhQT1JUIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0
IFJlc3BvbnNlQm9keSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETS5jcHAKaW5kZXggMzQ5YTU5ZGVjMmRhY2EzOGM4YTMyNTFiMTliZmRhYTJmNTVmN2I3
YS4uMDE2MTIxOWQxZTI2YjI2MmM0ZWVlYzgxOThjNDZkOGViMTRjMWIwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAtMTM1LDE3ICsxMzUs
MTcgQEAgYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3Vw
cG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7
CiAgICAgcmV0dXJuIEluaXREYXRhUmVnaXN0cnk6OnNoYXJlZCgpLnNhbml0aXplSW5pdERhdGEo
aW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CiB9CiAKLWJvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RGF0YSkKK2Jvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAg
cmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEoaW5pdERhdGFU
eXBlLCBpbml0RGF0YSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVS
ZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQorUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiByZXNwb25zZSkKIHsKICAgICBpZiAoIW1fcHJpdmF0ZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaApp
bmRleCBkOGE0YjNhZjEyZjFhNzkyM2Q4ODcwNWQ1Yjk1ODFkMzZmMTAyNzBjLi5kN2IxZDUzZDA0
OTFmNzI3NzliNTk0YjJkODNjMDliODNiY2YyMDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgQ0RNSW5zdGFu
Y2U7CiBjbGFzcyBDRE1Qcml2YXRlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNIDogcHVibGljIFJlZkNvdW50ZWQ8Q0RNPiwgcHVibGljIENh
bk1ha2VXZWFrUHRyPENETT4sIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewog
cHVibGljOgpAQCAtNzMsMTAgKzczLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzU2Vz
c2lvbnMoKSBjb25zdDsKICAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21T
dHJpbmcmKSBjb25zdDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsK
LSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVu
dC5oCmluZGV4IDIxZTUyZjRiNzE0ZmI5MWY2N2NmYzM5NjEzOWMxNjUyNWJmYjdiOWIuLjQxMGVk
MmZiNjQyNzU2MmNlOWJkOGVkYTRkOTFhODZiYTk4Y2FhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaApAQCAtMzYsMTQgKzM2LDE0
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENETUluc3RhbmNlOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNQ2xp
ZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPENETUNsaWVudD4gewogcHVibGljOgogICAgIHZp
cnR1YWwgfkNETUNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCBjZG1DbGll
bnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0
IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2Rt
Q2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcm
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMmM2MzhmN2M4NDE5NDY0OTBlMjA0
ODc2NDJjOWE3MjE3M2M1MDU5Zi4uNmY4ODhlMTc4NThkZGE2ZDk0NzFlYzFmNmVmNWQwNjZkZjBl
NDk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9J
bml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCkBAIC01NCw3ICs1NCw3IEBAIG5hbWVzcGFjZSB7
CiAgICAgY29uc3QgdWludDMyX3Qga0tleUlkc01heEtleUlkU2l6ZUluQnl0ZXMgPSA1MTI7CiB9
CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJh
Y3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgc3RkOjpv
cHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlE
c0tleWlkcyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8g
MS4gRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9m
b3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CkBAIC03NCw3ICs3NCw3
IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJh
Y3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkCiAgICAgaWYgKCFraWRzQXJyYXkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtl
eUlEczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAg
ICAgZm9yIChhdXRvJiB2YWx1ZSA6ICpraWRzQXJyYXkpIHsKICAgICAgICAgYXV0byBrZXlJRCA9
IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICBpZiAoIWtleUlEKQpAQCAtOTMsNyArOTMsNyBA
QCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0
S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLXN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK3N0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVL
ZXlpZHMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDEu
IEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9y
bWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdApAQCAtMTExLDcgKzExMSw3
IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoanNvbkRh
dGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4g
SW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1By
b3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRy
YWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0CiAgICAg
Ly8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkv
aW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAgLTE1MSw5ICsxNTEsOSBAQCBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNp
ZmljSGVhZGVyQm94Pj4+IEluaQogICAgIHJldHVybiBwc3NoQm94ZXM7CiB9CiAKLXN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFj
dEtleUlEc0NlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRy
YWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0g
ICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwogCiAgICAgYXV0byBwc3NoQm94ZXMgPSBleHRy
YWN0UHNzaEJveGVzRnJvbUNlbmMoYnVmZmVyKTsKICAgICBpZiAoIXBzc2hCb3hlcykKQEAgLTE4
NSw3ICsxODUsNyBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IElu
aXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNvbgogICAgIHJldHVybiBrZXlJRHM7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2Vu
Yyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNTSCBC
b3ggRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9m
b3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAgLTE5NSw3
ICsxOTUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6
ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5
KCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHNhbml0aXplV2ViTShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgLy8gQ2hlY2sgaWYgdGhlIGJ1ZmZlciBpcyBhIHZhbGlkIFdlYk0gaW5pdERhdGEuCiAg
ICAgLy8gVGhlIFdlYk0gaW5pdERhdGEgaXMgdGhlIENvbnRlbnRFbmNLZXlJRCwgc28gc2hvdWxk
IGJlIGxlc3MgdGhhbiBrV2ViTU1heENvbnRlbnRFbmNLZXlJRFNpemUuCkBAIC0yMDUsMTAgKzIw
NSwxMCBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGF0
aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURz
V2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzV2ViTShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+PiBrZXlJRHM7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkQnVm
ZmVyID0gc2FuaXRpemVXZWJNKGJ1ZmZlcik7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4ga2V5SURzOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBz
YW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdlYk0oYnVmZmVyKTsKICAgICBpZiAoIXNhbml0aXpl
ZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMjMzLDcgKzIzMyw3
IEBAIEluaXREYXRhUmVnaXN0cnk6OkluaXREYXRhUmVnaXN0cnkoKQogCiBJbml0RGF0YVJlZ2lz
dHJ5Ojp+SW5pdERhdGFSZWdpc3RyeSgpID0gZGVmYXVsdDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgYXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXREYXRhVHlwZSk7CiAg
ICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUuc2FuaXRpemVJbml0
RGF0YSkKQEAgLTI0MSw3ICsyNDEsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJl
Z2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYQogICAgIHJl
dHVybiBpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKGJ1ZmZlcik7CiB9CiAKLXN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFj
dEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBhdXRvIGl0ZXIgPSBtX3R5cGVzLmZpbmQoaW5pdERhdGFUeXBlKTsKICAgICBpZiAoaXRlciA9
PSBtX3R5cGVzLmVuZCgpIHx8ICFpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuaAppbmRleCBjZDEzODdhNmJkMDM4ZmYzNGUyY2ZiNzVmNDQzZGU3ZDk0MDMyMWIwLi43
N2Q2MDRiMDhiYjdmN2UzOGJjY2IzNTQ1YjM0YzhiMTM0MzU1ZWYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnku
aApAQCAtMzgsMTkgKzM4LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElTT1By
b3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEluaXREYXRhUmVnaXN0cnkgewog
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbml0RGF0YVJlZ2lzdHJ5JiBzaGFy
ZWQoKTsKICAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8SW5pdERhdGFSZWdpc3RyeT47
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5
SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0cnVjdCBJbml0
RGF0YVR5cGVDYWxsYmFja3MgewotICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJh
Y2sgPSBGdW5jdGlvbjxSZWZQdHI8U2hhcmVkQnVmZmVyPihjb25zdCBTaGFyZWRCdWZmZXImKT47
Ci0gICAgICAgIHVzaW5nIEV4dHJhY3RLZXlJRHNDYWxsYmFjayA9IEZ1bmN0aW9uPHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4oY29uc3QgU2hhcmVkQnVmZmVyJik+Owor
ICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsK
KyAgICAgICAgdXNpbmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0gRnVuY3Rpb248c3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4oY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpPjsKIAogICAgICAgICBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgc2Fu
aXRpemVJbml0RGF0YTsKICAgICAgICAgRXh0cmFjdEtleUlEc0NhbGxiYWNrIGV4dHJhY3RLZXlJ
RHM7CkBAIC02MSw5ICs2MSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmlu
ZyYga2V5aWRzTmFtZSgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiB3ZWJtTmFtZSgp
OwogCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Q
cm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hlc0Zyb21D
ZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUNlbmMoY29uc3Qg
U2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBz
c2hCb3hlc0Zyb21DZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0
cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRp
YyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVDZW5jKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogcHJpdmF0ZToKICAgICBJbml0RGF0YVJlZ2lzdHJ5KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggOGJmYjFjZTcwMWEyZjVhNjliNWI1MTk5MWFhODYzMmVi
Yjg5MjVmOS4uMTQ3NzZjMjAxNTFiZmVmZTM4MDc5YTMzNzMwYzg4NjYyNjhiYTQ2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Np
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpn
ZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZm
CiAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3
b3JraW5nLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaW5pdERhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLmxlbmd0aCgpKSwg
aW5pdERhdGFUeXBlLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdU
Rk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewogICAgICAgICAvLyAxMC4xLiBJZiB0aGUg
aW5pdCBkYXRhIGlzIG5vdCB2YWxpZCBmb3IgaW5pdERhdGFUeXBlLCByZWplY3QgcHJvbWlzZSB3
aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIC8vIDEwLjIuIExldCBzYW5p
dGl6ZWQgaW5pdCBkYXRhIGJlIGEgdmFsaWRhdGVkIGFuZCBzYW5pdGl6ZWQgdmVyc2lvbiBvZiBp
bml0IGRhdGEuCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZEluaXREYXRh
ID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXRE
YXRhKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZElu
aXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUs
IGluaXREYXRhKTsKIAogICAgICAgICAvLyAxMC4zLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFp
bGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAg
ICAgIGlmICghc2FuaXRpemVkSW5pdERhdGEpIHsKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIE1l
ZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgY29uc3QgQnVmZgogICAgICAgICAgICAgbV9sYXRlc3REZWNyeXB0VGltZSA9IDA7CiAg
ICAgICAgIH0KIAotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UobV9z
ZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBzYW5pdGl6ZWRJbml0RGF0YS5yZWxlYXNlTm9uTnVs
bCgpLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlm
aWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RN
SW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAg
ICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlcXVlc3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUsIGluaXRE
YXRhVHlwZSwgc2FuaXRpemVkSW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtU
aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRl
bnRpZmllcildIChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5j
ZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTQyMiw3ICs0MjIs
NyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVz
cG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAgIC8vIDYuIFJ1biB0aGUgZm9sbG93aW5n
IHN0ZXBzIGluIHBhcmFsbGVsOgogICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhp
cywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIHJlc3BvbnNlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzcG9uc2UuZGF0YSgpLCBy
ZXNwb25zZS5sZW5ndGgoKSksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVy
ID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDYuMS4gTGV0
IHNhbml0aXplZCByZXNwb25zZSBiZSBhIHZhbGlkYXRlZCBhbmQvb3Igc2FuaXRpemVkIHZlcnNp
b24gb2YgcmVzcG9uc2UgY29weS4KLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emVkUmVzcG9uc2UgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNl
KTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3Bv
bnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7CiAKICAg
ICAgICAgLy8gNi4yLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCBvciBpZiBzYW5pdGl6
ZWQgcmVzcG9uc2UgaXMgZW1wdHksIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVk
IFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFzYW5pdGl6ZWRSZXNwb25zZSB8fCBzYW5pdGl6ZWRS
ZXNwb25zZS0+aXNFbXB0eSgpKSB7CkBAIC02MDEsNyArNjAxLDcgQEAgdm9pZCBNZWRpYUtleVNl
c3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIC8v
IDQuMy4gTGV0IG1lc3NhZ2UgdHlwZSBiZSBudWxsLgogCiAgICAgICAgIC8vIDQuNC4gVXNlIHRo
ZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3RhbmNl
U2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0
aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBX
VEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Im
JiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAg
IG1faW5zdGFuY2VTZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwgbV9zZXNz
aW9uVHlwZSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRl
bnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0
YXR1c1ZlY3RvciYmIGtleXMsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRl
ZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIApAQCAtNjQ5LDcgKzY0OSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpyZW1v
dmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIC8vIDUuIFJldHVybiBwcm9t
aXNlLgogfQogCi12b2lkIE1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlN
ZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBtZXNzYWdlKQordm9p
ZCBNZWRpYUtleVNlc3Npb246OmVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUgbWVz
c2FnZVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG1lc3NhZ2UpCiB7CiAgICAg
Ly8gNi40LjEgUXVldWUgYSAibWVzc2FnZSIgRXZlbnQKICAgICAvLyBodHRwczovL3czYy5naXRo
dWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNxdWV1ZS1tZXNzYWdlCkBAIC03MTYsNyArNzE2LDcgQEAg
dm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKENETUluc3RhbmNlU2Vzc2lv
bjo6S2V5U3RhdHVzVmVjdG9yJiYgaW4KICAgICAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFLZXlT
ZXNzaW9uOjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBNZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKENE
TU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBt
ZXNzYWdlKQogewogICAgIGVucXVldWVNZXNzYWdlKG1lc3NhZ2VUeXBlLCBtZXNzYWdlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5oCmluZGV4IDNkOTZmODgwMmU3NDc4NDFjNGVmZGE4MWRjYjk0MWVhNmU0YTc1
ZTQuLjM2NWFjZTVjMDk1ZTdkYzBjNTcxZTc2Y2NmMmMwN2FhZmM2MmJhYTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Np
b24uaApAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBDRE07CiBjbGFzcyBEZWZlcnJlZFByb21pc2U7
CiBjbGFzcyBNZWRpYUtleVN0YXR1c01hcDsKIGNsYXNzIE1lZGlhS2V5czsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VQcm94eTsKIApAQCAtODcsMjAgKzg3LDIwIEBA
IHB1YmxpYzoKICAgICB1c2luZyBDbG9zZWRQcm9taXNlID0gRE9NUHJvbWlzZVByb3h5PElETFVu
ZGVmaW5lZD47CiAgICAgQ2xvc2VkUHJvbWlzZSYgY2xvc2VkKCkgeyByZXR1cm4gbV9jbG9zZWRQ
cm9taXNlLmdldCgpOyB9CiAKLSAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRC
dWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+JiBzdGF0dXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dHVzZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiYgc3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBtX3N0
YXR1c2VzOyB9CiAKICAgICB1bnNpZ25lZCBpbnRlcm5hbEluc3RhbmNlU2Vzc2lvbk9iamVjdFJl
ZkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnN0YW5jZVNlc3Npb24tPnJlZkNvdW50KCk7IH0K
IAogcHJpdmF0ZToKICAgICBNZWRpYUtleVNlc3Npb24oRG9jdW1lbnQmLCBXZWFrUHRyPE1lZGlh
S2V5cz4mJiwgTWVkaWFLZXlTZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZp
ZXIsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0YW5jZVNlc3Npb24+JiYpOwotICAgIHZvaWQgZW5x
dWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7Cisg
ICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCB1cGRhdGVFeHBpcmF0aW9uKGRvdWJsZSk7CiAg
ICAgdm9pZCBzZXNzaW9uQ2xvc2VkKCk7CiAgICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKSBjb25zdDsKIAogICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAogICAgIHZv
aWQgdXBkYXRlS2V5U3RhdHVzZXMoQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNW
ZWN0b3ImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRNZXNzYWdl
KENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBm
aW5hbDsKICAgICB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAg
ICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgZmluYWw7CiAKQEAgLTE0MCwxMCArMTQw
LDEwIEBAIHByaXZhdGU6CiAgICAgTWVkaWFLZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25UeXBlOwog
ICAgIFJlZjxDRE0+IG1faW1wbGVtZW50YXRpb247CiAgICAgUmVmPENETUluc3RhbmNlU2Vzc2lv
bj4gbV9pbnN0YW5jZVNlc3Npb247Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBtX3Jl
Y29yZE9mS2V5VXNhZ2U7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4g
bV9yZWNvcmRPZktleVVzYWdlOwogICAgIGRvdWJsZSBtX2ZpcnN0RGVjcnlwdFRpbWUgeyAwIH07
CiAgICAgZG91YmxlIG1fbGF0ZXN0RGVjcnlwdFRpbWUgeyAwIH07Ci0gICAgVmVjdG9yPHN0ZDo6
cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiBtX3N0YXR1c2VzOworICAg
IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0
YXR1cz4+IG1fc3RhdHVzZXM7CiAKICAgICB1c2luZyBEaXNwbGF5Q2hhbmdlZE9ic2VydmVyID0g
T2JzZXJ2ZXI8dm9pZChQbGF0Zm9ybURpc3BsYXlJRCk+OwogICAgIERpc3BsYXlDaGFuZ2VkT2Jz
ZXJ2ZXIgbV9kaXNwbGF5Q2hhbmdlZE9ic2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRl
eCAwNmFmZmI1ZjJlZGZlMTgyOTcxOWVhMTdjMjc4ODU0YmM1YTZlNjBjLi4zOThlOGFiMWI2NTZi
NDQ1OTI3YmViNmJjNjkzZGQzOTlhNjg3YWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAt
NTYsNyArNTYsNyBAQCB1bnNpZ25lZCBsb25nIE1lZGlhS2V5U3RhdHVzTWFwOjpzaXplKCkKICAg
ICByZXR1cm4gbV9zZXNzaW9uLT5zdGF0dXNlcygpLnNpemUoKTsKIH0KIAotc3RhdGljIGJvb2wg
a2V5SWRzTWF0Y2goY29uc3QgU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIp
CitzdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBh
LCBjb25zdCBCdWZmZXJTb3VyY2UmIGIpCiB7CiAgICAgYXV0byBsZW5ndGggPSBhLnNpemUoKTsK
ICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggIT0gYi5sZW5ndGgoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
aAppbmRleCBjMjExMTEzYTJjNmRhYzc5NzkyNGE5OWQyZDJkZjk3YzJlNjVmODUwLi42MGQ2MmFh
ZmY4MDc0ZGFkYTZlMzFhM2YyYjM3MGE2ZDZkMDFmNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCkBA
IC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhS2V5U2Vz
c2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIE1lZGlhS2V5U3RhdHVzTWFwIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFLZXlT
dGF0dXNNYXA+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAppbmRleCA4M2IyNGFjZWFhNWIxMjk0YmI0ZWE0Mzlm
YjJkNWM0ZjZjY2Q0NzUzLi4zNjdmMzFkMTg2YjUxNjM5YTljNzQyMTNmMGNmOGU2ZjJmOGQyNmVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleXMuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgYm9vbCBNZWRpYUtleXM6Omhhc09wZW5TZXNz
aW9ucygpIGNvbnN0CiAgICAgICAgIH0pOwogfQogCi12b2lkIE1lZGlhS2V5czo6dW5yZXF1ZXN0
ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKK3ZvaWQgTWVkaWFLZXlzOjp1bnJlcXVlc3Rl
ZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBmb3IgKGF1dG8m
IGNkbUNsaWVudCA6IG1fY2RtQ2xpZW50cykKICAgICAgICAgY2RtQ2xpZW50LmNkbUNsaWVudFVu
cmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0
YS5jb3B5UmVmKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmgKaW5kZXggN2I1OWEzYmM2ZDIyNTZmYzY1NmYwOGNiZjI2ODkxODUxMDk4
M2EyMi4uOTFhMWEwNzExNDMzYmUyNDdkZDJhODVjNWY0YWQwOTM4YTA5YTdhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCkBAIC04
Niw3ICs4Niw3IEBAIHByb3RlY3RlZDoKICAgICBNZWRpYUtleXMoRG9jdW1lbnQmLCBib29sIHVz
ZURpc3RpbmN0aXZlSWRlbnRpZmllciwgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkLCBjb25z
dCBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mLCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFu
Y2U+JiYpOwogCiAgICAgLy8gQ0RNSW5zdGFuY2VDbGllbnQKLSAgICB2b2lkIHVucmVxdWVzdGVk
SW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJikgZmluYWw7CisgICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2Vp
dmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
IAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkg
Y29uc3QgeyByZXR1cm4gbV9sb2dnZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcAppbmRleCBkNjViMjdiZmU4YTFlZjIxOTkyYjllMWFkMDVhY2E1NGU3MmQ2
MDVlLi5iOGYyZWMzNzNkODczY2M5YzhhY2IzYzZlYzg0NWY2YWIwMDA5YWE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yOTcsMTQgKzI5NywxNCBA
QCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4g
Zm9ybURhdGFCb2R5KCk7CiAKICAgICBpZiAoaXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUEFMOjpVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4
dEJvZHkoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUEFMOjpVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4
dEJvZHkoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChp
c1VSTFNlYXJjaFBhcmFtcygpKQotICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFBBTDo6VVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHko
KS50b1N0cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAg
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29k
ZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRs
aW5nOjpFbnRpdGllcykpOwogCiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0
aCgpKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5i
eXRlTGVuZ3RoKCkpOwogICAgIGlmIChpc0FycmF5QnVmZmVyVmlldygpKQotICAgICAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmll
d0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNl
QWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5o
CmluZGV4IDA4OTgzZWMwMDQzZjZjOTlhN2ZhZWFmYzY5M2NlODI4MjNiNDAxYmMuLmJhZDFiNWVh
MjNiNzcxYjM0N2Y0YjA0YTU2NzU4ZmMwMDg4ZTEyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQ
dHI8Rm9ybURhdGE+IGJvZHlBc0Zvcm1EYXRhKCkgY29uc3Q7CiAKLSAgICB1c2luZyBUYWtlbkRh
dGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50
PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CiAgICAg
VGFrZW5EYXRhIHRha2UoKTsKIAogICAgIHZvaWQgc2V0QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+
JiYgZGF0YSkgeyBtX2RhdGEgPSBXVEZNb3ZlKGRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGZhZGU2M2U0YmU0
OWY0ZDE5MzlkMWRiOGFlMTMyMTgxYWQwYTlhMmIuLmMyMzFmMjA3ZGEyNWNkMmExNTg2MGQyOGRi
M2NlMTdlODU3NTc3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0zMjksMTIgKzMyOSwxMiBAQCB2b2lkIEZldGNoQm9k
eUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkKICAg
ICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBGZXRjaEJvZHlDb25z
dW1lcjo6c2V0RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAg
IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0
Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewogICAgIGlmICghbV9idWZmZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDZiYmJjZTczNDdhYTNiYzJmNzBmNGVjNmQ4YmIw
ZTE4NzJhYWY4OTcuLjg3MWQyYzA4NjMzMWE5ODI5NGExNjZhNGI0MmUzMTg0ZTAzNzc3MmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgK
QEAgLTUwLDEwICs1MCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4g
ISFtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRC
dWZmZXI+JiYpOworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZvaWQgc2V0RGF0YShSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0
YWtlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgp
OwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwogICAg
IFN0cmluZyB0YWtlQXNUZXh0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5jcHAKaW5kZXggZmM1NWNjN2Q4M2Q4YmMxMWYwODU0ZGMzY2ZkODUwOTdhMzFm
MTBmNi4uMDNmODliNjFjYTVmN2M3MTc2YjlkODhjZDEzNjYwZTg2YjdhMjU0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTEzNSw3ICsxMzUs
NyBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdG9wKCkKICAgICAgICAgbV9sb2FkZXItPmNhbmNlbCgp
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaExvYWRlcjo6c3RhcnRTdHJlYW1pbmco
KQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoTG9hZGVyOjpzdGFydFN0cmVh
bWluZygpCiB7CiAgICAgQVNTRVJUKG1fY29uc3VtZXIpOwogICAgIGF1dG8gZmlyc3RDaHVuayA9
IG1fY29uc3VtZXItPnRha2VEYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoTG9hZGVyLmgKaW5kZXggMmY5MGYwZWMzZmY5MDVhMjYyMzFjODRjNzJhN2ExODZjZDRiZmU4
My4uNDYxMmQwZTBlM2E3ZWZlMzA2MDM5NmIwZDc1YTJmYTNiYzRlZGRhZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApAQCAtMzksMTQgKzM5LDE0IEBAIGNs
YXNzIEZldGNoQm9keUNvbnN1bWVyOwogY2xhc3MgRmV0Y2hMb2FkZXJDbGllbnQ7CiBjbGFzcyBG
ZXRjaFJlcXVlc3Q7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRmV0Y2hMb2Fk
ZXIgZmluYWwgOiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6CiAgICAg
RmV0Y2hMb2FkZXIoRmV0Y2hMb2FkZXJDbGllbnQmLCBGZXRjaEJvZHlDb25zdW1lciopOwogICAg
IFdFQkNPUkVfRVhQT1JUIH5GZXRjaExvYWRlcigpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc3RhcnRTdHJlYW1pbmcoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
c3RhcnRTdHJlYW1pbmcoKTsKIAogICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIGNvbnN0IEZldGNoUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc3RhcnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEJsb2ImKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDBjNTk4MmRmNzY2NDQ5Y2E1
NGQ3YTllYjhkNjBjYzRmZTM4ODIwNDguLjliODRjNDM4NDljOTY4ZGNmYjExYTVmZjBlN2IyNTU2
Njg4YTdmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcApAQCAtNDQ2LDcgKzQ0Niw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURh
dGEoUmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAgICAg
ICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLnNldEFzRm9ybURh
dGEoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpc10oUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICAgICAgW3RoaXNdKFJlZjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkpCiAgICAg
ICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLmNvbnN1bWVyKCku
c2V0RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpAQCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgRmV0Y2hS
ZXNwb25zZTo6ZmVlZFN0cmVhbSgpCiAgICAgY2xvc2VTdHJlYW0oKTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RhcnRTdHJlYW1pbmcoKQor
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6
OnN0YXJ0U3RyZWFtaW5nKCkKIHsKICAgICBBU1NFUlQobV9sb2FkZXIpOwogICAgIHJldHVybiBt
X2xvYWRlci0+c3RhcnRTdHJlYW1pbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggNmY0YTI0ZTI3NWUxNjlhMTM3NzE0NTAwZGFmY2QxZDY1
NWNhZjUxNS4uNmIwNTA1ZDg4YjEzMmUyOGNiOTU0YWI5YTBlN2VmZTgxM2Y3MDJhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTg1LDcgKzg1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmVlZFN0cmVhbSgpIGZpbmFsOwogICAgIHZvaWQgY2Fu
Y2VsKCkgZmluYWw7CiAKLSAgICB1c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3Rk
OjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47
CisgICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBS
ZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CiAgICAgUmVzcG9uc2VEYXRhIGNvbnN1
bWVCb2R5KCk7CiAgICAgdm9pZCBzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiwgdWludDY0X3Qg
Ym9keVNpemVXaXRoUGFkZGluZyk7CiAKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2YXRlOgogCiAg
ICAgICAgIHZvaWQgY29uc3VtZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNr
JiYpOwogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7Cisg
ICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzdGFydFN0cmVhbWluZygpOwog
ICAgICAgICBOb3RpZmljYXRpb25DYWxsYmFjayB0YWtlTm90aWZpY2F0aW9uQ2FsbGJhY2soKSB7
IHJldHVybiBXVEZNb3ZlKG1fcmVzcG9uc2VDYWxsYmFjayk7IH0KICAgICAgICAgQ29uc3VtZURh
dGFCeUNodW5rQ2FsbGJhY2sgdGFrZUNvbnN1bWVEYXRhQ2FsbGJhY2soKSB7IHJldHVybiBXVEZN
b3ZlKG1fY29uc3VtZURhdGFDYWxsYmFjayk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAppbmRleCA2MTM3YzJjZjZmZjQ3YTM2ODQwZjEx
Yjk2NmI5ZTUyNTg3MWQ4MTVmLi4xYTY2YmY4MTgzMjBlOTU2MDdkNjE1ZjFhMDgyYTgyNzZlYjJh
MzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHQuaApAQCAtMzgsNyArMzgsNyBAQCBlbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxp
Z2h0IDogYm9vbCB7IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgSGlnaGxpZ2h0UmVxdWVzdE9yaWdp
bmF0ZWRJbkFwcCA6IGJvb2wgeyBObywgWWVzIH07CiAKIHN0cnVjdCBBcHBIaWdobGlnaHQgewot
ICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGhpZ2hsaWdodDsKKyAgICBSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaGlnaGxpZ2h0OwogICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiB0ZXh0OwogICAgIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGlzTmV3R3JvdXA7
CiAgICAgSGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCByZXF1ZXN0T3JpZ2luYXRlZElu
QXBwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKaW5kZXggODNiOTVkN2NmMDA3YWE1NGZiZmUyMzRiN2Q4
YjFlYjhlMTk5NjNlNC4uNWU4MGYwYzA3MmQ0OWEzZWY3OTY5NTkzMDJjNDQ1NmNkMmFiZGU4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRSYW5nZURhdGEuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY29uc3RleHByIHVpbnQ2NF90IGhpZ2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1
MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0dXJlICAoQSlwcGxlKEFQKXBsaWNhdGlvbihIKWln
aGxpZ2h0cygyMDIxKQogCi1zdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitz
dGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
OjpjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1
dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOwogICAgIGF1dG8g
ZGVjb2RlciA9IGNvbnRpZ3VvdXNCdWZmZXItPmRlY29kZXIoKTsKQEAgLTUzLDcgKzUzLDcgQEAg
c3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0
YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEIKICAgICByZXR1cm4gZGF0YTsKIH0KIAotUmVmPFNoYXJl
ZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjp0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0CitS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjp0b1NoYXJl
ZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBlbmNvZGVy
OwogICAgIGVuY29kZXIgPDwgKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCmluZGV4IGNmNjM4MWFjZmIw
YTUyMTFiNDM1MDhiN2I1MTdkNmRiMmY2ZmM3NDMuLmI1ZGFmNjAyNTM5OGEzZjdlNmYxZDM3YWJl
Y2U4NDRkNGYxYzY1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCkBAIC0zMywxMiArMzMsMTIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCi1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBBcHBI
aWdobGlnaHRSYW5nZURhdGEgewogV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhPiBjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBjcmVhdGUoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHN0cnVjdCBOb2RlUGF0aENvbXBvbmVudCB7CiAg
ICAgICAgIFN0cmluZyBpZGVudGlmaWVyOwogICAgICAgICBTdHJpbmcgbm9kZU5hbWU7CkBAIC0x
MTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRlY29kZShEZWNvZGVyJik7
CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiBwcml2
YXRlOgogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCmluZGV4IGRjMzlh
MGYwZDE4ZmZmY2E3ZGZiNDY1MjE5Y2Q2MTJhOWY3MzhmOGYuLmU1ZGU4NDk0ZjM1MDQ1MzU5NGIy
ZjJlODhjM2RkYTMzZmE5YWY3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCkBAIC0yMzcsNyArMjM3LDcg
QEAgdm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpzdG9yZUFwcEhpZ2hsaWdodChSZWY8U3RhdGlj
UmFuZ2U+JiYgcmFuZ2UpCiAgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5zdG9yZUFw
cEhpZ2hsaWdodChXVEZNb3ZlKGhpZ2hsaWdodCkpOwogfQogCi12b2lkIEFwcEhpZ2hsaWdodFN0
b3JhZ2U6OnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgU2Nyb2xsVG9IaWdobGlnaHQgc2Nyb2xsKQordm9pZCBBcHBIaWdobGlnaHRTdG9y
YWdlOjpyZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBTY3JvbGxUb0hpZ2hsaWdodCBzY3JvbGwpCiB7CiAgICAgYXV0byBh
cHBIaWdobGlnaHRSYW5nZURhdGEgPSBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShidWZm
ZXIpOwogICAgIGlmICghYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCmluZGV4IGIx
NTJmNzZlZDQyNDA4OTJlYTdkZTIxZTJjYjA2ZDQ3MmQ4NzMzNjAuLmUyNzY2MzNiNDg0ZjgxMDk0
YWRlY2U0NWY2NGFiYmVkMTc4MTI1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKQEAgLTM5LDcgKzM5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKIAogY2xhc3Mg
RG9jdW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU3RhdGljUmFuZ2U7CiBjbGFzcyBIaWdobGlnaHQ7CiAKQEAgLTU0LDcgKzU0
LDcgQEAgcHVibGljOgogICAgIH5BcHBIaWdobGlnaHRTdG9yYWdlKCk7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTdGF0aWNSYW5nZT4mJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiwgU2Nyb2xsVG9IaWdobGlnaHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBTY3JvbGxUb0hpZ2hsaWdodCk7CiAgICAgdm9pZCByZXN0b3JlVW5yZXN0b3JlZEFw
cEhpZ2hsaWdodHMoKTsKICAgICBNb25vdG9uaWNUaW1lIGxhc3RSYW5nZVNlYXJjaFRpbWUoKSBj
b25zdCB7IHJldHVybiBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaDsgfQogICAgIHZvaWQgcmVzZXRM
YXN0UmFuZ2VTZWFyY2hUaW1lKCkgeyBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaCA9IE1vbm90b25p
Y1RpbWU6Om5vdygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKaW5kZXggYTFjOTMxMmQ0NWVi
YmZjZTlmMzJlNmNjMWExYTJlODRkZGNhN2M3Mi4uMmEyYzFmYzMyOTU4MDVkNTJmZDU2YWYzMGI0
NTVhZTJjY2NjNDg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcApAQCAtMzksNyArMzksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgS2V5UGF0aFR5cGUgeyBOdWxsLCBT
dHJpbmcsIEFycmF5IH07CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxp
emVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiB7CiAgICAgYXV0byBlbmNvZGVyID0gS2V5ZWRFbmNv
ZGVyOjplbmNvZGVyKCk7CiAKQEAgLTI4MiwxMyArMjgyLDEzIEBAIHN0YXRpYyB2b2lkIGVuY29k
ZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElEQktleURhdGEmIGtleSkKICAgICB9
CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRh
KGNvbnN0IElEQktleURhdGEmIGtleSkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlE
QktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQogewogICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJzaW9uKTsKIAogICAgIGVuY29kZUtleShk
YXRhLCBrZXkpOwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShkYXRhKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpOwogfQogCiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlS2V5KGNvbnN0
IHVpbnQ4X3QqJiBkYXRhLCBjb25zdCB1aW50OF90KiBlbmQsIElEQktleURhdGEmIHJlc3VsdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VyaWFsaXphdGlvbi5oCmluZGV4IGFhZmRiMzcwMWYwZWY0NDhkNmI4YWI1MTAxMTg1YzRi
MzRmZmFhOGEuLjY1YzRhNjNjNzg3ZjM2OTQxNDZlMjMxYzhjNTQwMTcwNjdhNGY0MjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcmlhbGl6YXRpb24uaApAQCAtMzIsMTAgKzMyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgSURCS2V5RGF0YTsKIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNl
cmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFs
PElEQktleVBhdGg+Jik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCB1aW50OF90
KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7
CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNv
bnN0IElEQktleURhdGEmKTsKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURh
dGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleURhdGEoY29uc3Qg
dWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgSURCS2V5RGF0YSYpOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggMGE0NjliZDBiZDFmMzhkY2I5NmIz
OWQ4YzMwMDBhZjczZDEyYWI1OS4uYzlkNmRhNmJkZDlmOTM5NTAxZjRmNDIzMmI0Yzc4MzdkODQw
ZGFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IE1lZGlhUmVjb3JkZXI6OnN0YXJ0UmVjb3JkaW5nKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRp
bWVTbGljCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3RhdGljIGlubGluZSBSZWY8QmxvYkV2ZW50
PiBjcmVhdGVEYXRhQXZhaWxhYmxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGRvdWJsZSB0aW1lQ29kZSkKK3N0YXRpYyBpbmxpbmUgUmVmPEJsb2JFdmVudD4gY3JlYXRlRGF0
YUF2YWlsYWJsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
ZG91YmxlIHRpbWVDb2RlKQogewogICAgIGF1dG8gYmxvYiA9IGJ1ZmZlciA/IEJsb2I6OmNyZWF0
ZShjb250ZXh0LCBidWZmZXItPmV4dHJhY3REYXRhKCksIG1pbWVUeXBlKSA6IEJsb2I6OmNyZWF0
ZShjb250ZXh0KTsKICAgICByZXR1cm4gQmxvYkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRh
dGFhdmFpbGFibGVFdmVudCwgQmxvYkV2ZW50OjpJbml0IHsgeyBmYWxzZSwgZmFsc2UsIGZhbHNl
IH0sIFdURk1vdmUoYmxvYiksIHRpbWVDb2RlIH0sIEJsb2JFdmVudDo6SXNUcnVzdGVkOjpZZXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyLmgKaW5kZXggNzcxMmI0NDUyODM2N2Q4YzI3MjUwMmFkYmFhY2FhZjk3ODhjYmRiMC4u
MWU5Yjc0YWIxN2UzMTA4ZGI0MjA5YjliNGYwMjE0ZGExMWFjNmUwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCkBAIC0x
MDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoRXJyb3IoRXhjZXB0aW9u
JiYpOwogCiAgICAgZW51bSBjbGFzcyBUYWtlUHJpdmF0ZVJlY29yZGVyIHsgTm8sIFllcyB9Owot
ICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPjsKKyAgICB1c2luZyBG
ZXRjaERhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+OwogICAgIHZvaWQgZmV0
Y2hEYXRhKEZldGNoRGF0YUNhbGxiYWNrJiYsIFRha2VQcml2YXRlUmVjb3JkZXIpOwogCiAgICAg
Ly8gTWVkaWFTdHJlYW06Ok9ic2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCmluZGV4IDNmNGM5YmNkMTMzYWMyOWYz
ZjdkZGUxOTk0NzhlMzkyNTdkNWU2NmIuLjg3NGFhN2YwYjE4ZjBlZTc1ODgwYmE1ZjVlZjY3ZDQ3
YmZjMmIyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L01lZGlhTWV0YWRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhTWV0YWRhdGEuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQXJ0d29ya0ltYWdl
TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5l
dHdvcmtMCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gU2FuaXRpemUgdGhlIGltYWdl
IGJ5IGRlY29kaW5nIGl0IGludG8gYSBCaXRtYXBJbWFnZS4KLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXJUb1Nhbml0aXplID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwor
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplID0gbV9j
YWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIGF1dG8gYml0bWFwSW1hZ2UgPSBCaXRt
YXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgYml0bWFwSW1hZ2UtPnNldERhdGEoV1RGTW92ZShidWZm
ZXJUb1Nhbml0aXplKSwgdHJ1ZSk7CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5jcHAKaW5kZXggMmIzY2RlMzYwODI0NzFjMTFjODdmY2Y2MWNjODFjYzM2MGMzOWQ5MC4uZDM3
OGFmYzZmOGExYjU3YTAzMDJlMmM4NjhiMjQwYTIwOTdmZTRjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAtNTMwLDcg
KzUzMCw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJUaW1lckZpcmVkKCkKICAg
ICAvLyBodHRwczovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL21lZGlh
LXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCNzb3VyY2VidWZmZXItc2VnbWVudC1wYXJzZXItbG9v
cAogICAgIC8vIFdoZW4gdGhlIHNlZ21lbnQgcGFyc2VyIGxvb3AgYWxnb3JpdGhtIGlzIGludm9r
ZWQsIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YXBwZW5kRGF0YSA9IFdURk1vdmUobV9wZW5kaW5nQXBwZW5kRGF0YSk7CisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGFwcGVuZERhdGEgPSBXVEZNb3ZlKG1fcGVuZGluZ0FwcGVu
ZERhdGEpOwogICAgIC8vIDEuIExvb3AgVG9wOiBJZiB0aGUgaW5wdXQgYnVmZmVyIGlzIGVtcHR5
LCB0aGVuIGp1bXAgdG8gdGhlIG5lZWQgbW9yZSBkYXRhIHN0ZXAgYmVsb3cuCiAgICAgaWYgKCFh
cHBlbmREYXRhIHx8ICFhcHBlbmREYXRhLT5zaXplKCkpIHsKICAgICAgICAgc291cmNlQnVmZmVy
UHJpdmF0ZUFwcGVuZENvbXBsZXRlKEFwcGVuZFJlc3VsdDo6QXBwZW5kU3VjY2VlZGVkKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCmlu
ZGV4IDUyMGMwNzc1Njk2YTJmMGUyZTczMDA3MzVlOGM5Nzc0OTVmMWE2MTQuLmQ0Yzg1NzljMGJi
ZDQ0M2E1MTJmYTlmNjhjNDI3ZWMwNDg4NWQwZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAtMjIyLDcgKzIyMiw3IEBAIHBy
aXZhdGU6CiAKICAgICBXVEY6Ok9ic2VydmVyPHZvaWQqKCk+IG1fb3BhcXVlUm9vdFByb3ZpZGVy
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsKICAgICBU
aW1lciBtX2FwcGVuZEJ1ZmZlclRpbWVyOwogCiAgICAgUmVmUHRyPFZpZGVvVHJhY2tMaXN0PiBt
X3ZpZGVvVHJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKaW5kZXggZjU4Mjdk
ZjkzNzk0OTNkMjgxMjcwMTc3Y2NmYmNhMDU1MTUzMjMxZi4uNzM5NDJhODM1OTMxYTlkMjg0YzZh
NDUxYmI4ZGJmYjU3NjVjYWRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCkBA
IC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJUQ0RhdGFDaGFubmVs
SGFuZGxlckNsaWVudDsKIGNsYXNzIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rp
b247CiBjbGFzcyBSVENFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlciBmaW5h
bCA6IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxS
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0cnVjdCBNZXNzYWdlIHsKICAg
ICAgICAgYm9vbCBpc1JhdyB7IGZhbHNlIH07Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB9
OwogICAgIFZlY3RvcjxNZXNzYWdlPiBtX3BlbmRpbmdNZXNzYWdlczsKICAgICBib29sIG1faXNQ
ZW5kaW5nQ2xvc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggZTc5ZWJkYmFjNDA4M2U5NDU0YzY5ZDE5OTZlNmZk
MmQ4YzcyOTgxOS4uM2NlZWQwYTAxMWU3YjU0NmZhZGRmNDhiYmRhMjExZGZkZDUyNGM1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBA
IC05Nyw3ICs5Nyw3IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGll
bnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQsCiAgICAgbV9jb250ZXh0SWRl
bnRpZmllciA9IGNvbnRleHRJZGVudGlmaWVyOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDog
bV9idWZmZXJlZE1lc3NhZ2VzKSB7Ci0gICAgICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsmXShSZWY8
U2hhcmVkQnVmZmVyPiYgZGF0YSkgeworICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBbJl0oUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CiAgICAgICAgICAgICBjbGllbnQuZGlk
UmVjZWl2ZVJhd0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOwogICAgICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBjbGllbnQu
ZGlkUmVjZWl2ZVN0cmluZ0RhdGEodGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlci5oCmluZGV4IDQxZjk1MjgyMWU2MjAwOTNmOGVlZmUzMmM1ZWQ0
YWUwZjVlNTQxOTcuLjExYmQ0NWRlOTE1NTc3OWZmYzllZmIwM2U5NTUyOGYwNWU2NGQ3NDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC04
Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIFJUQ0RhdGFDaGFubmVsU3RhdGUgc3RhdGU7
CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8d2VicnRjOjpSVENFcnJvcj4gZXJyb3I7CiAgICAgfTsK
LSAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PFN0YXRlQ2hhbmdlLCBTdHJpbmcsIFJl
ZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PFN0YXRl
Q2hhbmdlLCBTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgdXNpbmcg
UGVuZGluZ01lc3NhZ2VzID0gVmVjdG9yPE1lc3NhZ2U+OwogICAgIHZvaWQgc3RvcmVNZXNzYWdl
KFBlbmRpbmdNZXNzYWdlcyYsIGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYpOwogICAgIHZvaWQg
cHJvY2Vzc01lc3NhZ2UoY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVyJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKaW5kZXggMGI4
OThmNmFkYjU3ZWIyNWRjNDkzN2Q4MWZmNWQxNGQ1Mjk3NmM4NC4uZDUxNzNmYmY4YjQwMzQxYzVj
ZjhkOGE0ZjU1ZWVhYzhmZjgzOGEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFt
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgUmVhZGFibGVTdHJlYW1TaW5rIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJl
YW1TaW5rPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAKaW5kZXggODUxNDdjMDk2MWM5OTczMTYzMWYwZWRmYjllZmU3NGU1
YzM2Y2FjYi4uNTI1MTBjMzA4MThmMGNhOTE2YTg4NDM3N2QyMjRhMWFiYTc5NWI4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAt
NDc1LDcgKzQ3NSw3IEBAIHN0YXRpYyBKU0M6OkpTUHJvbWlzZSogaGFuZGxlUmVzcG9uc2VPblN0
cmVhbWluZ0FjdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIC8vIEZJWE1F
OiBTdXBwb3J0IEZvcm1EYXRhIGxvYWRpbmcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyNDgKICAgICAgICAgY29tcGlsZXItPmZhaWwoZ2xv
YmFsT2JqZWN0LCBjcmVhdGVET01FeGNlcHRpb24oKmdsb2JhbE9iamVjdCwgRXhjZXB0aW9uIHsg
Tm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgIH0pKTsKLSAgICB9LCBbJl0o
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oUmVmPFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMoYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFsaXplKGds
b2JhbE9iamVjdCk7CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgK
aW5kZXggYjkxOGYzMTQxYWYyZjUyMTY0MjY4OThmYWVhODRmNGIwMmIxZTI3ZS4uYjhiNzc4NWY5
MWQwNjhjMmE0NmNlYjFkNjU5NzU4ZmNmOGI2OWQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC05NCw3
ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0QnVm
ZmVyOwotICAgIG11dGFibGUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udGln
dW91c0J1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udGlndW91
c0J1ZmZlcjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAgICBt
dXRhYmxlIFN0cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggN2U0OWE5ZTczMjI2YjY1
Y2MyOGJmNTk0ODEzYjBmODNiMjY5ZDIyYi4uZWYzN2YxZDBjYTQ2MmJiOWI3YzliNmE1NWQxOGVi
YjRjMTE4MWE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgRGV0YWNoZWRPZmZzY3Jl
ZW5DYW52YXM7CiBjbGFzcyBJREJWYWx1ZTsKIGNsYXNzIE1lc3NhZ2VQb3J0OwogY2xhc3MgSW1h
Z2VCaXRtYXBCYWNraW5nOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgU2VyaWFsaXphdGlvblJldHVybkNvZGU7CiAKIGVudW0g
Y2xhc3MgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB7IE5vblRocm93aW5nLCBUaHJvd2luZyB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggM2M1ZWE5Yjg5YTlj
OWU5MDM3MGI5OGRmNTI4NTYzMDY0OTkwMDdkOS4uYWViNGI2Y2M1MGExMjZjOTgzMGQ2MDZhYmIw
YzNhOGM2OWE5YzMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3Bw
CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2luRG9jdW1lbnRDdXN0b21Q
bGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgICAgIFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVu
dCA9IGRvd25jYXN0PFNWR0ZvbnRFbGVtZW50PigqbV9zdmdGb250RmFjZUVsZW1lbnQtPnBhcmVu
dE5vZGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gb3RmRm9udCA9IGNvbnZlcnRTVkdU
b09URkZvbnQoZm9udEVsZW1lbnQpKQotICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9U
RkJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90ZkZvbnQu
dmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKG1fZ2VuZXJhdGVkT1RGQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1f
aW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoKm1fZ2VuZXJhdGVkT1RGQnVmZmVyLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAg
IHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURh
dGEpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgICAgICB9IGVsc2UgaWYgKG1faW1tZWRpYXRlU291cmNlKSB7
CiAgICAgICAgICAgICBBU1NFUlQoIW1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7
CiAgICAgICAgICAgICBib29sIHdyYXBwaW5nOwotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1f
aW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVM
ZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3Mo
KSksIG1faW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOwogICAgICAgICAgICAgbV9pbW1l
ZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9u
dERhdGEoYnVmZmVyLmdldCgpLCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAgICAgc3Vj
Y2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSk7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5o
CmluZGV4IDZhODJjZjFlM2RjOTE1OTc4NTMzNjViZDMxZTM2MjMyNzg2YTA4ODIuLjEwOGU2Yzg3
NjdkMGQyZmRhY2JlNjUwNGViYzUwNzBlODgyYmU2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNvdXJjZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ1NTRm9udEZhY2U7CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7Ci1jbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnQ7CiBj
bGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKQEAgLTkzLDcgKzkzLDcgQEAg
cHJpdmF0ZToKICAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7IC8v
IEZvciByZW1vdGUgZm9udHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCiAgICAgc3RkOjp1bmlx
dWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxzbyBmb3IgcmVtb3Rl
IGZvbnRzLCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAKLSAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CiAgICAgUmVmUHRyPEpTQzo6QXJy
YXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IGY1YmYyYjcyNmU2YWU5Njg5MzUz
YzBhN2UwOGI0NWVmZGE1ZDkwNGIuLjFkZWFjNGY0MWNmNDlmMWY4ODJkY2NlZmQ0OGNmNmE5NzMy
ZjNlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC00MDIsNyArNDAyLDcg
QEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlVHlwZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxl
UmVhZGVyIHsKICAgICAgICAgdHlwZXMuYWRkKEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShmaWxl
bmFtZSkpOwogICAgIH0KIAotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKQorICAgIHZvaWQg
cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYpCiAgICAgewogICAgICAgICB0eXBlcy5hZGQodHlwZSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGNmMzJhYmMxODI3ZmNlYjU0YWQ1ZWEwMWJhMDJlYjAx
ZjE3NGY3MDQuLjQwYzc4NGMzZTM4YjhkYTg5MjEyYmI4OTgwMmRjYzkyZTZiODNhMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxNTksNyArNDE1OSw3IEBAIFByb21pc2VkQXR0
YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1l
bnQpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFs
VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRp
b25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0
YTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9y
QXR0YWNobWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhKTsKICNl
bmRpZgpAQCAtNDE2Nyw3ICs0MTY3LDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6
OnByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4geyBh
dHRhY2htZW50LT51bmlxdWVJZGVudGlmaWVyKCksIFdURk1vdmUoYWRkaXRpb25hbFR5cGVzKSwg
V1RGTW92ZShhZGRpdGlvbmFsRGF0YSkgfTsKIH0KIAotdm9pZCBFZGl0b3I6OnJlZ2lzdGVyQXR0
YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGRhdGEpCit2b2lkIEVkaXRvcjo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmll
cihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGRhdGEpCiB7CiAgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQogICAg
ICAgICBjbGllbnQtPnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoaWRlbnRpZmllciwgY29u
dGVudFR5cGUsIHByZWZlcnJlZEZpbGVOYW1lLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oCmluZGV4IDhkYTlmY2M2NDE2YjY3MjE3ZDE3NDllYmI4OTc4MDdlNDc2MTExMjUu
Ljg2ZDhjOGMyNjAxODMwYmRjM2E5N2Y4NzM3OWZhMDFlM2VkYzhkNjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaApAQCAtNTgsNyArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBB
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOwogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwogY2xhc3Mg
Q29tcG9zaXRlRWRpdENvbW1hbmQ7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xh
c3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3VzdG9tVW5kb1N0ZXA7CiBjbGFzcyBEYXRhVHJhbnNm
ZXI7CiBjbGFzcyBEZWxldGVCdXR0b25Db250cm9sbGVyOwpAQCAtNzUsNyArNzUsNyBAQCBjbGFz
cyBLaWxsUmluZzsKIGNsYXNzIFBhc3RlYm9hcmQ7CiBjbGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0
YTsKIGNsYXNzIFJlbmRlckxheWVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7CiBjbGFzcyBTcGVsbENoZWNrUmVxdWVzdDsK
IGNsYXNzIFNwZWxsQ2hlY2tlcjsKQEAgLTUzOSw3ICs1MzksNyBAQCBwdWJsaWM6CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlm
CiAKICAgICBib29sIGNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCkgY29uc3Q7CkBA
IC01NjYsNyArNTY2LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJl
Z2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBmaWxlRGF0YSk7CisgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
cHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGZpbGVEYXRh
KTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YT4mJik7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
KTsKQEAgLTU3Niw3ICs1NzYsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQcm9t
aXNlZEF0dGFjaG1lbnRJbmZvIHByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYpOwogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0
dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOworICAgIHZvaWQgZ2V0UGFzdGVi
b2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBv
dXRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSk7CiAjZW5kaWYK
ICNlbmRpZgogCkBAIC02MjQsMTIgKzYyNCwxMiBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+IGFkanVzdGVkU2VsZWN0aW9uUmFuZ2UoKTsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZWxlY3Rpb25Jbldl
YkFyY2hpdmVGb3JtYXQoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZWxlY3Rpb25Jbldl
YkFyY2hpdmVGb3JtYXQoKTsKICAgICBTdHJpbmcgc2VsZWN0aW9uSW5IVE1MRm9ybWF0KCk7Ci0g
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0
KEVsZW1lbnQmKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2ViQXJjaGl2ZUZv
cm1hdChFbGVtZW50Jik7CiAgICAgc3RhdGljIFN0cmluZyB1c2VyVmlzaWJsZVN0cmluZyhjb25z
dCBVUkwmKTsKLSAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJ
blJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwotICAgIHN0YXRpYyBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAq
KTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdChOU0F0
dHJpYnV0ZWRTdHJpbmcgKik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJ
blJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CiAjZW5kaWYKICAgICB2b2lkIHBsYXRm
b3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiwgY29uc3Qg
UmVuZGVyU3R5bGUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhLmgKaW5kZXggMzljM2IxZmEzZDg1NmY4ZDg0OWM2OTMzMWQ4
OWU5OThmN2U3NjIzYi4uZjMwMjgyMzU2OTAwNmY1Y2Y5ZGJiNGVmYzM3M2U2N2VmMDVmMTlhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YS5oCkBAIC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgU2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhIHsKICAgICBTdHJpbmcgaWRlbnRpZmllcjsKICAgICBTdHJp
bmcgbWltZVR5cGU7Ci0gICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaAppbmRleCAxZDk3YWNkM2NjNzkx
NjFiMGFjNTBjNGJmNzBjYjE1MmZjMGY0ODRjLi40YWY5NzBiMWY1YjQyNTBjOTUyZDQwOWE4NzE4
YTg4MDM0ZjQ4NzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRl
bnRSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIu
aApAQCAtNzIsMTYgKzcyLDE2IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWFkRmlsZVBhdGgoY29u
c3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0g
eyB9LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0geyB9KSBvdmVycmlkZTsKICAgICBib29s
IHJlYWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKICAgICBib29s
IHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZEltYWdlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBw
cmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRJ
bWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQ
cmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRl
OwogICAgIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVy
cmlkZTsKICAgICBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURkQoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURihDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUs
IFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJp
ZGU7CisgICAgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAg
ICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJU
RihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50
YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOwogI2Vu
ZGlmCiB9OwogCkBAIC05OSwxNiArOTksMTYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlYWRGaWxl
UGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBTdHJpbmcm
ID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZEZpbGVQYXRo
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
Ym9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRJbWFn
ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0g
eyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZEltYWdlKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXpl
ID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZFVSTChjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJv
b2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIHJlYWRXZWJBcmNoaXZl
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZEKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEYoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNl
bnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBy
ZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEZE
KFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCA3NGZlODI4
N2U4YzM5M2JlMTdhNjc2NjUzOGQ5ZjM0YTA5MGIzMzRiLi41NDllYjdkMmU0YzA3NTQ4ZTRhOGM5
ZWEyNGVjMjBlNGYyMWJmYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHZvaWQg
V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSkKICAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGZp
bGVuYW1lKSk7CiB9CiAKLXZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVS
ZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBmaWxlcy5hcHBlbmQoRmls
ZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIEJsb2I6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBidWZm
ZXItPmV4dHJhY3REYXRhKCksIHR5cGUpLCBmaWxlbmFtZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKaW5kZXggZTdh
MDcxY2E0MDM5ZTAxZjQ4ZDBiNDk5NTAxZWQ2NGRlNjI2ZjBmYi4uNWM1MjlkZDdjOGVjYzAwMDQ4
ZmNiNGQxNTgxNDYzNWIyNGQ5MGJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVj
dCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRl
ciB7CiAgICAgfldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcigpOwogCiAgICAgdm9pZCByZWFk
RmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwog
CiAgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IGNvbnRleHQ7CiAgICAgVmVjdG9y
PFJlZjxGaWxlPj4gZmlsZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JD
b2NvYS5tbQppbmRleCBkMGM5MzMxMDBjNjU1ZjFmYTg1MjUyNzg4MTg3MDQ5OWMyZjYxZmUzLi5h
ODViN2FhNzUyNmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5OTE0YWFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBAQCB2b2lk
IEVkaXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJp
YnV0ZXMmIGF0dHJpYnV0ZXMsCiAgICAgICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2JyaWRnZSBp
ZCljdEZvbnQ7CiB9CiAKLXN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXJj
aGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0
ZWRTdHJpbmcpCitzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0
cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCiB7CiAg
ICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJj
aGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1aXJp
bmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKKyAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDph
dHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0p
OwogfQogCiBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAtODcsNyAr
ODcsNyBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBl
c0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBv
dXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEp
Cit2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxl
bWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNo
YXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQogewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFrZVJh
bmdlU2VsZWN0aW5nTm9kZShlbGVtZW50KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoZWxlbWVudFJhbmdlLCBvdXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3ICs5OSw3
IEBAIHZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChF
bGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hpdmUgPSBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAgICAgIGlm
IChhdXRvIGRhdGEgPSBhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewogICAgICAg
ICAgICAgICAgIG91dFR5cGVzLmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0gICAgICAg
ICAgICAgICAgb3V0RGF0YS5hcHBlbmQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBA
IC0xNTEsMTIgKzE1MSwxMiBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2Fy
ZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRXcml0ZXJE
YXRhLnNldFdlYkNvbnRlbnQoV1RGTW92ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgp
CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1h
dCgpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNl
bGVjdGlvbihtX2RvY3VtZW50LmZyYW1lKCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgp
KTsKIH0KIAogLy8gRklYTUU6IE1ha2VzIG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0Rm9yRGF0
YVRyYW5zZmVyIGFsd2F5cyBpbmNsdWRlcyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVjdGlvbkZv
clBhc3RlYm9hcmQgZG9lcyBub3QuCkBAIC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcgRWRpdG9y
Ojp1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RGOjp1c2Vy
VmlzaWJsZVN0cmluZyh1cmwpOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0
cmluZyAqc3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsK
ICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3Vt
ZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtz
dHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmli
dXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRh
dGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0cjxTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5n
KQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAoIWxl
bmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJp
bmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVz
OkB7IH1dKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9t
UmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwog
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IDNjNWU1
NDMyNWI5ZmUyMzU2N2VlNDJkZTk5ZjliNWIxNWM0MmIxMDAuLjA3ODI0ODM2MmFhMDU0ZGMzYWIw
MDAwNDUxNzE4NDE5OGE1ODBmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0KQEAgLTIzMjIsNyArMjMyMiw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8
TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3Vy
Y2UsIE5TCiBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yRWxl
bWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJbWFnZSog
Y2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCkpIHsKLSAgICAgICAgaWYgKFNoYXJl
ZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCisg
ICAgICAgIGlmIChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBjYWNoZWRJ
bWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKICAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNG
aWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29j
b2EubW0KaW5kZXggNDQwNTliZTVhZTllODFkYTM5ZDYyODkyMDFkOGVkNDkxNTk3MzUzNS4uNmM4
ZDNiN2M3NDNmNTJlM2RkMWRlZDkyNmVlYmJiNDU2MTg0ZWVlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI0
NSw3ICsyNDUsNyBAQCBzdGF0aWMgYm9vbCBzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0
YShjb25zdCBGcmFtZSYgZnJhbWUpCiAKICNlbmRpZgogCi1zdGF0aWMgUmVmPERvY3VtZW50RnJh
Z21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFtZSwgRG9j
dW1lbnQmIGRvY3VtZW50LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQorc3RhdGljIFJl
ZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChGcmFt
ZSYgZnJhbWUsIERvY3VtZW50JiBkb2N1bWVudCwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBQcmVzZW50YXRpb25TaXplIHBy
ZWZlcnJlZFNpemUpCiB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBhdXRv
IGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0
dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMgdm9pZCBy
ZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZy
YWdtZW50JiBmcgogICAgIHN0cnVjdCBBdHRhY2htZW50SW5zZXJ0aW9uSW5mbyB7CiAgICAgICAg
IFN0cmluZyBmaWxlTmFtZTsKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAgICAgICBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmPFNoYXJlZEJ1ZmZl
cj4gZGF0YTsKICAgICAgICAgUmVmPEVsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudDsKICAgICB9Owog
CkBAIC00MjgsNyArNDI4LDcgQEAgc3RydWN0IE1hcmt1cEFuZEFyY2hpdmUgewogICAgIFJlZjxB
cmNoaXZlPiBhcmNoaXZlOwogfTsKIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJj
aGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1F
VHlwZUFzSFRNTCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJh
Y3RNYXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6OmZ1bmN0
aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKIHsKICAgICBh
dXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoVVJMKCksIGJ1ZmZlcik7CiAg
ICAgaWYgKCFhcmNoaXZlKQpAQCAtNDk3LDcgKzQ5Nyw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRp
emVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRv
Y3VtCiAgICAgcmV0dXJuIHNhbml0aXplZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChXVEZN
b3ZlKGZyYWdtZW50KSwgKnN0YWdpbmdEb2N1bWVudCwgbXNvTGlzdFF1aXJrcywgbWFya3VwQW5k
QXJjaGl2ZS5tYXJrdXApOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNo
aXZlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1l
LnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTMyLDcgKzUzMiw3IEBAIGJvb2wgV2ViQ29u
dGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJl
YWRXZWJBcmNoaXZlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29u
dGVudE1hcmt1cFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02
MTIsNyArNjEyLDcgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkSFRNTChjb25z
dCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gIW1hcmt1cC5pc0VtcHR5KCk7CiB9CiAKLWJv
b2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygp
IHx8ICFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MjYsNyAr
NjI2LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1h
cmt1cFJlYWRlcjo6cmVhZFJURkQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9v
bCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTYzOSw3ICs2MzksNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTMsNyArNjUzLDcgQEAgYm9vbCBXZWJDb250ZW50
UmVhZGVyOjpyZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6
cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY3Niw3ICs2NzYsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHBy
ZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFn
ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQogewogICAgIEFT
U0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1
bWVudCgpOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogICAgIHJldHVybiBhdHRhY2htZW50OwogfQogCi1zdGF0aWMgUmVmPEhUTUxFbGVtZW50
PiBhdHRhY2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlv
blNpemUgcHJlZmVycmVkU2l6ZSkKK3N0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRG
b3JEYXRhKEZyYW1lJiBmcmFtZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNp
emUgcHJlZmVycmVkU2l6ZSkKIHsKICAgICBSZWYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQo
KTsKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShI
VE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKQEAgLTgzMyw3ICs4MzMsNyBAQCBi
b29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6
cmVhZERhdGFCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQ
cmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcihT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5h
bWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAgICBp
ZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAppbmRleCA2MDQ4
NmU3MWFkNTlmZWNjNzE1ZmYwYTA5YjFjMzU1OGI3YjM0MmMyLi5kM2U5ODE5YmQ1MzFmODQ4NmEz
MTdhYjlmOWVkODNhOTg4NWJlMmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNzEsNyArNzEsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHBy
ZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFn
ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQogewogICAgIEFT
U0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1
bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IGRmMDkx
OWY3NWFjZjc5YTgzOTI4MzIxMTkwYzVjYjJiYWY3NDdlNGMuLjMwMzZjZDMyZDZjZDgzMmMyMjAy
ODNhODQ0NWE4OTlhNWE2NmNhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JN
YWMubW0KQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEVkaXRvcjo6cGxhdGZvcm1Db3B5Rm9udCgp
CiAgICAgUGFzdGVib2FyZEJ1ZmZlciBwYXN0ZWJvYXJkQnVmZmVyOwogICAgIHBhc3RlYm9hcmRC
dWZmZXIuY29udGVudE9yaWdpbiA9IG1fZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3Rl
Ym9hcmQoKTsKICAgICBwYXN0ZWJvYXJkQnVmZmVyLnR5cGUgPSBsZWdhY3lGb250UGFzdGVib2Fy
ZFR5cGUoKTsKLSAgICBwYXN0ZWJvYXJkQnVmZmVyLmRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZm9udERhdGEuZ2V0KCkpOworICAgIHBhc3RlYm9hcmRCdWZmZXIuZGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZvbnREYXRhLmdldCgpKTsKICAgICBwYXN0ZWJvYXJkLndy
aXRlKHBhc3RlYm9hcmRCdWZmZXIpOwogfQogCkBAIC0yNTAsMTUgKzI1MCwxNSBAQCB2b2lkIEVk
aXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKQogICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0
cmluZygpKTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1h
Z2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQorUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVs
ZW1lbnQpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGlt
YWdlRWxlbWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0Rh
dGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCi1SZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRp
dG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKQogewogICAgIC8vIEZJWE1FOiBUaGUgaW50ZXJmYWNlIHRvIHRoaXMgZnVuY3Rpb24gaXMg
YXdrd2FyZC4gV2UnZCBwcm9iYWJseSBiZSBiZXR0ZXIgb2ZmIHdpdGggdGhyZWUgc2VwYXJhdGUg
ZnVuY3Rpb25zLiBBcyBvZiB0aGlzIHdyaXRpbmcsIHRoaXMgaXMgb25seSB1c2VkIGluIFdlYktp
dDIgdG8gaW1wbGVtZW50IHRoZSBtZXRob2QgLVtXS1ZpZXcgd3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQ6dHlwZXM6XSwgd2hpY2ggaXMgb25seSB1c2VkIHRvIHN1cHBvcnQgT1MgWCBzZXJ2aWNl
cy4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCA0NWQ5MzNlMTNjYTRkMjI1MWM1ZGVkODQ4YWE5
ZTk4NzJjNzY3NDg5Li5iY2E2Njk2ZWJlNmYwZWRkZGRlZTc5YjczYzNlZTE0NDk2ZDgyZmI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2IuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBCbG9iTG9hZGVyOwog
Y2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgUmVhZGFibGVTdHJlYW07CiBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEV4Y2VwdGlvbk9yOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAppbmRleCA1NTll
YmNjNDhjNWYwOTZhYzE5YmFlN2Q5ZjcxOGI3MWYyYTM1MzIyLi40MmY0MTgwZGZhODQyN2UwZTYw
ZjgxZWI3OWIxOTE4N2NhZmRiYTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L05ldHdvcmtTZW5kUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29y
a1NlbmRRdWV1ZS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpw
cm9jZXNzTWVzc2FnZXMoKQogICAgICAgICBib29sIHNob3VsZFN0b3BQcm9jZXNzaW5nID0gZmFs
c2U7CiAgICAgICAgIHN3aXRjaE9uKG1fcXVldWUuZmlyc3QoKSwgW3RoaXNdKGNvbnN0IENTdHJp
bmcmIHV0ZjgpIHsKICAgICAgICAgICAgIG1fd3JpdGVTdHJpbmcodXRmOCk7Ci0gICAgICAgIH0s
IFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgeworICAgICAgICB9LCBbdGhpc10oUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CiAgICAgICAgICAgICBkYXRhLT5mb3JF
YWNoU2VnbWVudChtX3dyaXRlUmF3RGF0YSk7CiAgICAgICAgIH0sIFt0aGlzLCAmc2hvdWxkU3Rv
cFByb2Nlc3NpbmddKFVuaXF1ZVJlZjxCbG9iTG9hZGVyPiYgbG9hZGVyKSB7CiAgICAgICAgICAg
ICBhdXRvIGVycm9yQ29kZSA9IGxvYWRlci0+ZXJyb3JDb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCmluZGV4IDU1MWY3MGY5MTY3YjJiZmNiMjQ0YmIyYjM3
MDBiZmJhYWY1NDc5NmMuLmQyM2NmZWJiNDUwOGJjMzAwOTE1YmI5OTZkM2YxNTA2MmNlMzUwOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCkBAIC00Myw3ICs0
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYjsKIGNsYXNzIEJsb2JMb2Fk
ZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBOZXR3b3JrU2VuZFF1ZXVlIDogcHVibGljIENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NNZXNzYWdlcygpOwogCi0gICAgdXNpbmcgTWVzc2Fn
ZSA9IHN0ZDo6dmFyaWFudDxDU3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPiwgVW5pcXVlUmVmPEJs
b2JMb2FkZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PENTdHJpbmcsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgVW5pcXVlUmVmPEJsb2JMb2FkZXI+PjsKICAgICBE
ZXF1ZTxNZXNzYWdlPiBtX3F1ZXVlOwogCiAgICAgV3JpdGVTdHJpbmcgbV93cml0ZVN0cmluZzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggMTAx
NmRjZjNjMTk5ZTU0Y2E4MTRjMjY0NWE5YTg1OThhNWMxZDM1ZS4uNzUyMzAxN2JhNzI5NDA1NjNi
NzVmNDY2YTY4ZWQxY2NiM2RlZThiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9G
VFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJl
Y3RvcnlEb2N1bWVudC5jcHAKQEAgLTI3Niw5ICsyNzYsOSBAQCB2b2lkIEZUUERpcmVjdG9yeURv
Y3VtZW50UGFyc2VyOjpwYXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExp
bmUpCiAgICAgYXBwZW5kRW50cnkoZmlsZW5hbWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1
bHQuZmlsZVNpemUsIHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0Zp
bGVEYXRlU3RyaW5nKHJlc3VsdC5tb2RpZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJl
Y3RvcnlFbnRyeSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5n
cykKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1
bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQogewotICAgIGF1dG8gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdz
LmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBs
YXRlUGF0aCgpKTsKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBMT0coRlRQLCAiTG9hZGVkIEZU
UERpcmVjdG9yeVRlbXBsYXRlIG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAg
ICByZXR1cm4gYnVmZmVyOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0
IFNlCiAgICAgCiBib29sIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRU
ZW1wbGF0ZSgpCiB7Ci0gICAgc3RhdGljIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHRlbXBsYXRl
RG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0
dGluZ3MoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9j
dW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGlu
Z3MoKSkubGVha1JlZigpOwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHN0b3JpbmcgdGhlIGRh
dGEsIGl0IHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50IGlmIHdlIGNvdWxkIHBhcnNlIHRoZSB0ZW1w
bGF0ZSBkYXRhIGludG8gdGhlCiAgICAgLy8gdGVtcGxhdGUgRG9jdW1lbnQgb25jZSwgc3RvcmUg
dGhhdCBkb2N1bWVudCwgdGhlbiAiY29weSIgaXQgd2hlbmV2ZXIgd2UgZ2V0IGFuIEZUUCBkaXJl
Y3RvcnkgbGlzdGluZy4KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF0dGFjaG1lbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1l
bnRFbGVtZW50LmNwcAppbmRleCA1NmEwNmZjYWYyNzNkMjVkYzRjNzVkY2U1NjlhYWM4ZjFhYTU5
NTI3Li5kMmI4NzQxYTA0NDM0MmM3ZmZkOWU4YTUzM2NjOGExMjBlMjliYWQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0yMjcsNyArMjI3
LDcgQEAgc3RhdGljIGJvb2wgbWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VBdHRhY2ht
ZW50KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6
OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShtaW1lVHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6
aXNQREZNSU1FVHlwZShtaW1lVHlwZSk7CiB9CiAKLXZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50
Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6
OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGF1dG8qIGhvc3RF
bGVtZW50ID0gc2hhZG93SG9zdCgpOwogICAgIGlmICghaXM8SFRNTEltYWdlRWxlbWVudD4oaG9z
dEVsZW1lbnQpIHx8ICFidWZmZXItPnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
dHRhY2htZW50RWxlbWVudC5oCmluZGV4IDU3M2VjMmVhZTFjZGMwNjA5ZjI2MWMzODQwMGJiMDJj
NDgwZjdiZGQuLjY2MWRlYzkzNzZkOGE5ZDZkNDcxN2ZkMGI0Y2U3ZjgyZmYwM2Y3NTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaApAQCAtMzYsNyArMzYs
NyBAQCBjbGFzcyBGaWxlOwogY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIFJlbmRlckF0
dGFjaG1lbnQ7CiBjbGFzcyBTaGFyZWFibGVCaXRtYXA7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1l
bnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoSFRNTEF0dGFjaG1lbnRFbGVtZW50KTsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAg
IHZvaWQgY29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50
JikgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUF0dHJpYnV0ZXMoc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4mJiBuZXdGaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBuZXdDb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuZXdGaWxlbmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1
cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgdXBkYXRlVGh1bWJuYWlsKGNvbnN0IFJlZlB0cjxJbWFnZT4mIHRodW1ibmFpbCk7CiAKICAg
ICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRp
b25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAppbmRleCBlYzgzNTFjMDk3NzQ4YjE0OWE5NDQzOWJhYjY5NTc4ZWU5MDAx
YTBlLi41NjRjMzE1MjllNjljMzY1YWZkZjk3OGU5MjFkMTg1ODQ3ZDQyNWZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTI5MzksNyArMjkzOSw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6Y2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5l
Y2Vzc2FyeSgpCiAgICAgYXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpOwogfQog
Ci12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRp
b25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgaW5pdERhdGEpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVz
dGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIG1lZGlhUGxh
eWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0YS0+
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCmluZGV4IDZiNDA0YWE4NzM1Mjc3N2I0NzE4MzVmMTIwZmYxNTdjZWVkODRhNjkuLjkx
MjhiY2RiZWU1OWQ1ZmQxNzIyZTc0NzE5OGQ1NjI2NGM2ZWY4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC03MjEsNyArNzIxLDcgQEAgcHJpdmF0ZToKIAogICAg
IC8vIENETUNsaWVudAogICAgIHZvaWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJ
Zk5lY2Vzc2FyeSgpIGZpbmFsOwotICAgIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFs
aXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKKyAgICB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVj
ZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VE
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4
IDc3Y2Q0ZjM4MGUyODMyMGU1NDQ0ZjkzOWNhYWQ2MDAzYWFmZTgxZGIuLjQzNzBkNjgxODcyZDk1
YzEwYzBmNGU5NTllMTQ3NDM5YWQ1NzQ0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW1hZ2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3Vt
ZW50LmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6dXBkYXRlRHVy
aW5nUGFyc2luZygpCiAgICAgaWYgKCFtX2ltYWdlRWxlbWVudCkKICAgICAgICAgY3JlYXRlRG9j
dW1lbnRTdHJ1Y3R1cmUoKTsKIAotICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpKQorICAgIGlmIChSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSkKICAg
ICAgICAgbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCktPnVwZGF0ZUJ1ZmZlcigqYnVmZmVy
KTsKIAogICAgIGltYWdlVXBkYXRlZCgpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgSW1hZ2VE
b2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKIHsKICAgICBpZiAoIXBhcnNlcigpLT5pc1N0b3Bw
ZWQoKSAmJiBtX2ltYWdlRWxlbWVudCkgewogICAgICAgICBDYWNoZWRJbWFnZSYgY2FjaGVkSW1h
Z2UgPSAqbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCk7Ci0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGEgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOworICAgICAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGxvYWRlcigpLT5tYWluUmVzb3Vy
Y2VEYXRhKCk7CiAKICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIG11bHRpcGFydCBpbWFnZSwgbWFr
ZSBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgcGFydCwgc2luY2UgdGhlIHJlc291cmNlIGRhdGEKICAg
ICAgICAgLy8gd2lsbCBiZSBvdmVyd3JpdHRlbiBieSB0aGUgbmV4dCBwYXJ0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApp
bmRleCBhN2NhNzE2MmQ3OTFlZDdmYmE4Y2M5MWMyMWEyY2YzYWY2ZTY5YTdlLi4xODc5M2ZmMDY2
MzM4ZmI2MGEzNGRlYzkwOWJjMmRkZDI4YmVhZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtODUwLDcgKzg1
MCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50
ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYm
IGhhbmRsZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9u
c2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIGlmIChhdXRv
KiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQo
KSkKICAgICAgICAgbmV0d29ya0FnZW50LT5pbnRlcmNlcHRSZXNwb25zZShyZXNwb25zZSwgaWRl
bnRpZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggOGU2NWM0ZWIxMDIzMzUyMWY0
OGM3ZjRiMTIwYWQyYzg5MDlhMDdiYS4uZDI5NTc4MTBkODM4MmM5MzUxZDVhOTNmMTQ0YWVkMTQ5
M2JjYzY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaApAQCAtOTMsNyArOTMsNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwog
Y2xhc3MgU2hhZG93Um9vdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiBjbGFzcyBUaW1lckJhc2U7CiBjbGFzcyBXZWJLaXROYW1lZEZsb3c7CiBj
bGFzcyBXZWJTb2NrZXRDaGFubmVsOwpAQCAtMjM2LDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQg
aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik+JiYpOwotICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNv
bnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25z
ZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYpOwogCiAgICAgc3RhdGljIHZvaWQg
YWRkTWVzc2FnZVRvQ29uc29sZShQYWdlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29u
c29sZU1lc3NhZ2U+KTsKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KTsKQEAgLTQ0MSw3ICs0NDEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29s
IHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25z
ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAg
ICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwg
UmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYm
KTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRp
YyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBzdGQ6
OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwogCkBAIC0xMjg5LDcgKzEy
ODksNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJl
cXVlc3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgRgogICAgICAgICBpbnRlcmNlcHRSZXF1ZXN0
SW1wbCgqYWdlbnRzLCBsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi1pbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1l
JiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK2lubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJh
bWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxl
cikKIHsKICAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNl
cHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UpKTsKICAgICBpZiAoYXV0byogYWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50cyhmcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCmluZGV4IDYxZTRi
YzNiYTAxOWVlMjVlNWM4YmMyMjFkZmY2MDc3ZWRkYjg2M2QuLmYwNjQwM2E2MjM0YjQyYjZhZDJh
ODBiMDE5NGE1OTZkODlmNmU2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCkBAIC00NSw3ICs0
NSw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1
ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImIGxvCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjppbnRlcmNlcHRSZXF1ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVy
bmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFu
ZGxlcikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNw
b25zZUludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjppbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UsIGlkZW50aWZpZXIsIFdURk1vdmUo
aGFuZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCmluZGV4IGY3NjExNGNlOThmNDJhN2ZmOTA2
YTQ4ZDA0MjBiOTYzMDVkMzY5MTQuLjA3YjQyMWI1OWMxNTU1ZTFhMjkxZTE4ZWJiMjYyMjEyMmYx
NjU4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKQEAgLTM2LDIwICszNiwyMCBAQCBjbGFzcyBGcmFt
ZTsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVx
dWVzdChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBi
b29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2Fk
ZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0
aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAg
c3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4pPiYmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1
ZXN0SW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBz
dGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVl
c3RJbnRlcm5hbChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik+JiYpOwotICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwo
Y29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3Bv
bnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIH07CiAKIGlu
bGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0
UmVxdWVzdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKQEAgLTc2LDcgKzc2LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2EKICAgICBpbnRlcmNl
cHRSZXF1ZXN0SW50ZXJuYWwobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShj
b25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIp
CitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJl
c3BvbnNlKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAg
aW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbCgqZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBX
VEZNb3ZlKGhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IGI5OTc2YWYyZTRkZDQwOWE4OWMzYTQyNDQxMzlhM2U5
OWI0ZTdjMGIuLjM5YjAxMWNmMDZmN2YzODUzMjQzZTBhNzYzYTNiMWQ0NTQ5MDQxNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApA
QCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZENhY2hlZFJl
c291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBDYWNoZWRSZXNvCiAgICAgcmVzb3VyY2VE
YXRhLT5zZXRDYWNoZWRSZXNvdXJjZShjYWNoZWRSZXNvdXJjZSk7CiB9CiAKLXZvaWQgTmV0d29y
a1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmdOYW1lKQordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRkUmVzb3VyY2VTaGFy
ZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKQogewogICAg
IFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gcmVzb3VyY2VEYXRhRm9yUmVxdWVzdElkKHJl
cXVlc3RJZCk7CiAgICAgaWYgKCFyZXNvdXJjZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IDA0YjM1NTA3MzM3YzhiODYxYjM4
M2Q4ODEzZGMwM2YyYTM4OTE3MjAuLmRhYWU1ZmU0YTMxZTMxNTkzNjM3OTA0MjNmNWZiZDMzNzBj
NWNkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oCkBAIC00MSw3ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhY2hl
ZFJlc291cmNlOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFRleHRSZXNvdXJjZURl
Y29kZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZXNEYXRh
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTg5LDggKzg4LDggQEAgcHVibGlj
OgogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlcigpIGNvbnN0IHsg
cmV0dXJuIG1fZGVjb2Rlci5jb3B5UmVmKCk7IH0KICAgICAgICAgdm9pZCBzZXREZWNvZGVyKFJl
ZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiYmIGRlY29kZXIpIHsgbV9kZWNvZGVyID0gV1RGTW92
ZShkZWNvZGVyKTsgfQogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyLmNvcHlSZWYoKTsgfQotICAgICAgICB2b2lkIHNldEJ1ZmZl
cihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2J1ZmZlciA9IFdURk1vdmUoYnVm
ZmVyKTsgfQorICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIuY29weVJlZigpOyB9CisgICAgICAgIHZvaWQgc2V0QnVm
ZmVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2J1ZmZlciA9
IFdURk1vdmUoYnVmZmVyKTsgfQogCiAgICAgICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q2VydGlm
aWNhdGVJbmZvPiYgY2VydGlmaWNhdGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0
ZUluZm87IH0KICAgICAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZUluZm8oY29uc3Qgc3RkOjpvcHRp
b25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8pIHsgbV9jZXJ0aWZpY2F0ZUlu
Zm8gPSBjZXJ0aWZpY2F0ZUluZm87IH0KQEAgLTEyMSw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rl
cj4gbV9kZWNvZGVyOwogICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YUJ1ZmZlcjsK
LSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICAgICAgc3RkOjpvcHRpb25hbDxD
ZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJbmZvOwogICAgICAgICBDYWNoZWRSZXNvdXJj
ZSogbV9jYWNoZWRSZXNvdXJjZSB7IG51bGxwdHIgfTsKICAgICAgICAgSW5zcGVjdG9yUGFnZUFn
ZW50OjpSZXNvdXJjZVR5cGUgbV90eXBlIHsgSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291
cmNlIH07CkBAIC0xNDUsNyArMTQ0LDcgQEAgcHVibGljOgogICAgIFJlc291cmNlRGF0YSBjb25z
dCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICB2b2lkIG1heWJlRGVjb2RlRGF0
YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgdm9pZCBhZGRDYWNoZWRS
ZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzb3VyY2UqKTsKLSAgICB2
b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOworICAg
IHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGlu
Z05hbWUpOwogICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0YShjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCk7CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRhRm9yVVJMKGNvbnN0IFN0cmluZyYg
dXJsKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IGU1OGJjYzJhYTdmODE0ZDk3N2ZmN2Q4ZjI2
MjNjMzdlY2JhN2MxZmMuLjIyM2E2NzY3YmUyNzFlZTRkMjJkZWQxZDZiZTYwY2E3MDc4MTdjODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQgSW5zcGVjdG9y
TmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIEZ1
bmN0aW9uPHZvCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RJbnRlcmNlcHRlZChy
ZXF1ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci5yZXF1ZXN0KCkp
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lkIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1fZW5hYmxlZCk7CiAgICAgQVNTRVJU
KG1faW50ZXJjZXB0aW9uRW5hYmxlZCk7CkBAIC0xMjQzLDcgKzEyNDMsNyBAQCBQcm90b2NvbDo6
RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhS
ZXNwb25zZShjb25zdAogICAgICAgICBvdmVycmlkZVJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIG92ZXJyaWRlUmVzcG9uc2UubWltZVR5cGUo
KSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGE7CiAgICAgaWYgKGJh
c2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVu
dCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTI3MSw3ICsxMjcxLDcgQEAgUHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1
ZXN0V2l0aFJlc3BvbnMKICAgICBpZiAobG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQog
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJsZSB0byBmdWxmaWxsIHJlcXVlc3Qs
IGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zKTsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGE7CiAg
ICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNv
ZGUoY29udGVudCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKaW5kZXggOGY2
ZmJjYzI5M2FlYmY4YjlkNWM5NDVkMjgyOWExNTI3Yjc0YmM3Zi4uNmJjZDg3ZGRjZDhiMDQ0MTMw
OGQxZDAxZWNhNmIwZTZkYTE0MTNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCkBAIC0xMjMsNyArMTIzLDcg
QEAgcHVibGljOgogICAgIGJvb2wgd2lsbEludGVyY2VwdChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KTsKICAgICBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik7CiAgICAgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7Ci0gICAgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHZvaWQg
aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiAgICAgdm9pZCBpbnRlcmNl
cHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKT4mJik7CiAKICAgICB2b2lkIHNlYXJjaE90aGVyUmVxdWVzdHMoY29uc3QgSlNDOjpZ
YXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYsIFJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jik7CkBAIC0xODUsNyArMTg1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNl
KTsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgotICAgICAg
ICBQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgb3JpZ2lu
YWxSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICBQ
ZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgb3JpZ2luYWxS
ZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAg
ICAgICAgICAgIDogbV9vcmlnaW5hbFJlc3BvbnNlKG9yaWdpbmFsUmVzcG9uc2UpCiAgICAgICAg
ICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAg
ICAgICAgIHsgfQpAQCAtMjAyLDcgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXNw
b25kKG1fb3JpZ2luYWxSZXNwb25zZSwgbnVsbHB0cik7CiAgICAgICAgIH0KIAotICAgICAgICB2
b2lkIHJlc3BvbmQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGEpCisgICAgICAgIHZvaWQgcmVzcG9uZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9yZXNwb25kZWQpOwogICAgICAgICAgICAgaWYg
KG1fcmVzcG9uZGVkKQpAQCAtMjE1LDcgKzIxNSw3IEBAIHByaXZhdGU6CiAKICAgICBwcml2YXRl
OgogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKLSAgICAgICAg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgICAgICBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOwogICAgICAgICBib29sIG1fcmVzcG9uZGVk
IHsgZmFsc2UgfTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggYTNjNjBjM2I2OTZhODNkODMx
ZDg5N2Y4MTY3YTMyYmUyMzczNzFiYS4uYTRmZmQxMzYxY2RkZTVhYjdkOTczY2QwMGQxOWE5MTBh
ZTllZDI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAwLDEzICsxMDAsMTMgQEAgc3RhdGljIGJvb2wg
ZGVjb2RlQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29uc3Qg
U3RyaW5nJiB0ZXgKIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRl
bnQoRnJhbWUqIGZyYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQog
ewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5t
YWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgp
LT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCi1ib29sIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRF
bmNvZGUsIFN0cmluZyogcmVzdWx0KQorYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1
ZmZlckNvbnRlbnQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5n
KiByZXN1bHQpCiB7CiAgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkg
OiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQpAQCAt
MTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQo
UHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgRnJhCiAgICAgaWYgKCFsb2FkZXIp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGJvb2wgc3VjY2Vz
cyA9IGZhbHNlOwogICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHVybCwg
bG9hZGVyLT51cmwoKSkpIHsKICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5o
CmluZGV4IGI1MWFkZGIxYmQ4ZjJjY2U2OTU2MDc5OWNkMWQ5NTJkMmRlNDI4MzguLjNkNWU1NjZk
YmUwYzVlYzExZDllOGRmNjdmY2YwYTcwOTg4YTJmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtNDksNyArNDks
NyBAQCBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JPdmVybGF5OwogY2xh
c3MgUGFnZTsKIGNsYXNzIFJlbmRlck9iamVjdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudCBmaW5h
bCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OlBhZ2VCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3Rv
clBhZ2VBZ2VudCk7CkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICAgICAgT3RoZXJSZXNv
dXJjZSwKICAgICB9OwogCi0gICAgc3RhdGljIGJvb2wgc2hhcmVkQnVmZmVyQ29udGVudChSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wg
d2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOworICAgIHN0YXRpYyBib29sIHNoYXJl
ZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJl
c3VsdCk7CiAgICAgc3RhdGljIFZlY3RvcjxDYWNoZWRSZXNvdXJjZSo+IGNhY2hlZFJlc291cmNl
c0ZvckZyYW1lKEZyYW1lKik7CiAgICAgc3RhdGljIHZvaWQgcmVzb3VyY2VDb250ZW50KEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgRnJhbWUqLCBjb25zdCBVUkwmLCBTdHJpbmcq
IHJlc3VsdCwgYm9vbCogYmFzZTY0RW5jb2RlZCk7CiAgICAgc3RhdGljIFN0cmluZyBzb3VyY2VN
YXBVUkxGb3JSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXIuY3BwCmluZGV4IDk3NGYyMmEyZGE3YTAyYzY0ODljMWI1MGE1YTIyMGZlNDRi
MTk2MzAuLjZhZTUyNjU5N2NkMjg2MzFiZTc5NTBmYzMzNTM2ZjhmMzQ3ZDdhZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lk
IENvbnRlbnRGaWx0ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiB7CiAgICAgQVNTRVJUKHdpbGxIYW5kbGVQcm92aXNpb25hbExvYWRG
YWlsdXJlKGVycm9yKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERh
dGEgeyBtX2Jsb2NraW5nQ29udGVudEZpbHRlci0+cmVwbGFjZW1lbnREYXRhKCkgfTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhIHsgbV9ibG9ja2lu
Z0NvbnRlbnRGaWx0ZXItPnJlcGxhY2VtZW50RGF0YSgpIH07CiAgICAgUmVzb3VyY2VSZXNwb25z
ZSByZXNwb25zZSB7IFVSTCgpLCAidGV4dC9odG1sIl9zLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+
KHJlcGxhY2VtZW50RGF0YS0+c2l6ZSgpKSwgIlVURi04Il9zIH07CiAgICAgU3Vic3RpdHV0ZURh
dGEgc3Vic3RpdHV0ZURhdGEgeyBXVEZNb3ZlKHJlcGxhY2VtZW50RGF0YSksIGVycm9yLmZhaWxp
bmdVUkwoKSwgcmVzcG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxp
dHk6OkhpZGRlbiB9OwogICAgIFNldEZvclNjb3BlPGJvb2w+IGxvYWRpbmdCbG9ja2VkUGFnZSB7
IG1faXNMb2FkaW5nQmxvY2tlZFBhZ2UsIHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggZDA5NjFhZmM3
YjdlNzNlNjE3ZTc4MDZhNjdjNmZmZDA5ZjE1Y2E5My4uOTRjMzZlZjUwN2VmMDM3YjcwN2M5MGQx
OWE3YTFhNzQ0NWIxZjcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Ny
b3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENy
b3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQoRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyJiBsb2FkZXIsCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QgPSBj
cmVhdGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LCBsb2FkZXIuc2VjdXJp
dHlPcmlnaW4oKSwgbG9hZGVyLnJlZmVycmVyKCkpOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7
CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAg
YXV0byBpZGVudGlmaWVyID0gbG9hZGVyLmRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkubG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShwcmVmbGlnaHRSZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFs
UG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zIHsgfSwg
eyB9LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAppbmRleCBmZGZkMGVhYWYzYTUwMThkOTAwYmExYTZkN2E0OGFlNTczMmYz
NGM4Li4wYWI0ZTE0ZjljZTM1YTFjY2Y2ZGQ2YmNlODMwMjQxNmMxZWNkZWNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCBEb2N1
bWVudExvYWRlcjo6fkRvY3VtZW50TG9hZGVyKCkKICNlbmRpZgogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEo
KSBjb25zdAogewogICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuIG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5jb3B5KCk7CkBAIC0xNjQ5LDcgKzE2
NDksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJjZXMoKQogICAg
IG1fc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lci5zdG9wKCk7CiB9CiAKLUNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0
CitTaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fcGFyc2VkQXJjaGl2ZURhdGEuZ2V0KCk7CiB9CkBAIC0xNjY4LDcg
KzE2NjgsNyBAQCBBcmNoaXZlUmVzb3VyY2UqIERvY3VtZW50TG9hZGVyOjphcmNoaXZlUmVzb3Vy
Y2VGb3JVUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAKIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2UoKSBjb25zdAogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFkYXRh
KQogICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvJiByZXNw
b25zZSA9IHRoaXMtPnJlc3BvbnNlKCk7CkBAIC0yMjUyLDcgKzIyNTIsNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKIAogICAgIGZy
YW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29tbWl0dGVkID0gZmFsc2U7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0
YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBt
YWluUmVzb3VyY2VEYXRhKCk7CiAgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCkBAIC0yMjg5LDcg
KzIyODksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKICAgICBt
X2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5nZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhpY29uRGVj
aXNpb25zKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9y
SWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRG9j
dW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWlu
dDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gaWNvbiA9IG1f
aWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uLnRha2UobG9hZElkZW50aWZpZXIpOwogCkBAIC0yMzEw
LDcgKzIzMTAsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudAogICAgIHJhd0ljb25Mb2FkZXIt
PnN0YXJ0TG9hZGluZygpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRp
bmdJY29uKEljb25Mb2FkZXImIGxvYWRlciwgU2hhcmVkQnVmZmVyKiBidWZmZXIpCit2b2lkIERv
Y3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImIGxvYWRlciwgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogewogICAgIC8vIElmIHRoZSBEb2N1bWVudExv
YWRlciBoYXMgZGV0YWNoZWQgZnJvbSBpdHMgZnJhbWUsIGFsbCBpY29uIGxvYWRzIHNob3VsZCBo
YXZlIGFscmVhZHkgYmVlbiBjYW5jZWxsZWQuCiAgICAgQVNTRVJUKG1fZnJhbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCA2YmQzMmZjMmVjZjQ2YWY3Y2Q5Mzc5
YTlkMDBjOTkxMTZlYjdhNmI1Li40YmY5NmY3ZGJkZDQ3MzczODZjYzU0OWU4YzkyMWU3ZGM1MmI0
OTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtNzUsNyArNzUs
NyBAQCBjbGFzcyBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogY2xhc3MgQ2FjaGVkUmF3UmVz
b3VyY2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRGaWx0ZXI7
Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogc3Ry
dWN0IEN1c3RvbUhlYWRlckZpZWxkczsKIGNsYXNzIEZvcm1TdGF0ZTsKIGNsYXNzIEZyYW1lOwpA
QCAtODQsNyArODQsNyBAQCBjbGFzcyBJY29uTG9hZGVyOwogY2xhc3MgUGFnZTsKIGNsYXNzIFBy
ZXZpZXdDb252ZXJ0ZXI7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTV0NsaWVudENvbm5lY3Rp
b247CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFN1YnN0aXR1dGVSZXNvdXJjZTsK
QEAgLTE3OSw3ICsxNzksNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBGcmFtZUxv
YWRlciogZnJhbWVMb2FkZXIoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdWJyZXNvdXJj
ZUxvYWRlciogbWFpblJlc291cmNlTG9hZGVyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRh
KCkgY29uc3Q7CiAgICAgCiAgICAgRG9jdW1lbnRXcml0ZXImIHdyaXRlcigpIGNvbnN0IHsgcmV0
dXJuIG1fd3JpdGVyOyB9CiAKQEAgLTIzNiw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFkZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYm
KTsKICAgICBSZWZQdHI8QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmlu
ZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIFNoYXJlZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlmCkBAIC00MDMsOCArNDAzLDggQEAgcHVibGljOgog
I2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0SWNvbkxvYWRpbmcoKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3Qg
bG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYp
OwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgU2hhcmVkQnVmZmVy
Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJv
b2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRp
bmdJY29uKEljb25Mb2FkZXImLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICAgICBjb25z
dCBWZWN0b3I8TGlua0ljb24+JiBsaW5rSWNvbnMoKSBjb25zdCB7IHJldHVybiBtX2xpbmtJY29u
czsgfQogCkBAIC02MTMsNyArNjEzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwog
I2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJlZlB0cjxBcmNo
aXZlPiBtX2FyY2hpdmU7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFy
c2VkQXJjaGl2ZURhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZl
RGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2VzQ2xpZW50S25v
d3NBYm91dDsKQEAgLTYzMiw3ICs2MzIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV93YWl0aW5n
Rm9yTmF2aWdhdGlvblBvbGljeSB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBM
aW5rSWNvbj4gbV9pY29uc1BlbmRpbmdMb2FkRGVjaXNpb247Ci0gICAgSGFzaE1hcDxzdGQ6OnVu
aXF1ZV9wdHI8SWNvbkxvYWRlcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVy
Kik+PiBtX2ljb25Mb2FkZXJzOworICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPEljb25Mb2Fk
ZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4+IG1f
aWNvbkxvYWRlcnM7CiAgICAgVmVjdG9yPExpbmtJY29uPiBtX2xpbmtJY29uczsKIAogI2lmIEVO
QUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggMjNlNjBhY2Y1MTIzMTg3NTI2MTUw
MDRiOWVkMDJlMGU3YTIxNTBiOC4uYjljNDEzNTI1Njc2MjY3MjE5MDdhZjM2NmRmYjFkZWM3OTRj
MjQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAog
ICAgIGxvYWRUaW1pbmcubWFya1N0YXJ0VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFi
bGVMb2FkZXJPcHRpb25zLnNuaWZmQ29udGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJv
bm91cyByZXF1ZXN0cy4KLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7
CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBt
YWtlT2JqZWN0SWRlbnRpZmllcjxSZXNvdXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1
aW50NjRfdD46Om1heCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5k
ZXggMGRhZjRjN2FiNjA1OWJkNDdhN2NiYmQ4YzgzMTczNGM0YmIxMDM0Ny4uZmUzMmQ5NGU0Mjg2
NTlkNWQ2MWRhYmE3MjE5OGViMTk1OWJhMjVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAKQEAgLTI3OCw3ICsyNzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5k
VXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYpIGZpbmFsIHsgfQogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBm
aW5hbCB7IH0KLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJl
cXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5h
bCB7IH0KICAgICB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4
dENoZWNraW5nUmVzdWx0KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKaW5kZXggZTkxYzhmNjBkM2E5OGE5ZWI4ZGEzY2U2YjQ0ZmFkMmJjM2ViNTU0Ny4uNmM1
ZWUzYTliMzFhZThiODRkYjkyMGI2NmViZjIxNGYyNmVjOWFkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0zMTA2LDcgKzMxMDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVy
Ojpsb2FkUG9zdFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmlu
ZyYgcmVmZQogICAgIH0pOwogfQogCi1SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0
IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1
ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCitSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENy
ZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhl
YWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsK
ICAgICBBU1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBT
ZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCkt
PnJlZmVycmVyUG9saWN5KCksIHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBA
IC0zMTU0LDcgKzMxNTQsNyBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAo
IWRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hy
b25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAg
ICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmxvYWRlclN0cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlk
ZW50aWZpZXIsIG5ld1JlcXVlc3QsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9y
aWdpbmFsUmVxdWVzdEhlYWRlcnMsIGVycm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAg
ICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIp
KTsKKyAgICAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZl
cikpOwogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3Qo
KS5tYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3Bv
bnNlLCBkYXRhKTsKICAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5s
b2dTdWJyZXNvdXJjZUxvYWRpbmcoJm1fZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAg
ICAgICAgICAgICAgIChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9u
KSA/IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZ
ZXMgOiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6
Tm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggOWMzZjc0YzQyZGI4ZTdi
YWU5NTQwNWY1NDBmM2UyODcxOTgyZTkxNC4uNzVhZTI4NGMyYzM0ZmRkODllODU2NGRhNDM5ZGE3
NzI1YWZiYzhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTU5LDcgKzU5
LDcgQEAgY2xhc3MgQ2FjaGVkRnJhbWVCYXNlOwogY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNzIENh
Y2hlZFJlc291cmNlOwogY2xhc3MgQ2hyb21lOwotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIERv
Y3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGlj
OgogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgbG9hZEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYpOwogI2VuZGlmCi0gICAgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25z
JiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKTsKKyAgICBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25z
dCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNoYW5n
ZUxvY2F0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBFdmVudCosIGNvbnN0
IFJlZmVycmVyUG9saWN5JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgc3RkOjpvcHRp
b25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQsIGNvbnN0IEF0b21TdHJp
bmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29uc3QgU3lzdGVtUHJldmlld0lu
Zm8mID0geyB9LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3Rk
OjpudWxsb3B0KTsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1lTG9hZFJlcXVlc3QmJiwg
RXZlbnQqID0gbnVsbHB0ciwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4m
JiA9IHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oCmluZGV4IDRmZDYzN2E5MDE0YTVkNDFhMjI2ZWU0NTkxN2I2YjNlOWE3OTBlYmIuLmVlOWYz
ZDBjOTg0ZDQ1NWNiYjkxYjQ2MGMxYmMxMjg5OGQxMjM2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC05OCw3ICs5OCw3IEBAIGNsYXNzIFJlc291cmNl
SGFuZGxlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgV2lkZ2V0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmluZGV4IGFlZjY2OGJkNjNlZDVm
Y2Q0NWU2MWU5ZDFmMTA3Y2ZiNmFlZjI2NGIuLjI5ZDJlM2Y0NjE0MGFhYTUxMTYwZTZhMjg1NjJm
MzcwZTM3MWViMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJh
dGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCkBAIC01
MSw3ICs1MSw3IEBAIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJl
c291cmNlTG9hZGVyOwogCiBzdHJ1Y3QgRmV0Y2hPcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKaW5kZXggNjMzNzU1
OTYzMjAwMTQ2MzgyODllMjgyNjA0YzU1YjBhZjQ0NTMxMy4uNjA0M2FjOWJlMjY3ZWE0ZmJjNzFl
MTExOGI5MDc5MTU1ZTM5MTUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lk
IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZQogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVu
Z3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAot
dm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUo
YnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQg
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKK3ZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgUmVmPE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAppbmRleCA0OGJiMjE1M2M5M2Yy
ZGM3NTRlMjA3MzIyNTJjMDUwOWNmNzA0YTQxLi5iNTE3NGVkYzk0Yjk5MjM5MDIwNWYwZmFkNDUy
ZWE1YWMzODc4OTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVz
dCYmKT4mJiBjYWxsYmFjaykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xp
Y3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5
cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5
cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJv
ciYpIG92ZXJyaWRlOwogCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxs
Q2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNl
bChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwg
bG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlEb25lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKaW5kZXggNDg0
MGYxNGNmMjVkZGYxZjYwMGFlOTZkYWM2M2Q5NzExYzhjOTQwNy4uNTJlMWUyM2EyYzU0NTRiM2Iy
ZmEwYWU3ZTJkMTVlYTNjYzNjYWI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBS
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvckJ5dGVzKFJl
c291cmNlQ3J5cHRvZ3JhcGhpY0RpZwogICAgIHJldHVybiB7IGFsZ29yaXRobSwgY3J5cHRvRGln
ZXN0LT5jb21wdXRlSGFzaCgpIH07CiB9CiAKLVJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBj
cnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCitS
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1
ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0sIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICBhdXRvIGNyeXB0b0Rp
Z2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUodG9DcnlwdG9EaWdlc3RBbGdvcml0aG0o
YWxnb3JpdGhtKSk7CiAgICAgaWYgKGJ1ZmZlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCmluZGV4IGFlYTNkYzU3Yzg3ODMx
MzAxM2E1YjE2YzkzOWI3NzRlZDQ4NDMyNGMuLjgzYjg2MTNjZmRhMjMyOWFlMzBiYmY2YWJjMTRi
OTlkNDQyMzdiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0LmgKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0IHsKICAgICBlbnVtIGNsYXNzIEFsZ29yaXRobSB7CkBAIC03NSw3ICs3NSw3IEBAIHN0ZDo6
b3B0aW9uYWw8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VFbmNvZGVk
Q3J5cHRvZ3JhcGhpY0RpZ2VzCiAKIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VDcnlwdG9ncmFwaGlj
RGlnZXN0PiBkZWNvZGVFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0KGNvbnN0IEVu
Y29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QmKTsKIAotUmVzb3VyY2VDcnlwdG9ncmFw
aGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZmZXIoUmVzb3VyY2VDcnlw
dG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0sIGNvbnN0IFNoYXJlZEJ1ZmZlciopOworUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZmZXIo
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0sIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqKTsKIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGlj
RGlnZXN0Rm9yQnl0ZXMoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0sIGNv
bnN0IHZvaWQqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYjg0OTFhYjMwZTQ4YzczMTZiODg4MWJiZDM5Y2Yw
NGExYzRmNmIwOS4uNmRlYmIyNTg4YTNlODJiMjFjNjFkN2U4ZjM2ZTRmNGJiYmEyNWU2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xODgsNyArMTg4LDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6aW5pdChSZXNvdXJjZVJlcXVlc3QmJiBjbGllbnRSZXF1
ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2kKICAgICB9KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFJlc291cmNlTG9hZGVy
OjpkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgZGlkUmVj
ZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJl
YWNoZWRUZXJtaW5hbFN0YXRlKCkpCkBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRlcjo6d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKICAgICAgICAgbV9oYW5kbGUt
PmNhbmNlbCgpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwg
RGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmFk
ZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlw
ZSkKIHsKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZl
cmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CkBAIC0zNDIsNyAr
MzQyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICAgICAgbV9yZXNvdXJjZURhdGEu
YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAKLWNvbnN0IFNoYXJlZEJ1ZmZlciogUmVzb3VyY2VM
b2FkZXI6OnJlc291cmNlRGF0YSgpIGNvbnN0Citjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9y
ZXNvdXJjZURhdGEuZ2V0KCkuZ2V0KCk7CiB9CkBAIC01NTAsMTQgKzU1MCwxNCBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgsIGxvbmcgbAogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3Ro
LCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBh
eWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgs
IGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewotICAgIC8vIFRo
aXMgbWV0aG9kIHNob3VsZCBvbmx5IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEgU2hhcmVkQnVmZmVy
LgorICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KICAgICBBU1NFUlQoIWJ1ZmZlciB8fCAoIWRhdGEgJiYg
IWxlbmd0aCkpOwogCiAgICAgLy8gUHJvdGVjdCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9k
IHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvCkBAIC03MzQsNyArNzM0LDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ24KICAgICBkaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5n
dGgsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KIAotdm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgZGlkUmVj
ZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZEJ5dGVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggMzdk
NjY3ZDgzNzZkMDBkYTc4OTQ2MmRjY2UxYWRiMzM2ODg5ZmQwZC4uNzBlYTIyMGRjMTdjNzM3NmVk
NjYwZmE3YTYxYTg0ZTMxYzMzNGNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluaXQo
UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCi0g
ICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRlbGl2ZXJSZXNwb25zZUFuZERhdGEo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0TG9h
ZGluZygpCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFz
ZVJlc291cmNlcygpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogCi0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiByZXNv
dXJjZURhdGEoKSBjb25zdDsKKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiByZXNv
dXJjZURhdGEoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAg
ICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKQEAgLTEwOCw3ICsx
MDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxl
cik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNp
Z25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcg
bG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIApAQCAtMTY3LDcgKzE2Nyw3
IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgd2FzQ2FuY2VsbGVkKCkgY29uc3QgeyByZXR1cm4g
bV9jYW5jZWxsYXRpb25TdGF0dXMgPj0gQ2FuY2VsbGVkOyB9CiAKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAgICAKICAgICB2b2lkIHNldFJlZmVycmVyUG9saWN5
KFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KSB7IG1fb3B0aW9ucy5yZWZlcnJlclBvbGlj
eSA9IHJlZmVycmVyUG9saWN5OyB9CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3ko
KSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3k7IH0KQEAgLTE5Miw3ICsx
OTIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291
cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJj
ZUVycm9yJikgPSAwOwogCi0gICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCos
IHVuc2lnbmVkLCBTaGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgYWRk
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciosIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdm9pZCBsb2FkRGF0YVVSTCgpOwogICAgIHZv
aWQgZmluaXNoTmV0d29ya0xvYWQoKTsKIApAQCAtMjAzLDcgKzIwMyw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNl
UmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2
b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0
JiYsIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxl
Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cAppbmRleCA3MTk2ODJjNjQ2NDgyMDM0MDE3ZjY4ZTVmYTY5Mzg4YmVkYjJlZWFhLi4zN2QwYmI4
MjFhYmQ4NmE5YjU2MDZlMTI3ZWZjOTQxMmE1MWJiMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIFN1YnJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgsIGxvbgogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBu
dWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBT
dWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBh
eWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICNpZiBVU0UoUVVJQ0tf
TE9PSykKICAgICBpZiAoYXV0byBwcmV2aWV3TG9hZGVyID0gbV9wcmV2aWV3TG9hZGVyLmdldCgp
KSB7CkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGUKICAgICBkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERh
dGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAg
QVNTRVJUKG1fcmVzb3VyY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5oCmluZGV4IDM3MjNiNmI5YWI5ZmRkYWFhNTU3NGJmYjBlNmYzOGNlZDdhZWZiNzUuLjgz
MmM5ZjBlNzNkMzg0NjRhNzk1ZjQwMzg2MGY3OWMzNGU3M2JjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25l
ZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25z
dCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBvdmVycmlkZTsKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBF
eHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVzcG9uc2VDcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2woY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4g
Y2hlY2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHByZXZpb3VzUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNl
UmVxdWVzdCYgbmV3UmVxdWVzdCk7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
Y29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVu
Y29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwog
CiAgICAgdm9pZCBub3RpZnlEb25lKExvYWRDb21wbGV0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKaW5kZXggZjY2MjkyZTMxY2JlYjQyNjQzMGE4MzJhZGVm
NDI5OTFjYjU3NDM2ZS4uYThhNDliNDdmOTI3MzQyNzRiYTRjZWFiYzE3MDdmZWZhN2I2NjQwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKQEAgLTQzLDcgKzQzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBTdWJz
dGl0dXRlRGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGNvbnRlbnQsIGNvbnN0IFVSTCYgZmFp
bGluZ1VSTCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFNlc3Npb25IaXN0b3J5
VmlzaWJpbGl0eSBzaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KQorICAgICAgICBTdWJzdGl0
dXRlRGF0YShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjb250ZW50LCBjb25zdCBV
UkwmIGZhaWxpbmdVUkwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTZXNzaW9u
SGlzdG9yeVZpc2liaWxpdHkgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSkKICAgICAgICAg
ICAgIDogbV9jb250ZW50KFdURk1vdmUoY29udGVudCkpCiAgICAgICAgICAgICAsIG1fZmFpbGlu
Z1VSTChmYWlsaW5nVVJMKQogICAgICAgICAgICAgLCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQpAQCAt
NTQsMTQgKzU0LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc1ZhbGlk
KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50ICE9IG51bGxwdHI7IH0KICAgICAgICAgYm9vbCBz
aG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRSZXZl
YWxUb1Nlc3Npb25IaXN0b3J5ID09IFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6VmlzaWJsZTsg
fQogCi0gICAgICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogY29udGVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGVudC5nZXQoKTsgfQorICAgICAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBjb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50LmdldCgpOyB9CiAgICAgICAgIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlLm1pbWVUeXBl
KCk7IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcoKSBjb25zdCB7IHJldHVy
biBtX3Jlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKTsgfQogICAgICAgICBjb25zdCBVUkwmIGZh
aWxpbmdVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZhaWxpbmdVUkw7IH0KICAgICAgICAgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9
CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
Y29udGVudDsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fY29udGVu
dDsKICAgICAgICAgVVJMIG1fZmFpbGluZ1VSTDsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBt
X3Jlc3BvbnNlOwogICAgICAgICBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgbV9zaG91bGRSZXZl
YWxUb1Nlc3Npb25IaXN0b3J5IHsgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4gfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCAzNDRjYTk4
Mjg1NzUyZThmMTAxNzBmMjMyMDQ5ZTBjYTJhZDRmYzg2Li5jZjJkZTBjNjJkOTVmMzMyNWI0MmI0
NmUyNDAzNzc0NDEwNzQyYTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
c3RpdHV0ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVS
ZXNvdXJjZS5oCkBAIC0zNywxNCArMzcsMTQgQEAgcHVibGljOgogCiAgICAgY29uc3QgVVJMJiB1
cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQotICAgIFNoYXJlZEJ1ZmZl
ciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZm
ZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0KKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0KICAgICB2b2lkIGFwcGVuZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVu
Z3RoKTsgfQogICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0YS5lbXB0eSgpOyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVy
UmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHByb3RlY3Rl
ZDoKLSAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKKyAgICBTdWJzdGl0dXRlUmVzb3Vy
Y2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiAgICAgICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQogICAg
ICAgICAsIG1fcmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpCiAgICAgICAgICwgbV9kYXRhKFdU
Rk1vdmUoZGF0YSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA3MjBhOTI3MWNkMzI2NWVmNGNlMjMyNjFh
MjZkYjBkODI4YzYzMzQ2Li41MTk3OGY0MTIzODc0ZGM1NjYwZWZmNDcwNjU5NzA3ZDRlNWQ4NWE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1MywxNCArMjUzLDE0IEBAIFVSTCBBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBhdGgpCiAjZW5kaWYKIH0KIAot
c3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJl
c291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCitzdGF0aWMgaW5saW5l
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UmIHJlc291cmNlKQogewogICAgIGlmIChyZXNvdXJjZS5wYXRoKCkuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7Ci0gICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShy
ZXNvdXJjZS5wYXRoKCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVz
b3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCitib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpt
YXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VF
cnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYgZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwog
ICAgIGlmICghc2hvdWxkTG9hZFJlc291cmNlRnJvbUFwcGxpY2F0aW9uQ2FjaGUocmVxdWVzdCwg
cmVzb3VyY2UpKQpAQCAtMjc3LDcgKzI3Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6
Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJl
c291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICAvLyBJZiBub3JtYWwgbG9hZGluZyBy
ZXN1bHRzIGluIGEgcmVkaXJlY3QgdG8gYSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3JpZ2luIChp
bmRpY2F0aXZlIG9mIGEgY2FwdGl2ZSBwb3J0YWwpLCBvciBhIDR4eCBvciA1eHggc3RhdHVzIGNv
ZGUgb3IgZXF1aXZhbGVudCwKICAgICAvLyBvciBpZiB0aGVyZSB3ZXJlIG5ldHdvcmsgZXJyb3Jz
IChidXQgbm90IGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRoZSBkb3dubG9hZCksIHRoZW4gaW5zdGVh
ZCBnZXQsIGZyb20gdGhlIGNhY2hlLCB0aGUgcmVzb3VyY2Ugb2YgdGhlIGZhbGxiYWNrIGVudHJ5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5oCmluZGV4IGRjODU4ZmRkNmQ1NDUzZWI0MzU5MjhkM2VkNzU3NTcwODM1OTQ1ZTAu
LmI5NjM1NmU3ODU2MTM4OTU2YWU0YzA1OTgzMTcwY2RmNzIzNjcyYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBA
IC00Miw3ICs0Miw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgRG9jdW1l
bnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTEwNCw4ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKFJlc291cmNl
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKIAotICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJl
cXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYpOwotICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91
c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgYm9vbCBtYXliZUxv
YWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICB2b2lkIG1heWJlTG9hZEZh
bGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9y
JiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7CiAKICAgICBib29s
IGNhbkNhY2hlSW5CYWNrRm9yd2FyZENhY2hlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5k
ZXggNjcxMDk1N2MzYWI3NGE3NTlmYzI3NTFmZDdhMDZiMzExZTUxOGNlNS4uMmJiM2ZlNzViOTk3
N2U4MzMyMmFlMjU4MGY3MjEyZWU1YmYyMTYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAg
LTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8QXBwbGljYXRpb25D
YWNoZVJlc291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBVUkwm
IHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhdGgpCitSZWY8QXBw
bGljYXRpb25DYWNoZVJlc291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShj
b25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVk
IHR5cGUsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBwYXRoKQogewogICAgIEFTU0VSVCghdXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKTsK
ICAgICBpZiAoIWJ1ZmZlcikKQEAgLTQwLDcgKzQwLDcgQEAgUmVmPEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZT4gQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmws
IGMKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJM
IHsgdXJsIH0sIFdURk1vdmUocmVzb3VyY2VSZXNwb25zZSksIHR5cGUsIGJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpLCBwYXRoKSk7CiB9CiAKLUFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCB1bnNpZ25lZCB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYg
cGF0aCkKK0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNl
KFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCiAg
ICAgOiBTdWJzdGl0dXRlUmVzb3VyY2UoV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHJlc3BvbnNlKSwg
V1RGTW92ZShkYXRhKSkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9zdG9yYWdlSUQoMCkK
QEAgLTUxLDcgKzUxLDcgQEAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAg
ICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0
eSgpID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNw
b25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29u
dGlndW91cygpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRo
KSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVk
IHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCmluZGV4IDg4Yzk0ZGUxYTc3NDEwNDY5YzkzMWE0MmE0
NzliMWU2Nzc3YTcwMmUuLmMyODhlNzAzNmM2NzYyYWQ0ODc2YmE4ODE0NjlhNzVkMjIzN2UxYmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgICAgICBG
YWxsYmFjayA9IDEgPDwgNAogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZT4gY3JlYXRlKGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1
bnNpZ25lZCB0eXBlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSwgY29uc3QgU3RyaW5nJiBwYXRoID0gU3RyaW5nKCkpOworICAgIHN0YXRpYyBSZWY8QXBw
bGljYXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUoY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgY29uc3QgU3RyaW5nJiBwYXRoID0gU3RyaW5nKCkp
OwogCiAgICAgdW5zaWduZWQgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIHZv
aWQgYWRkVHlwZSh1bnNpZ25lZCB0eXBlKTsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogI2Vu
ZGlmCiAgICAgCiBwcml2YXRlOgotICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiwg
UmVzb3VyY2VSZXNwb25zZSYmLCB1bnNpZ25lZCB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBTdHJpbmcmIHBhdGgpOworICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiwg
UmVzb3VyY2VSZXNwb25zZSYmLCB1bnNpZ25lZCB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBwYXRoKTsKIAogICAgIHZvaWQgZGVsaXZlcihSZXNvdXJj
ZUxvYWRlciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBjNzcwZDc2NDEz
NTA2NTJmNWY3NGEwZGNlNTBjZThkMzNkMWZjNWU0Li44Y2YwNWNjZTE4ODAxMjhkZTU5YmU3MGE5
OTgzNmY1YTc0NWI2ZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTExMTIsNyArMTExMiw3
IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9h
ZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0g
Y2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludCgxKTsKIAogICAgICAgICB1bnNpZ25lZCB0eXBlID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgyKSk7Ci0g
ICAgICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0
YXRlbWVudC0+Y29sdW1uQmxvYig2KSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKICAgICAgICAgCiAgICAg
ICAgIFN0cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoNyk7CiAgICAgICAg
IGxvbmcgbG9uZyBzaXplID0gMDsKQEAgLTEyNzIsNyArMTI3Miw3IEBAIGJvb2wgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OnNob3VsZFN0b3JlUmVzb3VyY2VBc0ZsYXRGaWxlKEFwcGxpY2F0aW9u
Q2FjaGVSZXNvCiAgICAgcmV0dXJuIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
dHlwZSwgImF1ZGlvLyIpIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlw
ZSwgInZpZGVvLyIpOwogfQogICAgIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3Jp
dGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBT
dHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNp
b24pCitib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJ
bkRpcmVjdG9yeShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRp
cmVjdG9yeSwgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pCiB7CiAg
ICAgU3RyaW5nIGZ1bGxQYXRoOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAppbmRleCA5YTk1MzAwODc2
NmE4ODg1NTYxYjM0ODg4OWI4Y2VkYTJiMmViMzM4Li40MTAyYTE4MDhiNDU1NTdiNjQ1ZTM2ZTdl
NjgxZmM0YzZkMjA3Y2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaApAQCAtMzksNyArMzksNyBAQCBjbGFz
cyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdDsKIGNs
YXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHRlbXBsYXRl
PHR5cGVuYW1lPiBjbGFzcyBTdG9yYWdlSURKb3VybmFsOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZSA6IHB1YmxpYyBSZWZDb3VudGVkPEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlPiB7
CkBAIC0xMjIsNyArMTIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGVuc3VyZU9yaWdpblJlY29y
ZChjb25zdCBTZWN1cml0eU9yaWdpbiopOwogICAgIHN0YXRpYyBib29sIHNob3VsZFN0b3JlUmVz
b3VyY2VBc0ZsYXRGaWxlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSopOwogICAgIHZvaWQgZGVs
ZXRlVGFibGVzKCk7Ci0gICAgYm9vbCB3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBvdXRGaWxlbmFt
ZSwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKTsKKyAgICBib29sIHdyaXRlRGF0YVRvVW5p
cXVlRmlsZUluRGlyZWN0b3J5KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
IGRpcmVjdG9yeSwgU3RyaW5nJiBvdXRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5z
aW9uKTsKIAogICAgIHZvaWQgbG9hZE1hbmlmZXN0SG9zdEhhc2hlcygpOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCmluZGV4IDZk
ZTgwYzEwYWM3ZDI1Y2YzNDY5ZjZkZWYwZmFmNzI0MWY1OTY0MjguLjRlZjljZDY2YmQwODhiNzRj
MDQ2YzA2OTBkMWU5ZDNlNWUzMzYwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKQEAgLTQ2LDEyICs0NiwxMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgUmVmUHRyPEFyY2hpdmU+IFJhd0RhdGFDcmVhdGlvbkZ1
bmN0aW9uKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYpOwordHlwZWRlZiBSZWZQdHI8QXJjaGl2
ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24oY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpOwogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24q
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IEFyY2hpdmVNSU1FVHlwZXNNYXA7CiAKIC8vIFRo
ZSBjcmVhdGUgZnVuY3Rpb25zIGluIHRoZSBhcmNoaXZlIGNsYXNzZXMgcmV0dXJuIFJlZlB0ciB0
byBjb25jcmV0ZSBzdWJjbGFzc2VzCiAvLyBvZiBBcmNoaXZlLiBUaGlzIGFkYXB0b3IgbWFrZXMg
dGhlIGZ1bmN0aW9ucyBoYXZlIGEgdW5pZm9ybSByZXR1cm4gdHlwZS4KLXRlbXBsYXRlPHR5cGVu
YW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBhcmNoaXZlRmFjdG9yeUNy
ZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBBcmNoaXZlQ2xhc3M+IHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4gYXJjaGl2ZUZhY3RvcnlD
cmVhdGUoY29uc3QgVVJMJiB1cmwsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICByZXR1cm4gQXJjaGl2ZUNsYXNzOjpjcmVhdGUodXJsLCBidWZmZXIpOwogfQpAQCAtODMs
NyArODMsNyBAQCBib29sIEFyY2hpdmVGYWN0b3J5Ojppc0FyY2hpdmVNSU1FVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiAhbWltZVR5cGUuaXNFbXB0eSgpICYmIGFyY2hp
dmVNSU1FVHlwZXMoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKLVJlZlB0cjxBcmNoaXZlPiBB
cmNoaXZlRmFjdG9yeTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCitSZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6
OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5
LmgKaW5kZXggMjFkMjM2NWNmOGQ5ZDkwMWVmZTdhYWQ1NTJiZjNkYTQwNjlmZTQwZC4uNTU2NDUx
NWM5ZTBkOWQwMzNiNzkwYzc0NzI4NWEyNTg1M2FiZTAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCkBAIC0zNCwxMiArMzQsMTIgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBBcmNoaXZlRmFjdG9yeSB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgaXNBcmNoaXZlTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGlj
IFJlZlB0cjxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGNyZWF0
ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3Rlcktub3duQXJjaGl2ZU1JTUVUeXBl
cyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKaW5k
ZXggZmMyMGRhM2RhMDMyY2JlZjc0ZjJlOWM4NDI4YWNiNGVlMzdiZWYyMy4uMDczODM5NGE4Mjg3
MTRhYTBiOTBlZTc1MDc5ZDQ4NmY1YjBlODY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIEFyY2hpdmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291
cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitpbmxpbmUgQXJjaGl2
ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
ZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgOiBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMIHsgdXJsIH0s
IFJlc291cmNlUmVzcG9uc2UgeyByZXNwb25zZSB9LCBXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9t
aW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1fdGV4dEVuY29kaW5nKHRleHRFbmNvZGluZykKQEAg
LTQyLDcgKzQyLDcgQEAgaW5saW5lIEFyY2hpdmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291cmNlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwKIHsKIH0KIAotUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRF
bmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC01NCw3ICs1NCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6
Y3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uCiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQXJjaGl2ZVJlc291cmNlKGRhdGEucmVsZWFzZU5vbk51bGwoKSwgdXJsLCBtaW1l
VHlwZSwgdGV4dEVuY29kaW5nLCBmcmFtZU5hbWUsIHJlc3BvbnNlKSk7CiB9CiAKLVJlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQorUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIHJldHVybiBjcmVhdGUoV1RGTW92
ZShkYXRhKSwgdXJsLCByZXNwb25zZS5taW1lVHlwZSgpLCByZXNwb25zZS50ZXh0RW5jb2RpbmdO
YW1lKCksIFN0cmluZygpLCByZXNwb25zZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oCmluZGV4IDIwOWU5NzE3YWViMDkzNjBkYjM5Mjdl
NmVmYTFlNWJmMWMyYzk3Y2EuLjA1NDhlZjcyMWVmZDI3YzAwY2U5M2QxMjI3MGVjZWM0NmMwMmFm
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZS5oCkBAIC0zNCw4ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXJjaGl2
ZVJlc291cmNlIDogcHVibGljIFN1YnN0aXR1dGVSZXNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBVUkwmLAorICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBj
cmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBVUkwmLAogICAgICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcm
IHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsCiAgICAgICAgIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmID0gUmVzb3VyY2VSZXNwb25zZSgpKTsKIApAQCAtNDcsNyArNDcsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRJZ25vcmVXaGVuVW5hcmNoaXZpbmcoKSBjb25zdCB7
IHJldHVybiBtX3Nob3VsZElnbm9yZVdoZW5VbmFyY2hpdmluZzsgfQogCiBwcml2YXRlOgotICAg
IEFyY2hpdmVSZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBBcmNoaXZlUmVzb3Vy
Y2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgU3RyaW5nIG1fbWltZVR5
cGU7CiAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCBmNWVjNGRkNjdm
N2RmOGQ5ZGEyMDliNDBlMjNjMDQzOWI2ZTY4YjAzLi43MTE1MGNiZGQ4OTY5ZTZhZjAyODY4NGI2
YmY2Y2JjMGE1MGIyZmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtMjQ4LDEyICsyNDgsMTIgQEAgUmVmPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShSZWY8QXJjaGl2ZVJlc291
cmNlPiYmIG1haW5SZXNvdXIKICAgICByZXR1cm4gYXJjaGl2ZTsKIH0KIAotUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEp
CitSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShVUkwoKSwgZGF0
YSk7CiB9CiAKLVJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhKQorUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhKQogewogICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBD
cmVhdGluZyBmcm9tIHJhdyBkYXRhIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaAppbmRleCBkMDllYzlmNzVhYmExMzZhODYz
MzllYjRkODZhYmQ4Mjc3YzRmZjA0Li41YTA3YjEwYjRiZTZmODYyMDExYTc4MmE3ZGVkMjM2NzU5
MjQzNjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5oCkBAIC00MSw4ICs0MSw4IEBAIHN0cnVjdCBTaW1wbGVSYW5nZTsKIGNs
YXNzIExlZ2FjeVdlYkFyY2hpdmUgZmluYWwgOiBwdWJsaWMgQXJjaGl2ZSB7CiBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0
ZShTaGFyZWRCdWZmZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRl
KFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYgbWFpblJlc291cmNlLCBWZWN0b3I8UmVmPEFyY2hpdmVS
ZXNvdXJjZT4+JiYgc3VicmVzb3VyY2VzLCBWZWN0b3I8UmVmPExlZ2FjeVdlYkFyY2hpdmU+PiYm
IHN1YmZyYW1lQXJjaGl2ZXMpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gY3JlYXRlKE5vZGUmLCBGdW5jdGlvbjxib29sKEZyYW1lJik+JiYgZnJh
bWVGaWx0ZXIgPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5
V2ViQXJjaGl2ZT4gY3JlYXRlKEZyYW1lJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAppbmRleCA5OTNjMmI4ZTgzMGRjM2Q3
NWM1YWQzMTliYmFmZTlkZjQ1YzUwMTBlLi5kMDEzOWY4N2EwNmY5Njk3OGI3NDc3ZTlmNDk5OWMz
NGVhOWY4NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBSZWY8TUhUTUxBcmNoaXZl
PiBNSFRNTEFyY2hpdmU6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTUhUTUxB
cmNoaXZlKTsKIH0KIAotUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUo
Y29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxNSFRNTEFyY2hpdmU+
IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewogICAgIC8vIEZvciBzZWN1cml0eSByZWFzb25zIHdlIG9ubHkgbG9hZCBN
SFRNTCBwYWdlcyBmcm9tIGxvY2FsIFVSTHMuCiAgICAgaWYgKCFMZWdhY3lTY2hlbWVSZWdpc3Ry
eTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHVybC5wcm90b2NvbCgpLnRvU3RyaW5nKCkp
KQpAQCAtMTMwLDcgKzEzMCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6
Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgcmV0dXJuIG1h
aW5BcmNoaXZlOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRl
TUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTUhUTUxB
cmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogewogICAgIFZlY3RvcjxQYWdl
U2VyaWFsaXplcjo6UmVzb3VyY2U+IHJlc291cmNlczsKICAgICBQYWdlU2VyaWFsaXplciBwYWdl
U2VyaWFsaXplcihyZXNvdXJjZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCAzZDJkYjdjOTYwMDJlYmU2ODRiMmJlZjhm
MWVhOWUyZTk3OTRhNTg5Li4yZGZlODdlODJlN2E0ZGNlMGYzNDFjMzYxOTQzYzk5MDIwNWM4ZGIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFy
Y2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFy
Y2hpdmUuaApAQCAtMzgsMTQgKzM4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
TUhUTUxQYXJzZXI7CiBjbGFzcyBQYWdlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTUhUTUxBcmNoaXZlIGZpbmFsIDogcHVibGlj
IEFyY2hpdmUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TUhUTUxBcmNoaXZlPiBjcmVhdGUo
KTsKLSAgICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIFNo
YXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8TUhUTUxBcmNoaXZlPiBjcmVhdGUoY29u
c3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCi0gICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKKyAgICBzdGF0aWMgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKIAogICAgIHZpcnR1
YWwgfk1IVE1MQXJjaGl2ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNjY1ZTY5Y2E3NzE0ZTQ0OWFmZTRjYTY4
YTcyNDE1MjMwZDEwOWIxNC4uZTUxODZlZmIwYjRmYTcwY2I2MDkzMWY0ODRlNTAwY2MxMGUwMGJj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
UGFyc2VyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgYm9vbCBza2lwTGluZXNVbnRpbEJv
dW5kYXJ5Rm91bmQoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGxpbmVSZWFkZXIsIGNvbgogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotTUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2VyKFNoYXJlZEJ1ZmZl
ciogZGF0YSkKK01IVE1MUGFyc2VyOjpNSFRNTFBhcnNlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhKQogICAgIDogbV9saW5lUmVhZGVyKGRhdGEsICJcclxuIikKIHsKIH0KQEAgLTIxNSw3
ICsyMTUsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0
UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBMT0dfRVJST1IoIklu
dmFsaWQgZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KLSAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgLy8gRklYTUU6IHRoZSBVUkwgaW4g
dGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZlLCB3ZSBzaG91bGQgcmVzb2x2ZSBpdCBp
ZiBpdCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlvbnMgNSB3YXlzIHRvIHJlc29sdmUgYSBV
Ukw6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1NTcjc2VjdGlvbi01CiAgICAgLy8g
SUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdlbmVyYXRlIG9ubHkgYWJzb2x1dGUgVVJM
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNl
ci5oCmluZGV4IDFlOWJkNGQ3NzY3ZWUzOTFhMDAyMmY3MTc0OGYwMGI4NWM4MWIyNWYuLjBkNjA0
MzQzZjNkN2FkMTc4Y2MyMjAwM2M5NzljMjJlNTBhM2I5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaApAQCAtNDIsMTEgKzQyLDEx
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKIGNsYXNzIE1I
VE1MQXJjaGl2ZTsKIGNsYXNzIE1JTUVIZWFkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNSFRNTFBhcnNlciB7CiBwdWJsaWM6
Ci0gICAgZXhwbGljaXQgTUhUTUxQYXJzZXIoU2hhcmVkQnVmZmVyKik7CisgICAgZXhwbGljaXQg
TUhUTUxQYXJzZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogCiAgICAgUmVmUHRyPE1IVE1M
QXJjaGl2ZT4gcGFyc2VBcmNoaXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA5N2NkNGRm
ZmQxODhjMjgxMTFmZDY5YWMwZGJhMzM4YTY3MzMzNWE0Li5kZGQwYjFiODliMWQ4NzJiYjQyNzI3
ZWU3OGQ4ZmQ2MzllNGI4OTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MCw3ICs0MCw3IEBA
IENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiB7CiB9CiAKLXZvaWQgQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAg
ICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCmluZGV4IDY0
YjE0ZDVmNjVmZmZjODU1NGRmNDY2NWM3NTkxNmYzNGQxZDU0NmEuLjM3OThhOWI0ZDkwMTNjZmRl
YTZmNTZmYmRmMDAxNWFmODk0NzU3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtNDIsNyArNDIsNyBA
QCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdD4g
cHJvY2Vzcyhjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBE
b2N1bWVudCogPSBudWxscHRyKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3Vy
Y2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9kZWNvZGVyLnB0cigpOyB9CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRl
eCA5ZDJkYzczNjQ4MDJkMGQ2MmE2NTkxZGU2ODlhNWE3YTI0NDMwNTExLi4zOGEyZTE3ZjBkMDZj
OGFjOThkZTI0YjFlNTJiOGU2MGU5MjQxMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZv
aWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSkKICAgICAgICAgc2F2ZVBhcnNlZFN0eWxlU2hlZXQoKnNoZWV0Lm1fcGFy
c2VkU3R5bGVTaGVldENhY2hlKTsKIH0KIAotdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5p
c2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBkYXRhLT5t
YWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggZDM3ZmFmYWNjMDEyMmM4NzU0MGY0NjRiOWU1NjE2MGNj
YWU0NjlmOS4uZTY1NWM2OWUzZWRiNjA5NTAyMzljY2U0NTQ1ZjA5NmI1MjY1NmRlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCkBA
IC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJp
bmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25z
dCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0
IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZv
aWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBm
aW5hbDsKIAogICAgIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXgg
ZjlhZDc3MTNjNjAzYTZhMGE1NmJjYTI3OWNlODI1MDY2NmEzMjBmYS4uZDJiYzI4MjE0NzljNTlh
MjMyM2U0ZjY1Y2Q5NGI2M2I0MjM3MzY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFk
ZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogICAgICAgICBzdGF0aWNfY2Fz
dDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50KS5mb250TG9hZGVkKCp0aGlzKTsKIH0KIAotdm9p
ZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRGb250OjpmaW5pc2hM
b2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEg
PSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpAQCAtOTUsNyArOTUsNyBAQCBTdHJpbmcgQ2FjaGVk
Rm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHVybCgp
LmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CiB9CiAKLWJvb2wgQ2FjaGVkRm9udDo6
ZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSkKK2Jvb2wg
Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQogewog
ICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFlcnJvck9jY3VycmVkKCkgJiYg
IWlzTG9hZGluZygpICYmIGRhdGEpIHsKICAgICAgICAgYm9vbCB3cmFwcGluZzsKQEAgLTEwOCw3
ICsxMDgsNyBAQCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgcmV0dXJuIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5nZXQoKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENh
Y2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ5
dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQorc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1
c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29s
bGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCiB7CiAgICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVz
IH07CiAgICAgd3JhcHBpbmcgPSAhY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggMTU0ZGI4Y2Jh
YmYzZDVhMzhlMDk2MWFjYjU1Y2VhY2ZmMmYyOTczYS4uMTM0NjZjYzk5ZDBkMTljYmYzZDhlZjNk
ZmJkOTZmMzRkMGY4NTQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVh
bCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBp
dGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsK
ICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShG
b250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xk
LCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVh
bCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBB
dG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJ
dGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVi
bGljOgogcHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1
c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywg
Y29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250
RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBib29sIGVuc3VyZUN1c3Rv
bUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNh
bGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0
ZToKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25z
dCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAg
IHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDdjMDFjOGNjMjMxMTc4NmM2MjRm
NDg1ZWRlZjY5MzVmYjdlZmE1ZmIuLjk0NjI3OTUyMGQwZGE0NDYyMmM2YWNkMzY2NjIyODgxMDVl
ODE5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApA
QCAtNDY4LDcgKzQ2OCw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkK
ICAgICBtX3VwZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6
dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNo
ZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0
RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwpAQCAtNTIzLDE0ICs1MjMsMTQgQEAgYm9vbCBD
YWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVy
biAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNv
bmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAot
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRh
SWZOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgaWYgKCFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQogICAgICAgICBy
ZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0Uo
V0VCS0lUX0lNQUdFX0RFQ09ERVJTKQotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHRE
YXRhVG9QREYoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsK
ICNlbHNlCiAgICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxkIGhhdmUgYmVlbiBjYW5jZWxl
ZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVydGluZyBQb3N0U2NyaXB0IHRv
IFBERi4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU1NSw3ICs1NTUsNyBAQCBFbmNv
ZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NF
UlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRh
dGEpOwogICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOwpAQCAtNTY5LDcgKzU2OSw3IEBA
IHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7
CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZElt
YWdlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBjb252ZXJ0
ZWREYXRhSWZOZWVkZWQoZGF0YSk7CiAgICAgaWYgKG1fZGF0YSkgewpAQCAtNTk1LDcgKzU5NSw3
IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiB2b2lkIENhY2hlZEltYWdlOjpkaWRSZXBsYWNl
U2hhcmVkQnVmZmVyQ29udGVudHMoKQogewogICAgIGlmIChtX2ltYWdlKSB7Ci0gICAgICAgIC8v
IExldCB0aGUgSW1hZ2Uga25vdyB0aGF0IHRoZSBTaGFyZWRCdWZmZXIgaGFzIGJlZW4gcmVqaWdn
ZWQsIHNvIGl0IGNhbiBsZXQgZ28gb2YgYW55IHJlZmVyZW5jZXMgdG8gdGhlIGhlYXAtYWxsb2Nh
dGVkIHJlc291cmNlIGJ1ZmZlci4KKyAgICAgICAgLy8gTGV0IHRoZSBJbWFnZSBrbm93IHRoYXQg
dGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgaGFzIGJlZW4gcmVqaWdnZWQsIHNvIGl0IGNhbiBs
ZXQgZ28gb2YgYW55IHJlZmVyZW5jZXMgdG8gdGhlIGhlYXAtYWxsb2NhdGVkIHJlc291cmNlIGJ1
ZmZlci4KICAgICAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMjQyNzU2MTcpOiBJdCB3b3Vs
ZCBiZSBiZXR0ZXIgaWYgd2UgY291bGQgc29tZWhvdyB0ZWxsIHRoZSBJbWFnZSdzIGRlY29kZXIg
dG8gc3dhcCBpbiB0aGUgbmV3IGNvbnRlbnRzIHdpdGhvdXQgZGVzdHJveWluZyBhbnl0aGluZy4K
ICAgICAgICAgbV9pbWFnZS0+ZGVzdHJveURlY29kZWREYXRhKHRydWUpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggZDUxM2UxNmNiYTVhOTcw
N2MzM2FmYzc5MzkxNTE4NjZmYTQzOGE1Zi4uMDgzZjkyZjg4ODI3NmVlZGE4OTkxMjAzMWQyNDQ5
YTk2OGUyNjVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgK
QEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRo
KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZVdpZHRoKCk7
IH0KICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2lt
YWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KIAotICAgIHZvaWQgdXBkYXRl
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIGVu
dW0gU2l6ZVR5cGUgewogICAgICAgICBVc2VkU2l6ZSwKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgb3ZlcnJpZGU7CiAKICAgICBib29s
IHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7Ci0gICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIq
IGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5l
ZWRlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lk
IGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdl
RGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CkBAIC0xNjksNyArMTY5LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJ
bnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYp
OwogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImKTsK
KyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCkgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwCmluZGV4IDkwMGJkMzMyOGE2NGJhNzcyZTZjODAxMWFiYWE1ZTYxMWM2NDY1NWYuLjcx
ZTE2MDgyZmZlNjU1ZDExMWYxNjk5MGQxMjMwNTM1YmVhY2JmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtNDgsNyArNDgs
NyBAQCBDYWNoZWRSYXdSZXNvdXJjZTo6Q2FjaGVkUmF3UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgVHlwZSB0eXBlLAogICAgIEFTU0VSVChpc01haW5Pck1lZGlhT3JJ
Y29uT3JSYXdSZXNvdXJjZSgpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRh
Vmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNv
bnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVy
RGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVu
ayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewogICAgIHNpemVf
dCBwcmV2aW91c0RhdGFMZW5ndGggPSBlbmNvZGVkU2l6ZSgpOwogICAgIGlmICghZGF0YSB8fCBk
YXRhLT5zaXplKCkgPD0gcHJldmlvdXNEYXRhTGVuZ3RoKQpAQCAtNTYsNyArNTYsNyBAQCBzdGQ6
Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3Vs
YXRlSW5jcmVtZW50YWxEYXRhQwogICAgIHJldHVybiBkYXRhLT5nZXRTb21lRGF0YShwcmV2aW91
c0RhdGFMZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRl
QnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gU2tp
cCBhbnkgdXBkYXRlQnVmZmVycyB0cmlnZ2VyZWQgZnJvbSBuZXN0ZWQgcnVubG9vcHMuIFdlJ2xs
IGhhdmUgdGhlIGNvbXBsZXRlIGJ1ZmZlciBpbiBmaW5pc2hMb2FkaW5nLgogICAgIGlmIChtX2lu
SW5jcmVtZW50YWxEYXRhTm90aWZ5KQpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jl
c291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkK
ICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lk
IENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSYXdSZXNv
dXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKG1faW5JbmNyZW1l
bnRhbERhdGFOb3RpZnkpIHsKICAgICAgICAgLy8gV2UgbWF5IGdldCBoZXJlIHN5bmNocm9ub3Vz
bHkgZnJvbSB1cGRhdGVCdWZmZXIoKSBpZiB0aGUgY2FsbGJhY2sgdGhlcmUgZW5kcyB1cCBzcGlu
bmluZyBhIHJ1bmxvb3AuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5oCmluZGV4IDU3ZmQ3YWI1YzEwMGRjMDlhZGYyNmVjNGNiYWM0NTE0ZjM2Zjc1
ZmYuLmE3ODY1ZjhhZDE3OGFlZmIzMjIwYTU2ZGNmZjE5NTk5M2NmOTVhZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC01MSw5ICs1
MSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRS
ZXNvdXJjZUNsaWVudCYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29u
c3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAg
dm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0
YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9p
ZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc3dpdGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJjZSgpIG92ZXJyaWRl
OwogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9hbGxvd0VuY29kZWREYXRhUmVwbGFjZW1lbnQ7IH0KIAotICAgIHN0ZDo6b3B0aW9u
YWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNv
bnN0IFNoYXJlZEJ1ZmZlciopIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVy
RGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqKSBjb25zdDsKICAgICB2b2lkIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2
ZWQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICAKICNpZiBVU0Uo
UVVJQ0tfTE9PSykKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVkaXJl
Y3RQYWlyLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1fcmVkaXJlY3RDaGFpbjsKIAogICAgIHN0
cnVjdCBEZWxheWVkRmluaXNoTG9hZGluZyB7Ci0gICAgICAgIFJlZlB0cjxjb25zdCBTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8RGVsYXllZEZpbmlzaExvYWRp
bmc+IG1fZGVsYXllZEZpbmlzaExvYWRpbmc7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggNTU2OTY0M2NkNWU2ODk3YTNjNThmYjQ2
MjM0NTQ2ZjA2ZGEwYWExYS4uOWRlMGEwNGNkNWVjNWYzZmFkMmZiMTZkN2IzMjJjODU4YTM4YTZi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogICAgICAgICBjbGllbnQtPm5vdGlmeUZp
bmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRl
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpCit2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0K
QEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0
IHVpbnQ4X3QqLCB1bnNpZ25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09
IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVk
UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
Zyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1l
dHJpY3MpOwpAQCAtOTE1LDcgKzkxNSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OkNhbGxiYWNr
Ojp0aW1lckZpcmVkKCkKIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAKLXZvaWQg
Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERh
dGEoU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCiB7CiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgK
aW5kZXggMjE4ZDc0ZjI3NzZhOTY1ZmNlYTQ4YjYxYTMyNWY5NzI4YTc5MGRkOS4uYzk4MmRkNjkz
N2EwYmMyYmYzOGM0MjYxMjZmZmU2ZTc4Yzc5NjQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgQ29va2ll
SmFyOwogY2xhc3MgTWVtb3J5Q2FjaGU7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFRleHRSZXNvdXJj
ZURlY29kZXI7CiAKQEAgLTExMiw5ICsxMTIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29k
aW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRleHRS
ZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBudWxs
cHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0
IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOworICAgIHZpcnR1YWwg
dm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3Vy
Y2U6OlN0YXR1cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNlRXJyb3IoY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CkBAIC0yMTMsNyArMjEzLDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBjbGVhckxvYWRlcigpOwogCi0gICAgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KKyAg
ICBTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdl
dCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVz
b3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50
ICovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRlc1RvQmVTZW50ICovKSB7IH0KIAog
I2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0
cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYpOwogI2Vu
ZGlmCiAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllckZvckxvYWRXaXRo
b3V0UmVzb3VyY2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJGb3JMb2FkV2l0
aG91dFJlc291cmNlTG9hZGVyOyB9CkBAIC0zMzYsNyArMzM2LDcgQEAgcHJvdGVjdGVkOgogICAg
IEhhc2hDb3VudGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBOZWVk
ZWQgYnkgUGluZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVy
OwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogCiBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9s
YXN0RGVjb2RlZEFjY2Vzc1RpbWU7IC8vIFVzZWQgYXMgYSAidGhyYXNoIGd1YXJkIiBpbiB0aGUg
Y2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuY3BwCmluZGV4IGIwZjc2YTUwOTYxMGY2NzEwNTdiZWViZjBhMGI5YTYwMWNhODIyMmIuLmRi
NDMxNjA3YWU1NjM4MzAzODAwZGQyNTljMTAzNGNkMDkwZmNmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTIsNyArNTIs
NyBAQCBTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1
cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRTVkdEb2N1
bWVudDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExv
YWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRv
bid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBi
ZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKaW5kZXggYjAxMmJhOThlZWRmNzMyYzA4MmMz
NjNiMGNiZTEzMDM0NzRjMzA0OS4uNDQ1ZTRmOWY0MmMzYzI3NDA3OTc2YTY0ZTkxNTQwN2Y4YjUz
NGQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZp
bmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIFJl
ZlB0cjxTVkdEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVj
b2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0ZvbnQuY3BwCmluZGV4IDljZjA0MzcxOTRhOGEyZmNhNWU1MjVjN2JmZjlmZThlOThhNTBjMzIu
LmQyYzFkZTQ3ZWZiNzgxMzk4ZjQ0MzhiN2NhNGVhMjYwZTIyMTk3NjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAg
Ym9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5n
JiByZW1vdGVVUkkpCiAgICAgICAgIGlmICghbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50IHx8ICFm
aXJzdEZvbnRGYWNlKHJlbW90ZVVSSSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIGlmIChhdXRvIGNvbnZlcnRlZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KCptX2V4dGVy
bmFsU1ZHRm9udEVsZW1lbnQpKQotICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7
CisgICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX2V4dGVybmFs
U1ZHRm9udEVsZW1lbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdGb250LmgKaW5kZXggYTE1ZWFkMGUxNjQwOTAyN2VmOTIwNGViOTMzYjRmMDU0YzM4
NTgyMy4uMzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3ZmViMjUzYzViNjI0OTBjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01MCw3ICs1MCw3IEBA
IHByaXZhdGU6CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6ZUV4dGVybmFsU1ZH
Rm9udEVsZW1lbnQoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKICAgICBTVkdGb250RmFj
ZUVsZW1lbnQqIGZpcnN0Rm9udEZhY2UoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKIAot
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OwogICAgIFJlZlB0cjxTVkdEb2N1
bWVudD4gbV9leHRlcm5hbFNWR0RvY3VtZW50OwogICAgIFNWR0ZvbnRFbGVtZW50KiBtX2V4dGVy
bmFsU1ZHRm9udEVsZW1lbnQ7CiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRp
bmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRl
eCAxZGY1YzRiMTdlZWViY2I0ZTRiYmZlNGFmODg5MWFkZWNiNmFiOTYwLi42MmExNmU4NmIzMjE5
M2Q4ZTU2ZDYxOTJmNzdlOWJjNmY0MDhlOWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtOTYsNyArOTYsNyBAQCB1bnNpZ25lZCBDYWNoZWRT
Y3JpcHQ6OnNjcmlwdEhhc2goKQogICAgIHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQg
Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlz
aExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmgKaW5kZXggNzViZTRkYjcxNTc5ZTMxYWFkYTk3MDY5ZDliZmZjMmM3ZTYz
NDMyMS4uODY1MWU2MzlhZDkwNjE3Mjg1NjFjMzI0YmZhN2FmNGNmOTdmNmQzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaApAQCAtNDcsNyArNDcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAg
U3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVj
b2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rl
ci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOwogCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCA1NDI2
NmRkOTA4MTljMzRlOTE1MDg0MzQ4OTQyZTkxM2FkZTgxZWQ0Li4wYzg0MjhiYjk5ZGI2ZGZiMTZh
MzQ4MTM0YzM4MjY4MzZjY2U1NDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDAsMTAgKzQwLDEwIEBAIENhY2hlZFRleHRUcmFj
azo6Q2FjaGVkVGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6
U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQo
ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEp
OwotICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VD
b250aWd1b3VzKCkgOiBSZWZQdHI8U2hhcmVkQnVmZmVyPigpOwogICAgIHNldEVuY29kZWRTaXpl
KGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fs
a2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKQEAgLTUxLDEzICs1
MSwxMyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVk
QnVmZmVyKiBkYXRhKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVk
UmVzb3VyY2UoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0
ZUJ1ZmZlcigmZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsK
IH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hl
ZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9VcGRhdGVC
dWZmZXIoZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0
cmljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgK
aW5kZXggZjQ2MzE3ODMyMWVkYzdjYTg2OTcwY2Y0YWRkYTQwODk2OTI5Njg4NS4uMDliNDMzOWEz
N2I2NzNiMmFjNGZkYWUxNDZiMjliOTY0Nzc3ZmNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaApAQCAtMzUsMTAgKzM1LDEwIEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1
cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAg
IHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciopOworICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3Bw
CmluZGV4IGI5YTY1ODc1M2NlOWY3ZWMzNjMzZjFhMmY3NGU3Y2M5ZWEzOTg1NzQuLmQyZWZmMmQy
ZDQwYzkyNzczODc1NmM0YThmMGNiYjkzNDNiZTEwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYxLDcgKzYxLDcg
QEAgU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1
cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5p
c2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2Rh
dGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKaW5kZXggYzA0ZGQ0ZjE2Y2YzYjdlY2EyNTg5
MTBiOWVmYWY0MTI1NGUyZDcyOC4uYmQyMzEyMTRmMmQyMGJhMzk2NDQ2MDM2NmUwNDFiOTQxMzVh
YzRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5
bGVTaGVldC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5h
bDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBTdHJpbmcgbV9zaGVl
dDsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCmluZGV4
IGQwMjBhYzNkYzgwODQ0YTY3YTA3Y2I1YjFkMTU5ZjcxYzBjZGNkMTQuLmNlNTJjZmViZDc2MWU1
NjQ3NWEyMDFlODE0Mzg1MzM0ZWE0ZGJhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKQEAgLTMyLDE3ICszMiwxNyBAQCB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZDYWNoZWRVUkxSZXNwb25zZSogQ0ZDYWNoZWRVUkxSZXNw
b25zZVJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBEaXNrQ2FjaGVNb25pdG9yIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBtb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9u
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3Bv
bnNlUmVmKTsKLSAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeUdl
dEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJ5R2V0Rmls
ZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYpOwogCiBwcml2YXRlOgogICAgIERpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCi0g
ICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYp
OworICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYpOwogCiAg
ICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7IHJldHVy
biBtX3Jlc291cmNlUmVxdWVzdDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQppbmRleCA5M2VlOTYzNzRmMDNiYTMx
MjQ0M2QyODFjNTJhNDg0MDY5ZGYyYTMxLi5mYTRiOTAzYmVmOTM5NDgxYzIyZWE3ZGY1NTFlOGI1
NWU3ZTBlNTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0Nh
Y2hlTW9uaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNr
Q2FjaGVNb25pdG9yQ29jb2EubW0KQEAgLTQyLDEzICs0MiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2Vjb25kcyB3ZSdsbCB0cnkgdG8gd2FpdCBm
b3IgYSByZXNvdXJjZSB0byBiZSBkaXNrIGNhY2hlZCBiZWZvcmUgd2UgZm9yZ2V0IHRoZSByZXF1
ZXN0Lgogc3RhdGljIGNvbnN0IGRvdWJsZSBkaXNrQ2FjaGVNb25pdG9yVGltZW91dCA9IDIwOwog
Ci1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0
RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBEaXNrQ2Fj
aGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVz
cG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKICAgICBhdXRv
IGRhdGEgPSBfQ0ZDYWNoZWRVUkxSZXNwb25zZUdldE1lbU1hcHBlZERhdGEoY2FjaGVkUmVzcG9u
c2UpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKIH0KIAogdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjptb25p
dG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hl
ZFJlc3BvbnNlKQpAQCAtMTEzLDcgKzExMyw3IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tDYWNo
ZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JCiAg
ICAgX0NGQ2FjaGVkVVJMUmVzcG9uc2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9jayhj
YWNoZWRSZXNwb25zZSwgYmxvY2tUb1J1biwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiB9
CiAKLXZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCit2b2lkIERpc2tDYWNoZU1vbml0
b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZm
ZXIpCiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVz
b3VyY2VGb3JSZXF1ZXN0KG1fcmVzb3VyY2VSZXF1ZXN0LCBtX3Nlc3Npb25JRCk7CiAgICAgaWYg
KCFyZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5
UHJldmlld0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLmgKaW5kZXggZmY0MGM0MTZjYzYxNmU5MmIxMzA3YmFiYjdlMzQzYjM3ZTU0NjAwMC4u
ZThiZTFiMjEzNzZhMDU4NjlkMGU2MjVjZDg0YmJlYTJjOGVhMjhhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwogICAgIGJvb2wgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29sIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVk
QnVmZmVyJik7CisgICAgYm9vbCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKICAgICBib29sIGRpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lkIGRpZEZh
aWwoKTsKIApAQCAtNjAsMTIgKzYwLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcmV2aWV3Q29u
dmVydGVyRGlkRmluaXNoVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsIHsgfTsKICAg
ICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYp
IGZpbmFsOwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2
aWV3Q29udmVydGVyJikgZmluYWw7Ci0gICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2
ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAg
IHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBwcmV2aWV3Q29u
dmVydGVyRGlkRmluaXNoQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgZmluYWw7CiAgICAg
dm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYp
IGZpbmFsOwogCiAgICAgLy8gUHJldmlld0NvbnZlcnRlclByb3ZpZGVyCi0gICAgdm9pZCBwcm92
aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJikgZmluYWw7CisgICAg
dm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVy
dGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Kik+JiYpIGZpbmFsOwogICAgIHZvaWQgcHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRl
cihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcm
KT4mJikgZmluYWw7CiAKICAgICBSZWZQdHI8UHJldmlld0NvbnZlcnRlcj4gbV9jb252ZXJ0ZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0K
aW5kZXggMjNjOTcyNDJiYjlmYjc1M2ZhYjc0MzdhZjdlMDhhMDlkYTk2MjFmOS4uMGFiNTQzNGEw
ZGJlOTFlZTg3NjUyNTgxZTJiMzM1ZTVlMWYwYWI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtNjMsNyArNjMsNyBAQCBzdGF0
aWMgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1ha2VDbGllbnQoY29uc3QgUmVzb3Vy
Y2VMb2FkZXImIGxvYWRlciwgYwogICAgIHJldHVybiBlbXB0eUNsaWVudCgpOwogfQogCi1ib29s
IExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChtX2ZpbmlzaGVk
TG9hZGluZ0RhdGFJbnRvQ29udmVydGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDcs
NyArMTQ3LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlk
U3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICB9KTsKIH0KIAotdm9pZCBM
ZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmll
d0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgTGVnYWN5UHJldmll
d0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXIm
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGF1dG8gcmVzb3Vy
Y2VMb2FkZXIgPSBtX3Jlc291cmNlTG9hZGVyLmdldCgpOwogICAgIGlmICghcmVzb3VyY2VMb2Fk
ZXIpCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRl
UGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICBtX2Ns
aWVudC0+ZGlkUmVxdWVzdFBhc3N3b3JkKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
IAotdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmll
d0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIExl
Z2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVy
KFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZjb252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwogICAg
IGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLmdldCgpLmdldCgpKTsKQEAgLTIzNSw3
ICsyMzUsNyBAQCBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0g
ZGVmYXVsdDsKIExlZ2FjeVByZXZpZXdMb2FkZXI6OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3Vy
Y2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAg
OiBtX2NvbnZlcnRlciB7IFByZXZpZXdDb252ZXJ0ZXI6OmNyZWF0ZShyZXNwb25zZSwgKnRoaXMp
IH0KICAgICAsIG1fY2xpZW50IHsgbWFrZUNsaWVudChsb2FkZXIsIG1fY29udmVydGVyLT5wcmV2
aWV3RmlsZU5hbWUoKSwgbV9jb252ZXJ0ZXItPnByZXZpZXdVVEkoKSkgfQotICAgICwgbV9vcmln
aW5hbERhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fb3JpZ2luYWxEYXRh
IHsgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQogICAgICwgbV9yZXNvdXJjZUxv
YWRlciB7IGxvYWRlciB9CiAgICAgLCBtX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmcg
eyBsb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2Fk
aW5nUXVpY2tMb29rUHJldmlldygpIH0KIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmlu
ZGV4IGNlZDU2MDljMDA1YTUzNTJiMzNkMTE5OGY0NWI5OGJhODRhNzFkMmMuLmExMjA0NGM0MTZk
MGQ0ODZhZmVjOTllMWQwZTEwZWZhZjFmOWRjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGll
bnQuaApAQCAtMzksMTMgKzM5LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGVudW0gY2xhc3Mg
RE9NUGFzdGVBY2Nlc3NDYXRlZ29yeSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNj
ZXNzUmVzcG9uc2UgOiB1aW50OF90OwogCi1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwor
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1l
bnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBOb2RlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0
eWxlUHJvcGVydGllczsKIGNsYXNzIFRleHRDaGVja2VyQ2xpZW50OwogY2xhc3MgVmlzaWJsZVNl
bGVjdGlvbjsKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBsZVJh
bmdlJikgPSAwOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICB2aXJ0dWFs
IHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50
aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYg
LyogcHJlZmVycmVkRmlsZU5hbWUgKi8sIFJlZjxTaGFyZWRCdWZmZXI+JiYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyog
aWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3Ry
aW5nJiAvKiBwcmVmZXJyZWRGaWxlTmFtZSAqLywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlw
ZSAqLywgY29uc3QgU3RyaW5nJiAvKiBmaWxlUGF0aCAqLykgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJiAvKiBpZGVudGlmaWVyICovKSB7IH0KQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3
aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5k
aWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCA3Yjk2MWRiMDQwNGMxZDE5NzM2MDc0ZTRhOWQ2YzFkYzk0MjEyMjdmLi45N2Uw
MWI1YzY5NzZkNjdmMGYzYmRmY2VkZWM2YWJjZjA0ODUyYzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
QEAgLTE5NzMsNyArMTk3Myw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQo
KSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hlcyBs
b2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxvYWQg
ZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4KICAg
ICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIGF1dG8gZGF0YSA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJT
dHlsZVNoZWV0UGF0aCk7CisgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0YSkKICAg
ICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2Vy
aWFsaXplci5jcHAKaW5kZXggMDFlMTZkZDk4ZjRkZjBjZWIyMWRmOTA4ZDFmNDBjNjI0YWFlNGMy
Ny4uMDIwMDFhYjM0MzAxOGE3MzI1NTk5OGZjNDc0Y2ViZmM0OWY4Yzg0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFBhZ2VT
ZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgU3RyaW5nIHRleHQgPSBhY2N1bXVsYXRvci5zZXJpYWxpemVOb2RlcygqZG9j
dW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVJbmNsdWRp
bmdOb2RlKTsKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0
ZWRNSU1FVHlwZSgpLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5n
LmVuY29kZSh0ZXh0LCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7Cisg
ICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUo
KSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBQQUw6OlVu
ZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRk
KHVybCk7CiAKICAgICBmb3IgKGF1dG8mIG5vZGUgOiBub2RlcykgewpAQCAtMjYwLDcgKzI2MCw3
IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NTU3R5bGVT
aGVldCogc3R5bGVTaGVldCwgY29uc3QgVVJMCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
Y2hlY2sgd2hldGhlciBhIGNoYXJzZXQgaGFzIGJlZW4gc3BlY2lmaWVkIGFuZCBpZiBub25lIHdh
cyBmb3VuZCBhZGQgb25lLgogICAgICAgICBQQUw6OlRleHRFbmNvZGluZyB0ZXh0RW5jb2Rpbmco
c3R5bGVTaGVldC0+Y29udGVudHMoKS5jaGFyc2V0KCkpOwogICAgICAgICBBU1NFUlQodGV4dEVu
Y29kaW5nLmlzVmFsaWQoKSk7Ci0gICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgInRl
eHQvY3NzIl9zLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVu
Y29kZShjc3NUZXh0LnRvU3RyaW5nKCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRp
ZXMpKSB9KTsKKyAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3Ms
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmlu
ZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgICAgIG1f
cmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogICAgIH0KIH0KQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lk
IFBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwg
UmVuZGVyRWxlbWVudCogaW1hZwogICAgIGlmICghaW1hZ2UgfHwgaW1hZ2UtPmltYWdlKCkgPT0g
JkltYWdlOjpudWxsSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihp
bWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFn
ZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIGRhdGEgPSBp
bWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VTZXJpYWxpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgK
aW5kZXggYmZjYmU3YjhkYmZkNDlmNzlkMWEwMGM4MDA0ZWFkZTI5YzQ4MDgyMS4uZmYzZTJlMWZj
YjA2MWE0ZmZmYzVkZWZkNGMyZDE4MGFmNDliZjc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNl
cmlhbGl6ZXIuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgc3RydWN0IFJlc291cmNl
IHsKICAgICAgICAgVVJMIHVybDsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAgICAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YTsKICAgICB9OwogCiAgICAgZXhwbGljaXQgUGFnZVNlcmlhbGl6ZXIoVmVj
dG9yPFJlc291cmNlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKaW5kZXggM2VkZDljNzFiYjI3
ZTUwZmRmZGZhY2VlMjcxZWZlZmI3Y2IyOTFmNS4uNjhiMGRkMmMzMDZiNzk0NTMxZDI5YmQxNDBk
Y2I0MmI0OGUyNzM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCkBAIC0zOSw3ICszOSw3IEBA
IHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3RmlsZSB7CiAgICAgU3RyaW5nIGZpbGVO
YW1lOwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAgICAgCiBzdHJ1Y3QgU2hhcmVEYXRh
V2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0
YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKaW5k
ZXggZDY4MDVhM2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRmMi4uNzU4MzZiODc5MTQz
YjYwYTdmMzUxOTcwMzIwN2I2YWQzZDhkNGY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVE
YXRhUmVhZGVyLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFNoYXJlRGF0YVJlYWRlcjo6ZGlk
RmluaXNoTG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogCiAg
ICAgUmF3RmlsZSBmaWxlOwogICAgIGZpbGUuZmlsZU5hbWUgPSBmaWxlTmFtZTsKLSAgICBmaWxl
LmZpbGVEYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5
dGVMZW5ndGgoKSk7CisgICAgZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0
YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJy
YXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBwZW5kKFdU
Rk1vdmUoZmlsZSkpOwogICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0tleWVkQ29kaW5nLmgKaW5kZXggM2Q4MGQ3YTFkNDI0NTg1MjBiZDU0MzhlZjM2ZDhhNTdj
YjVkNGU3ZS4uNzlhMjM1MzU1ZjFlOGVmODYxNTM1MmU2MzljOGM2MzE4ZjQwMzc3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWREZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVu
Y29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJikgPSAwOwog
Ci0gICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2Rp
bmcoKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGlu
ZygpID0gMDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBlbmNvZGVFbnVt
KGNvbnN0IFN0cmluZyYga2V5LCBUIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05v
d1BsYXlpbmdNYW5hZ2VyLmgKaW5kZXggZTM4MDZlODdkZjc5YTNkOWI1Y2FlMTIxNGRlNjZhYTJh
NjU4NDdkYi4uZmM2NmMzNjVhMmYyOWE0Yzc4ZTYwNjE5ZTQ3YTcxYzcyNThkOGZlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCkBAIC03MCw3ICs3MCw3
IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gbV9ub3dQbGF5
aW5nSW5mbzsKICAgICBzdHJ1Y3QgQXJ0d29ya0NhY2hlIHsKICAgICAgICAgU3RyaW5nIHNyYzsK
LSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgICAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogICAgIH07CiAgICAgc3RkOjpvcHRp
b25hbDxBcnR3b3JrQ2FjaGU+IG1fbm93UGxheWluZ0luZm9BcnR3b3JrOwogICAgIGJvb2wgbV9z
ZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmQuY3BwCmluZGV4IDU5NmFmYjhlOTE4ODhjMmFhNjcyZmMwZTVkMDZjYjY0NDlk
ZWRhN2QuLmJhMTc4NzI0NzFhZTI4NjRmNzcwODJjNDdkNjdmMjYzZWQ1ZGY5NTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC05Myw3ICs5Myw3IEBAIFN0cmluZyBQ
YXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQog
ICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gUGFzdGVi
b2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoYXV0byogc3RyYXRlZ3kgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkpCiAgICAgICAgIHJldHVybiBzdHJhdGVneS0+cmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCB0eXBlLCBuYW1lKCksIGNvbnRleHQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggNGUyNzgyZDliYWNiOWQwMTlkMTIwMDIw
ZGZmMDExNmUyNTIzMmQwNC4uZjJlYjk3MjAxOWE0MDJlYjg4Y2VmZjhmNDdjM2U4NjNmZTM0MDJj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtNjEsMTMgKzYxLDEzIEBA
IHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3Mg
RG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRWxlbWVudDsKIGNsYXNz
IEZyYW1lOwogY2xhc3MgUGFzdGVib2FyZFN0cmF0ZWd5OwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNpbXBsZVJhbmdlOwogCkBA
IC04MywxNCArODMsMTQgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBXRUJD
T1JFX0VYUE9SVCB+UGFzdGVib2FyZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVudE9y
aWdpbjsKICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJU
RkZvcm1hdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5n
Rm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5T
dHJpbmdGb3JtYXQ7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFURk9STShH
VEspCiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CkBAIC0xMjAsMTcgKzEyMCwxNyBAQCBzdHJ1
Y3QgUGFzdGVib2FyZEltYWdlIHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZEltYWdl
KCk7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBTdHJpbmcg
ZGF0YUluSFRNTEZvcm1hdDsKICNlbmRpZgogI2lmICFQTEFURk9STShXSU4pCiAgICAgUGFzdGVi
b2FyZFVSTCB1cmw7CiAjZW5kaWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lO
KSkKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOworICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVzb3VyY2VN
SU1FVHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBzdWdnZXN0
ZWROYW1lOwogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemU7CkBAIC0xNDQsNyArMTQ0LDcgQEAgc3Ry
dWN0IFBhc3RlYm9hcmRCdWZmZXIgewogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogI2VuZGlm
CiAgICAgU3RyaW5nIHR5cGU7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKIH07CiAKIC8vIEZvciByZWFkaW5n
IGZyb20gdGhlIHBhc3RlYm9hcmQuCkBAIC0xNTksMTYgKzE1OSwxNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXpl
IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUgPSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5n
JikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlv
blNpemUgPSB7IH0pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZEltYWdlKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUg
cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBy
ZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSA9IDA7CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWREYXRhQnVmZmVyKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7
CisgICAgdmlydHVhbCBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZERh
dGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkg
PSAwOwogI2VuZGlmCiB9OwogCkBAIC0xODMsNyArMTgzLDcgQEAgc3RydWN0IFBhc3RlYm9hcmRG
aWxlUmVhZGVyIHsKICAgICB2aXJ0dWFsIH5QYXN0ZWJvYXJkRmlsZVJlYWRlcigpID0gZGVmYXVs
dDsKICAgICB2aXJ0dWFsIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIC8qIHR5cGUgKi8p
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVhZEJ1ZmZlcihjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9
IDA7CiB9OwogCiBjbGFzcyBQYXN0ZWJvYXJkIHsKQEAgLTMwOSw3ICszMDksNyBAQCBwdWJsaWM6
CiAgICAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IHBhc3RlYm9hcmRJdGVtSW5m
byhzaXplX3QgaW5kZXgpIGNvbnN0OwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29u
c3QgU3RyaW5nJiB0eXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKTsK
ICAgICBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpOwogCiAgICAgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQu
Z2V0KCk7IH0KQEAgLTM0MSw3ICszNDEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGFk
ZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShMaXN0SGFzaFNldDxTdHJpbmc+JiByZXN1
bHRUeXBlcywgY29uc3QgU3RyaW5nJiBjb2NvYVR5cGUpOwogICAgIFN0cmluZyByZWFkU3RyaW5n
Rm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYpOwogICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRU
eXBlc1dpdGhTZWN1cml0eUNoZWNrKCk7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7Cisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVj
ayhjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmRDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKaW5kZXggMjBjZDYxZTcxMTIxMzIxY2M0NmQwNzcxOTkxYWFj
NWFhNDc1NTgwMi4uOWQzZjg3YTkxMTRjMzhhNTRlMzNhMDVlMmI5ODk1MmNjZjY3YWU3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcApA
QCAtMzMsMTMgKzMzLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHN0ZDo6
dmFyaWFudDxTdHJpbmcsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY29weVBsYXRmb3Jt
RGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBvdGhlcikKK3N0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVy
Pj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVk
QnVmZmVyPj4mIG90aGVyKQogewogICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmlu
Zz4ob3RoZXIpKQogICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxTdHJpbmc+KG90aGVyKSB9Owog
Ci0gICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PihvdGhlcikpCi0gICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4ob3RoZXIpLmNvcHlSZWYoKSB9OworICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikpCisgICAgICAgIHJldHVybiB7IHN0ZDo6
Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikuY29weVJlZigpIH07CiAKICAgICByZXR1cm4g
eyB9OwogfQpAQCAtODAsNyArODAsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6UGFzdGVib2Fy
ZEN1c3RvbURhdGEoU3RyaW5nJiYgb3JpZ2luLCBWZWN0b3I8RW50cnk+JiYgZGF0YQogewogfQog
Ci1SZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0
ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBjb25zdGV4cHIgdW5zaWdu
ZWQgY3VycmVudEN1c3RvbURhdGFTZXJpYWxpemF0aW9uVmVyc2lvbiA9IDE7CiAKQEAgLTg5LDcg
Kzg5LDcgQEAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47CiAg
ICAgZW5jb2RlciA8PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29kZXIg
PDwgb3JkZXJlZFR5cGVzKCk7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6
ZSgpKTsKIH0KIAogUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmIGRlY29kZXIp
CkBAIC0xMjQsNyArMTI0LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW4KICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCitQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZl
cihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZnJvbVBlcnNpc3Rl
bmNlRGVjb2RlcihidWZmZXIuZGVjb2RlcigpKTsKIH0KQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lk
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgdmFsdWUpCiAgICAgYWRkT3JNb3ZlRW50cnlUb0VuZCh0eXBlKS5wbGF0Zm9y
bURhdGEgPSB7IHZhbHVlIH07CiB9CiAKLXZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OndyaXRl
RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRh
dGEpCit2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgYWRkT3JNb3ZlRW50cnlUb0Vu
ZCh0eXBlKS5wbGF0Zm9ybURhdGEgPSB7IFdURk1vdmUoZGF0YSkgfTsKIH0KQEAgLTIwMiwxNCAr
MjAyLDE0IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpz
YW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIGN1c3RvbURhdGE7
CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUp
IGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkgewogICAgICAgICBpZiAo
ZW50cnkudHlwZSAhPSB0eXBlKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYg
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihlbnRy
eS5wbGF0Zm9ybURhdGEpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRhKS5jb3B5UmVmKCk7CisgICAgICAg
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0
Zm9ybURhdGEpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+
PihlbnRyeS5wbGF0Zm9ybURhdGEpLmNvcHlSZWYoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CkBAIC0yNjUsMTEgKzI2NSwxMSBAQCB2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpmb3JFYWNoQ3VzdG9tU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLAog
ICAgIH0KIH0KIAotdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3Ry
aW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6
dmFyaWFudDxTdHJpbmcsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1
bmN0aW9uKSBjb25zdAordm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3Jt
U3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0
ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYgZnVuY3Rpb24p
IGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkgewogICAgICAgICBhdXRv
JiBkYXRhID0gZW50cnkucGxhdGZvcm1EYXRhOwotICAgICAgICBpZiAoKHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5pc051bGwo
KSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
KGRhdGEpKQorICAgICAgICBpZiAoKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRh
KSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5pc051bGwoKSkgfHwgc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkpCiAgICAgICAgICAgICBmdW5jdGlvbihl
bnRyeS50eXBlLCBkYXRhKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCBjNmNiYzc5MGM3ZTA1ZjMxNDgyMDVmYzVhMWNj
NWE0NjgzYzZkNjE3Li4yYmU4MWQyOTM4YTNkYmQwOTAyNmNhNmVjNjRhYzMyODdlNmFiYzAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAg
LTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSB7CiBwdWJsaWM6CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgICAgICBT
dHJpbmcgdHlwZTsKICAgICAgICAgU3RyaW5nIGN1c3RvbURhdGE7Ci0gICAgICAgIHN0ZDo6dmFy
aWFudDxTdHJpbmcsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gcGxhdGZvcm1EYXRhOwor
ICAgICAgICBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4gcGxhdGZvcm1E
YXRhOwogICAgIH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSgp
OwpAQCAtNjAsMTYgKzYwLDE2IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgdm9pZCBzZXRPcmlnaW4oY29uc3QgU3Ry
aW5nJiBvcmlnaW4pIHsgbV9vcmlnaW4gPSBvcmlnaW47IH0KIAotICAgIFdFQkNPUkVfRVhQT1JU
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJl
ZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9h
cmRDdXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVj
b2RlciYmKTsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3Q7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoY29uc3Qg
U3RyaW5nJiB0eXBlKSBjb25zdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1c3Rv
bURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKIAogICAgIHZvaWQgd3JpdGVTdHJpbmco
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICB2b2lkIHdyaXRl
RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRh
dGEpOworICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhKTsKICAgICB2b2lkIHdyaXRlU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKICAgICB2b2lkIGNsZWFyKCk7CkBA
IC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZm9yRWFjaFR5cGUoRnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmKT4mJikgY29uc3Q7CiAgICAgdm9pZCBmb3JFYWNoUGxhdGZvcm1T
dHJpbmcoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0
YSk+JiYpIGNvbnN0OwotICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVu
Y3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcs
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmKSBjb25zdDsKKyAgICB2b2lk
IGZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4mIGRh
dGEpPiYmKSBjb25zdDsKICAgICB2b2lkIGZvckVhY2hDdXN0b21TdHJpbmcoRnVuY3Rpb248dm9p
ZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk+JiYpIGNvbnN0OwogCiAg
ICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRTdHJhdGVneS5oCmluZGV4IDliMWQ0Yjk1ZWRmYmRmYTA1OTU2YTM5OTA3MWFiOWZkOTE4
M2I5MDcuLmI0ZDljNTc0ZGNhZTdlMWQwNjM2NjY4N2ZkMzVhYjgyNDRhNzgwZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0zMSwxMSArMzEs
MTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7Ci1jbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZENv
bnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogc3Ry
dWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3Qg
UGFzdGVib2FyZFVSTDsKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2b2lkIGdl
dFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdl
dFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJp
bmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpA
QCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGludDY0X3QgYWRkVHlwZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBp
bnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OwotICAgIHZpcnR1YWwgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIGlu
dDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBhc3RlYm9h
cmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgQ29sb3ImLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0g
MDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgU3RyaW5nIHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFz
dGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwot
ICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZyb21QYXN0
ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5n
JiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6
Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdl
Q291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpv
cHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZv
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHJl
YWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9D
bGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0YSYmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCBiNDVjZTFmOTM4Y2JhNTA2
NjM4YjZhNDEyMWQ3NjczNjNmOGJlNTIyLi44ZTJjOGZiOTJkOTcyZmQ0MjE2MDA3YmM4Nzc3NTJj
ZmQzNDhmODRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
V3JpdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0
ZXJEYXRhLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQ
YXN0ZWJvYXJkV3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEsMTQgQEAg
cHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVudE9yaWdp
bjsKICAgICAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAgICAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgICAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1h
dDsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsK
KyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBTdHJpbmcg
ZGF0YUluSFRNTEZvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAg
ICAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgICAgIFZlY3RvcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKaW5kZXggM2Y0ODMy
YTVhNjU4YzFjYzdjMGFhMTNiMjZlMGVhNDczM2U5ZDNiNy4uOWU3MmU0NGEyZWFjNGQ4ZWY3MzBi
OTg3MWQwZWM1MDhlZDlmYWM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1Db250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1Db250ZW50RmlsdGVyLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtQ29udGVudEZpbHRlciB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBsZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgPSAw
OwotICAgIHZpcnR1YWwgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50
RGF0YSgpIGNvbnN0ID0gMDsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgdmly
dHVhbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCA9
IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
UGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJk
LmgKaW5kZXggNTI3MGM1OTg0MzU1MTA0ZjkxYTVjZTU0MjIyM2I0NDljMmI1MTg5YS4uOGZlOTI0
ZGZlNTZiYzNjOTk2NjZlYmYwNGY3MzU0MDE1NTVhYTMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTQ3LDE0ICs0NywxNCBAQCBzdHJ1Y3Qg
d3BlX3Bhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOwotY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBh
c3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKIHN0cnVjdCBQYXN0ZWJv
YXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRV
Ukw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybVBhc3RlYm9hcmQg
ewogcHVibGljOgpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBw
bGF0Zm9ybVBhc3RlYm9hcmRUeXBlRm9yU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25z
dCBTdHJpbmcmIGRvbVR5cGUsIEluY2x1ZGVJbWFnZVR5cGVzID0gSW5jbHVkZUltYWdlVHlwZXM6
Ok5vKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4m
IHR5cGVzKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgog
CiAgICAgLy8gVGhlc2UgbWV0aG9kcyB3aWxsIHJldHVybiAwIGlmIHBhc3RlYm9hcmQgb3duZXJz
aGlwIGhhcyBiZWVuIHRha2VuIGZyb20gdXMuCiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBj
b3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQpOwotICAgIFdFQkNPUkVfRVhQT1JUIGlu
dDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZm
ZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRVUkwmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldENvbG9yKGNvbnN0IENvbG9yJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwpAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFz
dGVib2FyZFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiByZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBTdHJp
bmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY291bnQoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKaW5kZXggOWVi
NGJkZGYwN2NmNjE2NmE1ODYwYmFjMDc0NjI2ZDI5NWFjYjMyYi4uYTRlMDg3NTA5ZTU5NGQxODcx
MTI1ZDEzYzk5NTNjNGU0Mzk0OTM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUHJldmlld0NvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlci5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgY29uc3QgUmVzb3VyY2VFcnJvciYg
UHJldmlld0NvbnZlcnRlcjo6cHJldmlld0Vycm9yKCkgY29uc3QKICAgICByZXR1cm4gbV9wcmV2
aWV3RXJyb3I7CiB9CiAKLWNvbnN0IFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJl
dmlld0RhdGEoKSBjb25zdAorY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgUHJldmlld0Nv
bnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiAqbV9wcmV2aWV3RGF0
YS5nZXQoKTsKIH0KQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRh
dGVNYWluUmVzb3VyY2UoKQogICAgIH0pOwogfQogCi12b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmFw
cGVuZEZyb21CdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFByZXZpZXdD
b252ZXJ0ZXI6OmFwcGVuZEZyb21CdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIHdoaWxlIChidWZmZXIuc2l6ZSgpID4gbV9sZW5ndGhBcHBlbmRlZCkg
ewogICAgICAgICBhdXRvIG5ld0RhdGEgPSBidWZmZXIuZ2V0U29tZURhdGEobV9sZW5ndGhBcHBl
bmRlZCk7CkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlU
b0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xpZW50LnByZXZp
ZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKCp0aGlzKTsKIH0KIAotdm9pZCBQcmV2aWV3
Q29udmVydGVyOjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyB7
IFJlZiB7ICp0aGlzIH0gfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZl
cnRlci5oCmluZGV4IGYxNGRlMWQ5MTRhNGNiY2ExNWE3NWQ2ZDVlNWUwZGNiNGM0YTlmNzYuLjVh
ZWRhM2I3MmY0MGJhNWFmNzQxMTJjMDA0NTdmOTY2YTdhMDNiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RydWN0IFBy
ZXZpZXdDb252ZXJ0ZXJQcm92aWRlcjsKIHN0cnVjdCBQcmV2aWV3UGxhdGZvcm1EZWxlZ2F0ZSA6
IENhbk1ha2VXZWFrUHRyPFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlPiB7CiAgICAgdmlydHVhbCB+
UHJldmlld1BsYXRmb3JtRGVsZWdhdGUoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRGaW5pc2hMb2FkaW5nKCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZEZhaWxXaXRoRXJyb3IoY29uc3QgUmVz
b3VyY2VFcnJvciYpID0gMDsKIH07CkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgcHJldmlld0ZpbGVOYW1lKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIHByZXZpZXdVVEkoKSBjb25zdDsKICAgICBjb25zdCBSZXNvdXJjZUVycm9y
JiBwcmV2aWV3RXJyb3IoKSBjb25zdDsKLSAgICBjb25zdCBTaGFyZWRCdWZmZXImIHByZXZpZXdE
YXRhKCkgY29uc3Q7CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcHJldmlld0Rh
dGEoKSBjb25zdDsKIAogICAgIHZvaWQgZmFpbGVkVXBkYXRpbmcoKTsKICAgICB2b2lkIGZpbmlz
aFVwZGF0aW5nKCk7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1BsYXRm
b3JtUGFzc3dvcmRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikgY29uc3Q7CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGl0ZXJhdGVDbGllbnRzKFQmJiBjYWxsYmFjayk7Ci0gICAg
dm9pZCBhcHBlbmRGcm9tQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgYXBw
ZW5kRnJvbUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBk
aWRBZGRDbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYpOwogICAgIHZvaWQgZGlkRmFpbENv
bnZlcnRpbmdXaXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkRmFp
bFVwZGF0aW5nKCk7CkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRm
b3JtVW5sb2NrV2l0aFBhc3N3b3JkKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gUHJldmlld1Bs
YXRmb3JtRGVsZWdhdGUKLSAgICB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRlbGVnYXRlRGlkRmlu
aXNoTG9hZGluZygpIGZpbmFsOwogICAgIHZvaWQgZGVsZWdhdGVEaWRGYWlsV2l0aEVycm9yKGNv
bnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oCmluZGV4IDA0ZWEzNjgwNjkyYjI1MmExOTg5YzI2
Y2EyMDQyMTI3NzdhYTNiN2IuLjljZWU5MzMyMGIyMzhiNGNkNzNjZGQyZTAzMDJjM2JmNGRhZDY4
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xp
ZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQcmV2
aWV3Q29udmVydGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVy
Q2xpZW50IDogQ2FuTWFrZVdlYWtQdHI8UHJldmlld0NvbnZlcnRlckNsaWVudD4gewogICAgIHZp
cnR1YWwgflByZXZpZXdDb252ZXJ0ZXJDbGllbnQoKSA9IGRlZmF1bHQ7CkBAIC00Miw3ICs0Miw3
IEBAIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50IDogQ2FuTWFrZVdlYWtQdHI8UHJldmll
d0NvbnZlcnRlckNsaWVudD4gewogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlk
RmluaXNoVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cHJldmlld0NvbnZlcnRlckRpZEZhaWxVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZp
ZXdDb252ZXJ0ZXImKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRS
ZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBuZXdEYXRh
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQ
cmV2aWV3Q29udmVydGVyJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgbmV3RGF0YSkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGlu
ZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVy
dGVyRGlkRmFpbENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCmluZGV4
IDgyNzg2MzkzZmNlZDc1NGM4NWY3YjI4OTEyNTJmNTE2YmVkMGQ1NDkuLmI5ODZlZTQwZDE5NzUx
NzRmNTRhZDI5YTE2OGNhZGYxODk0NTZjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgOiBDYW5NYWtl
V2Vha1B0cjxQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI+IHsKICAgICB2aXJ0dWFsIH5QcmV2aWV3
Q29udmVydGVyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0Nv
bnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciopPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByb3ZpZGVQYXNzd29yZEZvclByZXZp
ZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgU3RyaW5nJik+JiYpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Byb21pc2VkQXR0YWNobWVudEluZm8uaAppbmRleCBhMWNjNzY5NWMwYTYzZWQ3ODdlMjEwYTdj
ODI3Nzc2N2RjY2U3MWFmLi4xZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVjMzJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJ
bmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5m
by5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21p
c2VkQXR0YWNobWVudEluZm8gewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0z
OCw3ICszOCw3IEBAIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAg
ICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29u
c3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA2
ZjUzMGQxMzI5YmJmY2UxNmE5ZGE3YWQwMTU4OWNhNTJlZDMwN2ExLi40ZDk5ZTllNjUwMmMwY2Vj
NTExMjcxNzc0NmZkODZlYzNlZTVjOGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHAKQEAgLTM3LDY5ICszNyw2OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkKK1JlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKQogewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcik7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQorUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBl
ZEZpbGVEYXRhKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRh
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBl
ZEZpbGVEYXRhKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKIH0KIAotUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVj
dG9yKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7CiB9CiAKLVJl
ZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRl
ciYmIHByb3ZpZGVyKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUo
cHJvdmlkZXIpKSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0
OworRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcigpID0gZGVm
YXVsdDsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJiBmaWxlRGF0YSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKICAgICA6IG1f
c2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKSB9KTsKIH0KIAotU2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCitGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92
aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUoKSkKIHsKICAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRl
cikpIH0pOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGFwcGVuZChX
VEZNb3ZlKGJ1ZmZlcikpOwogfQogCiAjaWYgVVNFKEdTVFJFQU1FUikKLVJlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZm
ZXIpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKG1hcHBlZEJ1ZmZlcikpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIobWFwcGVkQnVmZmVyKSk7CiB9CiAK
LVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRC
dWZmZXIpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEdz
dE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiAgICAgOiBtX3NpemUobWFwcGVkQnVm
ZmVyLnNpemUoKSkKIHsKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50Ojpj
cmVhdGUoJm1hcHBlZEJ1ZmZlcikgfSk7CiB9CiAjZW5kaWYKIAotc3RhdGljIFZlY3Rvcjx1aW50
OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRW
ZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gY29t
YmluZVNlZ21lbnRzRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBj
b21iaW5lZERhdGE7CiAgICAgY29tYmluZWREYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6
ZSk7CkBAIC0xMDksMTkgKzEwOSwxOSBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVT
ZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvcgogICAgIHJl
dHVybiBjb21iaW5lZERhdGE7CiB9CiAKLVJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzKCkgY29uc3QKK1JlZjxTaGFyZWRCdWZmZXI+IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzKCkgY29uc3QKIHsKICAgICBpZiAobV9j
b250aWd1b3VzKQotICAgICAgICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0PENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSB9OworICAgICAg
ICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSB9OwogICAgIGlmICghbV9zZWdtZW50cy5zaXpl
KCkpCi0gICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgaWYgKG1fc2VnbWVudHMu
c2l6ZSgpID09IDEpCi0gICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUobV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CisgICAgICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsKICAgICBh
dXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9zaXpl
KTsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29t
YmluZWREYXRhKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29t
YmluZWREYXRhKSk7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRh
KCkgY29uc3QKK1ZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5RGF0
YSgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0YS5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KHNpemUoKSk7CkBAIC0xMzEsNyArMTMxLDcgQEAgVmVjdG9yPHVpbnQ4
X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdAogICAgIHJldHVybiBkYXRhOwogfQog
Ci1WZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCitWZWN0b3I8dWludDhf
dD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKQogewogICAgIGlmIChtX3NlZ21l
bnRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTE0NiwxMyArMTQ2LDEzIEBA
IFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkKICAgICByZXR1cm4gY29t
YmluZWREYXRhOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRCdWZmZXI6OmdldFNv
bWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKIHsK
ICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBlbGVtZW50ID0gZ2V0U2VnbWVudEZv
clBvc2l0aW9uKHBvc2l0aW9uKTsKICAgICByZXR1cm4geyBlbGVtZW50LT5zZWdtZW50LmNvcHlS
ZWYoKSwgcG9zaXRpb24gLSBlbGVtZW50LT5iZWdpblBvc2l0aW9uIH07CiB9CiAKLWNvbnN0IFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogU2hhcmVkQnVmZmVyOjpnZXRTZWdt
ZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aW9uKSBjb25zdAorY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6Z2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGlvbikgY29uc3QKIHsKICAgICBS
RUxFQVNFX0FTU0VSVChwb3NpdGlvbiA8IG1fc2l6ZSk7CiAgICAgYXV0byBjb21wYXJhdG9yID0g
W10oY29uc3Qgc2l6ZV90JiBwb3NpdGlvbiwgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSYg
ZW50cnkpIHsKQEAgLTE2Myw3ICsxNjMsNyBAQCBjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50VmVjdG9yRW50cnkqIFNoYXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9uKAogICAg
IHJldHVybiBlbGVtZW50OwogfQogCi1TdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygp
IGNvbnN0CitTdHJpbmcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25z
dAogewogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBmb3JFYWNoU2VnbWVu
dChbJl0oYXV0byYgc2VnbWVudCkgewpAQCAtMTczLDcgKzE3Myw3IEBAIFN0cmluZyBTaGFyZWRC
dWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0
cmluZygpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKSBjb25zdAorUmVmUHRyPEFycmF5QnVmZmVyPiBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1
ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzaXplKCkpLCAxKTsKICAgICBpZiAoIWFycmF5QnVmZmVyKSB7CkBAIC0xOTIsNyAr
MTkyLDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5
QnVmZmVyKCkgY29uc3QKICAgICByZXR1cm4gYXJyYXlCdWZmZXI7CiB9CiAKLXZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKICAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgbV9zZWdtZW50cy5yZXNlcnZlQ2Fw
YWNpdHkobV9zZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgpKTsKQEAgLTIw
Myw3ICsyMDMsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLXZvaWQg
U2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkK
K3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIFZlY3Rv
cjx1aW50OF90PiB2ZWN0b3I7CkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6
OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogICAgIEFTU0VSVChp
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChW
ZWN0b3I8dWludDhfdD4mJiBkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBl
bmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKICAgICBBU1NFUlQoIW1fY29udGlndW91cyk7
CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwpAQCAtMjIyLDE2ICsyMjIsMTYgQEAg
dm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogICAgIEFT
U0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNs
ZWFyKCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogewogICAgIG1fc2l6
ZSA9IDA7CiAgICAgbV9zZWdtZW50cy5jbGVhcigpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29u
c2lzdGVudCgpKTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkg
Y29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Ojpjb3B5KCkgY29uc3QKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY2xv
bmUgPSBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOwogICAgIGNsb25lLT5t
X3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDog
bV9zZWdtZW50cykKQEAgLTI0MSwxNCArMjQxLDE0IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi12b2lkIFNoYXJl
ZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNv
bnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVp
bnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50
czsKICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBzZWdtZW50cykKICAgICAgICAgYXBwbHkoU3Bh
biB7IHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSB9KTsK
IH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50
OF90PiYgcHJlZml4KSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpzdGFydHNX
aXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKIHsKICAgICBpZiAo
cHJlZml4LmVtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjcwLDcgKzI3MCw3IEBA
IGJvb2wgU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4m
IHByZWZpeCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBT
aGFyZWRCdWZmZXI6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKK1Zl
Y3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAg
aWYgKG9mZnNldCA+PSBzaXplKCkpCkBAIC0yOTcsMTIgKzI5NywxMiBAQCBWZWN0b3I8dWludDhf
dD4gU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0
CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCog
ZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIHsK
ICAgICByZXR1cm4gY29weVRvKGRlc3RpbmF0aW9uLCAwLCBsZW5ndGgpOwogfQogCi12b2lkIFNo
YXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXpl
X3QgbGVuZ3RoKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9p
ZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGxlbmd0aCArIG9mZnNldCA8PSBzaXplKCkpOwogICAgIGlmIChvZmZzZXQgPj0g
c2l6ZSgpKQpAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9p
ZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB9CiAK
ICNpZiBBU1NFUlRfRU5BQkxFRAotYm9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0
ZW50KCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNp
c3RlbnQoKSBjb25zdAogewogICAgIHNpemVfdCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChjb25z
dCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykgewpAQCAtMzU0LDEyICszNTQsMTIgQEAgYm9v
bCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKICNlbmRpZiAvLyBB
U1NFUlRfRU5BQkxFRAogCiAjaWYgIVVTRShDRikKLXZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVt
b3J5Tm90TmVlZGVkU29vbigpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6Omhp
bnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIHsKIH0KICNlbmRpZgogCi1ib29sIFNoYXJl
ZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAorYm9v
bCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIG90aGVyKSBjb25zdAogewogICAgIGlmICh0aGlzID09ICZvdGhlcikKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC00MDgsMTkgKzQwOCwxOSBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6
b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0
cnVlOwogfQogCi1Db250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
KCkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKCkKIHsKICAgICBtX2NvbnRpZ3VvdXMgPSB0
cnVlOwogfQogCi1Db250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
UmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCiB7CiAgICAgbV9zaXplID0gc2VnbWVudC0+c2l6
ZSgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsKICAg
ICBtX2NvbnRpZ3VvdXMgPSB0cnVlOwogfQogCi1Db250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikK
K1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGNvbnRpZ3VvdXNCdWZmZXIpCiB7CiAgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09u
ZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOwogICAgIG1fc2l6ZSA9
IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsKQEAgLTQyOSwzNiArNDI5LDM2IEBAIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBjb250aWd1b3VzQnVmCiAgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKIH0KIAotQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIGRhdGEpCi0gICAgOiBTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKK1NoYXJl
ZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkK
KyAgICA6IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKIHsKICAgICBtX2Nv
bnRpZ3VvdXMgPSB0cnVlOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBN
YXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKK1JlZlB0cjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VG
aWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKIHsKICAgICBpZiAobWF5VXNlRmlsZU1hcHBp
bmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6OlllcykgewogICAgICAgICBib29sIG1hcHBpbmdTdWNj
ZXNzOwogICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShm
aWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKICAgICAgICAgaWYgKG1h
cHBpbmdTdWNjZXNzKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwog
ICAgIH0KIAogICAgIGF1dG8gYnVmZmVyID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUoZmls
ZVBhdGgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqYnVmZmVyKSk7
CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKmJ1ZmZlcikpOwogfQog
Ci1jb25zdCB1aW50OF90KiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK2Nv
bnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fc2Vn
bWVudHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gbV9z
ZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CiB9CiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29k
ZXIgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CitXVEY6OlBlcnNpc3Rl
bmNlOjpEZWNvZGVyIFNoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHsgeyBkYXRhKCksIHNpemUoKSB9IH07CiB9CkBAIC01NDMsMTQgKzU0MywxNCBAQCBzaXplX3Qg
RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3Is
IG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitTaGFyZWRCdWZmZXJCdWls
ZGVyOjpTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogICAgIGluaXRp
YWxpemUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogfQogCi1TaGFyZWRCdWZmZXJCdWlsZGVy
JiBTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRvcj0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCitTaGFyZWRCdWZmZXJCdWlsZGVyJiBTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRv
cj0oUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICgh
YnVmZmVyKSB7CiAgICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKQEAgLTU2MSw3ICs1NjEsNyBA
QCBTaGFyZWRCdWZmZXJCdWlsZGVyJiBTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRvcj0oUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZQogICAgIHJldHVybiAqdGhpczsKIH0KIAotdm9pZCBT
aGFyZWRCdWZmZXJCdWlsZGVyOjppbml0aWFsaXplKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQordm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVyOjppbml0aWFsaXplKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoIW1fYnVmZmVyKTsKICAgICAvLyBX
ZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMg
YWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCkBAIC01NzMsMTIgKzU3MywxMiBA
QCB2b2lkIFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmluaXRpYWxpemUoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCiAgICAgYXBwZW5kKGJ1ZmZlcik7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2UoKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2UoKQogewotICAgIHJldHVybiBtX2J1ZmZlciA/IG1fYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIHJldHVy
biBtX2J1ZmZlciA/IG1fYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkgOiBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKIH0KIAotUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlckJ1aWxkZXI6OnRha2VBc0NvbnRpZ3VvdXMoKQorUmVmPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyQnVpbGRlcjo6dGFrZUFzQ29udGlndW91cygpCiB7CiAgICAgcmV0dXJuIHRha2Uo
KS0+bWFrZUNvbnRpZ3VvdXMoKTsKIH0KQEAgLTU5Myw3ICs1OTMsNyBAQCBSZWZQdHI8QXJyYXlC
dWZmZXI+IFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2VBc0FycmF5QnVmZmVyKCkKIHZvaWQgU2hh
cmVkQnVmZmVyQnVpbGRlcjo6ZW5zdXJlQnVmZmVyKCkKIHsKICAgICBpZiAoIW1fYnVmZmVyKQot
ICAgICAgICBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIG1fYnVm
ZmVyID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiB9CiAKIFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVu
dCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNp
emUpCkBAIC02MTAsMTYgKzYxMCwxNiBAQCBTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVm
ZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmIG90aGVyLCBzaQogewogfQog
Ci1SZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0
ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRh
Vmlldzo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBjb25zdCBSZWY8RGF0YVNl
Z21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgeworICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwg
ZGF0YSA9IGRhdGEoKV0oKSB7IHJldHVybiBkYXRhOyB9LAogICAgICAgICBbc2l6ZSA9IHNpemUo
KV0oKSB7IHJldHVybiBzaXplOyB9CiAgICAgfSk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICAvLyBBbGxv
Y2F0ZSBhIGJ1ZmZlciBiaWcgZW5vdWdoIHRvIGhvbGQgYWxsIHRoZSBjaGFyYWN0ZXJzLgogICAg
IGNvbnN0IHNpemVfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CkBAIC02NDUsNyArNjQ1LDcg
QEAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiAgICAgfQogCiAgICAgYnVmZmVyLnNocmluayhwIC0gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oYnVmZmVyLmRhdGEoKSkpOwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShidWZmZXIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCA3NjBlYjc4YTE4NjZmZWQyM2Iz
MDQzY2Q1ZTE0YWQ1Y2VkZGU0NzI2Li41ZjhiMTY4ZTkxMmY4ZTlmODUzYTVlNTliZTMzNGNhZDUy
OGYxZTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtNjMsNyAr
NjMsNyBAQCBjbGFzcyBEZWNvZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRC
dWZmZXJEYXRhVmlldzsKIAogLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxk
IGJlIGltbXV0YWJsZSBiZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVj
dHMuCkBAIC0xMzEsNDIgKzEzMSw0MiBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgICAgIEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhLAogICAgICAgICBQcm92aWRlcj4gbV9pbW11dGFibGVEYXRh
OwotICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAgZnJpZW5kIGNsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7IC8vIEZvciBjcmVhdGVDRkRhdGEKKyAgICBmcmllbmQgY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKKyAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOyAv
LyBGb3IgY3JlYXRlQ0ZEYXRhCiB9OwogCi1jbGFzcyBTaGFyZWRCdWZmZXIgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVkQnVmZmVyPiB7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+
IGNyZWF0ZShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKLSAgICBzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBjcmVh
dGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUpOyB9Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKFZlY3Rvcjx1aW50OF90
PiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRl
KERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpOworICAgIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IHJldHVybiBjcmVhdGUocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVp
bnQ4X3Q+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gY3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKIAogI2lmIFVTRShGT1VO
REFUSU9OKQogICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0FycmF5PiBjcmVhdGVOU0Rh
dGFBcnJheSgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoTlNEYXRhKik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoTlNEYXRhKik7CiAjZW5kaWYKICNpZiBVU0UoQ0Yp
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShDRkRh
dGFSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlKENGRGF0YVJlZik7CiAjZW5kaWYKIAogI2lmIFVTRShHTElCKQotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVzKik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVh
dGUoR0J5dGVzKik7CiAjZW5kaWYKIAogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHc3RNYXBwZWRPd25lZEJ1ZmZl
ciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VY
UE9SVCBWZWN0b3I8dWludDhfdD4gY29weURhdGEoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBWZWN0b3I8dWludDhfdD4gcmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25z
dDsKIAotICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQgYXZvaWRzIGNvcHlpbmcgYW5k
IHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMgc2FmZSAoVGhlIFNoYXJlZEJ1
ZmZlciBpcyBub3Qgc2hhcmVkKS4KKyAgICAvLyBTaW1pbGFyIHRvIGNvcHlEYXRhKCkgYnV0IGF2
b2lkcyBjb3B5aW5nIGFuZCB3aWxsIHRha2UgdGhlIGRhdGEgaW5zdGVhZCB3aGVuIGl0IGlzIHNh
ZmUgKFRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGlzIG5vdCBzaGFyZWQpLgogICAgIFZlY3Rv
cjx1aW50OF90PiBleHRyYWN0RGF0YSgpOwogCi0gICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZl
ciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAorICAgIC8v
IENyZWF0ZXMgYW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIncyBjb250ZW50cyB0byB0aGF0CiAgICAgLy8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJn
aW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1ZmZlci4KICAgICBXRUJDT1JFX0VY
UE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7CiAK
QEAgLTE3NCwxNCArMTc0LDE0IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiAhc2l6ZSgpOyB9CiAgICAgYm9vbCBpc0NvbnRpZ3VvdXMoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRpZ3VvdXM7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+
IGNvcHkoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gY29weSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQq
IGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0
aCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0
IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYpPiYpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+
JiBwcmVmaXgpIGNvbnN0OwogCi0gICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRh
U2VnbWVudDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudAorICAgIHVzaW5nIERhdGFTZWdtZW50ID0gV2ViQ29yZTo6
RGF0YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aGVuIHVzaW5n
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNl
Z21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0aW9uOwpAQCAtMTk5
LDM4ICsxOTksMzggQEAgcHVibGljOgogCiAgICAgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29v
bigpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaGFyZWRCdWZm
ZXImIG90aGVyKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KKyAgICBXRUJD
T1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
IGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3VvdXMoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBtYWtlQ29udGlndW91
cygpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgZnJpZW5kIGNsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CisgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogICAgIERhdGFTZWdt
ZW50VmVjdG9yIG1fc2VnbWVudHM7CiAgICAgYm9vbCBtX2NvbnRpZ3VvdXMgeyBmYWxzZSB9Owog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyKCk7Ci0gICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IGFwcGVuZChkYXRhLCBz
aXplKTsgfQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KLSAgICBleHBsaWNpdCBTaGFyZWRCdWZm
ZXIoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgeyBhcHBlbmQoV1RGTW92ZShkYXRhKSk7IH0KLSAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEmJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKERh
dGFTZWdtZW50OjpQcm92aWRlciYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoKTsKKyAgICBleHBsaWNpdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7IGFwcGVuZChkYXRh
LCBzaXplKTsgfQorICAgIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IHNpemUpIHsgYXBwZW5kKGRhdGEsIHNpemUpOyB9CisgICAgZXhwbGlj
aXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhfdD4mJiBkYXRhKSB7IGFwcGVu
ZChXVEZNb3ZlKGRhdGEpKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihEYXRhU2VnbWVudDo6UHJv
dmlkZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmKTsKICNpZiBVU0UoQ0YpCi0gICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2VuZGlmCiAjaWYg
VVNFKEdMSUIpCi0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEdCeXRl
cyopOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIo
R0J5dGVzKik7CiAjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSKQotICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOworICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoR3N0TWFwcGVkT3duZWRC
dWZmZXImKTsKICNlbmRpZgogICAgIHNpemVfdCBtX3NpemUgeyAwIH07CiAKIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXI7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhcHBlbmQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogICAgIHZvaWQgYXBwZW5k
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsgYXBwZW5kKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhcHBlbmQoVmVjdG9yPHVpbnQ4X3Q+JiYpOwpAQCAtMjQzLDcgKzI0Myw3IEBAIHByaXZh
dGU6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CiAKLSAgICAvLyBDb21iaW5l
cyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3Ig
YWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1ZmZlci4KKyAgICAvLyBDb21iaW5lcyBhbGwgdGhl
IHNlZ21lbnRzIGludG8gYSBWZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xl
YXJpbmcgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAgICAgV0VCQ09SRV9FWFBPUlQgVmVj
dG9yPHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAgICAgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRy
eSogZ2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGl0aW9uKSBjb25zdDsKIApAQCAt
MjUyLDIwICsyNTIsMjAgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotLy8gQSBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyIGlzIGEgU2hhcmVkQnVmZmVyIHRoYXQgYWxsb3dzIHRvIGRpcmVjdGx5IGFj
Y2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEoKSBhbmQgcmVsYXRlZCBtZXRob2RzLgotY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlciA6IHB1YmxpYyBTaGFyZWRCdWZmZXIgeworLy8gQSBT
aGFyZWRCdWZmZXIgaXMgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIHRoYXQgYWxsb3dzIHRvIGRp
cmVjdGx5IGFjY2VzcyBpdHMgY29udGVudCB2aWEgdGhlIGRhdGEoKSBhbmQgcmVsYXRlZCBtZXRo
b2RzLgorY2xhc3MgU2hhcmVkQnVmZmVyIDogcHVibGljIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIg
ewogcHVibGljOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgotICAgIHN0YXRpYyBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHN0
YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCiAgICAgewogICAg
ICAgICBpZiBjb25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCi0gICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKCkpOworICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKCkpOwogICAgICAgICBlbHNlIGlmIGNvbnN0
ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKICAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVf
djxBcmdzLCBSZWY8RGF0YVNlZ21lbnQ+PiAmJi4uLikpCi0gICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDb250aWd1b3VzU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLikpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFy
Z3MpLi4uKTsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4p
OworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUo
YnVmZmVyKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNzQsNyArMjc0LDcgQEAgcHVibGlj
OgogICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcigpIGNvbnN0OwogCiAgICAg
ZW51bSBjbGFzcyBNYXlVc2VGaWxlTWFwcGluZyA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZU1vZGUgPSBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VG
aWxlTWFwcGluZyA9IE1heVVzZUZpbGVNYXBwaW5nOjpZZXMpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGUgPSBGaWxlU3lz
dGVtOjpNYXBwZWRGaWxlTW9kZTo6U2hhcmVkLCBNYXlVc2VGaWxlTWFwcGluZyA9IE1heVVzZUZp
bGVNYXBwaW5nOjpZZXMpOwogCiAjaWYgVVNFKEZPVU5EQVRJT04pCiAgICAgV0VCQ09SRV9FWFBP
UlQgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CkBAIC0yODcsMTIgKzI4
NywxMiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBD
b250aWd1b3VzU2hhcmVkQnVmZmVyKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxEYXRhU2Vn
bWVudD4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQ29udGlndW91c1NoYXJlZEJ1
ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZm
ZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZURhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
U2hhcmVkQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJv
bVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCk7CiB9OwogCiBjbGFzcyBTaGFyZWRCdWZmZXJCdWlsZGVyIHsKQEAg
LTMwMCwxNSArMzAwLDE1IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgewogcHVibGljOgog
ICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIoKSA9IGRlZmF1bHQ7CiAgICAgU2hhcmVkQnVmZmVyQnVp
bGRlcihTaGFyZWRCdWZmZXJCdWlsZGVyJiYpID0gZGVmYXVsdDsKLSAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYpOwot
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpIHsgaW5pdGlhbGl6ZShXVEZNb3ZlKGJ1ZmZlcikpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJik7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgaW5pdGlhbGl6ZShXVEZNb3ZlKGJ1ZmZlcikpOyB9CiAK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KICAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
KHN0ZDo6aW5fcGxhY2VfdCwgQXJncyYmLi4uIGFyZ3MpCi0gICAgICAgIDogbV9idWZmZXIoU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkgeyB9CisgICAg
ICAgIDogbV9idWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2Fy
ZDxBcmdzPihhcmdzKS4uLikpIHsgfQogCiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciYgb3BlcmF0
b3I9KFNoYXJlZEJ1ZmZlckJ1aWxkZXImJikgPSBkZWZhdWx0OwotICAgIFdFQkNPUkVfRVhQT1JU
IFNoYXJlZEJ1ZmZlckJ1aWxkZXImIG9wZXJhdG9yPShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJCdWlsZGVyJiBvcGVyYXRvcj0oUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lLi4u
IEFyZ3M+CiAgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCkBAIC0zMjQsMTIgKzMyNCwx
MiBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/
IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CiAKICAgICB2b2lkIHJlc2V0KCkgeyBtX2J1ZmZlciA9
IG51bGxwdHI7IH0KLSAgICB2b2lkIGVtcHR5KCkgeyBtX2J1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKCk7IH0KKyAgICB2b2lkIGVtcHR5KCkgeyBtX2J1ZmZlciA9IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBnZXQoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlcjsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gdGFrZSgp
OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiB0YWtlQXND
b250aWd1b3VzKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGdldCgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGNvcHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5jb3B5KCkgOiBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNo
YXJlZEJ1ZmZlcj4gdGFrZUFzQ29udGlndW91cygpOwogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gdGFrZUFzQXJyYXlCdWZmZXIoKTsKIAogcHJpdmF0ZToKQEAgLTM0Miwx
MiArMzQyLDEyIEBAIHByaXZhdGU6CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihjb25zdCBTaGFy
ZWRCdWZmZXJCdWlsZGVyJikgPSBkZWZhdWx0OwogICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXImIG9w
ZXJhdG9yPShjb25zdCBTaGFyZWRCdWZmZXJCdWlsZGVyJikgPSBkZWZhdWx0OwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBpbml0aWFsaXplKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbnN1cmVCdWZmZXIoKTsKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gbV9idWZmZXI7CiB9OwogCi1pbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6
ZXh0cmFjdERhdGEoKQoraW5saW5lIFZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpleHRyYWN0RGF0YSgpCiB7CiAgICAgaWYgKGhhc09uZVJlZigpKQogICAgICAgICByZXR1
cm4gdGFrZURhdGEoKTsKQEAgLTM2Miw3ICszNjIsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgdWlu
dDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlv
bldpdGhpblNlZ21lbnQ7IH0KICAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3Qg
eyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQogCi0gICAg
V0VCQ09SRV9FWFBPUlQgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1
ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0
ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OwogI2lmIFVTRShGT1VOREFUSU9OKQogICAgIFdFQkNPUkVf
RVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlmCkBA
IC0zNzIsNiArMzcyLDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsK
IAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5n
Jik7CitSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKaW5kZXggY2RiNmU3MDM0MDRkNDI2ZGQyMWI0Nzlm
YTg5YzBkYTliOGM0OWY4ZS4uOWQwNTVjZTI3ZDg4YzNkNjJlNWJkMWNkNDZhZDkxZjVjYzQzMWY0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyLmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBF
TkFCTEUoTUhUTUwpCiAKLVNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlcihTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0
b3IpCitTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRv
cikKICAgICA6IG1faXRlcmF0b3JDdXJyZW50KGJ1ZmZlci0+YmVnaW4oKSkKICAgICAsIG1faXRl
cmF0b3JFbmQoYnVmZmVyLT5lbmQoKSkKICAgICAsIG1fc2VnbWVudChtX2l0ZXJhdG9yQ3VycmVu
dCAhPSBtX2l0ZXJhdG9yRW5kID8gbV9pdGVyYXRvckN1cnJlbnQtPnNlZ21lbnQtPmRhdGEoKSA6
IG51bGxwdHIpCkBAIC00NCw3ICs0NCw3IEBAIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFy
ZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgVmVjCiB7CiB9
CiAKLVNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFy
ZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgY2hhciogc2VwYXJhdG9yKQorU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXI6OlNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGJ1ZmZlciwgY29uc3QgY2hhciogc2VwYXJhdG9yKQogICAgIDogbV9pdGVyYXRvckN1cnJlbnQo
YnVmZmVyLT5iZWdpbigpKQogICAgICwgbV9pdGVyYXRvckVuZChidWZmZXItPmVuZCgpKQogICAg
ICwgbV9zZWdtZW50KG1faXRlcmF0b3JDdXJyZW50ICE9IG1faXRlcmF0b3JFbmQgPyBtX2l0ZXJh
dG9yQ3VycmVudC0+c2VnbWVudC0+ZGF0YSgpIDogbnVsbHB0cikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oCmluZGV4IDVkNGU2ZmVlNTgy
YzY2MTZmZDA3ZTM5OTRmZjc1YzhmMDdhMmZjZTEuLjFjNjQwOGQ0YzczNmExYzRhNDVjZWU3YjNm
Njk2NTdiYzlhMjYxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIuaApAQCAtNDEsOCArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIHsKIHB1Ymxp
YzoKLSAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqLCBjb25zdCBWZWN0
b3I8Y2hhcj4mIHNlcGFyYXRvcik7Ci0gICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVk
QnVmZmVyKiwgY29uc3QgY2hhciogc2VwYXJhdG9yKTsKKyAgICBTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0
b3IpOworICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
LCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpOwogCiAgICAgdm9pZCBzZXRTZXBhcmF0b3IoY29uc3Qg
VmVjdG9yPGNoYXI+Jik7CiAgICAgdm9pZCBzZXRTZXBhcmF0b3IoY29uc3QgY2hhciopOwpAQCAt
NTgsOCArNTgsOCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IHBlZWsoVmVjdG9yPHVpbnQ4X3Q+Jiwg
c2l6ZV90KTsKIAogcHJpdmF0ZToKLSAgICBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9y
Ojpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yQ3VycmVudDsKLSAgICBjb25zdCBTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yRW5kOworICAg
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRv
ciBtX2l0ZXJhdG9yQ3VycmVudDsKKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgbV9pdGVyYXRvckVuZDsKICAgICBjb25z
dCB1aW50OF90KiBtX3NlZ21lbnQgeyBudWxscHRyIH07CiAgICAgc2l6ZV90IG1fc2VnbWVudElu
ZGV4IHsgMCB9OwogICAgIFZlY3RvcjxjaGFyPiBtX3NlcGFyYXRvciB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCmluZGV4IDNmN2ZiYTQx
YTRhMWVmYjExY2NkZmZkNTcyNjc4Y2RmZmU1M2QwOTEuLmIyZDdhNTUwZDQ2MGU5NGNkMzE1MTM0
YTMxOTViY2Q5MWM3Yjc4OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0
YXRpY1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bh
c3RlYm9hcmQuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3Jp
dGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIG1f
Y3VzdG9tRGF0YS53cml0ZVN0cmluZyh0eXBlLCB2YWx1ZSk7CiB9CiAKLXZvaWQgU3RhdGljUGFz
dGVib2FyZDo6d3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVEYXRhKGNvbnN0
IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIG1fbm9uRGVm
YXVsdERhdGFUeXBlcy5hZGQodHlwZSk7CiAgICAgbV9jdXN0b21EYXRhLndyaXRlRGF0YSh0eXBl
LCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0
YXRpY1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9h
cmQuaAppbmRleCBhMDM5YzI1MjVlZDVmZTYzNTBjY2IwYTFhYTM2NTBkMzE5ODZmNjE5Li5jMDli
NmRlMzFmMmVkZWJlMDE4OGRjOWM0NjZhMjcxZTFiOGI5ZTE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgU3RhdGljUGFzdGVib2FyZCBmaW5hbCA6IHB1YmxpYyBQYXN0ZWJv
YXJkIHsKIHB1YmxpYzoKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIFN0cmluZyByZWFk
U3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CiAKICAgICB2b2lk
IHdyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKSBmaW5h
bDsKLSAgICB2b2lkIHdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYg
dHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKTsKICAgICB2b2lkIHdyaXRlU3RyaW5nSW5D
dXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKTsKICAgICB2
b2lkIGNsZWFyKCkgZmluYWw7CiAgICAgdm9pZCBjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWlu
Z0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgK
aW5kZXggNjg3OTU5MDBjNWFkZjljYzkwNDVlMGVhYmIyMmIxOGZhNjY5NjMxNC4uMWQ2NWJjNDAz
YWQ4NTI0M2M2NzI1ZTcwNDQ4ZDZjZGFkY2NjY2UxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIHN0cnVjdCBOb3dQbGF5aW5nSW5mb0FydHdvcmsgewogICAgIFN0cmluZyBz
cmM7CiAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdl
RGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogCiAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vd1BsYXlpbmdJbmZvQXJ0d29yayYgb3RoZXIpIGNv
bnN0CiAgICAgewpAQCAtNjcsNyArNjcsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxp
bmUgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5mb0FydHdvcms+IE5vd1BsYXlpbmdJbgogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUobWltZVR5cGUpKQogICAgICAgICByZXR1cm4geyB9OwogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbWFnZURh
dGEpKQogICAgICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKaW5kZXgg
YzE0OTRlYWIxZjI4NjRlNzczOTUyNGJlOWRhZjU5MjY1ZWEyMGI5NC4uZDRiYjU3OWYzMDBjNWZl
MjFlNGRlMDg0MTEwYTk0NmQ2OTRjNzNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vY29jb2EvQXVkaW9GaWxlUmVhZGVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcApAQCAt
MTMwLDcgKzEzMCw3IEBAIGNsYXNzIEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogcHVibGljOgotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1f
YnVmZmVyOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICNpZiBF
TkFCTEUoTUVESUFfU09VUkNFKQogICAgIFJlZjxBdWRpb1RyYWNrUHJpdmF0ZVdlYk0+IG1fdHJh
Y2s7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVk
RW5jb2RlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNG
LmNwcAppbmRleCA5YjNlY2ExYTE1NDQ5OGMwZTdlMzRjN2M5MTMzNjk1Y2NkOTQ3ZTdiLi40NDcz
ZWMyOGQwNGM1NDM2MzIzYzA3ZDM3YmYyYzljZDdkZWQyMTMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2
b2lkIEtleWVkRW5jb2RlckNGOjplbmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxh
c3QoKTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNG
OjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6
ZmluaXNoRW5jb2RpbmcoKQogewogICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxp
c3RDcmVhdGVEYXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0KCks
IGtDRlByb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8wLCAwLCBudWxscHRyKSk7CiAgICAgaWYg
KCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKaW5kZXggZmFiNjZmY2JjYThm
NDcxOTdlOThkNzliZjAyZWY4MTYxYTQyNzZhNC4uZjU4NmMwMmJiMTViZjM5YjcyODNmYmE5YWE1
ZThhMTI2Yjg0ZmVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5
ZWRFbmNvZGVyQ0YuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29k
ZXJDRi5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsK
IAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNv
ZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAppbmRleCA2OGIwODk0Y2M4NTZlZjUyMjcw
MzQzNzAyOWIyNmM1YjNkZDU5MjU0Li4xYmFhM2RlNDExMmMyZjdkZjcyN2E5Mzk2ZWE1OGVlNTNm
ODA5M2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZm
ZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0Yu
Y3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVm
ZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKENGRGF0YVJlZiBkYXRhKQogewogICAgIGFwcGVuZChk
YXRhKTsKIH0KQEAgLTQxLDcgKzQxLDcgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZE
YXRhUmVmIGRhdGEpCiAvLyBVc2luZyBGb3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZlbiBtb3Jl
IGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28gb25seSB1
c2UgdGhpcyB2ZXJzaW9uIGZvciBub24tRm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5EQVRJT04p
Ci1SZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRh
dGEoKSBjb25zdAorUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRh
dGEoKSBjb25zdAogewogICAgIGlmIChoYXNPbmVTZWdtZW50KCkpIHsKICAgICAgICAgaWYgKGF1
dG8qIGRhdGEgPSBzdGQ6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNb
MF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKQEAgLTUxLDEyICs1MSwxMiBAQCBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25z
dAogfQogI2VuZGlmCiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENG
RGF0YVJlZiBkYXRhKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShDRkRhdGFSZWYgZGF0YSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoZGF0YSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIoZGF0YSkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1l
bW9yeU5vdE5lZWRlZFNvb24oKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpo
aW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBl
bnRyeSA6IG1fc2VnbWVudHMpIHsKICAgICAgICAgaWYgKGVudHJ5LnNlZ21lbnQtPmhhc09uZVJl
ZigpKSB7CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90
TmVlZGVkU29vbigpIGNvbnN0CiAgICAgfQogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5k
KENGRGF0YVJlZiBkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZE
YXRhUmVmIGRhdGEpCiB7CiAgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGlmIChkYXRh
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0
d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaAppbmRleCAwNzk3ZGZiZThkMDE4YmU2MzYxNzQ0
YzU4Zjg5MmRkNTZlZDY4OWM1Li5jYmU4NzcxYTQ1ZDg2MmNiNWFiMDVlY2EzOTk5MjdlMDc4Mzhm
NTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
IG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0gICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNSZXF1aXJl
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9O
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQppbmRleCA0MjkwZGIxMjhkMDAwYTQwZWVm
NzBmZDI5NDFkNjM0NDkwNDZkZTAzLi4yZWYyNzAxZmU2NzhiZjliOTJkYjIxMmJiZWE1YzkxNWEz
ZmMzYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQpAQCAtMTc1LDcgKzE3NSw3IEBA
IHZvaWQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmZpbmlzaGVkQWRkaW5nRGF0YSgp
CiAgICAgc2VtYXBob3JlLndhaXQoKTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgpIGNvbnN0CitSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OnJlcGxhY2Vt
ZW50RGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGRpZEJsb2NrRGF0YSgpKTsKICAgICByZXR1
cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9yZXBsYWNlbWVudERhdGEuZ2V0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJv
bHNDb250ZW50RmlsdGVyLmgKaW5kZXggMDY4Y2RjYjM4M2Y0MjM2NWFjMzI2NGUyMjlhNmQ2M2Jj
MmI0YWJkNi4uNjc5YWU5MzI5NTE3ZTFmMzk0M2JhNTc2MmFjOGY1NmU4NjBjOGMyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENv
bnRyb2xzQ29udGVudEZpbHRlci5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAg
IHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsK
ICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRC
dWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
IHVuYmxvY2tIYW5kbGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRl
bnRGaWx0ZXIubW0KaW5kZXggYjQ2MWY5NzUzNmRlM2ExNTgxM2E1ODI3Yjg2NzEzOGI5NmQ0ZjM4
Yy4uMWM5NjA0NzE2YjQyNjkzZDVlNDZjMmUyM2U5NDFkYTAwYzgzZTRkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9s
c0NvbnRlbnRGaWx0ZXIubW0KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFBhcmVudGFsQ29udHJv
bHNDb250ZW50RmlsdGVyOjpmaW5pc2hlZEFkZGluZ0RhdGEoKQogICAgIHVwZGF0ZUZpbHRlclN0
YXRlKCk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFBhcmVudGFsQ29udHJvbHNDb250ZW50Rmls
dGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAog
ewogICAgIEFTU0VSVChkaWRCbG9ja0RhdGEoKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG1fcmVwbGFjZW1lbnREYXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5tbQppbmRleCA2ZjUwZjAzNWFkZmVhYTlkYmFk
YjAyYWNhZDhmMDY3Yzc4M2ZjYmU1Li5iODE3MDgxN2NlYzU5ZTIyZDNjMGU5YTc4ZjE0NmMwMzNl
NGMxNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJv
YXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2Fy
ZENvY29hLm1tCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBOU0JpdG1hcEltYWdlRmlsZVR5cGUg
Yml0bWFwUE5HRmlsZVR5cGUoKQogfQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAotLy8gTWFr
aW5nIHRoaXMgbm9uLWlubGluZSBzbyB0aGF0IFdlYktpdCAyJ3MgZGVjb2RpbmcgZG9lc24ndCBo
YXZlIHRvIGluY2x1ZGUgU2hhcmVkQnVmZmVyLmguCisvLyBNYWtpbmcgdGhpcyBub24taW5saW5l
IHNvIHRoYXQgV2ViS2l0IDIncyBkZWNvZGluZyBkb2Vzbid0IGhhdmUgdG8gaW5jbHVkZSBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyLmguCiBQYXN0ZWJvYXJkV2ViQ29udGVudDo6UGFzdGVib2FyZFdl
YkNvbnRlbnQoKSA9IGRlZmF1bHQ7CiBQYXN0ZWJvYXJkV2ViQ29udGVudDo6flBhc3RlYm9hcmRX
ZWJDb250ZW50KCkgPSBkZWZhdWx0OwogCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBWZWN0b3I8U3Ry
aW5nPiBQYXN0ZWJvYXJkOjp0eXBlc0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKIH0KIAogI2lm
IFBMQVRGT1JNKE1BQykKLXN0YXRpYyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVy
dFRJRkZUb1BORyhTaGFyZWRCdWZmZXImIHRpZmZCdWZmZXIpCitzdGF0aWMgUmVmPFNoYXJlZEJ1
ZmZlcj4gY29udmVydFRJRkZUb1BORyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVy
KQogewogICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10g
aW5pdFdpdGhEYXRhOiB0aWZmQnVmZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXSk7CiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9uVXNp
bmdUeXBlOmJpdG1hcFBOR0ZpbGVUeXBlKCkgcHJvcGVydGllczpAeyB9XTsKLSAgICByZXR1cm4g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBuZ0RhdGEpOworICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShwbmdEYXRhKTsKIH0KICNlbmRpZgogCkBAIC0zMTYsNyArMzE2LDcg
QEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2so
KQogICAgIHJldHVybiBjb2NvYVR5cGVzOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gUGFzdGVib2FyZDo6cmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25z
dCBTdHJpbmcmIHR5cGUpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVm
ZmVyRm9yVHlwZVdpdGhTZWN1cml0eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBh
dXRvIGJ1ZmZlciA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+
YnVmZmVyRm9yVHlwZSh0eXBlLCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCmlu
ZGV4IGFkOTZmN2Y1M2EyZGNjMDRkMjkzMjEwMmVlZDgxOTgwZmJmZDUwMWEuLjY2NDI3ZGZiZjA1
ZmQ3MjZhZmQ5OWEzMjljNmFjMTFhYzllZDdhNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCkBAIC04OCwzMCArODgsMzAgQEAg
QGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKE5TRGF0YSAqZGF0YSkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoTlNEYXRhICpkYXRhKQogewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihicmlkZ2VfY2FzdChkYXRhKSkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoYnJpZGdlX2Nhc3QoZGF0
YSkpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEpCit2b2lk
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEpCiB7CiAgICAgQVNT
RVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIHJldHVybiBhcHBlbmQoYnJpZGdlX2Nhc3QoZGF0YSkp
OwogfQogCi1SZXRhaW5QdHI8TlNEYXRhPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVO
U0RhdGEoKSBjb25zdAorUmV0YWluUHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0Rh
dGEoKSBjb25zdAogewogICAgIHJldHVybiBicmlkZ2VfY2FzdChjcmVhdGVDRkRhdGEoKSk7CiB9
CiAKLVJldGFpblB0cjxDRkRhdGFSZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNG
RGF0YSgpIGNvbnN0CitSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNG
RGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0
dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKICAgICByZXR1
cm4gYnJpZGdlX2Nhc3QobV9zZWdtZW50c1swXS5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSk7CiB9
CiAKLVJldGFpblB0cjxOU0FycmF5PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkg
Y29uc3QKK1JldGFpblB0cjxOU0FycmF5PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGVO
U0RhdGFBcnJheSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkobV9zZWdtZW50
cywgW10gKGF1dG8mIHNlZ21lbnQpIHsKICAgICAgICAgcmV0dXJuIHNlZ21lbnQuc2VnbWVudC0+
Y3JlYXRlTlNEYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCBmYmMyODNmYmMzMzY5YmY4MjdlMzE2OTk0YzRj
OTRlMDYzNjNjYjgxLi4yZGU0MTkzNGRhMTk4NzlkNzVjMGRmOGE4OWU2NGU1OTljMjlhZTAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0
YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUlu
c3RhbmNlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgTG9nZ2VyOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBDRE1JbnN0YW5jZVNlc3Npb247CiBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbjsKIApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBDRE1JbnN0YW5jZUNsaWVudCA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxDRE1JbnN0YW5jZUNsaWVudD4gewogcHVibGljOgogICAgIHZp
cnR1YWwgfkNETUluc3RhbmNlQ2xpZW50KCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lk
IHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bnJlcXVlc3RlZEluaXRp
YWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKSA9IDA7CiB9OwogCiAvLyBKYXZhU2NyaXB0J3MgaGFuZGxlIHRvIGEgQ0RNSW5z
dGFuY2UsIG11c3QgYmUgdXNlZCBmcm9tIHRoZQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAg
ICAgfTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29u
c3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVy
cywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nl
c3NDYWxsYmFjayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRl
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpID0gMDsK
ICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3Rh
bmNlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
SW5zdGFuY2VTZXNzaW9uLmgKaW5kZXggMzdjZDA3YzdiZjJkYzc1ZTQxZmQ1YzZjN2RlY2Y0M2Ux
MDM5ZTExNC4uZDI1OTIyNWJhOWUwMmE2NGQwY2VjZDYxNTFmZGY5M2Y0ZjI0NjZhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VT
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
SW5zdGFuY2VTZXNzaW9uLmgKQEAgLTQzLDE2ICs0MywxNiBAQCBjbGFzcyBMb2dnZXI7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50IDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkNsaWVudD4gewogcHVibGljOgogICAg
IHZpcnR1YWwgfkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHVz
aW5nIEtleVN0YXR1cyA9IENETUtleVN0YXR1czsKLSAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3Ig
PSBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRCdWZmZXI+LCBLZXlTdGF0dXM+PjsKKyAgICB1
c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUtleVN0YXR1
c2VzKEtleVN0YXR1c1ZlY3RvciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdl
KENETU1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIG1lc3NhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbklkQ2hh
bmdlZChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdXNpbmcgUGxhdGZvcm1EaXNwbGF5SUQgPSB1
aW50MzJfdDsKICAgICB2aXJ0dWFsIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpID0gMDsK
QEAgLTc4LDEzICs3OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIFN1Y2NlZWRlZCwKICAgICB9Owog
Ci0gICAgdXNpbmcgTGljZW5zZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8
U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5l
ZWRzSW5kaXZpZHVhbGl6YXRpb24sIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNr
JiYpID0gMDsKKyAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIFN1Y2Nlc3NWYWx1ZSBzdWNj
ZWVkZWQpPjsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSA9IDA7CiAKICAgICB1c2luZyBLZXlTdGF0
dXNWZWN0b3IgPSBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1c1ZlY3RvcjsKLSAg
ICB1c2luZyBNZXNzYWdlID0gc3RkOjpwYWlyPE1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVy
Pj47CisgICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6cGFpcjxNZXNzYWdlVHlwZSwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAgICB1c2luZyBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgc3RkOjpvcHRpb25h
bDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYm
IGNoYW5nZWRFeHBpcmF0aW9uLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgU3Vj
Y2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBy
ZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sm
JikgPSAwOwogCiAgICAgZW51bSBjbGFzcyBTZXNzaW9uTG9hZEZhaWx1cmUgOiB1aW50OF90IHsK
ICAgICAgICAgTm9uZSwKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ2xv
c2VTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OwogICAgIHZpcnR1
YWwgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lv
bkNhbGxiYWNrJiYpID0gMDsKIAotICAgIHVzaW5nIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0YXR1c1ZlY3RvciYmLCBzdGQ6Om9wdGlvbmFs
PFJlZjxTaGFyZWRCdWZmZXI+PiYmLCBTdWNjZXNzVmFsdWUpPjsKKyAgICB1c2luZyBSZW1vdmVT
ZXNzaW9uRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChLZXlTdGF0dXNWZWN0
b3ImJiwgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYsIFN1Y2Nl
c3NWYWx1ZSk+OwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCmluZGV4IGNjNmRjN2YxNDBjZDY3ZDJiN2I4NGY2YWIy
YzI4NDMxNmRmZGRjY2YuLjUyYTYxNDhjODNjZDUzOTNjOGY4NzRlZDg1YWQ4YmYyN2U1YmU1MGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVBy
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Q
cml2YXRlLmgKQEAgLTczLDggKzczLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2Fk
QW5kSW5pdGlhbGl6ZSgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0
aWZpY2F0ZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvbnMo
KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRv
bVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCA9
IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVByb3h5LmNwcAppbmRleCBmMjE4Zjk3OTA0ZmJiYTQ5ZjFlYmRmNDhlMjA1
ZmU3M2RmYWZiNjQ4Li40YmE3NWJmMDBkOWY3MTNiNWFmYmJhNzkzNDAxOTcxNmNkOGYwMzgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJv
eHkuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNW
ZWN0b3IgS2V5U3RvcmU6OmNvbnZlcnRUb0pTS2V5U3RhdHVzVmVjdG9yKCkgY29uc3QKICAgICBD
RE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNWZWN0b3I7CiAgICAg
a2V5U3RhdHVzVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtS2V5cygpKTsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIGtleSA6IG1fa2V5cykKLSAgICAgICAga2V5U3RhdHVzVmVjdG9yLnVu
Y2hlY2tlZEFwcGVuZChzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIENETUluc3RhbmNlU2Vz
c2lvbjo6S2V5U3RhdHVzPiB7IGtleS0+aWRBc1NoYXJlZEJ1ZmZlcigpLCBrZXktPnN0YXR1cygp
IH0pOworICAgICAgICBrZXlTdGF0dXNWZWN0b3IudW5jaGVja2VkQXBwZW5kKHN0ZDo6cGFpcjxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVz
PiB7IGtleS0+aWRBc1NoYXJlZEJ1ZmZlcigpLCBrZXktPnN0YXR1cygpIH0pOwogICAgIHJldHVy
biBrZXlTdGF0dXNWZWN0b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5oCmluZGV4IGE1ODRiNmNkMjY2YjA5ODA5MDI1NGQ3ZGNi
ZGRiZjYwZDkzMzFmYmIuLmUxZTA5OGExZDVmNWZmYzY1YzJhNDhmYTQwYWE5NzJmZTg5ZTFlM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJv
eHkuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBLZXlIYW5kbGUoc3RhdHVzLCBXVEZNb3ZlKGtleUlEKSwgV1RGTW92ZShrZXlI
YW5kbGVWYWx1ZSkpKTsKICAgICB9Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gaWRBc1NoYXJlZEJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1faWQuZGF0YSgpLCBt
X2lkLnNpemUoKSk7IH0KKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaWRBc1NoYXJl
ZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1faWQuZGF0YSgp
LCBtX2lkLnNpemUoKSk7IH0KIAogICAgIGJvb2wgdGFrZVZhbHVlSWZEaWZmZXJlbnQoS2V5SGFu
ZGxlVmFsdWVWYXJpYW50JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmNwcAppbmRleCA2NjcyNmY3NGU1OGQ4ZTEy
MmNiYzkwYjg2N2I5YmY5NjE3NzgwM2Q0Li5mY2E2ZjIzODhhNTZhNmExYzcyNDcwZTVhNDZmZGQy
OGYwNzM3NTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVV0aWxpdGllcy5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBuYW1lc3BhY2UgQ0RNVXRpbGl0aWVzIHsKIAotUmVmUHRyPEpTT046Ok9iamVj
dD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEpT
T046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKICAgICAvLyBGYWlsIG9uIGxhcmdlIGJ1ZmZlcnMgd2hvc2Ugc2l6ZSBkb2Vz
bid0IGZpdCBpbnRvIGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIuCiAgICAgc2l6ZV90IHNpemUg
PSBidWZmZXIuc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaAppbmRleCA3NGY1MTViMGJkMmE4NzE2OGVlZjI0YjE4
Zjk1ZGVhYmVlODI4ZTZjLi5mY2Y1YmRkYTdjNTk3ZDNjM2FjMzQ5ZWUxNzg5ZTRhZDZlMGM5NTlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1V
dGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9D
RE1VdGlsaXRpZXMuaApAQCAtMzUsMTEgKzM1LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
bmFtZXNwYWNlIENETVV0aWxpdGllcyB7CiAKLVJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNP
Tk9iamVjdChjb25zdCBTaGFyZWRCdWZmZXImKTsKK1JlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNl
SlNPTk9iamVjdChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2Ns
ZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCAyYWRkZWU3ZWU4YjRlZWI4MzVmYTcwYzI0ZjFk
NGVmODlkNzM0M2VmLi4zMWE5ZmRmYTAyZDZkMDBjYTI2MTgyNTJkZWQ5MzUzMTNkYzU4YWE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGlj
IGJvb2wgcGFyc2VMaWNlbnNlUmVsZWFzZUFja25vd2xlZGdlbWVudEZvcm1hdChjb25zdCBKU09O
OjpPYmplY3QmIHJvb3QpCiAvLyBdOwogCiAvLyBUaGlzIGZ1bmN0aW9uIGV4dHJhY3RzIHRoZSBL
ZXlJZHMgY291bnQgYW5kIHRoZSBsb2NhdGlvbiBvZiB0aGUgZmlyc3QgS2V5SWQgaW4gaW5pdERh
dGEgYnVmZmVyLgotc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RL
ZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSkKK3N0YXRpYyBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9j
YXRpb25Gcm9tQ2VuY0luaXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXRE
YXRhKQogewogICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCgwLCAw
KTsKIApAQCAtMTg5LDEzICsxODksMTMgQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5z
aWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKIH0KIAog
Ly8gVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgdGhlIGluaXREYXRhIHNoYXJlZEJ1ZmZlciBpcyBh
IHZhbGlkIENFTkMgaW5pdERhdGEuCi1zdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGljIGJvb2wgaXNDZW5jSW5pdERhdGEoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgc3RkOjpwYWlyPHVuc2ln
bmVkLCB1bnNpZ25lZD4ga2V5SWRzTWFwID0gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJ
bml0RGF0YShpbml0RGF0YSk7CiAgICAgcmV0dXJuICgoa2V5SWRzTWFwLmZpcnN0KSAmJiAoa2V5
SWRzTWFwLnNlY29uZCkpOwogfQogCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtl
eWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRp
YyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERh
dGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciBrZXlJZHM7CiAKQEAgLTIzMCw3ICsyMzAsNyBAQCBzdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBpbml0RAogICAgIHJldHVybiBrZXlJZHMudGFrZSgpOwogfQogCi1zdGF0aWMgUmVmPFNo
YXJlZEJ1ZmZlcj4gZXh0cmFjdEtleUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImIGluaXREYXRhKQorc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0
S2V5SWRGcm9tV2ViTUluaXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXRE
YXRhKQogewogICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIga2V5SWRzOwogCkBAIC0zOTAsNyArMzkw
LDcgQEAgYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgaW5pdERhdGEpIGNvbnN0Citib29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAogewogICAgIC8vIFZhbGlkYXRlIHRoZSBpbml0RGF0
YSBidWZmZXIgYXMgYW4gSlNPTiBvYmplY3QgaW4ga2V5aWRzIGNhc2UuCiAgICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgImtleWlkcyIpICYmIENETVV0
aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KGluaXREYXRhKSkKQEAgLTQwNyw3ICs0MDcsNyBAQCBi
b29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBDRE1Qcml2YXRlQ2xlYXJLZXk6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hh
cmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBDRE1Qcml2YXRlQ2xlYXJLZXk6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhlIHJlc3Bv
bnNlIGJ1ZmZlciBhcyBhbiBKU09OIG9iamVjdC4KICAgICBpZiAoIUNETVV0aWxpdGllczo6cGFy
c2VKU09OT2JqZWN0KHJlc3BvbnNlKSkKQEAgLTQzMyw3ICs0MzMsNyBAQCB2b2lkIENETUluc3Rh
bmNlQ2xlYXJLZXk6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0
ZW1Db25maWd1cgogICAgIGNhbGxiYWNrKHN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFu
Y2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3Vj
Y2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OnNldFNl
cnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2Fs
bGJhY2smJiBjYWxsYmFjaykKIHsKICAgICAvLyBSZWplY3Qgc2V0dGluZyBhbnkgc2VydmVyIGNl
cnRpZmljYXRlLgogICAgIGNhbGxiYWNrKEZhaWxlZCk7CkBAIC00NTUsNyArNDU1LDcgQEAgUmVm
UHRyPENETUluc3RhbmNlU2Vzc2lvbj4gQ0RNSW5zdGFuY2VDbGVhcktleTo6Y3JlYXRlU2Vzc2lv
bigpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleSgq
dGhpcykpOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBzdGF0aWMg
dWludDMyX3Qgc19zZXNzaW9uSWRWYWx1ZSA9IDA7CiAgICAgKytzX3Nlc3Npb25JZFZhbHVlOwpA
QCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpCiAgICAgICAgIH0pOwog
fQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNw
b25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBM
aWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vu
c2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogI2lmIExPR19ESVNBQkxFRAogICAgIC8v
IFdlIG9ubHkgdXNlIHRoZSBzZXNpb24gSUQgZm9yIGRlYnVnIGxvZ2dpbmcuIFRoZSB2ZXJib3Nl
IHByZXByb2Nlc3NvciBjaGVja3MgYXJlIGJlY2F1c2UKQEAgLTU2OCw3ICs1NjgsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZQogICAgIEFTU0VSVChzZXNzaW9uSWQgPT0gbV9zZXNzaW9uSUQp
OwogCiAgICAgYXV0byBkaXNwYXRjaENhbGxiYWNrID0KLSAgICAgICAgW3dlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH0sICZjYWxsYmFja10oS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzVmVj
dG9yLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIFN1Y2Nlc3NW
YWx1ZSBzdWNjZXNzKSB7CisgICAgICAgIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCAm
Y2FsbGJhY2tdKEtleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c1ZlY3Rvciwgc3RkOjpvcHRpb25h
bDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1
Y2Nlc3MpIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoCiAgICAgICAgICAgICAgICAg
W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp3ZWFrVGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spLCBrZXlTdGF0dXNWZWN0b3IgPSBXVEZNb3ZlKGtleVN0YXR1c1ZlY3RvciksIG1lc3Nh
Z2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZXNzXSgpIG11dGFibGUgewogICAgICAgICAgICAg
ICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAtNTgxLDcgKzU4MSw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uQ2xlYXJLZXk6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBMaWNlCiAgICAgLy8gQ29uc3RydWN0IHRoZSBLZXlTdGF0dXNWZWN0b3Igb2JqZWN0LCBy
ZXByZXNlbnRpbmcgcmVsZWFzZWQga2V5cywgYW5kIHRoZSBtZXNzYWdlIGluIHRoZQogICAgIC8v
ICdsaWNlbnNlIHJlbGVhc2UnIGZvcm1hdC4KICAgICBLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVz
VmVjdG9yID0gbV9rZXlTdG9yZS5hbGxLZXlzQXMoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0
dXM6OlJlbGVhc2VkKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtZXNzYWdlOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlOwogICAgIHsKICAgICAgICAgLy8g
Q29uc3RydWN0IEpTT04gdGhhdCByZXByZXNlbnRzIHRoZSAnbGljZW5zZSByZWxlYXNlJyBmb3Jt
YXQsIGNyZWF0aW5nIGEgJ2tpZHMnIGFycmF5CiAgICAgICAgIC8vIG9mIGJhc2U2NFVSTC1lbmNv
ZGVkIGtleSBJRHMgZm9yIGFsbCBrZXlzIHRoYXQgd2VyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBz
ZXNzaW9uLgpAQCAtNTk1LDE0ICs1OTUsMTQgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVh
cktleTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKICAg
ICAgICAgICAgIHJvb3RPYmplY3QtPnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShhcnJheSkpOwog
ICAgICAgICB9CiAKLSAgICAgICAgLy8gQ29weSB0aGUgSlNPTiBkYXRhIGludG8gYSBTaGFyZWRC
dWZmZXIgb2JqZWN0LgorICAgICAgICAvLyBDb3B5IHRoZSBKU09OIGRhdGEgaW50byBhIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIgb2JqZWN0LgogICAgICAgICBTdHJpbmcgbWVzc2FnZVN0cmluZyA9
IHJvb3RPYmplY3QtPnRvSlNPTlN0cmluZygpOwogICAgICAgICBDU3RyaW5nIG1lc3NhZ2VDU3Ry
aW5nID0gbWVzc2FnZVN0cmluZy51dGY4KCk7CiAgICAgICAgIG1lc3NhZ2UgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShtZXNzYWdlQ1N0cmluZy5kYXRhKCksIG1lc3NhZ2VDU3RyaW5nLmxlbmd0aCgp
KTsKICAgICB9CiAKICAgICBtX2tleVN0b3JlLnVucmVmQWxsS2V5cygpOwotICAgIGRpc3BhdGNo
Q2FsbGJhY2soV1RGTW92ZShrZXlTdGF0dXNWZWN0b3IpLCBSZWY8U2hhcmVkQnVmZmVyPigqbWVz
c2FnZSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKKyAgICBkaXNwYXRjaENhbGxiYWNrKFdU
Rk1vdmUoa2V5U3RhdHVzVmVjdG9yKSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KCptZXNz
YWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwogfQogCiB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkNsZWFyS2V5OjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5oCmluZGV4IDljMDc0N2RjMWJkOGU2N2YzYmE4NjRkOWI4MTEzMzc2
MjVjOGE2NzkuLjllMjdmZTkxMmM0ZGEwNjdmYjI2Y2FmYmM3ZjZhNjUxZGE0NzUyOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NE
TUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaApAQCAtODYsOCArODYsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0
aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25z
dCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAg
Ym9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNv
bnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChj
b25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIH07CiAKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGlj
OgogICAgIC8vIENETUluc3RhbmNlCiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0
aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6Q2xlYXJL
ZXk7IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1Bl
cnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2Vy
dmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0oKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVT
ZXNzaW9uKCkgZmluYWw7CkBAIC0xMDksOCArMTA5LDggQEAgY2xhc3MgQ0RNSW5zdGFuY2VTZXNz
aW9uQ2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgewogcHVi
bGljOgogICAgIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KENETUluc3RhbmNlQ2xlYXJLZXkm
IHBhcmVudCkKICAgICAgICAgOiBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eShwYXJlbnQpIHsgfQot
ICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNr
JiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNl
VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFs
OworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExp
Y2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNl
VXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlw
ZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25D
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmlu
ZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5l
cmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHAKaW5kZXggN2FhOTRiNGI0YmMyY2JmOTIyYWFkYTU4ODc1NzNkNzVkN2MwYmM2Ny4u
N2JmMDA4MzJhNDAyZWVhZDU3MjNjYTQyOGU5YWZiN2NjNDFhMGM1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3Bw
CkBAIC0xMzksOSArMTM5LDkgQEAgdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmRBcnJheSgp
CiAgICAgbV9lbmNvZGVyIDw8IFR5cGU6OkVuZEFycmF5OwogfQogCi1SZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQorUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQog
ewotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1
ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAppbmRleCA1ODA1ODNiODM4MTBlZGU1
ZDJjOWM2NWE4MzkzYjMyNmQ4N2IyNzQ3Li5lY2Y0ZTA4YzliOTkxYWRlMjczYmQ0NGM2MGJiMTVm
ZTAxNjM1YjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tl
eWVkRW5jb2RlckdlbmVyaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmlj
L0tleWVkRW5jb2RlckdlbmVyaWMuaApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIEtleWVkRW5jb2RlckdlbmVyaWMgZmluYWwgOiBwdWJsaWMgS2V5ZWRFbmNv
ZGVyIHsKIHB1YmxpYzoKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH07CiAKIHByaXZh
dGU6Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkg
b3ZlcnJpZGU7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJp
bmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9LZXllZEVuY29kZXJHbGliLmNwcAppbmRleCBlNmQ3OGQ1MjgzZWY4ZTUzYzdiZGIwYmI4
MDRlOWUyN2UxMGExNzkzLi43MGQyNGMxMTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rlckds
aWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xp
Yi5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2xpYjo6ZW5kQXJy
YXkoKQogICAgIG1fYXJyYXlTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCiB7CiAg
ICAgZ19hc3NlcnQobV92YXJpYW50QnVpbGRlclN0YWNrLmxhc3QoKSA9PSAmbV92YXJpYW50QnVp
bGRlcik7CiAgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFudF9idWlsZGVy
X2VuZCgmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGRhdGEgPSBnX3Zh
cmlhbnRfZ2V0X2RhdGFfYXNfYnl0ZXModmFyaWFudC5nZXQoKSk7Ci0gICAgcmV0dXJuIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
Kj4oZ19ieXRlc19nZXRfZGF0YShkYXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihnX2J5dGVzX2dldF9zaXplKGRhdGEuZ2V0KCkpKSk7CisgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVz
X2dldF9kYXRhKGRhdGEuZ2V0KCksIG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdf
Ynl0ZXNfZ2V0X3NpemUoZGF0YS5nZXQoKSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJH
bGliLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaApp
bmRleCBjZTEzNjQ5NmM0ZTEzZWFjMTQ5ZWE2MTg5NWM1NDE0MGZmZDU5NmY3Li5lNTY0MmJjZjY3
MGNlMjU5OWZjMDRkZjcyOWUyYjRjMWY4MjExZjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6
CiAgICAgfktleWVkRW5jb2RlckdsaWIoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAg
ICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNp
emVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29s
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVk
QnVmZmVyR2xpYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZl
ckdsaWIuY3BwCmluZGV4IDg3ZDc4NGJjNjY1MThmYWIyNmIzNDY2M2E0NjQ0MDA5M2RlMjcxOGIu
LjUwMTI1OWRiODQ4NDc4OTFmYTdmNjdlYWZjMDhhODMwZTAxM2VlM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAtMjYsMjQg
KzI2LDI0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRC
dWZmZXIoR0J5dGVzKiBieXRlcykKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIoR0J5dGVzKiBieXRlcykKIHsKICAgICBBU1NFUlQoYnl0ZXMpOwogICAgIG1f
c2l6ZSA9IGdfYnl0ZXNfZ2V0X3NpemUoYnl0ZXMpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsg
MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShHUmVmUHRyPEdCeXRlcz4oYnl0ZXMpKSB9KTsKIH0KIAot
UmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoR0J5dGVzKiBieXRlcykKK1Jl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUo
R0J5dGVzKiBieXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIo
Ynl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KGJ5dGVzKSk7CiB9CiAKLUdSZWZQdHI8R0J5dGVzPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVHQnl0ZXMoKSBjb25zdAorR1JlZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
R0J5dGVzKCkgY29uc3QKIHsKICAgICByZWYoKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMg
PSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtd
KGdwb2ludGVyIGRhdGEpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcio+KGRhdGEpLT5kZXJlZigpOwotICAgIH0sIGNvbnN0X2Nhc3Q8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcio+KHRoaXMpKSk7CisgICAgICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRh
dGEpLT5kZXJlZigpOworICAgIH0sIGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpKTsK
ICAgICByZXR1cm4gYnl0ZXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5jcHAKaW5kZXggMTI1ODYyZTcyYTlmOWQ4Njk2Y2UxNmNhY2ZmNmJmNzIwN2I0NWNlNC4u
NGU5NDlkZmFiOTc2NWEyYTA3YzQ4NzhhYmVlMTAzZmJhZjIxZjU3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgUmVmPEZvbnQ+
IEZvbnQ6OmNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdp
biBvcmlnaW4sIEludGUKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0
YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ss
IGlkZW50aWZpZXIpKTsKIH0KIAotUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0
IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljKQorUmVm
PEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9u
dDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9v
bCBzeW50aGV0aWNJdGFsaWMpCiB7CiAgICAgYm9vbCB3cmFwcGluZzsKICAgICBhdXRvIGN1c3Rv
bUZvbnREYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoZm9udEZhY2VEYXRh
LmdldCgpLCB7IH0sIHdyYXBwaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaAppbmRleCA0YzVjOGEzOTYzM2EwNjQ3ODk4YjUyYTM5NDUyNWZiMWFmYjEyZThhLi44MmVi
YTczYmFjNGM3NmZlYTBiYjYwZWJhNDQzNjgyZDIyYzdmZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIEZvbnRDYWNoZTsKIGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEdseXBo
UGFnZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIHN0cnVjdCBHbHlwaERhdGE7CiAKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIGVu
dW0gY2xhc3MgVmlzaWJpbGl0eSA6IGJvb2wgeyBWaXNpYmxlLCBJbnZpc2libGUgfTsKICAgICBl
bnVtIGNsYXNzIE9yaWVudGF0aW9uRmFsbGJhY2sgOiBib29sIHsgTm8sIFllcyB9OwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmLCBPcmlnaW4gPSBPcmlnaW46OkxvY2FsLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6
Ok5vLCBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFj
ayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8Rm9udD4gY3JlYXRlKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNl
RGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBi
b29sIHN5bnRoZXRpY0l0YWxpYyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250
PiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwg
ZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgfkZvbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBsYXRmb3JtRGF0YS5oCmluZGV4IGUyMzg0YjllZTRl
Y2U2MDFlZWQ3YTRjMGIzZGJkZjk4YmU5NTMwOTMuLmZiYmNjYzQzNjg0NDc0OTA4M2NlODkxZjM2
M2Y2Y2M0MGYyOTc0NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRQbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250UGxhdGZvcm1EYXRhLmgKQEAgLTIyMywxMyArMjIzLDEzIEBAIHB1YmxpYzoKICNl
bmRpZgogICAgIH0KIAotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBvcGVuVHlw
ZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25z
dDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMy
X3QgdGFibGUpIGNvbnN0OwogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAKICAg
ICBzdHJ1Y3QgQ3JlYXRpb25EYXRhIHsKLSAgICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IGZvbnRGYWNlRGF0YTsKKyAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZm9udEZhY2VEYXRh
OwogICAgICAgICBTdHJpbmcgaXRlbUluQ29sbGVjdGlvbjsKICNpZiBQTEFURk9STShXSU4pCiAg
ICAgICAgIFJlZjxGb250TWVtb3J5UmVzb3VyY2U+IG1fZm9udFJlc291cmNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcAppbmRleCA2
NzVlMjRiNDBhYzdhYWRlNzQwODZmMjQyZWFkMDE1MjIxYzAyNGZjLi4yY2Y0NDhiZWEyZmE2YWU0
ZDQ3Zjk2NDAwMmIzYTkwNmMwMTI5MDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcApAQCAtOTcsNyArOTcsNyBAQCBTdHJpbmcg
Y3JlYXRlQVZDQ29kZWNQYXJhbWV0ZXJzU3RyaW5nKGNvbnN0IEFWQ1BhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCiAgICAgICAgICwgaGV4KHBhcmFtZXRlcnMubGV2ZWxJREMsIDIpKTsKIH0KIAotc3Rk
OjpvcHRpb25hbDxBVkNQYXJhbWV0ZXJzPiBwYXJzZUFWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVj
b3JkKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8
QVZDUGFyYW1ldGVycz4gcGFyc2VBVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBJU08vSUVDIDE0NDk2LTEwOjIwMTQKICAg
ICAvLyA3LjMuMi4xLjEgU2VxdWVuY2UgcGFyYW1ldGVyIHNldCBkYXRhIHN5bnRheApAQCAtMjU1
LDcgKzI1NSw3IEBAIFN0cmluZyBjcmVhdGVIRVZDQ29kZWNQYXJhbWV0ZXJzU3RyaW5nKGNvbnN0
IEhFVkNQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgICAgICAsIGNvbXBhdGliaWxpdHlGbGFn
cy50b1N0cmluZygpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxIRVZDUGFyYW1ldGVycz4gcGFyc2VI
RVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgRm91ckNDJiBjb2RlY0NvZGUsIGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8SEVWQ1Bh
cmFtZXRlcnM+IHBhcnNlSEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IEZvdXJD
QyYgY29kZWNDb2RlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBJU08v
SUVDIDE0NDk2LTE1OjIwMTQKICAgICAvLyA4LjMuMy4xIEhFVkMgZGVjb2RlciBjb25maWd1cmF0
aW9uIHJlY29yZApAQCAtNDM2LDcgKzQzNiw3IEBAIHN0ZDo6b3B0aW9uYWw8RG9WaVBhcmFtZXRl
cnM+IHBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjVmlldykKICAgICBy
ZXR1cm4gcGFyYW1ldGVyczsKIH0KIAotc3RkOjpvcHRpb25hbDxEb1ZpUGFyYW1ldGVycz4gcGFy
c2VEb1ZpRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxEb1ZpUGFyYW1ldGVycz4gcGFyc2VEb1ZpRGVj
b2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgLy8gVGhlIGZvcm1hdCBvZiB0aGUgRG9WaSBDb25maWd1cmF0aW9uIFJlY29yZCBpcyBjb250
YWluZWQgaW4gIkRvbGJ5IFZpc2lvbiBTdHJlYW1zIFdpdGhpbgogICAgIC8vIHRoZSBJU08gQmFz
ZSBNZWRpYSBGaWxlIEZvcm1hdCwgVmVyc2lvbiAyLjAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmgKaW5kZXggZWRmZWNiMjZkODk0NjdhMjNk
MWY1NzFjYmM1ZTkxYjJmYTM0Nzg1Yy4uM2Y1MDEwMzQxNGZiNWVjYWQyYjgyYTdhZjkxZTRhM2Nh
MjQ1NjYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVW
Q1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNV
dGlsaXRpZXMuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3Qg
Rm91ckNDOwogCiBzdHJ1Y3QgQVZDUGFyYW1ldGVycyB7CkBAIC00MSw3ICs0MSw3IEBAIHN0cnVj
dCBBVkNQYXJhbWV0ZXJzIHsKIH07CiAKIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8QVZD
UGFyYW1ldGVycz4gcGFyc2VBVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyk7Ci1XRUJDT1JF
X0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEFWQ1BhcmFtZXRlcnM+IHBhcnNlQVZDRGVjb2RlckNvbmZp
Z3VyYXRpb25SZWNvcmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOworV0VCQ09SRV9F
WFBPUlQgc3RkOjpvcHRpb25hbDxBVkNQYXJhbWV0ZXJzPiBwYXJzZUFWQ0RlY29kZXJDb25maWd1
cmF0aW9uUmVjb3JkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IGNyZWF0ZUFWQ0NvZGVjUGFyYW1ldGVyc1N0cmluZyhjb25zdCBBVkNQYXJhbWV0ZXJzJik7CiAK
IHN0cnVjdCBIRVZDUGFyYW1ldGVycyB7CkBAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBIRVZDUGFy
YW1ldGVycyB7CiB9OwogCiBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0
ZXJzPiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyk7Ci1XRUJDT1JFX0VYUE9S
VCBzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJh
dGlvblJlY29yZChjb25zdCBGb3VyQ0MmLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7
CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNE
ZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBGb3VyQ0MmLCBjb25zdCBTaGFyZWRCdWZm
ZXImKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVIRVZDQ29kZWNQYXJhbWV0ZXJzU3Ry
aW5nKGNvbnN0IEhFVkNQYXJhbWV0ZXJzJik7CiAKIHN0cnVjdCBEb1ZpUGFyYW1ldGVycyB7CkBA
IC02NSw3ICs2NSw3IEBAIHN0cnVjdCBEb1ZpUGFyYW1ldGVycyB7CiB9OwogCiBXRUJDT1JFX0VY
UE9SVCBzdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlDb2RlY1BhcmFtZXRl
cnMoU3RyaW5nVmlldyk7Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0
ZXJzPiBwYXJzZURvVmlEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0
ZXJzPiBwYXJzZURvVmlEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBTaGFyZWRCdWZm
ZXImKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVEb1ZpQ29kZWNQYXJhbWV0ZXJzU3Ry
aW5nKGNvbnN0IERvVmlQYXJhbWV0ZXJzJik7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmNwcAppbmRleCA0YTg1M2ViNjQ5NTNkNGFlNDgzNGY4N2M1NDg3YWNk
MzY0YzU3ZDgxLi5lMzJhMzZjNjA3NjE5MjE2OGM2YTM3OTMxOGY3OGFlMTc4OWM0ODJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBAIC0xMDQsNyArMTA0
LDcgQEAgYm9vbCBJbWFnZTo6aXNQb3N0U2NyaXB0UmVzb3VyY2UoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgVVJMJiB1cmwpCiB9CiAKIAotRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2U6OnNl
dERhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkK
K0VuY29kZWREYXRhU3RhdHVzIEltYWdlOjpzZXREYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIG1fZW5jb2RlZElt
YWdlRGF0YSA9IFdURk1vdmUoZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oCmluZGV4IDZhMDgxNjk1N2FhOTNjNDExYTU2Y2Q0YzJiYzIwZGQ2ZDkwNDRkZWMu
LjY1NWRmZTczY2ZmNmFkMWQwNGY0OGJjMjAxOWViYjgwNDE3ZDYxMzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtNzAsNyArNzAsNyBAQCBjbGFzcyBBZmZp
bmVUcmFuc2Zvcm07CiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRmxvYXRTaXplOwogY2xhc3Mg
R3JhcGhpY3NDb250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIHN0cnVjdCBMZW5ndGg7CiAKIC8vIFRoaXMgY2xhc3MgZ2V0cyBub3RpZmll
ZCB3aGVuIGFuIGltYWdlIGNyZWF0ZXMgb3IgZGVzdHJveXMgZGVjb2RlZCBmcmFtZXMgYW5kIHdo
ZW4gaXQgYWR2YW5jZXMgYW5pbWF0aW9uIGZyYW1lcy4KQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Qg
eyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgdmlydHVhbCBJbWFnZU9yaWVudGF0aW9uIG9y
aWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlOyB9
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBFbmNvZGVkRGF0YVN0YXR1cyBzZXREYXRhKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIFdFQkNPUkVf
RVhQT1JUIEVuY29kZWREYXRhU3RhdHVzIHNldERhdGEoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZpcnR1YWwgRW5jb2Rl
ZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQoYm9vbCAvKmFsbERhdGFSZWNlaXZlZCovKSB7IHJldHVy
biBFbmNvZGVkRGF0YVN0YXR1czo6VW5rbm93bjsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgdXRp
KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0gLy8gbnVsbCBzdHJpbmcgaWYgdW5rbm93bgpA
QCAtMTMzLDggKzEzMyw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVj
b2RlZERhdGEoYm9vbCBkZXN0cm95QWxsID0gdHJ1ZSkgPSAwOwogCi0gICAgU2hhcmVkQnVmZmVy
KiBkYXRhKCkgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9Ci0gICAgY29uc3Qg
U2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdl
dCgpOyB9CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgpIHsgcmV0dXJuIG1fZW5j
b2RlZEltYWdlRGF0YS5nZXQoKTsgfQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KIAogICAg
IHZpcnR1YWwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKTsKIApAQCAtMjA5LDcg
KzIwOSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIENvbG9yIHNpbmdsZVBpeGVsU29saWRD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKCk7IH0KIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2VuY29kZWRJbWFnZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IG1fZW5jb2RlZEltYWdlRGF0YTsKICAgICBJbWFnZU9ic2VydmVyKiBtX2lt
YWdlT2JzZXJ2ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRpbWVyPiBtX2FuaW1hdGlvblN0YXJ0
VGltZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQmFja2luZ1N0b3JlLmgKaW5kZXggNGRkYjZkZjgzZWNiOGI5Yjc5NTdmNDY2NGUxODRmMDA4
MWU4MTAxMS4uZGUzM2YxYWY0MTJkYzA4YjJiOTYxYTE5NDk0NWM5Y2M5MGFhNjYyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9y
ZS5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgICAgICBidWZmZXIuZ3JvdyhidWZmZXJTaXplKTsKLSAgICAgICAgbV9waXhlbHMgPSBT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAg
ICAgbV9waXhlbHMgPSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRl
KFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fcGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8dWludDhfdCo+KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAg
ICAgICAgbV9zaXplID0gc2l6ZTsKICAgICAgICAgbV9mcmFtZVJlY3QgPSBJbnRSZWN0KEludFBv
aW50KCksIG1fc2l6ZSk7CkBAIC0yMDYsNyArMjA2LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAg
ICAgIEFTU0VSVCghbV9zaXplLmlzRW1wdHkoKSAmJiAhaXNPdmVyU2l6ZShtX3NpemUpKTsKICAg
ICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlciB7IG90aGVyLm1fcGl4ZWxzLT5kYXRhKCksIG90
aGVyLm1fcGl4ZWxzLT5zaXplKCkgfTsKLSAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9waXhlbHMg
PSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVm
ZmVyKSk7CiAgICAgICAgIG1fcGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+
KGNvbnN0X2Nhc3Q8dWludDhfdCo+KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICB9CiAKQEAgLTIz
Myw3ICsyMzMsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gUGFja2VkQ29sb3I6OkFSR0Ig
eyByZXN1bHQgfS52YWx1ZTsKICAgICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudD4gbV9waXhlbHM7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50PiBtX3BpeGVsczsKICAgICB1aW50MzJfdCogbV9waXhlbHNQdHIgeyBudWxscHRy
IH07CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgSW50UmVjdCBtX2ZyYW1lUmVjdDsgLy8gVGhp
cyB3aWxsIGFsd2F5cyBqdXN0IGJlIHRoZSBlbnRpcmUgYnVmZmVyIGV4Y2VwdCBmb3IgR0lGIGFu
ZCBQTkcgZnJhbWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VEZWNvZGVyLmNwcAppbmRleCAwODY5ZTk5YTAwODg2ZjdjZDEyMTg2ZmUzMTYxZGUwNDdmYTUx
MzYxLi43YzU0OTQ3ZjRkODE0MDg1NTljYzQ1YzRhYzQ5YTE5YjlmYzg2Zjk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKQEAgLTgy
LDcgKzgyLDcgQEAgdm9pZCBJbWFnZURlY29kZXI6OmNsZWFyRmFjdG9yaWVzKCkKIH0KICNlbmRp
ZgogCi1SZWZQdHI8SW1hZ2VEZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikK
K1JlZlB0cjxJbWFnZURlY29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKIHsKICAgICBVTlVTRURfUEFSQU0obWltZVR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCmluZGV4IGExYTA4YWRjMTc1ZDQ0
YmFhNDQyZTQ0YTk0YWE5NjdhMDRmNWY2MDcuLjZhOGZmY2I2MGZjMTE1NmViODQ4NzZkZWZiMDdj
YmMwYjExOTg0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlRGVjb2Rlci5oCkBAIC0zNywxMiArMzcsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBJbWFnZURlY29kZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VEZWNv
ZGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxJbWFnZURlY29kZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAg
IHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbik7CiAgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCiAg
ICAgZW51bSBjbGFzcyBNZWRpYVR5cGUgewpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIHVzaW5nIFN1cHBvcnRzTWVkaWFUeXBlRnVuYyA9IEZ1
bmN0aW9uPGJvb2woTWVkaWFUeXBlKT47CiAgICAgdXNpbmcgQ2FuRGVjb2RlVHlwZUZ1bmMgPSBG
dW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYpPjsKLSAgICB1c2luZyBDcmVhdGVJbWFnZURlY29k
ZXJGdW5jID0gRnVuY3Rpb248UmVmUHRyPEltYWdlRGVjb2Rlcj4oU2hhcmVkQnVmZmVyJiwgY29u
c3QgU3RyaW5nJiwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKT47Cisg
ICAgdXNpbmcgQ3JlYXRlSW1hZ2VEZWNvZGVyRnVuYyA9IEZ1bmN0aW9uPFJlZlB0cjxJbWFnZURl
Y29kZXI+KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pPjsKIAogICAgIHN0cnVjdCBJbWFnZURlY29k
ZXJGYWN0b3J5IHsKICAgICAgICAgU3VwcG9ydHNNZWRpYVR5cGVGdW5jIHN1cHBvcnRzTWVkaWFU
eXBlOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBsYXRmb3JtSW1h
Z2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0g
U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29k
aW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAgICAgdmlydHVh
bCB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVf
dCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5jcHAKaW5kZXggZDgxYzQ4MDE5Mjg0NmRkN2UzMjFjMmRmYmZiZjFlMGMyMGRhYTY3MS4u
MzA3NzQzMzE1YTQxZWNhMWM5YjJiYzc3M2QwNzllZTVkNDNiYWY2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtNzIsNyArNzIs
NyBAQCBJbWFnZVNvdXJjZTo6fkltYWdlU291cmNlKCkKICAgICBBU1NFUlQoJm1fcnVuTG9vcCA9
PSAmUnVuTG9vcDo6Y3VycmVudCgpKTsKIH0KIAotYm9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVj
b2RlckF2YWlsYWJsZShTaGFyZWRCdWZmZXIqIGRhdGEpCitib29sIEltYWdlU291cmNlOjplbnN1
cmVEZWNvZGVyQXZhaWxhYmxlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAg
aWYgKCFkYXRhIHx8IGlzRGVjb2RlckF2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTk2LDcgKzk2LDcgQEAgYm9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJs
ZShTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW1hZ2VT
b3VyY2U6OnNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkK
K3ZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFkYXRhIHx8ICFlbnN1cmVEZWNvZGVy
QXZhaWxhYmxlKGRhdGEpKQogICAgICAgICByZXR1cm47CkBAIC0xMDQsMTMgKzEwNCwxMyBAQCB2
b2lkIEltYWdlU291cmNlOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCiAgICAgbV9kZWNvZGVyLT5zZXREYXRhKCpkYXRhLCBhbGxEYXRhUmVjZWl2ZWQp
OwogfQogCi12b2lkIEltYWdlU291cmNlOjpyZXNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQor
dm9pZCBJbWFnZVNvdXJjZTo6cmVzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEp
CiB7CiAgICAgbV9kZWNvZGVyID0gbnVsbHB0cjsKICAgICBzZXREYXRhKGRhdGEsIGlzQWxsRGF0
YVJlY2VpdmVkKCkpOwogfQogCi1FbmNvZGVkRGF0YVN0YXR1cyBJbWFnZVNvdXJjZTo6ZGF0YUNo
YW5nZWQoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK0VuY29kZWRE
YXRhU3RhdHVzIEltYWdlU291cmNlOjpkYXRhQ2hhbmdlZChGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBzZXREYXRhKGRhdGEsIGFsbERh
dGFSZWNlaXZlZCk7CiAgICAgY2xlYXJNZXRhZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXggOGFmNTA4MGEwMGE5OTE2MDgwZjFm
MGIyNzcwNzNjMmE4NTM0NTI1OC4uODE0ZjBlMTJlYmFhNDhmODZhY2I1MjE5NzNjMzFkNWQzODJm
NmZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJpdG1hcElt
YWdlOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW1hZ2VEZWNvZGVyOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSW1h
Z2VTb3VyY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VTb3VyY2U+LCBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8SW1hZ2VTb3VyY2U+IHsKICAgICBmcmllbmQgY2xhc3MgQml0bWFw
SW1hZ2U7CkBAIC01Niw5ICs1Niw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSW1hZ2VTb3VyY2UoV1RGTW92ZShuYXRpdmVJbWFnZSkpKTsKICAgICB9CiAKLSAgICB2
b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0g
ICAgdm9pZCByZXNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKLSAgICBFbmNvZGVkRGF0YVN0
YXR1cyBkYXRhQ2hhbmdlZChTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KTsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgcmVzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGRhdGEpOworICAgIEVuY29kZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2VkKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICBib29sIGlzQWxs
RGF0YVJlY2VpdmVkKCk7CiAKICAgICB1bnNpZ25lZCBkZWNvZGVkU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGVjb2RlZFNpemU7IH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBwcml2YXRlOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgVCBmaXJzdEZyYW1lTWV0YWRhdGFDYWNoZUlmTmVlZGVk
KFQmIGNhY2hlZFZhbHVlLCBNZXRhZGF0YVR5cGUsIFQgKEltYWdlRnJhbWU6OipmdW5jdG9yKSgp
IGNvbnN0LCBJbWFnZUZyYW1lOjpDYWNoaW5nLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN1YnNhbXBs
aW5nTGV2ZWw+JiA9IHsgfSk7CiAKLSAgICBib29sIGVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hh
cmVkQnVmZmVyKiBkYXRhKTsKKyAgICBib29sIGVuc3VyZURlY29kZXJBdmFpbGFibGUoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogZGF0YSk7CiAgICAgYm9vbCBpc0RlY29kZXJBdmFpbGFibGUoKSBj
b25zdCB7IHJldHVybiBtX2RlY29kZXI7IH0KICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShz
aXplX3QgZnJhbWVDb3VudCwgc2l6ZV90IGV4Y2x1ZGVGcmFtZSk7CiAgICAgdm9pZCBkZWNvZGVk
U2l6ZUNoYW5nZWQobG9uZyBsb25nIGRlY29kZWRTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01vZGVsLmNwcAppbmRleCA1YWRlN2VmNjllMjlhNzdmMmI4NDA5MjllNjRi
ZTBjNDRlNTE2NDM5Li41NzdiZDUwOGE1YzQwOWY0YmU5ZTRjZjIwMmI4MWU2MWU0NWI0NGFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCkBAIC0zMCwxMiAr
MzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TW9kZWw+IE1vZGVsOjpjcmVh
dGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBV
UkwgdXJsKQorUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0
YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IE1vZGVsKFdURk1vdmUoZGF0YSksIFdURk1vdmUobWltZVR5cGUpLCBXVEZNb3ZlKHVybCkpKTsK
IH0KIAotTW9kZWw6Ok1vZGVsKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0
cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKK01vZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiYm
IGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVybCkKICAgICA6IG1fZGF0YShXVEZNb3ZlKGRh
dGEpKQogICAgICwgbV9taW1lVHlwZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAgICAsIG1fdXJsKFdU
Rk1vdmUodXJsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmluZGV4
IDkxNTYwYWU4OGZhNjRjMmEwYzEwMDE0MTRmMzI0MWNlMDA1NmExZjQuLmU2YmRlMTY2Zjk0NGNk
ZTdkYjMyOGMyOTc2ZWM2ODJhZGI2ZDEwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01vZGVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuaApAQCAtMzgsMTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgTW9kZWwgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVibGljOgot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4mJiwgU3RyaW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgfk1vZGVsKCk7CiAKLSAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9taW1lVHlwZTsgfQogICAgIGNvbnN0IFVSTCYgdXJs
KCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICAKQEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+IGRlY29k
ZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgTW9kZWwoUmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYsIFN0cmluZywgVVJMKTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8
U2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAKLSAgICBSZWY8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBTdHJp
bmcgbV9taW1lVHlwZTsKICAgICBVUkwgbV91cmw7CiB9OwpAQCAtOTMsNyArOTMsNyBAQCBSZWZQ
dHI8TW9kZWw+IE1vZGVsOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIXVybCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVU
eXBlKSwgV1RGTW92ZSgqdXJsKSk7CisgICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgq
dXJsKSk7CiB9CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChX
VEY6OlRleHRTdHJlYW0mLCBjb25zdCBNb2RlbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIu
aAppbmRleCA3NDU5YzU4NThkMjQ4N2VmMmM1ZmQzNzE3Mzk4NmIzMzczNGVjMjhhLi44ODY5MWRj
MjU2ZDZkZDZjNDVmNDZlMDE1NDk2NzQyNDVhYTM1MzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXIuaApAQCAtNTEsOCArNTEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZGly
ZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVz
b3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9u
c2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0
dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJikgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgLy8gVGhp
cyBtZXRob2Qgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB1
c2VzIFNoYXJlZEJ1ZmZlci4KKyAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSB7IFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgYmUgcmVt
b3ZlZCBvbmNlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHVzZXMgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlci4KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYgcGxhdGZvcm0sIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgZGF0YVJlY2Vp
dmVkKHBsYXRmb3JtLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2FkRmFp
bGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclBy
aXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHAKaW5kZXggNTQ5OWYzN2E3ZjM2NDZiZDVmMzk1YTQ4YjA5ZDk0MTFkNGM5YjY2
NC4uZDNlMWI1ODA0ZTg1YTk5MTFjZjIwZmNlZDM0YmYyNTVhMzE0NDM0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0
ZS5jcHAKQEAgLTEzMTgsNyArMTMxOCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlk
UmVjZWl2ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYgb3JpZ2luYWxTYW1wbGUpCiAgICAgdXBk
YXRlSGlnaGVzdFByZXNlbnRhdGlvblRpbWVzdGFtcCgpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGU6OmFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZTo6YXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKIHsKICAgICBhcHBlbmQoYnVmZmVyLT5leHRyYWN0RGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaApp
bmRleCBlZjg2YTQ3MzY5MzcxYzgzZTg4M2IyOWJiYjZiOWFiOTZlY2E1ZjFkLi42YjdkOTVlNTJi
OWRmMGM4MWFmM2JlMWQ2ZDlmM2M4ZWQzOTU0MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCkBAIC00OSw3ICs0
OSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRpbWVSYW5nZXM7CiAKIGVudW0gY2xh
c3MgU291cmNlQnVmZmVyQXBwZW5kTW9kZSA6IHVpbnQ4X3QgewpAQCAtNjgsNyArNjgsNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U291cmNlQnVmZmVyUHJpdmF0ZSgp
OwogCiAgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sKSA9IDA7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIGFwcGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgYXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJl
c2V0UGFyc2VyU3RhdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tTWVkaWFT
b3VyY2UoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9XT0ZGRmlsZUZvcm1hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9X
T0ZGRmlsZUZvcm1hdC5jcHAKaW5kZXggYTBlNzNiM2YzZWJjYjNjNzgwZmUzNTFlOWQ2YTgwYjZm
YjkwNTViNC4uYjM3ZWJmYzU2MjA0OGZlNmQ3OTQxZDJlNWNjMWJjYTFkYzE1NzFjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNw
cApAQCAtMzcsNyArMzcsNyBAQCBzdGF0aWMgY29uc3QgdWludDMyX3Qga1dvZmYyU2lnbmF0dXJl
ID0gMHg3NzRmNDYzMjsgLy8gIndPRjIiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGlj
IGJvb2wgcmVhZFVJbnQzMihDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYg
b2Zmc2V0LCB1aW50MzJfdCYgdmFsdWUpCitzdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBzaXplX3QmIG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogewogICAgIEFT
U0VSVF9BUkcob2Zmc2V0LCBvZmZzZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZl
ci5zaXplKCkgLSBvZmZzZXQgPCBzaXplb2YodmFsdWUpKQpAQCAtNDksNyArNDksNyBAQCBzdGF0
aWMgYm9vbCByZWFkVUludDMyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90
JiBvZmZzZXQsIHVpbnQzMl90JgogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBy
ZWFkVUludDE2KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQs
IHVpbnQxNl90JiB2YWx1ZSkKK3N0YXRpYyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MTZfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FS
RyhvZmZzZXQsIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUo
KSAtIG9mZnNldCA8IHNpemVvZih2YWx1ZSkpCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBib29s
IHdyaXRlVUludDE2KFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yLCB1aW50MTZfdCB2YWx1ZSkKIAog
c3RhdGljIGNvbnN0IHVpbnQzMl90IHdvZmZTaWduYXR1cmUgPSAweDc3NGY0NjQ2OyAvKiAnd09G
RicgKi8KIAotYm9vbCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9v
bCBpc1dPRkYoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgc2l6ZV90IG9mZnNldCA9IDA7
CiAgICAgdWludDMyX3Qgc2lnbmF0dXJlOwpAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiB9
OwogI2VuZGlmCiAKLWJvb2wgY29udmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudChT
aGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCkKIHsKICAgICBBU1NFUlRf
QVJHKHNmbnQsIHNmbnQuaXNFbXB0eSgpKTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgY29u
dmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4
X3Q+JiBzZm50KQogICAgIHJldHVybiBzZm50LnNpemUoKSA9PSB0b3RhbFNmbnRTaXplOwogfQog
Ci1ib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpCitib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBV
TlVTRURfUEFSQU0oYnVmZmVyKTsKQEAgLTI5NCw3ICsyOTQsNyBAQCBib29sIGNvbnZlcnRXT0ZG
VG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIp
CiAKICAgICBWZWN0b3I8dWludDhfdD4gY29udmVydGVkRm9udDsKICAgICBpZiAoY29udmVydFdP
RkZUb1NmbnQoKmJ1ZmZlciwgY29udmVydGVkRm9udCkpCi0gICAgICAgIGJ1ZmZlciA9IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsKKyAgICAg
ICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7
CiAgICAgZWxzZQogICAgICAgICBidWZmZXIgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuaAppbmRleCA3OGFjNGE3YWZm
ZjRkNGJlZTlmZDAyY2FiZTdhOThmMmZlN2RkZTgyLi4zZDU3MDEwN2YyOGY4NTQ0NzQxZTM0OTVj
MDE2MDdlNGRlOTAyZDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9XT0ZGRmlsZUZvcm1hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1dPRkZGaWxlRm9ybWF0LmgKQEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZm
ZXI7CiAKIC8vIFJldHVybnMgd2hldGhlciB0aGUgYnVmZmVyIGlzIGEgV09GRiBmaWxlLgotYm9v
bCBpc1dPRkYoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOworYm9vbCBpc1dPRkYoU2hhcmVkQnVm
ZmVyJik7CiAKIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIFdPRkYgZmlsZSB3b2ZmIGlzIGludmFs
aWQgb3IgY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBzZm50IChmb3IgZXhhbXBsZSwKIC8vIGlm
IGNvbnZlcnNpb24gcmFuIG91dCBvZiBtZW1vcnkpLiBPdGhlcndpc2UgcmV0dXJucyB0cnVlIGFu
ZCB3cml0ZXMgdGhlIHNmbnQgcGF5bG9hZCBpbnRvIHNmbnQuCi1ib29sIGNvbnZlcnRXT0ZGVG9T
Zm50KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7
Citib29sIGNvbnZlcnRXT0ZGVG9TZm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4
X3Q+JiBzZm50KTsKIAogLy8gSWYgdGhlIGdpdmVuIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZSBhbmQg
dGhlIGN1cnJlbnQgcGxhdGZvcm0gaGFzIG5vIG5hdGl2ZSBzdXBwb3J0IGZvciBXT0ZGCiAvLyBm
b250cywgY29udmVydCBpdCB0byBzZm50LiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGJ1ZmZl
ciB3YXMgY29udmVydGVkLiBJZiBjb252ZXJzaW9uIGZhaWxzLAogLy8gdGhlIGJ1ZmZlciB3aWxs
IGJlIHNldCB0byBudWxscHRyLgotYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudElm
TmVjZXNzYXJ5KFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggZDdj
MDEzZDU0ZTNkZWQwNzg1NDkwMjhkNTFkNmUwMjhjOTc1MDdjNi4uOGIwNGY5YmU5NmMzNmUwYTI2
MjE4MGEyNWVhMzc0NTk2MmIzZDdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlT
dHJlYW1pbmcuY3BwCkBAIC04Niw3ICs4Niw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpCiAgICAgcmV0dXJuIHNrZDsKIH0KIAotc3Rh
dGljIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgLy8gSlNPTiBvZiB0aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2Rl
ZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGF0aWMgVmVjdG9yPFJl
ZjxTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiAgICAgaWYgKCFzaW5mQXJyYXkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBWZWN0
b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IHNpbmZzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+IHNpbmZzOwogICAgIHNpbmZzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2lu
ZkFycmF5LT5sZW5ndGgoKSk7CiAKICAgICBmb3IgKGF1dG8mIHZhbHVlIDogKnNpbmZBcnJheSkg
ewpAQCAtMTI0LDcgKzEyNCw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4
dHJhY3RTaW5mRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIH0KIAogdXNpbmcgU2No
ZW1lQW5kS2V5UmVzdWx0ID0gVmVjdG9yPHN0ZDo6cGFpcjxGb3VyQ0MsIFZlY3Rvcjx1aW50OF90
Pj4+Owotc3RhdGljIFNjaGVtZUFuZEtleVJlc3VsdCBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9t
U2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBTY2hlbWVBbmRLZXlSZXN1
bHQgZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJvbVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gYnVmZmVycyA9IGV4dHJhY3RTaW5mRGF0YShidWZm
ZXIpOwogICAgIGlmICghYnVmZmVycy5zaXplKCkpCkBAIC0xNzAsOSArMTcwLDkgQEAgc3RhdGlj
IFNjaGVtZUFuZEtleVJlc3VsdCBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAg
ICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAgYXV0byBy
ZXN1bHRzID0gZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJvbVNpbmYoYnVmZmVyKTsKIAogICAgIGZv
ciAoYXV0byYgcmVzdWx0IDogcmVzdWx0cykgewpAQCAtMTgzLDcgKzE4Myw3IEBAIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFt
aW5nOjpleHRyYWN0S2V5CiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIENvbW1vbiBTSU5GIEJveCBGb3JtYXQKICAgICBV
TlVTRURfUEFSQU0oYnVmZmVyKTsKQEAgLTE5MSwxNyArMTkxLDE3IEBAIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVTaW5mKGNvbnN0IFNo
YXJlZEJ1ZmZlCiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRC
dWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVTa2QoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNrZChjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotc3RkOjpvcHRpb25h
bDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6
OmV4dHJhY3RLZXlJRHNTa2QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIC8vIEluIHRoZSAnc2tkJyBzY2hlbWUsIHRoZSBpbml0IGRhdGEg
aXMgdGhlIGtleSBJRC4KLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAg
ICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAga2V5SURz
LmFwcGVuZChidWZmZXIuY29weSgpKTsKICAgICByZXR1cm4ga2V5SURzOwogfQpAQCAtMzkzLDcg
KzM5Myw3IEBAIGJvb2wgQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Np
b25zKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25zdAorYm9vbCBDRE1Qcml2YXRl
RmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QK
IHsKICAgICBpZiAoIXZhbGlkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQyMyw3ICs0MjMsNyBAQCBib29sIENETVByaXZh
dGVGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIHJldHVybiByZXNwb25z
ZS5jb3B5KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCmluZGV4
IGJjOTNmNmY2YTdiZGQwMWVmYmY1NWI2MmJkYjZhNGU2NmVmOTEyYjMuLjMxN2JiOGQ1N2U4NmMw
NjIxNGUwYjQwNTlkZGY0Zjg4MDdjNzRjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxh
eVN0cmVhbWluZy5oCkBAIC03MSwxNyArNzEsMTcgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEFu
ZEluaXRpYWxpemUoKSBvdmVycmlkZTsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNh
dGVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBj
b25zdCBTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRp
emVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMg
Y29uc3QgQXRvbVN0cmluZyYgc2luZk5hbWUoKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2luZihjb25zdCBTaGFyZWRC
dWZmZXImKTsKLSAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTaW5mKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2luZihjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAg
c3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHNrZE5hbWUoKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2tkKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNr
ZChjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NrZChjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZVNrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAg
ICBzdGF0aWMgY29uc3QgVmVjdG9yPEZvdXJDQz4mIHZhbGlkRmFpclBsYXlTdHJlYW1pbmdTY2hl
bWVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlwdGlvblV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vRm9ybWF0RGVzY3JpcHRpb25VdGlsaXRp
ZXMuY3BwCmluZGV4IDliYWI5NTA0NTkxMGY4MWQ3YTg0OTg5Mjk3N2Q3OTM5MDIxMDgxZWUuLmNj
ZmQ0YWVhMjNhN2Q3NjhmOWViMjA3ZjVkMjhlYzg3NDg4M2UxN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlwdGlv
blV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0Zvcm1hdERlc2NyaXB0aW9uVXRpbGl0aWVzLmNwcApAQCAtMTEyLDcgKzExMiw3
IEBAIFN0cmluZyBjb2RlY0Zyb21Gb3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9u
UmVmIGZvcm1hdERlc2NyaXB0aW9uKQogICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25z
ID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzYW1wbGVFeHRl
bnNpb25zRGljdCwgQ0ZTVFIoImF2Y0MiKSkpOwogICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRl
bnNpb25zKQogICAgICAgICAgICAgICAgIHJldHVybiAiYXZjMSI7Ci0gICAgICAgICAgICBhdXRv
IGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc2FtcGxlRXh0ZW5zaW9ucyk7CisgICAgICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNv
cmRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKICAgICAg
ICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IHBhcnNlQVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNv
cmQoY29uZmlndXJhdGlvblJlY29yZEJ1ZmZlcik7CiAgICAgICAgICAgICBpZiAoIXBhcmFtZXRl
cnMpCiAgICAgICAgICAgICAgICAgcmV0dXJuICJhdmMxIjsKQEAgLTEyOCw3ICsxMjgsNyBAQCBT
dHJpbmcgY29kZWNGcm9tRm9ybWF0RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBm
b3JtYXREZXNjcmlwdGlvbikKICAgICAgICAgICAgIGF1dG8gc2FtcGxlRXh0ZW5zaW9ucyA9IHN0
YXRpY19jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc2FtcGxlRXh0ZW5zaW9u
c0RpY3QsIENGU1RSKCJodmNDIikpKTsKICAgICAgICAgICAgIGlmICghc2FtcGxlRXh0ZW5zaW9u
cykKICAgICAgICAgICAgICAgICByZXR1cm4gImh2YzEiOwotICAgICAgICAgICAgYXV0byBjb25m
aWd1cmF0aW9uUmVjb3JkQnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNh
bXBsZUV4dGVuc2lvbnMpOworICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7CiAgICAgICAgICAg
ICBhdXRvIHBhcmFtZXRlcnMgPSBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChr
Q01WaWRlb0NvZGVjVHlwZV9IRVZDLCBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyKTsKICAgICAg
ICAgICAgIGlmICghcGFyYW1ldGVycykKICAgICAgICAgICAgICAgICByZXR1cm4gImh2YzEiOwpA
QCAtMTQzLDcgKzE0Myw3IEBAIFN0cmluZyBjb2RlY0Zyb21Gb3JtYXREZXNjcmlwdGlvbihDTUZv
cm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uKQogICAgICAgICAgICAgYXV0byBz
YW1wbGVFeHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRW
YWx1ZShzYW1wbGVFeHRlbnNpb25zRGljdCwgQ0ZTVFIoImR2Y0MiKSkpOwogICAgICAgICAgICAg
aWYgKCFzYW1wbGVFeHRlbnNpb25zKQogICAgICAgICAgICAgICAgIHJldHVybiAiZHZoMSI7Ci0g
ICAgICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIgPSBDb250aWd1b3VzU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7CisgICAgICAgICAgICBhdXRvIGNv
bmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRl
bnNpb25zKTsKICAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IHBhcnNlRG9WaURlY29kZXJD
b25maWd1cmF0aW9uUmVjb3JkKGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIpOwogICAgICAgICAg
ICAgaWYgKCFwYXJhbWV0ZXJzKQogICAgICAgICAgICAgICAgIHJldHVybiAiZHZoMSI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakMuaAppbmRleCAxNTliOTBjZGI0OGY3ZmU0NGJiNDliZTJlYzFjMWMyZjQz
Mjg2NDAwLi41NmI1OGMyNWEyODcwOWZiMzgyMjE4MzllNTViYWU0NWVkOTNjZjYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIEltcGxlbWVu
dGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBs
ZW1lbnRhdGlvblR5cGU6OkZhaXJQbGF5U3RyZWFtaW5nOyB9CiAKICAgICB2b2lkIGluaXRpYWxp
emVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxs
b3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0Nh
bGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVy
Q2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFj
ayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikg
ZmluYWw7CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZp
bmFsOwogICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+JiYpIGZp
bmFsOwpAQCAtOTQsMTAgKzk0LDEwIEBAIHB1YmxpYzoKIAogICAgIE5TVVJMICpzdG9yYWdlVVJM
KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlVVJMLmdldCgpOyB9CiAgICAgYm9vbCBwZXJzaXN0
ZW50U3RhdGVBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2Vk
OyB9Ci0gICAgU2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0KKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlmaWNhdGUu
Z2V0KCk7IH0KICAgICBBVkNvbnRlbnRLZXlTZXNzaW9uKiBjb250ZW50S2V5U2Vzc2lvbigpOwog
Ci0gICAgUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IHRha2VVbmV4cGVjdGVkS2V5UmVx
dWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpOworICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1
ZXN0PiB0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0
YSk7CiAKICAgICAvLyBBVkNvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGVDbGllbnQKICAgICB2b2lk
IGRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBmaW5hbDsKQEAgLTExMiw3
ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNp
ZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChib29sKSBmaW5hbDsKICAgICB2b2lkIGV4dGVy
bmFsUHJvdGVjdGlvblN0YXR1c0RpZENoYW5nZUZvckNvbnRlbnRLZXlSZXF1ZXN0KEFWQ29udGVu
dEtleVJlcXVlc3QqKSBmaW5hbDsKIAotICAgIHVzaW5nIEtleXMgPSBWZWN0b3I8UmVmPFNoYXJl
ZEJ1ZmZlcj4+OworICAgIHVzaW5nIEtleXMgPSBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PjsKICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMq
IHNlc3Npb25Gb3JLZXlJRHMoY29uc3QgS2V5cyYpIGNvbnN0OwogICAgIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvckdyb3VwKEFWQ29udGVudEtl
eVJlcG9ydEdyb3VwKikgY29uc3Q7CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgY29u
c3Q7CkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPENETUluc3RhbmNl
Q2xpZW50PiBtX2NsaWVudDsKICAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5U2Vzc2lvbj4gbV9z
ZXNzaW9uOwogICAgIFJldGFpblB0cjxXZWJDb3JlRlBTQ29udGVudEtleVNlc3Npb25EZWxlZ2F0
ZT4gbV9kZWxlZ2F0ZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmlj
YXRlOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmlj
YXRlOwogICAgIGJvb2wgbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkIHsgdHJ1ZSB9OwogICAgIFJl
dGFpblB0cjxOU1VSTD4gbV9zdG9yYWdlVVJMOwogICAgIFZlY3RvcjxXZWFrUHRyPENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4+IG1fc2Vzc2lvbnM7CkBAIC0xNTAs
OCArMTUwLDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb24K
LSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFj
ayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5z
ZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5h
bDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBM
aWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5
cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9u
Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJp
bmcmLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMubW0KaW5kZXggNjJiZDEzNDc5YzZjMzM2MmNiZTcyNTFiZjY5ZWE4
ZDFmODEwYmUyNS4uYmE1MDYxZWJiNWM1ZmJlMDc0ZDNhMjlkZWE0ZjkxOGZjMjYyMWNkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakMubW0KQEAgLTIxNyw3ICsyMTcsNyBAQCBBTExPV19ORVdfQVBJ
X1dJVEhPVVRfR1VBUkRTX0VORAogICAgIHJldHVybiBBdG9tU3RyaW5nKG5zSW5pdFR5cGUpOwog
fQogCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gaW5pdGlhbGl6YXRpb25EYXRhRm9yUmVxdWVz
dChBVkNvbnRlbnRLZXlSZXF1ZXN0KiByZXF1ZXN0KQorc3RhdGljIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBpbml0aWFsaXphdGlvbkRhdGFGb3JSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVl
c3QqIHJlcXVlc3QpCiB7CiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKTsKQEAgLTI2NSw3ICsyNjUsNyBAQCBBVkNvbnRlbnRLZXlTZXNzaW9u
KiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y29udGVudEtleVNlc3Npb24o
KQogICAgIHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7CiB9CiAKLVJldGFpblB0cjxBVkNvbnRlbnRL
ZXlSZXF1ZXN0PiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dGFrZVVuZXhw
ZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK1JldGFpblB0cjxBVkNvbnRlbnRL
ZXlSZXF1ZXN0PiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dGFrZVVuZXhw
ZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgZm9y
IChhdXRvIHJlcXVlc3RJdGVyID0gbV91bmV4cGVjdGVkS2V5UmVxdWVzdHMuYmVnaW4oKTsgcmVx
dWVzdEl0ZXIgIT0gbV91bmV4cGVjdGVkS2V5UmVxdWVzdHMuZW5kKCk7ICsrcmVxdWVzdEl0ZXIp
IHsKICAgICAgICAgYXV0byYgcmVxdWVzdCA9ICpyZXF1ZXN0SXRlcjsKQEAgLTMxNiw3ICszMTYs
NyBAQCBwcml2YXRlOgogICAgIFJlc3BvbnNlTWFwIG1fcmVzcG9uc2VzOwogfTsKIAotc3RhdGlj
IFJlZlB0cjxKU09OOjpWYWx1ZT4gcGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCitzdGF0aWMgUmVmUHRyPEpTT046OlZhbHVlPiBwYXJzZUpTT05WYWx1ZShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gRmFpbCBvbiBsYXJnZSBi
dWZmZXJzIHdob3NlIHNpemUgZG9lc24ndCBmaXQgaW50byBhIDMyLWJpdCB1bnNpZ25lZCBpbnRl
Z2VyLgogICAgIHNpemVfdCBzaXplID0gYnVmZmVyLnNpemUoKTsKQEAgLTM4MCw3ICszODAsNyBA
QCB2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjppbml0aWFsaXplV2l0
aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNSwogICAgIGNhbGxiYWNrKGluaXRpYWxpemUoKSk7CiB9
CiAKLXZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFNlcnZlckNl
cnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgc2VydmVyQ2VydGlmaWNhdGUsIFN1Y2Nlc3ND
YWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
c2VydmVyQ2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIERF
QlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSKTsKICAgICBtX3NlcnZlckNlcnRpZmlj
YXRlID0gV1RGTW92ZShzZXJ2ZXJDZXJ0aWZpY2F0ZSk7CkBAIC01ODUsOCArNTg1LDggQEAgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBDRE1JbnN0YW5jZUZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzoKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1
dG8gc2Vzc2lvbktleXMgPSBzZXNzaW9uSW50ZXJmYWNlLT5rZXlJRHMoKTsKLSAgICAgICAgaWYg
KGFueU9mKHNlc3Npb25LZXlzLCBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIHNlc3Npb25L
ZXkpIHsKLSAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBS
ZWY8U2hhcmVkQnVmZmVyPiYga2V5SUQpIHsKKyAgICAgICAgaWYgKGFueU9mKHNlc3Npb25LZXlz
LCBbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBzZXNzaW9uS2V5KSB7Cisg
ICAgICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiBrZXlJRCkgewogICAgICAgICAgICAgICAgIHJldHVybiBrZXlJ
RC5nZXQoKSA9PSBzZXNzaW9uS2V5LmdldCgpOwogICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQ7
CiAgICAgICAgIH0pKQpAQCAtNjczLDcgKzY3Myw3IEBAIEtleXMgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjprZXlJRHMoKQogICAgIHJldHVybiBrZXlJRHM7CiB9
CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1
ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2sm
JiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0
YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFpc0xpY2Vuc2VUeXBl
U3VwcG9ydGVkKGxpY2Vuc2VUeXBlKSkgewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUo
TE9HSURFTlRJRklFUiwgIiBmYWxzZSwgbGljZW5zZVR5cGUgXCIiLCBsaWNlbnNlVHlwZSwgIlwi
IG5vdCBzdXBwb3J0ZWQiKTsKQEAgLTczNiw3ICs3MzYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUg
bGljZQogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgaXNFcXVhbChjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUpCitzdGF0aWMgYm9vbCBpc0VxdWFsKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAg
YXV0byBhcnJheUJ1ZmZlciA9IGRhdGEudHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBpZiAo
IWFycmF5QnVmZmVyKQpAQCAtNzU0LDcgKzc1NCw3IEBAIHN0YXRpYyBib29sIGlzRXF1YWwoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHJldHVybiBz
dHJpbmdPckV4Y2VwdGlvbi5yZXR1cm5WYWx1ZSgpID09IHZhbHVlOwogfQogCi12b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25z
dCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEs
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwg
TGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwg
TGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2V4cGlyZWRT
ZXNzaW9ucy5pc0VtcHR5KCkgJiYgaXNFcXVhbChyZXNwb25zZURhdGEsICJhY2tub3dsZWRnZWQi
X3MpKSB7CiAgICAgICAgIGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2Vy
dGlmaWNhdGUoKTsKQEAgLTg1Niw3ICs4NTYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQog
ICAgICAgICAgICAgYXV0byBrZXlJRCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKmtl
eUlEVmVjdG9yKSk7CiAgICAgICAgICAgICBhdXRvIGZvdW5kSW5kZXggPSBtX2N1cnJlbnRSZXF1
ZXN0LnZhbHVlKCkucmVxdWVzdHMuZmluZE1hdGNoaW5nKFsmXSAoYXV0byYgcmVxdWVzdCkgewog
ICAgICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0Lmdl
dCgpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29u
c3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGlkKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGtleUlE
cy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgaWQp
IHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlkLmdldCgpID09IGtleUlELmdldCgpOwog
ICAgICAgICAgICAgICAgIH0pICE9IG5vdEZvdW5kOwogICAgICAgICAgICAgfSk7CkBAIC0xMTU1
LDcgKzExNTUsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgIGlmIChhdXRvKiBjZXJ0
aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCiAgICAgICAgIGFwcElk
ZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7
CiAKLSAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFy
ZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OworICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9
IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBSZXRhaW5Q
dHI8TlNEYXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CiAgICAgICAgIHVz
aW5nIENhbGxiYWNrRnVuY3Rpb24gPSBGdW5jdGlvbjx2b2lkKFJlcXVlc3RzRGF0YSYmKT47CiAg
ICAgICAgIHN0YXRpYyBSZWZQdHI8Q2FsbGJhY2tBZ2dyZWdhdG9yPiBjcmVhdGUoQ2FsbGJhY2tG
dW5jdGlvbiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTIxMSw3ICsxMjExLDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1
ZXN0cyhWZWN0b3I8UmV0YWkKICAgICBAdHJ5IHsKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3Qg
OiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8g
a2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7CisgICAg
ICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtl
eUlEcy5maXJzdCgpKTsKICAgICAgICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJ
RC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVz
dCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIu
Z2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpu
aWwgY29tcGxldGlvbkhhbmRsZXI6W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3Jd
IChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUg
ewogICAgICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29k
ZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKaW5kZXggMDMzNGQ2MjNiMmE3NjA1YzliZTEy
MjEzYjVhYmRiYmFjMmIwM2YxNS4uNjJiODNmYmZkNTc5NDA1MGViYzk0MDYzNzA0OTBiYTJiM2Vj
MDg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaApA
QCAtNTMsNyArNTMsNyBAQCBjbGFzcyBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb247CiAKIGNs
YXNzIEltYWdlRGVjb2RlckFWRk9iakMgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKIHB1YmxpYzoK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IGNy
ZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWZQdHI8SW1hZ2VEZWNvZGVyQVZGT2JqQz4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlckFWRk9iakMoKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSk7CkBA
IC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUltYWdl
UHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGlu
Z09wdGlvbnMoRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29s
IGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNl
aXZlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNp
emVfdCkgZmluYWw7CiAKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIFZlY3RvcjxJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4gZnJhbWVJbmZvcygpIGNvbnN0Owog
CiBwcml2YXRlOgotICAgIEltYWdlRGVjb2RlckFWRk9iakMoU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KTsKKyAgICBJbWFnZURlY29kZXJBVkZPYmpDKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pOwogCiAgICAgQVZBc3NldFRyYWNrICpmaXJzdEVuYWJsZWRUcmFjaygpOwogICAgIHZvaWQg
cmVhZFNhbXBsZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZP
YmpDLm1tCmluZGV4IGE1NGRmM2RiYWRmOTA0ZjQ1NDg0YjhjZTViY2E0OWZjNTU2OGZlYjkuLjM1
YzZjZTY3ZTg1Zjg2YWUxNjRjMjFhNzI2MDdmYzA2NWVjYjUwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2Rl
ckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtMjg5LDcgKzI4OSw3IEBAIElt
YWdlRGVjb2RlckFWRk9iakNTYW1wbGUqIHRvU2FtcGxlKEl0ZXJhdG9yIGl0ZXIpCiAKICNwcmFn
bWEgbWFyayAtIEltYWdlRGVjb2RlckFWRk9iakMKIAotUmVmUHRyPEltYWdlRGVjb2RlckFWRk9i
akM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURl
Y29kZXJBVkZPYmpDPiBJbWFnZURlY29kZXJBVkZPYmpDOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKQogewogICAgIC8vIEFWRm91bmRhdGlvbiBtYXkgbm90IGJlIGF2YWlsYWJsZSBhdCBydW50
aW1lLgogICAgIGlmICghQVZBc3NldE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxh
YmxlKCkpCkBAIC0zMDEsNyArMzAxLDcgQEAgUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IElt
YWdlRGVjb2RlckFWRk9iakM6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnMKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJBVkZPYmpDKGRhdGEsIG1pbWVUeXBlLCBh
bHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKIH0KIAotSW1hZ2VEZWNv
ZGVyQVZGT2JqQzo6SW1hZ2VEZWNvZGVyQVZGT2JqQyhTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKK0ltYWdlRGVjb2RlckFWRk9iakM6OkltYWdlRGVjb2RlckFWRk9iakMoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogSW1hZ2VEZWNvZGVyKCkKICAgICAsIG1f
bWltZVR5cGUobWltZVR5cGUpCiAgICAgLCBtX3V0aShXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGUo
bWltZVR5cGUpKQpAQCAtNjQxLDcgKzY0MSw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6
c2V0RXhwZWN0ZWRDb250ZW50U2l6ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKICAg
ICBtX2xvYWRlci5nZXQoKS5leHBlY3RlZENvbnRlbnRTaXplID0gZXhwZWN0ZWRDb250ZW50U2l6
ZTsKIH0KIAotdm9pZCBJbWFnZURlY29kZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNl
dERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiB7CiAgICAgW21fbG9hZGVyIHVwZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBjb21wbGV0ZTphbGxEYXRhUmVjZWl2ZWRdOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLmgKaW5kZXggMjdmMWVkMDgyYWY2YmY5NzY4ZGUwNGUwMDRlZjI1NmRjZjI1MjQ5MS4u
ZWI0NTUyZTU2YTUxYWE2MGNjYzNkZWEzNzQzYjYzNGUxMGRkMzY2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaApAQCAtNjcsNyArNjcsNyBAQCBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1By
aXZhdGVBVkY7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFTZWxlY3Rp
b25Hcm91cEFWRk9iakM7CiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFZpZGVvTGF5
ZXJNYW5hZ2VyT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzsKIGNsYXNzIFdl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlcjsKQEAgLTQyNyw3ICs0MjcsNyBAQCBwcml2YXRlOgogICAg
IG11dGFibGUgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gbV93YWxsQ2xvY2tBdENhY2hlZEN1cnJl
bnRUaW1lOwogICAgIG11dGFibGUgaW50IG1fdGltZUNvbnRyb2xTdGF0dXNBdENhY2hlZEN1cnJl
bnRUaW1lIHsgMCB9OwogICAgIG11dGFibGUgZG91YmxlIG1fcmVxdWVzdGVkUmF0ZUF0Q2FjaGVk
Q3VycmVudFRpbWUgeyAwIH07Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKKyAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKICAgICBkb3VibGUgbV9j
YWNoZWRSYXRlIHsgMCB9OwogICAgIGJvb2wgbV9yZXF1ZXN0ZWRQbGF5aW5nIHsgZmFsc2UgfTsK
ICAgICBkb3VibGUgbV9yZXF1ZXN0ZWRSYXRlIHsgMS4wIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQppbmRleCBlYmYxYWI1OGFkNTc0NWE0MDI2YmUwM2VlZWFkYzdjODhjMGNiZWJlLi4xNWRiNWVl
ZjZmYzMzNGNlMjllOGYyYmJlMThkYTQzZjQ1NjBlYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KQEAgLTI3OTgsNyArMjc5OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jCiAgICAgaWYg
KCFtX2tleUlEIHx8ICFtX2NkbUluc3RhbmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRv
IGluc3RhbmNlU2Vzc2lvbiA9IG1fY2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMoVmVjdG9y
PFJlZjxTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOworICAgIGF1dG8gaW5zdGFuY2VT
ZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhWZWN0b3I8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOwogICAgIGlmICghaW5zdGFuY2VT
ZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IDAzNDIwZjEzODM2NGZhYzIwOTFl
MTA0ZDEzNmZmMzhhMWZiOWZlMjIuLmVhZDA4M2E2Y2M3ZTczNmI0MjE3MTBmYWMzOTJhMDdkZmY5
MmJlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMuaApAQCAtNzMsNyArNzMsNyBAQCBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZTsK
IGNsYXNzIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOwogY2xhc3MgVmlkZW9U
cmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFzcyBXZWJDb3JlRGVjb21wcmVzc2lv
blNlc3Npb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQ0Vycm9yQ2xpZW50IHsKIHB1
YmxpYzoKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUHJvdmlkZU1l
ZGlhRGF0YUZvclRyYWNrSWQoUmVmPE1lZGlhU2FtcGxlPiYmLCB1aW50NjRfdCB0cmFja0lkLCBj
b25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CiAKICAgICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlIG92
ZXJyaWRlcwotICAgIHZvaWQgYXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAg
IHZvaWQgYXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2
b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgZmluYWw7CiAg
ICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgZmluYWw7CkBAIC0yMjEsNyArMjIxLDcg
QEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUo
QVZDT05URU5US0VZU0VTU0lPTikKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM+IG1fY2RtSW5zdGFuY2U7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
PiBtX2tleUlEczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX2tl
eUlEczsKICNlbmRpZgogCiAgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IG1fY2FjaGVkU2l6
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMubW0KaW5kZXggM2EyODY3YTFhYzI0M2JiOWM5M2M5ZDZiNzBjYTU2YjAyOTQ4ZmM5Yy4u
MjRhZTBlMTQwNjAxOTE0M2ZhZDRmMTUyOWU2OGVkNDliNDE2NTNjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTU2
Myw3ICs1NjMsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGbwogICAgIFVOVVNFRF9QQVJBTSho
YXNTZXNzaW9uU2VtYXBob3JlKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6YXBwZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OmFwcGVuZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQog
ewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImRhdGEgbGVuZ3RoID0gIiwgZGF0YS0+
c2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3Vy
Y2VMb2FkZXIuaAppbmRleCA1ODM4ZTQ5MzdkZjg5ZjU4NjFhY2Q5ZDk2ZGMxMjI5NWI2YmM3NDNk
Li4wZWZlZWFlZjViMmQ3MWJjNmQ2NzA0ZGQxYjk3NWFjYmFlMTEzYmJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaApAQCAtNDMsNyAr
NDMsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOwogY2xhc3Mg
UGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI+IHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBSZXNv
dXJjZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2b2lkIG5ld0RhdGFT
dG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIG5ld0Rh
dGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAK
ICAgICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVudDsKICAgICBS
ZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IG1fYXZSZXF1ZXN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmlu
ZGV4IGI2ZTIzN2I1ZGY1ZGRmNmE3MmQ1NDE2OTVhMDc4MjMxODFhY2FkYWQuLmY5MjFmM2RhMGU2
OWIzMzk5NzdjOWUzZTQ5NjY3YTI4ZjVlOTVjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTE1Niw3ICsxNTYsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIGZpbmFsIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICBi
b29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBkYXRhU2Vu
dChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxv
bmcgbG9uZykgZmluYWwgeyB9Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
IGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQo
ZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAg
ICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWwgeyBsb2FkRmluaXNoZWQoKTsgfQpAQCAtMjExLDcgKzIxMSw3
IEBAIHZvaWQgUGxhdGZvcm1SZXNvdXJjZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAg
IG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQogCi12b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRp
YUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQordm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCiB7CiAgICAgbV9idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAg
ICAgbV9wYXJlbnQubmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQoKSk7
CkBAIC0yMjUsNyArMjI1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXImIG1fcGFyZW50OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsK
LSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRl
cjo6RGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBw
YXJlbnQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0yMzUsNyArMjM1LDcgQEAgRGF0
YVVSTFJlc291cmNlTWVkaWFMb2FkZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNv
cmVBVkZSZXNvdXJjZUxvYWRlciYKIAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNv
ZGVyOjpkZWNvZGUocmVxdWVzdC51cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmlu
Z0Jhc2U2NCkpIHsKICAgICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFV
UkxSZXNwb25zZShyZXF1ZXN0LnVybCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKKyAg
ICAgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0
YSkpOwogICAgIH0KIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH1dIHsKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNv
dXJjZUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAgICBzdG9wTG9hZGluZygpOwogfQogCi12b2lk
IFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpu
ZXdEYXRhU3RvcmVkSW5TaGFyZWRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKIHsKICAgICBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1
ZXN0ID0gW21fYXZSZXF1ZXN0IGRhdGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCmluZGV4IDQ2YjA3ZmU3MTJlNzllNjEzMTdjMGQx
MTZmZTZhM2YwNGFmOWZmY2IuLjk0MTliY2VhMzhkYmY4ZDY0OTJmNjgwMWQ5YTIxNTYyMzY2YTJj
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTMxLDExICszMSwxMSBAQCB0
eXBlZGVmIHN0cnVjdCBGVF9GYWNlUmVjXyogIEZUX0ZhY2U7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
IGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFz
cyBGb250UGxhdGZvcm1EYXRhOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVz
Owogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RydWN0
IEZvbnRDdXN0b21QbGF0Zm9ybURhdGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogcHVibGlj
OgotICAgIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEoRlRfRmFjZSwgU2hhcmVkQnVmZmVyJik7Cisg
ICAgRm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9GYWNlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CiAgICAgfkZvbnRDdXN0b21QbGF0Zm9ybURhdGEoKSA9IGRlZmF1bHQ7CiAgICAgRm9udFBs
YXRmb3JtRGF0YSBmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wg
Ym9sZCwgYm9vbCBpdGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKICAgICBzdGF0
aWMgYm9vbCBzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmKTsKQEAgLTU1LDcgKzU1LDcgQEAg
cHJpdmF0ZToKICAgICBSZWZQdHI8Y2Fpcm9fZm9udF9mYWNlX3Q+IG1fZm9udEZhY2U7CiB9Owog
Ci1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7Citz
dGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBs
YXRmb3JtRGF0YShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggMjAzNWM5OWE3ZjY4YjU0ODljODU4YTNlNmQ3
MDMzZDEzNWQxZjdkYi4uYjZkM2ViMzYzMTEyNDQ2MTNiMzgwM2YyZjNkMjRkMzA4N2VhMjRlNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElu
dFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVm
CiAjaWYgIVBMQVRGT1JNKENPQ09BKQogc2l6ZV90IHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3Np
dGlvbih2b2lkKiBpbmZvLCB2b2lkKiBidWZmZXIsIG9mZl90IHBvc2l0aW9uLCBzaXplX3QgY291
bnQpCiB7Ci0gICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGlj
X2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGluZm8pOworICAgIFNoYXJlZEJ1ZmZlciog
c2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CiAgICAgc2l6
ZV90IHNvdXJjZVNpemUgPSBzaGFyZWRCdWZmZXItPnNpemUoKTsKICAgICBpZiAocG9zaXRpb24g
Pj0gc291cmNlU2l6ZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNDQsMTIgKzI0NCwxMiBAQCBz
aXplX3Qgc2hhcmVkQnVmZmVyR2V0Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1
ZmZlciwgb2ZmX3QgcG9zaXRpb24sCiAKIHZvaWQgc2hhcmVkQnVmZmVyUmVsZWFzZSh2b2lkKiBp
bmZvKQogewotICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hh
cmVkQnVmZmVyKj4oaW5mbyk7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVm
ZmVyID0gc3RhdGljX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAgIHNo
YXJlZEJ1ZmZlci0+ZGVyZWYoKTsKIH0KICNlbmRpZgogCi1JbWFnZURlY29kZXJDRzo6SW1hZ2VE
ZWNvZGVyQ0coU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCitJbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBpZiAoZGF0YS5z
aXplKCkgPj0gMzIpCkBAIC01NjIsMjAgKzU2MiwyMCBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdl
RGVjb2RlckNHOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBs
aQogICAgIHJldHVybiBtYXNrZWRJbWFnZSA/IG1hc2tlZEltYWdlIDogaW1hZ2U7CiB9CiAKLXZv
aWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgbV9pc0FsbERhdGFS
ZWNlaXZlZCA9IGFsbERhdGFSZWNlaXZlZDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIC8v
IE9uIE1hYyB0aGUgTlNEYXRhIGluc2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRs
eSBhcHBlbmRlZCB0byB3aXRob3V0IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2UuCi0gICAg
Ly8gV2UgdXNlIFNoYXJlZEJ1ZmZlcidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRlIENG
RGF0YSB0byBnZXQgYXJvdW5kIHRoaXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcwotICAgIC8v
IHJlYWxseSBsb29raW5nIGF0IHRoZSBTaGFyZWRCdWZmZXIuCisgICAgLy8gT24gTWFjIHRoZSBO
U0RhdGEgaW5zaWRlIHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRseSBh
cHBlbmRlZCB0byB3aXRob3V0IHRoZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdl
LgorICAgIC8vIFdlIHVzZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFw
IGl0c2VsZiBpbnNpZGUgQ0ZEYXRhIHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJ
bWFnZUlPIGlzCisgICAgLy8gcmVhbGx5IGxvb2tpbmcgYXQgdGhlIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIuCiAgICAgQ0dJbWFnZVNvdXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgp
LCBkYXRhLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVj
ZWl2ZWQpOwogI2Vsc2UKLSAgICAvLyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRo
ZSBTaGFyZWRCdWZmZXIuCisgICAgLy8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0
aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KICAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0
YS5tYWtlQ29udGlndW91cygpOwogICAgIGNvbnRpZ3VvdXNEYXRhLmdldCgpLnJlZigpOwotICAg
IC8vIFdlIHVzZSB0aGUgR2V0Qnl0ZXNBdFBvc2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFuIHRo
ZSBHZXRCeXRlUG9pbnRlciBvbmUgYmVjYXVzZSBTaGFyZWRCdWZmZXIKKyAgICAvLyBXZSB1c2Ug
dGhlIEdldEJ5dGVzQXRQb3NpdGlvbiBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBv
aW50ZXIgb25lIGJlY2F1c2UgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgogICAgIC8vIGRvZXMgbm90
IHByb3ZpZGUgYSB3YXkgdG8gbG9jayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJhbnRl
ZSB0aGF0IGl0IHdvbid0IG1vdmUsIHdoaWNoCiAgICAgLy8gaXMgYSByZXF1aXJlbWVudCBmb3Ig
dXNpbmcgdGhlIEdldEJ5dGVQb2ludGVyIGNhbGxiYWNrLgogICAgIENHRGF0YVByb3ZpZGVyRGly
ZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZmZXJH
ZXRCeXRlc0F0UG9zaXRpb24sIHNoYXJlZEJ1ZmZlclJlbGVhc2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCmluZGV4IDk3
NDA3MzZhMjFhYzk5OGFiMDVmMWM5YjRmNWIxNjc1ZTQ0ZDJjOTEuLmEwYWMxYzJmYmVlNTI3ZTVh
YjExMTQ1NTgxMmJkYjczNjNhMDU1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApAQCAtMzIsOSArMzIsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbWFnZURlY29kZXJDRyBmaW5hbCA6IHB1YmxpYyBJbWFn
ZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIElt
YWdlRGVjb2RlckNHKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKTsKKyAgICBJbWFnZURlY29kZXJDRyhGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCi0g
ICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJDRz4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyQ0c+IGNy
ZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJDRyhkYXRh
LCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CkBAIC02
NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVm
ZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJv
b2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJl
Y2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udFBsYXRmb3JtRGF0YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tCmluZGV4IDg0NGFjNDRmM2FkZGZhOWYz
OTU3ODZiOTRiZGQ1MDk0MWU3Mjc1NGIuLjg1NDIxZTNkZTcwOWNlMTU5YzQ5NGI0MGZiOGQxYWQy
MzU5M2MzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1EYXRhQ29jb2EubW0KQEAgLTU3LDcgKzU3LDcg
QEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIENGRXF1YWwobV9mb250LmdldCgpLCBv
dGhlci5tX2ZvbnQuZ2V0KCkpOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAor
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRh
YmxlKHVpbnQzMl90KSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlci5jcHAKaW5kZXggZjc0N2Q4MGZiNjFkMzBmYzUwMjJlNjgyZDYzNTYxMzNkM2Nh
Njk3YS4uYzhhODA2MTIyMDUzZjY0OGFkZGIwMmFjMzg5Y2U3MTQzNjhkYmJhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXIuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUGFy
c2VyOjpzZXRNaW5pbXVtQXVkaW9TYW1wbGVEdXJhdGlvbihmbG9hdCkKIHsKIH0KIAotU291cmNl
QnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQorU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpTZWdtZW50KFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fc2VnbWVudChXVEZNb3ZlKGJ1ZmZlcikpCiB7
CiB9CkBAIC0xMDEsNyArMTAxLDcgQEAgc2l6ZV90IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVu
dDo6c2l6ZSgpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gY2xhbXBUbzxzaXplX3Q+KE1UUGx1
Z2luQnl0ZVNvdXJjZUdldExlbmd0aChieXRlU291cmNlLmdldCgpKSk7CiAgICAgICAgIH0sCiAj
ZW5kaWYKLSAgICAgICAgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAgICAg
ICAgW10oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiBidWZmZXItPnNpemUoKTsKICAgICAgICAgfQpAQCAtMTI1
LDcgKzEyNSw3IEBAIGF1dG8gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpyZWFkKHNpemVf
dCBwb3NpdGlvbiwgc2l6ZV90IHNpemVUb1JlYWQsIHVpbnQ4CiAgICAgICAgICAgICByZXR1cm4g
VW5leHBlY3RlZDxSZWFkRXJyb3I+IHsgUmVhZEVycm9yOjpGYXRhbEVycm9yIH07CiAgICAgICAg
IH0sCiAjZW5kaWYKLSAgICAgICAgWyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IC0+IFJlYWRSZXN1bHQKKyAgICAgICAgWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKSAtPiBSZWFkUmVzdWx0CiAgICAgICAgIHsKICAgICAgICAgICAgIGJ1ZmZl
ci0+Y29weVRvKGRlc3RpbmF0aW9uLCBwb3NpdGlvbiwgc2l6ZVRvUmVhZCk7CiAgICAgICAgICAg
ICByZXR1cm4gc2l6ZVRvUmVhZDsKQEAgLTEzMyw3ICsxMzMsNyBAQCBhdXRvIFNvdXJjZUJ1ZmZl
clBhcnNlcjo6U2VnbWVudDo6cmVhZChzaXplX3QgcG9zaXRpb24sIHNpemVfdCBzaXplVG9SZWFk
LCB1aW50OAogICAgICk7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNl
cjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1ZmZlcigpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50Ojp0YWtlU2hhcmVkQnVmZmVyKCkKIHsKICAg
ICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3NlZ21lbnQsCiAjaWYgSEFWRShNVF9QTFVHSU5fRk9S
TUFUX1JFQURFUikKQEAgLTE0MiwyOCArMTQyLDI4IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNvdXJj
ZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJlZEJ1ZmZlcigpCiAgICAgICAgICAgICBW
ZWN0b3I8dWludDhfdD4gdmVjdG9yKHNpemUoKSk7CiAgICAgICAgICAgICBhdXRvIHJlYWRSZXN1
bHQgPSByZWFkKDAsIHZlY3Rvci5zaXplKCksIHZlY3Rvci5kYXRhKCkpOwogICAgICAgICAgICAg
aWYgKCFyZWFkUmVzdWx0Lmhhc192YWx1ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICAgICAgICAgIHJldHVybiBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICAgICAgICAgIHZlY3Rvci5zaHJpbmsocmVhZFJlc3Vs
dC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKHZlY3RvcikpOworICAgICAgICAgICAgcmV0dXJuIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpOwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAgIFsm
XShSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorICAgICAgICBbJl0oUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6
OmV4Y2hhbmdlKGJ1ZmZlciwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpleGNoYW5nZShidWZmZXIsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpKTsKICAgICAgICAgfQogICAgICk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNvdXJj
ZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6Z2V0U2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OmdldFNo
YXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9zZWdtZW50
LAogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCi0gICAgICAgIFsmXShjb25zdCBS
ZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiYpIC0+IFJlZlB0cjxTaGFyZWRCdWZmZXI+
CisgICAgICAgIFsmXShjb25zdCBSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiYpIC0+
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPgogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfSwKICNlbmRpZgotICAgICAgICBbJl0oY29uc3QgUmVm
PFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgLT4gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4KKyAgICAgICAg
WyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGJ1
ZmZlci5wdHIoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAppbmRleCA1MjBiNTIw
N2ZjMjcxZDc5ODE1MzNmYjE0ZDIzMTU1OTRhODg4MzY1Li43Mjk3YTc5MTRhNzlhZGY2NDJkYzZi
MTZiMzZlNjBmOWNkMDI5ZjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApAQCAtNDUsNyArNDUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRUeXBlOwogY2xhc3MgTWVk
aWFTYW1wbGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTb3VyY2VCdWZmZXJQYXJzZXIgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8U291cmNlQnVmZmVyUGFyc2VyPiB7CiBwdWJsaWM6CkBAIC02
OSwxMSArNjksMTEgQEAgcHVibGljOgogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIp
CiAgICAgICAgIFNlZ21lbnQoUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJik7CiAj
ZW5kaWYKLSAgICAgICAgU2VnbWVudChSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICAgICAgU2Vn
bWVudChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgICAgIFNlZ21lbnQoU2Vn
bWVudCYmKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRha2VTaGFyZWRC
dWZmZXIoKTsKLSAgICAgICAgLy8gV2lsbCByZXR1cm4gbnVsbHB0ciBpZiBTZWdtZW50J3MgYmFj
a2VuZCBpc24ndCBhIFNoYXJlZEJ1ZmZlci4KLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Z2V0U2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiB0YWtlU2hhcmVkQnVmZmVyKCk7CisgICAgICAgIC8vIFdpbGwgcmV0dXJuIG51bGxwdHIg
aWYgU2VnbWVudCdzIGJhY2tlbmQgaXNuJ3QgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgorICAg
ICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZ2V0U2hhcmVkQnVmZmVyKCkgY29u
c3Q7CiAKICAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKIApAQCAtODcsNyArODcsNyBAQCBw
dWJsaWM6CiAjaWYgSEFWRShNVF9QTFVHSU5fRk9STUFUX1JFQURFUikKICAgICAgICAgICAgIFJl
dGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VSZWY+LAogI2VuZGlmCi0gICAgICAgICAgICBSZWY8
U2hhcmVkQnVmZmVyPgorICAgICAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+CiAg
ICAgICAgID4gbV9zZWdtZW50OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHAKaW5kZXggNjFkYmQ2MmM5ZTNlOWYzMTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMS4uOWJj
MTg5NDE5ODYzMGJhZDhkN2NiZDBiM2E1YjI4ZTQ2ZTllZmUyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTM4OCw3ICszODgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgYWR2YW5jZVRvTmV4dFNlZ21lbnQoKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1
ZmZlciA9IGN1cnJlbnRTZWdtZW50LmdldFNoYXJlZEJ1ZmZlcigpOworICAgICAgICAgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IGN1cnJlbnRTZWdtZW50
LmdldFNoYXJlZEJ1ZmZlcigpOwogICAgICAgICAgICAgQ01CbG9ja0J1ZmZlclJlZiByYXdCbG9j
a0J1ZmZlciA9IG51bGxwdHI7CiAgICAgICAgICAgICB1aW50NjRfdCBsYXN0UmVhZCA9IDA7CiAg
ICAgICAgICAgICBzaXplX3QgZGVzdGluYXRpb25PZmZzZXQgPSBtX3Bvc2l0aW9uV2l0aGluU2Vn
bWVudDsKQEAgLTQwOSw3ICs0MDksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgZGVzdGlu
YXRpb25PZmZzZXQgPSAwOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBB
U1NFUlQoc2hhcmVkQnVmZmVyLT5oYXNPbmVTZWdtZW50KCksICJDYW4gb25seSBkZWFsIHdpdGgg
c2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgYSBzaW5nbGUgRGF0YVNlZ21lbnQiKTsKLSAgICAgICAg
ICAgICAgICAvLyBBIFNoYXJlZEJ1ZmZlciBkb2Vzbid0IGhhdmUgdGhyZWFkLXNhZmUgcmVmY291
bnRpbmcsIGFzIHN1Y2ggd2UgbXVzdCBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBEYXRhU2VnbWVu
dCBpbnN0ZWFkLgorICAgICAgICAgICAgICAgIC8vIEEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBk
b2Vzbid0IGhhdmUgdGhyZWFkLXNhZmUgcmVmY291bnRpbmcsIGFzIHN1Y2ggd2UgbXVzdCBrZWVw
IGEgcmVmZXJlbmNlIHRvIHRoZSBEYXRhU2VnbWVudCBpbnN0ZWFkLgogICAgICAgICAgICAgICAg
IC8vIFRPRE86IGNvdWxkIHdlIG9ubHkgY3JlYXRlIGEgbmV3IENNQmxvY2tCdWZmZXIgaWYgdGhl
IGJhY2tlbmQgbWVtb3J5IGNoYW5nZWQgc2luY2UgdGhlIHByZXZpb3VzIG9uZT8KICAgICAgICAg
ICAgICAgICBhdXRvIGZpcnN0U2VnbWVudCA9IHNoYXJlZEJ1ZmZlci0+YmVnaW4oKS0+c2VnbWVu
dDsKICAgICAgICAgICAgICAgICBzaXplX3QgY2FuUmVhZCA9IHN0ZDo6bWluPHNpemVfdD4obnVt
VG9SZWFkLCBmaXJzdFNlZ21lbnQtPnNpemUoKSAtIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0Zv
bnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCmluZGV4IGNjNTk0ZjM4
NGU1NjM1ZGVkYThmNDIzZjY4NGRhNWI1NTQ5NzA2NzEuLjU5ZDIxNjY3OWQyZmU0YzgwYzY5YWFh
NzFmMzkyMWQ2MjU3YWFjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVU
ZXh0LmNwcApAQCAtMTUxLDEwICsxNTEsMTAgQEAgUmV0YWluUHRyPENGVHlwZVJlZj4gRm9udFBs
YXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpIGNvbnN0CiAgICAgcmV0dXJuIG9i
amVjdEZvckVxdWFsaXR5Q2hlY2soY3RGb250KCkpOwogfQogCi1SZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJs
ZSkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBl
VGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7CiAgICAgaWYgKFJldGFpblB0cjxDRkRhdGFS
ZWY+IGRhdGEgPSBhZG9wdENGKENURm9udENvcHlUYWJsZShjdEZvbnQoKSwgdGFibGUsIGtDVEZv
bnRUYWJsZU9wdGlvbk5vT3B0aW9ucykpKQotICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZ2V0KCkpOworICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YS5nZXQoKSk7CiAKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxl
KHRhYmxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAK
aW5kZXggYjNjMTRlYzliNjlkOTNlYTBmZjJmZGVmZWUzMjNlYTA0NzRkZjlmZC4uNDYzYjEzNDZk
YzM3MjM0NWE0OWNiOGE1YjU2MjJkMjZkNzg2MTQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTczOCw3ICs3MzgsNyBAQCBEaWRDaGFuZ2VJdGVt
QnVmZmVyIEl0ZW1CdWZmZXI6OnN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1i
ZXJPZkJ5dGVzKQogdm9pZCBJdGVtQnVmZmVyOjphcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJdGVt
JiB0ZW1wb3JhcnlJdGVtKQogewogICAgIGF1dG8gcmVxdWlyZWRTaXplRm9ySXRlbSA9IG1fd3Jp
dGluZ0NsaWVudC0+cmVxdWlyZWRTaXplRm9ySXRlbSh0ZW1wb3JhcnlJdGVtKTsKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBvdXRPZkxpbmVJdGVtOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBvdXRPZkxpbmVJdGVtOwogICAgIGlmICghcmVxdWlyZWRTaXplRm9ySXRlbSkg
ewogICAgICAgICBvdXRPZkxpbmVJdGVtID0gbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtT3V0
T2ZMaW5lKHRlbXBvcmFyeUl0ZW0pOwogICAgICAgICBpZiAoIW91dE9mTGluZUl0ZW0pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKaW5kZXggYzg3MzE5ODJlZjgzOTMx
YmJhZTMxYjc4NjUwYWMwZGEyMGEwNWZjNS4uYjMxYmM1ZmQ0ZTkyMTRiMTVhMzc2MWZiZTk4ZDYw
Y2ViNDdhOThmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaApA
QCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRP
ZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QKKyAgICB2aXJ0dWFsIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlM
aXN0SXRlbSYpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBA
IC0xNjgsNyArMTY4LDcgQEAgcHVibGljOgogICAgIC8vIHdpdGggcGFkZGluZyBiZXR3ZWVuIGVh
Y2ggaXRlbSB0byBlbnN1cmUgdGhhdCBhbGwgaXRlbXMgYXJlIGFsaWduZWQgdG8gOCBieXRlcy4K
ICAgICAvLwogICAgIC8vIElmIGEgd3JpdGluZyBjbGllbnQgaXMgcHJlc2VudCBhbmQgcmVxdWly
ZXMgY3VzdG9tIGVuY29kaW5nIGZvciB0aGUgZ2l2ZW4gaXRlbSB0eXBlIFQsIHRoZQotICAgIC8v
IGl0ZW0gYnVmZmVyIHdpbGwgYXNrIHRoZSBjbGllbnQgZm9yIGFuIG9wYXF1ZSBTaGFyZWRCdWZm
ZXIgY29udGFpbmluZyBlbmNvZGVkIGRhdGEgZm9yIHRoZQorICAgIC8vIGl0ZW0gYnVmZmVyIHdp
bGwgYXNrIHRoZSBjbGllbnQgZm9yIGFuIG9wYXF1ZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGNv
bnRhaW5pbmcgZW5jb2RlZCBkYXRhIGZvciB0aGUKICAgICAvLyBpdGVtLiBUaGlzIGVuY29kZWQg
ZGF0YSBpcyB0aGVuIGFwcGVuZGVkIHRvIHRoZSBpdGVtIGJ1ZmZlciwgd2l0aCBwYWRkaW5nIHRv
IGVuc3VyZSB0aGF0CiAgICAgLy8gdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhpcyBkYXRhIGFyZSBh
bGlnbmVkIHRvIDggYnl0ZXMsIGlmIG5lY2Vzc2FyeS4gV2hlbiBjb25zdW1pbmcgZW5jb2RlZAog
ICAgIC8vIGl0ZW0gZGF0YSwgYSBjb3JyZXNwb25kaW5nIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50
IHdpbGwgYmUgcmVxdWlyZWQgdG8gY29udmVydCB0aGlzIGVuY29kZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IGNjZGFkYjBkYTEx
YjU5ODVhMzQzODYxOWRiMGRmMjMzMDFhNzI1YTMuLjJiNDQzZmJiZWQyYzFmZGU0OGJjZGU5Y2Jl
NDA5NTM0OTdmZGU5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcApAQCAtMzgsMTIgKzM4LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RhdGljIHZvaWQgcmVsZWFzZUN1c3RvbUZvbnREYXRhKHZvaWQqIGRhdGEpCiB7Ci0gICAg
c3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oZGF0YSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nh
c3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwogfQogCiBzdGF0aWMg
Y2Fpcm9fdXNlcl9kYXRhX2tleV90IGZyZWVUeXBlRmFjZUtleTsKIAotRm9udEN1c3RvbVBsYXRm
b3JtRGF0YTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShGVF9GYWNlIGZyZWVUeXBlRmFjZSwgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCitGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKEZUX0ZhY2UgZnJlZVR5cGVGYWNlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiAgICAgOiBtX2ZvbnRGYWNlKGFkb3B0UmVmKGNhaXJvX2Z0X2ZvbnRfZmFjZV9jcmVh
dGVfZm9yX2Z0X2ZhY2UoZnJlZVR5cGVGYWNlLCBGVF9MT0FEX0RFRkFVTFQpKSkKIHsKICAgICBi
dWZmZXIucmVmKCk7IC8vIFRoaXMgaXMgYmFsYW5jZWQgYnkgdGhlIGJ1ZmZlci0+ZGVyZWYoKSBp
biByZWxlYXNlQ3VzdG9tRm9udERhdGEuCkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIGJvb2wg
aW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShGVF9MaWJyYXJ5JiBsaWJyYXJ5KQogICAgIHJldHVy
biB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGNvbnN0IFN0cmluZyYpCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4g
Y3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJikKIHsKICAgICBzdGF0aWMgRlRfTGlicmFyeSBsaWJyYXJ5OwogICAgIGlmICghbGli
cmFyeSAmJiAhaW5pdGlhbGl6ZUZyZWVUeXBlTGlicmFyeShsaWJyYXJ5KSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKaW5kZXggZmVkODU0MGY0YWViYzg0YzY5
YjI5MDgwNjk3YzEyNDYwMWQ1YjYyNi4uNjg5Y2I2NzllNjMyZTJmNWEyYTJmZTA2NDU4MTFkODg2
NmE5MGM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBA
IC0yNDksNyArMjQ5LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpoYXNDb21wYXRpYmxlQ2hh
cm1hcCgpIGNvbnN0CiAgICAgICAgICYmIEZUX1NlbGVjdF9DaGFybWFwKGZyZWVUeXBlRmFjZSwg
ZnRfZW5jb2RpbmdfYXBwbGVfcm9tYW4pKTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNv
bnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxl
KHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIENhaXJvRnRGYWNlTG9ja2VyIGNhaXJvRnRG
YWNlTG9ja2VyKG1fc2NhbGVkRm9udC5nZXQoKSk7CiAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2Ug
PSBjYWlyb0Z0RmFjZUxvY2tlci5mdEZhY2UoKTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1
aW50MzJfdCB0YWJsZSkgYwogICAgIGlmIChlcnJvciB8fCB0YWJsZVNpemUgIT0gZXhwZWN0ZWRU
YWJsZVNpemUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiB9CiAKICNpZiBVU0UoSEFSRkJVWlopICYm
ICFFTkFCTEUoT1BFTlRZUEVfTUFUSCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXgg
Yjc0OWZjMTU4ZGZhYmVmZDNiZDhjNDU0OThiYTBhNWIyOTNiZjQwOS4uY2RlZDRhNjBiNTBiYmJh
ZWE1Yjg0NWJkZWZiYjY4NmZlMjUyNTkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAK
QEAgLTQyNCw5ICs0MjQsOSBAQCBWZWN0b3I8dWludDhfdD4gR3N0TWFwcGVkQnVmZmVyOjpjcmVh
dGVWZWN0b3IoKSBjb25zdAogICAgIHJldHVybiB7IGRhdGEoKSwgc2l6ZSgpIH07CiB9CiAKLVJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hh
cmVkQnVmZmVyKCkKK1JlZjxTaGFyZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVh
dGVTaGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKnRoaXMpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CiB9
CiAKIGJvb2wgaXNHU3RyZWFtZXJQbHVnaW5BdmFpbGFibGUoY29uc3QgY2hhciogbmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uaAppbmRleCAyYjYwNTkyMzliYjdmMGQ4ZmJlNDU2MDI2ZTU4MmEz
ZmM2ZjA5YzE2Li5kODJjZDNlMThlY2UwNDc2MWQ2YWQ0ZWMyZDUyZTJhZDlkYzM4NDY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lckNvbW1vbi5oCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xh
c3MgU2hhcmVkQnVmZmVyOwogCiBpbmxpbmUgYm9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24oZ3Vp
bnQgbWFqb3IsIGd1aW50IG1pbm9yLCBndWludCBtaWNybykKIHsKQEAgLTE5MCw3ICsxOTAsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHVubWFwRWFybHkoKTsKICAgICB9CiAKLSAgICBSZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmPFNoYXJlZEJ1
ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCk7CiAKIHByaXZhdGU6CiAgICAgR3N0TWFwcGVkT3du
ZWRCdWZmZXIoR1JlZlB0cjxHc3RCdWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRleCAyOWIzYTUwMWQ4ZTlhOTYyYTBjM2QwNGZiMjYxMjZl
YTQzYTM1NTI2Li5kZmJjNTgwZmI4ZTliMzA5MzZjY2EwOGJiODhiNDljMmJiNjUzYWM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtODEsMTIgKzgxLDEyIEBA
IEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRlcikKICAg
ICByZXR1cm4gKEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZSopaXRlci0+c2Vjb25kLmdldCgp
OwogfQogCi1SZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBJbWFnZURlY29kZXJHU3RyZWFt
ZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJHU3RyZWFtZXIoZGF0YSwgbWltZVR5cGUsIGFs
cGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogfQogCi1JbWFnZURlY29k
ZXJHU3RyZWFtZXI6OkltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXImIGRhdGEsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKK0ltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICA6IG1fbWltZVR5cGUobWltZVR5
cGUpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwpAQCAtMTk5LDcgKzE5
OSw3IEBAIFBsYXRmb3JtSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LXZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCkKK3ZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGJvb2wpCiB7CiAgICAgcHVzaEVuY29kZWREYXRhKGRhdGEpOwogfQpA
QCAtNDI2LDcgKzQyNiw3IEBAIEVuY29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2RlckdTdHJlYW1l
cjo6SW5uZXJEZWNvZGVyOjplbmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0CiAgICAgcmV0dXJuIEVu
Y29kZWREYXRhU3RhdHVzOjpVbmtub3duOwogfQogCi12b2lkIEltYWdlRGVjb2RlckdTdHJlYW1l
cjo6cHVzaEVuY29kZWREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBJbWFn
ZURlY29kZXJHU3RyZWFtZXI6OnB1c2hFbmNvZGVkRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1h
a2VDb250aWd1b3VzKCk7CiAgICAgbV9lb3MgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29k
ZXJHU3RyZWFtZXIuaAppbmRleCA2NmYzMzcyODQ2YTRkZjg3NGY0MjBkYjY1NGU2ODljOWU0M2Iw
YzUyLi5kM2VmNmE0NWNkN2RiZGZjMzEyMGVhMjNmOGRlYjNjNTk5NzFhZTk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIEltYWdl
RGVjb2RlckdTdHJlYW1lciBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2Rl
ckdTdHJlYW1lcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3Ry
ZWFtZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwotICAgIEltYWdlRGVjb2RlckdT
dHJlYW1lcihTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7
CisgICAgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pOwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlckdTdHJlYW1lcigpID0gZGVmYXVsdDsKIAog
ICAgIHN0YXRpYyBib29sIHN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSB0eXBlKSB7IHJldHVy
biB0eXBlID09IE1lZGlhVHlwZTo6VmlkZW87IH0KQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgog
ICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJz
YW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdP
cHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmlu
YWw7CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7
IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
IGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2VvczsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hl
KHNpemVfdCkgZmluYWw7CiAKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIH07CiAK
ICAgICB2b2lkIGhhbmRsZVNhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4mJik7Ci0gICAgdm9pZCBw
dXNoRW5jb2RlZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBwdXNoRW5jb2Rl
ZERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyU2FtcGxlKiBzYW1wbGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggNWQ4NmZiMWFm
NDg3YzAyODllMDAxMjU1OTY1YzMxZGNkYTk3MzQyNi4uOTMwMTkwOTk0NWI0YTIzZDY2NzgyZjM1
MGI1NmU0NDc5ZjgwMjZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJl
YW1lci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFBsYXRmb3JtTWVk
aWFSZXNvdXJjZUNsaWVudCB2aXJ0dWFsIG1ldGhvZHMuCiAgICAgdm9pZCByZXNwb25zZVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hh
cmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC0xMDkzLDcgKzEwOTMsNyBAQCB2b2lkIENhY2hlZFJl
c291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENvbnRpbnVlUG9saWN5Q2hl
Y2s6Olllcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9
IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFy
S2V5LmgKaW5kZXggNjkyYTk5NmQxOWMyNGVmZDlhNDg1NTIzNzNhNTY3OWI1MmUxZWYxYy4uMzQ5
YmZkY2FhZDZjN2Q3ZjhkNWFkYTBhMTcyMTlmZDllNzA2MjZmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9D
RE1Qcm94eUNsZWFyS2V5LmgKQEAgLTYyLDExICs2MiwxMSBAQCBwdWJsaWM6CiAgICAgQ0RNUHJv
eHlDbGVhcktleSgpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIH5DRE1Qcm94eUNsZWFyS2V5KCk7
CiAKLSAgICAvLyBGSVhNRTogVGhlcmUncyBhIGxhY2sgb2YgY29uc2lzdGVuY3kgYmV0d2VlbiBT
aGFyZWRCdWZmZXJzLAorICAgIC8vIEZJWE1FOiBUaGVyZSdzIGEgbGFjayBvZiBjb25zaXN0ZW5j
eSBiZXR3ZWVuIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJzLAogICAgIC8vIFZlY3RvcjxjaGFyPidz
IGFuZCB7dWludDhfdCosc2l6ZV90fSBpZGlvbXMgZm9yIHJlcHJlc2VudGluZyBhIGNodW5rIG9m
Ci0gICAgLy8gYnl0ZXMuIEZpeCB0aGF0IHNvbWVob3cuIE5vdGUgU2hhcmVkQnVmZmVycyBhcmUg
ZGFuZ2Vyb3VzIHNpbmNlCisgICAgLy8gYnl0ZXMuIEZpeCB0aGF0IHNvbWVob3cuIE5vdGUgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcnMgYXJlIGRhbmdlcm91cyBzaW5jZQogICAgIC8vIHRoZXkncmUg
bm90IHRocmVhZC1zYWZlIGFuZCB0aGlzIGNsYXNzIG11c3QgbWFpbnRhaW4KLSAgICAvLyB0aHJl
YWQtc2FmZXR5LCBidXQgbWF5YmUgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCBjb3VsZCBiZQor
ICAgIC8vIHRocmVhZC1zYWZldHksIGJ1dCBtYXliZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudCBjb3VsZCBiZQogICAgIC8vIG1hZGUgdG8gd29yaywgaG93ZXZlciB0aGF0IGhh
cyB6ZXJvIGhlbHBlcnMgZm9yIGRyb3BwaW5nIGludG8KICAgICAvLyBpdGVyYXRvci1hd2FyZSAv
IGNvbXBhcmF0b3ItYXdhcmUgY29udGFpbmVycy4uLgogICAgIHN0cnVjdCBjZW5jRGVjcnlwdENv
bnRleHQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKaW5kZXggMmVmYTA0MzYwZTg4NDgzODA2
MTQ0YzNkNzFkZTYzYWQ3YjQyYjU2MS4uYzM4OTE2ZTdkMDU5ZTg4OWI1Yzg4ZWViMDllMGY0Y2Zj
MDNjMWRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAg
Ym9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGluaXRE
YXRhKSBjb25zdAorYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNJbml0RGF0YShjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGluaXREYXRhKSBjb25zdAogewogICAgIC8vIFZhbGlkYXRlIHRoZSBpbml0RGF0YSBidWZmZXIg
YXMgYW4gSlNPTiBvYmplY3QgaW4ga2V5aWRzIGNhc2UuCiAgICAgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgImtleWlkcyIpICYmIENETVV0aWxpdGllczo6
cGFyc2VKU09OT2JqZWN0KGluaXREYXRhKSkKQEAgLTIzNyw3ICsyMzcsNyBAQCBib29sIENETVBy
aXZhdGVUaHVuZGVyOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgY29uc3QgUwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gQ0RNUHJpdmF0ZVRodW5kZXI6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVy
JiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2
YXRlVGh1bmRlcjo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiByZXNwb25zZSkgY29uc3QKIHsKICAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOwogfQpAQCAt
MjYwLDcgKzI2MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjppbml0aWFsaXplV2l0aENv
bmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhCiAgICAgY2FsbGJhY2soU3Vj
Y2VlZGVkKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OnNldFNlcnZlckNlcnRpZmlj
YXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgIFN1Y2Nlc3NDYWxsYmFj
ayYmIGNhbGxiYWNrKQogewogICAgIE9wZW5DRE1FcnJvciBlcnJvciA9IG9wZW5jZG1fc3lzdGVt
X3NldF9zZXJ2ZXJfY2VydGlmaWNhdGUobV90aHVuZGVyU3lzdGVtLmdldCgpLCBjb25zdF9jYXN0
PHVpbnQ4X3QqPihjZXJ0aWZpY2F0ZS0+ZGF0YSgpKSwKICAgICAgICAgY2VydGlmaWNhdGUtPnNp
emUoKSk7CkBAIC0zMjYsNyArMzI2LDcgQEAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gQ0RN
SW5zdGFuY2VUaHVuZGVyOjpjcmVhdGVTZXNzaW9uKCkKIGNsYXNzIFBhcnNlZFJlc3BvbnNlTWVz
c2FnZSB7CiAKIHB1YmxpYzoKLSAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UoY29uc3QgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UoY29uc3Qg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgewogICAgICAgICBp
ZiAoIWJ1ZmZlciB8fCAhYnVmZmVyLT5zaXplKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0z
NTQsOCArMzU0LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1
cm4gbV9pc1ZhbGlkOyB9CiAgICAgYm9vbCBoYXNQYXlsb2FkKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8Ym9vbD4obV9wYXlsb2FkKTsgfQotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+
JiBwYXlsb2FkKCkgY29uc3QmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxvYWQu
dmFsdWUoKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgJiB7IEFTU0VSVCht
X3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KKyAgICBjb25zdCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCYgeyBBU1NFUlQobV9wYXlsb2Fk
KTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiBwYXlsb2FkKCkgJiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2Fk
LnZhbHVlKCk7IH0KICAgICBib29sIGhhc1R5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUuaGFz
X3ZhbHVlKCk7IH0KICAgICBXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlIHR5cGUoKSBjb25z
dCB7IEFTU0VSVChtX3R5cGUpOyByZXR1cm4gbV90eXBlLnZhbHVlKCk7IH0KICAgICBXZWJDb3Jl
OjpNZWRpYUtleU1lc3NhZ2VUeXBlIHR5cGVPcihXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBl
IGFsdGVybmF0ZSkgY29uc3QgeyByZXR1cm4gbV90eXBlID8gbV90eXBlLnZhbHVlKCkgOiBhbHRl
cm5hdGU7IH0KQEAgLTM2NCwxMSArMzY0LDExIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBi
b29sIG1faXNWYWxpZCB7IGZhbHNlIH07Ci0gICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVm
ZmVyPj4gbV9wYXlsb2FkOworICAgIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiBtX3BheWxvYWQ7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYUtleU1l
c3NhZ2VUeXBlPiBtX3R5cGU7CiB9OwogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6
OmNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxs
YmFjayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgUGFy
c2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShidWZmZXIpOwogICAgIGlm
ICghcGFyc2VkUmVzcG9uc2VNZXNzYWdlKSB7CkBAIC00NzUsNyArNDc1LDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjprZXlzVXBkYXRlRG9uZUNhbGxiYWNrKCkKICAgICBtX3Nl
c3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2Up
Cit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBHU1RfRVJST1IoIkNETSBl
cnJvciIpOwogICAgIEdTVF9NRU1EVU1QKCJlcnJvciBkdW1wIiwgbWVzc2FnZS0+ZGF0YSgpLCBt
ZXNzYWdlLT5zaXplKCkpOwpAQCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2Up
CiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQogCi12b2lkIENETUlu
c3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VU
eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGFTaGFyZWRCdWZmZXIsCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhU2hhcmVk
QnVmZmVyLAogICAgIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CkBAIC01MDYsNyArNTA2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3Qg
QXQKICAgICAgICAgbV9pbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSwgbV9pbml0RGF0YS5wYXls
b2FkKCktPnNpemUoKSwgbnVsbHB0ciwgMCwgJm1fdGh1bmRlclNlc3Npb25DYWxsYmFja3MsIHRo
aXMsICZzZXNzaW9uKTsKICAgICBpZiAoIXNlc3Npb24pIHsKICAgICAgICAgR1NUX0VSUk9SKCJD
b3VsZCBub3QgY3JlYXRlIHNlc3Npb24iKTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
aW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CiAgICAgICAg
IGNhbGxiYWNrKGluaXREYXRhLnJlbGVhc2VOb25OdWxsKCksIHsgfSwgZmFsc2UsIEZhaWxlZCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01MTUsNyArNTE1LDcgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlw
ZSwgY29uc3QgQXQKIAogICAgIGF1dG8gZ2VuZXJhdGVDaGFsbGVuZ2UgPSBbdGhpcywgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2lu
aXREYXRhLnBheWxvYWQoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CiAgICAgICAgIGlmIChtX3Nlc3Npb25J
RC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIEdTVF9FUlJPUigiY291bGQgbm90IGNyZWF0ZSBz
ZXNzaW9uIGlkIik7CiAgICAgICAgICAgICBjYWxsYmFjayhpbml0RGF0YS5yZWxlYXNlTm9uTnVs
bCgpLCB7IH0sIGZhbHNlLCBGYWlsZWQpOwpAQCAtNTQ1LDEzICs1NDUsMTMgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjpzZXNzaW9uRmFpbHVyZSgpCiAgICAgbV9zZXNzaW9uQ2hh
bmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShjb25z
dCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAg
ICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09IG1fc2Vzc2lvbklEKTsKIAog
ICAgIEdTVF9UUkFDRSgiVXBkYXRpbmcgc2Vzc2lvbiAlcyIsIHNlc3Npb25JRC51dGY4KCkuZGF0
YSgpKTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25DaGFuZ2VkQ2Fs
bGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBz
dWNjZXNzLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZU1lc3NhZ2Up
IG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAo
c3VjY2VzcykgewogICAgICAgICAgICAgaWYgKCFyZXNwb25zZU1lc3NhZ2UpCkBAIC01NjIsNyAr
NTYyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHkKICAgICAgICAgICAgICAgICBQYXJzZWRS
ZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKHJlc3BvbnNlTWVzc2FnZSk7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAg
ICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVz
cG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CisgICAgICAgICAgICAgICAgICAgIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2Uu
cGF5bG9hZCgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVzc2FnZSBv
ZiBzaXplICV6dSIsIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9N
RU1EVU1QKCJtZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAg
ICAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQsCkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjps
b2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQKIHsKICAgICBB
U1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09IG1fc2Vzc2lvbklEKTsKIAotICAg
IG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9u
c2VNZXNzYWdlKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVu
ZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZU1lc3NhZ2UpIG11dGFibGUgewog
ICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoc3VjY2Vzcykgewog
ICAgICAgICAgICAgaWYgKCFyZXNwb25zZU1lc3NhZ2UpCkBAIC01OTcsNyArNTk3LDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29u
c3QgU3RyaW5nJiBzZXNzaW9uSUQKICAgICAgICAgICAgICAgICBQYXJzZWRSZXNwb25zZU1lc3Nh
Z2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKHJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgaWYgKHBh
cnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdl
LnBheWxvYWQoKSk7CisgICAgICAgICAgICAgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsK
ICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVzc2FnZSBvZiBzaXplICV6dSIs
IG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1QKCJtZXNz
YWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAg
ICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjptYWtlX3BhaXIo
cGFyc2VkUmVzcG9uc2VNZXNzYWdlLnR5cGVPcihNZWRpYUtleU1lc3NhZ2VUeXBlOjpMaWNlbnNl
UmVxdWVzdCksCkBAIC02NDAsNyArNjQwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVu
ZGVyOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW4KIHsK
ICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgbV9zZXNzaW9uSUQgPT0gc2Vzc2lvbklEKTsK
IAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChb
dGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIG11dGFibGUgewogICAgICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoc3VjY2VzcykgewogICAgICAgICAgICAg
aWYgKCFidWZmZXIpCkBAIC02NDksNyArNjQ5LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25U
aHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW4K
ICAgICAgICAgICAgICAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNz
YWdlKGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNlTWVzc2Fn
ZSk7CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2Fk
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdU
Rk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CisgICAgICAgICAgICAgICAg
ICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRS
ZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVH
KCJzZXNzaW9uICVzIHJlbW92ZWQsIG1lc3NhZ2UgbGVuZ3RoICV6dSIsIG1fc2Vzc2lvbklELnV0
ZjgoKS5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxi
YWNrKG1fa2V5U3RvcmUuYWxsS2V5c0FzKE1lZGlhS2V5U3RhdHVzOjpSZWxlYXNlZCksIFdURk1v
dmUobWVzc2FnZSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKICAgICAgICAgICAgICAgICB9
IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaAppbmRleCBjZGQ4ZGEyMTEyM2MxNzkxYWUyZmI2
NDM5ZmYyZDZmYTBkMmViMjFjLi4xMDIwZTE1MzIyNzFiNTM1MWUxMDZkZGU4ZjIxZWE1NDA1YTlj
MjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0NETVRodW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaApAQCAtOTMsOCArOTMsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2
ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMo
KSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7
CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Np
b25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKQEAgLTExMCw3ICsx
MTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFuY2UKICAgICBJbXBsZW1lbnRhdGlvblR5
cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRp
b25UeXBlOjpUaHVuZGVyOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24o
Y29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlm
aWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAg
ICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3ND
YWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9p
ZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9rZXlTeXN0ZW07IH0KICAg
ICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CkBAIC0x
MjYsOCArMTI2LDggQEAgY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlciBmaW5hbCA6IHB1
YmxpYyBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSB7CiBwdWJsaWM6CiAgICAgQ0RNSW5zdGFuY2VT
ZXNzaW9uVGh1bmRlcihDRE1JbnN0YW5jZVRodW5kZXImKTsKIAotICAgIHZvaWQgcmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZv
aWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVz
dExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBm
aW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNs
b3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsK
ICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBS
ZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpAQCAtMTQxLDE0ICsxNDEsMTQgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBDRE1JbnN0YW5jZVRodW5kZXIqIGNkbUluc3RhbmNlVGh1
bmRlcigpIGNvbnN0OwogCi0gICAgdXNpbmcgTm90aWZpY2F0aW9uID0gdm9pZCAoQ0RNSW5zdGFu
Y2VTZXNzaW9uVGh1bmRlcjo6KikoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7Cisg
ICAgdXNpbmcgTm90aWZpY2F0aW9uID0gdm9pZCAoQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6
KikoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHVzaW5n
IENoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsKLSAgICB1c2lu
ZyBTZXNzaW9uQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChib29sLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiYmKT47CisgICAgdXNpbmcgU2Vzc2lvbkNoYW5nZWRDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoYm9vbCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPjsKIAotICAg
IHZvaWQgY2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7
CisgICAgdm9pZCBjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBrZXlVcGRhdGVkQ2FsbGJhY2soS2V5SURUeXBlJiYp
OwogICAgIHZvaWQga2V5c1VwZGF0ZURvbmVDYWxsYmFjaygpOwotICAgIHZvaWQgZXJyb3JDYWxs
YmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGVycm9yQ2FsbGJhY2soUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIENETUluc3RhbmNlU2Vzc2lvbjo6
S2V5U3RhdHVzIHN0YXR1cyhjb25zdCBLZXlJRFR5cGUmKSBjb25zdDsKICAgICB2b2lkIHNlc3Np
b25GYWlsdXJlKCk7CiAKQEAgLTE1OSw3ICsxNTksNyBAQCBwcml2YXRlOgogICAgIEluaXREYXRh
IG1faW5pdERhdGE7CiAgICAgT3BlbkNETVNlc3Npb25DYWxsYmFja3MgbV90aHVuZGVyU2Vzc2lv
bkNhbGxiYWNrcyB7IH07CiAgICAgQm94UHRyPE9wZW5DRE1TZXNzaW9uPiBtX3Nlc3Npb247Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdlOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBtX21lc3NhZ2U7CiAgICAgYm9vbCBtX25lZWRzSW5kaXZpZHVhbGl6YXRp
b24geyBmYWxzZSB9OwogICAgIFZlY3RvcjxDaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjaz4gbV9j
aGFsbGVuZ2VDYWxsYmFja3M7CiAgICAgVmVjdG9yPFNlc3Npb25DaGFuZ2VkQ2FsbGJhY2s+IG1f
c2Vzc2lvbkNoYW5nZWRDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVN
RVV0aWxpdGllcy5jcHAKaW5kZXggY2FhNTBlZDVjM2MzOTk4MzIyZDRhMmMyNzYyNTZlMTgwMWYx
ZWJiMS4uZWE4OTBmNjdkYTIxMzg3ZjQwZGE2NTFhMGNhNWM3MzQ5M2U4NGY2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFt
ZXJFTUVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApAQCAtMzIsNyArMzIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBHTWFya3VwUGFyc2VDb250ZXh0VXNlckRh
dGEgewogICAgIGJvb2wgaXNQYXJzaW5nUHNzaCB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHBzc2g7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcHNzaDsK
IH07CiAKIHN0YXRpYyB2b2lkIG1hcmt1cFN0YXJ0RWxlbWVudChHTWFya3VwUGFyc2VDb250ZXh0
KiwgY29uc3QgZ2NoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBnY2hhcioqLCBjb25zdCBnY2hhcioq
LCBncG9pbnRlciB1c2VyRGF0YVB0ciwgR0Vycm9yKiopCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRp
YyB2b2lkIG1hcmt1cFRleHQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdjaGFyKiB0ZXh0
LCBnc2l6ZSB0ZXh0TGVuZ3RoCiAgICAgaWYgKHVzZXJEYXRhLT5pc1BhcnNpbmdQc3NoKSB7CiAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwc3NoID0gYmFzZTY0RGVjb2Rl
KHRleHQsIHRleHRMZW5ndGgpOwogICAgICAgICBpZiAocHNzaC5oYXNfdmFsdWUoKSkKLSAgICAg
ICAgICAgIHVzZXJEYXRhLT5wc3NoID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoKnBzc2gpKTsKKyAgICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOwogICAgIH0KIH0KIApAQCAtNzEsOSArNzEsOSBAQCBz
dGF0aWMgdm9pZCBtYXJrdXBFcnJvcihHTWFya3VwUGFyc2VDb250ZXh0KiwgR0Vycm9yKiwgZ3Bv
aW50ZXIpCiAKIHN0YXRpYyBHTWFya3VwUGFyc2VyIG1hcmt1cFBhcnNlciB7IG1hcmt1cFN0YXJ0
RWxlbWVudCwgbWFya3VwRW5kRWxlbWVudCwgbWFya3VwVGV4dCwgbWFya3VwUGFzc3Rocm91Z2gs
IG1hcmt1cEVycm9yIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0
Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5
bG9hZCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YTo6ZXh0cmFjdENl
bmNJZk5lZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHVucGFyc2VkUGF5bG9hZCkKIHsKLSAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGF5bG9hZCA9IFdURk1vdmUodW5wYXJz
ZWRQYXlsb2FkKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1
bnBhcnNlZFBheWxvYWQpOwogICAgIGlmICghcGF5bG9hZCB8fCAhcGF5bG9hZC0+c2l6ZSgpKQog
ICAgICAgICByZXR1cm4gcGF5bG9hZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRpZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1F
VXRpbGl0aWVzLmgKaW5kZXggMzMwYmUyMTNjN2ZlZmVkYjJmNzg4YjVjMWVjNDQxYWY3MTk0OWQ0
OS4uYWIyNjRmMzc3N2ZkNjk4OTc1ZTgzYjhkN2JmOGFjOTY4YjI5YWNlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJF
TUVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oCkBAIC01NCw3ICs1NCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIG1fcGF5bG9hZC5hcHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9u
TnVsbCgpKTsKICAgICB9CiAKLSAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCisgICAgSW5pdERhdGEoY29uc3QgU3RyaW5n
JiBzeXN0ZW1JZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAg
ICAgICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQogICAgIHsKICAgICAgICAgaWYgKHBheWxvYWQp
IHsKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgICAgICBtX3BheWxvYWQuYXBwZW5kKCpp
bml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBh
eWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQuZ2V0KCk7IH0KKyAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF5bG9hZC5n
ZXQoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQoKSBjb25zdCB7IHJldHVybiBtX3N5
c3RlbUlkOyB9CiAgICAgU3RyaW5nIHBheWxvYWRDb250YWluZXJUeXBlKCkgY29uc3QKICAgICB7
CkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJjZW5jIl9zOwogICAg
IH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBleHRyYWN0Q2VuY0lmTmVlZGVk
KFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGV4dHJhY3RDZW5jSWZOZWVkZWQoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3lzdGVtSWQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggNTY0ZTFlNzU0NGE1ODNmNDE4ZTBkZWJlMGUyNWNlNmI0
YmY1NDc5OS4uYmQxMTNiYjZjMjczMWZhMTlhZGRlZmQzM2E5OWQ0NmJiNGExZjRhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtNTIsNyArNTIsNyBAQCBGb250UGxhdGZvcm1E
YXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERl
c2NyaXB0aW9uJgogICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKGZvbnQuZ2V0KCksIHNpemUs
IGJvbGQsIGl0YWxpYywgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFudCwgZm9udERlc2NyaXB0aW9u
LnRleHRSZW5kZXJpbmdNb2RlKCksICZjcmVhdGlvbkRhdGEpOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShD
b250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVj
dGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250
Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0
ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gYnVmZmVyRGF0YSA9
IGJ1ZmZlci5jcmVhdGVDRkRhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXgg
N2JjNjY3ZTQ2OWIwMDYxNTFlYjI1Yjc5Yzg4NjlmNzZhMzJmMDA3MS4uNjkyOGE2M2U5NzFjN2Mz
NWU4ODQ0ZWVmNzNiZmE0NGE4ZDhjMDMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBA
IC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZvbnRDcmVhdGlvbkNv
bnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNp
ZmllZENhcGFiaWxpdGllczsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0
dGluZ3M7CiB0eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGlu
Z3M7CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVh
dGlvbkRhdGEgY3JlYXRpb25EYXRhOwogfTsKIAotV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVf
cHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQg
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVN
YXRoRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZU1hdGhEYXRhLmNwcAppbmRleCBiNDE3OTIzZTZkNzVmOTNjZmQxZTRjYzMxZjg1MDM2
ZTFjNjJmNGMyLi41ZDg4Y2Q3NzY4OThjMDVhOTAzNTg5ZTJkNGJhYzczMGFhMWRmOTkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlw
ZU1hdGhEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZU1hdGhEYXRhLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3QgTWF0aEl0
YWxpY3NDb3JyZWN0aW9uSW5mbyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6
VUludDE2IGl0YWxpY3NDb3JyZWN0aW9uQ291bnQ7CiAgICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJl
Y29yZCBpdGFsaWNzQ29ycmVjdGlvblsxXTsgLy8gVGhlcmUgYXJlIGl0YWxpY3NDb3JyZWN0aW9u
Q291bnQgaXRhbGljIGNvcnJlY3Rpb24gdmFsdWVzLgogCi0gICAgaW50MTZfdCBnZXRJdGFsaWND
b3JyZWN0aW9uKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5
cGgpIGNvbnN0CisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90
IGNvdW50ID0gdWludDE2X3QoaXRhbGljc0NvcnJlY3Rpb25Db3VudCk7CiAgICAgICAgIGlmICgh
aXNWYWxpZEVuZChidWZmZXIsICZpdGFsaWNzQ29ycmVjdGlvbltjb3VudF0pKQpAQCAtOTMsNyAr
OTMsNyBAQCBzdHJ1Y3QgTWF0aEdseXBoSW5mbyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBP
cGVuVHlwZTo6T2Zmc2V0IGV4dGVuZGVkU2hhcGVDb3ZlcmFnZU9mZnNldDsKICAgICBPcGVuVHlw
ZTo6T2Zmc2V0IG1hdGhLZXJuSW5mb09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29y
cmVjdGlvbkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlv
bkluZm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoSXRhbGljc0Nv
cnJlY3Rpb25JbmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMTIwLDcgKzEyMCw3
IEBAIHN0cnVjdCBHbHlwaEFzc2VtYmx5IDogVGFibGVCYXNlIHsKICAgICAgICAgUGFydEZsYWdz
RXh0ZW5kZXIgPSAweDAxCiAgICAgfTsKIAotICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25z
dCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRh
OjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1i
bHlQYXJ0cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERh
dGE6OkFzc2VtYmx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CiAgICAgewogICAgICAgICB1
aW50MTZfdCBjb3VudCA9IHBhcnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZl
ciwgJnBhcnRSZWNvcmRzW2NvdW50XSkpCkBAIC0xNDMsNyArMTQzLDcgQEAgc3RydWN0IE1hdGhH
bHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpVSW50MTYg
YWR2YW5jZU1lYXN1cmVtZW50OwogICAgIH0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNbMV07IC8v
IFRoZXJlIGFyZSB2YXJpYW50Q291bnQgTWF0aEdseXBoVmFyaWFudFJlY29yZCdzLgogCi0gICAg
dm9pZCBnZXRTaXplVmFyaWFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBWZWN0b3I8R2x5cGg+JiB2YXJpYW50cykgY29uc3QKKyAgICB2b2lkIGdldFNpemVWYXJpYW50
cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNv
bnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHZhcmlhbnRDb3VudDsKICAgICAg
ICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2NvdW50
XSkpCkBAIC0xNTMsNyArMTUzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRh
YmxlQmFzZSB7CiAgICAgICAgICAgICB2YXJpYW50c1tpXSA9IG1hdGhHbHlwaFZhcmlhbnRSZWNv
cmRzW2ldLnZhcmlhbnRHbHlwaDsKICAgICB9CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMo
Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRo
RGF0YTo6QXNzZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFz
c2VtYmx5UGFydHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1h
dGhEYXRhOjpBc3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAg
ICAgdWludDE2X3Qgb2Zmc2V0ID0gZ2x5cGhBc3NlbWJseU9mZnNldDsKICAgICAgICAgY29uc3Qg
R2x5cGhBc3NlbWJseSogZ2x5cGhBc3NlbWJseSA9IHZhbGlkYXRlT2Zmc2V0PEdseXBoQXNzZW1i
bHk+KGJ1ZmZlciwgb2Zmc2V0KTsKQEAgLTE3MCw3ICsxNzAsNyBAQCBzdHJ1Y3QgTWF0aFZhcmlh
bnRzIDogVGFibGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgaG9yaXpvbnRh
bEdseXBoQ291bnQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5cGhDb25zdHJ1Y3Rpb25z
T2Zmc2V0WzFdOyAvLyBUaGVyZSBhcmUgdmVydGljYWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBo
IGNvbnRydWN0aW9ucyBhbmQgaG9yaXpvbnRhbEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29u
dHJ1Y3Rpb25zLgogCi0gICAgY29uc3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhD
b25zdHJ1Y3Rpb24oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBn
bHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVj
dGlvbiogbWF0aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBH
bHlwaCBnbHlwaCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDMy
X3QgY291bnQgPSB1aW50MTZfdCh2ZXJ0aWNhbEdseXBoQ291bnQpICsgdWludDE2X3QoaG9yaXpv
bnRhbEdseXBoQ291bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEds
eXBoQ29uc3RydWN0aW9uc09mZnNldFtjb3VudF0pKQpAQCAtMjA0LDcgKzIwNCw3IEBAIHN0cnVj
dCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBo
SW5mb09mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhWYXJpYW50c09mZnNldDsKIAot
ICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhD
b25zdGFudHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoQ29uc3RhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zm
c2V0KQpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2Ugewog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBjb25zdCBNYXRoR2x5cGhJbmZv
KiBtYXRoR2x5cGhJbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29u
c3QKKyAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0
aEdseXBoSW5mb09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIyMCw3ICsyMjAsNyBA
QCBzdHJ1Y3QgTUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgY29uc3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhWYXJpYW50
cyogbWF0aFZhcmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aFZhcmlhbnRzT2Zmc2V0OwogICAgICAgICBp
ZiAob2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCmluZGV4IDNmZjY2ZDMxMTgyZTVjNGIz
NmRkM2YzMzA3YTY4NGI5NWQ5NTkzZTMuLjI5OTBiZmIwM2Y1NjE5NDU3N2ZkZDQ0NzZmMTQ0OTRh
YjE4MDM1Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlTWF0aERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250OwogCiBj
bGFzcyBPcGVuVHlwZU1hdGhEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8T3BlblR5cGVNYXRoRGF0
YT4gewpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgT3BlblR5cGVN
YXRoRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7CiAKICNpZiBFTkFCTEUoT1BFTlRZUEVf
TUFUSCkKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsKICNlbGlmIFVTRShIQVJGQlVa
WikKICAgICBIYlVuaXF1ZVB0cjxoYl9mb250X3Q+IG1fbWF0aEZvbnQ7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBl
VHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVHlwZXMuaAppbmRleCAzMDQ5NjNhNWRlOTBjODFjOGQ2MzA5MTI2Nzc4ODc1MzFkODZkMmFm
Li5jODY0YjJjM2E4ZmIxYWUzNzYzMDkzZWU1MDU1YjM2NTFlZjAxMjZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVU
eXBlcy5oCkBAIC03Myw3ICs3Myw3IEBAIHR5cGVkZWYgVUludDE2IEdseXBoSUQ7CiB0eXBlZGVm
IHVpbnQzMl90IFRhZzsKICNkZWZpbmUgT1RfTUFLRV9UQUcoY2gxLCBjaDIsIGNoMywgY2g0KSAo
KCgodWludDMyX3QpKGNoNCkpIDw8IDI0KSB8ICgoKHVpbnQzMl90KShjaDMpKSA8PCAxNikgfCAo
KCh1aW50MzJfdCkoY2gyKSkgPDwgOCkgfCAoKHVpbnQzMl90KShjaDEpKSkKIAotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiBidWZmZXIsIHNpemVfdCBjb3VudCA9IDEpCiB7CiAgICAgaWYgKCFi
dWZmZXIgfHwgYnVmZmVyLT5zaXplKCkgPCBzaXplb2YoVCkgKiBjb3VudCkKICAgICAgICAgcmV0
dXJuIDA7CkBAIC04Miw3ICs4Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29u
c3QgVCogdmFsaWRhdGVUYWJsZShjb25zdCBSZWZQdHI8Q29udGlndW91c1NoYXJlCiAKIHN0cnVj
dCBUYWJsZUJhc2UgewogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikK
KyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCB2b2lkKiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlvbiA8IGJ1ZmZl
ci5kYXRhKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpOyAvLyAiPD0i
IGJlY2F1c2UgZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAgICAgfQogCi0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgY29uc3Qg
VCogY2FzdGVkID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocG9zaXRpb24pOwogICAgICAg
ICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmY2FzdGVkWzFdKSkKQEAgLTk4LDcgKzk4LDcgQEAg
cHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gY2FzdGVkOwogICAgIH0KIAotICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB2YWxp
ZGF0ZVB0cjxUPihidWZmZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90Kj4odGhpcykg
KyBvZmZzZXQpOwogICAgIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgQ292ZXJhZ2UyVGFi
bGUgOiBDb3ZlcmFnZVRhYmxlIHsKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKIHN0cnVjdCBU
YWJsZVdpdGhDb3ZlcmFnZSA6IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBnZXRD
b3ZlcmFnZUluZGV4KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
Q292ZXJhZ2VUYWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJ
bmRleCkgY29uc3QKKyAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWlu
dDMyX3QmIGNvdmVyYWdlSW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvdmVy
YWdlLT5jb3ZlcmFnZUZvcm1hdCkgewogICAgICAgICBjYXNlIDE6IHsgLy8gQ292ZXJhZ2UgRm9y
bWF0IDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAppbmRleCAzY2E3MjdhYWZiZDJjYWQ0
YmUxMDZmMWRjNGMzZjJlN2RkNDQ4MDVmLi4zMjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2Ez
ZmNiZjkyZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0xOTksNyArMTk5
LDcgQEAgdm9pZCBFT1RIZWFkZXI6OmFwcGVuZFBhZGRpbmdTaG9ydCgpCiAKIC8vIGFkZHMgZm9u
dE5hbWUgdG8gdGhlIGZvbnQgdGFibGUgaW4gZm9udERhdGEsIGFuZCB3cml0ZXMgdGhlIG5ldyBm
b250IHRhYmxlIHRvIHJld3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0dXJucyB0aGUgc2l6ZSBvZiB0
aGUgbmFtZSB0YWJsZSAod2hpY2ggaXMgdXNlZCBieSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQpLCBv
ciAwIG9uIGVhcmx5IGFib3J0Ci1ib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90
PiYgcmV3cml0dGVuRm9udERhdGEpCitib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVy
JiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdy
aXR0ZW5Gb250RGF0YSkKIHsKICAgICBzaXplX3Qgb3JpZ2luYWxEYXRhU2l6ZSA9IGZvbnREYXRh
LnNpemUoKTsKICAgICBjb25zdCBzZm50SGVhZGVyKiBzZm50ID0gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBzZm50SGVhZGVyKj4oZm9udERhdGEuZGF0YSgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBi
b29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNv
bnN0IFN0cmluZyYgZm9udE5hbWUsCiB9CiAKIC8vIFJlbmFtZSB0aGUgZm9udCBhbmQgaW5zdGFs
bCB0aGUgbmV3IGZvbnQgZGF0YSBpbnRvIHRoZSBzeXN0ZW0KLVJlZlB0cjxGb250TWVtb3J5UmVz
b3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBmb250RGF0YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKK1JlZlB0cjxGb250TWVtb3J5UmVz
b3VyY2U+IHJlbmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRh
LCBjb25zdCBTdHJpbmcmIGZvbnROYW1lKQogewogICAgIFZlY3Rvcjx1aW50OF90PiByZXdyaXR0
ZW5Gb250RGF0YTsKICAgICBpZiAoIXJlbmFtZUZvbnQoZm9udERhdGEsIGZvbnROYW1lLCByZXdy
aXR0ZW5Gb250RGF0YSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAppbmRleCAyMmJlMjMwYTYw
NWM2NmEwZWY1YmMxNDhhMjYyNzk3ZDM3MmMyYWM0Li5mYTAwMDgxMTYwNjY5N2RjNWM1MTEyMzMz
YzkwYzhjOTJiNGI2NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTM1LDEwICsz
NSwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5kaWFuVVNob3J0Owot
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVj
dCBFT1RQcmVmaXg7CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgRU9USGVhZGVyIHsK
ICAgICBFT1RIZWFkZXIoKTsKQEAgLTU1LDggKzU1LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8
dWludDhfdCwgNTEyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgcmVuYW1lRm9udChjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7Ci1S
ZWZQdHI8Rm9udE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworYm9vbCByZW5hbWVGb250KGNv
bnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOworUmVm
UHRyPEZvbnRNZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVmVydGljYWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmNwcAppbmRleCA3OWU5ZWZlMDYwNTMzNTc5ZTlj
YTNiYzEwMzIzOGJmZDI4MmY3MTVjLi4wZmE4ZjMwNmFkOTUyZDA2YTA5Mjk3ZDBiMWQyODdiODk4
ODMyYTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0xMTYsNyAr
MTE2LDcgQEAgc3RydWN0IFN1YnN0aXR1dGlvblN1YlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBP
cGVuVHlwZTo6VUludDE2IHN1YnN0Rm9ybWF0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgY292ZXJh
Z2VPZmZzZXQ7CiAKLSAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0
PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9CisgICAgY29uc3QgQ292
ZXJhZ2VUYWJsZSogY292ZXJhZ2UoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsg
cmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZz
ZXQpOyB9CiB9OwogCiBzdHJ1Y3QgU2luZ2xlU3Vic3RpdHV0aW9uMlN1YlRhYmxlIDogU3Vic3Rp
dHV0aW9uU3ViVGFibGUgewpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0cnVjdCBMb29rdXBUYWJsZSA6
IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNbMV07CiAg
ICAgLy8gT3BlblR5cGU6OlVJbnQxNiBtYXJrRmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxkIGNvbWVz
IGFmdGVyIHZhcmlhYmxlIGxlbmd0aCwgc28gb2Zmc2V0IGlzIGRldGVybWluZWQgZHluYW1pY2Fs
bHkuCiAKLSAgICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBt
YXAsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29s
IGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnRTdWJU
YWJsZSA9IHN1YlRhYmxlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZz
dWJUYWJsZU9mZnNldHNbY291bnRTdWJUYWJsZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0cnVj
dCBMb29rdXBMaXN0IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENv
dW50OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwT2Zmc2V0c1sxXTsKIAotICAgIGNvbnN0
IExvb2t1cFRhYmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMb29rdXBUYWJsZSogbG9va3VwKHVp
bnQxNl90IGluZGV4LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIHVpbnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+
PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBPZmZzZXRzW2NvdW50XSkpCkBA
IC0yMDgsNyArMjA4LDcgQEAgc3RydWN0IEZlYXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAg
T3BlblR5cGU6OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1
cExpc3RJbmRleFsxXTsKIAotICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExv
b2t1cExpc3QqIGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRHbHlwaFN1YnN0
aXR1dGlvbnMoY29uc3QgTG9va3VwTGlzdCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+
KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAg
dWludDE2X3QgY291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1
ZmZlciwgJmxvb2t1cExpc3RJbmRleFtjb3VudF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0cnVj
dCBGZWF0dXJlTGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVh
dHVyZU9mZnNldDsKICAgICB9IGZlYXR1cmVzWzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxl
KiBmZWF0dXJlKHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSog
ZmVhdHVyZSh1aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0
dXJlQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZm
ZXIsICZmZWF0dXJlc1tjb3VudF0pKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBGZWF0dXJl
TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0
IEZlYXR1cmVUYWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUq
IGZpbmRGZWF0dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QKICAgICB7CiAgICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBmZWF0dXJl
Q291bnQ7ICsraSkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVy
ZXNbaV0pICYmIGZlYXR1cmVzW2ldLmZlYXR1cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcgKzI1NSw3
IEBAIHN0cnVjdCBMYW5nU3lzVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50
MTYgZmVhdHVyZUNvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUluZGV4WzFdOwog
Ci0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRh
ZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5U
eXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50
ID0gZmVhdHVyZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVy
ZUluZGV4W2NvdW50XSkpCkBAIC0yNzcsNyArMjc3LDcgQEAgc3RydWN0IFNjcmlwdFRhYmxlIDog
VGFibGVCYXNlIHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0OwogICAg
IH0gbGFuZ1N5c1JlY29yZHNbMV07CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRM
YW5nU3lzKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBj
b25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsYW5nU3lzQ291bnQ7
CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tjb3VudF0p
KQpAQCAtMjk4LDcgKzI5OCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAg
ICAgICAgT3BlblR5cGU6Ok9mZnNldCBzY3JpcHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRzWzFdOwog
Ci0gICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRh
YmxlKiBzY3JpcHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAg
ICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMxMCw3
ICszMTAsNyBAQCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRU
YWJsZSogZGVmYXVsdFNjcmlwdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICgh
Y291bnQgfHwgIWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzIxLDcg
KzMyMSw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJu
IHZhbGlkYXRlT2Zmc2V0PFNjcmlwdFRhYmxlPihidWZmZXIsIHNjcmlwdHNbMF0uc2NyaXB0T2Zm
c2V0KTsKICAgICB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5n
U3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdFRhYmxlID0gZGVmYXVs
dFNjcmlwdChidWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2LDExICsz
MzYsMTEgQEAgc3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9m
ZnNldCBmZWF0dXJlTGlzdE9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cExpc3RP
ZmZzZXQ7CiAKLSAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2Ny
aXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IEZlYXR1cmVM
aXN0KiBmZWF0dXJlTGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNv
bnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVM
aXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNl
dDxMb29rdXBMaXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgU2Ny
aXB0TGlzdCogc2NyaXB0TGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyBy
ZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0
KTsgfQorICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1
ZmZlciwgZmVhdHVyZUxpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgTG9va3VwTGlzdCogbG9va3Vw
TGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVP
ZmZzZXQ8TG9va3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQogCi0gICAgY29u
c3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5
cyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0
IFNjcmlwdExpc3QqIHNjcmlwdHMgPSBzY3JpcHRMaXN0KGJ1ZmZlcik7CiAgICAgICAgIGlmICgh
c2NyaXB0cykKQEAgLTM0OCw3ICszNDgsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNl
IHsKICAgICAgICAgcmV0dXJuIHNjcmlwdHMtPmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAg
fQogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVy
ZVRhZywgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNv
bnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgTGFuZ1N5
c1RhYmxlKiBsYW5nU3lzID0gZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICAgICAgY29uc3Qg
RmVhdHVyZUxpc3QqIGZlYXR1cmVzID0gZmVhdHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2NSw3ICsz
NjUsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIGZl
YXR1cmU7CiAgICAgfQogCi0gICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhI
YXNoTWFwPEdseXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAorICAgIGJvb2wgZ2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFz
aE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgY29uc3QgRmVhdHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1cmVUYWJs
ZSA9IGZlYXR1cmUoT3BlblR5cGU6OlZlcnRGZWF0dXJlVGFnLCBidWZmZXIpOwogICAgICAgICBp
ZiAoIXZlcnRpY2FsRmVhdHVyZVRhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaAppbmRleCBhNjI3
MTliMTcxOWE3NGY5NzY5MjIxOWRmNWY3YWFlZGM0OTA2NDY2Li4wZGI0YWZhZGIzZjc0MmI4M2E0
ZTE2Y2YzNzE4NzBhMmIwNDA0ZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaApAQCAtNDMsNyAr
NDMsNyBAQCBlbnVtIERXUklURV9GT05UX1NUUkVUQ0g7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgRGlyZWN0V3JpdGUgewogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggOGJlMWIxYTMzYTYyMDVjMTgxY2VmZjFhYzM0MzRi
Yzg3YTc4M2JlNS4uYzg2ODNhN2VmNTg5YzNmZTY1NGQ4NDU3MTI5NWUyNDBkMjI0NDllNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBT
dHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IGl0ZW1JbkNvbGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNy
ZWF0ZVVuaXF1ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRB
Y3RpdmF0ZUZvbnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaApp
bmRleCBmYzA0ZjE3NWM3ODhiOWJlOTk4ZjVmM2I3MTFmNTk3YzAyNmJiZjllLi4wOGZjOWYxOWVh
ZWE5NDgzZWE1OGVjMWFlZWRkNDU3MjU2Y2UyN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmgKQEAgLTM2LDEzICszNiwxMyBAQCB0eXBlZGVmIHN0cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwor
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZv
bnREZXNjcmlwdGlvbjsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKIHN0cnVjdCBGb250U2Vs
ZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBG
b250VGFnZ2VkU2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpAQCAtNjUsNyArNjUs
NyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9u
RGF0YTsKIH07CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmKTsKK3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVG
b250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggZjRmYmY3YTdm
NGQ3YzgzZmYyMTE2YzMxZTU0NmNhOTFlMDU4OWNiMS4uM2MxZDRlMmYzYzc1NGE3M2E4MjNhMDBj
MTY3NGVjMzA0NDkzMTEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5j
cHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgp
CiAgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5p
cXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1E
YXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24p
CiB7CiAgICAgU3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBh
dXRvIGZvbnRSZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1l
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKaW5kZXggNGM2NzRjNDc0M2JjMDEx
OGE5NzAxMGNjNjkyODliNTg2ZGJiMGNkMS4uMzFhMWU1YzUzMWYyMDkwM2M1Y2ZiMzI4NjBiYTVl
ZjIwNjRlOTNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKQEAgLTk4LDcg
Kzk4LDcgQEAgYm9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgICAgICYmIG1fdXNlR0RJID09IG90aGVy
Lm1fdXNlR0RJOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRm
b3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXggNDM5Y2Y4NjNiODczZGM5Y2Y3ZjgxMDU5OWU1YTYw
MWU3ZjczNzk5Ny4uNmNiNTUxMTA0YTkzYmRiZDIyYjQxN2E0NTQ2ZDIwZmFkMGUyYTM0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9y
bURhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250UGxhdGZvcm1EYXRhV2luLmNwcApAQCAtNTksMTggKzU5LDE4IEBAIEZvbnRQbGF0Zm9ybURh
dGE6OkZvbnRQbGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiBmb250LCBmbG9hdCBzaXplLCBi
b29sIGJvbGQsCiAgICAgUmVzdG9yZURDKGhkYywgLTEpOwogfQogCi1SZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVp
bnQzMl90IHRhYmxlKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0
YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIEhX
bmREQyBoZGMoMCk7CiAgICAgSEdESU9CSiBvbGRGb250ID0gU2VsZWN0T2JqZWN0KGhkYywgaGZv
bnQoKSk7CiAKICAgICBEV09SRCBzaXplID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgMCwg
MCk7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKHNpemUgIT0gR0RJX0VSUk9SKSB7CiAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKHNpemUpOwogICAgICAgICBEV09SRCByZXN1bHQg
PSBHZXRGb250RGF0YShoZGMsIHRhYmxlLCAwLCAoUFZPSUQpZGF0YS5kYXRhKCksIHNpemUpOwog
ICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IHNpemUpOwotICAgICAgICBi
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7Cisg
ICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAg
IH0KIAogICAgIFNlbGVjdE9iamVjdChoZGMsIG9sZEZvbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3Qy
RC5jcHAKaW5kZXggNjI5ZTBlNjFhMTA0YzU2N2ExZDRlZGNiN2U1Nzk3ZGNmNjdjNmU4ZS4uNzcz
NTczOWI5MzM0ZjQ0ZDk5YTNmMTJmZmM1YmY3YjQxZjdjYzZlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGly
ZWN0MkQuY3BwCkBAIC0yNzIsNyArMjcyLDcgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29k
ZXJEaXJlY3QyRDo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWIKICAg
ICByZXR1cm4gYml0bWFwOwogfQogCi12b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRh
KFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVj
b2RlckRpcmVjdDJEOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmICghYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCmluZGV4IDRmNDcyNTg2YjQyNGJkYTFjZjZmYTAx
NDNjYmEyM2QwMzAwMTZlNDUuLmMyMzY1ZmQ3NDRjNjExOGMxOTk5ZTA1YjgwMmVkNWI0OGYzNjQ4
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZURlY29kZXJEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEltYWdl
RGVjb2RlckRpcmVjdDJEIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6CiAg
ICAgSW1hZ2VEZWNvZGVyRGlyZWN0MkQoKTsKIAotICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVy
RGlyZWN0MkQ+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJEaXJlY3QyRD4gY3Jl
YXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURl
Y29kZXJEaXJlY3QyRCgpKTsKICAgICB9CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAg
IFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1w
bGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRp
b25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7
CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
IGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZy
YW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAKaW5kZXggMGQ4ODIwZTlmM2Q2ZmQ3
NzM1ZDU3MGIzNjQxNDg4ZjUzYmQ3ZWNlOS4uMmQ5NzI3MGE3MzQ4MzQ4OTNlNzhjODFmZjBlYzVi
YjVkZmVjM2Y4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VXaW4uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAKIC8vIFRoaXMgZnVuY3Rpb24gbG9hZHMgcmVzb3VyY2VzIGZyb20gV2ViS2l0Ci1SZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNo
YXIqKTsKK1JlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3Vy
Y2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAppbmRleCA3ZTNiMzYzMmI5
MGM2MTk0MTVlNDhhNTJhMjI1OGIxNDJlMDAxYTU3Li5jZjJiNTFmNmYwMjgzN2ExMTA2ZjRkOTk5
ZjJmMTMwZTI1ODA5ODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
U2VsZWN0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rp
b25EYXRhLmgKQEAgLTYwLDggKzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FuU21hcnRS
ZXBsYWNlKGJvb2wgY2FuU21hcnRSZXBsYWNlKSB7IG1fY2FuU21hcnRSZXBsYWNlID0gY2FuU21h
cnRSZXBsYWNlOyB9CiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2UoKSBjb25zdCB7IHJldHVybiBt
X2NhblNtYXJ0UmVwbGFjZTsgfQogCi0gICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZl
cik7IH0KLSAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9jdXN0b21EYXRhLmdldCgpOyB9CisgICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsg
fQorICAgIFNoYXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9t
RGF0YS5nZXQoKTsgfQogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEh
bV9jdXN0b21EYXRhOyB9CiAgICAgdm9pZCBjbGVhckN1c3RvbURhdGEoKSB7IG1fY3VzdG9tRGF0
YSA9IG51bGxwdHI7IH0KIApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxT
dHJpbmc+IG1fZmlsZW5hbWVzOwogICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKICAgICBib29s
IG1fY2FuU21hcnRSZXBsYWNlIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gbV9jdXN0b21EYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY3VzdG9t
RGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNv
ZGVyLmNwcAppbmRleCBkOTU2ZDllNzYyNWQ1YmI1YTcwZjA2OTNlNzc5OGVlOTA4NDlmMTY1Li4z
M2M5NWVjMzMzM2E5MjBjNjRhMDE4MTc1MWViNGE1MDVlZjFhN2FiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJ
bWFnZURlY29kZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
bmFtZXNwYWNlIHsKIAotc3RhdGljIHVuc2lnbmVkIGNvcHlGcm9tU2hhcmVkQnVmZmVyKGNoYXIq
IGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoLCBjb25zdCBTaGFyZWRCdWZmZXImIHNoYXJl
ZEJ1ZmZlcikKK3N0YXRpYyB1bnNpZ25lZCBjb3B5RnJvbVNoYXJlZEJ1ZmZlcihjaGFyKiBidWZm
ZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
c2hhcmVkQnVmZmVyKQogewogICAgIHVuc2lnbmVkIGJ5dGVzRXh0cmFjdGVkID0gMDsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBzaGFyZWRCdWZmZXIpIHsKQEAgLTEzNSw3ICsxMzUs
NyBAQCBib29sIG1hdGNoZXNDVVJTaWduYXR1cmUoY2hhciogY29udGVudHMpCiAKIH0KIAotUmVm
UHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPFNjYWxhYmxl
SW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbGVuZ3RoT2ZMb25nZXN0U2lnbmF0dXJlID0gMTQ7IC8vIFRvIHdpdDogIlJJ
RkY/Pz8/V0VCUFZQIgogICAgIGNoYXIgY29udGVudHNbbGVuZ3RoT2ZMb25nZXN0U2lnbmF0dXJl
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IDNjNmEzYTUwYzgyMDk2NGU4YTliMDc0
OTAxYTkyYjNmM2M0Nzg5YjcuLjljNDA1NTc4MjQxZDBjNTEyNzAyOTUxNWMyMjEyNjU4ZjhjNGY2
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6
CiAKICAgICAvLyBSZXR1cm5zIG51bGxwdHIgaWYgd2UgY2FuJ3Qgc25pZmYgYSBzdXBwb3J0ZWQg
dHlwZSBmcm9tIHRoZSBwcm92aWRlZCBkYXRhIChwb3NzaWJseQogICAgIC8vIGJlY2F1c2UgdGhl
cmUgaXNuJ3QgZW5vdWdoIGRhdGEgeWV0KS4KLSAgICBzdGF0aWMgUmVmUHRyPFNjYWxhYmxlSW1h
Z2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8U2NhbGFibGVJbWFnZURl
Y29kZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhh
KCkgY29uc3QgeyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhhOyB9CiAKQEAgLTcwLDcgKzcwLDcg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVk
RGF0YVN0YXR1czo6Q29tcGxldGU7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlCisgICAgdm9pZCBzZXRE
YXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBv
dmVycmlkZQogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAg
ICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCkBA
IC0xOTQsNyArMTk0LDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhv
dFNwb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogcHJvdGVj
dGVkOgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CisgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CiAgICAg
VmVjdG9yPFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUsIDE+IG1fZnJhbWVCdWZmZXJDYWNoZSBX
VEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CiAgICAgbXV0YWJsZSBMb2NrIG1fbG9jazsKICAg
ICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcApp
bmRleCA3YzYwM2ZkODM1OGMyMTRhYzkxODRmMzE4OTk3MmZlODQxYjYxZTgwLi4yNmY4ODY0OTZl
NWE1YTE0ZTI4YWZiMWFmYTliZmMzMDE3N2Y1MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFk
ZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIEFWSUZJbWFnZVJlYWRlcjo6QVZJRkltYWdlUmVhZGVy
KFJlZlB0cjxBVklGSW1hZ2VEZWNvZGVyPiYmIGRlY29kZXIpCiAKIEFWSUZJbWFnZVJlYWRlcjo6
fkFWSUZJbWFnZVJlYWRlcigpID0gZGVmYXVsdDsKIAotYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBh
cnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQorYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKIHsKICAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01lbW9yeShtX2F2aWZEZWNvZGVyLmdl
dCgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpICE9IEFWSUZfUkVTVUxUX09LKQogICAgICAg
ICByZXR1cm4gYWxsRGF0YVJlY2VpdmVkID8gbV9kZWNvZGVyLT5zZXRGYWlsZWQoKSA6IGZhbHNl
OwpAQCAtNTgsNyArNTgsNyBAQCBib29sIEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29u
c3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBhbAogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIEFWSUZJbWFnZVJlYWRlcjo6ZGVjb2RlRnJhbWUoc2l6ZV90IGZyYW1l
SW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmIGJ1ZmZlciwgY29uc3QgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkKK3ZvaWQgQVZJRkltYWdlUmVhZGVyOjpkZWNvZGVGcmFt
ZShzaXplX3QgZnJhbWVJbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYgYnVmZmVyLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkKIHsKICAgICBp
ZiAobV9kZWNvZGVyLT5mYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdl
UmVhZGVyLmgKaW5kZXggY2JjYTBiOGMxMjRiZmYwZmZjMzMwMWJhMzViY2UwMWVkMjcyMmRmOC4u
NDk2ZjY5ZjgxMmJkNzViMGVkYTYzNTdiYWE4NjBjZmNjYjViYTRiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJ
bWFnZVJlYWRlci5oCkBAIC0zOSw4ICszOSw4IEBAIHB1YmxpYzoKICAgICBBVklGSW1hZ2VSZWFk
ZXIoUmVmUHRyPEFWSUZJbWFnZURlY29kZXI+JiYpOwogICAgIH5BVklGSW1hZ2VSZWFkZXIoKTsK
IAotICAgIGJvb2wgcGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIGRlY29kZUZyYW1lKHNpemVfdCBpbmRl
eCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQmKTsKKyAgICBib29sIHBhcnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgZGVjb2Rl
RnJhbWUoc2l6ZV90IGluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiwgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKTsKICAgICBzaXplX3QgaW1hZ2VDb3Vu
dCgpIGNvbnN0OwogICAgIGRvdWJsZSByZXBldGl0aW9uQ291bnQoKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAv
Qk1QSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3Mjc2OWE2OTI2ZWMyNDE5YmY2NjM4MjUyOGQzZDc3
MjBhNTRhZGFlLi5mNzQ1NWMxNDZjN2U4YWViMDRjYzhjNTZmMzMwZTJhMDFmM2JhNzJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1h
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDYsNyArNDYsNyBAQCBCTVBJbWFnZURlY29k
ZXI6OkJNUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcAogewogfQogCi12b2lkIEJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRC
dWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBCTVBJbWFnZURlY29kZXI6
OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB7CiAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VE
ZWNvZGVyLmgKaW5kZXggYzdjN2NhODFmZWE2YjhhNzc0YmIzMDhlNTM4ZGNkMDQ4Yzk5NWVlYS4u
NjRkZWQ2YWJiZTJjMGEyOWIxMWY5ZmI1ZWNkNmI0ODcyNGQ1ODk3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZURlY29kZXIuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUlt
YWdlRGVjb2RlcgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuICJibXAiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIFNjYWxhYmxlSW1hZ2VE
ZWNvZGVyRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIGZpbmFsOwogICAg
IC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gQmUgY2FyZWZ1bCB0
byBhdm9pZAogICAgIC8vIGFjY2Vzc2luZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxseSB3aGVu
IGNhbGxpbmcgdGhpcyBmcm9tIGluc2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaAppbmRleCA0ODQ0
ZjM4MGRjMTdlYzcwNDU4OGZiMTJmNTNlYWJjNmQyMGU2MGY0Li5iZDQzMGU4YThiZWEyYzgxNmIy
YzUyMmJmNWJhNzg4NDZjMzhlMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaApAQCAtNDIsNyAr
NDIsNyBAQCBjbGFzcyBCTVBJbWFnZVJlYWRlciB7CiBwdWJsaWM6CiAgICAgLy8gUmVhZCBhIHZh
bHVlIGZyb20gfGRhdGFbb2Zmc2V0XXwsIGNvbnZlcnRpbmcgZnJvbSBsaXR0bGUgdG8gbmF0aXZl
CiAgICAgLy8gZW5kaWFubmVzcy4KLSAgICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJlYWRVaW50
MTYoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkKKyAg
ICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJlYWRVaW50MTYoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQpCiAgICAgewogICAgICAgICB1
aW50MTZfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNweSgmcmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zm
c2V0XSwgMik7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAKLSAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29uc3Qg
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkKKyAgICBzdGF0aWMg
aW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQpCiAgICAgewogICAgICAgICB1aW50MzJfdCBy
ZXN1bHQ7CiAgICAgICAgIG1lbWNweSgmcmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgNCk7
CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBCTVBJbWFnZVJlYWRlcihTY2FsYWJsZUlt
YWdlRGVjb2RlciogcGFyZW50LCBzaXplX3QgZGVjb2RlZEFuZEhlYWRlck9mZnNldCwgc2l6ZV90
IGltZ0RhdGFPZmZzZXQsIGJvb2wgdXNlc0FuZE1hc2spOwogCiAgICAgdm9pZCBzZXRCdWZmZXIo
U2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogYnVmZmVyKSB7IG1fYnVmZmVyID0gYnVmZmVyOyB9
Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9k
YXRhID0gJmRhdGE7IH0KKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KIAogICAgIC8vIERvZXMgdGhl
IGFjdHVhbCBkZWNvZGluZy4gSWYgfG9ubHlTaXplfCBpcyB0cnVlLCBkZWNvZGluZyBvbmx5CiAg
ICAgLy8gcHJvZ3Jlc3NlcyBhcyBmYXIgYXMgbmVjZXNzYXJ5IHRvIGdldCB0aGUgaW1hZ2Ugc2l6
ZS4gUmV0dXJucwpAQCAtMjcyLDcgKzI3Miw3IEBAIHByaXZhdGU6CiAgICAgU2NhbGFibGVJbWFn
ZURlY29kZXJGcmFtZSogbV9idWZmZXI7CiAKICAgICAvLyBUaGUgZmlsZSB0byBkZWNvZGUuCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKIAogICAgIC8vIEFu
IGluZGV4IGludG8gfG1fZGF0YXwgcmVwcmVzZW50aW5nIGhvdyBtdWNoIHdlJ3ZlIGFscmVhZHkg
ZGVjb2RlZC4KICAgICBzaXplX3QgbV9kZWNvZGVkT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVD
YWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9J
bWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAppbmRleCA2MDEyMDM3NGY5YzQzMTY4YTY1MjFiNjlj
NTRhZmJlMmEwMGY1NWY3Li40YTIxMjU1YThjMGZiNjc4ZTRhYWRkNzY2M2ViN2Y5MThlN2ZlOTRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWly
by9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcApAQCAtMzcs
NyArMzcsOSBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNv
bnN0CiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8
dWludDMyX3QqPihtX3BpeGVsc1B0cikpLAogICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMyLCBz
aXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpLCBzaXplKCkud2lkdGgoKSAqIHNpemVvZih1
aW50MzJfdCkpKTsKICAgICBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tleV90IHNfc3VyZmFjZURh
dGFLZXk7Ci0gICAgY2Fpcm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRhKHN1cmZhY2UuZ2V0KCksICZz
X3N1cmZhY2VEYXRhS2V5LCBtX3BpeGVscy5nZXQoKSwgW10odm9pZCogZGF0YSkgeyBzdGF0aWNf
Y2FzdDxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4oZGF0YSktPmRlcmVmKCk7IH0pOworICAg
IGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0YShzdXJmYWNlLmdldCgpLCAmc19zdXJmYWNlRGF0
YUtleSwgbV9waXhlbHMuZ2V0KCksIFtdKHZvaWQqIGRhdGEpIHsKKyAgICAgICAgc3RhdGljX2Nh
c3Q8RGF0YVNlZ21lbnQqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICB9KTsKIAogICAgIHJldHVybiBz
dXJmYWNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBlNmFiZTBkOTU0NGI2
YzE4NWM2NDVkZWNlMDlmMjNmOTU2NjYwN2NiLi5iOWVjMDFiOGFlOGU4ZDI5YmM3ODI1MjZlMDc2
NTI1NTFlMzU5YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzgsNyArMzgs
NyBAQCBHSUZJbWFnZURlY29kZXI6OkdJRkltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcAogCiBHSUZJbWFnZURlY29kZXI6On5HSUZJbWFn
ZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEdJRkltYWdlRGVj
b2Rlcjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKIHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURl
Y29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJ
bWFnZURlY29kZXIuaAppbmRleCAzNWRmMzNmNmRmYzQ4M2ZkODQ3MTM2NmFlNTNiYjBiOTYxY2Fl
ZDJlLi5jNzQ3MTk5OTliOTg2YzFjZWY4NDc4NzU5ZDIzNzE4YzkwNDJkM2ViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNv
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlRGVjb2Rlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFNjYWxh
YmxlSW1hZ2VEZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gImdpZiJfczsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAg
IGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CiAgICAgc2l6ZV90IGZyYW1lQ291
bnQoKSBjb25zdCBmaW5hbDsKICAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkg
Y29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCmluZGV4IDQyMTQ2ZTAzMjkzMjM2OTk3
ODllYjVlNDJhZjRjNzNkMzRhYjljYzYuLjEwODJmZGYwZGZmMjM5MWU1NjUzMGE0MWY4N2JhNDM5
ODIzMjc1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCkBAIC0yMzcsNyArMjM3LDcgQEAgcHVi
bGljOgogICAgIHsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQorICAgIHZvaWQgc2V0
RGF0YShXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkg
eyBtX2RhdGEgPSAmZGF0YTsgfQogICAgIC8vIEZJWE1FOiBoYWx0QXRGcmFtZSBzaG91bGQgYmUg
c2l6ZV90LgogICAgIGJvb2wgZGVjb2RlKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6R0lGUXVl
cnksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKTsKIApAQCAtMzE2LDYgKzMxNiw2IEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxHSUZGcmFtZUNvbnRleHQ+ID4gbV9mcmFtZXM7
CiAgICAgc2l6ZV90IG1fY3VycmVudERlY29kaW5nRnJhbWU7CiAKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOwogICAgIGJvb2wg
bV9wYXJzZUNvbXBsZXRlZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IGM3
MTdjNDVkMzA1N2MwNTUzNmVlNjA1MGY5Mzk3MDQ2ZDEwZGYyYTcuLmMwNzEzNDViOGJmMzY5Yjgw
MjcxZmJkZjBhMGNlMDE3NGYwNTAzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBA
IC01Miw3ICs1Miw3IEBAIElDT0ltYWdlRGVjb2Rlcjo6SUNPSW1hZ2VEZWNvZGVyKEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiAKIElDT0ltYWdlRGVjb2Rl
cjo6fklDT0ltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBJQ09JbWFnZURlY29kZXI6
OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQg
SUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNv
L0lDT0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCmluZGV4IGZiN2E5MDNiMmEwNzUzOTQ5MTdhYmJiZjEx
YjFjZWQ4M2ZmNDMyYTAuLjEwZWU5YjRkMmU4YzlkODg3ZTFkMmI4YmUxMzliYjc0MjcxZDU3YTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9J
Q09JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAg
ICAgLy8gU2NhbGFibGVJbWFnZURlY29kZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24o
KSBjb25zdCBmaW5hbCB7IHJldHVybiAiaWNvIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAg
ICBJbnRTaXplIHNpemUoKSBjb25zdCBmaW5hbDsKICAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5k
ZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdCBmaW5hbDsKICAgICBib29sIHNldFNp
emUoY29uc3QgSW50U2l6ZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAK
aW5kZXggMWM4NzFmNGQ1NjQ5MWJmNzc1ZTg1MDBjMTZkMGJiODk0ZDU0ZTZkYy4uOGZiOTIyMGVl
MzdmNmFkODE5MzgyMDc3NGNlMjJiMWQ1Y2MzYTU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURl
Y29kZXIuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBl
Z19zYXZlZF9tYXJrZXJfcHRyIG1hcmtlcikKICAgICAgICAgJiYgbWFya2VyLT5kYXRhWzExXSA9
PSAnXDAnOwogfQogCi1zdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRJ
Q0NQcm9maWxlKGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCitzdGF0aWMgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykK
IHsKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBmb3IgKGpwZWdfc2F2ZWRf
bWFya2VyX3B0ciBtYXJrZXIgPSBpbmZvLT5tYXJrZXJfbGlzdDsgbWFya2VyOyBtYXJrZXIgPSBt
YXJrZXItPm5leHQpIHsKQEAgLTMyMCw3ICszMjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYnl0
ZXNUb1NraXAgPSBzdGQ6Om1heChudW1CeXRlcyAtIGJ5dGVzVG9Ta2lwLCBzdGF0aWNfY2FzdDxs
b25nPigwKSk7CiAgICAgfQogCi0gICAgYm9vbCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkKKyAgICBib29sIGRlY29kZShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkK
ICAgICB7CiAgICAgICAgIG1fZGVjb2RpbmdTaXplT25seSA9IG9ubHlTaXplOwogCkBAIC03MjYs
NyArNzI2LDcgQEAgdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB9CiAKICNpZiBVU0UoTENNUykKLXZvaWQgSlBFR0ltYWdl
RGVjb2Rlcjo6c2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCit2b2lkIEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcv
SlBFR0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzAzYWE2NzgyMjAzY2JkNGNmYzgzZmRl
OGY4NzEyYjcwODFlM2FhOS4uZDJkN2ZhNmFiNDliNDI0N2FmZmI4ZTFmYmVlNDY5NTNiMGNiMDVj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
Zy9KUEVHSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKQEAgLTY4LDcgKzY4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgc2V0T3JpZW50YXRpb24oSW1hZ2VPcmllbnRh
dGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247IH0KICNpZiBV
U0UoTENNUykKLSAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmKTsKKyAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYpOwogI2VuZGlmCiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29k
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAv
SlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCmluZGV4IGJlY2Y2NDUwMjc3ZWViNzRiMDlkZTUyZWUx
ODJmZjZlMTFlZDI3NjIuLjIwNDczZjBlZWViYjU2YzcxMzE0ZjY1NTZiZGEwOTAzMzQ5MDc0NDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcy
MDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKQEAgLTM4
MCw3ICszODAsNyBAQCB2b2lkIEpQRUcyMDAwSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5
U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgfQogCiAgICAgc3RydWN0IFJlYWRlciB7
Ci0gICAgICAgIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGE7CisgICAgICAgIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhOwogICAgICAgICBzaXplX3Qgb2Zm
c2V0OwogICAgIH0gcmVhZGVyID0geyAqbV9kYXRhLCAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVj
b2Rlci5jcHAKaW5kZXggYzEyYzQ1OWE1YTNlNWIzNTFjNWJjYzYyYmYwMGI4YTI4MWJkNWJhMy4u
NGNiZDMyM2Q5YTc1MDI2ZWY4NjU4ZjM4MTZkZDczOGQzN2NhOGVkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0lt
YWdlRGVjb2Rlci5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVh
ZE9mZnNldCA9IDA7CiAgICAgfQogCi0gICAgYm9vbCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBzaXplT25seSwgdW5zaWduZWQgaGFsdEF0RnJhbWUp
CisgICAgYm9vbCBkZWNvZGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQmIGRhdGEsIGJvb2wgc2l6ZU9ubHksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKQogICAgIHsKICAg
ICAgICAgbV9kZWNvZGluZ1NpemVPbmx5ID0gc2l6ZU9ubHk7CiAgICAgICAgIFBOR0ltYWdlRGVj
b2RlciogZGVjb2RlciA9IHN0YXRpY19jYXN0PFBOR0ltYWdlRGVjb2Rlcio+KHBuZ19nZXRfcHJv
Z3Jlc3NpdmVfcHRyKG1fcG5nKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAppbmRl
eCAwMmYxYjA5ZGJjNzY1MTYwMWY5MjJkZGUyOWY4MDVhNjU4NzFlMmQyLi5iMWJlYzU1ZTc4YzQz
NDgwMWMyNTRhY2UwZGY1OTkzMWEzNmI3NGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rl
ci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgV0VCUEltYWdlRGVjb2Rlcjo6V0VCUEltYWdlRGVjb2Rl
cihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGUKIAogV0VCUElt
YWdlRGVjb2Rlcjo6fldFQlBJbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV0VCUElt
YWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQordm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6
ZGVjb2RlKHNpemVfdCBmcmFtZUluZGV4LCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBU
aGlzIGNhbiBiZSBleGVjdXRlZCBib3RoIGluIHRoZSBtYWluIHRocmVhZCAod2hlbiBub3QgdXNp
bmcgYXN5bmMgZGVjb2RpbmcpIG9yIGluIHRoZSBkZWNvZGluZyB0aHJlYWQuCiAgICAgLy8gV2hl
biBleGVjdXRlZCBpbiB0aGUgZGVjb2RpbmcgdGhyZWFkLCBhIGNhbGwgdG8gc2V0RGF0YSgpIGZy
b20gdGhlIG1haW4gdGhyZWFkIG1heSBjaGFuZ2UgdGhlIGRhdGEKICAgICAvLyB0aGUgV2ViUERl
bXV4ZXIgaXMgdXNpbmcsIGxlYXZpbmcgaXQgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLCBzbyB3
ZSBuZWVkIHRvIHByb3RlY3QgdGhlIGRhdGEuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+IHByb3RlY3RlZERhdGEobV9kYXRhKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHByb3RlY3RlZERhdGEobV9kYXRhKTsKICAgICBXZWJQ
RGF0YSBpbnB1dERhdGEgPSB7IHByb3RlY3RlZERhdGEtPmRhdGEoKSwgcHJvdGVjdGVkRGF0YS0+
c2l6ZSgpIH07CiAgICAgV2ViUERlbXV4U3RhdGUgZGVtdXhlclN0YXRlOwogICAgIFdlYlBEZW11
eGVyKiBkZW11eGVyID0gV2ViUERlbXV4UGFydGlhbCgmaW5wdXREYXRhLCAmZGVtdXhlclN0YXRl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dl
YnAvV0VCUEltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKaW5kZXggYWYzNjVlOWNmOWM3Y2U5NTM4YjY0
YmE3ODliZjAxN2Q0OGY2ZWRlMS4uZGQyOGJjODhkZjVjMGZhM2MxNTczNzg2OWIyNjA5NzNhYWEw
ZDIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgfldFQlBJbWFnZURlY29kZXIoKTsKIAogICAgIFN0cmluZyBmaWxl
bmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJ3ZWJwIl9zOyB9Ci0gICAg
dm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0
YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCkgZmluYWw7CiAgICAgU2NhbGFibGVJbWFn
ZURlY29kZXJGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7
CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcmFtZUNv
dW50OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmlu
ZGV4IGE3ZjQ1MDMyMGU5MDhjNmExZjVmMGY4OTU2MDkyYWUyNDc5NWEyNGEuLjM2ODcyMmEzNmY1
OGNjMGU3MmFmODc2NTVlYmFlNmNhNWQ0Yjk3OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC0yNDAsMTQgKzI0MCwxNCBAQCBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogCiAjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQog
ICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlw
ZUZsYXRSVEZEXSkgewotICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlw
ZUZsYXRSVEZELCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQo
aXRlbUluZGV4LCBrVVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7
CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAg
ICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAg
ICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRSVEZEKCpidWZmZXIpID8gUmVhZGVy
UmVzdWx0OjpSZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiAgICAgfQog
CiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRU
eXBlUlRGXSkgewotICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVJU
RiwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRl
eCwga1VUVHlwZVJURiwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYg
KG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFk
ZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJu
IGJ1ZmZlciAmJiByZWFkZXIucmVhZFJURigqYnVmZmVyKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5
cGUgOiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwpAQCAtMjU1LDcgKzI1NSw3IEBAIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAjZW5kaWYgLy8gIVBMQVRGT1JNKE1B
Q0NBVEFMWVNUKQogCiAgICAgaWYgKFtzdXBwb3J0ZWRJbWFnZVR5cGVzKCkgY29udGFpbnNPYmpl
Y3Q6dHlwZV0pIHsKLSAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIHR5cGUsIG1f
cGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIHR5
cGUsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNv
dW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQ
YXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYg
cmVhZGVyLnJlYWRJbWFnZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgdHlwZSwgaXRlbUluZm8u
cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVh
ZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IGQ5ZjQ4ZWQxYjM0MDVkMmRl
YTk3NzhjM2E2YzU3MmJjNTMyZmI5MzEuLmQ2NGI5NjgzNDczNzgzMmQyZWVkNjg4MjM2MDEyMjcw
NjU1ODUzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRm
b3JtUGFzdGVib2FyZElPUy5tbQpAQCAtNzksMTAgKzc5LDEwIEBAIHZvaWQgUGxhdGZvcm1QYXN0
ZWJvYXJkOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpIGNvbnN0CiAgICAgdHlwZXMg
PSBtYWtlVmVjdG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZXNdKTsKIH0K
IAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVy
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBj
b25zdAogewogICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0
ZWJvYXJkVHlwZTp0eXBlXSkKLSAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEp
OwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0zMzgsNyArMzM4LDcgQEAgaW50NjRfdCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKICAgICBy
ZXR1cm4gMDsKIH0KIAotaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5
cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYpCitpbnQ2NF90IFBsYXRm
b3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJp
bmcmKQogewogICAgIHJldHVybiAwOwogfQpAQCAtNjA5LDcgKzYwOSw3IEBAIFZlY3RvcjxTdHJp
bmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29u
c3QgU3RyaW5nJiBvCiAjZW5kaWYgLy8gUEFTVEVCT0FSRF9TVVBQT1JUU19QUkVTRU5UQVRJT05f
U1RZTEVfQU5EX1RFQU1fREFUQQogCiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURh
dGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpjb2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
ZXJpYWxpemVkQ3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9
PSBvcmlnaW4pIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5
cGVzKCkpCiAgICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAg
LTY3Miw3ICs2NzIsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpn
ZXQ8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pih2YWx1ZSk7CisgICAgICAgIGF1dG8gYnVm
ZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKICAgICAgICAgW3JlcHJl
c2VudGF0aW9uc1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvclR5cGU6KE5TU3RyaW5nICopY29jb2FUeXBlXTsKICAgICB9KTsKIApAQCAtNzQ2LDcgKzc0
Niw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsU3RyaW5nc0ZvclR5
cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdzOwogfQogCi1S
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVm
ZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25z
dAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewog
ICAgIGlmICghaW5kZXgpCiAgICAgICAgIHJldHVybiBidWZmZXJGb3JUeXBlKHR5cGUpOwpAQCAt
NzYxLDcgKzc2MSw3IEBAIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplCiAKICAgICBpZiAoIVtwYXN0
ZWJvYXJkSXRlbSBjb3VudF0pCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5k
ZXg6MF0pOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0ZW0g
b2JqZWN0QXRJbmRleDowXSk7CiB9CiAKIFN0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRT
dHJpbmcoc2l6ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCmluZGV4IDU0
NDY1M2M0NDAzZDI2MDQwYTU1ZDIzZTkzNjkxYmZlZGNjOTJiNDIuLmJmZTM2YWJkOTc0M2E2YmE0
NWU0M2MwZThiN2Q5YWUxYWU5MDZmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCkBAIC04Miw3ICs4Miw3IEBAIEBlbmQKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogUHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRlcihj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUHJldmlld0NvbnZlcnRlclByb3ZpZGVy
JiBwcm92aWRlcikKLSAgICA6IG1fcHJldmlld0RhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgp
IH0KKyAgICA6IG1fcHJldmlld0RhdGEgeyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUo
KSB9CiAgICAgLCBtX29yaWdpbmFsUmVzcG9uc2UgeyByZXNwb25zZSB9CiAgICAgLCBtX3Byb3Zp
ZGVyIHsgcHJvdmlkZXIgfQogICAgICwgbV9wbGF0Zm9ybURlbGVnYXRlIHsgYWRvcHROUyhbW1dl
YlByZXZpZXdDb252ZXJ0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZToqdGhpc10p
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXgg
YTE1MTZhZTM0ZjgyOWJhNzJjYTU2MWQ5NWU0ZmM5NzhiOTUyZDM4Zi4uM2U1NjMzZmJkYTczNWQ1
YTExNDVlMjUxY2M5ODE4OTVkMjQyMzBmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMgdm9pZCB3cml0
ZUZpbGVXcmFwcGVyQXNSVEZEQXR0YWNobWVudChOU0ZpbGVXcmFwcGVyICp3cmFwcGVyLCBjb25z
dCBTdHJpbgogICAgIGlmICghUlRGRERhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIG5ld0No
YW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5z
ZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShSVEZERGF0YSku
cHRyKCksIGxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4
dCk7CisgICAgbmV3Q2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoUlRGRERh
dGEpLnB0cigpLCBsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgcGFzdGVib2FyZE5hbWUsIGNv
bnRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFn
ZSYgcGFzdGVib2FyZEltYWdlKQpAQCAtMjg1LDcgKzI4NSw3IEBAIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogICAgIH0KIAogICAgIG1fY2hhbmdlQ291bnQgPSB3cml0ZVVSTEZv
clR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkSW1hZ2UudXJsLCBjb250
ZXh0KCkpOwotICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVi
b2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGltYWdlRGF0YSkucHRyKCksIGxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bh
c3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoU2hhcmVk
QnVmZmVyOjpjcmVhdGUoaW1hZ2VEYXRhKS5wdHIoKSwgbGVnYWN5VElGRlBhc3RlYm9hcmRUeXBl
KCksIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgaWYgKGF1dG8gYXJjaGl2ZURh
dGEgPSBwYXN0ZWJvYXJkSW1hZ2UuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkgewogICAgICAgICBt
X2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT5zZXRCdWZmZXJGb3JUeXBlKGFyY2hpdmVEYXRhLmdldCgpLCBXZWJBcmNoaXZlUGJvYXJkVHlw
ZSwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIApAQCAtMzQ0LDcgKzM0NCw3IEBAIHN0
YXRpYyBTdHJpbmcgcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYg
dHlwZSwgc3RkOjpvcHRpb25hbDxzCiAgICAgcmV0dXJuIHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUo
dHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCi1zdGF0aWMgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBT
dHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRT
dHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQorc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250
ZXh0KQogewogICAgIGlmIChpdGVtSW5kZXgpCiAgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoKml0ZW1JbmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNv
bnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
UGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBh
c3RlYm9hcmRNYWMubW0KaW5kZXggYjQ5YWQ3YzA0YTUyODE4MmE1MWI4YTNhOTg0ZDdkOTA0ZDYz
OTc5OS4uYTdmZTcyNTU0Mzc2NjVlOGI4YTBjNzQ1M2QzMDQ3NDlkNDU2MmY2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1t
CkBAIC02OCwxMiArNjgsMTIgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZl
Y3RvcjxTdHJpbmc+JiB0eXBlcykgY29uc3QKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5n
PihbbV9wYXN0ZWJvYXJkIHR5cGVzXSk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdAogewog
ICAgIE5TRGF0YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6cGFzdGVib2FyZFR5
cGVdOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQo
KSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0p
LmdldCgpKTsKIH0KIAogaW50IFBsYXRmb3JtUGFzdGVib2FyZDo6bnVtYmVyT2ZGaWxlcygpIGNv
bnN0CkBAIC0yMTgsNyArMjE4LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJk
Ojp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KIHsKICAgICBM
aXN0SGFzaFNldDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRUeXBlczsKICAgICBpZiAoTlNEYXRhICpz
ZXJpYWxpemVkQ3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6QChQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRh
ID0gUGFzdGVib2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3Jp
Z2luKCkgPT0gb3JpZ2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9y
ZGVyZWRUeXBlcygpKQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlw
ZSk7CkBAIC0yNjMsOCArMjYzLDggQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRl
KGNvbnN0IFBhc3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgICAgICBpZiAocGxhdGZvcm1U
eXBlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVm
ZmVyKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgp
KQorICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4o
c3RyaW5nT3JCdWZmZXIpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBz
dGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEo
KSkKICAgICAgICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6cGxhdGZvcm1EYXRhLmdl
dCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRv
IHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpAQCAtMzQxLDcgKzM0
MSw3IEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKQogICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkIGRlY2xh
cmVUeXBlczpjcmVhdGVOU0FycmF5KHBhc3RlYm9hcmRUeXBlcykuZ2V0KCkgb3duZXI6bmlsXTsK
IH0KIAotaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQor
aW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVy
KiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFjYW5X
cml0ZVBhc3RlYm9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CkBA
IC00NDYsNyArNDQ2LDcgQEAgc3RhdGljIFN0cmluZyB3ZWJTYWZlTUlNRVR5cGVGb3JNb2Rlcm5Q
YXN0ZWJvYXJkVHlwZShOU1Bhc3RlYm9hcmRUeXBlIHBsYXRmb3JtVHkKICAgICByZXR1cm4geyB9
OwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJk
OjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0
eXBlKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFk
QnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBj
b25zdAogewogICAgIGlmICghaW5kZXgpCiAgICAgICAgIHJldHVybiBidWZmZXJGb3JUeXBlKHR5
cGUpOwpAQCAtNDU3LDcgKzQ1Nyw3IEBAIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplCiAKICAgICBp
ZiAoTlNEYXRhICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6dHlwZV0pIHsKICAgICAgICAgYXV0
byBuc0RhdGEgPSBhZG9wdE5TKGRhdGEuY29weSk7Ci0gICAgICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC01MDcsOCArNTA3LDggQEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVt
PiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAg
aWYgKCFwbGF0Zm9ybVR5cGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihzdHJpbmdP
ckJ1ZmZlcikpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0
PFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0Rh
dGEoKSkKKyAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZl
cj4+KHN0cmluZ09yQnVmZmVyKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRh
ID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNE
YXRhKCkpCiAgICAgICAgICAgICAgICAgW2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkg
Zm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3Ry
aW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlLmgKaW5kZXggNjgxM2Q1ZGE3ZGNiMGZjMjU5ZjFiZDFlZDBhNTRjMWExYTlmZDljZi4uNzk2
NTU0ZjRjOTc2NDUxNDAxZTFhMTIzNzQ2ODcwNDBiMjRiMWNjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclBy
aXZhdGUuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBNZWRpYVNhbXBsZTsKIGNsYXNzIE1lZGlh
U3RyZWFtUHJpdmF0ZTsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOwogY2xhc3MgUGxh
dGZvcm1BdWRpb0RhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiBzdHJ1Y3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOwogCkBAIC01
OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBB
dWRpb1ZpZGVvU2VsZWN0ZWRUcmFja3Mgc2VsZWN0VHJhY2tzKE1lZGlhU3RyZWFtUHJpdmF0ZSYp
OwogCi0gICAgdXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+
OworICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
ZG91YmxlKT47CiAgICAgdmlydHVhbCB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYm
KSA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgPSAwOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXJQcml2YXRlTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKaW5kZXggYzI1ZGY5MTU3NGE2NWJj
NDFiZGI3MDY3OGRjNDc3MjQ4MzZkZDE0NS4uNDk4ZDRlZTEzNDBjNGI5NDAwMWI2MGMzNDQ3OWI3
ZjcyZDVjOGU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcApAQCAtOTMs
NyArOTMsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6Z2VuZXJhdGVNb2NrQ291
bnRlclN0cmluZygpCiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpmZXRjaERhdGEo
RmV0Y2hEYXRhQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2J1ZmZlckxvY2sgfTsKICAg
ICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlIHsgbV9idWZmZXIuY2hhcmFjdGVyczgoKSwgbV9i
dWZmZXIubGVuZ3RoKCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLmgKaW5kZXggNWVkOThjNDEzMGI5YmUwMzUyMzdiZjJlZjUwNjNmNmIy
ZWNkYzA1NS4uOWMyYzc5N2I4MTk1MTJkOGZkNTc5MDE1ZGMzYjZlNDA1ZTNiYzYwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAg
LTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIo
TWVkaWFTYW1wbGUmKTsKICAgICB2b2lkIGFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBs
YXRmb3JtQXVkaW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIGNvbnN0IFdU
Rjo6TWVkaWFUaW1lJiwgc2l6ZV90KTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKLSAgICB2
b2lkIGZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYsIGRvdWJsZSk+JiYpOworICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYpOwogCiAgICAg
dm9pZCBwYXVzZSgpOwogICAgIHZvaWQgcmVzdW1lKCk7CkBAIC0xMDUsNyArMTA1LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgZmluaXNoZWRGbHVzaGluZ1NhbXBsZXMoKTsKICAgICB2b2lkIGNv
bXBsZXRlRmV0Y2hEYXRhKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKIAogICAgIGJv
b2wgbV9oYXNBdWRpbyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1ZpZGVvIHsgZmFsc2UgfTsK
QEAgLTExOCw3ICsxMTgsNyBAQCBwcml2YXRlOgogCiAgICAgTG9jayBtX2RhdGFMb2NrOwogICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9j
ayk7Ci0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBk
b3VibGUpPiBtX2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOworICAgIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0
Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXI7CiAKICAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlw
dGlvblJlZj4gbV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I+IG1fYXVkaW9Db21wcmVzc29yOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29y
ZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IGM3
MWFhODRhZmMxZWMxMDAzZDljNzRiNWQ3ZjEzZmVlNDM3NjVlM2EuLjg0ODQxMDBlYWM1ZTExNWU5
YjBjZjAxMjBiYWJmNzhmYjFhMTI3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlh
UmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTQ5Myw3ICs0OTMsNyBAQCB2b2lkIE1l
ZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpzdG9wUmVjb3JkaW5nKCkKICAgICB9KTsKIH0KIAot
dm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZldGNoRGF0YShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBkb3VibGUp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKIApAQCAtNTM4LDcgKzUzOCw3IEBAIHZv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAot
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRh
KCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6dGFrZURhdGEoKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07CiAg
ICAgcmV0dXJuIG1fZGF0YS50YWtlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKaW5kZXggYTliMjlkNTllOWFhM2I0NjU1NDE1YmQ4YmVm
MDk4NGM1NDRiNzNmMC4uY2RlZTYwMzUyM2NkNjY5NDVmNDI4ZjY5NDc4OTYwZjZmZDc0Yzc3YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIu
aApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBEYXRh
VVJMRGVjb2RlciB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5jcHAKaW5kZXggNjIzNjRkNzEzYzk1YTlmODQzYzdkMjljMDFmMGRlYjlhZTZkMTc1YS4uMGM5
MDgxN2M0ZTliNDFmMzQ5YTQxYWU2NGI3MTkwNmI5NTFlYjg5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTQxMiwxMyArNDEyLDEzIEBAIHVp
bnQ2NF90IEZvcm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICByZXR1cm4gKm1fbGVu
Z3RoSW5CeXRlczsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvcm1EYXRh
Ojphc1NoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6
YXNTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxl
bWVudHMpIHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rvcjx1aW50
OF90Pj4oZWxlbWVudC5kYXRhKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
LSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7Cisg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CiB9CiAKIFVSTCBGb3Jt
RGF0YTo6YXNCbG9iVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuaAppbmRleCAxMDgyODExMzFmODNlOTkzNzBmYzUwOTc4MzNjYzUwZWU4YWRiZGFh
Li5lOWQzNDQzZjhiNWM2ODI0NDY2NTZjMTg4MDU2NTdjYzI5ZDJkODM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CiBjbGFzcyBET01Gb3JtRGF0
YTsKIGNsYXNzIEZpbGU7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hh
cmVkQnVmZmVyOwogCiBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKICAgICBzdHJ1Y3QgRW5jb2Rl
ZEZpbGVEYXRhOwpAQCAtMjMyLDcgKzIzMiw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8
Rm9ybURhdGFFbGVtZW50PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9
CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91
bmRhcnk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBhc1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBib29sIGFsd2F5c1N0
cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBzZXRBbHdh
eXNTdHJlYW0oYm9vbCBhbHdheXNTdHJlYW0pIHsgbV9hbHdheXNTdHJlYW0gPSBhbHdheXNTdHJl
YW07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGUuaAppbmRleCBmYWZkZmU4N2M4MzdlNjE1N2QyZjEzZTlhN2NhMDA5NjlkNTBiMWM3Li40YmVi
Y2I1MDk4ZDE1YzI5NjZlZDhjN2VlMTM2YWUzYTJhZTRhMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCkBAIC04NCw3ICs4NCw3IEBA
IGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTeW5jaHJvbm91c0xv
YWRlck1lc3NhZ2VRdWV1ZTsKIGNsYXNzIFRpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IDgx
OGUxODE4NDUxOTY3YWI1MmQxOThkOTU4N2IyMGExNDQ0NzhkZDkuLmJhOGZkNGZmNGYxZTQxYzlh
ZDRmYTc0YTQyYmU0ZTJiZDExYWE4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zNiw3ICszNiw3
IEBAIFJlc291cmNlSGFuZGxlQ2xpZW50OjpSZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVs
dDsKIAogUmVzb3VyY2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVm
YXVsdDsKIAotdm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNv
dXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBkaWRSZWNlaXZlRGF0YShoYW5k
bGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5j
b2RlZERhdGFMZW5ndGgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCmluZGV4IGI2MzM3ZDU2Y2U4Y2Q5YmVmZjlk
ZmJlMTEzNjYyYmM3NzU2YjY1MzcuLmM0ZjA1NDg1ZjI4NzBiMTE2ZGE3Yzc2MGQzYzBmY2U5NmVj
MmI0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlQ2xpZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5k
bGU7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGVudW0gQ2FjaGVTdG9yYWdlUG9saWN5IHsKICAgICBTdG9yYWdlQWxs
b3dlZCwKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5k
RGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1
bnNpZ25lZCBsb25nIGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90Kiwg
dW5zaWduZWQsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIHsgfQotICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIAogICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcAppbmRleCA4OGRlZGZhNDVjM2Y0YzQzYTM4MTUyODBkYTVhNDFlMjY5NzViNzFm
Li5mNzAwMzU1ZDU2OGIwNDJhNmFkZjEwNzBkYmI4MzgxOTI1MzY5NGFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2Vp
dmVEYXRhKENGRAogICAgICAgICAKICAgICAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJl
Y2VpdmVEYXRhKGhhbmRsZT0lcCkgKCVzKSIsIGhhbmRsZSwgaGFuZGxlLT5maXJzdFJlcXVlc3Qo
KS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBoYW5kbGUtPmNsaWVu
dCgpLT5kaWRSZWNlaXZlQnVmZmVyKGhhbmRsZSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZ2V0KCkpLCBvcmlnaW5hbExlbmd0aCk7CisgICAgICAgIGhhbmRsZS0+Y2xpZW50
KCktPmRpZFJlY2VpdmVCdWZmZXIoaGFuZGxlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdl
dCgpKSwgb3JpZ2luYWxMZW5ndGgpOwogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1
ZXVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9S
YW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IGUyYzM1ZWQzMTBiMzExMDY1
MTE2YzhmYzg2YzJlNDAyOWE4MmM5YTQuLjAwOGUyMjZmZjkxOTAwNGI0NTE0OGEyNDcyNjExNjE1
MDk4OTYyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTI0Myw3ICsyNDMs
NyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdm9pZCBk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpIGZpbmFsCisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBmaW5hbAogICAgIHsKICAg
ICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKCFtX2dlbmVyYXRvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLmgKaW5kZXggNDA0ODg1YWU2Mzc2ZmNlNjgwNDBkMmEwNWMwMGJl
YzQ3ZmUxNmFhOC4uY2U0YzI1NDVjZGUwZjJmNDZhYzMzOGY5NmM0OTA4OGViNDVkMDkyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNV
UkxTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgUGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBj
bGFzcyBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ7CiBlbnVtIGNsYXNzIFNob3Vs
ZENvbnRpbnVlUG9saWN5Q2hlY2sgOiBib29sOwpAQCAtMTU4LDcgKzE1OCw3IEBAIFdFQkNPUkVf
RVhQT1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsKIC0gKHZv
aWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVz
b3VyY2Ugc2VudEJ5dGVzOih1bnNpZ25lZCBsb25nIGxvbmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNU
b0JlU2VudDoodW5zaWduZWQgbG9uZyBsb25nKXRvdGFsQnl0ZXNUb0JlU2VudDsKIC0gKHZvaWQp
cmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3Vy
Y2UgcmVjZWl2ZWRSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVz
cG9uc2UgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtIChCT09M
KXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291
cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KXJlc3BvbnNlOwotLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpZGF0YTsKKy0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJilkYXRhOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUg
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0
Oihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSByZXF1ZXN0OihXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0aW9u
SGFuZGxlcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFSZXNvdXJjZSopcmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51
bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZhaWxl
ZFdpdGhFcnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNl
c3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVO
U1VSTFNlc3Npb24ubW0KaW5kZXggZTU5MjI3ZTM4YWEwNjEyZDkyN2M4MjU5ZDAxNDdkYTRiZjZh
NzY5Yi4uOGM4OWQ5Mzg2NTc5MzNhMWRhMjkwMzE5OTE1ODRjNGRiMmZhYTlhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNz
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5tbQpAQCAtNjA4LDcgKzYwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
ZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNl
UmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcg
bG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hl
Y2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92
ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBA
IC02NTIsNyArNjUyLDcgQEAgYm9vbCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6
OnNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmMKICAgICByZXR1cm4gW21f
dGFzayByZXNvdXJjZTomcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTpyZXNwb25zZV07CiB9
CiAKLXZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiByZXNvdXJjZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXNrTG9jayB9OwogICAg
IGlmICghbV90YXNrKQpAQCAtOTE1LDcgKzkxNSw3IEBAIC0gKEJPT0wpcmVzb3VyY2U6KFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3QgUmVz
CiAgICAgcmV0dXJuIHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29u
dGVudFJhbmdlKS5pc0VtcHR5KCk7CiB9CiAKLS0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKWRhdGEKKy0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVz
b3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JilkYXRhCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291
cmNlID09IF9yZXNvdXJjZSk7CiAgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlv
bjpbc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSld
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
RG93bmxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxE
b3dubG9hZC5jcHAKaW5kZXggYzM2ZTFmODg3NjQzMDQ2MGNlNzUwYTNiOGM2NThjNzM0ZWNiMTUw
OC4uMzQ5NDQ1OTI1NGFjOTNmYzE5Y2IxMjE1MGE2MWJjMmJjZWQwMmQ2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAK
QEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVSZXNw
b25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlc3BvbnNlJiYgcgogfQogCiAKLXZvaWQg
Q3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVm
ZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaAppbmRleCBhM2FhMGNmNWZjZDI5
NTViYjdiMTZiMTFhMWE4MWNhNzRhZTYxYzhkLi5jZGU0NDQ1Nzc1Zjc0NDIzMzA1MzBiNjViMTM1
N2JhNmJmZDliYjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybERvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxEb3dubG9hZC5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgUmVm
PEN1cmxSZXF1ZXN0PiBjcmVhdGVDdXJsUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2
b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5z
aWduZWQgbG9uZyBsb25nKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVz
cG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBj
dXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92
ZXJyaWRlOworICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29t
cGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwg
Q2VydGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5k
ZXggZDYzNWY3OWNkMWVjNjIxYWRmZWI2ZGNjNDkzNmVlZWY1MGNmOWFkYy4uMDkwZDAzOWJhNDVk
ZTEwMjhlZGY3Njg0YzZkN2QyZjI5NmUzYTM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApA
QCAtMTE5LDcgKzExOSw3IEBAIEN1cmxNdWx0aXBhcnRIYW5kbGU6OkN1cmxNdWx0aXBhcnRIYW5k
bGUoQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudCYgY2xpZW50LCBjb25zCiAKIH0KIAotdm9pZCBD
dXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKK3ZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChtX3N0YXRlID09IFN0YXRl
OjpFbmQpCiAgICAgICAgIHJldHVybjsgLy8gVGhlIGhhbmRsZXIgaXMgY2xvc2VkIGRvd24gc28g
aWdub3JlIGV2ZXJ5dGhpbmcuCkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0
SGFuZGxlOjpkaWRDb21wbGV0ZSgpCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkgewog
ICAgICAgICAvLyBJdCBzZWVtcyB3ZSBhcmUgc3RpbGwgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHBy
b2Nlc3NpbmcuCiAgICAgICAgIC8vIFB1c2ggb3V0IHRoZSByZW1haW5pbmcgZGF0YS4KLSAgICAg
ICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOworICAgICAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX2J1
ZmZlcikpKTsKICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmQ7CiAgICAgfQogCkBAIC0yMzQs
MTMgKzIzNCwxMyBAQCBib29sIEN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250ZW50KCkK
IAogICAgICAgICBpZiAoIWNoZWNrRm9yQm91bmRhcnkoYm91bmRhcnlTdGFydCwgbGFzdFBhcnRp
YWxNYXRjaCkgJiYgYm91bmRhcnlTdGFydCA9PSBub3RGb3VuZCkgewogICAgICAgICAgICAgLy8g
RGlkIG5vdCBmaW5kIHRoZSBib3VuZGFyeSBzdGFydCwgYWxsIGRhdGEgdXAgdG8gdGhlIGxhc3RQ
YXJ0aWFsTWF0Y2ggaXMgb2suCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZy
b21NdWx0aXBhcnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEo
KSwgbGFzdFBhcnRpYWxNYXRjaCkpOworICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURh
dGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFz
dFBhcnRpYWxNYXRjaCkpOwogICAgICAgICAgICAgbV9idWZmZXIucmVtb3ZlKDAsIGxhc3RQYXJ0
aWFsTWF0Y2gpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAg
ICAgLy8gVGhlcmUgd2FzIGEgYm91bmRhcnkgc3RhcnQgKG9yIGVuZCB3ZSdsbCBjaGVjayB0aGF0
IGxhdGVyKSwgcHVzaCBvdXQgcGFydCBvZiB0aGUgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlk
UmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZSht
X2J1ZmZlci5kYXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVj
ZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEo
KSwgYm91bmRhcnlTdGFydCkpOwogICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgYm91bmRhcnlT
dGFydCArIG1fYm91bmRhcnkubGVuZ3RoKCkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVu
ZEJvdW5kYXJ5OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCmluZGV4IDVjMDhiY2M1ZWIzZTRi
YmNjMDI5YjQ3Njc4NjhmNDNlMmY5NWMzNDEuLjlhMWExYmJkMTkzOGExNGY2OWZjY2VlM2YwZjg5
Yjk3YTRhMjE4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQ7CiBjbGFz
cyBDdXJsUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEN1cmxNdWx0aXBh
cnRIYW5kbGUoQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudCYsIGNvbnN0IFN0cmluZyYpOwogICAg
IH5DdXJsTXVsdGlwYXJ0SGFuZGxlKCkgeyB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkQ29tcGxldGUoKTsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVs
dGlwYXJ0SGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCmluZGV4IGZkMTNmZDM4MTMxNDNjYjI2NTli
OGZkMWRiMjQ0NDc2NWU5OGE1ODAuLmM4MTM4ODZhOGQ1YzVmYTZjMTJkMTQxMzMxOTEwMWFmMjUw
MmEyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaApAQCAtMjgsMTIgKzI4LDEy
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxSZXNwb25zZTsKLWNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxN
dWx0aXBhcnRIYW5kbGVDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxTaGFyZWRCdWZmZXI+
JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB+Q3Vy
bE11bHRpcGFydEhhbmRsZUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggYWNkODhlMWIwMjliOWIx
ZTdmMTRiN2QxNDAzMjkyNmI5MzE3NWEwZi4uZDgyZGQzYzEwYWM2NDcxMzU5OTFmZDdhZTY2OTdl
OWQ4ZTMxM2U4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgc2l6ZV90IEN1cmxSZXF1
ZXN0OjpkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmIGhlYWRlcikKIAogLy8gY2FsbGVkIHdpdGgg
ZGF0YSBhZnRlciBhbGwgaGVhZGVycyBoYXZlIGJlZW4gcHJvY2Vzc2VkIHZpYSBoZWFkZXJDYWxs
YmFjawogCi1zaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQorc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JD
YW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBD
dXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZUhlYWRlckZyb21NdWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGhlYWRlcnMpCiAgICAgaW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBB
Y3Rpb246Ok5vbmUpOwogfQogCi12b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21N
dWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0Ojpk
aWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQogewogICAgIGlmIChpc0NvbXBsZXRlZE9yQ2FuY2VsbGVkKCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTc3Nyw3ICs3NzcsNyBAQCBjb25zdCBTdHJpbmcmIEN1cmxSZXF1ZXN0OjpnZXRE
b3dubG9hZGVkRmlsZVBhdGgoKQogICAgIHJldHVybiBtX2Rvd25sb2FkRmlsZVBhdGg7CiB9CiAK
LXZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3du
bG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQog
ewogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZG93bmxvYWRNdXRleCB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaApp
bmRleCA2YmQ4YTZiZmJhMzc1MmNlZGRkYmM1MDA5ZWFlODNjNGYwZWVkNjQxLi4zYzdjZGQ4ODNl
YjYyYmZlOTJjZjA0NDVlZDI5YmQyNmVjZTNlOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaApAQCAtNDIsNyArNDIsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDdXJsUmVxdWVzdENsaWVudDsKIGNsYXNzIE5ldHdv
cmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3luY2hyb25vdXNMb2FkZXJN
ZXNzYWdlUXVldWU7CiAKIGNsYXNzIEN1cmxSZXF1ZXN0IDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPEN1cmxSZXF1ZXN0PiwgcHVibGljIEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50LCBw
dWJsaWMgQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudCB7CkBAIC0xMjIsOSArMTIyLDkgQEAgcHJp
dmF0ZToKICAgICBDVVJMKiBzZXR1cFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IHdp
bGxTZW5kRGF0YShjaGFyKiwgc2l6ZV90LCBzaXplX3QpOwogICAgIHNpemVfdCBkaWRSZWNlaXZl
SGVhZGVyKFN0cmluZyYmKTsKLSAgICBzaXplX3QgZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1
ZmZlcj4mJik7CisgICAgc2l6ZV90IGRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0
IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21N
dWx0aXBhcnQoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkQ29tcGxldGVUcmFuc2ZlcihDVVJMY29kZSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRDYW5jZWxUcmFuc2ZlcigpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluYWxpemVU
cmFuc2ZlcigpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIHByaXZhdGU6CiAgICAgTmV0d29ya0xvYWRN
ZXRyaWNzIG5ldHdvcmtMb2FkTWV0cmljcygpOwogCiAgICAgLy8gRG93bmxvYWQKLSAgICB2b2lk
IHdyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwor
ICAgIHZvaWQgd3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgY2xvc2VEb3dubG9hZEZpbGUoKTsKICAgICB2b2lk
IGNsZWFudXBEb3dubG9hZEZpbGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAppbmRleCAwOGM4NmM3ZDQ2
ODRiYTZmNzhkNjE2YjY4ZDA2OTA0YzM3YTk2Njc3Li4zNDc5ODMyZjU3NmQ0MTI4YWZhNTFjODE0
MjRjY2ZkNzQxZGY2YWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFz
cyBDdXJsUmVxdWVzdDsKIGNsYXNzIEN1cmxSZXNwb25zZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0
cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsUmVxdWVzdENsaWVudCB7CiBwdWJs
aWM6CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlk
U2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNp
Z25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVC
dWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9h
ZE1ldHJpY3MmJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihD
dXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYpID0gMDsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCBlZDA1ZGU3YWVlOTMy
MWU5ZmQwMzgxZmM3M2RjZTI3OTY3ZGZjZDgxLi4zMDVkNGU1YzlmYzI3MDc3NTc4N2IwZjlhOTE5
NzljMDg4ODlhOGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAg
LTE0Miw3ICsxNDIsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlk
UmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQogICAgIH0pOwogfQogCi12
b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJs
UmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDdXJsUmVzb3VyY2VI
YW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAppbmRleCA2ZDU1ODY0NDUy
ZmQ0NmVlNzgwMGU5MzEyM2IxMjhiZGM2NGNlNDg3Li5kYWYwYTU5YTRlNTg2ZDcxMTRhYmI0ZTVl
ZjljNTRmNmE4YmVmYzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaApAQCAt
NTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVx
dWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0
b3RhbEJ5dGVzVG9CZVNlbnQpIGZpbmFsOwogICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25z
ZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSBmaW5hbDsKLSAgICB2b2lkIGN1cmxEaWRS
ZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7Cisg
ICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVx
dWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRGYWls
V2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8m
JikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCBiYzRkYWFmYmYy
MWExNWMwZTZkZDFhY2Q0NjIyYWZhNTZiN2I4ZDVkLi4xZjRhMTkzMTMzMTJjNWRkNmE0OGFkNTMz
OWRmZDJjM2I1ZGVjMjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0zMSwx
MiArMzEsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9h
ZGVyQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4g
ewogcHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQoKSA9IGRl
ZmF1bHQ7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVm
ZmVyJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0
ZS5tbQppbmRleCAzNWQ1MjYxNTE3ZWY0ZjA0MzM2MWQ1ZDEwMGZkNzhkNmM4ZDA5ZmI3Li4zMTVl
MDY1MTUzMGRjZGIwMjgwMTY1NGI3NTdkODE0NzNjMjBmZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCkBA
IC0zMDAsNyArMzAwLDcgQEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKilj
b25uZWN0aW9uIGRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRhIGwKICAgICAgICAgLy8gRklY
TUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc5MwogICAgICAg
ICAvLyAtMSBtZWFucyB3ZSBkbyBub3QgcHJvdmlkZSBhbnkgZGF0YSBhYm91dCB0cmFuc2ZlciBz
aXplIHRvIGluc3BlY3RvciBzbyBpdCB3b3VsZCB1c2UKICAgICAgICAgLy8gQ29udGVudC1MZW5n
dGggaGVhZGVycyBvciBjb250ZW50IHNpemUgdG8gc2hvdyB0cmFuc2ZlciBzaXplLgotICAgICAg
ICBtX2hhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIobV9oYW5kbGUsIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSwgLTEpOworICAgICAgICBtX2hhbmRs
ZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIobV9oYW5kbGUsIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZ2V0KCkpLCAtMSk7CiAgICAgfTsKIAogICAgIFtzZWxmIGNhbGxGdW5jdGlvbk9u
TWFpblRocmVhZDpXVEZNb3ZlKHdvcmspXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBmNDk4NmIwMDEwOGIxNzhmNjQ3ZTc2ZTczNGNhMmMz
ZjczYzA3NGJlLi44NWY5NmQ4NWQyYjM3MmNmYzIxNzFhODM0MTFkNTI4NjkyMDczY2Q0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0zNTYs
NyArMzU2LDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29u
c3QgU3RyaW5nJiB0eXBlKQogCiBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVDb3VudGVyIGZpbmFsIDog
UGFzdGVib2FyZEZpbGVSZWFkZXIgewogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmlu
ZyYpIGZpbmFsIHsgKytjb3VudDsgfQotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgZmluYWwgeyAr
K2NvdW50OyB9CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsIHsgKytjb3VudDsgfQogCiAgICAgdW5zaWdu
ZWQgY291bnQgeyAwIH07CiB9OwpAQCAtOTY2LDcgKzk2Niw3IEBAIHN0YXRpYyBIR0xPQkFMIGNy
ZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYKICAgICByZXR1cm4gbWVtT2JqOwogfQogCi1zdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9i
YWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKK3N0YXRpYyBIR0xPQkFMIGNy
ZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkK
IHsKICAgICBIR0xPQkFMIG1lbU9iaiA9IEdsb2JhbEFsbG9jKEdQVFIsIGRhdGEtPnNpemUoKSk7
CiAgICAgaWYgKCFtZW1PYmopIApAQCAtOTg2LDcgKzk4Niw3IEBAIHN0YXRpYyBIR0xPQkFMIGNy
ZWF0ZUdsb2JhbEltYWdlRmlsZUNvbnRlbnQoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVy
biBtZW1PYmo7CiB9CiAKLXN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChj
b25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRhKQorc3Rh
dGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJp
bmcmIGZpbGVOYW1lLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmIChm
aWxlTmFtZS5pc0VtcHR5KCkgfHwgIWRhdGEpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTA2Myw3
ICsxMDYzLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsKQogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgIWNh
Y2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSkgfHwgIWNhY2hl
ZEltYWdlLT5pc0xvYWRlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTaGFyZWRCdWZmZXIq
IGltYWdlQnVmZmVyID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5k
ZXJlcigpKS0+ZGF0YSgpOworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVy
ID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0
YSgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIgfHwgIWltYWdlQnVmZmVyLT5zaXplKCkpCiAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApp
bmRleCA2NTI3MjUwZTVhYmNkZGJhMDAwMmIwZmJjZTY1NjVkMmY1ODY1ZDA2Li44NGZhMjljZTFm
MzAwZmUyOTBiMDQxNDY0OGYwZjcyOTBhN2NiZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDRE1GYWN0b3J5LmNwcApAQCAtNjMsNyArNjMsNyBAQCBib29sIE1vY2tDRE1GYWN0b3J5
OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKICAgICByZXR1cm4g
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShrZXlTeXN0ZW0sICJvcmcud2Via2l0Lm1vY2siKTsKIH0K
IAotdm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJp
bmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYga2V5cykKK3ZvaWQgTW9ja0NETUZh
Y3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBrZXlzKQogewogICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9zZXNzaW9ucy5hZGQoaWQsIFdURk1vdmUoa2V5cykpOwogICAgIGlmIChhZGRSZXN1bHQu
aXNOZXdFbnRyeSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5
c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEIKICAg
ICAgICAgdmFsdWUuYXBwZW5kKFdURk1vdmUoa2V5KSk7CiB9CiAKLVZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25z
dCBTdHJpbmcmIGlkKQorVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gTW9ja0NE
TUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQog
ewogICAgIGF1dG8gaXQgPSBtX3Nlc3Npb25zLmZpbmQoaWQpOwogICAgIGlmIChpdCA9PSBtX3Nl
c3Npb25zLmVuZCgpKQpAQCAtODMsNyArODMsNyBAQCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
IE1vY2tDRE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaQog
ICAgIHJldHVybiBXVEZNb3ZlKGl0LT52YWx1ZSk7CiB9CiAKLWNvbnN0IFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4qIE1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBT
dHJpbmcmIGlkKSBjb25zdAorY29uc3QgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4qIE1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlk
KSBjb25zdAogewogICAgIGF1dG8gaXQgPSBtX3Nlc3Npb25zLmZpbmQoaWQpOwogICAgIGlmIChp
dCA9PSBtX3Nlc3Npb25zLmVuZCgpKQpAQCAtMjAyLDcgKzIwMiw3IEBAIGJvb2wgTW9ja0NETTo6
c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZmFjdG9yeSAmJiBtX2ZhY3Rv
cnktPnN1cHBvcnRzU2Vzc2lvbnMoKTsKIH0KIAotYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXRE
YXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBp
bml0RGF0YSkgY29uc3QKK2Jvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXRE
YXRhKSBjb25zdAogewogICAgIGlmICghc3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5z
KGluaXREYXRhVHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMSw3ICsyMTEsNyBA
QCBib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZQogICAgIHJldHVybiB0cnVlOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTW9ja0NE
TTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25z
ZSkgY29uc3QKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250aWd1b3VzKCk7
CiAgICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNl
LnNpemUoKSkpCkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRp
YWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXQKICAg
ICBjYWxsYmFjayhpbml0aWFsaXplKCkpOwogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vz
c0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nl
c3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJp
bmdWaWV3KGNlcnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNlcnRpZmljYXRl
LT5zaXplKCkpOwogCkBAIC0yOTgsNyArMjk4LDcgQEAgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6
TW9ja0NETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRyPE1vY2tDRE1JbnN0YW5jZT4mJiBpbnN0YW4K
IHsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3Zv
aWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGlj
ZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewog
ICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFuY2UtPmZh
Y3RvcnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7CkBAIC0zMjQsNyArMzI0LDcg
QEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVMKICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShsaWNlbnNlLmRhdGEoKSwgbGljZW5zZS5sZW5ndGgoKSksIHNlc3Npb25JRCwgZmFsc2Us
IFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNz
aW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2Fs
bGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAg
TW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2luc3RhbmNlID8gbV9pbnN0YW5jZS0+ZmFjdG9y
eSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3RvcnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NETUZhY3RvcnkuaAppbmRleCBmNWNkYTUwNWNmMmEzM2MxMDVmMDI1Yzk3YzkzNTBhOTY4
Njk4ZTFlLi5kOTZjMTU2ZWU0ZDI3OTFiOGIwOTk4ZGFmOTQwZWM3NTM3ODA3YmMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCkBAIC03Nyw5ICs3Nyw5IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaGFzU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSB7IHJldHVy
biBtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKTsgfQogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbldpdGhJ
RChjb25zdCBTdHJpbmcmIGlkKSB7IG1fc2Vzc2lvbnMucmVtb3ZlKGlkKTsgfQotICAgIHZvaWQg
YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJl
ZEJ1ZmZlcj4+JiYpOwotICAgIGNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4qIGtleXNG
b3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0OwotICAgIFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4gcmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYg
aWQpOworICAgIHZvaWQgYWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmKTsKKyAgICBjb25zdCBWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pioga2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3Qg
U3RyaW5nJiBpZCkgY29uc3Q7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4gcmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpOwogCiBwcml2
YXRlOgogICAgIE1vY2tDRE1GYWN0b3J5KCk7CkBAIC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2NhbkNyZWF0ZUluc3RhbmNlcyB7IHRydWUgfTsKICAgICBib29sIG1fc3VwcG9y
dHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMgeyB0cnVlIH07CiAgICAgYm9vbCBtX3N1cHBvcnRzU2Vzc2lv
bnMgeyB0cnVlIH07Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4+IG1fc2Vzc2lvbnM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+PiBtX3Nlc3Npb25zOwogfTsKIAogY2xhc3MgTW9ja0NETSA6IHB1Ymxp
YyBDRE1Qcml2YXRlIHsKQEAgLTEyMSw4ICsxMjEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9h
ZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNh
dGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmlu
YWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBT
aGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wg
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBm
aW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3Qg
U3RyaW5nJikgY29uc3QgZmluYWw7CiAKICAgICBXZWFrUHRyPE1vY2tDRE1GYWN0b3J5PiBtX2Zh
Y3Rvcnk7CkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbXBsZW1l
bnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1w
bGVtZW50YXRpb25UeXBlOjpNb2NrOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3Vy
YXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2
ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZp
bmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwg
U3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsK
ICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAg
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8Q0RNSW5z
dGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CkBAIC0xNTQsOCArMTU0LDggQEAg
cHVibGljOgogICAgIE1vY2tDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxNb2NrQ0RNSW5zdGFu
Y2U+JiYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUs
IGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0
RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVw
ZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBs
b2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9h
ZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBT
dHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNl
c3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNh
bGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyLmNwcAppbmRleCBmYzEyN2I3YjY3YmVhNzM0NDYzY2QyZDViMDc1NmI1OWJlYmE1OGFlLi4w
NTlmM2EzODZiNmNmNWZhNzliM2MxODk3MDE1MzEzZjdjZGI0ZWYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZv
aWQgTW9ja0NvbnRlbnRGaWx0ZXI6OmZpbmlzaGVkQWRkaW5nRGF0YSgpCiAgICAgbWF5YmVEZXRl
cm1pbmVTdGF0dXMoRGVjaXNpb25Qb2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEpOwogfQog
Ci1SZWY8U2hhcmVkQnVmZmVyPiBNb2NrQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkg
Y29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBNb2NrQ29udGVudEZpbHRlcjo6cmVw
bGFjZW1lbnREYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkpOwogICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5kYXRhKCksIG1f
cmVwbGFjZW1lbnREYXRhLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDb250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyLmgKaW5kZXggNDExYTMwMDk0N2I1MzllMjZhYTZjNjRhMDA5MzI5MmU5ZmZiZTZi
OS4uNjM1YWM4NGJlNzkzODQ3YWE1NzIxM2QwMWZmYzFlNzRmNzZiNzU5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBv
dmVycmlkZTsKICAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKLSAg
ICBSZWY8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3Zl
cnJpZGU7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaAppbmRleCAzN2YxYTQ4N2Y4YzUyYjQ0ZWEy
NDMwY2NjZDFmYTAyNWVlOTFhYWMzLi5mZDJjMWFlMmY2M2I2MGQ3NGMzMGQyNDJhOTg5YTBiZmQ5
MWRlNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKQEAgLTM4LDcgKzM4
LDcgQEAgY2xhc3MgU2NyaXB0QnVmZmVyIHsKIHB1YmxpYzoKICAgICBTY3JpcHRCdWZmZXIoKSA9
IGRlZmF1bHQ7CiAKLSAgICBTY3JpcHRCdWZmZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCisgICAgU2NyaXB0QnVmZmVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiAgICAgewogICAgIH0K
QEAgLTQ4LDkgKzQ4LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNj
cmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0
OwotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZm
ZXIuZ2V0KCkuZ2V0KCk7IH0KKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZm
ZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQogCi0gICAgU2NyaXB0
QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZl
ciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLmNvcHkoKSkgOiBudWxscHRyKTsgfQor
ICAgIFNjcmlwdEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZm
ZXIobV9idWZmZXIgPyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4obV9idWZmZXIuY29w
eSgpKSA6IG51bGxwdHIpOyB9CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsg
cmV0dXJuICEhbV9idWZmZXI7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlci5pc0VtcHR5KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuY3BwCmluZGV4IGNmNmQ3NjViYzg5NGNmNGJkZjdiZDVhNmU1YWYx
Mjc4YjE2ZmRlMGEuLjgyYTJhOGM0YjE4YWNjZTc5OGIyN2MyYzhkMDA5NTg5ZmY3NWNiYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAK
QEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29ya2Vy
R2xvYmFsU2NvcGUmIHdvcmtlckdsb2JhbFNjb3BlKQogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVl
c3Q6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICgh
bV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2Fk
aW5nKSB7Ci0gICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb250aWd1b3Vz
RGF0YTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CiAgICAg
ICAgIGlmIChtX2RhdGEpCiAgICAgICAgICAgICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS50YWtl
QXNDb250aWd1b3VzKCk7CiAgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29u
dGlndW91c0RhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKaW5kZXggMGJjZDk3NmVkYTlk
NGE3ODEwOWU2MjYzZDgxMDhjMzc1MDc1OGI3Ny4uOGE5MTM4ZDIzYjBkNWRlYzUzZDI5OTBkZWQ1
ZGI3NzYzNTRlNTI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCkBAIC0xMzEsNyArMTMx
LDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1Jlc3BvbnNlKFJlZjxDbGllbnQ+JiYgY2xpZW50LCBF
eHBlY3RlZDxSZWY8RmV0Y2hSZXNwb25zZT4sIHMKICAgICBhdXRvIGJvZHkgPSByZXNwb25zZS0+
Y29uc3VtZUJvZHkoKTsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoUmVmPEZvcm1EYXRh
PiYgZm9ybURhdGEpIHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5p
c2goV1RGTW92ZShmb3JtRGF0YSkpOwotICAgIH0sIFsmXSAoUmVmPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0gKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIp
IHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwogICAg
ICAgICBjbGllbnQtPmRpZEZpbmlzaCgpOwogICAgIH0sIFsmXSAoc3RkOjpudWxscHRyX3QmKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyRmV0Y2guaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJGZXRjaC5oCmluZGV4IGRlOWUyMzBmOWJkYjk5YTVlODM4N2RmZDk2MDNh
ZWM1Y2FhM2YwMGIuLmZiYTM2MzIyYjI5YTZkNWI3OTdiMzllZGMzYzNkMTcxMjRiM2I1YmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJGZXRjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJGZXRjaC5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGU7CiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgU2VydmljZVdv
cmtlckZldGNoIHsKIGNsYXNzIENsaWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxD
bGllbnQsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKQEAgLTUxLDcgKzUxLDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDAz
YTcyMTFmY2ViYjFmOGU0NjI4ZDU5ZWE0NWJjY2I3ODgwMmZiNDEuLjlhOGZiMzVjYTUzNjEwNWJi
NmQ2ZmM0NmVlMTIyNDU5MzNmNzBiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsx
MjcsNyBAQCBTY3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBE
byB3ZSBuZWVkIHRvIGRpc2FibGUgZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQg
aGF2aW5nIHRvbyBtYW55IGZpbGUgZGVzY3JpcHRvcnMgb3Blbj8KLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUs
IHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpNYXlVc2VGaWxlTWFwcGluZzo6WWVzIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNl
RmlsZU1hcHBpbmc6Ok5vKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwg
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5n
KCpmaWxlU2l6ZSkgPyBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFy
ZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKaW5kZXggYTMw
ZjUxNDFhOGUxNGYyNzhmNWI5MTMxNzMzZDI2MTQ2MjgxMmNiNi4uZGY4YWJlNDI2ZTA2NzE3MWFm
ZmY5MGUwMzMzODUwNTlmMzMxMDM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hT
TFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nl
c3NvckxpYnhzbHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NM
b2FkZXJGdW5jKGNvbnN0IHhtbENoYXIqIHVyaSwKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJv
cjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKIAotICAgICAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YTsKIAogICAgICAgICBib29sIHJlcXVlc3RBbGxvd2VkID0gZ2xvYmFsQ2FjaGVkUmVz
b3VyY2VMb2FkZXItPmZyYW1lKCkgJiYgZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdCh1cmwpOwogICAgICAgICBpZiAocmVx
dWVzdEFsbG93ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBkYjI2YmIzOWRkNWFmOTlmMzFlNjYyYzM0
Y2VkM2RiZjk2NzdmNWFiLi5hOGMzZTE4ZTQ3YWVjYWQwYTAyMmEwODRjNDlhMjFmNmM3MTRjMzky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlckxpYnhtbDIuY3BwCkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIHZvaWQqIG9wZW5GdW5j
KGNvbnN0IGNoYXIqIHVyaSkKICAgICAgICAgcmV0dXJuICZnbG9iYWxEZXNjcmlwdG9yOwogCiAg
ICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgewog
ICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCmluZGV4IDU3MzA2
N2UzZGQwNTBmZWI3YzU3OWQwMDEwMmVlOWY2MDQ1YjUzMTMuLjMxYzJkNzZmMmVlMWI5ZDI0OWIw
MDFiN2VmZjg5MmVjMmE3NDU2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKQEAgLTYxLDcgKzYxLDcg
QEAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6flJlbW90ZUNETUluc3RhbmNlUHJveHkoKQogICAg
IG1faW5zdGFuY2UtPmNsZWFyQ2xpZW50KCk7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQ
cm94eTo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcm
IHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2b2lkIFJlbW90ZUNETUluc3Rh
bmNlUHJveHk6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3Ry
aW5nJiB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAg
ICBpZiAoIW1fY2RtKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaAppbmRleCA4ZTczZDNk
OWE2NGI5OGJmYzAwOTM2Y2Q0N2M0YzI1YTkyNzlmMmM4Li4wMmM1Y2QzN2FlNTQ4MDJmNmQwYzhk
Y2NjYjBiYTgwY2YzMzg4YzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHJp
dmF0ZToKICAgICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+
JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4mJiwgVW5pcXVlUmVmPFJlbW90ZUNETUluc3Rh
bmNlQ29uZmlndXJhdGlvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyKTsKIAogICAg
IC8vIENETUluc3RhbmNlQ2xpZW50Ci0gICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9u
RGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
IGZpbmFsOworICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChj
b25zdCBTdHJpbmcmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5LmNwcAppbmRleCBlNTc2NmMyMzM0Y2ZkMzg5MzEwY2Q0YjIxNzIzY2Fi
YTM3NDJmYzdjLi5kZTgyNzNiOWNmNTAwYTRkNjZhYTE0NGVkZTAyMDFlZWYxZWQ4NjJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlw
ZSwgQXRvbVN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zZXNzaW9uLT5y
ZXF1ZXN0TGljZW5zZSh0eXBlLCBpbml0RGF0YVR5cGUsIGluaXREYXRhLmJ1ZmZlcigpLnJlbGVh
c2VOb25OdWxsKCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJ
bmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2Vl
ZGVkKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXRE
YXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24g
PSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlv
biwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsK
ICAgICAgICAgY29tcGxldGlvbihXVEZNb3ZlKG1lc3NhZ2UpLCBzZXNzaW9uSWQsIG5lZWRzSW5k
aXZpZHVhbGl6YXRpb24sIHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2NlZWRl
ZCk7CiAgICAgfSk7CiB9CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9z
ZVMKIAogdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlbW92ZVNlc3Np
b25EYXRhQ2FsbGJhY2smJiBjb21wbGV0aW9uKQogewotICAgIG1fc2Vzc2lvbi0+cmVtb3ZlU2Vz
c2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlv
bildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzLCBz
dGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEsIENE
TUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAg
bV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9u
ID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVj
dG9yJiYga2V5U3RhdHVzZXMsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1Zh
bHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFy
ZWRCdWZmZXJDb3B5PiBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2U7CiAgICAgICAgIGlmIChl
eHBpcmVkU2Vzc2lvbnNEYXRhKQogICAgICAgICAgICAgZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJl
bmNlID0gSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoKmV4cGlyZWRTZXNzaW9uc0RhdGEp
KTsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
Ojp1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dQogICAgIGdwdUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb246OlVwZGF0ZUtleVN0YXR1c2VzKFdURk1vdmUoa2V5U3RhdHVzZXMp
KSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBt
ZXNzYWdlKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2Uo
Q0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2Fn
ZSkKIHsKICAgICBpZiAoIW1fY2RtKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b25Qcm94eS5oCmluZGV4IDhhNjFmOWQ1ZmFiYzg0ODZhN2EwZTg2MGY0YzYzMTJjMGI0NDU1MTQu
LmZlNzMwOTcxMzFlMGJiMjBhNTAwMWUxNTAxNjAyZDY1MTg2YjMwOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDRE1J
bnN0YW5jZVNlc3Npb25DbGllbnQKICAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1
c1ZlY3RvciYmKSBmaW5hbDsKLSAgICB2b2lkIHNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3Nh
Z2VUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOworICAg
IHZvaWQgc2VuZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgc2Vzc2lv
bklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBk
aXNwbGF5SUQoKSBmaW5hbCB7IHJldHVybiBtX2Rpc3BsYXlJRDsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcAppbmRleCA5YWIzNTc1
ZjRjM2I1NTk1NTViOWI4N2IyMzM3MWIxYjFhNjZkYzE3Li5mN2NiNmE2M2ViOTMzYWJkNGQ0NTNh
MjJhYjI5NGYxMzAzMjMyYjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKQEAgLTYzLDEyICs2MywxMiBAQCBSZW1vdGVDRE1Qcm94
eTo6UmVtb3RlQ0RNUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9y
eSwgc3RkOjp1bgogCiBSZW1vdGVDRE1Qcm94eTo6flJlbW90ZUNETVByb3h5KCkgPSBkZWZhdWx0
OwogCi1ib29sIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJp
bmcmIHR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK2Jvb2wgUmVtb3RlQ0RNUHJveHk6
OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5zdXBwb3J0c0lu
aXREYXRhKHR5cGUsIGRhdGEpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBSZW1vdGVDRE1Q
cm94eTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQorUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3Bv
bnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQogewogICAgIHJldHVy
biBtX3ByaXZhdGUtPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2UpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaAppbmRleCA2OTI0ZTc0ZTNm
NTAxMWJlMjE1YmU0YmQ5NmIyMzQ4MjY0NzBmNDIzLi4zYjY2Yzc3NTc4NzA2OWU5NzZlZTA2NGY5
NmZmMDdjMGY3MTJhOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNUHJveHkuaApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9VbmlxdWVS
ZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgOiB1aW50
OF90OwogZW51bSBjbGFzcyBDRE1TZXNzaW9uVHlwZSA6IHVpbnQ4X3Q7CiBzdHJ1Y3QgQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbjsKQEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogCiAgICAgUmVt
b3RlQ0RNRmFjdG9yeVByb3h5KiBmYWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9mYWN0b3J5Lmdl
dCgpOyB9CiAKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiByZXNw
b25zZSk7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25z
dCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpOwogICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1Qcm94eS5oCmluZGV4IGUyY2QwNWQ3Y2M3NGYyMGVjNjlmYWRmZTNlZTA4NTc1OTJhZDg3
OWIuLmRlOGY2ZGY1NWE2ZTFmYThiZTk2NmY5NDFlMDdmZTJmNWM1MDIxYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5o
CkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKaW5k
ZXggZjE0YzYyN2Y2NTkzZTFhODc4ZDBmNDU5OTJiM2M0MWIyMjJjN2YwMC4uMTU0NmJkZmRmZGNm
MDkxMDg3ODk0NGYzNDA3OTY3YTdhYjM4YmY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaApA
QCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGVnYWN5Q0RNOwog
Y2xhc3MgTGVnYWN5Q0RNU2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBJUEMgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCmluZGV4
IGM0NWU1MjU1ZDY3YjUyYzdhZTEwNDQ5OTg4Y2UwMTkwYzdmZmI1MzguLjYxN2Y0NzY4OTU2NDJk
ZWMyMzI1NGI1NDBlZTgxOTExYWM0YTJkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKQEAgLTk2LDcgKzk2LDcg
QEAgdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhU2VudCh1aW50NjRfdCBieXRlc1NlbnQs
IHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2UKICAgICAgICAgbV9jbGllbnQtPmRhdGFTZW50KCp0
aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVk
aWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQg
UmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGF0
YVJlY2VpdmVkKCp0aGlzLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCmluZGV4IGQxM2QyNWY2NWYw
MjI0YTZjNzY3ZjY5YTRkNDE5Y2QwNTNiYjc5NWQuLjViN2E3ZTJhNzQyNDQzMmQ4NmNiMjhhMWJl
NzE3MThhMTY3Mzc1ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJik7CiAgICAgdm9pZCByZWRp
cmVjdFJlY2VpdmVkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJik+JiYpOwogICAgIHZvaWQgZGF0YVNlbnQodWludDY0X3QsIHVpbnQ2NF90KTsK
LSAgICB2b2lkIGRhdGFSZWNlaXZlZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAg
ICB2b2lkIGRhdGFSZWNlaXZlZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jik7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xv
YWRNZXRyaWNzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRj
L1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAppbmRleCBlYmRlNzUzMGVjODZmZjZjNDFiZWNkNGU1
ZWM0MjhhM2M4YWY4MGY3Li5lODNmOTE0M2QyMGE3MmUyYmU0ZmZjYmZlZDEzYjBiYjRkZDMxZTA5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlh
UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlci5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVj
b3JkZXI6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYg
cmVtbwogdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChJUEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBtX3dyaXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJs
ZSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkg
OiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKKyAgICAgICAgYXV0
byBidWZmZXIgPSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+KCk7CiAgICAgICAgIGF1dG8qIHBvaW50ZXIgPSBidWZmZXIgPyBidWZm
ZXItPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0
YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwIH0sIHRpbWVDb2Rl
KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKaW5kZXggNTJjYzVkYTEyMWEyZmI1OWQ4Y2YwNTkz
YjY4NTA5ZmQ2NTVjMGNkYy4uNzFmZDAyMjI5YmJiMWM1NzMyNmZkZmNmZTI2YzExZjc2MWFiY2Y3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVu
ZGluZ0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvUGVuZGluZ0Rvd25sb2FkLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRS
ZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9
OworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsK
ICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJikgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5k
ZXggM2YzOWViMzJmMWFhODA3Njc4NWRhNzllZTExZGFkOGYwYzMyNmI3OS4uZDg5MjBlOTg3NjRm
ZDliNjRiOWNkZGM2MGExZDg0ZDYxOWIyZDQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcApA
QCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmCiAgICAgY29tcGxldGlv
bkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIE5ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikK
K3ZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YShSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKIHsKICAgICBDT1JTX0NIRUNLRVJfUkVM
RUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAppbmRleCBi
YmIxNDYyYTMxNjFlMmZjZTllYTU3ODQ0YjE5YjkzZTYxOWM4MWIwLi5lMTFiZjU2MzE5MDdhZTQ3
MzM2ZWY4NWE1ZDIyZTg4MzU3NDY1MWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKQEAgLTcxLDcg
KzcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJl
ZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hh
bGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdh
Y3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExl
Z2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
IGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRv
dGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaApp
bmRleCBkNjAxOGY2MTM4M2FlM2E1MWU5ZDQ3MjJjZjZhNjBlMmQ4Yjg3YTdkLi5lMDQ5ZTViMTJk
ZGU1ZmU1MWI0Njk1NTI4OWE3YTdmNjk5ODJhZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNF
eHBlY3RlZFRvU2VuZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3YXNCbG9ja2VkKCkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAppbmRleCA2ZGYx
NDEwNzM2YWJhMmYyZDlhMTk2MTU2YzBiMWJhZmE4ZTcwNDQ3Li40NjkwZmRjNWQ1YWQ3Zjg5MmMx
ZGU2OGQ1Yjg1NjQwZGVkMzgyOGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmNwcApAQCAtMjYzLDcgKzI2Myw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6Om5v
dGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290
aWF0CiAgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9u
c2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6
OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBOZXR3b3Jr
TG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB0aGUgZW5jb2RlZCBkYXRhIGxlbmd0
aCwgbm90IHRoZSBkZWNvZGVkIGRhdGEgbGVuZ3RoLgogICAgIGF1dG8gc2l6ZSA9IGJ1ZmZlci0+
c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCmluZGV4
IGI5MmY5YzYxZTEzNTkwYzQxY2JjMWQ4YjM4MjhkM2FjY2I3NTFiMzguLmI0YTk0NTIzM2I5NWUy
YmE1YWFlYzBlMmY3ZWNjMDNhMzk1ZWMyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmgKQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVX
aXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3Qg
dG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7
CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKaW5kZXggMGE1ZjY2YmQ5NjdlYzlmZGY2NjRl
NTJlNWFmMzk0ZTQ4ZWNlMWY3Yi4uMzQ4Y2ZmYjllOGUyNWVlODNiYmIzOWEwMmNkM2NmNmQyODU0
ZDM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
bGllbnQuaApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogZW51bSBjbGFzcyBQ
b2xpY3lBY3Rpb24gOiB1aW50OF90OwogfQogCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwg
dW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9h
ZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgeyB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IDNlOWNiN2RmNTUxZDc2ZmQ1ZjIwOTkwNmE2ZTFjNzhmMmQ1NmI2OTEuLjVkYzgyNzNkOGZkZjc1
ZTQ1NWU3NDEyNjY3NzEwZTE3NzBlNjczNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg3LDcgKzg3LDcg
QEAgc3RydWN0IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSB7CiAg
ICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKIH07CiAKLXN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3lu
Y2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0
YSYgZGF0YSwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbWV0cmljcykKK3N0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0
KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSYgZGF0YSwgY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7CiAgICAgQVNTRVJUKGRhdGEuZGVsYXllZFJlcGx5KTsKICAgICBBU1NFUlQo
IWRhdGEucmVzcG9uc2UuaXNOdWxsKCkgfHwgIWRhdGEuZXJyb3IuaXNOdWxsKCkpOwpAQCAtODYz
LDcgKzg2Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kRGlkUmVjZWl2ZVJl
c3BvbnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dzaW5nQ29udGV4CiAgICAgfSk7CiB9CiAKLXZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKCFt
X251bUJ5dGVzUmVjZWl2ZWQpCiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2
ZUJ1ZmZlcjogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aD0lZCkiLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKQEAgLTEyNzMsNyArMTI3Myw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKCkKICAgICBt
X2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKIH0KIAotdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNv
ZGVkRGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQog
ewogICAgIEFTU0VSVCghaXNTeW5jaHJvbm91cygpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggYzQyMzQ2NTFi
YTkyOGI5NWQ4YzZmNTdiZTI1YzVmMjExODk4OWYzYi4uY2YxMGNmMGU3MWExYmM2NTU0MGU4N2Q2
YmE0YzFiOWM4NTZjMGExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC0xMTUsNyArMTE1LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOyB9CiAgICAgdm9pZCB3
aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFp
bExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIGZpbmFsOwpAQCAtMTkzLDcgKzE5Myw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwog
ICAgIHZvaWQgYnVmZmVyaW5nVGltZXJGaXJlZCgpOwotICAgIHZvaWQgc2VuZEJ1ZmZlcihXZWJD
b3JlOjpTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQg
c2VuZEJ1ZmZlcihXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29k
ZWREYXRhTGVuZ3RoKTsKIAogICAgIHZvaWQgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAg
ICAgdm9pZCBpbnZhbGlkYXRlU2FuZGJveEV4dGVuc2lvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXggMTE0ODUzZTQ1YjcyNTMzNjRjNzQ3YTcxY2Iy
YjVhYjhjYzM4ZWZkNS4uMWFmMWUwOGUzYzQ0MWUyNGYzMDA2NWU5ZjIwNzc2ZTZmOWZjMzNkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAgLTE3Miw3ICsx
NzIsNyBAQCB2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25z
ZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VAogICAgIGRpZEZpbmlzaCh7IH0sIHJlc3Bv
bnNlKTsKIH0KIAotdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZl
cj4mJikKK3ZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKQogewogICAgIFBJTkdfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdM
b2FkLmgKaW5kZXggMTllYzhjZWI5MmUzYzhhMDU2ZjQ5MjczNjYwY2ZmZjkyNjQzNDFkMS4uYWIy
OWEwYjFhYzg0NjZiMGVkNjFlZjU4ZWY0YzIyMGFiYWI2ZWJlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21w
bGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50
NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBm
aW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKaW5kZXggNDU1NzgyZDU0YTJlYTliZWUx
ODY1MGUxYWZkMWNmN2IyY2U5OGM0OS4uMTdkNDc5MDdhM2Y2ZWU1MmJlNjUwMWQxZGFiMGNhNjA3
NTFkNmIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25u
ZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0
VGFzay5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb20KICAgICBj
b21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiB9CiAKLXZvaWQgUHJlY29u
bmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAppbmRleCAxYzFmZjE2NDcxMTFjNmZh
ODQ5NGFmNWNmMGM3YmJlYWExYjI2NTAzLi44NTgwOGUxMjFiNjhjYThiNzNlMjUxOGQxOTNhYjM5
NTgxZWFkMWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNv
bm5lY3RUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0
VGFzay5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1
bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRl
c1RvQmVTZW50KSBmaW5hbDsKICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGly
ZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Up
IGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0
aW9uUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5kZXggYjM3NzE3OTY5
NGNmYjQ2YjViM2ExNzdmNDc3YzkxMDM4NmQ2YmYwNi4uNWQ5YmQzMzMzOTIxMWNhMWNkNDQ3Yjg3
OTJmNTQ2MWVhODdlZGRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBTZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVz
cG9uc2UmJiByZXMKICAgICAgICAgY2FsbGJhY2soKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAg
ICAgaWYgKG1fYm9keUNhbGxiYWNrKQogICAgICAgICBtX2JvZHlDYWxsYmFjayhidWZmZXItPm1h
a2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAppbmRleCAzMjY1NzBl
NjljYTQwNjJjNzg1YTRlY2ZmOTYxYTAxZTBhOTBhMWNhLi42N2FiYzU1YzYwZmYyNGUzOWRkMDRl
Y2M1MDIxYjYwNWVlOGJlYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICB1
c2luZyBSZXNwb25zZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsKICAgICB2b2lkIHdhaXRG
b3JSZXNwb25zZShSZXNwb25zZUNhbGxiYWNrJiYpOwotICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9
IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47CisgICAgdXNpbmcgQm9keUNhbGxiYWNr
ID0gRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OwogICAgIHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxi
YWNrJiYpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25z
dCB7IHJldHVybiBtX2Vycm9yOyB9CkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nob3VsZENhcHR1cmVF
eHRyYU5ldHdvcmtMb2FkTWV0cmljczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5kZXggOTQyMzUzNDgyNzNlODkxYjA3Yjg3NTYxYzFk
NjEyZWEyYTQ0MzU5My4uN2EyNjIyMTlkZTc4YjIzNWQxMjVhOTJiNmUyMzZkMzMyNjJmN2EyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3Bw
CkBAIC0xNzcsNyArMTc3LDcgQEAgUmVzb3VyY2VFcnJvciBTZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlcjo6cHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG8KICAgICByZXR1cm4g
eyB9OwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fZGVjb2RlcikgewogICAgICAgICBpZiAo
IW1fcmVzcG9uc2VFbmNvZGluZy5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCmluZGV4IDE4ZjU0NjkxZjM3YzJiYWJiYzhjMWEzYmMw
OTQzNzBlOWIyOWViNzEuLjQ0ZmMwNjg1ZmEwZmVkYzg3NDIxOTE2ZTkxM2E2NzRiMWMwZmRiZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCkBA
IC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JD
cmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmlu
YWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5kZXggZmRiZmIxNDM1OTc2Y2JmNjVm
NjEyNTY4M2FjMWVkZDI0MDllMjc4Ny4uNmYyNmI0Y2MyZGVmYTBkOTg4N2M2ZjQyNDVlOGY1NGZi
ZWM0YmEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTU4MSw3ICs1ODEsNyBA
QCBTdG9yYWdlOjpSZWNvcmQgQ2FjaGU6OmVuY29kZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYg
cmVjb3JkSW5mb3JtYXRpb24sIGNvbnN0CiAgICAgRGF0YSBib2R5OwogICAgIFdURjo6c3dpdGNo
T24ocmVjb3JkLnJlc3BvbnNlQm9keSwgW10oY29uc3QgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYg
Zm9ybURhdGEpIHsKICAgICAgICAgLy8gRklYTUU6IFN0b3JlIGZvcm0gZGF0YSBib2R5LgotICAg
IH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgeworICAgIH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVy
KSB7CiAgICAgICAgIGJvZHkgPSB7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9Owog
ICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpAQCAtNjczLDcgKzY3
Myw3IEBAIHN0ZDo6b3B0aW9uYWw8UmVjb3JkPiBDYWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6
OlJlY29yZCYgc3RvcmFnZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1
dG8gcmVjb3JkID0gV1RGTW92ZShyZXN1bHQtPnJlY29yZCk7Ci0gICAgcmVjb3JkLnJlc3BvbnNl
Qm9keSA9IFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJv
ZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKKyAgICByZWNvcmQucmVzcG9uc2VCb2R5
ID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3Rv
cmFnZS5ib2R5LnNpemUoKSk7CiAKICAgICByZXR1cm4gcmVjb3JkOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IDA0
Nzc2ODM2Zjk5OTA5MzkxMGIzOTlkNzU1Mzg1NWQ1ZDNmMWZmNGUuLmRkMzA1YWYyOTc2NjFlNDc2
YzQ5Njc3ZGY1NzIxZWZkMWVjOTMyZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lk
IENhY2hlOjpjb21wbGV0ZVJldHJpZXZlKFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJiBoYW5k
bGVyLCBzdGQ6OnVuaXF1ZV9wdAogICAgIGhhbmRsZXIoV1RGTW92ZShlbnRyeSksIGluZm8pOwog
fQogICAgIAotc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9u
c2VEYXRhKQorc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIHJlc3BvbnNlRGF0YSkKIHsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNh
Y2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZURhdGEpLCBXZWJDb3Jl
Ojpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNl
c3Npb24obV9zZXNzaW9uSUQpLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQpAQCAtNDY0LDcgKzQ2
NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6Om1ha2VSZWRpcmVjdEVudHJ5KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRy
eT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBXZWJD
b3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFn
ZVNlc3Npb24obV9zZXNzaW9uSUQpLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9p
ZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCitzdGQ6OnVuaXF1ZV9wdHI8RW50
cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIEZ1bmN0aW9uPHZvaWQo
TWFwcGVkQm9keSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChyZXNwb25z
ZURhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuaAppbmRleCAxOTlmMGNmYjczMjU0M2M1ZmVhZjRmZTIzMDFlNmExYzEyZjg4ZmU4
Li5lZDA0ZWJjYTBiMzZmM2Y5YzRjMGU3YmFjNzEzMzZiOWU5NmMzNTg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTQzLDcg
KzQzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExvd1Bvd2VyTW9kZU5vdGlmaWVy
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjYsNyAr
MTY2LDcgQEAgcHVibGljOgogICAgIH07CiAgICAgdXNpbmcgUmV0cmlldmVDb21wbGV0aW9uSGFu
ZGxlciA9IEZ1bmN0aW9uPHZvaWQoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiwgY29uc3QgUmV0cmll
dmVJbmZvJik+OwogICAgIHZvaWQgcmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+LCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxFbnRyeT4gc3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmID0gbnVsbHB0cik7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEVudHJ5PiBzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmID0gbnVs
bHB0cik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9yZVJlZGlyZWN0KGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgc3RkOjpv
cHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYXApOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4g
dXBkYXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEVudHJ5JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgdmFsaWRhdGluZ1Jlc3BvbnNlKTsKIApAQCAt
MTg1LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJldHJpZXZlRGF0YShjb25zdCBEYXRh
S2V5JiwgRnVuY3Rpb248dm9pZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4pOwogICAgIHZvaWQg
c3RvcmVEYXRhKGNvbnN0IERhdGFLZXkmLCAgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsK
ICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IG1ha2VFbnRyeShjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5
PiBtYWtlRW50cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IG1ha2VSZWRpcmVjdEVudHJ5KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCk7
CiAKICAgICB2b2lkIGR1bXBDb250ZW50c1RvRmlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBm
MWVmZmYzNTBmYTM3ZjZiNDY4MTU5ZmM2NjJlN2FhOTQyODNkN2UxLi43NjEwNzhkZWEwOTNjMDQ1
NTViZTk4YjA1MTczZTM0MTUwNjdhODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMzcsNyArMzcs
NyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAotRW50
cnk6OkVudHJ5KGNvbnN0IEtleSYga2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0
IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJz
KQorRW50cnk6OkVudHJ5KGNvbnN0IEtleSYga2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlp
bmdSZXF1ZXN0SGVhZGVycykKICAgICA6IG1fa2V5KGtleSkKICAgICAsIG1fdGltZVN0YW1wKFdh
bGxUaW1lOjpub3coKSkKICAgICAsIG1fcmVzcG9uc2UocmVzcG9uc2UpCkBAIC0xMDMsNyArMTAz
LDcgQEAgU3RvcmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25z
dAogICAgIERhdGEgYm9keTsKICAgICBpZiAobV9idWZmZXIpIHsKICAgICAgICAgbV9idWZmZXIg
PSBtX2J1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKLSAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KG1fYnVmZmVyLmdldCgpKS0+ZGF0
YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07CisgICAgICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0PFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcio+KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+
c2l6ZSgpIH07CiAgICAgfQogCiAgICAgcmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFk
ZXIsIGJvZHksIHsgfSB9OwpAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgRW50cnk6OmluaXRpYWxp
emVCdWZmZXJGcm9tU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAgICAgbV9idWZmZXIgPSBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3NvdXJjZVN0b3JhZ2VSZWNvcmQuYm9keS5kYXRhKCks
IG1fc291cmNlU3RvcmFnZVJlY29yZC5ib2R5LnNpemUoKSk7CiB9CiAKLVdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciogRW50cnk6OmJ1ZmZlcigpIGNvbnN0CitXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBFbnRyeTo6YnVmZmVyKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAg
ICAgICBpbml0aWFsaXplQnVmZmVyRnJvbVN0b3JhZ2VSZWNvcmQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaAppbmRl
eCA5NjkxNWMzODAxYzM3ZGRhYzNlOGU2MDMyMWY4OGMyMjI5Y2Q1OWEwLi45YzA0MjBkNDRhODE1
OGRmYzViMjFjZjE4ODIwNGNmM2E5MTZiNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCkBAIC0zNSw3ICszNSw3
IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgTmV0d29y
a0NhY2hlIHsKIGNsYXNzIEVudHJ5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBFbnRyeShjb25zdCBLZXkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVmVjdG9yPHN0ZDo6
cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOworICAgIEVudHJ5
KGNvbnN0IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxT
dHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOwogICAgIEVudHJ5KGNvbnN0
IEtleSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxT
dHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOwogICAgIGV4cGxpY2l0IEVu
dHJ5KGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYpOwogICAgIEVudHJ5KGNvbnN0IEVudHJ5Jik7CkBA
IC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KICAgICBjb25zdCBW
ZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycygp
IGNvbnN0IHsgcmV0dXJuIG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJzOyB9CiAKLSAgICBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0OworICAgIFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0OwogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0PiYgcmVkaXJlY3RSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4g
bV9yZWRpcmVjdFJlcXVlc3Q7IH0KIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCkBA
IC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0
cmluZz4+IG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJzOwogCiAgICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3Q+IG1fcmVkaXJlY3RSZXF1ZXN0OwotICAgIG11dGFibGUgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAjaWYgRU5BQkxFKFNI
QVJFQUJMRV9SRVNPVVJDRSkKICAgICBtdXRhYmxlIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUg
bV9zaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuY3BwCmluZGV4IGQ0M2MwODlkNjE4NTNjNTE5ZTM2MmZmMmM4YzdjNDE4M2NlYzEw
MGIuLjQxZDgyMzUwMjQ3NDdiNmZjNGEzYWM1NDhlMTMzNGVkNmNiNWVmN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgU3BlY3VsYXRpdmVM
b2FkOjpTcGVjdWxhdGl2ZUxvYWQoQ2FjaGUmIGNhY2hlLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBn
bG9iYWxGcmFtZUkKICAgICA6IG1fY2FjaGUoY2FjaGUpCiAgICAgLCBtX2NvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgICwgbV9vcmlnaW5hbFJlcXVlc3Qo
cmVxdWVzdCkKLSAgICAsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUoU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSkKKyAgICAsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCkpCiAgICAgLCBtX2NhY2hlRW50cnkoV1RGTW92ZShjYWNoZUVudHJ5Rm9yVmFs
aWRhdGlvbikpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnkgfHwgbV9jYWNoZUVudHJ5LT5u
ZWVkc1ZhbGlkYXRpb24oKSk7CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxv
YWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25z
ZSwgUmUKICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7CiB9CiAKLXZv
aWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU3BlY3VsYXRpdmVM
b2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hl
RW50cnkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRleCA2NzgzMGRmMGIz
MDM0MzMwMmExMWI1NTFkN2EwOWY2ZDFhODVmNTYzLi4xYjg0M2RiN2VjMjcwZGI5ZGFiOWU4YTI1
ZjJhNDhhOGVjYWUyYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKQEAgLTYx
LDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRl
bnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHdpbGxTZW5k
UmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5jcHAKaW5kZXggNWUyZTAyZTJmYmEwYjRhMGMwM2I1ZDNl
NjZiOTdmN2JjY2M3OTU4Yi4uMzE5OWJmZjMxMWI2YzNlZWZiZTk1MGI0NWU2YjBhOTZlMzI3Nzdm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRj
aENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZl
dGNoQ2FjaGUuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1Q
cmVmZXRjaENhY2hlOjpFbnRyeTo6RW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJl
c3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK1ByZWZldGNo
Q2FjaGU6OkVudHJ5OjpFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6
IHJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKSwgYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsK
IH0KQEAgLTcyLDcgKzcyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFByZWZldGNoQ2FjaGU6OkVudHJ5
PiBQcmVmZXRjaENhY2hlOjp0YWtlKGNvbnN0IFVSTCYgdXJsKQogCiBzdGF0aWMgY29uc3QgU2Vj
b25kcyBleHBpcmF0aW9uVGltZW91dCB7IDVfcyB9OwogCi12b2lkIFByZWZldGNoQ2FjaGU6OnN0
b3JlKGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJl
c3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUHJl
ZmV0Y2hDYWNoZTo6c3RvcmUoY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fc2Vzc2lvblByZWZldGNoZXMpCiAgICAgICAg
IG1fc2Vzc2lvblByZWZldGNoZXMgPSBtYWtlVW5pcXVlPFByZWZldGNoRW50cmllc01hcD4oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hD
YWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hl
LmgKaW5kZXggYTI1MTUyMGIzMWVhYzkyMWMyMmQzMTE1MWQ2ZDIzMWExYmVkMTM4Yy4uNTJjMGIx
MGZjYzZkNWE2ZGUxMTQ0N2U3ZTRlODIyZGY4Zjg0MWNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKQEAgLTQ3LDE4ICs0Nywx
OCBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgRW50cnkgewogICAgICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIEVudHJ5KFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpOwogICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKIAotICAgICAgICBSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiByZWxlYXNlQnVmZmVyKCkgeyByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxs
KCk7IH0KKyAgICAgICAgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlbGVh
c2VCdWZmZXIoKSB7IHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsgfQogCiAgICAgICAg
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlZGlyZWN0UmVxdWVzdDsKICAgICB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5
PiB0YWtlKGNvbnN0IFVSTCYpOwotICAgIHZvaWQgc3RvcmUoY29uc3QgVVJMJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAg
ICB2b2lkIHN0b3JlKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgc3RvcmVS
ZWRpcmVjdChjb25zdCBVUkwmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRleCBi
OWFiMGRlZWJiOWY5MjdjNzM3NDJlODZhMGJlN2Y5NzE2MGJkNmZiLi40MTY2OGE1YjFjZDczODY5
NjdiOGZkOTczZTk2NzMyZWNhOTA3ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC02Miw3ICs2
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZE5lZ290aWF0ZU1vZGVyblRMUyhjb25zdCBVUkwm
KTsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRM
ZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIHZv
aWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYm
KTsKICAgICB2b2lkIHRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQoRG93bmxvYWQm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IGE0Y2ViMzEzYWI1MDNkYzY3ZjE1MDJmYzkzMGQ2
ODhhNjMzMjc2MGEuLjA0YTZmMThmNzFjMzM1MWMyZjY3NGFmYTVkZjE3MzlmYTc3ODI1MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtNDQzLDcgKzQ0Myw3IEBAIHZvaWQgTmV0d29ya0RhdGFU
YXNrQ29jb2E6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVyCiAgICAgICAgIG1fY2xpZW50LT5kaWRDb21wbGV0ZVdpdGhFcnJvcihlcnJvciwgbmV0
d29ya0xvYWRNZXRyaWNzKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVj
ZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBOZXR3b3Jr
RGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBXVEZFbWl0U2lnbnBvc3QobV90YXNrLmdldCgpLCAi
RGF0YVRhc2siLCAicmVjZWl2ZWQgJXpkIGJ5dGVzIiwgZGF0YS0+c2l6ZSgpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1
cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFz
a0N1cmwuY3BwCmluZGV4IDY3N2M2MWRhMWExODk0YzFmNTk2NTZkOTI3MDllYjcxZDU5MWE1NTMu
LjNkYzY1ZmY4MmM5ZGE4OTJkMjBjMzQ4ODZlNWExYzRkNzlkYWRlZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3Vy
bC5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxE
aWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXNwbwogICAgIGlu
dm9rZURpZFJlY2VpdmVSZXNwb25zZSgpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6
OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCit2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1
cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAg
IFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6
Q2FuY2VsaW5nIHx8IHN0YXRlKCkgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAoIW1fY2xpZW50ICYm
ICFpc0Rvd25sb2FkKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKaW5kZXggMWM0MjdkZGI3OGQ2OTUzZmU4OTYw
YzU2OTJhZmRlNGY0ZjBlZWU4NS4uNDViZTVjZTE4NDMyNTI3MWQ1YzA4MGRkMzRmMWVlNGExNjY0
MmExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdv
cmtEYXRhVGFza0N1cmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwv
TmV0d29ya0RhdGFUYXNrQ3VybC5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgUmVm
PFdlYkNvcmU6OkN1cmxSZXF1ZXN0PiBjcmVhdGVDdXJsUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgUmVxdWVzdFN0YXR1cyA9IFJlcXVlc3RTdGF0dXM6Ok5ld1JlcXVlc3QpOwog
ICAgIHZvaWQgY3VybERpZFNlbmREYXRhKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgdW5zaWduZWQg
bG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6OkN1cmxSZXNw
b25zZSYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6
OkN1cmxSZXF1ZXN0JiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1
cmxEaWRDb21wbGV0ZShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmLCBXZWJDb3JlOjpDZXJ0
aWZpY2F0ZUluZm8mJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCBlNjViMmVh
ODM4YjA4MTgzYzk2YjgzMTIwYjFmZWYxNTZiYjhjMDk1Li5lNjdlMDViYTg0NzhhNTgxODMwZTM5
NzA2OGIzMmZiMDhkOTFiN2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC0xNzYxLDcgKzE3NjEs
NyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9u
YWw8RGF0YVVSTERlY29kZXI6OlJlc3VsdD4mJgogICAgIH0KIAogICAgIG1fcmVzcG9uc2UgPSBS
ZXNvdXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UobV9jdXJyZW50UmVxdWVzdC51cmwoKSwg
cmVzdWx0LnZhbHVlKCkpOwotICAgIGF1dG8gYnl0ZXMgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CisgICAgYXV0
byBieXRlcyA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNy
ZWF0ZUdCeXRlcygpOwogICAgIG1faW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5w
dXRfc3RyZWFtX25ld19mcm9tX2J5dGVzKGJ5dGVzLmdldCgpKSk7CiAgICAgZGlzcGF0Y2hEaWRS
ZWNlaXZlUmVzcG9uc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvd2VicnRjL05ldHdvcmtSVENQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKaW5kZXggZjVkYjcwNmM0NDU4MDIx
MDg3Zjk1OTk2NjlkZmE3ZDlmODM3OTc4Yy4uMzNkNDNiNzIyMzhkMjAzZTdlZGVjOTQxNGNhZjlm
ZGE4ZjQwNTI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKQEAgLTU1LDcgKzU1LDcgQEAgc3RydWN0IFBh
Y2tldE9wdGlvbnM7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlZ2lzdHJhYmxlRG9t
YWluOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmluZGV4IDI5ZjcxZDdlNmRjNzUwZWYxOWYzMjg2MmM4OWI3
MTg1ZTAzYmY4OTYuLmRmOGVlMzBjNDNjMGZmZjRkMGVhNmQ4Y2VjZTNmY2Y0Y2IzM2VmNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBA
IC01MSw5ICs1MSw5IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVkQnVm
ZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgSVBDOjpEYXRhUmVmZXJlbmNl
IGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOwor
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoZGF0YS5zaXplKCkpCi0g
ICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpOworICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgIHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgK
aW5kZXggZTljZDg3MmY4ZDQ0ZjE1ZTBlZTM3YzczNDkyYjJkODAyYWM5MDcxNi4uMTdmMDhjMjhl
YTEyNWI1NTA5OTNlZWQyNGQ1OTYzYjg1MTBhMTE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIEVuY29kZXMgYSBTaGFyZWRCdWZm
ZXIgdGhhdCBpcyByZWNlaXZlZCBhcyBhIGNvcHkgb2YgdGhlIGRlY29kZWQgZGF0YSBpbiBhIG5l
dyBTaGFyZWRCdWZmZXIuCisvLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB0aGF0
IGlzIHJlY2VpdmVkIGFzIGEgY29weSBvZiB0aGUgZGVjb2RlZCBkYXRhIGluIGEgbmV3IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIuCiAvLyBUbyBhdm9pZCBjb3B5aW5nIGZyb20gdGhlIERlY29kZXIs
IHVzZSBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHRvIHJlY2VpdmUgYSBEYXRhUmVmZXJlbmNl
IGluc3RlYWQuCiAKICNwcmFnbWEgb25jZQpAQCAtMzksMTkgKzM5LDE5IEBAIGNsYXNzIFNoYXJl
ZEJ1ZmZlckNvcHkgewogcHVibGljOgogICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7
CiAKLSAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsg
fQotICAgIFNoYXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CiAg
ICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKLSAgICAgICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkg
OiBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkgeyB9CisgICAgICAg
IDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKFdU
Rk1vdmUoYnVmZmVyKSkgeyB9CisgICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVm
ZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4oKSkgeyB9CisgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5tYWtl
Q29udGlndW91cygpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZl
ci5tYWtlQ29udGlndW91cygpKSB7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAgICBjb25zdCBS
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKICAgICBj
b25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+
ZGF0YSgpIDogbnVsbHB0cjsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXIgPyBtX2J1ZmZlci0+c2l6ZSgpIDogMDsgfQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZl
ckNvcHk+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
LmgKaW5kZXggZDNkMGVjNWU5Nzg1NTk5YjYzNGE4NGM2YzQ0NzFiNTJjZDIyMTNmMS4uNjdlYzhl
NWU5MmJkMDI0MTE1ZGIwZDQwODBhMjRmZTczNTcwZDNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaApAQCAtMjMs
NyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8v
IEVuY29kZXMgYSBTaGFyZWRCdWZmZXIgb3IgRGF0YVJlZmVyZW5jZSB0aGF0IGlzIHJlY2VpdmVk
IGFzIGEgRGF0YVJlZmVyZW5jZSB0byB0aGUgZGVjb2RlZCBkYXRhLgorLy8gRW5jb2RlcyBhIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIgb3IgRGF0YVJlZmVyZW5jZSB0aGF0IGlzIHJlY2VpdmVkIGFz
IGEgRGF0YVJlZmVyZW5jZSB0byB0aGUgZGVjb2RlZCBkYXRhLgogCiAjcHJhZ21hIG9uY2UKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCmluZGV4IGIzYTk5YWY4ZjUxMjdm
NmE2NTNjYzFjOGY4NWI2MmI2Y2FhZjE1OGEuLmMwMjZmNTQ5NTY5YjJiZTAwNzhhZTMyNWQwNTM5
ZTA3MWFmMTEwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVt
b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKQEAg
LTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi1SZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1v
cnk6OmNvcHlCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ4
LDEwICs0OCwxMCBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZm
ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsK
IH0KIAotUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hh
cmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIHsKICAg
ICBBU1NFUlQoZGF0YVNpemUgPD0gc2l6ZSgpKTsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0gKCkgLT4gY29uc3QgdWludDhfdCogewogICAgICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihwcm90ZWN0ZWRUaGlzLT5kYXRh
KCkpOwogICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXgg
NzZiNzNjYWU0Yzg1ZDdlZTM2OGIxZjg0ZDUxZWUwMGY5MmU5MDQ3Yy4uMWI0ZmRmYWY2ODM4OWRj
ZTcyOGZmMzRlNWU1ZjAxMmUyNDNmYTJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1l
bW9yeS5oCkBAIC00NCw4ICs0NCw4IEBAIGNsYXNzIEVuY29kZXI7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiAjaWYgT1MoREFSV0lOKQpA
QCAtMTIxLDcgKzEyMSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBDaGFuZ2UgdGhlc2Ug
ZmFjdG9yeSBmdW5jdGlvbnMgdG8gcmV0dXJuIFJlZjxTaGFyZWRNZW1vcnk+IGFuZCBjcmFzaCBv
biBmYWlsdXJlLgogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBhbGxvY2F0ZShzaXpl
X3QpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBjb3B5QnVmZmVyKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBj
b3B5QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBz
dGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbWFwKGNvbnN0IEhhbmRsZSYsIFByb3RlY3Rpb24p
OwogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVk
TWVtb3J5PiB3cmFwTWFwKHZvaWQqLCBzaXplX3QsIGludCBmaWxlRGVzY3JpcHRvcik7CkBAIC0x
NTQsNyArMTU0LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUgc3lzdGVtIHBhZ2Ugc2l6
ZSBpbiBieXRlcy4KICAgICBzdGF0aWMgdW5zaWduZWQgc3lzdGVtUGFnZVNpemUoKTsKIAotICAg
IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIo
c2l6ZV90KSBjb25zdDsKKyAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFy
ZWRCdWZmZXIoc2l6ZV90KSBjb25zdDsKIAogcHJpdmF0ZToKICNpZiBPUyhEQVJXSU4pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnND
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVy
c0NvY29hLm1tCmluZGV4IDM1ZWExNjIxNTZhMjA3MDI2ZGYxMzQxYzVjMGE4NzNhMjNhN2VjNzEu
LjNjMWI1N2Q1YWEyNmVjNzJlNjBiNWQ3OGExMWU5ZmQ4NTJjZmZlYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29h
Lm1tCkBAIC01NjQsNyArNTY0LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250UGxhdGZv
cm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY28KICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgqaW5jbHVkZXNDcmVhdGlvbkRhdGEpIHsK
LSAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZm9udEZh
Y2VEYXRhOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwogICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0
YTsKICAgICAgICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmlu
ZGV4IDQ1NDE2NDM2YzI1MDUyMDgzOGU1ZGZkY2MyYmZlMzUzZmI1OWMyYTEuLmU5YTUxM2EzMDVl
ZGQ2NWJkZmEzNzRlMWJkMGUzZmVhYjFmNmI4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlz
dEltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZQogICAgIFJFTEVBU0VfTE9HKFJlbW90ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQgb2Ygc2l6ZSAlZHglZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBv
ZiAlbGQgYnl0ZXMiLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIENGRGF0YUdldExlbmd0
aChkYXRhLmdldCgpKSk7CiAjZW5kaWYKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSkgfSB9OworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLmdldCgpKSB9IH07CiB9CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dCYgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggMmMxNjExYzllNzBm
OGY5YTEzNzljMmM4NDMwODQ3MzUyZTRjOTZjYS4uNmZhMDJhN2JjM2VlNTRhZTZkMzI1MzgxMGQ3
OGRlYzMxNjUzNTNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmNwcApAQCAtNTUsMTUgKzU1LDE1IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNv
dXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJs
ZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3Nl
bGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPmRhdGEoKTsgfSwKICAgICAgICAg
W3NlbGYgPSBSZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPnNpemUoKTsgfQogICAgIH0p
OwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6
OkhhbmRsZTo6dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNv
bnN0CiB7CiAgICAgUmVmUHRyPFNoYXJlYWJsZVJlc291cmNlPiByZXNvdXJjZSA9IFNoYXJlYWJs
ZVJlc291cmNlOjptYXAoKnRoaXMpOwogICAgIGlmICghcmVzb3VyY2UpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCmluZGV4IGEwZWQwODU3MzRiNzc1NTE0YzExNjdk
ZWYzZDdjYjRmNjRlNDEyYWEuLmRhMWVlZTBhZDYyY2IzNDg0YzFjMzQwNWM0ODcwY2YwYzUxZTE2
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaApAQCAtMzMsNyAr
MzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewot
Y2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9p
ZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgSGFuZGxlJik7CiAKLSAgICAgICAg
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1
ZmZlcigpIGNvbnN0OworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB0cnlX
cmFwSW5TaGFyZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBTaGFyZWFibGVSZXNvdXJjZTsKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAg
IAogcHJpdmF0ZToKICAgICBTaGFyZWFibGVSZXNvdXJjZShSZWY8U2hhcmVkTWVtb3J5PiYmLCB1
bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIHNpemUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIFJlZjxTaGFy
ZWRNZW1vcnk+IG1fc2hhcmVkTWVtb3J5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBlOTNmZDg5ZTdlZmMwNzZhOWI5MTg3NzdiZDYw
OGM4MzQ0Yjk0YWJhLi5hNjllYmM1OTYzMjU5ZWE0YWQ0NTE3MTViNzcxY2RkMmRiNjQ0MzE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAg
LTE2NCw3ICsxNjQsNyBAQCBERUZJTkVfU0lNUExFX0FSR1VNRU5UX0NPREVSX0ZPUl9TT1VSQ0Uo
RGlzcGxheUxpc3Q6OlNldElubGluZVN0cm9rZUNvbG9yKQogCiAjdW5kZWYgREVGSU5FX1NJTVBM
RV9BUkdVTUVOVF9DT0RFUl9GT1JfU09VUkNFCiAKLXN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1
ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3N0YXRp
YyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgYm9vbCBpc051bGwgPSAhYnVmZmVyOwog
ICAgIGVuY29kZXIgPDwgaXNOdWxsOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyB2b2lkIGVu
Y29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1
ZmZlcikKICAgICAgICAgcmV0dXJuOwogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0g
ICAgLy8gRG8gbm90IHVzZSBzaGFyZWQgbWVtb3J5IGZvciBTaGFyZWRCdWZmZXIgZW5jb2Rpbmcg
aW4gVW5peCwgYmVjYXVzZSBpdCdzIGVhc3kgdG8gcmVhY2ggdGhlCisgICAgLy8gRG8gbm90IHVz
ZSBzaGFyZWQgbWVtb3J5IGZvciBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGVuY29kaW5nIGluIFVu
aXgsIGJlY2F1c2UgaXQncyBlYXN5IHRvIHJlYWNoIHRoZQogICAgIC8vIG1heGltdW0gbnVtYmVy
IG9mIGZpbGUgZGVzY3JpcHRvcnMgb3BlbiBwZXIgcHJvY2VzcyB3aGVuIHNlbmRpbmcgbGFyZ2Ug
ZGF0YSBpbiBzbWFsbCBjaHVua3MKICAgICAvLyBvdmVyIHRoZSBJUEMuIENvbm5lY3Rpb25Vbml4
LmNwcCBhbHJlYWR5IHVzZXMgc2hhcmVkIG1lbW9yeSB0byBzZW5kIGFueSBJUEMgbWVzc2FnZSB0
aGF0IGlzCiAgICAgLy8gdG9vIGxhcmdlLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwODU3MS4KQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBlbmNv
ZGVTaGFyZWRCdWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZm
ZXIpCiAjZW5kaWYKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNo
YXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcikKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRC
dWZmZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsK
ICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzTnVsbDsKICAgICBkZWNvZGVyID4+IGlzTnVsbDsK
QEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
U2hhcmVkQnVmZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxDb250aQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAoIWJ1ZmZlclNpemUpIHsKLSAgICAgICAgYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjIxLDcg
KzIyMSw3IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZm
ZXIoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPENvbnRpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZUZpeGVkTGVuZ3RoRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCksIDEpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSk7CisgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShkYXRhKSk7CiAjZWxzZQogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRs
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlwY0hhbmRsZSkpCkBAIC0yNDAsNyArMjQwLDcg
QEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNv
ZGVyJiBkZWNvZGVyLCBSZWZQdHI8Q29udGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGlj
IHZvaWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiB0eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4mIGRhdGEpCitzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXpl
KCkpOwogICAgIGVuY29kZXIgPDwgdHlwZXM7CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIHZv
aWQgZW5jb2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiB0eXBlcywgY28KICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZl
ci5nZXQoKSk7CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBl
c0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0yNjEsNyArMjYxLDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5
cGVzQW5kRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW4KICAgICBBU1NFUlQoZGF0
YVNpemUgPT0gdHlwZXMuc2l6ZSgpKTsKIAogICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBk
YXRhU2l6ZTsgaSsrKSB7Ci0gICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBi
dWZmZXI7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYg
KCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgZGF0YS5hcHBlbmQoYnVmZmVyKTsKQEAgLTM1Niw3ICszNTYsNyBA
QCB2b2lkIEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBET01DYQogICAgIGVuY29kZXIgPDwgcmVjb3JkLnVwZGF0ZVJl
c3BvbnNlQ291bnRlcjsKICAgICBlbmNvZGVyIDw8IHJlY29yZC5yZXNwb25zZUJvZHlTaXplOwog
Ci0gICAgV1RGOjpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICBXVEY6OnN3aXRjaE9uKHJlY29y
ZC5yZXNwb25zZUJvZHksIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAg
ICAgICAgIGVuY29kZXIgPDwgdHJ1ZTsKICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29k
ZXIsIGJ1ZmZlci5wdHIoKSk7CiAgICAgfSwgWyZdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1E
YXRhKSB7CkBAIC00MTQsNyArNDE0LDcgQEAgc3RkOjpvcHRpb25hbDxET01DYWNoZUVuZ2luZTo6
UmVjb3JkPiBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWMKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChoYXNTaGFyZWRCdWZmZXJCb2R5KSB7
Ci0gICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRC
dWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIGlmIChidWZmZXIpCkBAIC0xNTUwLDEwICsxNTUwLDEwIEBAIHZvaWQgQXJndW1l
bnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QKICAgICBpZiAoaGFzU3RyaW5nKQogICAgICAgICBlbmNvZGVyIDw8IHN0ZDo6
Z2V0PFN0cmluZz4ocGxhdGZvcm1EYXRhKTsKIAotICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0
YSk7CisgICAgYm9vbCBoYXNCdWZmZXIgPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFy
ZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpOwogICAgIGVuY29kZXIgPDwgaGFzQnVmZmVyOwogICAg
IGlmIChoYXNCdWZmZXIpCi0gICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBzdGQ6
OmdldDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSkucHRyKCkpOwor
ICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rlciwgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1
ZmZlcj4+KHBsYXRmb3JtRGF0YSkucHRyKCkpOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8UGFz
dGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpFbnRyeSYgZGF0YSkKQEAgLTE1ODMsNyArMTU4Myw3IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgUGFzdGViCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNC
dWZmZXIpIHsKLSAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHZhbHVlOwor
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGVT
aGFyZWRCdWZmZXIoZGVjb2RlciwgdmFsdWUpIHx8ICF2YWx1ZSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgZGF0YS5wbGF0Zm9ybURhdGEgPSB7IHZhbHVlLnJlbGVhc2VOb25O
dWxsKCkgfTsKQEAgLTI5NzYsNyArMjk3Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0
dGFjaG1lbnREYXRhPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIHJldHVybiB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlw
ZSksIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwg
ZGF0YS5zaXplKCkpIH0gfTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoaWRlbnRpZmllciksIFdU
Rk1vdmUobWltZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpIH0gfTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCkBAIC0zMDEwLDU2ICszMDEwLDU2IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZVZhbHVlPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRQCiB9
CiAjZW5kaWYKIAotdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIGVu
Y29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwogfQogCi1zdGQ6Om9wdGlv
bmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsK
LSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVy
LCBidWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGJ1
ZmZlcjsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiBidWZmZXIpCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIGVuY29kZVNoYXJlZEJ1
ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFJlZjxTaGFy
ZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAg
ICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VO
b25OdWxsKCk7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRy
PFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit2b2lkIEFyZ3VtZW50
Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAg
ICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKIH0KIAotc3RkOjpv
cHRpb25hbDxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVy
PFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiB7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVj
b2RlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVy
biBidWZmZXI7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit2b2lkIEFyZ3VtZW50Q29kZXI8
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBlbmNvZGVTaGFy
ZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlv
bmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7
CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVy
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMTIzLDcgKzMxMjMsNyBAQCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI+OjpkZWNvZAogICAgICAgICByZXR1cm4gZGVjb2RlU2NyaXB0QnVmZmVy
QXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZShkZWNvZGVyKTsKICNlbmRpZgogCi0gICAgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzEzNSw3ICszMTM1LDcgQEAgdm9p
ZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGUKIHsKICAgICBlbmNvZGVyIDw8IG1lc3NhZ2UuZmlyc3Q7CiAK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNv
cHlSZWYoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZURhdGEg
PSBtZXNzYWdlLnNlY29uZC5jb3B5UmVmKCk7CiAgICAgZW5jb2RlciA8PCBtZXNzYWdlRGF0YTsK
IH0KIApAQCAtMzE0NSw3ICszMTQ1LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0
YW5jZVNlc3Npb246Ok1lc3NhZ2U+ICBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUkKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpIHx8
ICFidWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggZWYwMTExZmI1NjJjZGViNmNi
MGY3YTI1MjFmMDkzYWYyNzk4Njc5Zi4uNmZhYzJhYTFlYTc4NDZmZjZiZjg5MDIxZjBmNTJlOWFh
N2FlMDNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKQEAgLTExNCw3ICsxMTQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNs
YXNzIEJsb2JQYXJ0OwogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgQ29sb3I7Ci1jbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3Jl
ZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBDdXJzb3I7
CkBAIC0xMzksNyArMTM5LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKIGNsYXNzIFNjcmlwdEJ1ZmZlcjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFNwcmluZ1RpbWluZ0Z1bmN0aW9uOwogY2xhc3MgU3RlcHNUaW1pbmdGdW5jdGlvbjsKIGNsYXNz
IFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czsKQEAgLTc1Miw2ICs3NTIsMTYgQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZv
cm1EYXRhQ3VlVmFsdWU+IHsKIH07CiAjZW5kaWYKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3Rl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVy
Jik7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25z
dCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwpAQCAt
NzYyLDE2ICs3NzIsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
Pj4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYp
OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYs
IGNvbnN0IFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwotICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVj
b2RlKERlY29kZXImKTsKLX07Ci0KIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6U2NyaXB0QnVmZmVyPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBj
b25zdCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKaW5kZXggY2YyZTRkNWY5M2ZkMmQ5NDZi
YWJmZjkzZWVhM2U5ZTg2MGFlYmJmNC4uYjYwN2FjZTgzOGUwNGJjZTFhNmFlZTRkYTU2NTU5ZTA5
Njk4Mzk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3Vs
dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRh
LmNwcApAQCAtODUsNyArODUsNyBAQCBXZWJIaXRUZXN0UmVzdWx0RGF0YTo6V2ViSGl0VGVzdFJl
c3VsdERhdGEoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaGl0VGVzdAogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoSW1hZ2UqIGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7
Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7Cisg
ICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0
YSgpOwogICAgICAgICBpZiAoYnVmZmVyKSB7CiAgICAgICAgICAgICBpbWFnZVNoYXJlZE1lbW9y
eSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwogICAgICAgICAg
ICAgaW1hZ2VTaXplID0gYnVmZmVyLT5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Z3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCA2NDVkOWJmYWI3NTdiMzFkN2U2MDBlNzhi
YWIwM2E3ZTg5Mzk3MTg1Li42NzE3NThhMjgwYTVlNDQwYWEwNjBhNzljZjFmMGYxMjZkYjdiZTI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAK
QEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2VsZWN0aW9uRGF0YSYKICAgICBib29sIGhhc0N1
c3RvbURhdGEgPSBzZWxlY3Rpb24uaGFzQ3VzdG9tRGF0YSgpOwogICAgIGVuY29kZXIgPDwgaGFz
Q3VzdG9tRGF0YTsKICAgICBpZiAoaGFzQ3VzdG9tRGF0YSkKLSAgICAgICAgZW5jb2RlciA8PCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPihzZWxlY3Rpb24uY3VzdG9tRGF0YSgpKTsKKyAgICAgICAgZW5j
b2RlciA8PCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oc2VsZWN0aW9uLmN1c3RvbURh
dGEoKSk7CiAKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSA9IHNlbGVjdGlvbi5jYW5TbWFydFJl
cGxhY2UoKTsKICAgICBlbmNvZGVyIDw8IGNhblNtYXJ0UmVwbGFjZTsKQEAgLTE1OSwxMCArMTU5
LDEwIEBAIHN0ZDo6b3B0aW9uYWw8U2VsZWN0aW9uRGF0YT4gQXJndW1lbnRDb2RlcjxTZWxlY3Rp
b25EYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSho
YXNDdXN0b21EYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFz
Q3VzdG9tRGF0YSkgewotICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPigqYnVmZmVyKSk7CisgICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0b21EYXRhKFJlZjxTaGFy
ZWRCdWZmZXI+KCpidWZmZXIpKTsKICAgICB9CiAKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNXaW4uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVy
c1dpbi5jcHAKaW5kZXggOGFlZjRhNTAxZGFkOTI3NjZjNzE5ZmM1MDA2YzZkZjEyYWRhNWFhMC4u
MjkyZDcxNDUyYzVjM2E5NDkyYjJmNWI2MTY4MjczNTMwYWMyZGQxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKQEAg
LTEwNyw3ICsxMDcsNyBAQCBzdGQ6Om9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50
Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlYwogICAgIEZvbnRQbGF0Zm9y
bURhdGE6OkNyZWF0aW9uRGF0YSogY3JlYXRpb25EYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChp
bmNsdWRlc0NyZWF0aW9uRGF0YS52YWx1ZSgpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgZGVjb2RlciA+
PiBmb250RmFjZURhdGE7CiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmNwcAppbmRleCBjOTBkM2Q4MTEzZjcxOTAxYjA4ZjI2NDg5MTZhZDJjYzI5ZDk4
MzM0Li4xNDkwYzUxMWJkYzM4YmQ4YWI0YTY5NWFlY2YzMDZkOTVmYWEzOTY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBAIC05OCwxNyArOTgs
MTcgQEAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gQXR0YWNobWVudDo6ZmlsZVNpemVGb3JEaXNw
bGF5KCkgY29uc3QKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1SZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAor
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xv
c2luZ0ltYWdlRGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0
cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJp
YWxpemVkUmVwcmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2Vy
aWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBXVEY6OlN0cmluZyYpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJp
YWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3Qg
V1RGOjpTdHJpbmcmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0
dGFjaG1lbnQuaAppbmRleCBjNmMyYTA2ZWM5N2RkZjBkNmNhYjQyYjRhNjQwOWIzYzQ3YjRkZWZl
Li5mZTUwZTUzOGI4ZWJiMzUxYTQ4MzZkMWRkODkzZDE0N2E1NmE4NzdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTM4LDggKzM4LDggQEAgT0JK
Q19DTEFTUyBOU0ZpbGVXcmFwcGVyOwogT0JKQ19DTEFTUyBOU1N0cmluZzsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtODMsMTQgKzgzLDE0IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0OwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZW5jbG9zaW5nSW1hZ2VE
YXRhKCkgY29uc3Q7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0OwogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IGZpbGVTaXplRm9yRGlzcGxheSgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJ
bWFnZShib29sIGhhc0VuY2xvc2luZ0ltYWdlKSB7IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNF
bmNsb3NpbmdJbWFnZTsgfQogICAgIGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UoKSBjb25zdCB7IHJl
dHVybiBtX2hhc0VuY2xvc2luZ0ltYWdlOyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7
Ci0gICAgdm9pZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5
cGUpOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRS
ZXByZXNlbnRhdGlvbigpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXBy
ZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmlu
ZyYgY29udGVudFR5cGUpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEF0dGFjaG1lbnQoY29u
c3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0
b3JlLmNwcAppbmRleCAxYjliNTRiNjI3MTgxNDk1MDhmOTAyN2M4M2M2NzMyMDZiYTgyOTgyLi42
NDQ5MWUxNjJlYzZjNWJjZmEzZmM0Y2IyNDlmOGQ5Y2NiNjM5YjIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAK
QEAgLTE1MSw3ICsxNTEsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6RGF0YSYgZGF0YSwgY29uc3QgRnVuY3Rpb248YgogewogICAgIGRhdGEu
YXBwbHkoZnVuY3Rpb24pOwogfQotdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFu
PGNvbnN0IHVpbnQ4X3Q+KT4mIGZ1bmN0aW9uKQordGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48
Y29uc3QgdWludDhfdD4pPiYgZnVuY3Rpb24pCiB7CiAgICAgZnVuY3Rpb24oeyBkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5oCmluZGV4IDIwODM0ZDc4OGU0MDM2MTQxY2Y5
MmJlNTRmNDMxYmNiOGE2MGVmNjQuLmEwYTM3MGM3YzY4ZmE5NDQ5ZTQ5MGJhYmZiYTcxMmQ1NGUy
Y2JiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
UnVsZUxpc3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50UnVsZUxpc3RTdG9yZS5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXVEYgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKaW5k
ZXggNTYyMzQwMTQ1OWRhNWZlMzBmNDkxYTQxZmIzNDdhNjc1NzIwMmM0MC4uMTExZjA5MjYzZjgy
MjM4MjlhNWFkMjY0NDM0YmE0MjBmMTk4ZGQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVj
dCBDb250ZW50UnVsZUxpc3RSZXN1bHRzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogc3RydWN0IFNlY3VyaXR5T3JpZ2lu
RGF0YTsKIH0KIApAQCAtMTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShRVUlDS19M
T09LKQogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcm
IHV0aSkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShj
b25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgeyB9CiAjZW5kaWYKIAogICAg
IHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgUmVmPE5hdmlnYXRpb25BY3Rpb24+JiYsIFJlZjxXZWJLaXQ6OldlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgT2JqZWN0KikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmlu
ZGV4IDk0ZGI1NTc1MzI4NWY4YTAzZjBkYTJjM2NhMmQ4NjgxN2MyOTUyOTUuLmRmZWYzZTA3MGY5
NjE2MzA0OTcxNDRkYWYzZjMwMGNiNGNhNTE5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTM3LDcg
KzEzNyw3IEBAIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IEF0dGFjaG1lbnQ6OmZpbGVTaXplRm9y
RGlzcGxheSgpIGNvbnN0CiAgICAgcmV0dXJuIFtmaWxlV3JhcHBlciByZWd1bGFyRmlsZUNvbnRl
bnRzXS5sZW5ndGg7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1l
bnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1faGFzRW5jbG9zaW5nSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtMTU5LDcgKzE1OSw3IEBAIGJvb2wgQXR0YWNobWVudDo6aXNFbXB0eSgpIGNvbnN0CiAgICAg
cmV0dXJuICFtX2ZpbGVXcmFwcGVyICYmICFtX2ZpbGVXcmFwcGVyR2VuZXJhdG9yOwogfQogCi1S
ZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRl
U2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0
CiB7CiAgICAgYXV0byBmaWxlV3JhcHBlciA9IHRoaXMtPmZpbGVXcmFwcGVyKCk7CiAKQEAgLTE3
MCwxMCArMTcwLDEwIEBAIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBB
dHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpCiAgICAgaWYgKCFzZXJpYWxp
emVkRGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKKyAgICByZXR1
cm4gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOwogfQogCi12
b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9u
LCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0
ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiBzZXJpYWxpemVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlw
ZSkKIHsKICAgICBpZiAoIW1fd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggM2U5MjNjZjY0OWQ5
NmUzNGVkMmE1MWY5MTcwZDViMTc0MWZhNjUxOC4uY2U5NjNmMWQzYjhkMDM5ZDhjNDQ5NmJjNTAx
OGYyZDU4NzRkMzZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCkBAIC0yMjIzLDcgKzIyMjMsNyBAQCAtICh2b2lkKV9zdGFydEltYWdlQW5h
bHlzaXM6KE5TU3RyaW5nICopaWRlbnRpZmllcgogCiAtICh2b2lkKV9yZXF1ZXN0UmVzb3VyY2U6
KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNEYXRh
ICosIE5TVVJMUmVzcG9uc2UgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAg
IF9wYWdlLT5yZXF1ZXN0UmVzb3VyY2UocmVxdWVzdCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYgZXJyb3IpIHsKKyAgICBfcGFnZS0+cmVxdWVzdFJl
c291cmNlKHJlcXVlc3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildIChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYg
ZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCksIHJlc3BvbnNl
Lm5zVVJMUmVzcG9uc2UoKSwgbmlsKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsLCBu
aWwsIGVycm9yLm5zRXJyb3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IDZiNzU2YWE0MTdiNTFlZGQ3ZmQzZmZiZGRm
M2MyMmU0NDUzMTkyOTAuLmY1YWYwOTJiYjIyNTgyMDU5NmNiMDI1MzBkMGRiMGI3Njk0NDAzMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0
azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0
azMuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQo
SW50UG9pbnQmJiBwb3NpdGlvbiwgR3RrU2VsZWN0aW9uRGF0YSogZGF0YSwgdW5zaWcKICAgICAg
ICAgaW50IGxlbmd0aDsKICAgICAgICAgY29uc3QgYXV0byogY3VzdG9tRGF0YSA9IGd0a19zZWxl
Y3Rpb25fZGF0YV9nZXRfZGF0YV93aXRoX2xlbmd0aChkYXRhLCAmbGVuZ3RoKTsKICAgICAgICAg
aWYgKGxlbmd0aCA+IDApCi0gICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURh
dGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0
PHNpemVfdD4obGVuZ3RoKSkpOworICAgICAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRDdXN0
b21EYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVf
dD4obGVuZ3RoKSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAppbmRleCBhYzRhMGY0Mzcw
MTUyZWQ1NzJiNTA5MWRmYTUxYmFlYmFiODdmNGU5Li5jODAyOWMxNDBhNmRkMTRiMTk2NDkyMjVi
ODc4MzBlZWMxMzQwMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAKICNpZiBVU0Uo
UVVJQ0tfTE9PSykKICAgICAgICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJp
bmcmIHV0aSkgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7CisgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggNzI1Yjc3MGY2YzU0MjZhYzhjYjdiNjc0
YzQ2MWY4MWUzZWUzNjYwNy4uOGQzYTg1NjQ2MmVhZWY3NDFkOGMyOWUyNTkyZmQ1NzM2NmY1OTlj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5tbQpAQCAtMTIyMCw3ICsxMjIwLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnIKICAgICBb
c3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25E
ZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRT
dGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lV2l0aEZpbGVOYW1lOmZpbGVO
YW1lIHV0aTp1dGldOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVu
dDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVu
dDo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3Rh
dGUpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggYmUxNDM3MGRlMDliZDU3MDJiOWM3
ZGRjZDZjNzdiOGY2ZGE1ZjViOC4uNjgzMzczZWFlMDBmNWRiNDJiODE0NmNlOWQ1MzFiYzhhYzBh
NTRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vz
c1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Byb3h5Q29jb2EubW0KQEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6c2VuZEF1ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucygpCiAgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgYXV0byByZWdp
c3RyYXRpb25EYXRhID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJl
Z2lzdHJhdGlvbnMuZ2V0KCkpOworICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25EYXRhID0g
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7CiAgICAg
ICAgICAgICB3ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlv
Q29tcG9uZW50UmVnaXN0cmF0aW9ucyh7IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkgfSksIDAp
OwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5oCmluZGV4IDkzNDA5NDAwMjE0YjZiNjdiMjA4OWY3ZDBlMzdlZDBjYjFlY2Jh
MjAuLjEyNDE3ODNiY2NjZWEwMDk1YTZlZGJiZDJkNjk2YTZiZTFmNGQ1MzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaApAQCAtNTA0LDcgKzUwNCw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwg
Y29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlKTsKICAgICB2b2lkIHNldEZpbGVB
bmRVUkxUeXBlcyhOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3Ry
aW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIE5TUGFzdGVi
b2FyZCAqKTsKLSAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdl
KiwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0
bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcg
KnBhc3RlYm9hcmRPcmlnaW4pOworICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2Vi
Q29yZTo6SW1hZ2UqLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5T
U3RyaW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0
ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKnBhc3RlYm9hcmRPcmlnaW4pOwogICAgIHZvaWQgcGFzdGVi
b2FyZENoYW5nZWRPd25lcihOU1Bhc3RlYm9hcmQgKik7CiAgICAgdm9pZCBwcm92aWRlRGF0YUZv
clBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICosIE5TU3RyaW5nICp0eXBlKTsKICAgICBOU0FycmF5
ICpuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVz
dGluYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQppbmRleCAxMWNjNzUyOGExZTVmNmE4Njg0ZmNlMDY3ZTBhZGEwNzQ2MmVlNGM2Li43Mzc0OGNh
ZjE0ZWIxMzBlMDc0NTM3MTJhNGUwMzdkZmY0NTViYTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMjk4Myw3ICsyOTgzLDcgQEAgYm9vbCBX
ZWJWaWV3SW1wbDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0
ZWJvYXJkLCBOU0FycmF5ICoKICAgICAgICAgaWYgKFtbdHlwZXMgb2JqZWN0QXRJbmRleDppXSBp
c0VxdWFsVG86V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0pCiAgICAgICAg
ICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6bV9wYWdlLT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkKCkgZm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsK
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChb
dHlwZXMgb2JqZWN0QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0
eXBlcyBvYmplY3RBdEluZGV4OmldKTsKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6
YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOlt0eXBl
cyBvYmplY3RBdEluZGV4OmldXTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ0NTYsNyArNDQ1Niw3
IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldEZpbGVBbmRVUkxUeXBlcyhOU1N0cmluZyAqZmlsZW5h
bWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TCiAgICAgbV9wcm9taXNlZFVSTCA9IHVybDsKIH0K
IAotdm9pZCBXZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1h
Z2UqIGltYWdlLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3Ry
aW5nICp0aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciogYXJjaGl2ZUJ1ZmZlciwgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBO
U1N0cmluZyAqb3JpZ2luSWRlbnRpZmllcikKK3ZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2Vk
RGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuYW1lLCBO
U1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3Ry
aW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBhcmNoaXZl
QnVmZmVyLCBOU1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5TU3RyaW5nICpvcmlnaW5JZGVudGlm
aWVyKQogewogICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFz
dGVib2FyZFdpdGhOYW1lOnBhc3RlYm9hcmROYW1lXTsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IHR5cGVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9i
amVjdHM6V2ViQ29yZTo6bGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKSwgbmlsXSk7
CkBAIC00NjEzLDcgKzQ2MTMsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVB
Y2Nlc3MoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NDYXRlZ29yeSBwYXN0ZUFjYwogICAgIGhpZGVE
T01QYXN0ZU1lbnVXaXRoUmVzdWx0KFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRl
bmllZEZvckdlc3R1cmUpOwogCiAgICAgTlNEYXRhICpkYXRhID0gW3Bhc3RlYm9hcmRGb3JBY2Nl
c3NDYXRlZ29yeShwYXN0ZUFjY2Vzc0NhdGVnb3J5KSBkYXRhRm9yVHlwZTpAKFdlYkNvcmU6OlBh
c3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwotICAgIGF1dG8gYnVmZmVyID0gV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIGF1dG8gYnVm
ZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgaWYgKFdlYkNv
cmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSku
b3JpZ2luKCkgPT0gb3JpZ2luSWRlbnRpZmllcikgewogICAgICAgICBtX3BhZ2UtPmdyYW50QWNj
ZXNzVG9DdXJyZW50UGFzdGVib2FyZERhdGEocGFzdGVib2FyZE5hbWVGb3JBY2Nlc3NDYXRlZ29y
eShwYXN0ZUFjY2Vzc0NhdGVnb3J5KSk7CiAgICAgICAgIGNvbXBsZXRpb24oV2ViQ29yZTo6RE9N
UGFzdGVBY2Nlc3NSZXNwb25zZTo6R3JhbnRlZEZvckdlc3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5k
ZXggMzkzMjBjYWRlYmEyNjEwNWNiMDljODE0MTJiMTNkZmEzNjc2MDVkMy4uYjExZjJkNTNjZmZh
ODVmOTZmMjc0MTFkOWQyZGIwN2Q5NmEwN2MzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0zMzUsMTAg
KzMzNSwxMCBAQCBEb3dubG9hZFByb3h5JiBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3du
bG9hZFByb3h5KFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdAogICAgIHJldHVybiBtX2Rvd25sb2Fk
UHJveHlNYXAtPmNyZWF0ZURvd25sb2FkUHJveHkoZGF0YVN0b3JlLCBwcm9jZXNzUG9vbCwgcmVz
b3VyY2VSZXF1ZXN0LCBmcmFtZUluZm8sIG9yaWdpbmF0aW5nUGFnZSk7CiB9CiAKLXZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6cmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OlJlcXVlc3RSZXNvdXJjZShwYWdlSUQsIHNlc3Npb25JRCwgcmVxdWVz
dCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZShyZXF1ZXN0Lmh0dHBCb2R5KCkpKSwgW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChJUEM6OkRhdGFSZWZlcmVu
Y2UmJiBkYXRhLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImJiBlcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7
CisgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIp
LCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShlcnJvcikpOwogICAgIH0pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aAppbmRleCA3MGI1N2I1NDQ1MzkyNjUzYjQyNmFkNzg4ZmIxMTIyNWI3OTJhZDkyLi5hZjZjZWQ5
ZTcxZDk2ZTFmZGM4MDIwNzhjYTFhMzI2MTFmZjliMmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtNjUsNyAr
NjUsNyBAQCBjbGFzcyBTZXNzaW9uSUQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKIGVudW0gY2xhc3MgU2hvdWxkU2FtcGxlIDogYm9vbDsKQEAgLTEyNCw3ICsxMjQs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJv
Y2Vzc1Byb3h5JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uRGVsYXllZFJlcGx5JiYpOwogCiAgICAgRG93bmxvYWRQcm94eSYgY3JlYXRlRG93
bmxvYWRQcm94eShXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViUGFnZVByb3h5
KiBvcmlnaW5hdGluZ1BhZ2UpOwotICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiYpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJveHlJZGVudGlmaWVy
LCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmKTsKIAogICAgIHZvaWQg
ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJzaXRlRGF0YSk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpT
ZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNp
bmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGVkOWQ4MzM3ZjQ3NGY3NzhlZjc2YjE5
NGM2OTIwYTExODRmMmE0MDkuLjljNjU2MTdiODk2YjE1ZjlmNDdhMWQxNDQ4MGY2ZTM1Y2I2ZWZm
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTMyOSw3ICszMjksNyBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFVTRShBUFBLSVQpCi0gICAgdmlydHVhbCB2b2lkIHNl
dFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmll
cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBl
eHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgPSAwOwog
I2VuZGlmCiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9EZXZpY2VT
cGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSA9IDA7CkBAIC00NjksNyArNDY5LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzaW5nRWxlbWVudCgpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVu
dCYsIGJvb2wgaXNDaGFyRXZlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25JbmZv
cm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhdmVJbWFn
ZVRvTGlicmFyeShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBj
b25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlG
b3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJp
bmdUYXBJZk5lY2Vzc2FyeShXZWJLaXQ6OlRhcElkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDcwN2ZkMmRlN2I3YWMwYjI2MmZkMGY3
NjczYzI4OWQ4ODIzYWJlMTAuLjg5NWU3YjhjZDViOTM5OTI2NDkzNjE1ZDhmNzc1NmNmNTg3YTg2
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjM3Nyw3
ICs2Mzc3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRvd25sb2FkUmVxdWVzdChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW8KICAgICBkb3dubG9hZC5zZXREaWRT
dGFydENhbGxiYWNrKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnJlcXVlc3RSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVz
dFJlc291cmNlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnJlcXVlc3RS
ZXNvdXJjZShpZGVudGlmaWVyKCksIHNlc3Npb25JRCgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCmluZGV4IDkwMjM3YWU1NWZmOTNkZTViOTQ3OTE2OTZlMTM5YWIxNWUzODczNGQuLjBm
ODhiYjViNzllYmM2ZmEyYTllODk2NTQzMzE0ZjAyMDI4ZjY1ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yNTksNyArMjU5LDcgQEAgY2xhc3MgSW50U2l6ZTsK
IGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJ1bkxvb3BPYnNlcnZlcjsKIGNsYXNzIFNl
bGVjdGlvbkRhdGE7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OwogY2xhc3MgVGV4dEluZGlj
YXRvcjsKIGNsYXNzIFZhbGlkYXRpb25CdWJibGU7CkBAIC0xMTgzLDcgKzExODMsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiB3aW5kb3dUb2tlbik7CiAgICAgYm9vbCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZv
clBhc3RlYm9hcmQoKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBtYWtlRmly
c3RSZXNwb25kZXIoKTsKICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNw
b25kZXIoKTsKIApAQCAtMTM3NSw3ICsxMzc1LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxl
RG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkmKTsKICAgICB2b2lkIHJlc3VtZURvd25sb2Fk
KGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJik7CiAgICAgdm9pZCBkb3dubG9hZFJl
cXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RG93bmxvYWRQcm94eSopPiYmKTsKLSAgICB2b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImJik+JiYpOwogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxp
bmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbik7CiAgICAgdm9pZCBjaGFuZ2VTcGVsbGluZ1Rv
V29yZChjb25zdCBTdHJpbmcmIHdvcmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmNwcAppbmRleCBlZDhjYjY1M2VjZmRkMTM0NzNlZTFkMmFmNTBiYWE3YTZm
N2ExMDEyLi5lMTI2NGNlMjFiYTU3ZjJhNDI3NDhlMzNhMWRhZDg4YTBlMjU4YmMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtMTY4LDcgKzE2
OCw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSAtPiBFCiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6
Ok5vbmU7CiB9CiAKLWF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKK2F1dG8gV2ViVVJMU2NoZW1l
VGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KSAtPiBFeGNlcHRpb25UeXBlCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IGRkNmI3MjQx
MGFkZDRlZjYzMWQyODA2OWUxNGEzZjJhMDBjNWNjYjIuLmY2ZmY0NmVlYTVmMjkwYjdiN2UzZmU1
OTIxZGY5ZjE5NGJhY2QxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvblR5cGUgd2ls
bFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCAgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJik+JiYpOwogICAgIEV4Y2VwdGlvblR5cGUgZGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAg
IEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKTsKLSAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpOworICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZURhdGEoUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIEV4Y2VwdGlvblR5cGUg
ZGlkQ29tcGxldGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAgICAgdm9pZCBz
dG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJk
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKaW5kZXggNzg2NmNk
YjE3NzQ2MDA3YWIwYTdhMTdjNTViODdjN2YxNjRjMmJhZS4uNzI3OWY4NDRjYzJiYmQyYjAxN2Zl
MGYwOTdkZTAxODcwYTlhODUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL0NsaXBib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9h
cmQuaApAQCAtMzYsNyArMzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBfR3RrQ2xpcGJvYXJkIEd0a0Ns
aXBib2FyZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNs
YXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb3Jt
YXRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwogICAgIHZv
aWQgcmVhZFRleHQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwogICAgIHZv
aWQgcmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYp
PiYmKTsKLSAgICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgY2hhciosIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYpOworICAgIHZvaWQgcmVhZEJ1
ZmZlcihjb25zdCBjaGFyKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYpOwogICAgIHZvaWQgd3JpdGUoV2ViQ29yZTo6U2Vs
ZWN0aW9uRGF0YSYmKTsKICAgICB2b2lkIGNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAppbmRleCBjMmJmNTE4M2IzMGYxMGU5ZWI3ODEz
Y2RhZGEyMjNlOTE4OWM3NDU5Li41OTY2ZDU1NzRjMjgyZjUzMTY5NDA5NjA4Mjk2MGFlMzM5Y2Ex
MTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3Rr
My5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3Bw
CkBAIC0xMjYsMTUgKzEyNiwxNSBAQCB2b2lkIENsaXBib2FyZDo6cmVhZEZpbGVQYXRocyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZQogc3RydWN0IFJl
YWRCdWZmZXJBc3luY0RhdGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsK
IAotICAgIGV4cGxpY2l0IFJlYWRCdWZmZXJBc3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4mJiBoYW5kbGVyKQorICAgIGV4cGxpY2l0
IFJlYWRCdWZmZXJBc3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKICAgICAgICAgOiBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKQogICAgIHsKICAgICB9CiAKLSAgICBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9u
SGFuZGxlcjsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCi12b2lkIENsaXBi
b2FyZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIENsaXBib2FyZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGd0a19jbGlwYm9hcmRfcmVxdWVzdF9jb250ZW50cyht
X2NsaXBib2FyZCwgZ2RrX2F0b21faW50ZXJuKGZvcm1hdCwgVFJVRSksIFtdKEd0a0NsaXBib2Fy
ZCosIEd0a1NlbGVjdGlvbkRhdGEqIHNlbGVjdGlvbiwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlYWRCdWZmZXJBc3luY0RhdGE+IGRhdGEoc3RhdGljX2Nh
c3Q8UmVhZEJ1ZmZlckFzeW5jRGF0YSo+KHVzZXJEYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKaW5kZXggMDdhYmI3MTMxOTg4NTNiNzg3YzYz
MjRiZDQ4MGIxZTA4OGEyYTNkMy4uNWI4MWZhOGYyOWQzZjdjZjFjM2YwOWQxZmMzYzg4NzM0ZGM1
MWEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0
azQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNw
cApAQCAtMTIwLDE1ICsxMjAsMTUgQEAgdm9pZCBDbGlwYm9hcmQ6OnJlYWRGaWxlUGF0aHMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGUKIHN0cnVjdCBS
ZWFkQnVmZmVyQXN5bmNEYXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CiAKLSAgICBleHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKKyAgICBleHBsaWNp
dCBSZWFkQnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGhhbmRsZXIpCiAgICAgICAgIDogY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkKICAgICB7CiAgICAgfQogCi0gICAgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlv
bkhhbmRsZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5kbGVyOwogfTsKIAotdm9pZCBDbGlw
Ym9hcmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBDbGlwYm9hcmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjb25zdCBjaGFyKiBtaW1lVHlwZXNbXSA9IHsgZm9y
bWF0LCBudWxscHRyIH07CiAgICAgZ2RrX2NsaXBib2FyZF9yZWFkX2FzeW5jKG1fY2xpcGJvYXJk
LCBtaW1lVHlwZXMsIEdfUFJJT1JJVFlfREVGQVVMVCwgbnVsbHB0ciwgW10oR09iamVjdCogY2xp
cGJvYXJkLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggNWM4
ZTNiOTJmMDg5OTJlZjRkYWQ2MmIxNzdhODJmMzE2MDhiYmIyNy4uM2IwNGE4MzNkYmUwYjZiNjZl
ZTE0ZDNjMzAwZjMwNjg3MThiZjJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKQEAgLTE4OCw3ICsxODgsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpbnRlcnByZXRL
ZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IElu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYXZl
SW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpIG92
ZXJyaWRlOworICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJv
b2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3Jl
OjpSb3V0ZVNoYXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
c2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGI2ODRlMWM5NGVhY2I2
NzI4YmIxMzA2OGNiNjk1MjI3MDFmYThmODMuLmZhYzllN2ZiNzhiZWUwZjYyOTQ1NjcyZTNiYjc0
YjllMDUyMGUzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpw
b3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25B
dAogICAgIFttX2NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlOmluZm9d
OwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpz
YXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKIHsKICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+Y3JlYXRlTlNEYXRh
KCk7CiAgICAgVUlJbWFnZURhdGFXcml0ZVRvU2F2ZWRQaG90b3NBbGJ1bShpbWFnZURhdGEuZ2V0
KCksIG5pbCwgTlVMTCwgTlVMTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA5OWFlZDAzNjg4ZTBlNWM2
MTc0NzkwZmRkZDhkMjUwZTlhYjcwYTJlLi4xMmYzYTE1YTQzYjhhYzRkMTUxZmYzMDNjM2M1Zjc3
ZDEzNTMwY2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4NDIsNyArMzg0Miw3IEBAIC0gKEJPT0wp
Y2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6KFNFTClhY3Rpb24gd2l0aFNlbmRlcjooaWQpc2Vu
ZGVyCiAKICAgICAgICAgTlNBcnJheSAqYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEgPSBbcGFzdGVi
b2FyZCBkYXRhRm9yUGFzdGVib2FyZFR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Y29jb2FUeXBlKCkpIGluSXRlbVNldDppbmRpY2VzXTsKICAgICAgICAgZm9yIChOU0RhdGEg
KmRhdGEgaW4gYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEpIHsKLSAgICAgICAgICAgIGF1dG8gYnVm
ZmVyID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAg
ICAgICAgICAgYXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
KTsKICAgICAgICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNo
YXJlZEJ1ZmZlcihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IGZvY3VzZWREb2N1bWVudE9yaWdp
bikKICAgICAgICAgICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICB9CkBAIC02NjUwLDcgKzY2
NTAsNyBAQCBzdGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdpbihV
SVBhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAgICAgICAgIGlmICghZGF0YS5sZW5ndGgp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgYXV0byBidWZm
ZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgaWYgKFdl
YkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQo
KSkub3JpZ2luKCkgIT0gb3JpZ2luSWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybiBOTzsK
IApAQCAtNzYyMyw3ICs3NjIzLDcgQEAgLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tB
Y3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXQKIHsKICAgICBX
ZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0YTsKICAgICBOU1N0cmluZyog
ZmlsZU5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALnBuZyIsIChOU1N0cmlu
ZyopV0VCX1VJX1NUUklORygiU2hhcmVkIEltYWdlIiwgIkRlZmF1bHQgbmFtZSBmb3IgdGhlIGZp
bGUgY3JlYXRlZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0aCBubyBleHBsaWNpdCBuYW1lLiIpXTsK
LSAgICBzaGFyZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07
CisgICAgc2hhcmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CiAgICAgW3Nl
bGYgX3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0YSBpblJlY3Q6IHsgW3NlbGYgY29udmVydFJlY3Q6
Ym91bmRpbmdSZWN0IHRvVmlldzpzZWxmLndlYlZpZXddIH0gY29tcGxldGlvbkhhbmRsZXI6bmls
XTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KaW5kZXggN2E4ZmFjZDMxN2EwNjM5NmQ2M2I4ZGVlYzY1NzFlNTUxM2VjNDk1Zi4uZGQ4Mjk1
M2I5MGY0ZjEzYmRiOGNhNzZjNDI4ZDBjMDcyYzBjNWRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzgsNyArMTM4LDcgQEAgU3Ry
aW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0
dXJuIFN0cmluZygpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcm
KQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbE1hYy5oCmluZGV4IDk2YmY0MjhiMTliNWJhOWQ3NDZhM2VhMTExNTFiZDNj
YWZiMTZkZWMuLjgzZGI3NmUwZDAxZmUyNmY2YWFjMmY5YmRkN2JjZDA2ZjAwZTg1MTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCkBAIC0x
MDAsOCArMTAwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhVbmRvT3JS
ZWRvKSBvdmVycmlkZTsKICAgICBib29sIGV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNv
bnN0IFN0cmluZyYgc2VsZWN0b3IpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0
IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdl
KSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZm
ZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25z
dCBTdHJpbmcmIHRpdGxlLAotICAgICAgICBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZm
ZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0
bGUsCisgICAgICAgIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkws
IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIs
IGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRh
dGVTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNldFNlY3VyZUlucHV0
U3RhdGUoKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUlucHV0Q29udGV4dEFib3V0RGlzY2Fy
ZGVkQ29tcG9zaXRpb24oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQppbmRleCA2MjkwYTgwOTBlMzU5YjYzMDIwOGRiNzEy
NjkyNDA3NGQxYzVkN2MyLi40YTA4MGIyYzE3MTUxNDVjNDE3MmY4NzkwOGFiNGUxYjk3OTI4Y2U5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
Lm1tCkBAIC00MDAsNyArNDAwLDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c3RhcnREcmFnKGNv
bnN0IFdlYkNvcmU6OkRyYWdJdGVtJiBpdGVtLCBjb25zdCBTaGFyZWFibGVCaXQKICAgICBtX2lt
cGwtPnN0YXJ0RHJhZyhpdGVtLCBpbWFnZSk7CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnNl
dFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0
IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGFyY2hp
dmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKK3ZvaWQgUGFnZUNsaWVu
dEltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRs
ZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBvcmln
aW5JZGVudGlmaWVyKQogewogICAgIGF1dG8gaW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7
CiAgICAgaW1hZ2UtPnNldERhdGEoV1RGTW92ZShpbWFnZUJ1ZmZlciksIHRydWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggY2E2Yjg3
M2IxYzgzZjVhNTA3Yjg1ZWEwZmYzMWNlZGFkZDFhYWIwYS4uYjRjZWFlZTY3MzljMDM1NDE1YmUy
ODJkYzRiOTY4NDVjZjFlYTc5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yMjcsNyArMjI3LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94
eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIHZhbHVlOwogfQog
Ci1SZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5Ojpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQor
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzcsNyAr
Mjc3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFMKICAgICAgICAgcmV0dXJuOwogICAgIGF1
dG8gaW1hZ2VCdWZmZXIgPSBzaGFyZWRNZW1vcnlJbWFnZS0+Y3JlYXRlU2hhcmVkQnVmZmVyKGlt
YWdlSGFuZGxlLmRhdGFTaXplKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVC
dWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGFyY2hpdmVCdWZmZXI7
CiAgICAgaWYgKCFhcmNoaXZlSGFuZGxlLmhhbmRsZS5pc051bGwoKSkgewogICAgICAgICBhdXRv
IHNoYXJlZE1lbW9yeUFyY2hpdmUgPSBTaGFyZWRNZW1vcnk6Om1hcChhcmNoaXZlSGFuZGxlLmhh
bmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIGlmICgh
c2hhcmVkTWVtb3J5QXJjaGl2ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNLmNwcAppbmRleCBmYTk0MDI1ZWQ3NDczMGQyOGU3MTY0NjI4NWY5ZTVi
YTY1M2I4ZjEyLi5jMjhmZTY1ZjBjZjE2NDM5OTgxOGFjYTMyZjk4MWNjNzc4ZjFlOTE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCkBA
IC04NCw3ICs4NCw3IEBAIGJvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENv
bmZpZ3VyYXRpb24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25zCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIFJlbW90ZUNETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiB0eXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0Citib29sIFJlbW90ZUNETTo6
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhKSBjb25zdAogewogICAgIC8vIFRoaXMgY2hlY2sgd2lsbCBiZSBk
b25lLCBsYXRlciwgaW5zaWRlIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0
TGljZW5zZSgpLgogICAgIHJldHVybiB0cnVlOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgUmVt
b3RlQ0RNOjpsb2FkQW5kSW5pdGlhbGl6ZSgpCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6TG9h
ZEFuZEluaXRpYWxpemUoKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9u
c2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25z
dAogewogICAgIC8vIFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwgaW5zaWRlIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKCkuCiAgICAgcmV0dXJuIHJl
c3BvbnNlLmNvcHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETS5oCmluZGV4IDBhZGRmODMzNTNiNmVhMWIyZThiMDJjNmI3ZWUzZGFmNDY4Y2QzODMu
LjhjNDU0ZWI4M2U1OTk0YThlNGQ1OTJkNTFkZjkxZmY5YjUyM2NiZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaApAQCAtNDgsMTMgKzQ4LDEz
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29y
ZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3Vw
cG9ydHNDb25maWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBXZWJDb3JlOjpDRE1LZXlT
eXN0ZW1Db25maWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29u
c3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24o
Y29uc3QgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGUmLCBjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBjb25zdCBm
aW5hbDsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0
IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBXZWJD
b3JlOjpDRE1SZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29u
c3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNE
TVJlc3RyaWN0aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50
IHBlcnNpc3RlbnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5h
bDsKICAgICBib29sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRD
bGVhcmFibGUoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0
IGZpbmFsOwogICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4gY3JlYXRlSW5zdGFuY2Uo
KSBmaW5hbDsKICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNh
bml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiAgICAgVmVjdG9y
PEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVkSW5pdERhdGFUeXBlczsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNw
cAppbmRleCBiNWRlYTIxZTk5NWE3MzdmMDM2ZjY0NTM4YzFmYjNlY2I1ZTZiYjU1Li5hMTNlNTE0
NjBmNmJiOWY4MGVmM2QxYTg0MmVmYzBiOWY0NDU5MGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcApAQCAt
NzgsNyArNzgsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZp
Z3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQwogICAgIG1fZmFjdG9yeS0+Z3B1
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpJbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24o
Y29uZmlndXJhdGlvbiwgZGlzdGluY3RpdmVJZGVudGlmaWVycywgcGVyc2lzdGVudFN0YXRlKSwg
V1RGTW92ZShjYWxsYmFjayksIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5z
dGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
Y2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVDRE1J
bnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewog
ICAgIGlmICghbV9mYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKEZhaWxlZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
LmgKaW5kZXggMTA2YmEzYjExNjFjOGRmMDlkNzFkZmU2NzliYTMzZDQyMzA3OWU5Ni4uMmM3ODUx
ZTQ0MGIwOGE1MmEyYWU3MGRhN2U0MTg4ODJlM2M2MTQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaApAQCAtNTQs
NyArNTQsNyBAQCBwcml2YXRlOgogCiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0
aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6UmVtb3Rl
OyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywg
QWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lk
IHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nl
c3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmlu
YWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwog
ICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25m
aWd1cmF0aW9uLmtleVN5c3RlbTsgfQogICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNw
cAppbmRleCBhZjBiYWQ0YzkwZDhkZDUxMzc3NGFlZjZhMTViNzdiYTg5ZmM1MDY0Li5jNzQwYzA0
NTA2ZmRlZGFjOWY0Y2Y1MDJjMjA1YThhMzdmY2E0NTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb24uY3BwCkBAIC00OSw3ICs0OSw3IEBAIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmCiB7CiB9
CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9mYWN0
b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3Ry
aW5nKCksIGZhbHNlLCBGYWlsZWQpOwpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRv
bVN0cmluZwogICAgIH0sIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNl
VHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsKICAgICAgICAgY2FsbGJhY2soZmFs
c2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCk7CkBA
IC0xMDksNyArMTA5LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNl
c3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnMKICAgICB9CiAKICAgICBt
X2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW92ZVNl
c3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XSAoS2V5U3RhdHVzVmVjdG9yJiYgY2hhbmdlZEtleXMsIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFy
ZWRCdWZmZXJDb3B5PiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKLSAgICAg
ICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gcmVhbE1lc3NhZ2UgPSBzdGQ6Om51
bGxvcHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PiByZWFsTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKG1lc3NhZ2UgJiYgbWVz
c2FnZS52YWx1ZSgpLmJ1ZmZlcigpKQogICAgICAgICAgICAgcmVhbE1lc3NhZ2UgPSBtZXNzYWdl
LnZhbHVlKCkuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgY2FsbGJhY2soV1RG
TW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUocmVhbE1lc3NhZ2UpLCBzdWNjZWVkZWQgPyBTdWNj
ZWVkZWQgOiBGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXggNGZmZTRjYWNl
Y2NkZTQzZDVjYjExZTIzNmNhMDQ1YWNkYTgzYTdlYi4uNGU0Y2QyYzAwNWM2YjAwNjVmOWNkYjE4
OGM0YmNlMGI1YmZhNjYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oCkBAIC01OSw4ICs1
OSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldENsaWVudChXZWFrUHRyPFdlYkNvcmU6OkNE
TUluc3RhbmNlU2Vzc2lvbkNsaWVudD4mJiBjbGllbnQpIGZpbmFsIHsgbV9jbGllbnQgPSBXVEZN
b3ZlKGNsaWVudCk7IH0KICAgICB2b2lkIGNsZWFyQ2xpZW50KCkgZmluYWwgeyBtX2NsaWVudCA9
IG51bGxwdHI7IH0KLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgaW5p
dERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAg
dm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwg
TGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAg
ICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IGNvbnN0IFN0cmluZyYgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25D
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcAppbmRleCA5YTIxOWE1NDRlNTUzODNmNTRlNzFk
YWJkMzU0Y2M0NDBhNDE0MmI5Li42MjkyNjc5OGM1YzExMzI0YTMxYWE1MGNkYTdlZDFmYmY3NGZl
NzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBS
ZW1vdGVJbWFnZURlY29kZXJBVkY6OnNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nIGV4
cGVjdGVkQ29udGVudFNpemUKIAogLy8gSWYgYWxsRGF0YVJlY2VpdmVkIGlzIHRydWUsIHRoZSBj
YWxsZXIgZXhwZWN0cyBlbmNvZGVkRGF0YVN0YXR1cygpIHRvIGJlID49IEVuY29kZWREYXRhU3Rh
dHVzOjpTaXplQXZhaWxhYmxlCiAvLyBhZnRlciB0aGlzIGZ1bmN0aW9uIHJldHVybnMgKGluIHRo
ZSBzYW1lIHJ1biBsb29wKS4KLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXREYXRhKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIFJlbW90ZUltYWdl
RGVjb2RlckFWRjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKIHsKICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCmluZGV4IGU1Y2ZlOTRlY2QzYTljMDYwMGZj
MDAzMjBmZjQzMDYxYzkwZWQ2OWIuLjQwZDM3MzRmN2EzMjJlOGJhY2I5ZDFjMGRlYTcwNzllMmFk
MTdlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBSZW1v
dGVJbWFnZURlY29kZXJBVkYgZmluYWwKICAgICA6IHB1YmxpYyBXZWJDb3JlOjpJbWFnZURlY29k
ZXIKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlKFJl
bW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXImIG1hbmFnZXIsIGNvbnN0IFdlYkNvcmU6OkltYWdl
RGVjb2RlcklkZW50aWZpZXImIGlkZW50aWZpZXIsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpCisgICAgc3RhdGljIFJlZjxSZW1vdGVJbWFnZURlY29kZXJB
VkY+IGNyZWF0ZShSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBX
ZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUltYWdlRGVjb2RlckFWRihtYW5hZ2VyLCBp
ZGVudGlmaWVyLCBtaW1lVHlwZSkpOwogICAgIH0KQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgog
ICAgIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90LCBXZWJDb3JlOjpTdWJzYW1wbGluZ0xldmVsID0gV2ViQ29yZTo6U3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdCwgY29uc3QgV2ViQ29yZTo6RGVjb2RpbmdPcHRpb25zJiA9IFdlYkNvcmU6OkRl
Y29kaW5nT3B0aW9ucyhXZWJDb3JlOjpEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7
CiAKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbDsKLSAg
ICB2b2lkIHNldERhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVj
ZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAg
dm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKaW5kZXggNDFkNTM4ODAyM2QzOTE0OTUyMTgzNWY2ODhk
ZTRkNDhmNjVkNzY3ZS4uMDgyYjMzNjZjOGJjNzEzMGQ3NWQ1Njk4YTdkNzllNjg5MmFkOGY3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkZNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmUHRy
PFJlbW90ZUltYWdlRGVjb2RlckFWRj4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6Y3Jl
YXRlSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4g
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6Y3JlYXRlSW1hZ2VEZWNvZGVyKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9u
IGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPEltYWdlRGVjb2RlcklkZW50aWZpZXI+
IGltYWdlRGVjb2RlcklkZW50aWZpZXI7CiAgICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlIGRhdGFSZWZlcmVuY2UgeyBkYXRhIH07CkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBSZW1v
dGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpzZXRVc2VHUFVQcm9jZXNzKGJvb2wgdXNlR1BVUHJv
Y2VzcykKICAgICBJbWFnZURlY29kZXI6Omluc3RhbGxGYWN0b3J5KHsKICAgICAgICAgUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGOjpzdXBwb3J0c01lZGlhVHlwZSwKICAgICAgICAgUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGOjpjYW5EZWNvZGVUeXBlLAotICAgICAgICBbdGhpc10oU2hhcmVkQnVmZmVyJiBk
YXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pIHsKKyAg
ICAgICAgW3RoaXNdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikgewogICAgICAgICAgICAgcmV0dXJuIGNy
ZWF0ZUltYWdlRGVjb2RlcihkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKTsKICAgICAgICAgfQogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRk1hbmFnZXIuaAppbmRleCBjMjM3ODJiNjUwNGVjNzliZTQ2ZTEyNmY0ZTU5MWIzZmY3ZjZk
YmE4Li4zNjE4YWZkMTIwOThiNTU3NmI0ZGQ0ZmZiZjNjMDZmYmE4NDJhNzY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFW
Rk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAg
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAKIHBy
aXZhdGU6Ci0gICAgUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlSW1hZ2VEZWNv
ZGVyKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
V2ViQ29yZTo6QWxwaGFPcHRpb24sIFdlYkNvcmU6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KTsKKyAgICBSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGVJbWFnZURlY29kZXIo
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgV2ViQ29yZTo6QWxwaGFPcHRpb24sIFdlYkNvcmU6OkdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKTsKIAogICAgIC8vIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQuCiAgICAgdm9p
ZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA5NjZmYzkzYjc3YWZhYTNl
NjIwOGQ3YWJhNWFlZDJjN2E5NGM3NGIyLi4wMDVhMzdjYzI2ZWM0YzA5MDFiZjRmMzcxMjIzODY1
ZGUyZDE2NmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTc4LDcgKzc4
LDcgQEAgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6flNvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGUoKQogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIudG9V
SW50NjQoKSk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6YXBwZW5kKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6
YXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKCFt
X2dwdVByb2Nlc3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZS5oCmluZGV4IDM2MDE3NWJmYmU5ZDFhZjgzZWQ1NzkxMzczYjc3NWVlNzUwYWM3Y2Mu
LmVhNWZhM2VjMzZjMmI4NTllZTU3OGNjZDBlMDM0OGM3M2NiODZkNjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBTb3Vy
Y2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcwogICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wpIGZpbmFs
OwotICAgIHZvaWQgYXBwZW5kKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwor
ICAgIHZvaWQgYXBwZW5kKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNldFBhcnNlclN0YXRl
KCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVy
UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJl
Y29yZGVyUHJpdmF0ZS5jcHAKaW5kZXggMTFiNGE4NmU0ODUyZjZjMjA2MWZhM2ZjOWFmMjlmODg5
OWY0ZWI5Zi4uYjQwODlmZDM1NDhjOTdmMTdmYzJiOWZiMDAyNzgwZDY0M2NmMjNiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclBy
aXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlh
UmVjb3JkZXJQcml2YXRlLmNwcApAQCAtMTY1LDEwICsxNjUsMTAgQEAgdm9pZCBNZWRpYVJlY29y
ZGVyUHJpdmF0ZTo6c3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KiBzdG9yYWdlLCBjb25zdCBX
ZWJDb3JlOjoKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVj
b3JkZXI6OkF1ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkIHsgU2hhcmVkTWVtb3J5OjpJUENIYW5k
bGUgeyBXVEZNb3ZlKGhhbmRsZSksIGRhdGFTaXplIH0sIGZvcm1hdCwgZnJhbWVDb3VudCB9LCBt
X2lkZW50aWZpZXIpOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpmZXRjaERhdGEo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9jb25uZWN0
aW9uLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OkZl
dGNoRGF0YSB7IH0sIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBtaW1lVHlwZSA9IG1pbWVUeXBlKCldKGF1dG8mJiBkYXRhLCBkb3VibGUgdGltZUNvZGUp
IG11dGFibGUgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmIChkYXRh
LnNpemUoKSkKICAgICAgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
ZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
YnVmZmVyKSwgbWltZVR5cGUsIHRpbWVDb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCmluZGV4IDMw
M2E1NGY3NmYxODVlOTY0NTRlZjlmNWJiNDYxZjI4ZTEyNjc4NmQuLjU3NmZkMWM2ZTk3YzBjYWQ4
Y2JmZWM5NGUzYmQzNjMzMDc2ZTQ0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaApAQCAtNTcsNyAr
NTcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQ
cml2YXRlCiAgICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpNZWRpYVNhbXBs
ZSYsIFdlYkNvcmU6OlZpZGVvU2FtcGxlTWV0YWRhdGEpIGZpbmFsOwotICAgIHZvaWQgZmV0Y2hE
YXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJikgZmluYWw7CisgICAgdm9pZCBm
ZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJikgZmlu
YWw7CiAgICAgdm9pZCBzdG9wUmVjb3JkaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikg
ZmluYWw7CiAgICAgdm9pZCBzdGFydFJlY29yZGluZyhTdGFydFJlY29yZGluZ0NhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IFdURjo6TWVkaWFU
aW1lJiwgY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBXZWJDb3JlOjpB
dWRpb1N0cmVhbURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCAyYzEzNGU5ZTcxOWY5NzI2
NWM4ZDA5MDMzNDljMWUyZjljMWUyZTg0Li4wMzUzYWFiZjdkNGI5MjVhYTJmMTU2MmQ1NzNhYWYz
MDkzYzgzYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRv
ckNsaWVudC5oCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7
CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgTm9k
ZTsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJp
bmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYktpdDo6V2Vi
UGFnZSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0
ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0
YUZvclJhbmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGdldFBh
c3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRX
cml0ZVRvUGFzdGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wg
cGVyZm9ybVR3b1N0ZXBEcm9wKFdlYktpdDo6V2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJh
Z21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYsIGJvb2wpIHsgcmV0dXJuIGZhbHNl
OyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmgKaW5kZXggYTA2MzUyMDQzMzViM2FiMGU2ZGZiMGM2Nzc3NjdmNDI4ZThhNzdl
Mi4uMTgwYjExMTFlY2YwMTEzMjgwOTI2NmExYmNlMjdkMjYwZTRmYTAwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC0z
Niw3ICszNiw3IEBAIGNsYXNzIERPTVdpbmRvd0V4dGVuc2lvbjsKIGNsYXNzIERPTVdyYXBwZXJX
b3JsZDsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFz
cyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflBh
Z2VMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWRV
UkxSZXF1ZXN0KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIEFQSTo6T2JqZWN0KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkRGF0YVJlcXVl
c3QoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIGNvbnN0IFdURjo6VVJMJiwgQVBJOjpPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
d2lsbExvYWREYXRhUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgV1RG
OjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6VVJMJiwgQVBJOjpPYmpl
Y3QqKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmpl
Y3Q+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUm
LCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIu
bW0KaW5kZXggZGY4ZDg4MDQ3ZmY2NzMxN2NiNGFiZmUzNTEzMDVhMDc1YTBjM2FiZi4uYmM4ZWFi
OTg3OWJlODBkODUxYjAwMWMyMDBjMGYxODU3YTZjN2EyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlci5tbQpAQCAtNjM0LDcgKzYzNCw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxl
Z2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVn
CiAgICAgICAgICAgICBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciB3aWxsV3Jp
dGVSYW5nZVRvUGFzdGVib2FyZDp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5n
ZXQoKSldOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJh
bmdlKFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxl
UmFuZ2U+JiByYW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBm
aW5hbAorICAgICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQ
YWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBW
ZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKICAgICAgICAgewogICAgICAgICAg
ICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTY0Miw3ICs2NDIsNyBAQCAtICh2b2lkKV9zZXRFZGl0
aW5nRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRp
bmdEZWxlZwogICAgICAgICAgICAgYXV0byBkYXRhQnlUeXBlID0gW21fY29udHJvbGxlci0+X2Vk
aXRpbmdEZWxlZ2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlcjptX2NvbnRyb2xsZXIgcGFzdGVib2FyZERhdGFGb3JSYW5nZTp3cmFwcGVyKFdlYktpdDo6
Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICAgICAgZm9yIChOU1N0cmluZyAq
dHlwZSBpbiBkYXRhQnlUeXBlKSB7CiAgICAgICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFw
cGVuZCh0eXBlKTsKLSAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKKyAg
ICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YUJ5VHlwZVt0eXBlXSkpOwogICAgICAgICAgICAgfTsKICAgICAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCmluZGV4
IGMzOTgxMWVhYzk0ZTI5NWUzODMzYmZjZGQ2YzE4MmE0YTMxMDE5OWIuLjM1MzYwNjUyNWI4NDU3
NjhlMzAxNTgzOGY4OTExZGU4ZjJlMDgwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiBw
YWdlLCBjb25zdAogICAgICAgICBtX2NsaWVudC53aWxsV3JpdGVUb1Bhc3RlYm9hcmQodG9BUEko
JnBhZ2UpLCB0b0FQSShjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6Omdl
dFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2
b2lkIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZShXZWJQYWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFu
Z2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVk
QnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIGlmIChtX2NsaWVudC5nZXRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKSB7CiAgICAgICAgIFdLQXJyYXlSZWYgdHlwZXMgPSBudWxscHRyOwpA
QCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Ojpn
ZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvCiAgICAgICAgICAgICBw
YXN0ZWJvYXJkVHlwZXMuYXBwZW5kKHR5cGUtPnN0cmluZygpKTsKIAogICAgICAgICBmb3IgKGF1
dG8gaXRlbSA6IGRhdGFBcnJheS0+ZWxlbWVudHNPZlR5cGU8QVBJOjpEYXRhPigpKSB7Ci0gICAg
ICAgICAgICBhdXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVt
LT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOwogICAgICAgICAg
ICAgcGFzdGVib2FyZERhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIH0KICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKaW5kZXgg
ZDk4ZWUxYzE1NWQ0ZmI4MjkyYTU4ZDljNThlODgwMDdhMTM0MDUxYS4uMzFlMTM5NmU3MGFkNjBj
MTlkOTNjNjc1Yzc2MzQ2ZmUwZGE3OTQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkQ2hhbmdlKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFs
OwogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5v
dGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdl
YlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFs
OwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JS
YW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4m
LCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0
ZVRvUGFzdGVib2FyZChXZWJQYWdlJikgZmluYWw7CiAgICAgYm9vbCBwZXJmb3JtVHdvU3RlcERy
b3AoV2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpT
aW1wbGVSYW5nZSYgZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlKSBmaW5hbDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmluZGV4IGEzNGUyMTJk
MDdhZjJmZjU3M2UxYThhMzQwZWMxZDNmY2ViNDJhMWEuLjk0ZmVkMmU3ZTM2MzAyOTFmOTlmNTM3
OGFjYmRkMmMzOTUwZDNlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuY3BwCkBAIC02MiwxMCArNjIsMTAgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBS
ZXMKIHN0YXRpYyB2b2lkIHJlbGVhc2VTaGFyZWRCdWZmZXIodW5zaWduZWQgY2hhciosIGNvbnN0
IHZvaWQqIGRhdGEpCiB7CiAgICAgLy8gQmFsYW5jZWQgYnkgcmVmKCkgaW4gSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KCkuCi0gICAgc3RhdGljX2Nh
c3Q8Y29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOworICAgIHN0
YXRpY19jYXN0PGNvbnN0IFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwogfQogCi12b2lk
IEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQ
YWdlJiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciog
c2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29k
aW5nTmFtZSwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
KQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVl
c3QoV2ViUGFnZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6
Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC53aWxsTG9hZERhdGFSZXF1
ZXN0KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmgKaW5kZXggMzZiZDk4MGIyZmFhMWFmNDVhYzMxMDZlYjAxZTlmMzc2YmExM2Fj
Zi4uODYzYmRhYjYyODRjYTNhYWQyZjlkNWZmZjVmZDY4ZWFiOGIyYjczMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtNDcsNyArNDcsNyBAQCBw
dWJsaWM6CiAgICAgZXhwbGljaXQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KGNvbnN0
IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudEJhc2UqKTsKIAogICAgIHZvaWQgd2lsbExvYWRVUkxS
ZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9i
amVjdCopIG92ZXJyaWRlOwotICAgIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwg
Y29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6
T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2Um
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0
IFVSTCYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0
PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0
PiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggOThhNmUyZTdiNTdl
NTIzMThmNDJjOGNkMTdlNGYwZGUwNTA5NDA5My4uMDIyNzBhNTNhZjliYThiZjgwZDdjM2IzZGNk
YzhjZWI1NjUxNzZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yODMsNyArMjgz
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgIAogICAgIGF1dG8gYnVmZmVyID0gaGFu
ZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKSB7Ci0gICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVS
ZXNvdXJjZSBoYW5kbGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciBy
ZXNvdXJjZSB1cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODcyOThiMzcyNTA0OTg1
NzFhZTQ4ZjhjOTIxODVlYjIwZTMxZGUxMi4uMzEwZmNhNzg3NWMzMmMzY2Q3NDc4ZGI2NGY1OWFj
MmNmNTAxNjM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgYm9vCiAgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hv
dWxkSW50ZXJjZXB0UmVzcG9uc2UobV9jb3JlTG9hZGVyLT5mcmFtZSgpLCByZXNwb25zZSkpIHsK
ICAgICAgICAgYXV0byBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyID0gbV9jb3JlTG9hZGVy
LT5pZGVudGlmaWVyKCk7CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5iZWdpbkludGVy
Y2VwdGluZ1Jlc3BvbnNlKGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIpOwotICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKG1fY29yZUxv
YWRlci0+ZnJhbWUoKSwgcmVzcG9uc2UsIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRl
bnRpZmllciwgcG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUocG9saWN5
RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGluc3Bl
Y3RvclJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGEpIG11dGFibGUg
eworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3Bv
bnNlKG1fY29yZUxvYWRlci0+ZnJhbWUoKSwgcmVzcG9uc2UsIGludGVyY2VwdGVkUmVxdWVzdElk
ZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaW50ZXJjZXB0
ZWRSZXF1ZXN0SWRlbnRpZmllciwgcG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIGluc3BlY3RvclJlc3BvbnNlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
b3ZlcnJpZGVEYXRhKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghbV9jb3JlTG9hZGVyIHx8
ICFtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkgewogICAgICAgICAgICAgICAgIFdFQlJFU09V
UkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBjb250aW51aW5n
IGludGVyY2VwdCBsb2FkIGJlY2F1c2Ugbm8gY29yZUxvYWRlciBvciBubyBJRCIpOwogICAgICAg
ICAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5jb250aW51ZVJlc3BvbnNlKGludGVyY2Vw
dGVkUmVxdWVzdElkZW50aWZpZXIpOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwg
aW50NjRfdCBlCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3Jr
UmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2Un
dmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJj
ZXB0Q29udHJvbGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkp
KSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9pbnRl
cmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwg
ZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9h
ZGVyKQogICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKQEAgLTI5NSwxMSArMjk1LDExIEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFi
bGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kCiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2Vzcykg
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZSBmb3IgJyVzJyIsIG1fY29yZUxv
YWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBXRUJSRVNPVVJDRUxP
QURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiIpOwogCi0gICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcElu
U2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1Io
IlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBmcm9t
IHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7Ci0gICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVB
U0VfTE9HKCJkaWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVy
Iik7CisgICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVz
b3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciIpOwogICAgICAg
ICBpZiAoYXV0byogZnJhbWUgPSBtX2NvcmVMb2FkZXItPmZyYW1lKCkpIHsKICAgICAgICAgICAg
IGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAgICAgICBwYWdlLT5k
aWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OkRp
YWdub3N0aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxFcnJvcktleSgpLCBXZWJDb3JlOjpEaWFnbm9z
dGljTG9nZ2luZ0tleXM6OmNyZWF0ZVNoYXJlZEJ1ZmZlckZhaWxlZEtleSgpLCBXZWJDb3JlOjpT
aG91bGRTYW1wbGU6Ok5vKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4uaAppbmRleCA0MmRlNDYxNDE5Nzc4YjdjNDUwZmNhMWViMDM3YzFjZTk3
ZDJkNjMxLi5hN2Y0NWM4NDAxYjJmZDJmODcwZTM2NzhjNThmYzMxMGMyZTFmMjQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC0y
MDcsNyArMjA3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hh
bmdlZChib29sKSBmaW5hbCB7IH0KICAgICBib29sIGdldEZvcm1WYWx1ZShTdHJpbmcmIGZvcm1W
YWx1ZSkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGhhbmRsZVNjcm9sbChXZWJD
b3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KSBmaW5hbDsK
LSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29u
c3QgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxp
dmVSZXNvdXJjZURhdGEoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHdpbGxEZXRhY2hSZW5kZXJl
cigpIGZpbmFsOwogICAgIGJvb2wgcGx1Z2luSGFuZGxlc0NvbnRlbnRPZmZzZXRGb3JBY2Nlc3Np
YmlsaXR5SGl0VGVzdCgpIGNvbnN0IGZpbmFsOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggZDIzYWJiOWU2NTExYjEz
YmJkNTIzYWY0NTFmNDQxNzg3M2E2YzFlMC4uZDQ3ZjMyYjdkNDkxOTU2YmRjZTc3YmZlNmYxNWNh
Nzg2NWJmZDE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLm1tCkBAIC0yNTUyLDcgKzI1NTIsNyBAQCB2b2lkIFBERlBsdWdpbjo6bm90
aWZ5RGlzcGxheU1vZGVDaGFuZ2VkKGludCkKICAgICB1cGRhdGVTY3JvbGxiYXJzKCk7CiB9CiAK
LVJlZlB0cjxTaGFyZWRCdWZmZXI+IFBERlBsdWdpbjo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0
CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUERGUGx1Z2luOjpsaXZlUmVzb3VyY2VE
YXRhKCkgY29uc3QKIHsKICAgICBOU0RhdGEgKnBkZkRhdGEgPSBsaXZlRGF0YSgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCmluZGV4IDg4ZjQ1Y2U1MWNlMzFk
ZjBjNWIzYjc1ODYyMzZjM2YwZDljOTNhZDMuLjU4ZDcwYTM5YTE2ZDZhNGMwZThiMGNhOWQwM2Fj
M2QzN2FlZGZjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5o
CkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50UmVjdDsKIGNsYXNz
IEludFNpemU7CiBjbGFzcyBTY3JvbGxiYXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTI4OCw3
ICsyODgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNvbnZl
cnRUb1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludEluTG9jYWxDb29yZGlu
YXRlcykgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0ID0gMDsK
IAogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCAwOGNmYmI1NTBlZGNiNTZjNTk5N2Ew
NDM2YzI5NjUzZWYwZTgwM2VmLi40ZDUzNzM0NzI3MTM2Y2Q2ZjQxZTA5NzExZWI3YmZkMDM0N2Q0
YjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcApAQCAtOTIzLDcgKzkyMyw3IEBAIHZvaWQgUGx1Z2luVmlldzo6d2lsbERldGFjaFJlbmRl
cmVyKCkKICAgICBtX3BsdWdpbi0+d2lsbERldGFjaFJlbmRlcmVyKCk7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAorUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEoKSBj
b25zdAogewogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikgewogICAgICAg
ICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXgg
NzMyNzQxZDk1ZWU2YTJiNjU2ZjNkOGMwOGM4YWZmYmE3ZTJmYWY2My4uZjc1YWM4OWJmMzlhNTFl
MDE4ZDI2MmMwYmU3YzBhNjJkZWI2OTNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgc2hvdWxkQWxsb3dTY3JpcHRpbmcoKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIGJv
b2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmKTsKICAgICBTdHJpbmcgZ2V0U2VsZWN0aW9uRm9yV29yZEF0UG9pbnQoY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYpIGNvbnN0OwogICAgIGJvb2wgZXhpc3RpbmdTZWxlY3Rpb25Db250
YWluc1BvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggNDJlZDk3ZGU1ZGMwZmMwMmI5MzNmNGM1
OTVmMmE5ZGI3ZTJkZGVjOS4uZWU0MGZiOTU4NWU3OWQ4NmIzY2ZkMmY1NzllZDQ2ZTYxYjllYzYz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTcyLDcgKzcy
LDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3Bv
bnNlLCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1fZmV0Y2hJ
ZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpk
aWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggMmM3MzcxZjFk
ZGY0MGU0NmFlMzQxMzlmM2U0MGI5YzE1YTM0ZmJkOC4uZTk4N2UxOWFjOGI3Mzg4NzFhYWQ4MmI0
YjM4NTYyOTY4YTJiNmM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApA
QCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsK
LSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNo
KFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaCgpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCBhMDEwM2IwMmEwZjRkNGE5MWUxN2YzNTJi
ZjhmOWYxMDUyNWQ4Y2VlLi4yOGMxNGJhNTM2NjNjNTViNjFiMTA5ODEyYzA0OGEwMjA1NmJkMzhk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgV2ViRWRp
dG9yQ2xpZW50OjpzaG91bGRBcHBseVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVydGllcyYgc3R5bGUs
IGNvbnN0IHN0ZDo6CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIFdl
YkVkaXRvckNsaWVudDo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJl
ZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgV2ViRWRpdG9y
Q2xpZW50OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRG
aWxlTmFtZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJBdHRhY2htZW50SWRlbnRp
ZmllckZyb21EYXRhKGlkZW50aWZpZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxlTmFtZSwg
ZGF0YS5nZXQoKSkpOwogfQpAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50
Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1w
bGVSCiAgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLndpbGxXcml0ZVRv
UGFzdGVib2FyZCgqbV9wYWdlLCByYW5nZSk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYg
cmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYgcmFuZ2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIG1fcGFnZS0+aW5qZWN0
ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKCptX3BhZ2Us
IHJhbmdlLCBwYXN0ZWJvYXJkVHlwZXMsIHBhc3RlYm9hcmREYXRhKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaAppbmRleCBlMTZiMGNmMzgxODA2MTEwZGJjNmUxN2ViNzVkOTFkM2U0YjA5YTRlLi4wZjcz
ZTRmYjYzNjIyYzZmYWU5NjM1MjE4YjU3ZjA2MGUyNjExMjUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRl
ckRlbGV0ZShjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYsIGNvbnN0IFdlYkNvcmU6OlNpbXBs
ZVJhbmdlJikgZmluYWw7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIHZv
aWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVu
dElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29u
c3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmll
cihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcm
IGZpbGVQYXRoKSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3Rv
cjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpIGZpbmFsOwpAQCAtODgsNyAr
ODgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZv
aWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRv
UGFzdGVib2FyZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgCiAgICAgdm9pZCByZWdpc3Rl
clVuZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlclJl
ZG9TdGVwKFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAppbmRleCA5NTkyMjNkNzc2ZWY5MzJhYjFhNzM3MTYwNmUzMjkxZDIzMjlkM2NiLi4x
NGEwODNjYTIwN2E5MDYzY2Y4MGIxZTdlOTY3MGE0ODdjZjRkMzk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKQEAgLTExODgsNyArMTE4OCw3IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAg
ICAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJl
c291cmNlRGF0YSgpOworICAgICAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICAgICAg
ICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBt
YWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBtYWlu
UmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgICAgICAg
ICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRpbmdE
YXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRG
aWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAKaW5kZXggNGM2NjZkZDQwZDVlOWQ0NTFhMWUwNmMxMWZkMDgwMDI3YTk4
YjJhMS4uNjBjMjA3ZWQwZWVhODM2YjQ4NzBkZGE3YzZiYjMwYTE0NTRjYTQ5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGViCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0
UGFzdGVib2FyZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSks
IE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlczo6UmVwbHko
dHlwZXMpLCAwKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCogY29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCog
Y29udGV4dCkKIHsKICAgICAvLyBGaXJzdCBjaGVjayB0aGUgb3ZlcnJpZGVzLgogICAgIFZlY3Rv
cjx1aW50OF90PiBvdmVycmlkZUJ1ZmZlcjsKICAgICBpZiAoV2ViUGFzdGVib2FyZE92ZXJyaWRl
czo6c2hhcmVkUGFzdGVib2FyZE92ZXJyaWRlcygpLmdldERhdGFGb3JPdmVycmlkZShwYXN0ZWJv
YXJkTmFtZSwgcGFzdGVib2FyZFR5cGUsIG92ZXJyaWRlQnVmZmVyKSkKLSAgICAgICAgcmV0dXJu
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7
CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVm
ZmVyKSk7CiAKICAgICAvLyBGYWxsYmFjayB0byBtZXNzYWdpbmcgdGhlIFVJIHByb2Nlc3MgZm9y
IG5hdGl2ZSBwYXN0ZWJvYXJkIGNvbnRlbnQuCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUg
aXBjSGFuZGxlOwpAQCAtMjA5LDcgKzIwOSw3IEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjCiAg
ICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50OwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6c2V0QnVmZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxl
IGhhbmRsZTsKICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKSB7CkBAIC0zMjQsNyAr
MzI0LDcgQEAgVmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkRmlsZVBh
dGhzRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHAKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpy
ZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogCiAgICAgSVBDOjpT
aGFyZWRCdWZmZXJDb3B5IGRhdGE7CkBAIC00MDYsNyArNDA2LDcgQEAgc3RkOjpvcHRpb25hbDxQ
YXN0ZWJvYXJkSXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJ
dGVtQXRJbmQKICAgICByZXR1cm4gaW5mbzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENv
bnRleHQqIGNvbnRleHQpCitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFz
dGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRU
eXBlLCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6
V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGlwY0hh
bmRsZSksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDA0NWQ0Y2I4OWE5
NjY0YTA4ZTFiODFhMDUzMDM1ZGM1ZDlkMGM1OTkuLjIwMGI2YzAxNTliNjg4YzcyYTNmYWRmYmFl
MGE2OTQ4MzFiOTM2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU2LDcg
KzU2LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpbnQgZ2V0TnVtYmVy
T2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0
ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmlu
Zz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5h
bWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTY2LDcgKzY2LDcg
QEAgcHJpdmF0ZToKIAogICAgIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFR5cGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
Ci0gICAgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwor
ICAgIGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qg
c2V0VVJMKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJy
aWRlOwogICAgIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpAQCAtNzgsNyArNzgsNyBA
QCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4g
cmVhZEZpbGVQYXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOwogICAgIHZv
aWQgd3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3Jl
OjpTZWxlY3Rpb25EYXRhJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTg5LDcgKzg5
LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVi
b2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikg
b3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJl
YWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1z
Q291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3Rl
Ym9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRleCA3OTU2MjZiMDQ4NjIyMGY5YTMwOWRiMmZiNzI1
ZTA0YjIyMjU0YTNhLi5hMjA1ZTAwMWNhNzE1ODIwOTEzYTgxYWU0YTgzNjUzMGY5YTBmNjQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTQ5LDcgKzQ5
LDcgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVudChjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKIAogV2ViUHJldmlld0xvYWRlckNsaWVudDo6
fldlYlByZXZpZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV2ViUHJldmlld0xv
YWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
K3ZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byB3ZWJQYWdlID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShtX3BhZ2VJRCk7CiAgICAgaWYgKCF3ZWJQYWdlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9X
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAyN2FkMWM1MjAyNjYw
MWU3YzQ5ZWQxODc3N2VlYWZmNjBjZDE5YjEyLi4wZGMxNjdlNWI3YmMzYjAzZWYzOTMxZWFiMzU2
Yzc4Mjc5Mjk1MjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApA
QCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2ViUHJldmlld0xvYWRl
ckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbCgpIG92ZXJy
aWRlOwogICAgIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IDRiNmUyMTdi
YmUzN2Y4YzFkZjE3YWJjY2JiYzg3NzQzMWEyYjFlM2IuLmUxZTBlNjExMmEyZGVkYzNiOGJiNjMw
OTg1MzUzNzZlZjQzYWQ1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTE2
Myw3ICsxNjMsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFn
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogICAgIFNoYXJlZE1lbW9yeTo6
SGFuZGxlIGFyY2hpdmVIYW5kbGU7CiAgICAgc2l6ZV90IGFyY2hpdmVTaXplID0gMDsKICAgICBp
ZiAoZGF0YSkgewotICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOjpjcmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOworICAgICAgICBh
dXRvIGFyY2hpdmVCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRh
ICopZGF0YS5nZXQoKSk7CiAgICAgICAgIGF1dG8gYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlciA9
IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcihhcmNoaXZlQnVmZmVyLmdldCgpKTsKICAgICAgICAg
aWYgKCFhcmNoaXZlU2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDkyOWIx
NjBlZWE5YTY0NzJjMmNhN2QwM2FjMzEzM2I3ZTFlZTlmODcuLmQ4OGY0NGNmY2RlNWUxNWY2NmMx
MjRiNDBmNWI1NDM1Yjk0Njk3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAKQEAgLTM0MCw3ICszNDAsNyBAQCBTdHJpbmcgV2ViRnJhbWU6OnNv
dXJjZSgpIGNvbnN0CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gbV9jb3Jl
RnJhbWUtPmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFkb2N1bWVu
dExvYWRlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlRGF0YSgp
OworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0g
ZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJj
ZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4gZGVjb2Rlci0+ZW5j
b2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
LCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBjNGFhMGQwZTNlZjlhNGU4ODQxMmZjMDVlMGMzY2I4
MWFkYjI5NTAxLi42MzIwYzM1OGUxY2QyNjAzMDZmMzUzNDJhOTBkY2EyZWY4NGMwODg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTczOCw3
ICsxNzM4LDcgQEAgTk9fUkVUVVJOIHZvaWQgV2ViUGFnZTo6bG9hZFJlcXVlc3RXYWl0aW5nRm9y
UHJvY2Vzc0xhdW5jaChMb2FkUGFyYW1ldGVycyYmLCBVUkwKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRl
UG9saWNpZXMsIFJlZjxTaGFyZWRCdWZmZXI+JiYgc2hhcmVkQnVmZmVyLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGNvbnN0IFVSTCYgdW5y
ZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgc3RkOjpvcHRpb25hbDxOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3Vi
c3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzZXNzaW9uSGlzdG9yeVZpc2li
aWxpdHksIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSkKK3ZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgc2hhcmVkQnVmZmVyLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGNvbnN0IFVSTCYgdW5y
ZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgc3RkOjpvcHRpb25hbDxOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3Vi
c3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzZXNzaW9uSGlzdG9yeVZpc2li
aWxpdHksIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSkKIHsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgc2V0SXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbihpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCAmbV9t
YWluRnJhbWUuZ2V0KCkpOwpAQCAtMTc1Myw3ICsxNzUzLDcgQEAgdm9pZCBXZWJQYWdlOjpsb2Fk
RGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQgc2gKIAogICAgIC8vIExldCB0aGUgSW5qZWN0ZWRCdW5kbGUga25vdyB3ZSBhcmUgYWJvdXQg
dG8gc3RhcnQgdGhlIGxvYWQsIHBhc3NpbmcgdGhlIHVzZXIgZGF0YSBmcm9tIHRoZSBVSVByb2Nl
c3MKICAgICAvLyB0byBhbGwgdGhlIGNsaWVudCB0byBzZXQgdXAgYW55IG5lZWRlZCBzdGF0ZS4K
LSAgICBtX2xvYWRlckNsaWVudC0+d2lsbExvYWREYXRhUmVxdWVzdCgqdGhpcywgcmVxdWVzdCwg
Y29uc3RfY2FzdDxTaGFyZWRCdWZmZXIqPihzdWJzdGl0dXRlRGF0YS5jb250ZW50KCkpLCBzdWJz
dGl0dXRlRGF0YS5taW1lVHlwZSgpLCBzdWJzdGl0dXRlRGF0YS50ZXh0RW5jb2RpbmcoKSwgc3Vi
c3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgpLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgbV9sb2Fk
ZXJDbGllbnQtPndpbGxMb2FkRGF0YVJlcXVlc3QoKnRoaXMsIHJlcXVlc3QsIGNvbnN0X2Nhc3Q8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KHN1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKSksIHN1YnN0
aXR1dGVEYXRhLm1pbWVUeXBlKCksIHN1YnN0aXR1dGVEYXRhLnRleHRFbmNvZGluZygpLCBzdWJz
dGl0dXRlRGF0YS5mYWlsaW5nVVJMKCksIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9y
bUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIAogICAgIC8vIElu
aXRhdGUgdGhlIGxvYWQgaW4gV2ViQ29yZS4KICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9h
ZFJlcXVlc3QoKm1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSwgcmVxdWVzdCwgc3Vic3RpdHV0ZURh
dGEpOwpAQCAtMzg2MSw3ICszODYxLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFt
ZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKIAogdm9p
ZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViRnJhbWUoZnJhbWVJRCkpIHsKICAgICAgICAgaWYgKFBsdWdpblZpZXcqIHBsdWdpblZpZXcg
PSBwbHVnaW5WaWV3Rm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpKSkKICAgICAgICAgICAgIGJ1
ZmZlciA9IHBsdWdpblZpZXctPmxpdmVSZXNvdXJjZURhdGEoKTsKQEAgLTM4NzcsNyArMzg3Nyw3
IEBAIHZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kCiAgICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7
CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShG
cmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCitzdGF0aWMgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29u
c3QgVVJMJiByZXNvdXJjZVVSTCkKIHsKICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZnJh
bWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFsb2FkZXIpCkBAIC0zODky
LDcgKzM4OTIsNyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9y
RnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cgogCiB2b2lkIFdlYlBhZ2U6Omdl
dFJlc291cmNlRGF0YUZyb21GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3Ry
aW5nJiByZXNvdXJjZVVSTFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6
Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykK
IHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoYXV0byogZnJhbWUgPSBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSkgewogICAgICAgICBVUkwgcmVzb3VyY2VV
UkwoVVJMKCksIHJlc291cmNlVVJMU3RyaW5nKTsKICAgICAgICAgYnVmZmVyID0gcmVzb3VyY2VE
YXRhRm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpLCByZXNvdXJjZVVSTCk7CkBAIC03MDAxLDcg
KzcwMDEsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBk
ZWNpc2lvbiwgQ2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcgogICAgIGlmICghZG9jdW1lbnRMb2Fk
ZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgZG9jdW1l
bnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlm
aWVyLnRvSW50ZWdlcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpIG11dGFibGUgeworICAg
IGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2Fk
SWRlbnRpZmllci50b0ludGVnZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0
YSkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgaWNvbkRhdGEgfSk7CiAg
ICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5k
ZXggNjc5YWJmMWIxNTVmNTAwMjk3MjI0MTFlZGE5YTM5YzMyYjQzMDYzNS4uM2JiZDUzNTQ4MGQw
NTc2MTNjNDNkYjNkOWZhZDQ3YWZiYzYyMTM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMjE2LDcgKzIxNiw3IEBAIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwogY2xh
c3MgU2VsZWN0aW9uR2VvbWV0cnk7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiBjbGFzcyBUZXh0Q2hlY2tp
bmdSZXF1ZXN0OwogY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwpAQCAtMTQwMyw3ICsxNDAzLDcgQEAg
cHVibGljOgogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdm9pZCBkaWRTdGFydExvYWRGb3JR
dWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0
IFN0cmluZyYgdXRpKTsKLSAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgZGlk
RmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgcmVxdWVzdFBhc3N3b3JkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICNlbmRpZgogCkBAIC0xNjAyLDcg
KzE2MDIsNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIHNvdXJjZUZvckZyYW1lKFdlYkZyYW1l
Kik7CiAKLSAgICB2b2lkIGxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNv
cmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBjb25zdCBVUkwmIGZh
aWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4sIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2li
aWxpdHksIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CisgICAgdm9pZCBs
b2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpTaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIGNvbnN0IFVSTCYgZmFpbGluZ1VS
TCwgY29uc3QgVXNlckRhdGEmLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPiwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwg
V2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKIAogICAgIC8vIEFjdGlvbnMK
ICAgICB2b2lkIHRyeUNsb3NlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpp
bmRleCBjOTVjMzg0NjM5MjIxODRmMjU3YTcxOWRiNWJhOWE0ODI5YWVkZjFiLi44NWU2NTE4Njky
ZWQ2MGM3ODhlNzJhN2NlMzJmM2YwZTE1Y2E3NzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMzIxNyw3ICszMjE3LDcg
QEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbikK
ICAgICAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+
KCplbGVtZW50LnJlbmRlcmVyKCkpLmNhY2hlZEltYWdlKCk7CiAgICAgICAgIGlmICghY2FjaGVk
SW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpOworICAgICAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVm
ZmVyKCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVm
ZmVyKTsKQEAgLTQ2ODMsNyArNDY4Myw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkU3RhcnRMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lCiAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKGZpbGVOYW1lLCB1dGkpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRG
aW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK3ZvaWQgV2ViUGFnZTo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIEFTU0VSVCghYnVmZmVyLmlzRW1wdHkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCmluZGV4IGNjMGFjNjc1NzE1ZjBlODJlNTA5Yzc1
NmIzMDJjZDZjZmU4YTU3NzguLmYxZTFjNWZmNGQ4OTEwOWQ1MTE5ZWEwZjRhNDIzMzIzNzMyMjg0
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dp
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNw
cApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4K
IAotUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihj
b25zdCBjaGFyKiBuYW1lKQorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBv
cnQvUGluZ0hhbmRsZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5n
SGFuZGxlLmgKaW5kZXggMWY1NTg0ZmEzODdkNzZjY2U5NGZmN2I1Njk2OGU3ZTgyMjA2MDYwNi4u
YTI1NTYwYTEwYzI4ODJlMWFiZDE3ODQ1Njk0ODZlYTEzZWQ4OTZkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKQEAgLTczLDcgKzczLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcGluZ0xv
YWRDb21wbGV0ZSh7IH0sIHJlc3BvbnNlKTsKICAgICB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiwgaW50KSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBpbnQpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0K
ICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKGVycm9yKTsg
fQogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGUqKSBmaW5hbCB7IHJldHVybiBtX3Nob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCmluZGV4IGM2NWU5Nzg4OGI5NmI3Mzc5NTg4MDViNmY4ZmEwMDlkY2QxZmIx
NzcuLjQyMDEwN2RhNjViNzZiNmQxMmM0YzQ1ODEzOWYzMDgyNThkOTNmZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5n
KCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYs
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9p
ZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAg
IHZvaWQgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBX
ZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2VzcyhXZWJD
b3JlOjpET01QYXN0ZUFjY2Vzc0NhdGVnb3J5LCBjb25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVy
biBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQubW0KaW5kZXggNzRjNDg3ODMxNzdhZjkwYjIwMmQ1MWM0NjY2OWI0MDEyYjEy
NWY1OS4uYzJjNDBkM2QyYTEzM2YyODEzNDE1NjAzNGRlNTQxNDFhNGNlOWMzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxs
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAg
ICAgLy8gTm90IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQogCi12b2lkIFdl
YkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEp
Cit2b2lkIFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkK
IHsKICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBhMjU5OGYzMmZiNzYwYTdkODgzYzlmNGNlZWMxOGNm
NTkxZWI4ZWFkLi45NTlkNzQ4YjU2YmUxMDc2YmQ5Nzc5OTIyY2QzNTZkMjFhNjgxNzRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI0OCw3ICsyNDgsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2VuZEgyUGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVj
dGVkPFNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+JiYpPiYmKSBmaW5hbDsKIAogICAg
IHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxXZWJD
b3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90Pj4mKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaGVkTG9h
ZGluZ0ljb24oV2ViQ29yZTo6U2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRp
bmdJY29uKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIAogI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGJvb2wgbV9sb2FkaW5nSWNvbiB7IGZhbHNlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGI4NDlkMmFhYzJhOTNmYmVlNDE3MjlmMjRhODZjZGNm
NmIxZmUwMTkuLmFhMmNjOTgxNDc0YTEzY2U1MDg0Nzk4OTQyMzY4NDQ5MWM4OGY2ZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0yMDEyLDcgKzIwMTIsNyBAQCBSZWZQdHI8V2Vi
Q29yZTo6TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNy
ZWF0ZVByZXZpZXdMbwogICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fZmlsZVBhdGg7CiAg
ICAgICAgIFJldGFpblB0cjxOU0ZpbGVIYW5kbGU+IG1fZmlsZUhhbmRsZTsKIAotICAgICAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIp
IG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGF1dG8gZGF0YUFycmF5ID0gYnVmZmVyLmNyZWF0ZU5TRGF0YUFycmF5KCk7CiAgICAg
ICAgICAgICBmb3IgKE5TRGF0YSAqZGF0YSBpbiBkYXRhQXJyYXkuZ2V0KCkpCkBAIC0yMDk0LDcg
KzIwOTQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJ
Y29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcgogICAgICAgICB9CiAKICAgICAgICAg
bV9sb2FkaW5nSWNvbiA9IHRydWU7Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKHRydWUsIGljb24tPnNlY29uZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH1dIChXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGJ1ZmZlcikgeworICAgICAg
ICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29uLT5z
ZWNvbmQsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlz
KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGZpbmlzaGVkTG9hZGluZ0lj
b24oYnVmZmVyKTsKQEAgLTIxMzEsNyArMjEzMSw3IEBAIHN0YXRpYyBOU0ltYWdlICp3ZWJHZXRO
U0ltYWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTaXplIHNpemUpCiB9CiAjZW5kaWYgLy8g
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlz
aGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBpY29uRGF0YSkKK3ZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpCiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgQVNTRVJUKG1fbG9hZGluZ0ljb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRl
eCBlMzUxZWE5OThjMDdlNGIzMDQ2ZmM5MGQyNjQ1ZmFiM2U2ZDBkODhhLi4xZDgxZmZhMTlkOTdm
MDRlYzdjYzU3NWIzZWNlNWU4ODgxNDQwYjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aApAQCAtNTUsMTQgKzU1LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRU
eXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCop
IG92ZXJyaWRlOwogI2VuZGlmCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZm
ZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlk
ZTsKICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENv
bnRleHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJ
dGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8
V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldE51bWJlck9mRmls
ZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0
eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZENvbnRleHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZl
ckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJp
bmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBAIC03NSw3ICs3NSw3IEBAIHBy
aXZhdGU6CiAKICAgICBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRUeXBlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAg
IGludDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
KiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBp
bnQ2NF90IHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFVS
TChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBp
bnQ2NF90IHNldENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICBpbnQ2NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2Vi
Q29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5tbQppbmRleCBhM2UzYzkzMTY4ZDg5MzY1MDJhYTZlN2Y0NTRlNGU1N2VkMWIxMjhjLi4x
ODhlYzUwMDQ1MDc3ZDc4YjAxMjBhNmRhZmJiMDRmYjc5Mjc2NDY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWIKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmdldFR5cGVzKHR5cGVz
KTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8
U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5cGUocGFzdGVib2FyZFR5cGUpOwogfQpAQCAtMTU0
LDcgKzE1NCw3IEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjCiAgICAgcmV0dXJuIFBsYXRmb3Jt
UGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0VHlwZXMocGFzdGVib2FyZFR5cGVzKTsKIH0K
IAotaW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitp
bnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZm
ZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQ
bGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVy
LCBwYXN0ZWJvYXJkVHlwZSk7CiB9CkBAIC0yMDksNyArMjA5LDcgQEAgaW50IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5j
b3VudCgpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25h
bDxzaXplX3Q+IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJk
KHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAg
cmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihpbmRl
eCwgdHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRh
dGFTb3VyY2UubW0KaW5kZXggYzUzMWIxZGRkZDNiZThlNTZlZDZkNWQ3YzdmYTZiN2RhYTZjYzNh
My4uODNlODU5MTQzNDVlYTdjYjg0MWQ5OWZkMWZiNjY2ZDhjY2YwMzAyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNDYwLDcg
KzQ2MCw3IEBAIC0gKHZvaWQpZGVhbGxvYwogCiAtIChOU0RhdGEgKilkYXRhCiB7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShf
cHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9w
cml2YXRlKS0+bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3Vy
Y2VEYXRhKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRh
LT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggNWIxMGQz
ZmY3NTY3MDExNTEzOGY0ZDQzMTcyOTdjZGNhMWVjOTVkNy4uMjhkODc1OTI5Y2NhY2RiOWExMzg4
YTgyNmIyZmQ1ZWNmNDZlY2NkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0zNTQwLDcgKzM1NDAsNyBAQCBzdGF0aWMgUmV0YWluUHRy
PE5TTWVudUl0ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdCYgaAogICAgIH0KIAogICAgIGlmIChhdXRvKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1h
Z2UoKSkgewotICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gaW1hZ2UtPmRhdGEoKSkKKyAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQogICAgICAgICAgICAgW2l0ZW1z
IGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEg
ZGF0YVdpdGhCeXRlczpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVm
ZmVyLT5zaXplKCldXSkuZ2V0KCldOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KaW5kZXggZDNiNTE2YzQxYTkwZTdmYTU3ZGFkOTg5
MWQ0OWEzMzkxNDhhMzYxNC4uMTJkNTljMGExNzY4MThlNjYyYzQzYzA3NDRhNTNhMTAxYzg1NjFl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJj
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1t
CkBAIC0zNjcsNyArMzY3LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nVmFsdWUKICAgICBpZiAo
IWVuY29kaW5nLmlzVmFsaWQoKSkKICAgICAgICAgZW5jb2RpbmcgPSBQQUw6OldpbmRvd3NMYXRp
bjFFbmNvZGluZygpOwogICAgIAotICAgIFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0
ZS0+Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxw
dHI7CisgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29y
ZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7CiAg
ICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihj
b3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwg
Y29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9NZW1vcnlTdHJlYW0uY3BwCmluZGV4IDVkZjIxNzBkMmE0YmZjNGE0ODBjZjQ1YTg0ZDIz
ZDczMDU5MzVmYzEuLjM2MGFlZGNlYWNjYjFmYmRkMWQ0NGFkNDJkOGMwNGM2ZjA0YjYxOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzEsNyArMzEsNyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gTWVtb3J5U3RyZWFtIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1N
ZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCitNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBnQ2xh
c3NDb3VudCsrOwpAQCAtNDQsNyArNDQsNyBAQCBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0o
KQogICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIik7CiB9CiAKLUNP
TVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVt
b3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
IHsKICAgICByZXR1cm4gbmV3IE1lbW9yeVN0cmVhbShXVEZNb3ZlKGJ1ZmZlcikpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAppbmRleCAwNzg2MGExNWFiNGEzZGIxMTlj
OTExM2ZhZmM5YzEyNGIxYzE0NmRkLi4yYmE3ZGE5MGE1YzYyMTI5MDA4ZGY2MTI5NzMwYWNkYjli
ZDQ1M2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0u
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaApAQCAtMzUsNyAr
MzUsNyBAQAogY2xhc3MgTWVtb3J5U3RyZWFtIGZpbmFsIDogcHVibGljIElTdHJlYW0KIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVm
UHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBDT01Q
dHI8TWVtb3J5U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKTsKIAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2
b2lkKiogcHB2T2JqZWN0KTsKQEAgLTc1LDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIENsb25lKF9DT01fT3V0cHRyXyBJU3RyZWFtKiog
cHBzdG0pOwogCiBwcml2YXRlOgotICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CisgICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYpOwogICAgIH5NZW1vcnlTdHJlYW0oKTsKIAotICAgIFJlZlB0cjxX
ZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICBzaXplX3QgbV9wb3MgeyAwIH07CiAg
ICAgVUxPTkcgbV9yZWZDb3VudCB7IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFy
Y2hpdmUuY3BwCmluZGV4IGIzYTJjNGNmZWIzZThmODJhMDUwYTM4ZjU3MjU4ZDkwNmQwNmJlM2Eu
LjgxNTc5OTYxMDc2N2UwYmI5YWQyMjQ1NjdkNzI1Y2QzY2RjZGIxZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgSFJFU1VMVCBXZWJB
cmNoaXZlOjpkYXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBpZiAo
IWNmRGF0YSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIGF1dG8gYnVmZmVyID0gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgp
KSwgQ0ZEYXRhR2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOworICAgIGF1dG8gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFH
ZXRMZW5ndGgoY2ZEYXRhLmdldCgpKSk7CiAKICAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVh
dGVJbnN0YW5jZShXVEZNb3ZlKGJ1ZmZlcikpLmNvcHlSZWZUbyhzdHJlYW0pOwogI2Vsc2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCmluZGV4IGU5YTEzNmY2YmI0MmVjOGFiN2Y1MGEzYWIzMzMzM2ZiM2Yy
MDIzZmQuLjIxMTU5OGQzOWE2YWYzNjFjYzJlNDA2NzkwNmUyYjg2ODU3ZWVmYzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3
aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
CiB7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+
JiwgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiA+JikKK3Zv
aWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+ID4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDk1ODFhYmJkOTMyYTUxYmJlOTgyMDVhMjMxM2E1Yzgw
OWJhNjk3ZjMuLjA4N2I2OWU3YThiMGI2ODhhY2JmZTQ0ZTRkYWIxYjdiZGE1NDFmMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRF
ZGl0aW5nKCkgZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2
b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRD
bGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7Cisg
ICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsK
IAogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7
IH0KICAgICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDZkYzRhNDg1MmExNGQ5MTQ0M2U1MzE5YTUwN2Mx
OTY4NzJhZmIxNDkuLjU1OGUxM2M3ZjFmZGFhNWIxMjVkMjBiZWZlNzkxYTI3ZmY3NTcxMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU1OSw3ICs1NTksNyBAQCBIUkVT
VUxUIFdlYkZyYW1lOjpsb2FkUmVxdWVzdChfSW5fb3B0XyBJV2ViVVJMUmVxdWVzdCogcmVxdWVz
dCkKICAgICByZXR1cm4gU19PSzsKIH0KIAotdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNv
ZGluZ05hbWUsIEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKQordm9pZCBXZWJGcmFtZTo6
bG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNU
UiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFp
bGluZ1VSTCkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5c1N0cmlu
Z0xlbihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5cGUpCkBAIC01OTIsNyArNTkyLDcgQEAg
SFJFU1VMVCBXZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBC
U1RSIG1pbWVUeXBlLCBfSW5fIEJTVFIKICAgICAgICAgaWYgKCFzdGF0LmNiU2l6ZS5IaWdoUGFy
dCAmJiBzdGF0LmNiU2l6ZS5Mb3dQYXJ0KSB7CiAgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0
YUJ1ZmZlcihzdGF0LmNiU2l6ZS5Mb3dQYXJ0KTsKICAgICAgICAgICAgIFVMT05HIHJlYWQ7Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUg
YmV0dGVyIHRvIHJlYWQgcmlnaHQgaW50byB0aGUgU2hhcmVkQnVmZmVyCisgICAgICAgICAgICAv
LyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJl
YWQgcmlnaHQgaW50byB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgogICAgICAgICAgICAgLy8g
b3IgYWRvcHQgdGhlIFZlY3RvciBvciBzb21ldGhpbmcuCiAgICAgICAgICAgICBpZiAoU1VDQ0VF
REVEKGRhdGEtPlJlYWQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PFVMT05HPihkYXRh
QnVmZmVyLnNpemUoKSksICZyZWFkKSkpCiAgICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLmFw
cGVuZChkYXRhQnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUo
KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKaW5kZXggNDM2MDU0ZmQ5ZGRiNDdjYTMy
OTZiMTE3OTgxNDM0ZWMxODk3ZGFkMS4uZmE5YzM4MWNjNTczYmE2YjIwOTg4ZWFiMzUwOGVkOWEz
MGE4ZjEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCkBAIC01MCw3ICs1MCw3IEBA
IGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBQYWdl
OwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTQ29u
dGV4dCogSlNDb250ZXh0UmVmOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHByaXZhdGU6CiAgICAgfldl
YkZyYW1lKCk7CiAKICAgICB2b2lkIGxvYWRIVE1MU3RyaW5nKF9Jbl8gQlNUUiBzdHJpbmcsIF9J
bl8gQlNUUiBiYXNlVVJMLCBfSW5fIEJTVFIgdW5yZWFjaGFibGVVUkwpOwotICAgIHZvaWQgbG9h
ZERhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0
ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7CisgICAgdm9p
ZCBsb2FkRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgQlNUUiBt
aW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGlu
Z1VSTCk7CiAgICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBjb21wdXRlUGFnZVJl
Y3RzKEhEQyBwcmludERDKTsKICAgICB2b2lkIHNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgcGFnZVNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYgb3JpZ2luYWxQYWdlU2l6ZSwgZmxvYXQgbWF4aW11bVNocmlua1JhdGlvLCBXZWJDb3JlOjpB
ZGp1c3RWaWV3U2l6ZU9yTm90KTsKICAgICB2b2lkIGhlYWRlckFuZEZvb3RlckhlaWdodHMoZmxv
YXQqLCBmbG9hdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0
RExMLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAKaW5kZXggOTYy
MDE5OGI0YjU0MGFlNmY3OTY3ZjgyMzNjOTQ2NGJkMjc3NTg1MS4uMjc0YjdkMmQ2Y2YyZWI0NzFk
N2I4Yjg5NjU5YWU0NjljZjkzNGM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViS2l0RExMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwu
Y3BwCkBAIC0xNjUsOCArMTY1LDggQEAgdm9pZCBzaHV0RG93bldlYktpdCgpCiB9CiAKIC8vRklY
TUU6IFdlIHNob3VsZCBjb25zaWRlciBtb3ZpbmcgdGhpcyB0byBhIG5ldyBmaWxlIGZvciBjcm9z
cy1wcm9qZWN0IGZ1bmN0aW9uYWxpdHkKLVdFQktJVF9BUEkgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKTsKLVJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hh
ciogbmFtZSkKK1dFQktJVF9BUEkgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSk7CitSZWZQdHI8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25z
dCBjaGFyKiBuYW1lKQogewogICAgIGludCBpZHI7CiAgICAgLy8gdGVtcG9yYXJ5IGhhY2sgdG8g
Z2V0IHJlc291cmNlIGlkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJS
ZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5k
ZXggMmZmY2I4OTk5YjE4NDQ4Y2Q2MjQ4ZjliZmNmMTVhYTUxN2NhZWJkNi4uOTQzZmE3YWI0NWM4
YjBkMzVkNjdhMzBjMGZkYWI0MzQ5YTNlNjRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBXZWJSZXNvdXJjZTo6fldlYlJlc291cmNl
KCkKICAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7CiB9CiAKLVdl
YlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCitXZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNl
KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQ09NUHRyPE1lbW9yeVN0cmVhbT4gbWVt
b3J5U3RyZWFtID0gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGRhdGEpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKaW5kZXggOTRhYjM1YzU2MDgxMDEx
N2M4OTVlNGExMGMzOTFiY2NhMzM3ZDE4ZS4uYjZlYjg2ZmNjYTVlMzEzNjljOWU4YjA2NTQxOGYy
Nzk0OTI5OTkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCkBAIC0zNiw3
ICszNiw3IEBACiAKIGNsYXNzIFdlYlJlc291cmNlIGZpbmFsIDogcHVibGljIElXZWJSZXNvdXJj
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2Uo
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJf
IHZvaWQqKiBwcHZPYmplY3QpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDBlZDZmNGQ0ZDI5NWFiOGQ0ZDVlOWNlOTNlMjk4MzNjN2MyMjNlYjYu
LjQ1YjM4NTdlNDBmNzUwYmNlYmY4NjhkNzZhYjNmOWU1MGJlMDVmM2QgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAy
MS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJl
bmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2Mzkw
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJl
ZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBD
b250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0
aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHA6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNwcDoKKwogMjAyMS0xMi0xMyAg
SmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBTaGFyZWRC
dWZmZXJCdWlsZGVyIGNsYXNzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVT
eXN0ZW0uY3BwCmluZGV4IGYzMzJkNzJiYWQwNzM0OWNlZDg5Mzg0MmQ3MzI0NzdmYmZkNjZjMjMu
Ljg2ZTVhNGIzZjYzOGEzOGYwZjE4Y2ExMmQ2NmQ1MjkxMDAyZTMyODQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0
YXRpYyB2b2lkIGNyZWF0ZVRlc3RGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiB9OwogCi0vLyBGSVhNRTogUmVmYWN0b3IgRmls
ZVN5c3RlbVRlc3QgYW5kIFNoYXJlZEJ1ZmZlclRlc3QgYXMgYSBzaW5nbGUgY2xhc3MuCisvLyBG
SVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJU
ZXN0IGFzIGEgc2luZ2xlIGNsYXNzLgogY2xhc3MgRmlsZVN5c3RlbVRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5j
cHAKaW5kZXggZjdlNTU3OTkyNDU5YWY1ZDFhOWI4MTcwODk3ZjhlNDY0NDEwNWFhOC4uZjI0ZGYw
MWRkNTc0YTc2NDE4MDE4YmVkMzVlOGVlMGMwZmU4ZDY5NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcApAQCAtMTk5
LDcgKzE5OSw3IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgSXRlbUJ1ZmZlckNsaWVudCkKICAg
ICAgICAgICAgIHJldHVybiB7IGdsb2JhbEJ1ZmZlcklkZW50aWZpZXIsIGdsb2JhbEl0ZW1CdWZm
ZXIsIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSB9OwogICAgICAgICB9CiAKLSAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0
ZW0mIGRpc3BsYXlMaXN0SXRlbSkgY29uc3QgZmluYWwKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVt
JiBkaXNwbGF5TGlzdEl0ZW0pIGNvbnN0IGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1
dG8gaW5kZXggPSBtX2l0ZW1zLnNpemUoKTsKICAgICAgICAgICAgIG1faXRlbXMuYXBwZW5kKHN0
ZDo6Z2V0PFN0cm9rZVBhdGg+KGRpc3BsYXlMaXN0SXRlbSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCA4ZjMyYWJjODgw
MWQ1MTg4ODgyMzVlZmZiZDBjZWVhNzc3ZGUzYzllLi5mMTJiOWYwODM2MDU1ODk0Y2Q2NWE4MjNk
NWZmNmUzNGI5OGFkNTk4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtNDEsMzEgKzQxLDMxIEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLVRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQorVEVTVF9GKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQog
ewotICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CisgICAgYXV0byBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9l
eGlzdGluZ19maWxlIikpOwogICAgIEFTU0VSVF9OVUxMKGJ1ZmZlcik7CiB9CiAKLVRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKK1RFU1Rf
RihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGlu
Z0ZpbGUpCiB7Ci0gICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwog
ICAgIEFTU0VSVF9OT1RfTlVMTChidWZmZXIpOwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6
ZSgpID09IHN0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7Ci0gICAgRVhQRUNU
X1RSVUUoU3RyaW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZm
ZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBF
Q1RfVFJVRShidWZmZXItPnNpemUoKSA9PSBzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShTdHJpbmcoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRl
c3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCitURVNUX0YoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZp
bGUpCiB7Ci0gICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0
aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZm
ZXItPmlzQ29udGlndW91cygpKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzRW1wdHkoKSk7
CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250
ZW50c09mRXhpc3RpbmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBj
b3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIGF1dG8g
YnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KHRlbXBGaWxlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
V2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwo
YnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzQ29udGlndW91cygpKTsKICAgICBh
dXRvIGNvcHkgPSBidWZmZXItPmNvcHkoKTsKQEAgLTc0LDE5ICs3NCwxOSBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyVGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmls
ZSkKICAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRC
dWZmZXJUZXN0LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUp
CitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRX
aXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
dGVtcEZpbGVQYXRoKCkpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgo
KSk7CiAgICAgQVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyOwogICAgIGJ1aWxkZXIuYXBwZW5kKCpidWZmZXIpOwogICAgIGJ1aWxkZXIuYXBw
ZW5kKCJhIiwgMSk7Ci0gICAgRVhQRUNUX1RSVUUoYnVpbGRlci5zaXplKCkgPT0gKHN0cmxlbihT
aGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVt
Y21wKGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVy
VGVzdDo6dGVzdERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7
Ci0gICAgRVhQRUNUX0VRKCdhJywgYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0
YSgpW3N0cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIEVYUEVDVF9U
UlVFKGJ1aWxkZXIuc2l6ZSgpID09IChzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6
OnRlc3REYXRhKCkpICsgMSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRlci5nZXQo
KS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6
dGVzdERhdGEoKSwgc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgp
KSkpOworICAgIEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKVtzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7
CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKK1RF
U1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCiB7
CiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0RGF0YTFbXSA9
ICJXb3JsZCI7CkBAIC0xMDAsNyArMTAwLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRy
eUNyZWF0ZUFycmF5QnVmZmVyKQogICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRDb25j
YXRlbmF0aW9uLCBhcnJheUJ1ZmZlci0+ZGF0YSgpLCBzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0
aW9uKSkpOwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZm
ZXJMYXJnZVNlZ21lbnRzKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCB0cnlD
cmVhdGVBcnJheUJ1ZmZlckxhcmdlU2VnbWVudHMpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZl
Y3RvcjAoMHg0MDAwLCAnYScpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwg
J2InKTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3Jl
YXRlQXJyYXlCdWZmZXJMYXJnZVNlZ21lbnRzKQogICAgIH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1
ZmZlclRlc3QsIGNvcHkpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkp
CiB7CiAgICAgY2hhciB0ZXN0RGF0YVtdID0gIkhhYml0YXNzZSBpbnRlZ2VyIGVyb3MgdGluY2lk
dW50IGEgc2NlbGVyaXNxdWUhIEVuaW0gZWxpdD8gU2NlbGVyaXNxdWUgbWFnbmlzLCIKICAgICAi
ZXQgbW9udGVzIHVsdHJpY2VzIHRyaXN0aXF1ZSBhISBQaWQuIFZlbGl0IHR1cnBpcywgZGFwaWJ1
cyBpbnRlZ2VyIHJob25jdXMgc29jaWlzIGFtZXQgZmFjaWxpc2lzLCIKQEAgLTE1Miw3ICsxNTIs
NyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICBidWlsZGVyMS5hcHBlbmQo
dGVzdERhdGEsIGxlbmd0aCk7CiAgICAgLy8gc2hhcmVkQnVmZmVyIG11c3QgY29udGFpbiBkYXRh
IG1vcmUgdGhhbiBzZWdtZW50U2l6ZSAoPSAweDEwMDApIHRvIGNoZWNrIGNvcHkoKS4KICAgICBF
WFBFQ1RfRVEobGVuZ3RoICogNCwgYnVpbGRlcjEuc2l6ZSgpKTsKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBjbG9uZSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gY2xvbmUgPSBidWlsZGVyMS5jb3B5KCk7CiAgICAgRVhQRUNUX0VRKGxlbmd0
aCAqIDQsIGNsb25lLT5zaXplKCkpOwogICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVpbGRlcjEuZ2V0KCktPm1ha2VDb250aWd1b3VzKCkt
PmRhdGEoKSwgY2xvbmUtPnNpemUoKSkpOwogCkBAIC0xNjgsNyArMTY4LDcgQEAgVEVTVF9GKFNo
YXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiAgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgp
KTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCitURVNUX0YoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCiB7CiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9
ICJIZWxsbyI7CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMShzdGQ6OmluX3BsYWNl
LCB0ZXN0RGF0YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKQEAgLTE3OCw3ICsxNzgsNyBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgYnVpbGRlcikKICAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIx
LnRha2UoKTsKICAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc051bGwoKSk7CiAgICAgRVhQRUNU
X1RSVUUoYnVpbGRlcjEuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfTkUoY29weS5wdHIoKSwgYnVm
ZmVyLnB0cigpKTsgLy8gV2UgaGF2ZSBkaWZmZXJlbnQgU2hhcmVkQnVmZmVyCisgICAgRVhQRUNU
X05FKGNvcHkucHRyKCksIGJ1ZmZlci5wdHIoKSk7IC8vIFdlIGhhdmUgZGlmZmVyZW50IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIKICAgICBFWFBFQ1RfRVEoY29weS5nZXQoKSwgYnVmZmVyLmdldCgp
KTsgLy8gQnV0IHRoZWlyIGNvbnRlbnQgaXMgaWRlbnRpY2FsCiAKICAgICBTaGFyZWRCdWZmZXJC
dWlsZGVyIGJ1aWxkZXIyOwpAQCAtMjA0LDcgKzIwNCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hh
cioKICAgICAgICAgRVhQRUNUX0VRKGJ1ZmZlcltpXSwgZXhwZWN0ZWRbaV0pOwogfQogCi1URVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlclRlc3QsIGdldFNvbWVEYXRhKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsg
J2EnLCAnYicsICdjJywgJ2QnIH07CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScsICdm
JywgJ2cnLCAnaCcgfTsKQEAgLTIzOSw3ICsyMzksNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVz
dCwgZ2V0U29tZURhdGEpCiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIp
OwogfQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQorVEVTVF9GKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVy
ID0gW10gKFZlY3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKICAgICAgICAgU2hh
cmVkQnVmZmVyQnVpbGRlciBidWlsZGVyOwpAQCAtMjYwLDcgKzI2MCw3IEBAIFRFU1RfRihTaGFy
ZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiAgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdh
JyB9LCB7ICdiJyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5n
ZXQoKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKK1RFU1Rf
RihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHQxID0gezB4MTEsIDB4NSwgMHgxMn07CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRl
ciBidWlsZGVyOwpAQCAtMjczLDExICsyNzMsMTEgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IHRvSGV4U3RyaW5nKQogICAgIEVYUEVDVF9FUShidWZmZXItPnRvSGV4U3RyaW5nKCksICIiKTsK
IH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCitURVNUX0YoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiB7CiAgICAgY29uc3QgY2hhciogY29uc3Qgc2ltcGxlVGV4
dCA9ICJUaGlzIGlzIGEgc2ltcGxlIHRlc3QuIjsKIAotICAgIGF1dG8gY2hlY2sgPSBbXShTaGFy
ZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgeworICAgIGF1dG8gY2hlY2sgPSBbXShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRh
dGEgPSBzaGFyZWRCdWZmZXIucmVhZCg0LCAzKTsKICAgICAgICAgRVhQRUNUX0VRKGRhdGEuc2l6
ZSgpLCAzdSk7CiAgICAgICAgIEVYUEVDVF9FUShTdHJpbmcoZGF0YS5kYXRhKCksIDMpLCAiIGlz
Iik7CkBAIC0zMDgsNyArMzA4LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiB0
ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgc2l6ZV90IE4gPgogY29uc3RleHByIHNpemVfdCBhcnJheXNp
emUoIGNvbnN0IFQgKCYpW05dICkgeyByZXR1cm4gTjsgfQogCi1zdGF0aWMgdm9pZCByZWFkQWxs
Q2h1bmtzKHN0ZDo6dmVjdG9yPFN0cmluZz4qIGNodW5rcywgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yID0gIlxyXG4iLCBib29sIGluY2x1ZGVTZXBhcmF0b3Ig
PSBmYWxzZSkKK3N0YXRpYyB2b2lkIHJlYWRBbGxDaHVua3Moc3RkOjp2ZWN0b3I8U3RyaW5nPiog
Y2h1bmtzLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgc2Vw
YXJhdG9yID0gIlxyXG4iLCBib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSkKIHsKICAgICBT
aGFyZWRCdWZmZXJDaHVua1JlYWRlciBjaHVua1JlYWRlcigmYnVmZmVyLCBzZXBhcmF0b3IudXRm
OCgpLmRhdGEoKSk7CiAgICAgU3RyaW5nIGNodW5rID0gY2h1bmtSZWFkZXIubmV4dENodW5rQXNV
VEY4U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKGluY2x1ZGVTZXBhcmF0b3IpOwpAQCAtMzQxLDcg
KzM0MSw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrRGF0YUluUmFuZ2UoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhLCBzaXplX3Qgc3RhcnQsIHNpemVfdCBsCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJD
aHVua1JlYWRlclRlc3QsIGluY2x1ZGVTZXBhcmF0b3IpCiB7Ci0gICAgYXV0byBjaGVjayA9IFtd
KFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBTaGFyZWRCdWZmZXJD
aHVua1JlYWRlciBjaHVua1JlYWRlcigmc2hhcmVkQnVmZmVyLCAiXHgxMFx4MTFceDEyIik7CiAg
ICAgICAgIFZlY3Rvcjx1aW50OF90PiBvdXQ7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNodW5rUmVh
ZGVyLm5leHRDaHVuayhvdXQpKTsKQEAgLTM3Miw3ICszNzIsNyBAQCBURVNUX0YoU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKIHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBz
aW1wbGVUZXh0ID0gIlRoaXMgaXMgYSBzaW1wbGUgdGVzdC4iOwogCi0gICAgYXV0byBjaGVjayA9
IFtdKFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlciBjaHVua1JlYWRlcigmc2hhcmVkQnVmZmVyLCAiaXMiKTsKIAogICAgICAg
ICBTdHJpbmcgY2h1bmsgPSBjaHVua1JlYWRlci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0
aW4xRmFsbGJhY2soKTsKQEAgLTQxOCw3ICs0MTgsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXJUZXN0LCBwZWVrRGF0YSkKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRl
c3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKIHsKICAgICBjb25zdCBjaGFyKiBjb25z
dCBzaW1wbGVUZXh0ID0gIlRoaXMgaXMgdGhlIG1vc3QgcmlkaWN1bG91cyBoaXN0b3J5IHRoZXJl
IGlzLiI7Ci0gICAgYXV0byBjaGVjayA9IFtdKFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7
CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZl
cikgewogICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5rczsKICAgICAgICAgY29uc3Qg
Y2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3MxV2l0aG91dFNlcGFyYXRvcltdID0geyAiVGgiLCAi
cyAiLCAicyB0aGUgbW9zdCByIiwgImQiLCAiY3Vsb3VzIGgiLCAic3RvcnkgdGhlcmUgIiwgInMu
IiB9OwogICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImkiKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZm
ZXJUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZm
ZXJUZXN0LmNwcAppbmRleCA5YjhiMTNhNzVkNTJmZjk1MWVhZDE4MTg1ZDU2YzM3OTFiMmQ3YmVk
Li5kMDM0MWE4MWRlZGE3MTlmMzVmY2NlMzk0NjU1ZWMyNTVhYjhmYmI2IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3Bw
CkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotdm9pZCBT
aGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0
OjpTZXRVcCgpCiB7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogCkBAIC00NSw3
ICs0NSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyVGVzdDo6U2V0VXAoKQogICAgIEZpbGVTeXN0ZW06
OmNsb3NlRmlsZShoYW5kbGUpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlRlYXJEb3du
KCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OlRlYXJEb3duKCkKIHsKICAgICBG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsKICAgICBGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKG1fdGVtcEVtcHR5RmlsZVBhdGgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmgKaW5kZXggNjQwMTE5YmRlNmZj
ZTQxZjAxZWFhYjYzMTY4NDdiZTU2YjkwY2Y1Yy4uYTM5MmEwNTE5NDc1NmQyYWQ1NmU4MjQ5Mjll
Y2U0YzE1ZjNhZDA1NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlclRlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0IHsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgewogcHVibGljOgogICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZTsKICAgICB2b2lk
IFRlYXJEb3duKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCmluZGV4IDdhMzIwN2Y5
NWM2MjdmZTY2MjljOTI3NzQ0YjRlZjAzZTVlMmVjM2QuLjg1ODI4ZjAzOTIyNDVmNGE5OWI3NjA2
YjVmNGFjNWVjMzRkY2VlNWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCkBAIC0xMDQsNyArMTA0
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHsgZ2xvYmFsQnVmZmVySWRlbnRpZmllciwg
Z2xvYmFsSXRlbUJ1ZmZlciwgZ2xvYmFsSXRlbUJ1ZmZlckNhcGFjaXR5IH07CiAgICAgfQogCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5
TGlzdEl0ZW0mKSBjb25zdCBmaW5hbAorICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0IGZpbmFs
CiAgICAgewogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVk
QnVmZmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJl
ZEJ1ZmZlci5tbQppbmRleCA4YmZiODVlYzYxZDMwMTc1OTNkYzBiM2QzN2Q2ZDdiNmQ5OTMyNzc3
Li5jM2I1ZDNlOGQ3YzAzYjFhMzY1ZGQ1MzVhMGIyOWFkZTI3YWNlY2E4IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIu
bW0KQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIHZvaWQgZXhwZWN0RGF0YUFycmF5c0VxdWFsKE5T
QXJyYXk8TlNEYXRhICo+ICpleHBlY3RlZCwgTlNBcnJheTxOU0RhdGEgKj4KICAgICB9CiB9CiAK
LVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKK1RFU1RfRihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCiB7CiAgICAgQGF1dG9y
ZWxlYXNlcG9vbCB7CiAgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKQEAgLTYz
LDExICs2MywxMSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkp
CiAgICAgICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAg
ICAgIGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKF9fYnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgp
LmdldCgpKTsKIAotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRh
V2l0aENvbnRlbnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0Rh
dGFBcnJheSgpLmdldCgpKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0Rh
dGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgU2hhcmVkQnVmZmVy
OjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFB
cnJheSgpLmdldCgpKTsKICAgICB9CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVh
dGVOU0RhdGFGb3JEYXRhU2VnbWVudCkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVz
dCwgY3JlYXRlTlNEYXRhRm9yRGF0YVNlZ21lbnQpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7
CiAgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKaW5kZXggNDZjNzYyMDNlMWIyNWFhYWI3YTAy
ZTBiYjJiZjVlMGM0MzZlZDY4Ny4uNWJlNjY1OTQ2MTM3MzFlMjFlZDk3ZGE3NGM1NzM4YzdjYTI4
NWJmNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVi
cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAK
QEAgLTI1LDcgKzI1LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAK
LVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29u
c3QgY2hhciopCitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJl
c291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKikKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggMDkzZmNmZjhmZjRlMTAwNzY3Yjk2ZWI1ZjUwZDMwMGE4NWZlZjdh
MC4uYzMzNjQ2M2FiYWUzYzQwN2Y0Njk4ZDFmMTIxMTEyNGVhMGU5YWZhZiAxMDA2NDQKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVy
IGZyb20gbm9uLWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0
IDMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGVj
b2RlclRlc3QvRGVjb2RlclRlc3QvbWFpbi5tbToKKyAgICAgICAgKG1haW4pOgorCiAyMDIxLTEy
LTEzICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbUGVy
Zm9ybWFuY2UgdGVzdF0gQWRkIHRlc3QgbG90cy1vZi1zZWxmLXBhaW50aW5nLWxheWVycy5odG1s
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447107</attachid>
            <date>2021-12-13 21:45:58 -0800</date>
            <delta_ts>2021-12-14 02:49:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233677-20211214164554.patch</filename>
            <type>text/plain</type>
            <size>749428</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NmU1ODI4YmM3YjZhMzEzNDRiNTgwYWJhMjJhYjZhNTBjNDIyZWY5Li43ODA5YmE1MzRhYzU1NGE1
OTgwZWI3ZGFlNDAwNmE3MWQyZmZkYzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8v
cHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
IGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBi
ZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBy
dW50aW1lL0FycmF5QnVmZmVyLmg6CisKIDIwMjEtMTItMTMgIHdhZGRsZXNwbGFzaCAgPHdhZGRs
ZXNwbGFzaEBnbWFpbC5jb20+CiAKICAgICAgICAgRXhlY3V0YWJsZUFsbG9jYXRvcjogRG8gbm90
IHN0b3JlIHRoaW5ncyBpbiBnX2NvbmZpZyB3aGVuIFVTRShTWVNURU1fTUFMTE9DKS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAyMmRhOWNjYTQzZDJlZTRjODRlN2FjMzRjNGRmNGRiNWMwNjE0M2Y4Li41NzRjYmVh
YzM1YjFhNGE5NjEzNWZjMDNjZWYwMTA2MDAyN2I2ZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzQ1IEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgYW5k
CisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVkQnVmZmVyIHRvIGJldHRl
ciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKworICAgICAgICBSZW5hbWUg
b25seSwgbm8gY2hhbmdlIGluIGJlaGF2aW91ci4KKworICAgICAgICAqIE1vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oOgorICAgICAgICAqIE1vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwOgorICAg
ICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXJJT1MubW06CisgICAgICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFj
L0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUvQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZS5jcHA6CisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvY2FjaGUv
RE9NQ2FjaGVFbmdpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5j
cHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaDoKKyAgICAgICAgKiBN
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oOgorICAgICAgICAqIE1vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5Lmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN0YXR1c01hcC5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVN0YXR1c01hcC5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlzLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
cy5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwOgorICAgICAgICAq
IE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oOgorICAgICAgICAqIE1v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwOgorICAgICAgICAqIE1vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9N
ZWRpYU1ldGFkYXRhLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaDoK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxl
ci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlci5jcHA6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg6CisgICAgICAgICogTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3Vy
Y2VQcm92aWRlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgICogY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmg6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5jcHA6Cisg
ICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6
CisgICAgICAgICogZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaDoKKyAgICAgICAg
KiBlZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL1dlYkNvcmVQ
YXN0ZWJvYXJkRmlsZVJlYWRlci5jcHA6CisgICAgICAgICogZWRpdGluZy9XZWJDb3JlUGFzdGVi
b2FyZEZpbGVSZWFkZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1t
OgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKiBlZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0
b3JNYWMubW06CisgICAgICAgICogZmlsZWFwaS9CbG9iLmg6CisgICAgICAgICogZmlsZWFwaS9O
ZXR3b3JrU2VuZFF1ZXVlLmNwcDoKKyAgICAgICAgKiBmaWxlYXBpL05ldHdvcmtTZW5kUXVldWUu
aDoKKyAgICAgICAgKiBodG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcDoKKyAgICAgICAgKiBo
dG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1
bWVudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAqIGluc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAg
ICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVyL0xvYWRlclN0cmF0ZWd5Lmg6
CisgICAgICAgICogbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvUmVz
b3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Lmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlRGF0YS5oOgorICAgICAgICAq
IGxvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNw
cDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oOgorICAgICAgICAq
IGxvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZVJlc291cmNlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5oOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5j
cHA6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmg6CisgICAg
ICAgICogbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwOgorICAgICAgICAqIGxv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHls
ZVNoZWV0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0ZvbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFRleHRUcmFjay5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRU
cmFjay5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oOgorICAgICAgICAq
IGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVn
YWN5UHJldmlld0xvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xv
YWRlci5tbToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAqIHBhZ2Uv
UGFnZS5jcHA6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5jcHA6CisgICAgICAgICog
cGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAgICAgICAqIHBhZ2UvU2hhcmVEYXRhLmg6CisgICAg
ICAgICogcGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0tleWVk
Q29kaW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJv
YXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFdy
aXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QcmV2aWV3Q29udmVydGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QcmV2aWV3Q29u
dmVydGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1N0
YXRpY1Bhc3RlYm9hcmQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vY2Yv
S2V5ZWRFbmNvZGVyQ0YuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlci5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVu
dEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1Bhc3RlYm9hcmRDb2NvYS5t
bToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oOgorICAgICAgICAqIHBs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1V
dGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxp
dGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNs
ZWFyS2V5LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9D
RE1DbGVhcktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmlj
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1NvdXJjZUJ1ZmZlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZG
RmlsZUZvcm1hdC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3Jt
YXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBs
YXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW06Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9y
bURhdGFDb2NvYS5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0
ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGFGcmVlVHlwZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVh
cktleS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1
bmRlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1U
aHVuZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVV0aWxpdGllcy5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVZlcnRpY2FsRGF0YS5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGFDYWlyby5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9y
bURhdGFDYWlyb1dpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQ
bGF0Zm9ybURhdGFXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlRGVjb2RlckRpcmVjdDJELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVy
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJl
YWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURl
Y29kZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1h
Z2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFn
ZUJhY2tpbmdTdG9yZUNhaXJvLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNv
ZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZv
cm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNv
Y29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3RDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9wb3Np
eC9TaGFyZWRCdWZmZXJQT1NJWC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9h
cmRXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TaGFyZWRCdWZmZXJXaW4uY3BwOgor
ICAgICAgICAqIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwOgorICAgICAgICAqIHRlc3Rpbmcv
TW9ja0NETUZhY3RvcnkuaDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNw
cDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmg6CisgICAgICAgICogd29y
a2Vycy9TY3JpcHRCdWZmZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVx
dWVzdC5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
ckZldGNoLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyRmV0Y2guaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3Rv
cmFnZS5jcHA6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcDoKKyAgICAg
ICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisKIDIwMjEtMTIt
MTMgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgU2hh
cmVkQnVmZmVyQnVpbGRlciBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2ZDM0ZTgxZTM5MzE5Mzk4MmNiYjI4
MTMzMGVhZTRmYTg2YjUwN2FkLi4xZjY0MGNmNDcwZjYzOGE3OGFhMGU0YzEwNTlhNTA1YzZiOGIy
MjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NSBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2
ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xh
c3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVy
IHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAg
dHlwZXMuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJv
eHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94
eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VT
ZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5
LmNwcDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDoKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHA6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmg6CisgICAgICAgICogR1BV
UHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHA6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNwcDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
dXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2VicnRj
L05ldHdvcmtSVENQcm92aWRlci5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJDb3B5LmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oOgor
ICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmg6CisgICAg
ICAgICogUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcDoKKyAgICAgICAgKiBQbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2EubW06CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0
SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oOgorICAgICAgICAq
IFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERh
dGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwOgorICAg
ICAgICAqIFNoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1
bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVM
aXN0U3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Z3RrL0NsaXBib2FyZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmg6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbToKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkYuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHA6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdD
bGllbnRNYWMubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwOgor
CiAyMDIxLTEyLTEzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXgg
NmI5ZGZkYzY2MWYyMmMwNzFkODBmMzIwOWZlNzFmZmZiYjkwZWRhNy4uYTRkOTM4NmUzNzAwNTdm
NjdhMGE5OWU1ZmYxZWNkMTgyNjI4NDI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNyBAQAorMjAyMS0xMi0wMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgor
CisgICAgICAgIFJlbmFtZSBTaGFyZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8vcHJv
YmxlbS84NTk2MzkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFNoYXJlZEJ1ZmZlciBhcmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFu
ZAorICAgICAgICBDb250aWd1b3VzU2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0
ZXIgcmVmbGVjdCB0aGVpciBhY3R1YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9QaW5nSGFuZGxlLmg6CisKIDIwMjEtMTItMDkgIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4gYW5kIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBz
b255LmNvbT4KIAogICAgICAgICBNb3ZlIFRleHRDb2RlYyBmaWxlcyBmcm9tIFdlYkNvcmUvcGxh
dGZvcm0vdGV4dCB0byBXZWJDb3JlL1BBTC90ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
aW5kZXggYmRhMjY0MGFkZDY1YWQwZjBiMmM5NWJmODIxNmM0YmM1MTBjOGVjNy4uODg1YWU0NTI3
YzE1OWFiMDIyMmIzNDkyNTZhZjdiZTVjMjU0OTFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTEyLTAzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZlciBjbGFzc2VzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjc3CisgICAg
ICAgIHJkYXI6Ly9wcm9ibGVtLzg1OTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyIGFyZSByZW5hbWVkIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIgYW5kCisgICAgICAgIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgdG8gU2hhcmVk
QnVmZmVyIHRvIGJldHRlciByZWZsZWN0IHRoZWlyIGFjdHVhbAorICAgICAgICB0eXBlcy4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICog
V2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlJlc291cmNlLm1t
OgorCiAyMDIxLTEyLTEzICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAg
ICAgICAgRGlzdGluZ3Vpc2ggY29udGlndW91cyBTaGFyZWRCdWZmZXIgZnJvbSBub24tY29udGln
dW91cyBvbmUgYW5kIGd1YXJhbnRlZSBpbW11dGFiaWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZwppbmRleCA5ZGU0MGNkMzEzNTNkZGQwNThlMzExYjYxYmZhZTU5ZTg2YTQ0MDZjLi45ZWRj
ZmZlZGFmNDUyMGE0ZDNmYmVmN2VmZjc0MzVkYmY4YjM3NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEtMTItMDMgIEplYW4tWXZlcyBBdmVuYXJk
ICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBSZW5hbWUgU2hhcmVkQnVmZmVyIGNsYXNzZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzcK
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vODU5NjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHJlbmFtZWQgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciBhbmQKKyAgICAgICAgQ29udGlndW91c1NoYXJlZEJ1ZmZlciB0byBT
aGFyZWRCdWZmZXIgdG8gYmV0dGVyIHJlZmxlY3QgdGhlaXIgYWN0dWFsCisgICAgICAgIHR5cGVz
LgorCisgICAgICAgICogTWVtb3J5U3RyZWFtLmNwcDoKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0u
aDoKKyAgICAgICAgKiBXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oOgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKiBXZWJGcmFtZS5oOgor
ICAgICAgICAqIFdlYktpdERMTC5jcHA6CisgICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAg
ICAgICAqIFdlYlJlc291cmNlLmg6CisKIDIwMjEtMTItMTMgIEplYW4tWXZlcyBBdmVuYXJkICA8
anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgU2hhcmVkQnVmZmVyQnVpbGRlciBjbGFzcwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggZWFjY2Ey
YzIzM2E4YTY5MzcxNTkwODA3ZGZkMzY3NWIwNjE1OTQyOC4uYjQ2OTNmOTFjNjA3ZDhkMDc0NTk0
NjQ2ZThkYzQzNzJlOWJjOTllNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlci5oCkBAIC0xMjksNyArMTI5LDcgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZShBcnJheUJ1ZmZlciYp
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNy
ZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHNpemVfdCBieXRlTGVuZ3RoKTsKIAotICAgIC8vIE9u
bHkgZm9yIHVzZSBieSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBh
bmQgU2hhcmVkQnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlci4KKyAgICAvLyBPbmx5IGZvciB1
c2UgYnkgVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQgYW5kIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5QnVmZmVyLgogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90
IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQo
c2l6ZV90IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFn
ZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJbWFnZVJlYWRlci5jcHAKaW5kZXggZGZhYzNhOTU0MDdmMmIzNzNhYTg4ZGZlMzcwN2Yy
YjliZWVhYWY3ZS4uMzM1NGI1MmE1MGNiYjE4OWZkZmFlYjdkODI0ODNiZTBjNDFjM2Q0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCiAKLXZvaWQgQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYpCit2b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJbWFnZVJlYWRlci5oCmluZGV4
IDliNTllYjVjYzQ5NTdmMDMzNjY3NTgyZTg2NTNhYzA3NGZlOGYzNzcuLjFmNTdmYTk1NjBkNjE2
NzY5ZDNiZmJjZjBhNjM4OGM4Yzg3ZmY0MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEltYWdlUmVhZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSW1hZ2VSZWFkZXIuaApA
QCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0
cnVjdCBDbGlwYm9hcmRJbWFnZVJlYWRlciA6IFBhc3RlYm9hcmRGaWxlUmVhZGVyIHsKICAgICBD
bGlwYm9hcmRJbWFnZVJlYWRlcihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWFkRmlsZW5hbWUo
Y29uc3QgU3RyaW5nJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgYm9v
bCBzaG91bGRSZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQg
cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlYWRCdWZmZXIo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBT
dHJpbmcgbV9taW1lVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0
YVNvdXJjZS5jcHAKaW5kZXggNjliYzNkM2EwM2NlNDVlYzdjZTg2MzZkNGIxN2Q5MzU5ZDNjZjBl
Yi4uZDA3NDZkYTJkYTIwOWUwMjMyNWI1ZmEyMTRkYmVlNjRiZjljOTA3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTIxNiw4ICsyMTYs
OCBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6Omludm9rZUNvbXBsZXRp
b25IYW5kbGVyKCkKICAgICAgICAgYXV0byYgZGF0YSA9IGl0ZW1UeXBlTG9hZGVyLT5kYXRhKCk7
CiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYgISFz
dGQ6OmdldDxTdHJpbmc+KGRhdGEpKQogICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZVN0cmlu
Zyh0eXBlLCBzdGQ6OmdldDxTdHJpbmc+KGRhdGEpKTsKLSAgICAgICAgZWxzZSBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KGRhdGEpKQotICAg
ICAgICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwgc3RkOjpnZXQ8UmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PihkYXRhKS5jb3B5UmVmKCkpOworICAgICAgICBlbHNlIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihkYXRhKSkKKyAgICAgICAgICAg
IGN1c3RvbURhdGEud3JpdGVEYXRhKHR5cGUsIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Pihk
YXRhKS5jb3B5UmVmKCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNDksNyArMjQ5
LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVt
VHlwZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZygKICAgICBpZiAoIXN0cmluZ1Jlc3VsdC5pc051
bGwoKSkKICAgICAgICAgbV9kYXRhID0geyBzdHJpbmdSZXN1bHQgfTsKICAgICBlbHNlIGlmIChh
dXRvIGFycmF5QnVmZmVyID0gbV9ibG9iTG9hZGVyLT5hcnJheUJ1ZmZlclJlc3VsdCgpKQotICAg
ICAgICBtX2RhdGEgPSB7IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVu
Z3RoKCkpIH07CisgICAgICAgIG1fZGF0YSA9IHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyLT5kYXRhKCkpLCBhcnJheUJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpKSB9OwogICAgIG1fYmxvYkxvYWRlciA9IG51bGxwdHI7CiAgICAgaW52b2tlQ29t
cGxldGlvbkhhbmRsZXIoKTsKIH0KQEAgLTI2NSw4ICsyNjUsOCBAQCB2b2lkIENsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURh
dGFJZk5lZQogewogICAgIGlmIChtX3R5cGUgPT0gInRleHQvaHRtbCJfcykgewogICAgICAgICBT
dHJpbmcgbWFya3VwVG9TYW5pdGl6ZTsKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7Ci0gICAgICAgICAgICBh
dXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KG1fZGF0
YSk7CisgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+
PihtX2RhdGEpKSB7CisgICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hh
cmVkQnVmZmVyPj4obV9kYXRhKTsKICAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBTdHJp
bmc6OmZyb21VVEY4KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAg
ICAgICBtYXJrdXBUb1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwpAQCAtMjc4
LDkgKzI3OCw5IEBAIHZvaWQgQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJv
YXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlCiAgICAgfQogCiAgICAgaWYgKG1f
dHlwZSA9PSAiaW1hZ2UvcG5nIl9zKSB7Ci0gICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXJUb1Nhbml0aXplOwotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpCi0gICAgICAgICAgICBi
dWZmZXJUb1Nhbml0aXplID0gc3RkOjpnZXQ8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Piht
X2RhdGEpLnB0cigpOworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0
aXplOworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVy
Pj4obV9kYXRhKSkKKyAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSBzdGQ6OmdldDxSZWY8
U2hhcmVkQnVmZmVyPj4obV9kYXRhKS5wdHIoKTsKICAgICAgICAgZWxzZSBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCiAgICAgICAgICAgICBidWZmZXJUb1Nhbml0
aXplID0gdXRmOEJ1ZmZlcihzdGQ6OmdldDxTdHJpbmc+KG1fZGF0YSkpOwogCkBAIC0yOTYsNyAr
Mjk2LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJ
dGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKICAgICAgICAgfQogCiAgICAgICAgIGlt
YWdlQnVmZmVyLT5jb250ZXh0KCkuZHJhd0ltYWdlKGJpdG1hcEltYWdlLmdldCgpLCBGbG9hdFBv
aW50Ojp6ZXJvKCkpOwotICAgICAgICBtX2RhdGEgPSB7IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6
OmNyZWF0ZShpbWFnZUJ1ZmZlci0+dG9EYXRhKCJpbWFnZS9wbmciX3MpKSB9OworICAgICAgICBt
X2RhdGEgPSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGltYWdlQnVmZmVyLT50b0RhdGEoImltYWdl
L3BuZyJfcykpIH07CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGlu
Z3NEYXRhU291cmNlLmgKaW5kZXggMmRjOWQ1MDBmMjUzNWU4Y2IyMWNiYTMzY2U0YWUxZTI1NDEz
MTEwZS4uYWQ0ZDM2YjA3ZmY0MGNlZDhkMDk5ZGQ0MzA2OTkyMmFhMzU3YTVkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuaApAQCAtMzQsNyArMzQsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9iOwotY2xhc3MgQ29udGlndW91c1No
YXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVByb21pc2U7CiBjbGFz
cyBGaWxlUmVhZGVyTG9hZGVyOwogY2xhc3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CkBAIC01Myw3
ICs1Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGludm9rZUNvbXBsZXRpb25IYW5kbGVyKCk7
CiAKLSAgICB1c2luZyBCdWZmZXJPclN0cmluZyA9IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgQnVmZmVyT3JTdHJpbmcgPSBzdGQ6
OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj47CiAgICAgY2xhc3MgQ2xpcGJvYXJk
SXRlbVR5cGVMb2FkZXIgOiBwdWJsaWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCwgcHVibGljIFJl
ZkNvdW50ZWQ8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+IHsKICAgICBwdWJsaWM6CiAgICAgICAg
IHN0YXRpYyBSZWY8Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcm
IHR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlw
Ym9hcmRJbWFnZVJlYWRlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQppbmRleCAyOTNmNTIzMGQwZDc3
MTIzZGIxMzBiMDE2OTM2OTlmYmFmZjU0YWI0Li40MzAyMzYxZTZmZTI3ODUyODRhZTZjMDgzMjhh
ZjMwN2EzYTQ0MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1t
CkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9h
cmRJbWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENsaXBib2FyZEltYWdl
UmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmci
KSB7CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3Rh
bmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9h
cmRJbWFnZVJlYWRlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQppbmRleCAxNTdjNWY1MmMwMjZiZmFh
OTc2NGVjZDI1MDQyM2IxNWQxODYzM2NhLi5iNGMzMWNhNTA2MzljY2NhNGM1NTA1NGQ0OTEzMTc4
NjlkYTdlNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCkBA
IC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDbGlwYm9hcmRJ
bWFnZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIENsaXBib2FyZEltYWdlUmVh
ZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7
CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhE
YXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0NhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwCmluZGV4IDhi
ZmY4MDcwNmU2ZTE5OWE1NGM1MzczMGZiNmMzN2M5ZmY4MzI5ZjIuLjliM2Y4NDA3NDVkMWEwNjk4
ODNhMjBjM2E2NWY5OTc5ZmIxYTI0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9DYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcApAQCAtNTAsNyArNTAsNyBA
QCB1aW50NjRfdCBDYWNoZVN0b3JhZ2VDb25uZWN0aW9uOjpjb21wdXRlUmVhbEJvZHlTaXplKGNv
bnN0IERPTUNhY2hlRW5naW5lOjpSZXNwbwogICAgIHVpbnQ2NF90IHJlc3VsdCA9IDA7CiAgICAg
V1RGOjpzd2l0Y2hPbihib2R5LCBbJl0gKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7
CiAgICAgICAgIHJlc3VsdCA9IGZvcm1EYXRhU2l6ZShmb3JtRGF0YSk7Ci0gICAgfSwgWyZdIChj
b25zdCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAgIH0sIFsmXSAo
Y29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICByZXN1bHQgPSBidWZm
ZXItPnNpemUoKTsKICAgICB9LCBbXSAoY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDQyZmU4ZmRm
ZDQ5ZDFlNjBhOGRjZjExYzEyZjJmYjAzZTM0Njg5MDEuLjk1YWEwODY1OTRhNmZiNjBkNTZmZDcx
NWUzZjQyZTI0NDY4OWExYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGUuY3BwCkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxS
ZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICB9
CiB9CiAKLXZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0
Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+PiYmIHJlc3BvbnNlQm9keSkKK3ZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25z
ZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVz
dD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25z
ZUJvZHkuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFs
aXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKV0o
KSBtdXRhYmxlIHsKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVz
dEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlzZQog
ICAgICAgICAgICAgaWYgKGF1dG8qIGNodW5rID0gcmVzdWx0LnJldHVyblZhbHVlKCkpCiAgICAg
ICAgICAgICAgICAgZGF0YS5hcHBlbmQoY2h1bmstPmRhdGEoKSwgY2h1bmstPnNpemUoKSk7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0
YShXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHsgZGF0YS50YWtlQXNDb250aWd1b3VzKCkg
fSk7CisgICAgICAgICAgICAgICAgdGhpcy0+cHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHBy
b21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4geyBkYXRhLnRha2VBc0NvbnRpZ3VvdXMoKSB9KTsKICAgICAgICAgfSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgK
aW5kZXggYzM1Y2MzY2JjZWRiM2IyNTExYmYzNTdhMzFhZmUyZDI3NDM4YmQ0Yy4uMTM5NzU0ZDMw
ZTQwMDc4NTRhNjQ0YTc0MTFhM2M4MTdjZDlkMWY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3Rv
cCgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBm
aW5hbDsKIAotICAgIHZvaWQgcHV0V2l0aFJlc3BvbnNlRGF0YShET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJiwgUmVmPEZldGNoUmVxdWVzdD4mJiwgUmVmPEZldGNoUmVzcG9uc2U+JiYsIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mJik7CisgICAgdm9pZCBwdXRX
aXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1
ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+JiYpOwogCiAgICAgZW51bSBjbGFzcyBTaG91bGRSZXRyaWV2ZVJlc3BvbnNlcyA6IGJv
b2wgeyBObywgWWVzIH07CiAgICAgdXNpbmcgUmVjb3Jkc0NhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeGNlcHRpb25PcjxWZWN0b3I8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4+JiYp
PjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdp
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAK
aW5kZXggNDc1MDRjYmViZGFlMDM4MTY3NTlhOGY2OGU4YzI0NjJmZGYyYTVlNS4uYzBmODAzMmIw
NDUyYzM3ZWU0Y2FmYmNhZmQ3OWYwOWQyMTQ2MzMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBSZXNw
b25zZUJvZHkgaXNvbGF0ZWRSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9uc2VCb2R5JiBib2R5KQog
ewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0IFJlZjxGb3JtRGF0YT4m
IGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1cm4gZm9ybURhdGEtPmlz
b2xhdGVkQ29weSgpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgewotICAgICAgICByZXR1cm4gYnVmZmVyLmNvcHlS
ZWYoKTsgLy8gQ29udGlndW91c1NoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUg
cmV0dXJuZWQgYXMtaXMuCisgICAgfSwgW10oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgLT4gUmVzcG9uc2VCb2R5IHsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5UmVmKCk7IC8v
IFNoYXJlZEJ1ZmZlciBhcmUgaW1tdXRhYmxlIGFuZCBjYW4gYmUgcmV0dXJuZWQgYXMtaXMuCiAg
ICAgfSwgW10oY29uc3Qgc3RkOjpudWxscHRyX3QmKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAg
ICByZXR1cm4gRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSB7IH07CiAgICAgfSk7CkBAIC0x
NDIsNyArMTQyLDcgQEAgUmVzcG9uc2VCb2R5IGNvcHlSZXNwb25zZUJvZHkoY29uc3QgUmVzcG9u
c2VCb2R5JiBib2R5KQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJvZHksIFtdKGNvbnN0
IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSAtPiBSZXNwb25zZUJvZHkgewogICAgICAgICByZXR1
cm4gZm9ybURhdGEuY29weVJlZigpOwotICAgIH0sIFtdKGNvbnN0IFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZXNwb25zZUJvZHkgeworICAgIH0sIFtdKGNvbnN0IFJl
ZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlc3BvbnNlQm9keSB7CiAgICAgICAgIHJldHVy
biBidWZmZXIuY29weVJlZigpOwogICAgIH0sIFtdKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgLT4g
UmVzcG9uc2VCb2R5IHsKICAgICAgICAgcmV0dXJuIERPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJv
ZHkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNo
ZUVuZ2luZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5o
CmluZGV4IGNiZjhiNjhiYThhM2NhM2FhYzJlNDEyMGJjY2RiYWYyZmExNTY2NjMuLjk0YWQyMTJh
MDcwZmNlMjZhYjBhNTk1YWY4MmE1NzM2YzEzNDU4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKQEAgLTU3LDcgKzU3LDcgQEAgRXhjZXB0aW9u
IGNvbnZlcnRUb0V4Y2VwdGlvbkFuZExvZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXJyb3Ip
OwogV0VCQ09SRV9FWFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGNhY2hlZFJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogV0VCQ09SRV9F
WFBPUlQgYm9vbCBxdWVyeUNhY2hlTWF0Y2goY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBVUkwmIHVybCwgYm9vbCBoYXNWYXJ5U3RhciwgY29uc3QgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4mIHZhcnlIZWFkZXJzLCBjb25zdCBDYWNoZVF1ZXJ5T3B0aW9ucyYpOwogCi11c2lu
ZyBSZXNwb25zZUJvZHkgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0
YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47Cit1c2luZyBSZXNwb25zZUJvZHkgPSBz
dGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxTaGFyZWRCdWZm
ZXI+PjsKIFJlc3BvbnNlQm9keSBpc29sYXRlZFJlc3BvbnNlQm9keShjb25zdCBSZXNwb25zZUJv
ZHkmKTsKIFdFQkNPUkVfRVhQT1JUIFJlc3BvbnNlQm9keSBjb3B5UmVzcG9uc2VCb2R5KGNvbnN0
IFJlc3BvbnNlQm9keSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETS5jcHAKaW5kZXggMzQ5YTU5ZGVjMmRhY2EzOGM4YTMyNTFiMTliZmRhYTJmNTVmN2I3
YS4uMDE2MTIxOWQxZTI2YjI2MmM0ZWVlYzgxOThjNDZkOGViMTRjMWIwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAtMTM1LDE3ICsxMzUs
MTcgQEAgYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3Vw
cG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSk7CiB9CiAKLVJlZlB0
cjxTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCitSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7
CiAgICAgcmV0dXJuIEluaXREYXRhUmVnaXN0cnk6OnNoYXJlZCgpLnNhbml0aXplSW5pdERhdGEo
aW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CiB9CiAKLWJvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0
RGF0YSkKK2Jvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAg
cmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEoaW5pdERhdGFU
eXBlLCBpbml0RGF0YSk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVS
ZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQorUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiByZXNwb25zZSkKIHsKICAgICBpZiAoIW1fcHJpdmF0ZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaApp
bmRleCBkOGE0YjNhZjEyZjFhNzkyM2Q4ODcwNWQ1Yjk1ODFkMzZmMTAyNzBjLi5kN2IxZDUzZDA0
OTFmNzI3NzliNTk0YjJkODNjMDliODNiY2YyMDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgQ0RNSW5zdGFu
Y2U7CiBjbGFzcyBDRE1Qcml2YXRlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNIDogcHVibGljIFJlZkNvdW50ZWQ8Q0RNPiwgcHVibGljIENh
bk1ha2VXZWFrUHRyPENETT4sIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewog
cHVibGljOgpAQCAtNzMsMTAgKzczLDEwIEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzU2Vz
c2lvbnMoKSBjb25zdDsKICAgICBib29sIHN1cHBvcnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21T
dHJpbmcmKSBjb25zdDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsK
LSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVu
dC5oCmluZGV4IDIxZTUyZjRiNzE0ZmI5MWY2N2NmYzM5NjEzOWMxNjUyNWJmYjdiOWIuLjQxMGVk
MmZiNjQyNzU2MmNlOWJkOGVkYTRkOTFhODZiYTk4Y2FhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaApAQCAtMzYsMTQgKzM2LDE0
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENETUluc3RhbmNlOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ0RNQ2xp
ZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPENETUNsaWVudD4gewogcHVibGljOgogICAgIHZp
cnR1YWwgfkNETUNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgdm9pZCBjZG1DbGll
bnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0
IFN0cmluZyYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2Rt
Q2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcm
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKaW5kZXggMmM2MzhmN2M4NDE5NDY0OTBlMjA0
ODc2NDJjOWE3MjE3M2M1MDU5Zi4uNmY4ODhlMTc4NThkZGE2ZDk0NzFlYzFmNmVmNWQwNjZkZjBl
NDk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9J
bml0RGF0YVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCkBAIC01NCw3ICs1NCw3IEBAIG5hbWVzcGFjZSB7
CiAgICAgY29uc3QgdWludDMyX3Qga0tleUlkc01heEtleUlkU2l6ZUluQnl0ZXMgPSA1MTI7CiB9
CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJh
Y3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgc3RkOjpv
cHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlE
c0tleWlkcyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8g
MS4gRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9m
b3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CkBAIC03NCw3ICs3NCw3
IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJh
Y3RLZXlJRHNLZXlpZHMoY29uc3QgU2hhcmVkCiAgICAgaWYgKCFraWRzQXJyYXkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtl
eUlEczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAg
ICAgZm9yIChhdXRvJiB2YWx1ZSA6ICpraWRzQXJyYXkpIHsKICAgICAgICAgYXV0byBrZXlJRCA9
IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICBpZiAoIWtleUlEKQpAQCAtOTMsNyArOTMsNyBA
QCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0
S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZAogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLXN0YXRp
YyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK3N0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVL
ZXlpZHMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDEu
IEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9y
bWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdApAQCAtMTExLDcgKzExMSw3
IEBAIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtleWlkcyhjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoanNvbkRh
dGEuZGF0YSgpLCBqc29uRGF0YS5sZW5ndGgoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4g
SW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1By
b3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRy
YWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0CiAgICAg
Ly8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkv
aW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAgLTE1MSw5ICsxNTEsOSBAQCBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNp
ZmljSGVhZGVyQm94Pj4+IEluaQogICAgIHJldHVybiBwc3NoQm94ZXM7CiB9CiAKLXN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFj
dEtleUlEc0NlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRy
YWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0g
ICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwogCiAgICAgYXV0byBwc3NoQm94ZXMgPSBleHRy
YWN0UHNzaEJveGVzRnJvbUNlbmMoYnVmZmVyKTsKICAgICBpZiAoIXBzc2hCb3hlcykKQEAgLTE4
NSw3ICsxODUsNyBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IElu
aXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNvbgogICAgIHJldHVybiBrZXlJRHM7
CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2Vu
Yyhjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQgUFNTSCBC
b3ggRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9m
b3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0ZW0KQEAgLTE5NSw3
ICsxOTUsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6
ZUNlbmMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5
KCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHNhbml0aXplV2ViTShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgLy8gQ2hlY2sgaWYgdGhlIGJ1ZmZlciBpcyBhIHZhbGlkIFdlYk0gaW5pdERhdGEuCiAg
ICAgLy8gVGhlIFdlYk0gaW5pdERhdGEgaXMgdGhlIENvbnRlbnRFbmNLZXlJRCwgc28gc2hvdWxk
IGJlIGxlc3MgdGhhbiBrV2ViTU1heENvbnRlbnRFbmNLZXlJRFNpemUuCkBAIC0yMDUsMTAgKzIw
NSwxMCBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVXZWJNKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGF0
aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURz
V2ViTShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzV2ViTShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+PiBrZXlJRHM7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkQnVm
ZmVyID0gc2FuaXRpemVXZWJNKGJ1ZmZlcik7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4ga2V5SURzOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBz
YW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdlYk0oYnVmZmVyKTsKICAgICBpZiAoIXNhbml0aXpl
ZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMjMzLDcgKzIzMyw3
IEBAIEluaXREYXRhUmVnaXN0cnk6OkluaXREYXRhUmVnaXN0cnkoKQogCiBJbml0RGF0YVJlZ2lz
dHJ5Ojp+SW5pdERhdGFSZWdpc3RyeSgpID0gZGVmYXVsdDsKIAotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgYXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXREYXRhVHlwZSk7CiAg
ICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUuc2FuaXRpemVJbml0
RGF0YSkKQEAgLTI0MSw3ICsyNDEsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBJbml0RGF0YVJl
Z2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYQogICAgIHJl
dHVybiBpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKGJ1ZmZlcik7CiB9CiAKLXN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFj
dEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBhdXRvIGl0ZXIgPSBtX3R5cGVzLmZpbmQoaW5pdERhdGFUeXBlKTsKICAgICBpZiAoaXRlciA9
PSBtX3R5cGVzLmVuZCgpIHx8ICFpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVn
aXN0cnkuaAppbmRleCBjZDEzODdhNmJkMDM4ZmYzNGUyY2ZiNzVmNDQzZGU3ZDk0MDMyMWIwLi43
N2Q2MDRiMDhiYjdmN2UzOGJjY2IzNTQ1YjM0YzhiMTM0MzU1ZWYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnku
aApAQCAtMzgsMTkgKzM4LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElTT1By
b3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEluaXREYXRhUmVnaXN0cnkgewog
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbml0RGF0YVJlZ2lzdHJ5JiBzaGFy
ZWQoKTsKICAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8SW5pdERhdGFSZWdpc3RyeT47
CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5
SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7
CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0cnVjdCBJbml0
RGF0YVR5cGVDYWxsYmFja3MgewotICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJh
Y2sgPSBGdW5jdGlvbjxSZWZQdHI8U2hhcmVkQnVmZmVyPihjb25zdCBTaGFyZWRCdWZmZXImKT47
Ci0gICAgICAgIHVzaW5nIEV4dHJhY3RLZXlJRHNDYWxsYmFjayA9IEZ1bmN0aW9uPHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4oY29uc3QgU2hhcmVkQnVmZmVyJik+Owor
ICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsK
KyAgICAgICAgdXNpbmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0gRnVuY3Rpb248c3RkOjpvcHRp
b25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4oY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpPjsKIAogICAgICAgICBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgc2Fu
aXRpemVJbml0RGF0YTsKICAgICAgICAgRXh0cmFjdEtleUlEc0NhbGxiYWNrIGV4dHJhY3RLZXlJ
RHM7CkBAIC02MSw5ICs2MSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmlu
ZyYga2V5aWRzTmFtZSgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiB3ZWJtTmFtZSgp
OwogCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Q
cm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBzc2hCb3hlc0Zyb21D
ZW5jKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUNlbmMoY29uc3Qg
U2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gZXh0cmFjdFBz
c2hCb3hlc0Zyb21DZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0
cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRp
YyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVDZW5jKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogcHJpdmF0ZToKICAgICBJbml0RGF0YVJlZ2lzdHJ5KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggOGJmYjFjZTcwMWEyZjVhNjliNWI1MTk5MWFhODYzMmVi
Yjg5MjVmOS4uMTQ3NzZjMjAxNTFiZmVmZTM4MDc5YTMzNzMwYzg4NjYyNjhiYTQ2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Np
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpn
ZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZm
CiAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3
b3JraW5nLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgaW5pdERhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLmxlbmd0aCgpKSwg
aW5pdERhdGFUeXBlLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdU
Rk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewogICAgICAgICAvLyAxMC4xLiBJZiB0aGUg
aW5pdCBkYXRhIGlzIG5vdCB2YWxpZCBmb3IgaW5pdERhdGFUeXBlLCByZWplY3QgcHJvbWlzZSB3
aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIC8vIDEwLjIuIExldCBzYW5p
dGl6ZWQgaW5pdCBkYXRhIGJlIGEgdmFsaWRhdGVkIGFuZCBzYW5pdGl6ZWQgdmVyc2lvbiBvZiBp
bml0IGRhdGEuCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZEluaXREYXRh
ID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXRE
YXRhKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZElu
aXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUs
IGluaXREYXRhKTsKIAogICAgICAgICAvLyAxMC4zLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFp
bGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAg
ICAgIGlmICghc2FuaXRpemVkSW5pdERhdGEpIHsKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIE1l
ZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgY29uc3QgQnVmZgogICAgICAgICAgICAgbV9sYXRlc3REZWNyeXB0VGltZSA9IDA7CiAg
ICAgICAgIH0KIAotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UobV9z
ZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBzYW5pdGl6ZWRJbml0RGF0YS5yZWxlYXNlTm9uTnVs
bCgpLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlm
aWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RN
SW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAg
ICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlcXVlc3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUsIGluaXRE
YXRhVHlwZSwgc2FuaXRpemVkSW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtU
aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRl
bnRpZmllcildIChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5j
ZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTQyMiw3ICs0MjIs
NyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVz
cG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAgIC8vIDYuIFJ1biB0aGUgZm9sbG93aW5n
IHN0ZXBzIGluIHBhcmFsbGVsOgogICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhp
cywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIHJlc3BvbnNlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzcG9uc2UuZGF0YSgpLCBy
ZXNwb25zZS5sZW5ndGgoKSksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVy
ID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDYuMS4gTGV0
IHNhbml0aXplZCByZXNwb25zZSBiZSBhIHZhbGlkYXRlZCBhbmQvb3Igc2FuaXRpemVkIHZlcnNp
b24gb2YgcmVzcG9uc2UgY29weS4KLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emVkUmVzcG9uc2UgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNl
KTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3Bv
bnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7CiAKICAg
ICAgICAgLy8gNi4yLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCBvciBpZiBzYW5pdGl6
ZWQgcmVzcG9uc2UgaXMgZW1wdHksIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVk
IFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFzYW5pdGl6ZWRSZXNwb25zZSB8fCBzYW5pdGl6ZWRS
ZXNwb25zZS0+aXNFbXB0eSgpKSB7CkBAIC02MDEsNyArNjAxLDcgQEAgdm9pZCBNZWRpYUtleVNl
c3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIC8v
IDQuMy4gTGV0IG1lc3NhZ2UgdHlwZSBiZSBudWxsLgogCiAgICAgICAgIC8vIDQuNC4gVXNlIHRo
ZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3RhbmNl
U2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0
aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBX
VEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3Im
JiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAg
IG1faW5zdGFuY2VTZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwgbV9zZXNz
aW9uVHlwZSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRl
bnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0
YXR1c1ZlY3RvciYmIGtleXMsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRl
ZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIApAQCAtNjQ5LDcgKzY0OSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpyZW1v
dmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIC8vIDUuIFJldHVybiBwcm9t
aXNlLgogfQogCi12b2lkIE1lZGlhS2V5U2Vzc2lvbjo6ZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlN
ZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBtZXNzYWdlKQordm9p
ZCBNZWRpYUtleVNlc3Npb246OmVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUgbWVz
c2FnZVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG1lc3NhZ2UpCiB7CiAgICAg
Ly8gNi40LjEgUXVldWUgYSAibWVzc2FnZSIgRXZlbnQKICAgICAvLyBodHRwczovL3czYy5naXRo
dWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNxdWV1ZS1tZXNzYWdlCkBAIC03MTYsNyArNzE2LDcgQEAg
dm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKENETUluc3RhbmNlU2Vzc2lv
bjo6S2V5U3RhdHVzVmVjdG9yJiYgaW4KICAgICAgICAgfSk7CiB9CiAKLXZvaWQgTWVkaWFLZXlT
ZXNzaW9uOjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBNZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKENE
TU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBt
ZXNzYWdlKQogewogICAgIGVucXVldWVNZXNzYWdlKG1lc3NhZ2VUeXBlLCBtZXNzYWdlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5U2Vzc2lvbi5oCmluZGV4IDNkOTZmODgwMmU3NDc4NDFjNGVmZGE4MWRjYjk0MWVhNmU0YTc1
ZTQuLjM2NWFjZTVjMDk1ZTdkYzBjNTcxZTc2Y2NmMmMwN2FhZmM2MmJhYTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Np
b24uaApAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBDRE07CiBjbGFzcyBEZWZlcnJlZFByb21pc2U7
CiBjbGFzcyBNZWRpYUtleVN0YXR1c01hcDsKIGNsYXNzIE1lZGlhS2V5czsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VQcm94eTsKIApAQCAtODcsMjAgKzg3LDIwIEBA
IHB1YmxpYzoKICAgICB1c2luZyBDbG9zZWRQcm9taXNlID0gRE9NUHJvbWlzZVByb3h5PElETFVu
ZGVmaW5lZD47CiAgICAgQ2xvc2VkUHJvbWlzZSYgY2xvc2VkKCkgeyByZXR1cm4gbV9jbG9zZWRQ
cm9taXNlLmdldCgpOyB9CiAKLSAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxTaGFyZWRC
dWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+JiBzdGF0dXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dHVzZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiYgc3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBtX3N0
YXR1c2VzOyB9CiAKICAgICB1bnNpZ25lZCBpbnRlcm5hbEluc3RhbmNlU2Vzc2lvbk9iamVjdFJl
ZkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnN0YW5jZVNlc3Npb24tPnJlZkNvdW50KCk7IH0K
IAogcHJpdmF0ZToKICAgICBNZWRpYUtleVNlc3Npb24oRG9jdW1lbnQmLCBXZWFrUHRyPE1lZGlh
S2V5cz4mJiwgTWVkaWFLZXlTZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZp
ZXIsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0YW5jZVNlc3Npb24+JiYpOwotICAgIHZvaWQgZW5x
dWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJik7Cisg
ICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCB1cGRhdGVFeHBpcmF0aW9uKGRvdWJsZSk7CiAg
ICAgdm9pZCBzZXNzaW9uQ2xvc2VkKCk7CiAgICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKSBjb25zdDsKIAogICAgIC8vIENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAogICAgIHZv
aWQgdXBkYXRlS2V5U3RhdHVzZXMoQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNW
ZWN0b3ImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRNZXNzYWdl
KENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBm
aW5hbDsKICAgICB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAg
ICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgZmluYWw7CiAKQEAgLTE0MCwxMCArMTQw
LDEwIEBAIHByaXZhdGU6CiAgICAgTWVkaWFLZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25UeXBlOwog
ICAgIFJlZjxDRE0+IG1faW1wbGVtZW50YXRpb247CiAgICAgUmVmPENETUluc3RhbmNlU2Vzc2lv
bj4gbV9pbnN0YW5jZVNlc3Npb247Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBtX3Jl
Y29yZE9mS2V5VXNhZ2U7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4g
bV9yZWNvcmRPZktleVVzYWdlOwogICAgIGRvdWJsZSBtX2ZpcnN0RGVjcnlwdFRpbWUgeyAwIH07
CiAgICAgZG91YmxlIG1fbGF0ZXN0RGVjcnlwdFRpbWUgeyAwIH07Ci0gICAgVmVjdG9yPHN0ZDo6
cGFpcjxSZWY8U2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiBtX3N0YXR1c2VzOworICAg
IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0
YXR1cz4+IG1fc3RhdHVzZXM7CiAKICAgICB1c2luZyBEaXNwbGF5Q2hhbmdlZE9ic2VydmVyID0g
T2JzZXJ2ZXI8dm9pZChQbGF0Zm9ybURpc3BsYXlJRCk+OwogICAgIERpc3BsYXlDaGFuZ2VkT2Jz
ZXJ2ZXIgbV9kaXNwbGF5Q2hhbmdlZE9ic2VydmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRl
eCAwNmFmZmI1ZjJlZGZlMTgyOTcxOWVhMTdjMjc4ODU0YmM1YTZlNjBjLi4zOThlOGFiMWI2NTZi
NDQ1OTI3YmViNmJjNjkzZGQzOTlhNjg3YWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAt
NTYsNyArNTYsNyBAQCB1bnNpZ25lZCBsb25nIE1lZGlhS2V5U3RhdHVzTWFwOjpzaXplKCkKICAg
ICByZXR1cm4gbV9zZXNzaW9uLT5zdGF0dXNlcygpLnNpemUoKTsKIH0KIAotc3RhdGljIGJvb2wg
a2V5SWRzTWF0Y2goY29uc3QgU2hhcmVkQnVmZmVyJiBhLCBjb25zdCBCdWZmZXJTb3VyY2UmIGIp
CitzdGF0aWMgYm9vbCBrZXlJZHNNYXRjaChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBh
LCBjb25zdCBCdWZmZXJTb3VyY2UmIGIpCiB7CiAgICAgYXV0byBsZW5ndGggPSBhLnNpemUoKTsK
ICAgICBpZiAoIWxlbmd0aCB8fCBsZW5ndGggIT0gYi5sZW5ndGgoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAu
aAppbmRleCBjMjExMTEzYTJjNmRhYzc5NzkyNGE5OWQyZDJkZjk3YzJlNjVmODUwLi42MGQ2MmFh
ZmY4MDc0ZGFkYTZlMzFhM2YyYjM3MGE2ZDZkMDFmNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5oCkBA
IC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhS2V5U2Vz
c2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIE1lZGlhS2V5U3RhdHVzTWFwIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFLZXlT
dGF0dXNNYXA+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAppbmRleCA4M2IyNGFjZWFhNWIxMjk0YmI0ZWE0Mzlm
YjJkNWM0ZjZjY2Q0NzUzLi4zNjdmMzFkMTg2YjUxNjM5YTljNzQyMTNmMGNmOGU2ZjJmOGQyNmVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleXMuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgYm9vbCBNZWRpYUtleXM6Omhhc09wZW5TZXNz
aW9ucygpIGNvbnN0CiAgICAgICAgIH0pOwogfQogCi12b2lkIE1lZGlhS2V5czo6dW5yZXF1ZXN0
ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKK3ZvaWQgTWVkaWFLZXlzOjp1bnJlcXVlc3Rl
ZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBmb3IgKGF1dG8m
IGNkbUNsaWVudCA6IG1fY2RtQ2xpZW50cykKICAgICAgICAgY2RtQ2xpZW50LmNkbUNsaWVudFVu
cmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0
YS5jb3B5UmVmKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmgKaW5kZXggN2I1OWEzYmM2ZDIyNTZmYzY1NmYwOGNiZjI2ODkxODUxMDk4
M2EyMi4uOTFhMWEwNzExNDMzYmUyNDdkZDJhODVjNWY0YWQwOTM4YTA5YTdhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCkBAIC04
Niw3ICs4Niw3IEBAIHByb3RlY3RlZDoKICAgICBNZWRpYUtleXMoRG9jdW1lbnQmLCBib29sIHVz
ZURpc3RpbmN0aXZlSWRlbnRpZmllciwgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkLCBjb25z
dCBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mLCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFu
Y2U+JiYpOwogCiAgICAgLy8gQ0RNSW5zdGFuY2VDbGllbnQKLSAgICB2b2lkIHVucmVxdWVzdGVk
SW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJikgZmluYWw7CisgICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2Vp
dmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
IAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkg
Y29uc3QgeyByZXR1cm4gbV9sb2dnZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcAppbmRleCBkNjViMjdiZmU4YTFlZjIxOTkyYjllMWFkMDVhY2E1NGU3MmQ2
MDVlLi5iOGYyZWMzNzNkODczY2M5YzhhY2IzYzZlYzg0NWY2YWIwMDA5YWE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yOTcsMTQgKzI5NywxNCBA
QCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4g
Zm9ybURhdGFCb2R5KCk7CiAKICAgICBpZiAoaXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBDb250
aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoUEFMOjpVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4
dEJvZHkoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOworICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoUEFMOjpVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4
dEJvZHkoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogICAgIGlmIChp
c1VSTFNlYXJjaFBhcmFtcygpKQotICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKFBBTDo6VVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHko
KS50b1N0cmluZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAg
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQQUw6OlVURjhFbmNvZGluZygpLmVuY29k
ZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgUEFMOjpVbmVuY29kYWJsZUhhbmRs
aW5nOjpFbnRpdGllcykpOwogCiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0
dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0
aCgpKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1ZmZlckJvZHkoKS5i
eXRlTGVuZ3RoKCkpOwogICAgIGlmIChpc0FycmF5QnVmZmVyVmlldygpKQotICAgICAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmll
d0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNl
QWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5o
CmluZGV4IDA4OTgzZWMwMDQzZjZjOTlhN2ZhZWFmYzY5M2NlODI4MjNiNDAxYmMuLmJhZDFiNWVh
MjNiNzcxYjM0N2Y0YjA0YTU2NzU4ZmMwMDg4ZTEyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQ
dHI8Rm9ybURhdGE+IGJvZHlBc0Zvcm1EYXRhKCkgY29uc3Q7CiAKLSAgICB1c2luZyBUYWtlbkRh
dGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgVGFrZW5EYXRhID0gc3RkOjp2YXJpYW50
PHN0ZDo6bnVsbHB0cl90LCBSZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CiAgICAg
VGFrZW5EYXRhIHRha2UoKTsKIAogICAgIHZvaWQgc2V0QXNGb3JtRGF0YShSZWY8Rm9ybURhdGE+
JiYgZGF0YSkgeyBtX2RhdGEgPSBXVEZNb3ZlKGRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGZhZGU2M2U0YmU0
OWY0ZDE5MzlkMWRiOGFlMTMyMTgxYWQwYTlhMmIuLmMyMzFmMjA3ZGEyNWNkMmExNTg2MGQyOGRi
M2NlMTdlODU3NTc3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC0zMjksMTIgKzMyOSwxMiBAQCB2b2lkIEZldGNoQm9k
eUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkKICAg
ICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnNldERhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBGZXRjaEJvZHlDb25z
dW1lcjo6c2V0RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAg
IG1fYnVmZmVyID0gV1RGTW92ZShkYXRhKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRmV0
Y2hCb2R5Q29uc3VtZXI6OnRha2VEYXRhKCkKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZURhdGEoKQogewogICAgIGlmICghbV9idWZmZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5oCmluZGV4IDZiYmJjZTczNDdhYTNiYzJmNzBmNGVjNmQ4YmIw
ZTE4NzJhYWY4OTcuLjg3MWQyYzA4NjMzMWE5ODI5NGExNjZhNGI0MmUzMTg0ZTAzNzc3MmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgK
QEAgLTUwLDEwICs1MCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4g
ISFtX2J1ZmZlcjsgfQotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhKFJlZjxTaGFyZWRC
dWZmZXI+JiYpOworICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQorICAgIHZvaWQgc2V0RGF0YShSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB0
YWtlRGF0YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlRGF0YSgp
OwogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiB0YWtlQXNBcnJheUJ1ZmZlcigpOwogICAg
IFN0cmluZyB0YWtlQXNUZXh0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5jcHAKaW5kZXggZmM1NWNjN2Q4M2Q4YmMxMWYwODU0ZGMzY2ZkODUwOTdhMzFm
MTBmNi4uMDNmODliNjFjYTVmN2M3MTc2YjlkODhjZDEzNjYwZTg2YjdhMjU0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTEzNSw3ICsxMzUs
NyBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdG9wKCkKICAgICAgICAgbV9sb2FkZXItPmNhbmNlbCgp
OwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaExvYWRlcjo6c3RhcnRTdHJlYW1pbmco
KQorUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoTG9hZGVyOjpzdGFydFN0cmVh
bWluZygpCiB7CiAgICAgQVNTRVJUKG1fY29uc3VtZXIpOwogICAgIGF1dG8gZmlyc3RDaHVuayA9
IG1fY29uc3VtZXItPnRha2VEYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoTG9hZGVyLmgKaW5kZXggMmY5MGYwZWMzZmY5MDVhMjYyMzFjODRjNzJhN2ExODZjZDRiZmU4
My4uNDYxMmQwZTBlM2E3ZWZlMzA2MDM5NmIwZDc1YTJmYTNiYzRlZGRhZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApAQCAtMzksMTQgKzM5LDE0IEBAIGNs
YXNzIEZldGNoQm9keUNvbnN1bWVyOwogY2xhc3MgRmV0Y2hMb2FkZXJDbGllbnQ7CiBjbGFzcyBG
ZXRjaFJlcXVlc3Q7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVk
QnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgRmV0Y2hMb2Fk
ZXIgZmluYWwgOiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6CiAgICAg
RmV0Y2hMb2FkZXIoRmV0Y2hMb2FkZXJDbGllbnQmLCBGZXRjaEJvZHlDb25zdW1lciopOwogICAg
IFdFQkNPUkVfRVhQT1JUIH5GZXRjaExvYWRlcigpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gc3RhcnRTdHJlYW1pbmcoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
c3RhcnRTdHJlYW1pbmcoKTsKIAogICAgIHZvaWQgc3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIGNvbnN0IEZldGNoUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc3RhcnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEJsb2ImKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDBjNTk4MmRmNzY2NDQ5Y2E1
NGQ3YTllYjhkNjBjYzRmZTM4ODIwNDguLjliODRjNDM4NDljOTY4ZGNmYjExYTVmZjBlN2IyNTU2
Njg4YTdmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmNwcApAQCAtNDQ2LDcgKzQ0Niw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURh
dGEoUmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAgICAg
ICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLnNldEFzRm9ybURh
dGEoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgICAgICB9LAotICAgICAgICBbdGhpc10oUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICAgICAgW3RoaXNdKFJlZjxTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpc0JvZHlOdWxsKCkpCiAgICAg
ICAgICAgICAgICAgc2V0Qm9keSh7IH0pOwogICAgICAgICAgICAgYm9keSgpLmNvbnN1bWVyKCku
c2V0RGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwpAQCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgRmV0Y2hS
ZXNwb25zZTo6ZmVlZFN0cmVhbSgpCiAgICAgY2xvc2VTdHJlYW0oKTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6c3RhcnRTdHJlYW1pbmcoKQor
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6
OnN0YXJ0U3RyZWFtaW5nKCkKIHsKICAgICBBU1NFUlQobV9sb2FkZXIpOwogICAgIHJldHVybiBt
X2xvYWRlci0+c3RhcnRTdHJlYW1pbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmgKaW5kZXggNmY0YTI0ZTI3NWUxNjlhMTM3NzE0NTAwZGFmY2QxZDY1
NWNhZjUxNS4uNmIwNTA1ZDg4YjEzMmUyOGNiOTU0YWI5YTBlN2VmZTgxM2Y3MDJhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTg1LDcgKzg1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmVlZFN0cmVhbSgpIGZpbmFsOwogICAgIHZvaWQgY2Fu
Y2VsKCkgZmluYWw7CiAKLSAgICB1c2luZyBSZXNwb25zZURhdGEgPSBzdGQ6OnZhcmlhbnQ8c3Rk
OjpudWxscHRyX3QsIFJlZjxGb3JtRGF0YT4sIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj47
CisgICAgdXNpbmcgUmVzcG9uc2VEYXRhID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBS
ZWY8Rm9ybURhdGE+LCBSZWY8U2hhcmVkQnVmZmVyPj47CiAgICAgUmVzcG9uc2VEYXRhIGNvbnN1
bWVCb2R5KCk7CiAgICAgdm9pZCBzZXRCb2R5RGF0YShSZXNwb25zZURhdGEmJiwgdWludDY0X3Qg
Ym9keVNpemVXaXRoUGFkZGluZyk7CiAKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2YXRlOgogCiAg
ICAgICAgIHZvaWQgY29uc3VtZURhdGFCeUNodW5rKENvbnN1bWVEYXRhQnlDaHVua0NhbGxiYWNr
JiYpOwogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0YXJ0U3RyZWFtaW5nKCk7Cisg
ICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzdGFydFN0cmVhbWluZygpOwog
ICAgICAgICBOb3RpZmljYXRpb25DYWxsYmFjayB0YWtlTm90aWZpY2F0aW9uQ2FsbGJhY2soKSB7
IHJldHVybiBXVEZNb3ZlKG1fcmVzcG9uc2VDYWxsYmFjayk7IH0KICAgICAgICAgQ29uc3VtZURh
dGFCeUNodW5rQ2FsbGJhY2sgdGFrZUNvbnN1bWVEYXRhQ2FsbGJhY2soKSB7IHJldHVybiBXVEZN
b3ZlKG1fY29uc3VtZURhdGFDYWxsYmFjayk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHQuaAppbmRleCA2MTM3YzJjZjZmZjQ3YTM2ODQwZjEx
Yjk2NmI5ZTUyNTg3MWQ4MTVmLi4xYTY2YmY4MTgzMjBlOTU2MDdkNjE1ZjFhMDgyYTgyNzZlYjJh
MzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHQuaApAQCAtMzgsNyArMzgsNyBAQCBlbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxp
Z2h0IDogYm9vbCB7IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgSGlnaGxpZ2h0UmVxdWVzdE9yaWdp
bmF0ZWRJbkFwcCA6IGJvb2wgeyBObywgWWVzIH07CiAKIHN0cnVjdCBBcHBIaWdobGlnaHQgewot
ICAgIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGhpZ2hsaWdodDsKKyAgICBSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaGlnaGxpZ2h0OwogICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiB0ZXh0OwogICAgIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGlzTmV3R3JvdXA7
CiAgICAgSGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCByZXF1ZXN0T3JpZ2luYXRlZElu
QXBwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKaW5kZXggODNiOTVkN2NmMDA3YWE1NGZiZmUyMzRiN2Q4
YjFlYjhlMTk5NjNlNC4uNWU4MGYwYzA3MmQ0OWEzZWY3OTY5NTkzMDJjNDQ1NmNkMmFiZGU4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRSYW5nZURhdGEuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY29uc3RleHByIHVpbnQ2NF90IGhpZ2hsaWdodEZpbGVTaWduYXR1cmUgPSAweDQxNDE1
MDQ4MzIzMDMyMzE7IC8vIEZpbGUgU2lnbmF0dXJlICAoQSlwcGxlKEFQKXBsaWNhdGlvbihIKWln
aGxpZ2h0cygyMDIxKQogCi1zdGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitz
dGQ6Om9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
OjpjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1
dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci5tYWtlQ29udGlndW91cygpOwogICAgIGF1dG8g
ZGVjb2RlciA9IGNvbnRpZ3VvdXNCdWZmZXItPmRlY29kZXIoKTsKQEAgLTUzLDcgKzUzLDcgQEAg
c3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0
YTo6Y3JlYXRlKGNvbnN0IFNoYXJlZEIKICAgICByZXR1cm4gZGF0YTsKIH0KIAotUmVmPFNoYXJl
ZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjp0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0CitS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjp0b1NoYXJl
ZEJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgV1RGOjpQZXJzaXN0ZW5jZTo6RW5jb2RlciBlbmNvZGVy
OwogICAgIGVuY29kZXIgPDwgKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCmluZGV4IGNmNjM4MWFjZmIw
YTUyMTFiNDM1MDhiN2I1MTdkNmRiMmY2ZmM3NDMuLmI1ZGFmNjAyNTM5OGEzZjdlNmYxZDM3YWJl
Y2U4NDRkNGYxYzY1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCkBAIC0zMywxMiArMzMsMTIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogCi1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBBcHBI
aWdobGlnaHRSYW5nZURhdGEgewogV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhPiBjcmVhdGUoY29uc3QgU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBjcmVhdGUoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogICAgIHN0cnVjdCBOb2RlUGF0aENvbXBvbmVudCB7CiAg
ICAgICAgIFN0cmluZyBpZGVudGlmaWVyOwogICAgICAgICBTdHJpbmcgbm9kZU5hbWU7CkBAIC0x
MTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IGRlY29kZShEZWNvZGVyJik7
CiAKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0b1NoYXJlZEJ1ZmZlcigpIGNvbnN0OwogCiBwcml2
YXRlOgogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCmluZGV4IGRjMzlh
MGYwZDE4ZmZmY2E3ZGZiNDY1MjE5Y2Q2MTJhOWY3MzhmOGYuLmU1ZGU4NDk0ZjM1MDQ1MzU5NGIy
ZjJlODhjM2RkYTMzZmE5YWY3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCkBAIC0yMzcsNyArMjM3LDcg
QEAgdm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpzdG9yZUFwcEhpZ2hsaWdodChSZWY8U3RhdGlj
UmFuZ2U+JiYgcmFuZ2UpCiAgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5zdG9yZUFw
cEhpZ2hsaWdodChXVEZNb3ZlKGhpZ2hsaWdodCkpOwogfQogCi12b2lkIEFwcEhpZ2hsaWdodFN0
b3JhZ2U6OnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgU2Nyb2xsVG9IaWdobGlnaHQgc2Nyb2xsKQordm9pZCBBcHBIaWdobGlnaHRTdG9y
YWdlOjpyZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBTY3JvbGxUb0hpZ2hsaWdodCBzY3JvbGwpCiB7CiAgICAgYXV0byBh
cHBIaWdobGlnaHRSYW5nZURhdGEgPSBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0ZShidWZm
ZXIpOwogICAgIGlmICghYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCmluZGV4IGIx
NTJmNzZlZDQyNDA4OTJlYTdkZTIxZTJjYjA2ZDQ3MmQ4NzMzNjAuLmUyNzY2MzNiNDg0ZjgxMDk0
YWRlY2U0NWY2NGFiYmVkMTc4MTI1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKQEAgLTM5LDcgKzM5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKIAogY2xhc3Mg
RG9jdW1lbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOwogY2xhc3MgU3RhdGljUmFuZ2U7CiBjbGFzcyBIaWdobGlnaHQ7CiAKQEAgLTU0LDcgKzU0
LDcgQEAgcHVibGljOgogICAgIH5BcHBIaWdobGlnaHRTdG9yYWdlKCk7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTdGF0aWNSYW5nZT4mJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiwgU2Nyb2xsVG9IaWdobGlnaHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBTY3JvbGxUb0hpZ2hsaWdodCk7CiAgICAgdm9pZCByZXN0b3JlVW5yZXN0b3JlZEFw
cEhpZ2hsaWdodHMoKTsKICAgICBNb25vdG9uaWNUaW1lIGxhc3RSYW5nZVNlYXJjaFRpbWUoKSBj
b25zdCB7IHJldHVybiBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaDsgfQogICAgIHZvaWQgcmVzZXRM
YXN0UmFuZ2VTZWFyY2hUaW1lKCkgeyBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaCA9IE1vbm90b25p
Y1RpbWU6Om5vdygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFsaXphdGlvbi5jcHAKaW5kZXggYTFjOTMxMmQ0NWVi
YmZjZTlmMzJlNmNjMWExYTJlODRkZGNhN2M3Mi4uMmEyYzFmYzMyOTU4MDVkNTJmZDU2YWYzMGI0
NTVhZTJjY2NjNDg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcApAQCAtMzksNyArMzksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgS2V5UGF0aFR5cGUgeyBOdWxsLCBT
dHJpbmcsIEFycmF5IH07CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxp
emVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCitS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiB7CiAgICAgYXV0byBlbmNvZGVyID0gS2V5ZWRFbmNv
ZGVyOjplbmNvZGVyKCk7CiAKQEAgLTI4MiwxMyArMjgyLDEzIEBAIHN0YXRpYyB2b2lkIGVuY29k
ZUtleShWZWN0b3I8dWludDhfdD4mIGRhdGEsIGNvbnN0IElEQktleURhdGEmIGtleSkKICAgICB9
CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRh
KGNvbnN0IElEQktleURhdGEmIGtleSkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlE
QktleURhdGEoY29uc3QgSURCS2V5RGF0YSYga2V5KQogewogICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhOwogICAgIGRhdGEuYXBwZW5kKFNJREJLZXlWZXJzaW9uKTsKIAogICAgIGVuY29kZUtleShk
YXRhLCBrZXkpOwotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShkYXRhKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0
YSkpOwogfQogCiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlS2V5KGNvbnN0
IHVpbnQ4X3QqJiBkYXRhLCBjb25zdCB1aW50OF90KiBlbmQsIElEQktleURhdGEmIHJlc3VsdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VyaWFsaXphdGlvbi5oCmluZGV4IGFhZmRiMzcwMWYwZWY0NDhkNmI4YWI1MTAxMTg1YzRi
MzRmZmFhOGEuLjY1YzRhNjNjNzg3ZjM2OTQxNDZlMjMxYzhjNTQwMTcwNjdhNGY0MjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxp
emF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcmlhbGl6YXRpb24uaApAQCAtMzIsMTAgKzMyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgSURCS2V5RGF0YTsKIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHNl
cmlhbGl6ZUlEQktleVBhdGgoY29uc3Qgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiYpOworUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBzdGQ6Om9wdGlvbmFs
PElEQktleVBhdGg+Jik7CiBib29sIGRlc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCB1aW50OF90
KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplLCBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+Jik7
CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlEYXRhKGNv
bnN0IElEQktleURhdGEmKTsKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleURh
dGEoY29uc3QgSURCS2V5RGF0YSYpOwogYm9vbCBkZXNlcmlhbGl6ZUlEQktleURhdGEoY29uc3Qg
dWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSwgSURCS2V5RGF0YSYpOwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggMGE0NjliZDBiZDFmMzhkY2I5NmIz
OWQ4YzMwMDBhZjczZDEyYWI1OS4uYzlkNmRhNmJkZDlmOTM5NTAxZjRmNDIzMmI0Yzc4MzdkODQw
ZGFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IE1lZGlhUmVjb3JkZXI6OnN0YXJ0UmVjb3JkaW5nKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHRp
bWVTbGljCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3RhdGljIGlubGluZSBSZWY8QmxvYkV2ZW50
PiBjcmVhdGVEYXRhQXZhaWxhYmxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGRvdWJsZSB0aW1lQ29kZSkKK3N0YXRpYyBpbmxpbmUgUmVmPEJsb2JFdmVudD4gY3JlYXRlRGF0
YUF2YWlsYWJsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
ZG91YmxlIHRpbWVDb2RlKQogewogICAgIGF1dG8gYmxvYiA9IGJ1ZmZlciA/IEJsb2I6OmNyZWF0
ZShjb250ZXh0LCBidWZmZXItPmV4dHJhY3REYXRhKCksIG1pbWVUeXBlKSA6IEJsb2I6OmNyZWF0
ZShjb250ZXh0KTsKICAgICByZXR1cm4gQmxvYkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRh
dGFhdmFpbGFibGVFdmVudCwgQmxvYkV2ZW50OjpJbml0IHsgeyBmYWxzZSwgZmFsc2UsIGZhbHNl
IH0sIFdURk1vdmUoYmxvYiksIHRpbWVDb2RlIH0sIEJsb2JFdmVudDo6SXNUcnVzdGVkOjpZZXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyLmgKaW5kZXggNzcxMmI0NDUyODM2N2Q4YzI3MjUwMmFkYmFhY2FhZjk3ODhjYmRiMC4u
MWU5Yjc0YWIxN2UzMTA4ZGI0MjA5YjliNGYwMjE0ZGExMWFjNmUwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCkBAIC0x
MDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoRXJyb3IoRXhjZXB0aW9u
JiYpOwogCiAgICAgZW51bSBjbGFzcyBUYWtlUHJpdmF0ZVJlY29yZGVyIHsgTm8sIFllcyB9Owot
ICAgIHVzaW5nIEZldGNoRGF0YUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBkb3VibGUpPjsKKyAgICB1c2luZyBG
ZXRjaERhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+OwogICAgIHZvaWQgZmV0
Y2hEYXRhKEZldGNoRGF0YUNhbGxiYWNrJiYsIFRha2VQcml2YXRlUmVjb3JkZXIpOwogCiAgICAg
Ly8gTWVkaWFTdHJlYW06Ok9ic2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCmluZGV4IDNmNGM5YmNkMTMzYWMyOWYz
ZjdkZGUxOTk0NzhlMzkyNTdkNWU2NmIuLjg3NGFhN2YwYjE4ZjBlZTc1ODgwYmE1ZjVlZjY3ZDQ3
YmZjMmIyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L01lZGlhTWV0YWRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhTWV0YWRhdGEuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgQXJ0d29ya0ltYWdl
TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5l
dHdvcmtMCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gU2FuaXRpemUgdGhlIGltYWdl
IGJ5IGRlY29kaW5nIGl0IGludG8gYSBCaXRtYXBJbWFnZS4KLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXJUb1Nhbml0aXplID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwor
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplID0gbV9j
YWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIGF1dG8gYml0bWFwSW1hZ2UgPSBCaXRt
YXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgYml0bWFwSW1hZ2UtPnNldERhdGEoV1RGTW92ZShidWZm
ZXJUb1Nhbml0aXplKSwgdHJ1ZSk7CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5jcHAKaW5kZXggMmIzY2RlMzYwODI0NzFjMTFjODdmY2Y2MWNjODFjYzM2MGMzOWQ5MC4uZDM3
OGFmYzZmOGExYjU3YTAzMDJlMmM4NjhiMjQwYTIwOTdmZTRjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAtNTMwLDcg
KzUzMCw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJUaW1lckZpcmVkKCkKICAg
ICAvLyBodHRwczovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvdGlwL21lZGlh
LXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCNzb3VyY2VidWZmZXItc2VnbWVudC1wYXJzZXItbG9v
cAogICAgIC8vIFdoZW4gdGhlIHNlZ21lbnQgcGFyc2VyIGxvb3AgYWxnb3JpdGhtIGlzIGludm9r
ZWQsIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YXBwZW5kRGF0YSA9IFdURk1vdmUobV9wZW5kaW5nQXBwZW5kRGF0YSk7CisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGFwcGVuZERhdGEgPSBXVEZNb3ZlKG1fcGVuZGluZ0FwcGVu
ZERhdGEpOwogICAgIC8vIDEuIExvb3AgVG9wOiBJZiB0aGUgaW5wdXQgYnVmZmVyIGlzIGVtcHR5
LCB0aGVuIGp1bXAgdG8gdGhlIG5lZWQgbW9yZSBkYXRhIHN0ZXAgYmVsb3cuCiAgICAgaWYgKCFh
cHBlbmREYXRhIHx8ICFhcHBlbmREYXRhLT5zaXplKCkpIHsKICAgICAgICAgc291cmNlQnVmZmVy
UHJpdmF0ZUFwcGVuZENvbXBsZXRlKEFwcGVuZFJlc3VsdDo6QXBwZW5kU3VjY2VlZGVkKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCmlu
ZGV4IDUyMGMwNzc1Njk2YTJmMGUyZTczMDA3MzVlOGM5Nzc0OTVmMWE2MTQuLmQ0Yzg1NzljMGJi
ZDQ0M2E1MTJmYTlmNjhjNDI3ZWMwNDg4NWQwZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAtMjIyLDcgKzIyMiw3IEBAIHBy
aXZhdGU6CiAKICAgICBXVEY6Ok9ic2VydmVyPHZvaWQqKCk+IG1fb3BhcXVlUm9vdFByb3ZpZGVy
OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9wZW5kaW5nQXBwZW5kRGF0YTsKICAgICBU
aW1lciBtX2FwcGVuZEJ1ZmZlclRpbWVyOwogCiAgICAgUmVmUHRyPFZpZGVvVHJhY2tMaXN0PiBt
X3ZpZGVvVHJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmgKaW5kZXggZjU4Mjdk
ZjkzNzk0OTNkMjgxMjcwMTc3Y2NmYmNhMDU1MTUzMjMxZi4uNzM5NDJhODM1OTMxYTlkMjg0YzZh
NDUxYmI4ZGJmYjU3NjVjYWRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5oCkBA
IC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJUQ0RhdGFDaGFubmVs
SGFuZGxlckNsaWVudDsKIGNsYXNzIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlckNvbm5lY3Rp
b247CiBjbGFzcyBSVENFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlciBmaW5h
bCA6IHB1YmxpYyBSVENEYXRhQ2hhbm5lbEhhbmRsZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxS
VENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0cnVjdCBNZXNzYWdlIHsKICAg
ICAgICAgYm9vbCBpc1JhdyB7IGZhbHNlIH07Ci0gICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB9
OwogICAgIFZlY3RvcjxNZXNzYWdlPiBtX3BlbmRpbmdNZXNzYWdlczsKICAgICBib29sIG1faXNQ
ZW5kaW5nQ2xvc2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0Rh
dGFDaGFubmVsSGFuZGxlci5jcHAKaW5kZXggZTc5ZWJkYmFjNDA4M2U5NDU0YzY5ZDE5OTZlNmZk
MmQ4YzcyOTgxOS4uM2NlZWQwYTAxMWU3YjU0NmZhZGRmNDhiYmRhMjExZGZkZDUyNGM1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwCkBA
IC05Nyw3ICs5Nyw3IEBAIHZvaWQgTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOjpzZXRDbGll
bnQoUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50JiBjbGllbnQsCiAgICAgbV9jb250ZXh0SWRl
bnRpZmllciA9IGNvbnRleHRJZGVudGlmaWVyOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDog
bV9idWZmZXJlZE1lc3NhZ2VzKSB7Ci0gICAgICAgIHN3aXRjaE9uKG1lc3NhZ2UsIFsmXShSZWY8
U2hhcmVkQnVmZmVyPiYgZGF0YSkgeworICAgICAgICBzd2l0Y2hPbihtZXNzYWdlLCBbJl0oUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CiAgICAgICAgICAgICBjbGllbnQuZGlk
UmVjZWl2ZVJhd0RhdGEoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkpOwogICAgICAgICB9LCBbJl0oU3RyaW5nJiB0ZXh0KSB7CiAgICAgICAgICAgICBjbGllbnQu
ZGlkUmVjZWl2ZVN0cmluZ0RhdGEodGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlci5oCmluZGV4IDQxZjk1MjgyMWU2MjAwOTNmOGVlZmUzMmM1ZWQ0
YWUwZjVlNTQxOTcuLjExYmQ0NWRlOTE1NTc3OWZmYzllZmIwM2U5NTUyOGYwNWU2NGQ3NDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCkBAIC04
Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIFJUQ0RhdGFDaGFubmVsU3RhdGUgc3RhdGU7
CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8d2VicnRjOjpSVENFcnJvcj4gZXJyb3I7CiAgICAgfTsK
LSAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PFN0YXRlQ2hhbmdlLCBTdHJpbmcsIFJl
ZjxTaGFyZWRCdWZmZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PFN0YXRl
Q2hhbmdlLCBTdHJpbmcsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47CiAgICAgdXNpbmcg
UGVuZGluZ01lc3NhZ2VzID0gVmVjdG9yPE1lc3NhZ2U+OwogICAgIHZvaWQgc3RvcmVNZXNzYWdl
KFBlbmRpbmdNZXNzYWdlcyYsIGNvbnN0IHdlYnJ0Yzo6RGF0YUJ1ZmZlciYpOwogICAgIHZvaWQg
cHJvY2Vzc01lc3NhZ2UoY29uc3Qgd2VicnRjOjpEYXRhQnVmZmVyJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKaW5kZXggMGI4
OThmNmFkYjU3ZWIyNWRjNDkzN2Q4MWZmNWQxNGQ1Mjk3NmM4NC4uZDUxNzNmYmY4YjQwMzQxYzVj
ZjhkOGE0ZjU1ZWVhYzhmZjgzOGEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNzIFJlYWRhYmxlU3RyZWFt
OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAog
Y2xhc3MgUmVhZGFibGVTdHJlYW1TaW5rIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJl
YW1TaW5rPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAKaW5kZXggODUxNDdjMDk2MWM5OTczMTYzMWYwZWRmYjllZmU3NGU1
YzM2Y2FjYi4uNTI1MTBjMzA4MThmMGNhOTE2YTg4NDM3N2QyMjRhMWFiYTc5NWI4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApAQCAt
NDc1LDcgKzQ3NSw3IEBAIHN0YXRpYyBKU0M6OkpTUHJvbWlzZSogaGFuZGxlUmVzcG9uc2VPblN0
cmVhbWluZ0FjdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iCiAgICAgICAgIC8vIEZJWE1F
OiBTdXBwb3J0IEZvcm1EYXRhIGxvYWRpbmcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEyNDgKICAgICAgICAgY29tcGlsZXItPmZhaWwoZ2xv
YmFsT2JqZWN0LCBjcmVhdGVET01FeGNlcHRpb24oKmdsb2JhbE9iamVjdCwgRXhjZXB0aW9uIHsg
Tm90U3VwcG9ydGVkRXJyb3IsICJOb3QgaW1wbGVtZW50ZWQiX3MgIH0pKTsKLSAgICB9LCBbJl0o
UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICB9LCBbJl0oUmVmPFNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgewogICAgICAgICBjb21waWxlci0+YWRkQnl0ZXMoYnVmZmVy
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgY29tcGlsZXItPmZpbmFsaXplKGds
b2JhbE9iamVjdCk7CiAgICAgfSwgWyZdKHN0ZDo6bnVsbHB0cl90JikgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgK
aW5kZXggYjkxOGYzMTQxYWYyZjUyMTY0MjY4OThmYWVhODRmNGIwMmIxZTI3ZS4uYjhiNzc4NWY5
MWQwNjhjMmE0NmNlYjFkNjU5NzU4ZmNmOGI2OWQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC05NCw3
ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgU2NyaXB0QnVmZmVyIG1fc2NyaXB0QnVm
ZmVyOwotICAgIG11dGFibGUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fY29udGln
dW91c0J1ZmZlcjsKKyAgICBtdXRhYmxlIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY29udGlndW91
c0J1ZmZlcjsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc2NyaXB0SGFzaCB7IDAgfTsKICAgICBt
dXRhYmxlIFN0cmluZyBtX2NhY2hlZFNjcmlwdFN0cmluZzsKICAgICBtdXRhYmxlIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gbV9jb250YWluc09ubHlBU0NJSTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggN2U0OWE5ZTczMjI2YjY1
Y2MyOGJmNTk0ODEzYjBmODNiMjY5ZDIyYi4uZWYzN2YxZDBjYTQ2MmJiOWI3YzliNmE1NWQxOGVi
YjRjMTE4MWE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgRGV0YWNoZWRPZmZzY3Jl
ZW5DYW52YXM7CiBjbGFzcyBJREJWYWx1ZTsKIGNsYXNzIE1lc3NhZ2VQb3J0OwogY2xhc3MgSW1h
Z2VCaXRtYXBCYWNraW5nOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgU2VyaWFsaXphdGlvblJldHVybkNvZGU7CiAKIGVudW0g
Y2xhc3MgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB7IE5vblRocm93aW5nLCBUaHJvd2luZyB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKaW5kZXggM2M1ZWE5Yjg5YTlj
OWU5MDM3MGI5OGRmNTI4NTYzMDY0OTkwMDdkOS4uYWViNGI2Y2M1MGExMjZjOTgzMGQ2MDZhYmIw
YzNhOGM2OWE5YzMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3Bw
CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBDU1NGb250RmFjZVNvdXJjZTo6bG9hZChEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2luRG9jdW1lbnRDdXN0b21Q
bGF0Zm9ybURhdGEpOwogICAgICAgICAgICAgICAgIFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVu
dCA9IGRvd25jYXN0PFNWR0ZvbnRFbGVtZW50PigqbV9zdmdGb250RmFjZUVsZW1lbnQtPnBhcmVu
dE5vZGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gb3RmRm9udCA9IGNvbnZlcnRTVkdU
b09URkZvbnQoZm9udEVsZW1lbnQpKQotICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9U
RkJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG90ZkZvbnQu
dmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRlZE9URkJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUob3RmRm9udC52YWx1ZSgpKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKG1fZ2VuZXJhdGVkT1RGQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgICAgIG1f
aW5Eb2N1bWVudEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoKm1fZ2VuZXJhdGVkT1RGQnVmZmVyLCBTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgICAg
IHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihtX2luRG9jdW1lbnRDdXN0b21QbGF0Zm9ybURh
dGEpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgQ1NTRm9udEZhY2VTb3VyY2U6OmxvYWQoRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgICAgICB9IGVsc2UgaWYgKG1faW1tZWRpYXRlU291cmNlKSB7
CiAgICAgICAgICAgICBBU1NFUlQoIW1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YSk7
CiAgICAgICAgICAgICBib29sIHdyYXBwaW5nOwotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG1f
aW1tZWRpYXRlU291cmNlLT5iYXNlQWRkcmVzcygpKSwgbV9pbW1lZGlhdGVTb3VyY2UtPmJ5dGVM
ZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX2ltbWVkaWF0ZVNvdXJjZS0+YmFzZUFkZHJlc3Mo
KSksIG1faW1tZWRpYXRlU291cmNlLT5ieXRlTGVuZ3RoKCkpOwogICAgICAgICAgICAgbV9pbW1l
ZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9u
dERhdGEoYnVmZmVyLmdldCgpLCBTdHJpbmcoKSwgd3JhcHBpbmcpOwogICAgICAgICAgICAgc3Vj
Y2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KG1faW1tZWRpYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0
YSk7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5o
CmluZGV4IDZhODJjZjFlM2RjOTE1OTc4NTMzNjViZDMxZTM2MjMyNzg2YTA4ODIuLjEwOGU2Yzg3
NjdkMGQyZmRhY2JlNjUwNGViYzUwNzBlODgyYmU2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNvdXJjZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ1NTRm9udEZhY2U7CiBjbGFzcyBDU1NGb250U2VsZWN0b3I7Ci1jbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnQ7CiBj
bGFzcyBGb250OwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKQEAgLTkzLDcgKzkzLDcgQEAg
cHJpdmF0ZToKICAgICBXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7IC8v
IEZvciByZW1vdGUgZm9udHMsIHRvIG9yY2hlc3RyYXRlIGxvYWRpbmcuCiAgICAgc3RkOjp1bmlx
dWVfcHRyPEZvbnRMb2FkUmVxdWVzdD4gbV9mb250UmVxdWVzdDsgLy8gQWxzbyBmb3IgcmVtb3Rl
IGZvbnRzLCBhIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHJlcXVlc3QuCiAKLSAgICBSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9nZW5lcmF0ZWRPVEZCdWZmZXI7CiAgICAgUmVmUHRyPEpTQzo6QXJy
YXlCdWZmZXJWaWV3PiBtX2ltbWVkaWF0ZVNvdXJjZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gbV9pbW1lZGlhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IGY1YmYyYjcyNmU2YWU5Njg5MzUz
YzBhN2UwOGI0NWVmZGE1ZDkwNGIuLjFkZWFjNGY0MWNmNDlmMWY4ODJkY2NlZmQ0OGNmNmE5NzMy
ZjNlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC00MDIsNyArNDAyLDcg
QEAgc3RydWN0IFBhc3RlYm9hcmRGaWxlVHlwZVJlYWRlciBmaW5hbCA6IFBhc3RlYm9hcmRGaWxl
UmVhZGVyIHsKICAgICAgICAgdHlwZXMuYWRkKEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShmaWxl
bmFtZSkpOwogICAgIH0KIAotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKQorICAgIHZvaWQg
cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYpCiAgICAgewogICAgICAgICB0eXBlcy5hZGQodHlwZSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGNmMzJhYmMxODI3ZmNlYjU0YWQ1ZWEwMWJhMDJlYjAx
ZjE3NGY3MDQuLjQwYzc4NGMzZTM4YjhkYTg5MjEyYmI4OTgwMmRjYzkyZTZiODNhMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQxNTksNyArNDE1OSw3IEBAIFByb21pc2VkQXR0
YWNobWVudEluZm8gRWRpdG9yOjpwcm9taXNlZEF0dGFjaG1lbnRJbmZvKEVsZW1lbnQmIGVsZW1l
bnQpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFs
VHlwZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gYWRkaXRp
b25hbERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBhZGRpdGlvbmFsRGF0
YTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9y
QXR0YWNobWVudChlbGVtZW50LCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhKTsKICNl
bmRpZgpAQCAtNDE2Nyw3ICs0MTY3LDcgQEAgUHJvbWlzZWRBdHRhY2htZW50SW5mbyBFZGl0b3I6
OnByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4geyBh
dHRhY2htZW50LT51bmlxdWVJZGVudGlmaWVyKCksIFdURk1vdmUoYWRkaXRpb25hbFR5cGVzKSwg
V1RGTW92ZShhZGRpdGlvbmFsRGF0YSkgfTsKIH0KIAotdm9pZCBFZGl0b3I6OnJlZ2lzdGVyQXR0
YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGRhdGEpCit2b2lkIEVkaXRvcjo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmll
cihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGRhdGEpCiB7CiAgICAgaWYgKGF1dG8qIGNsaWVudCA9IHRoaXMtPmNsaWVudCgpKQogICAg
ICAgICBjbGllbnQtPnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoaWRlbnRpZmllciwgY29u
dGVudFR5cGUsIHByZWZlcnJlZEZpbGVOYW1lLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oCmluZGV4IDhkYTlmY2M2NDE2YjY3MjE3ZDE3NDllYmI4OTc4MDdlNDc2MTExMjUu
Ljg2ZDhjOGMyNjAxODMwYmRjM2E5N2Y4NzM3OWZhMDFlM2VkYzhkNjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaApAQCAtNTgsNyArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBB
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOwogY2xhc3MgQXJjaGl2ZVJlc291cmNlOwogY2xhc3Mg
Q29tcG9zaXRlRWRpdENvbW1hbmQ7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xh
c3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3VzdG9tVW5kb1N0ZXA7CiBjbGFzcyBEYXRhVHJhbnNm
ZXI7CiBjbGFzcyBEZWxldGVCdXR0b25Db250cm9sbGVyOwpAQCAtNzUsNyArNzUsNyBAQCBjbGFz
cyBLaWxsUmluZzsKIGNsYXNzIFBhc3RlYm9hcmQ7CiBjbGFzcyBQYXN0ZWJvYXJkV3JpdGVyRGF0
YTsKIGNsYXNzIFJlbmRlckxheWVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7CiBjbGFzcyBTcGVsbENoZWNrUmVxdWVzdDsK
IGNsYXNzIFNwZWxsQ2hlY2tlcjsKQEAgLTUzOSw3ICs1MzksNyBAQCBwdWJsaWM6CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZFNlbGVjdGlvbkZyb21QYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogI2VuZGlm
CiAKICAgICBib29sIGNhbkNvcHlFeGNsdWRpbmdTdGFuZGFsb25lSW1hZ2VzKCkgY29uc3Q7CkBA
IC01NjYsNyArNTY2LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIGZpbGVTaXplLCBjb25zdCBT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKLSAgICB2b2lkIHJl
Z2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBmaWxlRGF0YSk7CisgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
cHJlZmVycmVkRmlsZU5hbWUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGZpbGVEYXRh
KTsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2ht
ZW50RGF0YT4mJik7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
KTsKQEAgLTU3Niw3ICs1NzYsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQcm9t
aXNlZEF0dGFjaG1lbnRJbmZvIHByb21pc2VkQXR0YWNobWVudEluZm8oRWxlbWVudCYpOwogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0
dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBvdXRUeXBlcywgVmVjdG9yPFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEpOworICAgIHZvaWQgZ2V0UGFzdGVi
b2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxlbWVudCYsIFZlY3RvcjxTdHJpbmc+JiBv
dXRUeXBlcywgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgb3V0RGF0YSk7CiAjZW5kaWYK
ICNlbmRpZgogCkBAIC02MjQsMTIgKzYyNCwxMiBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+IGFkanVzdGVkU2VsZWN0aW9uUmFuZ2UoKTsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBzZWxlY3Rpb25Jbldl
YkFyY2hpdmVGb3JtYXQoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZWxlY3Rpb25Jbldl
YkFyY2hpdmVGb3JtYXQoKTsKICAgICBTdHJpbmcgc2VsZWN0aW9uSW5IVE1MRm9ybWF0KCk7Ci0g
ICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0
KEVsZW1lbnQmKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUluV2ViQXJjaGl2ZUZv
cm1hdChFbGVtZW50Jik7CiAgICAgc3RhdGljIFN0cmluZyB1c2VyVmlzaWJsZVN0cmluZyhjb25z
dCBVUkwmKTsKLSAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJ
blJURkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwotICAgIHN0YXRpYyBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAq
KTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdChOU0F0
dHJpYnV0ZWRTdHJpbmcgKik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJ
blJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CiAjZW5kaWYKICAgICB2b2lkIHBsYXRm
b3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiwgY29uc3Qg
UmVuZGVyU3R5bGUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhLmgKaW5kZXggMzljM2IxZmEzZDg1NmY4ZDg0OWM2OTMzMWQ4
OWU5OThmN2U3NjIzYi4uZjMwMjgyMzU2OTAwNmY1Y2Y5ZGJiNGVmYzM3M2U2N2VmMDVmMTlhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXJpYWxpemVkQXR0YWNobWVudERh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlcmlhbGl6ZWRBdHRhY2htZW50RGF0
YS5oCkBAIC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgU2Vy
aWFsaXplZEF0dGFjaG1lbnREYXRhIHsKICAgICBTdHJpbmcgaWRlbnRpZmllcjsKICAgICBTdHJp
bmcgbWltZVR5cGU7Ci0gICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGE7CisgICAg
UmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb250ZW50UmVhZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIuaAppbmRleCAxZDk3YWNkM2NjNzkx
NjFiMGFjNTBjNGJmNzBjYjE1MmZjMGY0ODRjLi40YWY5NzBiMWY1YjQyNTBjOTUyZDQwOWE4NzE4
YTg4MDM0ZjQ4NzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRl
bnRSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvbnRlbnRSZWFkZXIu
aApAQCAtNzIsMTYgKzcyLDE2IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZWFkRmlsZVBhdGgoY29u
c3QgU3RyaW5nJiwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0g
eyB9LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0geyB9KSBvdmVycmlkZTsKICAgICBib29s
IHJlYWRGaWxlUGF0aHMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKICAgICBib29s
IHJlYWRIVE1MKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZEltYWdlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBw
cmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRJ
bWFnZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBQ
cmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRl
OwogICAgIGJvb2wgcmVhZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVy
cmlkZTsKICAgICBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgcmVhZFdlYkFyY2hpdmUoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURkQoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZFJURihDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZWFkRGF0YUJ1ZmZlcihDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUs
IFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgb3ZlcnJp
ZGU7CisgICAgYm9vbCByZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAg
ICBib29sIHJlYWRSVEZEKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJU
RihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBQcmVzZW50
YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlOwogI2Vu
ZGlmCiB9OwogCkBAIC05OSwxNiArOTksMTYgQEAgcHJpdmF0ZToKICAgICBib29sIHJlYWRGaWxl
UGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0geyB9LCBjb25zdCBTdHJpbmcm
ID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZEZpbGVQYXRo
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
Ym9vbCByZWFkSFRNTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRJbWFn
ZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXplID0g
eyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVhZEltYWdlKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXpl
ID0geyB9KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgcmVhZFVSTChjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIGJv
b2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIHJlYWRXZWJBcmNoaXZl
KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEZEKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICBib29sIHJlYWRSVEYoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIGJvb2wgcmVhZERhdGFCdWZmZXIoQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNl
bnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBy
ZWFkV2ViQXJjaGl2ZShTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEZE
KFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZFJURihTaGFyZWRCdWZmZXIm
KSBvdmVycmlkZTsKKyAgICBib29sIHJlYWREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFByZXNlbnRhdGlvblNpemUgPSB7IH0pIG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCA3NGZlODI4
N2U4YzM5M2JlMTdhNjc2NjUzOGQ5ZjM0YTA5MGIzMzRiLi41NDllYjdkMmU0YzA3NTQ4ZTRhOGM5
ZWEyNGVjMjBlNGYyMWJmYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dl
YkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHZvaWQg
V2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSkKICAgICBmaWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGZp
bGVuYW1lKSk7CiB9CiAKLXZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkQnVm
ZmVyKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVS
ZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBmaWxlcy5hcHBlbmQoRmls
ZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIEJsb2I6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBidWZm
ZXItPmV4dHJhY3REYXRhKCksIHR5cGUpLCBmaWxlbmFtZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmgKaW5kZXggZTdh
MDcxY2E0MDM5ZTAxZjQ4ZDBiNDk5NTAxZWQ2NGRlNjI2ZjBmYi4uNWM1MjlkZDdjOGVjYzAwMDQ4
ZmNiNGQxNTgxNDYzNWIyNGQ5MGJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5oCkBAIC00MSw3ICs0MSw3IEBAIHN0cnVj
dCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIgZmluYWwgOiBQYXN0ZWJvYXJkRmlsZVJlYWRl
ciB7CiAgICAgfldlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlcigpOwogCiAgICAgdm9pZCByZWFk
RmlsZW5hbWUoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwog
CiAgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IGNvbnRleHQ7CiAgICAgVmVjdG9y
PFJlZjxGaWxlPj4gZmlsZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JD
b2NvYS5tbQppbmRleCBkMGM5MzMxMDBjNjU1ZjFmYTg1MjUyNzg4MTg3MDQ5OWMyZjYxZmUzLi5h
ODViN2FhNzUyNmIyZjdjNTFhM2Y1YzQ2N2JlYjM1MGU5OTE0YWFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTcxLDEyICs3MSwxMiBAQCB2b2lk
IEVkaXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJp
YnV0ZXMmIGF0dHJpYnV0ZXMsCiAgICAgICAgIGF0dHJpYnV0ZXMuZm9udCA9IChfX2JyaWRnZSBp
ZCljdEZvbnQ7CiB9CiAKLXN0YXRpYyBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYXJj
aGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0
ZWRTdHJpbmcpCitzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0
cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCiB7CiAg
ICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtOU0tleWVkQXJj
aGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZyByZXF1aXJp
bmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKTsKKyAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDph
dHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl0p
OwogfQogCiBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQpAQCAtODcsNyAr
ODcsNyBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogCiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAotdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBl
c0FuZERhdGFGb3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHJpbmc+JiBv
dXRUeXBlcywgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIG91dERhdGEp
Cit2b2lkIEVkaXRvcjo6Z2V0UGFzdGVib2FyZFR5cGVzQW5kRGF0YUZvckF0dGFjaG1lbnQoRWxl
bWVudCYgZWxlbWVudCwgVmVjdG9yPFN0cmluZz4mIG91dFR5cGVzLCBWZWN0b3I8UmVmUHRyPFNo
YXJlZEJ1ZmZlcj4+JiBvdXREYXRhKQogewogICAgIGF1dG8gZWxlbWVudFJhbmdlID0gbWFrZVJh
bmdlU2VsZWN0aW5nTm9kZShlbGVtZW50KTsKICAgICBjbGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoZWxlbWVudFJhbmdlLCBvdXRUeXBlcywgb3V0RGF0YSk7CkBAIC05OSw3ICs5OSw3
IEBAIHZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRhRm9yQXR0YWNobWVudChF
bGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyCiAgICAgICAgIGlmIChhdXRvIGFyY2hpdmUgPSBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKmVsZW1lbnRSYW5nZSkpIHsKICAgICAgICAgICAgIGlm
IChhdXRvIGRhdGEgPSBhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKSkgewogICAgICAg
ICAgICAgICAgIG91dFR5cGVzLmFwcGVuZChXZWJBcmNoaXZlUGJvYXJkVHlwZSk7Ci0gICAgICAg
ICAgICAgICAgb3V0RGF0YS5hcHBlbmQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBvdXREYXRhLmFwcGVuZChTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBA
IC0xNTEsMTIgKzE1MSwxMiBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2Fy
ZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJEYXRhKQogICAgIHBhc3RlYm9hcmRXcml0ZXJE
YXRhLnNldFdlYkNvbnRlbnQoV1RGTW92ZSh3ZWJDb250ZW50KSk7CiB9CiAKLVJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgp
CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbkluV2ViQXJjaGl2ZUZvcm1h
dCgpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNl
bGVjdGlvbihtX2RvY3VtZW50LmZyYW1lKCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShhcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKS5nZXQoKSk7CisgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpLmdldCgp
KTsKIH0KIAogLy8gRklYTUU6IE1ha2VzIG5vIHNlbnNlIHRoYXQgc2VsZWN0ZWRUZXh0Rm9yRGF0
YVRyYW5zZmVyIGFsd2F5cyBpbmNsdWRlcyBhbHQgdGV4dCwgYnV0IHN0cmluZ1NlbGVjdGlvbkZv
clBhc3RlYm9hcmQgZG9lcyBub3QuCkBAIC0yMDEsMjcgKzIwMSwyNyBAQCBTdHJpbmcgRWRpdG9y
Ojp1c2VyVmlzaWJsZVN0cmluZyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gV1RGOjp1c2Vy
VmlzaWJsZVN0cmluZyh1cmwpOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
RWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQorUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRlZFN0
cmluZyAqc3RyaW5nKQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsK
ICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFtzdHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3Vt
ZW50QXR0cmlidXRlczpAeyB9XSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtz
dHJpbmcgUlRGREZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBsZW5ndGgpIGRvY3VtZW50QXR0cmli
dXRlczpAeyB9XSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBFZGl0b3I6OmRh
dGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKK1JlZlB0cjxTaGFyZWRC
dWZmZXI+IEVkaXRvcjo6ZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5n
KQogewogICAgIE5TVUludGVnZXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDsKICAgICBpZiAoIWxl
bmd0aCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFtzdHJp
bmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIGxlbmd0aCkgZG9jdW1lbnRBdHRyaWJ1dGVz
OkB7IH1dKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW3N0cmluZyBSVEZGcm9t
UmFuZ2U6TlNNYWtlUmFuZ2UoMCwgbGVuZ3RoKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV0pOwog
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IDNjNWU1
NDMyNWI5ZmUyMzU2N2VlNDJkZTk5ZjliNWIxNWM0MmIxMDAuLjA3ODI0ODM2MmFhMDU0ZGMzYWIw
MDAwNDUxNzE4NDE5OGE1ODBmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0KQEAgLTIzMjIsNyArMjMyMiw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8
TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3Vy
Y2UsIE5TCiBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yRWxl
bWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJbWFnZSog
Y2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCkpIHsKLSAgICAgICAgaWYgKFNoYXJl
ZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCisg
ICAgICAgIGlmIChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIgPSBjYWNoZWRJ
bWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKICAgICAgICAgICAgIHJldHVybiBhZG9wdE5TKFtbTlNG
aWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNoYXJlZEJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29j
b2EubW0KaW5kZXggNDQwNTliZTVhZTllODFkYTM5ZDYyODkyMDFkOGVkNDkxNTk3MzUzNS4uNmM4
ZDNiN2M3NDNmNTJlM2RkMWRlZDkyNmVlYmJiNDU2MTg0ZWVlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI0
NSw3ICsyNDUsNyBAQCBzdGF0aWMgYm9vbCBzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0
YShjb25zdCBGcmFtZSYgZnJhbWUpCiAKICNlbmRpZgogCi1zdGF0aWMgUmVmPERvY3VtZW50RnJh
Z21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFtZSwgRG9j
dW1lbnQmIGRvY3VtZW50LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRTaXplKQorc3RhdGljIFJl
ZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChGcmFt
ZSYgZnJhbWUsIERvY3VtZW50JiBkb2N1bWVudCwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBQcmVzZW50YXRpb25TaXplIHBy
ZWZlcnJlZFNpemUpCiB7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICBhdXRv
IGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0
dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMgdm9pZCBy
ZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZy
YWdtZW50JiBmcgogICAgIHN0cnVjdCBBdHRhY2htZW50SW5zZXJ0aW9uSW5mbyB7CiAgICAgICAg
IFN0cmluZyBmaWxlTmFtZTsKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwotICAgICAgICBS
ZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmPFNoYXJlZEJ1ZmZl
cj4gZGF0YTsKICAgICAgICAgUmVmPEVsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudDsKICAgICB9Owog
CkBAIC00MjgsNyArNDI4LDcgQEAgc3RydWN0IE1hcmt1cEFuZEFyY2hpdmUgewogICAgIFJlZjxB
cmNoaXZlPiBhcmNoaXZlOwogfTsKIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWFya3VwQW5kQXJj
aGl2ZT4gZXh0cmFjdE1hcmt1cEFuZEFyY2hpdmUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1F
VHlwZUFzSFRNTCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJh
Y3RNYXJrdXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBzdGQ6OmZ1bmN0
aW9uPGJvb2woY29uc3QgU3RyaW5nKT4mIGNhblNob3dNSU1FVHlwZUFzSFRNTCkKIHsKICAgICBh
dXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoVVJMKCksIGJ1ZmZlcik7CiAg
ICAgaWYgKCFhcmNoaXZlKQpAQCAtNDk3LDcgKzQ5Nyw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRp
emVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRv
Y3VtCiAgICAgcmV0dXJuIHNhbml0aXplZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChXVEZN
b3ZlKGZyYWdtZW50KSwgKnN0YWdpbmdEb2N1bWVudCwgbXNvTGlzdFF1aXJrcywgbWFya3VwQW5k
QXJjaGl2ZS5tYXJrdXApOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRXZWJBcmNo
aXZlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudFJlYWRl
cjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGZyYW1l
LnNldHRpbmdzKCkucHJlZmVyTUlNRVR5cGVGb3JJbWFnZXMoKSB8fCAhZnJhbWUuZG9jdW1lbnQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTMyLDcgKzUzMiw3IEBAIGJvb2wgV2ViQ29u
dGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJl
YWRXZWJBcmNoaXZlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29u
dGVudE1hcmt1cFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgaWYgKCFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02
MTIsNyArNjEyLDcgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkSFRNTChjb25z
dCBTdHJpbmcmIHN0cmluZykKICAgICByZXR1cm4gIW1hcmt1cC5pc0VtcHR5KCk7CiB9CiAKLWJv
b2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURkQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygp
IHx8ICFmcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02MjYsNyAr
NjI2LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGRChDb250aWd1b3VzU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudE1h
cmt1cFJlYWRlcjo6cmVhZFJURkQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9v
bCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGRChTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTYzOSw3ICs2MzksNyBAQCBib29sIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRSVEZEKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBXZWJDb250ZW50UmVhZGVyOjpyZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK2Jvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBpZiAoZnJhbWUuc2V0dGluZ3MoKS5wcmVmZXJNSU1FVHlwZUZvckltYWdlcygpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NTMsNyArNjUzLDcgQEAgYm9vbCBXZWJDb250ZW50
UmVhZGVyOjpyZWFkUlRGKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkUlRGKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK2Jvb2wgV2ViQ29udGVudE1hcmt1cFJlYWRlcjo6
cmVhZFJURihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY3Niw3ICs2NzYsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHBy
ZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFn
ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQogewogICAgIEFT
U0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1
bWVudCgpOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogICAgIHJldHVybiBhdHRhY2htZW50OwogfQogCi1zdGF0aWMgUmVmPEhUTUxFbGVtZW50
PiBhdHRhY2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlv
blNpemUgcHJlZmVycmVkU2l6ZSkKK3N0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRG
b3JEYXRhKEZyYW1lJiBmcmFtZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFByZXNlbnRhdGlvblNp
emUgcHJlZmVycmVkU2l6ZSkKIHsKICAgICBSZWYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQo
KTsKICAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShI
VE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KTsKQEAgLTgzMyw3ICs4MzMsNyBAQCBi
b29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViQ29udGVudFJlYWRlcjo6
cmVhZERhdGFCdWZmZXIoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQ
cmVzZW50YXRpb25TaXplKQorYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRGF0YUJ1ZmZlcihT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5h
bWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkKIHsKICAgICBp
ZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAppbmRleCA2MDQ4
NmU3MWFkNTlmZWNjNzE1ZmYwYTA5YjFjMzU1OGI3YjM0MmMyLi5kM2U5ODE5YmQ1MzFmODQ4NmEz
MTdhYjlmOWVkODNhOTg4NWJlMmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNzEsNyArNzEsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShSZWY8U2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHBy
ZWZlcnJlZFByZXNlbnRhdGlvblNpemUpCitib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFn
ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKQogewogICAgIEFT
U0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1
bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IGRmMDkx
OWY3NWFjZjc5YTgzOTI4MzIxMTkwYzVjYjJiYWY3NDdlNGMuLjMwMzZjZDMyZDZjZDgzMmMyMjAy
ODNhODQ0NWE4OTlhNWE2NmNhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JN
YWMubW0KQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIEVkaXRvcjo6cGxhdGZvcm1Db3B5Rm9udCgp
CiAgICAgUGFzdGVib2FyZEJ1ZmZlciBwYXN0ZWJvYXJkQnVmZmVyOwogICAgIHBhc3RlYm9hcmRC
dWZmZXIuY29udGVudE9yaWdpbiA9IG1fZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3Rl
Ym9hcmQoKTsKICAgICBwYXN0ZWJvYXJkQnVmZmVyLnR5cGUgPSBsZWdhY3lGb250UGFzdGVib2Fy
ZFR5cGUoKTsKLSAgICBwYXN0ZWJvYXJkQnVmZmVyLmRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoZm9udERhdGEuZ2V0KCkpOworICAgIHBhc3RlYm9hcmRCdWZmZXIuZGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZvbnREYXRhLmdldCgpKTsKICAgICBwYXN0ZWJvYXJkLndy
aXRlKHBhc3RlYm9hcmRCdWZmZXIpOwogfQogCkBAIC0yNTAsMTUgKzI1MCwxNSBAQCB2b2lkIEVk
aXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKQogICAgIGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKFN0
cmluZygpKTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEVkaXRvcjo6aW1h
Z2VJbldlYkFyY2hpdmVGb3JtYXQoRWxlbWVudCYgaW1hZ2VFbGVtZW50KQorUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gRWRpdG9yOjppbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChFbGVtZW50JiBpbWFnZUVs
ZW1lbnQpCiB7CiAgICAgYXV0byBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGlt
YWdlRWxlbWVudCk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFyY2hpdmUtPnJhd0Rh
dGFSZXByZXNlbnRhdGlvbigpLmdldCgpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCkuZ2V0KCkpOwogfQogCi1SZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRWRpdG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRWRp
dG9yOjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKQogewogICAgIC8vIEZJWE1FOiBUaGUgaW50ZXJmYWNlIHRvIHRoaXMgZnVuY3Rpb24gaXMg
YXdrd2FyZC4gV2UnZCBwcm9iYWJseSBiZSBiZXR0ZXIgb2ZmIHdpdGggdGhyZWUgc2VwYXJhdGUg
ZnVuY3Rpb25zLiBBcyBvZiB0aGlzIHdyaXRpbmcsIHRoaXMgaXMgb25seSB1c2VkIGluIFdlYktp
dDIgdG8gaW1wbGVtZW50IHRoZSBtZXRob2QgLVtXS1ZpZXcgd3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQ6dHlwZXM6XSwgd2hpY2ggaXMgb25seSB1c2VkIHRvIHN1cHBvcnQgT1MgWCBzZXJ2aWNl
cy4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCA0NWQ5MzNlMTNjYTRkMjI1MWM1ZGVkODQ4YWE5
ZTk4NzJjNzY3NDg5Li5iY2E2Njk2ZWJlNmYwZWRkZGRlZTc5YjczYzNlZTE0NDk2ZDgyZmI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2IuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBCbG9iTG9hZGVyOwog
Y2xhc3MgRGVmZXJyZWRQcm9taXNlOwogY2xhc3MgUmVhZGFibGVTdHJlYW07CiBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEV4Y2VwdGlvbk9yOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcAppbmRleCA1NTll
YmNjNDhjNWYwOTZhYzE5YmFlN2Q5ZjcxOGI3MWYyYTM1MzIyLi40MmY0MTgwZGZhODQyN2UwZTYw
ZjgxZWI3OWIxOTE4N2NhZmRiYTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L05ldHdvcmtTZW5kUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29y
a1NlbmRRdWV1ZS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpw
cm9jZXNzTWVzc2FnZXMoKQogICAgICAgICBib29sIHNob3VsZFN0b3BQcm9jZXNzaW5nID0gZmFs
c2U7CiAgICAgICAgIHN3aXRjaE9uKG1fcXVldWUuZmlyc3QoKSwgW3RoaXNdKGNvbnN0IENTdHJp
bmcmIHV0ZjgpIHsKICAgICAgICAgICAgIG1fd3JpdGVTdHJpbmcodXRmOCk7Ci0gICAgICAgIH0s
IFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgeworICAgICAgICB9LCBbdGhpc10oUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBkYXRhKSB7CiAgICAgICAgICAgICBkYXRhLT5mb3JF
YWNoU2VnbWVudChtX3dyaXRlUmF3RGF0YSk7CiAgICAgICAgIH0sIFt0aGlzLCAmc2hvdWxkU3Rv
cFByb2Nlc3NpbmddKFVuaXF1ZVJlZjxCbG9iTG9hZGVyPiYgbG9hZGVyKSB7CiAgICAgICAgICAg
ICBhdXRvIGVycm9yQ29kZSA9IGxvYWRlci0+ZXJyb3JDb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCmluZGV4IDU1MWY3MGY5MTY3YjJiZmNiMjQ0YmIyYjM3
MDBiZmJhYWY1NDc5NmMuLmQyM2NmZWJiNDUwOGJjMzAwOTE1YmI5OTZkM2YxNTA2MmNlMzUwOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5oCkBAIC00Myw3ICs0
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYjsKIGNsYXNzIEJsb2JMb2Fk
ZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBOZXR3b3JrU2VuZFF1ZXVlIDogcHVibGljIENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NNZXNzYWdlcygpOwogCi0gICAgdXNpbmcgTWVzc2Fn
ZSA9IHN0ZDo6dmFyaWFudDxDU3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPiwgVW5pcXVlUmVmPEJs
b2JMb2FkZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjp2YXJpYW50PENTdHJpbmcsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgVW5pcXVlUmVmPEJsb2JMb2FkZXI+PjsKICAgICBE
ZXF1ZTxNZXNzYWdlPiBtX3F1ZXVlOwogCiAgICAgV3JpdGVTdHJpbmcgbV93cml0ZVN0cmluZzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggMTAx
NmRjZjNjMTk5ZTU0Y2E4MTRjMjY0NWE5YTg1OThhNWMxZDM1ZS4uNzUyMzAxN2JhNzI5NDA1NjNi
NzVmNDY2YTY4ZWQxY2NiM2RlZThiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9G
VFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJl
Y3RvcnlEb2N1bWVudC5jcHAKQEAgLTI3Niw5ICsyNzYsOSBAQCB2b2lkIEZUUERpcmVjdG9yeURv
Y3VtZW50UGFyc2VyOjpwYXJzZUFuZEFwcGVuZE9uZUxpbmUoY29uc3QgU3RyaW5nJiBpbnB1dExp
bmUpCiAgICAgYXBwZW5kRW50cnkoZmlsZW5hbWUsIHByb2Nlc3NGaWxlc2l6ZVN0cmluZyhyZXN1
bHQuZmlsZVNpemUsIHJlc3VsdC50eXBlID09IEZUUERpcmVjdG9yeUVudHJ5KSwgcHJvY2Vzc0Zp
bGVEYXRlU3RyaW5nKHJlc3VsdC5tb2RpZmllZFRpbWUpLCByZXN1bHQudHlwZSA9PSBGVFBEaXJl
Y3RvcnlFbnRyeSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0IFNldHRpbmdzJiBzZXR0aW5n
cykKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlVGVtcGxhdGVEb2N1
bWVudERhdGEoY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQogewotICAgIGF1dG8gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdz
LmZ0cERpcmVjdG9yeVRlbXBsYXRlUGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHNldHRpbmdzLmZ0cERpcmVjdG9yeVRlbXBs
YXRlUGF0aCgpKTsKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBMT0coRlRQLCAiTG9hZGVkIEZU
UERpcmVjdG9yeVRlbXBsYXRlIG9mIGxlbmd0aCAlenVcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAg
ICByZXR1cm4gYnVmZmVyOwpAQCAtMjg2LDcgKzI4Niw3IEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBsYXRlRG9jdW1lbnREYXRhKGNvbnN0
IFNlCiAgICAgCiBib29sIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRU
ZW1wbGF0ZSgpCiB7Ci0gICAgc3RhdGljIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqIHRlbXBsYXRl
RG9jdW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0
dGluZ3MoKSkubGVha1JlZigpOworICAgIHN0YXRpYyBTaGFyZWRCdWZmZXIqIHRlbXBsYXRlRG9j
dW1lbnREYXRhID0gY3JlYXRlVGVtcGxhdGVEb2N1bWVudERhdGEoZG9jdW1lbnQoKS0+c2V0dGlu
Z3MoKSkubGVha1JlZigpOwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHN0b3JpbmcgdGhlIGRh
dGEsIGl0IHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50IGlmIHdlIGNvdWxkIHBhcnNlIHRoZSB0ZW1w
bGF0ZSBkYXRhIGludG8gdGhlCiAgICAgLy8gdGVtcGxhdGUgRG9jdW1lbnQgb25jZSwgc3RvcmUg
dGhhdCBkb2N1bWVudCwgdGhlbiAiY29weSIgaXQgd2hlbmV2ZXIgd2UgZ2V0IGFuIEZUUCBkaXJl
Y3RvcnkgbGlzdGluZy4KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF0dGFjaG1lbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1l
bnRFbGVtZW50LmNwcAppbmRleCA1NmEwNmZjYWYyNzNkMjVkYzRjNzVkY2U1NjlhYWM4ZjFhYTU5
NTI3Li5kMmI4NzQxYTA0NDM0MmM3ZmZkOWU4YTUzM2NjOGExMjBlMjliYWQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCkBAIC0yMjcsNyArMjI3
LDcgQEAgc3RhdGljIGJvb2wgbWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VBdHRhY2ht
ZW50KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6
OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShtaW1lVHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6
aXNQREZNSU1FVHlwZShtaW1lVHlwZSk7CiB9CiAKLXZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50
Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6
OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGF1dG8qIGhvc3RF
bGVtZW50ID0gc2hhZG93SG9zdCgpOwogICAgIGlmICghaXM8SFRNTEltYWdlRWxlbWVudD4oaG9z
dEVsZW1lbnQpIHx8ICFidWZmZXItPnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
dHRhY2htZW50RWxlbWVudC5oCmluZGV4IDU3M2VjMmVhZTFjZGMwNjA5ZjI2MWMzODQwMGJiMDJj
NDgwZjdiZGQuLjY2MWRlYzkzNzZkOGE5ZDZkNDcxN2ZkMGI0Y2U3ZjgyZmYwM2Y3NTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaApAQCAtMzYsNyArMzYs
NyBAQCBjbGFzcyBGaWxlOwogY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIFJlbmRlckF0
dGFjaG1lbnQ7CiBjbGFzcyBTaGFyZWFibGVCaXRtYXA7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1l
bnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoSFRNTEF0dGFjaG1lbnRFbGVtZW50KTsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAg
IHZvaWQgY29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50
JikgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUF0dHJpYnV0ZXMoc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4mJiBuZXdGaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBuZXdDb250
ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuZXdGaWxlbmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1
cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgdXBkYXRlVGh1bWJuYWlsKGNvbnN0IFJlZlB0cjxJbWFnZT4mIHRodW1ibmFpbCk7CiAKICAg
ICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRp
b25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAppbmRleCBlYzgzNTFjMDk3NzQ4YjE0OWE5NDQzOWJhYjY5NTc4ZWU5MDAx
YTBlLi41NjRjMzE1MjllNjljMzY1YWZkZjk3OGU5MjFkMTg1ODQ3ZDQyNWZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTI5MzksNyArMjkzOSw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6Y2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5l
Y2Vzc2FyeSgpCiAgICAgYXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpOwogfQog
Ci12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRp
b25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgaW5pdERhdGEpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudFVucmVxdWVz
dGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUs
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIG1lZGlhUGxh
eWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBpbml0RGF0YS0+
dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCmluZGV4IDZiNDA0YWE4NzM1Mjc3N2I0NzE4MzVmMTIwZmYxNTdjZWVkODRhNjkuLjkx
MjhiY2RiZWU1OWQ1ZmQxNzIyZTc0NzE5OGQ1NjI2NGM2ZWY4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC03MjEsNyArNzIxLDcgQEAgcHJpdmF0ZToKIAogICAg
IC8vIENETUNsaWVudAogICAgIHZvaWQgY2RtQ2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJ
Zk5lY2Vzc2FyeSgpIGZpbmFsOwotICAgIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFs
aXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBm
aW5hbDsKKyAgICB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVj
ZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VE
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4
IDc3Y2Q0ZjM4MGUyODMyMGU1NDQ0ZjkzOWNhYWQ2MDAzYWFmZTgxZGIuLjQzNzBkNjgxODcyZDk1
YzEwYzBmNGU5NTllMTQ3NDM5YWQ1NzQ0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW1hZ2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3Vt
ZW50LmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6dXBkYXRlRHVy
aW5nUGFyc2luZygpCiAgICAgaWYgKCFtX2ltYWdlRWxlbWVudCkKICAgICAgICAgY3JlYXRlRG9j
dW1lbnRTdHJ1Y3R1cmUoKTsKIAotICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpKQorICAgIGlmIChSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSkKICAg
ICAgICAgbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCktPnVwZGF0ZUJ1ZmZlcigqYnVmZmVy
KTsKIAogICAgIGltYWdlVXBkYXRlZCgpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgSW1hZ2VE
b2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKIHsKICAgICBpZiAoIXBhcnNlcigpLT5pc1N0b3Bw
ZWQoKSAmJiBtX2ltYWdlRWxlbWVudCkgewogICAgICAgICBDYWNoZWRJbWFnZSYgY2FjaGVkSW1h
Z2UgPSAqbV9pbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCk7Ci0gICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGEgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOworICAgICAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGxvYWRlcigpLT5tYWluUmVzb3Vy
Y2VEYXRhKCk7CiAKICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIG11bHRpcGFydCBpbWFnZSwgbWFr
ZSBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgcGFydCwgc2luY2UgdGhlIHJlc291cmNlIGRhdGEKICAg
ICAgICAgLy8gd2lsbCBiZSBvdmVyd3JpdHRlbiBieSB0aGUgbmV4dCBwYXJ0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApp
bmRleCBhN2NhNzE2MmQ3OTFlZDdmYmE4Y2M5MWMyMWEyY2YzYWY2ZTY5YTdlLi4xODc5M2ZmMDY2
MzM4ZmI2MGEzNGRlYzkwOWJjMmRkZDI4YmVhZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtODUwLDcgKzg1
MCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnRlcmNlcHRSZXF1ZXN0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+aW50
ZXJjZXB0UmVxdWVzdChsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi12b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYm
IGhhbmRsZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9u
c2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBoYW5kbGVyKQogewogICAgIGlmIChhdXRv
KiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWROZXR3b3JrQWdlbnQo
KSkKICAgICAgICAgbmV0d29ya0FnZW50LT5pbnRlcmNlcHRSZXNwb25zZShyZXNwb25zZSwgaWRl
bnRpZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggOGU2NWM0ZWIxMDIzMzUyMWY0
OGM3ZjRiMTIwYWQyYzg5MDlhMDdiYS4uZDI5NTc4MTBkODM4MmM5MzUxZDVhOTNmMTQ0YWVkMTQ5
M2JjYzY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaApAQCAtOTMsNyArOTMsNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwog
Y2xhc3MgU2hhZG93Um9vdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiBjbGFzcyBUaW1lckJhc2U7CiBjbGFzcyBXZWJLaXROYW1lZEZsb3c7CiBj
bGFzcyBXZWJTb2NrZXRDaGFubmVsOwpAQCAtMjM2LDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1ZXN0KGNvbnN0IEZyYW1lJiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVzcG9uc2Uo
Y29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQg
aW50ZXJjZXB0UmVxdWVzdChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik+JiYpOwotICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlKGNv
bnN0IEZyYW1lJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4pPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25z
ZShjb25zdCBGcmFtZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYpOwogCiAgICAgc3RhdGljIHZvaWQg
YWRkTWVzc2FnZVRvQ29uc29sZShQYWdlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29u
c29sZU1lc3NhZ2U+KTsKICAgICBzdGF0aWMgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlJiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KTsKQEAgLTQ0MSw3ICs0NDEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29s
IHNob3VsZEludGVyY2VwdFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25z
ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAg
ICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwg
UmVzb3VyY2VMb2FkZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYm
KTsKLSAgICBzdGF0aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+KT4mJik7CisgICAgc3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2VJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIAogICAgIHN0YXRp
YyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBzdGQ6
OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4pOwogCkBAIC0xMjg5LDcgKzEy
ODksNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJl
cXVlc3QoUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgRgogICAgICAgICBpbnRlcmNlcHRSZXF1ZXN0
SW1wbCgqYWdlbnRzLCBsb2FkZXIsIFdURk1vdmUoaGFuZGxlcikpOwogfQogCi1pbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1l
JiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFuZGxlcikKK2lubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJh
bWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPik+JiYgaGFuZGxl
cikKIHsKICAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzaG91bGRJbnRlcmNl
cHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UpKTsKICAgICBpZiAoYXV0byogYWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50cyhmcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCmluZGV4IDYxZTRi
YzNiYTAxOWVlMjVlNWM4YmMyMjFkZmY2MDc3ZWRkYjg2M2QuLmYwNjQwM2E2MjM0YjQyYjZhZDJh
ODBiMDE5NGE1OTZkODlmNmU2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwCkBAIC00NSw3ICs0
NSw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1
ZXN0SW50ZXJuYWwoUmVzb3VyY2VMb2FkZXImIGxvCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjppbnRlcmNlcHRSZXF1ZXN0KGxvYWRlciwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZUludGVy
bmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYgaGFu
ZGxlcikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNw
b25zZUludGVybmFsKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjppbnRlcmNlcHRSZXNwb25zZShmcmFtZSwgcmVzcG9uc2UsIGlkZW50aWZpZXIsIFdURk1vdmUo
aGFuZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5oCmluZGV4IGY3NjExNGNlOThmNDJhN2ZmOTA2
YTQ4ZDA0MjBiOTYzMDVkMzY5MTQuLjA3YjQyMWI1OWMxNTU1ZTFhMjkxZTE4ZWJiMjYyMjEyMmYx
NjU4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0LmgKQEAgLTM2LDIwICszNiwyMCBAQCBjbGFzcyBGcmFt
ZTsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbldlYktpdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW50ZXJjZXB0UmVx
dWVzdChjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBi
b29sIHNob3VsZEludGVyY2VwdFJlc3BvbnNlKGNvbnN0IEZyYW1lKiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVlc3QoUmVzb3VyY2VMb2Fk
ZXImLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmKTsKLSAgICBzdGF0
aWMgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBGcmFtZSosIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+KT4mJik7CisgICAg
c3RhdGljIHZvaWQgaW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgRnJhbWUqLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4pPiYmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXF1
ZXN0SW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBz
dGF0aWMgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZUludGVybmFsKGNvbnN0IEZyYW1lJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlcXVl
c3RJbnRlcm5hbChSZXNvdXJjZUxvYWRlciYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik+JiYpOwotICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3BvbnNlSW50ZXJuYWwo
Y29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHN0YXRpYyB2b2lkIGludGVyY2VwdFJlc3Bv
bnNlSW50ZXJuYWwoY29uc3QgRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4pPiYmKTsKIH07CiAKIGlu
bGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJjZXB0
UmVxdWVzdChjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKQEAgLTc2LDcgKzc2LDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2EKICAgICBpbnRlcmNl
cHRSZXF1ZXN0SW50ZXJuYWwobG9hZGVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKIH0KIAotaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXNwb25zZShj
b25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIp
CitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJl
c3BvbnNlKGNvbnN0IEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdDo6c2hvdWxkSW50ZXJjZXB0UmVzcG9uc2UoZnJhbWUsIHJlc3BvbnNlKSk7CiAgICAg
aW50ZXJjZXB0UmVzcG9uc2VJbnRlcm5hbCgqZnJhbWUsIHJlc3BvbnNlLCBpZGVudGlmaWVyLCBX
VEZNb3ZlKGhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IGI5OTc2YWYyZTRkZDQwOWE4OWMzYTQyNDQxMzlhM2U5
OWI0ZTdjMGIuLjM5YjAxMWNmMDZmN2YzODUzMjQzZTBhNzYzYTNiMWQ0NTQ5MDQxNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApA
QCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZENhY2hlZFJl
c291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBDYWNoZWRSZXNvCiAgICAgcmVzb3VyY2VE
YXRhLT5zZXRDYWNoZWRSZXNvdXJjZShjYWNoZWRSZXNvdXJjZSk7CiB9CiAKLXZvaWQgTmV0d29y
a1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmdOYW1lKQordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRkUmVzb3VyY2VTaGFy
ZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKQogewogICAg
IFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gcmVzb3VyY2VEYXRhRm9yUmVxdWVzdElkKHJl
cXVlc3RJZCk7CiAgICAgaWYgKCFyZXNvdXJjZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IDA0YjM1NTA3MzM3YzhiODYxYjM4
M2Q4ODEzZGMwM2YyYTM4OTE3MjAuLmRhYWU1ZmU0YTMxZTMxNTkzNjM3OTA0MjNmNWZiZDMzNzBj
NWNkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oCkBAIC00MSw3ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhY2hl
ZFJlc291cmNlOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFRleHRSZXNvdXJjZURl
Y29kZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZXNEYXRh
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTg5LDggKzg4LDggQEAgcHVibGlj
OgogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlcigpIGNvbnN0IHsg
cmV0dXJuIG1fZGVjb2Rlci5jb3B5UmVmKCk7IH0KICAgICAgICAgdm9pZCBzZXREZWNvZGVyKFJl
ZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiYmIGRlY29kZXIpIHsgbV9kZWNvZGVyID0gV1RGTW92
ZShkZWNvZGVyKTsgfQogCi0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyLmNvcHlSZWYoKTsgfQotICAgICAgICB2b2lkIHNldEJ1ZmZl
cihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2J1ZmZlciA9IFdURk1vdmUoYnVm
ZmVyKTsgfQorICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9idWZmZXIuY29weVJlZigpOyB9CisgICAgICAgIHZvaWQgc2V0QnVm
ZmVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2J1ZmZlciA9
IFdURk1vdmUoYnVmZmVyKTsgfQogCiAgICAgICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q2VydGlm
aWNhdGVJbmZvPiYgY2VydGlmaWNhdGVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0
ZUluZm87IH0KICAgICAgICAgdm9pZCBzZXRDZXJ0aWZpY2F0ZUluZm8oY29uc3Qgc3RkOjpvcHRp
b25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8pIHsgbV9jZXJ0aWZpY2F0ZUlu
Zm8gPSBjZXJ0aWZpY2F0ZUluZm87IH0KQEAgLTEyMSw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rl
cj4gbV9kZWNvZGVyOwogICAgICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fZGF0YUJ1ZmZlcjsK
LSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICAgICAgc3RkOjpvcHRpb25hbDxD
ZXJ0aWZpY2F0ZUluZm8+IG1fY2VydGlmaWNhdGVJbmZvOwogICAgICAgICBDYWNoZWRSZXNvdXJj
ZSogbV9jYWNoZWRSZXNvdXJjZSB7IG51bGxwdHIgfTsKICAgICAgICAgSW5zcGVjdG9yUGFnZUFn
ZW50OjpSZXNvdXJjZVR5cGUgbV90eXBlIHsgSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291
cmNlIH07CkBAIC0xNDUsNyArMTQ0LDcgQEAgcHVibGljOgogICAgIFJlc291cmNlRGF0YSBjb25z
dCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKTsKICAgICB2b2lkIG1heWJlRGVjb2RlRGF0
YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgdm9pZCBhZGRDYWNoZWRS
ZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzb3VyY2UqKTsKLSAgICB2
b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOworICAg
IHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGlu
Z05hbWUpOwogICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0YShjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCk7CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRhRm9yVVJMKGNvbnN0IFN0cmluZyYg
dXJsKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IGU1OGJjYzJhYTdmODE0ZDk3N2ZmN2Q4ZjI2
MjNjMzdlY2JhN2MxZmMuLjIyM2E2NzY3YmUyNzFlZTRkMjJkZWQxZDZiZTYwY2E3MDc4MTdjODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQgSW5zcGVjdG9y
TmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIEZ1
bmN0aW9uPHZvCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RJbnRlcmNlcHRlZChy
ZXF1ZXN0SWQsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci5yZXF1ZXN0KCkp
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGhhbmRsZXIpCit2b2lkIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4pPiYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1fZW5hYmxlZCk7CiAgICAgQVNTRVJU
KG1faW50ZXJjZXB0aW9uRW5hYmxlZCk7CkBAIC0xMjQzLDcgKzEyNDMsNyBAQCBQcm90b2NvbDo6
RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmludGVyY2VwdFdpdGhS
ZXNwb25zZShjb25zdAogICAgICAgICBvdmVycmlkZVJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIG92ZXJyaWRlUmVzcG9uc2UubWltZVR5cGUo
KSk7CiAgICAgfQogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVEYXRhOworICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGE7CiAgICAgaWYgKGJh
c2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVu
dCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTI3MSw3ICsxMjcxLDcgQEAgUHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1
ZXN0V2l0aFJlc3BvbnMKICAgICBpZiAobG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQog
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJsZSB0byBmdWxmaWxsIHJlcXVlc3Qs
IGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zKTsKIAotICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGRhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGE7CiAg
ICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBiYXNlNjREZWNv
ZGUoY29udGVudCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKaW5kZXggOGY2
ZmJjYzI5M2FlYmY4YjlkNWM5NDVkMjgyOWExNTI3Yjc0YmM3Zi4uNmJjZDg3ZGRjZDhiMDQ0MTMw
OGQxZDAxZWNhNmIwZTZkYTE0MTNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCkBAIC0xMjMsNyArMTIzLDcg
QEAgcHVibGljOgogICAgIGJvb2wgd2lsbEludGVyY2VwdChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KTsKICAgICBib29sIHNob3VsZEludGVyY2VwdFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik7CiAgICAgYm9vbCBzaG91bGRJbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7Ci0gICAgdm9pZCBpbnRlcmNlcHRSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPik+JiYpOworICAgIHZvaWQg
aW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJik7CiAgICAgdm9pZCBpbnRlcmNl
cHRSZXF1ZXN0KFJlc291cmNlTG9hZGVyJiwgRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKT4mJik7CiAKICAgICB2b2lkIHNlYXJjaE90aGVyUmVxdWVzdHMoY29uc3QgSlNDOjpZ
YXJyOjpSZWd1bGFyRXhwcmVzc2lvbiYsIFJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jik7CkBAIC0xODUsNyArMTg1LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGVuZGluZ0ludGVyY2VwdFJlc3BvbnNl
KTsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgotICAgICAg
ICBQZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgb3JpZ2lu
YWxSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICBQ
ZW5kaW5nSW50ZXJjZXB0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgb3JpZ2luYWxS
ZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAg
ICAgICAgICAgIDogbV9vcmlnaW5hbFJlc3BvbnNlKG9yaWdpbmFsUmVzcG9uc2UpCiAgICAgICAg
ICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAg
ICAgICAgIHsgfQpAQCAtMjAyLDcgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXNw
b25kKG1fb3JpZ2luYWxSZXNwb25zZSwgbnVsbHB0cik7CiAgICAgICAgIH0KIAotICAgICAgICB2
b2lkIHJlc3BvbmQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGEpCisgICAgICAgIHZvaWQgcmVzcG9uZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGRhdGEpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9yZXNwb25kZWQpOwogICAgICAgICAgICAgaWYg
KG1fcmVzcG9uZGVkKQpAQCAtMjE1LDcgKzIxNSw3IEBAIHByaXZhdGU6CiAKICAgICBwcml2YXRl
OgogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fb3JpZ2luYWxSZXNwb25zZTsKLSAgICAgICAg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgICAgICBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4pPiBtX2NvbXBsZXRpb25IYW5kbGVyOwogICAgICAgICBib29sIG1fcmVzcG9uZGVk
IHsgZmFsc2UgfTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggYTNjNjBjM2I2OTZhODNkODMx
ZDg5N2Y4MTY3YTMyYmUyMzczNzFiYS4uYTRmZmQxMzYxY2RkZTVhYjdkOTczY2QwMGQxOWE5MTBh
ZTllZDI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMTAwLDEzICsxMDAsMTMgQEAgc3RhdGljIGJvb2wg
ZGVjb2RlQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29uc3Qg
U3RyaW5nJiB0ZXgKIAogYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRl
bnQoRnJhbWUqIGZyYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQog
ewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5t
YWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgp
LT5lbmNvZGluZygpLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCi1ib29sIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRF
bmNvZGUsIFN0cmluZyogcmVzdWx0KQorYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNoYXJlZEJ1
ZmZlckNvbnRlbnQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5n
KiByZXN1bHQpCiB7CiAgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/IGJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkg
OiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQpAQCAt
MTU2LDcgKzE1Niw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQo
UHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgRnJhCiAgICAgaWYgKCFsb2FkZXIp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGJvb2wgc3VjY2Vz
cyA9IGZhbHNlOwogICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHVybCwg
bG9hZGVyLT51cmwoKSkpIHsKICAgICAgICAgKmJhc2U2NEVuY29kZWQgPSBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5o
CmluZGV4IGI1MWFkZGIxYmQ4ZjJjY2U2OTU2MDc5OWNkMWQ5NTJkMmRlNDI4MzguLjNkNWU1NjZk
YmUwYzVlYzExZDllOGRmNjdmY2YwYTcwOTg4YTJmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtNDksNyArNDks
NyBAQCBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JPdmVybGF5OwogY2xh
c3MgUGFnZTsKIGNsYXNzIFJlbmRlck9iamVjdDsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudCBmaW5h
bCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OlBhZ2VCYWNr
ZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3Rv
clBhZ2VBZ2VudCk7CkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICAgICAgT3RoZXJSZXNv
dXJjZSwKICAgICB9OwogCi0gICAgc3RhdGljIGJvb2wgc2hhcmVkQnVmZmVyQ29udGVudChSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wg
d2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOworICAgIHN0YXRpYyBib29sIHNoYXJl
ZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5jb2RlLCBTdHJpbmcqIHJl
c3VsdCk7CiAgICAgc3RhdGljIFZlY3RvcjxDYWNoZWRSZXNvdXJjZSo+IGNhY2hlZFJlc291cmNl
c0ZvckZyYW1lKEZyYW1lKik7CiAgICAgc3RhdGljIHZvaWQgcmVzb3VyY2VDb250ZW50KEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nJiwgRnJhbWUqLCBjb25zdCBVUkwmLCBTdHJpbmcq
IHJlc3VsdCwgYm9vbCogYmFzZTY0RW5jb2RlZCk7CiAgICAgc3RhdGljIFN0cmluZyBzb3VyY2VN
YXBVUkxGb3JSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXIuY3BwCmluZGV4IDk3NGYyMmEyZGE3YTAyYzY0ODljMWI1MGE1YTIyMGZlNDRi
MTk2MzAuLjZhZTUyNjU5N2NkMjg2MzFiZTc5NTBmYzMzNTM2ZjhmMzQ3ZDdhZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lk
IENvbnRlbnRGaWx0ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiB7CiAgICAgQVNTRVJUKHdpbGxIYW5kbGVQcm92aXNpb25hbExvYWRG
YWlsdXJlKGVycm9yKSk7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERh
dGEgeyBtX2Jsb2NraW5nQ29udGVudEZpbHRlci0+cmVwbGFjZW1lbnREYXRhKCkgfTsKKyAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhIHsgbV9ibG9ja2lu
Z0NvbnRlbnRGaWx0ZXItPnJlcGxhY2VtZW50RGF0YSgpIH07CiAgICAgUmVzb3VyY2VSZXNwb25z
ZSByZXNwb25zZSB7IFVSTCgpLCAidGV4dC9odG1sIl9zLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+
KHJlcGxhY2VtZW50RGF0YS0+c2l6ZSgpKSwgIlVURi04Il9zIH07CiAgICAgU3Vic3RpdHV0ZURh
dGEgc3Vic3RpdHV0ZURhdGEgeyBXVEZNb3ZlKHJlcGxhY2VtZW50RGF0YSksIGVycm9yLmZhaWxp
bmdVUkwoKSwgcmVzcG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxp
dHk6OkhpZGRlbiB9OwogICAgIFNldEZvclNjb3BlPGJvb2w+IGxvYWRpbmdCbG9ja2VkUGFnZSB7
IG1faXNMb2FkaW5nQmxvY2tlZFBhZ2UsIHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggZDA5NjFhZmM3
YjdlNzNlNjE3ZTc4MDZhNjdjNmZmZDA5ZjE1Y2E5My4uOTRjMzZlZjUwN2VmMDM3YjcwN2M5MGQx
OWE3YTFhNzQ0NWIxZjcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Ny
b3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIENy
b3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlcjo6ZG9QcmVmbGlnaHQoRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyJiBsb2FkZXIsCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHByZWZsaWdodFJlcXVlc3QgPSBj
cmVhdGVBY2Nlc3NDb250cm9sUHJlZmxpZ2h0UmVxdWVzdChyZXF1ZXN0LCBsb2FkZXIuc2VjdXJp
dHlPcmlnaW4oKSwgbG9hZGVyLnJlZmVycmVyKCkpOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7
CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAg
YXV0byBpZGVudGlmaWVyID0gbG9hZGVyLmRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkubG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShwcmVmbGlnaHRSZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFs
UG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zIHsgfSwg
eyB9LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAppbmRleCBmZGZkMGVhYWYzYTUwMThkOTAwYmExYTZkN2E0OGFlNTczMmYz
NGM4Li4wYWI0ZTE0ZjljZTM1YTFjY2Y2ZGQ2YmNlODMwMjQxNmMxZWNkZWNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCBEb2N1
bWVudExvYWRlcjo6fkRvY3VtZW50TG9hZGVyKCkKICNlbmRpZgogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEo
KSBjb25zdAogewogICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuIG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5jb3B5KCk7CkBAIC0xNjQ5LDcgKzE2
NDksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhckFyY2hpdmVSZXNvdXJjZXMoKQogICAg
IG1fc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lci5zdG9wKCk7CiB9CiAKLUNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0
CitTaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fcGFyc2VkQXJjaGl2ZURhdGEuZ2V0KCk7CiB9CkBAIC0xNjY4LDcg
KzE2NjgsNyBAQCBBcmNoaXZlUmVzb3VyY2UqIERvY3VtZW50TG9hZGVyOjphcmNoaXZlUmVzb3Vy
Y2VGb3JVUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAKIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2UoKSBjb25zdAogewotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGRhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFkYXRh
KQogICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvJiByZXNw
b25zZSA9IHRoaXMtPnJlc3BvbnNlKCk7CkBAIC0yMjUyLDcgKzIyNTIsNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKIAogICAgIGZy
YW1lTG9hZGVyKCktPnNldHVwRm9yUmVwbGFjZSgpOwogICAgIG1fY29tbWl0dGVkID0gZmFsc2U7
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0
YSgpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEgPSBt
YWluUmVzb3VyY2VEYXRhKCk7CiAgICAgY29tbWl0TG9hZChyZXNvdXJjZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSwgcmVzb3VyY2VEYXRhLT5zaXplKCkpOwogfQogCkBAIC0yMjg5LDcg
KzIyODksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKICAgICBt
X2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5nZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhpY29uRGVj
aXNpb25zKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9y
SWNvbihib29sIGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRG9j
dW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWlu
dDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gaWNvbiA9IG1f
aWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uLnRha2UobG9hZElkZW50aWZpZXIpOwogCkBAIC0yMzEw
LDcgKzIzMTAsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudAogICAgIHJhd0ljb25Mb2FkZXIt
PnN0YXJ0TG9hZGluZygpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRp
bmdJY29uKEljb25Mb2FkZXImIGxvYWRlciwgU2hhcmVkQnVmZmVyKiBidWZmZXIpCit2b2lkIERv
Y3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImIGxvYWRlciwgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyKQogewogICAgIC8vIElmIHRoZSBEb2N1bWVudExv
YWRlciBoYXMgZGV0YWNoZWQgZnJvbSBpdHMgZnJhbWUsIGFsbCBpY29uIGxvYWRzIHNob3VsZCBo
YXZlIGFscmVhZHkgYmVlbiBjYW5jZWxsZWQuCiAgICAgQVNTRVJUKG1fZnJhbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCA2YmQzMmZjMmVjZjQ2YWY3Y2Q5Mzc5
YTlkMDBjOTkxMTZlYjdhNmI1Li40YmY5NmY3ZGJkZDQ3MzczODZjYzU0OWU4YzkyMWU3ZGM1MmI0
OTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtNzUsNyArNzUs
NyBAQCBjbGFzcyBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwogY2xhc3MgQ2FjaGVkUmF3UmVz
b3VyY2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIENvbnRlbnRGaWx0ZXI7
Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogc3Ry
dWN0IEN1c3RvbUhlYWRlckZpZWxkczsKIGNsYXNzIEZvcm1TdGF0ZTsKIGNsYXNzIEZyYW1lOwpA
QCAtODQsNyArODQsNyBAQCBjbGFzcyBJY29uTG9hZGVyOwogY2xhc3MgUGFnZTsKIGNsYXNzIFBy
ZXZpZXdDb252ZXJ0ZXI7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTV0NsaWVudENvbm5lY3Rp
b247CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFN1YnN0aXR1dGVSZXNvdXJjZTsK
QEAgLTE3OSw3ICsxNzksNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBGcmFtZUxv
YWRlciogZnJhbWVMb2FkZXIoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdWJyZXNvdXJj
ZUxvYWRlciogbWFpblJlc291cmNlTG9hZGVyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRh
KCkgY29uc3Q7CiAgICAgCiAgICAgRG9jdW1lbnRXcml0ZXImIHdyaXRlcigpIGNvbnN0IHsgcmV0
dXJuIG1fd3JpdGVyOyB9CiAKQEAgLTIzNiw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBhZGRBbGxBcmNoaXZlUmVzb3VyY2VzKEFyY2hpdmUmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGFkZEFyY2hpdmVSZXNvdXJjZShSZWY8QXJjaGl2ZVJlc291cmNlPiYm
KTsKICAgICBSZWZQdHI8QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmlu
ZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIFNoYXJlZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEoKSBjb25zdDsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlmCkBAIC00MDMsOCArNDAzLDggQEAgcHVibGljOgog
I2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0SWNvbkxvYWRpbmcoKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3Qg
bG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVyKik+JiYp
OwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiwgU2hhcmVkQnVmZmVy
Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJv
b2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4mJik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRp
bmdJY29uKEljb25Mb2FkZXImLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICAgICBjb25z
dCBWZWN0b3I8TGlua0ljb24+JiBsaW5rSWNvbnMoKSBjb25zdCB7IHJldHVybiBtX2xpbmtJY29u
czsgfQogCkBAIC02MTMsNyArNjEzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbj4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOwog
I2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFJlZlB0cjxBcmNo
aXZlPiBtX2FyY2hpdmU7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IG1fcGFy
c2VkQXJjaGl2ZURhdGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9wYXJzZWRBcmNoaXZl
RGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcmVzb3VyY2VzQ2xpZW50S25v
d3NBYm91dDsKQEAgLTYzMiw3ICs2MzIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV93YWl0aW5n
Rm9yTmF2aWdhdGlvblBvbGljeSB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBM
aW5rSWNvbj4gbV9pY29uc1BlbmRpbmdMb2FkRGVjaXNpb247Ci0gICAgSGFzaE1hcDxzdGQ6OnVu
aXF1ZV9wdHI8SWNvbkxvYWRlcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVkQnVmZmVy
Kik+PiBtX2ljb25Mb2FkZXJzOworICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPEljb25Mb2Fk
ZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4+IG1f
aWNvbkxvYWRlcnM7CiAgICAgVmVjdG9yPExpbmtJY29uPiBtX2xpbmtJY29uczsKIAogI2lmIEVO
QUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggMjNlNjBhY2Y1MTIzMTg3NTI2MTUw
MDRiOWVkMDJlMGU3YTIxNTBiOC4uYjljNDEzNTI1Njc2MjY3MjE5MDdhZjM2NmRmYjFkZWM3OTRj
MjQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKQEAgLTYwNSw3ICs2MDUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAog
ICAgIGxvYWRUaW1pbmcubWFya1N0YXJ0VGltZSgpOwogCiAgICAgLy8gRklYTUU6IFRocmVhZGFi
bGVMb2FkZXJPcHRpb25zLnNuaWZmQ29udGVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciBzeW5jaHJv
bm91cyByZXF1ZXN0cy4KLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3I7
CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICBhdXRvIGlkZW50aWZpZXIgPSBt
YWtlT2JqZWN0SWRlbnRpZmllcjxSZXNvdXJjZUxvYWRlcj4oc3RkOjpudW1lcmljX2xpbWl0czx1
aW50NjRfdD46Om1heCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5k
ZXggMGRhZjRjN2FiNjA1OWJkNDdhN2NiYmQ4YzgzMTczNGM0YmIxMDM0Ny4uZmUzMmQ5NGU0Mjg2
NTlkNWQ2MWRhYmE3MjE5OGViMTk1OWJhMjVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAKQEAgLTI3OCw3ICsyNzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRW5k
VXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2b2lkIHdpbGxX
cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYpIGZpbmFsIHsgfQogICAgIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBm
aW5hbCB7IH0KLSAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQorICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVi
b2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mKSBmaW5hbCB7IH0KICAgICB2b2lkIHJl
cXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSBmaW5h
bCB7IH0KICAgICB2b2lkIGhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMoVGV4
dENoZWNraW5nUmVzdWx0KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKaW5kZXggZTkxYzhmNjBkM2E5OGE5ZWI4ZGEzY2U2YjQ0ZmFkMmJjM2ViNTU0Ny4uNmM1
ZWUzYTliMzFhZThiODRkYjkyMGI2NmViZjIxNGYyNmVjOWFkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0zMTA2LDcgKzMxMDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVy
Ojpsb2FkUG9zdFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmlu
ZyYgcmVmZQogICAgIH0pOwogfQogCi1SZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0
IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhlYWRlck1hcCYgb3JpZ2luYWxSZXF1
ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCitSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENy
ZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRUUEhl
YWRlck1hcCYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsK
ICAgICBBU1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICBTdHJpbmcgcmVmZXJyZXIgPSBT
ZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCkt
PnJlZmVycmVyUG9saWN5KCksIHJlcXVlc3QudXJsKCksIG91dGdvaW5nUmVmZXJyZXIoKSk7CkBA
IC0zMTU0LDcgKzMxNTQsNyBAQCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgRnJhbWVMb2FkZXI6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBpZiAo
IWRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkU3luY2hy
b25vdXNseShuZXdSZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpKSB7CiAgICAgICAgICAg
ICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwogICAgICAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmxvYWRlclN0cmF0ZWd5KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKnRoaXMsIGlk
ZW50aWZpZXIsIG5ld1JlcXVlc3QsIGNsaWVudENyZWRlbnRpYWxQb2xpY3ksIG9wdGlvbnMsIG9y
aWdpbmFsUmVxdWVzdEhlYWRlcnMsIGVycm9yLCByZXNwb25zZSwgYnVmZmVyKTsKLSAgICAgICAg
ICAgIGRhdGEgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShidWZmZXIp
KTsKKyAgICAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZl
cikpOwogICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3Qo
KS5tYXliZUxvYWRGYWxsYmFja1N5bmNocm9ub3VzbHkobmV3UmVxdWVzdCwgZXJyb3IsIHJlc3Bv
bnNlLCBkYXRhKTsKICAgICAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5s
b2dTdWJyZXNvdXJjZUxvYWRpbmcoJm1fZnJhbWUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlLAogICAg
ICAgICAgICAgICAgIChpc1NjcmlwdExpa2VEZXN0aW5hdGlvbihvcHRpb25zLmRlc3RpbmF0aW9u
KSA/IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERlc3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpZ
ZXMgOiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6
Tm8pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggOWMzZjc0YzQyZGI4ZTdi
YWU5NTQwNWY1NDBmM2UyODcxOTgyZTkxNC4uNzVhZTI4NGMyYzM0ZmRkODllODU2NGRhNDM5ZGE3
NzI1YWZiYzhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTU5LDcgKzU5
LDcgQEAgY2xhc3MgQ2FjaGVkRnJhbWVCYXNlOwogY2xhc3MgQ2FjaGVkUGFnZTsKIGNsYXNzIENh
Y2hlZFJlc291cmNlOwogY2xhc3MgQ2hyb21lOwotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNsYXNzIERv
Y3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGlj
OgogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgbG9hZEFyY2hpdmUoUmVmPEFyY2hpdmU+JiYpOwogI2VuZGlmCi0gICAgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25z
JiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKTsKKyAgICBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25z
dCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYgZGF0YSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNoYW5n
ZUxvY2F0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBFdmVudCosIGNvbnN0
IFJlZmVycmVyUG9saWN5JiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgc3RkOjpvcHRp
b25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQsIGNvbnN0IEF0b21TdHJp
bmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29uc3QgU3lzdGVtUHJldmlld0lu
Zm8mID0geyB9LCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3Rk
OjpudWxsb3B0KTsKICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1lTG9hZFJlcXVlc3QmJiwg
RXZlbnQqID0gbnVsbHB0ciwgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4m
JiA9IHN0ZDo6bnVsbG9wdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oCmluZGV4IDRmZDYzN2E5MDE0YTVkNDFhMjI2ZWU0NTkxN2I2YjNlOWE3OTBlYmIuLmVlOWYz
ZDBjOTg0ZDQ1NWNiYjkxYjQ2MGMxYmMxMjg5OGQxMjM2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC05OCw3ICs5OCw3IEBAIGNsYXNzIFJlc291cmNl
SGFuZGxlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgV2lkZ2V0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmluZGV4IGFlZjY2OGJkNjNlZDVm
Y2Q0NWU2MWU5ZDFmMTA3Y2ZiNmFlZjI2NGIuLjI5ZDJlM2Y0NjE0MGFhYTUxMTYwZTZhMjg1NjJm
MzcwZTM3MWViMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJh
dGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCkBAIC01
MSw3ICs1MSw3IEBAIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3Mg
U2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJl
c291cmNlTG9hZGVyOwogCiBzdHJ1Y3QgRmV0Y2hPcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKaW5kZXggNjMzNzU1
OTYzMjAwMTQ2MzgyODllMjgyNjA0YzU1YjBhZjQ0NTMxMy4uNjA0M2FjOWJlMjY3ZWE0ZmJjNzFl
MTExOGI5MDc5MTU1ZTM5MTUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lk
IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZQogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVu
Z3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAot
dm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUo
YnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQg
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKK3ZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAgUmVmPE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAppbmRleCA0OGJiMjE1M2M5M2Yy
ZGM3NTRlMjA3MzIyNTJjMDUwOWNmNzA0YTQxLi5iNTE3NGVkYzk0Yjk5MjM5MDIwNWYwZmFkNDUy
ZWE1YWMzODc4OTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVz
dCYmKT4mJiBjYWxsYmFjaykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xp
Y3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5
cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5
cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJv
ciYpIG92ZXJyaWRlOwogCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxs
Q2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNl
bChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwg
bG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlEb25lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKaW5kZXggNDg0
MGYxNGNmMjVkZGYxZjYwMGFlOTZkYWM2M2Q5NzExYzhjOTQwNy4uNTJlMWUyM2EyYzU0NTRiM2Iy
ZmEwYWU3ZTJkMTVlYTNjYzNjYWI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBS
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvckJ5dGVzKFJl
c291cmNlQ3J5cHRvZ3JhcGhpY0RpZwogICAgIHJldHVybiB7IGFsZ29yaXRobSwgY3J5cHRvRGln
ZXN0LT5jb21wdXRlSGFzaCgpIH07CiB9CiAKLVJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBj
cnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCitS
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1
ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0sIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICBhdXRvIGNyeXB0b0Rp
Z2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUodG9DcnlwdG9EaWdlc3RBbGdvcml0aG0o
YWxnb3JpdGhtKSk7CiAgICAgaWYgKGJ1ZmZlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCmluZGV4IGFlYTNkYzU3Yzg3ODMx
MzAxM2E1YjE2YzkzOWI3NzRlZDQ4NDMyNGMuLjgzYjg2MTNjZmRhMjMyOWFlMzBiYmY2YWJjMTRi
OTlkNDQyMzdiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0LmgKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0IHsKICAgICBlbnVtIGNsYXNzIEFsZ29yaXRobSB7CkBAIC03NSw3ICs3NSw3IEBAIHN0ZDo6
b3B0aW9uYWw8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VFbmNvZGVk
Q3J5cHRvZ3JhcGhpY0RpZ2VzCiAKIHN0ZDo6b3B0aW9uYWw8UmVzb3VyY2VDcnlwdG9ncmFwaGlj
RGlnZXN0PiBkZWNvZGVFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0KGNvbnN0IEVu
Y29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QmKTsKIAotUmVzb3VyY2VDcnlwdG9ncmFw
aGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZmZXIoUmVzb3VyY2VDcnlw
dG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0sIGNvbnN0IFNoYXJlZEJ1ZmZlciopOworUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZmZXIo
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0sIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqKTsKIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGlj
RGlnZXN0Rm9yQnl0ZXMoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0sIGNv
bnN0IHZvaWQqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYjg0OTFhYjMwZTQ4YzczMTZiODg4MWJiZDM5Y2Yw
NGExYzRmNmIwOS4uNmRlYmIyNTg4YTNlODJiMjFjNjFkN2U4ZjM2ZTRmNGJiYmEyNWU2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xODgsNyArMTg4LDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6aW5pdChSZXNvdXJjZVJlcXVlc3QmJiBjbGllbnRSZXF1
ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2kKICAgICB9KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFJlc291cmNlTG9hZGVy
OjpkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgZGlkUmVj
ZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJl
YWNoZWRUZXJtaW5hbFN0YXRlKCkpCkBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRlcjo6d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKICAgICAgICAgbV9oYW5kbGUt
PmNhbmNlbCgpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBTaGFyZWRCdWZmZXIqIGJ1ZmZlciwg
RGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmFk
ZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlw
ZSkKIHsKICAgICBpZiAobV9vcHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZl
cmluZ1BvbGljeTo6RG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CkBAIC0zNDIsNyAr
MzQyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgU2hhcmUKICAgICAgICAgbV9yZXNvdXJjZURhdGEu
YXBwZW5kKGRhdGEsIGxlbmd0aCk7CiB9CiAKLWNvbnN0IFNoYXJlZEJ1ZmZlciogUmVzb3VyY2VM
b2FkZXI6OnJlc291cmNlRGF0YSgpIGNvbnN0Citjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBSZXNvdXJjZUxvYWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9y
ZXNvdXJjZURhdGEuZ2V0KCkuZ2V0KCk7CiB9CkBAIC01NTAsMTQgKzU1MCwxNCBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgsIGxvbmcgbAogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3Ro
LCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBh
eWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgs
IGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewotICAgIC8vIFRo
aXMgbWV0aG9kIHNob3VsZCBvbmx5IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEgU2hhcmVkQnVmZmVy
LgorICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGdldCBkYXRhK2xlbmd0aCAqT1IqIGEg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KICAgICBBU1NFUlQoIWJ1ZmZlciB8fCAoIWRhdGEgJiYg
IWxlbmd0aCkpOwogCiAgICAgLy8gUHJvdGVjdCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9k
IHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvCkBAIC03MzQsNyArNzM0LDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ24KICAgICBkaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5n
dGgsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KIAotdm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgZGlkUmVj
ZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZEJ5dGVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgKaW5kZXggMzdk
NjY3ZDgzNzZkMDBkYTc4OTQ2MmRjY2UxYWRiMzM2ODg5ZmQwZC4uNzBlYTIyMGRjMTdjNzM3NmVk
NjYwZmE3YTYxYTg0ZTMxYzMzNGNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluaXQo
UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCi0g
ICAgdm9pZCBkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRlbGl2ZXJSZXNwb25zZUFuZERhdGEo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0TG9h
ZGluZygpCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFz
ZVJlc291cmNlcygpOwogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogCi0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiByZXNv
dXJjZURhdGEoKSBjb25zdDsKKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiByZXNv
dXJjZURhdGEoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VEYXRhKCk7CiAgICAgCiAg
ICAgdmlydHVhbCBib29sIGlzU3VicmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKQEAgLTEwOCw3ICsx
MDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxl
cik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNp
Z25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYsIGxvbmcg
bG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIApAQCAtMTY3LDcgKzE2Nyw3
IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgd2FzQ2FuY2VsbGVkKCkgY29uc3QgeyByZXR1cm4g
bV9jYW5jZWxsYXRpb25TdGF0dXMgPj0gQ2FuY2VsbGVkOyB9CiAKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKICAgICAKICAgICB2b2lkIHNldFJlZmVycmVyUG9saWN5
KFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KSB7IG1fb3B0aW9ucy5yZWZlcnJlclBvbGlj
eSA9IHJlZmVycmVyUG9saWN5OyB9CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3ko
KSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3k7IH0KQEAgLTE5Miw3ICsx
OTIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291
cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJj
ZUVycm9yJikgPSAwOwogCi0gICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCos
IHVuc2lnbmVkLCBTaGFyZWRCdWZmZXIqLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgYWRk
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciosIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdm9pZCBsb2FkRGF0YVVSTCgpOwogICAgIHZv
aWQgZmluaXNoTmV0d29ya0xvYWQoKTsKIApAQCAtMjAzLDcgKzIwMyw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNl
UmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2
b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0
JiYsIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxl
Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cAppbmRleCA3MTk2ODJjNjQ2NDgyMDM0MDE3ZjY4ZTVmYTY5Mzg4YmVkYjJlZWFhLi4zN2QwYmI4
MjFhYmQ4NmE5YjU2MDZlMTI3ZWZjOTQxMmE1MWJiMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIFN1YnJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgsIGxvbgogICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBu
dWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBT
dWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBh
eWxvYWRUeXBlKQordm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICNpZiBVU0UoUVVJQ0tf
TE9PSykKICAgICBpZiAoYXV0byBwcmV2aWV3TG9hZGVyID0gbV9wcmV2aWV3TG9hZGVyLmdldCgp
KSB7CkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGUKICAgICBkaWRS
ZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERh
dGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiB9CiAKLXZvaWQgU3VicmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAgICAg
QVNTRVJUKG1fcmVzb3VyY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5oCmluZGV4IDM3MjNiNmI5YWI5ZmRkYWFhNTU3NGJmYjBlNmYzOGNlZDdhZWZiNzUuLjgz
MmM5ZjBlNzNkMzg0NjRhNzk1ZjQwMzg2MGY3OWMzNGU3M2JjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25l
ZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25z
dCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBvdmVycmlkZTsKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBF
eHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNoZWNrUmVzcG9uc2VDcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2woY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4g
Y2hlY2tSZWRpcmVjdGlvbkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHByZXZpb3VzUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNl
UmVxdWVzdCYgbmV3UmVxdWVzdCk7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIo
Y29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVu
Y29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwog
CiAgICAgdm9pZCBub3RpZnlEb25lKExvYWRDb21wbGV0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKaW5kZXggZjY2MjkyZTMxY2JlYjQyNjQzMGE4MzJhZGVm
NDI5OTFjYjU3NDM2ZS4uYThhNDliNDdmOTI3MzQyNzRiYTRjZWFiYzE3MDdmZWZhN2I2NjQwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKQEAgLTQzLDcgKzQzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBTdWJz
dGl0dXRlRGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGNvbnRlbnQsIGNvbnN0IFVSTCYgZmFp
bGluZ1VSTCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFNlc3Npb25IaXN0b3J5
VmlzaWJpbGl0eSBzaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KQorICAgICAgICBTdWJzdGl0
dXRlRGF0YShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjb250ZW50LCBjb25zdCBV
UkwmIGZhaWxpbmdVUkwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTZXNzaW9u
SGlzdG9yeVZpc2liaWxpdHkgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSkKICAgICAgICAg
ICAgIDogbV9jb250ZW50KFdURk1vdmUoY29udGVudCkpCiAgICAgICAgICAgICAsIG1fZmFpbGlu
Z1VSTChmYWlsaW5nVVJMKQogICAgICAgICAgICAgLCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQpAQCAt
NTQsMTQgKzU0LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc1ZhbGlk
KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50ICE9IG51bGxwdHI7IH0KICAgICAgICAgYm9vbCBz
aG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRSZXZl
YWxUb1Nlc3Npb25IaXN0b3J5ID09IFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6VmlzaWJsZTsg
fQogCi0gICAgICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciogY29udGVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGVudC5nZXQoKTsgfQorICAgICAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBjb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50LmdldCgpOyB9CiAgICAgICAgIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlLm1pbWVUeXBl
KCk7IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcoKSBjb25zdCB7IHJldHVy
biBtX3Jlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKTsgfQogICAgICAgICBjb25zdCBVUkwmIGZh
aWxpbmdVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZhaWxpbmdVUkw7IH0KICAgICAgICAgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9
CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
Y29udGVudDsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fY29udGVu
dDsKICAgICAgICAgVVJMIG1fZmFpbGluZ1VSTDsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBt
X3Jlc3BvbnNlOwogICAgICAgICBTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgbV9zaG91bGRSZXZl
YWxUb1Nlc3Npb25IaXN0b3J5IHsgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4gfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCAzNDRjYTk4
Mjg1NzUyZThmMTAxNzBmMjMyMDQ5ZTBjYTJhZDRmYzg2Li5jZjJkZTBjNjJkOTVmMzMyNWI0MmI0
NmUyNDAzNzc0NDEwNzQyYTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
c3RpdHV0ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVS
ZXNvdXJjZS5oCkBAIC0zNywxNCArMzcsMTQgQEAgcHVibGljOgogCiAgICAgY29uc3QgVVJMJiB1
cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQotICAgIFNoYXJlZEJ1ZmZl
ciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTaGFyZWRCdWZm
ZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0KKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0KICAgICB2b2lkIGFwcGVuZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSB7IG1fZGF0YS5hcHBlbmQoZGF0YSwgbGVu
Z3RoKTsgfQogICAgIHZvaWQgY2xlYXIoKSB7IG1fZGF0YS5lbXB0eSgpOyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVy
UmVzcG9uc2VBbmREYXRhKG1fcmVzcG9uc2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHByb3RlY3Rl
ZDoKLSAgICBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKKyAgICBTdWJzdGl0dXRlUmVzb3Vy
Y2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiAgICAgICAgIDogbV91cmwoV1RGTW92ZSh1cmwpKQogICAg
ICAgICAsIG1fcmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpCiAgICAgICAgICwgbV9kYXRhKFdU
Rk1vdmUoZGF0YSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA3MjBhOTI3MWNkMzI2NWVmNGNlMjMyNjFh
MjZkYjBkODI4YzYzMzQ2Li41MTk3OGY0MTIzODc0ZGM1NjYwZWZmNDcwNjU5NzA3ZDRlNWQ4NWE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAKQEAgLTI1MywxNCArMjUzLDE0IEBAIFVSTCBBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6Y3JlYXRlRmlsZVVSTChjb25zdCBTdHJpbmcmIHBhdGgpCiAjZW5kaWYKIH0KIAot
c3RhdGljIGlubGluZSBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRnJvbVJl
c291cmNlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSYgcmVzb3VyY2UpCitzdGF0aWMgaW5saW5l
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZyb21SZXNvdXJjZShBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2UmIHJlc291cmNlKQogewogICAgIGlmIChyZXNvdXJjZS5wYXRoKCkuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGF0YSgpLm1ha2VDb250aWd1b3VzKCk7Ci0gICAg
cmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShy
ZXNvdXJjZS5wYXRoKCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250
ZW50c09mRmlsZShyZXNvdXJjZS5wYXRoKCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjptYXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVz
b3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mIGRhdGEpCitib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpt
YXliZUxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VF
cnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYgZGF0YSkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlOwog
ICAgIGlmICghc2hvdWxkTG9hZFJlc291cmNlRnJvbUFwcGxpY2F0aW9uQ2FjaGUocmVxdWVzdCwg
cmVzb3VyY2UpKQpAQCAtMjc3LDcgKzI3Nyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6
Om1heWJlTG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZEZhbGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJl
c291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBkYXRhKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
bWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSkKIHsKICAgICAvLyBJZiBub3JtYWwgbG9hZGluZyBy
ZXN1bHRzIGluIGEgcmVkaXJlY3QgdG8gYSByZXNvdXJjZSB3aXRoIGFub3RoZXIgb3JpZ2luIChp
bmRpY2F0aXZlIG9mIGEgY2FwdGl2ZSBwb3J0YWwpLCBvciBhIDR4eCBvciA1eHggc3RhdHVzIGNv
ZGUgb3IgZXF1aXZhbGVudCwKICAgICAvLyBvciBpZiB0aGVyZSB3ZXJlIG5ldHdvcmsgZXJyb3Jz
IChidXQgbm90IGlmIHRoZSB1c2VyIGNhbmNlbGVkIHRoZSBkb3dubG9hZCksIHRoZW4gaW5zdGVh
ZCBnZXQsIGZyb20gdGhlIGNhY2hlLCB0aGUgcmVzb3VyY2Ugb2YgdGhlIGZhbGxiYWNrIGVudHJ5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5oCmluZGV4IGRjODU4ZmRkNmQ1NDUzZWI0MzU5MjhkM2VkNzU3NTcwODM1OTQ1ZTAu
LmI5NjM1NmU3ODU2MTM4OTU2YWU0YzA1OTgzMTcwY2RmNzIzNjcyYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBA
IC00Miw3ICs0Miw3IEBAIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFzcyBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgRG9jdW1l
bnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTEwNCw4ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKFJlc291cmNl
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKIAotICAgIGJvb2wgbWF5YmVMb2FkU3luY2hyb25vdXNseShSZXNvdXJjZVJl
cXVlc3QmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYpOwotICAgIHZvaWQgbWF5YmVMb2FkRmFsbGJhY2tTeW5jaHJvbm91
c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3Bv
bnNlJiwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Jik7CisgICAgYm9vbCBtYXliZUxv
YWRTeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICB2b2lkIG1heWJlTG9hZEZh
bGxiYWNrU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUVycm9y
JiwgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxTaGFyZWRCdWZmZXI+Jik7CiAKICAgICBib29s
IGNhbkNhY2hlSW5CYWNrRm9yd2FyZENhY2hlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5k
ZXggNjcxMDk1N2MzYWI3NGE3NTlmYzI3NTFmZDdhMDZiMzExZTUxOGNlNS4uMmJiM2ZlNzViOTk3
N2U4MzMyMmFlMjU4MGY3MjEyZWU1YmYyMTYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAg
LTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8QXBwbGljYXRpb25D
YWNoZVJlc291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBVUkwm
IHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhdGgpCitSZWY8QXBw
bGljYXRpb25DYWNoZVJlc291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShj
b25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVk
IHR5cGUsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBwYXRoKQogewogICAgIEFTU0VSVCghdXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKTsK
ICAgICBpZiAoIWJ1ZmZlcikKQEAgLTQwLDcgKzQwLDcgQEAgUmVmPEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZT4gQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmws
IGMKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJM
IHsgdXJsIH0sIFdURk1vdmUocmVzb3VyY2VSZXNwb25zZSksIHR5cGUsIGJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpLCBwYXRoKSk7CiB9CiAKLUFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCB1bnNpZ25lZCB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYg
cGF0aCkKK0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNl
KFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCiAg
ICAgOiBTdWJzdGl0dXRlUmVzb3VyY2UoV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHJlc3BvbnNlKSwg
V1RGTW92ZShkYXRhKSkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9zdG9yYWdlSUQoMCkK
QEAgLTUxLDcgKzUxLDcgQEAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U6OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAg
ICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0
eSgpID8gZGF0YSgpLm1ha2VDb250aWd1b3VzKCkgOiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7CisgICAgbG9hZGVyLmRlbGl2ZXJSZXNw
b25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29u
dGlndW91cygpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRo
KSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVk
IHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCmluZGV4IDg4Yzk0ZGUxYTc3NDEwNDY5YzkzMWE0MmE0
NzliMWU2Nzc3YTcwMmUuLmMyODhlNzAzNmM2NzYyYWQ0ODc2YmE4ODE0NjlhNzVkMjIzN2UxYmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgICAgICBG
YWxsYmFjayA9IDEgPDwgNAogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZT4gY3JlYXRlKGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1
bnNpZ25lZCB0eXBlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSwgY29uc3QgU3RyaW5nJiBwYXRoID0gU3RyaW5nKCkpOworICAgIHN0YXRpYyBSZWY8QXBw
bGljYXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUoY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgY29uc3QgU3RyaW5nJiBwYXRoID0gU3RyaW5nKCkp
OwogCiAgICAgdW5zaWduZWQgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIHZv
aWQgYWRkVHlwZSh1bnNpZ25lZCB0eXBlKTsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogI2Vu
ZGlmCiAgICAgCiBwcml2YXRlOgotICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiwg
UmVzb3VyY2VSZXNwb25zZSYmLCB1bnNpZ25lZCB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBTdHJpbmcmIHBhdGgpOworICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShVUkwmJiwg
UmVzb3VyY2VSZXNwb25zZSYmLCB1bnNpZ25lZCB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBwYXRoKTsKIAogICAgIHZvaWQgZGVsaXZlcihSZXNvdXJj
ZUxvYWRlciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBjNzcwZDc2NDEz
NTA2NTJmNWY3NGEwZGNlNTBjZThkMzNkMWZjNWU0Li44Y2YwNWNjZTE4ODAxMjhkZTU5YmU3MGE5
OTgzNmY1YTc0NWI2ZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTExMTIsNyArMTExMiw3
IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9h
ZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAgICAgaW50IGh0dHBTdGF0dXNDb2RlID0g
Y2FjaGVTdGF0ZW1lbnQtPmNvbHVtbkludCgxKTsKIAogICAgICAgICB1bnNpZ25lZCB0eXBlID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNhY2hlU3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgyKSk7Ci0g
ICAgICAgIGF1dG8gZGF0YSA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShjYWNoZVN0
YXRlbWVudC0+Y29sdW1uQmxvYig2KSk7CisgICAgICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGNhY2hlU3RhdGVtZW50LT5jb2x1bW5CbG9iKDYpKTsKICAgICAgICAgCiAgICAg
ICAgIFN0cmluZyBwYXRoID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoNyk7CiAgICAgICAg
IGxvbmcgbG9uZyBzaXplID0gMDsKQEAgLTEyNzIsNyArMTI3Miw3IEBAIGJvb2wgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OnNob3VsZFN0b3JlUmVzb3VyY2VBc0ZsYXRGaWxlKEFwcGxpY2F0aW9u
Q2FjaGVSZXNvCiAgICAgcmV0dXJuIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
dHlwZSwgImF1ZGlvLyIpIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodHlw
ZSwgInZpZGVvLyIpOwogfQogICAgIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3Jp
dGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBT
dHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNp
b24pCitib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJ
bkRpcmVjdG9yeShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRp
cmVjdG9yeSwgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pCiB7CiAg
ICAgU3RyaW5nIGZ1bGxQYXRoOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAppbmRleCA5YTk1MzAwODc2
NmE4ODg1NTYxYjM0ODg4OWI4Y2VkYTJiMmViMzM4Li40MTAyYTE4MDhiNDU1NTdiNjQ1ZTM2ZTdl
NjgxZmM0YzZkMjA3Y2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaApAQCAtMzksNyArMzksNyBAQCBjbGFz
cyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlSG9zdDsKIGNs
YXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHRlbXBsYXRl
PHR5cGVuYW1lPiBjbGFzcyBTdG9yYWdlSURKb3VybmFsOwogCiBjbGFzcyBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZSA6IHB1YmxpYyBSZWZDb3VudGVkPEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlPiB7
CkBAIC0xMjIsNyArMTIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGVuc3VyZU9yaWdpblJlY29y
ZChjb25zdCBTZWN1cml0eU9yaWdpbiopOwogICAgIHN0YXRpYyBib29sIHNob3VsZFN0b3JlUmVz
b3VyY2VBc0ZsYXRGaWxlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSopOwogICAgIHZvaWQgZGVs
ZXRlVGFibGVzKCk7Ci0gICAgYm9vbCB3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShT
aGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgU3RyaW5nJiBvdXRGaWxlbmFt
ZSwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKTsKKyAgICBib29sIHdyaXRlRGF0YVRvVW5p
cXVlRmlsZUluRGlyZWN0b3J5KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcm
IGRpcmVjdG9yeSwgU3RyaW5nJiBvdXRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5z
aW9uKTsKIAogICAgIHZvaWQgbG9hZE1hbmlmZXN0SG9zdEhhc2hlcygpOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCmluZGV4IDZk
ZTgwYzEwYWM3ZDI1Y2YzNDY5ZjZkZWYwZmFmNzI0MWY1OTY0MjguLjRlZjljZDY2YmQwODhiNzRj
MDQ2YzA2OTBkMWU5ZDNlNWUzMzYwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKQEAgLTQ2LDEyICs0NiwxMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgUmVmUHRyPEFyY2hpdmU+IFJhd0RhdGFDcmVhdGlvbkZ1
bmN0aW9uKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciYpOwordHlwZWRlZiBSZWZQdHI8QXJjaGl2
ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24oY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpOwogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24q
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IEFyY2hpdmVNSU1FVHlwZXNNYXA7CiAKIC8vIFRo
ZSBjcmVhdGUgZnVuY3Rpb25zIGluIHRoZSBhcmNoaXZlIGNsYXNzZXMgcmV0dXJuIFJlZlB0ciB0
byBjb25jcmV0ZSBzdWJjbGFzc2VzCiAvLyBvZiBBcmNoaXZlLiBUaGlzIGFkYXB0b3IgbWFrZXMg
dGhlIGZ1bmN0aW9ucyBoYXZlIGEgdW5pZm9ybSByZXR1cm4gdHlwZS4KLXRlbXBsYXRlPHR5cGVu
YW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBhcmNoaXZlRmFjdG9yeUNy
ZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBBcmNoaXZlQ2xhc3M+IHN0YXRpYyBSZWZQdHI8QXJjaGl2ZT4gYXJjaGl2ZUZhY3RvcnlD
cmVhdGUoY29uc3QgVVJMJiB1cmwsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICByZXR1cm4gQXJjaGl2ZUNsYXNzOjpjcmVhdGUodXJsLCBidWZmZXIpOwogfQpAQCAtODMs
NyArODMsNyBAQCBib29sIEFyY2hpdmVGYWN0b3J5Ojppc0FyY2hpdmVNSU1FVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiAhbWltZVR5cGUuaXNFbXB0eSgpICYmIGFyY2hp
dmVNSU1FVHlwZXMoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKLVJlZlB0cjxBcmNoaXZlPiBB
cmNoaXZlRmFjdG9yeTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCitSZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6
OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5
LmgKaW5kZXggMjFkMjM2NWNmOGQ5ZDkwMWVmZTdhYWQ1NTJiZjNkYTQwNjlmZTQwZC4uNTU2NDUx
NWM5ZTBkOWQwMzNiNzkwYzc0NzI4NWEyNTg1M2FiZTAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCkBAIC0zNCwxMiArMzQsMTIgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBBcmNoaXZlRmFjdG9yeSB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgaXNBcmNoaXZlTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGlj
IFJlZlB0cjxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGNyZWF0
ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3Rlcktub3duQXJjaGl2ZU1JTUVUeXBl
cyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKaW5k
ZXggZmMyMGRhM2RhMDMyY2JlZjc0ZjJlOWM4NDI4YWNiNGVlMzdiZWYyMy4uMDczODM5NGE4Mjg3
MTRhYTBiOTBlZTc1MDc5ZDQ4NmY1YjBlODY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIEFyY2hpdmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291
cmNlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitpbmxpbmUgQXJjaGl2
ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
ZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgOiBTdWJzdGl0dXRlUmVzb3VyY2UoVVJMIHsgdXJsIH0s
IFJlc291cmNlUmVzcG9uc2UgeyByZXNwb25zZSB9LCBXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9t
aW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1fdGV4dEVuY29kaW5nKHRleHRFbmNvZGluZykKQEAg
LTQyLDcgKzQyLDcgQEAgaW5saW5lIEFyY2hpdmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291cmNlKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwKIHsKIH0KIAotUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRF
bmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC01NCw3ICs1NCw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6
Y3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uCiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQXJjaGl2ZVJlc291cmNlKGRhdGEucmVsZWFzZU5vbk51bGwoKSwgdXJsLCBtaW1l
VHlwZSwgdGV4dEVuY29kaW5nLCBmcmFtZU5hbWUsIHJlc3BvbnNlKSk7CiB9CiAKLVJlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQorUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIHJldHVybiBjcmVhdGUoV1RGTW92
ZShkYXRhKSwgdXJsLCByZXNwb25zZS5taW1lVHlwZSgpLCByZXNwb25zZS50ZXh0RW5jb2RpbmdO
YW1lKCksIFN0cmluZygpLCByZXNwb25zZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oCmluZGV4IDIwOWU5NzE3YWViMDkzNjBkYjM5Mjdl
NmVmYTFlNWJmMWMyYzk3Y2EuLjA1NDhlZjcyMWVmZDI3YzAwY2U5M2QxMjI3MGVjZWM0NmMwMmFm
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZS5oCkBAIC0zNCw4ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXJjaGl2
ZVJlc291cmNlIDogcHVibGljIFN1YnN0aXR1dGVSZXNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBVUkwmLAorICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBj
cmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBVUkwmLAogICAgICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcm
IHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsCiAgICAgICAgIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmID0gUmVzb3VyY2VSZXNwb25zZSgpKTsKIApAQCAtNDcsNyArNDcsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRJZ25vcmVXaGVuVW5hcmNoaXZpbmcoKSBjb25zdCB7
IHJldHVybiBtX3Nob3VsZElnbm9yZVdoZW5VbmFyY2hpdmluZzsgfQogCiBwcml2YXRlOgotICAg
IEFyY2hpdmVSZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBBcmNoaXZlUmVzb3Vy
Y2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgU3RyaW5nIG1fbWltZVR5
cGU7CiAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCBmNWVjNGRkNjdm
N2RmOGQ5ZGEyMDliNDBlMjNjMDQzOWI2ZTY4YjAzLi43MTE1MGNiZGQ4OTY5ZTZhZjAyODY4NGI2
YmY2Y2JjMGE1MGIyZmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtMjQ4LDEyICsyNDgsMTIgQEAgUmVmPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShSZWY8QXJjaGl2ZVJlc291
cmNlPiYmIG1haW5SZXNvdXIKICAgICByZXR1cm4gYXJjaGl2ZTsKIH0KIAotUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEp
CitSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShVUkwoKSwgZGF0
YSk7CiB9CiAKLVJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBkYXRhKQorUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhKQogewogICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBD
cmVhdGluZyBmcm9tIHJhdyBkYXRhIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaAppbmRleCBkMDllYzlmNzVhYmExMzZhODYz
MzllYjRkODZhYmQ4Mjc3YzRmZjA0Li41YTA3YjEwYjRiZTZmODYyMDExYTc4MmE3ZGVkMjM2NzU5
MjQzNjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVn
YWN5V2ViQXJjaGl2ZS5oCkBAIC00MSw4ICs0MSw4IEBAIHN0cnVjdCBTaW1wbGVSYW5nZTsKIGNs
YXNzIExlZ2FjeVdlYkFyY2hpdmUgZmluYWwgOiBwdWJsaWMgQXJjaGl2ZSB7CiBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0
ZShTaGFyZWRCdWZmZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRl
KFJlZjxBcmNoaXZlUmVzb3VyY2U+JiYgbWFpblJlc291cmNlLCBWZWN0b3I8UmVmPEFyY2hpdmVS
ZXNvdXJjZT4+JiYgc3VicmVzb3VyY2VzLCBWZWN0b3I8UmVmPExlZ2FjeVdlYkFyY2hpdmU+PiYm
IHN1YmZyYW1lQXJjaGl2ZXMpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gY3JlYXRlKE5vZGUmLCBGdW5jdGlvbjxib29sKEZyYW1lJik+JiYgZnJh
bWVGaWx0ZXIgPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5
V2ViQXJjaGl2ZT4gY3JlYXRlKEZyYW1lJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAppbmRleCA5OTNjMmI4ZTgzMGRjM2Q3
NWM1YWQzMTliYmFmZTlkZjQ1YzUwMTBlLi5kMDEzOWY4N2EwNmY5Njk3OGI3NDc3ZTlmNDk5OWMz
NGVhOWY4NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTEFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MQXJjaGl2ZS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBSZWY8TUhUTUxBcmNoaXZl
PiBNSFRNTEFyY2hpdmU6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTUhUTUxB
cmNoaXZlKTsKIH0KIAotUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNoaXZlOjpjcmVhdGUo
Y29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciYgZGF0YSkKK1JlZlB0cjxNSFRNTEFyY2hpdmU+
IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewogICAgIC8vIEZvciBzZWN1cml0eSByZWFzb25zIHdlIG9ubHkgbG9hZCBN
SFRNTCBwYWdlcyBmcm9tIGxvY2FsIFVSTHMuCiAgICAgaWYgKCFMZWdhY3lTY2hlbWVSZWdpc3Ry
eTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHVybC5wcm90b2NvbCgpLnRvU3RyaW5nKCkp
KQpAQCAtMTMwLDcgKzEzMCw3IEBAIFJlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6
Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgcmV0dXJuIG1h
aW5BcmNoaXZlOwogfQogCi1SZWY8U2hhcmVkQnVmZmVyPiBNSFRNTEFyY2hpdmU6OmdlbmVyYXRl
TUhUTUxEYXRhKFBhZ2UqIHBhZ2UpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTUhUTUxB
cmNoaXZlOjpnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKiBwYWdlKQogewogICAgIFZlY3RvcjxQYWdl
U2VyaWFsaXplcjo6UmVzb3VyY2U+IHJlc291cmNlczsKICAgICBQYWdlU2VyaWFsaXplciBwYWdl
U2VyaWFsaXplcihyZXNvdXJjZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCAzZDJkYjdjOTYwMDJlYmU2ODRiMmJlZjhm
MWVhOWUyZTk3OTRhNTg5Li4yZGZlODdlODJlN2E0ZGNlMGYzNDFjMzYxOTQzYzk5MDIwNWM4ZGIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFy
Y2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFy
Y2hpdmUuaApAQCAtMzgsMTQgKzM4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
TUhUTUxQYXJzZXI7CiBjbGFzcyBQYWdlOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTUhUTUxBcmNoaXZlIGZpbmFsIDogcHVibGlj
IEFyY2hpdmUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TUhUTUxBcmNoaXZlPiBjcmVhdGUo
KTsKLSAgICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIFNo
YXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8TUhUTUxBcmNoaXZlPiBjcmVhdGUoY29u
c3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCi0gICAgc3RhdGljIFJlZjxTaGFy
ZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKKyAgICBzdGF0aWMgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBhZ2UqKTsKIAogICAgIHZpcnR1
YWwgfk1IVE1MQXJjaGl2ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggNjY1ZTY5Y2E3NzE0ZTQ0OWFmZTRjYTY4
YTcyNDE1MjMwZDEwOWIxNC4uZTUxODZlZmIwYjRmYTcwY2I2MDkzMWY0ODRlNTAwY2MxMGUwMGJj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
UGFyc2VyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgYm9vbCBza2lwTGluZXNVbnRpbEJv
dW5kYXJ5Rm91bmQoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGxpbmVSZWFkZXIsIGNvbgogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotTUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2VyKFNoYXJlZEJ1ZmZl
ciogZGF0YSkKK01IVE1MUGFyc2VyOjpNSFRNTFBhcnNlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhKQogICAgIDogbV9saW5lUmVhZGVyKGRhdGEsICJcclxuIikKIHsKIH0KQEAgLTIxNSw3
ICsyMTUsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0
UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVyLAogICAgICAgICBMT0dfRVJST1IoIklu
dmFsaWQgZW5jb2RpbmcgZm9yIE1IVE1MIHBhcnQuIik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KLSAgICBhdXRvIGNvbnRlbnRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBjb250ZW50QnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CiAgICAgLy8gRklYTUU6IHRoZSBVUkwgaW4g
dGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZlLCB3ZSBzaG91bGQgcmVzb2x2ZSBpdCBp
ZiBpdCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlvbnMgNSB3YXlzIHRvIHJlc29sdmUgYSBV
Ukw6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1NTcjc2VjdGlvbi01CiAgICAgLy8g
SUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdlbmVyYXRlIG9ubHkgYWJzb2x1dGUgVVJM
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNl
ci5oCmluZGV4IDFlOWJkNGQ3NzY3ZWUzOTFhMDAyMmY3MTc0OGYwMGI4NWM4MWIyNWYuLjBkNjA0
MzQzZjNkN2FkMTc4Y2MyMjAwM2M5NzljMjJlNTBhM2I5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaApAQCAtNDIsMTEgKzQyLDEx
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZTsKIGNsYXNzIE1I
VE1MQXJjaGl2ZTsKIGNsYXNzIE1JTUVIZWFkZXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBNSFRNTFBhcnNlciB7CiBwdWJsaWM6
Ci0gICAgZXhwbGljaXQgTUhUTUxQYXJzZXIoU2hhcmVkQnVmZmVyKik7CisgICAgZXhwbGljaXQg
TUhUTUxQYXJzZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopOwogCiAgICAgUmVmUHRyPE1IVE1M
QXJjaGl2ZT4gcGFyc2VBcmNoaXZlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCA5N2NkNGRm
ZmQxODhjMjgxMTFmZDY5YWMwZGJhMzM4YTY3MzMzNWE0Li5kZGQwYjFiODliMWQ4NzJiYjQyNzI3
ZWU3OGQ4ZmQ2MzllNGI4OTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00MCw3ICs0MCw3IEBA
IENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiB7CiB9CiAKLXZvaWQgQ2FjaGVkQXBwbGljYXRpb25N
YW5pZmVzdDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAg
ICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5oCmluZGV4IDY0
YjE0ZDVmNjVmZmZjODU1NGRmNDY2NWM3NTkxNmYzNGQxZDU0NmEuLjM3OThhOWI0ZDkwMTNjZmRl
YTZmNTZmYmRmMDAxNWFmODk0NzU3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtNDIsNyArNDIsNyBA
QCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdD4g
cHJvY2Vzcyhjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBE
b2N1bWVudCogPSBudWxscHRyKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICBjb25zdCBUZXh0UmVzb3Vy
Y2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9kZWNvZGVyLnB0cigpOyB9CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRl
eCA5ZDJkYzczNjQ4MDJkMGQ2MmE2NTkxZGU2ODlhNWE3YTI0NDMwNTExLi4zOGEyZTE3ZjBkMDZj
OGFjOThkZTI0YjFlNTJiOGU2MGU5MjQxMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZv
aWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSkKICAgICAgICAgc2F2ZVBhcnNlZFN0eWxlU2hlZXQoKnNoZWV0Lm1fcGFy
c2VkU3R5bGVTaGVldENhY2hlKTsKIH0KIAotdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5p
c2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBkYXRhLT5t
YWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggZDM3ZmFmYWNjMDEyMmM4NzU0MGY0NjRiOWU1NjE2MGNj
YWU0NjlmOS4uZTY1NWM2OWUzZWRiNjA5NTAyMzljY2U0NTQ1ZjA5NmI1MjY1NmRlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oCkBA
IC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJp
bmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5hbDsKICAgICBjb25z
dCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0
IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZv
aWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBm
aW5hbDsKIAogICAgIHZvaWQgc2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXgg
ZjlhZDc3MTNjNjAzYTZhMGE1NmJjYTI3OWNlODI1MDY2NmEzMjBmYS4uZDJiYzI4MjE0NzljNTlh
MjMyM2U0ZjY1Y2Q5NGI2M2I0MjM3MzY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRGb250LmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRpZEFk
ZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgY2xpZW50KQogICAgICAgICBzdGF0aWNfY2Fz
dDxDYWNoZWRGb250Q2xpZW50Jj4oY2xpZW50KS5mb250TG9hZGVkKCp0aGlzKTsKIH0KIAotdm9p
ZCBDYWNoZWRGb250OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRGb250OjpmaW5pc2hM
b2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2RhdGEg
PSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpAQCAtOTUsNyArOTUsNyBAQCBTdHJpbmcgQ2FjaGVk
Rm9udDo6Y2FsY3VsYXRlSXRlbUluQ29sbGVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHVybCgp
LmZyYWdtZW50SWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CiB9CiAKLWJvb2wgQ2FjaGVkRm9udDo6
ZW5zdXJlQ3VzdG9tRm9udERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciogZGF0YSkKK2Jvb2wg
Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQogewog
ICAgIGlmICghbV9mb250Q3VzdG9tUGxhdGZvcm1EYXRhICYmICFlcnJvck9jY3VycmVkKCkgJiYg
IWlzTG9hZGluZygpICYmIGRhdGEpIHsKICAgICAgICAgYm9vbCB3cmFwcGluZzsKQEAgLTEwOCw3
ICsxMDgsNyBAQCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgcmV0dXJuIG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5nZXQoKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENh
Y2hlZEZvbnQ6OmNyZWF0ZUN1c3RvbUZvbnREYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ5
dGVzLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKQorc3Rk
Ojp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IENhY2hlZEZvbnQ6OmNyZWF0ZUN1
c3RvbUZvbnREYXRhKFNoYXJlZEJ1ZmZlciYgYnl0ZXMsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29s
bGVjdGlvbiwgYm9vbCYgd3JhcHBpbmcpCiB7CiAgICAgUmVmUHRyIGJ1ZmZlciA9IHsgJmJ5dGVz
IH07CiAgICAgd3JhcHBpbmcgPSAhY29udmVydFdPRkZUb1NmbnRJZk5lY2Vzc2FyeShidWZmZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggMTU0ZGI4Y2Jh
YmYzZDVhMzhlMDk2MWFjYjU1Y2VhY2ZmMmYyOTczYS4uMTM0NjZjYzk5ZDBkMTljYmYzZDhlZjNk
ZmJkOTZmMzRkMGY4NTQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fbG9hZEluaXRpYXRlZDsgfQogCiAgICAgdmlydHVh
bCBib29sIGVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHJlbW90ZVVSSSk7
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVDdXN0b21Gb250RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBp
dGVtSW5Db2xsZWN0aW9uLCBib29sJiB3cmFwcGluZyk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVDdXN0b21Gb250RGF0YShTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24sIGJvb2wmIHdyYXBwaW5nKTsK
ICAgICBzdGF0aWMgRm9udFBsYXRmb3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShG
b250Q3VzdG9tUGxhdGZvcm1EYXRhJiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xk
LCBib29sIGl0YWxpYywgY29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVh
bCBSZWZQdHI8Rm9udD4gY3JlYXRlRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBB
dG9tU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJ
dGFsaWMsIGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVi
bGljOgogcHJvdGVjdGVkOgogICAgIEZvbnRQbGF0Zm9ybURhdGEgcGxhdGZvcm1EYXRhRnJvbUN1
c3RvbURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBib2xkLCBib29sIGl0YWxpYywg
Y29uc3QgRm9udENyZWF0aW9uQ29udGV4dCYpOwogCi0gICAgYm9vbCBlbnN1cmVDdXN0b21Gb250
RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBib29sIGVuc3VyZUN1c3Rv
bUZvbnREYXRhKFNoYXJlZEJ1ZmZlciogZGF0YSk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIGNh
bGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdDsKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0
ZToKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIHNldEJvZHlEYXRhRnJvbShjb25z
dCBDYWNoZWRSZXNvdXJjZSYpIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAg
IHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDdjMDFjOGNjMjMxMTc4NmM2MjRm
NDg1ZWRlZjY5MzVmYjdlZmE1ZmIuLjk0NjI3OTUyMGQwZGE0NDYyMmM2YWNkMzY2NjIyODgxMDVl
ODE5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApA
QCAtNDY4LDcgKzQ2OCw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkK
ICAgICBtX3VwZGF0ZUltYWdlRGF0YUNvdW50ID0gMDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6
dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNo
ZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0
RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkpOwpAQCAtNTIzLDE0ICs1MjMsMTQgQEAgYm9vbCBD
YWNoZWRJbWFnZTo6c2hvdWxkRGVmZXJVcGRhdGVJbWFnZURhdGEoKSBjb25zdAogICAgIHJldHVy
biAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2xhc3RVcGRhdGVJbWFnZURhdGFUaW1lKS5zZWNv
bmRzKCkgPCB1cGRhdGVJbWFnZURhdGFCYWNrb2ZmSW50ZXJ2YWxzW2ludGVydmFsXTsKIH0KIAot
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRh
SWZOZWVkZWQoY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgaWYgKCFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQogICAgICAgICBy
ZXR1cm4gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0Uo
V0VCS0lUX0lNQUdFX0RFQ09ERVJTKQotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHRE
YXRhVG9QREYoZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsK
ICNlbHNlCiAgICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxkIGhhdmUgYmVlbiBjYW5jZWxl
ZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVydGluZyBQb3N0U2NyaXB0IHRv
IFBERi4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU1NSw3ICs1NTUsNyBAQCBFbmNv
ZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0
ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCit2b2lkIENhY2hlZEltYWdlOjp1cGRh
dGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NF
UlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRh
dGEpOwogICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGRhdGEpOwpAQCAtNTY5LDcgKzU2OSw3IEBA
IHZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoKQogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7
CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hlZElt
YWdlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBtX2RhdGEgPSBjb252ZXJ0
ZWREYXRhSWZOZWVkZWQoZGF0YSk7CiAgICAgaWYgKG1fZGF0YSkgewpAQCAtNTk1LDcgKzU5NSw3
IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiB2b2lkIENhY2hlZEltYWdlOjpkaWRSZXBsYWNl
U2hhcmVkQnVmZmVyQ29udGVudHMoKQogewogICAgIGlmIChtX2ltYWdlKSB7Ci0gICAgICAgIC8v
IExldCB0aGUgSW1hZ2Uga25vdyB0aGF0IHRoZSBTaGFyZWRCdWZmZXIgaGFzIGJlZW4gcmVqaWdn
ZWQsIHNvIGl0IGNhbiBsZXQgZ28gb2YgYW55IHJlZmVyZW5jZXMgdG8gdGhlIGhlYXAtYWxsb2Nh
dGVkIHJlc291cmNlIGJ1ZmZlci4KKyAgICAgICAgLy8gTGV0IHRoZSBJbWFnZSBrbm93IHRoYXQg
dGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgaGFzIGJlZW4gcmVqaWdnZWQsIHNvIGl0IGNhbiBs
ZXQgZ28gb2YgYW55IHJlZmVyZW5jZXMgdG8gdGhlIGhlYXAtYWxsb2NhdGVkIHJlc291cmNlIGJ1
ZmZlci4KICAgICAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMjQyNzU2MTcpOiBJdCB3b3Vs
ZCBiZSBiZXR0ZXIgaWYgd2UgY291bGQgc29tZWhvdyB0ZWxsIHRoZSBJbWFnZSdzIGRlY29kZXIg
dG8gc3dhcCBpbiB0aGUgbmV3IGNvbnRlbnRzIHdpdGhvdXQgZGVzdHJveWluZyBhbnl0aGluZy4K
ICAgICAgICAgbV9pbWFnZS0+ZGVzdHJveURlY29kZWREYXRhKHRydWUpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggZDUxM2UxNmNiYTVhOTcw
N2MzM2FmYzc5MzkxNTE4NjZmYTQzOGE1Zi4uMDgzZjkyZjg4ODI3NmVlZGE4OTkxMjAzMWQyNDQ5
YTk2OGUyNjVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgK
QEAgLTY5LDggKzY5LDggQEAgcHVibGljOgogICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRo
KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZSAmJiBtX2ltYWdlLT5oYXNSZWxhdGl2ZVdpZHRoKCk7
IH0KICAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2lt
YWdlICYmIG1faW1hZ2UtPmhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KIAotICAgIHZvaWQgdXBkYXRl
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluaXNoTG9h
ZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIGVu
dW0gU2l6ZVR5cGUgewogICAgICAgICBVc2VkU2l6ZSwKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgb3ZlcnJpZGU7CiAKICAgICBib29s
IHNob3VsZERlZmVyVXBkYXRlSW1hZ2VEYXRhKCkgY29uc3Q7Ci0gICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5lZWRlZChjb25zdCBTaGFyZWRCdWZmZXIq
IGRhdGEpIGNvbnN0OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGNvbnZlcnRlZERhdGFJZk5l
ZWRlZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdDsKICAgICB2b2lk
IGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIEVuY29kZWREYXRhU3RhdHVzIHVwZGF0ZUltYWdl
RGF0YShib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdm9pZCB1cGRhdGVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgb3ZlcnJpZGU7CkBAIC0xNjksNyArMTY5LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJ
bnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYp
OwogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImKTsK
KyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCkgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwCmluZGV4IDkwMGJkMzMyOGE2NGJhNzcyZTZjODAxMWFiYWE1ZTYxMWM2NDY1NWYuLjcx
ZTE2MDgyZmZlNjU1ZDExMWYxNjk5MGQxMjMwNTM1YmVhY2JmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtNDgsNyArNDgs
NyBAQCBDYWNoZWRSYXdSZXNvdXJjZTo6Q2FjaGVkUmF3UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgVHlwZSB0eXBlLAogICAgIEFTU0VSVChpc01haW5Pck1lZGlhT3JJ
Y29uT3JSYXdSZXNvdXJjZSgpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRh
Vmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNv
bnN0IFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVy
RGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVu
ayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAogewogICAgIHNpemVf
dCBwcmV2aW91c0RhdGFMZW5ndGggPSBlbmNvZGVkU2l6ZSgpOwogICAgIGlmICghZGF0YSB8fCBk
YXRhLT5zaXplKCkgPD0gcHJldmlvdXNEYXRhTGVuZ3RoKQpAQCAtNTYsNyArNTYsNyBAQCBzdGQ6
Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3Vs
YXRlSW5jcmVtZW50YWxEYXRhQwogICAgIHJldHVybiBkYXRhLT5nZXRTb21lRGF0YShwcmV2aW91
c0RhdGFMZW5ndGgpOwogfQogCi12b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRl
QnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gU2tp
cCBhbnkgdXBkYXRlQnVmZmVycyB0cmlnZ2VyZWQgZnJvbSBuZXN0ZWQgcnVubG9vcHMuIFdlJ2xs
IGhhdmUgdGhlIGNvbXBsZXRlIGJ1ZmZlciBpbiBmaW5pc2hMb2FkaW5nLgogICAgIGlmIChtX2lu
SW5jcmVtZW50YWxEYXRhTm90aWZ5KQpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIENhY2hlZFJhd1Jl
c291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkK
ICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhLCBsZW5ndGgpOwogfQogCi12b2lk
IENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSYXdSZXNv
dXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKG1faW5JbmNyZW1l
bnRhbERhdGFOb3RpZnkpIHsKICAgICAgICAgLy8gV2UgbWF5IGdldCBoZXJlIHN5bmNocm9ub3Vz
bHkgZnJvbSB1cGRhdGVCdWZmZXIoKSBpZiB0aGUgY2FsbGJhY2sgdGhlcmUgZW5kcyB1cCBzcGlu
bmluZyBhIHJ1bmxvb3AuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5oCmluZGV4IDU3ZmQ3YWI1YzEwMGRjMDlhZGYyNmVjNGNiYWM0NTE0ZjM2Zjc1
ZmYuLmE3ODY1ZjhhZDE3OGFlZmIzMjIwYTU2ZGNmZjE5NTk5M2NmOTVhZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC01MSw5ICs1
MSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRS
ZXNvdXJjZUNsaWVudCYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29u
c3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAg
dm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0
YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9p
ZCBhbGxDbGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwpAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc3dpdGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJjZSgpIG92ZXJyaWRl
OwogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9hbGxvd0VuY29kZWREYXRhUmVwbGFjZW1lbnQ7IH0KIAotICAgIHN0ZDo6b3B0aW9u
YWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNv
bnN0IFNoYXJlZEJ1ZmZlciopIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVy
RGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIqKSBjb25zdDsKICAgICB2b2lkIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2
ZWQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICAKICNpZiBVU0Uo
UVVJQ0tfTE9PSykKQEAgLTkyLDcgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVkaXJl
Y3RQYWlyLCAwLCBDcmFzaE9uT3ZlcmZsb3csIDA+IG1fcmVkaXJlY3RDaGFpbjsKIAogICAgIHN0
cnVjdCBEZWxheWVkRmluaXNoTG9hZGluZyB7Ci0gICAgICAgIFJlZlB0cjxjb25zdCBTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8RGVsYXllZEZpbmlzaExvYWRp
bmc+IG1fZGVsYXllZEZpbmlzaExvYWRpbmc7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggNTU2OTY0M2NkNWU2ODk3YTNjNThmYjQ2
MjM0NTQ2ZjA2ZGEwYWExYS4uOWRlMGEwNGNkNWVjNWYzZmFkMmZiMTZkN2IzMjJjODU4YTM4YTZi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Y2hlY2tOb3RpZnkoY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogICAgICAgICBjbGllbnQtPm5vdGlmeUZp
bmlzaGVkKCp0aGlzLCBtZXRyaWNzKTsKIH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZTo6dXBkYXRl
QnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpCit2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKGRhdGFC
dWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKIH0K
QEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0
IHVpbnQ4X3QqLCB1bnNpZ25lZCkKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09
IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVk
UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
Zyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewogICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIGNoZWNrTm90aWZ5KG1l
dHJpY3MpOwpAQCAtOTE1LDcgKzkxNSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OkNhbGxiYWNr
Ojp0aW1lckZpcmVkKCkKIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAKLXZvaWQg
Q2FjaGVkUmVzb3VyY2U6OnRyeVJlcGxhY2VFbmNvZGVkRGF0YShDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBuZXdCdWZmZXIpCit2b2lkIENhY2hlZFJlc291cmNlOjp0cnlSZXBsYWNlRW5jb2RlZERh
dGEoU2hhcmVkQnVmZmVyJiBuZXdCdWZmZXIpCiB7CiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgK
aW5kZXggMjE4ZDc0ZjI3NzZhOTY1ZmNlYTQ4YjYxYTMyNWY5NzI4YTc5MGRkOS4uYzk4MmRkNjkz
N2EwYmMyYmYzOGM0MjYxMjZmZmU2ZTc4Yzc5NjQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgQ29va2ll
SmFyOwogY2xhc3MgTWVtb3J5Q2FjaGU7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFRleHRSZXNvdXJj
ZURlY29kZXI7CiAKQEAgLTExMiw5ICsxMTIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29k
aW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRleHRS
ZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBudWxs
cHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXIm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0
IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOworICAgIHZpcnR1YWwg
dm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVkUmVzb3Vy
Y2U6OlN0YXR1cyk7CiAKICAgICB2b2lkIHNldFJlc291cmNlRXJyb3IoY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IpIHsgbV9lcnJvciA9IGVycm9yOyB9CkBAIC0yMTMsNyArMjEzLDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBjbGVhckxvYWRlcigpOwogCi0gICAgQ29udGlndW91c1NoYXJlZEJ1
ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KKyAg
ICBTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdl
dCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVz
b3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLyogYnl0ZXNTZW50
ICovLCB1bnNpZ25lZCBsb25nIGxvbmcgLyogdG90YWxCeXRlc1RvQmVTZW50ICovKSB7IH0KIAog
I2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0
cnlSZXBsYWNlRW5jb2RlZERhdGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYpOwogI2Vu
ZGlmCiAKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllckZvckxvYWRXaXRo
b3V0UmVzb3VyY2VMb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJGb3JMb2FkV2l0
aG91dFJlc291cmNlTG9hZGVyOyB9CkBAIC0zMzYsNyArMzM2LDcgQEAgcHJvdGVjdGVkOgogICAg
IEhhc2hDb3VudGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBOZWVk
ZWQgYnkgUGluZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVy
OwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogCiBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9s
YXN0RGVjb2RlZEFjY2Vzc1RpbWU7IC8vIFVzZWQgYXMgYSAidGhyYXNoIGd1YXJkIiBpbiB0aGUg
Y2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdE
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1l
bnQuY3BwCmluZGV4IGIwZjc2YTUwOTYxMGY2NzEwNTdiZWViZjBhMGI5YTYwMWNhODIyMmIuLmRi
NDMxNjA3YWU1NjM4MzAzODAwZGQyNTljMTAzNGNkMDkwZmNmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmNwcApAQCAtNTIsNyArNTIs
NyBAQCBTdHJpbmcgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1
cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRTVkdEb2N1
bWVudDo6ZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKK3ZvaWQgQ2FjaGVkU1ZHRG9jdW1lbnQ6OmZpbmlzaExv
YWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIC8vIFdlIGRv
bid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGZyYW1lIGJlY2F1c2UgdGhlIG5ldyBkb2N1bWVudCBi
ZWxvbmdzIHRvIHRoZSBwYXJlbnQgVXNlRWxlbWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50LmgKaW5kZXggYjAxMmJhOThlZWRmNzMyYzA4MmMz
NjNiMGNiZTEzMDM0NzRjMzA0OS4uNDQ1ZTRmOWY0MmMzYzI3NDA3OTc2YTY0ZTkxNTQwN2Y4YjUz
NGQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3Vt
ZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEVuY29kaW5nKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RlY29kZXIuZ2V0KCk7IH0KLSAgICB2b2lkIGZp
bmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgIFJl
ZlB0cjxTVkdEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVj
b2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFNWR0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0ZvbnQuY3BwCmluZGV4IDljZjA0MzcxOTRhOGEyZmNhNWU1MjVjN2JmZjlmZThlOThhNTBjMzIu
LmQyYzFkZTQ3ZWZiNzgxMzk4ZjQ0MzhiN2NhNGVhMjYwZTIyMTk3NjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAg
Ym9vbCBDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5n
JiByZW1vdGVVUkkpCiAgICAgICAgIGlmICghbV9leHRlcm5hbFNWR0ZvbnRFbGVtZW50IHx8ICFm
aXJzdEZvbnRGYWNlKHJlbW90ZVVSSSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIGlmIChhdXRvIGNvbnZlcnRlZEZvbnQgPSBjb252ZXJ0U1ZHVG9PVEZGb250KCptX2V4dGVy
bmFsU1ZHRm9udEVsZW1lbnQpKQotICAgICAgICAgICAgbV9jb252ZXJ0ZWRGb250ID0gQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29udmVydGVkRm9udC52YWx1ZSgpKSk7
CisgICAgICAgICAgICBtX2NvbnZlcnRlZEZvbnQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZN
b3ZlKGNvbnZlcnRlZEZvbnQudmFsdWUoKSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IG51bGxwdHI7CiAgICAgICAgICAgICBtX2V4dGVybmFs
U1ZHRm9udEVsZW1lbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTVkdGb250LmgKaW5kZXggYTE1ZWFkMGUxNjQwOTAyN2VmOTIwNGViOTMzYjRmMDU0YzM4
NTgyMy4uMzUzZDNkZTYzYjA2Mjg2MTNhYmFmNzc3ZmViMjUzYzViNjI0OTBjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCkBAIC01MCw3ICs1MCw3IEBA
IHByaXZhdGU6CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1heWJlSW5pdGlhbGl6ZUV4dGVybmFsU1ZH
Rm9udEVsZW1lbnQoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKICAgICBTVkdGb250RmFj
ZUVsZW1lbnQqIGZpcnN0Rm9udEZhY2UoY29uc3QgQXRvbVN0cmluZyYgcmVtb3RlVVJJKTsKIAot
ICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2NvbnZlcnRlZEZvbnQ7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9jb252ZXJ0ZWRGb250OwogICAgIFJlZlB0cjxTVkdEb2N1
bWVudD4gbV9leHRlcm5hbFNWR0RvY3VtZW50OwogICAgIFNWR0ZvbnRFbGVtZW50KiBtX2V4dGVy
bmFsU1ZHRm9udEVsZW1lbnQ7CiAgICAgY29uc3QgUmVmPGNvbnN0IFNldHRpbmdzPiBtX3NldHRp
bmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRl
eCAxZGY1YzRiMTdlZWViY2I0ZTRiYmZlNGFmODg5MWFkZWNiNmFiOTYwLi42MmExNmU4NmIzMjE5
M2Q4ZTU2ZDYxOTJmNzdlOWJjNmY0MDhlOWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtOTYsNyArOTYsNyBAQCB1bnNpZ25lZCBDYWNoZWRT
Y3JpcHQ6OnNjcmlwdEhhc2goKQogICAgIHJldHVybiBtX3NjcmlwdEhhc2g7CiB9CiAKLXZvaWQg
Q2FjaGVkU2NyaXB0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRTY3JpcHQ6OmZpbmlz
aExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7CiAgICAgICAgIG1fZGF0
YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkU2NyaXB0LmgKaW5kZXggNzViZTRkYjcxNTc5ZTMxYWFkYTk3MDY5ZDliZmZjMmM3ZTYz
NDMyMS4uODY1MWU2MzlhZDkwNjE3Mjg1NjFjMzI0YmZhN2FmNGNmOTdmNmQzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaApAQCAtNDcsNyArNDcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAg
U3RyaW5nIGVuY29kaW5nKCkgY29uc3QgZmluYWw7CiAgICAgY29uc3QgVGV4dFJlc291cmNlRGVj
b2RlciogdGV4dFJlc291cmNlRGVjb2RlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVjb2Rl
ci5nZXQoKTsgfQotICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBTaGFyZWRCdWZmZXIqLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmco
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOwogCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAppbmRleCA1NDI2
NmRkOTA4MTljMzRlOTE1MDg0MzQ4OTQyZTkxM2FkZTgxZWQ0Li4wYzg0MjhiYjk5ZGI2ZGZiMTZh
MzQ4MTM0YzM4MjY4MzZjY2U1NDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtNDAsMTAgKzQwLDEwIEBAIENhY2hlZFRleHRUcmFj
azo6Q2FjaGVkVGV4dFRyYWNrKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFBBTDo6
U2Vzc2lvbklECiB7CiB9CiAKLXZvaWQgQ2FjaGVkVGV4dFRyYWNrOjpkb1VwZGF0ZUJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXIqIGRhdGEpCit2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBBU1NFUlQo
ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEp
OwotICAgIG1fZGF0YSA9IGRhdGEgPyBkYXRhLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+KCk7CisgICAgbV9kYXRhID0gZGF0YSA/IGRhdGEtPm1ha2VD
b250aWd1b3VzKCkgOiBSZWZQdHI8U2hhcmVkQnVmZmVyPigpOwogICAgIHNldEVuY29kZWRTaXpl
KGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fs
a2VyPENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKQEAgLTUxLDEzICs1
MSwxMyBAQCB2b2lkIENhY2hlZFRleHRUcmFjazo6ZG9VcGRhdGVCdWZmZXIoY29uc3QgU2hhcmVk
QnVmZmVyKiBkYXRhKQogICAgICAgICBjbGllbnQtPmRlcHJlY2F0ZWREaWRSZWNlaXZlQ2FjaGVk
UmVzb3VyY2UoKnRoaXMpOwogfQogCi12b2lkIENhY2hlZFRleHRUcmFjazo6dXBkYXRlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkVGV4dFRyYWNrOjp1cGRhdGVC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBkb1VwZGF0
ZUJ1ZmZlcigmZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihkYXRhKTsK
IH0KIAotdm9pZCBDYWNoZWRUZXh0VHJhY2s6OmZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCit2b2lkIENhY2hl
ZFRleHRUcmFjazo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgZG9VcGRhdGVC
dWZmZXIoZGF0YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoZGF0YSwgbWV0
cmljcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4
dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmgK
aW5kZXggZjQ2MzE3ODMyMWVkYzdjYTg2OTcwY2Y0YWRkYTQwODk2OTI5Njg4NS4uMDliNDMzOWEz
N2I2NzNiMmFjNGZkYWUxNDZiMjliOTY0Nzc3ZmNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suaApAQCAtMzUsMTAgKzM1LDEwIEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2b2lkIGZpbmlzaExvYWRpbmcoY29uc3QgU2hhcmVk
QnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1
cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAg
IHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRvVXBkYXRlQnVmZmVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciopOworICAgIHZvaWQgZG9VcGRhdGVCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3Bw
CmluZGV4IGI5YTY1ODc1M2NlOWY3ZWMzNjMzZjFhMmY3NGU3Y2M5ZWEzOTg1NzQuLmQyZWZmMmQy
ZDQwYzkyNzczODc1NmM0YThmMGNiYjkzNDNiZTEwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTYxLDcgKzYxLDcg
QEAgU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKICAgICByZXR1
cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLm5hbWUoKTsKIH0KIAotdm9pZCBDYWNoZWRYU0xTdHls
ZVNoZWV0OjpmaW5pc2hMb2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQordm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5p
c2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewogICAgICAgICBtX2Rh
dGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKaW5kZXggYzA0ZGQ0ZjE2Y2YzYjdlY2EyNTg5
MTBiOWVmYWY0MTI1NGUyZDcyOC4uYmQyMzEyMTRmMmQyMGJhMzk2NDQ2MDM2NmUwNDFiOTQxMzVh
YzRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0
eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5
bGVTaGVldC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBmaW5h
bDsKICAgICBjb25zdCBUZXh0UmVzb3VyY2VEZWNvZGVyKiB0ZXh0UmVzb3VyY2VEZWNvZGVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9kZWNvZGVyLmdldCgpOyB9Ci0gICAgdm9pZCBmaW5pc2hM
b2FkaW5nKGNvbnN0IFNoYXJlZEJ1ZmZlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBTdHJpbmcgbV9zaGVl
dDsKICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCmluZGV4
IGQwMjBhYzNkYzgwODQ0YTY3YTA3Y2I1YjFkMTU5ZjcxYzBjZGNkMTQuLmNlNTJjZmViZDc2MWU1
NjQ3NWEyMDFlODE0Mzg1MzM0ZWE0ZGJhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmgKQEAgLTMyLDE3ICszMiwxNyBAQCB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZDYWNoZWRVUkxSZXNwb25zZSogQ0ZDYWNoZWRVUkxSZXNw
b25zZVJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250aWd1b3VzU2hhcmVk
QnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBEaXNrQ2FjaGVNb25pdG9yIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBtb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9u
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBBTDo6U2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3Bv
bnNlUmVmKTsKLSAgICBzdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeUdl
dEZpbGVCYWNrZWRTaGFyZWRCdWZmZXJGcm9tQ0ZVUkxDYWNoZWRSZXNwb25zZShDRkNhY2hlZFVS
TFJlc3BvbnNlUmVmKTsKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdHJ5R2V0Rmls
ZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYpOwogCiBwcml2YXRlOgogICAgIERpc2tDYWNoZU1vbml0b3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpOwogCi0g
ICAgdm9pZCByZXNvdXJjZUJlY2FtZUZpbGVCYWNrZWQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYp
OworICAgIHZvaWQgcmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKFNoYXJlZEJ1ZmZlciYpOwogCiAg
ICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7IHJldHVy
biBtX3Jlc291cmNlUmVxdWVzdDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQppbmRleCA5M2VlOTYzNzRmMDNiYTMx
MjQ0M2QyODFjNTJhNDg0MDY5ZGYyYTMxLi5mYTRiOTAzYmVmOTM5NDgxYzIyZWE3ZGY1NTFlOGI1
NWU3ZTBlNTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0Nh
Y2hlTW9uaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNr
Q2FjaGVNb25pdG9yQ29jb2EubW0KQEAgLTQyLDEzICs0MiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2Vjb25kcyB3ZSdsbCB0cnkgdG8gd2FpdCBm
b3IgYSByZXNvdXJjZSB0byBiZSBkaXNrIGNhY2hlZCBiZWZvcmUgd2UgZm9yZ2V0IHRoZSByZXF1
ZXN0Lgogc3RhdGljIGNvbnN0IGRvdWJsZSBkaXNrQ2FjaGVNb25pdG9yVGltZW91dCA9IDIwOwog
Ci1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRGlza0NhY2hlTW9uaXRvcjo6dHJ5R2V0
RmlsZUJhY2tlZFNoYXJlZEJ1ZmZlckZyb21DRlVSTENhY2hlZFJlc3BvbnNlKENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYgY2FjaGVkUmVzcG9uc2UpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBEaXNrQ2Fj
aGVNb25pdG9yOjp0cnlHZXRGaWxlQmFja2VkU2hhcmVkQnVmZmVyRnJvbUNGVVJMQ2FjaGVkUmVz
cG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBjYWNoZWRSZXNwb25zZSkKIHsKICAgICBhdXRv
IGRhdGEgPSBfQ0ZDYWNoZWRVUkxSZXNwb25zZUdldE1lbU1hcHBlZERhdGEoY2FjaGVkUmVzcG9u
c2UpOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKIH0KIAogdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjptb25p
dG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIGNhY2hl
ZFJlc3BvbnNlKQpAQCAtMTEzLDcgKzExMyw3IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tDYWNo
ZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JCiAg
ICAgX0NGQ2FjaGVkVVJMUmVzcG9uc2VTZXRCZWNhbWVGaWxlQmFja2VkQ2FsbEJhY2tCbG9jayhj
YWNoZWRSZXNwb25zZSwgYmxvY2tUb1J1biwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CiB9
CiAKLXZvaWQgRGlza0NhY2hlTW9uaXRvcjo6cmVzb3VyY2VCZWNhbWVGaWxlQmFja2VkKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZmZXIpCit2b2lkIERpc2tDYWNoZU1vbml0
b3I6OnJlc291cmNlQmVjYW1lRmlsZUJhY2tlZChTaGFyZWRCdWZmZXImIGZpbGVCYWNrZWRCdWZm
ZXIpCiB7CiAgICAgYXV0byogcmVzb3VyY2UgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVz
b3VyY2VGb3JSZXF1ZXN0KG1fcmVzb3VyY2VSZXF1ZXN0LCBtX3Nlc3Npb25JRCk7CiAgICAgaWYg
KCFyZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5
UHJldmlld0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLmgKaW5kZXggZmY0MGM0MTZjYzYxNmU5MmIxMzA3YmFiYjdlMzQzYjM3ZTU0NjAwMC4u
ZThiZTFiMjEzNzZhMDU4NjlkMGU2MjVjZDg0YmJlYTJjOGVhMjhhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwogICAgIGJvb2wgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29sIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVk
QnVmZmVyJik7CisgICAgYm9vbCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKICAgICBib29sIGRpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lkIGRpZEZh
aWwoKTsKIApAQCAtNjAsMTIgKzYwLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcmV2aWV3Q29u
dmVydGVyRGlkRmluaXNoVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpIGZpbmFsIHsgfTsKICAg
ICB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRGYWlsVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYp
IGZpbmFsOwogICAgIHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFN0YXJ0Q29udmVydGluZyhQcmV2
aWV3Q29udmVydGVyJikgZmluYWw7Ci0gICAgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2
ZURhdGEoUHJldmlld0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAg
IHZvaWQgcHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBwcmV2aWV3Q29u
dmVydGVyRGlkRmluaXNoQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikgZmluYWw7CiAgICAg
dm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmFpbENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYp
IGZpbmFsOwogCiAgICAgLy8gUHJldmlld0NvbnZlcnRlclByb3ZpZGVyCi0gICAgdm9pZCBwcm92
aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRCdWZmZXIqKT4mJikgZmluYWw7CisgICAg
dm9pZCBwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmlld0NvbnZlcnRlcihQcmV2aWV3Q29udmVy
dGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Kik+JiYpIGZpbmFsOwogICAgIHZvaWQgcHJvdmlkZVBhc3N3b3JkRm9yUHJldmlld0NvbnZlcnRl
cihQcmV2aWV3Q29udmVydGVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcm
KT4mJikgZmluYWw7CiAKICAgICBSZWZQdHI8UHJldmlld0NvbnZlcnRlcj4gbV9jb252ZXJ0ZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0K
aW5kZXggMjNjOTcyNDJiYjlmYjc1M2ZhYjc0MzdhZjdlMDhhMDlkYTk2MjFmOS4uMGFiNTQzNGEw
ZGJlOTFlZTg3NjUyNTgxZTJiMzM1ZTVlMWYwYWI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQpAQCAtNjMsNyArNjMsNyBAQCBzdGF0
aWMgUmVmPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IG1ha2VDbGllbnQoY29uc3QgUmVzb3Vy
Y2VMb2FkZXImIGxvYWRlciwgYwogICAgIHJldHVybiBlbXB0eUNsaWVudCgpOwogfQogCi1ib29s
IExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChtX2ZpbmlzaGVk
TG9hZGluZ0RhdGFJbnRvQ29udmVydGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDcs
NyArMTQ3LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlk
U3RhcnRDb252ZXJ0aW5nKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICB9KTsKIH0KIAotdm9pZCBM
ZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkUmVjZWl2ZURhdGEoUHJldmll
d0NvbnZlcnRlciYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgTGVnYWN5UHJldmll
d0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXIm
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGF1dG8gcmVzb3Vy
Y2VMb2FkZXIgPSBtX3Jlc291cmNlTG9hZGVyLmdldCgpOwogICAgIGlmICghcmVzb3VyY2VMb2Fk
ZXIpCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRl
UGFzc3dvcmRGb3JQcmV2aWV3Q29udmVydGVyKFByZXZpZXdDb252ZXJ0ZXImIGMKICAgICBtX2Ns
aWVudC0+ZGlkUmVxdWVzdFBhc3N3b3JkKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
IAotdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcm92aWRlTWFpblJlc291cmNlRm9yUHJldmll
d0NvbnZlcnRlcihQcmV2aWV3Q29udmVydGVyJiBjb252ZXJ0ZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIExl
Z2FjeVByZXZpZXdMb2FkZXI6OnByb3ZpZGVNYWluUmVzb3VyY2VGb3JQcmV2aWV3Q29udmVydGVy
KFByZXZpZXdDb252ZXJ0ZXImIGNvbnZlcnRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChjb252ZXJ0ZXIsICZjb252ZXJ0ZXIgPT0gbV9jb252ZXJ0ZXIpOwogICAg
IGNvbXBsZXRpb25IYW5kbGVyKG1fb3JpZ2luYWxEYXRhLmdldCgpLmdldCgpKTsKQEAgLTIzNSw3
ICsyMzUsNyBAQCBMZWdhY3lQcmV2aWV3TG9hZGVyOjp+TGVnYWN5UHJldmlld0xvYWRlcigpID0g
ZGVmYXVsdDsKIExlZ2FjeVByZXZpZXdMb2FkZXI6OkxlZ2FjeVByZXZpZXdMb2FkZXIoUmVzb3Vy
Y2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAg
OiBtX2NvbnZlcnRlciB7IFByZXZpZXdDb252ZXJ0ZXI6OmNyZWF0ZShyZXNwb25zZSwgKnRoaXMp
IH0KICAgICAsIG1fY2xpZW50IHsgbWFrZUNsaWVudChsb2FkZXIsIG1fY29udmVydGVyLT5wcmV2
aWV3RmlsZU5hbWUoKSwgbV9jb252ZXJ0ZXItPnByZXZpZXdVVEkoKSkgfQotICAgICwgbV9vcmln
aW5hbERhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICAsIG1fb3JpZ2luYWxEYXRh
IHsgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgfQogICAgICwgbV9yZXNvdXJjZUxv
YWRlciB7IGxvYWRlciB9CiAgICAgLCBtX3Nob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmcg
eyBsb2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5zaG91bGREZWNpZGVQb2xpY3lCZWZvcmVMb2Fk
aW5nUXVpY2tMb29rUHJldmlldygpIH0KIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmlu
ZGV4IGNlZDU2MDljMDA1YTUzNTJiMzNkMTE5OGY0NWI5OGJhODRhNzFkMmMuLmExMjA0NGM0MTZk
MGQ0ODZhZmVjOTllMWQwZTEwZWZhZjFmOWRjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGll
bnQuaApAQCAtMzksMTMgKzM5LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGVudW0gY2xhc3Mg
RE9NUGFzdGVBY2Nlc3NDYXRlZ29yeSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIERPTVBhc3RlQWNj
ZXNzUmVzcG9uc2UgOiB1aW50OF90OwogCi1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOwor
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1l
bnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBOb2RlOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0
eWxlUHJvcGVydGllczsKIGNsYXNzIFRleHRDaGVja2VyQ2xpZW50OwogY2xhc3MgVmlzaWJsZVNl
bGVjdGlvbjsKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBsZVJh
bmdlJikgPSAwOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICB2aXJ0dWFs
IHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIC8qIGlkZW50
aWZpZXIgKi8sIGNvbnN0IFN0cmluZyYgLyogY29udGVudFR5cGUgKi8sIGNvbnN0IFN0cmluZyYg
LyogcHJlZmVycmVkRmlsZU5hbWUgKi8sIFJlZjxTaGFyZWRCdWZmZXI+JiYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgLyog
aWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlwZSAqLywgY29uc3QgU3Ry
aW5nJiAvKiBwcmVmZXJyZWRGaWxlTmFtZSAqLywgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYgLyogaWRlbnRpZmllciAqLywgY29uc3QgU3RyaW5nJiAvKiBjb250ZW50VHlw
ZSAqLywgY29uc3QgU3RyaW5nJiAvKiBmaWxlUGF0aCAqLykgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVyQXR0YWNobWVudHMoVmVjdG9yPFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YT4mJikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJiAvKiBpZGVudGlmaWVyICovKSB7IH0KQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3
aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4mKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJk
RGF0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5k
aWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQpIHsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAppbmRleCA3Yjk2MWRiMDQwNGMxZDE5NzM2MDc0ZTRhOWQ2YzFkYzk0MjEyMjdmLi45N2Uw
MWI1YzY5NzZkNjdmMGYzYmRmY2VkZWM2YWJjZjA0ODUyYzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
QEAgLTE5NzMsNyArMTk3Myw3IEBAIGNvbnN0IFN0cmluZyYgUGFnZTo6dXNlclN0eWxlU2hlZXQo
KSBjb25zdAogICAgIC8vIGFuZCB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBpdCBmaW5pc2hlcyBs
b2FkaW5nLCBlc3BlY2lhbGx5IHdpdGggcmVzcGVjdAogICAgIC8vIHRvIHdoZW4gdGhlIGxvYWQg
ZXZlbnQgZmlyZXMsIHdoZW4gRG9jdW1lbnQ6OmNsb3NlIGlzIGNhbGxlZCwgYW5kIHdoZW4KICAg
ICAvLyBsYXlvdXQvcGFpbnQgYXJlIGFsbG93ZWQgdG8gaGFwcGVuLgotICAgIGF1dG8gZGF0YSA9
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3VzZXJT
dHlsZVNoZWV0UGF0aCk7CisgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRo
Q29udGVudHNPZkZpbGUobV91c2VyU3R5bGVTaGVldFBhdGgpOwogICAgIGlmICghZGF0YSkKICAg
ICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2Vy
aWFsaXplci5jcHAKaW5kZXggMDFlMTZkZDk4ZjRkZjBjZWIyMWRmOTA4ZDFmNDBjNjI0YWFlNGMy
Ny4uMDIwMDFhYjM0MzAxOGE3MzI1NTk5OGZjNDc0Y2ViZmM0OWY4Yzg0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFBhZ2VT
ZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgU3RyaW5nIHRleHQgPSBhY2N1bXVsYXRvci5zZXJpYWxpemVOb2RlcygqZG9j
dW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVJbmNsdWRp
bmdOb2RlKTsKLSAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5zdWdnZXN0
ZWRNSU1FVHlwZSgpLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5n
LmVuY29kZSh0ZXh0LCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7Cisg
ICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCBkb2N1bWVudC0+c3VnZ2VzdGVkTUlNRVR5cGUo
KSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVuY29kZSh0ZXh0LCBQQUw6OlVu
ZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgbV9yZXNvdXJjZVVSTHMuYWRk
KHVybCk7CiAKICAgICBmb3IgKGF1dG8mIG5vZGUgOiBub2RlcykgewpAQCAtMjYwLDcgKzI2MCw3
IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NTU3R5bGVT
aGVldCogc3R5bGVTaGVldCwgY29uc3QgVVJMCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
Y2hlY2sgd2hldGhlciBhIGNoYXJzZXQgaGFzIGJlZW4gc3BlY2lmaWVkIGFuZCBpZiBub25lIHdh
cyBmb3VuZCBhZGQgb25lLgogICAgICAgICBQQUw6OlRleHRFbmNvZGluZyB0ZXh0RW5jb2Rpbmco
c3R5bGVTaGVldC0+Y29udGVudHMoKS5jaGFyc2V0KCkpOwogICAgICAgICBBU1NFUlQodGV4dEVu
Y29kaW5nLmlzVmFsaWQoKSk7Ci0gICAgICAgIG1fcmVzb3VyY2VzLmFwcGVuZCh7IHVybCwgInRl
eHQvY3NzIl9zLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUodGV4dEVuY29kaW5nLmVu
Y29kZShjc3NUZXh0LnRvU3RyaW5nKCksIFBBTDo6VW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRp
ZXMpKSB9KTsKKyAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4dC9jc3MiX3Ms
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUoY3NzVGV4dC50b1N0cmlu
ZygpLCBQQUw6OlVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSkgfSk7CiAgICAgICAgIG1f
cmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogICAgIH0KIH0KQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lk
IFBhZ2VTZXJpYWxpemVyOjphZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwg
UmVuZGVyRWxlbWVudCogaW1hZwogICAgIGlmICghaW1hZ2UgfHwgaW1hZ2UtPmltYWdlKCkgPT0g
JkltYWdlOjpudWxsSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihp
bWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFn
ZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIGRhdGEgPSBp
bWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VTZXJpYWxpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgK
aW5kZXggYmZjYmU3YjhkYmZkNDlmNzlkMWEwMGM4MDA0ZWFkZTI5YzQ4MDgyMS4uZmYzZTJlMWZj
YjA2MWE0ZmZmYzVkZWZkNGMyZDE4MGFmNDliZjc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNl
cmlhbGl6ZXIuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgc3RydWN0IFJlc291cmNl
IHsKICAgICAgICAgVVJMIHVybDsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwotICAgICAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YTsKICAgICB9OwogCiAgICAgZXhwbGljaXQgUGFnZVNlcmlhbGl6ZXIoVmVj
dG9yPFJlc291cmNlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVEYXRhLmgKaW5kZXggM2VkZDljNzFiYjI3
ZTUwZmRmZGZhY2VlMjcxZWZlZmI3Y2IyOTFmNS4uNjhiMGRkMmMzMDZiNzk0NTMxZDI5YmQxNDBk
Y2I0MmI0OGUyNzM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TaGFyZURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YS5oCkBAIC0zOSw3ICszOSw3IEBA
IHN0cnVjdCBTaGFyZURhdGEgewogCiBzdHJ1Y3QgUmF3RmlsZSB7CiAgICAgU3RyaW5nIGZpbGVO
YW1lOwotICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBmaWxlRGF0YTsKIH07CiAgICAgCiBzdHJ1Y3QgU2hhcmVEYXRh
V2l0aFBhcnNlZFVSTCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0
YVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NoYXJlRGF0YVJlYWRlci5jcHAKaW5k
ZXggZDY4MDVhM2VlNTM0YzM2NjRmMjU5NDk1OTNkZmI1YjQ5MTNhNTRmMi4uNzU4MzZiODc5MTQz
YjYwYTdmMzUxOTcwMzIwN2I2YWQzZDhkNGY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TaGFyZURhdGFSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2hhcmVE
YXRhUmVhZGVyLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFNoYXJlRGF0YVJlYWRlcjo6ZGlk
RmluaXNoTG9hZGluZyhpbnQgbG9hZEluZGV4LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogCiAg
ICAgUmF3RmlsZSBmaWxlOwogICAgIGZpbGUuZmlsZU5hbWUgPSBmaWxlTmFtZTsKLSAgICBmaWxl
LmZpbGVEYXRhID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5
dGVMZW5ndGgoKSk7CisgICAgZmlsZS5maWxlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0
YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJy
YXlCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgbV9zaGFyZURhdGEuZmlsZXMuYXBwZW5kKFdU
Rk1vdmUoZmlsZSkpOwogICAgIG1fZmlsZXNSZWFkU29GYXIrKzsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0tleWVkQ29kaW5nLmgKaW5kZXggM2Q4MGQ3YTFkNDI0NTg1MjBiZDU0MzhlZjM2ZDhhNTdj
YjVkNGU3ZS4uNzlhMjM1MzU1ZjFlOGVmODYxNTM1MmU2MzljOGM2MzE4ZjQwMzc3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9LZXllZENvZGluZy5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIAogY2xhc3MgS2V5ZWREZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVu
Y29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJikgPSAwOwog
Ci0gICAgdmlydHVhbCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2Rp
bmcoKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGlu
ZygpID0gMDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBlbmNvZGVFbnVt
KGNvbnN0IFN0cmluZyYga2V5LCBUIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05v
d1BsYXlpbmdNYW5hZ2VyLmgKaW5kZXggZTM4MDZlODdkZjc5YTNkOWI1Y2FlMTIxNGRlNjZhYTJh
NjU4NDdkYi4uZmM2NmMzNjVhMmYyOWE0Yzc4ZTYwNjE5ZTQ3YTcxYzcyNThkOGZlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCkBAIC03MCw3ICs3MCw3
IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gbV9ub3dQbGF5
aW5nSW5mbzsKICAgICBzdHJ1Y3QgQXJ0d29ya0NhY2hlIHsKICAgICAgICAgU3RyaW5nIHNyYzsK
LSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgICAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogICAgIH07CiAgICAgc3RkOjpvcHRp
b25hbDxBcnR3b3JrQ2FjaGU+IG1fbm93UGxheWluZ0luZm9BcnR3b3JrOwogICAgIGJvb2wgbV9z
ZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmQuY3BwCmluZGV4IDU5NmFmYjhlOTE4ODhjMmFhNjcyZmMwZTVkMDZjYjY0NDlk
ZWRhN2QuLmJhMTc4NzI0NzFhZTI4NjRmNzcwODJjNDdkNjdmMjYzZWQ1ZGY5NTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwCkBAIC05Myw3ICs5Myw3IEBAIFN0cmluZyBQ
YXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKQog
ICAgIHJldHVybiB7IH07CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwg
Y29uc3QgU3RyaW5nJiB0eXBlKQorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gUGFzdGVi
b2FyZDo6cmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoYXV0byogc3RyYXRlZ3kgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkpCiAgICAgICAgIHJldHVybiBzdHJhdGVneS0+cmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKGluZGV4LCB0eXBlLCBuYW1lKCksIGNvbnRleHQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggNGUyNzgyZDliYWNiOWQwMTlkMTIwMDIw
ZGZmMDExNmUyNTIzMmQwNC4uZjJlYjk3MjAxOWE0MDJlYjg4Y2VmZjhmNDdjM2U4NjNmZTM0MDJj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtNjEsMTMgKzYxLDEzIEBA
IHR5cGVkZWYgc3RydWN0IEhXTkRfXyogSFdORDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3Mg
RG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRWxlbWVudDsKIGNsYXNz
IEZyYW1lOwogY2xhc3MgUGFzdGVib2FyZFN0cmF0ZWd5OwotY2xhc3MgU2hhcmVkQnVmZmVyOwor
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFNpbXBsZVJhbmdlOwogCkBA
IC04MywxNCArODMsMTQgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBXRUJD
T1JFX0VYUE9SVCB+UGFzdGVib2FyZFdlYkNvbnRlbnQoKTsKICAgICBTdHJpbmcgY29udGVudE9y
aWdpbjsKICAgICBib29sIGNhblNtYXJ0Q29weU9yRGVsZXRlOwotICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwotICAgIFJlZlB0cjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAgIFJlZlB0cjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhSW5SVEZERm9ybWF0OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJU
RkZvcm1hdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5n
Rm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5T
dHJpbmdGb3JtYXQ7CiAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgVmVjdG9y
PFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKKyAgICBWZWN0b3I8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CiAjZW5kaWYKICNpZiBQTEFURk9STShH
VEspCiAgICAgU3RyaW5nIGNvbnRlbnRPcmlnaW47CkBAIC0xMjAsMTcgKzEyMCwxNyBAQCBzdHJ1
Y3QgUGFzdGVib2FyZEltYWdlIHsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFzdGVib2FyZEltYWdl
KCk7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICBTdHJpbmcg
ZGF0YUluSFRNTEZvcm1hdDsKICNlbmRpZgogI2lmICFQTEFURk9STShXSU4pCiAgICAgUGFzdGVi
b2FyZFVSTCB1cmw7CiAjZW5kaWYKICNpZiAhKFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lO
KSkKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhOworICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YTsKICAgICBTdHJpbmcgcmVzb3VyY2VN
SU1FVHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKLSAgICBWZWN0b3I8UmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBjbGllbnREYXRhOworICAgIFZlY3RvcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIFN0cmluZyBzdWdnZXN0
ZWROYW1lOwogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemU7CkBAIC0xNDQsNyArMTQ0LDcgQEAgc3Ry
dWN0IFBhc3RlYm9hcmRCdWZmZXIgewogICAgIFN0cmluZyBjb250ZW50T3JpZ2luOwogI2VuZGlm
CiAgICAgU3RyaW5nIHR5cGU7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRh
dGE7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKIH07CiAKIC8vIEZvciByZWFkaW5n
IGZyb20gdGhlIHBhc3RlYm9hcmQuCkBAIC0xNTksMTYgKzE1OSwxNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIHJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmLCBQcmVzZW50YXRpb25TaXpl
IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUgPSB7IH0sIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUgPSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGVQYXRocyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5n
JikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBQcmVzZW50YXRpb25TaXplIHByZWZlcnJlZFByZXNlbnRhdGlv
blNpemUgPSB7IH0pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZEltYWdlKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHR5cGUsIFByZXNlbnRhdGlvblNpemUg
cHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBy
ZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSA9IDA7CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHJlYWREYXRhQnVmZmVyKENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgUHJlc2VudGF0aW9uU2l6ZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplID0geyB9KSA9IDA7
CisgICAgdmlydHVhbCBib29sIHJlYWRXZWJBcmNoaXZlKFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQoU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCByZWFkUlRGKFNoYXJlZEJ1ZmZlciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZERh
dGFCdWZmZXIoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IG5hbWUsIFByZXNlbnRhdGlvblNpemUgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IHsgfSkg
PSAwOwogI2VuZGlmCiB9OwogCkBAIC0xODMsNyArMTgzLDcgQEAgc3RydWN0IFBhc3RlYm9hcmRG
aWxlUmVhZGVyIHsKICAgICB2aXJ0dWFsIH5QYXN0ZWJvYXJkRmlsZVJlYWRlcigpID0gZGVmYXVs
dDsKICAgICB2aXJ0dWFsIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIC8qIHR5cGUgKi8p
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVhZEJ1ZmZlcihjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRCdWZmZXIoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSA9
IDA7CiB9OwogCiBjbGFzcyBQYXN0ZWJvYXJkIHsKQEAgLTMwOSw3ICszMDksNyBAQCBwdWJsaWM6
CiAgICAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IHBhc3RlYm9hcmRJdGVtSW5m
byhzaXplX3QgaW5kZXgpIGNvbnN0OwogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmcoc2l6ZV90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29u
c3QgU3RyaW5nJiB0eXBlKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKTsK
ICAgICBVUkwgcmVhZFVSTChzaXplX3QgaW5kZXgsIFN0cmluZyYgdGl0bGUpOwogCiAgICAgY29u
c3QgUGFzdGVib2FyZENvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQu
Z2V0KCk7IH0KQEAgLTM0MSw3ICszNDEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGFk
ZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShMaXN0SGFzaFNldDxTdHJpbmc+JiByZXN1
bHRUeXBlcywgY29uc3QgU3RyaW5nJiBjb2NvYVR5cGUpOwogICAgIFN0cmluZyByZWFkU3RyaW5n
Rm9yUGxhdGZvcm1UeXBlKGNvbnN0IFN0cmluZyYpOwogICAgIFZlY3RvcjxTdHJpbmc+IHJlYWRU
eXBlc1dpdGhTZWN1cml0eUNoZWNrKCk7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGb3JUeXBlV2l0aFNlY3VyaXR5Q2hlY2soY29uc3QgU3RyaW5nJik7Cisg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVj
ayhjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmRDb250ZXh0PiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5jcHAKaW5kZXggMjBjZDYxZTcxMTIxMzIxY2M0NmQwNzcxOTkxYWFj
NWFhNDc1NTgwMi4uOWQzZjg3YTkxMTRjMzhhNTRlMzNhMDVlMmI5ODk1MmNjZjY3YWU3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcApA
QCAtMzMsMTMgKzMzLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHN0ZDo6
dmFyaWFudDxTdHJpbmcsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gY29weVBsYXRmb3Jt
RGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4+JiBvdGhlcikKK3N0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVy
Pj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVk
QnVmZmVyPj4mIG90aGVyKQogewogICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmlu
Zz4ob3RoZXIpKQogICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxTdHJpbmc+KG90aGVyKSB9Owog
Ci0gICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI+PihvdGhlcikpCi0gICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPj4ob3RoZXIpLmNvcHlSZWYoKSB9OworICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikpCisgICAgICAgIHJldHVybiB7IHN0ZDo6
Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihvdGhlcikuY29weVJlZigpIH07CiAKICAgICByZXR1cm4g
eyB9OwogfQpAQCAtODAsNyArODAsNyBAQCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6UGFzdGVib2Fy
ZEN1c3RvbURhdGEoU3RyaW5nJiYgb3JpZ2luLCBWZWN0b3I8RW50cnk+JiYgZGF0YQogewogfQog
Ci1SZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OmNyZWF0
ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CitSZWY8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKICAgICBjb25zdGV4cHIgdW5zaWdu
ZWQgY3VycmVudEN1c3RvbURhdGFTZXJpYWxpemF0aW9uVmVyc2lvbiA9IDE7CiAKQEAgLTg5LDcg
Kzg5LDcgQEAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9vcmlnaW47CiAg
ICAgZW5jb2RlciA8PCBzYW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpOwogICAgIGVuY29kZXIg
PDwgb3JkZXJlZFR5cGVzKCk7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6
ZSgpKTsKIH0KIAogUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3RvbURhdGE6OmZy
b21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYmIGRlY29kZXIp
CkBAIC0xMjQsNyArMTI0LDcgQEAgUGFzdGVib2FyZEN1c3RvbURhdGEgUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW4KICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1QYXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
ZnJvbVNoYXJlZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpCitQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YSBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZl
cihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gZnJvbVBlcnNpc3Rl
bmNlRGVjb2RlcihidWZmZXIuZGVjb2RlcigpKTsKIH0KQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lk
IFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgdmFsdWUpCiAgICAgYWRkT3JNb3ZlRW50cnlUb0VuZCh0eXBlKS5wbGF0Zm9y
bURhdGEgPSB7IHZhbHVlIH07CiB9CiAKLXZvaWQgUGFzdGVib2FyZEN1c3RvbURhdGE6OndyaXRl
RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRh
dGEpCit2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjp3cml0ZURhdGEoY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgYWRkT3JNb3ZlRW50cnlUb0Vu
ZCh0eXBlKS5wbGF0Zm9ybURhdGEgPSB7IFdURk1vdmUoZGF0YSkgfTsKIH0KQEAgLTIwMiwxNCAr
MjAyLDE0IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IFBhc3RlYm9hcmRDdXN0b21EYXRhOjpz
YW1lT3JpZ2luQ3VzdG9tU3RyaW5nRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIGN1c3RvbURhdGE7
CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUp
IGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkgewogICAgICAgICBpZiAo
ZW50cnkudHlwZSAhPSB0eXBlKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYg
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihlbnRy
eS5wbGF0Zm9ybURhdGEpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxDb250aWd1
b3VzU2hhcmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRhKS5jb3B5UmVmKCk7CisgICAgICAg
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0
Zm9ybURhdGEpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+
PihlbnRyeS5wbGF0Zm9ybURhdGEpLmNvcHlSZWYoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CkBAIC0yNjUsMTEgKzI2NSwxMSBAQCB2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpmb3JFYWNoQ3VzdG9tU3RyaW5nKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiB0eXBlLAog
ICAgIH0KIH0KIAotdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3Ry
aW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6
dmFyaWFudDxTdHJpbmcsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmIGZ1
bmN0aW9uKSBjb25zdAordm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3Jt
U3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0
ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+PiYgZGF0YSk+JiYgZnVuY3Rpb24p
IGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZGF0YSkgewogICAgICAgICBhdXRv
JiBkYXRhID0gZW50cnkucGxhdGZvcm1EYXRhOwotICAgICAgICBpZiAoKHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5pc051bGwo
KSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+
KGRhdGEpKQorICAgICAgICBpZiAoKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRh
KSAmJiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5pc051bGwoKSkgfHwgc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkpCiAgICAgICAgICAgICBmdW5jdGlvbihl
bnRyeS50eXBlLCBkYXRhKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCBjNmNiYzc5MGM3ZTA1ZjMxNDgyMDVmYzVhMWNj
NWE0NjgzYzZkNjE3Li4yYmU4MWQyOTM4YTNkYmQwOTAyNmNhNmVjNjRhYzMyODdlNmFiYzAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAg
LTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YSB7CiBwdWJsaWM6CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgICAgICBT
dHJpbmcgdHlwZTsKICAgICAgICAgU3RyaW5nIGN1c3RvbURhdGE7Ci0gICAgICAgIHN0ZDo6dmFy
aWFudDxTdHJpbmcsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gcGxhdGZvcm1EYXRhOwor
ICAgICAgICBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4gcGxhdGZvcm1E
YXRhOwogICAgIH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YSgp
OwpAQCAtNjAsMTYgKzYwLDE2IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbigp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgdm9pZCBzZXRPcmlnaW4oY29uc3QgU3Ry
aW5nJiBvcmlnaW4pIHsgbV9vcmlnaW4gPSBvcmlnaW47IH0KIAotICAgIFdFQkNPUkVfRVhQT1JU
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdDsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFzdGVib2FyZEN1c3RvbURhdGEgZnJvbVNoYXJl
ZEJ1ZmZlcihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9hcmRDdXN0b21EYXRhIGZyb21TaGFyZWRCdWZmZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFBhc3RlYm9h
cmRDdXN0b21EYXRhIGZyb21QZXJzaXN0ZW5jZURlY29kZXIoV1RGOjpQZXJzaXN0ZW5jZTo6RGVj
b2RlciYmKTsKIAogICAgIFN0cmluZyByZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
c3Q7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXIoY29uc3Qg
U3RyaW5nJiB0eXBlKSBjb25zdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
KGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAgICAgU3RyaW5nIHJlYWRTdHJpbmdJbkN1c3Rv
bURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsKIAogICAgIHZvaWQgd3JpdGVTdHJpbmco
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICB2b2lkIHdyaXRl
RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRh
dGEpOworICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhKTsKICAgICB2b2lkIHdyaXRlU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKICAgICB2b2lkIGNsZWFyKCk7CkBA
IC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZm9yRWFjaFR5cGUoRnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmKT4mJikgY29uc3Q7CiAgICAgdm9pZCBmb3JFYWNoUGxhdGZvcm1T
dHJpbmcoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0
YSk+JiYpIGNvbnN0OwotICAgIHZvaWQgZm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVu
Y3Rpb248dm9pZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcs
IFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEpPiYmKSBjb25zdDsKKyAgICB2b2lk
IGZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4mIGRh
dGEpPiYmKSBjb25zdDsKICAgICB2b2lkIGZvckVhY2hDdXN0b21TdHJpbmcoRnVuY3Rpb248dm9p
ZChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk+JiYpIGNvbnN0OwogCiAg
ICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRTdHJhdGVneS5oCmluZGV4IDliMWQ0Yjk1ZWRmYmRmYTA1OTU2YTM5OTA3MWFiOWZkOTE4
M2I5MDcuLmI0ZDljNTc0ZGNhZTdlMWQwNjM2NjY4N2ZkMzVhYjgyNDRhNzgwZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0zMSwxMSArMzEs
MTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7Ci1jbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgUGFzdGVib2FyZENv
bnRleHQ7CiBjbGFzcyBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7
Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogc3Ry
dWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkSXRlbUluZm87CiBzdHJ1Y3Qg
UGFzdGVib2FyZFVSTDsKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2b2lkIGdl
dFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdl
dFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFz
dGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJp
bmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpA
QCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGludDY0X3QgYWRkVHlwZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBp
bnQ2NF90IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAw
OwotICAgIHZpcnR1YWwgaW50NjRfdCBzZXRCdWZmZXJGb3JUeXBlKENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKKyAgICB2aXJ0dWFsIGlu
dDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJk
Q29udGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBhc3RlYm9h
cmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0Q29sb3IoY29uc3QgQ29sb3ImLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0g
MDsKICAgICB2aXJ0dWFsIGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopID0gMDsKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgU3RyaW5nIHVybFN0cmluZ1N1aXRhYmxlRm9yTG9hZGluZyhjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHRpdGxlLCBjb25zdCBQYXN0ZWJvYXJkQ29u
dGV4dCopID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFz
dGVib2FyZChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwot
ICAgIHZpcnR1YWwgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9t
UGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KikgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVhZEJ1
ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBVUkwgcmVhZFVSTEZyb21QYXN0
ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5n
JiB0aXRsZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKSA9IDA7CiAgICAgdmlydHVhbCBzdGQ6
Om9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChz
aXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdl
Q291bnQsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwogICAgIHZpcnR1YWwgc3RkOjpv
cHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZv
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZXh0KikgPSAwOwpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBWZWN0b3I8U3RyaW5nPiB0eXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcmVhZFRleHRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHJl
YWRGaWxlUGF0aHNGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiByZWFkQnVmZmVy
RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKSA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBy
ZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdyaXRlVG9D
bGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2VsZWN0aW9uRGF0YSYmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpID0gMDsKICNlbmRpZiAvLyBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaAppbmRleCBiNDVjZTFmOTM4Y2JhNTA2
NjM4YjZhNDEyMWQ3NjczNjNmOGJlNTIyLi44ZTJjOGZiOTJkOTcyZmQ0MjE2MDA3YmM4Nzc3NTJj
ZmQzNDhmODRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
V3JpdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0
ZXJEYXRhLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQ
YXN0ZWJvYXJkV3JpdGVyRGF0YSBmaW5hbCB7CiBwdWJsaWM6CkBAIC01MSwxNCArNTEsMTQgQEAg
cHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAgICBTdHJpbmcgY29udGVudE9yaWdp
bjsKICAgICAgICAgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZTsKLSAgICAgICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7Ci0gICAgICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwotICAgICAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OwotICAgICAgICBS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1h
dDsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsK
KyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKKyAgICAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICBTdHJpbmcg
ZGF0YUluSFRNTEZvcm1hdDsKICAgICAgICAgU3RyaW5nIGRhdGFJblN0cmluZ0Zvcm1hdDsKICAg
ICAgICAgVmVjdG9yPFN0cmluZz4gY2xpZW50VHlwZXM7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IGNsaWVudERhdGE7CisgICAgICAgIFZlY3RvcjxSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4gY2xpZW50RGF0YTsKICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKaW5kZXggM2Y0ODMy
YTVhNjU4YzFjYzdjMGFhMTNiMjZlMGVhNDczM2U5ZDNiNy4uOWU3MmU0NGEyZWFjNGQ4ZWY3MzBi
OTg3MWQwZWM1MDhlZDlmYWM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1Db250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1Db250ZW50RmlsdGVyLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtQ29udGVudEZpbHRlciB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBsZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgPSAw
OwotICAgIHZpcnR1YWwgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50
RGF0YSgpIGNvbnN0ID0gMDsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgdmly
dHVhbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCA9
IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
UGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJk
LmgKaW5kZXggNTI3MGM1OTg0MzU1MTA0ZjkxYTVjZTU0MjIyM2I0NDljMmI1MTg5YS4uOGZlOTI0
ZGZlNTZiYzNjOTk2NjZlYmYwNGY3MzU0MDE1NTVhYTMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTQ3LDE0ICs0NywxNCBAQCBzdHJ1Y3Qg
d3BlX3Bhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOwotY2xh
c3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFBh
c3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKIHN0cnVjdCBQYXN0ZWJv
YXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZEl0ZW1JbmZvOwogc3RydWN0IFBhc3RlYm9hcmRV
Ukw7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7Citj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBQbGF0Zm9ybVBhc3RlYm9hcmQg
ewogcHVibGljOgpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBw
bGF0Zm9ybVBhc3RlYm9hcmRUeXBlRm9yU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25z
dCBTdHJpbmcmIGRvbVR5cGUsIEluY2x1ZGVJbWFnZVR5cGVzID0gSW5jbHVkZUltYWdlVHlwZXM6
Ok5vKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4m
IHR5cGVzKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBhbGxTdHJpbmdzRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdDsKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgog
CiAgICAgLy8gVGhlc2UgbWV0aG9kcyB3aWxsIHJldHVybiAwIGlmIHBhc3RlYm9hcmQgb3duZXJz
aGlwIGhhcyBiZWVuIHRha2VuIGZyb20gdXMuCiAgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBj
b3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQpOwotICAgIFdFQkNPUkVfRVhQT1JUIGlu
dDY0X3Qgc2V0QnVmZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRCdWZm
ZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIGludDY0X3Qgc2V0VVJMKGNvbnN0IFBhc3RlYm9hcmRVUkwmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBpbnQ2NF90IHNldENvbG9yKGNvbnN0IENvbG9yJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgaW50NjRfdCBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwpAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFz
dGVib2FyZFVSTCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiByZWFkQnVmZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlcihzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyByZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHJlYWRVUkwoc2l6ZV90IGluZGV4LCBTdHJp
bmcmIHRpdGxlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY291bnQoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZlcnRlci5jcHAKaW5kZXggOWVi
NGJkZGYwN2NmNjE2NmE1ODYwYmFjMDc0NjI2ZDI5NWFjYjMyYi4uYTRlMDg3NTA5ZTU5NGQxODcx
MTI1ZDEzYzk5NTNjNGU0Mzk0OTM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUHJldmlld0NvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJl
dmlld0NvbnZlcnRlci5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgY29uc3QgUmVzb3VyY2VFcnJvciYg
UHJldmlld0NvbnZlcnRlcjo6cHJldmlld0Vycm9yKCkgY29uc3QKICAgICByZXR1cm4gbV9wcmV2
aWV3RXJyb3I7CiB9CiAKLWNvbnN0IFNoYXJlZEJ1ZmZlciYgUHJldmlld0NvbnZlcnRlcjo6cHJl
dmlld0RhdGEoKSBjb25zdAorY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgUHJldmlld0Nv
bnZlcnRlcjo6cHJldmlld0RhdGEoKSBjb25zdAogewogICAgIHJldHVybiAqbV9wcmV2aWV3RGF0
YS5nZXQoKTsKIH0KQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjp1cGRh
dGVNYWluUmVzb3VyY2UoKQogICAgIH0pOwogfQogCi12b2lkIFByZXZpZXdDb252ZXJ0ZXI6OmFw
cGVuZEZyb21CdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFByZXZpZXdD
b252ZXJ0ZXI6OmFwcGVuZEZyb21CdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIHdoaWxlIChidWZmZXIuc2l6ZSgpID4gbV9sZW5ndGhBcHBlbmRlZCkg
ewogICAgICAgICBhdXRvIG5ld0RhdGEgPSBidWZmZXIuZ2V0U29tZURhdGEobV9sZW5ndGhBcHBl
bmRlZCk7CkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBQcmV2aWV3Q29udmVydGVyOjpyZXBsYXlU
b0NsaWVudChQcmV2aWV3Q29udmVydGVyQ2xpZW50JiBjbGllbnQpCiAgICAgY2xpZW50LnByZXZp
ZXdDb252ZXJ0ZXJEaWRGaW5pc2hDb252ZXJ0aW5nKCp0aGlzKTsKIH0KIAotdm9pZCBQcmV2aWV3
Q29udmVydGVyOjpkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKK3ZvaWQgUHJldmlld0NvbnZlcnRlcjo6ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGF1dG8gcHJvdGVjdGVkVGhpcyB7
IFJlZiB7ICp0aGlzIH0gfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJldmlld0NvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJldmlld0NvbnZl
cnRlci5oCmluZGV4IGYxNGRlMWQ5MTRhNGNiY2ExNWE3NWQ2ZDVlNWUwZGNiNGM0YTlmNzYuLjVh
ZWRhM2I3MmY0MGJhNWFmNzQxMTJjMDA0NTdmOTY2YTdhMDNiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RydWN0IFBy
ZXZpZXdDb252ZXJ0ZXJQcm92aWRlcjsKIHN0cnVjdCBQcmV2aWV3UGxhdGZvcm1EZWxlZ2F0ZSA6
IENhbk1ha2VXZWFrUHRyPFByZXZpZXdQbGF0Zm9ybURlbGVnYXRlPiB7CiAgICAgdmlydHVhbCB+
UHJldmlld1BsYXRmb3JtRGVsZWdhdGUoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGVsZWdhdGVEaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVEaWRGaW5pc2hMb2FkaW5nKCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxlZ2F0ZURpZEZhaWxXaXRoRXJyb3IoY29uc3QgUmVz
b3VyY2VFcnJvciYpID0gMDsKIH07CkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgcHJldmlld0ZpbGVOYW1lKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIHByZXZpZXdVVEkoKSBjb25zdDsKICAgICBjb25zdCBSZXNvdXJjZUVycm9y
JiBwcmV2aWV3RXJyb3IoKSBjb25zdDsKLSAgICBjb25zdCBTaGFyZWRCdWZmZXImIHByZXZpZXdE
YXRhKCkgY29uc3Q7CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcHJldmlld0Rh
dGEoKSBjb25zdDsKIAogICAgIHZvaWQgZmFpbGVkVXBkYXRpbmcoKTsKICAgICB2b2lkIGZpbmlz
aFVwZGF0aW5nKCk7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1BsYXRm
b3JtUGFzc3dvcmRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJikgY29uc3Q7CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGl0ZXJhdGVDbGllbnRzKFQmJiBjYWxsYmFjayk7Ci0gICAg
dm9pZCBhcHBlbmRGcm9tQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgYXBw
ZW5kRnJvbUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBk
aWRBZGRDbGllbnQoUHJldmlld0NvbnZlcnRlckNsaWVudCYpOwogICAgIHZvaWQgZGlkRmFpbENv
bnZlcnRpbmdXaXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkRmFp
bFVwZGF0aW5nKCk7CkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRm
b3JtVW5sb2NrV2l0aFBhc3N3b3JkKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gUHJldmlld1Bs
YXRmb3JtRGVsZWdhdGUKLSAgICB2b2lkIGRlbGVnYXRlRGlkUmVjZWl2ZURhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJikgZmluYWw7CisgICAgdm9pZCBkZWxlZ2F0ZURpZFJlY2VpdmVEYXRhKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRlbGVnYXRlRGlkRmlu
aXNoTG9hZGluZygpIGZpbmFsOwogICAgIHZvaWQgZGVsZWdhdGVEaWRGYWlsV2l0aEVycm9yKGNv
bnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUHJldmlld0NvbnZlcnRlckNsaWVudC5oCmluZGV4IDA0ZWEzNjgwNjkyYjI1MmExOTg5YzI2
Y2EyMDQyMTI3NzdhYTNiN2IuLjljZWU5MzMyMGIyMzhiNGNkNzNjZGQyZTAzMDJjM2JmNGRhZDY4
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyQ2xp
ZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQcmV2
aWV3Q29udmVydGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVy
Q2xpZW50IDogQ2FuTWFrZVdlYWtQdHI8UHJldmlld0NvbnZlcnRlckNsaWVudD4gewogICAgIHZp
cnR1YWwgflByZXZpZXdDb252ZXJ0ZXJDbGllbnQoKSA9IGRlZmF1bHQ7CkBAIC00Miw3ICs0Miw3
IEBAIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyQ2xpZW50IDogQ2FuTWFrZVdlYWtQdHI8UHJldmll
d0NvbnZlcnRlckNsaWVudD4gewogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlk
RmluaXNoVXBkYXRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
cHJldmlld0NvbnZlcnRlckRpZEZhaWxVcGRhdGluZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkU3RhcnRDb252ZXJ0aW5nKFByZXZp
ZXdDb252ZXJ0ZXImKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRS
ZWNlaXZlRGF0YShQcmV2aWV3Q29udmVydGVyJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBuZXdEYXRh
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZlRGF0YShQ
cmV2aWV3Q29udmVydGVyJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgbmV3RGF0YSkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGlu
ZyhQcmV2aWV3Q29udmVydGVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcmV2aWV3Q29udmVy
dGVyRGlkRmFpbENvbnZlcnRpbmcoUHJldmlld0NvbnZlcnRlciYpID0gMDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCmluZGV4
IDgyNzg2MzkzZmNlZDc1NGM4NWY3YjI4OTEyNTJmNTE2YmVkMGQ1NDkuLmI5ODZlZTQwZDE5NzUx
NzRmNTRhZDI5YTE2OGNhZGYxODk0NTZjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1ByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIgOiBDYW5NYWtl
V2Vha1B0cjxQcmV2aWV3Q29udmVydGVyUHJvdmlkZXI+IHsKICAgICB2aXJ0dWFsIH5QcmV2aWV3
Q29udmVydGVyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJvdmlk
ZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkQnVmZmVyKik+JiYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcHJvdmlkZU1haW5SZXNvdXJjZUZvclByZXZpZXdDb252ZXJ0ZXIoUHJldmlld0Nv
bnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciopPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByb3ZpZGVQYXNzd29yZEZvclByZXZp
ZXdDb252ZXJ0ZXIoUHJldmlld0NvbnZlcnRlciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgU3RyaW5nJik+JiYpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Byb21pc2VkQXR0YWNobWVudEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Byb21pc2VkQXR0YWNobWVudEluZm8uaAppbmRleCBhMWNjNzY5NWMwYTYzZWQ3ODdlMjEwYTdj
ODI3Nzc2N2RjY2U3MWFmLi4xZTEyYjk1NTU4MDI5MmMwM2E1NzhlZjNmNzhiMTU3ZWQ1ZmVjMzJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEF0dGFjaG1lbnRJ
bmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRBdHRhY2htZW50SW5m
by5oCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogc3RydWN0IFByb21p
c2VkQXR0YWNobWVudEluZm8gewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC0z
OCw3ICszOCw3IEBAIHN0cnVjdCBQcm9taXNlZEF0dGFjaG1lbnRJbmZvIHsKICNlbmRpZgogCiAg
ICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwotICAgIFZlY3RvcjxSZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+IGFkZGl0aW9uYWxEYXRhOworICAgIFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CiAKICAgICBvcGVyYXRvciBib29sKCkgY29u
c3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA2
ZjUzMGQxMzI5YmJmY2UxNmE5ZGE3YWQwMTU4OWNhNTJlZDMwN2ExLi5kMzk2MTU2ODg0YjRiNzll
M2U1NWQ1NjkxZDcxOGM4ODc1ZmY5ZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHAKQEAgLTM3LDY5ICszNyw2OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkKK1JlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKQogewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcik7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQorUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIoZGF0YSwgc2l6ZSkpOwogfQogCi1SZWY8U2hhcmVkQnVmZmVy
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBl
ZEZpbGVEYXRhKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNyZWF0ZShGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIG1hcHBlZEZpbGVEYXRh
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBl
ZEZpbGVEYXRhKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIoV1RGTW92ZShtYXBwZWRGaWxlRGF0YSkpKTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpKTsKIH0KIAotUmVm
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVj
dG9yKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZSh2ZWN0b3IpKSk7CiB9CiAKLVJl
ZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRl
ciYmIHByb3ZpZGVyKQorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShEYXRhU2VnbWVudDo6UHJvdmlkZXImJiBwcm92aWRlcikKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShwcm92aWRlcikpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFdURk1vdmUo
cHJvdmlkZXIpKSk7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKCkgPSBkZWZhdWx0
OworRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcigpID0gZGVm
YXVsdDsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmls
ZURhdGEmJiBmaWxlRGF0YSkKK0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKICAgICA6IG1f
c2l6ZShmaWxlRGF0YS5zaXplKCkpCiB7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBEYXRh
U2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKSB9KTsKIH0KIAotU2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYgcHJvdmlkZXIpCitGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92
aWRlciYmIHByb3ZpZGVyKQogICAgIDogbV9zaXplKHByb3ZpZGVyLnNpemUoKSkKIHsKICAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShwcm92aWRl
cikpIH0pOwogfQogCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGFwcGVuZChX
VEZNb3ZlKGJ1ZmZlcikpOwogfQogCiAjaWYgVVNFKEdTVFJFQU1FUikKLVJlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZm
ZXIpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKG1hcHBlZEJ1ZmZlcikpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIobWFwcGVkQnVmZmVyKSk7CiB9CiAK
LVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRC
dWZmZXIpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKEdz
dE1hcHBlZE93bmVkQnVmZmVyJiBtYXBwZWRCdWZmZXIpCiAgICAgOiBtX3NpemUobWFwcGVkQnVm
ZmVyLnNpemUoKSkKIHsKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIERhdGFTZWdtZW50Ojpj
cmVhdGUoJm1hcHBlZEJ1ZmZlcikgfSk7CiB9CiAjZW5kaWYKIAotc3RhdGljIFZlY3Rvcjx1aW50
OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRW
ZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gY29t
YmluZVNlZ21lbnRzRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBj
b21iaW5lZERhdGE7CiAgICAgY29tYmluZWREYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6
ZSk7CkBAIC0xMDksMTkgKzEwOSwxOSBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVT
ZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3RvcgogICAgIHJl
dHVybiBjb21iaW5lZERhdGE7CiB9CiAKLVJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFy
ZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzKCkgY29uc3QKK1JlZjxTaGFyZWRCdWZmZXI+IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6Om1ha2VDb250aWd1b3VzKCkgY29uc3QKIHsKICAgICBpZiAobV9j
b250aWd1b3VzKQotICAgICAgICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0PENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXIqPihjb25zdF9jYXN0PFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSB9OworICAgICAg
ICByZXR1cm4gUmVmIHsgKnN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGNvbnN0X2Nhc3Q8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcio+KHRoaXMpKSB9OwogICAgIGlmICghbV9zZWdtZW50cy5zaXpl
KCkpCi0gICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAg
ICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAgICAgaWYgKG1fc2VnbWVudHMu
c2l6ZSgpID09IDEpCi0gICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGUobV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSk7CisgICAgICAgIHJldHVybiBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShtX3NlZ21lbnRzWzBdLnNlZ21lbnQuY29weVJlZigpKTsKICAgICBh
dXRvIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9zaXpl
KTsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29t
YmluZWREYXRhKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoY29t
YmluZWREYXRhKSk7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OmNvcHlEYXRh
KCkgY29uc3QKK1ZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5RGF0
YSgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0YS5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KHNpemUoKSk7CkBAIC0xMzEsNyArMTMxLDcgQEAgVmVjdG9yPHVpbnQ4
X3Q+IFNoYXJlZEJ1ZmZlcjo6Y29weURhdGEoKSBjb25zdAogICAgIHJldHVybiBkYXRhOwogfQog
Ci1WZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCitWZWN0b3I8dWludDhf
dD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKQogewogICAgIGlmIChtX3NlZ21l
bnRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTE0NiwxMyArMTQ2LDEzIEBA
IFZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkKICAgICByZXR1cm4gY29t
YmluZWREYXRhOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRCdWZmZXI6OmdldFNv
bWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKIHsK
ICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBlbGVtZW50ID0gZ2V0U2VnbWVudEZv
clBvc2l0aW9uKHBvc2l0aW9uKTsKICAgICByZXR1cm4geyBlbGVtZW50LT5zZWdtZW50LmNvcHlS
ZWYoKSwgcG9zaXRpb24gLSBlbGVtZW50LT5iZWdpblBvc2l0aW9uIH07CiB9CiAKLWNvbnN0IFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogU2hhcmVkQnVmZmVyOjpnZXRTZWdt
ZW50Rm9yUG9zaXRpb24oc2l6ZV90IHBvc2l0aW9uKSBjb25zdAorY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSogRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6Z2V0U2VnbWVudEZvclBvc2l0aW9uKHNpemVfdCBwb3NpdGlvbikgY29uc3QKIHsKICAgICBS
RUxFQVNFX0FTU0VSVChwb3NpdGlvbiA8IG1fc2l6ZSk7CiAgICAgYXV0byBjb21wYXJhdG9yID0g
W10oY29uc3Qgc2l6ZV90JiBwb3NpdGlvbiwgY29uc3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSYg
ZW50cnkpIHsKQEAgLTE2Myw3ICsxNjMsNyBAQCBjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50VmVjdG9yRW50cnkqIFNoYXJlZEJ1ZmZlcjo6Z2V0U2VnbWVudEZvclBvc2l0aW9uKAogICAg
IHJldHVybiBlbGVtZW50OwogfQogCi1TdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygp
IGNvbnN0CitTdHJpbmcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dG9IZXhTdHJpbmcoKSBjb25z
dAogewogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBmb3JFYWNoU2VnbWVu
dChbJl0oYXV0byYgc2VnbWVudCkgewpAQCAtMTczLDcgKzE3Myw3IEBAIFN0cmluZyBTaGFyZWRC
dWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0
cmluZygpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6dHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKSBjb25zdAorUmVmUHRyPEFycmF5QnVmZmVyPiBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7CiAgICAgYXV0byBhcnJheUJ1
ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzaXplKCkpLCAxKTsKICAgICBpZiAoIWFycmF5QnVmZmVyKSB7CkBAIC0xOTIsNyAr
MTkyLDcgQEAgUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZmZXI6OnRyeUNyZWF0ZUFycmF5
QnVmZmVyKCkgY29uc3QKICAgICByZXR1cm4gYXJyYXlCdWZmZXI7CiB9CiAKLXZvaWQgU2hhcmVk
QnVmZmVyOjphcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQordm9pZCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKICAgICBBU1NFUlQoIW1fY29udGlndW91cyk7CiAgICAgbV9zZWdtZW50cy5yZXNlcnZlQ2Fw
YWNpdHkobV9zZWdtZW50cy5zaXplKCkgKyBkYXRhLm1fc2VnbWVudHMuc2l6ZSgpKTsKQEAgLTIw
Myw3ICsyMDMsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3RlbnQoKSk7CiB9CiAKLXZvaWQg
U2hhcmVkQnVmZmVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkK
K3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIFZlY3Rv
cjx1aW50OF90PiB2ZWN0b3I7CkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6
OmFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogICAgIEFTU0VSVChp
bnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChW
ZWN0b3I8dWludDhfdD4mJiBkYXRhKQordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBl
bmQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKICAgICBBU1NFUlQoIW1fY29udGlndW91cyk7
CiAgICAgYXV0byBkYXRhU2l6ZSA9IGRhdGEuc2l6ZSgpOwpAQCAtMjIyLDE2ICsyMjIsMTYgQEAg
dm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogICAgIEFT
U0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNs
ZWFyKCkKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogewogICAgIG1fc2l6
ZSA9IDA7CiAgICAgbV9zZWdtZW50cy5jbGVhcigpOwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29u
c2lzdGVudCgpKTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkg
Y29uc3QKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Ojpjb3B5KCkgY29uc3QKIHsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjbG9uZSA9IGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKTsKKyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY2xv
bmUgPSBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOwogICAgIGNsb25lLT5t
X3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDog
bV9zZWdtZW50cykKQEAgLTI0MSwxNCArMjQxLDE0IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJl
ZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiAgICAgcmV0dXJuIGNsb25lOwogfQogCi12b2lkIFNoYXJl
ZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNv
bnN0IHVpbnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKK3ZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVp
bnQ4X3Q+Jik+JiBhcHBseSkgY29uc3QKIHsKICAgICBhdXRvIHNlZ21lbnRzID0gbV9zZWdtZW50
czsKICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBzZWdtZW50cykKICAgICAgICAgYXBwbHkoU3Bh
biB7IHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSB9KTsK
IH0KIAotYm9vbCBTaGFyZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50
OF90PiYgcHJlZml4KSBjb25zdAorYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpzdGFydHNX
aXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKIHsKICAgICBpZiAo
cHJlZml4LmVtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjcwLDcgKzI3MCw3IEBA
IGJvb2wgU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4m
IHByZWZpeCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBT
aGFyZWRCdWZmZXI6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCkgY29uc3QKK1Zl
Y3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAg
aWYgKG9mZnNldCA+PSBzaXplKCkpCkBAIC0yOTcsMTIgKzI5NywxMiBAQCBWZWN0b3I8dWludDhf
dD4gU2hhcmVkQnVmZmVyOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0
CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLXZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCog
ZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3QKIHsK
ICAgICByZXR1cm4gY29weVRvKGRlc3RpbmF0aW9uLCAwLCBsZW5ndGgpOwogfQogCi12b2lkIFNo
YXJlZEJ1ZmZlcjo6Y29weVRvKHZvaWQqIGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXpl
X3QgbGVuZ3RoKSBjb25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9p
ZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGxlbmd0aCArIG9mZnNldCA8PSBzaXplKCkpOwogICAgIGlmIChvZmZzZXQgPj0g
c2l6ZSgpKQpAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9p
ZCogZGVzdGluYXRpb24sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNvbnN0CiB9CiAK
ICNpZiBBU1NFUlRfRU5BQkxFRAotYm9vbCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0
ZW50KCkgY29uc3QKK2Jvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNp
c3RlbnQoKSBjb25zdAogewogICAgIHNpemVfdCBwb3NpdGlvbiA9IDA7CiAgICAgZm9yIChjb25z
dCBhdXRvJiBlbGVtZW50IDogbV9zZWdtZW50cykgewpAQCAtMzU0LDEyICszNTQsMTIgQEAgYm9v
bCBTaGFyZWRCdWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKICNlbmRpZiAvLyBB
U1NFUlRfRU5BQkxFRAogCiAjaWYgIVVTRShDRikKLXZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVt
b3J5Tm90TmVlZGVkU29vbigpIGNvbnN0Cit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6Omhp
bnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3QKIHsKIH0KICNlbmRpZgogCi1ib29sIFNoYXJl
ZEJ1ZmZlcjo6b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAorYm9v
bCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpvcGVyYXRvcj09KGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIG90aGVyKSBjb25zdAogewogICAgIGlmICh0aGlzID09ICZvdGhlcikKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC00MDgsMTkgKzQwOCwxOSBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6
b3BlcmF0b3I9PShjb25zdCBTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdAogICAgIHJldHVybiB0
cnVlOwogfQogCi1Db250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
KCkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKCkKIHsKICAgICBtX2NvbnRpZ3VvdXMgPSB0
cnVlOwogfQogCi1Db250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
UmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCiB7CiAgICAgbV9zaXplID0gc2VnbWVudC0+c2l6
ZSgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsKICAg
ICBtX2NvbnRpZ3VvdXMgPSB0cnVlOwogfQogCi1Db250aWd1b3VzU2hhcmVkQnVmZmVyOjpDb250
aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgY29udGlndW91c0J1ZmZlcikK
K1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGNvbnRpZ3VvdXNCdWZmZXIpCiB7CiAgICAgQVNTRVJUKGNvbnRpZ3VvdXNCdWZmZXItPmhhc09u
ZVNlZ21lbnQoKSB8fCBjb250aWd1b3VzQnVmZmVyLT5pc0VtcHR5KCkpOwogICAgIG1fc2l6ZSA9
IGNvbnRpZ3VvdXNCdWZmZXItPnNpemUoKTsKQEAgLTQyOSwzNiArNDI5LDM2IEBAIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBjb250aWd1b3VzQnVmCiAgICAgbV9jb250aWd1b3VzID0gdHJ1ZTsKIH0KIAotQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSYmIGRhdGEpCi0gICAgOiBTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKK1NoYXJl
ZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkK
KyAgICA6IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoV1RGTW92ZShkYXRhKSkKIHsKICAgICBtX2Nv
bnRpZ3VvdXMgPSB0cnVlOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBN
YXlVc2VGaWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKK1JlZlB0cjxTaGFyZWRCdWZmZXI+
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgsIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlIG1hcHBlZEZpbGVNb2RlLCBNYXlVc2VG
aWxlTWFwcGluZyBtYXlVc2VGaWxlTWFwcGluZykKIHsKICAgICBpZiAobWF5VXNlRmlsZU1hcHBp
bmcgPT0gTWF5VXNlRmlsZU1hcHBpbmc6OlllcykgewogICAgICAgICBib29sIG1hcHBpbmdTdWNj
ZXNzOwogICAgICAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShm
aWxlUGF0aCwgbWFwcGVkRmlsZU1vZGUsIG1hcHBpbmdTdWNjZXNzKTsKICAgICAgICAgaWYgKG1h
cHBpbmdTdWNjZXNzKQotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyKFdURk1vdmUobWFwcGVkRmlsZURhdGEpKSk7CisgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwog
ICAgIH0KIAogICAgIGF1dG8gYnVmZmVyID0gRmlsZVN5c3RlbTo6cmVhZEVudGlyZUZpbGUoZmls
ZVBhdGgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqYnVmZmVyKSk7
CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKmJ1ZmZlcikpOwogfQog
Ci1jb25zdCB1aW50OF90KiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKK2Nv
bnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fc2Vn
bWVudHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gbV9z
ZWdtZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CiB9CiAKLVdURjo6UGVyc2lzdGVuY2U6OkRlY29k
ZXIgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CitXVEY6OlBlcnNpc3Rl
bmNlOjpEZWNvZGVyIFNoYXJlZEJ1ZmZlcjo6ZGVjb2RlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHsgeyBkYXRhKCksIHNpemUoKSB9IH07CiB9CkBAIC01NDMsMTQgKzU0MywxNCBAQCBzaXplX3Qg
RGF0YVNlZ21lbnQ6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBzdGQ6OnZpc2l0KHZpc2l0b3Is
IG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKLVNoYXJlZEJ1ZmZlckJ1aWxkZXI6OlNoYXJlZEJ1ZmZl
ckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCitTaGFyZWRCdWZmZXJCdWls
ZGVyOjpTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogICAgIGluaXRp
YWxpemUoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogfQogCi1TaGFyZWRCdWZmZXJCdWlsZGVy
JiBTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRvcj0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCitTaGFyZWRCdWZmZXJCdWlsZGVyJiBTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRv
cj0oUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlmICgh
YnVmZmVyKSB7CiAgICAgICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKQEAgLTU2MSw3ICs1NjEsNyBA
QCBTaGFyZWRCdWZmZXJCdWlsZGVyJiBTaGFyZWRCdWZmZXJCdWlsZGVyOjpvcGVyYXRvcj0oUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZQogICAgIHJldHVybiAqdGhpczsKIH0KIAotdm9pZCBT
aGFyZWRCdWZmZXJCdWlsZGVyOjppbml0aWFsaXplKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQordm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVyOjppbml0aWFsaXplKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoIW1fYnVmZmVyKTsKICAgICAvLyBX
ZSBkbyBub3Qgd2FudCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZSBTaGFyZWRCdWZmZXIgYXMg
YWxsIFNoYXJlZEJ1ZmZlciBzaG91bGQgYmUgaW1tdXRhYmxlCkBAIC01NzMsMTIgKzU3MywxNyBA
QCB2b2lkIFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmluaXRpYWxpemUoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCiAgICAgYXBwZW5kKGJ1ZmZlcik7CiB9CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlckJ1aWxkZXI6OnRha2UoKQorUmVmUHRyPEFycmF5QnVmZmVyPiBTaGFyZWRCdWZm
ZXJCdWlsZGVyOjp0cnlDcmVhdGVBcnJheUJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
YnVmZmVyID8gbV9idWZmZXIucmVsZWFzZU5vbk51bGwoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisgICAgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVy
KCkgOiBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxwdHIsIDApOwogfQogCi1SZWY8Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZUFzQ29udGlndW91cygp
CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZSgp
Cit7CisgICAgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXIucmVsZWFzZU5vbk51bGwoKSA6IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworfQorCitSZWY8U2hhcmVkQnVmZmVyPiBT
aGFyZWRCdWZmZXJCdWlsZGVyOjp0YWtlQXNDb250aWd1b3VzKCkKIHsKICAgICByZXR1cm4gdGFr
ZSgpLT5tYWtlQ29udGlndW91cygpOwogfQpAQCAtNTkzLDcgKzU5OCw3IEBAIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gU2hhcmVkQnVmZmVyQnVpbGRlcjo6dGFrZUFzQXJyYXlCdWZmZXIoKQogdm9pZCBT
aGFyZWRCdWZmZXJCdWlsZGVyOjplbnN1cmVCdWZmZXIoKQogewogICAgIGlmICghbV9idWZmZXIp
Ci0gICAgICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKKyAgICAgICAgbV9i
dWZmZXIgPSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKIH0KIAogU2hhcmVkQnVm
ZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVudD4mJiBzZWdt
ZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
c2l6ZSkKQEAgLTYxMCwxNiArNjE1LDE2IEBAIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRC
dWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYgb3RoZXIsIHNpCiB7CiB9
CiAKLVJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6Y3Jl
YXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlckRh
dGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewogICAgIGNvbnN0IFJlZjxEYXRh
U2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdtZW50
LCBkYXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCiAgICAgICAgIFtzaXplID0gc2l6
ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KICAgICB9KTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitSZWZQdHI8U2hh
cmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIC8vIEFs
bG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwgdGhlIGNoYXJhY3RlcnMuCiAg
ICAgY29uc3Qgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTY0NSw3ICs2NTAs
NyBAQCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdXRmOEJ1ZmZlcihjb25zdCBTdHJp
bmcmIHN0cmluZykKICAgICB9CiAKICAgICBidWZmZXIuc2hyaW5rKHAgLSByZWludGVycHJldF9j
YXN0PGNoYXIqPihidWZmZXIuZGF0YSgpKSk7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDc2MGViNzhhMTg2NmZlZDIz
YjMwNDNjZDVlMTRhZDVjZWRkZTQ3MjYuLmMyN2M5MjY5ZmZlZjI0OWFiNWU4YWJhMjRkNzYyZmM0
MGMxYzIzMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC02Myw3
ICs2Myw3IEBAIGNsYXNzIERlY29kZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3OwogCiAvLyBEYXRhIHdyYXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91
bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2Jq
ZWN0cy4KQEAgLTEzMSw1NyArMTMxLDU1IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICAgICAgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEsCiAgICAgICAgIFByb3ZpZGVyPiBtX2ltbXV0YWJsZURh
dGE7Ci0gICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAgICBmcmllbmQgY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsgLy8gRm9yIGNyZWF0ZUNGRGF0YQorICAgIGZyaWVuZCBjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7
IC8vIEZvciBjcmVhdGVDRkRhdGEKIH07CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlciA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRCdWZmZXI+IHsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVm
ZmVyPiBjcmVhdGUoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZl
cj4gY3JlYXRlKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwotICAgIHN0YXRpYyBSZWY8U2hhcmVk
QnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGNy
ZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSk7IH0KLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEZpbGVTeXN0
ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hh
cmVkQnVmZmVyPiBjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoVmVjdG9yPHVpbnQ4
X3Q+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVh
dGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUoY29uc3QgdWludDhfdCos
IHNpemVfdCk7CisgICAgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjcmVhdGUo
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpIHsgcmV0dXJuIGNyZWF0ZShyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSk7IH0KKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShWZWN0b3I8
dWludDhfdD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyJiYpOwogCiAjaWYgVVNFKEZP
VU5EQVRJT04pCiAgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5T
RGF0YUFycmF5KCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShOU0RhdGEqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNyZWF0ZShOU0RhdGEqKTsKICNlbmRpZgogI2lmIFVTRShD
RikKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKENG
RGF0YVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBjcmVhdGUoQ0ZEYXRhUmVmKTsKICNlbmRpZgogCiAjaWYgVVNFKEdMSUIpCi0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZShHQnl0ZXMqKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGNy
ZWF0ZShHQnl0ZXMqKTsKICNlbmRpZgogCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlKEdzdE1hcHBlZE93bmVkQnVm
ZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBjcmVhdGUoR3N0TWFwcGVkT3duZWRCdWZmZXImKTsKICNlbmRpZgogICAgIFdFQkNPUkVf
RVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb3B5RGF0YSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIFZlY3Rvcjx1aW50OF90PiByZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpIGNv
bnN0OwogCi0gICAgLy8gU2ltaWxhciB0byBjb3B5RGF0YSgpIGJ1dCBhdm9pZHMgY29weWluZyBh
bmQgd2lsbCB0YWtlIHRoZSBkYXRhIGluc3RlYWQgd2hlbiBpdCBpcyBzYWZlIChUaGUgU2hhcmVk
QnVmZmVyIGlzIG5vdCBzaGFyZWQpLgorICAgIC8vIFNpbWlsYXIgdG8gY29weURhdGEoKSBidXQg
YXZvaWRzIGNvcHlpbmcgYW5kIHdpbGwgdGFrZSB0aGUgZGF0YSBpbnN0ZWFkIHdoZW4gaXQgaXMg
c2FmZSAoVGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgaXMgbm90IHNoYXJlZCkuCiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGV4dHJhY3REYXRhKCk7CiAKLSAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVm
ZmVyIGFuZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0Ci0gICAg
Ly8gQXJyYXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBm
bGF0IGJ1ZmZlci4KICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QXJyYXlCdWZmZXI+IHRyeUNy
ZWF0ZUFycmF5QnVmZmVyKCkgY29uc3Q7CiAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7
IH0KICAgICBib29sIGlzQ29udGlndW91cygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGlndW91czsg
fQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjb3B5KCkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNp
emVfdCBsZW5ndGgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29weVRvKHZvaWQq
IGRlc3RpbmF0aW9uLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChj
b25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7
CiAKLSAgICB1c2luZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBr
ZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50CisgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJDb3JlOjpEYXRhU2VnbWVudDsgLy8g
VG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4gdXNpbmcgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjo6RGF0YVNlZ21lbnQKIAogICAgIHN0cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5
IHsKICAgICAgICAgc2l6ZV90IGJlZ2luUG9zaXRpb247CkBAIC0xOTksMzggKzE5NywzOCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkQnVmZmVyJikgY29u
c3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZEJ1ZmZlciYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Q7CisgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIG90aGVyKSBjb25zdCB7
IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBtYWtlQ29udGlndW91cygpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IG1ha2VDb250aWd1b3VzKCkgY29uc3Q7CiAKIHBy
b3RlY3RlZDoKLSAgICBmcmllbmQgY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKKyAgICBm
cmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwogCiAgICAgRGF0YVNlZ21lbnRWZWN0b3IgbV9zZWdt
ZW50czsKICAgICBib29sIG1fY29udGlndW91cyB7IGZhbHNlIH07CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBTaGFyZWRCdWZmZXIoKTsKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgYXBwZW5kKGRhdGEsIHNpemUpOyB9Ci0gICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKSB7IGFwcGVu
ZChkYXRhLCBzaXplKTsgfQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8dWludDhf
dD4mJiBkYXRhKSB7IGFwcGVuZChXVEZNb3ZlKGRhdGEpKTsgfQotICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRGF0YVNlZ21lbnQ6OlByb3Zp
ZGVyJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcigpOworICAgIGV4cGxpY2l0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsgYXBwZW5kKGRhdGEsIHNpemUpOyB9CisgICAg
ZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
c2l6ZSkgeyBhcHBlbmQoZGF0YSwgc2l6ZSk7IH0KKyAgICBleHBsaWNpdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIHsgYXBwZW5kKFdURk1vdmUoZGF0YSkp
OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihG
aWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKERhdGFTZWdtZW50OjpQcm92aWRlciYmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYpOwogI2lmIFVTRShDRikKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFy
ZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5kaWYKICNpZiBVU0UoR0xJQikKLSAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CisgICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihHQnl0ZXMqKTsKICNlbmRp
ZgogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKEdzdE1hcHBlZE93bmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcihHc3RNYXBwZWRPd25lZEJ1ZmZlciYpOwogI2VuZGlm
CiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
U2hhcmVkQnVmZmVyQnVpbGRlcjsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25z
dCBTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQo
Y29uc3QgdWludDhfdCosIHNpemVfdCk7CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCkgeyBhcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oZGF0YSksIGxlbmd0aCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChWZWN0
b3I8dWludDhfdD4mJik7CkBAIC0yNDMsNyArMjQxLDcgQEAgcHJpdmF0ZToKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKIAotICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVu
dHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0
aGUgU2hhcmVkQnVmZmVyLgorICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBh
IFZlY3RvciBhbmQgcmV0dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlci4KICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gdGFr
ZURhdGEoKTsKICAgICBjb25zdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5KiBnZXRTZWdtZW50Rm9y
UG9zaXRpb24oc2l6ZV90IHBvc2l0aXRpb24pIGNvbnN0OwogCkBAIC0yNTIsMjAgKzI1MCwyMCBA
QCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi0vLyBBIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIgaXMg
YSBTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGlyZWN0bHkgYWNjZXNzIGl0cyBjb250ZW50
IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhvZHMuCi1jbGFzcyBDb250aWd1b3VzU2hh
cmVkQnVmZmVyIDogcHVibGljIFNoYXJlZEJ1ZmZlciB7CisvLyBBIFNoYXJlZEJ1ZmZlciBpcyBh
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgdGhhdCBhbGxvd3MgdG8gZGlyZWN0bHkgYWNjZXNzIGl0
cyBjb250ZW50IHZpYSB0aGUgZGF0YSgpIGFuZCByZWxhdGVkIG1ldGhvZHMuCitjbGFzcyBTaGFy
ZWRCdWZmZXIgOiBwdWJsaWMgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgc3RhdGljIFJlZjxDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiBjcmVhdGUoQXJncyYmLi4uIGFyZ3MpCisgICAgc3RhdGljIFJlZjxTaGFyZWRC
dWZmZXI+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKICAgICB7CiAgICAgICAgIGlmIGNvbnN0ZXhw
ciAoIXNpemVvZi4uLihBcmdzKSkKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXIoKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoKSk7CiAgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4o
QXJncykgPT0gMQogICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxEYXRh
U2VnbWVudD4+ICYmLi4uKSkKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoc3RkOjpmb3J3YXJkPEFyZ3M+
KGFyZ3MpLi4uKSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgYXV0byBidWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udGlndW91c1NoYXJlZEJ1ZmZlcihXVEZNb3Zl
KGJ1ZmZlcikpKTsKKyAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTI3NCw3ICsyNzIsNyBAQCBwdWJsaWM6CiAgICAgV1RGOjpQZXJz
aXN0ZW5jZTo6RGVjb2RlciBkZWNvZGVyKCkgY29uc3Q7CiAKICAgICBlbnVtIGNsYXNzIE1heVVz
ZUZpbGVNYXBwaW5nIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVNb2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5
VXNlRmlsZU1hcHBpbmc6Olllcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoLCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlTW9kZSA9IEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVN
b2RlOjpTaGFyZWQsIE1heVVzZUZpbGVNYXBwaW5nID0gTWF5VXNlRmlsZU1hcHBpbmc6Olllcyk7
CiAKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNE
YXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKQEAgLTI4NywxMiArMjg1LDEyIEBAIHB1YmxpYzoK
ICNlbmRpZgogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXIoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlcigpOworICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPERhdGFT
ZWdtZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KTsKIH07CiAKIGNsYXNzIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgewpAQCAtMzAwLDE1ICsyOTgsMTgg
QEAgY2xhc3MgU2hhcmVkQnVmZmVyQnVpbGRlciB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVmZmVy
QnVpbGRlcigpID0gZGVmYXVsdDsKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKFNoYXJlZEJ1ZmZl
ckJ1aWxkZXImJikgPSBkZWZhdWx0OwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJik7CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgaW5pdGlhbGl6ZShXVEZNb3ZlKGJ1ZmZlcikpOyB9
CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKKyAgICAgICAgOiBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPnsgV1RGTW92ZShidWZmZXIpIH0pIHsgfQogICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgaW5pdGlhbGl6ZShX
VEZNb3ZlKGJ1ZmZlcikpOyB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJncz4KICAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyKHN0ZDo6aW5fcGxhY2VfdCwgQXJncyYmLi4uIGFyZ3MpCi0g
ICAgICAgIDogbV9idWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+
KGFyZ3MpLi4uKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpIHsgfQogCiAgICAgU2hhcmVk
QnVmZmVyQnVpbGRlciYgb3BlcmF0b3I9KFNoYXJlZEJ1ZmZlckJ1aWxkZXImJikgPSBkZWZhdWx0
OwotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckJ1aWxkZXImIG9wZXJhdG9yPShSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJCdWls
ZGVyJiBvcGVyYXRvcj0oUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogCiAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3M+CiAgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFy
Z3MpCkBAIC0zMjQsMTIgKzMyNSwxNCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CiAKICAgICB2b2lk
IHJlc2V0KCkgeyBtX2J1ZmZlciA9IG51bGxwdHI7IH0KLSAgICB2b2lkIGVtcHR5KCkgeyBtX2J1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7IH0KKyAgICB2b2lkIGVtcHR5KCkgeyBtX2J1
ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9CisKKyAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0K
KyAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyID8gbV9idWZmZXItPmNvcHkoKSA6IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0
ZSgpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGVB
cnJheUJ1ZmZlcigpIGNvbnN0OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0KCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29u
c3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+Y29weSgpIDogU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IHRha2UoKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gdGFrZUFzQ29u
dGlndW91cygpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiB0YWtlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gdGFrZUFzQ29u
dGlndW91cygpOwogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdGFrZUFz
QXJyYXlCdWZmZXIoKTsKIAogcHJpdmF0ZToKQEAgLTM0MiwxMiArMzQ1LDEyIEBAIHByaXZhdGU6
CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlcihjb25zdCBTaGFyZWRCdWZmZXJCdWlsZGVyJikgPSBk
ZWZhdWx0OwogICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXImIG9wZXJhdG9yPShjb25zdCBTaGFyZWRC
dWZmZXJCdWlsZGVyJikgPSBkZWZhdWx0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0
aWFsaXplKFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5p
dGlhbGl6ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBlbnN1cmVCdWZmZXIoKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2J1ZmZl
cjsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwogCi1p
bmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQoraW5saW5l
IFZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0YSgpCiB7
CiAgICAgaWYgKGhhc09uZVJlZigpKQogICAgICAgICByZXR1cm4gdGFrZURhdGEoKTsKQEAgLTM2
Miw3ICszNjUsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7IH0KICAg
ICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIFJlZjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0
OwogI2lmIFVTRShGT1VOREFUSU9OKQogICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0Rh
dGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlmCkBAIC0zNzIsNiArMzc1LDYgQEAgcHJp
dmF0ZToKICAgICBjb25zdCBzaXplX3QgbV9zaXplOwogfTsKIAotUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+IHV0ZjhCdWZmZXIoY29uc3QgU3RyaW5nJik7CitSZWZQdHI8U2hhcmVkQnVm
ZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1Jl
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRl
ci5jcHAKaW5kZXggY2RiNmU3MDM0MDRkNDI2ZGQyMWI0NzlmYTg5YzBkYTliOGM0OWY4ZS4uOWQw
NTVjZTI3ZDg4YzNkNjJlNWJkMWNkNDZhZDkxZjVjYzQzMWY0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcApAQCAtMzYsNyAr
MzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoTUhUTUwpCiAKLVNoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIq
IGJ1ZmZlciwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpCitTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
YnVmZmVyLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcikKICAgICA6IG1faXRlcmF0b3JD
dXJyZW50KGJ1ZmZlci0+YmVnaW4oKSkKICAgICAsIG1faXRlcmF0b3JFbmQoYnVmZmVyLT5lbmQo
KSkKICAgICAsIG1fc2VnbWVudChtX2l0ZXJhdG9yQ3VycmVudCAhPSBtX2l0ZXJhdG9yRW5kID8g
bV9pdGVyYXRvckN1cnJlbnQtPnNlZ21lbnQtPmRhdGEoKSA6IG51bGxwdHIpCkBAIC00NCw3ICs0
NCw3IEBAIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihT
aGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgVmVjCiB7CiB9CiAKLVNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29u
c3QgY2hhciogc2VwYXJhdG9yKQorU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgY2hhciog
c2VwYXJhdG9yKQogICAgIDogbV9pdGVyYXRvckN1cnJlbnQoYnVmZmVyLT5iZWdpbigpKQogICAg
ICwgbV9pdGVyYXRvckVuZChidWZmZXItPmVuZCgpKQogICAgICwgbV9zZWdtZW50KG1faXRlcmF0
b3JDdXJyZW50ICE9IG1faXRlcmF0b3JFbmQgPyBtX2l0ZXJhdG9yQ3VycmVudC0+c2VnbWVudC0+
ZGF0YSgpIDogbnVsbHB0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlckNodW5rUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRC
dWZmZXJDaHVua1JlYWRlci5oCmluZGV4IDVkNGU2ZmVlNTgyYzY2MTZmZDA3ZTM5OTRmZjc1Yzhm
MDdhMmZjZTEuLjFjNjQwOGQ0YzczNmExYzRhNDVjZWU3YjNmNjk2NTdiYzlhMjYxNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaApA
QCAtNDEsOCArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQkNPUkVfRVhQ
T1JUIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIHsKIHB1YmxpYzoKLSAgICBTaGFyZWRCdWZmZXJD
aHVua1JlYWRlcihTaGFyZWRCdWZmZXIqLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHNlcGFyYXRvcik7
Ci0gICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoU2hhcmVkQnVmZmVyKiwgY29uc3QgY2hhciog
c2VwYXJhdG9yKTsKKyAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpOworICAgIFNoYXJlZEJ1ZmZl
ckNodW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBjaGFyKiBzZXBhcmF0
b3IpOwogCiAgICAgdm9pZCBzZXRTZXBhcmF0b3IoY29uc3QgVmVjdG9yPGNoYXI+Jik7CiAgICAg
dm9pZCBzZXRTZXBhcmF0b3IoY29uc3QgY2hhciopOwpAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6
CiAgICAgc2l6ZV90IHBlZWsoVmVjdG9yPHVpbnQ4X3Q+Jiwgc2l6ZV90KTsKIAogcHJpdmF0ZToK
LSAgICBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0
ZXJhdG9yQ3VycmVudDsKLSAgICBjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9y
Ojpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yRW5kOworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OkRhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtX2l0ZXJhdG9yQ3VycmVudDsK
KyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudFZlY3Rvcjo6Y29u
c3RfaXRlcmF0b3IgbV9pdGVyYXRvckVuZDsKICAgICBjb25zdCB1aW50OF90KiBtX3NlZ21lbnQg
eyBudWxscHRyIH07CiAgICAgc2l6ZV90IG1fc2VnbWVudEluZGV4IHsgMCB9OwogICAgIFZlY3Rv
cjxjaGFyPiBtX3NlcGFyYXRvciB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1N0YXRpY1Bhc3RlYm9hcmQuY3BwCmluZGV4IDNmN2ZiYTQxYTRhMWVmYjExY2NkZmZkNTcyNjc4
Y2RmZmU1M2QwOTEuLmIyZDdhNTUwZDQ2MGU5NGNkMzE1MTM0YTMxOTViY2Q5MWM3Yjc4OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCkBAIC03Myw3
ICs3Myw3IEBAIHZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIG1fY3VzdG9tRGF0YS53cml0ZVN0cmlu
Zyh0eXBlLCB2YWx1ZSk7CiB9CiAKLXZvaWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVEYXRhKGNv
bnN0IFN0cmluZyYgdHlwZSwgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3Zv
aWQgU3RhdGljUGFzdGVib2FyZDo6d3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIG1fbm9uRGVmYXVsdERhdGFUeXBlcy5hZGQodHlw
ZSk7CiAgICAgbV9jdXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCBXVEZNb3ZlKGRhdGEpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAppbmRleCBhMDM5YzI1MjVl
ZDVmZTYzNTBjY2IwYTFhYTM2NTBkMzE5ODZmNjE5Li5jMDliNmRlMzFmMmVkZWJlMDE4OGRjOWM0
NjZhMjcxZTFiOGI5ZTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0
aWNQYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVi
b2FyZC5oCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgU3Rh
dGljUGFzdGVib2FyZCBmaW5hbCA6IHB1YmxpYyBQYXN0ZWJvYXJkIHsKIHB1YmxpYzoKQEAgLTUy
LDcgKzUyLDcgQEAgcHVibGljOgogICAgIFN0cmluZyByZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNv
bnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CiAKICAgICB2b2lkIHdyaXRlU3RyaW5nKGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKSBmaW5hbDsKLSAgICB2b2lkIHdyaXRlRGF0
YShjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEp
OworICAgIHZvaWQgd3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhKTsKICAgICB2b2lkIHdyaXRlU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKTsKICAgICB2b2lkIGNsZWFyKCkgZmluYWw7CiAg
ICAgdm9pZCBjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKaW5kZXggNjg3OTU5MDBjNWFkZjlj
YzkwNDVlMGVhYmIyMmIxOGZhNjY5NjMxNC4uMWQ2NWJjNDAzYWQ4NTI0M2M2NzI1ZTcwNDQ4ZDZj
ZGFkY2NjY2UxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93
UGxheWluZ0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5
aW5nSW5mby5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBO
b3dQbGF5aW5nSW5mb0FydHdvcmsgewogICAgIFN0cmluZyBzcmM7CiAgICAgU3RyaW5nIG1pbWVU
eXBlOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IE5vd1BsYXlpbmdJbmZvQXJ0d29yayYgb3RoZXIpIGNvbnN0CiAgICAgewpAQCAtNjcsNyAr
NjcsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgc3RkOjpvcHRpb25hbDxOb3dQ
bGF5aW5nSW5mb0FydHdvcms+IE5vd1BsYXlpbmdJbgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
bWltZVR5cGUpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gaW1hZ2VEYXRhOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbWFnZURh
dGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbWFnZURhdGEpKQogICAgICAgICByZXR1cm4g
eyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9B
dWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9BdWRpb0ZpbGVSZWFkZXJDb2NvYS5jcHAKaW5kZXggYzE0OTRlYWIxZjI4NjRlNzczOTUy
NGJlOWRhZjU5MjY1ZWEyMGI5NC4uZDRiYjU3OWYzMDBjNWZlMjFlNGRlMDg0MTEwYTk0NmQ2OTRj
NzNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9GaWxlUmVhZGVyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvRmlsZVJlYWRlckNvY29hLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIGNsYXNz
IEF1ZGlvRmlsZVJlYWRlcldlYk1EYXRhIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IAogcHVibGljOgotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQog
ICAgIFJlZjxBdWRpb1RyYWNrUHJpdmF0ZVdlYk0+IG1fdHJhY2s7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmNwcAppbmRleCA5YjNlY2ExYTE1
NDQ5OGMwZTdlMzRjN2M5MTMzNjk1Y2NkOTQ3ZTdiLi40NDczZWMyOGQwNGM1NDM2MzIzYzA3ZDM3
YmYyYzljZDdkZWQyMTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9L
ZXllZEVuY29kZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRF
bmNvZGVyQ0YuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCB2b2lkIEtleWVkRW5jb2RlckNGOjpl
bmRBcnJheSgpCiAgICAgbV9hcnJheVN0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEtleWVkRW5jb2RlckNGOjpmaW5pc2hFbmNvZGluZygpCitS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXllZEVuY29kZXJDRjo6ZmluaXNoRW5jb2RpbmcoKQogewog
ICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtDRkFsbG9j
YXRvckRlZmF1bHQsIG1fcm9vdERpY3Rpb25hcnkuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEJpbmFy
eUZvcm1hdF92MV8wLCAwLCBudWxscHRyKSk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZ2V0KCkpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L0tleWVkRW5jb2RlckNGLmgKaW5kZXggZmFiNjZmY2JjYThmNDcxOTdlOThkNzliZjAyZWY4MTYx
YTQyNzZhNC4uZjU4NmMwMmJiMTViZjM5YjcyODNmYmE5YWE1ZThhMTI2Yjg0ZmVmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNvZGVyQ0YuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCkBAIC0zNyw3ICszNyw3
IEBAIHB1YmxpYzoKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5h
bDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZp
bmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWlu
dDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9pZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYg
a2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L1NoYXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1
ZmZlckNGLmNwcAppbmRleCA2OGIwODk0Y2M4NTZlZjUyMjcwMzQzNzAyOWIyNmM1YjNkZDU5MjU0
Li4xYmFhM2RlNDExMmMyZjdkZjcyN2E5Mzk2ZWE1OGVlNTNmODA5M2UwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC0zMyw3ICszMyw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZE
YXRhUmVmIGRhdGEpCitGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyKENGRGF0YVJlZiBkYXRhKQogewogICAgIGFwcGVuZChkYXRhKTsKIH0KQEAgLTQxLDcgKzQx
LDcgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmIGRhdGEpCiAvLyBVc2lu
ZyBGb3VuZGF0aW9uIGFsbG93cyBmb3IgYW4gZXZlbiBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRh
dGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAogLy8gc28gb25seSB1c2UgdGhpcyB2ZXJzaW9uIGZvciBu
b24tRm91bmRhdGlvbi4KICNpZiAhVVNFKEZPVU5EQVRJT04pCi1SZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAorUmV0YWluUHRy
PENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogewogICAgIGlm
IChoYXNPbmVTZWdtZW50KCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRhdGEgPSBzdGQ6OmdldF9p
ZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4oJm1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFi
bGVEYXRhKSkKQEAgLTUxLDEyICs1MSwxMiBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogfQogI2VuZGlmCiAKLVJlZjxT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YVJlZiBkYXRhKQorUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShDRkRh
dGFSZWYgZGF0YSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoZGF0
YSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoZGF0
YSkpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6aGludE1lbW9yeU5vdE5lZWRlZFNvb24oKSBj
b25zdAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29v
bigpIGNvbnN0CiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IG1fc2VnbWVudHMpIHsK
ICAgICAgICAgaWYgKGVudHJ5LnNlZ21lbnQtPmhhc09uZVJlZigpKSB7CkBAIC02Niw3ICs2Niw3
IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiAg
ICAgfQogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKENGRGF0YVJlZiBkYXRhKQordm9p
ZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiB7CiAgICAg
QVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwogICAgIGlmIChkYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIuaAppbmRleCAwNzk3ZGZiZThkMDE4YmU2MzYxNzQ0YzU4Zjg5MmRkNTZlZDY4OWM1Li5j
YmU4NzcxYTQ1ZDg2MmNiNWFiMDVlY2EzOTk5MjdlMDc4MzhmNTQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250
ZW50RmlsdGVyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VS
ZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gcmVw
bGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIENvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNSZXF1aXJlZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVu
dEZpbHRlci5tbQppbmRleCA0MjkwZGIxMjhkMDAwYTQwZWVmNzBmZDI5NDFkNjM0NDkwNDZkZTAz
Li4yZWYyNzAxZmU2NzhiZjliOTJkYjIxMmJiZWE1YzkxNWEzZmMzYTJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
ci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlci5tbQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgTmV0d29ya0V4dGVuc2lv
bkNvbnRlbnRGaWx0ZXI6OmZpbmlzaGVkQWRkaW5nRGF0YSgpCiAgICAgc2VtYXBob3JlLndhaXQo
KTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6
OnJlcGxhY2VtZW50RGF0YSgpIGNvbnN0CitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTmV0
d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OnJlcGxhY2VtZW50RGF0YSgpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGRpZEJsb2NrRGF0YSgpKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUobV9yZXBsYWNlbWVudERhdGEuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKaW5k
ZXggMDY4Y2RjYjM4M2Y0MjM2NWFjMzI2NGUyMjlhNmQ2M2JjMmI0YWJkNi4uNjc5YWU5MzI5NTE3
ZTFmMzk0M2JhNTc2MmFjOGY1NmU4NjBjOGMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5o
CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRk
aW5nRGF0YSgpIG92ZXJyaWRlOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0
YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBs
YWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCiAgICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkgY29u
c3Qgb3ZlcnJpZGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KaW5kZXggYjQ2
MWY5NzUzNmRlM2ExNTgxM2E1ODI3Yjg2NzEzOGI5NmQ0ZjM4Yy4uMWM5NjA0NzE2YjQyNjkzZDVl
NDZjMmUyM2U5NDFkYTAwYzgzZTRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KQEAg
LTEwOSw3ICsxMDksNyBAQCB2b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpmaW5p
c2hlZEFkZGluZ0RhdGEoKQogICAgIHVwZGF0ZUZpbHRlclN0YXRlKCk7CiB9CiAKLVJlZjxTaGFy
ZWRCdWZmZXI+IFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEo
KSBjb25zdAorUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFBhcmVudGFsQ29udHJvbHNDb250
ZW50RmlsdGVyOjpyZXBsYWNlbWVudERhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChkaWRCbG9j
a0RhdGEoKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fcmVwbGFjZW1lbnRE
YXRhLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bh
c3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bhc3RlYm9h
cmRDb2NvYS5tbQppbmRleCA2ZjUwZjAzNWFkZmVhYTlkYmFkYjAyYWNhZDhmMDY3Yzc4M2ZjYmU1
Li5iODE3MDgxN2NlYzU5ZTIyZDNjMGU5YTc4ZjE0NmMwMzNlNGMxNjY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXN0ZWJvYXJkQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFzdGVib2FyZENvY29hLm1tCkBAIC00Nyw3ICs0
Nyw3IEBAIHN0YXRpYyBOU0JpdG1hcEltYWdlRmlsZVR5cGUgYml0bWFwUE5HRmlsZVR5cGUoKQog
fQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAotLy8gTWFraW5nIHRoaXMgbm9uLWlubGluZSBz
byB0aGF0IFdlYktpdCAyJ3MgZGVjb2RpbmcgZG9lc24ndCBoYXZlIHRvIGluY2x1ZGUgU2hhcmVk
QnVmZmVyLmguCisvLyBNYWtpbmcgdGhpcyBub24taW5saW5lIHNvIHRoYXQgV2ViS2l0IDIncyBk
ZWNvZGluZyBkb2Vzbid0IGhhdmUgdG8gaW5jbHVkZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLmgu
CiBQYXN0ZWJvYXJkV2ViQ29udGVudDo6UGFzdGVib2FyZFdlYkNvbnRlbnQoKSA9IGRlZmF1bHQ7
CiBQYXN0ZWJvYXJkV2ViQ29udGVudDo6flBhc3RlYm9hcmRXZWJDb250ZW50KCkgPSBkZWZhdWx0
OwogCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBl
c0ZvckxlZ2FjeVVuc2FmZUJpbmRpbmdzKCkKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLXN0YXRp
YyBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BORyhTaGFyZWRCdWZm
ZXImIHRpZmZCdWZmZXIpCitzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gY29udmVydFRJRkZUb1BO
RyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiB0aWZmQnVmZmVyKQogewogICAgIGF1dG8gaW1hZ2Ug
PSBhZG9wdE5TKFtbTlNCaXRtYXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhEYXRhOiB0aWZmQnVm
ZmVyLm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgTlNEYXRh
ICpwbmdEYXRhID0gW2ltYWdlIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOmJpdG1hcFBOR0ZpbGVU
eXBlKCkgcHJvcGVydGllczpAeyB9XTsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHBuZ0RhdGEpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwbmdE
YXRhKTsKIH0KICNlbmRpZgogCkBAIC0zMTYsNyArMzE2LDcgQEAgVmVjdG9yPFN0cmluZz4gUGFz
dGVib2FyZDo6cmVhZFR5cGVzV2l0aFNlY3VyaXR5Q2hlY2soKQogICAgIHJldHVybiBjb2NvYVR5
cGVzOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZDo6cmVh
ZEJ1ZmZlckZvclR5cGVXaXRoU2VjdXJpdHlDaGVjayhjb25zdCBTdHJpbmcmIHR5cGUpCitSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkOjpyZWFkQnVmZmVyRm9yVHlwZVdpdGhTZWN1cml0
eUNoZWNrKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+YnVmZmVyRm9yVHlwZSh0eXBlLCBt
X3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9TaGFyZWRCdWZmZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1NoYXJlZEJ1ZmZlckNvY29hLm1tCmluZGV4IGFkOTZmN2Y1M2EyZGNjMDRk
MjkzMjEwMmVlZDgxOTgwZmJmZDUwMWEuLjY2NDI3ZGZiZjA1ZmQ3MjZhZmQ5OWEzMjljNmFjMTFh
YzllZDdhNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJl
ZEJ1ZmZlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1NoYXJl
ZEJ1ZmZlckNvY29hLm1tCkBAIC04OCwzMCArODgsMzAgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5TRGF0YSAq
ZGF0YSkKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpjcmVhdGUoTlNEYXRhICpkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJl
ZEJ1ZmZlcihicmlkZ2VfY2FzdChkYXRhKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIoYnJpZGdlX2Nhc3QoZGF0YSkpKTsKIH0KIAotdm9pZCBTaGFy
ZWRCdWZmZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmFwcGVuZChOU0RhdGEgKmRhdGEpCiB7CiAgICAgQVNTRVJUKCFtX2NvbnRpZ3VvdXMpOwog
ICAgIHJldHVybiBhcHBlbmQoYnJpZGdlX2Nhc3QoZGF0YSkpOwogfQogCi1SZXRhaW5QdHI8TlNE
YXRhPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAorUmV0YWlu
UHRyPE5TRGF0YT4gU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGEoKSBjb25zdAogewogICAgIHJl
dHVybiBicmlkZ2VfY2FzdChjcmVhdGVDRkRhdGEoKSk7CiB9CiAKLVJldGFpblB0cjxDRkRhdGFS
ZWY+IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CitSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3Jl
YXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKICAgICByZXR1cm4gYnJpZGdlX2Nhc3QobV9zZWdt
ZW50c1swXS5zZWdtZW50LT5jcmVhdGVOU0RhdGEoKSk7CiB9CiAKLVJldGFpblB0cjxOU0FycmF5
PiBTaGFyZWRCdWZmZXI6OmNyZWF0ZU5TRGF0YUFycmF5KCkgY29uc3QKK1JldGFpblB0cjxOU0Fy
cmF5PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGVOU0RhdGFBcnJheSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkobV9zZWdtZW50cywgW10gKGF1dG8mIHNlZ21lbnQp
IHsKICAgICAgICAgcmV0dXJuIHNlZ21lbnQuc2VnbWVudC0+Y3JlYXRlTlNEYXRhKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5j
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2Uu
aAppbmRleCBmYmMyODNmYmMzMzY5YmY4MjdlMzE2OTk0YzRjOTRlMDYzNjNjYjgxLi4yZGU0MTkz
NGRhMTk4NzlkNzVjMGRmOGE4OWU2NGU1OTljMjlhZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKQEAgLTQ2LDcgKzQ2
LDcgQEAgY2xhc3MgTG9nZ2VyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBDRE1JbnN0YW5j
ZVNlc3Npb247CiBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsKIApAQCAtNTQsNyAr
NTQsNyBAQCBjbGFzcyBDRE1JbnN0YW5jZUNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxD
RE1JbnN0YW5jZUNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkNETUluc3RhbmNlQ2xp
ZW50KCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6
YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVk
KGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiB9Owog
CiAvLyBKYXZhU2NyaXB0J3MgaGFuZGxlIHRvIGEgQ0RNSW5zdGFuY2UsIG11c3QgYmUgdXNlZCBm
cm9tIHRoZQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHZpcnR1YWwg
dm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3Rh
dGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlcnZlckNl
cnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRT
dG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPENETUluc3Rh
bmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5k
ZXggMzdjZDA3YzdiZjJkYzc1ZTQxZmQ1YzZjN2RlY2Y0M2UxMDM5ZTExNC4uZDI1OTIyNWJhOWUw
MmE2NGQwY2VjZDYxNTFmZGY5M2Y0ZjI0NjZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKQEAg
LTQzLDE2ICs0MywxNiBAQCBjbGFzcyBMb2dnZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xh
c3MgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPENETUlu
c3RhbmNlU2Vzc2lvbkNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkNETUluc3RhbmNl
U2Vzc2lvbkNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHVzaW5nIEtleVN0YXR1cyA9IENETUtl
eVN0YXR1czsKLSAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBWZWN0b3I8c3RkOjpwYWlyPFJl
ZjxTaGFyZWRCdWZmZXI+LCBLZXlTdGF0dXM+PjsKKyAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3Ig
PSBWZWN0b3I8c3RkOjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgS2V5U3RhdHVz
Pj47CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYm
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3Nh
Z2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2Up
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSA9
IDA7CiAgICAgdXNpbmcgUGxhdGZvcm1EaXNwbGF5SUQgPSB1aW50MzJfdDsKICAgICB2aXJ0dWFs
IFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpID0gMDsKQEAgLTc4LDEzICs3OCwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIFN1Y2NlZWRlZCwKICAgICB9OwogCi0gICAgdXNpbmcgTGljZW5zZUNh
bGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24s
IFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpID0gMDsKKyAgICB1c2luZyBM
aWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRz
SW5kaXZpZHVhbGl6YXRpb24sIFN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpPjsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VD
YWxsYmFjayYmKSA9IDA7CiAKICAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBDRE1JbnN0YW5j
ZVNlc3Npb25DbGllbnQ6OktleVN0YXR1c1ZlY3RvcjsKLSAgICB1c2luZyBNZXNzYWdlID0gc3Rk
OjpwYWlyPE1lc3NhZ2VUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPj47CisgICAgdXNpbmcgTWVzc2Fn
ZSA9IHN0ZDo6cGFpcjxNZXNzYWdlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsK
ICAgICB1c2luZyBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgc3RkOjpvcHRpb25hbDxLZXlTdGF0dXNWZWN0b3I+JiYg
Y2hhbmdlZEtleXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBz
dGQ6Om9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+
OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0
ZUNhbGxiYWNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgPSAwOwogCiAgICAgZW51bSBj
bGFzcyBTZXNzaW9uTG9hZEZhaWx1cmUgOiB1aW50OF90IHsKICAgICAgICAgTm9uZSwKQEAgLTEw
MCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVNlc3Npb24o
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpID0gMDsKIAot
ICAgIHVzaW5nIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEtleVN0YXR1c1ZlY3RvciYmLCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYm
LCBTdWNjZXNzVmFsdWUpPjsKKyAgICB1c2luZyBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrID0g
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChLZXlTdGF0dXNWZWN0b3ImJiwgc3RkOjpvcHRpb25hbDxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYsIFN1Y2Nlc3NWYWx1ZSk+OwogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5z
ZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIHN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJp
dmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0
ZS5oCmluZGV4IGNjNmRjN2YxNDBjZDY3ZDJiN2I4NGY2YWIyYzI4NDMxNmRmZGRjY2YuLjUyYTYx
NDhjODNjZDUzOTNjOGY4NzRlZDg1YWQ4YmYyN2U1YmU1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKQEAgLTczLDggKzcz
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNh
bml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5p
dGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNw
cAppbmRleCBmMjE4Zjk3OTA0ZmJiYTQ5ZjFlYmRmNDhlMjA1ZmU3M2RmYWZiNjQ4Li40YmE3NWJm
MDBkOWY3MTNiNWFmYmJhNzkzNDAxOTcxNmNkOGYwMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCkBAIC0yMjcsNyArMjI3
LDcgQEAgQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgS2V5U3RvcmU6OmNvbnZl
cnRUb0pTS2V5U3RhdHVzVmVjdG9yKCkgY29uc3QKICAgICBDRE1JbnN0YW5jZVNlc3Npb246Oktl
eVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNWZWN0b3I7CiAgICAga2V5U3RhdHVzVmVjdG9yLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkobnVtS2V5cygpKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGtleSA6
IG1fa2V5cykKLSAgICAgICAga2V5U3RhdHVzVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChzdGQ6OnBh
aXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzPiB7IGtl
eS0+aWRBc1NoYXJlZEJ1ZmZlcigpLCBrZXktPnN0YXR1cygpIH0pOworICAgICAgICBrZXlTdGF0
dXNWZWN0b3IudW5jaGVja2VkQXBwZW5kKHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4sIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzPiB7IGtleS0+aWRBc1NoYXJlZEJ1
ZmZlcigpLCBrZXktPnN0YXR1cygpIH0pOwogICAgIHJldHVybiBrZXlTdGF0dXNWZWN0b3I7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94
eS5oCmluZGV4IGE1ODRiNmNkMjY2YjA5ODA5MDI1NGQ3ZGNiZGRiZjYwZDkzMzFmYmIuLmUxZTA5
OGExZDVmNWZmYzY1YzJhNDhmYTQwYWE5NzJmZTg5ZTFlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuaApAQCAtNjEsNyArNjEsNyBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBLZXlIYW5kbGUo
c3RhdHVzLCBXVEZNb3ZlKGtleUlEKSwgV1RGTW92ZShrZXlIYW5kbGVWYWx1ZSkpKTsKICAgICB9
Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gaWRBc1NoYXJlZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1faWQuZGF0YSgpLCBtX2lkLnNpemUoKSk7IH0KKyAgICBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaWRBc1NoYXJlZEJ1ZmZlcigpIGNvbnN0IHsgcmV0
dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1faWQuZGF0YSgpLCBtX2lkLnNpemUoKSk7IH0KIAog
ICAgIGJvb2wgdGFrZVZhbHVlSWZEaWZmZXJlbnQoS2V5SGFuZGxlVmFsdWVWYXJpYW50JiYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1V
dGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
VXRpbGl0aWVzLmNwcAppbmRleCA2NjcyNmY3NGU1OGQ4ZTEyMmNiYzkwYjg2N2I5YmY5NjE3Nzgw
M2Q0Li5mY2E2ZjIzODhhNTZhNmExYzcyNDcwZTVhNDZmZGQyOGYwNzM3NTBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVV0aWxpdGll
cy5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2Ug
Q0RNVXRpbGl0aWVzIHsKIAotUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09OT2JqZWN0KGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPEpTT046Ok9iamVjdD4gcGFyc2VKU09O
T2JqZWN0KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBG
YWlsIG9uIGxhcmdlIGJ1ZmZlcnMgd2hvc2Ugc2l6ZSBkb2Vzbid0IGZpdCBpbnRvIGEgMzItYml0
IHVuc2lnbmVkIGludGVnZXIuCiAgICAgc2l6ZV90IHNpemUgPSBidWZmZXIuc2l6ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNVXRpbGl0
aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRp
ZXMuaAppbmRleCA3NGY1MTViMGJkMmE4NzE2OGVlZjI0YjE4Zjk1ZGVhYmVlODI4ZTZjLi5mY2Y1
YmRkYTdjNTk3ZDNjM2FjMzQ5ZWUxNzg5ZTRhZDZlMGM5NTlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1VdGlsaXRpZXMuaApAQCAtMzUs
MTEgKzM1LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVy
OworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogbmFtZXNwYWNlIENETVV0aWxpdGll
cyB7CiAKLVJlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBTaGFyZWRC
dWZmZXImKTsKK1JlZlB0cjxKU09OOjpPYmplY3Q+IHBhcnNlSlNPTk9iamVjdChjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJik7CiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNw
cAppbmRleCAyYWRkZWU3ZWU4YjRlZWI4MzVmYTcwYzI0ZjFkNGVmODlkNzM0M2VmLi4zMWE5ZmRm
YTAyZDZkMDBjYTI2MTgyNTJkZWQ5MzUzMTNkYzU4YWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xl
YXJLZXkuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VMaWNlbnNlUmVs
ZWFzZUFja25vd2xlZGdlbWVudEZvcm1hdChjb25zdCBKU09OOjpPYmplY3QmIHJvb3QpCiAvLyBd
OwogCiAvLyBUaGlzIGZ1bmN0aW9uIGV4dHJhY3RzIHRoZSBLZXlJZHMgY291bnQgYW5kIHRoZSBs
b2NhdGlvbiBvZiB0aGUgZmlyc3QgS2V5SWQgaW4gaW5pdERhdGEgYnVmZmVyLgotc3RhdGljIHN0
ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNMb2NhdGlvbkZyb21DZW5j
SW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBzdGQ6OnBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiBleHRyYWN0S2V5aWRzTG9jYXRpb25Gcm9tQ2VuY0luaXREYXRh
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIHN0ZDo6cGFp
cjx1bnNpZ25lZCwgdW5zaWduZWQ+IGtleUlkc01hcCgwLCAwKTsKIApAQCAtMTg5LDEzICsxODks
MTMgQEAgc3RhdGljIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGV4dHJhY3RLZXlpZHNM
b2NhdGlvbkZyb21DZW5jSW5pdERhdGEoY29uc3QKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBjaGVj
a3MgaWYgdGhlIGluaXREYXRhIHNoYXJlZEJ1ZmZlciBpcyBhIHZhbGlkIENFTkMgaW5pdERhdGEu
Ci1zdGF0aWMgYm9vbCBpc0NlbmNJbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRh
KQorc3RhdGljIGJvb2wgaXNDZW5jSW5pdERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgaW5pdERhdGEpCiB7CiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4ga2V5SWRz
TWFwID0gZXh0cmFjdEtleWlkc0xvY2F0aW9uRnJvbUNlbmNJbml0RGF0YShpbml0RGF0YSk7CiAg
ICAgcmV0dXJuICgoa2V5SWRzTWFwLmZpcnN0KSAmJiAoa2V5SWRzTWFwLnNlY29uZCkpOwogfQog
Ci1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK3N0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gZXh0cmFjdEtleWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBrZXlJZHM7
CiAKQEAgLTIzMCw3ICsyMzAsNyBAQCBzdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtl
eWlkc0Zyb21DZW5jSW5pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RAogICAgIHJldHVy
biBrZXlJZHMudGFrZSgpOwogfQogCi1zdGF0aWMgUmVmPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdEtl
eUlkRnJvbVdlYk1Jbml0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGluaXREYXRhKQorc3RhdGlj
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBleHRyYWN0S2V5SWRGcm9tV2ViTUluaXREYXRh
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIga2V5SWRzOwogCkBAIC0zOTAsNyArMzkwLDcgQEAgYm9vbCBDRE1Qcml2YXRl
Q2xlYXJLZXk6OnN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpIGNvbnN0Citi
b29sIENETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBj
b25zdAogewogICAgIC8vIFZhbGlkYXRlIHRoZSBpbml0RGF0YSBidWZmZXIgYXMgYW4gSlNPTiBv
YmplY3QgaW4ga2V5aWRzIGNhc2UuCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKGluaXREYXRhVHlwZSwgImtleWlkcyIpICYmIENETVV0aWxpdGllczo6cGFyc2VKU09OT2Jq
ZWN0KGluaXREYXRhKSkKQEAgLTQwNyw3ICs0MDcsNyBAQCBib29sIENETVByaXZhdGVDbGVhcktl
eTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRl
Q2xlYXJLZXk6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkg
Y29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlQ2xlYXJLZXk6
OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2Up
IGNvbnN0CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhlIHJlc3BvbnNlIGJ1ZmZlciBhcyBhbiBKU09O
IG9iamVjdC4KICAgICBpZiAoIUNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KHJlc3BvbnNl
KSkKQEAgLTQzMyw3ICs0MzMsNyBAQCB2b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OmluaXRpYWxp
emVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cgogICAgIGNhbGxi
YWNrKHN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVy
Q2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJh
Y2spCit2b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
ICAgICAvLyBSZWplY3Qgc2V0dGluZyBhbnkgc2VydmVyIGNlcnRpZmljYXRlLgogICAgIGNhbGxi
YWNrKEZhaWxlZCk7CkBAIC00NTUsNyArNDU1LDcgQEAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lv
bj4gQ0RNSW5zdGFuY2VDbGVhcktleTo6Y3JlYXRlU2Vzc2lvbigpCiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleSgqdGhpcykpOwogfQogCi12b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRh
LCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xl
YXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNl
Q2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBzdGF0aWMgdWludDMyX3Qgc19zZXNzaW9uSWRW
YWx1ZSA9IDA7CiAgICAgKytzX3Nlc3Npb25JZFZhbHVlOwpAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpCiAgICAgICAgIH0pOwogfQogCi12b2lkIENETUluc3RhbmNl
U2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBM
aWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNh
bGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNh
bGxiYWNrKQogewogI2lmIExPR19ESVNBQkxFRAogICAgIC8vIFdlIG9ubHkgdXNlIHRoZSBzZXNp
b24gSUQgZm9yIGRlYnVnIGxvZ2dpbmcuIFRoZSB2ZXJib3NlIHByZXByb2Nlc3NvciBjaGVja3Mg
YXJlIGJlY2F1c2UKQEAgLTU2OCw3ICs1NjgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNs
ZWFyS2V5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZQog
ICAgIEFTU0VSVChzZXNzaW9uSWQgPT0gbV9zZXNzaW9uSUQpOwogCiAgICAgYXV0byBkaXNwYXRj
aENhbGxiYWNrID0KLSAgICAgICAgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sICZjYWxs
YmFja10oS2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzVmVjdG9yLCBzdGQ6Om9wdGlvbmFsPFJl
ZjxTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIFN1Y2Nlc3NWYWx1ZSBzdWNjZXNzKSB7CisgICAg
ICAgIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCAmY2FsbGJhY2tdKEtleVN0YXR1c1Zl
Y3RvciYmIGtleVN0YXR1c1ZlY3Rvciwgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+JiYgbWVzc2FnZSwgU3VjY2Vzc1ZhbHVlIHN1Y2Nlc3MpIHsKICAgICAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoCiAgICAgICAgICAgICAgICAgW3dlYWtUaGlzID0gV2Vha1B0ciB7
ICp3ZWFrVGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBrZXlTdGF0dXNWZWN0
b3IgPSBXVEZNb3ZlKGtleVN0YXR1c1ZlY3RvciksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2Up
LCBzdWNjZXNzXSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlz
KQpAQCAtNTgxLDcgKzU4MSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJl
bW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlCiAgICAgLy8gQ29u
c3RydWN0IHRoZSBLZXlTdGF0dXNWZWN0b3Igb2JqZWN0LCByZXByZXNlbnRpbmcgcmVsZWFzZWQg
a2V5cywgYW5kIHRoZSBtZXNzYWdlIGluIHRoZQogICAgIC8vICdsaWNlbnNlIHJlbGVhc2UnIGZv
cm1hdC4KICAgICBLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzVmVjdG9yID0gbV9rZXlTdG9yZS5h
bGxLZXlzQXMoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXM6OlJlbGVhc2VkKTsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtZXNzYWdlOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBtZXNzYWdlOwogICAgIHsKICAgICAgICAgLy8gQ29uc3RydWN0IEpTT04gdGhhdCBy
ZXByZXNlbnRzIHRoZSAnbGljZW5zZSByZWxlYXNlJyBmb3JtYXQsIGNyZWF0aW5nIGEgJ2tpZHMn
IGFycmF5CiAgICAgICAgIC8vIG9mIGJhc2U2NFVSTC1lbmNvZGVkIGtleSBJRHMgZm9yIGFsbCBr
ZXlzIHRoYXQgd2VyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBzZXNzaW9uLgpAQCAtNTk1LDE0ICs1
OTUsMTQgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2UKICAgICAgICAgICAgIHJvb3RPYmplY3Qt
PnNldEFycmF5KCJraWRzIiwgV1RGTW92ZShhcnJheSkpOwogICAgICAgICB9CiAKLSAgICAgICAg
Ly8gQ29weSB0aGUgSlNPTiBkYXRhIGludG8gYSBTaGFyZWRCdWZmZXIgb2JqZWN0LgorICAgICAg
ICAvLyBDb3B5IHRoZSBKU09OIGRhdGEgaW50byBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgb2Jq
ZWN0LgogICAgICAgICBTdHJpbmcgbWVzc2FnZVN0cmluZyA9IHJvb3RPYmplY3QtPnRvSlNPTlN0
cmluZygpOwogICAgICAgICBDU3RyaW5nIG1lc3NhZ2VDU3RyaW5nID0gbWVzc2FnZVN0cmluZy51
dGY4KCk7CiAgICAgICAgIG1lc3NhZ2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShtZXNzYWdlQ1N0
cmluZy5kYXRhKCksIG1lc3NhZ2VDU3RyaW5nLmxlbmd0aCgpKTsKICAgICB9CiAKICAgICBtX2tl
eVN0b3JlLnVucmVmQWxsS2V5cygpOwotICAgIGRpc3BhdGNoQ2FsbGJhY2soV1RGTW92ZShrZXlT
dGF0dXNWZWN0b3IpLCBSZWY8U2hhcmVkQnVmZmVyPigqbWVzc2FnZSksIFN1Y2Nlc3NWYWx1ZTo6
U3VjY2VlZGVkKTsKKyAgICBkaXNwYXRjaENhbGxiYWNrKFdURk1vdmUoa2V5U3RhdHVzVmVjdG9y
KSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KCptZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpT
dWNjZWVkZWQpOwogfQogCiB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5OjpzdG9yZVJl
Y29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCmlu
ZGV4IDljMDc0N2RjMWJkOGU2N2YzYmE4NjRkOWI4MTEzMzc2MjVjOGE2NzkuLjllMjdmZTkxMmM0
ZGEwNjdmYjI2Y2FmYmM3ZjZhNjUxZGE0NzUyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXku
aApAQCAtODYsOCArODYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgp
IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5h
bDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNv
bnN0IGZpbmFsOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29u
c3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qg
ZmluYWw7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9u
c2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBm
aW5hbDsKIH07CiAKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgIC8vIENETUluc3RhbmNl
CiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6Q2xlYXJLZXk7IH0KICAgICB2b2lkIGluaXRp
YWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwg
QWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vz
c0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2Vy
dmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxs
YmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbDsKICAg
ICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CkBAIC0x
MDksOCArMTA5LDggQEAgY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXkgZmluYWwgOiBw
dWJsaWMgQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgewogcHVibGljOgogICAgIENETUluc3RhbmNl
U2Vzc2lvbkNsZWFyS2V5KENETUluc3RhbmNlQ2xlYXJLZXkmIHBhcmVudCkKICAgICAgICAgOiBD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eShwYXJlbnQpIHsgfQotICAgIHZvaWQgcmVxdWVzdExpY2Vu
c2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQg
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5h
bDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmlu
YWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3Nl
U2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAg
ICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1v
dmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKaW5kZXggN2FhOTRi
NGI0YmMyY2JmOTIyYWFkYTU4ODc1NzNkNzVkN2MwYmM2Ny4uN2JmMDA4MzJhNDAyZWVhZDU3MjNj
YTQyOGU5YWZiN2NjNDFhMGM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCkBAIC0xMzksOSArMTM5LDkgQEAg
dm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmRBcnJheSgpCiAgICAgbV9lbmNvZGVyIDw8IFR5
cGU6OkVuZEFycmF5OwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gS2V5ZWRF
bmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gS2V5
ZWRFbmNvZGVyR2VuZXJpYzo6ZmluaXNoRW5jb2RpbmcoKQogewotICAgIHJldHVybiBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1ZmZlcigpLCBtX2VuY29kZXIuYnVm
ZmVyU2l6ZSgpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9lbmNvZGVyLmJ1
ZmZlcigpLCBtX2VuY29kZXIuYnVmZmVyU2l6ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5j
b2RlckdlbmVyaWMuaAppbmRleCA1ODA1ODNiODM4MTBlZGU1ZDJjOWM2NWE4MzkzYjMyNmQ4N2Iy
NzQ3Li5lY2Y0ZTA4YzliOTkxYWRlMjczYmQ0NGM2MGJiMTVmZTAxNjM1YjE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMu
aApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEtleWVkRW5j
b2RlckdlbmVyaWMgZmluYWwgOiBwdWJsaWMgS2V5ZWRFbmNvZGVyIHsKIHB1YmxpYzoKQEAgLTU3
LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH07CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5nKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZW5j
b2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJy
aWRlOwogICAgIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2Rl
ckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmNwcAppbmRleCBlNmQ3OGQ1MjgzZWY4ZTUzYzdiZGIwYmI4MDRlOWUyN2UxMGExNzkzLi43MGQy
NGMxMTkzZjhlNWM3MGQxZDM5ODdjNWUwMDk4Y2I2YzAwYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5jcHAKQEAgLTEzMiwxMiArMTMy
LDEyIEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2xpYjo6ZW5kQXJyYXkoKQogICAgIG1fYXJyYXlTdGFj
ay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBLZXll
ZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBLZXll
ZEVuY29kZXJHbGliOjpmaW5pc2hFbmNvZGluZygpCiB7CiAgICAgZ19hc3NlcnQobV92YXJpYW50
QnVpbGRlclN0YWNrLmxhc3QoKSA9PSAmbV92YXJpYW50QnVpbGRlcik7CiAgICAgR1JlZlB0cjxH
VmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFudF9idWlsZGVyX2VuZCgmbV92YXJpYW50QnVpbGRl
cik7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGRhdGEgPSBnX3ZhcmlhbnRfZ2V0X2RhdGFfYXNfYnl0
ZXModmFyaWFudC5nZXQoKSk7Ci0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShk
YXRhLmdldCgpLCBudWxscHRyKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihnX2J5dGVzX2dldF9z
aXplKGRhdGEuZ2V0KCkpKSk7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGRhdGEuZ2V0KCks
IG51bGxwdHIpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdfYnl0ZXNfZ2V0X3NpemUoZGF0YS5n
ZXQoKSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5jb2RlckdsaWIuaAppbmRleCBjZTEzNjQ5NmM0ZTEzZWFj
MTQ5ZWE2MTg5NWM1NDE0MGZmZDU5NmY3Li5lNTY0MmJjZjY3MGNlMjU5OWZjMDRkZjcyOWUyYjRj
MWY4MjExZjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVk
RW5jb2RlckdsaWIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRW5j
b2RlckdsaWIuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgfktleWVkRW5jb2Rlckds
aWIoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gZmluaXNoRW5jb2RpbmcoKSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIGZpbmFsOwogCiAgICAgdm9pZCBlbmNvZGVCeXRlcyhj
b25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CiAgICAgdm9p
ZCBlbmNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCmluZGV4IDg3ZDc4
NGJjNjY1MThmYWIyNmIzNDY2M2E0NjQ0MDA5M2RlMjcxOGIuLjUwMTI1OWRiODQ4NDc4OTFmYTdm
NjdlYWZjMDhhODMwZTAxM2VlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAtMjYsMjQgKzI2LDI0IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoR0J5dGVzKiBieXRlcykK
K0ZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIoR0J5dGVzKiBi
eXRlcykKIHsKICAgICBBU1NFUlQoYnl0ZXMpOwogICAgIG1fc2l6ZSA9IGdfYnl0ZXNfZ2V0X3Np
emUoYnl0ZXMpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgRGF0YVNlZ21lbnQ6OmNyZWF0
ZShHUmVmUHRyPEdCeXRlcz4oYnl0ZXMpKSB9KTsKIH0KIAotUmVmPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoR0J5dGVzKiBieXRlcykKK1JlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoR0J5dGVzKiBieXRlcykKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoYnl0ZXMpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKGJ5dGVzKSk7CiB9CiAKLUdSZWZQ
dHI8R0J5dGVzPiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVHQnl0ZXMoKSBjb25zdAor
R1JlZlB0cjxHQnl0ZXM+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlR0J5dGVzKCkgY29uc3QKIHsKICAg
ICByZWYoKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19u
ZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKGdwb2ludGVyIGRhdGEpIHsKLSAg
ICAgICAgc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigp
OwotICAgIH0sIGNvbnN0X2Nhc3Q8Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KHRoaXMpKSk7Cisg
ICAgICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOworICAgIH0s
IGNvbnN0X2Nhc3Q8U2hhcmVkQnVmZmVyKj4odGhpcykpKTsKICAgICByZXR1cm4gYnl0ZXM7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggMTI1ODYy
ZTcyYTlmOWQ4Njk2Y2UxNmNhY2ZmNmJmNzIwN2I0NWNlNC4uNGU5NDlkZmFiOTc2NWEyYTA3YzQ4
NzhhYmVlMTAzZmJhZjIxZjU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShjb25zdCBG
b250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIE9yaWdpbiBvcmlnaW4sIEludGUKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRp
YWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ssIGlkZW50aWZpZXIpKTsKIH0KIAot
UmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBmb250
RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRo
ZXRpY0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljKQorUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxv
YXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpCiB7
CiAgICAgYm9vbCB3cmFwcGluZzsKICAgICBhdXRvIGN1c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9u
dDo6Y3JlYXRlQ3VzdG9tRm9udERhdGEoZm9udEZhY2VEYXRhLmdldCgpLCB7IH0sIHdyYXBwaW5n
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAppbmRleCA0YzVjOGEzOTYz
M2EwNjQ3ODk4YjUyYTM5NDUyNWZiMWFmYjEyZThhLi44MmViYTczYmFjNGM3NmZlYTBiYjYwZWJh
NDQzNjgyZDIyYzdmZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5o
CkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZvbnRDYWNoZTsK
IGNsYXNzIEZvbnREZXNjcmlwdGlvbjsKIGNsYXNzIEdseXBoUGFnZTsKLWNsYXNzIFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIHN0cnVjdCBHbHlwaERhdGE7
CiAKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgVmlzaWJpbGl0eSA6
IGJvb2wgeyBWaXNpYmxlLCBJbnZpc2libGUgfTsKICAgICBlbnVtIGNsYXNzIE9yaWVudGF0aW9u
RmFsbGJhY2sgOiBib29sIHsgTm8sIFllcyB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4gPSBPcmlnaW46
OkxvY2FsLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLCBWaXNpYmlsaXR5ID0gVmlz
aWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJh
Y2s6Ok5vLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gPSBzdGQ6
Om51bGxvcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBm
bG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYyk7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wg
c3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMpOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgfkZvbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udFBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udFBsYXRmb3JtRGF0YS5oCmluZGV4IGUyMzg0YjllZTRlY2U2MDFlZWQ3YTRjMGIzZGJkZjk4
YmU5NTMwOTMuLmZiYmNjYzQzNjg0NDc0OTA4M2NlODkxZjM2M2Y2Y2M0MGYyOTc0NTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQbGF0Zm9ybURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGxhdGZvcm1EYXRh
LmgKQEAgLTIyMywxMyArMjIzLDEzIEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAotICAgIFJl
ZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxl
KSBjb25zdDsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gcGxhdGZvcm1PcGVu
VHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBwbGF0Zm9ybU9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0OwogCiAg
ICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgQ3JlYXRpb25EYXRh
IHsKLSAgICAgICAgUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGZvbnRGYWNlRGF0YTsKKyAg
ICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gZm9udEZhY2VEYXRhOwogICAgICAgICBTdHJpbmcgaXRl
bUluQ29sbGVjdGlvbjsKICNpZiBQTEFURk9STShXSU4pCiAgICAgICAgIFJlZjxGb250TWVtb3J5
UmVzb3VyY2U+IG1fZm9udFJlc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcAppbmRleCA2NzVlMjRiNDBhYzdhYWRlNzQwODZm
MjQyZWFkMDE1MjIxYzAyNGZjLi4yY2Y0NDhiZWEyZmE2YWU0ZDQ3Zjk2NDAwMmIzYTkwNmMwMTI5
MDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRp
bGl0aWVzLmNwcApAQCAtOTcsNyArOTcsNyBAQCBTdHJpbmcgY3JlYXRlQVZDQ29kZWNQYXJhbWV0
ZXJzU3RyaW5nKGNvbnN0IEFWQ1BhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgICAgICwgaGV4
KHBhcmFtZXRlcnMubGV2ZWxJREMsIDIpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxBVkNQYXJhbWV0
ZXJzPiBwYXJzZUFWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8QVZDUGFyYW1ldGVycz4gcGFyc2VB
VkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICAvLyBJU08vSUVDIDE0NDk2LTEwOjIwMTQKICAgICAvLyA3LjMuMi4xLjEgU2VxdWVu
Y2UgcGFyYW1ldGVyIHNldCBkYXRhIHN5bnRheApAQCAtMjU1LDcgKzI1NSw3IEBAIFN0cmluZyBj
cmVhdGVIRVZDQ29kZWNQYXJhbWV0ZXJzU3RyaW5nKGNvbnN0IEhFVkNQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKQogICAgICAgICAsIGNvbXBhdGliaWxpdHlGbGFncy50b1N0cmluZygpKTsKIH0KIAot
c3RkOjpvcHRpb25hbDxIRVZDUGFyYW1ldGVycz4gcGFyc2VIRVZDRGVjb2RlckNvbmZpZ3VyYXRp
b25SZWNvcmQoY29uc3QgRm91ckNDJiBjb2RlY0NvZGUsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0Rl
Y29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IEZvdXJDQyYgY29kZWNDb2RlLCBjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBJU08vSUVDIDE0NDk2LTE1OjIwMTQKICAg
ICAvLyA4LjMuMy4xIEhFVkMgZGVjb2RlciBjb25maWd1cmF0aW9uIHJlY29yZApAQCAtNDM2LDcg
KzQzNiw3IEBAIHN0ZDo6b3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaUNvZGVjUGFy
YW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjVmlldykKICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0K
IAotc3RkOjpvcHRpb25hbDxEb1ZpUGFyYW1ldGVycz4gcGFyc2VEb1ZpRGVjb2RlckNvbmZpZ3Vy
YXRpb25SZWNvcmQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpv
cHRpb25hbDxEb1ZpUGFyYW1ldGVycz4gcGFyc2VEb1ZpRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNv
cmQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gVGhlIGZvcm1hdCBvZiB0
aGUgRG9WaSBDb25maWd1cmF0aW9uIFJlY29yZCBpcyBjb250YWluZWQgaW4gIkRvbGJ5IFZpc2lv
biBTdHJlYW1zIFdpdGhpbgogICAgIC8vIHRoZSBJU08gQmFzZSBNZWRpYSBGaWxlIEZvcm1hdCwg
VmVyc2lvbiAyLjAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9IRVZDVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZD
VXRpbGl0aWVzLmgKaW5kZXggZWRmZWNiMjZkODk0NjdhMjNkMWY1NzFjYmM1ZTkxYjJmYTM0Nzg1
Yy4uM2Y1MDEwMzQxNGZiNWVjYWQyYjgyYTdhZjkxZTRhM2NhMjQ1NjYzYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuaApAQCAtMzEsNyAr
MzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBzdHJ1Y3QgRm91ckNDOwogCiBzdHJ1Y3QgQVZD
UGFyYW1ldGVycyB7CkBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCBBVkNQYXJhbWV0ZXJzIHsKIH07
CiAKIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8QVZDUGFyYW1ldGVycz4gcGFyc2VBVkND
b2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyk7Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFs
PEFWQ1BhcmFtZXRlcnM+IHBhcnNlQVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxB
VkNQYXJhbWV0ZXJzPiBwYXJzZUFWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNyZWF0ZUFWQ0NvZGVjUGFyYW1l
dGVyc1N0cmluZyhjb25zdCBBVkNQYXJhbWV0ZXJzJik7CiAKIHN0cnVjdCBIRVZDUGFyYW1ldGVy
cyB7CkBAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBIRVZDUGFyYW1ldGVycyB7CiB9OwogCiBXRUJD
T1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNDb2RlY1Bh
cmFtZXRlcnMoU3RyaW5nVmlldyk7Ci1XRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEhFVkNQ
YXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChjb25zdCBGb3Vy
Q0MmLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6
Om9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJl
Y29yZChjb25zdCBGb3VyQ0MmLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBjcmVhdGVIRVZDQ29kZWNQYXJhbWV0ZXJzU3RyaW5nKGNvbnN0IEhFVkNQYXJhbWV0
ZXJzJik7CiAKIHN0cnVjdCBEb1ZpUGFyYW1ldGVycyB7CkBAIC02NSw3ICs2NSw3IEBAIHN0cnVj
dCBEb1ZpUGFyYW1ldGVycyB7CiB9OwogCiBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPERv
VmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyk7Ci1XRUJD
T1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlEZWNvZGVy
Q29uZmlndXJhdGlvblJlY29yZChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJik7CitXRUJD
T1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPERvVmlQYXJhbWV0ZXJzPiBwYXJzZURvVmlEZWNvZGVy
Q29uZmlndXJhdGlvblJlY29yZChjb25zdCBTaGFyZWRCdWZmZXImKTsKIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBjcmVhdGVEb1ZpQ29kZWNQYXJhbWV0ZXJzU3RyaW5nKGNvbnN0IERvVmlQYXJhbWV0
ZXJzJik7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcApp
bmRleCA0YTg1M2ViNjQ5NTNkNGFlNDgzNGY4N2M1NDg3YWNkMzY0YzU3ZDgxLi5lMzJhMzZjNjA3
NjE5MjE2OGM2YTM3OTMxOGY3OGFlMTc4OWM0ODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBJbWFnZTo6aXNQ
b3N0U2NyaXB0UmVzb3VyY2UoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJMJiB1cmwp
CiB9CiAKIAotRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2U6OnNldERhdGEoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK0VuY29kZWREYXRhU3RhdHVzIElt
YWdlOjpzZXREYXRhKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQogewogICAgIG1fZW5jb2RlZEltYWdlRGF0YSA9IFdURk1vdmUoZGF0
YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDZhMDgx
Njk1N2FhOTNjNDExYTU2Y2Q0YzJiYzIwZGQ2ZDkwNDRkZWMuLjY1NWRmZTczY2ZmNmFkMWQwNGY0
OGJjMjAxOWViYjgwNDE3ZDYxMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaApAQCAtNzAsNyArNzAsNyBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBG
bG9hdFBvaW50OwogY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBM
ZW5ndGg7CiAKIC8vIFRoaXMgY2xhc3MgZ2V0cyBub3RpZmllZCB3aGVuIGFuIGltYWdlIGNyZWF0
ZXMgb3IgZGVzdHJveXMgZGVjb2RlZCBmcmFtZXMgYW5kIHdoZW4gaXQgYWR2YW5jZXMgYW5pbWF0
aW9uIGZyYW1lcy4KQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzdGQ6
Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0
OyB9CiAgICAgdmlydHVhbCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCBFbmNvZGVkRGF0YVN0YXR1cyBzZXREYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIFdFQkNPUkVfRVhQT1JUIEVuY29kZWREYXRhU3Rh
dHVzIHNldERhdGEoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpOwogICAgIHZpcnR1YWwgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5n
ZWQoYm9vbCAvKmFsbERhdGFSZWNlaXZlZCovKSB7IHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6
VW5rbm93bjsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgdXRpKCkgY29uc3QgeyByZXR1cm4gU3Ry
aW5nKCk7IH0gLy8gbnVsbCBzdHJpbmcgaWYgdW5rbm93bgpAQCAtMTMzLDggKzEzMyw4IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95
QWxsID0gdHJ1ZSkgPSAwOwogCi0gICAgU2hhcmVkQnVmZmVyKiBkYXRhKCkgeyByZXR1cm4gbV9l
bmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9Ci0gICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9CisgICAgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogZGF0YSgpIHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsg
fQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVy
biBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgRGVzdGluYXRpb25D
b2xvclNwYWNlIGNvbG9yU3BhY2UoKTsKIApAQCAtMjA5LDcgKzIwOSw3IEBAIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigpIGNvbnN0IHsgcmV0dXJu
IENvbG9yKCk7IH0KIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2VuY29k
ZWRJbWFnZURhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fZW5jb2Rl
ZEltYWdlRGF0YTsKICAgICBJbWFnZU9ic2VydmVyKiBtX2ltYWdlT2JzZXJ2ZXI7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFRpbWVyPiBtX2FuaW1hdGlvblN0YXJ0VGltZXI7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKaW5k
ZXggNGRkYjZkZjgzZWNiOGI5Yjc5NTdmNDY2NGUxODRmMDA4MWU4MTAxMS4uZGUzM2YxYWY0MTJk
YzA4YjJiOTYxYTE5NDk0NWM5Y2M5MGFhNjYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCkBAIC02Niw3ICs2Niw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBidWZmZXIuZ3Jv
dyhidWZmZXJTaXplKTsKLSAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9waXhlbHMgPSBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAg
ICAgICAgIG1fcGl4ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nh
c3Q8dWludDhfdCo+KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICAgICAgbV9zaXplID0gc2l6ZTsK
ICAgICAgICAgbV9mcmFtZVJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSk7CkBAIC0y
MDYsNyArMjA2LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9zaXplLmlz
RW1wdHkoKSAmJiAhaXNPdmVyU2l6ZShtX3NpemUpKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGJ1ZmZlciB7IG90aGVyLm1fcGl4ZWxzLT5kYXRhKCksIG90aGVyLm1fcGl4ZWxzLT5zaXplKCkg
fTsKLSAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpKTsKKyAgICAgICAgbV9waXhlbHMgPSBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIG1fcGl4
ZWxzUHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGNvbnN0X2Nhc3Q8dWludDhfdCo+
KG1fcGl4ZWxzLT5kYXRhKCkpKTsKICAgICB9CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCBwcml2YXRl
OgogICAgICAgICByZXR1cm4gUGFja2VkQ29sb3I6OkFSR0IgeyByZXN1bHQgfS52YWx1ZTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9waXhlbHM7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX3BpeGVsczsK
ICAgICB1aW50MzJfdCogbV9waXhlbHNQdHIgeyBudWxscHRyIH07CiAgICAgSW50U2l6ZSBtX3Np
emU7CiAgICAgSW50UmVjdCBtX2ZyYW1lUmVjdDsgLy8gVGhpcyB3aWxsIGFsd2F5cyBqdXN0IGJl
IHRoZSBlbnRpcmUgYnVmZmVyIGV4Y2VwdCBmb3IgR0lGIGFuZCBQTkcgZnJhbWVzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAw
ODY5ZTk5YTAwODg2ZjdjZDEyMTg2ZmUzMTYxZGUwNDdmYTUxMzYxLi43YzU0OTQ3ZjRkODE0MDg1
NTljYzQ1YzRhYzQ5YTE5YjlmYzg2Zjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBJbWFn
ZURlY29kZXI6OmNsZWFyRmFjdG9yaWVzKCkKIH0KICNlbmRpZgogCi1SZWZQdHI8SW1hZ2VEZWNv
ZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXI+
IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBVTlVTRURf
UEFSQU0obWltZVR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlRGVjb2Rlci5oCmluZGV4IGExYTA4YWRjMTc1ZDQ0YmFhNDQyZTQ0YTk0YWE5NjdhMDRm
NWY2MDcuLjZhOGZmY2I2MGZjMTE1NmViODQ4NzZkZWZiMDdjYmMwYjExOTg0OTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCkBAIC0zNywx
MiArMzcsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBJbWFnZURlY29kZXIgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VEZWNvZGVyPiB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXI+
IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VE
ZWNvZGVyPiBjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgdmly
dHVhbCB+SW1hZ2VEZWNvZGVyKCkgPSBkZWZhdWx0OwogCiAgICAgZW51bSBjbGFzcyBNZWRpYVR5
cGUgewpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQog
ICAgIHVzaW5nIFN1cHBvcnRzTWVkaWFUeXBlRnVuYyA9IEZ1bmN0aW9uPGJvb2woTWVkaWFUeXBl
KT47CiAgICAgdXNpbmcgQ2FuRGVjb2RlVHlwZUZ1bmMgPSBGdW5jdGlvbjxib29sKGNvbnN0IFN0
cmluZyYpPjsKLSAgICB1c2luZyBDcmVhdGVJbWFnZURlY29kZXJGdW5jID0gRnVuY3Rpb248UmVm
UHRyPEltYWdlRGVjb2Rlcj4oU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKT47CisgICAgdXNpbmcgQ3JlYXRlSW1hZ2VE
ZWNvZGVyRnVuYyA9IEZ1bmN0aW9uPFJlZlB0cjxJbWFnZURlY29kZXI+KEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pPjsKIAogICAgIHN0cnVjdCBJbWFnZURlY29kZXJGYWN0b3J5IHsKICAgICAgICAg
U3VwcG9ydHNNZWRpYVR5cGVGdW5jIHN1cHBvcnRzTWVkaWFUeXBlOwpAQCAtMTI5LDcgKzEyOSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzKSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEV4cGVjdGVkQ29u
dGVudFNpemUobG9uZyBsb25nKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRC
dWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRE
YXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCkgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgPSAwOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggZDgxYzQ4
MDE5Mjg0NmRkN2UzMjFjMmRmYmZiZjFlMGMyMGRhYTY3MS4uMzA3NzQzMzE1YTQxZWNhMWM5YjJi
Yzc3M2QwNzllZTVkNDNiYWY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtNzIsNyArNzIsNyBAQCBJbWFnZVNvdXJjZTo6fklt
YWdlU291cmNlKCkKICAgICBBU1NFUlQoJm1fcnVuTG9vcCA9PSAmUnVuTG9vcDo6Y3VycmVudCgp
KTsKIH0KIAotYm9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShTaGFyZWRC
dWZmZXIqIGRhdGEpCitib29sIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZhaWxhYmxlKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKCFkYXRhIHx8IGlzRGVjb2Rl
ckF2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk2LDcgKzk2LDcgQEAgYm9v
bCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShTaGFyZWRCdWZmZXIqIGRhdGEp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoU2hhcmVk
QnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VTb3VyY2U6OnNl
dERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiB7CiAgICAgaWYgKCFkYXRhIHx8ICFlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKGRhdGEpKQogICAg
ICAgICByZXR1cm47CkBAIC0xMDQsMTMgKzEwNCwxMyBAQCB2b2lkIEltYWdlU291cmNlOjpzZXRE
YXRhKFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgbV9kZWNv
ZGVyLT5zZXREYXRhKCpkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCi12b2lkIEltYWdlU291
cmNlOjpyZXNldERhdGEoU2hhcmVkQnVmZmVyKiBkYXRhKQordm9pZCBJbWFnZVNvdXJjZTo6cmVz
ZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgbV9kZWNvZGVyID0g
bnVsbHB0cjsKICAgICBzZXREYXRhKGRhdGEsIGlzQWxsRGF0YVJlY2VpdmVkKCkpOwogfQogCi1F
bmNvZGVkRGF0YVN0YXR1cyBJbWFnZVNvdXJjZTo6ZGF0YUNoYW5nZWQoU2hhcmVkQnVmZmVyKiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK0VuY29kZWREYXRhU3RhdHVzIEltYWdlU291cmNl
OjpkYXRhQ2hhbmdlZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCkKIHsKICAgICBzZXREYXRhKGRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgY2xl
YXJNZXRhZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmgKaW5kZXggOGFmNTA4MGEwMGE5OTE2MDgwZjFmMGIyNzcwNzNjMmE4NTM0NTI1OC4u
ODE0ZjBlMTJlYmFhNDhmODZhY2I1MjE5NzNjMzFkNWQzODJmNmZiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0zOSw3ICszOSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJpdG1hcEltYWdlOwogY2xhc3MgR3JhcGhpY3ND
b250ZXh0OwogY2xhc3MgSW1hZ2VEZWNvZGVyOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3Mg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgSW1hZ2VTb3VyY2UgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VTb3VyY2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW1h
Z2VTb3VyY2U+IHsKICAgICBmcmllbmQgY2xhc3MgQml0bWFwSW1hZ2U7CkBAIC01Niw5ICs1Niw5
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VTb3VyY2UoV1RG
TW92ZShuYXRpdmVJbWFnZSkpKTsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgdm9pZCByZXNldERhdGEoU2hh
cmVkQnVmZmVyKiBkYXRhKTsKLSAgICBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChTaGFy
ZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2b2lkIHNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAg
IHZvaWQgcmVzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIEVuY29k
ZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2VkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCk7CiAKICAg
ICB1bnNpZ25lZCBkZWNvZGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlZFNpemU7IH0K
QEAgLTE1NCw3ICsxNTQsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAg
ICAgVCBmaXJzdEZyYW1lTWV0YWRhdGFDYWNoZUlmTmVlZGVkKFQmIGNhY2hlZFZhbHVlLCBNZXRh
ZGF0YVR5cGUsIFQgKEltYWdlRnJhbWU6OipmdW5jdG9yKSgpIGNvbnN0LCBJbWFnZUZyYW1lOjpD
YWNoaW5nLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFN1YnNhbXBsaW5nTGV2ZWw+JiA9IHsgfSk7CiAK
LSAgICBib29sIGVuc3VyZURlY29kZXJBdmFpbGFibGUoU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAg
ICBib29sIGVuc3VyZURlY29kZXJBdmFpbGFibGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSk7CiAgICAgYm9vbCBpc0RlY29kZXJBdmFpbGFibGUoKSBjb25zdCB7IHJldHVybiBtX2RlY29k
ZXI7IH0KICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShzaXplX3QgZnJhbWVDb3VudCwgc2l6
ZV90IGV4Y2x1ZGVGcmFtZSk7CiAgICAgdm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQobG9uZyBsb25n
IGRlY29kZWRTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01vZGVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNw
cAppbmRleCA1YWRlN2VmNjllMjlhNzdmMmI4NDA5MjllNjRiZTBjNDRlNTE2NDM5Li41NzdiZDUw
OGE1YzQwOWY0YmU5ZTRjZjIwMmI4MWU2MWU0NWI0NGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZWY8TW9kZWw+IE1vZGVsOjpjcmVhdGUoUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwgdXJsKQorUmVmPE1vZGVsPiBN
b2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBV
UkwgdXJsKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vZGVsKFdURk1vdmUoZGF0YSks
IFdURk1vdmUobWltZVR5cGUpLCBXVEZNb3ZlKHVybCkpKTsKIH0KIAotTW9kZWw6Ok1vZGVsKFJl
ZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlwZSwgVVJMIHVy
bCkKK01vZGVsOjpNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIFN0cmluZyBtaW1lVHlw
ZSwgVVJMIHVybCkKICAgICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9taW1lVHlw
ZShXVEZNb3ZlKG1pbWVUeXBlKSkKICAgICAsIG1fdXJsKFdURk1vdmUodXJsKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCmluZGV4IDkxNTYwYWU4OGZhNjRjMmEwYzEw
MDE0MTRmMzI0MWNlMDA1NmExZjQuLmU2YmRlMTY2Zjk0NGNkZTdkYjMyOGMyOTc2ZWM2ODJhZGI2
ZDEwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaApAQCAtMzgs
MTAgKzM4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTW9kZWwgZmluYWwgOiBw
dWJsaWMgUmVmQ291bnRlZDxNb2RlbD4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgU3Ry
aW5nLCBVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8TW9kZWw+IGNyZWF0ZShS
ZWY8U2hhcmVkQnVmZmVyPiYmLCBTdHJpbmcsIFVSTCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgfk1v
ZGVsKCk7CiAKLSAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YTsgfQorICAgIFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGE7IH0KICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9taW1lVHlwZTsgfQogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91
cmw7IH0KICAgICAKQEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBSZWZQdHI8TW9kZWw+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZh
dGU6Ci0gICAgZXhwbGljaXQgTW9kZWwoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIFN0
cmluZywgVVJMKTsKKyAgICBleHBsaWNpdCBNb2RlbChSZWY8U2hhcmVkQnVmZmVyPiYmLCBTdHJp
bmcsIFVSTCk7CiAKLSAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAg
IFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBV
UkwgbV91cmw7CiB9OwpAQCAtOTMsNyArOTMsNyBAQCBSZWZQdHI8TW9kZWw+IE1vZGVsOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICByZXR1cm4gTW9kZWw6OmNyZWF0ZShDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShkYXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7
CisgICAgcmV0dXJuIE1vZGVsOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShk
YXRhKSksIFdURk1vdmUoKm1pbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSk7CiB9CiAKIFdFQkNPUkVf
RVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25z
dCBNb2RlbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRleCA3NDU5YzU4NThkMjQ4
N2VmMmM1ZmQzNzE3Mzk4NmIzMzczNGVjMjhhLi44ODY5MWRjMjU2ZDZkZDZjNDVmNDZlMDE1NDk2
NzQyNDVhYTM1MzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaApAQCAtNTEsOCArNTEs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9
CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBs
b25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgeyBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIGJlIHJl
bW92ZWQgb25jZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB1c2VzIFNoYXJlZEJ1ZmZlci4KKyAg
ICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KKyAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIENhY2hlZFJhd1Jl
c291cmNlQ2xpZW50IHVzZXMgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KICAgICB2aXJ0dWFsIHZv
aWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcGxhdGZvcm0sIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgZGF0YVJlY2VpdmVkKHBsYXRmb3JtLCBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpKTsgfQogICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3ND
b250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VF
cnJvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKaW5kZXggNTQ5
OWYzN2E3ZjM2NDZiZDVmMzk1YTQ4YjA5ZDk0MTFkNGM5YjY2NC4uZDNlMWI1ODA0ZTg1YTk5MTFj
ZjIwZmNlZDM0YmYyNTVhMzE0NDM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTEzMTgsNyArMTMx
OCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZVNhbXBsZShSZWY8TWVk
aWFTYW1wbGU+JiYgb3JpZ2luYWxTYW1wbGUpCiAgICAgdXBkYXRlSGlnaGVzdFByZXNlbnRhdGlv
blRpbWVzdGFtcCgpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZChSZWY8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5k
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBhcHBlbmQoYnVm
ZmVyLT5leHRyYWN0RGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAppbmRleCBlZjg2YTQ3MzY5MzcxYzgz
ZTg4M2IyOWJiYjZiOWFiOTZlY2E1ZjFkLi42YjdkOTVlNTJiOWRmMGM4MWFmM2JlMWQ2ZDlmM2M4
ZWQzOTU0MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
b3VyY2VCdWZmZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCkBAIC00OSw3ICs0OSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKIGNsYXNzIFRpbWVSYW5nZXM7CiAKIGVudW0gY2xhc3MgU291cmNlQnVmZmVyQXBwZW5k
TW9kZSA6IHVpbnQ4X3QgewpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB+U291cmNlQnVmZmVyUHJpdmF0ZSgpOwogCiAgICAgdmlydHVhbCB2b2lk
IHNldEFjdGl2ZShib29sKSA9IDA7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGFw
cGVuZChSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgYXBwZW5kKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB2aXJ0dWFsIHZv
aWQgYWJvcnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHAKaW5k
ZXggYTBlNzNiM2YzZWJjYjNjNzgwZmUzNTFlOWQ2YTgwYjZmYjkwNTViNC4uYjM3ZWJmYzU2MjA0
OGZlNmQ3OTQxZDJlNWNjMWJjYTFkYzE1NzFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV09GRkZpbGVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcApAQCAtMzcsNyArMzcsNyBAQCBz
dGF0aWMgY29uc3QgdWludDMyX3Qga1dvZmYyU2lnbmF0dXJlID0gMHg3NzRmNDYzMjsgLy8gIndP
RjIiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgcmVhZFVJbnQzMihDb250
aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0LCB1aW50MzJfdCYgdmFs
dWUpCitzdGF0aWMgYm9vbCByZWFkVUludDMyKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3Qm
IG9mZnNldCwgdWludDMyX3QmIHZhbHVlKQogewogICAgIEFTU0VSVF9BUkcob2Zmc2V0LCBvZmZz
ZXQgPD0gYnVmZmVyLnNpemUoKSk7CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQgPCBz
aXplb2YodmFsdWUpKQpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgYm9vbCByZWFkVUludDMyKENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQzMl90Jgog
ICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCByZWFkVUludDE2KENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90JiBvZmZzZXQsIHVpbnQxNl90JiB2YWx1ZSkKK3N0
YXRpYyBib29sIHJlYWRVSW50MTYoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCYgb2Zmc2V0
LCB1aW50MTZfdCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUX0FSRyhvZmZzZXQsIG9mZnNldCA8PSBi
dWZmZXIuc2l6ZSgpKTsKICAgICBpZiAoYnVmZmVyLnNpemUoKSAtIG9mZnNldCA8IHNpemVvZih2
YWx1ZSkpCkBAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBib29sIHdyaXRlVUludDE2KFZlY3Rvcjx1
aW50OF90PiYgdmVjdG9yLCB1aW50MTZfdCB2YWx1ZSkKIAogc3RhdGljIGNvbnN0IHVpbnQzMl90
IHdvZmZTaWduYXR1cmUgPSAweDc3NGY0NjQ2OyAvKiAnd09GRicgKi8KIAotYm9vbCBpc1dPRkYo
Q29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKQorYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgc2l6ZV90IG9mZnNldCA9IDA7CiAgICAgdWludDMyX3Qgc2lnbmF0
dXJlOwpAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiB9OwogI2VuZGlmCiAKLWJvb2wgY29u
dmVydFdPRkZUb1NmbnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4
X3Q+JiBzZm50KQorYm9vbCBjb252ZXJ0V09GRlRvU2ZudChTaGFyZWRCdWZmZXImIHdvZmYsIFZl
Y3Rvcjx1aW50OF90PiYgc2ZudCkKIHsKICAgICBBU1NFUlRfQVJHKHNmbnQsIHNmbnQuaXNFbXB0
eSgpKTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgY29udmVydFdPRkZUb1NmbnQoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KQogICAgIHJldHVy
biBzZm50LnNpemUoKSA9PSB0b3RhbFNmbnRTaXplOwogfQogCi1ib29sIGNvbnZlcnRXT0ZGVG9T
Zm50SWZOZWNlc3NhcnkoUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiti
b29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1
ZmZlcikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsK
QEAgLTI5NCw3ICsyOTQsNyBAQCBib29sIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoUmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAKICAgICBWZWN0b3I8dWludDhf
dD4gY29udmVydGVkRm9udDsKICAgICBpZiAoY29udmVydFdPRkZUb1NmbnQoKmJ1ZmZlciwgY29u
dmVydGVkRm9udCkpCi0gICAgICAgIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKGNvbnZlcnRlZEZvbnQpKTsKKyAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZShjb252ZXJ0ZWRGb250KSk7CiAgICAgZWxzZQogICAgICAgICBi
dWZmZXIgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvV09GRkZpbGVGb3JtYXQuaAppbmRleCA3OGFjNGE3YWZmZjRkNGJlZTlmZDAyY2FiZTdhOThm
MmZlN2RkZTgyLi4zZDU3MDEwN2YyOGY4NTQ0NzQxZTM0OTVjMDE2MDdlNGRlOTAyZDVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmgK
QEAgLTMwLDE5ICszMCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIC8vIFJldHVybnMgd2hl
dGhlciB0aGUgYnVmZmVyIGlzIGEgV09GRiBmaWxlLgotYm9vbCBpc1dPRkYoQ29udGlndW91c1No
YXJlZEJ1ZmZlciYpOworYm9vbCBpc1dPRkYoU2hhcmVkQnVmZmVyJik7CiAKIC8vIFJldHVybnMg
ZmFsc2UgaWYgdGhlIFdPRkYgZmlsZSB3b2ZmIGlzIGludmFsaWQgb3IgY291bGQgbm90IGJlIGNv
bnZlcnRlZCB0byBzZm50IChmb3IgZXhhbXBsZSwKIC8vIGlmIGNvbnZlcnNpb24gcmFuIG91dCBv
ZiBtZW1vcnkpLiBPdGhlcndpc2UgcmV0dXJucyB0cnVlIGFuZCB3cml0ZXMgdGhlIHNmbnQgcGF5
bG9hZCBpbnRvIHNmbnQuCi1ib29sIGNvbnZlcnRXT0ZGVG9TZm50KENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIHdvZmYsIFZlY3Rvcjx1aW50OF90PiYgc2ZudCk7Citib29sIGNvbnZlcnRXT0ZGVG9T
Zm50KFNoYXJlZEJ1ZmZlciYgd29mZiwgVmVjdG9yPHVpbnQ4X3Q+JiBzZm50KTsKIAogLy8gSWYg
dGhlIGdpdmVuIGJ1ZmZlciBpcyBhIFdPRkYgZmlsZSBhbmQgdGhlIGN1cnJlbnQgcGxhdGZvcm0g
aGFzIG5vIG5hdGl2ZSBzdXBwb3J0IGZvciBXT0ZGCiAvLyBmb250cywgY29udmVydCBpdCB0byBz
Zm50LiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGJ1ZmZlciB3YXMgY29udmVydGVkLiBJZiBj
b252ZXJzaW9uIGZhaWxzLAogLy8gdGhlIGJ1ZmZlciB3aWxsIGJlIHNldCB0byBudWxscHRyLgot
Ym9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYpOworYm9vbCBjb252ZXJ0V09GRlRvU2ZudElmTmVjZXNzYXJ5KFJlZlB0cjxTaGFy
ZWRCdWZmZXI+Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3Ry
ZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXggZDdjMDEzZDU0ZTNkZWQwNzg1NDkwMjhk
NTFkNmUwMjhjOTc1MDdjNi4uOGIwNGY5YmU5NmMzNmUwYTI2MjE4MGEyNWVhMzc0NTk2MmIzZDdk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCkBAIC04Niw3
ICs4Niw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c2tkTmFtZSgpCiAgICAgcmV0dXJuIHNrZDsKIH0KIAotc3RhdGljIFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3Rh
dGljIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSlNPTiBvZiB0
aGUgZm9ybWF0OiAieyBzaW5mOiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIKICAgICBp
ZiAoYnVmZmVyLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkK
QEAgLTEwNSw3ICsxMDUsNyBAQCBzdGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBleHRy
YWN0U2luZkRhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgaWYgKCFzaW5mQXJy
YXkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
IHNpbmZzOworICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHNpbmZzOwog
ICAgIHNpbmZzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2luZkFycmF5LT5sZW5ndGgoKSk7CiAK
ICAgICBmb3IgKGF1dG8mIHZhbHVlIDogKnNpbmZBcnJheSkgewpAQCAtMTI0LDcgKzEyNCw3IEBA
IHN0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIH0KIAogdXNpbmcgU2NoZW1lQW5kS2V5UmVzdWx0ID0gVmVj
dG9yPHN0ZDo6cGFpcjxGb3VyQ0MsIFZlY3Rvcjx1aW50OF90Pj4+Owotc3RhdGljIFNjaGVtZUFu
ZEtleVJlc3VsdCBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK3N0YXRpYyBTY2hlbWVBbmRLZXlSZXN1bHQgZXh0cmFjdFNjaGVtZUFuZEtl
eUlkRnJvbVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IGF1dG8gYnVmZmVycyA9IGV4dHJhY3RTaW5mRGF0YShidWZmZXIpOwogICAgIGlmICghYnVmZmVy
cy5zaXplKCkpCkBAIC0xNzAsOSArMTcwLDkgQEAgc3RhdGljIFNjaGVtZUFuZEtleVJlc3VsdCBl
eHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmYKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVm
ZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RL
ZXlJRHNTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAgYXV0byByZXN1bHRzID0gZXh0cmFjdFNjaGVt
ZUFuZEtleUlkRnJvbVNpbmYoYnVmZmVyKTsKIAogICAgIGZvciAoYXV0byYgcmVzdWx0IDogcmVz
dWx0cykgewpAQCAtMTgzLDcgKzE4Myw3IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5CiAgICAg
cmV0dXJuIGtleUlEczsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQ
bGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpzYW5pdGl6ZVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIC8vIENvbW1vbiBTSU5GIEJveCBGb3JtYXQKICAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsK
QEAgLTE5MSwxNyArMTkxLDE3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6c2FuaXRpemVTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlCiAgICAgcmV0dXJu
IGJ1ZmZlci5jb3B5KCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWly
UGxheVN0cmVhbWluZzo6c2FuaXRpemVTa2QoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpzYW5pdGl6ZVNrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1
cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1
ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTa2QoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RL
ZXlJRHNTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8v
IEluIHRoZSAnc2tkJyBzY2hlbWUsIHRoZSBpbml0IGRhdGEgaXMgdGhlIGtleSBJRC4KLSAgICBW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAga2V5SURzLmFwcGVuZChidWZmZXIuY29weSgp
KTsKICAgICByZXR1cm4ga2V5SURzOwogfQpAQCAtMzkzLDcgKzM5Myw3IEBAIGJvb2wgQ0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGluaXREYXRhKSBjb25zdAorYm9vbCBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkgY29uc3QKIHsKICAgICBpZiAoIXZhbGlkSW5p
dERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRhVHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTQyMyw3ICs0MjMsNyBAQCBib29sIENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3Ry
ZWFtaW5nOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNv
bnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3Ry
ZWFtaW5nOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJl
c3BvbnNlKSBjb25zdAogewogICAgIHJldHVybiByZXNwb25zZS5jb3B5KCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFp
clBsYXlTdHJlYW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCmluZGV4IGJjOTNmNmY2YTdiZGQwMWVmYmY1
NWI2MmJkYjZhNGU2NmVmOTEyYjMuLjMxN2JiOGQ1N2U4NmMwNjIxNGUwYjQwNTlkZGY0Zjg4MDdj
NzRjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5oCkBAIC03MSwx
NyArNzEsMTcgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBvdmVycmlk
ZTsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBz
dXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBj
b25zdCBvdmVycmlkZTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
IGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBvdmVycmlk
ZTsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3Ry
aW5nJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc2lu
Zk5hbWUoKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZl
cj4+PiBleHRyYWN0S2V5SURzU2luZihjb25zdCBTaGFyZWRCdWZmZXImKTsKLSAgICBzdGF0aWMg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVTaW5mKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+PiBleHRyYWN0S2V5SURzU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Cisg
ICAgc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNpbmYoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJp
bmcmIHNrZE5hbWUoKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJl
ZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2tkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNrZChjb25zdCBTaGFyZWRCdWZmZXIm
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7
CisgICAgc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNrZChj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBzdGF0aWMgY29uc3QgVmVjdG9y
PEZvdXJDQz4mIHZhbGlkRmFpclBsYXlTdHJlYW1pbmdTY2hlbWVzKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9Gb3JtYXREZXNj
cmlwdGlvblV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vRm9ybWF0RGVzY3JpcHRpb25VdGlsaXRpZXMuY3BwCmluZGV4IDliYWI5NTA0
NTkxMGY4MWQ3YTg0OTg5Mjk3N2Q3OTM5MDIxMDgxZWUuLmNjZmQ0YWVhMjNhN2Q3NjhmOWViMjA3
ZjVkMjhlYzg3NDg4M2UxN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9Gb3JtYXREZXNjcmlwdGlvblV0aWxpdGllcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0Zvcm1hdERlc2Ny
aXB0aW9uVXRpbGl0aWVzLmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIFN0cmluZyBjb2RlY0Zyb21G
b3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9u
KQogICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8Q0ZEYXRh
UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzYW1wbGVFeHRlbnNpb25zRGljdCwgQ0ZTVFIoImF2
Y0MiKSkpOwogICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRlbnNpb25zKQogICAgICAgICAgICAg
ICAgIHJldHVybiAiYXZjMSI7Ci0gICAgICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmRC
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7
CisgICAgICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKICAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVy
cyA9IHBhcnNlQVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQoY29uZmlndXJhdGlvblJlY29y
ZEJ1ZmZlcik7CiAgICAgICAgICAgICBpZiAoIXBhcmFtZXRlcnMpCiAgICAgICAgICAgICAgICAg
cmV0dXJuICJhdmMxIjsKQEAgLTEyOCw3ICsxMjgsNyBAQCBTdHJpbmcgY29kZWNGcm9tRm9ybWF0
RGVzY3JpcHRpb24oQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbikKICAg
ICAgICAgICAgIGF1dG8gc2FtcGxlRXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4o
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc2FtcGxlRXh0ZW5zaW9uc0RpY3QsIENGU1RSKCJodmNDIikp
KTsKICAgICAgICAgICAgIGlmICghc2FtcGxlRXh0ZW5zaW9ucykKICAgICAgICAgICAgICAgICBy
ZXR1cm4gImh2YzEiOwotICAgICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVy
ID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNhbXBsZUV4dGVuc2lvbnMpOworICAg
ICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc2FtcGxlRXh0ZW5zaW9ucyk7CiAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBw
YXJzZUhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZChrQ01WaWRlb0NvZGVjVHlwZV9IRVZD
LCBjb25maWd1cmF0aW9uUmVjb3JkQnVmZmVyKTsKICAgICAgICAgICAgIGlmICghcGFyYW1ldGVy
cykKICAgICAgICAgICAgICAgICByZXR1cm4gImh2YzEiOwpAQCAtMTQzLDcgKzE0Myw3IEBAIFN0
cmluZyBjb2RlY0Zyb21Gb3JtYXREZXNjcmlwdGlvbihDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZv
cm1hdERlc2NyaXB0aW9uKQogICAgICAgICAgICAgYXV0byBzYW1wbGVFeHRlbnNpb25zID0gc3Rh
dGljX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzYW1wbGVFeHRlbnNpb25z
RGljdCwgQ0ZTVFIoImR2Y0MiKSkpOwogICAgICAgICAgICAgaWYgKCFzYW1wbGVFeHRlbnNpb25z
KQogICAgICAgICAgICAgICAgIHJldHVybiAiZHZoMSI7Ci0gICAgICAgICAgICBhdXRvIGNvbmZp
Z3VyYXRpb25SZWNvcmRCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2Ft
cGxlRXh0ZW5zaW9ucyk7CisgICAgICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb25SZWNvcmRCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzYW1wbGVFeHRlbnNpb25zKTsKICAgICAgICAgICAg
IGF1dG8gcGFyYW1ldGVycyA9IHBhcnNlRG9WaURlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKGNv
bmZpZ3VyYXRpb25SZWNvcmRCdWZmZXIpOwogICAgICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKQog
ICAgICAgICAgICAgICAgIHJldHVybiAiZHZoMSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAppbmRl
eCAxNTliOTBjZGI0OGY3ZmU0NGJiNDliZTJlYzFjMWMyZjQzMjg2NDAwLi41NmI1OGMyNWEyODcw
OWZiMzgyMjE4MzllNTViYWU0NWVkOTNjZjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAg
LTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRh
dGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OkZhaXJQ
bGF5U3RyZWFtaW5nOyB9CiAKICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihj
b25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAg
IHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0Nh
bGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lk
IHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUmVmUHRyPENE
TUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwogICAgIHZvaWQgc2V0Q2xp
ZW50KFdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+JiYpIGZpbmFsOwpAQCAtOTQsMTAgKzk0LDEw
IEBAIHB1YmxpYzoKIAogICAgIE5TVVJMICpzdG9yYWdlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9z
dG9yYWdlVVJMLmdldCgpOyB9CiAgICAgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkKCkgY29u
c3QgeyByZXR1cm4gbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkOyB9Ci0gICAgU2hhcmVkQnVmZmVy
KiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlmaWNhdGUu
Z2V0KCk7IH0KKyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0KICAgICBBVkNvbnRl
bnRLZXlTZXNzaW9uKiBjb250ZW50S2V5U2Vzc2lvbigpOwogCi0gICAgUmV0YWluUHRyPEFWQ29u
dGVudEtleVJlcXVlc3Q+IHRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9u
RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFNoYXJlZEJ1ZmZlciYgaW5pdERh
dGEpOworICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiB0YWtlVW5leHBlY3RlZEtl
eVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSk7CiAKICAgICAvLyBBVkNvbnRl
bnRLZXlTZXNzaW9uRGVsZWdhdGVDbGllbnQKICAgICB2b2lkIGRpZFByb3ZpZGVSZXF1ZXN0KEFW
Q29udGVudEtleVJlcXVlc3QqKSBmaW5hbDsKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9u
Q2hhbmdlZChib29sKSBmaW5hbDsKICAgICB2b2lkIGV4dGVybmFsUHJvdGVjdGlvblN0YXR1c0Rp
ZENoYW5nZUZvckNvbnRlbnRLZXlSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqKSBmaW5hbDsK
IAotICAgIHVzaW5nIEtleXMgPSBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+OworICAgIHVzaW5n
IEtleXMgPSBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAgICBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JLZXlJRHMoY29u
c3QgS2V5cyYpIGNvbnN0OwogICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQyogc2Vzc2lvbkZvckdyb3VwKEFWQ29udGVudEtleVJlcG9ydEdyb3VwKikgY29uc3Q7
CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9u
Rm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgY29uc3Q7CkBAIC0xMjksNyArMTI5LDcg
QEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50PiBtX2NsaWVudDsKICAg
ICBSZXRhaW5QdHI8QVZDb250ZW50S2V5U2Vzc2lvbj4gbV9zZXNzaW9uOwogICAgIFJldGFpblB0
cjxXZWJDb3JlRlBTQ29udGVudEtleVNlc3Npb25EZWxlZ2F0ZT4gbV9kZWxlZ2F0ZTsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOworICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOwogICAgIGJvb2wgbV9wZXJz
aXN0ZW50U3RhdGVBbGxvd2VkIHsgdHJ1ZSB9OwogICAgIFJldGFpblB0cjxOU1VSTD4gbV9zdG9y
YWdlVVJMOwogICAgIFZlY3RvcjxXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQz4+IG1fc2Vzc2lvbnM7CkBAIC0xNTAsOCArMTUwLDggQEAgcHVibGljOgog
I2VuZGlmCiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb24KLSAgICB2b2lkIHJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFy
ZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lk
IHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmlu
YWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZp
bmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9z
ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAg
ICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVt
b3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0K
aW5kZXggNjJiZDEzNDc5YzZjMzM2MmNiZTcyNTFiZjY5ZWE4ZDFmODEwYmUyNS4uYmE1MDYxZWJi
NWM1ZmJlMDc0ZDNhMjlkZWE0ZjkxOGZjMjYyMWNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMu
bW0KQEAgLTIxNyw3ICsyMTcsNyBAQCBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRTX0VORAog
ICAgIHJldHVybiBBdG9tU3RyaW5nKG5zSW5pdFR5cGUpOwogfQogCi1zdGF0aWMgUmVmPFNoYXJl
ZEJ1ZmZlcj4gaW5pdGlhbGl6YXRpb25EYXRhRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0
KiByZXF1ZXN0KQorc3RhdGljIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0aWFsaXph
dGlvbkRhdGFGb3JSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAg
aWYgKCFyZXF1ZXN0KQogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKQEAg
LTI2NSw3ICsyNjUsNyBAQCBBVkNvbnRlbnRLZXlTZXNzaW9uKiBDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6Y29udGVudEtleVNlc3Npb24oKQogICAgIHJldHVybiBtX3Nlc3Np
b24uZ2V0KCk7CiB9CiAKLVJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiBDRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5p
dGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgU2hhcmVkQnVm
ZmVyJiBpbml0RGF0YSkKK1JldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiBDRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5p
dGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgZm9yIChhdXRvIHJlcXVlc3RJdGVyID0g
bV91bmV4cGVjdGVkS2V5UmVxdWVzdHMuYmVnaW4oKTsgcmVxdWVzdEl0ZXIgIT0gbV91bmV4cGVj
dGVkS2V5UmVxdWVzdHMuZW5kKCk7ICsrcmVxdWVzdEl0ZXIpIHsKICAgICAgICAgYXV0byYgcmVx
dWVzdCA9ICpyZXF1ZXN0SXRlcjsKQEAgLTMxNiw3ICszMTYsNyBAQCBwcml2YXRlOgogICAgIFJl
c3BvbnNlTWFwIG1fcmVzcG9uc2VzOwogfTsKIAotc3RhdGljIFJlZlB0cjxKU09OOjpWYWx1ZT4g
cGFyc2VKU09OVmFsdWUoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgUmVmUHRy
PEpTT046OlZhbHVlPiBwYXJzZUpTT05WYWx1ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7CiAgICAgLy8gRmFpbCBvbiBsYXJnZSBidWZmZXJzIHdob3NlIHNpemUgZG9l
c24ndCBmaXQgaW50byBhIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLgogICAgIHNpemVfdCBzaXpl
ID0gYnVmZmVyLnNpemUoKTsKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIENETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3Qg
Q0RNSwogICAgIGNhbGxiYWNrKGluaXRpYWxpemUoKSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRC
dWZmZXI+JiYgc2VydmVyQ2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQor
dm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlm
aWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgc2VydmVyQ2VydGlmaWNhdGUsIFN1
Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShM
T0dJREVOVElGSUVSKTsKICAgICBtX3NlcnZlckNlcnRpZmljYXRlID0gV1RGTW92ZShzZXJ2ZXJD
ZXJ0aWZpY2F0ZSk7CkBAIC01ODUsOCArNTg1LDggQEAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDKiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzoK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8gc2Vzc2lvbktleXMgPSBzZXNz
aW9uSW50ZXJmYWNlLT5rZXlJRHMoKTsKLSAgICAgICAgaWYgKGFueU9mKHNlc3Npb25LZXlzLCBb
Jl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIHNlc3Npb25LZXkpIHsKLSAgICAgICAgICAgIHJl
dHVybiBrZXlJRHMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYga2V5
SUQpIHsKKyAgICAgICAgaWYgKGFueU9mKHNlc3Npb25LZXlzLCBbJl0oY29uc3QgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiBzZXNzaW9uS2V5KSB7CisgICAgICAgICAgICByZXR1cm4ga2V5
SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBr
ZXlJRCkgewogICAgICAgICAgICAgICAgIHJldHVybiBrZXlJRC5nZXQoKSA9PSBzZXNzaW9uS2V5
LmdldCgpOwogICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQ7CiAgICAgICAgIH0pKQpAQCAtNjcz
LDcgKzY3Myw3IEBAIEtleXMgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjprZXlJRHMoKQogICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVk
QnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7CiAgICAgaWYgKCFpc0xpY2Vuc2VUeXBlU3VwcG9ydGVkKGxpY2Vuc2VUeXBl
KSkgewogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBmYWxz
ZSwgbGljZW5zZVR5cGUgXCIiLCBsaWNlbnNlVHlwZSwgIlwiIG5vdCBzdXBwb3J0ZWQiKTsKQEAg
LTczNiw3ICs3MzYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZQogICAgIH0KIH0KIAotc3Rh
dGljIGJvb2wgaXNFcXVhbChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCitzdGF0aWMgYm9vbCBpc0VxdWFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IGRh
dGEudHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKTsKICAgICBpZiAoIWFycmF5QnVmZmVyKQpAQCAtNzU0
LDcgKzc1NCw3IEBAIHN0YXRpYyBib29sIGlzRXF1YWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHJldHVybiBzdHJpbmdPckV4Y2VwdGlvbi5yZXR1
cm5WYWx1ZSgpID09IHZhbHVlOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlw
ZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNr
JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2V4cGlyZWRTZXNzaW9ucy5pc0VtcHR5KCkgJiYg
aXNFcXVhbChyZXNwb25zZURhdGEsICJhY2tub3dsZWRnZWQiX3MpKSB7CiAgICAgICAgIGF1dG8q
IGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKTsKQEAgLTg1Niw3
ICs4NTYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICAgICAgYXV0byBrZXlJ
RCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKmtleUlEVmVjdG9yKSk7CiAgICAgICAg
ICAgICBhdXRvIGZvdW5kSW5kZXggPSBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMu
ZmluZE1hdGNoaW5nKFsmXSAoYXV0byYgcmVxdWVzdCkgewogICAgICAgICAgICAgICAgIGF1dG8g
a2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4ga2V5SURzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4m
IGlkKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kTWF0Y2hpbmcoWyZdKGNv
bnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgaWQpIHsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGlkLmdldCgpID09IGtleUlELmdldCgpOwogICAgICAgICAgICAgICAgIH0pICE9
IG5vdEZvdW5kOwogICAgICAgICAgICAgfSk7CkBAIC0xMTU1LDcgKzExNTUsNyBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVl
c3RzKFZlY3RvcjxSZXRhaQogICAgIGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2Ut
PnNlcnZlckNlcnRpZmljYXRlKCkpCiAgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0
ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAKLSAgICB1c2luZyBSZXF1ZXN0
c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8
TlNEYXRhPj4+OworICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OwogICAgIHN0
cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CiAgICAgICAgIHVzaW5nIENhbGxiYWNrRnVuY3Rpb24g
PSBGdW5jdGlvbjx2b2lkKFJlcXVlc3RzRGF0YSYmKT47CiAgICAgICAgIHN0YXRpYyBSZWZQdHI8
Q2FsbGJhY2tBZ2dyZWdhdG9yPiBjcmVhdGUoQ2FsbGJhY2tGdW5jdGlvbiYmIGNvbXBsZXRpb25I
YW5kbGVyKQpAQCAtMTIxMSw3ICsxMjExLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAg
ICBAdHJ5IHsKICAgICAgICAgZm9yIChhdXRvIHJlcXVlc3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZh
bHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9yUmVx
dWVzdChyZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtl
eUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7CisgICAgICAgICAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKICAgICAg
ICAgICAgIGF1dG8gY29udGVudElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+
Y3JlYXRlTlNEYXRhKCk7CiAgICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVu
dEtleVJlcXVlc3REYXRhRm9yQXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZp
ZXI6Y29udGVudElkZW50aWZpZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6
W2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRlbnRLZXlS
ZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgICAgIFVO
VVNFRF9QQVJBTShlcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLmgKaW5kZXggMDMzNGQ2MjNiMmE3NjA1YzliZTEyMjEzYjVhYmRiYmFjMmIwM2YxNS4u
NjJiODNmYmZkNTc5NDA1MGViYzk0MDYzNzA0OTBiYTJiM2VjMDg3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNv
ZGVyQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFz
cyBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb247CiAKIGNsYXNzIEltYWdlRGVjb2RlckFWRk9i
akMgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyQVZG
T2JqQz4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1
YWwgfkltYWdlRGVjb2RlckFWRk9iakMoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBi
b29sIHN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSk7CkBAIC04Niw3ICs4Niw3IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1
bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykpIGZpbmFsOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFeHBl
Y3RlZENvbnRlbnRTaXplKGxvbmcgbG9uZykgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAgLTk0
LDcgKzk0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxJbWFnZURlY29k
ZXI6OkZyYW1lSW5mbz4gZnJhbWVJbmZvcygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIEltYWdl
RGVjb2RlckFWRk9iakMoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBJbWFnZURlY29kZXJB
VkZPYmpDKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBB
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgQVZBc3NldFRy
YWNrICpmaXJzdEVuYWJsZWRUcmFjaygpOwogICAgIHZvaWQgcmVhZFNhbXBsZXMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCmluZGV4IGE1NGRmM2Ri
YWRmOTA0ZjQ1NDg0YjhjZTViY2E0OWZjNTU2OGZlYjkuLjM1YzZjZTY3ZTg1Zjg2YWUxNjRjMjFh
NzI2MDdmYzA2NWVjYjUwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNv
ZGVyQVZGT2JqQy5tbQpAQCAtMjg5LDcgKzI4OSw3IEBAIEltYWdlRGVjb2RlckFWRk9iakNTYW1w
bGUqIHRvU2FtcGxlKEl0ZXJhdG9yIGl0ZXIpCiAKICNwcmFnbWEgbWFyayAtIEltYWdlRGVjb2Rl
ckFWRk9iakMKIAotUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9i
akM6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJBVkZPYmpDPiBJbWFnZURl
Y29kZXJBVkZPYmpDOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIC8vIEFWRm91
bmRhdGlvbiBtYXkgbm90IGJlIGF2YWlsYWJsZSBhdCBydW50aW1lLgogICAgIGlmICghQVZBc3Nl
dE1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLmlzQXZhaWxhYmxlKCkpCkBAIC0zMDEsNyArMzAx
LDcgQEAgUmVmUHRyPEltYWdlRGVjb2RlckFWRk9iakM+IEltYWdlRGVjb2RlckFWRk9iakM6OmNy
ZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnMKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJ
bWFnZURlY29kZXJBVkZPYmpDKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pKTsKIH0KIAotSW1hZ2VEZWNvZGVyQVZGT2JqQzo6SW1hZ2VEZWNv
ZGVyQVZGT2JqQyhTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckFWRk9i
akM6OkltYWdlRGVjb2RlckFWRk9iakMoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKQogICAgIDogSW1hZ2VEZWNvZGVyKCkKICAgICAsIG1fbWltZVR5cGUobWltZVR5cGUpCiAg
ICAgLCBtX3V0aShXZWJDb3JlOjpVVElGcm9tTUlNRVR5cGUobWltZVR5cGUpKQpAQCAtNjQxLDcg
KzY0MSw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6c2V0RXhwZWN0ZWRDb250ZW50U2l6
ZShsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKICAgICBtX2xvYWRlci5nZXQoKS5leHBl
Y3RlZENvbnRlbnRTaXplID0gZXhwZWN0ZWRDb250ZW50U2l6ZTsKIH0KIAotdm9pZCBJbWFnZURl
Y29kZXJBVkZPYmpDOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckFWRk9iakM6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgW21fbG9hZGVyIHVw
ZGF0ZURhdGE6ZGF0YS5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBjb21w
bGV0ZTphbGxEYXRhUmVjZWl2ZWRdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggMjdmMWVk
MDgyYWY2YmY5NzY4ZGUwNGUwMDRlZjI1NmRjZjI1MjQ5MS4uZWI0NTUyZTU2YTUxYWE2MGNjYzNk
ZWEzNzQzYjYzNGUxMGRkMzY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtNjcsNyArNjcs
NyBAQCBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY7CiBjbGFzcyBNZWRp
YVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7CiBjbGFz
cyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFZpZGVvTGF5ZXJNYW5hZ2VyT2JqQzsKIGNsYXNz
IFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzsKIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
cjsKQEAgLTQyNyw3ICs0MjcsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjpvcHRpb25h
bDxXYWxsVGltZT4gbV93YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRUaW1lOwogICAgIG11dGFibGUg
aW50IG1fdGltZUNvbnRyb2xTdGF0dXNBdENhY2hlZEN1cnJlbnRUaW1lIHsgMCB9OwogICAgIG11
dGFibGUgZG91YmxlIG1fcmVxdWVzdGVkUmF0ZUF0Q2FjaGVkQ3VycmVudFRpbWUgeyAwIH07Ci0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9rZXlJRDsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gbV9rZXlJRDsKICAgICBkb3VibGUgbV9jYWNoZWRSYXRlIHsgMCB9OwogICAg
IGJvb2wgbV9yZXF1ZXN0ZWRQbGF5aW5nIHsgZmFsc2UgfTsKICAgICBkb3VibGUgbV9yZXF1ZXN0
ZWRSYXRlIHsgMS4wIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBlYmYxYWI1OGFkNTc0
NWE0MDI2YmUwM2VlZWFkYzdjODhjMGNiZWJlLi4xNWRiNWVlZjZmYzMzNGNlMjllOGYyYmJlMThk
YTQzZjQ1NjBlYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTI3OTgsNyArMjc5OCw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YXR0ZW1wdFRvRGVj
cnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jCiAgICAgaWYgKCFtX2tleUlEIHx8ICFtX2NkbUlu
c3RhbmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1f
Y2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMoVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pjo6
ZnJvbSgqbV9rZXlJRCkpOworICAgIGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5j
ZS0+c2Vzc2lvbkZvcktleUlEcyhWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6
ZnJvbSgqbV9rZXlJRCkpOwogICAgIGlmICghaW5zdGFuY2VTZXNzaW9uKQogICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5oCmluZGV4IDAzNDIwZjEzODM2NGZhYzIwOTFlMTA0ZDEzNmZmMzhhMWZiOWZlMjIu
LmVhZDA4M2E2Y2M3ZTczNmI0MjE3MTBmYWMzOTJhMDdkZmY5MmJlNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtNzMs
NyArNzMsNyBAQCBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZTsKIGNsYXNzIEF1ZGlvVHJhY2tQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOwogY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM7CiBjbGFzcyBXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb247Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQ0Vycm9yQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTE1Myw3ICsxNTMs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSWQoUmVm
PE1lZGlhU2FtcGxlPiYmLCB1aW50NjRfdCB0cmFja0lkLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlw
ZSk7CiAKICAgICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcwotICAgIHZvaWQgYXBw
ZW5kKFJlZjxTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgYXBwZW5kKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGFib3J0KCkgZmluYWw7CiAg
ICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVkRnJvbU1l
ZGlhU291cmNlKCkgZmluYWw7CkBAIC0yMjEsNyArMjIxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgog
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikK
ICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+IG1fY2RtSW5z
dGFuY2U7Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBtX2tleUlEczsKKyAgICBWZWN0
b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX2tleUlEczsKICNlbmRpZgogCiAgICAg
c3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IG1fY2FjaGVkU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggM2EyODY3
YTFhYzI0M2JiOWM5M2M5ZDZiNzBjYTU2YjAyOTQ4ZmM5Yy4uMjRhZTBlMTQwNjAxOTE0M2ZhZDRm
MTUyOWU2OGVkNDliNDE2NTNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTU2Myw3ICs1NjMsNyBAQCB2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0
aWFsaXphdGlvbkRhdGFGbwogICAgIFVOVVNFRF9QQVJBTShoYXNTZXNzaW9uU2VtYXBob3JlKTsK
IH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kKFJlZjxTaGFyZWRC
dWZmZXI+JiYgZGF0YSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZChS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQogewogICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUiwgImRhdGEgbGVuZ3RoID0gIiwgZGF0YS0+c2l6ZSgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAppbmRleCA1ODM4
ZTQ5MzdkZjg5ZjU4NjFhY2Q5ZDk2ZGMxMjI5NWI2YmM3NDNkLi4wZWZlZWFlZjViMmQ3MWJjNmQ2
NzA0ZGQxYjk3NWFjYmFlMTEzYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOwogY2xhc3MgUGxhdGZvcm1SZXNvdXJjZU1lZGlh
TG9hZGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1j
bGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFz
cyBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXI+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTY1LDcgKzY1LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9p
ZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcihj
b25zdCBTaGFyZWRCdWZmZXImKTsKKyAgICB2b2lkIG5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZl
cihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDKiBtX3BhcmVudDsKICAgICBSZXRhaW5QdHI8QVZBc3NldFJlc291
cmNlTG9hZGluZ1JlcXVlc3Q+IG1fYXZSZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGI2ZTIzN2I1ZGY1ZGRmNmE3
MmQ1NDE2OTVhMDc4MjMxODFhY2FkYWQuLmY5MjFmM2RhMGU2OWIzMzk5NzdjOWUzZTQ5NjY3YTI4
ZjVlOTVjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW0KQEAgLTE1Niw3ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVk
aXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsIHsgY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KICAgICBib29sIHNob3VsZENhY2hlUmVzcG9u
c2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFs
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBkYXRhU2VudChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykgZmluYWwgeyB9Ci0g
ICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgYWNj
ZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBs
b2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKSBmaW5hbCB7IGxvYWRGYWlsZWQoZXJyb3IpOyB9CiAgICAgdm9pZCBsb2FkRmluaXNoZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwg
eyBsb2FkRmluaXNoZWQoKTsgfQpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgUGxhdGZvcm1SZXNv
dXJjZU1lZGlhTG9hZGVyOjpsb2FkRmluaXNoZWQoKQogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hl
ZCgpOwogfQogCi12b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9p
ZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAg
bV9idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgbV9wYXJlbnQubmV3RGF0YVN0
b3JlZEluU2hhcmVkQnVmZmVyKCptX2J1ZmZlci5nZXQoKSk7CkBAIC0yMjUsNyArMjI1LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXImIG1fcGFyZW50
OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CiB9OwogCiBEYXRhVVJMUmVzb3VyY2VNZWRpYUxvYWRlcjo6RGF0YVVSTFJlc291cmNlTWVk
aWFMb2FkZXIoV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyJiBwYXJlbnQsIFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QpCkBAIC0yMzUsNyArMjM1LDcgQEAgRGF0YVVSTFJlc291cmNlTWVkaWFMb2Fk
ZXI6OkRhdGFVUkxSZXNvdXJjZU1lZGlhTG9hZGVyKFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlciYK
IAogICAgIGlmIChhdXRvIHJlc3VsdCA9IERhdGFVUkxEZWNvZGVyOjpkZWNvZGUocmVxdWVzdC51
cmwoKSwgRGF0YVVSTERlY29kZXI6Ok1vZGU6OkZvcmdpdmluZ0Jhc2U2NCkpIHsKICAgICAgICAg
bV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxSZXNwb25zZShyZXF1ZXN0LnVy
bCgpLCAqcmVzdWx0KTsKLSAgICAgICAgbV9idWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZShyZXN1bHQtPmRhdGEpKTsKKyAgICAgICAgbV9idWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdC0+ZGF0YSkpOwogICAgIH0KIAogICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIHsKQEAg
LTM4NSw3ICszODUsNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6bG9hZEZpbmlz
aGVkKCkKICAgICBzdG9wTG9hZGluZygpOwogfQogCi12b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlcjo6bmV3RGF0YVN0b3JlZEluU2hhcmVkQnVmZmVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKK3ZvaWQgV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyOjpuZXdEYXRhU3RvcmVkSW5TaGFyZWRC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBVkFzc2V0
UmVzb3VyY2VMb2FkaW5nRGF0YVJlcXVlc3QqIGRhdGFSZXF1ZXN0ID0gW21fYXZSZXF1ZXN0IGRh
dGFSZXF1ZXN0XTsKICAgICBpZiAoIWRhdGFSZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5oCmluZGV4IDQ2YjA3ZmU3MTJlNzllNjEzMTdjMGQxMTZmZTZhM2YwNGFmOWZmY2IuLjk0
MTliY2VhMzhkYmY4ZDY0OTJmNjgwMWQ5YTIxNTYyMzY2YTJjNmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmgKQEAgLTMxLDExICszMSwxMSBAQCB0eXBlZGVmIHN0cnVjdCBGVF9GYWNl
UmVjXyogIEZUX0ZhY2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnRDcmVhdGlvbkNv
bnRleHQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIHN0cnVj
dCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50
U2V0dGluZ3M7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RydWN0IEZvbnRDdXN0b21QbGF0Zm9ybURh
dGEgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEZvbnRDdXN0b21QbGF0Zm9ybURhdGEpOwogcHVibGljOgotICAgIEZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoRlRfRmFjZSwgU2hhcmVkQnVmZmVyJik7CisgICAgRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShGVF9GYWNlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgfkZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEoKSA9IGRlZmF1bHQ7CiAgICAgRm9udFBsYXRmb3JtRGF0YSBmb250UGxhdGZv
cm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMsIGNv
bnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zvcm1h
dChjb25zdCBTdHJpbmcmKTsKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8
Y2Fpcm9fZm9udF9mYWNlX3Q+IG1fZm9udEZhY2U7CiB9OwogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9u
dEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZm
ZXImLCBjb25zdCBTdHJpbmcmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5j
cHAKaW5kZXggMjAzNWM5OWE3ZjY4YjU0ODljODU4YTNlNmQ3MDMzZDEzNWQxZjdkYi4uYjZkM2Vi
MzYzMTEyNDQ2MTNiMzgwM2YyZjNkMjRkMzA4N2VhMjRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjMx
LDcgKzIzMSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEludFNpemU+IGRlbnNpdHlDb3JyZWN0
ZWRTaXplRnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVmCiAjaWYgIVBMQVRGT1JNKENPQ09B
KQogc2l6ZV90IHNoYXJlZEJ1ZmZlckdldEJ5dGVzQXRQb3NpdGlvbih2b2lkKiBpbmZvLCB2b2lk
KiBidWZmZXIsIG9mZl90IHBvc2l0aW9uLCBzaXplX3QgY291bnQpCiB7Ci0gICAgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcio+KGluZm8pOworICAgIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGlj
X2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7CiAgICAgc2l6ZV90IHNvdXJjZVNpemUgPSBzaGFy
ZWRCdWZmZXItPnNpemUoKTsKICAgICBpZiAocG9zaXRpb24gPj0gc291cmNlU2l6ZSkKICAgICAg
ICAgcmV0dXJuIDA7CkBAIC0yNDQsMTIgKzI0NCwxMiBAQCBzaXplX3Qgc2hhcmVkQnVmZmVyR2V0
Qnl0ZXNBdFBvc2l0aW9uKHZvaWQqIGluZm8sIHZvaWQqIGJ1ZmZlciwgb2ZmX3QgcG9zaXRpb24s
CiAKIHZvaWQgc2hhcmVkQnVmZmVyUmVsZWFzZSh2b2lkKiBpbmZvKQogewotICAgIFNoYXJlZEJ1
ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oaW5mbyk7Cisg
ICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcio+KGluZm8pOwogICAgIHNoYXJlZEJ1ZmZlci0+ZGVyZWYoKTsK
IH0KICNlbmRpZgogCi1JbWFnZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coU2hhcmVkQnVmZmVy
JiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURl
Y29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gdXRpSGludDsKICAgICBpZiAoZGF0YS5zaXplKCkgPj0gMzIpCkBAIC01NjIs
MjAgKzU2MiwyMCBAQCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlRGVjb2RlckNHOjpjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaQogICAgIHJldHVybiBtYXNrZWRJ
bWFnZSA/IG1hc2tlZEltYWdlIDogaW1hZ2U7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyQ0c6OnNl
dERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1h
Z2VEZWNvZGVyQ0c6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgbV9pc0FsbERhdGFSZWNlaXZlZCA9IGFsbERhdGFSZWNl
aXZlZDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIC8vIE9uIE1hYyB0aGUgTlNEYXRhIGlu
c2lkZSB0aGUgU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0
IHRoZSBTaGFyZWRCdWZmZXIncyBrbm93bGVkZ2UuCi0gICAgLy8gV2UgdXNlIFNoYXJlZEJ1ZmZl
cidzIGFiaWxpdHkgdG8gd3JhcCBpdHNlbGYgaW5zaWRlIENGRGF0YSB0byBnZXQgYXJvdW5kIHRo
aXMsIGVuc3VyaW5nIHRoYXQgSW1hZ2VJTyBpcwotICAgIC8vIHJlYWxseSBsb29raW5nIGF0IHRo
ZSBTaGFyZWRCdWZmZXIuCisgICAgLy8gT24gTWFjIHRoZSBOU0RhdGEgaW5zaWRlIHRoZSBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyIGNhbiBiZSBzZWNyZXRseSBhcHBlbmRlZCB0byB3aXRob3V0IHRo
ZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJ3Mga25vd2xlZGdlLgorICAgIC8vIFdlIHVzZSBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJ3MgYWJpbGl0eSB0byB3cmFwIGl0c2VsZiBpbnNpZGUgQ0ZEYXRh
IHRvIGdldCBhcm91bmQgdGhpcywgZW5zdXJpbmcgdGhhdCBJbWFnZUlPIGlzCisgICAgLy8gcmVh
bGx5IGxvb2tpbmcgYXQgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCiAgICAgQ0dJbWFnZVNv
dXJjZVVwZGF0ZURhdGEobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBkYXRhLm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogI2Vsc2UKLSAgICAv
LyBDcmVhdGUgYSBDR0RhdGFQcm92aWRlciB0byB3cmFwIHRoZSBTaGFyZWRCdWZmZXIuCisgICAg
Ly8gQ3JlYXRlIGEgQ0dEYXRhUHJvdmlkZXIgdG8gd3JhcCB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlci4KICAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOwog
ICAgIGNvbnRpZ3VvdXNEYXRhLmdldCgpLnJlZigpOwotICAgIC8vIFdlIHVzZSB0aGUgR2V0Qnl0
ZXNBdFBvc2l0aW9uIGNhbGxiYWNrIHJhdGhlciB0aGFuIHRoZSBHZXRCeXRlUG9pbnRlciBvbmUg
YmVjYXVzZSBTaGFyZWRCdWZmZXIKKyAgICAvLyBXZSB1c2UgdGhlIEdldEJ5dGVzQXRQb3NpdGlv
biBjYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgR2V0Qnl0ZVBvaW50ZXIgb25lIGJlY2F1c2UgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcgogICAgIC8vIGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8gbG9j
ayBkb3duIHRoZSBieXRlIHBvaW50ZXIgYW5kIGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IG1vdmUs
IHdoaWNoCiAgICAgLy8gaXMgYSByZXF1aXJlbWVudCBmb3IgdXNpbmcgdGhlIEdldEJ5dGVQb2lu
dGVyIGNhbGxiYWNrLgogICAgIENHRGF0YVByb3ZpZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVy
Q2FsbGJhY2tzID0geyAwLCAwLCAwLCBzaGFyZWRCdWZmZXJHZXRCeXRlc0F0UG9zaXRpb24sIHNo
YXJlZEJ1ZmZlclJlbGVhc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCmluZGV4IDk3NDA3MzZhMjFhYzk5OGFiMDVmMWM5
YjRmNWIxNjc1ZTQ0ZDJjOTEuLmEwYWMxYzJmYmVlNTI3ZTVhYjExMTQ1NTgxMmJkYjczNjNhMDU1
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
RGVjb2RlckNHLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuaApAQCAtMzIsOSArMzIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBJbWFnZURlY29kZXJDRyBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEltYWdlRGVjb2RlckNHKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAg
ICBJbWFnZURlY29kZXJDRyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCi0gICAgc3RhdGljIFJlZjxJbWFnZURl
Y29kZXJDRz4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQorICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyQ0c+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJDRyhkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoK
IAogICAgIFBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBT
dWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2Rp
bmdPcHRpb25zJiA9IERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkg
ZmluYWw7CiAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBj
bGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3Jt
RGF0YUNvY29hLm1tCmluZGV4IDg0NGFjNDRmM2FkZGZhOWYzOTU3ODZiOTRiZGQ1MDk0MWU3Mjc1
NGIuLjg1NDIxZTNkZTcwOWNlMTU5YzQ5NGI0MGZiOGQxYWQyMzU5M2MzYmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
UGxhdGZvcm1EYXRhQ29jb2EubW0KQEAgLTU3LDcgKzU3LDcgQEAgYm9vbCBGb250UGxhdGZvcm1E
YXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgb3RoZXIpIGNvbnN0
CiAgICAgcmV0dXJuIENGRXF1YWwobV9mb250LmdldCgpLCBvdGhlci5tX2ZvbnQuZ2V0KCkpOwog
fQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxh
dGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90KSBjb25zdAog
ewogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5jcHAKaW5kZXgg
Zjc0N2Q4MGZiNjFkMzBmYzUwMjJlNjgyZDYzNTYxMzNkM2NhNjk3YS4uYzhhODA2MTIyMDUzZjY0
OGFkZGIwMmFjMzg5Y2U3MTQzNjhkYmJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuY3BwCkBA
IC04MCw3ICs4MCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyOjpzZXRNaW5pbXVtQXVkaW9T
YW1wbGVEdXJhdGlvbihmbG9hdCkKIHsKIH0KIAotU291cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50
OjpTZWdtZW50KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorU291cmNlQnVmZmVyUGFyc2Vy
OjpTZWdtZW50OjpTZWdtZW50KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
ICAgICA6IG1fc2VnbWVudChXVEZNb3ZlKGJ1ZmZlcikpCiB7CiB9CkBAIC0xMDEsNyArMTAxLDcg
QEAgc2l6ZV90IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6c2l6ZSgpIGNvbnN0CiAgICAg
ICAgICAgICByZXR1cm4gY2xhbXBUbzxzaXplX3Q+KE1UUGx1Z2luQnl0ZVNvdXJjZUdldExlbmd0
aChieXRlU291cmNlLmdldCgpKSk7CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29u
c3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAgICAgICAgW10oY29uc3QgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biBidWZmZXItPnNpemUoKTsKICAgICAgICAgfQpAQCAtMTI1LDcgKzEyNSw3IEBAIGF1dG8gU291
cmNlQnVmZmVyUGFyc2VyOjpTZWdtZW50OjpyZWFkKHNpemVfdCBwb3NpdGlvbiwgc2l6ZV90IHNp
emVUb1JlYWQsIHVpbnQ4CiAgICAgICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxSZWFkRXJyb3I+
IHsgUmVhZEVycm9yOjpGYXRhbEVycm9yIH07CiAgICAgICAgIH0sCiAjZW5kaWYKLSAgICAgICAg
WyZdKGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIC0+IFJlYWRSZXN1bHQKKyAgICAg
ICAgWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZWFk
UmVzdWx0CiAgICAgICAgIHsKICAgICAgICAgICAgIGJ1ZmZlci0+Y29weVRvKGRlc3RpbmF0aW9u
LCBwb3NpdGlvbiwgc2l6ZVRvUmVhZCk7CiAgICAgICAgICAgICByZXR1cm4gc2l6ZVRvUmVhZDsK
QEAgLTEzMyw3ICsxMzMsNyBAQCBhdXRvIFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6cmVh
ZChzaXplX3QgcG9zaXRpb24sIHNpemVfdCBzaXplVG9SZWFkLCB1aW50OAogICAgICk7CiB9CiAK
LVJlZjxTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVudDo6dGFrZVNoYXJl
ZEJ1ZmZlcigpCitSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gU291cmNlQnVmZmVyUGFyc2Vy
OjpTZWdtZW50Ojp0YWtlU2hhcmVkQnVmZmVyKCkKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihtX3NlZ21lbnQsCiAjaWYgSEFWRShNVF9QTFVHSU5fRk9STUFUX1JFQURFUikKQEAgLTE0Miwy
OCArMTQyLDI4IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVu
dDo6dGFrZVNoYXJlZEJ1ZmZlcigpCiAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9y
KHNpemUoKSk7CiAgICAgICAgICAgICBhdXRvIHJlYWRSZXN1bHQgPSByZWFkKDAsIHZlY3Rvci5z
aXplKCksIHZlY3Rvci5kYXRhKCkpOwogICAgICAgICAgICAgaWYgKCFyZWFkUmVzdWx0Lmhhc192
YWx1ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsK
ICAgICAgICAgICAgIHZlY3Rvci5zaHJpbmsocmVhZFJlc3VsdC52YWx1ZSgpKTsKLSAgICAgICAg
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3RvcikpOworICAgICAg
ICAgICAgcmV0dXJuIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKHZlY3Rv
cikpOwogICAgICAgICB9LAogI2VuZGlmCi0gICAgICAgIFsmXShSZWY8U2hhcmVkQnVmZmVyPiYg
YnVmZmVyKQorICAgICAgICBbJl0oUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKGJ1ZmZlciwgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKSk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShi
dWZmZXIsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpKTsKICAgICAgICAgfQogICAg
ICk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFNvdXJjZUJ1ZmZlclBhcnNlcjo6U2VnbWVu
dDo6Z2V0U2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBTb3VyY2VCdWZmZXJQYXJzZXI6OlNlZ21lbnQ6OmdldFNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9zZWdtZW50LAogI2lmIEhBVkUoTVRfUExVR0lO
X0ZPUk1BVF9SRUFERVIpCi0gICAgICAgIFsmXShjb25zdCBSZXRhaW5QdHI8TVRQbHVnaW5CeXRl
U291cmNlUmVmPiYpIC0+IFJlZlB0cjxTaGFyZWRCdWZmZXI+CisgICAgICAgIFsmXShjb25zdCBS
ZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiYpIC0+IFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPgogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgfSwKICNlbmRpZgotICAgICAgICBbJl0oY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikgLT4gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4KKyAgICAgICAgWyZdKGNvbnN0IFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKSAtPiBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4KICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5wdHIoKTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAppbmRleCA1MjBiNTIwN2ZjMjcxZDc5ODE1MzNmYjE0ZDIz
MTU1OTRhODg4MzY1Li43Mjk3YTc5MTRhNzlhZGY2NDJkYzZiMTZiMzZlNjBmOWNkMDI5ZjBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENvbnRlbnRUeXBlOwogY2xhc3MgTWVkaWFTYW1wbGU7Ci1jbGFzcyBTaGFy
ZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBXRUJDT1JF
X0VYUE9SVCBTb3VyY2VCdWZmZXJQYXJzZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
U291cmNlQnVmZmVyUGFyc2VyPiB7CiBwdWJsaWM6CkBAIC02OSwxMSArNjksMTEgQEAgcHVibGlj
OgogI2lmIEhBVkUoTVRfUExVR0lOX0ZPUk1BVF9SRUFERVIpCiAgICAgICAgIFNlZ21lbnQoUmV0
YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJik7CiAjZW5kaWYKLSAgICAgICAgU2VnbWVu
dChSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICAgICAgU2VnbWVudChSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJik7CiAgICAgICAgIFNlZ21lbnQoU2VnbWVudCYmKSA9IGRlZmF1bHQ7Ci0g
ICAgICAgIFJlZjxTaGFyZWRCdWZmZXI+IHRha2VTaGFyZWRCdWZmZXIoKTsKLSAgICAgICAgLy8g
V2lsbCByZXR1cm4gbnVsbHB0ciBpZiBTZWdtZW50J3MgYmFja2VuZCBpc24ndCBhIFNoYXJlZEJ1
ZmZlci4KLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZ2V0U2hhcmVkQnVmZmVyKCkgY29u
c3Q7CisgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiB0YWtlU2hhcmVkQnVmZmVy
KCk7CisgICAgICAgIC8vIFdpbGwgcmV0dXJuIG51bGxwdHIgaWYgU2VnbWVudCdzIGJhY2tlbmQg
aXNuJ3QgYSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgorICAgICAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gZ2V0U2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICAgICAgc2l6ZV90
IHNpemUoKSBjb25zdDsKIApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAjaWYgSEFWRShNVF9Q
TFVHSU5fRk9STUFUX1JFQURFUikKICAgICAgICAgICAgIFJldGFpblB0cjxNVFBsdWdpbkJ5dGVT
b3VyY2VSZWY+LAogI2VuZGlmCi0gICAgICAgICAgICBSZWY8U2hhcmVkQnVmZmVyPgorICAgICAg
ICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+CiAgICAgICAgID4gbV9zZWdtZW50Owog
ICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggNjFkYmQ2MmM5
ZTNlOWYzMTU3OTg1MDVlYjUwNDBmOTlmZjhjNWJmMS4uOWJjMTg5NDE5ODYzMGJhZDhkN2NiZDBi
M2E1YjI4ZTQ2ZTllZmUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAg
LTM4OCw3ICszODgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgYWR2YW5jZVRvTmV4dFNl
Z21lbnQoKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IGN1cnJlbnRTZWdtZW50
LmdldFNoYXJlZEJ1ZmZlcigpOworICAgICAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHNoYXJlZEJ1ZmZlciA9IGN1cnJlbnRTZWdtZW50LmdldFNoYXJlZEJ1ZmZlcigpOwog
ICAgICAgICAgICAgQ01CbG9ja0J1ZmZlclJlZiByYXdCbG9ja0J1ZmZlciA9IG51bGxwdHI7CiAg
ICAgICAgICAgICB1aW50NjRfdCBsYXN0UmVhZCA9IDA7CiAgICAgICAgICAgICBzaXplX3QgZGVz
dGluYXRpb25PZmZzZXQgPSBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKQEAgLTQwOSw3ICs0MDks
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25PZmZzZXQgPSAwOwogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoc2hhcmVkQnVmZmVyLT5o
YXNPbmVTZWdtZW50KCksICJDYW4gb25seSBkZWFsIHdpdGggc2hhcmVkQnVmZmVyIGNvbnRhaW5p
bmcgYSBzaW5nbGUgRGF0YVNlZ21lbnQiKTsKLSAgICAgICAgICAgICAgICAvLyBBIFNoYXJlZEJ1
ZmZlciBkb2Vzbid0IGhhdmUgdGhyZWFkLXNhZmUgcmVmY291bnRpbmcsIGFzIHN1Y2ggd2UgbXVz
dCBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBEYXRhU2VnbWVudCBpbnN0ZWFkLgorICAgICAgICAg
ICAgICAgIC8vIEEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBkb2Vzbid0IGhhdmUgdGhyZWFkLXNh
ZmUgcmVmY291bnRpbmcsIGFzIHN1Y2ggd2UgbXVzdCBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBE
YXRhU2VnbWVudCBpbnN0ZWFkLgogICAgICAgICAgICAgICAgIC8vIFRPRE86IGNvdWxkIHdlIG9u
bHkgY3JlYXRlIGEgbmV3IENNQmxvY2tCdWZmZXIgaWYgdGhlIGJhY2tlbmQgbWVtb3J5IGNoYW5n
ZWQgc2luY2UgdGhlIHByZXZpb3VzIG9uZT8KICAgICAgICAgICAgICAgICBhdXRvIGZpcnN0U2Vn
bWVudCA9IHNoYXJlZEJ1ZmZlci0+YmVnaW4oKS0+c2VnbWVudDsKICAgICAgICAgICAgICAgICBz
aXplX3QgY2FuUmVhZCA9IHN0ZDo6bWluPHNpemVfdD4obnVtVG9SZWFkLCBmaXJzdFNlZ21lbnQt
PnNpemUoKSAtIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxh
dGZvcm1EYXRhQ29yZVRleHQuY3BwCmluZGV4IGNjNTk0ZjM4NGU1NjM1ZGVkYThmNDIzZjY4NGRh
NWI1NTQ5NzA2NzEuLjU5ZDIxNjY3OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQ
bGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcApAQCAtMTUxLDEwICsx
NTEsMTAgQEAgUmV0YWluUHRyPENGVHlwZVJlZj4gRm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9y
RXF1YWxpdHlDaGVjaygpIGNvbnN0CiAgICAgcmV0dXJuIG9iamVjdEZvckVxdWFsaXR5Q2hlY2so
Y3RGb250KCkpOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRm
b3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUp
IGNvbnN0CiB7CiAgICAgaWYgKFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENU
Rm9udENvcHlUYWJsZShjdEZvbnQoKSwgdGFibGUsIGtDVEZvbnRUYWJsZU9wdGlvbk5vT3B0aW9u
cykpKQotICAgICAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
Z2V0KCkpOworICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSk7
CiAKICAgICByZXR1cm4gcGxhdGZvcm1PcGVuVHlwZVRhYmxlKHRhYmxlKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggYjNjMTRlYzliNjlkOTNl
YTBmZjJmZGVmZWUzMjNlYTA0NzRkZjlmZC4uNDYzYjEzNDZkYzM3MjM0NWE0OWNiOGE1YjU2MjJk
MjZkNzg2MTQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5j
cHAKQEAgLTczOCw3ICs3MzgsNyBAQCBEaWRDaGFuZ2VJdGVtQnVmZmVyIEl0ZW1CdWZmZXI6OnN3
YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKHNpemVfdCBudW1iZXJPZkJ5dGVzKQogdm9pZCBJdGVt
QnVmZmVyOjphcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJdGVtJiB0ZW1wb3JhcnlJdGVtKQogewog
ICAgIGF1dG8gcmVxdWlyZWRTaXplRm9ySXRlbSA9IG1fd3JpdGluZ0NsaWVudC0+cmVxdWlyZWRT
aXplRm9ySXRlbSh0ZW1wb3JhcnlJdGVtKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvdXRP
ZkxpbmVJdGVtOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBvdXRPZkxpbmVJ
dGVtOwogICAgIGlmICghcmVxdWlyZWRTaXplRm9ySXRlbSkgewogICAgICAgICBvdXRPZkxpbmVJ
dGVtID0gbV93cml0aW5nQ2xpZW50LT5lbmNvZGVJdGVtT3V0T2ZMaW5lKHRlbXBvcmFyeUl0ZW0p
OwogICAgICAgICBpZiAoIW91dE9mTGluZUl0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtQnVmZmVyLmgKaW5kZXggYzg3MzE5ODJlZjgzOTMxYmJhZTMxYjc4NjUwYWMwZGEyMGEw
NWZjNS4uYjMxYmM1ZmQ0ZTkyMTRiMTVhMzc2MWZiZTk4ZDYwY2ViNDdhOThmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaApAQCAtMTAyLDcgKzEwMiw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxp
c3RJdGVtJikgY29uc3QKKyAgICB2aXJ0dWFsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xNjgsNyArMTY4LDcgQEAgcHVi
bGljOgogICAgIC8vIHdpdGggcGFkZGluZyBiZXR3ZWVuIGVhY2ggaXRlbSB0byBlbnN1cmUgdGhh
dCBhbGwgaXRlbXMgYXJlIGFsaWduZWQgdG8gOCBieXRlcy4KICAgICAvLwogICAgIC8vIElmIGEg
d3JpdGluZyBjbGllbnQgaXMgcHJlc2VudCBhbmQgcmVxdWlyZXMgY3VzdG9tIGVuY29kaW5nIGZv
ciB0aGUgZ2l2ZW4gaXRlbSB0eXBlIFQsIHRoZQotICAgIC8vIGl0ZW0gYnVmZmVyIHdpbGwgYXNr
IHRoZSBjbGllbnQgZm9yIGFuIG9wYXF1ZSBTaGFyZWRCdWZmZXIgY29udGFpbmluZyBlbmNvZGVk
IGRhdGEgZm9yIHRoZQorICAgIC8vIGl0ZW0gYnVmZmVyIHdpbGwgYXNrIHRoZSBjbGllbnQgZm9y
IGFuIG9wYXF1ZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgZW5jb2RlZCBkYXRh
IGZvciB0aGUKICAgICAvLyBpdGVtLiBUaGlzIGVuY29kZWQgZGF0YSBpcyB0aGVuIGFwcGVuZGVk
IHRvIHRoZSBpdGVtIGJ1ZmZlciwgd2l0aCBwYWRkaW5nIHRvIGVuc3VyZSB0aGF0CiAgICAgLy8g
dGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhpcyBkYXRhIGFyZSBhbGlnbmVkIHRvIDggYnl0ZXMsIGlm
IG5lY2Vzc2FyeS4gV2hlbiBjb25zdW1pbmcgZW5jb2RlZAogICAgIC8vIGl0ZW0gZGF0YSwgYSBj
b3JyZXNwb25kaW5nIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IHdpbGwgYmUgcmVxdWlyZWQgdG8g
Y29udmVydCB0aGlzIGVuY29kZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhRnJlZVR5cGUuY3BwCmluZGV4IGNjZGFkYjBkYTExYjU5ODVhMzQzODYxOWRiMGRmMjMz
MDFhNzI1YTMuLjJiNDQzZmJiZWQyYzFmZGU0OGJjZGU5Y2JlNDA5NTM0OTdmZGU5MTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udEN1c3RvbVBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcApAQCAt
MzgsMTIgKzM4LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHZvaWQgcmVsZWFz
ZUN1c3RvbUZvbnREYXRhKHZvaWQqIGRhdGEpCiB7Ci0gICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVm
ZmVyKj4oZGF0YSktPmRlcmVmKCk7CisgICAgc3RhdGljX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcio+KGRhdGEpLT5kZXJlZigpOwogfQogCiBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tleV90
IGZyZWVUeXBlRmFjZUtleTsKIAotRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Rm9udEN1c3RvbVBs
YXRmb3JtRGF0YShGVF9GYWNlIGZyZWVUeXBlRmFjZSwgU2hhcmVkQnVmZmVyJiBidWZmZXIpCitG
b250Q3VzdG9tUGxhdGZvcm1EYXRhOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhKEZUX0ZhY2UgZnJl
ZVR5cGVGYWNlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgOiBtX2ZvbnRG
YWNlKGFkb3B0UmVmKGNhaXJvX2Z0X2ZvbnRfZmFjZV9jcmVhdGVfZm9yX2Z0X2ZhY2UoZnJlZVR5
cGVGYWNlLCBGVF9MT0FEX0RFRkFVTFQpKSkKIHsKICAgICBidWZmZXIucmVmKCk7IC8vIFRoaXMg
aXMgYmFsYW5jZWQgYnkgdGhlIGJ1ZmZlci0+ZGVyZWYoKSBpbiByZWxlYXNlQ3VzdG9tRm9udERh
dGEuCkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZUZyZWVUeXBlTGli
cmFyeShGVF9MaWJyYXJ5JiBsaWJyYXJ5KQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYpCitzdGQ6
OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJikKIHsKICAgICBzdGF0
aWMgRlRfTGlicmFyeSBsaWJyYXJ5OwogICAgIGlmICghbGlicmFyeSAmJiAhaW5pdGlhbGl6ZUZy
ZWVUeXBlTGlicmFyeShsaWJyYXJ5KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRQbGF0Zm9ybURhdGFG
cmVlVHlwZS5jcHAKaW5kZXggZmVkODU0MGY0YWViYzg0YzY5YjI5MDgwNjk3YzEyNDYwMWQ1YjYy
Ni4uNjg5Y2I2NzllNjMyZTJmNWEyYTJmZTA2NDU4MTFkODg2NmE5MGM0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3JtRGF0
YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgYm9v
bCBGb250UGxhdGZvcm1EYXRhOjpoYXNDb21wYXRpYmxlQ2hhcm1hcCgpIGNvbnN0CiAgICAgICAg
ICYmIEZUX1NlbGVjdF9DaGFybWFwKGZyZWVUeXBlRmFjZSwgZnRfZW5jb2RpbmdfYXBwbGVfcm9t
YW4pKTsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvbnRQbGF0Zm9ybURh
dGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBGb250UGxhdGZvcm1EYXRhOjpvcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25z
dAogewogICAgIENhaXJvRnRGYWNlTG9ja2VyIGNhaXJvRnRGYWNlTG9ja2VyKG1fc2NhbGVkRm9u
dC5nZXQoKSk7CiAgICAgRlRfRmFjZSBmcmVlVHlwZUZhY2UgPSBjYWlyb0Z0RmFjZUxvY2tlci5m
dEZhY2UoKTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gRm9udFBsYXRmb3JtRGF0YTo6b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgYwogICAg
IGlmIChlcnJvciB8fCB0YWJsZVNpemUgIT0gZXhwZWN0ZWRUYWJsZVNpemUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShkYXRhKSk7CiB9CiAKICNpZiBVU0UoSEFSRkJVWlopICYmICFFTkFCTEUoT1BFTlRZUEVfTUFU
SCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggYjc0OWZjMTU4ZGZhYmVmZDNiZDhj
NDU0OThiYTBhNWIyOTNiZjQwOS4uY2RlZDRhNjBiNTBiYmJhZWE1Yjg0NWJkZWZiYjY4NmZlMjUy
NTkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTQyNCw5ICs0MjQsOSBAQCBW
ZWN0b3I8dWludDhfdD4gR3N0TWFwcGVkQnVmZmVyOjpjcmVhdGVWZWN0b3IoKSBjb25zdAogICAg
IHJldHVybiB7IGRhdGEoKSwgc2l6ZSgpIH07CiB9CiAKLVJlZjxDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKK1JlZjxTaGFy
ZWRCdWZmZXI+IEdzdE1hcHBlZE93bmVkQnVmZmVyOjpjcmVhdGVTaGFyZWRCdWZmZXIoKQogewot
ICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoKnRoaXMpOworICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CiB9CiAKIGJvb2wgaXNHU3RyZWFtZXJQ
bHVnaW5BdmFpbGFibGUoY29uc3QgY2hhciogbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApp
bmRleCAyYjYwNTkyMzliYjdmMGQ4ZmJlNDU2MDI2ZTU4MmEzZmM2ZjA5YzE2Li5kODJjZDNlMThl
Y2UwNDc2MWQ2YWQ0ZWMyZDUyZTJhZDlkYzM4NDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5o
CkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFNpemU7
Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBp
bmxpbmUgYm9vbCB3ZWJraXRHc3RDaGVja1ZlcnNpb24oZ3VpbnQgbWFqb3IsIGd1aW50IG1pbm9y
LCBndWludCBtaWNybykKIHsKQEAgLTE5MCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHVu
bWFwRWFybHkoKTsKICAgICB9CiAKLSAgICBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gY3Jl
YXRlU2hhcmVkQnVmZmVyKCk7CisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlU2hhcmVkQnVm
ZmVyKCk7CiAKIHByaXZhdGU6CiAgICAgR3N0TWFwcGVkT3duZWRCdWZmZXIoR1JlZlB0cjxHc3RC
dWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApp
bmRleCAyOWIzYTUwMWQ4ZTlhOTYyYTBjM2QwNGZiMjYxMjZlYTQzYTM1NTI2Li5kZmJjNTgwZmI4
ZTliMzA5MzZjY2EwOGJiODhiNDljMmJiNjUzYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyLmNwcApAQCAtODEsMTIgKzgxLDEyIEBAIEltYWdlRGVjb2RlckdTdHJlYW1l
clNhbXBsZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRlcikKICAgICByZXR1cm4gKEltYWdlRGVjb2Rl
ckdTdHJlYW1lclNhbXBsZSopaXRlci0+c2Vjb25kLmdldCgpOwogfQogCi1SZWZQdHI8SW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyPiBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZShTaGFyZWRCdWZm
ZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikK
K1JlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3Jl
YXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFn
ZURlY29kZXJHU3RyZWFtZXIoZGF0YSwgbWltZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikpOwogfQogCi1JbWFnZURlY29kZXJHU3RyZWFtZXI6OkltYWdlRGVj
b2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckdT
dHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikKICAgICA6IG1fbWltZVR5cGUobWltZVR5cGUpCiB7CiAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwpAQCAtMTk5LDcgKzE5OSw3IEBAIFBsYXRmb3JtSW1hZ2VQ
dHIgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCkKK3ZvaWQgSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wp
CiB7CiAgICAgcHVzaEVuY29kZWREYXRhKGRhdGEpOwogfQpAQCAtNDI2LDcgKzQyNiw3IEBAIEVu
Y29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW5uZXJEZWNvZGVyOjplbmNv
ZGVkRGF0YVN0YXR1cygpIGNvbnN0CiAgICAgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpVbmtu
b3duOwogfQogCi12b2lkIEltYWdlRGVjb2RlckdTdHJlYW1lcjo6cHVzaEVuY29kZWREYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnB1
c2hFbmNvZGVkRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAg
ICAgYXV0byBjb250aWd1b3VzQnVmZmVyID0gYnVmZmVyLm1ha2VDb250aWd1b3VzKCk7CiAgICAg
bV9lb3MgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAppbmRleCA2
NmYzMzcyODQ2YTRkZjg3NGY0MjBkYjY1NGU2ODljOWU0M2IwYzUyLi5kM2VmNmE0NWNkN2RiZGZj
MzEyMGVhMjNmOGRlYjNjNTk5NzFhZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5oCkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIEltYWdlRGVjb2RlckdTdHJlYW1lciBmaW5h
bCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2RlckdTdHJlYW1lcik7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IGNyZWF0ZShTaGFyZWRC
dWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pOwotICAgIEltYWdlRGVjb2RlckdTdHJlYW1lcihTaGFyZWRCdWZmZXIm
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBjcmVh
dGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBB
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfklt
YWdlRGVjb2RlckdTdHJlYW1lcigpID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBib29sIHN1cHBv
cnRzTWVkaWFUeXBlKE1lZGlhVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID09IE1lZGlhVHlwZTo6
VmlkZW87IH0KQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIFBsYXRmb3JtSW1hZ2VQdHIg
Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2Ft
cGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nT3B0
aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2b2lkIHNldEV4
cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNldERhdGEo
U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0
RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFs
OwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Vv
czsgfQogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgZmluYWw7CiAKQEAg
LTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICB2b2lkIGhhbmRsZVNhbXBs
ZShHUmVmUHRyPEdzdFNhbXBsZT4mJik7Ci0gICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBwdXNoRW5jb2RlZERhdGEoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgY29uc3QgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxl
KiBzYW1wbGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggM2EyMDE1NzgwMTQ4ODEwYWNlNTRkZjdi
MDhlNGRmN2ZkNTIzN2Q2Ni4uMmRlMmQ4NDYwZDU4ZjBhMWI5YjgzMTMzNWFkNjU5YTM3ZGYyMzY3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
QEAgLTM2NjMsNiArMzY2MywxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoSW5pdERhdGEmJiBpbml0RAogewogICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOwogCisgICAgaWYgKCFpbml0RGF0YS5wYXlsb2FkKCkpIHsK
KyAgICAgICAgR1NUX0RFQlVHKCJpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCBObyBwYXls
b2FkIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGluaXREYXRhID0gV1RGTW92ZShp
bml0RGF0YSldIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9X
ZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggNWQ4NmZi
MWFmNDg3YzAyODllMDAxMjU1OTY1YzMxZGNkYTk3MzQyNi4uOTMwMTkwOTk0NWI0YTIzZDY2Nzgy
ZjM1MGI1NmU0NDc5ZjgwMjZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZUNsaWVudCB2aXJ0dWFsIG1ldGhvZHMuCiAgICAgdm9pZCByZXNwb25zZVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2spPiYmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8
U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC0xMDkzLDcgKzEwOTMsNyBAQCB2b2lkIENhY2hl
ZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENvbnRpbnVlUG9saWN5
Q2hlY2s6Olllcyk7CiB9CiAKLXZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBXZWJLaXRXZWJTcmMqIHNy
YyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNs
ZWFyS2V5LmgKaW5kZXggNjkyYTk5NmQxOWMyNGVmZDlhNDg1NTIzNzNhNTY3OWI1MmUxZWYxYy4u
MzQ5YmZkY2FhZDZjN2Q3ZjhkNWFkYTBhMTcyMTlmZDllNzA2MjZmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFy
S2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9DRE1Qcm94eUNsZWFyS2V5LmgKQEAgLTYyLDExICs2MiwxMSBAQCBwdWJsaWM6CiAgICAgQ0RN
UHJveHlDbGVhcktleSgpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIH5DRE1Qcm94eUNsZWFyS2V5
KCk7CiAKLSAgICAvLyBGSVhNRTogVGhlcmUncyBhIGxhY2sgb2YgY29uc2lzdGVuY3kgYmV0d2Vl
biBTaGFyZWRCdWZmZXJzLAorICAgIC8vIEZJWE1FOiBUaGVyZSdzIGEgbGFjayBvZiBjb25zaXN0
ZW5jeSBiZXR3ZWVuIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJzLAogICAgIC8vIFZlY3RvcjxjaGFy
PidzIGFuZCB7dWludDhfdCosc2l6ZV90fSBpZGlvbXMgZm9yIHJlcHJlc2VudGluZyBhIGNodW5r
IG9mCi0gICAgLy8gYnl0ZXMuIEZpeCB0aGF0IHNvbWVob3cuIE5vdGUgU2hhcmVkQnVmZmVycyBh
cmUgZGFuZ2Vyb3VzIHNpbmNlCisgICAgLy8gYnl0ZXMuIEZpeCB0aGF0IHNvbWVob3cuIE5vdGUg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcnMgYXJlIGRhbmdlcm91cyBzaW5jZQogICAgIC8vIHRoZXkn
cmUgbm90IHRocmVhZC1zYWZlIGFuZCB0aGlzIGNsYXNzIG11c3QgbWFpbnRhaW4KLSAgICAvLyB0
aHJlYWQtc2FmZXR5LCBidXQgbWF5YmUgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCBjb3VsZCBi
ZQorICAgIC8vIHRocmVhZC1zYWZldHksIGJ1dCBtYXliZSBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudCBjb3VsZCBiZQogICAgIC8vIG1hZGUgdG8gd29yaywgaG93ZXZlciB0aGF0
IGhhcyB6ZXJvIGhlbHBlcnMgZm9yIGRyb3BwaW5nIGludG8KICAgICAvLyBpdGVyYXRvci1hd2Fy
ZSAvIGNvbXBhcmF0b3ItYXdhcmUgY29udGFpbmVycy4uLgogICAgIHN0cnVjdCBjZW5jRGVjcnlw
dENvbnRleHQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAKaW5kZXggMmVmYTA0MzYwZTg4NDgz
ODA2MTQ0YzNkNzFkZTYzYWQ3YjQyYjU2MS4uYzM4OTE2ZTdkMDU5ZTg4OWI1Yzg4ZWViMDllMGY0
Y2ZjMDNjMWRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCkBAIC0yMjAsNyArMjIwLDcg
QEAgYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImIGlu
aXREYXRhKSBjb25zdAorYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGluaXREYXRhKSBjb25zdAogewogICAgIC8vIFZhbGlkYXRlIHRoZSBpbml0RGF0YSBidWZm
ZXIgYXMgYW4gSlNPTiBvYmplY3QgaW4ga2V5aWRzIGNhc2UuCiAgICAgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKGluaXREYXRhVHlwZSwgImtleWlkcyIpICYmIENETVV0aWxpdGll
czo6cGFyc2VKU09OT2JqZWN0KGluaXREYXRhKSkKQEAgLTIzNyw3ICsyMzcsNyBAQCBib29sIENE
TVByaXZhdGVUaHVuZGVyOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgUwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gQ0RNUHJpdmF0ZVRodW5kZXI6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVm
ZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Q
cml2YXRlVGh1bmRlcjo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOwogfQpA
QCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjppbml0aWFsaXplV2l0
aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhCiAgICAgY2FsbGJhY2so
U3VjY2VlZGVkKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OnNldFNlcnZlckNlcnRp
ZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJhY2sm
JiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgIFN1Y2Nlc3NDYWxs
YmFjayYmIGNhbGxiYWNrKQogewogICAgIE9wZW5DRE1FcnJvciBlcnJvciA9IG9wZW5jZG1fc3lz
dGVtX3NldF9zZXJ2ZXJfY2VydGlmaWNhdGUobV90aHVuZGVyU3lzdGVtLmdldCgpLCBjb25zdF9j
YXN0PHVpbnQ4X3QqPihjZXJ0aWZpY2F0ZS0+ZGF0YSgpKSwKICAgICAgICAgY2VydGlmaWNhdGUt
PnNpemUoKSk7CkBAIC0zMjYsNyArMzI2LDcgQEAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4g
Q0RNSW5zdGFuY2VUaHVuZGVyOjpjcmVhdGVTZXNzaW9uKCkKIGNsYXNzIFBhcnNlZFJlc3BvbnNl
TWVzc2FnZSB7CiAKIHB1YmxpYzoKLSAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UoY29uc3QgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UoY29u
c3QgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAgICAgewogICAgICAg
ICBpZiAoIWJ1ZmZlciB8fCAhYnVmZmVyLT5zaXplKCkpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0zNTQsOCArMzU0LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1ZhbGlkOyB9CiAgICAgYm9vbCBoYXNQYXlsb2FkKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8Ym9vbD4obV9wYXlsb2FkKTsgfQotICAgIGNvbnN0IFJlZjxTaGFyZWRCdWZm
ZXI+JiBwYXlsb2FkKCkgY29uc3QmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxv
YWQudmFsdWUoKTsgfQotICAgIFJlZjxTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgJiB7IEFTU0VS
VChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KKyAgICBjb25zdCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCYgeyBBU1NFUlQobV9wYXls
b2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CisgICAgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiBwYXlsb2FkKCkgJiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXls
b2FkLnZhbHVlKCk7IH0KICAgICBib29sIGhhc1R5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUu
aGFzX3ZhbHVlKCk7IH0KICAgICBXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlIHR5cGUoKSBj
b25zdCB7IEFTU0VSVChtX3R5cGUpOyByZXR1cm4gbV90eXBlLnZhbHVlKCk7IH0KICAgICBXZWJD
b3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlIHR5cGVPcihXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VU
eXBlIGFsdGVybmF0ZSkgY29uc3QgeyByZXR1cm4gbV90eXBlID8gbV90eXBlLnZhbHVlKCkgOiBh
bHRlcm5hdGU7IH0KQEAgLTM2NCwxMSArMzY0LDExIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBib29sIG1faXNWYWxpZCB7IGZhbHNlIH07Ci0gICAgc3RkOjpvcHRpb25hbDxSZWY8U2hhcmVk
QnVmZmVyPj4gbV9wYXlsb2FkOworICAgIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiBtX3BheWxvYWQ7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRpYUtl
eU1lc3NhZ2VUeXBlPiBtX3R5cGU7CiB9OwogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5k
ZXI6OmNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpjaGFsbGVuZ2VHZW5lcmF0ZWRD
YWxsYmFjayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAg
UGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShidWZmZXIpOwogICAg
IGlmICghcGFyc2VkUmVzcG9uc2VNZXNzYWdlKSB7CkBAIC00NzUsNyArNDc1LDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjprZXlzVXBkYXRlRG9uZUNhbGxiYWNrKCkKICAgICBt
X3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIG1lc3Nh
Z2UpCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBHU1RfRVJST1IoIkNE
TSBlcnJvciIpOwogICAgIEdTVF9NRU1EVU1QKCJlcnJvciBkdW1wIiwgbWVzc2FnZS0+ZGF0YSgp
LCBtZXNzYWdlLT5zaXplKCkpOwpAQCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIG1lc3Nh
Z2UpCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQogCi12b2lkIENE
TUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vu
c2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgaW5pdERhdGFTaGFyZWRCdWZmZXIsCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6
OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhU2hh
cmVkQnVmZmVyLAogICAgIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CkBAIC01MDYsNyArNTA2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29u
c3QgQXQKICAgICAgICAgbV9pbml0RGF0YS5wYXlsb2FkKCktPmRhdGEoKSwgbV9pbml0RGF0YS5w
YXlsb2FkKCktPnNpemUoKSwgbnVsbHB0ciwgMCwgJm1fdGh1bmRlclNlc3Npb25DYWxsYmFja3Ms
IHRoaXMsICZzZXNzaW9uKTsKICAgICBpZiAoIXNlc3Npb24pIHsKICAgICAgICAgR1NUX0VSUk9S
KCJDb3VsZCBub3QgY3JlYXRlIHNlc3Npb24iKTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CiAgICAg
ICAgIGNhbGxiYWNrKGluaXREYXRhLnJlbGVhc2VOb25OdWxsKCksIHsgfSwgZmFsc2UsIEZhaWxl
ZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01MTUsNyArNTE1LDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNl
VHlwZSwgY29uc3QgQXQKIAogICAgIGF1dG8gZ2VuZXJhdGVDaGFsbGVuZ2UgPSBbdGhpcywgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBt
X2luaXREYXRhLnBheWxvYWQoKTsKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CiAgICAgICAgIGlmIChtX3Nlc3Np
b25JRC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIEdTVF9FUlJPUigiY291bGQgbm90IGNyZWF0
ZSBzZXNzaW9uIGlkIik7CiAgICAgICAgICAgICBjYWxsYmFjayhpbml0RGF0YS5yZWxlYXNlTm9u
TnVsbCgpLCB7IH0sIGZhbHNlLCBGYWlsZWQpOwpAQCAtNTQ1LDEzICs1NDUsMTMgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpzZXNzaW9uRmFpbHVyZSgpCiAgICAgbV9zZXNzaW9u
Q2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvblRo
dW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
ICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09IG1fc2Vzc2lvbklEKTsK
IAogICAgIEdTVF9UUkFDRSgiVXBkYXRpbmcgc2Vzc2lvbiAlcyIsIHNlc3Npb25JRC51dGY4KCku
ZGF0YSgpKTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgcmVzcG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25DaGFuZ2Vk
Q2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9v
bCBzdWNjZXNzLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZU1lc3Nh
Z2UpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBp
ZiAoc3VjY2VzcykgewogICAgICAgICAgICAgaWYgKCFyZXNwb25zZU1lc3NhZ2UpCkBAIC01NjIs
NyArNTYyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHkKICAgICAgICAgICAgICAgICBQYXJz
ZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKHJlc3BvbnNlTWVzc2FnZSk7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAg
ICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2Vk
UmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CisgICAgICAgICAgICAgICAgICAgIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3Nh
Z2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVzc2Fn
ZSBvZiBzaXplICV6dSIsIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdT
VF9NRU1EVU1QKCJtZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwog
ICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51
bGxvcHQsCkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVy
Ojpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQKIHsKICAg
ICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09IG1fc2Vzc2lvbklEKTsKIAot
ICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgcmVz
cG9uc2VNZXNzYWdlKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFw
cGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZU1lc3NhZ2UpIG11dGFibGUg
ewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoc3VjY2Vzcykg
ewogICAgICAgICAgICAgaWYgKCFyZXNwb25zZU1lc3NhZ2UpCkBAIC01OTcsNyArNTk3LDcgQEAg
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwg
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSUQKICAgICAgICAgICAgICAgICBQYXJzZWRSZXNwb25zZU1l
c3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKHJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgaWYg
KHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNz
YWdlLnBheWxvYWQoKSk7CisgICAgICAgICAgICAgICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgp
KTsKICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVzc2FnZSBvZiBzaXplICV6
dSIsIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1QKCJt
ZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YSgpLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAg
ICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjptYWtlX3Bh
aXIocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnR5cGVPcihNZWRpYUtleU1lc3NhZ2VUeXBlOjpMaWNl
bnNlUmVxdWVzdCksCkBAIC02NDAsNyArNjQwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25U
aHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW4K
IHsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgbV9zZXNzaW9uSUQgPT0gc2Vzc2lvbklE
KTsKIAotICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVu
ZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIG11dGFibGUgewogICAgICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoc3VjY2VzcykgewogICAgICAgICAg
ICAgaWYgKCFidWZmZXIpCkBAIC02NDksNyArNjQ5LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGlj
ZW4KICAgICAgICAgICAgICAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VN
ZXNzYWdlKGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNlTWVz
c2FnZSk7CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXls
b2FkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9
IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CisgICAgICAgICAgICAg
ICAgICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJz
ZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX0RF
QlVHKCJzZXNzaW9uICVzIHJlbW92ZWQsIG1lc3NhZ2UgbGVuZ3RoICV6dSIsIG1fc2Vzc2lvbklE
LnV0ZjgoKS5kYXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNh
bGxiYWNrKG1fa2V5U3RvcmUuYWxsS2V5c0FzKE1lZGlhS2V5U3RhdHVzOjpSZWxlYXNlZCksIFdU
Rk1vdmUobWVzc2FnZSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKICAgICAgICAgICAgICAg
ICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaAppbmRleCBjZGQ4ZGEyMTEyM2MxNzkxYWUy
ZmI2NDM5ZmYyZDZmYTBkMmViMjFjLi4xMDIwZTE1MzIyNzFiNTM1MWUxMDZkZGU4ZjIxZWE1NDA1
YTljMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0NETVRodW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaApAQCAtOTMsOCArOTMsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBsb2FkQW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNT
ZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lv
bnMoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0
cmluZyYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwotICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJikgY29uc3QgZmlu
YWw7CisgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNl
c3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKQEAgLTExMCw3
ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFuY2UKICAgICBJbXBsZW1lbnRhdGlv
blR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50
YXRpb25UeXBlOjpUaHVuZGVyOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRp
b24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVu
dGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsK
LSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nl
c3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAg
dm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9rZXlTeXN0ZW07IH0K
ICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CkBA
IC0xMjYsOCArMTI2LDggQEAgY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlciBmaW5hbCA6
IHB1YmxpYyBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSB7CiBwdWJsaWM6CiAgICAgQ0RNSW5zdGFu
Y2VTZXNzaW9uVGh1bmRlcihDRE1JbnN0YW5jZVRodW5kZXImKTsKIAotICAgIHZvaWQgcmVxdWVz
dExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAg
IHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYm
KSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5
cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sm
JikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lk
IGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5h
bDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBl
LCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpAQCAtMTQxLDE0ICsxNDEsMTQg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBDRE1JbnN0YW5jZVRodW5kZXIqIGNkbUluc3RhbmNl
VGh1bmRlcigpIGNvbnN0OwogCi0gICAgdXNpbmcgTm90aWZpY2F0aW9uID0gdm9pZCAoQ0RNSW5z
dGFuY2VTZXNzaW9uVGh1bmRlcjo6KikoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7
CisgICAgdXNpbmcgTm90aWZpY2F0aW9uID0gdm9pZCAoQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRl
cjo6KikoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHVz
aW5nIENoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsKLSAgICB1
c2luZyBTZXNzaW9uQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChib29sLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmKT47CisgICAgdXNpbmcgU2Vzc2lvbkNoYW5nZWRDYWxsYmFjayA9IEZ1
bmN0aW9uPHZvaWQoYm9vbCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPjsKIAot
ICAgIHZvaWQgY2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
Jik7CisgICAgdm9pZCBjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgdm9pZCBrZXlVcGRhdGVkQ2FsbGJhY2soS2V5SURUeXBl
JiYpOwogICAgIHZvaWQga2V5c1VwZGF0ZURvbmVDYWxsYmFjaygpOwotICAgIHZvaWQgZXJyb3JD
YWxsYmFjayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGVycm9yQ2FsbGJhY2so
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIENETUluc3RhbmNlU2Vzc2lv
bjo6S2V5U3RhdHVzIHN0YXR1cyhjb25zdCBLZXlJRFR5cGUmKSBjb25zdDsKICAgICB2b2lkIHNl
c3Npb25GYWlsdXJlKCk7CiAKQEAgLTE1OSw3ICsxNTksNyBAQCBwcml2YXRlOgogICAgIEluaXRE
YXRhIG1faW5pdERhdGE7CiAgICAgT3BlbkNETVNlc3Npb25DYWxsYmFja3MgbV90aHVuZGVyU2Vz
c2lvbkNhbGxiYWNrcyB7IH07CiAgICAgQm94UHRyPE9wZW5DRE1TZXNzaW9uPiBtX3Nlc3Npb247
Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdlOworICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBtX21lc3NhZ2U7CiAgICAgYm9vbCBtX25lZWRzSW5kaXZpZHVhbGl6
YXRpb24geyBmYWxzZSB9OwogICAgIFZlY3RvcjxDaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjaz4g
bV9jaGFsbGVuZ2VDYWxsYmFja3M7CiAgICAgVmVjdG9yPFNlc3Npb25DaGFuZ2VkQ2FsbGJhY2s+
IG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1l
ckVNRVV0aWxpdGllcy5jcHAKaW5kZXggY2FhNTBlZDVjM2MzOTk4MzIyZDRhMmMyNzYyNTZlMTgw
MWYxZWJiMS4uM2Y4NWFmZTczYzg0Mjc2Mjk5N2Q1YWJjMmQ3YmMwN2Y3YzAxYjljMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3Ry
ZWFtZXJFTUVVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmNwcApAQCAtMzIsNyArMzIs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBHTWFya3VwUGFyc2VDb250ZXh0VXNl
ckRhdGEgewogICAgIGJvb2wgaXNQYXJzaW5nUHNzaCB7IGZhbHNlIH07Ci0gICAgUmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHBzc2g7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcHNz
aDsKIH07CiAKIHN0YXRpYyB2b2lkIG1hcmt1cFN0YXJ0RWxlbWVudChHTWFya3VwUGFyc2VDb250
ZXh0KiwgY29uc3QgZ2NoYXIqIGVsZW1lbnROYW1lLCBjb25zdCBnY2hhcioqLCBjb25zdCBnY2hh
cioqLCBncG9pbnRlciB1c2VyRGF0YVB0ciwgR0Vycm9yKiopCkBAIC01Nyw3ICs1Nyw3IEBAIHN0
YXRpYyB2b2lkIG1hcmt1cFRleHQoR01hcmt1cFBhcnNlQ29udGV4dCosIGNvbnN0IGdjaGFyKiB0
ZXh0LCBnc2l6ZSB0ZXh0TGVuZ3RoCiAgICAgaWYgKHVzZXJEYXRhLT5pc1BhcnNpbmdQc3NoKSB7
CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwc3NoID0gYmFzZTY0RGVj
b2RlKHRleHQsIHRleHRMZW5ndGgpOwogICAgICAgICBpZiAocHNzaC5oYXNfdmFsdWUoKSkKLSAg
ICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUoKnBzc2gpKTsKKyAgICAgICAgICAgIHVzZXJEYXRhLT5wc3NoID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZSgqcHNzaCkpOwogICAgIH0KIH0KIApAQCAtNzEsOSArNzEsOSBA
QCBzdGF0aWMgdm9pZCBtYXJrdXBFcnJvcihHTWFya3VwUGFyc2VDb250ZXh0KiwgR0Vycm9yKiwg
Z3BvaW50ZXIpCiAKIHN0YXRpYyBHTWFya3VwUGFyc2VyIG1hcmt1cFBhcnNlciB7IG1hcmt1cFN0
YXJ0RWxlbWVudCwgbWFya3VwRW5kRWxlbWVudCwgbWFya3VwVGV4dCwgbWFya3VwUGFzc3Rocm91
Z2gsIG1hcmt1cEVycm9yIH07CiAKLVJlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRy
YWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmIHVucGFyc2Vk
UGF5bG9hZCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IEluaXREYXRhOjpleHRyYWN0Q2VuY0lmTmVl
ZGVkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgdW5wYXJzZWRQYXlsb2FkKQogewotICAgIFJlZlB0
cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBwYXlsb2FkID0gV1RGTW92ZSh1bnBhcnNlZFBheWxv
YWQpOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQgPSBXVEZNb3ZlKHVucGFyc2Vk
UGF5bG9hZCk7CiAgICAgaWYgKCFwYXlsb2FkIHx8ICFwYXlsb2FkLT5zaXplKCkpCiAgICAgICAg
IHJldHVybiBwYXlsb2FkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxpdGllcy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9HU3RyZWFtZXJFTUVVdGlsaXRp
ZXMuaAppbmRleCAzMzBiZTIxM2M3ZmVmZWRiMmY3ODhiNWMxZWM0NDFhZjcxOTQ5ZDQ5Li5kMmFk
ZTg3MzBjMDRlNzU1MDJjNmEwNDRhMDE3OWM5MzI2YzllM2E4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0dTdHJlYW1lckVNRVV0aWxp
dGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvR1N0cmVhbWVyRU1FVXRpbGl0aWVzLmgKQEAgLTM4LDkgKzM4LDcgQEAgR1NUX0RFQlVHX0NB
VEVHT1JZX0VYVEVSTih3ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9kZWJ1
Z19jYXRlZ29yeSkKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluaXREYXRhIHsKIHB1Ymxp
YzoKLSAgICBJbml0RGF0YSgpCi0gICAgICAgIDogbV9wYXlsb2FkKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCkpIHsgfQotCisgICAgSW5pdERhdGEoKSA9IGRlZmF1bHQ7CiAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBoYXZlIGFuIGVudW0gZm9yIHN5c3RlbSB1dWlkcyBmb3IgYmV0dGVyIHR5cGUgc2Fm
ZXR5LgogICAgIEluaXREYXRhKGNvbnN0IFN0cmluZyYgc3lzdGVtSWQsIEdzdEJ1ZmZlciogaW5p
dERhdGEpCiAgICAgICAgIDogbV9zeXN0ZW1JZChzeXN0ZW1JZCkKQEAgLTUwLDE3ICs0OCwxNCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBHU1RfQ0FUX0xFVkVMX0xPRyh3ZWJraXRfbWVkaWFfY29t
bW9uX2VuY3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSwgR1NUX0xFVkVMX0VSUk9SLCBu
dWxscHRyLCAiY2Fubm90IG1hcCAlcyBwcm90ZWN0aW9uIGRhdGEiLCBzeXN0ZW1JZC51dGY4KCku
ZGF0YSgpKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0g
ICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVkKG1hcHBl
ZEluaXREYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSkpCi0gICAgICAgICAgICBtX3BheWxvYWQu
YXBwZW5kKHBhcnNlZFBheWxvYWQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIG1fcGF5bG9h
ZCA9IGV4dHJhY3RDZW5jSWZOZWVkZWQobWFwcGVkSW5pdERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpKTsKICAgICB9CiAKLSAgICBJbml0RGF0YShjb25zdCBTdHJpbmcmIHN5c3RlbUlkLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmIHBheWxvYWQpCisgICAgSW5pdERhdGEoY29uc3QgU3RyaW5nJiBz
eXN0ZW1JZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcGF5bG9hZCkKICAgICAg
ICAgOiBtX3N5c3RlbUlkKHN5c3RlbUlkKQogICAgIHsKLSAgICAgICAgaWYgKHBheWxvYWQpIHsK
LSAgICAgICAgICAgIGlmIChhdXRvIHBhcnNlZFBheWxvYWQgPSBleHRyYWN0Q2VuY0lmTmVlZGVk
KHBheWxvYWQtPm1ha2VDb250aWd1b3VzKCkpKQotICAgICAgICAgICAgICAgIG1fcGF5bG9hZC5h
cHBlbmQocGFyc2VkUGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICAgICAgfQorICAgICAg
ICBpZiAocGF5bG9hZCkKKyAgICAgICAgICAgIG1fcGF5bG9hZCA9IGV4dHJhY3RDZW5jSWZOZWVk
ZWQocGF5bG9hZC0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmQo
SW5pdERhdGEmJiBpbml0RGF0YSkKQEAgLTc5LDcgKzc0LDcgQEAgcHVibGljOgogICAgICAgICBt
X3BheWxvYWQuYXBwZW5kKCppbml0RGF0YS5wYXlsb2FkKCkpOwogICAgIH0KIAotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHBheWxvYWQoKSBjb25zdCB7IHJldHVybiBtX3BheWxvYWQuZ2V0KCk7
IH0KKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcGF5bG9hZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGF5bG9hZC5nZXQoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQoKSBj
b25zdCB7IHJldHVybiBtX3N5c3RlbUlkOyB9CiAgICAgU3RyaW5nIHBheWxvYWRDb250YWluZXJU
eXBlKCkgY29uc3QKICAgICB7CkBAIC05MCw5ICs4NSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuICJjZW5jIl9zOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBl
eHRyYWN0Q2VuY0lmTmVlZGVkKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmKTsKLQog
cHJpdmF0ZToKKyAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZXh0cmFjdENlbmNJZk5l
ZWRlZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmKTsKICAgICBTdHJpbmcgbV9zeXN0ZW1JZDsKICAg
ICBTaGFyZWRCdWZmZXJCdWlsZGVyIG1fcGF5bG9hZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAKaW5kZXggNTY0ZTFlNzU0NGE1ODNmNDE4ZTBkZWJlMGUyNWNlNmI0YmY1NDc5OS4u
YmQxMTNiYjZjMjczMWZhMTlhZGRlZmQzM2E5OWQ0NmJiNGExZjRhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcApAQCAtNTIsNyArNTIsNyBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9u
JgogICAgIHJldHVybiBGb250UGxhdGZvcm1EYXRhKGZvbnQuZ2V0KCksIHNpemUsIGJvbGQsIGl0
YWxpYywgb3JpZW50YXRpb24sIHdpZHRoVmFyaWFudCwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5k
ZXJpbmdNb2RlKCksICZjcmVhdGlvbkRhdGEpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3Vz
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0
ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxh
dGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxl
Y3Rpb24pCiB7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gYnVmZmVyRGF0YSA9IGJ1ZmZlci5j
cmVhdGVDRkRhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKaW5kZXggN2JjNjY3ZTQ2
OWIwMDYxNTFlYjI1Yjc5Yzg4NjlmNzZhMzJmMDA3MS4uNjkyOGE2M2U5NzFjN2MzNWU4ODQ0ZWVm
NzNiZmE0NGE4ZDhjMDMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCkBAIC0zNiw3ICsz
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZvbnRDcmVhdGlvbkNvbnRleHQ7CiBj
bGFzcyBGb250RGVzY3JpcHRpb247CiBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFi
aWxpdGllczsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBGb250VGFnZ2VkU2V0dGluZ3M7CiB0
eXBlZGVmIEZvbnRUYWdnZWRTZXR0aW5nczxpbnQ+IEZvbnRGZWF0dXJlU2V0dGluZ3M7CkBAIC02
MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEg
Y3JlYXRpb25EYXRhOwogfTsKIAotV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1h
dGhEYXRhLmNwcAppbmRleCBiNDE3OTIzZTZkNzVmOTNjZmQxZTRjYzMxZjg1MDM2ZTFjNjJmNGMy
Li41ZDg4Y2Q3NzY4OThjMDVhOTAzNTg5ZTJkNGJhYzczMGFhMWRmOTkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZU1hdGhEYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZU1hdGhEYXRhLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdHJ1Y3QgTWF0aEl0YWxpY3NDb3Jy
ZWN0aW9uSW5mbyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGl0
YWxpY3NDb3JyZWN0aW9uQ291bnQ7CiAgICAgT3BlblR5cGU6Ok1hdGhWYWx1ZVJlY29yZCBpdGFs
aWNzQ29ycmVjdGlvblsxXTsgLy8gVGhlcmUgYXJlIGl0YWxpY3NDb3JyZWN0aW9uQ291bnQgaXRh
bGljIGNvcnJlY3Rpb24gdmFsdWVzLgogCi0gICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9u
KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgR2x5cGggZ2x5cGgpIGNvbnN0
CisgICAgaW50MTZfdCBnZXRJdGFsaWNDb3JyZWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBHbHlwaCBnbHlwaCkgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0g
dWludDE2X3QoaXRhbGljc0NvcnJlY3Rpb25Db3VudCk7CiAgICAgICAgIGlmICghaXNWYWxpZEVu
ZChidWZmZXIsICZpdGFsaWNzQ29ycmVjdGlvbltjb3VudF0pKQpAQCAtOTMsNyArOTMsNyBAQCBz
dHJ1Y3QgTWF0aEdseXBoSW5mbyA6IFRhYmxlV2l0aENvdmVyYWdlIHsKICAgICBPcGVuVHlwZTo6
T2Zmc2V0IGV4dGVuZGVkU2hhcGVDb3ZlcmFnZU9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0
IG1hdGhLZXJuSW5mb09mZnNldDsKIAotICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbklu
Zm8qIG1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhJdGFsaWNzQ29ycmVjdGlvbkluZm8qIG1h
dGhJdGFsaWNzQ29ycmVjdGlvbkluZm8oY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0
CiAgICAgewogICAgICAgICB1aW50MTZfdCBvZmZzZXQgPSBtYXRoSXRhbGljc0NvcnJlY3Rpb25J
bmZvT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVj
dCBHbHlwaEFzc2VtYmx5IDogVGFibGVCYXNlIHsKICAgICAgICAgUGFydEZsYWdzRXh0ZW5kZXIg
PSAweDAxCiAgICAgfTsKIAotICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhjb25zdCBDb250aWd1
b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpBc3NlbWJs
eVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAorICAgIHZvaWQgZ2V0QXNzZW1ibHlQYXJ0cyhj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPE9wZW5UeXBlTWF0aERhdGE6OkFzc2Vt
Ymx5UGFydD4mIGFzc2VtYmx5UGFydHMpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZfdCBj
b3VudCA9IHBhcnRDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnBhcnRS
ZWNvcmRzW2NvdW50XSkpCkBAIC0xNDMsNyArMTQzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0
cnVjdGlvbiA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpVSW50MTYgYWR2YW5jZU1l
YXN1cmVtZW50OwogICAgIH0gbWF0aEdseXBoVmFyaWFudFJlY29yZHNbMV07IC8vIFRoZXJlIGFy
ZSB2YXJpYW50Q291bnQgTWF0aEdseXBoVmFyaWFudFJlY29yZCdzLgogCi0gICAgdm9pZCBnZXRT
aXplVmFyaWFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8
R2x5cGg+JiB2YXJpYW50cykgY29uc3QKKyAgICB2b2lkIGdldFNpemVWYXJpYW50cyhjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgVmVjdG9yPEdseXBoPiYgdmFyaWFudHMpIGNvbnN0CiAgICAg
ewogICAgICAgICB1aW50MTZfdCBjb3VudCA9IHZhcmlhbnRDb3VudDsKICAgICAgICAgaWYgKCFp
c1ZhbGlkRW5kKGJ1ZmZlciwgJm1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2NvdW50XSkpCkBAIC0x
NTMsNyArMTUzLDcgQEAgc3RydWN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiA6IFRhYmxlQmFzZSB7
CiAgICAgICAgICAgICB2YXJpYW50c1tpXSA9IG1hdGhHbHlwaFZhcmlhbnRSZWNvcmRzW2ldLnZh
cmlhbnRHbHlwaDsKICAgICB9CiAKLSAgICB2b2lkIGdldEFzc2VtYmx5UGFydHMoY29uc3QgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBWZWN0b3I8T3BlblR5cGVNYXRoRGF0YTo6QXNz
ZW1ibHlQYXJ0PiYgYXNzZW1ibHlQYXJ0cykgY29uc3QKKyAgICB2b2lkIGdldEFzc2VtYmx5UGFy
dHMoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIFZlY3RvcjxPcGVuVHlwZU1hdGhEYXRhOjpB
c3NlbWJseVBhcnQ+JiBhc3NlbWJseVBhcnRzKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2
X3Qgb2Zmc2V0ID0gZ2x5cGhBc3NlbWJseU9mZnNldDsKICAgICAgICAgY29uc3QgR2x5cGhBc3Nl
bWJseSogZ2x5cGhBc3NlbWJseSA9IHZhbGlkYXRlT2Zmc2V0PEdseXBoQXNzZW1ibHk+KGJ1ZmZl
ciwgb2Zmc2V0KTsKQEAgLTE3MCw3ICsxNzAsNyBAQCBzdHJ1Y3QgTWF0aFZhcmlhbnRzIDogVGFi
bGVXaXRoQ292ZXJhZ2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgaG9yaXpvbnRhbEdseXBoQ291
bnQ7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBtYXRoR2x5cGhDb25zdHJ1Y3Rpb25zT2Zmc2V0WzFd
OyAvLyBUaGVyZSBhcmUgdmVydGljYWxHbHlwaENvdW50IHZlcnRpY2FsIGdseXBoIGNvbnRydWN0
aW9ucyBhbmQgaG9yaXpvbnRhbEdseXBoQ291bnQgdmVydGljYWwgZ2x5cGggY29udHJ1Y3Rpb25z
LgogCi0gICAgY29uc3QgTWF0aEdseXBoQ29uc3RydWN0aW9uKiBtYXRoR2x5cGhDb25zdHJ1Y3Rp
b24oY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlwaCwgYm9v
bCBpc1ZlcnRpY2FsKSBjb25zdAorICAgIGNvbnN0IE1hdGhHbHlwaENvbnN0cnVjdGlvbiogbWF0
aEdseXBoQ29uc3RydWN0aW9uKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBHbHlwaCBnbHlw
aCwgYm9vbCBpc1ZlcnRpY2FsKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDMyX3QgY291bnQg
PSB1aW50MTZfdCh2ZXJ0aWNhbEdseXBoQ291bnQpICsgdWludDE2X3QoaG9yaXpvbnRhbEdseXBo
Q291bnQpOwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmbWF0aEdseXBoQ29uc3Ry
dWN0aW9uc09mZnNldFtjb3VudF0pKQpAQCAtMjA0LDcgKzIwNCw3IEBAIHN0cnVjdCBNQVRIVGFi
bGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpPZmZzZXQgbWF0aEdseXBoSW5mb09mZnNl
dDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IG1hdGhWYXJpYW50c09mZnNldDsKIAotICAgIGNvbnN0
IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZl
ciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhDb25zdGFudHMqIG1hdGhDb25zdGFudHMo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CiAgICAgewogICAgICAgICB1aW50MTZf
dCBvZmZzZXQgPSBtYXRoQ29uc3RhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0KQpAQCAt
MjEyLDcgKzIxMiw3IEBAIHN0cnVjdCBNQVRIVGFibGUgOiBUYWJsZUJhc2UgewogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBjb25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5
cGhJbmZvKGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBj
b25zdCBNYXRoR2x5cGhJbmZvKiBtYXRoR2x5cGhJbmZvKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qgb2Zmc2V0ID0gbWF0aEdseXBoSW5m
b09mZnNldDsKICAgICAgICAgaWYgKG9mZnNldCkKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdHJ1Y3Qg
TUFUSFRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
Ci0gICAgY29uc3QgTWF0aFZhcmlhbnRzKiBtYXRoVmFyaWFudHMoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IE1hdGhWYXJpYW50cyogbWF0aFZh
cmlhbnRzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAg
dWludDE2X3Qgb2Zmc2V0ID0gbWF0aFZhcmlhbnRzT2Zmc2V0OwogICAgICAgICBpZiAob2Zmc2V0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUv
T3BlblR5cGVNYXRoRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnR5cGUvT3BlblR5cGVNYXRoRGF0YS5oCmluZGV4IDNmZjY2ZDMxMTgyZTVjNGIzNmRkM2YzMzA3
YTY4NGI5NWQ5NTkzZTMuLjI5OTBiZmIwM2Y1NjE5NDU3N2ZkZDQ0NzZmMTQ0OTRhYjE4MDM1Y2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlTWF0aERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVudHlwZS9PcGVuVHlwZU1hdGhEYXRhLmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKLWNsYXNzIENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBGb250OwogCiBjbGFzcyBPcGVu
VHlwZU1hdGhEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8T3BlblR5cGVNYXRoRGF0YT4gewpAQCAt
MTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgT3BlblR5cGVNYXRoRGF0YShj
b25zdCBGb250UGxhdGZvcm1EYXRhJik7CiAKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKLSAg
ICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gbV9tYXRoQnVmZmVyOworICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fbWF0aEJ1ZmZlcjsKICNlbGlmIFVTRShIQVJGQlVaWikKICAgICBI
YlVuaXF1ZVB0cjxoYl9mb250X3Q+IG1fbWF0aEZvbnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVHlwZXMu
aAppbmRleCAzMDQ5NjNhNWRlOTBjODFjOGQ2MzA5MTI2Nzc4ODc1MzFkODZkMmFmLi5jODY0YjJj
M2E4ZmIxYWUzNzYzMDkzZWU1MDU1YjM2NTFlZjAxMjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVR5cGVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVUeXBlcy5oCkBA
IC03Myw3ICs3Myw3IEBAIHR5cGVkZWYgVUludDE2IEdseXBoSUQ7CiB0eXBlZGVmIHVpbnQzMl90
IFRhZzsKICNkZWZpbmUgT1RfTUFLRV9UQUcoY2gxLCBjaDIsIGNoMywgY2g0KSAoKCgodWludDMy
X3QpKGNoNCkpIDw8IDI0KSB8ICgoKHVpbnQzMl90KShjaDMpKSA8PCAxNikgfCAoKCh1aW50MzJf
dCkoY2gyKSkgPDwgOCkgfCAoKHVpbnQzMl90KShjaDEpKSkKIAotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYgYnVmZmVyLCBzaXplX3QgY291bnQgPSAxKQordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVRhYmxlKGNvbnN0IFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiBidWZmZXIsIHNpemVfdCBjb3VudCA9IDEpCiB7CiAgICAgaWYgKCFidWZmZXIgfHwg
YnVmZmVyLT5zaXplKCkgPCBzaXplb2YoVCkgKiBjb3VudCkKICAgICAgICAgcmV0dXJuIDA7CkBA
IC04Miw3ICs4Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgY29uc3QgVCogdmFs
aWRhdGVUYWJsZShjb25zdCBSZWZQdHI8Q29udGlndW91c1NoYXJlCiAKIHN0cnVjdCBUYWJsZUJh
c2UgewogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbmQoY29uc3QgQ29udGln
dW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lkKiBwb3NpdGlvbikKKyAgICBzdGF0
aWMgYm9vbCBpc1ZhbGlkRW5kKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCB2b2lk
KiBwb3NpdGlvbikKICAgICB7CiAgICAgICAgIGlmIChwb3NpdGlvbiA8IGJ1ZmZlci5kYXRhKCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgcmV0dXJuIG9mZnNldCA8PSBidWZmZXIuc2l6ZSgpOyAvLyAiPD0iIGJlY2F1c2Ug
ZW5kIGlzIGluY2x1ZGVkIGFzIHZhbGlkCiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IHN0YXRpYyBjb25zdCBUKiB2YWxpZGF0ZVB0cihjb25zdCBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQorICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBzdGF0aWMgY29uc3QgVCogdmFsaWRhdGVQdHIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IHZvaWQqIHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgY29uc3QgVCogY2FzdGVk
ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocG9zaXRpb24pOwogICAgICAgICBpZiAoIWlz
VmFsaWRFbmQoYnVmZmVyLCAmY2FzdGVkWzFdKSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJvdGVjdGVk
OgogICAgICAgICByZXR1cm4gY2FzdGVkOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBjb25zdCBUKiB2YWxpZGF0ZU9mZnNldChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVy
JiBidWZmZXIsIHVpbnQxNl90IG9mZnNldCkgY29uc3QKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gY29uc3QgVCogdmFsaWRhdGVPZmZzZXQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIHVp
bnQxNl90IG9mZnNldCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZVB0cjxU
PihidWZmZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90Kj4odGhpcykgKyBvZmZzZXQp
OwogICAgIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCBzdHJ1Y3QgQ292ZXJhZ2UyVGFibGUgOiBDb3Zl
cmFnZVRhYmxlIHsKICNpZiBFTkFCTEUoT1BFTlRZUEVfTUFUSCkKIHN0cnVjdCBUYWJsZVdpdGhD
b3ZlcmFnZSA6IFRhYmxlQmFzZSB7CiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBnZXRDb3ZlcmFnZUlu
ZGV4KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgQ292ZXJhZ2VU
YWJsZSogY292ZXJhZ2UsIEdseXBoIGdseXBoLCB1aW50MzJfdCYgY292ZXJhZ2VJbmRleCkgY29u
c3QKKyAgICBib29sIGdldENvdmVyYWdlSW5kZXgoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGNvbnN0IENvdmVyYWdlVGFibGUqIGNvdmVyYWdlLCBHbHlwaCBnbHlwaCwgdWludDMyX3QmIGNv
dmVyYWdlSW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvdmVyYWdlLT5jb3Zl
cmFnZUZvcm1hdCkgewogICAgICAgICBjYXNlIDE6IHsgLy8gQ292ZXJhZ2UgRm9ybWF0IDEKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5U
eXBlVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50
eXBlL09wZW5UeXBlVXRpbGl0aWVzLmNwcAppbmRleCAzY2E3MjdhYWZiZDJjYWQ0YmUxMDZmMWRj
NGMzZjJlN2RkNDQ4MDVmLi4zMjE2YjdlZjA2ZTlhNDgwMDk5MTU5MjMwNTZhY2EzZmNiZjkyZDFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9P
cGVuVHlwZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgdm9p
ZCBFT1RIZWFkZXI6OmFwcGVuZFBhZGRpbmdTaG9ydCgpCiAKIC8vIGFkZHMgZm9udE5hbWUgdG8g
dGhlIGZvbnQgdGFibGUgaW4gZm9udERhdGEsIGFuZCB3cml0ZXMgdGhlIG5ldyBmb250IHRhYmxl
IHRvIHJld3JpdHRlbkZvbnRUYWJsZQogLy8gcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbmFtZSB0
YWJsZSAod2hpY2ggaXMgdXNlZCBieSByZW5hbWVBbmRBY3RpdmF0ZUZvbnQpLCBvciAwIG9uIGVh
cmx5IGFib3J0Ci1ib29sIHJlbmFtZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYg
Zm9udERhdGEsIGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIFZlY3Rvcjx1aW50OF90PiYgcmV3cml0
dGVuRm9udERhdGEpCitib29sIHJlbmFtZUZvbnQoY29uc3QgU2hhcmVkQnVmZmVyJiBmb250RGF0
YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXdyaXR0ZW5Gb250
RGF0YSkKIHsKICAgICBzaXplX3Qgb3JpZ2luYWxEYXRhU2l6ZSA9IGZvbnREYXRhLnNpemUoKTsK
ICAgICBjb25zdCBzZm50SGVhZGVyKiBzZm50ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBzZm50
SGVhZGVyKj4oZm9udERhdGEuZGF0YSgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIHJlbmFt
ZUZvbnQoY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgZm9udERhdGEsIGNvbnN0IFN0cmlu
ZyYgZm9udE5hbWUsCiB9CiAKIC8vIFJlbmFtZSB0aGUgZm9udCBhbmQgaW5zdGFsbCB0aGUgbmV3
IGZvbnQgZGF0YSBpbnRvIHRoZSBzeXN0ZW0KLVJlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJl
bmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBmb250RGF0
YSwgY29uc3QgU3RyaW5nJiBmb250TmFtZSkKK1JlZlB0cjxGb250TWVtb3J5UmVzb3VyY2U+IHJl
bmFtZUFuZEFjdGl2YXRlRm9udChjb25zdCBTaGFyZWRCdWZmZXImIGZvbnREYXRhLCBjb25zdCBT
dHJpbmcmIGZvbnROYW1lKQogewogICAgIFZlY3Rvcjx1aW50OF90PiByZXdyaXR0ZW5Gb250RGF0
YTsKICAgICBpZiAoIXJlbmFtZUZvbnQoZm9udERhdGEsIGZvbnROYW1lLCByZXdyaXR0ZW5Gb250
RGF0YSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuaAppbmRleCAyMmJlMjMwYTYwNWM2NmEwZWY1
YmMxNDhhMjYyNzk3ZDM3MmMyYWM0Li5mYTAwMDgxMTYwNjY5N2RjNWM1MTEyMzMzYzkwYzhjOTJi
NGI2NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
dHlwZS9PcGVuVHlwZVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW50eXBlL09wZW5UeXBlVXRpbGl0aWVzLmgKQEAgLTM1LDEwICszNSwxMCBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQmlnRW5kaWFuVVNob3J0OwotY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIHN0cnVjdCBFT1RQcmVm
aXg7CiBjbGFzcyBGb250TWVtb3J5UmVzb3VyY2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBzdHJ1Y3QgRU9USGVhZGVyIHsKICAgICBFT1RI
ZWFkZXIoKTsKQEAgLTU1LDggKzU1LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWludDhfdCwg
NTEyPiBtX2J1ZmZlcjsKIH07CiAKLWJvb2wgcmVuYW1lRm9udChjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPHVpbnQ4X3Q+Jik7Ci1SZWZQdHI8Rm9u
dE1lbW9yeVJlc291cmNlPiByZW5hbWVBbmRBY3RpdmF0ZUZvbnQoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOworYm9vbCByZW5hbWVGb250KGNvbnN0IFNoYXJl
ZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIFZlY3Rvcjx1aW50OF90PiYpOworUmVmUHRyPEZvbnRN
ZW1vcnlSZXNvdXJjZT4gcmVuYW1lQW5kQWN0aXZhdGVGb250KGNvbnN0IFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09wZW5UeXBlVmVydGlj
YWxEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVmVydGljYWxEYXRhLmNwcAppbmRleCA3OWU5ZWZlMDYwNTMzNTc5ZTljYTNiYzEwMzIz
OGJmZDI4MmY3MTVjLi4wZmE4ZjMwNmFkOTUyZDA2YTA5Mjk3ZDBiMWQyODdiODk4ODMyYTNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudHlwZS9PcGVu
VHlwZVZlcnRpY2FsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAg
c3RydWN0IFN1YnN0aXR1dGlvblN1YlRhYmxlIDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6
VUludDE2IHN1YnN0Rm9ybWF0OwogICAgIE9wZW5UeXBlOjpPZmZzZXQgY292ZXJhZ2VPZmZzZXQ7
CiAKLSAgICBjb25zdCBDb3ZlcmFnZVRhYmxlKiBjb3ZlcmFnZShjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZhbGlkYXRlT2Zmc2V0PENvdmVyYWdl
VGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9CisgICAgY29uc3QgQ292ZXJhZ2VUYWJs
ZSogY292ZXJhZ2UoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0dXJuIHZh
bGlkYXRlT2Zmc2V0PENvdmVyYWdlVGFibGU+KGJ1ZmZlciwgY292ZXJhZ2VPZmZzZXQpOyB9CiB9
OwogCiBzdHJ1Y3QgU2luZ2xlU3Vic3RpdHV0aW9uMlN1YlRhYmxlIDogU3Vic3RpdHV0aW9uU3Vi
VGFibGUgewpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0cnVjdCBMb29rdXBUYWJsZSA6IFRhYmxlQmFz
ZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBzdWJUYWJsZU9mZnNldHNbMV07CiAgICAgLy8gT3Bl
blR5cGU6OlVJbnQxNiBtYXJrRmlsdGVyaW5nU2V0OyB0aGlzIGZpZWxkIGNvbWVzIGFmdGVyIHZh
cmlhYmxlIGxlbmd0aCwgc28gb2Zmc2V0IGlzIGRldGVybWluZWQgZHluYW1pY2FsbHkuCiAKLSAg
ICBib29sIGdldFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0
IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBib29sIGdldFN1YnN0
aXR1dGlvbnMoSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnRTdWJUYWJsZSA9IHN1
YlRhYmxlQ291bnQ7CiAgICAgICAgIGlmICghaXNWYWxpZEVuZChidWZmZXIsICZzdWJUYWJsZU9m
ZnNldHNbY291bnRTdWJUYWJsZV0pKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0cnVjdCBMb29rdXBM
aXN0IDogVGFibGVCYXNlIHsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cENvdW50OwogICAg
IE9wZW5UeXBlOjpPZmZzZXQgbG9va3VwT2Zmc2V0c1sxXTsKIAotICAgIGNvbnN0IExvb2t1cFRh
YmxlKiBsb29rdXAodWludDE2X3QgaW5kZXgsIGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMb29rdXBUYWJsZSogbG9va3VwKHVpbnQxNl90IGlu
ZGV4LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVp
bnQxNl90IGNvdW50ID0gbG9va3VwQ291bnQ7CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8
fCAhaXNWYWxpZEVuZChidWZmZXIsICZsb29rdXBPZmZzZXRzW2NvdW50XSkpCkBAIC0yMDgsNyAr
MjA4LDcgQEAgc3RydWN0IEZlYXR1cmVUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6
OlVJbnQxNiBsb29rdXBDb3VudDsKICAgICBPcGVuVHlwZTo6VUludDE2IGxvb2t1cExpc3RJbmRl
eFsxXTsKIAotICAgIGJvb2wgZ2V0R2x5cGhTdWJzdGl0dXRpb25zKGNvbnN0IExvb2t1cExpc3Qq
IGxvb2t1cHMsIEhhc2hNYXA8R2x5cGgsIEdseXBoPiogbWFwLCBjb25zdCBDb250aWd1b3VzU2hh
cmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0CisgICAgYm9vbCBnZXRHbHlwaFN1YnN0aXR1dGlvbnMo
Y29uc3QgTG9va3VwTGlzdCogbG9va3VwcywgSGFzaE1hcDxHbHlwaCwgR2x5cGg+KiBtYXAsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3Qg
Y291bnQgPSBsb29rdXBDb3VudDsKICAgICAgICAgaWYgKCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJmxv
b2t1cExpc3RJbmRleFtjb3VudF0pKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0cnVjdCBGZWF0dXJl
TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIE9wZW5UeXBlOjpPZmZzZXQgZmVhdHVyZU9mZnNl
dDsKICAgICB9IGZlYXR1cmVzWzFdOwogCi0gICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJl
KHVpbnQxNl90IGluZGV4LCBPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1cmVUYWJsZSogZmVhdHVyZSh1
aW50MTZfdCBpbmRleCwgT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBmZWF0dXJlQ291bnQ7
CiAgICAgICAgIGlmIChpbmRleCA+PSBjb3VudCB8fCAhaXNWYWxpZEVuZChidWZmZXIsICZmZWF0
dXJlc1tjb3VudF0pKQpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0cnVjdCBGZWF0dXJlTGlzdCA6IFRh
YmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IEZlYXR1cmVU
YWJsZSogZmluZEZlYXR1cmUoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBGZWF0dXJlVGFibGUqIGZpbmRGZWF0
dXJlKE9wZW5UeXBlOjpUYWcgdGFnLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIGZvciAodWludDE2X3QgaSA9IDA7IGkgPCBmZWF0dXJlQ291bnQ7ICsr
aSkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZXNbaV0pICYm
IGZlYXR1cmVzW2ldLmZlYXR1cmVUYWcgPT0gdGFnKQpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0cnVj
dCBMYW5nU3lzVGFibGUgOiBUYWJsZUJhc2UgewogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVy
ZUNvdW50OwogICAgIE9wZW5UeXBlOjpVSW50MTYgZmVhdHVyZUluZGV4WzFdOwogCi0gICAgY29u
c3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29uc3Qg
RmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CisgICAgY29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcg
ZmVhdHVyZVRhZywgY29uc3QgRmVhdHVyZUxpc3QqIGZlYXR1cmVzLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIHVpbnQxNl90IGNvdW50ID0gZmVhdHVy
ZUNvdW50OwogICAgICAgICBpZiAoIWlzVmFsaWRFbmQoYnVmZmVyLCAmZmVhdHVyZUluZGV4W2Nv
dW50XSkpCkBAIC0yNzcsNyArMjc3LDcgQEAgc3RydWN0IFNjcmlwdFRhYmxlIDogVGFibGVCYXNl
IHsKICAgICAgICAgT3BlblR5cGU6Ok9mZnNldCBsYW5nU3lzT2Zmc2V0OwogICAgIH0gbGFuZ1N5
c1JlY29yZHNbMV07CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNv
bnN0IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5n
U3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25z
dAogICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBsYW5nU3lzQ291bnQ7CiAgICAgICAg
IGlmICghaXNWYWxpZEVuZChidWZmZXIsICZsYW5nU3lzUmVjb3Jkc1tjb3VudF0pKQpAQCAtMjk4
LDcgKzI5OCw3IEBAIHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgT3Bl
blR5cGU6Ok9mZnNldCBzY3JpcHRPZmZzZXQ7CiAgICAgfSBzY3JpcHRzWzFdOwogCi0gICAgY29u
c3QgU2NyaXB0VGFibGUqIHNjcmlwdChPcGVuVHlwZTo6VGFnIHRhZywgY29uc3QgQ29udGlndW91
c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBzY3Jp
cHQoT3BlblR5cGU6OlRhZyB0YWcsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgdWludDE2X3QgY291bnQgPSBzY3JpcHRDb3VudDsKICAgICAgICAgaWYg
KCFpc1ZhbGlkRW5kKGJ1ZmZlciwgJnNjcmlwdHNbY291bnRdKSkKQEAgLTMxMCw3ICszMTAsNyBA
QCBzdHJ1Y3QgU2NyaXB0TGlzdCA6IFRhYmxlQmFzZSB7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIAotICAgIGNvbnN0IFNjcmlwdFRhYmxlKiBkZWZhdWx0U2NyaXB0KGNvbnN0IENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBTY3JpcHRUYWJsZSogZGVm
YXVsdFNjcmlwdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAg
ICAgIHVpbnQxNl90IGNvdW50ID0gc2NyaXB0Q291bnQ7CiAgICAgICAgIGlmICghY291bnQgfHwg
IWlzVmFsaWRFbmQoYnVmZmVyLCAmc2NyaXB0c1tjb3VudF0pKQpAQCAtMzIxLDcgKzMyMSw3IEBA
IHN0cnVjdCBTY3JpcHRMaXN0IDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIHZhbGlkYXRl
T2Zmc2V0PFNjcmlwdFRhYmxlPihidWZmZXIsIHNjcmlwdHNbMF0uc2NyaXB0T2Zmc2V0KTsKICAg
ICB9CiAKLSAgICBjb25zdCBMYW5nU3lzVGFibGUqIGRlZmF1bHRMYW5nU3lzKGNvbnN0IENvbnRp
Z3VvdXNTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKKyAgICBjb25zdCBMYW5nU3lzVGFibGUq
IGRlZmF1bHRMYW5nU3lzKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgY29uc3QgU2NyaXB0VGFibGUqIHNjcmlwdFRhYmxlID0gZGVmYXVsdFNjcmlwdChi
dWZmZXIpOwogICAgICAgICBpZiAoIXNjcmlwdFRhYmxlKQpAQCAtMzM2LDExICszMzYsMTEgQEAg
c3RydWN0IEdTVUJUYWJsZSA6IFRhYmxlQmFzZSB7CiAgICAgT3BlblR5cGU6Ok9mZnNldCBmZWF0
dXJlTGlzdE9mZnNldDsKICAgICBPcGVuVHlwZTo6T2Zmc2V0IGxvb2t1cExpc3RPZmZzZXQ7CiAK
LSAgICBjb25zdCBTY3JpcHRMaXN0KiBzY3JpcHRMaXN0KGNvbnN0IENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4o
YnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQotICAgIGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0
dXJlTGlzdChjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZmZXIpIGNvbnN0IHsgcmV0
dXJuIHZhbGlkYXRlT2Zmc2V0PEZlYXR1cmVMaXN0PihidWZmZXIsIGZlYXR1cmVMaXN0T2Zmc2V0
KTsgfQotICAgIGNvbnN0IExvb2t1cExpc3QqIGxvb2t1cExpc3QoY29uc3QgQ29udGlndW91c1No
YXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdCB7IHJldHVybiB2YWxpZGF0ZU9mZnNldDxMb29rdXBM
aXN0PihidWZmZXIsIGxvb2t1cExpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgU2NyaXB0TGlzdCog
c2NyaXB0TGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFs
aWRhdGVPZmZzZXQ8U2NyaXB0TGlzdD4oYnVmZmVyLCBzY3JpcHRMaXN0T2Zmc2V0KTsgfQorICAg
IGNvbnN0IEZlYXR1cmVMaXN0KiBmZWF0dXJlTGlzdChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8RmVhdHVyZUxpc3Q+KGJ1ZmZlciwgZmVh
dHVyZUxpc3RPZmZzZXQpOyB9CisgICAgY29uc3QgTG9va3VwTGlzdCogbG9va3VwTGlzdChjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QgeyByZXR1cm4gdmFsaWRhdGVPZmZzZXQ8TG9v
a3VwTGlzdD4oYnVmZmVyLCBsb29rdXBMaXN0T2Zmc2V0KTsgfQogCi0gICAgY29uc3QgTGFuZ1N5
c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBidWZm
ZXIpIGNvbnN0CisgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBkZWZhdWx0TGFuZ1N5cyhjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IFNjcmlwdExp
c3QqIHNjcmlwdHMgPSBzY3JpcHRMaXN0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghc2NyaXB0cykK
QEAgLTM0OCw3ICszNDgsNyBAQCBzdHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAg
ICAgcmV0dXJuIHNjcmlwdHMtPmRlZmF1bHRMYW5nU3lzKGJ1ZmZlcik7CiAgICAgfQogCi0gICAg
Y29uc3QgRmVhdHVyZVRhYmxlKiBmZWF0dXJlKE9wZW5UeXBlOjpUYWcgZmVhdHVyZVRhZywgY29u
c3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAorICAgIGNvbnN0IEZlYXR1
cmVUYWJsZSogZmVhdHVyZShPcGVuVHlwZTo6VGFnIGZlYXR1cmVUYWcsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsKICAgICAgICAgY29uc3QgTGFuZ1N5c1RhYmxlKiBs
YW5nU3lzID0gZGVmYXVsdExhbmdTeXMoYnVmZmVyKTsKICAgICAgICAgY29uc3QgRmVhdHVyZUxp
c3QqIGZlYXR1cmVzID0gZmVhdHVyZUxpc3QoYnVmZmVyKTsKQEAgLTM2NSw3ICszNjUsNyBAQCBz
dHJ1Y3QgR1NVQlRhYmxlIDogVGFibGVCYXNlIHsKICAgICAgICAgcmV0dXJuIGZlYXR1cmU7CiAg
ICAgfQogCi0gICAgYm9vbCBnZXRWZXJ0aWNhbEdseXBoU3Vic3RpdHV0aW9ucyhIYXNoTWFwPEds
eXBoLCBHbHlwaD4qIG1hcCwgY29uc3QgQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyKSBj
b25zdAorICAgIGJvb2wgZ2V0VmVydGljYWxHbHlwaFN1YnN0aXR1dGlvbnMoSGFzaE1hcDxHbHlw
aCwgR2x5cGg+KiBtYXAsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBjb25zdAogICAgIHsK
ICAgICAgICAgY29uc3QgRmVhdHVyZVRhYmxlKiB2ZXJ0aWNhbEZlYXR1cmVUYWJsZSA9IGZlYXR1
cmUoT3BlblR5cGU6OlZlcnRGZWF0dXJlVGFnLCBidWZmZXIpOwogICAgICAgICBpZiAoIXZlcnRp
Y2FsRmVhdHVyZVRhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0RpcmVjdFdyaXRlVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaAppbmRleCBhNjI3MTliMTcxOWE3
NGY5NzY5MjIxOWRmNWY3YWFlZGM0OTA2NDY2Li4wZGI0YWZhZGIzZjc0MmI4M2E0ZTE2Y2YzNzE4
NzBhMmIwNDA0ZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRGlyZWN0V3JpdGVVdGlsaXRpZXMuaApAQCAtNDMsNyArNDMsNyBAQCBl
bnVtIERXUklURV9GT05UX1NUUkVUQ0g7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZv
bnRQbGF0Zm9ybURhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgRGlyZWN0V3JpdGUgewogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHAKaW5kZXggOGJlMWIxYTMzYTYyMDVjMTgxY2VmZjFhYzM0MzRiYzg3YTc4M2Jl
NS4uYzg2ODNhN2VmNTg5YzNmZTY1NGQ4NDU3MTI5NWUyNDBkMjI0NDllNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBTdHJpbmcgY3Jl
YXRlVW5pcXVlRm9udE5hbWUoKQogICAgIHJldHVybiBmb250TmFtZTsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURh
dGEoQ29udGlndW91c1NoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNv
bGxlY3Rpb24pCitzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBpdGVtSW5Db2xsZWN0aW9uKQogewogICAgIFN0cmluZyBmb250TmFtZSA9IGNyZWF0ZVVuaXF1
ZUZvbnROYW1lKCk7CiAgICAgYXV0byBmb250UmVzb3VyY2UgPSByZW5hbWVBbmRBY3RpdmF0ZUZv
bnQoYnVmZmVyLCBmb250TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaAppbmRleCBmYzA0
ZjE3NWM3ODhiOWJlOTk4ZjVmM2I3MTFmNTk3YzAyNmJiZjllLi4wOGZjOWYxOWVhZWE5NDgzZWE1
OGVjMWFlZWRkNDU3MjU2Y2UyN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmgKQEAgLTM2
LDEzICszNiwxMyBAQCB0eXBlZGVmIHN0cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hh
cmVkQnVmZmVyOwogY2xhc3MgRm9udENyZWF0aW9uQ29udGV4dDsKIGNsYXNzIEZvbnREZXNjcmlw
dGlvbjsKIGNsYXNzIEZvbnRNZW1vcnlSZXNvdXJjZTsKIHN0cnVjdCBGb250U2VsZWN0aW9uU3Bl
Y2lmaWVkQ2FwYWJpbGl0aWVzOwogc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3M7Ci1jbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzOwogdHlwZWRlZiBGb250VGFnZ2Vk
U2V0dGluZ3M8aW50PiBGb250RmVhdHVyZVNldHRpbmdzOwpAQCAtNjUsNyArNjUsNyBAQCBwdWJs
aWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhIGNyZWF0aW9uRGF0YTsKIH07
CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsK
K3N0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYpOwogCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggZjRmYmY3YTdmNGQ3YzgzZmYy
MTE2YzMxZTU0NmNhOTFlMDU4OWNiMS4uM2MxZDRlMmYzYzc1NGE3M2E4MjNhMDBjMTY3NGVjMzA0
NDkzMTEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKQEAgLTg3
LDcgKzg3LDcgQEAgc3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiAgICAgcmV0
dXJuIGZvbnROYW1lOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0
YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShDb250aWd1b3VzU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgaXRlbUluQ29sbGVjdGlvbikKK3N0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGl0ZW1JbkNvbGxlY3Rpb24pCiB7CiAgICAg
U3RyaW5nIGZvbnROYW1lID0gY3JlYXRlVW5pcXVlRm9udE5hbWUoKTsKICAgICBhdXRvIGZvbnRS
ZXNvdXJjZSA9IHJlbmFtZUFuZEFjdGl2YXRlRm9udChidWZmZXIsIGZvbnROYW1lKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1E
YXRhQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKaW5kZXggNGM2NzRjNDc0M2JjMDExOGE5NzAxMGNj
NjkyODliNTg2ZGJiMGNkMS4uMzFhMWU1YzUzMWYyMDkwM2M1Y2ZiMzI4NjBiYTVlZjIwNjRlOTNk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQ
bGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAg
Ym9vbCBGb250UGxhdGZvcm1EYXRhOjpwbGF0Zm9ybUlzRXF1YWwoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYgb3RoZXIpIGNvbnN0CiAgICAgICAgICYmIG1fdXNlR0RJID09IG90aGVyLm1fdXNlR0RJ
OwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6
b3BlblR5cGVUYWJsZSh1aW50MzJfdCB0YWJsZSkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+
IEZvbnRQbGF0Zm9ybURhdGE6Om9wZW5UeXBlVGFibGUodWludDMyX3QgdGFibGUpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIHBsYXRmb3JtT3BlblR5cGVUYWJsZSh0YWJsZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3Jt
RGF0YVdpbi5jcHAKaW5kZXggNDM5Y2Y4NjNiODczZGM5Y2Y3ZjgxMDU5OWU1YTYwMWU3ZjczNzk5
Ny4uNmNiNTUxMTA0YTkzYmRiZDIyYjQxN2E0NTQ2ZDIwZmFkMGUyYTM0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZv
cm1EYXRhV2luLmNwcApAQCAtNTksMTggKzU5LDE4IEBAIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQ
bGF0Zm9ybURhdGEoR0RJT2JqZWN0PEhGT05UPiBmb250LCBmbG9hdCBzaXplLCBib29sIGJvbGQs
CiAgICAgUmVzdG9yZURDKGhkYywgLTEpOwogfQogCi1SZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRh
YmxlKSBjb25zdAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRm9udFBsYXRmb3JtRGF0YTo6cGxhdGZv
cm1PcGVuVHlwZVRhYmxlKHVpbnQzMl90IHRhYmxlKSBjb25zdAogewogICAgIEhXbmREQyBoZGMo
MCk7CiAgICAgSEdESU9CSiBvbGRGb250ID0gU2VsZWN0T2JqZWN0KGhkYywgaGZvbnQoKSk7CiAK
ICAgICBEV09SRCBzaXplID0gR2V0Rm9udERhdGEoaGRjLCB0YWJsZSwgMCwgMCwgMCk7Ci0gICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKHNpemUgIT0gR0RJX0VSUk9SKSB7CiAgICAgICAgIFZl
Y3Rvcjx1aW50OF90PiBkYXRhKHNpemUpOwogICAgICAgICBEV09SRCByZXN1bHQgPSBHZXRGb250
RGF0YShoZGMsIHRhYmxlLCAwLCAoUFZPSUQpZGF0YS5kYXRhKCksIHNpemUpOwogICAgICAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0ID09IHNpemUpOwotICAgICAgICBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgICAgIGJ1
ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIH0KIAogICAg
IFNlbGVjdE9iamVjdChoZGMsIG9sZEZvbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKaW5k
ZXggNjI5ZTBlNjFhMTA0YzU2N2ExZDRlZGNiN2U1Nzk3ZGNmNjdjNmU4ZS4uNzczNTczOWI5MzM0
ZjQ0ZDk5YTNmMTJmZmM1YmY3YjQxZjdjYzZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3Bw
CkBAIC0yNzIsNyArMjcyLDcgQEAgUGxhdGZvcm1JbWFnZVB0ciBJbWFnZURlY29kZXJEaXJlY3Qy
RDo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWIKICAgICByZXR1cm4g
Yml0bWFwOwogfQogCi12b2lkIEltYWdlRGVjb2RlckRpcmVjdDJEOjpzZXREYXRhKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlRGVjb2RlckRpcmVj
dDJEOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogewogICAgIGlmICghYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZURlY29kZXJEaXJlY3QyRC5oCmluZGV4IDRmNDcyNTg2YjQyNGJkYTFjZjZmYTAxNDNjYmEyM2Qw
MzAwMTZlNDUuLmMyMzY1ZmQ3NDRjNjExOGMxOTk5ZTA1YjgwMmVkNWI0OGYzNjQ4MjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJE
aXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZURlY29kZXJEaXJlY3QyRC5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEltYWdlRGVjb2RlckRp
cmVjdDJEIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiBwdWJsaWM6CiAgICAgSW1hZ2VE
ZWNvZGVyRGlyZWN0MkQoKTsKIAotICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyRGlyZWN0MkQ+
IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJEaXJlY3QyRD4gY3JlYXRlKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJEaXJl
Y3QyRCgpKTsKICAgICB9CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIFBsYXRmb3Jt
SW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
ID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERl
Y29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKLSAgICB2
b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwor
ICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVy
Q2FjaGUoc2l6ZV90KSBmaW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZVdpbi5jcHAKaW5kZXggMGQ4ODIwZTlmM2Q2ZmQ3NzM1ZDU3MGIz
NjQxNDg4ZjUzYmQ3ZWNlOS4uMmQ5NzI3MGE3MzQ4MzQ4OTNlNzhjODFmZjBlYzViYjVkZmVjM2Y4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VX
aW4uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIC8v
IFRoaXMgZnVuY3Rpb24gbG9hZHMgcmVzb3VyY2VzIGZyb20gV2ViS2l0Ci1SZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVmZmVyKGNvbnN0IGNoYXIqKTsKK1Jl
ZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBsb2FkUmVzb3VyY2VJbnRvQnVm
ZmVyKGNvbnN0IGNoYXIqKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaAppbmRleCA3ZTNiMzYzMmI5MGM2MTk0MTVl
NDhhNTJhMjI1OGIxNDJlMDAxYTU3Li5jZjJiNTFmNmYwMjgzN2ExMTA2ZjRkOTk5ZjJmMTMwZTI1
ODA5ODZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9u
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgK
QEAgLTYwLDggKzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FuU21hcnRSZXBsYWNlKGJv
b2wgY2FuU21hcnRSZXBsYWNlKSB7IG1fY2FuU21hcnRSZXBsYWNlID0gY2FuU21hcnRSZXBsYWNl
OyB9CiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2UoKSBjb25zdCB7IHJldHVybiBtX2NhblNtYXJ0
UmVwbGFjZTsgfQogCi0gICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikgeyBtX2N1c3RvbURhdGEgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KLSAg
ICBDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBjdXN0b21EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9j
dXN0b21EYXRhLmdldCgpOyB9CisgICAgdm9pZCBzZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKSB7IG1fY3VzdG9tRGF0YSA9IFdURk1vdmUoYnVmZmVyKTsgfQorICAgIFNo
YXJlZEJ1ZmZlciogY3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tRGF0YS5nZXQo
KTsgfQogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YSgpIGNvbnN0IHsgcmV0dXJuICEhbV9jdXN0b21E
YXRhOyB9CiAgICAgdm9pZCBjbGVhckN1c3RvbURhdGEoKSB7IG1fY3VzdG9tRGF0YSA9IG51bGxw
dHI7IH0KIApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxTdHJpbmc+IG1f
ZmlsZW5hbWVzOwogICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKICAgICBib29sIG1fY2FuU21h
cnRSZXBsYWNlIHsgZmFsc2UgfTsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
bV9jdXN0b21EYXRhOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fY3VzdG9tRGF0YTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNwcApp
bmRleCBkOTU2ZDllNzYyNWQ1YmI1YTcwZjA2OTNlNzc5OGVlOTA4NDlmMTY1Li4zM2M5NWVjMzMz
M2E5MjBjNjRhMDE4MTc1MWViNGE1MDVlZjFhN2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29k
ZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNl
IHsKIAotc3RhdGljIHVuc2lnbmVkIGNvcHlGcm9tU2hhcmVkQnVmZmVyKGNoYXIqIGJ1ZmZlciwg
dW5zaWduZWQgYnVmZmVyTGVuZ3RoLCBjb25zdCBTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikK
K3N0YXRpYyB1bnNpZ25lZCBjb3B5RnJvbVNoYXJlZEJ1ZmZlcihjaGFyKiBidWZmZXIsIHVuc2ln
bmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVm
ZmVyKQogewogICAgIHVuc2lnbmVkIGJ5dGVzRXh0cmFjdGVkID0gMDsKICAgICBmb3IgKGNvbnN0
IGF1dG8mIGVsZW1lbnQgOiBzaGFyZWRCdWZmZXIpIHsKQEAgLTEzNSw3ICsxMzUsNyBAQCBib29s
IG1hdGNoZXNDVVJTaWduYXR1cmUoY2hhciogY29udGVudHMpCiAKIH0KIAotUmVmUHRyPFNjYWxh
YmxlSW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNv
ZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbGVuZ3RoT2ZMb25nZXN0U2lnbmF0dXJlID0gMTQ7IC8vIFRvIHdpdDogIlJJRkY/Pz8/V0VC
UFZQIgogICAgIGNoYXIgY29udGVudHNbbGVuZ3RoT2ZMb25nZXN0U2lnbmF0dXJlXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1h
Z2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2Fs
YWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IDNjNmEzYTUwYzgyMDk2NGU4YTliMDc0OTAxYTkyYjNm
M2M0Nzg5YjcuLjljNDA1NTc4MjQxZDBjNTEyNzAyOTUxNWMyMjEyNjU4ZjhjNGY2OGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1h
Z2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
U2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBSZXR1cm5zIG51bGxwdHIgaWYgd2UgY2FuJ3Qgc25pZmYgYSBzdXBwb3J0ZWQgdHlwZSBmcm9t
IHRoZSBwcm92aWRlZCBkYXRhIChwb3NzaWJseQogICAgIC8vIGJlY2F1c2UgdGhlcmUgaXNuJ3Qg
ZW5vdWdoIGRhdGEgeWV0KS4KLSAgICBzdGF0aWMgUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVy
PiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8U2NhbGFibGVJbWFnZURlY29kZXI+IGNy
ZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3Qg
eyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhhOyB9CiAKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1
czo6Q29tcGxldGU7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlCisgICAgdm9pZCBzZXREYXRhKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBpZiAobV9l
bmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCkBAIC0xOTQsNyAr
MTk0LDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogcHJvdGVjdGVkOgotICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CisgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50PiBtX2RhdGE7CiAgICAgVmVjdG9yPFNj
YWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUsIDE+IG1fZnJhbWVCdWZmZXJDYWNoZSBXVEZfR1VBUkRF
RF9CWV9MT0NLKG1fbG9jayk7CiAgICAgbXV0YWJsZSBMb2NrIG1fbG9jazsKICAgICBib29sIG1f
cHJlbXVsdGlwbHlBbHBoYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcAppbmRleCA3YzYw
M2ZkODM1OGMyMTRhYzkxODRmMzE4OTk3MmZlODQxYjYxZTgwLi4yNmY4ODY0OTZlNWE1YTE0ZTI4
YWZiMWFmYTliZmMzMDE3N2Y1MWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCkBA
IC00MSw3ICs0MSw3IEBAIEFWSUZJbWFnZVJlYWRlcjo6QVZJRkltYWdlUmVhZGVyKFJlZlB0cjxB
VklGSW1hZ2VEZWNvZGVyPiYmIGRlY29kZXIpCiAKIEFWSUZJbWFnZVJlYWRlcjo6fkFWSUZJbWFn
ZVJlYWRlcigpID0gZGVmYXVsdDsKIAotYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVy
KGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQorYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKIHsK
ICAgICBpZiAoYXZpZkRlY29kZXJTZXRJT01lbW9yeShtX2F2aWZEZWNvZGVyLmdldCgpLCBkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpICE9IEFWSUZfUkVTVUxUX09LKQogICAgICAgICByZXR1cm4g
YWxsRGF0YVJlY2VpdmVkID8gbV9kZWNvZGVyLT5zZXRGYWlsZWQoKSA6IGZhbHNlOwpAQCAtNTgs
NyArNTgsNyBAQCBib29sIEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29uc3QgU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBhbAogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIEFWSUZJbWFnZVJlYWRlcjo6ZGVjb2RlRnJhbWUoc2l6ZV90IGZyYW1lSW5kZXgsIFNj
YWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmIGJ1ZmZlciwgY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudCYgZGF0YSkKK3ZvaWQgQVZJRkltYWdlUmVhZGVyOjpkZWNvZGVGcmFtZShzaXplX3Qg
ZnJhbWVJbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYgYnVmZmVyLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkKIHsKICAgICBpZiAobV9kZWNv
ZGVyLT5mYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgK
aW5kZXggY2JjYTBiOGMxMjRiZmYwZmZjMzMwMWJhMzViY2UwMWVkMjcyMmRmOC4uNDk2ZjY5Zjgx
MmJkNzViMGVkYTYzNTdiYWE4NjBjZmNjYjViYTRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRl
ci5oCkBAIC0zOSw4ICszOSw4IEBAIHB1YmxpYzoKICAgICBBVklGSW1hZ2VSZWFkZXIoUmVmUHRy
PEFWSUZJbWFnZURlY29kZXI+JiYpOwogICAgIH5BVklGSW1hZ2VSZWFkZXIoKTsKIAotICAgIGJv
b2wgcGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIGRlY29kZUZyYW1lKHNpemVfdCBpbmRleCwgU2NhbGFi
bGVJbWFnZURlY29kZXJGcmFtZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKTsK
KyAgICBib29sIHBhcnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6
ZV90IGluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKTsKICAgICBzaXplX3QgaW1hZ2VDb3VudCgpIGNvbnN0
OwogICAgIGRvdWJsZSByZXBldGl0aW9uQ291bnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VE
ZWNvZGVyLmNwcAppbmRleCA3Mjc2OWE2OTI2ZWMyNDE5YmY2NjM4MjUyOGQzZDc3MjBhNTRhZGFl
Li5mNzQ1NWMxNDZjN2U4YWViMDRjYzhjNTZmMzMwZTJhMDFmM2JhNzJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VEZWNvZGVyLmNwcApAQCAtNDYsNyArNDYsNyBAQCBCTVBJbWFnZURlY29kZXI6OkJNUElt
YWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cAogewogfQogCi12b2lkIEJNUEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRh
dGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9pZCBCTVBJbWFnZURlY29kZXI6OnNldERhdGEo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAg
ICAgaWYgKGZhaWxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgK
aW5kZXggYzdjN2NhODFmZWE2YjhhNzc0YmIzMDhlNTM4ZGNkMDQ4Yzk5NWVlYS4uNjRkZWQ2YWJi
ZTJjMGEyOWIxMWY5ZmI1ZWNkNmI0ODcyNGQ1ODk3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIu
aApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTY2FsYWJsZUltYWdlRGVjb2Rl
cgogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJi
bXAiX3M7IH0KLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJh
bWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIGZpbmFsOwogICAgIC8vIENBVVRJ
T046IHNldEZhaWxlZCgpIGRlbGV0ZXMgfG1fcmVhZGVyfC4gQmUgY2FyZWZ1bCB0byBhdm9pZAog
ICAgIC8vIGFjY2Vzc2luZyBkZWxldGVkIG1lbW9yeSwgZXNwZWNpYWxseSB3aGVuIGNhbGxpbmcg
dGhpcyBmcm9tIGluc2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaAppbmRleCA0ODQ0ZjM4MGRjMTdl
YzcwNDU4OGZiMTJmNTNlYWJjNmQyMGU2MGY0Li5iZDQzMGU4YThiZWEyYzgxNmIyYzUyMmJmNWJh
Nzg4NDZjMzhlMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaApAQCAtNDIsNyArNDIsNyBAQCBj
bGFzcyBCTVBJbWFnZVJlYWRlciB7CiBwdWJsaWM6CiAgICAgLy8gUmVhZCBhIHZhbHVlIGZyb20g
fGRhdGFbb2Zmc2V0XXwsIGNvbnZlcnRpbmcgZnJvbSBsaXR0bGUgdG8gbmF0aXZlCiAgICAgLy8g
ZW5kaWFubmVzcy4KLSAgICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJlYWRVaW50MTYoY29uc3Qg
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkKKyAgICBzdGF0aWMg
aW5saW5lIHVpbnQxNl90IHJlYWRVaW50MTYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQpCiAgICAgewogICAgICAgICB1aW50MTZfdCBy
ZXN1bHQ7CiAgICAgICAgIG1lbWNweSgmcmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgMik7
CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CiAKLSAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29uc3QgU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNldCkKKyAgICBzdGF0aWMgaW5saW5lIHVp
bnQzMl90IHJlYWRVaW50MzIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQmIGRhdGEsIGludCBvZmZzZXQpCiAgICAgewogICAgICAgICB1aW50MzJfdCByZXN1bHQ7CiAg
ICAgICAgIG1lbWNweSgmcmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgNCk7CkBAIC02OSw3
ICs2OSw3IEBAIHB1YmxpYzoKICAgICBCTVBJbWFnZVJlYWRlcihTY2FsYWJsZUltYWdlRGVjb2Rl
ciogcGFyZW50LCBzaXplX3QgZGVjb2RlZEFuZEhlYWRlck9mZnNldCwgc2l6ZV90IGltZ0RhdGFP
ZmZzZXQsIGJvb2wgdXNlc0FuZE1hc2spOwogCiAgICAgdm9pZCBzZXRCdWZmZXIoU2NhbGFibGVJ
bWFnZURlY29kZXJGcmFtZSogYnVmZmVyKSB7IG1fYnVmZmVyID0gYnVmZmVyOyB9Ci0gICAgdm9p
ZCBzZXREYXRhKFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRh
dGE7IH0KKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21l
bnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KIAogICAgIC8vIERvZXMgdGhlIGFjdHVhbCBk
ZWNvZGluZy4gSWYgfG9ubHlTaXplfCBpcyB0cnVlLCBkZWNvZGluZyBvbmx5CiAgICAgLy8gcHJv
Z3Jlc3NlcyBhcyBmYXIgYXMgbmVjZXNzYXJ5IHRvIGdldCB0aGUgaW1hZ2Ugc2l6ZS4gUmV0dXJu
cwpAQCAtMjcyLDcgKzI3Miw3IEBAIHByaXZhdGU6CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJG
cmFtZSogbV9idWZmZXI7CiAKICAgICAvLyBUaGUgZmlsZSB0byBkZWNvZGUuCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKIAogICAgIC8vIEFuIGluZGV4IGlu
dG8gfG1fZGF0YXwgcmVwcmVzZW50aW5nIGhvdyBtdWNoIHdlJ3ZlIGFscmVhZHkgZGVjb2RlZC4K
ICAgICBzaXplX3QgbV9kZWNvZGVkT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJhY2tp
bmdTdG9yZUNhaXJvLmNwcAppbmRleCA2MDEyMDM3NGY5YzQzMTY4YTY1MjFiNjljNTRhZmJlMmEw
MGY1NWY3Li40YTIxMjU1YThjMGZiNjc4ZTRhYWRkNzY2M2ViN2Y5MThlN2ZlOTRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZUJh
Y2tpbmdTdG9yZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9jYWlyby9JbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcApAQCAtMzcsNyArMzcsOSBA
QCBQbGF0Zm9ybUltYWdlUHRyIEltYWdlQmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0CiAgICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGNvbnN0X2Nhc3Q8dWludDMyX3Qq
PihtX3BpeGVsc1B0cikpLAogICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMyLCBzaXplKCkud2lk
dGgoKSwgc2l6ZSgpLmhlaWdodCgpLCBzaXplKCkud2lkdGgoKSAqIHNpemVvZih1aW50MzJfdCkp
KTsKICAgICBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tleV90IHNfc3VyZmFjZURhdGFLZXk7Ci0g
ICAgY2Fpcm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRhKHN1cmZhY2UuZ2V0KCksICZzX3N1cmZhY2VE
YXRhS2V5LCBtX3BpeGVscy5nZXQoKSwgW10odm9pZCogZGF0YSkgeyBzdGF0aWNfY2FzdDxTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50Kj4oZGF0YSktPmRlcmVmKCk7IH0pOworICAgIGNhaXJvX3N1
cmZhY2Vfc2V0X3VzZXJfZGF0YShzdXJmYWNlLmdldCgpLCAmc19zdXJmYWNlRGF0YUtleSwgbV9w
aXhlbHMuZ2V0KCksIFtdKHZvaWQqIGRhdGEpIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8RGF0YVNl
Z21lbnQqPihkYXRhKS0+ZGVyZWYoKTsKKyAgICB9KTsKIAogICAgIHJldHVybiBzdXJmYWNlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBlNmFiZTBkOTU0NGI2YzE4NWM2NDVk
ZWNlMDlmMjNmOTU2NjYwN2NiLi5iOWVjMDFiOGFlOGU4ZDI5YmM3ODI1MjZlMDc2NTI1NTFlMzU5
YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9n
aWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBHSUZJ
bWFnZURlY29kZXI6OkdJRkltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcAogCiBHSUZJbWFnZURlY29kZXI6On5HSUZJbWFnZURlY29kZXIo
KSA9IGRlZmF1bHQ7CiAKLXZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEdJRkltYWdlRGVjb2Rlcjo6c2V0
RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkK
IHsKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29k
ZXIuaAppbmRleCAzNWRmMzNmNmRmYzQ4M2ZkODQ3MTM2NmFlNTNiYjBiOTYxY2FlZDJlLi5jNzQ3
MTk5OTliOTg2YzFjZWY4NDc4NzU5ZDIzNzE4YzkwNDJkM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFNjYWxhYmxlSW1hZ2VE
ZWNvZGVyCiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gImdpZiJfczsgfQotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgc2V0
U2l6ZShjb25zdCBJbnRTaXplJikgZmluYWw7CiAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25z
dCBmaW5hbDsKICAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3QgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9n
aWYvR0lGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCmluZGV4IDQyMTQ2ZTAzMjkzMjM2OTk3ODllYjVlNDJh
ZjRjNzNkMzRhYjljYzYuLjEwODJmZGYwZGZmMjM5MWU1NjUzMGE0MWY4N2JhNDM5ODIzMjc1MzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCkBAIC0yMzcsNyArMjM3LDcgQEAgcHVibGljOgogICAg
IHsKICAgICB9CiAKLSAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQorICAgIHZvaWQgc2V0RGF0YShXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkgeyBtX2RhdGEg
PSAmZGF0YTsgfQogICAgIC8vIEZJWE1FOiBoYWx0QXRGcmFtZSBzaG91bGQgYmUgc2l6ZV90Lgog
ICAgIGJvb2wgZGVjb2RlKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6R0lGUXVlcnksIHVuc2ln
bmVkIGhhbHRBdEZyYW1lKTsKIApAQCAtMzE2LDYgKzMxNiw2IEBAIHByaXZhdGU6CiAgICAgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxHSUZGcmFtZUNvbnRleHQ+ID4gbV9mcmFtZXM7CiAgICAgc2l6
ZV90IG1fY3VycmVudERlY29kaW5nRnJhbWU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOwogICAgIGJvb2wgbV9wYXJzZUNv
bXBsZXRlZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IGM3MTdjNDVkMzA1
N2MwNTUzNmVlNjA1MGY5Mzk3MDQ2ZDEwZGYyYTcuLmMwNzEzNDViOGJmMzY5YjgwMjcxZmJkZjBh
MGNlMDE3NGYwNTAzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC01Miw3ICs1
Miw3IEBAIElDT0ltYWdlRGVjb2Rlcjo6SUNPSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wCiAKIElDT0ltYWdlRGVjb2Rlcjo6fklDT0lt
YWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAotdm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEo
U2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSUNPSW1hZ2VE
ZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdl
RGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lD
T0ltYWdlRGVjb2Rlci5oCmluZGV4IGZiN2E5MDNiMmEwNzUzOTQ5MTdhYmJiZjExYjFjZWQ4M2Zm
NDMyYTAuLjEwZWU5YjRkMmU4YzlkODg3ZTFkMmI4YmUxMzliYjc0MjcxZDU3YTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURl
Y29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2Nh
bGFibGVJbWFnZURlY29kZXIKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBm
aW5hbCB7IHJldHVybiAiaWNvIl9zOyB9Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKKyAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBmaW5hbDsKICAgICBJbnRTaXpl
IHNpemUoKSBjb25zdCBmaW5hbDsKICAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90
LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdCBmaW5hbDsKICAgICBib29sIHNldFNpemUoY29uc3Qg
SW50U2l6ZSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggMWM4
NzFmNGQ1NjQ5MWJmNzc1ZTg1MDBjMTZkMGJiODk0ZDU0ZTZkYy4uOGZiOTIyMGVlMzdmNmFkODE5
MzgyMDc3NGNlMjJiMWQ1Y2MzYTU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3Bw
CkBAIC0yMjAsNyArMjIwLDcgQEAgc3RhdGljIGJvb2wgaXNJQ0NNYXJrZXIoanBlZ19zYXZlZF9t
YXJrZXJfcHRyIG1hcmtlcikKICAgICAgICAgJiYgbWFya2VyLT5kYXRhWzExXSA9PSAnXDAnOwog
fQogCi1zdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRJQ0NQcm9maWxl
KGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8pCitzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gcmVhZElDQ1Byb2ZpbGUoanBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbykKIHsKICAgICBT
aGFyZWRCdWZmZXJCdWlsZGVyIGJ1ZmZlcjsKICAgICBmb3IgKGpwZWdfc2F2ZWRfbWFya2VyX3B0
ciBtYXJrZXIgPSBpbmZvLT5tYXJrZXJfbGlzdDsgbWFya2VyOyBtYXJrZXIgPSBtYXJrZXItPm5l
eHQpIHsKQEAgLTMyMCw3ICszMjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYnl0ZXNUb1NraXAg
PSBzdGQ6Om1heChudW1CeXRlcyAtIGJ5dGVzVG9Ta2lwLCBzdGF0aWNfY2FzdDxsb25nPigwKSk7
CiAgICAgfQogCi0gICAgYm9vbCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkKKyAgICBib29sIGRlY29kZShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkKICAgICB7CiAg
ICAgICAgIG1fZGVjb2RpbmdTaXplT25seSA9IG9ubHlTaXplOwogCkBAIC03MjYsNyArNzI2LDcg
QEAgdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiB9CiAKICNpZiBVU0UoTENNUykKLXZvaWQgSlBFR0ltYWdlRGVjb2Rlcjo6
c2V0SUNDUHJvZmlsZShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2
b2lkIEpQRUdJbWFnZURlY29kZXI6OnNldElDQ1Byb2ZpbGUoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCiB7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdl
RGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzAzYWE2NzgyMjAzY2JkNGNmYzgzZmRlOGY4NzEyYjcw
ODFlM2FhOS4uZDJkN2ZhNmFiNDliNDI0N2FmZmI4ZTFmYmVlNDY5NTNiMGNiMDVjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKQEAgLTY4LDcgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgICAgIHZvaWQgc2V0T3JpZW50YXRpb24oSW1hZ2VPcmllbnRhdGlvbiBvcmll
bnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247IH0KICNpZiBVU0UoTENNUykK
LSAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmKTsKKyAgICAgICAgdm9pZCBzZXRJQ0NQcm9maWxlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYp
OwogI2VuZGlmCiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJ
bWFnZURlY29kZXIuY3BwCmluZGV4IGJlY2Y2NDUwMjc3ZWViNzRiMDlkZTUyZWUxODJmZjZlMTFl
ZDI3NjIuLjIwNDczZjBlZWViYjU2YzcxMzE0ZjY1NTZiZGEwOTAzMzQ5MDc0NDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcy
MDAwSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKQEAgLTM4MCw3ICszODAs
NyBAQCB2b2lkIEpQRUcyMDAwSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgfQogCiAgICAgc3RydWN0IFJlYWRlciB7Ci0gICAgICAg
IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGE7CisgICAgICAgIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhOwogICAgICAgICBzaXplX3Qgb2Zmc2V0OwogICAg
IH0gcmVhZGVyID0geyAqbV9kYXRhLCAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAK
aW5kZXggYzEyYzQ1OWE1YTNlNWIzNTFjNWJjYzYyYmYwMGI4YTI4MWJkNWJhMy4uNGNiZDMyM2Q5
YTc1MDI2ZWY4NjU4ZjM4MTZkZDczOGQzN2NhOGVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rl
ci5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVhZE9mZnNldCA9
IDA7CiAgICAgfQogCi0gICAgYm9vbCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCYgZGF0YSwgYm9vbCBzaXplT25seSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpCisgICAgYm9v
bCBkZWNvZGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEs
IGJvb2wgc2l6ZU9ubHksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKQogICAgIHsKICAgICAgICAgbV9k
ZWNvZGluZ1NpemVPbmx5ID0gc2l6ZU9ubHk7CiAgICAgICAgIFBOR0ltYWdlRGVjb2RlciogZGVj
b2RlciA9IHN0YXRpY19jYXN0PFBOR0ltYWdlRGVjb2Rlcio+KHBuZ19nZXRfcHJvZ3Jlc3NpdmVf
cHRyKG1fcG5nKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAwMmYxYjA5
ZGJjNzY1MTYwMWY5MjJkZGUyOWY4MDVhNjU4NzFlMmQyLi5iMWJlYzU1ZTc4YzQzNDgwMWMyNTRh
Y2UwZGY1OTkzMWEzNmI3NGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgV0VCUEltYWdlRGVjb2Rlcjo6V0VCUEltYWdlRGVjb2RlcihBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGUKIAogV0VCUEltYWdlRGVjb2Rl
cjo6fldFQlBJbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV0VCUEltYWdlRGVjb2Rl
cjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQordm9p
ZCBXRUJQSW1hZ2VEZWNvZGVyOjpzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKHNp
emVfdCBmcmFtZUluZGV4LCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBUaGlzIGNhbiBi
ZSBleGVjdXRlZCBib3RoIGluIHRoZSBtYWluIHRocmVhZCAod2hlbiBub3QgdXNpbmcgYXN5bmMg
ZGVjb2RpbmcpIG9yIGluIHRoZSBkZWNvZGluZyB0aHJlYWQuCiAgICAgLy8gV2hlbiBleGVjdXRl
ZCBpbiB0aGUgZGVjb2RpbmcgdGhyZWFkLCBhIGNhbGwgdG8gc2V0RGF0YSgpIGZyb20gdGhlIG1h
aW4gdGhyZWFkIG1heSBjaGFuZ2UgdGhlIGRhdGEKICAgICAvLyB0aGUgV2ViUERlbXV4ZXIgaXMg
dXNpbmcsIGxlYXZpbmcgaXQgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLCBzbyB3ZSBuZWVkIHRv
IHByb3RlY3QgdGhlIGRhdGEuCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+
IHByb3RlY3RlZERhdGEobV9kYXRhKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ+IHByb3RlY3RlZERhdGEobV9kYXRhKTsKICAgICBXZWJQRGF0YSBpbnB1
dERhdGEgPSB7IHByb3RlY3RlZERhdGEtPmRhdGEoKSwgcHJvdGVjdGVkRGF0YS0+c2l6ZSgpIH07
CiAgICAgV2ViUERlbXV4U3RhdGUgZGVtdXhlclN0YXRlOwogICAgIFdlYlBEZW11eGVyKiBkZW11
eGVyID0gV2ViUERlbXV4UGFydGlhbCgmaW5wdXREYXRhLCAmZGVtdXhlclN0YXRlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUElt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2Vi
cC9XRUJQSW1hZ2VEZWNvZGVyLmgKaW5kZXggYWYzNjVlOWNmOWM3Y2U5NTM4YjY0YmE3ODliZjAx
N2Q0OGY2ZWRlMS4uZGQyOGJjODhkZjVjMGZhM2MxNTczNzg2OWIyNjA5NzNhYWEwZDIzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQ
SW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfldFQlBJbWFnZURlY29kZXIoKTsKIAogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVu
c2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJ3ZWJwIl9zOyB9Ci0gICAgdm9pZCBzZXRE
YXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOworICAgIHZvaWQgc2V0RGF0YShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgYm9vbCkgZmluYWw7CiAgICAgU2NhbGFibGVJbWFnZURlY29kZXJG
cmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7CiAgICAgUmVw
ZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHNpemVf
dCBmcmFtZUNvdW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcmFtZUNvdW50OyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IGE3ZjQ1
MDMyMGU5MDhjNmExZjVmMGY4OTU2MDkyYWUyNDc5NWEyNGEuLjM2ODcyMmEzNmY1OGNjMGU3MmFm
ODc2NTVlYmFlNmNhNWQ0Yjk3OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tCkBAIC0yNDAsMTQgKzI0MCwxNCBAQCBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgogCiAjaWYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmIChb
dHlwZSBpc0VxdWFsVG9TdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZUZsYXRSVEZE
XSkgewotICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3Ry
YXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZUZsYXRSVEZE
LCBtX3Bhc3RlYm9hcmROYW1lLCBjb250ZXh0KCkpOworICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBzdHJhdGVneS5yZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaXRlbUluZGV4
LCBrVVRUeXBlRmxhdFJURkQsIG1fcGFzdGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAg
IGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4g
UmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJl
dHVybiBidWZmZXIgJiYgcmVhZGVyLnJlYWRSVEZEKCpidWZmZXIpID8gUmVhZGVyUmVzdWx0OjpS
ZWFkVHlwZSA6IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiAgICAgfQogCiAgICAgaWYg
KFt0eXBlIGlzRXF1YWxUb1N0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUlRGXSkg
ewotICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRl
Z3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlwZVJURiwgbV9wYXN0
ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gc3RyYXRlZ3kucmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGl0ZW1JbmRleCwga1VUVHlw
ZVJURiwgbV9wYXN0ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKICAgICAgICAgaWYgKG1fY2hhbmdl
Q291bnQgIT0gY2hhbmdlQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6
OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseTsKICAgICAgICAgcmV0dXJuIGJ1ZmZlciAm
JiByZWFkZXIucmVhZFJURigqYnVmZmVyKSA/IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUgOiBSZWFk
ZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwpAQCAtMjU1LDcgKzI1NSw3IEBAIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAjZW5kaWYgLy8gIVBMQVRGT1JNKE1BQ0NBVEFMWVNU
KQogCiAgICAgaWYgKFtzdXBwb3J0ZWRJbWFnZVR5cGVzKCkgY29udGFpbnNPYmplY3Q6dHlwZV0p
IHsKLSAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0
ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIHR5cGUsIG1fcGFzdGVib2Fy
ZE5hbWUsIGNvbnRleHQoKSk7CisgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IHN0cmF0ZWd5LnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpdGVtSW5kZXgsIHR5cGUsIG1fcGFz
dGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNo
YW5nZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJk
V2FzQ2hhbmdlZEV4dGVybmFsbHk7CiAgICAgICAgIHJldHVybiBidWZmZXIgJiYgcmVhZGVyLnJl
YWRJbWFnZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgdHlwZSwgaXRlbUluZm8ucHJlZmVycmVk
UHJlc2VudGF0aW9uU2l6ZSkgPyBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlIDogUmVhZGVyUmVzdWx0
OjpEaWROb3RSZWFkVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IGQ5ZjQ4ZWQxYjM0MDVkMmRlYTk3NzhjM2E2
YzU3MmJjNTMyZmI5MzEuLmQ2NGI5NjgzNDczNzgzMmQyZWVkNjg4MjM2MDEyMjcwNjU1ODUzZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbQpAQCAtNzksMTAgKzc5LDEwIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpn
ZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpIGNvbnN0CiAgICAgdHlwZXMgPSBtYWtlVmVj
dG9yPFN0cmluZz4oW21fcGFzdGVib2FyZCBwYXN0ZWJvYXJkVHlwZXNdKTsKIH0KIAotUmVmUHRy
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVyRm9yVHlw
ZShjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewog
ICAgIGlmIChOU0RhdGEgKmRhdGEgPSBbbV9wYXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlw
ZTp0eXBlXSkKLSAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShk
YXRhKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCkBAIC0zMzgsNyArMzM4LDcgQEAgaW50NjRfdCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKICAgICByZXR1cm4gMDsK
IH0KIAotaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoQ29udGln
dW91c1NoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYpCitpbnQ2NF90IFBsYXRmb3JtUGFzdGVi
b2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmKQogewog
ICAgIHJldHVybiAwOwogfQpAQCAtNjA5LDcgKzYwOSw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsYXRm
b3JtUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5n
JiBvCiAjZW5kaWYgLy8gUEFTVEVCT0FSRF9TVVBQT1JUU19QUkVTRU5UQVRJT05fU1RZTEVfQU5E
X1RFQU1fREFUQQogCiAgICAgaWYgKE5TRGF0YSAqc2VyaWFsaXplZEN1c3RvbURhdGEgPSBbbV9w
YXN0ZWJvYXJkIGRhdGFGb3JQYXN0ZWJvYXJkVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpj
b2NvYVR5cGUoKSldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9IFBhc3RlYm9hcmRDdXN0b21EYXRh
Ojpmcm9tU2hhcmVkQnVmZmVyKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxp
emVkQ3VzdG9tRGF0YSkuZ2V0KCkpOworICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZXJpYWxpemVk
Q3VzdG9tRGF0YSkuZ2V0KCkpOwogICAgICAgICBpZiAoZGF0YS5vcmlnaW4oKSA9PSBvcmlnaW4p
IHsKICAgICAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IGRhdGEub3JkZXJlZFR5cGVzKCkpCiAg
ICAgICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKQEAgLTY3Miw3ICs2
NzIsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gYnVmZmVyID0gc3RkOjpnZXQ8UmVmPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pih2YWx1ZSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gc3Rk
OjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHZhbHVlKTsKICAgICAgICAgW3JlcHJlc2VudGF0aW9u
c1RvUmVnaXN0ZXIgYWRkRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvclR5cGU6
KE5TU3RyaW5nICopY29jb2FUeXBlXTsKICAgICB9KTsKIApAQCAtNzQ2LDcgKzc0Niw3IEBAIFZl
Y3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsU3RyaW5nc0ZvclR5cGUoY29uc3Qg
U3RyaW5nJiB0eXBlKSBjb25zdAogICAgIHJldHVybiBzdHJpbmdzOwogfQogCi1SZWZQdHI8Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAorUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0ZDo6b3B0aW9u
YWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewogICAgIGlmICgh
aW5kZXgpCiAgICAgICAgIHJldHVybiBidWZmZXJGb3JUeXBlKHR5cGUpOwpAQCAtNzYxLDcgKzc2
MSw3IEBAIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplCiAKICAgICBpZiAoIVtwYXN0ZWJvYXJkSXRl
bSBjb3VudF0pCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyOjpjcmVhdGUoW3Bhc3RlYm9hcmRJdGVtIG9iamVjdEF0SW5kZXg6MF0pOwor
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShbcGFzdGVib2FyZEl0ZW0gb2JqZWN0QXRJ
bmRleDowXSk7CiB9CiAKIFN0cmluZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoc2l6
ZV90IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUHJldmlld0NvbnZlcnRlcklPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QcmV2aWV3Q29udmVydGVySU9TLm1tCmluZGV4IDU0NDY1M2M0NDAz
ZDI2MDQwYTU1ZDIzZTkzNjkxYmZlZGNjOTJiNDIuLmJmZTM2YWJkOTc0M2E2YmE0NWU0M2MwZThi
N2Q5YWUxYWU5MDZmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
cmV2aWV3Q29udmVydGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
cmV2aWV3Q29udmVydGVySU9TLm1tCkBAIC04Miw3ICs4Miw3IEBAIEBlbmQKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogUHJldmlld0NvbnZlcnRlcjo6UHJldmlld0NvbnZlcnRlcihjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUHJldmlld0NvbnZlcnRlclByb3ZpZGVyJiBwcm92aWRl
cikKLSAgICA6IG1fcHJldmlld0RhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIH0KKyAgICA6
IG1fcHJldmlld0RhdGEgeyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSB9CiAgICAg
LCBtX29yaWdpbmFsUmVzcG9uc2UgeyByZXNwb25zZSB9CiAgICAgLCBtX3Byb3ZpZGVyIHsgcHJv
dmlkZXIgfQogICAgICwgbV9wbGF0Zm9ybURlbGVnYXRlIHsgYWRvcHROUyhbW1dlYlByZXZpZXdD
b252ZXJ0ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZToqdGhpc10pIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggYTE1MTZhZTM0
ZjgyOWJhNzJjYTU2MWQ5NWU0ZmM5NzhiOTUyZDM4Zi4uM2U1NjMzZmJkYTczNWQ1YTExNDVlMjUx
Y2M5ODE4OTVkMjQyMzBmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0KQEAgLTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMgdm9pZCB3cml0ZUZpbGVXcmFw
cGVyQXNSVEZEQXR0YWNobWVudChOU0ZpbGVXcmFwcGVyICp3cmFwcGVyLCBjb25zdCBTdHJpbgog
ICAgIGlmICghUlRGRERhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIG5ld0NoYW5nZUNvdW50
ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJG
b3JUeXBlKENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShSVEZERGF0YSkucHRyKCksIGxl
Z2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBwYXN0ZWJvYXJkTmFtZSwgY29udGV4dCk7CisgICAg
bmV3Q2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoUlRGRERhdGEpLnB0cigp
LCBsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwog
fQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVi
b2FyZEltYWdlKQpAQCAtMjg1LDcgKzI4NSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogICAgIH0KIAogICAgIG1fY2hhbmdlQ291bnQgPSB3cml0ZVVSTEZvclR5cGVzKHR5
cGVzLCBtX3Bhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkSW1hZ2UudXJsLCBjb250ZXh0KCkpOwot
ICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGlt
YWdlRGF0YSkucHRyKCksIGxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmRO
YW1lLCBjb250ZXh0KCkpOworICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyOjpj
cmVhdGUoaW1hZ2VEYXRhKS5wdHIoKSwgbGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIG1fcGFz
dGVib2FyZE5hbWUsIGNvbnRleHQoKSk7CiAgICAgaWYgKGF1dG8gYXJjaGl2ZURhdGEgPSBwYXN0
ZWJvYXJkSW1hZ2UuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkgewogICAgICAgICBtX2NoYW5nZUNv
dW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZm
ZXJGb3JUeXBlKGFyY2hpdmVEYXRhLmdldCgpLCBXZWJBcmNoaXZlUGJvYXJkVHlwZSwgbV9wYXN0
ZWJvYXJkTmFtZSwgY29udGV4dCgpKTsKIApAQCAtMzQ0LDcgKzM0NCw3IEBAIHN0YXRpYyBTdHJp
bmcgcmVhZFN0cmluZ0F0UHJlZmVycmVkSXRlbUluZGV4KGNvbnN0IFN0cmluZyYgdHlwZSwgc3Rk
OjpvcHRpb25hbDxzCiAgICAgcmV0dXJuIHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUodHlwZSwgcGFz
dGVib2FyZE5hbWUsIGNvbnRleHQpOwogfQogCi1zdGF0aWMgUmVmUHRyPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+IHJlYWRCdWZmZXJBdFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5
cGUsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYg
c3RyYXRlZ3ksIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRD
b250ZXh0KiBjb250ZXh0KQorc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJB
dFByZWZlcnJlZEl0ZW1JbmRleChjb25zdCBTdHJpbmcmIHR5cGUsIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBpdGVtSW5kZXgsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewog
ICAgIGlmIChpdGVtSW5kZXgpCiAgICAgICAgIHJldHVybiBzdHJhdGVneS5yZWFkQnVmZmVyRnJv
bVBhc3RlYm9hcmQoKml0ZW1JbmRleCwgdHlwZSwgcGFzdGVib2FyZE5hbWUsIGNvbnRleHQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2Fy
ZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRN
YWMubW0KaW5kZXggYjQ5YWQ3YzA0YTUyODE4MmE1MWI4YTNhOTg0ZDdkOTA0ZDYzOTc5OS4uYTdm
ZTcyNTU0Mzc2NjVlOGI4YTBjNzQ1M2QzMDQ3NDlkNDU2MmY2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC02OCwx
MiArNjgsMTIgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJp
bmc+JiB0eXBlcykgY29uc3QKICAgICB0eXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPihbbV9wYXN0
ZWJvYXJkIHR5cGVzXSk7CiB9CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtUGFzdGVib2FyZDo6YnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBjb25zdAogewogICAgIE5TRGF0
YSAqZGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAg
IGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShhZG9wdE5TKFtkYXRhIGNvcHldKS5nZXQoKSk7CisgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFkb3B0TlMoW2RhdGEgY29weV0pLmdldCgpKTsK
IH0KIAogaW50IFBsYXRmb3JtUGFzdGVib2FyZDo6bnVtYmVyT2ZGaWxlcygpIGNvbnN0CkBAIC0y
MTgsNyArMjE4LDcgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1Nh
ZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KIHsKICAgICBMaXN0SGFzaFNl
dDxTdHJpbmc+IGRvbVBhc3RlYm9hcmRUeXBlczsKICAgICBpZiAoTlNEYXRhICpzZXJpYWxpemVk
Q3VzdG9tRGF0YSA9IFttX3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6QChQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Y29jb2FUeXBlKCkpXSkgewotICAgICAgICBhdXRvIGRhdGEgPSBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZlcihDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c2VyaWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKKyAgICAgICAgYXV0byBkYXRhID0gUGFzdGVi
b2FyZEN1c3RvbURhdGE6OmZyb21TaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2Vy
aWFsaXplZEN1c3RvbURhdGEpLmdldCgpKTsKICAgICAgICAgaWYgKGRhdGEub3JpZ2luKCkgPT0g
b3JpZ2luKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBkYXRhLm9yZGVyZWRUeXBl
cygpKQogICAgICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CkBAIC0y
NjMsOCArMjYzLDggQEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBh
c3RlYm9hcmRDdXN0b21EYXRhJiBkYXRhKQogICAgICAgICBpZiAocGxhdGZvcm1UeXBlLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKSkgewot
ICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAg
ICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JC
dWZmZXIpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBzdGQ6OmdldDxS
ZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKICAgICAg
ICAgICAgICAgICBbbV9wYXN0ZWJvYXJkIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5
cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBhdXRvIHN0cmluZyA9
IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwpAQCAtMzQxLDcgKzM0MSw3IEBAIGlu
dDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzKQogICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkIGRlY2xhcmVUeXBlczpj
cmVhdGVOU0FycmF5KHBhc3RlYm9hcmRUeXBlcykuZ2V0KCkgb3duZXI6bmlsXTsKIH0KIAotaW50
NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQoraW50NjRfdCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgaWYgKCFjYW5Xcml0ZVBhc3Rl
Ym9hcmRUeXBlKHBhc3RlYm9hcmRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00NDYsNyAr
NDQ2LDcgQEAgc3RhdGljIFN0cmluZyB3ZWJTYWZlTUlNRVR5cGVGb3JNb2Rlcm5QYXN0ZWJvYXJk
VHlwZShOU1Bhc3RlYm9hcmRUeXBlIHBsYXRmb3JtVHkKICAgICByZXR1cm4geyB9OwogfQogCi1S
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVm
ZmVyKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25z
dAorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkQnVmZmVyKHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogewog
ICAgIGlmICghaW5kZXgpCiAgICAgICAgIHJldHVybiBidWZmZXJGb3JUeXBlKHR5cGUpOwpAQCAt
NDU3LDcgKzQ1Nyw3IEBAIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnJlYWRCdWZmZXIoc3RkOjpvcHRpb25hbDxzaXplCiAKICAgICBpZiAoTlNEYXRh
ICpkYXRhID0gW2l0ZW0gZGF0YUZvclR5cGU6dHlwZV0pIHsKICAgICAgICAgYXV0byBuc0RhdGEg
PSBhZG9wdE5TKGRhdGEuY29weSk7Ci0gICAgICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUobnNEYXRhLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKG5zRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01
MDcsOCArNTA3LDggQEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJdGVtPiBjcmVhdGVQ
YXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAgICAgaWYgKCFwbGF0
Zm9ybVR5cGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8UmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikp
IHsKLSAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxDb250
aWd1b3VzU2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAg
ICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmlu
Z09yQnVmZmVyKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpn
ZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVmZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCiAg
ICAgICAgICAgICAgICAgW2l0ZW0gc2V0RGF0YTpwbGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpw
bGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKICAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3Rk
OjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKaW5k
ZXggNjgxM2Q1ZGE3ZGNiMGZjMjU5ZjFiZDFlZDBhNTRjMWExYTlmZDljZi4uNzk2NTU0ZjRjOTc2
NDUxNDAxZTFhMTIzNzQ2ODcwNDBiMjRiMWNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGUuaApA
QCAtNDMsNyArNDMsNyBAQCBjbGFzcyBNZWRpYVNhbXBsZTsKIGNsYXNzIE1lZGlhU3RyZWFtUHJp
dmF0ZTsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOwogY2xhc3MgUGxhdGZvcm1BdWRp
b0RhdGE7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBzdHJ1Y3QgTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zOwogCkBAIC01OSw3ICs1OSw3
IEBAIHB1YmxpYzoKICAgICB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBBdWRpb1ZpZGVv
U2VsZWN0ZWRUcmFja3Mgc2VsZWN0VHJhY2tzKE1lZGlhU3RyZWFtUHJpdmF0ZSYpOwogCi0gICAg
dXNpbmcgRmV0Y2hEYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSk+OworICAgIHVz
aW5nIEZldGNoRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT47
CiAgICAgdmlydHVhbCB2b2lkIGZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmKSA9IDA7CiAg
ICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgPSAwOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cml2YXRlTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKaW5kZXggYzI1ZGY5MTU3NGE2NWJjNDFiZGI3MDY3
OGRjNDc3MjQ4MzZkZDE0NS4uNDk4ZDRlZTEzNDBjNGI5NDAwMWI2MGMzNDQ3OWI3ZjcyZDVjOGU2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcApAQCAtOTMsNyArOTMsNyBA
QCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6Z2VuZXJhdGVNb2NrQ291bnRlclN0cmlu
ZygpCiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpmZXRjaERhdGEoRmV0Y2hEYXRh
Q2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAg
ICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2J1ZmZlckxvY2sgfTsKICAgICAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHZhbHVlIHsgbV9idWZmZXIuY2hhcmFjdGVyczgoKSwgbV9idWZmZXIubGVu
Z3RoKCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLmgKaW5kZXggNWVkOThjNDEzMGI5YmUwMzUyMzdiZjJlZjUwNjNmNmIyZWNkYzA1NS4u
OWMyYzc5N2I4MTk1MTJkOGZkNTc5MDE1ZGMzYjZlNDA1ZTNiYzYwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJp
dmF0ZVdyaXRlckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLmgKQEAgLTcwLDcgKzcw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kVmlkZW9TYW1wbGVCdWZmZXIoTWVkaWFTYW1w
bGUmKTsKICAgICB2b2lkIGFwcGVuZEF1ZGlvU2FtcGxlQnVmZmVyKGNvbnN0IFBsYXRmb3JtQXVk
aW9EYXRhJiwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYsIGNvbnN0IFdURjo6TWVkaWFU
aW1lJiwgc2l6ZV90KTsKICAgICB2b2lkIHN0b3BSZWNvcmRpbmcoKTsKLSAgICB2b2lkIGZldGNo
RGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGRvdWJs
ZSk+JiYpOworICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+JiYpOwogCiAgICAgdm9pZCBwYXVz
ZSgpOwogICAgIHZvaWQgcmVzdW1lKCk7CkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgZmluaXNoZWRGbHVzaGluZ1NhbXBsZXMoKTsKICAgICB2b2lkIGNvbXBsZXRlRmV0
Y2hEYXRhKCk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKKyAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gdGFrZURhdGEoKTsKIAogICAgIGJvb2wgbV9oYXNB
dWRpbyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1ZpZGVvIHsgZmFsc2UgfTsKQEAgLTExOCw3
ICsxMTgsNyBAQCBwcml2YXRlOgogCiAgICAgTG9jayBtX2RhdGFMb2NrOwogICAgIFNoYXJlZEJ1
ZmZlckJ1aWxkZXIgbV9kYXRhIFdURl9HVUFSREVEX0JZX0xPQ0sobV9kYXRhTG9jayk7Ci0gICAg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiBt
X2ZldGNoRGF0YUNvbXBsZXRpb25IYW5kbGVyOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGRvdWJsZSk+IG1fZmV0Y2hEYXRhQ29t
cGxldGlvbkhhbmRsZXI7CiAKICAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4g
bV9hdWRpb0Zvcm1hdERlc2NyaXB0aW9uOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3I+IG1fYXVkaW9Db21wcmVzc29yOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9j
b2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IGM3MWFhODRhZmMx
ZWMxMDAzZDljNzRiNWQ3ZjEzZmVlNDM3NjVlM2EuLjg0ODQxMDBlYWM1ZTExNWU5YjBjZjAxMjBi
YWJmNzhmYjFhMTI3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQ
cml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTQ5Myw3ICs0OTMsNyBAQCB2b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjpzdG9wUmVjb3JkaW5nKCkKICAgICB9KTsKIH0KIAotdm9pZCBNZWRp
YVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBkb3VibGUpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIG1fZmV0Y2hEYXRhQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKIApAQCAtNTM4LDcgKzUzOCw3IEBAIHZvaWQgTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpCiAgICAgbV9kYXRhLmFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkKK1JlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEoKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07CiAgICAgcmV0dXJu
IG1fZGF0YS50YWtlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0RhdGFVUkxEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Rh
dGFVUkxEZWNvZGVyLmgKaW5kZXggYTliMjlkNTllOWFhM2I0NjU1NDE1YmQ4YmVmMDk4NGM1NDRi
NzNmMC4uY2RlZTYwMzUyM2NkNjY5NDVmNDI4ZjY5NDc4OTYwZjZmZDc0Yzc3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaApAQCAtMzMs
NyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBEYXRhVVJMRGVjb2Rl
ciB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5k
ZXggNjIzNjRkNzEzYzk1YTlmODQzYzdkMjljMDFmMGRlYjlhZTZkMTc1YS4uMGM5MDgxN2M0ZTli
NDFmMzQ5YTQxYWU2NGI3MTkwNmI5NTFlYjg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTQxMiwxMyArNDEyLDEzIEBAIHVpbnQ2NF90IEZv
cm1EYXRhOjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICByZXR1cm4gKm1fbGVuZ3RoSW5CeXRl
czsKIH0KIAotUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IEZvcm1EYXRhOjphc1NoYXJl
ZEJ1ZmZlcigpIGNvbnN0CitSZWZQdHI8U2hhcmVkQnVmZmVyPiBGb3JtRGF0YTo6YXNTaGFyZWRC
dWZmZXIoKSBjb25zdAogewogICAgIGZvciAoYXV0byYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsK
ICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rvcjx1aW50OF90Pj4oZWxl
bWVudC5kYXRhKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1
cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CisgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZsYXR0ZW4oKSk7CiB9CiAKIFVSTCBGb3JtRGF0YTo6YXNC
bG9iVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aAppbmRleCAxMDgyODExMzFmODNlOTkzNzBmYzUwOTc4MzNjYzUwZWU4YWRiZGFhLi5lOWQzNDQz
ZjhiNWM2ODI0NDY2NTZjMTg4MDU2NTdjYzI5ZDJkODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CiBjbGFzcyBET01Gb3JtRGF0YTsKIGNsYXNz
IEZpbGU7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVy
OwogCiBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKICAgICBzdHJ1Y3QgRW5jb2RlZEZpbGVEYXRh
OwpAQCAtMjMyLDcgKzIzMiw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8Rm9ybURhdGFF
bGVtZW50PiYgZWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzOyB9CiAgICAgY29u
c3QgVmVjdG9yPGNoYXI+JiBib3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRhcnk7IH0K
IAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBhc1No
YXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGFzU2hhcmVkQnVmZmVyKCkgY29uc3Q7CiAKICAgICBib29sIGFsd2F5c1N0cmVhbSgpIGNv
bnN0IHsgcmV0dXJuIG1fYWx3YXlzU3RyZWFtOyB9CiAgICAgdm9pZCBzZXRBbHdheXNTdHJlYW0o
Ym9vbCBhbHdheXNTdHJlYW0pIHsgbV9hbHdheXNTdHJlYW0gPSBhbHdheXNTdHJlYW07IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRl
eCBmYWZkZmU4N2M4MzdlNjE1N2QyZjEzZTlhN2NhMDA5NjlkNTBiMWM3Li40YmViY2I1MDk4ZDE1
YzI5NjZlZDhjN2VlMTM2YWUzYTJhZTRhMjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCkBAIC04NCw3ICs4NCw3IEBAIGNsYXNzIE5l
dHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBTeW5jaHJvbm91c0xvYWRlck1lc3Nh
Z2VRdWV1ZTsKIGNsYXNzIFRpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IDgxOGUxODE4NDUx
OTY3YWI1MmQxOThkOTU4N2IyMGExNDQ0NzhkZDkuLmJhOGZkNGZmNGYxZTQxYzlhZDRmYTc0YTQy
YmU0ZTJiZDExYWE4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zNiw3ICszNiw3IEBAIFJlc291
cmNlSGFuZGxlQ2xpZW50OjpSZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAogUmVz
b3VyY2VIYW5kbGVDbGllbnQ6On5SZXNvdXJjZUhhbmRsZUNsaWVudCgpID0gZGVmYXVsdDsKIAot
dm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKQordm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBkaWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFM
ZW5ndGgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5oCmluZGV4IGI2MzM3ZDU2Y2U4Y2Q5YmVmZjlkZmJlMTEzNjYy
YmM3NzU2YjY1MzcuLmM0ZjA1NDg1ZjI4NzBiMTE2ZGE3Yzc2MGQzYzBmY2U5NmVjMmI0YTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlQ2xpZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiAKIGVudW0gQ2FjaGVTdG9yYWdlUG9saWN5IHsKICAgICBTdG9yYWdlQWxsb3dlZCwKQEAg
LTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShSZXNv
dXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCovLCB1bnNpZ25lZCBs
b25nIGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQs
IGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIHsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIAogICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBSZXNvdXJjZUVycm9yJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRo
T3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNw
cAppbmRleCA4OGRlZGZhNDVjM2Y0YzQzYTM4MTUyODBkYTVhNDFlMjY5NzViNzFmLi5mNzAwMzU1
ZDU2OGIwNDJhNmFkZjEwNzBkYmI4MzgxOTI1MzY5NGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZS5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKENG
RAogICAgICAgICAKICAgICAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRh
KGhhbmRsZT0lcCkgKCVzKSIsIGhhbmRsZSwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRS
ZWNlaXZlQnVmZmVyKGhhbmRsZSwgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
Z2V0KCkpLCBvcmlnaW5hbExlbmd0aCk7CisgICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJl
Y2VpdmVCdWZmZXIoaGFuZGxlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSwgb3Jp
Z2luYWxMZW5ndGgpOwogICAgIH07CiAgICAgCiAgICAgaWYgKG1fbWVzc2FnZVF1ZXVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9S
YW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IGUyYzM1ZWQzMTBiMzExMDY1MTE2YzhmYzg2
YzJlNDAyOWE4MmM5YTQuLjAwOGUyMjZmZjkxOTAwNGI0NTE0OGEyNDcyNjExNjE1MDk4OTYyNzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VS
ZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTI0Myw3ICsyNDMsNyBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdm9pZCBkYXRhUmVjZWl2
ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZp
bmFsCisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBmaW5hbAogICAgIHsKICAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgaWYgKCFtX2dlbmVyYXRvcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNV
UkxTZXNzaW9uLmgKaW5kZXggNDA0ODg1YWU2Mzc2ZmNlNjgwNDBkMmEwNWMwMGJlYzQ3ZmUxNmFh
OC4uY2U0YzI1NDVjZGUwZjJmNDZhYzMzOGY5NmM0OTA4OGViNDVkMDkyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNV
UkxTZXNzaW9uLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgUGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiBjbGFzcyBXZWJD
b3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ7CiBlbnVtIGNsYXNzIFNob3VsZENvbnRpbnVl
UG9saWN5Q2hlY2sgOiBib29sOwpAQCAtMTU4LDcgKzE1OCw3IEBAIFdFQkNPUkVfRVhQT1JUIEBp
bnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsKIC0gKHZvaWQpcmVzb3Vy
Y2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2Vu
dEJ5dGVzOih1bnNpZ25lZCBsb25nIGxvbmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2VudDoo
dW5zaWduZWQgbG9uZyBsb25nKXRvdGFsQnl0ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVzb3VyY2U6
KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2
ZWRSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgY29t
cGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29u
dGludWVQb2xpY3lDaGVjayk+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtIChCT09MKXJlc291cmNl
OihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3Vs
ZENhY2hlUmVzcG9uc2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNl
OwotLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291
cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
ZGF0YTsKKy0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJilkYXRhOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSByZXF1ZXN0OihXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0aW9uSGFuZGxlcjsK
IC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSopcmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhFcnJv
cjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Np
b24ubW0KaW5kZXggZTU5MjI3ZTM4YWEwNjEyZDkyN2M4MjU5ZDAxNDdkYTRiZjZhNzY5Yi4uOGM4
OWQ5Mzg2NTc5MzNhMWRhMjkwMzE5OTE1ODRjNGRiMmZhYTlhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5tbQpAQCAtNjA4LDcgKzYwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0UmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYm
KT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lk
IGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5z
aWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBSZWY8U2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJj
ZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC02NTIsNyAr
NjUyLDcgQEAgYm9vbCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnNob3VsZENh
Y2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmMKICAgICByZXR1cm4gW21fdGFzayByZXNv
dXJjZTomcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTpyZXNwb25zZV07CiB9CiAKLXZvaWQg
V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiByZXNvdXJjZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lk
IFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV90YXNrTG9jayB9OwogICAgIGlmICghbV90
YXNrKQpAQCAtOTE1LDcgKzkxNSw3IEBAIC0gKEJPT0wpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSopcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3QgUmVzCiAgICAgcmV0
dXJuIHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFJhbmdl
KS5pc0VtcHR5KCk7CiB9CiAKLS0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSopcmVzb3VyY2UgcmVjZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKWRh
dGEKKy0gKHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVj
ZWl2ZWREYXRhOihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJilkYXRhCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgIXJlc291cmNlIHx8IHJlc291cmNlID09IF9y
ZXNvdXJjZSk7CiAgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25n
U2VsZiA9IFJldGFpblB0ciB7IHNlbGYgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5j
cHAKaW5kZXggYzM2ZTFmODg3NjQzMDQ2MGNlNzUwYTNiOGM2NThjNzM0ZWNiMTUwOC4uMzQ5NDQ1
OTI1NGFjOTNmYzE5Y2IxMjE1MGE2MWJjMmJjZWQwMmQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKQEAgLTEwMyw3
ICsxMDMsNyBAQCB2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJs
UmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlc3BvbnNlJiYgcgogfQogCiAKLXZvaWQgQ3VybERvd25s
b2FkOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQordm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxS
ZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaAppbmRleCBhM2FhMGNmNWZjZDI5NTViYjdiMTZi
MTFhMWE4MWNhNzRhZTYxYzhkLi5jZGU0NDQ1Nzc1Zjc0NDIzMzA1MzBiNjViMTM1N2JhNmJmZDli
YjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bERvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxEb3dubG9hZC5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgUmVmPEN1cmxSZXF1
ZXN0PiBjcmVhdGVDdXJsUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGN1cmxE
aWRTZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9u
ZyBsb25nKSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3Vy
bFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVj
ZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3Vy
bFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJs
RGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNh
dGVJbmZvJiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggZDYzNWY3
OWNkMWVjNjIxYWRmZWI2ZGNjNDkzNmVlZWY1MGNmOWFkYy4uMDkwZDAzOWJhNDVkZTEwMjhlZGY3
Njg0YzZkN2QyZjI5NmUzYTM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMTE5LDcg
KzExOSw3IEBAIEN1cmxNdWx0aXBhcnRIYW5kbGU6OkN1cmxNdWx0aXBhcnRIYW5kbGUoQ3VybE11
bHRpcGFydEhhbmRsZUNsaWVudCYgY2xpZW50LCBjb25zCiAKIH0KIAotdm9pZCBDdXJsTXVsdGlw
YXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3Zv
aWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpFbmQpCiAg
ICAgICAgIHJldHVybjsgLy8gVGhlIGhhbmRsZXIgaXMgY2xvc2VkIGRvd24gc28gaWdub3JlIGV2
ZXJ5dGhpbmcuCkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpk
aWRDb21wbGV0ZSgpCiAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkVuZCkgewogICAgICAgICAv
LyBJdCBzZWVtcyB3ZSBhcmUgc3RpbGwgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHByb2Nlc3Npbmcu
CiAgICAgICAgIC8vIFB1c2ggb3V0IHRoZSByZW1haW5pbmcgZGF0YS4KLSAgICAgICAgbV9jbGll
bnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKG1fYnVmZmVyKSkpOworICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0
YUZyb21NdWx0aXBhcnQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShtX2J1ZmZlcikpKTsK
ICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFbmQ7CiAgICAgfQogCkBAIC0yMzQsMTMgKzIzNCwx
MyBAQCBib29sIEN1cmxNdWx0aXBhcnRIYW5kbGU6OnByb2Nlc3NDb250ZW50KCkKIAogICAgICAg
ICBpZiAoIWNoZWNrRm9yQm91bmRhcnkoYm91bmRhcnlTdGFydCwgbGFzdFBhcnRpYWxNYXRjaCkg
JiYgYm91bmRhcnlTdGFydCA9PSBub3RGb3VuZCkgewogICAgICAgICAgICAgLy8gRGlkIG5vdCBm
aW5kIHRoZSBib3VuZGFyeSBzdGFydCwgYWxsIGRhdGEgdXAgdG8gdGhlIGxhc3RQYXJ0aWFsTWF0
Y2ggaXMgb2suCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBh
cnQoQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBh
cnRpYWxNYXRjaCkpOworICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFGcm9tTXVs
dGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgbGFzdFBhcnRpYWxN
YXRjaCkpOwogICAgICAgICAgICAgbV9idWZmZXIucmVtb3ZlKDAsIGxhc3RQYXJ0aWFsTWF0Y2gp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhl
cmUgd2FzIGEgYm91bmRhcnkgc3RhcnQgKG9yIGVuZCB3ZSdsbCBjaGVjayB0aGF0IGxhdGVyKSwg
cHVzaCBvdXQgcGFydCBvZiB0aGUgZGF0YS4KLSAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURh
dGFGcm9tTXVsdGlwYXJ0KENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX2J1ZmZlci5k
YXRhKCksIGJvdW5kYXJ5U3RhcnQpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGFG
cm9tTXVsdGlwYXJ0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fYnVmZmVyLmRhdGEoKSwgYm91bmRh
cnlTdGFydCkpOwogICAgICAgICBtX2J1ZmZlci5yZW1vdmUoMCwgYm91bmRhcnlTdGFydCArIG1f
Ym91bmRhcnkubGVuZ3RoKCkpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkVuZEJvdW5kYXJ5
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCmluZGV4IDVjMDhiY2M1ZWIzZTRiYmNjMDI5YjQ3
Njc4NjhmNDNlMmY5NWMzNDEuLjlhMWExYmJkMTkzOGExNGY2OWZjY2VlM2YwZjg5Yjk3YTRhMjE4
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
TXVsdGlwYXJ0SGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQ7CiBjbGFzcyBDdXJsUmVz
cG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEN1cmxNdWx0aXBhcnRIYW5kbGUo
Q3VybE11bHRpcGFydEhhbmRsZUNsaWVudCYsIGNvbnN0IFN0cmluZyYpOwogICAgIH5DdXJsTXVs
dGlwYXJ0SGFuZGxlKCkgeyB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkQ29tcGxldGUoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZUNsaWVudC5oCmluZGV4IGZkMTNmZDM4MTMxNDNjYjI2NTliOGZkMWRiMjQ0
NDc2NWU5OGE1ODAuLmM4MTM4ODZhOGQ1YzVmYTZjMTJkMTQxMzMxOTEwMWFmMjUwMmEyYWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlw
YXJ0SGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaApAQCAtMjgsMTIgKzI4LDEyIEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxNdWx0aXBhcnRI
YW5kbGVDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSGVhZGVy
RnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxTaGFyZWRCdWZmZXI+JiYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB+Q3VybE11bHRpcGFy
dEhhbmRsZUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggYWNkODhlMWIwMjliOWIxZTdmMTRiN2Qx
NDAzMjkyNmI5MzE3NWEwZi4uZDgyZGQzYzEwYWM2NDcxMzU5OTFmZDdhZTY2OTdlOWQ4ZTMxM2U4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRS
ZWNlaXZlSGVhZGVyKFN0cmluZyYmIGhlYWRlcikKIAogLy8gY2FsbGVkIHdpdGggZGF0YSBhZnRl
ciBhbGwgaGVhZGVycyBoYXZlIGJlZW4gcHJvY2Vzc2VkIHZpYSBoZWFkZXJDYWxsYmFjawogCi1z
aXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQorc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQo
KSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBDdXJsUmVxdWVz
dDo6ZGlkUmVjZWl2ZUhlYWRlckZyb21NdWx0aXBhcnQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhl
YWRlcnMpCiAgICAgaW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBBY3Rpb246Ok5v
bmUpOwogfQogCi12b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQo
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZl
RGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ewogICAgIGlmIChpc0NvbXBsZXRlZE9yQ2FuY2VsbGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTc3Nyw3ICs3NzcsNyBAQCBjb25zdCBTdHJpbmcmIEN1cmxSZXF1ZXN0OjpnZXREb3dubG9hZGVk
RmlsZVBhdGgoKQogICAgIHJldHVybiBtX2Rvd25sb2FkRmlsZVBhdGg7CiB9CiAKLXZvaWQgQ3Vy
bFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQordm9pZCBDdXJsUmVxdWVzdDo6d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJ
ZkVuYWJsZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIHsK
ICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fZG93bmxvYWRNdXRleCB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAppbmRleCA2YmQ4
YTZiZmJhMzc1MmNlZGRkYmM1MDA5ZWFlODNjNGYwZWVkNjQxLi4zYzdjZGQ4ODNlYjYyYmZlOTJj
ZjA0NDVlZDI5YmQyNmVjZTNlOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBDdXJsUmVxdWVzdENsaWVudDsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0
cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgU3luY2hyb25vdXNMb2FkZXJNZXNzYWdlUXVl
dWU7CiAKIGNsYXNzIEN1cmxSZXF1ZXN0IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEN1
cmxSZXF1ZXN0PiwgcHVibGljIEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50LCBwdWJsaWMgQ3Vy
bE11bHRpcGFydEhhbmRsZUNsaWVudCB7CkBAIC0xMjIsOSArMTIyLDkgQEAgcHJpdmF0ZToKICAg
ICBDVVJMKiBzZXR1cFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IHdpbGxTZW5kRGF0
YShjaGFyKiwgc2l6ZV90LCBzaXplX3QpOwogICAgIHNpemVfdCBkaWRSZWNlaXZlSGVhZGVyKFN0
cmluZyYmKTsKLSAgICBzaXplX3QgZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7
CisgICAgc2l6ZV90IGRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxT
dHJpbmc+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQo
UmVmPFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZy
b21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkQ29tcGxldGVUcmFuc2ZlcihDVVJMY29kZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRDYW5jZWxUcmFuc2ZlcigpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluYWxpemVUcmFuc2Zlcigp
OwpAQCAtMTUzLDcgKzE1Myw3IEBAIHByaXZhdGU6CiAgICAgTmV0d29ya0xvYWRNZXRyaWNzIG5l
dHdvcmtMb2FkTWV0cmljcygpOwogCiAgICAgLy8gRG93bmxvYWQKLSAgICB2b2lkIHdyaXRlRGF0
YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQg
d3JpdGVEYXRhVG9Eb3dubG9hZEZpbGVJZkVuYWJsZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpOwogICAgIHZvaWQgY2xvc2VEb3dubG9hZEZpbGUoKTsKICAgICB2b2lkIGNsZWFudXBE
b3dubG9hZEZpbGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAppbmRleCAwOGM4NmM3ZDQ2ODRiYTZmNzhk
NjE2YjY4ZDA2OTA0YzM3YTk2Njc3Li4zNDc5ODMyZjU3NmQ0MTI4YWZhNTFjODE0MjRjY2ZkNzQx
ZGY2YWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3RDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBDdXJsUmVx
dWVzdDsKIGNsYXNzIEN1cmxSZXNwb25zZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNs
YXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsUmVxdWVzdENsaWVudCB7CiBwdWJsaWM6CkBAIC00
Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkU2VuZERhdGEo
Q3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25n
IGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRS
ZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxTaGFyZWRC
dWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3Vy
bFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3Mm
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVz
dCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYpID0gMDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCBlZDA1ZGU3YWVlOTMyMWU5ZmQwMzgx
ZmM3M2RjZTI3OTY3ZGZjZDgxLi4zMDVkNGU1YzlmYzI3MDc3NTc4N2IwZjlhOTE5NzljMDg4ODlh
OGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTE0Miw3ICsx
NDIsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJl
c3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQogICAgIH0pOwogfQogCi12b2lkIEN1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZTo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAppbmRleCA2ZDU1ODY0NDUyZmQ0NmVlNzgw
MGU5MzEyM2IxMjhiZGM2NGNlNDg3Li5kYWYwYTU5YTRlNTg2ZDcxMTRhYmI0ZTVlZjljNTRmNmE4
YmVmYzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaApAQCAtNTMsNyArNTMs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShDdXJsUmVxdWVzdCYsIHVu
c2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVz
VG9CZVNlbnQpIGZpbmFsOwogICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVx
dWVzdCYsIEN1cmxSZXNwb25zZSYmKSBmaW5hbDsKLSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVm
ZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBj
dXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5l
dHdvcmtMb2FkTWV0cmljcyYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9y
KEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCBiYzRkYWFmYmYyMWExNWMwZTZk
ZDFhY2Q0NjIyYWZhNTZiN2I4ZDVkLi4xZjRhMTkzMTMzMTJjNWRkNmE0OGFkNTMzOWRmZDJjM2I1
ZGVjMjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0zMSwxMiArMzEsMTIg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50
IDogcHVibGljIFJlZkNvdW50ZWQ8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gewogcHVibGlj
OgogICAgIHZpcnR1YWwgfkxlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQ
YXNzd29yZEVudHJ5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3Bl
cmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQppbmRl
eCAzNWQ1MjYxNTE3ZWY0ZjA0MzM2MWQ1ZDEwMGZkNzhkNmM4ZDA5ZmI3Li4zMTVlMDY1MTUzMGRj
ZGIwMjgwMTY1NGI3NTdkODE0NzNjMjBmZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVl
RGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2Vi
Q29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCkBAIC0zMDAsNyAr
MzAwLDcgQEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9u
IGRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRhIGwKICAgICAgICAgLy8gRklYTUU6IGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc5MwogICAgICAgICAvLyAtMSBt
ZWFucyB3ZSBkbyBub3QgcHJvdmlkZSBhbnkgZGF0YSBhYm91dCB0cmFuc2ZlciBzaXplIHRvIGlu
c3BlY3RvciBzbyBpdCB3b3VsZCB1c2UKICAgICAgICAgLy8gQ29udGVudC1MZW5ndGggaGVhZGVy
cyBvciBjb250ZW50IHNpemUgdG8gc2hvdyB0cmFuc2ZlciBzaXplLgotICAgICAgICBtX2hhbmRs
ZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIobV9oYW5kbGUsIENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSwgLTEpOworICAgICAgICBtX2hhbmRsZS0+Y2xpZW50
KCktPmRpZFJlY2VpdmVCdWZmZXIobV9oYW5kbGUsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
Z2V0KCkpLCAtMSk7CiAgICAgfTsKIAogICAgIFtzZWxmIGNhbGxGdW5jdGlvbk9uTWFpblRocmVh
ZDpXVEZNb3ZlKHdvcmspXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAppbmRleCBmNDk4NmIwMDEwOGIxNzhmNjQ3ZTc2ZTczNGNhMmMzZjczYzA3NGJl
Li44NWY5NmQ4NWQyYjM3MmNmYzIxNzFhODM0MTFkNTI4NjkyMDczY2Q0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0zNTYsNyArMzU2LDcg
QEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5n
JiB0eXBlKQogCiBzdHJ1Y3QgUGFzdGVib2FyZEZpbGVDb3VudGVyIGZpbmFsIDogUGFzdGVib2Fy
ZEZpbGVSZWFkZXIgewogICAgIHZvaWQgcmVhZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpIGZpbmFs
IHsgKytjb3VudDsgfQotICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJikgZmluYWwgeyArK2NvdW50OyB9
CisgICAgdm9pZCByZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxT
aGFyZWRCdWZmZXI+JiYpIGZpbmFsIHsgKytjb3VudDsgfQogCiAgICAgdW5zaWduZWQgY291bnQg
eyAwIH07CiB9OwpAQCAtOTY2LDcgKzk2Niw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2Jh
bEltYWdlRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAg
ICByZXR1cm4gbWVtT2JqOwogfQogCi1zdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZp
bGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0YSkKK3N0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2Jh
bEltYWdlRmlsZUNvbnRlbnQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBI
R0xPQkFMIG1lbU9iaiA9IEdsb2JhbEFsbG9jKEdQVFIsIGRhdGEtPnNpemUoKSk7CiAgICAgaWYg
KCFtZW1PYmopIApAQCAtOTg2LDcgKzk4Niw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2Jh
bEltYWdlRmlsZUNvbnRlbnQoU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVybiBtZW1PYmo7
CiB9CiAKLXN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwm
IHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRhKQorc3RhdGljIEhHTE9C
QUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVO
YW1lLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIGlmIChmaWxlTmFtZS5p
c0VtcHR5KCkgfHwgIWRhdGEpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTA2Myw3ICsxMDYzLDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IFVSTCYgdXJsKQogICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgIWNhY2hlZEltYWdl
LT5pbWFnZUZvclJlbmRlcmVyKGVsZW1lbnQucmVuZGVyZXIoKSkgfHwgIWNhY2hlZEltYWdlLT5p
c0xvYWRlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTaGFyZWRCdWZmZXIqIGltYWdlQnVm
ZmVyID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+
ZGF0YSgpOworICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGltYWdlQnVmZmVyID0gY2FjaGVk
SW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoZWxlbWVudC5yZW5kZXJlcigpKS0+ZGF0YSgpOwogICAg
IGlmICghaW1hZ2VCdWZmZXIgfHwgIWltYWdlQnVmZmVyLT5zaXplKCkpCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA2NTI3
MjUwZTVhYmNkZGJhMDAwMmIwZmJjZTY1NjVkMmY1ODY1ZDA2Li44NGZhMjljZTFmMzAwZmUyOTBi
MDQxNDY0OGYwZjcyOTBhN2NiZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1G
YWN0b3J5LmNwcApAQCAtNjMsNyArNjMsNyBAQCBib29sIE1vY2tDRE1GYWN0b3J5OjpzdXBwb3J0
c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKICAgICByZXR1cm4gZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShrZXlTeXN0ZW0sICJvcmcud2Via2l0Lm1vY2siKTsKIH0KIAotdm9pZCBN
b2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYga2V5cykKK3ZvaWQgTW9ja0NETUZhY3Rvcnk6OmFk
ZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4mJiBrZXlzKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXNz
aW9ucy5hZGQoaWQsIFdURk1vdmUoa2V5cykpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRy
eSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lv
bldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEIKICAgICAgICAgdmFs
dWUuYXBwZW5kKFdURk1vdmUoa2V5KSk7CiB9CiAKLVZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4g
TW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcm
IGlkKQorVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6
OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQogewogICAgIGF1
dG8gaXQgPSBtX3Nlc3Npb25zLmZpbmQoaWQpOwogICAgIGlmIChpdCA9PSBtX3Nlc3Npb25zLmVu
ZCgpKQpAQCAtODMsNyArODMsNyBAQCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1G
YWN0b3J5OjpyZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaQogICAgIHJldHVy
biBXVEZNb3ZlKGl0LT52YWx1ZSk7CiB9CiAKLWNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4qIE1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlk
KSBjb25zdAorY29uc3QgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4qIE1vY2tD
RE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBjb25zdAog
ewogICAgIGF1dG8gaXQgPSBtX3Nlc3Npb25zLmZpbmQoaWQpOwogICAgIGlmIChpdCA9PSBtX3Nl
c3Npb25zLmVuZCgpKQpAQCAtMjAyLDcgKzIwMiw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNT
ZXNzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZmFjdG9yeSAmJiBtX2ZhY3RvcnktPnN1cHBv
cnRzU2Vzc2lvbnMoKTsKIH0KIAotYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkg
Y29uc3QKK2Jvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKSBjb25z
dAogewogICAgIGlmICghc3VwcG9ydGVkSW5pdERhdGFUeXBlcygpLmNvbnRhaW5zKGluaXREYXRh
VHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIE1v
Y2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBj
b25zdCBTaGFyZWRCdWZmZQogICAgIHJldHVybiB0cnVlOwogfQogCi1SZWZQdHI8U2hhcmVkQnVm
ZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9u
c2UpIGNvbnN0CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRp
emVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QK
IHsKICAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250aWd1b3VzKCk7CiAgICAgaWYg
KCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkp
CkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRo
Q29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXQKICAgICBjYWxsYmFj
ayhpbml0aWFsaXplKCkpOwogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNr
JiYgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFj
ayYmIGNhbGxiYWNrKQogewogICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdWaWV3KGNl
cnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGNlcnRpZmljYXRlLT5zaXplKCkp
OwogCkBAIC0yOTgsNyArMjk4LDcgQEAgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6TW9ja0NETUlu
c3RhbmNlU2Vzc2lvbihXZWFrUHRyPE1vY2tDRE1JbnN0YW5jZT4mJiBpbnN0YW4KIHsKIH0KIAot
dm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBs
aWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NE
TUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUs
IGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIE1vY2tD
RE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFuY2UtPmZhY3RvcnkoKSA6
IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7CkBAIC0zMjQsNyArMzI0LDcgQEAgdm9pZCBN
b2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNl
VHlwZSwgY29uc3QgQXRvbVMKICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShsaWNl
bnNlLmRhdGEoKSwgbGljZW5zZS5sZW5ndGgoKSksIHNlc3Npb25JRCwgZmFsc2UsIFN1Y2Nlc3NW
YWx1ZTo6U3VjY2VlZGVkKTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2
b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNw
b25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgTW9ja0NETUZh
Y3RvcnkqIGZhY3RvcnkgPSBtX2luc3RhbmNlID8gbV9pbnN0YW5jZS0+ZmFjdG9yeSgpIDogbnVs
bHB0cjsKICAgICBpZiAoIWZhY3RvcnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NETUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZh
Y3RvcnkuaAppbmRleCBmNWNkYTUwNWNmMmEzM2MxMDVmMDI1Yzk3YzkzNTBhOTY4Njk4ZTFlLi5k
OTZjMTU2ZWU0ZDI3OTFiOGIwOTk4ZGFmOTQwZWM3NTM3ODA3YmMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCkBAIC03Nyw5ICs3Nyw5IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaGFzU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSB7IHJldHVybiBtX3Nlc3Np
b25zLmNvbnRhaW5zKGlkKTsgfQogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbldpdGhJRChjb25zdCBT
dHJpbmcmIGlkKSB7IG1fc2Vzc2lvbnMucmVtb3ZlKGlkKTsgfQotICAgIHZvaWQgYWRkS2V5c1Rv
U2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
JiYpOwotICAgIGNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4qIGtleXNGb3JTZXNzaW9u
V2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0OwotICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVm
ZmVyPj4gcmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpOworICAg
IHZvaWQgYWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmKTsKKyAgICBjb25zdCBWZWN0b3I8UmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+Pioga2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBp
ZCkgY29uc3Q7CisgICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gcmVtb3Zl
S2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpOwogCiBwcml2YXRlOgogICAg
IE1vY2tDRE1GYWN0b3J5KCk7CkBAIC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2NhbkNyZWF0ZUluc3RhbmNlcyB7IHRydWUgfTsKICAgICBib29sIG1fc3VwcG9ydHNTZXJ2ZXJD
ZXJ0aWZpY2F0ZXMgeyB0cnVlIH07CiAgICAgYm9vbCBtX3N1cHBvcnRzU2Vzc2lvbnMgeyB0cnVl
IH07Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IG1fc2Vz
c2lvbnM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+PiBtX3Nlc3Npb25zOwogfTsKIAogY2xhc3MgTW9ja0NETSA6IHB1YmxpYyBDRE1Qcml2
YXRlIHsKQEAgLTEyMSw4ICsxMjEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9hZEFuZEluaXRp
YWxpemUoKSBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29u
c3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7Ci0gICAg
Ym9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTaGFyZWRCdWZm
ZXImKSBjb25zdCBmaW5hbDsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3Bv
bnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
IGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6
ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikg
Y29uc3QgZmluYWw7CiAKICAgICBXZWFrUHRyPE1vY2tDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CkBA
IC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbXBsZW1lbnRhdGlvblR5
cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRp
b25UeXBlOjpNb2NrOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29u
c3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAg
IHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0Nh
bGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lk
IHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNz
aW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CkBAIC0xNTQsOCArMTU0LDggQEAgcHVibGljOgog
ICAgIE1vY2tDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxNb2NrQ0RNSW5zdGFuY2U+JiYpOwog
CiBwcml2YXRlOgotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGlj
ZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmLCBMaWNlbnNlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxi
YWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lv
bihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25D
YWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBD
bG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRh
KGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZp
bHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcApp
bmRleCBmYzEyN2I3YjY3YmVhNzM0NDYzY2QyZDViMDc1NmI1OWJlYmE1OGFlLi4wNTlmM2EzODZi
NmNmNWZhNzliM2MxODk3MDE1MzEzZjdjZGI0ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgTW9ja0Nv
bnRlbnRGaWx0ZXI6OmZpbmlzaGVkQWRkaW5nRGF0YSgpCiAgICAgbWF5YmVEZXRlcm1pbmVTdGF0
dXMoRGVjaXNpb25Qb2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEpOwogfQogCi1SZWY8U2hh
cmVkQnVmZmVyPiBNb2NrQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnREYXRhKCkgY29uc3QKK1Jl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBNb2NrQ29udGVudEZpbHRlcjo6cmVwbGFjZW1lbnRE
YXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZGlkQmxvY2tEYXRhKCkpOwogICAgIHJldHVybiBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShtX3JlcGxhY2VtZW50RGF0YS5kYXRhKCksIG1fcmVwbGFjZW1l
bnREYXRhLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
LmgKaW5kZXggNDExYTMwMDk0N2I1MzllMjZhYTZjNjRhMDA5MzI5MmU5ZmZiZTZiOS4uNjM1YWM4
NGJlNzkzODQ3YWE1NzIxM2QwMWZmYzFlNzRmNzZiNzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKLSAgICBSZWY8U2hh
cmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TY3JpcHRCdWZmZXIuaAppbmRleCAzN2YxYTQ4N2Y4YzUyYjQ0ZWEyNDMwY2NjZDFm
YTAyNWVlOTFhYWMzLi5mZDJjMWFlMmY2M2I2MGQ3NGMzMGQyNDJhOTg5YTBiZmQ5MWRlNDk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xh
c3MgU2NyaXB0QnVmZmVyIHsKIHB1YmxpYzoKICAgICBTY3JpcHRCdWZmZXIoKSA9IGRlZmF1bHQ7
CiAKLSAgICBTY3JpcHRCdWZmZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAg
U2NyaXB0QnVmZmVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAg
ICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiAgICAgewogICAgIH0KQEAgLTQ4LDkg
KzQ4LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNjcmlwdEJ1ZmZl
cihjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwotICAgIGNv
bnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuZ2V0KCku
Z2V0KCk7IH0KKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKS5nZXQoKTsgfQogCi0gICAgU2NyaXB0QnVmZmVyIGlz
b2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0
cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLmNvcHkoKSkgOiBudWxscHRyKTsgfQorICAgIFNjcmlw
dEJ1ZmZlciBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiBTY3JpcHRCdWZmZXIobV9idWZm
ZXIgPyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4obV9idWZmZXIuY29weSgpKSA6IG51
bGxwdHIpOyB9CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEh
bV9idWZmZXI7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5p
c0VtcHR5KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJG
b250TG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9h
ZFJlcXVlc3QuY3BwCmluZGV4IGNmNmQ3NjViYzg5NGNmNGJkZjdiZDVhNmU1YWYxMjc4YjE2ZmRl
MGEuLjgyYTJhOGM0YjE4YWNjZTc5OGIyN2MyYzhkMDA5NTg5ZmY3NWNiYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKQEAgLTc3LDcg
Kzc3LDcgQEAgdm9pZCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmxvYWQoV29ya2VyR2xvYmFsU2Nv
cGUmIHdvcmtlckdsb2JhbFNjb3BlKQogYm9vbCBXb3JrZXJGb250TG9hZFJlcXVlc3Q6OmVuc3Vy
ZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewogICAgIGlmICghbV9mb250Q3Vz
dG9tUGxhdGZvcm1EYXRhICYmICFtX2Vycm9yT2NjdXJyZWQgJiYgIW1faXNMb2FkaW5nKSB7Ci0g
ICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjb250aWd1b3VzRGF0YTsKKyAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CiAgICAgICAgIGlmICht
X2RhdGEpCiAgICAgICAgICAgICBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS50YWtlQXNDb250aWd1
b3VzKCk7CiAgICAgICAgIGNvbnZlcnRXT0ZGVG9TZm50SWZOZWNlc3NhcnkoY29udGlndW91c0Rh
dGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlckZldGNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKaW5kZXggMGJjZDk3NmVkYTlkNGE3ODEwOWU2
MjYzZDgxMDhjMzc1MDc1OGI3Ny4uOGE5MTM4ZDIzYjBkNWRlYzUzZDI5OTBkZWQ1ZGI3NzYzNTRl
NTI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlckZldGNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgc3Rh
dGljIHZvaWQgcHJvY2Vzc1Jlc3BvbnNlKFJlZjxDbGllbnQ+JiYgY2xpZW50LCBFeHBlY3RlZDxS
ZWY8RmV0Y2hSZXNwb25zZT4sIHMKICAgICBhdXRvIGJvZHkgPSByZXNwb25zZS0+Y29uc3VtZUJv
ZHkoKTsKICAgICBXVEY6OnN3aXRjaE9uKGJvZHksIFsmXSAoUmVmPEZvcm1EYXRhPiYgZm9ybURh
dGEpIHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goV1RGTW92
ZShmb3JtRGF0YSkpOwotICAgIH0sIFsmXSAoUmVmPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBi
dWZmZXIpIHsKKyAgICB9LCBbJl0gKFJlZjxTaGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKICAgICAg
ICAgY2xpZW50LT5kaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBjbGll
bnQtPmRpZEZpbmlzaCgpOwogICAgIH0sIFsmXSAoc3RkOjpudWxscHRyX3QmKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
RmV0Y2guaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJGZXRjaC5oCmluZGV4IGRlOWUyMzBmOWJkYjk5YTVlODM4N2RmZDk2MDNhZWM1Y2FhM2Yw
MGIuLmZiYTM2MzIyYjI5YTZkNWI3OTdiMzllZGMzYzNkMTcxMjRiM2I1YmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRj
aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJGZXRjaC5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CiBj
bGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogCiBuYW1lc3BhY2UgU2VydmljZVdvcmtlckZldGNo
IHsKIGNsYXNzIENsaWVudCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDbGllbnQsIFdU
Rjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEo
UmVmPFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDAzYTcyMTFmY2Vi
YjFmOGU0NjI4ZDU5ZWE0NWJjY2I3ODgwMmZiNDEuLjlhOGZiMzVjYTUzNjEwNWJiNmQ2ZmM0NmVl
MTIyNDU5MzNmNzBiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBT
Y3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5JiByZWdpcwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVk
IHRvIGRpc2FibGUgZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQgaGF2aW5nIHRv
byBtYW55IGZpbGUgZGVzY3JpcHRvcnMgb3Blbj8KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUo
c2NyaXB0UGF0aCwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVz
ZUZpbGVNYXBwaW5nKCpmaWxlU2l6ZSkgPyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpNYXlVc2VG
aWxlTWFwcGluZzo6WWVzIDogQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6TWF5VXNlRmlsZU1hcHBp
bmc6Ok5vKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoc2NyaXB0UGF0aCwgRmlsZVN5c3Rl
bTo6TWFwcGVkRmlsZU1vZGU6OlByaXZhdGUsIHNob3VsZFVzZUZpbGVNYXBwaW5nKCpmaWxlU2l6
ZSkgPyBTaGFyZWRCdWZmZXI6Ok1heVVzZUZpbGVNYXBwaW5nOjpZZXMgOiBTaGFyZWRCdWZmZXI6
Ok1heVVzZUZpbGVNYXBwaW5nOjpObyk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKaW5kZXggYTMwZjUxNDFhOGUx
NGYyNzhmNWI5MTMxNzMzZDI2MTQ2MjgxMmNiNi4uZGY4YWJlNDI2ZTA2NzE3MWFmZmY5MGUwMzMz
ODUwNTlmMzMxMDM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNz
b3JMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhz
bHQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5j
KGNvbnN0IHhtbENoYXIqIHVyaSwKICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICAg
ICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKIAotICAgICAgICBSZWZQdHI8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsK
IAogICAgICAgICBib29sIHJlcXVlc3RBbGxvd2VkID0gZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXItPmZyYW1lKCkgJiYgZ2xvYmFsQ2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdCh1cmwpOwogICAgICAgICBpZiAocmVxdWVzdEFsbG93
ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXJMaWJ4bWwyLmNwcAppbmRleCBkYjI2YmIzOWRkNWFmOTlmMzFlNjYyYzM0Y2VkM2RiZjk2
NzdmNWFiLi5hOGMzZTE4ZTQ3YWVjYWQwYTAyMmEwODRjNDlhMjFmNmM3MTRjMzkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwCkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIHZvaWQqIG9wZW5GdW5jKGNvbnN0IGNo
YXIqIHVyaSkKICAgICAgICAgcmV0dXJuICZnbG9iYWxEZXNjcmlwdG9yOwogCiAgICAgUmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZTsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4g
ZGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwogCiAgICAgewogICAgICAgICBS
ZXNvdXJjZUVycm9yIGVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCmluZGV4IDU3MzA2N2UzZGQwNTBm
ZWI3YzU3OWQwMDEwMmVlOWY2MDQ1YjUzMTMuLjMxYzJkNzZmMmVlMWI5ZDI0OWIwMDFiN2VmZjg5
MmVjMmE3NDU2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVtb3Rl
Q0RNSW5zdGFuY2VQcm94eTo6flJlbW90ZUNETUluc3RhbmNlUHJveHkoKQogICAgIG1faW5zdGFu
Y2UtPmNsZWFyQ2xpZW50KCk7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6dW5y
ZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIHR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2b2lkIFJlbW90ZUNETUluc3RhbmNlUHJveHk6
OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiB0eXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBpZiAoIW1f
Y2RtKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaAppbmRleCA4ZTczZDNkOWE2NGI5OGJm
YzAwOTM2Y2Q0N2M0YzI1YTkyNzlmMmM4Li4wMmM1Y2QzN2FlNTQ4MDJmNmQwYzhkY2NjYjBiYTgw
Y2YzMzg4YzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAg
ICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KFdlYWtQdHI8UmVtb3RlQ0RNUHJveHk+JiYsIFJlZjxX
ZWJDb3JlOjpDRE1JbnN0YW5jZT4mJiwgVW5pcXVlUmVmPFJlbW90ZUNETUluc3RhbmNlQ29uZmln
dXJhdGlvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVyKTsKIAogICAgIC8vIENETUlu
c3RhbmNlQ2xpZW50Ci0gICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2Vp
dmVkKGNvbnN0IFN0cmluZyYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwor
ICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJp
bmcmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAKICAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5LmNwcAppbmRleCBlNTc2NmMyMzM0Y2ZkMzg5MzEwY2Q0YjIxNzIzY2FiYTM3NDJmYzdj
Li5kZTgyNzNiOWNmNTAwYTRkNjZhYTE0NGVkZTAyMDFlZWYxZWQ4NjJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgQXRvbVN0
cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zZXNzaW9uLT5yZXF1ZXN0TGlj
ZW5zZSh0eXBlLCBpbml0RGF0YVR5cGUsIGluaXREYXRhLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxs
KCksIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKFJlZjxTaGFyZWRCdWZmZXI+
JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFs
aXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRh
YmxlIHsKKyAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwg
aW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24gPSBXVEZNb3Zl
KGNvbXBsZXRpb24pXSAoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5z
dGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAg
Y29tcGxldGlvbihXVEZNb3ZlKG1lc3NhZ2UpLCBzZXNzaW9uSWQsIG5lZWRzSW5kaXZpZHVhbGl6
YXRpb24sIHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2NlZWRlZCk7CiAgICAg
fSk7CiB9CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVMKIAogdm9p
ZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2Fs
bGJhY2smJiBjb21wbGV0aW9uKQogewotICAgIG1fc2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEo
c2Vzc2lvbklkLCB0eXBlLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbildIChDRE1J
bnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtleVN0YXR1c2VzLCBzdGQ6Om9wdGlv
bmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNl
U2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9u
LT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9uID0gV1RGTW92
ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5
U3RhdHVzZXMsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIGV4
cGlyZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2Nl
ZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJD
b3B5PiBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2U7CiAgICAgICAgIGlmIChleHBpcmVkU2Vz
c2lvbnNEYXRhKQogICAgICAgICAgICAgZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlID0gSVBD
OjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoKmV4cGlyZWRTZXNzaW9uc0RhdGEpKTsKQEAgLTE0
OSw3ICsxNDksNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVL
ZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dQogICAgIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb246OlVwZGF0ZUtleVN0YXR1c2VzKFdURk1vdmUoa2V5U3RhdHVzZXMpKSwgbV9pZGVu
dGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1l
c3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQor
dm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2Fn
ZVR5cGUgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAg
ICBpZiAoIW1fY2RtKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5o
CmluZGV4IDhhNjFmOWQ1ZmFiYzg0ODZhN2EwZTg2MGY0YzYzMTJjMGI0NDU1MTQuLmZlNzMwOTcx
MzFlMGJiMjBhNTAwMWUxNTAxNjAyZDY1MTg2YjMwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDRE1JbnN0YW5jZVNl
c3Npb25DbGllbnQKICAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYm
KSBmaW5hbDsKLSAgICB2b2lkIHNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOworICAgIHZvaWQgc2Vu
ZE1lc3NhZ2UoV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdl
ZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQo
KSBmaW5hbCB7IHJldHVybiBtX2Rpc3BsYXlJRDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcAppbmRleCA5YWIzNTc1ZjRjM2I1NTk1
NTViOWI4N2IyMzM3MWIxYjFhNjZkYzE3Li5mN2NiNmE2M2ViOTMzYWJkNGQ0NTNhMjJhYjI5NGYx
MzAzMjMyYjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1Qcm94eS5jcHAKQEAgLTYzLDEyICs2MywxMiBAQCBSZW1vdGVDRE1Qcm94eTo6UmVtb3Rl
Q0RNUHJveHkoV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgc3RkOjp1
bgogCiBSZW1vdGVDRE1Qcm94eTo6flJlbW90ZUNETVByb3h5KCkgPSBkZWZhdWx0OwogCi1ib29s
IFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKK2Jvb2wgUmVtb3RlQ0RNUHJveHk6OnN1cHBvcnRz
SW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5zdXBwb3J0c0luaXREYXRhKHR5
cGUsIGRhdGEpOwogfQogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2Fu
aXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQorUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IFJlbW90ZUNETVByb3h5OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQogewogICAgIHJldHVybiBtX3ByaXZh
dGUtPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaAppbmRleCA2OTI0ZTc0ZTNmNTAxMWJlMjE1
YmU0YmQ5NmIyMzQ4MjY0NzBmNDIzLi4zYjY2Yzc3NTc4NzA2OWU5NzZlZTA2NGY5NmZmMDdjMGY3
MTJhOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
UHJveHkuaApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIGVudW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgOiB1aW50OF90OwogZW51
bSBjbGFzcyBDRE1TZXNzaW9uVHlwZSA6IHVpbnQ4X3Q7CiBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbjsKQEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogCiAgICAgUmVtb3RlQ0RNRmFj
dG9yeVByb3h5KiBmYWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9mYWN0b3J5LmdldCgpOyB9CiAK
LSAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciYpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNh
bml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiByZXNwb25zZSk7Cisg
ICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5p
dGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94
eS5oCmluZGV4IGUyY2QwNWQ3Y2M3NGYyMGVjNjlmYWRmZTNlZTA4NTc1OTJhZDg3OWIuLmRlOGY2
ZGY1NWE2ZTFmYThiZTk2NmY5NDFlMDdmZTJmNWM1MDIxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCkBAIC0zNiw3
ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKaW5kZXggZjE0YzYy
N2Y2NTkzZTFhODc4ZDBmNDU5OTJiM2M0MWIyMjJjN2YwMC4uMTU0NmJkZmRmZGNmMDkxMDg3ODk0
NGYzNDA3OTY3YTdhYjM4YmY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaApAQCAtMzcsNyAr
MzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTGVnYWN5Q0RNOwogY2xhc3MgTGVn
YWN5Q0RNU2Vzc2lvbjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBJUEMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCmluZGV4IGM0NWU1MjU1
ZDY3YjUyYzdhZTEwNDQ5OTg4Y2UwMTkwYzdmZmI1MzguLjYxN2Y0NzY4OTU2NDJkZWMyMzI1NGI1
NDBlZTgxOTExYWM0YTJkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBS
ZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhU2VudCh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90
IHRvdGFsQnl0ZXNUb0JlU2UKICAgICAgICAgbV9jbGllbnQtPmRhdGFTZW50KCp0aGlzLCBieXRl
c1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFSZXNvdXJj
ZTo6ZGF0YVJlY2VpdmVkKFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUmVtb3RlTWVk
aWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRh
dGEpCiB7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVk
KCp0aGlzLCBXVEZNb3ZlKGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCmluZGV4IGQxM2QyNWY2NWYwMjI0YTZjNzY3
ZjY5YTRkNDE5Y2QwNTNiYjc5NWQuLjViN2E3ZTJhNzQyNDQzMmQ4NmNiMjhhMWJlNzE3MThhMTY3
Mzc1ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2UuaApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU3LDcg
KzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJik7CiAgICAgdm9pZCByZWRpcmVjdFJlY2Vp
dmVkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYpOwogICAgIHZvaWQgZGF0YVNlbnQodWludDY0X3QsIHVpbnQ2NF90KTsKLSAgICB2b2lk
IGRhdGFSZWNlaXZlZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRh
dGFSZWNlaXZlZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAgICAg
dm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwogICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7
CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNz
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1l
ZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyLmNwcAppbmRleCBlYmRlNzUzMGVjODZmZjZjNDFiZWNkNGU1ZWM0MjhhM2M4
YWY4MGY3Li5lODNmOTE0M2QyMGE3MmUyYmU0ZmZjYmZlZDEzYjBiYjRkZDMxZTA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlci5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZp
ZGVvU2FtcGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9p
ZCBSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJ
UEM6OkRhdGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBtX3dyaXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAg
ICAgIGF1dG8gYnVmZmVyID0gZGF0YSA/IGRhdGEtPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKTsKKyAgICAgICAgYXV0byBidWZmZXIg
PSBkYXRhID8gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKSA6IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+KCk7CiAgICAgICAgIGF1dG8qIHBvaW50ZXIgPSBidWZmZXIgPyBidWZmZXItPmRhdGEo
KSA6IG51bGxwdHI7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5j
ZSB7IHBvaW50ZXIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1Bl
bmRpbmdEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
UGVuZGluZ0Rvd25sb2FkLmgKaW5kZXggNTJjYzVkYTEyMWEyZmI1OWQ4Y2YwNTkzYjY4NTA5ZmQ2
NTVjMGNkYy4uNzFmZDAyMjI5YmJiMWM1NzMyNmZkZmNmZTI2YzExZjc2MWFiY2Y3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25s
b2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGlu
Z0Rvd25sb2FkLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dl
ZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93
ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVk
UmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJl
Y3RSZXNwb25zZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJy
aWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OworICAgIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggM2YzOWVi
MzJmMWFhODA3Njc4NWRhNzllZTExZGFkOGYwYzMyNmI3OS4uZDg5MjBlOTg3NjRmZDliNjRiOWNk
ZGM2MGExZDg0ZDYxOWIyZDQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTE5LDcg
KzExOSw3IEBAIHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
UG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
cjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikKK3ZvaWQgTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikKIHsKICAgICBDT1JTX0NIRUNLRVJfUkVMRUFTRV9MT0co
ImRpZFJlY2VpdmVEYXRhIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAppbmRleCBiYmIxNDYyYTMx
NjFlMmZjZTllYTU3ODQ0YjE5YjkzZTYxOWM4MWIwLi5lMTFiZjU2MzE5MDdhZTQ3MzM2ZWY4NWE1
ZDIyZTg4MzU3NDY1MWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKQEAgLTcxLDcgKzcxLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNF
eHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAppbmRleCBkNjAx
OGY2MTM4M2FlM2E1MWU5ZDQ3MjJjZjZhNjBlMmQ4Yjg3YTdkLi5lMDQ5ZTViMTJkZGU1ZmU1MWI0
Njk1NTI4OWE3YTdmNjk5ODJhZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwog
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjMsNyArNjMs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9u
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290
aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29t
cGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERh
dGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRv
U2VuZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3YXNCbG9ja2VkKCkgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAppbmRleCA2ZGYxNDEwNzM2YWJh
MmYyZDlhMTk2MTU2YzBiMWJhZmE4ZTcwNDQ3Li40NjkwZmRjNWQ1YWQ3Zjg5MmMxZGU2OGQ1Yjg1
NjQwZGVkMzgyOGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmNwcApAQCAtMjYzLDcgKzI2Myw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0CiAgICAg
bV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2Vp
dmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBOZXR3b3JrTG9hZDo6ZGlk
UmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB0aGUgZW5jb2RlZCBkYXRhIGxlbmd0aCwgbm90IHRo
ZSBkZWNvZGVkIGRhdGEgbGVuZ3RoLgogICAgIGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCmluZGV4IGI5MmY5YzYx
ZTEzNTkwYzQxY2JjMWQ4YjM4MjhkM2FjY2I3NTFiMzguLmI0YTk0NTIzM2I5NWUyYmE1YWFlYzBl
MmY3ZWNjMDNhMzk1ZWMyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmgKQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAg
dm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZp
bmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBm
aW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRl
c1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCkgZmluYWw7CiAgICAgdm9p
ZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkQ2xpZW50LmgKaW5kZXggMGE1ZjY2YmQ5NjdlYzlmZGY2NjRlNTJlNWFmMzk0
ZTQ4ZWNlMWY3Yi4uMzQ4Y2ZmYjllOGUyNWVlODNiYmIzOWEwMmNkM2NmNmQyODU0ZDM5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaApA
QCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7Ci1jbGFzcyBTaGFyZWRCdWZm
ZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogZW51bSBjbGFzcyBQb2xpY3lBY3Rp
b24gOiB1aW50OF90OwogfQogCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQg
bG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29y
a0xvYWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRCbG9j
a0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDNlOWNiN2Rm
NTUxZDc2ZmQ1ZjIwOTkwNmE2ZTFjNzhmMmQ1NmI2OTEuLjVkYzgyNzNkOGZkZjc1ZTQ1NWU3NDEy
NjY3NzEwZTE3NzBlNjczNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RydWN0
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSB7CiAgICAgUmVzb3Vy
Y2VFcnJvciBlcnJvcjsKIH07CiAKLXN0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNS
ZXF1ZXN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSYgZGF0YSwg
Y29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0
cmljcykKK3N0YXRpYyB2b2lkIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YSYgZGF0YSwgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7CiAgICAgQVNTRVJUKGRhdGEuZGVsYXllZFJlcGx5KTsKICAgICBBU1NFUlQoIWRhdGEucmVz
cG9uc2UuaXNOdWxsKCkgfHwgIWRhdGEuZXJyb3IuaXNOdWxsKCkpOwpAQCAtODYzLDcgKzg2Myw3
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kRGlkUmVjZWl2ZVJlc3BvbnNlUG90
ZW50aWFsbHlJbk5ld0Jyb3dzaW5nQ29udGV4CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKCFtX251bUJ5dGVz
UmVjZWl2ZWQpCiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZUJ1ZmZlcjog
U3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aD0lZCkiLCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKQEAgLTEyNzMsNyArMTI3Myw3IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKCkKICAgICBtX2J1ZmZlcmVk
RGF0YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNlbmRCdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxl
bmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFT
U0VSVCghaXNTeW5jaHJvbm91cygpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggYzQyMzQ2NTFiYTkyOGI5NWQ4
YzZmNTdiZTI1YzVmMjExODk4OWYzYi4uY2YxMGNmMGU3MWExYmM2NTU0MGU4N2Q2YmE0YzFiOWM4
NTZjMGExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCkBAIC0xMTUsNyArMTE1LDcgQEAgcHVibGljOgogICAgIGJvb2wg
aXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmco
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlkQmxvY2tB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIGZpbmFsOwpAQCAtMTkzLDcgKzE5Myw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwogICAgIHZvaWQg
YnVmZmVyaW5nVGltZXJGaXJlZCgpOwotICAgIHZvaWQgc2VuZEJ1ZmZlcihXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgc2VuZEJ1ZmZl
cihXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVu
Z3RoKTsKIAogICAgIHZvaWQgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAgICAgdm9pZCBp
bnZhbGlkYXRlU2FuZGJveEV4dGVuc2lvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9QaW5nTG9hZC5jcHAKaW5kZXggMTE0ODUzZTQ1YjcyNTMzNjRjNzQ3YTcxY2IyYjVhYjhjYzM4
ZWZkNS4uMWFmMWUwOGUzYzQ0MWUyNGYzMDA2NWU5ZjIwNzc2ZTZmOWZjMzNkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2
b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3Bv
bnNlLCBOZWdvdGlhdGVkTGVnYWN5VAogICAgIGRpZEZpbmlzaCh7IH0sIHJlc3BvbnNlKTsKIH0K
IAotdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJikKK3Zv
aWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KQogewogICAgIFBJTkdfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKaW5k
ZXggMTllYzhjZWI5MmUzYzhhMDU2ZjQ5MjczNjYwY2ZmZjkyNjQzNDFkMS4uYWIyOWEwYjFhYzg0
NjZiMGVkNjFlZjU4ZWY0YzIyMGFiYWI2ZWJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUGluZ0xvYWQuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBl
cmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVy
JiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhF
cnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3Rh
bEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAg
ICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKaW5kZXggNDU1NzgyZDU0YTJlYTliZWUxODY1MGUxYWZk
MWNmN2IyY2U5OGM0OS4uMTdkNDc5MDdhM2Y2ZWU1MmJlNjUwMWQxZGFiMGNhNjA3NTFkNmIwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAK
QEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb20KICAgICBjb21wbGV0aW9u
SGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiB9CiAKLXZvaWQgUHJlY29ubmVjdFRhc2s6
OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpCit2b2lkIFByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkK
IHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAppbmRleCAxYzFmZjE2NDcxMTFjNmZhODQ5NGFmNWNm
MGM3YmJlYWExYjI2NTAzLi44NTgwOGUxMjFiNjhjYThiNzNlMjUxOGQxOTNhYjM5NTgxZWFkMWU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNr
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCkBA
IC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBs
b25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50
KSBmaW5hbDsKICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIGZpbmFsOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
IGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5kZXggYjM3NzE3OTY5NGNmYjQ2YjVi
M2ExNzdmNDc3YzkxMDM4NmQ2YmYwNi4uNWQ5YmQzMzMzOTIxMWNhMWNkNDQ3Yjg3OTJmNTQ2MWVh
ODdlZGRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiBy
ZXMKICAgICAgICAgY2FsbGJhY2soKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlv
blByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0
aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1f
Ym9keUNhbGxiYWNrKQogICAgICAgICBtX2JvZHlDYWxsYmFjayhidWZmZXItPm1ha2VDb250aWd1
b3VzKCksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAppbmRleCAzMjY1NzBlNjljYTQwNjJj
Nzg1YTRlY2ZmOTYxYTAxZTBhOTBhMWNhLi42N2FiYzU1YzYwZmYyNGUzOWRkMDRlY2M1MDIxYjYw
NWVlOGJlYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBSZXNw
b25zZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsKICAgICB2b2lkIHdhaXRGb3JSZXNwb25z
ZShSZXNwb25zZUNhbGxiYWNrJiYpOwotICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9u
PHZvaWQoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKT47CisgICAgdXNpbmcgQm9keUNhbGxiYWNrID0gRnVuY3Rp
b248dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCk+OwogICAgIHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNrJiYpOwog
CiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVy
biBtX2Vycm9yOyB9CkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93
ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsK
ICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJikgZmluYWw7CiAgICAgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9h
ZE1ldHJpY3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlci5jcHAKaW5kZXggOTQyMzUzNDgyNzNlODkxYjA3Yjg3NTYxYzFkNjEyZWEyYTQ0
MzU5My4uN2EyNjIyMTlkZTc4YjIzNWQxMjVhOTJiNmUyMzZkMzMyNjJmN2EyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCkBAIC0xNzcs
NyArMTc3LDcgQEAgUmVzb3VyY2VFcnJvciBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6
cHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG8KICAgICByZXR1cm4geyB9OwogfQog
Ci12b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkK
K3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fZGVjb2RlcikgewogICAgICAgICBpZiAoIW1fcmVzcG9u
c2VFbmNvZGluZy5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlci5oCmluZGV4IDE4ZjU0NjkxZjM3YzJiYWJiYzhjMWEzYmMwOTQzNzBlOWIy
OWViNzEuLjQ0ZmMwNjg1ZmEwZmVkYzg3NDIxOTE2ZTkxM2E2NzRiMWMwZmRiZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCkBAIC02NCw3ICs2
NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFs
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBk
aWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5kZXggZmRiZmIxNDM1OTc2Y2JmNjVmNjEyNTY4M2Fj
MWVkZDI0MDllMjc4Ny4uNmYyNmI0Y2MyZGVmYTBkOTg4N2M2ZjQyNDVlOGY1NGZiZWM0YmEyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTU4MSw3ICs1ODEsNyBAQCBTdG9yYWdl
OjpSZWNvcmQgQ2FjaGU6OmVuY29kZShjb25zdCBSZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5m
b3JtYXRpb24sIGNvbnN0CiAgICAgRGF0YSBib2R5OwogICAgIFdURjo6c3dpdGNoT24ocmVjb3Jk
LnJlc3BvbnNlQm9keSwgW10oY29uc3QgUmVmPFdlYkNvcmU6OkZvcm1EYXRhPiYgZm9ybURhdGEp
IHsKICAgICAgICAgLy8gRklYTUU6IFN0b3JlIGZvcm0gZGF0YSBib2R5LgotICAgIH0sIFsmXShj
b25zdCBSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikgeworICAg
IH0sIFsmXShjb25zdCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAg
ICAgIGJvZHkgPSB7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9OwogICAgIH0sIFtd
KGNvbnN0IHN0ZDo6bnVsbHB0cl90JikgewogICAgIH0pOwpAQCAtNjczLDcgKzY3Myw3IEBAIHN0
ZDo6b3B0aW9uYWw8UmVjb3JkPiBDYWNoZTo6ZGVjb2RlKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYg
c3RvcmFnZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcmVjb3Jk
ID0gV1RGTW92ZShyZXN1bHQtPnJlY29yZCk7Ci0gICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9IFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgp
LCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKKyAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0gV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFnZS5ib2R5
LnNpemUoKSk7CiAKICAgICByZXR1cm4gcmVjb3JkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IDA0Nzc2ODM2Zjk5
OTA5MzkxMGIzOTlkNzU1Mzg1NWQ1ZDNmMWZmNGUuLmRkMzA1YWYyOTc2NjFlNDc2YzQ5Njc3ZGY1
NzIxZWZkMWVjOTMyZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIENhY2hlOjpj
b21wbGV0ZVJldHJpZXZlKFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJiBoYW5kbGVyLCBzdGQ6
OnVuaXF1ZV9wdAogICAgIGhhbmRsZXIoV1RGTW92ZShlbnRyeSksIGluZm8pOwogfQogICAgIAot
c3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhKQor
c3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6bWFrZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3Bv
bnNlRGF0YSkKIHsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJl
cXVlc3QpLCByZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZURhdGEpLCBXZWJDb3JlOjpjb2xsZWN0
VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24obV9z
ZXNzaW9uSUQpLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQpAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6Om1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxFbnRyeT4obWFrZUNh
Y2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpjb2xs
ZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24o
bV9zZXNzaW9uSUQpLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9pZChNYXBwZWRC
b2R5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCitzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hl
OjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9k
eSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChyZXNwb25zZURhdGEpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
aAppbmRleCAxOTlmMGNmYjczMjU0M2M1ZmVhZjRmZTIzMDFlNmExYzEyZjg4ZmU4Li5lZDA0ZWJj
YTBiMzZmM2Y5YzRjMGU3YmFjNzEzMzZiOWU5NmMzNTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTQzLDcgKzQzLDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExvd1Bvd2VyTW9kZU5vdGlmaWVyOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjYsNyArMTY2LDcgQEAg
cHVibGljOgogICAgIH07CiAgICAgdXNpbmcgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciA9IEZ1
bmN0aW9uPHZvaWQoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiwgY29uc3QgUmV0cmlldmVJbmZvJik+
OwogICAgIHZvaWQgcmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgR2xvYmFsRnJhbWVJRCYsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+LCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxF
bnRyeT4gc3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIEZ1
bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmID0gbnVsbHB0cik7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEVudHJ5PiBzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIEZ1bmN0aW9uPHZvaWQoTWFwcGVkQm9keSYpPiYmID0gbnVsbHB0cik7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBzdG9yZVJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgc3RkOjpvcHRpb25hbDxT
ZWNvbmRzPiBtYXhBZ2VDYXApOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gdXBkYXRlKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEVudHJ5JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYgdmFsaWRhdGluZ1Jlc3BvbnNlKTsKIApAQCAtMTg1LDcgKzE4
NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJldHJpZXZlRGF0YShjb25zdCBEYXRhS2V5JiwgRnVu
Y3Rpb248dm9pZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4pOwogICAgIHZvaWQgc3RvcmVEYXRh
KGNvbnN0IERhdGFLZXkmLCAgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90KTsKICAgICAKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IG1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBtYWtlRW50
cnkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IG1ha2VSZWRpcmVjdEVudHJ5KGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCk7CiAKICAgICB2
b2lkIGR1bXBDb250ZW50c1RvRmlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAppbmRleCBmMWVmZmYzNTBm
YTM3ZjZiNDY4MTU5ZmM2NjJlN2FhOTQyODNkN2UxLi43NjEwNzhkZWEwOTNjMDQ1NTViZTk4YjA1
MTczZTM0MTUwNjdhODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApAQCAtMzcsNyArMzcsNyBAQAogbmFt
ZXNwYWNlIFdlYktpdCB7CiBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAotRW50cnk6OkVudHJ5
KGNvbnN0IEtleSYga2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKQorRW50cnk6
OkVudHJ5KGNvbnN0IEtleSYga2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0
SGVhZGVycykKICAgICA6IG1fa2V5KGtleSkKICAgICAsIG1fdGltZVN0YW1wKFdhbGxUaW1lOjpu
b3coKSkKICAgICAsIG1fcmVzcG9uc2UocmVzcG9uc2UpCkBAIC0xMDMsNyArMTAzLDcgQEAgU3Rv
cmFnZTo6UmVjb3JkIEVudHJ5OjplbmNvZGVBc1N0b3JhZ2VSZWNvcmQoKSBjb25zdAogICAgIERh
dGEgYm9keTsKICAgICBpZiAobV9idWZmZXIpIHsKICAgICAgICAgbV9idWZmZXIgPSBtX2J1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKTsKLSAgICAgICAgYm9keSA9IHsgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1
ZmZlci0+c2l6ZSgpIH07CisgICAgICAgIGJvZHkgPSB7IHN0YXRpY19jYXN0PFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcio+KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpLCBtX2J1ZmZlci0+c2l6ZSgpIH07
CiAgICAgfQogCiAgICAgcmV0dXJuIHsgbV9rZXksIG1fdGltZVN0YW1wLCBoZWFkZXIsIGJvZHks
IHsgfSB9OwpAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgRW50cnk6OmluaXRpYWxpemVCdWZmZXJG
cm9tU3RvcmFnZVJlY29yZCgpIGNvbnN0CiAgICAgbV9idWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZShtX3NvdXJjZVN0b3JhZ2VSZWNvcmQuYm9keS5kYXRhKCksIG1fc291cmNl
U3RvcmFnZVJlY29yZC5ib2R5LnNpemUoKSk7CiB9CiAKLVdlYkNvcmU6OlNoYXJlZEJ1ZmZlciog
RW50cnk6OmJ1ZmZlcigpIGNvbnN0CitXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBF
bnRyeTo6YnVmZmVyKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBpbml0
aWFsaXplQnVmZmVyRnJvbVN0b3JhZ2VSZWNvcmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaAppbmRleCA5NjkxNWMz
ODAxYzM3ZGRhYzNlOGU2MDMyMWY4OGMyMjI5Y2Q1OWEwLi45YzA0MjBkNDRhODE1OGRmYzViMjFj
ZjE4ODIwNGNmM2E5MTZiNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCkBAIC0zNSw3ICszNSw3IEBACiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsK
IGNsYXNzIEVudHJ5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBFbnRyeShjb25zdCBLZXkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJp
bmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOworICAgIEVudHJ5KGNvbnN0IEtl
eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0
cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOwogICAgIEVudHJ5KGNvbnN0IEtleSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0
cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpOwogICAgIGV4cGxpY2l0IEVudHJ5KGNvbnN0
IFN0b3JhZ2U6OlJlY29yZCYpOwogICAgIEVudHJ5KGNvbnN0IEVudHJ5Jik7CkBAIC01Nyw3ICs1
Nyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KICAgICBjb25zdCBWZWN0b3I8c3Rk
OjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycygpIGNvbnN0IHsg
cmV0dXJuIG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJzOyB9CiAKLSAgICBXZWJDb3JlOjpTaGFyZWRC
dWZmZXIqIGJ1ZmZlcigpIGNvbnN0OworICAgIFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcigpIGNvbnN0OwogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0PiYgcmVkaXJlY3RSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWRpcmVj
dFJlcXVlc3Q7IH0KIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCkBAIC04OCw3ICs4
OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IG1f
dmFyeWluZ1JlcXVlc3RIZWFkZXJzOwogCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3Q+IG1fcmVkaXJlY3RSZXF1ZXN0OwotICAgIG11dGFibGUgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgbXV0YWJsZSBSZWZQdHI8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9S
RVNPVVJDRSkKICAgICBtdXRhYmxlIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgbV9zaGFyZWFi
bGVSZXNvdXJjZUhhbmRsZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
Y3BwCmluZGV4IGQ0M2MwODlkNjE4NTNjNTE5ZTM2MmZmMmM4YzdjNDE4M2NlYzEwMGIuLjQxZDgy
MzUwMjQ3NDdiNmZjNGEzYWM1NDhlMTMzNGVkNmNiNWVmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgU3BlY3VsYXRpdmVMb2FkOjpTcGVj
dWxhdGl2ZUxvYWQoQ2FjaGUmIGNhY2hlLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBnbG9iYWxGcmFt
ZUkKICAgICA6IG1fY2FjaGUoY2FjaGUpCiAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgICwgbV9vcmlnaW5hbFJlcXVlc3QocmVxdWVzdCkK
LSAgICAsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSkKKyAg
ICAsIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCkpCiAgICAgLCBtX2NhY2hlRW50cnkoV1RGTW92ZShjYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikp
CiB7CiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnkgfHwgbV9jYWNoZUVudHJ5LT5uZWVkc1ZhbGlk
YXRpb24oKSk7CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAg
ICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7CiB9CiAKLXZvaWQgU3BlY3Vs
YXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAppbmRleCA2NzgzMGRmMGIzMDM0MzMwMmEx
MWI1NTFkN2EwOWY2ZDFhODVmNTYzLi4xYjg0M2RiN2VjMjcwZGI5ZGFiOWU4YTI1ZjJhNDhhOGVj
YWUyYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKQEAgLTYxLDcgKzYxLDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3Rl
ZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGly
ZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9QcmVmZXRjaENhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
UHJlZmV0Y2hDYWNoZS5jcHAKaW5kZXggNWUyZTAyZTJmYmEwYjRhMGMwM2I1ZDNlNjZiOTdmN2Jj
Y2M3OTU4Yi4uMzE5OWJmZjMxMWI2YzNlZWZiZTk1MGI0NWU2YjBhOTZlMzI3NzdmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL1ByZWZldGNoQ2FjaGUu
Y3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QcmVmZXRjaENh
Y2hlOjpFbnRyeTo6RW50cnkoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK1ByZWZldGNoQ2FjaGU6OkVu
dHJ5OjpFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IHJlc3BvbnNl
KFdURk1vdmUocmVzcG9uc2UpKSwgYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKIH0KQEAgLTcy
LDcgKzcyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFByZWZldGNoQ2FjaGU6OkVudHJ5PiBQcmVmZXRj
aENhY2hlOjp0YWtlKGNvbnN0IFVSTCYgdXJsKQogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyBleHBp
cmF0aW9uVGltZW91dCB7IDVfcyB9OwogCi12b2lkIFByZWZldGNoQ2FjaGU6OnN0b3JlKGNvbnN0
IFVSTCYgcmVxdWVzdFVybCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgUHJlZmV0Y2hDYWNo
ZTo6c3RvcmUoY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYgcmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKIHsKICAgICBpZiAoIW1fc2Vzc2lvblByZWZldGNoZXMpCiAgICAgICAgIG1fc2Vzc2lv
blByZWZldGNoZXMgPSBtYWtlVW5pcXVlPFByZWZldGNoRW50cmllc01hcD4oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvUHJlZmV0Y2hDYWNoZS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKaW5kZXgg
YTI1MTUyMGIzMWVhYzkyMWMyMmQzMTE1MWQ2ZDIzMWExYmVkMTM4Yy4uNTJjMGIxMGZjYzZkNWE2
ZGUxMTQ0N2U3ZTRlODIyZGY4Zjg0MWNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9QcmVmZXRjaENhY2hlLmgKQEAgLTQ3LDE4ICs0NywxOCBAQCBwdWJs
aWM6CiAKICAgICBzdHJ1Y3QgRW50cnkgewogICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9B
TExPQ0FURUQ7Ci0gICAgICAgIEVudHJ5KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CisgICAgICAgIEVudHJ5KFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpOwogICAgICAgICBFbnRyeShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKTsKIAotICAgICAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiByZWxlYXNlQnVmZmVyKCkgeyByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7IH0KKyAg
ICAgICAgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlbGVhc2VCdWZmZXIo
KSB7IHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsgfQogCiAgICAgICAgIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlZGly
ZWN0UmVxdWVzdDsKICAgICB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiB0YWtlKGNv
bnN0IFVSTCYpOwotICAgIHZvaWQgc3RvcmUoY29uc3QgVVJMJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIHN0
b3JlKGNvbnN0IFVSTCYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVmUHRyPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHZvaWQgc3RvcmVSZWRpcmVjdChj
b25zdCBVUkwmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRleCBiOWFiMGRlZWJi
OWY5MjdjNzM3NDJlODZhMGJlN2Y5NzE2MGJkNmZiLi40MTY2OGE1YjFjZDczODY5NjdiOGZkOTcz
ZTk2NzMyZWNhOTA3ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC02Miw3ICs2Miw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpZE5lZ290aWF0ZU1vZGVyblRMUyhjb25zdCBVUkwmKTsKICAgICB2
b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBj
b25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMs
IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAogICAgIHZvaWQgd2lsbFBl
cmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2
b2lkIHRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQoRG93bmxvYWQmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLm1tCmluZGV4IGE0Y2ViMzEzYWI1MDNkYzY3ZjE1MDJmYzkzMGQ2ODhhNjMzMjc2
MGEuLjA0YTZmMThmNzFjMzM1MWMyZjY3NGFmYTVkZjE3MzlmYTc3ODI1MzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5tbQpAQCAtNDQzLDcgKzQ0Myw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6
OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVyCiAg
ICAgICAgIG1fY2xpZW50LT5kaWRDb21wbGV0ZVdpdGhFcnJvcihlcnJvciwgbmV0d29ya0xvYWRN
ZXRyaWNzKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZURhdGEo
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBOZXR3b3JrRGF0YVRhc2tD
b2NvYTo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgZGF0YSkKIHsKICAgICBXVEZFbWl0U2lnbnBvc3QobV90YXNrLmdldCgpLCAiRGF0YVRhc2si
LCAicmVjZWl2ZWQgJXpkIGJ5dGVzIiwgZGF0YS0+c2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3Bw
CmluZGV4IDY3N2M2MWRhMWExODk0YzFmNTk2NTZkOTI3MDllYjcxZDU5MWE1NTMuLjNkYzY1ZmY4
MmM5ZGE4OTJkMjBjMzQ4ODZlNWExYzRkNzlkYWRlZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAg
LTE3Miw3ICsxNzIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZl
UmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXNwbwogICAgIGludm9rZURpZFJl
Y2VpdmVSZXNwb25zZSgpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRS
ZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2
b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0
JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIFJlZiBwcm90
ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6Q2FuY2VsaW5n
IHx8IHN0YXRlKCkgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAoIW1fY2xpZW50ICYmICFpc0Rvd25s
b2FkKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtEYXRhVGFza0N1cmwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9O
ZXR3b3JrRGF0YVRhc2tDdXJsLmgKaW5kZXggMWM0MjdkZGI3OGQ2OTUzZmU4OTYwYzU2OTJhZmRl
NGY0ZjBlZWU4NS4uNDViZTVjZTE4NDMyNTI3MWQ1YzA4MGRkMzRmMWVlNGExNjY0MmExZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFz
a0N1cmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0Rh
dGFUYXNrQ3VybC5oCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgUmVmPFdlYkNvcmU6
OkN1cmxSZXF1ZXN0PiBjcmVhdGVDdXJsUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgUmVxdWVzdFN0YXR1cyA9IFJlcXVlc3RTdGF0dXM6Ok5ld1JlcXVlc3QpOwogICAgIHZvaWQg
Y3VybERpZFNlbmREYXRhKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25n
LCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6OkN1cmxSZXNwb25zZSYmKSBv
dmVycmlkZTsKLSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKFdlYkNvcmU6OkN1cmxSZXF1
ZXN0JiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBj
dXJsRGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRDb21w
bGV0ZShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYm
KSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKFdlYkNvcmU6OkN1cmxS
ZXF1ZXN0JiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUlu
Zm8mJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCBlNjViMmVhODM4YjA4MTgz
Yzk2YjgzMTIwYjFmZWYxNTZiYjhjMDk1Li5lNjdlMDViYTg0NzhhNTgxODMwZTM5NzA2OGIzMmZi
MDhkOTFiN2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC0xNzYxLDcgKzE3NjEsNyBAQCB2b2lk
IE5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlYWREYXRhVVJMKHN0ZDo6b3B0aW9uYWw8RGF0YVVS
TERlY29kZXI6OlJlc3VsdD4mJgogICAgIH0KIAogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJl
c3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgcmVzdWx0LnZh
bHVlKCkpOwotICAgIGF1dG8gYnl0ZXMgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUo
V1RGTW92ZShyZXN1bHQtPmRhdGEpKS0+Y3JlYXRlR0J5dGVzKCk7CisgICAgYXV0byBieXRlcyA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVzdWx0LT5kYXRhKSktPmNyZWF0ZUdCeXRl
cygpOwogICAgIG1faW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFt
X25ld19mcm9tX2J5dGVzKGJ5dGVzLmdldCgpKSk7CiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVz
cG9uc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtSVENQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya1JUQ1Byb3ZpZGVyLmgKaW5kZXggZjVkYjcwNmM0NDU4MDIxMDg3Zjk1OTk2
NjlkZmE3ZDlmODM3OTc4Yy4uMzNkNDNiNzIyMzhkMjAzZTdlZGVjOTQxNGNhZjlmZGE4ZjQwNTI2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29y
a1JUQ1Byb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMv
TmV0d29ya1JUQ1Byb3ZpZGVyLmgKQEAgLTU1LDcgKzU1LDcgQEAgc3RydWN0IFBhY2tldE9wdGlv
bnM7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwotY2xh
c3MgU2hhcmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
aGFyZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1
ZmZlckNvcHkuY3BwCmluZGV4IDI5ZjcxZDdlNmRjNzUwZWYxOWYzMjg2MmM4OWI3MTg1ZTAzYmY4
OTYuLmRmOGVlMzBjNDNjMGZmZjRkMGVhNmQ4Y2VjZTNmY2Y0Y2IzM2VmNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC01MSw5ICs1
MSw5IEBAIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoZGF0YS5zaXplKCkpCi0gICAgICAgIGJ1
ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkpOworICAgICAgICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpOwogICAgIHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggZTlj
ZDg3MmY4ZDQ0ZjE1ZTBlZTM3YzczNDkyYjJkODAyYWM5MDcxNi4uMTdmMDhjMjhlYTEyNWI1NTA5
OTNlZWQyNGQ1OTYzYjg1MTBhMTE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIEVuY29kZXMgYSBTaGFyZWRCdWZmZXIgdGhhdCBp
cyByZWNlaXZlZCBhcyBhIGNvcHkgb2YgdGhlIGRlY29kZWQgZGF0YSBpbiBhIG5ldyBTaGFyZWRC
dWZmZXIuCisvLyBFbmNvZGVzIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciB0aGF0IGlzIHJlY2Vp
dmVkIGFzIGEgY29weSBvZiB0aGUgZGVjb2RlZCBkYXRhIGluIGEgbmV3IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIuCiAvLyBUbyBhdm9pZCBjb3B5aW5nIGZyb20gdGhlIERlY29kZXIsIHVzZSBTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHRvIHJlY2VpdmUgYSBEYXRhUmVmZXJlbmNlIGluc3RlYWQu
CiAKICNwcmFnbWEgb25jZQpAQCAtMzksMTkgKzM5LDE5IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlckNv
cHkgewogcHVibGljOgogICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKLSAgICBT
aGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQotICAgIFNo
YXJlZEJ1ZmZlckNvcHkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQotICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CiAgICAgU2hhcmVk
QnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKLSAgICAg
ICAgOiBtX2J1ZmZlcihidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCkgOiBSZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4oKSkgeyB9CisgICAgICAgIDogbV9idWZm
ZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KICAgICBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVm
ZmVyKSkgeyB9CisgICAgU2hhcmVkQnVmZmVyQ29weShSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoYnVmZmVyID8gYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpIDogUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4oKSkg
eyB9CisgICAgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoYnVmZmVyLT5tYWtlQ29udGlndW91
cygpKSB7IH0KLSAgICBTaGFyZWRCdWZmZXJDb3B5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQorICAgIFNoYXJlZEJ1ZmZlckNvcHkoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKGJ1ZmZlci5tYWtlQ29u
dGlndW91cygpKSB7IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KLSAgICBjb25zdCBSZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcigpIHsg
cmV0dXJuIG1fYnVmZmVyOyB9CisgICAgY29uc3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKICAgICBjb25zdCB1aW50
OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+ZGF0YSgpIDog
bnVsbHB0cjsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBt
X2J1ZmZlci0+c2l6ZSgpIDogMDsgfQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IGRl
Y29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgKaW5kZXgg
ZDNkMGVjNWU5Nzg1NTk5YjYzNGE4NGM2YzQ0NzFiNTJjZDIyMTNmMS4uNjdlYzhlNWU5MmJkMDI0
MTE1ZGIwZDQwODBhMjRmZTczNTcwZDNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaApAQCAtMjMsNyArMjMsNyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8vIEVuY29kZXMg
YSBTaGFyZWRCdWZmZXIgb3IgRGF0YVJlZmVyZW5jZSB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgRGF0
YVJlZmVyZW5jZSB0byB0aGUgZGVjb2RlZCBkYXRhLgorLy8gRW5jb2RlcyBhIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXIgb3IgRGF0YVJlZmVyZW5jZSB0aGF0IGlzIHJlY2VpdmVkIGFzIGEgRGF0YVJl
ZmVyZW5jZSB0byB0aGUgZGVjb2RlZCBkYXRhLgogCiAjcHJhZ21hIG9uY2UKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuY3BwCmluZGV4IGIzYTk5YWY4ZjUxMjdmNmE2NTNjYzFj
OGY4NWI2MmI2Y2FhZjE1OGEuLmMwMjZmNTQ5NTY5YjJiZTAwNzhhZTMyNWQwNTM5ZTA3MWFmMTEw
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5jcHAKQEAgLTMyLDcgKzMy
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1S
ZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCitSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChi
dWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ4LDEwICs0OCwx
MCBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgcmV0dXJuIHNoYXJlZE1lbW9yeTsKIH0KIAotUmVm
PENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlU2hhcmVkQnVmZmVy
KHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKK1JlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZE1lbW9yeTo6
Y3JlYXRlU2hhcmVkQnVmZmVyKHNpemVfdCBkYXRhU2l6ZSkgY29uc3QKIHsKICAgICBBU1NFUlQo
ZGF0YVNpemUgPD0gc2l6ZSgpKTsKLSAgICByZXR1cm4gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfV0gKCkgLT4gY29uc3QgdWludDhfdCogewogICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihwcm90ZWN0ZWRUaGlzLT5kYXRhKCkpOwogICAg
ICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnku
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggNzZiNzNjYWU0
Yzg1ZDdlZTM2OGIxZjg0ZDUxZWUwMGY5MmU5MDQ3Yy4uMWI0ZmRmYWY2ODM4OWRjZTcyOGZmMzRl
NWU1ZjAxMmUyNDNmYTJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBA
IC00NCw4ICs0NCw4IEBAIGNsYXNzIEVuY29kZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
LWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiAjaWYgT1MoREFSV0lOKQpAQCAtMTIxLDcg
KzEyMSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBDaGFuZ2UgdGhlc2UgZmFjdG9yeSBm
dW5jdGlvbnMgdG8gcmV0dXJuIFJlZjxTaGFyZWRNZW1vcnk+IGFuZCBjcmFzaCBvbiBmYWlsdXJl
LgogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBhbGxvY2F0ZShzaXplX3QpOwotICAg
IHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBjb3B5QnVmZmVyKGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBjb3B5QnVmZmVy
KGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBzdGF0aWMgUmVm
UHRyPFNoYXJlZE1lbW9yeT4gbWFwKGNvbnN0IEhhbmRsZSYsIFByb3RlY3Rpb24pOwogI2lmIFVT
RShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiB3
cmFwTWFwKHZvaWQqLCBzaXplX3QsIGludCBmaWxlRGVzY3JpcHRvcik7CkBAIC0xNTQsNyArMTU0
LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUgc3lzdGVtIHBhZ2Ugc2l6ZSBpbiBieXRl
cy4KICAgICBzdGF0aWMgdW5zaWduZWQgc3lzdGVtUGFnZVNpemUoKTsKIAotICAgIFJlZjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIoc2l6ZV90KSBj
b25zdDsKKyAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjcmVhdGVTaGFyZWRCdWZmZXIo
c2l6ZV90KSBjb25zdDsKIAogcHJpdmF0ZToKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1t
CmluZGV4IDM1ZWExNjIxNTZhMjA3MDI2ZGYxMzQxYzVjMGE4NzNhMjNhN2VjNzEuLjNjMWI1N2Q1
YWEyNmVjNzJlNjBiNWQ3OGExMWU5ZmQ4NTJjZmZlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC01
NjQsNyArNTY0LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhPiBB
cmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj46OmRlY28KICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGlmICgqaW5jbHVkZXNDcmVhdGlvbkRhdGEpIHsKLSAgICAgICAg
c3RkOjpvcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRhOwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4gZm9udEZhY2VEYXRhOwogICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAgICAg
ICAgaWYgKCFmb250RmFjZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IDQ1NDE2
NDM2YzI1MDUyMDgzOGU1ZGZkY2MyYmZlMzUzZmI1OWMyYTEuLmU5YTUxM2EzMDVlZGQ2NWJkZmEz
NzRlMWJkMGUzZmVhYjFmNmI4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZC5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNr
ZQogICAgIFJFTEVBU0VfTE9HKFJlbW90ZUxheWVyVHJlZSwgIkNHRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlckJhY2tlbmQgb2Ygc2l6ZSAlZHglZCBlbmNvZGVkIGRpc3BsYXkgbGlzdCBvZiAlbGQgYnl0
ZXMiLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIENGRGF0YUdldExlbmd0aChkYXRhLmdl
dCgpKSk7CiAjZW5kaWYKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5nZXQoKSkgfSB9OworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLmdldCgpKSB9IH07CiB9CiAKIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggMmMxNjExYzllNzBmOGY5YTEzNzlj
MmM4NDMwODQ3MzUyZTRjOTZjYS4uNmZhMDJhN2JjM2VlNTRhZTZkMzI1MzgxMGQ3OGRlYzMxNjUz
NTNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcApAQCAt
NTUsMTUgKzU1LDE1IEBAIGJvb2wgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLVJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3Jh
cEluU2hhcmVkQnVmZmVyKCkKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNl
Ojp3cmFwSW5TaGFyZWRCdWZmZXIoKQogewotICAgIHJldHVybiBDb250aWd1b3VzU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKKyAgICByZXR1cm4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlbGYgPSBSZWYg
eyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPmRhdGEoKTsgfSwKICAgICAgICAgW3NlbGYgPSBS
ZWYgeyAqdGhpcyB9XSgpIHsgcmV0dXJuIHNlbGYtPnNpemUoKTsgfQogICAgIH0pOwogfQogCi1S
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZTo6
dHJ5V3JhcEluU2hhcmVkQnVmZmVyKCkgY29uc3QKK1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJl
YWJsZVJlc291cmNlOjpIYW5kbGU6OnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7CiAg
ICAgUmVmUHRyPFNoYXJlYWJsZVJlc291cmNlPiByZXNvdXJjZSA9IFNoYXJlYWJsZVJlc291cmNl
OjptYXAoKnRoaXMpOwogICAgIGlmICghcmVzb3VyY2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5oCmluZGV4IGEwZWQwODU3MzRiNzc1NTE0YzExNjdkZWYzZDdjYjRm
NjRlNDEyYWEuLmRhMWVlZTBhZDYyY2IzNDg0YzFjMzQwNWM0ODcwY2YwYzUxZTE2MTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaApAQCAtMzMsNyArMzMsNyBAQAog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQ29u
dGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBlbmNvZGUo
SVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgSGFuZGxlJik7CiAKLSAgICAgICAgUmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpIGNv
bnN0OworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiB0cnlXcmFwSW5TaGFy
ZWRCdWZmZXIoKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBT
aGFyZWFibGVSZXNvdXJjZTsKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIAogcHJpdmF0
ZToKICAgICBTaGFyZWFibGVSZXNvdXJjZShSZWY8U2hhcmVkTWVtb3J5PiYmLCB1bnNpZ25lZCBv
ZmZzZXQsIHVuc2lnbmVkIHNpemUpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hh
cmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiB3cmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIFJlZjxTaGFyZWRNZW1vcnk+
IG1fc2hhcmVkTWVtb3J5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAppbmRleCBlOTNmZDg5ZTdlZmMwNzZhOWI5MTg3NzdiZDYwOGM4MzQ0Yjk0
YWJhLi5hNjllYmM1OTYzMjU5ZWE0YWQ0NTE3MTViNzcxY2RkMmRiNjQ0MzE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTE2NCw3ICsx
NjQsNyBAQCBERUZJTkVfU0lNUExFX0FSR1VNRU5UX0NPREVSX0ZPUl9TT1VSQ0UoRGlzcGxheUxp
c3Q6OlNldElubGluZVN0cm9rZUNvbG9yKQogCiAjdW5kZWYgREVGSU5FX1NJTVBMRV9BUkdVTUVO
VF9DT0RFUl9GT1JfU09VUkNFCiAKLXN0YXRpYyB2b2lkIGVuY29kZVNoYXJlZEJ1ZmZlcihFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3N0YXRpYyB2b2lkIGVu
Y29kZVNoYXJlZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBidWZmZXIpCiB7CiAgICAgYm9vbCBpc051bGwgPSAhYnVmZmVyOwogICAgIGVuY29k
ZXIgPDwgaXNOdWxsOwpAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZVNoYXJl
ZEJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuOwogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgLy8gRG8g
bm90IHVzZSBzaGFyZWQgbWVtb3J5IGZvciBTaGFyZWRCdWZmZXIgZW5jb2RpbmcgaW4gVW5peCwg
YmVjYXVzZSBpdCdzIGVhc3kgdG8gcmVhY2ggdGhlCisgICAgLy8gRG8gbm90IHVzZSBzaGFyZWQg
bWVtb3J5IGZvciBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGVuY29kaW5nIGluIFVuaXgsIGJlY2F1
c2UgaXQncyBlYXN5IHRvIHJlYWNoIHRoZQogICAgIC8vIG1heGltdW0gbnVtYmVyIG9mIGZpbGUg
ZGVzY3JpcHRvcnMgb3BlbiBwZXIgcHJvY2VzcyB3aGVuIHNlbmRpbmcgbGFyZ2UgZGF0YSBpbiBz
bWFsbCBjaHVua3MKICAgICAvLyBvdmVyIHRoZSBJUEMuIENvbm5lY3Rpb25Vbml4LmNwcCBhbHJl
YWR5IHVzZXMgc2hhcmVkIG1lbW9yeSB0byBzZW5kIGFueSBJUEMgbWVzc2FnZSB0aGF0IGlzCiAg
ICAgLy8gdG9vIGxhcmdlLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwODU3MS4KQEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBlbmNvZGVTaGFyZWRC
dWZmZXIoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiAjZW5k
aWYKIH0KIAotc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZl
cihEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVj
b2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGlzTnVsbDsKICAgICBkZWNvZGVyID4+IGlzTnVsbDsKQEAgLTIwOCw3
ICsyMDgsNyBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlU2hhcmVkQnVm
ZmVyKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxDb250aQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBpZiAoIWJ1ZmZlclNpemUpIHsKLSAgICAgICAgYnVmZmVyID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjIxLDcgKzIyMSw3IEBA
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoRGVjb2Rl
ciYgZGVjb2RlciwgUmVmUHRyPENvbnRpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVu
Z3RoRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCksIDEpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92
ZShkYXRhKSk7CisgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSk7CiAjZWxzZQogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGlwY0hhbmRsZSkpCkBAIC0yNDAsNyArMjQwLDcgQEAgc3RhdGlj
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVNoYXJlZEJ1ZmZlcihEZWNvZGVyJiBkZWNv
ZGVyLCBSZWZQdHI8Q29udGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgZW5j
b2RlVHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0
eXBlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIGRhdGEp
CitzdGF0aWMgdm9pZCBlbmNvZGVUeXBlc0FuZERhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
JiBkYXRhKQogewogICAgIEFTU0VSVCh0eXBlcy5zaXplKCkgPT0gZGF0YS5zaXplKCkpOwogICAg
IGVuY29kZXIgPDwgdHlwZXM7CkBAIC0yNDksNyArMjQ5LDcgQEAgc3RhdGljIHZvaWQgZW5jb2Rl
VHlwZXNBbmREYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgY28KICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5nZXQoKSk7
CiB9CiAKLXN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVUeXBlc0FuZERhdGEo
RGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBWZWN0b3I8UmVmUHRyPENv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgZGF0YSkKK3N0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBkZWNvZGVUeXBlc0FuZERhdGEoRGVjb2RlciYgZGVjb2RlciwgVmVjdG9yPFN0cmluZz4m
IHR5cGVzLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBkYXRhKQogewogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUodHlwZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjEsNyAr
MjYxLDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZVR5cGVzQW5kRGF0
YShEZWNvZGVyJiBkZWNvZGVyLCBWZWN0b3I8U3RyaW4KICAgICBBU1NFUlQoZGF0YVNpemUgPT0g
dHlwZXMuc2l6ZSgpKTsKIAogICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBkYXRhU2l6ZTsg
aSsrKSB7Ci0gICAgICAgIFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVT
aGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgZGF0YS5hcHBlbmQoYnVmZmVyKTsKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEFy
Z3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBET01DYQogICAgIGVuY29kZXIgPDwgcmVjb3JkLnVwZGF0ZVJlc3BvbnNlQ291
bnRlcjsKICAgICBlbmNvZGVyIDw8IHJlY29yZC5yZXNwb25zZUJvZHlTaXplOwogCi0gICAgV1RG
Ojpzd2l0Y2hPbihyZWNvcmQucmVzcG9uc2VCb2R5LCBbJl0oY29uc3QgUmVmPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiBidWZmZXIpIHsKKyAgICBXVEY6OnN3aXRjaE9uKHJlY29yZC5yZXNwb25z
ZUJvZHksIFsmXShjb25zdCBSZWY8U2hhcmVkQnVmZmVyPiYgYnVmZmVyKSB7CiAgICAgICAgIGVu
Y29kZXIgPDwgdHJ1ZTsKICAgICAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZl
ci5wdHIoKSk7CiAgICAgfSwgWyZdKGNvbnN0IFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CkBA
IC00MTQsNyArNDE0LDcgQEAgc3RkOjpvcHRpb25hbDxET01DYWNoZUVuZ2luZTo6UmVjb3JkPiBB
cmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+OjpkZWMKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChoYXNTaGFyZWRCdWZmZXJCb2R5KSB7Ci0gICAgICAg
IFJlZlB0cjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVj
b2RlciwgYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IGlmIChidWZmZXIpCkBAIC0xNTUwLDEwICsxNTUwLDEwIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QKICAgICBpZiAoaGFzU3RyaW5nKQogICAgICAgICBlbmNvZGVyIDw8IHN0ZDo6Z2V0PFN0cmlu
Zz4ocGxhdGZvcm1EYXRhKTsKIAotICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWY8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSk7CisgICAg
Ym9vbCBoYXNCdWZmZXIgPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+
PihwbGF0Zm9ybURhdGEpOwogICAgIGVuY29kZXIgPDwgaGFzQnVmZmVyOwogICAgIGlmIChoYXNC
dWZmZXIpCi0gICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBzdGQ6OmdldDxSZWY8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSkucHRyKCkpOworICAgICAgICBl
bmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rlciwgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHBs
YXRmb3JtRGF0YSkucHRyKCkpOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1
c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpFbnRyeSYgZGF0YSkKQEAgLTE1ODMsNyArMTU4Myw3IEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgUGFzdGViCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChoYXNCdWZmZXIpIHsK
LSAgICAgICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHZhbHVlOworICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZTsKICAgICAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZm
ZXIoZGVjb2RlciwgdmFsdWUpIHx8ICF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgZGF0YS5wbGF0Zm9ybURhdGEgPSB7IHZhbHVlLnJlbGVhc2VOb25OdWxsKCkgfTsK
QEAgLTI5NzYsNyArMjk3Niw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZEF0dGFjaG1lbnRE
YXRhPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShkYXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IHJldHVybiB7IHsgV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXpl
KCkpIH0gfTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWlt
ZVR5cGUpLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkpIH0gfTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBA
IC0zMDEwLDU2ICszMDEwLDU2IEBAIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZFBsYXRmb3JtRGF0
YUN1ZVZhbHVlPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRQCiB9CiAjZW5kaWYK
IAotdm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiBidWZmZXIpCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZlB0cjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIGVuY29kZVNoYXJl
ZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQ
dHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0K
IAotdm9pZCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZm
ZXIpCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogewogICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNv
ZGVyLCBidWZmZXIucHRyKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+
PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4g
QXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyOworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRl
Y29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7
CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPFdlYkNvcmU6
OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBlbmNvZGVT
aGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxS
ZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitz
dGQ6Om9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAg
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVm
ZmVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBidWZmZXI7
CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1
ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKIHsKICAgICBlbmNvZGVTaGFyZWRCdWZmZXIo
ZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKIH0KIAotc3RkOjpvcHRpb25hbDxSZWY8Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCitzdGQ6Om9wdGlvbmFsPFJlZjxT
aGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYg
KCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC0zMTIzLDcgKzMxMjMsNyBAQCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRC
dWZmZXI+OjpkZWNvZAogICAgICAgICByZXR1cm4gZGVjb2RlU2NyaXB0QnVmZmVyQXNTaGFyZWFi
bGVSZXNvdXJjZUhhbmRsZShkZWNvZGVyKTsKICNlbmRpZgogCi0gICAgUmVmUHRyPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7
CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtMzEzNSw3ICszMTM1LDcgQEAgdm9pZCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGUKIHsKICAgICBlbmNvZGVyIDw8IG1lc3NhZ2UuZmlyc3Q7CiAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlSZWYoKTsK
KyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZURhdGEgPSBtZXNzYWdl
LnNlY29uZC5jb3B5UmVmKCk7CiAgICAgZW5jb2RlciA8PCBtZXNzYWdlRGF0YTsKIH0KIApAQCAt
MzE0NSw3ICszMTQ1LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b246Ok1lc3NhZ2U+ICBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUkKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHR5cGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpIHx8ICFidWZmZXIp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggZWYwMTExZmI1NjJjZGViNmNiMGY3YTI1MjFm
MDkzYWYyNzk4Njc5Zi4uNmZhYzJhYTFlYTc4NDZmZjZiZjg5MDIxZjBmNTJlOWFhN2FlMDNjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTEx
NCw3ICsxMTQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIEJsb2JQ
YXJ0OwogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgQ29sb3I7Ci1jbGFzcyBDb250aWd1
b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgQ3JlZGVudGlhbDsK
IGNsYXNzIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBDdXJzb3I7CkBAIC0xMzks
NyArMTM5LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKIGNsYXNzIFNjcmlwdEJ1ZmZlcjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xhc3MgU2hh
cmVkQnVmZmVyOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNwcmluZ1Rp
bWluZ0Z1bmN0aW9uOwogY2xhc3MgU3RlcHNUaW1pbmdGdW5jdGlvbjsKIGNsYXNzIFN0aWNreVBv
c2l0aW9uVmlld3BvcnRDb25zdHJhaW50czsKQEAgLTc1Miw2ICs3NTIsMTYgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
VmFsdWU+IHsKIH07CiAjZW5kaWYKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxS
ZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9Owor
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtNzYyLDE2ICs3
NzIsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gewotICAg
IHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmUHRyPFdlYkNvcmU6OkNvbnRp
Z3VvdXNTaGFyZWRCdWZmZXI+Jik7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwotfTsKLQot
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJl
ZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYpOwotICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29k
ZXImKTsKLX07Ci0KIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2Ny
aXB0QnVmZmVyPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJD
b3JlOjpTY3JpcHRCdWZmZXImKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
Y3JpcHRCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKaW5kZXggY2YyZTRkNWY5M2ZkMmQ5NDZiYWJmZjkzZWVh
M2U5ZTg2MGFlYmJmNC4uYjYwN2FjZTgzOGUwNGJjZTFhNmFlZTRkYTU2NTU5ZTA5Njk4Mzk4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcApAQCAt
ODUsNyArODUsNyBAQCBXZWJIaXRUZXN0UmVzdWx0RGF0YTo6V2ViSGl0VGVzdFJlc3VsdERhdGEo
Y29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaGl0VGVzdAogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoSW1hZ2UqIGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7Ci0gICAgICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCk7CisgICAgICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpOwogICAg
ICAgICBpZiAoYnVmZmVyKSB7CiAgICAgICAgICAgICBpbWFnZVNoYXJlZE1lbW9yeSA9IFdlYktp
dDo6U2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVyKCpidWZmZXIpOwogICAgICAgICAgICAgaW1hZ2VT
aXplID0gYnVmZmVyLT5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9n
dGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3Vt
ZW50Q29kZXJzR3RrLmNwcAppbmRleCA2NDVkOWJmYWI3NTdiMzFkN2U2MDBlNzhiYWIwM2E3ZTg5
Mzk3MTg1Li42NzE3NThhMjgwYTVlNDQwYWEwNjBhNzljZjFmMGYxMjZkYjdiZTI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTk1LDcg
Kzk1LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgU2VsZWN0aW9uRGF0YSYKICAgICBib29sIGhhc0N1c3RvbURhdGEg
PSBzZWxlY3Rpb24uaGFzQ3VzdG9tRGF0YSgpOwogICAgIGVuY29kZXIgPDwgaGFzQ3VzdG9tRGF0
YTsKICAgICBpZiAoaGFzQ3VzdG9tRGF0YSkKLSAgICAgICAgZW5jb2RlciA8PCBSZWZQdHI8U2hh
cmVkQnVmZmVyPihzZWxlY3Rpb24uY3VzdG9tRGF0YSgpKTsKKyAgICAgICAgZW5jb2RlciA8PCBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oc2VsZWN0aW9uLmN1c3RvbURhdGEoKSk7CiAK
ICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSA9IHNlbGVjdGlvbi5jYW5TbWFydFJlcGxhY2UoKTsK
ICAgICBlbmNvZGVyIDw8IGNhblNtYXJ0UmVwbGFjZTsKQEAgLTE1OSwxMCArMTU5LDEwIEBAIHN0
ZDo6b3B0aW9uYWw8U2VsZWN0aW9uRGF0YT4gQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6
ZGVjb2RlKERlY29kZXImIGRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDdXN0b21E
YXRhKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzQ3VzdG9tRGF0
YSkgewotICAgICAgICBSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoYnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAg
IHNlbGVjdGlvbi5zZXRDdXN0b21EYXRhKFJlZjxDb250aWd1b3VzU2hhcmVkQnVmZmVyPigqYnVm
ZmVyKSk7CisgICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+
KCpidWZmZXIpKTsKICAgICB9CiAKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAK
aW5kZXggOGFlZjRhNTAxZGFkOTI3NjZjNzE5ZmM1MDA2YzZkZjEyYWRhNWFhMC4uMjkyZDcxNDUy
YzVjM2E5NDkyYjJmNWI2MTY4MjczNTMwYWMyZGQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKQEAgLTEwNyw3ICsx
MDcsNyBAQCBzdGQ6Om9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVm
PEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlYwogICAgIEZvbnRQbGF0Zm9ybURhdGE6OkNy
ZWF0aW9uRGF0YSogY3JlYXRpb25EYXRhID0gbnVsbHB0cjsKIAogICAgIGlmIChpbmNsdWRlc0Ny
ZWF0aW9uRGF0YS52YWx1ZSgpKSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVm
PFNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250RmFj
ZURhdGE7CiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElB
dHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
LmNwcAppbmRleCBjOTBkM2Q4MTEzZjcxOTAxYjA4ZjI2NDg5MTZhZDJjYzI5ZDk4MzM0Li4xNDkw
YzUxMWJkYzM4YmQ4YWI0YTY5NWFlY2YzMDZkOTVmYWEzOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBAIC05OCwxNyArOTgsMTcgQEAgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gQXR0YWNobWVudDo6ZmlsZVNpemVGb3JEaXNwbGF5KCkgY29u
c3QKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdAorUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdl
RGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVJlZlB0cjxXZWJDb3Jl
OjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50OjpjcmVhdGVTZXJpYWxpemVkUmVw
cmVzZW50YXRpb24oKSBjb25zdAorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNo
bWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBBdHRhY2htZW50Ojp1cGRhdGVGcm9tU2VyaWFsaXplZFJl
cHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBXVEY6OlN0cmluZyYpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVw
cmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV1RGOjpTdHJp
bmcmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
QXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
aAppbmRleCBjNmMyYTA2ZWM5N2RkZjBkNmNhYjQyYjRhNjQwOWIzYzQ3YjRkZWZlLi5mZTUwZTUz
OGI4ZWJiMzUxYTQ4MzZkMWRkODkzZDE0N2E1NmE4NzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTM4LDggKzM4LDggQEAgT0JKQ19DTEFTUyBO
U0ZpbGVXcmFwcGVyOwogT0JKQ19DTEFTUyBOU1N0cmluZzsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
ODMsMTQgKzgzLDE0IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCi0g
ICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29u
c3Q7CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGVuY2xvc2lu
Z0ltYWdlRGF0YSgpIGNvbnN0OwogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXpl
Rm9yRGlzcGxheSgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRIYXNFbmNsb3NpbmdJbWFnZShib29s
IGhhc0VuY2xvc2luZ0ltYWdlKSB7IG1faGFzRW5jbG9zaW5nSW1hZ2UgPSBoYXNFbmNsb3NpbmdJ
bWFnZTsgfQogICAgIGJvb2wgaGFzRW5jbG9zaW5nSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2hh
c0VuY2xvc2luZ0ltYWdlOyB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJl
ZEJ1ZmZlcj4gY3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKCkgY29uc3Q7Ci0gICAgdm9p
ZCB1cGRhdGVGcm9tU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uKFJlZjxXZWJDb3JlOjpDb250aWd1
b3VzU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudFR5cGUpOworICAg
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRh
dGlvbigpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlv
bihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVu
dFR5cGUpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEF0dGFjaG1lbnQoY29uc3QgV1RGOjpT
dHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApp
bmRleCAxYjliNTRiNjI3MTgxNDk1MDhmOTAyN2M4M2M2NzMyMDZiYTgyOTgyLi42NDQ5MWUxNjJl
YzZjNWJjZmEzZmM0Y2IyNDlmOGQ5Y2NiNjM5YjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTE1MSw3
ICsxNTEsNyBAQCB0ZW1wbGF0ZTw+IHZvaWQgZ2V0RGF0YShjb25zdCBXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6RGF0YSYgZGF0YSwgY29uc3QgRnVuY3Rpb248YgogewogICAgIGRhdGEuYXBwbHkoZnVu
Y3Rpb24pOwogfQotdGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgRnVuY3Rpb248Ym9vbChTcGFuPGNvbnN0IHVp
bnQ4X3Q+KT4mIGZ1bmN0aW9uKQordGVtcGxhdGU8PiB2b2lkIGdldERhdGEoY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBGdW5jdGlvbjxib29sKFNwYW48Y29uc3QgdWlu
dDhfdD4pPiYgZnVuY3Rpb24pCiB7CiAgICAgZnVuY3Rpb24oeyBkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZS5oCmluZGV4IDIwODM0ZDc4OGU0MDM2MTQxY2Y5MmJlNTRmNDMx
YmNiOGE2MGVmNjQuLmEwYTM3MGM3YzY4ZmE5NDQ5ZTQ5MGJhYmZiYTcxMmQ1NGUyY2JiOTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggNTYyMzQw
MTQ1OWRhNWZlMzBmNDkxYTQxZmIzNDdhNjc1NzIwMmM0MC4uMTExZjA5MjYzZjgyMjM4MjlhNWFk
MjY0NDM0YmE0MjBmMTk4ZGQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBDb250ZW50
UnVsZUxpc3RSZXN1bHRzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0K
IApAQCAtMTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAg
IHZpcnR1YWwgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1l
KGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgeyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwg
dm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5
JiwgUmVmPE5hdmlnYXRpb25BY3Rpb24+JiYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlz
dGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgT2JqZWN0KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IDk0ZGI1
NTc1MzI4NWY4YTAzZjBkYTJjM2NhMmQ4NjgxN2MyOTUyOTUuLmRmZWYzZTA3MGY5NjE2MzA0OTcx
NDRkYWYzZjMwMGNiNGNhNTE5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQpAQCAtMTM3LDcgKzEzNyw3IEBA
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IEF0dGFjaG1lbnQ6OmZpbGVTaXplRm9yRGlzcGxheSgp
IGNvbnN0CiAgICAgcmV0dXJuIFtmaWxlV3JhcHBlciByZWd1bGFyRmlsZUNvbnRlbnRzXS5sZW5n
dGg7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmVuY2xv
c2luZ0ltYWdlRGF0YSgpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAo
IW1faGFzRW5jbG9zaW5nSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTU5LDcg
KzE1OSw3IEBAIGJvb2wgQXR0YWNobWVudDo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuICFt
X2ZpbGVXcmFwcGVyICYmICFtX2ZpbGVXcmFwcGVyR2VuZXJhdG9yOwogfQogCi1SZWZQdHI8V2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXpl
ZFJlcHJlc2VudGF0aW9uKCkgY29uc3QKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0
dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiB7CiAgICAg
YXV0byBmaWxlV3JhcHBlciA9IHRoaXMtPmZpbGVXcmFwcGVyKCk7CiAKQEAgLTE3MCwxMCArMTcw
LDEwIEBAIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiBBdHRhY2htZW50
OjpjcmVhdGVTZXJpYWxpemVkUmVwcmVzZW50YXRpCiAgICAgaWYgKCFzZXJpYWxpemVkRGF0YSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlcmlhbGl6ZWREYXRhKTsKKyAgICByZXR1cm4gV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VyaWFsaXplZERhdGEpOwogfQogCi12b2lkIEF0dGFj
aG1lbnQ6OnVwZGF0ZUZyb21TZXJpYWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OkNv
bnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYgc2VyaWFsaXplZFJlcHJlc2VudGF0aW9uLCBjb25zdCBX
VEY6OlN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIEF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21TZXJp
YWxpemVkUmVwcmVzZW50YXRpb24oUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBzZXJpYWxp
emVkUmVwcmVzZW50YXRpb24sIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAg
ICBpZiAoIW1fd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggM2U5MjNjZjY0OWQ5NmUzNGVkMmE1
MWY5MTcwZDViMTc0MWZhNjUxOC4uY2U5NjNmMWQzYjhkMDM5ZDhjNDQ5NmJjNTAxOGYyZDU4NzRk
MzZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCkBAIC0yMjIzLDcgKzIyMjMsNyBAQCAtICh2b2lkKV9zdGFydEltYWdlQW5hbHlzaXM6KE5T
U3RyaW5nICopaWRlbnRpZmllcgogCiAtICh2b2lkKV9yZXF1ZXN0UmVzb3VyY2U6KE5TVVJMUmVx
dWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNEYXRhICosIE5TVVJM
UmVzcG9uc2UgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIF9wYWdlLT5y
ZXF1ZXN0UmVzb3VyY2UocmVxdWVzdCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiYgZXJyb3IpIHsKKyAgICBfcGFnZS0+cmVxdWVzdFJlc291cmNlKHJl
cXVlc3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxl
cildIChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYgZXJyb3IpIHsK
ICAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCksIHJlc3BvbnNlLm5zVVJMUmVz
cG9uc2UoKSwgbmlsKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsLCBuaWwsIGVycm9y
Lm5zRXJyb3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJv
cFRhcmdldEd0azMuY3BwCmluZGV4IDZiNzU2YWE0MTdiNTFlZGQ3ZmQzZmZiZGRmM2MyMmU0NDUz
MTkyOTAuLmY1YWYwOTJiYjIyNTgyMDU5NmNiMDI1MzBkMGRiMGI3Njk0NDAzMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCkBA
IC0yMTEsNyArMjExLDcgQEAgdm9pZCBEcm9wVGFyZ2V0OjpkYXRhUmVjZWl2ZWQoSW50UG9pbnQm
JiBwb3NpdGlvbiwgR3RrU2VsZWN0aW9uRGF0YSogZGF0YSwgdW5zaWcKICAgICAgICAgaW50IGxl
bmd0aDsKICAgICAgICAgY29uc3QgYXV0byogY3VzdG9tRGF0YSA9IGd0a19zZWxlY3Rpb25fZGF0
YV9nZXRfZGF0YV93aXRoX2xlbmd0aChkYXRhLCAmbGVuZ3RoKTsKICAgICAgICAgaWYgKGxlbmd0
aCA+IDApCi0gICAgICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEN1c3RvbURhdGEoQ29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4o
bGVuZ3RoKSkpOworICAgICAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRDdXN0b21EYXRhKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGN1c3RvbURhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3Ro
KSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAppbmRleCBhYzRhMGY0MzcwMTUyZWQ1NzJi
NTA5MWRmYTUxYmFlYmFiODdmNGU5Li5jODAyOWMxNDBhNmRkMTRiMTk2NDkyMjViODc4MzBlZWMx
MzQwMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoUVVJQ0tfTE9P
SykKICAgICAgICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkg
b3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50
SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CisgICAg
ICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29u
c3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggNzI1Yjc3MGY2YzU0MjZhYzhjYjdiNjc0YzQ2MWY4MWUz
ZWUzNjYwNy4uOGQzYTg1NjQ2MmVhZWY3NDFkOGMyOWUyNTkyZmQ1NzM2NmY1OTljOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAt
MTIyMCw3ICsxMjIwLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6
OmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnIKICAgICBbc3RhdGljX2Nh
c3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5n
ZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUtPm1fd2ViVmlldyBkaWRTdGFydExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lV2l0aEZpbGVOYW1lOmZpbGVOYW1lIHV0aTp1
dGldOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmlu
aXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmlu
aXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggYmUxNDM3MGRlMDliZDU3MDJiOWM3ZGRjZDZjNzdi
OGY2ZGE1ZjViOC4uNjgzMzczZWFlMDBmNWRiNDJiODE0NmNlOWQ1MzFiYzhhYzBhNTRjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5
Q29jb2EubW0KQEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZEF1
ZGlvQ29tcG9uZW50UmVnaXN0cmF0aW9ucygpCiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25E
YXRhID0gV2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlZ2lzdHJhdGlv
bnMuZ2V0KCkpOworICAgICAgICAgICAgYXV0byByZWdpc3RyYXRpb25EYXRhID0gV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGUocmVnaXN0cmF0aW9ucy5nZXQoKSk7CiAgICAgICAgICAgICB3
ZWFrVGhpcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q29uc3VtZUF1ZGlvQ29tcG9uZW50
UmVnaXN0cmF0aW9ucyh7IFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkgfSksIDApOwogICAgICAg
ICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5oCmluZGV4IDkzNDA5NDAwMjE0YjZiNjdiMjA4OWY3ZDBlMzdlZDBjYjFlY2JhMjAuLjEyNDE3
ODNiY2NjZWEwMDk1YTZlZGJiZDJkNjk2YTZiZTFmNGQ1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaApAQCAtNTA0LDcgKzUwNCw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlKTsKICAgICB2b2lkIHNldEZpbGVBbmRVUkxUeXBl
cyhOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRs
ZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIE5TUGFzdGVib2FyZCAqKTsK
LSAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKFdlYkNvcmU6OkltYWdlKiwgTlNTdHJp
bmcgKmZpbGVuYW1lLCBOU1N0cmluZyAqZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0bGUsIE5TU3Ry
aW5nICp1cmwsIE5TU3RyaW5nICp2aXNpYmxlVVJMLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGFy
Y2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNTdHJpbmcgKnBhc3RlYm9h
cmRPcmlnaW4pOworICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1h
Z2UqLCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0
aXRsZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIGFyY2hpdmVCdWZmZXIsIE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFt
ZSwgTlNTdHJpbmcgKnBhc3RlYm9hcmRPcmlnaW4pOwogICAgIHZvaWQgcGFzdGVib2FyZENoYW5n
ZWRPd25lcihOU1Bhc3RlYm9hcmQgKik7CiAgICAgdm9pZCBwcm92aWRlRGF0YUZvclBhc3RlYm9h
cmQoTlNQYXN0ZWJvYXJkICosIE5TU3RyaW5nICp0eXBlKTsKICAgICBOU0FycmF5ICpuYW1lc09m
UHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluYXRpb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAx
MWNjNzUyOGExZTVmNmE4Njg0ZmNlMDY3ZTBhZGEwNzQ2MmVlNGM2Li43Mzc0OGNhZjE0ZWIxMzBl
MDc0NTM3MTJhNGUwMzdkZmY0NTViYTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMjk4Myw3ICsyOTgzLDcgQEAgYm9vbCBXZWJWaWV3SW1w
bDo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBO
U0FycmF5ICoKICAgICAgICAgaWYgKFtbdHlwZXMgb2JqZWN0QXRJbmRleDppXSBpc0VxdWFsVG86
V2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0pCiAgICAgICAgICAgICBbcGFz
dGVib2FyZCBzZXRTdHJpbmc6bV9wYWdlLT5zdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkg
Zm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXTsKICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gbV9wYWdlLT5kYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChbdHlwZXMgb2Jq
ZWN0QXRJbmRleDppXSk7CisgICAgICAgICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBtX3BhZ2UtPmRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKFt0eXBlcyBvYmpl
Y3RBdEluZGV4OmldKTsKICAgICAgICAgICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8g
YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOlt0eXBlcyBvYmplY3RB
dEluZGV4OmldXTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ0NTYsNyArNDQ1Niw3IEBAIHZvaWQg
V2ViVmlld0ltcGw6OnNldEZpbGVBbmRVUkxUeXBlcyhOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3Ry
aW5nICpleHRlbnNpb24sIE5TCiAgICAgbV9wcm9taXNlZFVSTCA9IHVybDsKIH0KIAotdm9pZCBX
ZWJWaWV3SW1wbDo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdl
LCBOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24sIE5TU3RyaW5nICp0aXRs
ZSwgTlNTdHJpbmcgKnVybCwgTlNTdHJpbmcgKnZpc2libGVVUkwsIFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciogYXJjaGl2ZUJ1ZmZlciwgTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBOU1N0cmluZyAq
b3JpZ2luSWRlbnRpZmllcikKK3ZvaWQgV2ViVmlld0ltcGw6OnNldFByb21pc2VkRGF0YUZvcklt
YWdlKFdlYkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTdHJpbmcgKmZpbGVuYW1lLCBOU1N0cmluZyAq
ZXh0ZW5zaW9uLCBOU1N0cmluZyAqdGl0bGUsIE5TU3RyaW5nICp1cmwsIE5TU3RyaW5nICp2aXNp
YmxlVVJMLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBhcmNoaXZlQnVmZmVyLCBO
U1N0cmluZyAqcGFzdGVib2FyZE5hbWUsIE5TU3RyaW5nICpvcmlnaW5JZGVudGlmaWVyKQogewog
ICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdp
dGhOYW1lOnBhc3RlYm9hcmROYW1lXTsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHR5
cGVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6V2Vi
Q29yZTo6bGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKSwgbmlsXSk7CkBAIC00NjEz
LDcgKzQ2MTMsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpyZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoV2Vi
Q29yZTo6RE9NUGFzdGVBY2Nlc3NDYXRlZ29yeSBwYXN0ZUFjYwogICAgIGhpZGVET01QYXN0ZU1l
bnVXaXRoUmVzdWx0KFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRlbmllZEZvckdl
c3R1cmUpOwogCiAgICAgTlNEYXRhICpkYXRhID0gW3Bhc3RlYm9hcmRGb3JBY2Nlc3NDYXRlZ29y
eShwYXN0ZUFjY2Vzc0NhdGVnb3J5KSBkYXRhRm9yVHlwZTpAKFdlYkNvcmU6OlBhc3RlYm9hcmRD
dXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwotICAgIGF1dG8gYnVmZmVyID0gV2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIGF1dG8gYnVmZmVyID0gV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSk7CiAgICAgaWYgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2luKCkg
PT0gb3JpZ2luSWRlbnRpZmllcikgewogICAgICAgICBtX3BhZ2UtPmdyYW50QWNjZXNzVG9DdXJy
ZW50UGFzdGVib2FyZERhdGEocGFzdGVib2FyZE5hbWVGb3JBY2Nlc3NDYXRlZ29yeShwYXN0ZUFj
Y2Vzc0NhdGVnb3J5KSk7CiAgICAgICAgIGNvbXBsZXRpb24oV2ViQ29yZTo6RE9NUGFzdGVBY2Nl
c3NSZXNwb25zZTo6R3JhbnRlZEZvckdlc3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMzkzMjBj
YWRlYmEyNjEwNWNiMDljODE0MTJiMTNkZmEzNjc2MDVkMy4uYjExZjJkNTNjZmZhODVmOTZmMjc0
MTFkOWQyZGIwN2Q5NmEwN2MzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0zMzUsMTAgKzMzNSwxMCBA
QCBEb3dubG9hZFByb3h5JiBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGVEb3dubG9hZFByb3h5
KFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdAogICAgIHJldHVybiBtX2Rvd25sb2FkUHJveHlNYXAt
PmNyZWF0ZURvd25sb2FkUHJveHkoZGF0YVN0b3JlLCBwcm9jZXNzUG9vbCwgcmVzb3VyY2VSZXF1
ZXN0LCBmcmFtZUluZm8sIG9yaWdpbmF0aW5nUGFnZSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6cmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
cmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OlJlcXVlc3RSZXNvdXJjZShwYWdlSUQsIHNlc3Npb25JRCwgcmVxdWVzdCwgSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZShyZXF1ZXN0Lmh0dHBCb2R5KCkpKSwgW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChJUEM6OkRhdGFSZWZlcmVuY2UmJiBkYXRh
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImJiBlcnJvcikgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91
c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAg
IGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShidWZmZXIpLCBXVEZNb3Zl
KHJlc3BvbnNlKSwgV1RGTW92ZShlcnJvcikpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA3
MGI1N2I1NDQ1MzkyNjUzYjQyNmFkNzg4ZmIxMTIyNWI3OTJhZDkyLi5hZjZjZWQ5ZTcxZDk2ZTFm
ZGM4MDIwNzhjYTFhMzI2MTFmZjliMmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtNjUsNyArNjUsNyBAQCBj
bGFzcyBTZXNzaW9uSUQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOwotY2xhc3MgQ29udGlndW91c1NoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IGVudW0gY2xhc3MgU2hvdWxkU2FtcGxlIDogYm9vbDsKQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5
JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
RGVsYXllZFJlcGx5JiYpOwogCiAgICAgRG93bmxvYWRQcm94eSYgY3JlYXRlRG93bmxvYWRQcm94
eShXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViUGFnZVByb3h5KiBvcmlnaW5h
dGluZ1BhZ2UpOwotICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmKTsK
KyAgICB2b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBQQUw6OlNl
c3Npb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmKTsKIAogICAgIHZvaWQgZmV0Y2hXZWJz
aXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlv
blNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJz
aXRlRGF0YSk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQs
IE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGVkOWQ4MzM3ZjQ3NGY3NzhlZjc2YjE5NGM2OTIwYTEx
ODRmMmE0MDkuLjljNjU2MTdiODk2YjE1ZjlmNDdhMWQxNDQ4MGY2ZTM1Y2I2ZWZmZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTMyOSw3ICszMjksNyBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogI2lmIFVTRShBUFBLSVQpCi0gICAgdmlydHVhbCB2b2lkIHNldFByb21pc2Vk
RGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0
IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFn
ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24s
IGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZp
c2libGVVUkwsIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hp
dmVCdWZmZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgPSAwOwogI2VuZGlmCiAK
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmKSA9IDA7CkBAIC00NjksNyArNDY5LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzaW5nRWxlbWVudCgpID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wg
aXNDaGFyRXZlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRp
ZENoYW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpDb250aWd1b3Vz
U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFy
eShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBlbGVtZW50UmVjdCwgV2ViQ29yZTo6Um91dGVTaGFyaW5nUG9saWN5LCBjb25zdCBTdHJp
bmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlv
bkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5l
Y2Vzc2FyeShXZWJLaXQ6OlRhcElkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDcwN2ZkMmRlN2I3YWMwYjI2MmZkMGY3NjczYzI4OWQ4
ODIzYWJlMTAuLjg5NWU3YjhjZDViOTM5OTI2NDkzNjE1ZDhmNzc1NmNmNTg3YTg2NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjM3Nyw3ICs2Mzc3LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRvd25sb2FkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW8KICAgICBkb3dubG9hZC5zZXREaWRTdGFydENhbGxi
YWNrKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OnJlcXVlc3RSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFJlc291cmNl
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnJlcXVlc3RSZXNvdXJjZShp
ZGVudGlmaWVyKCksIHNlc3Npb25JRCgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IDkwMjM3YWU1NWZmOTNkZTViOTQ3OTE2OTZlMTM5YWIxNWUzODczNGQuLjBmODhiYjViNzll
YmM2ZmEyYTllODk2NTQzMzE0ZjAyMDI4ZjY1ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC0yNTksNyArMjU5LDcgQEAgY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFBy
b3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJ1bkxvb3BPYnNlcnZlcjsKIGNsYXNzIFNlbGVjdGlvbkRh
dGE7Ci1jbGFzcyBDb250aWd1b3VzU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwog
Y2xhc3MgU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0OwogY2xhc3MgVGV4dEluZGljYXRvcjsKIGNs
YXNzIFZhbGlkYXRpb25CdWJibGU7CkBAIC0xMTgzLDcgKzExODMsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBlbGVtZW5Ub2tlbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB3aW5kb3dU
b2tlbik7CiAgICAgYm9vbCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9h
cmQoKTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gZGF0YVNl
bGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25k
ZXIoKTsKICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsK
IApAQCAtMTM3NSw3ICsxMzc1LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlRG93bmxvYWRS
ZXF1ZXN0KERvd25sb2FkUHJveHkmKTsKICAgICB2b2lkIHJlc3VtZURvd25sb2FkKGNvbnN0IEFQ
STo6RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKERvd25sb2FkUHJveHkqKT4mJik7CiAgICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQ
cm94eSopPiYmKTsKLSAgICB2b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiYpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RSZXNvdXJjZShXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImJik+JiYpOwogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBz
dGFydEJlZm9yZVNlbGVjdGlvbik7CiAgICAgdm9pZCBjaGFuZ2VTcGVsbGluZ1RvV29yZChjb25z
dCBTdHJpbmcmIHdvcmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcAppbmRleCBlZDhjYjY1M2VjZmRkMTM0NzNlZTFkMmFmNTBiYWE3YTZmN2ExMDEyLi5l
MTI2NGNlMjFiYTU3ZjJhNDI3NDhlMzNhMWRhZDg4YTBlMjU4YmMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIGF1
dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKSAtPiBFCiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9
CiAKLWF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKK2F1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlk
UmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNl
cHRpb25UeXBlCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IGRkNmI3MjQxMGFkZDRlZjYz
MWQyODA2OWUxNGEzZjJhMDBjNWNjYjIuLmY2ZmY0NmVlYTVmMjkwYjdiN2UzZmU1OTIxZGY5ZjE5
NGJhY2QxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgK
QEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvblR5cGUgd2lsbFBlcmZvcm1S
ZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCAgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYp
OwogICAgIEV4Y2VwdGlvblR5cGUgZGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIEV4Y2VwdGlv
blR5cGUgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KTsKLSAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpOworICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIEV4Y2VwdGlvblR5cGUgZGlkQ29tcGxl
dGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAgICAgdm9pZCBzdG9wKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkLmgKaW5kZXggNzg2NmNkYjE3NzQ2MDA3
YWIwYTdhMTdjNTViODdjN2YxNjRjMmJhZS4uNzI3OWY4NDRjYzJiYmQyYjAxN2ZlMGYwOTdkZTAx
ODcwYTlhODUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBi
b2FyZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmQuaApAQCAt
MzYsNyArMzYsNyBAQCB0eXBlZGVmIHN0cnVjdCBfR3RrQ2xpcGJvYXJkIEd0a0NsaXBib2FyZDsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2VsZWN0aW9uRGF0YTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb3JtYXRzKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwogICAgIHZvaWQgcmVhZFRl
eHQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwogICAgIHZvaWQgcmVhZEZp
bGVQYXRocyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAg
ICB2b2lkIHJlYWRCdWZmZXIoY29uc3QgY2hhciosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYpOworICAgIHZvaWQgcmVhZEJ1ZmZlcihjb25z
dCBjaGFyKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJik+JiYpOwogICAgIHZvaWQgd3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0
YSYmKTsKICAgICB2b2lkIGNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9DbGlwYm9hcmRHdGszLmNwcAppbmRleCBjMmJmNTE4M2IzMGYxMGU5ZWI3ODEzY2RhZGEyMjNl
OTE4OWM3NDU5Li41OTY2ZDU1NzRjMjgyZjUzMTY5NDA5NjA4Mjk2MGFlMzM5Y2ExMTBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCkBAIC0xMjYs
MTUgKzEyNiwxNSBAQCB2b2lkIENsaXBib2FyZDo6cmVhZEZpbGVQYXRocyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZQogc3RydWN0IFJlYWRCdWZmZXJB
c3luY0RhdGEgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGV4
cGxpY2l0IFJlYWRCdWZmZXJBc3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiYmKT4mJiBoYW5kbGVyKQorICAgIGV4cGxpY2l0IFJlYWRCdWZm
ZXJBc3luY0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKICAgICAgICAgOiBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKGhhbmRsZXIpKQogICAgIHsKICAgICB9CiAKLSAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiBjb21wbGV0aW9uSGFuZGxlcjsK
KyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7CiB9OwogCi12b2lkIENsaXBib2FyZDo6cmVh
ZEJ1ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIENsaXBi
b2FyZDo6cmVhZEJ1ZmZlcihjb25zdCBjaGFyKiBmb3JtYXQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGd0a19jbGlwYm9hcmRfcmVxdWVzdF9jb250ZW50cyhtX2NsaXBib2Fy
ZCwgZ2RrX2F0b21faW50ZXJuKGZvcm1hdCwgVFJVRSksIFtdKEd0a0NsaXBib2FyZCosIEd0a1Nl
bGVjdGlvbkRhdGEqIHNlbGVjdGlvbiwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJlYWRCdWZmZXJBc3luY0RhdGE+IGRhdGEoc3RhdGljX2Nhc3Q8UmVhZEJ1
ZmZlckFzeW5jRGF0YSo+KHVzZXJEYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvQ2xpcGJvYXJkR3RrNC5jcHAKaW5kZXggMDdhYmI3MTMxOTg4NTNiNzg3YzYzMjRiZDQ4MGIx
ZTA4OGEyYTNkMy4uNWI4MWZhOGYyOWQzZjdjZjFjM2YwOWQxZmMzYzg4NzM0ZGM1MWEwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcApAQCAtMTIw
LDE1ICsxMjAsMTUgQEAgdm9pZCBDbGlwYm9hcmQ6OnJlYWRGaWxlUGF0aHMoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGUKIHN0cnVjdCBSZWFkQnVmZmVy
QXN5bmNEYXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAKLSAgICBl
eHBsaWNpdCBSZWFkQnVmZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik+JiYgaGFuZGxlcikKKyAgICBleHBsaWNpdCBSZWFkQnVm
ZmVyQXN5bmNEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpPiYmIGhhbmRsZXIpCiAgICAgICAgIDogY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShoYW5kbGVyKSkKICAgICB7CiAgICAgfQogCi0gICAgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKT4gY29tcGxldGlvbkhhbmRsZXI7
CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJik+IGNvbXBsZXRpb25IYW5kbGVyOwogfTsKIAotdm9pZCBDbGlwYm9hcmQ6OnJl
YWRCdWZmZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBDbGlw
Ym9hcmQ6OnJlYWRCdWZmZXIoY29uc3QgY2hhciogZm9ybWF0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBjb25zdCBjaGFyKiBtaW1lVHlwZXNbXSA9IHsgZm9ybWF0LCBudWxs
cHRyIH07CiAgICAgZ2RrX2NsaXBib2FyZF9yZWFkX2FzeW5jKG1fY2xpcGJvYXJkLCBtaW1lVHlw
ZXMsIEdfUFJJT1JJVFlfREVGQVVMVCwgbnVsbHB0ciwgW10oR09iamVjdCogY2xpcGJvYXJkLCBH
QXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggNWM4ZTNiOTJmMDg5
OTJlZjRkYWQ2MmIxNzdhODJmMzE2MDhiYmIyNy4uM2IwNGE4MzNkYmUwYjZiNjZlZTE0ZDNjMzAw
ZjMwNjg3MThiZjJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLmgKQEAgLTE4OCw3ICsxODgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2Vs
ZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpbnRlcnByZXRLZXlFdmVudChj
b25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBwb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzYXZlSW1hZ2VUb0xp
YnJhcnkoUmVmPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlk
ZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0LCBXZWJDb3JlOjpSb3V0ZVNo
YXJpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd0RhdGFE
ZXRlY3RvcnNVSUZvclBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IGI2ODRlMWM5NGVhY2I2NzI4YmIxMzA2
OGNiNjk1MjI3MDFmYThmODMuLmZhYzllN2ZiNzhiZWUwZjYyOTQ1NjcyZTNiYjc0YjllMDUyMGUz
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0KQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwb3NpdGlvbklu
Zm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdAogICAgIFtt
X2NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlOmluZm9dOwogfQogCi12
b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPENvbnRpZ3VvdXNTaGFy
ZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VU
b0xpYnJhcnkoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlcikKIHsKICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBpbWFnZURhdGEgPSBpbWFnZUJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7CiAgICAg
VUlJbWFnZURhdGFXcml0ZVRvU2F2ZWRQaG90b3NBbGJ1bShpbWFnZURhdGEuZ2V0KCksIG5pbCwg
TlVMTCwgTlVMTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA5OWFlZDAzNjg4ZTBlNWM2MTc0NzkwZmRk
ZDhkMjUwZTlhYjcwYTJlLi4xMmYzYTE1YTQzYjhhYzRkMTUxZmYzMDNjM2M1Zjc3ZDEzNTMwY2Jl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KQEAgLTM4NDIsNyArMzg0Miw3IEBAIC0gKEJPT0wpY2FuUGVyZm9y
bUFjdGlvbkZvcldlYlZpZXc6KFNFTClhY3Rpb24gd2l0aFNlbmRlcjooaWQpc2VuZGVyCiAKICAg
ICAgICAgTlNBcnJheSAqYWxsQ3VzdG9tUGFzdGVib2FyZERhdGEgPSBbcGFzdGVib2FyZCBkYXRh
Rm9yUGFzdGVib2FyZFR5cGU6QChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Y29jb2FU
eXBlKCkpIGluSXRlbVNldDppbmRpY2VzXTsKICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4g
YWxsQ3VzdG9tUGFzdGVib2FyZERhdGEpIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gV2Vi
Q29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgICAgICAgICAg
YXV0byBidWZmZXIgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAg
ICAgICAgIGlmIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6ZnJvbVNoYXJlZEJ1ZmZl
cihidWZmZXIuZ2V0KCkpLm9yaWdpbigpID09IGZvY3VzZWREb2N1bWVudE9yaWdpbikKICAgICAg
ICAgICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICB9CkBAIC02NjUwLDcgKzY2NTAsNyBAQCBz
dGF0aWMgQk9PTCBhbGxQYXN0ZWJvYXJkSXRlbU9yaWdpbnNNYXRjaE9yaWdpbihVSVBhc3RlYm9h
cmQgKnBhc3RlYm9hcmQsIGNvbnN0CiAgICAgICAgIGlmICghZGF0YS5sZW5ndGgpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGJ1ZmZlciA9IFdlYkNvcmU6OkNvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBXZWJD
b3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKTsKICAgICAgICAgaWYgKFdlYkNvcmU6OlBh
c3RlYm9hcmRDdXN0b21EYXRhOjpmcm9tU2hhcmVkQnVmZmVyKGJ1ZmZlci5nZXQoKSkub3JpZ2lu
KCkgIT0gb3JpZ2luSWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybiBOTzsKIApAQCAtNzYy
Myw3ICs3NjIzLDcgQEAgLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVl
dEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaGFyZUVsZW1lbnRXaXQKIHsKICAgICBXZWJDb3JlOjpT
aGFyZURhdGFXaXRoUGFyc2VkVVJMIHNoYXJlRGF0YTsKICAgICBOU1N0cmluZyogZmlsZU5hbWUg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALnBuZyIsIChOU1N0cmluZyopV0VCX1VJ
X1NUUklORygiU2hhcmVkIEltYWdlIiwgIkRlZmF1bHQgbmFtZSBmb3IgdGhlIGZpbGUgY3JlYXRl
ZCBmb3IgYSBzaGFyZWQgaW1hZ2Ugd2l0aCBubyBleHBsaWNpdCBuYW1lLiIpXTsKLSAgICBzaGFy
ZURhdGEuZmlsZXMgPSB7IHsgZmlsZU5hbWUsIFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CisgICAgc2hh
cmVEYXRhLmZpbGVzID0geyB7IGZpbGVOYW1lLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZShVSUltYWdlUE5HUmVwcmVzZW50YXRpb24oaW1hZ2UpKSB9IH07CiAgICAgW3NlbGYgX3Nob3dT
aGFyZVNoZWV0OnNoYXJlRGF0YSBpblJlY3Q6IHsgW3NlbGYgY29udmVydFJlY3Q6Ym91bmRpbmdS
ZWN0IHRvVmlldzpzZWxmLndlYlZpZXddIH0gY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXgg
N2E4ZmFjZDMxN2EwNjM5NmQ2M2I4ZGVlYzY1NzFlNTUxM2VjNDk1Zi4uZGQ4Mjk1M2I5MGY0ZjEz
YmRiOGNhNzZjNDI4ZDBjMDcyYzBjNWRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMzgsNyArMTM4LDcgQEAgU3RyaW5nIFdlYlBh
Z2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIFN0cmlu
ZygpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFn
ZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKQorUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFz
dGVib2FyZChjb25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5oCmluZGV4IDk2YmY0MjhiMTliNWJhOWQ3NDZhM2VhMTExNTFiZDNjYWZiMTZkZWMu
LjgzZGI3NmUwZDAxZmUyNmY2YWFjMmY5YmRkN2JjZDA2ZjAwZTg1MTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCkBAIC0xMDAsOCArMTAw
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhVbmRvT3JSZWRvKSBvdmVy
cmlkZTsKICAgICBib29sIGV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmlu
ZyYgc2VsZWN0b3IpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6
OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcm
IHRpdGxlLAotICAgICAgICBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxl
VVJMLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0
IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQcm9taXNl
ZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsCisgICAg
ICAgIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIFJlZlB0cjxX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIsIGNvbnN0IFN0
cmluZyYgb3JpZ2luSWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVTZWN1cmVJ
bnB1dFN0YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNldFNlY3VyZUlucHV0U3RhdGUoKSBv
dmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUlucHV0Q29udGV4dEFib3V0RGlzY2FyZGVkQ29tcG9z
aXRpb24oKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9QYWdlQ2xpZW50SW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5tbQppbmRleCA2MjkwYTgwOTBlMzU5YjYzMDIwOGRiNzEyNjkyNDA3NGQx
YzVkN2MyLi40YTA4MGIyYzE3MTUxNDVjNDE3MmY4NzkwOGFiNGUxYjk3OTI4Y2U5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCkBAIC00
MDAsNyArNDAwLDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c3RhcnREcmFnKGNvbnN0IFdlYkNv
cmU6OkRyYWdJdGVtJiBpdGVtLCBjb25zdCBTaGFyZWFibGVCaXQKICAgICBtX2ltcGwtPnN0YXJ0
RHJhZyhpdGVtLCBpbWFnZSk7CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OnNldFByb21pc2Vk
RGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYg
ZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIs
IGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNl
dFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlm
aWVyKQogewogICAgIGF1dG8gaW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgaW1h
Z2UtPnNldERhdGEoV1RGTW92ZShpbWFnZUJ1ZmZlciksIHRydWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggY2E2Yjg3M2IxYzgzZjVh
NTA3Yjg1ZWEwZmYzMWNlZGFkZDFhYWIwYS4uYjRjZWFlZTY3MzljMDM1NDE1YmUyODJkYzRiOTY4
NDVjZjFlYTc5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tCkBAIC0yMjcsNyArMjI3LDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5n
U2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1SZWZQdHI8
V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIGlmICghaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNzcsNyArMjc3LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFMKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBzaGFyZWRNZW1vcnlJbWFnZS0+Y3JlYXRlU2hhcmVkQnVmZmVyKGltYWdlSGFuZGxl
LmRhdGFTaXplKTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVCdWZmZXI7Cisg
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGFyY2hpdmVCdWZmZXI7CiAgICAgaWYg
KCFhcmNoaXZlSGFuZGxlLmhhbmRsZS5pc051bGwoKSkgewogICAgICAgICBhdXRvIHNoYXJlZE1l
bW9yeUFyY2hpdmUgPSBTaGFyZWRNZW1vcnk6Om1hcChhcmNoaXZlSGFuZGxlLmhhbmRsZSwgU2hh
cmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIGlmICghc2hhcmVkTWVt
b3J5QXJjaGl2ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNLmNwcAppbmRleCBmYTk0MDI1ZWQ3NDczMGQyOGU3MTY0NjI4NWY5ZTViYTY1M2I4ZjEy
Li5jMjhmZTY1ZjBjZjE2NDM5OTgxOGFjYTMyZjk4MWNjNzc4ZjFlOTE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCkBAIC04NCw3ICs4
NCw3IEBAIGJvb2wgUmVtb3RlQ0RNOjpzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRp
b24oY29uc3QgQ0RNU2Vzc2lvblR5cGUmLCBjb25zCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1i
b29sIFJlbW90ZUNETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBj
b25zdCBTaGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0Citib29sIFJlbW90ZUNETTo6c3VwcG9ydHNJ
bml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhKSBjb25zdAogewogICAgIC8vIFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRl
ciwgaW5zaWRlIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZSgp
LgogICAgIHJldHVybiB0cnVlOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgUmVtb3RlQ0RNOjps
b2FkQW5kSW5pdGlhbGl6ZSgpCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6TG9hZEFuZEluaXRp
YWxpemUoKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUmVtb3Rl
Q0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0
CitSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3Bv
bnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAg
IC8vIFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwgaW5zaWRlIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKCkuCiAgICAgcmV0dXJuIHJlc3BvbnNlLmNv
cHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5o
CmluZGV4IDBhZGRmODMzNTNiNmVhMWIyZThiMDJjNmI3ZWUzZGFmNDY4Y2QzODMuLjhjNDU0ZWI4
M2U1OTk0YThlNGQ1OTJkNTFkZjkxZmY5YjUyM2NiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaApAQCAtNDgsMTMgKzQ4LDEzIEBAIHByaXZh
dGU6CiAgICAgYm9vbCBzdXBwb3J0c0NvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNDb25m
aWd1cmF0aW9uV2l0aFJlc3RyaWN0aW9ucyhjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zJikgY29uc3QgZmluYWw7
CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2Vi
Q29yZTo6Q0RNU2Vzc2lvblR5cGUmLCBjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uJikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAg
ICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBXZWJDb3JlOjpDRE1S
ZXF1aXJlbWVudCBkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoY29uc3QgV2ViQ29y
ZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0
aW9ucyYpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNvcmU6OkNETVJlcXVpcmVtZW50IHBlcnNpc3Rl
bnRTdGF0ZVJlcXVpcmVtZW50KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24mLCBjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKSBjb25zdCBmaW5hbDsKICAgICBi
b29sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnNBcmVVbmlxdWVQZXJPcmlnaW5BbmRDbGVhcmFibGUo
Y29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYpIGNvbnN0IGZpbmFsOwog
ICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4gY3JlYXRlSW5zdGFuY2UoKSBmaW5hbDsK
ICAgICB2b2lkIGxvYWRBbmRJbml0aWFsaXplKCkgZmluYWw7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vz
c2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiAgICAgVmVjdG9yPEF0b21TdHJp
bmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZp
Z3VyYXRpb24uc3VwcG9ydGVkSW5pdERhdGFUeXBlczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcAppbmRleCBi
NWRlYTIxZTk5NWE3MzdmMDM2ZjY0NTM4YzFmYjNlY2I1ZTZiYjU1Li5hMTNlNTE0NjBmNmJiOWY4
MGVmM2QxYTg0MmVmYzBiOWY0NDU5MGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcApAQCAtNzgsNyArNzgs
NyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24o
Y29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQwogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1v
dGVDRE1JbnN0YW5jZVByb3h5OjpJbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uZmlndXJh
dGlvbiwgZGlzdGluY3RpdmVJZGVudGlmaWVycywgcGVyc2lzdGVudFN0YXRlKSwgV1RGTW92ZShj
YWxsYmFjayksIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2U6OnNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNh
dGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6
c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICgh
bV9mYWN0b3J5KSB7CiAgICAgICAgIGNhbGxiYWNrKEZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKaW5kZXgg
MTA2YmEzYjExNjFjOGRmMDlkNzFkZmU2NzliYTMzZDQyMzA3OWU5Ni4uMmM3ODUxZTQ0MGIwOGE1
MmEyYWU3MGRhN2U0MTg4ODJlM2M2MTQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaApAQCAtNTQsNyArNTQsNyBA
QCBwcml2YXRlOgogCiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlwZTo6UmVtb3RlOyB9CiAgICAg
dm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJz
aXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFj
ayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAg
dm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9u
LmtleVN5c3RlbTsgfQogICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IGNy
ZWF0ZVNlc3Npb24oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAppbmRleCBh
ZjBiYWQ0YzkwZDhkZDUxMzc3NGFlZjZhMTViNzdiYTg5ZmM1MDY0Li5jNzQwYzA0NTA2ZmRlZGFj
OWY0Y2Y1MDJjMjA1YThhMzdmY2E0NTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3Bw
CkBAIC00OSw3ICs0OSw3IEBAIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6UmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmCiB7CiB9CiAKLXZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5p
dERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEs
IExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9mYWN0b3J5KSB7CiAg
ICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZh
bHNlLCBGYWlsZWQpOwpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZwog
ICAgIH0sIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2sp
CiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6
bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCk7CkBAIC0xMDksNyAr
MTA5LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25EYXRh
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnMKICAgICB9CiAKICAgICBtX2ZhY3Rvcnkt
PmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW92ZVNlc3Npb25EYXRh
KHNlc3Npb25JZCwgdHlwZSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoS2V5U3Rh
dHVzVmVjdG9yJiYgY2hhbmdlZEtleXMsIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJD
b3B5PiYmIG1lc3NhZ2UsIGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKLSAgICAgICAgc3RkOjpv
cHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gcmVhbE1lc3NhZ2UgPSBzdGQ6Om51bGxvcHQ7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiByZWFsTWVz
c2FnZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKG1lc3NhZ2UgJiYgbWVzc2FnZS52YWx1
ZSgpLmJ1ZmZlcigpKQogICAgICAgICAgICAgcmVhbE1lc3NhZ2UgPSBtZXNzYWdlLnZhbHVlKCku
YnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjaGFu
Z2VkS2V5cyksIFdURk1vdmUocmVhbE1lc3NhZ2UpLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBG
YWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXggNGZmZTRjYWNlY2NkZTQzZDVj
YjExZTIzNmNhMDQ1YWNkYTgzYTdlYi4uNGU0Y2QyYzAwNWM2YjAwNjVmOWNkYjE4OGM0YmNlMGI1
YmZhNjYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oCkBAIC01OSw4ICs1OSw4IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHNldENsaWVudChXZWFrUHRyPFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbkNsaWVudD4mJiBjbGllbnQpIGZpbmFsIHsgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVu
dCk7IH0KICAgICB2b2lkIGNsZWFyQ2xpZW50KCkgZmluYWwgeyBtX2NsaWVudCA9IG51bGxwdHI7
IH0KLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExp
Y2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
IHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1
ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNh
bGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBs
b2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IFN0
cmluZyYgb3JpZ2luLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xv
c2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYm
KSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBMaWNlbnNlVHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGLmNwcAppbmRleCA5YTIxOWE1NDRlNTUzODNmNTRlNzFkYWJkMzU0Y2M0
NDBhNDE0MmI5Li42MjkyNjc5OGM1YzExMzI0YTMxYWE1MGNkYTdlZDFmYmY3NGZlNzAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkYuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBSZW1vdGVJbWFn
ZURlY29kZXJBVkY6OnNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nIGV4cGVjdGVkQ29u
dGVudFNpemUKIAogLy8gSWYgYWxsRGF0YVJlY2VpdmVkIGlzIHRydWUsIHRoZSBjYWxsZXIgZXhw
ZWN0cyBlbmNvZGVkRGF0YVN0YXR1cygpIHRvIGJlID49IEVuY29kZWREYXRhU3RhdHVzOjpTaXpl
QXZhaWxhYmxlCiAvLyBhZnRlciB0aGlzIGZ1bmN0aW9uIHJldHVybnMgKGluIHRoZSBzYW1lIHJ1
biBsb29wKS4KLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzZXREYXRhKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFW
Rjo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKIHsKICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRi5oCmluZGV4IGU1Y2ZlOTRlY2QzYTljMDYwMGZjMDAzMjBmZjQz
MDYxYzkwZWQ2OWIuLjQwZDM3MzRmN2EzMjJlOGJhY2I5ZDFjMGRlYTcwNzllMmFkMTdlYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkYuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBSZW1vdGVJbWFnZURl
Y29kZXJBVkYgZmluYWwKICAgICA6IHB1YmxpYyBXZWJDb3JlOjpJbWFnZURlY29kZXIKICAgICAs
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlKFJlbW90ZUltYWdl
RGVjb2RlckFWRk1hbmFnZXImIG1hbmFnZXIsIGNvbnN0IFdlYkNvcmU6OkltYWdlRGVjb2Rlcklk
ZW50aWZpZXImIGlkZW50aWZpZXIsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCisgICAgc3RhdGljIFJlZjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0
ZShSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBXZWJDb3JlOjpJ
bWFnZURlY29kZXJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFJlbW90ZUltYWdlRGVjb2RlckFWRihtYW5hZ2VyLCBpZGVudGlmaWVy
LCBtaW1lVHlwZSkpOwogICAgIH0KQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIFdlYkNv
cmU6OlBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBXZWJD
b3JlOjpTdWJzYW1wbGluZ0xldmVsID0gV2ViQ29yZTo6U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCwgY29uc3QgV2ViQ29yZTo6RGVjb2RpbmdPcHRpb25zJiA9IFdlYkNvcmU6OkRlY29kaW5nT3B0
aW9ucyhXZWJDb3JlOjpEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSkgZmluYWw7CiAKICAgICB2
b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUobG9uZyBsb25nKSBmaW5hbDsKLSAgICB2b2lkIHNl
dERhdGEoV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFs
OworICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpIGZpbmFsOwogICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9CiAgICAgdm9pZCBjbGVh
ckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGTWFuYWdlci5jcHAKaW5kZXggNDFkNTM4ODAyM2QzOTE0OTUyMTgzNWY2ODhkZTRkNDhmNjVk
NzY3ZS4uMDgyYjMzNjZjOGJjNzEzMGQ3NWQ1Njk4YTdkNzllNjg5MmFkOGY3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkZNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmUHRyPFJlbW90ZUlt
YWdlRGVjb2RlckFWRj4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6Y3JlYXRlSW1hZ2VE
ZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFP
cHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGTWFuYWdlcjo6Y3JlYXRlSW1hZ2VEZWNvZGVyKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKIHsKICAgICBzdGQ6Om9wdGlvbmFsPEltYWdlRGVjb2RlcklkZW50aWZpZXI+IGltYWdlRGVj
b2RlcklkZW50aWZpZXI7CiAgICAgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGFS
ZWZlcmVuY2UgeyBkYXRhIH07CkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBSZW1vdGVJbWFnZURl
Y29kZXJBVkZNYW5hZ2VyOjpzZXRVc2VHUFVQcm9jZXNzKGJvb2wgdXNlR1BVUHJvY2VzcykKICAg
ICBJbWFnZURlY29kZXI6Omluc3RhbGxGYWN0b3J5KHsKICAgICAgICAgUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGOjpzdXBwb3J0c01lZGlhVHlwZSwKICAgICAgICAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
OjpjYW5EZWNvZGVUeXBlLAotICAgICAgICBbdGhpc10oU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pIHsKKyAgICAgICAgW3Ro
aXNdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbikgewogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUltYWdl
RGVjb2RlcihkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKTsKICAgICAgICAgfQogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFn
ZXIuaAppbmRleCBjMjM3ODJiNjUwNGVjNzliZTQ2ZTEyNmY0ZTU5MWIzZmY3ZjZkYmE4Li4zNjE4
YWZkMTIwOThiNTU3NmI0ZGQ0ZmZiZjNjMDZmYmE4NDJhNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRk1hbmFnZXIuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24mIGVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAKIHByaXZhdGU6Ci0g
ICAgUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gY3JlYXRlSW1hZ2VEZWNvZGVyKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6
QWxwaGFPcHRpb24sIFdlYkNvcmU6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBS
ZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGVJbWFnZURlY29kZXIoV2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2Vi
Q29yZTo6QWxwaGFPcHRpb24sIFdlYkNvcmU6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsK
IAogICAgIC8vIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGllbnQuCiAgICAgdm9pZCBncHVQcm9j
ZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA5NjZmYzkzYjc3YWZhYTNlNjIwOGQ3YWJh
NWFlZDJjN2E5NGM3NGIyLi4wMDVhMzdjYzI2ZWM0YzA5MDFiZjRmMzcxMjIzODY1ZGUyZDE2NmJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6flNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUoKQogICAg
IG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIudG9VSW50NjQoKSk7
CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6YXBwZW5kKFJlZjxTaGFyZWRC
dWZmZXI+JiYgZGF0YSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6YXBwZW5kKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCiB7CiAgICAgaWYgKCFtX2dwdVByb2Nl
c3NDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5o
CmluZGV4IDM2MDE3NWJmYmU5ZDFhZjgzZWQ1NzkxMzczYjc3NWVlNzUwYWM3Y2MuLmVhNWZhM2Vj
MzZjMmI4NTllZTU3OGNjZDBlMDM0OGM3M2NiODZkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJl
bW90ZS5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBTb3VyY2VCdWZmZXJQ
cml2YXRlIG92ZXJyaWRlcwogICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wpIGZpbmFsOwotICAgIHZv
aWQgYXBwZW5kKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQg
YXBwZW5kKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAg
ICB2b2lkIGFib3J0KCkgZmluYWw7CiAgICAgdm9pZCByZXNldFBhcnNlclN0YXRlKCkgZmluYWw7
CiAgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJp
dmF0ZS5jcHAKaW5kZXggMTFiNGE4NmU0ODUyZjZjMjA2MWZhM2ZjOWFmMjlmODg5OWY0ZWI5Zi4u
YjQwODlmZDM1NDhjOTdmMTdmYzJiOWZiMDAyNzgwZDY0M2NmMjNiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQ
cml2YXRlLmNwcApAQCAtMTY1LDEwICsxNjUsMTAgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0
ZTo6c3RvcmFnZUNoYW5nZWQoU2hhcmVkTWVtb3J5KiBzdG9yYWdlLCBjb25zdCBXZWJDb3JlOjoK
ICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OkF1
ZGlvU2FtcGxlc1N0b3JhZ2VDaGFuZ2VkIHsgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZN
b3ZlKGhhbmRsZSksIGRhdGFTaXplIH0sIGZvcm1hdCwgZnJhbWVDb3VudCB9LCBtX2lkZW50aWZp
ZXIpOwogfQogCi12b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlOjpmZXRjaERhdGEoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZTo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9jb25uZWN0aW9uLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OkZldGNoRGF0YSB7
IH0sIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtaW1l
VHlwZSA9IG1pbWVUeXBlKCldKGF1dG8mJiBkYXRhLCBkb3VibGUgdGltZUNvZGUpIG11dGFibGUg
ewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgICAgIGlmIChkYXRhLnNpemUoKSkK
ICAgICAgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoYnVmZmVyKSwg
bWltZVR5cGUsIHRpbWVDb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5oCmluZGV4IDMwM2E1NGY3NmYx
ODVlOTY0NTRlZjlmNWJiNDYxZjI4ZTEyNjc4NmQuLjU3NmZkMWM2ZTk3YzBjYWQ4Y2JmZWM5NGUz
YmQzNjMzMDc2ZTQ0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
d2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuaApAQCAtNTcsNyArNTcsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIC8vIFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlCiAg
ICAgdm9pZCB2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpNZWRpYVNhbXBsZSYsIFdlYkNv
cmU6OlZpZGVvU2FtcGxlTWV0YWRhdGEpIGZpbmFsOwotICAgIHZvaWQgZmV0Y2hEYXRhKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJikgZmluYWw7CisgICAgdm9pZCBmZXRjaERhdGEo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKT4mJikgZmluYWw7CiAgICAg
dm9pZCBzdG9wUmVjb3JkaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAg
ICAgdm9pZCBzdGFydFJlY29yZGluZyhTdGFydFJlY29yZGluZ0NhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIHZvaWQgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29u
c3QgV2ViQ29yZTo6UGxhdGZvcm1BdWRpb0RhdGEmLCBjb25zdCBXZWJDb3JlOjpBdWRpb1N0cmVh
bURlc2NyaXB0aW9uJiwgc2l6ZV90KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5q
ZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQuaAppbmRleCAyYzEzNGU5ZTcxOWY5NzI2NWM4ZDA5MDMz
NDljMWUyZjljMWUyZTg0Li4wMzUzYWFiZjdkNGI5MjVhYTJmMTU2MmQ1NzNhYWYzMDkzYzgzYmM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0FQSUluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudC5o
CkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI7CitjbGFzcyBT
aGFyZWRCdWZmZXI7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgTm9kZTsKIGNsYXNz
IFN0eWxlUHJvcGVydGllczsKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYktpdDo6V2ViUGFnZSYsIGNv
bnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVRvUGFzdGVi
b2FyZChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdl
KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFu
Z2U+JiwgVmVjdG9yPFdURjo6U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcj4+JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGdldFBhc3RlYm9hcmRE
YXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+PiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVRvUGFz
dGVib2FyZChXZWJLaXQ6OldlYlBhZ2UmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybVR3
b1N0ZXBEcm9wKFdlYktpdDo6V2ViUGFnZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBj
b25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYsIGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9B
UElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
LmgKaW5kZXggYTA2MzUyMDQzMzViM2FiMGU2ZGZiMGM2Nzc3NjdmNDI4ZThhNzdlMi4uMTgwYjEx
MTFlY2YwMTEzMjgwOTI2NmExYmNlMjdkMjYwZTRmYTAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9BUElJbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC0zNiw3ICszNiw3
IEBAIGNsYXNzIERPTVdpbmRvd0V4dGVuc2lvbjsKIGNsYXNzIERPTVdyYXBwZXJXb3JsZDsKIGNs
YXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci1jbGFzcyBTaGFyZWRC
dWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflBhZ2VMb2FkZXJD
bGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0
KFdlYktpdDo6V2ViUGFnZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIEFQSTo6
T2JqZWN0KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViS2l0
OjpXZWJQYWdlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0
IFdURjo6VVJMJiwgQVBJOjpPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbExvYWRE
YXRhUmVxdWVzdChXZWJLaXQ6OldlYlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgV1RGOjpTdHJpbmcm
LCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6VVJMJiwgQVBJOjpPYmplY3QqKSB7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktp
dDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+JikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBSZWZQdHI8
QVBJOjpPYmplY3Q+JikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENv
bnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXgg
ZGY4ZDg4MDQ3ZmY2NzMxN2NiNGFiZmUzNTEzMDVhMDc1YTBjM2FiZi4uYmM4ZWFiOTg3OWJlODBk
ODUxYjAwMWMyMDBjMGYxODU3YTZjN2EyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
ci5tbQpAQCAtNjM0LDcgKzYzNCw3IEBAIC0gKHZvaWQpX3NldEVkaXRpbmdEZWxlZ2F0ZTooaWQg
PFdLV2ViUHJvY2Vzc1BsdWdJbkVkaXRpbmdEZWxlZ2F0ZT4pZWRpdGluZ0RlbGVnCiAgICAgICAg
ICAgICBbbV9jb250cm9sbGVyLT5fZWRpdGluZ0RlbGVnYXRlLmdldCgpIF93ZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciB3aWxsV3JpdGVSYW5nZVRv
UGFzdGVib2FyZDp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFuZGxlKHJhbmdlKS5nZXQoKSldOwog
ICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYktp
dDo6V2ViUGFnZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+JiBy
YW5nZSwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbAorICAg
ICAgICB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV2ViS2l0OjpXZWJQYWdlJiwgY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mIHJhbmdlLCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFt
X2RlbGVnYXRlTWV0aG9kcy5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTY0Miw3ICs2NDIsNyBAQCAtICh2b2lkKV9zZXRFZGl0aW5nRGVsZWdh
dGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5FZGl0aW5nRGVsZWdhdGU+KWVkaXRpbmdEZWxlZwog
ICAgICAgICAgICAgYXV0byBkYXRhQnlUeXBlID0gW21fY29udHJvbGxlci0+X2VkaXRpbmdEZWxl
Z2F0ZS5nZXQoKSBfd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjptX2Nv
bnRyb2xsZXIgcGFzdGVib2FyZERhdGFGb3JSYW5nZTp3cmFwcGVyKFdlYktpdDo6Y3JlYXRlSGFu
ZGxlKHJhbmdlKS5nZXQoKSldOwogICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqdHlwZSBpbiBk
YXRhQnlUeXBlKSB7CiAgICAgICAgICAgICAgICAgcGFzdGVib2FyZFR5cGVzLmFwcGVuZCh0eXBl
KTsKLSAgICAgICAgICAgICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6Q29udGln
dW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGFCeVR5cGVbdHlwZV0pKTsKKyAgICAgICAgICAg
ICAgICBwYXN0ZWJvYXJkRGF0YS5hcHBlbmQoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YUJ5VHlwZVt0eXBlXSkpOwogICAgICAgICAgICAgfTsKICAgICAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCmluZGV4IGMzOTgxMWVh
Yzk0ZTI5NWUzODMzYmZjZGQ2YzE4MmE0YTMxMDE5OWIuLjM1MzYwNjUyNWI4NDU3NjhlMzAxNTgz
OGY4OTExZGU4ZjJlMDgwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQ6OndpbGxXcml0ZVRvUGFzdGVib2FyZChXZWJQYWdlJiBwYWdlLCBjb25z
dAogICAgICAgICBtX2NsaWVudC53aWxsV3JpdGVUb1Bhc3RlYm9hcmQodG9BUEkoJnBhZ2UpLCB0
b0FQSShjcmVhdGVIYW5kbGUocmFuZ2UpLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OmdldFBhc3RlYm9h
cmREYXRhRm9yUmFuZ2UoV2ViUGFnZSYgcGFnZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4mIHJhbmdlLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVm
UHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIEluamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6Z2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQ
YWdlJiBwYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4m
IHBhc3RlYm9hcmREYXRhKQogewogICAgIGlmIChtX2NsaWVudC5nZXRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKSB7CiAgICAgICAgIFdLQXJyYXlSZWYgdHlwZXMgPSBudWxscHRyOwpAQCAtMTU2LDcg
KzE1Niw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50OjpnZXRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKFdlYlBhZ2UmIHBhZ2UsIGNvCiAgICAgICAgICAgICBwYXN0ZWJvYXJk
VHlwZXMuYXBwZW5kKHR5cGUtPnN0cmluZygpKTsKIAogICAgICAgICBmb3IgKGF1dG8gaXRlbSA6
IGRhdGFBcnJheS0+ZWxlbWVudHNPZlR5cGU8QVBJOjpEYXRhPigpKSB7Ci0gICAgICAgICAgICBh
dXRvIGJ1ZmZlciA9IENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShpdGVtLT5ieXRlcygp
LCBpdGVtLT5zaXplKCkpOworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShpdGVtLT5ieXRlcygpLCBpdGVtLT5zaXplKCkpOwogICAgICAgICAgICAgcGFzdGVi
b2FyZERhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmgKaW5kZXggZDk4ZWUxYzE1
NWQ0ZmI4MjkyYTU4ZDljNThlODgwMDdhMTM0MDUxYS4uMzFlMTM5NmU3MGFkNjBjMTlkOTNjNjc1
Yzc2MzQ2ZmUwZGE3OTQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ2hhbmdl
KFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbk5hbWUpIGZpbmFsOwogICAgIHZv
aWQgZGlkQ2hhbmdlU2VsZWN0aW9uKFdlYlBhZ2UmLCBjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlv
bk5hbWUpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdlYlBhZ2UmLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYpIGZpbmFsOwotICAgIHZv
aWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQYWdlJiwgY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVi
b2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJQ
YWdlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVRvUGFzdGVi
b2FyZChXZWJQYWdlJikgZmluYWw7CiAgICAgYm9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViUGFn
ZSYsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5n
ZSYgZGVzdGluYXRpb24sIGJvb2wgaXNNb3ZlKSBmaW5hbDsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCmluZGV4IGEzNGUyMTJkMDdhZjJmZjU3
M2UxYThhMzQwZWMxZDNmY2ViNDJhMWEuLjk0ZmVkMmU3ZTM2MzAyOTFmOTlmNTM3OGFjYmRkMmMz
OTUwZDNlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuY3BwCkBAIC02MiwxMCArNjIsMTAgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJD
bGllbnQ6OndpbGxMb2FkVVJMUmVxdWVzdChXZWJQYWdlJiBwYWdlLCBjb25zdCBSZXMKIHN0YXRp
YyB2b2lkIHJlbGVhc2VTaGFyZWRCdWZmZXIodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRh
dGEpCiB7CiAgICAgLy8gQmFsYW5jZWQgYnkgcmVmKCkgaW4gSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50Ojp3aWxsTG9hZERhdGFSZXF1ZXN0KCkuCi0gICAgc3RhdGljX2Nhc3Q8Y29uc3Qg
Q29udGlndW91c1NoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOworICAgIHN0YXRpY19jYXN0
PGNvbnN0IFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwogfQogCi12b2lkIEluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiBwYWdl
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVm
ZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwg
Y29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQordm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFn
ZSYgcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmlu
ZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC53aWxsTG9hZERhdGFSZXF1ZXN0KQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
LmgKaW5kZXggMzZiZDk4MGIyZmFhMWFmNDVhYzMxMDZlYjAxZTlmMzc2YmExM2FjZi4uODYzYmRh
YjYyODRjYTNhYWQyZjlkNWZmZjVmZDY4ZWFiOGIyYjczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KGNvbnN0IFdLQnVuZGxl
UGFnZUxvYWRlckNsaWVudEJhc2UqKTsKIAogICAgIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdl
YlBhZ2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUEk6Ok9iamVjdCopIG92
ZXJyaWRlOwotICAgIHZvaWQgd2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgV1RG
OjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6T2JqZWN0Kikg
b3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsTG9hZERhdGFSZXF1ZXN0KFdlYlBhZ2UmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFVSTCYsIEFQ
STo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggOThhNmUyZTdiNTdlNTIzMThmNDJj
OGNkMTdlNGYwZGUwNTA5NDA5My4uMDIyNzBhNTNhZjliYThiZjgwZDdjM2IzZGNkYzhjZWI1NjUx
NzZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yODMsNyArMjgzLDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LAogICAgIAogICAgIGF1dG8gYnVmZmVyID0gaGFuZGxlLnRyeVdy
YXBJblNoYXJlZEJ1ZmZlcigpOwogICAgIGlmICghYnVmZmVyKSB7Ci0gICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBo
YW5kbGUgZm9yIHJlc291cmNlIHVybCAlcyIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2UgaGFuZGxlIGZvciByZXNvdXJjZSB1
cmwgJXMiLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODcyOThiMzcyNTA0OTg1NzFhZTQ4Zjhj
OTIxODVlYjIwZTMxZGUxMi4uMzEwZmNhNzg3NWMzMmMzY2Q3NDc4ZGI2NGY1OWFjMmNmNTAxNjM5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Ym9vCiAgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6c2hvdWxkSW50ZXJj
ZXB0UmVzcG9uc2UobV9jb3JlTG9hZGVyLT5mcmFtZSgpLCByZXNwb25zZSkpIHsKICAgICAgICAg
YXV0byBpbnRlcmNlcHRlZFJlcXVlc3RJZGVudGlmaWVyID0gbV9jb3JlTG9hZGVyLT5pZGVudGlm
aWVyKCk7CiAgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5iZWdpbkludGVyY2VwdGluZ1Jl
c3BvbnNlKGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIpOwotICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKG1fY29yZUxvYWRlci0+ZnJh
bWUoKSwgcmVzcG9uc2UsIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIsIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaW50ZXJjZXB0ZWRSZXF1ZXN0SWRlbnRpZmllciwg
cG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUocG9saWN5RGVjaXNpb25D
b21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGluc3BlY3RvclJlc3Bv
bnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBvdmVycmlkZURhdGEpIG11dGFibGUgeworICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQ6OmludGVyY2VwdFJlc3BvbnNlKG1fY29y
ZUxvYWRlci0+ZnJhbWUoKSwgcmVzcG9uc2UsIGludGVyY2VwdGVkUmVxdWVzdElkZW50aWZpZXIs
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgaW50ZXJjZXB0ZWRSZXF1ZXN0
SWRlbnRpZmllciwgcG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUocG9s
aWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcildKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGlu
c3BlY3RvclJlc3BvbnNlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gb3ZlcnJpZGVE
YXRhKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVM
b2FkZXItPmlkZW50aWZpZXIoKSkgewogICAgICAgICAgICAgICAgIFdFQlJFU09VUkNFTE9BREVS
X1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBjb250aW51aW5nIGludGVyY2Vw
dCBsb2FkIGJlY2F1c2Ugbm8gY29yZUxvYWRlciBvciBubyBJRCIpOwogICAgICAgICAgICAgICAg
IG1faW50ZXJjZXB0Q29udHJvbGxlci5jb250aW51ZVJlc3BvbnNlKGludGVyY2VwdGVkUmVxdWVz
dElkZW50aWZpZXIpOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBl
CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2Us
ICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRh
dGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKFVOTElLRUxZKG1faW50ZXJjZXB0Q29udHJv
bGxlci5pc0ludGVyY2VwdGluZyhtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkpKSB7Ci0gICAg
ICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgbV9pbnRlcmNlcHRDb250
cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERh
dGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQogICAg
ICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKHsgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6
ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoKTsKQEAgLTI5NSwxMSArMjk1LDExIEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJj
ZTo6SGFuZGxlJiBoYW5kCiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJs
KCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxF
QVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiIpOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVm
ZmVyKCk7CiAKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBjcmVhdGUgYnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBmcm9tIHRoZSBuZXR3
b3JrIHByb2Nlc3MuIik7Ci0gICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJk
aWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIik7CisgICAg
ICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVzb3VyY2U6IFVu
YWJsZSB0byBjcmVhdGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciIpOwogICAgICAgICBpZiAoYXV0
byogZnJhbWUgPSBtX2NvcmVMb2FkZXItPmZyYW1lKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRv
KiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAgICAgICBwYWdlLT5kaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OkRpYWdub3N0aWNM
b2dnaW5nS2V5czo6aW50ZXJuYWxFcnJvcktleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6OmNyZWF0ZVNoYXJlZEJ1ZmZlckZhaWxlZEtleSgpLCBXZWJDb3JlOjpTaG91bGRTYW1w
bGU6Ok5vKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4uaAppbmRleCA0MmRlNDYxNDE5Nzc4YjdjNDUwZmNhMWViMDM3YzFjZTk3ZDJkNjMxLi5h
N2Y0NWM4NDAxYjJmZDJmODcwZTM2NzhjNThmYzMxMGMyZTFmMjQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC0yMDcsNyArMjA3
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29s
KSBmaW5hbCB7IH0KICAgICBib29sIGdldEZvcm1WYWx1ZShTdHJpbmcmIGZvcm1WYWx1ZSkgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGhhbmRsZVNjcm9sbChXZWJDb3JlOjpTY3Jv
bGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KSBmaW5hbDsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3QgZmluYWw7
CisgICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxpdmVSZXNvdXJj
ZURhdGEoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHdpbGxEZXRhY2hSZW5kZXJlcigpIGZpbmFs
OwogICAgIGJvb2wgcGx1Z2luSGFuZGxlc0NvbnRlbnRPZmZzZXRGb3JBY2Nlc3NpYmlsaXR5SGl0
VGVzdCgpIGNvbnN0IGZpbmFsOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggZDIzYWJiOWU2NTExYjEzYmJkNTIzYWY0
NTFmNDQxNzg3M2E2YzFlMC4uZDQ3ZjMyYjdkNDkxOTU2YmRjZTc3YmZlNmYxNWNhNzg2NWJmZDE5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tCkBAIC0yNTUyLDcgKzI1NTIsNyBAQCB2b2lkIFBERlBsdWdpbjo6bm90aWZ5RGlzcGxh
eU1vZGVDaGFuZ2VkKGludCkKICAgICB1cGRhdGVTY3JvbGxiYXJzKCk7CiB9CiAKLVJlZlB0cjxT
aGFyZWRCdWZmZXI+IFBERlBsdWdpbjo6bGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0CitSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUERGUGx1Z2luOjpsaXZlUmVzb3VyY2VEYXRhKCkgY29u
c3QKIHsKICAgICBOU0RhdGEgKnBkZkRhdGEgPSBsaXZlRGF0YSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCmluZGV4IDg4ZjQ1Y2U1MWNlMzFkZjBjNWIzYjc1
ODYyMzZjM2YwZDljOTNhZDMuLjU4ZDcwYTM5YTE2ZDZhNGMwZThiMGNhOWQwM2FjM2QzN2FlZGZj
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC02MSw3
ICs2MSw3IEBAIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7
CiBjbGFzcyBTY3JvbGxiYXI7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTI4OCw3ICsyODgsNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRUb1Jvb3RW
aWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludEluTG9jYWxDb29yZGluYXRlcykgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxpdmVSZXNv
dXJjZURhdGEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0ID0gMDsKIAogICAgIHZp
cnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCAwOGNmYmI1NTBlZGNiNTZjNTk5N2EwNDM2YzI5NjUz
ZWYwZTgwM2VmLi40ZDUzNzM0NzI3MTM2Y2Q2ZjQxZTA5NzExZWI3YmZkMDM0N2Q0YjA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAt
OTIzLDcgKzkyMyw3IEBAIHZvaWQgUGx1Z2luVmlldzo6d2lsbERldGFjaFJlbmRlcmVyKCkKICAg
ICBtX3BsdWdpbi0+d2lsbERldGFjaFJlbmRlcmVyKCk7CiB9CiAKLVJlZlB0cjxTaGFyZWRCdWZm
ZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAorUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IFBsdWdpblZpZXc6OmxpdmVSZXNvdXJjZURhdGEoKSBjb25zdAogewog
ICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikgewogICAgICAgICBpZiAobV9t
YW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggNzMyNzQxZDk1
ZWU2YTJiNjU2ZjNkOGMwOGM4YWZmYmE3ZTJmYWY2My4uZjc1YWM4OWJmMzlhNTFlMDE4ZDI2MmMw
YmU3YzBhNjJkZWI2OTNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuaApAQCAtMTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hv
dWxkQWxsb3dTY3JpcHRpbmcoKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIGJvb2wgcGVyZm9y
bURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsK
ICAgICBTdHJpbmcgZ2V0U2VsZWN0aW9uRm9yV29yZEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYpIGNvbnN0OwogICAgIGJvb2wgZXhpc3RpbmdTZWxlY3Rpb25Db250YWluc1BvaW50
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5jcHAKaW5kZXggNDJlZDk3ZGU1ZGMwZmMwMmI5MzNmNGM1OTVmMmE5ZGI3
ZTJkZGVjOS4uZWU0MGZiOTU4NWU3OWQ4NmIzY2ZkMmY1NzllZDQ2ZTYxYjllYzYzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9p
ZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBtX25l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1fZmV0Y2hJZGVudGlmaWVy
KTsKIH0KIAotdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZl
RGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggMmM3MzcxZjFkZGY0MGU0NmFl
MzQxMzlmM2U0MGI5YzE1YTM0ZmJkOC4uZTk4N2UxOWFjOGI3Mzg4NzFhYWQ4MmI0YjM4NTYyOTY4
YTJiNmM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtNTAsNyAr
NTAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGly
ZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxXZWJD
b3JlOjpGb3JtRGF0YT4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaCgpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcAppbmRleCBhMDEwM2IwMmEwZjRkNGE5MWUxN2YzNTJiZjhmOWYxMDUy
NWQ4Y2VlLi4yOGMxNGJhNTM2NjNjNTViNjFiMTA5ODEyYzA0OGEwMjA1NmJkMzhkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50
OjpzaG91bGRBcHBseVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVydGllcyYgc3R5bGUsIGNvbnN0IHN0
ZDo6CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCi12b2lkIFdlYkVkaXRvckNs
aWVudDo6cmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmls
ZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpy
ZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKIHsKICAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllckZyb21E
YXRhKGlkZW50aWZpZXIsIGNvbnRlbnRUeXBlLCBwcmVmZXJyZWRGaWxlTmFtZSwgZGF0YS5nZXQo
KSkpOwogfQpAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAg
bV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLndpbGxXcml0ZVRvUGFzdGVib2Fy
ZCgqbV9wYWdlLCByYW5nZSk7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQ
YXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UsIFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRD
bGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFu
Z2UsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVk
QnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVF
ZGl0b3JDbGllbnQoKS5nZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKCptX3BhZ2UsIHJhbmdlLCBw
YXN0ZWJvYXJkVHlwZXMsIHBhc3RlYm9hcmREYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRl
eCBlMTZiMGNmMzgxODA2MTEwZGJjNmUxN2ViNzVkOTFkM2U0YjA5YTRlLi4wZjczZTRmYjYzNjIy
YzZmYWU5NjM1MjE4YjU3ZjA2MGUyNjExMjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC02Niw3
ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShj
b25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYsIGNvbnN0IFdlYkNvcmU6OlNpbXBsZVJhbmdlJikg
ZmluYWw7CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIHZvaWQgcmVnaXN0
ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZp
ZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5n
JiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoY29uc3QgU3Ry
aW5nJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlckF0dGFjaG1lbnRzKFZlY3RvcjxXZWJDb3Jl
OjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+JiYpIGZpbmFsOwpAQCAtODgsNyArODgsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkRW5kRWRpdGluZygpIGZpbmFsOwogICAgIHZvaWQgd2lsbFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2lt
cGxlUmFuZ2U+JikgZmluYWw7CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZCgpIGZpbmFsOwotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2Fy
ZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYg
cGFzdGVib2FyZERhdGEpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CiAgICAgCiAgICAgdm9pZCByZWdpc3RlclVuZG9TdGVw
KFdlYkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CiAgICAgdm9pZCByZWdpc3RlclJlZG9TdGVwKFdl
YkNvcmU6OlVuZG9TdGVwJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApp
bmRleCA5NTkyMjNkNzc2ZWY5MzJhYjFhNzM3MTYwNmUzMjkxZDIzMjlkM2NiLi4xNGEwODNjYTIw
N2E5MDYzY2Y4MGIxZTdlOTY3MGE0ODdjZjRkMzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKQEAgLTExODgsNyArMTE4OCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICAgICAgaWYg
KCF3ZWJQYWdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0
YSgpOworICAgICAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNv
dXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICAgICAgICAgIElQQzo6
RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3Vy
Y2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VE
YXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgICAgICAgICB3ZWJQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3Vz
dG9tQ29udGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgp
LCBkYXRhUmVmZXJlbmNlKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAKaW5kZXggNGM2NjZkZDQwZDVlOWQ0NTFhMWUwNmMxMWZkMDgwMDI3YTk4YjJhMS4uNjBj
MjA3ZWQwZWVhODM2YjQ4NzBkZGE3YzZiYjMwYTE0NTRjYTQ5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGViCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6R2V0UGFzdGVib2Fy
ZFR5cGVzKHBhc3RlYm9hcmROYW1lLCBwYWdlSWRlbnRpZmllcihjb250ZXh0KSksIE1lc3NhZ2Vz
OjpXZWJQYXN0ZWJvYXJkUHJveHk6OkdldFBhc3RlYm9hcmRUeXBlczo6UmVwbHkodHlwZXMpLCAw
KTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCog
Y29udGV4dCkKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6YnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkK
IHsKICAgICAvLyBGaXJzdCBjaGVjayB0aGUgb3ZlcnJpZGVzLgogICAgIFZlY3Rvcjx1aW50OF90
PiBvdmVycmlkZUJ1ZmZlcjsKICAgICBpZiAoV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hhcmVk
UGFzdGVib2FyZE92ZXJyaWRlcygpLmdldERhdGFGb3JPdmVycmlkZShwYXN0ZWJvYXJkTmFtZSwg
cGFzdGVib2FyZFR5cGUsIG92ZXJyaWRlQnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIENvbnRpZ3Vv
dXNTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CisgICAgICAg
IHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG92ZXJyaWRlQnVmZmVyKSk7CiAK
ICAgICAvLyBGYWxsYmFjayB0byBtZXNzYWdpbmcgdGhlIFVJIHByb2Nlc3MgZm9yIG5hdGl2ZSBw
YXN0ZWJvYXJkIGNvbnRlbnQuCiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxl
OwpAQCAtMjA5LDcgKzIwOSw3IEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRU
eXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjCiAgICAgcmV0dXJu
IG5ld0NoYW5nZUNvdW50OwogfQogCi1pbnQ2NF90IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0
QnVmZmVyRm9yVHlwZShDb250aWd1b3VzU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQoraW50NjRfdCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBhc3RlYm9h
cmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsK
ICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+c2l6ZSgpKSB7CkBAIC0zMjQsNyArMzI0LDcgQEAg
VmVjdG9yPFN0cmluZz4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkRmlsZVBhdGhzRnJvbUNs
aXBib2FyZChjb25zdCBTdHJpbmcmIHAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1SZWZQdHI8
Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkQnVmZmVy
RnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKQorUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpyZWFkQnVmZmVyRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogCiAgICAgSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5IGRhdGE7CkBAIC00MDYsNyArNDA2LDcgQEAgc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJk
SXRlbUluZm8+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmQK
ICAgICByZXR1cm4gaW5mbzsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRC
dWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0
ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqIGNv
bnRleHQpCitSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KiBjb250ZXh0KQogewogICAgIFNoYXJlZE1lbW9y
eTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW5kZXgsIHBhc3RlYm9hcmRUeXBlLCBwYXN0
ZWJvYXJkTmFtZSwgcGFnZUlkZW50aWZpZXIoY29udGV4dCkpLCBNZXNzYWdlczo6V2ViUGFzdGVi
b2FyZFByb3h5OjpSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KGlwY0hhbmRsZSksIDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDA0NWQ0Y2I4OWE5NjY0YTA4ZTFi
ODFhMDUzMDM1ZGM1ZDlkMGM1OTkuLjIwMGI2YzAxNTliNjg4YzcyYTNmYWRmYmFlMGE2OTQ4MzFi
OTM2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU2LDcgKzU2LDcgQEAg
cHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpbnQgZ2V0TnVtYmVyT2ZGaWxlcyhj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29u
dGV4dCopIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
Q29udGV4dCopIG92ZXJyaWRlOwotICAgIFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVk
QnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0
Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIFN0cmluZyBz
dHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJp
ZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gYWxsU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29y
ZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0
ZToKIAogICAgIGludDY0X3QgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFR5cGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgaW50
NjRfdCBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXIqLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOworICAgIGludDY0
X3Qgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0X3Qgc2V0VVJMKGNv
bnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAgIGludDY0
X3Qgc2V0Q29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwogICAg
IGludDY0X3Qgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRl
OgogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOwogICAgIFN0cmluZyByZWFkVGV4dEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVhZEZpbGVQ
YXRoc0Zyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
cm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgd3JpdGVU
b0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpTZWxlY3Rp
b25EYXRhJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDbGlwYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTg5LDcgKzg5LDcgQEAgcHJp
dmF0ZToKICNlbmRpZgogCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXpl
X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJG
cm9tUGFzdGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90
PiBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsK
ICAgICBVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVt
SW5mbz4gaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmNwcAppbmRleCA3OTU2MjZiMDQ4NjIyMGY5YTMwOWRiMmZiNzI1ZTA0YjIyMjU0
YTNhLi5hMjA1ZTAwMWNhNzE1ODIwOTEzYTgxYWU0YTgzNjUzMGY5YTBmNjQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdM
b2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV2Vi
UHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCBjb25zdCBTdHIKIAogV2ViUHJldmlld0xvYWRlckNsaWVudDo6fldlYlByZXZp
ZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVu
dDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgV2Vi
UHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgYXV0byB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViUGFnZShtX3BhZ2VJRCk7CiAgICAgaWYgKCF3ZWJQYWdlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3
TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAyN2FkMWM1MjAyNjYwMWU3YzQ5ZWQx
ODc3N2VlYWZmNjBjZDE5YjEyLi4wZGMxNjdlNWI3YmMzYjAzZWYzOTMxZWFiMzU2Yzc4Mjc5Mjk1
MjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNDYsNyAr
NDYsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2ViUHJldmlld0xvYWRlckNsaWVudChj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbCgpIG92ZXJyaWRlOwogICAg
IGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCmluZGV4IDRiNmUyMTdiYmUzN2Y4YzFk
ZjE3YWJjY2JiYzg3NzQzMWEyYjFlM2IuLmUxZTBlNjExMmEyZGVkYzNiOGJiNjMwOTg1MzUzNzZl
ZjQzYWQ1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KQEAgLTE2Myw3ICsxNjMs
NyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBFbGVtZQogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGFy
Y2hpdmVIYW5kbGU7CiAgICAgc2l6ZV90IGFyY2hpdmVTaXplID0gMDsKICAgICBpZiAoZGF0YSkg
ewotICAgICAgICBhdXRvIGFyY2hpdmVCdWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpj
cmVhdGUoKF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkpOworICAgICAgICBhdXRvIGFyY2hp
dmVCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoX19icmlkZ2UgTlNEYXRhICopZGF0YS5n
ZXQoKSk7CiAgICAgICAgIGF1dG8gYXJjaGl2ZVNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1l
bW9yeTo6Y29weUJ1ZmZlcihhcmNoaXZlQnVmZmVyLmdldCgpKTsKICAgICAgICAgaWYgKCFhcmNo
aXZlU2hhcmVkTWVtb3J5QnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDkyOWIxNjBlZWE5YTY0
NzJjMmNhN2QwM2FjMzEzM2I3ZTFlZTlmODcuLmQ4OGY0NGNmY2RlNWUxNWY2NmMxMjRiNDBmNWI1
NDM1Yjk0Njk3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKQEAgLTM0MCw3ICszNDAsNyBAQCBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNv
bnN0CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gbV9jb3JlRnJhbWUtPmxv
YWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1haW5S
ZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOworICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gZG9jdW1lbnRM
b2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5k
ZWNvZGUobWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVz
b3VyY2VEYXRhLT5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCBjNGFhMGQwZTNlZjlhNGU4ODQxMmZjMDVlMGMzY2I4MWFkYjI5NTAx
Li42MzIwYzM1OGUxY2QyNjAzMDZmMzUzNDJhOTBkY2EyZWY4NGMwODg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTczOCw3ICsxNzM4LDcg
QEAgTk9fUkVUVVJOIHZvaWQgV2ViUGFnZTo6bG9hZFJlcXVlc3RXYWl0aW5nRm9yUHJvY2Vzc0xh
dW5jaChMb2FkUGFyYW1ldGVycyYmLCBVUkwKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgc2hhcmVkQnVmZmVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVV
UkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3Vic3RpdHV0ZURh
dGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkK
K3ZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpv
cHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgc2hhcmVkQnVmZmVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVV
UkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3Vic3RpdHV0ZURh
dGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkK
IHsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgc2V0SXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbihpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCAmbV9tYWluRnJhbWUu
Z2V0KCkpOwpAQCAtMTc1Myw3ICsxNzUzLDcgQEAgdm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwo
dWludDY0X3QgbmF2aWdhdGlvbklELCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2gKIAog
ICAgIC8vIExldCB0aGUgSW5qZWN0ZWRCdW5kbGUga25vdyB3ZSBhcmUgYWJvdXQgdG8gc3RhcnQg
dGhlIGxvYWQsIHBhc3NpbmcgdGhlIHVzZXIgZGF0YSBmcm9tIHRoZSBVSVByb2Nlc3MKICAgICAv
LyB0byBhbGwgdGhlIGNsaWVudCB0byBzZXQgdXAgYW55IG5lZWRlZCBzdGF0ZS4KLSAgICBtX2xv
YWRlckNsaWVudC0+d2lsbExvYWREYXRhUmVxdWVzdCgqdGhpcywgcmVxdWVzdCwgY29uc3RfY2Fz
dDxTaGFyZWRCdWZmZXIqPihzdWJzdGl0dXRlRGF0YS5jb250ZW50KCkpLCBzdWJzdGl0dXRlRGF0
YS5taW1lVHlwZSgpLCBzdWJzdGl0dXRlRGF0YS50ZXh0RW5jb2RpbmcoKSwgc3Vic3RpdHV0ZURh
dGEuZmFpbGluZ1VSTCgpLCBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1IYW5kbGVz
VG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgbV9sb2FkZXJDbGllbnQt
PndpbGxMb2FkRGF0YVJlcXVlc3QoKnRoaXMsIHJlcXVlc3QsIGNvbnN0X2Nhc3Q8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcio+KHN1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKSksIHN1YnN0aXR1dGVEYXRh
Lm1pbWVUeXBlKCksIHN1YnN0aXR1dGVEYXRhLnRleHRFbmNvZGluZygpLCBzdWJzdGl0dXRlRGF0
YS5mYWlsaW5nVVJMKCksIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybUhhbmRsZXNU
b09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIAogICAgIC8vIEluaXRhdGUgdGhl
IGxvYWQgaW4gV2ViQ29yZS4KICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3Qo
Km1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSwgcmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwpAQCAt
Mzg2MSw3ICszODYxLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFtZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKIAogdm9pZCBXZWJQYWdl
OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAg
ICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUo
ZnJhbWVJRCkpIHsKICAgICAgICAgaWYgKFBsdWdpblZpZXcqIHBsdWdpblZpZXcgPSBwbHVnaW5W
aWV3Rm9yRnJhbWUoZnJhbWUtPmNvcmVGcmFtZSgpKSkKICAgICAgICAgICAgIGJ1ZmZlciA9IHBs
dWdpblZpZXctPmxpdmVSZXNvdXJjZURhdGEoKTsKQEAgLTM4NzcsNyArMzg3Nyw3IEBAIHZvaWQg
V2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIENvbXBsZXRpb25IYW5kCiAgICAgY2FsbGJhY2soZGF0YVJlZmVyZW5jZSk7CiB9CiAKLXN0
YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJh
bWUsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCitzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiBy
ZXNvdXJjZVVSTCkKIHsKICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZnJhbWUtPmxvYWRl
cigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFsb2FkZXIpCkBAIC0zODkyLDcgKzM4OTIs
NyBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJh
bWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cgogCiB2b2lkIFdlYlBhZ2U6OmdldFJlc291cmNl
RGF0YUZyb21GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZVVSTFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFs
PElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoYXV0byogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS53ZWJGcmFtZShmcmFtZUlEKSkgewogICAgICAgICBVUkwgcmVzb3VyY2VVUkwoVVJMKCks
IHJlc291cmNlVVJMU3RyaW5nKTsKICAgICAgICAgYnVmZmVyID0gcmVzb3VyY2VEYXRhRm9yRnJh
bWUoZnJhbWUtPmNvcmVGcmFtZSgpLCByZXNvdXJjZVVSTCk7CkBAIC03MDAxLDcgKzcwMDEsNyBA
QCB2b2lkIFdlYlBhZ2U6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwg
Q2FsbGJhY2tJRCBsb2FkSWRlbnRpZmllcgogICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCiAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCi0gICAgZG9jdW1lbnRMb2FkZXIt
PmRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLnRvSW50
ZWdlcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpIG11dGFibGUgeworICAgIGRvY3VtZW50
TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmll
ci50b0ludGVnZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0YSkgbXV0YWJs
ZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgaWNvbkRhdGEgfSk7CiAgICAgfSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNjc5YWJm
MWIxNTVmNTAwMjk3MjI0MTFlZGE5YTM5YzMyYjQzMDYzNS4uM2JiZDUzNTQ4MGQwNTc2MTNjNDNk
YjNkOWZhZDQ3YWZiYzYyMTM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaApAQCAtMjE2LDcgKzIxNiw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwogY2xhc3MgU2VsZWN0
aW9uR2VvbWV0cnk7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiBjbGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0
OwogY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwpAQCAtMTQwMyw3ICsxNDAzLDcgQEAgcHVibGljOgog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tE
b2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYg
dXRpKTsKLSAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOworICAgIHZvaWQgZGlkRmluaXNoTG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgcmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICNlbmRpZgogCkBAIC0xNjAyLDcgKzE2MDIsNyBA
QCBwcml2YXRlOgogCiAgICAgU3RyaW5nIHNvdXJjZUZvckZyYW1lKFdlYkZyYW1lKik7CiAKLSAg
ICB2b2lkIGxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRh
PiYmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBjb25zdCBVUkwmIGZhaWxpbmdVUkws
IGNvbnN0IFVzZXJEYXRhJiwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bj4sIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHksIFdl
YkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CisgICAgdm9pZCBsb2FkRGF0YUlt
cGwodWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3Qg
VXNlckRhdGEmLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgV2Vi
Q29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSwgV2ViQ29yZTo6
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKIAogICAgIC8vIEFjdGlvbnMKICAgICB2b2lk
IHRyeUNsb3NlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBjOTVj
Mzg0NjM5MjIxODRmMjU3YTcxOWRiNWJhOWE0ODI5YWVkZjFiLi44NWU2NTE4NjkyZWQ2MGM3ODhl
NzJhN2NlMzJmM2YwZTE1Y2E3NzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMzIxNyw3ICszMjE3LDcgQEAgdm9pZCBX
ZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbnQzMl90IGFjdGlvbikKICAgICAgICAg
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCplbGVtZW50
LnJlbmRlcmVyKCkpLmNhY2hlZEltYWdlKCk7CiAgICAgICAgIGlmICghY2FjaGVkSW1hZ2UpCiAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpOworICAgICAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CiAg
ICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvIHNo
YXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKQEAg
LTQ2ODMsNyArNDY4Myw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lCiAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkZyYW1lKGZpbGVOYW1lLCB1dGkpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKK3ZvaWQgV2ViUGFnZTo6ZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWlu
RnJhbWUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VS
VCghYnVmZmVyLmlzRW1wdHkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mvd2lu
L1dlYlByb2Nlc3NXaW4uY3BwCmluZGV4IGNjMGFjNjc1NzE1ZjBlODJlNTA5Yzc1NmIzMDJjZDZj
ZmU4YTU3NzguLmYxZTFjNWZmNGQ4OTEwOWQ1MTE5ZWEwZjRhNDIzMzIzNzMyMjg0OTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcApAQCAtMjgs
NyArMjgsNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAotUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFy
KiBuYW1lKQorUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRSZXNv
dXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkKIHsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hh
bmRsZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgK
aW5kZXggMWY1NTg0ZmEzODdkNzZjY2U5NGZmN2I1Njk2OGU3ZTgyMjA2MDYwNi4uYTI1NTYwYTEw
YzI4ODJlMWFiZDE3ODQ1Njk0ODZlYTEzZWQ4OTZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcGluZ0xvYWRDb21wbGV0
ZSh7IH0sIHJlc3BvbnNlKTsKICAgICB9Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlKiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50KSBm
aW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBpbnQpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KICAgICB2b2lk
IGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiBlcnJvcikgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKGVycm9yKTsgfQogICAgIGJv
b2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBm
aW5hbCB7IHJldHVybiBtX3Nob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCmluZGV4IGM2NWU5Nzg4OGI5NmI3Mzc5NTg4MDViNmY4ZmEwMDlkY2QxZmIxNzcuLjQyMDEw
N2RhNjViNzZiNmQxMmM0YzQ1ODEzOWYzMDgyNThkOTNmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBA
IC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWw7
CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJk
RGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91
c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBnZXRDbGll
bnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdl
PiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0
SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBXZWJDb3JlOjpE
T01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2VzcyhXZWJDb3JlOjpET01Q
YXN0ZUFjY2Vzc0NhdGVnb3J5LCBjb25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVybiBXZWJDb3Jl
OjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlOjpEZW5pZWRGb3JHZXN0dXJlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0KaW5kZXggNzRjNDg3ODMxNzdhZjkwYjIwMmQ1MWM0NjY2OWI0MDEyYjEyNWY1OS4uYzJj
NDBkM2QyYTEzM2YyODEzNDE1NjAzNGRlNTQxNDFhNGNlOWMzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5t
bQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSCiAgICAgLy8gTm90
IGltcGxlbWVudGVkIFdlYktpdCwgb25seSBXZWJLaXQyLgogfQogCi12b2lkIFdlYkVkaXRvckNs
aWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpCit2b2lkIFdl
YkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3Qgc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkKIHsKICAgICAv
LyBOb3QgaW1wbGVtZW50ZWQgV2ViS2l0LCBvbmx5IFdlYktpdDIuCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAppbmRleCBhMjU5OGYzMmZiNzYwYTdkODgzYzlmNGNlZWMxOGNmNTkxZWI4ZWFk
Li45NTlkNzQ4YjU2YmUxMDc2YmQ5Nzc5OTIyY2QzNTZkMjFhNjgxNzRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKQEAgLTI0OCw3ICsyNDgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2Vu
ZEgyUGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFNlY29u
ZHMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+JiYpPiYmKSBmaW5hbDsKIAogICAgIHZvaWQgZ2V0
TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3JlOjpMaW5r
SWNvbiYsIHVpbnQ2NF90Pj4mKSBmaW5hbDsKLSAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24o
V2ViQ29yZTo6U2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIAogI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIGJvb2wgbV9sb2FkaW5nSWNvbiB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tCmluZGV4IGI4NDlkMmFhYzJhOTNmYmVlNDE3MjlmMjRhODZjZGNmNmIxZmUwMTku
LmFhMmNjOTgxNDc0YTEzY2U1MDg0Nzk4OTQyMzY4NDQ5MWM4OGY2ZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCkBAIC0yMDEyLDcgKzIwMTIsNyBAQCBSZWZQdHI8V2ViQ29yZTo6TGVn
YWN5UHJldmlld0xvYWRlckNsaWVudD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVByZXZp
ZXdMbwogICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1fZmlsZVBhdGg7CiAgICAgICAgIFJl
dGFpblB0cjxOU0ZpbGVIYW5kbGU+IG1fZmlsZUhhbmRsZTsKIAotICAgICAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRl
CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1
dG8gZGF0YUFycmF5ID0gYnVmZmVyLmNyZWF0ZU5TRGF0YUFycmF5KCk7CiAgICAgICAgICAgICBm
b3IgKE5TRGF0YSAqZGF0YSBpbiBkYXRhQXJyYXkuZ2V0KCkpCkBAIC0yMDk0LDcgKzIwOTQsNyBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25z
dCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcgogICAgICAgICB9CiAKICAgICAgICAgbV9sb2FkaW5n
SWNvbiA9IHRydWU7Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25G
b3JJY29uKHRydWUsIGljb24tPnNlY29uZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH1dIChXZWJDb3JlOjpTaGFyZWRCdWZmZXIqIGJ1ZmZlcikgeworICAgICAgICBkb2N1bWVu
dExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29uLT5zZWNvbmQsIFt0
aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogYnVmZmVyKSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGZpbmlzaGVkTG9hZGluZ0ljb24oYnVmZmVy
KTsKQEAgLTIxMzEsNyArMjEzMSw3IEBAIHN0YXRpYyBOU0ltYWdlICp3ZWJHZXROU0ltYWdlKFdl
YkNvcmU6OkltYWdlKiBpbWFnZSwgTlNTaXplIHNpemUpCiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGlu
Z0ljb24oV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiBpY29uRGF0YSkKK3ZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogaWNvbkRhdGEpCiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQVNTRVJU
KG1fbG9hZGluZ0ljb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBlMzUxZWE5
OThjMDdlNGIzMDQ2ZmM5MGQyNjQ1ZmFiM2U2ZDBkODhhLi4xZDgxZmZhMTlkOTdmMDRlYzdjYzU3
NWIzZWNlNWU4ODgxNDQwYjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTUs
MTQgKzU1LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRp
ZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRl
OwogI2VuZGlmCiAgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChzaXplX3QgaW5k
ZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IHJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZChzdGQ6Om9wdGlvbmFsPHNpemVfdD4gaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBV
UkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgU3RyaW5nJiB0aXRsZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKICAgICBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBv
dmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4g
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6
UGFzdGVib2FyZEl0ZW1JbmZvPj4gYWxsUGFzdGVib2FyZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGludDY0X3QgY2hhbmdlQ291bnQsIGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50IGdldE51bWJlck9mRmlsZXMoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQq
KSBvdmVycmlkZTsKICAgICB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRl
eHQqKSBvdmVycmlkZTsKLSAgICBSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZl
cj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92
ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICB2b2lk
IGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
V2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBTdHJpbmcgc3RyaW5n
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwog
ICAgIFZlY3RvcjxTdHJpbmc+IGFsbFN0cmluZ3NGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDb250ZXh0Kikgb3ZlcnJpZGU7CkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAK
ICAgICBpbnQ2NF90IGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9h
cmRDb250ZXh0Kikgb3ZlcnJpZGU7CiAgICAgaW50NjRfdCBzZXRUeXBlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ29udGV4dCopIG92ZXJyaWRlOwotICAgIGludDY0X3Qg
c2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyKiwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKKyAgICBpbnQ2NF90IHNl
dEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNldFVSTChjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2NF90IHNl
dENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKICAgICBpbnQ2
NF90IHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6UGFz
dGVib2FyZENvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpp
bmRleCBhM2UzYzkzMTY4ZDg5MzY1MDJhYTZlN2Y0NTRlNGU1N2VkMWIxMjhjLi4xODhlYzUwMDQ1
MDc3ZDc4YjAxMjBhNmRhZmJiMDRmYjc5Mjc2NDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLm1tCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omdl
dFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWIKICAgICBQ
bGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmdldFR5cGVzKHR5cGVzKTsKIH0KIAot
UmVmUHRyPENvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YnVm
ZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLmJ1ZmZlckZvclR5cGUocGFzdGVib2FyZFR5cGUpOwogfQpAQCAtMTU0LDcgKzE1NCw3
IEBAIGludDY0X3QgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkuc2V0VHlwZXMocGFzdGVib2FyZFR5cGVzKTsKIH0KIAotaW50NjRf
dCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoQ29udGlndW91c1NoYXJl
ZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCitpbnQ2NF90IFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqIGJ1ZmZl
ciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgUGFzdGVib2FyZENvbnRleHQqKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLCBwYXN0ZWJv
YXJkVHlwZSk7CiB9CkBAIC0yMDksNyArMjA5LDcgQEAgaW50IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwK
ICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb3VudCgpOwog
fQogCi1SZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpyZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoc3RkOjpvcHRpb25hbDxzaXplX3Q+
IGluZGV4LCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFBhc3RlYm9hcmRDb250ZXh0KikKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBpbmRleCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCopCiB7CiAgICAgcmV0dXJuIFBs
YXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihpbmRleCwgdHlwZSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFT
b3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2Uu
bW0KaW5kZXggYzUzMWIxZGRkZDNiZThlNTZlZDZkNWQ3YzdmYTZiN2RhYTZjYzNhMy4uODNlODU5
MTQzNDVlYTdjYjg0MWQ5OWZkMWZiNjY2ZDhjY2YwMzAyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNDYwLDcgKzQ2MCw3IEBA
IC0gKHZvaWQpZGVhbGxvYwogCiAtIChOU0RhdGEgKilkYXRhCiB7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJpdmF0ZSkt
PmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOworICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+
bG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29u
dGlndW91cygpLT5jcmVhdGVOU0RhdGEoKS5hdXRvcmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggNWIxMGQzZmY3NTY3MDEx
NTEzOGY0ZDQzMTcyOTdjZGNhMWVjOTVkNy4uMjhkODc1OTI5Y2NhY2RiOWExMzg4YTgyNmIyZmQ1
ZWNmNDZlY2NkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tCkBAIC0zNTQwLDcgKzM1NDAsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TTWVudUl0
ZW0+IGNyZWF0ZVNoYXJlTWVudUl0ZW0oY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaAog
ICAgIH0KIAogICAgIGlmIChhdXRvKiBpbWFnZSA9IGhpdFRlc3RSZXN1bHQuaW1hZ2UoKSkgewot
ICAgICAgICBpZiAoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2Ut
PmRhdGEoKSkKKyAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQogICAgICAgICAgICAgW2l0ZW1zIGFkZE9iamVj
dDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltOU0RhdGEgZGF0YVdpdGhC
eXRlczpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSBsZW5ndGg6YnVmZmVyLT5zaXpl
KCldXSkuZ2V0KCldOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUmVzb3VyY2UubW0KaW5kZXggZDNiNTE2YzQxYTkwZTdmYTU3ZGFkOTg5MWQ0OWEzMzkx
NDhhMzYxNC4uMTJkNTljMGExNzY4MThlNjYyYzQzYzA3NDRhNTNhMTAxYzg1NjFlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCkBAIC0zNjcs
NyArMzY3LDcgQEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nVmFsdWUKICAgICBpZiAoIWVuY29kaW5n
LmlzVmFsaWQoKSkKICAgICAgICAgZW5jb2RpbmcgPSBQQUw6OldpbmRvd3NMYXRpbjFFbmNvZGlu
ZygpOwogICAgIAotICAgIFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJl
c291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7CisgICAg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+Y29yZVJlc291cmNl
ID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgcmV0dXJu
IGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihjb3JlRGF0YSA/
IGNvcmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRyKSwgY29yZURhdGEg
PyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1v
cnlTdHJlYW0uY3BwCmluZGV4IDVkZjIxNzBkMmE0YmZjNGE0ODBjZjQ1YTg0ZDIzZDczMDU5MzVm
YzEuLjM2MGFlZGNlYWNjYjFmYmRkMWQ0NGFkNDJkOGMwNGM2ZjA0YjYxOWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzEsNyArMzEsNyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gTWVtb3J5U3RyZWFtIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1NZW1vcnlTdHJl
YW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CitNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikKICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwpAQCAtNDQsNyArNDQsNyBAQCBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIik7CiB9CiAKLUNPTVB0cjxNZW1v
cnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPENvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFt
OjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBy
ZXR1cm4gbmV3IE1lbW9yeVN0cmVhbShXVEZNb3ZlKGJ1ZmZlcikpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9NZW1vcnlTdHJlYW0uaAppbmRleCAwNzg2MGExNWFiNGEzZGIxMTljOTExM2ZhZmM5
YzEyNGIxYzE0NmRkLi4yYmE3ZGE5MGE1YzYyMTI5MDA4ZGY2MTI5NzMwYWNkYjliZDQ1M2JhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uaApAQCAtMzUsNyArMzUsNyBAQAog
Y2xhc3MgTWVtb3J5U3RyZWFtIGZpbmFsIDogcHVibGljIElTdHJlYW0KIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgQ09NUHRyPE1lbW9yeVN0cmVhbT4gY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNv
cmU6OkNvbnRpZ3VvdXNTaGFyZWRCdWZmZXI+JiYpOworICAgIHN0YXRpYyBDT01QdHI8TWVtb3J5
U3RyZWFtPiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsK
IAogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2
T2JqZWN0KTsKQEAgLTc1LDEwICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIENsb25lKF9DT01fT3V0cHRyXyBJU3RyZWFtKiogcHBzdG0pOwog
CiBwcml2YXRlOgotICAgIE1lbW9yeVN0cmVhbShSZWZQdHI8V2ViQ29yZTo6Q29udGlndW91c1No
YXJlZEJ1ZmZlcj4mJik7CisgICAgTWVtb3J5U3RyZWFtKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpOwogICAgIH5NZW1vcnlTdHJlYW0oKTsKIAotICAgIFJlZlB0cjxXZWJDb3JlOjpD
b250aWd1b3VzU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICBzaXplX3QgbV9wb3MgeyAwIH07CiAgICAgVUxPTkcg
bV9yZWZDb3VudCB7IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3Bw
CmluZGV4IGIzYTJjNGNmZWIzZThmODJhMDUwYTM4ZjU3MjU4ZDkwNmQwNmJlM2EuLjgxNTc5OTYx
MDc2N2UwYmI5YWQyMjQ1NjdkNzI1Y2QzY2RjZGIxZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkFyY2hpdmUuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgSFJFU1VMVCBXZWJBcmNoaXZlOjpk
YXRhKF9DT01fT3V0cHRyX29wdF8gSVN0cmVhbSoqIHN0cmVhbSkKICAgICBpZiAoIWNmRGF0YSkK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIGF1dG8gYnVmZmVyID0gQ29udGlndW91c1No
YXJlZEJ1ZmZlcjo6Y3JlYXRlKENGRGF0YUdldEJ5dGVQdHIoY2ZEYXRhLmdldCgpKSwgQ0ZEYXRh
R2V0TGVuZ3RoKGNmRGF0YS5nZXQoKSkpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihjZkRhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgo
Y2ZEYXRhLmdldCgpKSk7CiAKICAgICByZXR1cm4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5j
ZShXVEZNb3ZlKGJ1ZmZlcikpLmNvcHlSZWZUbyhzdHJlYW0pOwogI2Vsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCmluZGV4IGU5YTEzNmY2YmI0MmVjOGFiN2Y1MGEzYWIzMzMzM2ZiM2YyMDIzZmQuLjIx
MTU5OGQzOWE2YWYzNjFjYzJlNDA2NzkwNmUyYjg2ODU3ZWVmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlCiB7CiB9CiAK
LXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpDb250aWd1b3VzU2hhcmVkQnVmZmVyPiA+JikKK3ZvaWQgV2ViRWRp
dG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+ID4mKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCmluZGV4IDk1ODFhYmJkOTMyYTUxYmJlOTgyMDVhMjMxM2E1YzgwOWJhNjk3ZjMu
LjA4N2I2OWU3YThiMGI2ODhhY2JmZTQ0ZTRkYWIxYjdiZGE1NDFmMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkg
ZmluYWw7CiAgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4mKSBmaW5hbDsKICAgICB2b2lkIGRpZFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmluYWw7Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiYsIFZl
Y3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6Q29u
dGlndW91c1NoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgZmluYWw7CisgICAgdm9pZCBn
ZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKSBmaW5hbDsKIAogICAgIHZv
aWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKSBmaW5hbCB7IH0KICAgICB2
b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRnJhbWUuY3BwCmluZGV4IDZkYzRhNDg1MmExNGQ5MTQ0M2U1MzE5YTUwN2MxOTY4NzJhZmIx
NDkuLjU1OGUxM2M3ZjFmZGFhNWIxMjVkMjBiZWZlNzkxYTI3ZmY3NTcxMmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU1OSw3ICs1NTksNyBAQCBIUkVTVUxUIFdlYkZy
YW1lOjpsb2FkUmVxdWVzdChfSW5fb3B0XyBJV2ViVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICBy
ZXR1cm4gU19PSzsKIH0KIAotdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCU1RSIHRleHRFbmNvZGluZ05hbWUs
IEJTVFIgYmFzZVVSTCwgQlNUUiBmYWlsaW5nVVJMKQordm9pZCBXZWJGcmFtZTo6bG9hZERhdGEo
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHlw
ZSwgQlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCkK
IHsKICAgICBTdHJpbmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5c1N0cmluZ0xlbihtaW1l
VHlwZSkpOwogICAgIGlmICghbWltZVR5cGUpCkBAIC01OTIsNyArNTkyLDcgQEAgSFJFU1VMVCBX
ZWJGcmFtZTo6bG9hZERhdGEoX0luX29wdF8gSVN0cmVhbSogZGF0YSwgX0luXyBCU1RSIG1pbWVU
eXBlLCBfSW5fIEJTVFIKICAgICAgICAgaWYgKCFzdGF0LmNiU2l6ZS5IaWdoUGFydCAmJiBzdGF0
LmNiU2l6ZS5Mb3dQYXJ0KSB7CiAgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YUJ1ZmZlcihz
dGF0LmNiU2l6ZS5Mb3dQYXJ0KTsKICAgICAgICAgICAgIFVMT05HIHJlYWQ7Ci0gICAgICAgICAg
ICAvLyBGSVhNRTogdGhpcyBkb2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRv
IHJlYWQgcmlnaHQgaW50byB0aGUgU2hhcmVkQnVmZmVyCisgICAgICAgICAgICAvLyBGSVhNRTog
dGhpcyBkb2VzIGEgbmVlZGxlc3MgY29weSwgd291bGQgYmUgYmV0dGVyIHRvIHJlYWQgcmlnaHQg
aW50byB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcgogICAgICAgICAgICAgLy8gb3IgYWRvcHQg
dGhlIFZlY3RvciBvciBzb21ldGhpbmcuCiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGRhdGEt
PlJlYWQoZGF0YUJ1ZmZlci5kYXRhKCksIHN0YXRpY19jYXN0PFVMT05HPihkYXRhQnVmZmVyLnNp
emUoKSksICZyZWFkKSkpCiAgICAgICAgICAgICAgICAgc2hhcmVkQnVmZmVyLmFwcGVuZChkYXRh
QnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihkYXRhQnVmZmVyLnNpemUoKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lLmgKaW5kZXggNDM2MDU0ZmQ5ZGRiNDdjYTMyOTZiMTE3OTgx
NDM0ZWMxODk3ZGFkMS4uZmE5YzM4MWNjNTczYmE2YjIwOTg4ZWFiMzUwOGVkOWEzMGE4ZjEzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIEhU
TUxGcmFtZU93bmVyRWxlbWVudDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBQYWdlOwogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiB9CiAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTQ29udGV4dCogSlND
b250ZXh0UmVmOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHByaXZhdGU6CiAgICAgfldlYkZyYW1lKCk7
CiAKICAgICB2b2lkIGxvYWRIVE1MU3RyaW5nKF9Jbl8gQlNUUiBzdHJpbmcsIF9Jbl8gQlNUUiBi
YXNlVVJMLCBfSW5fIEJTVFIgdW5yZWFjaGFibGVVUkwpOwotICAgIHZvaWQgbG9hZERhdGEoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgQlNUUiBtaW1lVHlwZSwgQlNUUiB0ZXh0RW5jb2Rp
bmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7CisgICAgdm9pZCBsb2FkRGF0
YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgQlNUUiBtaW1lVHlwZSwg
QlNUUiB0ZXh0RW5jb2RpbmdOYW1lLCBCU1RSIGJhc2VVUkwsIEJTVFIgZmFpbGluZ1VSTCk7CiAg
ICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBjb21wdXRlUGFnZVJlY3RzKEhEQyBw
cmludERDKTsKICAgICB2b2lkIHNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgcGFnZVNpemUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgb3JpZ2lu
YWxQYWdlU2l6ZSwgZmxvYXQgbWF4aW11bVNocmlua1JhdGlvLCBXZWJDb3JlOjpBZGp1c3RWaWV3
U2l6ZU9yTm90KTsKICAgICB2b2lkIGhlYWRlckFuZEZvb3RlckhlaWdodHMoZmxvYXQqLCBmbG9h
dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0RExMLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdERMTC5jcHAKaW5kZXggOTYyMDE5OGI0YjU0
MGFlNmY3OTY3ZjgyMzNjOTQ2NGJkMjc3NTg1MS4uMjc0YjdkMmQ2Y2YyZWI0NzFkN2I4Yjg5NjU5
YWU0NjljZjkzNGM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0
RExMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRETEwuY3BwCkBAIC0x
NjUsOCArMTY1LDggQEAgdm9pZCBzaHV0RG93bldlYktpdCgpCiB9CiAKIC8vRklYTUU6IFdlIHNo
b3VsZCBjb25zaWRlciBtb3ZpbmcgdGhpcyB0byBhIG5ldyBmaWxlIGZvciBjcm9zcy1wcm9qZWN0
IGZ1bmN0aW9uYWxpdHkKLVdFQktJVF9BUEkgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
bG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBuYW1lKTsKLVJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSkK
K1dFQktJVF9BUEkgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGxvYWRS
ZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciogbmFtZSk7CitSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50b0J1ZmZlcihjb25zdCBjaGFyKiBu
YW1lKQogewogICAgIGludCBpZHI7CiAgICAgLy8gdGVtcG9yYXJ5IGhhY2sgdG8gZ2V0IHJlc291
cmNlIGlkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggMmZmY2I4
OTk5YjE4NDQ4Y2Q2MjQ4ZjliZmNmMTVhYTUxN2NhZWJkNi4uOTQzZmE3YWI0NWM4YjBkMzVkNjdh
MzBjMGZkYWI0MzQ5YTNlNjRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNl
LmNwcApAQCAtNTEsNyArNTEsNyBAQCBXZWJSZXNvdXJjZTo6fldlYlJlc291cmNlKCkKICAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7CiB9CiAKLVdlYlJlc291cmNl
KiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkNvbnRpZ3VvdXNT
aGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCitXZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiB7CiAgICAgQ09NUHRyPE1lbW9yeVN0cmVhbT4gbWVtb3J5U3RyZWFt
ID0gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShXVEZNb3ZlKGRhdGEpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmgKaW5kZXggOTRhYjM1YzU2MDgxMDExN2M4OTVlNGEx
MGMzOTFiY2NhMzM3ZDE4ZS4uYjZlYjg2ZmNjYTVlMzEzNjljOWU4YjA2NTQxOGYyNzk0OTI5OTkw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5oCkBAIC0zNiw3ICszNiw3IEBA
CiAKIGNsYXNzIFdlYlJlc291cmNlIGZpbmFsIDogcHVibGljIElXZWJSZXNvdXJjZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29y
ZTo6Q29udGlndW91c1NoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpOworICAgIHN0YXRpYyBXZWJSZXNvdXJjZSogY3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
OwogCiAgICAgLy8gSVVua25vd24KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgUXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBw
cHZPYmplY3QpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDBlZDZmNGQ0ZDI5NWFiOGQ0ZDVlOWNlOTNlMjk4MzNjN2MyMjNlYjYuLjQ1YjM4NTdl
NDBmNzUwYmNlYmY4NjhkNzZhYjNmOWU1MGJlMDVmM2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMS0xMi0wMyAg
SmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTaGFy
ZWRCdWZmZXIgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzY3NworICAgICAgICByZGFyOi8vcHJvYmxlbS84NTk2MzkwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoYXJlZEJ1ZmZlciBh
cmUgcmVuYW1lZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyIGFuZAorICAgICAgICBDb250aWd1b3Vz
U2hhcmVkQnVmZmVyIHRvIFNoYXJlZEJ1ZmZlciB0byBiZXR0ZXIgcmVmbGVjdCB0aGVpciBhY3R1
YWwKKyAgICAgICAgdHlwZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9G
aWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlz
cGxheUxpc3RUZXN0cy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NoYXJlZEJ1ZmZlclRlc3QuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TaGFyZWRCdWZmZXJUZXN0Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5tbToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL3dpbi9UZXN0V2ViQ29yZVN0dWJzLmNwcDoKKwogMjAyMS0xMi0xMyAgSmVhbi1ZdmVz
IEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBTaGFyZWRCdWZmZXJCdWls
ZGVyIGNsYXNzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxl
U3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3Bw
CmluZGV4IGYzMzJkNzJiYWQwNzM0OWNlZDg5Mzg0MmQ3MzI0NzdmYmZkNjZjMjMuLjg2ZTVhNGIz
ZjYzOGEzOGYwZjE4Y2ExMmQ2NmQ1MjkxMDAyZTMyODQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyB2b2lk
IGNyZWF0ZVRlc3RGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoZmlsZUhhbmRsZSk7CiB9OwogCi0vLyBGSVhNRTogUmVmYWN0b3IgRmlsZVN5c3RlbVRl
c3QgYW5kIFNoYXJlZEJ1ZmZlclRlc3QgYXMgYSBzaW5nbGUgY2xhc3MuCisvLyBGSVhNRTogUmVm
YWN0b3IgRmlsZVN5c3RlbVRlc3QgYW5kIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0IGFzIGEg
c2luZ2xlIGNsYXNzLgogY2xhc3MgRmlsZVN5c3RlbVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CiBwdWJsaWM6CiAgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKaW5kZXgg
ZjdlNTU3OTkyNDU5YWY1ZDFhOWI4MTcwODk3ZjhlNDY0NDEwNWFhOC4uZjI0ZGYwMWRkNTc0YTc2
NDE4MDE4YmVkMzVlOGVlMGMwZmU4ZDY5NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcApAQCAtMTk5LDcgKzE5OSw3
IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgSXRlbUJ1ZmZlckNsaWVudCkKICAgICAgICAgICAg
IHJldHVybiB7IGdsb2JhbEJ1ZmZlcklkZW50aWZpZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2Jh
bEl0ZW1CdWZmZXJDYXBhY2l0eSB9OwogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3Bs
YXlMaXN0SXRlbSkgY29uc3QgZmluYWwKKyAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGVuY29kZUl0ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJiBkaXNwbGF5
TGlzdEl0ZW0pIGNvbnN0IGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gaW5kZXgg
PSBtX2l0ZW1zLnNpemUoKTsKICAgICAgICAgICAgIG1faXRlbXMuYXBwZW5kKHN0ZDo6Z2V0PFN0
cm9rZVBhdGg+KGRpc3BsYXlMaXN0SXRlbSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCA4ZjMyYWJjODgwMWQ1MTg4ODgy
MzVlZmZiZDBjZWVhNzc3ZGUzYzllLi5mMTJiOWYwODM2MDU1ODk0Y2Q2NWE4MjNkNWZmNmUzNGI5
OGFkNTk4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyLmNwcApAQCAtNDEsMzEgKzQxLDMxIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZk1pc3NpbmdGaWxlKQogewotICAgIGF1
dG8gYnVmZmVyID0gQ29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZG
aWxlKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSk7CisgICAgYXV0byBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShTdHJpbmcoIm5vdF9leGlzdGluZ19m
aWxlIikpOwogICAgIEFTU0VSVF9OVUxMKGJ1ZmZlcik7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZm
ZXJUZXN0LCBjcmVhdGVXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKK1RFU1RfRihGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCiB7
Ci0gICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29u
dGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgIEFTU0VS
VF9OT1RfTlVMTChidWZmZXIpOwotICAgIEVYUEVDVF9UUlVFKGJ1ZmZlci0+c2l6ZSgpID09IHN0
cmxlbihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoU3Ry
aW5nKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShi
dWZmZXItPnNpemUoKSA9PSBzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3RE
YXRhKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShTdHJpbmcoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3Q6OnRlc3REYXRhKCkpID09IFN0cmluZyhidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCkpKTsKIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGNyZWF0
ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlclRlc3QsIGNyZWF0ZVdpdGhDb250ZW50c09mRXhpc3RpbmdFbXB0eUZpbGUpCiB7Ci0g
ICAgYXV0byBidWZmZXIgPSBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVu
dHNPZkZpbGUodGVtcEVtcHR5RmlsZVBhdGgoKSk7CisgICAgYXV0byBidWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRW1wdHlGaWxlUGF0aCgpKTsKICAg
ICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzQ29u
dGlndW91cygpKTsKICAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzRW1wdHkoKSk7CiB9CiAKLVRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVyQ3JlYXRlZFdpdGhDb250ZW50c09mRXhp
c3RpbmdGaWxlKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjb3B5QnVmZmVy
Q3JlYXRlZFdpdGhDb250ZW50c09mRXhpc3RpbmdGaWxlKQogewotICAgIGF1dG8gYnVmZmVyID0g
Q29udGlndW91c1NoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxl
UGF0aCgpKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKHRlbXBGaWxlUGF0aCgpKTsKICAgICBBU1NFUlRfTk9UX05VTEwoYnVmZmVyKTsK
ICAgICBFWFBFQ1RfVFJVRShidWZmZXItPmlzQ29udGlndW91cygpKTsKICAgICBhdXRvIGNvcHkg
PSBidWZmZXItPmNvcHkoKTsKQEAgLTc0LDE5ICs3NCwxOSBAQCBURVNUX0YoU2hhcmVkQnVmZmVy
VGVzdCwgY29weUJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVudHNPZkV4aXN0aW5nRmlsZSkKICAgICBF
WFBFQ1RfVFJVRSghbWVtY21wKGJ1ZmZlci0+ZGF0YSgpLCBjb3B5LT5tYWtlQ29udGlndW91cygp
LT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSk7CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0
LCBhcHBlbmRCdWZmZXJDcmVhdGVkV2l0aENvbnRlbnRzT2ZFeGlzdGluZ0ZpbGUpCitURVNUX0Yo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGFwcGVuZEJ1ZmZlckNyZWF0ZWRXaXRoQ29udGVu
dHNPZkV4aXN0aW5nRmlsZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBD
b250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQ
YXRoKCkpOworICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAg
QVNTRVJUX05PVF9OVUxMKGJ1ZmZlcik7CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVy
OwogICAgIGJ1aWxkZXIuYXBwZW5kKCpidWZmZXIpOwogICAgIGJ1aWxkZXIuYXBwZW5kKCJhIiwg
MSk7Ci0gICAgRVhQRUNUX1RSVUUoYnVpbGRlci5zaXplKCkgPT0gKHN0cmxlbihTaGFyZWRCdWZm
ZXJUZXN0Ojp0ZXN0RGF0YSgpKSArIDEpKTsKLSAgICBFWFBFQ1RfVFJVRSghbWVtY21wKGJ1aWxk
ZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgU2hhcmVkQnVmZmVyVGVzdDo6dGVz
dERhdGEoKSwgc3RybGVuKFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpKSk7Ci0gICAgRVhQ
RUNUX0VRKCdhJywgYnVpbGRlci5nZXQoKS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpW3N0cmxl
bihTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKV0pOworICAgIEVYUEVDVF9UUlVFKGJ1aWxk
ZXIuc2l6ZSgpID09IChzdHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRh
KCkpICsgMSkpOworICAgIEVYUEVDVF9UUlVFKCFtZW1jbXAoYnVpbGRlci5nZXQoKS0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdDo6dGVzdERhdGEo
KSwgc3RybGVuKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0Ojp0ZXN0RGF0YSgpKSkpOworICAg
IEVYUEVDVF9FUSgnYScsIGJ1aWxkZXIuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKVtz
dHJsZW4oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OnRlc3REYXRhKCkpXSk7CiB9CiAKLVRF
U1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJheUJ1ZmZlcikKK1RFU1RfRihGcmFn
bWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXIpCiB7CiAgICAgY2hh
ciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7CiAgICAgY2hhciB0ZXN0RGF0YTFbXSA9ICJXb3JsZCI7
CkBAIC0xMDAsNyArMTAwLDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRyeUNyZWF0ZUFy
cmF5QnVmZmVyKQogICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoZXhwZWN0ZWRDb25jYXRlbmF0aW9u
LCBhcnJheUJ1ZmZlci0+ZGF0YSgpLCBzdHJsZW4oZXhwZWN0ZWRDb25jYXRlbmF0aW9uKSkpOwog
fQogCi1URVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlCdWZmZXJMYXJnZVNl
Z21lbnRzKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCB0cnlDcmVhdGVBcnJh
eUJ1ZmZlckxhcmdlU2VnbWVudHMpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjAoMHg0
MDAwLCAnYScpOwogICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3IxKDB4NDAwMCwgJ2InKTsKQEAg
LTEyNiw3ICsxMjYsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgdHJ5Q3JlYXRlQXJyYXlC
dWZmZXJMYXJnZVNlZ21lbnRzKQogICAgIH0KIH0KIAotVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3Qs
IGNvcHkpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHkpCiB7CiAgICAg
Y2hhciB0ZXN0RGF0YVtdID0gIkhhYml0YXNzZSBpbnRlZ2VyIGVyb3MgdGluY2lkdW50IGEgc2Nl
bGVyaXNxdWUhIEVuaW0gZWxpdD8gU2NlbGVyaXNxdWUgbWFnbmlzLCIKICAgICAiZXQgbW9udGVz
IHVsdHJpY2VzIHRyaXN0aXF1ZSBhISBQaWQuIFZlbGl0IHR1cnBpcywgZGFwaWJ1cyBpbnRlZ2Vy
IHJob25jdXMgc29jaWlzIGFtZXQgZmFjaWxpc2lzLCIKQEAgLTE1Miw3ICsxNTIsNyBAQCBURVNU
X0YoU2hhcmVkQnVmZmVyVGVzdCwgY29weSkKICAgICBidWlsZGVyMS5hcHBlbmQodGVzdERhdGEs
IGxlbmd0aCk7CiAgICAgLy8gc2hhcmVkQnVmZmVyIG11c3QgY29udGFpbiBkYXRhIG1vcmUgdGhh
biBzZWdtZW50U2l6ZSAoPSAweDEwMDApIHRvIGNoZWNrIGNvcHkoKS4KICAgICBFWFBFQ1RfRVEo
bGVuZ3RoICogNCwgYnVpbGRlcjEuc2l6ZSgpKTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBj
bG9uZSA9IGJ1aWxkZXIxLmNvcHkoKTsKKyAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gY2xvbmUgPSBidWlsZGVyMS5jb3B5KCk7CiAgICAgRVhQRUNUX0VRKGxlbmd0aCAqIDQsIGNs
b25lLT5zaXplKCkpOwogICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoY2xvbmUtPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgYnVpbGRlcjEuZ2V0KCktPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
Y2xvbmUtPnNpemUoKSkpOwogCkBAIC0xNjgsNyArMTY4LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZl
clRlc3QsIGNvcHkpCiAgICAgRVhQRUNUX1RSVUUoYnVpbGRlcjIuaXNFbXB0eSgpKTsKIH0KIAot
VEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlclRlc3QsIGJ1aWxkZXIpCiB7CiAgICAgY2hhciB0ZXN0RGF0YTBbXSA9ICJIZWxsbyI7
CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVyMShzdGQ6OmluX3BsYWNlLCB0ZXN0RGF0
YTAsIHN0cmxlbih0ZXN0RGF0YTApKTsKQEAgLTE3OCw3ICsxNzgsNyBAQCBURVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgYnVpbGRlcikKICAgICBhdXRvIGJ1ZmZlciA9IGJ1aWxkZXIxLnRha2UoKTsK
ICAgICBFWFBFQ1RfVFJVRShidWlsZGVyMS5pc051bGwoKSk7CiAgICAgRVhQRUNUX1RSVUUoYnVp
bGRlcjEuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfTkUoY29weS5wdHIoKSwgYnVmZmVyLnB0cigp
KTsgLy8gV2UgaGF2ZSBkaWZmZXJlbnQgU2hhcmVkQnVmZmVyCisgICAgRVhQRUNUX05FKGNvcHku
cHRyKCksIGJ1ZmZlci5wdHIoKSk7IC8vIFdlIGhhdmUgZGlmZmVyZW50IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXIKICAgICBFWFBFQ1RfRVEoY29weS5nZXQoKSwgYnVmZmVyLmdldCgpKTsgLy8gQnV0
IHRoZWlyIGNvbnRlbnQgaXMgaWRlbnRpY2FsCiAKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyIGJ1
aWxkZXIyOwpAQCAtMjA0LDcgKzIwNCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrQnVmZmVyKGNvbnN0
IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCwgY29uc3QgY2hhcioKICAgICAg
ICAgRVhQRUNUX0VRKGJ1ZmZlcltpXSwgZXhwZWN0ZWRbaV0pOwogfQogCi1URVNUX0YoU2hhcmVk
QnVmZmVyVGVzdCwgZ2V0U29tZURhdGEpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRl
c3QsIGdldFNvbWVEYXRhKQogewogICAgIFZlY3Rvcjx1aW50OF90PiBzMSA9IHsgJ2EnLCAnYics
ICdjJywgJ2QnIH07CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHMyID0geyAnZScsICdmJywgJ2cnLCAn
aCcgfTsKQEAgLTIzOSw3ICsyMzksNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgZ2V0U29t
ZURhdGEpCiAgICAgY2hlY2tCdWZmZXIobC5kYXRhKCksIGwuc2l6ZSgpLCAibCIpOwogfQogCi1U
RVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgaXNFcXVhbFRvKQorVEVTVF9GKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXJUZXN0LCBpc0VxdWFsVG8pCiB7CiAgICAgYXV0byBtYWtlQnVmZmVyID0gW10gKFZl
Y3RvcjxWZWN0b3I8dWludDhfdD4+JiYgY29udGVudHMpIHsKICAgICAgICAgU2hhcmVkQnVmZmVy
QnVpbGRlciBidWlsZGVyOwpAQCAtMjYwLDcgKzI2MCw3IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJU
ZXN0LCBpc0VxdWFsVG8pCiAgICAgRVhQRUNUX05FKG1ha2VCdWZmZXIoeyB7ICdhJyB9LCB7ICdi
JyB9IH0pLmdldCgpLCBtYWtlQnVmZmVyKHsgeyAnYScgfSwgeyAnYScgfSB9KS5nZXQoKSk7CiB9
CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCB0b0hleFN0cmluZykKK1RFU1RfRihGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyVGVzdCwgdG9IZXhTdHJpbmcpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHQxID0gezB4MTEsIDB4NSwgMHgxMn07CiAgICAgU2hhcmVkQnVmZmVyQnVpbGRlciBidWlsZGVy
OwpAQCAtMjczLDExICsyNzMsMTEgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHRvSGV4U3Ry
aW5nKQogICAgIEVYUEVDVF9FUShidWZmZXItPnRvSGV4U3RyaW5nKCksICIiKTsKIH0KIAotVEVT
VF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCitURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
clRlc3QsIHJlYWQpCiB7CiAgICAgY29uc3QgY2hhciogY29uc3Qgc2ltcGxlVGV4dCA9ICJUaGlz
IGlzIGEgc2ltcGxlIHRlc3QuIjsKIAotICAgIGF1dG8gY2hlY2sgPSBbXShTaGFyZWRCdWZmZXIm
IHNoYXJlZEJ1ZmZlcikgeworICAgIGF1dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgPSBzaGFy
ZWRCdWZmZXIucmVhZCg0LCAzKTsKICAgICAgICAgRVhQRUNUX0VRKGRhdGEuc2l6ZSgpLCAzdSk7
CiAgICAgICAgIEVYUEVDVF9FUShTdHJpbmcoZGF0YS5kYXRhKCksIDMpLCAiIGlzIik7CkBAIC0z
MDgsNyArMzA4LDcgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlclRlc3QsIHJlYWQpCiB0ZW1wbGF0ZTwg
dHlwZW5hbWUgVCwgc2l6ZV90IE4gPgogY29uc3RleHByIHNpemVfdCBhcnJheXNpemUoIGNvbnN0
IFQgKCYpW05dICkgeyByZXR1cm4gTjsgfQogCi1zdGF0aWMgdm9pZCByZWFkQWxsQ2h1bmtzKHN0
ZDo6dmVjdG9yPFN0cmluZz4qIGNodW5rcywgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgc2VwYXJhdG9yID0gIlxyXG4iLCBib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSkK
K3N0YXRpYyB2b2lkIHJlYWRBbGxDaHVua3Moc3RkOjp2ZWN0b3I8U3RyaW5nPiogY2h1bmtzLCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yID0g
IlxyXG4iLCBib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSkKIHsKICAgICBTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlciBjaHVua1JlYWRlcigmYnVmZmVyLCBzZXBhcmF0b3IudXRmOCgpLmRhdGEo
KSk7CiAgICAgU3RyaW5nIGNodW5rID0gY2h1bmtSZWFkZXIubmV4dENodW5rQXNVVEY4U3RyaW5n
V2l0aExhdGluMUZhbGxiYWNrKGluY2x1ZGVTZXBhcmF0b3IpOwpAQCAtMzQxLDcgKzM0MSw3IEBA
IHN0YXRpYyB2b2lkIGNoZWNrRGF0YUluUmFuZ2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRh
LCBzaXplX3Qgc3RhcnQsIHNpemVfdCBsCiAKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRl
clRlc3QsIGluY2x1ZGVTZXBhcmF0b3IpCiB7Ci0gICAgYXV0byBjaGVjayA9IFtdKFNoYXJlZEJ1
ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRl
ciBjaHVua1JlYWRlcigmc2hhcmVkQnVmZmVyLCAiXHgxMFx4MTFceDEyIik7CiAgICAgICAgIFZl
Y3Rvcjx1aW50OF90PiBvdXQ7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNodW5rUmVhZGVyLm5leHRD
aHVuayhvdXQpKTsKQEAgLTM3Miw3ICszNzIsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtS
ZWFkZXJUZXN0LCBwZWVrRGF0YSkKIHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVUZXh0
ID0gIlRoaXMgaXMgYSBzaW1wbGUgdGVzdC4iOwogCi0gICAgYXV0byBjaGVjayA9IFtdKFNoYXJl
ZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0byBjaGVjayA9IFtdKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlciBjaHVua1JlYWRlcigmc2hhcmVkQnVmZmVyLCAiaXMiKTsKIAogICAgICAgICBTdHJpbmcg
Y2h1bmsgPSBjaHVua1JlYWRlci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJh
Y2soKTsKQEAgLTQxOCw3ICs0MTgsNyBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJU
ZXN0LCBwZWVrRGF0YSkKIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRB
bGxDaHVua3NJbk11bHRpU2VnbWVudCkKIHsKICAgICBjb25zdCBjaGFyKiBjb25zdCBzaW1wbGVU
ZXh0ID0gIlRoaXMgaXMgdGhlIG1vc3QgcmlkaWN1bG91cyBoaXN0b3J5IHRoZXJlIGlzLiI7Ci0g
ICAgYXV0byBjaGVjayA9IFtdKFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CisgICAgYXV0
byBjaGVjayA9IFtdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAg
ICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5rczsKICAgICAgICAgY29uc3QgY2hhciogY29u
c3QgZXhwZWN0ZWRDaHVua3MxV2l0aG91dFNlcGFyYXRvcltdID0geyAiVGgiLCAicyAiLCAicyB0
aGUgbW9zdCByIiwgImQiLCAiY3Vsb3VzIGgiLCAic3RvcnkgdGhlcmUgIiwgInMuIiB9OwogICAg
ICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImkiKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNw
cAppbmRleCA5YjhiMTNhNzVkNTJmZjk1MWVhZDE4MTg1ZDU2YzM3OTFiMmQ3YmVkLi5kMDM0MWE4
MWRlZGE3MTlmMzVmY2NlMzk0NjU1ZWMyNTVhYjhmYmI2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCkBAIC0zMSw3
ICszMSw3IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotdm9pZCBTaGFyZWRCdWZm
ZXJUZXN0OjpTZXRVcCgpCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgp
CiB7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogCkBAIC00NSw3ICs0NSw3IEBA
IHZvaWQgU2hhcmVkQnVmZmVyVGVzdDo6U2V0VXAoKQogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmls
ZShoYW5kbGUpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlRlYXJEb3duKCkKK3ZvaWQg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlclRlc3Q6OlRlYXJEb3duKCkKIHsKICAgICBGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsKICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KG1fdGVtcEVtcHR5RmlsZVBhdGgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmgKaW5kZXggNjQwMTE5YmRlNmZjZTQxZjAxZWFh
YjYzMTY4NDdiZTU2YjkwY2Y1Yy4uYTM5MmEwNTE5NDc1NmQyYWQ1NmU4MjQ5MjllY2U0YzE1ZjNh
ZDA1NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlclRlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyVGVzdC5oCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKIAotY2xhc3MgU2hhcmVkQnVmZmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
K2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qg
ewogcHVibGljOgogICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZTsKICAgICB2b2lkIFRlYXJEb3du
KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCmluZGV4IDdhMzIwN2Y5NWM2MjdmZTY2
MjljOTI3NzQ0YjRlZjAzZTVlMmVjM2QuLjg1ODI4ZjAzOTIyNDVmNGE5OWI3NjA2YjVmNGFjNWVj
MzRkY2VlNWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
Zy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgcmV0dXJuIHsgZ2xvYmFsQnVmZmVySWRlbnRpZmllciwgZ2xvYmFsSXRl
bUJ1ZmZlciwgZ2xvYmFsSXRlbUJ1ZmZlckNhcGFjaXR5IH07CiAgICAgfQogCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRlbU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0m
KSBjb25zdCBmaW5hbAorICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBlbmNvZGVJ
dGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0IGZpbmFsCiAgICAgewog
ICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1NoYXJlZEJ1ZmZlci5t
bQppbmRleCA4YmZiODVlYzYxZDMwMTc1OTNkYzBiM2QzN2Q2ZDdiNmQ5OTMyNzc3Li5jM2I1ZDNl
OGQ3YzAzYjFhMzY1ZGQ1MzVhMGIyOWFkZTI3YWNlY2E4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvU2hhcmVkQnVmZmVyLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9TaGFyZWRCdWZmZXIubW0KQEAgLTQ1
LDcgKzQ1LDcgQEAgc3RhdGljIHZvaWQgZXhwZWN0RGF0YUFycmF5c0VxdWFsKE5TQXJyYXk8TlNE
YXRhICo+ICpleHBlY3RlZCwgTlNBcnJheTxOU0RhdGEgKj4KICAgICB9CiB9CiAKLVRFU1RfRihT
aGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFBcnJheSkKK1RFU1RfRihGcmFnbWVudGVkU2hh
cmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9v
bCB7CiAgICAgICAgIFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKQEAgLTYzLDExICs2Mywx
MSBAQCBURVNUX0YoU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRlTlNEYXRhQXJyYXkpCiAgICAgICAg
IGV4cGVjdERhdGFBcnJheXNFcXVhbChAWyBoZWxsb0RhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoaGVsbG9EYXRhKS0+Y3JlYXRlTlNEYXRhQXJyYXkoKS5nZXQoKSk7CiAgICAgICAgIGV4cGVj
dERhdGFBcnJheXNFcXVhbChAWyB3b3JsZERhdGEgXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKF9f
YnJpZGdlIENGRGF0YVJlZil3b3JsZERhdGEpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdldCgpKTsK
IAotICAgICAgICBleHBlY3REYXRhQXJyYXlzRXF1YWwoQFsgW05TRGF0YSBkYXRhV2l0aENvbnRl
bnRzT2ZGaWxlOnRlbXBGaWxlUGF0aCgpXSBdLCBDb250aWd1b3VzU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgp
LmdldCgpKTsKKyAgICAgICAgZXhwZWN0RGF0YUFycmF5c0VxdWFsKEBbIFtOU0RhdGEgZGF0YVdp
dGhDb250ZW50c09mRmlsZTp0ZW1wRmlsZVBhdGgoKV0gXSwgU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpLT5jcmVhdGVOU0RhdGFBcnJheSgpLmdl
dCgpKTsKICAgICB9CiB9CiAKLVRFU1RfRihTaGFyZWRCdWZmZXJUZXN0LCBjcmVhdGVOU0RhdGFG
b3JEYXRhU2VnbWVudCkKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY3JlYXRl
TlNEYXRhRm9yRGF0YVNlZ21lbnQpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAg
IFNoYXJlZEJ1ZmZlckJ1aWxkZXIgYnVpbGRlcjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvd2luL1Rlc3RXZWJDb3JlU3R1YnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4v
VGVzdFdlYkNvcmVTdHVicy5jcHAKaW5kZXggNDZjNzYyMDNlMWIyNWFhYWI3YTAyZTBiYjJiZjVl
MGM0MzZlZDY4Ny4uNWJlNjY1OTQ2MTM3MzFlMjFlZDk3ZGE3NGM1NzM4YzdjYTI4NWJmNCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYkNvcmVTdHVicy5jcHAKQEAgLTI1LDcg
KzI1LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAKLVJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGxvYWRSZXNvdXJjZUludG9CdWZmZXIoY29uc3QgY2hhciop
CitSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbG9hZFJlc291cmNlSW50
b0J1ZmZlcihjb25zdCBjaGFyKikKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMDkzZmNmZjhmZjRlMTAwNzY3Yjk2ZWI1ZjUwZDMwMGE4NWZlZjdhMC4uYzMzNjQ2
M2FiYWUzYzQwN2Y0Njk4ZDFmMTIxMTEyNGVhMGU5YWZhZiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMS0xMi0wMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29t
PgorCisgICAgICAgIERpc3Rpbmd1aXNoIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyIGZyb20gbm9u
LWNvbnRpZ3VvdXMgb25lIGFuZCBndWFyYW50ZWUgaW1tdXRhYmlsaXR5OiBwYXJ0IDMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRGVjb2RlclRlc3Qv
RGVjb2RlclRlc3QvbWFpbi5tbToKKyAgICAgICAgKG1haW4pOgorCiAyMDIxLTEyLTEzICBDYXRo
aWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbUGVyZm9ybWFuY2Ug
dGVzdF0gQWRkIHRlc3QgbG90cy1vZi1zZWxmLXBhaW50aW5nLWxheWVycy5odG1sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>